From b89a14ad0243ec6368cf7e8b87ecd5264124ea0c Mon Sep 17 00:00:00 2001 From: "Rebecca N. Palmer" Date: Tue, 3 Dec 2019 21:23:04 +0000 Subject: [PATCH] Import statsmodels_0.10.2.orig.tar.gz [dgit import orig statsmodels_0.10.2.orig.tar.gz] --- .codacy.yml | 5 + .codecov.yml | 11 + .gitattributes | 3 + .github/ISSUE_TEMPLATE/bug_report.md | 45 + .github/ISSUE_TEMPLATE/feature_request.md | 20 + .github/PULL_REQUEST_TEMPLATE.md | 28 + .gitignore | 99 + .mailmap | 97 + .travis.yml | 190 + CHANGES.md | 4 + CONTRIBUTING.rst | 73 + COPYRIGHTS.txt | 249 + INSTALL.txt | 123 + LICENSE.txt | 34 + MANIFEST.in | 32 + README.rst | 171 + README_l1.txt | 40 + appveyor.yml | 47 + azure-pipelines.yml | 27 + docs/GLMNotes.lyx | 1155 + docs/GLMNotes.pdf | Bin 0 -> 76810 bytes docs/Makefile | 66 + docs/README.md | 37 + docs/fix_longtable.py | 22 + docs/make.bat | 67 + docs/source/_static/blogger.png | Bin 0 -> 5547 bytes docs/source/_static/blogger_sm.png | Bin 0 -> 773 bytes docs/source/_static/bullet.gif | Bin 0 -> 62 bytes docs/source/_static/closelabel.png | Bin 0 -> 168 bytes docs/source/_static/examples.css | 113 + docs/source/_static/facebox.css | 80 + docs/source/_static/facebox.js | 313 + docs/source/_static/gettingstarted_0.png | Bin 0 -> 48467 bytes docs/source/_static/images/anova.png | Bin 0 -> 27369 bytes .../images/categorical_interaction_plot.png | Bin 0 -> 19148 bytes docs/source/_static/images/chi2_fitting.png | Bin 0 -> 48456 bytes docs/source/_static/images/contrasts.png | Bin 0 -> 32294 bytes .../_static/images/discrete_overview.png | Bin 0 -> 42187 bytes .../_static/images/distributed_estimation.png | Bin 0 -> 69683 bytes .../_static/images/exponential_smoothing.png | Bin 0 -> 59540 bytes docs/source/_static/images/fairs_data.png | Bin 0 -> 38555 bytes docs/source/_static/images/formulas_intro.png | Bin 0 -> 29954 bytes docs/source/_static/images/generic_mle.png | Bin 0 -> 43888 bytes docs/source/_static/images/glm_formulas.png | Bin 0 -> 35573 bytes docs/source/_static/images/glm_overview.png | Bin 0 -> 22413 bytes docs/source/_static/images/glm_weights.png | Bin 0 -> 12570 bytes docs/source/_static/images/gls.png | Bin 0 -> 30533 bytes .../_static/images/influence_glm_logit.png | Bin 0 -> 63521 bytes docs/source/_static/images/kde_overview.png | Bin 0 -> 17593 bytes .../_static/images/markov_autoregression.png | Bin 0 -> 127845 bytes .../_static/images/markov_regression.png | Bin 0 -> 90452 bytes docs/source/_static/images/mixed_lm.png | Bin 0 -> 61676 bytes docs/source/_static/images/ols.png | Bin 0 -> 33254 bytes .../_static/images/pca_fertility_factors.png | Bin 0 -> 42687 bytes docs/source/_static/images/plots_boxplots.png | Bin 0 -> 76044 bytes docs/source/_static/images/prediction.png | Bin 0 -> 32207 bytes .../_static/images/quantile_regression.png | Bin 0 -> 57551 bytes docs/source/_static/images/recursive_ls.png | Bin 0 -> 111972 bytes .../_static/images/regression_diagnostics.png | Bin 0 -> 24257 bytes .../_static/images/regression_plots.png | Bin 0 -> 39728 bytes docs/source/_static/images/rlm.png | Bin 0 -> 29866 bytes docs/source/_static/images/rlm_overview.png | Bin 0 -> 26439 bytes .../_static/images/statespace_arma0.png | Bin 0 -> 15478 bytes .../images/statespace_concentrated_scale.png | Bin 0 -> 140241 bytes .../_static/images/statespace_cycles.png | Bin 0 -> 109783 bytes .../images/statespace_dfm_coincident.png | Bin 0 -> 87568 bytes .../images/statespace_local_linear_trend.png | Bin 0 -> 72543 bytes .../images/statespace_sarimax_internet.png | Bin 0 -> 126005 bytes .../images/statespace_sarimax_stata.png | Bin 0 -> 241053 bytes .../_static/images/statespace_seasonal.png | Bin 0 -> 75748 bytes .../statespace_structural_harvey_jaeger.png | Bin 0 -> 199300 bytes .../_static/images/statespace_varmax.png | Bin 0 -> 51300 bytes docs/source/_static/images/tsa_arma0.png | Bin 0 -> 15478 bytes docs/source/_static/images/tsa_arma1.png | Bin 0 -> 39111 bytes docs/source/_static/images/tsa_dates.png | Bin 0 -> 31404 bytes docs/source/_static/images/tsa_filters.png | Bin 0 -> 38917 bytes docs/source/_static/images/wls.png | Bin 0 -> 37322 bytes docs/source/_static/ipython.min.css | 197 + docs/source/_static/loading.gif | Bin 0 -> 2767 bytes docs/source/_static/minus.gif | Bin 0 -> 87 bytes docs/source/_static/mktree.css | 23 + docs/source/_static/mktree.js | 168 + docs/source/_static/nbviewer.pygments.css | 62 + docs/source/_static/plus.gif | Bin 0 -> 89 bytes docs/source/_static/scripts.js | 52 + .../_templates/autosummary/attribute.rst | 10 + docs/source/_templates/autosummary/class.rst | 27 + docs/source/_templates/autosummary/member.rst | 11 + docs/source/_templates/autosummary/method.rst | 10 + .../_templates/autosummary/minimal_module.rst | 8 + docs/source/about.rst | 68 + docs/source/anova.rst | 45 + docs/source/conf.py | 365 + docs/source/contingency_tables.rst | 300 + docs/source/contrasts.rst | 237 + docs/source/datasets/dataset_proposal.rst | 151 + docs/source/datasets/index.rst | 149 + docs/source/dev/dataset_notes.rst | 68 + docs/source/dev/examples.rst | 57 + docs/source/dev/get_involved.rst | 37 + docs/source/dev/git_notes.rst | 260 + docs/source/dev/images/git_merge.png | Bin 0 -> 35680 bytes docs/source/dev/index.rst | 106 + docs/source/dev/internal.rst | 84 + docs/source/dev/maintainer_notes.rst | 274 + docs/source/dev/naming_conventions.rst | 96 + docs/source/dev/test_notes.rst | 160 + docs/source/dev/testing.rst | 18 + docs/source/diagnostic.rst | 228 + docs/source/discretemod.rst | 152 + docs/source/distributions.rst | 100 + docs/source/duration.rst | 234 + docs/source/emplike.rst | 71 + docs/source/endog_exog.rst | 86 + docs/source/example_formulas.rst | 181 + docs/source/examples/README | 1 + docs/source/examples/index.rst | 15 + docs/source/examples/landing.json | 290 + docs/source/extending.rst.TXT | 0 docs/source/faq.rst | 85 + docs/source/gam.rst | 120 + docs/source/gee.rst | 177 + docs/source/genericmle.rst.TXT | 0 docs/source/gettingstarted.rst | 183 + docs/source/glm.rst | 223 + docs/source/glm_techn1.rst.TXT | 12 + docs/source/glm_techn2.rst.TXT | 12 + docs/source/gmm.rst | 43 + docs/source/gmm_techn1.rst.TXT | 53 + docs/source/graphics.rst | 87 + docs/source/images/aw.png | Bin 0 -> 22376 bytes docs/source/images/hl.png | Bin 0 -> 15893 bytes docs/source/images/ht.png | Bin 0 -> 17824 bytes docs/source/images/ls.png | Bin 0 -> 9237 bytes docs/source/images/re.png | Bin 0 -> 18046 bytes .../source/images/statsmodels_hybi_banner.png | Bin 0 -> 41918 bytes .../source/images/statsmodels_hybi_banner.svg | 316 + .../source/images/statsmodels_hybi_favico.ico | Bin 0 -> 7358 bytes docs/source/images/tk.png | Bin 0 -> 17535 bytes docs/source/images/tm.png | Bin 0 -> 12276 bytes docs/source/importpaths.rst | 134 + docs/source/imputation.rst | 52 + docs/source/index.rst | 143 + docs/source/install.rst | 135 + docs/source/iolib.rst | 46 + docs/source/large_data.rst | 69 + docs/source/miscmodels.rst | 61 + docs/source/missing.rst | 35 + docs/source/mixed_glm.rst | 55 + docs/source/mixed_linear.rst | 196 + docs/source/multivariate.rst | 91 + docs/source/nonparametric.rst | 116 + docs/source/optimization.rst | 176 + docs/source/pitfalls.rst | 94 + docs/source/plots/arma_predict_plot.py | 11 + docs/source/plots/bkf_plot.py | 9 + docs/source/plots/cff_plot.py | 9 + docs/source/plots/graphics-mean_diff_plot.py | 22 + .../source/plots/graphics_boxplot_beanplot.py | 30 + .../plots/graphics_boxplot_violinplot.py | 29 + .../plots/graphics_correlation_plot_corr.py | 15 + .../graphics_correlation_plot_corr_grid.py | 15 + .../plots/graphics_functional_fboxplot.py | 35 + .../plots/graphics_functional_hdrboxplot.py | 31 + .../plots/graphics_functional_rainbowplot.py | 30 + docs/source/plots/graphics_gofplots_qqplot.py | 68 + .../graphics_gofplots_qqplot_2samples.py | 16 + .../plots/graphics_gofplots_qqplot_qqline.py | 18 + .../plots/graphics_mosaicplot_mosaic.py | 57 + docs/source/plots/graphics_plot_fit_ex.py | 35 + .../graphics_plot_grids_scatter_ellipse.py | 14 + .../plots/graphics_regression_abline.py | 21 + docs/source/plots/graphics_regression_ccpr.py | 18 + .../plots/graphics_regression_ccpr_grid.py | 18 + .../graphics_regression_ceres_residuals.py | 15 + .../plots/graphics_regression_influence.py | 15 + .../graphics_regression_leverage_resid2.py | 16 + .../plots/graphics_regression_partregress.py | 16 + .../graphics_regression_partregress_grid.py | 20 + .../plots/graphics_regression_regress_exog.py | 23 + docs/source/plots/graphics_tsa_month_plot.py | 12 + docs/source/plots/graphics_tsa_plot_acf.py | 15 + docs/source/plots/graphics_tsa_plot_pacf.py | 15 + .../source/plots/graphics_tsa_quarter_plot.py | 12 + docs/source/plots/hpf_plot.py | 13 + docs/source/plots/load_macrodata.py | 6 + docs/source/plots/mice_example_1.txt | 14 + docs/source/plots/var_plot_acorr.py | 2 + docs/source/plots/var_plot_fevd.py | 2 + docs/source/plots/var_plot_forecast.py | 2 + docs/source/plots/var_plot_input.py | 2 + docs/source/plots/var_plot_irf.py | 2 + docs/source/plots/var_plot_irf_cum.py | 2 + docs/source/plots/var_plots.py | 41 + docs/source/regression.rst | 232 + docs/source/regression_techn1.rst.TXT | 12 + docs/source/release/index.rst | 28 + docs/source/release/old_changes.rst | 243 + docs/source/release/version0.10.1.rst | 49 + docs/source/release/version0.10.2.rst | 44 + docs/source/release/version0.10.rst | 893 + docs/source/release/version0.5.rst | 628 + docs/source/release/version0.6.rst | 812 + docs/source/release/version0.7.rst | 255 + docs/source/release/version0.8.rst | 343 + docs/source/release/version0.9.rst | 405 + docs/source/rlm.rst | 106 + docs/source/rlm_techn1.rst | 40 + docs/source/sandbox.rst | 195 + docs/source/statespace.rst | 488 + docs/source/stats.rst | 496 + docs/source/tools.rst | 102 + docs/source/tsa.rst | 257 + docs/source/tsastats.rst.TXT | 21 + docs/source/vector_ar.rst | 418 + docs/sphinxext/LICENSE.txt | 97 + docs/sphinxext/MANIFEST.in | 2 + docs/sphinxext/README.txt | 26 + docs/sphinxext/github.py | 163 + docs/themes/statsmodels/indexsidebar.html | 31 + docs/themes/statsmodels/layout.html | 107 + docs/themes/statsmodels/page.html | 51 + docs/themes/statsmodels/relations.html | 32 + docs/themes/statsmodels/sidelinks.html | 2 + docs/themes/statsmodels/static/nature.css_t | 344 + .../static/statsmodels_hybi_banner.png | Bin 0 -> 31211 bytes docs/themes/statsmodels/theme.conf | 4 + examples/incomplete/arima.py | 53 + examples/incomplete/arma2.py | 28 + examples/incomplete/dates.py | 45 + examples/incomplete/glsar.py | 153 + examples/incomplete/ols_table.py | 69 + examples/incomplete/ols_tftest.py | 194 + examples/incomplete/wls_extended.py | 403 + .../categorical_interaction_plot.ipynb | 82 + examples/notebooks/chi2_fitting.ipynb | 232 + examples/notebooks/contrasts.ipynb | 546 + .../notebooks/discrete_choice_example.ipynb | 637 + .../notebooks/discrete_choice_overview.ipynb | 334 + .../notebooks/distributed_estimation.ipynb | 174 + .../notebooks/exponential_smoothing.ipynb | 470 + examples/notebooks/formulas.ipynb | 392 + examples/notebooks/generic_mle.ipynb | 500 + examples/notebooks/glm.ipynb | 419 + examples/notebooks/glm_formula.ipynb | 124 + examples/notebooks/glm_weights.ipynb | 890 + examples/notebooks/gls.ipynb | 226 + examples/notebooks/influence_glm_logit.ipynb | 198 + examples/notebooks/interactions_anova.ipynb | 808 + examples/notebooks/kernel_density.ipynb | 485 + .../notebooks/markov_autoregression.ipynb | 386 + examples/notebooks/markov_regression.ipynb | 409 + examples/notebooks/mixed_lm_example.ipynb | 374 + examples/notebooks/ols.ipynb | 529 + .../notebooks/pca_fertility_factors.ipynb | 304 + examples/notebooks/plots_boxplots.ipynb | 339 + examples/notebooks/predict.ipynb | 213 + examples/notebooks/quantile_regression.ipynb | 209 + examples/notebooks/recursive_ls.ipynb | 319 + .../notebooks/regression_diagnostics.ipynb | 270 + examples/notebooks/regression_plots.ipynb | 606 + examples/notebooks/robust_models_0.ipynb | 288 + examples/notebooks/robust_models_1.ipynb | 1115 + examples/notebooks/star_diagram.png | Bin 0 -> 175558 bytes examples/notebooks/statespace_arma_0.ipynb | 357 + .../statespace_concentrated_scale.ipynb | 353 + examples/notebooks/statespace_cycles.ipynb | 192 + .../notebooks/statespace_dfm_coincident.ipynb | 859 + .../statespace_local_linear_trend.ipynb | 279 + .../statespace_sarimax_internet.ipynb | 263 + .../notebooks/statespace_sarimax_stata.ipynb | 621 + examples/notebooks/statespace_seasonal.ipynb | 439 + .../statespace_structural_harvey_jaeger.ipynb | 433 + examples/notebooks/statespace_varmax.ipynb | 173 + examples/notebooks/tsa_arma_0.ipynb | 515 + examples/notebooks/tsa_arma_1.ipynb | 142 + examples/notebooks/tsa_dates.ipynb | 187 + examples/notebooks/tsa_filters.ipynb | 317 + examples/notebooks/wls.ipynb | 238 + .../python/categorical_interaction_plot.py | 35 + examples/python/chi2_fitting.py | 147 + examples/python/contrasts.py | 239 + examples/python/discrete_choice_example.py | 228 + examples/python/discrete_choice_overview.py | 109 + examples/python/distributed_estimation.py | 94 + examples/python/exponential_smoothing.py | 310 + examples/python/formulas.py | 166 + examples/python/generic_mle.py | 242 + examples/python/glm.py | 165 + examples/python/glm_formula.py | 53 + examples/python/glm_weights.py | 398 + examples/python/gls.py | 83 + examples/python/influence_glm_logit.py | 81 + examples/python/interactions_anova.py | 450 + examples/python/kernel_density.py | 317 + examples/python/markov_autoregression.py | 288 + examples/python/markov_regression.py | 226 + examples/python/mixed_lm_example.py | 170 + examples/python/ols.py | 226 + examples/python/pca_fertility_factors.py | 151 + examples/python/plots_boxplots.py | 225 + examples/python/predict.py | 78 + examples/python/quantile_regression.py | 131 + examples/python/recursive_ls.py | 181 + examples/python/regression_diagnostics.py | 108 + examples/python/regression_plots.py | 273 + examples/python/robust_models_0.py | 122 + examples/python/robust_models_1.py | 337 + examples/python/statespace_arma_0.py | 99 + .../python/statespace_concentrated_scale.py | 244 + examples/python/statespace_cycles.py | 131 + examples/python/statespace_dfm_coincident.py | 817 + .../python/statespace_local_linear_trend.py | 252 + .../python/statespace_sarimax_internet.py | 177 + examples/python/statespace_sarimax_stata.py | 547 + examples/python/statespace_seasonal.py | 411 + .../statespace_structural_harvey_jaeger.py | 413 + examples/python/statespace_varmax.py | 88 + examples/python/tsa_arma_0.py | 172 + examples/python/tsa_arma_1.py | 48 + examples/python/tsa_dates.py | 57 + examples/python/tsa_filters.py | 152 + examples/python/wls.py | 111 + examples/run_all.py | 59 + ..._key_statsmodels_statsmodels_github_io.enc | 1 + lint.sh | 132 + requirements-dev.txt | 12 + requirements.txt | 4 + setup.cfg | 237 + setup.py | 350 + statsmodels/__init__.py | 26 + statsmodels/_version.py | 520 + statsmodels/api.py | 68 + statsmodels/base/__init__.py | 3 + statsmodels/base/_constraints.py | 317 + statsmodels/base/_parameter_inference.py | 256 + statsmodels/base/_penalized.py | 228 + statsmodels/base/_penalties.py | 631 + statsmodels/base/_screening.py | 437 + statsmodels/base/covtype.py | 359 + statsmodels/base/data.py | 635 + statsmodels/base/distributed_estimation.py | 677 + statsmodels/base/elastic_net.py | 370 + statsmodels/base/l1_cvxopt.py | 194 + statsmodels/base/l1_slsqp.py | 168 + statsmodels/base/l1_solvers_common.py | 165 + statsmodels/base/model.py | 2442 ++ statsmodels/base/optimizer.py | 613 + statsmodels/base/tests/__init__.py | 0 statsmodels/base/tests/test_data.py | 945 + .../base/tests/test_distributed_estimation.py | 479 + .../base/tests/test_generic_methods.py | 736 + statsmodels/base/tests/test_optimize.py | 77 + statsmodels/base/tests/test_penalized.py | 733 + statsmodels/base/tests/test_penalties.py | 159 + statsmodels/base/tests/test_predict.py | 153 + statsmodels/base/tests/test_screening.py | 353 + statsmodels/base/tests/test_shrink_pickle.py | 287 + statsmodels/base/tests/test_transform.py | 108 + statsmodels/base/transform.py | 226 + statsmodels/base/wrapper.py | 120 + statsmodels/compat/__init__.py | 27 + statsmodels/compat/numpy.py | 90 + statsmodels/compat/pandas.py | 57 + statsmodels/compat/platform.py | 8 + statsmodels/compat/python.py | 203 + statsmodels/compat/scipy.py | 121 + statsmodels/compat/tests/__init__.py | 0 statsmodels/compat/tests/test_itercompat.py | 37 + statsmodels/compat/tests/test_scipy_compat.py | 85 + statsmodels/conftest.py | 119 + statsmodels/datasets/COPYING | 35 + statsmodels/datasets/README.txt | 32 + statsmodels/datasets/__init__.py | 22 + statsmodels/datasets/anes96/__init__.py | 5 + statsmodels/datasets/anes96/anes96.csv | 945 + statsmodels/datasets/anes96/data.py | 125 + statsmodels/datasets/anes96/src/anes96.csv | 945 + statsmodels/datasets/cancer/__init__.py | 5 + statsmodels/datasets/cancer/cancer.csv | 302 + statsmodels/datasets/cancer/data.py | 55 + statsmodels/datasets/ccard/R_wls.s | 13 + statsmodels/datasets/ccard/__init__.py | 5 + statsmodels/datasets/ccard/ccard.csv | 73 + statsmodels/datasets/ccard/data.py | 61 + statsmodels/datasets/ccard/src/ccard.csv | 101 + statsmodels/datasets/ccard/src/names.txt | 14 + .../datasets/china_smoking/__init__.py | 5 + .../datasets/china_smoking/china_smoking.csv | 9 + statsmodels/datasets/china_smoking/data.py | 63 + statsmodels/datasets/co2/__init__.py | 5 + statsmodels/datasets/co2/co2.csv | 2285 ++ statsmodels/datasets/co2/data.py | 70 + statsmodels/datasets/co2/src/maunaloa_c.dat | 2252 ++ statsmodels/datasets/committee/R_committee.s | 11 + statsmodels/datasets/committee/__init__.py | 5 + statsmodels/datasets/committee/committee.csv | 21 + statsmodels/datasets/committee/data.py | 75 + .../datasets/committee/src/committee.dat | 21 + statsmodels/datasets/copper/__init__.py | 5 + statsmodels/datasets/copper/copper.csv | 26 + statsmodels/datasets/copper/data.py | 78 + statsmodels/datasets/copper/src/copper.dat | 26 + statsmodels/datasets/cpunish/R_cpunish.s | 15 + statsmodels/datasets/cpunish/__init__.py | 5 + statsmodels/datasets/cpunish/cpunish.csv | 18 + statsmodels/datasets/cpunish/data.py | 81 + statsmodels/datasets/cpunish/src/cpunish.dat | 18 + statsmodels/datasets/elnino/__init__.py | 5 + statsmodels/datasets/elnino/data.py | 67 + statsmodels/datasets/elnino/elnino.csv | 62 + statsmodels/datasets/elnino/src/elnino.dat | 733 + statsmodels/datasets/engel/__init__.py | 5 + statsmodels/datasets/engel/data.py | 57 + statsmodels/datasets/engel/engel.csv | 236 + statsmodels/datasets/fair/__init__.py | 5 + statsmodels/datasets/fair/data.py | 77 + statsmodels/datasets/fair/fair.csv | 6367 ++++ statsmodels/datasets/fair/fair_pt.csv | 602 + statsmodels/datasets/fair/src/1978ADAT.asc | 6984 +++++ statsmodels/datasets/fertility/__init__.py | 5 + statsmodels/datasets/fertility/data.py | 74 + statsmodels/datasets/fertility/fertility.csv | 220 + statsmodels/datasets/grunfeld/__init__.py | 5 + statsmodels/datasets/grunfeld/data.py | 91 + statsmodels/datasets/grunfeld/grunfeld.csv | 221 + .../datasets/grunfeld/src/grunfeld.csv | 221 + statsmodels/datasets/heart/__init__.py | 5 + statsmodels/datasets/heart/data.py | 59 + statsmodels/datasets/heart/heart.csv | 70 + .../datasets/interest_inflation/E6.csv | 108 + .../datasets/interest_inflation/E6_jmulti.csv | 107 + .../datasets/interest_inflation/__init__.py | 5 + .../datasets/interest_inflation/data.py | 70 + statsmodels/datasets/longley/R_gls.s | 37 + statsmodels/datasets/longley/R_lm.s | 6 + statsmodels/datasets/longley/__init__.py | 5 + statsmodels/datasets/longley/data.py | 79 + statsmodels/datasets/longley/longley.csv | 17 + statsmodels/datasets/macrodata/__init__.py | 5 + statsmodels/datasets/macrodata/data.py | 93 + statsmodels/datasets/macrodata/macrodata.csv | 204 + statsmodels/datasets/macrodata/macrodata.dta | Bin 0 -> 13255 bytes .../macrodata/src/macrodata.xls/macrodata.xls | Bin 0 -> 109056 bytes statsmodels/datasets/macrodata/src/unemp.csv | 214 + statsmodels/datasets/modechoice/__init__.py | 5 + statsmodels/datasets/modechoice/data.py | 86 + .../datasets/modechoice/modechoice.csv | 841 + .../datasets/modechoice/src/TableF18-2.csv | 841 + statsmodels/datasets/nile/__init__.py | 5 + statsmodels/datasets/nile/data.py | 61 + statsmodels/datasets/nile/nile.csv | 101 + statsmodels/datasets/randhie/__init__.py | 5 + statsmodels/datasets/randhie/data.py | 91 + statsmodels/datasets/randhie/randhie.csv | 20191 +++++++++++++ statsmodels/datasets/randhie/src/randdesc.txt | 49 + statsmodels/datasets/randhie/src/randhie.csv | 20191 +++++++++++++ statsmodels/datasets/scotland/R_scotvote.s | 17 + statsmodels/datasets/scotland/__init__.py | 5 + statsmodels/datasets/scotland/data.py | 90 + statsmodels/datasets/scotland/scotvote.csv | 33 + .../datasets/scotland/src/scotland.readme | 27 + .../scotland/src/scotland_births.html | 312 + .../scotland/src/scotland_changes.html | 364 + .../scotland/src/scotland_devolution.html | 233 + .../scotland/src/scotland_econ_summary.html | 234 + .../scotland/src/scotland_economics.html | 332 + .../scotland/src/scotland_education.html | 337 + .../scotland/src/scotland_housing.html | 333 + .../scotland/src/scotland_population.csv | 59 + .../scotland/src/scotland_population.html | 326 + .../datasets/scotland/src/scotvote.csv | 33 + .../datasets/scotland/src/scotvote.dat | 33 + statsmodels/datasets/spector/__init__.py | 5 + statsmodels/datasets/spector/data.py | 72 + statsmodels/datasets/spector/spector.csv | 33 + statsmodels/datasets/stackloss/R_stackloss.s | 30 + statsmodels/datasets/stackloss/__init__.py | 5 + statsmodels/datasets/stackloss/data.py | 66 + statsmodels/datasets/stackloss/stackloss.csv | 22 + statsmodels/datasets/star98/__init__.py | 5 + statsmodels/datasets/star98/data.py | 107 + statsmodels/datasets/star98/r_glm.s | 37 + statsmodels/datasets/star98/src/star.bi.dat | 303 + statsmodels/datasets/star98/src/star98.dat | 304 + statsmodels/datasets/star98/src/star98.names | 205 + statsmodels/datasets/star98/star98.csv | 304 + statsmodels/datasets/statecrime/__init__.py | 5 + statsmodels/datasets/statecrime/data.py | 81 + .../datasets/statecrime/statecrime.csv | 52 + statsmodels/datasets/strikes/__init__.py | 5 + statsmodels/datasets/strikes/data.py | 73 + statsmodels/datasets/strikes/strikes.csv | 63 + statsmodels/datasets/sunspots/R_sunspots.s | 9 + statsmodels/datasets/sunspots/__init__.py | 5 + statsmodels/datasets/sunspots/arima_mod.R | 3 + statsmodels/datasets/sunspots/data.py | 66 + .../sunspots/src/sunspots_monthly.dat | 323 + .../datasets/sunspots/src/sunspots_yearly.dat | 309 + statsmodels/datasets/sunspots/sunspots.csv | 310 + statsmodels/datasets/template_data.py | 63 + statsmodels/datasets/tests/__init__.py | 0 statsmodels/datasets/tests/test_data.py | 47 + statsmodels/datasets/tests/test_utils.py | 85 + statsmodels/datasets/utils.py | 346 + statsmodels/discrete/__init__.py | 3 + statsmodels/discrete/_diagnostics_count.py | 310 + statsmodels/discrete/conditional_models.py | 631 + statsmodels/discrete/count_model.py | 820 + statsmodels/discrete/discrete_margins.py | 734 + statsmodels/discrete/discrete_model.py | 4288 +++ statsmodels/discrete/tests/__init__.py | 0 .../discrete/tests/results/__init__.py | 0 .../tests/results/mn_logit_summary.txt | 49 + .../discrete/tests/results/mnlogit_resid.csv | 1 + .../discrete/tests/results/nbinom_resids.csv | 20 + .../discrete/tests/results/phat_mnlogit.csv | 944 + .../discrete/tests/results/poisson_resid.csv | 1 + .../tests/results/predict_prob_poisson.csv | 100 + .../tests/results/results_count_margins.py | 394 + .../results/results_count_robust_cluster.py | 689 + .../tests/results/results_discrete.py | 1223 + .../results/results_glm_logit_constrained.py | 697 + .../results/results_poisson_constrained.py | 665 + statsmodels/discrete/tests/results/ships.csv | 41 + statsmodels/discrete/tests/results/sm3533.csv | 271 + .../discrete/tests/results/yhat_mnlogit.csv | 944 + .../discrete/tests/results/yhat_poisson.csv | 20190 +++++++++++++ .../discrete/tests/test_conditional.py | 324 + .../discrete/tests/test_constrained.py | 559 + .../discrete/tests/test_count_model.py | 559 + statsmodels/discrete/tests/test_diagnostic.py | 73 + statsmodels/discrete/tests/test_discrete.py | 2373 ++ statsmodels/discrete/tests/test_margins.py | 128 + .../discrete/tests/test_sandwich_cov.py | 692 + statsmodels/distributions/__init__.py | 10 + statsmodels/distributions/discrete.py | 87 + statsmodels/distributions/edgeworth.py | 207 + .../distributions/empirical_distribution.py | 185 + statsmodels/distributions/mixture_rvs.py | 281 + statsmodels/distributions/tests/__init__.py | 0 .../distributions/tests/test_discrete.py | 108 + statsmodels/distributions/tests/test_ecdf.py | 44 + .../distributions/tests/test_edgeworth.py | 189 + .../distributions/tests/test_mixture.py | 105 + statsmodels/duration/__init__.py | 3 + statsmodels/duration/_kernel_estimates.py | 206 + statsmodels/duration/api.py | 4 + statsmodels/duration/hazard_regression.py | 1723 ++ statsmodels/duration/survfunc.py | 809 + statsmodels/duration/tests/__init__.py | 0 .../duration/tests/results/__init__.py | 0 statsmodels/duration/tests/results/bmt.csv | 138 + .../duration/tests/results/bmt_results.csv | 24 + .../duration/tests/results/phreg_gentests.py | 60 + statsmodels/duration/tests/results/survival.R | 68 + .../tests/results/survival_data_1000_10.csv | 1000 + .../tests/results/survival_data_100_5.csv | 100 + .../tests/results/survival_data_20_1.csv | 20 + .../tests/results/survival_data_50_1.csv | 50 + .../tests/results/survival_data_50_2.csv | 50 + .../tests/results/survival_enet_r_results.py | 10 + .../tests/results/survival_r_results.py | 442 + .../tests/results/survival_regularized.R | 35 + statsmodels/duration/tests/test_phreg.py | 416 + statsmodels/duration/tests/test_survfunc.py | 552 + statsmodels/emplike/__init__.py | 3 + statsmodels/emplike/aft_el.py | 561 + statsmodels/emplike/api.py | 15 + statsmodels/emplike/descriptive.py | 1149 + statsmodels/emplike/elanova.py | 126 + statsmodels/emplike/elregress.py | 90 + statsmodels/emplike/originregress.py | 259 + statsmodels/emplike/tests/__init__.py | 0 statsmodels/emplike/tests/results/__init__.py | 1 + .../emplike/tests/results/el_results.py | 373 + statsmodels/emplike/tests/test_aft.py | 50 + statsmodels/emplike/tests/test_anova.py | 26 + statsmodels/emplike/tests/test_descriptive.py | 117 + statsmodels/emplike/tests/test_origin.py | 45 + statsmodels/emplike/tests/test_regression.py | 160 + statsmodels/examples/es_misc_poisson2.py | 63 + statsmodels/examples/ex_arch_canada.py | 159 + statsmodels/examples/ex_emplike_1.py | 99 + statsmodels/examples/ex_emplike_2.py | 92 + statsmodels/examples/ex_emplike_3.py | 28 + statsmodels/examples/ex_feasible_gls_het.py | 124 + statsmodels/examples/ex_feasible_gls_het_0.py | 174 + statsmodels/examples/ex_generic_mle.py | 361 + statsmodels/examples/ex_generic_mle_t.py | 261 + statsmodels/examples/ex_generic_mle_tdist.py | 836 + statsmodels/examples/ex_grangercausality.py | 42 + statsmodels/examples/ex_inter_rater.py | 111 + statsmodels/examples/ex_kde_confint.py | 77 + .../examples/ex_kde_normalreference.py | 63 + statsmodels/examples/ex_kernel_regression.py | 64 + statsmodels/examples/ex_kernel_regression2.py | 56 + statsmodels/examples/ex_kernel_regression3.py | 76 + .../ex_kernel_regression_censored2.py | 38 + .../examples/ex_kernel_regression_dgp.py | 46 + .../examples/ex_kernel_regression_sigtest.py | 108 + .../examples/ex_kernel_semilinear_dgp.py | 126 + .../examples/ex_kernel_singleindex_dgp.py | 93 + .../examples/ex_kernel_test_functional.py | 71 + .../ex_kernel_test_functional_li_wang.py | 141 + statsmodels/examples/ex_lowess.py | 76 + statsmodels/examples/ex_misc_tarma.py | 76 + statsmodels/examples/ex_misc_tmodel.py | 83 + statsmodels/examples/ex_multivar_kde.py | 54 + statsmodels/examples/ex_nearest_corr.py | 100 + statsmodels/examples/ex_ols_robustcov.py | 63 + statsmodels/examples/ex_outliers_influence.py | 122 + statsmodels/examples/ex_pairwise.py | 204 + statsmodels/examples/ex_pandas.py | 134 + statsmodels/examples/ex_pareto_plot.py | 35 + statsmodels/examples/ex_predict_results.py | 95 + statsmodels/examples/ex_proportion.py | 57 + statsmodels/examples/ex_regressionplots.py | 142 + statsmodels/examples/ex_rootfinding.py | 105 + statsmodels/examples/ex_sandwich.py | 79 + statsmodels/examples/ex_sandwich2.py | 73 + statsmodels/examples/ex_sandwich3.py | 63 + statsmodels/examples/ex_scatter_ellipse.py | 50 + statsmodels/examples/ex_univar_kde.py | 156 + statsmodels/examples/ex_wald_anova.py | 48 + statsmodels/examples/example_discrete_mnl.py | 67 + .../examples/example_enhanced_boxplots.py | 99 + .../examples/example_functional_plots.py | 52 + statsmodels/examples/example_kde.py | 32 + .../examples/example_ols_minimal_comp.py | 31 + statsmodels/examples/example_rpy.py | 49 + statsmodels/examples/koul_and_mc.py | 36 + statsmodels/examples/l1_demo/demo.py | 355 + statsmodels/examples/l1_demo/short_demo.py | 118 + .../examples/l1_demo/sklearn_compare.py | 102 + statsmodels/examples/run_all.py | 69 + statsmodels/examples/tests/__init__.py | 0 statsmodels/examples/tests/test_notebooks.py | 71 + statsmodels/examples/try_2regress.py | 63 + statsmodels/examples/try_fit_constrained.py | 189 + statsmodels/examples/try_gee.py | 83 + statsmodels/examples/try_gof_chisquare.py | 101 + statsmodels/examples/try_polytrend.py | 63 + statsmodels/examples/try_power.py | 70 + statsmodels/examples/try_power2.py | 58 + statsmodels/examples/try_tukey_hsd.py | 223 + statsmodels/examples/tsa/ar1cholesky.py | 43 + statsmodels/examples/tsa/arma_plots.py | 77 + statsmodels/examples/tsa/compare_arma.py | 77 + statsmodels/examples/tsa/ex_arma.py | 100 + statsmodels/examples/tsa/ex_arma_all.py | 75 + statsmodels/examples/tsa/ex_coint.py | 9 + statsmodels/examples/tsa/ex_var.py | 46 + statsmodels/examples/tsa/ex_var_reorder.py | 6 + statsmodels/examples/tsa/lagpolynomial.py | 47 + statsmodels/examples/tsa/try_ar.py | 80 + statsmodels/examples/tut_ols_ancova.py | 98 + statsmodels/examples/tut_ols_rlm_short.py | 63 + statsmodels/formula/__init__.py | 6 + statsmodels/formula/api.py | 30 + statsmodels/formula/formulatools.py | 112 + statsmodels/formula/tests/__init__.py | 0 statsmodels/formula/tests/test_formula.py | 225 + statsmodels/gam/__init__.py | 3 + statsmodels/gam/api.py | 4 + .../gam/gam_cross_validation/__init__.py | 1 + .../gam_cross_validation/cross_validators.py | 69 + .../gam_cross_validation.py | 213 + statsmodels/gam/gam_penalties.py | 309 + statsmodels/gam/generalized_additive_model.py | 1026 + statsmodels/gam/smooth_basis.py | 1054 + statsmodels/gam/tests/__init__.py | 0 statsmodels/gam/tests/results/__init__.py | 0 statsmodels/gam/tests/results/autos.csv | 206 + statsmodels/gam/tests/results/autos_exog.csv | 204 + .../gam/tests/results/autos_predict.csv | 204 + .../cubic_cyclic_splines_from_mgcv.csv | 401 + .../gam/tests/results/gam_PIRLS_results.csv | 101 + .../gam/tests/results/logit_gam_mgcv.csv | 201 + statsmodels/gam/tests/results/motorcycle.csv | 134 + .../tests/results/prediction_from_mgcv.csv | 1001 + .../gam/tests/results/results_mpg_bs.py | 1274 + .../tests/results/results_mpg_bs_poisson.py | 1628 + .../tests/results/results_mpg_bs_poisson.r | 49 + statsmodels/gam/tests/results/results_pls.py | 417 + statsmodels/gam/tests/test_gam.py | 808 + statsmodels/gam/tests/test_penalized.py | 664 + statsmodels/gam/tests/test_smooth_basis.py | 29 + statsmodels/genmod/__init__.py | 3 + statsmodels/genmod/_prediction.py | 271 + .../genmod/_tweedie_compound_poisson.py | 95 + statsmodels/genmod/api.py | 10 + statsmodels/genmod/bayes_mixed_glm.py | 1189 + statsmodels/genmod/cov_struct.py | 1438 + statsmodels/genmod/families/__init__.py | 21 + statsmodels/genmod/families/family.py | 1555 + statsmodels/genmod/families/links.py | 1008 + statsmodels/genmod/families/tests/__init__.py | 0 .../genmod/families/tests/test_link.py | 120 + statsmodels/genmod/families/varfuncs.py | 283 + .../generalized_estimating_equations.py | 3255 ++ .../genmod/generalized_linear_model.py | 1964 ++ statsmodels/genmod/qif.py | 514 + statsmodels/genmod/tests/__init__.py | 0 .../tests/gee_categorical_simulation_check.py | 288 + .../gee_categorical_simulation_check.txt | 5 + .../tests/gee_gaussian_simulation_check.py | 337 + .../tests/gee_gaussian_simulation_check.txt | 283 + .../tests/gee_poisson_simulation_check.py | 284 + .../tests/gee_poisson_simulation_check.txt | 67 + .../genmod/tests/gee_simulation_check.py | 339 + statsmodels/genmod/tests/results/__init__.py | 0 .../genmod/tests/results/elastic_net.R | 37 + .../results/elastic_net_generate_tests.py | 24 + .../genmod/tests/results/enet_binomial.csv | 200 + .../genmod/tests/results/enet_poisson.csv | 200 + statsmodels/genmod/tests/results/epil.csv | 237 + .../tests/results/gee_generate_tests.py | 225 + .../genmod/tests/results/gee_linear_1.csv | 413 + .../genmod/tests/results/gee_logistic_1.csv | 405 + .../tests/results/gee_nested_linear_1.csv | 2000 ++ .../genmod/tests/results/gee_nominal_1.csv | 796 + .../genmod/tests/results/gee_ordinal_1.csv | 787 + .../genmod/tests/results/gee_poisson_1.csv | 399 + .../genmod/tests/results/glm_test_resids.py | 36 + .../genmod/tests/results/glmnet_r_results.py | 55 + .../tests/results/igaussident_resids.csv | 3676 +++ .../genmod/tests/results/inv_gaussian.csv | 25001 ++++++++++++++++ statsmodels/genmod/tests/results/iris.csv | 151 + .../genmod/tests/results/medparlogresids.csv | 3676 +++ .../tests/results/poisson_weights_v2.do | 447 + .../genmod/tests/results/res_R_var_weight.py | 144 + .../genmod/tests/results/results_glm.py | 4206 +++ .../results/results_glm_poisson_weights.py | 2390 ++ .../results_tweedie_aweights_nonrobust.csv | 6367 ++++ .../genmod/tests/results/stata_cancer_glm.csv | 49 + .../genmod/tests/results/stata_lbw_glm.csv | 191 + .../tests/results/stata_medpar1_glm.csv | 3677 +++ .../results/test_get_R_tweedie_var_weight.R | 148 + .../genmod/tests/test_bayes_mixed_glm.py | 612 + statsmodels/genmod/tests/test_constrained.py | 263 + statsmodels/genmod/tests/test_gee.py | 1976 ++ statsmodels/genmod/tests/test_gee_glm.py | 134 + statsmodels/genmod/tests/test_glm.py | 2237 ++ statsmodels/genmod/tests/test_glm_weights.py | 915 + statsmodels/genmod/tests/test_qif.py | 111 + statsmodels/genmod/tests/test_score_test.py | 191 + statsmodels/graphics/__init__.py | 3 + statsmodels/graphics/_regressionplots_doc.py | 214 + statsmodels/graphics/agreement.py | 152 + statsmodels/graphics/api.py | 13 + statsmodels/graphics/boxplots.py | 422 + statsmodels/graphics/correlation.py | 219 + statsmodels/graphics/dotplots.py | 486 + statsmodels/graphics/factorplots.py | 201 + statsmodels/graphics/functional.py | 860 + statsmodels/graphics/gofplots.py | 860 + statsmodels/graphics/mosaicplot.py | 667 + statsmodels/graphics/plot_grids.py | 179 + statsmodels/graphics/plottools.py | 26 + statsmodels/graphics/regressionplots.py | 1272 + statsmodels/graphics/tests/__init__.py | 0 statsmodels/graphics/tests/test_agreement.py | 48 + statsmodels/graphics/tests/test_boxplots.py | 70 + .../graphics/tests/test_correlation.py | 29 + statsmodels/graphics/tests/test_dotplot.py | 415 + .../graphics/tests/test_factorplots.py | 71 + statsmodels/graphics/tests/test_functional.py | 247 + statsmodels/graphics/tests/test_gofplots.py | 233 + statsmodels/graphics/tests/test_mosaicplot.py | 448 + .../graphics/tests/test_regressionplots.py | 341 + statsmodels/graphics/tests/test_tsaplots.py | 217 + statsmodels/graphics/tsaplots.py | 398 + statsmodels/graphics/tukeyplot.py | 76 + statsmodels/graphics/utils.py | 149 + statsmodels/imputation/__init__.py | 3 + statsmodels/imputation/bayes_mi.py | 428 + statsmodels/imputation/mice.py | 1327 + statsmodels/imputation/ros.py | 590 + statsmodels/imputation/tests/__init__.py | 0 statsmodels/imputation/tests/test_bayes_mi.py | 175 + statsmodels/imputation/tests/test_mice.py | 399 + statsmodels/imputation/tests/test_ros.py | 654 + statsmodels/interface/__init__.py | 0 statsmodels/iolib/__init__.py | 10 + statsmodels/iolib/api.py | 8 + statsmodels/iolib/foreign.py | 1173 + statsmodels/iolib/openfile.py | 71 + statsmodels/iolib/smpickle.py | 35 + statsmodels/iolib/stata_summary_examples.py | 84 + statsmodels/iolib/summary.py | 895 + statsmodels/iolib/summary2.py | 585 + statsmodels/iolib/table.py | 921 + statsmodels/iolib/tableformatting.py | 149 + statsmodels/iolib/tests/__init__.py | 0 statsmodels/iolib/tests/gen_dates.do | 9 + statsmodels/iolib/tests/results/__init__.py | 0 .../iolib/tests/results/data_missing.dta | Bin 0 -> 1130 bytes statsmodels/iolib/tests/results/macrodata.py | 413 + .../tests/results/time_series_examples.dta | Bin 0 -> 1760 bytes statsmodels/iolib/tests/stata_dates.csv | 3 + statsmodels/iolib/tests/test_data.csv | 2 + statsmodels/iolib/tests/test_foreign.py | 233 + statsmodels/iolib/tests/test_pickle.py | 31 + statsmodels/iolib/tests/test_summary.py | 94 + statsmodels/iolib/tests/test_summary2.py | 140 + statsmodels/iolib/tests/test_summary_old.py | 75 + statsmodels/iolib/tests/test_table.py | 243 + statsmodels/iolib/tests/test_table_econpy.py | 142 + statsmodels/miscmodels/__init__.py | 3 + statsmodels/miscmodels/api.py | 5 + statsmodels/miscmodels/count.py | 257 + statsmodels/miscmodels/nonlinls.py | 309 + statsmodels/miscmodels/tests/__init__.py | 0 .../miscmodels/tests/results_tmodel.py | 176 + .../miscmodels/tests/test_generic_mle.py | 232 + statsmodels/miscmodels/tests/test_poisson.py | 201 + statsmodels/miscmodels/tests/test_tarma.py | 118 + statsmodels/miscmodels/tests/test_tmodel.py | 183 + statsmodels/miscmodels/tmodel.py | 227 + statsmodels/miscmodels/try_mlecov.py | 221 + statsmodels/multivariate/__init__.py | 3 + statsmodels/multivariate/api.py | 10 + statsmodels/multivariate/cancorr.py | 181 + statsmodels/multivariate/factor.py | 1037 + .../factor_rotation/COPYRIGHTS.txt | 5 + .../multivariate/factor_rotation/LICENSE.txt | 24 + .../multivariate/factor_rotation/__init__.py | 33 + .../factor_rotation/_analytic_rotation.py | 156 + .../factor_rotation/_gpa_rotation.py | 594 + .../multivariate/factor_rotation/_wrappers.py | 354 + .../factor_rotation/tests/__init__.py | 0 .../factor_rotation/tests/test_rotation.py | 586 + statsmodels/multivariate/manova.py | 119 + statsmodels/multivariate/multivariate_ols.py | 551 + statsmodels/multivariate/pca.py | 851 + statsmodels/multivariate/plots.py | 141 + statsmodels/multivariate/tests/__init__.py | 0 .../multivariate/tests/results/__init__.py | 0 .../multivariate/tests/results/datamlw.py | 294 + .../tests/results/factor_data.csv | 101 + .../tests/results/factors_stata.csv | 101 + .../multivariate/tests/test_cancorr.py | 110 + statsmodels/multivariate/tests/test_factor.py | 304 + statsmodels/multivariate/tests/test_manova.py | 171 + .../multivariate/tests/test_ml_factor.py | 189 + .../tests/test_multivariate_ols.py | 201 + statsmodels/multivariate/tests/test_pca.py | 408 + statsmodels/nonparametric/__init__.py | 9 + statsmodels/nonparametric/_kernel_base.py | 520 + .../nonparametric/_smoothers_lowess.pyx | 618 + statsmodels/nonparametric/api.py | 13 + statsmodels/nonparametric/bandwidths.py | 177 + statsmodels/nonparametric/kde.py | 549 + statsmodels/nonparametric/kdetools.py | 57 + statsmodels/nonparametric/kernel_density.py | 690 + .../nonparametric/kernel_regression.py | 936 + statsmodels/nonparametric/kernels.py | 207 + statsmodels/nonparametric/linbin.pyx | 36 + statsmodels/nonparametric/smoothers_lowess.py | 188 + .../nonparametric/smoothers_lowess_old.py | 361 + .../nonparametric/tests/Xi_test_data.csv | 200 + statsmodels/nonparametric/tests/__init__.py | 0 .../nonparametric/tests/results/__init__.py | 0 .../tests/results/results_kcde.csv | 201 + .../tests/results/results_kde.csv | 201 + .../tests/results/results_kde_fft.csv | 512 + .../results/results_kde_univ_weights.csv | 61 + .../tests/results/results_kde_weights.csv | 51 + .../results/results_kernel_regression.csv | 41 + .../tests/results/test_lowess_delta.csv | 134 + .../tests/results/test_lowess_frac.csv | 31 + .../tests/results/test_lowess_iter.csv | 21 + .../tests/results/test_lowess_r_outputs.R | 93 + .../tests/results/test_lowess_simple.csv | 21 + .../nonparametric/tests/test_bandwidths.py | 72 + statsmodels/nonparametric/tests/test_kde.py | 330 + .../tests/test_kernel_density.py | 401 + .../tests/test_kernel_regression.py | 340 + .../nonparametric/tests/test_kernels.py | 145 + .../nonparametric/tests/test_lowess.py | 156 + statsmodels/regression/__init__.py | 7 + statsmodels/regression/_prediction.py | 178 + statsmodels/regression/_tools.py | 111 + statsmodels/regression/dimred.py | 258 + statsmodels/regression/feasible_gls.py | 207 + statsmodels/regression/linear_model.py | 2915 ++ statsmodels/regression/mixed_linear_model.py | 2814 ++ statsmodels/regression/process_regression.py | 852 + statsmodels/regression/quantile_regression.py | 414 + statsmodels/regression/recursive_ls.py | 854 + statsmodels/regression/tests/__init__.py | 0 statsmodels/regression/tests/lme_examples.R | 6 + .../regression/tests/results/__init__.py | 0 .../regression/tests/results/dietox.csv | 862 + .../tests/results/generate_lasso.py | 27 + .../regression/tests/results/generate_lme.py | 75 + .../tests/results/glmnet_r_results.py | 258 + .../regression/tests/results/lasso_data.csv | 300 + .../tests/results/lasso_r_results.R | 40 + .../leverage_influence_ols_nostars.txt | 209 + .../regression/tests/results/lme00.csv | 241 + .../regression/tests/results/lme01.csv | 255 + .../regression/tests/results/lme02.csv | 236 + .../regression/tests/results/lme03.csv | 230 + .../regression/tests/results/lme04.csv | 253 + .../regression/tests/results/lme05.csv | 269 + .../regression/tests/results/lme06.csv | 261 + .../regression/tests/results/lme07.csv | 262 + .../regression/tests/results/lme08.csv | 250 + .../regression/tests/results/lme09.csv | 256 + .../regression/tests/results/lme10.csv | 263 + .../regression/tests/results/lme11.csv | 262 + .../regression/tests/results/lme_r_results.py | 560 + .../regression/tests/results/lme_results.R | 90 + .../tests/results/macro_gr_corc_stata.py | 514 + .../regression/tests/results/pastes.csv | 61 + .../results_grunfeld_ols_robust_cluster.py | 817 + .../tests/results/results_macro_ols_robust.py | 447 + .../results/results_quantile_regression.py | 637 + .../tests/results/results_regression.py | 226 + .../tests/results/results_rls_R.csv | 202 + .../tests/results/results_rls_stata.csv | 204 + .../tests/results/results_theil_textile.py | 67 + .../regression/tests/results/test_rls.R | 15 + .../regression/tests/results/test_rls.do | 20 + .../tests/results/theil_textile_predict.csv | 18 + statsmodels/regression/tests/test_cov.py | 39 + statsmodels/regression/tests/test_dimred.py | 59 + .../regression/tests/test_glsar_gretl.py | 646 + .../regression/tests/test_glsar_stata.py | 98 + statsmodels/regression/tests/test_lme.py | 1301 + statsmodels/regression/tests/test_predict.py | 260 + .../regression/tests/test_processreg.py | 202 + .../tests/test_quantile_regression.py | 283 + .../regression/tests/test_recursive_ls.py | 475 + .../regression/tests/test_regression.py | 1342 + .../regression/tests/test_robustcov.py | 920 + statsmodels/regression/tests/test_theil.py | 368 + statsmodels/regression/tests/test_tools.py | 62 + statsmodels/resampling/__init__.py | 0 statsmodels/robust/__init__.py | 10 + statsmodels/robust/norms.py | 864 + statsmodels/robust/robust_linear_model.py | 642 + statsmodels/robust/scale.py | 241 + statsmodels/robust/tests/__init__.py | 0 statsmodels/robust/tests/results/__init__.py | 0 .../robust/tests/results/results_rlm.py | 435 + statsmodels/robust/tests/test_rlm.py | 293 + statsmodels/robust/tests/test_scale.py | 126 + statsmodels/sandbox/__init__.py | 6 + statsmodels/sandbox/archive/__init__.py | 0 statsmodels/sandbox/archive/linalg_covmat.py | 274 + .../sandbox/archive/linalg_decomp_1.py | 292 + statsmodels/sandbox/archive/tsa.py | 49 + statsmodels/sandbox/bspline.py | 668 + statsmodels/sandbox/contrast_old.py | 169 + statsmodels/sandbox/datarich/__init__.py | 165 + statsmodels/sandbox/datarich/factormodels.py | 188 + statsmodels/sandbox/dataset_notes.rst | 66 + statsmodels/sandbox/descstats.py | 190 + statsmodels/sandbox/distributions/__init__.py | 23 + statsmodels/sandbox/distributions/copula.py | 462 + .../sandbox/distributions/estimators.py | 678 + .../distributions/examples/__init__.py | 1 + .../distributions/examples/ex_extras.py | 127 + .../distributions/examples/ex_fitfr.py | 29 + .../sandbox/distributions/examples/ex_gof.py | 12 + .../distributions/examples/ex_mvelliptical.py | 164 + .../distributions/examples/ex_transf2.py | 316 + .../distributions/examples/matchdist.py | 261 + statsmodels/sandbox/distributions/extras.py | 1137 + .../sandbox/distributions/genpareto.py | 235 + statsmodels/sandbox/distributions/gof_new.py | 689 + .../sandbox/distributions/multivariate.py | 172 + .../sandbox/distributions/mv_measures.py | 195 + .../sandbox/distributions/mv_normal.py | 1277 + .../sandbox/distributions/otherdist.py | 308 + statsmodels/sandbox/distributions/quantize.py | 142 + statsmodels/sandbox/distributions/sppatch.py | 728 + .../sandbox/distributions/tests/__init__.py | 0 .../sandbox/distributions/tests/_est_fit.py | 68 + .../distributions/tests/check_moments.py | 159 + .../sandbox/distributions/tests/distparams.py | 121 + .../distributions/tests/test_extras.py | 118 + .../distributions/tests/test_gof_new.py | 27 + .../distributions/tests/test_multivariate.py | 176 + .../distributions/tests/test_norm_expan.py | 95 + .../distributions/tests/test_transf.py | 180 + .../distributions/transform_functions.py | 189 + .../sandbox/distributions/transformed.py | 456 + statsmodels/sandbox/distributions/try_max.py | 74 + statsmodels/sandbox/distributions/try_pot.py | 67 + statsmodels/sandbox/examples/bayesprior.py | 245 + statsmodels/sandbox/examples/dji_table.csv | 20434 +++++++++++++ statsmodels/sandbox/examples/ex_cusum.py | 106 + statsmodels/sandbox/examples/ex_formula.py | 249 + .../sandbox/examples/ex_formula_factor.py | 40 + .../sandbox/examples/ex_gam_results.py | 58 + .../sandbox/examples/ex_mixed_lls_0.py | 155 + .../sandbox/examples/ex_mixed_lls_re.py | 159 + .../sandbox/examples/ex_mixed_lls_timecorr.py | 211 + statsmodels/sandbox/examples/ex_onewaygls.py | 196 + .../sandbox/examples/ex_random_panel.py | 151 + .../sandbox/examples/example_crossval.py | 63 + statsmodels/sandbox/examples/example_gam.py | 100 + statsmodels/sandbox/examples/example_gam_0.py | 170 + statsmodels/sandbox/examples/example_garch.py | 62 + .../sandbox/examples/example_maxent.py | 48 + statsmodels/sandbox/examples/example_mle.py | 69 + statsmodels/sandbox/examples/example_nbin.py | 378 + statsmodels/sandbox/examples/example_pca.py | 21 + .../examples/example_pca_regression.py | 104 + .../sandbox/examples/example_sysreg.py | 207 + statsmodels/sandbox/examples/gspc_table.csv | 15127 ++++++++++ statsmodels/sandbox/examples/run_all.py | 36 + .../examples/thirdparty/ex_ratereturn.py | 141 + .../sandbox/examples/thirdparty/findow_1.py | 93 + .../examples/thirdparty/try_interchange.py | 74 + statsmodels/sandbox/examples/try_gmm_other.py | 139 + statsmodels/sandbox/examples/try_multiols.py | 44 + .../examples/try_quantile_regression.py | 50 + .../examples/try_quantile_regression1.py | 46 + statsmodels/sandbox/examples/try_smoothers.py | 99 + statsmodels/sandbox/formula.py | 769 + statsmodels/sandbox/gam.py | 434 + statsmodels/sandbox/infotheo.py | 521 + statsmodels/sandbox/mcevaluate/__init__.py | 0 statsmodels/sandbox/mcevaluate/arma.py | 147 + .../sandbox/mcevaluate/mcresuts_arma1.txt | 325 + statsmodels/sandbox/mle.py | 64 + statsmodels/sandbox/mlogitmath.lyx | 219 + statsmodels/sandbox/multilinear.py | 325 + statsmodels/sandbox/nonparametric/__init__.py | 1 + .../sandbox/nonparametric/densityorthopoly.py | 563 + .../sandbox/nonparametric/dgp_examples.py | 213 + statsmodels/sandbox/nonparametric/kde2.py | 114 + .../sandbox/nonparametric/kdecovclass.py | 164 + .../sandbox/nonparametric/kernel_extras.py | 415 + statsmodels/sandbox/nonparametric/kernels.py | 566 + .../sandbox/nonparametric/smoothers.py | 409 + statsmodels/sandbox/nonparametric/testdata.py | 58 + .../sandbox/nonparametric/tests/__init__.py | 0 .../nonparametric/tests/ex_gam_am_new.py | 89 + .../sandbox/nonparametric/tests/ex_gam_new.py | 133 + .../nonparametric/tests/ex_smoothers.py | 63 + .../nonparametric/tests/test_kernel_extras.py | 78 + .../nonparametric/tests/test_smoothers.py | 111 + statsmodels/sandbox/nos4.mtx | 349 + statsmodels/sandbox/panel/__init__.py | 0 .../sandbox/panel/correlation_structures.py | 204 + statsmodels/sandbox/panel/mixed.py | 668 + statsmodels/sandbox/panel/panel_short.py | 235 + statsmodels/sandbox/panel/panelmod.py | 439 + statsmodels/sandbox/panel/random_panel.py | 152 + .../panel/sandwich_covariance_generic.py | 124 + statsmodels/sandbox/panel/tests/__init__.py | 0 .../sandbox/panel/tests/test_random_panel.py | 146 + statsmodels/sandbox/pca.py | 226 + statsmodels/sandbox/predict_functional.py | 447 + statsmodels/sandbox/regression/__init__.py | 5 + .../sandbox/regression/anova_nistcertified.py | 110 + statsmodels/sandbox/regression/ar_panel.py | 113 + .../sandbox/regression/data/AtmWtAg.dat | 108 + .../sandbox/regression/data/Longley.dat | 76 + .../sandbox/regression/data/SiRstv.dat | 85 + .../sandbox/regression/data/SmLs01.dat | 249 + .../sandbox/regression/data/SmLs02.dat | 1869 ++ .../sandbox/regression/data/SmLs03.dat | 18069 +++++++++++ .../sandbox/regression/data/SmLs04.dat | 249 + .../sandbox/regression/data/SmLs05.dat | 1869 ++ .../sandbox/regression/data/SmLs06.dat | 18069 +++++++++++ .../sandbox/regression/data/SmLs07.dat | 249 + .../sandbox/regression/data/SmLs08.dat | 1869 ++ .../sandbox/regression/data/SmLs09.dat | 18069 +++++++++++ .../sandbox/regression/example_kernridge.py | 34 + statsmodels/sandbox/regression/gmm.py | 1819 ++ .../regression/kernridgeregress_class.py | 206 + .../sandbox/regression/notes_runmnl.txt | 34 + .../sandbox/regression/ols_anova_original.py | 336 + statsmodels/sandbox/regression/onewaygls.py | 383 + statsmodels/sandbox/regression/penalized.py | 476 + statsmodels/sandbox/regression/predstd.py | 101 + statsmodels/sandbox/regression/runmnl.py | 374 + statsmodels/sandbox/regression/sympy_diff.py | 61 + .../sandbox/regression/tests/__init__.py | 0 .../sandbox/regression/tests/griliches76.dta | Bin 0 -> 64736 bytes .../tests/racd10data_with_transformed.csv | 3630 +++ .../regression/tests/results_gmm_griliches.py | 274 + .../tests/results_gmm_griliches_iter.py | 135 + .../regression/tests/results_gmm_poisson.py | 572 + .../tests/results_ivreg2_griliches.py | 791 + .../sandbox/regression/tests/test_gmm.py | 815 + .../regression/tests/test_gmm_poisson.py | 408 + statsmodels/sandbox/regression/tools.py | 383 + .../sandbox/regression/treewalkerclass.py | 617 + statsmodels/sandbox/regression/try_catdata.py | 125 + .../sandbox/regression/try_ols_anova.py | 286 + .../sandbox/regression/try_treewalker.py | 146 + statsmodels/sandbox/rls.py | 152 + statsmodels/sandbox/rlsdata.txt | 50 + statsmodels/sandbox/stats/__init__.py | 23 + statsmodels/sandbox/stats/contrast_tools.py | 961 + statsmodels/sandbox/stats/diagnostic.py | 1565 + statsmodels/sandbox/stats/ex_newtests.py | 31 + statsmodels/sandbox/stats/multicomp.py | 2019 ++ statsmodels/sandbox/stats/notes_fdr.txt | 128 + statsmodels/sandbox/stats/runs.py | 634 + statsmodels/sandbox/stats/stats_dhuard.py | 329 + .../sandbox/stats/stats_mstats_short.py | 383 + statsmodels/sandbox/stats/tests/__init__.py | 0 statsmodels/sandbox/sysreg.py | 378 + statsmodels/sandbox/tests/GreeneEx15_1.s | 35 + statsmodels/sandbox/tests/__init__.py | 0 statsmodels/sandbox/tests/macrodata.s | 35 + .../sandbox/tests/maketests_mlabwrap.py | 241 + statsmodels/sandbox/tests/savervs.py | 37 + statsmodels/sandbox/tests/sysreg.s | 56 + statsmodels/sandbox/tests/test_bspline.py.txt | 55 + statsmodels/sandbox/tests/test_formula.py | 317 + statsmodels/sandbox/tests/test_gam.py | 318 + statsmodels/sandbox/tests/test_pca.py | 71 + .../sandbox/tests/test_predict_functional.py | 340 + statsmodels/sandbox/tools/TODO.txt | 76 + statsmodels/sandbox/tools/__init__.py | 10 + statsmodels/sandbox/tools/cross_val.py | 369 + statsmodels/sandbox/tools/mctools.py | 527 + statsmodels/sandbox/tools/tools_pca.py | 148 + statsmodels/sandbox/tools/try_mctools.py | 70 + statsmodels/sandbox/tsa/__init__.py | 52 + statsmodels/sandbox/tsa/diffusion.py | 591 + statsmodels/sandbox/tsa/diffusion2.py | 502 + statsmodels/sandbox/tsa/example_arma.py | 406 + .../sandbox/tsa/examples/ex_mle_arma.py | 141 + .../sandbox/tsa/examples/ex_mle_garch.py | 332 + .../sandbox/tsa/examples/example_var.py | 54 + .../sandbox/tsa/examples/try_ld_nitime.py | 24 + statsmodels/sandbox/tsa/fftarma.py | 539 + statsmodels/sandbox/tsa/garch.py | 1492 + statsmodels/sandbox/tsa/movstat.py | 413 + statsmodels/sandbox/tsa/notes_organize.txt | 227 + statsmodels/sandbox/tsa/try_arma_more.py | 132 + statsmodels/sandbox/tsa/try_fi.py | 69 + statsmodels/sandbox/tsa/try_var_convolve.py | 310 + statsmodels/sandbox/tsa/varma.py | 173 + statsmodels/sandbox/utils_old.py | 55 + statsmodels/src/__init__.py | 0 statsmodels/src/blas_lapack.pxd | 917 + statsmodels/src/capsule.h | 24 + statsmodels/src/math.pxd | 23 + statsmodels/stats/__init__.py | 3 + statsmodels/stats/_adnorm.py | 137 + statsmodels/stats/_diagnostic_other.py | 1202 + statsmodels/stats/_knockoff.py | 256 + statsmodels/stats/_lilliefors.py | 482 + statsmodels/stats/anova.py | 669 + statsmodels/stats/api.py | 67 + statsmodels/stats/base.py | 99 + statsmodels/stats/contingency_tables.py | 1419 + statsmodels/stats/contrast.py | 679 + statsmodels/stats/correlation_tools.py | 1039 + statsmodels/stats/descriptivestats.py | 393 + statsmodels/stats/diagnostic.py | 14 + statsmodels/stats/gof.py | 487 + statsmodels/stats/inter_rater.py | 518 + statsmodels/stats/knockoff_regeffects.py | 164 + statsmodels/stats/libqsturng/CH.r | 92 + statsmodels/stats/libqsturng/LICENSE.txt | 29 + statsmodels/stats/libqsturng/__init__.py | 7 + statsmodels/stats/libqsturng/make_tbls.py | 467 + statsmodels/stats/libqsturng/qsturng_.py | 902 + .../stats/libqsturng/tests/__init__.py | 0 .../stats/libqsturng/tests/bootleg.dat | 9265 ++++++ .../stats/libqsturng/tests/test_qsturng.py | 201 + statsmodels/stats/mediation.py | 403 + statsmodels/stats/moment_helpers.py | 307 + statsmodels/stats/multicomp.py | 44 + statsmodels/stats/multitest.py | 692 + statsmodels/stats/multivariate_tools.py | 246 + statsmodels/stats/outliers_influence.py | 1377 + statsmodels/stats/power.py | 1154 + statsmodels/stats/proportion.py | 1044 + statsmodels/stats/regularized_covariance.py | 181 + statsmodels/stats/sandwich_covariance.py | 877 + statsmodels/stats/stattools.py | 465 + statsmodels/stats/tabledist.py | 320 + statsmodels/stats/tests/__init__.py | 0 .../stats/tests/gen_contingency_table_tests.R | 74 + statsmodels/stats/tests/results/__init__.py | 0 statsmodels/stats/tests/results/anova.R | 92 + .../stats/tests/results/binary_constrict.csv | 40 + statsmodels/stats/tests/results/bootleg.csv | 9265 ++++++ .../results/contingency_table_r_results.csv | 4 + statsmodels/stats/tests/results/data.dat | 61 + statsmodels/stats/tests/results/framing.csv | 266 + .../tests/results/influence_lsdiag_R.json | 1 + .../tests/results/influence_measures_R.csv | 203 + .../results/influence_measures_bool_R.csv | 203 + .../tests/results/results_influence_logit.csv | 40 + .../results_multinomial_proportions.py | 79 + .../tests/results/results_panelrobust.py | 91 + .../stats/tests/results/results_power.py | 127 + .../stats/tests/results/results_proportion.py | 124 + statsmodels/stats/tests/results/wspec1.csv | 36 + statsmodels/stats/tests/results/wspec2.csv | 36 + statsmodels/stats/tests/results/wspec3.csv | 36 + statsmodels/stats/tests/results/wspec4.csv | 36 + statsmodels/stats/tests/test_anova.py | 517 + statsmodels/stats/tests/test_anova_rm.py | 198 + .../stats/tests/test_contingency_tables.py | 598 + statsmodels/stats/tests/test_contrast.py | 68 + statsmodels/stats/tests/test_correlation.py | 60 + statsmodels/stats/tests/test_corrpsd.py | 469 + statsmodels/stats/tests/test_data.txt | 5000 +++ .../stats/tests/test_descriptivestats.py | 12 + statsmodels/stats/tests/test_diagnostic.py | 1057 + .../stats/tests/test_diagnostic_other.py | 271 + statsmodels/stats/tests/test_gof.py | 104 + statsmodels/stats/tests/test_groups_sw.py | 78 + statsmodels/stats/tests/test_influence.py | 248 + statsmodels/stats/tests/test_inter_rater.py | 351 + statsmodels/stats/tests/test_knockoff.py | 157 + statsmodels/stats/tests/test_lilliefors.py | 59 + statsmodels/stats/tests/test_mediation.py | 214 + .../stats/tests/test_moment_helpers.py | 126 + statsmodels/stats/tests/test_multi.py | 456 + statsmodels/stats/tests/test_nonparametric.py | 276 + statsmodels/stats/tests/test_pairwise.py | 364 + .../stats/tests/test_panel_robustcov.py | 72 + statsmodels/stats/tests/test_power.py | 773 + statsmodels/stats/tests/test_proportion.py | 576 + statsmodels/stats/tests/test_qsturng.py | 29 + .../tests/test_regularized_covariance.py | 53 + statsmodels/stats/tests/test_sandwich.py | 90 + statsmodels/stats/tests/test_statstools.py | 300 + statsmodels/stats/tests/test_tost.py | 558 + statsmodels/stats/tests/test_weightstats.py | 761 + statsmodels/stats/weightstats.py | 1479 + statsmodels/tests/__init__.py | 1 + statsmodels/tests/test_package.py | 23 + statsmodels/tools/__init__.py | 6 + statsmodels/tools/_testing.py | 216 + statsmodels/tools/catadd.py | 38 + statsmodels/tools/data.py | 124 + statsmodels/tools/decorators.py | 138 + statsmodels/tools/docstring.py | 676 + statsmodels/tools/eval_measures.py | 585 + statsmodels/tools/grouputils.py | 552 + statsmodels/tools/linalg.py | 176 + statsmodels/tools/numdiff.py | 354 + statsmodels/tools/parallel.py | 75 + statsmodels/tools/print_version.py | 283 + statsmodels/tools/rootfinding.py | 220 + statsmodels/tools/sequences.py | 218 + statsmodels/tools/sm_exceptions.py | 132 + statsmodels/tools/testing.py | 67 + statsmodels/tools/tests/__init__.py | 0 statsmodels/tools/tests/test_catadd.py | 19 + statsmodels/tools/tests/test_data.py | 50 + statsmodels/tools/tests/test_decorators.py | 82 + statsmodels/tools/tests/test_eval_measures.py | 104 + statsmodels/tools/tests/test_grouputils.py | 337 + statsmodels/tools/tests/test_linalg.py | 24 + statsmodels/tools/tests/test_numdiff.py | 373 + statsmodels/tools/tests/test_parallel.py | 13 + statsmodels/tools/tests/test_rootfinding.py | 93 + statsmodels/tools/tests/test_sequences.py | 45 + statsmodels/tools/tests/test_testing.py | 27 + statsmodels/tools/tests/test_tools.py | 680 + .../tools/tests/test_transform_model.py | 66 + statsmodels/tools/tests/test_web.py | 31 + statsmodels/tools/tools.py | 574 + statsmodels/tools/transform_model.py | 98 + statsmodels/tools/web.py | 75 + statsmodels/tsa/__init__.py | 3 + statsmodels/tsa/_bds.py | 248 + statsmodels/tsa/_exponential_smoothers.pyx | 343 + statsmodels/tsa/adfvalues.py | 450 + statsmodels/tsa/api.py | 52 + statsmodels/tsa/ar_model.py | 885 + statsmodels/tsa/arima_model.py | 1999 ++ statsmodels/tsa/arima_process.py | 956 + statsmodels/tsa/arma_mle.py | 368 + statsmodels/tsa/base/__init__.py | 3 + statsmodels/tsa/base/datetools.py | 193 + statsmodels/tsa/base/tests/__init__.py | 0 statsmodels/tsa/base/tests/test_base.py | 113 + statsmodels/tsa/base/tests/test_datetools.py | 87 + .../tsa/base/tests/test_tsa_indexes.py | 979 + statsmodels/tsa/base/tsa_model.py | 639 + statsmodels/tsa/coint_tables.py | 226 + statsmodels/tsa/descriptivestats.py | 80 + statsmodels/tsa/filters/__init__.py | 3 + statsmodels/tsa/filters/_utils.py | 149 + statsmodels/tsa/filters/api.py | 6 + statsmodels/tsa/filters/bk_filter.py | 96 + statsmodels/tsa/filters/cf_filter.py | 109 + statsmodels/tsa/filters/filtertools.py | 374 + statsmodels/tsa/filters/hp_filter.py | 101 + statsmodels/tsa/filters/tests/__init__.py | 0 .../tsa/filters/tests/results/__init__.py | 0 .../tsa/filters/tests/results/filter.R | 49 + .../filters/tests/results/filter_results.py | 83 + statsmodels/tsa/filters/tests/test_filters.py | 739 + statsmodels/tsa/holtwinters.py | 1137 + statsmodels/tsa/innovations/__init__.py | 3 + .../tsa/innovations/_arma_innovations.pyx.in | 494 + statsmodels/tsa/innovations/api.py | 2 + .../tsa/innovations/arma_innovations.py | 269 + statsmodels/tsa/innovations/tests/__init__.py | 0 .../tests/test_arma_innovations.py | 45 + .../test_cython_arma_innovations_fast.py | 359 + statsmodels/tsa/interp/__init__.py | 5 + statsmodels/tsa/interp/denton.py | 308 + statsmodels/tsa/interp/tests/__init__.py | 0 statsmodels/tsa/interp/tests/test_denton.py | 30 + statsmodels/tsa/kalmanf/__init__.py | 5 + statsmodels/tsa/kalmanf/kalman_loglike.pyx | 355 + statsmodels/tsa/kalmanf/kalmanfilter.py | 232 + statsmodels/tsa/mlemodel.py | 81 + statsmodels/tsa/regime_switching/__init__.py | 3 + .../tsa/regime_switching/_hamilton_filter.pxd | 48 + .../regime_switching/_hamilton_filter.pyx.in | 136 + .../tsa/regime_switching/_kim_smoother.pxd | 71 + .../tsa/regime_switching/_kim_smoother.pyx.in | 117 + .../regime_switching/markov_autoregression.py | 492 + .../tsa/regime_switching/markov_regression.py | 456 + .../tsa/regime_switching/markov_switching.py | 2312 ++ .../tsa/regime_switching/tests/__init__.py | 0 .../tests/results/__init__.py | 0 .../tests/results/mar_filardo.csv | 1 + .../results/results_predict_fedfunds.csv | 227 + .../tests/results/results_predict_rgnp.csv | 137 + .../tests/test_markov_autoregression.py | 899 + .../tests/test_markov_regression.py | 1270 + .../tests/test_markov_switching.py | 318 + statsmodels/tsa/seasonal.py | 216 + statsmodels/tsa/statespace/__init__.py | 3 + .../tsa/statespace/_filters/__init__.py | 0 .../tsa/statespace/_filters/_conventional.pxd | 69 + .../statespace/_filters/_conventional.pyx.in | 321 + .../tsa/statespace/_filters/_inversions.pxd | 53 + .../statespace/_filters/_inversions.pyx.in | 407 + .../tsa/statespace/_filters/_univariate.pxd | 85 + .../statespace/_filters/_univariate.pyx.in | 451 + .../_filters/_univariate_diffuse.pxd | 57 + .../_filters/_univariate_diffuse.pyx.in | 298 + .../tsa/statespace/_initialization.pxd | 111 + .../tsa/statespace/_initialization.pyx.in | 254 + statsmodels/tsa/statespace/_kalman_filter.pxd | 657 + .../tsa/statespace/_kalman_filter.pyx.in | 1235 + .../tsa/statespace/_kalman_smoother.pxd | 479 + .../tsa/statespace/_kalman_smoother.pyx.in | 758 + .../tsa/statespace/_pykalman_smoother.py | 272 + .../tsa/statespace/_representation.pxd | 331 + .../tsa/statespace/_representation.pyx.in | 1017 + .../tsa/statespace/_simulation_smoother.pxd | 304 + .../statespace/_simulation_smoother.pyx.in | 659 + .../tsa/statespace/_smoothers/__init__.py | 0 .../statespace/_smoothers/_alternative.pxd | 44 + .../statespace/_smoothers/_alternative.pyx.in | 293 + .../tsa/statespace/_smoothers/_classical.pxd | 40 + .../statespace/_smoothers/_classical.pyx.in | 237 + .../statespace/_smoothers/_conventional.pxd | 60 + .../_smoothers/_conventional.pyx.in | 421 + .../tsa/statespace/_smoothers/_univariate.pxd | 40 + .../statespace/_smoothers/_univariate.pyx.in | 335 + .../_smoothers/_univariate_diffuse.pxd | 48 + .../_smoothers/_univariate_diffuse.pyx.in | 663 + statsmodels/tsa/statespace/_tools.pxd | 145 + statsmodels/tsa/statespace/_tools.pyx.in | 1108 + statsmodels/tsa/statespace/api.py | 5 + statsmodels/tsa/statespace/dynamic_factor.py | 1362 + statsmodels/tsa/statespace/initialization.py | 613 + statsmodels/tsa/statespace/kalman_filter.py | 2257 ++ statsmodels/tsa/statespace/kalman_smoother.py | 749 + statsmodels/tsa/statespace/mlemodel.py | 2944 ++ statsmodels/tsa/statespace/representation.py | 897 + statsmodels/tsa/statespace/sarimax.py | 2010 ++ .../tsa/statespace/simulation_smoother.py | 587 + statsmodels/tsa/statespace/structural.py | 1830 ++ statsmodels/tsa/statespace/tests/__init__.py | 0 .../tsa/statespace/tests/kfas_helpers.py | 96 + .../tsa/statespace/tests/results/__init__.py | 0 .../statespace/tests/results/clark1989.csv | 195 + .../tests/results/example_ssm_wpi1.m | 53 + .../statespace/tests/results/kfas_helpers.R | 92 + .../tsa/statespace/tests/results/manufac.dta | Bin 0 -> 19146 bytes .../tests/results/results_clark1989_R.csv | 192 + .../tests/results/results_dynamic_factor.py | 217 + .../results/results_dynamic_factor_stata.csv | 93 + .../results_exact_initial_common_level_R.csv | 12 + ...xact_initial_common_level_restricted_R.csv | 12 + .../results/results_exact_initial_dfm_R.csv | 22 + .../results_exact_initial_local_level_R.csv | 12 + ...lts_exact_initial_local_linear_trend_R.csv | 12 + ...t_initial_local_linear_trend_missing_R.csv | 12 + .../results/results_exact_initial_var1_R.csv | 22 + ...exact_initial_var1_measurement_error_R.csv | 22 + .../results_exact_initial_var1_missing_R.csv | 22 + .../results_exact_initial_var1_mixed_R.csv | 22 + .../tests/results/results_intercepts_R.csv | 204 + .../tests/results/results_kalman_filter.py | 807 + .../tests/results/results_realgdpar_stata.csv | 270 + .../tests/results/results_sarimax.py | 314 + .../results/results_sarimax_coverage.csv | 54 + .../results/results_simulation_smoothing0.csv | 10 + .../results/results_simulation_smoothing1.csv | 10 + .../results/results_simulation_smoothing2.csv | 10 + .../results/results_simulation_smoothing3.csv | 203 + ...results_simulation_smoothing3_variates.csv | 1216 + .../results/results_simulation_smoothing4.csv | 203 + .../results/results_simulation_smoothing5.csv | 203 + .../results/results_simulation_smoothing6.csv | 203 + .../tests/results/results_smoothing2_R.csv | 203 + .../tests/results/results_smoothing3_R.csv | 124 + .../tests/results/results_smoothing_R.csv | 203 + .../results_smoothing_generalobscov_R.csv | 203 + .../tests/results/results_structural.py | 256 + .../statespace/tests/results/results_var_R.py | 118 + .../tests/results/results_var_R_output.csv | 12 + .../tests/results/results_var_misc.py | 146 + .../tests/results/results_var_stata.csv | 93 + .../tests/results/results_varmax.py | 234 + .../tests/results/results_varmax_stata.csv | 450 + .../results/results_wpi1_ar3_matlab_ssm.csv | 123 + .../tests/results/results_wpi1_ar3_stata.csv | 1 + .../results_wpi1_missing_ar3_matlab_ssm.csv | 123 + .../tests/results/test_clark1989_r.R | 98 + .../results/test_dynamic_factor_stata.do | 149 + .../results/test_exact_diffuse_filtering.R | 147 + ...est_exact_diffuse_filtering_multivariate.R | 50 + .../test_exact_diffuse_filtering_stata.do | 143 + .../tests/results/test_intercepts.R | 70 + .../tests/results/test_realgdpar_r.R | 51 + .../tests/results/test_realgdpar_stata.do | 70 + .../tests/results/test_sarimax_coverage.do | 273 + .../tests/results/test_sarimax_stata.do | 56 + .../tests/results/test_simulation_smoothing.R | 238 + .../statespace/tests/results/test_smoothing.R | 53 + .../tests/results/test_smoothing2.R | 70 + .../tests/results/test_smoothing3.R | 66 + .../results/test_smoothing_generalobscov.R | 68 + .../tsa/statespace/tests/results/test_ucm.R | 145 + .../tsa/statespace/tests/results/test_var.R | 211 + .../tests/results/test_var_misc_stata.do | 31 + .../tests/results/test_varmax_stata.do | 148 + .../tests/results/test_wpi1_stata.do | 22 + .../tsa/statespace/tests/test_collapsed.py | 739 + .../tsa/statespace/tests/test_concentrated.py | 290 + .../statespace/tests/test_dynamic_factor.py | 783 + .../tests/test_exact_diffuse_filtering.py | 988 + .../tests/test_impulse_responses.py | 314 + .../statespace/tests/test_initialization.py | 401 + .../tsa/statespace/tests/test_kalman.py | 800 + .../tsa/statespace/tests/test_mlemodel.py | 1019 + .../tsa/statespace/tests/test_models.py | 319 + .../tsa/statespace/tests/test_options.py | 274 + .../tsa/statespace/tests/test_pickle.py | 152 + .../tsa/statespace/tests/test_prediction.py | 59 + .../statespace/tests/test_representation.py | 1378 + .../tsa/statespace/tests/test_sarimax.py | 2416 ++ statsmodels/tsa/statespace/tests/test_save.py | 138 + .../tsa/statespace/tests/test_simulate.py | 558 + .../tests/test_simulation_smoothing.py | 668 + .../tsa/statespace/tests/test_smoothing.py | 1031 + .../tsa/statespace/tests/test_structural.py | 458 + .../tsa/statespace/tests/test_tools.py | 972 + .../tsa/statespace/tests/test_univariate.py | 743 + statsmodels/tsa/statespace/tests/test_var.py | 265 + .../tsa/statespace/tests/test_varmax.py | 938 + statsmodels/tsa/statespace/tools.py | 1842 ++ statsmodels/tsa/statespace/varmax.py | 1022 + statsmodels/tsa/stattools.py | 1759 ++ statsmodels/tsa/tests/__init__.py | 0 statsmodels/tsa/tests/arima.do | 190 + statsmodels/tsa/tests/arima112.do | 185 + statsmodels/tsa/tests/arima211.do | 184 + .../tests/results/ARMLEConstantPredict.csv | 334 + .../tests/results/AROLSConstantPredict.csv | 416 + .../tests/results/AROLSNoConstantPredict.csv | 416 + statsmodels/tsa/tests/results/__init__.py | 0 statsmodels/tsa/tests/results/arima.R | 21 + .../tsa/tests/results/arima111_css_results.py | 1305 + .../tsa/tests/results/arima111_forecasts.csv | 224 + .../tsa/tests/results/arima111_results.py | 1305 + .../tests/results/arima111nc_css_results.py | 1297 + .../tsa/tests/results/arima111nc_results.py | 1297 + .../tsa/tests/results/arima112_css_results.py | 1315 + .../tsa/tests/results/arima112_results.py | 1315 + .../tests/results/arima112nc_css_results.py | 1305 + .../tsa/tests/results/arima112nc_results.py | 1099 + .../tsa/tests/results/arima211_css_results.py | 1315 + .../tsa/tests/results/arima211_results.py | 1315 + .../tests/results/arima211nc_css_results.py | 1305 + .../tsa/tests/results/arima211nc_results.py | 1099 + .../tsa/tests/results/arima212_forecast.csv | 224 + .../tsa/tests/results/arima_forecast.inp | 26 + .../tsa/tests/results/arma_forecast.inp | 32 + statsmodels/tsa/tests/results/bds_data.csv | 265 + statsmodels/tsa/tests/results/bds_results.csv | 20 + statsmodels/tsa/tests/results/corrgram.do | 16 + statsmodels/tsa/tests/results/datamlw_tls.py | 392 + .../tsa/tests/results/housing-data.csv | 715 + statsmodels/tsa/tests/results/lutkepohl2.dta | Bin 0 -> 6000 bytes statsmodels/tsa/tests/results/make_arma.py | 46 + .../tsa/tests/results/resids_css_c.csv | 251 + .../tsa/tests/results/resids_css_nc.csv | 251 + .../tsa/tests/results/resids_exact_c.csv | 251 + .../tsa/tests/results/resids_exact_nc.csv | 251 + statsmodels/tsa/tests/results/results_ar.py | 218 + .../results_ar_forecast_mle_dynamic.csv | 335 + .../tsa/tests/results/results_arima.py | 448 + .../results_arima_exog_forecasts_css.csv | 127 + .../results_arima_exog_forecasts_mle.csv | 126 + .../tests/results/results_arima_forecasts.csv | 65 + .../results_arima_forecasts_all_css.csv | 231 + .../results_arima_forecasts_all_css_diff.csv | 229 + .../results_arima_forecasts_all_mle.csv | 229 + .../results_arima_forecasts_all_mle_diff.csv | 229 + statsmodels/tsa/tests/results/results_arma.py | 818 + .../tsa/tests/results/results_arma_acf.py | 49 + .../tests/results/results_arma_forecasts.csv | 11 + .../tsa/tests/results/results_corrgram.csv | 41 + .../tsa/tests/results/results_process.py | 52 + statsmodels/tsa/tests/results/savedrvs.py | 317 + statsmodels/tsa/tests/results/test_arma_acf.R | 41 + statsmodels/tsa/tests/results/test_bds.m | 43 + statsmodels/tsa/tests/results/y_arma_data.csv | 251 + statsmodels/tsa/tests/results/yhat_css_c.csv | 251 + statsmodels/tsa/tests/results/yhat_css_nc.csv | 251 + .../tsa/tests/results/yhat_exact_c.csv | 251 + .../tsa/tests/results/yhat_exact_nc.csv | 251 + statsmodels/tsa/tests/test_adfuller_lag.py | 49 + statsmodels/tsa/tests/test_ar.py | 379 + statsmodels/tsa/tests/test_arima.py | 2502 ++ statsmodels/tsa/tests/test_arima_process.py | 395 + statsmodels/tsa/tests/test_bds.py | 107 + statsmodels/tsa/tests/test_holtwinters.py | 517 + statsmodels/tsa/tests/test_seasonal.py | 295 + statsmodels/tsa/tests/test_stattools.py | 930 + statsmodels/tsa/tests/test_tsa_tools.py | 668 + statsmodels/tsa/tests/test_x13.py | 51 + statsmodels/tsa/tsatools.py | 801 + statsmodels/tsa/varma_process.py | 716 + statsmodels/tsa/vector_ar/__init__.py | 3 + statsmodels/tsa/vector_ar/api.py | 5 + statsmodels/tsa/vector_ar/dynamic.py | 479 + .../tsa/vector_ar/hypothesis_test_results.py | 200 + statsmodels/tsa/vector_ar/irf.py | 698 + statsmodels/tsa/vector_ar/output.py | 247 + statsmodels/tsa/vector_ar/plotting.py | 276 + statsmodels/tsa/vector_ar/svar_model.py | 720 + .../tests/JMulTi_results/__init__.py | 0 .../JMulTi_results/macrodata_jmulti_c.txt | 89 + .../macrodata_jmulti_c_Sigmau.txt | 20 + .../macrodata_jmulti_c_diag.txt | 65 + .../JMulTi_results/macrodata_jmulti_c_fc5.txt | 31 + ...ta_jmulti_c_granger_causality_realcons.txt | 13 + ...i_c_granger_causality_realcons_realgdp.txt | 13 + ...i_c_granger_causality_realcons_realinv.txt | 13 + ...ata_jmulti_c_granger_causality_realgdp.txt | 13 + ...ti_c_granger_causality_realgdp_realinv.txt | 13 + ...ata_jmulti_c_granger_causality_realinv.txt | 13 + .../JMulTi_results/macrodata_jmulti_c_ir.txt | 29 + .../macrodata_jmulti_c_lagorder.txt | 13 + .../JMulTi_results/macrodata_jmulti_cs.txt | 101 + .../macrodata_jmulti_cs_Sigmau.txt | 20 + .../macrodata_jmulti_cs_diag.txt | 65 + .../macrodata_jmulti_cs_fc5.txt | 31 + ...a_jmulti_cs_granger_causality_realcons.txt | 13 + ..._cs_granger_causality_realcons_realgdp.txt | 13 + ..._cs_granger_causality_realcons_realinv.txt | 13 + ...ta_jmulti_cs_granger_causality_realgdp.txt | 13 + ...i_cs_granger_causality_realgdp_realinv.txt | 13 + ...ta_jmulti_cs_granger_causality_realinv.txt | 13 + .../JMulTi_results/macrodata_jmulti_cs_ir.txt | 29 + .../macrodata_jmulti_cs_lagorder.txt | 13 + .../JMulTi_results/macrodata_jmulti_cst.txt | 105 + .../macrodata_jmulti_cst_Sigmau.txt | 20 + .../macrodata_jmulti_cst_diag.txt | 65 + .../macrodata_jmulti_cst_fc5.txt | 31 + ..._jmulti_cst_granger_causality_realcons.txt | 13 + ...cst_granger_causality_realcons_realgdp.txt | 13 + ...cst_granger_causality_realcons_realinv.txt | 13 + ...a_jmulti_cst_granger_causality_realgdp.txt | 13 + ..._cst_granger_causality_realgdp_realinv.txt | 13 + ...a_jmulti_cst_granger_causality_realinv.txt | 13 + .../macrodata_jmulti_cst_ir.txt | 29 + .../macrodata_jmulti_cst_lagorder.txt | 13 + .../JMulTi_results/macrodata_jmulti_ct.txt | 93 + .../macrodata_jmulti_ct_Sigmau.txt | 20 + .../macrodata_jmulti_ct_diag.txt | 65 + .../macrodata_jmulti_ct_fc5.txt | 31 + ...a_jmulti_ct_granger_causality_realcons.txt | 13 + ..._ct_granger_causality_realcons_realgdp.txt | 13 + ..._ct_granger_causality_realcons_realinv.txt | 13 + ...ta_jmulti_ct_granger_causality_realgdp.txt | 13 + ...i_ct_granger_causality_realgdp_realinv.txt | 13 + ...ta_jmulti_ct_granger_causality_realinv.txt | 13 + .../JMulTi_results/macrodata_jmulti_ct_ir.txt | 29 + .../macrodata_jmulti_ct_lagorder.txt | 13 + .../JMulTi_results/macrodata_jmulti_nc.txt | 80 + .../macrodata_jmulti_nc_Sigmau.txt | 20 + .../macrodata_jmulti_nc_diag.txt | 65 + .../macrodata_jmulti_nc_fc5.txt | 31 + ...a_jmulti_nc_granger_causality_realcons.txt | 13 + ..._nc_granger_causality_realcons_realgdp.txt | 13 + ..._nc_granger_causality_realcons_realinv.txt | 13 + ...ta_jmulti_nc_granger_causality_realgdp.txt | 13 + ...i_nc_granger_causality_realgdp_realinv.txt | 13 + ...ta_jmulti_nc_granger_causality_realinv.txt | 13 + .../JMulTi_results/macrodata_jmulti_nc_ir.txt | 29 + .../macrodata_jmulti_nc_lagorder.txt | 12 + .../JMulTi_results/macrodata_jmulti_ncs.txt | 97 + .../macrodata_jmulti_ncs_Sigmau.txt | 20 + .../macrodata_jmulti_ncs_diag.txt | 65 + .../macrodata_jmulti_ncs_fc5.txt | 31 + ..._jmulti_ncs_granger_causality_realcons.txt | 13 + ...ncs_granger_causality_realcons_realgdp.txt | 13 + ...ncs_granger_causality_realcons_realinv.txt | 13 + ...a_jmulti_ncs_granger_causality_realgdp.txt | 13 + ..._ncs_granger_causality_realgdp_realinv.txt | 13 + ...a_jmulti_ncs_granger_causality_realinv.txt | 13 + .../macrodata_jmulti_ncs_ir.txt | 29 + .../macrodata_jmulti_ncs_lagorder.txt | 13 + .../JMulTi_results/parse_jmulti_var_output.py | 415 + .../parse_jmulti_vecm_output.py | 535 + .../JMulTi_results/vecm_e6_jmulti_ci.txt | 141 + .../vecm_e6_jmulti_ci_Sigmau.txt | 14 + .../JMulTi_results/vecm_e6_jmulti_ci_diag.txt | 59 + .../JMulTi_results/vecm_e6_jmulti_ci_fc5.txt | 23 + ...cm_e6_jmulti_ci_granger_causality_dp_r.txt | 13 + ...cm_e6_jmulti_ci_granger_causality_r_dp.txt | 13 + .../vecm_e6_jmulti_ci_inst_causality_dp_r.txt | 13 + .../vecm_e6_jmulti_ci_inst_causality_r_dp.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_ci_ir.txt | 29 + .../vecm_e6_jmulti_ci_lagorder.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_cili.txt | 149 + .../vecm_e6_jmulti_cili_Sigmau.txt | 14 + .../vecm_e6_jmulti_cili_diag.txt | 59 + .../vecm_e6_jmulti_cili_fc5.txt | 23 + ..._e6_jmulti_cili_granger_causality_dp_r.txt | 13 + ..._e6_jmulti_cili_granger_causality_r_dp.txt | 13 + ...ecm_e6_jmulti_cili_inst_causality_dp_r.txt | 13 + ...ecm_e6_jmulti_cili_inst_causality_r_dp.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_cili_ir.txt | 29 + .../vecm_e6_jmulti_cili_lagorder.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_cis.txt | 170 + .../vecm_e6_jmulti_cis_Sigmau.txt | 14 + .../vecm_e6_jmulti_cis_diag.txt | 59 + .../JMulTi_results/vecm_e6_jmulti_cis_fc5.txt | 23 + ...m_e6_jmulti_cis_granger_causality_dp_r.txt | 13 + ...m_e6_jmulti_cis_granger_causality_r_dp.txt | 13 + ...vecm_e6_jmulti_cis_inst_causality_dp_r.txt | 13 + ...vecm_e6_jmulti_cis_inst_causality_r_dp.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_cis_ir.txt | 29 + .../vecm_e6_jmulti_cis_lagorder.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_cisli.txt | 178 + .../vecm_e6_jmulti_cisli_Sigmau.txt | 14 + .../vecm_e6_jmulti_cisli_diag.txt | 59 + .../vecm_e6_jmulti_cisli_fc5.txt | 23 + ...e6_jmulti_cisli_granger_causality_dp_r.txt | 13 + ...e6_jmulti_cisli_granger_causality_r_dp.txt | 13 + ...cm_e6_jmulti_cisli_inst_causality_dp_r.txt | 13 + ...cm_e6_jmulti_cisli_inst_causality_r_dp.txt | 13 + .../vecm_e6_jmulti_cisli_ir.txt | 29 + .../vecm_e6_jmulti_cisli_lagorder.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_co.txt | 146 + .../vecm_e6_jmulti_co_Sigmau.txt | 14 + .../JMulTi_results/vecm_e6_jmulti_co_diag.txt | 59 + .../JMulTi_results/vecm_e6_jmulti_co_fc5.txt | 23 + ...cm_e6_jmulti_co_granger_causality_dp_r.txt | 13 + ...cm_e6_jmulti_co_granger_causality_r_dp.txt | 13 + .../vecm_e6_jmulti_co_inst_causality_dp_r.txt | 13 + .../vecm_e6_jmulti_co_inst_causality_r_dp.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_co_ir.txt | 29 + .../vecm_e6_jmulti_co_lagorder.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_colo.txt | 154 + .../vecm_e6_jmulti_colo_Sigmau.txt | 14 + .../vecm_e6_jmulti_colo_diag.txt | 59 + .../vecm_e6_jmulti_colo_fc5.txt | 23 + ..._e6_jmulti_colo_granger_causality_dp_r.txt | 13 + ..._e6_jmulti_colo_granger_causality_r_dp.txt | 13 + ...ecm_e6_jmulti_colo_inst_causality_dp_r.txt | 13 + ...ecm_e6_jmulti_colo_inst_causality_r_dp.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_colo_ir.txt | 29 + .../vecm_e6_jmulti_colo_lagorder.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_cos.txt | 170 + .../vecm_e6_jmulti_cos_Sigmau.txt | 14 + .../vecm_e6_jmulti_cos_diag.txt | 59 + .../JMulTi_results/vecm_e6_jmulti_cos_fc5.txt | 23 + ...m_e6_jmulti_cos_granger_causality_dp_r.txt | 13 + ...m_e6_jmulti_cos_granger_causality_r_dp.txt | 13 + ...vecm_e6_jmulti_cos_inst_causality_dp_r.txt | 13 + ...vecm_e6_jmulti_cos_inst_causality_r_dp.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_cos_ir.txt | 29 + .../vecm_e6_jmulti_cos_lagorder.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_coslo.txt | 178 + .../vecm_e6_jmulti_coslo_Sigmau.txt | 14 + .../vecm_e6_jmulti_coslo_diag.txt | 59 + .../vecm_e6_jmulti_coslo_fc5.txt | 23 + ...e6_jmulti_coslo_granger_causality_dp_r.txt | 13 + ...e6_jmulti_coslo_granger_causality_r_dp.txt | 13 + ...cm_e6_jmulti_coslo_inst_causality_dp_r.txt | 13 + ...cm_e6_jmulti_coslo_inst_causality_r_dp.txt | 13 + .../vecm_e6_jmulti_coslo_ir.txt | 29 + .../vecm_e6_jmulti_coslo_lagorder.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_nc.txt | 128 + .../vecm_e6_jmulti_nc_Sigmau.txt | 14 + .../JMulTi_results/vecm_e6_jmulti_nc_diag.txt | 59 + .../JMulTi_results/vecm_e6_jmulti_nc_fc5.txt | 23 + ...cm_e6_jmulti_nc_granger_causality_dp_r.txt | 13 + ...cm_e6_jmulti_nc_granger_causality_r_dp.txt | 13 + .../vecm_e6_jmulti_nc_inst_causality_dp_r.txt | 13 + .../vecm_e6_jmulti_nc_inst_causality_r_dp.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_nc_ir.txt | 29 + .../vecm_e6_jmulti_nc_lagorder.txt | 12 + .../JMulTi_results/vecm_e6_jmulti_ncs.txt | 162 + .../vecm_e6_jmulti_ncs_Sigmau.txt | 14 + .../vecm_e6_jmulti_ncs_diag.txt | 59 + .../JMulTi_results/vecm_e6_jmulti_ncs_fc5.txt | 23 + ...m_e6_jmulti_ncs_granger_causality_dp_r.txt | 13 + ...m_e6_jmulti_ncs_granger_causality_r_dp.txt | 13 + ...vecm_e6_jmulti_ncs_inst_causality_dp_r.txt | 13 + ...vecm_e6_jmulti_ncs_inst_causality_r_dp.txt | 13 + .../JMulTi_results/vecm_e6_jmulti_ncs_ir.txt | 29 + .../vecm_e6_jmulti_ncs_lagorder.txt | 13 + .../tests/Matlab_results/__init__.py | 0 .../tests/Matlab_results/test_coint.csv | 173 + statsmodels/tsa/vector_ar/tests/__init__.py | 0 .../tsa/vector_ar/tests/example_svar.py | 26 + .../tsa/vector_ar/tests/results/__init__.py | 0 .../tsa/vector_ar/tests/results/e1.dat | 99 + .../tsa/vector_ar/tests/results/e2.dat | 113 + .../tsa/vector_ar/tests/results/e3.dat | 146 + .../tsa/vector_ar/tests/results/e4.dat | 121 + .../tsa/vector_ar/tests/results/e5.dat | 345 + .../tsa/vector_ar/tests/results/e6.dat | 118 + .../vector_ar/tests/results/results_svar.py | 15 + .../tests/results/results_svar_st.py | 806 + .../vector_ar/tests/results/results_var.py | 67 + .../tests/results/results_var_data.py | 132 + .../vector_ar/tests/results/vars_results.npz | Bin 0 -> 5696 bytes statsmodels/tsa/vector_ar/tests/svar.do | 19 + statsmodels/tsa/vector_ar/tests/svartest.R | 22 + statsmodels/tsa/vector_ar/tests/test_coint.py | 153 + .../tsa/vector_ar/tests/test_dynamic.py | 67 + statsmodels/tsa/vector_ar/tests/test_svar.py | 76 + statsmodels/tsa/vector_ar/tests/test_var.py | 792 + .../tsa/vector_ar/tests/test_var_jmulti.py | 544 + statsmodels/tsa/vector_ar/tests/test_vecm.py | 1412 + statsmodels/tsa/vector_ar/tests/var.R | 97 + statsmodels/tsa/vector_ar/util.py | 324 + statsmodels/tsa/vector_ar/var_model.py | 2322 ++ statsmodels/tsa/vector_ar/vecm.py | 2235 ++ statsmodels/tsa/x13.py | 611 + tools/R2nparray/DESCRIPTION | 13 + tools/R2nparray/NAMESPACE | 1 + tools/R2nparray/R/R2nparray-package.R | 5 + tools/R2nparray/R/R2nparray.R | 227 + tools/R2nparray/R/ex_sur.R | 47 + tools/R2nparray/README.txt | 35 + tools/README.rst | 4 + tools/backport_pr.py | 179 + tools/binstar/README.md | 27 + tools/binstar/binstar_unix.sh | 26 + tools/binstar/binstar_windows.bat | 37 + tools/binstar/bld.bat | 1 + tools/binstar/build.sh | 3 + tools/binstar/meta.yaml | 35 + tools/binstar/python2_setup.bat | 9 + tools/binstar/python3_setup.bat | 6 + tools/check_dirs.py | 23 + tools/ci/appveyor_conda.bat | 12 + tools/ci/appveyor_pip.bat | 8 + tools/ci/azure_template.yml | 79 + tools/ci/docbuild.sh | 42 + tools/ci/docbuild_install.sh | 14 + tools/ci/run_test.bat | 20 + tools/ci/travis_conda.sh | 26 + tools/ci/travis_pip.sh | 41 + tools/code_maintenance.py | 85 + tools/dataset_rst.py | 71 + tools/estmat2nparray.ado | 138 + tools/examples_rst.py | 164 + tools/export_notebooks_to_python.py | 137 + tools/fold_toc.py | 58 + tools/generate_formula_api.py | 78 + tools/gh_api.py | 311 + tools/github_stats.py | 216 + tools/hash_funcs.py | 53 + tools/km_cox1.do | 78 + tools/matplotlibrc.qt4 | 385 + tools/matplotlibrc.qt5 | 510 + tools/nbgenerate.py | 228 + tools/notebook2python.tpl | 46 + tools/notebook_output_template.py | 48 + tools/update_web.py | 369 + tox.ini | 68 + versioneer.py | 1822 ++ 1801 files changed, 670851 insertions(+) create mode 100644 .codacy.yml create mode 100644 .codecov.yml create mode 100644 .gitattributes create mode 100644 .github/ISSUE_TEMPLATE/bug_report.md create mode 100644 .github/ISSUE_TEMPLATE/feature_request.md create mode 100644 .github/PULL_REQUEST_TEMPLATE.md create mode 100644 .gitignore create mode 100644 .mailmap create mode 100644 .travis.yml create mode 100644 CHANGES.md create mode 100644 CONTRIBUTING.rst create mode 100644 COPYRIGHTS.txt create mode 100644 INSTALL.txt create mode 100644 LICENSE.txt create mode 100644 MANIFEST.in create mode 100644 README.rst create mode 100644 README_l1.txt create mode 100644 appveyor.yml create mode 100644 azure-pipelines.yml create mode 100644 docs/GLMNotes.lyx create mode 100644 docs/GLMNotes.pdf create mode 100644 docs/Makefile create mode 100644 docs/README.md create mode 100644 docs/fix_longtable.py create mode 100644 docs/make.bat create mode 100644 docs/source/_static/blogger.png create mode 100644 docs/source/_static/blogger_sm.png create mode 100644 docs/source/_static/bullet.gif create mode 100644 docs/source/_static/closelabel.png create mode 100644 docs/source/_static/examples.css create mode 100644 docs/source/_static/facebox.css create mode 100644 docs/source/_static/facebox.js create mode 100644 docs/source/_static/gettingstarted_0.png create mode 100644 docs/source/_static/images/anova.png create mode 100644 docs/source/_static/images/categorical_interaction_plot.png create mode 100755 docs/source/_static/images/chi2_fitting.png create mode 100644 docs/source/_static/images/contrasts.png create mode 100644 docs/source/_static/images/discrete_overview.png create mode 100755 docs/source/_static/images/distributed_estimation.png create mode 100755 docs/source/_static/images/exponential_smoothing.png create mode 100644 docs/source/_static/images/fairs_data.png create mode 100644 docs/source/_static/images/formulas_intro.png create mode 100644 docs/source/_static/images/generic_mle.png create mode 100644 docs/source/_static/images/glm_formulas.png create mode 100644 docs/source/_static/images/glm_overview.png create mode 100644 docs/source/_static/images/glm_weights.png create mode 100644 docs/source/_static/images/gls.png create mode 100755 docs/source/_static/images/influence_glm_logit.png create mode 100644 docs/source/_static/images/kde_overview.png create mode 100644 docs/source/_static/images/markov_autoregression.png create mode 100644 docs/source/_static/images/markov_regression.png create mode 100644 docs/source/_static/images/mixed_lm.png create mode 100644 docs/source/_static/images/ols.png create mode 100755 docs/source/_static/images/pca_fertility_factors.png create mode 100755 docs/source/_static/images/plots_boxplots.png create mode 100644 docs/source/_static/images/prediction.png create mode 100644 docs/source/_static/images/quantile_regression.png create mode 100644 docs/source/_static/images/recursive_ls.png create mode 100644 docs/source/_static/images/regression_diagnostics.png create mode 100644 docs/source/_static/images/regression_plots.png create mode 100644 docs/source/_static/images/rlm.png create mode 100644 docs/source/_static/images/rlm_overview.png create mode 100644 docs/source/_static/images/statespace_arma0.png create mode 100644 docs/source/_static/images/statespace_concentrated_scale.png create mode 100644 docs/source/_static/images/statespace_cycles.png create mode 100644 docs/source/_static/images/statespace_dfm_coincident.png create mode 100644 docs/source/_static/images/statespace_local_linear_trend.png create mode 100644 docs/source/_static/images/statespace_sarimax_internet.png create mode 100644 docs/source/_static/images/statespace_sarimax_stata.png create mode 100755 docs/source/_static/images/statespace_seasonal.png create mode 100644 docs/source/_static/images/statespace_structural_harvey_jaeger.png create mode 100644 docs/source/_static/images/statespace_varmax.png create mode 100644 docs/source/_static/images/tsa_arma0.png create mode 100644 docs/source/_static/images/tsa_arma1.png create mode 100644 docs/source/_static/images/tsa_dates.png create mode 100644 docs/source/_static/images/tsa_filters.png create mode 100644 docs/source/_static/images/wls.png create mode 100644 docs/source/_static/ipython.min.css create mode 100644 docs/source/_static/loading.gif create mode 100644 docs/source/_static/minus.gif create mode 100644 docs/source/_static/mktree.css create mode 100644 docs/source/_static/mktree.js create mode 100644 docs/source/_static/nbviewer.pygments.css create mode 100644 docs/source/_static/plus.gif create mode 100644 docs/source/_static/scripts.js create mode 100644 docs/source/_templates/autosummary/attribute.rst create mode 100644 docs/source/_templates/autosummary/class.rst create mode 100644 docs/source/_templates/autosummary/member.rst create mode 100644 docs/source/_templates/autosummary/method.rst create mode 100644 docs/source/_templates/autosummary/minimal_module.rst create mode 100644 docs/source/about.rst create mode 100644 docs/source/anova.rst create mode 100644 docs/source/conf.py create mode 100644 docs/source/contingency_tables.rst create mode 100644 docs/source/contrasts.rst create mode 100644 docs/source/datasets/dataset_proposal.rst create mode 100644 docs/source/datasets/index.rst create mode 100644 docs/source/dev/dataset_notes.rst create mode 100644 docs/source/dev/examples.rst create mode 100644 docs/source/dev/get_involved.rst create mode 100644 docs/source/dev/git_notes.rst create mode 100644 docs/source/dev/images/git_merge.png create mode 100644 docs/source/dev/index.rst create mode 100644 docs/source/dev/internal.rst create mode 100644 docs/source/dev/maintainer_notes.rst create mode 100644 docs/source/dev/naming_conventions.rst create mode 100644 docs/source/dev/test_notes.rst create mode 100644 docs/source/dev/testing.rst create mode 100644 docs/source/diagnostic.rst create mode 100644 docs/source/discretemod.rst create mode 100644 docs/source/distributions.rst create mode 100644 docs/source/duration.rst create mode 100644 docs/source/emplike.rst create mode 100644 docs/source/endog_exog.rst create mode 100644 docs/source/example_formulas.rst create mode 100644 docs/source/examples/README create mode 100644 docs/source/examples/index.rst create mode 100644 docs/source/examples/landing.json create mode 100644 docs/source/extending.rst.TXT create mode 100644 docs/source/faq.rst create mode 100644 docs/source/gam.rst create mode 100644 docs/source/gee.rst create mode 100644 docs/source/genericmle.rst.TXT create mode 100644 docs/source/gettingstarted.rst create mode 100644 docs/source/glm.rst create mode 100644 docs/source/glm_techn1.rst.TXT create mode 100644 docs/source/glm_techn2.rst.TXT create mode 100644 docs/source/gmm.rst create mode 100644 docs/source/gmm_techn1.rst.TXT create mode 100644 docs/source/graphics.rst create mode 100644 docs/source/images/aw.png create mode 100644 docs/source/images/hl.png create mode 100644 docs/source/images/ht.png create mode 100644 docs/source/images/ls.png create mode 100644 docs/source/images/re.png create mode 100644 docs/source/images/statsmodels_hybi_banner.png create mode 100644 docs/source/images/statsmodels_hybi_banner.svg create mode 100644 docs/source/images/statsmodels_hybi_favico.ico create mode 100644 docs/source/images/tk.png create mode 100644 docs/source/images/tm.png create mode 100644 docs/source/importpaths.rst create mode 100644 docs/source/imputation.rst create mode 100644 docs/source/index.rst create mode 100644 docs/source/install.rst create mode 100644 docs/source/iolib.rst create mode 100644 docs/source/large_data.rst create mode 100644 docs/source/miscmodels.rst create mode 100644 docs/source/missing.rst create mode 100644 docs/source/mixed_glm.rst create mode 100644 docs/source/mixed_linear.rst create mode 100644 docs/source/multivariate.rst create mode 100644 docs/source/nonparametric.rst create mode 100644 docs/source/optimization.rst create mode 100644 docs/source/pitfalls.rst create mode 100644 docs/source/plots/arma_predict_plot.py create mode 100644 docs/source/plots/bkf_plot.py create mode 100644 docs/source/plots/cff_plot.py create mode 100644 docs/source/plots/graphics-mean_diff_plot.py create mode 100644 docs/source/plots/graphics_boxplot_beanplot.py create mode 100644 docs/source/plots/graphics_boxplot_violinplot.py create mode 100644 docs/source/plots/graphics_correlation_plot_corr.py create mode 100644 docs/source/plots/graphics_correlation_plot_corr_grid.py create mode 100644 docs/source/plots/graphics_functional_fboxplot.py create mode 100644 docs/source/plots/graphics_functional_hdrboxplot.py create mode 100644 docs/source/plots/graphics_functional_rainbowplot.py create mode 100644 docs/source/plots/graphics_gofplots_qqplot.py create mode 100644 docs/source/plots/graphics_gofplots_qqplot_2samples.py create mode 100644 docs/source/plots/graphics_gofplots_qqplot_qqline.py create mode 100644 docs/source/plots/graphics_mosaicplot_mosaic.py create mode 100644 docs/source/plots/graphics_plot_fit_ex.py create mode 100644 docs/source/plots/graphics_plot_grids_scatter_ellipse.py create mode 100644 docs/source/plots/graphics_regression_abline.py create mode 100644 docs/source/plots/graphics_regression_ccpr.py create mode 100644 docs/source/plots/graphics_regression_ccpr_grid.py create mode 100644 docs/source/plots/graphics_regression_ceres_residuals.py create mode 100644 docs/source/plots/graphics_regression_influence.py create mode 100644 docs/source/plots/graphics_regression_leverage_resid2.py create mode 100644 docs/source/plots/graphics_regression_partregress.py create mode 100644 docs/source/plots/graphics_regression_partregress_grid.py create mode 100644 docs/source/plots/graphics_regression_regress_exog.py create mode 100644 docs/source/plots/graphics_tsa_month_plot.py create mode 100644 docs/source/plots/graphics_tsa_plot_acf.py create mode 100644 docs/source/plots/graphics_tsa_plot_pacf.py create mode 100644 docs/source/plots/graphics_tsa_quarter_plot.py create mode 100644 docs/source/plots/hpf_plot.py create mode 100644 docs/source/plots/load_macrodata.py create mode 100644 docs/source/plots/mice_example_1.txt create mode 100644 docs/source/plots/var_plot_acorr.py create mode 100644 docs/source/plots/var_plot_fevd.py create mode 100644 docs/source/plots/var_plot_forecast.py create mode 100644 docs/source/plots/var_plot_input.py create mode 100644 docs/source/plots/var_plot_irf.py create mode 100644 docs/source/plots/var_plot_irf_cum.py create mode 100644 docs/source/plots/var_plots.py create mode 100644 docs/source/regression.rst create mode 100644 docs/source/regression_techn1.rst.TXT create mode 100644 docs/source/release/index.rst create mode 100644 docs/source/release/old_changes.rst create mode 100644 docs/source/release/version0.10.1.rst create mode 100644 docs/source/release/version0.10.2.rst create mode 100644 docs/source/release/version0.10.rst create mode 100644 docs/source/release/version0.5.rst create mode 100644 docs/source/release/version0.6.rst create mode 100644 docs/source/release/version0.7.rst create mode 100644 docs/source/release/version0.8.rst create mode 100644 docs/source/release/version0.9.rst create mode 100644 docs/source/rlm.rst create mode 100644 docs/source/rlm_techn1.rst create mode 100644 docs/source/sandbox.rst create mode 100644 docs/source/statespace.rst create mode 100644 docs/source/stats.rst create mode 100644 docs/source/tools.rst create mode 100644 docs/source/tsa.rst create mode 100644 docs/source/tsastats.rst.TXT create mode 100644 docs/source/vector_ar.rst create mode 100644 docs/sphinxext/LICENSE.txt create mode 100644 docs/sphinxext/MANIFEST.in create mode 100644 docs/sphinxext/README.txt create mode 100644 docs/sphinxext/github.py create mode 100644 docs/themes/statsmodels/indexsidebar.html create mode 100644 docs/themes/statsmodels/layout.html create mode 100644 docs/themes/statsmodels/page.html create mode 100644 docs/themes/statsmodels/relations.html create mode 100644 docs/themes/statsmodels/sidelinks.html create mode 100644 docs/themes/statsmodels/static/nature.css_t create mode 100644 docs/themes/statsmodels/static/statsmodels_hybi_banner.png create mode 100644 docs/themes/statsmodels/theme.conf create mode 100644 examples/incomplete/arima.py create mode 100644 examples/incomplete/arma2.py create mode 100644 examples/incomplete/dates.py create mode 100644 examples/incomplete/glsar.py create mode 100644 examples/incomplete/ols_table.py create mode 100644 examples/incomplete/ols_tftest.py create mode 100644 examples/incomplete/wls_extended.py create mode 100644 examples/notebooks/categorical_interaction_plot.ipynb create mode 100644 examples/notebooks/chi2_fitting.ipynb create mode 100644 examples/notebooks/contrasts.ipynb create mode 100644 examples/notebooks/discrete_choice_example.ipynb create mode 100644 examples/notebooks/discrete_choice_overview.ipynb create mode 100644 examples/notebooks/distributed_estimation.ipynb create mode 100644 examples/notebooks/exponential_smoothing.ipynb create mode 100644 examples/notebooks/formulas.ipynb create mode 100644 examples/notebooks/generic_mle.ipynb create mode 100644 examples/notebooks/glm.ipynb create mode 100644 examples/notebooks/glm_formula.ipynb create mode 100644 examples/notebooks/glm_weights.ipynb create mode 100644 examples/notebooks/gls.ipynb create mode 100644 examples/notebooks/influence_glm_logit.ipynb create mode 100644 examples/notebooks/interactions_anova.ipynb create mode 100644 examples/notebooks/kernel_density.ipynb create mode 100644 examples/notebooks/markov_autoregression.ipynb create mode 100644 examples/notebooks/markov_regression.ipynb create mode 100644 examples/notebooks/mixed_lm_example.ipynb create mode 100644 examples/notebooks/ols.ipynb create mode 100644 examples/notebooks/pca_fertility_factors.ipynb create mode 100644 examples/notebooks/plots_boxplots.ipynb create mode 100644 examples/notebooks/predict.ipynb create mode 100644 examples/notebooks/quantile_regression.ipynb create mode 100644 examples/notebooks/recursive_ls.ipynb create mode 100644 examples/notebooks/regression_diagnostics.ipynb create mode 100644 examples/notebooks/regression_plots.ipynb create mode 100644 examples/notebooks/robust_models_0.ipynb create mode 100644 examples/notebooks/robust_models_1.ipynb create mode 100644 examples/notebooks/star_diagram.png create mode 100644 examples/notebooks/statespace_arma_0.ipynb create mode 100644 examples/notebooks/statespace_concentrated_scale.ipynb create mode 100644 examples/notebooks/statespace_cycles.ipynb create mode 100644 examples/notebooks/statespace_dfm_coincident.ipynb create mode 100644 examples/notebooks/statespace_local_linear_trend.ipynb create mode 100644 examples/notebooks/statespace_sarimax_internet.ipynb create mode 100644 examples/notebooks/statespace_sarimax_stata.ipynb create mode 100644 examples/notebooks/statespace_seasonal.ipynb create mode 100644 examples/notebooks/statespace_structural_harvey_jaeger.ipynb create mode 100644 examples/notebooks/statespace_varmax.ipynb create mode 100644 examples/notebooks/tsa_arma_0.ipynb create mode 100644 examples/notebooks/tsa_arma_1.ipynb create mode 100644 examples/notebooks/tsa_dates.ipynb create mode 100644 examples/notebooks/tsa_filters.ipynb create mode 100644 examples/notebooks/wls.ipynb create mode 100644 examples/python/categorical_interaction_plot.py create mode 100644 examples/python/chi2_fitting.py create mode 100644 examples/python/contrasts.py create mode 100644 examples/python/discrete_choice_example.py create mode 100644 examples/python/discrete_choice_overview.py create mode 100644 examples/python/distributed_estimation.py create mode 100644 examples/python/exponential_smoothing.py create mode 100644 examples/python/formulas.py create mode 100644 examples/python/generic_mle.py create mode 100644 examples/python/glm.py create mode 100644 examples/python/glm_formula.py create mode 100644 examples/python/glm_weights.py create mode 100644 examples/python/gls.py create mode 100644 examples/python/influence_glm_logit.py create mode 100644 examples/python/interactions_anova.py create mode 100644 examples/python/kernel_density.py create mode 100644 examples/python/markov_autoregression.py create mode 100644 examples/python/markov_regression.py create mode 100644 examples/python/mixed_lm_example.py create mode 100644 examples/python/ols.py create mode 100644 examples/python/pca_fertility_factors.py create mode 100644 examples/python/plots_boxplots.py create mode 100644 examples/python/predict.py create mode 100644 examples/python/quantile_regression.py create mode 100644 examples/python/recursive_ls.py create mode 100644 examples/python/regression_diagnostics.py create mode 100644 examples/python/regression_plots.py create mode 100644 examples/python/robust_models_0.py create mode 100644 examples/python/robust_models_1.py create mode 100644 examples/python/statespace_arma_0.py create mode 100644 examples/python/statespace_concentrated_scale.py create mode 100644 examples/python/statespace_cycles.py create mode 100644 examples/python/statespace_dfm_coincident.py create mode 100644 examples/python/statespace_local_linear_trend.py create mode 100644 examples/python/statespace_sarimax_internet.py create mode 100644 examples/python/statespace_sarimax_stata.py create mode 100644 examples/python/statespace_seasonal.py create mode 100644 examples/python/statespace_structural_harvey_jaeger.py create mode 100644 examples/python/statespace_varmax.py create mode 100644 examples/python/tsa_arma_0.py create mode 100644 examples/python/tsa_arma_1.py create mode 100644 examples/python/tsa_dates.py create mode 100644 examples/python/tsa_filters.py create mode 100644 examples/python/wls.py create mode 100644 examples/run_all.py create mode 100644 github_deploy_key_statsmodels_statsmodels_github_io.enc create mode 100755 lint.sh create mode 100644 requirements-dev.txt create mode 100644 requirements.txt create mode 100644 setup.cfg create mode 100644 setup.py create mode 100644 statsmodels/__init__.py create mode 100644 statsmodels/_version.py create mode 100644 statsmodels/api.py create mode 100644 statsmodels/base/__init__.py create mode 100644 statsmodels/base/_constraints.py create mode 100644 statsmodels/base/_parameter_inference.py create mode 100644 statsmodels/base/_penalized.py create mode 100644 statsmodels/base/_penalties.py create mode 100644 statsmodels/base/_screening.py create mode 100644 statsmodels/base/covtype.py create mode 100644 statsmodels/base/data.py create mode 100644 statsmodels/base/distributed_estimation.py create mode 100644 statsmodels/base/elastic_net.py create mode 100644 statsmodels/base/l1_cvxopt.py create mode 100644 statsmodels/base/l1_slsqp.py create mode 100644 statsmodels/base/l1_solvers_common.py create mode 100644 statsmodels/base/model.py create mode 100644 statsmodels/base/optimizer.py create mode 100644 statsmodels/base/tests/__init__.py create mode 100644 statsmodels/base/tests/test_data.py create mode 100644 statsmodels/base/tests/test_distributed_estimation.py create mode 100644 statsmodels/base/tests/test_generic_methods.py create mode 100644 statsmodels/base/tests/test_optimize.py create mode 100644 statsmodels/base/tests/test_penalized.py create mode 100644 statsmodels/base/tests/test_penalties.py create mode 100644 statsmodels/base/tests/test_predict.py create mode 100644 statsmodels/base/tests/test_screening.py create mode 100644 statsmodels/base/tests/test_shrink_pickle.py create mode 100644 statsmodels/base/tests/test_transform.py create mode 100644 statsmodels/base/transform.py create mode 100644 statsmodels/base/wrapper.py create mode 100644 statsmodels/compat/__init__.py create mode 100644 statsmodels/compat/numpy.py create mode 100644 statsmodels/compat/pandas.py create mode 100644 statsmodels/compat/platform.py create mode 100644 statsmodels/compat/python.py create mode 100644 statsmodels/compat/scipy.py create mode 100644 statsmodels/compat/tests/__init__.py create mode 100644 statsmodels/compat/tests/test_itercompat.py create mode 100644 statsmodels/compat/tests/test_scipy_compat.py create mode 100644 statsmodels/conftest.py create mode 100644 statsmodels/datasets/COPYING create mode 100644 statsmodels/datasets/README.txt create mode 100644 statsmodels/datasets/__init__.py create mode 100644 statsmodels/datasets/anes96/__init__.py create mode 100644 statsmodels/datasets/anes96/anes96.csv create mode 100644 statsmodels/datasets/anes96/data.py create mode 100644 statsmodels/datasets/anes96/src/anes96.csv create mode 100644 statsmodels/datasets/cancer/__init__.py create mode 100644 statsmodels/datasets/cancer/cancer.csv create mode 100644 statsmodels/datasets/cancer/data.py create mode 100644 statsmodels/datasets/ccard/R_wls.s create mode 100644 statsmodels/datasets/ccard/__init__.py create mode 100644 statsmodels/datasets/ccard/ccard.csv create mode 100644 statsmodels/datasets/ccard/data.py create mode 100644 statsmodels/datasets/ccard/src/ccard.csv create mode 100644 statsmodels/datasets/ccard/src/names.txt create mode 100644 statsmodels/datasets/china_smoking/__init__.py create mode 100644 statsmodels/datasets/china_smoking/china_smoking.csv create mode 100644 statsmodels/datasets/china_smoking/data.py create mode 100644 statsmodels/datasets/co2/__init__.py create mode 100644 statsmodels/datasets/co2/co2.csv create mode 100644 statsmodels/datasets/co2/data.py create mode 100644 statsmodels/datasets/co2/src/maunaloa_c.dat create mode 100644 statsmodels/datasets/committee/R_committee.s create mode 100644 statsmodels/datasets/committee/__init__.py create mode 100644 statsmodels/datasets/committee/committee.csv create mode 100644 statsmodels/datasets/committee/data.py create mode 100644 statsmodels/datasets/committee/src/committee.dat create mode 100644 statsmodels/datasets/copper/__init__.py create mode 100644 statsmodels/datasets/copper/copper.csv create mode 100644 statsmodels/datasets/copper/data.py create mode 100644 statsmodels/datasets/copper/src/copper.dat create mode 100644 statsmodels/datasets/cpunish/R_cpunish.s create mode 100644 statsmodels/datasets/cpunish/__init__.py create mode 100644 statsmodels/datasets/cpunish/cpunish.csv create mode 100644 statsmodels/datasets/cpunish/data.py create mode 100644 statsmodels/datasets/cpunish/src/cpunish.dat create mode 100644 statsmodels/datasets/elnino/__init__.py create mode 100644 statsmodels/datasets/elnino/data.py create mode 100644 statsmodels/datasets/elnino/elnino.csv create mode 100644 statsmodels/datasets/elnino/src/elnino.dat create mode 100644 statsmodels/datasets/engel/__init__.py create mode 100644 statsmodels/datasets/engel/data.py create mode 100644 statsmodels/datasets/engel/engel.csv create mode 100644 statsmodels/datasets/fair/__init__.py create mode 100644 statsmodels/datasets/fair/data.py create mode 100644 statsmodels/datasets/fair/fair.csv create mode 100644 statsmodels/datasets/fair/fair_pt.csv create mode 100644 statsmodels/datasets/fair/src/1978ADAT.asc create mode 100644 statsmodels/datasets/fertility/__init__.py create mode 100644 statsmodels/datasets/fertility/data.py create mode 100644 statsmodels/datasets/fertility/fertility.csv create mode 100644 statsmodels/datasets/grunfeld/__init__.py create mode 100644 statsmodels/datasets/grunfeld/data.py create mode 100644 statsmodels/datasets/grunfeld/grunfeld.csv create mode 100644 statsmodels/datasets/grunfeld/src/grunfeld.csv create mode 100644 statsmodels/datasets/heart/__init__.py create mode 100644 statsmodels/datasets/heart/data.py create mode 100644 statsmodels/datasets/heart/heart.csv create mode 100644 statsmodels/datasets/interest_inflation/E6.csv create mode 100644 statsmodels/datasets/interest_inflation/E6_jmulti.csv create mode 100644 statsmodels/datasets/interest_inflation/__init__.py create mode 100644 statsmodels/datasets/interest_inflation/data.py create mode 100644 statsmodels/datasets/longley/R_gls.s create mode 100644 statsmodels/datasets/longley/R_lm.s create mode 100644 statsmodels/datasets/longley/__init__.py create mode 100644 statsmodels/datasets/longley/data.py create mode 100644 statsmodels/datasets/longley/longley.csv create mode 100644 statsmodels/datasets/macrodata/__init__.py create mode 100644 statsmodels/datasets/macrodata/data.py create mode 100644 statsmodels/datasets/macrodata/macrodata.csv create mode 100644 statsmodels/datasets/macrodata/macrodata.dta create mode 100644 statsmodels/datasets/macrodata/src/macrodata.xls/macrodata.xls create mode 100644 statsmodels/datasets/macrodata/src/unemp.csv create mode 100644 statsmodels/datasets/modechoice/__init__.py create mode 100644 statsmodels/datasets/modechoice/data.py create mode 100644 statsmodels/datasets/modechoice/modechoice.csv create mode 100644 statsmodels/datasets/modechoice/src/TableF18-2.csv create mode 100644 statsmodels/datasets/nile/__init__.py create mode 100644 statsmodels/datasets/nile/data.py create mode 100644 statsmodels/datasets/nile/nile.csv create mode 100644 statsmodels/datasets/randhie/__init__.py create mode 100644 statsmodels/datasets/randhie/data.py create mode 100644 statsmodels/datasets/randhie/randhie.csv create mode 100644 statsmodels/datasets/randhie/src/randdesc.txt create mode 100644 statsmodels/datasets/randhie/src/randhie.csv create mode 100644 statsmodels/datasets/scotland/R_scotvote.s create mode 100644 statsmodels/datasets/scotland/__init__.py create mode 100644 statsmodels/datasets/scotland/data.py create mode 100644 statsmodels/datasets/scotland/scotvote.csv create mode 100644 statsmodels/datasets/scotland/src/scotland.readme create mode 100644 statsmodels/datasets/scotland/src/scotland_births.html create mode 100644 statsmodels/datasets/scotland/src/scotland_changes.html create mode 100644 statsmodels/datasets/scotland/src/scotland_devolution.html create mode 100644 statsmodels/datasets/scotland/src/scotland_econ_summary.html create mode 100644 statsmodels/datasets/scotland/src/scotland_economics.html create mode 100644 statsmodels/datasets/scotland/src/scotland_education.html create mode 100644 statsmodels/datasets/scotland/src/scotland_housing.html create mode 100644 statsmodels/datasets/scotland/src/scotland_population.csv create mode 100644 statsmodels/datasets/scotland/src/scotland_population.html create mode 100644 statsmodels/datasets/scotland/src/scotvote.csv create mode 100644 statsmodels/datasets/scotland/src/scotvote.dat create mode 100644 statsmodels/datasets/spector/__init__.py create mode 100644 statsmodels/datasets/spector/data.py create mode 100644 statsmodels/datasets/spector/spector.csv create mode 100644 statsmodels/datasets/stackloss/R_stackloss.s create mode 100644 statsmodels/datasets/stackloss/__init__.py create mode 100644 statsmodels/datasets/stackloss/data.py create mode 100644 statsmodels/datasets/stackloss/stackloss.csv create mode 100644 statsmodels/datasets/star98/__init__.py create mode 100644 statsmodels/datasets/star98/data.py create mode 100644 statsmodels/datasets/star98/r_glm.s create mode 100644 statsmodels/datasets/star98/src/star.bi.dat create mode 100644 statsmodels/datasets/star98/src/star98.dat create mode 100644 statsmodels/datasets/star98/src/star98.names create mode 100644 statsmodels/datasets/star98/star98.csv create mode 100644 statsmodels/datasets/statecrime/__init__.py create mode 100644 statsmodels/datasets/statecrime/data.py create mode 100644 statsmodels/datasets/statecrime/statecrime.csv create mode 100644 statsmodels/datasets/strikes/__init__.py create mode 100644 statsmodels/datasets/strikes/data.py create mode 100644 statsmodels/datasets/strikes/strikes.csv create mode 100644 statsmodels/datasets/sunspots/R_sunspots.s create mode 100644 statsmodels/datasets/sunspots/__init__.py create mode 100644 statsmodels/datasets/sunspots/arima_mod.R create mode 100644 statsmodels/datasets/sunspots/data.py create mode 100644 statsmodels/datasets/sunspots/src/sunspots_monthly.dat create mode 100644 statsmodels/datasets/sunspots/src/sunspots_yearly.dat create mode 100644 statsmodels/datasets/sunspots/sunspots.csv create mode 100644 statsmodels/datasets/template_data.py create mode 100644 statsmodels/datasets/tests/__init__.py create mode 100644 statsmodels/datasets/tests/test_data.py create mode 100644 statsmodels/datasets/tests/test_utils.py create mode 100644 statsmodels/datasets/utils.py create mode 100644 statsmodels/discrete/__init__.py create mode 100644 statsmodels/discrete/_diagnostics_count.py create mode 100644 statsmodels/discrete/conditional_models.py create mode 100644 statsmodels/discrete/count_model.py create mode 100644 statsmodels/discrete/discrete_margins.py create mode 100644 statsmodels/discrete/discrete_model.py create mode 100644 statsmodels/discrete/tests/__init__.py create mode 100644 statsmodels/discrete/tests/results/__init__.py create mode 100644 statsmodels/discrete/tests/results/mn_logit_summary.txt create mode 100644 statsmodels/discrete/tests/results/mnlogit_resid.csv create mode 100644 statsmodels/discrete/tests/results/nbinom_resids.csv create mode 100644 statsmodels/discrete/tests/results/phat_mnlogit.csv create mode 100644 statsmodels/discrete/tests/results/poisson_resid.csv create mode 100644 statsmodels/discrete/tests/results/predict_prob_poisson.csv create mode 100644 statsmodels/discrete/tests/results/results_count_margins.py create mode 100644 statsmodels/discrete/tests/results/results_count_robust_cluster.py create mode 100644 statsmodels/discrete/tests/results/results_discrete.py create mode 100644 statsmodels/discrete/tests/results/results_glm_logit_constrained.py create mode 100644 statsmodels/discrete/tests/results/results_poisson_constrained.py create mode 100644 statsmodels/discrete/tests/results/ships.csv create mode 100644 statsmodels/discrete/tests/results/sm3533.csv create mode 100644 statsmodels/discrete/tests/results/yhat_mnlogit.csv create mode 100644 statsmodels/discrete/tests/results/yhat_poisson.csv create mode 100644 statsmodels/discrete/tests/test_conditional.py create mode 100644 statsmodels/discrete/tests/test_constrained.py create mode 100644 statsmodels/discrete/tests/test_count_model.py create mode 100644 statsmodels/discrete/tests/test_diagnostic.py create mode 100644 statsmodels/discrete/tests/test_discrete.py create mode 100644 statsmodels/discrete/tests/test_margins.py create mode 100644 statsmodels/discrete/tests/test_sandwich_cov.py create mode 100644 statsmodels/distributions/__init__.py create mode 100644 statsmodels/distributions/discrete.py create mode 100644 statsmodels/distributions/edgeworth.py create mode 100644 statsmodels/distributions/empirical_distribution.py create mode 100644 statsmodels/distributions/mixture_rvs.py create mode 100644 statsmodels/distributions/tests/__init__.py create mode 100644 statsmodels/distributions/tests/test_discrete.py create mode 100644 statsmodels/distributions/tests/test_ecdf.py create mode 100644 statsmodels/distributions/tests/test_edgeworth.py create mode 100644 statsmodels/distributions/tests/test_mixture.py create mode 100644 statsmodels/duration/__init__.py create mode 100644 statsmodels/duration/_kernel_estimates.py create mode 100644 statsmodels/duration/api.py create mode 100644 statsmodels/duration/hazard_regression.py create mode 100644 statsmodels/duration/survfunc.py create mode 100644 statsmodels/duration/tests/__init__.py create mode 100644 statsmodels/duration/tests/results/__init__.py create mode 100644 statsmodels/duration/tests/results/bmt.csv create mode 100644 statsmodels/duration/tests/results/bmt_results.csv create mode 100644 statsmodels/duration/tests/results/phreg_gentests.py create mode 100644 statsmodels/duration/tests/results/survival.R create mode 100644 statsmodels/duration/tests/results/survival_data_1000_10.csv create mode 100644 statsmodels/duration/tests/results/survival_data_100_5.csv create mode 100644 statsmodels/duration/tests/results/survival_data_20_1.csv create mode 100644 statsmodels/duration/tests/results/survival_data_50_1.csv create mode 100644 statsmodels/duration/tests/results/survival_data_50_2.csv create mode 100644 statsmodels/duration/tests/results/survival_enet_r_results.py create mode 100644 statsmodels/duration/tests/results/survival_r_results.py create mode 100644 statsmodels/duration/tests/results/survival_regularized.R create mode 100644 statsmodels/duration/tests/test_phreg.py create mode 100644 statsmodels/duration/tests/test_survfunc.py create mode 100644 statsmodels/emplike/__init__.py create mode 100644 statsmodels/emplike/aft_el.py create mode 100644 statsmodels/emplike/api.py create mode 100644 statsmodels/emplike/descriptive.py create mode 100644 statsmodels/emplike/elanova.py create mode 100644 statsmodels/emplike/elregress.py create mode 100644 statsmodels/emplike/originregress.py create mode 100644 statsmodels/emplike/tests/__init__.py create mode 100644 statsmodels/emplike/tests/results/__init__.py create mode 100644 statsmodels/emplike/tests/results/el_results.py create mode 100644 statsmodels/emplike/tests/test_aft.py create mode 100644 statsmodels/emplike/tests/test_anova.py create mode 100644 statsmodels/emplike/tests/test_descriptive.py create mode 100644 statsmodels/emplike/tests/test_origin.py create mode 100644 statsmodels/emplike/tests/test_regression.py create mode 100644 statsmodels/examples/es_misc_poisson2.py create mode 100644 statsmodels/examples/ex_arch_canada.py create mode 100644 statsmodels/examples/ex_emplike_1.py create mode 100644 statsmodels/examples/ex_emplike_2.py create mode 100644 statsmodels/examples/ex_emplike_3.py create mode 100644 statsmodels/examples/ex_feasible_gls_het.py create mode 100644 statsmodels/examples/ex_feasible_gls_het_0.py create mode 100644 statsmodels/examples/ex_generic_mle.py create mode 100644 statsmodels/examples/ex_generic_mle_t.py create mode 100644 statsmodels/examples/ex_generic_mle_tdist.py create mode 100644 statsmodels/examples/ex_grangercausality.py create mode 100644 statsmodels/examples/ex_inter_rater.py create mode 100644 statsmodels/examples/ex_kde_confint.py create mode 100644 statsmodels/examples/ex_kde_normalreference.py create mode 100644 statsmodels/examples/ex_kernel_regression.py create mode 100644 statsmodels/examples/ex_kernel_regression2.py create mode 100644 statsmodels/examples/ex_kernel_regression3.py create mode 100644 statsmodels/examples/ex_kernel_regression_censored2.py create mode 100644 statsmodels/examples/ex_kernel_regression_dgp.py create mode 100644 statsmodels/examples/ex_kernel_regression_sigtest.py create mode 100644 statsmodels/examples/ex_kernel_semilinear_dgp.py create mode 100644 statsmodels/examples/ex_kernel_singleindex_dgp.py create mode 100644 statsmodels/examples/ex_kernel_test_functional.py create mode 100644 statsmodels/examples/ex_kernel_test_functional_li_wang.py create mode 100644 statsmodels/examples/ex_lowess.py create mode 100644 statsmodels/examples/ex_misc_tarma.py create mode 100644 statsmodels/examples/ex_misc_tmodel.py create mode 100644 statsmodels/examples/ex_multivar_kde.py create mode 100644 statsmodels/examples/ex_nearest_corr.py create mode 100644 statsmodels/examples/ex_ols_robustcov.py create mode 100644 statsmodels/examples/ex_outliers_influence.py create mode 100644 statsmodels/examples/ex_pairwise.py create mode 100644 statsmodels/examples/ex_pandas.py create mode 100644 statsmodels/examples/ex_pareto_plot.py create mode 100644 statsmodels/examples/ex_predict_results.py create mode 100644 statsmodels/examples/ex_proportion.py create mode 100644 statsmodels/examples/ex_regressionplots.py create mode 100644 statsmodels/examples/ex_rootfinding.py create mode 100644 statsmodels/examples/ex_sandwich.py create mode 100644 statsmodels/examples/ex_sandwich2.py create mode 100644 statsmodels/examples/ex_sandwich3.py create mode 100644 statsmodels/examples/ex_scatter_ellipse.py create mode 100644 statsmodels/examples/ex_univar_kde.py create mode 100644 statsmodels/examples/ex_wald_anova.py create mode 100644 statsmodels/examples/example_discrete_mnl.py create mode 100644 statsmodels/examples/example_enhanced_boxplots.py create mode 100644 statsmodels/examples/example_functional_plots.py create mode 100644 statsmodels/examples/example_kde.py create mode 100644 statsmodels/examples/example_ols_minimal_comp.py create mode 100644 statsmodels/examples/example_rpy.py create mode 100644 statsmodels/examples/koul_and_mc.py create mode 100644 statsmodels/examples/l1_demo/demo.py create mode 100644 statsmodels/examples/l1_demo/short_demo.py create mode 100644 statsmodels/examples/l1_demo/sklearn_compare.py create mode 100644 statsmodels/examples/run_all.py create mode 100644 statsmodels/examples/tests/__init__.py create mode 100644 statsmodels/examples/tests/test_notebooks.py create mode 100644 statsmodels/examples/try_2regress.py create mode 100644 statsmodels/examples/try_fit_constrained.py create mode 100644 statsmodels/examples/try_gee.py create mode 100644 statsmodels/examples/try_gof_chisquare.py create mode 100644 statsmodels/examples/try_polytrend.py create mode 100644 statsmodels/examples/try_power.py create mode 100644 statsmodels/examples/try_power2.py create mode 100644 statsmodels/examples/try_tukey_hsd.py create mode 100644 statsmodels/examples/tsa/ar1cholesky.py create mode 100644 statsmodels/examples/tsa/arma_plots.py create mode 100644 statsmodels/examples/tsa/compare_arma.py create mode 100644 statsmodels/examples/tsa/ex_arma.py create mode 100644 statsmodels/examples/tsa/ex_arma_all.py create mode 100644 statsmodels/examples/tsa/ex_coint.py create mode 100644 statsmodels/examples/tsa/ex_var.py create mode 100644 statsmodels/examples/tsa/ex_var_reorder.py create mode 100644 statsmodels/examples/tsa/lagpolynomial.py create mode 100644 statsmodels/examples/tsa/try_ar.py create mode 100644 statsmodels/examples/tut_ols_ancova.py create mode 100644 statsmodels/examples/tut_ols_rlm_short.py create mode 100644 statsmodels/formula/__init__.py create mode 100644 statsmodels/formula/api.py create mode 100644 statsmodels/formula/formulatools.py create mode 100644 statsmodels/formula/tests/__init__.py create mode 100644 statsmodels/formula/tests/test_formula.py create mode 100644 statsmodels/gam/__init__.py create mode 100644 statsmodels/gam/api.py create mode 100644 statsmodels/gam/gam_cross_validation/__init__.py create mode 100644 statsmodels/gam/gam_cross_validation/cross_validators.py create mode 100644 statsmodels/gam/gam_cross_validation/gam_cross_validation.py create mode 100644 statsmodels/gam/gam_penalties.py create mode 100644 statsmodels/gam/generalized_additive_model.py create mode 100644 statsmodels/gam/smooth_basis.py create mode 100644 statsmodels/gam/tests/__init__.py create mode 100644 statsmodels/gam/tests/results/__init__.py create mode 100644 statsmodels/gam/tests/results/autos.csv create mode 100644 statsmodels/gam/tests/results/autos_exog.csv create mode 100644 statsmodels/gam/tests/results/autos_predict.csv create mode 100644 statsmodels/gam/tests/results/cubic_cyclic_splines_from_mgcv.csv create mode 100644 statsmodels/gam/tests/results/gam_PIRLS_results.csv create mode 100644 statsmodels/gam/tests/results/logit_gam_mgcv.csv create mode 100644 statsmodels/gam/tests/results/motorcycle.csv create mode 100644 statsmodels/gam/tests/results/prediction_from_mgcv.csv create mode 100644 statsmodels/gam/tests/results/results_mpg_bs.py create mode 100644 statsmodels/gam/tests/results/results_mpg_bs_poisson.py create mode 100644 statsmodels/gam/tests/results/results_mpg_bs_poisson.r create mode 100644 statsmodels/gam/tests/results/results_pls.py create mode 100644 statsmodels/gam/tests/test_gam.py create mode 100644 statsmodels/gam/tests/test_penalized.py create mode 100644 statsmodels/gam/tests/test_smooth_basis.py create mode 100644 statsmodels/genmod/__init__.py create mode 100644 statsmodels/genmod/_prediction.py create mode 100644 statsmodels/genmod/_tweedie_compound_poisson.py create mode 100644 statsmodels/genmod/api.py create mode 100644 statsmodels/genmod/bayes_mixed_glm.py create mode 100644 statsmodels/genmod/cov_struct.py create mode 100644 statsmodels/genmod/families/__init__.py create mode 100644 statsmodels/genmod/families/family.py create mode 100644 statsmodels/genmod/families/links.py create mode 100644 statsmodels/genmod/families/tests/__init__.py create mode 100644 statsmodels/genmod/families/tests/test_link.py create mode 100644 statsmodels/genmod/families/varfuncs.py create mode 100644 statsmodels/genmod/generalized_estimating_equations.py create mode 100644 statsmodels/genmod/generalized_linear_model.py create mode 100644 statsmodels/genmod/qif.py create mode 100644 statsmodels/genmod/tests/__init__.py create mode 100644 statsmodels/genmod/tests/gee_categorical_simulation_check.py create mode 100644 statsmodels/genmod/tests/gee_categorical_simulation_check.txt create mode 100644 statsmodels/genmod/tests/gee_gaussian_simulation_check.py create mode 100644 statsmodels/genmod/tests/gee_gaussian_simulation_check.txt create mode 100644 statsmodels/genmod/tests/gee_poisson_simulation_check.py create mode 100644 statsmodels/genmod/tests/gee_poisson_simulation_check.txt create mode 100644 statsmodels/genmod/tests/gee_simulation_check.py create mode 100644 statsmodels/genmod/tests/results/__init__.py create mode 100644 statsmodels/genmod/tests/results/elastic_net.R create mode 100644 statsmodels/genmod/tests/results/elastic_net_generate_tests.py create mode 100644 statsmodels/genmod/tests/results/enet_binomial.csv create mode 100644 statsmodels/genmod/tests/results/enet_poisson.csv create mode 100644 statsmodels/genmod/tests/results/epil.csv create mode 100644 statsmodels/genmod/tests/results/gee_generate_tests.py create mode 100644 statsmodels/genmod/tests/results/gee_linear_1.csv create mode 100644 statsmodels/genmod/tests/results/gee_logistic_1.csv create mode 100644 statsmodels/genmod/tests/results/gee_nested_linear_1.csv create mode 100644 statsmodels/genmod/tests/results/gee_nominal_1.csv create mode 100644 statsmodels/genmod/tests/results/gee_ordinal_1.csv create mode 100644 statsmodels/genmod/tests/results/gee_poisson_1.csv create mode 100644 statsmodels/genmod/tests/results/glm_test_resids.py create mode 100644 statsmodels/genmod/tests/results/glmnet_r_results.py create mode 100644 statsmodels/genmod/tests/results/igaussident_resids.csv create mode 100644 statsmodels/genmod/tests/results/inv_gaussian.csv create mode 100644 statsmodels/genmod/tests/results/iris.csv create mode 100644 statsmodels/genmod/tests/results/medparlogresids.csv create mode 100644 statsmodels/genmod/tests/results/poisson_weights_v2.do create mode 100644 statsmodels/genmod/tests/results/res_R_var_weight.py create mode 100644 statsmodels/genmod/tests/results/results_glm.py create mode 100644 statsmodels/genmod/tests/results/results_glm_poisson_weights.py create mode 100644 statsmodels/genmod/tests/results/results_tweedie_aweights_nonrobust.csv create mode 100644 statsmodels/genmod/tests/results/stata_cancer_glm.csv create mode 100644 statsmodels/genmod/tests/results/stata_lbw_glm.csv create mode 100644 statsmodels/genmod/tests/results/stata_medpar1_glm.csv create mode 100644 statsmodels/genmod/tests/results/test_get_R_tweedie_var_weight.R create mode 100644 statsmodels/genmod/tests/test_bayes_mixed_glm.py create mode 100644 statsmodels/genmod/tests/test_constrained.py create mode 100644 statsmodels/genmod/tests/test_gee.py create mode 100644 statsmodels/genmod/tests/test_gee_glm.py create mode 100644 statsmodels/genmod/tests/test_glm.py create mode 100644 statsmodels/genmod/tests/test_glm_weights.py create mode 100644 statsmodels/genmod/tests/test_qif.py create mode 100644 statsmodels/genmod/tests/test_score_test.py create mode 100644 statsmodels/graphics/__init__.py create mode 100644 statsmodels/graphics/_regressionplots_doc.py create mode 100644 statsmodels/graphics/agreement.py create mode 100644 statsmodels/graphics/api.py create mode 100644 statsmodels/graphics/boxplots.py create mode 100644 statsmodels/graphics/correlation.py create mode 100644 statsmodels/graphics/dotplots.py create mode 100644 statsmodels/graphics/factorplots.py create mode 100644 statsmodels/graphics/functional.py create mode 100644 statsmodels/graphics/gofplots.py create mode 100644 statsmodels/graphics/mosaicplot.py create mode 100644 statsmodels/graphics/plot_grids.py create mode 100644 statsmodels/graphics/plottools.py create mode 100644 statsmodels/graphics/regressionplots.py create mode 100644 statsmodels/graphics/tests/__init__.py create mode 100644 statsmodels/graphics/tests/test_agreement.py create mode 100644 statsmodels/graphics/tests/test_boxplots.py create mode 100644 statsmodels/graphics/tests/test_correlation.py create mode 100644 statsmodels/graphics/tests/test_dotplot.py create mode 100644 statsmodels/graphics/tests/test_factorplots.py create mode 100644 statsmodels/graphics/tests/test_functional.py create mode 100644 statsmodels/graphics/tests/test_gofplots.py create mode 100644 statsmodels/graphics/tests/test_mosaicplot.py create mode 100644 statsmodels/graphics/tests/test_regressionplots.py create mode 100644 statsmodels/graphics/tests/test_tsaplots.py create mode 100644 statsmodels/graphics/tsaplots.py create mode 100644 statsmodels/graphics/tukeyplot.py create mode 100644 statsmodels/graphics/utils.py create mode 100644 statsmodels/imputation/__init__.py create mode 100644 statsmodels/imputation/bayes_mi.py create mode 100644 statsmodels/imputation/mice.py create mode 100644 statsmodels/imputation/ros.py create mode 100644 statsmodels/imputation/tests/__init__.py create mode 100644 statsmodels/imputation/tests/test_bayes_mi.py create mode 100644 statsmodels/imputation/tests/test_mice.py create mode 100644 statsmodels/imputation/tests/test_ros.py create mode 100644 statsmodels/interface/__init__.py create mode 100644 statsmodels/iolib/__init__.py create mode 100644 statsmodels/iolib/api.py create mode 100644 statsmodels/iolib/foreign.py create mode 100644 statsmodels/iolib/openfile.py create mode 100644 statsmodels/iolib/smpickle.py create mode 100644 statsmodels/iolib/stata_summary_examples.py create mode 100644 statsmodels/iolib/summary.py create mode 100644 statsmodels/iolib/summary2.py create mode 100644 statsmodels/iolib/table.py create mode 100644 statsmodels/iolib/tableformatting.py create mode 100644 statsmodels/iolib/tests/__init__.py create mode 100644 statsmodels/iolib/tests/gen_dates.do create mode 100644 statsmodels/iolib/tests/results/__init__.py create mode 100644 statsmodels/iolib/tests/results/data_missing.dta create mode 100644 statsmodels/iolib/tests/results/macrodata.py create mode 100644 statsmodels/iolib/tests/results/time_series_examples.dta create mode 100644 statsmodels/iolib/tests/stata_dates.csv create mode 100644 statsmodels/iolib/tests/test_data.csv create mode 100644 statsmodels/iolib/tests/test_foreign.py create mode 100644 statsmodels/iolib/tests/test_pickle.py create mode 100644 statsmodels/iolib/tests/test_summary.py create mode 100644 statsmodels/iolib/tests/test_summary2.py create mode 100644 statsmodels/iolib/tests/test_summary_old.py create mode 100644 statsmodels/iolib/tests/test_table.py create mode 100644 statsmodels/iolib/tests/test_table_econpy.py create mode 100644 statsmodels/miscmodels/__init__.py create mode 100644 statsmodels/miscmodels/api.py create mode 100644 statsmodels/miscmodels/count.py create mode 100644 statsmodels/miscmodels/nonlinls.py create mode 100644 statsmodels/miscmodels/tests/__init__.py create mode 100644 statsmodels/miscmodels/tests/results_tmodel.py create mode 100644 statsmodels/miscmodels/tests/test_generic_mle.py create mode 100644 statsmodels/miscmodels/tests/test_poisson.py create mode 100644 statsmodels/miscmodels/tests/test_tarma.py create mode 100644 statsmodels/miscmodels/tests/test_tmodel.py create mode 100644 statsmodels/miscmodels/tmodel.py create mode 100644 statsmodels/miscmodels/try_mlecov.py create mode 100644 statsmodels/multivariate/__init__.py create mode 100644 statsmodels/multivariate/api.py create mode 100644 statsmodels/multivariate/cancorr.py create mode 100644 statsmodels/multivariate/factor.py create mode 100644 statsmodels/multivariate/factor_rotation/COPYRIGHTS.txt create mode 100644 statsmodels/multivariate/factor_rotation/LICENSE.txt create mode 100644 statsmodels/multivariate/factor_rotation/__init__.py create mode 100644 statsmodels/multivariate/factor_rotation/_analytic_rotation.py create mode 100644 statsmodels/multivariate/factor_rotation/_gpa_rotation.py create mode 100644 statsmodels/multivariate/factor_rotation/_wrappers.py create mode 100644 statsmodels/multivariate/factor_rotation/tests/__init__.py create mode 100644 statsmodels/multivariate/factor_rotation/tests/test_rotation.py create mode 100644 statsmodels/multivariate/manova.py create mode 100644 statsmodels/multivariate/multivariate_ols.py create mode 100644 statsmodels/multivariate/pca.py create mode 100644 statsmodels/multivariate/plots.py create mode 100644 statsmodels/multivariate/tests/__init__.py create mode 100644 statsmodels/multivariate/tests/results/__init__.py create mode 100644 statsmodels/multivariate/tests/results/datamlw.py create mode 100644 statsmodels/multivariate/tests/results/factor_data.csv create mode 100644 statsmodels/multivariate/tests/results/factors_stata.csv create mode 100644 statsmodels/multivariate/tests/test_cancorr.py create mode 100644 statsmodels/multivariate/tests/test_factor.py create mode 100644 statsmodels/multivariate/tests/test_manova.py create mode 100644 statsmodels/multivariate/tests/test_ml_factor.py create mode 100644 statsmodels/multivariate/tests/test_multivariate_ols.py create mode 100644 statsmodels/multivariate/tests/test_pca.py create mode 100644 statsmodels/nonparametric/__init__.py create mode 100644 statsmodels/nonparametric/_kernel_base.py create mode 100644 statsmodels/nonparametric/_smoothers_lowess.pyx create mode 100644 statsmodels/nonparametric/api.py create mode 100644 statsmodels/nonparametric/bandwidths.py create mode 100644 statsmodels/nonparametric/kde.py create mode 100644 statsmodels/nonparametric/kdetools.py create mode 100644 statsmodels/nonparametric/kernel_density.py create mode 100644 statsmodels/nonparametric/kernel_regression.py create mode 100644 statsmodels/nonparametric/kernels.py create mode 100644 statsmodels/nonparametric/linbin.pyx create mode 100644 statsmodels/nonparametric/smoothers_lowess.py create mode 100644 statsmodels/nonparametric/smoothers_lowess_old.py create mode 100644 statsmodels/nonparametric/tests/Xi_test_data.csv create mode 100644 statsmodels/nonparametric/tests/__init__.py create mode 100644 statsmodels/nonparametric/tests/results/__init__.py create mode 100644 statsmodels/nonparametric/tests/results/results_kcde.csv create mode 100644 statsmodels/nonparametric/tests/results/results_kde.csv create mode 100644 statsmodels/nonparametric/tests/results/results_kde_fft.csv create mode 100644 statsmodels/nonparametric/tests/results/results_kde_univ_weights.csv create mode 100644 statsmodels/nonparametric/tests/results/results_kde_weights.csv create mode 100644 statsmodels/nonparametric/tests/results/results_kernel_regression.csv create mode 100644 statsmodels/nonparametric/tests/results/test_lowess_delta.csv create mode 100644 statsmodels/nonparametric/tests/results/test_lowess_frac.csv create mode 100644 statsmodels/nonparametric/tests/results/test_lowess_iter.csv create mode 100644 statsmodels/nonparametric/tests/results/test_lowess_r_outputs.R create mode 100644 statsmodels/nonparametric/tests/results/test_lowess_simple.csv create mode 100644 statsmodels/nonparametric/tests/test_bandwidths.py create mode 100644 statsmodels/nonparametric/tests/test_kde.py create mode 100644 statsmodels/nonparametric/tests/test_kernel_density.py create mode 100644 statsmodels/nonparametric/tests/test_kernel_regression.py create mode 100644 statsmodels/nonparametric/tests/test_kernels.py create mode 100644 statsmodels/nonparametric/tests/test_lowess.py create mode 100644 statsmodels/regression/__init__.py create mode 100644 statsmodels/regression/_prediction.py create mode 100644 statsmodels/regression/_tools.py create mode 100644 statsmodels/regression/dimred.py create mode 100644 statsmodels/regression/feasible_gls.py create mode 100644 statsmodels/regression/linear_model.py create mode 100644 statsmodels/regression/mixed_linear_model.py create mode 100644 statsmodels/regression/process_regression.py create mode 100644 statsmodels/regression/quantile_regression.py create mode 100644 statsmodels/regression/recursive_ls.py create mode 100644 statsmodels/regression/tests/__init__.py create mode 100644 statsmodels/regression/tests/lme_examples.R create mode 100644 statsmodels/regression/tests/results/__init__.py create mode 100644 statsmodels/regression/tests/results/dietox.csv create mode 100644 statsmodels/regression/tests/results/generate_lasso.py create mode 100644 statsmodels/regression/tests/results/generate_lme.py create mode 100644 statsmodels/regression/tests/results/glmnet_r_results.py create mode 100644 statsmodels/regression/tests/results/lasso_data.csv create mode 100644 statsmodels/regression/tests/results/lasso_r_results.R create mode 100644 statsmodels/regression/tests/results/leverage_influence_ols_nostars.txt create mode 100644 statsmodels/regression/tests/results/lme00.csv create mode 100644 statsmodels/regression/tests/results/lme01.csv create mode 100644 statsmodels/regression/tests/results/lme02.csv create mode 100644 statsmodels/regression/tests/results/lme03.csv create mode 100644 statsmodels/regression/tests/results/lme04.csv create mode 100644 statsmodels/regression/tests/results/lme05.csv create mode 100644 statsmodels/regression/tests/results/lme06.csv create mode 100644 statsmodels/regression/tests/results/lme07.csv create mode 100644 statsmodels/regression/tests/results/lme08.csv create mode 100644 statsmodels/regression/tests/results/lme09.csv create mode 100644 statsmodels/regression/tests/results/lme10.csv create mode 100644 statsmodels/regression/tests/results/lme11.csv create mode 100644 statsmodels/regression/tests/results/lme_r_results.py create mode 100644 statsmodels/regression/tests/results/lme_results.R create mode 100644 statsmodels/regression/tests/results/macro_gr_corc_stata.py create mode 100644 statsmodels/regression/tests/results/pastes.csv create mode 100644 statsmodels/regression/tests/results/results_grunfeld_ols_robust_cluster.py create mode 100644 statsmodels/regression/tests/results/results_macro_ols_robust.py create mode 100644 statsmodels/regression/tests/results/results_quantile_regression.py create mode 100644 statsmodels/regression/tests/results/results_regression.py create mode 100644 statsmodels/regression/tests/results/results_rls_R.csv create mode 100644 statsmodels/regression/tests/results/results_rls_stata.csv create mode 100644 statsmodels/regression/tests/results/results_theil_textile.py create mode 100644 statsmodels/regression/tests/results/test_rls.R create mode 100644 statsmodels/regression/tests/results/test_rls.do create mode 100644 statsmodels/regression/tests/results/theil_textile_predict.csv create mode 100644 statsmodels/regression/tests/test_cov.py create mode 100644 statsmodels/regression/tests/test_dimred.py create mode 100644 statsmodels/regression/tests/test_glsar_gretl.py create mode 100644 statsmodels/regression/tests/test_glsar_stata.py create mode 100644 statsmodels/regression/tests/test_lme.py create mode 100644 statsmodels/regression/tests/test_predict.py create mode 100644 statsmodels/regression/tests/test_processreg.py create mode 100644 statsmodels/regression/tests/test_quantile_regression.py create mode 100644 statsmodels/regression/tests/test_recursive_ls.py create mode 100644 statsmodels/regression/tests/test_regression.py create mode 100644 statsmodels/regression/tests/test_robustcov.py create mode 100644 statsmodels/regression/tests/test_theil.py create mode 100644 statsmodels/regression/tests/test_tools.py create mode 100644 statsmodels/resampling/__init__.py create mode 100644 statsmodels/robust/__init__.py create mode 100644 statsmodels/robust/norms.py create mode 100644 statsmodels/robust/robust_linear_model.py create mode 100644 statsmodels/robust/scale.py create mode 100644 statsmodels/robust/tests/__init__.py create mode 100644 statsmodels/robust/tests/results/__init__.py create mode 100644 statsmodels/robust/tests/results/results_rlm.py create mode 100644 statsmodels/robust/tests/test_rlm.py create mode 100644 statsmodels/robust/tests/test_scale.py create mode 100644 statsmodels/sandbox/__init__.py create mode 100644 statsmodels/sandbox/archive/__init__.py create mode 100644 statsmodels/sandbox/archive/linalg_covmat.py create mode 100644 statsmodels/sandbox/archive/linalg_decomp_1.py create mode 100644 statsmodels/sandbox/archive/tsa.py create mode 100644 statsmodels/sandbox/bspline.py create mode 100644 statsmodels/sandbox/contrast_old.py create mode 100644 statsmodels/sandbox/datarich/__init__.py create mode 100644 statsmodels/sandbox/datarich/factormodels.py create mode 100644 statsmodels/sandbox/dataset_notes.rst create mode 100644 statsmodels/sandbox/descstats.py create mode 100644 statsmodels/sandbox/distributions/__init__.py create mode 100644 statsmodels/sandbox/distributions/copula.py create mode 100644 statsmodels/sandbox/distributions/estimators.py create mode 100644 statsmodels/sandbox/distributions/examples/__init__.py create mode 100644 statsmodels/sandbox/distributions/examples/ex_extras.py create mode 100644 statsmodels/sandbox/distributions/examples/ex_fitfr.py create mode 100644 statsmodels/sandbox/distributions/examples/ex_gof.py create mode 100644 statsmodels/sandbox/distributions/examples/ex_mvelliptical.py create mode 100644 statsmodels/sandbox/distributions/examples/ex_transf2.py create mode 100644 statsmodels/sandbox/distributions/examples/matchdist.py create mode 100644 statsmodels/sandbox/distributions/extras.py create mode 100644 statsmodels/sandbox/distributions/genpareto.py create mode 100644 statsmodels/sandbox/distributions/gof_new.py create mode 100644 statsmodels/sandbox/distributions/multivariate.py create mode 100644 statsmodels/sandbox/distributions/mv_measures.py create mode 100644 statsmodels/sandbox/distributions/mv_normal.py create mode 100644 statsmodels/sandbox/distributions/otherdist.py create mode 100644 statsmodels/sandbox/distributions/quantize.py create mode 100644 statsmodels/sandbox/distributions/sppatch.py create mode 100644 statsmodels/sandbox/distributions/tests/__init__.py create mode 100644 statsmodels/sandbox/distributions/tests/_est_fit.py create mode 100644 statsmodels/sandbox/distributions/tests/check_moments.py create mode 100644 statsmodels/sandbox/distributions/tests/distparams.py create mode 100644 statsmodels/sandbox/distributions/tests/test_extras.py create mode 100644 statsmodels/sandbox/distributions/tests/test_gof_new.py create mode 100644 statsmodels/sandbox/distributions/tests/test_multivariate.py create mode 100644 statsmodels/sandbox/distributions/tests/test_norm_expan.py create mode 100644 statsmodels/sandbox/distributions/tests/test_transf.py create mode 100644 statsmodels/sandbox/distributions/transform_functions.py create mode 100644 statsmodels/sandbox/distributions/transformed.py create mode 100644 statsmodels/sandbox/distributions/try_max.py create mode 100644 statsmodels/sandbox/distributions/try_pot.py create mode 100644 statsmodels/sandbox/examples/bayesprior.py create mode 100644 statsmodels/sandbox/examples/dji_table.csv create mode 100644 statsmodels/sandbox/examples/ex_cusum.py create mode 100644 statsmodels/sandbox/examples/ex_formula.py create mode 100644 statsmodels/sandbox/examples/ex_formula_factor.py create mode 100644 statsmodels/sandbox/examples/ex_gam_results.py create mode 100644 statsmodels/sandbox/examples/ex_mixed_lls_0.py create mode 100644 statsmodels/sandbox/examples/ex_mixed_lls_re.py create mode 100644 statsmodels/sandbox/examples/ex_mixed_lls_timecorr.py create mode 100644 statsmodels/sandbox/examples/ex_onewaygls.py create mode 100644 statsmodels/sandbox/examples/ex_random_panel.py create mode 100644 statsmodels/sandbox/examples/example_crossval.py create mode 100644 statsmodels/sandbox/examples/example_gam.py create mode 100644 statsmodels/sandbox/examples/example_gam_0.py create mode 100644 statsmodels/sandbox/examples/example_garch.py create mode 100644 statsmodels/sandbox/examples/example_maxent.py create mode 100644 statsmodels/sandbox/examples/example_mle.py create mode 100644 statsmodels/sandbox/examples/example_nbin.py create mode 100644 statsmodels/sandbox/examples/example_pca.py create mode 100644 statsmodels/sandbox/examples/example_pca_regression.py create mode 100644 statsmodels/sandbox/examples/example_sysreg.py create mode 100644 statsmodels/sandbox/examples/gspc_table.csv create mode 100644 statsmodels/sandbox/examples/run_all.py create mode 100644 statsmodels/sandbox/examples/thirdparty/ex_ratereturn.py create mode 100644 statsmodels/sandbox/examples/thirdparty/findow_1.py create mode 100644 statsmodels/sandbox/examples/thirdparty/try_interchange.py create mode 100644 statsmodels/sandbox/examples/try_gmm_other.py create mode 100644 statsmodels/sandbox/examples/try_multiols.py create mode 100644 statsmodels/sandbox/examples/try_quantile_regression.py create mode 100644 statsmodels/sandbox/examples/try_quantile_regression1.py create mode 100644 statsmodels/sandbox/examples/try_smoothers.py create mode 100644 statsmodels/sandbox/formula.py create mode 100644 statsmodels/sandbox/gam.py create mode 100644 statsmodels/sandbox/infotheo.py create mode 100644 statsmodels/sandbox/mcevaluate/__init__.py create mode 100644 statsmodels/sandbox/mcevaluate/arma.py create mode 100644 statsmodels/sandbox/mcevaluate/mcresuts_arma1.txt create mode 100644 statsmodels/sandbox/mle.py create mode 100644 statsmodels/sandbox/mlogitmath.lyx create mode 100644 statsmodels/sandbox/multilinear.py create mode 100644 statsmodels/sandbox/nonparametric/__init__.py create mode 100644 statsmodels/sandbox/nonparametric/densityorthopoly.py create mode 100644 statsmodels/sandbox/nonparametric/dgp_examples.py create mode 100644 statsmodels/sandbox/nonparametric/kde2.py create mode 100644 statsmodels/sandbox/nonparametric/kdecovclass.py create mode 100644 statsmodels/sandbox/nonparametric/kernel_extras.py create mode 100644 statsmodels/sandbox/nonparametric/kernels.py create mode 100644 statsmodels/sandbox/nonparametric/smoothers.py create mode 100644 statsmodels/sandbox/nonparametric/testdata.py create mode 100644 statsmodels/sandbox/nonparametric/tests/__init__.py create mode 100644 statsmodels/sandbox/nonparametric/tests/ex_gam_am_new.py create mode 100644 statsmodels/sandbox/nonparametric/tests/ex_gam_new.py create mode 100644 statsmodels/sandbox/nonparametric/tests/ex_smoothers.py create mode 100644 statsmodels/sandbox/nonparametric/tests/test_kernel_extras.py create mode 100644 statsmodels/sandbox/nonparametric/tests/test_smoothers.py create mode 100644 statsmodels/sandbox/nos4.mtx create mode 100644 statsmodels/sandbox/panel/__init__.py create mode 100644 statsmodels/sandbox/panel/correlation_structures.py create mode 100644 statsmodels/sandbox/panel/mixed.py create mode 100644 statsmodels/sandbox/panel/panel_short.py create mode 100644 statsmodels/sandbox/panel/panelmod.py create mode 100644 statsmodels/sandbox/panel/random_panel.py create mode 100644 statsmodels/sandbox/panel/sandwich_covariance_generic.py create mode 100644 statsmodels/sandbox/panel/tests/__init__.py create mode 100644 statsmodels/sandbox/panel/tests/test_random_panel.py create mode 100644 statsmodels/sandbox/pca.py create mode 100644 statsmodels/sandbox/predict_functional.py create mode 100644 statsmodels/sandbox/regression/__init__.py create mode 100644 statsmodels/sandbox/regression/anova_nistcertified.py create mode 100644 statsmodels/sandbox/regression/ar_panel.py create mode 100644 statsmodels/sandbox/regression/data/AtmWtAg.dat create mode 100644 statsmodels/sandbox/regression/data/Longley.dat create mode 100644 statsmodels/sandbox/regression/data/SiRstv.dat create mode 100644 statsmodels/sandbox/regression/data/SmLs01.dat create mode 100644 statsmodels/sandbox/regression/data/SmLs02.dat create mode 100644 statsmodels/sandbox/regression/data/SmLs03.dat create mode 100644 statsmodels/sandbox/regression/data/SmLs04.dat create mode 100644 statsmodels/sandbox/regression/data/SmLs05.dat create mode 100644 statsmodels/sandbox/regression/data/SmLs06.dat create mode 100644 statsmodels/sandbox/regression/data/SmLs07.dat create mode 100644 statsmodels/sandbox/regression/data/SmLs08.dat create mode 100644 statsmodels/sandbox/regression/data/SmLs09.dat create mode 100644 statsmodels/sandbox/regression/example_kernridge.py create mode 100644 statsmodels/sandbox/regression/gmm.py create mode 100644 statsmodels/sandbox/regression/kernridgeregress_class.py create mode 100644 statsmodels/sandbox/regression/notes_runmnl.txt create mode 100644 statsmodels/sandbox/regression/ols_anova_original.py create mode 100644 statsmodels/sandbox/regression/onewaygls.py create mode 100644 statsmodels/sandbox/regression/penalized.py create mode 100644 statsmodels/sandbox/regression/predstd.py create mode 100644 statsmodels/sandbox/regression/runmnl.py create mode 100644 statsmodels/sandbox/regression/sympy_diff.py create mode 100644 statsmodels/sandbox/regression/tests/__init__.py create mode 100644 statsmodels/sandbox/regression/tests/griliches76.dta create mode 100644 statsmodels/sandbox/regression/tests/racd10data_with_transformed.csv create mode 100644 statsmodels/sandbox/regression/tests/results_gmm_griliches.py create mode 100644 statsmodels/sandbox/regression/tests/results_gmm_griliches_iter.py create mode 100644 statsmodels/sandbox/regression/tests/results_gmm_poisson.py create mode 100644 statsmodels/sandbox/regression/tests/results_ivreg2_griliches.py create mode 100644 statsmodels/sandbox/regression/tests/test_gmm.py create mode 100644 statsmodels/sandbox/regression/tests/test_gmm_poisson.py create mode 100644 statsmodels/sandbox/regression/tools.py create mode 100644 statsmodels/sandbox/regression/treewalkerclass.py create mode 100644 statsmodels/sandbox/regression/try_catdata.py create mode 100644 statsmodels/sandbox/regression/try_ols_anova.py create mode 100644 statsmodels/sandbox/regression/try_treewalker.py create mode 100644 statsmodels/sandbox/rls.py create mode 100644 statsmodels/sandbox/rlsdata.txt create mode 100644 statsmodels/sandbox/stats/__init__.py create mode 100644 statsmodels/sandbox/stats/contrast_tools.py create mode 100644 statsmodels/sandbox/stats/diagnostic.py create mode 100644 statsmodels/sandbox/stats/ex_newtests.py create mode 100644 statsmodels/sandbox/stats/multicomp.py create mode 100644 statsmodels/sandbox/stats/notes_fdr.txt create mode 100644 statsmodels/sandbox/stats/runs.py create mode 100644 statsmodels/sandbox/stats/stats_dhuard.py create mode 100644 statsmodels/sandbox/stats/stats_mstats_short.py create mode 100644 statsmodels/sandbox/stats/tests/__init__.py create mode 100644 statsmodels/sandbox/sysreg.py create mode 100644 statsmodels/sandbox/tests/GreeneEx15_1.s create mode 100644 statsmodels/sandbox/tests/__init__.py create mode 100644 statsmodels/sandbox/tests/macrodata.s create mode 100644 statsmodels/sandbox/tests/maketests_mlabwrap.py create mode 100644 statsmodels/sandbox/tests/savervs.py create mode 100644 statsmodels/sandbox/tests/sysreg.s create mode 100644 statsmodels/sandbox/tests/test_bspline.py.txt create mode 100644 statsmodels/sandbox/tests/test_formula.py create mode 100644 statsmodels/sandbox/tests/test_gam.py create mode 100644 statsmodels/sandbox/tests/test_pca.py create mode 100644 statsmodels/sandbox/tests/test_predict_functional.py create mode 100644 statsmodels/sandbox/tools/TODO.txt create mode 100644 statsmodels/sandbox/tools/__init__.py create mode 100644 statsmodels/sandbox/tools/cross_val.py create mode 100644 statsmodels/sandbox/tools/mctools.py create mode 100644 statsmodels/sandbox/tools/tools_pca.py create mode 100644 statsmodels/sandbox/tools/try_mctools.py create mode 100644 statsmodels/sandbox/tsa/__init__.py create mode 100644 statsmodels/sandbox/tsa/diffusion.py create mode 100644 statsmodels/sandbox/tsa/diffusion2.py create mode 100644 statsmodels/sandbox/tsa/example_arma.py create mode 100644 statsmodels/sandbox/tsa/examples/ex_mle_arma.py create mode 100644 statsmodels/sandbox/tsa/examples/ex_mle_garch.py create mode 100644 statsmodels/sandbox/tsa/examples/example_var.py create mode 100644 statsmodels/sandbox/tsa/examples/try_ld_nitime.py create mode 100644 statsmodels/sandbox/tsa/fftarma.py create mode 100644 statsmodels/sandbox/tsa/garch.py create mode 100644 statsmodels/sandbox/tsa/movstat.py create mode 100644 statsmodels/sandbox/tsa/notes_organize.txt create mode 100644 statsmodels/sandbox/tsa/try_arma_more.py create mode 100644 statsmodels/sandbox/tsa/try_fi.py create mode 100644 statsmodels/sandbox/tsa/try_var_convolve.py create mode 100644 statsmodels/sandbox/tsa/varma.py create mode 100644 statsmodels/sandbox/utils_old.py create mode 100644 statsmodels/src/__init__.py create mode 100644 statsmodels/src/blas_lapack.pxd create mode 100644 statsmodels/src/capsule.h create mode 100644 statsmodels/src/math.pxd create mode 100644 statsmodels/stats/__init__.py create mode 100644 statsmodels/stats/_adnorm.py create mode 100644 statsmodels/stats/_diagnostic_other.py create mode 100644 statsmodels/stats/_knockoff.py create mode 100644 statsmodels/stats/_lilliefors.py create mode 100644 statsmodels/stats/anova.py create mode 100644 statsmodels/stats/api.py create mode 100644 statsmodels/stats/base.py create mode 100644 statsmodels/stats/contingency_tables.py create mode 100644 statsmodels/stats/contrast.py create mode 100644 statsmodels/stats/correlation_tools.py create mode 100644 statsmodels/stats/descriptivestats.py create mode 100644 statsmodels/stats/diagnostic.py create mode 100644 statsmodels/stats/gof.py create mode 100644 statsmodels/stats/inter_rater.py create mode 100644 statsmodels/stats/knockoff_regeffects.py create mode 100644 statsmodels/stats/libqsturng/CH.r create mode 100644 statsmodels/stats/libqsturng/LICENSE.txt create mode 100644 statsmodels/stats/libqsturng/__init__.py create mode 100644 statsmodels/stats/libqsturng/make_tbls.py create mode 100644 statsmodels/stats/libqsturng/qsturng_.py create mode 100644 statsmodels/stats/libqsturng/tests/__init__.py create mode 100644 statsmodels/stats/libqsturng/tests/bootleg.dat create mode 100644 statsmodels/stats/libqsturng/tests/test_qsturng.py create mode 100644 statsmodels/stats/mediation.py create mode 100644 statsmodels/stats/moment_helpers.py create mode 100644 statsmodels/stats/multicomp.py create mode 100644 statsmodels/stats/multitest.py create mode 100644 statsmodels/stats/multivariate_tools.py create mode 100644 statsmodels/stats/outliers_influence.py create mode 100644 statsmodels/stats/power.py create mode 100644 statsmodels/stats/proportion.py create mode 100644 statsmodels/stats/regularized_covariance.py create mode 100644 statsmodels/stats/sandwich_covariance.py create mode 100644 statsmodels/stats/stattools.py create mode 100644 statsmodels/stats/tabledist.py create mode 100644 statsmodels/stats/tests/__init__.py create mode 100644 statsmodels/stats/tests/gen_contingency_table_tests.R create mode 100644 statsmodels/stats/tests/results/__init__.py create mode 100644 statsmodels/stats/tests/results/anova.R create mode 100644 statsmodels/stats/tests/results/binary_constrict.csv create mode 100644 statsmodels/stats/tests/results/bootleg.csv create mode 100644 statsmodels/stats/tests/results/contingency_table_r_results.csv create mode 100644 statsmodels/stats/tests/results/data.dat create mode 100644 statsmodels/stats/tests/results/framing.csv create mode 100644 statsmodels/stats/tests/results/influence_lsdiag_R.json create mode 100644 statsmodels/stats/tests/results/influence_measures_R.csv create mode 100644 statsmodels/stats/tests/results/influence_measures_bool_R.csv create mode 100644 statsmodels/stats/tests/results/results_influence_logit.csv create mode 100644 statsmodels/stats/tests/results/results_multinomial_proportions.py create mode 100644 statsmodels/stats/tests/results/results_panelrobust.py create mode 100644 statsmodels/stats/tests/results/results_power.py create mode 100644 statsmodels/stats/tests/results/results_proportion.py create mode 100644 statsmodels/stats/tests/results/wspec1.csv create mode 100644 statsmodels/stats/tests/results/wspec2.csv create mode 100644 statsmodels/stats/tests/results/wspec3.csv create mode 100644 statsmodels/stats/tests/results/wspec4.csv create mode 100644 statsmodels/stats/tests/test_anova.py create mode 100644 statsmodels/stats/tests/test_anova_rm.py create mode 100644 statsmodels/stats/tests/test_contingency_tables.py create mode 100644 statsmodels/stats/tests/test_contrast.py create mode 100644 statsmodels/stats/tests/test_correlation.py create mode 100644 statsmodels/stats/tests/test_corrpsd.py create mode 100644 statsmodels/stats/tests/test_data.txt create mode 100644 statsmodels/stats/tests/test_descriptivestats.py create mode 100644 statsmodels/stats/tests/test_diagnostic.py create mode 100644 statsmodels/stats/tests/test_diagnostic_other.py create mode 100644 statsmodels/stats/tests/test_gof.py create mode 100644 statsmodels/stats/tests/test_groups_sw.py create mode 100644 statsmodels/stats/tests/test_influence.py create mode 100644 statsmodels/stats/tests/test_inter_rater.py create mode 100644 statsmodels/stats/tests/test_knockoff.py create mode 100644 statsmodels/stats/tests/test_lilliefors.py create mode 100644 statsmodels/stats/tests/test_mediation.py create mode 100644 statsmodels/stats/tests/test_moment_helpers.py create mode 100644 statsmodels/stats/tests/test_multi.py create mode 100644 statsmodels/stats/tests/test_nonparametric.py create mode 100644 statsmodels/stats/tests/test_pairwise.py create mode 100644 statsmodels/stats/tests/test_panel_robustcov.py create mode 100644 statsmodels/stats/tests/test_power.py create mode 100644 statsmodels/stats/tests/test_proportion.py create mode 100644 statsmodels/stats/tests/test_qsturng.py create mode 100644 statsmodels/stats/tests/test_regularized_covariance.py create mode 100644 statsmodels/stats/tests/test_sandwich.py create mode 100644 statsmodels/stats/tests/test_statstools.py create mode 100644 statsmodels/stats/tests/test_tost.py create mode 100644 statsmodels/stats/tests/test_weightstats.py create mode 100644 statsmodels/stats/weightstats.py create mode 100644 statsmodels/tests/__init__.py create mode 100644 statsmodels/tests/test_package.py create mode 100644 statsmodels/tools/__init__.py create mode 100644 statsmodels/tools/_testing.py create mode 100644 statsmodels/tools/catadd.py create mode 100644 statsmodels/tools/data.py create mode 100644 statsmodels/tools/decorators.py create mode 100644 statsmodels/tools/docstring.py create mode 100644 statsmodels/tools/eval_measures.py create mode 100644 statsmodels/tools/grouputils.py create mode 100644 statsmodels/tools/linalg.py create mode 100644 statsmodels/tools/numdiff.py create mode 100644 statsmodels/tools/parallel.py create mode 100755 statsmodels/tools/print_version.py create mode 100644 statsmodels/tools/rootfinding.py create mode 100644 statsmodels/tools/sequences.py create mode 100644 statsmodels/tools/sm_exceptions.py create mode 100644 statsmodels/tools/testing.py create mode 100644 statsmodels/tools/tests/__init__.py create mode 100644 statsmodels/tools/tests/test_catadd.py create mode 100644 statsmodels/tools/tests/test_data.py create mode 100644 statsmodels/tools/tests/test_decorators.py create mode 100644 statsmodels/tools/tests/test_eval_measures.py create mode 100644 statsmodels/tools/tests/test_grouputils.py create mode 100644 statsmodels/tools/tests/test_linalg.py create mode 100644 statsmodels/tools/tests/test_numdiff.py create mode 100644 statsmodels/tools/tests/test_parallel.py create mode 100644 statsmodels/tools/tests/test_rootfinding.py create mode 100644 statsmodels/tools/tests/test_sequences.py create mode 100644 statsmodels/tools/tests/test_testing.py create mode 100644 statsmodels/tools/tests/test_tools.py create mode 100644 statsmodels/tools/tests/test_transform_model.py create mode 100644 statsmodels/tools/tests/test_web.py create mode 100644 statsmodels/tools/tools.py create mode 100644 statsmodels/tools/transform_model.py create mode 100644 statsmodels/tools/web.py create mode 100644 statsmodels/tsa/__init__.py create mode 100644 statsmodels/tsa/_bds.py create mode 100644 statsmodels/tsa/_exponential_smoothers.pyx create mode 100644 statsmodels/tsa/adfvalues.py create mode 100644 statsmodels/tsa/api.py create mode 100644 statsmodels/tsa/ar_model.py create mode 100644 statsmodels/tsa/arima_model.py create mode 100644 statsmodels/tsa/arima_process.py create mode 100644 statsmodels/tsa/arma_mle.py create mode 100644 statsmodels/tsa/base/__init__.py create mode 100644 statsmodels/tsa/base/datetools.py create mode 100644 statsmodels/tsa/base/tests/__init__.py create mode 100644 statsmodels/tsa/base/tests/test_base.py create mode 100644 statsmodels/tsa/base/tests/test_datetools.py create mode 100644 statsmodels/tsa/base/tests/test_tsa_indexes.py create mode 100644 statsmodels/tsa/base/tsa_model.py create mode 100644 statsmodels/tsa/coint_tables.py create mode 100644 statsmodels/tsa/descriptivestats.py create mode 100644 statsmodels/tsa/filters/__init__.py create mode 100644 statsmodels/tsa/filters/_utils.py create mode 100644 statsmodels/tsa/filters/api.py create mode 100644 statsmodels/tsa/filters/bk_filter.py create mode 100644 statsmodels/tsa/filters/cf_filter.py create mode 100644 statsmodels/tsa/filters/filtertools.py create mode 100644 statsmodels/tsa/filters/hp_filter.py create mode 100644 statsmodels/tsa/filters/tests/__init__.py create mode 100644 statsmodels/tsa/filters/tests/results/__init__.py create mode 100644 statsmodels/tsa/filters/tests/results/filter.R create mode 100644 statsmodels/tsa/filters/tests/results/filter_results.py create mode 100644 statsmodels/tsa/filters/tests/test_filters.py create mode 100644 statsmodels/tsa/holtwinters.py create mode 100644 statsmodels/tsa/innovations/__init__.py create mode 100644 statsmodels/tsa/innovations/_arma_innovations.pyx.in create mode 100644 statsmodels/tsa/innovations/api.py create mode 100644 statsmodels/tsa/innovations/arma_innovations.py create mode 100644 statsmodels/tsa/innovations/tests/__init__.py create mode 100644 statsmodels/tsa/innovations/tests/test_arma_innovations.py create mode 100644 statsmodels/tsa/innovations/tests/test_cython_arma_innovations_fast.py create mode 100644 statsmodels/tsa/interp/__init__.py create mode 100644 statsmodels/tsa/interp/denton.py create mode 100644 statsmodels/tsa/interp/tests/__init__.py create mode 100644 statsmodels/tsa/interp/tests/test_denton.py create mode 100644 statsmodels/tsa/kalmanf/__init__.py create mode 100644 statsmodels/tsa/kalmanf/kalman_loglike.pyx create mode 100644 statsmodels/tsa/kalmanf/kalmanfilter.py create mode 100644 statsmodels/tsa/mlemodel.py create mode 100644 statsmodels/tsa/regime_switching/__init__.py create mode 100644 statsmodels/tsa/regime_switching/_hamilton_filter.pxd create mode 100644 statsmodels/tsa/regime_switching/_hamilton_filter.pyx.in create mode 100644 statsmodels/tsa/regime_switching/_kim_smoother.pxd create mode 100644 statsmodels/tsa/regime_switching/_kim_smoother.pyx.in create mode 100644 statsmodels/tsa/regime_switching/markov_autoregression.py create mode 100644 statsmodels/tsa/regime_switching/markov_regression.py create mode 100644 statsmodels/tsa/regime_switching/markov_switching.py create mode 100644 statsmodels/tsa/regime_switching/tests/__init__.py create mode 100644 statsmodels/tsa/regime_switching/tests/results/__init__.py create mode 100644 statsmodels/tsa/regime_switching/tests/results/mar_filardo.csv create mode 100644 statsmodels/tsa/regime_switching/tests/results/results_predict_fedfunds.csv create mode 100644 statsmodels/tsa/regime_switching/tests/results/results_predict_rgnp.csv create mode 100644 statsmodels/tsa/regime_switching/tests/test_markov_autoregression.py create mode 100644 statsmodels/tsa/regime_switching/tests/test_markov_regression.py create mode 100644 statsmodels/tsa/regime_switching/tests/test_markov_switching.py create mode 100644 statsmodels/tsa/seasonal.py create mode 100644 statsmodels/tsa/statespace/__init__.py create mode 100644 statsmodels/tsa/statespace/_filters/__init__.py create mode 100644 statsmodels/tsa/statespace/_filters/_conventional.pxd create mode 100644 statsmodels/tsa/statespace/_filters/_conventional.pyx.in create mode 100644 statsmodels/tsa/statespace/_filters/_inversions.pxd create mode 100644 statsmodels/tsa/statespace/_filters/_inversions.pyx.in create mode 100644 statsmodels/tsa/statespace/_filters/_univariate.pxd create mode 100644 statsmodels/tsa/statespace/_filters/_univariate.pyx.in create mode 100644 statsmodels/tsa/statespace/_filters/_univariate_diffuse.pxd create mode 100644 statsmodels/tsa/statespace/_filters/_univariate_diffuse.pyx.in create mode 100644 statsmodels/tsa/statespace/_initialization.pxd create mode 100644 statsmodels/tsa/statespace/_initialization.pyx.in create mode 100644 statsmodels/tsa/statespace/_kalman_filter.pxd create mode 100644 statsmodels/tsa/statespace/_kalman_filter.pyx.in create mode 100644 statsmodels/tsa/statespace/_kalman_smoother.pxd create mode 100644 statsmodels/tsa/statespace/_kalman_smoother.pyx.in create mode 100644 statsmodels/tsa/statespace/_pykalman_smoother.py create mode 100644 statsmodels/tsa/statespace/_representation.pxd create mode 100644 statsmodels/tsa/statespace/_representation.pyx.in create mode 100644 statsmodels/tsa/statespace/_simulation_smoother.pxd create mode 100644 statsmodels/tsa/statespace/_simulation_smoother.pyx.in create mode 100644 statsmodels/tsa/statespace/_smoothers/__init__.py create mode 100644 statsmodels/tsa/statespace/_smoothers/_alternative.pxd create mode 100644 statsmodels/tsa/statespace/_smoothers/_alternative.pyx.in create mode 100644 statsmodels/tsa/statespace/_smoothers/_classical.pxd create mode 100644 statsmodels/tsa/statespace/_smoothers/_classical.pyx.in create mode 100644 statsmodels/tsa/statespace/_smoothers/_conventional.pxd create mode 100644 statsmodels/tsa/statespace/_smoothers/_conventional.pyx.in create mode 100644 statsmodels/tsa/statespace/_smoothers/_univariate.pxd create mode 100644 statsmodels/tsa/statespace/_smoothers/_univariate.pyx.in create mode 100644 statsmodels/tsa/statespace/_smoothers/_univariate_diffuse.pxd create mode 100644 statsmodels/tsa/statespace/_smoothers/_univariate_diffuse.pyx.in create mode 100644 statsmodels/tsa/statespace/_tools.pxd create mode 100644 statsmodels/tsa/statespace/_tools.pyx.in create mode 100644 statsmodels/tsa/statespace/api.py create mode 100644 statsmodels/tsa/statespace/dynamic_factor.py create mode 100644 statsmodels/tsa/statespace/initialization.py create mode 100644 statsmodels/tsa/statespace/kalman_filter.py create mode 100644 statsmodels/tsa/statespace/kalman_smoother.py create mode 100644 statsmodels/tsa/statespace/mlemodel.py create mode 100644 statsmodels/tsa/statespace/representation.py create mode 100644 statsmodels/tsa/statespace/sarimax.py create mode 100644 statsmodels/tsa/statespace/simulation_smoother.py create mode 100644 statsmodels/tsa/statespace/structural.py create mode 100644 statsmodels/tsa/statespace/tests/__init__.py create mode 100644 statsmodels/tsa/statespace/tests/kfas_helpers.py create mode 100644 statsmodels/tsa/statespace/tests/results/__init__.py create mode 100644 statsmodels/tsa/statespace/tests/results/clark1989.csv create mode 100644 statsmodels/tsa/statespace/tests/results/example_ssm_wpi1.m create mode 100644 statsmodels/tsa/statespace/tests/results/kfas_helpers.R create mode 100644 statsmodels/tsa/statespace/tests/results/manufac.dta create mode 100644 statsmodels/tsa/statespace/tests/results/results_clark1989_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_dynamic_factor.py create mode 100644 statsmodels/tsa/statespace/tests/results/results_dynamic_factor_stata.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_exact_initial_common_level_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_exact_initial_common_level_restricted_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_exact_initial_dfm_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_exact_initial_local_level_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_exact_initial_local_linear_trend_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_exact_initial_local_linear_trend_missing_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_measurement_error_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_missing_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_mixed_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_intercepts_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_kalman_filter.py create mode 100644 statsmodels/tsa/statespace/tests/results/results_realgdpar_stata.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_sarimax.py create mode 100644 statsmodels/tsa/statespace/tests/results/results_sarimax_coverage.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_simulation_smoothing0.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_simulation_smoothing1.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_simulation_smoothing2.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_simulation_smoothing3.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_simulation_smoothing3_variates.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_simulation_smoothing4.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_simulation_smoothing5.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_simulation_smoothing6.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_smoothing2_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_smoothing3_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_smoothing_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_smoothing_generalobscov_R.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_structural.py create mode 100644 statsmodels/tsa/statespace/tests/results/results_var_R.py create mode 100644 statsmodels/tsa/statespace/tests/results/results_var_R_output.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_var_misc.py create mode 100644 statsmodels/tsa/statespace/tests/results/results_var_stata.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_varmax.py create mode 100644 statsmodels/tsa/statespace/tests/results/results_varmax_stata.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_wpi1_ar3_matlab_ssm.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_wpi1_ar3_stata.csv create mode 100644 statsmodels/tsa/statespace/tests/results/results_wpi1_missing_ar3_matlab_ssm.csv create mode 100644 statsmodels/tsa/statespace/tests/results/test_clark1989_r.R create mode 100644 statsmodels/tsa/statespace/tests/results/test_dynamic_factor_stata.do create mode 100644 statsmodels/tsa/statespace/tests/results/test_exact_diffuse_filtering.R create mode 100644 statsmodels/tsa/statespace/tests/results/test_exact_diffuse_filtering_multivariate.R create mode 100644 statsmodels/tsa/statespace/tests/results/test_exact_diffuse_filtering_stata.do create mode 100644 statsmodels/tsa/statespace/tests/results/test_intercepts.R create mode 100644 statsmodels/tsa/statespace/tests/results/test_realgdpar_r.R create mode 100644 statsmodels/tsa/statespace/tests/results/test_realgdpar_stata.do create mode 100644 statsmodels/tsa/statespace/tests/results/test_sarimax_coverage.do create mode 100644 statsmodels/tsa/statespace/tests/results/test_sarimax_stata.do create mode 100644 statsmodels/tsa/statespace/tests/results/test_simulation_smoothing.R create mode 100644 statsmodels/tsa/statespace/tests/results/test_smoothing.R create mode 100644 statsmodels/tsa/statespace/tests/results/test_smoothing2.R create mode 100644 statsmodels/tsa/statespace/tests/results/test_smoothing3.R create mode 100644 statsmodels/tsa/statespace/tests/results/test_smoothing_generalobscov.R create mode 100644 statsmodels/tsa/statespace/tests/results/test_ucm.R create mode 100644 statsmodels/tsa/statespace/tests/results/test_var.R create mode 100644 statsmodels/tsa/statespace/tests/results/test_var_misc_stata.do create mode 100644 statsmodels/tsa/statespace/tests/results/test_varmax_stata.do create mode 100644 statsmodels/tsa/statespace/tests/results/test_wpi1_stata.do create mode 100644 statsmodels/tsa/statespace/tests/test_collapsed.py create mode 100644 statsmodels/tsa/statespace/tests/test_concentrated.py create mode 100644 statsmodels/tsa/statespace/tests/test_dynamic_factor.py create mode 100644 statsmodels/tsa/statespace/tests/test_exact_diffuse_filtering.py create mode 100644 statsmodels/tsa/statespace/tests/test_impulse_responses.py create mode 100644 statsmodels/tsa/statespace/tests/test_initialization.py create mode 100644 statsmodels/tsa/statespace/tests/test_kalman.py create mode 100644 statsmodels/tsa/statespace/tests/test_mlemodel.py create mode 100644 statsmodels/tsa/statespace/tests/test_models.py create mode 100644 statsmodels/tsa/statespace/tests/test_options.py create mode 100644 statsmodels/tsa/statespace/tests/test_pickle.py create mode 100644 statsmodels/tsa/statespace/tests/test_prediction.py create mode 100644 statsmodels/tsa/statespace/tests/test_representation.py create mode 100644 statsmodels/tsa/statespace/tests/test_sarimax.py create mode 100644 statsmodels/tsa/statespace/tests/test_save.py create mode 100644 statsmodels/tsa/statespace/tests/test_simulate.py create mode 100644 statsmodels/tsa/statespace/tests/test_simulation_smoothing.py create mode 100644 statsmodels/tsa/statespace/tests/test_smoothing.py create mode 100644 statsmodels/tsa/statespace/tests/test_structural.py create mode 100644 statsmodels/tsa/statespace/tests/test_tools.py create mode 100644 statsmodels/tsa/statespace/tests/test_univariate.py create mode 100644 statsmodels/tsa/statespace/tests/test_var.py create mode 100644 statsmodels/tsa/statespace/tests/test_varmax.py create mode 100644 statsmodels/tsa/statespace/tools.py create mode 100644 statsmodels/tsa/statespace/varmax.py create mode 100644 statsmodels/tsa/stattools.py create mode 100644 statsmodels/tsa/tests/__init__.py create mode 100644 statsmodels/tsa/tests/arima.do create mode 100644 statsmodels/tsa/tests/arima112.do create mode 100644 statsmodels/tsa/tests/arima211.do create mode 100644 statsmodels/tsa/tests/results/ARMLEConstantPredict.csv create mode 100644 statsmodels/tsa/tests/results/AROLSConstantPredict.csv create mode 100644 statsmodels/tsa/tests/results/AROLSNoConstantPredict.csv create mode 100644 statsmodels/tsa/tests/results/__init__.py create mode 100644 statsmodels/tsa/tests/results/arima.R create mode 100644 statsmodels/tsa/tests/results/arima111_css_results.py create mode 100644 statsmodels/tsa/tests/results/arima111_forecasts.csv create mode 100644 statsmodels/tsa/tests/results/arima111_results.py create mode 100644 statsmodels/tsa/tests/results/arima111nc_css_results.py create mode 100644 statsmodels/tsa/tests/results/arima111nc_results.py create mode 100644 statsmodels/tsa/tests/results/arima112_css_results.py create mode 100644 statsmodels/tsa/tests/results/arima112_results.py create mode 100644 statsmodels/tsa/tests/results/arima112nc_css_results.py create mode 100644 statsmodels/tsa/tests/results/arima112nc_results.py create mode 100644 statsmodels/tsa/tests/results/arima211_css_results.py create mode 100644 statsmodels/tsa/tests/results/arima211_results.py create mode 100644 statsmodels/tsa/tests/results/arima211nc_css_results.py create mode 100644 statsmodels/tsa/tests/results/arima211nc_results.py create mode 100644 statsmodels/tsa/tests/results/arima212_forecast.csv create mode 100644 statsmodels/tsa/tests/results/arima_forecast.inp create mode 100644 statsmodels/tsa/tests/results/arma_forecast.inp create mode 100644 statsmodels/tsa/tests/results/bds_data.csv create mode 100644 statsmodels/tsa/tests/results/bds_results.csv create mode 100644 statsmodels/tsa/tests/results/corrgram.do create mode 100644 statsmodels/tsa/tests/results/datamlw_tls.py create mode 100644 statsmodels/tsa/tests/results/housing-data.csv create mode 100644 statsmodels/tsa/tests/results/lutkepohl2.dta create mode 100644 statsmodels/tsa/tests/results/make_arma.py create mode 100644 statsmodels/tsa/tests/results/resids_css_c.csv create mode 100644 statsmodels/tsa/tests/results/resids_css_nc.csv create mode 100644 statsmodels/tsa/tests/results/resids_exact_c.csv create mode 100644 statsmodels/tsa/tests/results/resids_exact_nc.csv create mode 100644 statsmodels/tsa/tests/results/results_ar.py create mode 100644 statsmodels/tsa/tests/results/results_ar_forecast_mle_dynamic.csv create mode 100644 statsmodels/tsa/tests/results/results_arima.py create mode 100644 statsmodels/tsa/tests/results/results_arima_exog_forecasts_css.csv create mode 100644 statsmodels/tsa/tests/results/results_arima_exog_forecasts_mle.csv create mode 100644 statsmodels/tsa/tests/results/results_arima_forecasts.csv create mode 100644 statsmodels/tsa/tests/results/results_arima_forecasts_all_css.csv create mode 100644 statsmodels/tsa/tests/results/results_arima_forecasts_all_css_diff.csv create mode 100644 statsmodels/tsa/tests/results/results_arima_forecasts_all_mle.csv create mode 100644 statsmodels/tsa/tests/results/results_arima_forecasts_all_mle_diff.csv create mode 100644 statsmodels/tsa/tests/results/results_arma.py create mode 100644 statsmodels/tsa/tests/results/results_arma_acf.py create mode 100644 statsmodels/tsa/tests/results/results_arma_forecasts.csv create mode 100644 statsmodels/tsa/tests/results/results_corrgram.csv create mode 100644 statsmodels/tsa/tests/results/results_process.py create mode 100644 statsmodels/tsa/tests/results/savedrvs.py create mode 100644 statsmodels/tsa/tests/results/test_arma_acf.R create mode 100644 statsmodels/tsa/tests/results/test_bds.m create mode 100644 statsmodels/tsa/tests/results/y_arma_data.csv create mode 100644 statsmodels/tsa/tests/results/yhat_css_c.csv create mode 100644 statsmodels/tsa/tests/results/yhat_css_nc.csv create mode 100644 statsmodels/tsa/tests/results/yhat_exact_c.csv create mode 100644 statsmodels/tsa/tests/results/yhat_exact_nc.csv create mode 100644 statsmodels/tsa/tests/test_adfuller_lag.py create mode 100644 statsmodels/tsa/tests/test_ar.py create mode 100644 statsmodels/tsa/tests/test_arima.py create mode 100644 statsmodels/tsa/tests/test_arima_process.py create mode 100644 statsmodels/tsa/tests/test_bds.py create mode 100644 statsmodels/tsa/tests/test_holtwinters.py create mode 100644 statsmodels/tsa/tests/test_seasonal.py create mode 100644 statsmodels/tsa/tests/test_stattools.py create mode 100644 statsmodels/tsa/tests/test_tsa_tools.py create mode 100644 statsmodels/tsa/tests/test_x13.py create mode 100644 statsmodels/tsa/tsatools.py create mode 100644 statsmodels/tsa/varma_process.py create mode 100644 statsmodels/tsa/vector_ar/__init__.py create mode 100644 statsmodels/tsa/vector_ar/api.py create mode 100755 statsmodels/tsa/vector_ar/dynamic.py create mode 100644 statsmodels/tsa/vector_ar/hypothesis_test_results.py create mode 100644 statsmodels/tsa/vector_ar/irf.py create mode 100644 statsmodels/tsa/vector_ar/output.py create mode 100644 statsmodels/tsa/vector_ar/plotting.py create mode 100644 statsmodels/tsa/vector_ar/svar_model.py create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/__init__.py create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_Sigmau.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_fc5.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realcons.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realcons_realgdp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realcons_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realgdp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realgdp_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_lagorder.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_Sigmau.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_fc5.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realcons.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realcons_realgdp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realcons_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realgdp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realgdp_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_lagorder.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_Sigmau.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_fc5.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realcons.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realcons_realgdp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realcons_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realgdp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realgdp_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_lagorder.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_Sigmau.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_fc5.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realcons.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realcons_realgdp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realcons_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realgdp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realgdp_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_lagorder.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_Sigmau.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_fc5.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realcons.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realcons_realgdp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realcons_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realgdp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realgdp_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_lagorder.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_Sigmau.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_fc5.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realcons.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realcons_realgdp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realcons_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realgdp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realgdp_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realinv.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_lagorder.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/parse_jmulti_var_output.py create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/parse_jmulti_vecm_output.py create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_Sigmau.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_fc5.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_granger_causality_dp_r.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_granger_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_inst_causality_dp_r.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_inst_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_lagorder.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_Sigmau.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_fc5.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_granger_causality_dp_r.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_granger_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_inst_causality_dp_r.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_inst_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_lagorder.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_Sigmau.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_fc5.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_granger_causality_dp_r.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_granger_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_inst_causality_dp_r.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_inst_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_lagorder.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_Sigmau.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_fc5.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_granger_causality_dp_r.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_granger_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_inst_causality_dp_r.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_inst_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_lagorder.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_Sigmau.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_fc5.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_granger_causality_dp_r.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_granger_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_inst_causality_dp_r.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_inst_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_lagorder.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_Sigmau.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_fc5.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_granger_causality_dp_r.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_granger_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_inst_causality_dp_r.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_inst_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_lagorder.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_Sigmau.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_fc5.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_granger_causality_dp_r.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_granger_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_inst_causality_dp_r.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_inst_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_lagorder.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_Sigmau.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_fc5.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_granger_causality_dp_r.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_granger_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_inst_causality_dp_r.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_inst_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_lagorder.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_Sigmau.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_fc5.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_granger_causality_dp_r.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_granger_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_inst_causality_dp_r.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_inst_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_lagorder.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_Sigmau.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_diag.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_fc5.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_granger_causality_dp_r.txt create mode 100644 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_granger_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_inst_causality_dp_r.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_inst_causality_r_dp.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_ir.txt create mode 100755 statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_lagorder.txt create mode 100644 statsmodels/tsa/vector_ar/tests/Matlab_results/__init__.py create mode 100644 statsmodels/tsa/vector_ar/tests/Matlab_results/test_coint.csv create mode 100644 statsmodels/tsa/vector_ar/tests/__init__.py create mode 100644 statsmodels/tsa/vector_ar/tests/example_svar.py create mode 100644 statsmodels/tsa/vector_ar/tests/results/__init__.py create mode 100644 statsmodels/tsa/vector_ar/tests/results/e1.dat create mode 100644 statsmodels/tsa/vector_ar/tests/results/e2.dat create mode 100644 statsmodels/tsa/vector_ar/tests/results/e3.dat create mode 100644 statsmodels/tsa/vector_ar/tests/results/e4.dat create mode 100644 statsmodels/tsa/vector_ar/tests/results/e5.dat create mode 100644 statsmodels/tsa/vector_ar/tests/results/e6.dat create mode 100644 statsmodels/tsa/vector_ar/tests/results/results_svar.py create mode 100644 statsmodels/tsa/vector_ar/tests/results/results_svar_st.py create mode 100644 statsmodels/tsa/vector_ar/tests/results/results_var.py create mode 100644 statsmodels/tsa/vector_ar/tests/results/results_var_data.py create mode 100644 statsmodels/tsa/vector_ar/tests/results/vars_results.npz create mode 100644 statsmodels/tsa/vector_ar/tests/svar.do create mode 100644 statsmodels/tsa/vector_ar/tests/svartest.R create mode 100644 statsmodels/tsa/vector_ar/tests/test_coint.py create mode 100644 statsmodels/tsa/vector_ar/tests/test_dynamic.py create mode 100644 statsmodels/tsa/vector_ar/tests/test_svar.py create mode 100644 statsmodels/tsa/vector_ar/tests/test_var.py create mode 100644 statsmodels/tsa/vector_ar/tests/test_var_jmulti.py create mode 100644 statsmodels/tsa/vector_ar/tests/test_vecm.py create mode 100644 statsmodels/tsa/vector_ar/tests/var.R create mode 100644 statsmodels/tsa/vector_ar/util.py create mode 100644 statsmodels/tsa/vector_ar/var_model.py create mode 100644 statsmodels/tsa/vector_ar/vecm.py create mode 100644 statsmodels/tsa/x13.py create mode 100644 tools/R2nparray/DESCRIPTION create mode 100644 tools/R2nparray/NAMESPACE create mode 100644 tools/R2nparray/R/R2nparray-package.R create mode 100644 tools/R2nparray/R/R2nparray.R create mode 100644 tools/R2nparray/R/ex_sur.R create mode 100644 tools/R2nparray/README.txt create mode 100644 tools/README.rst create mode 100644 tools/backport_pr.py create mode 100644 tools/binstar/README.md create mode 100644 tools/binstar/binstar_unix.sh create mode 100644 tools/binstar/binstar_windows.bat create mode 100644 tools/binstar/bld.bat create mode 100644 tools/binstar/build.sh create mode 100644 tools/binstar/meta.yaml create mode 100644 tools/binstar/python2_setup.bat create mode 100644 tools/binstar/python3_setup.bat create mode 100644 tools/check_dirs.py create mode 100644 tools/ci/appveyor_conda.bat create mode 100644 tools/ci/appveyor_pip.bat create mode 100644 tools/ci/azure_template.yml create mode 100644 tools/ci/docbuild.sh create mode 100644 tools/ci/docbuild_install.sh create mode 100644 tools/ci/run_test.bat create mode 100644 tools/ci/travis_conda.sh create mode 100644 tools/ci/travis_pip.sh create mode 100644 tools/code_maintenance.py create mode 100755 tools/dataset_rst.py create mode 100644 tools/estmat2nparray.ado create mode 100755 tools/examples_rst.py create mode 100644 tools/export_notebooks_to_python.py create mode 100755 tools/fold_toc.py create mode 100755 tools/generate_formula_api.py create mode 100644 tools/gh_api.py create mode 100644 tools/github_stats.py create mode 100644 tools/hash_funcs.py create mode 100644 tools/km_cox1.do create mode 100644 tools/matplotlibrc.qt4 create mode 100644 tools/matplotlibrc.qt5 create mode 100755 tools/nbgenerate.py create mode 100644 tools/notebook2python.tpl create mode 100644 tools/notebook_output_template.py create mode 100755 tools/update_web.py create mode 100644 tox.ini create mode 100644 versioneer.py diff --git a/.codacy.yml b/.codacy.yml new file mode 100644 index 0000000..9952591 --- /dev/null +++ b/.codacy.yml @@ -0,0 +1,5 @@ +--- +exclude_paths: + - '**/_version.py' + - 'versioneer.py' + diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 0000000..86c9811 --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,11 @@ +codecov: + notify: + require_ci_to_pass: no + after_n_builds: 1 + +coverage: + status: + project: + default: + # basic + threshold: 0.05 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..f3f53cc --- /dev/null +++ b/.gitattributes @@ -0,0 +1,3 @@ +* text=auto + +statsmodels/_version.py export-subst diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md new file mode 100644 index 0000000..0ab1731 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -0,0 +1,45 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +#### Describe the bug + +[A clear and concise description of what the bug is. This should explain **why** the current behaviour is a problem and why the expected output is a better solution.] + +#### Code Sample, a copy-pastable example if possible + + +```python +# Your code here that produces the bug +# This example should be self-contained, and so not rely on external data. +# It should run in a fresh ipython session, and so include all relevant imports. +``` +
+ +**Note**: As you can see, there are many issues on our GitHub tracker, so it is very possible that your issue has been posted before. Please check first before submitting so that we do not have to handle and close duplicates. + +**Note**: Please be sure you are using the latest released version of `statsmodels`, or a recent build of `master`. If your problem has been fixed in an unreleased version, you might be able to use `master` until a new release occurs. + +**Note**: If you are using a released version, have you verified that the bug exists in the master branch of this repository? It helps the limited resources if we know problems exist in the current master so that they do not need to check whether the code sample produces a bug in the next release. + +
+ + +If the issue has not been resolved, please file it in the issue tracker. + +#### Expected Output + +A clear and concise description of what you expected to happen. + +#### Output of ``import statsmodels.api as sm; sm.show_versions()`` + +
+ +[paste the output of ``import statsmodels.api as sm; sm.show_versions()`` here below this line] + +
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md new file mode 100644 index 0000000..8e34fc0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +#### Is your feature request related to a problem? Please describe +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +#### Describe the solution you'd like +A clear and concise description of what you want to happen. + +#### Describe alternatives you've considered +A clear and concise description of any alternative solutions or features you've considered. + +#### Additional context +Add any other context about the feature request here. \ No newline at end of file diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..4751a69 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,28 @@ +- [ ] closes #xxxx +- [ ] tests added / passed. +- [ ] code/documentation is well formatted. +- [ ] properly formatted commit message. See + [NumPy's guide](https://docs.scipy.org/doc/numpy/dev/gitwash/development_workflow.html#writing-the-commit-message). + +
+ + +**Notes**: + +* It is essential that you add a test when making code changes. Tests are not + needed for doc changes. +* When adding a new function, test values should usually be verified in another package (e.g., R/SAS/Stata). +* When fixing a bug, you must add a test that would produce the bug in master and + then show that it is fixed with the new code. +* New code additions must be well formatted. Changes should pass flake8. If on Linux or OSX, you can + verify you changes are well formatted by running + ``` + git diff upstream/master -u -- "*.py" | flake8 --diff --isolated + ``` + assuming `flake8` is installed. This command is also available on Windows + using the Windows System for Linux once `flake8` is installed in the + local Linux environment. While passing this test is not required, it is good practice and it help + improve code quality in `statsmodels`. +* Docstring additions must render correctly, including escapes and LaTeX. + +
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c4af8b2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,99 @@ +*.py[oc] +# setup.py working directory +build +# setup.py dist directory +dist +#docs build and others +#generated #not yet? generated for dataset not rebuild +docs/source/generated +docs/source/dev/generated +docs/source/examples/generated +docs/source/datasets/generated +docs/source/examples/notebooks/generated +docs/source/datasets/statsmodels.datasets.* +docs/source/savefig +docs/gettingstarted_0.png +examples/executed + +# generated c source and built extensions +*.c +*.so +*.pyd + +# repository directories for bzr-git +.bzr +.git +marks.git +marks.bzr + +# virtualenv stuff +.venv + +# Editor temporary/working/backup files +*$ +.*.sw[nop] +.sw[nop] +*~ +[#]*# +.#* +*.bak +*.tmp +/.idea +*.tgz +*.rej +*.org +.project +*.diff +.settings/ +*.svn/ +*.log.py +# Egg metadata +*.egg-info +# The shelf plugin uses this dir +.shelf +# Mac droppings +.DS_Store +help + +# Coverage report output +.coverage +coverage_html_report/ + +# Idea IDE +.idea/ + +# Project specific +statsmodels/version.py +statsmodels.egg-info/ +iterate.dat +hash_dict.pickle +rehab.table +salary.table +.ipynb_checkpoints +statsmodels/tsa/statespace/_statespace.pyx +statsmodels/tsa/innovations/_arma_innovations.pyx +statsmodels/tsa/regime_switching/_hamilton_filter.pyx +statsmodels/tsa/regime_switching/_kim_smoother.pyx +statsmodels/tsa/statespace/_initialization.pyx +statsmodels/tsa/statespace/_representation.pyx +statsmodels/tsa/statespace/_kalman_filter.pyx +statsmodels/tsa/statespace/_kalman_smoother.pyx +statsmodels/tsa/statespace/_simulation_smoother.pyx +statsmodels/tsa/statespace/_tools.pyx +statsmodels/tsa/statespace/_filters/_conventional.pyx +statsmodels/tsa/statespace/_filters/_inversions.pyx +statsmodels/tsa/statespace/_filters/_univariate.pyx +statsmodels/tsa/statespace/_filters/_univariate_diffuse.pyx +statsmodels/tsa/statespace/_smoothers/_conventional.pyx +statsmodels/tsa/statespace/_smoothers/_univariate.pyx +statsmodels/tsa/statespace/_smoothers/_univariate_diffuse.pyx +statsmodels/tsa/statespace/_smoothers/_alternative.pyx +statsmodels/tsa/statespace/_smoothers/_classical.pyx + +#pytest +.cache +.pytest_cache + +# Temporary copies for packaging +statsmodels/setup.cfg +statsmodels/LICENSE.txt diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000..a772d25 --- /dev/null +++ b/.mailmap @@ -0,0 +1,97 @@ +Alexander W Blocker Alexander W Blocker +Alex Griffing alex +Alexis Roche Alexis Roche +Ana Martinez Pardo Ana Martinez Pardo +Ana Martinez Pardo Ana Martinez Pardo +anov anov +avishaylivne avishaylivne +Bart Baker Bart Baker +Bart Baker bartbkr +Bart Baker bartbkr@gmail.com +Ben Duffield benduffield +Benjamin Thyreau benjamin.thyreau <> +brian.hawthorne <> brian.hawthorne <> +Bruno Rodrigues Bruno Rodrigues +Carl Vogel Carl Vogel +Chad Fulton Chad Fulton +Chris Jordan-Squire Chris Jordan-Squire +Christian Prinoth Christian Prinoth +Christopher Burns cburns <> +Christopher Burns Chris +Christopher Burns Christopher Burns +Cindee Madison Cindee Madison +Daniel B. Smith Daniel B. Smith +davclark <> davclark <> +dengemann dengemann +Dieter Vandenbussche Dieter Vandenbussche +Dougal Sutherland Dougal Sutherland +Enrico Giampieri Enrico Giampieri +Eric Chiang ericchiang +evelynmitchell evelynmitchell +Evgeni Burovski Zhenya +Fernando Perez fdo.perez <> +Fernando Perez Fernando Perez +Gael Varoquaux Gael Varoquaux +George Panterov George Panterov +Grayson Grayson +Jan Schulz Jan Schulz +Jarrod Millman jarrod.millman <> +Jarrod Millman Jarrod Millman +Jeff Reback jreback +Jonathan Taylor jonathan.taylor <> +Jonathan Taylor Jonathan Taylor +Jonathan Taylor Jonathan Taylor +Jonathan Taylor Jonathan Taylor +Jonathan Taylor Jonathan Taylor +Jonathan Taylor jtaylo +Josef Perktold Josef Perktold +Justin Grana Justin Grana +langmore langmore +Matthew Brett matthew.brett <> +Matthew Brett Matthew Brett <> +Matthew Brett Matthew Brett +Matthew Brett Matthew Brett +Matthieu Brucher Matthieu Brucher +michael.castelle <> michael.castelle <> +Mike Crowe Mike Crowe +Mike Crowe Mike Crowe +Mike Crowe Mike +Nathaniel J. Smith Nathaniel J. Smith +otterb otterb +Padarn Wilson padarn +Padarn Wilson Padarn +Paris Sprint Account Paris Sprint Account +Paul Hobson Paul Hobson +Peter Prettenhofer Peter Prettenhofer +Pietro Battiston Pietro Battiston +Ralf Gommers Ralf Gommers +Richard T. Guy Richard T. Guy +Robert Cimrman Robert Cimrman +Roger Lew Roger Lew +scottpiraino scottpiraino +sebastien.meriaux <> sebastien.meriaux <> +Skipper Seabold jsseabold <> +Skipper Seabold jsseabold +Skipper Seabold Skipper Seabold +skipper seabold skipper seabold +Skipper Seabold skipper +Skipper Seabold skipper +Steve Genoud Steve Genoud +Thomas Haslwanter Thomas Haslwanter +Thomas Kluyver Thomas Kluyver +tim.leslie <> tim.leslie <> +timmie timmie +Tom Augspurger TomAugspurger +Tom Augspurger Tom Augspurger +Tom Waite Tom Waite +Tom Waite twaite +Trent Hauck Trent Hauck +Trent Hauck tshauck +tylerhartley tylerhartley +Vincent Arel-Bundock Vincent Arel-Bundock +Vincent Davis Vincent Davis +VirgileFritsch VirgileFritsch +Wes McKinney Wes McKinney +Wes McKinney Wes McKinney +Yaroslav Halchenko Yaroslav Halchenko +zed zed diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..0c9ac8e --- /dev/null +++ b/.travis.yml @@ -0,0 +1,190 @@ +# Travis script that uses miniconda in place of the system installed python +# versions. Allows substantial flexibility for choosing versions of +# required packages and is simpler to use to test up-to-date scientific Python +# stack +dist: xenial +sudo: required +language: python + +git: + depth: 10000 + +env: + # Default values for common packages, override as needed + global: + - OPTIONAL= + - COVERAGE=false + - USE_MATPLOTLIB=true + - USE_CVXOPT=true + - MATPLOTLIB= + - DOCBUILD=false + - LINT=false + - MKL_NUM_THREADS=1 # Enforce single thread + - NUMEXPR_NUM_THREADS=1 + - OMP_NUM_THREADS=1 + - OPENBLAS_NUM_THREADS=1 + - PYTHONHASHSEED=0 # Ensure tests are correctly gathered by xdist + - BLAS="mkl blas=*=mkl" # Use Intel MKL by default + - BUILD_INIT=tools/ci/travis_conda.sh + - DEPEND_ALWAYS="pyyaml joblib pip colorama" + - # Doctr deploy key for statsmodels/statsmodels.github.io + - secure: "AzwB23FWdilHKVcEJnj57AsoY5yKTWT8cQKzsH2ih9i08wIXvZXP/Ui8XRDygV9tDKfqGVltC7HpBBDE3C4ngeMlis4uuKWlkp0O1757YQe+OdDnimuDZhrh3ILEk7xW3ab5YizjLeyv3iiBW7cNS5z8W3Yu8HeJPkr6Ck30gAA=" + - SM_CYTHON_COVERAGE=false # Run takes > 1 hour and so not feasible + +matrix: + fast_finish: true + include: + # Python 2.7 + partially updated numpy, mpl; cutting edge scipy, pandas + - python: 2.7 + env: + - PYTHON=2.7 + - NUMPY=1.13 + - MATPLOTLIB=2.0 + - COVERAGE=true + # Python 2.7 + baseline packages + - python: 2.7 + env: + - PYTHON=2.7 + - NUMPY=1.12 + - BLAS= # Do not specify blas in this config due to conflict + - SCIPY=0.19 + - PANDAS=0.20 + - USEMPL=false + - LINT=true + # Python 3.4 + baseline packages + - python: 3.4 + env: + - PYTHON=3.4 + - NUMPY=1.11 + - SCIPY=0.18 + - PANDAS=0.19 + - MATPLOTLIB=1.5 + - USE_CVXOPT=false + # Python 3.7 + cutting edge packages + - python: 3.7 + env: + - PYTHON=3.7 + - COVERAGE=true + # Documentation build (on Python 3.6 + cutting edge packages) + - python: 3.7 + env: + - PYTHON=3.7 + - SCIPY=1.2 + - PANDAS=0.24 + - DOCBUILD=true + - NUMPY=1.16 + # Python 3.6 + legacy blas + - python: 3.6 + env: + - PYTHON=3.6 + - NUMPY=1.14 + - BLAS="nomkl blas=*=openblas" + # Python 3.5 + partially updated packages + - python: 3.5 + env: + - PYTHON=3.5 + - NUMPY=1.13 + - SCIPY=1.0 + - PANDAS=0.22 + - MATPLOTLIB=2.0 + - LINT=true + # Latest pre-release packages + - python: 3.7 + env: + - PIP_PRE=true + - BUILD_INIT=tools/ci/travis_pip.sh + - python: 3.8 + env: + - BUILD_INIT=tools/ci/travis_pip.sh + - USE_MATPLOTLIB=false + - USE_CVXOPT=false + - os: osx + language: generic + env: + - PYTHON=3.6.6 + - NUMPY=1.14 + - BUILD_INIT=tools/ci/travis_pip.sh + - os: osx + language: generic + env: + - PYTHON=3.7 + + allow_failures: + # pre-testing is a little fragile. Make it an FYI. + - python: 3.7 + env: + - PIP_PRE=true + - BUILD_INIT=tools/ci/travis_pip.sh + - os: osx + language: generic + env: + - PYTHON=3.6.6 + - NUMPY=1.14 + - BUILD_INIT=tools/ci/travis_pip.sh + - os: osx + language: generic + env: + - PYTHON=3.7 + +notifications: + email: + on_success: always + +before_install: + # Skip if commit message contains [skip travis] or [travis skip] + - COMMIT_MESSAGE=$(git show -s $TRAVIS_COMMIT_RANGE | awk 'BEGIN{count=0}{if ($1=="Author:") count++; if (count==1) print $0}') + - if [[ $TRAVIS_PULL_REQUEST == false ]]; then COMMIT_MESSAGE=${TRAVIS_COMMIT_MESSAGE}; fi + - if echo "$COMMIT_MESSAGE" | grep -E '\[(skip travis|travis skip)\]'; then exit 0 ; fi + # Show information about CPU running job to understand BLAS issues + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo lshw -class processor; fi + - if [ "$TRAVIS_OS_NAME" = "osx" ]; then sysctl -a | grep machdep.cpu; fi + # Fix for headless TravisCI + - "export DISPLAY=:99.0" + - if [ "$TRAVIS_OS_NAME" = "linux" ]; then ( sh -e /etc/init.d/xvfb start )& fi + - if [ "$TRAVIS_OS_NAME" = "osx" ]; then ( sudo Xvfb :99 -ac -screen 0 1024x768x8; echo ok )& fi + # Avoid noise from matplotlib + - mkdir -p $HOME/.config/matplotlib + - SRCDIR=$PWD + # Source recipe to install packages + - source $BUILD_INIT + - pip install pytest pip pytest-randomly nose jupyter_client nbformat + # Moved to enable Python 3.8 since cvxopt wheel is not available + - if [ ${USE_CVXOPT} = true ]; then pip install cvxopt; fi + - if [ "$TRAVIS_OS_NAME" = "osx" ]; then pip install "pytest-xdist!=1.30"; fi; + - | + if [ ${COVERAGE} = true ]; then + pip install codecov coverage coveralls pytest-cov + export COVERAGE_OPTS="--cov=statsmodels --cov-report=" + echo "Cython coverage:" ${SM_CYTHON_COVERAGE} + else + export COVERAGE_OPTS="" + fi + - pip install flake8 + - export SRCDIR=$PWD + +# Install packages +install: + - python setup.py develop + +before_script: + - if [ ${DOCBUILD} = true ]; then source tools/ci/docbuild_install.sh; fi; + +script: + # Show versions + - python -c 'import statsmodels.api as sm; sm.show_versions();' + # docbuild and exit, if required + - if [ ${DOCBUILD} = true ]; then cd ${SRCDIR}/docs; source ${SRCDIR}/tools/ci/docbuild.sh; exit 0; fi; + # Run tests + - | + if [ "$TRAVIS_OS_NAME" = "osx" ]; then + export XDIST_OPTS="-n2" + else + export XDIST_OPTS="" + fi + - echo pytest -r a ${COVERAGE_OPTS} statsmodels --skip-examples ${XDIST_OPTS} + - pytest -r a ${COVERAGE_OPTS} statsmodels --skip-examples ${XDIST_OPTS} + - ./lint.sh + +after_success: + - if [ ${COVERAGE} = true ]; then coveralls; fi + - if [ ${COVERAGE} = true ]; then codecov; fi diff --git a/CHANGES.md b/CHANGES.md new file mode 100644 index 0000000..7b10393 --- /dev/null +++ b/CHANGES.md @@ -0,0 +1,4 @@ +Release Notes +============= + +The list of changes for each statsmodels release can be found [here](https://www.statsmodels.org/devel/release/index.html). Full details are available in the [commit logs](https://github.com/statsmodels/statsmodels). diff --git a/CONTRIBUTING.rst b/CONTRIBUTING.rst new file mode 100644 index 0000000..f51c186 --- /dev/null +++ b/CONTRIBUTING.rst @@ -0,0 +1,73 @@ +Contributing guidelines +======================= + +This page explains how you can contribute to the development of `statsmodels` +by submitting patches, statistical tests, new models, or examples. + +`statsmodels` is developed on `Github `_ +using the `Git `_ version control system. + +Submitting a Bug Report +~~~~~~~~~~~~~~~~~~~~~~~ + +- Include a short, self-contained code snippet that reproduces the problem +- Specify the statsmodels version used. You can do this with ``sm.version.full_version`` +- If the issue looks to involve other dependencies, also include the output of ``sm.show_versions()`` + +Making Changes to the Code +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +For a pull request to be accepted, you must meet the below requirements. This greatly helps in keeping the job of maintaining and releasing the software a shared effort. + +- **One branch. One feature.** Branches are cheap and github makes it easy to merge and delete branches with a few clicks. Avoid the temptation to lump in a bunch of unrelated changes when working on a feature, if possible. This helps us keep track of what has changed when preparing a release. +- Commit messages should be clear and concise. This means a subject line of less than 80 characters, and, if necessary, a blank line followed by a commit message body. We have an `informal commit format standard `_ that we try to adhere to. You can see what this looks like in practice by ``git log --oneline -n 10``. If your commit references or closes a specific issue, you can close it by mentioning it in the `commit message `_. (*For maintainers*: These suggestions go for Merge commit comments too. These are partially the record for release notes.) +- Code submissions must always include tests. See our `notes on testing `_. +- Each function, class, method, and attribute needs to be documented using docstrings. We conform to the `numpy docstring standard `_. +- If you are adding new functionality, you need to add it to the documentation by editing (or creating) the appropriate file in ``docs/source``. +- Make sure your documentation changes parse correctly. Change into the top-level ``docs/`` directory and type:: + + make clean + make html + + Check that the build output does not have *any* warnings due to your changes. +- Finally, please add your changes to the release notes. Open the ``docs/source/release/versionX.X.rst`` file that has the version number of the next release and add your changes to the appropriate section. + +Linting +~~~~~~~ + +Due to the way we have the CI builds set up, the linter won't do anything unless the environmental variable $LINT is set to a truthy value. + +- On MacOS/Linux + + LINT=true ./lint.sh + +- Dependencies: flake8, git + +How to Submit a Pull Request +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +So you want to submit a patch to `statsmodels` but aren't too familiar with github? Here are the steps you need to take. + +1. `Fork `_ the `statsmodels repository `_ on Github. +2. `Create a new feature branch `_. Each branch must be self-contained, with a single new feature or bugfix. +3. Make sure the test suite passes. This includes testing on Python 3. The easiest way to do this is to either enable `Travis-CI `_ on your fork, or to make a pull request and check there. +4. Document your changes by editing the appropriate file in ``docs/source/``. If it is a big, new feature add a note and an example to the latest ``docs/source/release/versionX.X.rst`` file. See older versions for examples. If it's a minor change, it will be included automatically in our relase notes. +5. Add an example. If it is a big, new feature please submit an example notebook by following `these instructions `_. +6. `Submit a pull request `_ + +Mailing List +~~~~~~~~~~~~ + +Conversations about development take place on the `statsmodels mailing list `__. + +Learn More +~~~~~~~~~~ + +The ``statsmodels`` documentation's `developer page `_ +offers much more detailed information about the process. + +License +~~~~~~~ + +Statsmodels is released under the +`Modified (3-clause) BSD license `_. diff --git a/COPYRIGHTS.txt b/COPYRIGHTS.txt new file mode 100644 index 0000000..ac4447a --- /dev/null +++ b/COPYRIGHTS.txt @@ -0,0 +1,249 @@ + +The license of statsmodels can be found in LICENSE.txt + +statsmodels contains code or derivative code from several other +packages. Some modules also note the author of individual contributions, or +author of code that formed the basis for the derived or translated code. +The copyright statements for the datasets are attached to the individual +datasets, most datasets are in public domain, and we don't claim any copyright +on any of them. + +In the following, we collect copyright statements of code from other packages, +all of which are either a version of BSD or MIT licensed: + +numpy +scipy +pandas +matplotlib +scikit-learn +qsturng-py http://code.google.com/p/qsturng-py/ + + +numpy (statsmodels.compatnp contains copy of entire model) +---------------------------------------------------------- +Copyright (c) 2005-2009, NumPy Developers. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the NumPy Developers nor the names of any + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +--------------------------------------------------------------------- + +scipy +----- +Copyright (c) 2001, 2002 Enthought, Inc. +All rights reserved. + +Copyright (c) 2003-2009 SciPy Developers. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + a. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + b. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + c. Neither the name of the Enthought nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. +--------------------------------------------------------------------------- + + +pandas +------ + +Copyright (c) 2008-2009 AQR Capital Management, LLC +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + + * Neither the name of the copyright holder nor the names of any + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +---------------------------------------------------------------------- + + +matplotlib (copied from license.py) +----------------------------------- + + +LICENSE AGREEMENT FOR MATPLOTLIB %(version)s +-------------------------------------- + +1. This LICENSE AGREEMENT is between John D. Hunter ("JDH"), and the +Individual or Organization ("Licensee") accessing and otherwise using +matplotlib software in source or binary form and its associated +documentation. + +2. Subject to the terms and conditions of this License Agreement, JDH +hereby grants Licensee a nonexclusive, royalty-free, world-wide license +to reproduce, analyze, test, perform and/or display publicly, prepare +derivative works, distribute, and otherwise use matplotlib %(version)s +alone or in any derivative version, provided, however, that JDH's +License Agreement and JDH's notice of copyright, i.e., "Copyright (c) +2002-%(year)d John D. Hunter; All Rights Reserved" are retained in +matplotlib %(version)s alone or in any derivative version prepared by +Licensee. + +3. In the event Licensee prepares a derivative work that is based on or +incorporates matplotlib %(version)s or any part thereof, and wants to +make the derivative work available to others as provided herein, then +Licensee hereby agrees to include in any such work a brief summary of +the changes made to matplotlib %(version)s. + +4. JDH is making matplotlib %(version)s available to Licensee on an "AS +IS" basis. JDH MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR +IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, JDH MAKES NO AND +DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS +FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF MATPLOTLIB %(version)s +WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. + +5. JDH SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF MATPLOTLIB +%(version)s FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR +LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING +MATPLOTLIB %(version)s, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF +THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material +breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any +relationship of agency, partnership, or joint venture between JDH and +Licensee. This License Agreement does not grant permission to use JDH +trademarks or trade name in a trademark sense to endorse or promote +products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using matplotlib %(version)s, +Licensee agrees to be bound by the terms and conditions of this License +Agreement. +-------------------------------------------------------------------------- + +scikits-learn +------------- + +New BSD License + +Copyright (c) 2007 - 2010 Scikit-Learn Developers. +All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + a. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + b. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + c. Neither the name of the Scikit-learn Developers nor the names of + its contributors may be used to endorse or promote products + derived from this software without specific prior written + permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. +--------------------------------------------------------------------------- + +qsturng-py (code included in statsmodels.stats.libqsturng) +-------------------------------------------------------------- +Copyright (c) 2011, Roger Lew [see LICENSE.txt] +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of the organizations affiliated with the + contributors or the names of its contributors themselves may be + used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +---------------------------------------------------------- diff --git a/INSTALL.txt b/INSTALL.txt new file mode 100644 index 0000000..f0b0b36 --- /dev/null +++ b/INSTALL.txt @@ -0,0 +1,123 @@ +Dependencies +------------ + +python >= 2.7 + + www.python.org + +numpy >= 1.11 + + www.numpy.org + +scipy >= 0.18 + + www.scipy.org + +pandas >= 0.19 + + pandas.pydata.org + +patsy >= 0.4.0 + + patsy.readthedocs.org + +cython >= 0.24 + + http://cython.org/ + + Cython is required if you are building the source from github. However, + if you have are building from source distribution archive then the + generated C files are included and Cython is not necessary. If you are + building for Python 3.4, then you must use Cython >= 0.24. Earlier + versions may be ok for earlier versions of Python. + +Optional Dependencies +--------------------- + +X-12-ARIMA or X-13ARIMA-SEATS + + http://www.census.gov/srd/www/x13as/ + + If available, time-series analysis can be conducted using either + X-12-ARIMA or the newer X-13ARIMA-SEATS. You should place the + appropriate executable on your PATH or set the X12PATH or X13PATH + environmental variable to take advantage. + +matplotlib >= 1.5 + + http://matplotlib.org/ + + Matplotlib is needed for plotting functionality and running many of the + examples. + +sphinx >= 1.3 + + http://sphinx.pocoo.org/ + + Sphinx is used to build the documentation. + +pytest >= 3.0 + + http://readthedocs.org/docs/pytest/en/latest/ + + Pytest is needed to run the tests. + +IPython >= 3.0 + + Needed to build the docs. + + +Installing +---------- + +To get the latest release using pip + + pip install statsmodels --upgrade-strategy only-if-needed + +The additional parameter pip --upgrade-strategy only-if-needed will ensure +that dependencies, e.g. NumPy or pandas, are not upgraded unless required. + +Ubuntu/Debian +------------- + +On Ubuntu you can get dependencies through: + + sudo apt-get install python python-dev python-setuptools python-numpy python-scipy + pip install cython pandas + +Alternatively, you can install from the NeuroDebian repository: + + http://neuro.debian.net + + +Installing from Source +---------------------- + +Download and extract the source distribution from PyPI or github + + http://pypi.python.org/pypi/statsmodels + https://github.com/statsmodels/statsmodels/tags + +Or clone the bleeding edge code from our repository on github at + + git clone git://github.com/statsmodels/statsmodels.git + +In the statsmodels directory do (with proper permissions) + + python setup.py install + +You will need a C compiler installed. + +Installing from Source on Windows +--------------------------------- + +See https://www.statsmodels.org/devel/install.html#windows. + + +Documentation +------------- + +You may find more information about the project and installation in our +documentation + +https://www.statsmodels.org/devel/install.html diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..4a2776f --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,34 @@ +Copyright (C) 2006, Jonathan E. Taylor +All rights reserved. + +Copyright (c) 2006-2008 Scipy Developers. +All rights reserved. + +Copyright (c) 2009-2018 Statsmodels Developers. +All rights reserved. + + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + a. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + b. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + c. Neither the name of Statsmodels nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL STATSMODELS OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY +OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH +DAMAGE. diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..5e350bb --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,32 @@ +global-include *.csv *.py *.txt *.pyx *.pyx.in *.pxd *.pxi *.c *.h +include MANIFEST.in +include README.rst + +recursive-exclude build * +recursive-exclude dist * +recursive-exclude tools * +include tools/examples_rst.py +include tools/hash_funcs.py + +graft statsmodels/datasets +graft statsmodels/sandbox/regression/data +graft statsmodels/sandbox/tests +graft statsmodels/sandbox/tsa/examples +graft statsmodels/tsa/vector_ar/data +recursive-include docs/source * +exclude docs/source/generated/* +recursive-include docs/sphinxext * +recursive-include docs/themes * +recursive-exclude docs/build * +recursive-exclude docs/build/htmlhelp * +include statsmodels/statsmodelsdoc.chm +include docs/make.bat +include docs/Makefile + +recursive-include examples * + +prune */__pycache__ + +global-exclude *~ *.swp *.pyc *.pyo *.bak +include versioneer.py +include statsmodels/_version.py diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..a073896 --- /dev/null +++ b/README.rst @@ -0,0 +1,171 @@ +|Travis Build Status| |Azure CI Build Status| |Appveyor Build Status| |Coveralls Coverage| + +About Statsmodels +================= + +Statsmodels is a Python package that provides a complement to scipy for +statistical computations including descriptive statistics and estimation +and inference for statistical models. + + +Documentation +============= + +The documentation for the latest release is at + +https://www.statsmodels.org/stable/ + +The documentation for the development version is at + +https://www.statsmodels.org/dev/ + +Recent improvements are highlighted in the release notes + +https://www.statsmodels.org/stable/release/version0.9.html + +Backups of documentation are available at https://statsmodels.github.io/stable/ +and https://statsmodels.github.io/dev/. + + + +Main Features +============= + +* Linear regression models: + + - Ordinary least squares + - Generalized least squares + - Weighted least squares + - Least squares with autoregressive errors + - Quantile regression + - Recursive least squares + +* Mixed Linear Model with mixed effects and variance components +* GLM: Generalized linear models with support for all of the one-parameter + exponential family distributions +* Bayesian Mixed GLM for Binomial and Poisson +* GEE: Generalized Estimating Equations for one-way clustered or longitudinal data +* Discrete models: + + - Logit and Probit + - Multinomial logit (MNLogit) + - Poisson and Generalized Poisson regression + - Negative Binomial regression + - Zero-Inflated Count models + +* RLM: Robust linear models with support for several M-estimators. +* Time Series Analysis: models for time series analysis + + - Complete StateSpace modeling framework + + - Seasonal ARIMA and ARIMAX models + - VARMA and VARMAX models + - Dynamic Factor models + - Unobserved Component models + + - Markov switching models (MSAR), also known as Hidden Markov Models (HMM) + - Univariate time series analysis: AR, ARIMA + - Vector autoregressive models, VAR and structural VAR + - Vector error correction modle, VECM + - exponential smoothing, Holt-Winters + - Hypothesis tests for time series: unit root, cointegration and others + - Descriptive statistics and process models for time series analysis + +* Survival analysis: + + - Proportional hazards regression (Cox models) + - Survivor function estimation (Kaplan-Meier) + - Cumulative incidence function estimation + +* Multivariate: + + - Principal Component Analysis with missing data + - Factor Analysis with rotation + - MANOVA + - Canonical Correlation + +* Nonparametric statistics: Univariate and multivariate kernel density estimators +* Datasets: Datasets used for examples and in testing +* Statistics: a wide range of statistical tests + + - diagnostics and specification tests + - goodness-of-fit and normality tests + - functions for multiple testing + - various additional statistical tests + +* Imputation with MICE, regression on order statistic and Gaussian imputation +* Mediation analysis +* Graphics includes plot functions for visual analysis of data and model results + +* I/O + + - Tools for reading Stata .dta files, but pandas has a more recent version + - Table output to ascii, latex, and html + +* Miscellaneous models +* Sandbox: statsmodels contains a sandbox folder with code in various stages of + developement and testing which is not considered "production ready". This covers + among others + + - Generalized method of moments (GMM) estimators + - Kernel regression + - Various extensions to scipy.stats.distributions + - Panel data models + - Information theoretic measures + +How to get it +============= +The master branch on GitHub is the most up to date code + +https://www.github.com/statsmodels/statsmodels + +Source download of release tags are available on GitHub + +https://github.com/statsmodels/statsmodels/tags + +Binaries and source distributions are available from PyPi + +https://pypi.org/project/statsmodels/ + +Binaries can be installed in Anaconda + +conda install statsmodels + + +Installing from sources +======================= + +See INSTALL.txt for requirements or see the documentation + +https://statsmodels.github.io/dev/install.html + +License +======= + +Modified BSD (3-clause) + +Discussion and Development +========================== + +Discussions take place on our mailing list. + +http://groups.google.com/group/pystatsmodels + +We are very interested in feedback about usability and suggestions for +improvements. + +Bug Reports +=========== + +Bug reports can be submitted to the issue tracker at + +https://github.com/statsmodels/statsmodels/issues + +.. |Travis Build Status| image:: https://travis-ci.org/statsmodels/statsmodels.svg?branch=master + :target: https://travis-ci.org/statsmodels/statsmodels +.. |Azure CI Build Status| image:: https://dev.azure.com/statsmodels/statsmodels-testing/_apis/build/status/statsmodels.statsmodels?branch=master + :target: https://dev.azure.com/statsmodels/statsmodels-testing/_build/latest?definitionId=1&branch=master +.. |Appveyor Build Status| image:: https://ci.appveyor.com/api/projects/status/gx18sd2wc63mfcuc/branch/master?svg=true + :target: https://ci.appveyor.com/project/josef-pkt/statsmodels/branch/master +.. |Coveralls Coverage| image:: https://coveralls.io/repos/github/statsmodels/statsmodels/badge.svg?branch=master + :target: https://coveralls.io/github/statsmodels/statsmodels?branch=master diff --git a/README_l1.txt b/README_l1.txt new file mode 100644 index 0000000..4f28f0d --- /dev/null +++ b/README_l1.txt @@ -0,0 +1,40 @@ +What the l1 addition is +======================= +A slight modification that allows l1 regularized LikelihoodModel. + +Regularization is handled by a fit_regularized method. + +Main Files +========== + +l1_demo/demo.py + $ python demo.py --get_l1_slsqp_results logit + does a quick demo of the regularization using logistic regression. + +l1_demo/sklearn_compare.py + $ python sklearn_compare.py + Plots a comparison of regularization paths. Modify the source to use + different datasets. + +statsmodels/base/l1_cvxopt.py + fit_l1_cvxopt_cp() + Fit likelihood model using l1 regularization. Use the CVXOPT package. + Lots of small functions supporting fit_l1_cvxopt_cp + +statsmodels/base/l1_slsqp.py + fit_l1_slsqp() + Fit likelihood model using l1 regularization. Use scipy.optimize + Lots of small functions supporting fit_l1_slsqp + +statsmodels/base/l1_solvers_common.py + Common methods used by l1 solvers + +statsmodels/base/model.py + Likelihoodmodel.fit() + 3 lines modified to allow for importing and calling of l1 fitting functions + +statsmodels/discrete/discrete_model.py + L1MultinomialResults class + Child of MultinomialResults + MultinomialModel.fit() + 3 lines re-directing l1 fit results to the L1MultinomialResults class diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..60e9abb --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,47 @@ +skip_tags: true +clone_depth: 50 + +os: Visual Studio 2015 + +environment: + # Undefining will run test from installation + PYTEST_DIRECTIVES: --skip-slow + PYTHONHASHSEED: 0 # Ensure tests are correctly gathered by xdist + matrix: + # Pip builds + - PYTHON: C:\Python27 + PYTEST_DIRECTIVES: + - PYTHON: C:\Python36 + PYTEST_DIRECTIVES: + # Conda builds + - PY_MAJOR_VER: 2 + PYTHON_ARCH: "x86" + - PY_MAJOR_VER: 2 + PYTHON_ARCH: "x86_64" + SCIPY: "0.18" + NUMPY: "1.11" + - PY_MAJOR_VER: 3 + PYTHON_ARCH: "x86_64" + TEST_INSTALL: "true" + + +platform: + - x64 + +build_script: + # Search for [appveyor skip] or [skip appveyor] and exit if found in full commit message + - ps: $commit=$env:APPVEYOR_REPO_COMMIT_MESSAGE + $env:APPVEYOR_REPO_COMMIT_MESSAGE_EXTENDED + - ps: $skip_appveyor=$commit.Contains("[skip appveyor]") -Or $commit.Contains("[appveyor skip]") + - ps: If ($skip_appveyor) { echo "[skip appveyor]"; Exit-AppVeyorBuild } + # Show information about CPU running job to understand BLAS issues + - wmic cpu get caption, name, numberofcores + - SET MKL_NUM_THREADS=1 + - SET NUMEXPR_NUM_THREADS=1 + - SET OMP_NUM_THREADS=1 + - SET OPENBLAS_NUM_THREADS=1 + - If Defined PY_MAJOR_VER ( call tools\ci\appveyor_conda.bat ) else ( call tools\ci\appveyor_pip.bat ) + - pip install pytest "pytest-xdist!=1.30" pytest-randomly + - if Defined PYTEST_DIRECTIVES ( python setup.py develop ) else ( python setup.py install ) + +test_script: + - call tools\ci\run_test.bat diff --git a/azure-pipelines.yml b/azure-pipelines.yml new file mode 100644 index 0000000..ca7eddb --- /dev/null +++ b/azure-pipelines.yml @@ -0,0 +1,27 @@ +# https://docs.microsoft.com/en-us/azure/devops/pipelines/process/templates?view=azure-devops#passing-parameters + +trigger: +- maintenance/0.10.x + +variables: + MKL_NUM_THREADS: 1 + NUMEXPR_NUM_THREADS: 1 + OMP_NUM_THREADS: 1 + OPENBLAS_NUM_THREADS: 1 + PYTHONHASHSEED: 0 # Ensure tests are correctly gathered by xdist + +jobs: +- template: tools/ci/azure_template.yml + parameters: + name: Linux + vmImage: 'ubuntu-16.04' + +- template: tools/ci/azure_template.yml + parameters: + name: macOS + vmImage: 'macOS-10.13' + +- template: tools/ci/azure_template.yml + parameters: + name: Windows + vmImage: 'vs2017-win2016' \ No newline at end of file diff --git a/docs/GLMNotes.lyx b/docs/GLMNotes.lyx new file mode 100644 index 0000000..3307099 --- /dev/null +++ b/docs/GLMNotes.lyx @@ -0,0 +1,1155 @@ +#LyX 1.6.2 created this file. For more info see http://www.lyx.org/ +\lyxformat 345 +\begin_document +\begin_header +\textclass article +\use_default_options true +\language english +\inputencoding auto +\font_roman default +\font_sans default +\font_typewriter default +\font_default_family default +\font_sc false +\font_osf false +\font_sf_scale 100 +\font_tt_scale 100 + +\graphics default +\paperfontsize default +\spacing single +\use_hyperref false +\papersize default +\use_geometry true +\use_amsmath 1 +\use_esint 1 +\cite_engine basic +\use_bibtopic false +\paperorientation portrait +\leftmargin 1in +\topmargin 1in +\rightmargin 1in +\bottommargin 1in +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\defskip medskip +\quotes_language english +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\author "" +\author "" +\end_header + +\begin_body + +\begin_layout Standard +Variance Functions: +\end_layout + +\begin_layout Standard +Constant: +\begin_inset Formula $\boldsymbol{1}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Power: +\begin_inset Formula $\boldsymbol{X}^{2}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Binomial: +\begin_inset Formula $np(1-p)\text{ where }p=\frac{\mu}{n};\,\, V(\mu)=np(1-p)$ +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Formula $\frac{\partial\mu}{\partial\eta}$ +\end_inset + + +\end_layout + +\begin_layout Standard +Links: initialization of base class returns the actual mean vector +\begin_inset Formula $\boldsymbol{\mu}$ +\end_inset + +; +\begin_inset Formula $p$ +\end_inset + + in the logit and subclasses; +\begin_inset Formula $x$ +\end_inset + + elsewhere. +\end_layout + +\begin_layout Standard +\begin_inset Float table +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset Tabular + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Link +\begin_inset Formula $g(p)$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Inverse +\begin_inset Formula $g^{-1}(p)$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Analytic Derivative +\begin_inset Formula $g^{\prime}(p)$ +\end_inset + + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Logit +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $z=\log\frac{p}{1-p}$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $p=\frac{e^{z}}{1+e^{z}}$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $g^{\prime}(p)=\frac{1}{p(1-p)}$ +\end_inset + + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Power +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $z=x^{\text{pow}}$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $x=z^{\frac{1}{\text{pow}}}$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $g^{\prime}(x)=\text{pow}\cdot x^{\text{power}-1}$ +\end_inset + + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Inverse +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +same as above with +\begin_inset Formula $\text{pow}=-1$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Square Root +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $\text{pow}=0.5$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Identity +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $\text{pow}=1$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Log +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $z=\log x$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $g^{-1}(z)=e^{z}$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $g^{\prime}(x)=\frac{1}{x}$ +\end_inset + + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +CDFLink/Probit +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $z=\Phi^{-1}(p)$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $p=\Phi(z)$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $g^{\prime}(x)=\frac{1}{\int_{-\infty}^{p}f(t)dt}$ +\end_inset + + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Cauchy +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +same as the above with the Cauchy distribution +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +CLogLog +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $z=\log(-\log p)$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $p=e^{-e^{z}}$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $g^{\prime}(p)=-\frac{1}{p\log p}$ +\end_inset + + +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Link Functions +\end_layout + +\end_inset + + +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +Initializing the family sets a link property and a variance based on the + link(?) +\end_layout + +\begin_layout Standard +\begin_inset Float table +placement H +wide false +sideways false +status open + +\begin_layout Plain Layout +\begin_inset Tabular + + + + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Family +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Weights +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Deviance +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +DevResid +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Fitted +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Predict +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Base Class +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $\frac{1}{(g^{\prime}(\mu))^{2}\cdot V(\mu)}$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $\frac{\sum_{i}\text{DevResid}^{2}}{\text{scale}}$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $\left(Y-\mu\right)\cdot\sqrt{\text{weights}}$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $\mu=g^{-1}(\eta)$ +\end_inset + +* +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $\eta=g(\mu)$ +\end_inset + + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Poisson +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $\text{sign}\left(Y-\mu\right)\sqrt{2Y\log\frac{Y}{\mu}-2(Y-\mu)}$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Gaussian +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $\frac{\left(Y-\mu\right)}{\text{\sqrt{\text{scale}\cdot V\left(\mu\right)}}}$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Gamma +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Bug? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Binomial +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +\begin_inset Formula $\text{sign}\left(Y-\mu\right)\sqrt{-2Y\log\frac{\mu}{n}+\left(n-Y\right)\log\left(1-\frac{\mu}{n}\right)}$ +\end_inset + + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Inverse Gaussian +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +? +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +\begin_inset Caption + +\begin_layout Plain Layout +Families +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Plain Layout +* +\begin_inset Formula $\eta$ +\end_inset + + is the linear predictor ie., +\begin_inset Formula $X\beta$ +\end_inset + + in the generalized linear model +\end_layout + +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/docs/GLMNotes.pdf b/docs/GLMNotes.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cd8e6a68523e96884ff6f89df78ed505dc01d4a0 GIT binary patch literal 76810 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 y4pOY#9d3wUVN3-$Czzz)2+*SrMr+I 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 U_B|#iVo4Y>r=+Bop*H9L0Oa-Jq5uE@ literal 0 HcmV?d00001 diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 0000000..05fe36d --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,66 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SPHINXPROJ = statsmodels +SOURCEDIR = source +BUILDDIR = build + +PAPER = +TOOLSPATH = ../tools/ +DATASETBUILD = dataset_rst.py +EXAMPLEBUILD = examples_rst.py +NOTEBOOKBUILD = nbgenerate.py +FOLDTOC = fold_toc.py + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) + + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(ALLSPHINXOPTS) $(O) + +.PHONY: help Makefile + +cleanall: + @$(SPHINXBUILD) -M clean "$(SOURCEDIR)" "$(BUILDDIR)" $(ALLSPHINXOPTS) $(O) + -rm source/examples/generated/* + -rm -rf source/examples/notebooks/generated/* + -rm -rf ../tools/hash_dict.pickle + -rm -rf source/datasets/generated/* + +notebooks: + @echo "Generating notebooks from examples/notebooks folder" + $(TOOLSPATH)$(NOTEBOOKBUILD) --execute=True --allow_errors=True + +html: + # make directories for images + @echo "Make static directory for images" + mkdir -p $(BUILDDIR)/html/_static + # generate the examples rst files + @echo "Generating reST from examples folder" + #$(TOOLSPATH)$(EXAMPLEBUILD) + @echo "Generating datasets from installed statsmodels.datasets" + $(TOOLSPATH)$(DATASETBUILD) + @echo "Generating notebooks from examples/notebooks folder" + $(TOOLSPATH)$(NOTEBOOKBUILD) --parallel --report-errors --skip-existing + @echo "Running sphinx-build" + @echo @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(ALLSPHINXOPTS) $(O) + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(ALLSPHINXOPTS) $(O) + @echo "Copying rendered example notebooks" + mkdir -p $(BUILDDIR)/html/examples/notebooks/generated + cp source/examples/notebooks/generated/*html $(BUILDDIR)/html/examples/notebooks/generated + @echo $(TOOLSPATH)$(FOLDTOC) $(BUILDDIR)/html/index.html + $(TOOLSPATH)$(FOLDTOC) $(BUILDDIR)/html/index.html + @echo $(TOOLSPATH)$(FOLDTOC) $(BUILDDIR)/html/dev/index.html ../_static + $(TOOLSPATH)$(FOLDTOC) $(BUILDDIR)/html/dev/index.html ../_static + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(ALLSPHINXOPTS) $(O) diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 0000000..08b71f3 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,37 @@ +# Documentation Documentation + +We use a combination of sphinx and Jupyter notebooks for the documentation. +Jupyter notebooks should be used for longer, self-contained examples demonstrating +a topic. +Sphinx is nice because we get the tables of contents and API documentation. + +## Build Process + +Building the docs requires a few additional dependencies. You can get most +of these with + +```bash + + pip install -e .[docs] + +``` + +From the root of the project. +Some of the examples rely on `rpy2` to execute R code from the notebooks. +It's not included in the setup requires since it's known to be difficult to +install. + +To generate the HTML docs, run ``make html`` from the ``docs`` directory. +This executes a few distinct builds + +1. datasets +2. notebooks +3. sphinx + +# Notebook Builds + +We're using `nbconvert` to execute the notebooks, and then convert them +to HTML. The conversion is handled by `statsmodels/tools/nbgenerate.py`. +The default python kernel (embedded in the notebook) is `python3`. +You need at least `nbconvert==4.2.0` to specify a non-default kernel, +which can be passed in the Makefile. diff --git a/docs/fix_longtable.py b/docs/fix_longtable.py new file mode 100644 index 0000000..2dd73e4 --- /dev/null +++ b/docs/fix_longtable.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +import sys +import os + + +BUILDDIR = sys.argv[-1] +read_file_path = os.path.join(BUILDDIR,'latex','statsmodels.tex') +write_file_path = os.path.join(BUILDDIR, 'latex','statsmodels_tmp.tex') + +read_file = open(read_file_path,'r') +write_file = open(write_file_path, 'w') + +for line in read_file: + if 'longtable}{LL' in line: + line = line.replace('longtable}{LL', 'longtable}{|l|l|') + write_file.write(line) + +read_file.close() +write_file.close() + +os.remove(read_file_path) +os.rename(write_file_path, read_file_path) diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 0000000..db86deb --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,67 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) + +set SOURCEDIR=source +set BUILDDIR=build +set SPHINXPROJ=statsmodels +set SPHINXOPTS=-j auto + +set TOOLSPATH=../tools +set DATASETBUILD=dataset_rst.py +set NOTEBOOKBUILD=nbgenerate.py +set FOLDTOC=fold_toc.py + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +if "%1" == "html" ( + echo mkdir %BUILDDIR%\html\_static + mkdir %BUILDDIR%\html\_static + echo python %TOOLSPATH%/%NOTEBOOKBUILD% --parallel --report-errors --skip-existing + python %TOOLSPATH%/%NOTEBOOKBUILD% --parallel --report-errors --skip-existing + echo python %TOOLSPATH%/%DATASETBUILD% + python %TOOLSPATH%/%DATASETBUILD% +) + +echo %SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +if errorlevel 1 exit /b 1 + +if "%1" == "html" ( + echo xcopy /s /y source\examples\notebooks\generated\*.html %BUILDDIR%\html\examples\notebooks\generated\*.html + xcopy /s /y source\examples\notebooks\generated\*.html %BUILDDIR%\html\examples\notebooks\generated\*.html + echo python %TOOLSPATH%/%FOLDTOC% %BUILDDIR%/html/index.html + python %TOOLSPATH%/%FOLDTOC% %BUILDDIR%/html/index.html + echo python %TOOLSPATH%/%FOLDTOC% %BUILDDIR%/html/examples/index.html ../_static + python %TOOLSPATH%/%FOLDTOC% %BUILDDIR%/html/examples/index.html ../_static + echo python %TOOLSPATH%/%FOLDTOC% %BUILDDIR%/html/dev/index.html ../_static + python %TOOLSPATH%/%FOLDTOC% %BUILDDIR%/html/dev/index.html ../_static + if NOT EXIST %BUILDDIR%/html/examples/notebooks/generated mkdir %BUILDDIR%\html\examples\notebooks\generated +) + +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/docs/source/_static/blogger.png b/docs/source/_static/blogger.png new file mode 100644 index 0000000000000000000000000000000000000000..7557cf91c46182c08a6a9aeca53ad9889d8e88c6 GIT binary patch literal 5547 zcmbVQXH-*7w+;v*p~#B{1R>N&2~CPprHgb02?h{Q69JWuw5ar=^b&gSLTHKfD%~J0 z2u2`?AVNgCp!DzX{kT8Ad)K;m-5-0cnLRUm&YW|eXP&)Z-!{=>0ds>vAP|fGEgdru zh{gjjw{x_BM?BWS0tAA1=<8_S_03wPXx_3x7DQ~GsAepQhQY{ZIVYnxz?XAanv!rA z1t2e?tcpZ##G@v%{iBerdU?G5LdM$DMjUO7kF>`Lj7B>yS5OabNxz7axfWTaoIL6$ zV|L~Tmg(w6N4A)X9NqMHSD#RcDnD~_D>@~2DF?IG*728Gno9@zaTv8q z16r0x(FZ>GPg^HLHKx5Aem@-C-P%X@?ebeKX(4RasD2jH7Hwpbw?*PLczr*e za520vs8x88c8675rOd`2V`O|NSUmmByWwtyBcZ@5?87-Xl7?-QMw5oNCU{9fY>?<} zVajPyvFtaodmE(3OiwfwRnPyGx0=tRuXnluwID~z>_Xo2lWX~hp|jFc(1;z}Gs~Ut zK{--WJZDDrn`N8jE5{0YKSZ_RK8ah25&nXE(C^A>6S0lt0peN;M~ASe2D_B;Q(W=} z-UW~JYbu?<=cwLVgVQb(9dSj2@{j} zF^8k$lX}Xd6D`p2bp***Y)zUy0PzH(b{MS>j^{YzcfaGpikZttBvR~Y9nZqb8Anaa zo4v?Ik%#_!WPDf9`FM|7UbfyOY$~Q%y*mZTzj`xDe3(06;u0Qzf8vOX!yI&-`TO%n zv%mT{#v9xV!~(5zET0G5lr}yd<{knY)7YSzC4S(w%t1a}l2Q4%)|p41;JNxG3&~eb z-?2uhV)xkyOe0OzK|ekLpEf`wea z)K^&TH&+m{s6lQ=(D+kTKk$vzw5&Kit9MWl? z30V!N9CO3qSs>aM9L=D70{%X_;>KLvC}vOFAKQ_VaVnf?WMl^au0l_h_?!3mJqKoC#E zmm)?1JZZM_h{h}9vGKVC>|-?TTjy;DHQBgTL^%_KT*8Ti^gO74i|qqtNG>eai+I=LGkRROn&z>CLPCi70uql3u_bm z4E&qRu(Iw{VH6D779u`evWas8$8acE2}@;%;?gEn$~M{Mk_Wim_r3)o2350(&r!W) zn~74!gm6;x;JANB85TfqjoQU`vA9dJ7t0h^KAP0auMn4iIxmX6`>oJI<>^(>bY3Br zxmjOda(biRq`@~k?)za^aTJUvx%y`?tzsbtx_99rYd;$UdKDvf9!=gjceFm7d4zpz>c0GpLFq{SvDEA zIAEX{Q^F5xmfepZ*QV+swDQELJs%q13Brd)ljY&V9`ears70GS#*D-#I6@ISQfWF& z)!1F5P(q@(lo6?P#uX9ah4xC~L%fN{%57YGZn$tfeTxC_kRnLK> z#A7YF&(CW(*iSk^kbYs;ABs4s%KnoQ579S!72KU`;^~(`(5gS}1`*V=Bl#*|C|z!8 z_dkcj$xQcJ>beeaUTAX0mk((*P=Dr|wxNvPly>1V$cK#+}{zxww==Cr#+`L%UuzG!9KgersEloTOg( zW{2=+P@>(kd=##{q+8-ZiIUoXGiSaSQUMoI7537GQtYelE{U zcPivmRyHcQs?Urcr6*roti$4ul?%JorWYcEaXlYPagBAiKRXh=Cw3LJ$hhTpbF}+P zbyUa;;u~ulCxdQpi-3cvUH$_5E_RVz{QRhjQ{68!bM73e67(IV=m2yVyHGBE%TRAt zKLWEaKv@xUaDUnrO#Yh;u{>;CCMoy2OV?+m*VKfmo7_P6V*S=nB&VR7mu)_P=f9gH zvhGK*_adCqIyD6K}Ds^Jr5 zO%6?RMqWS7$i7rW7%(8B7${Ova36lYxf?-O1>w{MqU(>hJlw6?+Rs^#`g}foDqpeg zRG;U`5!QWSxFS>U(Fvc!MW@tQ36CJdf4sm*{o;xSiuHr0c%Sua?!CxVLEw~S7mOyBm;URbGs@BKSci#87%}Cn-n!9R>$*z zf46irwzWKaSC+ZG#{0bF5>me*sP#r`>HIV9ufI=;Nm;H~`KyL)$3aw|VfMxej9wL! z7g2aKid(Y08E2(CZJ}0e)nd?iDtDy5@4OmY<+Y7$IHnukB;i!ZGTz%@ReGSU=Or(gig)?qU@u_cM5Vc%@mgG-?3Z-ts# zbA15EM^;6v_iF-uqV&tA*o2`24KvyG@^%4z%FCZrf@+##0)$_Tp`~0sNmxx~FLyuS zXj{F7j~7o{q;cfy7<=UDv%A#Om~MuL;VRTO#Z5w{R<-l&6A#1zmp!Fa3TnLYd3>m{ETns&*E?q@xn)@h63_|1T$~? z?Ui;m?oK42NvCI7V`g8_@iftxUD-h@O>Fjj8u6vGIWtDXzVsL|ywxW(C)~!Bec^;r zL$xuO>%U9p|CG?D{p>ow4nn2cr?07i7Jm6*_jclhI_~&Eo8@hp;{2$3y^tRRZpy`n&cbJx^}2B1q+97op~u6ss_N5eI;xkozy?bj>r$EbdBu zfzp|1BFw1A(H%_h67F)m+a2BIcVkED=kCi@COe<+;tj~IRin+)L6DXR&&0#IWV>dG(6{+fK5qv=EXPRTp5CeZs1y&bLuilk*LKEyenhbaT`zMN5e0!c;u zwY}U_kN{UETc9;}SOUB)c&Su#soPScy({$*q_erNp5&m><8@z%?i6GUC9&vf?lcr! zu^afYT=P z!OxKw)}OYe;dO6*jyyY0dt-B58W{Q~4y%bj#B}(jV<+&d|8!oCF^mGphI7v zLB_8fbdBz@o#`kQ7la$#v(Ncz4oQIM`^)!>30xxVS1tivtk54nj`K!}WOTV8-lGWL zSz>)@!*_PNO}sw=Ye|Gnx{Rd^DU^t_pcb+FXP-7W8aAOYbWWOxSU>sFA%*FXz|8i8 zu7=B#IU%@KYNi-#7#mlFx~m}EwcOPWac+#~m&adETBP5g0kY!j6qIhpJs`Y0_rd_t zi3sCBvJn@mU$mR;NuU;)eV8Qhd9QcYl~6YzNTu#$R`h$nYoC9YicN>y62p7cTZI)X zX06#Cm=m+HM8(dZeKF{?8$bsW!8CsgH?URm`1`OojXku`#LPpoyT+ak7n{K_6uc&Th;-X#S8XF?nZa=uD$68h66 z$n!%&Ja(BIjl?)&cp|_0*wv^P)1!)E2P*rI4gLhU0?wiLRcp43-VBujaA#lDYL$*} zRY$yzN0^t&A6b4|-$YEAS1g<4_1k@cGB7KVCyu@n(nweEr1~RXO70k?!pJ(S;kfOX z&CPIOHvytOnfjYr(|!;YfmH{Obc<6|n+G_~%wcSEZS*hv!puU0;s4cFx1o z%w&oafbzp9B&&B_dl4~Moas{!82`|8;lWnSkfjhkz_C)Jw>u?DAem3gEl%n8waTS? zfJ(@(ZJZt*FU{9jXRQdh*Q9ZJOFq*5;SeMD=ahbdnE??|J|uwVOc(y3D7!L&h+1CO z{~O=`Pj|o&oYop+?RI<5~26-i|H6p>{IVxMID4*MKfbhwYV(BGa>+{DeWunm*UQ{}%K@c+f0`fU3hX%SES- z5NS1_8%*~DMUjjp_ZsO{6+B>vVf}aTr1Abx`i)Nvp5N53%^Qn|H~{lzxtiFiQ=LHS z-vy-p#JjqcGlH3nOmo;sb4XnxHmALeN;_9`dHarfVKIZh(Qr)!{YKaKe#sf`;)x|X zN;HoQD3&_>bIOJ(7br>G1ZNyJ_Kwicg_<={c{5EW`pj9XhulT!yl}PFl6LkpHxd5( zcf}iysUWk8lh2a4PwkVla%rAHE{C=Mu6&%djZS?t)t-*?&dnMlS9;sgY533VduCqm zb5(&Sx_l%I(0WDIT7Pp5bmO>yq*BL443p{IX33I5OeI(F1(t&i&wet@D0tOoqo)>_ z(Yj_*qyL^k8r6M?|1>PS>iz>SNThB2;AoCggcnEzJ~g_oOOk%IPZbG~_CW>c`7lk{ z$ej>D%(CxpVuGn(473+!Za0cRXlfRwmaaM{$2rt*O%*D={G%IPeLjz#g2WOx)y!pn z;BHyjk*=F7lVko=fX+EB7aThX96JBDW(z?z8q*Iye@>mw4qfY5;UXquCf>Pm! z^iT)U{x8D@-N&(rL7)Zy8aaFAASGZwKY>_q+(qU|Yuw|kUTF&s7K8Vz zlo}urwiT|+>xNc#W|dkG1Cwr6iE=s?0ff>Ul1(U5fcLMipOy}F4^*t|5_`0yRY}Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RW2M+}W95K`2>i_@(mq|oHR5;6x zlut-hQ5431_rCj{|26-iMxzLVB4|leLQ+Ce6xG62g|#RMTDA#V*CyK3u68a{S_D!M zRExlZv`kwlg=CGQmO45*I?kJSZ;N^3{BZ;iclGXf&iU^5op*#W2CZ5C&D0RF4TNAX zA#EBCQ`d^LgwY;jgS>f&l(4t_M0hU8dO3MpnDAeo_8??Ne`B%}av{sUWGN0t;3M2hY4FR-Wpz|6|Ar%2is#%#q>m4PwpJpX1 zI)yZLQdS30+v4kLIdt^U*vYq-EdN1TNDCnqT4M|AX()0bey?Aw4vBo&w?95_gG){hskHf@6Fi#4hj+3LK=PCwUu#q$wiZ5d-T> zxSQAo6jyWhE?qYfGNn#sy^oxmz;kz)nlL3a%iG7CyN7b9YNV<$hbUhLn4iGpoC{zp z!uux($>}>NCrAFLK3+W_vYb8&D*aU$SY6=teLnV4T7&H*Zw1;Tyg+D%&DF%8ylu9^ zDM+zOREb8In`B`!a|4+S*mgLDiso({3(xZ}M4GznTs#>y@u2;pq^Ocx16Yzcc*&!8 zIop5)`0679hlJ4@3~T?Ge1{v|+xj$E7ELFps7J{EhB^e*gcSlN00000NkvXXu0mjf D`l?O~ literal 0 HcmV?d00001 diff --git a/docs/source/_static/bullet.gif b/docs/source/_static/bullet.gif new file mode 100644 index 0000000000000000000000000000000000000000..6305baea0d4abcf93396243e8f8964c5c392ed0a GIT binary patch literal 62 zcmZ?wbhEHb6lM@+XkcUjf_LxUDgI;uG8q|kKzxu41CwY^|H{*E`4`XGqSv6wW_6pt L?U9EQD}yxv$P^G% literal 0 HcmV?d00001 diff --git a/docs/source/_static/closelabel.png b/docs/source/_static/closelabel.png new file mode 100644 index 0000000000000000000000000000000000000000..c339e59333e4c3b5bc5fd910796fda5469a2515f GIT binary patch literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqk|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*D5XygXeTLn>}1B_t#Wus+)Bu;yq3!!CzC+*<6@{_r1Jzd&eL zz_O}6Q6nrOf&;;F`V=YhW2-H5dcFFa li { + float: left; + margin-bottom: 20px; + margin-left: 20px; +} + +.thumbnail { + display: block; + padding: 4px; + line-height: 20px; + border: 1px solid #ddd; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; + -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + box-shadow: 0 1px 3px rgba(0, 0, 0, 0.055); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + -o-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +a.thumbnail:hover, +a.thumbnail:focus { + border-color: #0088cc; + -webkit-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + -moz-box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); + box-shadow: 0 1px 4px rgba(0, 105, 214, 0.25); +} + +.thumbnail > img { + display: block; + width: 360px; + max-width: 100%; + height: auto; + margin-right: auto; + margin-left: auto; +} + +.thumbnail .caption { + padding: 9px; + color: #555555; +} diff --git a/docs/source/_static/facebox.css b/docs/source/_static/facebox.css new file mode 100644 index 0000000..3f33b9f --- /dev/null +++ b/docs/source/_static/facebox.css @@ -0,0 +1,80 @@ +#facebox { + position: absolute; + top: 0; + left: 0; + z-index: 100; + text-align: left; +} + + +#facebox .popup{ + position:relative; + border:3px solid rgba(0,0,0,0); + -webkit-border-radius:5px; + -moz-border-radius:5px; + border-radius:5px; + -webkit-box-shadow:0 0 18px rgba(0,0,0,0.4); + -moz-box-shadow:0 0 18px rgba(0,0,0,0.4); + box-shadow:0 0 18px rgba(0,0,0,0.4); +} + +#facebox .content { + display:table; + width: 370px; + padding: 10px; + background: #fff; + -webkit-border-radius:4px; + -moz-border-radius:4px; + border-radius:4px; +} + +#facebox .content > p:first-child{ + margin-top:0; +} +#facebox .content > p:last-child{ + margin-bottom:0; +} + +#facebox .close{ + position:absolute; + top:5px; + right:5px; + padding:2px; + background:#fff; +} +#facebox .close img{ + opacity:0.3; +} +#facebox .close:hover img{ + opacity:1.0; +} + +#facebox .loading { + text-align: center; +} + +#facebox .image { + text-align: center; +} + +#facebox img { + border: 0; + margin: 0; +} + +#facebox_overlay { + position: fixed; + top: 0px; + left: 0px; + height:100%; + width:100%; +} + +.facebox_hide { + z-index:-100; +} + +.facebox_overlayBG { + background-color: #000; + z-index: 99; +} \ No newline at end of file diff --git a/docs/source/_static/facebox.js b/docs/source/_static/facebox.js new file mode 100644 index 0000000..392adf8 --- /dev/null +++ b/docs/source/_static/facebox.js @@ -0,0 +1,313 @@ +/* + * Facebox (for jQuery) + * version: 1.3 + * @requires jQuery v1.2 or later + * @homepage https://github.com/defunkt/facebox + * + * Licensed under the MIT: + * http://www.opensource.org/licenses/mit-license.php + * + * Copyright Forever Chris Wanstrath, Kyle Neath + * + * Usage: + * + * jQuery(document).ready(function() { + * jQuery('a[rel*=facebox]').facebox() + * }) + * + * Terms + * Loads the #terms div in the box + * + * Terms + * Loads the terms.html page in the box + * + * Terms + * Loads the terms.png image in the box + * + * + * You can also use it programmatically: + * + * jQuery.facebox('some html') + * jQuery.facebox('some html', 'my-groovy-style') + * + * The above will open a facebox with "some html" as the content. + * + * jQuery.facebox(function($) { + * $.get('blah.html', function(data) { $.facebox(data) }) + * }) + * + * The above will show a loading screen before the passed function is called, + * allowing for a better ajaxy experience. + * + * The facebox function can also display an ajax page, an image, or the contents of a div: + * + * jQuery.facebox({ ajax: 'remote.html' }) + * jQuery.facebox({ ajax: 'remote.html' }, 'my-groovy-style') + * jQuery.facebox({ image: 'stairs.jpg' }) + * jQuery.facebox({ image: 'stairs.jpg' }, 'my-groovy-style') + * jQuery.facebox({ div: '#box' }) + * jQuery.facebox({ div: '#box' }, 'my-groovy-style') + * + * Want to close the facebox? Trigger the 'close.facebox' document event: + * + * jQuery(document).trigger('close.facebox') + * + * Facebox also has a bunch of other hooks: + * + * loading.facebox + * beforeReveal.facebox + * reveal.facebox (aliased as 'afterReveal.facebox') + * init.facebox + * afterClose.facebox + * + * Simply bind a function to any of these hooks: + * + * $(document).bind('reveal.facebox', function() { ...stuff to do after the facebox and contents are revealed... }) + * + */ +(function($) { + $.facebox = function(data, klass) { + $.facebox.loading(data.settings || []) + + if (data.ajax) fillFaceboxFromAjax(data.ajax, klass) + else if (data.image) fillFaceboxFromImage(data.image, klass) + else if (data.div) fillFaceboxFromHref(data.div, klass) + else if ($.isFunction(data)) data.call($) + else $.facebox.reveal(data, klass) + } + + /* + * Public, $.facebox methods + */ + + $.extend($.facebox, { + settings: { + opacity : 0.2, + overlay : true, + loadingImage : '/facebox/loading.gif', + closeImage : '/facebox/closelabel.png', + imageTypes : [ 'png', 'jpg', 'jpeg', 'gif' ], + faceboxHtml : '\ + ' + }, + + loading: function() { + init() + if ($('#facebox .loading').length == 1) return true + showOverlay() + + $('#facebox .content').empty(). + append('
') + + $('#facebox').show().css({ + top: getPageScroll()[1] + (getPageHeight() / 10), + left: $(window).width() / 2 - ($('#facebox .popup').outerWidth() / 2) + }) + + $(document).bind('keydown.facebox', function(e) { + if (e.keyCode == 27) $.facebox.close() + return true + }) + $(document).trigger('loading.facebox') + }, + + reveal: function(data, klass) { + $(document).trigger('beforeReveal.facebox') + if (klass) $('#facebox .content').addClass(klass) + $('#facebox .content').empty().append(data) + $('#facebox .popup').children().fadeIn('normal') + $('#facebox').css('left', $(window).width() / 2 - ($('#facebox .popup').outerWidth() / 2)) + $(document).trigger('reveal.facebox').trigger('afterReveal.facebox') + }, + + close: function() { + $(document).trigger('close.facebox') + return false + } + }) + + /* + * Public, $.fn methods + */ + + $.fn.facebox = function(settings) { + if ($(this).length == 0) return + + init(settings) + + function clickHandler() { + $.facebox.loading(true) + + // support for rel="facebox.inline_popup" syntax, to add a class + // also supports deprecated "facebox[.inline_popup]" syntax + var klass = this.rel.match(/facebox\[?\.(\w+)\]?/) + if (klass) klass = klass[1] + + fillFaceboxFromHref(this.href, klass) + return false + } + + return this.bind('click.facebox', clickHandler) + } + + /* + * Private methods + */ + + // called one time to setup facebox on this page + function init(settings) { + if ($.facebox.settings.inited) return true + else $.facebox.settings.inited = true + + $(document).trigger('init.facebox') + makeCompatible() + + var imageTypes = $.facebox.settings.imageTypes.join('|') + $.facebox.settings.imageTypesRegexp = new RegExp('\\.(' + imageTypes + ')(\\?.*)?$', 'i') + + if (settings) $.extend($.facebox.settings, settings) + $('body').append($.facebox.settings.faceboxHtml) + + var preload = [ new Image(), new Image() ] + preload[0].src = $.facebox.settings.closeImage + preload[1].src = $.facebox.settings.loadingImage + + $('#facebox').find('.b:first, .bl').each(function() { + preload.push(new Image()) + preload.slice(-1).src = $(this).css('background-image').replace(/url\((.+)\)/, '$1') + }) + + $('#facebox .close') + .click($.facebox.close) + .append('') + } + + // getPageScroll() by quirksmode.com + function getPageScroll() { + var xScroll, yScroll; + if (self.pageYOffset) { + yScroll = self.pageYOffset; + xScroll = self.pageXOffset; + } else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict + yScroll = document.documentElement.scrollTop; + xScroll = document.documentElement.scrollLeft; + } else if (document.body) {// all other Explorers + yScroll = document.body.scrollTop; + xScroll = document.body.scrollLeft; + } + return new Array(xScroll,yScroll) + } + + // Adapted from getPageSize() by quirksmode.com + function getPageHeight() { + var windowHeight + if (self.innerHeight) { // all except Explorer + windowHeight = self.innerHeight; + } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode + windowHeight = document.documentElement.clientHeight; + } else if (document.body) { // other Explorers + windowHeight = document.body.clientHeight; + } + return windowHeight + } + + // Backwards compatibility + function makeCompatible() { + var $s = $.facebox.settings + + $s.loadingImage = $s.loading_image || $s.loadingImage + $s.closeImage = $s.close_image || $s.closeImage + $s.imageTypes = $s.image_types || $s.imageTypes + $s.faceboxHtml = $s.facebox_html || $s.faceboxHtml + } + + // Figures out what you want to display and displays it + // formats are: + // div: #id + // image: blah.extension + // ajax: anything else + function fillFaceboxFromHref(href, klass) { + // div + if (href.match(/#/)) { + var url = window.location.href.split('#')[0] + var target = href.replace(url,'') + if (target == '#') return + $.facebox.reveal($(target).html(), klass) + + // image + } else if (href.match($.facebox.settings.imageTypesRegexp)) { + fillFaceboxFromImage(href, klass) + // ajax + } else { + fillFaceboxFromAjax(href, klass) + } + } + + function fillFaceboxFromImage(href, klass) { + var image = new Image() + image.onload = function() { + $.facebox.reveal('
', klass) + } + image.src = href + } + + function fillFaceboxFromAjax(href, klass) { + $.facebox.jqxhr = $.get(href, function(data) { $.facebox.reveal(data, klass) }) + } + + function skipOverlay() { + return $.facebox.settings.overlay == false || $.facebox.settings.opacity === null + } + + function showOverlay() { + if (skipOverlay()) return + + if ($('#facebox_overlay').length == 0) + $("body").append('
') + + $('#facebox_overlay').hide().addClass("facebox_overlayBG") + .css('opacity', $.facebox.settings.opacity) + .click(function() { $(document).trigger('close.facebox') }) + .fadeIn(200) + return false + } + + function hideOverlay() { + if (skipOverlay()) return + + $('#facebox_overlay').fadeOut(200, function(){ + $("#facebox_overlay").removeClass("facebox_overlayBG") + $("#facebox_overlay").addClass("facebox_hide") + $("#facebox_overlay").remove() + }) + + return false + } + + /* + * Bindings + */ + + $(document).bind('close.facebox', function() { + if ($.facebox.jqxhr) { + $.facebox.jqxhr.abort() + $.facebox.jqxhr = null + } + $(document).unbind('keydown.facebox') + $('#facebox').fadeOut(function() { + $('#facebox .content').removeClass().addClass('content') + $('#facebox .loading').remove() + $(document).trigger('afterClose.facebox') + }) + hideOverlay() + }) + +})(jQuery); diff --git a/docs/source/_static/gettingstarted_0.png b/docs/source/_static/gettingstarted_0.png new file mode 100644 index 0000000000000000000000000000000000000000..5105c975742e91cfd7c582436bdb967a145bbfbf GIT binary patch literal 48467 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 B;|Tx& literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/categorical_interaction_plot.png b/docs/source/_static/images/categorical_interaction_plot.png new file mode 100644 index 0000000000000000000000000000000000000000..5759c5b1180ca895c935d9be6539868952010ce9 GIT binary patch literal 19148 zcmcJ1cU+I{+y5t_q-CU}Ata(DO&X#|Qqt0^lZ)s`& z-q(FU&-1;X=lMQ={;t=3f8^73o!2>z^Elq`_i>!=D_=ZIL&Z!*B9Un1&z(^rkv7zk zNM!FQH{cujN|S2*L2fG}uS!Wt+3`cE7k}Mib?%BSiA4LJ_@6A~2<;vcX)j6s%qi8| zkrQ1`I;wMPHPcgj6A$exh&vej%ICwugU|OR76upErgbV-3fmt3-bf{w_P(pZtlUiR zdkL?>)n^Z$g%`&j;=F(4u0eW1=HYiMYobDm{DNPo1#Pe2Ynk~`S@TDtV<=LruVl!j z%vSD&D)%N5$x}@1gD(1$>9LWPL^5#rzdi$txP}G>qE0&f{uXs&)22xD^w3`>I_7Q_-QJ>M!MJ<`#2v(OIE+ zt3x5|=PehLDGttdySOaPn%MvDPZ1OQ?y+Lsnrr67SH@)6t{5B=9o>!TeKWOB#_!Wp z;n?krj4kQ9#VRJJHTzErj4i4=l;2|L9DS3d(8R6QxBsVQiMyf2RIdJOcZ>JW?NeW? zrKn>>{{H?)a{clgNH$s36)zsk2%O;M{aQ2R&nz@3xjH+VeZz8he)Q^c4fUSEmUwv{ zE-nhbjCOX9&WYDCywCGg?N!!Yt*x^fmD0Okq-8CX#m5^h&5qFQ5uTl$)ycXhD=S_h zV$t3|G&D3g*o>im4&ze@IDL=$(wrclPQfo9Mm>J#Rc5ghC;0TsN=&}LVq;_b{z~!4 z;lqa=-A&l%NVVH*zc#tK=1geVU9%fDe6jW2uG_`V8fhv`8D;tx^bLQPPR>y?AHTUgKVcl! z&`c}6OL&K0L_!EvlPwewj3TgN43 z<-KmNj{Z?-lOJtP*L9g4t~aa+WR-L+xXb?S=g*&cx4NE3MRk?BENt0v@LYiZE*`By zn}Mbj4eY3*YgG??wla?D$+wBb+X%kRv*@5@6%P&$w)^@1zK~h-aP*a$>H3@R{kC1b zdKHrf1Mm+F?9ROEHMyuZ$0Fr^QcTQgZnUYosSquFf33vD$;o-}V6?cs>AwE)W#6~n{Wx8fUy?Oig?W*O9ncu%pN=R6CEoCbW`}38ZyLfSzOpZmz{9KEEM(-yDYX^t!d`o>S zj}QIXM{I7(6Zv#3qOp>>cMU~HTQXw8!-pp((p+egJwlUjG{npM(yKDDE%NsV$F z8(W$4+$h$Gk|SNeyt~kLDEmgOsrKu@Rh#8b3;T?wnZR$wRzor`p9icpjp|SNlnjmE zv?`C9oP%c;vS^>hs}n;1GNio5%IWtzJl2kDMTvhC6Z2uX5~8yB!;2#OVkFblm5 zNl7C{NP5)xvp z6UF)I2~D}>pQ42pkCLStI&zP5pXDR04emW0Bip-Qn~Ehc@KtJ_X%qLUQ*1r1f;U%} zcJ4^e`+4E_;LhE3!?vvM?D^%(kC5De;J-x%UgW z)2CgKe+*dp1~&dLf)cU@0U&)wbq)TvW?deM#P%dUrt_2`}#M+-eSa!thpV^V` zav59#0@j0Hp22ZZ`N$M`#vQZlE`cdMViq#(E^!)2e=WVE%RlkcMMXu6?vlc#12=9A zy_2EQy&M=AD6S%Ncx`R1ujY|Hc09bCux0mAp`yaVB%7vZf;VQ9YGTDpOG;EOUsjuO zadHaLF0U5nwCKnSNgroYtZ|AnEH;MQ5ZSkHpSZaAp+o0NOX1TI=ZuG1+$4j$GGaHM zN@$MVS>12aH74fz$EqXG;xlhT8ms3~Zr$G7gU>Shem2M`iRmau#(O@jW4WJC;z(}&3D6XP>?PdkO(&Nsv!;)@G!KN|CO&YW+X$7n1Z!;Yymgl%iKA zi>IF7uJIm5yz-@Gz3b(*y0TIou;;a;NqwB`5%ttWG?JA6jDQ%c3q6kZ_B;y{H{N+~ z*~-Z4I-XU7orL!x036BX)6DGs@OXc8bToRxB;{VRv=5+f3|k*_ylhZK~`j@vEQZ9c+08#pnc_Id1Sol?B~=BQfn zW?O6%*!sd$PkH0McFb>;b9utG?a3u^wLwZ=*Lh_Z@>L%`4GC!~b#ZLkbQcEnEnHwf z2M5RA*cIO0g~RJ^JDfi1-LSKp#a21r6;mmi@NI|FNV)zi@fZqfraIUp{u^zhmF5L* zJX-C2$M8$I0L(|vYctLDFX2Ca{ygTf=9*M`+Ltz?biO_D(#s2P7z7`$2Iwf|sl29b z|F%Q>>W(2n(hi%W9=kNvfgqyY=Gzc0B$vmtr^?sMl2`7_B{M|;VD^dA1e>^iwl~xJZ^U{|YNM9vlT#v-$2kh~%(z2SdkTtEM}5fJU6vi`fkf;zB-$!b&pLmn$os6@e|=kBqQ#CJI zL-=w4)H7}R^gAMNr0+TfwZz&<{Y1Jno zcJ|Cdj|V#wljiG-QNMouvK{)CRGVs@^gltAntsz0P6e$z^ES*ayT{6 zL`3qtOI`HKT(2~h!GT?j5-%()l+QQhb1Y^a-Tx_V>#{?V=d~Bgn^u<%9hi8ea`}+BFv;q%J(@nWf|6h z1D$`Q6eF3obm}_moHYAJ+8Gu5s<4UBmR5ywOgw@C+X;v9Uq33Xt*r;rd#>z|P~aZ; z%vb&}AfVKB(FVJ{+kM%hYp$lcy1J$YF0nQ#DGBj`-EH>qQgYeqd4Wj@N6W-2mz^y-AZ_4Ti0?v#wQ*e1HA)$&>9nb|^)O=h_UM?^;f%{5Ke~ z!@<6h&l?!%41j5qHjqt@&A_L>5U8_#)dL2&nBaCH$?_L3UdYSKkNN{e+D~>~8Ftm9 zmgu1tXQxhZk-*&Muu`yQFnWF4v46DXc7f5!TKhxV<#~N#*WUYOW@cglW-aNmXU|%; zW}eF39+0vB^jJ%t`{|gT^_3y1j~_pxX$m^FqaoXmM{B&43urH}emQ%4VX{lYW&Wt6 z#|y>;2kkubdI5$}__?h)JG9)dXOG9jcX@kn9I=*>xf{6YNMhr2ANra{>|ty-jExJ6 zi^swXV`KLoIMAQp$)fv^Ig6@u()hc`H!DJszC`Wyi;G z(c%18We^UT`rSz9l{!waRK=^Oh{x0IXKQ#T~S&#&xO%uH9Xg)J;Km#qCGWNu?&7{tLT#a$AatuDnc1 zH6M8P>=~FqPr1i>z#fstj>{@4@s9=>f_jw(*48asM&Jkx3=Dup5K+>ZlU_~R8{J%OZ?+tsahd)pJ2#Qs zo*Sic>((tGzP4O5jr?0(2uAPTz5CRqKkTKzt$sFXwL8Ojx3#?No;m$jJYim5m0u%7 zKoNe=%xtBi!k>+=)zh?c8&@7bevB9hlm1*=Tkf`;XU)J|6T8Zt&?&%DZGx3^aBxVf z2I6GcwM+8$uU>R4SuUVWLF4!h(Z!0L~CTA4#nh9GY^fKi9FS{JJ9tw!5YE^94fv=Iy!oGgr27eKHv!m=#M+GnXG@OX2E#j4!N za^?}yjOvHGvw;ZU&7g}E78Ee$l-J#>xT?$Mu`&&otLW?sDs3~=(rRJ+JDG)*Rbkb# z0}{*o_h(jHg2KZ^Z3i#V(b4(HJdTV^HCcd5ipM#6DY2Q(AG zcD4-*jPYY$1l^Vp$!1eiQ=yQ2hFO=CmX_(70|2WYRipDmobAAG44x;MMM@l3vDe+=RzkZOa-xFuVi1>#fk!;3f}m} zB5s#>r}&RZlXJJn`YLdHiW1C7JO5UcvqVvTO4=H5q{ObQo%IN>s% zI=SzJ-D9J$h;|-LTAUdo z_TA4af54LH`nj>|lQSjzSYx(Z)XXdn#q_}5Z{3=N6mZSZaCLQ6&HpAQPOChRn7BX| zvEOhD<#6NIuLDX6s!gFwuv+VfKS3K(|o>@2cR0T2cX zR?VFqZ8F1jHuM2p;AaKLDEM=YL!gYi5p>lL?Mxy5v7=2J6Cc|(z3Oy+ zD7t=x!=0!3_?Kz3EC`;M1-_2QTW26h@MeBU3ypjEl8#l}NUf(Yqjxb6Hn&^wIyl0{ zjT^)B_*K1+*7{fJoxPsxIMoeaJ1Dij_()RFc5RICa^T(qH)^9x0kvSh%X4E~j$-`& zz_(iR?fgxPdB7EzpkL)_xj&o)E?&L*BT~#Z+GSEqVrWQo%qycxD~e6R`6O^F&?~VB zJs#_Bg`cxdx2I>fzrAs6fB2~DOMnNqV}VWBh6_MYuh6GQt5b;!taUkCPA_l zDTv=d5`JhYSD{WXN(jLM_sBB^Mq_Ro?{Pq!`R zd`jGqQ*OEa*lL7KKzuJZbwa6$XnmzNsnt48( zi--u#{eENowcBY3e-!Q-aTiQedgLaaF;k)vK=Fq5f_(V)E>3a5V>8*jF^ZihrmY-C zdi40WY@je;fKO~ry38daA~NFeS;g?urTX{xcSxKhu7gU^I+J|2hQk33oIXC`fDFN7o*;+iBpC?&UKi;&$PLg9@F2IWSyjh)#u3z!?HaG#Jl$E*EEFBiZJEWj%wqOst7)Jks)2MhLheVk8=_ZFIHkF^Kx`9sOEKTApkr%JvfD%I$@ z7cS{N4`?+_jOmg4w*MY&FWU`x($3AQGnc)zZcF2Mk9p#z;m1Du##O9&Jp*Z$|YV zO)f%j`4sMe-y#x2VpYuy^} zbaGjDU$-oC;+E9=F?`!;(I#ni^p#>^Qj$gaGVjgLp%K&5a+dYs`xeHxw7=mL<(+gl z9aS^*2v+EDzfu9d*OI0!;yBsaqVM5GAQ%D)|4$5_$fq*z8srMG11xckPHLrhWaMz} z`+o!HC+9Q=OH`72Ue`{zEpwMe+eF0()|4tRK6>lrL(jHt+oWz$B)-|u!Jrkbf0=d2 z(1T@cvQ2lcmaSVNaMk)tfjDOIUlMU4=%*Dst?HTExBqllmUrb__NYt%!x9_!GxA zUWuD0*(0N(9LHM)pxYD_h|Wb^zvt^qsNb^wyJY;vS~4*GSLT-QzKPUG2=w^qMd5o| zMm*}IN!{Slq`NPzF(Po2YStSZ-ZLsgckg?&^c8i^&F{%)Wo6;wx}e8WR*)E<*v&XM zd9lFE?rq$c#rY~m{R3QF$ZJWvLp29a=j{Me>|V;4bk^7JnVq%k8mpHmpOWgC^P&GY zu$6c9c$7(#dD|ORg|}7y@@`9%2`cB<|E^8 zDdkswiGG&tn=$*{S0d_aExW75x(wQd8Tx$CiWDM?5T=mpiaZrx>1+c4ol^A4Lc5U$ zGV;x?(^ZTzpG)H(uKB$>l&$-tw{GN*wXbQ@L+uxZyJySuRNM>#LMAkfjEoEndO>5E zh0Qf_amxiuuzS<5uPp$mtS&$Yd|y+Oa@Xf?n5{PDl<>h`FX`lmZ|Thi)|)i0`CqV) z+|zi|N@&XTyOv^thu+uX_EWW=HuhDRGVS({U18$x{$-EJ|%@cS^DjwB4!R!oU*5jU*G6noN4GQu^qZl zP-T-O9Ok&@I#*uJdk((ph|@3W(yA==w73(F@imK#yov3(6Ja_)FE_qLj{NxXLirF# zeVyGeS8I1mrK~M} zABbsp$q|WTVjb!zahj2P#HQFw>K8%C1f^Vl9pet|5)if%G9za$-5z1{=F}??J_&#c zhz4q(ToxP?gFrdcB32mOJ=Qxg%^&^|9X~fHq1N2zN++!+IxIs>YYIclJqE+{ zcMT2hx^ATNAduIw{Nd&4)hA`ss>;e%aHycaBZa{-FaFeetj$b$tS|qW?o;{Si26ic z?Xe*>2z!fAU=fbTq*m%?Lo_}`^{5)EDkl7#3m+9N-}R?`nWATXuCo;;{mXO_o)agTy$lwG) zvMEdpX}JRHzJnJd6IHnrl=v}YX8)mb{_tTmZAtF}ip>pOI%rzTCh_1_kEEdeC}zhD ziH76HR7@>rfBO4`@x?IlOaB;doo&*XiW0pvnH(=*2XvcpQ@*R13%vCx?=4X)gO?tw z3T`U?&jf4B7P^7GwtIBh=~Cq4QKpvVL8G6u>N`Rpz=FE?`K@E~%4!{VOEwo&sw_BrZU@E!uOOfIIE^ zZrzzN^%!fWg`jKJ5Pva@m#oLNZ?-l?*7(`zNdbnZjfU^7)w_NxIPaxlrLovvwAcJ? zu=nASg@%ZxTX_XzKLZ0!FkgC|H-iTMLqittQ4ydiOSt=~GI_GOOWM@zqQW4Kly2VWL~(hbCO80fv5n0 z;K)7K@sLE4Ch7rDVo(UGi=-5?{{88wbV#WTD8KMhE7z2u%j)XQko(w^)}0SvuC2nA z@pS5t+$xEr$v~h{QucnU|G%HM!NsI-Sp?EDx8?ry4W4cAOPmJ|e9+ybEV;qgtv%l| zMkVR^g!s!i;<`|LF;+#O#{b+4!%kvh6DWr#(QUe7W8=DJjG)MQmb5t=X zCIC3;OJD_xG5+zHfCQx}R1M>fN9mV} zQZh67Po7+Xmyq!TlNUB?PEAZ4_M($)h3P3P*A0G+z)dc6PaWJi96WltHf zrXCg$JlE^)U0N1VdIpAEs~<8P?>|1}I$<|VPfyQ(vo03wnUdpOW#wz77`E-(f4|?M z1ac@nC_!N)+e=a&iInnK`zq42GLhfY+1Uw3%s}O{)S?&_8430~^V6U2AQut ziToR2B)I*lCAsvlu$GjJGI8Ti!TtUHsBKBv#V%%J1e6H!gd_=MQXX&RLp!Ugs-Vm2 zzA?JrxItA5tRdtgHY~!F5B=M>Z;_rfzM;$=l3eU|Xy*g>)g|oJwDFUp>(BTK15*tp3aI1lW^$!ngLSXkk1l>i{0}g^( ztK50l<2+7_41p^ z%OPwQolJw4)n)&Sg?vM}o2XxJiWt93TuPmAIiHjNdz~1$ydZf6xYEu14 ziIf{CK5^Jv_75%Wl)*>bQ}Sjk@(rxn<$Q~Xw(Qr@WbgcBNviZ{O4;6$l4H2vGxu>^ zWoLZ+b(t@U=Nq`BnTq_7U_=p4qxSq%&wBq;rRT9rzlArp?$|(KcWJ6SsO}@#*oz0W zlQNVXopY4*az|B0YsP%&AqM~}2z-?s?xZ(RqGYKXi0Rt1UG_Xx6ibkP((vAT*1Zok z-yi$KaYc3WM%tTdc`m0_l=Map|{a5cDva=gAozaJcB$v~1qV~xxjQSXq)36`ylQ+ctsA6#-*FYj5 zgej0I0?di?y6$9TlmatAdbSv82Y6ic@lbAUq}U8LI*5zQ_3PJFRfA2}zy&8;v-+@k z)RI*%afblb_&s`5jx-D8IH|QihNZL=2K!kCcuCD>%k$n26Um2n`hLDx0Ase9!tvyiT0*P zaFB5N9Ur*uC45`4^PH)jU5=NR7kwOxeq{WJoCK6Z%1ht{a3UVF^=C)TZZ*W;AB}-_ z@@lpgh~gsj_ivG6;tHG1x7;DuO1m3^AMZb7 zSL|Th*XL7QOn>c`lLU(g-|wFF(5M4Mu>*GLo9t}+#?WWaMg|5r6KFyp?xDD7y5bHw zvX^{^55tuNnyMrz2qt?tJ3Ehd(;L{rSMLvCJrWmpCjZvYPO(CTQ=IVak|L7s*NYw6 zH#-ed3S{dR7fw%4PEN}4U5kWOTsJa0M}ABdsmV(T=R*j=5`_@RW~2P+k|MXg{lWeF zPtV0dZ(~T>n28!Wrbl1M3Wq7_+vB{p`3I{_YK{a21%bLNB2h0TRi2so3wo=JADkuX zG>VFft{WR8-7==R$f)o7I3&a#1v2o`$<-dD`8ySNs5oq;d6~(*Cx;E*?@LI$74pKO zGZ82snLgwuos^Vn(ZyTHkx)+m@MTANPaF&ii^O{Jc4nS21637LAI|gRZIBOOY~P*> zrF1%z_Qcg~Yc;%f4K)czuh3kOeNi{}<$335(?0G8(=3_ZDnofoElRTwY2}VyllWAY z!?SXY;-MTJ#RX4y+7Gf#Cf4#(L~lskhUq>%^DF5G)#(xZojCS-_Mp zTrp`aUnTjm>GP*thH!1p^1BtB46VGAm1LKhPpDJAT@@pd61IsNTr;92Nnd&RBhwTR z3{G%vZqDNStFLd2Kc81rL}G`E$`tv$+qVl?noO#0UwT(7JA87Vez9vmFp zOhK_QTwhsJbN0C%%9BL8ZyO@b{zziJ6_9cuE&J#aUNuU|qW-nA^7PU+3PwgogwXME zbG2R~Jp?Df?lLaGaRwW`KUIaWL-{1t(LdWXF7s@txT&L(MT2OA{1-Ca$)V8uy2{*& zVQ`Qh2_5=j?np&0gXTSzBo>id4^HVf*LiHSw46e`Q$=+M)WqN=4v~s)b(L4iZES7# z@7ov3t2_GhXPha@Rm81-zK17-qK*7xE3)RH>*I2M4<0;W^Y-=qEc(IAomNxYd_0{; z`@L;#6&+jW=YIdhTQ_b=Z2#*53gV}}Q`yeIz(B)x^7fx!KTuDgYzbA#1Y-eb$5m`M zVl&!!*y7G<2P4|>kbgM+*VN37mt(B3a@XgE>-T#NYOL=RK$QN@xG|h8Of~g6Ms&i# z9QMwo_*~Ug1!V;UL)6iUjEO;sMLk^OXO$Px1$i50?*AidWFW|V&G~?u13cDPMKK?FUNaq1+DyB6QiT;FjT(s6_w{a92`HgYS<#A zJlqk%s{>h&_(TJO#v{tZHFltQPEw6b*t_Ct6D`}x0(=WSelwKcO`9fKvkXDF0R^_p zoJ467elfqWK(}R!(?Ezu>PaigV-#ObkEVR6ojUA|4+hrK?9QvZt9gD;*RZo=2>|<` zO{3hdwT9gz)%qJeJA94lk9R&m6|3;>NOSnmqk6IvfDVm=OA0#u28=N>8H7a);0Gh4 zRIS|eNvaUI*pV9h^zEA-DsqgB`r(;rPBMAgUp6IFeb&oYzuHMZFVM zq_{!$`KS)!S z(%2a~ilYzQX~Tn5(lUPXmCDFCga!lCyqH#!zklq2Q5d}kU)&9@vkne3>3 zo;ac1XAb^M)Vw5Bvz~CUgL;aJ1~^T`oj$OK_<7{wG}5%xgd&QIi?g${XInpiR_HiL z+9TWRnebT5fIImGlc~i3^=JNT+vFkMAfK5~gX{roSuF4EG{;`e@! zT0+bvSAJE3N31R{0I03%uP=oKijhT}?)5zRfhBRTq8r2ZG>KhuM}H3)`CNk?z#GgU z$G5Ox2?m^cCHwfdMU+X&??2tu*$D_Oc%Vk5nOguDMOGcjfZ9>5Cm41n)Vjs`(;Pb{a zgLKWQi#e*r+x#^n-tbvyJ7tk~{@H5tGunXv`L-VwOEVh{Y7hmVSzBxpCTibu*OI{d zZ5TIc^6@6Maz%_8542Ow8rcrz!Ow5X^H<=`q|(tQBP|0@=I*s6d9v=es(272hAMRU zZQTznbzi%>bm#S-hCRkgcXE>C_E}Yo28qR1Lg5_XCG!-ZWXY6+d(RZyNUM4H7zK&I zc&Uuf$Vuay?~tnpd?6zO9huqLL6qf4_j=M0FG<5ogo&5D!b=1JU=51V3@6ddrH!<$ zOhhyLHc*(;p&4`9JLJOm(M+CC1(~)in%N_RX7&@!?6s=MdyHld(u*3*5Y4Qj8498q z8#J>8&1ed4pctn>GpW1okURLGndbWyWG<)C%#ky_o~--OOfH92g(T5TGMdRJnvp;= zH;87oqZu)x8FDnkj%JL`_DUy6<7uaDqRLk=1ZlaAw5t1XZ_w5|c zA&?v|FR!GeWLsO?=$+F^s-HBTM-dZmY$abM9RKxBy!&Ybb)OgVK0rxsAgypmljdBUXOfW^#lv*vNITIhI} zau4k+ioS9)$2r&U!9LrH>R;D<)6j?H!y%s_i=sTc$h;i|R9dJaL!a?g@c9Jic2Dc! zArfhZ!%8z31wcd{a8HjEiZCe!;1V7_q~>^!=7EI3&_=)k5oxdiKj|j@H5ZTzswC?_ zYi-lfzC-h)idOp+9fdOUDwZF{BMnzW3Wv?qJ%r61Jkv|cAyzU8NjPi@k^u}OmIbSx zD7t|{SrYdWbf}J4e(t*!WW)Y=NDgAjW@6Hnno zp>WF@Zkfg{v0P}51MSxNdUbA6l_PRVm~A+B9`AFCin>7coeVEzsskA=U5e8dv7U_V zOn?FJv-)6wXbn8_<=Z!uWt+FzO#iI1(eTDxl00v1q}|;K4~atmM50*a9dJ(lnb_?5he(Rig1SLB;&^w%xH!P* z;@`5!`00DBs&zjxxP|ozVZpBzLXXNTD5U&#yrv=!%f~H<2|<;-uCDGt`i5gz{KOne zmSZ;&JAhV~XGbpQnyPVl%e)9bX8fR2_N@%@4Ai!1!t$c zWt*rGlp9X(0+01F`Z(~>V;baQn0!^?PT$j;q28J)D+gr|m!*}}FU#`PgO0L6WD7$i zWZ;wb_&gOt3Pj?EROkx{mEe)7Ry zL9A`2%dFLhSO6`|VY$mfy3C7ST7#gvTC$3=dUOjB4<(5x@B(M@^z@96KY*6iVq?fX zSzlsUz=*$*hm;`{9tv8P+b|21NcHnlso!y@CCxvm;2=MH_UvH`N)B9!F7?6kcN&pnq*R8bo0Iy99~bkl(=y|BKyWx zj`$uGF|c0xYg65&Hes91P7RU_ZeZQcojVs)ys?#pE$i|wU)3lRNgZs(|L{o`9S&I3 z_CYws|K``#9qwUtXV2CEC_T^C`*3e6jg+|umY%9t+TPS8Bq_Ouvj?!HITTLkejVxW z&mlI~Yb8iz{e)tH0+XiKyBHajB7}*Y@%e;?6}8iBM8EG~+=tnbwRHo|f%050@EWC% z1_rV8@1RoD)Nld1xsCoF_zVgHJ;Soul;Z?Cf1-kkcK1dwsPVQL$bmqYBLKE6ET0~^ z{e$%YC!xeK#$!!PK;RM-RdoH)Gz-a`Rf6T1Cb$OjEYDHI4JQi7^w+r;l$4_I9W~eq zh&IX9paD39^BN`iNvbyT3CCh%Dw_e9OS;QFE?x}83AEp_SXwHdpBT3kkQW8JYfxAi z4jm*K4x&jQK?0*8vW!lk+{6Q^Gaq^p%kIuBL*J)QFQas(@y37hCSPCQ2nWW!TbIPl zH7;KK_9a^4^+C?B<88LLTuX|JU1Xa>gMuo;x(sZ0ic7NmC%k%o{wL~$(o_;Yfsa9> zumu;#Po~Ra3<)Y?C@6uv$E#PO+0l;br|(GP!mg7<&P%W#OyARdbngUWx04qxg(Hi_qvkt{oR9`H^C#kh3oah@36U*yFZc5X5Vhzj;h z$x;1?-7?Gcs>Se7CeNtJY04kG?{#*}*%J7M!wbj|E3fd#va{fYVcktoU4`@K?K09j zIre5s8PRHA;ATBRDVL+{fMH2Q?p5lfx$oh^ z2a>#W;J9`|g_hbV%qd}_R@T<2v&c|MIFH&)A9|P>Vgk+v$V<-NEZ(3f z<*Uq{Ht}>}H1gCX$AfF*!UYMx$E6O6iH84P?Qq?yp0qDj(qqs08YbGSMJ?MTSTY$l z(k`n`uX`Px@feUg6q1k;s9nir8Q>8X9KJx)npmY#QzXlizB-fds4aPAU`pP(Qq>XIStI}So^myJ7WNZre&TW3 zXILZHYpII!V*1M&x)FBK>QNs< z^@4h;a?+Pm?a~Rdy_tzP7%60?K3QPD_;q#4V~%xd7dzh{kMGZe#8QK}Z7(REe{j$u z_RUZ71X+2*Yq0WzjvNDjX4Y#QCUUx-`YD+-KXkc!g=0jBp(}$ugIQGz>Wiwi^)!l} zU@FBo>-RN@^7+UJ7=PO7wDpKWU+#@9CY4L|wO4)6>mxShG!@PDl~*tA5xIq8)bn@{ zgbD`?Vj?1rNCXx0emy>K8zgML3D7E)O5Z=^Evj<bgELVUJD;s?mwM~1_ZgM{yV@Le5L zK@>U)-|Ezylp%2-ARoO8=Ya*t0a6BBgFv!F21yfw9q8`l7DBIV_gj6~%gud$a=T{( z9{7S7>hXVlCV*Qj0f@?j(saHjaqi#>9*2~QqJ{C!!poC3o*qP4|47U#&=!h( z_wL=>+vV6Z_v;suJ9s)+4zvC}4zU42(OzEuBhFmtApFB7SE*g*Do{|FU;Pjyf|NC!{#2Axt>ZN#*9 zb#?jBgJ>a}9$dUnn(-Kg=Yzf{52!IzsI{u=c2;}m-?oD|OK$?^>Kz+fM&j!v%3-h# zK8NzSAhcmJ4uJ(q%l>N9BEX@P+mamw7(M3^PDrAt1^j@{GNz}I_@B$vDDFiz>7N?x z28Jwx-o(XJY7z9N7w<-K#L(A>u;}PDsB;7`JSQ*zxcHE?K1dkof-g0ys`3op-bEsi zUuUQA0~nPutfetSKgPwfq8XTn$s6m4Y9}kOvf7g~7qIe#^Sg#T2UtH7*o!m{vG0Z) zC(Oe$foVuq;0CEZ1dEWsFoST6b@0n>ADK&&kroSfX&))rX{&zN}xF?+cUdpZbA}J=EWG1H3hY8MR0-3W@-kuF|w4!4S<+r1ML7IiCVZriqPaGv(o)|V{V`3-$1@xW4eb!L8j*uY*2xKGF;t~+tx|)$UEJ{VKkW+IPmeld~GfR zzA8~^V2EKapSxw%wcA;h>ICusTl@rmSjQ0xj`tvO$BrHIrbm^|qkw?brLhboVzJ%e z2o5}pVAwzcHR_J=3=lv?kq&FMU#=Ze_4T7$c zsEUV-hA6PtB(JrAUReU3Q1wDyK1Cj_miGa`~LQiU?Aew>kjFZp|p(o`bQ}LIc6d{LZ zpeK1w>_aoqlPcu4iINCC$-p1Y5PDLk7@8sUq}E+%hR~DDDT!vFC*`5%f9XjP$Osd9 zlII*KJfSC5d?K2Go@DS9%@BH0CXuZs^dwC%b`qf{r9uGsOHXRPhh_*pDMbd&Ku_|V z!%Pr*QpI@;iqMk`XjuArNdq7L2XlBOIRXc}g_82u!om~;#PjDL=rC+(wj9^o#=u!* zzhmgzM_nrAD~Poda9aOH5i(JM4C;Z<*q&=P)maEZ@;8bne}__O3c>&&S*1n+Ipg{V zUtkc07Jf*Aa?2LfOFb~>+#r1S3)u(1imQSR-@iY7`t-Dn%%_W5!2h>Y5L`5I5L)S@Gzkuk!1XuQXrtEU8iOE+xRt$|8HqXYH9c-X0k=kMUnDHf4?2d zAD@|RGJlY^K)`V}+U57YY|=`3-L-H1S@Z6)ffqv`@-)UOsv^@;u>r;aE%2|h5E)pp zAk3vA1`EE3J9;f~#|7N+iw-}q;0I;qXXN~1FqfNn=z>2gN}j_?cED5#7gj;+q*y3O zM6EL^81j%R3o2PY!O*#}>qySnFAS%8NhCKs^b+=1LBd0#FhhQ7JcPtPi5kd<8f6bdY|qH+u!%|B*xxwdK}G_XA$=n5-GL1R?@6jSj*in3_wGJM5le%6 zFJPD4#Kt7;_#P?-y-nstPztxS9<2={PFmjlmr<^^#i?@F1VrG|IBjbX@#vR0)j_|2 zu3TgP)*>Oj$s!Vz22zEN>a)J_D+6~o6;Jl)?_@1~dXZN3;=>;#lHikSTf6asl-SsO z`Um38o&%lNIV=-JuC+7Q#`R8>7$xEP_a zpmWFVEzb@2OD9yeTqCQ{$+J|t*^>TT#=2nqK!VC*B^})#_oII~x$w`=g6~m>b?ra5QEgQPpF{<5{+| zy*u5T9w*WeTtibg8?%a9#UjY!ls%+@|0d0@BYE>0XL7*Qkd*v}uGhU@TZN;=$||5vq} zG*OWSxoR$y09v3#HcjNM8=GnmZBV{SO+j5*a4A-2km(IgtGKhMav%`XKTEf)Ak1cE zWdV$}lHkDXM^*n4zSbd(Zsj1#7g4URM=4;{TLD#@ilc04GzA5XA9W5HY}-g1+((?7 z!nqXaddPzB+Oy~LSrKU^h_w=E==}LlN>Z!Gp`U|Ly~GrQb}`Br85^&zEl9PY01Y4 z1wwvCL0Po>l1br_O-JttupByzRf?woNjZGzP*6To#l1s2sS;EUOQ>^)Q2E4x8=wxi zt1h8HTlt&+g5dbaoD_6aP{fB*;s3IR|NZmA`e5^Z&BsL(!nlhh NFMIJ!x{Sfy{|DtAd=&ry literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/chi2_fitting.png b/docs/source/_static/images/chi2_fitting.png new file mode 100755 index 0000000000000000000000000000000000000000..0c94d5f98a56cb475b25400594c3ab703509212c GIT binary patch literal 48456 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%0Aw;?k}#iPv~Nx` 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%0D>QS=ZTzXd3F~3MhB`!>WDmY8MtXr~}^o4V=xW zKDq0xM|sMdBh0jr5^HhGU)$ngu^V5$a4TH~qy^x{l4#K&I|@LGyIBP@40TvOunG@Q zdbfQd7?=9fkY=HaAq%eT=1#FH$6kt456H-qIKsYwdlO{O^TuU*8Opzmw)@4S%RiA( zP9nb^!KIT0;*#T$Zw zcGXA&W_58HFMWk`Mjwgyl4I)NM`v}pa2Nkk)wTYiHf?ab%_o5(@Qa53D5dGqI#*P& ztsZhtrQf=6k}n zV-PcgeHt(KeW=TK4OjjaH(@s5fZb>(S?U+*Pors!4D}5a&PHaaJ!*a$&u{sEi=&YV5?rd#R+oz!rk1Ao{8|;cIqxmy|b;gj35aFw%(}q@rF4JN$j{Q6RC$^@LDK3^YN=lw)06l8x zuq>-&)v0ka1H$%WZ$T$RB1}mY^p7joOG`^b6&)v9j3+q;QXMBir7B{!#UshUQsoA? zOAHIi)Q<%6;Io&x64fp=?4IYu$o}9~7NnmU2npq^T115F&v{F8gS(lbd~_eBsksw! zqRFzLnzkjQP=rO1H(i{$i{}#F94`y*krN0z{wuz4%ee_V(o0Z`NmN%%7lgqQSIkiW zp`Rl*V%~Y3ln2>lH}Fg_)7>5~51l*CuKkpVdKiGS0DdfKI zb`~O6#T2`1Y`QWjCx&grY(>97YiNZ_(vq!c$0WE8PMJrUB9AV~4gNgCLt9dg5_yV@ z&nFkxFBcbvRzh7_Ozof(@(~gM`Q8QG3DT6u-vQHh@8(?yOZ+*>fzAeTgmt99M|{-h z=83lVyEm62a9K!?DZEymWst*`%04iHO0yK+jI7|XLCZqsy??atkK4YT>IHU*`U*uN zDS4Jw@zro9YYmmT+9!384}F#T=vZzur*5%^bW%R;81vPbqg^ioJ|MVki4$Yxp=y%C zUs6reenUlvgMWr_nL7;?M;5z0N4NX<10`h@f%;?9>8a+)dJ6Ejsg_B; zo9XS;q6vu?#@n_XPwCL`uDe);|O-Y}wXCmLldtIayFdUtr97 zUE;ZTyLyvp6!(V3lzE4o6Jd*u+<1*Q4(>xyoW_1EuG^E&pp-E25C4yf*)RGeUpTQX z-J>P-t0Vd^onzGKQbSQ_lXJDC{HN5fp*j6Z-|{I^7+*dIZTF3TlLNi>*C~=G_9X>* z?BeXG)~!8Dq$ikp`+jT#EwbZO6n)ppL5^OJ6P8r`ee5j9NMS}*VHJkg#CSdXr=oen`If+lLwGuKm?_bw@lDm+}QulbC4w-Wq9T(y2-jovv zu<1XMbTfQG2wQOF(D&2#Rs5hUmCgrRfWw7keD=*&77J8JP5+ku8ID~fKO7~sF75e5 z>E6CO+Qk1Z%_^;BeAJgycF6CWGC8YjeTq>`R{XIp0uG7_#>R|K?9qJPbvXP0ck|g~ zr#PaM(vi66loiNYq|vBqRcwwVZgz2-Z-ZNV?KI~B&^J#Z4E3kT-y% z6!zq>v_Muyj~I!w`(@8*O!htF|AaY!0L`R;lTPn74!{K{u6*Uimm^3satdo%DIsOigm5tQ}pEQtw z9VQetNYa0=pElUl)60?n;8cUmB+?9t+&x#|+_J5+#X|lziogC)?p#NR8lpjIhLC+T z`t;Sy@WsF!T;bs!fVyXvFmfJSQOZ2x`SAJ!#2xvon{(Auh+Og#GqwjFWnl(D@$X-T Nk8-NA_0r~H{}0c7-bVlc literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/contrasts.png b/docs/source/_static/images/contrasts.png new file mode 100644 index 0000000000000000000000000000000000000000..2ff7fcab9259a5f9612dda3b1971a2a76565e326 GIT binary patch literal 32294 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
1q|BRfeAiy&zlJA>gw_jC`Sdbykx7g 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%0A@ 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�fROdR7rjVMdwARGk; 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 Q;0we@SzhB^4ZtGwKcbM@CjbBd literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/fairs_data.png b/docs/source/_static/images/fairs_data.png new file mode 100644 index 0000000000000000000000000000000000000000..47bcb2e0ba94a1823b249381ccebe60c9c330add GIT binary patch literal 38555 zcma&O2OySx`!{|?B`t|4Dp5)yNkUddl##6v3Z)3i%xu~t$tojcha^NsWoMU_S$6i` zT>sD6eLw5>d*1*1_B{7}%eBtyJip)L_^jh}SG*{_Wh2u@5{b0s!g)z$5{aUgL|XG@ z!+QLtBy!ac|5>jmD=kSP6aRaa7w3=PP~SPPVL>8oEh7F|6TrEZ8NZ~mydZy$s)KUv zjzjyJ49YK(Nc%_^B+sbYwhXu1UsknRr5c~x7W7~n>$z=fdHpEUM@1^Mfqr@AOsfdg8Xhjrdc>p*~E(M*KNgD@pv3dvzg;?$E{e zWjR_#5h_zJI74Mc7~gsqP28YJJ`<@pu$*lX7OU5kqWv}_<6MN8wqgu$rO%a#)RABSA}JQ6Gt62gUZL7pC9!tlMqEoK9E`t0 zP3PV3T>723{r(%>0-fcRmEx~oWp3ZTZO~sGW;B#LRW1B2(?rYM#wKXpCWiBBY5~=D zM~)mZ`1bn3UGmDD?A&NOJ2$udj--SHzjK}p?jJvXY;J9>z^Ahd2sFj#kOo!~TBRJ9 zl(KlHGsdjR^YimJr+qUWo3kzAnwy*5GBPsOu3K0BtI*YIHXwhsR^7VY{ClI5tj~3P zlw5?Ec3XRUabclE=ItL*nLIYDDXHx)C0*mc3cLFH4pLHWJ#laEWji0HK?w(3)vd+|Zzwzc|Rb@beK(QE_o`kK>6GDJ8q<`l@&7SFdTQR%r1la1nHo zyY(^Osa7q5w^Y`#q(d=pCS+-Gx0u6aDWBa5vo9hdA{?fw1iJeB<7OA#X!om*@T(eH zTW3CYb@hyki)(Iak-2*HRZ(dvGk<a*utp1qCQ?S;wS$vSD43%711JP!=~`tEv#!C-xYRFhiP zmc_uCk(Ny72w*Wlkt zrS*>M_tl7#bK5?cOPn-mIUp0G94i;XcJAD{gJaQ==KL9C`4B#rS$VCGGkcr^#c);Z z9k<_9siuqd%8Rrc;+vaENJ(Mf;o&*V$w^1+mzyi1*437va;Utb0)PGXP5F0ixxmOE5dCchg>ficY1}m3mtA{HyfzbgLBR?c3Q3$g3YUm#aUgBpElQFb#D!CTj^~ zTaUajS{Q6d`j)0I9X)iM{Xt_EOYD1^`vx~|47TNuioG{!RmZ6@s1M#bNMo`6Cbqy> zN1ocHJCc%H_ndm2KC;+ia+AxHJaNKi@8!G1l2<8_(-n;!$C8LPYMp8*cx2NmBBpX&XnnVGRSVUwk~r!cr&sC>xvo?666&4o8-=VH} zB;eGL(vbkB-u4@YhH!J!$6{tiO2a9s(X42G~VCz^I{R#+3PTVCc1Rr{{0dG z@8_46D&{(!dG?&L+(zqnR6D2aN4lZB7(9pES{8M|){X5oOJfDP zsIRIOSi5#~Hy!(37AwOR``BDE1x||dS~&!t?tHXXv(q?PGvnFhWVJLeg7iA`k1wrtVdl`|&*6>?X?=?XG{5>F)>Ld3g5f*^x}#NSxHF|QBih&ezmr?w#rk)>1nub^m33- z+FLu0wJ%CYzbVJc*nj(g%M0O|s&ku7%m&SG4$mKZU}`{Zi9N42m%1w&+s)`uneaL) zD&yRCBSS+&OYPW>FOkOLa)?Xp<-jrx6p{zBP)-!kXbDVBywzx~o) zM)vL2%)$(PKJM)O@sVODu2)Vs=nsm$JU+MO&z|ZJK9+e~VyW?I_cixy15=8yfPm}M z6ME%qb4-b*QL>X)?=jj!1)YLO>ZvkJejA zwWwLc&1sYk4Gm=#6_32Vy{k>O%(y04Y1whkt;agNaZM8Q#P0T-Kfun;Dk9SMdQvmP=n1Y@1o53F zx=SaPr)pkWZXNC{5GTIW+qcI^r!QaL+11_6d-W5^bB|}Nsad?djj_+k=_@BP!br#T zOE$mJ$z#I8{BY+NMPJoRn@d9lS{7$J%`ZoUKJ-m9Hn{Z4*vQD>*Ow>XV&$2ModwWT z-dho5)u^JWc|^a|XGe_kVNv_p=YWmz0sLkiBIefC42+D7A;+#gY;k^xO4VDS>$r4H zW@+ONyR{Yy{dd+?&RdOorT2==QJWsK-J8#FP~RmS5fiROyRX3KYmc0 z-nen298+hZD~)WHX?qcBCXTG9f~TO~el?j>NJwL3!b*H~KAQB@|B%89E3Ow7Xo-q1 z2OE_lgp4XfjpDO!8VQ>%O+}EoXhg>ETMpJ=IC;ByUuI_J4ebXfvz%mmP_CM6cE5O` z^1g`kn+KUcl)&GEAM9q1oIQK?>C2ZD)%$jETCbs{rLA+mXJ@B3)R;_M)Ug7xPmF9( z*AK&p>!sW1ZW37CB!78Q_RW>-?f59t^768xmX_yShrRC}2_xH0RCotkKWf``FNhCt zqdr0Wo%XL6{tM+}kGQ!7pQii2KFIsvAn}oU6!L%bgMWV||7K$g0WNOtVl>7Hlnwz z>i`#@^}l(;h4Q)Hq&4$Nax%B@6XLC@Py8k@=%3%WyuW6+4d0pnSO;bM=I22{(P~NR z!yEqkI0G+~@Q%zg|MqeJ_3Ra`ZMnR$Sg%1r<;X{|?R0dsJ9loNqM`!E7s%%2druC$ zsjKokC|1yk`9lJ6=xBeCf}-(L^{D9D^(p7%DtASH&1=H0bmcd0eD(VE+TPw?c~hO8E#%k^v4bP> z_D%tTfqFB84VQB)6Qpkc{uXmN!)V9XuU`fIh^s5$B}`Xq@8^|2*Kv(Y>!hmj@c1v0 z%Ft{U&PzU@GK|fBM*F(#KYo|zng0~CV?keEpWgV-&u`xuy)cv8+2Snw-q+oxLalQl z;OW!*=5S_ifeeU>|P2=O^pX|r- zT*t@n*xK4&tq9~!{E(L?YGh=jY9`)!kKcTGe!|F%C-rg~1>Hfp4@oBTi$ke((b6=6 z!ovDRZnP-JD#j7{D+2Tas;gnw2Xej|nVI&-pIcj*>+0&5 zMy_PvWj|#z>V@~xM`hwTe7J6aS%0xSbe36IEN8J(c_gW3nc}`#{=#~c#fBd=H6l}+ z^B4Mj=HD@x5<1{TAoh#?1l%K%u zZazNhCdRiPz8)&QOifJ05$pV&3UM6Jp zCt4<^#B`do5)!ze=EP|+qM&DEi#4TZX7)7iE@@v1yTsM_!BHaevR7p#hviV;MiK`X zmuu?S5qgHB@isq7-sl@IU3wmnx6as@Gk0-N?2X3M+QdYoUjrZ31_U^t%<*Y0Pv^~w z3l+Jyea)IRc68171|-szD_2wt>}_pdy?v`_BC73P(~@Cq-c>|RI(_HPv8br1(H|dz z0t3I`LKm#ezLXN4VK;T@a{1bH$pwqhXSdM9a8dggZF?oUr+|;HR=wc2?eUW)k)(b1 z7GpX2y?Bu*lPk8+LzgkH?<;!4a(iomv-2CQRaRD3^3tJWJ07jyqHH35vv!{YNYg-D zHXrFH0LVG=>WW`jn29?1g|PUHw{QMxfz}8gz4OlpREmm`THYNiH5b(MT<4YNK_(82gNJxmuTqRW8S;ypMPOIVd>#Q6cgwT>U z?KrvEVm3TKU}U3zlLbYSr)o0wamGxZap23B`?0hVW?OnI1b+2dJNu7*@9NT1RaJfU z?%j3>3kOZKI<*9K?)C1lwYTpkR*Hs3NO5YdMxuk3R_j6G{KXEpckkYPnHg$Q($w@I zz!z%q`}fl+BQMjsqf^Pu5=+3mcNQkEhfP!j@f227c{>LXH7!eol{H+@l0$kVgObYW z47SA!%a4Iv8V|)+CwzmCU*CwI^}c1=bTDepmF~o1wjD~&`iTwyyinsTb>_?(Ad~S%EwgJ~Med37J>~vsH|yBw>FM{0i?f*J%>*{ywbY)8IAwK& z;pi2&wzex*axAGm8Ix*0HtE=JNxxC`B~8CnQAz1ReZ6XO#DnpPi8BrkA}Fj(4fB^1 z9cN~G{1x<|Yn|#gH#fJPEI)K_J3ES1`>|2Eqhsfy5>i(mPzrbXD@f_}Rj%A@ot3Bz z&toxe6nWsZlKW!#fX3UaYx=6gHpM7Y$0)l)<+-}LykL{OiVKSxxQD3guP^w&h2Hm3 z)2UtSV&y%L^Ny0|&VBCeWXZFeIh(4Jw{7Rn_*vHKAYG?jqIT1#LGWoA7+eg)@0Ikd zY}fitdLoJZ5MyX@dCHXg&bdpRb3b=WPuLCbMyIBR>8^^PX_LX z{{H^wmSXd}&2YV%@H%spFN5pXZxvOCi+WB^TZ*hqe_u|Ll&q(}TNk@b@8fdunOXWY z)gqU6W@Ox*Z6RIXVq|w7H`suuSIlZOqif&kDWmn4-U6P+w6Zu;$ZVGTnfknB{o2dv zo8B9jnF-wX((RV#ZmmyHndp0I7Nz~s+7@t!cJJQmS$>i>^sFf)T8pYGR~9EXoSd7vVmB&xa%p9H?ZGPno?fU> zhyj|v(MVqptnb}dcuyYE*J1Tk9dDpZqoTm0+8%&Hk>JTd=J>21>kQsZuIuH{t+l25 zj%BrZugFey_0Yz?^XJbK*XS4IKia9ODGB`S_w?x}pFfCg_+j7JY(Qsx5yyvQ%fe6G zloQ6kQ#G4H9Iu|F5ZiLU+tnvAsW?kNCuLu!(@L+Ij!XX$g?XtZz0L(kriq-25*_c% ztgO;aJh>zq8k$^S+6^=`uCA_Bgw*K)%`iGPR?2FrBrNL=At{W^KH9;le)Y>^YN@%- zCz}|LnRiKA4mZ;#Yh_6lIIYy@Z;)smVYA7tK?Xwrw@If7#FO#a*%HXOvFe?m zz_say3f?o$d*(k`r)=+)Rn=!lnP=CuUqU0VuZT+^XJc38DYfhCnvw< zC}1maQx~|uU1wgO1i&=`DC!_92ms5?b{y$PyPJm$|8kE;Iera#gntw(pH)nYieprzdYGA0SeO% zba85^)>>;liGZh{?yos7Bl87Jh^RxGcMCqHS__620;-lkmcHH~LXJCf^r+OibL${b zD_yyA`&*{-Qfud(@t=LDRuBlK~7Ff)Y9r#&eTr;DT9Sv$4rF7ry{C-7UT{O~=4>`Kr1QNW>@T-Z6X+oY3;pEc!2owU!na-)a*8%_YiZ zhQ*Wqw+HS~FWSu(4>{@z7%`jphVspAQVOKe*h)URYI}Fd-)2T@3nSO%``H%#XA@NM zf4%BZp#3&@8UI9i=gyte(4K@Jxw*xM+pf!5 z_cNIpa&yVWeQa#+w(0zbHh|M+smMVepOA1(n&8+_4)os}HOTZg3ICB9=x!z!e*aGQ z=jxw|(LJQ_wb7Di()r>gwv6L&xb4{Sh_fj9!*GVd1W&qDsnR z*uA@r>zN3x(#qu{)J*|TvBH_5AWB3M`0Al98^f z4rH5qQ+<(ELyb3^Qud%1C!6ytb((Cj$u}Jx+4wzHz7RN`L}EU9`x9zUeHUu{BPb@% zW!Tr#?DaxZ_IA9S?;w<$m-nly>tUY#oaTE+5WfwZH$Q&#i1N#qFHgZPzOC}VZe7w= zQHjnG?XI@o=|TBvvbO><3pF%40z&~07){L2+Y-f8CT2Uz?>tmQ@4e*E(A{3l0$WW@ zP2Z-c6MdeRk+GE0pHNhkx-*O#j=-h?dyH#~eBm+)He*MRvhPafN=+iCf4=(z+3 z?_@PPvRQu0b+6rdpuI%Rix)2jzIwH<;V!;^FYsDo@AK#MVb=$fDk=-*GuruTMD|BU zMji)1$mngk=IKmeSLji(>B4? zxij()&qmhT&(xQfQ=`$lL`Ux@{e)12f=lV);Xxu*S66dza3~hb%E;6vs&OV0M_lU! zHd9KpUAmp}B|qZ^COkeiax0XLf(M zgrwwJnp1!B4BkP$zBCsj#F90uD=Q!S`uZAWLk$wN8hmafw10o$@PVmnnnRj0Mn*?E z?)C3MwUvle+$Sp9{(6MFA%Af+0^A?A6I1*0h7B7|8yO{5&!f3`K_YH4UVilO;kF$+ zp1{Ll6BXS9@qY)6++QEsL{PM=pDB9!`}c#QZDQae7?A1&!Ea!z76PZ9c1KA(yEwR|#|$VL#mY`DqPK&pu&cW<(_*?8FSzH8c*Rly>#>9Kccs=3|Ap3P}u_Ke`$5>y(s~?R)lcH#RmN zbavxrWj%AsYVZJx=t0M;Ti1)#+CW4?(V>M40FC_}c&)$K=}VonXG*Cynep8qOGqwZe4FfYXGtfaG1f-1l>M&t;LBY$nO-u;u3l?m= zl1s`&Cp{qD!so;@&MO zW&7(1iI-{LqdB)0$zr%4(`_D_C5HBVE z9Q?WCkIw$z%Ludw5T1U{TGXg!?O-JZA!i z3%&|GZPuE(1uG9m`A!krW015O8ZU9s|7T+~Dw=7(aV>tib;PVahaYOF{@taS86G9a z-!BWY`W@xvy$5H#gncO`%=LZ69ZQ2EyZ^K~e(D<0x!r_>OFAtlw;4^uFErE(eGw9; zeqGc#qoJ{uj7_NaWtEjh&{^J^cT0JW5J?}R*#Ia}kbvolpRwL9XH;W}r`e3@&@(XT zp-=~lIp#~I@sz>0ioj9S2&x`ZW{;R(< zWQyBO#~TU3bhDcqHK}vlylIm^I|9)O{W*XFU7$>LB@ju{7r!Vjw6t`B zY(-a`tS_)JHS1%&@Op0k*o{$U;W^8I)YQ%Tz6xwnu@5i3(ux;OwOmE>N2&beIM+_a z$;k<_5&7!XX_FPC4-%ZvK833z#LenfvZqe^yXY#A3PbmoHIi14bt^G+8MmcKYL`apU_km?{l-!i3^hTJ9!_Nes;FZ%gZARQ=|RB z=!M;1-`IFo60IoO#$L9A(uCtdI7BfA2M0ps#$$ua-6jzA)!Rz~Q>}jnkDuYRSPY71 z?H|kI=xqD@ax(#86(Y(*P5Qg!cg*nd@u?LE6z%WZd#{JKr?;0CfQOMsr)a;gNR&qm zWbiPXjt3t<3e#^~_wD<4Zp|#-Ugqykur(lt-pnJF8*U``q1Arj{P~C&?cvrMKSEB=ycz3ga z3~v>eY(6d~x#9G4nV7X}*OtMx?#1;m8ghWf_AT4O5R23A=g+I|o}MbLPQ@NO{&>K5 z?>^H=zi|PmxLADc9K3>!qy=b~4Lagzt&bl+c2iEE7Z(@*k!PPJCAv76m#5p}eJJn9;fF$m9RBV*cLyYvhk>_&@7otW+v%xOQbf zD;FEcbbR~!V2>AEQA`MmIgqJa1NW0&@RaQZ!z`<7htI?cJ!Jtoa0g zP49M(zs1+TQ~=aI&pseuHge6WFT{{2RwX`rl4k90-i!|wwz-(GiYFr_sAVYBqEk~@ zsme_Twe9Naiqdof*YAOck%Knt(qa?k)=j?2IaMB<-ZBtNCNO<#x zp4Jb7P1$JsNBL7u;_zsQlo!l34IEJM#Y0gC6r-1_KdRf zb}6r&4*-@oGoO^3$?^2uWZIFNU~To|>(`C^{QQ~~b?Qzab#IcBGg5|ndL9!dMO_^& z>CRN2yyZac8f2A7_hHU;LrXR?M-a*B!KOOxtCbT1;P?csB1j_obE>rnbGoC63HRdk zZ_1wq5%6ETUPegPzt00i-*U?*RNmi6A`(hpLa3r6zkEW7rPs`N*q)O_d-6F@F@_&gR`;bp!|#1 z9tGfAmp|NLg*qU#*j<+rDeg_gIm`t|OzUzQIQq}6p=h-snP;QeD2-kO`Que5=| z0dVKH#!W{d;-_`H1H|#05Oz8qpJ=nF`3w$}n!k925Uz~gWH~I{&0XkwiGVWyVZShb zV+Q1nYtdCK$2#@^L8{ryl!9bV)Jo7q+Ru#+G$b*GJI-qS`TD~X0@uINg9+^C;3#`N z0tDo_Fx4;dN8IW17U=i{uc3KDvi|ji#A8WGgIaO&f`Y?DF=KP?Jw9k8nj(J`kvyRD z@oM3*tM&0p!<+v?at0uVl)HEDCV;5*dRp4~ox;e;y~@lC3_C4pN%fyfO8v1vXfY&a zw3};4tiBw0D?XuX#{dJ7%S7Qj#UfG6bC{J)1p$&$oG~aJM$^xpJ*$QH2P5`=*xwO` z>4fCuVoG9Y!yd5YQuE>9G7f#ybl`fPE1S$g;@tZ0;{FF;gaq-RP-YqF|v%H zAj%mI@JB6we><1#1^JK=ZjK&3O89HYvetKPd_sW*@0yh*0BiLvAWg=6rb+A1{(dUB zK!6kb1q6a9C5VNxAndd(h@Rs5^y#(_IXPYP6Wxi;VP|uVQ+WAUm=l@8Ki+4ebR-7Wh;r0BN%lZ*68Z$ zl0Kytta?C&+{eSCFw%TcK|%V?owuJ?4s&y#`)EC)sHtf*x$vleE1S_#XlYLXl1UJF z)|0T&1abM~jy_^p&z7@v6j68rGX>gD4?Nh!cr-qcY75h2Y*Dm6N>sMf*t+YtFunF5 z|5v~j9gbpWoJ>a4$`*EWU5d6a1TMi-r=no){5cma`b`vVx%cP}A3jVZ^alAs!-&5l zK&eMX%YV(<+Ir`)tE8>F1xd7@@2{bRI2Y%krJ)gt1PW5hWV-`**L=$XUPNY)@(UPCL%QPACORFt6lVvd>_ zp&=pE_&LMMw3AAEZq@J~!0X3M+&{6^$3b-(li`sOl()$A-4Y0x9;~g8M|vzl+j0GU z+Wk^D+e+#XdERo zppFAM{7Xgfj~puZN$am4{*HA0Cr1Tn`SYy5(@g*M!GUlhS>+7kXecMS(=gPW;I8hO-8_21qp_We=)Q4|BEUQFx)r$eC(f(X&ohA@Kfv9zn&lHIrTS0qdWFL zCF6fTu>TCH{o7IVUti2$NjUtx^V?ETyioO0pFp9r*}+NqDNc3rwhrbmoNaV;l(e5MYD8V3*1fpmq@+Z<*Kt~j z7=t0N&J|$YJ^*9O1rrDsG}p^J6kD#Rr}x;cY&(2@LdN-qnDDLE%wz(A-|bIG00p@_ zKYp#@u9TDuvF?mDno@Nc0hkW+@Cf8AL!Hq?j3P>N6>}m6(*t$hvCd8ly^Onrt>3&i zZn_AGCgxJA&UR+zBoE5kMg7}L-f6dg9G@5;--d2N04!7!74EI41G%*h>gecn4G(i6 zKF@pjVjtg$)v8EGEA3ocCFDCKC0{EXa~jLzpI#pk(c|$r2@!sYrjUUP9F-J z(8@BsU|{h2y=l9qW|k>8-;K(rfZiES?!LZ3uo}{`vVv-B70bVVT{QE;&S;l~F?t-O z3i47AwDsRjsSzy~?jh_0Q7kgBvMQKY!dQdFX+AP{qJ;Ti0LEZ=;GhPf4_2T<5(7Dt zQ&Y_HWa#KxjVaok#KZ$qEq{XUL}ekbIZ^K#oIsH7(Z80QP~gR z$>e-`O8^fWEVzg=$fnm}h`%#xNR(<2_wn(u^QVw-CVAf~5QD&e7lvZPa}@AFFHYler)67APfXUUC?sq@spNHT#A?-BK)#$1`1j~DCS>*dakK2fNX5vy_*X( z5Gek8{GuV$0z#GrLJz&(o?0rC4K?{!(Q|FXyOmx>_ZLvJN*gAU`JGqd7% zoIY+*7AFUaknxo&WgF9aig97 zU?S#s?%zD$NAyb6o7J zK>nVnl_>Ub$vAhJl>OpkTy4z;=?2mAn?TgbfYabxRlvE^}z^si({zs04c(nxd1)(kC|=Jh9SgqwC=nR|eZnrH~TXQ2>Cr z*^#w)N=REEzl073hK5;{3vzPLqoUXjA3YlQh>FI87=Hw;)-)?l7(&K53#3LyS@{{v z#0z?QQTW?e8u8^QIs2hQ(nQI@P!BG^VK(xL;v!Z{ zFCMxJI(!e|iR(Y!UAJ56oi&DhH4vVdk`jnxO4yq|i!ymr^pcQ4!4 z&h9JVN!1bOo-#l9G|8F>)+7)1wCo&i%~DvubvFml{5Nm_VjQC}?(u;G2hPK5BML;a zW65l)*#E|!2#!Y;QE?CRS_g7%a_|c4$b|0ZfvFf`I5j9Jh!{Z~NwenV<^7grri(rb zZ04sY)<||ATWfDi50=Ghv?|Q_c$719MmY2F$OdEtzkP3uVqUN zTGY|*ZP3V}OZ{tp;=kf)!fE;=B>v?j{XIYNZDa`ZlTE?$QgykX!=zXR7z&4dh7@hS>GG0g!J8ZjXks6>p&Tn#(#&k~?7z<>)8OUBEZfBcBVYar>E zSx<@Z@X#Pxa4;+hU%xQ|YFx;be4!bO)kg7)bJok~xQ{`kZ-&jq?$$j>_lIxQwcqHo zjIkg7IF|1Z{QVUPftdLC^ME>sOj_Ri0h)bgYju6{q#XVDD1Z)uIUoxhM-tNA%L_u_ zt?#iHY;8Xf1G?BbAZ}$q2<(RsV`2q`g@+KHpthGGK6pSt;1V>ao`kq?Ju-7zUgSLX zSPWY3apOiVSn|YbU4Zg!0Ewr{DEyL|+J(-1$KGgPvBbG-BcvQAk=PAU&1WC#U*;Dh zzL2COu@}+wlIx~)S|_fnU;MH*XW^sOP@trglnjb+3}PV15o^Vaf^w*tWY<5k09uA% zE8mhX@ua1v`=fk+HH>h)VR@zXb>0*|X>y{JMHUF<&x>tFub=}cX*uKFpgJ-VFMv@X z2R-3cW?p7Q&de?Q_TX8{rwDscZ`iO6{hxZvmH@QHi@P@waEM3^jbz}PRzRg;zP$v+ zw*q-K%(TLKyW9J9M~3a+fc#Vz4;L4GjB@#^fS$d?1c;3`i?Th!C`3~74iv!U_-NVqbzthTMIilik zJm3{+ArV1b8Hlcj#mUR*xzpcdrAoaoyrSB?lK`>LfW9f$Z+?n{HQs$dLqkIua78wd z%MXg_ORGCKwMrG2)|7!-^}y3mzH)^NRVb%%v0MZrr%y2|oze8y6#B={nNXLX!@2Zu zI}eSf2a=wz6vfD|Uy(CMI)GEy@XtGui6S~I=S%_mITSQF>NiA7=f*mDz-{g#y=8ak zEqubzT=MGD!2q-JMImQ-PnB*VGBe*;#vWbVQX%et$4Q`b1M>~Fb->75yI8%5IQeUv zv5r#}oQDt7Qc+QPve&w_(42wAoQm>eCm>L=$!c7!1 z2xLdN>j)!Ef<4LLWTp>vA}K-KxPYjw*rV^u%gTrV6@gLfdbQp;RqKB5uD7iwyY%H{ zc6(yPssSMrV&v5*8-xHVhib*_?5y(T%kdWWFjcn?2oDwDQ7DZ`fm4%{29UBa5Suus zzS)BAro;%Zxw1PLrP~Y2FgYq}T>-2)Vny3khCY0fDR=bp<(M z(boor4v30sW1+`HMSXca$*m^dpL);SXm`J}gmaeF9^IMGrOg>6CB1uDOnVC|A zZP%)>g%inoq!X3xM}R&CTC-A%GYN;K4hxBh(c<#+&+kk{P5Olz_-$8ea`HLY9ZQ{V zBU_5?X9i=2s1>UajV35H_xQ4aLJH^5yWlHAm z-FNegi$=L>CNc|EGs{+~{i$g)-}82f>-S-5IjF8wh;E=S^}k7k4UIo=OAvr~g38<8 zyLU_Eq?GP5!0~ou$3SB+`gs6(oc#}U()6AXq5$@tLE{?@qYLAR)&c2BW~@L9&e*#F z0iADPBWds6edEyW)CzWKsac!z3uBVgNl0I=fM{~PpS z;RRv<_ySr?FI>qW%utu%Vj4{Nn^=rE>vsXG2SQwFSkQ;;#IUqa!Q%X%n{@nu0+sjG zthztdUewt;A!4+BepilTd3|@qWe>8N=`*PKFvWbvt~?mU0)Nd5M`MGAA(Ku3pg;saKe=48QY2$YUt zLj7rhd%IdXLMMUEj}T)$Zf;Nk|2vW~AZxuMFU^s~XGcX76NKAY$dvqR*Jj_M7c44M zI{Ni8&rNFjbuXXPGbA$vY0n5+Yg#?^T% z4xX9;M&~#sIbYpPjS*Bj%6jGT+?a2mgZF_0tQY*oa~r>Y>nS%J3o~?{bvaUTWS|xx#Bo&yn=MQWj?#O%TUri!`iHMHgh8T4bmQWejhYCG$ik~_lou{mb$e(&$AIN)jgFh>q2r0l(C1uV@Q#oU2Kx`5wS9bEg!tulP{Y9lWzz z6-xH;+1i%x$czB_Cyc^e&2a1pUX_p>pPqgk7PhCvYu6({b!3Q)98)uwxk2uU#fu9(R3@nbp-#$wIFQ3s;a6}{c);CSOaAI zLPE+H1oT(k&#w@=bE-6H{c-)J8cfZ5J$y*ZiZli^w(_oH{;;nLuiJ2KEchBzKxM7rF zo!l6yIXRUwK6AE2&iV7hb@ONkmesP6idS)Vh!N=iPKpJL@D`$V6Z0<+iZ!%#1ul_= zkWgt9ZEl$i!b~$E$wN|BOi(2f!Z&Kdy%Am*Es)CWr)bG(ipVZyIr@rf4F((HRgZ+3 z>u(ysbvgPfq}puGcaBlp^=FY@+L`Z-O&ztr84>70`?!hYJrw~N68HUJ<>%j_t*xz| zZW{i4Sv(PI1O!;Uu7JDF`NfMDcHGDIRz)B-1k}La1zt&5fW*SHSR*=KLe77~V&N_B zuTFF_wXKtP*)z;7u0N%8?KxhrL5hC}Fhl$z;(uumQEMC8| zVylYT6!=%Sa;+zOE#Vhq<}iSvS~Z`Il&I;~0dNo#IX+ zxP8mo02#zuj}oTp;5^&|572kqc?ipW`?YJ=m^ypVDT%x)8ckb{)h66pXLLsTG16w2 zF;aafd<_XH-7S9SA4BCnapJ^Jj2v%smlQp!|JrygJb%_jjtn%rQ^53!uf&5-JmOJ1 zHa;OD>Oy3OvI4n-61ZIk(pRcSb^r>296tcPNh(W?T#>%y6aiU|h@o%UvgPLO+r+#S zJnFdoXMXw1M9vV7;s^8Y^_p5*=7?<&1`#A+EX$iU_OFsHRy6J||Dv#aN(^TpoU-Y` z>HByC;znD8%}4?JJ%9c>->V%k=ESKkh!M2gw^M*p;oAR#fFOEm5Th5z5Xk}UJ;TK? z_hEQ5a~t412Ir_AoF+kPg;oFQCq?1Y*~KoXWoO~VoN;AgalBkX)4s?@CSqdXE=cxM zKq8fc&HwVG$+yMpB}`j&hX%!SChbAh&&Mbu#rdhKY75TuJS?is)x;)4q!}{WKKhNn zy1O5t;WQaJNzQ9c>zWKz2MgNYZHizoWqGMD!#EqyV zZkTjxf%E$!G%gL^4_#Ce{#F#Ywla7KEiK$r9|j&BIW|8xpcsy0$DSfQBP|p2Y|6|9 z`{&)eXHwow*R5LL9bU*tORHNvcF-9R`~>bal(c6*cSz^rq8&&Md)j3=@Qwovo)DJ; z2Zx3*Ih~yy0+Z+ho8MCey5)n9Jve^+xUC|~>23vW?LC-P#u8_ZR6GyM<2lA97OA?K z6W%_sEPVL+!<7@Ccv_q>(N6RrNV7L@-Xw0a!i)THvdyzWS$oF`I7oyV82{#tq?Q)5 zjI1mX{e}^}hJ^78A{aqv)OmS(&>)B?3&!`9)AI+2fis-Z+Qvo~fRbBn-q|(IFSGAwI-zGH8}eto-?b zb=@?I1bk(81ffAq=`h|hoQ6X1{4}P&Fs z$HC4%1I|)nzqu-cpP@Fedh8jy>{}!@i0X`GiQ8XX&a=zN8DJ8+djK;#aeLRj2c%_W zq`bNe?N%D&=Zv*)%)*@(Z~aMd^uz8d#W+KKjRbC56Bd@74p@z|5fq}SdHSTAB42~ko22+_$l0%5R?b{3fJXmxh(FM#c{ckf<7+*MGG z0V`n+QDI_M9+h0_(k0i*N;#mdq|z(;lZM{w-p5QOA!v?UPo%B5y0}Ee#H=F`<3~VI zL^lGrdRozIix?N{HZ1j>q;6kDjv_cS5JfjcDsF(iK};eK&Qz>BG1LG_skXlUwNpoP z^9C&684GAN0EJ;AGsRmDzhVh<#)1LIY^Z_rM%+NeO)^SHp?JXf&)HD&RnhcXka(S% zmtR9DghU7w3;%L~lPGad23!r})xFxQ4^G^-9vUJgCg<^fN0c2m!&(o0G{#B?c$&yk z!fSL#GBIh1vXNy0Qw^V>n%&NL5}vTo(1+CL;Qj+8JvA+xZp!uuAbx7mSNRzo{*`jV zos~taO3bvOkPK1?1E4@p*tYQr=EaKO^StS!=P_n+UQ4kCa2|80n^9eWWe9CU`?kfJ zs_=MV6*-~{rBcq2 zkcu(dN+;8?QRGU<77|jzY!{WvxaFE^k}JtI%$Vc<`l#JsyV?Km|2+Ta*{5x1nVIkR z`#Ik4*Y&ZxAJDIyo14ohE9;J$&Pd|TR{c26$cr-~7_mk2L`)6uJi-^kptzdB6aTm_ zxm_}9>*D36C`KGMZa5Crpf*4SZsC z6S8yYyMSil*P$f1Xgt~8#^yNW<$i-0QLYW=VJswGH=wudD?wf-SM*VWOs6xr-9E&E zfAZw&g;Kjg=8>2XOGv|)rJ}fWByZ>KExkV?Lo67}8>&o$S(1MuMPt-NImY1`cT_q8 z&h}U7VTGh&+ZmFQdwU-RBQxLp+9?>w`c|ZS&T22=O$sqA`JE@P?K>JvE8)9*d{#r5 zPN@BaZs*kGBHlC(g(v4sRy~l;Z3%5%j9#oQ7`dB`3(nFP{+G9!c5sta7 zgBjAD+nn+L?gu-)`Ydta!V7U#@&ock$@`b07{y=3)rWq=(OzH8$(#G;uoGS*MW(m+ z3#5Ju_)?OR`iAl6k-KRDEK~Il%8niK8^BJwE3ESWBDZ8m-W8)clTo-?0R%#&83vn! zK@S8ph}qpb42`HL5)AzU^B z?wkm)urB~JcA>IznBtT%V@?>39Y6jCtfa@1($j?+nwr)J4ydkEoN_lOCmGGWB})27 zb))(n%DL%UpGsKtrb3~~rp=qnur3|RE7{#n^Sbfa?7^UffCi0O|a6uMs2 zjle4kIht|#1q1pDnh0F#LU9w1ehga(1ar?Ihr|{*O60zOr#!9%A`0`BdrM0&WQx#ss5d&l z=qm!KvnZ&%tZde_v+vv5&VWPNI5+0P1tO9Kbn_}wV;pAVkrTY(A>2oC?Sp z)z&4e;(G|VLACH6%%YKvjTD}Nx@UfUUAJ^MXZ&ev6@SAv4*?V@YuBwiiphy5EPw_s zN<&XrwzQlYHA&v(X(y9D2^8}i`Uq^;sTnts zDJejorgWF+p3W*bXLkbvWiN}S#D5q&MpXhcMews-uOJbdtRw5f*=YoSdg7JSsa zg*W#Wzj*NoJA;AIkW?0BKU9b_@&dWKu?6=FN^0tOLV)UX0F~fY!Bh`$^LU}J+3OPh zp9;k340IFsDTB*5-`;u@dBcz5I7IXD6D$;EBel(1(1#Ux!5ruYNGXo3&;ZUhbk3uE z&A%0yA|hXhDnEmvdl8Ck8ssKe(?n~Fi`^}y82kq6YptLO#`I?cvCv^>Y(0lMz3))$ zylRE%jAJ*0m-o^(`}n9qyy3RLdBT`621tJ59^Sq^+A8|eDXj7MM_tf~)$nU~>tJ9= zP|#|Dh>orh+$>y9aHm*Htf>(A0RF&QN?3pI=gqp@)!DGR4DX!2|RDg_z5 z%j@T1Y-`khE9*}5cVp34QB~D6tS+U<)7~ z@NI^{~g# zbzSyH@Iin7lj{>zi|@J)(q|VZcTPGPPu-f8Z^7hkx3_0NIhPr{9M3h8+R8;puVf?& z!GIABsoyF;iPy|;#hnh@4NG7BqN>moPIYyGO1YPt+mY*I&o^?ta{d9WwN>Zm?)a>i+t5 z7J$Y@2u9`>K$Xb=suPeWk4*&})#rW?BAh`k7c}Yxg1U8iMaC|8lF%5 z)!O^s3C2vwE6TJsIDYan6V??_R<1EInRJG3feAL~$otSm@9g;!L+$?*cxK68S^)aA zXuZy(pL7_+q=4igTU%R_|3d^h?Sm8wB?COvs=xtDRv)QUkeNtQGBHe`0ND9;-nH>> z#XO#OZ#yt4tANvqMG_SN(iaTSAn#GVYFuBz8}AF(X~%(BC&E3q+I1(0m)n`DjEgxw$2A4wgaSxW{;qA za=L*v`^2+m7dyWUN$!+9U%>G{co2TMZ4~K;&{U6?R(-mUlOaJ+?4F)u`m>M@tOsFS zoR7|o+^}4ruG7E)p8%eMU1S;Zr-po%c{z=rgacYh=&ufeKu`T-a{SYCdI3BC*`%4; zBU5a~qG`kqH+%8o@rVwn4Axo2Z%G(D`Ny}CiU@MBaT2TXr%z7Dx^JZmhpWLT5zK;;6Z9Y|U)aliD z$h!@(PxZcgBnAZr%>}7#*Q7|%HO{5*oU@~2dHWMvxD-pFqclMW(EIiMYKW+3rU&9@ zUfH(G>YgBYAF8t_UGgqNe<5WYDbI%9VyJo}FKnZO=duPSgjz`kU@_zu&u@1?0pJ1+ zm^SswA1a=0-4ocn{%Iw}#R;f2E<{DiqGBrr$lwB!vEuDp*QpOQ`bL$3cliC7%w`v%v9Uw(|AG- z!N*O|W&o7L>GsI~H`N;ygxx^J?YCnmJ?DN(v1UzAx{5p^!C+J#k7eD(-F-EfC1eN% zBeLKYeck2R|4||-i_F5q#m=|}vx^Wjh}r=zjg`3l+9%>*hjcfVe7p2)+N3I7!6k98 zMNbJ8_U|I8Z7bkW$dN1j%LWIT!p4Mh$UPn*rW9le3Kk`h2`f@w&BBINlkFZ+=nh2c zDTw%2jWOK)ChM&uyzVs9Rm$n#%A5zm5`e{y)Ni{3`i|t(lcWGq0H(H%cvs>D;wqo6 zr*3GcSLy0*9ULeTS64G#psb{HbYsd>DA6H4O$_5hfCn09AxYo0wgwwJI@H`BVO7uf zkPt^?XuKm%xkwFn^1VQ{0UND2l!|f{lW=*!V1X1PNtwB`gzAu_5>dPic@DRf;&gO$ zb|C=>$#t{l&zHc`B9Wu;BO5~_Z>Rxtr@$;cN}^zo?0HzSGgr4h<`+0?^Ojg zl@fS|-NmfvxHQfsDgGM-wMj1)@>!yO3fh6B=hDf*te^u<3fi${OVP1WYFCCUFmgIg zM|cbkN!gW@zsrSN&pU@>wMZnDK?m!@2N*Ptp+Shx&Yp_pOQm37&PY)MT0tE_t*%$; zyh7;=`pyV-5lz9V?fc#JYGc2^Bi{lz5wq1$af<8s#|?mG)y-dk11&p+JhTrGU;Ku2 zGZ=&Pjo@f(da9Z*>Q7I~O#QxW&FtVW#boZts!`zjlvZ=v2@%fbhGvUs?Y&>+55kFu z%ttr?^cPBzj6eud%a5Ef{zpNPViNeBK0Cx)>L|=+ckNmlDx|#C4S2HU{fv=B*e?Tv zG0^m3V%b7FQ=oZ0_ik%%$WEkcK5b!5LOv4x?G0VYC*&;nVE%k4!C3wy0iFK~l)T=YaDW1mjA+red-e?$#5~^hs#i;>Q`b&TWC5P=0cMUI2qwXrvB0i@ z$k2CmoC|5cI3PIC=yh>Cgfl2$?1CU51}69&(H4S086kq^5-LjAPC=9|T)Y_a(UHiL zuPk3d6|4e%TFtW5M29>0eIb+0rLe`(2#y>dG0?fqc> zaW^ucAr9Sr7{Zz7&!4~RdLqjAUwUp*)hYqGmJ_ej)il>{-aKuI{r&SayR9jJ9?>l& zKnq|lLC}dB#{oGPB)LI+7!Std$k%rxC=hY0BT(9W>=1l0onaP%2&6hs;ri$=w8Lp+<1pmgl^3u4#7-VPICnJJS_vB`tIzIaT0q^RC^gmqN+88&^tx~%&QDqc6X29bw*H(FPD2#iKFwM7zrnUxBO)T4Hh47p~h;V zMiCGD=Vxwt4yCHH640<5Fpeo>Pe{#}u@*xkiMq7l!dOSjeK9NM@@RurP$bw&MjkkD zfWcq{vx;a0ypmwPFm)LGFS<;6l@M7*@Cw*99m)0;Y}l?RX5httQo##3abg$bprrqW z6akEgq=EvirKLr;xs!xeAsxGfUp<~*UBT%Y@PcX7YcOv(M8oMplqv=#2~ymT=ik=@ z+U(rSmG?{xu0VT|v2{EU;6P4OL|e^pOqJ>%HTGF9lL170g`NY#@v&eqWpdcBpFa;y zPggl^INRxU1QwXkpXk4Pv6K_$-&?3sX) z-MK;`8YL0QpE5d5{FAWFLLMGmNZe2eA2^K^%vp;Ty?ocCrr1~~ad5aTzXEmZ>A)30*VA5^K(gy9OpY>!yOcu8Ql`hX@efI!!OZ4Bs)PfR>9&c*4kB9qsCv?YzpTxk86|}evQgOxw5}-$4SbL+#=4@kl$@xQG zvR4o#5_6L9o4kzqd$7RrLrPhk*YnASiBL9pYK@ zy1m-C8A+nKDjbT!LIHi`6jJ523CiA`%#Q%~#J zsDAHWMSZ;)K){O1$~7Vq6;nlHe1EPzs@M>7&H>$m$D0LWBlC4^4>KUZy1Ha%Nhiy( z2CKosxpR*JRCTuz{7_STp*wx1AEWSQEM(D@AxMB{(||tM(D}TvF$O!H349aDP)=OZ zlf{~1gq8uPFq9$nKnb&>g-v7)DD{D(PMjC&Nph@;CEW(?@fxATy*wd$pdkI(YV>R-+N>@)W_Qpn~d5Ve*d;tw*=RIvaEn$9+ zrXPPio99-Jy8sB#xTzCSnQ<_;T(n&HQQ%%ESXom+RkXc>O1y#p9l6E)su0+TF>?Ifm=b8f zNd(%PK2&3kRbKs*GJ0Rra|#}Ds+o;g)g{L^HxBK<0qn&jJsleZbf~+rXkcl+lsjX& zBK4ahNP?y?t%V-)Cbo}BcHb{=Ge>=swSs>#hOl^Bkc)dy`>W84-$@t8U&LMs`E+4~ zpr0y?V1Iu5tA(_ByzfRyD+A$Y}d6d>yODyj>1)O>5sH z(!V=-gzO(HaWXAU`K;OWPXqIQ9jbOj9tV8qafsMwsPl&=?!*kAv~E^sN4r)@V9*e0 zgXaHOS$g%9W}oBAH(_cZ72aB#4|CIzw13rwu1yO&|&Z=_Iknwe%Ch!g=?t^jg| zDn|)wAaI0QbUJ250+PAi8#4C85Nw-wXxV9_IVd!)|M{mr!6%e1zm)GpT+R)2BHJ1! zjhI?gQk9)D`>-(cOSsg$mYi{v~h0 z>+?(?0S0p}%u-SsLl8Hzpl*MdZ?P0&&o^k1Zp^O4sO-M;&Z^Acx4`HXF7%IT3nP^%U?;k3TV zl9J@)3B-8eycwhB=%8~;&H#7^7ZOY1q5NS8U@|;|~-0BgL1lbGY6q8O>K;Gmvs@g|QByWKG zX%cu8&K&m*j*v;u=dqpwS~?|c z=Bh)I=zhSzp!+$*3e~)WI!||r-eAY!pR~LiLWiYX>^78EGdXY#5h+c-mzvbSs2T(Q z5m0^@`_Sn-`-x{k!jVIv{m8i#zvE>JWU1VZ`o&EL;8{KjfWrZdGbTj9%&ev#TP{R~>Le5?I&Zub3ah^qp>^^W3MeA_|3if&j6414yaT1qA3Xw8_xo|U z0RUk`

r=+j0F_OBV`nQ;QTF$GQ9stzh*C0uPNloImkZ!%Q0olh39jIzE5C?fr6% zqhmsqXl`oi2KNBeIjj0Atbu`?z{YiIG@x9HZBP|m%q6E_Vq9%)lnm5EB%g_Z&=Bm} z(}QLb{S_u8Sx;zTVa9Nm0}F?ZXDNEKK7}WbVjLU`Q}5kdPQvxooZlFs=@pp;F$A!S zjLI--(kH~2rrIpR`7VU62XTp@y4~>k*;^Fc@ZNxJmVQ>W0~&lHTv{U!A)zgtuew(mrOvJ|;w1Ct=4mz)W9>CY6ui#7Ee7 zVE$`qYf~+5{#0BuK@>rNNw@*Ffx5W66$s2^_2Gn_Qi#nfOU|A>8ye{eRF*IyTRw_B zxHen<;f-CxsfMjt4aLG0?hmB4Qk(TqML5U47c^*ohdTV;=0;4~e8APp=VNtEM*t8e zshKl9ECt(yVZso!4?jpbWX1wL34@ZxEl&VDB`hDJ zq;r6pa_iPBRsnIC2|tw?cMeVJz0`pSFKC2G1-yE-7&%7((nXf4aV|Tu)!oZ25XZYh zi}x71Cq`}U8TbcCHapyNO}wbtbl}S%vX9#c}`LCU>CPV2x(`07qT zw-2>=;oe=nQ{zJ9=kUHf>|BauioU}y8vqBKf|#ps?`I%FyKP2H5cwGs8P_rb85O@E zr2gV*j?fIrL}a&{3f_9H6!hNX_im_9-7e|WZhge#1n|C%if7&eK9;I?fA2%!+kI}R~tDQb59!?Lh2zZCZ@D< zC47#6rijEBE9cv~x=ULZCqdHjM|yfScU~z&}-9Ybh zjI1ON4{o63tcOvr zRk09+Qcs!goh}`o|9)L6AsY^X)iU<-{PUB4LtBDkZykocjBQqZwBl%T_;<{?V z^t}K0QGMZ9mm%!Jal^{VW*w%Ks|9Nn%kKNgi$Dtf4rhFR5V(g3+}plGN}2^xK7$`Y zo=^XO+kO3XJvuqfdcxCyk}wN#APmyOtH$@@DjV=7!orBX}Uc3{ng{T>|<9l<4 z#YoYk+*1aIhN8g^VT;g4Uro#(PR#&TeuN0T`Z(3aO|A)NC~Yc&#eFXfRT<4rN+C8!orkx23`}E^XZZ95q6OrNQRF_He zu946s4@d5A(6@uz%G$Ae{i4geQ6C%{_!@8316%6?z!_xGgqjV+VFFt}IWZAO+R9i z_@62f9N24eboC7ke$PKAj;F{1cK;&(dL1`e#DLn67JK zTm3$&Xi}5!zo?R@@7T~5p@2C7$s3tD$X@f-?f=PkBvb4^9Juisx99hNvns|@XK-tA zZ1_JQ1=Yx?s1d!ZOe!#K5G0kxHJJ}-`O&K}7NLBv7YX}`>_ac6EmcacvGzz!%D6EI^bW+Le^y5Rn z=~=J>5TS^|Z}0zp8#zsfYZmXn`K?}!hO+hBFaIEQ{a;=n5{;otSiD_d4=qteW8<5* zLqrpFva&=uOit+e;T5E++1T2y2g8rNeXX-YB8`2FJ4Xv-kG99zENTUbk_?R^>_{KX zREOSL`8&kp7&)*=?whECFi+pvtpDwWzk#8-6uDu+My#;8L+Jt(p z6xO;O%keb}WzPr1dF<2u(sgI#yVa@Uo;w<6M(XlowVQ9Lq`BvQexYRmNwEl?T_0HEa*8tqH7GIng5Im26vYdiKV)Om?r*8;KY?klQSr z2!K_qZ8D@Da`{L)&cc}+FnQWoTI%CGl(}$HgI`~!rF&)TAJ2KkiF8KDoe5HYTZ_53 zbWC97xpc6kal=LnrK$Bx;`Tl$eqQ|ItYMy^Sr`UlrtW6{iCLkqi+p=s#)K-+LqjHR zw}_8_n3C1Ybc!x&EvLqvI<<@v)(?be6c?sj!e;_jZH0zLrprQ?a~wWNQ~08@kT~q- z>AATGfSoIH%oH!Ieg5p(2@}Zm&HMTh4E_pk9Ym@)FihWOJ9oGGhkQgPLi5S#MMIc^=74hE#qn zcFta~wHh2nzqE&2<3KLGZm+@wOrn^W0@Ow!F0TJqjnXuzqL2nS!k45 z^lH9yyxN-3)7NRM^^!c8UTUV-Fqo$^#0-yc{d=1t(l>5zsFRXelyu|9wGo^(f7T}_ zk>qIK-WDtDu-8GG^|j-2lhC%8Ax>ula(?58BoTp16~>z9(3H^&!;U&93728(&h zvJTh@O0m7R;6Nu|#Pe|R#WlvhLS0mjmZB9oNePf4l%l5Bs1>plgmIW_xUhM|_PcJK zRS^yaT!S3XM6fgE(Aa65@n0S8!0c7f$!p|O9offsf9=Vd+(Rnk?U z&MsTokrfe73MJH0Q=cey~_6O)t6nF6+ErpNS% zpj@N7rL-ohnc{YC>&0y!FtZ_{mR#;}=DIhl-nC}wN^Ykx#vnquvO6-#fn8<}xC{Dj zNaVJ(RfEe}4~@+{G=e~M5$mb_^39vgML6JSA)>sXn<4ZJKu_W}l_}o=%JB5F-Q8?< zl8_TCEL|7}Ntwt;Q|L$?OD_;t|CsRLI( zL!%|5bd6dB5t~C8Pp3KbjjzxHZ^^xgNh>nOa_HvmlY@x|c=)*yv z3{2A0E?f9Sbb4N?egBr+?prE)q?XGU3I@L$#(W{r&FnA5@M0(kzK%N5kzLL8J+m&o zy@Vyr&27uzZTVEHCSP)89_}W#cD8KB$G%jB9KCiCO93~-J4;sxmp9@ zCRP*R*)w$muaGMWbq)ObXq1h$^=fn>S%@R%BI_|Oj9*RVMY!m_P<7E=*(ja)ibtLmsNTu`^Lq!_#%>`oL{v zIhV+9OtC=-oW_ynX#cExo$Wii0P7(va|R!2IycB+%s7d4*`g&&H0qjZQF12kCFzNI zFITzkbH8DI8Sgnx!Ro{BMww6H3ECDr;_$@YgcE!Fh1BA9gZ3yYRV6lqcyx$R!Ty`u^{0fvmA4{G6NiJ zE<6$7nkyv=<2rWJl72 zcf*)+^l;wIAYK}U>~LhGCiIgLoySns(8w;Dv?d_BXs)JZtAOs-m)_o~=frS$B3w^4 z=tVNWJ}-K9a(PMZ?ShcZ6mQf8RYf>VbVC007Z%*qJi1U2Fn09lmK^&okLkw>@w#E zO0RTUTDg+v_~>Yx3Y9Ys>*i7D!jC*fAe9L@>!t&VEol6vN=Y%`41Hc)d=~nYq0+;# zDx@DFB@F>VEQ_b*H!X~<287ei^?s#RabqeMY_a|`OymGp&%7=FS;MmJ0p}k&ICP~? z?Ny)(C&@(UhJ`V;8|MlJd>q-vr~nuXVgn7a0+Y2FCdKMgRK$O(Lln~8+j|2$qcz-W z+MBTsAx#?sLqn8oy`M8n$`CFSzpMk*#Ko2pJ^rXm zbYB0z)g|PPqLQAlm4$Tshw+_di3%#EOl84__5e@h%tasS8`-ekCqgjzRyhB<1ACS1 z-F~g7E03%0co|olWV@cv6*jCN>|!^Rgf=Ab!M-rCU#GxTic^Xz(-p9AkcJ=mZyF8v zy^rA_TSI8ltc$3aKGsk)5XC3VGw2ztaD-uD7GiCTk&YTiN(F?fv_MZ-y>KZp$%2PW zLZcW4Lem(+h-w!hjmkR)g4_%m0HT^iNcT*nQ%}b^RF`4YGz0EYy|8h@wjfIRmK2*d z(=i8y%qynjel9l1@N<8X(|u2r>)F(hpPZwZcKp;SUe4g9^oJ@_Qx~>%#r#^F#u%8) z3W$EgI^osd-uI$UQErZ6v%2%$?2LJP|0s)Nhak{14t_)i#2!bUf?#j~XiLTd&N&6o zr-U61sSU`#R-8h%2oo5hO0_z`1~G87BMuWJ!VR4GsEt~C@?^5q_X3;ygGJJdQ+MP? zl57@Fgw?GDtqkhugyE1-qy^O_uj%ZXwWFa7Sd+kq;j3az8mS-nCVD3e9&f7)Ko7qz z-jaa>nipzmT?I~QhVoY(VGC|9E=#q@Ua(CToV{e%{@z&(6=p=xKCV@JK%h{_{-Ppv zS2v6`;N1JpDbe1teK)Ula_RZ0KF7{JsGFyG{gk)C9L1;&E0gLU%#KKFcoBQx*D`Cn z_4VDit71#feGaiw6{rhVO^7Dh0TQ|29 zvN_K<$NKfu)Ord_5c_%=c7OOBSSoWqw8j1k-eb|ih3B8Vw=_2ogL%Da|B5~Ef_2)5 zlo$8hPD_&+l&3YH%q?P#X~lvc zgjhWN<{Uvi6Y0fPnhsAVPp*CY)@qg{13`=kB9$6#-@yOU(NS4Z@jJ+X?1BR27~FWUQFHXS%o zNzH_nQ+?U8cwEPwFr4Cev96=4w>OL3-;dHDF(yWyrOcNu2e6{_8g5}UfB}cVNG?}*ROZ5Oix9c oGfsU84GYsv(H41km@|p?am<*VLt8{nQGnV)K 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 J{OOn9{ucqhpS=J8 literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/generic_mle.png b/docs/source/_static/images/generic_mle.png new file mode 100644 index 0000000000000000000000000000000000000000..e2aa31f3229e8730c7baf0707cc55c964e80c5d5 GIT binary patch literal 43888 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/glm_formulas.png b/docs/source/_static/images/glm_formulas.png new file mode 100644 index 0000000000000000000000000000000000000000..46fa9349b703479b903810d099a4fd7152e74d22 GIT binary patch literal 35573 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/glm_overview.png b/docs/source/_static/images/glm_overview.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6afe03422ca65d7863107e71c569c914d4063f GIT binary patch literal 22413 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 Y@7_Gk@IGZrJ-*57=%M4uBu9AlABOr`(EtDd literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/glm_weights.png b/docs/source/_static/images/glm_weights.png new file mode 100644 index 0000000000000000000000000000000000000000..7167d7203d9e3dbffd052104b171a4d7f92b5669 GIT binary patch literal 12570 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 CS{*Y0 literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/gls.png b/docs/source/_static/images/gls.png new file mode 100644 index 0000000000000000000000000000000000000000..52e552ce2e5d202017cc3ccc43ba75573029684b GIT binary patch literal 30533 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 G$bSGR-qN-J literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/influence_glm_logit.png b/docs/source/_static/images/influence_glm_logit.png new file mode 100755 index 0000000000000000000000000000000000000000..0265580c17e73242d49505308e312fa14740e45a GIT binary patch literal 63521 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�?PZn< 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 UcnV3s{ezl{l7?cXyeas<0B6c3+5i9m literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/kde_overview.png b/docs/source/_static/images/kde_overview.png new file mode 100644 index 0000000000000000000000000000000000000000..d77c2ca0cad842416701c99b5f6f6b93a69aec87 GIT binary patch literal 17593 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 F_&;RgAbS7+ literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/markov_autoregression.png b/docs/source/_static/images/markov_autoregression.png new file mode 100644 index 0000000000000000000000000000000000000000..c9370ed37c583ee59e85be97ca8028107efaa460 GIT binary patch literal 127845 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 z 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%0D0a~BJQ5r6~ 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 ff3xR<5AQKlNT!-ZGvRC)=Wev*7;$p~D`L literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/markov_regression.png b/docs/source/_static/images/markov_regression.png new file mode 100644 index 0000000000000000000000000000000000000000..1127884ea67159697d3bc400ba3ca6a6b19bb8c0 GIT binary patch literal 90452 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 GZvP98xEsd+ literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/mixed_lm.png b/docs/source/_static/images/mixed_lm.png new file mode 100644 index 0000000000000000000000000000000000000000..2c0fbed8ba260ce3f2d62a9c04a8e8f5173c2f35 GIT binary patch literal 61676 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 O=Vuz38^#+r?)(o*D~wkF literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/ols.png b/docs/source/_static/images/ols.png new file mode 100644 index 0000000000000000000000000000000000000000..2978f95b721dfcf1f3e826ba07cd3ea7aa21582b GIT binary patch literal 33254 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 QRsaA107*qoM6N<$f}|!(l>h($ literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/prediction.png b/docs/source/_static/images/prediction.png new file mode 100644 index 0000000000000000000000000000000000000000..1aaefb1c80ac6e85e39ddc2acdd0a11075bb9f9f GIT binary patch literal 32207 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 LQ>o(ndawTng)W`d literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/quantile_regression.png b/docs/source/_static/images/quantile_regression.png new file mode 100644 index 0000000000000000000000000000000000000000..799b1b5753fe90b752ca15635b421c2d4222af42 GIT binary patch literal 57551 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 p)TX8f-&fo}=E zf@$J&*-`jEuNHhoYJv`ISvbxA;N7`JCQBOqX#i|+QVn=;_5Zj3#Ka85EAW!do%}fX z`t|Fm!#<1+(}NEj%}z4A7Qg}t#)8%Q`>TQ50dtBl#Yii{;Y+)%(vi(Nvv_-Z+u_^RPvQ7QVFxFw z&%UC%i#41@De$qn_x)!j?DX`o>zs||0?|&d=?Noiw~Bs+g!T%kuoV$o)=uIua&vQQ zpUuzbRc^vC>dzmhCu?(lxLxYb<;{=j7X(zaaCWO?$C~Ujc?nvGq=-|jdyV)%+z6UJ zz(o!(XyW7~DEn#z2nx-v6JWjl5tq8)#`@&&@NkV%B46Zt{Vb0nTiM%VOKjx+!+GQ# zJ;WP5o~?2cq(KSjsIT?JzJ2>i;^voC&OXiAW=T|i1@TV^(-bNpG7p&1MB6dblDM$7 zwUvJM+hDM{atxoXaubj720eYtRx-0Y?ds;4&OB?(&mBOPx(5Wbbg?1dDK0Ot=x6s3 zXJ2z`>))UYc>mYdfH;{^d>s>*VmMvAF$D#z#uF+@OAuW;v^UhUe?96>wrbEE*gh*a zSNw8{*FBnMmdg>R=nrU;`1@9NA>X*XQ%g!pgyWN$+4@HIAjz=kcNQlF{&amZGu*%U z#U;OBfB)k?myY{uz?-rY(4=#kHswwSFjE65<~#DE)DHY0gS35mVQd6ByqU8Aj;^U| z@TP@&!?T3s(S>0kh#mZV{{O#xLX}htfBlAnjFk5O>t7zwHJ+XaGYyiR!rw#`WL0G< IrOm_t2h7@gk^lez literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/recursive_ls.png b/docs/source/_static/images/recursive_ls.png new file mode 100644 index 0000000000000000000000000000000000000000..defe12aef1fd93b972de980125f38f700b6044e2 GIT binary patch literal 111972 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

n#`)WZA0w{X5 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

IZ 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 z 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/statespace_dfm_coincident.png b/docs/source/_static/images/statespace_dfm_coincident.png new file mode 100644 index 0000000000000000000000000000000000000000..8b9f7559acf63a77a5ad5aba5c8b2398e82e8179 GIT binary patch literal 87568 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∈)J^3Ft)i_nQ-vKs3>GwhJnODFEUQ&|)Eu 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 z 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%0AAAS{TGr-A&YpDuF8_h@q3nMdizg#@`bvZ_ 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

77r!)cox?%Hi#zuNY{^RM>fUmmvY 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 z z$Ldolc;D4NR)1&=Du_o@7F|Y^Kbrpx&aO5m>Z+AptFo}Umre#zL8X<^><by*)B`25rU9Mcf_8mLX z&@qObxOg1jw-tMipQov^81!}3W5>3gxK>$*l-xYrK6MmZckSUS&IB@2M{!`^P8>XX z4x`*_*xp==U0b%`R$UjeQY+I8 z6)AmP_-f}DIC=RtKSd;>h9>;BZ`*?gDnH4oDLA=zC-xpbi5M!S7-_}Ut=n+nMy0$y zpz_*9e6@WiT6^P=%^U2S{oC>NNy$1Eymy#jFb`V z-L;)IxG!OX7BHIXDzQgxsq01_mDJ0}_F&tABknWwlR$PS&xjQMU?dkd`4Nf^93b6X$%MV?ZpxDH<3ZJ zH!Tg=_QmJ8c8`iMmAISNj$_;Q{b(H+p(PgJ5Xaxqv)5<}D;NE>H}K^S%CD}8rtlWw z!s+AKv2zaD4-Zd_jp86p@k!R{nVGoXF4!+|v$C0=;nQ*b>^J!8z#;Sx#qvd_A76d79VgCQ zVY@TXRCNnqZQG9OmO(6vOTvXCd$8lsQN9#$V&LDcUwq~c^Tx!aqyE-K?A)^p4K4l1 z&5p;BgS)Wr;3*98lU8?E8~bc4F5PZKHf3FN@d!TOwU7Nf#C>RqG!x0T963exE(7-) zDzR(V4)VtrsO(hSxO@y-w(ZA#?ra(v8^nRHcHk7pYGT47^i^MTO8491e?iLZC_{yojTznO?>ug7-w;d#nB zj|%gx>ld+&_kMH72x7T{d*U!*kDo zh2sF{nvyx(H zWk#OzxVo&>VgC5&(z1`+I;M$UTgY^h-X4T5Zz}EQDJ~xMurwHp+f{te#HGvzY31ps zMG+sy@aU?aU{r2#D>s~m$MStR#ieN2YLXA5Jf$Q3L@!L!=n3B9VVE$kFmFav^?V%R zxTVARR8KezZzMS7*-cfQYgZqS;FJ!RDIJD;Sf1fBS*pI; zt9lBC&v-MMcC~W5hVzwHnbi-+{dyLUbTvLB;kP`a6{g|SHr!!Ywb|+!j9vZu#)mI2 zgY&OGPe#kf`@!ZhKhKYw(rfi>o>M)mYcx%H_UkJyIKvaEEK;72-*EVF zJ|BL*@nlz(3D)4lu!7UVhkjC^wdnDr!h%+ygM(f?A<31@D_5?eiw2Z)a!XOfhfrN} z4Og0grCeF!vM5)-T9J^Q!;R>L=&r9rXD=V>dBw=#=gFFuMvU`Rc12kky#RKhp|P2Y zb|IE=1*f&O3T?E)v6yxMsn77i)I<|@DJUshhSByGt`xUp5mzXSi)cHLt8MptN03L` ztI09rXsN5?s#zA6<(FWvm!?g+x~V|rb5%4I4Rze`POo-F<;##jZ-@C5oGXHpLmhnJx01hX+KOI;R@xuz>KQ^lc~9pl_Qu*e zu0XRb}KMs%U>p6FRwqpPRRo4n`8VGR)QV$vCd!m0*0N z4-Hg$lNROjlxzX+*VS?*aR9}OmmoWXtBzd78=d6Co8B5H`+K+o+>G?B5-iQmq)E6M zbPkT9q_~K7S^+u0K}rTn2s=cXw6t{~JGY4K&O{wok$d{bQLt<&75-7KzSeUEFdG$x zi>aK|qLE`Ezn}<MhFT%2=`GKt4da-E9V(0a-rKXlj zTM|l(mSJ+R4OJcO$mD8pNkKN68k^{~lKs1kvW}Ucxxs3h7fj{2SQ;jnBUw{hLqu^|dymv#Xbu75KG;%1$-MwN`k`HU4;zv6f>jB`ps{9IKrj^<3#3LJ4J^ znNC=~=#6p(y0~m9M!GuCMrS@5l66)FSKYbV%1`=bY)b;aTvXRoBQ`FLV}oP0uNAGG zTovX0QIyXwAhq?bEd}g{_^~05^G4dr%|%%r`twD*Q+{KVU-?q5K=)F9El$=2lyy&&?%zQa=9h6^nBYr7Ek#W2^^BIEFJ(jdTCFpDD))os8yzb%d~=msok+YH z9{+0a$}_xHZuG3o&kw^IOqj0j1qEAi50|^bIsW+k8JO{9Jos0^7!4oJ>e|&{4BqmM zo?kZ{HyFRJ#+i*xYqKeoJ}skTb$#A_IHT#q`*GtTT*t@f!$+eRhEdvZTba=?p6qIE zHU(Pw)@G~g^JDca&xf(Nt_J7lDQ@-rtMYw#m09rfEl*b;MrrY{Ad4Ydso(nd$RMvGNqpQwcnkz*7nQ1|=YcjpQOt!Zv}68=H&;r&SF56sW@}dXVZNqtoKD zx}nqG3S<20FwQbQZh`~WtQ+8&Qsf*|uw_G&dn9@SG2VP0rm9Z!WpD;#X?ZN(VJ&x6$(a ztI;rAN?Y9EEUl}>)#kABtTCdW!Ki*Dd|{eK$FAY>aN36p(^8qAr?g++kE=`}QeIer zQoAe&zkZfy^{w2$sw~WpmHTCWT;+aRafL9RaDF)LD)EnxOL>vttW5@M?K7IXs?7fh zmz67S!Ei)NN6J?ng-H06Z{><7ltz&(dcU2`UecH{^ML1tU!yHd+f}-1UwG?-`TqE!Tc??P8LRVPd$zmfd^UB z1TcFLYal9bmdU~gD(Y2At<}XL2;%OqSLWsZK1A&SqDjG|;7<@1clJ3$Z=+Twc}_|8 ziHb}d@kj_KzhJdb0j&1y1}(FR&25ADHW;4fkNk4wR&;$b zjz97!xoJL`VKH^r1slto8T18~zbt%@jry5Cvb@LHaw9cCx@8JKXM)lt6HQ=T7JnZkVXBEeW) zpO*4;cuDQEI+BMzn<`%`KWeY~K`$SEUBSb=;S87id_;p$zF#k#_HkG|8ZMPv{b(?1quQtbQ@eHV3RW-A zYP;GixhSsjZa8)I`Luk?GkTHWlxM-W^`sAB+3+EiZiaY5QeLV_Y8+~%Sei<+7_-A)DKGdcgnuDZ<)ddh=W{+ zj7U%B1#O^7af;>VZYfpD^OXeQ4)Uk?VLdkpnUvBb)@@MgbFnjN=*pzdJozwpGsBXe zoi=$*^DAWY2;s3Bt%}3TiB^+~A4EkqfSrO$y{*4*fI0C<)gIhwc?O@y28Vhv%sti_ z+z(Ix7L;c&GG@2L$Npe^ZhnPOJgQ#MU(NxML!y^uQWf}-k z!rXnPN^`evMxGpdTJRFM0!cdlf|UEqDc(ylYP@T|vD)HFgO?LSGrL0cl=zt8Wd_b3 zBtc)2Jt7wFZf@1mLsyEU?kOo1y4vcswu8vamkuC?gWa3TxBm3=4BpT4<9Ra`v%1n{g znAYK8-S<*9Ri>{`at>l460Z5?84kNfs%K@os@&un&bM?l7_0BYY0S!Iv)U%S^0KP2 ztovF0uDHf?d3m|(cfmZ2N5eng>q7APZS(8-anUtC?K)pxqQO0q0xe`=#uoY@GKL<+ zGY2LPl7Gk{GWU9r^PwKOFk*9ixKH@%H5wbI1&%!y+E}g!~{m6^(*4x}C9%@Wg z-Bncg#Ne$Bn~^RJTD@!CYsBVp4dV@}NReV6kB)F(aW}1Jq|;t;3hJtEu&;ZuVdDlY z;sHNRpbC;#PkSvcUav&O+841TeG+=rbjZuBJ=Dbdzu zwas1{q+qGNYQM^Dwa(<_<2Sydl|{<;>qmmrC8~zK31P=OxsJ6@u#cd zio}P?3^rQ1@*}}mUAsoAAI>vg3}2+W%F_#=?p^)#@*oR5YP+q*>t5Fjq8|*GU9Bvf zwtW987zN|YFPm?Cp*Rd)_!ZZf)k}hZPpeFARX^Lf)_v^PT`13j_v?#>1?4{s-(2+# zkAIyHP9J`*_#-ROb0K|NHa`iNSwOn$!nqUQ;BHepHox@_4`s&V(AQrhIj;iWdu=0{ ztFPnCjXJ!r`4yC;jpIN6&Hs&amEHJ@zxYe6tO%40QGD1y6O0?E9Iz8(Be-_)JS|Fe zW5Y|E&_!zsM=#vMtM7b(bt_8IMa5|M7hmA~-A?@Zzx7 z;^kPkd%h*>zd$z+g%;#5p+}`WboJdw`Li!z{mNy0 zUE+havmfJ$X&B=qb^H1?)Hk)zOx!Z8UGpptD~_N~CeTbL(`5RDWGBT_N`BL|bJ%s{ zI^O+9e~g65cI@AO09Px!=qf!CKX~(b_8GT2(Czfta39Xlvc{fMm$9yI0`IRWLc_g# zxLkLUhb!qg;r1c?mxJf<)4%xVSQoE-uKx1y!z4C$xh7~$*6sDR*t7Qls%qOPheW*f z#s;oJ^Pm<#7mxIJ;_LnUaD@tfV|zbczpq6r52hZvbrXXr*~sXt#V`MEH$M8)e~K5@ ztft%>@X6nQg_nQyGi-XUY(ahRj}h_Z2Y(W`v8Hk<6)Ka(4y`&%iBh|yfN1qfO2&Lw zCWX((t+WN7H_Q7?UX8x4l8xG__Nt9iqNH>vUn_Ka;7TqER&OD^&Zo|!$|)M|X!&ZB z+9HKf{U`-mdFpTFNy$=O$w1d=c%tP$Oh(b_sr^qX__#z*?bB8b^{=i9wmNBBlT@aD z4)f>Zio{93opuf0tx z5?#1)uMYp@hp%FQ|5m@a0ne-|a~x^)dA@@|bhV<_NKFjEa|Qn&|5voD@x!0~0h<2$S9AyhWYdaBQT`pY zwbr1$XEp7-bLCBw(<8FzS97{Jht6Hv!OkvPj-RhCMNQou^bM|Ywv+`srj?L>DkwDR zcjo+lyz=H|eDsfhjLu&Vqlot36H>Bh2R<9^w;Iv0X%Ja_APf%l)7sB{M@oEZWIhRg z)&Dlm9CH5A=WQv>DwA@d2d*AOQk>-zEe(2E8WEq|f-1#h^*{c5<>4)vkR)jla4s$=Q$ z@^Y89)n}_0?P~O*l`H>A!ORzz@nY>#TeJeJw%dz>UK}*GHKx`7f>Asi=EJ+ynJ?^o z;2sA??XuNny)bBNitcIkw_cj`GOXY$(AI{zuJhqZ^`9i%d~sR-=}U@M-PJa&NbBC! z&+cREW8u}94~O~Cdt8|L)PEGd!gV60pDNIir1Bfd<6zUEZO6}`cMAq>;BUFmbrAwGF2ZP@ZKgM0ihoME|Qk55X$ zC_m#@)5PCvYc}AW*GEyDmCBXrbEsyDR}J%Kf|kZR1wFU&nYNu>vtifrpD6DAI+H2 zL}B5gOvjSD`5Aj`4mp8LvYqjKaP)PxqN=$YAOG1eurxi1Hjf+mwO|!i(1{M$X&o`G z2B&gs%m_^p4$&U8%&yrD$?fji^8RFl!zaXiso{i}Ta-_yJ+uaw$jOmrAM0svIWZ}f za-fayJ-d-q{4Ca#q+v2{kcw*+0rN4|+k*e}*Z%>X2}`h^3T=8EA13h=*n9jOZmw91 z{0*!4!o}5VK6DtcIVT>f_A`7~qKP<4hjzvHl!X6tg&3h>h(k737_qqux`Bi??goaPGioOwBi{IQvISZ4h( zWlQ5KD=TYOnG(M8XmP9a0B|T{zHp&xzmcSP(}OmWB4Kjy%LG4Hc$~IAPTfd6MSDoA z|NMQg;ksI}RCv<-gz1FS-v&LysTV$b=`*_4ze-E7{9OuCpd62|kpl%D+^@^`6a-|@C+HP=l@v~m6F8*d?ftR36;97Jl-O1$&-CfvDr z7**T{`_KO5&+(HtU*?{=OuYK?CVGAwLnWQ4T)l9G9@XglLu$%H9z>Bu5u3nIjv2XJ zF`<$n8`3ME<0O%S6Gx9Cv!DX&mSo|^&C3`j`XtckFT*62?v%_z{N$q_qMV)Z+Tm81geaCm&}8Arce6g}m-|+We-6z_`)Cqg-&1 zQjL3jW`sie*w8>b>S=Skh#nL-b4$VaU_Ta>t--(iSN|Gsy|f-N^z=72Mr#hVf$k1&-O$SlPk3`>dWNSbq~(c0jTNFB=PGDtb1U})PoQ+=I__~Fq%Gr{ zSpD2OzL>@0?8$F%;p!b^(Dry)X(6uMyo2K9^k~>uiOV;txW_n=PELBAm(f#nP*hy; zELJWnApr&|j!%MPn~+zpT1D@YgE)Vy4J)7H9%wouId$p;F5S52$hCB~Aan5={K+r= zlun9hd%CTU9v`3O3UnG;xVQT}Ur6)W7pp5uFfn+aPM6v-G!odZosqFa_1J&Jv+*rt zy2tg?ij{tr*3~cf>sY=62>l7eg^GWxN#o7hYi$)%7PqqbFlzYb0~>~UoVsCL4@+C$ z3eNi2>R7wQkKz{mxaH0FI-k1VX8Wy8b`{@>TibnkgxfS9-otgi3u$YswNpGkiNC{x&cR3ga6x_>YQ8X@`~kj3PUBCF0SM0 zM52^#w1??5q?(8MikFtr4K$s%)Hh&^%aa8qi;+czK?8Tb6Q&#FoXp3mKsL}p$LM$* z_vq3Q4VNNY=nzAWU&<@!>RBs(t#kxJkBiwfvz3(O(V-)inyM=2Hob^m_gbhx)5|gn z=@vRcPB@y{xC)zs#U(n0y)akF-=3_AnQ|T)96)DhJ3UU0A-_-{T1k2oq4kJKdb7+*Ps1o354E&)Vo^Rn+p_Q5Xmwz4e3J5`(z4z(;uXl`&R0=7J3GS(-H$%F~&Z4Kk23mF)ndFJ^(gLEMpy{|F?#)c# zYI*`aY__199z6?}RL~&{oxpJG(%=8xF1-B1pJDU*vS2TD?Bj3WQJee+$b9cdzn))b zA@{U!d>4Yxv&q75lX#4l|6Sn!QF-v&qFN+kP3*PAY z^}_w?ml=E{n7QcqIQ}8UqqQko{&&4?(fTi({|~i&Pg4F*73e1^%}2pSt&8hYR0?K3 z2ACoybd%g8J=gx+M;gRF0mrje$)x;I`%`$J+{a2P0+pZ61C2#AP|flqu0J>G+!&t3FNlr9<+al9^u?pqixT z(;m9n9zYKFX(lHImSqfnS_Y315lw~1#rYubkHOS;tm^M_+oFm3Nw(P^V{_rPGP^#E zw`g$6SJ0S_2BUH-v#atV1s`9e^6z@y!`f&3&lk?%|Dj!f*V{Lr{&+M6nm3f$`qh(F z&#T!tMWB$00rw!Whn}9o55NYWy#(iM3TwH|>hWr)`lrjBLN=SG7?Azppytet?hsAk znv*})baRAbZ{|~5@DQBc7Q^FcI{rL<88t3!vT;0!zYwh9320CTQ+tJ-JzmMzeIAj~ z^1$V<;AO*Bvey1(1+64b)0v{7hD>qfV0}6k5BiL*g{SanI|;Wp2cO`GS9`vsj5r=x zCLXM=(F@ARA1jI6oglNsx8sl9q=&sxDieL)J_GThv{@kwjvzR6h|5-W*K5; zTm-UZns~Lc>*KX}Wd3IJV6fJQmKG1{Plajw${N>Xj71tGj8ZaJ5BiCH=GrRR&+un55*@`Om6`k;Ea|y4+Y!UP&;fsHi>z8qjolD`f&3_Y zckc)`7`HAx#jma8&!QzEJPl7J@Ew4YcHN*Jcc_`zR#0S zPjwXhJf9Echj|gak5B2R;i&|^ixOCn0&O>rJgW8e_41Gyjp5S*LoyHb4ANz-7Bpqn zMXSaG1B2WLn~1cOWFC~F!EwSS@q~Y30zaeDngrLOke-&x!&0N%k4hu#i8Ki#hZ8bR z&I44bG=rnnP2u4kMp)U*9p)jmA>v4(nVdvtj%t*Lu~Jy3)wdzmB~kK_OlKBDG%qtk z({Ra1;vUpNmO1_e%Y%6RI?*4OgtXKY437-Zv=m)*CZ}-kB<&p2%+>g0EYi6Dlc%i+ zJM1hgq$DS?Ep$~&8^Wn{KoQTCus*_0@-UeA8=n|){3g(T-(Kr7qo7utlNJk^$A%5Ru_%luW6GY>R2Mw*nZ zlQm_eeZ}dN=lIwV1}MKop7_>@;6b*Npd1US#K!*RK3J_*rZVkhEg4CE?B8LwWmNJ@ zP3I`&SSH?h@|Vo9I>N0D8rSNx#CVQX_SuA!wf6T?*5o&i{hPx69i^;?NilgtD>P*XpI|< zKgnovl=9R4;Y^KDexxx+WtDR%Km(*vIgw_2V$Nts5G(;M@f0IZfk$d}{tSKF5I?2ro zgq@Q02*;RYok}Y-@o^Kb&tljX2g`Y3fcK^L-KQk;{$;$!npW=XOv0_x2k_~a`)Fl=it^+Dc5K~_Bd0DP zjfdhoD{qp&Pia@Vi~ObI)QSDrwqqaqsJIVOdD-##XE;X70!cg|*L?dFKK*PbY8qOg zt)g;p^3}dWh)YSw7;Wi(`Nd~Ad9jj*t#WXWwv<2lYztawjUt8zvA+Il2fjXX5~FDu z80ol$&wl+SF5jx+L=lfmXHR3xwy)4LGKqAIV&|4mu>aU)DjiwqYP*L|KKTr{D(jG( zk%kio_v5SG2hcT{fP{%Q?E2zM96ouO3PJ*^@7%y=pKV2b`+a2d#o@%h?bu3LkBw1b z8ScUtqsP?o0l(O3*}iyhZt!oLpZW~J9h0q#lvC~JZ#lW`_7-^`n`JOWM|>} z$;0?;`!2L~l0VuD-o5Kf95{Ruu~c^IYwls|XP@IL?E+`!B;m@jJ@{hV0rXM1!&o23 z#x@)~a}im&`DnUv0ly~Ado?s2#{+vOkL|_Q9eXiC<*dJ_6Wc!f6sNDTCiG?yaqQf6q|>}#)t#I8{MVo2PJ1s>c)0KMz8%={ z^>HfJ>9n-bhR?tF6z4AALTXkfF49WG_U${-Fu<3=q(L0sxfNf1eTts{lGwjZ#Pb<0 z-m5_Z70bIP58?Cedw58W3U%BtcI@1O!$-~_o)45dnmGL8)6a3cr5kBkvAFonZfx0k z82xm<6GM-NTgcDxOV=<-CBB8S{$k5k+^eH!J9-y9d~hdr?m0w{hw<*9;`Yx!r9+-- zq*5j|mk)ES?nZOheZDxvajbrYJqM3qkoLO=8Y;2v%P(-@Micui3)e0m!zZ6_M>h{% zj*Sjt7w`Qer!Rp|U-UFy#;3p9ikp@7$l@Wr6W@G;ojdoSg-&E*2D-6#>t{H0`Uc&S z=b)kHDt^tj)KJ!mRG<&-AX$4Gp+?^QJRfDCPI+)vL6x z-s+Tcxi`Oc>y}$^kdiKslr^+AWcSLA8#ku;m3#MX+qStfwZ%7=Cf=-$;=j%CUE$-m zDTAl9XG`FbR-lKtf_MAoZFJCbK;F`2D9VaQZDlR`sGyXU^M)K7Ms;-~(rF&8Y;iGK z>#Naxe*i^=rBr^#QB~7`aUP&5U$G4RbamR$(1bLe@LxuY6KyrsR6s|ubXhSKk2q9U z)zkS{GFFtAW1zi>_KDlEC~q;A7H6Z5c<*-)(E>mj?dQ@VMO6*rGqO?6x&!Tvd{B4O z=4&AxDNtb`p24w6RPdo0NAGI)s_UrCza7w4n7v6=1eV>>I5&K1has%nhJq|(OkGOo8fHr!YsdVH~euZeMldK16S)&|_GGcL; zZ5gNHy{vp0279_F>t`%pkx=Vhm&rn(+O<1tvVas?)6&7+cb zrc*KsXeFVL4mav3>uxNj&Es^g%+^#^V}c6QvWlgc>}jL7xprja*qtG5wTP%E0&ky zeoHHrt2X4)+DHNWx4E{4FD|jDAl^9i;tpR_(r5u=@!}%1HP)k@{aaKxbsJ>f^ zA<9p9M!1?<%eE!w6;OV;=&YynklqnmhA5|^NrxYmRdg=Gam}$HkB2R-?UZ#1mgJ|Q zshYB;6^XLt%aF(~7u9SxxY}E~bP0y2P}lQ7Uq0`TV!~EcSMf{BxRdq7@Br%QXeBu( zA7%7tc%S^q<6hB{5;{9cN7e0nG&LBH#mh<&M}@VH{VP+06|_jv$d}4idOTcGN-Hb; z8c|P&BokDS%ji9FOx7vtI+2~9hmw+fG?KqA+WRhMyVGg5u(qb228**e7M7r|XUdXA z@nS6EORw;#f0t6$$>Tj7H%&-P&*ZpXLTfTK6WGpivv>(*orH$!YV?mMy8CxxjIhL; zk(q-M+BI*fBTYKCDdL#QNg78rU*1Nz{=Ix<83t(uq^_9p)plDh~U4U}Ks2=9mG zbd5fSJ9n!Qo0y8_8rQVBUESEqd!U52pZS8

1e;36xcoa$cCAopn0>$&@D8g0C=a&>>Dcz#k*x2Y`Wb=9X^5xF!qUz~Oqm*8)Y70&@Fgx>q4C+@J^7K%U8JRZ)Agwygw-<|`O z7f$;Cvp`J0Fkya`wt5CdvR0!9MIN z{?%Xom2;i`;)^f3?Rnbrq1EIuZqX7B z#pSA59s@u6=p%T~Dw{5s^#O;+VPZ5$1Xwum z^pEhygDCoGhllvhvcfc8$5g-|W4%2DLQ)Pm5tSc433TMC{(;mML zfWU#plK@t2o~9}OrYt(hss)qNc$9E5Ah0Z@C>Za7^#|3R;en-03rg*tfwi{yuzuXf zD=Om78G8^Wf801;Svpl1;8l8tKf~or2XgE>epqjcdyl`VGSLvT3_eeO{DCs{rxV~z zUBL*C$m#$AswGz#no>bw+?n{{D}#X zm30tFWLBSwK}nuvYFogc(&UAe0-DC%T>M2U6F)&+@npP;A4k>h4~;)@q46l0X&g%? z{P|;(MXIWzU@mfL!A{j9p5WdS+*Jv=&^20O?pYj#L^^~?et@>(ZS7|A+n>TNE%CpAcE3drbR*Net zD%^O~cvaB-uJPN|)#cK*eZwXAM=q+@u3hW4TWH*C1zU=*g32_;O@UUPwr?m;tJPA5 zr4%bHTSkwnyl3nl5sy-?wXLJ9j9&|i!uTVVh3oru<|^~yo<#gf$!NhV&|>~U z;(U;BPo@r;CGs$vLR4X>bJ@wn;uIh~#AZV9VD{^d@PO4s4Buq=kaD$H-^%?CGG)Nw z)x%#8bXQ{ryJ7+FnuvmYABV*?{EVwJe@>Ahgi~CM z_*4yRZzKfsqeWgLNWT^-6PD6gLGH7gB3 z1Z-Gc&OHCj#xsjoV$eNdFB1xJo9+TeUNM$2IQvT&ZI?J8Ks z6%3E!e!0?-g4I)*UpE@84`X#LFA_b=vuh;0%6nM3!B~CKoKGEtxB6C3Y2(|63CBf4 z!C<4&)QYcO-ZVCKRXR8f9_Q{~ZP8Gf@^n87#$N8)+S(kvR*|)LS>*~+cr}i-x4E#e z(2a2&R#ebd4B?Q%tQSVDYM(oI&fOO;yzqj%H>$Z^OML5IF`B9?9;6&=1zSq9lz-t- z&~r~bh+nlq%CtME?n)!~lP{C7yr!x}y!iDDz|ZsJR<5g`ueid)`bRKfSmn((7)`^W zdPXxE4y)srN6PcdBgKv8T=b&h_4DV0$LRa@EN{M7qhs)q_%{6EvT)jP%=fxr1=?2t zCdSA3Af}yQ-UN5=Ttj`=Fkaid5n6*WMN04*b570F!z0q_4X+@#$g-XxySIE|PQz)a z+v8jU)K53;jjQMB-uEuP&;4U1+^am!`mym^+0v?$J*>65q!l{ZopofqKQqdIH4ko8 zHud1Ox86iDap(v$v83!dyhZom>8bjxH|b3;n!p6;S;Mwy0 z0G4(9iB$EKma?paQBsPvcT*2~9jcOoA>~64dnpA{D73mJYY0*v6r><%F7WXx-*78# zVZM0=?_d48e%xTfd6CkB4fARB?HaD9{788Q?_Yg5#TA|eJs+=6?@{8>`0{B)gLxEs zsv{W~PQ&5Tv%E-G)zy7$%CEbp`CL>`nVv!Z`15ILj#OF-v3@>HmFcIt$`>95pN`^M ziPj6I6l8MJr!O{-fZER3}p2Lih;7J_^1_bt2`3 zY0Wo1A6#LWaC*M9778ai7BmLKLFF2MdWp0#9fo<7^n$i6 zkC!(r!NrrOF_c;6l;?((>#f|o1Cm)EVWs9*mFO@f8u*IXRr52}8pT(M2f4~R&C{CRC8dvYs(h@`=Hm+HP z`&D;vlLrTvu3m`^&s5Orz!4z32tWSlU0QUwj#K9@(7Hno57Y4=Ls2eTn`%*5@f?-e z9CX#T@^Dt0Q=reEK7`{J?$E9BA0RKL7bj1jL^BVsty=dg-gP0;Ccyp-9XW26we zPsd~ZIIwjW8vC>H3KeJtDclOxd0Hqa#~UxLK^hM%ojrCKi}SNld2|={ z-sr~v@UP#xQDP=TrI9LL)qyoXgh*cc2vpr@??r_NsC=do^_;kB!S z^0zpTO6FeNYZ=4(O>feC-~bL#X{u`M!yDgw7i*xv3l1u3Sgb zNGE>zAO0Hon}2{0vmW%a=NNj#Kc;L=^tI#Msk3O*Y9RY+84sitX3$idG&hFJXHU9= zjPX3Ux~#Mq_paUK!Bu`Q2`d`B)gYBs#ZAp%^sY(RE_NBL8Q<`Tf#)wg2KCJ!5*j$!gKz?ZZ$rld9@f-MobJ*D864 zFcIg@T*VmOj_;(!i$5-ZmWrfa{&?>?wOi2h4>EaIcjF4`h7)*iuXOW>?lHF&hiI;x zK7p^cT*0a}n~=ARW(@l~oh6#pE6eFdz6CqKI)6Dccb|;$<>x(0+;~%6;nYvOTZlwQd1{-KXSG!?i)yF!vDJN) ztIv;LUo=%_vM|1)!K-d0n1$r|^n}l7D{g(Pc|gJVa|!RyLg`u6NcB_}rV~yZjIQcO z!xM&!lvW*Io>o_Q>}5;s^~Z zOaK5t07*naRMXu3+f$&WIC8vncedd;6_^`U9Xut!94|dzj@-;tv|hRu=H=;Nv4d=f+iJpW!lwNyB6H(^OJEfUZ&MX~(Dr8Sbq;S?%NG#f#C*dsLE7fUU=oU6DU^|Wd-+=C)o^!VQQ-$(rMGpM|F z7ERZ>ux;-#S_etR{ee+h<9G>;x2_>Re+f#97GWY~5kCHC9alTM`NDGsUEFq)(9`a$ zdaPYh$^k3|HIP}r@T2_|7ESFvZH?#~ip9G>`Ux)6oLYPP02OF{Ce#+9*by{z_Tr`2 zUuW00;l`a?T#Ze|JMaDo^;{K>iAly=FFl7kTHaW*a+wpGRKA%<#-s73TCN*7Fb3#~ zduTKUKl#HCXwL33np!%kKo|2xgyWhoQF%+3Bd59z_s(Cyn(~!+reYOeJ}%(Wjmvm( z!!PjTAN>K&-)g0jeGl)yx`w<-G0FiwU?Y2$+SkYi{KRKnrb{-@Vs@-(n@^$s|txSAdJX(1eM)3M6_==w4 zv8!Lt0Z;u=xz#f~Dl+%pamujHp-a6XLDu{@KB;FV|PN?VA8$I9$#_zYJ0hR8(x9u9F~i~WV0k`HG*4qv48#+t2gyDQ@^I?w9L+)RdO7XgnEipH{Rs8f>^cOwY=VzR|X;;5BcHf0xlX33CjlCeT?( z@;EwstNA&n7u~&GxKMQ)E1y|`lmtH`|K$A9mVD)qB@ci>H;2>9)CSw!1cWW^x>tx1x;y5LqHjT5fdTBOl`04d> zRT~y9r5PWtY@axF7^UOfelnhpx|%v<=Ov-Bt(JCY%P^T=jJ40dgf%j)M&(2IoOO_7 z5Ik~dz9%z}vadPkw-;iF*8hzx;b_e&-MI`isxv0!^! z?5@VrRqM2G1#!uIX;?}JAe1NlZ6HoJ8~+(+)BQ9Rk%FK>)X`9lE3`ws;rk!4|9~_5 zx8lh4cKmn$;xBP=_cr|7|KpeV@Gt%wmc^m0d^zn}-=R6PI+PT0n+UgzEFyooMcEvP zedzA#MO;!JmeZtM!r*=E`??0D>z}7-q%y30j;0CQT5!9%i7UJ`uSV7!f8_IVf~nx? zd>Khf8Rm)cowVItOf!4wI70j3XRG@0m;d#jqL4P5&ma2+iHq{^`iJXKb@4I|@BbPl ze9M{ptWe!j#Z7VIIyM`T|FmO} z{LirA#Z7!+JB!LhZVll6!K|1j#BBwZ6qeIGUI7x8ufm0!m8hagx^b*QJndY&F*r5y zjGkRZSCg9@i1cvfb38VO??&Tjx_gT@&QGIs^+uGH#N(6y_pcCBydMALqnFu_1>D-Q z8%K^`$IF|Z!N2?8{uk6GEXSK4<>3PN^~woSabXcn#&H`2)9UYDDyhZ!MYQ{U5x2PY z=h<}|kxQ8_FJFSA7jB@ntJ^8i;x+ncG_HfIn*cdMgI}Sp@oP=hL>69u<87MutHb~E z%TKWBy`SO*$}fku-4D@r?Thu_Lq%~C?o>A*m1gw@`LZ@iWi^#Xc(BkH4wlWc-B2_(FMBTm2R2h1UOv z25+*~7#5V;xQ9Ob*{i&oDg##?g7lSUgSZyn$c-)xSs0P!3kS z_7b-SEI}rfzEpa9TQWL~uKR5mji+tjqy!9c#p(H%Hn}Yidgvz5gIOY-lqAqmMN<=< zA0#F60O2Uw+UdxIt6qsoJ!qzVT_lcTGBXz~ZJo3~oq#|6#XrU2u?|0c?@iio?&JW7$I2D7rQ1!z@R@Pw>gnKvwUqlI*Q2tnk4`t1qL(&` z(`fg%qpcPF^r$8tC43Wna1Hjlu3YyT{`{ZD;2@QdqFk=%a$l)DGbT*!#mt~0{(9j` zw{>HL57W(5Ftf(#*oCX|AAEl^9mbq-%G8Es$+T^qf!3jTytwHlJiBtKv*&3YJ8-`P zO+B};_Jy^m$caN|OC6o6#N&nM_^F!@Ykzx*)tPmj`a~_yZO?Dsgq7v&I|k>GkanLZ z_;xlz?{&{@dKUB@Lr-lZv`c*p9W<=`2KR42Q(nMN(HV4FGK?3v9bnxvWr%(AjVTgT z&YRbu;pA0RtX_}xD{|4(*@R^7&EB-}IV$&5?x<1BcTemT(ukMfCMG?8DR^Q13uxGX z6whs-OjDA%%FM$kv@6X;XuQBNSy|nPwDMJWZslrjE9u6a#ujcz*?^q%1SBn5jMtVH zb6io0;R{l{UVf|ZwNSmx5(0NM-E?l_47rkfj{+kaAx0$&3B)t34Pql4O1@=p7uV-Sh-xkl$E3i^Lz#3+IF-1v8m7*c#%2uwF_ifR8R6hNB z(RhoN@7GmaaB8o{f!eI}w;ATk*SE!kjeYgAeror(+2(Jfy$ivq_6pwS1u2w@EBN>C zlaTj9_=-gDaqAmS>tl^;1#9P%!f$jUUFSo?`Xo|)<@x;E{5&7L(eU~C3qM52!6Sx7 z=q6YPu`+eYi7TOl{5;KtGAdFF#uNT$ynRM5CrFqY0y zV)u+t$?QfT61N67#!vimot;93w7aYg@4bWk zI<7sxgUOhjGX{ehWDtn}0g_-6MN*U~D(mSQ46>Pb`+GS)2~(B*%;INL~Am-qcN4FT!z)oxMH1l9%U(q zMO!ZQp{{Sq9AvK~rYsyY=B7$=EEO3nJ7^J^?#dP|++;R0zIfWGZ2ET#^&Is{N=x5C zIwT&>JKBQYI24MPjyCEiwF6z3ouGvj^)}GgtJ^@u#B#;Dqp42{Yz`oD6?$5V%(tm6 z4oD3oJ119t#ZN9%?aHUQ`(H5~YTq|S3x~b>QHq$4;K<%N;p;k-aCO!%bSV*6pQHAL zggiype9u+?=8$oyW9oNQZIf%$Qv|oKS7U@0Te(g@pFSawuD(KU0w+)WP|@HZA*va< z+R0+88tVfbp282uRxV*&PQf8VZh|BKrnV02yQ%F?UBON!;Db&yYEuQe%%@Zr(oEKe zgY-}H50fsxK(BwArJO1iZHIXa<~gWvOojf_e4~EpE7WmdQ2uF_)R&4nrr%S?|9_D{ zhki_(rp*6ebF@!XIH)sr5Z#=nLd1{#_gk*}W}wM{%-sZ~_rM&6xtZ`$UFkfeNp-F! zl$4l$REW=9#UxBRkdGE16bcx)Xqa+k9-4H-_31qhs40Zb>*L*Y3bHe0;Sfz$ck-G4)0ORR{xi4(pqVtSR zTo~lbmoGbew^-Z23I}n(0V^C_L%eL6bk?0oA| zZfZ;sJ}kgJE*>A=X~$9AqVx!Ox>!E)q}NPoCIe$Hfu`~Pd`Htq!vjt5i{cXAL)>`S zOuWzs9q0f%nkM*#^dX;UoDk+e3O-jiU~RXbuf={Ean%X*jsNmCnZs zw2#4wwL1qO@+aUM@C-rWn?Av0P5*(}2zZ5ft_%U!xV9G`H<~8A^9=E#u%h9-$A<;H zqwxZqs9#7M^_wkTh>LzH_3Reu2rOc5raTD>@Ma1pEcnOA3*P~L^cm7b{i5&Dw8V{m z6EEr)4=X+{@nN8;V;HjFW=j|K2UhqFaKkrnqJH5W|7aY(aZyL3wQ;%(ewdkh!ehfhIj!^2#dyzj}r|G@n_06J|5rH7YsCQG%(Qd z@dC{Ic}~^-J*Hx~Q4^S)l+eG$wP;(qrF+AVK!gRTTG}ee5^F%r5@Ing4$~lLie}$=yW#>J71Xl*~@77_;Gv_Wi>EY7F zi!Do%Z=`4moV1jbuI|(s>zhck#mg4yFp+eSo3Gm?UAw(#`6|oHOwvKY<2E+8P`cLh zC+P`3972K-03#;bj+REd03DVtmx_g?!yPSlPFES1E?jCA1v#!UM(Ghj*1ra#OZwH) z++q{SbEPYu@1(d4_;iY!+EF-l@|0zi&bNj0O08LXqSu-_Y~kYNRw%vU-~yBHXeI

uU2)Kr*gt{aMkmo#Zq69R3bF;0OLWP4wg8gA(FRSt*N0zexM2n5)zXP8sX?4QbJ`N-7Ta>EJ#@;_O5K%4t6jWI`tj*@N&5P8 z((-LVWwC3UQJc+oLJ->UqcH5++_-kht~GZ{Cw+xfS5yzQE71tElf9kL?~>GR9Q(3!#pMJu;n@s$@vV%1yoLEaxi`jybQWbAbj)W7Y1a? z$|Q=^5ypu&=&C?}wC^VPlECVq0y%)^xZ;e8;cr#=(C~;AW~8`7hFI+(9geo>7KM>U z>FU*mO~>_KX&usg_%QUhGZFEyqH&^O(f0rkKYngJl_&4GKr`N>@c5nyPVna$oQp>t z#pokQ3et!22z3|o^TGz-2T2ba!YoEln7deA5D=j+af6HE8INN$4)26d=B<83KcOu! zrt%)bW`hHanevPGi_$f~3~_kQ);i(KsQGyZHrJA^mLWqHuU89%lTgW5$Mf7vj4ybB4OPQ+`oc(RcwS;lV!| z_fG!Nc(bLArY8qyA8RZADyP*49}m+QchOr+Jx+Q39wsjXaCVwcYzx4k=0*x|EH_6NWBZJEqU zRbjmjnT-s{6x|LR$Skz4ty*k-vY&gVuECkDOOY;dyX;PSiZ_Py>qjz9UO$8jrbwXx@vgOMyJHwx-chiy7KK6Y0o_%(-&c5>fTecu$*#57d z|H4*2`Av626$su9KVQB}67l|1~M&kU1tVPP8Zxc4XcPiF*Rq^BG- z@ZZ-ioV2&!dc(%^WFg~serOA2mJmIDaO_5POJP@f)V4Ji%)QlPZ~Xe#mQu3Za)0+l zJG5h``s4|FrlsG$`|Yo|g=?s{sl5CfRyeTjjG9-FpdxifvdA~gA@5k=U@}3nK^Mx?OP!^qwhriCXor5D>X1ov&K&;p%xZ z#J_~eWwtUz!$}dwI-X%7jDigDL)`d0qv0VPez+(O;hl+#@F1PMQ=Zdc$6x~4;ox2n zyx^fRK(z8<7=U)=T(`oygrPu3*I~^oU_GlIA0N~mUO)}?}X+0fn_R8P>jh(sHu7iLp zq(_)&N+R=MiPqTBFEe#%R(JlKB#SBby`TQEJ@w3!QjL@zteAc0rq|E?(rGF_6{0Vs zNwtyyf9KYSZPSGrS-Ax+j^DPMuvFRfUH|wR`|QvT9eTQ9r}kX8UAqq2A3ypP>uR`W zTRwW9FF)hen-w zurzUN=VaomV$mA=&XZ4B)@M8IYJZQ_o&4N>_4?b^-aTQfHa=}%dG--8D%UMpQpfb< zaqHAp^|xQxWX)|2)|`+hyUfKhAJ}Kjs+R?2dCK7q2s#Yz?GH4kEPV|+#3mcc&wlfJ zcIiA))*f3nzhH7O%PwDNE0@$-QW{dAo3?NJ=hoDnXd7gbtwWOOlv{JHvHgM_Jax?0 ztgJDeSDhRT?hTWfV}*{~*VU-S#(;h2+b`I~vki9XN{g*sTq1pJpRP|j&rJ<&mRgo+ zz3MN+y6uabxN=&$ZD=gjmMmYP3rcjbbL^HFXxG|i&QQMO=^B9ad>gJ^QT=vUR!+GU z>X2<)Z@)FQH`;>k7U})MNces=IyPj3qrEmaVayKhKWuB%CfDmg;MRlNWf`Z@Hotk! zKHa%Xj9#|A_^ltx++VI;z1m=%#SZB5AbL`6LGgh5nq-%O}th>9}x(9}I z@r!Og6HZ@FjZYQZ(^iwp*q~iHd)XGRdRpfA2JH0dtB!%D-{I=&E?VY-T6;+*C9l*S zliquht(PrxiT!nP%x)V=DzcZq^OCbr(%!$pinDacGRE|T+!$EN55~E=y4nr848r`- zamKO-aTpJY2ctw>x5$vcJl%PVmi|#|8dM#!xDx}%O|6+a^;@A`kvuJuha}M%(wT#{ z0i7YyGe@Rz(qm&ExcD+ppY-Af{SYVM9{(Nn=RK5-C*{G-lqTvI-ow)+ic3dWa8Vqg z5kF{yfB1#CJZDPl!OhIbaV}<5YDUANnI7Ir2*EhRVsluYw84}_7Svk&>4%jgggME= zLpka!1TA!C_#WUCUE<3f!oxG*A85+L3fj8%5F+Ur4=2z+L7YSM~|Ghtin7S>K(B8 zi`H35l1%4aIAiM`TWOasoV8wA0Ljt8y2kb%F|C8v(b{EQJ>s%)3=m(IQ)Oxh)*-4C zSqiBa51U~tYKmpmpv^ws{DED%)~pG8#0GCAYU{k*dYcDqR2DEEdE_B$mo4JG2aa0N z(zRkVGbE|pZM%0JvDWS(*_h3-0WmL zytb1Qbi>?;Oq}KDFy*l2mtT_vx_Oi0a61x3p5!|*Hf$HPAozIm$F^Ixr+a#bWbq+IDj~U?TT?m5 z+|7fZ9Xw-6I^6q>=U%XzgPm%lCT31dhawf_RoQq;o9$Pp3p@l zo9&1$%8~6to9G|1kuDuFRC`?a;y3O0fAErBJ9*GfUA*Q{3+htwcs|HCWrPY?l1WO@ z7V22H4QL!nm0k2fEf7BZ?FZJ_(q);tP-j?|Aa(Uf4-*H^;D^L59Gv3a#SuW5H_YQz%C3E`Zb^iBPL>oDd(d6# zFQ;zw+BGe(QsjquyAd&honoSI^k}?OKjOwnU)t&Y+R-4!wA0^VT!M@C|G>2J4DonI ze<4mtKU3TgCmwcyN!nKZ--Z zDfmU7(Xg4`!5gMaiHg>$EP@o9(~O-ne=(OJ*%%`+O0 zI8j)<&s3k$c%;Wg;l#t3Eljyh!v#3ecEERV6d@kpkdFcgbm778UZ3%}P37ll7QVxC zHn{O{W{dY_`IDb>cPRJWa0>K~;sng_&3mYikY5Oke-ig@`NgNX+xKkn0xsbh;DAGL z_yxy%C`a)7BG3DhK!*%cq~};58_QWbR8w47Y#Sf(swbPx1ess_gr*`Xck@3id)ci06n8VjWcfxFRg!9Lk~!WOQT z1i7V7_Hz$fLP?KRz4W|&_dCzpF`3M&T)4>AZF<-yx=-8rHq*^z8!bzx@IT&t#EPpH zidmm$`;Y9lZMrF~D`%0FRaR*m)$621S0SN1_xptSNH!*PF-vdXsLiWc;#4lWyE<%( zu8B^{nP>BKk<8|gKDNHG9IKkYP^v5Ac3#r4AzeoD(8fn)8Z5&;*mBTvimPq)!?j|J zM{Fo5N2cUfN-C=OH8nOzy2|Lpb~M)8C!g=P7k~8owsC=^{9;ZocHNTB=>kg=4}b>3 zq!M*pVcd4HI##M~n0x+v-?0nLH^i{rv=m+AeN7j}e0reS9{tKQ;`TbFo0)Du{Lzo> zu?2bd>HF{L_P#b-w_&3#sV%d%&M_MtPq0<8xxH35#cf!*!fvIci|LXoMBQ=QyyuvG z^?TowP3unEtXm8xRNqS%FL2B|=zSTD)#+c0_UWayR=eP=y}kJ}Tk-fetWqWb-}`vK z?Y`7+k37Cf?dF_rpgU`0-MX6k(e?JykH2r{TYhE7t$JZ=^9Dx`yc(NZ#sth~HT zi30BE1TBE4lUr$gkzv#abL{g&CoHpYo~>H9TnoKiTeM`g<>nVyvQ(!|oOs3R`jYL(zxPwSCe@>@JNLQE zVQQ<&9j;+gb{}8XA2GXr2O?ExA|A4Ruf1wFr2_N9s-@Off5^6N{lwB2$l}h*m3CzN zPPK(w_WOVKXO=eFZh!kXuUJO;O8e9AJZT5Fyk{SMcGRAI`3D-4yoHfK!+>fST#+O? zYae2w1EY-YGe4wD#ACpQq2_=JhYVq)si`E54+Ta5G!4Zu;TJR5z zN+(@3yUBKnU_cSZVfUsF^5!3#HmE!?E&`GNqgteJ(USkkieze{lSog`-(vxs-~ye( zGx*=>Nm&Do@C@<8H}JrVLf{wRhi8b-GwK)O;ve1vO#Fh2hQ)_Z|Mv6=boXbIJd|j@ z_>eB74bR{o$~;>f57GY(X~Q!b=HZ2S?khfc@|$Y%7llo=?b~3++CBd9<(UK&_i`JI zxNttBal-pd@Mp?58ZV@sA&W^b;z#>WG<}FPEuUDK6B5Rr#PyDyDG`=$2poL% z9_kpcfOmM}7oQ(~xM&>jGyQKAui0RP6f?n!rYGJ^af1I;IcLW= z3x2NbPZt*E+lbN)>!N~OT}&d`tTi?^+AW#kDlRH;lIt$15v0i+Sef*oQzZSlTjksf z!H5&!pzAuIZR;eN)53h#=%^$jZS6AYm9GmZ67ACE%aYQi>jZz5R7q~?QkbhYA$!VI zWyMnO?y`E>rY^3mc4q!MS{p@&aVsn?(IGBxA}ioC*xzM0I{K_c7e{2IBoSp* zXjP)gy{R8C0sDs4FEd^v6A8NIF-x|0JFQ1~mPv6n_pI>IfCge4A0S2 zU+g{5eq0jf#v84cTU_Ss>h^T#+H6g-;5V)|)U2>uT7Z;Ql-pd*s69Ph(t%8qWN_T- zb$eu?F5JnJ%29y##jv?ORe(1((r@*;%DbSbT==C(|6FFx)K<}9OCC>QqJ5eCgQE(E+*^ z)9psOTqws{rA9O?oosH=oKSzhrW-LwCsMRzDK09OSv#-)97@}! zL!$$ubF8|e)Vj5+!LC#J{Aw%Am03PImx4?u|W&C3@t=; zo$zqK&RNKQdv2j+%f@oI#-=`vMJ!YjCPt+~)+`&>Iaa0vq=UWP+BNIdt)P{bo;sb8 z3^;{+ySrs?T74KR9F>)oPEDhsp}|?)K#c=t8697k>t?CpR99C!^$tuEHfk5HR~I!U z$y_I69xypzjET%KF?KDo(cPr}#v#J$e3)oSs>R@q>X$5agDf$4Fwt{mQjqk{shaiQ z{X$&>H|i#774wV_$2%G)gyYA1G%N}?8Ww$@Ee`&~V-dpP9cTq}#%KV_6&u0*}-lW|uxasMUq4(@FLvw0CKN1z8+vfUEclVUx}=>_87?aeiXDof?heu`rn{ zv!|Idftaqg%{B6lX^7$MAyI;zHCoss4w%Xwu6J4MoJ0X~c4RnLfLe|xxFB`M~ig%$Ld{Mvj16Ri?H_oR4$jol0 z@BlvGNPies{Znt`4QRIz6<+Ehu3zx&;_K<0A_6Di8oUXcDNmOs_UB&1iN_+E9jAD` z+L_=5xZxS%@QsVoGKBFA@xwD37XR)bIe4^tS9JoQSWyCyh&b_n0hq!_5|0=7g+q8@ zH_n5aK3>d(=S+SfyXZ5-3(sg+$cyKlXcf}L$KjhkiTP3R|1zy`+#dri3_XeIW-;d~ zDSY_nkfh8F^-Y#nEK^UCfltBjYY=rx{+^mP^{7VwciZ7kE<%A)$6GPULhv(V1(hLkUB zh!rifT9N8297LRkA8ix*godGS=rx(A`VID?L-(PpB{F--!6?#>C!GTC)ndqGni*bv zTb({$OywV|<X;pLl%fH(n|USl3P?w063w=rR(6mu zU%GV3nXxM_E;bGsB6-FRbbWojb`?t8p+lJD`j&R<8WAOBd)#Fx+Q1M@=-_Ue^qdnk zkT-S>=-{wy!Hbd0(+*jl7FsaR;}k*#hPi`@=7~RehrR}mfldK$o|E+!^Nf!(TX?*G z6lVN;pijJi^gF-{6K|@s5gZs@@T6Ud`4R(%gx*VtJ=0A29kZ)2#uMtEvC1>g)ax7< zJ_2(^+f)R8`~fC9(6qx8(&$HDgXZowNcjVkF%3o<+Ga}lk)a=qG&Ba3hvnY*x{a>R zGxjIYn7W}o20PF&lzihtoIn@nDO|`eIM-g4<+L~ z0xIn~gf>7J_;A>kdQBFt)FJlgvGI;d6#moU`Z{!KdP+Y%EQ;AIbu>MSOHUcF!U6LP zLk7%fxkwVeXWHEYr z`Z<0o0N0Z`4gHuhhuybmSt8M=z1~Y1?IMLC$lA8-!awY9mk#(@H+Y)7$IzxJ!;K`*h zV8lu`hOx@;VN)(eabY*5-`XqPzO1Zlce0!vfR4^C>7eJzJl@^S#QDY|+m*WDgbw8{ za#61d43}f9lo^aY6B@R=2X%O`PkH7SYTF*#DIAGa(&JPKGIbe9Nc+X7K%&EFC26 z>>AWfmRXAHZT2Qg3|xR156kDw6%9i%_dvBH}@_jXM3Oa?MkHj>XBLw<^+oh^3?vQUq2DL{wF4n zOF`ylNs_AbcRih*Vq}tZNG?bC!IXGNlM5{xqi|<}8q!tn>QEZm*FH&LP{w3GIqDOxgCZ)9WV}KiAPb)kvl}@`%Z!^ zk8n{Joc|eB0Wk)JI?LSS9-f;It&d{r}efC zNK`$hwmT>$0-b6ub>f*OsdRAQgbQ?YA9&FS;$19m)SLADNPn*`^1~}@FFw*93X}lo~svKPK{vsN}>GVkBvy z2VL_e@y`(b2qV8fHDsimz{{4t`dr0Hq>YgWK$QR3sz z;($3IUHk*}hl*)faJqCZ9eZjUkL6Uxamyc2pm44>ca{!_4cn~hF)OBbL( z1>*99@1Z~Nq+PMQFzC*!`Nb+}SU5toKnc>bFx9Z4{-GT&)jQ`k9DM`vLS}kK>o4Lx z<108lhzschjb_U`_=k8Q-QDsgUPyDdxU+>P{yVwZ0%!8~nQBEMyTQ%UryZZ8K}Q46 ziQ`A?T%&Bx)>Jt&cdae0VqUpzZ^`_d>gPY`1;*;fJ~{G0|!k zREcTomL7DU$|!Z27=GZ0X!GdS5AD})erPEL#Wqj&rFVVso*lYy-6|Kqqn3lFSUpxpM7GxbO5txeyt{a)Oqf`qdSSV z5Ev2jyjgneAMZP4Nis)QSt2VjS|B-TvnHIny}Ru7*WR#!#JRR;Ua=kCzSTB=vPai< z7h7d%p0zhOIp#Y<>O`SE@*Gt=c=L_dZTtT7YJWA>b@sHq_2!#)PzMOh)voe%h%ex9 zzvOfSpYoU^wTsU_de7ecXqWWeOQfbz=v1JPOtL^~s5@crzq{GaT#<^5)S7bB6Rh!i zlgg=!n>2Z{Kw!ZPzBd{!*{iRU|a%wT@CU+!zSVYk{ zf#r>S{Sx)vDF%8#Od?EmhQ?HEYI9I?T#Ff)Or3+2`8G)krS8EGe8M*Jw0FUp_N{nH z!WBI5kN-ts#E0F_Hx^Gqe5~cLlfqa*eLx?=!GA;yaE}VptHF9iD+TSjxSfndm6ruC z3wX-z@D;7lgYFa4)TXmEJvueb!a`(nQspd3?V)SB=!+zuL*ym0a)MQ+OieH>;5qC) zAw0;F8$h8QaZ@!mIlJXrOpPJc79I#{Tp5H%GKWx=f0CZy9;M$*G{cV{<)v-#0~Tpr zn0xwqr_9V%gTiM7u19Tw{GdTd7ijrKpR}puSXk>^4u;wVl0k8*|afjWK=+~MAPrK{7cdg7*2@Bp_|(UE== z+C@sF?bDt_JclpkBAv75C0K4XAiB~P-HtEs9PrjR{f{5zaWr>zbMLgL%=C523k@Em z-0?JZI0Lb((Pp>B9 z9sGl%9v{Tr7XuBW!Qe2^-ENy@$M~K1cWD$Wwd#3!w&&9=Hei{yX3;z`#XIcdtsmRb zlXcd7rQWu0``A8|{nZ=YqgJUyGavlsA8gy`bGc1s$YiHltH6Pd1|6V82U5CIvcAyMdf7hI!NBFhEqkcbe)ZaGwrkHJ>4s<7 zd|hNRJSeG|8dZnv+U`4gUeePX8B- ziA9Pd$Ie^n{A#NZW62Hz^@)U`qw#{h`_X0_%PY1=mg_PNb)e7p?6hmW$+oO2*WP*S z*Rl+X4|{_fZG-sQTrI|YOq&+_BWPNxze8Au-dI`{i*i{ zYp9cTMtP)vmX?_(`_4^v^1?M8TwUX~V12uh8ANruWBYeoLeYFH&zWO;_Z-%}>^aug zC7pA%x5cuUa%ksnUBofZmMtn%Woq;h9Ud4%7BV8{fb39j-+jv zGiPeoIxn#Q^PScw9^4zh#c24#qIfT_AOA;G4t`);9y?0%@vuK$v zWfAk@7i{-WP09(wH8DP9TR(hT2Z5Vx`O;MyUrL?yHPr8!;|H`b-lP6BVDl=bm~k z;`>hcrfeK|B|2p(0`-HrFfDY>Sj$AJgy}XUvG^lpiwXn+-W~_WC@+yh4&z6Z`^nR7rJSlXjGV)Vx>C2fV7_598rCNzV0bHdP$^gYfJql zM+=cW`4vg>Og(gJmy|=q2x*{SlIj>$036a!tR4*sU*3^^ii>o+A5l8H$dNyk9T(`2 zst^SU6F1@183!PN->1Hb)uJBJqF-Dz`5|pZ^<-2`5Ao@z{2V!e9|)s-qWSS2@^wf| z`{SjMeG+6*?p{fr*kp2kfwG0XEbmWr#IHyk>ONG4aSB7s@?j%6fpFp7O@jv|I>*7vyCcUa;Mn`>xvk8pbxI4j` z5y%XlQ+t6k1m5NahH^vNvc1~SYVEphtwB~ZM#q=x0AR6Q(YAVXW0URLf7&V*SK5u{ zAxpiLYE`+ZHmHMZW7?KJc;JZa(@t1p(+OD_kVS%J6_RYW*@pESWb#fXsB|E$TdD)4 zl00Q-3wyC_x>o2tLFThY2gQUWRM>Z4{;D0@@++AwJ7ndh6=Kv6TZz;pYUVArdFvYn>Xz%9lQ5iL#E+Dm%vYVr=?{`o&nc+s=~*Z0C`4I$T&} zM?XI-%NqT*Z}(1T1!1Kayi8prQ(IkS*y6o-wNnS6N-VX%!9L%A+@2N_ovQ6k-*{#z zVXRf<6qe~w;C$(d`O@}_dD01heZ~L)KmbWZK~#8U1-i*^?}0;hL3LMK(q%2O-#o9h z$|`FX+clXi+r8}r+qv(!%n}ycG12wf3+qh9s+=R?1RGy$)@juaiCF z>KZYTS`^6&%BBq~HOVt6Xi%C3y?doS4c=YHEQw!oVuy7!jo5~VH^?SA+t~ zMy@5wbl$M6LoAjxmFri|T89{#1=W>~W;b;S(p!5!wFd3>^h`{ z=;M~7x-YL>VmWh1?E3X?OV>_Dwtfq%YqdLqEp%mmuZYHxk@|HbOhTG{{rf+$@`}US zMcQlgDobr)d4|RtjSIzj(jJmTQw(cCL56i+t+VZ0x7oOMorYuy=s<$rLqBR? zd3vplN;Fd|NqK@)YMSdWTffGk%7RSwuRT^a@0*q_N#vxON(7%UxuN?PCJmkp#LwYCo)C*>r$6#(Lx1A8tH#YwiZH?YR=IZ1!IkFH9yFjriBhdoop?Byn2<-kG#C| zl#G$a(T4T`bB7~;n4HeR5qCfoCJ-h_|5XRR#!yS5>@eBXF#5bXS`g$5-=IDhW#EB1 z%>hqkbS@GGlL$jfU63y@QgrH^`l9TuQh|eUhq1!kVy?=Gnh+ppD@lqE(@EP>vv#U4 zhXI5};6}TEk?huv1B^fA@ct}zv;b8dqOYAMT-{EE z{7{pFnNbzGMS`QVvKm(ZrL|Ki!hF8aoyaWUluq+!&;fT(mEEf`_-qKC}MpI0slf{cDqp>oOJ zhk^&}9{hQK40J3%2B}Q-sC1b^8@tsj2BFQ)$qw`03msN1rfbRaQmeak$vQ{#tSnQV zVnkA5Nj5XIHCuP`ywp0R7c8p)T^+6VkAL+G`{k!6?RV!t<}6AaIq-?SzWKQQ`M>(_ zWE*;;oxR>G)q~?!q;1+ZS*;i!oUrtaEL)(z0;lk#X6swTTJRx?pndoUMRrSOMpz z>#{Gsqfgqgy*us1F)@5EjoQAQTdn@OOa{sX zUtW2xF3V`NjGR1Mu&CDNOLZidt-w9n5-pl>=um1JFuC_=f&|kAn&waxN8jsok{6GB%D_Z_ldrlL}m+8Wwn3Y>**}5>} zwO_nx^L2U9LrY3*_uK#3HXrM?fAO#W8(rC5Yk&9po0e8E-@f_vWw!HE(OPZ0a>+bd z5vj5z%a+=u>z&poOB{YIx_9Ea$y*a}SN#S1-~PvcZ*3_B_SE;DS1||em;cXS*;wTU z`^(?^mX)X7wD;cljV+N`y|N^!wS2fo3*JOqu3PnLWVd}tSH~9=m09(IQmZIWw@tUw zoTZJ-IYaiwn;*&k?oIpJx4th`ksEgGc%7B6e9|%`U1foT)Z>e|P)Y{a5iNW=dOK}M z%yO2jd+hq~S8A(m_HX~~Us|?CtpZuTNlDE2SBMMWMwy1IP~V!TwmGM=P}Xfmv{;nN zM&eaT)8Ds@vc>j;?`*OOUGsjV?xGg-os&#XJg$C_maezd#jan!?xf5`>YGR|y1Ke_ zX-v1l{4G%gfy)i5{(+)DhgpCKOl)w#J#TP*p3{u0%@Gh_ek1LyW`> z#$|P-F0Sbqutr%U!k%%dB(1sJPAalGDWPVPVM&URRwIdWH9Ycjqm9ekPvxxvK2sKGS%NGb}Gg!Bv;(1yvM17Z1M=<<=wi@75WaFH%DSHd>% zjFFaP&e4WE^FSM%ia=VVz0h~Db_z?gWp`T(vQ{k~JA^}}>Y`LCcvwS$DQDtkGVd3C zN3;MQ9!qkJ1dJPbQjU-}UjYGVh{TR3Odm9AlRyYPcAS#{s%;?YRWW0*L?@-84ctmu661bUxjgS65#{P zd#f(}xuGBJYeWl}T&X=5cR3QNfHyCNVxnV(=&R&e4Oelcurd(4D83#JbB zUlm{K8cC|BachvR?@lq$EJV;vPmvUXdSQXpr?|8=-`;%L*nObApx>@_tE)TccT0CM zKoDpG9l*~y$4z@(VU`F;rRU6%(v`|VzvU1m{e<$9HY6i$7#~7e!qdTx{qgzuyh5Hl zJsuu+`X;+FUblbTwQZQ?urLkqLVgqgv~fJZ$uYiqaZNqsl6V%P9xk`_ z!h~yPj=_LQ#UhPgv|+J|#n`ycjwqV?7gMT~0m?b%vvF0GIlw4*1b`sT)^j@ON>j528|@m^lQt?BvD&z!;vTQI*; z@C${SBmvqAt&!w3Jyio>PKqYfLVIY%Lsp@SM>1sJc-a-3wjrSt634eP8}2gKAgZGo=eUiHu-E0+G{!s;4ZxMZ1B5LQ}AL6&YFF17U= z*GUhy%t<8YNgp;VJ4gDKx=L7+^M(x%TkQf}{vkMdm5c1@$JWV2oAe}=b5ueRaOLUR zmTPR74;;`b)J&N!tFdyK_DdGypQk#ju9{~#xp}szdcK&uWwvDD0vl>?wF%j*-t_dd z!uKKBqt4U~cloyd;dP2vq57=0d4iE8X>gv*q9w_+;HveHi216tY&If~!?z59+kCI%r%2LhKYTO@|5O6n-ZlF}yX+IHzYtKE!C{Uw;NTTrX^rd#P! zw7}W$=p#}w5HnI(F5TlANj57iN3_Mc`n*46Zi@{Jwz=54FD}m2$ew2FH$0-<5$Uxj zrs#s2d7`y07b+=~_KWOzYmxQHLknb+x!Dpk^6kkdpR$G0HWN33IWy>Y zulTuPM0hYLXNl=szG9(Fu!%88k5~GQ^XAXjPDh~*7D^JGI@eY`_JmZA@^zk})v`;g z>?rLHEUN|sjN%X*49|Dr2DyIuv2xBNl`_$J^A=*W-1*3F15wA z^DRx%Tp@bTxW*IE4W>%ZWYB)2LEH9bPd)!tTU41Zm=ji9Ug^exV$qLDt8~F)d+O;& zZDEbfIqHz$;+3my^+U_7EEX?YZ6rTmYE{B(!Lk*yU%o`!`Kk+d9_O@;;6hi?sL>(iYW0LF}))u{(ZQ?UAF)>e05Q4{~ z3G)%Qv6-mdKl$sw954Qjam>v{?mPH}Qg~*gRTq=AONz-v2*bq$&5sG!S)EbYoGJh? zG-+Z+)Jv3L2Isg-O)jc}kpv_0%2FK_Ny3a;M!A^TGW}4`K;jHM80WAp?duGwx^^No z{&9dTRrG+-OcUdSBtJ_(XPH5aH&QIhNBe?V?HcJ#e(2bfBNrW^Op~B?bi+u2lcwO`+*7y5_#f64a)6n!2S9gEbL1zCh22i++KNNG&~QNtea+4~bb;H*tsau~b1DI*VXKWvMMnw?(@A z3>vtf7AmM^jb)kof;_DJxQrC{5Re7Nk?{l>HgMO~O5Lu2LC+dcN%yT9eXhAqX z=tnuBE0_JiGtuT~11utF-~98A7U9`k*Uscg*5E5t+%J@mI;KAZ16W)vbVEN5Cey!I zObsi{tE_;FE3%^-OgtA-wQGSC7Ua+-Rdfxvc7oBc;&3pZKF)Z_0vNmq^AynwfMfKT zq6sm?h^wBFW_M^Y$?k_&;qrY_AelxSALAnHkE+!5Q@10ev@qR_Yo1ODR9-B0eD35C z`l5mYkk|_-jY!ZjEI}^k7*b<8(4l@p^e^(fe=~MMd@^H?_cX$R#E`5C967k(QpE_b zS+&whmhS~Qh&~CM=HtZix2J?jp(Rmq_o{C>9ro=o@7E_DUZm|fPz)%O6SD$cSBSMV z!XRDH=?r;??FJX_XhD1QEBg>9J|Ev)CYx}GcH5IlMXGq2En^fvD3kX zG6RcA2w>zq2}h+On<%p!(oBc+#lL_TuW~Ux4>~2y!_#D1J@LWn`)cDVep^oE2L2@#hVT-|!z?n&rU!NwBJ~3se6x8O!Tp}H0JCxDIJ6At?^?IScFX9IrCU8CUL&boFiWmyz z;UwiTBETrHD0h+`0d+Lg6Ui3T8j!`Ewmy%K-)RsN5rYLSsUJuT{)}=k8syCZIkM=M zWc5m?Zi7@A^K}_lv6!J8F>GGS>X{VMkr&kibHrGqq)s}?w!L^b$H+Mw*#bI8iw_)e z$b^a2msx2ANg!O=nY5kCj3#82$T7$+UnPVAtCwUJyt0H(p=b<~h7=N-jUu^Y$4_y| zCs~X+%saZlesM6xXm|AvxPx09+@v6>VzQtsvS8G8Q0d^X9EbW~YCw>Q9oye|NCMM6 z^G`c~21trwYO@vQ)JRlDXyV&1g{CyVA9snqltoEh9m1@`2sU(&h?yF8c`Pi-a0?6; zKI%=bUK~><+A^Oa?PsxewpF)fs(dw4twi;OMGVj4Ea{VLVH4(naWN;*+xn%iu5&izDF)ds%+zji&|S&>PhXC)be>4u zVa}xAu0;X|=iH%LwF?PN9b-;=CSzI_3o7t%ZC!ncdUS9FlQO}yktJ;h@GPdl4=F8m z$s%GzizE&sPM&)JK{?{nM%%i%cW1_{NvQyHj zx&RLCK38{H6l=l4uFR17JvZaJu}gKIEipgs722Tc1Mbu-W0AvEAJnhVatlu+{4nwC zkP%N!&C#F2P#2&B9UNYYKpbLHT&MCx4BrftL~T?6*lozr&IEPq>XUj^Iu@U<9u=SO zo8lvTbYI7`}$S$7ChXLKM zI32Jr=})L^bo`KzD=UYSs~F)(xxk+W#o)-qGA{ZcousqS7U(QEOm;yZCL$(`1W8l% z>gWbB;~56@uSc{ZOwtKyCcwKoS|I@CfbSW1CYBhsq7T70)xeO@xPed}qdKey)6Gd( zK=?An;|FLDdlC=f$BH#s_@U}TE^#p?qkfSWXb(i6E#1tw2YmgYDmtnxNPbduf;=$O zc7OOm5&lo% zz_)0mHb^`3bkj3N1KI)obxeaK6Gw^$CZE>h?EA8RpQ5{`AK&9+9Q+}jm?U{mz`0Y>P(%<55^)4csiYTjSc<+5)GW{->xsIog&>;FLRSDmT%}6Bm!SY1C?tgbrLQ? zz&|i`@dyTdh}YiU?hX;cEOVF;WBmL$G)O$&VVp4uh&2w(-Z2)T<^l5@4y=#|lN%}@ zfq^DH)lW?@{XjQNc(sWUK-z)}j4;wBVzRA$p}k*u+_aU_moCuZI3`l)L|>b1|ALLg z6gc=XAtK>p;2zb_NxK}41=s&~<)M$0C(OI}C|4IS4@mmxPh6Fa={N9U5({mEaSlgb zsF1Mb4>RKyBa}_;nK-Cw0I#Mn({eNcQ)VVRlG6@7MPmKJ!Sf6Z%oG=&fJdSx&}g3~ zXK0B79;#l*@if=B{8*$6tKDGPAzch5%qVI&TqPc)_0R#PJ6Cmw?lHJ=5DZloq~VO| zNMHGZrSuPN%XxPXBZfykWEqrqFyT`)i2M{POSbR zS*5%&vIqyt;=fp6!JJ?vMk78q~2)L{OA+FnaSa;?3@$2 zZo$YE>m8yuj43!G9jDAyd7O2^qQ=x56<|Vp%0dl0eD%r~{4r0;)X(BXxO2!3Gj1#t zoOAiBg()Jqh-9uE(=W1A5A5u)c!EL3v8ZJ}BpG>O3Y1+9>|-Zsmo-D}(V3)mF%(I0 zXv6G6pv%m{rCw6;SqNn`*=4&0@WCU|fBD*eyV6i?YRt zYfKex;JDa}_DLNB z+x-NeG6eXIa^zWPWS5Wn}LpI%t{AS zIk+pA&sjqkhq_j~tGZ`HfC`*Y!(^~mQSJPpeYWrT67fMfhz2!=R;|5XDYbNJAEFJWwojI`A z4xW(JicL?-R9%(wM8cuQtOniEaMcbRK4wLgHMU;c_UDf7xAWKAY{^6G?4d;!0__Jg z25ZXiop0#%r;m&FXQiY4oK<8c*!G>WfT4qY8y{IO6%R?^RH1ILn+d`D^79=Ln$%xD zZO6{vut%jUUL=6XdXI#)^c@)^%IY+vgWJjZ2P_wwqpHLwt8WywKrU} zbC;WJ%_AF}sjFz4zAtociwu5#FlxG9XWKqMt~@u{+QsE=amBI@Mh`0;pMQSHsur!X zWePiYbhn+pP;YD3KVy{@1q$14?V~C7)Z>pzPgZ5S7y2n*`j)S67^!hPb?l(}q}daX zZ`5QrRd3W`(}k0E^is2}ee?+{*LCr|tygWI4ziZlth9#~SLooa6zJ5B8JvL0&oN7~ zOZ@p~pITFYihb>cuh?+?dD}0&`Qio3?BUf*#TdjGm|5CmJjuciQlIqZ_wCznH+5s+ z#trMGYLViYMEdX8*q|Lfa?l!E`_z}7unbw(*z(yf>5$K}P3u>?i4UeV?4Y>z3BH=_ zh6g%ri}c}>3m4gQk1w~=vd(g`rC;YO9{TC*xsksU0L+Z&`q5jm0kr& zl6k#{LuBC29En7cClDb&e_)`fL;s^LVB*M2&tBf!Yl1pB)Rw;6hKu2OsJWdQ(1VLmB9U z9%{g%V4u1FqR*EVP!%y~HI8zkqx9f+Y94XI0NP885zKMz4K{deC19Dag=5SNDw zgJ%5Gu;g&W7jj`M{Ho4k^y#owYT_*|nxtZ-xq@*PJZWo;Wt4^TId~#0po4>#0cXli z-ytv5Y)~zsydstA6Q(;DH9`Bo}V?zK$EGj2_kz4j%sdcosNguMxx@AFN_pyui z@MBNgLkn`mRCP+Hx5F{eXOHi*<7X~e)sly8{hDPuMJjrVpaT1Vj?UnLpw~K}LyKE> zpSJAcT3fe5jFJw45PGBjitXCITMV?MiLyWZwI>!?UwgBCx>t6oD;Hbgz$N?jJ8#;{ zfAr_J{ML}|`dCa!&rMsu>2a&AES|)(zq7?z$fVJSstZNZ#w`}HfY*wPn&Af4Hb zzAQA9S}469qhJ)It+RFdaGsX`t{DaL-vbT zU$u2#`-wfVNxKoaFNg2~8O*ld|M52^-59i8n?I2mx>76M zu$&R!ZfRhj4MX}14aWVOY~Y&wS}xnp{q44N*=oxyOLuYnFs#XXuty8AZI)NN+R9T0 z?H_*rpR9SJ%KrJrXRWLCitYUDfX&G$w#T2?AQODvHaXUyhI0sH?CZ)F~EarymHY# z-}RX_w{<(4)=xjS+J-wDZP({Vt){9%SCV(ywjD=g`DcYaCbN3MEE(A!KYq*(9XVwg zMT1tMdsE(g^Viloo^LDGKIX7vvI+e;if-^jS{!xw$NLeEpQ{JG2ZlL(N7FNT&lFA- z1_x78EGBdAh-YBXo5WTyRm)*BuAyF5l4)0^a&SqEbc+td!DNIR{g^m7Fqkh@0Jhoz zjbxii8a+oOxuvo^frbR5*$%S)rrK~EfAD97r8JAU(jNPd})+Olwcw# z1J#diD%LG{vS2{^lP>9`yJ0g{P&WZX3*}3CB(hA7s2m_sgW0AYQI#ML8G!>&KEah= zEXd*E@D~m)Hh*{{KSgq3c*(((c}Xq|bfQ#eq=ziYs`xmU7jraHQ6}sHm4m~a*E{`Hf|L>_*fT9K0G?3+Pw*L(?S9lHdOM`MF3B_Tt7Z9x?PeDzRtD${1BFvjHAjg- z7NY>|(BZC=Is;7BVlmO_s$Up07Aja*>48>CL@^zc2s0r(knVe?y~oiL$uSEj7)%x{ zxTi zDglmJ)f0x!<)loJa4LH-Zdw4UZTXz_(Dxi2EOa~K`oyvej2IGmbb(ojP_~P0vNF__ z==7~wD6n7w*D>Khm9e`64#V4w7 zQgZccsSZhfg+&VeAW#p6S;5XxCbwfEztEN_n_EyQg9(IU{1Xmf0A7-k`X_0{1-Nty z_L6wYqxAZX>aeKLbonwaWU2ixQQPZM$EepG5a+d!>Jc+tt=%J3ipCTNn($8#M`9)S zxGFE0W&}n&31;`ANh&++VzD5|RNZE(Pf#X);6=X&b!ZGu^h?fwG%6kHQn|_(bDxYY z?1Zq;qTYe;$5vlneL6g#+*IEuR&Y}^4L)Dwd4CMFN;OAq5oytO*?K-+r-NpxI<&V; zhtQ-eGcLxfr>)gK-n`2uGBsFVZnbjR>uv8iXXmt%>F%9lc?rXIshUZ##uC}K-TkXQBgPI7ml`8$ej0<&^q5-c! z_KcgF8g1j+uiBcW>vWMrp|xH(WPks&f3W^J+VVSj!Lkbe(pJtdlH?nS^z;ew{)r~S ztFn#(&&UWd-i+_CQ6CJ`zx2DE^d-nM?c2*WX=IT<5QkgwV%Ph0s`R*oNR&&~tmoBmI z{pfpEC;iN0=P%kuN&Q&;&ZaMpRD^|(jQ(n|v&QPLU$*Nb1zLq=IDDBb2wuGE5&Nbt zO=-MTXJ_Y?*mEy_+fJN3DRXOkm5>k&N}v1(SWx2pXI?Q~C@W>K?EYggNj z54T!xr%WTtMT+LWqkr7spa|HMK5_Vfos{L7xmgwV?6c3Pz8|*B9d*8fT_VxQi5|>K zYnE$KdcpFt)#k38uoGvlTh4NswYw&X@+a@;;*lmxlL^Y^rHyr5 zw}lUFvb;2UKP zl4Y*%4%^kJdGOw=i=t5FKy3qfzz73(6n-=xSGGvyM&rRm=4ycs^ME7>2FGnFYqDSx z#=oX8!%Zeg9+|vhHVQJ>V&+yh&ya>|;W;PGox*fv_E&stF8+9i2(k8DI)I z(1+yBF+&<0CY;32OTNgPt#-C~u?~V-0n9Upj&Lfv(s`-1^AMhzMxEr2DGL^daxiAW zB*N$;NuxY429SfEjHHjJbAria9~K_?LC2YB>1ZCIsR!WWhj*V|T}@>~;>Z}%EBw2i z1kmfK!a#senxt*e8U15aJDN3-H}(3heCWhv&cx2d&qU6lu;%UoS4ZiRy0cKh6d{Z) zw1LqH43<7!8=;(&zPfqf;Y@5l4lr1+S>7kZkNZ>65Z^njFC>GE`#lE z+A#G%JH)}L`Tu^g=2$m*IYySng%~~BI81C{rb$O?CpiX&Xu&ss0qdl~$|FT|fgw{> zJ3Q$pESMTNh^GY<{f9+uhT40A7~)&wQt2UYmzQ1y%wZ|`0w*c4+Jwr81F!C(VYj2< zOgkzKc_WQRkH1K5i@fQFv?KRVPmik@USIOqU&`Rf;QBo3Hk8G;d&)|0Q@KQ2+BP(V z*3i%~(>y^+Ks*EOVNuWAQt8fA2tHZ@v{llTsN7lFS!`6h#$pXSDx6)Q|0Df&d3%s9 ze+OPzK_7O@*h%Zwgov&-ZLu&j&DmvVF&^;pC@De2(KczfezDj?^j=wC#-hGHB)-Dl02V+Uu{`^&34_ zCUbsCTwmQ%Z?FFHSGMVeA6Qw+h#25BtI&!66y2QH(%NcGtvyy!nkN0_Vat`(ifbo7 zlyv!=Exsw~uyj8wb+JsI2F_7Qi+g+fY*aRj7uS^8cwK|-+_6ViMoO(jmNLqUQtkZf zzp%P%jkaD4G#$nbE;E$Sse`D?BumQutH1d_?X8`4_Q!wu-^(Q_{rCO>6AgjgRVj=O(+Pg-Wq(S!0o-e7K^UeoK(#a>?BJ zmOR#PJ7x1Zt*}HY2(m1alW2#|zG)Y=Q1A@2u%p+jLws4Tx2@UE9zSk#3l`~;oig2A z_gg#DJZeAr$q%ejmSBce|68{1u>K`WHMrlDRhZqfDp9RPn(Ra;kJy3zd+f>jui5-E zS<3*oFTsV-Vv>P?00|q6HPcHc3KzhjHXpuzw9kH zYNv&ri;@(Xld9J(owCZ2l3%3Nw{(()7bejhiXnq(xVou81BRF^UEV>vxtTbuGD%-m z?eo;JXs`d>KiWjmQv2!4Puoa`E}=Pk+EQvBv$Z-{v26Kz8`dQ+rw$&s zZb{p+bWMCoZoY0I!<^fob@%kzknkyyjq3CJ&sd}2SJp1G3ek79R8rp4#U@RyosNN~ zEke;5(Vd1nA3j!p|4o~lQ)UTi+D=YN(RJG`_7DH~3tRu(cdZUnWih34f$>x)RpOlvK3#LUZiV&B~9$@*EQy&Hku&2zdA5-;@C+^@KbDK?FxHH z3$M=li*`nb1D|{G1?E@MCget6Ti|I4Hz~0kbj5aHsLW&>7gPp5Fj8yLT3{-5#8}FCPo2jH!$2tMZtxI0=V7LDfliiCX>h0@NQ!cS+h;d z&3x(7;YSLIR1lR07%>){F!v>5g0V;e%}|p;LJKq4E#`;`8vN9ZRCd1|T_IiGqU;PO zu_q5CWiXLU=zJ%sPs0R23y8xa01f~=VA*fMsc?=9W%$A}%`jXbw zx#Dx-%mp3%Ly8I04}(e>U}TWGBQ->Q2SzR4IYuT_rUE%61})KLhq(eKaW0FAKGoD~ z%XA|ycFvJfPbiM2S=p}lQdXqu&;xy3%8FhuFwjLtdJbHyCS8z(y+iE~=9#ttx$`B6 z!z3Ma0Y=op9LD~~8ibEQafr{(3OdU$(eA*S076d=+zIqlT3%gUNq<{y6eyn2@{A^u zU}%II87fLFIGwpeEmT?z4=f660V0YyC%SLk}+e5;Zg!(8bz7LID0zpKqgCAmyd1vhoy5@Ss zIeX_r-Do&iWVI_d$Slx+70fG_?co|*A;zhp@on3oiTi6WebWYY8O!ikleT$JS?Z?e z?Z?0OBin!clGQF-B_;`Tcyy9j0o>OY|Kle}oq(76##Tb13R|;IX5qA5-rk`T{4!bh#L7oZ=ccVq+x@FH ztdT^&*4C_+dW!~Gw#9qIEMDGw&YpZ(H`Co3u=hUMs&tF(g-z=aSh_|RR@k?dN<0AeC>qe9Ct1J#0%Je$<{?Ki`h*-EL>4HuB`tUv;*H_tQT_*GV3y)aNXp8;!qpem{^N>BEOH`mZ zQwoF213TBdJe;<6NoO_b_sZf6Ey?1b5SC$_50U&Y) zkrR=bMTsIsiBx1Ov^q@iRFB8oni`{zjn9QTe~jXJD%xr^>mNa zq9}?KNim5MB~l{AB#Jo#BtYbx1CjUp?)x3!;SnGKlIoUZUGj(b-VNuTb8b2}ol~^( z32a>ZI4T#7;9O-51wQe$0!h*=7I_?5sh%Y|*V-JEhx?;4P~C`4T8t;3SV}YQC#e^E zBM09Y)NrtM=laNtf$lD@N(`~CQ%@^b!Rxq++SWaWmw)&Yw{Iu#{@E`PmsQU5y=*%~ z$<;T)p3QkX44h@h#ADq{ui}XpbVPt1R0NNSw0Ds-p2ww8AKGwpCeU?JPn~@ycZx=7 zRHU84ddB*fuwmnEoc^L3>o>lH&Cjmj`R(I~Ov<53$dzuFVcq)Y+|BlIPWCEqRHCjg zhO5u(QG4|qj-0xH73-hn4p6Z}QQLE~V;i7=bs~%dgoc809y7VcmHGi%W|Z2=@V;gq z9pVbu@F4QbOR$u`hL&EeU$ch&OdF49RUx~G6TO$7!qS{re0J^z^0=zLmd0L^*h!C4 z5YmO_j^qaufo2{9tf!(DfU7*Q&Bs zoYg-mot*ro;sAU=gTGE;(#WApgmU`U#VQk`<>$XdsPy_)pA_tu9BeU=S$NGxaVT`r zD_;6pc^<8k`Sx)uSc9(yONlPb(i2?y6b#p&GL1kv;f-}jt72N|OXr#RWC{urFeEIh zZp!JrsLnQb(-yFVYdM)xj-_y-bG15pQIZx*gH_zp=H*dsVQU~%W)4EA;N3vZye4@( z%-xmYws|;zksOSZInc$Emzqhy2%aGOJLHEET9lYK{7M~k1{P;>Q?M@2L8^lw{j*vFG`K(sy20!w^KKIpSJnE z$%hGe$fvx=x;n=5Y?f?c#BjE*`~{Z0FQgC7432i<7)KA^Vym(AU zlaa*6aB)i;LW+WG2cAJj!7Vd?{ft1Ab-=v`&4y8y9n(x8chcE#97 zkuP@~y6(Kc%T#=@R8Ku<(C7zQyDfSf& z(n6xirt2SF{q{{p2;1eubPwYee2LIXbKG6pVxe*7uEwXzr!ajF(E!2+d$walXMbOL zja#lXTg0r5`cM??%~4hjRupG1P;1w!DST$SnNyC%;D(NE|YV zgF1ZKg?9rnlZq{2Vcz8@2a}A{AQsBrfmX*UeEfr(KhOERdxg%K7Au3aVXz)Mm|o@d zs(>^HXf`IE2v=3Yh`BUpkSBr_!NDrX1L32FsMQF;8DeJ>#S0srb_~%wlV^A1Pp%LT zcgcnP(W;PWSLZ4xp2=F{D233dXr5K1pH|7osSZe&e=L>;1JN>Db~+xT@|$4CGR%QC zl5kXUXE5I7_Gtb{_z>o5YBS1_bdIwwN##y-Y>ev&MZ4;#({2*Tos*ht_fpwZ&xbmt&$L>ie`n;U@ z!HBBEDz`~a%G}ncGN7LeWB4TN6{{^fNo|FDT4*A;s;m`EIj=r&;1fTY*54+apsM;# zc*DbY+=MQc?Z-LG!29yNLg{r}L+a_YU?4*(T3yx(v;<}O$=%`I4ym-WqaJyAc@7uF zQGCPpyEqbMhs_7@h#@@liC|;IGvf4X}zYAz3Sd z{O_EE8wq?0WD+{}$Aw9#(BP?Zm0-;=)Dy57H;Yo3)Xz~yaD9@x5HCOCrGLyzP zM+!u*&Ol3Bf$EDUgjy6(etrSgWjxP6e%{QMBp4q2RvP1}pXc)T`d;=Sq*=OawJNMj zZoL#DRa|Z`4)Iug6TRNC46i-tkje;mYP9$v%_Axst*&bI*R3|POeB~|2nzP|;-AJd zt@`PLqgFoUBq(d*q9Y{IAfk7bYi#IDwWm3O0v%WNr8ik{wMwp4PSY&mgzXT%4ru6) z@xlCzA0*2OKx%+GmZD2vu8-1!4j0LEiIv4kA)33(jMU35dTBgTdauVe>o^&xw9bP|whSf+2#@mPJdjys8F)fu%NwNV}G z(Zof&>N-oT<3eJGt%j>!NN865@!G7%9}|q#u9U#)i0kEuyLhhl<|fXedZY=lTTRVaJIesf9qv(&AuLqwxJ|V3p-PFi2$a=kqbvl~uTG8CD zg8B;bOgkvTRmVkCzwPJYNu-%T@VtqF&W&plpxq~zmHQ)kg#TSUc_^+sjzhj$Un$-y zjvH$jNA+B1_uXWcOU;_ds@-bBCeT_{PoX8nSYCom;N7Dow9k-0`v9}mBjveJw{QX4 zfK99PH~q*#JH(aQA#UNOQ#6*6H$6qB~e3jg->oNrx6Z(-82;) z6%&g@&iW(_ngHm5na0VhID(_W#vAMv$I!6LX3o#$$q<)Z6?AU8ynJT=8?2bZ-zEpb z$FELH!if%(8yi$PgsZt}N{Cj7H?w2q@#`*r8lZbT{rHBmn2H_5$Aotmfst9Cry91l zXC(w0el9Eo$qkUC%fhBIc*vI^elutZ@LIx?34zL1_y)`WLHKts5`y^6;Gb8~rjiE* zPCtICH=1Z#J()^0$BX#j>I=i&d9QggekOjJ3{STMKW~+-I%ezCU1RkjHxterNY3Uh zyy};?`5jYUBDcF{Jijzc|t(Y-;&SeZ{dCzGyJ>&uYOy- z=J=t>gtpGrlXC1q7+w1gG|EpEbT$(%AaW7q}lR#=`o!vr)Fjjrz(=gzx z^V8Fu)j_M3ss~Ev^hi1$`qMxT9oC^c0GfbquQwNXT zF&?%N2aiwjP!k;O=DLY3^J4R2+-cffInYD&=$#?_g&g4uC*zm;809Gd!EsRYGh(>%R=CxP1yDN3%)7xznoE>%7=WtjbG6 zJdfPX7{>_fLEVA{Xje!?IE<@6b=5b~HxWUrZl#~@i@XA+^)He$k=!kEh!{_cv+*K=Ppwg^DsX(Auw!c zauJGXoiU#0@|2JAyQdQ_{5comm*Fqm?Ooye?(J?v<;?~Zmy{zdHJ)^^r(kj&v6I zC@(LY^%B`U(3mrdmBk>B_gtqIj=UwM$aMVk>Z-~*j7LwdU%So=xT#o9D|)?MEvUTJ zjMB1lr0~u_L-jRYo(;!}r4{TT#J_oz?<^SEsbX1$ zyC9@?%Sz=swU)+u+-~VaacMa(e?-zcUp3FkP13Sx8Db~y;L??ANY5=qem2h_tNxS5 z2XWS(y|$#bxAN@#^qT5WFLZbf;;GF~8^yX`zE&qcQeFw+aIRcL?TU;?yB&HwHI06+jqL_t(` za_;5k%0K9@RT>E)YTMq{E?1p7lF!u}Xw^vZwSw&oX)vACNRhn`hImacI`_x*D}w9b z@s9*Z2~a8A>(!+*4TAUTd$p^e358pUCmiRLfxUY^5A-+43qO#1h56&n_gyFta5YXs zl~#$x2MyNZyIb81@koQZ)Y$2=S+dT=b6}M4J8$RXjrubQuKKx^P3GY)gb^6!Xm?gs z<)jr*&#kfU!P7T8RESAevm)HMY^$diC6h3PfaRxp_JL7fJZxYX_DDH zzNn8;JyE{GUG+}!b!Js(h?h}|jLxPCH(8(5O8Hmm#8%~Y-*Ga8goI{IoTLRpZACQj zzoSRus>XAzK5O?*^+4@VtH+LJ60Kccov)U_tVH621Vkq|GM+aX^>!n~OO@-RaO$@; znYRhQ+JQNHpTUDry|p-c3Wn>88K$v8?Ozm#C*DfF3G7}f!BY&c%{eZ60sL$7lu@UY zsuijqY8768xbP#RmYR{hh?=hTG2eXBf~p91-mFt7IKVDnu9$^kbx=>b(miqJ%FG8w_o5+Oa}5ZlF?LOkL%ZO zpr@afvN$lE{o)iW9`%kcPC`>{C9YQ8;(676p2wtKOC^M~!t1Yni5+ilLsfG-@(OvmF_9|d zIIw7|PX&JA2vx6bIfOOqp1_rpd+>K}?LtacA(qiZa(mqs{J;PCZ7eQ(g8K2U;jjPG zf8|-x6s%re;jQq`r(+1=8N|h?YK{$8qRJ4fqm6K;~B`k}@q{H|TUjANf3<^-S`nq*u&ei-{dILeMLh7-LWd_*;O z7g^rX@u|qmkxD)_z>tuzP^5hET?a)tI&SdUCm&+x-oxk_<+f^hF;!G~oviSyxpf6^ zZ{2}wx4Ti4pM%S%KgE{!_9KeAz0-M7_JiG9@yVB0T>Z?Y$!)LWQ$6x!Hjh^;>*=zc zuB*QWacOVkU9QaAoFJzsZ|hH?QEmU3)Pw$qOK19r(}x>6hrC zTKZKhOK|41Pq6Rf!{}s3m7QD2_Cvko5~3H1Ea@?PJ<>c}4UPjx`t@C3d7gD_8!pwg zBbRL{jcv)9cV|1VzjzKm|Ns6PP1K|P%(_+h;Go;(EBa7U$xa-&6wM%e}&U(dL9R-}E!$5l5;0 zGN(6%^S`5AeA8;OpWhOGv=Syit)l9zaVocs6S%k`e>r~{`t$R@E1qIo?kZcsB%7ID zI{}{1uCkDyj&LYkJ+=f?2?e@HrSj2AsGQ|1{Jn3F7W4OfXa75e8xxBRAd zALIY2FVfHNH{1Kr(2%<*EyG&zTzC*a+&G!rJw633DX_hWm>m;$>Sl?`>)*>8JuIcL-}LG;j8jg{~66oo61k{ z+$2POEMW>)SDs8GAzSH1n|1;;iIsKLBh7& z6o8AlQbx6PFT9Q%Y7bDyJWlmjhYq}tv%FZ8K;6?_Ek(G*)zjRp4D>a(Au%HzL){&? zMHOs=V~g;IKiq^h<&9)KmAJQ83Oc>3AR=;Y+&A}>)+G=7O8o{>vm!~^}!t<-ox1?<-@;&fpt%9rGE zt4f{1{3azq9{Rr>e)JgUCCIjJUW}t2(qo@~j==Fhul2Pxj=LVtZPYOAWy&pzwb z?{7vc`;w0SwQlz!DDYcd)k=;uZs@#oN=k|oh;=SnKjo(mTY|Gpc}ru5j%-Mkot$9k z7j!llSsV-Z`7gxDZR4s>(#oc+^WCc|diV%Gugz<)G#sX$E?4i5`OTms6mDU@=y$zZIt2vd2fu@f zE$xhWydD47!ABZxTT*A!JxT1!>hOSuB*kWt|0={%r}K>Q~HI$+Q|)k8M0$FrtIVHpD;fim%DMJlK$CFXpUsxoW*-7!dd#dwUglWilM&IVfSeMEJ%QM zB_J+S`$kF8N^SvWqlkl7_&^(P`6lA&SAGQARKfrLfBXX?Q;LutORIUGA4PIn0oD{0 zatmhyi>Y_Fl|t4CEyJ|myoxht&r|44!WhpK)lrvg9xdVJ7ZjlG>KCYNq`BHPPji6e zL2xoHE@A-Nw(rBT&97qZDr(`Vy3E<{7>YAvaP{&nl&*XRD@qnqb66H8X+UE)SDIda z?RU}BQb|o9)TO*>1BJU-4z2^dh}Xx9W|I^iF5-)e*HOwX-JYRN3IqdAfcC24%!c>i zELWr8EQvGsNml4o&W`%JTc{8F8lHG+1BR&ox4Pvvg~Co;tZu~fFZ`G{?K83W^UF9x zVZMzOs=K)k=V*=XpZ?)<_>;ew#J=};;j=F;BIidhx!dFZ&f~%H^iqaVNGGBg z1cx9s8&~K1uudJ2gq^6x)X?&ySMl?|`5Uy4FQy@tcpA~69^#fe*sx(Ox*Klbt@l5| z@(r(36%n3#9>Et$cg}6m zam3TbOU>LhIGjCs9${=Vt7(ODoU8mC+ccvT6+qR<6Q7`SYLQ@WDOU z|H%pb(eJ&2pH0NzqeB-c+^%8=9nEAM*i{|xQzdl_;}$#cq@<)NwRLUm#MQy8qZck3 zKxF1ygMkJKH&76?>ZuKGS{0IWtFat7Y}LmEcSnfQWRRuVO|$|C_#7c-?HLVci)1W16E;GlYg*z1W@IvOKCE&62m@0>hmPbjY@cC8Bw04 zfX$r&YT(crb(wkBcDPDV&hj^yv(XofcXwGiQ0k&66jEO@wMsN`6;{STq$9W@o#&w4 z1$j;9)A00i^!}QkJzWaI zF+Tdg6-RC^I$a?D7%Y35zn%ue`~)k8ywyY|fxM0wmnBXv@)2bgg^RDTPKJNniYHgD zC7fzPL00I$YyWC#HtErO=>JrHv(aNX%!Q}<8@=|eJe#Q@rG~o1RVMy1SVncUTT;p+ zjndqrxH=-CHZFly{aaevVs{kn^UpuW<6J0}_Mua!PPx8t36H}`FxF~yDYaYm_tUr@ z7lu}^UhU8|9CQg=3l0*9Z{ED=79@&_if9|59%s&+L0MTD3JVL}#cVA^XysgRb8~4o zfptdeM%^MQ@x9C=u&wNWbz!@Tiy_K;-MV#XZf?f4YqUI^lI+r}e@Dt&pgZH9n~mawwxCWXnm=bYPVQW zgX3{nwlbT787;Kc$KsFvbRAV$6=5=N9LrYFd@n2Ur)N%5P;12h`d5F6jZdt?M< zw|^;q_xIPJqPUP}*3Mxm)m|lxW#Y|u4{*lRjMskfBh+#A>GLzRo;Ns-AH4h|UV8pH zs%RTTQN;@6E>3)83}#*Qjup^A%4({n`_(VDA|kIG-}~We3hqbo?#=^9$}XlQ$94Ee zKmIZP{;dzFTR9RPO|>|C_De*kWTO0u$MAT0JkD4DEe)?wCoiore(}W_3`Hh78o4;B z6B17NdRWA*0VZS=a+e?mdntgdf9VG(LJ!F=y#VhNd z#A5|XsJd{2`g_@F@YqckEeAdS@(=O+6SSg7C%EFpLp#B6fXIjLc0{G-;va9MmKSye zA0It}^&X@ejfj*Lp3cQg*mC%d+-xH{@nMmjC!Cy-o6b7&hy+og}jw(R^iCsy-mxK75KA1 z`VlHm9m0+ej^pLu{VATJ3c>fb{8wCSouDel%^a*GjClglL-TJ2fax+RT>2PJoqe0D z4j1qTKm8exMup*nUGE@i#Sig#S%wov&sH^~eC-R|ZR)~lcB0*5;neY6!E)&5ajHc8 z@b_NeYIzQGn0X;~MwSop;rbm4rQs1VC|kJ<$7t{LL@;ZFw3j3pamDXR!25^f_7b&e=wV@$#bvU-I4) zpgr0&fzes$aH*TrYBd)o#1C_ppTRYMe|{DwKR;gnIDR-5Uw+o7D6RzNR9T^1%zlo} zFF@%aCdpFask9cR zJk=JoU?9O*tJZ>d`}S@3RKFmtMsl_YVKhpMkye`X^YdL=`4?~zNAyV$mk=!+wF<3; z4r$g<9?D+=vySx1DZaah!9IF|M>rm}W4$M4^K^=;LK>%vv!=$|Xzm;!5d}`kbuFy{ zj??0sW+U9}KoytNqiIR6l!K})v+dx3*Vq$|KlvAb#?{L%uC@-Mw4{{kMJC+xdonN2 z>3me17)n7bB9hi>QW8*8Rf!Rv_bubO%-vgmiHjYR_!s}|pHclyv|IHV)Zy^lY;MyI z;p&yEh)m4F5?)Yv61a#(@-IP2;|8n=Aod0tLhMw*&h zk-_bd(SZ(JtEArIG8(E#r=bsCglcSPqA|gABrF=oHO|E1GjdU0T);}NfqS~ccvytJ z*>O0}l=qO1zNEaI`nlV2v$~$NlyS8>0kzdP*r|u3thB_fwpqQNncstbnf8_8JAFL5(a4qW zBJR3GbH|~RJ22zO;&Gx#D&eoLuIBP{GKzCE**>~ZSKo>p@;aGuTN`URC;`Pw3b=A} z_kj3dn9ZKbXzy%mq&`hfB8!UIse-#ijR=oQMtYj=FjS$Qmg_2(t)MEPL0q_Woozb@ zD=G@nQg<8eoG_JEl)DudgExC_59d48mUzaz{&qFSx$9Mw$M!;Aw{>*W^m!Kbz>eX{ zMOrqcF7A~)yWi8%fa_KD$SGQif~*u?BIHEBsS8WWN}OI+Z*nrTp&Jca;m}HnI({1* zv|XqUTLXuj;wVfj(^{!kr!L`I@zkN~X9BbQHPC24v4O_&GR_3Q&0kLov*-Q%{AvB~ z{`52aIoQ}m9_s_ywYWatIHa`tnK0~6?|-*=CP0f{8aw=XYjBgFe)n>U=g-ez*i&gO zKYu(wOp6u7jsfT~qvc!|*QpZ=k{b1sRjcfjTi8T|vL#x8TgjZ#G^iojHHGIA4a{p&oyo*VTDk$19eS z{+rXQ#g*R-7)AgXB4Q@v6;Q%sq?fjOaHJ>6QT{y z4E1CxU*>52o7>K1g)r4{er~ESoAY?cKX>IxK4|5_bLs$8T|KS@%ijO(%3gFEvmX+#xsuQ1C-Gy6P1iA3#io+_ z`5T-Z&44qN;t{{7E~wgv5Dd1ZAb#o>tp3f!Z)Q0Ju{1bJBmP?%=v!gdnOi(P<|4qStS6Dk;{vI{?B;@An&0{P_6at^f1)iGpc)t6vN9Lq|B|Z($bhhbz48!nG|j zs10d6RGvXTE3N#MMo<0ZB;>2#wf=R0Ce&p`QtBWRxLBK;5VfA# zPdCk+bM{4kDSy!*nj}~c_V>80uJklojHCbPa6j5<}I#=vznwSbF)6>()XY!9L zmg8YO7oJ4g$N;}^8OU6woZ@zLc3}}MUB)CNQFR~9C38i;ml|E-XmVP+ zP!go%q-IYlhB_EGE{Q5@XqjlJuLpfRv#r&B9wlVmVEyAopT(?ya-l5T`@{a3>J)gU zxx1$yaok#xh7hextIepaRp$MDyadTJ<}WHN<-cq~=k}1kDk#SbTKppaCV8AAfx9=ZEekaH>b0d__AfkV$un_og_-HJtryNt ze0=l{I;l@SEj`24o7wOcJeARm{>J64EbdVrw*2*N zyjD8%*Snm-w5R9m_4kVFkFPj#@(ae7zlHnb*t?$QES|x(Zwoj0`VPj?w|?#j2Wb<{ z7RMjoVCm_HueiZ)e;k7~wGhMjQ{j5|@xTT6{s^w6w>&IAzrXoeQvbI<9)Y=WN4QAu z^#E7h7jehWX-8n6A#`*RRT#=tx-)o0Pvvdx)o}9TWBCUC>|5c6hu+P9Harz>ZmxLp z*Dr{Z()rUE9IL|;)Fix_Q0V1vu{`>f{$6+m;rqWWt>Ixb`{PXK=HaR^wKvlMB%#yj zGB|qraq@r9mWN>K7lh-7p?C4c;sxPY-j+sBd$;@zSNZE*J!{D6NV{yp77(%KfakUw{d=VFh4iNc~{gzsh>GAxfZSg^P@0Cpt0g&QLbf%xG~=23M8`X~w&s!UVTNG{8~# z>8JTz5$`e2tBiV|7#((7r4uw&EWvx6mnEE%atdydY^0s-txiv8JcW|uAMBxakMk&9 zy3{GO*MKWaI#RKsF<9r;vsz>oj^BZ{givy@?ymT`1<(L=06B z34f`7>EVUK4-Qgu$%QLOqME%#&eT8Jvm4dC*<4C37L_NDVb8u#dCi*U(8EWtXZKEA zzFCVL9yyT!;Z_1k!^1mPYyuJQ&z?MrUvJyZk0cZo@=~Uotaz2Xk!lIweCr)|X>Zwz z5}I=F#P)aJ;!&G4ZqG&F{k`ww#Fg9J_Q|6aN(~~OK(cWByvdi!rlI;gc5Hhax9Ym6 zFS!iORj2XBJMUs3A_1jT1t+If4^8B*T{(+gyLO|Yy_<1MQGew;cJ4TUkwuBTFfodQ zAMVFFns-h~O-E{S(u~Hua2%&oSR)s{m(Cu?uea{OPX*mxt1UY@Imks0j~^Y}{c9XNc?r2irMzsz$<_n&ZyLAR-c&A}S@MwY z2tMJZyImiiKvHHtveT$&UIMf_vOE3w^5{YA+;sp=gWZyYIY#3p6KOQd-Q5ZB%{4wxrIpx1$w% zS^v&lzK*Qyd`>dsaP*^nICj2?yHVNr;>5@JGv=TX53;$wn_ zAAT^7KkQ!b51Q^?Fdt=@@blN1M+sZ7SkUhGsNp^cJg+RI;?FZ2qxP>pSU(vOkwy?5 z-B9atxQCt(lGj(2#-qU}1CYOS<)yghzKV7{SHAP{7hcw{s86!-$ne$JZhm^&PvPco z@Ahp^3Fi9gTe!>?PyJrdDZc;b$IJYc#-G;zZt?wb6<^;93%*-?`Ahbae3iiCW7-*+ zqyQZ&HF)fo)rLGO9Eb=0v!F|awq-li*G2*B81<=sf+4EE+Wb;KjvwBE%WYwJ{iSDc z?&v4DeB(9>N>^d|vSQr2dY%SXCa`M5W~?pA!LdYC3f7vU#A`*WVfsX*J|!_;=rOLbO_*hRg;y_D0Rrv{Iw)-B@z%8KCrJuvU? zn~-J90iOjoK8!2p&tixI+%O0D3p}g6>B%+j#;$;Lv^L_x7bnm;9D|aTPon4QF}(HG z4*d9E{aXtEF-Ye@`p*5kaIvZa!+p`XNv#JHRLA!zFRT6j>l=CI+^bMlvG0r691+}V z9r3->+e*FIHPoBPye^$a#i~+neZ;YGvQmx=;>&ZF5R;gSuI74Nz21bV&PzCV@;H_( zT}xfYUfg55kDzwNY7|gMxF%hbT={*F3hQoW^UP}^HD|0^S%$;MF5|`}-r8-d=OxQ@ zT)%P|D{0W9AS2P?M+}k1^Wm#jEv2Az8c%F^4!PvtVE;CpzVHPyBa3nM{28=R7|h69 zfue$Z;-yBePIC^%%-36;3z;<7-;T2s;1(07>T8!!U0R5;oJ3EJ9nXkgI`<`dCa4yW zle*78KS@=EZAjyJ|Av~Y_+qS$I}FqmLSrFk&R#|C=BJ&Z0{;=9`J!{bc&eWq+jyQ_ z8ch1RiX4k`)QVG*OM^XBS0*<$8SXCE-n!k4A>!HH7|RQqm(Vp9jSOnc$((FvT}VK0 zYaK5G*YHAYiR;`RRR=XigF}`Tko>!T?mTyExY|tvH0Lf=;iYver?%{_UOkJ;JRcuE z9>Koi9Det?rTF;M(-=wFgddXMSI(Zom0K;mJ)ekmk3YddUaO!Q6sB@=LbC=7saDc? zXPw`Zxo!fQY3$~Wk5Y3ym?2G`(OxIO*xEROlj_Ea3v zEa!(|`S{bApVIi_2Gjb}1mA<{g5myee|~=d;Jd-RSA0J&RKEJDHf!;P!~{V;)VCiG z!)-Qz7UqvXTfCs3r3?B8zpb3)uXZc}+V2;PAN-zgK9+8w@s&>am=Jwe`cS#3bgcXo z$I|I}SDKKY39Fh2i*9oUN8gsWy&G(QT=Vm%n=MaEhpuh%=#mgm*t?7`h+Jq7v$Y?=MDy^|m z&+jM)@4l{fUJOh{EiVBcJ$DTos48y}H9bVquKC5YCvfBD81f6Vas1dR7+P`-jj-IYUR%!~4oH~goC_qzLms_#40o)K67UDf!k#tFpCE zVzRd$y%g#tz{@a9dKPsTaw4^eM+(9zz)Vo(S{>EGWt8MoC+`JZ;-I{$d?hc-kc)2Oh(0H;RtR|HoG1@F&O7Gr$?kLt!SG$f+>i+D^-G zs`J-)+2|8ToPp!aYZR= z+J?C5FI}aafwJavKJD;(RIIa7&;`t~u}ExuiaOD$UahxxfC3zky-@2*deS0Za_mIK z(kBoz+Ku+621F*O;n__^Xsxef88;!5)(cA_$8m+4YItvx0`#LRTaRG<^=ggYdOD~p zJvoQkZ8E91`W9DNd4rL<%SSltN#iBLoC01Xn zeg89Lt$GF*&zwU;Z5#5E1~9;*DA7DN6V9VuBNAxUiO%9A3~L+SE)43zjPjR|Fv#68 z9nY|{&GM7btf%~?%hXn#6;}eboYL#3fk=Iho!wKI3Dg$P-zO=JocYFnDdZ$5q&M^F7kv#r)yUV2(Qy(esWgE!SZ#1{G)Vp;b?g1X>s(F^XF$_^0)9{9DU3A!}aZl zqwk=z_;bY*ouW+>2EE%ZgTb-%_B|UM#R>A;(ph}__QzA0^0YY0L-F)&@$Z+f!YzIf z&TMIoUct9XlFC@$!p)zrAD+Qd_-y_Pzh7F5V?5Be;coAG%K7v0$5)u;Z}}Mv|I^~B zPm>c2y&J#vt)JX%aLnKG@_$==`I(z5p5df;7AKhA{0){pr{j5}vZICkS9!_JmCn-7 z_qiYe+JMF-a8;4IK^yAoX>fx!$$0jOyPC+RB6n%ch=|O>;=&>%QZH;c)zvJDj>l~p zU5KFSH4OIP>c#V@ypx6%1zFU=6U!~*G_=>>KvLlnYN1Htt<4(5aC%I;_1XcmY+;=7w2VS&)%I>DU*rc{mC=9@#UxZ z`CI$&m;dws;*`rT;%aIZkESfrIh|!|kkj5nV>5kRoovL3hEr&4q2hiXfKN_Lr+Hi9Cr_d3)&S4kmtlywM5SdSYY{IS@HmW|=+?#9hjk)TE-@v?nOxtpWf$_w zsrGMaHcssNZ}{MRFaGM^{A(1Kmf-CjyAVVD=s$e<8Pr}qjV*6~jP=jG%85xXK0f#^ zb#9O2rC0udy8xjMaq5b!m&e2Z)&7f0ho*FCuKn{fd$E`5-!@SNWgHDe{Oy1EzY$aV z9RB5>d>?f;Z{kLEE585aONbb_hJ?kO=+Tm2BK2t%B*kL)jva{2E5Ywj1)sS`z)l0@ zp6c-2D*U22nn%yV4jOiuh{?h4|G`FdvM&6G|FQ)?`1Ah>FFsyO)qiX!>?77wwPjht z2(tF?#+554(EIzGIP=&}diN+*aPdeDCuiQ0z>KV%5UdVZKMBXui>h}CfqKuN@_wCf zmeY|A={VJZVuPvT>DIUgSsQ2+*I@cPZ-r}MQrLqyr4u}R&IZE|+n;wZuEo1ooM4*Z zx6)dAgQutHw5QQ);TAs#Ya!qFgQf8KV-%2|d+`0Vy`T5h&H~w7dgZ^`U2k9~6R7SJWrf>b^<|^a4^6>ln^9$1G z5A&y)>)miuxZ&pB`A024KXP~aHaAVmaJTd<;A(E z&*I8e*cwdI5W^rZ7$ql`@RCsi+G&8}1eIJ*Mz6&m{^3uM8ZpShtrSm2rSn|qBCMw6 zLe5>0nYa?m);z)0)r&ZO=nyJ$IM_*l^4ez*mYjj?{9^p@^;hx9iStO+fYw9Hg11_+ zde!6HV$Db9>#yLzp-;I=$<<1p8*SsNb=lf=Jbx95XJ7s?(lT?o3Ot6#SFhIMqZ61U zLVTr86-^x{_Ylh0JcTD)dJvJdgx2}8(J;}2jT<-dLR>7(omb$6=Qg6FZ=6RD)*va8 zt6yE62umrW!I)y4IdK~~<;(HHi<@~SwU7D?Gw>HbdjYG9bT*kCO8E4a%EQp3;|ESi ziAunxjT?BdEs?8>o4DE^>2!Lpj~xVeLhu-mpEP#$(t6}_l;@(Lz~a5rr?V zNKn1phD|SG|V@mw;EyRfMgm94-(|LH$LK~6GT4OJr2H-oFFPd~E>6-5bLtsdg7+;D7oa;-bU z;Er!R0D8eBI&R|5U9sLi`@+*0q(1xfx&LG0FHEZ#73)Sr;7T~cp z%V?Bf0s|9qc=CzWC@rA%%rzU3)ia3=YeM`Z7axd!K?DQensf=@#o0yJ`20E~-E8Oa zrscG(2kO&ahsca2E=2-YpI`aG%QTvl$}{+D@%*MfwD(70{l+H|Ki-2i%{@phTg8c0 z`XfA#A3#=ZNoTfM*5xan!ZU4s7~`4o6@}>-ppNfNFFr#xb;&gT!xibMRQ&Nz{{&B# z>v#_EXaDkF;aY7Ua&w9i_0$kz;;XUx@%7XQz}mw0V;WH`M-z^vx=F&ZglKij8bl>L zOVyICWJpL>xPJ1pj$hwe^)OXWUOt|XtyO8;3Y8i>84yr9f5&eFg82o%g=^3+`0bBl zwAu4sa4n8KXM?LS`5PRIE86Usio!*w_@dQ#@x(6J`7c+_25UChK|g)V1#y@y-fVG# zX=h94G6>}n3|E+F70ot5u$6Xc9?&Gp1PrTFK|Bn;o<@(}EuQ(=_iXWI!^_eszBxY( z^P5jRi=*_SM>OlFa#bA{ZQ8XF?ebF@TYIp4>}jy=Z~j% z#hnY5XjVHFeQNI#EEQL@i%yll;%HaOCQfs~3i|8YkEb6m^AD!6IR58caf0xJ-v-0) zuXoX_G8RqN$5}lWUbZ+O{mr7?a5Z@L6fC*9!WA}G96wGLZ#FoVUUAILh$j?6@`wEW z@n^)d#0z*XSPREAQJPhID+?|^GD^dnL&!1B8}!?6SK`R$=dkLT=diRWTigmAod{7y zf;j3jrKjCN)&(zIx`ky=Jc*Jexl^Rr>g>L@>vf^P#UT%gp%)g)U;Z=j(>FaV*yEUotKyn7 zzS&d$O5+J-AsU#!_~C`Ij#ALJysR8Tfn+&za=dUptOw!;-wDc}hsPt2UKf***qB|B z>D%DD_YlBoUVFJt6DR6i7E>^$;QMg5bJ*gi-d%kZULJA|f@n7v#MkmycrZ+UF5FLt z@OJc1*HcUD2o=(F$}>cwSJuQ&I$GIsh^GW!FQSXbgsxt=x*%jjKpZ6RkMPjXU&nmG z_kC5HP+ASJIy0?-$OLH(z8ZXV)I;I2x>a1v-8Jfx{x&$B8P@=zKwiI3G}?e`LWYjQ zNGGfYWzj6*T70&;_D!T;f}@N&s4P{+Y7?SU`gc{XqEX@U(`3_DF~5mrYdEX@N>8!cwCEL0Drc3wcBHfmB`1^CYS-U%r}`?| z)OT6^)g)hZiU*=y@0tY5ilDx~X-+iCJ#2ei&bx32dIm49iObWqM8t ze)6Z~9PlMTg>HXp@KxUY=lm&%3O5r#g_`)LSYn{^b@An?|4cN47KSTb z+a`CSQU2nNXNbk{Aq|A#2z2=?k{>_eBc6Dv70;tX-*WzN&u5A@!Vx}7uXw`W;YR@K zY^?n#l`AL1k?E91xLcU>u`KyCnx}abimQ}_Z&CfUOwlkM>d_^Fh?@xW%9B8dgG7Cq zBsSdL1cW%Ly*jQd9pkz3P+Wb}nV>5Cz53_jU)$-u%osw;Yww1>E@r)*CVFktumHC zsTFps$D&_9E$Wy6t$5n0Q5;MA^`K=(SMYH-T`T6NoJ62s6y)t;BiQ+e{j2~6mELeb6-O#{u-#LdjhIsXdm%yT{WvDjfgh6eGQ@qHg!{Ovs=aBw#5l?~l zaXzTRXh!TAu$aF;bVisAtR4I<}&eDEeXt^IAhPUDg zca^c|)GD0>4Sj1uB)avj_}2c7?r$2+#uMQ!T12C5-z!YQvwkXDm9vB@#S`s8ei^K< z`%`#}Uj0O`=uw^41W~&T5~$^`Nt2$UT~6`+G=JUcH2nNHi$*!sV+qS@&o)sIA5^zh z#%?E^@r+mYbcz2v__LrR9LAhGgT1&>S%q$D7f8*_K?Y4_H*t%DiVt{GpE`M|Nus&A z#i=^Wlr*xrex)J*E5O=2Dm=o{cAA)Zx?4C8iaV-q4`6KS_S z6GPo?Xm0JL_J9ne@}g5Sx728Llwk!l-91QizEr;!mxBD9OmufN(`ZQ_QZurszDuT* zsX>J2v-1k`c}u7p4NV=+fJat3x2oD&(LFGP?A!vx^FVMt=^hU!e))MA9c0`VX*5`j zwA3WDw>DEl#3)UK=hF%fO?lTgAuKA6=CCs`Kw}>5o!v-H&!%REcr@16Vvrgaa&x&d z6E=dnhDKh#OyJ5zCVD!VXOGA0#YvH9tZSflhA_s>p$gwYnyqd}TyiRMsePh@Jn85k zqS`I#V2+?h58}tEgvw=PsE?|-+L6FZbU7IbXd@50`^jsX=Z>L}(a1c*X#k~wa0h7e zxS0k~l2WpeolbMkjdjkHcXm!LSNEyni{%?0lSsNV(MSHZv=2~yT)I1d-qO?zD(v9d z^dd|Q_Mn04z@p<)k(Zs0t`M)&S#J_z77=bE`4@#e)`dxGW~rwp4;e?vqzUtOZXxwk z!$uZ)63-oq+J<^e^3rJ`wW|#Ecc7`2bs@#$bsM!=4319ltb9JAX-dAnj`&5zx;ob1 z)q$3_PM)96LRwrb+FBYJ7syv#m>fcFeG_77pd}+?vC~M=MSX|qyo8pjx=OR;Bh-JR zx;nD~NE)4c{ppm>z;|18{ z#5k6H6YJk3^^oTwiu|jqYsMnByZpQ?baREVqpJtW=~=w=8%?butgCEGg>1hQqy5a2 z{Q}L|XYwq2Cu!;JA4aff!eyH}k1g=v7*YLx^E4LTZx^wfYPr$I=9v{vf$t~}*50Lulxo#)s5kLc0rq@09G z{UlsSfR^x~Rax;st5-&+k@P5dZm@n+PYF*tvLL7OH9<iKObZ_zPdw;)3*-nMuc1)CcD!>@jYz573;u*Pj0 z4#qpTZ^g$a&VqLcQCoE$Ti@P+8!erP;vo9jo}GCA!;jhMcmbjHHs0C34X4gurJ$LJ z3ujK^-FM%`&8B`N5$jL(yn~&Gj&Tcll!In9-rc$#XRcHsii6DMPd~y|YA7UAfTeRyxzL3HqDWN&{L_Pp~pj(l;219dX$&V7crw(rEP`WC9d z8pfdm`>^N0Cm5!n+1pr)?eA>CiL=*{oDhramyY7Cw|AnhvzJ2G2#ukSXpG{5)m792ixfsGlcx_Sm%x9&uBTQ@C1MdHZ&+p&}QNsZd* zPy^n1dn-(dt zhd;!-yWU4@CymcU4&wdyw&8x<}FG|Agvq$hI zd0p4sL0%7G|DIhq_{lMh#8A(0Lk-@3>rI@wbek3qV`-@5FyX$BdQN;sSyv9cw-q0K zc7_c&34OQD}_U=x!^-kgrFJ~Uuvkf2fTz(8KDYn#~#~W{M z#r67Dj8iA@=i>Fg579ru!J(rb+qP}NXH=D!m>7>6*DjDpTToTs!%5gUjvU;Hy&rwX zy1ED>{q@c`%8B#W5l$WD=UBeG$iMoIF~oC{^TFRTJc6My*1ziOtee|#{z@&aAx7i; znNRTc+q=+8oqB`R$G)Fohd=+)@w&U}EbH}FT)ovmK`;(S4jshq-TTl&TJChV)9BAu zw!2F-_!EcQG=8&X%XZvoXr-FOaD1|F7u)Y)PG;gT&OT+^yIZLZWTloyUB$P1}5+ds?zEwAwz?Zo*H;Hz)G;t zPv07VH4xc=t29A4_r~(K7iu^Q1H)M~iC+Cgqv(}jB{~(RfjB5wS=xp2`?p8=bk3s9 zPp};n?0u?e7)bSYz#}`ukzD`z{*mzicYK3dRMuB(`YpsgHKHotc*po z>ao$Rr~LG@cC7T@blTNkRmLh)D^I;!8H--kb#tQkn?|$0|1vrj`kX#jF^`nwk#lkJ zDcJDLv($Fb#Z|Ip)Ug_aO)q>8J!9cmT2aia$ph52nu?f=Y_8npA)0Y>m-TS9s2Eu> z;dm*6H#@l^RI;Q98C=ndO-SKNVj&8$xqAKdi^yJe2c;!NT%qJ(G7;;v859yucEmbF z(?~{Ub|G~?FUHdwpGV2^VXA#winy>bL{q?sh)qW^SBEoVoOeFYyAv zXgG=pH;UQ>UZXD9XsTMvr=`D$h^INYE~RR?Vl1XXiRk4gzJiGa2^m1Wp+0r7!L}cNW*Lb5hJ{3!f zmN4xE3QCr7<$4+NlcVtLi?7fyO#~{+OQ?T2i-JN1;6v;3VAV&+k_=^ z1u8C)I(jovAYO+*!&S~@$Sf;U_6IoAsuYy1+S*N570d-uqZuv4lrq((wK7vom1%<`)$rjd2T0mXnqW9$iGt7jp3}tJibH$A&EN1xk?`w`vQu(2g&O)q$h`C^Y>oGaCj_=i;IxU2}=fd z0aDXTP{5sw4VzxV67qU^MLDf@O%gxe9iU;IlENYkq=r+2NeSyrG0%o3;o0XmqlY@9 zMR(LN&rWjHJ(hVcA+53NHX)^$#yyG{KQj$4evjo#qdG-PN+4y^G2B{ApwXFpt`1LZ zV7n_GKz4Z#{k#-Xfw)D(SVT=W z;nB20$udkyG8$R5bQooSN)%D02 zo+(VtM}Af&1@Li{(Ar@c>wHSWIQhrEfjb~eh~Fs7DJG38-sJZZnirqofVYejjAi8& zZnb~xHJ!&#z>-Xs9~XJmkMVI&_oxPgU?*+gCYUH6dk-S?sBj3v{i?p_!Z%2>@}Dd2 zSB2YG3D?Tc%JSPpo6+RwpOvTi*|+h*{QYUaO+2xq8=})__tR|e-?XQn7XQ2Gux~x( zz71vjDC*>bj&O)^?wS&LXpGcI#JPvNfT!@goExot!D}OG@cm$Y zAYE`6BRf1TANm>wx|XC+b9cc}8Ve>I2Pp){;T;OoLuoDU-EbHfs%&J=OgNT#D7hbw zFUWiK<)OS5!t0qyeRSUk&cpE9kH0Q%Ni&4GyLrTrQ1En_$%E-;vd^*J;<}GeIv3j) zS#Si@Jp_qi{<`V`Vt^c@y4VEb!J%IWuAY8gyT(RZT(FDmAWZ%7p};uz;c^Pr_45>YdF zeGj@kg!xxM^dN#W>X`f(Ce#GeG4%K8)$;Ctq!_+6b$6|TLzwrCP|4oPA3txYj z|NS?O1q;wZT#VB!Orw#zdC$?vnQNxMwmUR9c|(?Bd++W=qp?Clfo^zXn(2b@ z-b16D8@ydQ{;@&c4|giegX+PtxXi?~0Z7w@G-S-y==}nM!JG5x=u{|0Bx#=zr4E1L z=V9$}#d{a7Mw{hh--0r`6I`VXIep6cygZM){~C|(4w?3GVED%s#k6n{U z)^HB`e;a5u+Uyym(fq%P=WKb+##4Vhdlx>z@(JP?gym1`k2@C}OK(qq8vnb&4Z^u! zIzNox*85zz`|EGYPjIopEi}fu1}l|O8dq%qb86-E z%>mG$ws+!OaQuqH7wC3*)B; z?{2|a;d0`a+Kg)l#9wt=euArZVGdlL-bd+do*W%ULt`7_)2P!lQMT7+ zcWT!XTFgxg1Zu$2w>Zov%~r?p3?|{;%c+5>ad}TK<|r=$Mn*^R#{V63(pp{;@!@?X zo)hI6X&(M(WN+Iy1lVBQE1&Pe=Enio;jui1c$u(|no82BsUl*01eG^y+_~mVp22qf z7C6Qmy)%gFs%k_gX7HRiwT*N%p}M|}=ed=H*eJw;f~mfxF-A|DxGTOtp5>)*Ie(vIuq~~^l~zBcv$XoQ zxOz8Oia(oEI>r0WeaC^X8wVDsg@cWW4X3k(x8Q&IOWbZ9#nNTvPVL%-(1T%0>`7|px{m&XBjVuS_^T05vRE1b7VJ)!!$2Kum7lLjle zGAd&gC#jWV`{$QvW_=avE}X{Sy}6C*yoONBi-WOLr#3>PI=Znu)ZKwYyWhvLFR$}r zU?Cc7uVN3&t)-&}#l2e6w=rRu2W*$LmX8cjt_U@!~MH(@{3EzE9FJu)CAXOOs!f!G6bgq zeb<*v^I{=y-|=mJ+!CLp7Esm>P3N-w{6Fir6fTuyQbi_>5$bpS@sy*!%_*II>uKMX z#^CzD{qMo}3X`)q_VmLsq21z|z^tdGbuZuj`Hll$GY%|BfR?bTf#*(NFV3Gji;R+` zSiN+K6CN&5AgJq{L!WI`j}9Eg$x|oL zyC|N5aWv{~RZ(jL?XP!t;>^dNP$gRnTDgMR-_nIIj-SHK>($i05Q!_NKg0Gn-lKlv z0TiuRjudJNkd-l+zwYm9!rR++BdzQ)Ot#*_$#XSWzv(GlKXaVAgffB7DjX&bk8jw3 zu6UkUsBJ<*!t*hhsnw8Es1|1%IknqfMXm7fKy;Su#o|c31!X>zH`aHFk ztU%;YGsdWbEI&Wnb>dovjp9n~_-H3pmmNcX*=juX_-YJNP2WxGf?m1mF(jDaIY+^$ z!?hKVC~8D$xpoOz#TAGTAHW;G_&HABYQ>tzSK!>C9oR~NYhW@0ovrmad-gO=ojOgO z)14UU>Ec7o~A!~1c7>fBnX{Ua|o4J~ywXrzk3h_F#yyl@fcFWx{~JN1oI zIpMKSKfytWe3F=vI#PDb$HmoVcr-wd3%Wx!CS1iG; z^PgeIu8)ydybP(yaqj%_jB~)>m^!mCMBQMj^WwBHc=7Zp)KK4gGj)iE#bsbcX}(vd z2(qR229BNj3{CZ2Se%iMCpWC4s>LwsDep$biWOK))tNeI<5>V*7!JYM!2#aB70-l$ zV4AtUmDbYu--Ge}Vg7fEHsgNv)c2m2O_s&wKUiRktfA zb#iCVo^__EWyD76*km11R`jHvOais721}@wPV4K}uTQC4tgWqe!n#zJDNLr=wcDq3 z!lSyHYB5793UA)L>EKHJnFRd0x;m#zSotcA@D=?^TT@d*J@u{5P>13jIB>w>AxnP3 z+0T2u&&4;3H&=MDEbkR>KCmp#{mRJVJ#2o;XCbieh1Y!G%qKsCqquT&(ddsiR~)6c zcn=!KpWgp2*nX!l%i~`0{Aup@z92Pr%-z9@;(%XB6;{Rhi*e#qC6cK+>baL+$JoJ} z7-$|s;$$cKDI9ck^Ek#>FXD0vv2k@8I%=-q>JZhIQB_(-6cx==D872(OC1077_!!E z!1{8k%A)GK45|pbP5rXFFIM4?{`hAYzWE6*SJq-_dOVJt-j5$V@g(wT{DB8uReBDm zz8(Y;Ds3g%_DGZfw5X-5?K$UvuFWzD`prBe&fuzMzxNwy_7*v1Q zO?a)nqlnJrR{z=!_{Tqb32*-0-y<%g7*7<&p*J!aiPY_Vr+<_yn9@;w1huWT$V$mT z3s-k;+_-?Nr@lbTPz-+O2b+*g|FUvg+Y0Z)N7QxPLsf!Bxru13X~N^h+4%q2d(R-d zlIza%puG1M<$yxLn?^gdcT|&XHbqiwI{6ui(u8J4F+01f*f0BK_QTF-V`CM&F&n!x zF)NX3iZYa_re{-Z2ee0{frj^{fC9>U@Av=9`%cxx!+V87chiVO0CLx3*;n~P6ar2)9U`s%Bp zZ127IUa2{4UMgq&95`?w0Ak{H=8RT~1(*TW0BHa)-`v8tapT4Sr~$_C=3HO^HDDa@ z46m!YJgU07I=J%=*lulY4c9*d>RtFjya3-VEiEBGlk=4Df0`y<&yvGkO&PhLTcLG7 zALO~3@K!@}vpB%R%V;Hj?&h>NWI=a=`-%`zF5fw8!c*PFs z(uTj+#SA}q@fDlZ)yYMY>`YJVQU;xGTvS=EOGI9_Q)kZFoNg*xGd*WB6JvI5c+@s+ z-D*{ty>_YNyq3ueY|s4<*_VFnx9l??dDyaa>)&bJV%MjONVaUb(;k29E<1i`pIsWB z)0xa=cKY(T&P)E7WsIHH^7j=GnF=z}^~x*MmAJaS?ee8A+jZ}qHrjK{p84Ew*xBJM zyJuIMBvP6UFX(2h>|9Ch=4^IuQW8N8rX=W>1cZ>(pNLU|LO8gfRfIe4e%L4Zkn^bZRYNg;?HlTx;d!(}Q56?ZXTkLecurBQQ?sxyu z-rD!3ja}`q>7ZlJCcgA0;3-YQriQqfUu*q%K$s*6mHA3v=#tIKr0cbV;bRg*Yfma=}!R=ZmRO15qT+Pry-es|hapM1uC z^Glz%#_CetN_fipbR%A7ew{t^(I-V)ulEw$c~_g%L9S`yaLopEF7z7RAgN0cH82(F zlAJlMx^#y`L{mK-wJnKF!Q6s?-H0t_%-BCY|F_DA*Q{`AjZJHyxqPwPCIqlswzSCq zr1c7c7fM}8*jx2hD>WKKN&7FGS(Fq%9NYH zwNl$Dv5Zokv#wh*7d0Wd)<0-Xn{=CHuIi{VZZ(}}G7aC!cJXECxO~WIu$@~MMXuB z=Aya*@J2cf2u3;$zy-L*4HDtAXU_(yFj8eeGq(zI(;lFmZ*Cmy((S;!1DKH(1FDZ4 zITF-F;0X_I?gP9NCVmOCTQ|$X3pdh3+yT}|sB3C;Z-T<4O?g`5ar1Z25C4wme=2{e z?A&ja_#r>tCNe<`3`o1Lzv@d&>*0k8K|I0tHQQe1JUQ=fclJdl-gmbea;GlK*k~pB*><3Nz&32(WxChH7E7w^Q(yX`<(29BXqYg= zb#%k`ZF9>x5Gt|qFp=3tjqXn|9r2|5}&UG*p+_ znz>ASOqYg~R5jU#<|+TuWhQk6~v+Z@2!9f68ss(p!-=e()-B!KlVf(^we$fUe zGIYsGo6R+p+Hcpa3s-J$*}mN-2Q-MyXWI@*d@zjy^TdGnKq(+AaH^`Rtf{Ff09@$c1vtiFk2D$ZP8~<8jYJtkeE0@X zGalm)8sbL0X*aYHKs#>42YLWBZ3w;%4GjUD(~g)Bq^mogA0gnRKdIbO*(G_q?lYM_ z`8!VRZvISm^D>Lu^PY-6nP#Q$59&V^Z+NDQZz}q9cJC){A6D4u;*@Of;k}=@-oQ(l z7BFP8L)vf1mDzDKH#KI*Pn;B}t+KY(b7#2^0^N7ds_WS$K0S6fo z2X&q*TVLj&v!sJfZK#IV*PGRpO)|~(;a?xp67Axwoj7{J=5vc}`{vfA_+3wpv=V@X zEp;%CC0=e3f8LlBrstvExW5^lKr%W$qZ>HOEIVD6i06b>ZYHKQQ7tQ1JXPNj z^(Rcc9=qKy`jh;l|M6T%u2a{Qe^Lf{-rs5-;ScE?(l?}f<>i`i=|mPJYJd{-Hd(gD zo_7rW5^;$e@32D}5;VBSzx_S#kN0>#=Wb3LcXKBl0BFWs>M49FQ}|NX0ki;J zB*YlPp{)U+0mIaH^soW%sFDEGku<{x@C{F|{{UjbBfi9mZzS7u>{rNNQ#=9F&Lvos(-k;FBKc|hmIX{28TilP^IZgcObl9cipUQu-UGjH4jQG3L z@r=KFe#B{S<^7hAvGc^DIsrJ%QDaIrKBz%6Jw0QYx;8soh!%U!=FL(=#ZVDxv^1_P z_%PrIAn*@ePmb@3Dr+>mCT!}uT*GEYGQv$fBjWGDJ$Opc!b6sk>IWw*Ec0+)x1S#@ z2gqBN$|+llXhIu8vvQ=1C!|PuQXJ$vn^Mt>UR1r%;Yr4Eh%=MpHaRmNB*)=+L`7w# z5(;Il5=9*cu$~P-R{&h@LHO6bt4>Yon8RFk;9l$tOt2KL2&Ga_+(P6+2CzAgO{!uP z;s&73Ky65AOVpx}7C#4?iUq(WzTt9_z?CW;HQK-wJB8tOmppJ$pfW(N=GFwW@KwZ9G%oc`H>;y_3ZSN&8du#Z~<`nA@L$F6W(u{VWA!n zl=uObS(XNPAc;ed69C~GwE!l7gSNId0{~#?)A)I39W3?7%iX_u#>4XWxV!s_*PE66 zIenZa&X0Ge@$ll`yvM_GnmCU*jngL6IZfPOs&}X3>Bf1vo7?kDw)1cI?|$QcQu%Yc zWIDcA;*m`6v>p%KZ}#qSbzaWHznuq9+>+@5p9muW(@2Q{$s0Co2zJoo&Uj1RhmIe8 zFF)L%p?*RW=k0v)N4R|R#2?1{BlN71a08aToh8!-4~akcdoHqWByZhrkZk*oj z;{M!^)A+a3@{GI1-`y?l$K7%BaNbxw_HjS)cc=BIyZJXy z>=*}Jh!>ATobFcMZ)v^JPvIERQC|n%J!m6Si`uBL-PUP2n-%v-NocfguG0bXtV>6S zl~+~kXtJ|*@I;S2_~4yZUsDml#XxtL^$tzix((~B>%vic?Z9zcyMC8Fx@VhpUpi+K z3putSNT+G+k$5gjER8UA^2nUf@Du_d2KuOAm|62p2M_@ny6H8NDBdCb)KriZ%ig%@7cp(%~_$bSd` zv~LFCvB9hMZRyp|m9DqXKK(H($<2~(cmxdQCr54Xx4&)YhGy)uzxi91Kiy;B{_YF5 z{k|vcuI=l>WKBJ2QXb!!onA(`@a_PB@2Fpi)HN9RaU*U>sJ*_jvC4sg`-#dt8aU|0 zosYW{jvMFW->GQQ*(LjlfAdZ_o<5I*f5+nx_ZN>({Cy=F+@K|INU!sD|Ne~g@ORuW zsp92!asN*5W#M5tzvO4!Z`>`}-oO1Br}cN-Fdi=lr9Mz&PaZf;cuDgoRXE9Z9v=MR z%c=;HV8R7ZnfcmF0xzKIX{guTbroR^1*ozwE}CY7DL`Ew;2ck`$FN%w>EP_yJUXQVB%@=a=|XST-|>v-l^=I-k+($i@OnKDw?>xyW=k&Z~tbph(UFU z3Eyhs6+GPJ&n*FH#&HJwNevFC-#clOx;*9BiF5Yw!}r_Ov&ZfH)j_*^_kG%&m1(cM z{ED@1zt>tC3+;^;zGvsoAF=x%`-nYyN1MI=(hqI2pw+6%^X&UCzN&L{tL@;veM(%V ze(EklTfOI8wX_=co;!QwzB#xrs?JMV8` zc-!KAdSt@t^#AfnESc)Y+$u1Z|u_Nz&s1ohg3y@JXBDeC2cPcK41A_TIsFHNnfW zk39aE&5yL}^p->Rz++F?u$ClW*!zxMxU|zAe*ELsT9Icz_~8$&a^pP#K`qHs6W<5lu>AHR^#Fk8`JF7=yJ2M^ld=&b5jht7LGXOG{rHC!}9 zx-XnOX6>E*nxrk*I|mNhllN`5{;qC2b^dAq(4lk~AkuXrDKZbK1ptL*YC2%*H_Om0 za|2jd-sb2oKn3NB6pbG={Jb9mWMEI*fG2$X=QPQ|$L*ozn`g3dd#7IwU#EeW`|~Gu zs|nBjdYn8S*kj^(k?e-Mhv#8ohw-?%yFZ;SU3eY_?miwkZNxbW)A_iae>-hFJg4!e zhY_d2AK?Kss1wu$%GiNcGGBPb!;JI7&BNdw)-e#KfGK#Y}|2k-fq8|r~8f5#>0!-$KT^Lw-T=VLzRUxMx6!! z$tE5z+&#@Vqjmn!@$>IE|2S{#ohB9URQ}w*`-5gBzr>xoMHwS7;OBmvSFlL>lgiD* zTq(RbO>!Ri_ewPJXh6r0RYX>4NCyD=!!ox7pnV)K)eT_lw7KfkwaZq&xh0%taHPG< znz!j#ouYAj{s#x_z9*ir-t#Bz-TpP&IJU{wHZ|D(w*->s2dwwnptan$)`mLI+vHq{ z{r=~^U_bne|JzOoj6eOrdRw#aUAuC*LjbzLI<8#OxxSUL^io+&l>70 z?edvp*3qoZFx3^&0OS=fo+bha3-YFA^Jc3rDzGb>(5>6D!HU-`2sDk@eII|yCVS4> zTSv~@o(CSVi-+H}{_zF7>%sdhJ7d~@^yBC4Q;+V^Er4^jskKQ<^dpv$RcfDke2?|a z6AYs0j1igJbu(T>ALcuC zifXVhuZxt1hHZ&9=EZ$M#?7wA{i6Z1>&w+H^r- z6rIp@gg-Zpo_Ep^0+QKeg`pD%EUh*__M*4F4 zp%1%FrcsDU9c9Ns`xX+G52eS$3)Yf{u-w zw8g1G=?|XM5nsAUV@^kLW#ww)pavnGiQClNY{e5-?f?C=|HDoVjN0~Ht#W6^pqUpE zCk>60Q!|>;OY)qEl0Q?&@V4#GLk>_`DW?J*W7klcZQuI4zqXT|Q?_2}K8N0T!T$7r z|1&#tx!>A$?zGm%Y&-bQk8N~*(eAmIv!S!?;+5`jWj1L6IHfk4p(h;rdoS5uNgJzM zci5*Mf5^rLbYz_*$klagt!*&Q|fv*zP%Xx0D)VbDK0lZ7%qcfm1Jo(uPfc(NtgfY2m)LyEUOj$FszK|l|LnW=r~l!9wYN@n*fwnn?a<{(-}ug6 zovqzwqgv&7;f3$m+i$(Cn<>?=NSYFE}-%gus@8AA(y7&_}clR=8u#OvdkK3hsPo@*=8%#XBWcoO< z)2)^!9bKG{zsJMzGWK##$H)Do;^A)bXDYf>yp!$H`Aeqru-rbCKc|U5q4RQH$&d4m z`;EV^k@6Wj3RPV`j$=`9FEBVJ?vR_XxW$Y%I#_i+J)zCnnj?V3Q`g@$ezq@-n z8sg9I!#1~c6Cr^!ILzqOjS0nN+wMDU%eqFJ80r-O(ndgCu(D~hK+(EdYrk;OHtxLJ z9=iV?t>XcJv+SWqrH81?BRVdfvR)*C_ugaE9VhIoU;7&?Y`fRK_-h}rOOg_vZ6B4o z$75Djl%YY1tGJu3slGY@YmI_*0*->XKZYVfvm;XO`OicW%%{FI|>Z*=&36y<1XhRbAD$wM`rBu}2=YjEP=* z?d|uhb=y7G)>vh8v*VUqQfaLlT6INzB1S3d(~UWF+vb*YfP4)qJsFy)>qG$6qx#mZ z_P`xmHItdty^tB!(zZ!Q3N~u#Lz`C1YVEPdAF+k05gQ&IlM2RKTfeS3Tn|tCPG6_4 z@64fN(BQT-&b~#0fw~6Eft)(Pi3O;3aHJQyph&6V@23^`a%X50vZoV=2a+5&$^DIg zZkJ5w->KX^EPpypx^L{A#`(tWlKsVLcz3@5Nz#mz((T-@^K-xH+~agk<9_09 zalUTPGaeuR=818Byx)v2*&RP|121Th#wM4s(|LH%Vf>qSw~O1yyAynbI6#mv9%h^m zPH|pN%QKlS?&j}tnw9v3xFp&KZNyhsQt@%SWPb6mpmCn*=%9BRr+41Y%b(cC-&1`% zuXN$z$7%eX@8mLe{~n%yCx;p5g&W5GL|@Tgr&}$bRCMrlK5%uKmBNe1Ax=m6(vIo3 z;`Y!de>)EkFBQ#d;uWWfhY^2=cRU;qJDG-lh%zJo@s*NfI`_ZY=PjSYq1Z}d7fFPp z69lxGMtZ0uf@9;nqa?DNtP$X8aFh5yp*z#lamBiI9ruQRg#X!VZt9A5n51rz)@t+*on zRsazz{iV{lza^dt*C=jFq~XQs6@e(OG1^ej0%WN)60Ya+i}7`RPLig$jp~agR+))S zqUhICZsBAO0gOPMD6{a9<_~!q@>RTPpKK1? z&~}r8i`OumXpfDo5Uu3dRQE}#VH(|I?$|DGj3rU92}I&*@+;L1~db( zQR&#ddv^$v6FXQ^M~%Y`_0v0X+=$zUWjwAQgx_j;+>9>K9MqN~puymU-XZM`ziw{E z=T_*P?`q4|c_%;9#VMVAvVXp*FQk>S_jskEyO|x`$&6O!G;b=3E9cTqytSLbblP>6^uXi!4Y6NTHapZTxX3`WOO(dOn@}_ zQDqANM{ZROO;*!@G-l4$=(3e&{V*I8*0fPqi|Rc(#*Q~c?-AHxlU8ul6P}@Pl?lM(~|z;{G5(Oi#i7~pHv569NzS2 z$pE;QKBD*pdhD)u3pNR2q6zT#%K7uy_?A=kLEb#KBOX!lMdd`A0ng+G+2WImaAk8M z$XM2{7>THimg^rD942ek~l&^Pe7t}uKu z1T}S!=gp0mFHbsMq|AU{-l+@pZyaAor%Z>;NeI3<1wT=ppk6H3;<%l^JFUlvZ|XBo zOnAZro_y;)9E(W*Lcip6xasHN@pK-tUNV6^#EEI)a@?H2u@WeQc^Kd%C#4Sz}e|IQF`F9=ja5T_@6 zPg4jq>5tPU#{oZa1D(go(-f!iFp~N4?RNeSUwC2MF3u}BB-}jTu=6mS7QY@RIfn6` zXFTQ}w)^)w<$RqN?idfl{rNL;jpEC@`}cS1v)kdv!{Hs{d_6quJ?_{+?{2|^{B4hb=i&ZR(PQU7=y;F&^EmKyH&2I$<21pe{>0AKzn4Sbh*RO(3oXvjhp>bm0D8G(K}MVOo8eJ%~Tfk zjHGx`^yby*GX+jl89Igdv0uXC0x{EeoBtgckf7KjS(QpMP|Wzu3fcWt!k{TtCEV)dCRSBvCYk@H;|~>MRhZ3_$p8V zkz`e%<<1D6-oPXN(KqiNW@vZ{Kd}FRjnKom{Y;$$o!~1 zU=Q7;;{`RzX2Q$lD?=0b6YuP|j*%IA@R5gft#`Ivy>QO@#&qPSRv7Ygq5*6*9cR3( z0Bt~$zfs9R0D$x*2nW>H`LZAvPT&STl4b0NhK9mL6aa1yi$MW5zF9_e{;5-)+7`d` zms7LzHlh3Ci*vOk8Kjdp(nFgn437_uL#%Ev?$4h$5TvjG@)0lCA*@iy`sOk#=|F3u znxhM>QuqEhwl!xDeTwM0^ZR;+IHbv!5Wx=^Ao4gboEdPd^N$>C)j0(mZdeTvrhW>7{OyUQZW6$HTeRvb@f3A`TJnsLoPM z>FSe*&2y#v#obLjJhw~tgqHq*{w7=f0pC&FRv#X`<6*uZ|LNj)EB5g?r1J-jmoeiu zeW2&-YW%0;yIT8r81eVj`d3B^d(DJZ1LBS_0a zl+`z^wVrc_?7*>$x{a&Y_P_L9d+zzYR#w+&6=el>@x&o}{mu6*r=ZBDNBeb#^kF-A z=%_Yf<>>0MJi>*T|$mRHdCe{+_-5#(wo;`8Lsg-oEnHzp}wu zNgJD+Y^3Lsy}0iUE2(SImC~hl`p}#9y&t}!>whz>wk%i2?ETortk||l5BHz`@oVqsguqFjxN~9u&Lnz`|kI@Z*#h3aiZ_6eecz` z?d-ARcKBkSZEUHwH*^GA*Laq#Z?3h0o@;jcoPeHmci};Wq;mWsn9#V?xvY`I_szYp z*pCIEhx>=EuBp|^N_2fI5@NacT|H~Z-#udckDRrlifWzNJ87@I`I;T+=#@If_Mj%= zb?(M|p(BlEycbU$vVZ*6x9#kue&uDM4NqRPGhMy9YJ1dj^73u8x83%=^{$pfbsn_z zR%bH`b@ld;9Xx#63Q9}t%7s&5gIRfLv=Tytqa-K~|HZ>!DyM{d-0k-JhnoZ5E&@2# zq?{&l?%3P*gXdqc3*G%zS>I^2<)sn0Rp;Jw@sz#ry&u|%a~CYTq{h}amfBx`^;vu4 z~`I2|+98B{LFa|vH4rp{8X#8M@0c5yjg@Gv9K)3Xh zqL0) zaO1rE8~R`;ivVWy4c}qyVL(`t%cV(bpQG9YKBixx0JKYil6fV6!`pvROT0cU#KHaW zjGJV8;+B{;2S4+Q6PN68TW;KM@F&$RjN2#kl0$HJnz*~alZQS@qJFq>_xN}6J2V)c zDj4@fX8+wRa{o-j3Z*JZ$IZ;m4o;elve$UZ4r# zUtiX7zaEy`B|qcgrE|NHM&(Cp6}Afqvea+U7kha4p%P+;iQD_ThZhJEf8us=y5zbS z=Nb3oyyAZ2@4;UvsVGheQ&B^qyjGgnI^Wekms|KMd_?-e!m^U0W@Jy=v16BQU8By! zeftG_@zwo0hd0-*_H^p}+|zdWaECqo@lV>NWAEC3`SY)b+vQH2?68kKu+3il?)R*y zWrvmLpSHJ7pR$aSVmq++WgC``;i-c!*|BqdmRs4N3tF1&EC2a_u}cp;YQI@iZqI%F zS!?efwT8oI>{wH?3T{}-s71C$psC~hS$p~U@7P>LtBy6Rumf-X*j{|&tbJ5qsjYa_ z4j*`1QpwgJF=zHZuWP?^bt*&mh4<`x-+SE_a`SEM_-WgB|C*}nDtcdV(dz$SDNOY^o}A=l{Cs6W@PU9ywsui4H=>aBQY*v6-I%-NYC z+q|>Es&%=CG}`R&dq?ew2X|Q4l{4bC*S_#uU$*j+f-tapV_Zd1{9KcSMxaJFA!&Sj z&$#{C=e}e^=ibrA(sS0lR-5yJ>c*n2-FTOM{8z?p_@541R%w}T(%Ni~jd$DWfi+g7 zIuSbHfDBS4SB1#vA+tsU-~6m3UOCcnDyy)%+y(o~|MX|peCIQoXyw{--}rOu9$6#s zUKnPg+jsAfM03Qh_T^g3h6a1_h3{L<#s^iGIhKs2ZGjuHPi0ay;#73E?LK%803sMD zNBg?%=+PrKFq2{H*EU<{#V*@@|3__Ma@fwD?XX?z8UnZ_#IqOLt!nEw+f$Qor!?Vx z>!lt$e@Xqs`ciEu)QKs&JcoL<8WRRgg^%g$>sz|Y8`TXYGU!CpDWe08&NC_;oEMFu zo;c9WcyIZYsr{h3u?G9{pp4@gQ;2a)O`d7jqtKB)+xN-yM-lY4kEwnQj=&Wb^w zu8Q*95vadQK2(wQJ2Zs_dJXyVL@Bw&eKMJJ|pE;gW* zW)_7JpA7yABNDHm!*f`9_`06L|H!bROI+yr{w@-59s0j#4MG6vs&c zU+QXQk#2zvRM8)&^=I6Fph)ERnCj4g>MiLnm6m9EL3aAODL=_^j0L$AKM&KNsc7Q$ z-_z%DB$Q;o$=^9tu<{m3(G6P1)hm{_P%Ox)hF6qtLxTf$ zwf(A~X7JTdPwR`m8WJ*Jhe{{o3!I6j@U<^ z+++93-(=Ypl%{RN_B-sZQzz}4ub;7h_3!_k)l0gLp0^j)lx{&Q)NOcmHO0D&Ltsuf z*wt1`ePm`_G`Uva+-PS8x{brG7+f+q(oco@i)OrOA$=>%S+Enw-m?s;uQXTdbQWEx z^3oee?N>kZSzGKrV*l~~{C}+J-p|;^rdnGNcs`+vP}c8y)XMUtFR5AM8b;kz2Jjpj zuB2%by39hrrC)&QS`->w)lRV7|gYjmMxZ*tNvr?vK@bKuMK|oPU$LZ^B$@o zL9>13bkVN)aR@(P8Ia7k>prt_5CDx1G=r-jV+U8jH&Pp4&c`3pXTFyQ;z+`SdJ*n3 z>Kg|o!3AuT3E-9FMMowA(x~ntu{rfOLjn?Kdd6&UeA?D3FLE;%C5%{B34xaz1`iCq z3=-mgwH3gKxY@{rE`yNDOKt$WI?7QKTULkq#dlmZ1vyy)n%a1q2pgcZgiOSNG!iMo z({2W-(oNarp{a0s&BA=Nd9r(WG63k(f;_7ziU6QbOo%1%iU(5cYz@@d z0a(cd!s0vd;He)b_|=D;qj<^A^8v2_P*$LjkVp`*wEzG>07*naR0lwh+JW*6y<$QK zn2|XACmURlSkI}PAOJgzOZq=FIU9JQs+cQ@aAi@h#>1$-xb!*Xk^K8}IZkk0jwA0; z3?jgJb#UBHb*kSI;6(CzQIhBjy=zn+TEVPf+)?=`e?t5tR5GR zWIwMqN8QSnnq!e}4y8=UbDsbN&+$KUhld`TFwCl5D6ge2O5XSD5~T@Ul2s-gkPo0I z00;>QKYFK41)D@3B z$fzI0llBFl&_-)8)24gg z8h}nLam^`GHeYPj_2o7p-NN1Xf5r-r9<|CPKbG3WN$b?$`P;wqjJrox?*ma^|A#{_InB_ts(C`@-|~(Bn_q zXpc@>xNy;iqyv5FT9@sRwDPdjFkX1&E&J^+JZ(j~s=T&lo!zl%bI4P&gw6+3TvBD@ zV{hA~%L4H88vHU!tgbQFX4XiJL`VO1oV#cRc{MscTZO(ROHvx`T6O?UrT7IgObV#% z+4+UiW!`Mh{_S^d{T=t)_RWoU@b!~+?&4*enwYjR-3mA`onaLk3H=d&b^Ablf)W z++jO({M?$6McX+^ZqX67PJ9gP2sb`(JHf>+}_*UDnw!-?m zFWGA+bnds*z%UvP!gHlRbgph36aavIDbw9}vXO9PWF#DK=l-Cb6X?j2%7}O9_+@z? z>0|)YdLNzE(jsU?eIyTbo00gTH#|S5y%W;m_5p+e1J#R*y<>K5XwnKaf?et#x3XLv ztyibal6%-AlITl3E_@=&2HKRl_h3UdR{&r#Zeam3Y2ft==c zQqIsB7FZe)IK^+S(np*CD9`|k0C)Ny$}pOE$ghAsI`Z-ojHf#g!dpKH?F9zs?3(sT z^ho`sR+4vA?@D#z6Dlyo29Os5@`%YFyZ}67@;j{j3+q#ICx4je0Du^?XVeb?D9F=j zq7;?0$Hkw?z$HXD@rSg*Z*+RW&h?H;W;1UM#W|rII)>F>3d{~@j6>%?TbD&Gs63=t z6r|stcIUSgo-C+cq$})6QW&`De=uQHSp<`+Z;?t5`K!DTLndky)JM57`C-bQMCICwmw*!W*yzC6is zT;UC>{xDhT9hEpucD3Y*RvD)?2|_m{^@ZnotgI#iR_+Cn((}-=D6v=^hq6mikBDh2~2!5!?m;hAu z1Q=7ti3j&`OsOxJ1hFc;jLftvCUoUm842x&NG2K5MSi3+gvmsW`o#pE`V;`PSP|!0 zxlM~NbUxXN+DWuBLY)pkS~LWcNM5L`+0#V;<9S#yyk|b(#18|hCb?yfN-|-3a4~g!D2>^F0{z9zTSSz zE-1FLV(Gd{Dm^BNLUCzn=xoPF$AqWUpz?BUS`yD0Wnc*sZB_2^@lhKd;RZaZQYa21 zV-upyu?pQVwm36pJ^e#gqRo(bx(<4Hctjfk*92*Jael51_VwDlXlI75+21_-_qP7- zN9>tTeMEz4BsroJ0yNG^0=;jaZdPj1ls8V?Xk{Qz@_WItptaj5~QWI&A z)O13idfJM0*+@=efJk4>l8f!<|9h!|YLM#h8w{H#3)SJH8#=8)vY;T}7POKvs(j$s zxDwSHq!WOSY;8uNv8>ea$N>)n0NvZ$XPJ4bQbv^Jv@ESErXev5`rV_`5*AEJ z@~E2*OLXLt(gTPt)DytiJ}_Z#UK$7z>ek9ad$(gqpe@Uu*jOzfu`FHj{PJ{={%hiU zQGmNwXX}SST6MdrJWr|t5s1!94AlK{M@o%!69CJA#b!m~6Ji=06lom*t6rTJ@y_Kz z>s0)a!qzDM_`BFQu1SGz`m8Cn9cv}jP*@Dip#VsCtRM)pPXKWew5u>EyFy99E7fll zDE+bx-T)r@AKbA6$T64$?2_9l@gpASVUw;y%CD=#S`Dknv(`$LrSi5&X+zo`;wAcI z11Rbnn-Z|sK&&_s4jcR!oH2z0aOmaMNLpO4Jjz&Ll>uE#f$4Z&rFn-3bkj=rjOxgc z0OK3l&rzrz-u8ql{Vz0`%ZrMg{HX;l}hFahPPD$j;VTrKL9%4_@s zh~B+2WYlLQ&iw-8{O)flw>y-ks3dQUvD;8D(03ltWUg~$+OBCO14$xv4G>#XOufxf znMD(WMU5eVWx_@}N|;QHLOq8m`4g{fiGYYNd4M6#kYG2dIy*cu7bZ$f_(&_`eU?BT z&!O?jz%O6A{p4wt>UFX5$Bnl;|K^DubqQccU8g?h1=E z5kr72>Oy6#0;tYWuj2;(8rhc8!#5IF{J{sl)Lk~BUhgvsH*w%+aC3L^e*^%naePpR zBJ@s3l}B+dSDS=}ehGCN>J+OH|12eCj1O?@RFaD#8u zZK!-jhcIPSfS%P5R>^WyFX#&}v_{C*gP>0$jmJeN8q4J4H{(G|#ZDl<+c;1`U_ zH`lLNRvyrUaCSI`Jh_?iFaXPI8ylC%^ED~Ke{o4!uw!tk)}<{NIumIh$(@-#&rDs+ z5mh4m_%Cdf2tGozf``zN%0DffvQI^u@N)a{A?1LVF?o#%-+D6H4My#k$xn%X7*whX zH5m&RYpWyTmdWfKfj0d@d5PxwE;Sb@&O}Xj_N7cDuBMSP?9xtx)j_bWrP1Fqp zl;`%)va}z*)h=ci)X|G5)J1jrBLYr6>huRRaMKnF1fVjco{^~zr9di8NO}9@#?tZn zs-gfQ)|O5MfH5MeWqw#nzCPX_-&su*y9FS-#%9A{Und}RLE!ePz{wiz=U`AWt%@O~ z?iQ#I09tm$k3knqTV0|-l6o(u$)Ug(;JZQb0!#w*8N})p4in=(0H@+!E_FQ8pOn3k zo~@SXk-mmOPibX&SaJ!=7T{P=e@fVt%eV$~^0z>O8g#B1Wa){a2Q(qo!_d}g`%~gO zp)WL6POumm*C>a@Egs0u(Vx&MV^PMyx_!%!>DrfGjFHOmN8WCQXnkb$lIm z85y&oo&boDev{w1ITFAyxl+7uoH|7zg!Bvdk7?j=Tx~Y zPz_33UgldRWiL` z2xoyZ)C!Hx@=_T_lNI6%m}bH;M%w@~$`7Sopmfm=2$u;0liR`^^@)ln{(RCH`K8~X zokh}R`kP_eqsl!?k?2)>xu&ux%#$=)`6BODp)?>t&y;&vJ`)!Kc7;uQz+FWU+LK;y zFw|rEE$ZIFyy7W}8Pz+dB~8Rx*+44vV}h(cRAEz2Gx9U5mo*BzQ29?8(RPVH{RnZS z-qMEw^YTLfu^bKh<9J(Nc3J(~tpRB9C2`C+CnqODLoN|;j_Z|B0A!q-QQgjk^tMbL z0VXWFDe)}zDE6vAT9zTxR0v2Osa2fK%gmO7CxKzvL4J8>_6Lug1keghgPZ=qlM+iZ zWE4P{Os7%7d&wxi3o{dTxuZun;x$Oh9RawJp+VIQ%`S_=P#nnf3(IW1bgSoQCT&Pk z>S9TwSTfC0$4zAwd+7(MLF*aPw-ku%)ln;nibEnzdPeWpci1s6|Eyme20NX|l95xWTPjOv zfY+6Ix|k)`J@lZFHgnPjKcva1Zt!G6h&#YA0?VjlAWcM=ptvQv8+h`g+A+WYR(m8( zgpN9jw5M1gcuQ?jkhr0y0RX}e%bN_WNL5OOR_dh7FKl4zqz~I6y<;SFkwlKXic;li zAgn$~5ibkW0w^}u6b0Y|*@@0!yCk)S0)ZO_KXgsA)jw8Ax<`1IB(auv?PtlhM(JDU zXry<({zM&w@EIJCj3UWoKt^iXT(105Jcqj`f;75L?)g$(V=#38q!GPjBvDtC<}vwG za>D?RF8G4fOaK$$V&aA>17>m-z2r!p0$yVxU~^zaB95ctgZ{9vmsB65=B0F2u}7!6 zP^VjrOFBBGqFA&#Ni(NrG#HCELwd}BLa__^2)JUUphM|nf&<`SS)cxf$pQITRUJ^`?z?_>O&76@bVK^l=hQ%*>rk-7#c zw92oW)e7ld!?8i-&MF6+Pdf!(kw!=A3IcuE=p)ZcVyzXE@*)W*)UWFwl5)xw2|0DU zLUBZ2`Ml~=hg5yG)|Flt-$b;R9+Vq#Vj@QTTU5{2R~CfH1Zo>h{w^z@CT6H_k?IkC z^5m8;!OYx(#&v~{gpyUKpz5K?D{UicQv$DYXJaC&3E&p;n1AFUz>PdZhZ~?r8>O5` z3o9x}WOKxi6(s5|d0VLVlPwU5f65|cu)cT)G^2jQ24E&c)Zrk3R(;`nQtkosC{FYp zfI;e2*u1GU0d1%oNL%MrH>j6Pf=C;ZU*bhPn0%5xFqonn;!gyaL=s*!IRFqx{=%d* z#4k!KaiyJ+Pt;rLK^Fs{04(Yxk)D5MsH^l3OlG6W5#T106r+NMWSR89i?~r=kbFZc ztB_{u`=I(f%9p%F0!^9-8-qXcp0WslU*EW8>Kl68ut#VzJ{`3Y+81_6sL4B4Px@6~ z^D-7}V_6h_#GN!I0&#b-#_=FPLs=(q_0df_AEQE^L{T}9n`M%OnY(fOLncRCmd^+ zUsZ2oofqt+cGlN7H|StHOq6K=n|W=M5vgs4=p97m7#W1yH6+O~rP}X4H{JXr#=Ku~yyS zrtvKdR4j${c3-x?{L5$Utz*}0xU%KknXiW z`{MM3ojQ3!9gU+qm}A0{bxAkMS}=S>c_9C9~v4D z1I3gER&;&WOX`Rk0AbSkbA%ZK8In#0>rRg8)I@ZXKop=FK-?}M0eA=iR|8OJ8=-wL z2ni%q~+fg%93HYgzsT5CSmeSpc&r02cVukmHniPRy8x&Ndq}5vJOF@=%C`y$Nsv^N zCh`Pu#Gs3BhIb_Bq#6Ezgo`=}gX83oa8s7(O4leK)~cLP6(CtnrVU4HK(vb;T-A6;+h8(yJ#wP(=U;9`77cyaYOwUz7)W z#jfW|8cLLA%9lC<00LAumFI{201%!Oz$abnRG*pTvB{NsKss49U?U`P^+F5pq*ebZ zOF;bv{OnO+sAQ6Ng>X7(G z6W>UOop&b9sK>COmwHOP0Gs$B?}rtJaFJJf%mD#XN@RR_`pFsEGt;Cs}Lp@$!n8sbBl zz^yOJv-~|mHn>>__PbOcH5puAGY~Hf%EUbYIWaIIgu)|ECr zK4QJnbIw*HKD2MIeeG+1Z5_(s?c29l=Y?Z-T>5)=-@n`1kG*Cuzw)Y`yWFW0G%9t> z-6{Kr=e}d7+OJ9iHE+kY5%JLB!#0;uWe@DR!;ZcAV>@`Z&mOpEyAAbrgmbC0imD~C ztPT~$0W+l)K=TJJv3~~s>ExI+OlzX@%Bu&hQODC|jbGDBM7}jP)Fz~KbDDhUOz(_p ztCNJIzqivyhK8-SsaZO#JyxU>JF3d0|3{;v)g>A7lDdJe;fPi_zVhF`s)2mie&z88 zto_t^8`P-@Ck`JmE7O_a`=7VJ`Q~#rCB6HRu1ofnKmRKm)j8igx2&_bUwp}4dif3O z>g-ntbGG-T@7uS(_nOX!Zm{OMB7yBUb;Mq+F7s)yz0ZHkp8fi_bPfF)+qr9#wZFU9 zzVXBT*1BW2I!_I{w2u#?RVJnN_9r8(`gt1cg8s84*sR`h3P{J$v>odju{r^P zP1OYgn$q>vdzL1I+L$6BqN|`afkZ+E2xMFyk`$HAOIt(_2%Og7#L{ZNfER;!qkv96 z1FPbLx)c&2Hve=AJe}?tm70qNz)Ia{C&@%fkU)~Bi_$Tc^jY7Gu7F@pPYOU^evu&J zuU~`Mtat)^NH0<$z#Y=KgO>*aaM@6iZ}sZ$xnUN)TiQdhBA%l(G2k-@6PHGT5A=qS z_znw13@J@#6~7)0mi5{own1?$)Sy@*AUdNwYexz$Udj%IHyZ}^ZcQXeUzhk@(TNp+ zp#U5dM{cp5K%%Sg=CpYTPqMI)chq>GA6A>7u2utpmCvMy`aY|2 zBL7g$L|^@~r0W1^CU_g9ug;N!vsD11~#Dw%{U zKgnlw`kA~^A1M>^Y+7-nKB682fa?!sj?Vl{STz{d={J?)$KD+3K7bl93!eeS?TT;- zZM{l+zFGv*NdtARwkRv4jd)UaDypUOW)+`&zpQcqTr%;d&C*BoYX2Fhy5LTG!;bn8 z)hkpx&~KjA_&FJXEZ^kedDR`-)Ye+nd)2Syi78}X)`KQ`ZU@z z{@DXS{^qM)LEEo9WE1j$%92Spb^p9h*&0@Qn-Xn_@cA`WNbsN)MC$T~F;?G_3Wo<+ zpsTm@7Pa)FLVD!sk7`M<%1*qzU{8GfX=^JTwZHuO>-O{)zGNLo-n4i2U$&a{&9-Ix zCfoncdsdex>48q}Xxv(_lQI^iS6HSEiP{*T?VX%RTH3r$Oa1$8pjT4Bb<#~$X0W_M zf;%sDTV_F>)iqRE;XuFLp>vp<8`oNGUA<;QWAa`w8fEpC$?13xR-FHP7z8tjTiUxb^(OT=3 zr2U;ECu~hci_HyPvTy(05!-yv)3*Dr`|RS?G3~t0w#{2w?ELH3Ox?L+sF{u$2Q#P0 z+z9*<4!;x+Ixc3UmAdF+Y^+1#FwJU*dhE=lF59wcy*Ash%u^!CggSmT4DQ@2QQ3`* z4{A0UEz_yB+UcI~9S^xC`j$dga$px>kRn155qDf}K5a%FbWDW)<1zth;+q`ykfX;S(3F zZOi7+DQ0S8Pg!Y!T~+_IIG?G3FkdTC+Vre}VYOxDAevMm+4ifvU44U1fF&g*;ZS~b zqoFU7x)&2>jp(Wyl45CfjsdbvgC7%0l7Io2^=W|ASQDgkoJ=t%&rbQt3cS#Q?}RDiFl2Nt0>v4(Xb3g8+nd%asS6 z(xr_y8%gh01E8|Pj$IoL63=Q$gBc?L0BkixI*(c*z!6|FFC7}BpiD4`2TT4orT;pD z6@bF#zbndPR3`w#t;!!jbXLY(ut$=*Wo>CB^^-e!n=9}GcqFYsA6Sww$`{G$#om!1 zZLKNQBu9Sn&$2Udq1=$9Ar%BL0W#6)?GW&R-{z_Ug`-JFqKv%GAV|QV0}AkB)c`%& zZq+eX4jM{1_ApXEgbu)g{xSd=P`OEEOC3ZSeL>)Y@`WR1yirm`)Fbw{4+TFWS6q>7 zM-w$9t4P2}3)1Q->BKOZVFF4$C={q={soX~6yWU8QL>b6i|Sjoq~p}KscZTU5_aX0RBMBDnaLb{BcLDUJ@sxu`x2Pk zq5I32Mx7z-Rhmv6zgMTpV}tG^DAY>4idc0oTL4h%9Rc*}q7TIb zb(d=WSlz%NVWl2WF59$%gvu6@TaK|L9pnpUL~V(i5zEw$LcNhX<0ajjq2z>oBwlQ! zWrEP9G*idI2`1vridcbGz_KL-U{Z!!P9ZB|D#Id`5vRV;U$H`=iWJ%{Lv(|r(Wp(4 zcG?eNQJAy?CO_00aAUs8o)bGTb0T6geMOTrq}n^{i$i^?l(3;*?aBM^wW|WkUHx5F-aBY_ZPig>J5Sr*7k_BARb|#H zu>0y;ha?G7gVE^}>zdcudEGuYIi+KI#*3}9OPy)$T4m;0=9jutsV8c*ksu# zLscD%)zP7vG0;Dv+Yei9*PVCRyT=dNTAls6>8{4g_m z8Jp~$JMYviSTi4i^adSwcl62$%hqO=B5h!s6)<{NX9piWu-}^7nytQRy`9t%eBFIL z*3h=i?tbuIJKNrG_3O4PJe@zSCH%L~owvopYR%%b+%__#-W1ul@vXi_K_Xi?f6^Yv#)(?pZyPi@;}-3UAyf0|NN{i z=t|}<|NgJp*qQzIxBu{*weES;T56)rqCRO$&cCRUk-IvX;Or4At=?p9EyZ?N63E)p zLVN4&*X-Q25&OjUZtLyp*C`xYk{lnmw#~b2_r?=;{NU@Bf9DR{xqG7>dS|adev#d? zv(4J2u9KyXE4L`q1_rL_cFp5Pd2zc8aZfJEn)v6Pcb z-lZfw+zhqbipT8VNZA2)c@kqmtxkw3yEj0MQ`FJ_v~?wP{PhR6D{;RG-)zB21)HVc{D!=*#QNbF5aQ3QM>Hk_w?e3Rq@vEhrFJQDz}A=fs-BI>BOe zPLe1sfffivu-U9jyYjQNL33SIiB;%C6qeVCKQbN+64iNu^b+*Obq)JPN#480=dEU% z{FTa$;&Mg6qCoB~I#r@hKsQ`fE#54>GtlNs4W^+2omfq>wMNSlGHF2S3CO4tFk<6S zkH93SjI@vF1Q7{mrWT}+EH#J< zM>S?p`rtK^wz&zCR!*Oh8d0+*2}LS*fccJwoB*JZhQhzCR;O8L;=_bvqr&HW@pDqQ z1GKbMmk7}0hh=y8D!anu1yvB&X(g@mk~p?&@-i{6`Zg;7Hlc~0!mF2BBb!F!rlE4t z&JGA*i#AUT=adH-DvMk_G3fU8NIeQ(=v22UP89-Z#69%+q9HqKq&8PtB+04D53mlP zraXunqwczDO`@e*Iw){T8=yR<*)Xm$=6ZDM7W%jKWm1_!rAWb}k^mq4ljD>fDk?~T zQIVldpg%4$%hZH7M{Q+68*tggI;BY(ZM0u)ty<-fm8J0^v@>0ZBcRwNfzDPNgp3Zbki_wbKzIh7TOf$~qmYjw}Px;>P3(9&9$1 zJjHSsSz!s>10VR(SA7t3O8}Y<8BJf%akib7#4EqNUS|wzDgW$gyQcGmYjiDj@fzt#X#%im$IdVq6_wT6 z=fChpO%xhKP@Z2N?k~-gN*QW@hV8oVLCY-C@m_V!TJ|&BxP6cPQB|AOXhT;~e!2bD z?|j~-Gm34!HhfJNK4_oMtFfAOZQ)46FeoJ|d~)6qMAXfR=hkgjT-Rnzx+rH(8$xrm zsjIlU${teR(ArpU16qP=Zq$;ZBu-jRu*aWx-0ItVZNt_(tbETdd+*?3E39g^?XA^z zp`p&UNjkN0(?-i$n6&#p_Ke*lUHD3=lhoe#fEBK7wW@{|Ypl_+i*~ntp>CUIxrs*k z0UKj-8gGBcazJ^@(8m7~srP*GU;dHZE9rBSmiu#xH`~Ad@BT>TQe#;HaZi2mH^OfJ zZ5x^_XR*e<^gCa)?BW_t%5(~k>g8(MrFX3U^v#2@7zK3>|3)twT178(&J0)#z(`_{ z;&QZBhWas9WRQxnde^KYgZkHnWaAg2cNb5acx0)QP- zuVzX70MAH|k)EP{f^?68JLCbL-RRv1DkQ}m&(|fO%b-t*9@kPo(%uc~uj?f7L(eqQ zN7mWX0=&Gl{;@XoJK{lD>2UN?_fj>(2gG( zKs<$nf}ZrLzUfd_0MoS!6X~LR#Xn&o8Dymb{eL9#=n(^Skeb2^eOEvjy8XCOet>5; zQ5z#Z5x}b}24HI9s`3W>0_c6>#RgP1lrrg}9Ii>N1D#sR9my*zF04K<`EtXUL!7CH zNWNXV>+bRz%#`vMu%9hD$`W9VD%C};29SQF#sEiFQqZZU{jvfBe|WRnq9}*{0lj$w zB~BP5=}yB$1_?RoM*kh4%t{PphHf}{8YVIFLo)cL{7D0Td{u%zg#JheeuQ#`FX|}s zi&3AzWEwy4^7cm_Qw|(qnXi3btl)+64zX0Rt6Y$3Gf@BlZ%}&-l5_P3tju5!KjJ|j z$o`F!k`$wljz2atGpQ|6-$g!8NwPd5H4mix7$yr$T8V2|v5`OWk9rerbdFZB$Y+i< z#EsL0kl@p&P&K){iIZXahE-ky@YEbP#Os5aTRR6@p?PN*0uC9Z*%3<_3FDFv|4x3A zfJv!P3@I}!bw)Htu`C-MEu;;Fi&}C81c%c%mJ$h_^jstvUR;x7l~v_8bS_JL6t7T| z5*94AQ;--ovqVy&gyRQz%<3e7?rxpQs&ug25ibz(AuQ(-mz$UQXsMJOIQrgNtp@Q+EZ8}V;$vx?t3NMne6Mx3vY!}1sDqhnaD3AfM% zm7rDlAm~-Gjym0R9B-u@mQ$9F+p_)2eA9EfS(#Cfmj=z1NTN~Gn>sry zxX_k4ZG-nv!9#)~3Uuypi=5OGv*|E$N~B4($}JN1=^ozKp)c6k*%=0DB+Y7qm& zhBf#AEC9Q80(nST@5ADlPtL*Uc{Y2cV79&q?T`VeczCu9f~JQ#qe#_ z#=|B}B+xI0f7}o^HhD!-L)0;%6G0sKat1OW0ieQ0qp&orrDVEcfCU>rc3bZ(g- zq%!m&Q>r&iHqaAAf)%8S@>?lM@uu3+pc=E9aRc4!s{&Dz0D4J4Q8Qs96>2-g1JDmJ zK;49}085-~aHq+)juGRmeB5aH7jp0Dq5Y z^1?ag%U~?>0GPcjeO&75kkknPQg`ZHXzD9c?US8ja-Rrw0<{x>^=k4x9v$8ZhY1Te zPX^#9JIa8KX4C`XMY*%F5#Y%+&!m++VL=f97zftL{5f?efOe@&&|gxfoWjBi2z7^5 z6d(tn9V!fbf2LmKbRb`?}Ik%248W5KTO~!K0M)rA#X_|^_gD)?Q&#e zVS#`*Dj}4qyeV$dE7!?sbvmoOM8XdE#PM3h@z(z?$9$E3qrsKU3el{HN(2xJfKf4} zvIbqlSOlZYBs=v_?)geU0f~^mIVCo%VJcIo#8q|C(meyAEXX-(hkQmArBc!-OxQ3X zx224LG~{d)2Sq4kF7YK!NC05PAM|NL84#x2;IYIfkSu>k=?zf`8O}xr`0&e;nn`0z z13tocJRgETh2w^b5W;keq~}U*PD(`}T+EI19zx{ewBhSU;)ux#f0MoVH=$ts+dr=R z4wmGZ@>b=@uJx!KR97^h1`w;|9t_|FLp=gSGoVmMC>KKU^g`odgtYOMuwX_Tl^;|J zS3epS&PdZ>!Z(||FkCweU*hDn;SI*lRByP4dZ_mhKRg9@QLC;pF@rCiN{CZ%7fIYW zOL@h&f5u7t-QA$O(ctQ4nIct?P8CnfvR&dW5uarHP-bFEeiB=ipq^1)UPl`eoJdb{ zB$lIhotNk%g(FE@ZYnAKEL$GSzV4^INR!cnsh>d&`E%V_Hv(hoaZ^e|KRy>_Ln`zHAd!Id+xpFoNKO` zd8x_wy_;nWt~qF*WTZaNcuuuFy23<7@Ww~ltg}4M2++85x>uB6WdP=6ShC@vHCE z?^adsJ*_Wl3*YN)$8w*)OaJ1bM&Z$eo@i(c`%;)M>M`@9TdlztY^Z6d@s>MnwKM^J zTJF5-wX31JpW_~&8_ZE(84OuIH{~=6&djpa3S`9PzjUp>K-P2m(bisCBcjD-W>;@^ z(+BlL3h>q@HX zhx>yVffdQrnWAf#bY5$a>yj=+1}AsRu3jENKAXL?a^F@)uM)OxfI5h#bGc~S)A9w= zl=02aCiJQ%bH^7gcnW|H;TSb~%~fv&oGWlZ46dI-F(vDyN4=Bq|0ycDjD#1hDbjaT zj=y*$bTvaL3sa|&JF0aL(Dvh&$NxCx;6-|v_4u+Tmry)S z|J?hxp+~c_Tepxu034U@7CdN?>u;4Oi&A+6E??6$9pYBD+(6=&`5PAL!}(jR zG9{0cKkd6vn66!A+0t$Jl5|bKSxe-qh}F7$MB9&STIwqdCB*z)21&uuXFD+Gp6g+{m%1akNSqE91VWbv>vE%h&D5^t|m0Y8P|mZu01W>`ouht z>6>1RhtYIbEhip!HS_d`j5bnTDx<))#m}_KkhBWe|y$;aY(Q| z1}xIPq+ptOPnf_teqCD<#w&Mgw>k~fB(buqaC$~0eUQ@g&!+xgfjB>v`;t*lLE~E7 zhE6xXtgMv!Ua=ZALq5uUD=G-XijPmxndH!O318HZd6t~0z0rR3{EhiO%p$q1B~$UE4d^j(e8*ZRY*qjTqarjEgRwXi1W z<^n)=Os@U?jHYv=%5LX}O|PgL^-G%%KLE81yueze_#aC{KPu_%AFWi!^DQ_gN5l*c zv&U)4mMB*(dvr_7k@FebA}L8dP7+cU0VRI*{Cv`KQcny7;I%oRDv^KIlawAP#T#j< zm-8gay|RDqBRyoHsf@DtFR5LIZbKto$ZN{Iq z{619GekgZ$4rL$RnOgtG;ggw^o^x1OR$Oo591v}XkIn3=> z-zB%A%zkrT6k?LkiiPw!fzDe!S;+ko5SQxW1u#uYdOvyiy=h=JRD_XYtZI{j{ z!njP}RDHds5Pg!#V;O**n9EeV7o3A)=X}CZh8Yb$UsZVAxbv1C9+9l9-q>!i?RDX@ zN^l|hUD?-SFCGx>Z@SFew~DKaj2y1z6RU6Gj6L!S+G(W|hAoy?`6xQVIWuy7u|d@@ z+b40HO>DOH#Y*L`i<%nMD1@e^hc{$IW3tMPD+1#TBtHMN85==kL*F+ZWnNAAj`c)D zmlO&Iihjcl7Z>B8{lNnc@LjRA}8 z)ub!R*H=;`H4dailDi?J^ejda^TTdR0=;ZwsjreRu}h(=Np%0D1T!WD^Yd3lv&r#b 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

  • 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/tsa_arma0.png b/docs/source/_static/images/tsa_arma0.png new file mode 100644 index 0000000000000000000000000000000000000000..36a83c8e3fffb5384eb05bc10b77c17b247b4fda GIT binary patch literal 15478 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 YImv3qHQbULDPKQ&NLfDhfZ^r;2kM?hWdHyG literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/tsa_dates.png b/docs/source/_static/images/tsa_dates.png new file mode 100644 index 0000000000000000000000000000000000000000..d8067e1c1d83c6bec69356a739106feffa8064f5 GIT binary patch literal 31404 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 oB9a*rQ1iFOyKwzK0DZ45u>b%7 literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/tsa_filters.png b/docs/source/_static/images/tsa_filters.png new file mode 100644 index 0000000000000000000000000000000000000000..f8a6ad6464977af7bcce2719e6c8ef0504cd389a GIT binary patch literal 38917 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 literal 0 HcmV?d00001 diff --git a/docs/source/images/statsmodels_hybi_banner.png b/docs/source/images/statsmodels_hybi_banner.png new file mode 100644 index 0000000000000000000000000000000000000000..7d15ff99b4176a91ea4e4d0044203958f980801a GIT binary patch literal 41918 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 literal 0 HcmV?d00001 diff --git a/docs/source/images/statsmodels_hybi_banner.svg b/docs/source/images/statsmodels_hybi_banner.svg new file mode 100644 index 0000000..6fc0fa8 --- /dev/null +++ b/docs/source/images/statsmodels_hybi_banner.svg @@ -0,0 +1,316 @@ + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + SM + + + + StatsModels Statistics in Python + + + + diff --git a/docs/source/images/statsmodels_hybi_favico.ico b/docs/source/images/statsmodels_hybi_favico.ico new file mode 100644 index 0000000000000000000000000000000000000000..4a0469ecad3679ddb40289ab15121414c01288a6 GIT binary patch literal 7358 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 SVd1TSr>4J){eQe}H1HEjpHY7R literal 0 HcmV?d00001 diff --git a/docs/source/images/tk.png b/docs/source/images/tk.png new file mode 100644 index 0000000000000000000000000000000000000000..fbf8b144e67ad089bf86b6d2781962f990d8e9c2 GIT binary patch literal 17535 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 MX({HMvAXr&0B^4R)c^nh literal 0 HcmV?d00001 diff --git a/docs/source/images/tm.png b/docs/source/images/tm.png new file mode 100644 index 0000000000000000000000000000000000000000..d3900bbca44b9d9cb7f23d584dd0303efd81baaa GIT binary patch literal 12276 zcmeHtc{tQ<+yB=VB{5M5@uVme+Q?qEN>N%UYo?-P%bKyJJ0{C$Ar(;(Nk}C-EzGo9 zQkJZl%1)DIEW^C#HI}>kzMuPf-sk!2_dAZa<8bty?{Zz|b)MJt`JCH@J;sK73zjXw zFpO`>Ar2pejfPe$8(ejzvsJdKje;K{729q+db{n z6Bs6i?a4gVSnu(buCs>4p}k+20dK(bDQ!xl_Iho40Pl7uPWUx#pb(1 zX2Cta6t&+B*6-YzBO~D;*q5BP8^7|a%)4Myhl@dYoSa6^JP{=`U;nC zsOik6Po8U8^|c;P9~qgPYc4%Z|1SHpC=Q|_}l150d z^I+J;2#g)WR!RrKo!2~4@Ob_I-TrTMQWNdTCZ4`$^-(L(r)*VYW1Q#wq^sC^_Ay?* zudkc(-SLf2oessaDV-`hVkstV{&$-Gc)-HKqIMOg6fET1eENjm8leUK!Cde&-#R^V z(O)fguCu?N6eDj&z8h=3?24=jDI_E$Z|r-Vyc#{Tus@97uZ@HDxvpe0IZ{j*J?0Pi zajv?$dT+;lHq7?xVx4)k-p7?>3GXJHVkzVFyEqla6{K|%2ij{bTp~@=gmRls8}+sn zt2>uYj*Ncc4-^r$bls{!D-#@65W_Ho2PqGDMP65E489xvrWh!S!`-}jllCbqAgA4Z zAipEwn#P%*%9M2_qwT8Hhz;#e8=b?|`}6STj$Bw!wGMakwoff5`@CNo>XkWK58hCn z9IBz(Yfm(|#&BU+QW$o*>MRF$yR7!uj-s*mE)@kr820Kn?DBRK6BC6)k5=A@i=$pi zWE`#i2FjG_4O+QJF2=6w!(CdHE`Ry=_i;&g@2={(4Chafef!PfkrDC%Gpi+Hn@?efMi$NXp|v}>xC}4{N(K{ryVIxv0k5vxCx~({5?AdXpf{Fs zW0-VQPtIo^Dd~vPD)uxOh>+35?w{QQ$xn%5nSY_aNS1L73K9l(RiY(=|Y@)aep|R19-rwx`Km<;f z7F%+JeWL&7{yZwlXY5-nzNP344!3u;kenL5u5`+?Xz=Dh1ov_usgluhMe?TH`rZ63J)u zODMkf!66)uM)EF_uGrEMZ=Qepn8wdn(w=FeAcmU6#RWhd2Ztvua-AbpN@$UjU!+&u z$<9{R8n2EbCq-#3(`JrUh8F5!n8*^&i)!_`E;jG3DdV5fx@uAl_4Eu44ZGnC+Ug1D zbl*x(mzOb)S8elY&911Z_y}j@8PS%T^VMB?sdjs+_WObbB4Z=H7ktX)A7!$O7{PGY zHl8r`@bu(UZSg+!A$iBS1Z_CCY?RNRKi|p7aPnF3n{peWHT;^Yayw)2aVDoh%0QsD zU0o(IVL2P;n>9o-7X6?63)Xeq|wl$}05*;?5Or`f7II6FC2 zw!L^D@?JZYV7sf~NtX&6r)tS*7tCzDdZBot1bnXIVy!Xu^$M*sDQZNrr>pCNiyu|Y zZECE8aw7HS)gzutn}>$_kKV@s5FXxG>zV!R= z<5U3d2rYvN*OZQIQ?M%7__?u>`s^%+^07D3M56hlqdOQ>?J2y1`9mo%j3C17Mwe1e zfNjaLOsm561P!IDXr?jYMQ^$Z0X$MVC#@5>-QI7iD|>#9Te{sLy|2G;fK)h8qQ2n# zHpVDLo3x=qReI-L)99Ud@mlgnoATV;n3HtMn;3cOXUD8av?G+=zrU-`cel6nsMbHE zDK4^)B#zUuRr0Tlk~Vyl!68CGfb(X#CjiX-sWx5PTdmAVVw`iBdG?B)owi2{=q*I= z;-1dtcI%1H57N(8mk%Fy>J7s3k8*R)vj+o*VeDToO9+U>O9)8Gv-4au^3t(&_0kD? z0OI#Y?=%dYFSRFO5zoaXY@DxdmUw&g1?ilbeLTb^AR(~2l4t4MQ?6fs^2$k@?@7QZ zu*OwalXA6FlhQfJDIn$D8}#f#0~_0;6(C3w2fJ(v2m4WdjO{dK5l{TJ89~$y9=4T5 z*s>kM=>#v!)4$ymSCr1k)=z6u7dz-RY%;gc}-WLXds&&exS z^AWVR-2@5BvvfZh*3AX)O28^bVYH=aWgak^!NVX0q&<-5jmUHMM^e+PjDdyB-3K&h z-LFvz{?ulpDiRH==Cw{Z+tk&y#rMboa8~9=oSGeIXh@_qc<1a;HFa!k^Xx$xNXUvy z((F9@U(AXEB7=)`bnCP(_mjbJb0UHUSRzK)Zas$dDlo0r7|<>215lY97~`)Wqd{i} zQV0Fa4)mX{6{!#pHeo3jr*JOBR&7ZVks`%bUGhC1h`Um^QgrYPwM)Rme<6C9@0;X{)TCkkSZR?l}8) z7Z<(T7dmKe@*oJr--V6r2W>KXE4~$5SU3KR(n2YzAKJNRx?Q zyCAK{hN+fWIyLU|{klC;{buJT5sRm%E|>(4*LY@#Jp@a36B6n<*i3&ewlc7{w~zO% zJ;XsWiC4{L_IzW|B$;lfT1zywhHmqh3zz&j4`Q4;6=C6=ze;O3&E!+6?XAQ`Jo~{3 zdepY6V9|1)wzII%7U6*adLgwtJ&Sb3L~D!JK#PP*tDk$(j~BeO{7Qf4szGr5)Z5H0 zEE;cx4?J_ZW*_=yNYf<3_Bn0IFK(vj6`9>?&ap}9>FFSgC7~~emZDO;roW&ka|(~V z?Twqkc~@x>L2hNd|473z7HRRtaG(vXCZ&`IG$q`$Ia9_<=M50AL2qkm;Ij^|-sVD; z6)RG9#~mDL8VF=gxb^3EECL$sooHoFDIHwEScmp83x!O{MP~+CdUI*ROAXq5P7h zw0)@t+2#=w{e_B~Pt{ko`dSotoOqI(O95xz?oIR>@HK=3X~HbVVvG$^@26*mT`^W$ zgB0jk`v8rV%rri%7X@5i!yX~clYZuvI*njU0U{5u~ghX-p$|v5Y^OAMdteOP@m}t z@BbU^^^HA+At6M?z%A|F>Bxn6IuM}JekXjz$Uu}2RqS!*JOlnZ#~eU{uRGI(sv8{v zz>dt|%g$DXLc|j@SYd#~ z141DTW!;}04#4Hx>{x)GF&kzuv>ecAZXj4p{0zj&1IwJAf%8nz-Z$V11bwXgK&OZo zSog=-iNFM_X6DNe2}vpidW(kFkt}Mvcf&_lk;E{#F+K@~UyI&_4I=^HZJNDCJ`QjI z5+^l#FUIy^F)SKTuzTYs;9b@)P}?UEJy{0W=?+{2JAFjc^akm8f^Fx%2U=iV-%XXh zvxn&LBTH;Q+Fyf<`M&NniK5Bh3u*kpo;DxkXVKKjJU+#XH$cKSEM|HMT1CH*h7I8} zL68H@>?USCEiJ5r1n|vz2VDc*{xgX{*{nH4o(Fe#{&Ed^JBjoNCr&Lga#lGoS!&vA z7B?b|V*Qxr4|3LmboLU5p9hrw7%V-T=uPl3X?5*9W`v=@U z?2s)NG||8nx7Y<2JOVRz5lT9jv#0r7Uxx?2%66>FgdjcJq52MycukYwC9dJ4gwWso ziNoHF8^ue{4oNa;lC5NG0H(2Xj%xZHj!{#ML}jkMuU|8);JX?=qr6NWVU_c;vHh?0m+ef%a{l;|Yq+ z<-Ex&f}*osT1xAMBsmMKxGHE{~z7SdZrMh44g zf3MOiu07dhLKSNrHE8Y*$p#o;?fAjRy zj3S=6!QL2+wLFkP+sg3@g3b{0O}D^6aOQuaY{+V%_4j17dtnGXIikKaFfclxgWO4= z_eTG9(YEk8n3%KDoNsVG(Dn3k7tH`-gL`dZt`VlKVf^x>>Pf26j956mx>>z-A+61eMTcmQFDfeki85v)UAO<$CWvBv-qqVul;=N|FlR~)Wb8l=!|f&YZ@+C*MP?e%ftW|eSvr8rkcSxG2kO#e+dDw4~n~V zL62su#rggLpP+ycBoVnmHUPF$n;yj0;l>T%ArB-mxJgw2yE|u}KrFEargQELdR7I{ z%(@1|x($R9J-tF(2lyXx8lSq9(ne4b>pmK1_I>p2?3kLGxbxfe&ILByk^{-3i*|A3 zSJ&Vf3qrPmrFVd|)K@q*&X8@uCctV#K0<4LAEk#r|ceFVx!OH~Ty(nb6-w;$Ur?s(-SrK4$cr9e##j1% z-%wpuB~X)UlBFA?BZ=(pUnv&esk5L(Uc3xBm)Vr%;W>_Vwgja#Q(5= z0Q?8>RsLwNy|!4f^ICRKAcv5Yfinnmwqk4WttI}|pFgYJdRv`KfuKjZbIe48rsvo1 zo){iDo*Ebi(MP_sCwnQJT3raOLD|uWQGiRtU5f_lZK?YWN#Yk)8C@;o)*gL+4M4p4 zBq!+@H)jY$G^RgIt+;cWy(}1=hT36$jk)|?jC^;96ad-|(%RJ{4nT;p5qt-VnZnW} zbA{tp2K_#1>+q0_qx7AI)ZB33qz}q3n-}|fGWuGloDkhX7%Gf26#ft;zGZQxHq$Qx zve(vQZ_KVv7Uw!OZeAFLk(VQDvBvG^v-RGb5s7=S{`k9VxC#0|lxdpBJ6bV;ZlG88 z3xcvEOyADip?1uvNm{pAshV>Uja*R2kKgT*1v-a>kj_r) z`)?7WG`Ue&33u~6*CWhdBAcGPj`#6fHk3^Exk$P{0G|g%>nM83^6zu3{_w%H^23o` z-GnS1>})r{4r@42oaO1)tFj>$QS}>j-E~uK6NJr8-mU)GM_z_Z)i!>(Ym`)6tO*Hr zfqf~vF6=YjvZ`fjB$t2mOlth;okK%I;&exyzVUVO;Mfl%?{~-FF$z^#;u2I}?wWS} zmN*Do^BwOtiD8rnW5KoQ?K;`7k*m*ddmg&eN|>;4dHiW`sJyfW2zDU$_t|SR!zPlosohR;j410K}hx zQZDow05pPOUI2#98DLn400zPl)+e^GU5%%4(h?p1I(iW}-^nN;1wd)INKAKA_KUn3%K~4XX!_@R{>to3^^xGJ%K_0 zF+D*JLSOU*Fg6GN-w(121L1Any&I5yBl-m#=7jW(SZFIZ=Sc)l==%90o#75b| zsv5!SDuKPM{FpH?32R7_xN-nj4opAuigb|9T0p=wK)`iFL-ov{!w6-OAh5d6v)6wX zYIZav5~5Y~H7IlLeY89jFd;EOv2&vSo!DqDL`Aa-m|eoJ-y-!PxiHQB9!@JeGBTE8wY(0$d2R$E2H>$T4to)*>C@DUNA0{Ky~Dh z<-viQy9R#&tcJU5s^{WT8-txeDN!_d7hwvLH{B@ML?%la7{f2*y$3n^>3vet5rwgT zjQhjt{*E?eH3t4wUG&nelOl0&Je{U3d+wTcU;xTp>{e+OqPGxS;=NnW0DCMgw{xo+ zbS@sQ1vYVeyEd2QG>$a7L`hEl2z7hTC0qs(%%yw2A{J;T!am%upWyHkngYU5FF=uH zY&N*D^*N4aP;o?Yi=N)Q1Wolt%QZymYy$lu6}NiXGE!nI+t{L&m0eG-Ll zoe+vZg%ah?AnPIS?ni4cck8UWUH{nLq`^H<#ZOPK==-Lu3pFO%ngJt^6Zr@kL7>Ms zEW7?Cv36j<9aSR(eqKo|i)&?kKa!3c1)pk<7yyAB`*u;N@hZEum$6YMNS?1mRl$S}ztnLu zmalqoudY#SuN;&Cc%{vi_GFuDe0d*wFCn&Pz0B?#9!={E&CJZ0btcJx)R_g{_v;@X z(e<0`vC(#ZsG8u^`1F98LWG;Y@Gf?qg*O-REZpDE*S78U#jTshj&P<&h;BGuHZ?hs zv|mob{ny&hKwn>^d{)u=+AJGMFsr@aS82&KiwvdOVJoGE8Aya6PuZoV2o>3(awF;P zH#t5G^sxBx@%M5BXPXW@{HDcZ`K?-4%J}IU%ZtAOdNqdqU;ftf-v%Uq&5XG(@18UZt1t0xE`7Ak)S6{4eriVJ$5!Q~1VQm#A&G z1$t^T!eOIG3~s1|n!T!Po6aK&hCd6Ka1$^gX4`;^&6X?q@Z!|=TWY1F`ei3l_5B9p za7$Wx*hVF^8Ar+_C-;_d@aq*(B_KYTEg2hV!uC*~KG90upu5k9ws9j!+FJ?gV9AQH zM?i>h%L_sSIQB~2qJVjjB$|E+a02DC0AnJ20T2E#5_r(8mrP)qs@nu(Gth(`rLj!RQzvK~f||WBP)I1O7HCEU zBAaJFAXNu0r|riYwzFR#vj;vGd;{Kz1|mBi7#*g4iBe3E#Eb9+7W6^j4qr_V1(skv zfbGXOrGM@QLgOE&`67J5>ne7Y6M6(WMU`n<6B+jPjj(y{3Z#JOG0EB_%HqchSHvmk zCxl`P`KK9Csas;pilAqId^9@<5_)zBsC5&PiTH;JyFe#%dIYa!IbiObRjWS= z?Uj?5yrI2l*r<|@ON)5+n9M2_z0NlC z`mck7*EF*;))V{t`^`)I&OCYYr0lo(f_89TvmxgZR^k7*h5k$tvJ4uHWxiKZ-zyU( zp)TWAvs;0YfHG7dzGS$3$B3$}0=OApAihYx#bHXW&9F$y&)>3C z!QAy7tvp&wUCTBp30 zoPQxwM>ozupwK$l365_1K}Gc8vJjT5zrc>4+*RIHT==bwA(&j|e@X$~hYQ#`wG6tznYK+q@nlVi2@)BR@B6_^eF1euh(cAXf zxc6h)J_y>#W~Jkw5NAHgk!Ys;B@IUVV5C?Mo`x6-fS?*#28}9I!DFLe|^CAI_U2g|!Zr9=5j{;-7wo=T3)cKz~VYG6&w&b@Lm zq%k8^=cc?o=F|kM3#Kopj+_-RoQ?{jz0ed_^#l5f&ZKgzf3f}J|63hMK?QQC5e$3A z1BA2344NWK!TtPay-_J^de}wou{!^rJ^VSa4D;u_h)Y3f^u-u<%NZc}&#jfFhEdv6 zK9;^+cTv-ah>EjiJXn`jn_IF8wfj&5m`ltoajjz&-iyuVD;1#@qOqUfklTS8#;$L$ zCqr59(K_C?Jj<-RvOyoK2P?HDU3_ce+6NPvetr{;t)#%oy1+=}_#{p?B$jt*(et6E z35j87CR@28z&-XFB%-&lT8E+nhLYZ$v(N_i9ewT;`1o0La%Zt52K_Ha<#<={Y|vSjsh~4L+8y>*m2>=uhn9F;iniW7Dt!s zVyc-L7P$r>6LitEU89BzE0T0W7nLVy64u{ecuNgU)Dg52nl!~wW(0tHG&XQ77B#^5 zO${bS5s9dL9#J~gQ%XV^r$ol_-TpBV9hwl6zqxDnOf7L+v7*C-5$e2xNfNLaxn(0`TJ7R>u- zHJ|OC%(@RaoyF!)PaT4Cip>QgkxV9!#+8o6<&AuHly2_~ALdhO5?pp`sg#tIJSa!6SkVqJazJCW?HsKm zaH@mCI5rQn9nG^gGQ@V+LSc8hgDG#cJsfqpX-za#l0TW*NTenP_%i8`RvqO-NygSkzHA{Ue@P@s*seTXe3i6nXkk3$!vH>@Cv387eyMkR*@f!*dJ$+C z*tthk$LXJ^i5{)yy>${yYlyvm20d^hk&%&jhMa1uupEq2el0zc6SOUj_MV4AIJ)W>> dir(sm) + ['GLM', 'GLS', 'GLSAR', 'Logit', 'MNLogit', 'OLS', 'Poisson', 'Probit', 'RLM', + 'WLS', '__builtins__', '__doc__', '__file__', '__name__', '__package__', + 'add_constant', 'categorical', 'datasets', 'distributions', 'families', + 'graphics', 'iolib', 'nonparametric', 'qqplot', 'regression', 'robust', + 'stats', 'test', 'tools', 'tsa', 'version'] + + >>> dir(sm.graphics) + ['__builtins__', '__doc__', '__file__', '__name__', '__package__', + 'abline_plot', 'beanplot', 'fboxplot', 'interaction_plot', 'qqplot', + 'rainbow', 'rainbowplot', 'violinplot'] + + >>> dir(sm.tsa) + ['AR', 'ARMA', 'DynamicVAR', 'SVAR', 'VAR', '__builtins__', '__doc__', + '__file__', '__name__', '__package__', 'acf', 'acovf', 'add_lag', + 'add_trend', 'adfuller', 'ccf', 'ccovf', 'datetools', 'detrend', + 'filters', 'grangercausalitytests', 'interp', 'lagmat', 'lagmat2ds', + 'pacf', 'pacf_ols', 'pacf_yw', 'periodogram', 'q_stat', 'stattools', + 'tsatools', 'var'] + +Notes +^^^^^ + +The `api` modules may not include all the public functionality of statsmodels. If +you find something that should be added to the api, please file an issue on +github or report it to the mailing list. + +The subpackages of statsmodels include `api.py` modules that are mainly +intended to collect the imports needed for those subpackages. The `subpackage/api.py` +files are imported into statsmodels api, for example :: + + from .nonparametric import api as nonparametric + +Users do not need to load the `subpackage/api.py` modules directly. + +Direct import for programs +-------------------------- + +``statsmodels`` submodules are arranged by topic (e.g. `discrete` for discrete +choice models, or `tsa` for time series analysis). Our directory tree (stripped +down) looks something like this:: + + statsmodels/ + __init__.py + api.py + discrete/ + __init__.py + discrete_model.py + tests/ + results/ + tsa/ + __init__.py + api.py + tsatools.py + stattools.py + arima_model.py + arima_process.py + vector_ar/ + __init__.py + var_model.py + tests/ + results/ + tests/ + results/ + stats/ + __init__.py + api.py + stattools.py + tests/ + tools/ + __init__.py + tools.py + decorators.py + tests/ + +The submodules that can be import heavy contain an empty `__init__.py`, except +for some testing code for running tests for the submodules. The intention is to +change all directories to have an `api.py` and empty `__init__.py` in the next +release. + +Import examples +^^^^^^^^^^^^^^^ + +Functions and classes:: + + from statsmodels.regression.linear_model import OLS, WLS + from statsmodels.tools.tools import rank, add_constant + +Modules :: + + from statsmodels.datasets import macrodata + import statsmodels.stats import diagnostic + +Modules with aliases :: + + import statsmodels.regression.linear_model as lm + import statsmodels.stats.diagnostic as smsdia + import statsmodels.stats.outliers_influence as oi + +We do not have currently a convention for aliases of submodules. + diff --git a/docs/source/imputation.rst b/docs/source/imputation.rst new file mode 100644 index 0000000..c7efcce --- /dev/null +++ b/docs/source/imputation.rst @@ -0,0 +1,52 @@ +.. module:: statsmodels.imputation.mice + :synopsis: Multiple imputation for missing data + +.. currentmodule:: statsmodels.imputation.mice + +.. _imputation: + + +Multiple Imputation with Chained Equations +========================================== + +The MICE module allows most Statsmodels models to be fit to a dataset +with missing values on the independent and/or dependent variables, and +provides rigorous standard errors for the fitted parameters. The +basic idea is to treat each variable with missing values as the +dependent variable in a regression, with some or all of the remaining +variables as its predictors. The MICE procedure cycles through these +models, fitting each in turn, then uses a procedure called "predictive +mean matching" (PMM) to generate random draws from the predictive +distributions determined by the fitted models. These random draws +become the imputed values for one imputed data set. + +By default, each variable with missing variables is modeled using a +linear regression with main effects for all other variables in the +data set. Note that even when the imputation model is linear, the PMM +procedure preserves the domain of each variable. Thus, for example, +if all observed values for a given variable are positive, all imputed +values for the variable will always be positive. The user also has +the option to specify which model is used to produce imputed values +for each variable. + +.. code + + +Classes +------- + +.. currentmodule:: statsmodels.imputation.mice + +.. autosummary:: + :toctree: generated/ + + MICE + MICEData + + +Implementation Details +---------------------- + +Internally, this function uses +`pandas.isnull `_. +Anything that returns True from this function will be treated as missing data. diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 0000000..d75da98 --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,143 @@ +.. :tocdepth: 2 + +Welcome to Statsmodels's Documentation +====================================== + +:mod:`statsmodels` is a Python module that provides classes and functions for the estimation +of many different statistical models, as well as for conducting statistical tests, and statistical +data exploration. An extensive list of result statistics are available for each estimator. +The results are tested against existing statistical packages to ensure that they are correct. The +package is released under the open source Modified BSD (3-clause) license. +The online documentation is hosted at `statsmodels.org `__. + + +Minimal Examples +---------------- + +Since version ``0.5.0`` of ``statsmodels``, you can use R-style formulas +together with ``pandas`` data frames to fit your models. Here is a simple +example using ordinary least squares: + +.. ipython:: python + + import numpy as np + import statsmodels.api as sm + import statsmodels.formula.api as smf + + # Load data + dat = sm.datasets.get_rdataset("Guerry", "HistData").data + + # Fit regression model (using the natural log of one of the regressors) + results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit() + + # Inspect the results + print(results.summary()) + +You can also use ``numpy`` arrays instead of formulas: + +.. ipython:: python + + import numpy as np + import statsmodels.api as sm + + # Generate artificial data (2 regressors + constant) + nobs = 100 + X = np.random.random((nobs, 2)) + X = sm.add_constant(X) + beta = [1, .1, .5] + e = np.random.random(nobs) + y = np.dot(X, beta) + e + + # Fit regression model + results = sm.OLS(y, X).fit() + + # Inspect the results + print(results.summary()) + +Have a look at `dir(results)` to see available results. Attributes are +described in `results.__doc__` and results methods have their own docstrings. + +Citation +-------- + +When using statsmodels in scientific publication, please consider using the +following citation: + + Seabold, Skipper, and Josef Perktold. "`Statsmodels: Econometric and statistical modeling with python. `_" *Proceedings of the 9th Python in Science Conference.* 2010. + +Bibtex entry:: + + @inproceedings{seabold2010statsmodels, + title={Statsmodels: Econometric and statistical modeling with python}, + author={Seabold, Skipper and Perktold, Josef}, + booktitle={9th Python in Science Conference}, + year={2010}, + } + +Basic Documentation +------------------- + +.. toctree:: + :maxdepth: 3 + + release/index + gettingstarted + example_formulas + install + about + +Information about the structure and development of +statsmodels: + +.. toctree:: + :maxdepth: 1 + + endog_exog + importpaths + pitfalls + dev/index + dev/internal + +Table of Contents +----------------- + +.. toctree:: + :maxdepth: 3 + + regression + glm + gee + gam + rlm + mixed_linear + discretemod + mixed_glm + anova + tsa + statespace + vector_ar + duration + stats + nonparametric + gmm + contingency_tables + imputation + multivariate + emplike + miscmodels + distributions + graphics + iolib + tools + datasets/index + sandbox + large_data + optimization + + +Indices and tables +------------------ + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` diff --git a/docs/source/install.rst b/docs/source/install.rst new file mode 100644 index 0000000..4171c1b --- /dev/null +++ b/docs/source/install.rst @@ -0,0 +1,135 @@ +:orphan: + +.. _install: + +Installation +============ + +Pre-packaged binaries +--------------------- + +To obtain the latest released version of statsmodels using pip:: + + pip install -U statsmodels + +Or follow `this link to our PyPI page `__, download +the wheel or source and install. + +Statsmodels is also available in through conda provided by +`Anaconda `__. The latest release can +be installed using:: + + conda install -c conda-forge statsmodels + +For Windows users, unofficial recent binaries (wheels) are occasionally +available `here `__. + +Obtaining the Source +-------------------- + +We do not release very often but the master branch of our source code is +usually fine for everyday use. You can get the latest source from our +`github repository `__. Or if you +have git installed:: + + git clone git://github.com/statsmodels/statsmodels.git + +If you want to keep up to date with the source on github just periodically do:: + + git pull + +in the statsmodels directory. + +Installation from Source +------------------------ + +You will need a C compiler installed to build statsmodels. If you are building +from the github source and not a source release, then you will also need +Cython. You can follow the instructions below to get a C compiler setup for +Windows. + +If your system is already set up with pip, a compiler, and git, you can try:: + + pip install git+https://github.com/statsmodels/statsmodels + +If you do not have pip installed or want to do the installation more manually, +you can also type:: + +.. code-block:: bash + + python setup.py install + +Or even more manually + +.. code-block:: bash + + python setup.py build + python setup.py install + +statsmodels can also be installed in `develop` mode which installs statsmodels +into the current python environment in-place. The advantage of this is that +edited modules will immediately be re-interpreted when the python interpreter +restarts without having to re-install statsmodels. + +.. code-block:: bash + + python setup.py develop + +Linux +^^^^^ + +If you are using Linux, we assume that you are savvy enough to install `gcc` on +your own. More than likely, its already installed. + +Windows +^^^^^^^ + +It is strongly recommended to use 64-bit Python if possible. + +Getting the right compiler is especially confusing for Windows users. Over time, +Python has been built using a variety of different Windows C compilers. +`This guide `_ should help +clarify which version of Python uses which compiler by default. + +Mac +^^^ + +Installing statsmodels on MacOS will requires installing `gcc` which provides +a suitable C compiler. We recommend installing Xcode and the Command Line +Tools. + +Dependencies +------------ + +The current minimum dependencies are: + +* `Python `__ >= 2.7, including Python 3.4+ +* `NumPy `__ >= 1.11 +* `SciPy `__ >= 0.18 +* `Pandas `__ >= 0.19 +* `Patsy `__ >= 0.4.0 +* `Cython `__ >= 0.24 is required to build the code from + github but not from a source distribution. + +Given the long release cycle, Statsmodels follows a loose time-based policy for +dependencies: minimal dependencies are lagged about one and a half to two +years. Our next planned update of minimum versions in `setup.py` is expected in +September 2018, when we will update to reflect Numpy >= 1.12 (released January +2017), Scipy >= 0.19 (released March 2017) and Pandas >= 0.20 (released May +2017). + +Optional Dependencies +--------------------- + +* `Matplotlib `__ >= 1.5 is needed for plotting + functions and running many of the examples. +* If installed, `X-12-ARIMA `__ or + `X-13ARIMA-SEATS `__ can be used + for time-series analysis. +* `pytest `__ is required to run + the test suite. +* `IPython `__ >= 3.0 is required to build the + docs locally or to use the notebooks. +* `joblib `__ >= 0.9 can be used to accelerate distributed + estimation for certain models. +* `jupyter `__ is needed to run the notebooks. diff --git a/docs/source/iolib.rst b/docs/source/iolib.rst new file mode 100644 index 0000000..9347384 --- /dev/null +++ b/docs/source/iolib.rst @@ -0,0 +1,46 @@ +.. currentmodule:: statsmodels.iolib + +.. _iolib: + +Input-Output :mod:`iolib` +========================= + +``statsmodels`` offers some functions for input and output. These include a +reader for STATA files, a class for generating tables for printing in several +formats and two helper functions for pickling. + +Users can also leverage the powerful input/output functions provided by :ref:`pandas.io `. Among other things, ``pandas`` (a ``statsmodels`` dependency) allows reading and writing to Excel, CSV, and HDF5 (PyTables). + +Examples +-------- + + `SimpleTable: Basic example `__ + +Module Reference +---------------- + +.. module:: statsmodels.iolib + :synopsis: Tools for reading datasets and producing summary output + +.. autosummary:: + :toctree: generated/ + + foreign.StataReader + foreign.StataWriter + foreign.genfromdta + foreign.savetxt + table.SimpleTable + table.csv2st + smpickle.save_pickle + smpickle.load_pickle + + +The following are classes and functions used to return the summary of +estimation results, and mostly intended for internal use. There are currently +two versions for creating summaries. + +.. autosummary:: + :toctree: generated/ + + summary.Summary + summary2.Summary diff --git a/docs/source/large_data.rst b/docs/source/large_data.rst new file mode 100644 index 0000000..a1d3a4d --- /dev/null +++ b/docs/source/large_data.rst @@ -0,0 +1,69 @@ +.. module:: statsmodels.base.distributed_estimation +.. currentmodule:: statsmodels.base.distributed_estimation + +Working with Large Data Sets +============================ + +Big data is something of a buzzword in the modern world. While statsmodels +works well with small and moderately-sized data sets that can be loaded in +memory--perhaps tens of thousands of observations--use cases exist with +millions of observations or more. Depending your use case, statsmodels may or +may not be a sufficient tool. + +statsmodels and most of the software stack it is written on operates in +memory. Resultantly, building models on larger data sets can be challenging +or even impractical. With that said, there are 2 general strategies for +building models on larger data sets with statsmodels. + +Divide and Conquer - Distributing Jobs +-------------------------------------- + +If your system is capable of loading all the data, but the analysis you are +attempting to perform is slow, you might be able to build models on horizontal +slices of the data and then aggregate the individual models once fit. + +A current limitation of this approach is that it generally does not support +`patsy `_ so constructing your +design matrix (known as `exog`) in statsmodels, is a little challenging. + +A detailed example is available +`here `_. + +.. autosummary:: + :toctree: generated/ + + DistributedModel + DistributedResults + +Subsetting your data +-------------------- + +If your entire data set is too large to store in memory, you might try storing +it in a columnar container like `Apache Paruqet `_ +or `bcolz `_. Using the patsy formula +interface, statsmodels will use the `__getitem__` function (i.e. data['Item']) +to pull only the specified columns. + +.. code-block:: python + + import pyarrow as pa + import pyarrow.parquet as pq + import statsmodels.formula.api as smf + + class DataSet(dict): + def __init__(self, path): + self.parquet = pq.ParquetFile(path) + + def __getitem__(self, key): + try: + return self.parquet.read([key]).to_pandas()[key] + except: + raise KeyError + + LargeData = DataSet('LargeData.parquet') + + res = smf.ols('Profit ~ Sugar + Power + Women', data=LargeData).fit() + +Additionally, you can add code to this example `DataSet` object to return only +a subset of the rows until you have built a good model. Then, you can refit +your final model on more data. diff --git a/docs/source/miscmodels.rst b/docs/source/miscmodels.rst new file mode 100644 index 0000000..2389ea5 --- /dev/null +++ b/docs/source/miscmodels.rst @@ -0,0 +1,61 @@ + + + +.. module:: statsmodels.miscmodels +.. currentmodule:: statsmodels.miscmodels + + +.. _miscmodels: + + +Other Models :mod:`miscmodels` +============================== + +:mod:`statsmodels.miscmodels` contains model classes and that do not yet fit into +any other category, or are basic implementations that are not yet polished and will most +likely still change. Some of these models were written as examples for the generic +maximum likelihood framework, and there will be others that might be based on general +method of moments. + +The models in this category have been checked for basic cases, but might be more exposed +to numerical problems than the complete implementation. For example, count.Poisson has +been added using only the generic maximum likelihood framework, the standard errors +are based on the numerical evaluation of the Hessian, while discretemod.Poisson uses +analytical Gradients and Hessian and will be more precise, especially in cases when there +is strong multicollinearity. +On the other hand, by subclassing GenericLikelihoodModel, it is easy to add new models, +another example can be seen in the zero inflated Poisson model, miscmodels.count. + + +Count Models :mod:`count` +-------------------------- + +.. module:: statsmodels.miscmodels.count +.. currentmodule:: statsmodels.miscmodels.count + +.. autosummary:: + :toctree: generated/ + + PoissonGMLE + PoissonOffsetGMLE + PoissonZiGMLE + +Linear Model with t-distributed errors +-------------------------------------- + +This is a class that shows that a new model can be defined by only specifying the +method for the loglikelihood. All result statistics are inherited from the generic +likelihood model and result classes. The results have been checked against R for a +simple case. + +.. module:: statsmodels.miscmodels.tmodel +.. currentmodule:: statsmodels.miscmodels.tmodel + +.. autosummary:: + :toctree: generated/ + + TLinearModel + + + + diff --git a/docs/source/missing.rst b/docs/source/missing.rst new file mode 100644 index 0000000..9094292 --- /dev/null +++ b/docs/source/missing.rst @@ -0,0 +1,35 @@ +:orphan: + +.. _missing_data: + +Missing Data +------------ +All of the models can handle missing data. For performance reasons, the default is not to do any checking for missing data. If, however, you would like for missing data to be handled internally, you can do so by using the missing keyword argument. The default is to do nothing + +.. ipython:: python + + import statsmodels.api as sm + data = sm.datasets.longley.load(as_pandas=False) + data.exog = sm.add_constant(data.exog) + # add in some missing data + missing_idx = np.array([False] * len(data.endog)) + missing_idx[[4, 10, 15]] = True + data.endog[missing_idx] = np.nan + ols_model = sm.OLS(data.endog, data.exog) + ols_fit = ols_model.fit() + print(ols_fit.params) + +This silently fails and all of the model parameters are NaN, which is probably not what you expected. If you are not sure whether or not you have missing data you can use `missing = 'raise'`. This will raise a `MissingDataError` during model instantiation if missing data is present so that you know something was wrong in your input data. + +.. ipython:: python + :okexcept: + + ols_model = sm.OLS(data.endog, data.exog, missing='raise') + +If you want statsmodels to handle the missing data by dropping the observations, use `missing = 'drop'`. + +.. ipython:: python + + ols_model = sm.OLS(data.endog, data.exog, missing='drop') + +We are considering adding a configuration framework so that you can set the option with a global setting. diff --git a/docs/source/mixed_glm.rst b/docs/source/mixed_glm.rst new file mode 100644 index 0000000..878cac0 --- /dev/null +++ b/docs/source/mixed_glm.rst @@ -0,0 +1,55 @@ +.. currentmodule:: statsmodels.genmod.bayes_mixed_glm + +Generalized Linear Mixed Effects Models +======================================= + +Generalized Linear Mixed Effects (GLIMMIX) models are generalized +linear models with random effects in the linear predictors. +Statsmodels currently supports estimation of binomial and Poisson +GLIMMIX models using two Bayesian methods: the Laplace approximation +to the posterior, and a variational Bayes approximation to the +posterior. Both methods provide point estimates (posterior means) and +assessments of uncertainty (posterior standard deviation). + +The current implementation only supports independent random effects. + +Technical Documentation +----------------------- + +Unlike Statsmodels mixed linear models, the GLIMMIX implementation is +not group-based. Groups are created by interacting all random effects +with a categorical variable. Note that this creates large, sparse +random effects design matrices `exog_vc`. Internally, `exog_vc` is +converted to a scipy sparse matrix. When passing the arguments +directly to the class initializer, a sparse matrix may be passed. +When using formulas, a dense matrix is created then converted to +sparse. For very large problems, it may not be feasible to use +formulas due to the size of this dense intermediate matrix. + +References +^^^^^^^^^^ + +Blei, Kucukelbir, McAuliffe (2017). Variational Inference: A review +for Statisticians https://arxiv.org/pdf/1601.00670.pdf + +Module Reference +---------------- + +.. module:: statsmodels.genmod.bayes_mixed_glm + :synopsis: Bayes Mixed Generalized Linear Models + + +The model classes are: + +.. autosummary:: + :toctree: generated/ + + BinomialBayesMixedGLM + PoissonBayesMixedGLM + +The result class is: + +.. autosummary:: + :toctree: generated/ + + BayesMixedGLMResults diff --git a/docs/source/mixed_linear.rst b/docs/source/mixed_linear.rst new file mode 100644 index 0000000..4e50a40 --- /dev/null +++ b/docs/source/mixed_linear.rst @@ -0,0 +1,196 @@ +.. currentmodule:: statsmodels.regression.mixed_linear_model + +.. _mixedlmmod: + +Linear Mixed Effects Models +=========================== + +Linear Mixed Effects models are used for regression analyses involving +dependent data. Such data arise when working with longitudinal and +other study designs in which multiple observations are made on each +subject. Some specific linear mixed effects models are + +* *Random intercepts models*, where all responses in a group are + additively shifted by a value that is specific to the group. + +* *Random slopes models*, where the responses in a group follow a + (conditional) mean trajectory that is linear in the observed + covariates, with the slopes (and possibly intercepts) varying by + group. + +* *Variance components models*, where the levels of one or more + categorical covariates are associated with draws from distributions. + These random terms additively determine the conditional mean of each + observation based on its covariate values. + +The Statsmodels implementation of LME is primarily group-based, +meaning that random effects must be independently-realized for +responses in different groups. There are two types of random effects +in our implementation of mixed models: (i) random coefficients +(possibly vectors) that have an unknown covariance matrix, and (ii) +random coefficients that are independent draws from a common +univariate distribution. For both (i) and (ii), the random effects +influence the conditional mean of a group through their matrix/vector +product with a group-specific design matrix. + +A simple example of random coefficients, as in (i) above, is: + +.. math:: + + Y_{ij} = \beta_0 + \beta_1X_{ij} + \gamma_{0i} + \gamma_{1i}X_{ij} + \epsilon_{ij} + +Here, :math:`Y_{ij}` is the :math:`j^\rm{th}` measured response for subject +:math:`i`, and :math:`X_{ij}` is a covariate for this response. The +"fixed effects parameters" :math:`\beta_0` and :math:`\beta_1` are +shared by all subjects, and the errors :math:`\epsilon_{ij}` are +independent of everything else, and identically distributed (with mean +zero). The "random effects parameters" :math:`\gamma_{0i}` and +:math:`\gamma_{1i}` follow a bivariate distribution with mean zero, +described by three parameters: :math:`{\rm var}(\gamma_{0i})`, +:math:`{\rm var}(\gamma_{1i})`, and :math:`{\rm cov}(\gamma_{0i}, +\gamma_{1i})`. There is also a parameter for :math:`{\rm +var}(\epsilon_{ij})`. + +A simple example of variance components, as in (ii) above, is: + +.. math:: + + Y_{ijk} = \beta_0 + \eta_{1i} + \eta_{2j} + \epsilon_{ijk} + +Here, :math:`Y_{ijk}` is the :math:`k^\rm{th}` measured response under +conditions :math:`i, j`. The only "mean structure parameter" is +:math:`\beta_0`. The :math:`\eta_{1i}` are independent and +identically distributed with zero mean, and variance :math:`\tau_1^2`, +and the :math:`\eta_{2j}` are independent and identically distributed +with zero mean, and variance :math:`\tau_2^2`. + +Statsmodels MixedLM handles most non-crossed random effects models, +and some crossed models. To include crossed random effects in a +model, it is necessary to treat the entire dataset as a single group. +The variance components arguments to the model can then be used to +define models with various combinations of crossed and non-crossed +random effects. + +The Statsmodels LME framework currently supports post-estimation +inference via Wald tests and confidence intervals on the coefficients, +profile likelihood analysis, likelihood ratio testing, and AIC. + +Examples +-------- + +.. ipython:: python + + import statsmodels.api as sm + import statsmodels.formula.api as smf + + data = sm.datasets.get_rdataset("dietox", "geepack").data + + md = smf.mixedlm("Weight ~ Time", data, groups=data["Pig"]) + mdf = md.fit() + print(mdf.summary()) + +Detailed examples can be found here + +* `Mixed LM `__ + +There are some notebook examples on the Wiki: +`Wiki notebooks for MixedLM `_ + + + +Technical Documentation +----------------------- + +The data are partitioned into disjoint groups. +The probability model for group :math:`i` is: + +.. math:: + + Y = X\beta + Z\gamma + Q_1\eta_1 + \cdots + Q_k\eta_k + \epsilon + +where + +* :math:`n_i` is the number of observations in group :math:`i` +* :math:`Y` is a :math:`n_i` dimensional response vector +* :math:`X` is a :math:`n_i * k_{fe}` dimensional matrix of fixed effects + coefficients +* :math:`\beta` is a :math:`k_{fe}`-dimensional vector of fixed effects slopes +* :math:`Z` is a :math:`n_i * k_{re}` dimensional matrix of random effects + coefficients +* :math:`\gamma` is a :math:`k_{re}`-dimensional random vector with mean 0 + and covariance matrix :math:`\Psi`; note that each group + gets its own independent realization of gamma. +* :math:`Q_j` is a :math:`n_i \times q_j` dimensional design matrix for the + :math:`j^\rm{th}` variance component. +* :math:`\eta_j` is a :math:`q_j`-dimensional random vector containing independent + and identically distributed values with variance :math:`\tau_j^2`. +* :math:`\epsilon` is a :math:`n_i` dimensional vector of i.i.d normal + errors with mean 0 and variance :math:`\sigma^2`; the :math:`\epsilon` + values are independent both within and between groups + +:math:`Y, X, \{Q_j\}` and :math:`Z` must be entirely observed. :math:`\beta`, +:math:`\Psi`, and :math:`\sigma^2` are estimated using ML or REML estimation, +and :math:`\gamma`, :math:`\{\eta_j\}` and :math:`\epsilon` are +random so define the probability model. + +The marginal mean structure is :math:`E[Y|X,Z] = X*\beta`. If only +the marginal mean structure is of interest, GEE is a good alternative +to mixed models. + +Notation: + +* :math:`cov_{re}` is the random effects covariance matrix (referred + to above as :math:`\Psi`) and :math:`scale` is the (scalar) error + variance. There is also a single estimated variance parameter + :math:`\tau_j^2` for each variance component. For a single group, + the marginal covariance matrix of endog given exog is + :math:`scale*I + Z * cov_{re} * Z`, where :math:`Z` is the design + matrix for the random effects in one group. + +References +^^^^^^^^^^ + +The primary reference for the implementation details is: + +* MJ Lindstrom, DM Bates (1988). *Newton Raphson and EM algorithms for + linear mixed effects models for repeated measures data*. Journal of + the American Statistical Association. Volume 83, Issue 404, pages 1014-1022. + +See also this more recent document: + +* http://econ.ucsb.edu/~doug/245a/Papers/Mixed%20Effects%20Implement.pdf + +All the likelihood, gradient, and Hessian calculations closely follow +Lindstrom and Bates. + +The following two documents are written more from the perspective of +users: + +* http://lme4.r-forge.r-project.org/lMMwR/lrgprt.pdf + +* http://lme4.r-forge.r-project.org/slides/2009-07-07-Rennes/3Longitudinal-4.pdf + +.. Class hierarchy: TODO + + General references for this class of models are + +Module Reference +---------------- + +.. module:: statsmodels.regression.mixed_linear_model + :synopsis: Mixed Linear Models + + +The model class is: + +.. autosummary:: + :toctree: generated/ + + MixedLM + +The result class is: + +.. autosummary:: + :toctree: generated/ + + MixedLMResults diff --git a/docs/source/multivariate.rst b/docs/source/multivariate.rst new file mode 100644 index 0000000..ced9f8d --- /dev/null +++ b/docs/source/multivariate.rst @@ -0,0 +1,91 @@ +.. module:: statsmodels.multivariate + :synopsis: Models for multivariate data + +.. currentmodule:: statsmodels.multivariate + +.. _multivariate: + + +Multivariate Statistics :mod:`multivariate` +=========================================== + +This section includes methods and algorithms from multivariate statistics. + + +Principal Component Analysis +---------------------------- + +.. module:: statsmodels.multivariate.pca + :synopsis: Principal Component Analaysis + +.. currentmodule:: statsmodels.multivariate.pca + +.. autosummary:: + :toctree: generated/ + + PCA + pca + + +Factor Analysis +--------------- + +.. currentmodule:: statsmodels.multivariate.factor + +.. autosummary:: + :toctree: generated/ + + Factor + FactorResults + + +Factor Rotation +--------------- + +.. currentmodule:: statsmodels.multivariate.factor_rotation + +.. autosummary:: + :toctree: generated/ + + rotate_factors + target_rotation + procrustes + promax + + +Canonical Correlation +--------------------- + +.. currentmodule:: statsmodels.multivariate.cancorr + +.. autosummary:: + :toctree: generated/ + + CanCorr + + +MANOVA +------ + +.. currentmodule:: statsmodels.multivariate.manova + +.. autosummary:: + :toctree: generated/ + + MANOVA + + +MultivariateOLS +--------------- + +`_MultivariateOLS` is a model class with limited features. Currently it +supports multivariate hypothesis tests and is used as backend for MANOVA. + +.. currentmodule:: statsmodels.multivariate.multivariate_ols + +.. autosummary:: + :toctree: generated/ + + _MultivariateOLS + _MultivariateOLSResults + MultivariateTestResults diff --git a/docs/source/nonparametric.rst b/docs/source/nonparametric.rst new file mode 100644 index 0000000..d9a47f5 --- /dev/null +++ b/docs/source/nonparametric.rst @@ -0,0 +1,116 @@ +.. currentmodule:: statsmodels.nonparametric + +.. _nonparametric: + + +Nonparametric Methods :mod:`nonparametric` +========================================== + +This section collects various methods in nonparametric statistics. This +includes kernel density estimation for univariate and multivariate data, +kernel regression and locally weighted scatterplot smoothing (lowess). + +sandbox.nonparametric contains additional functions that are work in progress +or don't have unit tests yet. We are planning to include here nonparametric +density estimators, especially based on kernel or orthogonal polynomials, +smoothers, and tools for nonparametric models and methods in other parts of +statsmodels. + + +Kernel density estimation +------------------------- + +The kernel density estimation (KDE) functionality is split between univariate +and multivariate estimation, which are implemented in quite different ways. + +Univariate estimation (as provided by `KDEUnivariate`) uses FFT transforms, +which makes it quite fast. Therefore it should be preferred for *continuous, +univariate* data if speed is important. It supports using different kernels; +bandwidth estimation is done only by a rule of thumb (Scott or Silverman). + +Multivariate estimation (as provided by `KDEMultivariate`) uses product +kernels. It supports least squares and maximum likelihood cross-validation +for bandwidth estimation, as well as estimating mixed continuous, ordered and +unordered data. The default kernels (Gaussian, Wang-Ryzin and +Aitchison-Aitken) cannot be altered at the moment however. Direct estimation +of the conditional density (:math:`P(X | Y) = P(X, Y) / P(Y)`) is supported +by `KDEMultivariateConditional`. + +`KDEMultivariate` can do univariate estimation as well, but is up to two orders +of magnitude slower than `KDEUnivariate`. + + +Kernel regression +----------------- + +Kernel regression (as provided by `KernelReg`) is based on the same product +kernel approach as `KDEMultivariate`, and therefore has the same set of +features (mixed data, cross-validated bandwidth estimation, kernels) as +described above for `KDEMultivariate`. Censored regression is provided by +`KernelCensoredReg`. + +Note that code for semi-parametric partial linear models and single index +models, based on `KernelReg`, can be found in the sandbox. + + +References +---------- + +* B.W. Silverman, "Density Estimation for Statistics and Data Analysis" +* J.S. Racine, "Nonparametric Econometrics: A Primer," Foundation and + Trends in Econometrics, Vol. 3, No. 1, pp. 1-88, 2008. +* Q. Li and J.S. Racine, "Nonparametric econometrics: theory and practice", + Princeton University Press, 2006. +* Hastie, Tibshirani and Friedman, "The Elements of Statistical Learning: + Data Mining, Inference, and Prediction", Springer, 2009. +* Racine, J., Li, Q. "Nonparametric Estimation of Distributions + with Categorical and Continuous Data." Working Paper. (2000) +* Racine, J. Li, Q. "Kernel Estimation of Multivariate Conditional + Distributions Annals of Economics and Finance 5, 211-235 (2004) +* Liu, R., Yang, L. "Kernel estimation of multivariate + cumulative distribution function." Journal of Nonparametric Statistics + (2008) +* Li, R., Ju, G. "Nonparametric Estimation of Multivariate CDF + with Categorical and Continuous Data." Working Paper +* Li, Q., Racine, J. "Cross-validated local linear nonparametric + regression" Statistica Sinica 14(2004), pp. 485-512 +* Racine, J.: "Consistent Significance Testing for Nonparametric + Regression" Journal of Business & Economics Statistics +* Racine, J., Hart, J., Li, Q., "Testing the Significance of + Categorical Predictor Variables in Nonparametric Regression + Models", 2006, Econometric Reviews 25, 523-544 + + +Module Reference +---------------- + +.. module:: statsmodels.nonparametric + :synopsis: Nonparametric estimation of densities and curves + +The public functions and classes are + +.. autosummary:: + :toctree: generated/ + + smoothers_lowess.lowess + kde.KDEUnivariate + kernel_density.KDEMultivariate + kernel_density.KDEMultivariateConditional + kernel_density.EstimatorSettings + kernel_regression.KernelReg + kernel_regression.KernelCensoredReg + +helper functions for kernel bandwidths + +.. autosummary:: + :toctree: generated/ + + bandwidths.bw_scott + bandwidths.bw_silverman + bandwidths.select_bandwidth + +There are some examples for nonlinear functions in +:mod:`statsmodels.nonparametric.dgp_examples` + +The sandbox.nonparametric contains additional insufficiently tested classes +for testing functional form and for semi-linear and single index models. diff --git a/docs/source/optimization.rst b/docs/source/optimization.rst new file mode 100644 index 0000000..6852ed0 --- /dev/null +++ b/docs/source/optimization.rst @@ -0,0 +1,176 @@ +.. module:: statsmodels.base.optimizer +.. currentmodule:: statsmodels.base.optimizer + +Optimization +============ + +statsmodels uses three types of algorithms for the estimation of the parameters +of a model. + + 1. Basic linear models such as :ref:`WLS and OLS ` are directly + estimated using appropriate linear algebra. + 2. :ref:`RLM ` and :ref:`GLM `, use iteratively re-weighted + least squares. However, you can optionally select one of the scipy + optimizers discussed below. + 3. For all other models, we use + `optimizers `_ + from `scipy `_. + +Where practical, certain models allow for the optional selection of a +scipy optimizer. A particular scipy optimizer might be default or an option. +Depending on the model and the data, choosing an appropriate scipy optimizer +enables avoidance of a local minima, fitting models in less time, or fitting a +model with less memory. + +statsmodels supports the following optimizers along with keyword arguments +associated with that specific optimizer: + +- ``newton`` - Newton-Raphson iteration. While not directly from scipy, we + consider it an optimizer because only the score and hessian are required. + + tol : float + Relative error in params acceptable for convergence. + +- ``nm`` - scipy's ``fmin_nm`` + + xtol : float + Relative error in params acceptable for convergence + ftol : float + Relative error in loglike(params) acceptable for + convergence + maxfun : int + Maximum number of function evaluations to make. + +- ``bfgs`` - Broyden–Fletcher–Goldfarb–Shanno optimization, scipy's + ``fmin_bfgs``. + + gtol : float + Stop when norm of gradient is less than gtol. + norm : float + Order of norm (np.Inf is max, -np.Inf is min) + epsilon + If fprime is approximated, use this value for the step + size. Only relevant if LikelihoodModel.score is None. + +- ``lbfgs`` - A more memory-efficient (limited memory) implementation of + ``bfgs``. Scipy's ``fmin_l_bfgs_b``. + + m : int + The maximum number of variable metric corrections used to + define the limited memory matrix. (The limited memory BFGS + method does not store the full hessian but uses this many + terms in an approximation to it.) + pgtol : float + The iteration will stop when + ``max{|proj g_i | i = 1, ..., n} <= pgtol`` where pg_i is + the i-th component of the projected gradient. + factr : float + The iteration stops when + ``(f^k - f^{k+1})/max{|f^k|,|f^{k+1}|,1} <= factr * eps``, + where eps is the machine precision, which is automatically + generated by the code. Typical values for factr are: 1e12 + for low accuracy; 1e7 for moderate accuracy; 10.0 for + extremely high accuracy. See Notes for relationship to + ftol, which is exposed (instead of factr) by the + scipy.optimize.minimize interface to L-BFGS-B. + maxfun : int + Maximum number of iterations. + epsilon : float + Step size used when approx_grad is True, for numerically + calculating the gradient + approx_grad : bool + Whether to approximate the gradient numerically (in which + case func returns only the function value). + +- ``cg`` - Conjugate gradient optimization. Scipy's ``fmin_cg``. + + gtol : float + Stop when norm of gradient is less than gtol. + norm : float + Order of norm (np.Inf is max, -np.Inf is min) + epsilon : float + If fprime is approximated, use this value for the step + size. Can be scalar or vector. Only relevant if + Likelihoodmodel.score is None. + +- ``ncg`` - Newton conjugate gradient. Scipy's ``fmin_ncg``. + + fhess_p : callable f'(x, \*args) + Function which computes the Hessian of f times an arbitrary + vector, p. Should only be supplied if + LikelihoodModel.hessian is None. + avextol : float + Stop when the average relative error in the minimizer + falls below this amount. + epsilon : float or ndarray + If fhess is approximated, use this value for the step size. + Only relevant if Likelihoodmodel.hessian is None. + +- ``powell`` - Powell's method. Scipy's ``fmin_powell``. + + xtol : float + Line-search error tolerance + ftol : float + Relative error in loglike(params) for acceptable for + convergence. + maxfun : int + Maximum number of function evaluations to make. + start_direc : ndarray + Initial direction set. + +- ``basinhopping`` - Basin hopping. This is part of scipy's ``basinhopping`` + tools. + + niter : integer + The number of basin hopping iterations. + niter_success : integer + Stop the run if the global minimum candidate remains the + same for this number of iterations. + T : float + The "temperature" parameter for the accept or reject + criterion. Higher "temperatures" mean that larger jumps + in function value will be accepted. For best results + `T` should be comparable to the separation (in function + value) between local minima. + stepsize : float + Initial step size for use in the random displacement. + interval : integer + The interval for how often to update the `stepsize`. + minimizer : dict + Extra keyword arguments to be passed to the minimizer + `scipy.optimize.minimize()`, for example 'method' - the + minimization method (e.g. 'L-BFGS-B'), or 'tol' - the + tolerance for termination. Other arguments are mapped from + explicit argument of `fit`: + - `args` <- `fargs` + - `jac` <- `score` + - `hess` <- `hess` + +- ``minimize`` - Allows the use of any scipy optimizer. + + min_method : str, optional + Name of minimization method to use. + Any method specific arguments can be passed directly. + For a list of methods and their arguments, see + documentation of `scipy.optimize.minimize`. + If no method is specified, then BFGS is used. + +Model Class +----------- + +Generally, there is no need for an end-user to directly call these functions +and classes. However, we provide the class because the different optimization +techniques have unique keyword arguments that may be useful to the user. + +.. autosummary:: + :toctree: generated/ + + Optimizer + _fit_newton + _fit_bfgs + _fit_lbfgs + _fit_nm + _fit_cg + _fit_ncg + _fit_powell + _fit_basinhopping diff --git a/docs/source/pitfalls.rst b/docs/source/pitfalls.rst new file mode 100644 index 0000000..f7de1cd --- /dev/null +++ b/docs/source/pitfalls.rst @@ -0,0 +1,94 @@ +Pitfalls +======== + +This page lists issues which may arise while using statsmodels. These +can be the result of data-related or statistical problems, software design, +"non-standard" use of models, or edge cases. + +statsmodels provides several warnings and helper functions for diagnostic +checking (see this `blog article +`_ +for an example of misspecification checks in linear regression). The coverage +is of course not comprehensive, but more warnings and diagnostic functions will +be added over time. + +While the underlying statistical problems are the same for all statistical +packages, software implementations differ in the way extreme or corner cases +are handled. Please report corner cases for which the models might not work, so +we can treat them appropriately. + +Repeated calls to fit with different parameters +----------------------------------------------- + +Result instances often need to access attributes from the corresponding model +instance. Fitting a model multiple times with different arguments can change +model attributes. This means that the result instance may no longer point to +the correct model attributes after the model has been re-fit. + +It is therefore best practice to create separate model instances when we want +to fit a model using different fit function arguments. + +For example, this works without problem because we are not keeping the results +instance for further use :: + + mod = AR(endog) + aic = [] + for lag in range(1,11): + res = mod.fit(maxlag=lag) + aic.append(res.aic) + + +However, when we want to hold on to two different estimation results, then it +is recommended to create two separate model instances. :: + + mod1 = RLM(endog, exog) + res1 = mod1.fit(scale_est='mad') + mod2 = RLM(endog, exog) + res2 = mod2.fit(scale_est=sm.robust.scale.HuberScale()) + + +Unidentified Parameters +----------------------- + +Rank deficient exog, perfect multicollinearity +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Models based on linear models, GLS, RLM, GLM and similar, use a generalized +inverse. This means that: + ++ Rank deficient matrices will not raise an error ++ Cases of almost perfect multicollinearity or ill-conditioned design matrices might produce numerically unstable results. Users need to manually check the rank or condition number of the matrix if this is not the desired behavior + +Note: Statsmodels currently fails on the NIST benchmark case for Filip if the +data is not rescaled, see `this blog `_ + +Incomplete convergence in maximum likelihood estimation +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +In some cases, the maximum likelihood estimator might not exist, parameters +might be infinite or not unique (e.g. (quasi-)separation in models with binary +endogenous variable). Under the default settings, statsmodels will print +a warning if the optimization algorithm stops without reaching convergence. +However, it is important to know that the convergence criteria may sometimes +falsely indicate convergence (e.g. if the value of the objective function +converged but not the parameters). In general, a user needs to verify +convergence. + +For binary Logit and Probit models, statsmodels raises an exception if perfect +prediction is detected. There is, however, no check for quasi-perfect +prediction. + +Other Problems +-------------- + +Insufficient variation in the data +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +It is possible that there is insufficient variation in the data for small +datasets or for data with small groups in categorical variables. In these +cases, the results might not be identified or some hidden problems might occur. + +The only currently known case is a perfect fit in robust linear model estimation. +For RLM, if residuals are equal to zero, then it does not cause an exception, +but having this perfect fit can produce NaNs in some results (scale=0 and 0/0 +division) (issue #55). diff --git a/docs/source/plots/arma_predict_plot.py b/docs/source/plots/arma_predict_plot.py new file mode 100644 index 0000000..f0abfb0 --- /dev/null +++ b/docs/source/plots/arma_predict_plot.py @@ -0,0 +1,11 @@ +import statsmodels.api as sm +import matplotlib.pyplot as plt +import pandas as pd + +dta = sm.datasets.sunspots.load_pandas().data[['SUNACTIVITY']] +dta.index = pd.date_range(start='1700', end='2009', freq='A') +res = sm.tsa.ARMA(dta, (3, 0)).fit(disp=0) +fig, ax = plt.subplots() +ax = dta.loc['1950':].plot(ax=ax) +res.plot_predict('1990', '2012', dynamic=True, ax=ax, + plot_insample=False) diff --git a/docs/source/plots/bkf_plot.py b/docs/source/plots/bkf_plot.py new file mode 100644 index 0000000..944afda --- /dev/null +++ b/docs/source/plots/bkf_plot.py @@ -0,0 +1,9 @@ +import statsmodels.api as sm + +from load_macrodata import dta + +cycles = sm.tsa.filters.bkfilter(dta[['realinv']], 6, 24, 12) + +import matplotlib.pyplot as plt +fig, ax = plt.subplots() +cycles.plot(ax=ax, style=['r--', 'b-']) diff --git a/docs/source/plots/cff_plot.py b/docs/source/plots/cff_plot.py new file mode 100644 index 0000000..313b7e1 --- /dev/null +++ b/docs/source/plots/cff_plot.py @@ -0,0 +1,9 @@ +import statsmodels.api as sm + +from load_macrodata import dta + +cf_cycles, cf_trend = sm.tsa.filters.cffilter(dta[["infl", "unemp"]]) + +import matplotlib.pyplot as plt +fig, ax = plt.subplots() +cf_cycles.plot(ax=ax, style=['r--', 'b-']) diff --git a/docs/source/plots/graphics-mean_diff_plot.py b/docs/source/plots/graphics-mean_diff_plot.py new file mode 100644 index 0000000..7e441cf --- /dev/null +++ b/docs/source/plots/graphics-mean_diff_plot.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Test Bland-Altman +""" + +Author: Joses Ho + +""" + +import statsmodels.api as sm +import numpy as np +import matplotlib.pyplot as plt + +# Seed the random number generator. +# This ensures that the results below are reproducible. +np.random.seed(9999) +m1 = np.random.random(20) +m2 = np.random.random(20) + +f, ax = plt.subplots(1, figsize = (8,5)) +sm.graphics.mean_diff_plot(m1, m2, ax = ax) + +plt.show() diff --git a/docs/source/plots/graphics_boxplot_beanplot.py b/docs/source/plots/graphics_boxplot_beanplot.py new file mode 100644 index 0000000..efcd82c --- /dev/null +++ b/docs/source/plots/graphics_boxplot_beanplot.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +""" + +Created on Fri May 04 00:22:40 2012 + +Author: Ralf Gommers + +""" + +import numpy as np +import matplotlib.pyplot as plt +import statsmodels.api as sm +data = sm.datasets.anes96.load_pandas() +party_ID = np.arange(7) +labels = ["Strong Democrat", "Weak Democrat", "Independent-Democrat", + "Independent-Indpendent", "Independent-Republican", + "Weak Republican", "Strong Republican"] + +plt.rcParams['figure.subplot.bottom'] = 0.23 # keep labels visible +age = [data.exog['age'][data.endog == id] for id in party_ID] +fig = plt.figure() +ax = fig.add_subplot(111) +sm.graphics.beanplot(age, ax=ax, labels=labels, + plot_opts={'cutoff_val':5, 'cutoff_type':'abs', + 'label_fontsize':'small', + 'label_rotation':30}) +ax.set_xlabel("Party identification of respondent.") +ax.set_ylabel("Age") + +#plt.show() diff --git a/docs/source/plots/graphics_boxplot_violinplot.py b/docs/source/plots/graphics_boxplot_violinplot.py new file mode 100644 index 0000000..88a3101 --- /dev/null +++ b/docs/source/plots/graphics_boxplot_violinplot.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +""" + +Created on Fri May 04 00:11:32 2012 + +Author: Ralf Gommers + +""" +import numpy as np +import matplotlib.pyplot as plt +import statsmodels.api as sm + +data = sm.datasets.anes96.load_pandas() +party_ID = np.arange(7) +labels = ["Strong Democrat", "Weak Democrat", "Independent-Democrat", + "Independent-Indpendent", "Independent-Republican", + "Weak Republican", "Strong Republican"] +plt.rcParams['figure.subplot.bottom'] = 0.23 # keep labels visible +age = [data.exog['age'][data.endog == id] for id in party_ID] +fig = plt.figure() +ax = fig.add_subplot(111) +sm.graphics.violinplot(age, ax=ax, labels=labels, + plot_opts={'cutoff_val':5, 'cutoff_type':'abs', + 'label_fontsize':'small', + 'label_rotation':30}) +ax.set_xlabel("Party identification of respondent.") +ax.set_ylabel("Age") + +#plt.show() diff --git a/docs/source/plots/graphics_correlation_plot_corr.py b/docs/source/plots/graphics_correlation_plot_corr.py new file mode 100644 index 0000000..e3896bb --- /dev/null +++ b/docs/source/plots/graphics_correlation_plot_corr.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +""" +Create a plot of correlation among many variables in a grid + +""" + +import numpy as np +import matplotlib.pyplot as plt +import statsmodels.graphics.api as smg +import statsmodels.api as sm + +hie_data = sm.datasets.randhie.load_pandas() +corr_matrix = np.corrcoef(hie_data.data.T) +smg.plot_corr(corr_matrix, xnames=hie_data.names) +plt.show() diff --git a/docs/source/plots/graphics_correlation_plot_corr_grid.py b/docs/source/plots/graphics_correlation_plot_corr_grid.py new file mode 100644 index 0000000..0a43f5a --- /dev/null +++ b/docs/source/plots/graphics_correlation_plot_corr_grid.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +''' + In this example we just reuse the same correlation matrix several times. + Of course in reality one would show a different correlation (measuring a + another type of correlation, for example Pearson (linear) and Spearman, + Kendall (nonlinear) correlations) for the same variables. +''' +import numpy as np +import matplotlib.pyplot as plt +import statsmodels.api as sm + +hie_data = sm.datasets.randhie.load_pandas() +corr_matrix = np.corrcoef(hie_data.data.T) +sm.graphics.plot_corr_grid([corr_matrix] * 8, xnames=hie_data.names) +plt.show() diff --git a/docs/source/plots/graphics_functional_fboxplot.py b/docs/source/plots/graphics_functional_fboxplot.py new file mode 100644 index 0000000..c2a3505 --- /dev/null +++ b/docs/source/plots/graphics_functional_fboxplot.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +""" + +Created on Fri May 04 11:10:51 2012 + +Author: Ralf Gommers + +""" + +#Load the El Nino dataset. Consists of 60 years worth of Pacific Ocean sea +#surface temperature data. + +import numpy as np +import matplotlib.pyplot as plt +import statsmodels.api as sm +data = sm.datasets.elnino.load(as_pandas=False) + +#Create a functional boxplot. We see that the years 1982-83 and 1997-98 are +#outliers; these are the years where El Nino (a climate pattern +#characterized by warming up of the sea surface and higher air pressures) +#occurred with unusual intensity. + +fig = plt.figure() +ax = fig.add_subplot(111) +res = sm.graphics.fboxplot(data.raw_data[:, 1:], wfactor=2.58, + labels=data.raw_data[:, 0].astype(int), + ax=ax) + +ax.set_xlabel("Month of the year") +ax.set_ylabel("Sea surface temperature (C)") +ax.set_xticks(np.arange(13, step=3) - 1) +ax.set_xticklabels(["", "Mar", "Jun", "Sep", "Dec"]) +ax.set_xlim([-0.2, 11.2]) + +#plt.show() diff --git a/docs/source/plots/graphics_functional_hdrboxplot.py b/docs/source/plots/graphics_functional_hdrboxplot.py new file mode 100644 index 0000000..8465a25 --- /dev/null +++ b/docs/source/plots/graphics_functional_hdrboxplot.py @@ -0,0 +1,31 @@ +# coding: utf-8 + +#Load the El Nino dataset. Consists of 60 years worth of Pacific Ocean sea +#surface temperature data. + +import numpy as np +import matplotlib.pyplot as plt +import statsmodels.api as sm +data = sm.datasets.elnino.load(as_pandas=False) + +#Create a HDR functional boxplot. We see that the years 1982-83 and 1997-98 are +#outliers; these are the years where El Nino (a climate pattern +#characterized by warming up of the sea surface and higher air pressures) +#occurred with unusual intensity. + +fig = plt.figure() +ax = fig.add_subplot(111) +fig, res = sm.graphics.hdrboxplot(data.raw_data[:, 1:], + labels=data.raw_data[:, 0].astype(int), + ax=ax) + +ax.plot([0, 10], [25, 25]) +ax.set_xlabel("Month of the year") +ax.set_ylabel("Sea surface temperature (C)") +ax.set_xticks(np.arange(13, step=3) - 1) +ax.set_xticklabels(["", "Mar", "Jun", "Sep", "Dec"]) +ax.set_xlim([-0.2, 11.2]) + +plt.show() + +print(res) diff --git a/docs/source/plots/graphics_functional_rainbowplot.py b/docs/source/plots/graphics_functional_rainbowplot.py new file mode 100644 index 0000000..c6ace49 --- /dev/null +++ b/docs/source/plots/graphics_functional_rainbowplot.py @@ -0,0 +1,30 @@ +# -*- coding: utf-8 -*- +""" + +Created on Fri May 04 11:08:56 2012 + +Author: Ralf Gommers + +""" + +#Load the El Nino dataset. Consists of 60 years worth of Pacific Ocean sea +#surface temperature data. + +import numpy as np +import matplotlib.pyplot as plt +import statsmodels.api as sm +data = sm.datasets.elnino.load(as_pandas=False) + +#Create a rainbow plot: + +fig = plt.figure() +ax = fig.add_subplot(111) +res = sm.graphics.rainbowplot(data.raw_data[:, 1:], ax=ax) + +ax.set_xlabel("Month of the year") +ax.set_ylabel("Sea surface temperature (C)") +ax.set_xticks(np.arange(13, step=3) - 1) +ax.set_xticklabels(["", "Mar", "Jun", "Sep", "Dec"]) +ax.set_xlim([-0.2, 11.2]) + +#plt.show() diff --git a/docs/source/plots/graphics_gofplots_qqplot.py b/docs/source/plots/graphics_gofplots_qqplot.py new file mode 100644 index 0000000..5776674 --- /dev/null +++ b/docs/source/plots/graphics_gofplots_qqplot.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +""" +Created on Sun May 06 05:32:15 2012 + +Author: Josef Perktold +editted by: Paul Hobson (2012-08-19) +""" +from scipy import stats +from matplotlib import pyplot as plt +import statsmodels.api as sm + +#example from docstring +data = sm.datasets.longley.load(as_pandas=False) +data.exog = sm.add_constant(data.exog, prepend=True) +mod_fit = sm.OLS(data.endog, data.exog).fit() +res = mod_fit.resid + +left = -1.8 #x coordinate for text insert + +fig = plt.figure() + +ax = fig.add_subplot(2, 2, 1) +sm.graphics.qqplot(res, ax=ax) +top = ax.get_ylim()[1] * 0.75 +txt = ax.text(left, top, 'no keywords', verticalalignment='top') +txt.set_bbox(dict(facecolor='k', alpha=0.1)) + +ax = fig.add_subplot(2, 2, 2) +sm.graphics.qqplot(res, line='s', ax=ax) +top = ax.get_ylim()[1] * 0.75 +txt = ax.text(left, top, "line='s'", verticalalignment='top') +txt.set_bbox(dict(facecolor='k', alpha=0.1)) + +ax = fig.add_subplot(2, 2, 3) +sm.graphics.qqplot(res, line='45', fit=True, ax=ax) +ax.set_xlim(-2, 2) +top = ax.get_ylim()[1] * 0.75 +txt = ax.text(left, top, "line='45', \nfit=True", verticalalignment='top') +txt.set_bbox(dict(facecolor='k', alpha=0.1)) + +ax = fig.add_subplot(2, 2, 4) +sm.graphics.qqplot(res, dist=stats.t, line='45', fit=True, ax=ax) +ax.set_xlim(-2, 2) +top = ax.get_ylim()[1] * 0.75 +txt = ax.text(left, top, "dist=stats.t, \nline='45', \nfit=True", + verticalalignment='top') +txt.set_bbox(dict(facecolor='k', alpha=0.1)) + +fig.tight_layout() + +plt.gcf() + + +# example with the new ProbPlot class +import numpy as np +x = np.random.normal(loc=8.25, scale=3.5, size=37) +y = np.random.normal(loc=8.00, scale=3.25, size=37) +pp_x = sm.ProbPlot(x, fit=True) +pp_y = sm.ProbPlot(y, fit=True) + +# probability of exceedance +fig2 = pp_x.probplot(exceed=True) + +# compare x quantiles to y quantiles +fig3 = pp_x.qqplot(other=pp_y, line='45') + +# same as above with probabilities/percentiles +fig4 = pp_x.ppplot(other=pp_y, line='45') diff --git a/docs/source/plots/graphics_gofplots_qqplot_2samples.py b/docs/source/plots/graphics_gofplots_qqplot_2samples.py new file mode 100644 index 0000000..0ab6c5f --- /dev/null +++ b/docs/source/plots/graphics_gofplots_qqplot_2samples.py @@ -0,0 +1,16 @@ +''' +Create Q-Q Plot of two samples quanitiles of randomnly generated data. + +''' + +import statsmodels.api as sm +import numpy as np +import matplotlib.pyplot as plt +from statsmodels.graphics.gofplots import qqplot_2samples + +x = np.random.normal(loc=8.5, scale=2.5, size=37) +y = np.random.normal(loc=8.0, scale=3.0, size=37) +pp_x = sm.ProbPlot(x) +pp_y = sm.ProbPlot(y) +qqplot_2samples(pp_x, pp_y) +plt.show() diff --git a/docs/source/plots/graphics_gofplots_qqplot_qqline.py b/docs/source/plots/graphics_gofplots_qqplot_qqline.py new file mode 100644 index 0000000..a1126cb --- /dev/null +++ b/docs/source/plots/graphics_gofplots_qqplot_qqline.py @@ -0,0 +1,18 @@ +''' + Import the food expenditure dataset. Plot annual food expendeture on + x-axis and household income on y-axis. Use qqline to add regression line + into the plot. +''' +import statsmodels.api as sm +import matplotlib.pyplot as plt +from statsmodels.graphics.gofplots import qqline + +foodexp = sm.datasets.engel.load(as_pandas=False) +x = foodexp.exog +y = foodexp.endog +ax = plt.subplot(111) +plt.scatter(x, y) +ax.set_xlabel(foodexp.exog_name[0]) +ax.set_ylabel(foodexp.endog_name) +qqline(ax, 'r', x, y) +plt.show() diff --git a/docs/source/plots/graphics_mosaicplot_mosaic.py b/docs/source/plots/graphics_mosaicplot_mosaic.py new file mode 100644 index 0000000..acb838c --- /dev/null +++ b/docs/source/plots/graphics_mosaicplot_mosaic.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +import numpy as np +import pandas as pd +from itertools import product +import matplotlib.pyplot as plt +from statsmodels.graphics.mosaicplot import mosaic + +# The most simple use case is to take a dictionary and plot the result +data = {'a': 10, 'b': 15, 'c': 16} +mosaic(data, title='basic dictionary') +plt.show() + +# A more useful example is given by a dictionary with multiple indices. In +# this case we use a wider gap to a better visual separation of the resulting +# plot +data = {('a', 'b'): 1, ('a', 'c'): 2, ('d', 'b'): 3, ('d', 'c'): 4} +mosaic(data, gap=0.05, title='complete dictionary') +plt.show() + +# The same data can be given as a simple or hierarchical indexed Series +rand = np.random.random +tuples = list(product(['bar', 'baz', 'foo', 'qux'], ['one', 'two'])) +index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) +data = pd.Series(rand(8), index=index) +mosaic(data, title='hierarchical index series') +plt.show() + +# The third accepted data structureis the np array, for which a very simple +# index will be created. +rand = np.random.random +data = 1+rand((2, 2)) +mosaic(data, title='random non-labeled array') +plt.show() + +# If you need to modify the labeling and the coloring you can give a function +# to create the labels and one with the graphical properties starting from the +# key tuple + + +def props(key): + return {'color': 'r' if 'a' in key else 'gray'} + + +def labelizer(key): + return {('a',): 'first', ('b',): 'second', ('c',): 'third'}[key] + + +data = {'a': 10, 'b': 15, 'c': 16} +mosaic(data, title='colored dictionary', properties=props, labelizer=labelizer) +plt.show() + +# Using a DataFrame as source, specifying the name of the columns of interest +gender = ['male', 'male', 'male', 'female', 'female', 'female'] +pet = ['cat', 'dog', 'dog', 'cat', 'dog', 'cat'] +data = pd.DataFrame({'gender': gender, 'pet': pet}) +mosaic(data, ['pet', 'gender'], title='DataFrame as Source') +plt.show() diff --git a/docs/source/plots/graphics_plot_fit_ex.py b/docs/source/plots/graphics_plot_fit_ex.py new file mode 100644 index 0000000..347d689 --- /dev/null +++ b/docs/source/plots/graphics_plot_fit_ex.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +""" + +Created on Monday April 1st 2013 + +Author: Padarn Wilson + +""" + +# Load the Statewide Crime data set and perform linear regression with +# 'poverty' and 'hs_grad' as variables and 'muder' as the response + + +import statsmodels.api as sm +import matplotlib.pyplot as plt +import numpy as np + +data = sm.datasets.statecrime.load_pandas().data +murder = data['murder'] +X = data[['poverty', 'hs_grad']].copy() +X['constant'] = 1 + +y = murder +model = sm.OLS(y, X) +results = model.fit() + +# Create a plot just for the variable 'Poverty': + +fig, ax = plt.subplots() +fig = sm.graphics.plot_fit(results, 0, ax=ax) +ax.set_ylabel("Murder Rate") +ax.set_xlabel("Poverty Level") +ax.set_title("Linear Regression") + +plt.show() diff --git a/docs/source/plots/graphics_plot_grids_scatter_ellipse.py b/docs/source/plots/graphics_plot_grids_scatter_ellipse.py new file mode 100644 index 0000000..38cc1a3 --- /dev/null +++ b/docs/source/plots/graphics_plot_grids_scatter_ellipse.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +""" +Create of grid of scatter plots with confidence ellipses from the statecrime +dataset +""" + +import statsmodels.api as sm +import matplotlib.pyplot as plt +from statsmodels.graphics.plot_grids import scatter_ellipse + +data = sm.datasets.statecrime.load_pandas().data +fig = plt.figure(figsize=(8, 8)) +scatter_ellipse(data, varnames=data.columns, fig=fig) +plt.show() diff --git a/docs/source/plots/graphics_regression_abline.py b/docs/source/plots/graphics_regression_abline.py new file mode 100644 index 0000000..32d7f56 --- /dev/null +++ b/docs/source/plots/graphics_regression_abline.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +''' +Using the state crime dataset seperately plot the effect of the each +variable on the on the outcome, murder rate while accounting for the effect +of all other variables in the model. + +''' + +import numpy as np +import statsmodels.api as sm +import matplotlib.pyplot as plt + +np.random.seed(12345) +X = sm.add_constant(np.random.normal(0, 20, size=30)) +y = np.dot(X, [25, 3.5]) + np.random.normal(0, 30, size=30) +mod = sm.OLS(y, X).fit() +fig = sm.graphics.abline_plot(model_results=mod) +ax = fig.axes[0] +ax.scatter(X[:, 1], y) +ax.margins(.1) +plt.show() diff --git a/docs/source/plots/graphics_regression_ccpr.py b/docs/source/plots/graphics_regression_ccpr.py new file mode 100644 index 0000000..f9e0770 --- /dev/null +++ b/docs/source/plots/graphics_regression_ccpr.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +''' +Using the state crime dataset plot the effect of the rate of single +households ('single') on the murder rate while accounting for high school +graduation rate ('hs_grad'), percentage of people in an urban area, and rate +of poverty ('poverty'). + +''' + +import statsmodels.api as sm +import matplotlib.pyplot as plt +import statsmodels.formula.api as smf + +crime_data = sm.datasets.statecrime.load_pandas() +results = smf.ols('murder ~ hs_grad + urban + poverty + single', + data=crime_data.data).fit() +sm.graphics.plot_ccpr(results, 'single') +plt.show() diff --git a/docs/source/plots/graphics_regression_ccpr_grid.py b/docs/source/plots/graphics_regression_ccpr_grid.py new file mode 100644 index 0000000..6cc5208 --- /dev/null +++ b/docs/source/plots/graphics_regression_ccpr_grid.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +''' +Using the state crime dataset seperately plot the effect of the each +variable on the on the outcome, murder rate while accounting for the effect +of all other variables in the model. + +''' + +import statsmodels.api as sm +import matplotlib.pyplot as plt +import statsmodels.formula.api as smf + +fig = plt.figure(figsize=(8, 8)) +crime_data = sm.datasets.statecrime.load_pandas() +results = smf.ols('murder ~ hs_grad + urban + poverty + single', + data=crime_data.data).fit() +sm.graphics.plot_ccpr_grid(results, fig=fig) +plt.show() diff --git a/docs/source/plots/graphics_regression_ceres_residuals.py b/docs/source/plots/graphics_regression_ceres_residuals.py new file mode 100644 index 0000000..962d215 --- /dev/null +++ b/docs/source/plots/graphics_regression_ceres_residuals.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +''' + Using a model built from the the state crime dataset, make a CERES plot + with the rate of Poverty as the focus variable. +''' +import statsmodels.api as sm +import matplotlib.pyplot as plt +import statsmodels.formula.api as smf +from statsmodels.graphics.regressionplots import plot_ceres_residuals + +crime_data = sm.datasets.statecrime.load_pandas() +results = smf.ols('murder ~ hs_grad + urban + poverty + single', + data=crime_data.data).fit() +plot_ceres_residuals(results, 'poverty') +plt.show() diff --git a/docs/source/plots/graphics_regression_influence.py b/docs/source/plots/graphics_regression_influence.py new file mode 100644 index 0000000..bd161c0 --- /dev/null +++ b/docs/source/plots/graphics_regression_influence.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +''' + Using a model built from the the state crime dataset, plot the influence in + regression. Observations with high leverage, or large residuals will be + labeled in the plot to show potential influence points. +''' +import statsmodels.api as sm +import matplotlib.pyplot as plt +import statsmodels.formula.api as smf + +crime_data = sm.datasets.statecrime.load_pandas() +results = smf.ols('murder ~ hs_grad + urban + poverty + single', + data=crime_data.data).fit() +sm.graphics.influence_plot(results) +plt.show() diff --git a/docs/source/plots/graphics_regression_leverage_resid2.py b/docs/source/plots/graphics_regression_leverage_resid2.py new file mode 100644 index 0000000..1b1ce1a --- /dev/null +++ b/docs/source/plots/graphics_regression_leverage_resid2.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +''' + Using a model built from the the state crime dataset, plot the leverage + statistics vs. normalized residuals squared. Observations with + Large-standardized Residuals will be labeled in the plot. +''' + +import statsmodels.api as sm +import matplotlib.pyplot as plt +import statsmodels.formula.api as smf + +crime_data = sm.datasets.statecrime.load_pandas() +results = smf.ols('murder ~ hs_grad + urban + poverty + single', + data=crime_data.data).fit() +sm.graphics.plot_leverage_resid2(results) +plt.show() diff --git a/docs/source/plots/graphics_regression_partregress.py b/docs/source/plots/graphics_regression_partregress.py new file mode 100644 index 0000000..c68751d --- /dev/null +++ b/docs/source/plots/graphics_regression_partregress.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +''' +Load the statewide dataset and plot partial regression of high school +graduation on murder rate after removing the effects of rate of urbanization, +poverty, and rate of single household. + +''' + +import statsmodels.api as sm +import matplotlib.pyplot as plt + +crime_data = sm.datasets.statecrime.load_pandas() +sm.graphics.plot_partregress(endog='murder', exog_i='hs_grad', + exog_others=['urban', 'poverty', 'single'], + data=crime_data.data, obs_labels=False) +plt.show() diff --git a/docs/source/plots/graphics_regression_partregress_grid.py b/docs/source/plots/graphics_regression_partregress_grid.py new file mode 100644 index 0000000..12456b2 --- /dev/null +++ b/docs/source/plots/graphics_regression_partregress_grid.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +''' +Using the state crime dataset seperately plot the effect of the each +variable on the on the outcome, murder rate while accounting for the effect +of all other variables in the model visualized with a grid of partial +regression plots. + +''' + +from statsmodels.graphics.regressionplots import plot_partregress_grid +import statsmodels.api as sm +import matplotlib.pyplot as plt +import statsmodels.formula.api as smf + +fig = plt.figure(figsize=(8, 6)) +crime_data = sm.datasets.statecrime.load_pandas() +results = smf.ols('murder ~ hs_grad + urban + poverty + single', + data=crime_data.data).fit() +plot_partregress_grid(results, fig=fig) +plt.show() diff --git a/docs/source/plots/graphics_regression_regress_exog.py b/docs/source/plots/graphics_regression_regress_exog.py new file mode 100644 index 0000000..a7a2ae3 --- /dev/null +++ b/docs/source/plots/graphics_regression_regress_exog.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +''' +Load the Statewide Crime data set and build a model with regressors +including the rate of high school graduation (hs_grad), population in urban +areas (urban), households below poverty line (poverty), and single person +households (single). Outcome variable is the muder rate (murder). + +Build a 2 by 2 figure based on poverty showing fitted versus actual murder +rate, residuals versus the poverty rate, partial regression plot of poverty, +and CCPR plot for poverty rate. + +''' + +import statsmodels.api as sm +import matplotlib.pyplot as plt +import statsmodels.formula.api as smf + +fig = plt.figure(figsize=(8, 6)) +crime_data = sm.datasets.statecrime.load_pandas() +results = smf.ols('murder ~ hs_grad + urban + poverty + single', + data=crime_data.data).fit() +sm.graphics.plot_regress_exog(results, 'poverty', fig=fig) +plt.show() diff --git a/docs/source/plots/graphics_tsa_month_plot.py b/docs/source/plots/graphics_tsa_month_plot.py new file mode 100644 index 0000000..882661a --- /dev/null +++ b/docs/source/plots/graphics_tsa_month_plot.py @@ -0,0 +1,12 @@ +import statsmodels.api as sm +import pandas as pd + +dta = sm.datasets.elnino.load_pandas().data +dta['YEAR'] = dta.YEAR.astype(int).astype(str) +dta = dta.set_index('YEAR').T.unstack() +dates = pd.to_datetime(list(map(lambda x: '-'.join(x) + '-1', + dta.index.values))) + +dta.index = pd.DatetimeIndex(list(dates), freq='MS') +dta.name = 'temp' +fig = sm.graphics.tsa.month_plot(dta) diff --git a/docs/source/plots/graphics_tsa_plot_acf.py b/docs/source/plots/graphics_tsa_plot_acf.py new file mode 100644 index 0000000..7b66959 --- /dev/null +++ b/docs/source/plots/graphics_tsa_plot_acf.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +''' + Load Sunspots Data and plot the autocorrelation of the number of sunspots + per year. +''' + +import pandas as pd +import matplotlib.pyplot as plt +import statsmodels.api as sm + +dta = sm.datasets.sunspots.load_pandas().data +dta.index = pd.Index(sm.tsa.datetools.dates_from_range('1700', '2008')) +del dta["YEAR"] +sm.graphics.tsa.plot_acf(dta.values.squeeze(), lags=40) +plt.show() diff --git a/docs/source/plots/graphics_tsa_plot_pacf.py b/docs/source/plots/graphics_tsa_plot_pacf.py new file mode 100644 index 0000000..8e511bb --- /dev/null +++ b/docs/source/plots/graphics_tsa_plot_pacf.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +''' + Load Sunspots Data and plot the partial autocorrelation of the number of + sunspots per year. +''' + +import pandas as pd +import matplotlib.pyplot as plt +import statsmodels.api as sm + +dta = sm.datasets.sunspots.load_pandas().data +dta.index = pd.Index(sm.tsa.datetools.dates_from_range('1700', '2008')) +del dta["YEAR"] +sm.graphics.tsa.plot_pacf(dta.values.squeeze(), lags=40) +plt.show() diff --git a/docs/source/plots/graphics_tsa_quarter_plot.py b/docs/source/plots/graphics_tsa_quarter_plot.py new file mode 100644 index 0000000..f873976 --- /dev/null +++ b/docs/source/plots/graphics_tsa_quarter_plot.py @@ -0,0 +1,12 @@ +import statsmodels.api as sm +import pandas as pd + +dta = sm.datasets.elnino.load_pandas().data +dta['YEAR'] = dta.YEAR.astype(int).astype(str) +dta = dta.set_index('YEAR').T.unstack() +dates = pd.to_datetime(list(map(lambda x: '-'.join(x) + '-1', + dta.index.values))) + +dta.index = dates.to_period('Q') +dta.name = 'temp' +fig = sm.graphics.tsa.quarter_plot(dta) diff --git a/docs/source/plots/hpf_plot.py b/docs/source/plots/hpf_plot.py new file mode 100644 index 0000000..ee9f893 --- /dev/null +++ b/docs/source/plots/hpf_plot.py @@ -0,0 +1,13 @@ +import statsmodels.api as sm +import pandas as pd +from load_macrodata import dta + +cycle, trend = sm.tsa.filters.hpfilter(dta.realgdp, 1600) +gdp_decomp = dta[['realgdp']].copy() +gdp_decomp["cycle"] = cycle +gdp_decomp["trend"] = trend + +import matplotlib.pyplot as plt +fig, ax = plt.subplots() +gdp_decomp[["realgdp", "trend"]]["2000-03-31":].plot(ax=ax, + fontsize=16) diff --git a/docs/source/plots/load_macrodata.py b/docs/source/plots/load_macrodata.py new file mode 100644 index 0000000..624509f --- /dev/null +++ b/docs/source/plots/load_macrodata.py @@ -0,0 +1,6 @@ +import statsmodels.api as sm +import pandas as pd +dta = sm.datasets.macrodata.load_pandas().data +dates = sm.tsa.datetools.dates_from_range('1959Q1', '2009Q3') +index = pd.DatetimeIndex(dates) +dta.set_index(index, inplace=True) diff --git a/docs/source/plots/mice_example_1.txt b/docs/source/plots/mice_example_1.txt new file mode 100644 index 0000000..406d8e6 --- /dev/null +++ b/docs/source/plots/mice_example_1.txt @@ -0,0 +1,14 @@ + Results: MICE +================================================================= +Method: MICE Sample size: 1000 +Model: OLS Scale 1.00 +Dependent variable: y Num. imputations 10 +----------------------------------------------------------------- + Coef. Std.Err. t P>|t| [0.025 0.975] FMI +----------------------------------------------------------------- +Intercept -0.0234 0.0318 -0.7345 0.4626 -0.0858 0.0390 0.0128 +x1 1.0305 0.0578 17.8342 0.0000 0.9172 1.1437 0.0309 +x2 -0.0134 0.0162 -0.8282 0.4076 -0.0451 0.0183 0.0236 +x3 -1.0260 0.0328 -31.2706 0.0000 -1.0903 -0.9617 0.0169 +x4 -0.0253 0.0336 -0.7520 0.4521 -0.0911 0.0406 0.0269 +================================================================= diff --git a/docs/source/plots/var_plot_acorr.py b/docs/source/plots/var_plot_acorr.py new file mode 100644 index 0000000..2195941 --- /dev/null +++ b/docs/source/plots/var_plot_acorr.py @@ -0,0 +1,2 @@ +from var_plots import plot_acorr +plot_acorr() diff --git a/docs/source/plots/var_plot_fevd.py b/docs/source/plots/var_plot_fevd.py new file mode 100644 index 0000000..ff71b5a --- /dev/null +++ b/docs/source/plots/var_plot_fevd.py @@ -0,0 +1,2 @@ +from var_plots import plot_fevd +plot_fevd() diff --git a/docs/source/plots/var_plot_forecast.py b/docs/source/plots/var_plot_forecast.py new file mode 100644 index 0000000..188553f --- /dev/null +++ b/docs/source/plots/var_plot_forecast.py @@ -0,0 +1,2 @@ +from var_plots import plot_forecast +plot_forecast() diff --git a/docs/source/plots/var_plot_input.py b/docs/source/plots/var_plot_input.py new file mode 100644 index 0000000..889cddf --- /dev/null +++ b/docs/source/plots/var_plot_input.py @@ -0,0 +1,2 @@ +from var_plots import plot_input +plot_input() diff --git a/docs/source/plots/var_plot_irf.py b/docs/source/plots/var_plot_irf.py new file mode 100644 index 0000000..0537a22 --- /dev/null +++ b/docs/source/plots/var_plot_irf.py @@ -0,0 +1,2 @@ +from var_plots import plot_irf +plot_irf() diff --git a/docs/source/plots/var_plot_irf_cum.py b/docs/source/plots/var_plot_irf_cum.py new file mode 100644 index 0000000..ec79a48 --- /dev/null +++ b/docs/source/plots/var_plot_irf_cum.py @@ -0,0 +1,2 @@ +from var_plots import plot_irf_cum +plot_irf_cum() diff --git a/docs/source/plots/var_plots.py b/docs/source/plots/var_plots.py new file mode 100644 index 0000000..c6ea3cf --- /dev/null +++ b/docs/source/plots/var_plots.py @@ -0,0 +1,41 @@ +import numpy as np + +from statsmodels.tsa.api import VAR +from statsmodels.api import datasets as ds +from statsmodels.tsa.base.datetools import dates_from_str + + +import pandas +mdata = ds.macrodata.load_pandas().data + +# prepare the dates index +dates = mdata[['year', 'quarter']].astype(int) +quarterly = [str(yr) + 'Q' + str(mo) + for yr, mo in zip(dates["year"], dates["quarter"])] +quarterly = dates_from_str(quarterly) + +mdata = mdata[['realgdp','realcons','realinv']] +mdata.index = pandas.DatetimeIndex(quarterly) +data = np.log(mdata).diff().dropna() + +model = VAR(data) +est = model.fit(maxlags=2) + +def plot_input(): + est.plot() + +def plot_acorr(): + est.plot_acorr() + +def plot_irf(): + est.irf().plot() + +def plot_irf_cum(): + irf = est.irf() + irf.plot_cum_effects() + +def plot_forecast(): + est.plot_forecast(10) + +def plot_fevd(): + est.fevd(20).plot() diff --git a/docs/source/regression.rst b/docs/source/regression.rst new file mode 100644 index 0000000..01c71d1 --- /dev/null +++ b/docs/source/regression.rst @@ -0,0 +1,232 @@ +.. currentmodule:: statsmodels.regression.linear_model + + +.. _regression: + +Linear Regression +================= + +Linear models with independently and identically distributed errors, and for +errors with heteroscedasticity or autocorrelation. This module allows +estimation by ordinary least squares (OLS), weighted least squares (WLS), +generalized least squares (GLS), and feasible generalized least squares with +autocorrelated AR(p) errors. + +See `Module Reference`_ for commands and arguments. + +Examples +-------- + +.. ipython:: python + + # Load modules and data + import numpy as np + import statsmodels.api as sm + spector_data = sm.datasets.spector.load(as_pandas=False) + spector_data.exog = sm.add_constant(spector_data.exog, prepend=False) + + # Fit and summarize OLS model + mod = sm.OLS(spector_data.endog, spector_data.exog) + res = mod.fit() + print(res.summary()) + +Detailed examples can be found here: + + +* `OLS `__ +* `WLS `__ +* `GLS `__ +* `Recursive LS `__ + +Technical Documentation +----------------------- + +The statistical model is assumed to be + + :math:`Y = X\beta + \mu`, where :math:`\mu\sim N\left(0,\Sigma\right).` + +Depending on the properties of :math:`\Sigma`, we have currently four classes available: + +* GLS : generalized least squares for arbitrary covariance :math:`\Sigma` +* OLS : ordinary least squares for i.i.d. errors :math:`\Sigma=\textbf{I}` +* WLS : weighted least squares for heteroskedastic errors :math:`\text{diag}\left (\Sigma\right)` +* GLSAR : feasible generalized least squares with autocorrelated AR(p) errors + :math:`\Sigma=\Sigma\left(\rho\right)` + +All regression models define the same methods and follow the same structure, +and can be used in a similar fashion. Some of them contain additional model +specific methods and attributes. + +GLS is the superclass of the other regression classes except for RecursiveLS. + +.. Class hierachy: TODO + +.. yule_walker is not a full model class, but a function that estimate the +.. parameters of a univariate autoregressive process, AR(p). It is used in GLSAR, +.. but it can also be used independently of any models. yule_walker only +.. calculates the estimates and the standard deviation of the lag parameters but +.. not the additional regression statistics. We hope to include yule-walker in +.. future in a separate univariate time series class. A similar result can be +.. obtained with GLSAR if only the constant is included as regressors. In this +.. case the parameter estimates of the lag estimates are not reported, however +.. additional statistics, for example aic, become available. + +References +^^^^^^^^^^ + +General reference for regression models: + +* D.C. Montgomery and E.A. Peck. "Introduction to Linear Regression Analysis." 2nd. Ed., Wiley, 1992. + +Econometrics references for regression models: + +* R.Davidson and J.G. MacKinnon. "Econometric Theory and Methods," Oxford, 2004. +* W.Green. "Econometric Analysis," 5th ed., Pearson, 2003. + +.. toctree:: +.. :maxdepth: 1 +.. +.. regression_techn1 + +Attributes +^^^^^^^^^^ + +The following is more verbose description of the attributes which is mostly +common to all regression classes + +pinv_wexog : array + The `p` x `n` Moore-Penrose pseudoinverse of the whitened design matrix. + It is approximately equal to + :math:`\left(X^{T}\Sigma^{-1}X\right)^{-1}X^{T}\Psi`, where + :math:`\Psi` is defined such that :math:`\Psi\Psi^{T}=\Sigma^{-1}`. +cholsimgainv : array + The `n` x `n` upper triangular matrix :math:`\Psi^{T}` that satisfies + :math:`\Psi\Psi^{T}=\Sigma^{-1}`. +df_model : float + The model degrees of freedom. This is equal to `p` - 1, where `p` is the + number of regressors. Note that the intercept is not counted as using a + degree of freedom here. +df_resid : float + The residual degrees of freedom. This is equal `n - p` where `n` is the + number of observations and `p` is the number of parameters. Note that the + intercept is counted as using a degree of freedom here. +llf : float + The value of the likelihood function of the fitted model. +nobs : float + The number of observations `n` +normalized_cov_params : array + A `p` x `p` array equal to :math:`(X^{T}\Sigma^{-1}X)^{-1}`. +sigma : array + The `n` x `n` covariance matrix of the error terms: + :math:`\mu\sim N\left(0,\Sigma\right)`. +wexog : array + The whitened design matrix :math:`\Psi^{T}X`. +wendog : array + The whitened response variable :math:`\Psi^{T}Y`. + +Module Reference +---------------- + +.. module:: statsmodels.regression.linear_model + :synopsis: Least squares linear models + +Model Classes +^^^^^^^^^^^^^ + +.. autosummary:: + :toctree: generated/ + + OLS + GLS + WLS + GLSAR + yule_walker + burg + +.. module:: statsmodels.regression.quantile_regression + :synopsis: Quantile regression + +.. currentmodule:: statsmodels.regression.quantile_regression + +.. autosummary:: + :toctree: generated/ + + QuantReg + +.. module:: statsmodels.regression.recursive_ls + :synopsis: Recursive least squares using the Kalman Filter + +.. currentmodule:: statsmodels.regression.recursive_ls + +.. autosummary:: + :toctree: generated/ + + RecursiveLS + +.. module:: statsmodels.regression.process_regression + :synopsis: Process regression + +.. currentmodule:: statsmodels.regression.process_regression + +.. autosummary:: + :toctree: generated/ + + GaussianCovariance + ProcessMLE + +.. module:: statsmodels.regression.dimred + :synopsis: Dimension reduction methods + +.. currentmodule:: statsmodels.regression.dimred + +.. autosummary:: + :toctree: generated/ + + SlicedInverseReg + PrincipalHessianDirections + SlicedAverageVarianceEstimation + + +Results Classes +^^^^^^^^^^^^^^^ + +Fitting a linear regression model returns a results class. OLS has a +specific results class with some additional methods compared to the +results class of the other linear models. + +.. currentmodule:: statsmodels.regression.linear_model + +.. autosummary:: + :toctree: generated/ + + RegressionResults + OLSResults + PredictionResults + +.. currentmodule:: statsmodels.regression.quantile_regression + +.. autosummary:: + :toctree: generated/ + + QuantRegResults + +.. currentmodule:: statsmodels.regression.recursive_ls + +.. autosummary:: + :toctree: generated/ + + RecursiveLSResults + +.. currentmodule:: statsmodels.regression.process_regression + +.. autosummary:: + :toctree: generated/ + + ProcessMLEResults + +.. currentmodule:: statsmodels.regression.dimred + +.. autosummary:: + :toctree: generated/ + + DimReductionResults diff --git a/docs/source/regression_techn1.rst.TXT b/docs/source/regression_techn1.rst.TXT new file mode 100644 index 0000000..fc215a5 --- /dev/null +++ b/docs/source/regression_techn1.rst.TXT @@ -0,0 +1,12 @@ +.. currentmodule:: statsmodels.regression + + +.. _regression-techn1: + +Technical Documentation +======================= + +Introduction +------------ + +Just a placeholder diff --git a/docs/source/release/index.rst b/docs/source/release/index.rst new file mode 100644 index 0000000..3fad426 --- /dev/null +++ b/docs/source/release/index.rst @@ -0,0 +1,28 @@ +.. During each release add in this folder information about important changes. +.. Each versionx.x.rst file should have four main sections. +.. (1) Major features (2) Important bug fixes (3) API breakage (4) Credits + +.. The github-stats-x.x.rst files are generated by tools/github_stats.py with +.. some cleanup afterwards. I do python github_stats.py > github-stats-x.x.rst. +.. As of the 0.5 release, this script asks for your github name and password +.. to download the statistics. + +.. _whatsnew_index: + +========================= +What's new in Statsmodels +========================= + +.. toctree:: + :maxdepth: 1 + + version0.10.2 + version0.10.1 + version0.10 + version0.9 + version0.8 + version0.7 + version0.6 + version0.5 + +For an overview of changes that occured previous to the 0.5.0 release see :ref:`old_changes`. diff --git a/docs/source/release/old_changes.rst b/docs/source/release/old_changes.rst new file mode 100644 index 0000000..f36e1e4 --- /dev/null +++ b/docs/source/release/old_changes.rst @@ -0,0 +1,243 @@ +:orphan: + +.. _old_changes: + +Pre 0.5.0 Release History +========================= + +0.5.0 +----- +*Main Changes and Additions* +* Add patsy dependency + +*Compatibility and Deprecation* + +* cleanup of import paths (lowess) +* + +*Bug Fixes* + +* input shapes of tools.isestimable +* + +*Enhancements and Additions* + +* formula integration based on patsy (new dependency) +* Time series analysis + - ARIMA modeling + - enhanced forecasting based on pandas datetime handling +* expanded margins for discrete models +* OLS outlier test + +* empirical likelihood - Google Summer of Code 2012 project + - inference for descriptive statistics + - inference for regression models + - accelerated failure time models + +* expanded probability plots +* improved graphics + - plotcorr + - acf and pacf +* new datasets +* new and improved tools + - numdiff numerical differentiation + + + +0.4.3 +----- + +The only change compared to 0.4.2 is for compatibility with python 3.2.3 +(changed behavior of 2to3) + + +0.4.2 +----- + +This is a bug-fix release, that affects mainly Big-Endian machines. + +*Bug Fixes* + +* discrete_model.MNLogit fix summary method +* tsa.filters.hp_filter don't use umfpack on Big-Endian machine (scipy bug) +* the remaining fixes are in the test suite, either precision problems + on some machines or incorrect testing on Big-Endian machines. + + + +0.4.1 +----- + +This is a backwards compatible (according to our test suite) release with +bug fixes and code cleanup. + +*Bug Fixes* + +* build and distribution fixes +* lowess correct distance calculation +* genmod correction CDFlink derivative +* adfuller _autolag correct calculation of optimal lag +* het_arch, het_lm : fix autolag and store options +* GLSAR: incorrect whitening for lag>1 + +*Other Changes* + +* add lowess and other functions to api and documentation +* rename lowess module (old import path will be removed at next release) +* new robust sandwich covariance estimators, moved out of sandbox +* compatibility with pandas 0.8 +* new plots in statsmodels.graphics + - ABLine plot + - interaction plot + + +0.4.0 +----- + +*Main Changes and Additions* + +* Added pandas dependency. +* Cython source is built automatically if cython and compiler are present +* Support use of dates in timeseries models +* Improved plots + - Violin plots + - Bean Plots + - QQ Plots +* Added lowess function +* Support for pandas Series and DataFrame objects. Results instances return + pandas objects if the models are fit using pandas objects. +* Full Python 3 compatibility +* Fix bugs in genfromdta. Convert Stata .dta format to structured array + preserving all types. Conversion is much faster now. +* Improved documentation +* Models and results are pickleable via save/load, optionally saving the model + data. +* Kernel Density Estimation now uses Cython and is considerably faster. +* Diagnostics for outlier and influence statistics in OLS +* Added El Nino Sea Surface Temperatures dataset +* Numerous bug fixes +* Internal code refactoring +* Improved documentation including examples as part of HTML + +*Changes that break backwards compatibility* + +* Deprecated scikits namespace. The recommended import is now:: + + import statsmodels.api as sm + +* model.predict methods signature is now (params, exog, ...) where before + it assumed that the model had been fit and omitted the params argument. +* For consistency with other multi-equation models, the parameters of MNLogit + are now transposed. +* tools.tools.ECDF -> distributions.ECDF +* tools.tools.monotone_fn_inverter -> distributions.monotone_fn_inverter +* tools.tools.StepFunction -> distributions.StepFunction + + +0.3.1 +----- + +* Removed academic-only WFS dataset. +* Fix easy_install issue on Windows. + +0.3.0 +----- + +*Changes that break backwards compatibility* + +Added api.py for importing. So the new convention for importing is:: + + import statsmodels.api as sm + +Importing from modules directly now avoids unnecessary imports and increases +the import speed if a library or user only needs specific functions. + +* sandbox/output.py -> iolib/table.py +* lib/io.py -> iolib/foreign.py (Now contains Stata .dta format reader) +* family -> families +* families.links.inverse -> families.links.inverse_power +* Datasets' Load class is now load function. +* regression.py -> regression/linear_model.py +* discretemod.py -> discrete/discrete_model.py +* rlm.py -> robust/robust_linear_model.py +* glm.py -> genmod/generalized_linear_model.py +* model.py -> base/model.py +* t() method -> tvalues attribute (t() still exists but raises a warning) + +*Main changes and additions* + +* Numerous bugfixes. +* Time Series Analysis model (tsa) + + - Vector Autoregression Models VAR (tsa.VAR) + - Autogressive Models AR (tsa.AR) + - Autoregressive Moving Average Models ARMA (tsa.ARMA) + optionally uses Cython for Kalman Filtering + use setup.py install with option --with-cython + - Baxter-King band-pass filter (tsa.filters.bkfilter) + - Hodrick-Prescott filter (tsa.filters.hpfilter) + - Christiano-Fitzgerald filter (tsa.filters.cffilter) + +* Improved maximum likelihood framework uses all available scipy.optimize solvers +* Refactor of the datasets sub-package. +* Added more datasets for examples. +* Removed RPy dependency for running the test suite. +* Refactored the test suite. +* Refactored codebase/directory structure. +* Support for offset and exposure in GLM. +* Removed data_weights argument to GLM.fit for Binomial models. +* New statistical tests, especially diagnostic and specification tests +* Multiple test correction +* General Method of Moment framework in sandbox +* Improved documentation +* and other additions + + +0.2.0 +----- + +*Main changes* + + * renames for more consistency + RLM.fitted_values -> RLM.fittedvalues + GLMResults.resid_dev -> GLMResults.resid_deviance + * GLMResults, RegressionResults: + lazy calculations, convert attributes to properties with _cache + * fix tests to run without rpy + * expanded examples in examples directory + * add PyDTA to lib.io -- functions for reading Stata .dta binary files + and converting + them to numpy arrays + * made tools.categorical much more robust + * add_constant now takes a prepend argument + * fix GLS to work with only a one column design + +*New* + + * add four new datasets + + - A dataset from the American National Election Studies (1996) + - Grunfeld (1950) investment data + - Spector and Mazzeo (1980) program effectiveness data + - A US macroeconomic dataset + * add four new Maximum Likelihood Estimators for models with a discrete + dependent variables with examples + + - Logit + - Probit + - MNLogit (multinomial logit) + - Poisson + +*Sandbox* + + * add qqplot in sandbox.graphics + * add sandbox.tsa (time series analysis) and sandbox.regression (anova) + * add principal component analysis in sandbox.tools + * add Seemingly Unrelated Regression (SUR) and Two-Stage Least Squares + for systems of equations in sandbox.sysreg.Sem2SLS + * add restricted least squares (RLS) + + +0.1.0b1 +------- + * initial release diff --git a/docs/source/release/version0.10.1.rst b/docs/source/release/version0.10.1.rst new file mode 100644 index 0000000..2892fa0 --- /dev/null +++ b/docs/source/release/version0.10.1.rst @@ -0,0 +1,49 @@ +:orphan: + +============== +Release 0.10.1 +============== + +Release summary +=============== +This is a bug fix-only release + +Development summary and credits +=============================== + +Besides receiving contributions for new and improved features and for bugfixes, +important contributions to general maintenance for this release came from + +* Chad Fulton +* Brock Mendel +* Peter Quackenbush +* Kerby Shedden +* Kevin Sheppard + +and the general maintainer and code reviewer + +* Josef Perktold + +These lists of names are automatically generated based on git log, and may not +be complete. + +Merged Pull Requests +-------------------- + +The following Pull Requests were merged since the last release: + +* :pr:`5784`: MAINT: implement parts of #5220, deprecate ancient aliases +* :pr:`5892`: BUG: fix pandas compat +* :pr:`5893`: BUG: exponential smoothing - damped trend gives incorrect param, predictions +* :pr:`5895`: DOC: improvements to BayesMixedGLM docs, argument checking +* :pr:`5897`: MAINT: Use pytest.raises to check error message +* :pr:`5903`: BUG: Fix kwargs update bug in linear model fit_regularized +* :pr:`5917`: BUG: TVTP for Markov regression +* :pr:`5921`: BUG: Ensure exponential smoothers has continuous double data +* :pr:`5930`: BUG: Limit lags in KPSS +* :pr:`5933`: MAINT: Fix test that fails with positive probability +* :pr:`5935`: CLN: port parts of #5220 +* :pr:`5940`: MAINT: Fix linting failures +* :pr:`5944`: BUG: Restore ResettableCache +* :pr:`5951`: BUG: Fix mosaic plot with missing category +* :pr:`5971`: BUG: Fix a future issue in ExpSmooth diff --git a/docs/source/release/version0.10.2.rst b/docs/source/release/version0.10.2.rst new file mode 100644 index 0000000..1b719c3 --- /dev/null +++ b/docs/source/release/version0.10.2.rst @@ -0,0 +1,44 @@ +:orphan: + +============== +Release 0.10.2 +============== + +Release summary +=============== +This is a bug release and adds compatibility with Python 3.8. + +Development summary and credits +=============================== + +Besides receiving contributions for new and improved features and for bugfixes, +important contributions to general maintenance for this release came from + +* Chad Fulton +* Qingqing Mao +* Diego Mazon +* Brock Mendel +* Guglielmo Saggiorato +* Kevin Sheppard +* Tim Staley + +Merged Pull Requests +-------------------- + +The following Pull Requests were merged since the last release: + +* :pr:`5935`: CLN: port parts of #5220 +* :pr:`5951`: BUG: Fix mosaic plot with missing category +* :pr:`5996`: BUG: Limit lags in KPSS +* :pr:`5998`: Replace alpha=0.05 with alpha=alpha +* :pr:`6030`: Turn relative import into an absolute import +* :pr:`6044`: DOC: Fix notebook due to pandas index change +* :pr:`6046`: DOC: Remove DynamicVAR +* :pr:`6091`: MAINT/SEC: Remove unnecessary pickle use +* :pr:`6092`: MAINT: Ensure r download cache works +* :pr:`6093`: MAINT: Fix new cache name +* :pr:`6117`: BUG: Remove extra LICENSE.txt and setup.cfg +* :pr:`6105`: Update correlation_tools.py +* :pr:`6050`: BUG: MLEModel now passes nobs to Representation +* :pr:`6205`: MAINT: Exclude pytest-xdist 1.30 +* :pr:`6246`: TST: Add Python 3.8 environment diff --git a/docs/source/release/version0.10.rst b/docs/source/release/version0.10.rst new file mode 100644 index 0000000..60ecc1c --- /dev/null +++ b/docs/source/release/version0.10.rst @@ -0,0 +1,893 @@ +:orphan: + +============== +Release 0.10.0 +============== + +Release summary +=============== + +Statsmodels is using github to store the updated documentation. Two version are available: + +* `Stable `_, the latest release +* `Development `_, the latest build of the master branch + +**Warning** + +API stability is not guaranteed for new features, although even in +this case changes will be made in a backwards compatible way if +possible. The stability of a new feature depends on how much time it +was already in statsmodels master and how much usage it has already +seen. If there are specific known problems or limitations, then they +are mentioned in the docstrings. + +Stats +----- +**Issues Closed**: 1052 +**Pull Requests Merged**: 469 + +The list of pull requests for this release can be found on `github +`_ +(The list does not include some pull request that were merged before +the 0.9 release but not included in 0.9.) + + +The Highlights +============== + +Generalized Additive Models +--------------------------- + +:class:`~statsmodels.gam.generalized_additive_model.GLMGam` adds support for Generalized additive models. + +.. note:: + + **Status: experimental**. This class has full unit test coverage for the core + results with Gaussian and Poisson (without offset and exposure). Other + options and additional results might not be correctly supported yet. + (Binomial with counts, i.e. with n_trials, is most likely wrong in parts. + User specified var or freq weights are most likely also not correct for + all results.) + +:class:`~statsmodels.gam.generalized_additive_model.LogitGam` adds a Logit version, although this is +unfinished. + +Conditional Models +------------------ +Three conditional limited dependent variables models have been added: +:class:`~statsmodels.discrete.conditional_models.ConditionalLogit`, +:class:`~statsmodels.discrete.conditional_models.ConditionalMNLogit` and +:class:`~statsmodels.discrete.conditional_models.ConditionalPoisson`. These are known +as fixed effect models in Econometrics. + +Dimension Reduction Methods +--------------------------- +Three standard methods to perform dimension reduction when modeling data have been added: +:class:`~statsmodels.regression.dimred.SlicedInverseReg`, +:class:`~statsmodels.regression.dimred.PrincipalHessianDirections`, and +:class:`~statsmodels.regression.dimred.SlicedAverageVarianceEstimation`. + +Regression using Quadratic Inference Functions (QIF) +---------------------------------------------------- +Quadratic Inference Function, :class:`~statsmodels.genmod.qif.QIF`, improve the estimation of GEE models. + +Gaussian Process Regression +--------------------------- +:class:`~statsmodels.regression.process_regression.GaussianCovariance` implements Gaussian process +regression which is a nonparametric kernel-based method to model data. +:class:`~statsmodels.regression.process_regression.ProcessMLE` is a generic class that can be used +for other types of process regression. The results are returned in a +:class:`~statsmodels.regression.process_regression.ProcessMLEResults`. +:func:`~statsmodels.stats.correlation_tools.kernel_covariance` +provides a method that uses kernel averaging to estimate a multivariate covariance function. + +Burg's Method +------------- +Burg's method, :func:`~statsmodels.regression.linear_model.burg`, provides an alternative estimator for the parameters +of AR models that is known to work well in small samples. It minimizes the forward and backward errors. + +Time series Tools +----------------- +A number of common helper function for decomposing a time series have been added: +:func:`~statsmodels.tsa.innovations.arma_innovations.arma_innovations`, +:func:`~statsmodels.tsa.stattools.innovations_algo`, and +:func:`~statsmodels.tsa.stattools.innovations_filter`. Two new PACF estimators have been added: +:func:`~statsmodels.tsa.stattools.levinson_durbin_pacf` and :func:`~statsmodels.tsa.stattools.pacf_burg`. + +Other +----- +Knockoff effect estimation has been added for a many models: +:class:`~statsmodels.stats.knockoff_regeffects.RegModelEffects`, +:class:`~statsmodels.stats.knockoff_regeffects.CorrelationEffects`, +:class:`~statsmodels.stats.knockoff_regeffects.OLSEffects`, +:class:`~statsmodels.stats.knockoff_regeffects.ForwardEffects`, and +:class:`~statsmodels.stats.knockoff_regeffects.OLSEffects`. + +Influence functions are available for GLM and generic MLE models: +:class:`~statsmodels.stats.outliers_influence.GLMInfluence` and +:class:`~statsmodels.stats.outliers_influence.MLEInfluence`. + + +What's new - an overview +======================== + +The following lists the main new features of statsmodels 0.10. In addition, +release 0.10 includes bug fixes, refactorings and improvements in many areas. + +Submodules +---------- + +``base`` +~~~~~~~~ +- Add ``ModelWarning`` base class to avoid warning filter on standard UserWarning (:pr:`4712`) +- Add ultra-high screening with SCAD (:pr:`4683`) +- Add penalized mle scad (:pr:`4576`, :issue:`3677`, :issue:`2374`) +- Add score/LM conditional moment tests (:pr:`2096`) +- Fixed a bug which resulted in weights not being used in penalized models (:pr:`5762`, :issue:`4725`) +- Allow the constant index to be located even when ``hasconst=False`` (:pr:`5680`) +- Ensure ``mle_retvals`` is always set even when ``full_output=False`` (:pr:`5681`, :issue:`2752`) +- Fix a bug in Wald tests when testing a single constraint (:pr:`5684`, :issue:`5475`) +- Improve performance by skipping constant check when ``hasconst=True`` (:pr:`5698`) +- Deprecated ``scale`` parameter in the base model class (:pr:`5614`, :issue:`4598`) +- Fixed a bug that raised an error when a multi-index DataFrame was input into a model (:pr:`5634`, :issue:`5415`, :issue:`5414`) +- Fix bug in use of ``self.score`` in GenericLikelihoodModel (:pr:`5130`, :issue:`4453`) + +``discrete`` +~~~~~~~~~~~~ +- Improve performance by only computing matrix_rank(exog) once in DiscreteModel.initialize (:pr:`4805`) +- Improve performance in discrete models by avoiding repeated calculations (:pr:`4515`) +- Add ``cov_type`` to summary of discrete models (:pr:`5672`, :issue:`4581`) +- Add conditional multinomial logit (:pr:`5510`) +- Add conditional logistic and Poisson regression (:pr:`5304`) + +``genmod`` +~~~~~~~~~~ +- Fix arguments in poisson version of ``BayesMixedLM`` (:pr:`4809`) +- Ensure that column names are properly attached to the model (:pr:`4788`) +- Change ``cov_params`` in ``BayesMixedLM`` to act more like it does in other models (:pr:`4788`) +- Add missing predict and fit methods to ``BayesMixedGLM`` (:pr:`4702`) +- Add influence function support for GLM (:pr:`4732`, :issue:`4268`, :issue:`4257`) +- Fixed a bug in GEE where history was not saved (:pr:`5789`) +- Enable ``missing='drop'`` in GEE (:pr:`5771`) +- Improve score test to allow the submodel to be provided as a GEEResults object instead of as linear constraints (:pr:`5435`) +- Use GLM to get starting values for GEE (:pr:`5440`) +- Added regularized GEE (:pr:`5450`) +- Added Generalized Additive Models (GAM) (:pr:`5481`, :issue:`5370`, :issue:`5296`, :issue:`4575`, :issue:`2744`, :issue:`2435`) +- Added tweedie log-likelihood (:pr:`5521`) +- Added ridge regression by gradient for all GLM (:pr:`5521`) +- Added Tweedie EQL quasi-likelihood (:pr:`5543`) +- Allow ``dep_data`` to be specified using formula or names (:pr:`5345`) +- Fix a bug in stationary cov_struct for GEE (:pr:`5390`) +- Add QIC for GEE (:pr:`4909`) + +``graphics`` +~~~~~~~~~~~~ +- Allow QQ plots using samples with different sizes (:pr:`5673`, :issue:`2896`, :issue:`3169`) +- Added examples of many graphics functions to the documentation (:pr:`5607`, :issue:`5309`) +- Fixed a bug in ``interaction_plot`` which lost information in a ``pd.Series`` index (:pr:`5548`) +- Remove change of global pickle method in functional plots (:pr:`4963`) + +``imputation`` +~~~~~~~~~~~~~~ +- Add formula support to MI multiple imputation (:pr:`4722`) +- Saves the column names from ``pd.DataFrames`` and returns the imputed results as a DataFrame in ``BayesMI`` (:pr:`4722`) +- Fixed warnings in ``MICEData`` related to setting on copy (:pr:`5606`, :issue:`5431`) +- Allow results to be stored for multiple imputation (:pr:`5093`) +- Fixed a bug where MICEData sets initial imputation incorrectly (:pr:`5301`, :issue:`5254`) + +``iolib`` +~~~~~~~~~ +- Deprecate ``StataReader``, ``StataWriter``, and ``genfromdta`` in favor of pandas equivalents (:pr:`5770`) +- Improve string escaping when exporting to LaTeX (:pr:`5683`, :issue:`5297`) +- Fixed a bug in ``summary2`` that ignored user float formatting (:pr:`5655`, :issue:`1964`, :issue:`1965`) +- Remove ``$$`` from LaTeX output (:pr:`5588`,:issue:`5444`) + +``multivariate`` +~~~~~~~~~~~~~~~~ +- Fixed a bug that only allowed ``MANOVA`` to work correctly when called using the formula interface (:pr:`5646`, :issue:`4903`, :issue:`5578`) +- Fix pickling bug in ``PCA`` (:pr:`4963`) + +``nonparametric`` +~~~~~~~~~~~~~~~~~ +- Added input protection ``lowess` to ensure ``frac`` is always in bounds. (:pr:`5556`) +- Add check of inputs in ``KernelReg`` (:pr:`4968`, :issue:`4873`) + +``regression`` +~~~~~~~~~~~~~~ +- Fix bug in random effects covariance getter for ``MixedLM`` (:pr:`4704`) +- Add exact diffuse filtering for ``RecursiveLS`` (:pr:`4699`) +- Add Gaussian process regression (:pr:`4691`) +- Add linear restrictions to ``RecursiveLS`` (:pr:`4133`) +- Added regression with quadratic inference functions :class:`~statsmodels.genmod.qif.QIF` (:pr:`5803`) +- Allow mediation to be used with MixedLM as a mediator and/or outcome model (:pr:`5489`) +- Add square root LASSO (:pr:`5516`) +- Add dimension reduction regression methods: ``SlicedInverseReg``, ``PHD`` and ``SAVE`` (:pr:`5518`) +- Increased the number of methods available to optimize ``MixedLM`` models (:pr:`5551`) +- Added label to R2 when model is uncentered (:pr:`5083`, :issue:`5078`) +- Allow several optimizers to be tried in sequence for MixedLM (:pr:`4819`) +- Fix bug in Recursive LS with multiple constraints (:pr:`4826`) +- Fix a typo in ``ColinearityWarning`` (:pr:`4889`, :issue:`4671`) +- Add a finite check for ``_MinimalWLS`` (:pr:`4960`) +- Fix definition of R2 in ``GLS`` (:pr:`4967`, :issue:`1252`, :issue:`1171`) +- Add Burgs algorithm for estimating parameters of AR models (:pr:`5016`) + +``sandbox`` +~~~~~~~~~~~ +- Add copulas (:pr:`5076`) + +``stats`` +~~~~~~~~~ +- Implements a simple method of moments estimator of a spatial covariance in ``kernel_covariance`` (:pr:`4726`) +- Fixed a bug in multiple function in ``~statsmodels.stats.moment_helpers`` which prevents in-place modification of inputs (:pr:`5671`, :issue:`3362`, :issue:`2928`) +- Fixed a bug in contingency tables where shift was not correctly applied (:pr:`5654`, :issue:`3603`, :issue:`3579`) +- Added White's two-moment specification test with null hypothesis of homoskedastic and correctly specified(:pr:`5602`, :issue:`4721`) +- Added adjusted p-values for Tukey's HSD (:issue:`5418`, :pr:`5625`) +- Fixed a bug in ``medcouple`` that produced the incorrect estimate when there are ties in the data (:pr:`5397`, :issue:`5395`) +- Combine the real and knockoff features in init (:pr:`4920`) +- Modifying exog in-place leads to incorrect scaling (:pr:`4920`) +- Add Provide Knockoff+ (guaranteed to control FDR but slightly conservative) as well as Knockoff FDR (:pr:`4920`) +- Add RegModelEffects allows the user to specify which model is used for parameter estimation (:pr:`4920`) + +``tools`` +~~~~~~~~~ +- Fixed a bug in ``group_sums`` that raised ``NameError`` (:pr:`5127`) + +``tsa`` +~~~~~~~ +- Fix k_params in seasonal MAs (:pr:`4790`, :issue:`4789`) +- Fix prediction index in VAR predict (:pr:`4785`, :issue:`4784`) +- Standardized forecast error in state space when using Cholesky methods with partial missing data (:pr:`4770`) +- Add and fix VARMAX trend, exog. timing and polynomial trends (:pr:`4766`) +- Fix bug in exact diffuse filtering in complex data type case (:pr:`4743`) +- SARIMAX warns for non-stationary starting params (:pr:`4739`) +- Make arroots and maroots have consistent return type (:pr:`4559`) +- Add exact diffuse initialization to state space models (:pr:`4418`, :issue:`4042`) +- Allow concentrating scale out of log-likelihood in state space models (:pr:`3480`) +- Fixed a bug in ``coint_johansen`` that prevented it from running with 0 lags (:pr:`5783`) +- Improved performance in ``kpss`` using ``np.sum`` (:pr:`5774`) +- Enforce maximum number of lags in ``kpss`` (:pr:`5707`) +- Add ``arma_innovations`` to compute the innovations from an ARMA process (:pr:`5704`) +- Limit maximum lag length in ``adfuller`` so that model can always be estimated (:pr:`5699`, :issue:`5432`, :issue:`3330`) +- Added automatic data-dependent lag length selection in ``kpss`` (:pr:`5670`, :issue:`2781`, :issue:`5522`) +- Fixed a bug in ``VARMAX`` where the wrong form of the intercept was used when creating starting values (:pr:`5652`, :issue:`5651`) +- Fixed a bug ``sirf_errband_mc`` (:pr:`5641`, :issue:`5280`) +- Clarified error when input to ARMA is not a 1-d array (:pr:`5640`, :issue:`2575`) +- Improved the numerical stability of parameter transformation in ARIMA estimation (:pr:`5569`) +- Fixed a bug in the acf of a ``VAR`` which produced incorrect values (:pr:`5501`) +- Expose additional alternative estimation methods in ``pacf`` (:pr:`5153`, :issue:`3862`) +- Removed original implementation of Kalman Filter in favor of Cythonized version in ``statsmodels.tsa.statespace`` (:pr:`5171`) +- Issue warning when using ``VARResults.cov_params`` that it will become a method in the future (:pr:`5244`) +- Fix a bug in statespace models' ``predict`` that would fail when using row labels (:pr:`5250`) +- Allow ``summary`` even if filter_results=None, which happens after ``save`` and ``load`` (:pr:`5252`) +- Fixed a bug in sequential simulation in models with state_intercept (:pr:`5257`) +- Add an analytic version of ``arma_acovf`` (:pr:`5324`) +- Add a fast ARMA innovation algorithm and loglike computation (:pr:`5360`) +- Fix a bug in the Initialization of simulation smoother with exact diffuse initialization (:pr:`5383`) +- Fix bug in simulation smoothed measurement disturbance with FILTER_COLLAPSED (:pr:`4810`, :issue:`4800`) +- Improve SARIMAX for time series close to non-stationary (:pr:`4815`) +- Use Cython to improve speed of Exponential Smoothing models (:pr:`4845`) +- Fix a bug in ``arma_order_selection`` when data is passed in as a list (:pr:`4890`, :issue:`4727`) +- Add explicit exceptions in ARMA/ARIMA forecast with missing or wrong exog (:pr:`4915`, :issue:`3737`) +- Remove incorrect endog from results if constraints (:pr:`4921`) +- Add ``nlag`` argument to ``acovf`` (:pr:`4937`) +- Set reasonable default lags for acf/pacf plots (:pr:`4949`) +- Add innovations algorithm to convert acov to MA (:pr:`5042`) +- Add and innovations filter to filter for observations in a MA (:pr:`5042`) +- Fix a bug in initialization when simulating in state space models (:pr:`5043`) + +``maintenance`` +~~~~~~~~~~~~~~~ +- Switch to standard setup.py so that ``pip install statsmodels`` can succeed in an empty virtual environment +- General compatibility fixes for recent versions of numpy, scipy and pandas +- Added new CI using Azure Pipelines (:pr:`5617`) +- Enable linting on travis to ensure code is up to standards (:pr:`4820`) +- Add coverage for Cython code (:pr:`4871`) +- Improve import speed (:pr:`5831`) +- Make all version of docs available (:pr:`5879`) + +bug-wrong +--------- + +A new issue label `type-bug-wrong` indicates bugs that cause that incorrect +numbers are returned without warnings. +(Regular bugs are mostly usability bugs or bugs that raise an exception for +unsupported use cases.) +`see tagged issues `_ + +- :issue:`5475` +- :issue:`5316` + + +Major Bugs Fixed +================ + +See github issues for a list of bug fixes included in this release + +- `Closed bugs `_ +- `Closed bugs (wrong result) `_ + + +Development summary and credits +=============================== + +Besides receiving contributions for new and improved features and for bugfixes, +important contributions to general maintenance for this release came from + +* Chad Fulton +* Brock Mendel +* Peter Quackenbush +* Kerby Shedden +* Kevin Sheppard + +and the general maintainer and code reviewer + +* Josef Perktold + +Additionally, many users contributed by participation in github issues and +providing feedback. + +Thanks to all of the contributors for the 0.10 release (based on git log): + + +* Amir Masoud Abdol +* Andrew Davis +* Andrew Kittredge +* Andrew Theis +* bertrandhaut +* bksahu +* Brock Mendel +* Chad Fulton +* Chris Snow +* Chris Down +* Daniel Saxton +* donbeo +* Emlyn Price +* equinaut +* Eric Larson +* Evgeny Zhurko +* fourpoints +* Gabriel Reid +* Harry Moreno +* Hauke Jürgen Mönck +* Hugo +* hugovk +* Huize Wang +* JarnoRFB +* Jarrod Millman +* jcdang +* Jefferson Tweed +* Josef Perktold +* jtweeder +* Julian Taylor +* Kerby Shedden +* Kevin Sheppard +* Loknar +* Matthew Brett +* Max Ghenis +* Ming Li +* Mitch Negus +* Michael Handley +* Moritz Lotze +* Nathan Perkins +* Nathaniel J. Smith +* Niklas H +* Peter Quackenbush +* QuentinAndre +* Ralf Gommers +* Rebecca N. Palmer +* Rhys Ulerich +* Richard Barnes +* RonLek +* Stefaan Lippens +* Tad seldovia +* thequackdaddy +* Tom Augspurger +* Torsten Wörtwein +* Varanelli +* xrr +* Yichuan Liu +* zveryansky +* 郭飞 + +These lists of names are automatically generated based on git log, and may not +be complete. + +Merged Pull Requests +-------------------- + +The following Pull Requests were merged since the last release: + + +* :pr:`2096`: Score/LM conditional moment tests +* :pr:`3480`: ENH: State space: allow concentrating scale out of log-likelihood +* :pr:`4048`: Remove redundant code for dropped Python 2.6 +* :pr:`4133`: ENH: Add linear restrictions to RecursiveLS +* :pr:`4316`: ensure MultinomialResults has J, K. Get rid of unnecessary lmap usage +* :pr:`4322`: Make DiscreteResults Unchanging +* :pr:`4371`: catch the correct exception, make assertions not-pointless +* :pr:`4418`: ENH: State space: Exact diffuse initialization +* :pr:`4458`: De-duplicate a bunch of identical code +* :pr:`4468`: remove unused resetlist +* :pr:`4487`: Get rid of non-standard imports and one-line functions +* :pr:`4494`: Fix imports math.foo -->np.foo in vecm +* :pr:`4501`: xfail test instead of commenting it out +* :pr:`4515`: PERF: Simplify algebra in discrete_model +* :pr:`4559`: REF: make arroots and maroots have consistent return type +* :pr:`4560`: Document and cleanup bits of cython code +* :pr:`4576`: Penalized mle scad rebased2 +* :pr:`4593`: DOC:ArmaProcess class documentation typo fix +* :pr:`4594`: TEST/DOC: SMW linalg routines documentation and test +* :pr:`4640`: BF: DataTimeIndex.to_datetime removed in pandas +* :pr:`4648`: BUG/TEST: Make pattern order for multiple imputation deterministic +* :pr:`4650`: DISCUSS/BLD: Update minimum versions. +* :pr:`4653`: REF/MAINT: avoid dict with pandas +* :pr:`4658`: BLD: Use older version of Pandas for docbuild +* :pr:`4683`: ENH: add ultra-high screening with SCAD +* :pr:`4686`: TEST: Docstring edits and variable name changes for clarity +* :pr:`4689`: PERF: Declare temporary output for hessian +* :pr:`4691`: ENH: Gaussian process regression +* :pr:`4692`: DOC: Add GLM varfuncs and weights notebook to documentation +* :pr:`4696`: Configure doctr +* :pr:`4698`: REF: Remove compatibility mode for state space +* :pr:`4699`: ENH: Exact diffuse filtering for RecursiveLS +* :pr:`4702`: BUG: Add missing predict and fit methods to BayesMixedGLM +* :pr:`4704`: BUG Fix random effects covariance getter for MixedLM +* :pr:`4712`: BUG: add ModelWarning base class to avoid warning filter on standard UserWarning. +* :pr:`4717`: TST: allclose instead of exact match for floats and use machine precision +* :pr:`4720`: fix syntax-like error +* :pr:`4722`: ENH: Add formula support to MI multiple imputation +* :pr:`4726`: ENH Kernel covariance +* :pr:`4728`: TST: Openblas appveyor fixes +* :pr:`4732`: ENH: add GLMInfluence +* :pr:`4736`: DOC: Make custom function take effect +* :pr:`4739`: REF: SARIMAX: only warn for non stationary starting params +* :pr:`4743`: BUG: state space: exact diffuse filtering in complex data type case +* :pr:`4750`: DOC: Fix indentation of math formulas +* :pr:`4753`: DOC: Add notebook on concentrated scale in ssm +* :pr:`4758`: DOC: Added missing notebooks to examples +* :pr:`4760`: CLN: Provide better name for pooled risk ratio +* :pr:`4763`: replace copy/pasted code with import +* :pr:`4766`: BUG/ENH: VARMAX Fix trend / exog. timing. Add polynomial trends. +* :pr:`4767`: MAINT: gitignore univariate_diffuse pyx files. +* :pr:`4770`: BUG: State space: standardized forecast error when using Cholesky methods with partial missing data +* :pr:`4777`: MAINT: conda specify numpy-base +* :pr:`4785`: BUG: Get prediction index in VAR predict. +* :pr:`4786`: CLEAN: fix indentation by four typos +* :pr:`4788`: BUG: bayes mixed GLM maintenance +* :pr:`4790`: BUG: k_params if seasonal MA +* :pr:`4805`: Only compute matrix_rank(exog) once in DiscreteModel.initialize +* :pr:`4809`: BUG: fix arguments in poisson mixed model +* :pr:`4810`: BUG: simulation smoothed measurement disturbance with FILTER_COLLAPSED +* :pr:`4814`: CLEAN: Removed unnecessary and non-informative print +* :pr:`4815`: ENH/BUG: Improve SARIMAX for time series close to non-stationary +* :pr:`4819`: ENH: Allow several optimizers to be tried in sequence for MixedLM +* :pr:`4820`: Implement basic linting for Travis +* :pr:`4823`: Fix deprecation warnings +* :pr:`4826`: BUG/ENH: Recursive LS: fix bug w/ multiple constraints +* :pr:`4834`: Implement full flake8 checking for a subset of files in good condition +* :pr:`4835`: CLEAN: Fix tab indentation, lint for it +* :pr:`4842`: CLN: Flake8 fixups and linting for statespace files (but not tests) +* :pr:`4844`: CLN: Fully lint regime_switching +* :pr:`4845`: ENH: Improve speed in Exponential Smoothing +* :pr:`4853`: CLN/REF: Remove recarrays from datasets +* :pr:`4855`: BUG: Attach vc_names for mixed Poisson models +* :pr:`4858`: MAINT: Delete migrate_issues_gh +* :pr:`4859`: Fix some NameErrors, don't delete unused [...] +* :pr:`4861`: DOC: Fix small doc errors +* :pr:`4864`: CLN: fix and lint for W391 blank line at end of file +* :pr:`4869`: Update setup.cfg +* :pr:`4871`: BLD: Refactor Setup +* :pr:`4872`: MAINT: Remove nose and related references +* :pr:`4879`: CLN: Fix documentation for Levinson-Durbin +* :pr:`4883`: CLN: remove empty __main__ sections +* :pr:`4886`: CLN: Fully lint recursive_ls.py +* :pr:`4889`: REF: Rename ColinearityWarning +* :pr:`4890`: BUG: Add check to ensure array in arma order selection +* :pr:`4891`: BLD: Fix linting and move coverage +* :pr:`4893`: TST: Restore incorrectly disabled test +* :pr:`4895`: CLN: Fix and lint for misleading indentation E125,E129 +* :pr:`4896`: CLN: Fix and lint for potential double-negatives E713,E714 +* :pr:`4897`: CLN: Fix and lint for multiple spaces after keyword E271 +* :pr:`4900`: CLN: Lint for missing whitespace around modulo operator E228,E401 +* :pr:`4901`: CLN: Fix and lint for E124 closing bracket does not match visual indentation +* :pr:`4909`: ENH: QIC for GEE +* :pr:`4910`: CLN: Blank Lines E301,E302,E303,E305,E306 in examples, tools, sm.base +* :pr:`4911`: MAINT: Remove future errors and warnings +* :pr:`4912`: BLD: Rebased ci improvements +* :pr:`4913`: TST: Add a fixture to close all plots +* :pr:`4914`: CLN: Blanks E301,E302,E303,E305,E306 in tsa +* :pr:`4915`: ENH: explicit exceptions in ARMA/ARIMA forecast with missing or wrong exog +* :pr:`4920`: BUG/ENH: Two bug fixes and several enhancements to knockoff filter (regression fdr) +* :pr:`4921`: BUG: remove faux endog from results if constraints +* :pr:`4924`: CLN: E242 space after tab, enforce all passing rules +* :pr:`4925`: CLN: Enforce E721, use isinstance +* :pr:`4926`: CLN: Enforce E306, blank lines in nested funcs +* :pr:`4927`: CLN: Enforce E272, multiple spaces +* :pr:`4929`: BLD: Add linting for any new files +* :pr:`4933`: Remove unused patsy import in quantile_regression.ipynb +* :pr:`4937`: ENH: Add nlag argument to acovf +* :pr:`4941`: MAINT: remove exact duplicate file datamlw.py +* :pr:`4943`: TST: Relax tolerance on failing test +* :pr:`4944`: BLD: Add pinned numpy on appveyor +* :pr:`4949`: BUG: Set default lags for acf/pacf plots +* :pr:`4950`: DOC: Fix small typo in unit root testing example +* :pr:`4953`: DOC: Fix nagging issues in docs +* :pr:`4954`: BUG: disallow use_self=False +* :pr:`4959`: DOC: Clean up tsa docs +* :pr:`4960`: BUG: Add finite check for _MinimalWLS +* :pr:`4963`: BUG: Remove change of global pickle method +* :pr:`4967`: BUG: Fix definition of GLS r2 +* :pr:`4968`: BUG: Check inputs in KernelReg +* :pr:`4971`: DOC: Switch to https where used +* :pr:`4972`: MAINT/CLN Remove .bzrignore +* :pr:`4977`: [BUG/MAINT] Fix NameErrors caused by missing kwargs +* :pr:`4978`: [MAINT/Test] skip test instead of mangling name in test_generic_methods +* :pr:`4979`: [MAINT/TST] remove np.testing.dec unused imports (nose dependency) +* :pr:`4980`: [MAINT/TST] skip/xfail tests instead of mangling/commenting-out in genmod, regression +* :pr:`4981`: [MAINT] Remove info.py +* :pr:`4982`: DOC Fix typo Paramters-->Parameters +* :pr:`4983`: [TST] xfail/skip instead of commenting-out/mangling discrete tests +* :pr:`4984`: [TST/DOC] make commented-out code in tests/results into readable docs +* :pr:`4985`: [TST/DOC] Make test comments more readable +* :pr:`4986`: [MAINT/TST] turn commented-out code into readable docs in results_arma +* :pr:`4987`: [TST/MAINT] turn commented-out code into readable docs in results_ar,… +* :pr:`4988`: [TST/MAINT] de-duplicate get_correction_factor code +* :pr:`4989`: [MAINT/CLN] Remove code made unusable due to license issue +* :pr:`4990`: [MAINT/CLN] remove numdiff __main__ section explicitly marked as scratch work +* :pr:`4993`: [TST/CLN] Turn decorators __main__ section into tests +* :pr:`4995`: [TST] make tools.linalg __main__ section into tests +* :pr:`4998`: [CLN/TST] Follow instructions to remove function +* :pr:`4999`: [MAINT] remove wrappers.py +* :pr:`5000`: [MAINT] update compat to remove unusable shims e.g. py26 +* :pr:`5002`: [MAINT] add missing import +* :pr:`5003`: MAINT: fix invalid exception messages +* :pr:`5005`: [MAINT] remove unused imports in examples+tools +* :pr:`5007`: MAINT: unused imports in robust +* :pr:`5011`: [MAINT] remove text file relics from scikits/statsmodels +* :pr:`5012`: [MAINT/TST] move misplaced results files in regressions/tests +* :pr:`5013`: [MAINT] fix typo depricated-->deprecated +* :pr:`5014`: [MAINT] typo in __init__ signature +* :pr:`5015`: [MAINT] move misplaced test_tsa_indexes +* :pr:`5016`: ENH: Burgs algorithm +* :pr:`5020`: MAINT: fix incorrect docstring summary-->summary2 +* :pr:`5021`: MAINT: fix typo duplicated References in docstring +* :pr:`5024`: MAINT: silenced as_pandas warnings in documentation +* :pr:`5027`: MAINT: remove functions duplicated from scipy +* :pr:`5029`: MAINT: strict linting for sm.stats files _close_ to already passing +* :pr:`5040`: MAINT: clean up x13.py, delete main +* :pr:`5042`: ENH: Add innovations algorithm +* :pr:`5043`: BUG: Initialization when simulating +* :pr:`5045`: MAINT: strict linting for tsa.statespace.tests.results +* :pr:`5057`: BUG: Correct check for callable +* :pr:`5058`: BUG: Don't use mutable default values +* :pr:`5059`: BLD: Add line displaying CPU info to CI +* :pr:`5065`: TST: Fix incorrect assertion +* :pr:`5070`: MAINT: remove file that just says to remove it +* :pr:`5071`: MAINT: remove example file corresponding to removed module +* :pr:`5074`: MAINT: strict lint test_var.py +* :pr:`5075`: MAINT: strict linting test_univariate.py +* :pr:`5076`: ENH: more work on copula (deriv, classes) +* :pr:`5079`: MAINT: linting statespace tests +* :pr:`5080`: FIX failure caused by #5076 +* :pr:`5083`: ENH: Add "(uncentered)" after rsquared label in .summary, .summary2 when appropriate +* :pr:`5086`: TST: parametrize tests instead of using for loops +* :pr:`5088`: DOC: Add javascript to link to other doc versions +* :pr:`5090`: MAINT: Chrome doesn't like having a secure link with an unsecure image +* :pr:`5093`: Allow results to be stored for multiple imputation +* :pr:`5096`: ENH remove unneeded restriction on QIC (GEE) +* :pr:`5099`: MAINT: fix and lint for W292 newline at end of file +* :pr:`5103`: BUG: fix missing new_branch_dir arg in upload_pdf +* :pr:`5105`: BUG/DOC: Description of k_posdef +* :pr:`5114`: MAINT: many but not all trailing whitespace +* :pr:`5119`: CLN: remove unused imports in tools, sm.tsa +* :pr:`5120`: BUG: Ensure internal tester exits with error if needed +* :pr:`5121`: MAINT: Avoid star imports +* :pr:`5122`: MAINT: Modernize R-->py script, lint output +* :pr:`5123`: CLN: Move results files to a location that is copied to install +* :pr:`5124`: MAINT: fix generated double whitespace +* :pr:`5127`: BUG: Fix NameError in grouputils, make __main__ into tests +* :pr:`5130`: BUG: incorrect self.score in GenericLikelihoodModel; closes #4453 +* :pr:`5133`: TST: apply stacklevel to warning in Family.__init__ +* :pr:`5135`: MAINT: Fix warnings +* :pr:`5136`: TST: improve testing util functions; de-duplicate +* :pr:`5138`: CLN: Use cache_readonly instead of OneTimeProperty +* :pr:`5141`: MAINT: Delete bspline source files +* :pr:`5143`: ENH/BUG Bootstrap clone rebased +* :pr:`5146`: Clean up the smf namespace +* :pr:`5148`: REF/TST: add seed to hdrboxplot, Use random order in pytest +* :pr:`5149`: TST: Theil test randomseed +* :pr:`5152`: REF: Use iterative cumsum_n +* :pr:`5153`: ENH: Add additional options for pacf ols +* :pr:`5156`: TST: Remove __main__ sections in tests +* :pr:`5162`: TST: Fix incorrect test closes #4325 +* :pr:`5164`: BF: drop tolerance of a zero_constrained test +* :pr:`5165`: MAINT: Add decorator for tests that use matplotlib +* :pr:`5166`: DOC: Fix section title in QIC +* :pr:`5167`: TST/BUG: Fix missing SkipTest +* :pr:`5170`: DEPR: Remove items deprecated in previous versions +* :pr:`5171`: MAINT: Remove kalmanf StateSpace code supplanted by tsa.statespace +* :pr:`5176`: TST: Fix random generation issue +* :pr:`5177`: DOC: Improve Holt Winters documentation +* :pr:`5178`: TST: Fix scale in test +* :pr:`5180`: TST: Change assert_approx_equal to assert_allclose +* :pr:`5184`: TST: parametrize tests in test_lme +* :pr:`5188`: BLD/TST: Add coverage for Cython files +* :pr:`5191`: MAINT: Remove selected __main__ sections +* :pr:`5192`: MAINT: Fix incorrect pass statements +* :pr:`5193`: MAINT: raise specific exceptions instead of just Exception +* :pr:`5194`: MAINT: fix incorrect TypeError --> ValueError +* :pr:`5195`: BLD: Include License in Wheel +* :pr:`5196`: TST: Set seed when using basin hopping +* :pr:`5198`: TST/CLN/BUG: Fix corr nearest factor +* :pr:`5200`: TST: Alter test condition due to parameter scale +* :pr:`5201`: TST/CLN: test_arima_exog_predict, Rescale data to avoid convergence issues +* :pr:`5203`: BUG: raise instead of return ValueError +* :pr:`5204`: MAINT: Avoid/Fix FutureWarnings +* :pr:`5207`: TST: Ensure random numbers are reproducible +* :pr:`5208`: TST/CLN: Tighten tol to reduce spurious test failure +* :pr:`5210`: BLD: Ensure master is available when linting +* :pr:`5211`: MAINT: Import instead of copy/pasting utils +* :pr:`5213`: MAINT: Move misplaced duration results files +* :pr:`5214`: MAINT: remove example-like file that could never run +* :pr:`5217`: MAINT: Remove outdated pandas compat shims +* :pr:`5218`: MAINT: Move misplaced genmod results files +* :pr:`5219`: fixed typo +* :pr:`5222`: MAINT: fully lint formula +* :pr:`5223`: MAINT: fully lint compat +* :pr:`5224`: REF: raise early on invalid method +* :pr:`5227`: MAINT: docstring and whitespace fixups +* :pr:`5228`: DOC: Fix many small errors in examples +* :pr:`5230`: DOC: Fix small doc build errors +* :pr:`5232`: TST: mark smoketests +* :pr:`5237`: TST: Add mac testing +* :pr:`5239`: BLD/TST: Add platform-specific skips to CI testing +* :pr:`5240`: MAINT: remove cythonize.py made unnecessary by #4871 +* :pr:`5242`: DOC: Update release instructions [skip ci] +* :pr:`5244`: DEPR: warn that VARResults.cov_params will become method +* :pr:`5246`: DOC: Added documentation of elements in anova_lm +* :pr:`5248`: DOC: Revert incorrect docstring change [skip ci] +* :pr:`5249`: MAINT: Add Script to convert notebooks +* :pr:`5250`: BUG/TST: TSA models: _get_index_label_loc failed when using row labels. +* :pr:`5251`: DOC: Use correct “autoregressive” in docstring +* :pr:`5252`: BUG: Allow `summary` even if filter_results=None (e.g. after `save`, `load` +* :pr:`5257`: BUG: Sequential simulation in models with state_intercept +* :pr:`5260`: MAINT: avoid pandas FutureWarning by checking specific condition +* :pr:`5262`: MAINT: fix typos in pca, wrap long lines +* :pr:`5263`: BLD: Only unshallow when required +* :pr:`5265`: MAINT: Prefer signature over formatargspec +* :pr:`5267`: MAINT: implement _wrap_derivative_exog for de-duplication +* :pr:`5269`: MAINT: De-duplicate code in iolib.summary +* :pr:`5272`: WIP/MAINT: Identify defunct code in summary methods +* :pr:`5273`: Fix incorrect parameter name in docstring +* :pr:`5274`: MAINT: remove self.table pinning +* :pr:`5275`: ENH/BUG Modify GEE indexing to remove numpy warnings +* :pr:`5277`: DOC: Clarify/fix docs on GLM scale estimation for negative binomial +* :pr:`5292`: DOC: Remove only_directive +* :pr:`5295`: TST: Added random seed to test_gee and verifed working +* :pr:`5300`: DOC fix docstring in stattools.py +* :pr:`5301`: BUG: MICEData sets initial imputation incorrectly +* :pr:`5304`: ENH: conditional logistic and Poisson regression +* :pr:`5306`: DOC: Workarounds to fix docbuild +* :pr:`5308`: REF: Collect covtype descriptions, de-duplicate normalization func +* :pr:`5314`: DOC: minor fix on documentation on Durbin Watson test +* :pr:`5322`: DOC: Move magic +* :pr:`5324`: ENH: analytic version of arma_acovf +* :pr:`5325`: BUG/TST: Fix innovations_filter, add test vs Kalman filter +* :pr:`5335`: MAINT: eliminate some pytest warnings +* :pr:`5345`: ENH: Allow dep_data to be specified using formula or names +* :pr:`5348`: Set python3 as interpreter for doc tools +* :pr:`5352`: CLN: Fix F901 and E306 mixups +* :pr:`5353`: CLN: W605 fixups in vector_ar +* :pr:`5359`: BUG: raise correct error +* :pr:`5360`: ENH: Fast ARMA innovation algorithm and loglike computation +* :pr:`5369`: MAINT: disable pytest minversion check (broken in pytest 3.10.0) +* :pr:`5383`: BUG: Initialization of simulation smoother with exact diffuse initialization +* :pr:`5390`: BUG/ENH: modify stationary cov_struct for GEE +* :pr:`5397`: BUG: Fix medcouple with ties +* :pr:`5399`: CLN: Fix some invalid escapes +* :pr:`5421`: CLN: informative names for test functions +* :pr:`5424`: MAINT: conda-forge use gcc7 +* :pr:`5426`: Misspelling in the documentation proportions_ztest +* :pr:`5435`: ENH Score test enhancements for GEE +* :pr:`5440`: ENH: Use GLM to get starting values for GEE +* :pr:`5449`: ENH/DOC: Added linting instruction in CONTRIBUTING.rst +* :pr:`5450`: ENH: regularized GEE +* :pr:`5462`: Fixed broken link for Guerry Dataset +* :pr:`5471`: Fix broken link +* :pr:`5481`: ENH: Generalized Additive Models and splines (Gam 2744 rebased4) +* :pr:`5484`: DOC: fix gam.rst +* :pr:`5485`: MAINT: Travis fixes +* :pr:`5489`: ENH: Mediation for Mixedlm +* :pr:`5494`: BUG: Bad escapes +* :pr:`5497`: Fix typo in docstring +* :pr:`5501`: BUG: Correct error in VAR ACF +* :pr:`5510`: ENH Conditional multinomial logit +* :pr:`5513`: DOC: Fix spelling +* :pr:`5516`: ENH square root lasso +* :pr:`5518`: ENH dimension reduction regression +* :pr:`5521`: ENH: Tweedie log-likelihood (+ridge regression by gradient for all GLM) +* :pr:`5532`: DOC/ENH Docstring updates for clogit +* :pr:`5541`: DOC: Describe binomial endog formats +* :pr:`5542`: BUG/TEST: py27 needs slacker tolerances +* :pr:`5543`: BUG: Tweedie EQL quasi-likelihood +* :pr:`5548`: keep index of series when recoding a series +* :pr:`5551`: ENH: extend mixedlm optimizer attempts +* :pr:`5556`: Update _smoothers_lowess.pyx +* :pr:`5566`: Add project_urls to setup +* :pr:`5567`: Correct a spell mistake +* :pr:`5569`: ENH: Improve numerical stability of _ar_transparams, _ar_invtransparams +* :pr:`5582`: Jbrockmendel w605b +* :pr:`5583`: MAINT: Set language level for Cython +* :pr:`5584`: MAINT: Remov deprecation issues +* :pr:`5586`: DOC: Add issue and pr templates +* :pr:`5587`: MAINT: Resolve additional deprecations +* :pr:`5588`: BUG: Replace $$ in generated LaTeX +* :pr:`5589`: DOC: Updated the `for all i, j` +* :pr:`5590`: MAINT: Reorder travis so that legacy fails early +* :pr:`5591`: Jbrockmendel manywarns3 +* :pr:`5592`: Jbrockmendel pversion +* :pr:`5593`: MAINT: remove never-needed callable and never-used compat functions +* :pr:`5594`: TST: Ensure test is identical in all runs +* :pr:`5595`: MAINT: Remove warnings from tests +* :pr:`5596`: TST: Explicitly set seed in basinhopping +* :pr:`5597`: MAINT: Remove unavailable imports +* :pr:`5599`: DOC: More emphasis and fix reference +* :pr:`5600`: TST: Relax tolerance for OpenBlas issue +* :pr:`5601`: Update mixed_linear.rst +* :pr:`5602`: ENH: White spec test (clean commit for PR 4721) +* :pr:`5604`: MAINT: Update template to encourage master check +* :pr:`5605`: Guofei9987 modify comments proportion confint +* :pr:`5606`: Mattwigway mice setting with copy warning +* :pr:`5607`: Jtweeder graphics addgraphics +* :pr:`5611`: BUG: Stop hardcoding parameters in results +* :pr:`5612`: MAINT: Ensure no warnings are produced by foreign +* :pr:`5613`: DOC: Improve PR template [skip ci] +* :pr:`5614`: MAINT: Deprecate scale in test function +* :pr:`5615`: Thequackdaddy docs +* :pr:`5616`: Bulleted list and minor typos in ttest_ind +* :pr:`5617`: CI: Implement azure-pipelines with multi-platform support +* :pr:`5621`: CLN: simplify lint configuration, fix some invalid escapes +* :pr:`5622`: DOC: Restore import +* :pr:`5625`: Andrew d davis tukey pvals +* :pr:`5626`: MAINT: Improve user-facing error message +* :pr:`5627`: BLD: Remove redundant travis config +* :pr:`5628`: MAINT: Relax tolerance on OSX only +* :pr:`5630`: MAINT: Enable xdist on azure +* :pr:`5631`: MAINT: Allow webuse fail +* :pr:`5633`: TST: change skip to xfail for test_compare_numdiff on OSX +* :pr:`5634`: Gabrielreid pandas multiindex handling bug +* :pr:`5635`: MAINT: Add a codecov config file +* :pr:`5636`: DOC: Update badges [skip ci] +* :pr:`5637`: CLN: strict linting for tools directory +* :pr:`5638`: MAINT: remove file with note to remove in 0.5.0 +* :pr:`5640`: ENH: Improve error when ARMA endog is not 1d +* :pr:`5641`: Josef pkt svar irf errband 5280 +* :pr:`5642`: TST: Relax tolerance on OSX for OpenBlas issues +* :pr:`5643`: MAINT: Consoliate platform checks +* :pr:`5644`: CLN/DOC: Remove unused module, vbench references +* :pr:`5645`: TST: Allow network failure in web tests +* :pr:`5646`: BUG: Fix MANOVA when not using formulas +* :pr:`5647`: TST: Adjust test_irf atol +* :pr:`5648`: BUG: Replace midrule with hline +* :pr:`5649`: CLN: strict linting for robust/tests directory +* :pr:`5650`: MAINT: Fix error in lint script +* :pr:`5652`: ENH/BUG: Use intercept form of trend / exog in VARMAX start params (not mean form) +* :pr:`5653`: MAINT: Reformat exceptions +* :pr:`5654`: Evgenyzhurko fix contingency table +* :pr:`5655`: BUG: summary2 use float_format when creating `_simple_tables` see #1964 +* :pr:`5656`: BLD: Add linting to azure +* :pr:`5657`: TST: Protect multiprocess using test +* :pr:`5658`: BLD: Match requirements in setup and requirements +* :pr:`5659`: TST: Allow corr test to fail on Win32 +* :pr:`5660`: MAINT: Fix make.bat [skip ci] +* :pr:`5661`: TST: Relax test tolerance on OSX +* :pr:`5662`: TST: Protect multiprocess on windows +* :pr:`5663`: MAINT: Add test runners +* :pr:`5664`: CLN: Fix and lint for E703 statements ending in semicolon +* :pr:`5666`: TST: Relax tolerance for irf test on windows +* :pr:`5667`: TST: Adjust tol and reset random state +* :pr:`5668`: TST: Adjust tolerance for test on windows +* :pr:`5669`: MAINT: Remove unused code +* :pr:`5670`: Jim varanelli issue2781 +* :pr:`5671`: BUG: fix stats.moment_helpers inplace modification +* :pr:`5672`: ENH: Add cov type to summary for discrete models +* :pr:`5673`: ENH: Allow comparing two samples with different sizes +* :pr:`5675`: CLN: strict linting for emplike/tests +* :pr:`5679`: DOC: Clarify that predict expects arrays in dicts [skip ci] +* :pr:`5680`: ENH: Allow const idx to be found +* :pr:`5681`: BUG: Always set mle_retvals +* :pr:`5683`: BUG: Escape strings for latex output +* :pr:`5684`: BUG: fix df in summary for single constraint in wald_test_terms +* :pr:`5685`: Spelling +* :pr:`5686`: DOC: Fix parameter description in weightstats +* :pr:`5691`: MAINT: Near-duplicate example file, remove dominated version +* :pr:`5693`: CLN: Fix invalid escapes where possible +* :pr:`5694`: MAINT: Fix NameErrors in correlation_structures +* :pr:`5695`: MAINT: remove NameError-having version of levinson_durbin, just keep … +* :pr:`5696`: CLN: remove identical functions from garch +* :pr:`5697`: CLN: strict linting for examples/ +* :pr:`5698`: PERF: Avoid impplicit check when hasconst +* :pr:`5699`: BUG: Limit lag length in adf +* :pr:`5700`: MAINT: Update import of URLError +* :pr:`5701`: MAINT: missing imports, typos, fixes several NameErrors +* :pr:`5702`: MAINT: clean up docstring'd-out failure in __main__ block +* :pr:`5703`: MAINT: confirm that docstring'd-out traceback no longer raises; remove +* :pr:`5704`: ENH: expose innovations computation method to API. +* :pr:`5705`: WIP: TST: Sort dicts in test_multi +* :pr:`5707`: ENH: KPSS - detailed error message when lags > nobs +* :pr:`5709`: TST: Fix bad bash +* :pr:`5710`: CLN: clean up over/under indentation in tsa.tests.results, E12 codes +* :pr:`5712`: CLN: fix invalid escapes in test_stattools introduced in #5707 +* :pr:`5713`: CLN/EX: Troubleshoot broken example, clean up now-working scratch paper +* :pr:`5715`: CLN: ellipses-out invalid escapes traceback +* :pr:`5716`: MAINT: Fix incorrect specification of loglike arg +* :pr:`5717`: MAINT: fix non-working example ex_pandas +* :pr:`5720`: CLN: remove impossible commented-out imports, close several +* :pr:`5721`: CLN: strict linting for dimred, processreg, and their tests. +* :pr:`5723`: Spelling fix in ValueError message +* :pr:`5724`: MAINT: close assorted small issues +* :pr:`5726`: DOC: Remove redundant attributes in GLM +* :pr:`5728`: CLN: remove and lint for unused imports +* :pr:`5729`: MAINT: use dummy_sparse func within method, see GH#5687 +* :pr:`5730`: CLN: strict linting for discrete.tests.results +* :pr:`5732`: CLN: strict linting for genmod/tests/results +* :pr:`5734`: CLN: codes with only a few violations apiece +* :pr:`5736`: CLN: strict linting for regression/tests/results +* :pr:`5737`: CLN: strict linting for tsa.filters +* :pr:`5738`: CLN: strict linting for stats/tests/results/ +* :pr:`5740`: CLN: strict linting for tsa.tests.results +* :pr:`5742`: CLN: strict linting for remaining results directories +* :pr:`5743`: CLN: strict linting for results files in sandbox/regression/tests/ +* :pr:`5744`: CLN: Fix/lint for dangerious redefinitions and comparisons +* :pr:`5746`: MAINT: fix missing or redundant imports +* :pr:`5748`: CLN: clean up adfvalues, avoid using `eval` +* :pr:`5750`: CLN: E131 hanging indentation alignment +* :pr:`5758`: CLN: lint for ambiguous variable names +* :pr:`5760`: TST: test for intentionally emitted warnings, avoid some unintentional ones +* :pr:`5762`: BUG: rename wts to weights issue #4725 +* :pr:`5765`: BUG/TST: Fix+test pieces of code that would raise NameError +* :pr:`5770`: DEPR: deprecate StataReader, StataWriter, genfromdta +* :pr:`5771`: ENH: improve missing data handling for GEE +* :pr:`5774`: PERF: use np.sum(...) instead of sum(...) +* :pr:`5778`: CLN: strict linting for test_varmax +* :pr:`5780`: TST: Protext against SSLError +* :pr:`5781`: CLN: Replace #5779 +* :pr:`5783`: BUG: Ensure coint_johansen runs with 0 lags +* :pr:`5789`: BUG: GEE fit_history +* :pr:`5791`: Holder bunch +* :pr:`5792`: MAINT: matplotlib normed -> density +* :pr:`5793`: MAINT: Adjust tolerance for random fail on OSX +* :pr:`5796`: CLN: test_data.py +* :pr:`5798`: BUG: ignore bugs instead of fixing them +* :pr:`5801`: CI: Consolidate coveragerc spec +* :pr:`5803`: ENH: QIF regression +* :pr:`5805`: REF/CLN: collect imports at top of file, de-duplicate imports +* :pr:`5815`: CLN: test_gee.py +* :pr:`5816`: CLN: genmod/families/ +* :pr:`5818`: CLN: qif +* :pr:`5825`: MAINT: use correct key name to check cov params presence +* :pr:`5830`: DOC: Add docstring for base class +* :pr:`5831`: PERF: Import speed +* :pr:`5833`: BUG: ARIMA fit with trend and constant exog +* :pr:`5834`: DOC: Fix small errors in release notes +* :pr:`5839`: MAINT: RangeIndex._start deprecated in pandas 0.25 +* :pr:`5836`: CLN: over-indentation E117 +* :pr:`5837`: CLN: invalid escapes in linear_model +* :pr:`5843`: MAINT: Catch intentional warnings +* :pr:`5846`: DOC: Update maintainer +* :pr:`5847`: BUG: Allow NumPy ints # +* :pr:`5848`: BUG: Warn rather than print +* :pr:`5850`: MAINT: Improve error message +* :pr:`5851`: BUG: Refactor method used to name variables +* :pr:`5853`: BUG: Add check for xnames length +* :pr:`5854`: BUG: Fix MNLogit summary with float values +* :pr:`5857`: BUG: Allow categorical to accept pandas dtype +* :pr:`5858`: BUG: Fix default alignment for SimpleTable +* :pr:`5859`: DOC: fix incorrect ARResults.predict docstring, closes #4498 +* :pr:`5860`: Cdown gofplot typerror +* :pr:`5863`: MAINT: Use pd.Categorical() instead of .astype('categorical') +* :pr:`5868`: BUG: State space univariate smoothing w/ time-varying transition matrix: wrong transition matrix used +* :pr:`5869`: DOC: Improve ExponentialSmoothing docstring +* :pr:`5875`: DOC: Improve bug report template +* :pr:`5876`: BUG: Ensure keywords exist in partial reg plot +* :pr:`5879`: DOC: Update version dropdown javascript diff --git a/docs/source/release/version0.5.rst b/docs/source/release/version0.5.rst new file mode 100644 index 0000000..c346b82 --- /dev/null +++ b/docs/source/release/version0.5.rst @@ -0,0 +1,628 @@ +============= +Release 0.5.0 +============= + +Statsmodels 0.5 is a large and very exciting release that brings together a year of work done by 38 authors, including over 2000 commits. It contains many new features and a large amount of bug fixes detailed below. + +See the :ref:`list of fixed issues ` for specific closed issues. + +The following major new features appear in this version. + +Support for Model Formulas via Patsy +==================================== + +Statsmodels now supports fitting models with a formula. This functionality is provided by `patsy `_. Patsy is now a dependency for statsmodels. Models can be individually imported from the ``statsmodels.formula.api`` namespace or you can import them all as:: + + import statsmodels.formula.api as smf + +Alternatively, each model in the usual ``statsmodels.api`` namespace has a ``from_formula`` classmethod that will create a model using a formula. Formulas are also available for specifying linear hypothesis tests using the ``t_test`` and ``f_test`` methods after model fitting. A typical workflow can now look something like this. + +.. code-block:: python + + import numpy as np + import pandas as pd + import statsmodels.formula.api as smf + + url = 'https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/csv/HistData/Guerry.csv' + data = pd.read_csv(url) + + # Fit regression model (using the natural log of one of the regressors) + results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=data).fit() + +See :ref:`here for some more documentation of using formulas in statsmodels ` + +Empirical Likelihood (Google Summer of Code 2012 project) +--------------------------------------------------------- + +Empirical Likelihood-Based Inference for moments of univariate and multivariate variables is available as well as EL-based ANOVA tests. EL-based linear regression, including the regression through the origin model. In addition, the accelerated failure time model for inference on a linear regression model with a randomly right censored endogenous variable is available. + +Analysis of Variance (ANOVA) Modeling +------------------------------------- + +Support for ANOVA is now available including type I, II, and III sums of squares. See :ref:`anova`. + +.. currentmodule:: statsmodels.nonparametric + +Multivariate Kernel Density Estimators (GSoC 2012 project) +---------------------------------------------------------- + +Kernel density estimation has been extended to handle multivariate estimation as well via product kernels. It is available as :class:`sm.nonparametric.KDEMultivariate `. It supports least squares and maximum likelihood cross-validation for bandwidth estimation, as well as mixed continuous, ordered, and unordered categorical data. Conditional density estimation is also available via :class:`sm.nonparametric.KDEMUltivariateConditional `. + +Nonparameteric Regression (GSoC 2012 project) +--------------------------------------------- +Kernel regression models are now available via :class:`sm.nonparametric.KernelReg `. It is based on the product kernel mentioned above, so it also has the same set of features including support for cross-validation as well as support for estimation mixed continuous and categorical variables. Censored kernel regression is also provided by `kernel_regression.KernelCensoredReg`. + +Quantile Regression Model +------------------------- + +.. currentmodule:: statsmodels.regression.quantile_regression + +Quantile regression is supported via the :class:`sm.QuantReg ` class. Kernel and bandwidth selection options are available for estimating the asymptotic covariance matrix using a kernel density estimator. + +Negative Binomial Regression Model +---------------------------------- + +.. currentmodule:: statsmodels.discrete.discrete_model + +It is now possible to fit negative binomial models for count data via maximum-likelihood using the :class:`sm.NegativeBinomial ` class. ``NB1``, ``NB2``, and ``geometric`` variance specifications are available. + +l1-penalized Discrete Choice Models +----------------------------------- + +A new optimization method has been added to the discrete models, which includes Logit, Probit, MNLogit and Poisson, that makes it possible to estimate the models with an l1, linear, penalization. This shrinks parameters towards zero and can set parameters that are not very different from zero to zero. This is especially useful if there are a large number of explanatory variables and a large associated number of parameters. `CVXOPT `_ is now an optional dependency that can be used for fitting these models. + +New and Improved Graphics +------------------------- + +.. currentmodule:: statsmodels.graphics + +* **ProbPlot**: A new `ProbPlot` object has been added to provide a simple interface to create P-P, Q-Q, and probability plots with options to fit a distribution and show various reference lines. In the case of Q-Q and P-P plots, two different samples can be compared with the `other` keyword argument. :func:`sm.graphics.ProbPlot ` + +.. code-block:: python + + import numpy as np + import statsmodels.api as sm + x = np.random.normal(loc=1.12, scale=0.25, size=37) + y = np.random.normal(loc=0.75, scale=0.45, size=37) + ppx = sm.ProbPlot(x) + ppy = sm.ProbPlot(y) + fig1 = ppx.qqplot() + fig2 = ppx.qqplot(other=ppy) + +* **Mosaic Plot**: Create a mosaic plot from a contingency table. This allows you to visualize multivariate categorical data in a rigorous and informative way. Available with :func:`sm.graphics.mosaic `. + +* **Interaction Plot**: Interaction plots now handle categorical factors as well as other improviments. :func:`sm.graphics.interaction_plot `. + +* **Regression Plots**: The regression plots have been refactored and improved. They can now handle pandas objects and regression results instances appropriately. See :func:`sm.graphics.plot_fit `, :func:`sm.graphics.plot_regress_exog `, :func:`sm.graphics.plot_partregress `, :func:`sm.graphics.plot_ccpr `, :func:`sm.graphics.abline_plot `, :func:`sm.graphics.influence_plot `, and :func:`sm.graphics.plot_leverage_resid2 `. + +.. currentmodule:: statsmodels.stats.power + +Power and Sample Size Calculations +---------------------------------- + +The power module (``statsmodel.stats.power``) currently implements power and sample size calculations for the t-tests (:class:`sm.stats.TTestPower `, :class:`sm.stats.TTestIndPower `), normal based test (:class:`sm.stats.NormIndPower `), F-tests (:class:`sm.stats.FTestPower `, `:class:sm.stats.FTestAnovaPower `) and Chisquare goodness of fit (:class:`sm.stats.GofChisquarePower `) test. The implementation is class based, but the module also provides three shortcut functions, :func:`sm.stats.tt_solve_power `, :func:`sm.stats.tt_ind_solve_power ` and :func:`sm.stats.zt_ind_solve_power ` to solve for any one of the parameters of the power equations. See this `blog post `_ for a more in-depth description of the additions. + + +Other important new features +---------------------------- +* **IPython notebook examples**: Many of our examples have been converted or added as IPython notebooks now. They are available `here `_. + +* **Improved marginal effects for discrete choice models**: Expanded options for obtaining marginal effects after the estimation of nonlinear discrete choice models are available. See :py:meth:`get_margeff `. + +* **OLS influence outlier measures**: After the estimation of a model with OLS, the common set of influence and outlier measures and a outlier test are now available attached as methods ``get_influnce`` and ``outlier_test`` to the Results instance. See :py:class:`OLSInfluence ` and :func:`outlier_test `. + +* **New datasets**: New :ref:`datasets ` are available for examples. + +* **Access to R datasets**: We now have access to many of the same datasets available to R users through the `Rdatasets project `_. You can access these using the :func:`sm.datasets.get_rdataset ` function. This function also includes caching of these datasets. + +* **Improved numerical differentiation tools**: Numerical differentiation routines have been greatly improved and expanded to cover all the routines discussed in:: + + Ridout, M.S. (2009) Statistical applications of the complex-step method + of numerical differentiation. The American Statistician, 63, 66-74 + + See the :ref:`sm.tools.numdiff ` module. + +* **Consistent constant handling across models**: Result statistics no longer rely on the assumption that a constant is present in the model. + +* **Missing value handling across models**: Users can now control what models do in the presence of missing values via the ``missing`` keyword available in the instantiation of every model. The options are ``'none'``, ``'drop'``, and ``'raise'``. The default is ``'none'``, which does no missing value checks. To drop missing values use ``'drop'``. And ``'raise'`` will raise an error in the presence of any missing data. + +.. currentmodule:: statsmodels.iolib + +* **Ability to write Stata datasets**: Added the ability to write Stata ``.dta`` files. See :class:`sm.iolib.StataWriter `. + +.. currentmodule:: statsmodels.tsa.arima_model + +* **ARIMA modeling**: Statsmodels now has support for fitting Autoregressive Integrated Moving Average (ARIMA) models. See :class:`ARIMA` and :class:`ARIMAResults` for more information. + +* **Support for dynamic prediction in AR(I)MA models**: It is now possible to obtain dynamic in-sample forecast values in :class:`ARMA` and :class:`ARIMA` models. + +* **Improved Pandas integration**: Statsmodels now supports all frequencies available in pandas for time-series modeling. These are used for intelligent dates handling for prediction. These features are available, if you pass a pandas Series or DataFrame with a DatetimeIndex to a time-series model. + +.. currentmodule:: statsmodels + +* **New statistical hypothesis tests**: Added statistics for calculating interrater agreement including Cohen's kappa and Fleiss' kappa (See :ref:`interrater`), statistics and hypothesis tests for proportions (See :ref:`proportion stats `), Tukey HSD (with plot) was added as an enhancement to the multiple comparison tests (:class:`sm.stats.multicomp.MultiComparison `, :func:`sm.stats.multicomp.pairwise_tukeyhsd `). Weighted statistics and t tests were enhanced with new options. Tests of equivalence for one sample and two independent or paired samples were added based on t tests and z tests (See :ref:`tost`). + + +Major Bugs fixed +---------------- + +* Post-estimation statistics for weighted least squares that depended on the centered total sum of squares were not correct. These are now correct and tested. See :ghissue:`501`. + +* Regression through the origin models now correctly use uncentered total sum of squares in post-estimation statistics. This affected the :math:`R^2` value in linear models without a constant. See :ghissue:`27`. + +Backwards incompatible changes and deprecations +----------------------------------------------- + +* Cython code is now non-optional. You will need a C compiler to build from source. If building from github and not a source release, you will also need Cython installed. See the :ref:`installation documentation `. + +* The ``q_matrix`` keyword to `t_test` and `f_test` for linear models is deprecated. You can now specify linear hypotheses using formulas. + +.. currentmodule:: statsmodels.tsa + +* The ``conf_int`` keyword to :func:`sm.tsa.acf ` is deprecated. + +* The ``names`` argument is deprecated in :class:`sm.tsa.VAR ` and `sm.tsa.SVAR `. This is now automatically detected and handled. + +.. currentmodule:: statsmodels.tsa + +* The ``order`` keyword to :py:meth:`sm.tsa.ARMA.fit ` is deprecated. It is now passed in during model instantiation. + +.. currentmodule:: statsmodels.distributions + +* The empirical distribution function (:class:`sm.distributions.ECDF `) and supporting functions have been moved to ``statsmodels.distributions``. Their old paths have been deprecated. + +* The ``margeff`` method of the discrete choice models has been deprecated. Use ``get_margeff`` instead. See above. Also, the vague ``resid`` attribute of the discrete choice models has been deprecated in favor of the more descriptive ``resid_dev`` to indicate that they are deviance residuals. + +.. currentmodule:: statsmodels.nonparametric.kde + +* The class ``KDE`` has been deprecated and renamed to :class:`KDEUnivariate` to distinguish it from the new ``KDEMultivariate``. See above. + +Development summary and credits +------------------------------- + +The previous version (statsmodels 0.4.3) was released on July 2, 2012. Since then we have closed a total of 380 issues, 172 pull requests and 208 regular issues. The :ref:`detailed list` can be viewed. + +This release is a result of the work of the following 38 authors who contributed total of 2032 commits. If for any reason, we've failed to list your name in the below, please contact us: + +* Ana Martinez Pardo +* anov +* avishaylivne +* Bruno Rodrigues +* Carl Vogel +* Chad Fulton +* Christian Prinoth +* Daniel B. Smith +* dengemann +* Dieter Vandenbussche +* Dougal Sutherland +* Enrico Giampieri +* evelynmitchell +* George Panterov +* Grayson +* Jan Schulz +* Josef Perktold +* Jeff Reback +* Justin Grana +* langmore +* Matthew Brett +* Nathaniel J. Smith +* otterb +* padarn +* Paul Hobson +* Pietro Battiston +* Ralf Gommers +* Richard T. Guy +* Robert Cimrman +* Skipper Seabold +* Thomas Haslwanter +* timmie +* Tom Augspurger +* Trent Hauck +* tylerhartley +* Vincent Arel-Bundock +* VirgileFritsch +* Zhenya + +.. note:: + + Obtained by running ``git log v0.4.3..HEAD --format='* %aN <%aE>' | sed 's/@/\-at\-/' | sed 's/<>//' | sort -u``. + +.. _issues_list_05: + +Issues closed in the 0.5.0 development cycle +============================================ + +Issued closed in 0.5.0 +----------------------- + +GitHub stats for release 0.5.0 (07/02/2012/ - 08/14/2013/). + +We closed a total of 380 issues, 172 pull requests and 208 regular issues. This is the full list (generated with the script :file:`tools/github_stats.py`): + +This list is automatically generated, and may be incomplete: + +Pull Requests (172): + +* :ghpull:`1015`: DOC: Bump version. Remove done tasks. +* :ghpull:`1010`: DOC/RLS: Update release notes workflow. Help Needed! +* :ghpull:`1014`: DOC: nbgenerate does not like the comment at end of line. +* :ghpull:`1012`: DOC: Add link to notebook and crosslink ref. Closes #924. +* :ghpull:`997`: misc, tests, diagnostic +* :ghpull:`1009`: MAINT: Add .mailmap file. +* :ghpull:`817`: Add 3 new unit tests for arima_process +* :ghpull:`1001`: BUG include_package_data for install closes #907 +* :ghpull:`1005`: GITHUB: Contributing guidlines +* :ghpull:`1007`: Cleanup docs for release +* :ghpull:`1003`: BUG: Workaround for bug in sphinx 1.1.3. See #1002. +* :ghpull:`1004`: DOC: Update maintainer notes with branching instructions. +* :ghpull:`1000`: BUG: Support pandas 0.8.0. +* :ghpull:`996`: BUG: Handle combo of pandas 0.8.0 and dateutils 1.5.0 +* :ghpull:`995`: ENH: Print dateutil version. +* :ghpull:`994`: ENH: Fail gracefully for version not found. +* :ghpull:`993`: More conservative error catching in TimeSeriesModel +* :ghpull:`992`: Misc fixes 12: adjustments to unit test +* :ghpull:`985`: MAINT: Print versions script. +* :ghpull:`986`: ENH: Prefer to_offset to get_offset. Closes #964. +* :ghpull:`984`: COMPAT: Pandas 0.8.1 compatibility. Closes #983. +* :ghpull:`982`: Misc fixes 11 +* :ghpull:`978`: TST: generic mle pareto disable bsejac tests with estimated loc +* :ghpull:`977`: BUG python 3.3 fix for numpy str TypeError, see #633 +* :ghpull:`975`: Misc fixes 10 numdiff +* :ghpull:`970`: BUG: array too long, raises exception with newer numpy closes #967 +* :ghpull:`965`: Vincent summary2 rebased +* :ghpull:`933`: Update and improve GenericlikelihoodModel and miscmodels +* :ghpull:`950`: BUG/REF mcnemar fix exact pvalue, allow table as input +* :ghpull:`951`: Pylint emplike formula genmod +* :ghpull:`956`: Fix a docstring in KDEMultivariateConditional. +* :ghpull:`949`: BUG fix lowess sort when nans closes #946 +* :ghpull:`932`: ENH: support basinhopping solver in LikelihoodModel.fit() +* :ghpull:`927`: DOC: clearer minimal example +* :ghpull:`919`: Ols summary crash +* :ghpull:`918`: Fixes10 emplike lowess +* :ghpull:`909`: Bugs in GLM pvalues, more tests, pylint +* :ghpull:`906`: ENH: No fmax with Windows SDK so define inline. +* :ghpull:`905`: MAINT more fixes +* :ghpull:`898`: Misc fixes 7 +* :ghpull:`896`: Quantreg rebase2 +* :ghpull:`895`: Fixes issue #832 +* :ghpull:`893`: ENH: Remove unneeded restriction on low. Closes #867. +* :ghpull:`894`: MAINT: Remove broken function. Keep deprecation. Closes #781. +* :ghpull:`856`: Carljv improved lowess rebased2 +* :ghpull:`884`: Pyflakes cleanup +* :ghpull:`887`: BUG: Fix kde caching +* :ghpull:`883`: Fixed pyflakes issue in discrete module +* :ghpull:`882`: Update predstd.py +* :ghpull:`871`: Update of sandbox doc +* :ghpull:`631`: WIP: Correlation positive semi definite +* :ghpull:`857`: BLD: apt get dependencies from Neurodebian, whitespace cleanup +* :ghpull:`855`: AnaMP issue 783 mixture rvs tests rebased +* :ghpull:`854`: Enrico multinear rebased +* :ghpull:`849`: Tyler tukeyhsd rebased +* :ghpull:`848`: BLD TravisCI use python-dateutil package +* :ghpull:`784`: Misc07 cleanup multipletesting and proportions +* :ghpull:`841`: ENH: Add load function to main API. Closes #840. +* :ghpull:`820`: Ensure that tuples are not considered as data, not as data containers +* :ghpull:`822`: DOC: Update for Cython changes. +* :ghpull:`765`: Fix build issues +* :ghpull:`800`: Automatically generate output from notebooks +* :ghpull:`802`: BUG: Use two- not one-sided t-test in t_test. Closes #740. +* :ghpull:`806`: ENH: Import formula.api in statsmodels.api namespace. +* :ghpull:`803`: ENH: Fix arima error message for bad start_params +* :ghpull:`801`: DOC: Fix ANOVA section titles +* :ghpull:`795`: Negative Binomial Rebased +* :ghpull:`787`: Origintests +* :ghpull:`794`: ENH: Allow pandas-in/pandas-out in tsa.filters +* :ghpull:`791`: Github stats for release notes +* :ghpull:`779`: added np.asarray call to durbin_watson in stattools +* :ghpull:`772`: Anova docs +* :ghpull:`776`: BUG: Fix dates_from_range with length. Closes #775. +* :ghpull:`774`: BUG: Attach prediction start date in AR. Closes #773. +* :ghpull:`767`: MAINT: Remove use of deprecated from examples and docs. +* :ghpull:`762`: ENH: Add new residuals to wrapper +* :ghpull:`754`: Fix arima predict +* :ghpull:`760`: ENH: Adjust for k_trend in information criteria. Closes #324. +* :ghpull:`761`: ENH: Fixes and tests sign_test. Closes #642. +* :ghpull:`759`: Fix 236 +* :ghpull:`758`: DOC: Update VAR docs. Closes #537. +* :ghpull:`752`: Discrete cleanup +* :ghpull:`750`: VAR with 1d array +* :ghpull:`748`: Remove reference to new_t_test and new_f_test. +* :ghpull:`739`: DOC: Remove outdated note in docstring +* :ghpull:`732`: BLD: Check for patsy dependency at build time + docs +* :ghpull:`731`: Handle wrapped +* :ghpull:`730`: Fix opt fulloutput +* :ghpull:`729`: Get rid of warnings in docs build +* :ghpull:`698`: update url for hsb2 dataset +* :ghpull:`727`: DOC: Fix indent and add missing params to linear models. Closes #709. +* :ghpull:`726`: CLN: Remove unused method. Closes #694 +* :ghpull:`725`: BUG: Should call anova_single. Closes #702. +* :ghpull:`723`: Rootfinding for Power +* :ghpull:`722`: Handle pandas.Series with names in make_lags +* :ghpull:`714`: Fix 712 +* :ghpull:`668`: Allow for any pandas frequency to be used in TimeSeriesModel. +* :ghpull:`711`: Misc06 - bug fixes +* :ghpull:`708`: BUG: Fix one regressor case for conf_int. Closes #706. +* :ghpull:`700`: Bugs rebased +* :ghpull:`680`: BUG: Swap arguments in fftconvolve for scipy >= 0.12.0 +* :ghpull:`640`: Misc fixes 05 +* :ghpull:`663`: a typo in runs.py doc string for mcnemar test +* :ghpull:`652`: WIP: fixing pyflakes / pep8, trying to improve readability +* :ghpull:`619`: DOC: intro to formulas +* :ghpull:`648`: BF: Make RLM stick to Huber's description +* :ghpull:`649`: Bug Fix +* :ghpull:`637`: Pyflakes cleanup +* :ghpull:`634`: VAR DOC typo +* :ghpull:`623`: Slowtests +* :ghpull:`621`: MAINT: in setup.py, only catch ImportError for pandas. +* :ghpull:`590`: Cleanup test output +* :ghpull:`591`: Interrater agreement and reliability measures +* :ghpull:`618`: Docs fix the main warnings and errors during sphinx build +* :ghpull:`610`: nonparametric examples and some fixes +* :ghpull:`578`: Fix 577 +* :ghpull:`575`: MNT: Remove deprecated scikits namespace +* :ghpull:`499`: WIP: Handle constant +* :ghpull:`567`: Remove deprecated +* :ghpull:`571`: Dataset docs +* :ghpull:`561`: Grab rdatasets +* :ghpull:`570`: DOC: Fixed links to Rdatasets +* :ghpull:`524`: DOC: Clean up discrete model documentation. +* :ghpull:`506`: ENH: Re-use effects if model fit with QR +* :ghpull:`556`: WIP: L1 doc fix +* :ghpull:`564`: TST: Use native integer to avoid issues in dtype asserts +* :ghpull:`543`: Travis CI using M.Brett nipy hack +* :ghpull:`558`: Plot cleanup +* :ghpull:`541`: Replace pandas DataMatrix with DataFrame +* :ghpull:`534`: Stata test fixes +* :ghpull:`532`: Compat 323 +* :ghpull:`531`: DOC: Add ECDF to distributions docs +* :ghpull:`526`: ENH: Add class to write Stata binary dta files +* :ghpull:`521`: DOC: Add abline plot to docs +* :ghpull:`518`: Small fixes: interaction_plot +* :ghpull:`508`: ENH: Avoid taking cholesky decomposition of diagonal matrix +* :ghpull:`509`: DOC: Add ARIMA to docs +* :ghpull:`510`: DOC: realdpi is disposable personal income. Closes #394. +* :ghpull:`507`: ENH: Protect numdifftools import. Closes #45 +* :ghpull:`504`: Fix weights +* :ghpull:`498`: DOC: Add patys requirement to install docs +* :ghpull:`491`: Make _data a public attribute. +* :ghpull:`494`: DOC: Fix pandas links +* :ghpull:`492`: added intersphinx for pandas +* :ghpull:`422`: Handle missing data +* :ghpull:`485`: ENH: Improve error message for pandas objects without dates in index +* :ghpull:`428`: Remove other data +* :ghpull:`483`: Arima predict bug +* :ghpull:`482`: TST: Do array-array comparison when using numpy.testing +* :ghpull:`471`: Formula rename df -> data +* :ghpull:`473`: Vincent docs tweak rebased +* :ghpull:`468`: Docs 050 +* :ghpull:`462`: El aft rebased +* :ghpull:`461`: TST: numpy 1.5.1 compatibility +* :ghpull:`460`: Emplike desc reg rebase +* :ghpull:`410`: Discrete model marginal effects +* :ghpull:`417`: Numdiff cleanup +* :ghpull:`398`: Improved plot_corr and plot_corr_grid functions. +* :ghpull:`401`: BUG: Finish refactoring margeff for dummy. Closes #399. +* :ghpull:`400`: MAINT: remove lowess.py, which was kept in 0.4.x for backwards compatibi... +* :ghpull:`371`: BF+TEST: fixes, checks and tests for isestimable +* :ghpull:`351`: ENH: Copy diagonal before write for upcoming numpy changes +* :ghpull:`384`: REF: Move mixture_rvs out of sandbox. +* :ghpull:`368`: ENH: Add polished version of acf/pacf plots with confidence intervals +* :ghpull:`378`: Infer freq +* :ghpull:`374`: ENH: Add Fair's extramarital affair dataset. From tobit-model branch. +* :ghpull:`358`: ENH: Add method to OLSResults for outlier detection +* :ghpull:`369`: ENH: allow predict to pass through patsy for transforms +* :ghpull:`352`: Formula integration rebased +* :ghpull:`360`: REF: Deprecate order in fit and move to ARMA init +* :ghpull:`366`: Version fixes +* :ghpull:`359`: DOC: Fix sphinx warnings + +Issues (208): + +* :ghissue:`1036`: Series no longer inherits from ndarray +* :ghissue:`1038`: DataFrame with integer names not handled in ARIMA +* :ghissue:`1028`: Test fail with windows and Anaconda - Low priority +* :ghissue:`676`: acorr_breush_godfrey undefined nlags +* :ghissue:`922`: lowess returns inconsistent with option +* :ghissue:`425`: no bse in robust with norm=TrimmedMean +* :ghissue:`1025`: add_constant incorrectly detects constant column +* :ghissue:`533`: py3 compatibility ``pandas.read_csv(urlopen(...))`` +* :ghissue:`662`: doc: install instruction: explicit about removing scikits.statsmodels +* :ghissue:`910`: test failure Ubuntu TestARMLEConstant.test_dynamic_predict +* :ghissue:`80`: t_model: f_test, t_test don't work +* :ghissue:`432`: GenericLikelihoodModel change default for score and hessian +* :ghissue:`454`: BUG/ENH: HuberScale instance is not used, allow user defined scale estimator +* :ghissue:`98`: check connection or connect summary to variable names in wrappers +* :ghissue:`418`: BUG: MNLogit loglikeobs, jac +* :ghissue:`1017`: nosetests warnings +* :ghissue:`924`: DOCS link in notebooks to notebook for download +* :ghissue:`1011`: power ttest endless loop possible +* :ghissue:`907`: BLD data_files for stats.libqsturng +* :ghissue:`328`: consider moving example scripts into IPython notebooks +* :ghissue:`1002`: Docs won't build with Sphinx 1.1.3 +* :ghissue:`69`: Make methods like compare_ftest work with wrappers +* :ghissue:`503`: summary_old in RegressionResults +* :ghissue:`991`: TST precision of normal_power +* :ghissue:`945`: Installing statsmodels from github? +* :ghissue:`964`: Prefer to_offset not get_offset in tsa stuff +* :ghissue:`983`: bug: pandas 0.8.1 incompatibility +* :ghissue:`899`: build_ext inplace doesn't cythonize +* :ghissue:`923`: location of initialization code +* :ghissue:`980`: auto lag selection in S_hac_simple +* :ghissue:`968`: genericMLE Ubuntu test failure +* :ghissue:`633`: python 3.3 compatibility +* :ghissue:`728`: test failure for solve_power with fsolve +* :ghissue:`971`: numdiff test cases +* :ghissue:`976`: VAR Model does not work in 1D +* :ghissue:`972`: numdiff: epsilon has no minimum value +* :ghissue:`967`: lowes test failure Ubuntu +* :ghissue:`948`: nonparametric tests: mcnemar, cochranq unit test +* :ghissue:`963`: BUG in runstest_2sample +* :ghissue:`946`: Issue with lowess() smoother in statsmodels +* :ghissue:`868`: k_vars > nobs +* :ghissue:`917`: emplike emplikeAFT stray dimensions +* :ghissue:`264`: version comparisons need to be made more robust (may be just use LooseVersion) +* :ghissue:`674`: failure in test_foreign, pandas testing +* :ghissue:`828`: GLMResults inconsistent distribution in pvalues +* :ghissue:`908`: RLM missing test for tvalues, pvalues +* :ghissue:`463`: formulas missing in docs +* :ghissue:`256`: discrete Nbin has zero test coverage +* :ghissue:`831`: test errors running bdist +* :ghissue:`733`: Docs: interrater cohens_kappa is missing +* :ghissue:`897`: lowess failure - sometimes +* :ghissue:`902`: test failure tsa.filters precision too high +* :ghissue:`901`: test failure stata_writer_pandas, newer versions of pandas +* :ghissue:`900`: ARIMA.__new__ errors on python 3.3 +* :ghissue:`832`: notebook errors +* :ghissue:`867`: Baxter King has unneeded limit on value for low? +* :ghissue:`781`: discreteResults margeff method not tests, obsolete +* :ghissue:`870`: discrete unit tests duplicates +* :ghissue:`630`: problems in regression plots +* :ghissue:`885`: Caching behavior for KDEUnivariate icdf +* :ghissue:`869`: sm.tsa.ARMA(..., order=(p,q)) gives "__init__() got an unexpected keyword argument 'order'" error +* :ghissue:`783`: statsmodels\distributions\mixture_rvs.py no unit tests +* :ghissue:`824`: Multicomparison w/Pandas Series +* :ghissue:`789`: presentation of multiple comparison results +* :ghissue:`764`: BUG: multipletests incorrect reject for Holm-Sidak +* :ghissue:`766`: multipletests - status and tests of 2step FDR procedures +* :ghissue:`763`: Bug: multipletests raises exception with empty array +* :ghissue:`840`: sm.load should be in the main API namespace +* :ghissue:`830`: invalid version number +* :ghissue:`821`: Fail gracefully when extensions are not built +* :ghissue:`204`: Cython extensions built twice? +* :ghissue:`689`: tutorial notebooks +* :ghissue:`740`: why does t_test return one-sided p-value +* :ghissue:`804`: What goes in statsmodels.formula.api? +* :ghissue:`675`: Improve error message for ARMA SVD convergence failure. +* :ghissue:`15`: arma singular matrix +* :ghissue:`559`: Add Rdatasets to optional dependencies list +* :ghissue:`796`: Prediction Standard Errors +* :ghissue:`793`: filters are not pandas aware +* :ghissue:`785`: Negative R-squared +* :ghissue:`777`: OLS residuals returned as Pandas series when endog and exog are Pandas series +* :ghissue:`770`: Add ANOVA to docs +* :ghissue:`775`: Bug in dates_from_range +* :ghissue:`773`: AR model pvalues error with Pandas +* :ghissue:`768`: multipletests: numerical problems at threshold +* :ghissue:`355`: add draw if interactive to plotting functions +* :ghissue:`625`: Exog is not correctly handled in ARIMA predict +* :ghissue:`626`: ARIMA summary does not print exogenous variable coefficients +* :ghissue:`657`: order (0,1) breaks ARMA forecast +* :ghissue:`736`: ARIMA predict problem for ARMA model +* :ghissue:`324`: ic in ARResults, aic, bic, hqic, fpe inconsistent definition? +* :ghissue:`642`: sign_test check +* :ghissue:`236`: AR start_params broken +* :ghissue:`235`: tests hang on Windows +* :ghissue:`156`: matplotlib deprecated legend ? var plots +* :ghissue:`331`: Remove stale tests +* :ghissue:`592`: test failures in datetools +* :ghissue:`537`: Var Models +* :ghissue:`755`: Unable to access AR fit parameters when model is estimated with pandas.DataFrame +* :ghissue:`670`: discrete: numerically useless clipping +* :ghissue:`515`: MNLogit residuals raise a TypeError +* :ghissue:`225`: discrete models only define deviance residuals +* :ghissue:`594`: remove skiptest in TestProbitCG +* :ghissue:`681`: Dimension Error in discrete_model.py When Running test_dummy_* +* :ghissue:`744`: DOC: new_f_test +* :ghissue:`549`: Ship released patsy source in statsmodels +* :ghissue:`588`: patsy is a hard dependency? +* :ghissue:`716`: Tests missing for functions if pandas is used +* :ghissue:`715`: statmodels regression plots not working with pandas datatypes +* :ghissue:`450`: BUG: full_output in optimizers Likelihood model +* :ghissue:`709`: DOCstrings linear models don't have missing params +* :ghissue:`370`: BUG weightstats has wrong cov +* :ghissue:`694`: DiscreteMargins duplicate method +* :ghissue:`702`: bug, pylint stats.anova +* :ghissue:`423`: Handling of constant across models +* :ghissue:`456`: BUG: ARMA date handling incompatibility with recent pandas +* :ghissue:`514`: NaNs in Multinomial +* :ghissue:`405`: Check for existing old version of scikits.statsmodels? +* :ghissue:`586`: Segmentation fault with OLS +* :ghissue:`721`: Unable to run AR on named time series objects +* :ghissue:`125`: caching pinv_wexog broke iterative fit - GLSAR +* :ghissue:`712`: TSA bug with frequency inference +* :ghissue:`319`: Timeseries Frequencies +* :ghissue:`707`: .summary with alpha ignores parsed value +* :ghissue:`673`: nonparametric: bug in _kernel_base +* :ghissue:`710`: test_power failures +* :ghissue:`706`: .conf_int() fails on linear regression without intercept +* :ghissue:`679`: Test Baxter King band-pass filter fails with scipy 0.12 beta1 +* :ghissue:`552`: influence outliers breaks when regressing on constant +* :ghissue:`639`: test folders not on python path +* :ghissue:`565`: omni_normtest doesn't propagate the axis argument +* :ghissue:`563`: error in doc generation for AR.fit +* :ghissue:`109`: TestProbitCG failure on Ubuntu +* :ghissue:`661`: from scipy import comb fails on the latest scipy 0.11.0 +* :ghissue:`413`: DOC: example_discrete.py missing from 0.5 documentation +* :ghissue:`644`: FIX: factor plot + examples broken +* :ghissue:`645`: STY: pep8 violations in many examples +* :ghissue:`173`: doc sphinx warnings +* :ghissue:`601`: bspline.py dependency on old scipy.stats.models +* :ghissue:`103`: ecdf and step function conventions +* :ghissue:`18`: Newey-West sandwich covariance is missing +* :ghissue:`279`: cov_nw_panel not tests, example broken +* :ghissue:`150`: precision in test_discrete.TestPoissonNewton.test_jac ? +* :ghissue:`480`: rescale loglike for optimization +* :ghissue:`627`: Travis-CI support for scipy +* :ghissue:`622`: mark tests as slow in emplike +* :ghissue:`589`: OLS F-statistic error +* :ghissue:`572`: statsmodels/tools/data.py Stuck looking for la.py +* :ghissue:`580`: test errors in graphics +* :ghissue:`577`: PatsyData detection buglet +* :ghissue:`470`: remove deprecated features +* :ghissue:`573`: lazy imports are (possibly) very slow +* :ghissue:`438`: New results instances are not in online documentation +* :ghissue:`542`: Regression plots fail when Series objects passed to sm.OLS +* :ghissue:`239`: release 0.4.x +* :ghissue:`530`: l1 docs issues +* :ghissue:`539`: test for statwriter (failure) +* :ghissue:`490`: Travis CI on PRs +* :ghissue:`252`: doc: distributions.rst refers to sandbox only +* :ghissue:`85`: release 0.4 +* :ghissue:`65`: MLE fit of AR model has no tests +* :ghissue:`522`: ``test`` doesn't propagate arguments to nose +* :ghissue:`517`: missing array conversion or shape in linear model +* :ghissue:`523`: test failure with ubuntu decimals too large +* :ghissue:`520`: web site documentation, source not updated +* :ghissue:`488`: Avoid cholesky decomposition of diagonal matrices in linear regression models +* :ghissue:`394`: Definition in macrodata NOTE +* :ghissue:`45`: numdifftools dependency +* :ghissue:`501`: WLS/GLS post estimation results +* :ghissue:`500`: WLS fails if weights is a pandas.Series +* :ghissue:`27`: add hasconstant indicator for R-squared and df calculations +* :ghissue:`497`: DOC: add patsy? +* :ghissue:`495`: ENH: add footer SimpleTable +* :ghissue:`402`: model._data -> model.data? +* :ghissue:`477`: VAR NaN Bug +* :ghissue:`421`: Enhancment: Handle Missing Data +* :ghissue:`489`: Expose model._data as model.data +* :ghissue:`315`: tsa models assume pandas object indices are dates +* :ghissue:`440`: arima predict is broken for steps > q and q != 1 +* :ghissue:`458`: TST BUG? comparing pandas and array in tests, formula +* :ghissue:`464`: from_formula signature +* :ghissue:`245`: examples in docs: make nicer +* :ghissue:`466`: broken example, pandas +* :ghissue:`57`: Unhelpful error from bad exog matrix in model.py +* :ghissue:`271`: ARMA.geterrors requires model to be fit +* :ghissue:`350`: Writing to array returned np.diag +* :ghissue:`354`: example_rst does not copy unchanged files over +* :ghissue:`467`: Install issues with Pandas +* :ghissue:`444`: ARMA example on stable release website not working +* :ghissue:`377`: marginal effects count and discrete adjustments +* :ghissue:`426`: "svd" method not supported for OLS.fit() +* :ghissue:`409`: Move numdiff out of the sandbox +* :ghissue:`416`: Switch to complex-step Hessian for AR(I)MA +* :ghissue:`415`: bug in kalman_loglike_complex +* :ghissue:`397`: plot_corr axis text labeling not working (with fix) +* :ghissue:`399`: discrete errors due to incorrect in-place operation +* :ghissue:`389`: VAR test_normality is broken with KeyError +* :ghissue:`388`: Add tsaplots to graphics.api as graphics.tsa +* :ghissue:`387`: predict date wasn't getting set with start = None +* :ghissue:`386`: p-values not returned from acf +* :ghissue:`385`: Allow AR.select_order to work without model being fit +* :ghissue:`383`: Move mixture_rvs out of sandbox. +* :ghissue:`248`: ARMA breaks with a 1d exog +* :ghissue:`273`: When to give order for AR/AR(I)MA +* :ghissue:`363`: examples folder -> tutorials folder +* :ghissue:`346`: docs in sitepackages +* :ghissue:`353`: PACF docs raise a sphinx warning +* :ghissue:`348`: python 3.2.3 test failure zip_longest diff --git a/docs/source/release/version0.6.rst b/docs/source/release/version0.6.rst new file mode 100644 index 0000000..53eda46 --- /dev/null +++ b/docs/source/release/version0.6.rst @@ -0,0 +1,812 @@ +:orphan: + +============= +Release 0.6.1 +============= + +Statsmodels 0.6.1 is a bugfix release. All users are encouraged to upgrade to 0.6.1. + +See the :ref:`list of fixed issues ` for specific backported fixes. + +============= +Release 0.6.0 +============= + +Statsmodels 0.6.0 is another large release. It is the result of the work of 37 authors over the last year and includes over 1500 commits. It contains many new features, improvements, and bug fixes detailed below. + + +See the :ref:`list of fixed issues ` for specific closed issues. + +The following major new features appear in this version. + +Generalized Estimating Equations +-------------------------------- + +Generalized Estimating Equations (GEE) provide an approach to handling +dependent data in a regression analysis. Dependent data arise +commonly in practice, such as in a longitudinal study where repeated +observations are collected on subjects. GEE can be viewed as an +extension of the generalized linear modeling (GLM) framework to the +dependent data setting. The familiar GLM families such as the +Gaussian, Poisson, and logistic families can be used to accommodate +dependent variables with various distributions. + +Here is an example of GEE Poisson regression in a data set with four +count-type repeated measures per subject, and three explanatory +covariates. + +.. code-block:: python + + import numpy as np + import statsmodels.api as sm + import statsmodels.formula.api as smf + + data = sm.datasets.get_rdataset("epil", "MASS").data + + md = smf.gee("y ~ age + trt + base", "subject", data, + cov_struct=sm.cov_struct.Independence(), + family=sm.families.Poisson()) + mdf = md.fit() + print mdf.summary() + + +The dependence structure in a GEE is treated as a nuisance parameter +and is modeled in terms of a "working dependence structure". The +statsmodels GEE implementation currently includes five working +dependence structures (independent, exchangeable, autoregressive, +nested, and a global odds ratio for working with categorical data). +Since the GEE estimates are not maximum likelihood estimates, +alternative approaches to some common inference procedures have been +developed. The statsmodels GEE implementation currently provides +standard errors, Wald tests, score tests for arbitrary parameter +contrasts, and estimates and tests for marginal effects. Several +forms of standard errors are provided, including robust standard +errors that are approximately correct even if the working dependence +structure is misspecified. + +Seasonality Plots +----------------- + +Adding functionality to look at seasonality in plots. Two new functions are :func:`sm.graphics.tsa.month_plot` and :func:`sm.graphics.tsa.quarter_plot`. Another function :func:`sm.graphics.tsa.seasonal_plot` is available for power users. + +.. code-block:: python + + import statsmodels.api as sm + import pandas as pd + + dta = sm.datasets.elnino.load_pandas().data + dta['YEAR'] = dta.YEAR.astype(int).astype(str) + dta = dta.set_index('YEAR').T.unstack() + dates = map(lambda x : pd.datetools.parse('1 '+' '.join(x)), + dta.index.values) + + dta.index = pd.DatetimeIndex(dates, freq='M') + fig = sm.tsa.graphics.month_plot(dta) + +.. currentmodule:: statsmodels.tsa + +Seasonal Decomposition +---------------------- + +We added a naive seasonal decomposition tool in the same vein as R's ``decompose``. This function can be found as :func:`sm.tsa.seasonal_decompose `. + + +.. plot:: + :include-source: + + import statsmodels.api as sm + + dta = sm.datasets.co2.load_pandas().data + # deal with missing values. see issue + dta.co2.interpolate(inplace=True) + + res = sm.tsa.seasonal_decompose(dta.co2) + res.plot() + + +Addition of Linear Mixed Effects Models (MixedLM) + +Linear Mixed Effects Models +--------------------------- + +Linear Mixed Effects models are used for regression analyses involving +dependent data. Such data arise when working with longitudinal and +other study designs in which multiple observations are made on each +subject. Two specific mixed effects models are "random intercepts +models", where all responses in a single group are additively shifted +by a value that is specific to the group, and "random slopes models", +where the values follow a mean trajectory that is linear in observed +covariates, with both the slopes and intercept being specific to the +group. The Statsmodels MixedLM implementation allows arbitrary random +effects design matrices to be specified for the groups, so these and +other types of random effects models can all be fit. + +Here is an example of fitting a random intercepts model to data from a +longitudinal study: + +.. code-block:: python + + import statsmodels.api as sm + import statsmodels.formula.api as smf + data = sm.datasets.get_rdataset('dietox', 'geepack', cache=True).data + md = smf.mixedlm("Weight ~ Time", data, groups=data["Pig"]) + mdf = md.fit() + print mdf.summary() + +The Statsmodels LME framework currently supports post-estimation +inference via Wald tests and confidence intervals on the coefficients, +profile likelihood analysis, likelihood ratio testing, and AIC. Some +limitations of the current implementation are that it does not support +structure more complex on the residual errors (they are always +homoscedastic), and it does not support crossed random effects. We +hope to implement these features for the next release. + +Wrapping X-12-ARIMA/X-13-ARIMA +------------------------------ + +It is now possible to call out to X-12-ARIMA or X-13ARIMA-SEATS from statsmodels. These libraries must be installed separately. + +.. code-block:: python + + import statsmodels.api as sm + + dta = sm.datasets.co2.load_pandas().data + dta.co2.interpolate(inplace=True) + dta = dta.resample('M').last() + + res = sm.tsa.x13_arima_select_order(dta.co2) + print(res.order, res.sorder) + + results = sm.tsa.x13_arima_analysis(dta.co2) + + fig = results.plot() + fig.set_size_inches(12, 5) + fig.tight_layout() + + +Other important new features +---------------------------- + +* The AR(I)MA models now have a :func:`plot_predict ` method to plot forecasts and confidence intervals. +* The Kalman filter Cython code underlying AR(I)MA estimation has been substantially optimized. You can expect speed-ups of one to two orders of magnitude. + +* Added :func:`sm.tsa.arma_order_select_ic`. A convenience function to quickly get the information criteria for use in tentative order selection of ARMA processes. + +* Plotting functions for timeseries is now imported under the ``sm.tsa.graphics`` namespace in addition to ``sm.graphics.tsa``. + +* New `distributions.ExpandedNormal` class implements the Edgeworth expansion for weakly non-normal distributions. + +* **New datasets**: Added new :ref:`datasets ` for examples. ``sm.datasets.co2`` is a univariate time-series dataset of weekly co2 readings. It exhibits a trend and seasonality and has missing values. + +* Added robust skewness and kurtosis estimators in :func:`sm.stats.stattools.robust_skewness` and :func:`sm.stats.stattools.robust_kurtosis`, respectively. An alternative robust measure of skewness has been added in :func:`sm.stats.stattools.medcouple`. + +* New functions added to correlation tools: `corr_nearest_factor` + finds the closest factor-structured correlation matrix to a given + square matrix in the Frobenius norm; `corr_thresholded` efficiently + constructs a hard-thresholded correlation matrix using sparse matrix + operations. + +* New `dot_plot` in graphics: A dotplot is a way to visualize a small dataset + in a way that immediately conveys the identity of every point in the plot. + Dotplots are commonly seen in meta-analyses, where they are known + as "forest plots", but can be used in many other settings as well. + Most tables that appear in research papers can be represented + graphically as a dotplot. +* Statsmodels has added custom warnings to ``statsmodels.tools.sm_exceptions``. By default all of these warnings will be raised whenever appropriate. Use ``warnings.simplefilter`` to turn them off, if desired. +* Allow control over the namespace used to evaluate formulas with patsy via the ``eval_env`` keyword argument. See the :ref:`patsy-namespaces` documentation for more information. + + +Major Bugs fixed +---------------- + +* NA-handling with formulas is now correctly handled. :ghissue:`805`, :ghissue:`1877`. +* Better error messages when an array with an object dtype is used. :ghissue:`2013`. +* ARIMA forecasts were hard-coded for order of integration with ``d = 1``. :ghissue:`1562`. + +.. currentmodule:: statsmodels.tsa + +Backwards incompatible changes and deprecations +----------------------------------------------- + +* RegressionResults.norm_resid is now a readonly property, rather than a function. +* The function ``statsmodels.tsa.filters.arfilter`` has been removed. This did not compute a recursive AR filter but was instead a convolution filter. Two new functions have been added with clearer names :func:`sm.tsa.filters.recursive_filter ` and :func:`sm.tsa.filters.convolution_filter `. + +Development summary and credits +------------------------------- + +The previous version (0.5.0) was released August 14, 2014. Since then we have closed a total of 528 issues, 276 pull requests, and 252 regular issues. Refer to the :ref:`detailed list` for more information. + +This release is a result of the work of the following 37 authors who contributed a total of 1531 commits. If for any reason we have failed to list your name in the below, please contact us: + +A blurb about the number of changes and the contributors list. + +* Alex Griffing +* Alex Parij +* Ana Martinez Pardo +* Andrew Clegg +* Ben Duffield +* Chad Fulton +* Chris Kerr +* Eric Chiang +* Evgeni Burovski +* gliptak +* Hans-Martin von Gaudecker +* Jan Schulz +* jfoo +* Joe Hand +* Josef Perktold +* jsphon +* Justin Grana +* Kerby Shedden +* Kevin Sheppard +* Kyle Beauchamp +* Lars Buitinck +* Max Linke +* Miroslav Batchkarov +* m +* Padarn Wilson +* Paul Hobson +* Pietro Battiston +* Radim Řehůřek +* Ralf Gommers +* Richard T. Guy +* Roy Hyunjin Han +* Skipper Seabold +* Tom Augspurger +* Trent Hauck +* Valentin Haenel +* Vincent Arel-Bundock +* Yaroslav Halchenko + +.. note:: + + Obtained by running ``git log v0.5.0..HEAD --format='* %aN <%aE>' | sed 's/@/\-at\-/' | sed 's/<>//' | sort -u``. + +.. _issues_list_06: + +Issues closed in the 0.6.0 development cycle +============================================ + +Issues closed in 0.6.0 +---------------------- + +GitHub stats for 2013/08/14 - 2014/10/15 (tag: v0.5.0) + +We closed a total of 528 issues, 276 pull requests and 252 regular issues; +this is the full list (generated with the script :file:`tools/github_stats.py`): + +This list is automatically generated and may be incomplete. + +Pull Requests (276): + +* :ghpull:`2044`: ENH: Allow unit interval for binary models. Closes #2040. +* :ghpull:`1426`: ENH: Import arima_process stuff into tsa.api +* :ghpull:`2042`: Fix two minor typos in contrast.py +* :ghpull:`2034`: ENH: Handle missing for extra data with formulas +* :ghpull:`2035`: MAINT: Remove deprecated code for 0.6 +* :ghpull:`1325`: ENH: add the Edgeworth expansion based on the normal distribution +* :ghpull:`2032`: DOC: What it is what it is. +* :ghpull:`2031`: ENH: Expose patsy eval_env to users. +* :ghpull:`2028`: ENH: Fix numerical issues in links and families. +* :ghpull:`2029`: DOC: Fix versions to match other docs. +* :ghpull:`1647`: ENH: Warn on non-convergence. +* :ghpull:`2014`: BUG: Fix forecasting for ARIMA with d == 2 +* :ghpull:`2013`: ENH: Better error message on object dtype +* :ghpull:`2012`: BUG: 2d 1 columns -> 1d. Closes #322. +* :ghpull:`2009`: DOC: Update after refactor. Use code block. +* :ghpull:`2008`: ENH: Add wrapper for MixedLM +* :ghpull:`1954`: ENH: PHReg formula improvements +* :ghpull:`2007`: BLD: Fix build issues +* :ghpull:`2006`: BLD: Do not generate cython on clean. Closes #1852. +* :ghpull:`2000`: BLD: Let pip/setuptools handle dependencies that aren't installed at all. +* :ghpull:`1999`: Gee offset exposure 1994 rebased +* :ghpull:`1998`: BUG/ENH Lasso emptymodel rebased +* :ghpull:`1989`: BUG/ENH: WLS generic robust cov_type didn't use whitened, +* :ghpull:`1587`: ENH: Wrap X12/X13-ARIMA AUTOMDL. Closes #442. +* :ghpull:`1563`: ENH: Add plot_predict method to ARIMA models. +* :ghpull:`1995`: BUG: Fix issue #1993 +* :ghpull:`1981`: ENH: Add api for covstruct. Clear __init__. Closes #1917. +* :ghpull:`1996`: DEV: Ignore .venv file. +* :ghpull:`1982`: REF: Rename jac -> score_obs. Closes #1785. +* :ghpull:`1987`: BUG tsa pacf, base bootstrap +* :ghpull:`1986`: Bug multicomp 1927 rebased +* :ghpull:`1984`: Docs add gee.rst +* :ghpull:`1985`: Bug uncentered latex table 1929 rebased +* :ghpull:`1983`: BUG: Fix compat asunicode +* :ghpull:`1574`: DOC: Fix math. +* :ghpull:`1980`: DOC: Documentation fixes +* :ghpull:`1974`: REF/Doc beanplot change default color, add notebook +* :ghpull:`1978`: ENH: Check input to binary models +* :ghpull:`1979`: BUG: Typo +* :ghpull:`1976`: ENH: Add _repr_html_ to SimpleTable +* :ghpull:`1977`: BUG: Fix import refactor victim. +* :ghpull:`1975`: BUG: Yule walker cast to float +* :ghpull:`1973`: REF: Move and expose webuse +* :ghpull:`1972`: TST: Add testing against NumPy 1.9 and matplotlib 1.4 +* :ghpull:`1939`: ENH: Binstar build files +* :ghpull:`1952`: REF/DOC: Misc +* :ghpull:`1940`: REF: refactor and speedup of mixed LME +* :ghpull:`1937`: ENH: Quick access to online documentation +* :ghpull:`1942`: DOC: Rename Change README type to rst +* :ghpull:`1938`: ENH: Enable Python 3.4 testing +* :ghpull:`1924`: Bug gee cov type 1906 rebased +* :ghpull:`1870`: robust covariance, cov_type in fit +* :ghpull:`1859`: BUG: Don't use negative indexing with k_ar == 0. Closes #1858. +* :ghpull:`1914`: BUG: LikelihoodModelResults.pvalues use df_resid_inference +* :ghpull:`1899`: TST: fix assert_equal for pandas index +* :ghpull:`1895`: Bug multicomp pandas +* :ghpull:`1894`: BUG fix more ix indexing cases for pandas compat +* :ghpull:`1889`: BUG: fix ytick positions closes #1561 +* :ghpull:`1887`: Bug pandas compat asserts +* :ghpull:`1888`: TST test_corrpsd Test_Factor: add noise to data +* :ghpull:`1886`: BUG pandas 0.15 compatibility in grouputils labels +* :ghpull:`1885`: TST: corr_nearest_factor, more informative tests +* :ghpull:`1884`: Fix: Add compat code for pd.Categorical in pandas>=0.15 +* :ghpull:`1883`: BUG: add _ctor_param to TransfGen distributions +* :ghpull:`1872`: TST: fix _infer_freq for pandas .14+ compat +* :ghpull:`1867`: Ref covtype fit +* :ghpull:`1865`: Disable tst distribution 1864 +* :ghpull:`1856`: _spg_optim returns history of objective function values +* :ghpull:`1854`: BLD: Don't hard-code path for building notebooks. Closes #1249 +* :ghpull:`1851`: MAINT: Cor nearest factor tests +* :ghpull:`1847`: Newton regularize +* :ghpull:`1623`: BUG Negbin fit regularized +* :ghpull:`1797`: BUG/ENH: fix and improve constant detection +* :ghpull:`1770`: TST: anova with `-1` noconstant, add tests +* :ghpull:`1837`: Allow group variable to be passed as variable name when using formula +* :ghpull:`1839`: BUG: GEE score +* :ghpull:`1830`: BUG/ENH Use t +* :ghpull:`1832`: TST error with scipy 0.14 location distribution class +* :ghpull:`1827`: fit_regularized for linear models rebase 1674 +* :ghpull:`1825`: Phreg 1312 rebased +* :ghpull:`1826`: Lme api docs +* :ghpull:`1824`: Lme profile 1695 rebased +* :ghpull:`1823`: Gee cat subclass 1694 rebase +* :ghpull:`1781`: ENH: Glm add score_obs +* :ghpull:`1821`: Glm maint #1734 rebased +* :ghpull:`1820`: BUG: revert change to conf_int in PR #1819 +* :ghpull:`1819`: Docwork +* :ghpull:`1772`: REF: cov_params allow case of only cov_params_default is defined +* :ghpull:`1771`: REF numpy >1.9 compatibility, indexing into empty slice closes #1754 +* :ghpull:`1769`: Fix ttest 1d +* :ghpull:`1766`: TST: TestProbitCG increase bound for fcalls closes #1690 +* :ghpull:`1709`: BLD: Made build extensions more flexible +* :ghpull:`1714`: WIP: fit_constrained +* :ghpull:`1706`: REF: Use fixed params in test. Closes #910. +* :ghpull:`1701`: BUG: Fix faulty logic. Do not raise when missing='raise' and no missing data. +* :ghpull:`1699`: TST/ENH StandardizeTransform, reparameterize TestProbitCG +* :ghpull:`1697`: Fix for statsmodels/statsmodels#1689 +* :ghpull:`1692`: OSL Example: redundant cell in example removed +* :ghpull:`1688`: Kshedden mixed rebased of #1398 +* :ghpull:`1629`: Pull request to fix bandwidth bug in issue 597 +* :ghpull:`1666`: Include pyx in sdist but don't install +* :ghpull:`1683`: TST: GLM shorten random seed closes #1682 +* :ghpull:`1681`: Dotplot kshedden rebased of 1294 +* :ghpull:`1679`: BUG: Fix problems with predict handling offset and exposure +* :ghpull:`1677`: Update docstring of RegressionModel.predict() +* :ghpull:`1635`: Allow offset and exposure to be used together with log link; raise excep... +* :ghpull:`1676`: Tests for SVAR +* :ghpull:`1671`: ENH: avoid hard-listed bandwidths -- use present dictionary (+typos fixed) +* :ghpull:`1643`: Allow matrix structure in covariance matrices to be exploited +* :ghpull:`1657`: BUG: Fix refactor victim. +* :ghpull:`1630`: DOC: typo, "interecept" +* :ghpull:`1619`: MAINT: Dataset docs cleanup and automatic build of docs +* :ghpull:`1612`: BUG/ENH Fix negbin exposure #1611 +* :ghpull:`1610`: BUG/ENH fix llnull, extra kwds to recreate model +* :ghpull:`1582`: BUG: wls_prediction_std fix weight handling, see 987 +* :ghpull:`1613`: BUG: Fix proportions allpairs #1493 +* :ghpull:`1607`: TST: adjust precision, CI Debian, Ubuntu testing +* :ghpull:`1603`: ENH: Allow start_params in GLM +* :ghpull:`1600`: CLN: Regression plots fixes +* :ghpull:`1592`: DOC: Additions and fixes +* :ghpull:`1520`: CLN: Refactored so that there is no longer a need for 2to3 +* :ghpull:`1585`: Cor nearest 1384 rebased +* :ghpull:`1553`: Gee maint 1528 rebased +* :ghpull:`1583`: BUG: For ARMA(0,0) ensure 1d bse and fix summary. +* :ghpull:`1580`: DOC: Fix links. [skip ci] +* :ghpull:`1572`: DOC: Fix link title [skip ci] +* :ghpull:`1566`: BLD: Fix copy paste path error for >= 3.3 Windows builds +* :ghpull:`1524`: ENH: Optimize Cython code. Use scipy blas function pointers. +* :ghpull:`1560`: ENH: Allow ARMA(0,0) in order selection +* :ghpull:`1559`: MAINT: Recover lost commits from vbench PR +* :ghpull:`1554`: Silenced test output introduced in medcouple +* :ghpull:`1234`: ENH: Robust skewness, kurtosis and medcouple measures +* :ghpull:`1484`: ENH: Add naive seasonal decomposition function +* :ghpull:`1551`: COMPAT: Fix failing test on Python 2.6 +* :ghpull:`1472`: ENH: using human-readable group names instead of integer ids in MultiComparison +* :ghpull:`1437`: ENH: accept non-int definitions of cluster groups +* :ghpull:`1550`: Fix test gmm poisson +* :ghpull:`1549`: TST: Fix locally failing tests. +* :ghpull:`1121`: WIP: Refactor optimization code. +* :ghpull:`1547`: COMPAT: Correct bit_length for 2.6 +* :ghpull:`1545`: MAINT: Fix missed usage of deprecated tools.rank +* :ghpull:`1196`: REF: ensure O(N log N) when using fft for acf +* :ghpull:`1154`: DOC: Add links for build machines. +* :ghpull:`1546`: DOC: Fix link to wrong notebook +* :ghpull:`1383`: MAINT: Deprecate rank in favor of np.linalg.matrix_rank +* :ghpull:`1432`: COMPAT: Add NumpyVersion from scipy +* :ghpull:`1438`: ENH: Option to avoid "center" environment. +* :ghpull:`1544`: BUG: Travis miniconda +* :ghpull:`1510`: CLN: Improve warnings to avoid generic warnings messages +* :ghpull:`1543`: TST: Suppress RuntimeWarning for L-BFGS-B +* :ghpull:`1507`: CLN: Silence test output +* :ghpull:`1540`: BUG: Correct derivative for exponential transform. +* :ghpull:`1536`: BUG: Restores coveralls for a single build +* :ghpull:`1535`: BUG: Fixes for 2.6 test failures, replacing astype(str) with apply(str) +* :ghpull:`1523`: Travis miniconda +* :ghpull:`1533`: DOC: Fix link to code on github +* :ghpull:`1531`: DOC: Fix stale links with linkcheck +* :ghpull:`1530`: DOC: Fix link +* :ghpull:`1527`: DOCS: Update docs add FAQ page +* :ghpull:`1525`: DOC: Update with Python 3.4 build notes +* :ghpull:`1518`: DOC: Ask for release notes and example. +* :ghpull:`1516`: DOC: Update examples contributing docs for current practice. +* :ghpull:`1517`: DOC: Be clear about data attribute of Datasets +* :ghpull:`1515`: DOC: Fix broken link +* :ghpull:`1514`: DOC: Fix formula import convention. +* :ghpull:`1506`: BUG: Format and decode errors in Python 2.6 +* :ghpull:`1505`: TST: Test co2 load_data for Python 3. +* :ghpull:`1504`: BLD: New R versions require NAMESPACE file. Closes #1497. +* :ghpull:`1483`: ENH: Some utility functions for working with dates +* :ghpull:`1482`: REF: Prefer filters.api to __init__ +* :ghpull:`1481`: ENH: Add weekly co2 dataset +* :ghpull:`1474`: DOC: Add plots for standard filter methods. +* :ghpull:`1471`: DOC: Fix import +* :ghpull:`1470`: DOC/BLD: Log code exceptions from nbgenerate +* :ghpull:`1469`: DOC: Fix bad links +* :ghpull:`1468`: MAINT: CSS fixes +* :ghpull:`1463`: DOC: Remove defunct argument. Change default kw. Closes #1462. +* :ghpull:`1452`: STY: import pandas as pd +* :ghpull:`1458`: BUG/BLD: exclude sandbox in relative path, not absolute +* :ghpull:`1447`: DOC: Only build and upload docs if we need to. +* :ghpull:`1445`: DOCS: Example landing page +* :ghpull:`1436`: DOC: Fix auto doc builds. +* :ghpull:`1431`: DOC: Add default for getenv. Fix paths. Add print_info +* :ghpull:`1429`: MAINT: Use ip_directive shipped with IPython +* :ghpull:`1427`: TST: Make tests fit quietly +* :ghpull:`1424`: ENH: Consistent results for transform_slices +* :ghpull:`1421`: ENH: Add grouping utilities code +* :ghpull:`1419`: Gee 1314 rebased +* :ghpull:`1414`: TST temporarily rename tests probplot other to skip them +* :ghpull:`1403`: Bug norm expan shapes +* :ghpull:`1417`: REF: Let subclasses keep kwds attached to data. +* :ghpull:`1416`: ENH: Make handle_data overwritable by subclasses. +* :ghpull:`1410`: ENH: Handle missing is none +* :ghpull:`1402`: REF: Expose missing data handling as classmethod +* :ghpull:`1387`: MAINT: Fix failing tests +* :ghpull:`1406`: MAINT: Tools improvements +* :ghpull:`1404`: Tst fix genmod link tests +* :ghpull:`1396`: REF: Multipletests reduce memory usage +* :ghpull:`1380`: DOC :Update vector_ar.rst +* :ghpull:`1381`: BLD: Don't check dependencies on egg_info for pip. Closes #1267. +* :ghpull:`1302`: BUG: Fix typo. +* :ghpull:`1375`: STY: Remove unused imports and comment out unused libraries in setup.py +* :ghpull:`1143`: DOC: Update backport notes for new workflow. +* :ghpull:`1374`: ENH: Import tsaplots into tsa namespace. Closes #1359. +* :ghpull:`1369`: STY: Pep-8 cleanup +* :ghpull:`1370`: ENH: Support ARMA(0,0) models. +* :ghpull:`1368`: STY: Pep 8 cleanup +* :ghpull:`1367`: ENH: Make sure mle returns attach to results. +* :ghpull:`1365`: STY: Import and pep 8 cleanup +* :ghpull:`1364`: ENH: Get rid of hard-coded lbfgs. Closes #988. +* :ghpull:`1363`: BUG: Fix typo. +* :ghpull:`1361`: ENH: Attach mlefit to results not model. +* :ghpull:`1360`: ENH: Import adfuller into tsa namespace +* :ghpull:`1346`: STY: PEP-8 Cleanup +* :ghpull:`1344`: BUG: Use missing keyword given to ARMA. +* :ghpull:`1340`: ENH: Protect against ARMA convergence failures. +* :ghpull:`1334`: ENH: ARMA order select convenience function +* :ghpull:`1339`: Fix typos +* :ghpull:`1336`: REF: Get rid of plain assert. +* :ghpull:`1333`: STY: __all__ should be after imports. +* :ghpull:`1332`: ENH: Add Bunch object to tools. +* :ghpull:`1331`: ENH: Always use unicode. +* :ghpull:`1329`: BUG: Decode metadata to utf-8. Closes #1326. +* :ghpull:`1330`: DOC: Fix typo. Closes #1327. +* :ghpull:`1185`: Added support for pandas when pandas was installed directly from git trunk +* :ghpull:`1315`: MAINT: Change back to path for build box +* :ghpull:`1305`: TST: Update hard-coded path. +* :ghpull:`1290`: ENH: Add seasonal plotting. +* :ghpull:`1296`: BUG/TST: Fix ARMA forecast when start == len(endog). Closes #1295 +* :ghpull:`1292`: DOC: cleanup examples folder and webpage +* :ghpull:`1286`: Make sure PeriodIndex passes through tsa. Closes #1285. +* :ghpull:`1271`: Silverman enhancement - Issue #1243 +* :ghpull:`1264`: Doc work GEE, GMM, sphinx warnings +* :ghpull:`1179`: REF/TST: `ProbPlot` now uses `resettable_cache` and added some kwargs to plotting fxns +* :ghpull:`1225`: Sandwich mle +* :ghpull:`1258`: Gmm new rebased +* :ghpull:`1255`: ENH add GEE to genmod +* :ghpull:`1254`: REF: Results.predict convert to array and adjust shape +* :ghpull:`1192`: TST: enable tests for llf after change to WLS.loglike see #1170 +* :ghpull:`1253`: Wls llf fix +* :ghpull:`1233`: sandbox kernels bugs uniform kernel and confint +* :ghpull:`1240`: Kde weights 1103 823 +* :ghpull:`1228`: Add default value tags to adfuller() docs +* :ghpull:`1198`: fix typo +* :ghpull:`1230`: BUG: numerical precision in resid_pearson with perfect fit #1229 +* :ghpull:`1214`: Compare lr test rebased +* :ghpull:`1200`: BLD: do not install \*.pyx \*.c MANIFEST.in +* :ghpull:`1202`: MAINT: Sort backports to make applying easier. +* :ghpull:`1157`: Tst precision master +* :ghpull:`1161`: add a fitting interface for simultaneous log likelihood and score, for lbfgs, tested with MNLogit +* :ghpull:`1160`: DOC: update scipy version from 0.7 to 0.9.0 +* :ghpull:`1147`: ENH: add lbfgs for fitting +* :ghpull:`1156`: ENH: Raise on 0,0 order models in AR(I)MA. Closes #1123 +* :ghpull:`1149`: BUG: Fix small data issues for ARIMA. +* :ghpull:`1092`: Fixed duplicate svd in RegressionModel +* :ghpull:`1139`: TST: Silence tests +* :ghpull:`1135`: Misc style +* :ghpull:`1088`: ENH: add predict_prob to poisson +* :ghpull:`1125`: REF/BUG: Some GLM cleanup. Used trimmed results in NegativeBinomial variance. +* :ghpull:`1124`: BUG: Fix ARIMA prediction when fit without a trend. +* :ghpull:`1118`: DOC: Update gettingstarted.rst +* :ghpull:`1117`: Update ex_arma2.py +* :ghpull:`1107`: REF: Deprecate stand_mad. Add center keyword to mad. Closes #658. +* :ghpull:`1089`: ENH: exp(poisson.logpmf()) for poisson better behaved. +* :ghpull:`1077`: BUG: Allow 1d exog in ARMAX forecasting. +* :ghpull:`1075`: BLD: Fix build issue on some versions of easy_install. +* :ghpull:`1071`: Update setup.py to fix broken install on OSX +* :ghpull:`1052`: DOC: Updating contributing docs +* :ghpull:`1136`: RLS: Add IPython tools for easier backporting of issues. +* :ghpull:`1091`: DOC: minor git typo +* :ghpull:`1082`: coveralls support +* :ghpull:`1072`: notebook examples title cell +* :ghpull:`1056`: Example: reg diagnostics +* :ghpull:`1057`: COMPAT: Fix py3 caching for get_rdatasets. +* :ghpull:`1045`: DOC/BLD: Update from nbconvert to IPython 1.0. +* :ghpull:`1026`: DOC/BLD: Add LD_LIBRARY_PATH to env for docs build. + +Issues (252): + +* :ghissue:`2040`: enh: fractional Logit, Probit +* :ghissue:`1220`: missing in extra data (example sandwiches, robust covariances) +* :ghissue:`1877`: error with GEE on missing data. +* :ghissue:`805`: nan with categorical in formula +* :ghissue:`2036`: test in links require exact class so Logit can't work in place of logit +* :ghissue:`2010`: Go over deprecations again for 0.6. +* :ghissue:`1303`: patsy library not automatically installed +* :ghissue:`2024`: genmod Links numerical improvements +* :ghissue:`2025`: GEE requires exact import for cov_struct +* :ghissue:`2017`: Matplotlib warning about too many figures +* :ghissue:`724`: check warnings +* :ghissue:`1562`: ARIMA forecasts are hard-coded for d=1 +* :ghissue:`880`: DataFrame with bool type not cast correctly. +* :ghissue:`1992`: MixedLM style +* :ghissue:`322`: acf / pacf do not work on pandas objects +* :ghissue:`1317`: AssertionError: attr is not equal [dtype]: dtype('object') != dtype('datetime64[ns]') +* :ghissue:`1875`: dtype bug object arrays (raises in clustered standard errors code) +* :ghissue:`1842`: dtype object, glm.fit() gives AttributeError: sqrt +* :ghissue:`1300`: Doc errors, missing +* :ghissue:`1164`: RLM cov_params, t_test, f_test don't use bcov_scaled +* :ghissue:`1019`: 0.6.0 Roadmap +* :ghissue:`554`: Prediction Standard Errors +* :ghissue:`333`: ENH tools: squeeze in R export file +* :ghissue:`1990`: MixedLM does not have a wrapper +* :ghissue:`1897`: Consider depending on setuptools in setup.py +* :ghissue:`2003`: pip install now fails silently +* :ghissue:`1852`: do not cythonize when cleaning up +* :ghissue:`1991`: GEE formula interface does not take offset/exposure +* :ghissue:`442`: Wrap x-12 arima +* :ghissue:`1993`: MixedLM bug +* :ghissue:`1917`: API: GEE access to genmod.covariance_structure through api +* :ghissue:`1785`: REF: rename jac -> score_obs +* :ghissue:`1969`: pacf has incorrect standard errors for lag 0 +* :ghissue:`1434`: A small bug in GenericLikelihoodModelResults.bootstrap() +* :ghissue:`1408`: BUG test failure with tsa_plots +* :ghissue:`1337`: DOC: HCCM are now available for WLS +* :ghissue:`546`: influence and outlier documentation +* :ghissue:`1532`: DOC: Related page is out of date +* :ghissue:`1386`: Add minimum matplotlib to docs +* :ghissue:`1068`: DOC: keeping documentation of old versions on sourceforge +* :ghissue:`329`: link to examples and datasets from module pages +* :ghissue:`1804`: PDF documentation for statsmodels +* :ghissue:`202`: Extend robust standard errors for WLS/GLS +* :ghissue:`1519`: Link to user-contributed examples in docs +* :ghissue:`1053`: inconvenient: logit when endog is (1,2) instead of (0,1) +* :ghissue:`1555`: SimpleTable: add repr html for ipython notebook +* :ghissue:`1366`: Change default start_params to .1 in ARMA +* :ghissue:`1869`: yule_walker (from `statsmodels.regression`) raises exception when given an integer array +* :ghissue:`1651`: statsmodels.tsa.ar_model.ARResults.predict +* :ghissue:`1738`: GLM robust sandwich covariance matrices +* :ghissue:`1779`: Some directories under statsmodels dont have __init_.py +* :ghissue:`1242`: No support for (0, 1, 0) ARIMA Models +* :ghissue:`1571`: expose webuse, use cache +* :ghissue:`1860`: ENH/BUG/DOC: Bean plot should allow for separate widths of bean and violins. +* :ghissue:`1831`: TestRegressionNM.test_ci_beta2 i386 AssertionError +* :ghissue:`1079`: bugfix release 0.5.1 +* :ghissue:`1338`: Raise Warning for HCCM use in WLS/GLS +* :ghissue:`1430`: scipy min version / issue +* :ghissue:`276`: memoize, last argument wins, how to attach sandwich to Results? +* :ghissue:`1943`: REF/ENH: LikelihoodModel.fit optimization, make hessian optional +* :ghissue:`1957`: BUG: Re-create OLS model using _init_keys +* :ghissue:`1905`: Docs: online docs are missing GEE +* :ghissue:`1898`: add python 3.4 to continuous integration testing +* :ghissue:`1684`: BUG: GLM NegativeBinomial: llf ignores offset and exposure +* :ghissue:`1256`: REF: GEE handling of default covariance matrices +* :ghissue:`1760`: Changing covariance_type on results +* :ghissue:`1906`: BUG: GEE default covariance is not used +* :ghissue:`1931`: BUG: GEE subclasses NominalGEE don't work with pandas exog +* :ghissue:`1904`: GEE Results doesn't have a Wrapper +* :ghissue:`1918`: GEE: required attributes missing, df_resid +* :ghissue:`1919`: BUG GEE.predict uses link instead of link.inverse +* :ghissue:`1858`: BUG: arimax forecast should special case k_ar == 0 +* :ghissue:`1903`: BUG: pvalues for cluster robust, with use_t don't use df_resid_inference +* :ghissue:`1243`: kde silverman bandwidth for non-gaussian kernels +* :ghissue:`1866`: Pip dependencies +* :ghissue:`1850`: TST test_corr_nearest_factor fails on Ubuntu +* :ghissue:`292`: python 3 examples +* :ghissue:`1868`: ImportError: No module named compat [ from statsmodels.compat import lmap ] +* :ghissue:`1890`: BUG tukeyhsd nan in group labels +* :ghissue:`1891`: TST test_gmm outdated pandas, compat +* :ghissue:`1561`: BUG plot for tukeyhsd, MultipleComparison +* :ghissue:`1864`: test failure sandbox distribution transformation with scipy 0.14.0 +* :ghissue:`576`: Add contributing guidelines +* :ghissue:`1873`: GenericLikelihoodModel is not picklable +* :ghissue:`1822`: TST failure on Ubuntu pandas 0.14.0 , problems with frequency +* :ghissue:`1249`: Source directory problem for notebook examples +* :ghissue:`1855`: anova_lm throws error on models created from api.ols but not formula.api.ols +* :ghissue:`1853`: a large number of hardcoded paths +* :ghissue:`1792`: R² adjusted strange after including interaction term +* :ghissue:`1794`: REF: has_constant, k_constant, include implicit constant detection in base +* :ghissue:`1454`: NegativeBinomial missing fit_regularized method +* :ghissue:`1615`: REF DRYing fit methods +* :ghissue:`1453`: Discrete NegativeBinomialModel regularized_fit ValueError: matrices are not aligned +* :ghissue:`1836`: BUG Got an TypeError trying to import statsmodels.api +* :ghissue:`1829`: BUG: GLM summary show "t" use_t=True for summary +* :ghissue:`1828`: BUG summary2 doesn't propagate/use use_t +* :ghissue:`1812`: BUG/ REF conf_int and use_t +* :ghissue:`1835`: Problems with installation using easy_install +* :ghissue:`1801`: BUG 'f_gen' missing in scipy 0.14.0 +* :ghissue:`1803`: Error revealed by numpy 1.9.0r1 +* :ghissue:`1834`: stackloss +* :ghissue:`1728`: GLM.fit maxiter=0 incorrect +* :ghissue:`1795`: singular design with offset ? +* :ghissue:`1730`: ENH/Bug cov_params, generalize, avoid ValueError +* :ghissue:`1754`: BUG/REF: assignment to slices in numpy >= 1.9 (emplike) +* :ghissue:`1409`: GEE test errors on Debian Wheezy +* :ghissue:`1521`: ubuntu failues: tsa_plot and grouputils +* :ghissue:`1415`: test failure test_arima.test_small_data +* :ghissue:`1213`: df_diff in anova_lm +* :ghissue:`1323`: Contrast Results after t_test summary broken for 1 parameter +* :ghissue:`109`: TestProbitCG failure on Ubuntu +* :ghissue:`1690`: TestProbitCG: 8 failing tests (Python 3.4 / Ubuntu 12.04) +* :ghissue:`1763`: Johansen method doesn't give correct index values +* :ghissue:`1761`: doc build failures: ipython version ? ipython directive +* :ghissue:`1762`: Unable to build +* :ghissue:`1745`: UnicodeDecodeError raised by get_rdataset("Guerry", "HistData") +* :ghissue:`611`: test failure foreign with pandas 0.7.3 +* :ghissue:`1700`: faulty logic in missing handling +* :ghissue:`1648`: ProbitCG failures +* :ghissue:`1689`: test_arima.test_small_data: SVD fails to converge (Python 3.4 / Ubuntu 12.04) +* :ghissue:`597`: BUG: nonparametric: kernel, efficient=True changes bw even if given +* :ghissue:`1606`: BUILD from sdist broken if cython available +* :ghissue:`1246`: test failure test_anova.TestAnova2.test_results +* :ghissue:`50`: t_test, f_test, model.py for normal instead of t-distribution +* :ghissue:`1655`: newey-west different than R? +* :ghissue:`1682`: TST test failure on Ubuntu, random.seed +* :ghissue:`1614`: docstring for regression.linear_model.RegressionModel.predict() does not match implementation +* :ghissue:`1318`: GEE and GLM scale parameter +* :ghissue:`519`: L1 fit_regularized cleanup, comments +* :ghissue:`651`: add structure to example page +* :ghissue:`1067`: Kalman Filter convergence. How close is close enough? +* :ghissue:`1281`: Newton convergence failure prints warnings instead of warning +* :ghissue:`1628`: Unable to install statsmodels in the same requirements file as numpy, pandas, etc. +* :ghissue:`617`: Problem in installing statsmodel in Fedora 17 64-bit +* :ghissue:`935`: ll_null in likelihoodmodels discrete +* :ghissue:`704`: datasets.sunspot: wrong link in description +* :ghissue:`1222`: NegativeBinomial ignores exposure +* :ghissue:`1611`: BUG NegativeBinomial ignores exposure and offset +* :ghissue:`1608`: BUG: NegativeBinomial, llnul is always default 'nb2' +* :ghissue:`1221`: llnull with exposure ? +* :ghissue:`1493`: statsmodels.stats.proportion.proportions_chisquare_allpairs has hardcoded value +* :ghissue:`1260`: GEE test failure on Debian +* :ghissue:`1261`: test failure on Debian +* :ghissue:`443`: GLM.fit does not allow start_params +* :ghissue:`1602`: Fitting GLM with a pre-assigned starting parameter +* :ghissue:`1601`: Fitting GLM with a pre-assigned starting parameter +* :ghissue:`890`: regression_plots problems (pylint) and missing test coverage +* :ghissue:`1598`: Is "old" string formatting Python 3 compatible? +* :ghissue:`1589`: AR vs ARMA order specification +* :ghissue:`1134`: Mark knownfails +* :ghissue:`1259`: Parameterless models +* :ghissue:`616`: python 2.6, python 3 in single codebase +* :ghissue:`1586`: Kalman Filter errors with new pyx +* :ghissue:`1565`: build_win_bdist*_py3*.bat are using the wrong compiler +* :ghissue:`843`: UnboundLocalError When trying to install OS X +* :ghissue:`713`: arima.fit performance +* :ghissue:`367`: unable to install on RHEL 5.6 +* :ghissue:`1548`: testtransf error +* :ghissue:`1478`: is sm.tsa.filters.arfilter an AR filter? +* :ghissue:`1420`: GMM poisson test failures +* :ghissue:`1145`: test_multi noise +* :ghissue:`1539`: NegativeBinomial strange results with bfgs +* :ghissue:`936`: vbench for statsmodels +* :ghissue:`1153`: Where are all our testing machines? +* :ghissue:`1500`: Use Miniconda for test builds +* :ghissue:`1526`: Out of date docs +* :ghissue:`1311`: BUG/BLD 3.4 compatibility of cython c files +* :ghissue:`1513`: build on osx -python-3.4 +* :ghissue:`1497`: r2nparray needs NAMESPACE file +* :ghissue:`1502`: coveralls coverage report for files is broken +* :ghissue:`1501`: pandas in/out in predict +* :ghissue:`1494`: truncated violin plots +* :ghissue:`1443`: Crash from python.exe using linear regression of statsmodels +* :ghissue:`1462`: qqplot line kwarg is broken/docstring is wrong +* :ghissue:`1457`: BUG/BLD: Failed build if "sandbox" anywhere in statsmodels path +* :ghissue:`1441`: wls function: syntax error "unexpected EOF while parsing" occurs when name of dependent variable starts with digits +* :ghissue:`1428`: ipython_directive doesn't work with ipython master +* :ghissue:`1385`: SimpleTable in Summary (e.g. OLS) is slow for large models +* :ghissue:`1399`: UnboundLocalError: local variable 'fittedvalues' referenced before assignment +* :ghissue:`1377`: TestAnova2.test_results fails with pandas 0.13.1 +* :ghissue:`1394`: multipletests: reducing memory consumption +* :ghissue:`1267`: Packages cannot have both pandas and statsmodels in install_requires +* :ghissue:`1359`: move graphics.tsa to tsa.graphics +* :ghissue:`356`: docs take up a lot of space +* :ghissue:`988`: AR.fit no precision options for fmin_l_bfgs_b +* :ghissue:`990`: AR fit with bfgs: large score +* :ghissue:`14`: arma with exog +* :ghissue:`1348`: reset_index + set_index with drop=False +* :ghissue:`1343`: ARMA doesn't pass missing keyword up to TimeSeriesModel +* :ghissue:`1326`: formula example notebook broken +* :ghissue:`1327`: typo in docu-code for "Outlier and Influence Diagnostic Measures" +* :ghissue:`1309`: Box-Cox transform (some code needed: lambda estimator) +* :ghissue:`1059`: sm.tsa.ARMA making ma invertibility +* :ghissue:`1295`: Bug in ARIMA forecasting when start is int len(endog) and dates are given +* :ghissue:`1285`: tsa models fail on PeriodIndex with pandas +* :ghissue:`1269`: KPSS test for stationary processes +* :ghissue:`1268`: Feature request: Exponential smoothing +* :ghissue:`1250`: DOCs error in var_plots +* :ghissue:`1032`: Poisson predict breaks on list +* :ghissue:`347`: minimum number of observations - document or check ? +* :ghissue:`1170`: WLS log likelihood, aic and bic +* :ghissue:`1187`: sm.tsa.acovf fails when both unbiased and fft are True +* :ghissue:`1239`: sandbox kernels, problems with inDomain +* :ghissue:`1231`: sandbox kernels confint missing alpha +* :ghissue:`1245`: kernels cosine differs from Stata +* :ghissue:`823`: KDEUnivariate with weights +* :ghissue:`1229`: precision problems in degenerate case +* :ghissue:`1219`: select_order +* :ghissue:`1206`: REF: RegressionResults cov-HCx into cached attributes +* :ghissue:`1152`: statsmodels failing tests with pandas master +* :ghissue:`1195`: pyximport.install() before import api crash +* :ghissue:`1066`: gmm.IV2SLS has wrong predict signature +* :ghissue:`1186`: OLS when exog is 1d +* :ghissue:`1113`: TST: precision too high in test_normality +* :ghissue:`1159`: scipy version is still >= 0.7? +* :ghissue:`1108`: SyntaxError: unqualified exec is not allowed in function 'test_EvalEnvironment_capture_flag +* :ghissue:`1116`: Typo in Example Doc? +* :ghissue:`1123`: BUG : arima_model._get_predict_out_of_sample, ignores exogenous of there is no trend ? +* :ghissue:`1155`: ARIMA - The computed initial AR coefficients are not stationary +* :ghissue:`979`: Win64 binary can't find Python installation +* :ghissue:`1046`: TST: test_arima_small_data_bug on current master +* :ghissue:`1146`: ARIMA fit failing for small set of data due to invalid maxlag +* :ghissue:`1081`: streamline linear algebra for linear model +* :ghissue:`1138`: BUG: pacf_yw doesn't demean +* :ghissue:`1127`: Allow linear link model with Binomial families +* :ghissue:`1122`: no data cleaning for statsmodels.genmod.families.varfuncs.NegativeBinomial() +* :ghissue:`658`: robust.mad is not being computed correctly or is non-standard definition; it returns the median +* :ghissue:`1076`: Some issues with ARMAX forecasting +* :ghissue:`1073`: easy_install sandbox violation +* :ghissue:`1115`: EasyInstall Problem +* :ghissue:`1106`: bug in robust.scale.mad? +* :ghissue:`1102`: Installation Problem +* :ghissue:`1084`: DataFrame.sort_index does not use ascending when then value is a list with a single element +* :ghissue:`393`: marginal effects in discrete choice do not have standard errors defined +* :ghissue:`1078`: Use pandas.version.short_version +* :ghissue:`96`: deepcopy breaks on ResettableCache +* :ghissue:`1055`: datasets.get_rdataset string decode error on python 3 +* :ghissue:`46`: tsa.stattools.acf confint needs checking and tests +* :ghissue:`957`: ARMA start estimate with numpy master +* :ghissue:`62`: GLSAR incorrect initial condition in whiten +* :ghissue:`1021`: from_formula() throws error - problem installing +* :ghissue:`911`: noise in stats.power tests +* :ghissue:`472`: Update roadmap for 0.5 +* :ghissue:`238`: release 0.5 +* :ghissue:`1006`: update nbconvert to IPython 1.0 +* :ghissue:`1038`: DataFrame with integer names not handled in ARIMA +* :ghissue:`1036`: Series no longer inherits from ndarray +* :ghissue:`1028`: Test fail with windows and Anaconda - Low priority +* :ghissue:`676`: acorr_breush_godfrey undefined nlags +* :ghissue:`922`: lowess returns inconsistent with option +* :ghissue:`425`: no bse in robust with norm=TrimmedMean +* :ghissue:`1025`: add_constant incorrectly detects constant column diff --git a/docs/source/release/version0.7.rst b/docs/source/release/version0.7.rst new file mode 100644 index 0000000..22c8197 --- /dev/null +++ b/docs/source/release/version0.7.rst @@ -0,0 +1,255 @@ +:orphan: + +============= +Release 0.7.0 +============= + +Release summary +--------------- + +**Note:** This version has never been officially released. Several models have +been refactored, improved or bugfixed in 0.8. + + +The following major new features appear in this version. + +Principal Component Analysis +---------------------------- + +Author: Kevin Sheppard + +A new class-based Principal Component Analysis has been added. This +class replaces the function-based PCA that previously existed in the +sandbox. This change bring a number of new features, including: + +* Options to control the standardization (demeaning/studentizing) +* Scree plotting +* Information criteria for selecting the number of factors +* R-squared plots to assess component fit +* NIPALS implementation when only a small number of components are required and the dataset is large +* Missing-value filling using the EM algorithm + +.. code-block:: python + + import statsmodels.api as sm + from statsmodels.multivariate.pca import PCA + + data = sm.datasets.fertility.load_pandas().data + + columns = map(str, range(1960, 2012)) + data.set_index('Country Name', inplace=True) + dta = data[columns] + dta = dta.dropna() + + pca_model = PCA(dta.T, standardize=False, demean=True) + pca_model.plot_scree() + +*Note* : A function version is also available which is compatible with the +call in the sandbox. The function version is just a thin wrapper around the +class-based PCA implementation. + +Regression graphics for GLM/GEE +------------------------------- + +Author: Kerby Shedden + +Added variable plots, partial residual plots, and CERES residual plots +are available for GLM and GEE models by calling the methods +`plot_added_variable`, `plot_partial_residuals`, and +`plot_ceres_residuals` that are attached to the results classes. + +State Space Models +------------------ + +Author: Chad Fulton + +State space methods provide a flexible structure for the estimation and +analysis of a wide class of time series models. The Statsmodels implementation +allows specification of state models, fast Kalman filtering, and built-in +methods to facilitate maximum likelihood estimation of arbitrary models. One of +the primary goals of this module is to allow end users to create and estimate +their own models. Below is a short example demonstrating the ease with which a +local level model can be specified and estimated: + +.. code-block:: python + + import numpy as np + import statsmodels.api as sm + import pandas as pd + + data = sm.datasets.nile.load_pandas().data + data.index = pd.DatetimeIndex(data.year.astype(int).astype(str), freq='AS') + + # Setup the state space representation + class LocalLevel(sm.tsa.statespace.MLEModel): + def __init__(self, endog): + # Initialize the state space model + super(LocalLevel, self).__init__( + endog, k_states=1, initialization='approximate_diffuse') + + # Setup known components of state space representation matrices + self.ssm['design', :] = 1. + self.ssm['transition', :] = 1. + self.ssm['selection', :] = 1. + + # Describe how parameters enter the model + def update(self, params, transformed=True): + params = super(LocalLevel, self).update(params, transformed) + self.ssm['obs_cov', 0, 0] = params[0] + self.ssm['state_cov', 0, 0] = params[1] + + def transform_params(self, params): + return params**2 # force variance parameters to be positive + + # Specify start parameters and parameter names + @property + def start_params(self): + return [np.std(self.endog)]*2 + + @property + def param_names(self): + return ['sigma2.measurement', 'sigma2.level'] + + # Fit the model with maximum likelihood estimation + mod = LocalLevel(data['volume']) + res = mod.fit() + print res.summary() + +The documentation and example notebooks provide further examples of how to +form state space models. Included in this release is a full-fledged +model making use of the state space infrastructure to estimate SARIMAX +models. See below for more details. + +Time Series Models (ARIMA) with Seasonal Effects +------------------------------------------------ + +Author: Chad Fulton + +A model for estimating seasonal autoregressive integrated moving average models +with exogenous regressors (SARIMAX) has been added by taking advantage of the +new state space functionality. It can be used very similarly to the existing +`ARIMA` model, but works on a wider range of specifications, including: + +* Additive and multiplicative seasonal effects +* Flexible trend specications +* Regression with SARIMA errors +* Regression with time-varying coefficients +* Measurement error in the endogenous variables + +Below is a short example fitting a model with a number of these components, +including exogenous data, a linear trend, and annual multiplicative seasonal +effects. + +.. code-block:: python + + import statsmodels.api as sm + import pandas as pd + + data = sm.datasets.macrodata.load_pandas().data + data.index = pd.DatetimeIndex(start='1959-01-01', end='2009-09-01', + freq='QS') + endog = data['realcons'] + exog = data['m1'] + + mod = sm.tsa.SARIMAX(endog, exog=exog, order=(1,1,1), + trend='t', seasonal_order=(0,0,1,4)) + res = mod.fit() + print res.summary() + + +Generalized Estimating Equations GEE +------------------------------------ + +Author: Kerby Shedden + +Enhancements and performance improvements for GEE: + +* EquivalenceClass covariance structure allows covariances to be specified by + arbitrary collections of equality constraints #2188 +* add weights #2090 +* refactored margins #2158 + + +MixedLM +------- + +Author: Kerby Shedden with Saket Choudhary + +Enhancements to MixedLM (#2363): added variance components support for +MixedLM allowing a wider range of random effects structures to be specified; +also performance improvements from use of sparse matrices internally for +random effects design matrices. + + +Other important new features +---------------------------- + +* GLM: add scipy-based gradient optimization to fit #1961 (Kerby Shedden) +* wald_test_terms: new method of LikelihoodModels to compute wald tests (F or chi-square) + for terms or sets of coefficients #2132 (Josef Perktold) +* add cov_type with fixed scale in WLS to allow chi2-fitting #2137 #2143 + (Josef Perktold, Christoph Deil) +* VAR: allow generalized IRF and FEVD computation #2067 (Josef Perktold) +* get_prediction new method for full prediction results (new API convention) + + + +Major Bugs fixed +---------------- + +* see github issues for a full list +* bug in ARMA/ARIMA predict with `exog` #2470 +* bugs in VAR +* x13: python 3 compatibility + + + +Backwards incompatible changes and deprecations +----------------------------------------------- + +* List backwards incompatible changes + + +Development summary and credits +------------------------------- + + + +.. note:: + + Thanks to all of the contributors for the 0.7 release: + +.. note:: + + * Alex Griffing + * Antony Lee + * Chad Fulton + * Christoph Deil + * Daniel Sullivan + * Hans-Martin von Gaudecker + * Jan Schulz + * Joey Stockermans + * Josef Perktold + * Kerby Shedden + * Kevin Sheppard + * Kiyoto Tamura + * Louis-Philippe Lemieux Perreault + * Padarn Wilson + * Ralf Gommers + * Saket Choudhary + * Skipper Seabold + * Tom Augspurger + * Trent Hauck + * Vincent Arel-Bundock + * chebee7i + * donbeo + * gliptak + * hlin117 + * jerry dumblauskas + * jonahwilliams + * kiyoto + * neilsummers + * waynenilsen + +These lists of names are automatically generated based on git log, and may not be +complete. diff --git a/docs/source/release/version0.8.rst b/docs/source/release/version0.8.rst new file mode 100644 index 0000000..ba3d707 --- /dev/null +++ b/docs/source/release/version0.8.rst @@ -0,0 +1,343 @@ +:orphan: + +============= +Release 0.8.0 +============= + +See also changes in the unreleased 0.7 + +Release summary +--------------- + +The main features of this release are several new time series models based +on the statespace framework, multiple imputation using MICE as well as many +other enhancements. The codebase also has been updated to be compatible with +recent numpy and pandas releases. + +Statsmodels is using now github to store the updated documentation which +is available under +https://www.statsmodels.org/stable for the last release, and +https://www.statsmodels.org/devel/ for the development version. + +This is the last release that supports Python 2.6. + + +**Warning** + +API stability is not guaranteed for new features, although even in this case +changes will be made in a backwards compatible way if possible. The stability +of a new feature depends on how much time it was already in statsmodels master +and how much usage it has already seen. +If there are specific known problems or limitations, then they are mentioned +in the docstrings. + + +The following major new features appear in this version. + +Statespace Models +----------------- + +Building on the statespace framework and models added in 0.7, this release +includes additional models that build on it. +Authored by Chad Fulton largely during GSOC 2015 + +Kalman Smoother +^^^^^^^^^^^^^^^ + +The Kalman smoother (introduced in #2434) allows making inference on the +unobserved state vector at each point in time using data from the entire +sample. In addition to this improved inference, the Kalman smoother is required +for future improvements such as simulation smoothing and the expectation +maximization (EM) algorithm. + +As a result of this improvement, all state space models now inherit a `smooth` +method for producing results with smoothed state estimates. In addition, the +`fit` method will return results with smoothed estimates at the maximum +likelihood estimates. + +Postestimation +^^^^^^^^^^^^^^ + +Improved post-estimation output is now available to all state space models +(introduced in #2566). This includes the new methods `get_prediction` and +`get_forecast`, providing standard errors and confidence intervals as well +as point estimates, `simulate`, providing simulation of time series following +the given state space process, and `impulse_responses`, allowing computation +of impulse responses due to innovations to the state vector. + +Diagnostics +^^^^^^^^^^^ + +A number of general diagnostic tests on the residuals from state space +estimation are now available to all state space models (introduced in #2431). +These include: + +* `test_normality` implements the Jarque-Bera test for normality of residuals +* `test_heteroskedasticity` implements a test for homoskedasticity of + residuals similar to the Goldfeld-Quandt test +* `test_serial_correlation` implements the Ljung-Box (or Box-Pierce) test for + serial correlation of residuals + +These test statistics are also now included in the `summary` method output. In +addition, a `plot_diagnostics` method is available which provides four plots +to visually assess model fit. + +Unobserved Components +^^^^^^^^^^^^^^^^^^^^^ + +The class of univariate Unobserved Components models (also known as structural +time series models) are now available (introduced in #2432). This includes as +special cases the local level model and local linear trend model. Generically +it allows decomposing a time series into trend, cycle, seasonal, and +irregular components, optionally with exogenous regressors and / or +autoregressive errors. + +Multivariate Models +^^^^^^^^^^^^^^^^^^^ + +Two standard multivariate econometric models - vector autoregressive +moving-average model with exogenous regressors (VARMAX) and Dynamic Factors +models - are now available (introduced in #2563). The first is a popular +reduced form method of exploring the covariance in several time series, and the +second is a popular reduced form method of extracting a small number of common +factors from a large dataset of observed series. + +Recursive least squares +^^^^^^^^^^^^^^^^^^^^^^^ + +A model for recursive least squares, also known as expanding-window OLS, is +now available in `statsmodels.regression` (introduced in #2830). + +Miscellaneous +^^^^^^^^^^^^^ + +Other improvements to the state space framework include: + +* Improved missing data handling #2770, #2809 +* Ongoing refactoring and bug fixes in fringes and corner cases + + +Time Series Analysis +-------------------- + +Markov Switching Models +^^^^^^^^^^^^^^^^^^^^^^^ + +Markov switching dynamic regression and autoregression models are now +available (introduced in #2980 by Chad Fulton). These models allow regression +effects and / or autoregressive dynamics to differ depending on an unobserved +"regime"; in Markov switching models, the regimes are assumed to transition +according to a Markov process. + +Statistics +^^^^^^^^^^ + +* KPSS stationarity, unit root test #2775 (N-Wouda) +* The Brock Dechert Scheinkman (BDS) test for nonlinear dependence is now + available (introduced in #934 by Chad Fulton) +* Augmented Engle/Granger cointegration test (refactor hidden function) #3146 (Josef Perktold) + + +New functionality in statistics +------------------------------- + +Contingency Tables #2418 (Kerby Shedden) + +Local FDR, multiple testing #2297 (Kerby Shedden) + +Mediation Analysis #2352 (Kerby Shedden) + +Confidence intervals for multinomial proportions #3162 (Sebastien Lerique, Josef Perktold) + +other: + +* weighted quantiles in DescrStatsW #2707 (Kerby Shedden) + + +Duration +-------- + +Kaplan Meier Survival Function #2614 (Kerby Shedden) + +Cumulative incidence rate function #3016 (Kerby Shedden) + +other: + +* frequency weights in Kaplan-Meier #2992 (Kerby Shedden) +* entry times for Kaplan-Meier #3126 (Kerby Shedden) +* intercept handling for PHReg #3095 (Kerby Shedden) + + +Imputation +---------- + +new subpackage in `statsmodels.imputation` + +MICE #2076 (Frank Cheng GSOC 2014 and Kerby Shedden) + +Imputation by regression on Order Statistic #3019 (Paul Hobson) + + +Penalized Estimation +-------------------- + +Elastic net: fit_regularized with L1/L2 penalization has been added to +OLS, GLM and PHReg (Kerby Shedden) + + +GLM +--- + +Tweedie is now available as new family #2872 (Peter Quackenbush, Josef Perktold) + +other: + +* frequency weights for GLM (currently without full support) # +* more flexible convergence options #2803 (Peter Quackenbush) + + +Multivariate +------------ + +new subpackage that currently contains PCA + +PCA was added in 0.7 to statsmodels.tools and is now in statsmodels.multivariate + + +Documentation +------------- + +New doc build with latest jupyter and Python 3 compatibility (Tom Augspurger) + + +Other important improvements +---------------------------- + +several existing functions have received improvements + + +* seasonal_decompose: improved periodicity handling #2987 (ssktotoro ?) +* tools add_constant, add_trend: refactoring and pandas compatibility #2240 (Kevin Sheppard) +* acf, pacf, acovf: option for missing handling #3020 (joesnacks ?) +* acf, pacf plots: allow array of lags #2989 (Kevin Sheppard) +* pickling support for ARIMA #3412 (zaemyung) +* io SimpleTable (summary): allow names with special characters #3015 (tvanessa ?) +* tsa tools lagmat, lagmat2ds: pandas support #2310 #3042 (Kevin Sheppard) +* CompareMeans: from_data, summary methods #2754 (Valery Tyumen) +* API cleanup for robust, sandwich covariances #3162 (Josef Perktold) +* influence plot used swapped arguments (bug) #3158 + + + +Major Bugs fixed +---------------- + +* see github issues + +While most bugs are usability problems, there is now a new label `type-bug-wrong` +for bugs that cause that silently incorrect numbers are returned. +https://github.com/statsmodels/statsmodels/issues?q=label%3Atype-bug-wrong+is%3Aclosed + + + +Backwards incompatible changes and deprecations +----------------------------------------------- + +* predict now returns a pandas Series if the exog argument is a DataFrame, + including missing/NaN values +* PCA moved to multivariate compared to 0.7 + + +Development summary and credits +------------------------------- + +Besides receiving contributions for new and improved features and for bugfixes, +important contributions to general maintenance came from + +* Kevin Sheppard +* Pierre Barbier de Reuille +* Tom Augsburger + +and the general maintainer and code reviewer + +* Josef Perktold + +Additionally, many users contributed by participation in github issues and +providing feedback. + +Thanks to all of the contributors for the 0.8 release (based on git log): + +.. note:: + + * Ashish + * Brendan + * Brendan Condon + * BrianLondon + * Chad Fulton + * Chris Fonnesbeck + * Christian Lorentzen + * Christoph T. Weidemann + * James Kerns + * Josef Perktold + * Kerby Shedden + * Kevin Sheppard + * Leoyzen + * Matthew Brett + * Niels Wouda + * Paul Hobson + * Pierre Barbier de Reuille + * Pietro Battiston + * Ralf Gommers + * Roman Ring + * Skipper Seabold + * Soren Fuglede Jorgensen + * Thomas Cokelaer + * Tom Augspurger + * ValeryTyumen + * Vanessa + * Yaroslav Halchenko + * dhpiyush + * joesnacks + * kokes + * matiumerca + * rlan + * ssktotoro + * thequackdaddy + * vegcev + +Thanks to all of the contributors for the 0.7 release: + +.. note:: + + * Alex Griffing + * Antony Lee + * Chad Fulton + * Christoph Deil + * Daniel Sullivan + * Hans-Martin von Gaudecker + * Jan Schulz + * Joey Stockermans + * Josef Perktold + * Kerby Shedden + * Kevin Sheppard + * Kiyoto Tamura + * Louis-Philippe Lemieux Perreault + * Padarn Wilson + * Ralf Gommers + * Saket Choudhary + * Skipper Seabold + * Tom Augspurger + * Trent Hauck + * Vincent Arel-Bundock + * chebee7i + * donbeo + * gliptak + * hlin117 + * jerry dumblauskas + * jonahwilliams + * kiyoto + * neilsummers + * waynenilsen + +These lists of names are automatically generated based on git log, and may not be +complete. diff --git a/docs/source/release/version0.9.rst b/docs/source/release/version0.9.rst new file mode 100644 index 0000000..51bd555 --- /dev/null +++ b/docs/source/release/version0.9.rst @@ -0,0 +1,405 @@ +:orphan: + +============= +Release 0.9.0 +============= + +Release summary +--------------- + +Statsmodels is using github to store the updated documentation which +is available under +https://www.statsmodels.org/stable for the last release, and +https://www.statsmodels.org/devel/ for the development version. + + +**Warning** + +API stability is not guaranteed for new features, although even in +this case changes will be made in a backwards compatible way if +possible. The stability of a new feature depends on how much time it +was already in statsmodels master and how much usage it has already +seen. If there are specific known problems or limitations, then they +are mentioned in the docstrings. + + +The list of pull requests for this release can be found on github +https://github.com/statsmodels/statsmodels/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Amerged+milestone%3A0.9 +(The list does not include some pull request that were merged before +the 0.8 release but not included in 0.8.) + + +The Highlights +-------------- + +- statespace refactoring, Markov Switching Kim smoother +- 3 Google summer of code (GSOC) projects merged + - distributed estimation + - VECM and enhancements to VAR (including cointegration test) + - new count models: GeneralizedPoisson, zero inflated models +- Bayesian mixed GLM +- Gaussian Imputation +- new multivariate methods: factor analysis, MANOVA, repeated measures + within ANOVA +- GLM var_weights in addition to freq_weights +- Holt-Winters and Exponential Smoothing + + +What's new - an overview +------------------------ + +The following lists the main new features of statsmodels 0.9. In addition, +release 0.9 includes bug fixes, refactorings and improvements in many areas. + +**base** + - distributed estimation #3396 (Leland Bybee GSOC, Kerby Shedden) + - optimization option scipy minimize #3193 (Roman Ring) + - Box-Cox #3477 (Niels Wouda) + - t_test_pairwise #4365 (Josef Perktold) + +**discrete** + - new count models (Evgeny Zhurko GSOC, Josef Perktold) + - NegativeBinomialP #3832 merged in #3874 + - GeneralizedPoisson #3727 merged in #3795 + - zero-inflated count models #3755 merged in #3908 + + - discrete optimization improvements #3921, #3928 (Josef Perktold) + - extend discrete margin when extra params, NegativeBinomial #3811 + (Josef Perktold) + +**duration** + - dependent censoring in survival/duration #3090 (Kerby Shedden) + - entry times for Kaplan-Meier #3126 (Kerby Shedden) + +**genmod** + - Bayesian GLMM #4189, #4540 (Kerby Shedden) + - GLM add var_weights #3692 (Peter Quackenbush) + - GLM: EIM in optimization #3646 (Peter Quackenbush) + - GLM correction to scale handling, loglike #3856 (Peter Quackenbush) + +**graphics** + - graphics HDR functional boxplot #3876 merged in #4049 (Pamphile ROY) + - graphics Bland-Altman or Tukey mean difference plot + #4112 merged in #4200 (Joses W. Ho) + - bandwidth options in violinplots #4510 (Jim Correia) + +**imputation** + - multiple imputation via Gaussian model #4394, #4520 (Kerby Shedden) + - regularized fitting in MICE #4319 (Kerby Shedden) + +**iolib** + - improvements of summary_coll #3702 merged #4064 (Natasha Watkins, + Kevin Sheppard) + +**multivariate** + - multivariate: MANOVA, CanCorr #3327 (Yichuan Liu) + - Factor Analysis #4161, #4156, #4167, #4214 (Yichuan Liu, Kerby Shedden, + Josef Perktold) + - statsmodels now includes the rotation code by .... + +**regression** + - fit_regularized for WLS #3581 (Kerby Shedden) + +**stats** + - Knockoff FDR # 3204 (Kerby Shedden) + - Repeated measures ANOVA #3303 merged in #3663, #3838 (Yichuan Liu, Richard + Höchenberger) + - lilliefors test for exponential distribution #3837 merged in #3936 (Jacob + Kimmel, Josef Perktold) + +**tools** + - quasi-random, Halton sequences #4104 (Pamphile ROY) + +**tsa** + - VECM #3246 (Aleksandar Karakas GSOC, Josef Perktold) + - exog support in VAR, incomplete for extra results, part of VECM + #3246, #4538 (Aleksandar Karakas GSOC, Josef Perktold) + - Markov switching, Kim smoother #3141 (Chad Fulton) + - Holt-Winters #3817 merged in #4176 (tvanzyl) + - seasonal_decompose: trend extrapolation and vectorized 2-D #3031 + (kernc, Josef Perktold) + - add frequency domain seasonal components to UnobservedComponents #4250 + (Jordan Yoder) + - refactoring of date handling in tsa #3276, #4457 (Chad Fulton) + - SARIMAX without AR, MA #3383 (Chad Fulton) + +**maintenance** + - switch to pytest #3804 plus several other PRs (Kevin Sheppard) + - general compatibility fixes for recent versions of numpy, scipy and pandas + + +`bug-wrong` +~~~~~~~~~~~ + +A new issue label `type-bug-wrong` indicates bugs that cause that incorrect +numbers are returned without warnings. +(Regular bugs are mostly usability bugs or bugs that raise an exception for +unsupported use cases.) +see https://github.com/statsmodels/statsmodels/issues?q=is%3Aissue+label%3Atype-bug-wrong+is%3Aclosed+milestone%3A0.9 + +- scale in GLM fit_constrained, #4193 fixed in #4195 + cov_params and bse were incorrect if scale is estimated as in Gaussian. + (This did not affect families with scale=1 such as Poisson) +- incorrect `pearson_chi2` with binomial counts, #3612 fixed as part of #3692 +- null_deviance and llnull in GLMResults were wrong if exposure was used and + when offset was used with Binomial counts. +- GLM Binomial in the non-binary count case used incorrect endog in recreating + models which is + used by fit_regularized and fit_constrained #4599. +- GLM observed hessian was incorrectly computed if non-canonical link is used, + fixed in #4620 + This fix improves convergence with gradient optimization and removes a usually + numerically small error in cov_params. +- discrete predict with offset or exposure, #3569 fixed in #3696 + If either offset or exposure are not None but exog is None, then offset and + exposure arguments in predict were ignored. +- discrete margins had wrong dummy and count effect if constant is prepended, + #3695 fixed in #3696 +- OLS outlier test, wrong index if order is True, #3971 fixed in #4385 +- tsa coint ignored the autolag keyword, #3966 fixed in #4492 + This is a backwards incompatible change in default, instead of fixed maxlag + it defaults now to 'aic' lag selection. The default autolag is now the same + as the adfuller default. +- wrong confidence interval in contingency table summary, #3822 fixed in #3830 + This only affected the summary and not the corresponding attribute. +- incorrect results in summary_col if regressor_order is used, + #3767 fixed in #4271 + + +Description of selected new feature +----------------------------------- + +The following provides more information about a selected set of new features. + +Vector Error Correction Model (VECM) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The VECM framework developed during GSOC 2016 by Aleksandar Karakas adds support +for non-stationary cointegrated VAR processes to statsmodels. +Currently, the following topics are implemented + +* Parameter estimation for cointegrated VAR +* forecasting +* testing for Granger-causality and instantaneous causality +* testing for cointegrating rank +* lag order selection. + +New methods have been added also to the existing VAR model, and VAR has now +limited support for user provided explanatory variables. + + +New Count Models +---------------- + +New count models have been added as part of GSOC 2017 by Evgeny Zhurko. +Additional models that are not yet finished will be added for the next release. + +The new models are: + +* NegativeBinomialP (NBP): This is a generalization of NegativeBinomial that + allows the variance power parameter to be specified in the range between 1 + and 2. The current NegativeBinomial support NB1 and NB2 which are two special + cases of NBP. +* GeneralizedPoisson (GPP): Similar to NBP this allows a large range of + dispersion specification. GPP also allow some amount of under dispersion +* ZeroInflated Models: Based on a generic base class, zeroinflated models + are now available for Poisson, GeneralizedPoisson and NegativeBinomialP. + +Generalized linear mixed models +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Limited support for GLIMMIX models is now included in the genmod +module. Binomial and Poisson models with independent random effects +can be fit using Bayesian methods (Laplace and mean field +approximations to the posterior). + +Multiple imputation +~~~~~~~~~~~~~~~~~~~ + +Multiple imputation using a multivariate Gaussian model is now +included in the imputation module. The model is fit via Gibbs +sampling from the joint posterior of the mean vector, covariance +matrix, and missing data values. A convenience function for fitting a +model to the multiply imputed data sets and combining the results is +provided. This is an alternative to the existing MICE (Multiple +Imputation via Chained Equations) procedures. + +Exponential smoothing models +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Exponential smoothing models are now available (introduced in #4176 by +Terence L van Zyl). These models are conceptually simple, decomposing a time +series into level, trend, and seasonal components that are constructed from +weighted averages of past observations. Nonetheless, they produce forecasts +that are competitive with more advanced models and which may be easier to +interpret. + +Available models include: + +- Simple exponential smoothing +- Holt's method +- Holt-Winters exponential smoothing + +Improved time series index support +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Handling of indexes for time series models has been overhauled (#3272) to +take advantage of recent improvements in Pandas and to shift to Pandas much of +the special case handling (espcially for date indexes) that had previously been +done in Statsmodels. Benefits include more consistent behavior, a reduced +number of bugs from corner cases, and a reduction in the maintenance burden. + +Although an effort was made to maintain backwards compatibility with this +change, it is possible that some undocumented corner cases that previously +worked will now raise warnings or exceptions. + +State space models +~~~~~~~~~~~~~~~~~~ + +The state space model infrastructure has been rewritten and improved (#2845). +New features include: + +- Kalman smoother rewritten in Cython for substantial performance improvements +- Simulation smoother (Durbin and Koopman, 2002) +- Fast simulation of time series for any state space model +- Univariate Kalman filtering and smoothing (Koopman and Durbin, 2000) +- Collapsed Kalman filtering and smoothing (Jungbacker and Koopman, 2014) +- Optional computation of the lag-one state autocovariance +- Use of the Scipy BLAS functions for Cython interface if available + (`scipy.linalg.cython_blas` for Scipy >= 0.16) + +These features yield new features and improve performance for the existing +state space models (`SARIMAX`, `UnobservedComopnents`, `DynamicFactor`, and +`VARMAX`), and they also make Bayesian estimation by Gibbs-sampling possible. + +**Warning**: this will be the last version that includes the original state +space code and supports Scipy < 0.16. The next release will only include the +new state space code. + +Unobserved components models: frequency-domain seasonals +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Unobserved components models now support modeling seasonal factors from a +frequency-domain perspective with user-specified period and harmonics +(introduced in #4250 by Jordan Yoder). This not only allows for multiple +seasonal effects, but also allows the representation of seasonal components +with fewer unobserved states. This can improve computational performance and, +since it allows for a more parsimonious model, may also improve the +out-of-sample performance of the model. + + +Major Bugs fixed +---------------- + +* see github issues for a list of bug fixes included in this release + https://github.com/statsmodels/statsmodels/pulls?utf8=%E2%9C%93&q=is%3Apr+is%3Amerged+milestone%3A0.9+label%3Atype-bug + https://github.com/statsmodels/statsmodels/pulls?q=is%3Apr+is%3Amerged+milestone%3A0.9+label%3Atype-bug-wrong + +* Refitting elastic net regularized models using the `refit=True` + option now returns the unregularized parameters for the coefficients + selected by the regularized fitter, as documented. #4213 + +* In MixedLM, a bug that produced exceptions when calling + `random_effects_cov` on models with variance components has been + fixed. + + +Backwards incompatible changes and deprecations +----------------------------------------------- + +* DynamicVAR and DynamicPanelVAR is deprecated and will be removed in + a future version. It used rolling OLS from pandas which has been + removed in pandas. + +* In MixedLM, names for the random effects variance and covariance + parameters have changed from, e.g. G RE to G Var or G x F Cov. This + impacts summary output, and also may require modifications to user + code that extracted these parameters from the fitted results object + by name. + +* In MixedLM, the names for the random effects realizations for + variance components have been changed. When using formulas, the + random effect realizations are named using the column names produced + by Patsy when parsing the formula. + + +Development summary and credits +------------------------------- + +Besides receiving contributions for new and improved features and for bugfixes, +important contributions to general maintenance for this release came from + +* Kevin Sheppard +* Peter Quackenbush +* Brock Mendel + +and the general maintainer and code reviewer + +* Josef Perktold + +Additionally, many users contributed by participation in github issues and +providing feedback. + +Thanks to all of the contributors for the 0.9 release (based on git log): + +.. note:: + + * Aleksandar Karakas + * Alex Fortin + * Alexander Belopolsky + * Brock Mendel + * Chad Fulton + * ChadFulton + * Christian Lorentzen + * Dave Willmer + * Dror Atariah + * Evgeny Zhurko + * Gerard Brunick + * Greg Mosby + * Jacob Kimmel + * Jamie Morton + * Jarvis Miller + * Jasmine Mou + * Jeroen Van Goey + * Jim Correia + * Joon Ro + * Jordan Yoder + * Jorge C. Leitao + * Josef Perktold + * Joses W. Ho + * José Lopez + * Joshua Engelman + * Juan Escamilla + * Justin Bois + * Kerby Shedden + * Kernc + * Kevin Sheppard + * Leland Bybee + * Maxim Uvarov + * Michael Kaminsky + * Mosky Liu + * Natasha Watkins + * Nick DeRobertis + * Niels Wouda + * Pamphile ROY + * Peter Quackenbush + * Quentin Andre + * Richard Höchenberger + * Rob Klooster + * Roman Ring + * Scott Tsai + * Soren Fuglede Jorgensen + * Tom Augspurger + * Tommy Odland + * Tony Jiang + * Yichuan Liu + * ftemme + * hugovk + * kiwirob + * malickf + * tvanzyl + * weizhongg + * zveryansky + +These lists of names are automatically generated based on git log, and may not +be complete. diff --git a/docs/source/rlm.rst b/docs/source/rlm.rst new file mode 100644 index 0000000..f2a2270 --- /dev/null +++ b/docs/source/rlm.rst @@ -0,0 +1,106 @@ +.. currentmodule:: statsmodels.robust + + +.. _rlm: + +Robust Linear Models +==================== + +Robust linear models with support for the M-estimators listed under `Norms`_. + +See `Module Reference`_ for commands and arguments. + +Examples +-------- + +.. ipython:: python + + # Load modules and data + import statsmodels.api as sm + data = sm.datasets.stackloss.load(as_pandas=False) + data.exog = sm.add_constant(data.exog) + + # Fit model and print summary + rlm_model = sm.RLM(data.endog, data.exog, M=sm.robust.norms.HuberT()) + rlm_results = rlm_model.fit() + print(rlm_results.params) + +Detailed examples can be found here: + +* `Robust Models 1 `__ +* `Robust Models 2 `__ + +Technical Documentation +----------------------- + +.. toctree:: + :maxdepth: 1 + + rlm_techn1 + +References +^^^^^^^^^^ + +* PJ Huber. ‘Robust Statistics’ John Wiley and Sons, Inc., New York. 1981. +* PJ Huber. 1973, ‘The 1972 Wald Memorial Lectures: Robust Regression: Asymptotics, Conjectures, and Monte Carlo.’ The Annals of Statistics, 1.5, 799-821. +* R Venables, B Ripley. ‘Modern Applied Statistics in S’ Springer, New York, + +Module Reference +---------------- + +.. module:: statsmodels.robust + +Model Classes +^^^^^^^^^^^^^ + +.. module:: statsmodels.robust.robust_linear_model +.. currentmodule:: statsmodels.robust.robust_linear_model + +.. autosummary:: + :toctree: generated/ + + RLM + +Model Results +^^^^^^^^^^^^^ + +.. autosummary:: + :toctree: generated/ + + RLMResults + +.. _norms: + +Norms +^^^^^ + +.. module:: statsmodels.robust.norms +.. currentmodule:: statsmodels.robust.norms + +.. autosummary:: + :toctree: generated/ + + AndrewWave + Hampel + HuberT + LeastSquares + RamsayE + RobustNorm + TrimmedMean + TukeyBiweight + estimate_location + + +Scale +^^^^^ + +.. module:: statsmodels.robust.scale +.. currentmodule:: statsmodels.robust.scale + +.. autosummary:: + :toctree: generated/ + + Huber + HuberScale + mad + hubers_scale diff --git a/docs/source/rlm_techn1.rst b/docs/source/rlm_techn1.rst new file mode 100644 index 0000000..0f4dc0c --- /dev/null +++ b/docs/source/rlm_techn1.rst @@ -0,0 +1,40 @@ +.. module:: statsmodels.rlm + :synopsis: Outlier robust linear models + +.. currentmodule:: statsmodels.rlm + + +.. _rlm_techn1: + +Weight Functions +---------------- + +Andrew's Wave + +.. image:: images/aw.png + +Hampel 17A + +.. image:: images/hl.png + +Huber's t + +.. image:: images/ht.png + +Least Squares + +.. image:: images/ls.png + +Ramsay's Ea + +.. image:: images/re.png + +Trimmed Mean + +.. image:: images/tm.png + +Tukey's Biweight + +.. image:: images/tk.png + + diff --git a/docs/source/sandbox.rst b/docs/source/sandbox.rst new file mode 100644 index 0000000..22f7eb0 --- /dev/null +++ b/docs/source/sandbox.rst @@ -0,0 +1,195 @@ +.. _sandbox: + + +Sandbox +======= + +This sandbox contains code that is for various resons not ready to be +included in statsmodels proper. It contains modules from the old stats.models +code that have not been tested, verified and updated to the new statsmodels +structure: cox survival model, mixed effects model with repeated measures, +generalized additive model and the formula framework. The sandbox also +contains code that is currently being worked on until it fits the pattern +of statsmodels or is sufficiently tested. + +All sandbox modules have to be explicitly imported to indicate that they are +not yet part of the core of statsmodels. The quality and testing of the +sandbox code varies widely. + + +Examples +-------- + +There are some examples in the `sandbox.examples` folder. Additional +examples are directly included in the modules and in subfolders of +the sandbox. + + +Module Reference +---------------- + + +Time Series analysis :mod:`tsa` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +In this part we develop models and functions that will be useful for time +series analysis. Most of the models and function have been moved to +:mod:`statsmodels.tsa`. Currently, GARCH models remain in development stage in +`sandbox.tsa`. + +Moving Window Statistics +"""""""""""""""""""""""" + + +Most moving window statistics, like rolling mean, moments (up to 4th order), min, +max, mean, and variance, are covered by the functions for `Moving (rolling) +statistics/moments `_ in Pandas. + +.. module:: statsmodels.sandbox.tsa + :synopsis: Experimental time-series analysis models + +.. currentmodule:: statsmodels.sandbox.tsa + +.. autosummary:: + :toctree: generated/ + + movstat.movorder + movstat.movmean + movstat.movvar + movstat.movmoment + + +Regression and ANOVA +^^^^^^^^^^^^^^^^^^^^ + +.. module:: statsmodels.sandbox.regression.anova_nistcertified + :synopsis: Experimental ANOVA estimator + +.. currentmodule:: statsmodels.sandbox.regression.anova_nistcertified + +The following two ANOVA functions are fully tested against the NIST test data +for balanced one-way ANOVA. ``anova_oneway`` follows the same pattern as the +oneway anova function in scipy.stats but with higher precision for badly +scaled problems. ``anova_ols`` produces the same results as the one way anova +however using the OLS model class. It also verifies against the NIST tests, +with some problems in the worst scaled cases. It shows how to do simple ANOVA +using statsmodels in three lines and is also best taken as a recipe. + + +.. autosummary:: + :toctree: generated/ + + anova_oneway + anova_ols + + +The following are helper functions for working with dummy variables and +generating ANOVA results with OLS. They are best considered as recipes since +they were written with a specific use in mind. These function will eventually +be rewritten or reorganized. + +.. module:: statsmodels.sandbox.regression + :synopsis: Experimental regression tools + +.. currentmodule:: statsmodels.sandbox.regression + +.. autosummary:: + :toctree: generated/ + + try_ols_anova.data2dummy + try_ols_anova.data2groupcont + try_ols_anova.data2proddummy + try_ols_anova.dropname + try_ols_anova.form2design + +The following are helper functions for group statistics where groups are +defined by a label array. The qualifying comments for the previous group +apply also to this group of functions. + + +.. autosummary:: + :toctree: generated/ + + try_catdata.cat2dummy + try_catdata.convertlabels + try_catdata.groupsstats_1d + try_catdata.groupsstats_dummy + try_catdata.groupstatsbin + try_catdata.labelmeanfilter + try_catdata.labelmeanfilter_nd + try_catdata.labelmeanfilter_str + +Additional to these functions, sandbox regression still contains several +examples, that are illustrative of the use of the regression models of +statsmodels. + + + +Systems of Regression Equations and Simultaneous Equations +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The following are for fitting systems of equations models. Though the returned +parameters have been verified as accurate, this code is still very +experimental, and the usage of the models will very likely change significantly +before they are added to the main codebase. + +.. module:: statsmodels.sandbox.sysreg + :synopsis: Experimental system regression models + +.. currentmodule:: statsmodels.sandbox.sysreg + +.. autosummary:: + :toctree: generated/ + + SUR + Sem2SLS + +Miscellaneous +^^^^^^^^^^^^^ +.. module:: statsmodels.sandbox.tools.tools_tsa + :synopsis: Experimental tools for working with time-series + +.. currentmodule:: statsmodels.sandbox.tools.tools_tsa + + +Descriptive Statistics Printing +""""""""""""""""""""""""""""""" + +.. module:: statsmodels.sandbox + :synopsis: Experimental tools that have not been fully vetted + +.. currentmodule:: statsmodels.sandbox + +.. autosummary:: + :toctree: generated/ + + descstats.sign_test + descstats.descstats + + + + +Original stats.models +^^^^^^^^^^^^^^^^^^^^^ + +None of these are fully working. The formula framework is used by cox and +mixed. + +**Mixed Effects Model with Repeated Measures using an EM Algorithm** + +:mod:`statsmodels.sandbox.mixed` + + +**Cox Proportional Hazards Model** + +:mod:`statsmodels.sandbox.cox` + +**Generalized Additive Models** + +:mod:`statsmodels.sandbox.gam` + +**Formula** + +:mod:`statsmodels.sandbox.formula` + + diff --git a/docs/source/statespace.rst b/docs/source/statespace.rst new file mode 100644 index 0000000..3cd53ad --- /dev/null +++ b/docs/source/statespace.rst @@ -0,0 +1,488 @@ +.. module:: statsmodels.tsa.statespace + :synopsis: Statespace models for time-series analysis + +.. currentmodule:: statsmodels.tsa.statespace + + +.. _statespace: + + +Time Series Analysis by State Space Methods :mod:`statespace` +============================================================= + +:mod:`statsmodels.tsa.statespace` contains classes and functions that are +useful for time series analysis using state space methods. + +A general state space model is of the form + +.. math:: + + y_t & = Z_t \alpha_t + d_t + \varepsilon_t \\ + \alpha_t & = T_t \alpha_{t-1} + c_t + R_t \eta_t \\ + +where :math:`y_t` refers to the observation vector at time :math:`t`, +:math:`\alpha_t` refers to the (unobserved) state vector at time +:math:`t`, and where the irregular components are defined as + +.. math:: + + \varepsilon_t \sim N(0, H_t) \\ + \eta_t \sim N(0, Q_t) \\ + +The remaining variables (:math:`Z_t, d_t, H_t, T_t, c_t, R_t, Q_t`) in the +equations are matrices describing the process. Their variable names and +dimensions are as follows + +Z : `design` :math:`(k\_endog \times k\_states \times nobs)` + +d : `obs_intercept` :math:`(k\_endog \times nobs)` + +H : `obs_cov` :math:`(k\_endog \times k\_endog \times nobs)` + +T : `transition` :math:`(k\_states \times k\_states \times nobs)` + +c : `state_intercept` :math:`(k\_states \times nobs)` + +R : `selection` :math:`(k\_states \times k\_posdef \times nobs)` + +Q : `state_cov` :math:`(k\_posdef \times k\_posdef \times nobs)` + +In the case that one of the matrices is time-invariant (so that, for +example, :math:`Z_t = Z_{t+1} ~ \forall ~ t`), its last dimension may +be of size :math:`1` rather than size `nobs`. + +This generic form encapsulates many of the most popular linear time series +models (see below) and is very flexible, allowing estimation with missing +observations, forecasting, impulse response functions, and much more. + +**Example: AR(2) model** + +An autoregressive model is a good introductory example to putting models in +state space form. Recall that an AR(2) model is often written as: + +.. math:: + + y_t = \phi_1 y_{t-1} + \phi_2 y_{t-2} + \epsilon_t + +This can be put into state space form in the following way: + +.. math:: + + y_t & = \begin{bmatrix} 1 & 0 \end{bmatrix} \alpha_t \\ + \alpha_t & = \begin{bmatrix} + \phi_1 & \phi_2 \\ + 1 & 0 + \end{bmatrix} \alpha_{t-1} + \begin{bmatrix} 1 \\ 0 \end{bmatrix} \eta_t + +Where + +.. math:: + + Z_t \equiv Z = \begin{bmatrix} 1 & 0 \end{bmatrix} + +and + +.. math:: + + T_t \equiv T & = \begin{bmatrix} + \phi_1 & \phi_2 \\ + 1 & 0 + \end{bmatrix} \\ + R_t \equiv R & = \begin{bmatrix} 1 \\ 0 \end{bmatrix} \\ + \eta_t & \sim N(0, \sigma^2) + +There are three unknown parameters in this model: +:math:`\phi_1, \phi_2, \sigma^2`. + +Models and Estimation +--------------------- + +The following are the main estimation classes, which can be accessed through +`statsmodels.tsa.statespace.api` and their result classes. + +Seasonal Autoregressive Integrated Moving-Average with eXogenous regressors (SARIMAX) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The `SARIMAX` class is an example of a fully fledged model created using the +statespace backend for estimation. `SARIMAX` can be used very similarly to +:ref:`tsa ` models, but works on a wider range of models by adding the +estimation of additive and multiplicative seasonal effects, as well as +arbitrary trend polynomials. + +.. autosummary:: + :toctree: generated/ + + sarimax.SARIMAX + sarimax.SARIMAXResults + +For an example of the use of this model, see the +`SARIMAX example notebook `__ +or the very brief code snippet below: + + +.. code-block:: python + + # Load the statsmodels api + import statsmodels.api as sm + + # Load your dataset + endog = pd.read_csv('your/dataset/here.csv') + + # We could fit an AR(2) model, described above + mod_ar2 = sm.tsa.SARIMAX(endog, order=(2,0,0)) + # Note that mod_ar2 is an instance of the SARIMAX class + + # Fit the model via maximum likelihood + res_ar2 = mod_ar2.fit() + # Note that res_ar2 is an instance of the SARIMAXResults class + + # Show the summary of results + print(res_ar2.summary()) + + # We could also fit a more complicated model with seasonal components. + # As an example, here is an SARIMA(1,1,1) x (0,1,1,4): + mod_sarimax = sm.tsa.SARIMAX(endog, order=(1,1,1), + seasonal_order=(0,1,1,4)) + res_sarimax = mod_sarimax.fit() + + # Show the summary of results + print(res_sarimax.summary()) + +The results object has many of the attributes and methods you would expect from +other Statsmodels results objects, including standard errors, z-statistics, +and prediction / forecasting. + +Behind the scenes, the `SARIMAX` model creates the design and transition +matrices (and sometimes some of the other matrices) based on the model +specification. + +Unobserved Components +^^^^^^^^^^^^^^^^^^^^^ + +The `UnobservedComponents` class is another example of a statespace model. + +.. autosummary:: + :toctree: generated/ + + structural.UnobservedComponents + structural.UnobservedComponentsResults + +For examples of the use of this model, see the `example notebook `__ or a notebook on using the unobserved components model to `decompose a time series into a trend and cycle `__ or the very brief code snippet below: + +.. code-block:: python + + # Load the statsmodels api + import statsmodels.api as sm + + # Load your dataset + endog = pd.read_csv('your/dataset/here.csv') + + # Fit a local level model + mod_ll = sm.tsa.UnobservedComponents(endog, 'local level') + # Note that mod_ll is an instance of the UnobservedComponents class + + # Fit the model via maximum likelihood + res_ll = mod_ll.fit() + # Note that res_ll is an instance of the UnobservedComponentsResults class + + # Show the summary of results + print(res_ll.summary()) + + # Show a plot of the estimated level and trend component series + fig_ll = res_ll.plot_components() + + # We could further add a damped stochastic cycle as follows + mod_cycle = sm.tsa.UnobservedComponents(endog, 'local level', cycle=True, + damped_cycle=true, + stochastic_cycle=True) + res_cycle = mod_cycle.fit() + + # Show the summary of results + print(res_cycle.summary()) + + # Show a plot of the estimated level, trend, and cycle component series + fig_cycle = res_cycle.plot_components() + +Vector Autoregressive Moving-Average with eXogenous regressors (VARMAX) +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The `VARMAX` class is an example of a multivariate statespace model. + +.. autosummary:: + :toctree: generated/ + + varmax.VARMAX + varmax.VARMAXResults + +For an example of the use of this model, see the `VARMAX example notebook `__ or the very brief code snippet below: + +.. code-block:: python + + # Load the statsmodels api + import statsmodels.api as sm + + # Load your (multivariate) dataset + endog = pd.read_csv('your/dataset/here.csv') + + # Fit a local level model + mod_var1 = sm.tsa.VARMAX(endog, order=(1,0)) + # Note that mod_var1 is an instance of the VARMAX class + + # Fit the model via maximum likelihood + res_var1 = mod_var1.fit() + # Note that res_var1 is an instance of the VARMAXResults class + + # Show the summary of results + print(res_var1.summary()) + + # Construct impulse responses + irfs = res_ll.impulse_responses(steps=10) + +Dynamic Factor Models +^^^^^^^^^^^^^^^^^^^^^ + +The `DynamicFactor` class is another example of a multivariate statespace +model. + +.. autosummary:: + :toctree: generated/ + + dynamic_factor.DynamicFactor + dynamic_factor.DynamicFactorResults + +For an example of the use of this model, see the `Dynamic Factor example notebook `__ or the very brief code snippet below: + +.. code-block:: python + + # Load the statsmodels api + import statsmodels.api as sm + + # Load your dataset + endog = pd.read_csv('your/dataset/here.csv') + + # Fit a local level model + mod_dfm = sm.tsa.DynamicFactor(endog, k_factors=1, factor_order=2) + # Note that mod_dfm is an instance of the DynamicFactor class + + # Fit the model via maximum likelihood + res_dfm = mod_dfm.fit() + # Note that res_dfm is an instance of the DynamicFactorResults class + + # Show the summary of results + print(res_ll.summary()) + + # Show a plot of the r^2 values from regressions of + # individual estimated factors on endogenous variables. + fig_dfm = res_ll.plot_coefficients_of_determination() + +Custom state space models +^^^^^^^^^^^^^^^^^^^^^^^^^ + +The true power of the state space model is to allow the creation and estimation +of custom models. Usually that is done by extending the following two classes, +which bundle all of state space representation, Kalman filtering, and maximum +likelihood fitting functionality for estimation and results output. + +.. autosummary:: + :toctree: generated/ + + mlemodel.MLEModel + mlemodel.MLEResults + +For a basic example demonstrating creating and estimating a custom state space +model, see the `Local Linear Trend example notebook `__. +For a more sophisticated example, see the source code for the `SARIMAX` and +`SARIMAXResults` classes, which are built by extending `MLEModel` and +`MLEResults`. + +In simple cases, the model can be constructed entirely using the MLEModel +class. For example, the AR(2) model from above could be constructed and +estimated using only the following code: + +.. code-block:: python + + import numpy as np + from scipy.signal import lfilter + import statsmodels.api as sm + + # True model parameters + nobs = int(1e3) + true_phi = np.r_[0.5, -0.2] + true_sigma = 1**0.5 + + # Simulate a time series + np.random.seed(1234) + disturbances = np.random.normal(0, true_sigma, size=(nobs,)) + endog = lfilter([1], np.r_[1, -true_phi], disturbances) + + # Construct the model + class AR2(sm.tsa.statespace.MLEModel): + def __init__(self, endog): + # Initialize the state space model + super(AR2, self).__init__(endog, k_states=2, k_posdef=1, + initialization='stationary') + + # Setup the fixed components of the state space representation + self['design'] = [1, 0] + self['transition'] = [[0, 0], + [1, 0]] + self['selection', 0, 0] = 1 + + # Describe how parameters enter the model + def update(self, params, transformed=True, **kwargs): + params = super(AR2, self).update(params, transformed, **kwargs) + + self['transition', 0, :] = params[:2] + self['state_cov', 0, 0] = params[2] + + # Specify start parameters and parameter names + @property + def start_params(self): + return [0,0,1] # these are very simple + + # Create and fit the model + mod = AR2(endog) + res = mod.fit() + print(res.summary()) + +This results in the following summary table:: + + Statespace Model Results + ============================================================================== + Dep. Variable: y No. Observations: 1000 + Model: AR2 Log Likelihood -1389.437 + Date: Wed, 26 Oct 2016 AIC 2784.874 + Time: 00:42:03 BIC 2799.598 + Sample: 0 HQIC 2790.470 + - 1000 + Covariance Type: opg + ============================================================================== + coef std err z P>|z| [0.025 0.975] + ------------------------------------------------------------------------------ + param.0 0.4395 0.030 14.730 0.000 0.381 0.498 + param.1 -0.2055 0.032 -6.523 0.000 -0.267 -0.144 + param.2 0.9425 0.042 22.413 0.000 0.860 1.025 + =================================================================================== + Ljung-Box (Q): 24.25 Jarque-Bera (JB): 0.22 + Prob(Q): 0.98 Prob(JB): 0.90 + Heteroskedasticity (H): 1.05 Skew: -0.04 + Prob(H) (two-sided): 0.66 Kurtosis: 3.02 + =================================================================================== + + Warnings: + [1] Covariance matrix calculated using the outer product of gradients (complex-step). + +The results object has many of the attributes and methods you would expect from +other Statsmodels results objects, including standard errors, z-statistics, +and prediction / forecasting. + +More advanced usage is possible, including specifying parameter +transformations, and specifing names for parameters for a more informative +output summary. + +State space representation and Kalman filtering +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +While creation of custom models will almost always be done by extending +`MLEModel` and `MLEResults`, it can be useful to understand the superstructure +behind those classes. + +Maximum likelihood estimation requires evaluating the likelihood function of +the model, and for models in state space form the likelihood function is +evaluted as a byproduct of running the Kalman filter. + +There are two classes used by `MLEModel` that facilitate specification of the +state space model and Kalman filtering: `Representation` and `KalmanFilter`. + +The `Representation` class is the piece where the state space model +representation is defined. In simple terms, it holds the state space matrices +(`design`, `obs_intercept`, etc.; see the introduction to state space models, +above) and allows their manipulation. + +`FrozenRepresentation` is the most basic results-type class, in that it takes a +"snapshot" of the state space representation at any given time. See the class +documentation for the full list of available attributes. + +.. autosummary:: + :toctree: generated/ + + representation.Representation + representation.FrozenRepresentation + +The `KalmanFilter` class is a subclass of Representation that provides +filtering capabilities. Once the state space representation matrices have been +constructed, the :py:meth:`filter ` +method can be called, producing a `FilterResults` instance; `FilterResults` is +a subclass of `FrozenRepresentation`. + +The `FilterResults` class not only holds a frozen representation of the state +space model (the design, transition, etc. matrices, as well as model +dimensions, etc.) but it also holds the filtering output, including the +:py:attr:`filtered state ` and +loglikelihood (see the class documentation for the full list of available +results). It also provides a +:py:meth:`predict ` method, which allows +in-sample prediction or out-of-sample forecasting. A similar method, +:py:meth:`predict `, provides +additional prediction or forecasting results, including confidence intervals. + +.. autosummary:: + :toctree: generated/ + + kalman_filter.KalmanFilter + kalman_filter.FilterResults + kalman_filter.PredictionResults + +The `KalmanSmoother` class is a subclass of `KalmanFilter` that provides +smoothing capabilities. Once the state space representation matrices have been +constructed, the :py:meth:`filter ` +method can be called, producing a `SmootherResults` instance; `SmootherResults` +is a subclass of `FilterResults`. + +The `SmootherResults` class holds all the output from `FilterResults`, but +also includes smoothing output, including the +:py:attr:`smoothed state ` and +loglikelihood (see the class documentation for the full list of available +results). Whereas "filtered" output at time `t` refers to estimates conditional +on observations up through time `t`, "smoothed" output refers to estimates +conditional on the entire set of observations in the dataset. + +.. autosummary:: + :toctree: generated/ + + kalman_smoother.KalmanSmoother + kalman_smoother.SmootherResults + +Statespace diagnostics +---------------------- + +Three diagnostic tests are available after estimation of any statespace model, +whether built in or custom, to help assess whether the model conforms to the +underlying statistical assumptions. These tests are: + +- :py:meth:`test_normality ` +- :py:meth:`test_heteroskedasticity ` +- :py:meth:`test_serial_correlation ` + +A number of standard plots of regression residuals are available for the same +purpose. These can be produced using the command +:py:meth:`plot_diagnostics `. + +Statespace Tools +---------------- + +There are a variety of tools used for state space modeling or by the SARIMAX +class: + +.. autosummary:: + :toctree: generated/ + + tools.companion_matrix + tools.diff + tools.is_invertible + tools.constrain_stationary_univariate + tools.unconstrain_stationary_univariate + tools.constrain_stationary_multivariate + tools.unconstrain_stationary_multivariate + tools.validate_matrix_shape + tools.validate_vector_shape diff --git a/docs/source/stats.rst b/docs/source/stats.rst new file mode 100644 index 0000000..90b35c3 --- /dev/null +++ b/docs/source/stats.rst @@ -0,0 +1,496 @@ +.. module:: statsmodels.stats + :synopsis: Statistical methods and tests + +.. currentmodule:: statsmodels.stats + +.. _stats: + + +Statistics :mod:`stats` +======================= + +This section collects various statistical tests and tools. +Some can be used independently of any models, some are intended as extension to the +models and model results. + +API Warning: The functions and objects in this category are spread out in +various modules and might still be moved around. We expect that in future the +statistical tests will return class instances with more informative reporting +instead of only the raw numbers. + + +.. _stattools: + + +Residual Diagnostics and Specification Tests +-------------------------------------------- + +.. module:: statsmodels.stats.stattools + :synopsis: Statistical methods and tests that do not fit into other categories + +.. currentmodule:: statsmodels.stats.stattools + +.. autosummary:: + :toctree: generated/ + + durbin_watson + jarque_bera + omni_normtest + medcouple + robust_skewness + robust_kurtosis + expected_robust_kurtosis + +.. module:: statsmodels.stats.diagnostic + :synopsis: Statistical methods and tests to diagnose model fit problems + +.. currentmodule:: statsmodels.stats.diagnostic + +.. autosummary:: + :toctree: generated/ + + acorr_ljungbox + acorr_breusch_godfrey + + HetGoldfeldQuandt + het_goldfeldquandt + het_breuschpagan + het_white + het_arch + + linear_harvey_collier + linear_rainbow + linear_lm + + breaks_cusumolsresid + breaks_hansen + recursive_olsresiduals + + CompareCox + compare_cox + CompareJ + compare_j + + unitroot_adf + + normal_ad + kstest_normal + lilliefors + +Outliers and influence measures +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. module:: statsmodels.stats.outliers_influence + :synopsis: Statistical methods and measures for outliers and influence + +.. currentmodule:: statsmodels.stats.outliers_influence + +.. autosummary:: + :toctree: generated/ + + OLSInfluence + GLMInfluence + MLEInfluence + variance_inflation_factor + +See also the notes on :ref:`notes on regression diagnostics ` + +Sandwich Robust Covariances +--------------------------- + +The following functions calculate covariance matrices and standard errors for +the parameter estimates that are robust to heteroscedasticity and +autocorrelation in the errors. Similar to the methods that are available +for the LinearModelResults, these methods are designed for use with OLS. + +.. currentmodule:: statsmodels.stats + +.. autosummary:: + :toctree: generated/ + + sandwich_covariance.cov_hac + sandwich_covariance.cov_nw_panel + sandwich_covariance.cov_nw_groupsum + sandwich_covariance.cov_cluster + sandwich_covariance.cov_cluster_2groups + sandwich_covariance.cov_white_simple + +The following are standalone versions of the heteroscedasticity robust +standard errors attached to LinearModelResults + +.. autosummary:: + :toctree: generated/ + + sandwich_covariance.cov_hc0 + sandwich_covariance.cov_hc1 + sandwich_covariance.cov_hc2 + sandwich_covariance.cov_hc3 + + sandwich_covariance.se_cov + + +Goodness of Fit Tests and Measures +---------------------------------- + +some tests for goodness of fit for univariate distributions + +.. module:: statsmodels.stats.gof + :synopsis: Goodness of fit measures and tests + +.. currentmodule:: statsmodels.stats.gof + +.. autosummary:: + :toctree: generated/ + + powerdiscrepancy + gof_chisquare_discrete + gof_binning_discrete + chisquare_effectsize + +.. currentmodule:: statsmodels.stats.diagnostic + +.. autosummary:: + :toctree: generated/ + + normal_ad + kstest_normal + lilliefors + +Non-Parametric Tests +-------------------- + +.. module:: statsmodels.sandbox.stats.runs + :synopsis: Experimental statistical methods and tests to analyze runs + +.. currentmodule:: statsmodels.sandbox.stats.runs + +.. autosummary:: + :toctree: generated/ + + mcnemar + symmetry_bowker + median_test_ksample + runstest_1samp + runstest_2samp + cochrans_q + Runs + +.. module:: statsmodels.stats.descriptivestats + :synopsis: Descriptive statistics + +.. currentmodule:: statsmodels.stats.descriptivestats + +.. autosummary:: + :toctree: generated/ + + sign_test + +.. _interrater: + +Interrater Reliability and Agreement +------------------------------------ + +The main function that statsmodels has currently available for interrater +agreement measures and tests is Cohen's Kappa. Fleiss' Kappa is currently +only implemented as a measures but without associated results statistics. + +.. module:: statsmodels.stats.inter_rater +.. currentmodule:: statsmodels.stats.inter_rater + +.. autosummary:: + :toctree: generated/ + + cohens_kappa + fleiss_kappa + to_table + aggregate_raters + +Multiple Tests and Multiple Comparison Procedures +------------------------------------------------- + +`multipletests` is a function for p-value correction, which also includes p-value +correction based on fdr in `fdrcorrection`. +`tukeyhsd` performs simultaneous testing for the comparison of (independent) means. +These three functions are verified. +GroupsStats and MultiComparison are convenience classes to multiple comparisons similar +to one way ANOVA, but still in developement + +.. module:: statsmodels.sandbox.stats.multicomp + :synopsis: Experimental methods for controlling size while performing multiple comparisons + + +.. currentmodule:: statsmodels.stats.multitest + +.. autosummary:: + :toctree: generated/ + + multipletests + fdrcorrection + +.. currentmodule:: statsmodels.sandbox.stats.multicomp + +.. autosummary:: + :toctree: generated/ + + GroupsStats + MultiComparison + TukeyHSDResults + +.. module:: statsmodels.stats.multicomp + :synopsis: Methods for controlling size while performing multiple comparisons + +.. currentmodule:: statsmodels.stats.multicomp + +.. autosummary:: + :toctree: generated/ + + pairwise_tukeyhsd + +.. module:: statsmodels.stats.multitest + :synopsis: Multiple testing p-value and FDR adjustments + +.. currentmodule:: statsmodels.stats.multitest + +.. autosummary:: + :toctree: generated/ + + local_fdr + fdrcorrection_twostage + NullDistribution + RegressionFDR + +.. module:: statsmodels.stats.knockoff_regeffects + :synopsis: Regression Knock-Off Effects + +.. currentmodule:: statsmodels.stats.knockoff_regeffects + +.. autosummary:: + :toctree: generated/ + + CorrelationEffects + OLSEffects + ForwardEffects + OLSEffects + RegModelEffects + +The following functions are not (yet) public + +.. currentmodule:: statsmodels.sandbox.stats.multicomp + +.. autosummary:: + :toctree: generated/ + + varcorrection_pairs_unbalanced + varcorrection_pairs_unequal + varcorrection_unbalanced + varcorrection_unequal + + StepDown + catstack + ccols + compare_ordered + distance_st_range + ecdf + get_tukeyQcrit + homogeneous_subsets + maxzero + maxzerodown + mcfdr + qcrit + randmvn + rankdata + rejectionline + set_partition + set_remove_subs + tiecorrect + +.. _tost: + +Basic Statistics and t-Tests with frequency weights +--------------------------------------------------- + +Besides basic statistics, like mean, variance, covariance and correlation for +data with case weights, the classes here provide one and two sample tests +for means. The t-tests have more options than those in scipy.stats, but are +more restrictive in the shape of the arrays. Confidence intervals for means +are provided based on the same assumptions as the t-tests. + +Additionally, tests for equivalence of means are available for one sample and +for two, either paired or independent, samples. These tests are based on TOST, +two one-sided tests, which have as null hypothesis that the means are not +"close" to each other. + +.. module:: statsmodels.stats.weightstats + :synopsis: Weighted statistics + +.. currentmodule:: statsmodels.stats.weightstats + +.. autosummary:: + :toctree: generated/ + + DescrStatsW + CompareMeans + ttest_ind + ttost_ind + ttost_paired + ztest + ztost + zconfint + +weightstats also contains tests and confidence intervals based on summary +data + +.. currentmodule:: statsmodels.stats.weightstats + +.. autosummary:: + :toctree: generated/ + + _tconfint_generic + _tstat_generic + _zconfint_generic + _zstat_generic + _zstat_generic2 + + +Power and Sample Size Calculations +---------------------------------- + +The :mod:`power` module currently implements power and sample size calculations +for the t-tests, normal based test, F-tests and Chisquare goodness of fit test. +The implementation is class based, but the module also provides +three shortcut functions, ``tt_solve_power``, ``tt_ind_solve_power`` and +``zt_ind_solve_power`` to solve for any one of the parameters of the power +equations. + + +.. module:: statsmodels.stats.power + :synopsis: Power and size calculations for common tests + +.. currentmodule:: statsmodels.stats.power + +.. autosummary:: + :toctree: generated/ + + TTestIndPower + TTestPower + GofChisquarePower + NormalIndPower + FTestAnovaPower + FTestPower + tt_solve_power + tt_ind_solve_power + zt_ind_solve_power + + +.. _proportion_stats: + +Proportion +---------- + + +Also available are hypothesis test, confidence intervals and effect size for +proportions that can be used with NormalIndPower. + +.. module:: statsmodels.stats.proportion + :synopsis: Tests for proportions + +.. currentmodule:: statsmodels.stats.proportion + +.. autosummary:: + :toctree: generated + + proportion_confint + proportion_effectsize + + binom_test + binom_test_reject_interval + binom_tost + binom_tost_reject_interval + + multinomial_proportions_confint + + proportions_ztest + proportions_ztost + proportions_chisquare + proportions_chisquare_allpairs + proportions_chisquare_pairscontrol + + proportion_effectsize + power_binom_tost + power_ztost_prop + samplesize_confint_proportion + + +Moment Helpers +-------------- + +When there are missing values, then it is possible that a correlation or +covariance matrix is not positive semi-definite. The following three +functions can be used to find a correlation or covariance matrix that is +positive definite and close to the original matrix. + +.. module:: statsmodels.stats.correlation_tools + :synopsis: Procedures for ensuring correlations are positive semi-definite + +.. currentmodule:: statsmodels.stats.correlation_tools + +.. autosummary:: + :toctree: generated/ + + corr_clipped + corr_nearest + corr_nearest_factor + corr_thresholded + cov_nearest + cov_nearest_factor_homog + FactoredPSDMatrix + kernel_covariance + + +These are utility functions to convert between central and non-central moments, skew, +kurtosis and cummulants. + +.. module:: statsmodels.stats.moment_helpers + :synopsis: Tools for converting moments + +.. currentmodule:: statsmodels.stats.moment_helpers + +.. autosummary:: + :toctree: generated/ + + cum2mc + mc2mnc + mc2mvsk + mnc2cum + mnc2mc + mnc2mvsk + mvsk2mc + mvsk2mnc + cov2corr + corr2cov + se_cov + + +Mediation Analysis +------------------ + +Mediation analysis focuses on the relationships among three key variables: +an 'outcome', a 'treatment', and a 'mediator'. Since mediation analysis is a +form of causal inference, there are several assumptions involved that are +difficult or impossible to verify. Ideally, mediation analysis is conducted in +the context of an experiment such as this one in which the treatment is +randomly assigned. It is also common for people to conduct mediation analyses +using observational data in which the treatment may be thought of as an +'exposure'. The assumptions behind mediation analysis are even more difficult +to verify in an observational setting. + +.. module:: statsmodels.stats.mediation + :synopsis: Mediation analysis + +.. currentmodule:: statsmodels.stats.mediation + +.. autosummary:: + :toctree: generated/ + + Mediation + MediationResults diff --git a/docs/source/tools.rst b/docs/source/tools.rst new file mode 100644 index 0000000..77cc16c --- /dev/null +++ b/docs/source/tools.rst @@ -0,0 +1,102 @@ +.. currentmodule:: statsmodels.tools + + +.. _tools: + +Tools +===== + +Our tool collection contains some convenience functions for users and +functions that were written mainly for internal use. + +Additional to this tools directory, several other subpackages have their own +tools modules, for example :mod:`statsmodels.tsa.tsatools` + + +Module Reference +---------------- + +.. module:: statsmodels.tools + :synopsis: Tools for variable transformation and common numerical operations + +Basic tools :mod:`tools` +^^^^^^^^^^^^^^^^^^^^^^^^ + +These are basic and miscellaneous tools. The full import path is +`statsmodels.tools.tools`. + +.. autosummary:: + :toctree: generated/ + + tools.add_constant + +The next group are mostly helper functions that are not separately tested or +insufficiently tested. + +.. autosummary:: + :toctree: generated/ + + tools.categorical + tools.clean0 + tools.fullrank + tools.isestimable + tools.recipr + tools.recipr0 + tools.unsqueeze + +.. currentmodule:: statsmodels.tools + +.. _numdiff: + +Numerical Differentiation +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. autosummary:: + :toctree: generated/ + + numdiff.approx_fprime + numdiff.approx_fprime_cs + numdiff.approx_hess1 + numdiff.approx_hess2 + numdiff.approx_hess3 + numdiff.approx_hess_cs + +Measure for fit performance :mod:`eval_measures` +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The first group of function in this module are standalone versions of +information criteria, aic bic and hqic. The function with `_sigma` suffix +take the error sum of squares as argument, those without, take the value +of the log-likelihood, `llf`, as argument. + +The second group of function are measures of fit or prediction performance, +which are mostly one liners to be used as helper functions. All of those +calculate a performance or distance statistic for the difference between two +arrays. For example in the case of Monte Carlo or cross-validation, the first +array would be the estimation results for the different replications or draws, +while the second array would be the true or observed values. + +.. currentmodule:: statsmodels.tools + +.. autosummary:: + :toctree: generated/ + + eval_measures.aic + eval_measures.aic_sigma + eval_measures.aicc + eval_measures.aicc_sigma + eval_measures.bic + eval_measures.bic_sigma + eval_measures.hqic + eval_measures.hqic_sigma + + eval_measures.bias + eval_measures.iqr + eval_measures.maxabs + eval_measures.meanabs + eval_measures.medianabs + eval_measures.medianbias + eval_measures.mse + eval_measures.rmse + eval_measures.stde + eval_measures.vare diff --git a/docs/source/tsa.rst b/docs/source/tsa.rst new file mode 100644 index 0000000..5408fe6 --- /dev/null +++ b/docs/source/tsa.rst @@ -0,0 +1,257 @@ +.. module:: statsmodels.tsa + :synopsis: Time-series analysis + +.. currentmodule:: statsmodels.tsa + + +.. _tsa: + + +Time Series analysis :mod:`tsa` +=============================== + +:mod:`statsmodels.tsa` contains model classes and functions that are useful +for time series analysis. Basic models include univariate autoregressive models (AR), +vector autoregressive models (VAR) and univariate autoregressive moving average models +(ARMA). Non-linear models include Markov switching dynamic regression and +autoregression. It also includes descriptive statistics for time series, for example autocorrelation, partial +autocorrelation function and periodogram, as well as the corresponding theoretical properties +of ARMA or related processes. It also includes methods to work with autoregressive and +moving average lag-polynomials. +Additionally, related statistical tests and some useful helper functions are available. + +Estimation is either done by exact or conditional Maximum Likelihood or conditional +least-squares, either using Kalman Filter or direct filters. + +Currently, functions and classes have to be imported from the corresponding module, but +the main classes will be made available in the statsmodels.tsa namespace. The module +structure is within statsmodels.tsa is + + - stattools : empirical properties and tests, acf, pacf, granger-causality, + adf unit root test, kpss test, bds test, ljung-box test and others. + - ar_model : univariate autoregressive process, estimation with conditional + and exact maximum likelihood and conditional least-squares + - arima_model : univariate ARMA process, estimation with conditional + and exact maximum likelihood and conditional least-squares + - statespace : Comprehensive statespace model specification and estimation. See + the :ref:`statespace documentation `. + - vector_ar, var : vector autoregressive process (VAR) and vector error correction + models, estimation, impulse response analysis, forecast error variance decompositions, + and data visualization tools. See the :ref:`vector_ar documentation `. + - kalmanf : estimation classes for ARMA and other models with exact MLE using + Kalman Filter + - arma_process : properties of arma processes with given parameters, this + includes tools to convert between ARMA, MA and AR representation as well as + acf, pacf, spectral density, impulse response function and similar + - sandbox.tsa.fftarma : similar to arma_process but working in frequency domain + - tsatools : additional helper functions, to create arrays of lagged variables, + construct regressors for trend, detrend and similar. + - filters : helper function for filtering time series + - regime_switching : Markov switching dynamic regression and autoregression + models + + + +Some additional functions that are also useful for time series analysis are in +other parts of statsmodels, for example additional statistical tests. + +Some related functions are also available in matplotlib, nitime, and +scikits.talkbox. Those functions are designed more for the use in signal +processing where longer time series are available and work more often in the +frequency domain. + + +.. currentmodule:: statsmodels.tsa + + +Descriptive Statistics and Tests +"""""""""""""""""""""""""""""""" + +.. autosummary:: + :toctree: generated/ + + stattools.acovf + stattools.acf + stattools.pacf + stattools.pacf_yw + stattools.pacf_ols + stattools.pacf_burg + stattools.ccovf + stattools.ccf + stattools.periodogram + stattools.adfuller + stattools.kpss + stattools.coint + stattools.bds + stattools.q_stat + stattools.grangercausalitytests + stattools.levinson_durbin + stattools.innovations_algo + stattools.innovations_filter + stattools.levinson_durbin_pacf + stattools.arma_order_select_ic + x13.x13_arima_select_order + x13.x13_arima_analysis + +Estimation +"""""""""" + +The following are the main estimation classes, which can be accessed through +statsmodels.tsa.api and their result classes + +Univariate Autogressive Processes (AR) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. currentmodule:: statsmodels.tsa + +.. autosummary:: + :toctree: generated/ + + ar_model.AR + ar_model.ARResults + + +Autogressive Moving-Average Processes (ARMA) and Kalman Filter +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. currentmodule:: statsmodels.tsa + +The basic ARIMA model and results classes that should be the starting point for +for most users are: + +.. autosummary:: + :toctree: generated/ + + arima_model.ARMA + arima_model.ARMAResults + arima_model.ARIMA + arima_model.ARIMAResults + +Some advanced underlying low-level classes and functions that can be used to +compute the log-likelihood function for ARMA-type models include (note that +these are rarely needed by end-users): + +.. autosummary:: + :toctree: generated/ + + kalmanf.kalmanfilter.KalmanFilter + innovations.arma_innovations.arma_innovations + innovations.arma_innovations.arma_loglike + innovations.arma_innovations.arma_loglikeobs + innovations.arma_innovations.arma_score + innovations.arma_innovations.arma_scoreobs + + +Exponential Smoothing +~~~~~~~~~~~~~~~~~~~~~ + +.. currentmodule:: statsmodels.tsa + +.. autosummary:: + :toctree: generated/ + + holtwinters.ExponentialSmoothing + holtwinters.SimpleExpSmoothing + holtwinters.Holt + holtwinters.HoltWintersResults + + +ARMA Process +"""""""""""" + +The following are tools to work with the theoretical properties of an ARMA +process for given lag-polynomials. + +.. autosummary:: + :toctree: generated/ + + arima_process.ArmaProcess + arima_process.ar2arma + arima_process.arma2ar + arima_process.arma2ma + arima_process.arma_acf + arima_process.arma_acovf + arima_process.arma_generate_sample + arima_process.arma_impulse_response + arima_process.arma_pacf + arima_process.arma_periodogram + arima_process.deconvolve + arima_process.index2lpol + arima_process.lpol2index + arima_process.lpol_fiar + arima_process.lpol_fima + arima_process.lpol_sdiff + +.. currentmodule:: statsmodels + +.. autosummary:: + :toctree: generated/ + + sandbox.tsa.fftarma.ArmaFft + +.. currentmodule:: statsmodels.tsa + +Statespace Models +""""""""""""""""" +See the :ref:`statespace documentation. `. + + +Vector ARs and Vector Error Correction Models +""""""""""""""""""""""""""""""""""""""""""""" +See the :ref:`vector_ar documentation. `. + +Regime switching models +""""""""""""""""""""""" + +.. autosummary:: + :toctree: generated/ + + regime_switching.markov_regression.MarkovRegression + regime_switching.markov_autoregression.MarkovAutoregression + + +Time Series Filters +""""""""""""""""""" + +.. autosummary:: + :toctree: generated/ + + filters.bk_filter.bkfilter + filters.hp_filter.hpfilter + filters.cf_filter.cffilter + filters.filtertools.convolution_filter + filters.filtertools.recursive_filter + filters.filtertools.miso_lfilter + filters.filtertools.fftconvolve3 + filters.filtertools.fftconvolveinv + seasonal.seasonal_decompose + + +TSA Tools +""""""""" + +.. currentmodule:: statsmodels.tsa + +.. autosummary:: + :toctree: generated/ + + tsatools.add_trend + tsatools.detrend + tsatools.lagmat + tsatools.lagmat2ds + +VARMA Process +""""""""""""" + +.. autosummary:: + :toctree: generated/ + + varma_process.VarmaPoly + +Interpolation +""""""""""""" + +.. autosummary:: + :toctree: generated/ + + interp.denton.dentonm diff --git a/docs/source/tsastats.rst.TXT b/docs/source/tsastats.rst.TXT new file mode 100644 index 0000000..67cd147 --- /dev/null +++ b/docs/source/tsastats.rst.TXT @@ -0,0 +1,21 @@ +.. currentmodule:: statsmodels.tsa.tsatools + +Time Series Analysis +==================== + +These are some of the helper functions for doing time series analysis. First +we can load some a some data from the US Macro Economy 1959:Q1 - 2009:Q3. :: + + >>> data = sm.datasets.macrodata.load(as_pandas=False) + +The macro dataset is a structured array. :: + + >>> data = data.data[['year','quarter','realgdp','tbilrate','cpi','unemp']] + +We can add a lag like so :: + + >>> data = sm.tsa.add_lag(data, 'realgdp', lags=2) + +TODO: +-scikits.timeseries +-link in to var docs diff --git a/docs/source/vector_ar.rst b/docs/source/vector_ar.rst new file mode 100644 index 0000000..08a8b72 --- /dev/null +++ b/docs/source/vector_ar.rst @@ -0,0 +1,418 @@ +:orphan: + +.. module:: statsmodels.tsa.vector_ar.var_model + :synopsis: Vector autoregressions + +.. currentmodule:: statsmodels.tsa.vector_ar.var_model + +.. _var: + +Vector Autoregressions :mod:`tsa.vector_ar` +=========================================== + +:mod:`statsmodels.tsa.vector_ar` contains methods that are useful +for simultaneously modeling and analyzing multiple time series using +:ref:`Vector Autoregressions (VAR) ` and +:ref:`Vector Error Correction Models (VECM) `. + +.. _var_process: + +VAR(p) processes +---------------- + +We are interested in modeling a :math:`T \times K` multivariate time series +:math:`Y`, where :math:`T` denotes the number of observations and :math:`K` the +number of variables. One way of estimating relationships between the time series +and their lagged values is the *vector autoregression process*: + +.. math:: + + Y_t = A_1 Y_{t-1} + \ldots + A_p Y_{t-p} + u_t + + u_t \sim {\sf Normal}(0, \Sigma_u) + +where :math:`A_i` is a :math:`K \times K` coefficient matrix. + +We follow in large part the methods and notation of `Lutkepohl (2005) +`__, +which we will not develop here. + +Model fitting +~~~~~~~~~~~~~ + +.. note:: + + The classes referenced below are accessible via the + :mod:`statsmodels.tsa.api` module. + +To estimate a VAR model, one must first create the model using an `ndarray` of +homogeneous or structured dtype. When using a structured or record array, the +class will use the passed variable names. Otherwise they can be passed +explicitly: + +.. ipython:: python + :suppress: + + import pandas as pd + pd.options.display.max_rows = 10 + import matplotlib + import matplotlib.pyplot as plt + matplotlib.style.use('ggplot') + +.. ipython:: python + :okwarning: + + # some example data + import numpy as np + import pandas + import statsmodels.api as sm + from statsmodels.tsa.api import VAR, DynamicVAR + mdata = sm.datasets.macrodata.load_pandas().data + + # prepare the dates index + dates = mdata[['year', 'quarter']].astype(int).astype(str) + quarterly = dates["year"] + "Q" + dates["quarter"] + from statsmodels.tsa.base.datetools import dates_from_str + quarterly = dates_from_str(quarterly) + + mdata = mdata[['realgdp','realcons','realinv']] + mdata.index = pandas.DatetimeIndex(quarterly) + data = np.log(mdata).diff().dropna() + + # make a VAR model + model = VAR(data) + +.. note:: + + The :class:`VAR` class assumes that the passed time series are + stationary. Non-stationary or trending data can often be transformed to be + stationary by first-differencing or some other method. For direct analysis of + non-stationary time series, a standard stable VAR(p) model is not + appropriate. + +To actually do the estimation, call the `fit` method with the desired lag +order. Or you can have the model select a lag order based on a standard +information criterion (see below): + +.. ipython:: python + :okwarning: + + results = model.fit(2) + results.summary() + +Several ways to visualize the data using `matplotlib` are available. + +Plotting input time series: + +.. ipython:: python + :okwarning: + + @savefig var_plot_input.png + results.plot() + + +Plotting time series autocorrelation function: + +.. ipython:: python + + @savefig var_plot_acorr.png + results.plot_acorr() + + +Lag order selection +~~~~~~~~~~~~~~~~~~~ + +Choice of lag order can be a difficult problem. Standard analysis employs +likelihood test or information criteria-based order selection. We have +implemented the latter, accessible through the :class:`VAR` class: + +.. ipython:: python + + model.select_order(15) + +When calling the `fit` function, one can pass a maximum number of lags and the +order criterion to use for order selection: + +.. ipython:: python + + results = model.fit(maxlags=15, ic='aic') + +Forecasting +~~~~~~~~~~~ + +The linear predictor is the optimal h-step ahead forecast in terms of +mean-squared error: + +.. math:: + + y_t(h) = \nu + A_1 y_t(h − 1) + \cdots + A_p y_t(h − p) + +We can use the `forecast` function to produce this forecast. Note that we have +to specify the "initial value" for the forecast: + +.. ipython:: python + + lag_order = results.k_ar + results.forecast(data.values[-lag_order:], 5) + +The `forecast_interval` function will produce the above forecast along with +asymptotic standard errors. These can be visualized using the `plot_forecast` +function: + +.. ipython:: python + + @savefig var_forecast.png + results.plot_forecast(10) + +Class Reference +~~~~~~~~~~~~~~~ + +.. module:: statsmodels.tsa.vector_ar + :synopsis: Vector autoregressions and related tools + +.. currentmodule:: statsmodels.tsa.vector_ar + +.. autosummary:: + :toctree: generated/ + + var_model.VAR + var_model.VARProcess + var_model.VARResults + + +Post-estimation Analysis +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Several process properties and additional results after +estimation are available for vector autoregressive processes. + +.. autosummary:: + :toctree: generated/ + + var_model.LagOrderResults + hypothesis_test_results.HypothesisTestResults + hypothesis_test_results.NormalityTestResults + hypothesis_test_results.WhitenessTestResults + + +Impulse Response Analysis +------------------------- + +*Impulse responses* are of interest in econometric studies: they are the +estimated responses to a unit impulse in one of the variables. They are computed +in practice using the MA(:math:`\infty`) representation of the VAR(p) process: + +.. math:: + + Y_t = \mu + \sum_{i=0}^\infty \Phi_i u_{t-i} + +We can perform an impulse response analysis by calling the `irf` function on a +`VARResults` object: + +.. ipython:: python + :okwarning: + + irf = results.irf(10) + +These can be visualized using the `plot` function, in either orthogonalized or +non-orthogonalized form. Asymptotic standard errors are plotted by default at +the 95% significance level, which can be modified by the user. + +.. note:: + + Orthogonalization is done using the Cholesky decomposition of the estimated + error covariance matrix :math:`\hat \Sigma_u` and hence interpretations may + change depending on variable ordering. + +.. ipython:: python + + @savefig var_irf.png + irf.plot(orth=False) + + +Note the `plot` function is flexible and can plot only variables of interest if +so desired: + +.. ipython:: python + + @savefig var_realgdp.png + irf.plot(impulse='realgdp') + +The cumulative effects :math:`\Psi_n = \sum_{i=0}^n \Phi_i` can be plotted with +the long run effects as follows: + +.. ipython:: python + + @savefig var_irf_cum.png + irf.plot_cum_effects(orth=False) + + +Reference +~~~~~~~~~ + +.. autosummary:: + :toctree: generated/ + + irf.IRAnalysis + +Forecast Error Variance Decomposition (FEVD) +-------------------------------------------- + +Forecast errors of component j on k in an i-step ahead forecast can be +decomposed using the orthogonalized impulse responses :math:`\Theta_i`: + +.. math:: + + \omega_{jk, i} = \sum_{i=0}^{h-1} (e_j^\prime \Theta_i e_k)^2 / \mathrm{MSE}_j(h) + + \mathrm{MSE}_j(h) = \sum_{i=0}^{h-1} e_j^\prime \Phi_i \Sigma_u \Phi_i^\prime e_j + +These are computed via the `fevd` function up through a total number of steps ahead: + +.. ipython:: python + + fevd = results.fevd(5) + fevd.summary() + +They can also be visualized through the returned :class:`FEVD` object: + +.. ipython:: python + + @savefig var_fevd.png + results.fevd(20).plot() + + +Reference +~~~~~~~~~ + +.. autosummary:: + :toctree: generated/ + + var_model.FEVD + +Statistical tests +----------------- + +A number of different methods are provided to carry out hypothesis tests about +the model results and also the validity of the model assumptions (normality, +whiteness / "iid-ness" of errors, etc.). + +Granger causality +~~~~~~~~~~~~~~~~~ + +One is often interested in whether a variable or group of variables is "causal" +for another variable, for some definition of "causal". In the context of VAR +models, one can say that a set of variables are Granger-causal within one of the +VAR equations. We will not detail the mathematics or definition of Granger +causality, but leave it to the reader. The :class:`VARResults` object has the +`test_causality` method for performing either a Wald (:math:`\chi^2`) test or an +F-test. + +.. ipython:: python + + results.test_causality('realgdp', ['realinv', 'realcons'], kind='f') + +Normality +~~~~~~~~~ + +Whiteness of residuals +~~~~~~~~~~~~~~~~~~~~~~ + +Reference +~~~~~~~~~ + +.. autosummary:: + :toctree: generated/ + + hypothesis_test_results.HypothesisTestResults + hypothesis_test_results.CausalityTestResults + hypothesis_test_results.NormalityTestResults + hypothesis_test_results.WhitenessTestResults + +.. _vecm: + +Vector Error Correction Models (VECM) +------------------------------------- + +Vector Error Correction Models are used to study short-run deviations from +one or more permanent stochastic trends (unit roots). A VECM models the +difference of a vector of time series by imposing structure that is implied +by the assumed number of stochastic trends. :class:`VECM` is used to +specify and estimate these models. + +A VECM(:math:`k_{ar}-1`) has the following form + +.. math:: + + \Delta y_t = \Pi y_{t-1} + \Gamma_1 \Delta y_{t-1} + \ldots + + \Gamma_{k_{ar}-1} \Delta y_{t-k_{ar}+1} + u_t + +where + +.. math:: + + \Pi = \alpha \beta' + +as described in chapter 7 of [1]_. + +A VECM(:math:`k_{ar} - 1`) with deterministic terms has the form + +.. math:: + + \Delta y_t = \alpha \begin{pmatrix}\beta' & \eta'\end{pmatrix} \begin{pmatrix}y_{t-1} \\ + D^{co}_{t-1}\end{pmatrix} + \Gamma_1 \Delta y_{t-1} + \dots + \Gamma_{k_{ar}-1} \Delta y_{t-k_{ar}+1} + C D_t + u_t. + +In :math:`D^{co}_{t-1}` we have the deterministic terms which are inside +the cointegration relation (or restricted to the cointegration relation). +:math:`\eta` is the corresponding estimator. To pass a deterministic term +inside the cointegration relation, we can use the `exog_coint` argument. +For the two special cases of an intercept and a linear trend there exists +a simpler way to declare these terms: we can pass ``"ci"`` and ``"li"`` +respectively to the `deterministic` argument. So for an intercept inside +the cointegration relation we can either pass ``"ci"`` as `deterministic` +or `np.ones(len(data))` as `exog_coint` if `data` is passed as the +`endog` argument. This ensures that :math:`D_{t-1}^{co} = 1` for all +:math:`t`. + +We can also use deterministic terms outside the cointegration relation. +These are defined in :math:`D_t` in the formula above with the +corresponding estimators in the matrix :math:`C`. We specify such terms by +passing them to the `exog` argument. For an intercept and/or linear trend +we again have the possibility to use `deterministic` alternatively. For +an intercept we pass ``"co"`` and for a linear trend we pass ``"lo"`` where +the `o` stands for `outside`. + +The following table shows the five cases considered in [2]_. The last +column indicates which string to pass to the `deterministic` argument for +each of these cases. + +==== =============================== =================================== ============= +Case Intercept Slope of the linear trend `deterministic` +==== =============================== =================================== ============= +I 0 0 ``"nc"`` +II :math:`- \alpha \beta^T \mu` 0 ``"ci"`` +III :math:`\neq 0` 0 ``"co"`` +IV :math:`\neq 0` :math:`- \alpha \beta^T \gamma` ``"coli"`` +V :math:`\neq 0` :math:`\neq 0` ``"colo"`` +==== =============================== =================================== ============= + +Reference +~~~~~~~~~ + +.. autosummary:: + :toctree: generated/ + + vecm.VECM + vecm.coint_johansen + vecm.select_order + vecm.select_coint_rank + vecm.VECMResults + vecm.CointRankResults + + +References +^^^^^^^^^^ +.. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + +.. [2] Johansen, S. 1995. *Likelihood-Based Inference in Cointegrated * + *Vector Autoregressive Models*. Oxford University Press. diff --git a/docs/sphinxext/LICENSE.txt b/docs/sphinxext/LICENSE.txt new file mode 100644 index 0000000..e00efc3 --- /dev/null +++ b/docs/sphinxext/LICENSE.txt @@ -0,0 +1,97 @@ +------------------------------------------------------------------------------- + The files + - numpydoc.py + - autosummary.py + - autosummary_generate.py + - docscrape.py + - docscrape_sphinx.py + - phantom_import.py + have the following license: + +Copyright (C) 2008 Stefan van der Walt , Pauli Virtanen + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) +HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, +STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING +IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + +------------------------------------------------------------------------------- + The files + - compiler_unparse.py + - comment_eater.py + - traitsdoc.py + have the following license: + +This software is OSI Certified Open Source Software. +OSI Certified is a certification mark of the Open Source Initiative. + +Copyright (c) 2006, Enthought, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + * Neither the name of Enthought, Inc. nor the names of its contributors may + be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR +ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +------------------------------------------------------------------------------- + The files + - only_directives.py + - plot_directive.py + originate from Matplotlib (http://matplotlib.sf.net/) which has + the following license: + +Copyright (c) 2002-2008 John D. Hunter; All Rights Reserved. + +1. This LICENSE AGREEMENT is between John D. Hunter (“JDH”), and the Individual or Organization (“Licensee”) accessing and otherwise using matplotlib software in source or binary form and its associated documentation. + +2. Subject to the terms and conditions of this License Agreement, JDH hereby grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, analyze, test, perform and/or display publicly, prepare derivative works, distribute, and otherwise use matplotlib 0.98.3 alone or in any derivative version, provided, however, that JDH’s License Agreement and JDH’s notice of copyright, i.e., “Copyright (c) 2002-2008 John D. Hunter; All Rights Reserved” are retained in matplotlib 0.98.3 alone or in any derivative version prepared by Licensee. + +3. In the event Licensee prepares a derivative work that is based on or incorporates matplotlib 0.98.3 or any part thereof, and wants to make the derivative work available to others as provided herein, then Licensee hereby agrees to include in any such work a brief summary of the changes made to matplotlib 0.98.3. + +4. JDH is making matplotlib 0.98.3 available to Licensee on an “AS IS” basis. JDH MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, JDH MAKES NO AND DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF MATPLOTLIB 0.98.3 WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. + +5. JDH SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF MATPLOTLIB 0.98.3 FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING MATPLOTLIB 0.98.3, OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. + +6. This License Agreement will automatically terminate upon a material breach of its terms and conditions. + +7. Nothing in this License Agreement shall be deemed to create any relationship of agency, partnership, or joint venture between JDH and Licensee. This License Agreement does not grant permission to use JDH trademarks or trade name in a trademark sense to endorse or promote products or services of Licensee, or any third party. + +8. By copying, installing or otherwise using matplotlib 0.98.3, Licensee agrees to be bound by the terms and conditions of this License Agreement. + diff --git a/docs/sphinxext/MANIFEST.in b/docs/sphinxext/MANIFEST.in new file mode 100644 index 0000000..f88ed78 --- /dev/null +++ b/docs/sphinxext/MANIFEST.in @@ -0,0 +1,2 @@ +recursive-include tests *.py +include *.txt diff --git a/docs/sphinxext/README.txt b/docs/sphinxext/README.txt new file mode 100644 index 0000000..9647703 --- /dev/null +++ b/docs/sphinxext/README.txt @@ -0,0 +1,26 @@ +===================================== +numpydoc -- Numpy's Sphinx extensions +===================================== + +Numpy's documentation uses several custom extensions to Sphinx. These +are shipped in this ``numpydoc`` package, in case you want to make use +of them in third-party projects. + +The following extensions are available: + + - ``numpydoc``: support for the Numpy docstring format in Sphinx, and add + the code description directives ``np-function``, ``np-cfunction``, etc. + that support the Numpy docstring syntax. + + - ``numpydoc.traitsdoc``: For gathering documentation about Traits attributes. + + - ``numpydoc.plot_directives``: Adaptation of Matplotlib's ``plot::`` + directive. Note that this implementation may still undergo severe + changes or eventually be deprecated. + + - ``numpydoc.only_directives``: (DEPRECATED) + + - ``numpydoc.autosummary``: (DEPRECATED) An ``autosummary::`` directive. + Available in Sphinx 0.6.2 and (to-be) 1.0 as ``sphinx.ext.autosummary``, + and it the Sphinx 1.0 version is recommended over that included in + Numpydoc. diff --git a/docs/sphinxext/github.py b/docs/sphinxext/github.py new file mode 100644 index 0000000..830e120 --- /dev/null +++ b/docs/sphinxext/github.py @@ -0,0 +1,163 @@ +"""Define text roles for GitHub + +* ghissue - Issue +* ghpull - Pull Request +* ghuser - User + +Adapted from bitbucket example here: +https://bitbucket.org/birkenfeld/sphinx-contrib/src/tip/bitbucket/sphinxcontrib/bitbucket.py + +Authors +------- + +* Doug Hellmann +* Min RK +""" +# +# Original Copyright (c) 2010 Doug Hellmann. All rights reserved. +# + +from docutils import nodes, utils +from docutils.parsers.rst.roles import set_classes + + +def make_link_node(rawtext, app, type, slug, options): + """Create a link to a github resource. + + :param rawtext: Text being replaced with link node. + :param app: Sphinx application context + :param type: Link type (issues, changeset, etc.) + :param slug: ID of the thing to link to + :param options: Options dictionary passed to role func. + """ + + try: + base = app.config.github_project_url + if not base: + raise AttributeError + if not base.endswith('/'): + base += '/' + except AttributeError as err: + raise ValueError('github_project_url configuration value is not set' + ' (%s)' % str(err)) + + ref = base + type + '/' + slug + '/' + set_classes(options) + prefix = "#" + if type == 'pull': + prefix = "PR " + prefix + node = nodes.reference(rawtext, prefix + utils.unescape(slug), refuri=ref, + **options) + return node + + +def ghissue_role(name, rawtext, text, lineno, inliner, options={}, content=[]): + """Link to a GitHub issue. + + Returns 2 part tuple containing list of nodes to insert into the + document and a list of system messages. Both are allowed to be + empty. + + :param name: The role name used in the document. + :param rawtext: The entire markup snippet, with role. + :param text: The text marked with the role. + :param lineno: The line number where rawtext appears in the input. + :param inliner: The inliner instance that called us. + :param options: Directive options for customization. + :param content: The directive content for customization. + """ + + try: + issue_num = int(text) + if issue_num <= 0: + raise ValueError + except ValueError: + msg = inliner.reporter.error( + 'GitHub issue number must be a number greater than or equal to 1; ' + '"%s" is invalid.' % text, line=lineno) + prb = inliner.problematic(rawtext, rawtext, msg) + return [prb], [msg] + app = inliner.document.settings.env.app + # app.info('issue %r' % text) + if 'pull' in name.lower(): + category = 'pull' + elif 'issue' in name.lower(): + category = 'issues' + else: + msg = inliner.reporter.error( + 'GitHub roles include "ghpull" and "ghissue", ' + '"%s" is invalid.' % name, line=lineno) + prb = inliner.problematic(rawtext, rawtext, msg) + return [prb], [msg] + node = make_link_node(rawtext, app, category, str(issue_num), options) + return [node], [] + + +def ghuser_role(name, rawtext, text, lineno, inliner, options={}, content=[]): + """Link to a GitHub user. + + Returns 2 part tuple containing list of nodes to insert into the + document and a list of system messages. Both are allowed to be + empty. + + :param name: The role name used in the document. + :param rawtext: The entire markup snippet, with role. + :param text: The text marked with the role. + :param lineno: The line number where rawtext appears in the input. + :param inliner: The inliner instance that called us. + :param options: Directive options for customization. + :param content: The directive content for customization. + """ + # app = inliner.document.settings.env.app + # app.info('user link %r' % text) + ref = 'https://www.github.com/' + text + node = nodes.reference(rawtext, text, refuri=ref, **options) + return [node], [] + + +def ghcommit_role(name, rawtext, text, lineno, inliner, options={}, content=[]): + """Link to a GitHub commit. + + Returns 2 part tuple containing list of nodes to insert into the + document and a list of system messages. Both are allowed to be + empty. + + :param name: The role name used in the document. + :param rawtext: The entire markup snippet, with role. + :param text: The text marked with the role. + :param lineno: The line number where rawtext appears in the input. + :param inliner: The inliner instance that called us. + :param options: Directive options for customization. + :param content: The directive content for customization. + """ + app = inliner.document.settings.env.app + # app.info('user link %r' % text) + try: + base = app.config.github_project_url + if not base: + raise AttributeError + if not base.endswith('/'): + base += '/' + except AttributeError as err: + raise ValueError('github_project_url configuration value is not ' + 'set (%s)' % str(err)) + + ref = base + text + node = nodes.reference(rawtext, text[:6], refuri=ref, **options) + return [node], [] + + +def setup(app): + """Install the plugin. + + :param app: Sphinx application context. + """ + from sphinx.util import logging + logger = logging.getLogger(__name__) + logger.info('Initializing GitHub plugin') + app.add_role('ghissue', ghissue_role) + app.add_role('ghpull', ghissue_role) + app.add_role('ghuser', ghuser_role) + app.add_role('ghcommit', ghcommit_role) + app.add_config_value('github_project_url', None, 'env') + return {'parallel_read_safe': True} diff --git a/docs/themes/statsmodels/indexsidebar.html b/docs/themes/statsmodels/indexsidebar.html new file mode 100644 index 0000000..86372e1 --- /dev/null +++ b/docs/themes/statsmodels/indexsidebar.html @@ -0,0 +1,31 @@ +

    Download

    + +{% if 'dev' in version %} + +

    This documentation is for version {{ version }}, which is not +released yet. Grab the source code from Github to install this version. You can go to the documentation for the last release here.

    + +{% else %} + +

    This documentation is for the {{ release }} release. You can install it with pip: + +

    pip install --upgrade --no-deps statsmodels
    + + or conda: + +
    conda install statsmodels
    +Documentation for the current development version is here.

    + +{% endif %} + +

    Participate

    +
    Join the Google Group:
    +
    +
    + +
    +

    + Grab the source from Github. + Report bugs to the Issue Tracker. + Have a look at our Developer Pages. +

    diff --git a/docs/themes/statsmodels/layout.html b/docs/themes/statsmodels/layout.html new file mode 100644 index 0000000..228e7b8 --- /dev/null +++ b/docs/themes/statsmodels/layout.html @@ -0,0 +1,107 @@ +{# + statsmodels/layout.hml + + :copyright: Skipper Seabold + :license: BSD + #} +{% extends "basic/layout.html" %} +{% block extrahead %} + + + + + + + + +{% endblock %} +{% set reldelim1 = ' |' %} + +{% block sidebarlogo %}{% endblock %} {# override to not display, we keep the "logo" at the very top #} + +{% if pagename == 'index' %} + {% set title = 'StatsModels: Statistics in Python' %} +{% endif %} + + +{% block rootrellink %} +

    F$?ixgIlw0uz)+%F19oi^iwTIeI18T*P)RxS|Uf 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:0;-moz-box-flex:0;box-flex:0;flex:none} +.vbox{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch} +.vbox>*{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;flex:none} +.reverse{-webkit-box-direction:reverse;-moz-box-direction:reverse;box-direction:reverse;flex-direction:row-reverse} +.box-flex0{-webkit-box-flex:0;-moz-box-flex:0;box-flex:0;flex:none;width:auto} +.box-flex1{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1} +.box-flex{-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1} +.box-flex2{-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;flex:2} +.box-group1{-webkit-box-flex-group:1;-moz-box-flex-group:1;box-flex-group:1} +.box-group2{-webkit-box-flex-group:2;-moz-box-flex-group:2;box-flex-group:2} +.start{-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start} +.end{-webkit-box-pack:end;-moz-box-pack:end;box-pack:end;justify-content:flex-end} +.center{-webkit-box-pack:center;-moz-box-pack:center;box-pack:center;justify-content:center} +.align-start{-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start} +.align-end{-webkit-box-align:end;-moz-box-align:end;box-align:end;align-items:flex-end} +.align-center{-webkit-box-align:center;-moz-box-align:center;box-align:center;align-items:center} +div.error{margin:2em;text-align:center} +div.error>h1{font-size:500%;line-height:normal} +div.error>p{font-size:200%;line-height:normal} +div.traceback-wrapper{text-align:left;max-width:800px;margin:auto} +.center-nav{display:inline-block;margin-bottom:-4px} +.alternate_upload{background-color:none;display:inline} +.alternate_upload.form{padding:0;margin:0} +.alternate_upload input.fileinput{background-color:#f00;position:relative;opacity:0;z-index:2;width:295px;margin-left:163px;cursor:pointer;height:26px} +ul#tabs{margin-bottom:4px} +ul#tabs a{padding-top:4px;padding-bottom:4px} +ul.breadcrumb a:focus,ul.breadcrumb a:hover{text-decoration:none} +ul.breadcrumb i.icon-home{font-size:16px;margin-right:4px} +ul.breadcrumb span{color:#5e5e5e} +.list_toolbar{padding:4px 0 4px 0} +.list_toolbar [class*="span"]{min-height:26px} +.list_header{font-weight:bold} +.list_container{margin-top:4px;margin-bottom:20px;border:1px solid #ababab;border-radius:4px} +.list_container>div{border-bottom:1px solid #ababab}.list_container>div:hover .list-item{background-color:#f00} +.list_container>div:last-child{border:none} +.list_item:hover .list_item{background-color:#ddd} +.list_item a{text-decoration:none} +.list_header>div,.list_item>div{padding-top:4px;padding-bottom:4px;padding-left:7px;padding-right:7px;height:22px;line-height:22px} +.item_name{line-height:22px;height:26px} +.item_icon{font-size:14px;color:#5e5e5e;margin-right:7px} +.item_buttons{line-height:1em} +.toolbar_info{height:26px;line-height:26px} +input.nbname_input,input.engine_num_input{padding-top:3px;padding-bottom:3px;height:14px;line-height:14px;margin:0} +input.engine_num_input{width:60px} +.highlight_text{color:#00f} +#project_name>.breadcrumb{padding:0;margin-bottom:0;background-color:transparent;font-weight:bold} +.ansibold{font-weight:bold} +.ansiblack{color:#000} +.ansired{color:#8b0000} +.ansigreen{color:#006400} +.ansiyellow{color:#a52a2a} +.ansiblue{color:#00008b} +.ansipurple{color:#9400d3} +.ansicyan{color:#4682b4} +.ansigray{color:#808080} +.ansibgblack{background-color:#000} +.ansibgred{background-color:#f00} +.ansibggreen{background-color:#008000} +.ansibgyellow{background-color:#ff0} +.ansibgblue{background-color:#00f} +.ansibgpurple{background-color:#f0f} +.ansibgcyan{background-color:#0ff} +.ansibggray{background-color:#808080} +div.cell{border:1px solid transparent;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch}div.cell.selected{border-radius:4px;border:thin #ababab solid} +div.cell.edit_mode{border-radius:4px;border:thin #008000 solid} +div.cell{width:100%;padding:5px 5px 5px 0;margin:0;outline:none} +div.prompt{min-width:11ex;padding:.4em;margin:0;font-family:monospace;text-align:right;line-height:1.21429em} +div.inner_cell{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1} +div.input_area{border:1px solid #cfcfcf;border-radius:4px;background:#f7f7f7} +div.prompt:empty{padding-top:0;padding-bottom:0} +div.input{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch} +div.input_prompt{color:#000080;border-top:1px solid transparent} +div.input_area>div.highlight{margin:.4em;border:none;padding:0;background-color:transparent} +div.input_area>div.highlight>pre{margin:0;border:0;padding:0;background-color:transparent;font-size:14px;line-height:1.21429em} +.CodeMirror{line-height:1.21429em;height:auto;background:none;} +.CodeMirror-scroll{overflow-y:hidden;overflow-x:auto} +@-moz-document url-prefix(){.CodeMirror-scroll{overflow-x:hidden}}.CodeMirror-lines{padding:.4em} +.CodeMirror-linenumber{padding:0 8px 0 4px} +.CodeMirror-gutters{border-bottom-left-radius:4px;border-top-left-radius:4px} +.CodeMirror pre{padding:0;border:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0} +pre code{display:block;padding:.5em} +.highlight-base,pre code,pre .subst,pre .tag .title,pre .lisp .title,pre .clojure .built_in,pre .nginx .title{color:#000} +.highlight-string,pre .string,pre .constant,pre .parent,pre .tag .value,pre .rules .value,pre .rules .value .number,pre .preprocessor,pre .ruby .symbol,pre .ruby .symbol .string,pre .aggregate,pre .template_tag,pre .django .variable,pre .smalltalk .class,pre .addition,pre .flow,pre .stream,pre .bash .variable,pre .apache .tag,pre .apache .cbracket,pre .tex .command,pre .tex .special,pre .erlang_repl .function_or_atom,pre .markdown .header{color:#ba2121} +.highlight-comment,pre .comment,pre .annotation,pre .template_comment,pre .diff .header,pre .chunk,pre .markdown .blockquote{color:#408080;font-style:italic} +.highlight-number,pre .number,pre .date,pre .regexp,pre .literal,pre .smalltalk .symbol,pre .smalltalk .char,pre .go .constant,pre .change,pre .markdown .bullet,pre .markdown .link_url{color:#080} +pre .label,pre .javadoc,pre .ruby .string,pre .decorator,pre .filter .argument,pre .localvars,pre .array,pre .attr_selector,pre .important,pre .pseudo,pre .pi,pre .doctype,pre .deletion,pre .envvar,pre .shebang,pre .apache .sqbracket,pre .nginx .built_in,pre .tex .formula,pre .erlang_repl .reserved,pre .prompt,pre .markdown .link_label,pre .vhdl .attribute,pre .clojure .attribute,pre .coffeescript .property{color:#88f} +.highlight-keyword,pre .keyword,pre .id,pre .phpdoc,pre .aggregate,pre .css .tag,pre .javadoctag,pre .phpdoc,pre .yardoctag,pre .smalltalk .class,pre .winutils,pre .bash .variable,pre .apache .tag,pre .go .typename,pre .tex .command,pre .markdown .strong,pre .request,pre .status{color:#008000;font-weight:bold} +.highlight-builtin,pre .built_in{color:#008000} +pre .markdown .emphasis{font-style:italic} +pre .nginx .built_in{font-weight:normal} +pre .coffeescript .javascript,pre .javascript .xml,pre .tex .formula,pre .xml .javascript,pre .xml .vbscript,pre .xml .css,pre .xml .cdata{opacity:.5} +.cm-s-ipython span.cm-variable{color:#000} +.cm-s-ipython span.cm-keyword{color:#008000;font-weight:bold} +.cm-s-ipython span.cm-number{color:#080} +.cm-s-ipython span.cm-comment{color:#408080;font-style:italic} +.cm-s-ipython span.cm-string{color:#ba2121} +.cm-s-ipython span.cm-builtin{color:#008000} +.cm-s-ipython span.cm-error{color:#f00} +.cm-s-ipython span.cm-operator{color:#a2f;font-weight:bold} +.cm-s-ipython span.cm-meta{color:#a2f} +.cm-s-ipython span.cm-tab{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=);background-position:right;background-repeat:no-repeat} +div.output_wrapper{position:relative;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch} +div.output_scroll{height:24em;width:100%;overflow:auto;border-radius:4px;-webkit-box-shadow:inset 0 2px 8px rgba(0,0,0,0.8);-moz-box-shadow:inset 0 2px 8px rgba(0,0,0,0.8);box-shadow:inset 0 2px 8px rgba(0,0,0,0.8);display:block} +div.output_collapsed{margin:0;padding:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch} +div.out_prompt_overlay{height:100%;padding:0 .4em;position:absolute;border-radius:4px} +div.out_prompt_overlay:hover{-webkit-box-shadow:inset 0 0 1px #000;-moz-box-shadow:inset 0 0 1px #000;box-shadow:inset 0 0 1px #000;background:rgba(240,240,240,0.5)} +div.output_prompt{color:#8b0000} +div.output_area{padding:0;page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}div.output_area .MathJax_Display{text-align:left !important} +div.output_area .rendered_html table{margin-left:0;margin-right:0} +div.output_area .rendered_html img{margin-left:0;margin-right:0} +.output{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch} +div.output_area pre{font-family:monospace;margin:0;padding:0;border:0;font-size:100%;vertical-align:baseline;color:#000;background-color:transparent;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;line-height:inherit} +div.output_subarea{padding:.4em .4em 0 .4em;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1} +div.output_text{text-align:left;color:#000;font-family:monospace;line-height:1.21429em} +div.output_stderr{background:#fdd;} +div.output_latex{text-align:left} +div.output_javascript:empty{padding:0} +.js-error{color:#8b0000} +div.raw_input{padding-top:0;padding-bottom:0;height:1em;line-height:1em;font-family:monospace} +span.input_prompt{font-family:inherit} +input.raw_input{font-family:inherit;font-size:inherit;color:inherit;width:auto;margin:-2px 0 0 1px;padding-left:1px;padding-top:2px;height:1em} +p.p-space{margin-bottom:10px} +.rendered_html{color:#000;}.rendered_html em{font-style:italic} +.rendered_html strong{font-weight:bold} +.rendered_html u{text-decoration:underline} +.rendered_html :link{text-decoration:underline} +.rendered_html :visited{text-decoration:underline} +.rendered_html h1{font-size:185.7%;margin:1.08em 0 0 0;font-weight:bold;line-height:1} +.rendered_html h2{font-size:157.1%;margin:1.27em 0 0 0;font-weight:bold;line-height:1} +.rendered_html h3{font-size:128.6%;margin:1.55em 0 0 0;font-weight:bold;line-height:1} +.rendered_html h4{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1} +.rendered_html h5{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1;font-style:italic} +.rendered_html h6{font-size:100%;margin:2em 0 0 0;font-weight:bold;line-height:1;font-style:italic} +.rendered_html h1:first-child{margin-top:.538em} +.rendered_html h2:first-child{margin-top:.636em} +.rendered_html h3:first-child{margin-top:.777em} +.rendered_html h4:first-child{margin-top:1em} +.rendered_html h5:first-child{margin-top:1em} +.rendered_html h6:first-child{margin-top:1em} +.rendered_html ul{list-style:disc;margin:0 2em} +.rendered_html ul ul{list-style:square;margin:0 2em} +.rendered_html ul ul ul{list-style:circle;margin:0 2em} +.rendered_html ol{list-style:decimal;margin:0 2em} +.rendered_html ol ol{list-style:upper-alpha;margin:0 2em} +.rendered_html ol ol ol{list-style:lower-alpha;margin:0 2em} +.rendered_html ol ol ol ol{list-style:lower-roman;margin:0 2em} +.rendered_html ol ol ol ol ol{list-style:decimal;margin:0 2em} +.rendered_html *+ul{margin-top:1em} +.rendered_html *+ol{margin-top:1em} +.rendered_html hr{color:#000;background-color:#000} +.rendered_html pre{margin:1em 2em} +.rendered_html pre,.rendered_html code{border:0;background-color:#fff;color:#000;font-size:100%;padding:0} +.rendered_html blockquote{margin:1em 2em} +.rendered_html table{margin-left:auto;margin-right:auto;border:1px solid #000;border-collapse:collapse} +.rendered_html tr,.rendered_html th,.rendered_html td{border:1px solid #000;border-collapse:collapse;margin:1em 2em} +.rendered_html td,.rendered_html th{text-align:left;vertical-align:middle;padding:4px} +.rendered_html th{font-weight:bold} +.rendered_html *+table{margin-top:1em} +.rendered_html p{text-align:justify} +.rendered_html *+p{margin-top:1em} +.rendered_html img{display:block;margin-left:auto;margin-right:auto} +.rendered_html *+img{margin-top:1em} +div.text_cell{padding:5px 5px 5px 0;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch} +div.text_cell_render{outline:none;resize:none;width:inherit;border-style:none;padding:.5em .5em .5em .4em;color:#000} +a.anchor-link:link{text-decoration:none;padding:0 20px;visibility:hidden} +h1:hover .anchor-link,h2:hover .anchor-link,h3:hover .anchor-link,h4:hover .anchor-link,h5:hover .anchor-link,h6:hover .anchor-link{visibility:visible} +div.cell.text_cell.rendered{padding:0} +.widget-area{page-break-inside:avoid;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.widget-area .widget-subarea{padding:.44em .4em .4em 1px;margin-left:6px;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch;-webkit-box-flex:2;-moz-box-flex:2;box-flex:2;flex:2;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start} +.widget-hlabel{min-width:10ex;padding-right:8px;padding-top:3px;text-align:right;vertical-align:text-top} +.widget-vlabel{padding-bottom:5px;text-align:center;vertical-align:text-bottom} +.widget-hreadout{padding-left:8px;padding-top:3px;text-align:left;vertical-align:text-top} +.widget-vreadout{padding-top:5px;text-align:center;vertical-align:text-top} +.slide-track{border:1px solid #ccc;background:#fff;border-radius:4px;} +.widget-hslider{padding-left:8px;padding-right:5px;overflow:visible;width:348px;height:5px;max-height:5px;margin-top:11px;margin-bottom:10px;border:1px solid #ccc;background:#fff;border-radius:4px;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch}.widget-hslider .ui-slider{border:0 !important;background:none !important;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}.widget-hslider .ui-slider .ui-slider-handle{width:14px !important;height:28px !important;margin-top:-8px !important} +.widget-vslider{padding-bottom:8px;overflow:visible;width:5px;max-width:5px;height:250px;margin-left:12px;border:1px solid #ccc;background:#fff;border-radius:4px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch}.widget-vslider .ui-slider{border:0 !important;background:none !important;margin-left:-4px;margin-top:5px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch;-webkit-box-flex:1;-moz-box-flex:1;box-flex:1;flex:1}.widget-vslider .ui-slider .ui-slider-handle{width:28px !important;height:14px !important;margin-left:-9px} +.widget-text{width:350px;margin:0 !important} +.widget-listbox{width:364px;margin-bottom:0} +.widget-numeric-text{width:150px;margin:0 !important} +.widget-progress{width:363px}.widget-progress .bar{-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none} +.widget-combo-btn{min-width:138px;} +.widget-box{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start} +.widget-hbox{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch} +.widget-hbox-single{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start;display:-webkit-box;-webkit-box-orient:horizontal;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:horizontal;-moz-box-align:stretch;display:box;box-orient:horizontal;box-align:stretch;display:flex;flex-direction:row;align-items:stretch;height:30px} +.widget-vbox{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch} +.widget-vbox-single{margin:5px;-webkit-box-pack:start;-moz-box-pack:start;box-pack:start;justify-content:flex-start;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start;display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch;width:30px} +.widget-modal{overflow:hidden;position:absolute !important;top:0;left:0;margin-left:0 !important} +.widget-modal-body{max-height:none !important} +.widget-container{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-webkit-box-align:start;-moz-box-align:start;box-align:start;align-items:flex-start} +.widget-radio-box{display:-webkit-box;-webkit-box-orient:vertical;-webkit-box-align:stretch;display:-moz-box;-moz-box-orient:vertical;-moz-box-align:stretch;display:box;box-orient:vertical;box-align:stretch;width:100%;display:flex;flex-direction:column;align-items:stretch;box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding-top:4px} +.docked-widget-modal{overflow:hidden;position:relative !important;top:0 !important;left:0 !important;margin-left:0 !important} diff --git a/docs/source/_static/loading.gif b/docs/source/_static/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..f864d5fd38b7466c76b5a36dc0e3e9455c0126e2 GIT binary patch literal 2767 zcmeH``%_bA0*1eHPVNawNVtR;Fkp-nQj8edfS`v<5L7TgR6wi;WfgH-0}4fE+c_uU zB6tf6auF}FAcDdgg|bMU&H)LR5jARM!8$tuwd$nHqS?K-=JNZ+yGvz=Iegxp{+qWGZ9j{-%9vvN>n3$NJp6==CAqYaF(LfM1Z{EEA{{Gt9 z+Ba|B7z_sR+xabl|E~mm-*OXmhLq??y)HONjX>1ze1D?RIn=G1`RR-%fb}zgSh6^a z(}Zw20U1L^Cs9UcyJfc+al#}J2xVlYUoR{`gd&QDxAb1w4>I~5gc?ccq(G+T!I;H};U_uyHR0@hr>Qk1P1=6fvUBhR zb|&^^cEQtu&W}=-=YR7o5UI)AD*~%J7bkVd5`xrdw{bHm;|Bf^_|FG$9l}`ruhnVF zO%=6X*I#yro*pmfB;-A0cVjz73Qy)`oa=df_3Bx6!M3TNALf9BwI*di`jhdovR(I= zFT31zui1Xw??+Ym-lWNq=V6~8tt012$@*hy3So0QNJ#eIJ4Yh{qJ+aTY>ng8W1p4BrwB_>i7AY-xmGrA}hAeq`aX(yx~=c&|=$w&*&PpKd;G@@0oXK@D0x=;tyY&Eb|HKPsM z71v`PO)na3pfO*xUD8Z|CQju)c+RSAH=5V^4vb9Q2JwHwt|-INt|!nD?AlRxF5ZT8 zaA9~hGb$~rMhQh_0+31$tkzyLi>X3c7>F!|Jyn`+5{LG=E`sIQbHA8!=`uday6D6Y zNtVL?j^`6A%UuwO!`}j#s~H?w=P<5}Z2)*PPx|5q$MM+1K6_d_cie9JVArbrB2sRy zOl**1Mc+|zLM>munG#O|##RApuODr^1+pL-?SHX+D6Dz_@%-Oo(fM&hHYZ-jWU5jf z&nBYG;>F6&Y`veoLdZ@0WyrDsuXOP)9g*C`A(+R`Ryc2+9w_DJNaf@Dzg?~N{uI_} zjV(!yygvrGv#KF*Mt{6H^v1Ve=hQyF2^E~bd#&iZg;(%dS^nM;oGSF1Y^&rY}Ian zFrp%SBGPyN{Z?t%Mo#!qgLQ2)k{>KAv?=zezKN*qPRf>^4QjcWgyxiC}7Vb6vGrBLR(1J&B%*gb{`!Jljb^2%jB$ zFBNUHANC6Q?0~M}cVtgk_;_DAB-BE?2dP z(C9OIXza3Ao-@UyqX%`5cjg#cHl!uHq;&?~JO{eE+A2KSSD)s8v&CiV$kV$A=DG@i z;6JY7z*8oPdj@bbJQoTAENW#ls(ucbGA#yhN>zbWqBTbLl>rGqOAY+` z=psSt8VQE=9+X8^$l@oeDzRvja79ry3nvLcOR7+)bIFyJVoz4}URM-47_u>V zY*^e(o`?|l++*Y0uQ#&dKapW1o?J{jx+*_gKV^cW+W87KI7hZ5viXv$$=1IR^Z~yA XWBrHU7iSEP8X8hQyAJO{V6g1pwSv80 literal 0 HcmV?d00001 diff --git a/docs/source/_static/minus.gif b/docs/source/_static/minus.gif new file mode 100644 index 0000000000000000000000000000000000000000..154e45a5ee2baa0bd114ee01417a3c595e13a7b4 GIT binary patch literal 87 zcmZ?wbhEHb6lM@+n8?iV|NsAnh6V-(hIjAYDgI<(WME)s&;fFRvce1uOd50gSDt>$ rpUk}_OuXTqLc+dE;T4@eYD+S|Pkc6Mr|u7}Yr0Q=o%`<0$Y2cs-bNsJ literal 0 HcmV?d00001 diff --git a/docs/source/_static/mktree.css b/docs/source/_static/mktree.css new file mode 100644 index 0000000..6bd45a7 --- /dev/null +++ b/docs/source/_static/mktree.css @@ -0,0 +1,23 @@ +/* Put this inside a @media qualifier so Netscape 4 ignores it */ +@media screen, print { + /* Turn off list bullets */ + ul.mktree li { list-style: none; } + /* Control how "spaced out" the tree is */ + ul.mktree, ul.mktree ul , ul.mktree li { margin-left:10px; padding:0px; } + /* Provide space for our own "bullet" inside the LI */ + ul.mktree li .bullet { padding-left: 15px; } + /* Show "bullets" in the links, depending on the class of the LI that the link's in */ + ul.mktree li.liOpen .bullet { cursor: pointer; background: url(minus.gif) center left no-repeat; } + ul.mktree li.liClosed .bullet { cursor: pointer; background: url(plus.gif) center left no-repeat; } + ul.mktree li.liBullet .bullet { cursor: default; background: url(bullet.gif) center left no-repeat; } + /* Sublists are visible or not based on class of parent LI */ + ul.mktree li.liOpen ul { display: block; } + ul.mktree li.liClosed ul { display: none; } + + /* Format menu items differently depending on what level of the tree they are in */ + /* Uncomment this if you want your fonts to decrease in size the deeper they are in the tree */ +/* + ul.mktree li ul li { font-size: 90% } +*/ + +} diff --git a/docs/source/_static/mktree.js b/docs/source/_static/mktree.js new file mode 100644 index 0000000..299cb2a --- /dev/null +++ b/docs/source/_static/mktree.js @@ -0,0 +1,168 @@ +/** + * Copyright (c)2005-2009 Matt Kruse (javascripttoolbox.com) + * + * Dual licensed under the MIT and GPL licenses. + * This basically means you can use this code however you want for + * free, but don't claim to have written it yourself! + * Donations always accepted: http://www.JavascriptToolbox.com/donate/ + * + * Please do not link to the .js files on javascripttoolbox.com from + * your site. Copy the files locally to your server instead. + * + */ +/* +This code is inspired by and extended from Stuart Langridge's aqlist code: + http://www.kryogenix.org/code/browser/aqlists/ + Stuart Langridge, November 2002 + sil@kryogenix.org + Inspired by Aaron's labels.js (http://youngpup.net/demos/labels/) + and Dave Lindquist's menuDropDown.js (http://www.gazingus.org/dhtml/?id=109) +*/ + +// Automatically attach a listener to the window onload, to convert the trees +addEvent(window,"load",convertTrees); + +// Utility function to add an event listener +function addEvent(o,e,f){ + if (o.addEventListener){ o.addEventListener(e,f,false); return true; } + else if (o.attachEvent){ return o.attachEvent("on"+e,f); } + else { return false; } +} + +// utility function to set a global variable if it is not already set +function setDefault(name,val) { + if (typeof(window[name])=="undefined" || window[name]==null) { + window[name]=val; + } +} + +// Full expands a tree with a given ID +function expandTree(treeId) { + var ul = document.getElementById(treeId); + if (ul == null) { return false; } + expandCollapseList(ul,nodeOpenClass); +} + +// Fully collapses a tree with a given ID +function collapseTree(treeId) { + var ul = document.getElementById(treeId); + if (ul == null) { return false; } + expandCollapseList(ul,nodeClosedClass); +} + +// Expands enough nodes to expose an LI with a given ID +function expandToItem(treeId,itemId) { + var ul = document.getElementById(treeId); + if (ul == null) { return false; } + var ret = expandCollapseList(ul,nodeOpenClass,itemId); + if (ret) { + var o = document.getElementById(itemId); + if (o.scrollIntoView) { + o.scrollIntoView(false); + } + } +} + +// Performs 3 functions: +// a) Expand all nodes +// b) Collapse all nodes +// c) Expand all nodes to reach a certain ID +function expandCollapseList(ul,cName,itemId) { + if (!ul.childNodes || ul.childNodes.length==0) { return false; } + // Iterate LIs + for (var itemi=0;itemijLSDt>$ tpUk}_OuXTq!UNr$dn{e^8y4MN-g@gq%39AN{j|tS=f3~5*I;0<1^_HKAv6F0 literal 0 HcmV?d00001 diff --git a/docs/source/_static/scripts.js b/docs/source/_static/scripts.js new file mode 100644 index 0000000..3b3ac55 --- /dev/null +++ b/docs/source/_static/scripts.js @@ -0,0 +1,52 @@ +function cleanUpText(codebox){ + /// Not currently used + /// Strips a whole IPython session of input and output prompts + //escape quotation marks + codebox = codebox.replace(/"/g, "\'"); + + // newlines + codebox = codebox.replace(/[\r\n|\r|\n]$/g, ""); // remove at end + codebox = codebox.replace(/[\r\n|\r|\n]+/g, "\\n"); + // prompts + codebox = codebox.replace(/In \[\d+\]: /g, ""); + codebox = codebox.replace(/Out \[\d+\]: /g, ""); + +return codebox; +} + +function htmlescape(text){ + return (text.replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'")) +} + +function scrapeText(codebox){ + /// Returns input lines cleaned of prompt1 and prompt2 + var lines = codebox.split('\n'); + var newlines = new Array(); + $.each(lines, function() { + if (this.match(/^In \[\d+]: /)){ + newlines.push(this.replace(/^(\s)*In \[\d+]: /,"")); + } + else if (this.match(/^(\s)*\.+:/)){ + newlines.push(this.replace(/^(\s)*\.+: /,"")); + } + + } + ); + return newlines.join('\\n'); +} + +$(document).ready( + function() { + // grab all code boxes + var ipythoncode = $(".highlight-ipython"); + $.each(ipythoncode, function() { + var codebox = scrapeText($(this).text()); + // give them a facebox pop-up with plain text code + $(this).append('View Code'); + $(this,"textarea").select(); + }); +}); diff --git a/docs/source/_templates/autosummary/attribute.rst b/docs/source/_templates/autosummary/attribute.rst new file mode 100644 index 0000000..a6ed600 --- /dev/null +++ b/docs/source/_templates/autosummary/attribute.rst @@ -0,0 +1,10 @@ +:orphan: + +{{ fullname | escape | underline}} + +.. currentmodule:: {{ module }} + +attribute + +.. auto{{ objtype }}:: {{ objname }} + diff --git a/docs/source/_templates/autosummary/class.rst b/docs/source/_templates/autosummary/class.rst new file mode 100644 index 0000000..64c1b11 --- /dev/null +++ b/docs/source/_templates/autosummary/class.rst @@ -0,0 +1,27 @@ +{% extends "!autosummary/class.rst" %} + +{% block methods %} +{% if methods %} + .. HACK -- the point here is that we don't want this to appear in the output, but the autosummary should still generate the pages. + .. autosummary:: + :toctree: + {% for item in all_methods %} + {%- if not item.startswith('_') or item in ['__call__'] %} + {{ name }}.{{ item }} + {%- endif -%} + {%- endfor %} +{% endif %} +{% endblock %} + +{% block attributes %} +{% if attributes %} + .. HACK -- the point here is that we don't want this to appear in the output, but the autosummary should still generate the pages. + .. autosummary:: + :toctree: + {% for item in all_attributes %} + {%- if not item.startswith('_') %} + {{ name }}.{{ item }} + {%- endif -%} + {%- endfor %} +{% endif %} +{% endblock %} diff --git a/docs/source/_templates/autosummary/member.rst b/docs/source/_templates/autosummary/member.rst new file mode 100644 index 0000000..f1f30e1 --- /dev/null +++ b/docs/source/_templates/autosummary/member.rst @@ -0,0 +1,11 @@ +:orphan: + +{{ fullname | escape | underline}} + +.. currentmodule:: {{ module }} + +member + +.. auto{{ objtype }}:: {{ objname }} + + diff --git a/docs/source/_templates/autosummary/method.rst b/docs/source/_templates/autosummary/method.rst new file mode 100644 index 0000000..8abda86 --- /dev/null +++ b/docs/source/_templates/autosummary/method.rst @@ -0,0 +1,10 @@ +:orphan: + +{{ fullname | escape | underline}} + +.. currentmodule:: {{ module }} + +method + +.. auto{{ objtype }}:: {{ objname }} + diff --git a/docs/source/_templates/autosummary/minimal_module.rst b/docs/source/_templates/autosummary/minimal_module.rst new file mode 100644 index 0000000..f0d9f00 --- /dev/null +++ b/docs/source/_templates/autosummary/minimal_module.rst @@ -0,0 +1,8 @@ +{{ fullname | escape | underline}} + +.. automodule:: {{ fullname }} + + {% block docstring %} + {% endblock %} + + diff --git a/docs/source/about.rst b/docs/source/about.rst new file mode 100644 index 0000000..6ea5564 --- /dev/null +++ b/docs/source/about.rst @@ -0,0 +1,68 @@ +.. module:: statsmodels + :synopsis: Statistical analysis in Python + + +.. currentmodule:: statsmodels + +***************** +About Statsmodels +***************** + +Background +---------- + +The ``models`` module of ``scipy.stats`` was originally written by Jonathan +Taylor. For some time it was part of scipy but was later removed. During +the Google Summer of Code 2009, ``statsmodels`` was corrected, tested, +improved and released as a new package. Since then, the statsmodels +development team has continued to add new models, plotting tools, and +statistical methods. + +Testing +------- + +Most results have been verified with at least one other statistical package: +R, Stata or SAS. The guiding principle for the initial rewrite and for +continued development is that all numbers have to be verified. Some +statistical methods are tested with Monte Carlo studies. While we strive to +follow this test-driven approach, there is no guarantee that the code is +bug-free and always works. Some auxiliary function are still insufficiently +tested, some edge cases might not be correctly taken into account, and the +possibility of numerical problems is inherent to many of the statistical +models. We especially appreciate any help and reports for these kind of +problems so we can keep improving the existing models. + +Code Stability +^^^^^^^^^^^^^^ + +The existing models are mostly settled in their user interface and we do not +expect many large changes going forward. For the existing code, although +there is no guarantee yet on API stability, we have long deprecation periods +in all but very special cases, and we try to keep changes that require +adjustments by existing users to a minimal level. For newer models we might +adjust the user interface as we gain more experience and obtain feedback. +These changes will always be noted in our release notes available in the +documentation. + +Financial Support +----------------- + +We are grateful for the financial support that we obtained for the +development of statsmodels: + + Google `www.google.com `_ : Google Summer of Code + (GSOC) 2009-2017. + + AQR `www.aqr.com `_ : financial sponsor for the work on + Vector Autoregressive Models (VAR) by Wes McKinney + +We would also like to thank our hosting providers, `github +`_ for the public code repository, `github.io +`_ for hosting our documentation +and `python.org `_ for making our downloads available +on PyPi. + +We also thank our continuous integration providers, +`Travis CI `_ and `AppVeyor `_ for +unit testing, and `Codecov `_ and `Coveralls `_ for +code coverage. diff --git a/docs/source/anova.rst b/docs/source/anova.rst new file mode 100644 index 0000000..91af1ca --- /dev/null +++ b/docs/source/anova.rst @@ -0,0 +1,45 @@ +.. currentmodule:: statsmodels.stats.anova + +.. _anova: + +ANOVA +===== + +Analysis of Variance models containing anova_lm for ANOVA analysis with a +linear OLSModel, and AnovaRM for repeated measures ANOVA, within ANOVA for +balanced data. + +Examples +-------- + +.. ipython:: python + + import statsmodels.api as sm + from statsmodels.formula.api import ols + + moore = sm.datasets.get_rdataset("Moore", "carData", + cache=True) # load data + data = moore.data + data = data.rename(columns={"partner.status": + "partner_status"}) # make name pythonic + moore_lm = ols('conformity ~ C(fcategory, Sum)*C(partner_status, Sum)', + data=data).fit() + + table = sm.stats.anova_lm(moore_lm, typ=2) # Type 2 ANOVA DataFrame + print(table) + +A more detailed example for `anova_lm` can be found here: + +* `ANOVA `__ + +Module Reference +---------------- + +.. module:: statsmodels.stats.anova + :synopsis: Analysis of Variance + +.. autosummary:: + :toctree: generated/ + + anova_lm + AnovaRM diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 0000000..1fd5351 --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,365 @@ +# -*- coding: utf-8 -*- +# +# statsmodels documentation build configuration file, created by +# sphinx-quickstart on Sat Jan 22 11:17:58 2011. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import contextlib +import json +import os +import sys +from os.path import dirname, join + +from statsmodels import __version__ + +# -- Monkey Patch ---------------------------------------------------------- +# Monkey patch contextlib.contextmanager.__doc__ to avoid noise +contextlib.contextmanager.__doc__ = '' + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +sys.path.insert(0, os.path.abspath('../sphinxext')) + +# -- General configuration ----------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc', + 'numpydoc', + 'sphinx.ext.doctest', + 'sphinx.ext.extlinks', + 'sphinx.ext.intersphinx', + 'sphinx.ext.todo', + # One of mathjax or imgmath + 'sphinx.ext.mathjax', + 'sphinx.ext.viewcode', + # 'sphinx.ext.autosummary', + 'sphinx.ext.inheritance_diagram', + 'matplotlib.sphinxext.plot_directive', + 'IPython.sphinxext.ipython_console_highlighting', + 'IPython.sphinxext.ipython_directive', + 'github', # for GitHub links, + # numpydoc or sphinx.ext.napoleon, but not both + 'numpydoc' + ] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +# source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'statsmodels' +copyright = u'2009-2018, Josef Perktold, Skipper Seabold, ' \ + u'Jonathan Taylor, statsmodels-developers' + +autosummary_generate = True +autoclass_content = 'class' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# + +release = __version__ +# The full version, including dev tag. +version = __version__ + +# set inheritance_graph_attrs +# you need graphviz installed to use this +# see: http://sphinx.pocoo.org/ext/inheritance.html +# and graphviz dot documentation http://www.graphviz.org/content/attrs +# NOTE: giving the empty string to size allows graphviz to figure out +# the size +inheritance_graph_attrs = dict(size='""', ratio="compress", fontsize=14, + rankdir="LR") + +# inheritance_node_attrs = dict(shape='ellipse', fontsize=14, height=0.75, +# color='dodgerblue1', style='filled') + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +# today = '' +# Else, today_fmt is used as the format for a strftime call. +# today_fmt = '%B %d, %Y' + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ['*/autosummary/*.rst'] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +# default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +add_function_parentheses = False + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +# add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +# show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +# modindex_common_prefix = [] + + +# Options for HTML output + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# html_theme = 'default' + +if 'htmlhelp' in sys.argv: + # html_theme = 'statsmodels_htmlhelp' #doesn't look nice yet + html_theme = 'default' + print('################# using statsmodels_htmlhelp ############') +else: + html_theme = 'statsmodels' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +html_theme_path = ['../themes'] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +# html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +# html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +html_logo = 'images/statsmodels_hybi_banner.png' + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +html_favicon = 'images/statsmodels_hybi_favico.ico' + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +# html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +# html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +html_sidebars = { + 'index': ['indexsidebar.html', 'searchbox.html', 'sidelinks.html']} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +# html_additional_pages = {} + +# If false, no module index is generated. +html_domain_indices = True + +# If false, no index is generated. +# html_use_index = True + +# If true, the index is split into individual pages for each letter. +# html_split_index = False + +# If true, links to the reST sources are added to the pages. +# html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +# html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +# html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +# html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +# html_file_suffix = None + +# Output file base name for HTML help builder. +htmlhelp_basename = 'statsmodelsdoc' + +# Options for LaTeX output + +# The paper size ('letter' or 'a4'). +# latex_paper_size = 'letter' + +# The font size ('10pt', '11pt' or '12pt'). +# latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, +# documentclass [howto/manual]). +latex_documents = [ + ('index', 'statsmodels.tex', u'statsmodels Documentation', + u'Josef Perktold, Skipper Seabold', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +# latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +# latex_use_parts = False + +# If true, show page references after internal links. +# latex_show_pagerefs = False + +# If true, show URL addresses after external links. +# latex_show_urls = False + +# Additional stuff for the LaTeX preamble. +# latex_preamble = '' + +# Documents to append as an appendix to all manuals. +# latex_appendices = [] + +# If false, no module index is generated. +# latex_domain_indices = True + +# imgmath options +imgmath_image_format = 'png' +imgmath_latex_preamble = r'\usepackage[active]{preview}' +imgmath_use_preview = True + +# Options for manual page output + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ('index', 'statsmodels', u'statsmodels Documentation', + [u'Josef Perktold, Skipper Seabold, Jonathan Taylor'], 1) +] + +# Options for Epub output + +# Bibliographic Dublin Core info. +epub_title = u'statsmodels' +epub_author = u'Josef Perktold, Skipper Seabold' +epub_publisher = u'Josef Perktold, Skipper Seabold' +epub_copyright = u'2009-2019, Josef Perktold, Skipper Seabold, ' \ + u'Jonathan Taylor, statsmodels-developers' + +# The language of the text. It defaults to the language option +# or en if the language is not set. +# epub_language = '' + +# The scheme of the identifier. Typical schemes are ISBN or URL. +# epub_scheme = '' + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# epub_identifier = '' + +# A unique identification for the text. +# epub_uid = '' + +# HTML files that should be inserted before the pages created by sphinx. +# The format is a list of tuples containing the path and title. +# epub_pre_files = [] + +# HTML files shat should be inserted after the pages created by sphinx. +# The format is a list of tuples containing the path and title. +# epub_post_files = [] + +# A list of files that should not be packed into the epub file. +# epub_exclude_files = [] + +# The depth of the table of contents in toc.ncx. +# epub_tocdepth = 3 + +# Allow duplicate toc entries. +# epub_tocdup = True + +# Sphinx napoleon options +# napoleon_google_docstring = True +# napoleon_numpy_docstring = True +# napoleon_include_init_with_doc = False +# napoleon_include_private_with_doc = False +# napoleon_include_special_with_doc = False +# napoleon_use_admonition_for_examples = False +# napoleon_use_admonition_for_notes = False +# napoleon_use_admonition_for_references = False +# napoleon_use_ivar = False +# napoleon_use_param = True +# napoleon_use_rtype = True +# napoleon_use_keyword = True +# napoleon_custom_sections = None + +# Numpydoc options +# numpydoc_attributes_as_param_list = True +# numpydoc_show_class_members = False +# numpydoc_show_inherited_class_members = True + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = { + 'numpy': ('https://docs.scipy.org/doc/numpy/', None), + 'python': ('https://docs.python.org/3/', None), + 'pydagogue': ('https://matthew-brett.github.io/pydagogue/', None), + 'patsy': ('https://patsy.readthedocs.io/en/latest/', None), + 'pandas': ('https://pandas.pydata.org/pandas-docs/stable/', None), +} + +plot_basedir = join(dirname(dirname(os.path.abspath(__file__))), 'source') + +# ghissue config +github_project_url = "https://github.com/statsmodels/statsmodels" + +example_context = json.load(open('examples/landing.json')) +html_context = {'examples': example_context} + +# --------------- DOCTEST ------------------- +doctest_global_setup = """ +import statsmodels.api as sm +import statsmodels.formula.api as smf +import numpy as np +import scipy.stats as stats +import matplotlib.pyplot as plt +import pandas as pd +""" + +extlinks = {'pr': ('https://github.com/statsmodels/statsmodels/pull/%s', + 'PR #'), + 'issue': ('https://github.com/statsmodels/statsmodels/issues/%s', + 'Issue #') + } diff --git a/docs/source/contingency_tables.rst b/docs/source/contingency_tables.rst new file mode 100644 index 0000000..a4927eb --- /dev/null +++ b/docs/source/contingency_tables.rst @@ -0,0 +1,300 @@ +.. currentmodule:: statsmodels.stats.contingency_tables + +.. _contingency_tables: + + +Contingency tables +================== + +Statsmodels supports a variety of approaches for analyzing contingency +tables, including methods for assessing independence, symmetry, +homogeneity, and methods for working with collections of tables from a +stratified population. + +The methods described here are mainly for two-way tables. Multi-way +tables can be analyzed using log-linear models. Statsmodels does not +currently have a dedicated API for loglinear modeling, but Poisson +regression in :class:`statsmodels.genmod.GLM` can be used for this +purpose. + +A contingency table is a multi-way table that describes a data set in +which each observation belongs to one category for each of several +variables. For example, if there are two variables, one with +:math:`r` levels and one with :math:`c` levels, then we have a +:math:`r \times c` contingency table. The table can be described in +terms of the number of observations that fall into a given cell of the +table, e.g. :math:`T_{ij}` is the number of observations that have +level :math:`i` for the first variable and level :math:`j` for the +second variable. Note that each variable must have a finite number of +levels (or categories), which can be either ordered or unordered. In +different contexts, the variables defining the axes of a contingency +table may be called **categorical variables** or **factor variables**. +They may be either **nominal** (if their levels are unordered) or +**ordinal** (if their levels are ordered). + +The underlying population for a contingency table is described by a +**distribution table** :math:`P_{i, j}`. The elements of :math:`P` +are probabilities, and the sum of all elements in :math:`P` is 1. +Methods for analyzing contingency tables use the data in :math:`T` to +learn about properties of :math:`P`. + +The :class:`statsmodels.stats.Table` is the most basic class for +working with contingency tables. We can create a ``Table`` object +directly from any rectangular array-like object containing the +contingency table cell counts: + +.. ipython:: python + + import numpy as np + import pandas as pd + import statsmodels.api as sm + + df = sm.datasets.get_rdataset("Arthritis", "vcd").data + + tab = pd.crosstab(df['Treatment'], df['Improved']) + tab = tab.loc[:, ["None", "Some", "Marked"]] + table = sm.stats.Table(tab) + +Alternatively, we can pass the raw data and let the Table class +construct the array of cell counts for us: + +.. ipython:: python + + data = df[["Treatment", "Improved"]] + table = sm.stats.Table.from_data(data) + + +Independence +------------ + +**Independence** is the property that the row and column factors occur +independently. **Association** is the lack of independence. If the +joint distribution is independent, it can be written as the outer +product of the row and column marginal distributions: + +.. math:: + + P_{ij} = \sum_k P_{ij} \cdot \sum_k P_{kj} \quad \text{for all} \quad i, j + +We can obtain the best-fitting independent distribution for our +observed data, and then view residuals which identify particular cells +that most strongly violate independence: + +.. ipython:: python + + print(table.table_orig) + print(table.fittedvalues) + print(table.resid_pearson) + +In this example, compared to a sample from a population in which the +rows and columns are independent, we have too many observations in the +placebo/no improvement and treatment/marked improvement cells, and too +few observations in the placebo/marked improvement and treated/no +improvement cells. This reflects the apparent benefits of the +treatment. + +If the rows and columns of a table are unordered (i.e. are nominal +factors), then the most common approach for formally assessing +independence is using Pearson's :math:`\chi^2` statistic. It's often +useful to look at the cell-wise contributions to the :math:`\chi^2` +statistic to see where the evidence for dependence is coming from. + +.. ipython:: python + + rslt = table.test_nominal_association() + print(rslt.pvalue) + print(table.chi2_contribs) + +For tables with ordered row and column factors, we can us the **linear +by linear** association test to obtain more power against alternative +hypotheses that respect the ordering. The test statistic for the +linear by linear association test is + +.. math:: + + \sum_k r_i c_j T_{ij} + +where :math:`r_i` and :math:`c_j` are row and column scores. Often +these scores are set to the sequences 0, 1, .... This gives the +'Cochran-Armitage trend test'. + +.. ipython:: python + + rslt = table.test_ordinal_association() + print(rslt.pvalue) + +We can assess the association in a :math:`r\times x` table by +constructing a series of :math:`2\times 2` tables and calculating +their odds ratios. There are two ways to do this. The **local odds +ratios** construct :math:`2\times 2` tables from adjacent row and +column categories. + +.. ipython:: python + + print(table.local_oddsratios) + taloc = sm.stats.Table2x2(np.asarray([[7, 29], [21, 13]])) + print(taloc.oddsratio) + taloc = sm.stats.Table2x2(np.asarray([[29, 7], [13, 7]])) + print(taloc.oddsratio) + +The **cumulative odds ratios** construct :math:`2\times 2` tables by +dichotomizing the row and column factors at each possible point. + +.. ipython:: python + + print(table.cumulative_oddsratios) + tab1 = np.asarray([[7, 29 + 7], [21, 13 + 7]]) + tacum = sm.stats.Table2x2(tab1) + print(tacum.oddsratio) + tab1 = np.asarray([[7 + 29, 7], [21 + 13, 7]]) + tacum = sm.stats.Table2x2(tab1) + print(tacum.oddsratio) + +A mosaic plot is a graphical approach to informally assessing +dependence in two-way tables. + +.. ipython:: python + + from statsmodels.graphics.mosaicplot import mosaic + fig, _ = mosaic(data, index=["Treatment", "Improved"]) + + +Symmetry and homogeneity +------------------------ + +**Symmetry** is the property that :math:`P_{i, j} = P_{j, i}` for +every :math:`i` and :math:`j`. **Homogeneity** is the property that +the marginal distribution of the row factor and the column factor are +identical, meaning that + +.. math:: + + \sum_j P_{ij} = \sum_j P_{ji} \forall i + +Note that for these properties to be applicable the table :math:`P` +(and :math:`T`) must be square, and the row and column categories must +be identical and must occur in the same order. + +To illustrate, we load a data set, create a contingency table, and +calculate the row and column margins. The :class:`Table` class +contains methods for analyzing :math:`r \times c` contingency tables. +The data set loaded below contains assessments of visual acuity in +people's left and right eyes. We first load the data and create a +contingency table. + +.. ipython:: python + + df = sm.datasets.get_rdataset("VisualAcuity", "vcd").data + df = df.loc[df.gender == "female", :] + tab = df.set_index(['left', 'right']) + del tab["gender"] + tab = tab.unstack() + tab.columns = tab.columns.get_level_values(1) + print(tab) + +Next we create a :class:`SquareTable` object from the contingency +table. + +.. ipython:: python + + sqtab = sm.stats.SquareTable(tab) + row, col = sqtab.marginal_probabilities + print(row) + print(col) + + +The ``summary`` method prints results for the symmetry and homogeneity +testing procedures. + +.. ipython:: python + + print(sqtab.summary()) + +If we had the individual case records in a dataframe called ``data``, +we could also perform the same analysis by passing the raw data using +the ``SquareTable.from_data`` class method. + +:: + + sqtab = sm.stats.SquareTable.from_data(data[['left', 'right']]) + print(sqtab.summary()) + + +A single 2x2 table +------------------ + +Several methods for working with individual 2x2 tables are provided in +the :class:`sm.stats.Table2x2` class. The ``summary`` method displays +several measures of association between the rows and columns of the +table. + +.. ipython:: python + + table = np.asarray([[35, 21], [25, 58]]) + t22 = sm.stats.Table2x2(table) + print(t22.summary()) + +Note that the risk ratio is not symmetric so different results will be +obtained if the transposed table is analyzed. + +.. ipython:: python + + table = np.asarray([[35, 21], [25, 58]]) + t22 = sm.stats.Table2x2(table.T) + print(t22.summary()) + + +Stratified 2x2 tables +--------------------- + +Stratification occurs when we have a collection of contingency tables +defined by the same row and column factors. In the example below, we +have a collection of 2x2 tables reflecting the joint distribution of +smoking and lung cancer in each of several regions of China. It is +possible that the tables all have a common odds ratio, even while the +marginal probabilities vary among the strata. The 'Breslow-Day' +procedure tests whether the data are consistent with a common odds +ratio. It appears below as the `Test of constant OR`. The +Mantel-Haenszel procedure tests whether this common odds ratio is +equal to one. It appears below as the `Test of OR=1`. It is also +possible to estimate the common odds and risk ratios and obtain +confidence intervals for them. The ``summary`` method displays all of +these results. Individual results can be obtained from the class +methods and attributes. + +.. ipython:: python + + data = sm.datasets.china_smoking.load_pandas() + + mat = np.asarray(data.data) + tables = [np.reshape(x.tolist(), (2, 2)) for x in mat] + + st = sm.stats.StratifiedTable(tables) + print(st.summary()) + + +Module Reference +---------------- + +.. module:: statsmodels.stats.contingency_tables + :synopsis: Contingency table analysis + +.. currentmodule:: statsmodels.stats.contingency_tables + +.. autosummary:: + :toctree: generated/ + + Table + Table2x2 + SquareTable + StratifiedTable + mcnemar + cochrans_q + +See also +-------- + +Scipy_ has several functions for analyzing contingency tables, +including Fisher's exact test which is not currently in Statsmodels. + +.. _Scipy: https://docs.scipy.org/doc/scipy-0.18.0/reference/stats.html#contingency-table-functions diff --git a/docs/source/contrasts.rst b/docs/source/contrasts.rst new file mode 100644 index 0000000..910e328 --- /dev/null +++ b/docs/source/contrasts.rst @@ -0,0 +1,237 @@ +:orphan: + +Patsy: Contrast Coding Systems for categorical variables +=========================================================== + +.. note:: This document is based heavily on `this excellent resource from UCLA `__. + +A categorical variable of K categories, or levels, usually enters a regression as a sequence of K-1 dummy variables. This amounts to a linear hypothesis on the level means. That is, each test statistic for these variables amounts to testing whether the mean for that level is statistically significantly different from the mean of the base category. This dummy coding is called Treatment coding in R parlance, and we will follow this convention. There are, however, different coding methods that amount to different sets of linear hypotheses. + +In fact, the dummy coding is not technically a contrast coding. This is because the dummy variables add to one and are not functionally independent of the model's intercept. On the other hand, a set of *contrasts* for a categorical variable with `k` levels is a set of `k-1` functionally independent linear combinations of the factor level means that are also independent of the sum of the dummy variables. The dummy coding isn't wrong *per se*. It captures all of the coefficients, but it complicates matters when the model assumes independence of the coefficients such as in ANOVA. Linear regression models do not assume independence of the coefficients and thus dummy coding is often the only coding that is taught in this context. + +To have a look at the contrast matrices in Patsy, we will use data from UCLA ATS. First let's load the data. + +.. ipython:: + :suppress: + + In [1]: import numpy as np + ...: np.set_printoptions(precision=4, suppress=True) + ...: + ...: from patsy.contrasts import ContrastMatrix + ...: + ...: def _name_levels(prefix, levels): + ...: return ["[%s%s]" % (prefix, level) for level in levels] + + In [2]: class Simple(object): + ...: def _simple_contrast(self, levels): + ...: nlevels = len(levels) + ...: contr = -1./nlevels * np.ones((nlevels, nlevels-1)) + ...: contr[1:][np.diag_indices(nlevels-1)] = (nlevels-1.)/nlevels + ...: return contr + ...: + ...: def code_with_intercept(self, levels): + ...: contrast = np.column_stack((np.ones(len(levels)), + ...: self._simple_contrast(levels))) + ...: return ContrastMatrix(contrast, _name_levels("Simp.", levels)) + ...: + ...: def code_without_intercept(self, levels): + ...: contrast = self._simple_contrast(levels) + ...: return ContrastMatrix(contrast, _name_levels("Simp.", levels[:-1])) + ...: + +Example Data +------------ + +.. ipython:: python + + import pandas + url = 'https://stats.idre.ucla.edu/stat/data/hsb2.csv' + hsb2 = pandas.read_csv(url) + +It will be instructive to look at the mean of the dependent variable, write, for each level of race ((1 = Hispanic, 2 = Asian, 3 = African American and 4 = Caucasian)). + +.. ipython:: python + + hsb2.groupby('race')['write'].mean() + +Treatment (Dummy) Coding +------------------------ + +Dummy coding is likely the most well known coding scheme. It compares each level of the categorical variable to a base reference level. The base reference level is the value of the intercept. It is the default contrast in Patsy for unordered categorical factors. The Treatment contrast matrix for race would be + +.. ipython:: python + + from patsy.contrasts import Treatment + levels = [1,2,3,4] + contrast = Treatment(reference=0).code_without_intercept(levels) + print(contrast.matrix) + +Here we used `reference=0`, which implies that the first level, Hispanic, is the reference category against which the other level effects are measured. As mentioned above, the columns do not sum to zero and are thus not independent of the intercept. To be explicit, let's look at how this would encode the `race` variable. + +.. ipython:: python + + contrast.matrix[hsb2.race-1, :][:20] + +This is a bit of a trick, as the `race` category conveniently maps to zero-based indices. If it does not, this conversion happens under the hood, so this won't work in general but nonetheless is a useful exercise to fix ideas. The below illustrates the output using the three contrasts above + +.. ipython:: python + + from statsmodels.formula.api import ols + mod = ols("write ~ C(race, Treatment)", data=hsb2) + res = mod.fit() + print(res.summary()) + +We explicitly gave the contrast for race; however, since Treatment is the default, we could have omitted this. + +Simple Coding +------------- + +Like Treatment Coding, Simple Coding compares each level to a fixed reference level. However, with simple coding, the intercept is the grand mean of all the levels of the factors. See :ref:`user-defined` for how to implement the Simple contrast. + + +.. ipython:: python + + contrast = Simple().code_without_intercept(levels) + print(contrast.matrix) + + mod = ols("write ~ C(race, Simple)", data=hsb2) + res = mod.fit() + print(res.summary()) + +Sum (Deviation) Coding +---------------------- + +Sum coding compares the mean of the dependent variable for a given level to the overall mean of the dependent variable over all the levels. That is, it uses contrasts between each of the first k-1 levels and level k In this example, level 1 is compared to all the others, level 2 to all the others, and level 3 to all the others. + +.. ipython:: python + + from patsy.contrasts import Sum + contrast = Sum().code_without_intercept(levels) + print(contrast.matrix) + + mod = ols("write ~ C(race, Sum)", data=hsb2) + res = mod.fit() + print(res.summary()) + +This correspons to a parameterization that forces all the coefficients to sum to zero. Notice that the intercept here is the grand mean where the grand mean is the mean of means of the dependent variable by each level. + +.. ipython:: python + + hsb2.groupby('race')['write'].mean().mean() + +Backward Difference Coding +-------------------------- + +In backward difference coding, the mean of the dependent variable for a level is compared with the mean of the dependent variable for the prior level. This type of coding may be useful for a nominal or an ordinal variable. + +.. ipython:: python + + from patsy.contrasts import Diff + contrast = Diff().code_without_intercept(levels) + print(contrast.matrix) + + mod = ols("write ~ C(race, Diff)", data=hsb2) + res = mod.fit() + print(res.summary()) + +For example, here the coefficient on level 1 is the mean of `write` at level 2 compared with the mean at level 1. Ie., + +.. ipython:: python + + res.params["C(race, Diff)[D.1]"] + hsb2.groupby('race').mean()["write"][2] - \ + hsb2.groupby('race').mean()["write"][1] + +Helmert Coding +-------------- + +Our version of Helmert coding is sometimes referred to as Reverse Helmert Coding. The mean of the dependent variable for a level is compared to the mean of the dependent variable over all previous levels. Hence, the name 'reverse' being sometimes applied to differentiate from forward Helmert coding. This comparison does not make much sense for a nominal variable such as race, but we would use the Helmert contrast like so: + +.. ipython:: python + + from patsy.contrasts import Helmert + contrast = Helmert().code_without_intercept(levels) + print(contrast.matrix) + + mod = ols("write ~ C(race, Helmert)", data=hsb2) + res = mod.fit() + print(res.summary()) + +To illustrate, the comparison on level 4 is the mean of the dependent variable at the previous three levels taken from the mean at level 4 + +.. ipython:: python + + grouped = hsb2.groupby('race') + grouped.mean()["write"][4] - grouped.mean()["write"][:3].mean() + +As you can see, these are only equal up to a constant. Other versions of the Helmert contrast give the actual difference in means. Regardless, the hypothesis tests are the same. + +.. ipython:: python + + k = 4 + 1./k * (grouped.mean()["write"][k] - grouped.mean()["write"][:k-1].mean()) + k = 3 + 1./k * (grouped.mean()["write"][k] - grouped.mean()["write"][:k-1].mean()) + + +Orthogonal Polynomial Coding +---------------------------- + +The coefficients taken on by polynomial coding for `k=4` levels are the linear, quadratic, and cubic trends in the categorical variable. The categorical variable here is assumed to be represented by an underlying, equally spaced numeric variable. Therefore, this type of encoding is used only for ordered categorical variables with equal spacing. In general, the polynomial contrast produces polynomials of order `k-1`. Since `race` is not an ordered factor variable let's use `read` as an example. First we need to create an ordered categorical from `read`. + +.. ipython:: python + + _, bins = np.histogram(hsb2.read, 3) + try: # requires numpy master + readcat = np.digitize(hsb2.read, bins, True) + except: + readcat = np.digitize(hsb2.read, bins) + hsb2['readcat'] = readcat + hsb2.groupby('readcat').mean()['write'] + +.. ipython:: python + + from patsy.contrasts import Poly + levels = hsb2.readcat.unique().tolist() + contrast = Poly().code_without_intercept(levels) + print(contrast.matrix) + + mod = ols("write ~ C(readcat, Poly)", data=hsb2) + res = mod.fit() + print(res.summary()) + +As you can see, readcat has a significant linear effect on the dependent variable `write` but not a significant quadratic or cubic effect. + +.. _user-defined: + +User-Defined Coding +------------------- + +If you want to use your own coding, you must do so by writing a coding class that contains a code_with_intercept and a code_without_intercept method that return a `patsy.contrast.ContrastMatrix` instance. + +.. ipython:: + + In [1]: from patsy.contrasts import ContrastMatrix + ...: + ...: def _name_levels(prefix, levels): + ...: return ["[%s%s]" % (prefix, level) for level in levels] + + In [2]: class Simple(object): + ...: def _simple_contrast(self, levels): + ...: nlevels = len(levels) + ...: contr = -1./nlevels * np.ones((nlevels, nlevels-1)) + ...: contr[1:][np.diag_indices(nlevels-1)] = (nlevels-1.)/nlevels + ...: return contr + ...: + ...: def code_with_intercept(self, levels): + ...: contrast = np.column_stack((np.ones(len(levels)), + ...: self._simple_contrast(levels))) + ...: return ContrastMatrix(contrast, _name_levels("Simp.", levels)) + ...: + ...: def code_without_intercept(self, levels): + ...: contrast = self._simple_contrast(levels) + ...: return ContrastMatrix(contrast, _name_levels("Simp.", levels[:-1])) + + In [3]: mod = ols("write ~ C(race, Simple)", data=hsb2) + ...: res = mod.fit() + ...: print(res.summary()) diff --git a/docs/source/datasets/dataset_proposal.rst b/docs/source/datasets/dataset_proposal.rst new file mode 100644 index 0000000..684bb2f --- /dev/null +++ b/docs/source/datasets/dataset_proposal.rst @@ -0,0 +1,151 @@ +:orphan: + +.. _dataset_proposal: + +Dataset for statmodels: design proposal +=============================================== + +One of the thing numpy/scipy is missing now is a set of datasets, available for +demo, courses, etc. For example, R has a set of dataset available at the core. + +The expected usage of the datasets are the following: + + - examples, tutorials for model usage + - testing of model usage vs. other statistical packages + +That is, a dataset is not only data, but also some meta-data. The goal of this +proposal is to propose common practices for organizing the data, in a way which +is both straightforward, and does not prevent specific usage of the data. + +Background +---------- + +This proposal was adapted from David Cournapeau's original proposal for a +datasets package for scipy and the learn scikit. It has been adapted for use +in the statsmodels scikit. The structure of the datasets itself, while +specific to statsmodels, should be general enough such that it might be used +for other types of data (e.g., in the learn scikit or scipy itself). + +Organization +------------ + +Each dataset is a directory in the `datasets` directory and defines a python +package (e.g. has the __init__.py file). Each package is expected to define the +function load, returning the corresponding data. For example, to access datasets +data1, you should be able to do:: + + >>> from statsmodels.datasets.data1 import load + >>> d = load() # -> d is a Dataset object, see below + +The `load` function is expected to return the `Dataset` object, which has certain +common attributes that make it readily usable in tests and examples. Load can do +whatever it wants: fetching data from a file (python script, csv file, etc...), +generating random data, downloading from the Internet, etc. The `load` function +will return the data as a pandas DataFrame. + +It is strongly recommended that each dataset directory contain a csv file with +the dataset and its variables in the same form as returned by load so that the +dataset can easily be loaded into other statistical packages. In addition, an +optional (though recommended) sub-directory src should contain the dataset in +its original form if it was "cleaned" (ie., variable transformations) in order +to put it into the format needed for statsmodels. Some special variables must +be defined for each package, containing a Python string: + + - COPYRIGHT: copyright information + - SOURCE: where the data are coming from + - DESCHOSRT: short description + - DESCLONG: long description + - NOTE: some notes on the datasets. + +See `datasets/data_template.py` for more information. + +Format of the data +------------------ + +This is strongly suggested a practice for the `Dataset` object returned by the +load function. Instead of using classes to provide meta-data, the Bunch pattern +is used. + +:: + + class Bunch(dict): + def __init__(self,**kw): + dict.__init__(self,kw) + self.__dict__ = self + +See this `Reference `_ + +In practice, you can use :: + + >>> from statsmodels.datasets import Dataset + +as the default collector as in `datasets/data_template.py`. + +The advantage of the Bunch pattern is that it preserves look-up by attribute. +The key goals are: + + - For people who just want the data, there is no extra burden + - For people who need more, they can easily extract what they need from + the returned values. Higher level abstractions can be built easily + from this model. + - All possible datasets should fit into this model. + +For the datasets to be useful in statsmodels the Dataset object +returned by load has the following conventions and attributes: + + - Calling the object itself returns the plain ndarray of the full dataset. + - `data`: A recarray containing the actual data. It is assumed + that all of the data can safely be cast to a float at this point. + - `raw_data`: This is the plain ndarray version of 'data'. + - `names`: this returns data.dtype.names so that name[i] is the i-th + column in 'raw_data'. + - `endog`: this value is provided for convenience in tests and examples + - `exog`: this value is provided for convenience in tests and examples + - `endog_name`: the name of the endog attribute + - `exog_name`: the names of the exog attribute + +This contains enough information to get all useful information through +introspection and simple functions. Further, attributes are easily added that +may be useful for other packages. + +Adding a dataset +---------------- + +See the :ref:`notes on adding a dataset `. + +Example Usage +------------- + +:: + + >>> from statsmodels import datasets + >>> data = datasets.longley.load(as_pandas=True) + +Remaining problems: +------------------- + + - If the dataset is big and cannot fit into memory, what kind of API do + we want to avoid loading all the data in memory? Can we use memory + mapped arrays ? + - Missing data: I thought about subclassing both record arrays and + masked arrays classes, but I don't know if this is feasable, or even + makes sense. I have the feeling that some Data mining software use + Nan (for example, weka seems to use float internally), but this + prevents them from representing integer data. + - What to do with non-float data, i.e., strings or categorical variables? + + +Current implementation +---------------------- + +An implementation following the above design is available in `statsmodels`. + + +Note +---- + +Although the datasets package emerged from the learn package, we try to keep it +independent from everything else, that is once we agree on the remaining +problems and where the package should go, it can easily be put elsewhere +without too much trouble. If there is interest in re-using the datasets package, +please contact the developers on the `mailing list `_. diff --git a/docs/source/datasets/index.rst b/docs/source/datasets/index.rst new file mode 100644 index 0000000..92cefb0 --- /dev/null +++ b/docs/source/datasets/index.rst @@ -0,0 +1,149 @@ +.. _datasets: + +.. currentmodule:: statsmodels.datasets + +.. ipython:: python + :suppress: + + import numpy as np + np.set_printoptions(suppress=True) + +The Datasets Package +==================== + +``statsmodels`` provides data sets (i.e. data *and* meta-data) for use in +examples, tutorials, model testing, etc. + +Using Datasets from Stata +------------------------- + +.. autosummary:: + :toctree: ./ + + webuse + +Using Datasets from R +--------------------- + +The `Rdatasets project `__ gives access to the datasets available in R's core datasets package and many other common R packages. All of these datasets are available to statsmodels by using the :func:`get_rdataset` function. The actual data is accessible by the ``data`` attribute. For example: + +.. ipython:: python + + import statsmodels.api as sm + duncan_prestige = sm.datasets.get_rdataset("Duncan", "carData") + print(duncan_prestige.__doc__) + duncan_prestige.data.head(5) + + +R Datasets Function Reference +----------------------------- + + +.. autosummary:: + :toctree: ./ + + get_rdataset + get_data_home + clear_data_home + + +Available Datasets +------------------ + +.. toctree:: + :maxdepth: 1 + :glob: + + generated/* + +Usage +----- + +Load a dataset: + +.. ipython:: python + + import statsmodels.api as sm + data = sm.datasets.longley.load_pandas() + +The `Dataset` object follows the bunch pattern explained in :ref:`proposal `. The full dataset is available in the ``data`` attribute. + +.. ipython:: python + + data.data + +Most datasets hold convenient representations of the data in the attributes `endog` and `exog`: + +.. ipython:: python + + data.endog.iloc[:5] + data.exog.iloc[:5,:] + +Univariate datasets, however, do not have an `exog` attribute. + +Variable names can be obtained by typing: + +.. ipython:: python + + data.endog_name + data.exog_name + +If the dataset does not have a clear interpretation of what should be an +`endog` and `exog`, then you can always access the `data` or `raw_data` +attributes. This is the case for the `macrodata` dataset, which is a collection +of US macroeconomic data rather than a dataset with a specific example in mind. +The `data` attribute contains a record array of the full dataset and the +`raw_data` attribute contains an ndarray with the names of the columns given +by the `names` attribute. + +.. ipython:: python + + type(data.data) + type(data.raw_data) + data.names + +Loading data as pandas objects +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +For many users it may be preferable to get the datasets as a pandas DataFrame or +Series object. Each of the dataset modules is equipped with a ``load_pandas`` +method which returns a ``Dataset`` instance with the data readily available as pandas objects: + +.. ipython:: python + + data = sm.datasets.longley.load_pandas() + data.exog + data.endog + +The full DataFrame is available in the ``data`` attribute of the Dataset object + +.. ipython:: python + + data.data + + +With pandas integration in the estimation classes, the metadata will be attached +to model results: + +.. ipython:: python + :okwarning: + + y, x = data.endog, data.exog + res = sm.OLS(y, x).fit() + res.params + res.summary() + +Extra Information +^^^^^^^^^^^^^^^^^ + +If you want to know more about the dataset itself, you can access the +following, again using the Longley dataset as an example :: + + >>> dir(sm.datasets.longley)[:6] + ['COPYRIGHT', 'DESCRLONG', 'DESCRSHORT', 'NOTE', 'SOURCE', 'TITLE'] + +Additional information +---------------------- + +* The idea for a datasets package was originally proposed by David Cournapeau and can be found :ref:`here ` with updates by Skipper Seabold. +* To add datasets, see the :ref:`notes on adding a dataset `. diff --git a/docs/source/dev/dataset_notes.rst b/docs/source/dev/dataset_notes.rst new file mode 100644 index 0000000..e3934c5 --- /dev/null +++ b/docs/source/dev/dataset_notes.rst @@ -0,0 +1,68 @@ +.. _add_data: + +Datasets +======== + +For a list of currently available datasets and usage instructions, see the +:ref:`datasets page `. + +License +------- + +To be considered for inclusion in `statsmodels`, a dataset must be in the +public domain, distributed under a BSD-compatible license, or we must obtain +permission from the original author. + +Adding a dataset: An example +---------------------------- + +The Nile River data measures the volume of the discharge of the Nile River at +Aswan for the years 1871 to 1970. The data are copied from the paper of Cobb +(1978). + +**Step 1**: Create a directory `datasets/nile/` + +**Step 2**: Add `datasets/nile/nile.csv` and a new file `datasets/__init__.py` which contains :: + + from data import * + +**Step 3**: If `nile.csv` is a transformed/cleaned version of the original data, create a `nile/src` directory and include the original raw data there. In the `nile` case, this step is not necessary. + +**Step 4**: Copy `datasets/template_data.py` to `nile/data.py`. Edit `nile/data.py` by filling-in strings for COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCLONG, and NOTE. :: + + COPYRIGHT = """This is public domain.""" + TITLE = """Nile River Data""" + SOURCE = """ + Cobb, G.W. 1978. The Problem of the Nile: Conditional Solution to a Changepoint + Problem. Biometrika. 65.2, 243-251, + """ + + DESCRSHORT = """Annual Nile River Volume at Aswan, 1871-1970"" + + DESCRLONG = """Annual Nile River Volume at Aswan, 1871-1970. The units of + measurement are 1e9 m^{3}, and there is an apparent changepoint near 1898.""" + + NOTE = """ + Number of observations: 100 + Number of variables: 2 + Variable name definitions: + year - Year of observation + volume - Nile River volume at Aswan + + The data were originally used in Cobb (1987, See SOURCE). The author + acknowledges that the data were originally compiled from various sources by + Dr. Barbara Bell, Center for Astrophysics, Cambridge, Massachusetts. The data + set is also used as an example in many textbooks and software packages. + """ + +**Step 5:** Edit the docstring of the `load` function in `data.py` to specify +which dataset will be loaded. Also edit the path and the indices for the +`endog` and `exog` attributes. In the `nile` case, there is no `exog`, so +everything referencing `exog` is not used. The `year` variable is also not +used. + +**Step 6:** Edit the `datasets/__init__.py` to import the directory. + +That's it! The result can be found `here +`_ +for reference. diff --git a/docs/source/dev/examples.rst b/docs/source/dev/examples.rst new file mode 100644 index 0000000..cf3ac06 --- /dev/null +++ b/docs/source/dev/examples.rst @@ -0,0 +1,57 @@ +.. _examples: + +Examples +======== + +Examples are invaluable for new users who hope to get up and running quickly +with `statsmodels`, and they are extremely useful to those who wish to explore +new features of `statsmodels`. We hope to provide documentation and tutorials +for as many models and use-cases as possible! Please consider submitting an +example with any PR that introduces new functionality. + +User-contributed examples/tutorials/recipes can be placed on the +`statsmodels examples wiki page `_ +That wiki page is freely editable. Please post your cool tricks, +examples, and recipes on there! + +If you would rather have your example file officially accepted to the +`statsmodels` distribution and posted on this website, you will need to go +through the normal `patch submission process `_ +and follow the instructions that follow. + +File Format +----------- + +Examples are best contributed as IPython notebooks. Save your notebook with all +output cells cleared in ``examples/notebooks``. From the notebook save the pure +Python output to ``examples/python``. The first line of the Notebook *must* be +a header cell that contains a title for the notebook, if you want the notebook +to be included in the documentation. + + +The Example Gallery +------------------- + +We have a gallery of example notebooks available +`here `_. If you would +like your example to show up in this gallery, add a link to the notebook in +``docs/source/examples/landing.json``. For the thumbnail, take a screenshot of +what you think is the best "hook" for the notebook. The image will be displayed +at 360 x 225 (W x H). It's best to save the image as a PNG with a resolution +that is some multiple of 360 x 225 (720 x 450 is preferred). + +Please remember to shrink the PNG file, if you can. +`This website `_ can help with that. + + +Before submitting a PR +---------------------- + +To save you some time and to make the new examples nicely fit into the +existing ones consider the following points. + +**Look at examples source code** to get a feel for how statsmodels examples +should look like. + +**Build the docs** by running `make html` from the docs directory to see how +your example looks in the fully rendered html pages. diff --git a/docs/source/dev/get_involved.rst b/docs/source/dev/get_involved.rst new file mode 100644 index 0000000..ce957f6 --- /dev/null +++ b/docs/source/dev/get_involved.rst @@ -0,0 +1,37 @@ +Get Involved +============ + +Where to Start? +--------------- + +Use grep or download a tool like `grin `__ +to search the code for TODO notes:: + + grin -i -I "*.py*" todo + +This shows almost 700 TODOs in the code base right now. Feel free to inquire on +the `mailing list `_ +about any of these. + +Sandbox +------- + +We currently have a large amount code in the :ref:`sandbox`. The medium term +goal is to move much of this to feature branches as it gets worked on and +remove the sandbox folder. Many of these models and functions are close to +done, however, and we welcome any and all contributions to complete them, +including refactoring, documentation, and tests. These models include +generalized additive models (GAM), information theoretic models such as +maximum entropy, survival models, systems of equation models, restricted least +squares, panel data models, and time series models such as (G)ARCH. + +.. .. toctree:: +.. :maxdepth: 4 +.. +.. ../sandbox + +Contribute an Example +--------------------- + +Contribute an :ref:`example `, add some technical documentation, or +contribute a statistics tutorial. diff --git a/docs/source/dev/git_notes.rst b/docs/source/dev/git_notes.rst new file mode 100644 index 0000000..bce8357 --- /dev/null +++ b/docs/source/dev/git_notes.rst @@ -0,0 +1,260 @@ +.. _git_notes: + +Working with the statsmodels Code +================================= + +Github +------ + +The `statsmodels` code base is hosted on `Github `_. To +contribute you will need to `sign up for a free Github account `_. + +Version Control and Git +----------------------- + +We use the `Git `_ version control system for development. +Git allows many people to work together on the same project. In a nutshell, it +allows you to make changes to the code independent of others who may also be +working on the code and allows you to easily contribute your changes to the +codebase. It also keeps a complete history of all changes to the code, so you +can easily undo changes or see when a change was made, by whom, and why. + +To install and configure Git, and to setup SSH keys, see +`setting up git `_. + +To learn more about Git, you may want to visit: + ++ `Git documentation (book and videos) `_ ++ `Github help pages `_ ++ `NumPy documentation `_ ++ `Matthew Brett's Pydagogue `_ + +Below, we describe the bare minimum git commands you need to contribute to +`statsmodels`. + +Statsmodels Git/Github Workflow +------------------------------- + +Forking and cloning +~~~~~~~~~~~~~~~~~~~ + +After setting up git, you need to fork the main `statsmodels` repository. To do +this, visit the `statsmodels project page +`_ and hit the fork button (see +instructions for +`forking a repo `_ for details). +This should take you to your fork's page. + +Then, you want to clone the fork to your machine:: + + git clone https://github.com/your-user-name/statsmodels + cd statsmodels + git remote add upstream https://github.com/statsmodels/statsmodels + git fetch --all + +The third line sets-up a read-only connection to the upstream statsmodels +repository. This will allow you to periodically update your local code with +changes in the upstream. The final command fetches both your repository and +the upstream statsmodels repository. + +Create a Branch +~~~~~~~~~~~~~~~ + +All changes to the code should be made in a feature branch. To create a branch, type:: + + git checkout master + git rebase upstream/master + git checkout -b shiny-new-feature + +The first two lines ensure you are starting from an up-to-date version of the upstream +statsmodels repository. The third creates and checkout a new branch. + +Doing:: + + git branch + +will give something like:: + + * shiny-new-feature + master + +to indicate that you are now on the `shiny-new-feature` branch. + +Making changes +~~~~~~~~~~~~~~ + +Hack away! Make any changes that you want, but please keep the work in your +branch completely confined to one specific topic, bugfix, or feature +implementation. You can work across multiple files and have many commits, but +the changes should all be related to the feature of the feature branch, +whatever that may be. + +Now imagine that you changed the file `foo.py`. You can see your changes by +typing:: + + git status + +This will print something like:: + + # On branch shiny-new-feature + # Changes not staged for commit: + # (use "git add ..." to update what will be committed) + # (use "git checkout -- ..." to discard changes in working directory) + # + # modified: relative/path/to/foo.py + # + no changes added to commit (use "git add" and/or "git commit -a") + +Before you can commit these changes, you have to `add`, or `stage`, the +changes. You can do this by typing:: + + git add path/to/foo.py + +Then check the status to make sure your commit looks okay:: + + git status + +should give something like:: + + # On branch shiny-new-feature + # Changes to be committed: + # (use "git reset HEAD ..." to unstage) + # + # modified: /relative/path/to/foo.py + # + +Pushing your changes +~~~~~~~~~~~~~~~~~~~~ + +At any time you can push your feature branch (and any changes) to your github +(fork) repository by:: + + git push + +although the first time you will need to run + + git push --set-upstream origin shiny-new-feature + +to instruct git to set the current branch to track its corresponding branch in +your github repository. + +You can see the remote repositories by:: + + git remote -v + +If you added the upstream repository as described above you will see something +like:: + + origin https://github.com/yourname/statsmodels.git (fetch) + origin https://github.com/yourname/statsmodels.git (push) + upstream https://github.com/statsmodels/statsmodels.git (fetch) + upstream https://github.com/statsmodels/statsmodels.git (push) + +Before you push any commits, however, it is *highly* recommended that you make +sure what you are pushing makes sense and looks clean. You can review your +change history by:: + + git log --oneline --graph + +It pays to take care of things locally before you push them to github. So when +in doubt, don't push. Also see the advice on keeping your history clean in +:ref:`merge-vs-rebase`. + +.. _pull-requests: + +Pull Requests +~~~~~~~~~~~~~ + +When you are ready to ask for a code review, we recommend that you file a pull +request. Before you do so you should check your changeset yourself. You can do +this by using `compare view +`__ on github. + +#. Navigate to your repository on github. +#. Click on `Branch List` +#. Click on the `Compare` button for your feature branch, `shiny-new-feature`. +#. Select the `base` and `compare` branches, if necessary. This will be `master` and + `shiny-new-feature`, respectively. +#. From here you will see a nice overview of your changes. If anything is amiss, you can fix it. + +If everything looks good you are read to make a `pull request `__. + +#. Navigate to your repository on github. +#. Click on the `Pull Request` button. +#. You can then click on `Commits` and `Files Changed` to make sure everything looks okay one last time. +#. Write a description of your changes in the `Preview Discussion` tab. +#. Click `Send Pull Request`. + +Your request will then be reviewed. If you need to go back and make more +changes, you can make them in your branch and push them to github and the pull +request will be automatically updated. + +One last thing to note. If there has been a lot of work in upstream/master +since you started your patch, you might want to rebase. However, you can +probably get away with not rebasing if these changes are unrelated to the work +you have done in the `shiny-new-feature` branch. If you can avoid it, then +don't rebase. If you have to, try to do it once and when you are at the end of +your changes. Read on for some notes on :ref:`merge-vs-rebase`. + +Advanced Topics +--------------- + +.. _merge-vs-rebase: + +Merging vs. Rebasing +~~~~~~~~~~~~~~~~~~~~ + +This is a topic that has been discussed at great length and with considerable +more expertise than we can offer here. This section will provide some resources +for further reading and some advice. The focus, though, will be for those who +wish to submit pull requests for a feature branch. For these cases rebase +should be preferred. + +A rebase replays commits from one branch on top of another branch to preserve a +linear history. Recall that your commits were tested against a (possibly) older +version of master from which you started your branch, so if you rebase, you +could introduce bugs. However, if you have only a few commits, this might not +be such a concern. One great place to start learning about rebase is +:ref:`rebasing without tears `. In particular, `heed +the warnings +`__. +Namely, **always make a new branch before doing a rebase**. This is good +general advice for working with git. I would also add **never use rebase on +work that has already been published**. If another developer is using your +work, don't rebase!! + +As for merging, **never merge from trunk into your feature branch**. You will, +however, want to check that your work will merge cleanly into trunk. This will +help out the reviewers. You can do this in your local repository by merging +your work into your master (or any branch that tracks remote master) and +:ref:`run-tests`. + +Deleting Branches +~~~~~~~~~~~~~~~~~ + +Once your feature branch is accepted into upstream, you might want to get rid +of it. First you'll want to merge upstream master into your branch. That way +git will know that it can safely delete your branch:: + + git fetch upstream + git checkout master + git merge upstream/master + +Then you can just do:: + + git branch -d shiny-new-feature + +Make sure you use a lower-case -d. That way, git will complain if your feature +branch has not actually been merged. The branch will still exist on github +however. To delete the branch on github, do:: + + git push origin :shiny-new-feature branch + +.. Squashing with Rebase +.. ^^^^^^^^^^^^^^^^^^^^^ + +.. You've made a bunch of incremental commits, but you think they might be better off together as one +.. commit. You can do this with an interactive rebase. As usual, **only do this when you have local +.. commits. Do not edit the history of changes that have been pushed.** + +.. see this reference http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html diff --git a/docs/source/dev/images/git_merge.png b/docs/source/dev/images/git_merge.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad3cc312285bb7da12c8f3719b35c795647e856 GIT binary patch literal 35680 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 KM829$$o~Pe+w`aa literal 0 HcmV?d00001 diff --git a/docs/source/dev/index.rst b/docs/source/dev/index.rst new file mode 100644 index 0000000..118ca83 --- /dev/null +++ b/docs/source/dev/index.rst @@ -0,0 +1,106 @@ +Developer Page +============== + +This page explains how you can contribute to the development of `statsmodels` +by submitting patches, statistical tests, new models, or examples. + +`statsmodels` is developed on `Github +`_ using the `Git +`_ version control system. + +Submitting a Bug Report +----------------------- + +- Include a short, self-contained code snippet that reproduces the problem +- Specify the statsmodels version used. You can do this with ``sm.version.full_version`` +- If the issue looks to involve other dependencies, also include the output of ``sm.show_versions()`` + +Making Changes to the Code +-------------------------- + +First, review the :ref:git_notes section for an intro to the git version +control system. + +For a pull request to be accepted, you must meet the below requirements. This +greatly helps the job of maintaining and releasing the software a shared effort. + +- **One branch. One feature.** Branches are cheap and github makes it easy to + merge and delete branches with a few clicks. Avoid the temptation to lump in a + bunch of unrelated changes when working on a feature, if possible. This helps + us keep track of what has changed when preparing a release. +- Commit messages should be clear and concise. This means a subject line of + less than 80 characters, and, if necessary, a blank line followed by a commit + message body. We have an + `informal commit format standard `_ + that we try to adhere to. You can see what this looks like in practice by + ``git log --oneline -n 10``. If your commit references or closes a specific + issue, you can close it by mentioning it in the + `commit message `_. + (*For maintainers*: These suggestions go for Merge commit comments too. These are partially the record for release notes.) +- Code submissions must always include tests. See our notes on :ref:`testing`. +- Each function, class, method, and attribute needs to be documented using + docstrings. We conform to the + `numpy docstring standard `_. +- If you are adding new functionality, you need to add it to the documentation + by editing (or creating) the appropriate file in ``docs/source``. +- Make sure your documentation changes parse correctly. Change into the + top-level ``docs/`` directory and type:: + + make clean + make html + + Check that the build output does not have *any* warnings due to your changes. +- Follow `PEP8 `_ style guidelines + wherever possible. Compare your code to what's in master by running + ``git diff upstream/master -u -- "*.py" | flake8 --diff`` prior to submitting. +- Finally, please add your changes to the release notes. Open the + ``docs/source/release/versionX.X.rst`` file that has the version number of the + next release and add your changes to the appropriate section. + +How to Submit a Pull Request +---------------------------- + +So you want to submit a patch to `statsmodels` but aren't too familiar with +github? Here are the steps you need to take. + +1. `Fork `_ the + `statsmodels repository `_ on Github. +2. `Create a new feature branch `_. + Each branch must be self-contained, with a single new feature or bugfix. +3. Make sure the test suite passes. This includes testing on Python 3. The + easiest way to do this is to either enable `Travis-CI `_ + on your fork, or to make a pull request and check there. +4. `Submit a pull request `_ + +Pull requests are thoroughly reviewed before being accepted into the codebase. +If your pull request becomes out of date, rebase your pull request on the +latest version in the central repository. + + +Mailing List +------------ + +Conversations about development take place on the +`statsmodels mailing list `__. + +License +------- + +Statsmodels is released under +the `Modified (3-clause) BSD license `_. + +Contents +-------- + +.. toctree:: + :maxdepth: 3 + + git_notes + maintainer_notes + test_notes + naming_conventions + dataset_notes + examples + get_involved + internal + testing diff --git a/docs/source/dev/internal.rst b/docs/source/dev/internal.rst new file mode 100644 index 0000000..7f785cf --- /dev/null +++ b/docs/source/dev/internal.rst @@ -0,0 +1,84 @@ +.. _model: + + + +Internal Classes +================ + +The following summarizes classes and functions that are not intended to be +directly used, but of interest only for internal use or for a developer who +wants to extend on existing model classes. + + +Module Reference +---------------- + +Model and Results Classes +^^^^^^^^^^^^^^^^^^^^^^^^^ + +These are the base classes for both the estimation models and the results. +They are not directly useful, but layout the structure of the subclasses and +define some common methods. + +.. module:: statsmodels.base.model + :synopsis: Base classes that are inherited by models + +.. currentmodule:: statsmodels.base.model + +.. autosummary:: + :toctree: generated/ + + Model + LikelihoodModel + GenericLikelihoodModel + Results + LikelihoodModelResults + ResultMixin + GenericLikelihoodModelResults + +.. module:: statsmodels.stats.contrast + :synopsis: Classes for statistical test + +.. currentmodule:: statsmodels.stats.contrast + +.. autosummary:: + :toctree: generated/ + + ContrastResults + +.. inheritance-diagram:: statsmodels.base.model statsmodels.discrete.discrete_model statsmodels.regression.linear_model statsmodels.miscmodels.count + :parts: 3 + +.. inheritance-diagram:: statsmodels.regression.linear_model.GLS statsmodels.regression.linear_model.WLS statsmodels.regression.linear_model.OLS statsmodels.regression.linear_model.GLSAR + :parts: 1 + +Linear Model +^^^^^^^^^^^^ + +.. inheritance-diagram:: statsmodels.regression.linear_model + :parts: 1 + +Generalized Linear Model +^^^^^^^^^^^^^^^^^^^^^^^^ + +.. inheritance-diagram:: statsmodels.genmod.generalized_linear_model + statsmodels.genmod.families.family statsmodels.genmod.families.links + :parts: 1 + +Discrete Model +^^^^^^^^^^^^^^ + +.. inheritance-diagram:: statsmodels.discrete.discrete_model + :parts: 1 + +Robust Model +^^^^^^^^^^^^ + +.. inheritance-diagram:: statsmodels.robust.robust_linear_model + :parts: 1 + +Vector Autoregressive Model +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. inheritance-diagram:: statsmodels.tsa.vector_ar.var_model + :parts: 3 diff --git a/docs/source/dev/maintainer_notes.rst b/docs/source/dev/maintainer_notes.rst new file mode 100644 index 0000000..197e59f --- /dev/null +++ b/docs/source/dev/maintainer_notes.rst @@ -0,0 +1,274 @@ +Maintainer Notes +================ + +This is for those with read-write access to upstream. It is recommended to name +the upstream remote something to remind you that it is read-write:: + + git remote add upstream-rw git@github.com:statsmodels/statsmodels.git + git fetch upstream-rw + +Git Workflow +------------ + +Grabbing Changes from Others +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +If you need to push changes from others, you can link to their repository by doing:: + + git remote add contrib-name git://github.com/contrib-name/statsmodels.git + get fetch contrib-name + git branch shiny-new-feature --track contrib-name/shiny-new-feature + git checkout shiny-new-feature + +The rest of the below assumes you are on your or someone else's branch with the changes you +want to push upstream. + +.. _rebasing: + +Rebasing +^^^^^^^^ + +If there are only a few commits, you can rebase to keep a linear history:: + + git fetch upstream-rw + git rebase upstream-rw/master + +Rebasing will not automatically close the pull request however, if there is one, +so don't forget to do this. + +.. _merging: + +Merging +^^^^^^^ + +If there is a long series of related commits, then you'll want to merge. You +may ask yourself, :ref:`ff-no-ff`? See below for more on this choice. Once +decided you can do:: + + git fetch upstream-rw + git merge --no-ff upstream-rw/master + +Merging will automatically close the pull request on github. + +Check the History +^^^^^^^^^^^^^^^^^ + +This is very important. Again, any and all fixes should be made locally before +pushing to the repository:: + + git log --oneline --graph + +This shows the history in a compact way of the current branch. This:: + + git log -p upstream-rw/master.. + +shows the log of commits excluding those that can be reached from +upstream-rw/master, and including those that can be reached from current HEAD. +That is, those changes unique to this branch versus upstream-rw/master. See +:ref:`Pydagogue ` for more on using dots with log and +also for using :ref:`dots with diff `. + +Push Your Feature Branch +^^^^^^^^^^^^^^^^^^^^^^^^ + +All the changes look good? You can push your feature branch after +:ref:`merging` or :ref:`rebasing` by:: + + git push upstream-rw shiny-new-feature:master + +Cherry-Picking +^^^^^^^^^^^^^^ + +Say you are interested in some commit in another branch, but want to leave the +other ones for now. You can do this with a cherry-pick. Use `git log --oneline` +to find the commit that you want to cherry-pick. Say you want commit `dd9ff35` +from the `shiny-new-feature` branch. You want to apply this commit to master. +You simply do:: + + git checkout master + git cherry-pick dd9ff35 + +And that's all. This commit is now applied as a new commit in master. + +.. _ff-no-ff: + +Merging: To Fast-Forward or Not To Fast-Forward +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +By default, `git merge` is a fast-forward merge. What does this mean, and when +do you want to avoid this? + +.. figure:: images/git_merge.png + :alt: git merge diagram + :scale: 100% + :align: center + + (source `nvie.com `__, post `"A successful Git branching model" `__) + +The fast-forward merge does not create a merge commit. This means that the +existence of the feature branch is lost in the history. The fast-forward is the +default for Git basically because branches are cheap and, therefore, *usually* +short-lived. If on the other hand, you have a long-lived feature branch or are +following an iterative workflow on the feature branch (i.e. merge into master, +then go back to feature branch and add more commits), then it makes sense to +include only the merge in the main branch, rather than all the intermediate +commits of the feature branch, so you should use:: + + git merge --no-ff + +Handling Pull Requests +^^^^^^^^^^^^^^^^^^^^^^ + +You can apply a pull request through `fetch `__ +and `merge `__. +In your local copy of the main repo:: + + git checkout master + git remote add contrib-name git://github.com/contrib-name/statsmodels.git + git fetch contrib-name + git merge contrib-name/shiny-new-feature + +Check that the merge applies cleanly and the history looks good. Edit the merge +message. Add a short explanation of what the branch did along with a +'Closes gh-XXX.' string. This will auto-close the pull request and link the +ticket and closing commit. To automatically close the issue, you can use any +of:: + + gh-XXX + GH-XXX + #XXX + +in the commit message. Any and all problems need to be taken care of locally +before doing:: + + git push origin master + +Releasing +--------- + +1. Checkout master:: + + git checkout statsmodels/master + +2. Clean the working tree with:: + + git clean -xdf + + But you might want to do a dry-run first:: + + git clean -xdfn + +3. **Locally** tag the release. For a release candidate, for example:: + + git tag -a v0.10.0rc1 -m "Version 0.10.0 Release Candidate 1" 7b2fb29 + + or just:: + + git tag -a v0.10.0rc1 -m "Version 0.10.0 Release Candidate 1" + + to use the last commit in master. + +4. Checkout the tag:: + + git checkout tags/v0.10.0rc1 + +5. Build a sdist to ensure that that the build is clean:: + + python setup.py sdist --formats=gztar + + It is important that the build on the tar.gz file is the same as the tag. It must not be **dirty** + +6. If on a new minor release (major.minor.micro format) start a new maintenance branch, for example:: + + git checkout -b maintenance/0.10.x + + Any bug fixes and maintenance commits intended for the next micro release should be made + against master as usual, but tagged with the milestone for the micro release it is intended + for. Then merge into master as usual. When ready to do the backports, use the file + ``tools/backport_pr.py`` to identify which PRs need to be backported and to apply them to the + maintenance branch. The tag for the release should be made in the maintenance branch. + +7. Upload the source distribution to PyPI:: + + twine upload dist/* + + You might want to upload to test first:: + + twine upload --repository-url https://test.pypi.org/legacy/ dist/* + +8. Go back to the master branch, and add an empty commit:: + + git checkout statsmodels/master + git commit --allow-empty -m "Start of 0.11.0 development" + git tag -a v0.11.0.dev0 -m "Start of 0.11.0 development" + +9. Push everything to statsmodels:: + + git push --tags + + If a new branch was created:: + + git push --set-upstream origin maintenance/0.10.x + +10. Make an announcement, and inform maintainers of wheel builders. + +11. Profit? + +Releasing from Maintenance Branch +--------------------------------- + +Once any patches have been backported to a maintenance branch, the release steps are + +1. Checkout the branch:: + + git checkout maintenance/0.10.x + +2. Clean up thoroughly:: + + git clean -xdf + + +3. **Locally** tag the release:: + + git tag -a v0.10.0 -m "Version 0.10.0" + +4. Checkout the tag:: + + git checkout tags/v0.10.0 + +5. Build a sdist to ensure that that the build is clean:: + + python setup.py sdist --formats=gztar + + It is important that the build on the tar.gz file is the same as the tag. It must not be **dirty**. + +6. Upload the source distribution to PyPI ot PyPI test:: + + twine upload dist/* + + or:: + + twine upload --repository-url https://test.pypi.org/legacy/ dist/* + + +7. Push the tag to statsmodels:: + + git push --tags + + +8. Make an announcement, and inform maintainers of wheel builders. + + +Commit Comments +--------------- +Prefix commit messages in the master branch of the main shared repository with +the following:: + + ENH: Feature implementation + BUG: Bug fix + STY: Coding style changes (indenting, braces, code cleanup) + DOC: Sphinx documentation, docstring, or comment changes + CMP: Compiled code issues, regenerating C code with Cython, etc. + REL: Release related commit + TST: Change to a test, adding a test. Only used if not directly related to a bug. + REF: Refactoring changes diff --git a/docs/source/dev/naming_conventions.rst b/docs/source/dev/naming_conventions.rst new file mode 100644 index 0000000..a63173e --- /dev/null +++ b/docs/source/dev/naming_conventions.rst @@ -0,0 +1,96 @@ +Naming Conventions +------------------ + +File and Directory Names +~~~~~~~~~~~~~~~~~~~~~~~~ +Our directory tree stripped down looks something like:: + + statsmodels/ + __init__.py + api.py + discrete/ + __init__.py + discrete_model.py + tests/ + results/ + tsa/ + __init__.py + api.py + tsatools.py + stattools.py + arima_model.py + arima_process.py + vector_ar/ + __init__.py + var_model.py + tests/ + results/ + tests/ + results/ + stats/ + __init__.py + api.py + stattools.py + tests/ + tools/ + __init__.py + tools.py + decorators.py + tests/ + +The submodules are arranged by topic, `discrete` for discrete choice models, or `tsa` for time series +analysis. The submodules that can be import heavy contain an empty __init__.py, except for some testing +code for running tests for the submodules. The namespace to be imported is in `api.py`. That way, we +can import selectively and do not have to import a lot of code that we don't need. Helper functions are +usually put in files named `tools.py` and statistical functions, such as statistical tests are placed +in `stattools.py`. Everything has directories for :ref:`tests `. + +`endog` & `exog` +~~~~~~~~~~~~~~~~ + +Our working definition of a statistical model is an object that has +both endogenous and exogenous data defined as well as a statistical +relationship. In place of endogenous and exogenous one can often substitute +the terms left hand side (LHS) and right hand side (RHS), dependent and +independent variables, regressand and regressors, outcome and design, response +variable and explanatory variable, respectively. The usage is quite often +domain specific; however, we have chosen to use `endog` and `exog` almost +exclusively, since the principal developers of statsmodels have a background +in econometrics, and this feels most natural. This means that all of the +models are objects with `endog` and `exog` defined, though in some cases +`exog` is None for convenience (for instance, with an autoregressive process). +Each object also defines a `fit` (or similar) method that returns a +model-specific results object. In addition there are some functions, e.g. for +statistical tests or convenience functions. + +See also the related explanation in :ref:`endog_exog`. + +Variable Names +~~~~~~~~~~~~~~ +All of our models assume that data is arranged with variables in columns. Thus, internally the data +is all 2d arrays. By convention, we will prepend a `k_` to variable names that indicate moving over +axis 1 (columns), and `n_` to variables that indicate moving over axis 0 (rows). The main exception to +the underscore is that `nobs` should indicate the number of observations. For example, in the +time-series ARMA model we have:: + + `k_ar` - The number of AR lags included in the RHS variables + `k_ma` - The number of MA lags included in the RHS variables + `k_trend` - The number of trend variables included in the RHS variables + `k_exog` - The number of exogenous variables included in the RHS variables excluding the trend terms + `n_totobs` - The total number of observations for the LHS variables including the pre-sample values + + +Options +~~~~~~~ +We are using similar options in many classes, methods and functions. They +should follow a standardized pattern if they recurr frequently. :: + + `missing` ['none', 'drop', 'raise'] define whether inputs are checked for + nans, and how they are treated + `alpha` (float in (0, 1)) significance level for hypothesis tests and + confidence intervals, e.g. `alpha=0.05` + +patterns :: + + `return_xxx` : boolean to indicate optional or different returns + (not `ret_xxx`) diff --git a/docs/source/dev/test_notes.rst b/docs/source/dev/test_notes.rst new file mode 100644 index 0000000..5bcf240 --- /dev/null +++ b/docs/source/dev/test_notes.rst @@ -0,0 +1,160 @@ +.. _testing: + +Testing +======= + +Setting up development environment locally +------------------------------------------ +Follow our :ref:`installation instructions ` and set up a suitable +environment to build statsmodels from source. We recommend that you develop +using a development install of statsmodels:: + + python setup.py develop + +This will compile the C code and add statsmodels to your activate python +environment by creating links from your python environemnt's libraries +to the statsmodels source code. Therefore, changes to pure python code will +be immediately available to the user without a re-install. + +Test Driven Development +----------------------- +We strive to follow a `Test Driven Development (TDD) `_ pattern. +All models or statistical functions that are added to the main code base are to have +tests versus an existing statistical package, if possible. + +Introduction to pytest +---------------------- +Like many packages, statsmodels uses the `pytest testing system `__ and the convenient extensions in `numpy.testing `__. Pytest will find any file, directory, function, or class name that starts with ``test`` or ``Test`` (classes only). Test function should start with ``test``, test classes should start with ``Test``. These functions and classes should be placed in files with names beginning with ``test`` in a directory called ``tests``. + +.. _run-tests: + +Running the Test Suite +---------------------- + +You can run all the tests by:: + + >>> import statsmodels.api as sm + >>> sm.test() + +You can test submodules by:: + + >>> sm.discrete.test() + + +Running Tests using the command line +------------------------------------ +Test can also be run from the command line by calling ``pytest``. Tests can be run +at different levels: + +* Project level, which runs all tests. Running the entire test suite is slow + and normally this would only be needed if making deep changes to statsmodels. + +.. code-block:: bash + + pytest statsmodels + +* Folder level, which runs all tests below a folder + +.. code-block:: bash + + pytest statsmodels/regression/tests + +* File level, which runs all tests in a file + +.. code-block:: bash + + pytest statsmodels/regression/tests/test_regression.py + +* Class level, which runs all tests in a class + +.. code-block:: bash + + pytest statsmodels/regression/tests/test_regression.py::TestOLS + +* Test level, which runs a single test. The first example runs a test in a + class. The second runs a stand alone test. + +.. code-block:: bash + + pytest statsmodels/regression/tests/test_regression.py::TestOLS::test_missing + pytest statsmodels/regression/tests/test_regression.py::test_ridge + +How To Write A Test +------------------- +NumPy provides a good introduction to unit testing with pytest and NumPy extensions `here `__. It is worth a read for some more details. +Here, we will document a few conventions we follow that are worth mentioning. Often we want to test +a whole model at once rather than just one function, for example. The following is a pared down +version test_discrete.py. In this case, several different models with different options need to be +tested. The tests look something like + +.. code-block:: python + + from numpy.testing import assert_almost_equal + import statsmodels.api as sm + from results.results_discrete import Spector + + class CheckDiscreteResults(object): + """ + res2 are the results. res1 are the values from statsmodels + """ + + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, 4) + + decimal_tvalues = 4 + def test_tvalues(self): + assert_almost_equal(self.res1.params, self.res2.params, self.decimal_tvalues) + + # ... as many more tests as there are common results + + class TestProbitNewton(CheckDiscreteResults): + """ + Tests the Probit model using Newton's method for fitting. + """ + + @classmethod + def setup_class(cls): + # set up model + data = sm.datasets.spector.load() + data.exog = sm.add_constant(data.exog) + cls.res1 = sm.Probit(data.endog, data.exog).fit(method='newton', disp=0) + + # set up results + res2 = Spector.probit + cls.res2 = res2 + + # set up precision + cls.decimal_tvalues = 3 + + def test_model_specifc(self): + assert_almost_equal(self.res1.foo, self.res2.foo, 4) + +The main workhorse is the `CheckDiscreteResults` class. Notice that we can set the level of precision +for `tvalues` to be different than the default in the subclass `TestProbitNewton`. All of the test +classes have a ``@classmethod`` called ``setup_class``. Otherwise, pytest would reinstantiate the class +before every single test method. If the fitting of the model is time consuming, then this is clearly +undesirable. Finally, we have a script at the bottom so that we can run the tests should be running +the Python file. + +Test Results +------------ +The test results are the final piece of the above example. For many tests, especially those for the +models, there are many results against which you would like to test. It makes sense then to separate +the hard-coded results from the actual tests to make the tests more readable. If there are only a few +results it's not necessary to separate the results. We often take results from some other statistical +package. It is important to document where you got the results from and why they might differ from +the results that we get. Each tests folder has a results subdirectory. Consider the folder structure +for the discrete models:: + + tests/ + __init__.py + test_discrete.py + results/ + __init__.py + results_discrete.py + nbinom_resids.csv + +It is up to you how best to structure the results. In the discrete model example, you will notice +that there are result classes based around particular datasets with a method for loading different +model results for that dataset. You can also include text files that hold results to be loaded by +results classes if it is easier than putting them in the class itself. diff --git a/docs/source/dev/testing.rst b/docs/source/dev/testing.rst new file mode 100644 index 0000000..5d5650b --- /dev/null +++ b/docs/source/dev/testing.rst @@ -0,0 +1,18 @@ +Testing on Build Machines +------------------------- + +There are currently several places that statsmodels is automatically built and +tested against different dependency and Python versions and architectures. +Check these logs periodically, make sure everything looks okay, and fix any +failures: + +* `Travis CI `_ +* `Appveyor `_ + +The test coverage pages are here: + +* `Coveralls `_ +* `codecov `_ + +We use `Codacy `_ +to monitor code quality. diff --git a/docs/source/diagnostic.rst b/docs/source/diagnostic.rst new file mode 100644 index 0000000..f555b5a --- /dev/null +++ b/docs/source/diagnostic.rst @@ -0,0 +1,228 @@ +:orphan: + +.. _diagnostics: + +Regression Diagnostics and Specification Tests +============================================== + + +Introduction +------------ + +In many cases of statistical analysis, we are not sure whether our statistical +model is correctly specified. For example when using ols, then linearity and +homoscedasticity are assumed, some test statistics additionally assume that +the errors are normally distributed or that we have a large sample. +Since our results depend on these statistical assumptions, the results are +only correct of our assumptions hold (at least approximately). + +One solution to the problem of uncertainty about the correct specification is +to use robust methods, for example robust regression or robust covariance +(sandwich) estimators. The second approach is to test whether our sample is +consistent with these assumptions. + +The following briefly summarizes specification and diagnostics tests for +linear regression. + +Heteroscedasticity Tests +------------------------ + +For these test the null hypothesis is that all observations have the same +error variance, i.e. errors are homoscedastic. The tests differ in which kind +of heteroscedasticity is considered as alternative hypothesis. They also vary +in the power of the test for different types of heteroscedasticity. + +:py:func:`het_breuschpagan ` + Lagrange Multiplier Heteroscedasticity Test by Breusch-Pagan + +:py:func:`het_white ` + Lagrange Multiplier Heteroscedasticity Test by White + +:py:func:`het_goldfeldquandt ` + test whether variance is the same in 2 subsamples + + +Autocorrelation Tests +--------------------- + +This group of test whether the regression residuals are not autocorrelated. +They assume that observations are ordered by time. + +:py:func:`durbin_watson ` + - Durbin-Watson test for no autocorrelation of residuals + - printed with summary() + +:py:func:`acorr_ljungbox ` + - Ljung-Box test for no autocorrelation of residuals + - also returns Box-Pierce statistic + +:py:func:`acorr_breusch_godfrey ` + - Breusch-Pagan test for no autocorrelation of residuals + + +missing + - ? + + +Non-Linearity Tests +------------------- + +:py:func:`linear_harvey_collier ` + - Multiplier test for Null hypothesis that linear specification is + correct + +:py:func:`acorr_linear_rainbow ` + - Multiplier test for Null hypothesis that linear specification is + correct. + +:py:func:`acorr_linear_lm ` + - Lagrange Multiplier test for Null hypothesis that linear specification is + correct. This tests against specific functional alternatives. + +:py:func:`spec_white ` + - White's two-moment specification test with null hypothesis of homoscedastic + and correctly specified. + +Tests for Structural Change, Parameter Stability +------------------------------------------------ + +Test whether all or some regression coefficient are constant over the +entire data sample. + +Known Change Point +^^^^^^^^^^^^^^^^^^ + +OneWayLS : + - flexible ols wrapper for testing identical regression coefficients across + predefined subsamples (eg. groups) + +missing + - predictive test: Greene, number of observations in subsample is smaller than + number of regressors + + +Unknown Change Point +^^^^^^^^^^^^^^^^^^^^ + +:py:func:`breaks_cusumolsresid ` + - cusum test for parameter stability based on ols residuals + +:py:func:`breaks_hansen ` + - test for model stability, breaks in parameters for ols, Hansen 1992 + +:py:func:`recursive_olsresiduals ` + Calculate recursive ols with residuals and cusum test statistic. This is + currently mainly helper function for recursive residual based tests. + However, since it uses recursive updating and doesn't estimate separate + problems it should be also quite efficient as expanding OLS function. + +missing + - supLM, expLM, aveLM (Andrews, Andrews/Ploberger) + - R-structchange also has musum (moving cumulative sum tests) + - test on recursive parameter estimates, which are there? + + +Mutlicollinearity Tests +-------------------------------- + +conditionnum (statsmodels.stattools) + - -- needs test vs Stata -- + - cf Grene (3rd ed.) pp 57-8 + +numpy.linalg.cond + - (for more general condition numbers, but no behind the scenes help for + design preparation) + +Variance Inflation Factors + This is currently together with influence and outlier measures + (with some links to other tests here: http://www.stata.com/help.cgi?vif) + + +Normality and Distribution Tests +-------------------------------- + +:py:func:`jarque_bera ` + - printed with summary() + - test for normal distribution of residuals + +Normality tests in scipy stats + need to find list again + +:py:func:`omni_normtest ` + - test for normal distribution of residuals + - printed with summary() + +:py:func:`normal_ad ` + - Anderson Darling test for normality with estimated mean and variance + +:py:func:`kstest_normal ` :py:func:`lilliefors ` + Lilliefors test for normality, this is a Kolmogorov-Smirnov tes with for + normality with estimated mean and variance. lilliefors is an alias for + kstest_normal + +qqplot, scipy.stats.probplot + +other goodness-of-fit tests for distributions in scipy.stats and enhancements + - kolmogorov-smirnov + - anderson : Anderson-Darling + - likelihood-ratio, ... + - chisquare tests, powerdiscrepancy : needs wrapping (for binning) + + +Outlier and Influence Diagnostic Measures +----------------------------------------- + +These measures try to identify observations that are outliers, with large +residual, or observations that have a large influence on the regression +estimates. Robust Regression, RLM, can be used to both estimate in an outlier +robust way as well as identify outlier. The advantage of RLM that the +estimation results are not strongly influenced even if there are many +outliers, while most of the other measures are better in identifying +individual outliers and might not be able to identify groups of outliers. + +:py:class:`RLM ` + example from example_rlm.py :: + + import statsmodels.api as sm + + ### Example for using Huber's T norm with the default + ### median absolute deviation scaling + + data = sm.datasets.stackloss.load() + data.exog = sm.add_constant(data.exog) + huber_t = sm.RLM(data.endog, data.exog, M=sm.robust.norms.HuberT()) + hub_results = huber_t.fit() + print(hub_results.weights) + + And the weights give an idea of how much a particular observation is + down-weighted according to the scaling asked for. + +:py:class:`Influence ` + Class in stats.outliers_influence, most standard measures for outliers + and influence are available as methods or attributes given a fitted + OLS model. This is mainly written for OLS, some but not all measures + are also valid for other models. + Some of these statistics can be calculated from an OLS results instance, + others require that an OLS is estimated for each left out variable. + + - resid_press + - resid_studentized_external + - resid_studentized_internal + - ess_press + - hat_matrix_diag + - cooks_distance - Cook's Distance `Wikipedia `_ (with some other links) + - cov_ratio + - dfbetas + - dffits + - dffits_internal + - det_cov_params_not_obsi + - params_not_obsi + - sigma2_not_obsi + + + +Unit Root Tests +--------------- + +:py:func:`unitroot_adf ` + - same as adfuller but with different signature diff --git a/docs/source/discretemod.rst b/docs/source/discretemod.rst new file mode 100644 index 0000000..8e8800e --- /dev/null +++ b/docs/source/discretemod.rst @@ -0,0 +1,152 @@ +.. currentmodule:: statsmodels.discrete.discrete_model + + +.. _discretemod: + +Regression with Discrete Dependent Variable +=========================================== + +Regression models for limited and qualitative dependent variables. The module +currently allows the estimation of models with binary (Logit, Probit), nominal +(MNLogit), or count (Poisson, NegativeBinomial) data. + +Starting with version 0.9, this also includes new count models, that are still +experimental in 0.9, NegativeBinomialP, GeneralizedPoisson and zero-inflated +models, ZeroInflatedPoisson, ZeroInflatedNegativeBinomialP and +ZeroInflatedGeneralizedPoisson. + +See `Module Reference`_ for commands and arguments. + +Examples +-------- + +.. ipython:: python + :okwarning: + + # Load the data from Spector and Mazzeo (1980) + spector_data = sm.datasets.spector.load_pandas() + spector_data.exog = sm.add_constant(spector_data.exog) + + # Logit Model + logit_mod = sm.Logit(spector_data.endog, spector_data.exog) + logit_res = logit_mod.fit() + print(logit_res.summary()) + +Detailed examples can be found here: + + +* `Overview `__ +* `Examples `__ + +Technical Documentation +----------------------- + +Currently all models are estimated by Maximum Likelihood and assume +independently and identically distributed errors. + +All discrete regression models define the same methods and follow the same +structure, which is similar to the regression results but with some methods +specific to discrete models. Additionally some of them contain additional model +specific methods and attributes. + + +References +^^^^^^^^^^ + +General references for this class of models are:: + + A.C. Cameron and P.K. Trivedi. `Regression Analysis of Count Data`. + Cambridge, 1998 + + G.S. Madalla. `Limited-Dependent and Qualitative Variables in Econometrics`. + Cambridge, 1983. + + W. Greene. `Econometric Analysis`. Prentice Hall, 5th. edition. 2003. + +Module Reference +---------------- + +.. module:: statsmodels.discrete.discrete_model + :synopsis: Models for discrete data + +The specific model classes are: + +.. autosummary:: + :toctree: generated/ + + Logit + Probit + MNLogit + Poisson + NegativeBinomial + NegativeBinomialP + GeneralizedPoisson + +.. module:: statsmodels.discrete.count_model + +.. autosummary:: + :toctree: generated/ + + ZeroInflatedPoisson + ZeroInflatedNegativeBinomialP + ZeroInflatedGeneralizedPoisson + +.. module:: statsmodels.discrete.conditional_models + +.. autosummary:: + :toctree: generated/ + + ConditionalLogit + ConditionalMNLogit + ConditionalPoisson + +The specific result classes are: + +.. currentmodule:: statsmodels.discrete.discrete_model + +.. autosummary:: + :toctree: generated/ + + LogitResults + ProbitResults + CountResults + MultinomialResults + NegativeBinomialResults + GeneralizedPoissonResults + +.. currentmodule:: statsmodels.discrete.count_model + +.. autosummary:: + :toctree: generated/ + + ZeroInflatedPoissonResults + ZeroInflatedNegativeBinomialResults + ZeroInflatedGeneralizedPoissonResults + + +:class:`DiscreteModel` is a superclass of all discrete regression models. The +estimation results are returned as an instance of one of the subclasses of +:class:`DiscreteResults`. Each category of models, binary, count and +multinomial, have their own intermediate level of model and results classes. +This intermediate classes are mostly to facilitate the implementation of the +methods and attributes defined by :class:`DiscreteModel` and +:class:`DiscreteResults`. + +.. currentmodule:: statsmodels.discrete.discrete_model + +.. autosummary:: + :toctree: generated/ + + DiscreteModel + DiscreteResults + BinaryModel + BinaryResults + CountModel + MultinomialModel + +.. currentmodule:: statsmodels.discrete.count_model + +.. autosummary:: + :toctree: generated/ + + GenericZeroInflated diff --git a/docs/source/distributions.rst b/docs/source/distributions.rst new file mode 100644 index 0000000..0925a48 --- /dev/null +++ b/docs/source/distributions.rst @@ -0,0 +1,100 @@ +.. module:: statsmodels.sandbox.distributions + :synopsis: Probability distributions + +.. currentmodule:: statsmodels.sandbox.distributions + +.. _distributions: + + +Distributions +============= + +This section collects various additional functions and methods for statistical +distributions. + +Empirical Distributions +----------------------- + +.. module:: statsmodels.distributions.empirical_distribution + :synopsis: Tools for working with empirical distributions + +.. currentmodule:: statsmodels.distributions.empirical_distribution + +.. autosummary:: + :toctree: generated/ + + ECDF + StepFunction + monotone_fn_inverter + +Distribution Extras +------------------- + + +.. module:: statsmodels.sandbox.distributions.extras + :synopsis: Probability distributions and random number generators + +.. currentmodule:: statsmodels.sandbox.distributions.extras + +*Skew Distributions* + +.. autosummary:: + :toctree: generated/ + + SkewNorm_gen + SkewNorm2_gen + ACSkewT_gen + skewnorm2 + +*Distributions based on Gram-Charlier expansion* + +.. autosummary:: + :toctree: generated/ + + pdf_moments_st + pdf_mvsk + pdf_moments + NormExpan_gen + +*cdf of multivariate normal* wrapper for scipy.stats + + +.. autosummary:: + :toctree: generated/ + + mvstdnormcdf + mvnormcdf + +Univariate Distributions by non-linear Transformations +------------------------------------------------------ + +Univariate distributions can be generated from a non-linear transformation of an +existing univariate distribution. `Transf_gen` is a class that can generate a new +distribution from a monotonic transformation, `TransfTwo_gen` can use hump-shaped +or u-shaped transformation, such as abs or square. The remaining objects are +special cases. + +.. module:: statsmodels.sandbox.distributions.transformed + :synopsis: Experimental probability distributions and random number generators + +.. currentmodule:: statsmodels.sandbox.distributions.transformed + +.. autosummary:: + :toctree: generated/ + + TransfTwo_gen + Transf_gen + + ExpTransf_gen + LogTransf_gen + SquareFunc + + absnormalg + invdnormalg + + loggammaexpg + lognormalg + negsquarenormalg + + squarenormalg + squaretg diff --git a/docs/source/duration.rst b/docs/source/duration.rst new file mode 100644 index 0000000..66ae9a2 --- /dev/null +++ b/docs/source/duration.rst @@ -0,0 +1,234 @@ +.. module:: statsmodels.duration + :synopsis: Models for durations + +.. currentmodule:: statsmodels.duration + + +.. _duration: + +Methods for Survival and Duration Analysis +========================================== + +:mod:`statsmodels.duration` implements several standard methods for +working with censored data. These methods are most commonly used when +the data consist of durations between an origin time point and the +time at which some event of interest occurred. A typical example is a +medical study in which the origin is the time at which a subject is +diagnosed with some condition, and the event of interest is death (or +disease progression, recovery, etc.). + +Currently only right-censoring is handled. Right censoring occurs +when we know that an event occurred after a given time `t`, but we do +not know the exact event time. + +Survival function estimation and inference +------------------------------------------ + +The :class:`statsmodels.api.SurvfuncRight` class can be used to +estimate a survival function using data that may be right censored. +``SurvfuncRight`` implements several inference procedures including +confidence intervals for survival distribution quantiles, pointwise +and simultaneous confidence bands for the survival function, and +plotting procedures. The ``duration.survdiff`` function provides +testing procedures for comparing survival distributions. + +Examples +-------- + +Here we create a ``SurvfuncRight`` object using data from the +`flchain` study, which is available through the R datasets repository. +We fit the survival distribution only for the female subjects. + + +.. code-block:: python + + import statsmodels.api as sm + + data = sm.datasets.get_rdataset("flchain", "survival").data + df = data.loc[data.sex == "F", :] + sf = sm.SurvfuncRight(df["futime"], df["death"]) + +The main features of the fitted survival distribution can be seen by +calling the ``summary`` method: + +.. code-block:: python + + sf.summary().head() + +We can obtain point estimates and confidence intervals for quantiles +of the survival distribution. Since only around 30% of the subjects +died during this study, we can only estimate quantiles below the 0.3 +probability point: + +.. code-block:: python + + sf.quantile(0.25) + sf.quantile_ci(0.25) + +To plot a single survival function, call the ``plot`` method: + +.. code-block:: python + + sf.plot() + +Since this is a large dataset with a lot of censoring, we may wish +to not plot the censoring symbols: + +.. code-block:: python + + fig = sf.plot() + ax = fig.get_axes()[0] + pt = ax.get_lines()[1] + pt.set_visible(False) + +We can also add a 95% simultaneous confidence band to the plot. +Typically these bands only plotted for central part of the +distribution. + +.. code-block:: python + + fig = sf.plot() + lcb, ucb = sf.simultaneous_cb() + ax = fig.get_axes()[0] + ax.fill_between(sf.surv_times, lcb, ucb, color='lightgrey') + ax.set_xlim(365, 365*10) + ax.set_ylim(0.7, 1) + ax.set_ylabel("Proportion alive") + ax.set_xlabel("Days since enrollment") + +Here we plot survival functions for two groups (females and males) on +the same axes: + +.. code-block:: python + + gb = data.groupby("sex") + ax = plt.axes() + sexes = [] + for g in gb: + sexes.append(g[0]) + sf = sm.SurvfuncRight(g[1]["futime"], g[1]["death"]) + sf.plot(ax) + li = ax.get_lines() + li[1].set_visible(False) + li[3].set_visible(False) + plt.figlegend((li[0], li[2]), sexes, "center right") + plt.ylim(0.6, 1) + ax.set_ylabel("Proportion alive") + ax.set_xlabel("Days since enrollment") + +We can formally compare two survival distributions with ``survdiff``, +which implements several standard nonparametric procedures. The +default procedure is the logrank test: + +.. code-block:: python + + stat, pv = sm.duration.survdiff(data.futime, data.death, data.sex) + +Here are some of the other testing procedures implemented by survdiff: + +.. code-block:: python + + # Fleming-Harrington with p=1, i.e. weight by pooled survival time + stat, pv = sm.duration.survdiff(data.futime, data.death, data.sex, weight_type='fh', fh_p=1) + + # Gehan-Breslow, weight by number at risk + stat, pv = sm.duration.survdiff(data.futime, data.death, data.sex, weight_type='gb') + + # Tarone-Ware, weight by the square root of the number at risk + stat, pv = sm.duration.survdiff(data.futime, data.death, data.sex, weight_type='tw') + + +Regression methods +------------------ + +Proportional hazard regression models ("Cox models") are a regression +technique for censored data. They allow variation in the time to an +event to be explained in terms of covariates, similar to what is done +in a linear or generalized linear regression model. These models +express the covariate effects in terms of "hazard ratios", meaning the +the hazard (instantaneous event rate) is multiplied by a given factor +depending on the value of the covariates. + +Examples +-------- + +.. code-block:: python + + import statsmodels.api as sm + import statsmodels.formula.api as smf + + data = sm.datasets.get_rdataset("flchain", "survival").data + del data["chapter"] + data = data.dropna() + data["lam"] = data["lambda"] + data["female"] = (data["sex"] == "F").astype(int) + data["year"] = data["sample.yr"] - min(data["sample.yr"]) + status = data["death"].values + + mod = smf.phreg("futime ~ 0 + age + female + creatinine + " + "np.sqrt(kappa) + np.sqrt(lam) + year + mgus", + data, status=status, ties="efron") + rslt = mod.fit() + print(rslt.summary()) + + +See :ref:`statsmodels-examples` for more detailed examples. + + +There are some notebook examples on the Wiki: +`Wiki notebooks for PHReg and Survival Analysis `_ + + +.. todo:: + + Technical Documentation + +References +^^^^^^^^^^ + +References for Cox proportional hazards regression model:: + + T Therneau (1996). Extending the Cox model. Technical report. + http://www.mayo.edu/research/documents/biostat-58pdf/DOC-10027288 + + G Rodriguez (2005). Non-parametric estimation in survival models. + http://data.princeton.edu/pop509/NonParametricSurvival.pdf + + B Gillespie (2006). Checking the assumptions in the Cox proportional + hazards model. + http://www.mwsug.org/proceedings/2006/stats/MWSUG-2006-SD08.pdf + + +Module Reference +---------------- + +.. module:: statsmodels.duration.survfunc + :synopsis: Models for Survival Analysis + +.. currentmodule:: statsmodels.duration.survfunc + +The class for working with survival distributions is: + +.. autosummary:: + :toctree: generated/ + + SurvfuncRight + +.. module:: statsmodels.duration.hazard_regression + :synopsis: Proportional hazards model for Survival Analysis + +.. currentmodule:: statsmodels.duration.hazard_regression + +The proportional hazards regression model class is: + +.. autosummary:: + :toctree: generated/ + + PHReg + +The proportional hazards regression result class is: + +.. autosummary:: + :toctree: generated/ + + PHRegResults diff --git a/docs/source/emplike.rst b/docs/source/emplike.rst new file mode 100644 index 0000000..466ad72 --- /dev/null +++ b/docs/source/emplike.rst @@ -0,0 +1,71 @@ +.. currentmodule:: statsmodels.emplike + + +.. _emplike: + + +Empirical Likelihood :mod:`emplike` +==================================== + + +Introduction +------------ + +Empirical likelihood is a method of nonparametric inference and estimation that lifts the +obligation of having to specify a family of underlying distributions. Moreover, empirical +likelihood methods do not require re-sampling but still +uniquely determine confidence regions whose shape mirrors the shape of the data. +In essence, empirical likelihood attempts to combine the benefits of parametric +and nonparametric methods while limiting their shortcomings. The main difficulties of +empirical likelihood is the computationally intensive methods required to conduct inference. +:mod:`statsmodels.emplike` attempts to provide a user-friendly interface that allows the +end user to effectively conduct empirical likelihood analysis without having to concern +themselves with the computational burdens. + +Currently, :mod:`emplike` provides methods to conduct hypothesis tests and form confidence +intervals for descriptive statistics. Empirical likelihood estimation and inference +in a regression, accelerated failure time and instrumental variable model are +currently under development. + +References +^^^^^^^^^^ + +The main reference for empirical likelihood is:: + + Owen, A.B. "Empirical Likelihood." Chapman and Hall, 2001. + + + +Examples +-------- + +.. ipython:: python + + import numpy as np + import statsmodels.api as sm + + # Generate Data + x = np.random.standard_normal(50) + + # initiate EL + el = sm.emplike.DescStat(x) + + # confidence interval for the mean + el.ci_mean() + + # test variance is 1 + el.test_var(1) + + +Module Reference +---------------- + +.. module:: statsmodels.emplike + :synopsis: Empirical likelihood tools + +.. autosummary:: + :toctree: generated/ + + descriptive.DescStat + descriptive.DescStatUV + descriptive.DescStatMV diff --git a/docs/source/endog_exog.rst b/docs/source/endog_exog.rst new file mode 100644 index 0000000..c040a7b --- /dev/null +++ b/docs/source/endog_exog.rst @@ -0,0 +1,86 @@ +.. _endog_exog: + +``endog``, ``exog``, what's that? +================================= + +Statsmodels is using ``endog`` and ``exog`` as names for the data, the +observed variables that are used in an estimation problem. Other names that +are often used in different statistical packages or text books are, for +example, + +===================== ====================== +endog exog +===================== ====================== +y x +y variable x variable +left hand side (LHS) right hand side (RHS) +dependent variable independent variable +regressand regressors +outcome design +response variable explanatory variable +===================== ====================== + +The usage is quite often domain and model specific; however, we have chosen +to use `endog` and `exog` almost exclusively. A mnenomic hint to keep the two +terms apart is that exogenous has an "x", as in x-variable, in it's name. + +`x` and `y` are one letter names that are sometimes used for temporary +variables and are not informative in itself. To avoid one letter names we +decided to use descriptive names and settled on ``endog`` and ``exog``. +Since this has been criticized, this might change in future. + +Background +---------- + +Some informal definitions of the terms are + +`endogenous`: caused by factors within the system + +`exogenous`: caused by factors outside the system + +*Endogenous variables designates variables in an economic/econometric model +that are explained, or predicted, by that model.* +http://stats.oecd.org/glossary/detail.asp?ID=794 + +*Exogenous variables designates variables that appear in an +economic/econometric model, but are not explained by that model (i.e. they are +taken as given by the model).* http://stats.oecd.org/glossary/detail.asp?ID=890 + +In econometrics and statistics the terms are defined more formally, and +different definitions of exogeneity (weak, strong, strict) are used depending +on the model. The usage in statsmodels as variable names cannot always be +interpreted in a formal sense, but tries to follow the same principle. + + +In the simplest form, a model relates an observed variable, y, to another set +of variables, x, in some linear or nonlinear form :: + + y = f(x, beta) + noise + y = x * beta + noise + +However, to have a statistical model we need additional assumptions on the +properties of the explanatory variables, x, and the noise. One standard +assumption for many basic models is that x is not correlated with the noise. +In a more general definition, x being exogenous means that we do not have to +consider how the explanatory variables in x were generated, whether by design +or by random draws from some underlying distribution, when we want to estimate +the effect or impact that x has on y, or test a hypothesis about this effect. + +In other words, y is *endogenous* to our model, x is *exogenous* to our model +for the estimation. + +As an example, suppose you run an experiment and for the second session some +subjects are not available anymore. +Is the drop-out relevant for the conclusions you draw for the experiment? +In other words, can we treat the drop-out decision as exogenous for our +problem. + +It is up to the user to know (or to consult a text book to find out) what the +underlying statistical assumptions for the models are. As an example, ``exog`` +in ``OLS`` can have lagged dependent variables if the error or noise term is +independently distributed over time (or uncorrelated over time). However, if +the error terms are autocorrelated, then OLS does not have good statistical +properties (is inconsistent) and the correct model will be ARMAX. +``statsmodels`` has functions for regression diagnostics to test whether some of +the assumptions are justified or not. + diff --git a/docs/source/example_formulas.rst b/docs/source/example_formulas.rst new file mode 100644 index 0000000..0275994 --- /dev/null +++ b/docs/source/example_formulas.rst @@ -0,0 +1,181 @@ +.. _formula_examples: + +Fitting models using R-style formulas +===================================== + +Since version 0.5.0, ``statsmodels`` allows users to fit statistical +models using R-style formulas. Internally, ``statsmodels`` uses the +`patsy `_ package to convert formulas and +data to the matrices that are used in model fitting. The formula +framework is quite powerful; this tutorial only scratches the surface. A +full description of the formula language can be found in the ``patsy`` +docs: + +- `Patsy formula language description `_ + +Loading modules and functions +----------------------------- + +.. ipython:: python + + import statsmodels.api as sm + import statsmodels.formula.api as smf + import numpy as np + import pandas + +Notice that we called ``statsmodels.formula.api`` in addition to the usual +``statsmodels.api``. In fact, ``statsmodels.api`` is used here only to load +the dataset. The ``formula.api`` hosts many of the same +functions found in ``api`` (e.g. OLS, GLM), but it also holds lower case +counterparts for most of these models. In general, lower case models +accept ``formula`` and ``df`` arguments, whereas upper case ones take +``endog`` and ``exog`` design matrices. ``formula`` accepts a string +which describes the model in terms of a ``patsy`` formula. ``df`` takes +a `pandas `_ data frame. + +``dir(smf)`` will print a list of available models. + +Formula-compatible models have the following generic call signature: +``(formula, data, subset=None, *args, **kwargs)`` + +OLS regression using formulas +----------------------------- + +To begin, we fit the linear model described on the `Getting +Started `_ page. Download the data, subset columns, +and list-wise delete to remove missing observations: + +.. ipython:: python + + df = sm.datasets.get_rdataset("Guerry", "HistData").data + df = df[['Lottery', 'Literacy', 'Wealth', 'Region']].dropna() + df.head() + +Fit the model: + +.. ipython:: python + + mod = smf.ols(formula='Lottery ~ Literacy + Wealth + Region', data=df) + res = mod.fit() + print(res.summary()) + +Categorical variables +--------------------- + +Looking at the summary printed above, notice that ``patsy`` determined +that elements of *Region* were text strings, so it treated *Region* as a +categorical variable. ``patsy``'s default is also to include an +intercept, so we automatically dropped one of the *Region* categories. + +If *Region* had been an integer variable that we wanted to treat +explicitly as categorical, we could have done so by using the ``C()`` +operator: + +.. ipython:: python + + res = smf.ols(formula='Lottery ~ Literacy + Wealth + C(Region)', data=df).fit() + print(res.params) + + +Examples more advanced features ``patsy``'s categorical variables +function can be found here: `Patsy: Contrast Coding Systems for +categorical variables `_ + +Operators +--------- + +We have already seen that "~" separates the left-hand side of the model +from the right-hand side, and that "+" adds new columns to the design +matrix. + +Removing variables +~~~~~~~~~~~~~~~~~~ + +The "-" sign can be used to remove columns/variables. For instance, we +can remove the intercept from a model by: + +.. ipython:: python + + res = smf.ols(formula='Lottery ~ Literacy + Wealth + C(Region) -1 ', data=df).fit() + print(res.params) + + +Multiplicative interactions +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +":" adds a new column to the design matrix with the product of the other +two columns. "\*" will also include the individual columns that were +multiplied together: + +.. ipython:: python + + res1 = smf.ols(formula='Lottery ~ Literacy : Wealth - 1', data=df).fit() + res2 = smf.ols(formula='Lottery ~ Literacy * Wealth - 1', data=df).fit() + print(res1.params) + print(res2.params) + + +Many other things are possible with operators. Please consult the `patsy +docs `_ to learn +more. + +Functions +--------- + +You can apply vectorized functions to the variables in your model: + +.. ipython:: python + + res = smf.ols(formula='Lottery ~ np.log(Literacy)', data=df).fit() + print(res.params) + + +Define a custom function: + +.. ipython:: python + + def log_plus_1(x): + return np.log(x) + 1.0 + + res = smf.ols(formula='Lottery ~ log_plus_1(Literacy)', data=df).fit() + print(res.params) + +.. _patsy-namespaces: + +Namespaces +---------- + +Notice that all of the above examples use the calling namespace to look for the functions to apply. The namespace used can be controlled via the ``eval_env`` keyword. For example, you may want to give a custom namespace using the :class:`patsy:patsy.EvalEnvironment` or you may want to use a "clean" namespace, which we provide by passing ``eval_func=-1``. The default is to use the caller's namespace. This can have (un)expected consequences, if, for example, someone has a variable names ``C`` in the user namespace or in their data structure passed to ``patsy``, and ``C`` is used in the formula to handle a categorical variable. See the `Patsy API Reference `_ for more information. + +Using formulas with models that do not (yet) support them +--------------------------------------------------------- + +Even if a given ``statsmodels`` function does not support formulas, you +can still use ``patsy``'s formula language to produce design matrices. +Those matrices can then be fed to the fitting function as ``endog`` and +``exog`` arguments. + +To generate ``numpy`` arrays: + +.. ipython:: python + + import patsy + f = 'Lottery ~ Literacy * Wealth' + y, X = patsy.dmatrices(f, df, return_type='matrix') + print(y[:5]) + print(X[:5]) + +``y`` and ``X`` would be instances of ``patsy.DesignMatrix`` which is a subclass of ``numpy.ndarray``. + +To generate pandas data frames: + +.. ipython:: python + + f = 'Lottery ~ Literacy * Wealth' + y, X = patsy.dmatrices(f, df, return_type='dataframe') + print(y[:5]) + print(X[:5]) + +.. ipython:: python + + print(sm.OLS(y, X).fit().summary()) diff --git a/docs/source/examples/README b/docs/source/examples/README new file mode 100644 index 0000000..7e9162c --- /dev/null +++ b/docs/source/examples/README @@ -0,0 +1 @@ +The format for landing.json should be self-explanatory. The images should be placed in docs/source/_static/images/. They will be displayed at 360 x 225 (W x H). It's best to save them as a png with a resolution of a multiple of at least 720 x 450. If you want, you can use png crush to make the images smaller. diff --git a/docs/source/examples/index.rst b/docs/source/examples/index.rst new file mode 100644 index 0000000..a5ef53c --- /dev/null +++ b/docs/source/examples/index.rst @@ -0,0 +1,15 @@ +:orphan: + +.. _statsmodels-examples: + +Statsmodels Examples +==================== + +This page provides a series of examples, tutorials and recipes to help you get +started with ``statsmodels``. Each of the examples shown here is made available +as an IPython Notebook and as a plain python script on the `statsmodels github +repository `_. + +We also encourage users to submit their own examples, tutorials or cool +`statsmodels` trick to the `Examples wiki page +`_ diff --git a/docs/source/examples/landing.json b/docs/source/examples/landing.json new file mode 100644 index 0000000..a4e0977 --- /dev/null +++ b/docs/source/examples/landing.json @@ -0,0 +1,290 @@ +[ + { + "header":"Linear Regression Models", + "id":"regression", + "links":[ + { + "text": "Ordinary Least Squares", + "target": "notebooks/generated/ols.html", + "img": "../_static/images/ols.png" + }, + { + "text": "Generalized Least Squares", + "target": "notebooks/generated/gls.html", + "img": "../_static/images/gls.png" + }, + { + "text": "Quantile Regression", + "target": "notebooks/generated/quantile_regression.html", + "img": "../_static/images/quantile_regression.png" + }, + { + "text": "Recursive Least Squares", + "target": "notebooks/generated/recursive_ls.html", + "img": "../_static/images/recursive_ls.png" + }, + { + "text": "Regression Diagnostics", + "target": "notebooks/generated/regression_diagnostics.html", + "img": "../_static/images/regression_diagnostics.png" + }, + { + "text": "Weighted Least Squares", + "target": "notebooks/generated/wls.html", + "img": "../_static/images/wls.png" + }, + { + "text": "Linear Mixed-Effects", + "target": "notebooks/generated/mixed_lm_example.html", + "img": "../_static/images/mixed_lm.png" + } + ] + }, + { + "header":"Plotting", + "id":"plotting", + "links":[ + { + "text": "Regression Plots", + "target": "notebooks/generated/regression_plots.html", + "img": "../_static/images/regression_plots.png" + }, + { + "text": "Categorical Interactions", + "target": "notebooks/generated/categorical_interaction_plot.html", + "img": "../_static/images/categorical_interaction_plot.png" + }, + { + "text": "Box Plots", + "target": "notebooks/generated/plots_boxplots.html", + "img": "../_static/images/plots_boxplots.png" + } + ] + + }, + { + "header": "Discrete Choice Models", + "id":"discrete", + "links":[ + { + "text": "Getting Started", + "target": "notebooks/generated/discrete_choice_overview.html", + "img": "../_static/images/discrete_overview.png" + }, + { + "text": "Fair's Affairs Data", + "target": "notebooks/generated/discrete_choice_example.html", + "img": "../_static/images/fairs_data.png" + } + ] + }, + { + "header": "Nonparametric Statistics", + "id":"nonparametric", + "links":[ + { + "text": "Univariate Kernel Density Estimator", + "target": "notebooks/generated/kernel_density.html", + "img": "../_static/images/kde_overview.png" + } + ] + }, + { + "header":"Generalized Linear Models", + "id":"glm", + "links":[ + { + "text": "Generalized Linear Models Overview", + "target": "notebooks/generated/glm.html", + "img": "../_static/images/glm_overview.png" + }, + { + "text": "Using Formulas with GLMs", + "target": "notebooks/generated/glm_formula.html", + "img": "../_static/images/glm_formulas.png" + + }, + { + "text": "Weighting Observations with GLMs", + "target": "notebooks/generated/glm_weights.html", + "img": "../_static/images/glm_weights.png" + }, + { + "text": "Influence Measures for GLMs", + "target": "notebooks/generated/influence_glm_logit.html", + "img": "../_static/images/influence_glm_logit.png" + } + ] + }, + { + "header":"Robust Regression", + "id":"robust", + "links":[ + { + "text": "M-estimators for Robust Regression", + "target": "notebooks/generated/robust_models_1.html", + "img": "../_static/images/rlm_overview.png" + }, + { + "text": "Comparing OLS and RLM", + "target": "notebooks/generated/robust_models_0.html", + "img": "../_static/images/rlm.png" + } + ] + }, + { + "header":"Statistics", + "id":"stats", + "links":[ + { + "text": "ANOVA", + "target": "notebooks/generated/interactions_anova.html", + "img": "../_static/images/anova.png" + } + ] + }, + { + "header":"Time Series Analysis", + "id":"stats", + "links":[ + { + "text": "ARMA: Sunspots Data", + "target": "notebooks/generated/tsa_arma_0.html", + "img": "../_static/images/tsa_arma0.png" + }, + { + "text": "ARMA: Artificial Data", + "target": "notebooks/generated/tsa_arma_1.html", + "img": "../_static/images/tsa_arma1.png" + }, + { + "text": "Time Series Filters", + "target": "notebooks/generated/tsa_filters.html", + "img": "../_static/images/tsa_filters.png" + }, + { + "text": "Markov switching dynamic regression", + "target": "notebooks/generated/markov_regression.html", + "img": "../_static/images/markov_regression.png" + }, + { + "text": "Markov switching autoregression", + "target": "notebooks/generated/markov_autoregression.html", + "img": "../_static/images/markov_autoregression.png" + }, + { + "text": "Exponential Smoothing", + "target": "notebooks/generated/exponential_smoothing.html", + "img": "../_static/images/exponential_smoothing.png" + } + ] + }, + { + "header":"State space models", + "id":"statespace", + "links":[ + { + "text": "SARIMAX: Introduction", + "target": "notebooks/generated/statespace_sarimax_stata.html", + "img": "../_static/images/statespace_sarimax_stata.png" + }, + { + "text": "SARIMAX: Model selection, missing data", + "target": "notebooks/generated/statespace_sarimax_internet.html", + "img": "../_static/images/statespace_sarimax_internet.png" + }, + { + "text": "VARMAX: introduction", + "target": "notebooks/generated/statespace_varmax.html", + "img": "../_static/images/statespace_varmax.png" + }, + { + "text": "Dynamic Factor Models: Application", + "target": "notebooks/generated/statespace_dfm_coincident.html", + "img": "../_static/images/statespace_dfm_coincident.png" + }, + { + "text": "Unobserved Components: Application", + "target": "notebooks/generated/statespace_structural_harvey_jaeger.html", + "img": "../_static/images/statespace_structural_harvey_jaeger.png" + }, + { + "text": "Trends and cycles in unemployment", + "target": "notebooks/generated/statespace_cycles.html", + "img": "../_static/images/statespace_cycles.png" + }, + { + "text": "State space modeling: Local Linear Trends", + "target": "notebooks/generated/statespace_local_linear_trend.html", + "img": "../_static/images/statespace_local_linear_trend.png" + }, + { + "text": "ARMA: Sunspots Data", + "target": "notebooks/generated/statespace_arma_0.html", + "img": "../_static/images/statespace_arma0.png" + }, + { + "text": "Seasonality in Time Series Data", + "target": "notebooks/generated/statespace_seasonal.html", + "img": "../_static/images/statespace_seasonal.png" + } + ] + }, + { + "header":"State space models - Technical notes", + "id":"statespace_notes", + "links":[ + { + "text": "State space models: concentrating out the scale", + "target": "notebooks/generated/statespace_concentrated_scale.html", + "img": "../_static/images/statespace_concentrated_scale.png" + } + ] + }, + { + "header":"User Notes", + "id":"user", + "links":[ + { + "text": "Contrasts", + "target": "notebooks/generated/contrasts.html", + "img": "../_static/images/contrasts.png" + }, + { + "text": "Formulas", + "target": "notebooks/generated/formulas.html", + "img": "../_static/images/formulas_intro.png" + }, + { + "text": "Prediction", + "target": "notebooks/generated/predict.html", + "img": "../_static/images/prediction.png" + }, + { + "text": "Generic Maximum Likelihood", + "target": "notebooks/generated/generic_mle.html", + "img": "../_static/images/generic_mle.png" + }, + { + "text": "Dates in Time-Series Models", + "target": "notebooks/generated/tsa_dates.html", + "img": "../_static/images/tsa_dates.png" + }, + { + "text": "Least squares fitting of models to data", + "target": "notebooks/generated/chi2_fitting.html", + "img": "../_static/images/chi2_fitting.png" + }, + { + "text": "Distributed Estimations", + "target": "notebooks/generated/distributed_estimation.html", + "img": "../_static/images/distributed_estimation.png" + }, + { + "text": "Principal Component Analysis", + "target": "notebooks/generated/pca_fertility_factors.html", + "img": "../_static/images/pca_fertility_factors.png" + } + ] + } +] diff --git a/docs/source/extending.rst.TXT b/docs/source/extending.rst.TXT new file mode 100644 index 0000000..e69de29 diff --git a/docs/source/faq.rst b/docs/source/faq.rst new file mode 100644 index 0000000..6226f21 --- /dev/null +++ b/docs/source/faq.rst @@ -0,0 +1,85 @@ +:orphan: + +.. currentmodule:: statsmodels + +.. _faq: + +Frequently Asked Question +========================= + +What is statsmodels? +-------------------- + +statsmodels is a Python package that provides a collection of widely-used +statistical models. While statsmodels historically has an econometrics-heavy +user base, the package is designed to be useful to a large variety of +statistical use cases. In comparison with other Python-based modelling +tools, statsmodels focuses more heavily on the statistics and diagnostics +underlying the models than having the most cutting-edge or predictive models. + +.. _endog-exog-faq: + +What do endog and exog mean? +---------------------------- + +These are shorthand for endogenous and exogenous variables. You might be more +comfortable with the common ``y`` and ``X`` notation in linear models. +Sometimes the endogenous variable ``y`` is called a dependent variable. +Likewise, sometimes the exogenous variables ``X`` are called the independent +variables. You can read about this in greater detail at :ref:`endog_exog` + +.. _missing-faq: + +How does statsmodels handle missing data? +----------------------------------------- + +Missing data can be handled via the ``missing`` keyword argument. Every model +takes this keyword. You can find more information in the docstring of +:class:`statsmodels.base.Model `. + +.. _build-faq: + +Why won't statsmodels build? +---------------------------- + +Remember that to build, you must have: + +- The appropriate dependencies (numpy, pandas, scipy, Cython) installed +- A suitable C compiler +- A working python installation + +Please review our :ref:`installation instructions ` for details. + +You might also try cleaning up your source directory by running: + +.. code-block:: bash + + pip uninstall statsmodels + python setup.py clean + +And then attempting to re-compile. If you want to be more aggressive, you +could also reset git to a prior version by: + +.. code-block:: bash + + git reset --hard + git clean -xdf + git checkout master + python setup.py clean + +I'd like to contribute. Where do I start? +----------------------------------------- + +Check out our :doc:`development pages ` for a guide on how to +get involved. We accept Pull Requests on our GitHub page for bugfixes and +topics germane to statistics and statistical modeling. In addition, usability +and quality of life enhancements are greatly appreciated as well. + +What if my question isn't answered here? +---------------------------------------- + +You may find answers for questions that have not yet been added here on GitHub +under the `FAQ issues tag `_. +If not, please ask your question on stackoverflow using the +`statsmodels tag `_ or +on the `mailing list `_. diff --git a/docs/source/gam.rst b/docs/source/gam.rst new file mode 100644 index 0000000..968d7e7 --- /dev/null +++ b/docs/source/gam.rst @@ -0,0 +1,120 @@ +.. currentmodule:: statsmodels.gam.api + +.. _gam: + +Generalized Additive Models (GAM) +================================= + +Generalized Additive Models allow for penalized estimation of smooth terms +in generalized linear models. + +See `Module Reference`_ for commands and arguments. + +Examples +-------- + +The following illustrates a Gaussian and a Poisson regression where +categorical variables are treated as linear terms and the effect of +two explanatory variables is captured by penalized B-splines. +The data is from the automobile dataset +https://archive.ics.uci.edu/ml/datasets/automobile +We can load a dataframe with selected columns from the unit test module. + +.. ipython:: python + + import statsmodels.api as sm + from statsmodels.gam.api import GLMGam, BSplines + + # import data + from statsmodels.gam.tests.test_penalized import df_autos + + # create spline basis for weight and hp + x_spline = df_autos[['weight', 'hp']] + bs = BSplines(x_spline, df=[12, 10], degree=[3, 3]) + + # penalization weight + alpha = np.array([21833888.8, 6460.38479]) + + gam_bs = GLMGam.from_formula('city_mpg ~ fuel + drive', data=df_autos, + smoother=bs, alpha=alpha) + res_bs = gam_bs.fit() + print(res_bs.summary()) + + # plot smooth components + res_bs.plot_partial(0, cpr=True) + res_bs.plot_partial(1, cpr=True) + + alpha = np.array([8283989284.5829611, 14628207.58927821]) + gam_bs = GLMGam.from_formula('city_mpg ~ fuel + drive', data=df_autos, + smoother=bs, alpha=alpha, + family=sm.families.Poisson()) + res_bs = gam_bs.fit() + print(res_bs.summary()) + + # Optimal penalization weights alpha can be obtaine through generalized + # cross-validation or k-fold cross-validation. + # The alpha above are from the unit tests against the R mgcv package. + + gam_bs.select_penweight()[0] + gam_bs.select_penweight_kfold()[0] + + +References +^^^^^^^^^^ + +* Hastie, Trevor, and Robert Tibshirani. 1986. Generalized Additive Models. Statistical Science 1 (3): 297-310. +* Wood, Simon N. 2006. Generalized Additive Models: An Introduction with R. Texts in Statistical Science. Boca Raton, FL: Chapman & Hall/CRC. +* Wood, Simon N. 2017. Generalized Additive Models: An Introduction with R. Second edition. Chapman & Hall/CRC Texts in Statistical Science. Boca Raton: CRC Press/Taylor & Francis Group. + + +Module Reference +---------------- + +.. module:: statsmodels.gam.generalized_additive_model + :synopsis: Generalized Additive Models + +Model Class +^^^^^^^^^^^ + +.. autosummary:: + :toctree: generated/ + + GLMGam + LogitGam + +Results Classes +^^^^^^^^^^^^^^^ + +.. autosummary:: + :toctree: generated/ + + GLMGamResults + +Smooth Basis Functions +^^^^^^^^^^^^^^^^^^^^^^ + +.. module:: statsmodels.gam.smooth_basis + :synopsis: Classes for Spline and other Smooth Basis Function + +.. currentmodule:: statsmodels.gam.smooth_basis + +Currently there is verified support for two spline bases + +.. autosummary:: + :toctree: generated/ + + BSplines + CyclicCubicSplines + +`statsmodels.gam.smooth_basis` includes additional splines and a (global) +polynomial smoother basis but those have not been verified yet. + + + +Families and Link Functions +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The distribution families in `GLMGam` are the same as for GLM and so are +the corresponding link functions. +Current unit tests only cover Gaussian and Poisson, and GLMGam might not +work for all options that are available in GLM. diff --git a/docs/source/gee.rst b/docs/source/gee.rst new file mode 100644 index 0000000..bf45eb7 --- /dev/null +++ b/docs/source/gee.rst @@ -0,0 +1,177 @@ +.. currentmodule:: statsmodels.genmod.generalized_estimating_equations + +.. _gee: + +Generalized Estimating Equations +================================ + +Generalized Estimating Equations estimate generalized linear models for +panel, cluster or repeated measures data when the observations are possibly +correlated withing a cluster but uncorrelated across clusters. It supports +estimation of the same one-parameter exponential families as Generalized +Linear models (`GLM`). + +See `Module Reference`_ for commands and arguments. + +Examples +-------- + +The following illustrates a Poisson regression with exchangeable correlation +within clusters using data on epilepsy seizures. + +.. ipython:: python + + import statsmodels.api as sm + import statsmodels.formula.api as smf + + data = sm.datasets.get_rdataset('epil', package='MASS').data + + fam = sm.families.Poisson() + ind = sm.cov_struct.Exchangeable() + mod = smf.gee("y ~ age + trt + base", "subject", data, + cov_struct=ind, family=fam) + res = mod.fit() + print(res.summary()) + + +Several notebook examples of the use of GEE can be found on the Wiki: +`Wiki notebooks for GEE `_ + + +References +^^^^^^^^^^ + +* KY Liang and S Zeger. "Longitudinal data analysis using generalized + linear models". Biometrika (1986) 73 (1): 13-22. +* S Zeger and KY Liang. "Longitudinal Data Analysis for Discrete and + Continuous Outcomes". Biometrics Vol. 42, No. 1 (Mar., 1986), + pp. 121-130 +* A Rotnitzky and NP Jewell (1990). "Hypothesis testing of regression + parameters in semiparametric generalized linear models for cluster + correlated data", Biometrika, 77, 485-497. +* Xu Guo and Wei Pan (2002). "Small sample performance of the score test in + GEE". + http://www.sph.umn.edu/faculty1/wp-content/uploads/2012/11/rr2002-013.pdf +* LA Mancl LA, TA DeRouen (2001). A covariance estimator for GEE with improved + small-sample properties. Biometrics. 2001 Mar;57(1):126-34. + + +Module Reference +---------------- + +.. module:: statsmodels.genmod.generalized_estimating_equations + :synopsis: Generalized estimating equations + +Model Class +^^^^^^^^^^^ + +.. autosummary:: + :toctree: generated/ + + GEE + +.. module:: statsmodels.genmod.qif + :synopsis: Quadratic inference functions + +.. currentmodule:: statsmodels.genmod.qif + +.. autosummary:: + :toctree: generated/ + + QIF + +Results Classes +^^^^^^^^^^^^^^^ + +.. currentmodule:: statsmodels.genmod.generalized_estimating_equations + +.. autosummary:: + :toctree: generated/ + + GEEResults + GEEMargins + +.. currentmodule:: statsmodels.genmod.qif + +.. autosummary:: + :toctree: generated/ + + QIFResults + +Dependence Structures +^^^^^^^^^^^^^^^^^^^^^ + +The dependence structures currently implemented are + +.. module:: statsmodels.genmod.cov_struct + :synopsis: Covariance structures for Generalized Estimating Equations (GEE) + +.. currentmodule:: statsmodels.genmod.cov_struct + +.. autosummary:: + :toctree: generated/ + + CovStruct + Autoregressive + Exchangeable + GlobalOddsRatio + Independence + Nested + + +Families +^^^^^^^^ + +The distribution families are the same as for GLM, currently implemented are + +.. module:: statsmodels.genmod.families.family + :synopsis: Generalized Linear Model (GLM) families + +.. currentmodule:: statsmodels.genmod.families.family + +.. autosummary:: + :toctree: generated/ + + Family + Binomial + Gamma + Gaussian + InverseGaussian + NegativeBinomial + Poisson + Tweedie + + +Link Functions +^^^^^^^^^^^^^^ + +The link functions are the same as for GLM, currently implemented are the +following. Not all link functions are available for each distribution family. +The list of available link functions can be obtained by + +:: + + >>> sm.families.family..links + +.. currentmodule:: statsmodels.genmod.families.links + +.. autosummary:: + :toctree: generated/ + + Link + + CDFLink + CLogLog + Log + Logit + NegativeBinomial + Power + cauchy + cloglog + identity + inverse_power + inverse_squared + log + logit + nbinom + probit diff --git a/docs/source/genericmle.rst.TXT b/docs/source/genericmle.rst.TXT new file mode 100644 index 0000000..e69de29 diff --git a/docs/source/gettingstarted.rst b/docs/source/gettingstarted.rst new file mode 100644 index 0000000..e62a1b4 --- /dev/null +++ b/docs/source/gettingstarted.rst @@ -0,0 +1,183 @@ +Getting started +=============== + +This very simple case-study is designed to get you up-and-running quickly with +``statsmodels``. Starting from raw data, we will show the steps needed to +estimate a statistical model and to draw a diagnostic plot. We will only use +functions provided by ``statsmodels`` or its ``pandas`` and ``patsy`` +dependencies. + +Loading modules and functions +----------------------------- + +After `installing statsmodels and its dependencies `_, we load a +few modules and functions: + +.. ipython:: python + + from __future__ import print_function + import statsmodels.api as sm + import pandas + from patsy import dmatrices + +`pandas `_ builds on ``numpy`` arrays to provide +rich data structures and data analysis tools. The ``pandas.DataFrame`` function +provides labelled arrays of (potentially heterogenous) data, similar to the +``R`` "data.frame". The ``pandas.read_csv`` function can be used to convert a +comma-separated values file to a ``DataFrame`` object. + +`patsy `_ is a Python library for describing +statistical models and building `Design Matrices +`_ using ``R``-like formulas. + +Data +---- + +We download the `Guerry dataset +`_, a +collection of historical data used in support of Andre-Michel Guerry's 1833 +*Essay on the Moral Statistics of France*. The data set is hosted online in +comma-separated values format (CSV) by the `Rdatasets +`_ repository. +We could download the file locally and then load it using ``read_csv``, but +``pandas`` takes care of all of this automatically for us: + +.. ipython:: python + + df = sm.datasets.get_rdataset("Guerry", "HistData").data + +The `Input/Output doc page `_ shows how to import from various +other formats. + +We select the variables of interest and look at the bottom 5 rows: + +.. ipython:: python + + vars = ['Department', 'Lottery', 'Literacy', 'Wealth', 'Region'] + df = df[vars] + df[-5:] + +Notice that there is one missing observation in the *Region* column. We +eliminate it using a ``DataFrame`` method provided by ``pandas``: + +.. ipython:: python + + df = df.dropna() + df[-5:] + +Substantive motivation and model +-------------------------------- + +We want to know whether literacy rates in the 86 French departments are +associated with per capita wagers on the Royal Lottery in the 1820s. We need to +control for the level of wealth in each department, and we also want to include +a series of dummy variables on the right-hand side of our regression equation to +control for unobserved heterogeneity due to regional effects. The model is +estimated using ordinary least squares regression (OLS). + + +Design matrices (*endog* & *exog*) +---------------------------------- + +To fit most of the models covered by ``statsmodels``, you will need to create +two design matrices. The first is a matrix of endogenous variable(s) (i.e. +dependent, response, regressand, etc.). The second is a matrix of exogenous +variable(s) (i.e. independent, predictor, regressor, etc.). The OLS coefficient +estimates are calculated as usual: + +.. math:: + + \hat{\beta} = (X'X)^{-1} X'y + +where :math:`y` is an :math:`N \times 1` column of data on lottery wagers per +capita (*Lottery*). :math:`X` is :math:`N \times 7` with an intercept, the +*Literacy* and *Wealth* variables, and 4 region binary variables. + +The ``patsy`` module provides a convenient function to prepare design matrices +using ``R``-like formulas. You can find more information `here `_. + +We use ``patsy``'s ``dmatrices`` function to create design matrices: + +.. ipython:: python + + y, X = dmatrices('Lottery ~ Literacy + Wealth + Region', data=df, return_type='dataframe') + +The resulting matrices/data frames look like this: + +.. ipython:: python + + y[:3] + X[:3] + +Notice that ``dmatrices`` has + +* split the categorical *Region* variable into a set of indicator variables. +* added a constant to the exogenous regressors matrix. +* returned ``pandas`` DataFrames instead of simple numpy arrays. This is useful because DataFrames allow ``statsmodels`` to carry-over meta-data (e.g. variable names) when reporting results. + +The above behavior can of course be altered. See the `patsy doc pages +`_. + +Model fit and summary +--------------------- + +Fitting a model in ``statsmodels`` typically involves 3 easy steps: + +1. Use the model class to describe the model +2. Fit the model using a class method +3. Inspect the results using a summary method + +For OLS, this is achieved by: + +.. ipython:: python + + mod = sm.OLS(y, X) # Describe model + res = mod.fit() # Fit model + print(res.summary()) # Summarize model + + +The ``res`` object has many useful attributes. For example, we can extract +parameter estimates and r-squared by typing: + + +.. ipython:: python + + res.params + res.rsquared + +Type ``dir(res)`` for a full list of attributes. + +For more information and examples, see the `Regression doc page `_ + +Diagnostics and specification tests +----------------------------------- + +``statsmodels`` allows you to conduct a range of useful `regression diagnostics +and specification tests +`_. For instance, +apply the Rainbow test for linearity (the null hypothesis is that the +relationship is properly modelled as linear): + +.. ipython:: python + + sm.stats.linear_rainbow(res) + +Admittedly, the output produced above is not very verbose, but we know from +reading the `docstring `_ +(also, ``print(sm.stats.linear_rainbow.__doc__)``) that the +first number is an F-statistic and that the second is the p-value. + +``statsmodels`` also provides graphics functions. For example, we can draw a +plot of partial regression for a set of regressors by: + +.. ipython:: python + + @savefig gettingstarted_0.png + sm.graphics.plot_partregress('Lottery', 'Wealth', ['Region', 'Literacy'], + data=df, obs_labels=False) + +More +---- + +Congratulations! You're ready to move on to other topics in the +`Table of Contents `_ diff --git a/docs/source/glm.rst b/docs/source/glm.rst new file mode 100644 index 0000000..2b9502c --- /dev/null +++ b/docs/source/glm.rst @@ -0,0 +1,223 @@ +.. currentmodule:: statsmodels.genmod.generalized_linear_model + +.. _glm: + +Generalized Linear Models +========================= + +Generalized linear models currently supports estimation using the one-parameter +exponential families. + +See `Module Reference`_ for commands and arguments. + +Examples +-------- + +.. ipython:: python + :okwarning: + + # Load modules and data + import statsmodels.api as sm + data = sm.datasets.scotland.load(as_pandas=False) + data.exog = sm.add_constant(data.exog) + + # Instantiate a gamma family model with the default link function. + gamma_model = sm.GLM(data.endog, data.exog, family=sm.families.Gamma()) + gamma_results = gamma_model.fit() + print(gamma_results.summary()) + +Detailed examples can be found here: + +* `GLM `__ +* `Formula `__ + +Technical Documentation +----------------------- + +.. ..glm_techn1 +.. ..glm_techn2 + +The statistical model for each observation :math:`i` is assumed to be + + :math:`Y_i \sim F_{EDM}(\cdot|\theta,\phi,w_i)` and + :math:`\mu_i = E[Y_i|x_i] = g^{-1}(x_i^\prime\beta)`. + +where :math:`g` is the link function and :math:`F_{EDM}(\cdot|\theta,\phi,w)` +is a distribution of the family of exponential dispersion models (EDM) with +natural parameter :math:`\theta`, scale parameter :math:`\phi` and weight +:math:`w`. +Its density is given by + + :math:`f_{EDM}(y|\theta,\phi,w) = c(y,\phi,w) + \exp\left(\frac{y\theta-b(\theta)}{\phi}w\right)\,.` + +It follows that :math:`\mu = b'(\theta)` and +:math:`Var[Y|x]=\frac{\phi}{w}b''(\theta)`. The inverse of the first equation +gives the natural parameter as a function of the expected value +:math:`\theta(\mu)` such that + + :math:`Var[Y_i|x_i] = \frac{\phi}{w_i} v(\mu_i)` + +with :math:`v(\mu) = b''(\theta(\mu))`. Therefore it is said that a GLM is +determined by link function :math:`g` and variance function :math:`v(\mu)` +alone (and :math:`x` of course). + +Note that while :math:`\phi` is the same for every observation :math:`y_i` +and therefore does not influence the estimation of :math:`\beta`, +the weights :math:`w_i` might be different for every :math:`y_i` such that the +estimation of :math:`\beta` depends on them. + +================================================= ============================== ============================== ======================================== =========================================== ============================================================================ ===================== +Distribution Domain :math:`\mu=E[Y|x]` :math:`v(\mu)` :math:`\theta(\mu)` :math:`b(\theta)` :math:`\phi` +================================================= ============================== ============================== ======================================== =========================================== ============================================================================ ===================== +Binomial :math:`B(n,p)` :math:`0,1,\ldots,n` :math:`np` :math:`\mu-\frac{\mu^2}{n}` :math:`\log\frac{p}{1-p}` :math:`n\log(1+e^\theta)` 1 +Poisson :math:`P(\mu)` :math:`0,1,\ldots,\infty` :math:`\mu` :math:`\mu` :math:`\log(\mu)` :math:`e^\theta` 1 +Neg. Binom. :math:`NB(\mu,\alpha)` :math:`0,1,\ldots,\infty` :math:`\mu` :math:`\mu+\alpha\mu^2` :math:`\log(\frac{\alpha\mu}{1+\alpha\mu})` :math:`-\frac{1}{\alpha}\log(1-\alpha e^\theta)` 1 +Gaussian/Normal :math:`N(\mu,\sigma^2)` :math:`(-\infty,\infty)` :math:`\mu` :math:`1` :math:`\mu` :math:`\frac{1}{2}\theta^2` :math:`\sigma^2` +Gamma :math:`N(\mu,\nu)` :math:`(0,\infty)` :math:`\mu` :math:`\mu^2` :math:`-\frac{1}{\mu}` :math:`-\log(-\theta)` :math:`\frac{1}{\nu}` +Inv. Gauss. :math:`IG(\mu,\sigma^2)` :math:`(0,\infty)` :math:`\mu` :math:`\mu^3` :math:`-\frac{1}{2\mu^2}` :math:`-\sqrt{-2\theta}` :math:`\sigma^2` +Tweedie :math:`p\geq 1` depends on :math:`p` :math:`\mu` :math:`\mu^p` :math:`\frac{\mu^{1-p}}{1-p}` :math:`\frac{\alpha-1}{\alpha}\left(\frac{\theta}{\alpha-1}\right)^{\alpha}` :math:`\phi` +================================================= ============================== ============================== ======================================== =========================================== ============================================================================ ===================== + +The Tweedie distribution has special cases for :math:`p=0,1,2` not listed in the +table and uses :math:`\alpha=\frac{p-2}{p-1}`. + +Correspondence of mathematical variables to code: + +* :math:`Y` and :math:`y` are coded as ``endog``, the variable one wants to + model +* :math:`x` is coded as ``exog``, the covariates alias explanatory variables +* :math:`\beta` is coded as ``params``, the parameters one wants to estimate +* :math:`\mu` is coded as ``mu``, the expectation (conditional on :math:`x`) + of :math:`Y` +* :math:`g` is coded as ``link`` argument to the ``class Family`` +* :math:`\phi` is coded as ``scale``, the dispersion parameter of the EDM +* :math:`w` is not yet supported (i.e. :math:`w=1`), in the future it might be + ``var_weights`` +* :math:`p` is coded as ``var_power`` for the power of the variance function + :math:`v(\mu)` of the Tweedie distribution, see table +* :math:`\alpha` is either + + * Negative Binomial: the ancillary parameter ``alpha``, see table + * Tweedie: an abbreviation for :math:`\frac{p-2}{p-1}` of the power :math:`p` + of the variance function, see table + + +References +^^^^^^^^^^ + +* Gill, Jeff. 2000. Generalized Linear Models: A Unified Approach. SAGE QASS Series. +* Green, PJ. 1984. “Iteratively reweighted least squares for maximum likelihood estimation, and some robust and resistant alternatives.” Journal of the Royal Statistical Society, Series B, 46, 149-192. +* Hardin, J.W. and Hilbe, J.M. 2007. “Generalized Linear Models and Extensions.” 2nd ed. Stata Press, College Station, TX. +* McCullagh, P. and Nelder, J.A. 1989. “Generalized Linear Models.” 2nd ed. Chapman & Hall, Boca Rotan. + +Module Reference +---------------- + +.. module:: statsmodels.genmod.generalized_linear_model + :synopsis: Generalized Linear Models (GLM) + +Model Class +^^^^^^^^^^^ + +.. autosummary:: + :toctree: generated/ + + GLM + +Results Class +^^^^^^^^^^^^^ + +.. autosummary:: + :toctree: generated/ + + GLMResults + PredictionResults + +.. _families: + +Families +^^^^^^^^ + +The distribution families currently implemented are + +.. module:: statsmodels.genmod.families.family +.. currentmodule:: statsmodels.genmod.families.family + +.. autosummary:: + :toctree: generated/ + + Family + Binomial + Gamma + Gaussian + InverseGaussian + NegativeBinomial + Poisson + Tweedie + + +.. _links: + +Link Functions +^^^^^^^^^^^^^^ + +The link functions currently implemented are the following. Not all link +functions are available for each distribution family. The list of +available link functions can be obtained by + +:: + + >>> sm.families.family..links + +.. module:: statsmodels.genmod.families.links +.. currentmodule:: statsmodels.genmod.families.links + +.. autosummary:: + :toctree: generated/ + + Link + CDFLink + CLogLog + Log + Logit + NegativeBinomial + Power + cauchy + cloglog + identity + inverse_power + inverse_squared + log + logit + nbinom + probit + +.. _varfuncs: + +Variance Functions +^^^^^^^^^^^^^^^^^^ + +Each of the families has an associated variance function. You can access +the variance functions here: + +:: + + >>> sm.families..variance + +.. module:: statsmodels.genmod.families.varfuncs +.. currentmodule:: statsmodels.genmod.families.varfuncs + +.. autosummary:: + :toctree: generated/ + + VarianceFunction + constant + Power + mu + mu_squared + mu_cubed + Binomial + binary + NegativeBinomial + nbinom diff --git a/docs/source/glm_techn1.rst.TXT b/docs/source/glm_techn1.rst.TXT new file mode 100644 index 0000000..da6dfd7 --- /dev/null +++ b/docs/source/glm_techn1.rst.TXT @@ -0,0 +1,12 @@ +.. currentmodule:: statsmodels.glm + + +.. _glm_techn1: + +Technical Documentation +======================= + +Introduction +------------ + +Just a placeholder diff --git a/docs/source/glm_techn2.rst.TXT b/docs/source/glm_techn2.rst.TXT new file mode 100644 index 0000000..225f642 --- /dev/null +++ b/docs/source/glm_techn2.rst.TXT @@ -0,0 +1,12 @@ +.. currentmodule:: statsmodels.glm + + +.. _glm_techn2: + +Technical Documentation - part 2 +================================ + +Implementation Notes +-------------------- + +Just a placeholder diff --git a/docs/source/gmm.rst b/docs/source/gmm.rst new file mode 100644 index 0000000..1512f83 --- /dev/null +++ b/docs/source/gmm.rst @@ -0,0 +1,43 @@ +.. currentmodule:: statsmodels.sandbox.regression.gmm + + +.. _gmm: + + +Generalized Method of Moments :mod:`gmm` +======================================== + +:mod:`statsmodels.gmm` contains model classes and functions that are based on +estimation with Generalized Method of Moments. +Currently the general non-linear case is implemented. An example class for the standard +linear instrumental variable model is included. This has been introduced as a test case, it +works correctly but it does not take the linear structure into account. For the linear +case we intend to introduce a specific implementation which will be faster and numerically +more accurate. + +Currently, GMM takes arbitrary non-linear moment conditions and calculates the estimates +either for a given weighting matrix or iteratively by alternating between estimating +the optimal weighting matrix and estimating the parameters. Implementing models with +different moment conditions is done by subclassing GMM. In the minimal implementation +only the moment conditions, `momcond` have to be defined. + +.. currentmodule:: statsmodels.sandbox.regression.gmm + + +Module Reference +"""""""""""""""" + +.. module:: statsmodels.sandbox.regression.gmm + :synopsis: A framework for implementing Generalized Method of Moments (GMM) + +.. autosummary:: + :toctree: generated/ + + GMM + GMMResults + IV2SLS + IVGMM + IVGMMResults + IVRegressionResults + LinearIVGMM + NonlinearIVGMM diff --git a/docs/source/gmm_techn1.rst.TXT b/docs/source/gmm_techn1.rst.TXT new file mode 100644 index 0000000..373b854 --- /dev/null +++ b/docs/source/gmm_techn1.rst.TXT @@ -0,0 +1,53 @@ +.. currentmodule:: statsmodels.sandbox.regression.gmm + + +.. _gmm_techn1: + +Technical Documentation +======================= + +Introduction +------------ + +Generalized Method of Moments is an extension of the Method of Moments +if there are more moment conditions than parameters that are estimated. + +simple example + + +General Structure and Implementation +------------------------------------ + +The main class for GMM estimation, makes little assumptions about the +moment conditions. It is designed for the general case when moment +conditions are given as function by the user. + +:: + + def momcond(params) + +which should return a two dimensional array with observation in rows +and moment conditions in columns. Denote this function by `$g(\theta)$`. Then +the GMM estimator is given as the solution to the maximization problem: + +..math: max_{\theta) g(theta)' W g(theta) (1) + +The weighting matrix can be estimated in several different ways. The +basic method `fitgmm` takes the weighting matrix as argument or if it is +not given takes the identity matrix and maximizes (1) +taking W as given. Since the optimizing functions solve minimization problems, +we usually minimizes the negative of the objective function. +`fit_iterative` calculates the optimal weighting matrix and maximizes the +criterion function in alternating steps. The number of iterations can +be given as an argument to this fit method. The optimal weighting matrix, +which is the covariance matrix of the moment conditions, can be estimated +in different ways. Kernel and shrinkage estimators are planned but not yet +implemented. TODO + +The GMM class itself does not define any moment conditions. To get an +estimator for given moment conditions, GMM needs to be subclassed. +The basic structure of writing new models based on +the generic MLE or GMM framework and subclassing is described in +`extending.rst` (TODO: link) + +As an example diff --git a/docs/source/graphics.rst b/docs/source/graphics.rst new file mode 100644 index 0000000..e42ed59 --- /dev/null +++ b/docs/source/graphics.rst @@ -0,0 +1,87 @@ +.. currentmodule:: statsmodels.graphics + +.. _graphics: + +Graphics +======== + +.. automodule:: statsmodels.graphics + +Goodness of Fit Plots +--------------------- + +.. autosummary:: + :toctree: generated/ + + gofplots.qqplot + gofplots.qqline + gofplots.qqplot_2samples + gofplots.ProbPlot + +Boxplots +-------- + +.. autosummary:: + :toctree: generated/ + + boxplots.violinplot + boxplots.beanplot + +Correlation Plots +------------------ + +.. autosummary:: + :toctree: generated/ + + correlation.plot_corr + correlation.plot_corr_grid + plot_grids.scatter_ellipse + +Functional Plots +---------------- + +.. autosummary:: + :toctree: generated/ + + functional.hdrboxplot + functional.fboxplot + functional.rainbowplot + functional.banddepth + +Regression Plots +---------------- + +.. autosummary:: + :toctree: generated/ + + regressionplots.plot_fit + regressionplots.plot_regress_exog + regressionplots.plot_partregress + regressionplots.plot_partregress_grid + regressionplots.plot_ccpr + regressionplots.plot_ccpr_grid + regressionplots.plot_ceres_residuals + regressionplots.abline_plot + regressionplots.influence_plot + regressionplots.plot_leverage_resid2 + +Time Series Plots +----------------- + +.. autosummary:: + :toctree: generated/ + + tsaplots.plot_acf + tsaplots.plot_pacf + tsaplots.month_plot + tsaplots.quarter_plot + +Other Plots +----------- + +.. autosummary:: + :toctree: generated/ + + factorplots.interaction_plot + mosaicplot.mosaic + agreement.mean_diff_plot diff --git a/docs/source/images/aw.png b/docs/source/images/aw.png new file mode 100644 index 0000000000000000000000000000000000000000..8c048f62e251afdcf95fc865ec829ba69da6b587 GIT binary patch literal 22376 zcmeFZc{G;o_cwf+qJcCZ^MzFA$}Cf)4518}hf>Nc^Xy8ZROXoo*JaF*c_xySp)ONq zC4|gm3eP^dfA{x!e((FN_5Ss&^{(|;>%LVk=XnhK*!#0T`?HT{H`K0C9%49zAPA+B z;uQ@9A;BOBu`a~{_?LJWKYRE_>L{nAMFC%46nCG(-w)a=>Nz6F(c9>MM42)f76^ht zl&)OXa!dR@ zt#N`jF+>>Bhr5VHO^ZGaP@xH%|;7@nJB{oX>i@FQB~ zSnK4ny8|6B{PL+6y@@F#|L=Q#nsI7s%5tQ(X0B>pI*Q*&|K`n`)BPn@!NZp<2&bi% zK5|t42;$LtElY&{FhqJYQ$s_;&rld1J8DE4YW=&f=vrgo(cWh#&UR(q ze#9g$E^fLfHz7PCLfCD=)MmI^&w0A*Yo+sypPmT%yLubebffoljNS2nW(UqHDXXY- zK0U_a@OQXFdh0q~B}RIzq-w5GW&CqYFP4Zz$ZLH;GM5H^k%G)g*5O>4LGHGcmm+~P z#xS+;-skBU6Q7oxLijN@R1SG~)6z1#)Mg-kCckdjg$w;x8dB<*yLazqDm-|_ZP3M(axhgE^ZHhNj*Qu-RnrFmNEsPy{lLv;LaqWKKCxww?Fva+~!@)A#HsV0b^ z@6s=RkixB<{a}iK&)9ACBRiaZ^(DjH?mc)Y^4aUrAdCI6+uT~2uV)9!R4&ezYVKBe zNhg=u4rMQmf97FhyR4+7l;P_=?S0ARx7g$c8@f3fnwlLOt2>)}`z-}_#D;Y{LMH^H zEW2Rr7$A&6pZ$N`%>OT3sv<3+v$MO_+jGcu#GBiwvN$z0wX4Lcm#NNoZEnb8BJRFc zrIQ5>pT1VvutyG@+{d~XV0TBoNke)6`!NsinEd?JGlcn4dewZb!C_k7FXXIVuj2&o zXJ3!Im~B#5OUrL~s_()OH1zf3uf8}HHntYbB(A~5#id_( z_nB?QIIR-lmFsZUbazgU_tqbM7|9JwG!$0{Qz=rB5o*XgJX^Ngaqa4fb>{qKE-PzilO7I5T81#p3=nwzQ4dsM$ zswAy$X7v&Xgh77P6EBeVU=f60(LBA_yQtYb$%M%}LFyYUW3AYjY2*iCTYKc+>l1 zY>bALHCdF5SeE~l7#p7vH=iCm9v90x)2kAAG{M&-GgPY(rk%2piPqO$WQaHoMQq*&I+Iw|!?dxsSKrj@xG}bzZ!Pvl+m>WZeDx_V(kh+=P`6jAuR$x@R2ZaGr_Jj~K`& zLe%cA64|STnAcYvll6OjGwrI!_a}74UK7h_~zA%}<= zU@+V3X+j>wD}DFRF#YTh81l$DNV+z3wmUP-)##bm#`VCTFl}1bO6|05Ockxo5r4t>= z`2%)!QlImumNy(~W(5$jx1MD}KGg?VWVTNmxx{tho@wPLIW;q<&)n_|;~=<>C?)%F ztHxsRc%|-~1kBR<7-2kSAor;3&)d}#M~F@{(r{~ifq=&O$~|SnOWJ0rQX3+ej+~rd zczC$l?q=jrl`CrA@xoToRIJi(z-wn3l-Xv(f2Af7hZ(Sp7X|SZj`;75_`aex;)MW8 zygzB@)W^xMJL`*M>2q(*RAbI?G?L*h z44h3(aRtX1dH4*^dGFS&$n2i*_%0vLU#si!N6%thdFr!3TYiE_R9;PwlS?pjkr5j* zYDj@Ws6Pa=#vGu$c(}%(G%{Q3!r|)4wunN#U|J0?>8T`7+{Q9~{Bzr8=wwm^w^nEX zrJxZjf^`KXin-pFaKH4kP3H&ym%>&!i%wjEZK09gLRU7YYTTXD<(f&B6IX1jZ*ETW z3`BwD0m7Ay?W^wNJy*BuQ3o28|stbCC<>`v45Q|{}xrzVqabPgaG z^z(}9F~eS+Oy9~pN`x%J#bpaToCl)%G;^X?X3GfgpH0-Yz)8rjW@i>Nt-6RjHT>;2 ze&KgEGAh>^%T}}CSL~YKcW}C-7ssw(tuxMdEm)D{fTEPAGN-a4$5qAEnSs1Rvghu= z)-zKh6t}n5RMchoq?Vp)6{YKKeW?)qK4y4`E?UAVv?pKmRp{1yjDATfBQau|M)Kpr zX-h<0*tb@^5$qCoR5~=tBk1wE12^?~=1?8ujUq;e5%1C*VruSF`Qq~Aq=;N=iu}ay zV9)s|ZXJ;-1F3DH?;N6D(pk<{%OiOjoR0CEMIG_y$q@>E2@H#T>VeQ#aFUu?V_fDU zH&-sqNT;r!YYCIBPfXvL&N1&T;L^k~+7=kmAOdDE`Vc;Zf+*ua%kJL{@kP&W?oKi` zFR{sGr4AW8mzK(3>{)8ej+T-LM$FBL2;0mo&R+81_JNjMeWmBLaTf9)4QP0jN4(Dp z+u5qUwCf}MEh9&M@}--)AK{Zie52yIr8YB*AEr%Vh3ssrQa_$Ie{s;O*VrokuJ)S; zRqTjy16Z&G1{uBSIH4#ybeHz3fS%mCeP^e-%ID~~MrNxXp~*K0vUC7a8_6@&p_Q&N z3__u{RjT?G7Yo$|%kcWb%Og8;Rc+!t-dpjzq6l&y%yN|NtXgadxm}$N)yc#Qjl2?p z%uUZ#BF?HXUs9eONHA)?c+pyi3`uz@jA3a^l*2e|F9xoBGb8kxBpAgec@bO`)^l#A z;U<#=C-bi-o@;vlEsp}r_b&jVj)R3|@w(ApsU0tElx@)Kq97KtvD}u9&~PgjnJeiS z-iE1(oQD&J{J3EFMfN9nWsgy!T~UoJ!LcR2m}1*?NB9*Ud41*cMmWr zo~9R8w(S0tSS)qN|0J_b6}woJOx?k#Cx;VqBaX6)?1m5_lULD)9-+TORp`0nZt(@f z6~yB7?P+lI)!@jWlVSR0B5XKS#sO_2tmrXWq@HZP=4^@8*_xGbAye$n<-R-$cRp@q z2C*-1DBY(xxdb&W2YOtzkx?l~SSbo0k*Kb_Z98Y_2sB(1Ti(D8*QlPd=xukplH|Sj zDL(X5sTa&}yE{4_<1`J|a0?r)yEF2Etxi?!3a$Or2o{zGi;0uaw*1=g=HRb^n1y3X z;H-EwsQ*@8vnvtbq z73l@91A{=;&~1A3;>gsx=^O3NLl2eo6R;ml3qQp|&;ME(%C{;Jwg!DSVb4RT?jNJ zHg5bE8w|g_AL6v!rg8nn%8;wZ+dDAl)8bybmD?^{e5#u}o;}P&dwy8@GYQsF%v~cW zB!-Gb=z04=R(pdmcJoaWkII#w5#}7E2n9K8pI9Kj5#Th7A6KS6@!04*R@APoUTHZ? zm`pA@$1J-Jp|^gd^_A5D&!I{s=b8Sz17UNuTh}pjgeKBs2!-<-qQz4aCy8BbM)-%^ z()8S<9nU;(|4tbfr}6jzq3|By6vf^3z}X<|#}EI`;1AO!bK32lohrQ*gF+nqOa?%h zuvI+CVLHC>L$t+4$EYj7`Wx?iA`8C8K6?5!{Y=Ey*0H^j+$f&N`wBU~4hcdR4CL3v z!`|daqlbM>DyPm2bR&~4ovMUDR%Q7B#jy{4c?S^wBbo)00nsd@wazoG?yMn_>@S&l zHoV{@6w*>C9y~Z<+8V`!pUEqNm%9IZAf2bW5ULsj zRam_+O-(SQkFT<|@kAu89-$VU=rqKePx6MO;K|F)wp_A2oE<+7ynps)OZLGbQXKf} z{Mw6EW>ErmRqU9HXb7TG6hTwJQX7M&4gJ=%l=y0xK1~p`n*;6RTvuH#AJvS zMHobF-vHcpo+2nLPqb;~>X)2kWd%AUd3I}}Eg>Tif=^QrP3O;+h}H2JlkCfn4@`ea zd2H;naW5vDJT%I6_`+dVnT_}U)R;(cQ$N>KRAQ8ks=#EB_7E;zy;#Bf!3;tVFm)sO z0ODWy)EL)zpnOO$^QDtC&U1hNyg#A-tEfY|bG~jj&(Bvp`_K14)*jIjue9y0wfh^+ z7E?s;R#$s9hAK76Y&DvLVS$&_LRbg`b_r9uu0!{#7%(*Iz76cCbcz5G9)E$HSo@FuN++Ro{jO z+0`rt9Ar_K=9=v@t71StG7z0UY}K2mZD=^CXB3>RoueEMYLsIH|^-zucLw+6kN$OIIaPBBV_v)?Ccucho|IgG-H$g_fnJwOx*H4p!=rw#suy z7TAd)pC=Hs3h%ZQ8OyBd!&mft&BjE6uvHK5OBN~pd!Hh|D$p6>U>9;UGt@j*yLBGl z62!iFd5WzqmJP-GA7GU!f(!4peK^#apJd517g*h# zRE6i<;^KNnRW99V-j#MO#Cl|;;C5q?@$--n9WO7h0_6h@{n30A_3v)w?t3k2!*Ywifkx;BdH1$k-V~tYh^{ES=le zZe?jGC--O+jyLwB+rXL6S*B%7`e~t`{BL1j0 zQcL*Jq@i*AJ4x6WYT&!GWg2xp=xG!@CR_Lgm`!{}hSjG?uKU%}9xD&v7)?hT*tRUy z?5;P<6yIqIDl#^KotW}Hidnyv8!q7--d`58v!M>&Wp1;#4%cfeXt12859WrfpU^BQ zyqRw-m1|g`QRBIG3y#P5+LrL0_Y^N#Wp-9PUi>$D&*ImY6g16V`N$E1l9AjRxTnC* zL_sopX}(%B*>}f1+9V>HB~&z+1qBkRskrga_`2C3$}9e6%{T+w3ukfphFmnCSJnjcc$7a35)sRnxN;;JN*xy=qk48?5sO0D5wb@;J%@Mhs7ou1d;5T$N`gq-Wja{8Y}3m{vrcXC6QgaeBP9SC zzYr}l9Ty%Q6dj2r>GN0<(Y%3G?5(Qi3`mY)e=1z*Jnm3UXh z1!=#Dg@E$qJp>z;uSi3~OnyR^4#!n$Y3!Rs_=u;d=3C@jqZxzjM-?@ZPGyfZ^JyA; z>5TL{lq{`Uyok$rvd?A@ridycl6EHZbXr=RWUz^*+_a-d07AHFkx*FJ)pBkBNf2^4 z{hj1vR_3{7sUpuZU{}Dts4d(KNhtJ2yf`SC&aF;!qB#)*rdaFEInFc6j}OENIwJLa z*WWFj()W;UXOgx~H#YLAILHof82sEC2@Lt>IGrF(j^Z(ZEGdrwgh&<=`Qyq)qFv^M zE^WdL4xga8*WTV&p*c+ew1Kdbh1ei$_nQt))vV$2jPO=@Z;dFa`??j23gu^g=@>+WIs`G`U{ItaBXiTR7^Jp z3MvvWDewH9pzi3-fp7(p3N!c>g8gyf(2}+UJj5_MlgQ20B6y{bv3nEKjdJssPOIIp z4%N^9MQ81N)S+`VI{k$T`c=0eU2##6T^Dy!%+_eK{<<|D6W(#ZioHGojrAva5w_c{ zr>1i9aUs&|UdTI*;!Gi@%nf5k!4EKt1{!AS5Vo5n_qTj^)q|c#K-w4{4rB7K%SZ}0 zZwv3qkNFe{(;xj0v2971uhs_- z)q6*AD}f!YPMP(X63H5y9*S=MLLh1F3b`~F>M}2KR*;St(rJtXvlO>>&Kav5{wt8O1W;;ZX~4XG|3h*lEp5(dTn$*6t19IoTF}|vQi0@V{w8AYhY;5b)^4dW zh-*xDKktko%IDI&s(f8&B<(pZ;1}6*W_#n6$4NYts{|TT@tDQp9WIG}0OmXVf|`}9 zx28rfPc^gRiOB%je?wU<-~=SUZ?EBJUv?wU+^$0WL3X4%SCw&UEJT(1*~=2x*#9_}uuMI{sRTPh8|v+1Q5p4K~9I(@lvAroon!B5<|d2U%q^&)sZD43@s_S8VzSk`jN0J!<9ZX>mvv zz8`Q*uWxvgSa8HYy!HB&$!_?c*$D9bOOs_r$3|JeseK_LGHu(MPq5G-AwMpSy>Wtu zlak@RpA%AXZGYe=FS*8x|K!s@??xoomqj+kD5`w#GlXP&^8d;_UMe1A6#zouvdXjL zFi86pH9p0Pzr2YnwolOuWjO&T4P&>5{wT1o zr-zLs>}971dR;h?!LG9Wjp6yPjqvAcD3@a%`0VI0oR{?&qs%fChbP->ZY)iB*7^E6 z3Lsd`SiftT&99Juv;gB5idU%Bz}fWVMS+VsL}(jbi?Z9;8|tFO{vTl!gZdJjSg|W z2r&g#vdASD+-z4?gjQuS`rsCPjIv!FA0-QKt^w*jL@w+FL^drlVxU4aEVCoS+4pEA z#Mtq7tkd=?LAbYohgObpKYV;V0px&**X`0FPA^0(#*eH`>dvqvF$HzYzB5hv_5PVm z+0gbhk4r6aXo;*Wr0P?>CVkO#DQMJik}V8NO3H(ZFSm%uttW@+ZoOm>7JB&OJruT} zXj?fJd`YX??IBR}iVq(?-29am;-`DTv^kW`{COJ@2?Z-sxYldq9!Lca17W1V^gS3X ze+zVd7hZ*~EkRVh#Ijq%%d7gY&#wDO0${FdtlnBsSwb@!Vc#7usCBeI$tH4zY}BYy z5jfHA9MtyDWf~6+3QD+&tWhIjPyW9oGTUn-Gk_^?-no-%?7iA;=xwC$K_P6@ub6f% zp=SFt8mO>0pgtik_$%)Iz7Gt&w6|U1PoOf!bLPxdsDp@)t@`_u&i0o8dCK>BsfL7{ zN-IU~$;!y?j_9|0#J6m|nU;2W&G0plV+Si%G#uwoUA)p?{uQF-;1#5$0V@AAbabw_ zV$uMRhvOn6BY8)v?7z!FUTCrOvjr+Dg#gMk9L7IQwTX^&LDk<+UvxBG$0X`gOpLKd z3!E3Zn+YNW8Xd*ifq^_yYyt&FPfrTJ+f7TbbNj~I1g2pCA<}XiYDMxYZ)s}7U&MIuK4INY4j(<*@!Yehz z%Vg7YJ=()!NNr#>Hh(-95c2uE-f8sTlar~q`$=EFq{y%SF6!Xs<5P{| z(YfW|PMIZr@ktN#xqvUulfgn)l}LMoQEGGJIj$(Y0LUC;nDAim& zj`0p4Sdj1B5SH}2ufL0zNq+TbR280k`e)#@T#pN!H{d z%Zv_U6}!>`p|ZV?-a=!5t!=mHAg4{KqtBWy4WJZ{Tm(B7#NVSx%G!rl{2_cQEe4hur~XlXY@!*3n5WlBj4En zC^CHGHMZhxTb$Y4O+=1yf8yx?x6%`EP@kBu9UFwt9HUSy8|G%dbSBr3OJVUCH!q4+ zM`{tZt)C|VQMS$Lz>|y}rtKS8eIx(+pwZip>S=Rm=Izg4)69KVRYjFFGxi9l+?yOH z}B?hq@{S}?9MF)`l>25UJf^x<{6jFX;4>waX{+Scr`Yp2~cGMXe zUi-UDz$p=;`St-&*wcNKpQ$6j#nJe?1V+(|f8G}#6U;{)Pl1v3AE-6jT#%pY*1=!A z2dj@vy7t{8@Z>83>o@xi7$u~lX@B|40DYlwe4-8IZh@6Z6nDE(xoL?~zpbYRx-o?P z4WNE^D?j?fOTkWh2y1dm*I!h)zGSwVyNAe;?=PO}>Wqp(nX*-{^2RcRDa2v&{lP3{ znk+doi(yH4PWV61Ntx(~k=`BT{c+k0p-|XZPVoFTnVjIsfc+x7he_<^&C|v03vRGY zRn3d7GRgh|;&H%MFfc0*-Gi^(hV_7_YgHdn2;KG*S1PwNfq3&}Vp++1GuAU6q*4rs z_&?yL6etR-{HSc580qaUut=f1h8c3@MGxfb!e7=qgv!F(bHgKF`@zw&?efhk(r!w+=?$^yMhkIGK_$)r1ggs!|N2Jsf(fm>Asu7jW9A3!N zBTo*+c@B4FO|VeZ8|=d(cP_}2%Nwohwi=IWI2D5*t!F-~t}JXB%LRObnc8*or9=Dk zzHQykWbu`q>q6K95vK6UHI*9A1kcgmeK5xbo&Ef;+F=Rj)JO@6I>nY2uT65y5-Bl| zri3IZLbkRS_2X(3=SyH@V;Mx%^s9QjhyiU=Kl76ABr>kL#UL{bJEyjva{PRfb`8`g zDDQON7s`d6P%~>fRCK~LMXogGvY6?fhr=8JusGY#x%%sN)p4XC|JqTDNi~a))UYq1 zFgvPe3~Er4S0l0|_-kT`MkApPd*2V2uH5t-tTrWh?_6QecV>h*{d@{I6i{mYB@}FZ zsPzVvibaV1!;GqML?k$uSzO^g$oG)po27472r3gS8#DPZZ+6Cgh9l8!$GzxRBG&=L zzI1!5?PRxko9?bI; z0F+^|=j&8*bX2~6MN4jWm)te7jg7c9ug1%aB*s$xJg~o)Y;(&U`24zPk5zE8vTCrI zphp0g8Dj!2?5X7bZVo~f3ZxUgkuJ5h|k zYOHCx(dwM)I)WWs*ucHN0xnbU1y%XWJr^0K*&L$s@S#Q&H&i;&Bk=`jVZ!Drq0(6c zDrY&DGymDoE0m09YzE9HE|4Jn*E^CX7J9xn!cJVF+Ml2rE<*)W0!Jk=-hbah0KpVX zZ5IpKB^BR$uBSGd;zr3>3f36IJ9D{@$yEl*-~kkN`&8S#y zP%UwC!p<6_Whn_vpQ5_D&OoUR4I^Vt!;`}~ptg(`dw3^rHxUGMDj=lI20EKM`wDJ- z>MZ2U;C33w5mNcDsTvt-6UJMe>ad^c;=K!M;jXl6M=9wq0_9t9l-#^E6kOu*6K#L05bS7BP`JlhbTn_6 zc{{*LYM)c>ci8}da;ij2qB=Z09)E9RIO42&Hi&*bR=!@-uJhS`-TibSChT_mR{12$ zG6^z@>S^X`2L>OjC!xD} z4Ie+1u18vSUtIg)PddVkxz3R$PX9YEw`qtWf%w1YsvZT8P zITh25cYb8rnKx2+>;7EdtO*5w*5^>BCs?!t!^=ys4UZSPV6eQiHKKtMhkgTvo5;7x zWxdQZUgybp4x@SK=ITsTT%7xd8MMH0T02W)JaJw{RkizT+O_UOmUf+Fkm?3;+B7s28s%TKE2|cDRAd0LQM; zkyM)Vhz@mYT)KPZjd)SJJScBW?QG5W2GQ^c-EQy~oFFzgH|G`6kRD#W>vU zl-enfN^C(%234e(VPt96V#WfQ9fISzuIOs^|%1Yn5xtB*E;ZCF2IEDe-Ghjew zElvNSFjxv7rU^OV`dpJ1h#=Hdmv_BQ6T0JH0W_Wco=ax#WAVJM|F%JLu&^(S9x;9Q zHBDpu6QNBMG)ZutMD}C;=rNEyW$6r69+O7upC6(LA9lYMf3az>h{*8No+Ayu{s`;T zYowtcUu+q*r@lezD18+}Xl4Xm2)eLtD|Nd(`;lMPcJ(*c>^C;=m9SZ5>=(H`a2YnXhvt?K_Ah*gp(2J) zp{7VLh~qQBJ?Aepq8!{;jA1#qH5{5@y{40T?DjueTK$M_Fy>7LmezhV=XV+h!c7?SNXAdxFCFkB6^? zfE!m59pMG#K@|h(KSsi@U#S%@p*`L65{%?K?gpEqU9v>?;0)2-{b1XugTa8$1>y0^ zSjax2L)@o+D!~Q`a?Z@;w>_JpP~Tt0^1FYm0nuf-+CfP1Py6+N>%vX_@*DAj%|PP0 z?op`DZW8+l!bo3PZ9?+`LZR~?+o53wr>ncQpT9{qQ8*+Yj`YT>+zkeWj?0VI!rkl{O;26{qTRet0*HfjICz7 z6yi2wJ2R*!@vuSiF!J{qLQL9HYLmXY({H5_cM-LT^4#n6S>B$@yx&Se6N7c#FTp(t znP|g<;xySeI*11HQlvg$#R;U-C|mj=7$W(9A>zvmVR93(L_`_UFh&< z^@Y)lQtl6W6Cl&DC;rtXJg8H>Hc-7$0T<-@8VcMxYEVH0q%N?ZErmAMuFHW;b$>VN zB@aWTv(uq&9XM~S_x{8B)sj#^23ktc?5RnSBd1_5wr0&$Kdz1J0Y1MI`y2Z+<>455 z&Nlx57mDosT#mcnINeQHUxZ2j-rtTd&Oe`OWdYq)3V8^+oW`hdacP{8uBw4z>~~N0 zi#3=KuZ2h8;+e$AkdOKuN$8%$5nbWlb0k!%o_`bpk*Q1Fqe>)3Fgzg6O22K>$G(S) z3{hPe6fl-#Ls&G-(^visK#)M(j3(PB;=a~Y!S-CDz+mOU4?jMjWLM3Gs>#rSxK80G z;x0T0bq_$ozzws=s|c(J*>Lk2ThpGT<$|LCu0zc0o3)_>@NYOJz>l{7IKKLDPV?p* z7Af$;*hC(U_mY>+sEc$Q$As@Cc+S5l_VUZ*I}bBYBA7B*P0OChAlj(f?dat+xr6)m zL-(LxXgLewJY-$6a|+iI?tcU&-O3a!-JtxQXG!_K$2he99TIm$Pb$T|wGjcJ%fbH1 z4#9~R->*B>lcB6=rS^1ZGo*&t8@(AJk@4JnJ_>Q&8&JvG?1&u|vo(}9qz6&=V*e#O zYGo?J++Y|jFFjt~Cvq?`9)BXCDnIPL_aOVl_Dh5?4&XLmIsHNq;-3wrHiWHtmDvH6 z7!zA`dCJcj-11n}Mys>40|4qs>GtxJq%x_UawtPVab=$YK>Q>2ExXbgzc>bO{QZwD z%7ggGr>-lP@jD49#Zb$3jgj8C0u>Up0<%AOXh{>{_+Wb!5z72hj%`Fjxm!irS z&=Mh&+Ar;YY_UF)YvOgL>j-L!erF~6C9R;s2hufolKnr+z;x*h=*AzD-){rQj9`v~ zR43QqY_5p_4OAl;{xa|H%;e(tKteDx(155NT?wl7ZY#P!Dhn{mJ!CJ)){L)>;B)e$ z<3%UgppCKjus|%?RD!4qpmTT%&HhvRe)V_rBEJXw&`nY71S*B}$z!`?wm_xOLZKyq zDhgmXw^2X3ABv7sc#S|RLMR*I!%HxLC93^(bd_8QjSO!fmPN2q;H7(wd9?HS+hT!i zN!*Vr_2R9`b}rS^LkZxd3o>r7foF{u*F;t5-H7|+z0uBIa;DINE{d`d2a1zOeI8UK zWngwW{9;R4|JsidAISp4=fR+#S zg7xJa=F8R~iClg|EJqLh2he?SOG6{P(rGHyeR%@qd!bD&W@NtOk2mO{bj;1u0aT~| z{CSs>MN&6G)b18!6~(qg5;57$Pe7K4(jncSVR?~6(AO@%m_{pLSiv_$Ee(m{j$N-W zlR(D_2#kKO%&bm#Ybq-Tx%~c?l9}l^SvCTS4E%1X-As~{r&g_(yVT%ocI6OYE!`*{Gzw_jUIi-g^Uij-0~q)EG$UtV8E zw@JUu*8A%7Jkxi6Aa=Zp3Z#-QK}3HRsI%wpg`gZYkmaQe6N+#X@U8Yxte7D zjmw)q4omY9BmSk}P1cMpwp@yG%-;Ex@*MI-_lJ^#z1?$OX`obTzD^w+ia)dwOLmsp z3d@lEQ>cGeVig0hpij`d9zo%Es4LXt5)T(zM8HWY%{gfI?_u&h4%qOFmxMfUMu4@ zIHPcFAeS7$nu2aPTU+H*OoxByIcZC(Lx3Ud_1M|H{=Qw=UYi)b3{Vwg2x0ljFP>Xa z)dX7<6Wx1OyXV$gg819D5xaf@Os(o{(s_e6yZ*cB=4}6z=NpVO)CiC=-AP5Eq5ZXy z+KIlkJygErq&Q7b;5Ib)G)W zEX}(*b06qVsucurF?#r9!_;^`e;i!aoOu{+VI+>^rZK+;iQ-G zfI|j#6rO-y~zOC4j z69_1PXcNiU?o&h$1y4^0h&x`L{wlvYF0esOhP-CGW7ei%5X=m@z}u?$=qEe+W7M*P zN9=wD&|kXsspW!q{(4kQZZzM@Kt)LHBnKnN~;0RIN*Z|adgoXt9auSAMT+{mUkn4PO z;@>MqXVD!QIL!AcTYDl~$FBM^I{K{jt%NNL5Hb7o61P1&MlC9znl}Uz&c^p32G2FN zafK7+mK1x6i$_JmL#uLGtt#iC$x1InAo9c9O}>|3qMvD7%tPzYp+Z2kh@|@EM;m4) zT9MFMJJek+fWGl0Z!v}MZWR5xQYiMAA89~L&Mi31;{x?0@ zQ5(#OF(^L_!#}t;d>aU|To*Mq>vo|F1?&KT4}?`9X`B{bSDZTnmP1SQzHK2uB+!GL zGMwKql#2OchAH$+dm2{U**SNL8soj5B7X75?7oeSx)^(RSAU<)ErTQp`PSBB_{>b73dUqKM8r^f_6crd8A zIX24K{mk7iNr&4R1c%oH^0LDNC?nL8gk)O#%gWG0d?Vp=41U2L&A6E_oepfA3wks8 z5`N+RN#1XBZKC)@CdVQU2q4HDA4V3sYoPruTA-|oq4>%RY&pH1N*Cx5MT@t8(3w-i z0`fIN_u$mjM7C~9ii?gJpWRHpurM)Uze z`AU`k8iS?9w^i&jZkoQi;?Sv4s#mSMIVsb|*oUrpF)tAjVY(Y0YklKsz}||hq_%&K zfP7zvpj-ZB4iHRzF4`~KcM(K-xFo6Byblb+1QRQMQfkpLO1ocHy=YOY@ZwabI;V_G z71Vi_}P*nx0jmW5lmv`IzxnTBrc5a0{!#FwIs4Wr%Z9D?UO82up4-rK0AUdhvmVb7fTzGDV{^9PLX~ zb9~%j)!QnKY&-oGsC?{vj-S7$D@&7xiHXtCfESD;&{FIV7B?p~Tm3 zFX$6wJe+ z=VJ0XPEG}=mk?^bx4J+O*F%Jd_vh~ zpdU5U0(}dMRU^Vc@!P7@^zU5T!d2&qHJ(Gp$Bn_r0^Gk+G6orxgyY1EKX3udWQml= ziv5$LN=u82U-Nxdd6;w6QeU(a_rbK;o#m$ef0wGs*1nH8sRJTBrX7ckl!cixj?PO zc~+&b5B|Yb7Rge$eEAVH7wC?yubPpOk(C%5=<2$C?k#niY*(t=&IMw8B~S(o6p$P_ zU}Wg8+8!5h(IIyI@@bCvMrY>DG)pE%*pUw)MwS<*j7YT3+pX~sR+$4EkLcurI7>$Q z%}A*cu5=l6T4WPqBEr#LzI<7fDeD|BuhXminf{qs29Mm+HvPp}Z1~D3_hsDT82-|H zF$%s$)ocmd4^>LGk>B=W)|nq17Z{!S*xA{gR({>ohObLL>kGG)G~C?Wa(n;4{FA-^ z=)D|UttiDWuL`?Lf(t@y{Sl4lkly5!m+L~KM0aq$agF}FckjAyl~;Z(X%1%Yd_+QS z*v!q%4a}LHRXvudGU7Y9CB%*E4^dVlTyztekdOmiQ%?c{xFLz;x%K7-sJN`e=334s zYk_43v&!Uw5Kc+M-Ms=W3Z|yA^XV4ILb9#_Ik$-2@SESits#Xk@0q-7WPv*Rs{kCz z$#GPmce?>ji{r+WApMhkDFWrAGle!3Ub@+;g z-Zl6tI09{q;3DpU#0b9r5B}{xVA|GO~;-aZvDq%c~?L=`v$Lgq}`_S{^tKz~a8BEi0)^LC>-9;gkKWMN&*nF(JO}MoeSLlXmCiY+(}T;UpxJ47WpjD5 zgGX3c8)%u%UtiNWyX}PYfRLGjL|nMvq{>Crak5?e_U+pxjvE^r`p`-E*n|}ueXlk4 z0(!L*kVnPPbGte_pfmR2r6xGWAw1Co_85L60?1zTfsY#h`STnPj|zAhkIktJVY}gK ziTrKoGg@uGG!Lt)9wPN87Pq;2>G<*Ea6t6awn68+0za>6H(J}6OtykMk0`w@3jByd zRue}4eppyt75?=3^Ne@f#_}X(VB_s-sC+t?UV8Y${}?s3>D_zx=&1r5W5N1o3>6ff zyoDP~I4)i!D5|N6RJzPszHe@3gmS6iu=m=KfsYh2I06Mx^f5p!mG&=wZwzFFJ-G^w zTQ!QPpdpk^{>8k{T9tEYR(7_-wv?!7ue})42k0`Jt_C^i_SFOtn-@R?HGa20b(oId z=@kzjpRlp}I1T#F*h{W?$LQ%T-ZwST!QZ~wlZ=K{BS1qB5`Z{lDI z*bL9<(^nwmXn-c6W`=CkSj2WP6N^Pqj;=en`ThG}aPwGyoo^jF8#z|F-I<~Oa(QQG$75$>67aN3u1TFSn3smB>1ziE2cWdh>s0j`d#a*} zWBB(js6B&wv;6bBk6S<>e=6BDTo-L$R=9ZKR!8W1(pRA&ntK}daDa? zFy-lwh#t7Zr9!C%1?R&te_~37ioKc{)o1g)~_E;&rziXO5jW;dFCl4 zbAY|;5w+IT*2cqXT0x*VbmT}E+(-lVE(w!Do9bLj5-ykp%*+Se&NQj>nf{saj_OU&*2(R=ea@g*})3U{JNdWU>2!th$T{g7aGH%5A$@dFoeMA zk-9oRKfje3lU@Diw0r~@*6>~DG+WY8+H|-ys=v;lWOIJE0h(ngS)~m*IXU}5(G5hL zmX;O{y*sKUNd}0&u&^+X>8uP(o3WXh91sJ)Tb-Yg&t+p{ix+oHpMhm;7WVvOJv&@u zFxmbp=TFWDh^PlK5OgZQ>8K`(-9+6(x@v-uZ+*)quy5u#d%g*ci?g$SYf!m03~a4cDA=fH#Y1|;$fl5PdIb=xjz+W_43gKC4E!5MF_WXNdi>FK4- zkeSxJe*Ky;*uikO@F?WRm8X%mb8t3cQNnSVndih`snvj%0aQe(;D-7$n~mX8I<+Lp zEN~t=bz_^}srT;Pt8`mTwXK>hwbYcZ0x}=%$#r`J9ljPHL)i`;J=zQRTXp3ch=L!U zs((bX38tc6*LVl!d|FIQx1yq=JJ=aIK70Ov$U6G&ftYj(jJvygc4p=mED?!iB1lKH z;r_hB!a^a-uFU_j*>=F=w04(#dlQ*^W5dFzTwq-Ht`lyk1-6%_Oq{q7*qq3k+XOuS z&s#`&c0>E?ySujog{I7(fByx;r0LU_dr#K`_UPWPEz|=p4dUeF1RZGy)SCAz0vH^? zBkTgh!os#{KDjeJji1Sb`w=jm0QZZpxcBz^o14lj-%YqA06e^D{l=aBi4vf~3|Q}& zrk)b{3M}m6`b)pQ3iW)J{cGE=oCKBwwV)l(!1M5cdjdj$jh)v&fDr`jGu%-Rp#Ur$#Pwn>0865)JB!mrMMX1ze|rm@j0ptVqNJ?6daJLG4`@0dCV0C_ z=Id)~fu6buT;!uVb3X_0TtTl%a=_(}KY#yz4Ln})8tB}$!%|Jn&8uziowWhxI8e2% z1}xTrJ2pU#|Mz=7^Ldvr>E1apQTgj(`F{bxd<|?v24!Td0QOD300R;@xV|@Tb}wT= z{dt?uJ;2ahz{t!7+Dfjap#j<;J!RUoWxxi;?q$(-Kc7qn)x5x578|@(W#=!6>&r9i z|9m{2b$i=dm7UYx?0>)Scgg+Q@1fP8MN(dqoSdDdue`4SE|daqAeXfc1D?dVhUf4F z>HIwlfnjy;Ry~7BpYQMf1)RWU^~sK|E~9rl9`hYOe*8G_fK&tEg8u{^;F)sAmc;|N zLKp&@HXniOZo;ka0aGHV+5^_M1y*yf{`+?|JpSs>KmT_NCe{M$e2H4%=|sSCJh$e# z^?gI&kpvksz&sQuEyP$556n=-*eHC~fQ4 zuP?kFTP|7u=dpY*u>W^=Lww7#rv^Q2Z-PLLdxqWvZY?01j;&UpZJ5nT@R_ZHw3&^? b!88A}+r}LYAYy;X#uu4Ecf`Wj6 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 literal 0 HcmV?d00001 diff --git a/docs/source/images/ls.png b/docs/source/images/ls.png new file mode 100644 index 0000000000000000000000000000000000000000..456cce027dc7f249e1b1edccb3bd48f43fbd1b5a GIT binary patch literal 9237 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

  • Install
  •  |  +
  • Support
  •  |  +
  • Bugs
  •  |  +
  • Develop
  •  |  +
  • Examples
  •  |  +
  • FAQ
  •  |  +{% endblock %} + +{# Render the Header with Banner #} + +{% block header %} +
    +
    + {% if logo %} + +Logo + {% endif %} +
    +
    +{% endblock %} + +{#{% block document %} + +{{ super() }} +{% endblock %}#} + +{#{% block document %} +{% block relbaritems %} + {% if pagename != 'index' %} +{{ title }} + {% endif %} + {% endblock %} + {{ super() }} + {% endblock %}#} + +{#{% block relbar1 %}{% endblock %} #} +{% block relbar2 %}{% endblock %} diff --git a/docs/themes/statsmodels/page.html b/docs/themes/statsmodels/page.html new file mode 100644 index 0000000..e363835 --- /dev/null +++ b/docs/themes/statsmodels/page.html @@ -0,0 +1,51 @@ +{# + Overwrites what is displayed on the examples landing page. +#} +{%- extends "layout.html" %} +{% block body %} + + +{% if pagename == 'examples/index' %} +
    +

    Statsmodels Examples

    +
    +This page provides a series of examples, tutorials and recipes to help you get started with statsmodels. Each of the examples shown here is made available as an IPython Notebook and as a plain python script on the statsmodels github repository.

    + +If you are not comfortable with git, we also encourage users to submit their own examples, tutorials or cool statsmodels tricks to the Examples wiki page. +
    + + +

    Topics

    +
    + {% for section in examples %} + + {% endfor %} + +
    + + {% for section in examples %} +

    {{ section.header }}

    + +
    +
      + {% for link in section.links %} +
    • + + + + +
    • + {% endfor %} +
    +
    + {% endfor %} +
    +{% else %} + + {{ body }} + +{% endif %} + +{% endblock %} diff --git a/docs/themes/statsmodels/relations.html b/docs/themes/statsmodels/relations.html new file mode 100644 index 0000000..f45df85 --- /dev/null +++ b/docs/themes/statsmodels/relations.html @@ -0,0 +1,32 @@ +{# + basic/relations.html + ~~~~~~~~~~~~~~~~~~~~ + + Sphinx sidebar template: relation links. + + :copyright: Copyright 2007-2010 by the Sphinx team, see AUTHORS. + :license: BSD, see LICENSE for details. +#} +{%- if prev %} +

    {{ _('Previous topic') }}

    + {%- if prev.title[:19] == "statsmodels" %} +

    {{ "sm." ~ prev.title[20:] }}

    + {%- else %} +

    {{ prev.title }}

    + + {%- endif %} +{%- endif %} + +{%- if next %} +

    {{ _('Next topic') }}

    + {%- if next.title[:19] == "statsmodels" %} +

    {{ "sm." ~ next.title[20:] }}

    + {%- else %} +

    {{ next.title }}

    + {%- endif %} + +{%- endif %} diff --git a/docs/themes/statsmodels/sidelinks.html b/docs/themes/statsmodels/sidelinks.html new file mode 100644 index 0000000..d12ffd3 --- /dev/null +++ b/docs/themes/statsmodels/sidelinks.html @@ -0,0 +1,2 @@ +

    Follow statsmodels on Twitter +Blog

    diff --git a/docs/themes/statsmodels/static/nature.css_t b/docs/themes/statsmodels/static/nature.css_t new file mode 100644 index 0000000..432fb05 --- /dev/null +++ b/docs/themes/statsmodels/static/nature.css_t @@ -0,0 +1,344 @@ +/* + * nature.css_t + * ~~~~~~~~~~~~ + * + * Sphinx stylesheet -- nature theme. + * + * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* +background-color: #ffffff; (For text) +background-color: #dbe0ea; (For banner and sidebar headers) +*/ + +@import url("basic.css"); + +/* ---------------- Header ---------------- */ + +div.header { + background-color: #dbe0ea; + color: #272A2D; +} +div.headerwrap { + background-color: #dbe0ea; + min-width: 1030px; + min-height: 85px; + margin-left: auto; + margin-right: auto; +} +div.navbar ul { + list-style-type: none; + margin-left: 230px; + text-align: right; + position: absolute; + right: 105px; + top: 103px; +} +div.navbar li { + display: inline; + /*color: #272A2D;*/ + border-bottom-right-radius: 30px; + border-bottom-left-radius: 30px; + padding: 0px 15px +} +div.related { + background-color: #dbe0ea; + line-height: 32px; + color: #272A2D; + font-size: 100%; + border-top: 1px solid white; + border-bottom: 1px solid white; + min-width: 1030px; +} +div.related a { + color: #272A2D; + font-weight: normal; + text-decoration: none +} + +/* ----------- Page layout --------- */ + +body { + font-family: Arial, sans-serif; + font-size: 100%; + /*background-color: #ffffff;*/ + color: #272A2D; + margin: 0 80px; + padding: 0; + min-width: 640px; +} + +div.documentwrapper { + background-color: #ffffff; + float: left; + width: 100%; +} + +div.bodywrapper { + margin: 0 0 0 230px; +} + +hr { + border: 1px solid #B1B4B6; +} + +div.document { + min-width: 1030px; +} + +div.body { + min-width: 740px; + padding: 0 30px 30px 30px; + /*font-size: 0.9em;*/ +} + +/* -------------- Footer -------------- */ +div.footer { + background-color: ffffff; + color: #272A2D; + width: 100%; + padding: 13px 0; + text-align: center; + font-size: 75%; +} + +/* -------------- Sidebar -------------- */ +div.sphinxsidebar { + /*background-color: #dbe0ea;*/ + /*background-color: #ffffff;*/ + font-size: 0.85em; + line-height: 1.5em; + word-wrap: break-word; +} +div.sphinxsidebarwrapper{ + padding: 20px 0; +} +div.sphinxsidebar h3, +div.sphinxsidebar h4 { + font-family: Arial, sans-serif; + color: #272A2D; + font-size: 1.2em; + font-weight: normal; + margin: 0; + padding: 5px 10px; + background-color: #dbe0ea; +} +div.sphinxsidebar h4{ + font-size: 1.1em; +} +div.sphinxsidebar p { + /*color: #888;*/ + color: #272A2D + padding: 5px 15px; +} +div.sphinxsidebar ul { + margin: 10px 20px; + padding: 0; + color: #000; +} +div.sphinxsidebar input { + border: 1px solid #ccc; + font-family: sans-serif; + font-size: 1em; +} +div.sphinxsidebar a{ + text-decoration: none +} + +div.sphinxsidebar input[type=text]{ + margin-left: 15px; +} + +/* -------- body styles ------- */ +div.body h1, +div.body h2, +div.body h3, +div.body h4, +div.body h5, +div.body h6 { + font-family: "Georgia", "Times New Roman", serif; + font-weight: normal; } +} + +div.body h1{ +} + +div.body h1 { + font-size: 250% ; + /*border-top: 20px solid #ffffff; */ + margin-top: 0 ; + word-wrap: break-word; + margin: 30px 0px 10px 0px; + /*padding: 5px 0 5px 10px*/ +} +div.body h2 { font-size: 184%} +div.body h3 { font-size: 142%} +div.body h4 { font-size: 125%} +div.body h5 { font-size: 100%} +div.body h6 { font-size: 100%} + +div.body a{ + text-decoration: none +} +div.body a:hover{ + text-decoration: underline +} + +/* --------- Header links ---------- */ +a.headerlink { + color: #ffffff; + /*padding: 0 4px 0 4px;*/ +} +a.headerlink:hover { + color: #dbe0ea +} + +/* ------------ Other stuff ------------ */ +div.body p, div.body dd, div.body li { + line-height: 1.5em; +} + +div.admonition p.admonition-title + p { + display: inline; +} + +div.highlight{ + background-color: white; +} + +div.note { + background-color: #ffffff; + border: 1px solid #ccc; +} + +div.seealso { + background-color: #ffc; + border: 1px solid #ff6; +} + +div.topic { + background-color: #ffffff; +} + +div.warning { + background-color: #ffe4e4; + border: 1px solid #f66; +} + +p.admonition-title { + display: inline; +} + +p.admonition-title:after { + content: ":"; +} + +pre { + padding: 10px; + /*background-color: White;*/ + background-color: #fafafa; + color: #222; + line-height: 1.2em; + border: 1px solid #C6C9CB; + font-size: 1.1em; + margin: 1.5em 0 1.5em 0; + -webkit-box-shadow: 1px 1px 1px #d8d8d8; + -moz-box-shadow: 1px 1px 1px #d8d8d8; +} + +.pre { + font-size: 125%; +} + +tt { + background-color: #ecf0f3; + color: #222; + /* padding: 1px 2px; */ + font-size: 1.1em; + font-family: monospace; +} + +.viewcode-back { + font-family: Arial, sans-serif; +} + +div.viewcode-block:target { + background-color: #f4debf; + border-top: 1px solid #ac9; + border-bottom: 1px solid #ac9; +} + +/* For docstrings */ + +.field-name { + white-space: nowrap; +} + +.field-body { + margin-top: 2px; + margin-bottom: 2px; + max-width: 600px; +} + +/* For notebooks */ +div.input_area>div.highlight>pre { + -webkit-box-shadow: none; + -moz-box-shadow: none; +} + +div.output_area pre { + -webkit-box-shadow: none; + -moz-box-shadow: none; +} + +div.sphinxsidebar #searchbox input[type="text"] { + width: auto; +} + +div.searchformwrapper { + overflow: hidden; +} + +/* Dropdown Button */ +.dropbtn { + background-color: #dbe0ea; + padding: 16px; + font-size: 16px; + border: none; +} + +/* The container
    - needed to position the dropdown content */ +.dropdown { + float: right; + display: inline-block; +} + +/* Dropdown Content (Hidden by Default) */ +.dropdown-content { + display: none; + position: absolute; + background-color: #ecf1fb; + min-width: 120px; + box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); + z-index: 1; +} + +/* Links inside the dropdown */ +.dropdown-content a { + color: black; + padding: 12px 16px; + text-decoration: none; + display: block; +} + +/* Change color of dropdown links on hover */ +.dropdown-content a:hover {background-color: #ddd;} + +/* Show the dropdown menu on hover */ +.dropdown:hover .dropdown-content {display: block;} + +/* Change the background color of the dropdown button when the dropdown content is shown */ +.dropdown:hover .dropbtn {background-color: #ecf1fb;} diff --git a/docs/themes/statsmodels/static/statsmodels_hybi_banner.png b/docs/themes/statsmodels/static/statsmodels_hybi_banner.png new file mode 100644 index 0000000000000000000000000000000000000000..4501c40612bc9333807c9e32d66fd6441b3137dd GIT binary patch literal 31211 zcmXtA1yqym+gA~gmhPT(i{t?5ZbrPcv~)Kp&1jH@5h5{RNH+*bNeo2k?(WX-;eXC| zIMg_M*zR5Tb^YpIw1%2I4kiWWvuDq66cuE&o;`bB0Q?Mjg$8_GnltnTzCCx>l9zgh z7@^t*enI=7EHCry@#!PKtt17w1;a(b!2Q`XDu$=e=heshq`-~n9*U~6=yMpPFF-i! z?0gf?p3yy1l#$f&nc2(r&Y`wCe_R~jtl!VB-_CvgqCjwac=Q(+gFsQg-rDZufgY;n z^KYf^U%te`4B9sS_zCp#Mc5f8eVfC;#B9mKgU`muLW{p(T=Ct3FTOyNzs*Lb4NQ1b zIM01#Q^DEU_Iw&;!1527+)IPBXNjQbgzBqy+69Z_MTvg$qO=6J#j^ zaan&bqQ6Beq~*pz?~!J!Moc(Jy|+PdlfrhWM{X&U|9$xJUd3}iL3hn0s7?_BZBeP{ z>}S$1W>tNRgM96WxE{6xyghk1pdP4~I=rYAO{U z`+=E0yyPVGdX%5@NW^<(;9N~D`Z@)KVUVT?@oW&pBu@C>LUn}W?_l-#!V(Jmi?mp= z$KOwS1R!OTe|l0IO-d(&z{qYq?5Is&A6N{CouxXK2*mrUVtP@X#YZyUV%3+1fR9F; zKwNxf&gn?hAT5a)b@BA*#cGDq#gY)NxHz;>BefK>mma~$j@gX($_5phAVnMYGSy@r&|g0d3NK@+HgbT4RK;{CYjv^^x4xlOBv|zp!((?|7U7Dpi

    0Cz8dD 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%0AlV^(O8ryKy<}am&&C&Z2QU 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 W{3nVaQUG6Kek3QQBv~qM;QK$WpT&Cs literal 0 HcmV?d00001 diff --git a/docs/themes/statsmodels/theme.conf b/docs/themes/statsmodels/theme.conf new file mode 100644 index 0000000..1cc4004 --- /dev/null +++ b/docs/themes/statsmodels/theme.conf @@ -0,0 +1,4 @@ +[theme] +inherit = basic +stylesheet = nature.css +pygments_style = tango diff --git a/examples/incomplete/arima.py b/examples/incomplete/arima.py new file mode 100644 index 0000000..384b840 --- /dev/null +++ b/examples/incomplete/arima.py @@ -0,0 +1,53 @@ +from __future__ import print_function +from statsmodels.datasets.macrodata import load_pandas +from statsmodels.tsa.base.datetools import dates_from_range +from statsmodels.tsa.arima_model import ARIMA +import matplotlib.pyplot as plt +import numpy as np +from scipy import stats +import statsmodels.api as sm +plt.interactive(False) + +# let's examine an ARIMA model of CPI + +cpi = load_pandas().data['cpi'] +dates = dates_from_range('1959q1', '2009q3') +cpi.index = dates + +res = ARIMA(cpi, (1, 1, 1), freq='Q').fit() +print(res.summary()) + +# we can look at the series +cpi.diff().plot() + +# maybe logs are better +log_cpi = np.log(cpi) + +# check the ACF and PCF plots +acf, confint_acf = sm.tsa.acf(log_cpi.diff().values[1:], confint=95) +# center the confidence intervals about zero +# TODO: demean? --> confint_acf -= confint_acf.mean(1)[:, None] +pacf = sm.tsa.pacf(log_cpi.diff().values[1:], method='ols') +# confidence interval is now an option to pacf +confint_pacf = stats.norm.ppf(1 - .025) * np.sqrt(1 / 202.) + +fig = plt.figure() +ax = fig.add_subplot(121) +ax.set_title('Autocorrelation') +ax.plot(range(41), acf, 'bo', markersize=5) +ax.vlines(range(41), 0, acf) +ax.fill_between(range(41), confint_acf[:, 0], confint_acf[:, 1], alpha=.25) +fig.tight_layout() +ax = fig.add_subplot(122, sharey=ax) +ax.vlines(range(41), 0, pacf) +ax.plot(range(41), pacf, 'bo', markersize=5) +ax.fill_between(range(41), -confint_pacf, confint_pacf, alpha=.25) + + +# TODO: you'll be able to just to this when tsa-plots is in master +# sm.graphics.acf_plot(x, nlags=40) +# sm.graphics.pacf_plot(x, nlags=40) + + +# still some seasonality +# try an arma(1, 1) with ma(4) term diff --git a/examples/incomplete/arma2.py b/examples/incomplete/arma2.py new file mode 100644 index 0000000..d699c77 --- /dev/null +++ b/examples/incomplete/arma2.py @@ -0,0 +1,28 @@ +""" +Autoregressive Moving Average (ARMA) Model +""" +import numpy as np +import pandas as pd +import statsmodels.api as sm + +# Generate some data from an ARMA process +from statsmodels.tsa.arima_process import arma_generate_sample + +np.random.seed(12345) +arparams = np.array([.75, -.25]) +maparams = np.array([.65, .35]) + +# The conventions of the arma_generate function require that we specify a +# 1 for the zero-lag of the AR and MA parameters and that the AR parameters +# be negated. +ar = np.r_[1, -arparams] +ma = np.r_[1, maparams] +nobs = 250 +y = arma_generate_sample(ar, ma, nobs) + +# Now, optionally, we can add some dates information. For this example, +# we'll use a pandas time series. +dates = sm.tsa.datetools.dates_from_range('1980m1', length=nobs) +y = pd.Series(y, index=dates) +arma_mod = sm.tsa.ARMA(y, order=(2, 2)) +arma_res = arma_mod.fit(trend='nc', disp=-1) diff --git a/examples/incomplete/dates.py b/examples/incomplete/dates.py new file mode 100644 index 0000000..c54eaf7 --- /dev/null +++ b/examples/incomplete/dates.py @@ -0,0 +1,45 @@ +""" +Using dates with timeseries models +""" +import statsmodels.api as sm +import pandas as pd + +# Getting started +# --------------- + +data = sm.datasets.sunspots.load() + +# Right now an annual date series must be datetimes at the end of the year. + +dates = sm.tsa.datetools.dates_from_range('1700', length=len(data.endog)) + +# Using Pandas +# ------------ + +# Make a pandas Series or DataFrame with DatetimeIndex +endog = pd.Series(data.endog, index=dates) + +# and instantiate the model +ar_model = sm.tsa.AR(endog, freq='A') +pandas_ar_res = ar_model.fit(maxlag=9, method='mle', disp=-1) + +# Let's do some out-of-sample prediction +pred = pandas_ar_res.predict(start='2005', end='2015') +print(pred) + +# Using explicit dates +# -------------------- + +ar_model = sm.tsa.AR(data.endog, dates=dates, freq='A') +ar_res = ar_model.fit(maxlag=9, method='mle', disp=-1) +pred = ar_res.predict(start='2005', end='2015') +print(pred) + +# This just returns a regular array, but since the model has date information +# attached, you can get the prediction dates in a roundabout way. + +print(ar_res.data.predict_dates) + +# This attribute only exists if predict has been called. It holds the dates +# associated with the last call to predict. +# TODO: should this be attached to the results instance? diff --git a/examples/incomplete/glsar.py b/examples/incomplete/glsar.py new file mode 100644 index 0000000..18efabb --- /dev/null +++ b/examples/incomplete/glsar.py @@ -0,0 +1,153 @@ +""" +Generalized Least Squares with AR Errors + +6 examples for GLSAR with artificial data +""" + +# .. note: These examples were written mostly to cross-check results. It is +# still being written, and GLSAR is still being worked on. + + +import numpy as np +import numpy.testing as npt +from scipy import signal +import statsmodels.api as sm +from statsmodels.regression.linear_model import GLSAR, yule_walker + +examples_all = range(10) + ['test_copy'] + +examples = examples_all # [5] + +if 0 in examples: + print('\n Example 0') + X = np.arange(1, 8) + X = sm.add_constant(X, prepend=False) + Y = np.array((1, 3, 4, 5, 8, 10, 9)) + rho = 2 + model = GLSAR(Y, X, 2) + for i in range(6): + results = model.fit() + print('AR coefficients:', model.rho) + rho, sigma = yule_walker(results.resid, order=model.order) + model = GLSAR(Y, X, rho) + + par0 = results.params + print('params fit', par0) + model0if = GLSAR(Y, X, 2) + res = model0if.iterative_fit(6) + print('iterativefit beta', res.params) + results.tvalues # TODO: is this correct? it does equal params/bse + # but isn't the same as the AR example (which was wrong in the first place) + print(results.t_test([0, 1])) # are sd and t correct? vs + print(results.f_test(np.eye(2))) + + +rhotrue = np.array([0.5, 0.2]) +nlags = np.size(rhotrue) +beta = np.array([0.1, 2]) +noiseratio = 0.5 +nsample = 2000 +x = np.arange(nsample) +X1 = sm.add_constant(x, prepend=False) + +wnoise = noiseratio * np.random.randn(nsample + nlags) +# .. noise = noise[1:] + rhotrue*noise[:-1] # wrong this is not AR + +# .. find my drafts for univariate ARMA functions +# generate AR(p) +if np.size(rhotrue) == 1: + # replace with scipy.signal.lfilter, keep for testing + arnoise = np.zeros(nsample + 1) + for i in range(1, nsample + 1): + arnoise[i] = rhotrue * arnoise[i - 1] + wnoise[i] + noise = arnoise[1:] + an = signal.lfilter([1], np.hstack((1, -rhotrue)), wnoise[1:]) + print('simulate AR(1) difference', np.max(np.abs(noise - an))) +else: + noise = signal.lfilter([1], np.hstack((1, -rhotrue)), wnoise)[nlags:] + +# generate GLS model with AR noise +y1 = np.dot(X1, beta) + noise + +if 1 in examples: + print('\nExample 1: iterative_fit and repeated calls') + mod1 = GLSAR(y1, X1, 1) + res = mod1.iterative_fit() + print(res.params) + print(mod1.rho) + mod1 = GLSAR(y1, X1, 2) + for i in range(5): + res1 = mod1.iterative_fit(2) + print(mod1.rho) + print(res1.params) + +if 2 in examples: + print('\nExample 2: iterative fitting of first model') + print('with AR(0)', par0) + parold = par0 + mod0 = GLSAR(Y, X, 1) + for i in range(5): + res0 = mod0.iterative_fit(1) + print('rho', mod0.rho) + parnew = res0.params + print('params', parnew,) + print('params change in iteration', parnew - parold) + parold = parnew + +# generate pure AR(p) process +Y = noise + +# example with no regressor, +# results now have same estimated rho as yule-walker directly + +if 3 in examples: + print('\nExample 3: pure AR(2), GLSAR versus Yule_Walker') + model3 = GLSAR(Y, rho=2) + for i in range(5): + results = model3.fit() + print("AR coefficients:", model3.rho, results.params) + rho, sigma = yule_walker(results.resid, order=model3.order) + model3 = GLSAR(Y, rho=rho) + +if 'test_copy' in examples: + xx = X.copy() + rhoyw, sigmayw = yule_walker(xx[:, 0], order=2) + print(rhoyw, sigmayw) + print((xx == X).all()) # test for unchanged array (fixed) + + yy = Y.copy() + rhoyw, sigmayw = yule_walker(yy, order=2) + print(rhoyw, sigmayw) + print((yy == Y).all()) # test for unchanged array (fixed) + + +if 4 in examples: + print('\nExample 4: demeaned pure AR(2), GLSAR versus Yule_Walker') + Ydemeaned = Y - Y.mean() + model4 = GLSAR(Ydemeaned, rho=2) + for i in range(5): + results = model4.fit() + print("AR coefficients:", model3.rho, results.params) + rho, sigma = yule_walker(results.resid, order=model4.order) + model4 = GLSAR(Ydemeaned, rho=rho) + +if 5 in examples: + print('\nExample 5: pure AR(2), GLSAR iterative_fit versus Yule_Walker') + model3a = GLSAR(Y, rho=1) + res3a = model3a.iterative_fit(5) + print(res3a.params) + print(model3a.rho) + rhoyw, sigmayw = yule_walker(Y, order=1) + print(rhoyw, sigmayw) + npt.assert_array_almost_equal(model3a.rho, rhoyw, 15) + for i in range(6): + model3b = GLSAR(Y, rho=0.1) + print(i, model3b.iterative_fit(i).params, model3b.rho) + + model3b = GLSAR(Y, rho=0.1) + for i in range(6): + print(i, model3b.iterative_fit(2).params, model3b.rho) + + +print(np.array(res.history['params'])) +print(np.array(res.history['rho'])) diff --git a/examples/incomplete/ols_table.py b/examples/incomplete/ols_table.py new file mode 100644 index 0000000..dfa7efa --- /dev/null +++ b/examples/incomplete/ols_table.py @@ -0,0 +1,69 @@ +"""Example: statsmodels.OLS +""" + +from statsmodels.datasets.longley import load +import statsmodels.api as sm +from statsmodels.iolib.table import SimpleTable, default_txt_fmt +import numpy as np + +data = load() + +data_orig = (data.endog.copy(), data.exog.copy()) + +# Note: In this example using zscored/standardized variables has no effect on +# regression estimates. Are there no numerical problems? + +rescale = 0 +# 0: no rescaling, 1:demean, 2:standardize, 3:standardize and transform back +rescale_ratio = data.endog.std() / data.exog.std(0) +if rescale > 0: + # rescaling + data.endog -= data.endog.mean() + data.exog -= data.exog.mean(0) +if rescale > 1: + data.endog /= data.endog.std() + data.exog /= data.exog.std(0) + +# skip because mean has been removed, but dimension is hardcoded in table +data.exog = sm.tools.add_constant(data.exog, prepend=False) + + +ols_model = sm.OLS(data.endog, data.exog) +ols_results = ols_model.fit() + +# the Longley dataset is well known to have high multicollinearity +# one way to find the condition number is as follows + + +# Find OLS parameters for model with one explanatory variable dropped + +resparams = np.nan * np.ones((7, 7)) +res = sm.OLS(data.endog, data.exog).fit() +resparams[:, 0] = res.params + +indall = range(7) +for i in range(6): + ind = indall[:] + del ind[i] + res = sm.OLS(data.endog, data.exog[:, ind]).fit() + resparams[ind, i + 1] = res.params + +if rescale == 1: + pass +if rescale == 3: + resparams[:-1, :] *= rescale_ratio[:, None] + +txt_fmt1 = default_txt_fmt +numformat = '%10.4f' +txt_fmt1 = dict(data_fmts=[numformat]) +rowstubs = data.names[1:] + ['const'] +headers = ['all'] + ['drop %s' % name for name in data.names[1:]] +tabl = SimpleTable(resparams, headers, rowstubs, txt_fmt=txt_fmt1) + +nanstring = numformat % np.nan +nn = len(nanstring) +nanrep = ' ' * (nn - 1) +nanrep = nanrep[:nn // 2] + '-' + nanrep[nn // 2:] + +print('Longley data - sensitivity to dropping an explanatory variable') +print(str(tabl).replace(nanstring, nanrep)) diff --git a/examples/incomplete/ols_tftest.py b/examples/incomplete/ols_tftest.py new file mode 100644 index 0000000..f53cc94 --- /dev/null +++ b/examples/incomplete/ols_tftest.py @@ -0,0 +1,194 @@ +"""examples for usage of F-test on linear restrictions in OLS + +linear restriction is R \beta = 0 +R is (nr,nk), beta is (nk,1) (in matrix notation) + + +TODO: clean this up for readability and explain + +Notes +----- +This example was written mostly for cross-checks and refactoring. +""" + +import numpy as np +import numpy.testing as npt +from scipy import stats +import statsmodels.api as sm + +print('\n\n Example 1: Longley Data, high multicollinearity') + +data = sm.datasets.longley.load() +data.exog = sm.add_constant(data.exog, prepend=False) +res = sm.OLS(data.endog, data.exog).fit() + +# test pairwise equality of some coefficients +R2 = [[0, 1, -1, 0, 0, 0, 0], [0, 0, 0, 0, 1, -1, 0]] +Ftest = res.f_test(R2) +print(repr((Ftest.fvalue, Ftest.pvalue))) # use repr to get more digits +# 9.740461873303655 0.0056052885317360301 + +# Compare to R (after running R_lm.s in the longley folder) +# +# > library(car) +# > linear.hypothesis(m1, c("GNP = UNEMP","POP = YEAR")) +# Linear hypothesis test +# +# Hypothesis: +# GNP - UNEMP = 0 +# POP - YEAR = 0 +# +# Model 1: TOTEMP ~ GNPDEFL + GNP + UNEMP + ARMED + POP + YEAR +# Model 2: restricted model +# +# Res.Df RSS Df Sum of Sq F Pr(>F) +# 1 9 836424 +# 2 11 2646903 -2 -1810479 9.7405 0.005605 ** + +print('Regression Results Summary') +print(res.summary()) + + +print('\n F-test whether all variables have zero effect') +R = np.eye(7)[:-1, :] +Ftest0 = res.f_test(R) +print(repr((Ftest0.fvalue, Ftest0.pvalue))) +print('%r' % res.fvalue) +npt.assert_almost_equal(res.fvalue, Ftest0.fvalue, decimal=9) + +ttest0 = res.t_test(R[0, :]) +print(repr((ttest0.tvalue, ttest0.pvalue))) + +betatval = res.tvalues +betatval[0] +npt.assert_almost_equal(betatval[0], ttest0.tvalue, decimal=15) + +""" +# several ttests at the same time +# currently not checked for this, but it (kind of) works +>>> ttest0 = res.t_test(R[:2,:]) +>>> print(repr((ttest0.t, ttest0.pvalue)) +(array([[ 0.17737603, NaN], + [ NaN, -1.06951632]]), array([[ 0.43157042, 1. ], + [ 1. , 0.84365947]])) + +>>> ttest0 = res.t_test(R) +>>> ttest0.t +array([[ 1.77376028e-01, NaN, NaN, + NaN, -1.43660623e-02, 2.15494063e+01], + [ NaN, -1.06951632e+00, -1.62440215e+01, + -1.78173553e+01, NaN, NaN], + [ NaN, -2.88010561e-01, -4.13642736e+00, + -4.06097408e+00, NaN, NaN], + [ NaN, -6.17679489e-01, -7.94027056e+00, + -4.82198531e+00, NaN, NaN], + [ 4.23409809e+00, NaN, NaN, + NaN, -2.26051145e-01, 2.89324928e+02], + [ 1.77445341e-01, NaN, NaN, + NaN, -8.08336103e-03, 4.01588981e+00]]) +>>> betatval +array([ 0.17737603, -1.06951632, -4.13642736, -4.82198531, -0.22605114, + 4.01588981, -3.91080292]) +>>> ttest0.t +array([ 0.17737603, -1.06951632, -4.13642736, -4.82198531, -0.22605114, + 4.01588981]) +""" + +print('\nsimultaneous t-tests') +ttest0 = res.t_test(R2) + +t2 = ttest0.tvalue +print(ttest0.tvalue) +print(t2) +t2a = np.r_[res.t_test(np.array(R2)[0, :]).tvalue, + res.t_test(np.array(R2)[1, :]).tvalue] +print(t2 - t2a) +t2pval = ttest0.pvalue +print('%r' % t2pval) # reject +# array([ 9.33832896e-04, 9.98483623e-01]) +print('reject') +print('%r' % (t2pval < 0.05)) + +# f_test needs 2-d currently +Ftest2a = res.f_test(np.asarray(R2)[:1, :]) +print(repr((Ftest2a.fvalue, Ftest2a.pvalue))) +Ftest2b = res.f_test(np.asarray(R2)[1:2, :]) +print(repr((Ftest2b.fvalue, Ftest2b.pvalue))) + +print('\nequality of t-test and F-test') +print(t2a**2 - np.array((Ftest2a.fvalue, Ftest2b.fvalue))) +npt.assert_almost_equal(t2a**2, np.vstack((Ftest2a.fvalue, Ftest2b.fvalue))) +npt.assert_almost_equal(t2pval * 2, + np.c_[Ftest2a.pvalue, Ftest2b.pvalue].squeeze()) + + +print('\n\n Example 2: Artificial Data') + +nsample = 100 +ncat = 4 +sigma = 2 +xcat = np.linspace(0, ncat - 1, nsample).round()[:, np.newaxis] +dummyvar = (xcat == np.arange(ncat)).astype(float) + +beta = np.array([0., 2, -2, 1])[:, np.newaxis] +ytrue = np.dot(dummyvar, beta) +X = sm.tools.add_constant(dummyvar[:, :-1], prepend=False) +y = ytrue + sigma * np.random.randn(nsample, 1) +mod2 = sm.OLS(y[:, 0], X) +res2 = mod2.fit() + +print(res2.summary()) + +R3 = np.eye(ncat)[:-1, :] +Ftest = res2.f_test(R3) +print(repr((Ftest.fvalue, Ftest.pvalue))) +R3 = np.atleast_2d([0, 1, -1, 2]) +Ftest = res2.f_test(R3) +print(repr((Ftest.fvalue, Ftest.pvalue))) + +print('simultaneous t-test for zero effects') +R4 = np.eye(ncat)[:-1, :] +ttest = res2.t_test(R4) +print(repr((ttest.tvalue, ttest.pvalue))) + + +R5 = np.atleast_2d([0, 1, 1, 2]) +np.dot(R5, res2.params) +Ftest = res2.f_test(R5) +print(repr((Ftest.fvalue, Ftest.pvalue))) +ttest = res2.t_test(R5) +print(repr((ttest.tvalue, ttest.pvalue))) + +R6 = np.atleast_2d([1, -1, 0, 0]) +np.dot(R6, res2.params) +Ftest = res2.f_test(R6) +print(repr((Ftest.fvalue, Ftest.pvalue))) +ttest = res2.t_test(R6) +print(repr((ttest.tvalue, ttest.pvalue))) + +R7 = np.atleast_2d([1, 0, 0, 0]) +np.dot(R7, res2.params) +Ftest = res2.f_test(R7) +print(repr((Ftest.fvalue, Ftest.pvalue))) +ttest = res2.t_test(R7) +print(repr((ttest.tvalue, ttest.pvalue))) + + +print('\nExample: 2 categories: replicate stats.glm and stats.ttest_ind') + +mod2 = sm.OLS(y[xcat.flat < 2][:, 0], X[xcat.flat < 2, :][:, (0, -1)]) +res2 = mod2.fit() + +R8 = np.atleast_2d([1, 0]) +np.dot(R8, res2.params) +Ftest = res2.f_test(R8) +print(repr((Ftest.fvalue, Ftest.pvalue))) +print(repr((np.sqrt(Ftest.fvalue), Ftest.pvalue))) +ttest = res2.t_test(R8) +print(repr((ttest.tvalue, ttest.pvalue))) + + +print(stats.glm(y[xcat < 2].ravel(), xcat[xcat < 2].ravel())) +print(stats.ttest_ind(y[xcat == 0], y[xcat == 1])) + +# TODO: compare with f_oneway diff --git a/examples/incomplete/wls_extended.py b/examples/incomplete/wls_extended.py new file mode 100644 index 0000000..20bbaa0 --- /dev/null +++ b/examples/incomplete/wls_extended.py @@ -0,0 +1,403 @@ +""" +Weighted Least Squares + +example is extended to look at the meaning of rsquared in WLS, +at outliers, compares with RLM and a short bootstrap + +""" +from __future__ import print_function +import numpy as np +import statsmodels.api as sm +import matplotlib.pyplot as plt + +data = sm.datasets.ccard.load() +data.exog = sm.add_constant(data.exog, prepend=False) +ols_fit = sm.OLS(data.endog, data.exog).fit() + +# perhaps the residuals from this fit depend on the square of income +incomesq = data.exog[:, 2] +plt.scatter(incomesq, ols_fit.resid) +# @savefig wls_resid_check.png +plt.grid() + + +# If we think that the variance is proportional to income**2 +# we would want to weight the regression by income +# the weights argument in WLS weights the regression by its square root +# and since income enters the equation, if we have income/income +# it becomes the constant, so we would want to perform +# this type of regression without an explicit constant in the design + +wls_fit = sm.WLS(data.endog, data.exog[:, :-1], weights=1/incomesq).fit() + +# This however, leads to difficulties in interpreting the post-estimation +# statistics. Statsmodels does not yet handle this elegantly, but +# the following may be more appropriate + +# explained sum of squares +ess = wls_fit.uncentered_tss - wls_fit.ssr +# rsquared +rsquared = ess/wls_fit.uncentered_tss +# mean squared error of the model +mse_model = ess/(wls_fit.df_model + 1) # add back the dof of the constant +# f statistic +fvalue = mse_model/wls_fit.mse_resid +# adjusted r-squared +rsquared_adj = 1 - (wls_fit.nobs)/(wls_fit.df_resid)*(1-rsquared) + + +# Trying to figure out what's going on in this example +# ---------------------------------------------------- + +# JP: I need to look at this again. Even if I exclude the weight variable +# from the regressors and keep the constant in then the reported rsquared +# stays small. Below also compared using squared or sqrt of weight variable. +# TODO: need to add 45 degree line to graphs +wls_fit3 = sm.WLS(data.endog, data.exog[:, (0, 1, 3, 4)], + weights=1/incomesq).fit() +print(wls_fit3.summary()) +print('corrected rsquared') +print((wls_fit3.uncentered_tss - wls_fit3.ssr)/wls_fit3.uncentered_tss) +plt.figure() +plt.title('WLS dropping heteroscedasticity variable from regressors') +plt.plot(data.endog, wls_fit3.fittedvalues, 'o') +plt.xlim([0, 2000]) +# @savefig wls_drop_het.png +plt.ylim([0, 2000]) +print('raw correlation of endog and fittedvalues') +print(np.corrcoef(data.endog, wls_fit.fittedvalues)) +print('raw correlation coefficient of endog and fittedvalues squared') +print(np.corrcoef(data.endog, wls_fit.fittedvalues)[0, 1]**2) + +# compare with robust regression, +# heteroscedasticity correction downweights the outliers +rlm_fit = sm.RLM(data.endog, data.exog).fit() +plt.figure() +plt.title('using robust for comparison') +plt.plot(data.endog, rlm_fit.fittedvalues, 'o') +plt.xlim([0, 2000]) +# @savefig wls_robust_compare.png +plt.ylim([0, 2000]) + + +# What is going on? A more systematic look at the data +# ---------------------------------------------------- + +# two helper functions + +def getrsq(fitresult): + '''calculates rsquared residual, total and explained sums of squares + + Parameters + ---------- + fitresult : instance of Regression Result class, or tuple of (resid, endog) + arrays regression residuals and endogenous variable + + Returns + ------- + rsquared + residual sum of squares + (centered) total sum of squares + explained sum of squares (for centered) + ''' + if hasattr(fitresult, 'resid') and hasattr(fitresult, 'model'): + resid = fitresult.resid + endog = fitresult.model.endog + nobs = fitresult.nobs + else: + resid = fitresult[0] + endog = fitresult[1] + nobs = resid.shape[0] + + rss = np.dot(resid, resid) + tss = np.var(endog)*nobs + return 1-rss/tss, rss, tss, tss-rss + + +def index_trim_outlier(resid, k): + '''returns indices to residual array with k outliers removed + + Parameters + ---------- + resid : array_like, 1d + data vector, usually residuals of a regression + k : int + number of outliers to remove + + Returns + ------- + trimmed_index : array, 1d + index array with k outliers removed + outlier_index : array, 1d + index array of k outliers + + Notes + ----- + + Outliers are defined as the k observations with the largest + absolute values. + + ''' + sort_index = np.argsort(np.abs(resid)) + # index of non-outlier + trimmed_index = np.sort(sort_index[:-k]) + outlier_index = np.sort(sort_index[-k:]) + return trimmed_index, outlier_index + + +# Comparing estimation results for ols, rlm and wls with and without outliers +# --------------------------------------------------------------------------- + +olskeep, olsoutl = index_trim_outlier(ols_fit.resid, 2) +print('ols outliers', olsoutl, ols_fit.resid[olsoutl]) +ols_fit_rm2 = sm.OLS(data.endog[olskeep], data.exog[olskeep, :]).fit() +rlm_fit_rm2 = sm.RLM(data.endog[olskeep], data.exog[olskeep, :]).fit() + +results = [ols_fit, ols_fit_rm2, rlm_fit, rlm_fit_rm2] +# Note: I think incomesq is already square +for weights in [1/incomesq, 1/incomesq**2, np.sqrt(incomesq)]: + print('\nComparison OLS and WLS with and without outliers') + wls_fit0 = sm.WLS(data.endog, data.exog, weights=weights).fit() + wls_fit_rm2 = sm.WLS(data.endog[olskeep], data.exog[olskeep, :], + weights=weights[olskeep]).fit() + wlskeep, wlsoutl = index_trim_outlier(ols_fit.resid, 2) + print('2 outliers candidates and residuals') + print(wlsoutl, wls_fit.resid[olsoutl]) + # redundant because ols and wls outliers are the same: + # wls_fit_rm2_ = sm.WLS(data.endog[wlskeep], data.exog[wlskeep, :], + # weights=1/incomesq[wlskeep]).fit() + + print('outliers ols, wls:', olsoutl, wlsoutl) + + print('rsquared') + print('ols vs ols rm2', ols_fit.rsquared, ols_fit_rm2.rsquared) + print('wls vs wls rm2', wls_fit0.rsquared, wls_fit_rm2.rsquared) + print('compare R2_resid versus R2_wresid') + print('ols minus 2', getrsq(ols_fit_rm2)[0],) + print(getrsq((ols_fit_rm2.wresid, ols_fit_rm2.model.wendog))[0]) + print('wls ', getrsq(wls_fit)[0],) + print(getrsq((wls_fit.wresid, wls_fit.model.wendog))[0]) + + print('wls minus 2', getrsq(wls_fit_rm2)[0]) + # next is same as wls_fit_rm2.rsquared for cross checking + print(getrsq((wls_fit_rm2.wresid, wls_fit_rm2.model.wendog))[0]) + results.extend([wls_fit0, wls_fit_rm2]) + +print(' ols ols_rm2 rlm rlm_rm2 ' + 'wls (lin) wls_rm2 (lin) ' + 'wls (squ) wls_rm2 (squ) ' + 'wls (sqrt) wls_rm2 (sqrt)') +print('Parameter estimates') +print(np.column_stack([r.params for r in results])) +print('R2 original data, next line R2 weighted data') +print(np.column_stack([getattr(r, 'rsquared', None) for r in results])) + +print('Standard errors') +print(np.column_stack([getattr(r, 'bse', None) for r in results])) +print('Heteroscedasticity robust standard errors (with ols)') +print('with outliers') +print(np.column_stack([getattr(ols_fit, se, None) + for se in ['HC0_se', 'HC1_se', 'HC2_se', 'HC3_se']])) + +''' +# .. +# .. +# .. ols ols_rm2 rlm rlm_rm2 wls (lin) wls_rm2 (lin) wls (squ) wls_rm2 (squ) wls (sqrt) wls_rm2 (sqrt) +# ..Parameter estimates +# ..[[ -3.08181404 -5.06103843 -4.98510966 -5.34410309 -2.69418516 -3.1305703 -1.43815462 -1.58893054 -3.57074829 -6.80053364] +# .. [ 234.34702702 115.08753715 129.85391456 109.01433492 158.42697752 128.38182357 60.95113284 100.25000841 254.82166855 103.75834726] +# .. [ -14.99684418 -5.77558429 -6.46204829 -4.77409191 -7.24928987 -7.41228893 6.84943071 -3.34972494 -16.40524256 -4.5924465 ] +# .. [ 27.94090839 85.46566835 89.91389709 95.85086459 60.44877369 79.7759146 55.9884469 60.97199734 -3.8085159 84.69170048] +# .. [-237.1465136 39.51639838 -15.50014814 31.39771833 -114.10886935 -40.04207242 -6.41976501 -38.83583228 -260.72084271 117.20540179]] +# .. +# ..R2 original data, next line R2 weighted data +# ..[[ 0.24357792 0.31745994 0.19220308 0.30527648 0.22861236 0.3112333 0.06573949 0.29366904 0.24114325 0.31218669]] +# ..[[ 0.24357791 0.31745994 None None 0.05936888 0.0679071 0.06661848 0.12769654 0.35326686 0.54681225]] +# .. +# ..-> R2 with weighted data is jumping all over +# .. +# ..standard errors +# ..[[ 5.51471653 3.31028758 2.61580069 2.39537089 3.80730631 2.90027255 2.71141739 2.46959477 6.37593755 3.39477842] +# .. [ 80.36595035 49.35949263 38.12005692 35.71722666 76.39115431 58.35231328 87.18452039 80.30086861 86.99568216 47.58202096] +# .. [ 7.46933695 4.55366113 3.54293763 3.29509357 9.72433732 7.41259156 15.15205888 14.10674821 7.18302629 3.91640711] +# .. [ 82.92232357 50.54681754 39.33262384 36.57639175 58.55088753 44.82218676 43.11017757 39.31097542 96.4077482 52.57314209] +# .. [ 199.35166485 122.1287718 94.55866295 88.3741058 139.68749646 106.89445525 115.79258539 105.99258363 239.38105863 130.32619908]] +# .. +# ..robust standard errors (with ols) +# ..with outliers +# .. HC0_se HC1_se HC2_se HC3_se' +# ..[[ 3.30166123 3.42264107 3.4477148 3.60462409] +# .. [ 88.86635165 92.12260235 92.08368378 95.48159869] +# .. [ 6.94456348 7.19902694 7.19953754 7.47634779] +# .. [ 92.18777672 95.56573144 95.67211143 99.31427277] +# .. [ 212.9905298 220.79495237 221.08892661 229.57434782]] +# .. +# ..removing 2 outliers +# ..[[ 2.57840843 2.67574088 2.68958007 2.80968452] +# .. [ 36.21720995 37.58437497 37.69555106 39.51362437] +# .. [ 3.1156149 3.23322638 3.27353882 3.49104794] +# .. [ 50.09789409 51.98904166 51.89530067 53.79478834] +# .. [ 94.27094886 97.82958699 98.25588281 102.60375381]] +# .. +# .. +# .. +''' # noqa:E501 + +# a quick bootstrap analysis +# -------------------------- +# +# (I didn't check whether this is fully correct statistically) + +# **With OLS on full sample** + +nobs, nvar = data.exog.shape +niter = 2000 +bootres = np.zeros((niter, nvar*2)) + +for it in range(niter): + rind = np.random.randint(nobs, size=nobs) + endog = data.endog[rind] + exog = data.exog[rind, :] + res = sm.OLS(endog, exog).fit() + bootres[it, :nvar] = res.params + bootres[it, nvar:] = res.bse + +np.set_printoptions(linewidth=200) +print('Bootstrap Results of parameters and parameter standard deviation OLS') +print('Parameter estimates') +print('median', np.median(bootres[:, :5], 0)) +print('mean ', np.mean(bootres[:, :5], 0)) +print('std ', np.std(bootres[:, :5], 0)) + +print('Standard deviation of parameter estimates') +print('median', np.median(bootres[:, 5:], 0)) +print('mean ', np.mean(bootres[:, 5:], 0)) +print('std ', np.std(bootres[:, 5:], 0)) + +plt.figure() +for i in range(4): + plt.subplot(2, 2, i+1) + plt.hist(bootres[:, i], 50) + plt.title('var%d' % i) +# @savefig wls_bootstrap.png +plt.figtext(0.5, 0.935, 'OLS Bootstrap', + ha='center', color='black', weight='bold', size='large') + +# **With WLS on sample with outliers removed** + +data_endog = data.endog[olskeep] +data_exog = data.exog[olskeep, :] +incomesq_rm2 = incomesq[olskeep] + +nobs, nvar = data_exog.shape +niter = 500 # a bit slow +bootreswls = np.zeros((niter, nvar*2)) + +for it in range(niter): + rind = np.random.randint(nobs, size=nobs) + endog = data_endog[rind] + exog = data_exog[rind, :] + res = sm.WLS(endog, exog, weights=1/incomesq[rind, :]).fit() + bootreswls[it, :nvar] = res.params + bootreswls[it, nvar:] = res.bse + +print('Bootstrap Results of parameters and parameter standard deviation',) +print('WLS removed 2 outliers from sample') +print('Parameter estimates') +print('median', np.median(bootreswls[:, :5], 0)) +print('mean ', np.mean(bootreswls[:, :5], 0)) +print('std ', np.std(bootreswls[:, :5], 0)) + +print('Standard deviation of parameter estimates') +print('median', np.median(bootreswls[:, 5:], 0)) +print('mean ', np.mean(bootreswls[:, 5:], 0)) +print('std ', np.std(bootreswls[:, 5:], 0)) + +plt.figure() +for i in range(4): + plt.subplot(2, 2, i+1) + plt.hist(bootreswls[:, i], 50) + plt.title('var%d' % i) +# @savefig wls_bootstrap_rm2.png +plt.figtext(0.5, 0.935, 'WLS rm2 Bootstrap', + ha='center', color='black', weight='bold', size='large') + + +# ..plt.show() +# ..plt.close('all') + +''' +# :: +# +# The following a random variables not fixed by a seed +# +# Bootstrap Results of parameters and parameter standard deviation +# OLS +# +# Parameter estimates +# median [ -3.26216383 228.52546429 -14.57239967 34.27155426 -227.02816597] +# mean [ -2.89855173 234.37139359 -14.98726881 27.96375666 -243.18361746] +# std [ 3.78704907 97.35797802 9.16316538 94.65031973 221.79444244] +# +# Standard deviation of parameter estimates +# median [ 5.44701033 81.96921398 7.58642431 80.64906783 200.19167735] +# mean [ 5.44840542 86.02554883 8.56750041 80.41864084 201.81196849] +# std [ 1.43425083 29.74806562 4.22063268 19.14973277 55.34848348] +# +# Bootstrap Results of parameters and parameter standard deviation +# WLS removed 2 outliers from sample +# +# Parameter estimates +# median [ -3.95876112 137.10419042 -9.29131131 88.40265447 -44.21091869] +# mean [ -3.67485724 135.42681207 -8.7499235 89.74703443 -46.38622848] +# std [ 2.96908679 56.36648967 7.03870751 48.51201918 106.92466097] +# +# Standard deviation of parameter estimates +# median [ 2.89349748 59.19454402 6.70583332 45.40987953 119.05241283] +# mean [ 2.97600894 60.14540249 6.92102065 45.66077486 121.35519673] +# std [ 0.55378808 11.77831934 1.69289179 7.4911526 23.72821085] +# +# +# +# Conclusion: problem with outliers and possibly heteroscedasticity +# ----------------------------------------------------------------- +# +# in bootstrap results +# +# * bse in OLS underestimates the standard deviation of the parameters +# compared to standard deviation in bootstrap +# * OLS heteroscedasticity corrected standard errors for the original +# data (above) are close to bootstrap std +# * using WLS with 2 outliers removed has a relatively good match between +# the mean or median bse and the std of the parameter estimates in the +# bootstrap +# +# We could also include rsquared in bootstrap, and do it also for RLM. +# The problems could also mean that the linearity assumption is violated, +# e.g. try non-linear transformation of exog variables, but linear +# in parameters. +# +# +# for statsmodels +# +# * In this case rsquared for original data looks less random/arbitrary. +# * Don't change definition of rsquared from centered tss to uncentered +# tss when calculating rsquared in WLS if the original exog contains +# a constant. The increase in rsquared because of a change in definition +# will be very misleading. +# * Whether there is a constant in the transformed exog, wexog, or not, +# might affect also the degrees of freedom calculation, but I haven't +# checked this. I would guess that the df_model should stay the same, +# but needs to be verified with a textbook. +# * df_model has to be adjusted if the original data does not have a +# constant, e.g. when regressing an endog on a single exog variable +# without constant. This case might require also a redefinition of +# the rsquare and f statistic for the regression anova to use the +# uncentered tss. +# This can be done through keyword parameter to model.__init__ or +# through autodedection with hasconst = (exog.var(0)<1e-10).any() +# I'm not sure about fixed effects with a full dummy set but +# without a constant. In this case autodedection wouldn't work this +# way. Also, I'm not sure whether a ddof keyword parameter can also +# handle the hasconst case. +''' # noqa:E501 diff --git a/examples/notebooks/categorical_interaction_plot.ipynb b/examples/notebooks/categorical_interaction_plot.ipynb new file mode 100644 index 0000000..9a7b9c1 --- /dev/null +++ b/examples/notebooks/categorical_interaction_plot.ipynb @@ -0,0 +1,82 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Plot Interaction of Categorical Factors" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this example, we will visualize the interaction between categorical factors. First, we will create some categorical data are initialized. Then plotted using the interaction_plot function which internally re-codes the x-factor categories to integers." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import pandas as pd\n", + "from statsmodels.graphics.factorplots import interaction_plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "np.random.seed(12345)\n", + "weight = pd.Series(np.repeat(['low', 'hi', 'low', 'hi'], 15), name='weight')\n", + "nutrition = pd.Series(np.repeat(['lo_carb', 'hi_carb'], 30), name='nutrition')\n", + "days = np.log(np.random.randint(1, 30, size=60))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(6, 6))\n", + "fig = interaction_plot(x=weight, trace=nutrition, response=days, \n", + " colors=['red', 'blue'], markers=['D', '^'], ms=10, ax=ax)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.4.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/chi2_fitting.ipynb b/examples/notebooks/chi2_fitting.ipynb new file mode 100644 index 0000000..891f792 --- /dev/null +++ b/examples/notebooks/chi2_fitting.ipynb @@ -0,0 +1,232 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Least squares fitting of models to data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is a quick introduction to `statsmodels` for physical scientists (e.g. physicists, astronomers) or engineers.\n", + "\n", + "Why is this needed?\n", + "\n", + "Because most of `statsmodels` was written by statisticians and they use a different terminology and sometimes methods, making it hard to know which classes and functions are relevant and what their inputs and outputs mean." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import statsmodels.api as sm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Linear models" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Assume you have data points with measurements `y` at positions `x` as well as measurement errors `y_err`.\n", + "\n", + "How can you use `statsmodels` to fit a straight line model to this data?\n", + "\n", + "For an extensive discussion see [Hogg et al. (2010), \"Data analysis recipes: Fitting a model to data\"](http://arxiv.org/abs/1008.4686) ... we'll use the example data given by them in Table 1.\n", + "\n", + "So the model is `f(x) = a * x + b` and on Figure 1 they print the result we want to reproduce ... the best-fit parameter and the parameter errors for a \"standard weighted least-squares fit\" for this data are:\n", + "* `a = 2.24 +- 0.11`\n", + "* `b = 34 +- 18`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "data = \"\"\"\n", + " x y y_err\n", + "201 592 61\n", + "244 401 25\n", + " 47 583 38\n", + "287 402 15\n", + "203 495 21\n", + " 58 173 15\n", + "210 479 27\n", + "202 504 14\n", + "198 510 30\n", + "158 416 16\n", + "165 393 14\n", + "201 442 25\n", + "157 317 52\n", + "131 311 16\n", + "166 400 34\n", + "160 337 31\n", + "186 423 42\n", + "125 334 26\n", + "218 533 16\n", + "146 344 22\n", + "\"\"\"\n", + "try:\n", + " from StringIO import StringIO\n", + "except ImportError:\n", + " from io import StringIO\n", + "data = pd.read_csv(StringIO(data), delim_whitespace=True).astype(float)\n", + "\n", + "# Note: for the results we compare with the paper here, they drop the first four points\n", + "data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To fit a straight line use the weighted least squares class [WLS](https://www.statsmodels.org/devel/generated/statsmodels.regression.linear_model.WLS.html) ... the parameters are called:\n", + "* `exog` = `sm.add_constant(x)`\n", + "* `endog` = `y`\n", + "* `weights` = `1 / sqrt(y_err)`\n", + "\n", + "Note that `exog` must be a 2-dimensional array with `x` as a column and an extra column of ones. Adding this column of ones means you want to fit the model `y = a * x + b`, leaving it off means you want to fit the model `y = a * x`.\n", + "\n", + "And you have to use the option `cov_type='fixed scale'` to tell `statsmodels` that you really have measurement errors with an absolute scale. If you don't, `statsmodels` will treat the weights as relative weights between the data points and internally re-scale them so that the best-fit model will have `chi**2 / ndf = 1`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "exog = sm.add_constant(data['x'])\n", + "endog = data['y']\n", + "weights = 1. / (data['y_err'] ** 2)\n", + "wls = sm.WLS(endog, exog, weights)\n", + "results = wls.fit(cov_type='fixed scale')\n", + "print(results.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Check against scipy.optimize.curve_fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# You can use `scipy.optimize.curve_fit` to get the best-fit parameters and parameter errors.\n", + "from scipy.optimize import curve_fit\n", + "\n", + "def f(x, a, b):\n", + " return a * x + b\n", + "\n", + "xdata = data['x']\n", + "ydata = data['y']\n", + "p0 = [0, 0] # initial parameter estimate\n", + "sigma = data['y_err']\n", + "popt, pcov = curve_fit(f, xdata, ydata, p0, sigma, absolute_sigma=True)\n", + "perr = np.sqrt(np.diag(pcov))\n", + "print('a = {0:10.3f} +- {1:10.3f}'.format(popt[0], perr[0]))\n", + "print('b = {0:10.3f} +- {1:10.3f}'.format(popt[1], perr[1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Check against self-written cost function" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# You can also use `scipy.optimize.minimize` and write your own cost function.\n", + "# This doesn't give you the parameter errors though ... you'd have\n", + "# to estimate the HESSE matrix separately ...\n", + "from scipy.optimize import minimize\n", + "\n", + "def chi2(pars):\n", + " \"\"\"Cost function.\n", + " \"\"\"\n", + " y_model = pars[0] * data['x'] + pars[1]\n", + " chi = (data['y'] - y_model) / data['y_err']\n", + " return np.sum(chi ** 2)\n", + "\n", + "result = minimize(fun=chi2, x0=[0, 0])\n", + "popt = result.x\n", + "print('a = {0:10.3f}'.format(popt[0]))\n", + "print('b = {0:10.3f}'.format(popt[1]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Non-linear models" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# TODO: we could use the examples from here:\n", + "# http://probfit.readthedocs.org/en/latest/api.html#probfit.costfunc.Chi2Regression" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3.0 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.4.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} \ No newline at end of file diff --git a/examples/notebooks/contrasts.ipynb b/examples/notebooks/contrasts.ipynb new file mode 100644 index 0000000..cbd35d4 --- /dev/null +++ b/examples/notebooks/contrasts.ipynb @@ -0,0 +1,546 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Contrasts Overview" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import numpy as np\n", + "import statsmodels.api as sm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This document is based heavily on this excellent resource from UCLA http://www.ats.ucla.edu/stat/r/library/contrast_coding.htm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A categorical variable of K categories, or levels, usually enters a regression as a sequence of K-1 dummy variables. This amounts to a linear hypothesis on the level means. That is, each test statistic for these variables amounts to testing whether the mean for that level is statistically significantly different from the mean of the base category. This dummy coding is called Treatment coding in R parlance, and we will follow this convention. There are, however, different coding methods that amount to different sets of linear hypotheses.\n", + "\n", + "In fact, the dummy coding is not technically a contrast coding. This is because the dummy variables add to one and are not functionally independent of the model's intercept. On the other hand, a set of *contrasts* for a categorical variable with `k` levels is a set of `k-1` functionally independent linear combinations of the factor level means that are also independent of the sum of the dummy variables. The dummy coding isn't wrong *per se*. It captures all of the coefficients, but it complicates matters when the model assumes independence of the coefficients such as in ANOVA. Linear regression models do not assume independence of the coefficients and thus dummy coding is often the only coding that is taught in this context.\n", + "\n", + "To have a look at the contrast matrices in Patsy, we will use data from UCLA ATS. First let's load the data." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Example Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "url = 'https://stats.idre.ucla.edu/stat/data/hsb2.csv'\n", + "hsb2 = pd.read_table(url, delimiter=\",\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "hsb2.head(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "It will be instructive to look at the mean of the dependent variable, write, for each level of race ((1 = Hispanic, 2 = Asian, 3 = African American and 4 = Caucasian))." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "hsb2.groupby('race')['write'].mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Treatment (Dummy) Coding" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dummy coding is likely the most well known coding scheme. It compares each level of the categorical variable to a base reference level. The base reference level is the value of the intercept. It is the default contrast in Patsy for unordered categorical factors. The Treatment contrast matrix for race would be" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from patsy.contrasts import Treatment\n", + "levels = [1,2,3,4]\n", + "contrast = Treatment(reference=0).code_without_intercept(levels)\n", + "print(contrast.matrix)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we used `reference=0`, which implies that the first level, Hispanic, is the reference category against which the other level effects are measured. As mentioned above, the columns do not sum to zero and are thus not independent of the intercept. To be explicit, let's look at how this would encode the `race` variable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "hsb2.race.head(10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(contrast.matrix[hsb2.race-1, :][:20])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "sm.categorical(hsb2.race.values)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is a bit of a trick, as the `race` category conveniently maps to zero-based indices. If it does not, this conversion happens under the hood, so this won't work in general but nonetheless is a useful exercise to fix ideas. The below illustrates the output using the three contrasts above" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from statsmodels.formula.api import ols\n", + "mod = ols(\"write ~ C(race, Treatment)\", data=hsb2)\n", + "res = mod.fit()\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We explicitly gave the contrast for race; however, since Treatment is the default, we could have omitted this." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Simple Coding" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Like Treatment Coding, Simple Coding compares each level to a fixed reference level. However, with simple coding, the intercept is the grand mean of all the levels of the factors. Patsy doesn't have the Simple contrast included, but you can easily define your own contrasts. To do so, write a class that contains a code_with_intercept and a code_without_intercept method that returns a patsy.contrast.ContrastMatrix instance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from patsy.contrasts import ContrastMatrix\n", + "\n", + "def _name_levels(prefix, levels):\n", + " return [\"[%s%s]\" % (prefix, level) for level in levels]\n", + "\n", + "class Simple(object):\n", + " def _simple_contrast(self, levels):\n", + " nlevels = len(levels)\n", + " contr = -1./nlevels * np.ones((nlevels, nlevels-1))\n", + " contr[1:][np.diag_indices(nlevels-1)] = (nlevels-1.)/nlevels\n", + " return contr\n", + "\n", + " def code_with_intercept(self, levels):\n", + " contrast = np.column_stack((np.ones(len(levels)),\n", + " self._simple_contrast(levels)))\n", + " return ContrastMatrix(contrast, _name_levels(\"Simp.\", levels))\n", + "\n", + " def code_without_intercept(self, levels):\n", + " contrast = self._simple_contrast(levels)\n", + " return ContrastMatrix(contrast, _name_levels(\"Simp.\", levels[:-1]))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "hsb2.groupby('race')['write'].mean().mean()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "contrast = Simple().code_without_intercept(levels)\n", + "print(contrast.matrix)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mod = ols(\"write ~ C(race, Simple)\", data=hsb2)\n", + "res = mod.fit()\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Sum (Deviation) Coding" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sum coding compares the mean of the dependent variable for a given level to the overall mean of the dependent variable over all the levels. That is, it uses contrasts between each of the first k-1 levels and level k In this example, level 1 is compared to all the others, level 2 to all the others, and level 3 to all the others." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from patsy.contrasts import Sum\n", + "contrast = Sum().code_without_intercept(levels)\n", + "print(contrast.matrix)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mod = ols(\"write ~ C(race, Sum)\", data=hsb2)\n", + "res = mod.fit()\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This corresponds to a parameterization that forces all the coefficients to sum to zero. Notice that the intercept here is the grand mean where the grand mean is the mean of means of the dependent variable by each level." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "hsb2.groupby('race')['write'].mean().mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Backward Difference Coding" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In backward difference coding, the mean of the dependent variable for a level is compared with the mean of the dependent variable for the prior level. This type of coding may be useful for a nominal or an ordinal variable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from patsy.contrasts import Diff\n", + "contrast = Diff().code_without_intercept(levels)\n", + "print(contrast.matrix)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mod = ols(\"write ~ C(race, Diff)\", data=hsb2)\n", + "res = mod.fit()\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For example, here the coefficient on level 1 is the mean of `write` at level 2 compared with the mean at level 1. Ie.," + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res.params[\"C(race, Diff)[D.1]\"]\n", + "hsb2.groupby('race').mean()[\"write\"][2] - \\\n", + " hsb2.groupby('race').mean()[\"write\"][1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Helmert Coding" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our version of Helmert coding is sometimes referred to as Reverse Helmert Coding. The mean of the dependent variable for a level is compared to the mean of the dependent variable over all previous levels. Hence, the name 'reverse' being sometimes applied to differentiate from forward Helmert coding. This comparison does not make much sense for a nominal variable such as race, but we would use the Helmert contrast like so:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from patsy.contrasts import Helmert\n", + "contrast = Helmert().code_without_intercept(levels)\n", + "print(contrast.matrix)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mod = ols(\"write ~ C(race, Helmert)\", data=hsb2)\n", + "res = mod.fit()\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To illustrate, the comparison on level 4 is the mean of the dependent variable at the previous three levels taken from the mean at level 4" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "grouped = hsb2.groupby('race')\n", + "grouped.mean()[\"write\"][4] - grouped.mean()[\"write\"][:3].mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see, these are only equal up to a constant. Other versions of the Helmert contrast give the actual difference in means. Regardless, the hypothesis tests are the same." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "k = 4\n", + "1./k * (grouped.mean()[\"write\"][k] - grouped.mean()[\"write\"][:k-1].mean())\n", + "k = 3\n", + "1./k * (grouped.mean()[\"write\"][k] - grouped.mean()[\"write\"][:k-1].mean())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Orthogonal Polynomial Coding" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The coefficients taken on by polynomial coding for `k=4` levels are the linear, quadratic, and cubic trends in the categorical variable. The categorical variable here is assumed to be represented by an underlying, equally spaced numeric variable. Therefore, this type of encoding is used only for ordered categorical variables with equal spacing. In general, the polynomial contrast produces polynomials of order `k-1`. Since `race` is not an ordered factor variable let's use `read` as an example. First we need to create an ordered categorical from `read`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "hsb2['readcat'] = np.asarray(pd.cut(hsb2.read, bins=3))\n", + "hsb2.groupby('readcat').mean()['write']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from patsy.contrasts import Poly\n", + "levels = hsb2.readcat.unique().tolist()\n", + "contrast = Poly().code_without_intercept(levels)\n", + "print(contrast.matrix)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mod = ols(\"write ~ C(readcat, Poly)\", data=hsb2)\n", + "res = mod.fit()\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see, readcat has a significant linear effect on the dependent variable `write` but not a significant quadratic or cubic effect." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.4.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/discrete_choice_example.ipynb b/examples/notebooks/discrete_choice_example.ipynb new file mode 100644 index 0000000..4e4839a --- /dev/null +++ b/examples/notebooks/discrete_choice_example.ipynb @@ -0,0 +1,637 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Discrete Choice Models" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fair's Affair data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A survey of women only was conducted in 1974 by *Redbook* asking about extramarital affairs." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import numpy as np\n", + "import pandas as pd\n", + "from scipy import stats\n", + "import matplotlib.pyplot as plt\n", + "import statsmodels.api as sm\n", + "from statsmodels.formula.api import logit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(sm.datasets.fair.SOURCE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print( sm.datasets.fair.NOTE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dta = sm.datasets.fair.load_pandas().data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dta['affair'] = (dta['affairs'] > 0).astype(float)\n", + "print(dta.head(10))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(dta.describe())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "affair_mod = logit(\"affair ~ occupation + educ + occupation_husb\"\n", + " \"+ rate_marriage + age + yrs_married + children\"\n", + " \" + religious\", dta).fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(affair_mod.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "How well are we predicting?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "affair_mod.pred_table()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The coefficients of the discrete choice model do not tell us much. What we're after is marginal effects." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mfx = affair_mod.get_margeff()\n", + "print(mfx.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "respondent1000 = dta.iloc[1000]\n", + "print(respondent1000)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "resp = dict(zip(range(1,9), respondent1000[[\"occupation\", \"educ\",\n", + " \"occupation_husb\", \"rate_marriage\",\n", + " \"age\", \"yrs_married\", \"children\",\n", + " \"religious\"]].tolist()))\n", + "resp.update({0 : 1})\n", + "print(resp)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mfx = affair_mod.get_margeff(atexog=resp)\n", + "print(mfx.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`predict` expects a `DataFrame` since `patsy` is used to select columns." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "respondent1000 = dta.iloc[[1000]]\n", + "affair_mod.predict(respondent1000)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "affair_mod.fittedvalues[1000]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "affair_mod.model.cdf(affair_mod.fittedvalues[1000])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The \"correct\" model here is likely the Tobit model. We have an work in progress branch \"tobit-model\" on github, if anyone is interested in censored regression models." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise: Logit vs Probit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111)\n", + "support = np.linspace(-6, 6, 1000)\n", + "ax.plot(support, stats.logistic.cdf(support), 'r-', label='Logistic')\n", + "ax.plot(support, stats.norm.cdf(support), label='Probit')\n", + "ax.legend();" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111)\n", + "support = np.linspace(-6, 6, 1000)\n", + "ax.plot(support, stats.logistic.pdf(support), 'r-', label='Logistic')\n", + "ax.plot(support, stats.norm.pdf(support), label='Probit')\n", + "ax.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compare the estimates of the Logit Fair model above to a Probit model. Does the prediction table look better? Much difference in marginal effects?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Generalized Linear Model Example" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(sm.datasets.star98.SOURCE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(sm.datasets.star98.DESCRLONG)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(sm.datasets.star98.NOTE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dta = sm.datasets.star98.load_pandas().data\n", + "print(dta.columns)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(dta[['NABOVE', 'NBELOW', 'LOWINC', 'PERASIAN', 'PERBLACK', 'PERHISP', 'PERMINTE']].head(10))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(dta[['AVYRSEXP', 'AVSALK', 'PERSPENK', 'PTRATIO', 'PCTAF', 'PCTCHRT', 'PCTYRRND']].head(10))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "formula = 'NABOVE + NBELOW ~ LOWINC + PERASIAN + PERBLACK + PERHISP + PCTCHRT '\n", + "formula += '+ PCTYRRND + PERMINTE*AVYRSEXP*AVSALK + PERSPENK*PTRATIO*PCTAF'" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Aside: Binomial distribution" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Toss a six-sided die 5 times, what's the probability of exactly 2 fours?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "stats.binom(5, 1./6).pmf(2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.special import comb\n", + "comb(5,2) * (1/6.)**2 * (5/6.)**3" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from statsmodels.formula.api import glm\n", + "glm_mod = glm(formula, dta, family=sm.families.Binomial()).fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(glm_mod.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The number of trials " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "glm_mod.model.data.orig_endog.sum(1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "glm_mod.fittedvalues * glm_mod.model.data.orig_endog.sum(1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First differences: We hold all explanatory variables constant at their means and manipulate the percentage of low income households to assess its impact\n", + "on the response variables:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "exog = glm_mod.model.data.orig_exog # get the dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "means25 = exog.mean()\n", + "print(means25)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "means25['LOWINC'] = exog['LOWINC'].quantile(.25)\n", + "print(means25)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "means75 = exog.mean()\n", + "means75['LOWINC'] = exog['LOWINC'].quantile(.75)\n", + "print(means75)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, `predict` expects a `DataFrame` since `patsy` is used to select columns." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "resp25 = glm_mod.predict(pd.DataFrame(means25).T)\n", + "resp75 = glm_mod.predict(pd.DataFrame(means75).T)\n", + "diff = resp75 - resp25" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The interquartile first difference for the percentage of low income households in a school district is:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"%2.4f%%\" % (diff[0]*100))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "nobs = glm_mod.nobs\n", + "y = glm_mod.model.endog\n", + "yhat = glm_mod.mu" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from statsmodels.graphics.api import abline_plot\n", + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111, ylabel='Observed Values', xlabel='Fitted Values')\n", + "ax.scatter(yhat, y)\n", + "y_vs_yhat = sm.OLS(y, sm.add_constant(yhat, prepend=True)).fit()\n", + "fig = abline_plot(model_results=y_vs_yhat, ax=ax)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Plot fitted values vs Pearson residuals" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Pearson residuals are defined to be\n", + "\n", + "$$\\frac{(y - \\mu)}{\\sqrt{(var(\\mu))}}$$\n", + "\n", + "where var is typically determined by the family. E.g., binomial variance is $np(1 - p)$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111, title='Residual Dependence Plot', xlabel='Fitted Values',\n", + " ylabel='Pearson Residuals')\n", + "ax.scatter(yhat, stats.zscore(glm_mod.resid_pearson))\n", + "ax.axis('tight')\n", + "ax.plot([0.0, 1.0],[0.0, 0.0], 'k-');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Histogram of standardized deviance residuals with Kernel Density Estimate overlayed" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The definition of the deviance residuals depends on the family. For the Binomial distribution this is\n", + "\n", + "$$r_{dev} = sign\\left(Y-\\mu\\right)*\\sqrt{2n(Y\\log\\frac{Y}{\\mu}+(1-Y)\\log\\frac{(1-Y)}{(1-\\mu)}}$$\n", + "\n", + "They can be used to detect ill-fitting covariates" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "resid = glm_mod.resid_deviance\n", + "resid_std = stats.zscore(resid)\n", + "kde_resid = sm.nonparametric.KDEUnivariate(resid_std)\n", + "kde_resid.fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111, title=\"Standardized Deviance Residuals\")\n", + "ax.hist(resid_std, bins=25, density=True);\n", + "ax.plot(kde_resid.support, kde_resid.density, 'r');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### QQ-plot of deviance residuals" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111)\n", + "fig = sm.graphics.qqplot(resid, line='r', ax=ax)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/discrete_choice_overview.ipynb b/examples/notebooks/discrete_choice_overview.ipynb new file mode 100644 index 0000000..d44e9af --- /dev/null +++ b/examples/notebooks/discrete_choice_overview.ipynb @@ -0,0 +1,334 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Discrete Choice Models Overview" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import numpy as np\n", + "import statsmodels.api as sm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data\n", + "\n", + "Load data from Spector and Mazzeo (1980). Examples follow Greene's Econometric Analysis Ch. 21 (5th Edition)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "spector_data = sm.datasets.spector.load(as_pandas=False)\n", + "spector_data.exog = sm.add_constant(spector_data.exog, prepend=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Inspect the data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(spector_data.exog[:5,:])\n", + "print(spector_data.endog[:5])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Linear Probability Model (OLS)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "lpm_mod = sm.OLS(spector_data.endog, spector_data.exog)\n", + "lpm_res = lpm_mod.fit()\n", + "print('Parameters: ', lpm_res.params[:-1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Logit Model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "logit_mod = sm.Logit(spector_data.endog, spector_data.exog)\n", + "logit_res = logit_mod.fit(disp=0)\n", + "print('Parameters: ', logit_res.params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Marginal Effects" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "margeff = logit_res.get_margeff()\n", + "print(margeff.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As in all the discrete data models presented below, we can print a nice summary of results:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(logit_res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Probit Model " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "probit_mod = sm.Probit(spector_data.endog, spector_data.exog)\n", + "probit_res = probit_mod.fit()\n", + "probit_margeff = probit_res.get_margeff()\n", + "print('Parameters: ', probit_res.params)\n", + "print('Marginal effects: ')\n", + "print(probit_margeff.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Multinomial Logit" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load data from the American National Election Studies:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "anes_data = sm.datasets.anes96.load(as_pandas=False)\n", + "anes_exog = anes_data.exog\n", + "anes_exog = sm.add_constant(anes_exog, prepend=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Inspect the data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(anes_data.exog[:5,:])\n", + "print(anes_data.endog[:5])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Fit MNL model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mlogit_mod = sm.MNLogit(anes_data.endog, anes_exog)\n", + "mlogit_res = mlogit_mod.fit()\n", + "print(mlogit_res.params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Poisson\n", + "\n", + "Load the Rand data. Note that this example is similar to Cameron and Trivedi's `Microeconometrics` Table 20.5, but it is slightly different because of minor changes in the data. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "rand_data = sm.datasets.randhie.load(as_pandas=False)\n", + "rand_exog = rand_data.exog.view(float).reshape(len(rand_data.exog), -1)\n", + "rand_exog = sm.add_constant(rand_exog, prepend=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Fit Poisson model: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "poisson_mod = sm.Poisson(rand_data.endog, rand_exog)\n", + "poisson_res = poisson_mod.fit(method=\"newton\")\n", + "print(poisson_res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Negative Binomial\n", + "\n", + "The negative binomial model gives slightly different results. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mod_nbin = sm.NegativeBinomial(rand_data.endog, rand_exog)\n", + "res_nbin = mod_nbin.fit(disp=False)\n", + "print(res_nbin.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Alternative solvers\n", + "\n", + "The default method for fitting discrete data MLE models is Newton-Raphson. You can use other solvers by using the ``method`` argument: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mlogit_res = mlogit_mod.fit(method='bfgs', maxiter=100)\n", + "print(mlogit_res.summary())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.4.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/distributed_estimation.ipynb b/examples/notebooks/distributed_estimation.ipynb new file mode 100644 index 0000000..89f1dc6 --- /dev/null +++ b/examples/notebooks/distributed_estimation.ipynb @@ -0,0 +1,174 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook goes through a couple of examples to show how to use `distributed_estimation`. We import the `DistributedModel` class and make the exog and endog generators." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "from scipy.stats.distributions import norm\n", + "from statsmodels.base.distributed_estimation import DistributedModel\n", + "\n", + "def _exog_gen(exog, partitions):\n", + " \"\"\"partitions exog data\"\"\"\n", + "\n", + " n_exog = exog.shape[0]\n", + " n_part = np.ceil(n_exog / partitions)\n", + "\n", + " ii = 0\n", + " while ii < n_exog:\n", + " jj = int(min(ii + n_part, n_exog))\n", + " yield exog[ii:jj, :]\n", + " ii += int(n_part)\n", + "\n", + "def _endog_gen(endog, partitions):\n", + " \"\"\"partitions endog data\"\"\"\n", + "\n", + " n_endog = endog.shape[0]\n", + " n_part = np.ceil(n_endog / partitions)\n", + "\n", + " ii = 0\n", + " while ii < n_endog:\n", + " jj = int(min(ii + n_part, n_endog))\n", + " yield endog[ii:jj]\n", + " ii += int(n_part)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we generate some random data to serve as an example." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X = np.random.normal(size=(1000, 25))\n", + "beta = np.random.normal(size=25)\n", + "beta *= np.random.randint(0, 2, size=25)\n", + "y = norm.rvs(loc=X.dot(beta))\n", + "m = 5" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This is the most basic fit, showing all of the defaults, which are to use OLS as the model class, and the debiasing procedure." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "debiased_OLS_mod = DistributedModel(m)\n", + "debiased_OLS_fit = debiased_OLS_mod.fit(zip(_endog_gen(y, m), _exog_gen(X, m)),\n", + " fit_kwds={\"alpha\": 0.2})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we run through a slightly more complicated example which uses the GLM model class." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "from statsmodels.genmod.generalized_linear_model import GLM\n", + "from statsmodels.genmod.families import Gaussian\n", + "\n", + "debiased_GLM_mod = DistributedModel(m, model_class=GLM,\n", + " init_kwds={\"family\": Gaussian()})\n", + "debiased_GLM_fit = debiased_GLM_mod.fit(zip(_endog_gen(y, m), _exog_gen(X, m)),\n", + " fit_kwds={\"alpha\": 0.2})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also change the `estimation_method` and the `join_method`. The below example show how this works for the standard OLS case. Here we using a naive averaging approach instead of the debiasing procedure." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from statsmodels.base.distributed_estimation import _est_regularized_naive, _join_naive\n", + "\n", + "\n", + "naive_OLS_reg_mod = DistributedModel(m, estimation_method=_est_regularized_naive,\n", + " join_method=_join_naive)\n", + "naive_OLS_reg_params = naive_OLS_reg_mod.fit(zip(_endog_gen(y, m), _exog_gen(X, m)),\n", + " fit_kwds={\"alpha\": 0.2})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we can also change the `results_class` used. The following example shows how this work for a simple case with an unregularized model and naive averaging." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from statsmodels.base.distributed_estimation import _est_unregularized_naive, DistributedResults\n", + "\n", + "\n", + "naive_OLS_unreg_mod = DistributedModel(m, estimation_method=_est_unregularized_naive,\n", + " join_method=_join_naive,\n", + " results_class=DistributedResults)\n", + "naive_OLS_unreg_params = naive_OLS_unreg_mod.fit(zip(_endog_gen(y, m), _exog_gen(X, m)),\n", + " fit_kwds={\"alpha\": 0.2})" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.14" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/exponential_smoothing.ipynb b/examples/notebooks/exponential_smoothing.ipynb new file mode 100644 index 0000000..4482b67 --- /dev/null +++ b/examples/notebooks/exponential_smoothing.ipynb @@ -0,0 +1,470 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Tutorial \n", + "\n", + "Let us consider chapter 7 of the excellent treatise on the subject of Exponential Smoothing By Hyndman and Athanasopoulos [1].\n", + "We will work through all the examples in the chapter as they unfold.\n", + "\n", + "[1] [Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles and practice. OTexts, 2014.](https://www.otexts.org/fpp/7)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Exponential smoothing\n", + "\n", + "First we load some data. We have included the R data in the notebook for expedience." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2017-12-07T12:39:15.020317Z", + "start_time": "2017-12-07T12:39:14.263100Z" + } + }, + "outputs": [], + "source": [ + "import os\n", + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from statsmodels.tsa.api import ExponentialSmoothing, SimpleExpSmoothing, Holt\n", + "\n", + "data = [446.6565, 454.4733, 455.663 , 423.6322, 456.2713, 440.5881, 425.3325, 485.1494, 506.0482, 526.792 , 514.2689, 494.211 ]\n", + "index= pd.date_range(start='1996', end='2008', freq='A')\n", + "oildata = pd.Series(data, index)\n", + "\n", + "data = [17.5534, 21.86 , 23.8866, 26.9293, 26.8885, 28.8314, 30.0751, 30.9535, 30.1857, 31.5797, 32.5776, 33.4774, 39.0216, 41.3864, 41.5966]\n", + "index= pd.date_range(start='1990', end='2005', freq='A')\n", + "air = pd.Series(data, index)\n", + "\n", + "data = [263.9177, 268.3072, 260.6626, 266.6394, 277.5158, 283.834 , 290.309 , 292.4742, 300.8307, 309.2867, 318.3311, 329.3724, 338.884 , 339.2441, 328.6006, 314.2554, 314.4597, 321.4138, 329.7893, 346.3852, 352.2979, 348.3705, 417.5629, 417.1236, 417.7495, 412.2339, 411.9468, 394.6971, 401.4993, 408.2705, 414.2428]\n", + "index= pd.date_range(start='1970', end='2001', freq='A')\n", + "livestock2 = pd.Series(data, index)\n", + "\n", + "data = [407.9979 , 403.4608, 413.8249, 428.105 , 445.3387, 452.9942, 455.7402]\n", + "index= pd.date_range(start='2001', end='2008', freq='A')\n", + "livestock3 = pd.Series(data, index)\n", + "\n", + "data = [41.7275, 24.0418, 32.3281, 37.3287, 46.2132, 29.3463, 36.4829, 42.9777, 48.9015, 31.1802, 37.7179, 40.4202, 51.2069, 31.8872, 40.9783, 43.7725, 55.5586, 33.8509, 42.0764, 45.6423, 59.7668, 35.1919, 44.3197, 47.9137]\n", + "index= pd.date_range(start='2005', end='2010-Q4', freq='QS-OCT')\n", + "aust = pd.Series(data, index)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Simple Exponential Smoothing\n", + "Lets use Simple Exponential Smoothing to forecast the below oil data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2017-12-07T12:39:15.189907Z", + "start_time": "2017-12-07T12:39:15.022229Z" + } + }, + "outputs": [], + "source": [ + "ax=oildata.plot()\n", + "ax.set_xlabel(\"Year\")\n", + "ax.set_ylabel(\"Oil (millions of tonnes)\")\n", + "plt.show()\n", + "print(\"Figure 7.1: Oil production in Saudi Arabia from 1996 to 2007.\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we run three variants of simple exponential smoothing:\n", + "1. In ```fit1``` we do not use the auto optimization but instead choose to explicitly provide the model with the $\\alpha=0.2$ parameter\n", + "2. In ```fit2``` as above we choose an $\\alpha=0.6$\n", + "3. In ```fit3``` we allow statsmodels to automatically find an optimized $\\alpha$ value for us. This is the recommended approach." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2017-12-07T12:39:15.785068Z", + "start_time": "2017-12-07T12:39:15.191930Z" + } + }, + "outputs": [], + "source": [ + "fit1 = SimpleExpSmoothing(oildata).fit(smoothing_level=0.2,optimized=False)\n", + "fcast1 = fit1.forecast(3).rename(r'$\\alpha=0.2$')\n", + "fit2 = SimpleExpSmoothing(oildata).fit(smoothing_level=0.6,optimized=False)\n", + "fcast2 = fit2.forecast(3).rename(r'$\\alpha=0.6$')\n", + "fit3 = SimpleExpSmoothing(oildata).fit()\n", + "fcast3 = fit3.forecast(3).rename(r'$\\alpha=%s$'%fit3.model.params['smoothing_level'])\n", + "\n", + "ax = oildata.plot(marker='o', color='black', figsize=(12,8))\n", + "fcast1.plot(marker='o', ax=ax, color='blue', legend=True)\n", + "fit1.fittedvalues.plot(marker='o', ax=ax, color='blue')\n", + "fcast2.plot(marker='o', ax=ax, color='red', legend=True)\n", + "\n", + "fit2.fittedvalues.plot(marker='o', ax=ax, color='red')\n", + "fcast3.plot(marker='o', ax=ax, color='green', legend=True)\n", + "fit3.fittedvalues.plot(marker='o', ax=ax, color='green')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Holt's Method\n", + "\n", + "Lets take a look at another example.\n", + "This time we use air pollution data and the Holt's Method.\n", + "We will fit three examples again.\n", + "1. In ```fit1``` we again choose not to use the optimizer and provide explicit values for $\\alpha=0.8$ and $\\beta=0.2$\n", + "2. In ```fit2``` we do the same as in ```fit1``` but choose to use an exponential model rather than a Holt's additive model.\n", + "3. In ```fit3``` we used a damped versions of the Holt's additive model but allow the dampening parameter $\\phi$ to be optimized while fixing the values for $\\alpha=0.8$ and $\\beta=0.2$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2017-12-07T12:39:16.114361Z", + "start_time": "2017-12-07T12:39:15.786542Z" + } + }, + "outputs": [], + "source": [ + "fit1 = Holt(air).fit(smoothing_level=0.8, smoothing_slope=0.2, optimized=False)\n", + "fcast1 = fit1.forecast(5).rename(\"Holt's linear trend\")\n", + "fit2 = Holt(air, exponential=True).fit(smoothing_level=0.8, smoothing_slope=0.2, optimized=False)\n", + "fcast2 = fit2.forecast(5).rename(\"Exponential trend\")\n", + "fit3 = Holt(air, damped=True).fit(smoothing_level=0.8, smoothing_slope=0.2)\n", + "fcast3 = fit3.forecast(5).rename(\"Additive damped trend\")\n", + "\n", + "ax = air.plot(color=\"black\", marker=\"o\", figsize=(12,8))\n", + "fit1.fittedvalues.plot(ax=ax, color='blue')\n", + "fcast1.plot(ax=ax, color='blue', marker=\"o\", legend=True)\n", + "fit2.fittedvalues.plot(ax=ax, color='red')\n", + "fcast2.plot(ax=ax, color='red', marker=\"o\", legend=True)\n", + "fit3.fittedvalues.plot(ax=ax, color='green')\n", + "fcast3.plot(ax=ax, color='green', marker=\"o\", legend=True)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Seasonally adjusted data\n", + "Lets look at some seasonally adjusted livestock data. We fit five Holt's models.\n", + "The below table allows us to compare results when we use exponential versus additive and damped versus non-damped.\n", + " \n", + "Note: ```fit4``` does not allow the parameter $\\phi$ to be optimized by providing a fixed value of $\\phi=0.98$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2017-12-07T12:39:16.605618Z", + "start_time": "2017-12-07T12:39:16.116424Z" + } + }, + "outputs": [], + "source": [ + "fit1 = SimpleExpSmoothing(livestock2).fit()\n", + "fit2 = Holt(livestock2).fit()\n", + "fit3 = Holt(livestock2,exponential=True).fit()\n", + "fit4 = Holt(livestock2,damped=True).fit(damping_slope=0.98)\n", + "fit5 = Holt(livestock2,exponential=True,damped=True).fit()\n", + "params = ['smoothing_level', 'smoothing_slope', 'damping_slope', 'initial_level', 'initial_slope']\n", + "results=pd.DataFrame(index=[r\"$\\alpha$\",r\"$\\beta$\",r\"$\\phi$\",r\"$l_0$\",\"$b_0$\",\"SSE\"] ,columns=['SES', \"Holt's\",\"Exponential\", \"Additive\", \"Multiplicative\"])\n", + "results[\"SES\"] = [fit1.params[p] for p in params] + [fit1.sse]\n", + "results[\"Holt's\"] = [fit2.params[p] for p in params] + [fit2.sse]\n", + "results[\"Exponential\"] = [fit3.params[p] for p in params] + [fit3.sse]\n", + "results[\"Additive\"] = [fit4.params[p] for p in params] + [fit4.sse]\n", + "results[\"Multiplicative\"] = [fit5.params[p] for p in params] + [fit5.sse]\n", + "results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plots of Seasonally Adjusted Data\n", + "The following plots allow us to evaluate the level and slope/trend components of the above table's fits." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2017-12-07T12:39:17.105928Z", + "start_time": "2017-12-07T12:39:16.607306Z" + } + }, + "outputs": [], + "source": [ + "for fit in [fit2,fit4]:\n", + " pd.DataFrame(np.c_[fit.level,fit.slope]).rename(\n", + " columns={0:'level',1:'slope'}).plot(subplots=True)\n", + "plt.show()\n", + "print('Figure 7.4: Level and slope components for Holt’s linear trend method and the additive damped trend method.')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparison\n", + "Here we plot a comparison Simple Exponential Smoothing and Holt's Methods for various additive, exponential and damped combinations. All of the models parameters will be optimized by statsmodels." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2017-12-07T12:39:18.038995Z", + "start_time": "2017-12-07T12:39:17.108323Z" + } + }, + "outputs": [], + "source": [ + "fit1 = SimpleExpSmoothing(livestock2).fit()\n", + "fcast1 = fit1.forecast(9).rename(\"SES\")\n", + "fit2 = Holt(livestock2).fit()\n", + "fcast2 = fit2.forecast(9).rename(\"Holt's\")\n", + "fit3 = Holt(livestock2, exponential=True).fit()\n", + "fcast3 = fit3.forecast(9).rename(\"Exponential\")\n", + "fit4 = Holt(livestock2, damped=True).fit(damping_slope=0.98)\n", + "fcast4 = fit4.forecast(9).rename(\"Additive Damped\")\n", + "fit5 = Holt(livestock2, exponential=True, damped=True).fit()\n", + "fcast5 = fit5.forecast(9).rename(\"Multiplicative Damped\")\n", + "\n", + "ax = livestock2.plot(color=\"black\", marker=\"o\", figsize=(12,8))\n", + "livestock3.plot(ax=ax, color=\"black\", marker=\"o\", legend=False)\n", + "fcast1.plot(ax=ax, color='red', legend=True)\n", + "fcast2.plot(ax=ax, color='green', legend=True)\n", + "fcast3.plot(ax=ax, color='blue', legend=True)\n", + "fcast4.plot(ax=ax, color='cyan', legend=True)\n", + "fcast5.plot(ax=ax, color='magenta', legend=True)\n", + "ax.set_ylabel('Livestock, sheep in Asia (millions)')\n", + "plt.show()\n", + "print('Figure 7.5: Forecasting livestock, sheep in Asia: comparing forecasting performance of non-seasonal methods.')" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "ExecuteTime": { + "end_time": "2017-10-05T09:40:15.958575Z", + "start_time": "2017-10-05T09:40:15.615Z" + } + }, + "source": [ + "## Holt's Winters Seasonal\n", + "Finally we are able to run full Holt's Winters Seasonal Exponential Smoothing including a trend component and a seasonal component.\n", + "statsmodels allows for all the combinations including as shown in the examples below:\n", + "1. ```fit1``` additive trend, additive seasonal of period ```season_length=4``` and the use of a Box-Cox transformation.\n", + "1. ```fit2``` additive trend, multiplicative seasonal of period ```season_length=4``` and the use of a Box-Cox transformation..\n", + "1. ```fit3``` additive damped trend, additive seasonal of period ```season_length=4``` and the use of a Box-Cox transformation.\n", + "1. ```fit4``` additive damped trend, multiplicative seasonal of period ```season_length=4``` and the use of a Box-Cox transformation.\n", + "\n", + "The plot shows the results and forecast for ```fit1``` and ```fit2```.\n", + "The table allows us to compare the results and parameterizations." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2017-12-07T12:39:28.375871Z", + "start_time": "2017-12-07T12:39:18.040674Z" + } + }, + "outputs": [], + "source": [ + "fit1 = ExponentialSmoothing(aust, seasonal_periods=4, trend='add', seasonal='add').fit(use_boxcox=True)\n", + "fit2 = ExponentialSmoothing(aust, seasonal_periods=4, trend='add', seasonal='mul').fit(use_boxcox=True)\n", + "fit3 = ExponentialSmoothing(aust, seasonal_periods=4, trend='add', seasonal='add', damped=True).fit(use_boxcox=True)\n", + "fit4 = ExponentialSmoothing(aust, seasonal_periods=4, trend='add', seasonal='mul', damped=True).fit(use_boxcox=True)\n", + "results=pd.DataFrame(index=[r\"$\\alpha$\",r\"$\\beta$\",r\"$\\phi$\",r\"$\\gamma$\",r\"$l_0$\",\"$b_0$\",\"SSE\"])\n", + "params = ['smoothing_level', 'smoothing_slope', 'damping_slope', 'smoothing_seasonal', 'initial_level', 'initial_slope']\n", + "results[\"Additive\"] = [fit1.params[p] for p in params] + [fit1.sse]\n", + "results[\"Multiplicative\"] = [fit2.params[p] for p in params] + [fit2.sse]\n", + "results[\"Additive Dam\"] = [fit3.params[p] for p in params] + [fit3.sse]\n", + "results[\"Multiplica Dam\"] = [fit4.params[p] for p in params] + [fit4.sse]\n", + "\n", + "ax = aust.plot(figsize=(10,6), marker='o', color='black', title=\"Forecasts from Holt-Winters' multiplicative method\" )\n", + "ax.set_ylabel(\"International visitor night in Australia (millions)\")\n", + "ax.set_xlabel(\"Year\")\n", + "fit1.fittedvalues.plot(ax=ax, style='--', color='red')\n", + "fit2.fittedvalues.plot(ax=ax, style='--', color='green')\n", + "\n", + "fit1.forecast(8).rename('Holt-Winters (add-add-seasonal)').plot(ax=ax, style='--', marker='o', color='red', legend=True)\n", + "fit2.forecast(8).rename('Holt-Winters (add-mul-seasonal)').plot(ax=ax, style='--', marker='o', color='green', legend=True)\n", + "\n", + "plt.show()\n", + "print(\"Figure 7.6: Forecasting international visitor nights in Australia using Holt-Winters method with both additive and multiplicative seasonality.\")\n", + "\n", + "results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The Internals\n", + "It is possible to get at the internals of the Exponential Smoothing models. \n", + "\n", + "Here we show some tables that allow you to view side by side the original values $y_t$, the level $l_t$, the trend $b_t$, the season $s_t$ and the fitted values $\\hat{y}_t$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2017-12-07T12:39:28.399765Z", + "start_time": "2017-12-07T12:39:28.377215Z" + } + }, + "outputs": [], + "source": [ + "df = pd.DataFrame(np.c_[aust, fit1.level, fit1.slope, fit1.season, fit1.fittedvalues],\n", + " columns=[r'$y_t$',r'$l_t$',r'$b_t$',r'$s_t$',r'$\\hat{y}_t$'],index=aust.index)\n", + "df.append(fit1.forecast(8).rename(r'$\\hat{y}_t$').to_frame(), sort=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2017-12-07T12:39:28.574783Z", + "start_time": "2017-12-07T12:39:28.401234Z" + } + }, + "outputs": [], + "source": [ + "df = pd.DataFrame(np.c_[aust, fit2.level, fit2.slope, fit2.season, fit2.fittedvalues], \n", + " columns=[r'$y_t$',r'$l_t$',r'$b_t$',r'$s_t$',r'$\\hat{y}_t$'],index=aust.index)\n", + "df.append(fit2.forecast(8).rename(r'$\\hat{y}_t$').to_frame(), sort=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally lets look at the levels, slopes/trends and seasonal components of the models." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "ExecuteTime": { + "end_time": "2017-12-07T12:39:29.636548Z", + "start_time": "2017-12-07T12:39:28.576279Z" + } + }, + "outputs": [], + "source": [ + "states1 = pd.DataFrame(np.c_[fit1.level, fit1.slope, fit1.season], columns=['level','slope','seasonal'], index=aust.index)\n", + "states2 = pd.DataFrame(np.c_[fit2.level, fit2.slope, fit2.season], columns=['level','slope','seasonal'], index=aust.index)\n", + "fig, [[ax1, ax4],[ax2, ax5], [ax3, ax6]] = plt.subplots(3, 2, figsize=(12,8))\n", + "states1[['level']].plot(ax=ax1)\n", + "states1[['slope']].plot(ax=ax2)\n", + "states1[['seasonal']].plot(ax=ax3)\n", + "states2[['level']].plot(ax=ax4)\n", + "states2[['slope']].plot(ax=ax5)\n", + "states2[['seasonal']].plot(ax=ax6)\n", + "plt.show()" + ] + } + ], + "metadata": { + "anaconda-cloud": {}, + "hide_input": false, + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + }, + "latex_envs": { + "LaTeX_envs_menu_present": true, + "autocomplete": true, + "bibliofile": "biblio.bib", + "cite_by": "apalike", + "current_citInitial": 1, + "eqLabelWithNumbers": true, + "eqNumInitial": 1, + "hotkeys": { + "equation": "Ctrl-E", + "itemize": "Ctrl-I" + }, + "labels_anchors": false, + "latex_user_defs": false, + "report_style_numbering": false, + "user_envs_cfg": false + }, + "toc": { + "colors": { + "hover_highlight": "#DAA520", + "navigate_num": "#000000", + "navigate_text": "#333333", + "running_highlight": "#FF0000", + "selected_highlight": "#FFD700", + "sidebar_border": "#EEEEEE", + "wrapper_background": "#FFFFFF" + }, + "moveMenuLeft": true, + "nav_menu": { + "height": "98px", + "width": "252px" + }, + "navigate_menu": true, + "number_sections": false, + "sideBar": true, + "threshold": 4, + "toc_cell": false, + "toc_section_display": "block", + "toc_window_display": true, + "widenNotebook": false + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/formulas.ipynb b/examples/notebooks/formulas.ipynb new file mode 100644 index 0000000..dae2e8f --- /dev/null +++ b/examples/notebooks/formulas.ipynb @@ -0,0 +1,392 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Formulas: Fitting models using R-style formulas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since version 0.5.0, ``statsmodels`` allows users to fit statistical models using R-style formulas. Internally, ``statsmodels`` uses the [patsy](http://patsy.readthedocs.org/) package to convert formulas and data to the matrices that are used in model fitting. The formula framework is quite powerful; this tutorial only scratches the surface. A full description of the formula language can be found in the ``patsy`` docs: \n", + "\n", + "* [Patsy formula language description](http://patsy.readthedocs.org/)\n", + "\n", + "## Loading modules and functions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import numpy as np # noqa:F401 needed in namespace for patsy\n", + "import statsmodels.api as sm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Import convention" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can import explicitly from statsmodels.formula.api" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from statsmodels.formula.api import ols" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Alternatively, you can just use the `formula` namespace of the main `statsmodels.api`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "sm.formula.ols" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Or you can use the following conventioin" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import statsmodels.formula.api as smf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These names are just a convenient way to get access to each model's `from_formula` classmethod. See, for instance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "sm.OLS.from_formula" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "All of the lower case models accept ``formula`` and ``data`` arguments, whereas upper case ones take ``endog`` and ``exog`` design matrices. ``formula`` accepts a string which describes the model in terms of a ``patsy`` formula. ``data`` takes a [pandas](http://pandas.pydata.org/) data frame or any other data structure that defines a ``__getitem__`` for variable names like a structured array or a dictionary of variables. \n", + "\n", + "``dir(sm.formula)`` will print a list of available models. \n", + "\n", + "Formula-compatible models have the following generic call signature: ``(formula, data, subset=None, *args, **kwargs)``" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "## OLS regression using formulas\n", + "\n", + "To begin, we fit the linear model described on the [Getting Started](gettingstarted.html) page. Download the data, subset columns, and list-wise delete to remove missing observations:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "dta = sm.datasets.get_rdataset(\"Guerry\", \"HistData\", cache=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "df = dta.data[['Lottery', 'Literacy', 'Wealth', 'Region']].dropna()\n", + "df.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Fit the model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mod = ols(formula='Lottery ~ Literacy + Wealth + Region', data=df)\n", + "res = mod.fit()\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Categorical variables\n", + "\n", + "Looking at the summary printed above, notice that ``patsy`` determined that elements of *Region* were text strings, so it treated *Region* as a categorical variable. `patsy`'s default is also to include an intercept, so we automatically dropped one of the *Region* categories.\n", + "\n", + "If *Region* had been an integer variable that we wanted to treat explicitly as categorical, we could have done so by using the ``C()`` operator: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res = ols(formula='Lottery ~ Literacy + Wealth + C(Region)', data=df).fit()\n", + "print(res.params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Patsy's mode advanced features for categorical variables are discussed in: [Patsy: Contrast Coding Systems for categorical variables](contrasts.html)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Operators\n", + "\n", + "We have already seen that \"~\" separates the left-hand side of the model from the right-hand side, and that \"+\" adds new columns to the design matrix. \n", + "\n", + "### Removing variables\n", + "\n", + "The \"-\" sign can be used to remove columns/variables. For instance, we can remove the intercept from a model by: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res = ols(formula='Lottery ~ Literacy + Wealth + C(Region) -1 ', data=df).fit()\n", + "print(res.params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Multiplicative interactions\n", + "\n", + "\":\" adds a new column to the design matrix with the interaction of the other two columns. \"*\" will also include the individual columns that were multiplied together:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res1 = ols(formula='Lottery ~ Literacy : Wealth - 1', data=df).fit()\n", + "res2 = ols(formula='Lottery ~ Literacy * Wealth - 1', data=df).fit()\n", + "print(res1.params, '\\n')\n", + "print(res2.params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Many other things are possible with operators. Please consult the [patsy docs](https://patsy.readthedocs.org/en/latest/formulas.html) to learn more." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Functions\n", + "\n", + "You can apply vectorized functions to the variables in your model: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res = smf.ols(formula='Lottery ~ np.log(Literacy)', data=df).fit()\n", + "print(res.params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Define a custom function:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def log_plus_1(x):\n", + " return np.log(x) + 1.\n", + "res = smf.ols(formula='Lottery ~ log_plus_1(Literacy)', data=df).fit()\n", + "print(res.params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Any function that is in the calling namespace is available to the formula." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using formulas with models that do not (yet) support them\n", + "\n", + "Even if a given `statsmodels` function does not support formulas, you can still use `patsy`'s formula language to produce design matrices. Those matrices \n", + "can then be fed to the fitting function as `endog` and `exog` arguments. \n", + "\n", + "To generate ``numpy`` arrays: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import patsy\n", + "f = 'Lottery ~ Literacy * Wealth'\n", + "y,X = patsy.dmatrices(f, df, return_type='matrix')\n", + "print(y[:5])\n", + "print(X[:5])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To generate pandas data frames: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "f = 'Lottery ~ Literacy * Wealth'\n", + "y,X = patsy.dmatrices(f, df, return_type='dataframe')\n", + "print(y[:5])\n", + "print(X[:5])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(sm.OLS(y, X).fit().summary())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.4.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/generic_mle.ipynb b/examples/notebooks/generic_mle.ipynb new file mode 100644 index 0000000..47b2ebc --- /dev/null +++ b/examples/notebooks/generic_mle.ipynb @@ -0,0 +1,500 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Maximum Likelihood Estimation (Generic models)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This tutorial explains how to quickly implement new maximum likelihood models in `statsmodels`. We give two examples: \n", + "\n", + "1. Probit model for binary dependent variables\n", + "2. Negative binomial model for count data\n", + "\n", + "The `GenericLikelihoodModel` class eases the process by providing tools such as automatic numeric differentiation and a unified interface to ``scipy`` optimization functions. Using ``statsmodels``, users can fit new MLE models simply by \"plugging-in\" a log-likelihood function. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1: Probit model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import numpy as np\n", + "from scipy import stats\n", + "import statsmodels.api as sm\n", + "from statsmodels.base.model import GenericLikelihoodModel" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The ``Spector`` dataset is distributed with ``statsmodels``. You can access a vector of values for the dependent variable (``endog``) and a matrix of regressors (``exog``) like this:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "data = sm.datasets.spector.load_pandas()\n", + "exog = data.exog\n", + "endog = data.endog\n", + "print(sm.datasets.spector.NOTE)\n", + "print(data.exog.head())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Them, we add a constant to the matrix of regressors:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "exog = sm.add_constant(exog, prepend=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To create your own Likelihood Model, you simply need to overwrite the loglike method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "class MyProbit(GenericLikelihoodModel):\n", + " def loglike(self, params):\n", + " exog = self.exog\n", + " endog = self.endog\n", + " q = 2 * endog - 1\n", + " return stats.norm.logcdf(q*np.dot(exog, params)).sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Estimate the model and print a summary:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "sm_probit_manual = MyProbit(endog, exog).fit()\n", + "print(sm_probit_manual.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compare your Probit implementation to ``statsmodels``' \"canned\" implementation:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "sm_probit_canned = sm.Probit(endog, exog).fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(sm_probit_canned.params)\n", + "print(sm_probit_manual.params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(sm_probit_canned.cov_params())\n", + "print(sm_probit_manual.cov_params())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that the ``GenericMaximumLikelihood`` class provides automatic differentiation, so we didn't have to provide Hessian or Score functions in order to calculate the covariance estimates." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "## Example 2: Negative Binomial Regression for Count Data\n", + "\n", + "Consider a negative binomial regression model for count data with\n", + "log-likelihood (type NB-2) function expressed as:\n", + "\n", + "$$\n", + " \\mathcal{L}(\\beta_j; y, \\alpha) = \\sum_{i=1}^n y_i ln \n", + " \\left ( \\frac{\\alpha exp(X_i'\\beta)}{1+\\alpha exp(X_i'\\beta)} \\right ) -\n", + " \\frac{1}{\\alpha} ln(1+\\alpha exp(X_i'\\beta)) + ln \\Gamma (y_i + 1/\\alpha) - ln \\Gamma (y_i+1) - ln \\Gamma (1/\\alpha)\n", + "$$\n", + "\n", + "with a matrix of regressors $X$, a vector of coefficients $\\beta$,\n", + "and the negative binomial heterogeneity parameter $\\alpha$. \n", + "\n", + "Using the ``nbinom`` distribution from ``scipy``, we can write this likelihood\n", + "simply as:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "from scipy.stats import nbinom" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def _ll_nb2(y, X, beta, alph):\n", + " mu = np.exp(np.dot(X, beta))\n", + " size = 1/alph\n", + " prob = size/(size+mu)\n", + " ll = nbinom.logpmf(y, size, prob)\n", + " return ll" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### New Model Class\n", + "\n", + "We create a new model class which inherits from ``GenericLikelihoodModel``:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from statsmodels.base.model import GenericLikelihoodModel" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "class NBin(GenericLikelihoodModel):\n", + " def __init__(self, endog, exog, **kwds):\n", + " super(NBin, self).__init__(endog, exog, **kwds)\n", + " \n", + " def nloglikeobs(self, params):\n", + " alph = params[-1]\n", + " beta = params[:-1]\n", + " ll = _ll_nb2(self.endog, self.exog, beta, alph)\n", + " return -ll \n", + " \n", + " def fit(self, start_params=None, maxiter=10000, maxfun=5000, **kwds):\n", + " # we have one additional parameter and we need to add it for summary\n", + " self.exog_names.append('alpha')\n", + " if start_params == None:\n", + " # Reasonable starting values\n", + " start_params = np.append(np.zeros(self.exog.shape[1]), .5)\n", + " # intercept\n", + " start_params[-2] = np.log(self.endog.mean())\n", + " return super(NBin, self).fit(start_params=start_params, \n", + " maxiter=maxiter, maxfun=maxfun, \n", + " **kwds) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Two important things to notice: \n", + "\n", + "+ ``nloglikeobs``: This function should return one evaluation of the negative log-likelihood function per observation in your dataset (i.e. rows of the endog/X matrix). \n", + "+ ``start_params``: A one-dimensional array of starting values needs to be provided. The size of this array determines the number of parameters that will be used in optimization.\n", + " \n", + "That's it! You're done!\n", + "\n", + "### Usage Example\n", + "\n", + "The [Medpar](https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/doc/COUNT/medpar.html)\n", + "dataset is hosted in CSV format at the [Rdatasets repository](https://raw.githubusercontent.com/vincentarelbundock/Rdatasets). We use the ``read_csv``\n", + "function from the [Pandas library](http://pandas.pydata.org) to load the data\n", + "in memory. We then print the first few columns: \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import statsmodels.api as sm" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "medpar = sm.datasets.get_rdataset(\"medpar\", \"COUNT\", cache=True).data\n", + "\n", + "medpar.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The model we are interested in has a vector of non-negative integers as\n", + "dependent variable (``los``), and 5 regressors: ``Intercept``, ``type2``,\n", + "``type3``, ``hmo``, ``white``.\n", + "\n", + "For estimation, we need to create two variables to hold our regressors and the outcome variable. These can be ndarrays or pandas objects." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "y = medpar.los\n", + "X = medpar[[\"type2\", \"type3\", \"hmo\", \"white\"]].copy()\n", + "X[\"constant\"] = 1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then, we fit the model and extract some information: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mod = NBin(y, X)\n", + "res = mod.fit()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Extract parameter estimates, standard errors, p-values, AIC, etc.:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print('Parameters: ', res.params)\n", + "print('Standard errors: ', res.bse)\n", + "print('P-values: ', res.pvalues)\n", + "print('AIC: ', res.aic)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As usual, you can obtain a full list of available information by typing\n", + "``dir(res)``.\n", + "We can also look at the summary of the estimation results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Testing" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can check the results by using the statsmodels implementation of the Negative Binomial model, which uses the analytic score function and Hessian." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_nbin = sm.NegativeBinomial(y, X).fit(disp=0)\n", + "print(res_nbin.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(res_nbin.params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(res_nbin.bse)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Or we could compare them to results obtained using the MASS implementation for R:\n", + "\n", + " url = 'https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/csv/COUNT/medpar.csv'\n", + " medpar = read.csv(url)\n", + " f = los~factor(type)+hmo+white\n", + " \n", + " library(MASS)\n", + " mod = glm.nb(f, medpar)\n", + " coef(summary(mod))\n", + " Estimate Std. Error z value Pr(>|z|)\n", + " (Intercept) 2.31027893 0.06744676 34.253370 3.885556e-257\n", + " factor(type)2 0.22124898 0.05045746 4.384861 1.160597e-05\n", + " factor(type)3 0.70615882 0.07599849 9.291748 1.517751e-20\n", + " hmo -0.06795522 0.05321375 -1.277024 2.015939e-01\n", + " white -0.12906544 0.06836272 -1.887951 5.903257e-02\n", + "\n", + "### Numerical precision \n", + "\n", + "The ``statsmodels`` generic MLE and ``R`` parameter estimates agree up to the fourth decimal. The standard errors, however, agree only up to the second decimal. This discrepancy is the result of imprecision in our Hessian numerical estimates. In the current context, the difference between ``MASS`` and ``statsmodels`` standard error estimates is substantively irrelevant, but it highlights the fact that users who need very precise estimates may not always want to rely on default settings when using numerical derivatives. In such cases, it is better to use analytical derivatives with the ``LikelihoodModel`` class." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.4.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/glm.ipynb b/examples/notebooks/glm.ipynb new file mode 100644 index 0000000..e87464a --- /dev/null +++ b/examples/notebooks/glm.ipynb @@ -0,0 +1,419 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Generalized Linear Models" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import numpy as np\n", + "import statsmodels.api as sm\n", + "from scipy import stats\n", + "from matplotlib import pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## GLM: Binomial response data\n", + "\n", + "### Load data\n", + "\n", + " In this example, we use the Star98 dataset which was taken with permission\n", + " from Jeff Gill (2000) Generalized linear models: A unified approach. Codebook\n", + " information can be obtained by typing: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(sm.datasets.star98.NOTE)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load the data and add a constant to the exogenous (independent) variables:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = sm.datasets.star98.load(as_pandas=False)\n", + "data.exog = sm.add_constant(data.exog, prepend=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " The dependent variable is N by 2 (Success: NABOVE, Failure: NBELOW): " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(data.endog[:5,:])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " The independent variables include all the other variables described above, as\n", + " well as the interaction terms:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(data.exog[:2,:])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fit and summary" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "glm_binom = sm.GLM(data.endog, data.exog, family=sm.families.Binomial())\n", + "res = glm_binom.fit()\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Quantities of interest" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('Total number of trials:', data.endog[0].sum())\n", + "print('Parameters: ', res.params)\n", + "print('T-values: ', res.tvalues)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First differences: We hold all explanatory variables constant at their means and manipulate the percentage of low income households to assess its impact on the response variables: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "means = data.exog.mean(axis=0)\n", + "means25 = means.copy()\n", + "means25[0] = stats.scoreatpercentile(data.exog[:,0], 25)\n", + "means75 = means.copy()\n", + "means75[0] = lowinc_75per = stats.scoreatpercentile(data.exog[:,0], 75)\n", + "resp_25 = res.predict(means25)\n", + "resp_75 = res.predict(means75)\n", + "diff = resp_75 - resp_25" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The interquartile first difference for the percentage of low income households in a school district is:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(\"%2.4f%%\" % (diff*100))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Plots\n", + "\n", + " We extract information that will be used to draw some interesting plots: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "nobs = res.nobs\n", + "y = data.endog[:,0]/data.endog.sum(1)\n", + "yhat = res.mu" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot yhat vs y:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from statsmodels.graphics.api import abline_plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots()\n", + "ax.scatter(yhat, y)\n", + "line_fit = sm.OLS(y, sm.add_constant(yhat, prepend=True)).fit()\n", + "abline_plot(model_results=line_fit, ax=ax)\n", + "\n", + "\n", + "ax.set_title('Model Fit Plot')\n", + "ax.set_ylabel('Observed values')\n", + "ax.set_xlabel('Fitted values');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Plot yhat vs. Pearson residuals:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots()\n", + "\n", + "ax.scatter(yhat, res.resid_pearson)\n", + "ax.hlines(0, 0, 1)\n", + "ax.set_xlim(0, 1)\n", + "ax.set_title('Residual Dependence Plot')\n", + "ax.set_ylabel('Pearson Residuals')\n", + "ax.set_xlabel('Fitted values')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Histogram of standardized deviance residuals:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from scipy import stats\n", + "\n", + "fig, ax = plt.subplots()\n", + "\n", + "resid = res.resid_deviance.copy()\n", + "resid_std = stats.zscore(resid)\n", + "ax.hist(resid_std, bins=25)\n", + "ax.set_title('Histogram of standardized deviance residuals');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "QQ Plot of Deviance Residuals:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from statsmodels import graphics\n", + "graphics.gofplots.qqplot(resid, line='r')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## GLM: Gamma for proportional count response\n", + "\n", + "### Load data\n", + "\n", + " In the example above, we printed the ``NOTE`` attribute to learn about the\n", + " Star98 dataset. Statsmodels datasets ships with other useful information. For\n", + " example: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(sm.datasets.scotland.DESCRLONG)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Load the data and add a constant to the exogenous variables:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data2 = sm.datasets.scotland.load()\n", + "data2.exog = sm.add_constant(data2.exog, prepend=False)\n", + "print(data2.exog[:5,:])\n", + "print(data2.endog[:5])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fit and summary" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "glm_gamma = sm.GLM(data2.endog, data2.exog, family=sm.families.Gamma())\n", + "glm_results = glm_gamma.fit()\n", + "print(glm_results.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## GLM: Gaussian distribution with a noncanonical link\n", + "\n", + "### Artificial data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "nobs2 = 100\n", + "x = np.arange(nobs2)\n", + "np.random.seed(54321)\n", + "X = np.column_stack((x,x**2))\n", + "X = sm.add_constant(X, prepend=False)\n", + "lny = np.exp(-(.03*x + .0001*x**2 - 1.0)) + .001 * np.random.rand(nobs2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fit and summary" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "gauss_log = sm.GLM(lny, X, family=sm.families.Gaussian(sm.families.links.log))\n", + "gauss_log_results = gauss_log.fit()\n", + "print(gauss_log_results.summary())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/glm_formula.ipynb b/examples/notebooks/glm_formula.ipynb new file mode 100644 index 0000000..3e12c2b --- /dev/null +++ b/examples/notebooks/glm_formula.ipynb @@ -0,0 +1,124 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Generalized Linear Models (Formula)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook illustrates how you can use R-style formulas to fit Generalized Linear Models.\n", + "\n", + "To begin, we load the ``Star98`` dataset and we construct a formula and pre-process the data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import statsmodels.api as sm\n", + "import statsmodels.formula.api as smf\n", + "star98 = sm.datasets.star98.load_pandas().data\n", + "formula = 'SUCCESS ~ LOWINC + PERASIAN + PERBLACK + PERHISP + PCTCHRT + \\\n", + " PCTYRRND + PERMINTE*AVYRSEXP*AVSALK + PERSPENK*PTRATIO*PCTAF'\n", + "dta = star98[['NABOVE', 'NBELOW', 'LOWINC', 'PERASIAN', 'PERBLACK', 'PERHISP',\n", + " 'PCTCHRT', 'PCTYRRND', 'PERMINTE', 'AVYRSEXP', 'AVSALK',\n", + " 'PERSPENK', 'PTRATIO', 'PCTAF']].copy()\n", + "endog = dta['NABOVE'] / (dta['NABOVE'] + dta.pop('NBELOW'))\n", + "del dta['NABOVE']\n", + "dta['SUCCESS'] = endog" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then, we fit the GLM model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mod1 = smf.glm(formula=formula, data=dta, family=sm.families.Binomial()).fit()\n", + "mod1.summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we define a function to operate customized data transformation using the formula framework:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def double_it(x):\n", + " return 2 * x\n", + "formula = 'SUCCESS ~ double_it(LOWINC) + PERASIAN + PERBLACK + PERHISP + PCTCHRT + \\\n", + " PCTYRRND + PERMINTE*AVYRSEXP*AVSALK + PERSPENK*PTRATIO*PCTAF'\n", + "mod2 = smf.glm(formula=formula, data=dta, family=sm.families.Binomial()).fit()\n", + "mod2.summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As expected, the coefficient for ``double_it(LOWINC)`` in the second model is half the size of the ``LOWINC`` coefficient from the first model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(mod1.params[1])\n", + "print(mod2.params[1] * 2)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.4.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/glm_weights.ipynb b/examples/notebooks/glm_weights.ipynb new file mode 100644 index 0000000..e889f07 --- /dev/null +++ b/examples/notebooks/glm_weights.ipynb @@ -0,0 +1,890 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Weighted Generalized Linear Models" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import statsmodels.formula.api as smf\n", + "import statsmodels.api as sm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Weighted GLM: Poisson response data\n", + "\n", + "### Load data\n", + "\n", + "In this example, we'll use the affair dataset using a handful of exogenous variables to predict the extra-marital affair rate. \n", + "\n", + "Weights will be generated to show that `freq_weights` are equivalent to repeating records of data. On the other hand, `var_weights` is equivalent to aggregating data. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(sm.datasets.fair.NOTE)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load the data into a pandas dataframe." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "data = sm.datasets.fair.load_pandas().data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " The dependent (endogenous) variable is ``affairs``" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "data.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "data[:3]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the following we will work mostly with Poisson. While using decimal affairs works, we convert them to integers to have a count distribution." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "data[\"affairs\"] = np.ceil(data[\"affairs\"])\n", + "data[:3]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(data[\"affairs\"] == 0).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "np.bincount(data[\"affairs\"].astype(int))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Condensing and Aggregating observations\n", + "\n", + "We have 6366 observations in our original dataset. When we consider only some selected variables, then we have fewer unique observations. In the following we combine observations in two ways, first we combine observations that have values for all variables identical, and secondly we combine observations that have the same explanatory variables." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dataset with unique observations\n", + "\n", + "We use pandas's groupby to combine identical observations and create a new variable `freq` that count how many observation have the values in the corresponding row." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "data2 = data.copy()\n", + "data2['const'] = 1\n", + "dc = data2['affairs rate_marriage age yrs_married const'.split()].groupby('affairs rate_marriage age yrs_married'.split()).count()\n", + "dc.reset_index(inplace=True)\n", + "dc.rename(columns={'const': 'freq'}, inplace=True)\n", + "print(dc.shape)\n", + "dc.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dataset with unique explanatory variables (exog)\n", + "\n", + "For the next dataset we combine observations that have the same values of the explanatory variables. However, because the response variable can differ among combined observations, we compute the mean and the sum of the response variable for all combined observations.\n", + "\n", + "We use again pandas ``groupby`` to combine observations and to create the new variables. We also flatten the ``MultiIndex`` into a simple index." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "gr = data['affairs rate_marriage age yrs_married'.split()].groupby('rate_marriage age yrs_married'.split())\n", + "df_a = gr.agg(['mean', 'sum','count'])\n", + "def merge_tuple(tpl):\n", + " if isinstance(tpl, tuple) and len(tpl) > 1:\n", + " return \"_\".join(map(str, tpl))\n", + " else:\n", + " return tpl\n", + " \n", + "df_a.columns = df_a.columns.map(merge_tuple)\n", + "df_a.reset_index(inplace=True)\n", + "print(df_a.shape)\n", + "df_a.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After combining observations with have a dataframe `dc` with 467 unique observations, and a dataframe `df_a` with 130 observations with unique values of the explanatory variables." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print('number of rows: \\noriginal, with unique observations, with unique exog')\n", + "data.shape[0], dc.shape[0], df_a.shape[0]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Analysis\n", + "\n", + "In the following, we compare the GLM-Poisson results of the original data with models of the combined observations where the multiplicity or aggregation is given by weights or exposure.\n", + "\n", + "\n", + "### original data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "glm = smf.glm('affairs ~ rate_marriage + age + yrs_married',\n", + " data=data, family=sm.families.Poisson())\n", + "res_o = glm.fit()\n", + "print(res_o.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_o.pearson_chi2 / res_o.df_resid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### condensed data (unique observations with frequencies)\n", + "\n", + "Combining identical observations and using frequency weights to take into account the multiplicity of observations produces exactly the same results. Some results attribute will differ when we want to have information about the observation and not about the aggregate of all identical observations. For example, residuals do not take ``freq_weights`` into account." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "glm = smf.glm('affairs ~ rate_marriage + age + yrs_married',\n", + " data=dc, family=sm.families.Poisson(), freq_weights=np.asarray(dc['freq']))\n", + "res_f = glm.fit()\n", + "print(res_f.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_f.pearson_chi2 / res_f.df_resid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### condensed using ``var_weights`` instead of ``freq_weights``\n", + "\n", + "Next, we compare ``var_weights`` to ``freq_weights``. It is a common practice to incorporate ``var_weights`` when the endogenous variable reflects averages and not identical observations.\n", + "I don't see a theoretical reason why it produces the same results (in general).\n", + "\n", + "This produces the same results but ``df_resid`` differs the ``freq_weights`` example because ``var_weights`` do not change the number of effective observations. \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "glm = smf.glm('affairs ~ rate_marriage + age + yrs_married',\n", + " data=dc, family=sm.families.Poisson(), var_weights=np.asarray(dc['freq']))\n", + "res_fv = glm.fit()\n", + "print(res_fv.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dispersion computed from the results is incorrect because of wrong ``df_resid``. \n", + "It is correct if we use the original ``df_resid``." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_fv.pearson_chi2 / res_fv.df_resid, res_f.pearson_chi2 / res_f.df_resid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### aggregated or averaged data (unique values of explanatory variables)\n", + "\n", + "For these cases we combine observations that have the same values of the explanatory variables. The corresponding response variable is either a sum or an average.\n", + "\n", + "#### using ``exposure``\n", + "\n", + "If our dependent variable is the sum of the responses of all combined observations, then under the Poisson assumption the distribution remains the same but we have varying `exposure` given by the number of individuals that are represented by one aggregated observation.\n", + "\n", + "The parameter estimates and covariance of parameters are the same with the original data, but log-likelihood, deviance and Pearson chi-squared differ" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "glm = smf.glm('affairs_sum ~ rate_marriage + age + yrs_married',\n", + " data=df_a, family=sm.families.Poisson(), exposure=np.asarray(df_a['affairs_count']))\n", + "res_e = glm.fit()\n", + "print(res_e.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_e.pearson_chi2 / res_e.df_resid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### using var_weights\n", + "\n", + "We can also use the mean of all combined values of the dependent variable. In this case the variance will be related to the inverse of the total exposure reflected by one combined observation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "glm = smf.glm('affairs_mean ~ rate_marriage + age + yrs_married',\n", + " data=df_a, family=sm.families.Poisson(), var_weights=np.asarray(df_a['affairs_count']))\n", + "res_a = glm.fit()\n", + "print(res_a.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Comparison\n", + "\n", + "We saw in the summary prints above that ``params`` and ``cov_params`` with associated Wald inference agree across versions. We summarize this in the following comparing individual results attributes across versions.\n", + "\n", + "Parameter estimates `params`, standard errors of the parameters `bse` and `pvalues` of the parameters for the tests that the parameters are zeros all agree. However, the likelihood and goodness-of-fit statistics, `llf`, `deviance` and `pearson_chi2` only partially agree. Specifically, the aggregated version do not agree with the results using the original data.\n", + "\n", + "**Warning**: The behavior of `llf`, `deviance` and `pearson_chi2` might still change in future versions.\n", + "\n", + "Both the sum and average of the response variable for unique values of the explanatory variables have a proper likelihood interpretation. However, this interpretation is not reflected in these three statistics. Computationally this might be due to missing adjustments when aggregated data is used. However, theoretically we can think in these cases, especially for `var_weights` of the misspecified case when likelihood analysis is inappropriate and the results should be interpreted as quasi-likelihood estimates. There is an ambiguity in the definition of ``var_weights`` because they can be used for averages with correctly specified likelihood as well as for variance adjustments in the quasi-likelihood case. We are currently not trying to match the likelihood specification. However, in the next section we show that likelihood ratio type tests still produce the same result for all aggregation versions when we assume that the underlying model is correctly specified." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "results_all = [res_o, res_f, res_e, res_a]\n", + "names = 'res_o res_f res_e res_a'.split()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "pd.concat([r.params for r in results_all], axis=1, keys=names)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "pd.concat([r.bse for r in results_all], axis=1, keys=names)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "pd.concat([r.pvalues for r in results_all], axis=1, keys=names)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "pd.DataFrame(np.column_stack([[r.llf, r.deviance, r.pearson_chi2] for r in results_all]), \n", + " columns=names, index=['llf', 'deviance', 'pearson chi2'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Likelihood Ratio type tests\n", + "\n", + "We saw above that likelihood and related statistics do not agree between the aggregated and original, individual data. We illustrate in the following that likelihood ratio test and difference in deviance aggree across versions, however Pearson chi-squared does not.\n", + "\n", + "As before: This is not sufficiently clear yet and could change.\n", + "\n", + "As a test case we drop the `age` variable and compute the likelihood ratio type statistics as difference between reduced or constrained and full or unconstraint model." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### original observations and frequency weights" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "glm = smf.glm('affairs ~ rate_marriage + yrs_married',\n", + " data=data, family=sm.families.Poisson())\n", + "res_o2 = glm.fit()\n", + "#print(res_f2.summary())\n", + "res_o2.pearson_chi2 - res_o.pearson_chi2, res_o2.deviance - res_o.deviance, res_o2.llf - res_o.llf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "glm = smf.glm('affairs ~ rate_marriage + yrs_married',\n", + " data=dc, family=sm.families.Poisson(), freq_weights=np.asarray(dc['freq']))\n", + "res_f2 = glm.fit()\n", + "#print(res_f2.summary())\n", + "res_f2.pearson_chi2 - res_f.pearson_chi2, res_f2.deviance - res_f.deviance, res_f2.llf - res_f.llf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### aggregated data: ``exposure`` and ``var_weights``\n", + "\n", + "Note: LR test agrees with original observations, ``pearson_chi2`` differs and has the wrong sign." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "glm = smf.glm('affairs_sum ~ rate_marriage + yrs_married',\n", + " data=df_a, family=sm.families.Poisson(), exposure=np.asarray(df_a['affairs_count']))\n", + "res_e2 = glm.fit()\n", + "res_e2.pearson_chi2 - res_e.pearson_chi2, res_e2.deviance - res_e.deviance, res_e2.llf - res_e.llf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "glm = smf.glm('affairs_mean ~ rate_marriage + yrs_married',\n", + " data=df_a, family=sm.families.Poisson(), var_weights=np.asarray(df_a['affairs_count']))\n", + "res_a2 = glm.fit()\n", + "res_a2.pearson_chi2 - res_a.pearson_chi2, res_a2.deviance - res_a.deviance, res_a2.llf - res_a.llf" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Investigating Pearson chi-square statistic\n", + "\n", + "First, we do some sanity checks that there are no basic bugs in the computation of `pearson_chi2` and `resid_pearson`. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_e2.pearson_chi2, res_e.pearson_chi2, (res_e2.resid_pearson**2).sum(), (res_e.resid_pearson**2).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_e._results.resid_response.mean(), res_e.model.family.variance(res_e.mu)[:5], res_e.mu[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(res_e._results.resid_response**2 / res_e.model.family.variance(res_e.mu)).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_e2._results.resid_response.mean(), res_e2.model.family.variance(res_e2.mu)[:5], res_e2.mu[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(res_e2._results.resid_response**2 / res_e2.model.family.variance(res_e2.mu)).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "(res_e2._results.resid_response**2).sum(), (res_e._results.resid_response**2).sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "One possible reason for the incorrect sign is that we are subtracting quadratic terms that are divided by different denominators. In some related cases, the recommendation in the literature is to use a common denominator. We can compare pearson chi-squared statistic using the same variance assumption in the full and reduced model. \n", + "\n", + "In this case we obtain the same pearson chi2 scaled difference between reduced and full model across all versions. (Issue [#3616](https://github.com/statsmodels/statsmodels/issues/3616) is intended to track this further.)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "((res_e2._results.resid_response**2 - res_e._results.resid_response**2) / res_e2.model.family.variance(res_e2.mu)).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "((res_a2._results.resid_response**2 - res_a._results.resid_response**2) / res_a2.model.family.variance(res_a2.mu)\n", + "* res_a2.model.var_weights).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "((res_f2._results.resid_response**2 - res_f._results.resid_response**2) / res_f2.model.family.variance(res_f2.mu) \n", + " * res_f2.model.freq_weights).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "((res_o2._results.resid_response**2 - res_o._results.resid_response**2) / res_o2.model.family.variance(res_o2.mu)).sum()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Remainder\n", + "\n", + "The remainder of the notebook just contains some additional checks and can be ignored." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "np.exp(res_e2.model.exposure)[:5], np.asarray(df_a['affairs_count'])[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_e2.resid_pearson.sum() - res_e.resid_pearson.sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_e2.mu[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_a2.pearson_chi2, res_a.pearson_chi2, res_a2.resid_pearson.sum(), res_a.resid_pearson.sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "((res_a2._results.resid_response**2) / res_a2.model.family.variance(res_a2.mu) * res_a2.model.var_weights).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "((res_a._results.resid_response**2) / res_a.model.family.variance(res_a.mu) * res_a.model.var_weights).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "((res_a._results.resid_response**2) / res_a.model.family.variance(res_a2.mu) * res_a.model.var_weights).sum()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_e.model.endog[:5], res_e2.model.endog[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_a.model.endog[:5], res_a2.model.endog[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_a2.model.endog[:5] * np.exp(res_e2.model.exposure)[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_a2.model.endog[:5] * res_a2.model.var_weights[:5]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from scipy import stats\n", + "stats.chi2.sf(27.19530754604785, 1), stats.chi2.sf(29.083798806764687, 1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_o.pvalues" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(res_e2.summary())\n", + "print(res_e.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(res_f2.summary())\n", + "print(res_f.summary())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.0" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/gls.ipynb b/examples/notebooks/gls.ipynb new file mode 100644 index 0000000..8b13d09 --- /dev/null +++ b/examples/notebooks/gls.ipynb @@ -0,0 +1,226 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Generalized Least Squares" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import statsmodels.api as sm\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Longley dataset is a time series dataset: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "data = sm.datasets.longley.load(as_pandas=False)\n", + "data.exog = sm.add_constant(data.exog)\n", + "print(data.exog[:5])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + " Let's assume that the data is heteroskedastic and that we know\n", + " the nature of the heteroskedasticity. We can then define\n", + " `sigma` and use it to give us a GLS model\n", + "\n", + " First we will obtain the residuals from an OLS fit" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ols_resid = sm.OLS(data.endog, data.exog).fit().resid" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Assume that the error terms follow an AR(1) process with a trend:\n", + "\n", + "$\\epsilon_i = \\beta_0 + \\rho\\epsilon_{i-1} + \\eta_i$\n", + "\n", + "where $\\eta \\sim N(0,\\Sigma^2)$\n", + "\n", + "and that $\\rho$ is simply the correlation of the residual a consistent estimator for rho is to regress the residuals on the lagged residuals" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "resid_fit = sm.OLS(ols_resid[1:], sm.add_constant(ols_resid[:-1])).fit()\n", + "print(resid_fit.tvalues[1])\n", + "print(resid_fit.pvalues[1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " While we don't have strong evidence that the errors follow an AR(1)\n", + " process we continue" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "rho = resid_fit.params[1]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we know, an AR(1) process means that near-neighbors have a stronger\n", + " relation so we can give this structure by using a toeplitz matrix" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from scipy.linalg import toeplitz\n", + "\n", + "toeplitz(range(5))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "order = toeplitz(range(len(ols_resid)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "so that our error covariance structure is actually rho**order\n", + " which defines an autocorrelation structure" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sigma = rho**order\n", + "gls_model = sm.GLS(data.endog, data.exog, sigma=sigma)\n", + "gls_results = gls_model.fit()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Of course, the exact rho in this instance is not known so it it might make more sense to use feasible gls, which currently only has experimental support.\n", + "\n", + "We can use the GLSAR model with one lag, to get to a similar result:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "glsar_model = sm.GLSAR(data.endog, data.exog, 1)\n", + "glsar_results = glsar_model.iterative_fit(1)\n", + "print(glsar_results.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comparing gls and glsar results, we see that there are some small\n", + " differences in the parameter estimates and the resulting standard\n", + " errors of the parameter estimate. This might be do to the numerical\n", + " differences in the algorithm, e.g. the treatment of initial conditions,\n", + " because of the small number of observations in the longley dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(gls_results.params)\n", + "print(glsar_results.params)\n", + "print(gls_results.bse)\n", + "print(glsar_results.bse)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/influence_glm_logit.ipynb b/examples/notebooks/influence_glm_logit.ipynb new file mode 100644 index 0000000..8320e43 --- /dev/null +++ b/examples/notebooks/influence_glm_logit.ipynb @@ -0,0 +1,198 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Influence Measures for GLM Logit\n", + "\n", + "\n", + "Based on draft version for GLMInfluence, which will also apply to discrete Logit, Probit and Poisson, and eventually be extended to cover most models outside of time series analysis.\n", + "\n", + "The example for logistic regression was used by Pregibon (1981) \"Logistic Regression diagnostics\" and is based on data by Finney (1947).\n", + "\n", + "GLMInfluence includes the basic influence measures but still misses some measures described in Pregibon (1981), for example those related to deviance and effects on confidence intervals." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import os.path\n", + "import numpy as np\n", + "import pandas as pd\n", + "\n", + "from statsmodels.genmod.generalized_linear_model import GLM\n", + "from statsmodels.genmod import families" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import statsmodels.stats.tests.test_influence\n", + "test_module = statsmodels.stats.tests.test_influence.__file__\n", + "cur_dir = cur_dir = os.path.abspath(os.path.dirname(test_module))\n", + "\n", + "file_name = 'binary_constrict.csv'\n", + "file_path = os.path.join(cur_dir, 'results', file_name)\n", + "df = pd.read_csv(file_path, index_col=0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res = GLM(df['constrict'], df[['const', 'log_rate', 'log_volumne']],\n", + " family=families.Binomial()).fit(attach_wls=True, atol=1e-10)\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## get the influence measures\n", + "\n", + "GLMResults has a `get_influence` method similar to OLSResults, that returns and instance of the GLMInfluence class. This class has methods and (cached) attributes to inspect influence and outlier measures.\n", + "\n", + "This measures are based on a one-step approximation to the the results for deleting one observation. One-step approximations are usually accurate for small changes but underestimate the magnitude of large changes. Event though large changes are underestimated, they still show clearly the effect of influential observations\n", + "\n", + "In this example observation 4 and 18 have a large standardized residual and large Cook's distance, but not a large leverage. Observation 13 has the largest leverage but only small Cook's distance and not a large studentized residual.\n", + "\n", + "Only the two observations 4 and 18 have a large impact on the parameter estimates." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "infl = res.get_influence(observed=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "summ_df = infl.summary_frame()\n", + "summ_df.sort_values('cooks_d', ascending=False)[:10]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "infl.plot_influence()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "infl.plot_index(y_var='cooks', threshold=2 * infl.cooks_distance[0].mean())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "infl.plot_index(y_var='resid', threshold=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "infl.plot_index(y_var='dfbeta', idx=1, threshold=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "infl.plot_index(y_var='dfbeta', idx=2, threshold=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "infl.plot_index(y_var='dfbeta', idx=0, threshold=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.4.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/interactions_anova.ipynb b/examples/notebooks/interactions_anova.ipynb new file mode 100644 index 0000000..07b5cf4 --- /dev/null +++ b/examples/notebooks/interactions_anova.ipynb @@ -0,0 +1,808 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Interactions and ANOVA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note: This script is based heavily on Jonathan Taylor's class notes http://www.stanford.edu/class/stats191/interactions.html\n", + "\n", + "Download and format data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "from statsmodels.compat import urlopen\n", + "import numpy as np\n", + "np.set_printoptions(precision=4, suppress=True)\n", + "\n", + "import pandas as pd\n", + "pd.set_option(\"display.width\", 100)\n", + "import matplotlib.pyplot as plt\n", + "from statsmodels.formula.api import ols\n", + "from statsmodels.graphics.api import interaction_plot, abline_plot\n", + "from statsmodels.stats.anova import anova_lm\n", + "\n", + "try:\n", + " salary_table = pd.read_csv('salary.table')\n", + "except: # recent pandas can read URL without urlopen\n", + " url = 'http://stats191.stanford.edu/data/salary.table'\n", + " fh = urlopen(url)\n", + " salary_table = pd.read_table(fh)\n", + " salary_table.to_csv('salary.table')\n", + "\n", + "E = salary_table.E\n", + "M = salary_table.M\n", + "X = salary_table.X\n", + "S = salary_table.S" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Take a look at the data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(6,6))\n", + "symbols = ['D', '^']\n", + "colors = ['r', 'g', 'blue']\n", + "factor_groups = salary_table.groupby(['E','M'])\n", + "for values, group in factor_groups:\n", + " i,j = values\n", + " plt.scatter(group['X'], group['S'], marker=symbols[j], color=colors[i-1],\n", + " s=144)\n", + "plt.xlabel('Experience');\n", + "plt.ylabel('Salary');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Fit a linear model:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "formula = 'S ~ C(E) + C(M) + X'\n", + "lm = ols(formula, salary_table).fit()\n", + "print(lm.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Have a look at the created design matrix: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lm.model.exog[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Or since we initially passed in a DataFrame, we have a DataFrame available in" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lm.model.data.orig_exog[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We keep a reference to the original untouched data in" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lm.model.data.frame[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Influence statistics" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "infl = lm.get_influence()\n", + "print(infl.summary_table())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "or get a dataframe" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df_infl = infl.summary_frame()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "df_infl[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now plot the reiduals within the groups separately:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "resid = lm.resid\n", + "plt.figure(figsize=(6,6));\n", + "for values, group in factor_groups:\n", + " i,j = values\n", + " group_num = i*2 + j - 1 # for plotting purposes\n", + " x = [group_num] * len(group)\n", + " plt.scatter(x, resid[group.index], marker=symbols[j], color=colors[i-1],\n", + " s=144, edgecolors='black')\n", + "plt.xlabel('Group');\n", + "plt.ylabel('Residuals');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we will test some interactions using anova or f_test" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "interX_lm = ols(\"S ~ C(E) * X + C(M)\", salary_table).fit()\n", + "print(interX_lm.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Do an ANOVA check" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from statsmodels.stats.api import anova_lm\n", + "\n", + "table1 = anova_lm(lm, interX_lm)\n", + "print(table1)\n", + "\n", + "interM_lm = ols(\"S ~ X + C(E)*C(M)\", data=salary_table).fit()\n", + "print(interM_lm.summary())\n", + "\n", + "table2 = anova_lm(lm, interM_lm)\n", + "print(table2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The design matrix as a DataFrame" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "interM_lm.model.data.orig_exog[:5]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The design matrix as an ndarray" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "interM_lm.model.exog\n", + "interM_lm.model.exog_names" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "infl = interM_lm.get_influence()\n", + "resid = infl.resid_studentized_internal\n", + "plt.figure(figsize=(6,6))\n", + "for values, group in factor_groups:\n", + " i,j = values\n", + " idx = group.index\n", + " plt.scatter(X[idx], resid[idx], marker=symbols[j], color=colors[i-1],\n", + " s=144, edgecolors='black')\n", + "plt.xlabel('X');\n", + "plt.ylabel('standardized resids');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Looks like one observation is an outlier." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "drop_idx = abs(resid).argmax()\n", + "print(drop_idx) # zero-based index\n", + "idx = salary_table.index.drop(drop_idx)\n", + "\n", + "lm32 = ols('S ~ C(E) + X + C(M)', data=salary_table, subset=idx).fit()\n", + "\n", + "print(lm32.summary())\n", + "print('\\n')\n", + "\n", + "interX_lm32 = ols('S ~ C(E) * X + C(M)', data=salary_table, subset=idx).fit()\n", + "\n", + "print(interX_lm32.summary())\n", + "print('\\n')\n", + "\n", + "\n", + "table3 = anova_lm(lm32, interX_lm32)\n", + "print(table3)\n", + "print('\\n')\n", + "\n", + "\n", + "interM_lm32 = ols('S ~ X + C(E) * C(M)', data=salary_table, subset=idx).fit()\n", + "\n", + "table4 = anova_lm(lm32, interM_lm32)\n", + "print(table4)\n", + "print('\\n')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Replot the residuals" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "resid = interM_lm32.get_influence().summary_frame()['standard_resid']\n", + "\n", + "plt.figure(figsize=(6,6))\n", + "resid = resid.reindex(X.index)\n", + "for values, group in factor_groups:\n", + " i,j = values\n", + " idx = group.index\n", + " plt.scatter(X.loc[idx], resid.loc[idx], marker=symbols[j], color=colors[i-1],\n", + " s=144, edgecolors='black')\n", + "plt.xlabel('X[~[32]]');\n", + "plt.ylabel('standardized resids');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Plot the fitted values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "lm_final = ols('S ~ X + C(E)*C(M)', data = salary_table.drop([drop_idx])).fit()\n", + "mf = lm_final.model.data.orig_exog\n", + "lstyle = ['-','--']\n", + "\n", + "plt.figure(figsize=(6,6))\n", + "for values, group in factor_groups:\n", + " i,j = values\n", + " idx = group.index\n", + " plt.scatter(X[idx], S[idx], marker=symbols[j], color=colors[i-1],\n", + " s=144, edgecolors='black')\n", + " # drop NA because there is no idx 32 in the final model\n", + " fv = lm_final.fittedvalues.reindex(idx).dropna()\n", + " x = mf.X.reindex(idx).dropna()\n", + " plt.plot(x, fv, ls=lstyle[j], color=colors[i-1])\n", + "plt.xlabel('Experience');\n", + "plt.ylabel('Salary');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From our first look at the data, the difference between Master's and PhD in the management group is different than in the non-management group. This is an interaction between the two qualitative variables management,M and education,E. We can visualize this by first removing the effect of experience, then plotting the means within each of the 6 groups using interaction.plot." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "U = S - X * interX_lm32.params['X']\n", + "\n", + "plt.figure(figsize=(6,6))\n", + "interaction_plot(E, M, U, colors=['red','blue'], markers=['^','D'],\n", + " markersize=10, ax=plt.gca())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Minority Employment Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " jobtest_table = pd.read_table('jobtest.table')\n", + "except: # don't have data already\n", + " url = 'http://stats191.stanford.edu/data/jobtest.table'\n", + " jobtest_table = pd.read_table(url)\n", + "\n", + "factor_group = jobtest_table.groupby(['MINORITY'])\n", + "\n", + "fig, ax = plt.subplots(figsize=(6,6))\n", + "colors = ['purple', 'green']\n", + "markers = ['o', 'v']\n", + "for factor, group in factor_group:\n", + " ax.scatter(group['TEST'], group['JPERF'], color=colors[factor],\n", + " marker=markers[factor], s=12**2)\n", + "ax.set_xlabel('TEST');\n", + "ax.set_ylabel('JPERF');" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "min_lm = ols('JPERF ~ TEST', data=jobtest_table).fit()\n", + "print(min_lm.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(6,6));\n", + "for factor, group in factor_group:\n", + " ax.scatter(group['TEST'], group['JPERF'], color=colors[factor],\n", + " marker=markers[factor], s=12**2)\n", + "\n", + "ax.set_xlabel('TEST')\n", + "ax.set_ylabel('JPERF')\n", + "fig = abline_plot(model_results = min_lm, ax=ax)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "min_lm2 = ols('JPERF ~ TEST + TEST:MINORITY',\n", + " data=jobtest_table).fit()\n", + "\n", + "print(min_lm2.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(6,6));\n", + "for factor, group in factor_group:\n", + " ax.scatter(group['TEST'], group['JPERF'], color=colors[factor],\n", + " marker=markers[factor], s=12**2)\n", + "\n", + "fig = abline_plot(intercept = min_lm2.params['Intercept'],\n", + " slope = min_lm2.params['TEST'], ax=ax, color='purple');\n", + "fig = abline_plot(intercept = min_lm2.params['Intercept'],\n", + " slope = min_lm2.params['TEST'] + min_lm2.params['TEST:MINORITY'],\n", + " ax=ax, color='green');" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "min_lm3 = ols('JPERF ~ TEST + MINORITY', data = jobtest_table).fit()\n", + "print(min_lm3.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(6,6));\n", + "for factor, group in factor_group:\n", + " ax.scatter(group['TEST'], group['JPERF'], color=colors[factor],\n", + " marker=markers[factor], s=12**2)\n", + "\n", + "fig = abline_plot(intercept = min_lm3.params['Intercept'],\n", + " slope = min_lm3.params['TEST'], ax=ax, color='purple');\n", + "fig = abline_plot(intercept = min_lm3.params['Intercept'] + min_lm3.params['MINORITY'],\n", + " slope = min_lm3.params['TEST'], ax=ax, color='green');" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "min_lm4 = ols('JPERF ~ TEST * MINORITY', data = jobtest_table).fit()\n", + "print(min_lm4.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(8,6));\n", + "for factor, group in factor_group:\n", + " ax.scatter(group['TEST'], group['JPERF'], color=colors[factor],\n", + " marker=markers[factor], s=12**2)\n", + "\n", + "fig = abline_plot(intercept = min_lm4.params['Intercept'],\n", + " slope = min_lm4.params['TEST'], ax=ax, color='purple');\n", + "fig = abline_plot(intercept = min_lm4.params['Intercept'] + min_lm4.params['MINORITY'],\n", + " slope = min_lm4.params['TEST'] + min_lm4.params['TEST:MINORITY'],\n", + " ax=ax, color='green');" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# is there any effect of MINORITY on slope or intercept?\n", + "table5 = anova_lm(min_lm, min_lm4)\n", + "print(table5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# is there any effect of MINORITY on intercept\n", + "table6 = anova_lm(min_lm, min_lm3)\n", + "print(table6)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# is there any effect of MINORITY on slope\n", + "table7 = anova_lm(min_lm, min_lm2)\n", + "print(table7)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# is it just the slope or both?\n", + "table8 = anova_lm(min_lm2, min_lm4)\n", + "print(table8)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## One-way ANOVA" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " rehab_table = pd.read_csv('rehab.table')\n", + "except:\n", + " url = 'http://stats191.stanford.edu/data/rehab.csv'\n", + " rehab_table = pd.read_table(url, delimiter=\",\")\n", + " rehab_table.to_csv('rehab.table')\n", + "\n", + "fig, ax = plt.subplots(figsize=(8,6))\n", + "fig = rehab_table.boxplot('Time', 'Fitness', ax=ax, grid=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "rehab_lm = ols('Time ~ C(Fitness)', data=rehab_table).fit()\n", + "table9 = anova_lm(rehab_lm)\n", + "print(table9)\n", + "\n", + "print(rehab_lm.model.data.orig_exog)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(rehab_lm.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Two-way ANOVA" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "try:\n", + " kidney_table = pd.read_table('./kidney.table')\n", + "except:\n", + " url = 'http://stats191.stanford.edu/data/kidney.table'\n", + " kidney_table = pd.read_csv(url, delim_whitespace=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Explore the dataset" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kidney_table.head(10)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Balanced panel" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kt = kidney_table\n", + "plt.figure(figsize=(8,6))\n", + "fig = interaction_plot(kt['Weight'], kt['Duration'], np.log(kt['Days']+1),\n", + " colors=['red', 'blue'], markers=['D','^'], ms=10, ax=plt.gca())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You have things available in the calling namespace available in the formula evaluation namespace" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kidney_lm = ols('np.log(Days+1) ~ C(Duration) * C(Weight)', data=kt).fit()\n", + "\n", + "table10 = anova_lm(kidney_lm)\n", + "\n", + "print(anova_lm(ols('np.log(Days+1) ~ C(Duration) + C(Weight)',\n", + " data=kt).fit(), kidney_lm))\n", + "print(anova_lm(ols('np.log(Days+1) ~ C(Duration)', data=kt).fit(),\n", + " ols('np.log(Days+1) ~ C(Duration) + C(Weight, Sum)',\n", + " data=kt).fit()))\n", + "print(anova_lm(ols('np.log(Days+1) ~ C(Weight)', data=kt).fit(),\n", + " ols('np.log(Days+1) ~ C(Duration) + C(Weight, Sum)',\n", + " data=kt).fit()))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sum of squares\n", + "\n", + " Illustrates the use of different types of sums of squares (I,II,II)\n", + " and how the Sum contrast can be used to produce the same output between\n", + " the 3.\n", + "\n", + " Types I and II are equivalent under a balanced design.\n", + "\n", + " Don't use Type III with non-orthogonal contrast - ie., Treatment" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sum_lm = ols('np.log(Days+1) ~ C(Duration, Sum) * C(Weight, Sum)',\n", + " data=kt).fit()\n", + "\n", + "print(anova_lm(sum_lm))\n", + "print(anova_lm(sum_lm, typ=2))\n", + "print(anova_lm(sum_lm, typ=3))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "nosum_lm = ols('np.log(Days+1) ~ C(Duration, Treatment) * C(Weight, Treatment)',\n", + " data=kt).fit()\n", + "print(anova_lm(nosum_lm))\n", + "print(anova_lm(nosum_lm, typ=2))\n", + "print(anova_lm(nosum_lm, typ=3))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/kernel_density.ipynb b/examples/notebooks/kernel_density.ipynb new file mode 100644 index 0000000..fcf0d13 --- /dev/null +++ b/examples/notebooks/kernel_density.ipynb @@ -0,0 +1,485 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Kernel Density Estimation\n", + "\n", + "Kernel density estimation is the process of estimating an unknown probability density function using a *kernel function* $K(u)$. While a histogram counts the number of data points in somewhat arbitrary regions, a kernel density estimate is a function defined as the sum of a kernel function on every data point. The kernel function typically exhibits the following properties:\n", + "\n", + "1. Symmetry such that $K(u) = K(-u)$.\n", + "2. Normalization such that $\\int_{-\\infty}^{\\infty} K(u) \\ du = 1$ .\n", + "3. Monotonically decreasing such that $K'(u) < 0$ when $u > 0$.\n", + "4. Expected value equal to zero such that $\\mathrm{E}[K] = 0$.\n", + "\n", + "For more information about kernel density estimation, see for instance [Wikipedia - Kernel density estimation](https://en.wikipedia.org/wiki/Kernel_density_estimation).\n", + "\n", + "A univariate kernel density estimator is implemented in `sm.nonparametric.KDEUnivariate`.\n", + "In this example we will show the following:\n", + "\n", + "* Basic usage, how to fit the estimator.\n", + "* The effect of varying the bandwidth of the kernel using the `bw` argument.\n", + "* The various kernel functions available using the `kernel` argument." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import numpy as np\n", + "from scipy import stats\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt\n", + "from statsmodels.distributions.mixture_rvs import mixture_rvs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A univariate example" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.random.seed(12345) # Seed the random number generator for reproducible results" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We create a bimodal distribution: a mixture of two normal distributions with locations at `-1` and `1`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Location, scale and weight for the two distributions\n", + "dist1_loc, dist1_scale, weight1 = -1 , .5, .25\n", + "dist2_loc, dist2_scale, weight2 = 1 , .5, .75\n", + "\n", + "# Sample from a mixture of distributions\n", + "obs_dist = mixture_rvs(prob=[weight1, weight2], size=250,\n", + " dist=[stats.norm, stats.norm],\n", + " kwargs = (dict(loc=dist1_loc, scale=dist1_scale),\n", + " dict(loc=dist2_loc, scale=dist2_scale)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The simplest non-parametric technique for density estimation is the histogram." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12, 5))\n", + "ax = fig.add_subplot(111)\n", + "\n", + "# Scatter plot of data samples and histogram\n", + "ax.scatter(obs_dist, np.abs(np.random.randn(obs_dist.size)),\n", + " zorder=15, color='red', marker='x', alpha=0.5, label='Samples')\n", + "lines = ax.hist(obs_dist, bins=20, edgecolor='k', label='Histogram')\n", + "\n", + "ax.legend(loc='best')\n", + "ax.grid(True, zorder=-5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Fitting with the default arguments" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The histogram above is discontinuous. To compute a continuous probability density function,\n", + "we can use kernel density estimation.\n", + "\n", + "We initialize a univariate kernel density estimator using `KDEUnivariate`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kde = sm.nonparametric.KDEUnivariate(obs_dist)\n", + "kde.fit() # Estimate the densities" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We present a figure of the fit, as well as the true distribution." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12, 5))\n", + "ax = fig.add_subplot(111)\n", + "\n", + "# Plot the histrogram\n", + "ax.hist(obs_dist, bins=20, density=True, label='Histogram from samples',\n", + " zorder=5, edgecolor='k', alpha=0.5)\n", + "\n", + "# Plot the KDE as fitted using the default arguments\n", + "ax.plot(kde.support, kde.density, lw=3, label='KDE from samples', zorder=10)\n", + "\n", + "# Plot the true distribution\n", + "true_values = (stats.norm.pdf(loc=dist1_loc, scale=dist1_scale, x=kde.support)*weight1\n", + " + stats.norm.pdf(loc=dist2_loc, scale=dist2_scale, x=kde.support)*weight2)\n", + "ax.plot(kde.support, true_values, lw=3, label='True distribution', zorder=15)\n", + "\n", + "# Plot the samples\n", + "ax.scatter(obs_dist, np.abs(np.random.randn(obs_dist.size))/40,\n", + " marker='x', color='red', zorder=20, label='Samples', alpha=0.5)\n", + "\n", + "ax.legend(loc='best')\n", + "ax.grid(True, zorder=-5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the code above, default arguments were used. We can also vary the bandwidth of the kernel, as we will now see." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Varying the bandwidth using the `bw` argument" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The bandwidth of the kernel can be adjusted using the `bw` argument.\n", + "In the following example, a bandwidth of `bw=0.2` seems to fit the data well." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12, 5))\n", + "ax = fig.add_subplot(111)\n", + "\n", + "# Plot the histrogram\n", + "ax.hist(obs_dist, bins=25, label='Histogram from samples',\n", + " zorder=5, edgecolor='k', density=True, alpha=0.5)\n", + "\n", + "# Plot the KDE for various bandwidths\n", + "for bandwidth in [0.1, 0.2, 0.4]:\n", + " kde.fit(bw=bandwidth) # Estimate the densities\n", + " ax.plot(kde.support, kde.density, '--', lw=2, color='k', zorder=10,\n", + " label='KDE from samples, bw = {}'.format(round(bandwidth, 2)))\n", + "\n", + "# Plot the true distribution\n", + "ax.plot(kde.support, true_values, lw=3, label='True distribution', zorder=15)\n", + "\n", + "# Plot the samples\n", + "ax.scatter(obs_dist, np.abs(np.random.randn(obs_dist.size))/50,\n", + " marker='x', color='red', zorder=20, label='Data samples', alpha=0.5)\n", + "\n", + "ax.legend(loc='best')\n", + "ax.set_xlim([-3, 3])\n", + "ax.grid(True, zorder=-5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Comparing kernel functions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the example above, a Gaussian kernel was used. Several other kernels are also available." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from statsmodels.nonparametric.kde import kernel_switch\n", + "list(kernel_switch.keys())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The available kernel functions" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a figure\n", + "fig = plt.figure(figsize=(12, 5))\n", + "\n", + "# Enumerate every option for the kernel\n", + "for i, (ker_name, ker_class) in enumerate(kernel_switch.items()):\n", + "\n", + " # Initialize the kernel object\n", + " kernel = ker_class()\n", + "\n", + " # Sample from the domain\n", + " domain = kernel.domain or [-3, 3]\n", + " x_vals = np.linspace(*domain, num=2**10)\n", + " y_vals = kernel(x_vals)\n", + "\n", + " # Create a subplot, set the title\n", + " ax = fig.add_subplot(2, 4, i + 1)\n", + " ax.set_title('Kernel function \"{}\"'.format(ker_name))\n", + " ax.plot(x_vals, y_vals, lw=3, label='{}'.format(ker_name))\n", + " ax.scatter([0], [0], marker='x', color='red')\n", + " plt.grid(True, zorder=-5)\n", + " ax.set_xlim(domain)\n", + "\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The available kernel functions on three data points" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now examine how the kernel density estimate will fit to three equally spaced data points." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create three equidistant points\n", + "data = np.linspace(-1, 1, 3)\n", + "kde = sm.nonparametric.KDEUnivariate(data)\n", + "\n", + "# Create a figure\n", + "fig = plt.figure(figsize=(12, 5))\n", + "\n", + "# Enumerate every option for the kernel\n", + "for i, kernel in enumerate(kernel_switch.keys()):\n", + "\n", + " # Create a subplot, set the title\n", + " ax = fig.add_subplot(2, 4, i + 1)\n", + " ax.set_title('Kernel function \"{}\"'.format(kernel))\n", + "\n", + " # Fit the model (estimate densities)\n", + " kde.fit(kernel=kernel, fft=False, gridsize=2**10)\n", + "\n", + " # Create the plot\n", + " ax.plot(kde.support, kde.density, lw=3, label='KDE from samples', zorder=10)\n", + " ax.scatter(data, np.zeros_like(data), marker='x', color='red')\n", + " plt.grid(True, zorder=-5)\n", + " ax.set_xlim([-3, 3])\n", + "\n", + "plt.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## A more difficult case\n", + "\n", + "The fit is not always perfect. See the example below for a harder case." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "obs_dist = mixture_rvs([.25, .75], size=250, dist=[stats.norm, stats.beta],\n", + " kwargs = (dict(loc=-1, scale=.5), dict(loc=1, scale=1, args=(1, .5))))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kde = sm.nonparametric.KDEUnivariate(obs_dist)\n", + "kde.fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12, 5))\n", + "ax = fig.add_subplot(111)\n", + "ax.hist(obs_dist, bins=20, density=True, edgecolor='k', zorder=4, alpha=0.5)\n", + "ax.plot(kde.support, kde.density, lw=3, zorder=7)\n", + "# Plot the samples\n", + "ax.scatter(obs_dist, np.abs(np.random.randn(obs_dist.size))/50,\n", + " marker='x', color='red', zorder=20, label='Data samples', alpha=0.5)\n", + "ax.grid(True, zorder=-5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## The KDE is a distribution\n", + "\n", + "Since the KDE is a distribution, we can access attributes and methods such as:\n", + "\n", + "- `entropy`\n", + "- `evaluate`\n", + "- `cdf`\n", + "- `icdf`\n", + "- `sf`\n", + "- `cumhazard`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "obs_dist = mixture_rvs([.25, .75], size=1000, dist=[stats.norm, stats.norm],\n", + " kwargs = (dict(loc=-1, scale=.5), dict(loc=1, scale=.5)))\n", + "kde = sm.nonparametric.KDEUnivariate(obs_dist)\n", + "kde.fit(gridsize=2**10)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kde.entropy" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "kde.evaluate(-1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Cumulative distribution, it's inverse, and the survival function" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12, 5))\n", + "ax = fig.add_subplot(111)\n", + "\n", + "ax.plot(kde.support, kde.cdf, lw=3, label='CDF')\n", + "ax.plot(np.linspace(0, 1, num = kde.icdf.size), kde.icdf, lw=3, label='Inverse CDF')\n", + "ax.plot(kde.support, kde.sf, lw=3, label='Survival function')\n", + "ax.legend(loc = 'best')\n", + "ax.grid(True, zorder=-5)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### The Cumulative Hazard Function" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12, 5))\n", + "ax = fig.add_subplot(111)\n", + "ax.plot(kde.support, kde.cumhazard, lw=3, label='Cumulative Hazard Function')\n", + "ax.legend(loc = 'best')\n", + "ax.grid(True, zorder=-5)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.4" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/markov_autoregression.ipynb b/examples/notebooks/markov_autoregression.ipynb new file mode 100644 index 0000000..8fa5d89 --- /dev/null +++ b/examples/notebooks/markov_autoregression.ipynb @@ -0,0 +1,386 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Markov switching autoregression models" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook provides an example of the use of Markov switching models in Statsmodels to replicate a number of results presented in Kim and Nelson (1999). It applies the Hamilton (1989) filter the Kim (1994) smoother.\n", + "\n", + "This is tested against the Markov-switching models from E-views 8, which can be found at http://www.eviews.com/EViews8/ev8ecswitch_n.html#MarkovAR or the Markov-switching models of Stata 14 which can be found at http://www.stata.com/manuals14/tsmswitch.pdf." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt\n", + "import requests\n", + "from io import BytesIO\n", + "\n", + "# NBER recessions\n", + "from pandas_datareader.data import DataReader\n", + "from datetime import datetime\n", + "usrec = DataReader('USREC', 'fred', start=datetime(1947, 1, 1), end=datetime(2013, 4, 1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hamilton (1989) switching model of GNP\n", + "\n", + "This replicates Hamilton's (1989) seminal paper introducing Markov-switching models. The model is an autoregressive model of order 4 in which the mean of the process switches between two regimes. It can be written:\n", + "\n", + "$$\n", + "y_t = \\mu_{S_t} + \\phi_1 (y_{t-1} - \\mu_{S_{t-1}}) + \\phi_2 (y_{t-2} - \\mu_{S_{t-2}}) + \\phi_3 (y_{t-3} - \\mu_{S_{t-3}}) + \\phi_4 (y_{t-4} - \\mu_{S_{t-4}}) + \\varepsilon_t\n", + "$$\n", + "\n", + "Each period, the regime transitions according to the following matrix of transition probabilities:\n", + "\n", + "$$ P(S_t = s_t | S_{t-1} = s_{t-1}) =\n", + "\\begin{bmatrix}\n", + "p_{00} & p_{10} \\\\\n", + "p_{01} & p_{11}\n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + "where $p_{ij}$ is the probability of transitioning *from* regime $i$, *to* regime $j$.\n", + "\n", + "The model class is `MarkovAutoregression` in the time-series part of `Statsmodels`. In order to create the model, we must specify the number of regimes with `k_regimes=2`, and the order of the autoregression with `order=4`. The default model also includes switching autoregressive coefficients, so here we also need to specify `switching_ar=False` to avoid that.\n", + "\n", + "After creation, the model is `fit` via maximum likelihood estimation. Under the hood, good starting parameters are found using a number of steps of the expectation maximization (EM) algorithm, and a quasi-Newton (BFGS) algorithm is applied to quickly find the maximum." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Get the RGNP data to replicate Hamilton\n", + "dta = pd.read_stata('https://www.stata-press.com/data/r14/rgnp.dta').iloc[1:]\n", + "dta.index = pd.DatetimeIndex(dta.date, freq='QS')\n", + "dta_hamilton = dta.rgnp\n", + "\n", + "# Plot the data\n", + "dta_hamilton.plot(title='Growth rate of Real GNP', figsize=(12,3))\n", + "\n", + "# Fit the model\n", + "mod_hamilton = sm.tsa.MarkovAutoregression(dta_hamilton, k_regimes=2, order=4, switching_ar=False)\n", + "res_hamilton = mod_hamilton.fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res_hamilton.summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We plot the filtered and smoothed probabilities of a recession. Filtered refers to an estimate of the probability at time $t$ based on data up to and including time $t$ (but excluding time $t+1, ..., T$). Smoothed refers to an estimate of the probability at time $t$ using all the data in the sample.\n", + "\n", + "For reference, the shaded periods represent the NBER recessions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, axes = plt.subplots(2, figsize=(7,7))\n", + "ax = axes[0]\n", + "ax.plot(res_hamilton.filtered_marginal_probabilities[0])\n", + "ax.fill_between(usrec.index, 0, 1, where=usrec['USREC'].values, color='k', alpha=0.1)\n", + "ax.set_xlim(dta_hamilton.index[4], dta_hamilton.index[-1])\n", + "ax.set(title='Filtered probability of recession')\n", + "\n", + "ax = axes[1]\n", + "ax.plot(res_hamilton.smoothed_marginal_probabilities[0])\n", + "ax.fill_between(usrec.index, 0, 1, where=usrec['USREC'].values, color='k', alpha=0.1)\n", + "ax.set_xlim(dta_hamilton.index[4], dta_hamilton.index[-1])\n", + "ax.set(title='Smoothed probability of recession')\n", + "\n", + "fig.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the estimated transition matrix we can calculate the expected duration of a recession versus an expansion." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(res_hamilton.expected_durations)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In this case, it is expected that a recession will last about one year (4 quarters) and an expansion about two and a half years." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Kim, Nelson, and Startz (1998) Three-state Variance Switching\n", + "\n", + "This model demonstrates estimation with regime heteroskedasticity (switching of variances) and no mean effect. The dataset can be reached at http://econ.korea.ac.kr/~cjkim/MARKOV/data/ew_excs.prn.\n", + "\n", + "The model in question is:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_t & = \\varepsilon_t \\\\\n", + "\\varepsilon_t & \\sim N(0, \\sigma_{S_t}^2)\n", + "\\end{align}\n", + "$$\n", + "\n", + "Since there is no autoregressive component, this model can be fit using the `MarkovRegression` class. Since there is no mean effect, we specify `trend='nc'`. There are hypotheized to be three regimes for the switching variances, so we specify `k_regimes=3` and `switching_variance=True` (by default, the variance is assumed to be the same across regimes)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Get the dataset\n", + "ew_excs = requests.get('http://econ.korea.ac.kr/~cjkim/MARKOV/data/ew_excs.prn').content\n", + "raw = pd.read_table(BytesIO(ew_excs), header=None, skipfooter=1, engine='python')\n", + "raw.index = pd.date_range('1926-01-01', '1995-12-01', freq='MS')\n", + "\n", + "dta_kns = raw.loc[:'1986'] - raw.loc[:'1986'].mean()\n", + "\n", + "# Plot the dataset\n", + "dta_kns[0].plot(title='Excess returns', figsize=(12, 3))\n", + "\n", + "# Fit the model\n", + "mod_kns = sm.tsa.MarkovRegression(dta_kns, k_regimes=3, trend='nc', switching_variance=True)\n", + "res_kns = mod_kns.fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res_kns.summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below we plot the probabilities of being in each of the regimes; only in a few periods is a high-variance regime probable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, axes = plt.subplots(3, figsize=(10,7))\n", + "\n", + "ax = axes[0]\n", + "ax.plot(res_kns.smoothed_marginal_probabilities[0])\n", + "ax.set(title='Smoothed probability of a low-variance regime for stock returns')\n", + "\n", + "ax = axes[1]\n", + "ax.plot(res_kns.smoothed_marginal_probabilities[1])\n", + "ax.set(title='Smoothed probability of a medium-variance regime for stock returns')\n", + "\n", + "ax = axes[2]\n", + "ax.plot(res_kns.smoothed_marginal_probabilities[2])\n", + "ax.set(title='Smoothed probability of a high-variance regime for stock returns')\n", + "\n", + "fig.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Filardo (1994) Time-Varying Transition Probabilities\n", + "\n", + "This model demonstrates estimation with time-varying transition probabilities. The dataset can be reached at http://econ.korea.ac.kr/~cjkim/MARKOV/data/filardo.prn.\n", + "\n", + "In the above models we have assumed that the transition probabilities are constant across time. Here we allow the probabilities to change with the state of the economy. Otherwise, the model is the same Markov autoregression of Hamilton (1989).\n", + "\n", + "Each period, the regime now transitions according to the following matrix of time-varying transition probabilities:\n", + "\n", + "$$ P(S_t = s_t | S_{t-1} = s_{t-1}) =\n", + "\\begin{bmatrix}\n", + "p_{00,t} & p_{10,t} \\\\\n", + "p_{01,t} & p_{11,t}\n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + "where $p_{ij,t}$ is the probability of transitioning *from* regime $i$, *to* regime $j$ in period $t$, and is defined to be:\n", + "\n", + "$$\n", + "p_{ij,t} = \\frac{\\exp\\{ x_{t-1}' \\beta_{ij} \\}}{1 + \\exp\\{ x_{t-1}' \\beta_{ij} \\}}\n", + "$$\n", + "\n", + "Instead of estimating the transition probabilities as part of maximum likelihood, the regression coefficients $\\beta_{ij}$ are estimated. These coefficients relate the transition probabilities to a vector of pre-determined or exogenous regressors $x_{t-1}$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Get the dataset\n", + "filardo = requests.get('http://econ.korea.ac.kr/~cjkim/MARKOV/data/filardo.prn').content\n", + "dta_filardo = pd.read_table(BytesIO(filardo), sep=' +', header=None, skipfooter=1, engine='python')\n", + "dta_filardo.columns = ['month', 'ip', 'leading']\n", + "dta_filardo.index = pd.date_range('1948-01-01', '1991-04-01', freq='MS')\n", + "\n", + "dta_filardo['dlip'] = np.log(dta_filardo['ip']).diff()*100\n", + "# Deflated pre-1960 observations by ratio of std. devs.\n", + "# See hmt_tvp.opt or Filardo (1994) p. 302\n", + "std_ratio = dta_filardo['dlip']['1960-01-01':].std() / dta_filardo['dlip'][:'1959-12-01'].std()\n", + "dta_filardo['dlip'][:'1959-12-01'] = dta_filardo['dlip'][:'1959-12-01'] * std_ratio\n", + "\n", + "dta_filardo['dlleading'] = np.log(dta_filardo['leading']).diff()*100\n", + "dta_filardo['dmdlleading'] = dta_filardo['dlleading'] - dta_filardo['dlleading'].mean()\n", + "\n", + "# Plot the data\n", + "dta_filardo['dlip'].plot(title='Standardized growth rate of industrial production', figsize=(13,3))\n", + "plt.figure()\n", + "dta_filardo['dmdlleading'].plot(title='Leading indicator', figsize=(13,3));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The time-varying transition probabilities are specified by the `exog_tvtp` parameter.\n", + "\n", + "Here we demonstrate another feature of model fitting - the use of a random search for MLE starting parameters. Because Markov switching models are often characterized by many local maxima of the likelihood function, performing an initial optimization step can be helpful to find the best parameters.\n", + "\n", + "Below, we specify that 20 random perturbations from the starting parameter vector are examined and the best one used as the actual starting parameters. Because of the random nature of the search, we seed the random number generator beforehand to allow replication of the result." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mod_filardo = sm.tsa.MarkovAutoregression(\n", + " dta_filardo.iloc[2:]['dlip'], k_regimes=2, order=4, switching_ar=False,\n", + " exog_tvtp=sm.add_constant(dta_filardo.iloc[1:-1]['dmdlleading']))\n", + "\n", + "np.random.seed(12345)\n", + "res_filardo = mod_filardo.fit(search_reps=20)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res_filardo.summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below we plot the smoothed probability of the economy operating in a low-production state, and again include the NBER recessions for comparison." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(12,3))\n", + "\n", + "ax.plot(res_filardo.smoothed_marginal_probabilities[0])\n", + "ax.fill_between(usrec.index, 0, 1, where=usrec['USREC'].values, color='gray', alpha=0.2)\n", + "ax.set_xlim(dta_filardo.index[6], dta_filardo.index[-1])\n", + "ax.set(title='Smoothed probability of a low-production state');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using the time-varying transition probabilities, we can see how the expected duration of a low-production state changes over time:\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res_filardo.expected_durations[0].plot(\n", + " title='Expected duration of a low-production state', figsize=(12,3));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "During recessions, the expected duration of a low-production state is much higher than in an expansion." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/markov_regression.ipynb b/examples/notebooks/markov_regression.ipynb new file mode 100644 index 0000000..1357783 --- /dev/null +++ b/examples/notebooks/markov_regression.ipynb @@ -0,0 +1,409 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Markov switching dynamic regression models" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook provides an example of the use of Markov switching models in Statsmodels to estimate dynamic regression models with changes in regime. It follows the examples in the Stata Markov switching documentation, which can be found at http://www.stata.com/manuals14/tsmswitch.pdf." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# NBER recessions\n", + "from pandas_datareader.data import DataReader\n", + "from datetime import datetime\n", + "usrec = DataReader('USREC', 'fred', start=datetime(1947, 1, 1), end=datetime(2013, 4, 1))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Federal funds rate with switching intercept\n", + "\n", + "The first example models the federal funds rate as noise around a constant intercept, but where the intercept changes during different regimes. The model is simply:\n", + "\n", + "$$r_t = \\mu_{S_t} + \\varepsilon_t \\qquad \\varepsilon_t \\sim N(0, \\sigma^2)$$\n", + "\n", + "where $S_t \\in \\{0, 1\\}$, and the regime transitions according to\n", + "\n", + "$$ P(S_t = s_t | S_{t-1} = s_{t-1}) =\n", + "\\begin{bmatrix}\n", + "p_{00} & p_{10} \\\\\n", + "1 - p_{00} & 1 - p_{10}\n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + "We will estimate the parameters of this model by maximum likelihood: $p_{00}, p_{10}, \\mu_0, \\mu_1, \\sigma^2$.\n", + "\n", + "The data used in this example can be found at https://www.stata-press.com/data/r14/usmacro." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Get the federal funds rate data\n", + "from statsmodels.tsa.regime_switching.tests.test_markov_regression import fedfunds\n", + "dta_fedfunds = pd.Series(fedfunds, index=pd.date_range('1954-07-01', '2010-10-01', freq='QS'))\n", + "\n", + "# Plot the data\n", + "dta_fedfunds.plot(title='Federal funds rate', figsize=(12,3))\n", + "\n", + "# Fit the model\n", + "# (a switching mean is the default of the MarkovRegession model)\n", + "mod_fedfunds = sm.tsa.MarkovRegression(dta_fedfunds, k_regimes=2)\n", + "res_fedfunds = mod_fedfunds.fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_fedfunds.summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the summary output, the mean federal funds rate in the first regime (the \"low regime\") is estimated to be $3.7$ whereas in the \"high regime\" it is $9.6$. Below we plot the smoothed probabilities of being in the high regime. The model suggests that the 1980's was a time-period in which a high federal funds rate existed." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_fedfunds.smoothed_marginal_probabilities[1].plot(\n", + " title='Probability of being in the high regime', figsize=(12,3));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the estimated transition matrix we can calculate the expected duration of a low regime versus a high regime." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(res_fedfunds.expected_durations)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A low regime is expected to persist for about fourteen years, whereas the high regime is expected to persist for only about five years." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Federal funds rate with switching intercept and lagged dependent variable\n", + "\n", + "The second example augments the previous model to include the lagged value of the federal funds rate.\n", + "\n", + "$$r_t = \\mu_{S_t} + r_{t-1} \\beta_{S_t} + \\varepsilon_t \\qquad \\varepsilon_t \\sim N(0, \\sigma^2)$$\n", + "\n", + "where $S_t \\in \\{0, 1\\}$, and the regime transitions according to\n", + "\n", + "$$ P(S_t = s_t | S_{t-1} = s_{t-1}) =\n", + "\\begin{bmatrix}\n", + "p_{00} & p_{10} \\\\\n", + "1 - p_{00} & 1 - p_{10}\n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + "We will estimate the parameters of this model by maximum likelihood: $p_{00}, p_{10}, \\mu_0, \\mu_1, \\beta_0, \\beta_1, \\sigma^2$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "# Fit the model\n", + "mod_fedfunds2 = sm.tsa.MarkovRegression(\n", + " dta_fedfunds.iloc[1:], k_regimes=2, exog=dta_fedfunds.iloc[:-1])\n", + "res_fedfunds2 = mod_fedfunds2.fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_fedfunds2.summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are several things to notice from the summary output:\n", + "\n", + "1. The information criteria have decreased substantially, indicating that this model has a better fit than the previous model.\n", + "2. The interpretation of the regimes, in terms of the intercept, have switched. Now the first regime has the higher intercept and the second regime has a lower intercept.\n", + "\n", + "Examining the smoothed probabilities of the high regime state, we now see quite a bit more variability." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_fedfunds2.smoothed_marginal_probabilities[0].plot(\n", + " title='Probability of being in the high regime', figsize=(12,3));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, the expected durations of each regime have decreased quite a bit." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(res_fedfunds2.expected_durations)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Taylor rule with 2 or 3 regimes\n", + "\n", + "We now include two additional exogenous variables - a measure of the output gap and a measure of inflation - to estimate a switching Taylor-type rule with both 2 and 3 regimes to see which fits the data better.\n", + "\n", + "Because the models can be often difficult to estimate, for the 3-regime model we employ a search over starting parameters to improve results, specifying 20 random search repetitions." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Get the additional data\n", + "from statsmodels.tsa.regime_switching.tests.test_markov_regression import ogap, inf\n", + "dta_ogap = pd.Series(ogap, index=pd.date_range('1954-07-01', '2010-10-01', freq='QS'))\n", + "dta_inf = pd.Series(inf, index=pd.date_range('1954-07-01', '2010-10-01', freq='QS'))\n", + "\n", + "exog = pd.concat((dta_fedfunds.shift(), dta_ogap, dta_inf), axis=1).iloc[4:]\n", + "\n", + "# Fit the 2-regime model\n", + "mod_fedfunds3 = sm.tsa.MarkovRegression(\n", + " dta_fedfunds.iloc[4:], k_regimes=2, exog=exog)\n", + "res_fedfunds3 = mod_fedfunds3.fit()\n", + "\n", + "# Fit the 3-regime model\n", + "np.random.seed(12345)\n", + "mod_fedfunds4 = sm.tsa.MarkovRegression(\n", + " dta_fedfunds.iloc[4:], k_regimes=3, exog=exog)\n", + "res_fedfunds4 = mod_fedfunds4.fit(search_reps=20)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_fedfunds3.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_fedfunds4.summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Due to lower information criteria, we might prefer the 3-state model, with an interpretation of low-, medium-, and high-interest rate regimes. The smoothed probabilities of each regime are plotted below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fig, axes = plt.subplots(3, figsize=(10,7))\n", + "\n", + "ax = axes[0]\n", + "ax.plot(res_fedfunds4.smoothed_marginal_probabilities[0])\n", + "ax.set(title='Smoothed probability of a low-interest rate regime')\n", + "\n", + "ax = axes[1]\n", + "ax.plot(res_fedfunds4.smoothed_marginal_probabilities[1])\n", + "ax.set(title='Smoothed probability of a medium-interest rate regime')\n", + "\n", + "ax = axes[2]\n", + "ax.plot(res_fedfunds4.smoothed_marginal_probabilities[2])\n", + "ax.set(title='Smoothed probability of a high-interest rate regime')\n", + "\n", + "fig.tight_layout()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Switching variances\n", + "\n", + "We can also accomodate switching variances. In particular, we consider the model\n", + "\n", + "$$\n", + "y_t = \\mu_{S_t} + y_{t-1} \\beta_{S_t} + \\varepsilon_t \\quad \\varepsilon_t \\sim N(0, \\sigma_{S_t}^2)\n", + "$$\n", + "\n", + "We use maximum likelihood to estimate the parameters of this model: $p_{00}, p_{10}, \\mu_0, \\mu_1, \\beta_0, \\beta_1, \\sigma_0^2, \\sigma_1^2$.\n", + "\n", + "The application is to absolute returns on stocks, where the data can be found at https://www.stata-press.com/data/r14/snp500." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Get the federal funds rate data\n", + "from statsmodels.tsa.regime_switching.tests.test_markov_regression import areturns\n", + "dta_areturns = pd.Series(areturns, index=pd.date_range('2004-05-04', '2014-5-03', freq='W'))\n", + "\n", + "# Plot the data\n", + "dta_areturns.plot(title='Absolute returns, S&P500', figsize=(12,3))\n", + "\n", + "# Fit the model\n", + "mod_areturns = sm.tsa.MarkovRegression(\n", + " dta_areturns.iloc[1:], k_regimes=2, exog=dta_areturns.iloc[:-1], switching_variance=True)\n", + "res_areturns = mod_areturns.fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_areturns.summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The first regime is a low-variance regime and the second regime is a high-variance regime. Below we plot the probabilities of being in the low-variance regime. Between 2008 and 2012 there does not appear to be a clear indication of one regime guiding the economy." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "res_areturns.smoothed_marginal_probabilities[0].plot(\n", + " title='Probability of being in a low-variance regime', figsize=(12,3));" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/mixed_lm_example.ipynb b/examples/notebooks/mixed_lm_example.ipynb new file mode 100644 index 0000000..6f40219 --- /dev/null +++ b/examples/notebooks/mixed_lm_example.ipynb @@ -0,0 +1,374 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Linear Mixed Effects Models" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import statsmodels.api as sm\n", + "import statsmodels.formula.api as smf" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%load_ext rpy2.ipython" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%R library(lme4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Comparing R lmer to Statsmodels MixedLM\n", + "=======================================\n", + "\n", + "The Statsmodels imputation of linear mixed models (MixedLM) closely follows the approach outlined in Lindstrom and Bates (JASA 1988). This is also the approach followed in the R package LME4. Other packages such as Stata, SAS, etc. should also be consistent with this approach, as the basic techniques in this area are mostly mature.\n", + "\n", + "Here we show how linear mixed models can be fit using the MixedLM procedure in Statsmodels. Results from R (LME4) are included for comparison.\n", + "\n", + "Here are our import statements:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Growth curves of pigs\n", + "\n", + "These are longitudinal data from a factorial experiment. The outcome variable is the weight of each pig, and the only predictor variable we will use here is \"time\". First we fit a model that expresses the mean weight as a linear function of time, with a random intercept for each pig. The model is specified using formulas. Since the random effects structure is not specified, the default random effects structure (a random intercept for each group) is automatically used. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = sm.datasets.get_rdataset('dietox', 'geepack').data\n", + "md = smf.mixedlm(\"Weight ~ Time\", data, groups=data[\"Pig\"])\n", + "mdf = md.fit()\n", + "print(mdf.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is the same model fit in R using LMER:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%R\n", + "data(dietox, package='geepack')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%R print(summary(lmer('Weight ~ Time + (1|Pig)', data=dietox)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that in the Statsmodels summary of results, the fixed effects and random effects parameter estimates are shown in a single table. The random effect for animal is labeled \"Intercept RE\" in the Statmodels output above. In the LME4 output, this effect is the pig intercept under the random effects section.\n", + "\n", + "There has been a lot of debate about whether the standard errors for random effect variance and covariance parameters are useful. In LME4, these standard errors are not displayed, because the authors of the package believe they are not very informative. While there is good reason to question their utility, we elected to include the standard errors in the summary table, but do not show the corresponding Wald confidence intervals.\n", + "\n", + "Next we fit a model with two random effects for each animal: a random intercept, and a random slope (with respect to time). This means that each pig may have a different baseline weight, as well as growing at a different rate. The formula specifies that \"Time\" is a covariate with a random coefficient. By default, formulas always include an intercept (which could be suppressed here using \"0 + Time\" as the formula)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "md = smf.mixedlm(\"Weight ~ Time\", data, groups=data[\"Pig\"], re_formula=\"~Time\")\n", + "mdf = md.fit()\n", + "print(mdf.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is the same model fit using LMER in R:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%R print(summary(lmer(\"Weight ~ Time + (1 + Time | Pig)\", data=dietox)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The random intercept and random slope are only weakly correlated $(0.294 / \\sqrt{19.493 * 0.416} \\approx 0.1)$. So next we fit a model in which the two random effects are constrained to be uncorrelated:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + ".294 / (19.493 * .416)**.5" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "md = smf.mixedlm(\"Weight ~ Time\", data, groups=data[\"Pig\"],\n", + " re_formula=\"~Time\")\n", + "free = sm.regression.mixed_linear_model.MixedLMParams.from_components(np.ones(2),\n", + " np.eye(2))\n", + "\n", + "mdf = md.fit(free=free)\n", + "print(mdf.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The likelihood drops by 0.3 when we fix the correlation parameter to 0. Comparing 2 x 0.3 = 0.6 to the chi^2 1 df reference distribution suggests that the data are very consistent with a model in which this parameter is equal to 0.\n", + "\n", + "Here is the same model fit using LMER in R (note that here R is reporting the REML criterion instead of the likelihood, where the REML criterion is twice the log likeihood):" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%R print(summary(lmer(\"Weight ~ Time + (1 | Pig) + (0 + Time | Pig)\", data=dietox)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sitka growth data\n", + "\n", + "This is one of the example data sets provided in the LMER R library. The outcome variable is the size of the tree, and the covariate used here is a time value. The data are grouped by tree." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = sm.datasets.get_rdataset(\"Sitka\", \"MASS\").data\n", + "endog = data[\"size\"]\n", + "data[\"Intercept\"] = 1\n", + "exog = data[[\"Intercept\", \"Time\"]]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is the statsmodels LME fit for a basic model with a random intercept. We are passing the endog and exog data directly to the LME init function as arrays. Also note that endog_re is specified explicitly in argument 4 as a random intercept (although this would also be the default if it were not specified)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "md = sm.MixedLM(endog, exog, groups=data[\"tree\"], exog_re=exog[\"Intercept\"])\n", + "mdf = md.fit()\n", + "print(mdf.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is the same model fit in R using LMER:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%%R\n", + "data(Sitka, package=\"MASS\")\n", + "print(summary(lmer(\"size ~ Time + (1 | tree)\", data=Sitka)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can now try to add a random slope. We start with R this time. From the code and output below we see that the REML estimate of the variance of the random slope is nearly zero." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%R print(summary(lmer(\"size ~ Time + (1 + Time | tree)\", data=Sitka)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "If we run this in statsmodels LME with defaults, we see that the variance estimate is indeed very small, which leads to a warning about the solution being on the boundary of the parameter space. The regression slopes agree very well with R, but the likelihood value is much higher than that returned by R." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "exog_re = exog.copy()\n", + "md = sm.MixedLM(endog, exog, data[\"tree\"], exog_re)\n", + "mdf = md.fit()\n", + "print(mdf.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can further explore the random effects struture by constructing plots of the profile likelihoods. We start with the random intercept, generating a plot of the profile likelihood from 0.1 units below to 0.1 units above the MLE. Since each optimization inside the profile likelihood generates a warning (due to the random slope variance being close to zero), we turn off the warnings here." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import warnings\n", + "\n", + "with warnings.catch_warnings():\n", + " warnings.filterwarnings(\"ignore\")\n", + " likev = mdf.profile_re(0, 're', dist_low=0.1, dist_high=0.1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is a plot of the profile likelihood function. We multiply the log-likelihood difference by 2 to obtain the usual $\\chi^2$ reference distribution with 1 degree of freedom." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.figure(figsize=(10,8))\n", + "plt.plot(likev[:,0], 2*likev[:,1])\n", + "plt.xlabel(\"Variance of random slope\", size=17)\n", + "plt.ylabel(\"-2 times profile log likelihood\", size=17)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here is a plot of the profile likelihood function. The profile likelihood plot shows that the MLE of the random slope variance parameter is a very small positive number, and that there is low uncertainty in this estimate." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "re = mdf.cov_re.iloc[1, 1]\n", + "likev = mdf.profile_re(1, 're', dist_low=.5*re, dist_high=0.8*re)\n", + "\n", + "plt.figure(figsize=(10, 8))\n", + "plt.plot(likev[:,0], 2*likev[:,1])\n", + "plt.xlabel(\"Variance of random slope\", size=17)\n", + "plt.ylabel(\"-2 times profile log likelihood\", size=17)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/ols.ipynb b/examples/notebooks/ols.ipynb new file mode 100644 index 0000000..d466989 --- /dev/null +++ b/examples/notebooks/ols.ipynb @@ -0,0 +1,529 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Ordinary Least Squares" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import numpy as np\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt\n", + "from statsmodels.sandbox.regression.predstd import wls_prediction_std\n", + "\n", + "np.random.seed(9876789)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## OLS estimation\n", + "\n", + "Artificial data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "nsample = 100\n", + "x = np.linspace(0, 10, 100)\n", + "X = np.column_stack((x, x**2))\n", + "beta = np.array([1, 0.1, 10])\n", + "e = np.random.normal(size=nsample)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Our model needs an intercept so we add a column of 1s:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X = sm.add_constant(X)\n", + "y = np.dot(X, beta) + e" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Fit and summary:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model = sm.OLS(y, X)\n", + "results = model.fit()\n", + "print(results.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Quantities of interest can be extracted directly from the fitted model. Type ``dir(results)`` for a full list. Here are some examples: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('Parameters: ', results.params)\n", + "print('R2: ', results.rsquared)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## OLS non-linear curve but linear in parameters\n", + "\n", + "We simulate artificial data with a non-linear relationship between x and y:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "nsample = 50\n", + "sig = 0.5\n", + "x = np.linspace(0, 20, nsample)\n", + "X = np.column_stack((x, np.sin(x), (x-5)**2, np.ones(nsample)))\n", + "beta = [0.5, 0.5, -0.02, 5.]\n", + "\n", + "y_true = np.dot(X, beta)\n", + "y = y_true + sig * np.random.normal(size=nsample)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Fit and summary:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res = sm.OLS(y, X).fit()\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Extract other quantities of interest:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('Parameters: ', res.params)\n", + "print('Standard errors: ', res.bse)\n", + "print('Predicted values: ', res.predict())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Draw a plot to compare the true relationship to OLS predictions. Confidence intervals around the predictions are built using the ``wls_prediction_std`` command." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "prstd, iv_l, iv_u = wls_prediction_std(res)\n", + "\n", + "fig, ax = plt.subplots(figsize=(8,6))\n", + "\n", + "ax.plot(x, y, 'o', label=\"data\")\n", + "ax.plot(x, y_true, 'b-', label=\"True\")\n", + "ax.plot(x, res.fittedvalues, 'r--.', label=\"OLS\")\n", + "ax.plot(x, iv_u, 'r--')\n", + "ax.plot(x, iv_l, 'r--')\n", + "ax.legend(loc='best');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## OLS with dummy variables\n", + "\n", + "We generate some artificial data. There are 3 groups which will be modelled using dummy variables. Group 0 is the omitted/benchmark category." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "nsample = 50\n", + "groups = np.zeros(nsample, int)\n", + "groups[20:40] = 1\n", + "groups[40:] = 2\n", + "#dummy = (groups[:,None] == np.unique(groups)).astype(float)\n", + "\n", + "dummy = sm.categorical(groups, drop=True)\n", + "x = np.linspace(0, 20, nsample)\n", + "# drop reference category\n", + "X = np.column_stack((x, dummy[:,1:]))\n", + "X = sm.add_constant(X, prepend=False)\n", + "\n", + "beta = [1., 3, -3, 10]\n", + "y_true = np.dot(X, beta)\n", + "e = np.random.normal(size=nsample)\n", + "y = y_true + e" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Inspect the data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(X[:5,:])\n", + "print(y[:5])\n", + "print(groups)\n", + "print(dummy[:5,:])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Fit and summary:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res2 = sm.OLS(y, X).fit()\n", + "print(res2.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Draw a plot to compare the true relationship to OLS predictions:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "prstd, iv_l, iv_u = wls_prediction_std(res2)\n", + "\n", + "fig, ax = plt.subplots(figsize=(8,6))\n", + "\n", + "ax.plot(x, y, 'o', label=\"Data\")\n", + "ax.plot(x, y_true, 'b-', label=\"True\")\n", + "ax.plot(x, res2.fittedvalues, 'r--.', label=\"Predicted\")\n", + "ax.plot(x, iv_u, 'r--')\n", + "ax.plot(x, iv_l, 'r--')\n", + "legend = ax.legend(loc=\"best\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Joint hypothesis test\n", + "\n", + "### F test\n", + "\n", + "We want to test the hypothesis that both coefficients on the dummy variables are equal to zero, that is, $R \\times \\beta = 0$. An F test leads us to strongly reject the null hypothesis of identical constant in the 3 groups:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "R = [[0, 1, 0, 0], [0, 0, 1, 0]]\n", + "print(np.array(R))\n", + "print(res2.f_test(R))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also use formula-like syntax to test hypotheses" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(res2.f_test(\"x2 = x3 = 0\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Small group effects\n", + "\n", + "If we generate artificial data with smaller group effects, the T test can no longer reject the Null hypothesis: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "beta = [1., 0.3, -0.0, 10]\n", + "y_true = np.dot(X, beta)\n", + "y = y_true + np.random.normal(size=nsample)\n", + "\n", + "res3 = sm.OLS(y, X).fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(res3.f_test(R))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(res3.f_test(\"x2 = x3 = 0\"))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Multicollinearity\n", + "\n", + "The Longley dataset is well known to have high multicollinearity. That is, the exogenous predictors are highly correlated. This is problematic because it can affect the stability of our coefficient estimates as we make minor changes to model specification. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from statsmodels.datasets.longley import load_pandas\n", + "y = load_pandas().endog\n", + "X = load_pandas().exog\n", + "X = sm.add_constant(X)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Fit and summary:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ols_model = sm.OLS(y, X)\n", + "ols_results = ols_model.fit()\n", + "print(ols_results.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Condition number\n", + "\n", + "One way to assess multicollinearity is to compute the condition number. Values over 20 are worrisome (see Greene 4.9). The first step is to normalize the independent variables to have unit length: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "norm_x = X.values\n", + "for i, name in enumerate(X):\n", + " if name == \"const\":\n", + " continue\n", + " norm_x[:,i] = X[name]/np.linalg.norm(X[name])\n", + "norm_xtx = np.dot(norm_x.T,norm_x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then, we take the square root of the ratio of the biggest to the smallest eigen values. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "eigs = np.linalg.eigvals(norm_xtx)\n", + "condition_number = np.sqrt(eigs.max() / eigs.min())\n", + "print(condition_number)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Dropping an observation\n", + "\n", + "Greene also points out that dropping a single observation can have a dramatic effect on the coefficient estimates: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ols_results2 = sm.OLS(y.iloc[:14], X.iloc[:14]).fit()\n", + "print(\"Percentage change %4.2f%%\\n\"*7 % tuple([i for i in (ols_results2.params - ols_results.params)/ols_results.params*100]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also look at formal statistics for this such as the DFBETAS -- a standardized measure of how much each coefficient changes when that observation is left out." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "infl = ols_results.get_influence()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In general we may consider DBETAS in absolute value greater than $2/\\sqrt{N}$ to be influential observations" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "2./len(X)**.5" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(infl.summary_frame().filter(regex=\"dfb\"))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/pca_fertility_factors.ipynb b/examples/notebooks/pca_fertility_factors.ipynb new file mode 100644 index 0000000..957e7a4 --- /dev/null +++ b/examples/notebooks/pca_fertility_factors.ipynb @@ -0,0 +1,304 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Statsmodels Principal Component Analysis" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Key ideas:* Principal component analysis, world bank data, fertility\n", + "\n", + "In this notebook, we use principal components analysis (PCA) to analyze the time series of fertility rates in 192 countries, using data obtained from the World Bank. The main goal is to understand how the trends in fertility over time differ from country to country. This is a slightly atypical illustration of PCA because the data are time series. Methods such as functional PCA have been developed for this setting, but since the fertility data are very smooth, there is no real disadvantage to using standard PCA in this case." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import statsmodels.api as sm\n", + "from statsmodels.multivariate.pca import PCA" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The data can be obtained from the [World Bank web site](http://data.worldbank.org/indicator/SP.DYN.TFRT.IN), but here we work with a slightly cleaned-up version of the data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "data = sm.datasets.fertility.load_pandas().data\n", + "data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we construct a DataFrame that contains only the numerical fertility rate data and set the index to the country names. We also drop all the countries with any missing data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "columns = list(map(str, range(1960, 2012)))\n", + "data.set_index('Country Name', inplace=True)\n", + "dta = data[columns]\n", + "dta = dta.dropna()\n", + "dta.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are two ways to use PCA to analyze a rectangular matrix: we can treat the rows as the \"objects\" and the columns as the \"variables\", or vice-versa. Here we will treat the fertility measures as \"variables\" used to measure the countries as \"objects\". Thus the goal will be to reduce the yearly fertility rate values to a small number of fertility rate \"profiles\" or \"basis functions\" that capture most of the variation over time in the different countries." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The mean trend is removed in PCA, but its worthwhile taking a look at it. It shows that fertility has dropped steadily over the time period covered in this dataset. Note that the mean is calculated using a country as the unit of analysis, ignoring population size. This is also true for the PC analysis conducted below. A more sophisticated analysis might weight the countries, say by population in 1980." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ax = dta.mean().plot(grid=False)\n", + "ax.set_xlabel(\"Year\", size=17)\n", + "ax.set_ylabel(\"Fertility rate\", size=17);\n", + "ax.set_xlim(0, 51)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we perform the PCA:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "pca_model = PCA(dta.T, standardize=False, demean=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Based on the eigenvalues, we see that the first PC dominates, with perhaps a small amount of meaningful variation captured in the second and third PC's." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fig = pca_model.plot_scree(log_scale=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next we will plot the PC factors. The dominant factor is monotonically increasing. Countries with a positive score on the first factor will increase faster (or decrease slower) compared to the mean shown above. Countries with a negative score on the first factor will decrease faster than the mean. The second factor is U-shaped with a positive peak at around 1985. Countries with a large positive score on the second factor will have lower than average fertilities at the beginning and end of the data range, but higher than average fertility in the middle of the range." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(8, 4))\n", + "lines = ax.plot(pca_model.factors.iloc[:,:3], lw=4, alpha=.6)\n", + "ax.set_xticklabels(dta.columns.values[::10])\n", + "ax.set_xlim(0, 51)\n", + "ax.set_xlabel(\"Year\", size=17)\n", + "fig.subplots_adjust(.1, .1, .85, .9)\n", + "legend = fig.legend(lines, ['PC 1', 'PC 2', 'PC 3'], loc='center right')\n", + "legend.draw_frame(False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To better understand what is going on, we will plot the fertility trajectories for sets of countries with similar PC scores. The following convenience function produces such a plot." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "idx = pca_model.loadings.iloc[:,0].argsort()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we plot the five countries with the greatest scores on PC 1. These countries have a higher rate of fertility increase than the global mean (which is decreasing)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def make_plot(labels):\n", + " fig, ax = plt.subplots(figsize=(9,5))\n", + " ax = dta.loc[labels].T.plot(legend=False, grid=False, ax=ax)\n", + " dta.mean().plot(ax=ax, grid=False, label='Mean')\n", + " ax.set_xlim(0, 51);\n", + " fig.subplots_adjust(.1, .1, .75, .9)\n", + " ax.set_xlabel(\"Year\", size=17)\n", + " ax.set_ylabel(\"Fertility\", size=17);\n", + " legend = ax.legend(*ax.get_legend_handles_labels(), loc='center left', bbox_to_anchor=(1, .5))\n", + " legend.draw_frame(False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "labels = dta.index[idx[-5:]]\n", + "make_plot(labels)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here are the five countries with the greatest scores on factor 2. These are countries that reached peak fertility around 1980, later than much of the rest of the world, followed by a rapid decrease in fertility." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "idx = pca_model.loadings.iloc[:,1].argsort()\n", + "make_plot(dta.index[idx[-5:]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally we have the countries with the most negative scores on PC 2. These are the countries where the fertility rate declined much faster than the global mean during the 1960's and 1970's, then flattened out." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "make_plot(dta.index[idx[:5]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also look at a scatterplot of the first two principal component scores. We see that the variation among countries is fairly continuous, except perhaps that the two countries with highest scores for PC 2 are somewhat separated from the other points. These countries, Oman and Yemen, are unique in having a sharp spike in fertility around 1980. No other country has such a spike. In contrast, the countries with high scores on PC 1 (that have continuously increasing fertility), are part of a continuum of variation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots()\n", + "pca_model.loadings.plot.scatter(x='comp_00',y='comp_01', ax=ax)\n", + "ax.set_xlabel(\"PC 1\", size=17)\n", + "ax.set_ylabel(\"PC 2\", size=17)\n", + "dta.index[pca_model.loadings.iloc[:, 1] > .2].values" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/plots_boxplots.ipynb b/examples/notebooks/plots_boxplots.ipynb new file mode 100644 index 0000000..83145b5 --- /dev/null +++ b/examples/notebooks/plots_boxplots.ipynb @@ -0,0 +1,339 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Box Plots" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following illustrates some options for the boxplot in statsmodels. These include `violin_plot` and `bean_plot`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "%matplotlib inline\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import statsmodels.api as sm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Bean Plots" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following example is taken from the docstring of `beanplot`.\n", + "\n", + "We use the American National Election Survey 1996 dataset, which has Party\n", + "Identification of respondents as independent variable and (among other\n", + "data) age as dependent variable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = sm.datasets.anes96.load_pandas()\n", + "party_ID = np.arange(7)\n", + "labels = [\"Strong Democrat\", \"Weak Democrat\", \"Independent-Democrat\",\n", + " \"Independent-Independent\", \"Independent-Republican\",\n", + " \"Weak Republican\", \"Strong Republican\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Group age by party ID, and create a violin plot with it:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "plt.rcParams['figure.subplot.bottom'] = 0.23 # keep labels visible\n", + "plt.rcParams['figure.figsize'] = (10.0, 8.0) # make plot larger in notebook\n", + "age = [data.exog['age'][data.endog == id] for id in party_ID]\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111)\n", + "plot_opts={'cutoff_val':5, 'cutoff_type':'abs',\n", + " 'label_fontsize':'small',\n", + " 'label_rotation':30}\n", + "sm.graphics.beanplot(age, ax=ax, labels=labels,\n", + " plot_opts=plot_opts)\n", + "ax.set_xlabel(\"Party identification of respondent.\")\n", + "ax.set_ylabel(\"Age\")\n", + "#plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def beanplot(data, plot_opts={}, jitter=False):\n", + " \"\"\"helper function to try out different plot options\n", + " \"\"\"\n", + " fig = plt.figure()\n", + " ax = fig.add_subplot(111)\n", + " plot_opts_ = {'cutoff_val':5, 'cutoff_type':'abs',\n", + " 'label_fontsize':'small',\n", + " 'label_rotation':30}\n", + " plot_opts_.update(plot_opts)\n", + " sm.graphics.beanplot(data, ax=ax, labels=labels,\n", + " jitter=jitter, plot_opts=plot_opts_)\n", + " ax.set_xlabel(\"Party identification of respondent.\")\n", + " ax.set_ylabel(\"Age\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = beanplot(age, jitter=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = beanplot(age, plot_opts={'violin_width': 0.5, 'violin_fc':'#66c2a5'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = beanplot(age, plot_opts={'violin_fc':'#66c2a5'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = beanplot(age, plot_opts={'bean_size': 0.2, 'violin_width': 0.75, 'violin_fc':'#66c2a5'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = beanplot(age, jitter=True, plot_opts={'violin_fc':'#66c2a5'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = beanplot(age, jitter=True, plot_opts={'violin_width': 0.5, 'violin_fc':'#66c2a5'})" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Advanced Box Plots" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Based of example script `example_enhanced_boxplots.py` (by Ralf Gommers)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import statsmodels.api as sm\n", + "\n", + "\n", + "# Necessary to make horizontal axis labels fit\n", + "plt.rcParams['figure.subplot.bottom'] = 0.23\n", + "\n", + "data = sm.datasets.anes96.load_pandas()\n", + "party_ID = np.arange(7)\n", + "labels = [\"Strong Democrat\", \"Weak Democrat\", \"Independent-Democrat\",\n", + " \"Independent-Independent\", \"Independent-Republican\",\n", + " \"Weak Republican\", \"Strong Republican\"]\n", + "\n", + "# Group age by party ID.\n", + "age = [data.exog['age'][data.endog == id] for id in party_ID]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a violin plot.\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111)\n", + "\n", + "sm.graphics.violinplot(age, ax=ax, labels=labels,\n", + " plot_opts={'cutoff_val':5, 'cutoff_type':'abs',\n", + " 'label_fontsize':'small',\n", + " 'label_rotation':30})\n", + "\n", + "ax.set_xlabel(\"Party identification of respondent.\")\n", + "ax.set_ylabel(\"Age\")\n", + "ax.set_title(\"US national election '96 - Age & Party Identification\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a bean plot.\n", + "fig2 = plt.figure()\n", + "ax = fig2.add_subplot(111)\n", + "\n", + "sm.graphics.beanplot(age, ax=ax, labels=labels,\n", + " plot_opts={'cutoff_val':5, 'cutoff_type':'abs',\n", + " 'label_fontsize':'small',\n", + " 'label_rotation':30})\n", + "\n", + "ax.set_xlabel(\"Party identification of respondent.\")\n", + "ax.set_ylabel(\"Age\")\n", + "ax.set_title(\"US national election '96 - Age & Party Identification\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create a jitter plot.\n", + "fig3 = plt.figure()\n", + "ax = fig3.add_subplot(111)\n", + "\n", + "plot_opts={'cutoff_val':5, 'cutoff_type':'abs', 'label_fontsize':'small',\n", + " 'label_rotation':30, 'violin_fc':(0.8, 0.8, 0.8),\n", + " 'jitter_marker':'.', 'jitter_marker_size':3, 'bean_color':'#FF6F00',\n", + " 'bean_mean_color':'#009D91'}\n", + "sm.graphics.beanplot(age, ax=ax, labels=labels, jitter=True,\n", + " plot_opts=plot_opts)\n", + "\n", + "ax.set_xlabel(\"Party identification of respondent.\")\n", + "ax.set_ylabel(\"Age\")\n", + "ax.set_title(\"US national election '96 - Age & Party Identification\")" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create an asymmetrical jitter plot.\n", + "ix = data.exog['income'] < 16 # incomes < $30k\n", + "age = data.exog['age'][ix]\n", + "endog = data.endog[ix]\n", + "age_lower_income = [age[endog == id] for id in party_ID]\n", + "\n", + "ix = data.exog['income'] >= 20 # incomes > $50k\n", + "age = data.exog['age'][ix]\n", + "endog = data.endog[ix]\n", + "age_higher_income = [age[endog == id] for id in party_ID]\n", + "\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111)\n", + "\n", + "plot_opts['violin_fc'] = (0.5, 0.5, 0.5)\n", + "plot_opts['bean_show_mean'] = False\n", + "plot_opts['bean_show_median'] = False\n", + "plot_opts['bean_legend_text'] = 'Income < \\$30k'\n", + "plot_opts['cutoff_val'] = 10\n", + "sm.graphics.beanplot(age_lower_income, ax=ax, labels=labels, side='left',\n", + " jitter=True, plot_opts=plot_opts)\n", + "plot_opts['violin_fc'] = (0.7, 0.7, 0.7)\n", + "plot_opts['bean_color'] = '#009D91'\n", + "plot_opts['bean_legend_text'] = 'Income > \\$50k'\n", + "sm.graphics.beanplot(age_higher_income, ax=ax, labels=labels, side='right',\n", + " jitter=True, plot_opts=plot_opts)\n", + "\n", + "ax.set_xlabel(\"Party identification of respondent.\")\n", + "ax.set_ylabel(\"Age\")\n", + "ax.set_title(\"US national election '96 - Age & Party Identification\")\n", + "\n", + "\n", + "# Show all plots.\n", + "#plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/predict.ipynb b/examples/notebooks/predict.ipynb new file mode 100644 index 0000000..e803b0a --- /dev/null +++ b/examples/notebooks/predict.ipynb @@ -0,0 +1,213 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Prediction (out of sample)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import numpy as np\n", + "import statsmodels.api as sm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Artificial data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "nsample = 50\n", + "sig = 0.25\n", + "x1 = np.linspace(0, 20, nsample)\n", + "X = np.column_stack((x1, np.sin(x1), (x1-5)**2))\n", + "X = sm.add_constant(X)\n", + "beta = [5., 0.5, 0.5, -0.02]\n", + "y_true = np.dot(X, beta)\n", + "y = y_true + sig * np.random.normal(size=nsample)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Estimation " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "olsmod = sm.OLS(y, X)\n", + "olsres = olsmod.fit()\n", + "print(olsres.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## In-sample prediction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "ypred = olsres.predict(X)\n", + "print(ypred)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Create a new sample of explanatory variables Xnew, predict and plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "x1n = np.linspace(20.5,25, 10)\n", + "Xnew = np.column_stack((x1n, np.sin(x1n), (x1n-5)**2))\n", + "Xnew = sm.add_constant(Xnew)\n", + "ynewpred = olsres.predict(Xnew) # predict out of sample\n", + "print(ynewpred)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Plot comparison" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "fig, ax = plt.subplots()\n", + "ax.plot(x1, y, 'o', label=\"Data\")\n", + "ax.plot(x1, y_true, 'b-', label=\"True\")\n", + "ax.plot(np.hstack((x1, x1n)), np.hstack((ypred, ynewpred)), 'r', label=\"OLS prediction\")\n", + "ax.legend(loc=\"best\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Predicting with Formulas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using formulas can make both estimation and prediction a lot easier" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from statsmodels.formula.api import ols\n", + "\n", + "data = {\"x1\" : x1, \"y\" : y}\n", + "\n", + "res = ols(\"y ~ x1 + np.sin(x1) + I((x1-5)**2)\", data=data).fit()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We use the `I` to indicate use of the Identity transform. Ie., we don't want any expansion magic from using `**2`" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res.params" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now we only have to pass the single variable and we get the transformed right-hand side variables automatically" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res.predict(exog=dict(x1=x1n))" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/quantile_regression.ipynb b/examples/notebooks/quantile_regression.ipynb new file mode 100644 index 0000000..26b9167 --- /dev/null +++ b/examples/notebooks/quantile_regression.ipynb @@ -0,0 +1,209 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Quantile regression" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "This example page shows how to use ``statsmodels``' ``QuantReg`` class to replicate parts of the analysis published in \n", + "\n", + "* Koenker, Roger and Kevin F. Hallock. \"Quantile Regression\". Journal of Economic Perspectives, Volume 15, Number 4, Fall 2001, Pages 143–156\n", + "\n", + "We are interested in the relationship between income and expenditures on food for a sample of working class Belgian households in 1857 (the Engel data). \n", + "\n", + "## Setup\n", + "\n", + "We first need to load some modules and to retrieve the data. Conveniently, the Engel dataset is shipped with ``statsmodels``." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import numpy as np\n", + "import pandas as pd\n", + "import statsmodels.api as sm\n", + "import statsmodels.formula.api as smf\n", + "import matplotlib.pyplot as plt\n", + "\n", + "data = sm.datasets.engel.load_pandas().data\n", + "data.head()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Least Absolute Deviation\n", + "\n", + "The LAD model is a special case of quantile regression where q=0.5" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mod = smf.quantreg('foodexp ~ income', data)\n", + "res = mod.fit(q=.5)\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Visualizing the results\n", + "\n", + "We estimate the quantile regression model for many quantiles between .05 and .95, and compare best fit line from each of these models to Ordinary Least Squares results. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Prepare data for plotting\n", + "\n", + "For convenience, we place the quantile regression results in a Pandas DataFrame, and the OLS results in a dictionary." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "quantiles = np.arange(.05, .96, .1)\n", + "def fit_model(q):\n", + " res = mod.fit(q=q)\n", + " return [q, res.params['Intercept'], res.params['income']] + \\\n", + " res.conf_int().loc['income'].tolist()\n", + " \n", + "models = [fit_model(x) for x in quantiles]\n", + "models = pd.DataFrame(models, columns=['q', 'a', 'b', 'lb', 'ub'])\n", + "\n", + "ols = smf.ols('foodexp ~ income', data).fit()\n", + "ols_ci = ols.conf_int().loc['income'].tolist()\n", + "ols = dict(a = ols.params['Intercept'],\n", + " b = ols.params['income'],\n", + " lb = ols_ci[0],\n", + " ub = ols_ci[1])\n", + "\n", + "print(models)\n", + "print(ols)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### First plot\n", + "\n", + "This plot compares best fit lines for 10 quantile regression models to the least squares fit. As Koenker and Hallock (2001) point out, we see that:\n", + "\n", + "1. Food expenditure increases with income\n", + "2. The *dispersion* of food expenditure increases with income\n", + "3. The least squares estimates fit low income observations quite poorly (i.e. the OLS line passes over most low income households)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "x = np.arange(data.income.min(), data.income.max(), 50)\n", + "get_y = lambda a, b: a + b * x\n", + "\n", + "fig, ax = plt.subplots(figsize=(8, 6))\n", + "\n", + "for i in range(models.shape[0]):\n", + " y = get_y(models.a[i], models.b[i])\n", + " ax.plot(x, y, linestyle='dotted', color='grey')\n", + " \n", + "y = get_y(ols['a'], ols['b'])\n", + "\n", + "ax.plot(x, y, color='red', label='OLS')\n", + "ax.scatter(data.income, data.foodexp, alpha=.2)\n", + "ax.set_xlim((240, 3000))\n", + "ax.set_ylim((240, 2000))\n", + "legend = ax.legend()\n", + "ax.set_xlabel('Income', fontsize=16)\n", + "ax.set_ylabel('Food expenditure', fontsize=16);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Second plot\n", + "\n", + "The dotted black lines form 95% point-wise confidence band around 10 quantile regression estimates (solid black line). The red lines represent OLS regression results along with their 95% confindence interval.\n", + "\n", + "In most cases, the quantile regression point estimates lie outside the OLS confidence interval, which suggests that the effect of income on food expenditure may not be constant across the distribution." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "n = models.shape[0]\n", + "p1 = plt.plot(models.q, models.b, color='black', label='Quantile Reg.')\n", + "p2 = plt.plot(models.q, models.ub, linestyle='dotted', color='black')\n", + "p3 = plt.plot(models.q, models.lb, linestyle='dotted', color='black')\n", + "p4 = plt.plot(models.q, [ols['b']] * n, color='red', label='OLS')\n", + "p5 = plt.plot(models.q, [ols['lb']] * n, linestyle='dotted', color='red')\n", + "p6 = plt.plot(models.q, [ols['ub']] * n, linestyle='dotted', color='red')\n", + "plt.ylabel(r'$\\beta_{income}$')\n", + "plt.xlabel('Quantiles of the conditional food expenditure distribution')\n", + "plt.legend()\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/recursive_ls.ipynb b/examples/notebooks/recursive_ls.ipynb new file mode 100644 index 0000000..6b9d990 --- /dev/null +++ b/examples/notebooks/recursive_ls.ipynb @@ -0,0 +1,319 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Recursive least squares\n", + "\n", + "Recursive least squares is an expanding window version of ordinary least squares. In addition to availability of regression coefficients computed recursively, the recursively computed residuals the construction of statistics to investigate parameter instability.\n", + "\n", + "The `RecursiveLS` class allows computation of recursive residuals and computes CUSUM and CUSUM of squares statistics. Plotting these statistics along with reference lines denoting statistically significant deviations from the null hypothesis of stable parameters allows an easy visual indication of parameter stability.\n", + "\n", + "Finally, the `RecursiveLS` model allows imposing linear restrictions on the parameter vectors, and can be constructed using the formula interface." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "import numpy as np\n", + "import pandas as pd\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt\n", + "from pandas_datareader.data import DataReader\n", + "\n", + "np.set_printoptions(suppress=True)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1: Copper\n", + "\n", + "We first consider parameter stability in the copper dataset (description below)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(sm.datasets.copper.DESCRLONG)\n", + "\n", + "dta = sm.datasets.copper.load_pandas().data\n", + "dta.index = pd.date_range('1951-01-01', '1975-01-01', freq='AS')\n", + "endog = dta['WORLDCONSUMPTION']\n", + "\n", + "# To the regressors in the dataset, we add a column of ones for an intercept\n", + "exog = sm.add_constant(dta[['COPPERPRICE', 'INCOMEINDEX', 'ALUMPRICE', 'INVENTORYINDEX']])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, construct and fit the model, and print a summary. Although the `RLS` model computes the regression parameters recursively, so there are as many estimates as there are datapoints, the summary table only presents the regression parameters estimated on the entire sample; except for small effects from initialization of the recursiions, these estimates are equivalent to OLS estimates." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mod = sm.RecursiveLS(endog, exog)\n", + "res = mod.fit()\n", + "\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The recursive coefficients are available in the `recursive_coefficients` attribute. Alternatively, plots can generated using the `plot_recursive_coefficient` method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(res.recursive_coefficients.filtered[0])\n", + "res.plot_recursive_coefficient(range(mod.k_exog), alpha=None, figsize=(10,6));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The CUSUM statistic is available in the `cusum` attribute, but usually it is more convenient to visually check for parameter stability using the `plot_cusum` method. In the plot below, the CUSUM statistic does not move outside of the 5% significance bands, so we fail to reject the null hypothesis of stable parameters at the 5% level." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(res.cusum)\n", + "fig = res.plot_cusum();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Another related statistic is the CUSUM of squares. It is available in the `cusum_squares` attribute, but it is similarly more convenient to check it visually, using the `plot_cusum_squares` method. In the plot below, the CUSUM of squares statistic does not move outside of the 5% significance bands, so we fail to reject the null hypothesis of stable parameters at the 5% level." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res.plot_cusum_squares();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Example 2: Quantity theory of money\n", + "\n", + "The quantity theory of money suggests that \"a given change in the rate of change in the quantity of money induces ... an equal change in the rate of price inflation\" (Lucas, 1980). Following Lucas, we examine the relationship between double-sided exponentially weighted moving averages of money growth and CPI inflation. Although Lucas found the relationship between these variables to be stable, more recently it appears that the relationship is unstable; see e.g. Sargent and Surico (2010)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "start = '1959-12-01'\n", + "end = '2015-01-01'\n", + "m2 = DataReader('M2SL', 'fred', start=start, end=end)\n", + "cpi = DataReader('CPIAUCSL', 'fred', start=start, end=end)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def ewma(series, beta, n_window):\n", + " nobs = len(series)\n", + " scalar = (1 - beta) / (1 + beta)\n", + " ma = []\n", + " k = np.arange(n_window, 0, -1)\n", + " weights = np.r_[beta**k, 1, beta**k[::-1]]\n", + " for t in range(n_window, nobs - n_window):\n", + " window = series.iloc[t - n_window:t + n_window+1].values\n", + " ma.append(scalar * np.sum(weights * window))\n", + " return pd.Series(ma, name=series.name, index=series.iloc[n_window:-n_window].index)\n", + "\n", + "m2_ewma = ewma(np.log(m2['M2SL'].resample('QS').mean()).diff().iloc[1:], 0.95, 10*4)\n", + "cpi_ewma = ewma(np.log(cpi['CPIAUCSL'].resample('QS').mean()).diff().iloc[1:], 0.95, 10*4)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "After constructing the moving averages using the $\\beta = 0.95$ filter of Lucas (with a window of 10 years on either side), we plot each of the series below. Although they appear to move together prior for part of the sample, after 1990 they appear to diverge." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(13,3))\n", + "\n", + "ax.plot(m2_ewma, label='M2 Growth (EWMA)')\n", + "ax.plot(cpi_ewma, label='CPI Inflation (EWMA)')\n", + "ax.legend();" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "endog = cpi_ewma\n", + "exog = sm.add_constant(m2_ewma)\n", + "exog.columns = ['const', 'M2']\n", + "\n", + "mod = sm.RecursiveLS(endog, exog)\n", + "res = mod.fit()\n", + "\n", + "print(res.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res.plot_recursive_coefficient(1, alpha=None);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The CUSUM plot now shows subtantial deviation at the 5% level, suggesting a rejection of the null hypothesis of parameter stability." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res.plot_cusum();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Similarly, the CUSUM of squares shows subtantial deviation at the 5% level, also suggesting a rejection of the null hypothesis of parameter stability." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res.plot_cusum_squares();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Example 3: Linear restrictions and formulas" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Linear restrictions\n", + "\n", + "It is not hard to implement linear restrictions, using the `constraints` parameter in constructing the model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "endog = dta['WORLDCONSUMPTION']\n", + "exog = sm.add_constant(dta[['COPPERPRICE', 'INCOMEINDEX', 'ALUMPRICE', 'INVENTORYINDEX']])\n", + "\n", + "mod = sm.RecursiveLS(endog, exog, constraints='COPPERPRICE = ALUMPRICE')\n", + "res = mod.fit()\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Formula\n", + "\n", + "One could fit the same model using the class method `from_formula`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mod = sm.RecursiveLS.from_formula(\n", + " 'WORLDCONSUMPTION ~ COPPERPRICE + INCOMEINDEX + ALUMPRICE + INVENTORYINDEX', dta,\n", + " constraints='COPPERPRICE = ALUMPRICE')\n", + "res = mod.fit()\n", + "print(res.summary())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/regression_diagnostics.ipynb b/examples/notebooks/regression_diagnostics.ipynb new file mode 100644 index 0000000..140eafc --- /dev/null +++ b/examples/notebooks/regression_diagnostics.ipynb @@ -0,0 +1,270 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Regression diagnostics" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This example file shows how to use a few of the ``statsmodels`` regression diagnostic tests in a real-life context. You can learn about more tests and find out more information about the tests here on the [Regression Diagnostics page.](https://www.statsmodels.org/stable/diagnostic.html)\n", + "\n", + "Note that most of the tests described here only return a tuple of numbers, without any annotation. A full description of outputs is always included in the docstring and in the online ``statsmodels`` documentation. For presentation purposes, we use the ``zip(name,test)`` construct to pretty-print short descriptions in the examples below." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Estimate a regression model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "from statsmodels.compat import lzip\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import statsmodels.formula.api as smf\n", + "import statsmodels.stats.api as sms\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# Load data\n", + "url = 'https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/HistData/Guerry.csv'\n", + "dat = pd.read_csv(url)\n", + "\n", + "# Fit regression model (using the natural log of one of the regressors)\n", + "results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit()\n", + "\n", + "# Inspect the results\n", + "print(results.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Normality of the residuals" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jarque-Bera test:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "name = ['Jarque-Bera', 'Chi^2 two-tail prob.', 'Skew', 'Kurtosis']\n", + "test = sms.jarque_bera(results.resid)\n", + "lzip(name, test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Omni test:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "name = ['Chi^2', 'Two-tail probability']\n", + "test = sms.omni_normtest(results.resid)\n", + "lzip(name, test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Influence tests\n", + "\n", + "Once created, an object of class ``OLSInfluence`` holds attributes and methods that allow users to assess the influence of each observation. For example, we can compute and extract the first few rows of DFbetas by:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from statsmodels.stats.outliers_influence import OLSInfluence\n", + "test_class = OLSInfluence(results)\n", + "test_class.dfbetas[:5,:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Explore other options by typing ``dir(influence_test)``\n", + "\n", + "Useful information on leverage can also be plotted:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from statsmodels.graphics.regressionplots import plot_leverage_resid2\n", + "fig, ax = plt.subplots(figsize=(8,6))\n", + "fig = plot_leverage_resid2(results, ax = ax)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Other plotting options can be found on the [Graphics page.](https://www.statsmodels.org/stable/graphics.html)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Multicollinearity\n", + "\n", + "Condition number:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "np.linalg.cond(results.model.exog)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Heteroskedasticity tests\n", + "\n", + "Breush-Pagan test:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "name = ['Lagrange multiplier statistic', 'p-value',\n", + " 'f-value', 'f p-value']\n", + "test = sms.het_breuschpagan(results.resid, results.model.exog)\n", + "lzip(name, test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Goldfeld-Quandt test" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "name = ['F statistic', 'p-value']\n", + "test = sms.het_goldfeldquandt(results.resid, results.model.exog)\n", + "lzip(name, test)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Linearity\n", + "\n", + "Harvey-Collier multiplier test for Null hypothesis that the linear specification is correct:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "name = ['t value', 'p value']\n", + "test = sms.linear_harvey_collier(results)\n", + "lzip(name, test)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/regression_plots.ipynb b/examples/notebooks/regression_plots.ipynb new file mode 100644 index 0000000..4bd1e3e --- /dev/null +++ b/examples/notebooks/regression_plots.ipynb @@ -0,0 +1,606 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Regression Plots" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "from statsmodels.compat import lzip\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import statsmodels.api as sm\n", + "from statsmodels.formula.api import ols" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Duncan's Prestige Dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Load the Data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can use a utility function to load any R dataset available from the great Rdatasets package." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "prestige = sm.datasets.get_rdataset(\"Duncan\", \"carData\", cache=True).data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "prestige.head()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "prestige_model = ols(\"prestige ~ income + education\", data=prestige).fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "print(prestige_model.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Influence plots" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Influence plots show the (externally) studentized residuals vs. the leverage of each observation as measured by the hat matrix.\n", + "\n", + "Externally studentized residuals are residuals that are scaled by their standard deviation where \n", + "\n", + "$$var(\\hat{\\epsilon}_i)=\\hat{\\sigma}^2_i(1-h_{ii})$$\n", + "\n", + "with\n", + "\n", + "$$\\hat{\\sigma}^2_i=\\frac{1}{n - p - 1 \\;\\;}\\sum_{j}^{n}\\;\\;\\;\\forall \\;\\;\\; j \\neq i$$\n", + "\n", + "$n$ is the number of observations and $p$ is the number of regressors. $h_{ii}$ is the $i$-th diagonal element of the hat matrix\n", + "\n", + "$$H=X(X^{\\;\\prime}X)^{-1}X^{\\;\\prime}$$\n", + "\n", + "The influence of each point can be visualized by the criterion keyword argument. Options are Cook's distance and DFFITS, two measures of influence." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(12,8))\n", + "fig = sm.graphics.influence_plot(prestige_model, ax=ax, criterion=\"cooks\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see there are a few worrisome observations. Both contractor and reporter have low leverage but a large residual.
    \n", + "RR.engineer has small residual and large leverage. Conductor and minister have both high leverage and large residuals, and,
    \n", + "therefore, large influence." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Partial Regression Plots" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since we are doing multivariate regressions, we cannot just look at individual bivariate plots to discern relationships.
    \n", + "Instead, we want to look at the relationship of the dependent variable and independent variables conditional on the other
    \n", + "independent variables. We can do this through using partial regression plots, otherwise known as added variable plots.
    \n", + "\n", + "In a partial regression plot, to discern the relationship between the response variable and the $k$-th variabe, we compute
    \n", + "the residuals by regressing the response variable versus the independent variables excluding $X_k$. We can denote this by
    \n", + "$X_{\\sim k}$. We then compute the residuals by regressing $X_k$ on $X_{\\sim k}$. The partial regression plot is the plot
    \n", + "of the former versus the latter residuals.
    \n", + "\n", + "The notable points of this plot are that the fitted line has slope $\\beta_k$ and intercept zero. The residuals of this plot
    \n", + "are the same as those of the least squares fit of the original model with full $X$. You can discern the effects of the
    \n", + "individual data values on the estimation of a coefficient easily. If obs_labels is True, then these points are annotated
    \n", + "with their observation label. You can also see the violation of underlying assumptions such as homooskedasticity and
    \n", + "linearity." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(12,8))\n", + "fig = sm.graphics.plot_partregress(\"prestige\", \"income\", [\"income\", \"education\"], data=prestige, ax=ax)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fix, ax = plt.subplots(figsize=(12,14))\n", + "fig = sm.graphics.plot_partregress(\"prestige\", \"income\", [\"education\"], data=prestige, ax=ax)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see the partial regression plot confirms the influence of conductor, minister, and RR.engineer on the partial relationship between income and prestige. The cases greatly decrease the effect of income on prestige. Dropping these cases confirms this." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "subset = ~prestige.index.isin([\"conductor\", \"RR.engineer\", \"minister\"])\n", + "prestige_model2 = ols(\"prestige ~ income + education\", data=prestige, subset=subset).fit()\n", + "print(prestige_model2.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For a quick check of all the regressors, you can use plot_partregress_grid. These plots will not label the
    \n", + "points, but you can use them to identify problems and then use plot_partregress to get more information." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "fig = sm.graphics.plot_partregress_grid(prestige_model, fig=fig)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Component-Component plus Residual (CCPR) Plots" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The CCPR plot provides a way to judge the effect of one regressor on the
    \n", + "response variable by taking into account the effects of the other
    \n", + "independent variables. The partial residuals plot is defined as
    \n", + "$\\text{Residuals} + B_iX_i \\text{ }\\text{ }$ versus $X_i$. The component adds $B_iX_i$ versus
    \n", + "$X_i$ to show where the fitted line would lie. Care should be taken if $X_i$
    \n", + "is highly correlated with any of the other independent variables. If this
    \n", + "is the case, the variance evident in the plot will be an underestimate of
    \n", + "the true variance." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(12, 8))\n", + "fig = sm.graphics.plot_ccpr(prestige_model, \"education\", ax=ax)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you can see the relationship between the variation in prestige explained by education conditional on income seems to be linear, though you can see there are some observations that are exerting considerable influence on the relationship. We can quickly look at more than one variable by using plot_ccpr_grid." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12, 8))\n", + "fig = sm.graphics.plot_ccpr_grid(prestige_model, fig=fig)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Regression Plots" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The plot_regress_exog function is a convenience function that gives a 2x2 plot containing the dependent variable and fitted values with confidence intervals vs. the independent variable chosen, the residuals of the model vs. the chosen independent variable, a partial regression plot, and a CCPR plot. This function can be used for quickly checking modeling assumptions with respect to a single regressor." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "fig = sm.graphics.plot_regress_exog(prestige_model, \"education\", fig=fig)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Fit Plot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The plot_fit function plots the fitted values versus a chosen independent variable. It includes prediction confidence intervals and optionally plots the true dependent variable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(12, 8))\n", + "fig = sm.graphics.plot_fit(prestige_model, \"education\", ax=ax)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Statewide Crime 2009 Dataset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compare the following to http://www.ats.ucla.edu/stat/stata/webbooks/reg/chapter4/statareg_self_assessment_answers4.htm\n", + "\n", + "Though the data here is not the same as in that example. You could run that example by uncommenting the necessary cells below." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#dta = pd.read_csv(\"http://www.stat.ufl.edu/~aa/social/csv_files/statewide-crime-2.csv\")\n", + "#dta = dta.set_index(\"State\", inplace=True).dropna()\n", + "#dta.rename(columns={\"VR\" : \"crime\",\n", + "# \"MR\" : \"murder\",\n", + "# \"M\" : \"pctmetro\",\n", + "# \"W\" : \"pctwhite\",\n", + "# \"H\" : \"pcths\",\n", + "# \"P\" : \"poverty\",\n", + "# \"S\" : \"single\"\n", + "# }, inplace=True)\n", + "#\n", + "#crime_model = ols(\"murder ~ pctmetro + poverty + pcths + single\", data=dta).fit()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dta = sm.datasets.statecrime.load_pandas().data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "crime_model = ols(\"murder ~ urban + poverty + hs_grad + single\", data=dta).fit()\n", + "print(crime_model.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Partial Regression Plots" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "fig = sm.graphics.plot_partregress_grid(crime_model, fig=fig)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(12,8))\n", + "fig = sm.graphics.plot_partregress(\"murder\", \"hs_grad\", [\"urban\", \"poverty\", \"single\"], ax=ax, data=dta)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Leverage-Resid2 Plot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Closely related to the influence_plot is the leverage-resid2 plot." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(8,6))\n", + "fig = sm.graphics.plot_leverage_resid2(crime_model, ax=ax)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Influence Plot" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(8,6))\n", + "fig = sm.graphics.influence_plot(crime_model, ax=ax)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Using robust regression to correct for outliers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Part of the problem here in recreating the Stata results is that M-estimators are not robust to leverage points. MM-estimators should do better with this examples." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from statsmodels.formula.api import rlm" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "rob_crime_model = rlm(\"murder ~ urban + poverty + hs_grad + single\", data=dta, \n", + " M=sm.robust.norms.TukeyBiweight(3)).fit(conv=\"weights\")\n", + "print(rob_crime_model.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "#rob_crime_model = rlm(\"murder ~ pctmetro + poverty + pcths + single\", data=dta, M=sm.robust.norms.TukeyBiweight()).fit(conv=\"weights\")\n", + "#print(rob_crime_model.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There isn't yet an influence diagnostics method as part of RLM, but we can recreate them. (This depends on the status of [issue #888](https://github.com/statsmodels/statsmodels/issues/808))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "weights = rob_crime_model.weights\n", + "idx = weights > 0\n", + "X = rob_crime_model.model.exog[idx.values]\n", + "ww = weights[idx] / weights[idx].mean()\n", + "hat_matrix_diag = ww*(X*np.linalg.pinv(X).T).sum(1)\n", + "resid = rob_crime_model.resid\n", + "resid2 = resid**2\n", + "resid2 /= resid2.sum()\n", + "nobs = int(idx.sum())\n", + "hm = hat_matrix_diag.mean()\n", + "rm = resid2.mean()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from statsmodels.graphics import utils\n", + "fig, ax = plt.subplots(figsize=(12,8))\n", + "ax.plot(resid2[idx], hat_matrix_diag, 'o')\n", + "ax = utils.annotate_axes(range(nobs), labels=rob_crime_model.model.data.row_labels[idx], \n", + " points=lzip(resid2[idx], hat_matrix_diag), offset_points=[(-5,5)]*nobs,\n", + " size=\"large\", ax=ax)\n", + "ax.set_xlabel(\"resid2\")\n", + "ax.set_ylabel(\"leverage\")\n", + "ylim = ax.get_ylim()\n", + "ax.vlines(rm, *ylim)\n", + "xlim = ax.get_xlim()\n", + "ax.hlines(hm, *xlim)\n", + "ax.margins(0,0)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/robust_models_0.ipynb b/examples/notebooks/robust_models_0.ipynb new file mode 100644 index 0000000..c7c7b02 --- /dev/null +++ b/examples/notebooks/robust_models_0.ipynb @@ -0,0 +1,288 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Robust Linear Models" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import numpy as np\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt\n", + "from statsmodels.sandbox.regression.predstd import wls_prediction_std" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Estimation\n", + "\n", + "Load data:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "data = sm.datasets.stackloss.load(as_pandas=False)\n", + "data.exog = sm.add_constant(data.exog)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Huber's T norm with the (default) median absolute deviation scaling" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "huber_t = sm.RLM(data.endog, data.exog, M=sm.robust.norms.HuberT())\n", + "hub_results = huber_t.fit()\n", + "print(hub_results.params)\n", + "print(hub_results.bse)\n", + "print(hub_results.summary(yname='y',\n", + " xname=['var_%d' % i for i in range(len(hub_results.params))]))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Huber's T norm with 'H2' covariance matrix" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hub_results2 = huber_t.fit(cov=\"H2\")\n", + "print(hub_results2.params)\n", + "print(hub_results2.bse)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Andrew's Wave norm with Huber's Proposal 2 scaling and 'H3' covariance matrix" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "andrew_mod = sm.RLM(data.endog, data.exog, M=sm.robust.norms.AndrewWave())\n", + "andrew_results = andrew_mod.fit(scale_est=sm.robust.scale.HuberScale(), cov=\"H3\")\n", + "print('Parameters: ', andrew_results.params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "See ``help(sm.RLM.fit)`` for more options and ``module sm.robust.scale`` for scale options\n", + "\n", + "## Comparing OLS and RLM\n", + "\n", + "Artificial data with outliers:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "nsample = 50\n", + "x1 = np.linspace(0, 20, nsample)\n", + "X = np.column_stack((x1, (x1-5)**2))\n", + "X = sm.add_constant(X)\n", + "sig = 0.3 # smaller error variance makes OLS<->RLM contrast bigger\n", + "beta = [5, 0.5, -0.0]\n", + "y_true2 = np.dot(X, beta)\n", + "y2 = y_true2 + sig*1. * np.random.normal(size=nsample)\n", + "y2[[39,41,43,45,48]] -= 5 # add some outliers (10% of nsample)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 1: quadratic function with linear truth\n", + "\n", + "Note that the quadratic term in OLS regression will capture outlier effects. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res = sm.OLS(y2, X).fit()\n", + "print(res.params)\n", + "print(res.bse)\n", + "print(res.predict())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Estimate RLM:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "resrlm = sm.RLM(y2, X).fit()\n", + "print(resrlm.params)\n", + "print(resrlm.bse)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Draw a plot to compare OLS estimates to the robust estimates:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111)\n", + "ax.plot(x1, y2, 'o',label=\"data\")\n", + "ax.plot(x1, y_true2, 'b-', label=\"True\")\n", + "prstd, iv_l, iv_u = wls_prediction_std(res)\n", + "ax.plot(x1, res.fittedvalues, 'r-', label=\"OLS\")\n", + "ax.plot(x1, iv_u, 'r--')\n", + "ax.plot(x1, iv_l, 'r--')\n", + "ax.plot(x1, resrlm.fittedvalues, 'g.-', label=\"RLM\")\n", + "ax.legend(loc=\"best\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example 2: linear function with linear truth\n", + "\n", + "Fit a new OLS model using only the linear term and the constant:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "X2 = X[:,[0,1]]\n", + "res2 = sm.OLS(y2, X2).fit()\n", + "print(res2.params)\n", + "print(res2.bse)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Estimate RLM:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "resrlm2 = sm.RLM(y2, X2).fit()\n", + "print(resrlm2.params)\n", + "print(resrlm2.bse)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Draw a plot to compare OLS estimates to the robust estimates:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "prstd, iv_l, iv_u = wls_prediction_std(res2)\n", + "\n", + "fig, ax = plt.subplots(figsize=(8,6))\n", + "ax.plot(x1, y2, 'o', label=\"data\")\n", + "ax.plot(x1, y_true2, 'b-', label=\"True\")\n", + "ax.plot(x1, res2.fittedvalues, 'r-', label=\"OLS\")\n", + "ax.plot(x1, iv_u, 'r--')\n", + "ax.plot(x1, iv_l, 'r--')\n", + "ax.plot(x1, resrlm2.fittedvalues, 'g.-', label=\"RLM\")\n", + "legend = ax.legend(loc=\"best\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/robust_models_1.ipynb b/examples/notebooks/robust_models_1.ipynb new file mode 100644 index 0000000..934cdf1 --- /dev/null +++ b/examples/notebooks/robust_models_1.ipynb @@ -0,0 +1,1115 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# M-Estimators for Robust Linear Modeling" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "from statsmodels.compat import lmap\n", + "import numpy as np\n", + "from scipy import stats\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import statsmodels.api as sm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* An M-estimator minimizes the function \n", + "\n", + "$$Q(e_i, \\rho) = \\sum_i~\\rho \\left (\\frac{e_i}{s}\\right )$$\n", + "\n", + "where $\\rho$ is a symmetric function of the residuals \n", + "\n", + "* The effect of $\\rho$ is to reduce the influence of outliers\n", + "* $s$ is an estimate of scale. \n", + "* The robust estimates $\\hat{\\beta}$ are computed by the iteratively re-weighted least squares algorithm" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* We have several choices available for the weighting functions to be used" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "norms = sm.robust.norms" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "def plot_weights(support, weights_func, xlabels, xticks):\n", + " fig = plt.figure(figsize=(12,8))\n", + " ax = fig.add_subplot(111)\n", + " ax.plot(support, weights_func(support))\n", + " ax.set_xticks(xticks)\n", + " ax.set_xticklabels(xlabels, fontsize=16)\n", + " ax.set_ylim(-.1, 1.1)\n", + " return ax" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Andrew's Wave" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "help(norms.AndrewWave.weights)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "a = 1.339\n", + "support = np.linspace(-np.pi*a, np.pi*a, 100)\n", + "andrew = norms.AndrewWave(a=a)\n", + "plot_weights(support, andrew.weights, ['$-\\pi*a$', '0', '$\\pi*a$'], [-np.pi*a, 0, np.pi*a]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hampel's 17A" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "help(norms.Hampel.weights)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "c = 8\n", + "support = np.linspace(-3*c, 3*c, 1000)\n", + "hampel = norms.Hampel(a=2., b=4., c=c)\n", + "plot_weights(support, hampel.weights, ['3*c', '0', '3*c'], [-3*c, 0, 3*c]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Huber's t" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "help(norms.HuberT.weights)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "t = 1.345\n", + "support = np.linspace(-3*t, 3*t, 1000)\n", + "huber = norms.HuberT(t=t)\n", + "plot_weights(support, huber.weights, ['-3*t', '0', '3*t'], [-3*t, 0, 3*t]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Least Squares" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "help(norms.LeastSquares.weights)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "support = np.linspace(-3, 3, 1000)\n", + "lst_sq = norms.LeastSquares()\n", + "plot_weights(support, lst_sq.weights, ['-3', '0', '3'], [-3, 0, 3]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Ramsay's Ea" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "help(norms.RamsayE.weights)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "a = .3\n", + "support = np.linspace(-3*a, 3*a, 1000)\n", + "ramsay = norms.RamsayE(a=a)\n", + "plot_weights(support, ramsay.weights, ['-3*a', '0', '3*a'], [-3*a, 0, 3*a]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Trimmed Mean" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "help(norms.TrimmedMean.weights)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "c = 2\n", + "support = np.linspace(-3*c, 3*c, 1000)\n", + "trimmed = norms.TrimmedMean(c=c)\n", + "plot_weights(support, trimmed.weights, ['-3*c', '0', '3*c'], [-3*c, 0, 3*c]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Tukey's Biweight" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "help(norms.TukeyBiweight.weights)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "c = 4.685\n", + "support = np.linspace(-3*c, 3*c, 1000)\n", + "tukey = norms.TukeyBiweight(c=c)\n", + "plot_weights(support, tukey.weights, ['-3*c', '0', '3*c'], [-3*c, 0, 3*c]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Scale Estimators" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Robust estimates of the location" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x = np.array([1, 2, 3, 4, 500])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The mean is not a robust estimator of location" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x.mean()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The median, on the other hand, is a robust estimator with a breakdown point of 50%" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "np.median(x)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Analagously for the scale\n", + "* The standard deviation is not robust" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "x.std()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Median Absolute Deviation\n", + "\n", + "$$ median_i |X_i - median_j(X_j)|) $$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Standardized Median Absolute Deviation is a consistent estimator for $\\hat{\\sigma}$\n", + "\n", + "$$\\hat{\\sigma}=K \\cdot MAD$$\n", + "\n", + "where $K$ depends on the distribution. For the normal distribution for example,\n", + "\n", + "$$K = \\Phi^{-1}(.75)$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "stats.norm.ppf(.75)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "print(x)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "sm.robust.scale.mad(x)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "np.array([1,2,3,4,5.]).std()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* The default for Robust Linear Models is MAD\n", + "* another popular choice is Huber's proposal 2" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "np.random.seed(12345)\n", + "fat_tails = stats.t(6).rvs(40)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "kde = sm.nonparametric.KDEUnivariate(fat_tails)\n", + "kde.fit()\n", + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111)\n", + "ax.plot(kde.support, kde.density);" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "print(fat_tails.mean(), fat_tails.std())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "print(stats.norm.fit(fat_tails))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "print(stats.t.fit(fat_tails, f0=6))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "huber = sm.robust.scale.Huber()\n", + "loc, scale = huber(fat_tails)\n", + "print(loc, scale)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "sm.robust.mad(fat_tails)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "sm.robust.mad(fat_tails, c=stats.t(6).ppf(.75))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "sm.robust.scale.mad(fat_tails)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Duncan's Occupational Prestige data - M-estimation for outliers" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from statsmodels.graphics.api import abline_plot\n", + "from statsmodels.formula.api import ols, rlm" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "prestige = sm.datasets.get_rdataset(\"Duncan\", \"carData\", cache=True).data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "print(prestige.head(10))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,12))\n", + "ax1 = fig.add_subplot(211, xlabel='Income', ylabel='Prestige')\n", + "ax1.scatter(prestige.income, prestige.prestige)\n", + "xy_outlier = prestige.loc['minister', ['income','prestige']]\n", + "ax1.annotate('Minister', xy_outlier, xy_outlier+1, fontsize=16)\n", + "ax2 = fig.add_subplot(212, xlabel='Education',\n", + " ylabel='Prestige')\n", + "ax2.scatter(prestige.education, prestige.prestige);" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "ols_model = ols('prestige ~ income + education', prestige).fit()\n", + "print(ols_model.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "infl = ols_model.get_influence()\n", + "student = infl.summary_frame()['student_resid']\n", + "print(student)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "print(student.loc[np.abs(student) > 2])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "print(infl.summary_frame().loc['minister'])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "sidak = ols_model.outlier_test('sidak')\n", + "sidak.sort_values('unadj_p', inplace=True)\n", + "print(sidak)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fdr = ols_model.outlier_test('fdr_bh')\n", + "fdr.sort_values('unadj_p', inplace=True)\n", + "print(fdr)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "rlm_model = rlm('prestige ~ income + education', prestige).fit()\n", + "print(rlm_model.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "print(rlm_model.weights)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hertzprung Russell data for Star Cluster CYG 0B1 - Leverage Points" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Data is on the luminosity and temperature of 47 stars in the direction of Cygnus." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "dta = sm.datasets.get_rdataset(\"starsCYG\", \"robustbase\", cache=True).data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from matplotlib.patches import Ellipse\n", + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111, xlabel='log(Temp)', ylabel='log(Light)', title='Hertzsprung-Russell Diagram of Star Cluster CYG OB1')\n", + "ax.scatter(*dta.values.T)\n", + "# highlight outliers\n", + "e = Ellipse((3.5, 6), .2, 1, alpha=.25, color='r')\n", + "ax.add_patch(e);\n", + "ax.annotate('Red giants', xy=(3.6, 6), xytext=(3.8, 6),\n", + " arrowprops=dict(facecolor='black', shrink=0.05, width=2),\n", + " horizontalalignment='left', verticalalignment='bottom',\n", + " clip_on=True, # clip to the axes bounding box\n", + " fontsize=16,\n", + " )\n", + "# annotate these with their index\n", + "for i,row in dta.loc[dta['log.Te'] < 3.8].iterrows():\n", + " ax.annotate(i, row, row + .01, fontsize=14)\n", + "xlim, ylim = ax.get_xlim(), ax.get_ylim()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "from IPython.display import Image\n", + "Image(filename='star_diagram.png')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "y = dta['log.light']\n", + "X = sm.add_constant(dta['log.Te'], prepend=True)\n", + "ols_model = sm.OLS(y, X).fit()\n", + "abline_plot(model_results=ols_model, ax=ax)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "rlm_mod = sm.RLM(y, X, sm.robust.norms.TrimmedMean(.5)).fit()\n", + "abline_plot(model_results=rlm_mod, ax=ax, color='red')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Why? Because M-estimators are not robust to leverage points." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "infl = ols_model.get_influence()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "h_bar = 2*(ols_model.df_model + 1 )/ols_model.nobs\n", + "hat_diag = infl.summary_frame()['hat_diag']\n", + "hat_diag.loc[hat_diag > h_bar]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "sidak2 = ols_model.outlier_test('sidak')\n", + "sidak2.sort_values('unadj_p', inplace=True)\n", + "print(sidak2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "fdr2 = ols_model.outlier_test('fdr_bh')\n", + "fdr2.sort_values('unadj_p', inplace=True)\n", + "print(fdr2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Let's delete that line" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "l = ax.lines[-1]\n", + "l.remove()\n", + "del l" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "weights = np.ones(len(X))\n", + "weights[X[X['log.Te'] < 3.8].index.values - 1] = 0\n", + "wls_model = sm.WLS(y, X, weights=weights).fit()\n", + "abline_plot(model_results=wls_model, ax=ax, color='green')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* MM estimators are good for this type of problem, unfortunately, we don't yet have these yet. \n", + "* It's being worked on, but it gives a good excuse to look at the R cell magics in the notebook." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "yy = y.values[:,None]\n", + "xx = X['log.Te'].values[:,None]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%load_ext rpy2.ipython" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%R library(robustbase)\n", + "%Rpush yy xx\n", + "%R mod <- lmrob(yy ~ xx);\n", + "%R params <- mod$coefficients;\n", + "%Rpull params" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%R print(mod)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "print(params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "abline_plot(intercept=params[0], slope=params[1], ax=ax, color='red')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise: Breakdown points of M-estimator" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "np.random.seed(12345)\n", + "nobs = 200\n", + "beta_true = np.array([3, 1, 2.5, 3, -4])\n", + "X = np.random.uniform(-20,20, size=(nobs, len(beta_true)-1))\n", + "# stack a constant in front\n", + "X = sm.add_constant(X, prepend=True) # np.c_[np.ones(nobs), X]\n", + "mc_iter = 500\n", + "contaminate = .25 # percentage of response variables to contaminate" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "all_betas = []\n", + "for i in range(mc_iter):\n", + " y = np.dot(X, beta_true) + np.random.normal(size=200)\n", + " random_idx = np.random.randint(0, nobs, size=int(contaminate * nobs))\n", + " y[random_idx] = np.random.uniform(-750, 750)\n", + " beta_hat = sm.RLM(y, X).fit().params\n", + " all_betas.append(beta_hat)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "all_betas = np.asarray(all_betas)\n", + "se_loss = lambda x : np.linalg.norm(x, ord=2)**2\n", + "se_beta = lmap(se_loss, all_betas - beta_true)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Squared error loss" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "np.array(se_beta).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "all_betas.mean(0)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "beta_true" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "se_loss(all_betas.mean(0) - beta_true)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/star_diagram.png b/examples/notebooks/star_diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..33f28fe8f29b3677d431758cae8a458fe4488c5b GIT binary patch literal 175558 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Ⓢ1TvNy?P_&o=_92MS>ec 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

    GM@X#>s6U+(J@lc`mf*OL*@3(rHn` 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 literal 0 HcmV?d00001 diff --git a/examples/notebooks/statespace_arma_0.ipynb b/examples/notebooks/statespace_arma_0.ipynb new file mode 100644 index 0000000..ba5c01b --- /dev/null +++ b/examples/notebooks/statespace_arma_0.ipynb @@ -0,0 +1,357 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Autoregressive Moving Average (ARMA): Sunspots data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook replicates the existing ARMA notebook using the `statsmodels.tsa.statespace.SARIMAX` class rather than the `statsmodels.tsa.ARMA` class." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import numpy as np\n", + "from scipy import stats\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import statsmodels.api as sm" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from statsmodels.graphics.api import qqplot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sunpots Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(sm.datasets.sunspots.NOTE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "dta = sm.datasets.sunspots.load_pandas().data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "dta.index = pd.Index(sm.tsa.datetools.dates_from_range('1700', '2008'))\n", + "del dta[\"YEAR\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "dta.plot(figsize=(12,4));" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax1 = fig.add_subplot(211)\n", + "fig = sm.graphics.tsa.plot_acf(dta.values.squeeze(), lags=40, ax=ax1)\n", + "ax2 = fig.add_subplot(212)\n", + "fig = sm.graphics.tsa.plot_pacf(dta, lags=40, ax=ax2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "arma_mod20 = sm.tsa.statespace.SARIMAX(dta, order=(2,0,0), trend='c').fit(disp=False)\n", + "print(arma_mod20.params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "arma_mod30 = sm.tsa.statespace.SARIMAX(dta, order=(3,0,0), trend='c').fit(disp=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(arma_mod20.aic, arma_mod20.bic, arma_mod20.hqic)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(arma_mod30.params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(arma_mod30.aic, arma_mod30.bic, arma_mod30.hqic)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Does our model obey the theory?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "sm.stats.durbin_watson(arma_mod30.resid)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,4))\n", + "ax = fig.add_subplot(111)\n", + "ax = plt.plot(arma_mod30.resid)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "resid = arma_mod30.resid" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "stats.normaltest(resid)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,4))\n", + "ax = fig.add_subplot(111)\n", + "fig = qqplot(resid, line='q', ax=ax, fit=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax1 = fig.add_subplot(211)\n", + "fig = sm.graphics.tsa.plot_acf(resid, lags=40, ax=ax1)\n", + "ax2 = fig.add_subplot(212)\n", + "fig = sm.graphics.tsa.plot_pacf(resid, lags=40, ax=ax2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "r,q,p = sm.tsa.acf(resid, fft=True, qstat=True)\n", + "data = np.c_[range(1,41), r[1:], q, p]\n", + "table = pd.DataFrame(data, columns=['lag', \"AC\", \"Q\", \"Prob(>Q)\"])\n", + "print(table.set_index('lag'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* This indicates a lack of fit." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* In-sample dynamic prediction. How good does our model do?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "predict_sunspots = arma_mod30.predict(start='1990', end='2012', dynamic=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(12, 8))\n", + "dta.loc['1950':].plot(ax=ax)\n", + "predict_sunspots.plot(ax=ax, style='r');" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "def mean_forecast_err(y, yhat):\n", + " return y.sub(yhat).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mean_forecast_err(dta.SUNACTIVITY, predict_sunspots)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/statespace_concentrated_scale.ipynb b/examples/notebooks/statespace_concentrated_scale.ipynb new file mode 100644 index 0000000..da8a678 --- /dev/null +++ b/examples/notebooks/statespace_concentrated_scale.ipynb @@ -0,0 +1,353 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## State space models - concentrating the scale out of the likelihood function" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import statsmodels.api as sm\n", + "\n", + "dta = sm.datasets.macrodata.load_pandas().data\n", + "dta.index = pd.PeriodIndex(start='1959Q1', end='2009Q3', freq='Q')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Introduction\n", + "\n", + "(much of this is based on Harvey (1989); see especially section 3.4)\n", + "\n", + "State space models can generically be written as follows (here we focus on time-invariant state space models, but similar results apply also to time-varying models):\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_t & = Z \\alpha_t + \\varepsilon_t, \\quad \\varepsilon_t \\sim N(0, H) \\\\\n", + "\\alpha_{t+1} & = T \\alpha_t + R \\eta_t \\quad \\eta_t \\sim N(0, Q)\n", + "\\end{align}\n", + "$$\n", + "\n", + "Often, some or all of the values in the matrices $Z, H, T, R, Q$ are unknown and must be estimated; in Statsmodels, estimation is often done by finding the parameters that maximize the likelihood function. In particular, if we collect the parameters in a vector $\\psi$, then each of these matrices can be thought of as functions of those parameters, for example $Z = Z(\\psi)$, etc.\n", + "\n", + "Usually, the likelihood function is maximized numerically, for example by applying quasi-Newton \"hill-climbing\" algorithms, and this becomes more and more difficult the more parameters there are. It turns out that in many cases we can reparameterize the model as $[\\psi_*', \\sigma_*^2]'$, where $\\sigma_*^2$ is the \"scale\" of the model (usually, it replaces one of the error variance terms) and it is possible to find the maximum likelihood estimate of $\\sigma_*^2$ analytically, by differentiating the likelihood function. This implies that numerical methods are only required to estimate the parameters $\\psi_*$, which has dimension one less than that of $\\psi$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example: local level model\n", + "\n", + "(see, for example, section 4.2 of Harvey (1989))\n", + "\n", + "As a specific example, consider the local level model, which can be written as:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_t & = \\alpha_t + \\varepsilon_t, \\quad \\varepsilon_t \\sim N(0, \\sigma_\\varepsilon^2) \\\\\n", + "\\alpha_{t+1} & = \\alpha_t + \\eta_t \\quad \\eta_t \\sim N(0, \\sigma_\\eta^2)\n", + "\\end{align}\n", + "$$\n", + "\n", + "In this model, $Z, T,$ and $R$ are all fixed to be equal to $1$, and there are two unknown parameters, so that $\\psi = [\\sigma_\\varepsilon^2, \\sigma_\\eta^2]$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Typical approach\n", + "\n", + "First, we show how to define this model without concentrating out the scale, using Statsmodels' state space library:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class LocalLevel(sm.tsa.statespace.MLEModel):\n", + " _start_params = [1., 1.]\n", + " _param_names = ['var.level', 'var.irregular']\n", + "\n", + " def __init__(self, endog):\n", + " super(LocalLevel, self).__init__(endog, k_states=1, initialization='diffuse')\n", + "\n", + " self['design', 0, 0] = 1\n", + " self['transition', 0, 0] = 1\n", + " self['selection', 0, 0] = 1\n", + "\n", + " def transform_params(self, unconstrained):\n", + " return unconstrained**2\n", + "\n", + " def untransform_params(self, unconstrained):\n", + " return unconstrained**0.5\n", + "\n", + " def update(self, params, **kwargs):\n", + " params = super(LocalLevel, self).update(params, **kwargs)\n", + "\n", + " self['state_cov', 0, 0] = params[0]\n", + " self['obs_cov', 0, 0] = params[1]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "There are two parameters in this model that must be chosen: `var.level` $(\\sigma_\\eta^2)$ and `var.irregular` $(\\sigma_\\varepsilon^2)$. We can use the built-in `fit` method to choose them by numerically maximizing the likelihood function.\n", + "\n", + "In our example, we are applying the local level model to consumer price index inflation." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mod = LocalLevel(dta.infl)\n", + "res = mod.fit(disp=False)\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can look at the results from the numerical optimizer in the results attribute `mle_retvals`:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(res.mle_retvals)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Concentrating out the scale" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Now, there are two ways to reparameterize this model as above:\n", + "\n", + "1. The first way is to set $\\sigma_*^2 \\equiv \\sigma_\\varepsilon^2$ so that $\\psi_* = \\psi / \\sigma_\\varepsilon^2 = [1, q_\\eta]$ where $q_\\eta = \\sigma_\\eta^2 / \\sigma_\\varepsilon^2$.\n", + "2. The second way is to set $\\sigma_*^2 \\equiv \\sigma_\\eta^2$ so that $\\psi_* = \\psi / \\sigma_\\eta^2 = [h, 1]$ where $h = \\sigma_\\varepsilon^2 / \\sigma_\\eta^2$.\n", + "\n", + "In the first case, we only need to numerically maximize the likelihood with respect to $q_\\eta$, and in the second case we only need to numerically maximize the likelihood with respect to $h$.\n", + "\n", + "Either approach would work well in most cases, and in the example below we will use the second method." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To reformulate the model to take advantage of the concentrated likelihood function, we need to write the model in terms of the parameter vector $\\psi_* = [g, 1]$. Because this parameter vector defines $\\sigma_\\eta^2 \\equiv 1$, we now include a new line `self['state_cov', 0, 0] = 1` and the only unknown parameter is $h$. Because our parameter $h$ is no longer a variance, we renamed it here to be `ratio.irregular`.\n", + "\n", + "The key piece that is required to formulate the model so that the scale can be computed from the Kalman filter recursions (rather than selected numerically) is setting the flag `self.ssm.filter_concentrated = True`." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "class LocalLevelConcentrated(sm.tsa.statespace.MLEModel):\n", + " _start_params = [1.]\n", + " _param_names = ['ratio.irregular']\n", + "\n", + " def __init__(self, endog):\n", + " super(LocalLevelConcentrated, self).__init__(endog, k_states=1, initialization='diffuse')\n", + "\n", + " self['design', 0, 0] = 1\n", + " self['transition', 0, 0] = 1\n", + " self['selection', 0, 0] = 1\n", + " self['state_cov', 0, 0] = 1\n", + " \n", + " self.ssm.filter_concentrated = True\n", + "\n", + " def transform_params(self, unconstrained):\n", + " return unconstrained**2\n", + "\n", + " def untransform_params(self, unconstrained):\n", + " return unconstrained**0.5\n", + "\n", + " def update(self, params, **kwargs):\n", + " params = super(LocalLevelConcentrated, self).update(params, **kwargs)\n", + " self['obs_cov', 0, 0] = params[0]\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again, we can use the built-in `fit` method to find the maximum likelihood estimate of $h$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mod_conc = LocalLevelConcentrated(dta.infl)\n", + "res_conc = mod_conc.fit(disp=False)\n", + "print(res_conc.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The estimate of $h$ is provided in the middle table of parameters (`ratio.irregular`), while the estimate of the scale is provided in the upper table. Below, we will show that these estimates are consistent with those from the previous approach." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And we can again look at the results from the numerical optimizer in the results attribute `mle_retvals`. It turns out that two fewer iterations were required in this case, since there was one fewer parameter to select. Moreover, since the numerical maximization problem was easier, the optimizer was able to find a value that made the gradiant for this parameter slightly closer to zero than it was above." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(res_conc.mle_retvals)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Comparing estimates\n", + "\n", + "Recall that $h = \\sigma_\\varepsilon^2 / \\sigma_\\eta^2$ and the scale is $\\sigma_*^2 = \\sigma_\\eta^2$. Using these definitions, we can see that both models produce nearly identical results:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('Original model')\n", + "print('var.level = %.5f' % res.params[0])\n", + "print('var.irregular = %.5f' % res.params[1])\n", + "\n", + "print('\\nConcentrated model')\n", + "print('scale = %.5f' % res_conc.scale)\n", + "print('h * scale = %.5f' % (res_conc.params[0] * res_conc.scale))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Example: SARIMAX\n", + "\n", + "By default in SARIMAX models, the variance term is chosen by numerically maximizing the likelihood function, but an option has been added to allow concentrating the scale out." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Typical approach\n", + "mod_ar = sm.tsa.SARIMAX(dta.cpi, order=(1, 0, 0), trend='ct')\n", + "res_ar = mod_ar.fit(disp=False)\n", + "\n", + "# Estimating the model with the scale concentrated out\n", + "mod_ar_conc = sm.tsa.SARIMAX(dta.cpi, order=(1, 0, 0), trend='ct', concentrate_scale=True)\n", + "res_ar_conc = mod_ar_conc.fit(disp=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "These two approaches produce about the same loglikelihood and parameters, although the model with the concentrated scale was able to improve the fit very slightly:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('Loglikelihood')\n", + "print('- Original model: %.4f' % res_ar.llf)\n", + "print('- Concentrated model: %.4f' % res_ar_conc.llf)\n", + "\n", + "print('\\nParameters')\n", + "print('- Original model: %.4f, %.4f, %.4f, %.4f' % tuple(res_ar.params))\n", + "print('- Concentrated model: %.4f, %.4f, %.4f, %.4f' % (tuple(res_ar_conc.params) + (res_ar_conc.scale,)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This time, about 1/3 fewer iterations of the optimizer are required under the concentrated approach:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print('Optimizer iterations')\n", + "print('- Original model: %d' % res_ar.mle_retvals['iterations'])\n", + "print('- Concentrated model: %d' % res_ar_conc.mle_retvals['iterations'])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.0" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/examples/notebooks/statespace_cycles.ipynb b/examples/notebooks/statespace_cycles.ipynb new file mode 100644 index 0000000..a5e5d19 --- /dev/null +++ b/examples/notebooks/statespace_cycles.ipynb @@ -0,0 +1,192 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Trends and cycles in unemployment\n", + "\n", + "Here we consider three methods for separating a trend and cycle in economic data. Supposing we have a time series $y_t$, the basic idea is to decompose it into these two components:\n", + "\n", + "$$\n", + "y_t = \\mu_t + \\eta_t\n", + "$$\n", + "\n", + "where $\\mu_t$ represents the trend or level and $\\eta_t$ represents the cyclical component. In this case, we consider a *stochastic* trend, so that $\\mu_t$ is a random variable and not a deterministic function of time. Two of methods fall under the heading of \"unobserved components\" models, and the third is the popular Hodrick-Prescott (HP) filter. Consistent with e.g. Harvey and Jaeger (1993), we find that these models all produce similar decompositions.\n", + "\n", + "This notebook demonstrates applying these models to separate trend from cycle in the U.S. unemployment rate." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pandas_datareader.data import DataReader\n", + "endog = DataReader('UNRATE', 'fred', start='1954-01-01')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hodrick-Prescott (HP) filter\n", + "\n", + "The first method is the Hodrick-Prescott filter, which can be applied to a data series in a very straightforward method. Here we specify the parameter $\\lambda=129600$ because the unemployment rate is observed monthly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "hp_cycle, hp_trend = sm.tsa.filters.hpfilter(endog, lamb=129600)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Unobserved components and ARIMA model (UC-ARIMA)\n", + "\n", + "The next method is an unobserved components model, where the trend is modeled as a random walk and the cycle is modeled with an ARIMA model - in particular, here we use an AR(4) model. The process for the time series can be written as:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_t & = \\mu_t + \\eta_t \\\\\n", + "\\mu_{t+1} & = \\mu_t + \\epsilon_{t+1} \\\\\n", + "\\phi(L) \\eta_t & = \\nu_t\n", + "\\end{align}\n", + "$$\n", + "\n", + "where $\\phi(L)$ is the AR(4) lag polynomial and $\\epsilon_t$ and $\\nu_t$ are white noise." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mod_ucarima = sm.tsa.UnobservedComponents(endog, 'rwalk', autoregressive=4)\n", + "# Here the powell method is used, since it achieves a\n", + "# higher loglikelihood than the default L-BFGS method\n", + "res_ucarima = mod_ucarima.fit(method='powell', disp=False)\n", + "print(res_ucarima.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Unobserved components with stochastic cycle (UC)\n", + "\n", + "The final method is also an unobserved components model, but where the cycle is modeled explicitly.\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_t & = \\mu_t + \\eta_t \\\\\n", + "\\mu_{t+1} & = \\mu_t + \\epsilon_{t+1} \\\\\n", + "\\eta_{t+1} & = \\eta_t \\cos \\lambda_\\eta + \\eta_t^* \\sin \\lambda_\\eta + \\tilde \\omega_t \\qquad & \\tilde \\omega_t \\sim N(0, \\sigma_{\\tilde \\omega}^2) \\\\\n", + "\\eta_{t+1}^* & = -\\eta_t \\sin \\lambda_\\eta + \\eta_t^* \\cos \\lambda_\\eta + \\tilde \\omega_t^* & \\tilde \\omega_t^* \\sim N(0, \\sigma_{\\tilde \\omega}^2)\n", + "\\end{align}\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mod_uc = sm.tsa.UnobservedComponents(\n", + " endog, 'rwalk',\n", + " cycle=True, stochastic_cycle=True, damped_cycle=True,\n", + ")\n", + "# Here the powell method gets close to the optimum\n", + "res_uc = mod_uc.fit(method='powell', disp=False)\n", + "# but to get to the highest loglikelihood we do a\n", + "# second round using the L-BFGS method.\n", + "res_uc = mod_uc.fit(res_uc.params, disp=False)\n", + "print(res_uc.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Graphical comparison\n", + "\n", + "The output of each of these models is an estimate of the trend component $\\mu_t$ and an estimate of the cyclical component $\\eta_t$. Qualitatively the estimates of trend and cycle are very similar, although the trend component from the HP filter is somewhat more variable than those from the unobserved components models. This means that relatively mode of the movement in the unemployment rate is attributed to changes in the underlying trend rather than to temporary cyclical movements." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, axes = plt.subplots(2, figsize=(13,5));\n", + "axes[0].set(title='Level/trend component')\n", + "axes[0].plot(endog.index, res_uc.level.smoothed, label='UC')\n", + "axes[0].plot(endog.index, res_ucarima.level.smoothed, label='UC-ARIMA(2,0)')\n", + "axes[0].plot(hp_trend, label='HP Filter')\n", + "axes[0].legend(loc='upper left')\n", + "axes[0].grid()\n", + "\n", + "axes[1].set(title='Cycle component')\n", + "axes[1].plot(endog.index, res_uc.cycle.smoothed, label='UC')\n", + "axes[1].plot(endog.index, res_ucarima.autoregressive.smoothed, label='UC-ARIMA(2,0)')\n", + "axes[1].plot(hp_cycle, label='HP Filter')\n", + "axes[1].legend(loc='upper left')\n", + "axes[1].grid()\n", + "\n", + "fig.tight_layout();" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/statespace_dfm_coincident.ipynb b/examples/notebooks/statespace_dfm_coincident.ipynb new file mode 100644 index 0000000..e86a063 --- /dev/null +++ b/examples/notebooks/statespace_dfm_coincident.ipynb @@ -0,0 +1,859 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "# Dynamic factors and coincident indices\n", + "\n", + "Factor models generally try to find a small number of unobserved \"factors\" that influence a subtantial portion of the variation in a larger number of observed variables, and they are related to dimension-reduction techniques such as principal components analysis. Dynamic factor models explicitly model the transition dynamics of the unobserved factors, and so are often applied to time-series data.\n", + "\n", + "Macroeconomic coincident indices are designed to capture the common component of the \"business cycle\"; such a component is assumed to simultaneously affect many macroeconomic variables. Although the estimation and use of coincident indices (for example the [Index of Coincident Economic Indicators](http://www.newyorkfed.org/research/regional_economy/coincident_summary.html)) pre-dates dynamic factor models, in several influential papers Stock and Watson (1989, 1991) used a dynamic factor model to provide a theoretical foundation for them.\n", + "\n", + "Below, we follow the treatment found in Kim and Nelson (1999), of the Stock and Watson (1991) model, to formulate a dynamic factor model, estimate its parameters via maximum likelihood, and create a coincident index." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Macroeconomic data\n", + "\n", + "The coincident index is created by considering the comovements in four macroeconomic variables (versions of thse variables are available on [FRED](https://research.stlouisfed.org/fred2/); the ID of the series used below is given in parentheses):\n", + "\n", + "- Industrial production (IPMAN)\n", + "- Real aggregate income (excluding transfer payments) (W875RX1)\n", + "- Manufacturing and trade sales (CMRMTSPL)\n", + "- Employees on non-farm payrolls (PAYEMS)\n", + "\n", + "In all cases, the data is at the monthly frequency and has been seasonally adjusted; the time-frame considered is 1972 - 2005." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt\n", + "\n", + "np.set_printoptions(precision=4, suppress=True, linewidth=120)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from pandas_datareader.data import DataReader\n", + "\n", + "# Get the datasets from FRED\n", + "start = '1979-01-01'\n", + "end = '2014-12-01'\n", + "indprod = DataReader('IPMAN', 'fred', start=start, end=end)\n", + "income = DataReader('W875RX1', 'fred', start=start, end=end)\n", + "sales = DataReader('CMRMTSPL', 'fred', start=start, end=end)\n", + "emp = DataReader('PAYEMS', 'fred', start=start, end=end)\n", + "# dta = pd.concat((indprod, income, sales, emp), axis=1)\n", + "# dta.columns = ['indprod', 'income', 'sales', 'emp']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Note**: in a recent update on FRED (8/12/15) the time series CMRMTSPL was truncated to begin in 1997; this is probably a mistake due to the fact that CMRMTSPL is a spliced series, so the earlier period is from the series HMRMT and the latter period is defined by CMRMT.\n", + "\n", + "This has since (02/11/16) been corrected, however the series could also be constructed by hand from HMRMT and CMRMT, as shown below (process taken from the notes in the Alfred xls file)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# HMRMT = DataReader('HMRMT', 'fred', start='1967-01-01', end=end)\n", + "# CMRMT = DataReader('CMRMT', 'fred', start='1997-01-01', end=end)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# HMRMT_growth = HMRMT.diff() / HMRMT.shift()\n", + "# sales = pd.Series(np.zeros(emp.shape[0]), index=emp.index)\n", + "\n", + "# # Fill in the recent entries (1997 onwards)\n", + "# sales[CMRMT.index] = CMRMT\n", + "\n", + "# # Backfill the previous entries (pre 1997)\n", + "# idx = sales.loc[:'1997-01-01'].index\n", + "# for t in range(len(idx)-1, 0, -1):\n", + "# month = idx[t]\n", + "# prev_month = idx[t-1]\n", + "# sales.loc[prev_month] = sales.loc[month] / (1 + HMRMT_growth.loc[prev_month].values)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dta = pd.concat((indprod, income, sales, emp), axis=1)\n", + "dta.columns = ['indprod', 'income', 'sales', 'emp']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dta.loc[:, 'indprod':'emp'].plot(subplots=True, layout=(2, 2), figsize=(15, 6));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Stock and Watson (1991) report that for their datasets, they could not reject the null hypothesis of a unit root in each series (so the series are integrated), but they did not find strong evidence that the series were co-integrated.\n", + "\n", + "As a result, they suggest estimating the model using the first differences (of the logs) of the variables, demeaned and standardized." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create log-differenced series\n", + "dta['dln_indprod'] = (np.log(dta.indprod)).diff() * 100\n", + "dta['dln_income'] = (np.log(dta.income)).diff() * 100\n", + "dta['dln_sales'] = (np.log(dta.sales)).diff() * 100\n", + "dta['dln_emp'] = (np.log(dta.emp)).diff() * 100\n", + "\n", + "# De-mean and standardize\n", + "dta['std_indprod'] = (dta['dln_indprod'] - dta['dln_indprod'].mean()) / dta['dln_indprod'].std()\n", + "dta['std_income'] = (dta['dln_income'] - dta['dln_income'].mean()) / dta['dln_income'].std()\n", + "dta['std_sales'] = (dta['dln_sales'] - dta['dln_sales'].mean()) / dta['dln_sales'].std()\n", + "dta['std_emp'] = (dta['dln_emp'] - dta['dln_emp'].mean()) / dta['dln_emp'].std()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Dynamic factors\n", + "\n", + "A general dynamic factor model is written as:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_t & = \\Lambda f_t + B x_t + u_t \\\\\n", + "f_t & = A_1 f_{t-1} + \\dots + A_p f_{t-p} + \\eta_t \\qquad \\eta_t \\sim N(0, I)\\\\\n", + "u_t & = C_1 u_{t-1} + \\dots + C_q u_{t-q} + \\varepsilon_t \\qquad \\varepsilon_t \\sim N(0, \\Sigma)\n", + "\\end{align}\n", + "$$\n", + "\n", + "where $y_t$ are observed data, $f_t$ are the unobserved factors (evolving as a vector autoregression), $x_t$ are (optional) exogenous variables, and $u_t$ is the error, or \"idiosyncratic\", process ($u_t$ is also optionally allowed to be autocorrelated). The $\\Lambda$ matrix is often referred to as the matrix of \"factor loadings\". The variance of the factor error term is set to the identity matrix to ensure identification of the unobserved factors.\n", + "\n", + "This model can be cast into state space form, and the unobserved factor estimated via the Kalman filter. The likelihood can be evaluated as a byproduct of the filtering recursions, and maximum likelihood estimation used to estimate the parameters." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model specification\n", + "\n", + "The specific dynamic factor model in this application has 1 unobserved factor which is assumed to follow an AR(2) proces. The innovations $\\varepsilon_t$ are assumed to be independent (so that $\\Sigma$ is a diagonal matrix) and the error term associated with each equation, $u_{i,t}$ is assumed to follow an independent AR(2) process.\n", + "\n", + "Thus the specification considered here is:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_{i,t} & = \\lambda_i f_t + u_{i,t} \\\\\n", + "u_{i,t} & = c_{i,1} u_{1,t-1} + c_{i,2} u_{i,t-2} + \\varepsilon_{i,t} \\qquad & \\varepsilon_{i,t} \\sim N(0, \\sigma_i^2) \\\\\n", + "f_t & = a_1 f_{t-1} + a_2 f_{t-2} + \\eta_t \\qquad & \\eta_t \\sim N(0, I)\\\\\n", + "\\end{align}\n", + "$$\n", + "\n", + "where $i$ is one of: `[indprod, income, sales, emp ]`.\n", + "\n", + "This model can be formulated using the `DynamicFactor` model built-in to Statsmodels. In particular, we have the following specification:\n", + "\n", + "- `k_factors = 1` - (there is 1 unobserved factor)\n", + "- `factor_order = 2` - (it follows an AR(2) process)\n", + "- `error_var = False` - (the errors evolve as independent AR processes rather than jointly as a VAR - note that this is the default option, so it is not specified below)\n", + "- `error_order = 2` - (the errors are autocorrelated of order 2: i.e. AR(2) processes)\n", + "- `error_cov_type = 'diagonal'` - (the innovations are uncorrelated; this is again the default)\n", + "\n", + "Once the model is created, the parameters can be estimated via maximum likelihood; this is done using the `fit()` method.\n", + "\n", + "**Note**: recall that we have de-meaned and standardized the data; this will be important in interpreting the results that follow.\n", + "\n", + "**Aside**: in their empirical example, Kim and Nelson (1999) actually consider a slightly different model in which the employment variable is allowed to also depend on lagged values of the factor - this model does not fit into the built-in `DynamicFactor` class, but can be accomodated by using a subclass to implement the required new parameters and restrictions - see Appendix A, below." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Parameter estimation\n", + "\n", + "Multivariate models can have a relatively large number of parameters, and it may be difficult to escape from local minima to find the maximized likelihood. In an attempt to mitigate this problem, I perform an initial maximization step (from the model-defined starting paramters) using the modified Powell method available in Scipy (see the minimize documentation for more information). The resulting parameters are then used as starting parameters in the standard LBFGS optimization method." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Get the endogenous data\n", + "endog = dta.loc['1979-02-01':, 'std_indprod':'std_emp']\n", + "\n", + "# Create the model\n", + "mod = sm.tsa.DynamicFactor(endog, k_factors=1, factor_order=2, error_order=2)\n", + "initial_res = mod.fit(method='powell', disp=False)\n", + "res = mod.fit(initial_res.params, disp=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Estimates\n", + "\n", + "Once the model has been estimated, there are two components that we can use for analysis or inference:\n", + "\n", + "- The estimated parameters\n", + "- The estimated factor" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Parameters\n", + "\n", + "The estimated parameters can be helpful in understanding the implications of the model, although in models with a larger number of observed variables and / or unobserved factors they can be difficult to interpret.\n", + "\n", + "One reason for this difficulty is due to identification issues between the factor loadings and the unobserved factors. One easy-to-see identification issue is the sign of the loadings and the factors: an equivalent model to the one displayed below would result from reversing the signs of all factor loadings and the unobserved factor.\n", + "\n", + "Here, one of the easy-to-interpret implications in this model is the persistence of the unobserved factor: we find that exhibits substantial persistence." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(res.summary(separate_params=False))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Estimated factors\n", + "\n", + "While it can be useful to plot the unobserved factors, it is less useful here than one might think for two reasons:\n", + "\n", + "1. The sign-related identification issue described above.\n", + "2. Since the data was differenced, the estimated factor explains the variation in the differenced data, not the original data.\n", + "\n", + "It is for these reasons that the coincident index is created (see below).\n", + "\n", + "With these reservations, the unobserved factor is plotted below, along with the NBER indicators for US recessions. It appears that the factor is successful at picking up some degree of business cycle activity." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(13,3))\n", + "\n", + "# Plot the factor\n", + "dates = endog.index._mpl_repr()\n", + "ax.plot(dates, res.factors.filtered[0], label='Factor')\n", + "ax.legend()\n", + "\n", + "# Retrieve and also plot the NBER recession indicators\n", + "rec = DataReader('USREC', 'fred', start=start, end=end)\n", + "ylim = ax.get_ylim()\n", + "ax.fill_between(dates[:-3], ylim[0], ylim[1], rec.values[:-4,0], facecolor='k', alpha=0.1);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Post-estimation\n", + "\n", + "Although here we will be able to interpret the results of the model by constructing the coincident index, there is a useful and generic approach for getting a sense for what is being captured by the estimated factor. By taking the estimated factors as given, regressing them (and a constant) each (one at a time) on each of the observed variables, and recording the coefficients of determination ($R^2$ values), we can get a sense of the variables for which each factor explains a substantial portion of the variance and the variables for which it does not.\n", + "\n", + "In models with more variables and more factors, this can sometimes lend interpretation to the factors (for example sometimes one factor will load primarily on real variables and another on nominal variables).\n", + "\n", + "In this model, with only four endogenous variables and one factor, it is easy to digest a simple table of the $R^2$ values, but in larger models it is not. For this reason, a bar plot is often employed; from the plot we can easily see that the factor explains most of the variation in industrial production index and a large portion of the variation in sales and employment, it is less helpful in explaining income." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res.plot_coefficients_of_determination(figsize=(8,2));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Coincident Index\n", + "\n", + "As described above, the goal of this model was to create an interpretable series which could be used to understand the current status of the macroeconomy. This is what the coincident index is designed to do. It is constructed below. For readers interested in an explanation of the construction, see Kim and Nelson (1999) or Stock and Watson (1991).\n", + "\n", + "In essense, what is done is to reconstruct the mean of the (differenced) factor. We will compare it to the coincident index on published by the Federal Reserve Bank of Philadelphia (USPHCI on FRED)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "usphci = DataReader('USPHCI', 'fred', start='1979-01-01', end='2014-12-01')['USPHCI']\n", + "usphci.plot(figsize=(13,3));" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dusphci = usphci.diff()[1:].values\n", + "def compute_coincident_index(mod, res):\n", + " # Estimate W(1)\n", + " spec = res.specification\n", + " design = mod.ssm['design']\n", + " transition = mod.ssm['transition']\n", + " ss_kalman_gain = res.filter_results.kalman_gain[:,:,-1]\n", + " k_states = ss_kalman_gain.shape[0]\n", + "\n", + " W1 = np.linalg.inv(np.eye(k_states) - np.dot(\n", + " np.eye(k_states) - np.dot(ss_kalman_gain, design),\n", + " transition\n", + " )).dot(ss_kalman_gain)[0]\n", + "\n", + " # Compute the factor mean vector\n", + " factor_mean = np.dot(W1, dta.loc['1972-02-01':, 'dln_indprod':'dln_emp'].mean())\n", + " \n", + " # Normalize the factors\n", + " factor = res.factors.filtered[0]\n", + " factor *= np.std(usphci.diff()[1:]) / np.std(factor)\n", + "\n", + " # Compute the coincident index\n", + " coincident_index = np.zeros(mod.nobs+1)\n", + " # The initial value is arbitrary; here it is set to\n", + " # facilitate comparison\n", + " coincident_index[0] = usphci.iloc[0] * factor_mean / dusphci.mean()\n", + " for t in range(0, mod.nobs):\n", + " coincident_index[t+1] = coincident_index[t] + factor[t] + factor_mean\n", + " \n", + " # Attach dates\n", + " coincident_index = pd.Series(coincident_index, index=dta.index).iloc[1:]\n", + " \n", + " # Normalize to use the same base year as USPHCI\n", + " coincident_index *= (usphci.loc['1992-07-01'] / coincident_index.loc['1992-07-01'])\n", + " \n", + " return coincident_index" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Below we plot the calculated coincident index along with the US recessions and the comparison coincident index USPHCI." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(13,3))\n", + "\n", + "# Compute the index\n", + "coincident_index = compute_coincident_index(mod, res)\n", + "\n", + "# Plot the factor\n", + "dates = endog.index._mpl_repr()\n", + "ax.plot(dates, coincident_index, label='Coincident index')\n", + "ax.plot(usphci.index._mpl_repr(), usphci, label='USPHCI')\n", + "ax.legend(loc='lower right')\n", + "\n", + "# Retrieve and also plot the NBER recession indicators\n", + "ylim = ax.get_ylim()\n", + "ax.fill_between(dates[:-3], ylim[0], ylim[1], rec.values[:-4,0], facecolor='k', alpha=0.1);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Appendix 1: Extending the dynamic factor model\n", + "\n", + "Recall that the previous specification was described by:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_{i,t} & = \\lambda_i f_t + u_{i,t} \\\\\n", + "u_{i,t} & = c_{i,1} u_{1,t-1} + c_{i,2} u_{i,t-2} + \\varepsilon_{i,t} \\qquad & \\varepsilon_{i,t} \\sim N(0, \\sigma_i^2) \\\\\n", + "f_t & = a_1 f_{t-1} + a_2 f_{t-2} + \\eta_t \\qquad & \\eta_t \\sim N(0, I)\\\\\n", + "\\end{align}\n", + "$$\n", + "\n", + "Written in state space form, the previous specification of the model had the following observation equation:\n", + "\n", + "$$\n", + "\\begin{bmatrix}\n", + "y_{\\text{indprod}, t} \\\\\n", + "y_{\\text{income}, t} \\\\\n", + "y_{\\text{sales}, t} \\\\\n", + "y_{\\text{emp}, t} \\\\\n", + "\\end{bmatrix} = \\begin{bmatrix}\n", + "\\lambda_\\text{indprod} & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "\\lambda_\\text{income} & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "\\lambda_\\text{sales} & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "\\lambda_\\text{emp} & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\\\\n", + "\\end{bmatrix}\n", + "\\begin{bmatrix}\n", + "f_t \\\\\n", + "f_{t-1} \\\\\n", + "u_{\\text{indprod}, t} \\\\\n", + "u_{\\text{income}, t} \\\\\n", + "u_{\\text{sales}, t} \\\\\n", + "u_{\\text{emp}, t} \\\\\n", + "u_{\\text{indprod}, t-1} \\\\\n", + "u_{\\text{income}, t-1} \\\\\n", + "u_{\\text{sales}, t-1} \\\\\n", + "u_{\\text{emp}, t-1} \\\\\n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + "and transition equation:\n", + "\n", + "$$\n", + "\\begin{bmatrix}\n", + "f_t \\\\\n", + "f_{t-1} \\\\\n", + "u_{\\text{indprod}, t} \\\\\n", + "u_{\\text{income}, t} \\\\\n", + "u_{\\text{sales}, t} \\\\\n", + "u_{\\text{emp}, t} \\\\\n", + "u_{\\text{indprod}, t-1} \\\\\n", + "u_{\\text{income}, t-1} \\\\\n", + "u_{\\text{sales}, t-1} \\\\\n", + "u_{\\text{emp}, t-1} \\\\\n", + "\\end{bmatrix} = \\begin{bmatrix}\n", + "a_1 & a_2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "0 & 0 & c_{\\text{indprod}, 1} & 0 & 0 & 0 & c_{\\text{indprod}, 2} & 0 & 0 & 0 \\\\\n", + "0 & 0 & 0 & c_{\\text{income}, 1} & 0 & 0 & 0 & c_{\\text{income}, 2} & 0 & 0 \\\\\n", + "0 & 0 & 0 & 0 & c_{\\text{sales}, 1} & 0 & 0 & 0 & c_{\\text{sales}, 2} & 0 \\\\\n", + "0 & 0 & 0 & 0 & 0 & c_{\\text{emp}, 1} & 0 & 0 & 0 & c_{\\text{emp}, 2} \\\\\n", + "0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\\\\n", + "\\end{bmatrix} \n", + "\\begin{bmatrix}\n", + "f_{t-1} \\\\\n", + "f_{t-2} \\\\\n", + "u_{\\text{indprod}, t-1} \\\\\n", + "u_{\\text{income}, t-1} \\\\\n", + "u_{\\text{sales}, t-1} \\\\\n", + "u_{\\text{emp}, t-1} \\\\\n", + "u_{\\text{indprod}, t-2} \\\\\n", + "u_{\\text{income}, t-2} \\\\\n", + "u_{\\text{sales}, t-2} \\\\\n", + "u_{\\text{emp}, t-2} \\\\\n", + "\\end{bmatrix}\n", + "+ R \\begin{bmatrix}\n", + "\\eta_t \\\\\n", + "\\varepsilon_{t}\n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + "the `DynamicFactor` model handles setting up the state space representation and, in the `DynamicFactor.update` method, it fills in the fitted parameter values into the appropriate locations." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The extended specification is the same as in the previous example, except that we also want to allow employment to depend on lagged values of the factor. This creates a change to the $y_{\\text{emp},t}$ equation. Now we have:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_{i,t} & = \\lambda_i f_t + u_{i,t} \\qquad & i \\in \\{\\text{indprod}, \\text{income}, \\text{sales} \\}\\\\\n", + "y_{i,t} & = \\lambda_{i,0} f_t + \\lambda_{i,1} f_{t-1} + \\lambda_{i,2} f_{t-2} + \\lambda_{i,2} f_{t-3} + u_{i,t} \\qquad & i = \\text{emp} \\\\\n", + "u_{i,t} & = c_{i,1} u_{i,t-1} + c_{i,2} u_{i,t-2} + \\varepsilon_{i,t} \\qquad & \\varepsilon_{i,t} \\sim N(0, \\sigma_i^2) \\\\\n", + "f_t & = a_1 f_{t-1} + a_2 f_{t-2} + \\eta_t \\qquad & \\eta_t \\sim N(0, I)\\\\\n", + "\\end{align}\n", + "$$\n", + "\n", + "Now, the corresponding observation equation should look like the following:\n", + "\n", + "$$\n", + "\\begin{bmatrix}\n", + "y_{\\text{indprod}, t} \\\\\n", + "y_{\\text{income}, t} \\\\\n", + "y_{\\text{sales}, t} \\\\\n", + "y_{\\text{emp}, t} \\\\\n", + "\\end{bmatrix} = \\begin{bmatrix}\n", + "\\lambda_\\text{indprod} & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "\\lambda_\\text{income} & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "\\lambda_\\text{sales} & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "\\lambda_\\text{emp,1} & \\lambda_\\text{emp,2} & \\lambda_\\text{emp,3} & \\lambda_\\text{emp,4} & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\\\\n", + "\\end{bmatrix}\n", + "\\begin{bmatrix}\n", + "f_t \\\\\n", + "f_{t-1} \\\\\n", + "f_{t-2} \\\\\n", + "f_{t-3} \\\\\n", + "u_{\\text{indprod}, t} \\\\\n", + "u_{\\text{income}, t} \\\\\n", + "u_{\\text{sales}, t} \\\\\n", + "u_{\\text{emp}, t} \\\\\n", + "u_{\\text{indprod}, t-1} \\\\\n", + "u_{\\text{income}, t-1} \\\\\n", + "u_{\\text{sales}, t-1} \\\\\n", + "u_{\\text{emp}, t-1} \\\\\n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + "Notice that we have introduced two new state variables, $f_{t-2}$ and $f_{t-3}$, which means we need to update the transition equation:\n", + "\n", + "$$\n", + "\\begin{bmatrix}\n", + "f_t \\\\\n", + "f_{t-1} \\\\\n", + "f_{t-2} \\\\\n", + "f_{t-3} \\\\\n", + "u_{\\text{indprod}, t} \\\\\n", + "u_{\\text{income}, t} \\\\\n", + "u_{\\text{sales}, t} \\\\\n", + "u_{\\text{emp}, t} \\\\\n", + "u_{\\text{indprod}, t-1} \\\\\n", + "u_{\\text{income}, t-1} \\\\\n", + "u_{\\text{sales}, t-1} \\\\\n", + "u_{\\text{emp}, t-1} \\\\\n", + "\\end{bmatrix} = \\begin{bmatrix}\n", + "a_1 & a_2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "0 & 0 & 0 & 0 & c_{\\text{indprod}, 1} & 0 & 0 & 0 & c_{\\text{indprod}, 2} & 0 & 0 & 0 \\\\\n", + "0 & 0 & 0 & 0 & 0 & c_{\\text{income}, 1} & 0 & 0 & 0 & c_{\\text{income}, 2} & 0 & 0 \\\\\n", + "0 & 0 & 0 & 0 & 0 & 0 & c_{\\text{sales}, 1} & 0 & 0 & 0 & c_{\\text{sales}, 2} & 0 \\\\\n", + "0 & 0 & 0 & 0 & 0 & 0 & 0 & c_{\\text{emp}, 1} & 0 & 0 & 0 & c_{\\text{emp}, 2} \\\\\n", + "0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\\\\n", + "\\end{bmatrix} \n", + "\\begin{bmatrix}\n", + "f_{t-1} \\\\\n", + "f_{t-2} \\\\\n", + "f_{t-3} \\\\\n", + "f_{t-4} \\\\\n", + "u_{\\text{indprod}, t-1} \\\\\n", + "u_{\\text{income}, t-1} \\\\\n", + "u_{\\text{sales}, t-1} \\\\\n", + "u_{\\text{emp}, t-1} \\\\\n", + "u_{\\text{indprod}, t-2} \\\\\n", + "u_{\\text{income}, t-2} \\\\\n", + "u_{\\text{sales}, t-2} \\\\\n", + "u_{\\text{emp}, t-2} \\\\\n", + "\\end{bmatrix}\n", + "+ R \\begin{bmatrix}\n", + "\\eta_t \\\\\n", + "\\varepsilon_{t}\n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + "This model cannot be handled out-of-the-box by the `DynamicFactor` class, but it can be handled by creating a subclass when alters the state space representation in the appropriate way." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First, notice that if we had set `factor_order = 4`, we would almost have what we wanted. In that case, the last line of the observation equation would be:\n", + "\n", + "$$\n", + "\\begin{bmatrix}\n", + "\\vdots \\\\\n", + "y_{\\text{emp}, t} \\\\\n", + "\\end{bmatrix} = \\begin{bmatrix}\n", + "\\vdots & & & & & & & & & & & \\vdots \\\\\n", + "\\lambda_\\text{emp,1} & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\\\\n", + "\\end{bmatrix}\n", + "\\begin{bmatrix}\n", + "f_t \\\\\n", + "f_{t-1} \\\\\n", + "f_{t-2} \\\\\n", + "f_{t-3} \\\\\n", + "\\vdots\n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + "\n", + "and the first line of the transition equation would be:\n", + "\n", + "$$\n", + "\\begin{bmatrix}\n", + "f_t \\\\\n", + "\\vdots\n", + "\\end{bmatrix} = \\begin{bmatrix}\n", + "a_1 & a_2 & a_3 & a_4 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\\\\n", + "\\vdots & & & & & & & & & & & \\vdots \\\\\n", + "\\end{bmatrix} \n", + "\\begin{bmatrix}\n", + "f_{t-1} \\\\\n", + "f_{t-2} \\\\\n", + "f_{t-3} \\\\\n", + "f_{t-4} \\\\\n", + "\\vdots\n", + "\\end{bmatrix}\n", + "+ R \\begin{bmatrix}\n", + "\\eta_t \\\\\n", + "\\varepsilon_{t}\n", + "\\end{bmatrix}\n", + "$$\n", + "\n", + "Relative to what we want, we have the following differences:\n", + "\n", + "1. In the above situation, the $\\lambda_{\\text{emp}, j}$ are forced to be zero for $j > 0$, and we want them to be estimated as parameters.\n", + "2. We only want the factor to transition according to an AR(2), but under the above situation it is an AR(4).\n", + "\n", + "Our strategy will be to subclass `DynamicFactor`, and let it do most of the work (setting up the state space representation, etc.) where it assumes that `factor_order = 4`. The only things we will actually do in the subclass will be to fix those two issues.\n", + "\n", + "First, here is the full code of the subclass; it is discussed below. It is important to note at the outset that none of the methods defined below could have been omitted. In fact, the methods `__init__`, `start_params`, `param_names`, `transform_params`, `untransform_params`, and `update` form the core of all state space models in Statsmodels, not just the `DynamicFactor` class." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from statsmodels.tsa.statespace import tools\n", + "class ExtendedDFM(sm.tsa.DynamicFactor):\n", + " def __init__(self, endog, **kwargs):\n", + " # Setup the model as if we had a factor order of 4\n", + " super(ExtendedDFM, self).__init__(\n", + " endog, k_factors=1, factor_order=4, error_order=2,\n", + " **kwargs)\n", + "\n", + " # Note: `self.parameters` is an ordered dict with the\n", + " # keys corresponding to parameter types, and the values\n", + " # the number of parameters of that type.\n", + " # Add the new parameters\n", + " self.parameters['new_loadings'] = 3\n", + "\n", + " # Cache a slice for the location of the 4 factor AR\n", + " # parameters (a_1, ..., a_4) in the full parameter vector\n", + " offset = (self.parameters['factor_loadings'] +\n", + " self.parameters['exog'] +\n", + " self.parameters['error_cov'])\n", + " self._params_factor_ar = np.s_[offset:offset+2]\n", + " self._params_factor_zero = np.s_[offset+2:offset+4]\n", + "\n", + " @property\n", + " def start_params(self):\n", + " # Add three new loading parameters to the end of the parameter\n", + " # vector, initialized to zeros (for simplicity; they could\n", + " # be initialized any way you like)\n", + " return np.r_[super(ExtendedDFM, self).start_params, 0, 0, 0]\n", + " \n", + " @property\n", + " def param_names(self):\n", + " # Add the corresponding names for the new loading parameters\n", + " # (the name can be anything you like)\n", + " return super(ExtendedDFM, self).param_names + [\n", + " 'loading.L%d.f1.%s' % (i, self.endog_names[3]) for i in range(1,4)]\n", + "\n", + " def transform_params(self, unconstrained):\n", + " # Perform the typical DFM transformation (w/o the new parameters)\n", + " constrained = super(ExtendedDFM, self).transform_params(\n", + " unconstrained[:-3])\n", + "\n", + " # Redo the factor AR constraint, since we only want an AR(2),\n", + " # and the previous constraint was for an AR(4)\n", + " ar_params = unconstrained[self._params_factor_ar]\n", + " constrained[self._params_factor_ar] = (\n", + " tools.constrain_stationary_univariate(ar_params))\n", + "\n", + " # Return all the parameters\n", + " return np.r_[constrained, unconstrained[-3:]]\n", + "\n", + " def untransform_params(self, constrained):\n", + " # Perform the typical DFM untransformation (w/o the new parameters)\n", + " unconstrained = super(ExtendedDFM, self).untransform_params(\n", + " constrained[:-3])\n", + "\n", + " # Redo the factor AR unconstraint, since we only want an AR(2),\n", + " # and the previous unconstraint was for an AR(4)\n", + " ar_params = constrained[self._params_factor_ar]\n", + " unconstrained[self._params_factor_ar] = (\n", + " tools.unconstrain_stationary_univariate(ar_params))\n", + "\n", + " # Return all the parameters\n", + " return np.r_[unconstrained, constrained[-3:]]\n", + "\n", + " def update(self, params, transformed=True, complex_step=False):\n", + " # Peform the transformation, if required\n", + " if not transformed:\n", + " params = self.transform_params(params)\n", + " params[self._params_factor_zero] = 0\n", + " \n", + " # Now perform the usual DFM update, but exclude our new parameters\n", + " super(ExtendedDFM, self).update(params[:-3], transformed=True, complex_step=complex_step)\n", + "\n", + " # Finally, set our new parameters in the design matrix\n", + " self.ssm['design', 3, 1:4] = params[-3:]\n", + " " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "So what did we just do?\n", + "\n", + "#### `__init__`\n", + "\n", + "The important step here was specifying the base dynamic factor model which we were operating with. In particular, as described above, we initialize with `factor_order=4`, even though we will only end up with an AR(2) model for the factor. We also performed some general setup-related tasks.\n", + "\n", + "#### `start_params`\n", + "\n", + "`start_params` are used as initial values in the optimizer. Since we are adding three new parameters, we need to pass those in. If we hadn't done this, the optimizer would use the default starting values, which would be three elements short.\n", + "\n", + "#### `param_names`\n", + "\n", + "`param_names` are used in a variety of places, but especially in the results class. Below we get a full result summary, which is only possible when all the parameters have associated names.\n", + "\n", + "#### `transform_params` and `untransform_params`\n", + "\n", + "The optimizer selects possibly parameter values in an unconstrained way. That's not usually desired (since variances can't be negative, for example), and `transform_params` is used to transform the unconstrained values used by the optimizer to constrained values appropriate to the model. Variances terms are typically squared (to force them to be positive), and AR lag coefficients are often constrained to lead to a stationary model. `untransform_params` is used for the reverse operation (and is important because starting parameters are usually specified in terms of values appropriate to the model, and we need to convert them to parameters appropriate to the optimizer before we can begin the optimization routine).\n", + "\n", + "Even though we don't need to transform or untransform our new parameters (the loadings can in theory take on any values), we still need to modify this function for two reasons:\n", + "\n", + "1. The version in the `DynamicFactor` class is expecting 3 fewer parameters than we have now. At a minimum, we need to handle the three new parameters.\n", + "2. The version in the `DynamicFactor` class constrains the factor lag coefficients to be stationary as though it was an AR(4) model. Since we actually have an AR(2) model, we need to re-do the constraint. We also set the last two autoregressive coefficients to be zero here.\n", + "\n", + "#### `update`\n", + "\n", + "The most important reason we need to specify a new `update` method is because we have three new parameters that we need to place into the state space formulation. In particular we let the parent `DynamicFactor.update` class handle placing all the parameters except the three new ones in to the state space representation, and then we put the last three in manually." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Create the model\n", + "extended_mod = ExtendedDFM(endog)\n", + "initial_extended_res = extended_mod.fit(maxiter=1000, disp=False)\n", + "extended_res = extended_mod.fit(initial_extended_res.params, method='nm', maxiter=1000)\n", + "print(extended_res.summary(separate_params=False))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Although this model increases the likelihood, it is not preferred by the AIC and BIC mesaures which penalize the additional three parameters.\n", + "\n", + "Furthermore, the qualitative results are unchanged, as we can see from the updated $R^2$ chart and the new coincident index, both of which are practically identical to the previous results." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "extended_res.plot_coefficients_of_determination(figsize=(8,2));" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(13,3))\n", + "\n", + "# Compute the index\n", + "extended_coincident_index = compute_coincident_index(extended_mod, extended_res)\n", + "\n", + "# Plot the factor\n", + "dates = endog.index._mpl_repr()\n", + "ax.plot(dates, coincident_index, '-', linewidth=1, label='Basic model')\n", + "ax.plot(dates, extended_coincident_index, '--', linewidth=3, label='Extended model')\n", + "ax.plot(usphci.index._mpl_repr(), usphci, label='USPHCI')\n", + "ax.legend(loc='lower right')\n", + "ax.set(title='Coincident indices, comparison')\n", + "\n", + "# Retrieve and also plot the NBER recession indicators\n", + "ylim = ax.get_ylim()\n", + "ax.fill_between(dates[:-3], ylim[0], ylim[1], rec.values[:-4,0], facecolor='k', alpha=0.1);" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.6" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/statespace_local_linear_trend.ipynb b/examples/notebooks/statespace_local_linear_trend.ipynb new file mode 100644 index 0000000..3dbec16 --- /dev/null +++ b/examples/notebooks/statespace_local_linear_trend.ipynb @@ -0,0 +1,279 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# State space modeling: Local Linear Trends" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook describes how to extend the Statsmodels statespace classes to create and estimate a custom model. Here we develop a local linear trend model.\n", + "\n", + "The Local Linear Trend model has the form (see Durbin and Koopman 2012, Chapter 3.2 for all notation and details):\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_t & = \\mu_t + \\varepsilon_t \\qquad & \\varepsilon_t \\sim\n", + " N(0, \\sigma_\\varepsilon^2) \\\\\n", + "\\mu_{t+1} & = \\mu_t + \\nu_t + \\xi_t & \\xi_t \\sim N(0, \\sigma_\\xi^2) \\\\\n", + "\\nu_{t+1} & = \\nu_t + \\zeta_t & \\zeta_t \\sim N(0, \\sigma_\\zeta^2)\n", + "\\end{align}\n", + "$$\n", + "\n", + "It is easy to see that this can be cast into state space form as:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_t & = \\begin{pmatrix} 1 & 0 \\end{pmatrix} \\begin{pmatrix} \\mu_t \\\\ \\nu_t \\end{pmatrix} + \\varepsilon_t \\\\\n", + "\\begin{pmatrix} \\mu_{t+1} \\\\ \\nu_{t+1} \\end{pmatrix} & = \\begin{bmatrix} 1 & 1 \\\\ 0 & 1 \\end{bmatrix} \\begin{pmatrix} \\mu_t \\\\ \\nu_t \\end{pmatrix} + \\begin{pmatrix} \\xi_t \\\\ \\zeta_t \\end{pmatrix}\n", + "\\end{align}\n", + "$$\n", + "\n", + "Notice that much of the state space representation is composed of known values; in fact the only parts in which parameters to be estimated appear are in the variance / covariance matrices:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "H_t & = \\begin{bmatrix} \\sigma_\\varepsilon^2 \\end{bmatrix} \\\\\n", + "Q_t & = \\begin{bmatrix} \\sigma_\\xi^2 & 0 \\\\ 0 & \\sigma_\\zeta^2 \\end{bmatrix}\n", + "\\end{align}\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "from scipy.stats import norm\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To take advantage of the existing infrastructure, including Kalman filtering and maximum likelihood estimation, we create a new class which extends from `statsmodels.tsa.statespace.MLEModel`. There are a number of things that must be specified:\n", + "\n", + "1. **k_states**, **k_posdef**: These two parameters must be provided to the base classes in initialization. The inform the statespace model about the size of, respectively, the state vector, above $\\begin{pmatrix} \\mu_t & \\nu_t \\end{pmatrix}'$, and the state error vector, above $\\begin{pmatrix} \\xi_t & \\zeta_t \\end{pmatrix}'$. Note that the dimension of the endogenous vector does not have to be specified, since it can be inferred from the `endog` array.\n", + "2. **update**: The method `update`, with argument `params`, must be specified (it is used when `fit()` is called to calculate the MLE). It takes the parameters and fills them into the appropriate state space matrices. For example, below, the `params` vector contains variance parameters $\\begin{pmatrix} \\sigma_\\varepsilon^2 & \\sigma_\\xi^2 & \\sigma_\\zeta^2\\end{pmatrix}$, and the `update` method must place them in the observation and state covariance matrices. More generally, the parameter vector might be mapped into many different places in all of the statespace matrices.\n", + "3. **statespace matrices**: by default, all state space matrices (`obs_intercept, design, obs_cov, state_intercept, transition, selection, state_cov`) are set to zeros. Values that are fixed (like the ones in the design and transition matrices here) can be set in initialization, whereas values that vary with the parameters should be set in the `update` method. Note that it is easy to forget to set the selection matrix, which is often just the identity matrix (as it is here), but not setting it will lead to a very different model (one where there is not a stochastic component to the transition equation).\n", + "4. **start params**: start parameters must be set, even if it is just a vector of zeros, although often good start parameters can be found from the data. Maximum likelihood estimation by gradient methods (as employed here) can be sensitive to the starting parameters, so it is important to select good ones if possible. Here it does not matter too much (although as variances, they should't be set zero).\n", + "5. **initialization**: in addition to defined state space matrices, all state space models must be initialized with the mean and variance for the initial distribution of the state vector. If the distribution is known, `initialize_known(initial_state, initial_state_cov)` can be called, or if the model is stationary (e.g. an ARMA model), `initialize_stationary` can be used. Otherwise, `initialize_approximate_diffuse` is a reasonable generic initialization (exact diffuse initialization is not yet available). Since the local linear trend model is not stationary (it is composed of random walks) and since the distribution is not generally known, we use `initialize_approximate_diffuse` below.\n", + "\n", + "The above are the minimum necessary for a successful model. There are also a number of things that do not have to be set, but which may be helpful or important for some applications:\n", + "\n", + "1. **transform / untransform**: when `fit` is called, the optimizer in the background will use gradient methods to select the parameters that maximize the likelihood function. By default it uses unbounded optimization, which means that it may select any parameter value. In many cases, that is not the desired behavior; variances, for example, cannot be negative. To get around this, the `transform` method takes the unconstrained vector of parameters provided by the optimizer and returns a constrained vector of parameters used in likelihood evaluation. `untransform` provides the reverse operation.\n", + "2. **param_names**: this internal method can be used to set names for the estimated parameters so that e.g. the summary provides meaningful names. If not present, parameters are named `param0`, `param1`, etc." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "\"\"\"\n", + "Univariate Local Linear Trend Model\n", + "\"\"\"\n", + "class LocalLinearTrend(sm.tsa.statespace.MLEModel):\n", + " def __init__(self, endog):\n", + " # Model order\n", + " k_states = k_posdef = 2\n", + "\n", + " # Initialize the statespace\n", + " super(LocalLinearTrend, self).__init__(\n", + " endog, k_states=k_states, k_posdef=k_posdef,\n", + " initialization='approximate_diffuse',\n", + " loglikelihood_burn=k_states\n", + " )\n", + "\n", + " # Initialize the matrices\n", + " self.ssm['design'] = np.array([1, 0])\n", + " self.ssm['transition'] = np.array([[1, 1],\n", + " [0, 1]])\n", + " self.ssm['selection'] = np.eye(k_states)\n", + "\n", + " # Cache some indices\n", + " self._state_cov_idx = ('state_cov',) + np.diag_indices(k_posdef)\n", + "\n", + " @property\n", + " def param_names(self):\n", + " return ['sigma2.measurement', 'sigma2.level', 'sigma2.trend']\n", + "\n", + " @property\n", + " def start_params(self):\n", + " return [np.std(self.endog)]*3\n", + "\n", + " def transform_params(self, unconstrained):\n", + " return unconstrained**2\n", + "\n", + " def untransform_params(self, constrained):\n", + " return constrained**0.5\n", + "\n", + " def update(self, params, *args, **kwargs):\n", + " params = super(LocalLinearTrend, self).update(params, *args, **kwargs)\n", + " \n", + " # Observation covariance\n", + " self.ssm['obs_cov',0,0] = params[0]\n", + "\n", + " # State covariance\n", + " self.ssm[self._state_cov_idx] = params[1:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Using this simple model, we can estimate the parameters from a local linear trend model. The following example is from Commandeur and Koopman (2007), section 3.4., modeling motor vehicle fatalities in Finland." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import requests\n", + "from io import BytesIO\n", + "from zipfile import ZipFile\n", + " \n", + "# Download the dataset\n", + "ck = requests.get('http://staff.feweb.vu.nl/koopman/projects/ckbook/OxCodeAll.zip').content\n", + "zipped = ZipFile(BytesIO(ck))\n", + "df = pd.read_table(\n", + " BytesIO(zipped.read('OxCodeIntroStateSpaceBook/Chapter_2/NorwayFinland.txt')),\n", + " skiprows=1, header=None, sep='\\s+', engine='python',\n", + " names=['date','nf', 'ff']\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Since we defined the local linear trend model as extending from `MLEModel`, the `fit()` method is immediately available, just as in other Statsmodels maximum likelihood classes. Similarly, the returned results class supports many of the same post-estimation results, like the `summary` method.\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Load Dataset\n", + "df.index = pd.date_range(start='%d-01-01' % df.date[0], end='%d-01-01' % df.iloc[-1, 0], freq='AS')\n", + "\n", + "# Log transform\n", + "df['lff'] = np.log(df['ff'])\n", + "\n", + "# Setup the model\n", + "mod = LocalLinearTrend(df['lff'])\n", + "\n", + "# Fit it using MLE (recall that we are fitting the three variance parameters)\n", + "res = mod.fit(disp=False)\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, we can do post-estimation prediction and forecasting. Notice that the end period can be specified as a date." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Perform prediction and forecasting\n", + "predict = res.get_prediction()\n", + "forecast = res.get_forecast('2014')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(10,4))\n", + "\n", + "# Plot the results\n", + "df['lff'].plot(ax=ax, style='k.', label='Observations')\n", + "predict.predicted_mean.plot(ax=ax, label='One-step-ahead Prediction')\n", + "predict_ci = predict.conf_int(alpha=0.05)\n", + "predict_index = np.arange(len(predict_ci))\n", + "ax.fill_between(predict_index[2:], predict_ci.iloc[2:, 0], predict_ci.iloc[2:, 1], alpha=0.1)\n", + "\n", + "forecast.predicted_mean.plot(ax=ax, style='r', label='Forecast')\n", + "forecast_ci = forecast.conf_int()\n", + "forecast_index = np.arange(len(predict_ci), len(predict_ci) + len(forecast_ci))\n", + "ax.fill_between(forecast_index, forecast_ci.iloc[:, 0], forecast_ci.iloc[:, 1], alpha=0.1)\n", + "\n", + "# Cleanup the image\n", + "ax.set_ylim((4, 8));\n", + "legend = ax.legend(loc='lower left');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### References\n", + "\n", + " Commandeur, Jacques J. F., and Siem Jan Koopman. 2007.\n", + " An Introduction to State Space Time Series Analysis.\n", + " Oxford ; New York: Oxford University Press.\n", + "\n", + " Durbin, James, and Siem Jan Koopman. 2012.\n", + " Time Series Analysis by State Space Methods: Second Edition.\n", + " Oxford University Press." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/statespace_sarimax_internet.ipynb b/examples/notebooks/statespace_sarimax_internet.ipynb new file mode 100644 index 0000000..869cc84 --- /dev/null +++ b/examples/notebooks/statespace_sarimax_internet.ipynb @@ -0,0 +1,263 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# SARIMAX: Model selection, missing data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The example mirrors Durbin and Koopman (2012), Chapter 8.4 in application of Box-Jenkins methodology to fit ARMA models. The novel feature is the ability of the model to work on datasets with missing values." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "from scipy.stats import norm\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import requests\n", + "from io import BytesIO\n", + "from zipfile import ZipFile\n", + "\n", + "# Download the dataset\n", + "dk = requests.get('http://www.ssfpack.com/files/DK-data.zip').content\n", + "f = BytesIO(dk)\n", + "zipped = ZipFile(f)\n", + "df = pd.read_table(\n", + " BytesIO(zipped.read('internet.dat')),\n", + " skiprows=1, header=None, sep='\\s+', engine='python',\n", + " names=['internet','dinternet']\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Model Selection\n", + "\n", + "As in Durbin and Koopman, we force a number of the values to be missing." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Get the basic series\n", + "dta_full = df.dinternet[1:].values\n", + "dta_miss = dta_full.copy()\n", + "\n", + "# Remove datapoints\n", + "missing = np.r_[6,16,26,36,46,56,66,72,73,74,75,76,86,96]-1\n", + "dta_miss[missing] = np.nan" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we can consider model selection using the Akaike information criteria (AIC), but running the model for each variant and selecting the model with the lowest AIC value.\n", + "\n", + "There are a couple of things to note here:\n", + "\n", + "- When running such a large batch of models, particularly when the autoregressive and moving average orders become large, there is the possibility of poor maximum likelihood convergence. Below we ignore the warnings since this example is illustrative.\n", + "- We use the option `enforce_invertibility=False`, which allows the moving average polynomial to be non-invertible, so that more of the models are estimable.\n", + "- Several of the models do not produce good results, and their AIC value is set to NaN. This is not surprising, as Durbin and Koopman note numerical problems with the high order models." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import warnings\n", + "\n", + "aic_full = pd.DataFrame(np.zeros((6,6), dtype=float))\n", + "aic_miss = pd.DataFrame(np.zeros((6,6), dtype=float))\n", + "\n", + "warnings.simplefilter('ignore')\n", + "\n", + "# Iterate over all ARMA(p,q) models with p,q in [0,6]\n", + "for p in range(6):\n", + " for q in range(6):\n", + " if p == 0 and q == 0:\n", + " continue\n", + " \n", + " # Estimate the model with no missing datapoints\n", + " mod = sm.tsa.statespace.SARIMAX(dta_full, order=(p,0,q), enforce_invertibility=False)\n", + " try:\n", + " res = mod.fit(disp=False)\n", + " aic_full.iloc[p,q] = res.aic\n", + " except:\n", + " aic_full.iloc[p,q] = np.nan\n", + " \n", + " # Estimate the model with missing datapoints\n", + " mod = sm.tsa.statespace.SARIMAX(dta_miss, order=(p,0,q), enforce_invertibility=False)\n", + " try:\n", + " res = mod.fit(disp=False)\n", + " aic_miss.iloc[p,q] = res.aic\n", + " except:\n", + " aic_miss.iloc[p,q] = np.nan" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For the models estimated over the full (non-missing) dataset, the AIC chooses ARMA(1,1) or ARMA(3,0). Durbin and Koopman suggest the ARMA(1,1) specification is better due to parsimony.\n", + "\n", + "$$\n", + "\\text{Replication of:}\\\\\n", + "\\textbf{Table 8.1} ~~ \\text{AIC for different ARMA models.}\\\\\n", + "\\newcommand{\\r}[1]{{\\color{red}{#1}}}\n", + "\\begin{array}{lrrrrrr}\n", + "\\hline\n", + "q & 0 & 1 & 2 & 3 & 4 & 5 \\\\\n", + "\\hline\n", + "p & {} & {} & {} & {} & {} & {} \\\\\n", + "0 & 0.00 & 549.81 & 519.87 & 520.27 & 519.38 & 518.86 \\\\\n", + "1 & 529.24 & \\r{514.30} & 516.25 & 514.58 & 515.10 & 516.28 \\\\\n", + "2 & 522.18 & 516.29 & 517.16 & 515.77 & 513.24 & 514.73 \\\\\n", + "3 & \\r{511.99} & 513.94 & 515.92 & 512.06 & 513.72 & 514.50 \\\\\n", + "4 & 513.93 & 512.89 & nan & nan & 514.81 & 516.08 \\\\\n", + "5 & 515.86 & 517.64 & nan & nan & nan & nan \\\\\n", + "\\hline\n", + "\\end{array}\n", + "$$\n", + "\n", + "For the models estimated over missing dataset, the AIC chooses ARMA(1,1)\n", + "\n", + "$$\n", + "\\text{Replication of:}\\\\\n", + "\\textbf{Table 8.2} ~~ \\text{AIC for different ARMA models with missing observations.}\\\\\n", + "\\begin{array}{lrrrrrr}\n", + "\\hline\n", + "q & 0 & 1 & 2 & 3 & 4 & 5 \\\\\n", + "\\hline\n", + "p & {} & {} & {} & {} & {} & {} \\\\\n", + "0 & 0.00 & 488.93 & 464.01 & 463.86 & 462.63 & 463.62 \\\\\n", + "1 & 468.01 & \\r{457.54} & 459.35 & 458.66 & 459.15 & 461.01 \\\\\n", + "2 & 469.68 & nan & 460.48 & 459.43 & 459.23 & 460.47 \\\\\n", + "3 & 467.10 & 458.44 & 459.64 & 456.66 & 459.54 & 460.05 \\\\\n", + "4 & 469.00 & 459.52 & nan & 463.04 & 459.35 & 460.96 \\\\\n", + "5 & 471.32 & 461.26 & nan & nan & 461.00 & 462.97 \\\\\n", + "\\hline\n", + "\\end{array}\n", + "$$\n", + "\n", + "**Note**: the AIC values are calculated differently than in Durbin and Koopman, but show overall similar trends." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Postestimation\n", + "\n", + "Using the ARMA(1,1) specification selected above, we perform in-sample prediction and out-of-sample forecasting." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Statespace\n", + "mod = sm.tsa.statespace.SARIMAX(dta_miss, order=(1,0,1))\n", + "res = mod.fit(disp=False)\n", + "print(res.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# In-sample one-step-ahead predictions, and out-of-sample forecasts\n", + "nforecast = 20\n", + "predict = res.get_prediction(end=mod.nobs + nforecast)\n", + "idx = np.arange(len(predict.predicted_mean))\n", + "predict_ci = predict.conf_int(alpha=0.5)\n", + "\n", + "# Graph\n", + "fig, ax = plt.subplots(figsize=(12,6))\n", + "ax.xaxis.grid()\n", + "ax.plot(dta_miss, 'k.')\n", + "\n", + "# Plot\n", + "ax.plot(idx[:-nforecast], predict.predicted_mean[:-nforecast], 'gray')\n", + "ax.plot(idx[-nforecast:], predict.predicted_mean[-nforecast:], 'k--', linestyle='--', linewidth=2)\n", + "ax.fill_between(idx, predict_ci[:, 0], predict_ci[:, 1], alpha=0.15)\n", + "\n", + "ax.set(title='Figure 8.9 - Internet series');" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/statespace_sarimax_stata.ipynb b/examples/notebooks/statespace_sarimax_stata.ipynb new file mode 100644 index 0000000..3c49eb3 --- /dev/null +++ b/examples/notebooks/statespace_sarimax_stata.ipynb @@ -0,0 +1,621 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# SARIMAX: Introduction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook replicates examples from the Stata ARIMA time series estimation and postestimation documentation.\n", + "\n", + "First, we replicate the four estimation examples http://www.stata.com/manuals13/tsarima.pdf:\n", + "\n", + "1. ARIMA(1,1,1) model on the U.S. Wholesale Price Index (WPI) dataset.\n", + "2. Variation of example 1 which adds an MA(4) term to the ARIMA(1,1,1) specification to allow for an additive seasonal effect.\n", + "3. ARIMA(2,1,0) x (1,1,0,12) model of monthly airline data. This example allows a multiplicative seasonal effect.\n", + "4. ARMA(1,1) model with exogenous regressors; describes consumption as an autoregressive process on which also the money supply is assumed to be an explanatory variable.\n", + "\n", + "Second, we demonstrate postestimation capabilitites to replicate http://www.stata.com/manuals13/tsarimapostestimation.pdf. The model from example 4 is used to demonstrate:\n", + "\n", + "1. One-step-ahead in-sample prediction\n", + "2. n-step-ahead out-of-sample forecasting\n", + "3. n-step-ahead in-sample dynamic prediction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "from scipy.stats import norm\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt\n", + "from datetime import datetime\n", + "import requests\n", + "from io import BytesIO" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ARIMA Example 1: Arima\n", + "\n", + "As can be seen in the graphs from Example 2, the Wholesale price index (WPI) is growing over time (i.e. is not stationary). Therefore an ARMA model is not a good specification. In this first example, we consider a model where the original time series is assumed to be integrated of order 1, so that the difference is assumed to be stationary, and fit a model with one autoregressive lag and one moving average lag, as well as an intercept term.\n", + "\n", + "The postulated data process is then:\n", + "\n", + "$$\n", + "\\Delta y_t = c + \\phi_1 \\Delta y_{t-1} + \\theta_1 \\epsilon_{t-1} + \\epsilon_{t}\n", + "$$\n", + "\n", + "where $c$ is the intercept of the ARMA model, $\\Delta$ is the first-difference operator, and we assume $\\epsilon_{t} \\sim N(0, \\sigma^2)$. This can be rewritten to emphasize lag polynomials as (this will be useful in example 2, below):\n", + "\n", + "$$\n", + "(1 - \\phi_1 L ) \\Delta y_t = c + (1 + \\theta_1 L) \\epsilon_{t}\n", + "$$\n", + "\n", + "where $L$ is the lag operator.\n", + "\n", + "Notice that one difference between the Stata output and the output below is that Stata estimates the following model:\n", + "\n", + "$$\n", + "(\\Delta y_t - \\beta_0) = \\phi_1 ( \\Delta y_{t-1} - \\beta_0) + \\theta_1 \\epsilon_{t-1} + \\epsilon_{t}\n", + "$$\n", + "\n", + "where $\\beta_0$ is the mean of the process $y_t$. This model is equivalent to the one estimated in the Statsmodels SARIMAX class, but the interpretation is different. To see the equivalence, note that:\n", + "\n", + "$$\n", + "(\\Delta y_t - \\beta_0) = \\phi_1 ( \\Delta y_{t-1} - \\beta_0) + \\theta_1 \\epsilon_{t-1} + \\epsilon_{t} \\\\\n", + "\\Delta y_t = (1 - \\phi_1) \\beta_0 + \\phi_1 \\Delta y_{t-1} + \\theta_1 \\epsilon_{t-1} + \\epsilon_{t}\n", + "$$\n", + "\n", + "so that $c = (1 - \\phi_1) \\beta_0$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Dataset\n", + "wpi1 = requests.get('https://www.stata-press.com/data/r12/wpi1.dta').content\n", + "data = pd.read_stata(BytesIO(wpi1))\n", + "data.index = data.t\n", + "\n", + "# Fit the model\n", + "mod = sm.tsa.statespace.SARIMAX(data['wpi'], trend='c', order=(1,1,1))\n", + "res = mod.fit(disp=False)\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Thus the maximum likelihood estimates imply that for the process above, we have:\n", + "\n", + "$$\n", + "\\Delta y_t = 0.1050 + 0.8740 \\Delta y_{t-1} - 0.4206 \\epsilon_{t-1} + \\epsilon_{t}\n", + "$$\n", + "\n", + "where $\\epsilon_{t} \\sim N(0, 0.5226)$. Finally, recall that $c = (1 - \\phi_1) \\beta_0$, and here $c = 0.1050$ and $\\phi_1 = 0.8740$. To compare with the output from Stata, we could calculate the mean:\n", + "\n", + "$$\\beta_0 = \\frac{c}{1 - \\phi_1} = \\frac{0.1050}{1 - 0.8740} = 0.83$$\n", + "\n", + "**Note**: these values are slightly different from the values in the Stata documentation because the optimizer in Statsmodels has found parameters here that yield a higher likelihood. Nonetheless, they are very close." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ARIMA Example 2: Arima with additive seasonal effects\n", + "\n", + "This model is an extension of that from example 1. Here the data is assumed to follow the process:\n", + "\n", + "$$\n", + "\\Delta y_t = c + \\phi_1 \\Delta y_{t-1} + \\theta_1 \\epsilon_{t-1} + \\theta_4 \\epsilon_{t-4} + \\epsilon_{t}\n", + "$$\n", + "\n", + "The new part of this model is that there is allowed to be a annual seasonal effect (it is annual even though the periodicity is 4 because the dataset is quarterly). The second difference is that this model uses the log of the data rather than the level.\n", + "\n", + "Before estimating the dataset, graphs showing:\n", + "\n", + "1. The time series (in logs)\n", + "2. The first difference of the time series (in logs)\n", + "3. The autocorrelation function\n", + "4. The partial autocorrelation function.\n", + "\n", + "From the first two graphs, we note that the original time series does not appear to be stationary, whereas the first-difference does. This supports either estimating an ARMA model on the first-difference of the data, or estimating an ARIMA model with 1 order of integration (recall that we are taking the latter approach). The last two graphs support the use of an ARMA(1,1,1) model." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Dataset\n", + "data = pd.read_stata(BytesIO(wpi1))\n", + "data.index = data.t\n", + "data['ln_wpi'] = np.log(data['wpi'])\n", + "data['D.ln_wpi'] = data['ln_wpi'].diff()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Graph data\n", + "fig, axes = plt.subplots(1, 2, figsize=(15,4))\n", + "\n", + "# Levels\n", + "axes[0].plot(data.index._mpl_repr(), data['wpi'], '-')\n", + "axes[0].set(title='US Wholesale Price Index')\n", + "\n", + "# Log difference\n", + "axes[1].plot(data.index._mpl_repr(), data['D.ln_wpi'], '-')\n", + "axes[1].hlines(0, data.index[0], data.index[-1], 'r')\n", + "axes[1].set(title='US Wholesale Price Index - difference of logs');" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Graph data\n", + "fig, axes = plt.subplots(1, 2, figsize=(15,4))\n", + "\n", + "fig = sm.graphics.tsa.plot_acf(data.iloc[1:]['D.ln_wpi'], lags=40, ax=axes[0])\n", + "fig = sm.graphics.tsa.plot_pacf(data.iloc[1:]['D.ln_wpi'], lags=40, ax=axes[1])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To understand how to specify this model in Statsmodels, first recall that from example 1 we used the following code to specify the ARIMA(1,1,1) model:\n", + "\n", + "```python\n", + "mod = sm.tsa.statespace.SARIMAX(data['wpi'], trend='c', order=(1,1,1))\n", + "```\n", + "\n", + "The `order` argument is a tuple of the form `(AR specification, Integration order, MA specification)`. The integration order must be an integer (for example, here we assumed one order of integration, so it was specified as 1. In a pure ARMA model where the underlying data is already stationary, it would be 0).\n", + "\n", + "For the AR specification and MA specification components, there are two possiblities. The first is to specify the **maximum degree** of the corresponding lag polynomial, in which case the component is an integer. For example, if we wanted to specify an ARIMA(1,1,4) process, we would use:\n", + "\n", + "```python\n", + "mod = sm.tsa.statespace.SARIMAX(data['wpi'], trend='c', order=(1,1,4))\n", + "```\n", + "\n", + "and the corresponding data process would be:\n", + "\n", + "$$\n", + "y_t = c + \\phi_1 y_{t-1} + \\theta_1 \\epsilon_{t-1} + \\theta_2 \\epsilon_{t-2} + \\theta_3 \\epsilon_{t-3} + \\theta_4 \\epsilon_{t-4} + \\epsilon_{t}\n", + "$$\n", + "\n", + "or\n", + "\n", + "$$\n", + "(1 - \\phi_1 L)\\Delta y_t = c + (1 + \\theta_1 L + \\theta_2 L^2 + \\theta_3 L^3 + \\theta_4 L^4) \\epsilon_{t}\n", + "$$\n", + "\n", + "When the specification parameter is given as a maximum degree of the lag polynomial, it implies that all polynomial terms up to that degree are included. Notice that this is *not* the model we want to use, because it would include terms for $\\epsilon_{t-2}$ and $\\epsilon_{t-3}$, which we don't want here.\n", + "\n", + "What we want is a polynomial that has terms for the 1st and 4th degrees, but leaves out the 2nd and 3rd terms. To do that, we need to provide a tuple for the specifiation parameter, where the tuple describes **the lag polynomial itself**. In particular, here we would want to use:\n", + "\n", + "```python\n", + "ar = 1 # this is the maximum degree specification\n", + "ma = (1,0,0,1) # this is the lag polynomial specification\n", + "mod = sm.tsa.statespace.SARIMAX(data['wpi'], trend='c', order=(ar,1,ma)))\n", + "```\n", + "\n", + "This gives the following form for the process of the data:\n", + "\n", + "$$\n", + "\\Delta y_t = c + \\phi_1 \\Delta y_{t-1} + \\theta_1 \\epsilon_{t-1} + \\theta_4 \\epsilon_{t-4} + \\epsilon_{t} \\\\\n", + "(1 - \\phi_1 L)\\Delta y_t = c + (1 + \\theta_1 L + \\theta_4 L^4) \\epsilon_{t}\n", + "$$\n", + "\n", + "which is what we want." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Fit the model\n", + "mod = sm.tsa.statespace.SARIMAX(data['ln_wpi'], trend='c', order=(1,1,1))\n", + "res = mod.fit(disp=False)\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ARIMA Example 3: Airline Model\n", + "\n", + "In the previous example, we included a seasonal effect in an *additive* way, meaning that we added a term allowing the process to depend on the 4th MA lag. It may be instead that we want to model a seasonal effect in a multiplicative way. We often write the model then as an ARIMA $(p,d,q) \\times (P,D,Q)_s$, where the lowercast letters indicate the specification for the non-seasonal component, and the uppercase letters indicate the specification for the seasonal component; $s$ is the periodicity of the seasons (e.g. it is often 4 for quarterly data or 12 for monthly data). The data process can be written generically as:\n", + "\n", + "$$\n", + "\\phi_p (L) \\tilde \\phi_P (L^s) \\Delta^d \\Delta_s^D y_t = A(t) + \\theta_q (L) \\tilde \\theta_Q (L^s) \\epsilon_t\n", + "$$\n", + "\n", + "where:\n", + "\n", + "- $\\phi_p (L)$ is the non-seasonal autoregressive lag polynomial\n", + "- $\\tilde \\phi_P (L^s)$ is the seasonal autoregressive lag polynomial\n", + "- $\\Delta^d \\Delta_s^D y_t$ is the time series, differenced $d$ times, and seasonally differenced $D$ times.\n", + "- $A(t)$ is the trend polynomial (including the intercept)\n", + "- $\\theta_q (L)$ is the non-seasonal moving average lag polynomial\n", + "- $\\tilde \\theta_Q (L^s)$ is the seasonal moving average lag polynomial\n", + "\n", + "sometimes we rewrite this as:\n", + "\n", + "$$\n", + "\\phi_p (L) \\tilde \\phi_P (L^s) y_t^* = A(t) + \\theta_q (L) \\tilde \\theta_Q (L^s) \\epsilon_t\n", + "$$\n", + "\n", + "where $y_t^* = \\Delta^d \\Delta_s^D y_t$. This emphasizes that just as in the simple case, after we take differences (here both non-seasonal and seasonal) to make the data stationary, the resulting model is just an ARMA model.\n", + "\n", + "As an example, consider the airline model ARIMA $(2,1,0) \\times (1,1,0)_{12}$, with an intercept. The data process can be written in the form above as:\n", + "\n", + "$$\n", + "(1 - \\phi_1 L - \\phi_2 L^2) (1 - \\tilde \\phi_1 L^{12}) \\Delta \\Delta_{12} y_t = c + \\epsilon_t\n", + "$$\n", + "\n", + "Here, we have:\n", + "\n", + "- $\\phi_p (L) = (1 - \\phi_1 L - \\phi_2 L^2)$\n", + "- $\\tilde \\phi_P (L^s) = (1 - \\phi_1 L^12)$\n", + "- $d = 1, D = 1, s=12$ indicating that $y_t^*$ is derived from $y_t$ by taking first-differences and then taking 12-th differences.\n", + "- $A(t) = c$ is the *constant* trend polynomial (i.e. just an intercept)\n", + "- $\\theta_q (L) = \\tilde \\theta_Q (L^s) = 1$ (i.e. there is no moving average effect)\n", + "\n", + "It may still be confusing to see the two lag polynomials in front of the time-series variable, but notice that we can multiply the lag polynomials together to get the following model:\n", + "\n", + "$$\n", + "(1 - \\phi_1 L - \\phi_2 L^2 - \\tilde \\phi_1 L^{12} + \\phi_1 \\tilde \\phi_1 L^{13} + \\phi_2 \\tilde \\phi_1 L^{14} ) y_t^* = c + \\epsilon_t\n", + "$$\n", + "\n", + "which can be rewritten as:\n", + "\n", + "$$\n", + "y_t^* = c + \\phi_1 y_{t-1}^* + \\phi_2 y_{t-2}^* + \\tilde \\phi_1 y_{t-12}^* - \\phi_1 \\tilde \\phi_1 y_{t-13}^* - \\phi_2 \\tilde \\phi_1 y_{t-14}^* + \\epsilon_t\n", + "$$\n", + "\n", + "This is similar to the additively seasonal model from example 2, but the coefficients in front of the autoregressive lags are actually combinations of the underlying seasonal and non-seasonal parameters.\n", + "\n", + "Specifying the model in Statsmodels is done simply by adding the `seasonal_order` argument, which accepts a tuple of the form `(Seasonal AR specification, Seasonal Integration order, Seasonal MA, Seasonal periodicity)`. The seasonal AR and MA specifications, as before, can be expressed as a maximum polynomial degree or as the lag polynomial itself. Seasonal periodicity is an integer.\n", + "\n", + "For the airline model ARIMA $(2,1,0) \\times (1,1,0)_{12}$ with an intercept, the command is:\n", + "\n", + "```python\n", + "mod = sm.tsa.statespace.SARIMAX(data['lnair'], order=(2,1,0), seasonal_order=(1,1,0,12))\n", + "```" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Dataset\n", + "air2 = requests.get('https://www.stata-press.com/data/r12/air2.dta').content\n", + "data = pd.read_stata(BytesIO(air2))\n", + "data.index = pd.date_range(start=datetime(data.time[0], 1, 1), periods=len(data), freq='MS')\n", + "data['lnair'] = np.log(data['air'])\n", + "\n", + "# Fit the model\n", + "mod = sm.tsa.statespace.SARIMAX(data['lnair'], order=(2,1,0), seasonal_order=(1,1,0,12), simple_differencing=True)\n", + "res = mod.fit(disp=False)\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Notice that here we used an additional argument `simple_differencing=True`. This controls how the order of integration is handled in ARIMA models. If `simple_differencing=True`, then the time series provided as `endog` is literatlly differenced and an ARMA model is fit to the resulting new time series. This implies that a number of initial periods are lost to the differencing process, however it may be necessary either to compare results to other packages (e.g. Stata's `arima` always uses simple differencing) or if the seasonal periodicity is large.\n", + "\n", + "The default is `simple_differencing=False`, in which case the integration component is implemented as part of the state space formulation, and all of the original data can be used in estimation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ARIMA Example 4: ARMAX (Friedman)\n", + "\n", + "This model demonstrates the use of explanatory variables (the X part of ARMAX). When exogenous regressors are included, the SARIMAX module uses the concept of \"regression with SARIMA errors\" (see http://robjhyndman.com/hyndsight/arimax/ for details of regression with ARIMA errors versus alternative specifications), so that the model is specified as:\n", + "\n", + "$$\n", + "y_t = \\beta_t x_t + u_t \\\\\n", + " \\phi_p (L) \\tilde \\phi_P (L^s) \\Delta^d \\Delta_s^D u_t = A(t) +\n", + " \\theta_q (L) \\tilde \\theta_Q (L^s) \\epsilon_t\n", + "$$\n", + "\n", + "Notice that the first equation is just a linear regression, and the second equation just describes the process followed by the error component as SARIMA (as was described in example 3). One reason for this specification is that the estimated parameters have their natural interpretations.\n", + "\n", + "This specification nests many simpler specifications. For example, regression with AR(2) errors is:\n", + "\n", + "$$\n", + "y_t = \\beta_t x_t + u_t \\\\\n", + "(1 - \\phi_1 L - \\phi_2 L^2) u_t = A(t) + \\epsilon_t\n", + "$$\n", + "\n", + "The model considered in this example is regression with ARMA(1,1) errors. The process is then written:\n", + "\n", + "$$\n", + "\\text{consump}_t = \\beta_0 + \\beta_1 \\text{m2}_t + u_t \\\\\n", + "(1 - \\phi_1 L) u_t = (1 - \\theta_1 L) \\epsilon_t\n", + "$$\n", + "\n", + "Notice that $\\beta_0$ is, as described in example 1 above, *not* the same thing as an intercept specified by `trend='c'`. Whereas in the examples above we estimated the intercept of the model via the trend polynomial, here, we demonstrate how to estimate $\\beta_0$ itself by adding a constant to the exogenous dataset. In the output, the $beta_0$ is called `const`, whereas above the intercept $c$ was called `intercept` in the output." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Dataset\n", + "friedman2 = requests.get('https://www.stata-press.com/data/r12/friedman2.dta').content\n", + "data = pd.read_stata(BytesIO(friedman2))\n", + "data.index = data.time\n", + "\n", + "# Variables\n", + "endog = data.loc['1959':'1981', 'consump']\n", + "exog = sm.add_constant(data.loc['1959':'1981', 'm2'])\n", + "\n", + "# Fit the model\n", + "mod = sm.tsa.statespace.SARIMAX(endog, exog, order=(1,0,1))\n", + "res = mod.fit(disp=False)\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### ARIMA Postestimation: Example 1 - Dynamic Forecasting\n", + "\n", + "Here we describe some of the post-estimation capabilities of Statsmodels' SARIMAX.\n", + "\n", + "First, using the model from example, we estimate the parameters using data that *excludes the last few observations* (this is a little artificial as an example, but it allows considering performance of out-of-sample forecasting and facilitates comparison to Stata's documentation)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Dataset\n", + "raw = pd.read_stata(BytesIO(friedman2))\n", + "raw.index = raw.time\n", + "data = raw.loc[:'1981']\n", + "\n", + "# Variables\n", + "endog = data.loc['1959':, 'consump']\n", + "exog = sm.add_constant(data.loc['1959':, 'm2'])\n", + "nobs = endog.shape[0]\n", + "\n", + "# Fit the model\n", + "mod = sm.tsa.statespace.SARIMAX(endog.loc[:'1978-01-01'], exog=exog.loc[:'1978-01-01'], order=(1,0,1))\n", + "fit_res = mod.fit(disp=False)\n", + "print(fit_res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Next, we want to get results for the full dataset but using the estimated parameters (on a subset of the data)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mod = sm.tsa.statespace.SARIMAX(endog, exog=exog, order=(1,0,1))\n", + "res = mod.filter(fit_res.params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The `predict` command is first applied here to get in-sample predictions. We use the `full_results=True` argument to allow us to calculate confidence intervals (the default output of `predict` is just the predicted values).\n", + "\n", + "With no other arguments, `predict` returns the one-step-ahead in-sample predictions for the entire sample." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# In-sample one-step-ahead predictions\n", + "predict = res.get_prediction()\n", + "predict_ci = predict.conf_int()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can also get *dynamic predictions*. One-step-ahead prediction uses the true values of the endogenous values at each step to predict the next in-sample value. Dynamic predictions use one-step-ahead prediction up to some point in the dataset (specified by the `dynamic` argument); after that, the previous *predicted* endogenous values are used in place of the true endogenous values for each new predicted element.\n", + "\n", + "The `dynamic` argument is specified to be an *offset* relative to the `start` argument. If `start` is not specified, it is assumed to be `0`.\n", + "\n", + "Here we perform dynamic prediction starting in the first quarter of 1978." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Dynamic predictions\n", + "predict_dy = res.get_prediction(dynamic='1978-01-01')\n", + "predict_dy_ci = predict_dy.conf_int()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can graph the one-step-ahead and dynamic predictions (and the corresponding confidence intervals) to see their relative performance. Notice that up to the point where dynamic prediction begins (1978:Q1), the two are the same." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Graph\n", + "fig, ax = plt.subplots(figsize=(9,4))\n", + "npre = 4\n", + "ax.set(title='Personal consumption', xlabel='Date', ylabel='Billions of dollars')\n", + "\n", + "# Plot data points\n", + "data.loc['1977-07-01':, 'consump'].plot(ax=ax, style='o', label='Observed')\n", + "\n", + "# Plot predictions\n", + "predict.predicted_mean.loc['1977-07-01':].plot(ax=ax, style='r--', label='One-step-ahead forecast')\n", + "ci = predict_ci.loc['1977-07-01':]\n", + "ax.fill_between(ci.index, ci.iloc[:,0], ci.iloc[:,1], color='r', alpha=0.1)\n", + "predict_dy.predicted_mean.loc['1977-07-01':].plot(ax=ax, style='g', label='Dynamic forecast (1978)')\n", + "ci = predict_dy_ci.loc['1977-07-01':]\n", + "ax.fill_between(ci.index, ci.iloc[:,0], ci.iloc[:,1], color='g', alpha=0.1)\n", + "\n", + "legend = ax.legend(loc='lower right')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, graph the prediction *error*. It is obvious that, as one would suspect, one-step-ahead prediction is considerably better." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Prediction error\n", + "\n", + "# Graph\n", + "fig, ax = plt.subplots(figsize=(9,4))\n", + "npre = 4\n", + "ax.set(title='Forecast error', xlabel='Date', ylabel='Forecast - Actual')\n", + "\n", + "# In-sample one-step-ahead predictions and 95% confidence intervals\n", + "predict_error = predict.predicted_mean - endog\n", + "predict_error.loc['1977-10-01':].plot(ax=ax, label='One-step-ahead forecast')\n", + "ci = predict_ci.loc['1977-10-01':].copy()\n", + "ci.iloc[:,0] -= endog.loc['1977-10-01':]\n", + "ci.iloc[:,1] -= endog.loc['1977-10-01':]\n", + "ax.fill_between(ci.index, ci.iloc[:,0], ci.iloc[:,1], alpha=0.1)\n", + "\n", + "# Dynamic predictions and 95% confidence intervals\n", + "predict_dy_error = predict_dy.predicted_mean - endog\n", + "predict_dy_error.loc['1977-10-01':].plot(ax=ax, style='r', label='Dynamic forecast (1978)')\n", + "ci = predict_dy_ci.loc['1977-10-01':].copy()\n", + "ci.iloc[:,0] -= endog.loc['1977-10-01':]\n", + "ci.iloc[:,1] -= endog.loc['1977-10-01':]\n", + "ax.fill_between(ci.index, ci.iloc[:,0], ci.iloc[:,1], color='r', alpha=0.1)\n", + "\n", + "legend = ax.legend(loc='lower left');\n", + "legend.get_frame().set_facecolor('w')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/statespace_seasonal.ipynb b/examples/notebooks/statespace_seasonal.ipynb new file mode 100644 index 0000000..215b149 --- /dev/null +++ b/examples/notebooks/statespace_seasonal.ipynb @@ -0,0 +1,439 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Seasonality in time series data\n", + "\n", + "Consider the problem of modeling time series data with multiple seasonal components with different perioidicities. Let us take the time series $y_t$ and decompose it explicitly to have a level component and two seasonal components.\n", + "\n", + "$$\n", + "y_t = \\mu_t + \\gamma^{(1)}_t + \\gamma^{(2)}_t\n", + "$$\n", + "\n", + "where $\\mu_t$ represents the trend or level, $\\gamma^{(1)}_t$ represents a seasonal component with a relatively short period, and $\\gamma^{(2)}_t$ represents another seasonal component of longer period. We will have a fixed intercept term for our level and consider both $\\gamma^{(2)}_t$ and $\\gamma^{(2)}_t$ to be stochastic so that the seasonal patterns can vary over time.\n", + "\n", + "In this notebook, we will generate synthetic data conforming to this model and showcase modeling of the seasonal terms in a few different ways under the unobserved components modeling framework." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib notebook" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Synthetic data creation\n", + "\n", + "We will create data with multiple seasonal patterns by following equations (3.7) and (3.8) in Durbin and Koopman (2012). We will simulate 300 periods and two seasonal terms parameterized in the frequency domain having periods 10 and 100, respectively, and 3 and 2 number of harmonics, respectively. Further, the variances of their stochastic parts are 4 and 9, respecively." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# First we'll simulate the synthetic data\n", + "def simulate_seasonal_term(periodicity, total_cycles, noise_std=1.,\n", + " harmonics=None):\n", + " duration = periodicity * total_cycles\n", + " assert duration == int(duration)\n", + " duration = int(duration)\n", + " harmonics = harmonics if harmonics else int(np.floor(periodicity / 2))\n", + "\n", + " lambda_p = 2 * np.pi / float(periodicity)\n", + "\n", + " gamma_jt = noise_std * np.random.randn((harmonics))\n", + " gamma_star_jt = noise_std * np.random.randn((harmonics))\n", + "\n", + " total_timesteps = 100 * duration # Pad for burn in\n", + " series = np.zeros(total_timesteps) \n", + " for t in range(total_timesteps):\n", + " gamma_jtp1 = np.zeros_like(gamma_jt)\n", + " gamma_star_jtp1 = np.zeros_like(gamma_star_jt)\n", + " for j in range(1, harmonics + 1):\n", + " cos_j = np.cos(lambda_p * j)\n", + " sin_j = np.sin(lambda_p * j)\n", + " gamma_jtp1[j - 1] = (gamma_jt[j - 1] * cos_j\n", + " + gamma_star_jt[j - 1] * sin_j\n", + " + noise_std * np.random.randn())\n", + " gamma_star_jtp1[j - 1] = (- gamma_jt[j - 1] * sin_j\n", + " + gamma_star_jt[j - 1] * cos_j\n", + " + noise_std * np.random.randn())\n", + " series[t] = np.sum(gamma_jtp1)\n", + " gamma_jt = gamma_jtp1\n", + " gamma_star_jt = gamma_star_jtp1\n", + " wanted_series = series[-duration:] # Discard burn in\n", + "\n", + " return wanted_series" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "duration = 100 * 3\n", + "periodicities = [10, 100]\n", + "num_harmonics = [3, 2]\n", + "std = np.array([2, 3])\n", + "np.random.seed(8678309)\n", + "\n", + "terms = []\n", + "for ix, _ in enumerate(periodicities):\n", + " s = simulate_seasonal_term(\n", + " periodicities[ix],\n", + " duration / periodicities[ix],\n", + " harmonics=num_harmonics[ix],\n", + " noise_std=std[ix])\n", + " terms.append(s)\n", + "terms.append(np.ones_like(terms[0]) * 10.)\n", + "series = pd.Series(np.sum(terms, axis=0))\n", + "df = pd.DataFrame(data={'total': series,\n", + " '10(3)': terms[0],\n", + " '100(2)': terms[1],\n", + " 'level':terms[2]})\n", + "h1, = plt.plot(df['total'])\n", + "h2, = plt.plot(df['10(3)'])\n", + "h3, = plt.plot(df['100(2)'])\n", + "h4, = plt.plot(df['level'])\n", + "plt.legend(['total','10(3)','100(2)', 'level'])\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Unobserved components (frequency domain modeling)\n", + "\n", + "The next method is an unobserved components model, where the trend is modeled as a fixed intercept and the seasonal components are modeled using trigonometric functions with primary periodicities of 10 and 100, respectively, and number of harmonics 3 and 2, respecively. Note that this is the correct, generating model. The process for the time series can be written as:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_t & = \\mu_t + \\gamma^{(1)}_t + \\gamma^{(2)}_t + \\epsilon_t\\\\\n", + "\\mu_{t+1} & = \\mu_t \\\\\n", + "\\gamma^{(1)}_{t} &= \\sum_{j=1}^2 \\gamma^{(1)}_{j, t} \\\\\n", + "\\gamma^{(2)}_{t} &= \\sum_{j=1}^3 \\gamma^{(2)}_{j, t}\\\\\n", + "\\gamma^{(1)}_{j, t+1} &= \\gamma^{(1)}_{j, t}\\cos(\\lambda_j) + \\gamma^{*, (1)}_{j, t}\\sin(\\lambda_j) + \\omega^{(1)}_{j,t}, ~j = 1, 2, 3\\\\\n", + "\\gamma^{*, (1)}_{j, t+1} &= -\\gamma^{(1)}_{j, t}\\sin(\\lambda_j) + \\gamma^{*, (1)}_{j, t}\\cos(\\lambda_j) + \\omega^{*, (1)}_{j, t}, ~j = 1, 2, 3\\\\\n", + "\\gamma^{(2)}_{j, t+1} &= \\gamma^{(2)}_{j, t}\\cos(\\lambda_j) + \\gamma^{*, (2)}_{j, t}\\sin(\\lambda_j) + \\omega^{(2)}_{j,t}, ~j = 1, 2\\\\\n", + "\\gamma^{*, (2)}_{j, t+1} &= -\\gamma^{(2)}_{j, t}\\sin(\\lambda_j) + \\gamma^{*, (2)}_{j, t}\\cos(\\lambda_j) + \\omega^{*, (2)}_{j, t}, ~j = 1, 2\\\\\n", + "\\end{align}\n", + "$$\n", + "$$\n", + "\n", + "where $\\epsilon_t$ is white noise, $\\omega^{(1)}_{j,t}$ are i.i.d. $N(0, \\sigma^2_1)$, and $\\omega^{(2)}_{j,t}$ are i.i.d. $N(0, \\sigma^2_2)$, where $\\sigma_1 = 2.$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": false + }, + "outputs": [], + "source": [ + "model = sm.tsa.UnobservedComponents(series.values, \n", + " level='fixed intercept', \n", + " freq_seasonal=[{'period': 10,\n", + " 'harmonics': 3},\n", + " {'period': 100,\n", + " 'harmonics': 2}])\n", + "res_f = model.fit(disp=False)\n", + "print(res_f.summary())\n", + "# The first state variable holds our estimate of the intercept\n", + "print(\"fixed intercept estimated as {0:.3f}\".format(res_f.smoother_results.smoothed_state[0,-1:][0]))\n", + "\n", + "res_f.plot_components()\n", + "plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model.ssm.transition[:, :, 0]" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "collapsed": true + }, + "source": [ + "Observe that the fitted variances are pretty close to the true variances of 4 and 9. Further, the individual seasonal components look pretty close to the true seasonal components. The smoothed level term is kind of close to the true level of 10. Finally, our diagnostics look solid; the test statistics are small enough to fail to reject our three tests." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Unobserved components (mixed time and frequency domain modeling)\n", + "\n", + "The second method is an unobserved components model, where the trend is modeled as a fixed intercept and the seasonal components are modeled using 10 constants summing to 0 and trigonometric functions with a primary periodicities of 100 with 2 harmonics total. Note that this isn't the generating model, as it presupposes that there are more state errors for the shorter seasonal component than in reality. The process for the time series can be written as:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_t & = \\mu_t + \\gamma^{(1)}_t + \\gamma^{(2)}_t + \\epsilon_t\\\\\n", + "\\mu_{t+1} & = \\mu_t \\\\\n", + "\\gamma^{(1)}_{t + 1} &= - \\sum_{j=1}^9 \\gamma^{(1)}_{t + 1 - j} + \\omega^{(1)}_t\\\\\n", + "\\gamma^{(2)}_{j, t+1} &= \\gamma^{(2)}_{j, t}\\cos(\\lambda_j) + \\gamma^{*, (2)}_{j, t}\\sin(\\lambda_j) + \\omega^{(2)}_{j,t}, ~j = 1, 2\\\\\n", + "\\gamma^{*, (2)}_{j, t+1} &= -\\gamma^{(2)}_{j, t}\\sin(\\lambda_j) + \\gamma^{*, (2)}_{j, t}\\cos(\\lambda_j) + \\omega^{*, (2)}_{j, t}, ~j = 1, 2\\\\\n", + "\\end{align}\n", + "$$\n", + "\n", + "where $\\epsilon_t$ is white noise, $\\omega^{(1)}_{t}$ are i.i.d. $N(0, \\sigma^2_1)$, and $\\omega^{(2)}_{j,t}$ are i.i.d. $N(0, \\sigma^2_2)$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model = sm.tsa.UnobservedComponents(series, \n", + " level='fixed intercept', \n", + " seasonal=10,\n", + " freq_seasonal=[{'period': 100,\n", + " 'harmonics': 2}])\n", + "res_tf = model.fit(disp=False)\n", + "print(res_tf.summary())\n", + "# The first state variable holds our estimate of the intercept\n", + "print(\"fixed intercept estimated as {0:.3f}\".format(res_tf.smoother_results.smoothed_state[0,-1:][0]))\n", + "\n", + "res_tf.plot_components()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The plotted components look good. However, the estimated variance of the second seasonal term is inflated from reality. Additionally, we reject the Ljung-Box statistic, indicating we may have remaining autocorrelation after accounting for our components." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Unobserved components (lazy frequency domain modeling)\n", + "\n", + "The third method is an unobserved components model with a fixed intercept and one seasonal component, which is modeled using trigonometric functions with primary periodicity 100 and 50 harmonics. Note that this isn't the generating model, as it presupposes that there are more harmonics then in reality. Because the variances are tied together, we are not able to drive the estimated covariance of the non-existent harmonics to 0. What is lazy about this model specification is that we have not bothered to specify the two different seasonal components and instead chosen to model them using a single component with enough harmonics to cover both. We will not be able to capture any differences in variances between the two true components. The process for the time series can be written as:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_t & = \\mu_t + \\gamma^{(1)}_t + \\epsilon_t\\\\\n", + "\\mu_{t+1} &= \\mu_t\\\\\n", + "\\gamma^{(1)}_{t} &= \\sum_{j=1}^{50}\\gamma^{(1)}_{j, t}\\\\\n", + "\\gamma^{(1)}_{j, t+1} &= \\gamma^{(1)}_{j, t}\\cos(\\lambda_j) + \\gamma^{*, (1)}_{j, t}\\sin(\\lambda_j) + \\omega^{(1}_{j,t}, ~j = 1, 2, \\dots, 50\\\\\n", + "\\gamma^{*, (1)}_{j, t+1} &= -\\gamma^{(1)}_{j, t}\\sin(\\lambda_j) + \\gamma^{*, (1)}_{j, t}\\cos(\\lambda_j) + \\omega^{*, (1)}_{j, t}, ~j = 1, 2, \\dots, 50\\\\\n", + "\\end{align}\n", + "$$\n", + "\n", + "where $\\epsilon_t$ is white noise, $\\omega^{(1)}_{t}$ are i.i.d. $N(0, \\sigma^2_1)$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model = sm.tsa.UnobservedComponents(series, \n", + " level='fixed intercept', \n", + " freq_seasonal=[{'period': 100}])\n", + "res_lf = model.fit(disp=False)\n", + "print(res_lf.summary())\n", + "# The first state variable holds our estimate of the intercept\n", + "print(\"fixed intercept estimated as {0:.3f}\".format(res_lf.smoother_results.smoothed_state[0,-1:][0]))\n", + "\n", + "res_lf.plot_components()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note that one of our diagnostic tests would be rejected at the .05 level." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Unobserved components (lazy time domain seasonal modeling)\n", + "\n", + "The fourth method is an unobserved components model with a fixed intercept and a single seasonal component modeled using a time-domain seasonal model of 100 constants. The process for the time series can be written as:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "y_t & =\\mu_t + \\gamma^{(1)}_t + \\epsilon_t\\\\\n", + "\\mu_{t+1} &= \\mu_{t} \\\\\n", + "\\gamma^{(1)}_{t + 1} &= - \\sum_{j=1}^{99} \\gamma^{(1)}_{t + 1 - j} + \\omega^{(1)}_t\\\\\n", + "\\end{align}\n", + "$$\n", + "\n", + "where $\\epsilon_t$ is white noise, $\\omega^{(1)}_{t}$ are i.i.d. $N(0, \\sigma^2_1)$." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "model = sm.tsa.UnobservedComponents(series,\n", + " level='fixed intercept',\n", + " seasonal=100)\n", + "res_lt = model.fit(disp=False)\n", + "print(res_lt.summary())\n", + "# The first state variable holds our estimate of the intercept\n", + "print(\"fixed intercept estimated as {0:.3f}\".format(res_lt.smoother_results.smoothed_state[0,-1:][0]))\n", + "\n", + "res_lt.plot_components()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The seasonal component itself looks good--it is the primary singal. The estimated variance of the seasonal term is very high ($>10^5$), leading to a lot of uncertainty in our one-step-ahead predictions and slow responsiveness to new data, as evidenced by large errors in one-step ahead predictions and observations. Finally, all three of our diagnostic tests were rejected. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Comparison of filtered estimates\n", + "\n", + "The plots below show that explicitly modeling the individual components results in the filtered state being close to the true state within roughly half a period. The lazy models took longer (almost a full period) to do the same on the combined true state." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Assign better names for our seasonal terms\n", + "true_seasonal_10_3 = terms[0]\n", + "true_seasonal_100_2 = terms[1]\n", + "true_sum = true_seasonal_10_3 + true_seasonal_100_2\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "time_s = np.s_[:50] # After this they basically agree\n", + "fig1 = plt.figure()\n", + "ax1 = fig1.add_subplot(111)\n", + "idx = np.asarray(series.index)\n", + "h1, = ax1.plot(idx[time_s], res_f.freq_seasonal[0].filtered[time_s], label='Double Freq. Seas')\n", + "h2, = ax1.plot(idx[time_s], res_tf.seasonal.filtered[time_s], label='Mixed Domain Seas')\n", + "h3, = ax1.plot(idx[time_s], true_seasonal_10_3[time_s], label='True Seasonal 10(3)')\n", + "plt.legend([h1, h2, h3], ['Double Freq. Seasonal','Mixed Domain Seasonal','Truth'], loc=2)\n", + "plt.title('Seasonal 10(3) component')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "time_s = np.s_[:50] # After this they basically agree\n", + "fig2 = plt.figure()\n", + "ax2 = fig2.add_subplot(111)\n", + "h21, = ax2.plot(idx[time_s], res_f.freq_seasonal[1].filtered[time_s], label='Double Freq. Seas')\n", + "h22, = ax2.plot(idx[time_s], res_tf.freq_seasonal[0].filtered[time_s], label='Mixed Domain Seas')\n", + "h23, = ax2.plot(idx[time_s], true_seasonal_100_2[time_s], label='True Seasonal 100(2)')\n", + "plt.legend([h21, h22, h23], ['Double Freq. Seasonal','Mixed Domain Seasonal','Truth'], loc=2)\n", + "plt.title('Seasonal 100(2) component')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "scrolled": true + }, + "outputs": [], + "source": [ + "time_s = np.s_[:100]\n", + "\n", + "fig3 = plt.figure()\n", + "ax3 = fig3.add_subplot(111)\n", + "h31, = ax3.plot(idx[time_s], res_f.freq_seasonal[1].filtered[time_s] + res_f.freq_seasonal[0].filtered[time_s], label='Double Freq. Seas')\n", + "h32, = ax3.plot(idx[time_s], res_tf.freq_seasonal[0].filtered[time_s] + res_tf.seasonal.filtered[time_s], label='Mixed Domain Seas')\n", + "h33, = ax3.plot(idx[time_s], true_sum[time_s], label='True Seasonal 100(2)')\n", + "h34, = ax3.plot(idx[time_s], res_lf.freq_seasonal[0].filtered[time_s], label='Lazy Freq. Seas')\n", + "h35, = ax3.plot(idx[time_s], res_lt.seasonal.filtered[time_s], label='Lazy Time Seas')\n", + "\n", + "plt.legend([h31, h32, h33, h34, h35], ['Double Freq. Seasonal','Mixed Domain Seasonal','Truth', 'Lazy Freq. Seas', 'Lazy Time Seas'], loc=1)\n", + "plt.title('Seasonal components combined')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "##### Conclusions\n", + "\n", + "In this notebook, we simulated a time series with two seasonal components of different periods. We modeled them using structural time series models with (a) two frequency domain components of correct periods and numbers of harmonics, (b) time domain seasonal component for the shorter term and a frequency domain term with correct period and number of harmonics, (c) a single frequency domain term with the longer period and full number of harmonics, and (d) a single time domain term with the longer period. We saw a variety of diagnostic results, with only the correct generating model, (a), failing to reject any of the tests. Thus, more flexible seasonal modeling allowing for multiple components with specifiable harmonics can be a useful tool for time series modeling. Finally, we can represent seasonal components with fewer total states in this way, allowing for the user to attempt to make the bias-variance tradeoff themselves instead of being forced to choose \"lazy\" models, which use a large number of states and incur additional variance as a result." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/statespace_structural_harvey_jaeger.ipynb b/examples/notebooks/statespace_structural_harvey_jaeger.ipynb new file mode 100644 index 0000000..00674e3 --- /dev/null +++ b/examples/notebooks/statespace_structural_harvey_jaeger.ipynb @@ -0,0 +1,433 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Detrending, Stylized Facts and the Business Cycle\n", + "\n", + "In an influential article, Harvey and Jaeger (1993) described the use of unobserved components models (also known as \"structural time series models\") to derive stylized facts of the business cycle.\n", + "\n", + "Their paper begins:\n", + "\n", + " \"Establishing the 'stylized facts' associated with a set of time series is widely considered a crucial step\n", + " in macroeconomic research ... For such facts to be useful they should (1) be consistent with the stochastic\n", + " properties of the data and (2) present meaningful information.\"\n", + " \n", + "In particular, they make the argument that these goals are often better met using the unobserved components approach rather than the popular Hodrick-Prescott filter or Box-Jenkins ARIMA modeling techniques.\n", + "\n", + "Statsmodels has the ability to perform all three types of analysis, and below we follow the steps of their paper, using a slightly updated dataset." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "%matplotlib inline\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from IPython.display import display, Latex" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Unobserved Components\n", + "\n", + "The unobserved components model available in Statsmodels can be written as:\n", + "\n", + "$$\n", + "y_t = \\underbrace{\\mu_{t}}_{\\text{trend}} + \\underbrace{\\gamma_{t}}_{\\text{seasonal}} + \\underbrace{c_{t}}_{\\text{cycle}} + \\sum_{j=1}^k \\underbrace{\\beta_j x_{jt}}_{\\text{explanatory}} + \\underbrace{\\varepsilon_t}_{\\text{irregular}}\n", + "$$\n", + "\n", + "see Durbin and Koopman 2012, Chapter 3 for notation and additional details. Notice that different specifications for the different individual components can support a wide range of models. The specific models considered in the paper and below are specializations of this general equation.\n", + "\n", + "### Trend\n", + "\n", + "The trend component is a dynamic extension of a regression model that includes an intercept and linear time-trend.\n", + "\n", + "$$\n", + "\\begin{align}\n", + "\\underbrace{\\mu_{t+1}}_{\\text{level}} & = \\mu_t + \\nu_t + \\eta_{t+1} \\qquad & \\eta_{t+1} \\sim N(0, \\sigma_\\eta^2) \\\\\\\\\n", + "\\underbrace{\\nu_{t+1}}_{\\text{trend}} & = \\nu_t + \\zeta_{t+1} & \\zeta_{t+1} \\sim N(0, \\sigma_\\zeta^2) \\\\\n", + "\\end{align}\n", + "$$\n", + "\n", + "where the level is a generalization of the intercept term that can dynamically vary across time, and the trend is a generalization of the time-trend such that the slope can dynamically vary across time.\n", + "\n", + "For both elements (level and trend), we can consider models in which:\n", + "\n", + "- The element is included vs excluded (if the trend is included, there must also be a level included).\n", + "- The element is deterministic vs stochastic (i.e. whether or not the variance on the error term is confined to be zero or not)\n", + "\n", + "The only additional parameters to be estimated via MLE are the variances of any included stochastic components.\n", + "\n", + "This leads to the following specifications:\n", + "\n", + "| | Level | Trend | Stochastic Level | Stochastic Trend |\n", + "|----------------------------------------------------------------------|-------|-------|------------------|------------------|\n", + "| Constant | ✓ | | | |\n", + "| Local Level
    (random walk) | ✓ | | ✓ | |\n", + "| Deterministic trend | ✓ | ✓ | | |\n", + "| Local level with deterministic trend
    (random walk with drift) | ✓ | ✓ | ✓ | |\n", + "| Local linear trend | ✓ | ✓ | ✓ | ✓ |\n", + "| Smooth trend
    (integrated random walk) | ✓ | ✓ | | ✓ |\n", + "\n", + "### Seasonal\n", + "\n", + "The seasonal component is written as:\n", + "\n", + "$$\n", + "\\gamma_t = - \\sum_{j=1}^{s-1} \\gamma_{t+1-j} + \\omega_t \\qquad \\omega_t \\sim N(0, \\sigma_\\omega^2)\n", + "$$\n", + "\n", + "The periodicity (number of seasons) is `s`, and the defining character is that (without the error term), the seasonal components sum to zero across one complete cycle. The inclusion of an error term allows the seasonal effects to vary over time.\n", + "\n", + "The variants of this model are:\n", + "\n", + "- The periodicity `s`\n", + "- Whether or not to make the seasonal effects stochastic.\n", + "\n", + "If the seasonal effect is stochastic, then there is one additional parameter to estimate via MLE (the variance of the error term).\n", + "\n", + "### Cycle\n", + "\n", + "The cyclical component is intended to capture cyclical effects at time frames much longer than captured by the seasonal component. For example, in economics the cyclical term is often intended to capture the business cycle, and is then expected to have a period between \"1.5 and 12 years\" (see Durbin and Koopman).\n", + "\n", + "The cycle is written as:\n", + "\n", + "$$\n", + "\\begin{align}\n", + "c_{t+1} & = c_t \\cos \\lambda_c + c_t^* \\sin \\lambda_c + \\tilde \\omega_t \\qquad & \\tilde \\omega_t \\sim N(0, \\sigma_{\\tilde \\omega}^2) \\\\\\\\\n", + "c_{t+1}^* & = -c_t \\sin \\lambda_c + c_t^* \\cos \\lambda_c + \\tilde \\omega_t^* & \\tilde \\omega_t^* \\sim N(0, \\sigma_{\\tilde \\omega}^2)\n", + "\\end{align}\n", + "$$\n", + "\n", + "The parameter $\\lambda_c$ (the frequency of the cycle) is an additional parameter to be estimated by MLE. If the seasonal effect is stochastic, then there is one another parameter to estimate (the variance of the error term - note that both of the error terms here share the same variance, but are assumed to have independent draws).\n", + "\n", + "### Irregular\n", + "\n", + "The irregular component is assumed to be a white noise error term. Its variance is a parameter to be estimated by MLE; i.e.\n", + "\n", + "$$\n", + "\\varepsilon_t \\sim N(0, \\sigma_\\varepsilon^2)\n", + "$$\n", + "\n", + "In some cases, we may want to generalize the irregular component to allow for autoregressive effects:\n", + "\n", + "$$\n", + "\\varepsilon_t = \\rho(L) \\varepsilon_{t-1} + \\epsilon_t, \\qquad \\epsilon_t \\sim N(0, \\sigma_\\epsilon^2)\n", + "$$\n", + "\n", + "In this case, the autoregressive parameters would also be estimated via MLE.\n", + "\n", + "### Regression effects\n", + "\n", + "We may want to allow for explanatory variables by including additional terms\n", + "\n", + "$$\n", + "\\sum_{j=1}^k \\beta_j x_{jt}\n", + "$$\n", + "\n", + "or for intervention effects by including\n", + "\n", + "$$\n", + "\\begin{align}\n", + "\\delta w_t \\qquad \\text{where} \\qquad w_t & = 0, \\qquad t < \\tau, \\\\\\\\\n", + "& = 1, \\qquad t \\ge \\tau\n", + "\\end{align}\n", + "$$\n", + "\n", + "These additional parameters could be estimated via MLE or by including them as components of the state space formulation.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Data\n", + "\n", + "Following Harvey and Jaeger, we will consider the following time series:\n", + "\n", + "- US real GNP, \"output\", ([GNPC96](https://research.stlouisfed.org/fred2/series/GNPC96))\n", + "- US GNP implicit price deflator, \"prices\", ([GNPDEF](https://research.stlouisfed.org/fred2/series/GNPDEF))\n", + "- US monetary base, \"money\", ([AMBSL](https://research.stlouisfed.org/fred2/series/AMBSL))\n", + "\n", + "The time frame in the original paper varied across series, but was broadly 1954-1989. Below we use data from the period 1948-2008 for all series. Although the unobserved components approach allows isolating a seasonal component within the model, the series considered in the paper, and here, are already seasonally adjusted.\n", + "\n", + "All data series considered here are taken from [Federal Reserve Economic Data (FRED)](https://research.stlouisfed.org/fred2/). Conveniently, the Python library [Pandas](http://pandas.pydata.org/) has the ability to download data from FRED directly." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Datasets\n", + "from pandas_datareader.data import DataReader\n", + "\n", + "# Get the raw data\n", + "start = '1948-01'\n", + "end = '2008-01'\n", + "us_gnp = DataReader('GNPC96', 'fred', start=start, end=end)\n", + "us_gnp_deflator = DataReader('GNPDEF', 'fred', start=start, end=end)\n", + "us_monetary_base = DataReader('AMBSL', 'fred', start=start, end=end).resample('QS').mean()\n", + "recessions = DataReader('USRECQ', 'fred', start=start, end=end).resample('QS').last().values[:,0]\n", + "\n", + "# Construct the dataframe\n", + "dta = pd.concat(map(np.log, (us_gnp, us_gnp_deflator, us_monetary_base)), axis=1)\n", + "dta.columns = ['US GNP','US Prices','US monetary base']\n", + "dates = dta.index._mpl_repr()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To get a sense of these three variables over the timeframe, we can plot them:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Plot the data\n", + "ax = dta.plot(figsize=(13,3))\n", + "ylim = ax.get_ylim()\n", + "ax.xaxis.grid()\n", + "ax.fill_between(dates, ylim[0]+1e-5, ylim[1]-1e-5, recessions, facecolor='k', alpha=0.1);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model\n", + "\n", + "Since the data is already seasonally adjusted and there are no obvious explanatory variables, the generic model considered is:\n", + "\n", + "$$\n", + "y_t = \\underbrace{\\mu_{t}}_{\\text{trend}} + \\underbrace{c_{t}}_{\\text{cycle}} + \\underbrace{\\varepsilon_t}_{\\text{irregular}}\n", + "$$\n", + "\n", + "The irregular will be assumed to be white noise, and the cycle will be stochastic and damped. The final modeling choice is the specification to use for the trend component. Harvey and Jaeger consider two models:\n", + "\n", + "1. Local linear trend (the \"unrestricted\" model)\n", + "2. Smooth trend (the \"restricted\" model, since we are forcing $\\sigma_\\eta = 0$)\n", + "\n", + "Below, we construct `kwargs` dictionaries for each of these model types. Notice that rather that there are two ways to specify the models. One way is to specify components directly, as in the table above. The other way is to use string names which map to various specifications." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Model specifications\n", + "\n", + "# Unrestricted model, using string specification\n", + "unrestricted_model = {\n", + " 'level': 'local linear trend', 'cycle': True, 'damped_cycle': True, 'stochastic_cycle': True\n", + "}\n", + "\n", + "# Unrestricted model, setting components directly\n", + "# This is an equivalent, but less convenient, way to specify a\n", + "# local linear trend model with a stochastic damped cycle:\n", + "# unrestricted_model = {\n", + "# 'irregular': True, 'level': True, 'stochastic_level': True, 'trend': True, 'stochastic_trend': True,\n", + "# 'cycle': True, 'damped_cycle': True, 'stochastic_cycle': True\n", + "# }\n", + "\n", + "# The restricted model forces a smooth trend\n", + "restricted_model = {\n", + " 'level': 'smooth trend', 'cycle': True, 'damped_cycle': True, 'stochastic_cycle': True\n", + "}\n", + "\n", + "# Restricted model, setting components directly\n", + "# This is an equivalent, but less convenient, way to specify a\n", + "# smooth trend model with a stochastic damped cycle. Notice\n", + "# that the difference from the local linear trend model is that\n", + "# `stochastic_level=False` here.\n", + "# unrestricted_model = {\n", + "# 'irregular': True, 'level': True, 'stochastic_level': False, 'trend': True, 'stochastic_trend': True,\n", + "# 'cycle': True, 'damped_cycle': True, 'stochastic_cycle': True\n", + "# }" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We now fit the following models:\n", + "\n", + "1. Output, unrestricted model\n", + "2. Prices, unrestricted model\n", + "3. Prices, restricted model\n", + "4. Money, unrestricted model\n", + "5. Money, restricted model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Output\n", + "output_mod = sm.tsa.UnobservedComponents(dta['US GNP'], **unrestricted_model)\n", + "output_res = output_mod.fit(method='powell', disp=False)\n", + "\n", + "# Prices\n", + "prices_mod = sm.tsa.UnobservedComponents(dta['US Prices'], **unrestricted_model)\n", + "prices_res = prices_mod.fit(method='powell', disp=False)\n", + "\n", + "prices_restricted_mod = sm.tsa.UnobservedComponents(dta['US Prices'], **restricted_model)\n", + "prices_restricted_res = prices_restricted_mod.fit(method='powell', disp=False)\n", + "\n", + "# Money\n", + "money_mod = sm.tsa.UnobservedComponents(dta['US monetary base'], **unrestricted_model)\n", + "money_res = money_mod.fit(method='powell', disp=False)\n", + "\n", + "money_restricted_mod = sm.tsa.UnobservedComponents(dta['US monetary base'], **restricted_model)\n", + "money_restricted_res = money_restricted_mod.fit(method='powell', disp=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Once we have fit these models, there are a variety of ways to display the information. Looking at the model of US GNP, we can summarize the fit of the model using the `summary` method on the fit object." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(output_res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "For unobserved components models, and in particular when exploring stylized facts in line with point (2) from the introduction, it is often more instructive to plot the estimated unobserved components (e.g. the level, trend, and cycle) themselves to see if they provide a meaningful description of the data.\n", + "\n", + "The `plot_components` method of the fit object can be used to show plots and confidence intervals of each of the estimated states, as well as a plot of the observed data versus the one-step-ahead predictions of the model to assess fit." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "fig = output_res.plot_components(legend_loc='lower right', figsize=(15, 9));" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Finally, Harvey and Jaeger summarize the models in another way to highlight the relative importances of the trend and cyclical components; below we replicate their Table I. The values we find are broadly consistent with, but different in the particulars from, the values from their table." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "# Create Table I\n", + "table_i = np.zeros((5,6))\n", + "\n", + "start = dta.index[0]\n", + "end = dta.index[-1]\n", + "time_range = '%d:%d-%d:%d' % (start.year, start.quarter, end.year, end.quarter)\n", + "models = [\n", + " ('US GNP', time_range, 'None'),\n", + " ('US Prices', time_range, 'None'),\n", + " ('US Prices', time_range, r'$\\sigma_\\eta^2 = 0$'),\n", + " ('US monetary base', time_range, 'None'),\n", + " ('US monetary base', time_range, r'$\\sigma_\\eta^2 = 0$'),\n", + "]\n", + "index = pd.MultiIndex.from_tuples(models, names=['Series', 'Time range', 'Restrictions'])\n", + "parameter_symbols = [\n", + " r'$\\sigma_\\zeta^2$', r'$\\sigma_\\eta^2$', r'$\\sigma_\\kappa^2$', r'$\\rho$',\n", + " r'$2 \\pi / \\lambda_c$', r'$\\sigma_\\varepsilon^2$',\n", + "]\n", + "\n", + "i = 0\n", + "for res in (output_res, prices_res, prices_restricted_res, money_res, money_restricted_res):\n", + " if res.model.stochastic_level:\n", + " (sigma_irregular, sigma_level, sigma_trend,\n", + " sigma_cycle, frequency_cycle, damping_cycle) = res.params\n", + " else:\n", + " (sigma_irregular, sigma_level,\n", + " sigma_cycle, frequency_cycle, damping_cycle) = res.params\n", + " sigma_trend = np.nan\n", + " period_cycle = 2 * np.pi / frequency_cycle\n", + " \n", + " table_i[i, :] = [\n", + " sigma_level*1e7, sigma_trend*1e7,\n", + " sigma_cycle*1e7, damping_cycle, period_cycle,\n", + " sigma_irregular*1e7\n", + " ]\n", + " i += 1\n", + " \n", + "pd.set_option('float_format', lambda x: '%.4g' % np.round(x, 2) if not np.isnan(x) else '-')\n", + "table_i = pd.DataFrame(table_i, index=index, columns=parameter_symbols)\n", + "table_i" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/statespace_varmax.ipynb b/examples/notebooks/statespace_varmax.ipynb new file mode 100644 index 0000000..093a01d --- /dev/null +++ b/examples/notebooks/statespace_varmax.ipynb @@ -0,0 +1,173 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# VARMAX models\n", + "\n", + "This is a brief introduction notebook to VARMAX models in Statsmodels. The VARMAX model is generically specified as:\n", + "$$\n", + "y_t = \\nu + A_1 y_{t-1} + \\dots + A_p y_{t-p} + B x_t + \\epsilon_t +\n", + "M_1 \\epsilon_{t-1} + \\dots M_q \\epsilon_{t-q}\n", + "$$\n", + "\n", + "where $y_t$ is a $\\text{k_endog} \\times 1$ vector." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "dta = sm.datasets.webuse('lutkepohl2', 'https://www.stata-press.com/data/r12/')\n", + "dta.index = dta.qtr\n", + "endog = dta.loc['1960-04-01':'1978-10-01', ['dln_inv', 'dln_inc', 'dln_consump']]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Model specification\n", + "\n", + "The `VARMAX` class in Statsmodels allows estimation of VAR, VMA, and VARMA models (through the `order` argument), optionally with a constant term (via the `trend` argument). Exogenous regressors may also be included (as usual in Statsmodels, by the `exog` argument), and in this way a time trend may be added. Finally, the class allows measurement error (via the `measurement_error` argument) and allows specifying either a diagonal or unstructured innovation covariance matrix (via the `error_cov_type` argument)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1: VAR\n", + "\n", + "Below is a simple VARX(2) model in two endogenous variables and an exogenous series, but no constant term. Notice that we needed to allow for more iterations than the default (which is `maxiter=50`) in order for the likelihood estimation to converge. This is not unusual in VAR models which have to estimate a large number of parameters, often on a relatively small number of time series: this model, for example, estimates 27 parameters off of 75 observations of 3 variables." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "exog = endog['dln_consump']\n", + "mod = sm.tsa.VARMAX(endog[['dln_inv', 'dln_inc']], order=(2,0), trend='nc', exog=exog)\n", + "res = mod.fit(maxiter=1000, disp=False)\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "From the estimated VAR model, we can plot the impulse response functions of the endogenous variables." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ax = res.impulse_responses(10, orthogonalized=True).plot(figsize=(13,3))\n", + "ax.set(xlabel='t', title='Responses to a shock to `dln_inv`');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2: VMA\n", + "\n", + "A vector moving average model can also be formulated. Below we show a VMA(2) on the same data, but where the innovations to the process are uncorrelated. In this example we leave out the exogenous regressor but now include the constant term." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mod = sm.tsa.VARMAX(endog[['dln_inv', 'dln_inc']], order=(0,2), error_cov_type='diagonal')\n", + "res = mod.fit(maxiter=1000, disp=False)\n", + "print(res.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Caution: VARMA(p,q) specifications\n", + "\n", + "Although the model allows estimating VARMA(p,q) specifications, these models are not identified without additional restrictions on the representation matrices, which are not built-in. For this reason, it is recommended that the user proceed with error (and indeed a warning is issued when these models are specified). Nonetheless, they may in some circumstances provide useful information." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "mod = sm.tsa.VARMAX(endog[['dln_inv', 'dln_inc']], order=(1,1))\n", + "res = mod.fit(maxiter=1000, disp=False)\n", + "print(res.summary())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/tsa_arma_0.ipynb b/examples/notebooks/tsa_arma_0.ipynb new file mode 100644 index 0000000..1eb1c22 --- /dev/null +++ b/examples/notebooks/tsa_arma_0.ipynb @@ -0,0 +1,515 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Autoregressive Moving Average (ARMA): Sunspots data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import numpy as np\n", + "from scipy import stats\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import statsmodels.api as sm" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from statsmodels.graphics.api import qqplot" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Sunpots Data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(sm.datasets.sunspots.NOTE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dta = sm.datasets.sunspots.load_pandas().data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dta.index = pd.Index(sm.tsa.datetools.dates_from_range('1700', '2008'))\n", + "del dta[\"YEAR\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dta.plot(figsize=(12,8));" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax1 = fig.add_subplot(211)\n", + "fig = sm.graphics.tsa.plot_acf(dta.values.squeeze(), lags=40, ax=ax1)\n", + "ax2 = fig.add_subplot(212)\n", + "fig = sm.graphics.tsa.plot_pacf(dta, lags=40, ax=ax2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arma_mod20 = sm.tsa.ARMA(dta, (2,0)).fit(disp=False)\n", + "print(arma_mod20.params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arma_mod30 = sm.tsa.ARMA(dta, (3,0)).fit(disp=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(arma_mod20.aic, arma_mod20.bic, arma_mod20.hqic)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(arma_mod30.params)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(arma_mod30.aic, arma_mod30.bic, arma_mod30.hqic)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Does our model obey the theory?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "sm.stats.durbin_watson(arma_mod30.resid.values)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111)\n", + "ax = arma_mod30.resid.plot(ax=ax);" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "resid = arma_mod30.resid" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "stats.normaltest(resid)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111)\n", + "fig = qqplot(resid, line='q', ax=ax, fit=True)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax1 = fig.add_subplot(211)\n", + "fig = sm.graphics.tsa.plot_acf(resid.values.squeeze(), lags=40, ax=ax1)\n", + "ax2 = fig.add_subplot(212)\n", + "fig = sm.graphics.tsa.plot_pacf(resid, lags=40, ax=ax2)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "r,q,p = sm.tsa.acf(resid.values.squeeze(), fft=True, qstat=True)\n", + "data = np.c_[range(1,41), r[1:], q, p]\n", + "table = pd.DataFrame(data, columns=['lag', \"AC\", \"Q\", \"Prob(>Q)\"])\n", + "print(table.set_index('lag'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* This indicates a lack of fit." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* In-sample dynamic prediction. How good does our model do?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "predict_sunspots = arma_mod30.predict('1990', '2012', dynamic=True)\n", + "print(predict_sunspots)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(figsize=(12, 8))\n", + "ax = dta.loc['1950':].plot(ax=ax)\n", + "fig = arma_mod30.plot_predict('1990', '2012', dynamic=True, ax=ax, plot_insample=False)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "def mean_forecast_err(y, yhat):\n", + " return y.sub(yhat).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mean_forecast_err(dta.SUNACTIVITY, predict_sunspots)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise: Can you obtain a better fit for the Sunspots model? (Hint: sm.tsa.AR has a method select_order)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Simulated ARMA(4,1): Model Identification is Difficult" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from statsmodels.tsa.arima_process import ArmaProcess" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "np.random.seed(1234)\n", + "# include zero-th lag\n", + "arparams = np.array([1, .75, -.65, -.55, .9])\n", + "maparams = np.array([1, .65])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's make sure this model is estimable." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arma_t = ArmaProcess(arparams, maparams)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arma_t.isinvertible" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arma_t.isstationary" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* What does this mean?" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111)\n", + "ax.plot(arma_t.generate_sample(nsample=50));" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arparams = np.array([1, .35, -.15, .55, .1])\n", + "maparams = np.array([1, .65])\n", + "arma_t = ArmaProcess(arparams, maparams)\n", + "arma_t.isstationary" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arma_rvs = arma_t.generate_sample(nsample=500, burnin=250, scale=2.5)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax1 = fig.add_subplot(211)\n", + "fig = sm.graphics.tsa.plot_acf(arma_rvs, lags=40, ax=ax1)\n", + "ax2 = fig.add_subplot(212)\n", + "fig = sm.graphics.tsa.plot_pacf(arma_rvs, lags=40, ax=ax2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* For mixed ARMA processes the Autocorrelation function is a mixture of exponentials and damped sine waves after (q-p) lags.\n", + "* The partial autocorrelation function is a mixture of exponentials and dampened sine waves after (p-q) lags." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arma11 = sm.tsa.ARMA(arma_rvs, (1,1)).fit(disp=False)\n", + "resid = arma11.resid\n", + "r,q,p = sm.tsa.acf(resid, fft=True, qstat=True)\n", + "data = np.c_[range(1,41), r[1:], q, p]\n", + "table = pd.DataFrame(data, columns=['lag', \"AC\", \"Q\", \"Prob(>Q)\"])\n", + "print(table.set_index('lag'))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arma41 = sm.tsa.ARMA(arma_rvs, (4,1)).fit(disp=False)\n", + "resid = arma41.resid\n", + "r,q,p = sm.tsa.acf(resid, fft=True, qstat=True)\n", + "data = np.c_[range(1,41), r[1:], q, p]\n", + "table = pd.DataFrame(data, columns=['lag', \"AC\", \"Q\", \"Prob(>Q)\"])\n", + "print(table.set_index('lag'))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Exercise: How good of in-sample prediction can you do for another series, say, CPI" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "macrodta = sm.datasets.macrodata.load_pandas().data\n", + "macrodta.index = pd.Index(sm.tsa.datetools.dates_from_range('1959Q1', '2009Q3'))\n", + "cpi = macrodta[\"cpi\"]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Hint: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111)\n", + "ax = cpi.plot(ax=ax);\n", + "ax.legend();" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "P-value of the unit-root test, resoundingly rejects the null of a unit-root." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(sm.tsa.adfuller(cpi)[1])" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/tsa_arma_1.ipynb b/examples/notebooks/tsa_arma_1.ipynb new file mode 100644 index 0000000..929af04 --- /dev/null +++ b/examples/notebooks/tsa_arma_1.ipynb @@ -0,0 +1,142 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Autoregressive Moving Average (ARMA): Artificial data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import numpy as np\n", + "import statsmodels.api as sm\n", + "import pandas as pd\n", + "from statsmodels.tsa.arima_process import arma_generate_sample\n", + "np.random.seed(12345)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Generate some data from an ARMA process:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arparams = np.array([.75, -.25])\n", + "maparams = np.array([.65, .35])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The conventions of the arma_generate function require that we specify a 1 for the zero-lag of the AR and MA parameters and that the AR parameters be negated." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "arparams = np.r_[1, -arparams]\n", + "maparams = np.r_[1, maparams]\n", + "nobs = 250\n", + "y = arma_generate_sample(arparams, maparams, nobs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + " Now, optionally, we can add some dates information. For this example, we'll use a pandas time series." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dates = sm.tsa.datetools.dates_from_range('1980m1', length=nobs)\n", + "y = pd.Series(y, index=dates)\n", + "arma_mod = sm.tsa.ARMA(y, order=(2,2))\n", + "arma_res = arma_mod.fit(trend='nc', disp=-1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(arma_res.summary())" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "y.tail()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "fig, ax = plt.subplots(figsize=(10,8))\n", + "fig = arma_res.plot_predict(start='1999-06-30', end='2001-05-31', ax=ax)\n", + "legend = ax.legend(loc='upper left')" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/tsa_dates.ipynb b/examples/notebooks/tsa_dates.ipynb new file mode 100644 index 0000000..5cd01c5 --- /dev/null +++ b/examples/notebooks/tsa_dates.ipynb @@ -0,0 +1,187 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Dates in timeseries models" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import statsmodels.api as sm\n", + "import numpy as np\n", + "import pandas as pd" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Getting started" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "data = sm.datasets.sunspots.load()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Right now an annual date series must be datetimes at the end of the year." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from datetime import datetime\n", + "dates = sm.tsa.datetools.dates_from_range('1700', length=len(data.endog))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using Pandas\n", + "\n", + "Make a pandas TimeSeries or DataFrame" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "endog = pd.Series(data.endog, index=dates)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Instantiate the model" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ar_model = sm.tsa.AR(endog, freq='A')\n", + "pandas_ar_res = ar_model.fit(maxlag=9, method='mle', disp=-1)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Out-of-sample prediction" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "pred = pandas_ar_res.predict(start='2005', end='2015')\n", + "print(pred)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Using explicit dates" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "ar_model = sm.tsa.AR(data.endog, dates=dates, freq='A')\n", + "ar_res = ar_model.fit(maxlag=9, method='mle', disp=-1)\n", + "pred = ar_res.predict(start='2005', end='2015')\n", + "print(pred)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This just returns a regular array, but since the model has date information attached, you can get the prediction dates in a roundabout way." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "print(ar_res.data.predict_dates)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Note: This attribute only exists if predict has been called. It holds the dates associated with the last call to predict." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.4.3" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/examples/notebooks/tsa_filters.ipynb b/examples/notebooks/tsa_filters.ipynb new file mode 100644 index 0000000..8d12fc4 --- /dev/null +++ b/examples/notebooks/tsa_filters.ipynb @@ -0,0 +1,317 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Time Series Filters" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "\n", + "import statsmodels.api as sm" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dta = sm.datasets.macrodata.load_pandas().data" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "index = pd.Index(sm.tsa.datetools.dates_from_range('1959Q1', '2009Q3'))\n", + "print(index)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "dta.index = index\n", + "del dta['year']\n", + "del dta['quarter']" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(sm.datasets.macrodata.NOTE)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(dta.head(10))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111)\n", + "dta.realgdp.plot(ax=ax);\n", + "legend = ax.legend(loc = 'upper left');\n", + "legend.prop.set_size(20);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Hodrick-Prescott Filter" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Hodrick-Prescott filter separates a time-series $y_t$ into a trend $\\tau_t$ and a cyclical component $\\zeta_t$ \n", + "\n", + "$$y_t = \\tau_t + \\zeta_t$$\n", + "\n", + "The components are determined by minimizing the following quadratic loss function\n", + "\n", + "$$\\min_{\\\\{ \\tau_{t}\\\\} }\\sum_{t}^{T}\\zeta_{t}^{2}+\\lambda\\sum_{t=1}^{T}\\left[\\left(\\tau_{t}-\\tau_{t-1}\\right)-\\left(\\tau_{t-1}-\\tau_{t-2}\\right)\\right]^{2}$$" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "gdp_cycle, gdp_trend = sm.tsa.filters.hpfilter(dta.realgdp)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "gdp_decomp = dta[['realgdp']].copy()\n", + "gdp_decomp[\"cycle\"] = gdp_cycle\n", + "gdp_decomp[\"trend\"] = gdp_trend" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,8))\n", + "ax = fig.add_subplot(111)\n", + "gdp_decomp[[\"realgdp\", \"trend\"]][\"2000-03-31\":].plot(ax=ax, fontsize=16);\n", + "legend = ax.get_legend()\n", + "legend.prop.set_size(20);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Baxter-King approximate band-pass filter: Inflation and Unemployment" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Explore the hypothesis that inflation and unemployment are counter-cyclical." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Baxter-King filter is intended to explictly deal with the periodicty of the business cycle. By applying their band-pass filter to a series, they produce a new series that does not contain fluctuations at higher or lower than those of the business cycle. Specifically, the BK filter takes the form of a symmetric moving average \n", + "\n", + "$$y_{t}^{*}=\\sum_{k=-K}^{k=K}a_ky_{t-k}$$\n", + "\n", + "where $a_{-k}=a_k$ and $\\sum_{k=-k}^{K}a_k=0$ to eliminate any trend in the series and render it stationary if the series is I(1) or I(2).\n", + "\n", + "For completeness, the filter weights are determined as follows\n", + "\n", + "$$a_{j} = B_{j}+\\theta\\text{ for }j=0,\\pm1,\\pm2,\\dots,\\pm K$$\n", + "\n", + "$$B_{0} = \\frac{\\left(\\omega_{2}-\\omega_{1}\\right)}{\\pi}$$\n", + "$$B_{j} = \\frac{1}{\\pi j}\\left(\\sin\\left(\\omega_{2}j\\right)-\\sin\\left(\\omega_{1}j\\right)\\right)\\text{ for }j=0,\\pm1,\\pm2,\\dots,\\pm K$$\n", + "\n", + "where $\\theta$ is a normalizing constant such that the weights sum to zero.\n", + "\n", + "$$\\theta=\\frac{-\\sum_{j=-K^{K}b_{j}}}{2K+1}$$\n", + "\n", + "$$\\omega_{1}=\\frac{2\\pi}{P_{H}}$$\n", + "\n", + "$$\\omega_{2}=\\frac{2\\pi}{P_{L}}$$\n", + "\n", + "$P_L$ and $P_H$ are the periodicity of the low and high cut-off frequencies. Following Burns and Mitchell's work on US business cycles which suggests cycles last from 1.5 to 8 years, we use $P_L=6$ and $P_H=32$ by default." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "bk_cycles = sm.tsa.filters.bkfilter(dta[[\"infl\",\"unemp\"]])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* We lose K observations on both ends. It is suggested to use K=12 for quarterly data." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(12,10))\n", + "ax = fig.add_subplot(111)\n", + "bk_cycles.plot(ax=ax, style=['r--', 'b-']);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Christiano-Fitzgerald approximate band-pass filter: Inflation and Unemployment" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The Christiano-Fitzgerald filter is a generalization of BK and can thus also be seen as weighted moving average. However, the CF filter is asymmetric about $t$ as well as using the entire series. The implementation of their filter involves the\n", + "calculations of the weights in\n", + "\n", + "$$y_{t}^{*}=B_{0}y_{t}+B_{1}y_{t+1}+\\dots+B_{T-1-t}y_{T-1}+\\tilde B_{T-t}y_{T}+B_{1}y_{t-1}+\\dots+B_{t-2}y_{2}+\\tilde B_{t-1}y_{1}$$\n", + "\n", + "for $t=3,4,...,T-2$, where\n", + "\n", + "$$B_{j} = \\frac{\\sin(jb)-\\sin(ja)}{\\pi j},j\\geq1$$\n", + "\n", + "$$B_{0} = \\frac{b-a}{\\pi},a=\\frac{2\\pi}{P_{u}},b=\\frac{2\\pi}{P_{L}}$$\n", + "\n", + "$\\tilde B_{T-t}$ and $\\tilde B_{t-1}$ are linear functions of the $B_{j}$'s, and the values for $t=1,2,T-1,$ and $T$ are also calculated in much the same way. $P_{U}$ and $P_{L}$ are as described above with the same interpretation." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The CF filter is appropriate for series that may follow a random walk." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(sm.tsa.stattools.adfuller(dta['unemp'])[:3])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "print(sm.tsa.stattools.adfuller(dta['infl'])[:3])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "cf_cycles, cf_trend = sm.tsa.filters.cffilter(dta[[\"infl\",\"unemp\"]])\n", + "print(cf_cycles.head(10))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig = plt.figure(figsize=(14,10))\n", + "ax = fig.add_subplot(111)\n", + "cf_cycles.plot(ax=ax, style=['r--','b-']);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Filtering assumes *a priori* that business cycles exist. Due to this assumption, many macroeconomic models seek to create models that match the shape of impulse response functions rather than replicating properties of filtered series. See VAR notebook." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/notebooks/wls.ipynb b/examples/notebooks/wls.ipynb new file mode 100644 index 0000000..151877c --- /dev/null +++ b/examples/notebooks/wls.ipynb @@ -0,0 +1,238 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Weighted Least Squares" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from __future__ import print_function\n", + "import numpy as np\n", + "from scipy import stats\n", + "import statsmodels.api as sm\n", + "import matplotlib.pyplot as plt\n", + "from statsmodels.sandbox.regression.predstd import wls_prediction_std\n", + "from statsmodels.iolib.table import (SimpleTable, default_txt_fmt)\n", + "np.random.seed(1024)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## WLS Estimation\n", + "\n", + "### Artificial data: Heteroscedasticity 2 groups \n", + "\n", + "Model assumptions:\n", + "\n", + " * Misspecification: true model is quadratic, estimate only linear\n", + " * Independent noise/error term\n", + " * Two groups for error variance, low and high variance groups" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "nsample = 50\n", + "x = np.linspace(0, 20, nsample)\n", + "X = np.column_stack((x, (x - 5)**2))\n", + "X = sm.add_constant(X)\n", + "beta = [5., 0.5, -0.01]\n", + "sig = 0.5\n", + "w = np.ones(nsample)\n", + "w[nsample * 6//10:] = 3\n", + "y_true = np.dot(X, beta)\n", + "e = np.random.normal(size=nsample)\n", + "y = y_true + sig * w * e \n", + "X = X[:,[0,1]]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### WLS knowing the true variance ratio of heteroscedasticity\n", + "\n", + "In this example, `w` is the standard deviation of the error. `WLS` requires that the weights are proportional to the inverse of the error variance." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "mod_wls = sm.WLS(y, X, weights=1./(w ** 2))\n", + "res_wls = mod_wls.fit()\n", + "print(res_wls.summary())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## OLS vs. WLS\n", + "\n", + "Estimate an OLS model for comparison: " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "res_ols = sm.OLS(y, X).fit()\n", + "print(res_ols.params)\n", + "print(res_wls.params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Compare the WLS standard errors to heteroscedasticity corrected OLS standard errors:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "se = np.vstack([[res_wls.bse], [res_ols.bse], [res_ols.HC0_se], \n", + " [res_ols.HC1_se], [res_ols.HC2_se], [res_ols.HC3_se]])\n", + "se = np.round(se,4)\n", + "colnames = ['x1', 'const']\n", + "rownames = ['WLS', 'OLS', 'OLS_HC0', 'OLS_HC1', 'OLS_HC3', 'OLS_HC3']\n", + "tabl = SimpleTable(se, colnames, rownames, txt_fmt=default_txt_fmt)\n", + "print(tabl)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Calculate OLS prediction interval:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "covb = res_ols.cov_params()\n", + "prediction_var = res_ols.mse_resid + (X * np.dot(covb,X.T).T).sum(1)\n", + "prediction_std = np.sqrt(prediction_var)\n", + "tppf = stats.t.ppf(0.975, res_ols.df_resid)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "prstd_ols, iv_l_ols, iv_u_ols = wls_prediction_std(res_ols)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Draw a plot to compare predicted values in WLS and OLS:" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "prstd, iv_l, iv_u = wls_prediction_std(res_wls)\n", + "\n", + "fig, ax = plt.subplots(figsize=(8,6))\n", + "ax.plot(x, y, 'o', label=\"Data\")\n", + "ax.plot(x, y_true, 'b-', label=\"True\")\n", + "# OLS\n", + "ax.plot(x, res_ols.fittedvalues, 'r--')\n", + "ax.plot(x, iv_u_ols, 'r--', label=\"OLS\")\n", + "ax.plot(x, iv_l_ols, 'r--')\n", + "# WLS\n", + "ax.plot(x, res_wls.fittedvalues, 'g--.')\n", + "ax.plot(x, iv_u, 'g--', label=\"WLS\")\n", + "ax.plot(x, iv_l, 'g--')\n", + "ax.legend(loc=\"best\");" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Feasible Weighted Least Squares (2-stage FWLS)\n", + "\n", + "Like ,`w`, `w_est` is proportional to the standard deviation, and so must be squared." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "resid1 = res_ols.resid[w==1.]\n", + "var1 = resid1.var(ddof=int(res_ols.df_model)+1)\n", + "resid2 = res_ols.resid[w!=1.]\n", + "var2 = resid2.var(ddof=int(res_ols.df_model)+1)\n", + "w_est = w.copy()\n", + "w_est[w!=1.] = np.sqrt(var2) / np.sqrt(var1)\n", + "res_fwls = sm.WLS(y, X, 1./((w_est ** 2))).fit()\n", + "print(res_fwls.summary())" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.3" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/examples/python/categorical_interaction_plot.py b/examples/python/categorical_interaction_plot.py new file mode 100644 index 0000000..6f16b1a --- /dev/null +++ b/examples/python/categorical_interaction_plot.py @@ -0,0 +1,35 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook categorical_interaction_plot.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Plot Interaction of Categorical Factors + +# In this example, we will visualize the interaction between categorical +# factors. First, we will create some categorical data are initialized. Then +# plotted using the interaction_plot function which internally re-codes the +# x-factor categories to integers. + +import numpy as np +import matplotlib.pyplot as plt +import pandas as pd +from statsmodels.graphics.factorplots import interaction_plot + +np.random.seed(12345) +weight = pd.Series(np.repeat(['low', 'hi', 'low', 'hi'], 15), name='weight') +nutrition = pd.Series(np.repeat(['lo_carb', 'hi_carb'], 30), name='nutrition') +days = np.log(np.random.randint(1, 30, size=60)) + +fig, ax = plt.subplots(figsize=(6, 6)) +fig = interaction_plot( + x=weight, + trace=nutrition, + response=days, + colors=['red', 'blue'], + markers=['D', '^'], + ms=10, + ax=ax) diff --git a/examples/python/chi2_fitting.py b/examples/python/chi2_fitting.py new file mode 100644 index 0000000..9d766ea --- /dev/null +++ b/examples/python/chi2_fitting.py @@ -0,0 +1,147 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook chi2_fitting.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Least squares fitting of models to data + +# This is a quick introduction to `statsmodels` for physical scientists +# (e.g. physicists, astronomers) or engineers. +# +# Why is this needed? +# +# Because most of `statsmodels` was written by statisticians and they use +# a different terminology and sometimes methods, making it hard to know +# which classes and functions are relevant and what their inputs and outputs +# mean. + +import numpy as np +import pandas as pd +import statsmodels.api as sm + +# ## Linear models + +# Assume you have data points with measurements `y` at positions `x` as +# well as measurement errors `y_err`. +# +# How can you use `statsmodels` to fit a straight line model to this data? +# +# For an extensive discussion see [Hogg et al. (2010), "Data analysis +# recipes: Fitting a model to data"](http://arxiv.org/abs/1008.4686) ... +# we'll use the example data given by them in Table 1. +# +# So the model is `f(x) = a * x + b` and on Figure 1 they print the result +# we want to reproduce ... the best-fit parameter and the parameter errors +# for a "standard weighted least-squares fit" for this data are: +# * `a = 2.24 +- 0.11` +# * `b = 34 +- 18` + +data = """ + x y y_err +201 592 61 +244 401 25 + 47 583 38 +287 402 15 +203 495 21 + 58 173 15 +210 479 27 +202 504 14 +198 510 30 +158 416 16 +165 393 14 +201 442 25 +157 317 52 +131 311 16 +166 400 34 +160 337 31 +186 423 42 +125 334 26 +218 533 16 +146 344 22 +""" +try: + from StringIO import StringIO +except ImportError: + from io import StringIO +data = pd.read_csv(StringIO(data), delim_whitespace=True).astype(float) + +# Note: for the results we compare with the paper here, they drop the +# first four points +data.head() + +# To fit a straight line use the weighted least squares class [WLS](https: +# //www.statsmodels.org/devel/generated/statsmodels.regression.linear_model. +# WLS.html) ... the parameters are called: +# * `exog` = `sm.add_constant(x)` +# * `endog` = `y` +# * `weights` = `1 / sqrt(y_err)` +# +# Note that `exog` must be a 2-dimensional array with `x` as a column and +# an extra column of ones. Adding this column of ones means you want to fit +# the model `y = a * x + b`, leaving it off means you want to fit the model +# `y = a * x`. +# +# And you have to use the option `cov_type='fixed scale'` to tell +# `statsmodels` that you really have measurement errors with an absolute +# scale. If you don't, `statsmodels` will treat the weights as relative +# weights between the data points and internally re-scale them so that the +# best-fit model will have `chi**2 / ndf = 1`. + +exog = sm.add_constant(data['x']) +endog = data['y'] +weights = 1. / (data['y_err']**2) +wls = sm.WLS(endog, exog, weights) +results = wls.fit(cov_type='fixed scale') +print(results.summary()) + +# ### Check against scipy.optimize.curve_fit + +# You can use `scipy.optimize.curve_fit` to get the best-fit parameters +# and parameter errors. +from scipy.optimize import curve_fit + + +def f(x, a, b): + return a * x + b + + +xdata = data['x'] +ydata = data['y'] +p0 = [0, 0] # initial parameter estimate +sigma = data['y_err'] +popt, pcov = curve_fit(f, xdata, ydata, p0, sigma, absolute_sigma=True) +perr = np.sqrt(np.diag(pcov)) +print('a = {0:10.3f} +- {1:10.3f}'.format(popt[0], perr[0])) +print('b = {0:10.3f} +- {1:10.3f}'.format(popt[1], perr[1])) + +# ### Check against self-written cost function + +# You can also use `scipy.optimize.minimize` and write your own cost +# function. +# This doesn't give you the parameter errors though ... you'd have +# to estimate the HESSE matrix separately ... +from scipy.optimize import minimize + + +def chi2(pars): + """Cost function. + """ + y_model = pars[0] * data['x'] + pars[1] + chi = (data['y'] - y_model) / data['y_err'] + return np.sum(chi**2) + + +result = minimize(fun=chi2, x0=[0, 0]) +popt = result.x +print('a = {0:10.3f}'.format(popt[0])) +print('b = {0:10.3f}'.format(popt[1])) + +# ## Non-linear models + +# TODO: we could use the examples from here: +# http://probfit.readthedocs.org/en/latest/api.html#probfit.costfunc.Chi2R +# egression diff --git a/examples/python/contrasts.py b/examples/python/contrasts.py new file mode 100644 index 0000000..58aaca6 --- /dev/null +++ b/examples/python/contrasts.py @@ -0,0 +1,239 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook contrasts.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Contrasts Overview + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm + +# This document is based heavily on this excellent resource from UCLA +# http://www.ats.ucla.edu/stat/r/library/contrast_coding.htm + +# A categorical variable of K categories, or levels, usually enters a +# regression as a sequence of K-1 dummy variables. This amounts to a linear +# hypothesis on the level means. That is, each test statistic for these +# variables amounts to testing whether the mean for that level is +# statistically significantly different from the mean of the base category. +# This dummy coding is called Treatment coding in R parlance, and we will +# follow this convention. There are, however, different coding methods that +# amount to different sets of linear hypotheses. +# +# In fact, the dummy coding is not technically a contrast coding. This is +# because the dummy variables add to one and are not functionally +# independent of the model's intercept. On the other hand, a set of +# *contrasts* for a categorical variable with `k` levels is a set of `k-1` +# functionally independent linear combinations of the factor level means +# that are also independent of the sum of the dummy variables. The dummy +# coding isn't wrong *per se*. It captures all of the coefficients, but it +# complicates matters when the model assumes independence of the +# coefficients such as in ANOVA. Linear regression models do not assume +# independence of the coefficients and thus dummy coding is often the only +# coding that is taught in this context. +# +# To have a look at the contrast matrices in Patsy, we will use data from +# UCLA ATS. First let's load the data. + +# #### Example Data + +import pandas as pd +url = 'https://stats.idre.ucla.edu/stat/data/hsb2.csv' +hsb2 = pd.read_table(url, delimiter=",") + +hsb2.head(10) + +# It will be instructive to look at the mean of the dependent variable, +# write, for each level of race ((1 = Hispanic, 2 = Asian, 3 = African +# American and 4 = Caucasian)). + +hsb2.groupby('race')['write'].mean() + +# #### Treatment (Dummy) Coding + +# Dummy coding is likely the most well known coding scheme. It compares +# each level of the categorical variable to a base reference level. The base +# reference level is the value of the intercept. It is the default contrast +# in Patsy for unordered categorical factors. The Treatment contrast matrix +# for race would be + +from patsy.contrasts import Treatment +levels = [1, 2, 3, 4] +contrast = Treatment(reference=0).code_without_intercept(levels) +print(contrast.matrix) + +# Here we used `reference=0`, which implies that the first level, +# Hispanic, is the reference category against which the other level effects +# are measured. As mentioned above, the columns do not sum to zero and are +# thus not independent of the intercept. To be explicit, let's look at how +# this would encode the `race` variable. + +hsb2.race.head(10) + +print(contrast.matrix[hsb2.race - 1, :][:20]) + +sm.categorical(hsb2.race.values) + +# This is a bit of a trick, as the `race` category conveniently maps to +# zero-based indices. If it does not, this conversion happens under the +# hood, so this won't work in general but nonetheless is a useful exercise +# to fix ideas. The below illustrates the output using the three contrasts +# above + +from statsmodels.formula.api import ols +mod = ols("write ~ C(race, Treatment)", data=hsb2) +res = mod.fit() +print(res.summary()) + +# We explicitly gave the contrast for race; however, since Treatment is +# the default, we could have omitted this. + +# ### Simple Coding + +# Like Treatment Coding, Simple Coding compares each level to a fixed +# reference level. However, with simple coding, the intercept is the grand +# mean of all the levels of the factors. Patsy doesn't have the Simple +# contrast included, but you can easily define your own contrasts. To do so, +# write a class that contains a code_with_intercept and a +# code_without_intercept method that returns a patsy.contrast.ContrastMatrix +# instance + +from patsy.contrasts import ContrastMatrix + + +def _name_levels(prefix, levels): + return ["[%s%s]" % (prefix, level) for level in levels] + + +class Simple(object): + def _simple_contrast(self, levels): + nlevels = len(levels) + contr = -1. / nlevels * np.ones((nlevels, nlevels - 1)) + contr[1:][np.diag_indices(nlevels - 1)] = (nlevels - 1.) / nlevels + return contr + + def code_with_intercept(self, levels): + contrast = np.column_stack((np.ones(len(levels)), + self._simple_contrast(levels))) + return ContrastMatrix(contrast, _name_levels("Simp.", levels)) + + def code_without_intercept(self, levels): + contrast = self._simple_contrast(levels) + return ContrastMatrix(contrast, _name_levels("Simp.", levels[:-1])) + + +hsb2.groupby('race')['write'].mean().mean() + +contrast = Simple().code_without_intercept(levels) +print(contrast.matrix) + +mod = ols("write ~ C(race, Simple)", data=hsb2) +res = mod.fit() +print(res.summary()) + +# ### Sum (Deviation) Coding + +# Sum coding compares the mean of the dependent variable for a given level +# to the overall mean of the dependent variable over all the levels. That +# is, it uses contrasts between each of the first k-1 levels and level k In +# this example, level 1 is compared to all the others, level 2 to all the +# others, and level 3 to all the others. + +from patsy.contrasts import Sum +contrast = Sum().code_without_intercept(levels) +print(contrast.matrix) + +mod = ols("write ~ C(race, Sum)", data=hsb2) +res = mod.fit() +print(res.summary()) + +# This corresponds to a parameterization that forces all the coefficients +# to sum to zero. Notice that the intercept here is the grand mean where the +# grand mean is the mean of means of the dependent variable by each level. + +hsb2.groupby('race')['write'].mean().mean() + +# ### Backward Difference Coding + +# In backward difference coding, the mean of the dependent variable for a +# level is compared with the mean of the dependent variable for the prior +# level. This type of coding may be useful for a nominal or an ordinal +# variable. + +from patsy.contrasts import Diff +contrast = Diff().code_without_intercept(levels) +print(contrast.matrix) + +mod = ols("write ~ C(race, Diff)", data=hsb2) +res = mod.fit() +print(res.summary()) + +# For example, here the coefficient on level 1 is the mean of `write` at +# level 2 compared with the mean at level 1. Ie., + +res.params["C(race, Diff)[D.1]"] +hsb2.groupby('race').mean()["write"][2] - hsb2.groupby( + 'race').mean()["write"][1] + +# ### Helmert Coding + +# Our version of Helmert coding is sometimes referred to as Reverse +# Helmert Coding. The mean of the dependent variable for a level is compared +# to the mean of the dependent variable over all previous levels. Hence, the +# name 'reverse' being sometimes applied to differentiate from forward +# Helmert coding. This comparison does not make much sense for a nominal +# variable such as race, but we would use the Helmert contrast like so: + +from patsy.contrasts import Helmert +contrast = Helmert().code_without_intercept(levels) +print(contrast.matrix) + +mod = ols("write ~ C(race, Helmert)", data=hsb2) +res = mod.fit() +print(res.summary()) + +# To illustrate, the comparison on level 4 is the mean of the dependent +# variable at the previous three levels taken from the mean at level 4 + +grouped = hsb2.groupby('race') +grouped.mean()["write"][4] - grouped.mean()["write"][:3].mean() + +# As you can see, these are only equal up to a constant. Other versions of +# the Helmert contrast give the actual difference in means. Regardless, the +# hypothesis tests are the same. + +k = 4 +1. / k * (grouped.mean()["write"][k] - grouped.mean()["write"][:k - 1].mean()) +k = 3 +1. / k * (grouped.mean()["write"][k] - grouped.mean()["write"][:k - 1].mean()) + +# ### Orthogonal Polynomial Coding + +# The coefficients taken on by polynomial coding for `k=4` levels are the +# linear, quadratic, and cubic trends in the categorical variable. The +# categorical variable here is assumed to be represented by an underlying, +# equally spaced numeric variable. Therefore, this type of encoding is used +# only for ordered categorical variables with equal spacing. In general, the +# polynomial contrast produces polynomials of order `k-1`. Since `race` is +# not an ordered factor variable let's use `read` as an example. First we +# need to create an ordered categorical from `read`. + +hsb2['readcat'] = np.asarray(pd.cut(hsb2.read, bins=3)) +hsb2.groupby('readcat').mean()['write'] + +from patsy.contrasts import Poly +levels = hsb2.readcat.unique().tolist() +contrast = Poly().code_without_intercept(levels) +print(contrast.matrix) + +mod = ols("write ~ C(readcat, Poly)", data=hsb2) +res = mod.fit() +print(res.summary()) + +# As you can see, readcat has a significant linear effect on the dependent +# variable `write` but not a significant quadratic or cubic effect. diff --git a/examples/python/discrete_choice_example.py b/examples/python/discrete_choice_example.py new file mode 100644 index 0000000..1aff497 --- /dev/null +++ b/examples/python/discrete_choice_example.py @@ -0,0 +1,228 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook discrete_choice_example.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Discrete Choice Models + +# ## Fair's Affair data + +# A survey of women only was conducted in 1974 by *Redbook* asking about +# extramarital affairs. + +from __future__ import print_function +import numpy as np +import pandas as pd +from scipy import stats +import matplotlib.pyplot as plt +import statsmodels.api as sm +from statsmodels.formula.api import logit + +print(sm.datasets.fair.SOURCE) + +print(sm.datasets.fair.NOTE) + +dta = sm.datasets.fair.load_pandas().data + +dta['affair'] = (dta['affairs'] > 0).astype(float) +print(dta.head(10)) + +print(dta.describe()) + +affair_mod = logit( + "affair ~ occupation + educ + occupation_husb" + "+ rate_marriage + age + yrs_married + children" + " + religious", dta).fit() + +print(affair_mod.summary()) + +# How well are we predicting? + +affair_mod.pred_table() + +# The coefficients of the discrete choice model do not tell us much. What +# we're after is marginal effects. + +mfx = affair_mod.get_margeff() +print(mfx.summary()) + +respondent1000 = dta.iloc[1000] +print(respondent1000) + +resp = dict( + zip( + range(1, 9), respondent1000[[ + "occupation", "educ", "occupation_husb", "rate_marriage", "age", + "yrs_married", "children", "religious" + ]].tolist())) +resp.update({0: 1}) +print(resp) + +mfx = affair_mod.get_margeff(atexog=resp) +print(mfx.summary()) + +# `predict` expects a `DataFrame` since `patsy` is used to select columns. + +respondent1000 = dta.iloc[[1000]] +affair_mod.predict(respondent1000) + +affair_mod.fittedvalues[1000] + +affair_mod.model.cdf(affair_mod.fittedvalues[1000]) + +# The "correct" model here is likely the Tobit model. We have an work in +# progress branch "tobit-model" on github, if anyone is interested in +# censored regression models. + +# ### Exercise: Logit vs Probit + +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot(111) +support = np.linspace(-6, 6, 1000) +ax.plot(support, stats.logistic.cdf(support), 'r-', label='Logistic') +ax.plot(support, stats.norm.cdf(support), label='Probit') +ax.legend() + +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot(111) +support = np.linspace(-6, 6, 1000) +ax.plot(support, stats.logistic.pdf(support), 'r-', label='Logistic') +ax.plot(support, stats.norm.pdf(support), label='Probit') +ax.legend() + +# Compare the estimates of the Logit Fair model above to a Probit model. +# Does the prediction table look better? Much difference in marginal +# effects? + +# ### Generalized Linear Model Example + +print(sm.datasets.star98.SOURCE) + +print(sm.datasets.star98.DESCRLONG) + +print(sm.datasets.star98.NOTE) + +dta = sm.datasets.star98.load_pandas().data +print(dta.columns) + +print(dta[[ + 'NABOVE', 'NBELOW', 'LOWINC', 'PERASIAN', 'PERBLACK', 'PERHISP', 'PERMINTE' +]].head(10)) + +print(dta[[ + 'AVYRSEXP', 'AVSALK', 'PERSPENK', 'PTRATIO', 'PCTAF', 'PCTCHRT', 'PCTYRRND' +]].head(10)) + +formula = 'NABOVE + NBELOW ~ LOWINC + PERASIAN + PERBLACK + PERHISP + PCTCHRT ' +formula += '+ PCTYRRND + PERMINTE*AVYRSEXP*AVSALK + PERSPENK*PTRATIO*PCTAF' + +# #### Aside: Binomial distribution + +# Toss a six-sided die 5 times, what's the probability of exactly 2 fours? + +stats.binom(5, 1. / 6).pmf(2) + +from scipy.misc import comb +comb(5, 2) * (1 / 6.)**2 * (5 / 6.)**3 + +from statsmodels.formula.api import glm +glm_mod = glm(formula, dta, family=sm.families.Binomial()).fit() + +print(glm_mod.summary()) + +# The number of trials + +glm_mod.model.data.orig_endog.sum(1) + +glm_mod.fittedvalues * glm_mod.model.data.orig_endog.sum(1) + +# First differences: We hold all explanatory variables constant at their +# means and manipulate the percentage of low income households to assess its +# impact +# on the response variables: + +exog = glm_mod.model.data.orig_exog # get the dataframe + +means25 = exog.mean() +print(means25) + +means25['LOWINC'] = exog['LOWINC'].quantile(.25) +print(means25) + +means75 = exog.mean() +means75['LOWINC'] = exog['LOWINC'].quantile(.75) +print(means75) + +# Again, `predict` expects a `DataFrame` since `patsy` is used to select +# columns. + +resp25 = glm_mod.predict(pd.DataFrame(means25).T) +resp75 = glm_mod.predict(pd.DataFrame(means75).T) +diff = resp75 - resp25 + +# The interquartile first difference for the percentage of low income +# households in a school district is: + +print("%2.4f%%" % (diff[0] * 100)) + +nobs = glm_mod.nobs +y = glm_mod.model.endog +yhat = glm_mod.mu + +from statsmodels.graphics.api import abline_plot +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot(111, ylabel='Observed Values', xlabel='Fitted Values') +ax.scatter(yhat, y) +y_vs_yhat = sm.OLS(y, sm.add_constant(yhat, prepend=True)).fit() +fig = abline_plot(model_results=y_vs_yhat, ax=ax) + +# #### Plot fitted values vs Pearson residuals + +# Pearson residuals are defined to be +# +# $$\frac{(y - \mu)}{\sqrt{(var(\mu))}}$$ +# +# where var is typically determined by the family. E.g., binomial variance +# is $np(1 - p)$ + +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot( + 111, + title='Residual Dependence Plot', + xlabel='Fitted Values', + ylabel='Pearson Residuals') +ax.scatter(yhat, stats.zscore(glm_mod.resid_pearson)) +ax.axis('tight') +ax.plot([0.0, 1.0], [0.0, 0.0], 'k-') + +# #### Histogram of standardized deviance residuals with Kernel Density +# Estimate overlayed + +# The definition of the deviance residuals depends on the family. For the +# Binomial distribution this is +# +# $$r_{dev} = sign\left(Y-\mu\right)*\sqrt{2n(Y\log\frac{Y}{\mu}+(1-Y)\log +# \frac{(1-Y)}{(1-\mu)}}$$ +# +# They can be used to detect ill-fitting covariates + +resid = glm_mod.resid_deviance +resid_std = stats.zscore(resid) +kde_resid = sm.nonparametric.KDEUnivariate(resid_std) +kde_resid.fit() + +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot(111, title="Standardized Deviance Residuals") +ax.hist( + resid_std, bins=25, normed=True) +ax.plot(kde_resid.support, kde_resid.density, 'r') + +# #### QQ-plot of deviance residuals + +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot(111) +fig = sm.graphics.qqplot(resid, line='r', ax=ax) diff --git a/examples/python/discrete_choice_overview.py b/examples/python/discrete_choice_overview.py new file mode 100644 index 0000000..1aa9d48 --- /dev/null +++ b/examples/python/discrete_choice_overview.py @@ -0,0 +1,109 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook discrete_choice_overview.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Discrete Choice Models Overview + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm + +# ## Data +# +# Load data from Spector and Mazzeo (1980). Examples follow Greene's +# Econometric Analysis Ch. 21 (5th Edition). + +spector_data = sm.datasets.spector.load() +spector_data.exog = sm.add_constant(spector_data.exog, prepend=False) + +# Inspect the data: + +print(spector_data.exog[:5, :]) +print(spector_data.endog[:5]) + +# ## Linear Probability Model (OLS) + +lpm_mod = sm.OLS(spector_data.endog, spector_data.exog) +lpm_res = lpm_mod.fit() +print('Parameters: ', lpm_res.params[:-1]) + +# ## Logit Model + +logit_mod = sm.Logit(spector_data.endog, spector_data.exog) +logit_res = logit_mod.fit(disp=0) +print('Parameters: ', logit_res.params) + +# Marginal Effects + +margeff = logit_res.get_margeff() +print(margeff.summary()) + +# As in all the discrete data models presented below, we can print a nice +# summary of results: + +print(logit_res.summary()) + +# ## Probit Model + +probit_mod = sm.Probit(spector_data.endog, spector_data.exog) +probit_res = probit_mod.fit() +probit_margeff = probit_res.get_margeff() +print('Parameters: ', probit_res.params) +print('Marginal effects: ') +print(probit_margeff.summary()) + +# ## Multinomial Logit + +# Load data from the American National Election Studies: + +anes_data = sm.datasets.anes96.load() +anes_exog = anes_data.exog +anes_exog = sm.add_constant(anes_exog, prepend=False) + +# Inspect the data: + +print(anes_data.exog[:5, :]) +print(anes_data.endog[:5]) + +# Fit MNL model: + +mlogit_mod = sm.MNLogit(anes_data.endog, anes_exog) +mlogit_res = mlogit_mod.fit() +print(mlogit_res.params) + +# ## Poisson +# +# Load the Rand data. Note that this example is similar to Cameron and +# Trivedi's `Microeconometrics` Table 20.5, but it is slightly different +# because of minor changes in the data. + +rand_data = sm.datasets.randhie.load() +rand_exog = rand_data.exog.view(float).reshape(len(rand_data.exog), -1) +rand_exog = sm.add_constant(rand_exog, prepend=False) + +# Fit Poisson model: + +poisson_mod = sm.Poisson(rand_data.endog, rand_exog) +poisson_res = poisson_mod.fit(method="newton") +print(poisson_res.summary()) + +# ## Negative Binomial +# +# The negative binomial model gives slightly different results. + +mod_nbin = sm.NegativeBinomial(rand_data.endog, rand_exog) +res_nbin = mod_nbin.fit(disp=False) +print(res_nbin.summary()) + +# ## Alternative solvers +# +# The default method for fitting discrete data MLE models is Newton- +# Raphson. You can use other solvers by using the ``method`` argument: + +mlogit_res = mlogit_mod.fit(method='bfgs', maxiter=100) +print(mlogit_res.summary()) diff --git a/examples/python/distributed_estimation.py b/examples/python/distributed_estimation.py new file mode 100644 index 0000000..15be505 --- /dev/null +++ b/examples/python/distributed_estimation.py @@ -0,0 +1,94 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook distributed_estimation.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# This notebook goes through a couple of examples to show how to use +# `distributed_estimation`. We import the `DistributedModel` class and make +# the exog and endog generators. + +import numpy as np +from scipy.stats.distributions import norm +from statsmodels.base.distributed_estimation import DistributedModel + + +def _exog_gen(exog, partitions): + """partitions exog data""" + + n_exog = exog.shape[0] + n_part = np.ceil(n_exog / partitions) + + ii = 0 + while ii < n_exog: + jj = int(min(ii + n_part, n_exog)) + yield exog[ii:jj, :] + ii += int(n_part) + + +def _endog_gen(endog, partitions): + """partitions endog data""" + + n_endog = endog.shape[0] + n_part = np.ceil(n_endog / partitions) + + ii = 0 + while ii < n_endog: + jj = int(min(ii + n_part, n_endog)) + yield endog[ii:jj] + ii += int(n_part) + + +# Next we generate some random data to serve as an example. + +X = np.random.normal(size=(1000, 25)) +beta = np.random.normal(size=25) +beta *= np.random.randint(0, 2, size=25) +y = norm.rvs(loc=X.dot(beta)) +m = 5 + +# This is the most basic fit, showing all of the defaults, which are to +# use OLS as the model class, and the debiasing procedure. + +debiased_OLS_mod = DistributedModel(m) +debiased_OLS_fit = debiased_OLS_mod.fit( + zip(_endog_gen(y, m), _exog_gen(X, m)), fit_kwds={"alpha": 0.2}) + +# Then we run through a slightly more complicated example which uses the +# GLM model class. + +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod.families import Gaussian + +debiased_GLM_mod = DistributedModel( + m, model_class=GLM, init_kwds={"family": Gaussian()}) +debiased_GLM_fit = debiased_GLM_mod.fit( + zip(_endog_gen(y, m), _exog_gen(X, m)), fit_kwds={"alpha": 0.2}) + +# We can also change the `estimation_method` and the `join_method`. The +# below example show how this works for the standard OLS case. Here we +# using a naive averaging approach instead of the debiasing procedure. + +from statsmodels.base.distributed_estimation import _est_regularized_naive, _join_naive + +naive_OLS_reg_mod = DistributedModel( + m, estimation_method=_est_regularized_naive, join_method=_join_naive) +naive_OLS_reg_params = naive_OLS_reg_mod.fit( + zip(_endog_gen(y, m), _exog_gen(X, m)), fit_kwds={"alpha": 0.2}) + +# Finally, we can also change the `results_class` used. The following +# example shows how this work for a simple case with an unregularized model +# and naive averaging. + +from statsmodels.base.distributed_estimation import _est_unregularized_naive, DistributedResults + +naive_OLS_unreg_mod = DistributedModel( + m, + estimation_method=_est_unregularized_naive, + join_method=_join_naive, + results_class=DistributedResults) +naive_OLS_unreg_params = naive_OLS_unreg_mod.fit( + zip(_endog_gen(y, m), _exog_gen(X, m)), fit_kwds={"alpha": 0.2}) diff --git a/examples/python/exponential_smoothing.py b/examples/python/exponential_smoothing.py new file mode 100644 index 0000000..9b42201 --- /dev/null +++ b/examples/python/exponential_smoothing.py @@ -0,0 +1,310 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook exponential_smoothing.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Tutorial +# +# Let us consider chapter 7 of the excellent treatise on the subject of +# Exponential Smoothing By Hyndman and Athanasopoulos [1]. +# We will work through all the examples in the chapter as they unfold. +# +# [1] [Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles +# and practice. OTexts, 2014.](https://www.otexts.org/fpp/7) + +# # Exponential smoothing +# +# First we load some data. We have included the R data in the notebook for +# expedience. + +import os +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +from statsmodels.tsa.api import ExponentialSmoothing, SimpleExpSmoothing, Holt + +data = [ + 446.6565, 454.4733, 455.663, 423.6322, 456.2713, 440.5881, 425.3325, + 485.1494, 506.0482, 526.792, 514.2689, 494.211 +] +index = pd.DatetimeIndex(start='1996', end='2008', freq='A') +oildata = pd.Series(data, index) +oildata.index = pd.DatetimeIndex( + oildata.index, freq=pd.infer_freq(oildata.index)) + +data = [ + 17.5534, 21.86, 23.8866, 26.9293, 26.8885, 28.8314, 30.0751, 30.9535, + 30.1857, 31.5797, 32.5776, 33.4774, 39.0216, 41.3864, 41.5966 +] +index = pd.DatetimeIndex(start='1990', end='2005', freq='A') +air = pd.Series(data, index) +air.index = pd.DatetimeIndex(air.index, freq=pd.infer_freq(air.index)) + +data = [ + 263.9177, 268.3072, 260.6626, 266.6394, 277.5158, 283.834, 290.309, + 292.4742, 300.8307, 309.2867, 318.3311, 329.3724, 338.884, 339.2441, + 328.6006, 314.2554, 314.4597, 321.4138, 329.7893, 346.3852, 352.2979, + 348.3705, 417.5629, 417.1236, 417.7495, 412.2339, 411.9468, 394.6971, + 401.4993, 408.2705, 414.2428 +] +index = pd.DatetimeIndex(start='1970', end='2001', freq='A') +livestock2 = pd.Series(data, index) +livestock2.index = pd.DatetimeIndex( + livestock2.index, freq=pd.infer_freq(livestock2.index)) + +data = [407.9979, 403.4608, 413.8249, 428.105, 445.3387, 452.9942, 455.7402] +index = pd.DatetimeIndex(start='2001', end='2008', freq='A') +livestock3 = pd.Series(data, index) +livestock3.index = pd.DatetimeIndex( + livestock3.index, freq=pd.infer_freq(livestock3.index)) + +data = [ + 41.7275, 24.0418, 32.3281, 37.3287, 46.2132, 29.3463, 36.4829, 42.9777, + 48.9015, 31.1802, 37.7179, 40.4202, 51.2069, 31.8872, 40.9783, 43.7725, + 55.5586, 33.8509, 42.0764, 45.6423, 59.7668, 35.1919, 44.3197, 47.9137 +] +index = pd.DatetimeIndex(start='2005', end='2010-Q4', freq='QS') +aust = pd.Series(data, index) +aust.index = pd.DatetimeIndex(aust.index, freq=pd.infer_freq(aust.index)) + +# ## Simple Exponential Smoothing +# Lets use Simple Exponential Smoothing to forecast the below oil data. + +ax = oildata.plot() +ax.set_xlabel("Year") +ax.set_ylabel("Oil (millions of tonnes)") +plt.show() +print("Figure 7.1: Oil production in Saudi Arabia from 1996 to 2007.") + +# Here we run three variants of simple exponential smoothing: +# 1. In ```fit1``` we do not use the auto optimization but instead choose +# to explicitly provide the model with the $\alpha=0.2$ parameter +# 2. In ```fit2``` as above we choose an $\alpha=0.6$ +# 3. In ```fit3``` we allow statsmodels to automatically find an optimized +# $\alpha$ value for us. This is the recommended approach. + +fit1 = SimpleExpSmoothing(oildata).fit(smoothing_level=0.2, optimized=False) +fcast1 = fit1.forecast(3).rename(r'$\alpha=0.2$') +fit2 = SimpleExpSmoothing(oildata).fit(smoothing_level=0.6, optimized=False) +fcast2 = fit2.forecast(3).rename(r'$\alpha=0.6$') +fit3 = SimpleExpSmoothing(oildata).fit() +fcast3 = fit3.forecast(3).rename( + r'$\alpha=%s$' % fit3.model.params['smoothing_level']) + +ax = oildata.plot(marker='o', color='black', figsize=(12, 8)) +fcast1.plot(marker='o', ax=ax, color='blue', legend=True) +fit1.fittedvalues.plot(marker='o', ax=ax, color='blue') +fcast2.plot(marker='o', ax=ax, color='red', legend=True) + +fit2.fittedvalues.plot(marker='o', ax=ax, color='red') +fcast3.plot(marker='o', ax=ax, color='green', legend=True) +fit3.fittedvalues.plot(marker='o', ax=ax, color='green') +plt.show() + +# ## Holt's Method +# +# Lets take a look at another example. +# This time we use air pollution data and the Holt's Method. +# We will fit three examples again. +# 1. In ```fit1``` we again choose not to use the optimizer and provide +# explicit values for $\alpha=0.8$ and $\beta=0.2$ +# 2. In ```fit2``` we do the same as in ```fit1``` but choose to use an +# exponential model rather than a Holt's additive model. +# 3. In ```fit3``` we used a damped versions of the Holt's additive model +# but allow the dampening parameter $\phi$ to be optimized while fixing the +# values for $\alpha=0.8$ and $\beta=0.2$ + +fit1 = Holt(air).fit(smoothing_level=0.8, smoothing_slope=0.2, optimized=False) +fcast1 = fit1.forecast(5).rename("Holt's linear trend") +fit2 = Holt( + air, exponential=True).fit( + smoothing_level=0.8, smoothing_slope=0.2, optimized=False) +fcast2 = fit2.forecast(5).rename("Exponential trend") +fit3 = Holt(air, damped=True).fit(smoothing_level=0.8, smoothing_slope=0.2) +fcast3 = fit3.forecast(5).rename("Additive damped trend") + +ax = air.plot(color="black", marker="o", figsize=(12, 8)) +fit1.fittedvalues.plot(ax=ax, color='blue') +fcast1.plot(ax=ax, color='blue', marker="o", legend=True) +fit2.fittedvalues.plot(ax=ax, color='red') +fcast2.plot(ax=ax, color='red', marker="o", legend=True) +fit3.fittedvalues.plot(ax=ax, color='green') +fcast3.plot(ax=ax, color='green', marker="o", legend=True) + +plt.show() + +# ### Seasonally adjusted data +# Lets look at some seasonally adjusted livestock data. We fit five Holt's +# models. +# The below table allows us to compare results when we use exponential +# versus additive and damped versus non-damped. +# +# Note: ```fit4``` does not allow the parameter $\phi$ to be optimized by +# providing a fixed value of $\phi=0.98$ + +fit1 = SimpleExpSmoothing(livestock2).fit() +fit2 = Holt(livestock2).fit() +fit3 = Holt(livestock2, exponential=True).fit() +fit4 = Holt(livestock2, damped=True).fit(damping_slope=0.98) +fit5 = Holt(livestock2, exponential=True, damped=True).fit() +params = [ + 'smoothing_level', 'smoothing_slope', 'damping_slope', 'initial_level', + 'initial_slope' +] +results = pd.DataFrame( + index=[r"$\alpha$", r"$\beta$", r"$\phi$", r"$l_0$", "$b_0$", "SSE"], + columns=['SES', "Holt's", "Exponential", "Additive", "Multiplicative"]) +results["SES"] = [fit1.params[p] for p in params] + [fit1.sse] +results["Holt's"] = [fit2.params[p] for p in params] + [fit2.sse] +results["Exponential"] = [fit3.params[p] for p in params] + [fit3.sse] +results["Additive"] = [fit4.params[p] for p in params] + [fit4.sse] +results["Multiplicative"] = [fit5.params[p] for p in params] + [fit5.sse] +results + +# ### Plots of Seasonally Adjusted Data +# The following plots allow us to evaluate the level and slope/trend +# components of the above table's fits. + +for fit in [fit2, fit4]: + pd.DataFrame(np.c_[fit.level, fit.slope]).rename(columns={ + 0: 'level', + 1: 'slope' + }).plot(subplots=True) +plt.show() +print( + 'Figure 7.4: Level and slope components for Holt’s linear trend method and the additive damped trend method.' +) + +# ## Comparison +# Here we plot a comparison Simple Exponential Smoothing and Holt's +# Methods for various additive, exponential and damped combinations. All of +# the models parameters will be optimized by statsmodels. + +fit1 = SimpleExpSmoothing(livestock2).fit() +fcast1 = fit1.forecast(9).rename("SES") +fit2 = Holt(livestock2).fit() +fcast2 = fit2.forecast(9).rename("Holt's") +fit3 = Holt(livestock2, exponential=True).fit() +fcast3 = fit3.forecast(9).rename("Exponential") +fit4 = Holt(livestock2, damped=True).fit(damping_slope=0.98) +fcast4 = fit4.forecast(9).rename("Additive Damped") +fit5 = Holt(livestock2, exponential=True, damped=True).fit() +fcast5 = fit5.forecast(9).rename("Multiplicative Damped") + +ax = livestock2.plot(color="black", marker="o", figsize=(12, 8)) +livestock3.plot(ax=ax, color="black", marker="o", legend=False) +fcast1.plot(ax=ax, color='red', legend=True) +fcast2.plot(ax=ax, color='green', legend=True) +fcast3.plot(ax=ax, color='blue', legend=True) +fcast4.plot(ax=ax, color='cyan', legend=True) +fcast5.plot(ax=ax, color='magenta', legend=True) +ax.set_ylabel('Livestock, sheep in Asia (millions)') +plt.show() +print( + 'Figure 7.5: Forecasting livestock, sheep in Asia: comparing forecasting performance of non-seasonal methods.' +) + +# ## Holt's Winters Seasonal +# Finally we are able to run full Holt's Winters Seasonal Exponential +# Smoothing including a trend component and a seasonal component. +# statsmodels allows for all the combinations including as shown in the +# examples below: +# 1. ```fit1``` additive trend, additive seasonal of period +# ```season_length=4``` and the use of a Box-Cox transformation. +# 1. ```fit2``` additive trend, multiplicative seasonal of period +# ```season_length=4``` and the use of a Box-Cox transformation.. +# 1. ```fit3``` additive damped trend, additive seasonal of period +# ```season_length=4``` and the use of a Box-Cox transformation. +# 1. ```fit4``` additive damped trend, multiplicative seasonal of period +# ```season_length=4``` and the use of a Box-Cox transformation. +# +# The plot shows the results and forecast for ```fit1``` and ```fit2```. +# The table allows us to compare the results and parameterizations. + +fit1 = ExponentialSmoothing( + aust, seasonal_periods=4, trend='add', seasonal='add').fit(use_boxcox=True) +fit2 = ExponentialSmoothing( + aust, seasonal_periods=4, trend='add', seasonal='mul').fit(use_boxcox=True) +fit3 = ExponentialSmoothing( + aust, seasonal_periods=4, trend='add', seasonal='add', + damped=True).fit(use_boxcox=True) +fit4 = ExponentialSmoothing( + aust, seasonal_periods=4, trend='add', seasonal='mul', + damped=True).fit(use_boxcox=True) +results = pd.DataFrame(index=[ + r"$\alpha$", r"$\beta$", r"$\phi$", r"$\gamma$", r"$l_0$", "$b_0$", "SSE" +]) +params = [ + 'smoothing_level', 'smoothing_slope', 'damping_slope', + 'smoothing_seasonal', 'initial_level', 'initial_slope' +] +results["Additive"] = [fit1.params[p] for p in params] + [fit1.sse] +results["Multiplicative"] = [fit2.params[p] for p in params] + [fit2.sse] +results["Additive Dam"] = [fit3.params[p] for p in params] + [fit3.sse] +results["Multiplica Dam"] = [fit4.params[p] for p in params] + [fit4.sse] + +ax = aust.plot( + figsize=(10, 6), + marker='o', + color='black', + title="Forecasts from Holt-Winters' multiplicative method") +ax.set_ylabel("International visitor night in Australia (millions)") +ax.set_xlabel("Year") +fit1.fittedvalues.plot(ax=ax, style='--', color='red') +fit2.fittedvalues.plot(ax=ax, style='--', color='green') + +fit1.forecast(8).rename('Holt-Winters (add-add-seasonal)').plot( + ax=ax, style='--', marker='o', color='red', legend=True) +fit2.forecast(8).rename('Holt-Winters (add-mul-seasonal)').plot( + ax=ax, style='--', marker='o', color='green', legend=True) + +plt.show() +print( + "Figure 7.6: Forecasting international visitor nights in Australia using Holt-Winters method with both additive and multiplicative seasonality." +) + +results + +# ### The Internals +# It is possible to get at the internals of the Exponential Smoothing +# models. +# +# Here we show some tables that allow you to view side by side the +# original values $y_t$, the level $l_t$, the trend $b_t$, the season $s_t$ +# and the fitted values $\hat{y}_t$. + +df = pd.DataFrame( + np.c_[aust, fit1.level, fit1.slope, fit1.season, fit1.fittedvalues], + columns=[r'$y_t$', r'$l_t$', r'$b_t$', r'$s_t$', r'$\hat{y}_t$'], + index=aust.index) +df.append(fit1.forecast(8).rename(r'$\hat{y}_t$').to_frame(), sort=True) + +df = pd.DataFrame( + np.c_[aust, fit2.level, fit2.slope, fit2.season, fit2.fittedvalues], + columns=[r'$y_t$', r'$l_t$', r'$b_t$', r'$s_t$', r'$\hat{y}_t$'], + index=aust.index) +df.append(fit2.forecast(8).rename(r'$\hat{y}_t$').to_frame(), sort=True) + +# Finally lets look at the levels, slopes/trends and seasonal components +# of the models. + +states1 = pd.DataFrame( + np.c_[fit1.level, fit1.slope, fit1.season], + columns=['level', 'slope', 'seasonal'], + index=aust.index) +states2 = pd.DataFrame( + np.c_[fit2.level, fit2.slope, fit2.season], + columns=['level', 'slope', 'seasonal'], + index=aust.index) +fig, [[ax1, ax4], [ax2, ax5], [ax3, ax6]] = plt.subplots(3, 2, figsize=(12, 8)) +states1[['level']].plot(ax=ax1) +states1[['slope']].plot(ax=ax2) +states1[['seasonal']].plot(ax=ax3) +states2[['level']].plot(ax=ax4) +states2[['slope']].plot(ax=ax5) +states2[['seasonal']].plot(ax=ax6) +plt.show() diff --git a/examples/python/formulas.py b/examples/python/formulas.py new file mode 100644 index 0000000..7d922e3 --- /dev/null +++ b/examples/python/formulas.py @@ -0,0 +1,166 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook formulas.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Formulas: Fitting models using R-style formulas + +# Since version 0.5.0, ``statsmodels`` allows users to fit statistical +# models using R-style formulas. Internally, ``statsmodels`` uses the +# [patsy](http://patsy.readthedocs.org/) package to convert formulas and +# data to the matrices that are used in model fitting. The formula framework +# is quite powerful; this tutorial only scratches the surface. A full +# description of the formula language can be found in the ``patsy`` docs: +# +# * [Patsy formula language description](http://patsy.readthedocs.org/) +# +# ## Loading modules and functions + +from __future__ import print_function +import numpy as np # noqa:F401 needed in namespace for patsy +import statsmodels.api as sm + +# #### Import convention + +# You can import explicitly from statsmodels.formula.api + +from statsmodels.formula.api import ols + +# Alternatively, you can just use the `formula` namespace of the main +# `statsmodels.api`. + +sm.formula.ols + +# Or you can use the following conventioin + +import statsmodels.formula.api as smf + +# These names are just a convenient way to get access to each model's +# `from_formula` classmethod. See, for instance + +sm.OLS.from_formula + +# All of the lower case models accept ``formula`` and ``data`` arguments, +# whereas upper case ones take ``endog`` and ``exog`` design matrices. +# ``formula`` accepts a string which describes the model in terms of a +# ``patsy`` formula. ``data`` takes a [pandas](http://pandas.pydata.org/) +# data frame or any other data structure that defines a ``__getitem__`` for +# variable names like a structured array or a dictionary of variables. +# +# ``dir(sm.formula)`` will print a list of available models. +# +# Formula-compatible models have the following generic call signature: +# ``(formula, data, subset=None, *args, **kwargs)`` + +# +# ## OLS regression using formulas +# +# To begin, we fit the linear model described on the [Getting +# Started](gettingstarted.html) page. Download the data, subset columns, and +# list-wise delete to remove missing observations: + +dta = sm.datasets.get_rdataset("Guerry", "HistData", cache=True) + +df = dta.data[['Lottery', 'Literacy', 'Wealth', 'Region']].dropna() +df.head() + +# Fit the model: + +mod = ols(formula='Lottery ~ Literacy + Wealth + Region', data=df) +res = mod.fit() +print(res.summary()) + +# ## Categorical variables +# +# Looking at the summary printed above, notice that ``patsy`` determined +# that elements of *Region* were text strings, so it treated *Region* as a +# categorical variable. `patsy`'s default is also to include an intercept, +# so we automatically dropped one of the *Region* categories. +# +# If *Region* had been an integer variable that we wanted to treat +# explicitly as categorical, we could have done so by using the ``C()`` +# operator: + +res = ols(formula='Lottery ~ Literacy + Wealth + C(Region)', data=df).fit() +print(res.params) + +# Patsy's mode advanced features for categorical variables are discussed +# in: [Patsy: Contrast Coding Systems for categorical +# variables](contrasts.html) + +# ## Operators +# +# We have already seen that "~" separates the left-hand side of the model +# from the right-hand side, and that "+" adds new columns to the design +# matrix. +# +# ### Removing variables +# +# The "-" sign can be used to remove columns/variables. For instance, we +# can remove the intercept from a model by: + +res = ols(formula='Lottery ~ Literacy + Wealth + C(Region) -1 ', data=df).fit() +print(res.params) + +# ### Multiplicative interactions +# +# ":" adds a new column to the design matrix with the interaction of the +# other two columns. "*" will also include the individual columns that were +# multiplied together: + +res1 = ols(formula='Lottery ~ Literacy : Wealth - 1', data=df).fit() +res2 = ols(formula='Lottery ~ Literacy * Wealth - 1', data=df).fit() +print(res1.params, '\n') +print(res2.params) + +# Many other things are possible with operators. Please consult the [patsy +# docs](https://patsy.readthedocs.org/en/latest/formulas.html) to learn +# more. + +# ## Functions +# +# You can apply vectorized functions to the variables in your model: + +res = smf.ols(formula='Lottery ~ np.log(Literacy)', data=df).fit() +print(res.params) + +# Define a custom function: + + +def log_plus_1(x): + return np.log(x) + 1. + + +res = smf.ols(formula='Lottery ~ log_plus_1(Literacy)', data=df).fit() +print(res.params) + +# Any function that is in the calling namespace is available to the +# formula. + +# ## Using formulas with models that do not (yet) support them +# +# Even if a given `statsmodels` function does not support formulas, you +# can still use `patsy`'s formula language to produce design matrices. Those +# matrices +# can then be fed to the fitting function as `endog` and `exog` arguments. +# +# To generate ``numpy`` arrays: + +import patsy +f = 'Lottery ~ Literacy * Wealth' +y, X = patsy.dmatrices(f, df, return_type='matrix') +print(y[:5]) +print(X[:5]) + +# To generate pandas data frames: + +f = 'Lottery ~ Literacy * Wealth' +y, X = patsy.dmatrices(f, df, return_type='dataframe') +print(y[:5]) +print(X[:5]) + +print(sm.OLS(y, X).fit().summary()) diff --git a/examples/python/generic_mle.py b/examples/python/generic_mle.py new file mode 100644 index 0000000..d6f55d0 --- /dev/null +++ b/examples/python/generic_mle.py @@ -0,0 +1,242 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook generic_mle.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Maximum Likelihood Estimation (Generic models) + +# This tutorial explains how to quickly implement new maximum likelihood +# models in `statsmodels`. We give two examples: +# +# 1. Probit model for binary dependent variables +# 2. Negative binomial model for count data +# +# The `GenericLikelihoodModel` class eases the process by providing tools +# such as automatic numeric differentiation and a unified interface to +# ``scipy`` optimization functions. Using ``statsmodels``, users can fit new +# MLE models simply by "plugging-in" a log-likelihood function. + +# ## Example 1: Probit model + +from __future__ import print_function +import numpy as np +from scipy import stats +import statsmodels.api as sm +from statsmodels.base.model import GenericLikelihoodModel + +# The ``Spector`` dataset is distributed with ``statsmodels``. You can +# access a vector of values for the dependent variable (``endog``) and a +# matrix of regressors (``exog``) like this: + +data = sm.datasets.spector.load_pandas() +exog = data.exog +endog = data.endog +print(sm.datasets.spector.NOTE) +print(data.exog.head()) + +# Them, we add a constant to the matrix of regressors: + +exog = sm.add_constant(exog, prepend=True) + +# To create your own Likelihood Model, you simply need to overwrite the +# loglike method. + + +class MyProbit(GenericLikelihoodModel): + def loglike(self, params): + exog = self.exog + endog = self.endog + q = 2 * endog - 1 + return stats.norm.logcdf(q * np.dot(exog, params)).sum() + + +# Estimate the model and print a summary: + +sm_probit_manual = MyProbit(endog, exog).fit() +print(sm_probit_manual.summary()) + +# Compare your Probit implementation to ``statsmodels``' "canned" +# implementation: + +sm_probit_canned = sm.Probit(endog, exog).fit() + +print(sm_probit_canned.params) +print(sm_probit_manual.params) + +print(sm_probit_canned.cov_params()) +print(sm_probit_manual.cov_params()) + +# Notice that the ``GenericMaximumLikelihood`` class provides automatic +# differentiation, so we didn't have to provide Hessian or Score functions +# in order to calculate the covariance estimates. + +# +# +# ## Example 2: Negative Binomial Regression for Count Data +# +# Consider a negative binomial regression model for count data with +# log-likelihood (type NB-2) function expressed as: +# +# $$ +# \mathcal{L}(\beta_j; y, \alpha) = \sum_{i=1}^n y_i ln +# \left ( \frac{\alpha exp(X_i'\beta)}{1+\alpha exp(X_i'\beta)} \right +# ) - +# \frac{1}{\alpha} ln(1+\alpha exp(X_i'\beta)) + ln \Gamma (y_i + +# 1/\alpha) - ln \Gamma (y_i+1) - ln \Gamma (1/\alpha) +# $$ +# +# with a matrix of regressors $X$, a vector of coefficients $\beta$, +# and the negative binomial heterogeneity parameter $\alpha$. +# +# Using the ``nbinom`` distribution from ``scipy``, we can write this +# likelihood +# simply as: +# + +import numpy as np +from scipy.stats import nbinom + + +def _ll_nb2(y, X, beta, alph): + mu = np.exp(np.dot(X, beta)) + size = 1 / alph + prob = size / (size + mu) + ll = nbinom.logpmf(y, size, prob) + return ll + + +# ### New Model Class +# +# We create a new model class which inherits from +# ``GenericLikelihoodModel``: + +from statsmodels.base.model import GenericLikelihoodModel + + +class NBin(GenericLikelihoodModel): + def __init__(self, endog, exog, **kwds): + super(NBin, self).__init__(endog, exog, **kwds) + + def nloglikeobs(self, params): + alph = params[-1] + beta = params[:-1] + ll = _ll_nb2(self.endog, self.exog, beta, alph) + return -ll + + def fit(self, start_params=None, maxiter=10000, maxfun=5000, **kwds): + # we have one additional parameter and we need to add it for summary + self.exog_names.append('alpha') + if start_params == None: + # Reasonable starting values + start_params = np.append(np.zeros(self.exog.shape[1]), .5) + # intercept + start_params[-2] = np.log(self.endog.mean()) + return super(NBin, self).fit( + start_params=start_params, maxiter=maxiter, maxfun=maxfun, **kwds) + + +# Two important things to notice: +# +# + ``nloglikeobs``: This function should return one evaluation of the +# negative log-likelihood function per observation in your dataset (i.e. +# rows of the endog/X matrix). +# + ``start_params``: A one-dimensional array of starting values needs to +# be provided. The size of this array determines the number of parameters +# that will be used in optimization. +# +# That's it! You're done! +# +# ### Usage Example +# +# The [Medpar](https://raw.githubusercontent.com/vincentarelbundock/Rdatas +# ets/doc/COUNT/medpar.html) +# dataset is hosted in CSV format at the [Rdatasets repository](https://ra +# w.githubusercontent.com/vincentarelbundock/Rdatasets). We use the +# ``read_csv`` +# function from the [Pandas library](http://pandas.pydata.org) to load the +# data +# in memory. We then print the first few columns: +# + +import statsmodels.api as sm + +medpar = sm.datasets.get_rdataset("medpar", "COUNT", cache=True).data + +medpar.head() + +# The model we are interested in has a vector of non-negative integers as +# dependent variable (``los``), and 5 regressors: ``Intercept``, +# ``type2``, +# ``type3``, ``hmo``, ``white``. +# +# For estimation, we need to create two variables to hold our regressors +# and the outcome variable. These can be ndarrays or pandas objects. + +y = medpar.los +X = medpar[["type2", "type3", "hmo", "white"]].copy() +X["constant"] = 1 + +# Then, we fit the model and extract some information: + +mod = NBin(y, X) +res = mod.fit() + +# Extract parameter estimates, standard errors, p-values, AIC, etc.: + +print('Parameters: ', res.params) +print('Standard errors: ', res.bse) +print('P-values: ', res.pvalues) +print('AIC: ', res.aic) + +# As usual, you can obtain a full list of available information by typing +# ``dir(res)``. +# We can also look at the summary of the estimation results. + +print(res.summary()) + +# ### Testing + +# We can check the results by using the statsmodels implementation of the +# Negative Binomial model, which uses the analytic score function and +# Hessian. + +res_nbin = sm.NegativeBinomial(y, X).fit(disp=0) +print(res_nbin.summary()) + +print(res_nbin.params) + +print(res_nbin.bse) + +# Or we could compare them to results obtained using the MASS +# implementation for R: +# +# url = 'https://raw.githubusercontent.com/vincentarelbundock/Rdataset +# s/csv/COUNT/medpar.csv' +# medpar = read.csv(url) +# f = los~factor(type)+hmo+white +# +# library(MASS) +# mod = glm.nb(f, medpar) +# coef(summary(mod)) +# Estimate Std. Error z value Pr(>|z|) +# (Intercept) 2.31027893 0.06744676 34.253370 3.885556e-257 +# factor(type)2 0.22124898 0.05045746 4.384861 1.160597e-05 +# factor(type)3 0.70615882 0.07599849 9.291748 1.517751e-20 +# hmo -0.06795522 0.05321375 -1.277024 2.015939e-01 +# white -0.12906544 0.06836272 -1.887951 5.903257e-02 +# +# ### Numerical precision +# +# The ``statsmodels`` generic MLE and ``R`` parameter estimates agree up +# to the fourth decimal. The standard errors, however, agree only up to the +# second decimal. This discrepancy is the result of imprecision in our +# Hessian numerical estimates. In the current context, the difference +# between ``MASS`` and ``statsmodels`` standard error estimates is +# substantively irrelevant, but it highlights the fact that users who need +# very precise estimates may not always want to rely on default settings +# when using numerical derivatives. In such cases, it is better to use +# analytical derivatives with the ``LikelihoodModel`` class. diff --git a/examples/python/glm.py b/examples/python/glm.py new file mode 100644 index 0000000..a14072b --- /dev/null +++ b/examples/python/glm.py @@ -0,0 +1,165 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook glm.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Generalized Linear Models + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm +from scipy import stats +from matplotlib import pyplot as plt + +# ## GLM: Binomial response data +# +# ### Load data +# +# In this example, we use the Star98 dataset which was taken with +# permission +# from Jeff Gill (2000) Generalized linear models: A unified approach. +# Codebook +# information can be obtained by typing: + +print(sm.datasets.star98.NOTE) + +# Load the data and add a constant to the exogenous (independent) +# variables: + +data = sm.datasets.star98.load() +data.exog = sm.add_constant(data.exog, prepend=False) + +# The dependent variable is N by 2 (Success: NABOVE, Failure: NBELOW): + +print(data.endog[:5, :]) + +# The independent variables include all the other variables described +# above, as +# well as the interaction terms: + +print(data.exog[:2, :]) + +# ### Fit and summary + +glm_binom = sm.GLM(data.endog, data.exog, family=sm.families.Binomial()) +res = glm_binom.fit() +print(res.summary()) + +# ### Quantities of interest + +print('Total number of trials:', data.endog[0].sum()) +print('Parameters: ', res.params) +print('T-values: ', res.tvalues) + +# First differences: We hold all explanatory variables constant at their +# means and manipulate the percentage of low income households to assess its +# impact on the response variables: + +means = data.exog.mean(axis=0) +means25 = means.copy() +means25[0] = stats.scoreatpercentile(data.exog[:, 0], 25) +means75 = means.copy() +means75[0] = lowinc_75per = stats.scoreatpercentile(data.exog[:, 0], 75) +resp_25 = res.predict(means25) +resp_75 = res.predict(means75) +diff = resp_75 - resp_25 + +# The interquartile first difference for the percentage of low income +# households in a school district is: + +print("%2.4f%%" % (diff * 100)) + +# ### Plots +# +# We extract information that will be used to draw some interesting +# plots: + +nobs = res.nobs +y = data.endog[:, 0] / data.endog.sum(1) +yhat = res.mu + +# Plot yhat vs y: + +from statsmodels.graphics.api import abline_plot + +fig, ax = plt.subplots() +ax.scatter(yhat, y) +line_fit = sm.OLS(y, sm.add_constant(yhat, prepend=True)).fit() +abline_plot(model_results=line_fit, ax=ax) + +ax.set_title('Model Fit Plot') +ax.set_ylabel('Observed values') +ax.set_xlabel('Fitted values') + +# Plot yhat vs. Pearson residuals: + +fig, ax = plt.subplots() + +ax.scatter(yhat, res.resid_pearson) +ax.hlines(0, 0, 1) +ax.set_xlim(0, 1) +ax.set_title('Residual Dependence Plot') +ax.set_ylabel('Pearson Residuals') +ax.set_xlabel('Fitted values') + +# Histogram of standardized deviance residuals: + +from scipy import stats + +fig, ax = plt.subplots() + +resid = res.resid_deviance.copy() +resid_std = stats.zscore(resid) +ax.hist(resid_std, bins=25) +ax.set_title('Histogram of standardized deviance residuals') + +# QQ Plot of Deviance Residuals: + +from statsmodels import graphics +graphics.gofplots.qqplot(resid, line='r') + +# ## GLM: Gamma for proportional count response +# +# ### Load data +# +# In the example above, we printed the ``NOTE`` attribute to learn about +# the +# Star98 dataset. Statsmodels datasets ships with other useful +# information. For +# example: + +print(sm.datasets.scotland.DESCRLONG) + +# Load the data and add a constant to the exogenous variables: + +data2 = sm.datasets.scotland.load() +data2.exog = sm.add_constant(data2.exog, prepend=False) +print(data2.exog[:5, :]) +print(data2.endog[:5]) + +# ### Fit and summary + +glm_gamma = sm.GLM(data2.endog, data2.exog, family=sm.families.Gamma()) +glm_results = glm_gamma.fit() +print(glm_results.summary()) + +# ## GLM: Gaussian distribution with a noncanonical link +# +# ### Artificial data + +nobs2 = 100 +x = np.arange(nobs2) +np.random.seed(54321) +X = np.column_stack((x, x**2)) +X = sm.add_constant(X, prepend=False) +lny = np.exp(-(.03 * x + .0001 * x**2 - 1.0)) + .001 * np.random.rand(nobs2) + +# ### Fit and summary + +gauss_log = sm.GLM(lny, X, family=sm.families.Gaussian(sm.families.links.log)) +gauss_log_results = gauss_log.fit() +print(gauss_log_results.summary()) diff --git a/examples/python/glm_formula.py b/examples/python/glm_formula.py new file mode 100644 index 0000000..cc5f7ce --- /dev/null +++ b/examples/python/glm_formula.py @@ -0,0 +1,53 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook glm_formula.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Generalized Linear Models (Formula) + +# This notebook illustrates how you can use R-style formulas to fit +# Generalized Linear Models. +# +# To begin, we load the ``Star98`` dataset and we construct a formula and +# pre-process the data: + +from __future__ import print_function +import statsmodels.api as sm +import statsmodels.formula.api as smf +star98 = sm.datasets.star98.load_pandas().data +formula = 'SUCCESS ~ LOWINC + PERASIAN + PERBLACK + PERHISP + PCTCHRT + PCTYRRND + PERMINTE*AVYRSEXP*AVSALK + PERSPENK*PTRATIO*PCTAF' +dta = star98[[ + 'NABOVE', 'NBELOW', 'LOWINC', 'PERASIAN', 'PERBLACK', 'PERHISP', 'PCTCHRT', + 'PCTYRRND', 'PERMINTE', 'AVYRSEXP', 'AVSALK', 'PERSPENK', 'PTRATIO', + 'PCTAF' +]].copy() +endog = dta['NABOVE'] / (dta['NABOVE'] + dta.pop('NBELOW')) +del dta['NABOVE'] +dta['SUCCESS'] = endog + +# Then, we fit the GLM model: + +mod1 = smf.glm(formula=formula, data=dta, family=sm.families.Binomial()).fit() +mod1.summary() + +# Finally, we define a function to operate customized data transformation +# using the formula framework: + + +def double_it(x): + return 2 * x + + +formula = 'SUCCESS ~ double_it(LOWINC) + PERASIAN + PERBLACK + PERHISP + PCTCHRT + PCTYRRND + PERMINTE*AVYRSEXP*AVSALK + PERSPENK*PTRATIO*PCTAF' +mod2 = smf.glm(formula=formula, data=dta, family=sm.families.Binomial()).fit() +mod2.summary() + +# As expected, the coefficient for ``double_it(LOWINC)`` in the second +# model is half the size of the ``LOWINC`` coefficient from the first model: + +print(mod1.params[1]) +print(mod2.params[1] * 2) diff --git a/examples/python/glm_weights.py b/examples/python/glm_weights.py new file mode 100644 index 0000000..a4c5be3 --- /dev/null +++ b/examples/python/glm_weights.py @@ -0,0 +1,398 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook glm_weights.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Weighted Generalized Linear Models + +import numpy as np +import pandas as pd +import statsmodels.formula.api as smf +import statsmodels.api as sm + +# ## Weighted GLM: Poisson response data +# +# ### Load data +# +# In this example, we'll use the affair dataset using a handful of +# exogenous variables to predict the extra-marital affair rate. +# +# Weights will be generated to show that `freq_weights` are equivalent to +# repeating records of data. On the other hand, `var_weights` is equivalent +# to aggregating data. + +print(sm.datasets.fair.NOTE) + +# Load the data into a pandas dataframe. + +data = sm.datasets.fair.load_pandas().data + +# The dependent (endogenous) variable is ``affairs`` + +data.describe() + +data[:3] + +# In the following we will work mostly with Poisson. While using decimal +# affairs works, we convert them to integers to have a count distribution. + +data["affairs"] = np.ceil(data["affairs"]) +data[:3] + +(data["affairs"] == 0).mean() + +np.bincount(data["affairs"].astype(int)) + +# ## Condensing and Aggregating observations +# +# We have 6366 observations in our original dataset. When we consider only +# some selected variables, then we have fewer unique observations. In the +# following we combine observations in two ways, first we combine +# observations that have values for all variables identical, and secondly we +# combine observations that have the same explanatory variables. + +# ### Dataset with unique observations +# +# We use pandas's groupby to combine identical observations and create a +# new variable `freq` that count how many observation have the values in the +# corresponding row. + +data2 = data.copy() +data2['const'] = 1 +dc = data2['affairs rate_marriage age yrs_married const'.split()].groupby( + 'affairs rate_marriage age yrs_married'.split()).count() +dc.reset_index(inplace=True) +dc.rename(columns={'const': 'freq'}, inplace=True) +print(dc.shape) +dc.head() + +# ### Dataset with unique explanatory variables (exog) +# +# For the next dataset we combine observations that have the same values +# of the explanatory variables. However, because the response variable can +# differ among combined observations, we compute the mean and the sum of the +# response variable for all combined observations. +# +# We use again pandas ``groupby`` to combine observations and to create +# the new variables. We also flatten the ``MultiIndex`` into a simple index. + +gr = data['affairs rate_marriage age yrs_married'.split()].groupby( + 'rate_marriage age yrs_married'.split()) +df_a = gr.agg(['mean', 'sum', 'count']) + + +def merge_tuple(tpl): + if isinstance(tpl, tuple) and len(tpl) > 1: + return "_".join(map(str, tpl)) + else: + return tpl + + +df_a.columns = df_a.columns.map(merge_tuple) +df_a.reset_index(inplace=True) +print(df_a.shape) +df_a.head() + +# After combining observations with have a dataframe `dc` with 467 unique +# observations, and a dataframe `df_a` with 130 observations with unique +# values of the explanatory variables. + +print('number of rows: \noriginal, with unique observations, with unique exog') +data.shape[0], dc.shape[0], df_a.shape[0] + +# ## Analysis +# +# In the following, we compare the GLM-Poisson results of the original +# data with models of the combined observations where the multiplicity or +# aggregation is given by weights or exposure. +# +# +# ### original data + +glm = smf.glm( + 'affairs ~ rate_marriage + age + yrs_married', + data=data, + family=sm.families.Poisson()) +res_o = glm.fit() +print(res_o.summary()) + +res_o.pearson_chi2 / res_o.df_resid + +# ### condensed data (unique observations with frequencies) +# +# Combining identical observations and using frequency weights to take +# into account the multiplicity of observations produces exactly the same +# results. Some results attribute will differ when we want to have +# information about the observation and not about the aggregate of all +# identical observations. For example, residuals do not take +# ``freq_weights`` into account. + +glm = smf.glm( + 'affairs ~ rate_marriage + age + yrs_married', + data=dc, + family=sm.families.Poisson(), + freq_weights=np.asarray(dc['freq'])) +res_f = glm.fit() +print(res_f.summary()) + +res_f.pearson_chi2 / res_f.df_resid + +# ### condensed using ``var_weights`` instead of ``freq_weights`` +# +# Next, we compare ``var_weights`` to ``freq_weights``. It is a common +# practice to incorporate ``var_weights`` when the endogenous variable +# reflects averages and not identical observations. +# I don't see a theoretical reason why it produces the same results (in +# general). +# +# This produces the same results but ``df_resid`` differs the +# ``freq_weights`` example because ``var_weights`` do not change the number +# of effective observations. +# + +glm = smf.glm( + 'affairs ~ rate_marriage + age + yrs_married', + data=dc, + family=sm.families.Poisson(), + var_weights=np.asarray(dc['freq'])) +res_fv = glm.fit() +print(res_fv.summary()) + +# Dispersion computed from the results is incorrect because of wrong +# ``df_resid``. +# It is correct if we use the original ``df_resid``. + +res_fv.pearson_chi2 / res_fv.df_resid, res_f.pearson_chi2 / res_f.df_resid + +# ### aggregated or averaged data (unique values of explanatory variables) +# +# For these cases we combine observations that have the same values of the +# explanatory variables. The corresponding response variable is either a sum +# or an average. +# +# #### using ``exposure`` +# +# If our dependent variable is the sum of the responses of all combined +# observations, then under the Poisson assumption the distribution remains +# the same but we have varying `exposure` given by the number of individuals +# that are represented by one aggregated observation. +# +# The parameter estimates and covariance of parameters are the same with +# the original data, but log-likelihood, deviance and Pearson chi-squared +# differ + +glm = smf.glm( + 'affairs_sum ~ rate_marriage + age + yrs_married', + data=df_a, + family=sm.families.Poisson(), + exposure=np.asarray(df_a['affairs_count'])) +res_e = glm.fit() +print(res_e.summary()) + +res_e.pearson_chi2 / res_e.df_resid + +# #### using var_weights +# +# We can also use the mean of all combined values of the dependent +# variable. In this case the variance will be related to the inverse of the +# total exposure reflected by one combined observation. + +glm = smf.glm( + 'affairs_mean ~ rate_marriage + age + yrs_married', + data=df_a, + family=sm.families.Poisson(), + var_weights=np.asarray(df_a['affairs_count'])) +res_a = glm.fit() +print(res_a.summary()) + +# ### Comparison +# +# We saw in the summary prints above that ``params`` and ``cov_params`` +# with associated Wald inference agree across versions. We summarize this in +# the following comparing individual results attributes across versions. +# +# Parameter estimates `params`, standard errors of the parameters `bse` +# and `pvalues` of the parameters for the tests that the parameters are +# zeros all agree. However, the likelihood and goodness-of-fit statistics, +# `llf`, `deviance` and `pearson_chi2` only partially agree. Specifically, +# the aggregated version do not agree with the results using the original +# data. +# +# **Warning**: The behavior of `llf`, `deviance` and `pearson_chi2` might +# still change in future versions. +# +# Both the sum and average of the response variable for unique values of +# the explanatory variables have a proper likelihood interpretation. +# However, this interpretation is not reflected in these three statistics. +# Computationally this might be due to missing adjustments when aggregated +# data is used. However, theoretically we can think in these cases, +# especially for `var_weights` of the misspecified case when likelihood +# analysis is inappropriate and the results should be interpreted as quasi- +# likelihood estimates. There is an ambiguity in the definition of +# ``var_weights`` because they can be used for averages with correctly +# specified likelihood as well as for variance adjustments in the quasi- +# likelihood case. We are currently not trying to match the likelihood +# specification. However, in the next section we show that likelihood ratio +# type tests still produce the same result for all aggregation versions when +# we assume that the underlying model is correctly specified. + +results_all = [res_o, res_f, res_e, res_a] +names = 'res_o res_f res_e res_a'.split() + +pd.concat([r.params for r in results_all], axis=1, keys=names) + +pd.concat([r.bse for r in results_all], axis=1, keys=names) + +pd.concat([r.pvalues for r in results_all], axis=1, keys=names) + +pd.DataFrame( + np.column_stack( + [[r.llf, r.deviance, r.pearson_chi2] for r in results_all]), + columns=names, + index=['llf', 'deviance', 'pearson chi2']) + +# ### Likelihood Ratio type tests +# +# We saw above that likelihood and related statistics do not agree between +# the aggregated and original, individual data. We illustrate in the +# following that likelihood ratio test and difference in deviance aggree +# across versions, however Pearson chi-squared does not. +# +# As before: This is not sufficiently clear yet and could change. +# +# As a test case we drop the `age` variable and compute the likelihood +# ratio type statistics as difference between reduced or constrained and +# full or unconstraint model. + +# #### original observations and frequency weights + +glm = smf.glm( + 'affairs ~ rate_marriage + yrs_married', + data=data, + family=sm.families.Poisson()) +res_o2 = glm.fit() +#print(res_f2.summary()) +res_o2.pearson_chi2 - res_o.pearson_chi2, res_o2.deviance - res_o.deviance, res_o2.llf - res_o.llf + +glm = smf.glm( + 'affairs ~ rate_marriage + yrs_married', + data=dc, + family=sm.families.Poisson(), + freq_weights=np.asarray(dc['freq'])) +res_f2 = glm.fit() +#print(res_f2.summary()) +res_f2.pearson_chi2 - res_f.pearson_chi2, res_f2.deviance - res_f.deviance, res_f2.llf - res_f.llf + +# #### aggregated data: ``exposure`` and ``var_weights`` +# +# Note: LR test agrees with original observations, ``pearson_chi2`` +# differs and has the wrong sign. + +glm = smf.glm( + 'affairs_sum ~ rate_marriage + yrs_married', + data=df_a, + family=sm.families.Poisson(), + exposure=np.asarray(df_a['affairs_count'])) +res_e2 = glm.fit() +res_e2.pearson_chi2 - res_e.pearson_chi2, res_e2.deviance - res_e.deviance, res_e2.llf - res_e.llf + +glm = smf.glm( + 'affairs_mean ~ rate_marriage + yrs_married', + data=df_a, + family=sm.families.Poisson(), + var_weights=np.asarray(df_a['affairs_count'])) +res_a2 = glm.fit() +res_a2.pearson_chi2 - res_a.pearson_chi2, res_a2.deviance - res_a.deviance, res_a2.llf - res_a.llf + +# ### Investigating Pearson chi-square statistic +# +# First, we do some sanity checks that there are no basic bugs in the +# computation of `pearson_chi2` and `resid_pearson`. + +res_e2.pearson_chi2, res_e.pearson_chi2, (res_e2.resid_pearson + **2).sum(), (res_e.resid_pearson + **2).sum() + +res_e._results.resid_response.mean(), res_e.model.family.variance( + res_e.mu)[:5], res_e.mu[:5] + +(res_e._results.resid_response**2 / res_e.model.family.variance( + res_e.mu)).sum() + +res_e2._results.resid_response.mean(), res_e2.model.family.variance( + res_e2.mu)[:5], res_e2.mu[:5] + +(res_e2._results.resid_response**2 / res_e2.model.family.variance( + res_e2.mu)).sum() + +(res_e2._results.resid_response**2).sum(), (res_e._results.resid_response + **2).sum() + +# One possible reason for the incorrect sign is that we are subtracting +# quadratic terms that are divided by different denominators. In some +# related cases, the recommendation in the literature is to use a common +# denominator. We can compare pearson chi-squared statistic using the same +# variance assumption in the full and reduced model. +# +# In this case we obtain the same pearson chi2 scaled difference between +# reduced and full model across all versions. (Issue +# [#3616](https://github.com/statsmodels/statsmodels/issues/3616) is +# intended to track this further.) + +((res_e2._results.resid_response**2 - res_e._results.resid_response**2) / + res_e2.model.family.variance(res_e2.mu)).sum() + +((res_a2._results.resid_response**2 - res_a._results.resid_response**2) / + res_a2.model.family.variance(res_a2.mu) * res_a2.model.var_weights).sum() + +((res_f2._results.resid_response**2 - res_f._results.resid_response**2) / + res_f2.model.family.variance(res_f2.mu) * res_f2.model.freq_weights).sum() + +((res_o2._results.resid_response**2 - res_o._results.resid_response**2) / + res_o2.model.family.variance(res_o2.mu)).sum() + +# ## Remainder +# +# The remainder of the notebook just contains some additional checks and +# can be ignored. + +np.exp(res_e2.model.exposure)[:5], np.asarray(df_a['affairs_count'])[:5] + +res_e2.resid_pearson.sum() - res_e.resid_pearson.sum() + +res_e2.mu[:5] + +res_a2.pearson_chi2, res_a.pearson_chi2, res_a2.resid_pearson.sum( +), res_a.resid_pearson.sum() + +((res_a2._results.resid_response**2) / res_a2.model.family.variance(res_a2.mu) + * res_a2.model.var_weights).sum() + +((res_a._results.resid_response**2) / res_a.model.family.variance(res_a.mu) * + res_a.model.var_weights).sum() + +((res_a._results.resid_response**2) / res_a.model.family.variance(res_a2.mu) * + res_a.model.var_weights).sum() + +res_e.model.endog[:5], res_e2.model.endog[:5] + +res_a.model.endog[:5], res_a2.model.endog[:5] + +res_a2.model.endog[:5] * np.exp(res_e2.model.exposure)[:5] + +res_a2.model.endog[:5] * res_a2.model.var_weights[:5] + +from scipy import stats +stats.chi2.sf(27.19530754604785, 1), stats.chi2.sf(29.083798806764687, 1) + +res_o.pvalues + +print(res_e2.summary()) +print(res_e.summary()) + +print(res_f2.summary()) +print(res_f.summary()) diff --git a/examples/python/gls.py b/examples/python/gls.py new file mode 100644 index 0000000..5ca7085 --- /dev/null +++ b/examples/python/gls.py @@ -0,0 +1,83 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook gls.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Generalized Least Squares + +from __future__ import print_function +import statsmodels.api as sm + +# The Longley dataset is a time series dataset: + +data = sm.datasets.longley.load() +data.exog = sm.add_constant(data.exog) +print(data.exog[:5]) + +# +# Let's assume that the data is heteroskedastic and that we know +# the nature of the heteroskedasticity. We can then define +# `sigma` and use it to give us a GLS model +# +# First we will obtain the residuals from an OLS fit + +ols_resid = sm.OLS(data.endog, data.exog).fit().resid + +# Assume that the error terms follow an AR(1) process with a trend: +# +# $\epsilon_i = \beta_0 + \rho\epsilon_{i-1} + \eta_i$ +# +# where $\eta \sim N(0,\Sigma^2)$ +# +# and that $\rho$ is simply the correlation of the residual a consistent +# estimator for rho is to regress the residuals on the lagged residuals + +resid_fit = sm.OLS(ols_resid[1:], sm.add_constant(ols_resid[:-1])).fit() +print(resid_fit.tvalues[1]) +print(resid_fit.pvalues[1]) + +# While we don't have strong evidence that the errors follow an AR(1) +# process we continue + +rho = resid_fit.params[1] + +# As we know, an AR(1) process means that near-neighbors have a stronger +# relation so we can give this structure by using a toeplitz matrix + +from scipy.linalg import toeplitz + +toeplitz(range(5)) + +order = toeplitz(range(len(ols_resid))) + +# so that our error covariance structure is actually rho**order +# which defines an autocorrelation structure + +sigma = rho**order +gls_model = sm.GLS(data.endog, data.exog, sigma=sigma) +gls_results = gls_model.fit() + +# Of course, the exact rho in this instance is not known so it it might +# make more sense to use feasible gls, which currently only has experimental +# support. +# +# We can use the GLSAR model with one lag, to get to a similar result: + +glsar_model = sm.GLSAR(data.endog, data.exog, 1) +glsar_results = glsar_model.iterative_fit(1) +print(glsar_results.summary()) + +# Comparing gls and glsar results, we see that there are some small +# differences in the parameter estimates and the resulting standard +# errors of the parameter estimate. This might be do to the numerical +# differences in the algorithm, e.g. the treatment of initial conditions, +# because of the small number of observations in the longley dataset. + +print(gls_results.params) +print(glsar_results.params) +print(gls_results.bse) +print(glsar_results.bse) diff --git a/examples/python/influence_glm_logit.py b/examples/python/influence_glm_logit.py new file mode 100644 index 0000000..c5bc839 --- /dev/null +++ b/examples/python/influence_glm_logit.py @@ -0,0 +1,81 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook influence_glm_logit.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Influence Measures for GLM Logit +# +# +# Based on draft version for GLMInfluence, which will also apply to +# discrete Logit, Probit and Poisson, and eventually be extended to cover +# most models outside of time series analysis. +# +# The example for logistic regression was used by Pregibon (1981) +# "Logistic Regression diagnostics" and is based on data by Finney (1947). +# +# GLMInfluence includes the basic influence measures but still misses some +# measures described in Pregibon (1981), for example those related to +# deviance and effects on confidence intervals. + +import os.path +import numpy as np +import pandas as pd + +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod import families + +import statsmodels.stats.tests.test_influence +test_module = statsmodels.stats.tests.test_influence.__file__ +cur_dir = cur_dir = os.path.abspath(os.path.dirname(test_module)) + +file_name = 'binary_constrict.csv' +file_path = os.path.join(cur_dir, 'results', file_name) +df = pd.read_csv(file_path, index_col=0) + +res = GLM( + df['constrict'], + df[['const', 'log_rate', 'log_volumne']], + family=families.Binomial()).fit( + attach_wls=True, atol=1e-10) +print(res.summary()) + +# ## get the influence measures +# +# GLMResults has a `get_influence` method similar to OLSResults, that +# returns and instance of the GLMInfluence class. This class has methods and +# (cached) attributes to inspect influence and outlier measures. +# +# This measures are based on a one-step approximation to the the results +# for deleting one observation. One-step approximations are usually accurate +# for small changes but underestimate the magnitude of large changes. Event +# though large changes are underestimated, they still show clearly the +# effect of influential observations +# +# In this example observation 4 and 18 have a large standardized residual +# and large Cook's distance, but not a large leverage. Observation 13 has +# the largest leverage but only small Cook's distance and not a large +# studentized residual. +# +# Only the two observations 4 and 18 have a large impact on the parameter +# estimates. + +infl = res.get_influence(observed=False) + +summ_df = infl.summary_frame() +summ_df.sort_values('cooks_d', ascending=False)[:10] + +infl.plot_influence() + +infl.plot_index(y_var='cooks', threshold=2 * infl.cooks_distance[0].mean()) + +infl.plot_index(y_var='resid', threshold=1) + +infl.plot_index(y_var='dfbeta', idx=1, threshold=0.5) + +infl.plot_index(y_var='dfbeta', idx=2, threshold=0.5) + +infl.plot_index(y_var='dfbeta', idx=0, threshold=0.5) diff --git a/examples/python/interactions_anova.py b/examples/python/interactions_anova.py new file mode 100644 index 0000000..662d4ae --- /dev/null +++ b/examples/python/interactions_anova.py @@ -0,0 +1,450 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook interactions_anova.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Interactions and ANOVA + +# Note: This script is based heavily on Jonathan Taylor's class notes +# http://www.stanford.edu/class/stats191/interactions.html +# +# Download and format data: + +from __future__ import print_function +from statsmodels.compat import urlopen +import numpy as np +np.set_printoptions(precision=4, suppress=True) + +import pandas as pd +pd.set_option("display.width", 100) +import matplotlib.pyplot as plt +from statsmodels.formula.api import ols +from statsmodels.graphics.api import interaction_plot, abline_plot +from statsmodels.stats.anova import anova_lm + +try: + salary_table = pd.read_csv('salary.table') +except: # recent pandas can read URL without urlopen + url = 'http://stats191.stanford.edu/data/salary.table' + fh = urlopen(url) + salary_table = pd.read_table(fh) + salary_table.to_csv('salary.table') + +E = salary_table.E +M = salary_table.M +X = salary_table.X +S = salary_table.S + +# Take a look at the data: + +plt.figure(figsize=(6, 6)) +symbols = ['D', '^'] +colors = ['r', 'g', 'blue'] +factor_groups = salary_table.groupby(['E', 'M']) +for values, group in factor_groups: + i, j = values + plt.scatter( + group['X'], group['S'], marker=symbols[j], color=colors[i - 1], s=144) +plt.xlabel('Experience') +plt.ylabel('Salary') + +# Fit a linear model: + +formula = 'S ~ C(E) + C(M) + X' +lm = ols(formula, salary_table).fit() +print(lm.summary()) + +# Have a look at the created design matrix: + +lm.model.exog[:5] + +# Or since we initially passed in a DataFrame, we have a DataFrame +# available in + +lm.model.data.orig_exog[:5] + +# We keep a reference to the original untouched data in + +lm.model.data.frame[:5] + +# Influence statistics + +infl = lm.get_influence() +print(infl.summary_table()) + +# or get a dataframe + +df_infl = infl.summary_frame() + +df_infl[:5] + +# Now plot the reiduals within the groups separately: + +resid = lm.resid +plt.figure(figsize=(6, 6)) +for values, group in factor_groups: + i, j = values + group_num = i * 2 + j - 1 # for plotting purposes + x = [group_num] * len(group) + plt.scatter( + x, + resid[group.index], + marker=symbols[j], + color=colors[i - 1], + s=144, + edgecolors='black') +plt.xlabel('Group') +plt.ylabel('Residuals') + +# Now we will test some interactions using anova or f_test + +interX_lm = ols("S ~ C(E) * X + C(M)", salary_table).fit() +print(interX_lm.summary()) + +# Do an ANOVA check + +from statsmodels.stats.api import anova_lm + +table1 = anova_lm(lm, interX_lm) +print(table1) + +interM_lm = ols("S ~ X + C(E)*C(M)", data=salary_table).fit() +print(interM_lm.summary()) + +table2 = anova_lm(lm, interM_lm) +print(table2) + +# The design matrix as a DataFrame + +interM_lm.model.data.orig_exog[:5] + +# The design matrix as an ndarray + +interM_lm.model.exog +interM_lm.model.exog_names + +infl = interM_lm.get_influence() +resid = infl.resid_studentized_internal +plt.figure(figsize=(6, 6)) +for values, group in factor_groups: + i, j = values + idx = group.index + plt.scatter( + X[idx], + resid[idx], + marker=symbols[j], + color=colors[i - 1], + s=144, + edgecolors='black') +plt.xlabel('X') +plt.ylabel('standardized resids') + +# Looks like one observation is an outlier. + +drop_idx = abs(resid).argmax() +print(drop_idx) # zero-based index +idx = salary_table.index.drop(drop_idx) + +lm32 = ols('S ~ C(E) + X + C(M)', data=salary_table, subset=idx).fit() + +print(lm32.summary()) +print('\n') + +interX_lm32 = ols('S ~ C(E) * X + C(M)', data=salary_table, subset=idx).fit() + +print(interX_lm32.summary()) +print('\n') + +table3 = anova_lm(lm32, interX_lm32) +print(table3) +print('\n') + +interM_lm32 = ols('S ~ X + C(E) * C(M)', data=salary_table, subset=idx).fit() + +table4 = anova_lm(lm32, interM_lm32) +print(table4) +print('\n') + +# Replot the residuals + +try: + resid = interM_lm32.get_influence().summary_frame()['standard_resid'] +except: + resid = interM_lm32.get_influence().summary_frame()['standard_resid'] + +plt.figure(figsize=(6, 6)) +for values, group in factor_groups: + i, j = values + idx = group.index + plt.scatter( + X[idx], + resid[idx], + marker=symbols[j], + color=colors[i - 1], + s=144, + edgecolors='black') +plt.xlabel('X[~[32]]') +plt.ylabel('standardized resids') + +# Plot the fitted values + +lm_final = ols('S ~ X + C(E)*C(M)', data=salary_table.drop([drop_idx])).fit() +mf = lm_final.model.data.orig_exog +lstyle = ['-', '--'] + +plt.figure(figsize=(6, 6)) +for values, group in factor_groups: + i, j = values + idx = group.index + plt.scatter( + X[idx], + S[idx], + marker=symbols[j], + color=colors[i - 1], + s=144, + edgecolors='black') + # drop NA because there is no idx 32 in the final model + plt.plot( + mf.X[idx].dropna(), + lm_final.fittedvalues[idx].dropna(), + ls=lstyle[j], + color=colors[i - 1]) +plt.xlabel('Experience') +plt.ylabel('Salary') + +# From our first look at the data, the difference between Master's and PhD +# in the management group is different than in the non-management group. +# This is an interaction between the two qualitative variables management,M +# and education,E. We can visualize this by first removing the effect of +# experience, then plotting the means within each of the 6 groups using +# interaction.plot. + +U = S - X * interX_lm32.params['X'] + +plt.figure(figsize=(6, 6)) +interaction_plot( + E, + M, + U, + colors=['red', 'blue'], + markers=['^', 'D'], + markersize=10, + ax=plt.gca()) + +# ## Minority Employment Data + +try: + jobtest_table = pd.read_table('jobtest.table') +except: # don't have data already + url = 'http://stats191.stanford.edu/data/jobtest.table' + jobtest_table = pd.read_table(url) + +factor_group = jobtest_table.groupby(['MINORITY']) + +fig, ax = plt.subplots(figsize=(6, 6)) +colors = ['purple', 'green'] +markers = ['o', 'v'] +for factor, group in factor_group: + ax.scatter( + group['TEST'], + group['JPERF'], + color=colors[factor], + marker=markers[factor], + s=12**2) +ax.set_xlabel('TEST') +ax.set_ylabel('JPERF') + +min_lm = ols('JPERF ~ TEST', data=jobtest_table).fit() +print(min_lm.summary()) + +fig, ax = plt.subplots(figsize=(6, 6)) +for factor, group in factor_group: + ax.scatter( + group['TEST'], + group['JPERF'], + color=colors[factor], + marker=markers[factor], + s=12**2) + +ax.set_xlabel('TEST') +ax.set_ylabel('JPERF') +fig = abline_plot(model_results=min_lm, ax=ax) + +min_lm2 = ols('JPERF ~ TEST + TEST:MINORITY', data=jobtest_table).fit() + +print(min_lm2.summary()) + +fig, ax = plt.subplots(figsize=(6, 6)) +for factor, group in factor_group: + ax.scatter( + group['TEST'], + group['JPERF'], + color=colors[factor], + marker=markers[factor], + s=12**2) + +fig = abline_plot( + intercept=min_lm2.params['Intercept'], + slope=min_lm2.params['TEST'], + ax=ax, + color='purple') +fig = abline_plot( + intercept=min_lm2.params['Intercept'], + slope=min_lm2.params['TEST'] + min_lm2.params['TEST:MINORITY'], + ax=ax, + color='green') + +min_lm3 = ols('JPERF ~ TEST + MINORITY', data=jobtest_table).fit() +print(min_lm3.summary()) + +fig, ax = plt.subplots(figsize=(6, 6)) +for factor, group in factor_group: + ax.scatter( + group['TEST'], + group['JPERF'], + color=colors[factor], + marker=markers[factor], + s=12**2) + +fig = abline_plot( + intercept=min_lm3.params['Intercept'], + slope=min_lm3.params['TEST'], + ax=ax, + color='purple') +fig = abline_plot( + intercept=min_lm3.params['Intercept'] + min_lm3.params['MINORITY'], + slope=min_lm3.params['TEST'], + ax=ax, + color='green') + +min_lm4 = ols('JPERF ~ TEST * MINORITY', data=jobtest_table).fit() +print(min_lm4.summary()) + +fig, ax = plt.subplots(figsize=(8, 6)) +for factor, group in factor_group: + ax.scatter( + group['TEST'], + group['JPERF'], + color=colors[factor], + marker=markers[factor], + s=12**2) + +fig = abline_plot( + intercept=min_lm4.params['Intercept'], + slope=min_lm4.params['TEST'], + ax=ax, + color='purple') +fig = abline_plot( + intercept=min_lm4.params['Intercept'] + min_lm4.params['MINORITY'], + slope=min_lm4.params['TEST'] + min_lm4.params['TEST:MINORITY'], + ax=ax, + color='green') + +# is there any effect of MINORITY on slope or intercept? +table5 = anova_lm(min_lm, min_lm4) +print(table5) + +# is there any effect of MINORITY on intercept +table6 = anova_lm(min_lm, min_lm3) +print(table6) + +# is there any effect of MINORITY on slope +table7 = anova_lm(min_lm, min_lm2) +print(table7) + +# is it just the slope or both? +table8 = anova_lm(min_lm2, min_lm4) +print(table8) + +# ## One-way ANOVA + +try: + rehab_table = pd.read_csv('rehab.table') +except: + url = 'http://stats191.stanford.edu/data/rehab.csv' + rehab_table = pd.read_table(url, delimiter=",") + rehab_table.to_csv('rehab.table') + +fig, ax = plt.subplots(figsize=(8, 6)) +fig = rehab_table.boxplot('Time', 'Fitness', ax=ax, grid=False) + +rehab_lm = ols('Time ~ C(Fitness)', data=rehab_table).fit() +table9 = anova_lm(rehab_lm) +print(table9) + +print(rehab_lm.model.data.orig_exog) + +print(rehab_lm.summary()) + +# ## Two-way ANOVA + +try: + kidney_table = pd.read_table('./kidney.table') +except: + url = 'http://stats191.stanford.edu/data/kidney.table' + kidney_table = pd.read_csv(url, delim_whitespace=True) + +# Explore the dataset + +kidney_table.head(10) + +# Balanced panel + +kt = kidney_table +plt.figure(figsize=(8, 6)) +fig = interaction_plot( + kt['Weight'], + kt['Duration'], + np.log(kt['Days'] + 1), + colors=['red', 'blue'], + markers=['D', '^'], + ms=10, + ax=plt.gca()) + +# You have things available in the calling namespace available in the +# formula evaluation namespace + +kidney_lm = ols('np.log(Days+1) ~ C(Duration) * C(Weight)', data=kt).fit() + +table10 = anova_lm(kidney_lm) + +print( + anova_lm( + ols('np.log(Days+1) ~ C(Duration) + C(Weight)', data=kt).fit(), + kidney_lm)) +print( + anova_lm( + ols('np.log(Days+1) ~ C(Duration)', data=kt).fit(), + ols('np.log(Days+1) ~ C(Duration) + C(Weight, Sum)', data=kt).fit())) +print( + anova_lm( + ols('np.log(Days+1) ~ C(Weight)', data=kt).fit(), + ols('np.log(Days+1) ~ C(Duration) + C(Weight, Sum)', data=kt).fit())) + +# ## Sum of squares +# +# Illustrates the use of different types of sums of squares (I,II,II) +# and how the Sum contrast can be used to produce the same output between +# the 3. +# +# Types I and II are equivalent under a balanced design. +# +# Don't use Type III with non-orthogonal contrast - ie., Treatment + +sum_lm = ols( + 'np.log(Days+1) ~ C(Duration, Sum) * C(Weight, Sum)', data=kt).fit() + +print(anova_lm(sum_lm)) +print(anova_lm(sum_lm, typ=2)) +print(anova_lm(sum_lm, typ=3)) + +nosum_lm = ols( + 'np.log(Days+1) ~ C(Duration, Treatment) * C(Weight, Treatment)', + data=kt).fit() +print(anova_lm(nosum_lm)) +print(anova_lm(nosum_lm, typ=2)) +print(anova_lm(nosum_lm, typ=3)) diff --git a/examples/python/kernel_density.py b/examples/python/kernel_density.py new file mode 100644 index 0000000..454c048 --- /dev/null +++ b/examples/python/kernel_density.py @@ -0,0 +1,317 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook kernel_density.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Kernel Density Estimation +# +# Kernel density estimation is the process of estimating an unknown +# probability density function using a *kernel function* $K(u)$. While a +# histogram counts the number of data points in somewhat arbitrary regions, +# a kernel density estimate is a function defined as the sum of a kernel +# function on every data point. The kernel function typically exhibits the +# following properties: +# +# 1. Symmetry such that $K(u) = K(-u)$. +# 2. Normalization such that $\int_{-\infty}^{\infty} K(u) \ du = 1$ . +# 3. Monotonically decreasing such that $K'(u) < 0$ when $u > 0$. +# 4. Expected value equal to zero such that $\mathrm{E}[K] = 0$. +# +# For more information about kernel density estimation, see for instance +# [Wikipedia - Kernel density +# estimation](https://en.wikipedia.org/wiki/Kernel_density_estimation). +# +# A univariate kernel density estimator is implemented in +# `sm.nonparametric.KDEUnivariate`. +# In this example we will show the following: +# +# * Basic usage, how to fit the estimator. +# * The effect of varying the bandwidth of the kernel using the `bw` +# argument. +# * The various kernel functions available using the `kernel` argument. + +import numpy as np +from scipy import stats +import statsmodels.api as sm +import matplotlib.pyplot as plt +from statsmodels.distributions.mixture_rvs import mixture_rvs + +# ## A univariate example + +np.random.seed( + 12345) # Seed the random number generator for reproducible results + +# We create a bimodal distribution: a mixture of two normal distributions +# with locations at `-1` and `1`. + +# Location, scale and weight for the two distributions +dist1_loc, dist1_scale, weight1 = -1, .5, .25 +dist2_loc, dist2_scale, weight2 = 1, .5, .75 + +# Sample from a mixture of distributions +obs_dist = mixture_rvs( + prob=[weight1, weight2], + size=250, + dist=[stats.norm, stats.norm], + kwargs=(dict(loc=dist1_loc, scale=dist1_scale), + dict(loc=dist2_loc, scale=dist2_scale))) + +# The simplest non-parametric technique for density estimation is the +# histogram. + +fig = plt.figure(figsize=(12, 5)) +ax = fig.add_subplot(111) + +# Scatter plot of data samples and histogram +ax.scatter( + obs_dist, + np.abs(np.random.randn(obs_dist.size)), + zorder=15, + color='red', + marker='x', + alpha=0.5, + label='Samples') +lines = ax.hist(obs_dist, bins=20, edgecolor='k', label='Histogram') + +ax.legend(loc='best') +ax.grid(True, zorder=-5) + +# ## Fitting with the default arguments + +# The histogram above is discontinuous. To compute a continuous +# probability density function, +# we can use kernel density estimation. +# +# We initialize a univariate kernel density estimator using +# `KDEUnivariate`. + +kde = sm.nonparametric.KDEUnivariate(obs_dist) +kde.fit() # Estimate the densities + +# We present a figure of the fit, as well as the true distribution. + +fig = plt.figure(figsize=(12, 5)) +ax = fig.add_subplot(111) + +# Plot the histrogram +ax.hist( + obs_dist, + bins=20, + normed=True, + label='Histogram from samples', + zorder=5, + edgecolor='k', + alpha=0.5) + +# Plot the KDE as fitted using the default arguments +ax.plot(kde.support, kde.density, lw=3, label='KDE from samples', zorder=10) + +# Plot the true distribution +true_values = ( + stats.norm.pdf(loc=dist1_loc, scale=dist1_scale, x=kde.support) * weight1 + + stats.norm.pdf(loc=dist2_loc, scale=dist2_scale, x=kde.support) * weight2) +ax.plot(kde.support, true_values, lw=3, label='True distribution', zorder=15) + +# Plot the samples +ax.scatter( + obs_dist, + np.abs(np.random.randn(obs_dist.size)) / 40, + marker='x', + color='red', + zorder=20, + label='Samples', + alpha=0.5) + +ax.legend(loc='best') +ax.grid(True, zorder=-5) + +# In the code above, default arguments were used. We can also vary the +# bandwidth of the kernel, as we will now see. + +# ## Varying the bandwidth using the `bw` argument + +# The bandwidth of the kernel can be adjusted using the `bw` argument. +# In the following example, a bandwidth of `bw=0.2` seems to fit the data +# well. + +fig = plt.figure(figsize=(12, 5)) +ax = fig.add_subplot(111) + +# Plot the histrogram +ax.hist( + obs_dist, + bins=25, + label='Histogram from samples', + zorder=5, + edgecolor='k', + normed=True, + alpha=0.5) + +# Plot the KDE for various bandwidths +for bandwidth in [0.1, 0.2, 0.4]: + kde.fit(bw=bandwidth) # Estimate the densities + ax.plot( + kde.support, + kde.density, + '--', + lw=2, + color='k', + zorder=10, + label='KDE from samples, bw = {}'.format(round(bandwidth, 2))) + +# Plot the true distribution +ax.plot(kde.support, true_values, lw=3, label='True distribution', zorder=15) + +# Plot the samples +ax.scatter( + obs_dist, + np.abs(np.random.randn(obs_dist.size)) / 50, + marker='x', + color='red', + zorder=20, + label='Data samples', + alpha=0.5) + +ax.legend(loc='best') +ax.set_xlim([-3, 3]) +ax.grid(True, zorder=-5) + +# ## Comparing kernel functions + +# In the example above, a Gaussian kernel was used. Several other kernels +# are also available. + +from statsmodels.nonparametric.kde import kernel_switch +list(kernel_switch.keys()) + +# ### The available kernel functions + +# Create a figure +fig = plt.figure(figsize=(12, 5)) + +# Enumerate every option for the kernel +for i, (ker_name, ker_class) in enumerate(kernel_switch.items()): + + # Initialize the kernel object + kernel = ker_class() + + # Sample from the domain + domain = kernel.domain or [-3, 3] + x_vals = np.linspace(*domain, num=2**10) + y_vals = kernel(x_vals) + + # Create a subplot, set the title + ax = fig.add_subplot(2, 4, i + 1) + ax.set_title('Kernel function "{}"'.format(ker_name)) + ax.plot(x_vals, y_vals, lw=3, label='{}'.format(ker_name)) + ax.scatter([0], [0], marker='x', color='red') + plt.grid(True, zorder=-5) + ax.set_xlim(domain) + +plt.tight_layout() + +# ### The available kernel functions on three data points + +# We now examine how the kernel density estimate will fit to three equally +# spaced data points. + +# Create three equidistant points +data = np.linspace(-1, 1, 3) +kde = sm.nonparametric.KDEUnivariate(data) + +# Create a figure +fig = plt.figure(figsize=(12, 5)) + +# Enumerate every option for the kernel +for i, kernel in enumerate(kernel_switch.keys()): + + # Create a subplot, set the title + ax = fig.add_subplot(2, 4, i + 1) + ax.set_title('Kernel function "{}"'.format(kernel)) + + # Fit the model (estimate densities) + kde.fit(kernel=kernel, fft=False, gridsize=2**10) + + # Create the plot + ax.plot( + kde.support, kde.density, lw=3, label='KDE from samples', zorder=10) + ax.scatter(data, np.zeros_like(data), marker='x', color='red') + plt.grid(True, zorder=-5) + ax.set_xlim([-3, 3]) + +plt.tight_layout() + +# ## A more difficult case +# +# The fit is not always perfect. See the example below for a harder case. + +obs_dist = mixture_rvs([.25, .75], + size=250, + dist=[stats.norm, stats.beta], + kwargs=(dict(loc=-1, scale=.5), + dict(loc=1, scale=1, args=(1, .5)))) + +kde = sm.nonparametric.KDEUnivariate(obs_dist) +kde.fit() + +fig = plt.figure(figsize=(12, 5)) +ax = fig.add_subplot(111) +ax.hist(obs_dist, bins=20, normed=True, edgecolor='k', zorder=4, alpha=0.5) +ax.plot(kde.support, kde.density, lw=3, zorder=7) +# Plot the samples +ax.scatter( + obs_dist, + np.abs(np.random.randn(obs_dist.size)) / 50, + marker='x', + color='red', + zorder=20, + label='Data samples', + alpha=0.5) +ax.grid(True, zorder=-5) + +# ## The KDE is a distribution +# +# Since the KDE is a distribution, we can access attributes and methods +# such as: +# +# - `entropy` +# - `evaluate` +# - `cdf` +# - `icdf` +# - `sf` +# - `cumhazard` + +obs_dist = mixture_rvs([.25, .75], + size=1000, + dist=[stats.norm, stats.norm], + kwargs=(dict(loc=-1, scale=.5), dict(loc=1, scale=.5))) +kde = sm.nonparametric.KDEUnivariate(obs_dist) +kde.fit(gridsize=2**10) + +kde.entropy + +kde.evaluate(-1) + +# ### Cumulative distribution, it's inverse, and the survival function + +fig = plt.figure(figsize=(12, 5)) +ax = fig.add_subplot(111) + +ax.plot(kde.support, kde.cdf, lw=3, label='CDF') +ax.plot( + np.linspace(0, 1, num=kde.icdf.size), kde.icdf, lw=3, label='Inverse CDF') +ax.plot(kde.support, kde.sf, lw=3, label='Survival function') +ax.legend(loc='best') +ax.grid(True, zorder=-5) + +# ### The Cumulative Hazard Function + +fig = plt.figure(figsize=(12, 5)) +ax = fig.add_subplot(111) +ax.plot(kde.support, kde.cumhazard, lw=3, label='Cumulative Hazard Function') +ax.legend(loc='best') +ax.grid(True, zorder=-5) diff --git a/examples/python/markov_autoregression.py b/examples/python/markov_autoregression.py new file mode 100644 index 0000000..6dbb280 --- /dev/null +++ b/examples/python/markov_autoregression.py @@ -0,0 +1,288 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook markov_autoregression.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# ## Markov switching autoregression models + +# This notebook provides an example of the use of Markov switching models +# in Statsmodels to replicate a number of results presented in Kim and +# Nelson (1999). It applies the Hamilton (1989) filter the Kim (1994) +# smoother. +# +# This is tested against the Markov-switching models from E-views 8, which +# can be found at http://www.eviews.com/EViews8/ev8ecswitch_n.html#MarkovAR +# or the Markov-switching models of Stata 14 which can be found at +# http://www.stata.com/manuals14/tsmswitch.pdf. + +import numpy as np +import pandas as pd +import statsmodels.api as sm +import matplotlib.pyplot as plt +import requests +from io import BytesIO + +# NBER recessions +from pandas_datareader.data import DataReader +from datetime import datetime +usrec = DataReader( + 'USREC', 'fred', start=datetime(1947, 1, 1), end=datetime(2013, 4, 1)) + +# ### Hamilton (1989) switching model of GNP +# +# This replicates Hamilton's (1989) seminal paper introducing Markov- +# switching models. The model is an autoregressive model of order 4 in which +# the mean of the process switches between two regimes. It can be written: +# +# $$ +# y_t = \mu_{S_t} + \phi_1 (y_{t-1} - \mu_{S_{t-1}}) + \phi_2 (y_{t-2} - +# \mu_{S_{t-2}}) + \phi_3 (y_{t-3} - \mu_{S_{t-3}}) + \phi_4 (y_{t-4} - +# \mu_{S_{t-4}}) + \varepsilon_t +# $$ +# +# Each period, the regime transitions according to the following matrix of +# transition probabilities: +# +# $$ P(S_t = s_t | S_{t-1} = s_{t-1}) = +# \begin{bmatrix} +# p_{00} & p_{10} \\ +# p_{01} & p_{11} +# \end{bmatrix} +# $$ +# +# where $p_{ij}$ is the probability of transitioning *from* regime $i$, +# *to* regime $j$. +# +# The model class is `MarkovAutoregression` in the time-series part of +# `Statsmodels`. In order to create the model, we must specify the number of +# regimes with `k_regimes=2`, and the order of the autoregression with +# `order=4`. The default model also includes switching autoregressive +# coefficients, so here we also need to specify `switching_ar=False` to +# avoid that. +# +# After creation, the model is `fit` via maximum likelihood estimation. +# Under the hood, good starting parameters are found using a number of steps +# of the expectation maximization (EM) algorithm, and a quasi-Newton (BFGS) +# algorithm is applied to quickly find the maximum. + +# Get the RGNP data to replicate Hamilton +dta = pd.read_stata('https://www.stata-press.com/data/r14/rgnp.dta').iloc[1:] +dta.index = pd.DatetimeIndex(dta.date, freq='QS') +dta_hamilton = dta.rgnp + +# Plot the data +dta_hamilton.plot(title='Growth rate of Real GNP', figsize=(12, 3)) + +# Fit the model +mod_hamilton = sm.tsa.MarkovAutoregression( + dta_hamilton, k_regimes=2, order=4, switching_ar=False) +res_hamilton = mod_hamilton.fit() + +res_hamilton.summary() + +# We plot the filtered and smoothed probabilities of a recession. Filtered +# refers to an estimate of the probability at time $t$ based on data up to +# and including time $t$ (but excluding time $t+1, ..., T$). Smoothed refers +# to an estimate of the probability at time $t$ using all the data in the +# sample. +# +# For reference, the shaded periods represent the NBER recessions. + +fig, axes = plt.subplots(2, figsize=(7, 7)) +ax = axes[0] +ax.plot(res_hamilton.filtered_marginal_probabilities[0]) +ax.fill_between( + usrec.index, 0, 1, where=usrec['USREC'].values, color='k', alpha=0.1) +ax.set_xlim(dta_hamilton.index[4], dta_hamilton.index[-1]) +ax.set(title='Filtered probability of recession') + +ax = axes[1] +ax.plot(res_hamilton.smoothed_marginal_probabilities[0]) +ax.fill_between( + usrec.index, 0, 1, where=usrec['USREC'].values, color='k', alpha=0.1) +ax.set_xlim(dta_hamilton.index[4], dta_hamilton.index[-1]) +ax.set(title='Smoothed probability of recession') + +fig.tight_layout() + +# From the estimated transition matrix we can calculate the expected +# duration of a recession versus an expansion. + +print(res_hamilton.expected_durations) + +# In this case, it is expected that a recession will last about one year +# (4 quarters) and an expansion about two and a half years. + +# ### Kim, Nelson, and Startz (1998) Three-state Variance Switching +# +# This model demonstrates estimation with regime heteroskedasticity +# (switching of variances) and no mean effect. The dataset can be reached at +# http://econ.korea.ac.kr/~cjkim/MARKOV/data/ew_excs.prn. +# +# The model in question is: +# +# $$ +# \begin{align} +# y_t & = \varepsilon_t \\ +# \varepsilon_t & \sim N(0, \sigma_{S_t}^2) +# \end{align} +# $$ +# +# Since there is no autoregressive component, this model can be fit using +# the `MarkovRegression` class. Since there is no mean effect, we specify +# `trend='nc'`. There are hypotheized to be three regimes for the switching +# variances, so we specify `k_regimes=3` and `switching_variance=True` (by +# default, the variance is assumed to be the same across regimes). + +# Get the dataset +ew_excs = requests.get( + 'http://econ.korea.ac.kr/~cjkim/MARKOV/data/ew_excs.prn').content +raw = pd.read_table( + BytesIO(ew_excs), header=None, skipfooter=1, engine='python') +raw.index = pd.date_range('1926-01-01', '1995-12-01', freq='MS') + +dta_kns = raw.loc[:'1986'] - raw.loc[:'1986'].mean() + +# Plot the dataset +dta_kns[0].plot(title='Excess returns', figsize=(12, 3)) + +# Fit the model +mod_kns = sm.tsa.MarkovRegression( + dta_kns, k_regimes=3, trend='nc', switching_variance=True) +res_kns = mod_kns.fit() + +res_kns.summary() + +# Below we plot the probabilities of being in each of the regimes; only in +# a few periods is a high-variance regime probable. + +fig, axes = plt.subplots(3, figsize=(10, 7)) + +ax = axes[0] +ax.plot(res_kns.smoothed_marginal_probabilities[0]) +ax.set(title='Smoothed probability of a low-variance regime for stock returns') + +ax = axes[1] +ax.plot(res_kns.smoothed_marginal_probabilities[1]) +ax.set( + title='Smoothed probability of a medium-variance regime for stock returns') + +ax = axes[2] +ax.plot(res_kns.smoothed_marginal_probabilities[2]) +ax.set( + title='Smoothed probability of a high-variance regime for stock returns') + +fig.tight_layout() + +# ### Filardo (1994) Time-Varying Transition Probabilities +# +# This model demonstrates estimation with time-varying transition +# probabilities. The dataset can be reached at +# http://econ.korea.ac.kr/~cjkim/MARKOV/data/filardo.prn. +# +# In the above models we have assumed that the transition probabilities +# are constant across time. Here we allow the probabilities to change with +# the state of the economy. Otherwise, the model is the same Markov +# autoregression of Hamilton (1989). +# +# Each period, the regime now transitions according to the following +# matrix of time-varying transition probabilities: +# +# $$ P(S_t = s_t | S_{t-1} = s_{t-1}) = +# \begin{bmatrix} +# p_{00,t} & p_{10,t} \\ +# p_{01,t} & p_{11,t} +# \end{bmatrix} +# $$ +# +# where $p_{ij,t}$ is the probability of transitioning *from* regime $i$, +# *to* regime $j$ in period $t$, and is defined to be: +# +# $$ +# p_{ij,t} = \frac{\exp\{ x_{t-1}' \beta_{ij} \}}{1 + \exp\{ x_{t-1}' +# \beta_{ij} \}} +# $$ +# +# Instead of estimating the transition probabilities as part of maximum +# likelihood, the regression coefficients $\beta_{ij}$ are estimated. These +# coefficients relate the transition probabilities to a vector of pre- +# determined or exogenous regressors $x_{t-1}$. + +# Get the dataset +filardo = requests.get( + 'http://econ.korea.ac.kr/~cjkim/MARKOV/data/filardo.prn').content +dta_filardo = pd.read_table( + BytesIO(filardo), sep=' +', header=None, skipfooter=1, engine='python') +dta_filardo.columns = ['month', 'ip', 'leading'] +dta_filardo.index = pd.date_range('1948-01-01', '1991-04-01', freq='MS') + +dta_filardo['dlip'] = np.log(dta_filardo['ip']).diff() * 100 +# Deflated pre-1960 observations by ratio of std. devs. +# See hmt_tvp.opt or Filardo (1994) p. 302 +std_ratio = dta_filardo['dlip']['1960-01-01':].std( +) / dta_filardo['dlip'][:'1959-12-01'].std() +dta_filardo[ + 'dlip'][:'1959-12-01'] = dta_filardo['dlip'][:'1959-12-01'] * std_ratio + +dta_filardo['dlleading'] = np.log(dta_filardo['leading']).diff() * 100 +dta_filardo['dmdlleading'] = dta_filardo['dlleading'] - dta_filardo[ + 'dlleading'].mean() + +# Plot the data +dta_filardo['dlip'].plot( + title='Standardized growth rate of industrial production', figsize=(13, 3)) +plt.figure() +dta_filardo['dmdlleading'].plot( + title='Leading indicator', figsize=(13, 3)) + +# The time-varying transition probabilities are specified by the +# `exog_tvtp` parameter. +# +# Here we demonstrate another feature of model fitting - the use of a +# random search for MLE starting parameters. Because Markov switching models +# are often characterized by many local maxima of the likelihood function, +# performing an initial optimization step can be helpful to find the best +# parameters. +# +# Below, we specify that 20 random perturbations from the starting +# parameter vector are examined and the best one used as the actual starting +# parameters. Because of the random nature of the search, we seed the random +# number generator beforehand to allow replication of the result. + +mod_filardo = sm.tsa.MarkovAutoregression( + dta_filardo.iloc[2:]['dlip'], + k_regimes=2, + order=4, + switching_ar=False, + exog_tvtp=sm.add_constant(dta_filardo.iloc[1:-1]['dmdlleading'])) + +np.random.seed(12345) +res_filardo = mod_filardo.fit(search_reps=20) + +res_filardo.summary() + +# Below we plot the smoothed probability of the economy operating in a +# low-production state, and again include the NBER recessions for +# comparison. + +fig, ax = plt.subplots(figsize=(12, 3)) + +ax.plot(res_filardo.smoothed_marginal_probabilities[0]) +ax.fill_between( + usrec.index, 0, 1, where=usrec['USREC'].values, color='gray', alpha=0.2) +ax.set_xlim(dta_filardo.index[6], dta_filardo.index[-1]) +ax.set(title='Smoothed probability of a low-production state') + +# Using the time-varying transition probabilities, we can see how the +# expected duration of a low-production state changes over time: +# + +res_filardo.expected_durations[0].plot( + title='Expected duration of a low-production state', figsize=(12, 3)) + +# During recessions, the expected duration of a low-production state is +# much higher than in an expansion. diff --git a/examples/python/markov_regression.py b/examples/python/markov_regression.py new file mode 100644 index 0000000..e2f3408 --- /dev/null +++ b/examples/python/markov_regression.py @@ -0,0 +1,226 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook markov_regression.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# ## Markov switching dynamic regression models + +# This notebook provides an example of the use of Markov switching models +# in Statsmodels to estimate dynamic regression models with changes in +# regime. It follows the examples in the Stata Markov switching +# documentation, which can be found at +# http://www.stata.com/manuals14/tsmswitch.pdf. + +import numpy as np +import pandas as pd +import statsmodels.api as sm +import matplotlib.pyplot as plt + +# NBER recessions +from pandas_datareader.data import DataReader +from datetime import datetime +usrec = DataReader( + 'USREC', 'fred', start=datetime(1947, 1, 1), end=datetime(2013, 4, 1)) + +# ### Federal funds rate with switching intercept +# +# The first example models the federal funds rate as noise around a +# constant intercept, but where the intercept changes during different +# regimes. The model is simply: +# +# $$r_t = \mu_{S_t} + \varepsilon_t \qquad \varepsilon_t \sim N(0, +# \sigma^2)$$ +# +# where $S_t \in \{0, 1\}$, and the regime transitions according to +# +# $$ P(S_t = s_t | S_{t-1} = s_{t-1}) = +# \begin{bmatrix} +# p_{00} & p_{10} \\ +# 1 - p_{00} & 1 - p_{10} +# \end{bmatrix} +# $$ +# +# We will estimate the parameters of this model by maximum likelihood: +# $p_{00}, p_{10}, \mu_0, \mu_1, \sigma^2$. +# +# The data used in this example can be found at https://www.stata- +# press.com/data/r14/usmacro. + +# Get the federal funds rate data +from statsmodels.tsa.regime_switching.tests.test_markov_regression import fedfunds +dta_fedfunds = pd.Series( + fedfunds, index=pd.date_range('1954-07-01', '2010-10-01', freq='QS')) + +# Plot the data +dta_fedfunds.plot(title='Federal funds rate', figsize=(12, 3)) + +# Fit the model +# (a switching mean is the default of the MarkovRegession model) +mod_fedfunds = sm.tsa.MarkovRegression(dta_fedfunds, k_regimes=2) +res_fedfunds = mod_fedfunds.fit() + +res_fedfunds.summary() + +# From the summary output, the mean federal funds rate in the first regime +# (the "low regime") is estimated to be $3.7$ whereas in the "high regime" +# it is $9.6$. Below we plot the smoothed probabilities of being in the high +# regime. The model suggests that the 1980's was a time-period in which a +# high federal funds rate existed. + +res_fedfunds.smoothed_marginal_probabilities[1].plot( + title='Probability of being in the high regime', figsize=(12, 3)) + +# From the estimated transition matrix we can calculate the expected +# duration of a low regime versus a high regime. + +print(res_fedfunds.expected_durations) + +# A low regime is expected to persist for about fourteen years, whereas +# the high regime is expected to persist for only about five years. + +# ### Federal funds rate with switching intercept and lagged dependent +# variable +# +# The second example augments the previous model to include the lagged +# value of the federal funds rate. +# +# $$r_t = \mu_{S_t} + r_{t-1} \beta_{S_t} + \varepsilon_t \qquad +# \varepsilon_t \sim N(0, \sigma^2)$$ +# +# where $S_t \in \{0, 1\}$, and the regime transitions according to +# +# $$ P(S_t = s_t | S_{t-1} = s_{t-1}) = +# \begin{bmatrix} +# p_{00} & p_{10} \\ +# 1 - p_{00} & 1 - p_{10} +# \end{bmatrix} +# $$ +# +# We will estimate the parameters of this model by maximum likelihood: +# $p_{00}, p_{10}, \mu_0, \mu_1, \beta_0, \beta_1, \sigma^2$. + +# Fit the model +mod_fedfunds2 = sm.tsa.MarkovRegression( + dta_fedfunds.iloc[1:], k_regimes=2, exog=dta_fedfunds.iloc[:-1]) +res_fedfunds2 = mod_fedfunds2.fit() + +res_fedfunds2.summary() + +# There are several things to notice from the summary output: +# +# 1. The information criteria have decreased substantially, indicating +# that this model has a better fit than the previous model. +# 2. The interpretation of the regimes, in terms of the intercept, have +# switched. Now the first regime has the higher intercept and the second +# regime has a lower intercept. +# +# Examining the smoothed probabilities of the high regime state, we now +# see quite a bit more variability. + +res_fedfunds2.smoothed_marginal_probabilities[0].plot( + title='Probability of being in the high regime', figsize=(12, 3)) + +# Finally, the expected durations of each regime have decreased quite a +# bit. + +print(res_fedfunds2.expected_durations) + +# ### Taylor rule with 2 or 3 regimes +# +# We now include two additional exogenous variables - a measure of the +# output gap and a measure of inflation - to estimate a switching Taylor- +# type rule with both 2 and 3 regimes to see which fits the data better. +# +# Because the models can be often difficult to estimate, for the 3-regime +# model we employ a search over starting parameters to improve results, +# specifying 20 random search repetitions. + +# Get the additional data +from statsmodels.tsa.regime_switching.tests.test_markov_regression import ogap, inf +dta_ogap = pd.Series( + ogap, index=pd.date_range('1954-07-01', '2010-10-01', freq='QS')) +dta_inf = pd.Series( + inf, index=pd.date_range('1954-07-01', '2010-10-01', freq='QS')) + +exog = pd.concat((dta_fedfunds.shift(), dta_ogap, dta_inf), axis=1).iloc[4:] + +# Fit the 2-regime model +mod_fedfunds3 = sm.tsa.MarkovRegression( + dta_fedfunds.iloc[4:], k_regimes=2, exog=exog) +res_fedfunds3 = mod_fedfunds3.fit() + +# Fit the 3-regime model +np.random.seed(12345) +mod_fedfunds4 = sm.tsa.MarkovRegression( + dta_fedfunds.iloc[4:], k_regimes=3, exog=exog) +res_fedfunds4 = mod_fedfunds4.fit(search_reps=20) + +res_fedfunds3.summary() + +res_fedfunds4.summary() + +# Due to lower information criteria, we might prefer the 3-state model, +# with an interpretation of low-, medium-, and high-interest rate regimes. +# The smoothed probabilities of each regime are plotted below. + +fig, axes = plt.subplots(3, figsize=(10, 7)) + +ax = axes[0] +ax.plot(res_fedfunds4.smoothed_marginal_probabilities[0]) +ax.set(title='Smoothed probability of a low-interest rate regime') + +ax = axes[1] +ax.plot(res_fedfunds4.smoothed_marginal_probabilities[1]) +ax.set(title='Smoothed probability of a medium-interest rate regime') + +ax = axes[2] +ax.plot(res_fedfunds4.smoothed_marginal_probabilities[2]) +ax.set(title='Smoothed probability of a high-interest rate regime') + +fig.tight_layout() + +# ### Switching variances +# +# We can also accomodate switching variances. In particular, we consider +# the model +# +# $$ +# y_t = \mu_{S_t} + y_{t-1} \beta_{S_t} + \varepsilon_t \quad +# \varepsilon_t \sim N(0, \sigma_{S_t}^2) +# $$ +# +# We use maximum likelihood to estimate the parameters of this model: +# $p_{00}, p_{10}, \mu_0, \mu_1, \beta_0, \beta_1, \sigma_0^2, \sigma_1^2$. +# +# The application is to absolute returns on stocks, where the data can be +# found at https://www.stata-press.com/data/r14/snp500. + +# Get the federal funds rate data +from statsmodels.tsa.regime_switching.tests.test_markov_regression import areturns +dta_areturns = pd.Series( + areturns, index=pd.date_range('2004-05-04', '2014-5-03', freq='W')) + +# Plot the data +dta_areturns.plot(title='Absolute returns, S&P500', figsize=(12, 3)) + +# Fit the model +mod_areturns = sm.tsa.MarkovRegression( + dta_areturns.iloc[1:], + k_regimes=2, + exog=dta_areturns.iloc[:-1], + switching_variance=True) +res_areturns = mod_areturns.fit() + +res_areturns.summary() + +# The first regime is a low-variance regime and the second regime is a +# high-variance regime. Below we plot the probabilities of being in the low- +# variance regime. Between 2008 and 2012 there does not appear to be a clear +# indication of one regime guiding the economy. + +res_areturns.smoothed_marginal_probabilities[0].plot( + title='Probability of being in a low-variance regime', figsize=(12, 3)) diff --git a/examples/python/mixed_lm_example.py b/examples/python/mixed_lm_example.py new file mode 100644 index 0000000..9565338 --- /dev/null +++ b/examples/python/mixed_lm_example.py @@ -0,0 +1,170 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook mixed_lm_example.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Linear Mixed Effects Models + +import numpy as np +import statsmodels.api as sm +import statsmodels.formula.api as smf + +# Comparing R lmer to Statsmodels MixedLM +# ======================================= +# +# The Statsmodels imputation of linear mixed models (MixedLM) closely +# follows the approach outlined in Lindstrom and Bates (JASA 1988). This is +# also the approach followed in the R package LME4. Other packages such as +# Stata, SAS, etc. should also be consistent with this approach, as the +# basic techniques in this area are mostly mature. +# +# Here we show how linear mixed models can be fit using the MixedLM +# procedure in Statsmodels. Results from R (LME4) are included for +# comparison. +# +# Here are our import statements: + +# ## Growth curves of pigs +# +# These are longitudinal data from a factorial experiment. The outcome +# variable is the weight of each pig, and the only predictor variable we +# will use here is "time". First we fit a model that expresses the mean +# weight as a linear function of time, with a random intercept for each pig. +# The model is specified using formulas. Since the random effects structure +# is not specified, the default random effects structure (a random intercept +# for each group) is automatically used. + +data = sm.datasets.get_rdataset('dietox', 'geepack').data +md = smf.mixedlm("Weight ~ Time", data, groups=data["Pig"]) +mdf = md.fit() +print(mdf.summary()) + +# Here is the same model fit in R using LMER: + +# Note that in the Statsmodels summary of results, the fixed effects and +# random effects parameter estimates are shown in a single table. The +# random effect for animal is labeled "Intercept RE" in the Statmodels +# output above. In the LME4 output, this effect is the pig intercept under +# the random effects section. +# +# There has been a lot of debate about whether the standard errors for +# random effect variance and covariance parameters are useful. In LME4, +# these standard errors are not displayed, because the authors of the +# package believe they are not very informative. While there is good reason +# to question their utility, we elected to include the standard errors in +# the summary table, but do not show the corresponding Wald confidence +# intervals. +# +# Next we fit a model with two random effects for each animal: a random +# intercept, and a random slope (with respect to time). This means that +# each pig may have a different baseline weight, as well as growing at a +# different rate. The formula specifies that "Time" is a covariate with a +# random coefficient. By default, formulas always include an intercept +# (which could be suppressed here using "0 + Time" as the formula). + +md = smf.mixedlm("Weight ~ Time", data, groups=data["Pig"], re_formula="~Time") +mdf = md.fit() +print(mdf.summary()) + +# Here is the same model fit using LMER in R: + +# The random intercept and random slope are only weakly correlated $(0.294 +# / \sqrt{19.493 * 0.416} \approx 0.1)$. So next we fit a model in which +# the two random effects are constrained to be uncorrelated: + +.294 / (19.493 * .416)**.5 + +md = smf.mixedlm("Weight ~ Time", data, groups=data["Pig"], re_formula="~Time") +free = sm.regression.mixed_linear_model.MixedLMParams.from_components( + np.ones(2), np.eye(2)) + +mdf = md.fit(free=free) +print(mdf.summary()) + +# The likelihood drops by 0.3 when we fix the correlation parameter to 0. +# Comparing 2 x 0.3 = 0.6 to the chi^2 1 df reference distribution suggests +# that the data are very consistent with a model in which this parameter is +# equal to 0. +# +# Here is the same model fit using LMER in R (note that here R is +# reporting the REML criterion instead of the likelihood, where the REML +# criterion is twice the log likeihood): + +# ## Sitka growth data +# +# This is one of the example data sets provided in the LMER R library. +# The outcome variable is the size of the tree, and the covariate used here +# is a time value. The data are grouped by tree. + +data = sm.datasets.get_rdataset("Sitka", "MASS").data +endog = data["size"] +data["Intercept"] = 1 +exog = data[["Intercept", "Time"]] + +# Here is the statsmodels LME fit for a basic model with a random +# intercept. We are passing the endog and exog data directly to the LME +# init function as arrays. Also note that endog_re is specified explicitly +# in argument 4 as a random intercept (although this would also be the +# default if it were not specified). + +md = sm.MixedLM(endog, exog, groups=data["tree"], exog_re=exog["Intercept"]) +mdf = md.fit() +print(mdf.summary()) + +# Here is the same model fit in R using LMER: + +# We can now try to add a random slope. We start with R this time. From +# the code and output below we see that the REML estimate of the variance of +# the random slope is nearly zero. + +# If we run this in statsmodels LME with defaults, we see that the +# variance estimate is indeed very small, which leads to a warning about the +# solution being on the boundary of the parameter space. The regression +# slopes agree very well with R, but the likelihood value is much higher +# than that returned by R. + +exog_re = exog.copy() +md = sm.MixedLM(endog, exog, data["tree"], exog_re) +mdf = md.fit() +print(mdf.summary()) + +# We can further explore the random effects struture by constructing plots +# of the profile likelihoods. We start with the random intercept, generating +# a plot of the profile likelihood from 0.1 units below to 0.1 units above +# the MLE. Since each optimization inside the profile likelihood generates a +# warning (due to the random slope variance being close to zero), we turn +# off the warnings here. + +import warnings + +with warnings.catch_warnings(): + warnings.filterwarnings("ignore") + likev = mdf.profile_re(0, 're', dist_low=0.1, dist_high=0.1) + +# Here is a plot of the profile likelihood function. We multiply the log- +# likelihood difference by 2 to obtain the usual $\chi^2$ reference +# distribution with 1 degree of freedom. + +import matplotlib.pyplot as plt + +plt.figure(figsize=(10, 8)) +plt.plot(likev[:, 0], 2 * likev[:, 1]) +plt.xlabel("Variance of random slope", size=17) +plt.ylabel("-2 times profile log likelihood", size=17) + +# Here is a plot of the profile likelihood function. The profile +# likelihood plot shows that the MLE of the random slope variance parameter +# is a very small positive number, and that there is low uncertainty in this +# estimate. + +re = mdf.cov_re.iloc[1, 1] +likev = mdf.profile_re(1, 're', dist_low=.5 * re, dist_high=0.8 * re) + +plt.figure(figsize=(10, 8)) +plt.plot(likev[:, 0], 2 * likev[:, 1]) +plt.xlabel("Variance of random slope", size=17) +plt.ylabel("-2 times profile log likelihood", size=17) diff --git a/examples/python/ols.py b/examples/python/ols.py new file mode 100644 index 0000000..e8e19be --- /dev/null +++ b/examples/python/ols.py @@ -0,0 +1,226 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook ols.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Ordinary Least Squares + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm +import matplotlib.pyplot as plt +from statsmodels.sandbox.regression.predstd import wls_prediction_std + +np.random.seed(9876789) + +# ## OLS estimation +# +# Artificial data: + +nsample = 100 +x = np.linspace(0, 10, 100) +X = np.column_stack((x, x**2)) +beta = np.array([1, 0.1, 10]) +e = np.random.normal(size=nsample) + +# Our model needs an intercept so we add a column of 1s: + +X = sm.add_constant(X) +y = np.dot(X, beta) + e + +# Fit and summary: + +model = sm.OLS(y, X) +results = model.fit() +print(results.summary()) + +# Quantities of interest can be extracted directly from the fitted model. +# Type ``dir(results)`` for a full list. Here are some examples: + +print('Parameters: ', results.params) +print('R2: ', results.rsquared) + +# ## OLS non-linear curve but linear in parameters +# +# We simulate artificial data with a non-linear relationship between x and +# y: + +nsample = 50 +sig = 0.5 +x = np.linspace(0, 20, nsample) +X = np.column_stack((x, np.sin(x), (x - 5)**2, np.ones(nsample))) +beta = [0.5, 0.5, -0.02, 5.] + +y_true = np.dot(X, beta) +y = y_true + sig * np.random.normal(size=nsample) + +# Fit and summary: + +res = sm.OLS(y, X).fit() +print(res.summary()) + +# Extract other quantities of interest: + +print('Parameters: ', res.params) +print('Standard errors: ', res.bse) +print('Predicted values: ', res.predict()) + +# Draw a plot to compare the true relationship to OLS predictions. +# Confidence intervals around the predictions are built using the +# ``wls_prediction_std`` command. + +prstd, iv_l, iv_u = wls_prediction_std(res) + +fig, ax = plt.subplots(figsize=(8, 6)) + +ax.plot(x, y, 'o', label="data") +ax.plot(x, y_true, 'b-', label="True") +ax.plot(x, res.fittedvalues, 'r--.', label="OLS") +ax.plot(x, iv_u, 'r--') +ax.plot(x, iv_l, 'r--') +ax.legend(loc='best') + +# ## OLS with dummy variables +# +# We generate some artificial data. There are 3 groups which will be +# modelled using dummy variables. Group 0 is the omitted/benchmark category. + +nsample = 50 +groups = np.zeros(nsample, int) +groups[20:40] = 1 +groups[40:] = 2 +#dummy = (groups[:,None] == np.unique(groups)).astype(float) + +dummy = sm.categorical(groups, drop=True) +x = np.linspace(0, 20, nsample) +# drop reference category +X = np.column_stack((x, dummy[:, 1:])) +X = sm.add_constant(X, prepend=False) + +beta = [1., 3, -3, 10] +y_true = np.dot(X, beta) +e = np.random.normal(size=nsample) +y = y_true + e + +# Inspect the data: + +print(X[:5, :]) +print(y[:5]) +print(groups) +print(dummy[:5, :]) + +# Fit and summary: + +res2 = sm.OLS(y, X).fit() +print(res2.summary()) + +# Draw a plot to compare the true relationship to OLS predictions: + +prstd, iv_l, iv_u = wls_prediction_std(res2) + +fig, ax = plt.subplots(figsize=(8, 6)) + +ax.plot(x, y, 'o', label="Data") +ax.plot(x, y_true, 'b-', label="True") +ax.plot(x, res2.fittedvalues, 'r--.', label="Predicted") +ax.plot(x, iv_u, 'r--') +ax.plot(x, iv_l, 'r--') +legend = ax.legend(loc="best") + +# ## Joint hypothesis test +# +# ### F test +# +# We want to test the hypothesis that both coefficients on the dummy +# variables are equal to zero, that is, $R \times \beta = 0$. An F test +# leads us to strongly reject the null hypothesis of identical constant in +# the 3 groups: + +R = [[0, 1, 0, 0], [0, 0, 1, 0]] +print(np.array(R)) +print(res2.f_test(R)) + +# You can also use formula-like syntax to test hypotheses + +print(res2.f_test("x2 = x3 = 0")) + +# ### Small group effects +# +# If we generate artificial data with smaller group effects, the T test +# can no longer reject the Null hypothesis: + +beta = [1., 0.3, -0.0, 10] +y_true = np.dot(X, beta) +y = y_true + np.random.normal(size=nsample) + +res3 = sm.OLS(y, X).fit() + +print(res3.f_test(R)) + +print(res3.f_test("x2 = x3 = 0")) + +# ### Multicollinearity +# +# The Longley dataset is well known to have high multicollinearity. That +# is, the exogenous predictors are highly correlated. This is problematic +# because it can affect the stability of our coefficient estimates as we +# make minor changes to model specification. + +from statsmodels.datasets.longley import load_pandas +y = load_pandas().endog +X = load_pandas().exog +X = sm.add_constant(X) + +# Fit and summary: + +ols_model = sm.OLS(y, X) +ols_results = ols_model.fit() +print(ols_results.summary()) + +# #### Condition number +# +# One way to assess multicollinearity is to compute the condition number. +# Values over 20 are worrisome (see Greene 4.9). The first step is to +# normalize the independent variables to have unit length: + +norm_x = X.values +for i, name in enumerate(X): + if name == "const": + continue + norm_x[:, i] = X[name] / np.linalg.norm(X[name]) +norm_xtx = np.dot(norm_x.T, norm_x) + +# Then, we take the square root of the ratio of the biggest to the +# smallest eigen values. + +eigs = np.linalg.eigvals(norm_xtx) +condition_number = np.sqrt(eigs.max() / eigs.min()) +print(condition_number) + +# #### Dropping an observation +# +# Greene also points out that dropping a single observation can have a +# dramatic effect on the coefficient estimates: + +ols_results2 = sm.OLS(y.iloc[:14], X.iloc[:14]).fit() +print("Percentage change %4.2f%%\n" * 7 % tuple([ + i for i in + (ols_results2.params - ols_results.params) / ols_results.params * 100 +])) + +# We can also look at formal statistics for this such as the DFBETAS -- a +# standardized measure of how much each coefficient changes when that +# observation is left out. + +infl = ols_results.get_influence() + +# In general we may consider DBETAS in absolute value greater than +# $2/\sqrt{N}$ to be influential observations + +2. / len(X)**.5 + +print(infl.summary_frame().filter(regex="dfb")) diff --git a/examples/python/pca_fertility_factors.py b/examples/python/pca_fertility_factors.py new file mode 100644 index 0000000..04fdcc8 --- /dev/null +++ b/examples/python/pca_fertility_factors.py @@ -0,0 +1,151 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook pca_fertility_factors.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Statsmodels Principal Component Analysis + +# *Key ideas:* Principal component analysis, world bank data, fertility +# +# In this notebook, we use principal components analysis (PCA) to analyze +# the time series of fertility rates in 192 countries, using data obtained +# from the World Bank. The main goal is to understand how the trends in +# fertility over time differ from country to country. This is a slightly +# atypical illustration of PCA because the data are time series. Methods +# such as functional PCA have been developed for this setting, but since the +# fertility data are very smooth, there is no real disadvantage to using +# standard PCA in this case. + +import pandas as pd +import numpy as np +import matplotlib.pyplot as plt +import statsmodels.api as sm +from statsmodels.multivariate.pca import PCA + +# The data can be obtained from the [World Bank web +# site](http://data.worldbank.org/indicator/SP.DYN.TFRT.IN), but here we +# work with a slightly cleaned-up version of the data: + +data = sm.datasets.fertility.load_pandas().data +data.head() + +# Here we construct a DataFrame that contains only the numerical fertility +# rate data and set the index to the country names. We also drop all the +# countries with any missing data. + +columns = list(map(str, range(1960, 2012))) +data.set_index('Country Name', inplace=True) +dta = data[columns] +dta = dta.dropna() +dta.head() + +# There are two ways to use PCA to analyze a rectangular matrix: we can +# treat the rows as the "objects" and the columns as the "variables", or +# vice-versa. Here we will treat the fertility measures as "variables" used +# to measure the countries as "objects". Thus the goal will be to reduce +# the yearly fertility rate values to a small number of fertility rate +# "profiles" or "basis functions" that capture most of the variation over +# time in the different countries. + +# The mean trend is removed in PCA, but its worthwhile taking a look at +# it. It shows that fertility has dropped steadily over the time period +# covered in this dataset. Note that the mean is calculated using a country +# as the unit of analysis, ignoring population size. This is also true for +# the PC analysis conducted below. A more sophisticated analysis might +# weight the countries, say by population in 1980. + +ax = dta.mean().plot(grid=False) +ax.set_xlabel("Year", size=17) +ax.set_ylabel( + "Fertility rate", size=17) +ax.set_xlim(0, 51) + +# Next we perform the PCA: + +pca_model = PCA(dta.T, standardize=False, demean=True) + +# Based on the eigenvalues, we see that the first PC dominates, with +# perhaps a small amount of meaningful variation captured in the second and +# third PC's. + +fig = pca_model.plot_scree(log_scale=False) + +# Next we will plot the PC factors. The dominant factor is monotonically +# increasing. Countries with a positive score on the first factor will +# increase faster (or decrease slower) compared to the mean shown above. +# Countries with a negative score on the first factor will decrease faster +# than the mean. The second factor is U-shaped with a positive peak at +# around 1985. Countries with a large positive score on the second factor +# will have lower than average fertilities at the beginning and end of the +# data range, but higher than average fertility in the middle of the range. + +fig, ax = plt.subplots(figsize=(8, 4)) +lines = ax.plot(pca_model.factors.iloc[:, :3], lw=4, alpha=.6) +ax.set_xticklabels(dta.columns.values[::10]) +ax.set_xlim(0, 51) +ax.set_xlabel("Year", size=17) +fig.subplots_adjust(.1, .1, .85, .9) +legend = fig.legend(lines, ['PC 1', 'PC 2', 'PC 3'], loc='center right') +legend.draw_frame(False) + +# To better understand what is going on, we will plot the fertility +# trajectories for sets of countries with similar PC scores. The following +# convenience function produces such a plot. + +idx = pca_model.loadings.iloc[:, 0].argsort() + +# First we plot the five countries with the greatest scores on PC 1. +# These countries have a higher rate of fertility increase than the global +# mean (which is decreasing). + + +def make_plot(labels): + fig, ax = plt.subplots(figsize=(9, 5)) + ax = dta.loc[labels].T.plot(legend=False, grid=False, ax=ax) + dta.mean().plot(ax=ax, grid=False, label='Mean') + ax.set_xlim(0, 51) + fig.subplots_adjust(.1, .1, .75, .9) + ax.set_xlabel("Year", size=17) + ax.set_ylabel( + "Fertility", size=17) + legend = ax.legend( + *ax.get_legend_handles_labels(), + loc='center left', + bbox_to_anchor=(1, .5)) + legend.draw_frame(False) + + +labels = dta.index[idx[-5:]] +make_plot(labels) + +# Here are the five countries with the greatest scores on factor 2. These +# are countries that reached peak fertility around 1980, later than much of +# the rest of the world, followed by a rapid decrease in fertility. + +idx = pca_model.loadings.iloc[:, 1].argsort() +make_plot(dta.index[idx[-5:]]) + +# Finally we have the countries with the most negative scores on PC 2. +# These are the countries where the fertility rate declined much faster than +# the global mean during the 1960's and 1970's, then flattened out. + +make_plot(dta.index[idx[:5]]) + +# We can also look at a scatterplot of the first two principal component +# scores. We see that the variation among countries is fairly continuous, +# except perhaps that the two countries with highest scores for PC 2 are +# somewhat separated from the other points. These countries, Oman and +# Yemen, are unique in having a sharp spike in fertility around 1980. No +# other country has such a spike. In contrast, the countries with high +# scores on PC 1 (that have continuously increasing fertility), are part of +# a continuum of variation. + +fig, ax = plt.subplots() +pca_model.loadings.plot.scatter(x='comp_00', y='comp_01', ax=ax) +ax.set_xlabel("PC 1", size=17) +ax.set_ylabel("PC 2", size=17) +dta.index[pca_model.loadings.iloc[:, 1] > .2].values diff --git a/examples/python/plots_boxplots.py b/examples/python/plots_boxplots.py new file mode 100644 index 0000000..83ec1d0 --- /dev/null +++ b/examples/python/plots_boxplots.py @@ -0,0 +1,225 @@ +# DO NOT EDIT +# Autogenerated from the notebook plots_boxplots.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +#!/usr/bin/env python +# coding: utf-8 + +# # Box Plots + +# The following illustrates some options for the boxplot in statsmodels. +# These include `violin_plot` and `bean_plot`. + +from __future__ import print_function + +import numpy as np +import matplotlib.pyplot as plt +import statsmodels.api as sm + +# ## Bean Plots + +# The following example is taken from the docstring of `beanplot`. +# +# We use the American National Election Survey 1996 dataset, which has +# Party +# Identification of respondents as independent variable and (among other +# data) age as dependent variable. + +data = sm.datasets.anes96.load_pandas() +party_ID = np.arange(7) +labels = [ + "Strong Democrat", "Weak Democrat", "Independent-Democrat", + "Independent-Independent", "Independent-Republican", "Weak Republican", + "Strong Republican" +] + +# Group age by party ID, and create a violin plot with it: + +plt.rcParams['figure.subplot.bottom'] = 0.23 # keep labels visible +plt.rcParams['figure.figsize'] = (10.0, 8.0) # make plot larger in notebook +age = [data.exog['age'][data.endog == id] for id in party_ID] +fig = plt.figure() +ax = fig.add_subplot(111) +plot_opts = { + 'cutoff_val': 5, + 'cutoff_type': 'abs', + 'label_fontsize': 'small', + 'label_rotation': 30 +} +sm.graphics.beanplot(age, ax=ax, labels=labels, plot_opts=plot_opts) +ax.set_xlabel("Party identification of respondent.") +ax.set_ylabel("Age") +#plt.show() + + +def beanplot(data, plot_opts={}, jitter=False): + """helper function to try out different plot options + """ + fig = plt.figure() + ax = fig.add_subplot(111) + plot_opts_ = { + 'cutoff_val': 5, + 'cutoff_type': 'abs', + 'label_fontsize': 'small', + 'label_rotation': 30 + } + plot_opts_.update(plot_opts) + sm.graphics.beanplot(data, + ax=ax, + labels=labels, + jitter=jitter, + plot_opts=plot_opts_) + ax.set_xlabel("Party identification of respondent.") + ax.set_ylabel("Age") + + +fig = beanplot(age, jitter=True) + +fig = beanplot(age, plot_opts={'violin_width': 0.5, 'violin_fc': '#66c2a5'}) + +fig = beanplot(age, plot_opts={'violin_fc': '#66c2a5'}) + +fig = beanplot(age, + plot_opts={ + 'bean_size': 0.2, + 'violin_width': 0.75, + 'violin_fc': '#66c2a5' + }) + +fig = beanplot(age, jitter=True, plot_opts={'violin_fc': '#66c2a5'}) + +fig = beanplot(age, + jitter=True, + plot_opts={ + 'violin_width': 0.5, + 'violin_fc': '#66c2a5' + }) + +# ## Advanced Box Plots + +# Based of example script `example_enhanced_boxplots.py` (by Ralf Gommers) + +import numpy as np +import matplotlib.pyplot as plt + +import statsmodels.api as sm + +# Necessary to make horizontal axis labels fit +plt.rcParams['figure.subplot.bottom'] = 0.23 + +data = sm.datasets.anes96.load_pandas() +party_ID = np.arange(7) +labels = [ + "Strong Democrat", "Weak Democrat", "Independent-Democrat", + "Independent-Independent", "Independent-Republican", "Weak Republican", + "Strong Republican" +] + +# Group age by party ID. +age = [data.exog['age'][data.endog == id] for id in party_ID] + +# Create a violin plot. +fig = plt.figure() +ax = fig.add_subplot(111) + +sm.graphics.violinplot(age, + ax=ax, + labels=labels, + plot_opts={ + 'cutoff_val': 5, + 'cutoff_type': 'abs', + 'label_fontsize': 'small', + 'label_rotation': 30 + }) + +ax.set_xlabel("Party identification of respondent.") +ax.set_ylabel("Age") +ax.set_title("US national election '96 - Age & Party Identification") + +# Create a bean plot. +fig2 = plt.figure() +ax = fig2.add_subplot(111) + +sm.graphics.beanplot(age, + ax=ax, + labels=labels, + plot_opts={ + 'cutoff_val': 5, + 'cutoff_type': 'abs', + 'label_fontsize': 'small', + 'label_rotation': 30 + }) + +ax.set_xlabel("Party identification of respondent.") +ax.set_ylabel("Age") +ax.set_title("US national election '96 - Age & Party Identification") + +# Create a jitter plot. +fig3 = plt.figure() +ax = fig3.add_subplot(111) + +plot_opts = { + 'cutoff_val': 5, + 'cutoff_type': 'abs', + 'label_fontsize': 'small', + 'label_rotation': 30, + 'violin_fc': (0.8, 0.8, 0.8), + 'jitter_marker': '.', + 'jitter_marker_size': 3, + 'bean_color': '#FF6F00', + 'bean_mean_color': '#009D91' +} +sm.graphics.beanplot(age, + ax=ax, + labels=labels, + jitter=True, + plot_opts=plot_opts) + +ax.set_xlabel("Party identification of respondent.") +ax.set_ylabel("Age") +ax.set_title("US national election '96 - Age & Party Identification") + +# Create an asymmetrical jitter plot. +ix = data.exog['income'] < 16 # incomes < $30k +age = data.exog['age'][ix] +endog = data.endog[ix] +age_lower_income = [age[endog == id] for id in party_ID] + +ix = data.exog['income'] >= 20 # incomes > $50k +age = data.exog['age'][ix] +endog = data.endog[ix] +age_higher_income = [age[endog == id] for id in party_ID] + +fig = plt.figure() +ax = fig.add_subplot(111) + +plot_opts['violin_fc'] = (0.5, 0.5, 0.5) +plot_opts['bean_show_mean'] = False +plot_opts['bean_show_median'] = False +plot_opts['bean_legend_text'] = 'Income < \$30k' +plot_opts['cutoff_val'] = 10 +sm.graphics.beanplot(age_lower_income, + ax=ax, + labels=labels, + side='left', + jitter=True, + plot_opts=plot_opts) +plot_opts['violin_fc'] = (0.7, 0.7, 0.7) +plot_opts['bean_color'] = '#009D91' +plot_opts['bean_legend_text'] = 'Income > \$50k' +sm.graphics.beanplot(age_higher_income, + ax=ax, + labels=labels, + side='right', + jitter=True, + plot_opts=plot_opts) + +ax.set_xlabel("Party identification of respondent.") +ax.set_ylabel("Age") +ax.set_title("US national election '96 - Age & Party Identification") + +# Show all plots. +#plt.show() diff --git a/examples/python/predict.py b/examples/python/predict.py new file mode 100644 index 0000000..b4e5bb8 --- /dev/null +++ b/examples/python/predict.py @@ -0,0 +1,78 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook predict.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Prediction (out of sample) + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm + +# ## Artificial data + +nsample = 50 +sig = 0.25 +x1 = np.linspace(0, 20, nsample) +X = np.column_stack((x1, np.sin(x1), (x1 - 5)**2)) +X = sm.add_constant(X) +beta = [5., 0.5, 0.5, -0.02] +y_true = np.dot(X, beta) +y = y_true + sig * np.random.normal(size=nsample) + +# ## Estimation + +olsmod = sm.OLS(y, X) +olsres = olsmod.fit() +print(olsres.summary()) + +# ## In-sample prediction + +ypred = olsres.predict(X) +print(ypred) + +# ## Create a new sample of explanatory variables Xnew, predict and plot + +x1n = np.linspace(20.5, 25, 10) +Xnew = np.column_stack((x1n, np.sin(x1n), (x1n - 5)**2)) +Xnew = sm.add_constant(Xnew) +ynewpred = olsres.predict(Xnew) # predict out of sample +print(ynewpred) + +# ## Plot comparison + +import matplotlib.pyplot as plt + +fig, ax = plt.subplots() +ax.plot(x1, y, 'o', label="Data") +ax.plot(x1, y_true, 'b-', label="True") +ax.plot( + np.hstack((x1, x1n)), + np.hstack((ypred, ynewpred)), + 'r', + label="OLS prediction") +ax.legend(loc="best") + +# ## Predicting with Formulas + +# Using formulas can make both estimation and prediction a lot easier + +from statsmodels.formula.api import ols + +data = {"x1": x1, "y": y} + +res = ols("y ~ x1 + np.sin(x1) + I((x1-5)**2)", data=data).fit() + +# We use the `I` to indicate use of the Identity transform. Ie., we don't +# want any expansion magic from using `**2` + +res.params + +# Now we only have to pass the single variable and we get the transformed +# right-hand side variables automatically + +res.predict(exog=dict(x1=x1n)) diff --git a/examples/python/quantile_regression.py b/examples/python/quantile_regression.py new file mode 100644 index 0000000..434a6b0 --- /dev/null +++ b/examples/python/quantile_regression.py @@ -0,0 +1,131 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook quantile_regression.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Quantile regression + +# +# This example page shows how to use ``statsmodels``' ``QuantReg`` class +# to replicate parts of the analysis published in +# +# * Koenker, Roger and Kevin F. Hallock. "Quantile Regressioin". Journal +# of Economic Perspectives, Volume 15, Number 4, Fall 2001, Pages 143–156 +# +# We are interested in the relationship between income and expenditures on +# food for a sample of working class Belgian households in 1857 (the Engel +# data). +# +# ## Setup +# +# We first need to load some modules and to retrieve the data. +# Conveniently, the Engel dataset is shipped with ``statsmodels``. + +from __future__ import print_function +import numpy as np +import pandas as pd +import statsmodels.api as sm +import statsmodels.formula.api as smf +import matplotlib.pyplot as plt + +data = sm.datasets.engel.load_pandas().data +data.head() + +# ## Least Absolute Deviation +# +# The LAD model is a special case of quantile regression where q=0.5 + +mod = smf.quantreg('foodexp ~ income', data) +res = mod.fit(q=.5) +print(res.summary()) + +# ## Visualizing the results +# +# We estimate the quantile regression model for many quantiles between .05 +# and .95, and compare best fit line from each of these models to Ordinary +# Least Squares results. + +# ### Prepare data for plotting +# +# For convenience, we place the quantile regression results in a Pandas +# DataFrame, and the OLS results in a dictionary. + +quantiles = np.arange(.05, .96, .1) + + +def fit_model(q): + res = mod.fit(q=q) + return [q, res.params['Intercept'], res.params['income'] + ] + res.conf_int().loc['income'].tolist() + + +models = [fit_model(x) for x in quantiles] +models = pd.DataFrame(models, columns=['q', 'a', 'b', 'lb', 'ub']) + +ols = smf.ols('foodexp ~ income', data).fit() +ols_ci = ols.conf_int().loc['income'].tolist() +ols = dict( + a=ols.params['Intercept'], + b=ols.params['income'], + lb=ols_ci[0], + ub=ols_ci[1]) + +print(models) +print(ols) + +# ### First plot +# +# This plot compares best fit lines for 10 quantile regression models to +# the least squares fit. As Koenker and Hallock (2001) point out, we see +# that: +# +# 1. Food expenditure increases with income +# 2. The *dispersion* of food expenditure increases with income +# 3. The least squares estimates fit low income observations quite poorly +# (i.e. the OLS line passes over most low income households) + +x = np.arange(data.income.min(), data.income.max(), 50) +get_y = lambda a, b: a + b * x + +fig, ax = plt.subplots(figsize=(8, 6)) + +for i in range(models.shape[0]): + y = get_y(models.a[i], models.b[i]) + ax.plot(x, y, linestyle='dotted', color='grey') + +y = get_y(ols['a'], ols['b']) + +ax.plot(x, y, color='red', label='OLS') +ax.scatter(data.income, data.foodexp, alpha=.2) +ax.set_xlim((240, 3000)) +ax.set_ylim((240, 2000)) +legend = ax.legend() +ax.set_xlabel('Income', fontsize=16) +ax.set_ylabel( + 'Food expenditure', fontsize=16) + +# ### Second plot +# +# The dotted black lines form 95% point-wise confidence band around 10 +# quantile regression estimates (solid black line). The red lines represent +# OLS regression results along with their 95% confindence interval. +# +# In most cases, the quantile regression point estimates lie outside the +# OLS confidence interval, which suggests that the effect of income on food +# expenditure may not be constant across the distribution. + +n = models.shape[0] +p1 = plt.plot(models.q, models.b, color='black', label='Quantile Reg.') +p2 = plt.plot(models.q, models.ub, linestyle='dotted', color='black') +p3 = plt.plot(models.q, models.lb, linestyle='dotted', color='black') +p4 = plt.plot(models.q, [ols['b']] * n, color='red', label='OLS') +p5 = plt.plot(models.q, [ols['lb']] * n, linestyle='dotted', color='red') +p6 = plt.plot(models.q, [ols['ub']] * n, linestyle='dotted', color='red') +plt.ylabel(r'$\beta_{income}$') +plt.xlabel('Quantiles of the conditional food expenditure distribution') +plt.legend() +plt.show() diff --git a/examples/python/recursive_ls.py b/examples/python/recursive_ls.py new file mode 100644 index 0000000..57dd261 --- /dev/null +++ b/examples/python/recursive_ls.py @@ -0,0 +1,181 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook recursive_ls.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Recursive least squares +# +# Recursive least squares is an expanding window version of ordinary least +# squares. In addition to availability of regression coefficients computed +# recursively, the recursively computed residuals the construction of +# statistics to investigate parameter instability. +# +# The `RecursiveLS` class allows computation of recursive residuals and +# computes CUSUM and CUSUM of squares statistics. Plotting these statistics +# along with reference lines denoting statistically significant deviations +# from the null hypothesis of stable parameters allows an easy visual +# indication of parameter stability. +# +# Finally, the `RecursiveLS` model allows imposing linear restrictions on +# the parameter vectors, and can be constructed using the formula interface. + +import numpy as np +import pandas as pd +import statsmodels.api as sm +import matplotlib.pyplot as plt +from pandas_datareader.data import DataReader + +np.set_printoptions(suppress=True) + +# ## Example 1: Copper +# +# We first consider parameter stability in the copper dataset (description +# below). + +print(sm.datasets.copper.DESCRLONG) + +dta = sm.datasets.copper.load_pandas().data +dta.index = pd.date_range('1951-01-01', '1975-01-01', freq='AS') +endog = dta['WORLDCONSUMPTION'] + +# To the regressors in the dataset, we add a column of ones for an +# intercept +exog = sm.add_constant( + dta[['COPPERPRICE', 'INCOMEINDEX', 'ALUMPRICE', 'INVENTORYINDEX']]) + +# First, construct and fir the model, and print a summary. Although the +# `RLS` model computes the regression parameters recursively, so there are +# as many estimates as there are datapoints, the summary table only presents +# the regression parameters estimated on the entire sample; except for small +# effects from initialization of the recursiions, these estimates are +# equivalent to OLS estimates. + +mod = sm.RecursiveLS(endog, exog) +res = mod.fit() + +print(res.summary()) + +# The recursive coefficients are available in the `recursive_coefficients` +# attribute. Alternatively, plots can generated using the +# `plot_recursive_coefficient` method. + +print(res.recursive_coefficients.filtered[0]) +res.plot_recursive_coefficient( + range(mod.k_exog), alpha=None, figsize=(10, 6)) + +# The CUSUM statistic is available in the `cusum` attribute, but usually +# it is more convenient to visually check for parameter stability using the +# `plot_cusum` method. In the plot below, the CUSUM statistic does not move +# outside of the 5% significance bands, so we fail to reject the null +# hypothesis of stable parameters at the 5% level. + +print(res.cusum) +fig = res.plot_cusum() + +# Another related statistic is the CUSUM of squares. It is available in +# the `cusum_squares` attribute, but it is similarly more convenient to +# check it visually, using the `plot_cusum_squares` method. In the plot +# below, the CUSUM of squares statistic does not move outside of the 5% +# significance bands, so we fail to reject the null hypothesis of stable +# parameters at the 5% level. + +res.plot_cusum_squares() + +# # Example 2: Quantity theory of money +# +# The quantity theory of money suggests that "a given change in the rate +# of change in the quantity of money induces ... an equal change in the rate +# of price inflation" (Lucas, 1980). Following Lucas, we examine the +# relationship between double-sided exponentially weighted moving averages +# of money growth and CPI inflation. Although Lucas found the relationship +# between these variables to be stable, more recently it appears that the +# relationship is unstable; see e.g. Sargent and Surico (2010). + +start = '1959-12-01' +end = '2015-01-01' +m2 = DataReader('M2SL', 'fred', start=start, end=end) +cpi = DataReader('CPIAUCSL', 'fred', start=start, end=end) + + +def ewma(series, beta, n_window): + nobs = len(series) + scalar = (1 - beta) / (1 + beta) + ma = [] + k = np.arange(n_window, 0, -1) + weights = np.r_[beta**k, 1, beta**k[::-1]] + for t in range(n_window, nobs - n_window): + window = series.iloc[t - n_window:t + n_window + 1].values + ma.append(scalar * np.sum(weights * window)) + return pd.Series( + ma, name=series.name, index=series.iloc[n_window:-n_window].index) + + +m2_ewma = ewma( + np.log(m2['M2SL'].resample('QS').mean()).diff().iloc[1:], 0.95, 10 * 4) +cpi_ewma = ewma( + np.log(cpi['CPIAUCSL'].resample('QS').mean()).diff().iloc[1:], 0.95, + 10 * 4) + +# After constructing the moving averages using the $\beta = 0.95$ filter +# of Lucas (with a window of 10 years on either side), we plot each of the +# series below. Although they appear to move together prior for part of the +# sample, after 1990 they appear to diverge. + +fig, ax = plt.subplots(figsize=(13, 3)) + +ax.plot(m2_ewma, label='M2 Growth (EWMA)') +ax.plot(cpi_ewma, label='CPI Inflation (EWMA)') +ax.legend() + +endog = cpi_ewma +exog = sm.add_constant(m2_ewma) +exog.columns = ['const', 'M2'] + +mod = sm.RecursiveLS(endog, exog) +res = mod.fit() + +print(res.summary()) + +res.plot_recursive_coefficient( + 1, alpha=None) + +# The CUSUM plot now shows subtantial deviation at the 5% level, +# suggesting a rejection of the null hypothesis of parameter stability. + +res.plot_cusum() + +# Similarly, the CUSUM of squares shows subtantial deviation at the 5% +# level, also suggesting a rejection of the null hypothesis of parameter +# stability. + +res.plot_cusum_squares() + +# # Example 3: Linear restrictions and formulas + +# ### Linear restrictions +# +# It is not hard to implement linear restrictions, using the `constraints` +# parameter in constructing the model. + +endog = dta['WORLDCONSUMPTION'] +exog = sm.add_constant( + dta[['COPPERPRICE', 'INCOMEINDEX', 'ALUMPRICE', 'INVENTORYINDEX']]) + +mod = sm.RecursiveLS(endog, exog, constraints='COPPERPRICE = ALUMPRICE') +res = mod.fit() +print(res.summary()) + +# ### Formula +# +# One could fit the same model using the class method `from_formula`. + +mod = sm.RecursiveLS.from_formula( + 'WORLDCONSUMPTION ~ COPPERPRICE + INCOMEINDEX + ALUMPRICE + INVENTORYINDEX', + dta, + constraints='COPPERPRICE = ALUMPRICE') +res = mod.fit() +print(res.summary()) diff --git a/examples/python/regression_diagnostics.py b/examples/python/regression_diagnostics.py new file mode 100644 index 0000000..9526689 --- /dev/null +++ b/examples/python/regression_diagnostics.py @@ -0,0 +1,108 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook regression_diagnostics.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Regression diagnostics + +# This example file shows how to use a few of the ``statsmodels`` +# regression diagnostic tests in a real-life context. You can learn about +# more tests and find out more information abou the tests here on the +# [Regression Diagnostics +# page.](https://www.statsmodels.org/stable/diagnostic.html) +# +# Note that most of the tests described here only return a tuple of +# numbers, without any annotation. A full description of outputs is always +# included in the docstring and in the online ``statsmodels`` documentation. +# For presentation purposes, we use the ``zip(name,test)`` construct to +# pretty-print short descriptions in the examples below. + +# ## Estimate a regression model + +from __future__ import print_function +from statsmodels.compat import lzip + +import numpy as np +import pandas as pd +import statsmodels.formula.api as smf +import statsmodels.stats.api as sms +import matplotlib.pyplot as plt + +# Load data +url = 'https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/HistData/Guerry.csv' +dat = pd.read_csv(url) + +# Fit regression model (using the natural log of one of the regressors) +results = smf.ols('Lottery ~ Literacy + np.log(Pop1831)', data=dat).fit() + +# Inspect the results +print(results.summary()) + +# ## Normality of the residuals + +# Jarque-Bera test: + +name = ['Jarque-Bera', 'Chi^2 two-tail prob.', 'Skew', 'Kurtosis'] +test = sms.jarque_bera(results.resid) +lzip(name, test) + +# Omni test: + +name = ['Chi^2', 'Two-tail probability'] +test = sms.omni_normtest(results.resid) +lzip(name, test) + +# ## Influence tests +# +# Once created, an object of class ``OLSInfluence`` holds attributes and +# methods that allow users to assess the influence of each observation. For +# example, we can compute and extract the first few rows of DFbetas by: + +from statsmodels.stats.outliers_influence import OLSInfluence +test_class = OLSInfluence(results) +test_class.dfbetas[:5, :] + +# Explore other options by typing ``dir(influence_test)`` +# +# Useful information on leverage can also be plotted: + +from statsmodels.graphics.regressionplots import plot_leverage_resid2 +fig, ax = plt.subplots(figsize=(8, 6)) +fig = plot_leverage_resid2(results, ax=ax) + +# Other plotting options can be found on the [Graphics +# page.](https://www.statsmodels.org/stable/graphics.html) + +# ## Multicollinearity +# +# Condition number: + +np.linalg.cond(results.model.exog) + +# ## Heteroskedasticity tests +# +# Breush-Pagan test: + +name = ['Lagrange multiplier statistic', 'p-value', + 'f-value', 'f p-value'] +test = sms.het_breuschpagan(results.resid, results.model.exog) +lzip(name, test) + +# Goldfeld-Quandt test + +name = ['F statistic', 'p-value'] +test = sms.het_goldfeldquandt(results.resid, results.model.exog) +lzip(name, test) + +# ## Linearity +# +# Harvey-Collier multiplier test for Null hypothesis that the linear +# specification is correct: + +name = ['t value', 'p value'] +test = sms.linear_harvey_collier(results) +lzip(name, test) diff --git a/examples/python/regression_plots.py b/examples/python/regression_plots.py new file mode 100644 index 0000000..5f0c15b --- /dev/null +++ b/examples/python/regression_plots.py @@ -0,0 +1,273 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook regression_plots.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Regression Plots + +from __future__ import print_function +from statsmodels.compat import lzip +import numpy as np +import matplotlib.pyplot as plt +import statsmodels.api as sm +from statsmodels.formula.api import ols + +# ## Duncan's Prestige Dataset + +# ### Load the Data + +# We can use a utility function to load any R dataset available from the +# great
    Rdatasets +# package. + +prestige = sm.datasets.get_rdataset("Duncan", "carData", cache=True).data + +prestige.head() + +prestige_model = ols("prestige ~ income + education", data=prestige).fit() + +print(prestige_model.summary()) + +# ### Influence plots + +# Influence plots show the (externally) studentized residuals vs. the +# leverage of each observation as measured by the hat matrix. +# +# Externally studentized residuals are residuals that are scaled by their +# standard deviation where +# +# $$var(\hat{\epsilon}_i)=\hat{\sigma}^2_i(1-h_{ii})$$ +# +# with +# +# $$\hat{\sigma}^2_i=\frac{1}{n - p - 1 \;\;}\sum_{j}^{n}\;\;\;\forall +# \;\;\; j \neq i$$ +# +# $n$ is the number of observations and $p$ is the number of regressors. +# $h_{ii}$ is the $i$-th diagonal element of the hat matrix +# +# $$H=X(X^{\;\prime}X)^{-1}X^{\;\prime}$$ +# +# The influence of each point can be visualized by the criterion keyword +# argument. Options are Cook's distance and DFFITS, two measures of +# influence. + +fig, ax = plt.subplots(figsize=(12, 8)) +fig = sm.graphics.influence_plot(prestige_model, ax=ax, criterion="cooks") + +# As you can see there are a few worrisome observations. Both contractor +# and reporter have low leverage but a large residual.
    +# RR.engineer has small residual and large leverage. Conductor and +# minister have both high leverage and large residuals, and,
    +# therefore, large influence. + +# ### Partial Regression Plots + +# Since we are doing multivariate regressions, we cannot just look at +# individual bivariate plots to discern relationships.
    +# Instead, we want to look at the relationship of the dependent variable +# and independent variables conditional on the other
    +# independent variables. We can do this through using partial regression +# plots, otherwise known as added variable plots.
    +# +# In a partial regression plot, to discern the relationship between the +# response variable and the $k$-th variabe, we compute
    +# the residuals by regressing the response variable versus the independent +# variables excluding $X_k$. We can denote this by
    +# $X_{\sim k}$. We then compute the residuals by regressing $X_k$ on +# $X_{\sim k}$. The partial regression plot is the plot
    +# of the former versus the latter residuals.
    +# +# The notable points of this plot are that the fitted line has slope +# $\beta_k$ and intercept zero. The residuals of this plot
    +# are the same as those of the least squares fit of the original model +# with full $X$. You can discern the effects of the
    +# individual data values on the estimation of a coefficient easily. If +# obs_labels is True, then these points are annotated
    +# with their observation label. You can also see the violation of +# underlying assumptions such as homooskedasticity and
    +# linearity. + +fig, ax = plt.subplots(figsize=(12, 8)) +fig = sm.graphics.plot_partregress( + "prestige", "income", ["income", "education"], data=prestige, ax=ax) + +fix, ax = plt.subplots(figsize=(12, 14)) +fig = sm.graphics.plot_partregress( + "prestige", "income", ["education"], data=prestige, ax=ax) + +# As you can see the partial regression plot confirms the influence of +# conductor, minister, and RR.engineer on the partial relationship between +# income and prestige. The cases greatly decrease the effect of income on +# prestige. Dropping these cases confirms this. + +subset = ~prestige.index.isin(["conductor", "RR.engineer", "minister"]) +prestige_model2 = ols( + "prestige ~ income + education", data=prestige, subset=subset).fit() +print(prestige_model2.summary()) + +# For a quick check of all the regressors, you can use +# plot_partregress_grid. These plots will not label the
    +# points, but you can use them to identify problems and then use +# plot_partregress to get more information. + +fig = plt.figure(figsize=(12, 8)) +fig = sm.graphics.plot_partregress_grid(prestige_model, fig=fig) + +# ### Component-Component plus Residual (CCPR) Plots + +# The CCPR plot provides a way to judge the effect of one regressor on the +#
    +# response variable by taking into account the effects of the other
    +# independent variables. The partial residuals plot is defined as
    +# $\text{Residuals} + B_iX_i \text{ }\text{ }$ versus $X_i$. The +# component adds $B_iX_i$ versus
    +# $X_i$ to show where the fitted line would lie. Care should be taken if +# $X_i$
    +# is highly correlated with any of the other independent variables. If +# this
    +# is the case, the variance evident in the plot will be an underestimate +# of
    +# the true variance. + +fig, ax = plt.subplots(figsize=(12, 8)) +fig = sm.graphics.plot_ccpr(prestige_model, "education", ax=ax) + +# As you can see the relationship between the variation in prestige +# explained by education conditional on income seems to be linear, though +# you can see there are some observations that are exerting considerable +# influence on the relationship. We can quickly look at more than one +# variable by using plot_ccpr_grid. + +fig = plt.figure(figsize=(12, 8)) +fig = sm.graphics.plot_ccpr_grid(prestige_model, fig=fig) + +# ### Regression Plots + +# The plot_regress_exog function is a convenience function that gives a +# 2x2 plot containing the dependent variable and fitted values with +# confidence intervals vs. the independent variable chosen, the residuals of +# the model vs. the chosen independent variable, a partial regression plot, +# and a CCPR plot. This function can be used for quickly checking modeling +# assumptions with respect to a single regressor. + +fig = plt.figure(figsize=(12, 8)) +fig = sm.graphics.plot_regress_exog(prestige_model, "education", fig=fig) + +# ### Fit Plot + +# The plot_fit function plots the fitted values versus a chosen +# independent variable. It includes prediction confidence intervals and +# optionally plots the true dependent variable. + +fig, ax = plt.subplots(figsize=(12, 8)) +fig = sm.graphics.plot_fit(prestige_model, "education", ax=ax) + +# ## Statewide Crime 2009 Dataset + +# Compare the following to http://www.ats.ucla.edu/stat/stata/webbooks/reg +# /chapter4/statareg_self_assessment_answers4.htm +# +# Though the data here is not the same as in that example. You could run +# that example by uncommenting the necessary cells below. + +#dta = +# pd.read_csv("http://www.stat.ufl.edu/~aa/social/csv_files/statewide- +# crime-2.csv") +#dta = dta.set_index("State", inplace=True).dropna() +#dta.rename(columns={"VR" : "crime", +# "MR" : "murder", +# "M" : "pctmetro", +# "W" : "pctwhite", +# "H" : "pcths", +# "P" : "poverty", +# "S" : "single" +# }, inplace=True) +# +#crime_model = ols("murder ~ pctmetro + poverty + pcths + single", +# data=dta).fit() + +dta = sm.datasets.statecrime.load_pandas().data + +crime_model = ols( + "murder ~ urban + poverty + hs_grad + single", data=dta).fit() +print(crime_model.summary()) + +# ### Partial Regression Plots + +fig = plt.figure(figsize=(12, 8)) +fig = sm.graphics.plot_partregress_grid(crime_model, fig=fig) + +fig, ax = plt.subplots(figsize=(12, 8)) +fig = sm.graphics.plot_partregress( + "murder", "hs_grad", ["urban", "poverty", "single"], ax=ax, data=dta) + +# ### Leverage-Resid2 Plot + +# Closely related to the influence_plot is the leverage-resid2 +# plot. + +fig, ax = plt.subplots(figsize=(8, 6)) +fig = sm.graphics.plot_leverage_resid2(crime_model, ax=ax) + +# ### Influence Plot + +fig, ax = plt.subplots(figsize=(8, 6)) +fig = sm.graphics.influence_plot(crime_model, ax=ax) + +# ### Using robust regression to correct for outliers. + +# Part of the problem here in recreating the Stata results is that +# M-estimators are not robust to leverage points. MM-estimators should do +# better with this examples. + +from statsmodels.formula.api import rlm + +rob_crime_model = rlm( + "murder ~ urban + poverty + hs_grad + single", + data=dta, + M=sm.robust.norms.TukeyBiweight(3)).fit(conv="weights") +print(rob_crime_model.summary()) + +#rob_crime_model = rlm("murder ~ pctmetro + poverty + pcths + single", +# data=dta, M=sm.robust.norms.TukeyBiweight()).fit(conv="weights") +#print(rob_crime_model.summary()) + +# There isn't yet an influence diagnostics method as part of RLM, but we +# can recreate them. (This depends on the status of [issue +# #888](https://github.com/statsmodels/statsmodels/issues/808)) + +weights = rob_crime_model.weights +idx = weights > 0 +X = rob_crime_model.model.exog[idx.values] +ww = weights[idx] / weights[idx].mean() +hat_matrix_diag = ww * (X * np.linalg.pinv(X).T).sum(1) +resid = rob_crime_model.resid +resid2 = resid**2 +resid2 /= resid2.sum() +nobs = int(idx.sum()) +hm = hat_matrix_diag.mean() +rm = resid2.mean() + +from statsmodels.graphics import utils +fig, ax = plt.subplots(figsize=(12, 8)) +ax.plot(resid2[idx], hat_matrix_diag, 'o') +ax = utils.annotate_axes( + range(nobs), + labels=rob_crime_model.model.data.row_labels[idx], + points=lzip(resid2[idx], hat_matrix_diag), + offset_points=[(-5, 5)] * nobs, + size="large", + ax=ax) +ax.set_xlabel("resid2") +ax.set_ylabel("leverage") +ylim = ax.get_ylim() +ax.vlines(rm, *ylim) +xlim = ax.get_xlim() +ax.hlines(hm, *xlim) +ax.margins(0, 0) diff --git a/examples/python/robust_models_0.py b/examples/python/robust_models_0.py new file mode 100644 index 0000000..983f012 --- /dev/null +++ b/examples/python/robust_models_0.py @@ -0,0 +1,122 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook robust_models_0.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Robust Linear Models + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm +import matplotlib.pyplot as plt +from statsmodels.sandbox.regression.predstd import wls_prediction_std + +# ## Estimation +# +# Load data: + +data = sm.datasets.stackloss.load() +data.exog = sm.add_constant(data.exog) + +# Huber's T norm with the (default) median absolute deviation scaling + +huber_t = sm.RLM(data.endog, data.exog, M=sm.robust.norms.HuberT()) +hub_results = huber_t.fit() +print(hub_results.params) +print(hub_results.bse) +print( + hub_results.summary( + yname='y', + xname=['var_%d' % i for i in range(len(hub_results.params))])) + +# Huber's T norm with 'H2' covariance matrix + +hub_results2 = huber_t.fit(cov="H2") +print(hub_results2.params) +print(hub_results2.bse) + +# Andrew's Wave norm with Huber's Proposal 2 scaling and 'H3' covariance +# matrix + +andrew_mod = sm.RLM(data.endog, data.exog, M=sm.robust.norms.AndrewWave()) +andrew_results = andrew_mod.fit( + scale_est=sm.robust.scale.HuberScale(), cov="H3") +print('Parameters: ', andrew_results.params) + +# See ``help(sm.RLM.fit)`` for more options and ``module sm.robust.scale`` +# for scale options +# +# ## Comparing OLS and RLM +# +# Artificial data with outliers: + +nsample = 50 +x1 = np.linspace(0, 20, nsample) +X = np.column_stack((x1, (x1 - 5)**2)) +X = sm.add_constant(X) +sig = 0.3 # smaller error variance makes OLS<->RLM contrast bigger +beta = [5, 0.5, -0.0] +y_true2 = np.dot(X, beta) +y2 = y_true2 + sig * 1. * np.random.normal(size=nsample) +y2[[39, 41, 43, 45, 48]] -= 5 # add some outliers (10% of nsample) + +# ### Example 1: quadratic function with linear truth +# +# Note that the quadratic term in OLS regression will capture outlier +# effects. + +res = sm.OLS(y2, X).fit() +print(res.params) +print(res.bse) +print(res.predict()) + +# Estimate RLM: + +resrlm = sm.RLM(y2, X).fit() +print(resrlm.params) +print(resrlm.bse) + +# Draw a plot to compare OLS estimates to the robust estimates: + +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot(111) +ax.plot(x1, y2, 'o', label="data") +ax.plot(x1, y_true2, 'b-', label="True") +prstd, iv_l, iv_u = wls_prediction_std(res) +ax.plot(x1, res.fittedvalues, 'r-', label="OLS") +ax.plot(x1, iv_u, 'r--') +ax.plot(x1, iv_l, 'r--') +ax.plot(x1, resrlm.fittedvalues, 'g.-', label="RLM") +ax.legend(loc="best") + +# ### Example 2: linear function with linear truth +# +# Fit a new OLS model using only the linear term and the constant: + +X2 = X[:, [0, 1]] +res2 = sm.OLS(y2, X2).fit() +print(res2.params) +print(res2.bse) + +# Estimate RLM: + +resrlm2 = sm.RLM(y2, X2).fit() +print(resrlm2.params) +print(resrlm2.bse) + +# Draw a plot to compare OLS estimates to the robust estimates: + +prstd, iv_l, iv_u = wls_prediction_std(res2) + +fig, ax = plt.subplots(figsize=(8, 6)) +ax.plot(x1, y2, 'o', label="data") +ax.plot(x1, y_true2, 'b-', label="True") +ax.plot(x1, res2.fittedvalues, 'r-', label="OLS") +ax.plot(x1, iv_u, 'r--') +ax.plot(x1, iv_l, 'r--') +ax.plot(x1, resrlm2.fittedvalues, 'g.-', label="RLM") +legend = ax.legend(loc="best") diff --git a/examples/python/robust_models_1.py b/examples/python/robust_models_1.py new file mode 100644 index 0000000..40be4f4 --- /dev/null +++ b/examples/python/robust_models_1.py @@ -0,0 +1,337 @@ +# DO NOT EDIT +# Autogenerated from the notebook robust_models_1.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +#!/usr/bin/env python +# coding: utf-8 + +# # M-Estimators for Robust Linear Modeling + +from __future__ import print_function +from statsmodels.compat import lmap +import numpy as np +from scipy import stats +import matplotlib.pyplot as plt + +import statsmodels.api as sm + +# * An M-estimator minimizes the function +# +# $$Q(e_i, \rho) = \sum_i~\rho \left (\frac{e_i}{s}\right )$$ +# +# where $\rho$ is a symmetric function of the residuals +# +# * The effect of $\rho$ is to reduce the influence of outliers +# * $s$ is an estimate of scale. +# * The robust estimates $\hat{\beta}$ are computed by the iteratively re- +# weighted least squares algorithm + +# * We have several choices available for the weighting functions to be +# used + +norms = sm.robust.norms + + +def plot_weights(support, weights_func, xlabels, xticks): + fig = plt.figure(figsize=(12, 8)) + ax = fig.add_subplot(111) + ax.plot(support, weights_func(support)) + ax.set_xticks(xticks) + ax.set_xticklabels(xlabels, fontsize=16) + ax.set_ylim(-.1, 1.1) + return ax + + +# ### Andrew's Wave + +help(norms.AndrewWave.weights) + +a = 1.339 +support = np.linspace(-np.pi * a, np.pi * a, 100) +andrew = norms.AndrewWave(a=a) +plot_weights(support, andrew.weights, ['$-\pi*a$', '0', '$\pi*a$'], + [-np.pi * a, 0, np.pi * a]) + +# ### Hampel's 17A + +help(norms.Hampel.weights) + +c = 8 +support = np.linspace(-3 * c, 3 * c, 1000) +hampel = norms.Hampel(a=2., b=4., c=c) +plot_weights(support, hampel.weights, ['3*c', '0', '3*c'], [-3 * c, 0, 3 * c]) + +# ### Huber's t + +help(norms.HuberT.weights) + +t = 1.345 +support = np.linspace(-3 * t, 3 * t, 1000) +huber = norms.HuberT(t=t) +plot_weights(support, huber.weights, ['-3*t', '0', '3*t'], [-3 * t, 0, 3 * t]) + +# ### Least Squares + +help(norms.LeastSquares.weights) + +support = np.linspace(-3, 3, 1000) +lst_sq = norms.LeastSquares() +plot_weights(support, lst_sq.weights, ['-3', '0', '3'], [-3, 0, 3]) + +# ### Ramsay's Ea + +help(norms.RamsayE.weights) + +a = .3 +support = np.linspace(-3 * a, 3 * a, 1000) +ramsay = norms.RamsayE(a=a) +plot_weights(support, ramsay.weights, ['-3*a', '0', '3*a'], [-3 * a, 0, 3 * a]) + +# ### Trimmed Mean + +help(norms.TrimmedMean.weights) + +c = 2 +support = np.linspace(-3 * c, 3 * c, 1000) +trimmed = norms.TrimmedMean(c=c) +plot_weights(support, trimmed.weights, ['-3*c', '0', '3*c'], + [-3 * c, 0, 3 * c]) + +# ### Tukey's Biweight + +help(norms.TukeyBiweight.weights) + +c = 4.685 +support = np.linspace(-3 * c, 3 * c, 1000) +tukey = norms.TukeyBiweight(c=c) +plot_weights(support, tukey.weights, ['-3*c', '0', '3*c'], [-3 * c, 0, 3 * c]) + +# ### Scale Estimators + +# * Robust estimates of the location + +x = np.array([1, 2, 3, 4, 500]) + +# * The mean is not a robust estimator of location + +x.mean() + +# * The median, on the other hand, is a robust estimator with a breakdown +# point of 50% + +np.median(x) + +# * Analagously for the scale +# * The standard deviation is not robust + +x.std() + +# Median Absolute Deviation +# +# $$ median_i |X_i - median_j(X_j)|) $$ + +# Standardized Median Absolute Deviation is a consistent estimator for +# $\hat{\sigma}$ +# +# $$\hat{\sigma}=K \cdot MAD$$ +# +# where $K$ depends on the distribution. For the normal distribution for +# example, +# +# $$K = \Phi^{-1}(.75)$$ + +stats.norm.ppf(.75) + +print(x) + +sm.robust.scale.mad(x) + +np.array([1, 2, 3, 4, 5.]).std() + +# * The default for Robust Linear Models is MAD +# * another popular choice is Huber's proposal 2 + +np.random.seed(12345) +fat_tails = stats.t(6).rvs(40) + +kde = sm.nonparametric.KDEUnivariate(fat_tails) +kde.fit() +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot(111) +ax.plot(kde.support, kde.density) + +print(fat_tails.mean(), fat_tails.std()) + +print(stats.norm.fit(fat_tails)) + +print(stats.t.fit(fat_tails, f0=6)) + +huber = sm.robust.scale.Huber() +loc, scale = huber(fat_tails) +print(loc, scale) + +sm.robust.mad(fat_tails) + +sm.robust.mad(fat_tails, c=stats.t(6).ppf(.75)) + +sm.robust.scale.mad(fat_tails) + +# ### Duncan's Occupational Prestige data - M-estimation for outliers + +from statsmodels.graphics.api import abline_plot +from statsmodels.formula.api import ols, rlm + +prestige = sm.datasets.get_rdataset("Duncan", "carData", cache=True).data + +print(prestige.head(10)) + +fig = plt.figure(figsize=(12, 12)) +ax1 = fig.add_subplot(211, xlabel='Income', ylabel='Prestige') +ax1.scatter(prestige.income, prestige.prestige) +xy_outlier = prestige.loc['minister', ['income', 'prestige']] +ax1.annotate('Minister', xy_outlier, xy_outlier + 1, fontsize=16) +ax2 = fig.add_subplot(212, xlabel='Education', ylabel='Prestige') +ax2.scatter(prestige.education, prestige.prestige) + +ols_model = ols('prestige ~ income + education', prestige).fit() +print(ols_model.summary()) + +infl = ols_model.get_influence() +student = infl.summary_frame()['student_resid'] +print(student) + +print(student.loc[np.abs(student) > 2]) + +print(infl.summary_frame().loc['minister']) + +sidak = ols_model.outlier_test('sidak') +sidak.sort_values('unadj_p', inplace=True) +print(sidak) + +fdr = ols_model.outlier_test('fdr_bh') +fdr.sort_values('unadj_p', inplace=True) +print(fdr) + +rlm_model = rlm('prestige ~ income + education', prestige).fit() +print(rlm_model.summary()) + +print(rlm_model.weights) + +# ### Hertzprung Russell data for Star Cluster CYG 0B1 - Leverage Points + +# * Data is on the luminosity and temperature of 47 stars in the direction +# of Cygnus. + +dta = sm.datasets.get_rdataset("starsCYG", "robustbase", cache=True).data + +from matplotlib.patches import Ellipse +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot( + 111, + xlabel='log(Temp)', + ylabel='log(Light)', + title='Hertzsprung-Russell Diagram of Star Cluster CYG OB1') +ax.scatter(*dta.values.T) +# highlight outliers +e = Ellipse((3.5, 6), .2, 1, alpha=.25, color='r') +ax.add_patch(e) +ax.annotate( + 'Red giants', + xy=(3.6, 6), + xytext=(3.8, 6), + arrowprops=dict(facecolor='black', shrink=0.05, width=2), + horizontalalignment='left', + verticalalignment='bottom', + clip_on=True, # clip to the axes bounding box + fontsize=16, +) +# annotate these with their index +for i, row in dta.loc[dta['log.Te'] < 3.8].iterrows(): + ax.annotate(i, row, row + .01, fontsize=14) +xlim, ylim = ax.get_xlim(), ax.get_ylim() + +from IPython.display import Image +Image(filename='star_diagram.png') + +y = dta['log.light'] +X = sm.add_constant(dta['log.Te'], prepend=True) +ols_model = sm.OLS(y, X).fit() +abline_plot(model_results=ols_model, ax=ax) + +rlm_mod = sm.RLM(y, X, sm.robust.norms.TrimmedMean(.5)).fit() +abline_plot(model_results=rlm_mod, ax=ax, color='red') + +# * Why? Because M-estimators are not robust to leverage points. + +infl = ols_model.get_influence() + +h_bar = 2 * (ols_model.df_model + 1) / ols_model.nobs +hat_diag = infl.summary_frame()['hat_diag'] +hat_diag.loc[hat_diag > h_bar] + +sidak2 = ols_model.outlier_test('sidak') +sidak2.sort_values('unadj_p', inplace=True) +print(sidak2) + +fdr2 = ols_model.outlier_test('fdr_bh') +fdr2.sort_values('unadj_p', inplace=True) +print(fdr2) + +# * Let's delete that line + +l = ax.lines[-1] +l.remove() +del l + +weights = np.ones(len(X)) +weights[X[X['log.Te'] < 3.8].index.values - 1] = 0 +wls_model = sm.WLS(y, X, weights=weights).fit() +abline_plot(model_results=wls_model, ax=ax, color='green') + +# * MM estimators are good for this type of problem, unfortunately, we +# don't yet have these yet. +# * It's being worked on, but it gives a good excuse to look at the R cell +# magics in the notebook. + +yy = y.values[:, None] +xx = X['log.Te'].values[:, None] + +print(params) + +abline_plot(intercept=params[0], slope=params[1], ax=ax, color='red') + +# ### Exercise: Breakdown points of M-estimator + +np.random.seed(12345) +nobs = 200 +beta_true = np.array([3, 1, 2.5, 3, -4]) +X = np.random.uniform(-20, 20, size=(nobs, len(beta_true) - 1)) +# stack a constant in front +X = sm.add_constant(X, prepend=True) # np.c_[np.ones(nobs), X] +mc_iter = 500 +contaminate = .25 # percentage of response variables to contaminate + +all_betas = [] +for i in range(mc_iter): + y = np.dot(X, beta_true) + np.random.normal(size=200) + random_idx = np.random.randint(0, nobs, size=int(contaminate * nobs)) + y[random_idx] = np.random.uniform(-750, 750) + beta_hat = sm.RLM(y, X).fit().params + all_betas.append(beta_hat) + +all_betas = np.asarray(all_betas) +se_loss = lambda x: np.linalg.norm(x, ord=2)**2 +se_beta = lmap(se_loss, all_betas - beta_true) + +# #### Squared error loss + +np.array(se_beta).mean() + +all_betas.mean(0) + +beta_true + +se_loss(all_betas.mean(0) - beta_true) diff --git a/examples/python/statespace_arma_0.py b/examples/python/statespace_arma_0.py new file mode 100644 index 0000000..ff2affd --- /dev/null +++ b/examples/python/statespace_arma_0.py @@ -0,0 +1,99 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook statespace_arma_0.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Autoregressive Moving Average (ARMA): Sunspots data + +# This notebook replicates the existing ARMA notebook using the +# `statsmodels.tsa.statespace.SARIMAX` class rather than the +# `statsmodels.tsa.ARMA` class. + +from __future__ import print_function +import numpy as np +from scipy import stats +import pandas as pd +import matplotlib.pyplot as plt + +import statsmodels.api as sm + +from statsmodels.graphics.api import qqplot + +# ## Sunpots Data + +print(sm.datasets.sunspots.NOTE) + +dta = sm.datasets.sunspots.load_pandas().data + +dta.index = pd.Index(sm.tsa.datetools.dates_from_range('1700', '2008')) +del dta["YEAR"] + +dta.plot(figsize=(12, 4)) + +fig = plt.figure(figsize=(12, 8)) +ax1 = fig.add_subplot(211) +fig = sm.graphics.tsa.plot_acf(dta.values.squeeze(), lags=40, ax=ax1) +ax2 = fig.add_subplot(212) +fig = sm.graphics.tsa.plot_pacf(dta, lags=40, ax=ax2) + +arma_mod20 = sm.tsa.statespace.SARIMAX( + dta, order=(2, 0, 0), trend='c').fit(disp=False) +print(arma_mod20.params) + +arma_mod30 = sm.tsa.statespace.SARIMAX( + dta, order=(3, 0, 0), trend='c').fit(disp=False) + +print(arma_mod20.aic, arma_mod20.bic, arma_mod20.hqic) + +print(arma_mod30.params) + +print(arma_mod30.aic, arma_mod30.bic, arma_mod30.hqic) + +# * Does our model obey the theory? + +sm.stats.durbin_watson(arma_mod30.resid) + +fig = plt.figure(figsize=(12, 4)) +ax = fig.add_subplot(111) +ax = plt.plot(arma_mod30.resid) + +resid = arma_mod30.resid + +stats.normaltest(resid) + +fig = plt.figure(figsize=(12, 4)) +ax = fig.add_subplot(111) +fig = qqplot(resid, line='q', ax=ax, fit=True) + +fig = plt.figure(figsize=(12, 8)) +ax1 = fig.add_subplot(211) +fig = sm.graphics.tsa.plot_acf(resid, lags=40, ax=ax1) +ax2 = fig.add_subplot(212) +fig = sm.graphics.tsa.plot_pacf(resid, lags=40, ax=ax2) + +r, q, p = sm.tsa.acf(resid, qstat=True) +data = np.c_[range(1, 41), r[1:], q, p] +table = pd.DataFrame(data, columns=['lag', "AC", "Q", "Prob(>Q)"]) +print(table.set_index('lag')) + +# * This indicates a lack of fit. + +# * In-sample dynamic prediction. How good does our model do? + +predict_sunspots = arma_mod30.predict(start='1990', end='2012', dynamic=True) + +fig, ax = plt.subplots(figsize=(12, 8)) +dta.loc['1950':].plot(ax=ax) +predict_sunspots.plot( + ax=ax, style='r') + + +def mean_forecast_err(y, yhat): + return y.sub(yhat).mean() + + +mean_forecast_err(dta.SUNACTIVITY, predict_sunspots) diff --git a/examples/python/statespace_concentrated_scale.py b/examples/python/statespace_concentrated_scale.py new file mode 100644 index 0000000..57ef63d --- /dev/null +++ b/examples/python/statespace_concentrated_scale.py @@ -0,0 +1,244 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook statespace_concentrated_scale.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# ## State space models - concentrating the scale out of the likelihood +# function + +import numpy as np +import pandas as pd +import statsmodels.api as sm + +dta = sm.datasets.macrodata.load_pandas().data +dta.index = pd.PeriodIndex(start='1959Q1', end='2009Q3', freq='Q') + +# ### Introduction +# +# (much of this is based on Harvey (1989); see especially section 3.4) +# +# State space models can generically be written as follows (here we focus +# on time-invariant state space models, but similar results apply also to +# time-varying models): +# +# $$ +# \begin{align} +# y_t & = Z \alpha_t + \varepsilon_t, \quad \varepsilon_t \sim N(0, H) \\ +# \alpha_{t+1} & = T \alpha_t + R \eta_t \quad \eta_t \sim N(0, Q) +# \end{align} +# $$ +# +# Often, some or all of the values in the matrices $Z, H, T, R, Q$ are +# unknown and must be estimated; in Statsmodels, estimation is often done by +# finding the parameters that maximize the likelihood function. In +# particular, if we collect the parameters in a vector $\psi$, then each of +# these matrices can be thought of as functions of those parameters, for +# example $Z = Z(\psi)$, etc. +# +# Usually, the likelihood function is maximized numerically, for example +# by applying quasi-Newton "hill-climbing" algorithms, and this becomes more +# and more difficult the more parameters there are. It turns out that in +# many cases we can reparameterize the model as $[\psi_*', \sigma_*^2]'$, +# where $\sigma_*^2$ is the "scale" of the model (usually, it replaces one +# of the error variance terms) and it is possible to find the maximum +# likelihood estimate of $\sigma_*^2$ analytically, by differentiating the +# likelihood function. This implies that numerical methods are only required +# to estimate the parameters $\psi_*$, which has dimension one less than +# that of $\psi$. + +# ### Example: local level model +# +# (see, for example, section 4.2 of Harvey (1989)) +# +# As a specific example, consider the local level model, which can be +# written as: +# +# $$ +# \begin{align} +# y_t & = \alpha_t + \varepsilon_t, \quad \varepsilon_t \sim N(0, +# \sigma_\varepsilon^2) \\ +# \alpha_{t+1} & = \alpha_t + \eta_t \quad \eta_t \sim N(0, \sigma_\eta^2) +# \end{align} +# $$ +# +# In this model, $Z, T,$ and $R$ are all fixed to be equal to $1$, and +# there are two unknown parameters, so that $\psi = [\sigma_\varepsilon^2, +# \sigma_\eta^2]$. + +# #### Typical approach +# +# First, we show how to define this model without concentrating out the +# scale, using Statsmodels' state space library: + + +class LocalLevel(sm.tsa.statespace.MLEModel): + _start_params = [1., 1.] + _param_names = ['var.level', 'var.irregular'] + + def __init__(self, endog): + super(LocalLevel, self).__init__( + endog, k_states=1, initialization='diffuse') + + self['design', 0, 0] = 1 + self['transition', 0, 0] = 1 + self['selection', 0, 0] = 1 + + def transform_params(self, unconstrained): + return unconstrained**2 + + def untransform_params(self, unconstrained): + return unconstrained**0.5 + + def update(self, params, **kwargs): + params = super(LocalLevel, self).update(params, **kwargs) + + self['state_cov', 0, 0] = params[0] + self['obs_cov', 0, 0] = params[1] + + +# There are two parameters in this model that must be chosen: `var.level` +# $(\sigma_\eta^2)$ and `var.irregular` $(\sigma_\varepsilon^2)$. We can use +# the built-in `fit` method to choose them by numerically maximizing the +# likelihood function. +# +# In our example, we are applying the local level model to consumer price +# index inflation. + +mod = LocalLevel(dta.infl) +res = mod.fit(disp=False) +print(res.summary()) + +# We can look at the results from the numerical optimizer in the results +# attribute `mle_retvals`: + +print(res.mle_retvals) + +# #### Concentrating out the scale + +# Now, there are two ways to reparameterize this model as above: +# +# 1. The first way is to set $\sigma_*^2 \equiv \sigma_\varepsilon^2$ so +# that $\psi_* = \psi / \sigma_\varepsilon^2 = [1, q_\eta]$ where $q_\eta = +# \sigma_\eta^2 / \sigma_\varepsilon^2$. +# 2. The second way is to set $\sigma_*^2 \equiv \sigma_\eta^2$ so that +# $\psi_* = \psi / \sigma_\eta^2 = [h, 1]$ where $h = \sigma_\varepsilon^2 / +# \sigma_\eta^2$. +# +# In the first case, we only need to numerically maximize the likelihood +# with respect to $q_\eta$, and in the second case we only need to +# numerically maximize the likelihood with respect to $h$. +# +# Either approach would work well in most cases, and in the example below +# we will use the second method. + +# To reformulate the model to take advantage of the concentrated +# likelihood function, we need to write the model in terms of the parameter +# vector $\psi_* = [g, 1]$. Because this parameter vector defines +# $\sigma_\eta^2 \equiv 1$, we now include a new line `self['state_cov', 0, +# 0] = 1` and the only unknown parameter is $h$. Because our parameter $h$ +# is no longer a variance, we renamed it here to be `ratio.irregular`. +# +# The key piece that is required to formulate the model so that the scale +# can be computed from the Kalman filter recursions (rather than selected +# numerically) is setting the flag `self.ssm.filter_concentrated = True`. + + +class LocalLevelConcentrated(sm.tsa.statespace.MLEModel): + _start_params = [1.] + _param_names = ['ratio.irregular'] + + def __init__(self, endog): + super(LocalLevelConcentrated, self).__init__( + endog, k_states=1, initialization='diffuse') + + self['design', 0, 0] = 1 + self['transition', 0, 0] = 1 + self['selection', 0, 0] = 1 + self['state_cov', 0, 0] = 1 + + self.ssm.filter_concentrated = True + + def transform_params(self, unconstrained): + return unconstrained**2 + + def untransform_params(self, unconstrained): + return unconstrained**0.5 + + def update(self, params, **kwargs): + params = super(LocalLevelConcentrated, self).update(params, **kwargs) + self['obs_cov', 0, 0] = params[0] + + +# Again, we can use the built-in `fit` method to find the maximum +# likelihood estimate of $h$. + +mod_conc = LocalLevelConcentrated(dta.infl) +res_conc = mod_conc.fit(disp=False) +print(res_conc.summary()) + +# The estimate of $h$ is provided in the middle table of parameters +# (`ratio.irregular`), while the estimate of the scale is provided in the +# upper table. Below, we will show that these estimates are consistent with +# those from the previous approach. + +# And we can again look at the results from the numerical optimizer in the +# results attribute `mle_retvals`. It turns out that two fewer iterations +# were required in this case, since there was one fewer parameter to select. +# Moreover, since the numerical maximization problem was easier, the +# optimizer was able to find a value that made the gradiant for this +# parameter slightly closer to zero than it was above. + +print(res_conc.mle_retvals) + +# #### Comparing estimates +# +# Recall that $h = \sigma_\varepsilon^2 / \sigma_\eta^2$ and the scale is +# $\sigma_*^2 = \sigma_\eta^2$. Using these definitions, we can see that +# both models produce nearly identical results: + +print('Original model') +print('var.level = %.5f' % res.params[0]) +print('var.irregular = %.5f' % res.params[1]) + +print('\nConcentrated model') +print('scale = %.5f' % res_conc.scale) +print('h * scale = %.5f' % (res_conc.params[0] * res_conc.scale)) + +# ### Example: SARIMAX +# +# By default in SARIMAX models, the variance term is chosen by numerically +# maximizing the likelihood function, but an option has been added to allow +# concentrating the scale out. + +# Typical approach +mod_ar = sm.tsa.SARIMAX(dta.cpi, order=(1, 0, 0), trend='ct') +res_ar = mod_ar.fit(disp=False) + +# Estimating the model with the scale concentrated out +mod_ar_conc = sm.tsa.SARIMAX( + dta.cpi, order=(1, 0, 0), trend='ct', concentrate_scale=True) +res_ar_conc = mod_ar_conc.fit(disp=False) + +# These two approaches produce about the same loglikelihood and +# parameters, although the model with the concentrated scale was able to +# improve the fit very slightly: + +print('Loglikelihood') +print('- Original model: %.4f' % res_ar.llf) +print('- Concentrated model: %.4f' % res_ar_conc.llf) + +print('\nParameters') +print('- Original model: %.4f, %.4f, %.4f, %.4f' % tuple(res_ar.params)) +print('- Concentrated model: %.4f, %.4f, %.4f, %.4f' % + (tuple(res_ar_conc.params) + (res_ar_conc.scale, ))) + +# This time, about 1/3 fewer iterations of the optimizer are required +# under the concentrated approach: + +print('Optimizer iterations') +print('- Original model: %d' % res_ar.mle_retvals['iterations']) +print('- Concentrated model: %d' % res_ar_conc.mle_retvals['iterations']) diff --git a/examples/python/statespace_cycles.py b/examples/python/statespace_cycles.py new file mode 100644 index 0000000..5de3fde --- /dev/null +++ b/examples/python/statespace_cycles.py @@ -0,0 +1,131 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook statespace_cycles.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Trends and cycles in unemployment +# +# Here we consider three methods for separating a trend and cycle in +# economic data. Supposing we have a time series $y_t$, the basic idea is to +# decompose it into these two components: +# +# $$ +# y_t = \mu_t + \eta_t +# $$ +# +# where $\mu_t$ represents the trend or level and $\eta_t$ represents the +# cyclical component. In this case, we consider a *stochastic* trend, so +# that $\mu_t$ is a random variable and not a deterministic function of +# time. Two of methods fall under the heading of "unobserved components" +# models, and the third is the popular Hodrick-Prescott (HP) filter. +# Consistent with e.g. Harvey and Jaeger (1993), we find that these models +# all produce similar decompositions. +# +# This notebook demonstrates applying these models to separate trend from +# cycle in the U.S. unemployment rate. + +import numpy as np +import pandas as pd +import statsmodels.api as sm +import matplotlib.pyplot as plt + +from pandas_datareader.data import DataReader +endog = DataReader('UNRATE', 'fred', start='1954-01-01') + +# ### Hodrick-Prescott (HP) filter +# +# The first method is the Hodrick-Prescott filter, which can be applied to +# a data series in a very straightforward method. Here we specify the +# parameter $\lambda=129600$ because the unemployment rate is observed +# monthly. + +hp_cycle, hp_trend = sm.tsa.filters.hpfilter(endog, lamb=129600) + +# ### Unobserved components and ARIMA model (UC-ARIMA) +# +# The next method is an unobserved components model, where the trend is +# modeled as a random walk and the cycle is modeled with an ARIMA model - in +# particular, here we use an AR(4) model. The process for the time series +# can be written as: +# +# $$ +# \begin{align} +# y_t & = \mu_t + \eta_t \\ +# \mu_{t+1} & = \mu_t + \epsilon_{t+1} \\ +# \phi(L) \eta_t & = \nu_t +# \end{align} +# $$ +# +# where $\phi(L)$ is the AR(4) lag polynomial and $\epsilon_t$ and $\nu_t$ +# are white noise. + +mod_ucarima = sm.tsa.UnobservedComponents(endog, 'rwalk', autoregressive=4) +# Here the powell method is used, since it achieves a +# higher loglikelihood than the default L-BFGS method +res_ucarima = mod_ucarima.fit(method='powell', disp=False) +print(res_ucarima.summary()) + +# ### Unobserved components with stochastic cycle (UC) +# +# The final method is also an unobserved components model, but where the +# cycle is modeled explicitly. +# +# $$ +# \begin{align} +# y_t & = \mu_t + \eta_t \\ +# \mu_{t+1} & = \mu_t + \epsilon_{t+1} \\ +# \eta_{t+1} & = \eta_t \cos \lambda_\eta + \eta_t^* \sin \lambda_\eta + +# \tilde \omega_t \qquad & \tilde \omega_t \sim N(0, \sigma_{\tilde +# \omega}^2) \\ +# \eta_{t+1}^* & = -\eta_t \sin \lambda_\eta + \eta_t^* \cos \lambda_\eta +# + \tilde \omega_t^* & \tilde \omega_t^* \sim N(0, \sigma_{\tilde +# \omega}^2) +# \end{align} +# $$ + +mod_uc = sm.tsa.UnobservedComponents( + endog, + 'rwalk', + cycle=True, + stochastic_cycle=True, + damped_cycle=True, +) +# Here the powell method gets close to the optimum +res_uc = mod_uc.fit(method='powell', disp=False) +# but to get to the highest loglikelihood we do a +# second round using the L-BFGS method. +res_uc = mod_uc.fit(res_uc.params, disp=False) +print(res_uc.summary()) + +# ### Graphical comparison +# +# The output of each of these models is an estimate of the trend component +# $\mu_t$ and an estimate of the cyclical component $\eta_t$. Qualitatively +# the estimates of trend and cycle are very similar, although the trend +# component from the HP filter is somewhat more variable than those from the +# unobserved components models. This means that relatively mode of the +# movement in the unemployment rate is attributed to changes in the +# underlying trend rather than to temporary cyclical movements. + +fig, axes = plt.subplots( + 2, figsize=(13, 5)) +axes[0].set(title='Level/trend component') +axes[0].plot(endog.index, res_uc.level.smoothed, label='UC') +axes[0].plot(endog.index, res_ucarima.level.smoothed, label='UC-ARIMA(2,0)') +axes[0].plot(hp_trend, label='HP Filter') +axes[0].legend(loc='upper left') +axes[0].grid() + +axes[1].set(title='Cycle component') +axes[1].plot(endog.index, res_uc.cycle.smoothed, label='UC') +axes[1].plot( + endog.index, res_ucarima.autoregressive.smoothed, label='UC-ARIMA(2,0)') +axes[1].plot(hp_cycle, label='HP Filter') +axes[1].legend(loc='upper left') +axes[1].grid() + +fig.tight_layout() diff --git a/examples/python/statespace_dfm_coincident.py b/examples/python/statespace_dfm_coincident.py new file mode 100644 index 0000000..731e33e --- /dev/null +++ b/examples/python/statespace_dfm_coincident.py @@ -0,0 +1,817 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook statespace_dfm_coincident.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Dynamic factors and coincident indices +# +# Factor models generally try to find a small number of unobserved +# "factors" that influence a subtantial portion of the variation in a larger +# number of observed variables, and they are related to dimension-reduction +# techniques such as principal components analysis. Dynamic factor models +# explicitly model the transition dynamics of the unobserved factors, and so +# are often applied to time-series data. +# +# Macroeconomic coincident indices are designed to capture the common +# component of the "business cycle"; such a component is assumed to +# simultaneously affect many macroeconomic variables. Although the +# estimation and use of coincident indices (for example the [Index of +# Coincident Economic Indicators](http://www.newyorkfed.org/research/regiona +# l_economy/coincident_summary.html)) pre-dates dynamic factor models, in +# several influential papers Stock and Watson (1989, 1991) used a dynamic +# factor model to provide a theoretical foundation for them. +# +# Below, we follow the treatment found in Kim and Nelson (1999), of the +# Stock and Watson (1991) model, to formulate a dynamic factor model, +# estimate its parameters via maximum likelihood, and create a coincident +# index. + +# ## Macroeconomic data +# +# The coincident index is created by considering the comovements in four +# macroeconomic variables (versions of thse variables are available on +# [FRED](https://research.stlouisfed.org/fred2/); the ID of the series used +# below is given in parentheses): +# +# - Industrial production (IPMAN) +# - Real aggregate income (excluding transfer payments) (W875RX1) +# - Manufacturing and trade sales (CMRMTSPL) +# - Employees on non-farm payrolls (PAYEMS) +# +# In all cases, the data is at the monthly frequency and has been +# seasonally adjusted; the time-frame considered is 1972 - 2005. + +import numpy as np +import pandas as pd +import statsmodels.api as sm +import matplotlib.pyplot as plt + +np.set_printoptions(precision=4, suppress=True, linewidth=120) + +from pandas_datareader.data import DataReader + +# Get the datasets from FRED +start = '1979-01-01' +end = '2014-12-01' +indprod = DataReader('IPMAN', 'fred', start=start, end=end) +income = DataReader('W875RX1', 'fred', start=start, end=end) +sales = DataReader('CMRMTSPL', 'fred', start=start, end=end) +emp = DataReader('PAYEMS', 'fred', start=start, end=end) +# dta = pd.concat((indprod, income, sales, emp), axis=1) +# dta.columns = ['indprod', 'income', 'sales', 'emp'] + +# **Note**: in a recent update on FRED (8/12/15) the time series CMRMTSPL +# was truncated to begin in 1997; this is probably a mistake due to the fact +# that CMRMTSPL is a spliced series, so the earlier period is from the +# series HMRMT and the latter period is defined by CMRMT. +# +# This has since (02/11/16) been corrected, however the series could also +# be constructed by hand from HMRMT and CMRMT, as shown below (process taken +# from the notes in the Alfred xls file). + +# HMRMT = DataReader('HMRMT', 'fred', start='1967-01-01', end=end) +# CMRMT = DataReader('CMRMT', 'fred', start='1997-01-01', end=end) + +# HMRMT_growth = HMRMT.diff() / HMRMT.shift() +# sales = pd.Series(np.zeros(emp.shape[0]), index=emp.index) + +# # Fill in the recent entries (1997 onwards) +# sales[CMRMT.index] = CMRMT + +# # Backfill the previous entries (pre 1997) +# idx = sales.loc[:'1997-01-01'].index +# for t in range(len(idx)-1, 0, -1): +# month = idx[t] +# prev_month = idx[t-1] +# sales.loc[prev_month] = sales.loc[month] / (1 + +# HMRMT_growth.loc[prev_month].values) + +dta = pd.concat((indprod, income, sales, emp), axis=1) +dta.columns = ['indprod', 'income', 'sales', 'emp'] + +dta.loc[:, 'indprod':'emp'].plot( + subplots=True, layout=(2, 2), figsize=(15, 6)) + +# Stock and Watson (1991) report that for their datasets, they could not +# reject the null hypothesis of a unit root in each series (so the series +# are integrated), but they did not find strong evidence that the series +# were co-integrated. +# +# As a result, they suggest estimating the model using the first +# differences (of the logs) of the variables, demeaned and standardized. + +# Create log-differenced series +dta['dln_indprod'] = (np.log(dta.indprod)).diff() * 100 +dta['dln_income'] = (np.log(dta.income)).diff() * 100 +dta['dln_sales'] = (np.log(dta.sales)).diff() * 100 +dta['dln_emp'] = (np.log(dta.emp)).diff() * 100 + +# De-mean and standardize +dta['std_indprod'] = ( + dta['dln_indprod'] - dta['dln_indprod'].mean()) / dta['dln_indprod'].std() +dta['std_income'] = ( + dta['dln_income'] - dta['dln_income'].mean()) / dta['dln_income'].std() +dta['std_sales'] = ( + dta['dln_sales'] - dta['dln_sales'].mean()) / dta['dln_sales'].std() +dta['std_emp'] = ( + dta['dln_emp'] - dta['dln_emp'].mean()) / dta['dln_emp'].std() + +# ## Dynamic factors +# +# A general dynamic factor model is written as: +# +# $$ +# \begin{align} +# y_t & = \Lambda f_t + B x_t + u_t \\ +# f_t & = A_1 f_{t-1} + \dots + A_p f_{t-p} + \eta_t \qquad \eta_t \sim +# N(0, I)\\ +# u_t & = C_1 u_{t-1} + \dots + C_q u_{t-q} + \varepsilon_t \qquad +# \varepsilon_t \sim N(0, \Sigma) +# \end{align} +# $$ +# +# where $y_t$ are observed data, $f_t$ are the unobserved factors +# (evolving as a vector autoregression), $x_t$ are (optional) exogenous +# variables, and $u_t$ is the error, or "idiosyncratic", process ($u_t$ is +# also optionally allowed to be autocorrelated). The $\Lambda$ matrix is +# often referred to as the matrix of "factor loadings". The variance of the +# factor error term is set to the identity matrix to ensure identification +# of the unobserved factors. +# +# This model can be cast into state space form, and the unobserved factor +# estimated via the Kalman filter. The likelihood can be evaluated as a +# byproduct of the filtering recursions, and maximum likelihood estimation +# used to estimate the parameters. + +# ## Model specification +# +# The specific dynamic factor model in this application has 1 unobserved +# factor which is assumed to follow an AR(2) proces. The innovations +# $\varepsilon_t$ are assumed to be independent (so that $\Sigma$ is a +# diagonal matrix) and the error term associated with each equation, +# $u_{i,t}$ is assumed to follow an independent AR(2) process. +# +# Thus the specification considered here is: +# +# $$ +# \begin{align} +# y_{i,t} & = \lambda_i f_t + u_{i,t} \\ +# u_{i,t} & = c_{i,1} u_{1,t-1} + c_{i,2} u_{i,t-2} + \varepsilon_{i,t} +# \qquad & \varepsilon_{i,t} \sim N(0, \sigma_i^2) \\ +# f_t & = a_1 f_{t-1} + a_2 f_{t-2} + \eta_t \qquad & \eta_t \sim N(0, +# I)\\ +# \end{align} +# $$ +# +# where $i$ is one of: `[indprod, income, sales, emp ]`. +# +# This model can be formulated using the `DynamicFactor` model built-in to +# Statsmodels. In particular, we have the following specification: +# +# - `k_factors = 1` - (there is 1 unobserved factor) +# - `factor_order = 2` - (it follows an AR(2) process) +# - `error_var = False` - (the errors evolve as independent AR processes +# rather than jointly as a VAR - note that this is the default option, so it +# is not specified below) +# - `error_order = 2` - (the errors are autocorrelated of order 2: i.e. +# AR(2) processes) +# - `error_cov_type = 'diagonal'` - (the innovations are uncorrelated; +# this is again the default) +# +# Once the model is created, the parameters can be estimated via maximum +# likelihood; this is done using the `fit()` method. +# +# **Note**: recall that we have de-meaned and standardized the data; this +# will be important in interpreting the results that follow. +# +# **Aside**: in their empirical example, Kim and Nelson (1999) actually +# consider a slightly different model in which the employment variable is +# allowed to also depend on lagged values of the factor - this model does +# not fit into the built-in `DynamicFactor` class, but can be accomodated by +# using a subclass to implement the required new parameters and restrictions +# - see Appendix A, below. + +# ## Parameter estimation +# +# Multivariate models can have a relatively large number of parameters, +# and it may be difficult to escape from local minima to find the maximized +# likelihood. In an attempt to mitigate this problem, I perform an initial +# maximization step (from the model-defined starting paramters) using the +# modified Powell method available in Scipy (see the minimize documentation +# for more information). The resulting parameters are then used as starting +# parameters in the standard LBFGS optimization method. + +# Get the endogenous data +endog = dta.loc['1979-02-01':, 'std_indprod':'std_emp'] + +# Create the model +mod = sm.tsa.DynamicFactor(endog, k_factors=1, factor_order=2, error_order=2) +initial_res = mod.fit(method='powell', disp=False) +res = mod.fit(initial_res.params, disp=False) + +# ## Estimates +# +# Once the model has been estimated, there are two components that we can +# use for analysis or inference: +# +# - The estimated parameters +# - The estimated factor + +# ### Parameters +# +# The estimated parameters can be helpful in understanding the +# implications of the model, although in models with a larger number of +# observed variables and / or unobserved factors they can be difficult to +# interpret. +# +# One reason for this difficulty is due to identification issues between +# the factor loadings and the unobserved factors. One easy-to-see +# identification issue is the sign of the loadings and the factors: an +# equivalent model to the one displayed below would result from reversing +# the signs of all factor loadings and the unobserved factor. +# +# Here, one of the easy-to-interpret implications in this model is the +# persistence of the unobserved factor: we find that exhibits substantial +# persistence. + +print(res.summary(separate_params=False)) + +# ### Estimated factors +# +# While it can be useful to plot the unobserved factors, it is less useful +# here than one might think for two reasons: +# +# 1. The sign-related identification issue described above. +# 2. Since the data was differenced, the estimated factor explains the +# variation in the differenced data, not the original data. +# +# It is for these reasons that the coincident index is created (see +# below). +# +# With these reservations, the unobserved factor is plotted below, along +# with the NBER indicators for US recessions. It appears that the factor is +# successful at picking up some degree of business cycle activity. + +fig, ax = plt.subplots(figsize=(13, 3)) + +# Plot the factor +dates = endog.index._mpl_repr() +ax.plot(dates, res.factors.filtered[0], label='Factor') +ax.legend() + +# Retrieve and also plot the NBER recession indicators +rec = DataReader('USREC', 'fred', start=start, end=end) +ylim = ax.get_ylim() +ax.fill_between( + dates[:-3], ylim[0], ylim[1], rec.values[:-4, 0], facecolor='k', alpha=0.1) + +# ## Post-estimation +# +# Although here we will be able to interpret the results of the model by +# constructing the coincident index, there is a useful and generic approach +# for getting a sense for what is being captured by the estimated factor. By +# taking the estimated factors as given, regressing them (and a constant) +# each (one at a time) on each of the observed variables, and recording the +# coefficients of determination ($R^2$ values), we can get a sense of the +# variables for which each factor explains a substantial portion of the +# variance and the variables for which it does not. +# +# In models with more variables and more factors, this can sometimes lend +# interpretation to the factors (for example sometimes one factor will load +# primarily on real variables and another on nominal variables). +# +# In this model, with only four endogenous variables and one factor, it is +# easy to digest a simple table of the $R^2$ values, but in larger models it +# is not. For this reason, a bar plot is often employed; from the plot we +# can easily see that the factor explains most of the variation in +# industrial production index and a large portion of the variation in sales +# and employment, it is less helpful in explaining income. + +res.plot_coefficients_of_determination(figsize=(8, 2)) + +# ## Coincident Index +# +# As described above, the goal of this model was to create an +# interpretable series which could be used to understand the current status +# of the macroeconomy. This is what the coincident index is designed to do. +# It is constructed below. For readers interested in an explanation of the +# construction, see Kim and Nelson (1999) or Stock and Watson (1991). +# +# In essense, what is done is to reconstruct the mean of the (differenced) +# factor. We will compare it to the coincident index on published by the +# Federal Reserve Bank of Philadelphia (USPHCI on FRED). + +usphci = DataReader( + 'USPHCI', 'fred', start='1979-01-01', end='2014-12-01')['USPHCI'] +usphci.plot(figsize=(13, 3)) + +dusphci = usphci.diff()[1:].values + + +def compute_coincident_index(mod, res): + # Estimate W(1) + spec = res.specification + design = mod.ssm['design'] + transition = mod.ssm['transition'] + ss_kalman_gain = res.filter_results.kalman_gain[:, :, -1] + k_states = ss_kalman_gain.shape[0] + + W1 = np.linalg.inv( + np.eye(k_states) - + np.dot(np.eye(k_states) - np.dot(ss_kalman_gain, design), transition) + ).dot(ss_kalman_gain)[0] + + # Compute the factor mean vector + factor_mean = np.dot( + W1, dta.loc['1972-02-01':, 'dln_indprod':'dln_emp'].mean()) + + # Normalize the factors + factor = res.factors.filtered[0] + factor *= np.std(usphci.diff()[1:]) / np.std(factor) + + # Compute the coincident index + coincident_index = np.zeros(mod.nobs + 1) + # The initial value is arbitrary; here it is set to + # facilitate comparison + coincident_index[0] = usphci.iloc[0] * factor_mean / dusphci.mean() + for t in range(0, mod.nobs): + coincident_index[t + 1] = coincident_index[t] + factor[t] + factor_mean + + # Attach dates + coincident_index = pd.Series(coincident_index, index=dta.index).iloc[1:] + + # Normalize to use the same base year as USPHCI + coincident_index *= ( + usphci.loc['1992-07-01'] / coincident_index.loc['1992-07-01']) + + return coincident_index + + +# Below we plot the calculated coincident index along with the US +# recessions and the comparison coincident index USPHCI. + +fig, ax = plt.subplots(figsize=(13, 3)) + +# Compute the index +coincident_index = compute_coincident_index(mod, res) + +# Plot the factor +dates = endog.index._mpl_repr() +ax.plot(dates, coincident_index, label='Coincident index') +ax.plot(usphci.index._mpl_repr(), usphci, label='USPHCI') +ax.legend(loc='lower right') + +# Retrieve and also plot the NBER recession indicators +ylim = ax.get_ylim() +ax.fill_between( + dates[:-3], ylim[0], ylim[1], rec.values[:-4, 0], facecolor='k', alpha=0.1) + +# ## Appendix 1: Extending the dynamic factor model +# +# Recall that the previous specification was described by: +# +# $$ +# \begin{align} +# y_{i,t} & = \lambda_i f_t + u_{i,t} \\ +# u_{i,t} & = c_{i,1} u_{1,t-1} + c_{i,2} u_{i,t-2} + \varepsilon_{i,t} +# \qquad & \varepsilon_{i,t} \sim N(0, \sigma_i^2) \\ +# f_t & = a_1 f_{t-1} + a_2 f_{t-2} + \eta_t \qquad & \eta_t \sim N(0, +# I)\\ +# \end{align} +# $$ +# +# Written in state space form, the previous specification of the model had +# the following observation equation: +# +# $$ +# \begin{bmatrix} +# y_{\text{indprod}, t} \\ +# y_{\text{income}, t} \\ +# y_{\text{sales}, t} \\ +# y_{\text{emp}, t} \\ +# \end{bmatrix} = \begin{bmatrix} +# \lambda_\text{indprod} & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# \lambda_\text{income} & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# \lambda_\text{sales} & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ +# \lambda_\text{emp} & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ +# \end{bmatrix} +# \begin{bmatrix} +# f_t \\ +# f_{t-1} \\ +# u_{\text{indprod}, t} \\ +# u_{\text{income}, t} \\ +# u_{\text{sales}, t} \\ +# u_{\text{emp}, t} \\ +# u_{\text{indprod}, t-1} \\ +# u_{\text{income}, t-1} \\ +# u_{\text{sales}, t-1} \\ +# u_{\text{emp}, t-1} \\ +# \end{bmatrix} +# $$ +# +# and transition equation: +# +# $$ +# \begin{bmatrix} +# f_t \\ +# f_{t-1} \\ +# u_{\text{indprod}, t} \\ +# u_{\text{income}, t} \\ +# u_{\text{sales}, t} \\ +# u_{\text{emp}, t} \\ +# u_{\text{indprod}, t-1} \\ +# u_{\text{income}, t-1} \\ +# u_{\text{sales}, t-1} \\ +# u_{\text{emp}, t-1} \\ +# \end{bmatrix} = \begin{bmatrix} +# a_1 & a_2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# 0 & 0 & c_{\text{indprod}, 1} & 0 & 0 & 0 & c_{\text{indprod}, 2} & +# 0 & 0 & 0 \\ +# 0 & 0 & 0 & c_{\text{income}, 1} & 0 & 0 & 0 & c_{\text{income}, 2} +# & 0 & 0 \\ +# 0 & 0 & 0 & 0 & c_{\text{sales}, 1} & 0 & 0 & 0 & c_{\text{sales}, +# 2} & 0 \\ +# 0 & 0 & 0 & 0 & 0 & c_{\text{emp}, 1} & 0 & 0 & 0 & c_{\text{emp}, +# 2} \\ +# 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ +# 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ +# \end{bmatrix} +# \begin{bmatrix} +# f_{t-1} \\ +# f_{t-2} \\ +# u_{\text{indprod}, t-1} \\ +# u_{\text{income}, t-1} \\ +# u_{\text{sales}, t-1} \\ +# u_{\text{emp}, t-1} \\ +# u_{\text{indprod}, t-2} \\ +# u_{\text{income}, t-2} \\ +# u_{\text{sales}, t-2} \\ +# u_{\text{emp}, t-2} \\ +# \end{bmatrix} +# + R \begin{bmatrix} +# \eta_t \\ +# \varepsilon_{t} +# \end{bmatrix} +# $$ +# +# the `DynamicFactor` model handles setting up the state space +# representation and, in the `DynamicFactor.update` method, it fills in the +# fitted parameter values into the appropriate locations. + +# The extended specification is the same as in the previous example, +# except that we also want to allow employment to depend on lagged values of +# the factor. This creates a change to the $y_{\text{emp},t}$ equation. Now +# we have: +# +# $$ +# \begin{align} +# y_{i,t} & = \lambda_i f_t + u_{i,t} \qquad & i \in \{\text{indprod}, +# \text{income}, \text{sales} \}\\ +# y_{i,t} & = \lambda_{i,0} f_t + \lambda_{i,1} f_{t-1} + \lambda_{i,2} +# f_{t-2} + \lambda_{i,2} f_{t-3} + u_{i,t} \qquad & i = \text{emp} \\ +# u_{i,t} & = c_{i,1} u_{i,t-1} + c_{i,2} u_{i,t-2} + \varepsilon_{i,t} +# \qquad & \varepsilon_{i,t} \sim N(0, \sigma_i^2) \\ +# f_t & = a_1 f_{t-1} + a_2 f_{t-2} + \eta_t \qquad & \eta_t \sim N(0, +# I)\\ +# \end{align} +# $$ +# +# Now, the corresponding observation equation should look like the +# following: +# +# $$ +# \begin{bmatrix} +# y_{\text{indprod}, t} \\ +# y_{\text{income}, t} \\ +# y_{\text{sales}, t} \\ +# y_{\text{emp}, t} \\ +# \end{bmatrix} = \begin{bmatrix} +# \lambda_\text{indprod} & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# \lambda_\text{income} & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# \lambda_\text{sales} & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ +# \lambda_\text{emp,1} & \lambda_\text{emp,2} & \lambda_\text{emp,3} & +# \lambda_\text{emp,4} & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ +# \end{bmatrix} +# \begin{bmatrix} +# f_t \\ +# f_{t-1} \\ +# f_{t-2} \\ +# f_{t-3} \\ +# u_{\text{indprod}, t} \\ +# u_{\text{income}, t} \\ +# u_{\text{sales}, t} \\ +# u_{\text{emp}, t} \\ +# u_{\text{indprod}, t-1} \\ +# u_{\text{income}, t-1} \\ +# u_{\text{sales}, t-1} \\ +# u_{\text{emp}, t-1} \\ +# \end{bmatrix} +# $$ +# +# Notice that we have introduced two new state variables, $f_{t-2}$ and +# $f_{t-3}$, which means we need to update the transition equation: +# +# $$ +# \begin{bmatrix} +# f_t \\ +# f_{t-1} \\ +# f_{t-2} \\ +# f_{t-3} \\ +# u_{\text{indprod}, t} \\ +# u_{\text{income}, t} \\ +# u_{\text{sales}, t} \\ +# u_{\text{emp}, t} \\ +# u_{\text{indprod}, t-1} \\ +# u_{\text{income}, t-1} \\ +# u_{\text{sales}, t-1} \\ +# u_{\text{emp}, t-1} \\ +# \end{bmatrix} = \begin{bmatrix} +# a_1 & a_2 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# 0 & 0 & 0 & 0 & c_{\text{indprod}, 1} & 0 & 0 & 0 & +# c_{\text{indprod}, 2} & 0 & 0 & 0 \\ +# 0 & 0 & 0 & 0 & 0 & c_{\text{income}, 1} & 0 & 0 & 0 & +# c_{\text{income}, 2} & 0 & 0 \\ +# 0 & 0 & 0 & 0 & 0 & 0 & c_{\text{sales}, 1} & 0 & 0 & 0 & +# c_{\text{sales}, 2} & 0 \\ +# 0 & 0 & 0 & 0 & 0 & 0 & 0 & c_{\text{emp}, 1} & 0 & 0 & 0 & +# c_{\text{emp}, 2} \\ +# 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 & 0 \\ +# 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ +# \end{bmatrix} +# \begin{bmatrix} +# f_{t-1} \\ +# f_{t-2} \\ +# f_{t-3} \\ +# f_{t-4} \\ +# u_{\text{indprod}, t-1} \\ +# u_{\text{income}, t-1} \\ +# u_{\text{sales}, t-1} \\ +# u_{\text{emp}, t-1} \\ +# u_{\text{indprod}, t-2} \\ +# u_{\text{income}, t-2} \\ +# u_{\text{sales}, t-2} \\ +# u_{\text{emp}, t-2} \\ +# \end{bmatrix} +# + R \begin{bmatrix} +# \eta_t \\ +# \varepsilon_{t} +# \end{bmatrix} +# $$ +# +# This model cannot be handled out-of-the-box by the `DynamicFactor` +# class, but it can be handled by creating a subclass when alters the state +# space representation in the appropriate way. + +# First, notice that if we had set `factor_order = 4`, we would almost +# have what we wanted. In that case, the last line of the observation +# equation would be: +# +# $$ +# \begin{bmatrix} +# \vdots \\ +# y_{\text{emp}, t} \\ +# \end{bmatrix} = \begin{bmatrix} +# \vdots & & & & & & & & & & & \vdots \\ +# \lambda_\text{emp,1} & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 0 & 0 & 0 & 0 \\ +# \end{bmatrix} +# \begin{bmatrix} +# f_t \\ +# f_{t-1} \\ +# f_{t-2} \\ +# f_{t-3} \\ +# \vdots +# \end{bmatrix} +# $$ +# +# +# and the first line of the transition equation would be: +# +# $$ +# \begin{bmatrix} +# f_t \\ +# \vdots +# \end{bmatrix} = \begin{bmatrix} +# a_1 & a_2 & a_3 & a_4 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 \\ +# \vdots & & & & & & & & & & & \vdots \\ +# \end{bmatrix} +# \begin{bmatrix} +# f_{t-1} \\ +# f_{t-2} \\ +# f_{t-3} \\ +# f_{t-4} \\ +# \vdots +# \end{bmatrix} +# + R \begin{bmatrix} +# \eta_t \\ +# \varepsilon_{t} +# \end{bmatrix} +# $$ +# +# Relative to what we want, we have the following differences: +# +# 1. In the above situation, the $\lambda_{\text{emp}, j}$ are forced to +# be zero for $j > 0$, and we want them to be estimated as parameters. +# 2. We only want the factor to transition according to an AR(2), but +# under the above situation it is an AR(4). +# +# Our strategy will be to subclass `DynamicFactor`, and let it do most of +# the work (setting up the state space representation, etc.) where it +# assumes that `factor_order = 4`. The only things we will actually do in +# the subclass will be to fix those two issues. +# +# First, here is the full code of the subclass; it is discussed below. It +# is important to note at the outset that none of the methods defined below +# could have been omitted. In fact, the methods `__init__`, `start_params`, +# `param_names`, `transform_params`, `untransform_params`, and `update` form +# the core of all state space models in Statsmodels, not just the +# `DynamicFactor` class. + +from statsmodels.tsa.statespace import tools + + +class ExtendedDFM(sm.tsa.DynamicFactor): + def __init__(self, endog, **kwargs): + # Setup the model as if we had a factor order of 4 + super(ExtendedDFM, self).__init__( + endog, k_factors=1, factor_order=4, error_order=2, **kwargs) + + # Note: `self.parameters` is an ordered dict with the + # keys corresponding to parameter types, and the values + # the number of parameters of that type. + # Add the new parameters + self.parameters['new_loadings'] = 3 + + # Cache a slice for the location of the 4 factor AR + # parameters (a_1, ..., a_4) in the full parameter vector + offset = (self.parameters['factor_loadings'] + self.parameters['exog'] + + self.parameters['error_cov']) + self._params_factor_ar = np.s_[offset:offset + 2] + self._params_factor_zero = np.s_[offset + 2:offset + 4] + + @property + def start_params(self): + # Add three new loading parameters to the end of the parameter + # vector, initialized to zeros (for simplicity; they could + # be initialized any way you like) + return np.r_[super(ExtendedDFM, self).start_params, 0, 0, 0] + + @property + def param_names(self): + # Add the corresponding names for the new loading parameters + # (the name can be anything you like) + return super(ExtendedDFM, self).param_names + [ + 'loading.L%d.f1.%s' % (i, self.endog_names[3]) + for i in range(1, 4) + ] + + def transform_params(self, unconstrained): + # Perform the typical DFM transformation (w/o the new parameters) + constrained = super(ExtendedDFM, + self).transform_params(unconstrained[:-3]) + + # Redo the factor AR constraint, since we only want an AR(2), + # and the previous constraint was for an AR(4) + ar_params = unconstrained[self._params_factor_ar] + constrained[self._params_factor_ar] = ( + tools.constrain_stationary_univariate(ar_params)) + + # Return all the parameters + return np.r_[constrained, unconstrained[-3:]] + + def untransform_params(self, constrained): + # Perform the typical DFM untransformation (w/o the new parameters) + unconstrained = super(ExtendedDFM, + self).untransform_params(constrained[:-3]) + + # Redo the factor AR unconstraint, since we only want an AR(2), + # and the previous unconstraint was for an AR(4) + ar_params = constrained[self._params_factor_ar] + unconstrained[self._params_factor_ar] = ( + tools.unconstrain_stationary_univariate(ar_params)) + + # Return all the parameters + return np.r_[unconstrained, constrained[-3:]] + + def update(self, params, transformed=True, complex_step=False): + # Peform the transformation, if required + if not transformed: + params = self.transform_params(params) + params[self._params_factor_zero] = 0 + + # Now perform the usual DFM update, but exclude our new parameters + super(ExtendedDFM, self).update( + params[:-3], transformed=True, complex_step=complex_step) + + # Finally, set our new parameters in the design matrix + self.ssm['design', 3, 1:4] = params[-3:] + + +# So what did we just do? +# +# #### `__init__` +# +# The important step here was specifying the base dynamic factor model +# which we were operating with. In particular, as described above, we +# initialize with `factor_order=4`, even though we will only end up with an +# AR(2) model for the factor. We also performed some general setup-related +# tasks. +# +# #### `start_params` +# +# `start_params` are used as initial values in the optimizer. Since we are +# adding three new parameters, we need to pass those in. If we hadn't done +# this, the optimizer would use the default starting values, which would be +# three elements short. +# +# #### `param_names` +# +# `param_names` are used in a variety of places, but especially in the +# results class. Below we get a full result summary, which is only possible +# when all the parameters have associated names. +# +# #### `transform_params` and `untransform_params` +# +# The optimizer selects possibly parameter values in an unconstrained way. +# That's not usually desired (since variances can't be negative, for +# example), and `transform_params` is used to transform the unconstrained +# values used by the optimizer to constrained values appropriate to the +# model. Variances terms are typically squared (to force them to be +# positive), and AR lag coefficients are often constrained to lead to a +# stationary model. `untransform_params` is used for the reverse operation +# (and is important because starting parameters are usually specified in +# terms of values appropriate to the model, and we need to convert them to +# parameters appropriate to the optimizer before we can begin the +# optimization routine). +# +# Even though we don't need to transform or untransform our new parameters +# (the loadings can in theory take on any values), we still need to modify +# this function for two reasons: +# +# 1. The version in the `DynamicFactor` class is expecting 3 fewer +# parameters than we have now. At a minimum, we need to handle the three new +# parameters. +# 2. The version in the `DynamicFactor` class constrains the factor lag +# coefficients to be stationary as though it was an AR(4) model. Since we +# actually have an AR(2) model, we need to re-do the constraint. We also set +# the last two autoregressive coefficients to be zero here. +# +# #### `update` +# +# The most important reason we need to specify a new `update` method is +# because we have three new parameters that we need to place into the state +# space formulation. In particular we let the parent `DynamicFactor.update` +# class handle placing all the parameters except the three new ones in to +# the state space representation, and then we put the last three in +# manually. + +# Create the model +extended_mod = ExtendedDFM(endog) +initial_extended_res = extended_mod.fit(maxiter=1000, disp=False) +extended_res = extended_mod.fit( + initial_extended_res.params, method='nm', maxiter=1000) +print(extended_res.summary(separate_params=False)) + +# Although this model increases the likelihood, it is not preferred by the +# AIC and BIC mesaures which penalize the additional three parameters. +# +# Furthermore, the qualitative results are unchanged, as we can see from +# the updated $R^2$ chart and the new coincident index, both of which are +# practically identical to the previous results. + +extended_res.plot_coefficients_of_determination(figsize=(8, 2)) + +fig, ax = plt.subplots(figsize=(13, 3)) + +# Compute the index +extended_coincident_index = compute_coincident_index(extended_mod, + extended_res) + +# Plot the factor +dates = endog.index._mpl_repr() +ax.plot(dates, coincident_index, '-', linewidth=1, label='Basic model') +ax.plot( + dates, + extended_coincident_index, + '--', + linewidth=3, + label='Extended model') +ax.plot(usphci.index._mpl_repr(), usphci, label='USPHCI') +ax.legend(loc='lower right') +ax.set(title='Coincident indices, comparison') + +# Retrieve and also plot the NBER recession indicators +ylim = ax.get_ylim() +ax.fill_between( + dates[:-3], ylim[0], ylim[1], rec.values[:-4, 0], facecolor='k', alpha=0.1) diff --git a/examples/python/statespace_local_linear_trend.py b/examples/python/statespace_local_linear_trend.py new file mode 100644 index 0000000..6710464 --- /dev/null +++ b/examples/python/statespace_local_linear_trend.py @@ -0,0 +1,252 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook statespace_local_linear_trend.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # State space modeling: Local Linear Trends + +# This notebook describes how to extend the Statsmodels statespace classes +# to create and estimate a custom model. Here we develop a local linear +# trend model. +# +# The Local Linear Trend model has the form (see Durbin and Koopman 2012, +# Chapter 3.2 for all notation and details): +# +# $$ +# \begin{align} +# y_t & = \mu_t + \varepsilon_t \qquad & \varepsilon_t \sim +# N(0, \sigma_\varepsilon^2) \\ +# \mu_{t+1} & = \mu_t + \nu_t + \xi_t & \xi_t \sim N(0, \sigma_\xi^2) \\ +# \nu_{t+1} & = \nu_t + \zeta_t & \zeta_t \sim N(0, \sigma_\zeta^2) +# \end{align} +# $$ +# +# It is easy to see that this can be cast into state space form as: +# +# $$ +# \begin{align} +# y_t & = \begin{pmatrix} 1 & 0 \end{pmatrix} \begin{pmatrix} \mu_t \\ +# \nu_t \end{pmatrix} + \varepsilon_t \\ +# \begin{pmatrix} \mu_{t+1} \\ \nu_{t+1} \end{pmatrix} & = \begin{bmatrix} +# 1 & 1 \\ 0 & 1 \end{bmatrix} \begin{pmatrix} \mu_t \\ \nu_t \end{pmatrix} +# + \begin{pmatrix} \xi_t \\ \zeta_t \end{pmatrix} +# \end{align} +# $$ +# +# Notice that much of the state space representation is composed of known +# values; in fact the only parts in which parameters to be estimated appear +# are in the variance / covariance matrices: +# +# $$ +# \begin{align} +# H_t & = \begin{bmatrix} \sigma_\varepsilon^2 \end{bmatrix} \\ +# Q_t & = \begin{bmatrix} \sigma_\xi^2 & 0 \\ 0 & \sigma_\zeta^2 +# \end{bmatrix} +# \end{align} +# $$ + +import numpy as np +import pandas as pd +from scipy.stats import norm +import statsmodels.api as sm +import matplotlib.pyplot as plt + +# To take advantage of the existing infrastructure, including Kalman +# filtering and maximum likelihood estimation, we create a new class which +# extends from `statsmodels.tsa.statespace.MLEModel`. There are a number of +# things that must be specified: +# +# 1. **k_states**, **k_posdef**: These two parameters must be provided to +# the base classes in initialization. The inform the statespace model about +# the size of, respectively, the state vector, above $\begin{pmatrix} \mu_t +# & \nu_t \end{pmatrix}'$, and the state error vector, above +# $\begin{pmatrix} \xi_t & \zeta_t \end{pmatrix}'$. Note that the dimension +# of the endogenous vector does not have to be specified, since it can be +# inferred from the `endog` array. +# 2. **update**: The method `update`, with argument `params`, must be +# specified (it is used when `fit()` is called to calculate the MLE). It +# takes the parameters and fills them into the appropriate state space +# matrices. For example, below, the `params` vector contains variance +# parameters $\begin{pmatrix} \sigma_\varepsilon^2 & \sigma_\xi^2 & +# \sigma_\zeta^2\end{pmatrix}$, and the `update` method must place them in +# the observation and state covariance matrices. More generally, the +# parameter vector might be mapped into many different places in all of the +# statespace matrices. +# 3. **statespace matrices**: by default, all state space matrices +# (`obs_intercept, design, obs_cov, state_intercept, transition, selection, +# state_cov`) are set to zeros. Values that are fixed (like the ones in the +# design and transition matrices here) can be set in initialization, whereas +# values that vary with the parameters should be set in the `update` method. +# Note that it is easy to forget to set the selection matrix, which is often +# just the identity matrix (as it is here), but not setting it will lead to +# a very different model (one where there is not a stochastic component to +# the transition equation). +# 4. **start params**: start parameters must be set, even if it is just a +# vector of zeros, although often good start parameters can be found from +# the data. Maximum likelihood estimation by gradient methods (as employed +# here) can be sensitive to the starting parameters, so it is important to +# select good ones if possible. Here it does not matter too much (although +# as variances, they should't be set zero). +# 5. **initialization**: in addition to defined state space matrices, all +# state space models must be initialized with the mean and variance for the +# initial distribution of the state vector. If the distribution is known, +# `initialize_known(initial_state, initial_state_cov)` can be called, or if +# the model is stationary (e.g. an ARMA model), `initialize_stationary` can +# be used. Otherwise, `initialize_approximate_diffuse` is a reasonable +# generic initialization (exact diffuse initialization is not yet +# available). Since the local linear trend model is not stationary (it is +# composed of random walks) and since the distribution is not generally +# known, we use `initialize_approximate_diffuse` below. +# +# The above are the minimum necessary for a successful model. There are +# also a number of things that do not have to be set, but which may be +# helpful or important for some applications: +# +# 1. **transform / untransform**: when `fit` is called, the optimizer in +# the background will use gradient methods to select the parameters that +# maximize the likelihood function. By default it uses unbounded +# optimization, which means that it may select any parameter value. In many +# cases, that is not the desired behavior; variances, for example, cannot be +# negative. To get around this, the `transform` method takes the +# unconstrained vector of parameters provided by the optimizer and returns a +# constrained vector of parameters used in likelihood evaluation. +# `untransform` provides the reverse operation. +# 2. **param_names**: this internal method can be used to set names for +# the estimated parameters so that e.g. the summary provides meaningful +# names. If not present, parameters are named `param0`, `param1`, etc. +""" +Univariate Local Linear Trend Model +""" + + +class LocalLinearTrend(sm.tsa.statespace.MLEModel): + def __init__(self, endog): + # Model order + k_states = k_posdef = 2 + + # Initialize the statespace + super(LocalLinearTrend, self).__init__( + endog, + k_states=k_states, + k_posdef=k_posdef, + initialization='approximate_diffuse', + loglikelihood_burn=k_states) + + # Initialize the matrices + self.ssm['design'] = np.array([1, 0]) + self.ssm['transition'] = np.array([[1, 1], [0, 1]]) + self.ssm['selection'] = np.eye(k_states) + + # Cache some indices + self._state_cov_idx = ('state_cov', ) + np.diag_indices(k_posdef) + + @property + def param_names(self): + return ['sigma2.measurement', 'sigma2.level', 'sigma2.trend'] + + @property + def start_params(self): + return [np.std(self.endog)] * 3 + + def transform_params(self, unconstrained): + return unconstrained**2 + + def untransform_params(self, constrained): + return constrained**0.5 + + def update(self, params, *args, **kwargs): + params = super(LocalLinearTrend, self).update(params, *args, **kwargs) + + # Observation covariance + self.ssm['obs_cov', 0, 0] = params[0] + + # State covariance + self.ssm[self._state_cov_idx] = params[1:] + + +# Using this simple model, we can estimate the parameters from a local +# linear trend model. The following example is from Commandeur and Koopman +# (2007), section 3.4., modeling motor vehicle fatalities in Finland. + +import requests +from io import BytesIO +from zipfile import ZipFile + +# Download the dataset +ck = requests.get( + 'http://staff.feweb.vu.nl/koopman/projects/ckbook/OxCodeAll.zip').content +zipped = ZipFile(BytesIO(ck)) +df = pd.read_table( + BytesIO( + zipped.read('OxCodeIntroStateSpaceBook/Chapter_2/NorwayFinland.txt')), + skiprows=1, + header=None, + sep='\s+', + engine='python', + names=['date', 'nf', 'ff']) + +# Since we defined the local linear trend model as extending from +# `MLEModel`, the `fit()` method is immediately available, just as in other +# Statsmodels maximum likelihood classes. Similarly, the returned results +# class supports many of the same post-estimation results, like the +# `summary` method. +# + +# Load Dataset +df.index = pd.date_range( + start='%d-01-01' % df.date[0], end='%d-01-01' % df.iloc[-1, 0], freq='AS') + +# Log transform +df['lff'] = np.log(df['ff']) + +# Setup the model +mod = LocalLinearTrend(df['lff']) + +# Fit it using MLE (recall that we are fitting the three variance +# parameters) +res = mod.fit(disp=False) +print(res.summary()) + +# Finally, we can do post-estimation prediction and forecasting. Notice +# that the end period can be specified as a date. + +# Perform prediction and forecasting +predict = res.get_prediction() +forecast = res.get_forecast('2014') + +fig, ax = plt.subplots(figsize=(10, 4)) + +# Plot the results +df['lff'].plot(ax=ax, style='k.', label='Observations') +predict.predicted_mean.plot(ax=ax, label='One-step-ahead Prediction') +predict_ci = predict.conf_int(alpha=0.05) +predict_index = np.arange(len(predict_ci)) +ax.fill_between( + predict_index[2:], + predict_ci.iloc[2:, 0], + predict_ci.iloc[2:, 1], + alpha=0.1) + +forecast.predicted_mean.plot(ax=ax, style='r', label='Forecast') +forecast_ci = forecast.conf_int() +forecast_index = np.arange(len(predict_ci), len(predict_ci) + len(forecast_ci)) +ax.fill_between( + forecast_index, forecast_ci.iloc[:, 0], forecast_ci.iloc[:, 1], alpha=0.1) + +# Cleanup the image +ax.set_ylim((4, 8)) +legend = ax.legend(loc='lower left') + +# ### References +# +# Commandeur, Jacques J. F., and Siem Jan Koopman. 2007. +# An Introduction to State Space Time Series Analysis. +# Oxford ; New York: Oxford University Press. +# +# Durbin, James, and Siem Jan Koopman. 2012. +# Time Series Analysis by State Space Methods: Second Edition. +# Oxford University Press. diff --git a/examples/python/statespace_sarimax_internet.py b/examples/python/statespace_sarimax_internet.py new file mode 100644 index 0000000..c5f80e1 --- /dev/null +++ b/examples/python/statespace_sarimax_internet.py @@ -0,0 +1,177 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook statespace_sarimax_internet.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # SARIMAX: Model selection, missing data + +# The example mirrors Durbin and Koopman (2012), Chapter 8.4 in +# application of Box-Jenkins methodology to fit ARMA models. The novel +# feature is the ability of the model to work on datasets with missing +# values. + +import numpy as np +import pandas as pd +from scipy.stats import norm +import statsmodels.api as sm +import matplotlib.pyplot as plt + +import requests +from io import BytesIO +from zipfile import ZipFile + +# Download the dataset +dk = requests.get('http://www.ssfpack.com/files/DK-data.zip').content +f = BytesIO(dk) +zipped = ZipFile(f) +df = pd.read_table( + BytesIO(zipped.read('internet.dat')), + skiprows=1, + header=None, + sep='\s+', + engine='python', + names=['internet', 'dinternet']) + +# ### Model Selection +# +# As in Durbin and Koopman, we force a number of the values to be missing. + +# Get the basic series +dta_full = df.dinternet[1:].values +dta_miss = dta_full.copy() + +# Remove datapoints +missing = np.r_[6, 16, 26, 36, 46, 56, 66, 72, 73, 74, 75, 76, 86, 96] - 1 +dta_miss[missing] = np.nan + +# Then we can consider model selection using the Akaike information +# criteria (AIC), but running the model for each variant and selecting the +# model with the lowest AIC value. +# +# There are a couple of things to note here: +# +# - When running such a large batch of models, particularly when the +# autoregressive and moving average orders become large, there is the +# possibility of poor maximum likelihood convergence. Below we ignore the +# warnings since this example is illustrative. +# - We use the option `enforce_invertibility=False`, which allows the +# moving average polynomial to be non-invertible, so that more of the models +# are estimable. +# - Several of the models do not produce good results, and their AIC value +# is set to NaN. This is not surprising, as Durbin and Koopman note +# numerical problems with the high order models. + +import warnings + +aic_full = pd.DataFrame(np.zeros((6, 6), dtype=float)) +aic_miss = pd.DataFrame(np.zeros((6, 6), dtype=float)) + +warnings.simplefilter('ignore') + +# Iterate over all ARMA(p,q) models with p,q in [0,6] +for p in range(6): + for q in range(6): + if p == 0 and q == 0: + continue + + # Estimate the model with no missing datapoints + mod = sm.tsa.statespace.SARIMAX( + dta_full, order=(p, 0, q), enforce_invertibility=False) + try: + res = mod.fit(disp=False) + aic_full.iloc[p, q] = res.aic + except: + aic_full.iloc[p, q] = np.nan + + # Estimate the model with missing datapoints + mod = sm.tsa.statespace.SARIMAX( + dta_miss, order=(p, 0, q), enforce_invertibility=False) + try: + res = mod.fit(disp=False) + aic_miss.iloc[p, q] = res.aic + except: + aic_miss.iloc[p, q] = np.nan + +# For the models estimated over the full (non-missing) dataset, the AIC +# chooses ARMA(1,1) or ARMA(3,0). Durbin and Koopman suggest the ARMA(1,1) +# specification is better due to parsimony. +# +# $$ +# \text{Replication of:}\\ +# \textbf{Table 8.1} ~~ \text{AIC for different ARMA models.}\\ +# \newcommand{\r}[1]{{\color{red}{#1}}} +# \begin{array}{lrrrrrr} +# \hline +# q & 0 & 1 & 2 & 3 & 4 & 5 \\ +# \hline +# p & {} & {} & {} & {} & {} & {} \\ +# 0 & 0.00 & 549.81 & 519.87 & 520.27 & 519.38 & 518.86 \\ +# 1 & 529.24 & \r{514.30} & 516.25 & 514.58 & 515.10 & 516.28 \\ +# 2 & 522.18 & 516.29 & 517.16 & 515.77 & 513.24 & 514.73 \\ +# 3 & \r{511.99} & 513.94 & 515.92 & 512.06 & 513.72 & 514.50 \\ +# 4 & 513.93 & 512.89 & nan & nan & 514.81 & 516.08 \\ +# 5 & 515.86 & 517.64 & nan & nan & nan & nan \\ +# \hline +# \end{array} +# $$ +# +# For the models estimated over missing dataset, the AIC chooses ARMA(1,1) +# +# $$ +# \text{Replication of:}\\ +# \textbf{Table 8.2} ~~ \text{AIC for different ARMA models with missing +# observations.}\\ +# \begin{array}{lrrrrrr} +# \hline +# q & 0 & 1 & 2 & 3 & 4 & 5 \\ +# \hline +# p & {} & {} & {} & {} & {} & {} \\ +# 0 & 0.00 & 488.93 & 464.01 & 463.86 & 462.63 & 463.62 \\ +# 1 & 468.01 & \r{457.54} & 459.35 & 458.66 & 459.15 & 461.01 \\ +# 2 & 469.68 & nan & 460.48 & 459.43 & 459.23 & 460.47 \\ +# 3 & 467.10 & 458.44 & 459.64 & 456.66 & 459.54 & 460.05 \\ +# 4 & 469.00 & 459.52 & nan & 463.04 & 459.35 & 460.96 \\ +# 5 & 471.32 & 461.26 & nan & nan & 461.00 & 462.97 \\ +# \hline +# \end{array} +# $$ +# +# **Note**: the AIC values are calculated differently than in Durbin and +# Koopman, but show overall similar trends. + +# ### Postestimation +# +# Using the ARMA(1,1) specification selected above, we perform in-sample +# prediction and out-of-sample forecasting. + +# Statespace +mod = sm.tsa.statespace.SARIMAX(dta_miss, order=(1, 0, 1)) +res = mod.fit(disp=False) +print(res.summary()) + +# In-sample one-step-ahead predictions, and out-of-sample forecasts +nforecast = 20 +predict = res.get_prediction(end=mod.nobs + nforecast) +idx = np.arange(len(predict.predicted_mean)) +predict_ci = predict.conf_int(alpha=0.5) + +# Graph +fig, ax = plt.subplots(figsize=(12, 6)) +ax.xaxis.grid() +ax.plot(dta_miss, 'k.') + +# Plot +ax.plot(idx[:-nforecast], predict.predicted_mean[:-nforecast], 'gray') +ax.plot( + idx[-nforecast:], + predict.predicted_mean[-nforecast:], + 'k--', + linestyle='--', + linewidth=2) +ax.fill_between(idx, predict_ci[:, 0], predict_ci[:, 1], alpha=0.15) + +ax.set(title='Figure 8.9 - Internet series') diff --git a/examples/python/statespace_sarimax_stata.py b/examples/python/statespace_sarimax_stata.py new file mode 100644 index 0000000..f901d8a --- /dev/null +++ b/examples/python/statespace_sarimax_stata.py @@ -0,0 +1,547 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook statespace_sarimax_stata.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # SARIMAX: Introduction + +# This notebook replicates examples from the Stata ARIMA time series +# estimation and postestimation documentation. +# +# First, we replicate the four estimation examples +# http://www.stata.com/manuals13/tsarima.pdf: +# +# 1. ARIMA(1,1,1) model on the U.S. Wholesale Price Index (WPI) dataset. +# 2. Variation of example 1 which adds an MA(4) term to the ARIMA(1,1,1) +# specification to allow for an additive seasonal effect. +# 3. ARIMA(2,1,0) x (1,1,0,12) model of monthly airline data. This example +# allows a multiplicative seasonal effect. +# 4. ARMA(1,1) model with exogenous regressors; describes consumption as +# an autoregressive process on which also the money supply is assumed to be +# an explanatory variable. +# +# Second, we demonstrate postestimation capabilitites to replicate +# http://www.stata.com/manuals13/tsarimapostestimation.pdf. The model from +# example 4 is used to demonstrate: +# +# 1. One-step-ahead in-sample prediction +# 2. n-step-ahead out-of-sample forecasting +# 3. n-step-ahead in-sample dynamic prediction + +import numpy as np +import pandas as pd +from scipy.stats import norm +import statsmodels.api as sm +import matplotlib.pyplot as plt +from datetime import datetime +import requests +from io import BytesIO + +# ### ARIMA Example 1: Arima +# +# As can be seen in the graphs from Example 2, the Wholesale price index +# (WPI) is growing over time (i.e. is not stationary). Therefore an ARMA +# model is not a good specification. In this first example, we consider a +# model where the original time series is assumed to be integrated of order +# 1, so that the difference is assumed to be stationary, and fit a model +# with one autoregressive lag and one moving average lag, as well as an +# intercept term. +# +# The postulated data process is then: +# +# $$ +# \Delta y_t = c + \phi_1 \Delta y_{t-1} + \theta_1 \epsilon_{t-1} + +# \epsilon_{t} +# $$ +# +# where $c$ is the intercept of the ARMA model, $\Delta$ is the first- +# difference operator, and we assume $\epsilon_{t} \sim N(0, \sigma^2)$. +# This can be rewritten to emphasize lag polynomials as (this will be useful +# in example 2, below): +# +# $$ +# (1 - \phi_1 L ) \Delta y_t = c + (1 + \theta_1 L) \epsilon_{t} +# $$ +# +# where $L$ is the lag operator. +# +# Notice that one difference between the Stata output and the output below +# is that Stata estimates the following model: +# +# $$ +# (\Delta y_t - \beta_0) = \phi_1 ( \Delta y_{t-1} - \beta_0) + \theta_1 +# \epsilon_{t-1} + \epsilon_{t} +# $$ +# +# where $\beta_0$ is the mean of the process $y_t$. This model is +# equivalent to the one estimated in the Statsmodels SARIMAX class, but the +# interpretation is different. To see the equivalence, note that: +# +# $$ +# (\Delta y_t - \beta_0) = \phi_1 ( \Delta y_{t-1} - \beta_0) + \theta_1 +# \epsilon_{t-1} + \epsilon_{t} \\ +# \Delta y_t = (1 - \phi_1) \beta_0 + \phi_1 \Delta y_{t-1} + \theta_1 +# \epsilon_{t-1} + \epsilon_{t} +# $$ +# +# so that $c = (1 - \phi_1) \beta_0$. + +# Dataset +wpi1 = requests.get('https://www.stata-press.com/data/r12/wpi1.dta').content +data = pd.read_stata(BytesIO(wpi1)) +data.index = data.t + +# Fit the model +mod = sm.tsa.statespace.SARIMAX(data['wpi'], trend='c', order=(1, 1, 1)) +res = mod.fit(disp=False) +print(res.summary()) + +# Thus the maximum likelihood estimates imply that for the process above, +# we have: +# +# $$ +# \Delta y_t = 0.1050 + 0.8740 \Delta y_{t-1} - 0.4206 \epsilon_{t-1} + +# \epsilon_{t} +# $$ +# +# where $\epsilon_{t} \sim N(0, 0.5226)$. Finally, recall that $c = (1 - +# \phi_1) \beta_0$, and here $c = 0.1050$ and $\phi_1 = 0.8740$. To compare +# with the output from Stata, we could calculate the mean: +# +# $$\beta_0 = \frac{c}{1 - \phi_1} = \frac{0.1050}{1 - 0.8740} = 0.83$$ +# +# **Note**: these values are slightly different from the values in the +# Stata documentation because the optimizer in Statsmodels has found +# parameters here that yield a higher likelihood. Nonetheless, they are very +# close. + +# ### ARIMA Example 2: Arima with additive seasonal effects +# +# This model is an extension of that from example 1. Here the data is +# assumed to follow the process: +# +# $$ +# \Delta y_t = c + \phi_1 \Delta y_{t-1} + \theta_1 \epsilon_{t-1} + +# \theta_4 \epsilon_{t-4} + \epsilon_{t} +# $$ +# +# The new part of this model is that there is allowed to be a annual +# seasonal effect (it is annual even though the periodicity is 4 because the +# dataset is quarterly). The second difference is that this model uses the +# log of the data rather than the level. +# +# Before estimating the dataset, graphs showing: +# +# 1. The time series (in logs) +# 2. The first difference of the time series (in logs) +# 3. The autocorrelation function +# 4. The partial autocorrelation function. +# +# From the first two graphs, we note that the original time series does +# not appear to be stationary, whereas the first-difference does. This +# supports either estimating an ARMA model on the first-difference of the +# data, or estimating an ARIMA model with 1 order of integration (recall +# that we are taking the latter approach). The last two graphs support the +# use of an ARMA(1,1,1) model. + +# Dataset +data = pd.read_stata(BytesIO(wpi1)) +data.index = data.t +data['ln_wpi'] = np.log(data['wpi']) +data['D.ln_wpi'] = data['ln_wpi'].diff() + +# Graph data +fig, axes = plt.subplots(1, 2, figsize=(15, 4)) + +# Levels +axes[0].plot(data.index._mpl_repr(), data['wpi'], '-') +axes[0].set(title='US Wholesale Price Index') + +# Log difference +axes[1].plot(data.index._mpl_repr(), data['D.ln_wpi'], '-') +axes[1].hlines(0, data.index[0], data.index[-1], 'r') +axes[1].set(title='US Wholesale Price Index - difference of logs') + +# Graph data +fig, axes = plt.subplots(1, 2, figsize=(15, 4)) + +fig = sm.graphics.tsa.plot_acf(data.iloc[1:]['D.ln_wpi'], lags=40, ax=axes[0]) +fig = sm.graphics.tsa.plot_pacf(data.iloc[1:]['D.ln_wpi'], lags=40, ax=axes[1]) + +# To understand how to specify this model in Statsmodels, first recall +# that from example 1 we used the following code to specify the ARIMA(1,1,1) +# model: +# +# ```python +# mod = sm.tsa.statespace.SARIMAX(data['wpi'], trend='c', order=(1,1,1)) +# ``` +# +# The `order` argument is a tuple of the form `(AR specification, +# Integration order, MA specification)`. The integration order must be an +# integer (for example, here we assumed one order of integration, so it was +# specified as 1. In a pure ARMA model where the underlying data is already +# stationary, it would be 0). +# +# For the AR specification and MA specification components, there are two +# possiblities. The first is to specify the **maximum degree** of the +# corresponding lag polynomial, in which case the component is an integer. +# For example, if we wanted to specify an ARIMA(1,1,4) process, we would +# use: +# +# ```python +# mod = sm.tsa.statespace.SARIMAX(data['wpi'], trend='c', order=(1,1,4)) +# ``` +# +# and the corresponding data process would be: +# +# $$ +# y_t = c + \phi_1 y_{t-1} + \theta_1 \epsilon_{t-1} + \theta_2 +# \epsilon_{t-2} + \theta_3 \epsilon_{t-3} + \theta_4 \epsilon_{t-4} + +# \epsilon_{t} +# $$ +# +# or +# +# $$ +# (1 - \phi_1 L)\Delta y_t = c + (1 + \theta_1 L + \theta_2 L^2 + \theta_3 +# L^3 + \theta_4 L^4) \epsilon_{t} +# $$ +# +# When the specification parameter is given as a maximum degree of the lag +# polynomial, it implies that all polynomial terms up to that degree are +# included. Notice that this is *not* the model we want to use, because it +# would include terms for $\epsilon_{t-2}$ and $\epsilon_{t-3}$, which we +# don't want here. +# +# What we want is a polynomial that has terms for the 1st and 4th degrees, +# but leaves out the 2nd and 3rd terms. To do that, we need to provide a +# tuple for the specifiation parameter, where the tuple describes **the lag +# polynomial itself**. In particular, here we would want to use: +# +# ```python +# ar = 1 # this is the maximum degree specification +# ma = (1,0,0,1) # this is the lag polynomial specification +# mod = sm.tsa.statespace.SARIMAX(data['wpi'], trend='c', +# order=(ar,1,ma))) +# ``` +# +# This gives the following form for the process of the data: +# +# $$ +# \Delta y_t = c + \phi_1 \Delta y_{t-1} + \theta_1 \epsilon_{t-1} + +# \theta_4 \epsilon_{t-4} + \epsilon_{t} \\ +# (1 - \phi_1 L)\Delta y_t = c + (1 + \theta_1 L + \theta_4 L^4) +# \epsilon_{t} +# $$ +# +# which is what we want. + +# Fit the model +mod = sm.tsa.statespace.SARIMAX(data['ln_wpi'], trend='c', order=(1, 1, 1)) +res = mod.fit(disp=False) +print(res.summary()) + +# ### ARIMA Example 3: Airline Model +# +# In the previous example, we included a seasonal effect in an *additive* +# way, meaning that we added a term allowing the process to depend on the +# 4th MA lag. It may be instead that we want to model a seasonal effect in a +# multiplicative way. We often write the model then as an ARIMA $(p,d,q) +# \times (P,D,Q)_s$, where the lowercast letters indicate the specification +# for the non-seasonal component, and the uppercase letters indicate the +# specification for the seasonal component; $s$ is the periodicity of the +# seasons (e.g. it is often 4 for quarterly data or 12 for monthly data). +# The data process can be written generically as: +# +# $$ +# \phi_p (L) \tilde \phi_P (L^s) \Delta^d \Delta_s^D y_t = A(t) + \theta_q +# (L) \tilde \theta_Q (L^s) \epsilon_t +# $$ +# +# where: +# +# - $\phi_p (L)$ is the non-seasonal autoregressive lag polynomial +# - $\tilde \phi_P (L^s)$ is the seasonal autoregressive lag polynomial +# - $\Delta^d \Delta_s^D y_t$ is the time series, differenced $d$ times, +# and seasonally differenced $D$ times. +# - $A(t)$ is the trend polynomial (including the intercept) +# - $\theta_q (L)$ is the non-seasonal moving average lag polynomial +# - $\tilde \theta_Q (L^s)$ is the seasonal moving average lag polynomial +# +# sometimes we rewrite this as: +# +# $$ +# \phi_p (L) \tilde \phi_P (L^s) y_t^* = A(t) + \theta_q (L) \tilde +# \theta_Q (L^s) \epsilon_t +# $$ +# +# where $y_t^* = \Delta^d \Delta_s^D y_t$. This emphasizes that just as in +# the simple case, after we take differences (here both non-seasonal and +# seasonal) to make the data stationary, the resulting model is just an ARMA +# model. +# +# As an example, consider the airline model ARIMA $(2,1,0) \times +# (1,1,0)_{12}$, with an intercept. The data process can be written in the +# form above as: +# +# $$ +# (1 - \phi_1 L - \phi_2 L^2) (1 - \tilde \phi_1 L^{12}) \Delta +# \Delta_{12} y_t = c + \epsilon_t +# $$ +# +# Here, we have: +# +# - $\phi_p (L) = (1 - \phi_1 L - \phi_2 L^2)$ +# - $\tilde \phi_P (L^s) = (1 - \phi_1 L^12)$ +# - $d = 1, D = 1, s=12$ indicating that $y_t^*$ is derived from $y_t$ by +# taking first-differences and then taking 12-th differences. +# - $A(t) = c$ is the *constant* trend polynomial (i.e. just an intercept) +# - $\theta_q (L) = \tilde \theta_Q (L^s) = 1$ (i.e. there is no moving +# average effect) +# +# It may still be confusing to see the two lag polynomials in front of the +# time-series variable, but notice that we can multiply the lag polynomials +# together to get the following model: +# +# $$ +# (1 - \phi_1 L - \phi_2 L^2 - \tilde \phi_1 L^{12} + \phi_1 \tilde \phi_1 +# L^{13} + \phi_2 \tilde \phi_1 L^{14} ) y_t^* = c + \epsilon_t +# $$ +# +# which can be rewritten as: +# +# $$ +# y_t^* = c + \phi_1 y_{t-1}^* + \phi_2 y_{t-2}^* + \tilde \phi_1 +# y_{t-12}^* - \phi_1 \tilde \phi_1 y_{t-13}^* - \phi_2 \tilde \phi_1 +# y_{t-14}^* + \epsilon_t +# $$ +# +# This is similar to the additively seasonal model from example 2, but the +# coefficients in front of the autoregressive lags are actually combinations +# of the underlying seasonal and non-seasonal parameters. +# +# Specifying the model in Statsmodels is done simply by adding the +# `seasonal_order` argument, which accepts a tuple of the form `(Seasonal AR +# specification, Seasonal Integration order, Seasonal MA, Seasonal +# periodicity)`. The seasonal AR and MA specifications, as before, can be +# expressed as a maximum polynomial degree or as the lag polynomial itself. +# Seasonal periodicity is an integer. +# +# For the airline model ARIMA $(2,1,0) \times (1,1,0)_{12}$ with an +# intercept, the command is: +# +# ```python +# mod = sm.tsa.statespace.SARIMAX(data['lnair'], order=(2,1,0), +# seasonal_order=(1,1,0,12)) +# ``` + +# Dataset +air2 = requests.get('https://www.stata-press.com/data/r12/air2.dta').content +data = pd.read_stata(BytesIO(air2)) +data.index = pd.date_range( + start=datetime(data.time[0], 1, 1), periods=len(data), freq='MS') +data['lnair'] = np.log(data['air']) + +# Fit the model +mod = sm.tsa.statespace.SARIMAX( + data['lnair'], + order=(2, 1, 0), + seasonal_order=(1, 1, 0, 12), + simple_differencing=True) +res = mod.fit(disp=False) +print(res.summary()) + +# Notice that here we used an additional argument +# `simple_differencing=True`. This controls how the order of integration is +# handled in ARIMA models. If `simple_differencing=True`, then the time +# series provided as `endog` is literatlly differenced and an ARMA model is +# fit to the resulting new time series. This implies that a number of +# initial periods are lost to the differencing process, however it may be +# necessary either to compare results to other packages (e.g. Stata's +# `arima` always uses simple differencing) or if the seasonal periodicity +# is large. +# +# The default is `simple_differencing=False`, in which case the +# integration component is implemented as part of the state space +# formulation, and all of the original data can be used in estimation. + +# ### ARIMA Example 4: ARMAX (Friedman) +# +# This model demonstrates the use of explanatory variables (the X part of +# ARMAX). When exogenous regressors are included, the SARIMAX module uses +# the concept of "regression with SARIMA errors" (see +# http://robjhyndman.com/hyndsight/arimax/ for details of regression with +# ARIMA errors versus alternative specifications), so that the model is +# specified as: +# +# $$ +# y_t = \beta_t x_t + u_t \\ +# \phi_p (L) \tilde \phi_P (L^s) \Delta^d \Delta_s^D u_t = A(t) + +# \theta_q (L) \tilde \theta_Q (L^s) \epsilon_t +# $$ +# +# Notice that the first equation is just a linear regression, and the +# second equation just describes the process followed by the error component +# as SARIMA (as was described in example 3). One reason for this +# specification is that the estimated parameters have their natural +# interpretations. +# +# This specification nests many simpler specifications. For example, +# regression with AR(2) errors is: +# +# $$ +# y_t = \beta_t x_t + u_t \\ +# (1 - \phi_1 L - \phi_2 L^2) u_t = A(t) + \epsilon_t +# $$ +# +# The model considered in this example is regression with ARMA(1,1) +# errors. The process is then written: +# +# $$ +# \text{consump}_t = \beta_0 + \beta_1 \text{m2}_t + u_t \\ +# (1 - \phi_1 L) u_t = (1 - \theta_1 L) \epsilon_t +# $$ +# +# Notice that $\beta_0$ is, as described in example 1 above, *not* the +# same thing as an intercept specified by `trend='c'`. Whereas in the +# examples above we estimated the intercept of the model via the trend +# polynomial, here, we demonstrate how to estimate $\beta_0$ itself by +# adding a constant to the exogenous dataset. In the output, the $beta_0$ is +# called `const`, whereas above the intercept $c$ was called `intercept` in +# the output. + +# Dataset +friedman2 = requests.get( + 'https://www.stata-press.com/data/r12/friedman2.dta').content +data = pd.read_stata(BytesIO(friedman2)) +data.index = data.time + +# Variables +endog = data.loc['1959':'1981', 'consump'] +exog = sm.add_constant(data.loc['1959':'1981', 'm2']) + +# Fit the model +mod = sm.tsa.statespace.SARIMAX(endog, exog, order=(1, 0, 1)) +res = mod.fit(disp=False) +print(res.summary()) + +# ### ARIMA Postestimation: Example 1 - Dynamic Forecasting +# +# Here we describe some of the post-estimation capabilities of +# Statsmodels' SARIMAX. +# +# First, using the model from example, we estimate the parameters using +# data that *excludes the last few observations* (this is a little +# artificial as an example, but it allows considering performance of out-of- +# sample forecasting and facilitates comparison to Stata's documentation). + +# Dataset +raw = pd.read_stata(BytesIO(friedman2)) +raw.index = raw.time +data = raw.loc[:'1981'] + +# Variables +endog = data.loc['1959':, 'consump'] +exog = sm.add_constant(data.loc['1959':, 'm2']) +nobs = endog.shape[0] + +# Fit the model +mod = sm.tsa.statespace.SARIMAX( + endog.loc[:'1978-01-01'], exog=exog.loc[:'1978-01-01'], order=(1, 0, 1)) +fit_res = mod.fit(disp=False) +print(fit_res.summary()) + +# Next, we want to get results for the full dataset but using the +# estimated parameters (on a subset of the data). + +mod = sm.tsa.statespace.SARIMAX(endog, exog=exog, order=(1, 0, 1)) +res = mod.filter(fit_res.params) + +# The `predict` command is first applied here to get in-sample +# predictions. We use the `full_results=True` argument to allow us to +# calculate confidence intervals (the default output of `predict` is just +# the predicted values). +# +# With no other arguments, `predict` returns the one-step-ahead in-sample +# predictions for the entire sample. + +# In-sample one-step-ahead predictions +predict = res.get_prediction() +predict_ci = predict.conf_int() + +# We can also get *dynamic predictions*. One-step-ahead prediction uses +# the true values of the endogenous values at each step to predict the next +# in-sample value. Dynamic predictions use one-step-ahead prediction up to +# some point in the dataset (specified by the `dynamic` argument); after +# that, the previous *predicted* endogenous values are used in place of the +# true endogenous values for each new predicted element. +# +# The `dynamic` argument is specified to be an *offset* relative to the +# `start` argument. If `start` is not specified, it is assumed to be `0`. +# +# Here we perform dynamic prediction starting in the first quarter of +# 1978. + +# Dynamic predictions +predict_dy = res.get_prediction(dynamic='1978-01-01') +predict_dy_ci = predict_dy.conf_int() + +# We can graph the one-step-ahead and dynamic predictions (and the +# corresponding confidence intervals) to see their relative performance. +# Notice that up to the point where dynamic prediction begins (1978:Q1), the +# two are the same. + +# Graph +fig, ax = plt.subplots(figsize=(9, 4)) +npre = 4 +ax.set( + title='Personal consumption', xlabel='Date', ylabel='Billions of dollars') + +# Plot data points +data.loc['1977-07-01':, 'consump'].plot(ax=ax, style='o', label='Observed') + +# Plot predictions +predict.predicted_mean.loc['1977-07-01':].plot( + ax=ax, style='r--', label='One-step-ahead forecast') +ci = predict_ci.loc['1977-07-01':] +ax.fill_between(ci.index, ci.iloc[:, 0], ci.iloc[:, 1], color='r', alpha=0.1) +predict_dy.predicted_mean.loc['1977-07-01':].plot( + ax=ax, style='g', label='Dynamic forecast (1978)') +ci = predict_dy_ci.loc['1977-07-01':] +ax.fill_between(ci.index, ci.iloc[:, 0], ci.iloc[:, 1], color='g', alpha=0.1) + +legend = ax.legend(loc='lower right') + +# Finally, graph the prediction *error*. It is obvious that, as one would +# suspect, one-step-ahead prediction is considerably better. + +# Prediction error + +# Graph +fig, ax = plt.subplots(figsize=(9, 4)) +npre = 4 +ax.set(title='Forecast error', xlabel='Date', ylabel='Forecast - Actual') + +# In-sample one-step-ahead predictions and 95% confidence intervals +predict_error = predict.predicted_mean - endog +predict_error.loc['1977-10-01':].plot(ax=ax, label='One-step-ahead forecast') +ci = predict_ci.loc['1977-10-01':].copy() +ci.iloc[:, 0] -= endog.loc['1977-10-01':] +ci.iloc[:, 1] -= endog.loc['1977-10-01':] +ax.fill_between(ci.index, ci.iloc[:, 0], ci.iloc[:, 1], alpha=0.1) + +# Dynamic predictions and 95% confidence intervals +predict_dy_error = predict_dy.predicted_mean - endog +predict_dy_error.loc['1977-10-01':].plot( + ax=ax, style='r', label='Dynamic forecast (1978)') +ci = predict_dy_ci.loc['1977-10-01':].copy() +ci.iloc[:, 0] -= endog.loc['1977-10-01':] +ci.iloc[:, 1] -= endog.loc['1977-10-01':] +ax.fill_between(ci.index, ci.iloc[:, 0], ci.iloc[:, 1], color='r', alpha=0.1) + +legend = ax.legend(loc='lower left') +legend.get_frame().set_facecolor('w') diff --git a/examples/python/statespace_seasonal.py b/examples/python/statespace_seasonal.py new file mode 100644 index 0000000..5a59c7d --- /dev/null +++ b/examples/python/statespace_seasonal.py @@ -0,0 +1,411 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook statespace_seasonal.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Seasonality in time series data +# +# Consider the problem of modeling time series data with multiple seasonal +# components with different perioidicities. Let us take the time series +# $y_t$ and decompose it explicitly to have a level component and two +# seasonal components. +# +# $$ +# y_t = \mu_t + \gamma^{(1)}_t + \gamma^{(2)}_t +# $$ +# +# where $\mu_t$ represents the trend or level, $\gamma^{(1)}_t$ represents +# a seasonal component with a relatively short period, and $\gamma^{(2)}_t$ +# represents another seasonal component of longer period. We will have a +# fixed intercept term for our level and consider both $\gamma^{(2)}_t$ and +# $\gamma^{(2)}_t$ to be stochastic so that the seasonal patterns can vary +# over time. +# +# In this notebook, we will generate synthetic data conforming to this +# model and showcase modeling of the seasonal terms in a few different ways +# under the unobserved components modeling framework. + +import numpy as np +import pandas as pd +import statsmodels.api as sm +import matplotlib.pyplot as plt + +# ### Synthetic data creation +# +# We will create data with multiple seasonal patterns by following +# equations (3.7) and (3.8) in Durbin and Koopman (2012). We will simulate +# 300 periods and two seasonal terms parameterized in the frequency domain +# having periods 10 and 100, respectively, and 3 and 2 number of harmonics, +# respectively. Further, the variances of their stochastic parts are 4 and +# 9, respecively. + + +# First we'll simulate the synthetic data +def simulate_seasonal_term(periodicity, + total_cycles, + noise_std=1., + harmonics=None): + duration = periodicity * total_cycles + assert duration == int(duration) + duration = int(duration) + harmonics = harmonics if harmonics else int(np.floor(periodicity / 2)) + + lambda_p = 2 * np.pi / float(periodicity) + + gamma_jt = noise_std * np.random.randn((harmonics)) + gamma_star_jt = noise_std * np.random.randn((harmonics)) + + total_timesteps = 100 * duration # Pad for burn in + series = np.zeros(total_timesteps) + for t in range(total_timesteps): + gamma_jtp1 = np.zeros_like(gamma_jt) + gamma_star_jtp1 = np.zeros_like(gamma_star_jt) + for j in range(1, harmonics + 1): + cos_j = np.cos(lambda_p * j) + sin_j = np.sin(lambda_p * j) + gamma_jtp1[j - 1] = ( + gamma_jt[j - 1] * cos_j + gamma_star_jt[j - 1] * sin_j + + noise_std * np.random.randn()) + gamma_star_jtp1[j - 1] = ( + -gamma_jt[j - 1] * sin_j + gamma_star_jt[j - 1] * cos_j + + noise_std * np.random.randn()) + series[t] = np.sum(gamma_jtp1) + gamma_jt = gamma_jtp1 + gamma_star_jt = gamma_star_jtp1 + wanted_series = series[-duration:] # Discard burn in + + return wanted_series + + +duration = 100 * 3 +periodicities = [10, 100] +num_harmonics = [3, 2] +std = np.array([2, 3]) +np.random.seed(8678309) + +terms = [] +for ix, _ in enumerate(periodicities): + s = simulate_seasonal_term( + periodicities[ix], + duration / periodicities[ix], + harmonics=num_harmonics[ix], + noise_std=std[ix]) + terms.append(s) +terms.append(np.ones_like(terms[0]) * 10.) +series = pd.Series(np.sum(terms, axis=0)) +df = pd.DataFrame(data={ + 'total': series, + '10(3)': terms[0], + '100(2)': terms[1], + 'level': terms[2] +}) +h1, = plt.plot(df['total']) +h2, = plt.plot(df['10(3)']) +h3, = plt.plot(df['100(2)']) +h4, = plt.plot(df['level']) +plt.legend(['total', '10(3)', '100(2)', 'level']) +plt.show() + +# ### Unobserved components (frequency domain modeling) +# +# The next method is an unobserved components model, where the trend is +# modeled as a fixed intercept and the seasonal components are modeled using +# trigonometric functions with primary periodicities of 10 and 100, +# respectively, and number of harmonics 3 and 2, respecively. Note that +# this is the correct, generating model. The process for the time series can +# be written as: +# +# $$ +# \begin{align} +# y_t & = \mu_t + \gamma^{(1)}_t + \gamma^{(2)}_t + \epsilon_t\\ +# \mu_{t+1} & = \mu_t \\ +# \gamma^{(1)}_{t} &= \sum_{j=1}^2 \gamma^{(1)}_{j, t} \\ +# \gamma^{(2)}_{t} &= \sum_{j=1}^3 \gamma^{(2)}_{j, t}\\ +# \gamma^{(1)}_{j, t+1} &= \gamma^{(1)}_{j, t}\cos(\lambda_j) + \gamma^{*, +# (1)}_{j, t}\sin(\lambda_j) + \omega^{(1)}_{j,t}, ~j = 1, 2, 3\\ +# \gamma^{*, (1)}_{j, t+1} &= -\gamma^{(1)}_{j, t}\sin(\lambda_j) + +# \gamma^{*, (1)}_{j, t}\cos(\lambda_j) + \omega^{*, (1)}_{j, t}, ~j = 1, 2, +# 3\\ +# \gamma^{(2)}_{j, t+1} &= \gamma^{(2)}_{j, t}\cos(\lambda_j) + \gamma^{*, +# (2)}_{j, t}\sin(\lambda_j) + \omega^{(2)}_{j,t}, ~j = 1, 2\\ +# \gamma^{*, (2)}_{j, t+1} &= -\gamma^{(2)}_{j, t}\sin(\lambda_j) + +# \gamma^{*, (2)}_{j, t}\cos(\lambda_j) + \omega^{*, (2)}_{j, t}, ~j = 1, +# 2\\ +# \end{align} +# $$ +# $$ +# +# where $\epsilon_t$ is white noise, $\omega^{(1)}_{j,t}$ are i.i.d. $N(0, +# \sigma^2_1)$, and $\omega^{(2)}_{j,t}$ are i.i.d. $N(0, \sigma^2_2)$, +# where $\sigma_1 = 2.$ + +model = sm.tsa.UnobservedComponents( + series.values, + level='fixed intercept', + freq_seasonal=[{ + 'period': 10, + 'harmonics': 3 + }, { + 'period': 100, + 'harmonics': 2 + }]) +res_f = model.fit(disp=False) +print(res_f.summary()) +# The first state variable holds our estimate of the intercept +print("fixed intercept estimated as {0:.3f}".format( + res_f.smoother_results.smoothed_state[0, -1:][0])) + +res_f.plot_components() +plt.show() + +model.ssm.transition[:, :, 0] + +# Observe that the fitted variances are pretty close to the true variances +# of 4 and 9. Further, the individual seasonal components look pretty close +# to the true seasonal components. The smoothed level term is kind of close +# to the true level of 10. Finally, our diagnostics look solid; the test +# statistics are small enough to fail to reject our three tests. + +# ### Unobserved components (mixed time and frequency domain modeling) +# +# The second method is an unobserved components model, where the trend is +# modeled as a fixed intercept and the seasonal components are modeled using +# 10 constants summing to 0 and trigonometric functions with a primary +# periodicities of 100 with 2 harmonics total. Note that this isn't the +# generating model, as it presupposes that there are more state errors for +# the shorter seasonal component than in reality. The process for the time +# series can be written as: +# +# $$ +# \begin{align} +# y_t & = \mu_t + \gamma^{(1)}_t + \gamma^{(2)}_t + \epsilon_t\\ +# \mu_{t+1} & = \mu_t \\ +# \gamma^{(1)}_{t + 1} &= - \sum_{j=1}^9 \gamma^{(1)}_{t + 1 - j} + +# \omega^{(1)}_t\\ +# \gamma^{(2)}_{j, t+1} &= \gamma^{(2)}_{j, t}\cos(\lambda_j) + \gamma^{*, +# (2)}_{j, t}\sin(\lambda_j) + \omega^{(2)}_{j,t}, ~j = 1, 2\\ +# \gamma^{*, (2)}_{j, t+1} &= -\gamma^{(2)}_{j, t}\sin(\lambda_j) + +# \gamma^{*, (2)}_{j, t}\cos(\lambda_j) + \omega^{*, (2)}_{j, t}, ~j = 1, +# 2\\ +# \end{align} +# $$ +# +# where $\epsilon_t$ is white noise, $\omega^{(1)}_{t}$ are i.i.d. $N(0, +# \sigma^2_1)$, and $\omega^{(2)}_{j,t}$ are i.i.d. $N(0, \sigma^2_2)$. + +model = sm.tsa.UnobservedComponents( + series, + level='fixed intercept', + seasonal=10, + freq_seasonal=[{ + 'period': 100, + 'harmonics': 2 + }]) +res_tf = model.fit(disp=False) +print(res_tf.summary()) +# The first state variable holds our estimate of the intercept +print("fixed intercept estimated as {0:.3f}".format( + res_tf.smoother_results.smoothed_state[0, -1:][0])) + +res_tf.plot_components() +plt.show() + +# The plotted components look good. However, the estimated variance of +# the second seasonal term is inflated from reality. Additionally, we +# reject the Ljung-Box statistic, indicating we may have remaining +# autocorrelation after accounting for our components. + +# ### Unobserved components (lazy frequency domain modeling) +# +# The third method is an unobserved components model with a fixed +# intercept and one seasonal component, which is modeled using trigonometric +# functions with primary periodicity 100 and 50 harmonics. Note that this +# isn't the generating model, as it presupposes that there are more +# harmonics then in reality. Because the variances are tied together, we +# are not able to drive the estimated covariance of the non-existent +# harmonics to 0. What is lazy about this model specification is that we +# have not bothered to specify the two different seasonal components and +# instead chosen to model them using a single component with enough +# harmonics to cover both. We will not be able to capture any differences +# in variances between the two true components. The process for the time +# series can be written as: +# +# $$ +# \begin{align} +# y_t & = \mu_t + \gamma^{(1)}_t + \epsilon_t\\ +# \mu_{t+1} &= \mu_t\\ +# \gamma^{(1)}_{t} &= \sum_{j=1}^{50}\gamma^{(1)}_{j, t}\\ +# \gamma^{(1)}_{j, t+1} &= \gamma^{(1)}_{j, t}\cos(\lambda_j) + \gamma^{*, +# (1)}_{j, t}\sin(\lambda_j) + \omega^{(1}_{j,t}, ~j = 1, 2, \dots, 50\\ +# \gamma^{*, (1)}_{j, t+1} &= -\gamma^{(1)}_{j, t}\sin(\lambda_j) + +# \gamma^{*, (1)}_{j, t}\cos(\lambda_j) + \omega^{*, (1)}_{j, t}, ~j = 1, 2, +# \dots, 50\\ +# \end{align} +# $$ +# +# where $\epsilon_t$ is white noise, $\omega^{(1)}_{t}$ are i.i.d. $N(0, +# \sigma^2_1)$. + +model = sm.tsa.UnobservedComponents( + series, level='fixed intercept', freq_seasonal=[{ + 'period': 100 + }]) +res_lf = model.fit(disp=False) +print(res_lf.summary()) +# The first state variable holds our estimate of the intercept +print("fixed intercept estimated as {0:.3f}".format( + res_lf.smoother_results.smoothed_state[0, -1:][0])) + +res_lf.plot_components() +plt.show() + +# Note that one of our diagnostic tests would be rejected at the .05 +# level. + +# ### Unobserved components (lazy time domain seasonal modeling) +# +# The fourth method is an unobserved components model with a fixed +# intercept and a single seasonal component modeled using a time-domain +# seasonal model of 100 constants. The process for the time series can be +# written as: +# +# $$ +# \begin{align} +# y_t & =\mu_t + \gamma^{(1)}_t + \epsilon_t\\ +# \mu_{t+1} &= \mu_{t} \\ +# \gamma^{(1)}_{t + 1} &= - \sum_{j=1}^{99} \gamma^{(1)}_{t + 1 - j} + +# \omega^{(1)}_t\\ +# \end{align} +# $$ +# +# where $\epsilon_t$ is white noise, $\omega^{(1)}_{t}$ are i.i.d. $N(0, +# \sigma^2_1)$. + +model = sm.tsa.UnobservedComponents( + series, level='fixed intercept', seasonal=100) +res_lt = model.fit(disp=False) +print(res_lt.summary()) +# The first state variable holds our estimate of the intercept +print("fixed intercept estimated as {0:.3f}".format( + res_lt.smoother_results.smoothed_state[0, -1:][0])) + +res_lt.plot_components() +plt.show() + +# The seasonal component itself looks good--it is the primary singal. The +# estimated variance of the seasonal term is very high ($>10^5$), leading to +# a lot of uncertainty in our one-step-ahead predictions and slow +# responsiveness to new data, as evidenced by large errors in one-step ahead +# predictions and observations. Finally, all three of our diagnostic tests +# were rejected. + +# ### Comparison of filtered estimates +# +# The plots below show that explicitly modeling the individual components +# results in the filtered state being close to the true state within roughly +# half a period. The lazy models took longer (almost a full period) to do +# the same on the combined true state. + +# Assign better names for our seasonal terms +true_seasonal_10_3 = terms[0] +true_seasonal_100_2 = terms[1] +true_sum = true_seasonal_10_3 + true_seasonal_100_2 + +time_s = np.s_[:50] # After this they basically agree +fig1 = plt.figure() +ax1 = fig1.add_subplot(111) +h1, = ax1.plot( + series.index[time_s], + res_f.freq_seasonal[0].filtered[time_s], + label='Double Freq. Seas') +h2, = ax1.plot( + series.index[time_s], + res_tf.seasonal.filtered[time_s], + label='Mixed Domain Seas') +h3, = ax1.plot( + series.index[time_s], + true_seasonal_10_3[time_s], + label='True Seasonal 10(3)') +plt.legend( + [h1, h2, h3], ['Double Freq. Seasonal', 'Mixed Domain Seasonal', 'Truth'], + loc=2) +plt.title('Seasonal 10(3) component') +plt.show() + +time_s = np.s_[:50] # After this they basically agree +fig2 = plt.figure() +ax2 = fig2.add_subplot(111) +h21, = ax2.plot( + series.index[time_s], + res_f.freq_seasonal[1].filtered[time_s], + label='Double Freq. Seas') +h22, = ax2.plot( + series.index[time_s], + res_tf.freq_seasonal[0].filtered[time_s], + label='Mixed Domain Seas') +h23, = ax2.plot( + series.index[time_s], + true_seasonal_100_2[time_s], + label='True Seasonal 100(2)') +plt.legend( + [h21, h22, h23], + ['Double Freq. Seasonal', 'Mixed Domain Seasonal', 'Truth'], + loc=2) +plt.title('Seasonal 100(2) component') +plt.show() + +time_s = np.s_[:100] + +fig3 = plt.figure() +ax3 = fig3.add_subplot(111) +h31, = ax3.plot( + series.index[time_s], + res_f.freq_seasonal[1].filtered[time_s] + + res_f.freq_seasonal[0].filtered[time_s], + label='Double Freq. Seas') +h32, = ax3.plot( + series.index[time_s], + res_tf.freq_seasonal[0].filtered[time_s] + + res_tf.seasonal.filtered[time_s], + label='Mixed Domain Seas') +h33, = ax3.plot( + series.index[time_s], true_sum[time_s], label='True Seasonal 100(2)') +h34, = ax3.plot( + series.index[time_s], + res_lf.freq_seasonal[0].filtered[time_s], + label='Lazy Freq. Seas') +h35, = ax3.plot( + series.index[time_s], + res_lt.seasonal.filtered[time_s], + label='Lazy Time Seas') + +plt.legend( + [h31, h32, h33, h34, h35], [ + 'Double Freq. Seasonal', 'Mixed Domain Seasonal', 'Truth', + 'Lazy Freq. Seas', 'Lazy Time Seas' + ], + loc=1) +plt.title('Seasonal components combined') +plt.show() + +# ##### Conclusions +# +# In this notebook, we simulated a time series with two seasonal +# components of different periods. We modeled them using structural time +# series models with (a) two frequency domain components of correct periods +# and numbers of harmonics, (b) time domain seasonal component for the +# shorter term and a frequency domain term with correct period and number of +# harmonics, (c) a single frequency domain term with the longer period and +# full number of harmonics, and (d) a single time domain term with the +# longer period. We saw a variety of diagnostic results, with only the +# correct generating model, (a), failing to reject any of the tests. Thus, +# more flexible seasonal modeling allowing for multiple components with +# specifiable harmonics can be a useful tool for time series modeling. +# Finally, we can represent seasonal components with fewer total states in +# this way, allowing for the user to attempt to make the bias-variance +# tradeoff themselves instead of being forced to choose "lazy" models, which +# use a large number of states and incur additional variance as a result. diff --git a/examples/python/statespace_structural_harvey_jaeger.py b/examples/python/statespace_structural_harvey_jaeger.py new file mode 100644 index 0000000..232f8ee --- /dev/null +++ b/examples/python/statespace_structural_harvey_jaeger.py @@ -0,0 +1,413 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook statespace_structural_harvey_jaeger.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Detrending, Stylized Facts and the Business Cycle +# +# In an influential article, Harvey and Jaeger (1993) described the use of +# unobserved components models (also known as "structural time series +# models") to derive stylized facts of the business cycle. +# +# Their paper begins: +# +# "Establishing the 'stylized facts' associated with a set of time +# series is widely considered a crucial step +# in macroeconomic research ... For such facts to be useful they +# should (1) be consistent with the stochastic +# properties of the data and (2) present meaningful information." +# +# In particular, they make the argument that these goals are often better +# met using the unobserved components approach rather than the popular +# Hodrick-Prescott filter or Box-Jenkins ARIMA modeling techniques. +# +# Statsmodels has the ability to perform all three types of analysis, and +# below we follow the steps of their paper, using a slightly updated +# dataset. + +import numpy as np +import pandas as pd +import statsmodels.api as sm +import matplotlib.pyplot as plt + +from IPython.display import display, Latex + +# ## Unobserved Components +# +# The unobserved components model available in Statsmodels can be written +# as: +# +# $$ +# y_t = \underbrace{\mu_{t}}_{\text{trend}} + +# \underbrace{\gamma_{t}}_{\text{seasonal}} + +# \underbrace{c_{t}}_{\text{cycle}} + \sum_{j=1}^k \underbrace{\beta_j +# x_{jt}}_{\text{explanatory}} + +# \underbrace{\varepsilon_t}_{\text{irregular}} +# $$ +# +# see Durbin and Koopman 2012, Chapter 3 for notation and additional +# details. Notice that different specifications for the different individual +# components can support a wide range of models. The specific models +# considered in the paper and below are specializations of this general +# equation. +# +# ### Trend +# +# The trend component is a dynamic extension of a regression model that +# includes an intercept and linear time-trend. +# +# $$ +# \begin{align} +# \underbrace{\mu_{t+1}}_{\text{level}} & = \mu_t + \nu_t + \eta_{t+1} +# \qquad & \eta_{t+1} \sim N(0, \sigma_\eta^2) \\\\ +# \underbrace{\nu_{t+1}}_{\text{trend}} & = \nu_t + \zeta_{t+1} & +# \zeta_{t+1} \sim N(0, \sigma_\zeta^2) \\ +# \end{align} +# $$ +# +# where the level is a generalization of the intercept term that can +# dynamically vary across time, and the trend is a generalization of the +# time-trend such that the slope can dynamically vary across time. +# +# For both elements (level and trend), we can consider models in which: +# +# - The element is included vs excluded (if the trend is included, there +# must also be a level included). +# - The element is deterministic vs stochastic (i.e. whether or not the +# variance on the error term is confined to be zero or not) +# +# The only additional parameters to be estimated via MLE are the variances +# of any included stochastic components. +# +# This leads to the following specifications: +# +# | | +# Level | Trend | Stochastic Level | Stochastic Trend | +# |----------------------------------------------------------------------| +# -------|-------|------------------|------------------| +# | Constant | +# ✓ | | | | +# | Local Level
    (random walk) | +# ✓ | | ✓ | | +# | Deterministic trend | +# ✓ | ✓ | | | +# | Local level with deterministic trend
    (random walk with drift) | +# ✓ | ✓ | ✓ | | +# | Local linear trend | +# ✓ | ✓ | ✓ | ✓ | +# | Smooth trend
    (integrated random walk) | +# ✓ | ✓ | | ✓ | +# +# ### Seasonal +# +# The seasonal component is written as: +# +# $$ +# \gamma_t = - \sum_{j=1}^{s-1} \gamma_{t+1-j} + \omega_t \qquad \omega_t +# \sim N(0, \sigma_\omega^2) +# $$ +# +# The periodicity (number of seasons) is `s`, and the defining character +# is that (without the error term), the seasonal components sum to zero +# across one complete cycle. The inclusion of an error term allows the +# seasonal effects to vary over time. +# +# The variants of this model are: +# +# - The periodicity `s` +# - Whether or not to make the seasonal effects stochastic. +# +# If the seasonal effect is stochastic, then there is one additional +# parameter to estimate via MLE (the variance of the error term). +# +# ### Cycle +# +# The cyclical component is intended to capture cyclical effects at time +# frames much longer than captured by the seasonal component. For example, +# in economics the cyclical term is often intended to capture the business +# cycle, and is then expected to have a period between "1.5 and 12 years" +# (see Durbin and Koopman). +# +# The cycle is written as: +# +# $$ +# \begin{align} +# c_{t+1} & = c_t \cos \lambda_c + c_t^* \sin \lambda_c + \tilde \omega_t +# \qquad & \tilde \omega_t \sim N(0, \sigma_{\tilde \omega}^2) \\\\ +# c_{t+1}^* & = -c_t \sin \lambda_c + c_t^* \cos \lambda_c + \tilde +# \omega_t^* & \tilde \omega_t^* \sim N(0, \sigma_{\tilde \omega}^2) +# \end{align} +# $$ +# +# The parameter $\lambda_c$ (the frequency of the cycle) is an additional +# parameter to be estimated by MLE. If the seasonal effect is stochastic, +# then there is one another parameter to estimate (the variance of the error +# term - note that both of the error terms here share the same variance, but +# are assumed to have independent draws). +# +# ### Irregular +# +# The irregular component is assumed to be a white noise error term. Its +# variance is a parameter to be estimated by MLE; i.e. +# +# $$ +# \varepsilon_t \sim N(0, \sigma_\varepsilon^2) +# $$ +# +# In some cases, we may want to generalize the irregular component to +# allow for autoregressive effects: +# +# $$ +# \varepsilon_t = \rho(L) \varepsilon_{t-1} + \epsilon_t, \qquad +# \epsilon_t \sim N(0, \sigma_\epsilon^2) +# $$ +# +# In this case, the autoregressive parameters would also be estimated via +# MLE. +# +# ### Regression effects +# +# We may want to allow for explanatory variables by including additional +# terms +# +# $$ +# \sum_{j=1}^k \beta_j x_{jt} +# $$ +# +# or for intervention effects by including +# +# $$ +# \begin{align} +# \delta w_t \qquad \text{where} \qquad w_t & = 0, \qquad t < \tau, \\\\ +# & = 1, \qquad t \ge \tau +# \end{align} +# $$ +# +# These additional parameters could be estimated via MLE or by including +# them as components of the state space formulation. +# + +# ## Data +# +# Following Harvey and Jaeger, we will consider the following time series: +# +# - US real GNP, "output", +# ([GNPC96](https://research.stlouisfed.org/fred2/series/GNPC96)) +# - US GNP implicit price deflator, "prices", +# ([GNPDEF](https://research.stlouisfed.org/fred2/series/GNPDEF)) +# - US monetary base, "money", +# ([AMBSL](https://research.stlouisfed.org/fred2/series/AMBSL)) +# +# The time frame in the original paper varied across series, but was +# broadly 1954-1989. Below we use data from the period 1948-2008 for all +# series. Although the unobserved components approach allows isolating a +# seasonal component within the model, the series considered in the paper, +# and here, are already seasonally adjusted. +# +# All data series considered here are taken from [Federal Reserve Economic +# Data (FRED)](https://research.stlouisfed.org/fred2/). Conveniently, the +# Python library [Pandas](http://pandas.pydata.org/) has the ability to +# download data from FRED directly. + +# Datasets +from pandas_datareader.data import DataReader + +# Get the raw data +start = '1948-01' +end = '2008-01' +us_gnp = DataReader('GNPC96', 'fred', start=start, end=end) +us_gnp_deflator = DataReader('GNPDEF', 'fred', start=start, end=end) +us_monetary_base = DataReader( + 'AMBSL', 'fred', start=start, end=end).resample('QS').mean() +recessions = DataReader( + 'USRECQ', 'fred', start=start, end=end).resample('QS').last().values[:, 0] + +# Construct the dataframe +dta = pd.concat( + map(np.log, (us_gnp, us_gnp_deflator, us_monetary_base)), axis=1) +dta.columns = ['US GNP', 'US Prices', 'US monetary base'] +dates = dta.index._mpl_repr() + +# To get a sense of these three variables over the timeframe, we can plot +# them: + +# Plot the data +ax = dta.plot(figsize=(13, 3)) +ylim = ax.get_ylim() +ax.xaxis.grid() +ax.fill_between( + dates, + ylim[0] + 1e-5, + ylim[1] - 1e-5, + recessions, + facecolor='k', + alpha=0.1) + +# ## Model +# +# Since the data is already seasonally adjusted and there are no obvious +# explanatory variables, the generic model considered is: +# +# $$ +# y_t = \underbrace{\mu_{t}}_{\text{trend}} + +# \underbrace{c_{t}}_{\text{cycle}} + +# \underbrace{\varepsilon_t}_{\text{irregular}} +# $$ +# +# The irregular will be assumed to be white noise, and the cycle will be +# stochastic and damped. The final modeling choice is the specification to +# use for the trend component. Harvey and Jaeger consider two models: +# +# 1. Local linear trend (the "unrestricted" model) +# 2. Smooth trend (the "restricted" model, since we are forcing +# $\sigma_\eta = 0$) +# +# Below, we construct `kwargs` dictionaries for each of these model types. +# Notice that rather that there are two ways to specify the models. One way +# is to specify components directly, as in the table above. The other way is +# to use string names which map to various specifications. + +# Model specifications + +# Unrestricted model, using string specification +unrestricted_model = { + 'level': 'local linear trend', + 'cycle': True, + 'damped_cycle': True, + 'stochastic_cycle': True +} + +# Unrestricted model, setting components directly +# This is an equivalent, but less convenient, way to specify a +# local linear trend model with a stochastic damped cycle: +# unrestricted_model = { +# 'irregular': True, 'level': True, 'stochastic_level': True, 'trend': +# True, 'stochastic_trend': True, +# 'cycle': True, 'damped_cycle': True, 'stochastic_cycle': True +# } + +# The restricted model forces a smooth trend +restricted_model = { + 'level': 'smooth trend', + 'cycle': True, + 'damped_cycle': True, + 'stochastic_cycle': True +} + +# Restricted model, setting components directly +# This is an equivalent, but less convenient, way to specify a +# smooth trend model with a stochastic damped cycle. Notice +# that the difference from the local linear trend model is that +# `stochastic_level=False` here. +# unrestricted_model = { +# 'irregular': True, 'level': True, 'stochastic_level': False, +# 'trend': True, 'stochastic_trend': True, +# 'cycle': True, 'damped_cycle': True, 'stochastic_cycle': True +# } + +# We now fit the following models: +# +# 1. Output, unrestricted model +# 2. Prices, unrestricted model +# 3. Prices, restricted model +# 4. Money, unrestricted model +# 5. Money, restricted model + +# Output +output_mod = sm.tsa.UnobservedComponents(dta['US GNP'], **unrestricted_model) +output_res = output_mod.fit(method='powell', disp=False) + +# Prices +prices_mod = sm.tsa.UnobservedComponents(dta['US Prices'], + **unrestricted_model) +prices_res = prices_mod.fit(method='powell', disp=False) + +prices_restricted_mod = sm.tsa.UnobservedComponents(dta['US Prices'], + **restricted_model) +prices_restricted_res = prices_restricted_mod.fit(method='powell', disp=False) + +# Money +money_mod = sm.tsa.UnobservedComponents(dta['US monetary base'], + **unrestricted_model) +money_res = money_mod.fit(method='powell', disp=False) + +money_restricted_mod = sm.tsa.UnobservedComponents(dta['US monetary base'], + **restricted_model) +money_restricted_res = money_restricted_mod.fit(method='powell', disp=False) + +# Once we have fit these models, there are a variety of ways to display +# the information. Looking at the model of US GNP, we can summarize the fit +# of the model using the `summary` method on the fit object. + +print(output_res.summary()) + +# For unobserved components models, and in particular when exploring +# stylized facts in line with point (2) from the introduction, it is often +# more instructive to plot the estimated unobserved components (e.g. the +# level, trend, and cycle) themselves to see if they provide a meaningful +# description of the data. +# +# The `plot_components` method of the fit object can be used to show plots +# and confidence intervals of each of the estimated states, as well as a +# plot of the observed data versus the one-step-ahead predictions of the +# model to assess fit. + +fig = output_res.plot_components( + legend_loc='lower right', figsize=(15, 9)) + +# Finally, Harvey and Jaeger summarize the models in another way to +# highlight the relative importances of the trend and cyclical components; +# below we replicate their Table I. The values we find are broadly +# consistent with, but different in the particulars from, the values from +# their table. + +# Create Table I +table_i = np.zeros((5, 6)) + +start = dta.index[0] +end = dta.index[-1] +time_range = '%d:%d-%d:%d' % (start.year, start.quarter, end.year, end.quarter) +models = [ + ('US GNP', time_range, 'None'), + ('US Prices', time_range, 'None'), + ('US Prices', time_range, r'$\sigma_\eta^2 = 0$'), + ('US monetary base', time_range, 'None'), + ('US monetary base', time_range, r'$\sigma_\eta^2 = 0$'), +] +index = pd.MultiIndex.from_tuples( + models, names=['Series', 'Time range', 'Restrictions']) +parameter_symbols = [ + r'$\sigma_\zeta^2$', + r'$\sigma_\eta^2$', + r'$\sigma_\kappa^2$', + r'$\rho$', + r'$2 \pi / \lambda_c$', + r'$\sigma_\varepsilon^2$', +] + +i = 0 +for res in (output_res, prices_res, prices_restricted_res, money_res, + money_restricted_res): + if res.model.stochastic_level: + (sigma_irregular, sigma_level, sigma_trend, sigma_cycle, + frequency_cycle, damping_cycle) = res.params + else: + (sigma_irregular, sigma_level, sigma_cycle, frequency_cycle, + damping_cycle) = res.params + sigma_trend = np.nan + period_cycle = 2 * np.pi / frequency_cycle + + table_i[i, :] = [ + sigma_level * 1e7, sigma_trend * 1e7, sigma_cycle * 1e7, damping_cycle, + period_cycle, sigma_irregular * 1e7 + ] + i += 1 + +pd.set_option('float_format', + lambda x: '%.4g' % np.round(x, 2) if not np.isnan(x) else '-') +table_i = pd.DataFrame(table_i, index=index, columns=parameter_symbols) +table_i diff --git a/examples/python/statespace_varmax.py b/examples/python/statespace_varmax.py new file mode 100644 index 0000000..d615bdc --- /dev/null +++ b/examples/python/statespace_varmax.py @@ -0,0 +1,88 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook statespace_varmax.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # VARMAX models +# +# This is a brief introduction notebook to VARMAX models in Statsmodels. +# The VARMAX model is generically specified as: +# $$ +# y_t = \nu + A_1 y_{t-1} + \dots + A_p y_{t-p} + B x_t + \epsilon_t + +# M_1 \epsilon_{t-1} + \dots M_q \epsilon_{t-q} +# $$ +# +# where $y_t$ is a $\text{k_endog} \times 1$ vector. + +import numpy as np +import pandas as pd +import statsmodels.api as sm +import matplotlib.pyplot as plt + +dta = sm.datasets.webuse('lutkepohl2', 'https://www.stata-press.com/data/r12/') +dta.index = dta.qtr +endog = dta.loc['1960-04-01':'1978-10-01', + ['dln_inv', 'dln_inc', 'dln_consump']] + +# ## Model specification +# +# The `VARMAX` class in Statsmodels allows estimation of VAR, VMA, and +# VARMA models (through the `order` argument), optionally with a constant +# term (via the `trend` argument). Exogenous regressors may also be included +# (as usual in Statsmodels, by the `exog` argument), and in this way a time +# trend may be added. Finally, the class allows measurement error (via the +# `measurement_error` argument) and allows specifying either a diagonal or +# unstructured innovation covariance matrix (via the `error_cov_type` +# argument). + +# ## Example 1: VAR +# +# Below is a simple VARX(2) model in two endogenous variables and an +# exogenous series, but no constant term. Notice that we needed to allow for +# more iterations than the default (which is `maxiter=50`) in order for the +# likelihood estimation to converge. This is not unusual in VAR models which +# have to estimate a large number of parameters, often on a relatively small +# number of time series: this model, for example, estimates 27 parameters +# off of 75 observations of 3 variables. + +exog = endog['dln_consump'] +mod = sm.tsa.VARMAX( + endog[['dln_inv', 'dln_inc']], order=(2, 0), trend='nc', exog=exog) +res = mod.fit(maxiter=1000, disp=False) +print(res.summary()) + +# From the estimated VAR model, we can plot the impulse response functions +# of the endogenous variables. + +ax = res.impulse_responses(10, orthogonalized=True).plot(figsize=(13, 3)) +ax.set( + xlabel='t', title='Responses to a shock to `dln_inv`') + +# ## Example 2: VMA +# +# A vector moving average model can also be formulated. Below we show a +# VMA(2) on the same data, but where the innovations to the process are +# uncorrelated. In this example we leave out the exogenous regressor but now +# include the constant term. + +mod = sm.tsa.VARMAX( + endog[['dln_inv', 'dln_inc']], order=(0, 2), error_cov_type='diagonal') +res = mod.fit(maxiter=1000, disp=False) +print(res.summary()) + +# ## Caution: VARMA(p,q) specifications +# +# Although the model allows estimating VARMA(p,q) specifications, these +# models are not identified without additional restrictions on the +# representation matrices, which are not built-in. For this reason, it is +# recommended that the user proceed with error (and indeed a warning is +# issued when these models are specified). Nonetheless, they may in some +# circumstances provide useful information. + +mod = sm.tsa.VARMAX(endog[['dln_inv', 'dln_inc']], order=(1, 1)) +res = mod.fit(maxiter=1000, disp=False) +print(res.summary()) diff --git a/examples/python/tsa_arma_0.py b/examples/python/tsa_arma_0.py new file mode 100644 index 0000000..7747331 --- /dev/null +++ b/examples/python/tsa_arma_0.py @@ -0,0 +1,172 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook tsa_arma_0.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Autoregressive Moving Average (ARMA): Sunspots data + +from __future__ import print_function +import numpy as np +from scipy import stats +import pandas as pd +import matplotlib.pyplot as plt + +import statsmodels.api as sm + +from statsmodels.graphics.api import qqplot + +# ## Sunpots Data + +print(sm.datasets.sunspots.NOTE) + +dta = sm.datasets.sunspots.load_pandas().data + +dta.index = pd.Index(sm.tsa.datetools.dates_from_range('1700', '2008')) +del dta["YEAR"] + +dta.plot(figsize=(12, 8)) + +fig = plt.figure(figsize=(12, 8)) +ax1 = fig.add_subplot(211) +fig = sm.graphics.tsa.plot_acf(dta.values.squeeze(), lags=40, ax=ax1) +ax2 = fig.add_subplot(212) +fig = sm.graphics.tsa.plot_pacf(dta, lags=40, ax=ax2) + +arma_mod20 = sm.tsa.ARMA(dta, (2, 0)).fit(disp=False) +print(arma_mod20.params) + +arma_mod30 = sm.tsa.ARMA(dta, (3, 0)).fit(disp=False) + +print(arma_mod20.aic, arma_mod20.bic, arma_mod20.hqic) + +print(arma_mod30.params) + +print(arma_mod30.aic, arma_mod30.bic, arma_mod30.hqic) + +# * Does our model obey the theory? + +sm.stats.durbin_watson(arma_mod30.resid.values) + +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot(111) +ax = arma_mod30.resid.plot(ax=ax) + +resid = arma_mod30.resid + +stats.normaltest(resid) + +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot(111) +fig = qqplot(resid, line='q', ax=ax, fit=True) + +fig = plt.figure(figsize=(12, 8)) +ax1 = fig.add_subplot(211) +fig = sm.graphics.tsa.plot_acf(resid.values.squeeze(), lags=40, ax=ax1) +ax2 = fig.add_subplot(212) +fig = sm.graphics.tsa.plot_pacf(resid, lags=40, ax=ax2) + +r, q, p = sm.tsa.acf(resid.values.squeeze(), qstat=True) +data = np.c_[range(1, 41), r[1:], q, p] +table = pd.DataFrame(data, columns=['lag', "AC", "Q", "Prob(>Q)"]) +print(table.set_index('lag')) + +# * This indicates a lack of fit. + +# * In-sample dynamic prediction. How good does our model do? + +predict_sunspots = arma_mod30.predict('1990', '2012', dynamic=True) +print(predict_sunspots) + +fig, ax = plt.subplots(figsize=(12, 8)) +ax = dta.loc['1950':].plot(ax=ax) +fig = arma_mod30.plot_predict( + '1990', '2012', dynamic=True, ax=ax, plot_insample=False) + + +def mean_forecast_err(y, yhat): + return y.sub(yhat).mean() + + +mean_forecast_err(dta.SUNACTIVITY, predict_sunspots) + +# ### Exercise: Can you obtain a better fit for the Sunspots model? (Hint: +# sm.tsa.AR has a method select_order) + +# ### Simulated ARMA(4,1): Model Identification is Difficult + +from statsmodels.tsa.arima_process import ArmaProcess + +np.random.seed(1234) +# include zero-th lag +arparams = np.array([1, .75, -.65, -.55, .9]) +maparams = np.array([1, .65]) + +# Let's make sure this model is estimable. + +arma_t = ArmaProcess(arparams, maparams) + +arma_t.isinvertible + +arma_t.isstationary + +# * What does this mean? + +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot(111) +ax.plot(arma_t.generate_sample(nsample=50)) + +arparams = np.array([1, .35, -.15, .55, .1]) +maparams = np.array([1, .65]) +arma_t = ArmaProcess(arparams, maparams) +arma_t.isstationary + +arma_rvs = arma_t.generate_sample(nsample=500, burnin=250, scale=2.5) + +fig = plt.figure(figsize=(12, 8)) +ax1 = fig.add_subplot(211) +fig = sm.graphics.tsa.plot_acf(arma_rvs, lags=40, ax=ax1) +ax2 = fig.add_subplot(212) +fig = sm.graphics.tsa.plot_pacf(arma_rvs, lags=40, ax=ax2) + +# * For mixed ARMA processes the Autocorrelation function is a mixture of +# exponentials and damped sine waves after (q-p) lags. +# * The partial autocorrelation function is a mixture of exponentials and +# dampened sine waves after (p-q) lags. + +arma11 = sm.tsa.ARMA(arma_rvs, (1, 1)).fit(disp=False) +resid = arma11.resid +r, q, p = sm.tsa.acf(resid, qstat=True) +data = np.c_[range(1, 41), r[1:], q, p] +table = pd.DataFrame(data, columns=['lag', "AC", "Q", "Prob(>Q)"]) +print(table.set_index('lag')) + +arma41 = sm.tsa.ARMA(arma_rvs, (4, 1)).fit(disp=False) +resid = arma41.resid +r, q, p = sm.tsa.acf(resid, qstat=True) +data = np.c_[range(1, 41), r[1:], q, p] +table = pd.DataFrame(data, columns=['lag', "AC", "Q", "Prob(>Q)"]) +print(table.set_index('lag')) + +# ### Exercise: How good of in-sample prediction can you do for another +# series, say, CPI + +macrodta = sm.datasets.macrodata.load_pandas().data +macrodta.index = pd.Index( + sm.tsa.datetools.dates_from_range('1959Q1', '2009Q3')) +cpi = macrodta["cpi"] + +# #### Hint: + +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot(111) +ax = cpi.plot(ax=ax) +ax.legend() + +# P-value of the unit-root test, resoundingly rejects the null of a unit- +# root. + +print(sm.tsa.adfuller(cpi)[1]) diff --git a/examples/python/tsa_arma_1.py b/examples/python/tsa_arma_1.py new file mode 100644 index 0000000..fa4a9a6 --- /dev/null +++ b/examples/python/tsa_arma_1.py @@ -0,0 +1,48 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook tsa_arma_1.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Autoregressive Moving Average (ARMA): Artificial data + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm +import pandas as pd +from statsmodels.tsa.arima_process import arma_generate_sample +np.random.seed(12345) + +# Generate some data from an ARMA process: + +arparams = np.array([.75, -.25]) +maparams = np.array([.65, .35]) + +# The conventions of the arma_generate function require that we specify a +# 1 for the zero-lag of the AR and MA parameters and that the AR parameters +# be negated. + +arparams = np.r_[1, -arparams] +maparams = np.r_[1, maparams] +nobs = 250 +y = arma_generate_sample(arparams, maparams, nobs) + +# Now, optionally, we can add some dates information. For this example, +# we'll use a pandas time series. + +dates = sm.tsa.datetools.dates_from_range('1980m1', length=nobs) +y = pd.Series(y, index=dates) +arma_mod = sm.tsa.ARMA(y, order=(2, 2)) +arma_res = arma_mod.fit(trend='nc', disp=-1) + +print(arma_res.summary()) + +y.tail() + +import matplotlib.pyplot as plt +fig, ax = plt.subplots(figsize=(10, 8)) +fig = arma_res.plot_predict(start='1999-06-30', end='2001-05-31', ax=ax) +legend = ax.legend(loc='upper left') diff --git a/examples/python/tsa_dates.py b/examples/python/tsa_dates.py new file mode 100644 index 0000000..b4591d3 --- /dev/null +++ b/examples/python/tsa_dates.py @@ -0,0 +1,57 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook tsa_dates.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Dates in timeseries models + +from __future__ import print_function +import statsmodels.api as sm +import numpy as np +import pandas as pd + +# ## Getting started + +data = sm.datasets.sunspots.load() + +# Right now an annual date series must be datetimes at the end of the +# year. + +from datetime import datetime +dates = sm.tsa.datetools.dates_from_range('1700', length=len(data.endog)) + +# ## Using Pandas +# +# Make a pandas TimeSeries or DataFrame + +endog = pd.Series(data.endog, index=dates) + +# Instantiate the model + +ar_model = sm.tsa.AR(endog, freq='A') +pandas_ar_res = ar_model.fit(maxlag=9, method='mle', disp=-1) + +# Out-of-sample prediction + +pred = pandas_ar_res.predict(start='2005', end='2015') +print(pred) + +# ## Using explicit dates + +ar_model = sm.tsa.AR(data.endog, dates=dates, freq='A') +ar_res = ar_model.fit(maxlag=9, method='mle', disp=-1) +pred = ar_res.predict(start='2005', end='2015') +print(pred) + +# This just returns a regular array, but since the model has date +# information attached, you can get the prediction dates in a roundabout +# way. + +print(ar_res.data.predict_dates) + +# Note: This attribute only exists if predict has been called. It holds +# the dates associated with the last call to predict. diff --git a/examples/python/tsa_filters.py b/examples/python/tsa_filters.py new file mode 100644 index 0000000..4d10815 --- /dev/null +++ b/examples/python/tsa_filters.py @@ -0,0 +1,152 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook tsa_filters.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Time Series Filters + +from __future__ import print_function +import pandas as pd +import matplotlib.pyplot as plt + +import statsmodels.api as sm + +dta = sm.datasets.macrodata.load_pandas().data + +index = pd.Index(sm.tsa.datetools.dates_from_range('1959Q1', '2009Q3')) +print(index) + +dta.index = index +del dta['year'] +del dta['quarter'] + +print(sm.datasets.macrodata.NOTE) + +print(dta.head(10)) + +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot(111) +dta.realgdp.plot(ax=ax) +legend = ax.legend(loc='upper left') +legend.prop.set_size(20) + +# ### Hodrick-Prescott Filter + +# The Hodrick-Prescott filter separates a time-series $y_t$ into a trend +# $\tau_t$ and a cyclical component $\zeta_t$ +# +# $$y_t = \tau_t + \zeta_t$$ +# +# The components are determined by minimizing the following quadratic loss +# function +# +# $$\min_{\\{ \tau_{t}\\} }\sum_{t}^{T}\zeta_{t}^{2}+\lambda\sum_{t=1}^{T} +# \left[\left(\tau_{t}-\tau_{t-1}\right)-\left(\tau_{t-1}-\tau_{t-2}\right)\ +# right]^{2}$$ + +gdp_cycle, gdp_trend = sm.tsa.filters.hpfilter(dta.realgdp) + +gdp_decomp = dta[['realgdp']].copy() +gdp_decomp["cycle"] = gdp_cycle +gdp_decomp["trend"] = gdp_trend + +fig = plt.figure(figsize=(12, 8)) +ax = fig.add_subplot(111) +gdp_decomp[["realgdp", "trend"]]["2000-03-31":].plot( + ax=ax, fontsize=16) +legend = ax.get_legend() +legend.prop.set_size(20) + +# ### Baxter-King approximate band-pass filter: Inflation and Unemployment + +# #### Explore the hypothesis that inflation and unemployment are counter- +# cyclical. + +# The Baxter-King filter is intended to explictly deal with the periodicty +# of the business cycle. By applying their band-pass filter to a series, +# they produce a new series that does not contain fluctuations at higher or +# lower than those of the business cycle. Specifically, the BK filter takes +# the form of a symmetric moving average +# +# $$y_{t}^{*}=\sum_{k=-K}^{k=K}a_ky_{t-k}$$ +# +# where $a_{-k}=a_k$ and $\sum_{k=-k}^{K}a_k=0$ to eliminate any trend in +# the series and render it stationary if the series is I(1) or I(2). +# +# For completeness, the filter weights are determined as follows +# +# $$a_{j} = B_{j}+\theta\text{ for }j=0,\pm1,\pm2,\dots,\pm K$$ +# +# $$B_{0} = \frac{\left(\omega_{2}-\omega_{1}\right)}{\pi}$$ +# $$B_{j} = \frac{1}{\pi j}\left(\sin\left(\omega_{2}j\right)-\sin\left(\o +# mega_{1}j\right)\right)\text{ for }j=0,\pm1,\pm2,\dots,\pm K$$ +# +# where $\theta$ is a normalizing constant such that the weights sum to +# zero. +# +# $$\theta=\frac{-\sum_{j=-K^{K}b_{j}}}{2K+1}$$ +# +# $$\omega_{1}=\frac{2\pi}{P_{H}}$$ +# +# $$\omega_{2}=\frac{2\pi}{P_{L}}$$ +# +# $P_L$ and $P_H$ are the periodicity of the low and high cut-off +# frequencies. Following Burns and Mitchell's work on US business cycles +# which suggests cycles last from 1.5 to 8 years, we use $P_L=6$ and +# $P_H=32$ by default. + +bk_cycles = sm.tsa.filters.bkfilter(dta[["infl", "unemp"]]) + +# * We lose K observations on both ends. It is suggested to use K=12 for +# quarterly data. + +fig = plt.figure(figsize=(12, 10)) +ax = fig.add_subplot(111) +bk_cycles.plot( + ax=ax, style=['r--', 'b-']) + +# ### Christiano-Fitzgerald approximate band-pass filter: Inflation and +# Unemployment + +# The Christiano-Fitzgerald filter is a generalization of BK and can thus +# also be seen as weighted moving average. However, the CF filter is +# asymmetric about $t$ as well as using the entire series. The +# implementation of their filter involves the +# calculations of the weights in +# +# $$y_{t}^{*}=B_{0}y_{t}+B_{1}y_{t+1}+\dots+B_{T-1-t}y_{T-1}+\tilde +# B_{T-t}y_{T}+B_{1}y_{t-1}+\dots+B_{t-2}y_{2}+\tilde B_{t-1}y_{1}$$ +# +# for $t=3,4,...,T-2$, where +# +# $$B_{j} = \frac{\sin(jb)-\sin(ja)}{\pi j},j\geq1$$ +# +# $$B_{0} = \frac{b-a}{\pi},a=\frac{2\pi}{P_{u}},b=\frac{2\pi}{P_{L}}$$ +# +# $\tilde B_{T-t}$ and $\tilde B_{t-1}$ are linear functions of the +# $B_{j}$'s, and the values for $t=1,2,T-1,$ and $T$ are also calculated in +# much the same way. $P_{U}$ and $P_{L}$ are as described above with the +# same interpretation. + +# The CF filter is appropriate for series that may follow a random walk. + +print(sm.tsa.stattools.adfuller(dta['unemp'])[:3]) + +print(sm.tsa.stattools.adfuller(dta['infl'])[:3]) + +cf_cycles, cf_trend = sm.tsa.filters.cffilter(dta[["infl", "unemp"]]) +print(cf_cycles.head(10)) + +fig = plt.figure(figsize=(14, 10)) +ax = fig.add_subplot(111) +cf_cycles.plot( + ax=ax, style=['r--', 'b-']) + +# Filtering assumes *a priori* that business cycles exist. Due to this +# assumption, many macroeconomic models seek to create models that match the +# shape of impulse response functions rather than replicating properties of +# filtered series. See VAR notebook. diff --git a/examples/python/wls.py b/examples/python/wls.py new file mode 100644 index 0000000..98ef0d6 --- /dev/null +++ b/examples/python/wls.py @@ -0,0 +1,111 @@ +# coding: utf-8 + +# DO NOT EDIT +# Autogenerated from the notebook wls.ipynb. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT + +# # Weighted Least Squares + +from __future__ import print_function +import numpy as np +from scipy import stats +import statsmodels.api as sm +import matplotlib.pyplot as plt +from statsmodels.sandbox.regression.predstd import wls_prediction_std +from statsmodels.iolib.table import (SimpleTable, default_txt_fmt) +np.random.seed(1024) + +# ## WLS Estimation +# +# ### Artificial data: Heteroscedasticity 2 groups +# +# Model assumptions: +# +# * Misspecification: true model is quadratic, estimate only linear +# * Independent noise/error term +# * Two groups for error variance, low and high variance groups + +nsample = 50 +x = np.linspace(0, 20, nsample) +X = np.column_stack((x, (x - 5)**2)) +X = sm.add_constant(X) +beta = [5., 0.5, -0.01] +sig = 0.5 +w = np.ones(nsample) +w[nsample * 6 // 10:] = 3 +y_true = np.dot(X, beta) +e = np.random.normal(size=nsample) +y = y_true + sig * w * e +X = X[:, [0, 1]] + +# ### WLS knowing the true variance ratio of heteroscedasticity +# +# In this example, `w` is the standard deviation of the error. `WLS` +# requires that the weights are proportional to the inverse of the error +# variance. + +mod_wls = sm.WLS(y, X, weights=1. / (w**2)) +res_wls = mod_wls.fit() +print(res_wls.summary()) + +# ## OLS vs. WLS +# +# Estimate an OLS model for comparison: + +res_ols = sm.OLS(y, X).fit() +print(res_ols.params) +print(res_wls.params) + +# Compare the WLS standard errors to heteroscedasticity corrected OLS +# standard errors: + +se = np.vstack([[res_wls.bse], [res_ols.bse], [res_ols.HC0_se], + [res_ols.HC1_se], [res_ols.HC2_se], [res_ols.HC3_se]]) +se = np.round(se, 4) +colnames = ['x1', 'const'] +rownames = ['WLS', 'OLS', 'OLS_HC0', 'OLS_HC1', 'OLS_HC3', 'OLS_HC3'] +tabl = SimpleTable(se, colnames, rownames, txt_fmt=default_txt_fmt) +print(tabl) + +# Calculate OLS prediction interval: + +covb = res_ols.cov_params() +prediction_var = res_ols.mse_resid + (X * np.dot(covb, X.T).T).sum(1) +prediction_std = np.sqrt(prediction_var) +tppf = stats.t.ppf(0.975, res_ols.df_resid) + +prstd_ols, iv_l_ols, iv_u_ols = wls_prediction_std(res_ols) + +# Draw a plot to compare predicted values in WLS and OLS: + +prstd, iv_l, iv_u = wls_prediction_std(res_wls) + +fig, ax = plt.subplots(figsize=(8, 6)) +ax.plot(x, y, 'o', label="Data") +ax.plot(x, y_true, 'b-', label="True") +# OLS +ax.plot(x, res_ols.fittedvalues, 'r--') +ax.plot(x, iv_u_ols, 'r--', label="OLS") +ax.plot(x, iv_l_ols, 'r--') +# WLS +ax.plot(x, res_wls.fittedvalues, 'g--.') +ax.plot(x, iv_u, 'g--', label="WLS") +ax.plot(x, iv_l, 'g--') +ax.legend(loc="best") + +# ## Feasible Weighted Least Squares (2-stage FWLS) +# +# Like ,`w`, `w_est` is proportional to the standard deviation, and so +# must be squared. + +resid1 = res_ols.resid[w == 1.] +var1 = resid1.var(ddof=int(res_ols.df_model) + 1) +resid2 = res_ols.resid[w != 1.] +var2 = resid2.var(ddof=int(res_ols.df_model) + 1) +w_est = w.copy() +w_est[w != 1.] = np.sqrt(var2) / np.sqrt(var1) +res_fwls = sm.WLS(y, X, 1. / ((w_est**2))).fit() +print(res_fwls.summary()) diff --git a/examples/run_all.py b/examples/run_all.py new file mode 100644 index 0000000..7b0600c --- /dev/null +++ b/examples/run_all.py @@ -0,0 +1,59 @@ +""" +Run all python examples to make sure they do not raise +""" +from __future__ import print_function + +import tempfile + +SHOW_PLOT = False +BAD_FILES = ['robust_models_1'] + + +def no_show(*args): + pass + + +if __name__ == '__main__': + import glob + import sys + import matplotlib.pyplot as plt + + if not SHOW_PLOT: + PLT_SHOW = plt.show + plt.show = no_show + + SAVE_STDOUT = sys.stdout + SAVE_STDERR = sys.stderr + REDIRECT_STDOUT = tempfile.TemporaryFile('w') + REDIRECT_STDERR = tempfile.TemporaryFile('w') + + EXAMPLE_FILES = glob.glob('python/*.py') + for example in EXAMPLE_FILES: + KNOWN_BAD_FILE = any([bf in example for bf in BAD_FILES]) + with open(example, 'r') as pyfile: + code = pyfile.read() + try: + sys.stdout = REDIRECT_STDOUT + sys.stderr = REDIRECT_STDERR + exec(code) + except Exception as e: + sys.stderr = SAVE_STDERR + print('FAIL: {0}'.format(example), file=sys.stderr) + if KNOWN_BAD_FILE: + print('This FAIL is expected', file=sys.stderr) + else: + print('The last error was: ', file=sys.stderr) + print(e.__class__.__name__, file=sys.stderr) + print(e, file=sys.stderr) + else: + sys.stdout = SAVE_STDOUT + print('SUCCESS: {0}'.format(example)) + finally: + plt.close('all') + + REDIRECT_STDOUT.close() + REDIRECT_STDERR.close() + sys.stdout = SAVE_STDOUT + sys.stderr = SAVE_STDERR + if not SHOW_PLOT: + plt.show = PLT_SHOW diff --git a/github_deploy_key_statsmodels_statsmodels_github_io.enc b/github_deploy_key_statsmodels_statsmodels_github_io.enc new file mode 100644 index 0000000..6e910f3 --- /dev/null +++ b/github_deploy_key_statsmodels_statsmodels_github_io.enc @@ -0,0 +1 @@ +gAAAAABbD1iyJdxfE21E38fK3bOZGE3-OwARYc7w9byx-2lWPszONeqmgD84evz73OmjkWMUYS4OmSQjVLOcgZKpS472dt7JGq_wYeo4lCX93ho02TWhtOnbbQpA8vdJ9aoy002WBOMHOi9AuosnH9mw52Qo6p1jNpBSqjeStSnVWEhEzIJynginRn7FODuocGf1kCJ91qc1sEPgT-7kxwuYPIqOkcSNRBZnap5E6L3kopI2fW9lL9rlCs9X4MDYygrua9PCVZRxMRvTSOW_Lx_5-6kbQgzP3HqrX1q_mKmnr2ZMGKrKwzv4OhY4YIJra-xZf2W-8dBbZbIhB76xwGCinOhY1EFI5oXvNngiILhBX-E_AfpQq8I5_dXsGhRD-Axxrzm5NCb-0-slouCUTo-R0IpO_eQTzpajkBkRXyxrzrr05xITeOfsDmzJHwYhKFTbChhriJqc2YnDLz_tjC9ApaekC8soPRXOOJmpmvtxFa_vQPFh9xQpNZvXU4zfVfYXRnTb1u97hxSBBX0vQqyix53qudMniCo2N45ILqsO4duTgmUHU09JxhgBw30Apa20Ry0qQ0suGwP9doSz3H43nHocjfANp4qM_XZhCC6SrgZDxZKEGBYcL3J8xUf4aykWUc29n6qKAOBv8p6IdPsAfjqkG45fHtyLmVBAkjVbQWZ-0YaJqafmrppU_L8s4_yEs-J5dTpficNwKFN9suKbR2d4ycxpvgxCL-t14lMA3-wKSyI6AvJ3kRkgj8OcXQXV3rQGo4F56-P0XBerghDtQyqTAZhl85eiFVg3VqnOTZL8UpqNsKlSWL47ed3LUsE3yNZE9Z3LdTZLZ2FFlCfRiJwnFu93nwcEY8Vej8aaJxjpCkluS6XIF_kbD001DYcuVKBf3LxSyApRouv8v2Tb2iVII_sbxWuRDtBeIiI27_Slv1LDOmu8NF0v-FB3C0uvWye08GvD5m4iPEtcY02hnBwkuwY8KbnixLd14NfdKErNaO9btSKwxu_yogtH2cLu_QHqy4SGo81q9QECnPtIQr16N0Pkeuo9Rx2z9nNKOYAaLRy9JSq4iE-AdfkwkQUuMcvkvPCwIXgKuq4ewroHWOUQND9LHWhpgMFT-3sELCw7Cx_y7wbfFJ8XtPVQDBhbd6jlOyu_D3t_Tty-FuKp2Cwhqv9bFn8jk8EbHc7jTvFEGDGckMJom3NY30BVucfe14PvideLHIMAT4a5zsS8skZ2F2mJEjGqmFfL8m4avrtb1BanPPur7XGeQKVhGumZ_yk4EwkQrCdTepCdFGG1A4078R7_pnqQ_yKyMUUwDbSUqVLBvRLhSGR9eLxQKFJQiQTzB-8CShGmkIoYqsOgd1WYVlC7SdOerTYZwaJ-1tPQ2tzy7anLh91IJJck-IlmlQbC_FP-c7Oj7oajRWFoDh6jT2lLhSu0UcnSTPAIvD8WJIfYeIFMqhO58_p78IRIc0eQccOPQZryQLB08x0iBOsv9fk4412jCLDZj-KnbEyG983MrQOYnMsJxgOfNb9Y9tPKads5PIpQGtoVMQshS89JJWxkyA_9HRJh40SIIT7nVcaLaZHYX-0dqiT7Q5CRFaSVat-AQSMercYkpr2gBvXEu6qyXKw6-I6LFfaaHvOuZwc6u_eUi5hjZ-bT79kfmBWBK-8AMLn9bqZzZgwAYg6_42WWzvXzUf03bqUjPg10M-xr_2BVhVPpgOa6p8RPzXweiJ1-NZ7G1nCLlv1nxq5BclwRmeLqRart0XvWHgB_ygKg972l3HXi0gUyVD0d7_Lfi2M7VK7rbR-bWlVdh65ZdGsztaDGiG07p4yh6wNKV1OpwZJgHVwYxIX1R2s7gIYcoVQD77KhwVKgfCjJ9ADJSIagrW_gOqa_Or5vxxu08scurGyqbpjOZ7wYAsdA_fU51SKS21zzlCiZqW8vVDtz6I03Dsbr30UxaRRihjuB_vybB8tUdkhSUAp8tD7n6GSLSMZs-88gSCaY3Epb7H-c9Xxi-q67jP36Hkjvgz3_gwbMi3ZReSh_pJSkj1qjq94mc4zVKP7e5DeKf279bl8z6-YkldExcX4jRnS72uTf6H8sjyEVvnIRpGts6BUZe8prwG2tVa2oXHKxK-gB7fWXFmJz0w6gfg1cRHVnh9chfIJHqkqJeV91RTrZbJdKNeUWNxe7CIGkaUxjoa0jXBVmbmXS2V3Cd-9TonLWffWbujUrFgc2Zi5eqmFHWdbfy-1KSOFcUF0ceT9X7fJvIOb6MVWZKu_JZ35_6vm_Fpeck1aZfJ1i6I-PXukxeOvq113StgfhbGFM2oUP502wKB_jlOppHO0cPzQ4cK_2gYaZ5auQL2n4LezEaJ1YrYZys-bQFAStJ6hFJqMbQQSqzI7pPsyLTthsQphuSAGuN9dbMLChx9W9VxeHJuWWVC3D64w9ETIX8GsW-Rv3qpnbx7ii_hCQJHRAjP6lFOBx4HkC7vv2Ya_KklegKzASqdJ1o9L1Q9DJDymKBcI-74OqcTJsFupB1qWbC3pRUoAsA2ohnt1GLPGw28uQrNl3gjiYPVenl8JlXK63cr94ydl3BdU8yjl_AMak7jTEq0AtxsdYwEK3FaweMf-0lETrEEN1kBaUp_rtTQv5cto4nBhaXTM5NEiQw-1KKZ3xLcyberJJUcxB9sXCeFvi0i2Edz2u20-yH0gJz4I9Fi5ky1wJDg7X9NJjRDIVE1IDq7TtEmJQPv0yhP4gkR_AWID5avxkEYiOd2YvMMqJWKDhsr3LFLo5qsgauMcylMjJVzI6nzJQsjdh6bJISrXdgJFnK9yNmW2C_WFsPwVjSueKUDKPPz5KzQ3zHlifZgZaEM2dDhMXMPF0m-FmZP4YRGmdc0jr4b15GzvErPcuLVifR4N5yiOlyRNW237ykFuo5TwDz5G-CJIS0AQSXA2AaQJcPuua8NiVZlaGEkaS0uJq1Y0Fxp3aShD-IQF6OOeG1DIJuc8joGB2nDCGndAK7N189DLSVQfYmqH8p5kIq-PybusN705xXASTJJWmmR2BiN1Y6WCnNUnxpEjnA7x555hBXq1lE5_72_uCJ6zx4eKVHKovVt_NE3bcjHmy2xfhjfK_ljQ4KwhmehfaqwcCApLZ_BoYxmdgvZereUhi7ttGylOmEFvRVyJfoH_Dp4sMFfWpSZUb8N3h1v83_ajAxTaH9BCP40UwOUr_DcM9tg-heAvemUVqa-CdbTvGYUK3WujzKnrXvkQNodjaGChR4f8swwjqV7rsbw1KTGFCbgq1xxhk_fs2-v0kc3btcPoPXejyRtJ0WONTzX9Eo8tBii-9xuT9VwKS9OzYlpiRHFFfKeQNWHD0zjgBTa9TTaFmFRXnzpWCv6pF64NuyLlB5KB1zKERJf9gMeeE8Lz8vxkMuQt_uKIco-ElGcwETn-bzyFpTJ8aPhgUo7WK1Ckz923qGnjurLQ_YPVrYOiq8ULbdWiraro6KNi1v-BrEaXuTCIoLI1S_PS7pS-NlN7YXII31pqSJ-mXCbV6iyIyim8rftVbGOK1DexnoOBqCTzsOF2A7A10Ma3qQX-Ded91MjjxWr34RYahME8mwlUYUsRamTgTV-ygPF6FOCMh_-B-HkzKTKKhtGtfM_hWp7nLoMQw2lIHdYumcB649HmiUcMoaxWsVyQdyhwLpEqcTtwh2dRbAS3Ttez4nL45sgaf8R5hHg-4S9Zj5YBVOfo1YyxcWpvZFkKzlM9doQxwbvM7_QmqXW1Eh-QtL8zqQrYm9D3VLx6A-bloH3VAOamExSwe5raEOrD2TaeQ2-kbSopFPWKoBe0ZE8VyIBZIoCzXFrAfp2gpPfOMA-KPHHAv-CVa3BqSZInZt9yzdGo-JPTE46lR6FoR4YD0AGwuoGai8ko94VEQqHaESmKkrKBtpH7AucEXSF0i5J71QvtWAxAOr5MbxjyIEqHqbXsAZg_D0m-eNW8IgiGy22EA2TbHahytLtVmL3im2iN0rNNQ0A5-PfojcsxAE15OyX5hILGXPSju6LIvztcFJxmBsQUmBObVoO6_KH4CkBS2lfgudtvkXpfJNnGFyb3l-aLEkTrfLtJuJlOQWGJLeDgV5MV41nH-qNUj7v3xWVJFiSrNBETlAlaIn0klbWGTjii-1s42LS9ReQv-fulXgbiiyzOQOPUYHwDQVINO4hxk5nId5Wzpd1jpczeC-6P5pQwlPV9lo98MTr6CydXARMYaplD0Y2Dg_3ekiWi5rHb364sO0q57RmmHMhN0rpohLzvUQOekvihXUycZ7aN7Rf1l2L09UjSp1hUH4cdiPbZxrL4wx3ZLs32KJsoxFOllZe9azBeBaH9841aywnJfylU_luMHhNy4XR3xx43NZnVRq9HvlQa34gu0JGNkZwCBp2ojewjfRGegA7F8M53mKA85Al5-Ts2RM-tdvqmM1JK8qw== \ No newline at end of file diff --git a/lint.sh b/lint.sh new file mode 100755 index 0000000..624eed9 --- /dev/null +++ b/lint.sh @@ -0,0 +1,132 @@ +#!/bin/bash + +echo "inside $0" + +RET=0 + +if [ "$LINT" == true ]; then + echo "Linting all files with limited rules" + flake8 statsmodels + if [ $? -ne "0" ]; then + echo "Changed files failed linting using the required set of rules." + echo "Additions and changes must conform to Python code style rules." + RET=1 + fi + + # Run with --isolated to ignore config files, the files included here + # pass _all_ flake8 checks + echo "Linting known clean files with strict rules" + flake8 --isolated \ + statsmodels/resampling/ \ + statsmodels/interface/ \ + statsmodels/base/tests/test_data.py \ + statsmodels/compat/ \ + statsmodels/datasets/tests/ \ + statsmodels/discrete/tests/results/ \ + statsmodels/duration/__init__.py \ + statsmodels/duration/tests/results/ \ + statsmodels/formula/ \ + statsmodels/gam/ \ + statsmodels/genmod/families/ \ + statsmodels/genmod/_tweedie_compound_poisson.py \ + statsmodels/genmod/bayes_mixed_glm.py \ + statsmodels/genmod/generalized_estimating_equations.py \ + statsmodels/genmod/qif.py \ + statsmodels/genmod/tests/test_gee.py \ + statsmodels/genmod/tests/test_qif.py \ + statsmodels/genmod/tests/results/ \ + statsmodels/graphics/tsaplots.py \ + statsmodels/emplike/tests/ \ + statsmodels/examples/tests/ \ + statsmodels/iolib/smpickle.py \ + statsmodels/iolib/tests/test_pickle.py \ + statsmodels/iolib/tests/results/ \ + statsmodels/multivariate/pca.py \ + statsmodels/multivariate/tests/results/ \ + statsmodels/regression/dimred.py \ + statsmodels/regression/mixed_linear_model.py \ + statsmodels/regression/process_regression.py \ + statsmodels/regression/recursive_ls.py \ + statsmodels/regression/tests/test_dimred.py \ + statsmodels/regression/tests/test_lme.py \ + statsmodels/regression/tests/test_processreg.py \ + statsmodels/regression/tests/test_quantile_regression.py \ + statsmodels/regression/tests/test_tools.py \ + statsmodels/regression/tests/results/ \ + statsmodels/robust/tests/ \ + statsmodels/sandbox/distributions/try_pot.py \ + statsmodels/sandbox/distributions/tests/test_gof_new.py \ + statsmodels/sandbox/panel/correlation_structures.py \ + statsmodels/sandbox/regression/tests/results_gmm_griliches.py \ + statsmodels/sandbox/regression/tests/results_gmm_griliches_iter.py \ + statsmodels/sandbox/regression/tests/results_gmm_poisson.py \ + statsmodels/sandbox/regression/tests/results_ivreg2_griliches.py \ + statsmodels/stats/__init__.py \ + statsmodels/stats/_knockoff.py \ + statsmodels/stats/base.py \ + statsmodels/stats/correlation_tools.py \ + statsmodels/stats/knockoff_regeffects.py \ + statsmodels/stats/moment_helpers.py \ + statsmodels/stats/multicomp.py \ + statsmodels/stats/regularized_covariance.py \ + statsmodels/stats/stattools.py \ + statsmodels/stats/tests/test_anova_rm.py \ + statsmodels/stats/tests/test_correlation.py \ + statsmodels/stats/tests/test_descriptivestats.py \ + statsmodels/stats/tests/test_knockoff.py \ + statsmodels/stats/tests/test_lilliefors.py \ + statsmodels/stats/tests/test_moment_helpers.py \ + statsmodels/stats/tests/test_multi.py \ + statsmodels/stats/tests/test_qsturng.py \ + statsmodels/stats/tests/test_regularized_covariance.py \ + statsmodels/stats/tests/results/ \ + statsmodels/tests/ \ + statsmodels/tools/linalg.py \ + statsmodels/tools/web.py \ + statsmodels/tools/tests/test_linalg.py \ + statsmodels/tools/decorators.py \ + statsmodels/tools/tests/test_decorators.py \ + statsmodels/tsa/adfvalues.py \ + statsmodels/tsa/base/tests/test_datetools.py \ + statsmodels/tsa/filters/tests/ \ + statsmodels/tsa/innovations/ \ + statsmodels/tsa/kalmanf/ \ + statsmodels/tsa/regime_switching/ \ + statsmodels/tsa/vector_ar/dynamic.py \ + statsmodels/tsa/vector_ar/tests/results/ \ + statsmodels/tsa/statespace/ \ + statsmodels/tsa/tests/results/ \ + statsmodels/__init__.py \ + statsmodels/conftest.py \ + statsmodels/tools/sm_exceptions.py \ + examples/ \ + tools/ \ + setup.py + if [ $? -ne "0" ]; then + echo "Previously passing files failed linting." + RET=1 + fi + + # Tests any new python files + if [ -f $(git rev-parse --git-dir)/shallow ]; then + # Unshallow only when required, i.e., on CI + echo "Repository is shallow" + git fetch --unshallow --quiet + fi + git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*" + git fetch origin --quiet + NEW_FILES=$(git diff origin/maintenance/0.10.x --name-status -u -- "*.py" | grep ^A | cut -c 3- | paste -sd " " -) + if [ -n "$NEW_FILES" ]; then + echo "Linting newly added files with strict rules" + echo "New files: $NEW_FILES" + flake8 --isolated $(eval echo $NEW_FILES) + if [ $? -ne "0" ]; then + echo "New files failed linting." + RET=1 + fi + else + echo "No new files to lint" + fi +fi + +exit "$RET" diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 0000000..2fb5295 --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,12 @@ +# build +cython + +# run +matplotlib +cvxopt + +# test +pytest +pytest-randomly +pytest-xdist!=1.30 +flake8 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..8011ae3 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,4 @@ +numpy>=1.11 +scipy>=0.18 +pandas>=0.19 +patsy>=0.4 diff --git a/setup.cfg b/setup.cfg new file mode 100644 index 0000000..ae3ba97 --- /dev/null +++ b/setup.cfg @@ -0,0 +1,237 @@ +[metadata] +license_file = LICENSE.txt + +[tool:pytest] +# minversion = 3.6 +testpaths = statsmodels +addopts = --strict +# Filter warnings generated by dependencies +filterwarnings = + ignore:pandas.core.common.is_categorical_dtype:DeprecationWarning:patsy + ignore:Using or importing the ABCs:DeprecationWarning:patsy + ignore:Using a non-tuple sequence:FutureWarning:mkl_fft + ignore:Using a non-tuple:FutureWarning:scipy.signal + ignore:Using a non-tuple:FutureWarning:scipy.stats.stats + ignore:the matrix subclass is not the recommended:PendingDeprecationWarning: + ignore:Method .ptp is deprecated:FutureWarning:numpy.core.fromnumeric + ignore::DeprecationWarning:nbconvert.exporters.exporter_locator + ignore:Using or importing the ABCs:DeprecationWarning:jinja2.utils + error:genfromdta:FutureWarning: + error:StataReader:FutureWarning: + error:Estimation of VARMA:statsmodels.tools.sm_exceptions.EstimationWarning + error:Care should be used:UserWarning + error::statsmodels.tools.sm_exceptions.HypothesisTestWarning + error::statsmodels.tools.sm_exceptions.SpecificationWarning +markers = + example: mark a test that runs example code + matplotlib: mark a test that requires matplotlib + slow: mark a test as slow + smoke: mark a test as a smoketest + + +[versioneer] +VCS = git +style = pep440 +versionfile_source = statsmodels/_version.py +versionfile_build = statsmodels/_version.py +tag_prefix = v +parentdir_prefix = statsmodels- + + +[flake8] +exclude=.git,build,docs,versioneer.py +select= + E101, + # E101: indentation contains mixed spaces and tabs + W191, + # W191: indentation contains tabs + E124, + # E124: closing bracket does not match visual indentation + F811, + # F811: redefinition of unused 'pytest' from line 10 + F812, + # F812: list comprehension redefines 'x' from line 199 + F822, + # F822: undefined name name in __all__ + F823, + # F823: local variable name ... referenced before assignment + E129, + # E129: visually indented line with same indent as next logical line + E131, + # E131: continuation line unaligned for hanging indent + E125, + # E125: continuation line with same indent as next logical line + E111, + # E111: Indentation is not a multiple of four + E114, + # E114: Indentation is not a multiple of four (comment) + E117, + # E117: over-indented + E227, + # E227: missing whitespace around bitwise or shift operator + E228, + # E228: missing whitespace around modulo operator + E211, + # E211: whitespace before '[' + W601, + # W601: .has_key() is deprecated, use 'in' + W391, + # W391: blank line at end of file + E112, + # E112: expected an indented block + E113, + # E113: unexpected indentation + E223, + # E223: tab before operator + E224, + # E224: tab after operator + E242, + # E242: tab after ',' + E304, + # E304: blank lines found after function decorator + W602, + # W602: deprecated form of raising exception + W603, + # W603: '<>' is deprecated, use '!=' + W604, + # W604: backticks are deprecated, use 'repr()' + # W605, + # W605: invalid escape sequence 'x' + W606, + # W606: 'async' and 'await' are reserved keywords starting with Python 3.7 + F831, + # F831: duplicate argument name in function definition + E306, + # E306: expected 1 blank line before a nested definition, found 0 + E702, + # E702: multiple statements on one line (semicolon) + E703, + # E703: statement ends with a semicolon + + W2, + # W291: trailing whitespace + # W292: no newline at end of file + # W293: blank line contains whitespace + + E711, + # E711: comparison to None should be 'if cond is None:' + E712, + # E712: comparison to True should be 'if cond is True:' or 'if cond:' + E713, + # E713: test for membership should be 'not in' + E721, + # E721: do not compare types, use 'isinstance()' + + E74, + # E741 ambiguous variable name 'l', 'O', or 'I' + # E742: do not define classes named 'l', 'O', or 'I' + # E743: do not define functions named 'l', 'O', or 'I' + + F4, + # F401: 'foo.bar' imported but unused + # F402: import 'assert_equal' from line 7 shadowed by loop variable + # F403: 'from .data import *' used; unable to detect undefined names + # F404: future import(s) name after other statements + # F405: name may be undefined, or defined from star imports: module + # F406: 'from module import *' only allowed at module level + # F407: an undefined __future__ feature name was imported + + F6, + # F601: dictionary key name repeated with different values + # F602: dictionary key variable name repeated with different values + # F621: too many expressions in an assignment with star-unpacking + # F622: two or more starred expressions in an assignment (a, *b, *c = d) + # F631: assertion test is a tuple, which are always True + # F632: use ==/!= to compare str, bytes, and int literals + + F7, + # F701: a break statement outside of a while or for loop + # F702: a continue statement outside of a while or for loop + # F703: a continue statement in a finally block in a loop + # F704: a yield or yield from statement outside of a function + # F705: a return statement with arguments inside a generator + # F706: a return statement outside of a function/method + # F707: an except: block as not the last exception handler + # F721: doctest syntax error + # F722: syntax error in forward type annotation + + F821, + # F821: undefined name 'foobar' + + F9, + # F901: raise NotImplemented should be raise NotImplementedError + + E27, + # E271: multiple spaces after keyword + # E272: multiple spaces before keyword + # E273: tab after keyword + # E274: tab before keyword + # E275: missing whitespace after keyword + + E4, + # E401: multiple imports on one line + # E402: module level import not at top of file + + E9, + # E901: SyntaxError or IndentationError + # E902: IOError + # E999: Syntax Error + + +[coverage:run] +source = statsmodels +branch = True +plugins = Cython.Coverage +omit = + # print_version is untestable + */print_version.py + # skip compatibility code + */compat/* + # Unused file + */results/gee_generate_tests.py + # Results for tests + */tests/results/* + # Simulation checks + */tests/*_simulation_check.py + # Misc non-test files in test directories + */tests/_* + */tests/e* + */tests/c* + */tests/d* + */tests/g* + */tests/m* + */tests/p* + */tests/r* + */tests/s* + # Versioneer + */_version.py + +[coverage:report] +show_missing = True +ignore_errors = False +# Regexes for lines to exclude from consideration +exclude_lines = + # Have to re-enable the standard pragma + pragma: no cover + + # Don't complain about missing debug-only code: + def __repr__ + if self\.debug + + # Don't complain if tests don't hit defensive assertion code: + raise AssertionError + raise NotImplementedError + except NotImplementedError + except ImportError + except (HTTPError, URLError, SSLError, timeout) + except IGNORED_EXCEPTIONS + + # Ignore pass + pass + + # Don't complain if non-runnable code isn't run: + if 0: + if __name__ == .__main__.: + +[coverage:html] +directory = coverage_html_report diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..c33786d --- /dev/null +++ b/setup.py @@ -0,0 +1,350 @@ +""" +To build with coverage of Cython files +export SM_CYTHON_COVERAGE=1 +python setup.py develop +pytest --cov=statsmodels statsmodels +""" +import fnmatch +import os +import sys +import shutil +from collections import defaultdict +from os.path import relpath, abspath, split, join as pjoin + +import pkg_resources + +try: + # SM_FORCE_C is a testing shim to force setup to use C source files + FORCE_C = int(os.environ.get('SM_FORCE_C', 0)) + if FORCE_C: + raise ImportError('Force import error for testing') + from Cython import Tempita + from Cython.Build import cythonize + from Cython.Distutils import build_ext + + HAS_CYTHON = True +except ImportError: + from setuptools.command.build_ext import build_ext + + HAS_CYTHON = False +from setuptools import Extension, find_packages, setup +from distutils.command.clean import clean +from setuptools.dist import Distribution + +import versioneer + +############################################################################### +# Key Values that Change Each Release +############################################################################### +SETUP_REQUIREMENTS = {'numpy': '1.11', # released March 2016 + 'scipy': '0.18', # released July 2016 + } + +REQ_NOT_MET_MSG = """ +{0} is installed but older ({1}) than required ({2}). You must manually +upgrade {0} before installing or install into a fresh virtualenv. +""" +for key in SETUP_REQUIREMENTS: + import importlib + from distutils.version import LooseVersion + req_ver = LooseVersion(SETUP_REQUIREMENTS[key]) + try: + mod = importlib.import_module(key) + ver = LooseVersion(mod.__version__) + if ver < req_ver: + raise RuntimeError(REQ_NOT_MET_MSG.format(key, ver, req_ver)) + except ImportError: + pass + except AttributeError: + raise RuntimeError(REQ_NOT_MET_MSG.format(key, ver, req_ver)) + +INSTALL_REQUIREMENTS = SETUP_REQUIREMENTS.copy() +INSTALL_REQUIREMENTS.update({'pandas': '0.19', # released October 2016 + 'patsy': '0.4.0', # released July 2015 + }) + +CYTHON_MIN_VER = '0.24' # released Apr 2016 + +SETUP_REQUIRES = [k + '>=' + v for k, v in SETUP_REQUIREMENTS.items()] +INSTALL_REQUIRES = [k + '>=' + v for k, v in INSTALL_REQUIREMENTS.items()] + +EXTRAS_REQUIRE = {'build': ['cython>=' + CYTHON_MIN_VER], + 'develop': ['cython>=' + CYTHON_MIN_VER], + 'docs': ['sphinx', 'nbconvert', 'jupyter_client', + 'ipykernel', 'matplotlib', 'nbformat', 'numpydoc', + 'pandas-datareader']} + +############################################################################### +# Values that rarely change +############################################################################### +DISTNAME = 'statsmodels' +DESCRIPTION = 'Statistical computations and models for Python' +SETUP_DIR = split(abspath(__file__))[0] +with open(pjoin(SETUP_DIR, 'README.rst')) as readme: + README = readme.read() +LONG_DESCRIPTION = README +MAINTAINER = 'statsmodels Developers' +MAINTAINER_EMAIL = 'pystatsmodels@googlegroups.com' +URL = 'https://www.statsmodels.org/' +LICENSE = 'BSD License' +DOWNLOAD_URL = '' +PROJECT_URLS = { + 'Bug Tracker': 'https://github.com/statsmodels/statsmodels/issues', + 'Documentation': 'https://www.statsmodels.org/stable/index.html', + 'Source Code': 'https://github.com/statsmodels/statsmodels' +} + +CLASSIFIERS = ['Development Status :: 4 - Beta', + 'Environment :: Console', + 'Programming Language :: Cython', + 'Programming Language :: Python :: 2.7', + 'Programming Language :: Python :: 3.4', + 'Programming Language :: Python :: 3.5', + 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + 'Operating System :: OS Independent', + 'Intended Audience :: End Users/Desktop', + 'Intended Audience :: Developers', + 'Intended Audience :: Science/Research', + 'Natural Language :: English', + 'License :: OSI Approved :: BSD License', + 'Topic :: Office/Business :: Financial', + 'Topic :: Scientific/Engineering'] + +FILES_TO_INCLUDE_IN_PACKAGE = ['LICENSE.txt', 'setup.cfg'] + +FILES_COPIED_TO_PACKAGE = [] +for filename in FILES_TO_INCLUDE_IN_PACKAGE: + if os.path.exists(filename): + dest = os.path.join('statsmodels', filename) + shutil.copy2(filename, dest) + FILES_COPIED_TO_PACKAGE.append(dest) + +ADDITIONAL_PACKAGE_DATA = { + 'statsmodels': FILES_TO_INCLUDE_IN_PACKAGE, + 'statsmodels.datasets.tests': ['*.zip'], + 'statsmodels.iolib.tests.results': ['*.dta'], + 'statsmodels.stats.tests.results': ['*.json'], + 'statsmodels.tsa.vector_ar.tests.results': ['*.npz', '*.dat'], + 'statsmodels.stats.tests': ['*.txt'], + 'statsmodels.stats.libqsturng': ['*.r', '*.txt', '*.dat'], + 'statsmodels.stats.libqsturng.tests': ['*.csv', '*.dat'], + 'statsmodels.sandbox.regression.tests': ['*.dta', '*.csv'] +} + +############################################################################## +# Extension Building +############################################################################## +CYTHON_COVERAGE = os.environ.get('SM_CYTHON_COVERAGE', False) +CYTHON_COVERAGE = CYTHON_COVERAGE in ('1', 'true', '"true"') +CYTHON_TRACE_NOGIL = str(int(CYTHON_COVERAGE)) +if CYTHON_COVERAGE: + print('Building with coverage for Cython code') +COMPILER_DIRECTIVES = {'linetrace': CYTHON_COVERAGE} +DEFINE_MACROS = [('CYTHON_TRACE_NOGIL', CYTHON_TRACE_NOGIL)] + + +exts = dict( + _exponential_smoothers={'source': 'statsmodels/tsa/_exponential_smoothers.pyx'}, # noqa: E501 + _hamilton_filter={'source': 'statsmodels/tsa/regime_switching/_hamilton_filter.pyx.in'}, # noqa: E501 + _kim_smoother={'source': 'statsmodels/tsa/regime_switching/_kim_smoother.pyx.in'}, # noqa: E501 + _innovations={'source': 'statsmodels/tsa/innovations/_arma_innovations.pyx.in'}, # noqa: E501 + linbin={'source': 'statsmodels/nonparametric/linbin.pyx'}, + _smoothers_lowess={'source': 'statsmodels/nonparametric/_smoothers_lowess.pyx'}, # noqa: E501 + kalman_loglike={'source': 'statsmodels/tsa/kalmanf/kalman_loglike.pyx', + 'include_dirs': ['statsmodels/src'], + 'depends': ['statsmodels/src/capsule.h']}) + +statespace_exts = [ + 'statsmodels/tsa/statespace/_initialization.pyx.in', + 'statsmodels/tsa/statespace/_representation.pyx.in', + 'statsmodels/tsa/statespace/_kalman_filter.pyx.in', + 'statsmodels/tsa/statespace/_filters/_conventional.pyx.in', + 'statsmodels/tsa/statespace/_filters/_inversions.pyx.in', + 'statsmodels/tsa/statespace/_filters/_univariate.pyx.in', + 'statsmodels/tsa/statespace/_filters/_univariate_diffuse.pyx.in', + 'statsmodels/tsa/statespace/_kalman_smoother.pyx.in', + 'statsmodels/tsa/statespace/_smoothers/_alternative.pyx.in', + 'statsmodels/tsa/statespace/_smoothers/_classical.pyx.in', + 'statsmodels/tsa/statespace/_smoothers/_conventional.pyx.in', + 'statsmodels/tsa/statespace/_smoothers/_univariate.pyx.in', + 'statsmodels/tsa/statespace/_smoothers/_univariate_diffuse.pyx.in', + 'statsmodels/tsa/statespace/_simulation_smoother.pyx.in', + 'statsmodels/tsa/statespace/_tools.pyx.in', +] + + +class CleanCommand(clean): + def run(self): + msg = """ + +python setup.py clean is not supported. + +Use one of: + +* `git clean -xdf` to clean all untracked files +* `git clean -Xdf` to clean untracked files ignored by .gitignore +""" + print(msg) + sys.exit(1) + + +class DeferredBuildExt(build_ext): + """build_ext command for use when numpy headers are needed.""" + + def build_extensions(self): + self._update_extensions() + build_ext.build_extensions(self) + + def _update_extensions(self): + import numpy + from numpy.distutils.misc_util import get_info + + numpy_includes = [numpy.get_include()] + extra_incl = pkg_resources.resource_filename('numpy', 'core/include') + numpy_includes += [extra_incl] + numpy_includes = list(set(numpy_includes)) + numpy_math_libs = get_info('npymath') + + for extension in self.extensions: + if not hasattr(extension, 'include_dirs'): + continue + extension.include_dirs = list(set(extension.include_dirs + + numpy_includes)) + if extension.name in EXT_REQUIRES_NUMPY_MATH_LIBS: + extension.include_dirs += numpy_math_libs['include_dirs'] + extension.libraries += numpy_math_libs['libraries'] + extension.library_dirs += numpy_math_libs['library_dirs'] + + +cmdclass = versioneer.get_cmdclass() +cmdclass['build_ext'] = DeferredBuildExt +cmdclass['clean'] = CleanCommand + + +def check_source(source_name): + """Chooses C or pyx source files, and raises if C is needed but missing""" + source_ext = '.pyx' + if not HAS_CYTHON: + source_name = source_name.replace('.pyx.in', '.c') + source_name = source_name.replace('.pyx', '.c') + source_ext = '.c' + if not os.path.exists(source_name): + msg = 'C source not found. You must have Cython installed to ' \ + 'build if the C source files have not been generated.' + raise IOError(msg) + return source_name, source_ext + + +def process_tempita(source_name): + """Runs pyx.in files through tempita is needed""" + if source_name.endswith('pyx.in'): + with open(source_name, 'r') as templated: + pyx_template = templated.read() + pyx = Tempita.sub(pyx_template) + pyx_filename = source_name[:-3] + with open(pyx_filename, 'w') as pyx_file: + pyx_file.write(pyx) + file_stats = os.stat(source_name) + try: + os.utime(pyx_filename, ns=(file_stats.st_atime_ns, + file_stats.st_mtime_ns)) + except AttributeError: + os.utime(pyx_filename, (file_stats.st_atime, file_stats.st_mtime)) + source_name = pyx_filename + return source_name + + +EXT_REQUIRES_NUMPY_MATH_LIBS = [] +extensions = [] +for config in exts.values(): + uses_blas = True + source, ext = check_source(config['source']) + source = process_tempita(source) + name = source.replace('/', '.').replace(ext, '') + include_dirs = config.get('include_dirs', []) + depends = config.get('depends', []) + libraries = config.get('libraries', []) + library_dirs = config.get('library_dirs', []) + + uses_numpy_libraries = config.get('numpy_libraries', False) + if uses_blas or uses_numpy_libraries: + EXT_REQUIRES_NUMPY_MATH_LIBS.append(name) + + ext = Extension(name, [source], + include_dirs=include_dirs, depends=depends, + libraries=libraries, library_dirs=library_dirs, + define_macros=DEFINE_MACROS) + extensions.append(ext) + +for source in statespace_exts: + source, ext = check_source(source) + source = process_tempita(source) + name = source.replace('/', '.').replace(ext, '') + + EXT_REQUIRES_NUMPY_MATH_LIBS.append(name) + ext = Extension(name, [source], + include_dirs=['statsmodels/src'], depends=[], + libraries=[], library_dirs=[], + define_macros=DEFINE_MACROS) + extensions.append(ext) + +if HAS_CYTHON: + extensions = cythonize(extensions, compiler_directives=COMPILER_DIRECTIVES, + language_level=3) + +############################################################################## +# Construct package data +############################################################################## +package_data = defaultdict(list) +filetypes = ['*.csv', '*.txt', '*.dta'] +for root, _, filenames in os.walk(pjoin(os.getcwd(), 'statsmodels', 'datasets')): # noqa: E501 + matches = [] + for filetype in filetypes: + for filename in fnmatch.filter(filenames, filetype): + matches.append(filename) + if matches: + package_data['.'.join(relpath(root).split(os.path.sep))] = filetypes +for root, _, _ in os.walk(pjoin(os.getcwd(), 'statsmodels')): + if root.endswith('results'): + package_data['.'.join(relpath(root).split(os.path.sep))] = filetypes + +for path, filetypes in ADDITIONAL_PACKAGE_DATA.items(): + package_data[path].extend(filetypes) + +if os.path.exists('MANIFEST'): + os.unlink('MANIFEST') + + +class BinaryDistribution(Distribution): + def is_pure(self): + return False + + +setup(name=DISTNAME, + version=versioneer.get_version(), + maintainer=MAINTAINER, + ext_modules=extensions, + maintainer_email=MAINTAINER_EMAIL, + description=DESCRIPTION, + license=LICENSE, + url=URL, + download_url=DOWNLOAD_URL, + project_urls=PROJECT_URLS, + long_description=LONG_DESCRIPTION, + classifiers=CLASSIFIERS, + platforms='any', + cmdclass=cmdclass, + packages=find_packages(), + package_data=package_data, + distclass=BinaryDistribution, + include_package_data=False, # True will install all files in repo + setup_requires=SETUP_REQUIRES, + install_requires=INSTALL_REQUIRES, + extras_require=EXTRAS_REQUIRE, + zip_safe=False + ) + +# Clean-up copied files +for copy in FILES_COPIED_TO_PACKAGE: + os.unlink(copy) diff --git a/statsmodels/__init__.py b/statsmodels/__init__.py new file mode 100644 index 0000000..41eb88b --- /dev/null +++ b/statsmodels/__init__.py @@ -0,0 +1,26 @@ + +from statsmodels._version import get_versions + +debug_warnings = False + +if debug_warnings: + import warnings + from .compat import PY3 + + warnings.simplefilter("default") + # use the following to raise an exception for debugging specific warnings + # warnings.filterwarnings("error", message=".*integer.*") + if PY3: + # ResourceWarning doesn't exist in python 2 + # we have currently many ResourceWarnings in the datasets on python 3.4 + warnings.simplefilter("ignore", ResourceWarning) # noqa:F821 + + +def test(*args, **kwargs): + from .tools._testing import PytestTester + tst = PytestTester(package_path=__file__) + return tst(*args, **kwargs) + + +__version__ = get_versions()['version'] +del get_versions diff --git a/statsmodels/_version.py b/statsmodels/_version.py new file mode 100644 index 0000000..3a95f66 --- /dev/null +++ b/statsmodels/_version.py @@ -0,0 +1,520 @@ + +# This file helps to compute a version number in source trees obtained from +# git-archive tarball (such as those provided by githubs download-from-tag +# feature). Distribution tarballs (built by setup.py sdist) and build +# directories (produced by setup.py build) will contain a much shorter file +# that just contains the computed version number. + +# This file is released into the public domain. Generated by +# versioneer-0.18 (https://github.com/warner/python-versioneer) + +"""Git implementation of _version.py.""" + +import errno +import os +import re +import subprocess +import sys + + +def get_keywords(): + """Get the keywords needed to look up the version information.""" + # these strings will be replaced by git during git-archive. + # setup.py/versioneer.py will grep for the variable names, so they must + # each be defined on a line of their own. _version.py will just call + # get_keywords(). + git_refnames = " (tag: v0.10.2)" + git_full = "988699f797d8f02a6caa2cc31317c7e7d49d2c92" + git_date = "2019-11-23 08:19:08 +0000" + keywords = {"refnames": git_refnames, "full": git_full, "date": git_date} + return keywords + + +class VersioneerConfig: + """Container for Versioneer configuration parameters.""" + + +def get_config(): + """Create, populate and return the VersioneerConfig() object.""" + # these strings are filled in when 'setup.py versioneer' creates + # _version.py + cfg = VersioneerConfig() + cfg.VCS = "git" + cfg.style = "pep440" + cfg.tag_prefix = "" + cfg.parentdir_prefix = "statsmodels-" + cfg.versionfile_source = "statsmodels/_version.py" + cfg.verbose = False + return cfg + + +class NotThisMethod(Exception): + """Exception raised if a method is not valid for the current scenario.""" + + +LONG_VERSION_PY = {} +HANDLERS = {} + + +def register_vcs_handler(vcs, method): # decorator + """Decorator to mark a method as the handler for a particular VCS.""" + def decorate(f): + """Store f in HANDLERS[vcs][method].""" + if vcs not in HANDLERS: + HANDLERS[vcs] = {} + HANDLERS[vcs][method] = f + return f + return decorate + + +def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, + env=None): + """Call the given command(s).""" + assert isinstance(commands, list) + p = None + for c in commands: + try: + dispcmd = str([c] + args) + # remember shell=False, so use git.cmd on windows, not just git + p = subprocess.Popen([c] + args, cwd=cwd, env=env, + stdout=subprocess.PIPE, + stderr=(subprocess.PIPE if hide_stderr + else None)) + break + except EnvironmentError: + e = sys.exc_info()[1] + if e.errno == errno.ENOENT: + continue + if verbose: + print("unable to run %s" % dispcmd) + print(e) + return None, None + else: + if verbose: + print("unable to find command, tried %s" % (commands,)) + return None, None + stdout = p.communicate()[0].strip() + if sys.version_info[0] >= 3: + stdout = stdout.decode() + if p.returncode != 0: + if verbose: + print("unable to run %s (error)" % dispcmd) + print("stdout was %s" % stdout) + return None, p.returncode + return stdout, p.returncode + + +def versions_from_parentdir(parentdir_prefix, root, verbose): + """Try to determine the version from the parent directory name. + + Source tarballs conventionally unpack into a directory that includes both + the project name and a version string. We will also support searching up + two directory levels for an appropriately named parent directory + """ + rootdirs = [] + + for i in range(3): + dirname = os.path.basename(root) + if dirname.startswith(parentdir_prefix): + return {"version": dirname[len(parentdir_prefix):], + "full-revisionid": None, + "dirty": False, "error": None, "date": None} + else: + rootdirs.append(root) + root = os.path.dirname(root) # up a level + + if verbose: + print("Tried directories %s but none started with prefix %s" % + (str(rootdirs), parentdir_prefix)) + raise NotThisMethod("rootdir doesn't start with parentdir_prefix") + + +@register_vcs_handler("git", "get_keywords") +def git_get_keywords(versionfile_abs): + """Extract version information from the given file.""" + # the code embedded in _version.py can just fetch the value of these + # keywords. When used from setup.py, we don't want to import _version.py, + # so we do it with a regexp instead. This function is not used from + # _version.py. + keywords = {} + try: + f = open(versionfile_abs, "r") + for line in f.readlines(): + if line.strip().startswith("git_refnames ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["refnames"] = mo.group(1) + if line.strip().startswith("git_full ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["full"] = mo.group(1) + if line.strip().startswith("git_date ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["date"] = mo.group(1) + f.close() + except EnvironmentError: + pass + return keywords + + +@register_vcs_handler("git", "keywords") +def git_versions_from_keywords(keywords, tag_prefix, verbose): + """Get version information from git keywords.""" + if not keywords: + raise NotThisMethod("no keywords at all, weird") + date = keywords.get("date") + if date is not None: + # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant + # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 + # -like" string, which we must then edit to make compliant), because + # it's been around since git-1.5.3, and it's too difficult to + # discover which version we're using, or to work around using an + # older one. + date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + refnames = keywords["refnames"].strip() + if refnames.startswith("$Format"): + if verbose: + print("keywords are unexpanded, not using") + raise NotThisMethod("unexpanded keywords, not a git-archive tarball") + refs = set([r.strip() for r in refnames.strip("()").split(",")]) + # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of + # just "foo-1.0". If we see a "tag: " prefix, prefer those. + TAG = "tag: " + tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) + if not tags: + # Either we're using git < 1.8.3, or there really are no tags. We use + # a heuristic: assume all version tags have a digit. The old git %d + # expansion behaves like git log --decorate=short and strips out the + # refs/heads/ and refs/tags/ prefixes that would let us distinguish + # between branches and tags. By ignoring refnames without digits, we + # filter out many common branch names like "release" and + # "stabilization", as well as "HEAD" and "master". + tags = set([r for r in refs if re.search(r'\d', r)]) + if verbose: + print("discarding '%s', no digits" % ",".join(refs - tags)) + if verbose: + print("likely tags: %s" % ",".join(sorted(tags))) + for ref in sorted(tags): + # sorting will prefer e.g. "2.0" over "2.0rc1" + if ref.startswith(tag_prefix): + r = ref[len(tag_prefix):] + if verbose: + print("picking %s" % r) + return {"version": r, + "full-revisionid": keywords["full"].strip(), + "dirty": False, "error": None, + "date": date} + # no suitable tags, so version is "0+unknown", but full hex is still there + if verbose: + print("no suitable tags, using unknown + full revision id") + return {"version": "0+unknown", + "full-revisionid": keywords["full"].strip(), + "dirty": False, "error": "no suitable tags", "date": None} + + +@register_vcs_handler("git", "pieces_from_vcs") +def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + """Get version from 'git describe' in the root of the source tree. + + This only gets called if the git-archive 'subst' keywords were *not* + expanded, and _version.py hasn't already been rewritten with a short + version string, meaning we're inside a checked out source tree. + """ + GITS = ["git"] + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] + + out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, + hide_stderr=True) + if rc != 0: + if verbose: + print("Directory %s not under git control" % root) + raise NotThisMethod("'git rev-parse --git-dir' returned error") + + # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] + # if there isn't one, this yields HEX[-dirty] (no NUM) + describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", + "--always", "--long", + "--match", "%s*" % tag_prefix], + cwd=root) + # --long was added in git-1.5.5 + if describe_out is None: + raise NotThisMethod("'git describe' failed") + describe_out = describe_out.strip() + full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) + if full_out is None: + raise NotThisMethod("'git rev-parse' failed") + full_out = full_out.strip() + + pieces = {} + pieces["long"] = full_out + pieces["short"] = full_out[:7] # maybe improved later + pieces["error"] = None + + # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] + # TAG might have hyphens. + git_describe = describe_out + + # look for -dirty suffix + dirty = git_describe.endswith("-dirty") + pieces["dirty"] = dirty + if dirty: + git_describe = git_describe[:git_describe.rindex("-dirty")] + + # now we have TAG-NUM-gHEX or HEX + + if "-" in git_describe: + # TAG-NUM-gHEX + mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) + if not mo: + # unparseable. Maybe git-describe is misbehaving? + pieces["error"] = ("unable to parse git-describe output: '%s'" + % describe_out) + return pieces + + # tag + full_tag = mo.group(1) + if not full_tag.startswith(tag_prefix): + if verbose: + fmt = "tag '%s' doesn't start with prefix '%s'" + print(fmt % (full_tag, tag_prefix)) + pieces["error"] = ("tag '%s' doesn't start with prefix '%s'" + % (full_tag, tag_prefix)) + return pieces + pieces["closest-tag"] = full_tag[len(tag_prefix):] + + # distance: number of commits since tag + pieces["distance"] = int(mo.group(2)) + + # commit: short hex revision ID + pieces["short"] = mo.group(3) + + else: + # HEX: no tags + pieces["closest-tag"] = None + count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], + cwd=root) + pieces["distance"] = int(count_out) # total number of commits + + # commit date: see ISO-8601 comment in git_versions_from_keywords() + date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], + cwd=root)[0].strip() + pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + + return pieces + + +def plus_or_dot(pieces): + """Return a + if we don't already have one, else return a .""" + if "+" in pieces.get("closest-tag", ""): + return "." + return "+" + + +def render_pep440(pieces): + """Build up version string, with post-release "local version identifier". + + Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you + get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty + + Exceptions: + 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += plus_or_dot(pieces) + rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + else: + # exception #1 + rendered = "0+untagged.%d.g%s" % (pieces["distance"], + pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + return rendered + + +def render_pep440_pre(pieces): + """TAG[.post.devDISTANCE] -- No -dirty. + + Exceptions: + 1: no tags. 0.post.devDISTANCE + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"]: + rendered += ".post.dev%d" % pieces["distance"] + else: + # exception #1 + rendered = "0.post.dev%d" % pieces["distance"] + return rendered + + +def render_pep440_post(pieces): + """TAG[.postDISTANCE[.dev0]+gHEX] . + + The ".dev0" means dirty. Note that .dev0 sorts backwards + (a dirty tree will appear "older" than the corresponding clean one), + but you shouldn't be releasing software with -dirty anyways. + + Exceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += ".post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + rendered += plus_or_dot(pieces) + rendered += "g%s" % pieces["short"] + else: + # exception #1 + rendered = "0.post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + rendered += "+g%s" % pieces["short"] + return rendered + + +def render_pep440_old(pieces): + """TAG[.postDISTANCE[.dev0]] . + + The ".dev0" means dirty. + + Eexceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += ".post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + else: + # exception #1 + rendered = "0.post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + return rendered + + +def render_git_describe(pieces): + """TAG[-DISTANCE-gHEX][-dirty]. + + Like 'git describe --tags --dirty --always'. + + Exceptions: + 1: no tags. HEX[-dirty] (note: no 'g' prefix) + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"]: + rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) + else: + # exception #1 + rendered = pieces["short"] + if pieces["dirty"]: + rendered += "-dirty" + return rendered + + +def render_git_describe_long(pieces): + """TAG-DISTANCE-gHEX[-dirty]. + + Like 'git describe --tags --dirty --always -long'. + The distance/hash is unconditional. + + Exceptions: + 1: no tags. HEX[-dirty] (note: no 'g' prefix) + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) + else: + # exception #1 + rendered = pieces["short"] + if pieces["dirty"]: + rendered += "-dirty" + return rendered + + +def render(pieces, style): + """Render the given version pieces into the requested style.""" + if pieces["error"]: + return {"version": "unknown", + "full-revisionid": pieces.get("long"), + "dirty": None, + "error": pieces["error"], + "date": None} + + if not style or style == "default": + style = "pep440" # the default + + if style == "pep440": + rendered = render_pep440(pieces) + elif style == "pep440-pre": + rendered = render_pep440_pre(pieces) + elif style == "pep440-post": + rendered = render_pep440_post(pieces) + elif style == "pep440-old": + rendered = render_pep440_old(pieces) + elif style == "git-describe": + rendered = render_git_describe(pieces) + elif style == "git-describe-long": + rendered = render_git_describe_long(pieces) + else: + raise ValueError("unknown style '%s'" % style) + + return {"version": rendered, "full-revisionid": pieces["long"], + "dirty": pieces["dirty"], "error": None, + "date": pieces.get("date")} + + +def get_versions(): + """Get version information or return default if unable to do so.""" + # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have + # __file__, we can work backwards from there to the root. Some + # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which + # case we can only use expanded keywords. + + cfg = get_config() + verbose = cfg.verbose + + try: + return git_versions_from_keywords(get_keywords(), cfg.tag_prefix, + verbose) + except NotThisMethod: + pass + + try: + root = os.path.realpath(__file__) + # versionfile_source is the relative path from the top of the source + # tree (where the .git directory might live) to this file. Invert + # this to find the root from __file__. + for i in cfg.versionfile_source.split('/'): + root = os.path.dirname(root) + except NameError: + return {"version": "0+unknown", "full-revisionid": None, + "dirty": None, + "error": "unable to find root of source tree", + "date": None} + + try: + pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose) + return render(pieces, cfg.style) + except NotThisMethod: + pass + + try: + if cfg.parentdir_prefix: + return versions_from_parentdir(cfg.parentdir_prefix, root, verbose) + except NotThisMethod: + pass + + return {"version": "0+unknown", "full-revisionid": None, + "dirty": None, + "error": "unable to compute version", "date": None} diff --git a/statsmodels/api.py b/statsmodels/api.py new file mode 100644 index 0000000..6c23747 --- /dev/null +++ b/statsmodels/api.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +# flake8: noqa +from . import iolib +from . import datasets +from . import tools +from .tools.tools import add_constant, categorical +from . import regression +from .regression.linear_model import OLS, GLS, WLS, GLSAR +from .regression.recursive_ls import RecursiveLS +from .regression.quantile_regression import QuantReg +from .regression.mixed_linear_model import MixedLM +from .genmod import api as genmod +from .genmod.api import (GLM, GEE, OrdinalGEE, NominalGEE, families, + cov_struct, + BinomialBayesMixedGLM, PoissonBayesMixedGLM) +from . import robust +from .robust.robust_linear_model import RLM +from .discrete.discrete_model import (Poisson, Logit, Probit, + MNLogit, NegativeBinomial, + GeneralizedPoisson, + NegativeBinomialP) +from .discrete.count_model import (ZeroInflatedPoisson, + ZeroInflatedGeneralizedPoisson, + ZeroInflatedNegativeBinomialP) +from .tsa import api as tsa +from .duration.survfunc import SurvfuncRight +from .duration.hazard_regression import PHReg +from .imputation.mice import MICE, MICEData +from .imputation.bayes_mi import BayesGaussMI, MI +from .nonparametric import api as nonparametric +from . import distributions +from .__init__ import test + +from .gam.generalized_additive_model import GLMGam +from .gam import api as gam +from .graphics.gofplots import qqplot, qqplot_2samples, qqline, ProbPlot +from .graphics import api as graphics +from .stats import api as stats +from .emplike import api as emplike +from .duration import api as duration +from .multivariate.pca import PCA +from .multivariate.manova import MANOVA +from .multivariate.factor import Factor +from .multivariate import api as multivariate + +from .formula import api as formula + +from .iolib.smpickle import load_pickle as load + +from .tools.print_version import show_versions +from .tools.web import webdoc + +import os +chmpath = os.path.join(os.path.dirname(__file__), 'statsmodelsdoc.chm') +if os.path.exists(chmpath): + # As of 0.10.0, this is not reached. See GH#5134 + + def open_help(chmpath=chmpath): + from subprocess import Popen + + p = Popen(chmpath, shell=True) + +del os +del chmpath + +from ._version import get_versions +__version__ = get_versions()['version'] +del get_versions diff --git a/statsmodels/base/__init__.py b/statsmodels/base/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/base/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/base/_constraints.py b/statsmodels/base/_constraints.py new file mode 100644 index 0000000..c19014b --- /dev/null +++ b/statsmodels/base/_constraints.py @@ -0,0 +1,317 @@ +# -*- coding: utf-8 -*- +""" +Created on Thu May 15 16:36:05 2014 + +Author: Josef Perktold +License: BSD-3 + +""" + +import numpy as np + + +class TransformRestriction(object): + """Transformation for linear constraints `R params = q` + + Note, the transformation from the reduced to the full parameters is an + affine and not a linear transformation if q is not zero. + + + Parameters + ---------- + R : array_like + Linear restriction matrix + q : arraylike or None + values of the linear restrictions + + + Notes + ----- + The reduced parameters are not sorted with respect to constraints. + + TODO: error checking, eg. inconsistent constraints, how? + + Inconsistent constraints will raise an exception in the calculation of + the constant or offset. However, homogeneous constraints, where q=0, will + can have a solution where the relevant parameters are constraint to be + zero, as in the following example:: + + b1 + b2 = 0 and b1 + 2*b2 = 0, implies that b2 = 0. + + The transformation applied from full to reduced parameter space does not + raise and exception if the constraint doesn't hold. + TODO: maybe change this, what's the behavior in this case? + + + The `reduce` transform is applied to the array of explanatory variables, + `exog`, when transforming a linear model to impose the constraints. + + """ + + def __init__(self, R, q=None): + + # The calculations are based on Stata manual for makecns + R = self.R = np.atleast_2d(R) + if q is not None: + q = self.q = np.asarray(q) + + k_constr, k_vars = R.shape + self.k_constr, self.k_vars = k_constr, k_vars + self.k_unconstr = k_vars - k_constr + + m = np.eye(k_vars) - R.T.dot(np.linalg.pinv(R).T) + evals, evecs = np.linalg.eigh(m) + + # This normalizes the transformation so the larges element is 1. + # It makes it easier to interpret simple restrictions, e.g. b1 + b2 = 0 + # TODO: make this work, there is something wrong, does not round-trip + # need to adjust constant + #evecs_maxabs = np.max(np.abs(evecs), 0) + #evecs = evecs / evecs_maxabs + + self.evals = evals + self.evecs = evecs # temporarily attach as attribute + L = self.L = evecs[:, :k_constr] + self.transf_mat = evecs[:, k_constr:] + + if q is not None: + # use solve instead of inv + #self.constant = q.T.dot(np.linalg.inv(L.T.dot(R.T)).dot(L.T)) + try: + self.constant = q.T.dot(np.linalg.solve(L.T.dot(R.T), L.T)) + except np.linalg.linalg.LinAlgError as e: + raise ValueError('possibly inconsistent constraints. error ' + 'generated by\n%r' % (e, )) + else: + self.constant = 0 + + def expand(self, params_reduced): + """transform from the reduced to the full parameter space + + Parameters + ---------- + params_reduced : array_like + parameters in the transformed space + + Returns + ------- + params : array_like + parameters in the original space + + Notes + ----- + If the restriction is not homogeneous, i.e. q is not equal to zero, + then this is an affine transform. + + """ + params_reduced = np.asarray(params_reduced) + return self.transf_mat.dot(params_reduced.T).T + self.constant + + def reduce(self, params): + """transform from the full to the reduced parameter space + + Parameters + ---------- + params : array_like + parameters or data in the original space + + Returns + ------- + params_reduced : array_like + parameters in the transformed space + + This transform can be applied to the original parameters as well + as to the data. If params is 2-d, then each row is transformed. + + """ + params = np.asarray(params) + return params.dot(self.transf_mat) + + +def transform_params_constraint(params, Sinv, R, q): + """find the parameters that statisfy linear constraint from unconstraint + + The linear constraint R params = q is imposed. + + Parameters + ---------- + params : array_like + unconstraint parameters + Sinv : ndarray, 2d, symmetric + covariance matrix of the parameter estimate + R : ndarray, 2d + constraint matrix + q : ndarray, 1d + values of the constraint + + Returns + ------- + params_constraint : ndarray + parameters of the same length as params satisfying the constraint + + Notes + ----- + This is the exact formula for OLS and other linear models. It will be + a local approximation for nonlinear models. + + TODO: Is Sinv always the covariance matrix? + In the linear case it can be (X'X)^{-1} or sigmahat^2 (X'X)^{-1}. + + My guess is that this is the point in the subspace that satisfies + the constraint that has minimum Mahalanobis distance. Proof ? + + """ + + rsr = R.dot(Sinv).dot(R.T) + + reduction = Sinv.dot(R.T).dot(np.linalg.solve(rsr, R.dot(params) - q)) + return params - reduction + + +def fit_constrained(model, constraint_matrix, constraint_values, + start_params=None, fit_kwds=None): + # note: self is model instance + """fit model subject to linear equality constraints + + The constraints are of the form `R params = q` + where R is the constraint_matrix and q is the vector of constraint_values. + + The estimation creates a new model with transformed design matrix, + exog, and converts the results back to the original parameterization. + + + Parameters + ---------- + model: model instance + An instance of a model, see limitations in Notes section + constraint_matrix : array_like, 2D + This is R in the linear equality constraint `R params = q`. + The number of columns needs to be the same as the number of columns + in exog. + constraint_values : + This is `q` in the linear equality constraint `R params = q` + If it is a tuple, then the constraint needs to be given by two + arrays (constraint_matrix, constraint_value), i.e. (R, q). + Otherwise, the constraints can be given as strings or list of + strings. + see t_test for details + start_params : None or array_like + starting values for the optimization. `start_params` needs to be + given in the original parameter space and are internally + transformed. + **fit_kwds : keyword arguments + fit_kwds are used in the optimization of the transformed model. + + Returns + ------- + params : ndarray ? + estimated parameters (in the original parameterization + cov_params : ndarray + covariance matrix of the parameter estimates. This is a reverse + transformation of the covariance matrix of the transformed model given + by `cov_params()` + Note: `fit_kwds` can affect the choice of covariance, e.g. by + specifying `cov_type`, which will be reflected in the returned + covariance. + res_constr : results instance + This is the results instance for the created transformed model. + + + Notes + ----- + Limitations: + + Models where the number of parameters is different from the number of + columns of exog are not yet supported. + + Requires a model that implement an offset option. + + + """ + self = model # internal alias, used for methods + if fit_kwds is None: + fit_kwds = {} + + R, q = constraint_matrix, constraint_values + endog, exog = self.endog, self.exog + + transf = TransformRestriction(R, q) + + exogp_st = transf.reduce(exog) + + offset = exog.dot(transf.constant.squeeze()) + if hasattr(self, 'offset'): + offset += self.offset + + if start_params is not None: + start_params = transf.reduce(start_params) + + #need copy, because we don't want to change it, we don't need deepcopy + import copy + init_kwds = copy.copy(self._get_init_kwds()) + + # TODO: refactor to combine with above or offset_all + if 'offset' in init_kwds: + del init_kwds['offset'] + + # using offset as keywords is not supported in all modules + mod_constr = self.__class__(endog, exogp_st, offset=offset, **init_kwds) + res_constr = mod_constr.fit(start_params=start_params, **fit_kwds) + params_orig = transf.expand(res_constr.params).squeeze() + cov_params = transf.transf_mat.dot(res_constr.cov_params()).dot(transf.transf_mat.T) + + return params_orig, cov_params, res_constr + + +def fit_constrained_wrap(model, constraints, start_params=None, **fit_kwds): + """fit_constraint that returns a results instance + + This is a development version for fit_constrained methods or + fit_constrained as standalone function. + + It will not work correctly for all models because creating a new + results instance is not standardized for use outside the `fit` methods, + and might need adjustements for this. + + This is the prototype for the fit_constrained method that has been added + to Poisson and GLM. + + """ + + self = model # alias for use as method + + #constraints = (R, q) + # TODO: temporary trailing underscore to not overwrite the monkey + # patched version + # TODO: decide whether to move the imports + from patsy import DesignInfo + # we need this import if we copy it to a different module + #from statsmodels.base._constraints import fit_constrained + + # same pattern as in base.LikelihoodModel.t_test + lc = DesignInfo(self.exog_names).linear_constraint(constraints) + R, q = lc.coefs, lc.constants + + # TODO: add start_params option, need access to tranformation + # fit_constrained needs to do the transformation + params, cov, res_constr = fit_constrained(self, R, q, + start_params=start_params, + fit_kwds=fit_kwds) + #create dummy results Instance, TODO: wire up properly + res = self.fit(start_params=params, maxiter=0, + warn_convergence=False) # we get a wrapper back + res._results.params = params + res._results.cov_params_default = cov + cov_type = fit_kwds.get('cov_type', 'nonrobust') + if cov_type == 'nonrobust': + res._results.normalized_cov_params = cov / res_constr.scale + else: + res._results.normalized_cov_params = None + + k_constr = len(q) + res._results.df_resid += k_constr + res._results.df_model -= k_constr + res._results.constraints = lc + res._results.k_constr = k_constr + res._results.results_constrained = res_constr + return res diff --git a/statsmodels/base/_parameter_inference.py b/statsmodels/base/_parameter_inference.py new file mode 100644 index 0000000..4699cc6 --- /dev/null +++ b/statsmodels/base/_parameter_inference.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +""" +Created on Wed May 30 15:11:09 2018 + +@author: josef +""" + +import numpy as np +from scipy import stats + + +# this is a copy from stats._diagnostic_other +def _lm_robust(score, constraint_matrix, score_deriv_inv, cov_score, + cov_params=None): + '''general formula for score/LM test + + generalized score or lagrange multiplier test for implicit constraints + + `r(params) = 0`, with gradient `R = d r / d params` + + linear constraints are given by `R params - q = 0` + + It is assumed that all arrays are evaluated at the constrained estimates. + + + Parameters + ---------- + score : ndarray, 1-D + derivative of objective function at estimated parameters + of constrained model + constraint_matrix R : ndarray + Linear restriction matrix or Jacobian of nonlinear constraints + score_deriv_inv, Ainv : ndarray, symmetric, square + inverse of second derivative of objective function + TODO: could be inverse of OPG or any other estimator if information + matrix equality holds + cov_score B : ndarray, symmetric, square + covariance matrix of the score. This is the inner part of a sandwich + estimator. + cov_params V : ndarray, symmetric, square + covariance of full parameter vector evaluated at constrained parameter + estimate. This can be specified instead of cov_score B. + + Returns + ------- + lm_stat : float + score/lagrange multiplier statistic + p-value : float + p-value of the LM test based on chisquare distribution + + Notes + ----- + + ''' + # shorthand alias + R, Ainv, B, V = constraint_matrix, score_deriv_inv, cov_score, cov_params + + k_constraints = np.linalg.matrix_rank(R) + tmp = R.dot(Ainv) + wscore = tmp.dot(score) # C Ainv score + + if B is None and V is None: + # only Ainv is given, so we assume information matrix identity holds + # computational short cut, should be same if Ainv == inv(B) + lm_stat = score.dot(Ainv.dot(score)) + else: + # information matrix identity does not hold + if V is None: + inner = tmp.dot(B).dot(tmp.T) + else: + inner = R.dot(V).dot(R.T) + + #lm_stat2 = wscore.dot(np.linalg.pinv(inner).dot(wscore)) + # Let's assume inner is invertible, TODO: check if usecase for pinv exists + lm_stat = wscore.dot(np.linalg.solve(inner, wscore)) + pval = stats.chi2.sf(lm_stat, k_constraints) + return lm_stat, pval, k_constraints + + +def score_test(self, exog_extra=None, params_constrained=None, + hypothesis='joint', cov_type=None, cov_kwds=None, + k_constraints=None, observed=True): + """score test for restrictions or for omitted variables + + Null Hypothesis : constraints are satisfied + + Alternative Hypothesis : at least one of the constraints does not hold + + This allows to specify restricted and unrestricted model properties in + three different ways + + - fit_constrained result: model contains score and hessian function for + the full, unrestricted model, but the parameter estimate in the results + instance is for the restricted model. This is the case if the model + was estimated with fit_constrained. + - restricted model with variable addition: If exog_extra is not None, then + it is assumed that the current model is a model with zero restrictions + and the unrestricted model is given by adding exog_extra as additional + explanatory variables. + - unrestricted model with restricted parameters explicitly provided. If + params_constrained is not None, then the model is assumed to be for the + unrestricted model, but the provided parameters are for the restricted + model. + TODO: This case will currently only work for `nonrobust` cov_type, + otherwise we will also need the restriction matrix provided by the user. + + + Parameters + ---------- + exog_extra : None or array_like + Explanatory variables that are jointly tested for inclusion in the + model, i.e. omitted variables. + params_constrained : array_like + estimated parameter of the restricted model. This can be the + parameter estimate for the current when testing for omitted + variables. + hypothesis : str, 'joint' (default) or 'separate' + If hypothesis is 'joint', then the chisquare test results for the + joint hypothesis that all constraints hold is returned. + If hypothesis is 'joint', then z-test results for each constraint + is returned. + This is currently only implemented for cov_type="nonrobust". + cov_type : str + Warning: only partially implemented so far, currently only "nonrobust" + and "HC0" are supported. + If cov_type is None, then the cov_type specified in fit for the Wald + tests is used. + If the cov_type argument is not None, then it will be used instead of + the Wald cov_type given in fit. + k_constraints : int or None + Number of constraints that were used in the estimation of params + restricted relative to the number of exog in the model. + This must be provided if no exog_extra are given. If exog_extra is + not None, then k_constraints is assumed to be zero if it is None. + observed : bool + If True, then the observed Hessian is used in calculating the + covariance matrix of the score. If false then the expected + information matrix is used. This currently only applies to GLM where + EIM is available. + Warning: This option might still change. + + Returns + ------- + chi2_stat : float + chisquare statistic for the score test + p-value : float + P-value of the score test based on the chisquare distribution. + df : int + Degrees of freedom used in the p-value calculation. This is equal + to the number of constraints. + + Notes + ----- + Status: experimental, several options are not implemented yet or are not + verified yet. Currently available ptions might also still change. + + cov_type is 'nonrobust': + + The covariance matrix for the score is based on the Hessian, i.e. + observed information matrix or optionally on the expected information + matrix. + + cov_type is 'HC0' + + The covariance matrix of the score is the simple empirical covariance of + score_obs without degrees of freedom correction. + + + """ + # TODO: we are computing unnecessary things for cov_type nonrobust + model = self.model + nobs = model.endog.shape[0] # model.nobs + # discrete Poisson does not have nobs + if params_constrained is None: + params_constrained = self.params + cov_type = cov_type if cov_type is not None else self.cov_type + r_matrix = None + + if observed is False: + hess_kwd = {'observed': False} + else: + hess_kwd = {} + + if exog_extra is None: + + if hasattr(self, 'constraints'): + k_constraints = self.constraints.coefs.shape[0] + r_matrix = self.constraints.coefs + else: + if k_constraints is None: + raise ValueError('if exog_extra is None, then k_constraints' + 'needs to be given') + + score = model.score(params_constrained) + score_obs = model.score_obs(params_constrained) + hessian = model.hessian(params_constrained, **hess_kwd) + + else: + if cov_type == 'V': + raise ValueError('if exog_extra is not None, then cov_type cannot ' + 'be V') + if hasattr(self, 'constraints'): + raise NotImplementedError('if exog_extra is not None, then self' + 'should not be a constrained fit result') + exog_extra = np.asarray(exog_extra) + k_constraints = 0 + ex = np.column_stack((model.exog, exog_extra)) + k_constraints += ex.shape[1] - model.exog.shape[1] + # TODO use diag instead of full np.eye + r_matrix = np.eye(len(self.params) + k_constraints)[-k_constraints:] + + score_factor = model.score_factor(params_constrained) + score_obs = (score_factor[:, None] * ex) + score = score_obs.sum(0) + hessian_factor = model.hessian_factor(params_constrained, + **hess_kwd) + hessian = -np.dot(ex.T * hessian_factor, ex) + + if cov_type == 'nonrobust': + cov_score_test = -hessian + elif cov_type.upper() == 'HC0': + hinv = -np.linalg.inv(hessian) + cov_score = nobs * np.cov(score_obs.T) + # temporary to try out + lm = _lm_robust(score, r_matrix, hinv, cov_score, cov_params=None) + return lm + # alternative is to use only the center, but it is singular + # https://github.com/statsmodels/statsmodels/pull/2096#issuecomment-393646205 + # cov_score_test_inv = cov_lm_robust(score, r_matrix, hinv, + # cov_score, cov_params=None) + elif cov_type.upper() == 'V': + # TODO: this doesn't work, V in fit_constrained results is singular + # we need cov_params without the zeros in it + hinv = -np.linalg.inv(hessian) + cov_score = nobs * np.cov(score_obs.T) + V = self.cov_params_default + # temporary to try out + chi2stat = _lm_robust(score, r_matrix, hinv, cov_score, cov_params=V) + pval = stats.chi2.sf(chi2stat, k_constraints) + return chi2stat, pval + else: + raise NotImplementedError('only cov_type "nonrobust" is available') + + if hypothesis == 'joint': + chi2stat = score.dot(np.linalg.solve(cov_score_test, score[:, None])) + pval = stats.chi2.sf(chi2stat, k_constraints) + # return a stats results instance instead? Contrast? + return chi2stat, pval, k_constraints + elif hypothesis == 'separate': + diff = score + bse = np.sqrt(np.diag(cov_score_test)) + stat = diff / bse + pval = stats.norm.sf(np.abs(stat))*2 + return stat, pval + else: + raise NotImplementedError('only hypothesis "joint" is available') diff --git a/statsmodels/base/_penalized.py b/statsmodels/base/_penalized.py new file mode 100644 index 0000000..c2bee01 --- /dev/null +++ b/statsmodels/base/_penalized.py @@ -0,0 +1,228 @@ +# -*- coding: utf-8 -*- +""" +Created on Sun May 10 08:23:48 2015 + +Author: Josef Perktold +License: BSD-3 +""" + +import numpy as np +from ._penalties import NonePenalty +from statsmodels.tools.numdiff import approx_fprime_cs, approx_fprime + + +class PenalizedMixin(object): + """Mixin class for Maximum Penalized Likelihood + + Parameters + ---------- + args and kwds for the model super class + penal : None or instance of Penalized function class + If penal is None, then NonePenalty is used. + pen_weight : float or None + factor for weighting the penalization term. + If None, then pen_weight is set to nobs. + + + TODO: missing **kwds or explicit keywords + + TODO: do we adjust the inherited docstrings? + We would need templating to add the penalization parameters + + """ + + def __init__(self, *args, **kwds): + + # pop extra kwds before calling super + self.penal = kwds.pop('penal', None) + self.pen_weight = kwds.pop('pen_weight', None) + + super(PenalizedMixin, self).__init__(*args, **kwds) + + # TODO: define pen_weight as average pen_weight? i.e. per observation + # I would have prefered len(self.endog) * kwds.get('pen_weight', 1) + # or use pen_weight_factor in signature + if self.pen_weight is None: + self.pen_weight = len(self.endog) + + if self.penal is None: + # unpenalized by default + self.penal = NonePenalty() + self.pen_weight = 0 + + self._init_keys.extend(['penal', 'pen_weight']) + self._null_drop_keys = getattr(self, '_null_drop_keys', []) + self._null_drop_keys.extend(['penal']) + + def _handle_scale(self, params, scale=None, **kwds): + + if scale is None: + # special handling for GLM + if hasattr(self, 'scaletype'): + mu = self.predict(params) + scale = self.estimate_scale(mu) + else: + scale = 1 + + return scale + + def loglike(self, params, pen_weight=None, **kwds): + """ + Log-likelihodo of model at params + """ + if pen_weight is None: + pen_weight = self.pen_weight + + llf = super(PenalizedMixin, self).loglike(params, **kwds) + if pen_weight != 0: + scale = self._handle_scale(params, **kwds) + llf -= 1/scale * pen_weight * self.penal.func(params) + + return llf + + def loglikeobs(self, params, pen_weight=None, **kwds): + """ + Log-likelihood of model observations at params + """ + if pen_weight is None: + pen_weight = self.pen_weight + + llf = super(PenalizedMixin, self).loglikeobs(params, **kwds) + nobs_llf = float(llf.shape[0]) + + if pen_weight != 0: + scale = self._handle_scale(params, **kwds) + llf -= 1/scale * pen_weight / nobs_llf * self.penal.func(params) + + return llf + + def score_numdiff(self, params, pen_weight=None, method='fd', **kwds): + """score based on finite difference derivative + + """ + if pen_weight is None: + pen_weight = self.pen_weight + + loglike = lambda p: self.loglike(p, pen_weight=pen_weight, **kwds) + + if method == 'cs': + return approx_fprime_cs(params, loglike) + elif method == 'fd': + return approx_fprime(params, loglike, centered=True) + else: + raise ValueError('method not recognized, should be "fd" or "cs"') + + def score(self, params, pen_weight=None, **kwds): + """ + Gradient of model at params + """ + if pen_weight is None: + pen_weight = self.pen_weight + + sc = super(PenalizedMixin, self).score(params, **kwds) + if pen_weight != 0: + scale = self._handle_scale(params, **kwds) + sc -= 1/scale * pen_weight * self.penal.deriv(params) + + return sc + + def score_obs(self, params, pen_weight=None, **kwds): + """ + Gradient of model observations at params + """ + if pen_weight is None: + pen_weight = self.pen_weight + + sc = super(PenalizedMixin, self).score_obs(params, **kwds) + nobs_sc = float(sc.shape[0]) + if pen_weight != 0: + scale = self._handle_scale(params, **kwds) + sc -= 1/scale * pen_weight / nobs_sc * self.penal.deriv(params) + + return sc + + def hessian_numdiff(self, params, pen_weight=None, **kwds): + """hessian based on finite difference derivative + + """ + if pen_weight is None: + pen_weight = self.pen_weight + loglike = lambda p: self.loglike(p, pen_weight=pen_weight, **kwds) + + from statsmodels.tools.numdiff import approx_hess + return approx_hess(params, loglike) + + def hessian(self, params, pen_weight=None, **kwds): + """ + Hessian of model at params + """ + if pen_weight is None: + pen_weight = self.pen_weight + + hess = super(PenalizedMixin, self).hessian(params, **kwds) + if pen_weight != 0: + scale = self._handle_scale(params, **kwds) + h = self.penal.deriv2(params) + if h.ndim == 1: + hess -= 1/scale * np.diag(pen_weight * h) + else: + hess -= 1/scale * pen_weight * h + + return hess + + def fit(self, method=None, trim=None, **kwds): + """minimize negative penalized log-likelihood + + Parameters + ---------- + method : None or str + Method specifies the scipy optimizer as in nonlinear MLE models. + trim : Boolean or float + Default is False or None, which uses no trimming. + If trim is True or a float, then small parameters are set to zero. + If True, then a default threshold is used. If trim is a float, then + it will be used as threshold. + The default threshold is currently 1e-4, but it will change in + future and become penalty function dependent. + kwds : extra keyword arguments + This keyword arguments are treated in the same way as in the + fit method of the underlying model class. + Specifically, additional optimizer keywords and cov_type related + keywords can be added. + + """ + # If method is None, then we choose a default method ourselves + + # TODO: temporary hack, need extra fit kwds + # we need to rule out fit methods in a model that will not work with + # penalization + if hasattr(self, 'family'): # assume this identifies GLM + kwds.update({'max_start_irls' : 0}) + + # currently we use `bfgs` by default + if method is None: + method = 'bfgs' + + if trim is None: + trim = False + + res = super(PenalizedMixin, self).fit(method=method, **kwds) + + if trim is False: + # note boolean check for "is False", not "False_like" + return res + else: + if trim is True: + trim = 1e-4 # trim threshold + # TODO: make it penal function dependent + # temporary standin, only checked for Poisson and GLM, + # and is computationally inefficient + drop_index = np.nonzero(np.abs(res.params) < trim)[0] + keep_index = np.nonzero(np.abs(res.params) > trim)[0] + + if drop_index.any(): + # TODO: do we need to add results attributes? + res_aux = self._fit_zeros(keep_index, **kwds) + return res_aux + else: + return res diff --git a/statsmodels/base/_penalties.py b/statsmodels/base/_penalties.py new file mode 100644 index 0000000..fbfa715 --- /dev/null +++ b/statsmodels/base/_penalties.py @@ -0,0 +1,631 @@ +# -*- coding: utf-8 -*- +""" +A collection of smooth penalty functions. + +Penalties on vectors take a vector argument and return a scalar +penalty. The gradient of the penalty is a vector with the same shape +as the input value. + +Penalties on covariance matrices take two arguments: the matrix and +its inverse, both in unpacked (square) form. The returned penalty is +a scalar, and the gradient is returned as a vector that contains the +gradient with respect to the free elements in the lower triangle of +the covariance matrix. + +All penalties are subtracted from the log-likelihood, so greater +penalty values correspond to a greater degree of penalization. + +The penaties should be smooth so that they can be subtracted from log +likelihood functions and optimized using standard methods (i.e. L1 +penalties do not belong here). +""" +from __future__ import division + +import numpy as np + + +def _check_wts(weights, wts): + """helper function for deprecating `wts` + """ + if wts is not None: + import warnings + warnings.warn('`wts` method is deprecated. Use `weights` instead', + DeprecationWarning) + weights = weights if weights is not None else wts + return weights + + +class Penalty(object): + """ + A class for representing a scalar-value penalty. + + Parameters + ---------- + weights : array-like + A vector of weights that determines the weight of the penalty + for each parameter. + + Notes + ----- + The class has a member called `alpha` that scales the weights. + """ + + def __init__(self, weights): + self.weights = weights + self.alpha = 1. + + def func(self, params): + """ + A penalty function on a vector of parameters. + + Parameters + ---------- + params : array-like + A vector of parameters. + + Returns + ------- + A scalar penaty value; greater values imply greater + penalization. + """ + raise NotImplementedError + + def deriv(self, params): + """ + The gradient of a penalty function. + + Parameters + ---------- + params : array-like + A vector of parameters + + Returns + ------- + The gradient of the penalty with respect to each element in + `params`. + """ + raise NotImplementedError + + def grad(self, params): + import warnings + warnings.warn('grad method is deprecated. Use `deriv` instead', + DeprecationWarning) + return self.deriv(params) + + def _null_weights(self, params): + """work around for Null model + + This will not be needed anymore when we can use `self._null_drop_keys` + as in DiscreteModels. + TODO: check other models + """ + if np.size(self.weights) > 1: + if len(params) == 1: + raise # raise to identify models where this would be needed + return 0. + + return self.weights + + +class NonePenalty(Penalty): + """ + A penalty that does not penalize. + """ + + def __init__(self, **kwds): + if kwds: + import warnings + warnings.warn('keywords will be ignored') + + def func(self, params): + if params.ndim == 2: + return np.zeros(params.shape[1:]) + else: + return 0 + + def deriv(self, params): + return np.zeros(params.shape) + + def deriv2(self, params): + # returns diagonal of hessian + return np.zeros(params.shape[0]) + + +class L2(Penalty): + """ + The L2 (ridge) penalty. + """ + + def __init__(self, weights=None, wts=None): + weights = _check_wts(weights, wts) # for deprecation wts + if weights is None: + self.weights = 1. + else: + self.weights = weights + self.alpha = 1. + + def func(self, params): + return np.sum(self.weights * self.alpha * params**2) + + def deriv(self, params): + return 2 * self.weights * self.alpha * params + + def deriv2(self, params): + return 2 * self.weights * self.alpha * np.ones(len(params)) + + +class L2Univariate(Penalty): + """ + The L2 (ridge) penalty applied to each parameter. + """ + + def __init__(self, weights=None): + if weights is None: + self.weights = 1. + else: + self.weights = weights + + def func(self, params): + return self.weights * params**2 + + def deriv(self, params): + return 2 * self.weights * params + + def deriv2(self, params): + return 2 * self.weights * np.ones(len(params)) + + +class PseudoHuber(Penalty): + """ + The pseudo-Huber penalty. + """ + + def __init__(self, dlt, weights=None, wts=None): + self.dlt = dlt + weights = _check_wts(weights, wts) # for deprecation wts + if weights is None: + self.weights = 1. + else: + self.weights = weights + self.alpha = 1. + + def func(self, params): + v = np.sqrt(1 + (params / self.dlt)**2) + v -= 1 + v *= self.dlt**2 + return np.sum(self.weights * self.alpha * v, 0) + + def deriv(self, params): + v = np.sqrt(1 + (params / self.dlt)**2) + return params * self.weights * self.alpha / v + + def deriv2(self, params): + v = np.power(1 + (params / self.dlt)**2, -3/2) + return self.weights * self.alpha * v + + +class SCAD(Penalty): + """ + The SCAD penalty of Fan and Li. + + The SCAD penalty is linear around zero as a L1 penalty up to threshold tau. + The SCAD penalty is constant for values larger than c*tau. + The middle segment is quadratic and connect the two segments with a continuous + derivative. + The penalty is symmetric around zero. + + Parameterization follows Boo, Johnson, Li and Tan 2011. + Fan and Li use lambda instead of tau, and a instead of c. Fan and Li + recommend setting c=3.7. + + f(x) = { tau |x| if 0 <= |x| < tau + { -(|x|^2 - 2 c tau |x| + tau^2) / (2 (c - 1)) if tau <= |x| < c tau + { (c + 1) tau^2 / 2 if c tau <= |x| + + Parameters + ---------- + tau : float + slope and threshold for linear segment + c : float + factor for second threshold which is c * tau + weights : None or array + weights for penalty of each parameter. If an entry is zero, then the + corresponding parameter will not be penalized. + + References + ---------- + Buu, Anne, Norman J. Johnson, Runze Li, and Xianming Tan. "New variable + selection methods for zero‐inflated count data with applications to the + substance abuse field." + Statistics in medicine 30, no. 18 (2011): 2326-2340. + + Fan, Jianqing, and Runze Li. "Variable selection via nonconcave penalized + likelihood and its oracle properties." + Journal of the American statistical Association 96, no. 456 (2001): + 1348-1360. + """ + + def __init__(self, tau, c=3.7, weights=None): + if weights is None: + self.weights = 1. + else: + self.weights = weights + self.tau = tau + self.c = c + + def func(self, params): + + # 3 segments in absolute value + tau = self.tau + p_abs = np.atleast_1d(np.abs(params)) + res = np.empty(p_abs.shape, p_abs.dtype) + res.fill(np.nan) + mask1 = p_abs < tau + mask3 = p_abs >= self.c * tau + res[mask1] = tau * p_abs[mask1] + mask2 = ~mask1 & ~mask3 + p_abs2 = p_abs[mask2] + tmp = (p_abs2**2 - 2 * self.c * tau * p_abs2 + tau**2) + res[mask2] = -tmp / (2 * (self.c - 1)) + res[mask3] = (self.c + 1) * tau**2 / 2. + + return (self.weights * res).sum(0) + + def deriv(self, params): + + # 3 segments in absolute value + tau = self.tau + p = np.atleast_1d(params) + p_abs = np.abs(p) + p_sign = np.sign(p) + res = np.empty(p_abs.shape) + res.fill(np.nan) + + mask1 = p_abs < tau + mask3 = p_abs >= self.c * tau + mask2 = ~mask1 & ~mask3 + res[mask1] = p_sign[mask1] * tau + tmp = p_sign[mask2] * (p_abs[mask2] - self.c * tau) + res[mask2] = -tmp / (self.c - 1) + res[mask3] = 0 + + return self.weights * res + + def deriv2(self, params): + """Second derivative of function + + This returns scalar or vector in same shape as params, not a square + Hessian. If the return is 1 dimensional, then it is the diagonal of + the Hessian. + """ + + # 3 segments in absolute value + tau = self.tau + p = np.atleast_1d(params) + p_abs = np.abs(p) + res = np.zeros(p_abs.shape) + + mask1 = p_abs < tau + mask3 = p_abs >= self.c * tau + mask2 = ~mask1 & ~mask3 + res[mask2] = -1 / (self.c - 1) + + return self.weights * res + + +class SCADSmoothed(SCAD): + """ + The SCAD penalty of Fan and Li, quadratically smoothed around zero. + + This follows Fan and Li 2001 equation (3.7). + + Parameterization follows Boo, Johnson, Li and Tan 2011 + see docstring of SCAD + + Parameters + ---------- + tau : float + slope and threshold for linear segment + c : float + factor for second threshold + c0 : float + threshold for quadratically smoothed segment + restriction : None or array + linear constraints for + + Notes + ----- + TODO: Use delegation instead of subclassing, so smoothing can be added to + all penalty classes. + + """ + + def __init__(self, tau, c=3.7, c0=None, weights=None, restriction=None): + if weights is None: + self.weights = 1. + else: + self.weights = weights + self.alpha = 1. + self.tau = tau + self.c = c + self.c0 = c0 if c0 is not None else tau * 0.1 + if self.c0 > tau: + raise ValueError('c0 cannot be larger than tau') + + # get coefficients for quadratic approximation + c0 = self.c0 + # need to temporarily override weights for call to super + weights = self.weights + self.weights = 1. + deriv_c0 = super(SCADSmoothed, self).deriv(c0) + value_c0 = super(SCADSmoothed, self).func(c0) + self.weights = weights + + self.aq1 = value_c0 - 0.5 * deriv_c0 * c0 + self.aq2 = 0.5 * deriv_c0 / c0 + self.restriction = restriction + + def func(self, params): + # workaround for Null model + weights = self._null_weights(params) + # TODO: `and np.size(params) > 1` is hack for llnull, need better solution + if self.restriction is not None and np.size(params) > 1: + params = self.restriction.dot(params) + # need to temporarily override weights for call to super + # Note: we have the same problem with `restriction` + self_weights = self.weights + self.weights = 1. + value = super(SCADSmoothed, self).func(params[None, ...]) + self.weights = self_weights + + # shift down so func(0) == 0 + value -= self.aq1 + # change the segment corrsponding to quadratic approximation + p_abs = np.atleast_1d(np.abs(params)) + mask = p_abs < self.c0 + p_abs_masked = p_abs[mask] + value[mask] = self.aq2 * p_abs_masked**2 + + return (weights * value).sum(0) + + def deriv(self, params): + # workaround for Null model + weights = self._null_weights(params) + if self.restriction is not None and np.size(params) > 1: + params = self.restriction.dot(params) + # need to temporarily override weights for call to super + self_weights = self.weights + self.weights = 1. + value = super(SCADSmoothed, self).deriv(params) + self.weights = self_weights + + #change the segment corrsponding to quadratic approximation + p = np.atleast_1d(params) + mask = np.abs(p) < self.c0 + value[mask] = 2 * self.aq2 * p[mask] + + if self.restriction is not None and np.size(params) > 1: + return weights * value.dot(self.restriction) + else: + return weights * value + + def deriv2(self, params): + # workaround for Null model + weights = self._null_weights(params) + if self.restriction is not None and np.size(params) > 1: + params = self.restriction.dot(params) + # need to temporarily override weights for call to super + self_weights = self.weights + self.weights = 1. + value = super(SCADSmoothed, self).deriv2(params) + self.weights = self_weights + + # change the segment corrsponding to quadratic approximation + p = np.atleast_1d(params) + mask = np.abs(p) < self.c0 + value[mask] = 2 * self.aq2 + + if self.restriction is not None and np.size(params) > 1: + # note: super returns 1d array for diag, i.e. hessian_diag + # TODO: weights are missing + return (self.restriction.T * (weights * value) + ).dot(self.restriction) + else: + return weights * value + + +class ConstraintsPenalty(object): + """ + Penalty applied to linear transformation of parameters + + Parameters + ---------- + penalty: instance of penalty function + currently this requires an instance of a univariate, vectorized + penalty class + weights : None or ndarray + weights for adding penalties of transformed params + restriction : None or ndarray + If it is not None, then restriction defines a linear transformation + of the parameters. The penalty function is applied to each transformed + parameter independently. + + Notes + ----- + `restrictions` allows us to impose penalization on contrasts or stochastic + constraints of the original parameters. + Examples for these contrast are difference penalities or all pairs + penalties. + + """ + + def __init__(self, penalty, weights=None, restriction=None): + + self.penalty = penalty + if weights is None: + self.weights = 1. + else: + self.weights = weights + + if restriction is not None: + restriction = np.asarray(restriction) + + self.restriction = restriction + + def func(self, params): + """evaluate penalty function at params + + Parameter + --------- + params : ndarray + array of parameters at which derivative is evaluated + + Returns + ------- + deriv2 : ndarray + value(s) of penalty function + """ + # TODO: `and np.size(params) > 1` is hack for llnull, need better solution + # Is this still needed? it seems to work without + if self.restriction is not None: + params = self.restriction.dot(params) + + value = self.penalty.func(params) + + return (self.weights * value.T).T.sum(0) + + def deriv(self, params): + """first derivative of penalty function w.r.t. params + + Parameter + --------- + params : ndarray + array of parameters at which derivative is evaluated + + Returns + ------- + deriv2 : ndarray + array of first partial derivatives + """ + if self.restriction is not None: + params = self.restriction.dot(params) + + value = self.penalty.deriv(params) + + if self.restriction is not None: + return self.weights * value.T.dot(self.restriction) + else: + return (self.weights * value.T) + + grad = deriv + + def deriv2(self, params): + """second derivative of penalty function w.r.t. params + + Parameter + --------- + params : ndarray + array of parameters at which derivative is evaluated + + Returns + ------- + deriv2 : ndarray, 2-D + second derivative matrix + """ + + if self.restriction is not None: + params = self.restriction.dot(params) + + value = self.penalty.deriv2(params) + + if self.restriction is not None: + # note: univariate penalty returns 1d array for diag, + # i.e. hessian_diag + v = (self.restriction.T * value * self.weights) + value = v.dot(self.restriction) + else: + value = np.diag(self.weights * value) + + return value + + +class L2ContraintsPenalty(ConstraintsPenalty): + """convenience class of ConstraintsPenalty with L2 penalization + + """ + + def __init__(self, weights=None, restriction=None, sigma_prior=None): + + if sigma_prior is not None: + raise NotImplementedError('sigma_prior is not implemented yet') + + penalty = L2Univariate() + + super(L2ContraintsPenalty, self).__init__(penalty, weights=weights, + restriction=restriction) + + +class CovariancePenalty(object): + + def __init__(self, weight): + # weight should be scalar + self.weight = weight + + def func(self, mat, mat_inv): + """ + Parameters + ---------- + mat : square matrix + The matrix to be penalized. + mat_inv : square matrix + The inverse of `mat`. + + Returns + ------- + A scalar penalty value + """ + raise NotImplementedError + + def deriv(self, mat, mat_inv): + """ + Parameters + ---------- + mat : square matrix + The matrix to be penalized. + mat_inv : square matrix + The inverse of `mat`. + + Returns + ------- + A vector containing the gradient of the penalty + with respect to each element in the lower triangle + of `mat`. + """ + raise NotImplementedError + + def grad(self, mat, mat_inv): + import warnings + warnings.warn('grad method is deprecated. Use `deriv` instead', + DeprecationWarning) + return self.deriv(mat, mat_inv) + + +class PSD(CovariancePenalty): + """ + A penalty that converges to +infinity as the argument matrix + approaches the boundary of the domain of symmetric, positive + definite matrices. + """ + + def func(self, mat, mat_inv): + try: + cy = np.linalg.cholesky(mat) + except np.linalg.LinAlgError: + return np.inf + return -2 * self.weight * np.sum(np.log(np.diag(cy))) + + def deriv(self, mat, mat_inv): + cy = mat_inv.copy() + cy = 2*cy - np.diag(np.diag(cy)) + i,j = np.tril_indices(mat.shape[0]) + return -self.weight * cy[i,j] diff --git a/statsmodels/base/_screening.py b/statsmodels/base/_screening.py new file mode 100644 index 0000000..1877196 --- /dev/null +++ b/statsmodels/base/_screening.py @@ -0,0 +1,437 @@ +# -*- coding: utf-8 -*- +""" +Created on Sat May 19 15:53:21 2018 + +Author: Josef Perktold +License: BSD-3 +""" + +from collections import defaultdict +import numpy as np + +from statsmodels.base._penalties import SCADSmoothed + + +class ScreeningResults(object): + """Results for Variable Screening + + Note: Indices except for exog_idx and in the iterated case also + idx_nonzero_batches are based on the combined [exog_keep, exog] array. + + Attributes + ---------- + results_final : instance + Results instance returned by the final fit of the penalized model, i.e. + after trimming exog with params below trimming threshold. + results_pen : results instance + Results instance of the penalized model before trimming. This includes + variables from the last forward selection + idx_nonzero + index of exog columns in the final selection including exog_keep + idx_exog + index of exog columns in the final selection for exog candidates, i.e. + without exog_keep + idx_excl + idx of excluded exog based on combined [exog_keep, exog] array. This is + the complement of idx_nonzero + converged : boolean + True if the iteration has converged and stopped before maxiter has been + reached. False if maxiter has been reached. + iterations : int + number of iterations in the screening process. Each iteration consists + of a forward selection step and a trimming step. + history : dict of lists + results collected for each iteration during the screening process + 'idx_nonzero' 'params_keep'].append(start_params) + history['idx_added'].append(idx) + + The ScreeningResults returned by `screen_exog_iterator` has additional + attributes: + + idx_nonzero_batches : ndarray 2-D + Two-dimensional array with batch index in the first column and variable + index withing batch in the second column. They can be used jointly as + index for the data in the exog_iterator. + exog_final_names : list of strings + 'var_' where `bidx` is the batch index and `idx` is the + index of the selected column withing batch `bidx`. + history_batches : dict of lists + This provides information about the selected variables within each + batch during the first round screening + 'idx_nonzero' is based ond the array that includes exog_keep, while + 'idx_exog' is the index based on the exog of the batch. + + """ + def __init__(self, screener, **kwds): + self.screener = screener + self.__dict__.update(**kwds) + + +class VariableScreening(object): + """Ultra-high, conditional sure independence screening + + This is an adjusted version of Fan's sure independence screening. + + Parameters + ---------- + model : instance of penalizing model + examples: GLMPenalized, PoissonPenalized and LogitPenalized. + The attributes of the model instance `pen_weight` and `penal` will be + ignored. + pen_weight : None or float + penalization weight use in SCAD penalized MLE + k_add : int + number of exog to add during expansion or forward selection + see Notes section for tie handling + k_max_add : int + maximum number of variables to include during variable addition, i.e. + forward selection. default is 30 + threshold_trim : float + threshold for trimming parameters to zero, default is 1e-4 + k_max_included : int + maximum total number of variables to include in model. + ranking_attr : str + This determines the result attribute or model method that is used for + the ranking of exog to include. The availability of attributes depends + on the model. + Default is 'resid_pearson', 'model.score_factor' can be used in GLM. + ranking_project : bool + If ranking_project is True, then the exog candidates for inclusion are + first projected on the already included exog before the computation + of the ranking measure. This brings the ranking measure closer to + the statistic of a score test for variable addition. + + Notes + ----- + Status: experimental, tested only on a limited set of models and + with a limited set of model options. + + Tie handling: If there are ties at the decision threshold, then all those + tied exog columns are treated in the same way. During forward selection + all exog columns with the same boundary value are included. During + elimination, the tied columns are not dropped. Consequently, if ties are + present, then the number of included exog can be larger than specified + by k_add, k_max_add and k_max_included. + + The screening algorithm works similar to step wise regression. Each + iteration of the screening algorithm includes a forward selection step + where variables are added to the model, and a backwards selection step + where variables are removed. In contrast to step wise regression, we add + a fixed number of variables at each forward selection step. The + backwards selection step is based on SCAD penalized estimation and + trimming of variables with estimated coefficients below a threshold. + The tuning parameters can be used to adjust the number of variables to add + and to include depending on the size of the dataset. + + There is currently no automatic tuning parameter selection. Candidate + explanatory variables should be standardized or should be on a similar + scale because penalization and trimming are based on the absolute values + of the parameters. + + + TODOs and current limitations: + + freq_weights are not supported in this. Candidate ranking uses + moment condition with resid_pearson or others without freq_weights. + pearson_resid: GLM resid_pearson does not include freq_weights. + + variable names: do we keep track of those? currently made-up names + + currently only supports numpy arrays, no exog type check or conversion + + currently only single columns are selected, no terms (multi column exog) + + """ + + def __init__(self, model, pen_weight=None, use_weights=True, k_add=30, + k_max_add=30, threshold_trim=1e-4, k_max_included=20, + ranking_attr='resid_pearson', ranking_project=True): + + self.model = model + self.model_class = model.__class__ + self.init_kwds = model._get_init_kwds() + # pen_weight and penal are explicitly included + # TODO: check what we want to do here + self.init_kwds.pop('pen_weight', None) + self.init_kwds.pop('penal', None) + + self.endog = model.endog + self.exog_keep = model.exog + self.k_keep = model.exog.shape[1] + self.nobs = len(self.endog) + self.penal = self._get_penal() + + if pen_weight is not None: + self.pen_weight = pen_weight + else: + self.pen_weight = self.nobs * 10 + + # option for screening algorithm + self.use_weights = use_weights + self.k_add = k_add + self.k_max_add = k_max_add + self.threshold_trim = threshold_trim + self.k_max_included = k_max_included + self.ranking_attr = ranking_attr + self.ranking_project = ranking_project + + def _get_penal(self, weights=None): + """create new Penalty instance + """ + return SCADSmoothed(0.1, c0=0.0001, weights=weights) + + def ranking_measure(self, res_pen, exog, keep=None): + """compute measure for ranking exog candidates for inclusion + + """ + endog = self.endog + + if self.ranking_project: + assert res_pen.model.exog.shape[1] == len(keep) + ex_incl = res_pen.model.exog[:, keep] + exog = exog - ex_incl.dot(np.linalg.pinv(ex_incl).dot(exog)) + + if self.ranking_attr == 'predicted_poisson': + # I keep this for more experiments + + # TODO: does it really help to change/trim params + # we are not reestimating with trimmed model + p = res_pen.params.copy() + if keep is not None: + p[~keep] = 0 + predicted = res_pen.model.predict(p) + # this is currently hardcoded for Poisson + resid_factor = (endog - predicted) / np.sqrt(predicted) + elif self.ranking_attr[:6] == 'model.': + # use model method, this is intended for score_factor + attr = self.ranking_attr.split('.')[1] + resid_factor = getattr(res_pen.model, attr)(res_pen.params) + if resid_factor.ndim == 2: + # for score_factor when extra params are in model + resid_factor = resid_factor[:, 0] + mom_cond = np.abs(resid_factor.dot(exog))**2 + else: + # use results attribute + resid_factor = getattr(res_pen, self.ranking_attr) + mom_cond = np.abs(resid_factor.dot(exog))**2 + return mom_cond + + def screen_exog(self, exog, endog=None, maxiter=100, method='bfgs', + disp=False, fit_kwds=None): + """screen and select variables (columns) in exog + + Parameters + ---------- + exog : ndarray + candidate explanatory variables that are screened for inclusion in + the model + endog : ndarray (optional) + use a new endog in the screening model. + This is not tested yet, and might not work correctly + maxiter : int + number of screening iterations + method : str + optimization method to use in fit, needs to be only of the gradient + optimizers + disp : bool + display option for fit during optimization + + Returns + ------- + res_screen : instance of ScreeningResults + The attribute `results_final` contains is the results instance + with the final model selection. + `idx_nonzero` contains the index of the selected exog in the full + exog, combined exog that are always kept plust exog_candidates. + see ScreeningResults for a full description + + """ + model_class = self.model_class + if endog is None: + # allow a different endog than used in model + endog = self.endog + x0 = self.exog_keep + k_keep = self.k_keep + x1 = exog + k_current = x0.shape[1] + # TODO: remove the need for x, use x1 separately from x0 + # needs change to idx to be based on x1 (candidate variables) + x = np.column_stack((x0, x1)) + nobs, k_vars = x.shape + fkwds = fit_kwds if fit_kwds is not None else {} + fit_kwds = {'maxiter': 200, 'disp': False} + fit_kwds.update(fkwds) + + history = defaultdict(list) + idx_nonzero = np.arange(k_keep, dtype=np.int) + keep = np.ones(k_keep, np.bool_) + idx_excl = np.arange(k_keep, k_vars) + mod_pen = model_class(endog, x0, **self.init_kwds) + # don't penalize initial estimate + mod_pen.pen_weight = 0 + res_pen = mod_pen.fit(**fit_kwds) + start_params = res_pen.params + converged = False + idx_old = [] + for it in range(maxiter): + # candidates for inclusion in next iteration + x1 = x[:, idx_excl] + mom_cond = self.ranking_measure(res_pen, x1, keep=keep) + assert len(mom_cond) == len(idx_excl) + mcs = np.sort(mom_cond)[::-1] + idx_thr = min((self.k_max_add, k_current + self.k_add, len(mcs))) + threshold = mcs[idx_thr] + # indices of exog in current expansion model + idx = np.concatenate((idx_nonzero, idx_excl[mom_cond > threshold])) + start_params2 = np.zeros(len(idx)) + start_params2[:len(start_params)] = start_params + + if self.use_weights: + weights = np.ones(len(idx)) + weights[:k_keep] = 0 + # modify Penalty instance attached to self + # damgerous if res_pen is reused + self.penal.weights = weights + mod_pen = model_class(endog, x[:, idx], penal=self.penal, + pen_weight=self.pen_weight, + **self.init_kwds) + + res_pen = mod_pen.fit(method=method, + start_params=start_params2, + warn_convergence=False, skip_hessian=True, + **fit_kwds) + + keep = np.abs(res_pen.params) > self.threshold_trim + # use largest params to keep + if keep.sum() > self.k_max_included: + # TODO we can use now np.partition with partial sort + thresh_params = np.sort(np.abs(res_pen.params))[ + -self.k_max_included] + keep2 = np.abs(res_pen.params) > thresh_params + keep = np.logical_and(keep, keep2) + + # Note: idx and keep are for current expansion model + # idx_nonzero has indices of selected variables in full exog + keep[:k_keep] = True # always keep exog_keep + idx_nonzero = idx[keep] + + if disp: + print(keep) + print(idx_nonzero) + # x0 is exog of currently selected model, not used in iteration + # x0 = x[:, idx_nonzero] + k_current = len(idx_nonzero) + start_params = res_pen.params[keep] + + # use mask to get excluded indices + mask_excl = np.ones(k_vars, dtype=bool) + mask_excl[idx_nonzero] = False + idx_excl = np.nonzero(mask_excl)[0] + history['idx_nonzero'].append(idx_nonzero) + history['keep'].append(keep) + history['params_keep'].append(start_params) + history['idx_added'].append(idx) + + if (len(idx_nonzero) == len(idx_old) and + (idx_nonzero == idx_old).all()): + converged = True + break + idx_old = idx_nonzero + + # final esimate + # check that we still have exog_keep + assert np.all(idx_nonzero[:k_keep] == np.arange(k_keep)) + if self.use_weights: + weights = np.ones(len(idx_nonzero)) + weights[:k_keep] = 0 + # create new Penalty instance to avoide sharing attached penal + penal = self._get_penal(weights=weights) + else: + penal = self.penal + mod_final = model_class(endog, x[:, idx_nonzero], + penal=penal, + pen_weight=self.pen_weight, + **self.init_kwds) + + res_final = mod_final.fit(method=method, + start_params=start_params, + warn_convergence=False, + **fit_kwds) + # set exog_names for final model + xnames = ['var%4d' % ii for ii in idx_nonzero] + res_final.model.exog_names[k_keep:] = xnames[k_keep:] + + res = ScreeningResults(self, + results_pen = res_pen, + results_final = res_final, + idx_nonzero = idx_nonzero, + idx_exog = idx_nonzero[k_keep:] - k_keep, + idx_excl = idx_excl, + history = history, + converged = converged, + iterations = it + 1 # it is 0-based + ) + return res + + def screen_exog_iterator(self, exog_iterator): + """ + batched version of screen exog + + This screens variables in a two step process: + + In the first step screen_exog is used on each element of the + exog_iterator, and the batch winners are collected. + + In the second step all batch winners are combined into a new array + of exog candidates and `screen_exog` is used to select a final + model. + + Parameters + ---------- + exog_iterator : iterator over ndarrays + + Returns + ------- + res_screen_final : instance of ScreeningResults + This is the instance returned by the second round call to + `screen_exog`. Additional attributes are added to provide + more information about the batched selection process. + The index of final nonzero variables is + `idx_nonzero_batches` which is a 2-dimensional array with batch + index in the first column and variable index within batch in the + second column. They can be used jointly as index for the data + in the exog_iterator. + see ScreeningResults for a full description + + """ + k_keep = self.k_keep + # res_batches = [] + res_idx = [] + exog_winner = [] + exog_idx = [] + for ex in exog_iterator: + res_screen = self.screen_exog(ex, maxiter=20) + # avoid storing res_screen, only for debugging + # res_batches.append(res_screen) + res_idx.append(res_screen.idx_nonzero) + exog_winner.append(ex[:, res_screen.idx_nonzero[k_keep:] - k_keep]) + exog_idx.append(res_screen.idx_nonzero[k_keep:] - k_keep) + + exog_winner = np.column_stack(exog_winner) + res_screen_final = self.screen_exog(exog_winner, maxiter=20) + + exog_winner_names = ['var%d_%d' % (bidx, idx) + for bidx, batch in enumerate(exog_idx) + for idx in batch] + + idx_full = [(bidx, idx) + for bidx, batch in enumerate(exog_idx) + for idx in batch] + ex_final_idx = res_screen_final.idx_nonzero[k_keep:] - k_keep + final_names = np.array(exog_winner_names)[ex_final_idx] + res_screen_final.idx_nonzero_batches = np.array(idx_full)[ex_final_idx] + res_screen_final.exog_final_names = final_names + history = {'idx_nonzero': res_idx, + 'idx_exog': exog_idx} + res_screen_final.history_batches = history + return res_screen_final diff --git a/statsmodels/base/covtype.py b/statsmodels/base/covtype.py new file mode 100644 index 0000000..cf116cb --- /dev/null +++ b/statsmodels/base/covtype.py @@ -0,0 +1,359 @@ +# -*- coding: utf-8 -*- +""" +Created on Mon Aug 04 08:00:16 2014 + +Author: Josef Perktold +License: BSD-3 + +""" + +from statsmodels.compat.python import lzip + +import numpy as np + +descriptions = { + 'HC0': 'Standard Errors are heteroscedasticity robust (HC0)', + 'HC1': 'Standard Errors are heteroscedasticity robust (HC1)', + 'HC2': 'Standard Errors are heteroscedasticity robust (HC2)', + 'HC3': 'Standard Errors are heteroscedasticity robust (HC3)', + 'HAC': 'Standard Errors are heteroscedasticity and autocorrelation ' + 'robust (HAC) using {maxlags} lags and ' + '{correction} small sample correction', + 'fixed_scale': 'Standard Errors are based on fixed scale', + 'cluster': 'Standard Errors are robust to cluster correlation (cluster)', + 'HAC-Panel': 'Standard Errors are robust to ' + 'cluster correlation (HAC-Panel)', + 'HAC-Groupsum': 'Driscoll and Kraay Standard Errors are robust to ' + 'cluster correlation (HAC-Groupsum)', + 'none': 'Covariance matrix not calculated.', + 'approx': 'Covariance matrix calculated using numerical ({approx_type}) ' + 'differentiation.', + 'OPG': 'Covariance matrix calculated using the outer product of ' + 'gradients ({approx_type}).', + 'OIM': 'Covariance matrix calculated using the observed information ' + 'matrix ({approx_type}) described in Harvey (1989).', + 'robust': 'Quasi-maximum likelihood covariance matrix used for ' + 'robustness to some misspecifications; calculated using ' + 'numerical ({approx_type}) differentiation.', + 'robust-OIM': 'Quasi-maximum likelihood covariance matrix used for ' + 'robustness to some misspecifications; calculated using the ' + 'observed information matrix ({approx_type}) described in ' + 'Harvey (1989).', + 'robust-approx': 'Quasi-maximum likelihood covariance matrix used for ' + 'robustness to some misspecifications; calculated using ' + 'numerical ({approx_type}) differentiation.', +} + + +def normalize_cov_type(cov_type): + """ + Normalize the cov_type string to a canonical version + + Parameters + ---------- + cov_type : str + + Returns + ------- + normalized_cov_type : str + """ + if cov_type == 'nw-panel': + cov_type = 'hac-panel' + if cov_type == 'nw-groupsum': + cov_type = 'hac-groupsum' + return cov_type + + +def get_robustcov_results(self, cov_type='HC1', use_t=None, **kwds): + """create new results instance with robust covariance as default + + Parameters + ---------- + cov_type : string + the type of robust sandwich estimator to use. see Notes below + use_t : bool + If true, then the t distribution is used for inference. + If false, then the normal distribution is used. + kwds : depends on cov_type + Required or optional arguments for robust covariance calculation. + see Notes below + + Returns + ------- + results : results instance + This method creates a new results instance with the requested + robust covariance as the default covariance of the parameters. + Inferential statistics like p-values and hypothesis tests will be + based on this covariance matrix. + + Notes + ----- + Warning: Some of the options and defaults in cov_kwds may be changed in a + future version. + + The covariance keywords provide an option 'scaling_factor' to adjust the + scaling of the covariance matrix, that is the covariance is multiplied by + this factor if it is given and is not `None`. This allows the user to + adjust the scaling of the covariance matrix to match other statistical + packages. + For example, `scaling_factor=(nobs - 1.) / (nobs - k_params)` provides a + correction so that the robust covariance matrices match those of Stata in + some models like GLM and discrete Models. + + The following covariance types and required or optional arguments are + currently available: + + - 'HC0', 'HC1', 'HC2', 'HC3' and no keyword arguments: + heteroscedasticity robust covariance + - 'HAC' and keywords + + - `maxlag` integer (required) : number of lags to use + - `kernel` callable or str (optional) : kernel + currently available kernels are ['bartlett', 'uniform'], + default is Bartlett + - `use_correction` bool (optional) : If true, use small sample + correction + + - 'cluster' and required keyword `groups`, integer group indicator + + - `groups` array_like, integer (required) : + index of clusters or groups + - `use_correction` bool (optional) : + If True the sandwich covariance is calulated with a small + sample correction. + If False the the sandwich covariance is calulated without + small sample correction. + - `df_correction` bool (optional) + If True (default), then the degrees of freedom for the + inferential statistics and hypothesis tests, such as + pvalues, f_pvalue, conf_int, and t_test and f_test, are + based on the number of groups minus one instead of the + total number of observations minus the number of explanatory + variables. `df_resid` of the results instance is adjusted. + If False, then `df_resid` of the results instance is not + adjusted. + + - 'hac-groupsum' Driscoll and Kraay, heteroscedasticity and + autocorrelation robust standard errors in panel data + keywords + + - `time` array_like (required) : index of time periods + - `maxlag` integer (required) : number of lags to use + - `kernel` callable or str (optional) : kernel + currently available kernels are ['bartlett', 'uniform'], + default is Bartlett + - `use_correction` False or string in ['hac', 'cluster'] (optional) : + If False the the sandwich covariance is calulated without + small sample correction. + If `use_correction = 'cluster'` (default), then the same + small sample correction as in the case of 'covtype='cluster'' + is used. + - `df_correction` bool (optional) + adjustment to df_resid, see cov_type 'cluster' above + #TODO: we need more options here + + - 'hac-panel' heteroscedasticity and autocorrelation robust standard + errors in panel data. + The data needs to be sorted in this case, the time series for + each panel unit or cluster need to be stacked. The membership to + a timeseries of an individual or group can be either specified by + group indicators or by increasing time periods. + + keywords + + - either `groups` or `time` : array_like (required) + `groups` : indicator for groups + `time` : index of time periods + - `maxlag` integer (required) : number of lags to use + - `kernel` callable or str (optional) : kernel + currently available kernels are ['bartlett', 'uniform'], + default is Bartlett + - `use_correction` False or string in ['hac', 'cluster'] (optional) : + If False the the sandwich covariance is calulated without + small sample correction. + - `df_correction` bool (optional) + adjustment to df_resid, see cov_type 'cluster' above + #TODO: we need more options here + + Reminder: + `use_correction` in "hac-groupsum" and "hac-panel" is not bool, + needs to be in [False, 'hac', 'cluster'] + + TODO: Currently there is no check for extra or misspelled keywords, + except in the case of cov_type `HCx` + + """ + + import statsmodels.stats.sandwich_covariance as sw + + cov_type = normalize_cov_type(cov_type) + + if 'kernel' in kwds: + kwds['weights_func'] = kwds.pop('kernel') + if 'weights_func' in kwds and not callable(kwds['weights_func']): + kwds['weights_func'] = sw.kernel_dict[kwds['weights_func']] + + # pop because HCx raises if any kwds + sc_factor = kwds.pop('scaling_factor', None) + + # TODO: make separate function that returns a robust cov plus info + use_self = kwds.pop('use_self', False) + if use_self: + res = self + else: + # this doesn't work for most models, use raw instance instead from fit + res = self.__class__(self.model, self.params, + normalized_cov_params=self.normalized_cov_params, + scale=self.scale) + + res.cov_type = cov_type + # use_t might already be defined by the class, and already set + if use_t is None: + use_t = self.use_t + res.cov_kwds = {'use_t':use_t} # store for information + res.use_t = use_t + + adjust_df = False + if cov_type in ['cluster', 'hac-panel', 'hac-groupsum']: + df_correction = kwds.get('df_correction', None) + # TODO: check also use_correction, do I need all combinations? + if df_correction is not False: # i.e. in [None, True]: + # user didn't explicitely set it to False + adjust_df = True + + res.cov_kwds['adjust_df'] = adjust_df + + # verify and set kwds, and calculate cov + # TODO: this should be outsourced in a function so we can reuse it in + # other models + # TODO: make it DRYer repeated code for checking kwds + if cov_type.upper() in ('HC0', 'HC1', 'HC2', 'HC3'): + if kwds: + raise ValueError('heteroscedasticity robust covariance ' + 'does not use keywords') + res.cov_kwds['description'] = descriptions[cov_type.upper()] + + res.cov_params_default = getattr(self, 'cov_' + cov_type.upper(), None) + if res.cov_params_default is None: + # results classes that don't have cov_HCx attribute + res.cov_params_default = sw.cov_white_simple(self, + use_correction=False) + elif cov_type.lower() == 'hac': + maxlags = kwds['maxlags'] # required?, default in cov_hac_simple + res.cov_kwds['maxlags'] = maxlags + weights_func = kwds.get('weights_func', sw.weights_bartlett) + res.cov_kwds['weights_func'] = weights_func + use_correction = kwds.get('use_correction', False) + res.cov_kwds['use_correction'] = use_correction + res.cov_kwds['description'] = descriptions['HAC'].format( + maxlags=maxlags, correction=['without', 'with'][use_correction]) + + res.cov_params_default = sw.cov_hac_simple(self, nlags=maxlags, + weights_func=weights_func, + use_correction=use_correction) + elif cov_type.lower() == 'cluster': + #cluster robust standard errors, one- or two-way + groups = kwds['groups'] + if not hasattr(groups, 'shape'): + groups = np.asarray(groups).T + + if groups.ndim >= 2: + groups = groups.squeeze() + + res.cov_kwds['groups'] = groups + use_correction = kwds.get('use_correction', True) + res.cov_kwds['use_correction'] = use_correction + if groups.ndim == 1: + if adjust_df: + # need to find number of groups + # duplicate work + self.n_groups = n_groups = len(np.unique(groups)) + res.cov_params_default = sw.cov_cluster(self, groups, + use_correction=use_correction) + + elif groups.ndim == 2: + if hasattr(groups, 'values'): + groups = groups.values + + if adjust_df: + # need to find number of groups + # duplicate work + n_groups0 = len(np.unique(groups[:,0])) + n_groups1 = len(np.unique(groups[:, 1])) + self.n_groups = (n_groups0, n_groups1) + n_groups = min(n_groups0, n_groups1) # use for adjust_df + + # Note: sw.cov_cluster_2groups has 3 returns + res.cov_params_default = sw.cov_cluster_2groups(self, groups, + use_correction=use_correction)[0] + else: + raise ValueError('only two groups are supported') + res.cov_kwds['description'] = descriptions['cluster'] + + elif cov_type.lower() == 'hac-panel': + #cluster robust standard errors + res.cov_kwds['time'] = time = kwds.get('time', None) + res.cov_kwds['groups'] = groups = kwds.get('groups', None) + #TODO: nlags is currently required + #nlags = kwds.get('nlags', True) + #res.cov_kwds['nlags'] = nlags + #TODO: `nlags` or `maxlags` + res.cov_kwds['maxlags'] = maxlags = kwds['maxlags'] + use_correction = kwds.get('use_correction', 'hac') + res.cov_kwds['use_correction'] = use_correction + weights_func = kwds.get('weights_func', sw.weights_bartlett) + res.cov_kwds['weights_func'] = weights_func + # TODO: clumsy time index in cov_nw_panel + if groups is not None: + groups = np.asarray(groups) + tt = (np.nonzero(groups[:-1] != groups[1:])[0] + 1).tolist() + nobs_ = len(groups) + elif time is not None: + # TODO: clumsy time index in cov_nw_panel + time = np.asarray(time) + tt = (np.nonzero(time[1:] < time[:-1])[0] + 1).tolist() + nobs_ = len(time) + else: + raise ValueError('either time or groups needs to be given') + groupidx = lzip([0] + tt, tt + [nobs_]) + self.n_groups = n_groups = len(groupidx) + res.cov_params_default = sw.cov_nw_panel(self, maxlags, groupidx, + weights_func=weights_func, + use_correction=use_correction) + res.cov_kwds['description'] = descriptions['HAC-Panel'] + + elif cov_type.lower() == 'hac-groupsum': + # Driscoll-Kraay standard errors + res.cov_kwds['time'] = time = kwds['time'] + #TODO: nlags is currently required + #nlags = kwds.get('nlags', True) + #res.cov_kwds['nlags'] = nlags + #TODO: `nlags` or `maxlags` + res.cov_kwds['maxlags'] = maxlags = kwds['maxlags'] + use_correction = kwds.get('use_correction', 'cluster') + res.cov_kwds['use_correction'] = use_correction + weights_func = kwds.get('weights_func', sw.weights_bartlett) + res.cov_kwds['weights_func'] = weights_func + if adjust_df: + # need to find number of groups + tt = (np.nonzero(time[1:] < time[:-1])[0] + 1) + self.n_groups = n_groups = len(tt) + 1 + res.cov_params_default = sw.cov_nw_groupsum(self, maxlags, time, + weights_func=weights_func, + use_correction=use_correction) + res.cov_kwds['description'] = descriptions['HAC-Groupsum'] + else: + raise ValueError('cov_type not recognized. See docstring for ' + + 'available options and spelling') + + # generic optional factor to scale covariance + + res.cov_kwds['scaling_factor'] = sc_factor + if sc_factor is not None: + res.cov_params_default *= sc_factor + + if adjust_df: + # Note: df_resid is used for scale and others, add new attribute + res.df_resid_inference = n_groups - 1 + + return res diff --git a/statsmodels/base/data.py b/statsmodels/base/data.py new file mode 100644 index 0000000..4aa3581 --- /dev/null +++ b/statsmodels/base/data.py @@ -0,0 +1,635 @@ +""" +Base tools for handling various kinds of data structures, attaching metadata to +results, and doing data cleaning +""" +from statsmodels.compat.python import reduce, iteritems, lmap, zip, range + +import numpy as np +from pandas import DataFrame, Series, isnull, MultiIndex + +import statsmodels.tools.data as data_util +from statsmodels.tools.decorators import cache_readonly, cache_writable +from statsmodels.tools.sm_exceptions import MissingDataError + + +def _asarray_2dcolumns(x): + if np.asarray(x).ndim > 1 and np.asarray(x).squeeze().ndim == 1: + return + + +def _asarray_2d_null_rows(x): + """ + Makes sure input is an array and is 2d. Makes sure output is 2d. True + indicates a null in the rows of 2d x. + """ + #Have to have the asarrays because isnull doesn't account for array-like + #input + x = np.asarray(x) + if x.ndim == 1: + x = x[:, None] + return np.any(isnull(x), axis=1)[:, None] + + +def _nan_rows(*arrs): + """ + Returns a boolean array which is True where any of the rows in any + of the _2d_ arrays in arrs are NaNs. Inputs can be any mixture of Series, + DataFrames or array-like. + """ + if len(arrs) == 1: + arrs += ([[False]],) + + def _nan_row_maybe_two_inputs(x, y): + # check for dtype bc dataframe has dtypes + x_is_boolean_array = hasattr(x, 'dtype') and x.dtype == bool and x + return np.logical_or(_asarray_2d_null_rows(x), + (x_is_boolean_array | _asarray_2d_null_rows(y))) + return reduce(_nan_row_maybe_two_inputs, arrs).squeeze() + + +class ModelData(object): + """ + Class responsible for handling input data and extracting metadata into the + appropriate form + """ + _param_names = None + + def __init__(self, endog, exog=None, missing='none', hasconst=None, + **kwargs): + if 'design_info' in kwargs: + self.design_info = kwargs.pop('design_info') + if 'formula' in kwargs: + self.formula = kwargs.pop('formula') + if missing != 'none': + arrays, nan_idx = self.handle_missing(endog, exog, missing, + **kwargs) + self.missing_row_idx = nan_idx + self.__dict__.update(arrays) # attach all the data arrays + self.orig_endog = self.endog + self.orig_exog = self.exog + self.endog, self.exog = self._convert_endog_exog(self.endog, + self.exog) + else: + self.__dict__.update(kwargs) # attach the extra arrays anyway + self.orig_endog = endog + self.orig_exog = exog + self.endog, self.exog = self._convert_endog_exog(endog, exog) + + self.const_idx = None + self.k_constant = 0 + self._handle_constant(hasconst) + self._check_integrity() + self._cache = {} + + def __getstate__(self): + from copy import copy + d = copy(self.__dict__) + if "design_info" in d: + del d["design_info"] + d["restore_design_info"] = True + return d + + def __setstate__(self, d): + if "restore_design_info" in d: + # NOTE: there may be a more performant way to do this + from patsy import dmatrices, PatsyError + exc = [] + try: + data = d['frame'] + except KeyError: + data = d['orig_endog'].join(d['orig_exog']) + + for depth in [2, 3, 1, 0, 4]: # sequence is a guess where to likely find it + try: + _, design = dmatrices(d['formula'], data, eval_env=depth, + return_type='dataframe') + break + except (NameError, PatsyError) as e: + exc.append(e) # why do I need a reference from outside except block + pass + else: + raise exc[-1] + + self.design_info = design.design_info + del d["restore_design_info"] + self.__dict__.update(d) + + def _handle_constant(self, hasconst): + if hasconst is False or self.exog is None: + self.k_constant = 0 + self.const_idx = None + else: + # detect where the constant is + check_implicit = False + ptp_ = np.ptp(self.exog, axis=0) + if not np.isfinite(ptp_).all(): + raise MissingDataError('exog contains inf or nans') + const_idx = np.where(ptp_ == 0)[0].squeeze() + self.k_constant = const_idx.size + + if self.k_constant == 1: + if self.exog[:, const_idx].mean() != 0: + self.const_idx = const_idx + else: + # we only have a zero column and no other constant + check_implicit = True + elif self.k_constant > 1: + # we have more than one constant column + # look for ones + values = [] # keep values if we need != 0 + for idx in const_idx: + value = self.exog[:, idx].mean() + if value == 1: + self.k_constant = 1 + self.const_idx = idx + break + values.append(value) + else: + # we didn't break, no column of ones + pos = (np.array(values) != 0) + if pos.any(): + # take the first nonzero column + self.k_constant = 1 + self.const_idx = const_idx[pos.argmax()] + else: + # only zero columns + check_implicit = True + elif self.k_constant == 0: + check_implicit = True + else: + # shouldn't be here + pass + + if check_implicit and not hasconst: + # look for implicit constant + # Compute rank of augmented matrix + augmented_exog = np.column_stack( + (np.ones(self.exog.shape[0]), self.exog)) + rank_augm = np.linalg.matrix_rank(augmented_exog) + rank_orig = np.linalg.matrix_rank(self.exog) + self.k_constant = int(rank_orig == rank_augm) + self.const_idx = None + elif hasconst: + # Ensure k_constant is 1 any time hasconst is True + # even if one isn't found + self.k_constant = 1 + + @classmethod + def _drop_nans(cls, x, nan_mask): + return x[nan_mask] + + @classmethod + def _drop_nans_2d(cls, x, nan_mask): + return x[nan_mask][:, nan_mask] + + @classmethod + def handle_missing(cls, endog, exog, missing, **kwargs): + """ + This returns a dictionary with keys endog, exog and the keys of + kwargs. It preserves Nones. + """ + none_array_names = [] + + # patsy's already dropped NaNs in y/X + missing_idx = kwargs.pop('missing_idx', None) + + if missing_idx is not None: + # y, X already handled by patsy. add back in later. + combined = () + combined_names = [] + if exog is None: + none_array_names += ['exog'] + elif exog is not None: + combined = (endog, exog) + combined_names = ['endog', 'exog'] + else: + combined = (endog,) + combined_names = ['endog'] + none_array_names += ['exog'] + + # deal with other arrays + combined_2d = () + combined_2d_names = [] + if len(kwargs): + for key, value_array in iteritems(kwargs): + if value_array is None or value_array.ndim == 0: + none_array_names += [key] + continue + # grab 1d arrays + if value_array.ndim == 1: + combined += (np.asarray(value_array),) + combined_names += [key] + elif value_array.squeeze().ndim == 1: + combined += (np.asarray(value_array),) + combined_names += [key] + + # grab 2d arrays that are _assumed_ to be symmetric + elif value_array.ndim == 2: + combined_2d += (np.asarray(value_array),) + combined_2d_names += [key] + else: + raise ValueError("Arrays with more than 2 dimensions " + "aren't yet handled") + + if missing_idx is not None: + nan_mask = missing_idx + updated_row_mask = None + if combined: # there were extra arrays not handled by patsy + combined_nans = _nan_rows(*combined) + if combined_nans.shape[0] != nan_mask.shape[0]: + raise ValueError("Shape mismatch between endog/exog " + "and extra arrays given to model.") + # for going back and updated endog/exog + updated_row_mask = combined_nans[~nan_mask] + nan_mask |= combined_nans # for updating extra arrays only + if combined_2d: + combined_2d_nans = _nan_rows(combined_2d) + if combined_2d_nans.shape[0] != nan_mask.shape[0]: + raise ValueError("Shape mismatch between endog/exog " + "and extra 2d arrays given to model.") + if updated_row_mask is not None: + updated_row_mask |= combined_2d_nans[~nan_mask] + else: + updated_row_mask = combined_2d_nans[~nan_mask] + nan_mask |= combined_2d_nans + + else: + nan_mask = _nan_rows(*combined) + if combined_2d: + nan_mask = _nan_rows(*(nan_mask[:, None],) + combined_2d) + + if not np.any(nan_mask): # no missing don't do anything + combined = dict(zip(combined_names, combined)) + if combined_2d: + combined.update(dict(zip(combined_2d_names, combined_2d))) + if none_array_names: + combined.update(dict(zip(none_array_names, + [None] * len(none_array_names)))) + + if missing_idx is not None: + combined.update({'endog': endog}) + if exog is not None: + combined.update({'exog': exog}) + + return combined, [] + + elif missing == 'raise': + raise MissingDataError("NaNs were encountered in the data") + + elif missing == 'drop': + nan_mask = ~nan_mask + drop_nans = lambda x: cls._drop_nans(x, nan_mask) + drop_nans_2d = lambda x: cls._drop_nans_2d(x, nan_mask) + combined = dict(zip(combined_names, lmap(drop_nans, combined))) + + if missing_idx is not None: + if updated_row_mask is not None: + updated_row_mask = ~updated_row_mask + # update endog/exog with this new information + endog = cls._drop_nans(endog, updated_row_mask) + if exog is not None: + exog = cls._drop_nans(exog, updated_row_mask) + + combined.update({'endog': endog}) + if exog is not None: + combined.update({'exog': exog}) + + if combined_2d: + combined.update(dict(zip(combined_2d_names, + lmap(drop_nans_2d, combined_2d)))) + if none_array_names: + combined.update(dict(zip(none_array_names, + [None] * len(none_array_names)))) + + return combined, np.where(~nan_mask)[0].tolist() + else: + raise ValueError("missing option %s not understood" % missing) + + def _convert_endog_exog(self, endog, exog): + + # for consistent outputs if endog is (n,1) + yarr = self._get_yarr(endog) + xarr = None + if exog is not None: + xarr = self._get_xarr(exog) + if xarr.ndim == 1: + xarr = xarr[:, None] + if xarr.ndim != 2: + raise ValueError("exog is not 1d or 2d") + + return yarr, xarr + + @cache_writable() + def ynames(self): + endog = self.orig_endog + ynames = self._get_names(endog) + if not ynames: + ynames = _make_endog_names(self.endog) + + if len(ynames) == 1: + return ynames[0] + else: + return list(ynames) + + @cache_writable() + def xnames(self): + exog = self.orig_exog + if exog is not None: + xnames = self._get_names(exog) + if not xnames: + xnames = _make_exog_names(self.exog) + return list(xnames) + return None + + @property + def param_names(self): + # for handling names of 'extra' parameters in summary, etc. + return self._param_names or self.xnames + + @param_names.setter + def param_names(self, values): + self._param_names = values + + @cache_readonly + def row_labels(self): + exog = self.orig_exog + if exog is not None: + row_labels = self._get_row_labels(exog) + else: + endog = self.orig_endog + row_labels = self._get_row_labels(endog) + return row_labels + + def _get_row_labels(self, arr): + return None + + def _get_names(self, arr): + if isinstance(arr, DataFrame): + if isinstance(arr.columns, MultiIndex): + # Flatten MultiIndexes into "simple" column names + return ['_'.join((level for level in c if level)) + for c in arr.columns] + else: + return list(arr.columns) + elif isinstance(arr, Series): + if arr.name: + return [arr.name] + else: + return + else: + try: + return arr.dtype.names + except AttributeError: + pass + + return None + + def _get_yarr(self, endog): + if data_util._is_structured_ndarray(endog): + endog = data_util.struct_to_ndarray(endog) + endog = np.asarray(endog) + if len(endog) == 1: # never squeeze to a scalar + if endog.ndim == 1: + return endog + elif endog.ndim > 1: + return np.asarray([endog.squeeze()]) + + return endog.squeeze() + + def _get_xarr(self, exog): + if data_util._is_structured_ndarray(exog): + exog = data_util.struct_to_ndarray(exog) + return np.asarray(exog) + + def _check_integrity(self): + if self.exog is not None: + if len(self.exog) != len(self.endog): + raise ValueError("endog and exog matrices are different sizes") + + def wrap_output(self, obj, how='columns', names=None): + if how == 'columns': + return self.attach_columns(obj) + elif how == 'rows': + return self.attach_rows(obj) + elif how == 'cov': + return self.attach_cov(obj) + elif how == 'dates': + return self.attach_dates(obj) + elif how == 'columns_eq': + return self.attach_columns_eq(obj) + elif how == 'cov_eq': + return self.attach_cov_eq(obj) + elif how == 'generic_columns': + return self.attach_generic_columns(obj, names) + elif how == 'generic_columns_2d': + return self.attach_generic_columns_2d(obj, names) + elif how == 'ynames': + return self.attach_ynames(obj) + else: + return obj + + def attach_columns(self, result): + return result + + def attach_columns_eq(self, result): + return result + + def attach_cov(self, result): + return result + + def attach_cov_eq(self, result): + return result + + def attach_rows(self, result): + return result + + def attach_dates(self, result): + return result + + def attach_generic_columns(self, result, *args, **kwargs): + return result + + def attach_generic_columns_2d(self, result, *args, **kwargs): + return result + + def attach_ynames(self, result): + return result + + +class PatsyData(ModelData): + def _get_names(self, arr): + return arr.design_info.column_names + + +class PandasData(ModelData): + """ + Data handling class which knows how to reattach pandas metadata to model + results + """ + + def _convert_endog_exog(self, endog, exog=None): + #TODO: remove this when we handle dtype systematically + endog = np.asarray(endog) + exog = exog if exog is None else np.asarray(exog) + if endog.dtype == object or exog is not None and exog.dtype == object: + raise ValueError("Pandas data cast to numpy dtype of object. " + "Check input data with np.asarray(data).") + return super(PandasData, self)._convert_endog_exog(endog, exog) + + @classmethod + def _drop_nans(cls, x, nan_mask): + if isinstance(x, (Series, DataFrame)): + return x.loc[nan_mask] + else: # extra arguments could be plain ndarrays + return super(PandasData, cls)._drop_nans(x, nan_mask) + + @classmethod + def _drop_nans_2d(cls, x, nan_mask): + if isinstance(x, (Series, DataFrame)): + return x.loc[nan_mask].loc[:, nan_mask] + else: # extra arguments could be plain ndarrays + return super(PandasData, cls)._drop_nans_2d(x, nan_mask) + + def _check_integrity(self): + endog, exog = self.orig_endog, self.orig_exog + # exog can be None and we could be upcasting one or the other + if (exog is not None and + (hasattr(endog, 'index') and hasattr(exog, 'index')) and + not self.orig_endog.index.equals(self.orig_exog.index)): + raise ValueError("The indices for endog and exog are not aligned") + super(PandasData, self)._check_integrity() + + def _get_row_labels(self, arr): + try: + return arr.index + except AttributeError: + # if we've gotten here it's because endog is pandas and + # exog is not, so just return the row labels from endog + return self.orig_endog.index + + def attach_generic_columns(self, result, names): + # get the attribute to use + column_names = getattr(self, names, None) + return Series(result, index=column_names) + + def attach_generic_columns_2d(self, result, rownames, colnames=None): + colnames = colnames or rownames + rownames = getattr(self, rownames, None) + colnames = getattr(self, colnames, None) + return DataFrame(result, index=rownames, columns=colnames) + + def attach_columns(self, result): + # this can either be a 1d array or a scalar + # don't squeeze because it might be a 2d row array + # if it needs a squeeze, the bug is elsewhere + if result.ndim <= 1: + return Series(result, index=self.param_names) + else: # for e.g., confidence intervals + return DataFrame(result, index=self.param_names) + + def attach_columns_eq(self, result): + return DataFrame(result, index=self.xnames, columns=self.ynames) + + def attach_cov(self, result): + return DataFrame(result, index=self.param_names, + columns=self.param_names) + + def attach_cov_eq(self, result): + return DataFrame(result, index=self.ynames, columns=self.ynames) + + def attach_rows(self, result): + # assumes if len(row_labels) > len(result) it's bc it was truncated + # at the front, for AR lags, for example + squeezed = result.squeeze() + k_endog = np.array(self.ynames, ndmin=1).shape[0] + if k_endog > 1 and squeezed.shape == (k_endog,): + squeezed = squeezed[None, :] + # May be zero-dim, for example in the case of forecast one step in tsa + if squeezed.ndim < 2: + return Series(squeezed, index=self.row_labels[-len(result):]) + else: + return DataFrame(result, index=self.row_labels[-len(result):], + columns=self.ynames) + + def attach_dates(self, result): + squeezed = result.squeeze() + k_endog = np.array(self.ynames, ndmin=1).shape[0] + if k_endog > 1 and squeezed.shape == (k_endog,): + squeezed = squeezed[None, :] + # May be zero-dim, for example in the case of forecast one step in tsa + if squeezed.ndim < 2: + return Series(squeezed, index=self.predict_dates) + else: + return DataFrame(result, index=self.predict_dates, + columns=self.ynames) + + def attach_ynames(self, result): + squeezed = result.squeeze() + # May be zero-dim, for example in the case of forecast one step in tsa + if squeezed.ndim < 2: + return Series(squeezed, name=self.ynames) + else: + return DataFrame(result, columns=self.ynames) + + +def _make_endog_names(endog): + if endog.ndim == 1 or endog.shape[1] == 1: + ynames = ['y'] + else: # for VAR + ynames = ['y%d' % (i+1) for i in range(endog.shape[1])] + + return ynames + + +def _make_exog_names(exog): + exog_var = exog.var(0) + if (exog_var == 0).any(): + # assumes one constant in first or last position + # avoid exception if more than one constant + const_idx = exog_var.argmin() + exog_names = ['x%d' % i for i in range(1, exog.shape[1])] + exog_names.insert(const_idx, 'const') + else: + exog_names = ['x%d' % i for i in range(1, exog.shape[1]+1)] + + return exog_names + + +def handle_missing(endog, exog=None, missing='none', **kwargs): + klass = handle_data_class_factory(endog, exog) + if missing == 'none': + ret_dict = dict(endog=endog, exog=exog) + ret_dict.update(kwargs) + return ret_dict, None + return klass.handle_missing(endog, exog, missing=missing, **kwargs) + + +def handle_data_class_factory(endog, exog): + """ + Given inputs + """ + if data_util._is_using_ndarray_type(endog, exog): + klass = ModelData + elif data_util._is_using_pandas(endog, exog): + klass = PandasData + elif data_util._is_using_patsy(endog, exog): + klass = PatsyData + # keep this check last + elif data_util._is_using_ndarray(endog, exog): + klass = ModelData + else: + raise ValueError('unrecognized data structures: %s / %s' % + (type(endog), type(exog))) + return klass + + +def handle_data(endog, exog, missing='none', hasconst=None, **kwargs): + # deal with lists and tuples up-front + if isinstance(endog, (list, tuple)): + endog = np.asarray(endog) + if isinstance(exog, (list, tuple)): + exog = np.asarray(exog) + + klass = handle_data_class_factory(endog, exog) + return klass(endog, exog=exog, missing=missing, hasconst=hasconst, + **kwargs) diff --git a/statsmodels/base/distributed_estimation.py b/statsmodels/base/distributed_estimation.py new file mode 100644 index 0000000..a6b3006 --- /dev/null +++ b/statsmodels/base/distributed_estimation.py @@ -0,0 +1,677 @@ +from statsmodels.base.elastic_net import RegularizedResults +from statsmodels.stats.regularized_covariance import _calc_nodewise_row, \ + _calc_nodewise_weight, _calc_approx_inv_cov +from statsmodels.base.model import LikelihoodModelResults +from statsmodels.regression.linear_model import OLS +import numpy as np + +""" +Distributed estimation routines. Currently, we support several +methods of distribution + +- sequential, has no extra dependencies +- parallel + - with joblib + A variety of backends are supported through joblib + This allows for different types of clusters besides + standard local clusters. Some examples of + backends supported by joblib are + - dask.distributed + - yarn + - ipyparallel + +The framework is very general and allows for a variety of +estimation methods. Currently, these include + +- debiased regularized estimation +- simple coefficient averaging (naive) + - regularized + - unregularized + +Currently, the default is regularized estimation with debiasing +which follows the methods outlined in + +Jason D. Lee, Qiang Liu, Yuekai Sun and Jonathan E. Taylor. +"Communication-Efficient Sparse Regression: A One-Shot Approach." +arXiv:1503.04337. 2015. http://arxiv.org/abs/1503.04337. + +There are several variables that are taken from the source paper +for which the interpretation may not be directly clear from the +code, these are mostly used to help form the estimate of the +approximate inverse covariance matrix as part of the +debiasing procedure. + + wexog + + A weighted design matrix used to perform the node-wise + regression procedure. + + nodewise_row + + nodewise_row is produced as part of the node-wise regression + procedure used to produce the approximate inverse covariance + matrix. One is produced for each variable using the + LASSO. + + nodewise_weight + + nodewise_weight is produced using the gamma_hat values for + each p to produce weights to reweight the gamma_hat values which + are ultimately used to form approx_inv_cov. + + approx_inv_cov + + This is the estimate of the approximate inverse covariance + matrix. This is used to debiase the coefficient average + along with the average gradient. For the OLS case, + approx_inv_cov is an approximation for + + n * (X^T X)^{-1} + + formed by node-wise regression. +""" + + +def _est_regularized_naive(mod, pnum, partitions, fit_kwds=None): + """estimates the regularized fitted parameters. + + Parameters + ---------- + mod : statsmodels model class instance + The model for the current partition. + pnum : scalar + Index of current partition + partitions : scalar + Total number of partitions + fit_kwds : dict-like or None + Keyword arguments to be given to fit_regularized + + Returns + ------- + An array of the paramters for the regularized fit + """ + + if fit_kwds is None: + raise ValueError("_est_regularized_naive currently " + + "requires that fit_kwds not be None.") + + return mod.fit_regularized(**fit_kwds).params + + +def _est_unregularized_naive(mod, pnum, partitions, fit_kwds=None): + """estimates the unregularized fitted parameters. + + Parameters + ---------- + mod : statsmodels model class instance + The model for the current partition. + pnum : scalar + Index of current partition + partitions : scalar + Total number of partitions + fit_kwds : dict-like or None + Keyword arguments to be given to fit + + Returns + ------- + An array of the parameters for the fit + """ + + if fit_kwds is None: + raise ValueError("_est_unregularized_naive currently " + + "requires that fit_kwds not be None.") + + return mod.fit(**fit_kwds).params + + +def _join_naive(params_l, threshold=0): + """joins the results from each run of _est__naive + and returns the mean estimate of the coefficients + + Parameters + ---------- + params_l : list + A list of arrays of coefficients. + threshold : scalar + The threshold at which the coefficients will be cut. + """ + + p = len(params_l[0]) + partitions = len(params_l) + + params_mn = np.zeros(p) + for params in params_l: + params_mn += params + params_mn /= partitions + + params_mn[np.abs(params_mn) < threshold] = 0 + + return params_mn + + +def _calc_grad(mod, params, alpha, L1_wt, score_kwds): + """calculates the log-likelihood gradient for the debiasing + + Parameters + ---------- + mod : statsmodels model class instance + The model for the current partition. + params : array-like + The estimated coefficients for the current partition. + alpha : scalar or array-like + The penalty weight. If a scalar, the same penalty weight + applies to all variables in the model. If a vector, it + must have the same length as `params`, and contains a + penalty weight for each coefficient. + L1_wt : scalar + The fraction of the penalty given to the L1 penalty term. + Must be between 0 and 1 (inclusive). If 0, the fit is + a ridge fit, if 1 it is a lasso fit. + score_kwds : dict-like or None + Keyword arguments for the score function. + + Returns + ------- + An array-like object of the same dimension as params + + Notes + ----- + In general: + + gradient l_k(params) + + where k corresponds to the index of the partition + + For OLS: + + X^T(y - X^T params) + """ + + grad = -mod.score(np.asarray(params), **score_kwds) + grad += alpha * (1 - L1_wt) + return grad + + +def _calc_wdesign_mat(mod, params, hess_kwds): + """calculates the weighted design matrix necessary to generate + the approximate inverse covariance matrix + + Parameters + ---------- + mod : statsmodels model class instance + The model for the current partition. + params : array-like + The estimated coefficients for the current partition. + hess_kwds : dict-like or None + Keyword arguments for the hessian function. + + Returns + ------- + An array-like object, updated design matrix, same dimension + as mod.exog + """ + + rhess = np.sqrt(mod.hessian_factor(np.asarray(params), **hess_kwds)) + return rhess[:, None] * mod.exog + + +def _est_regularized_debiased(mod, mnum, partitions, fit_kwds=None, + score_kwds=None, hess_kwds=None): + """estimates the regularized fitted parameters, is the default + estimation_method for class DistributedModel. + + Parameters + ---------- + mod : statsmodels model class instance + The model for the current partition. + mnum : scalar + Index of current partition. + partitions : scalar + Total number of partitions. + fit_kwds : dict-like or None + Keyword arguments to be given to fit_regularized + score_kwds : dict-like or None + Keyword arguments for the score function. + hess_kwds : dict-like or None + Keyword arguments for the Hessian function. + + Returns + ------- + A tuple of parameters for regularized fit + An array-like object of the fitted parameters, params + An array-like object for the gradient + A list of array like objects for nodewise_row + A list of array like objects for nodewise_weight + """ + + score_kwds = {} if score_kwds is None else score_kwds + hess_kwds = {} if hess_kwds is None else hess_kwds + + if fit_kwds is None: + raise ValueError("_est_regularized_debiased currently " + + "requires that fit_kwds not be None.") + else: + alpha = fit_kwds["alpha"] + + if "L1_wt" in fit_kwds: + L1_wt = fit_kwds["L1_wt"] + else: + L1_wt = 1 + + nobs, p = mod.exog.shape + p_part = int(np.ceil((1. * p) / partitions)) + + params = mod.fit_regularized(**fit_kwds).params + grad = _calc_grad(mod, params, alpha, L1_wt, score_kwds) / nobs + + wexog = _calc_wdesign_mat(mod, params, hess_kwds) + + nodewise_row_l = [] + nodewise_weight_l = [] + for idx in range(mnum * p_part, min((mnum + 1) * p_part, p)): + + nodewise_row = _calc_nodewise_row(wexog, idx, alpha) + nodewise_row_l.append(nodewise_row) + + nodewise_weight = _calc_nodewise_weight(wexog, nodewise_row, idx, + alpha) + nodewise_weight_l.append(nodewise_weight) + + return params, grad, nodewise_row_l, nodewise_weight_l + + +def _join_debiased(results_l, threshold=0): + """joins the results from each run of _est_regularized_debiased + and returns the debiased estimate of the coefficients + + Parameters + ---------- + results_l : list + A list of tuples each one containing the params, grad, + nodewise_row and nodewise_weight values for each partition. + threshold : scalar + The threshold at which the coefficients will be cut. + """ + + p = len(results_l[0][0]) + partitions = len(results_l) + + params_mn = np.zeros(p) + grad_mn = np.zeros(p) + + nodewise_row_l = [] + nodewise_weight_l = [] + + for r in results_l: + + params_mn += r[0] + grad_mn += r[1] + + nodewise_row_l.extend(r[2]) + nodewise_weight_l.extend(r[3]) + + nodewise_row_l = np.array(nodewise_row_l) + nodewise_weight_l = np.array(nodewise_weight_l) + + params_mn /= partitions + grad_mn *= -1. / partitions + + approx_inv_cov = _calc_approx_inv_cov(nodewise_row_l, nodewise_weight_l) + + debiased_params = params_mn + approx_inv_cov.dot(grad_mn) + + debiased_params[np.abs(debiased_params) < threshold] = 0 + + return debiased_params + + +def _helper_fit_partition(self, pnum, endog, exog, fit_kwds, + init_kwds_e={}): + """handles the model fitting for each machine. NOTE: this + is primarily handled outside of DistributedModel because + joblib can't handle class methods. + + Parameters + ---------- + self : DistributedModel class instance + An instance of DistributedModel. + pnum : scalar + index of current partition. + endog : array-like + endogenous data for current partition. + exog : array-like + exogenous data for current partition. + fit_kwds : dict-like + Keywords needed for the model fitting. + init_kwds_e : dict-like + Additional init_kwds to add for each partition. + + Returns + ------- + estimation_method result. For the default, + _est_regularized_debiased, a tuple. + """ + + temp_init_kwds = self.init_kwds.copy() + temp_init_kwds.update(init_kwds_e) + + model = self.model_class(endog, exog, **temp_init_kwds) + results = self.estimation_method(model, pnum, self.partitions, + fit_kwds=fit_kwds, + **self.estimation_kwds) + return results + + +class DistributedModel(object): + __doc__ = """ + Distributed model class + + Parameters + ---------- + partitions : scalar + The number of partitions that the data will be split into. + model_class : statsmodels model class + The model class which will be used for estimation. If None + this defaults to OLS. + init_kwds : dict-like or None + Keywords needed for initializing the model, in addition to + endog and exog. + init_kwds_generator : generator or None + Additional keyword generator that produces model init_kwds + that may vary based on data partition. The current usecase + is for WLS and GLS + estimation_method : function or None + The method that performs the estimation for each partition. + If None this defaults to _est_regularized_debiased. + estimation_kwds : dict-like or None + Keywords to be passed to estimation_method. + join_method : function or None + The method used to recombine the results from each partition. + If None this defaults to _join_debiased. + join_kwds : dict-like or None + Keywords to be passed to join_method. + results_class : results class or None + The class of results that should be returned. If None this + defaults to RegularizedResults. + results_kwds : dict-like or None + Keywords to be passed to results class. + + Attributes + ---------- + partitions : scalar + See Parameters. + model_class : statsmodels model class + See Parameters. + init_kwds : dict-like + See Parameters. + init_kwds_generator : generator or None + See Parameters. + estimation_method : function + See Parameters. + estimation_kwds : dict-like + See Parameters. + join_method : function + See Parameters. + join_kwds : dict-like + See Parameters. + results_class : results class + See Parameters. + results_kwds : dict-like + See Parameters. + + Examples + -------- + + Notes + ----- + """ + + def __init__(self, partitions, model_class=None, + init_kwds=None, estimation_method=None, + estimation_kwds=None, join_method=None, join_kwds=None, + results_class=None, results_kwds=None): + + self.partitions = partitions + + if model_class is None: + self.model_class = OLS + else: + self.model_class = model_class + + if init_kwds is None: + self.init_kwds = {} + else: + self.init_kwds = init_kwds + + if estimation_method is None: + self.estimation_method = _est_regularized_debiased + else: + self.estimation_method = estimation_method + + if estimation_kwds is None: + self.estimation_kwds = {} + else: + self.estimation_kwds = estimation_kwds + + if join_method is None: + self.join_method = _join_debiased + else: + self.join_method = join_method + + if join_kwds is None: + self.join_kwds = {} + else: + self.join_kwds = join_kwds + + if results_class is None: + self.results_class = RegularizedResults + else: + self.results_class = results_class + + if results_kwds is None: + self.results_kwds = {} + else: + self.results_kwds = results_kwds + + def fit(self, data_generator, fit_kwds=None, parallel_method="sequential", + parallel_backend=None, init_kwds_generator=None): + """Performs the distributed estimation using the corresponding + DistributedModel + + Parameters + ---------- + data_generator : generator + A generator that produces a sequence of tuples where the first + element in the tuple corresponds to an endog array and the + element corresponds to an exog array. + fit_kwds : dict-like or None + Keywords needed for the model fitting. + parallel_method : str + type of distributed estimation to be used, currently + "sequential", "joblib" and "dask" are supported. + parallel_backend : None or joblib parallel_backend object + used to allow support for more complicated backends, + ex: dask.distributed + init_kwds_generator : generator or None + Additional keyword generator that produces model init_kwds + that may vary based on data partition. The current usecase + is for WLS and GLS + + Returns + ------- + join_method result. For the default, _join_debiased, it returns a + p length array. + """ + + if fit_kwds is None: + fit_kwds = {} + + if parallel_method == "sequential": + results_l = self.fit_sequential(data_generator, fit_kwds, + init_kwds_generator) + + elif parallel_method == "joblib": + results_l = self.fit_joblib(data_generator, fit_kwds, + parallel_backend, + init_kwds_generator) + + else: + raise ValueError("parallel_method: %s is currently not supported" + % parallel_method) + + params = self.join_method(results_l, **self.join_kwds) + + # NOTE that currently, the dummy result model that is initialized + # here does not use any init_kwds from the init_kwds_generator event + # if it is provided. It is possible to imagine an edge case where + # this might be a problem but given that the results model instance + # does not correspond to any data partition this seems reasonable. + res_mod = self.model_class([0], [0], **self.init_kwds) + + return self.results_class(res_mod, params, **self.results_kwds) + + def fit_sequential(self, data_generator, fit_kwds, + init_kwds_generator=None): + """Sequentially performs the distributed estimation using + the corresponding DistributedModel + + Parameters + ---------- + data_generator : generator + A generator that produces a sequence of tuples where the first + element in the tuple corresponds to an endog array and the + element corresponds to an exog array. + fit_kwds : dict-like + Keywords needed for the model fitting. + init_kwds_generator : generator or None + Additional keyword generator that produces model init_kwds + that may vary based on data partition. The current usecase + is for WLS and GLS + + Returns + ------- + join_method result. For the default, _join_debiased, it returns a + p length array. + """ + + results_l = [] + + if init_kwds_generator is None: + + for pnum, (endog, exog) in enumerate(data_generator): + + results = _helper_fit_partition(self, pnum, endog, exog, + fit_kwds) + results_l.append(results) + + else: + + tup_gen = enumerate(zip(data_generator, + init_kwds_generator)) + + for pnum, ((endog, exog), init_kwds_e) in tup_gen: + + results = _helper_fit_partition(self, pnum, endog, exog, + fit_kwds, init_kwds_e) + results_l.append(results) + + return results_l + + def fit_joblib(self, data_generator, fit_kwds, parallel_backend, + init_kwds_generator=None): + """Performs the distributed estimation in parallel using joblib + + Parameters + ---------- + data_generator : generator + A generator that produces a sequence of tuples where the first + element in the tuple corresponds to an endog array and the + element corresponds to an exog array. + fit_kwds : dict-like + Keywords needed for the model fitting. + parallel_backend : None or joblib parallel_backend object + used to allow support for more complicated backends, + ex: dask.distributed + init_kwds_generator : generator or None + Additional keyword generator that produces model init_kwds + that may vary based on data partition. The current usecase + is for WLS and GLS + + Returns + ------- + join_method result. For the default, _join_debiased, it returns a + p length array. + """ + + from statsmodels.tools.parallel import parallel_func + + par, f, n_jobs = parallel_func(_helper_fit_partition, self.partitions) + + if parallel_backend is None and init_kwds_generator is None: + results_l = par(f(self, pnum, endog, exog, fit_kwds) + for pnum, (endog, exog) + in enumerate(data_generator)) + + elif parallel_backend is not None and init_kwds_generator is None: + with parallel_backend: + results_l = par(f(self, pnum, endog, exog, fit_kwds) + for pnum, (endog, exog) + in enumerate(data_generator)) + + elif parallel_backend is None and init_kwds_generator is not None: + tup_gen = enumerate(zip(data_generator, init_kwds_generator)) + results_l = par(f(self, pnum, endog, exog, fit_kwds, init_kwds) + for pnum, ((endog, exog), init_kwds) + in tup_gen) + + elif parallel_backend is not None and init_kwds_generator is not None: + tup_gen = enumerate(zip(data_generator, init_kwds_generator)) + with parallel_backend: + results_l = par(f(self, pnum, endog, exog, fit_kwds, init_kwds) + for pnum, ((endog, exog), init_kwds) + in tup_gen) + + return results_l + + +class DistributedResults(LikelihoodModelResults): + + """ + Class to contain model results + + Parameters + ---------- + model : class instance + class instance for model used for distributed data, + this particular instance uses fake data and is really + only to allow use of methods like predict. + params : array + parameter estimates from the fit model. + + """ + + def __init__(self, model, params): + super(DistributedResults, self).__init__(model, params) + + def predict(self, exog, *args, **kwargs): + """Calls self.model.predict for the provided exog. See + Results.predict. + + Parameters + ---------- + exog : array-like NOT optional + The values for which we want to predict, unlike standard + predict this is NOT optional since the data in self.model + is fake. + args, kwargs : + Some models can take additional arguments or keywords, see the + predict method of the model for the details. + + Returns + ------- + prediction : ndarray, pandas.Series or pandas.DataFrame + See self.model.predict + + """ + + return self.model.predict(self.params, exog, *args, **kwargs) diff --git a/statsmodels/base/elastic_net.py b/statsmodels/base/elastic_net.py new file mode 100644 index 0000000..d0d96b2 --- /dev/null +++ b/statsmodels/base/elastic_net.py @@ -0,0 +1,370 @@ +import numpy as np +from statsmodels.base.model import Results +import statsmodels.base.wrapper as wrap +from statsmodels.tools.decorators import cache_readonly + +""" +Elastic net regularization. + +Routines for fitting regression models using elastic net +regularization. The elastic net minimizes the objective function + +-llf / nobs + alpha((1 - L1_wt) * sum(params**2) / 2 + + L1_wt * sum(abs(params))) + +The algorithm implemented here closely follows the implementation in +the R glmnet package, documented here: + +http://cran.r-project.org/web/packages/glmnet/index.html + +and here: + +http://www.jstatsoft.org/v33/i01/paper + +This routine should work for any regression model that implements +loglike, score, and hess. +""" + + +def _gen_npfuncs(k, L1_wt, alpha, loglike_kwds, score_kwds, hess_kwds): + """ + Negative penalized log-likelihood functions. + + Returns the negative penalized log-likelihood, its derivative, and + its Hessian. The penalty only includes the smooth (L2) term. + + All three functions have argument signature (x, model), where + ``x`` is a point in the parameter space and ``model`` is an + arbitrary statsmodels regression model. + """ + + def nploglike(params, model): + nobs = model.nobs + pen_llf = alpha[k] * (1 - L1_wt) * np.sum(params**2) / 2 + llf = model.loglike(np.r_[params], **loglike_kwds) + return - llf / nobs + pen_llf + + def npscore(params, model): + nobs = model.nobs + pen_grad = alpha[k] * (1 - L1_wt) * params + gr = -model.score(np.r_[params], **score_kwds)[0] / nobs + return gr + pen_grad + + def nphess(params, model): + nobs = model.nobs + pen_hess = alpha[k] * (1 - L1_wt) + h = -model.hessian(np.r_[params], **hess_kwds)[0, 0] / nobs + pen_hess + return h + + return nploglike, npscore, nphess + + +def fit_elasticnet(model, method="coord_descent", maxiter=100, + alpha=0., L1_wt=1., start_params=None, cnvrg_tol=1e-7, + zero_tol=1e-8, refit=False, check_step=True, + loglike_kwds=None, score_kwds=None, hess_kwds=None): + """ + Return an elastic net regularized fit to a regression model. + + Parameters + ---------- + model : model object + A statsmodels object implementing ``loglike``, ``score``, and + ``hessian``. + method : + Only the coordinate descent algorithm is implemented. + maxiter : integer + The maximum number of iteration cycles (an iteration cycle + involves running coordinate descent on all variables). + alpha : scalar or array-like + The penalty weight. If a scalar, the same penalty weight + applies to all variables in the model. If a vector, it + must have the same length as `params`, and contains a + penalty weight for each coefficient. + L1_wt : scalar + The fraction of the penalty given to the L1 penalty term. + Must be between 0 and 1 (inclusive). If 0, the fit is + a ridge fit, if 1 it is a lasso fit. + start_params : array-like + Starting values for `params`. + cnvrg_tol : scalar + If `params` changes by less than this amount (in sup-norm) + in one iteration cycle, the algorithm terminates with + convergence. + zero_tol : scalar + Any estimated coefficient smaller than this value is + replaced with zero. + refit : bool + If True, the model is refit using only the variables that have + non-zero coefficients in the regularized fit. The refitted + model is not regularized. + check_step : bool + If True, confirm that the first step is an improvement and search + further if it is not. + loglike_kwds : dict-like or None + Keyword arguments for the log-likelihood function. + score_kwds : dict-like or None + Keyword arguments for the score function. + hess_kwds : dict-like or None + Keyword arguments for the Hessian function. + + Returns + ------- + A results object. + + Notes + ----- + The ``elastic net`` penalty is a combination of L1 and L2 + penalties. + + The function that is minimized is: + + -loglike/n + alpha*((1-L1_wt)*|params|_2^2/2 + L1_wt*|params|_1) + + where |*|_1 and |*|_2 are the L1 and L2 norms. + + The computational approach used here is to obtain a quadratic + approximation to the smooth part of the target function: + + -loglike/n + alpha*(1-L1_wt)*|params|_2^2/2 + + then repeatedly optimize the L1 penalized version of this function + along coordinate axes. + """ + + k_exog = model.exog.shape[1] + + loglike_kwds = {} if loglike_kwds is None else loglike_kwds + score_kwds = {} if score_kwds is None else score_kwds + hess_kwds = {} if hess_kwds is None else hess_kwds + + if np.isscalar(alpha): + alpha = alpha * np.ones(k_exog) + + # Define starting params + if start_params is None: + params = np.zeros(k_exog) + else: + params = start_params.copy() + + btol = 1e-4 + params_zero = np.zeros(len(params), dtype=bool) + + init_args = model._get_init_kwds() + # we don't need a copy of init_args because get_init_kwds provides new dict + init_args['hasconst'] = False + model_offset = init_args.pop('offset', None) + if 'exposure' in init_args and init_args['exposure'] is not None: + if model_offset is None: + model_offset = np.log(init_args.pop('exposure')) + else: + model_offset += np.log(init_args.pop('exposure')) + + fgh_list = [ + _gen_npfuncs(k, L1_wt, alpha, loglike_kwds, score_kwds, hess_kwds) + for k in range(k_exog)] + + for itr in range(maxiter): + + # Sweep through the parameters + params_save = params.copy() + for k in range(k_exog): + + # Under the active set method, if a parameter becomes + # zero we don't try to change it again. + # TODO : give the user the option to switch this off + if params_zero[k]: + continue + + # Set the offset to account for the variables that are + # being held fixed in the current coordinate + # optimization. + params0 = params.copy() + params0[k] = 0 + offset = np.dot(model.exog, params0) + if model_offset is not None: + offset += model_offset + + # Create a one-variable model for optimization. + model_1var = model.__class__( + model.endog, model.exog[:, k], offset=offset, **init_args) + + # Do the one-dimensional optimization. + func, grad, hess = fgh_list[k] + params[k] = _opt_1d( + func, grad, hess, model_1var, params[k], alpha[k]*L1_wt, + tol=btol, check_step=check_step) + + # Update the active set + if itr > 0 and np.abs(params[k]) < zero_tol: + params_zero[k] = True + params[k] = 0. + + # Check for convergence + pchange = np.max(np.abs(params - params_save)) + if pchange < cnvrg_tol: + break + + # Set approximate zero coefficients to be exactly zero + params[np.abs(params) < zero_tol] = 0 + + if not refit: + results = RegularizedResults(model, params) + return RegularizedResultsWrapper(results) + + # Fit the reduced model to get standard errors and other + # post-estimation results. + ii = np.flatnonzero(params) + cov = np.zeros((k_exog, k_exog)) + init_args = dict([(k, getattr(model, k, None)) for k in model._init_keys]) + if len(ii) > 0: + model1 = model.__class__( + model.endog, model.exog[:, ii], **init_args) + rslt = model1.fit() + params[ii] = rslt.params + cov[np.ix_(ii, ii)] = rslt.normalized_cov_params + else: + # Hack: no variables were selected but we need to run fit in + # order to get the correct results class. So just fit a model + # with one variable. + model1 = model.__class__(model.endog, model.exog[:, 0], **init_args) + rslt = model1.fit(maxiter=0) + + # fit may return a results or a results wrapper + if issubclass(rslt.__class__, wrap.ResultsWrapper): + klass = rslt._results.__class__ + else: + klass = rslt.__class__ + + # Not all models have a scale + if hasattr(rslt, 'scale'): + scale = rslt.scale + else: + scale = 1. + + # The degrees of freedom should reflect the number of parameters + # in the refit model, not including the zeros that are displayed + # to indicate which variables were dropped. See issue #1723 for + # discussion about setting df parameters in model and results + # classes. + p, q = model.df_model, model.df_resid + model.df_model = len(ii) + model.df_resid = model.nobs - model.df_model + + # Assuming a standard signature for creating results classes. + refit = klass(model, params, cov, scale=scale) + refit.regularized = True + refit.method = method + refit.fit_history = {'iteration': itr + 1} + + # Restore df in model class, see issue #1723 for discussion. + model.df_model, model.df_resid = p, q + + return refit + + +def _opt_1d(func, grad, hess, model, start, L1_wt, tol, + check_step=True): + """ + One-dimensional helper for elastic net. + + Parameters + ---------- + func : function + A smooth function of a single variable to be optimized + with L1 penaty. + grad : function + The gradient of `func`. + hess : function + The Hessian of `func`. + model : statsmodels model + The model being fit. + start : real + A starting value for the function argument + L1_wt : non-negative real + The weight for the L1 penalty function. + tol : non-negative real + A convergence threshold. + check_step : bool + If True, check that the first step is an improvement and + use bisection if it is not. If False, return after the + first step regardless. + + Notes + ----- + ``func``, ``grad``, and ``hess`` have argument signature (x, + model), where ``x`` is a point in the parameter space and + ``model`` is the model being fit. + + If the log-likelihood for the model is exactly quadratic, the + global minimum is returned in one step. Otherwise numerical + bisection is used. + + Returns + ------- + The argmin of the objective function. + """ + + # Overview: + # We want to minimize L(x) + L1_wt*abs(x), where L() is a smooth + # loss function that includes the log-likelihood and L2 penalty. + # This is a 1-dimensional optimization. If L(x) is exactly + # quadratic we can solve for the argmin exactly. Otherwise we + # approximate L(x) with a quadratic function Q(x) and try to use + # the minimizer of Q(x) + L1_wt*abs(x). But if this yields an + # uphill step for the actual target function L(x) + L1_wt*abs(x), + # then we fall back to a expensive line search. The line search + # is never needed for OLS. + + x = start + f = func(x, model) + b = grad(x, model) + c = hess(x, model) + d = b - c*x + + # The optimum is achieved by hard thresholding to zero + if L1_wt > np.abs(d): + return 0. + + # x + h is the minimizer of the Q(x) + L1_wt*abs(x) + if d >= 0: + h = (L1_wt - b) / c + elif d < 0: + h = -(L1_wt + b) / c + else: + return np.nan + + # If the new point is not uphill for the target function, take it + # and return. This check is a bit expensive and un-necessary for + # OLS + if not check_step: + return x + h + f1 = func(x + h, model) + L1_wt*np.abs(x + h) + if f1 <= f + L1_wt*np.abs(x) + 1e-10: + return x + h + + # Fallback for models where the loss is not quadratic + from scipy.optimize import brent + x_opt = brent(func, args=(model,), brack=(x-1, x+1), tol=tol) + return x_opt + + +class RegularizedResults(Results): + + def __init__(self, model, params): + super(RegularizedResults, self).__init__(model, params) + + @cache_readonly + def fittedvalues(self): + return self.model.predict(self.params) + + +class RegularizedResultsWrapper(wrap.ResultsWrapper): + _attrs = { + 'params': 'columns', + 'resid': 'rows', + 'fittedvalues': 'rows', + } + _wrap_attrs = _attrs +wrap.populate_wrapper(RegularizedResultsWrapper, # noqa:E305 + RegularizedResults) diff --git a/statsmodels/base/l1_cvxopt.py b/statsmodels/base/l1_cvxopt.py new file mode 100644 index 0000000..9c262a0 --- /dev/null +++ b/statsmodels/base/l1_cvxopt.py @@ -0,0 +1,194 @@ +""" +Holds files for l1 regularization of LikelihoodModel, using cvxopt. +""" +import numpy as np +import statsmodels.base.l1_solvers_common as l1_solvers_common +from cvxopt import solvers, matrix + + +def fit_l1_cvxopt_cp( + f, score, start_params, args, kwargs, disp=False, maxiter=100, + callback=None, retall=False, full_output=False, hess=None): + """ + Solve the l1 regularized problem using cvxopt.solvers.cp + + Specifically: We convert the convex but non-smooth problem + + .. math:: \\min_\\beta f(\\beta) + \\sum_k\\alpha_k |\\beta_k| + + via the transformation to the smooth, convex, constrained problem in twice + as many variables (adding the "added variables" :math:`u_k`) + + .. math:: \\min_{\\beta,u} f(\\beta) + \\sum_k\\alpha_k u_k, + + subject to + + .. math:: -u_k \\leq \\beta_k \\leq u_k. + + Parameters + ---------- + All the usual parameters from LikelhoodModel.fit + alpha : non-negative scalar or numpy array (same size as parameters) + The weight multiplying the l1 penalty term + trim_mode : 'auto, 'size', or 'off' + If not 'off', trim (set to zero) parameters that would have been zero + if the solver reached the theoretical minimum. + If 'auto', trim params using the Theory above. + If 'size', trim params if they have very small absolute value + size_trim_tol : float or 'auto' (default = 'auto') + For use when trim_mode === 'size' + auto_trim_tol : float + For sue when trim_mode == 'auto'. Use + qc_tol : float + Print warning and don't allow auto trim when (ii) in "Theory" (above) + is violated by this much. + qc_verbose : Boolean + If true, print out a full QC report upon failure + abstol : float + absolute accuracy (default: 1e-7). + reltol : float + relative accuracy (default: 1e-6). + feastol : float + tolerance for feasibility conditions (default: 1e-7). + refinement : int + number of iterative refinement steps when solving KKT equations + (default: 1). + """ + start_params = np.array(start_params).ravel('F') + + ## Extract arguments + # k_params is total number of covariates, possibly including a leading constant. + k_params = len(start_params) + # The start point + x0 = np.append(start_params, np.fabs(start_params)) + x0 = matrix(x0, (2 * k_params, 1)) + # The regularization parameter + alpha = np.array(kwargs['alpha_rescaled']).ravel('F') + # Make sure it's a vector + alpha = alpha * np.ones(k_params) + assert alpha.min() >= 0 + + ## Wrap up functions for cvxopt + f_0 = lambda x: _objective_func(f, x, k_params, alpha, *args) + Df = lambda x: _fprime(score, x, k_params, alpha) + G = _get_G(k_params) # Inequality constraint matrix, Gx \leq h + h = matrix(0.0, (2 * k_params, 1)) # RHS in inequality constraint + H = lambda x, z: _hessian_wrapper(hess, x, z, k_params) + + ## Define the optimization function + def F(x=None, z=None): + if x is None: + return 0, x0 + elif z is None: + return f_0(x), Df(x) + else: + return f_0(x), Df(x), H(x, z) + + ## Convert optimization settings to cvxopt form + solvers.options['show_progress'] = disp + solvers.options['maxiters'] = maxiter + if 'abstol' in kwargs: + solvers.options['abstol'] = kwargs['abstol'] + if 'reltol' in kwargs: + solvers.options['reltol'] = kwargs['reltol'] + if 'feastol' in kwargs: + solvers.options['feastol'] = kwargs['feastol'] + if 'refinement' in kwargs: + solvers.options['refinement'] = kwargs['refinement'] + + ### Call the optimizer + results = solvers.cp(F, G, h) + x = np.asarray(results['x']).ravel() + params = x[:k_params] + + ### Post-process + # QC + qc_tol = kwargs['qc_tol'] + qc_verbose = kwargs['qc_verbose'] + passed = l1_solvers_common.qc_results( + params, alpha, score, qc_tol, qc_verbose) + # Possibly trim + trim_mode = kwargs['trim_mode'] + size_trim_tol = kwargs['size_trim_tol'] + auto_trim_tol = kwargs['auto_trim_tol'] + params, trimmed = l1_solvers_common.do_trim_params( + params, k_params, alpha, score, passed, trim_mode, size_trim_tol, + auto_trim_tol) + + ### Pack up return values for statsmodels + # TODO These retvals are returned as mle_retvals...but the fit wasn't ML + if full_output: + fopt = f_0(x) + gopt = float('nan') # Objective is non-differentiable + hopt = float('nan') + iterations = float('nan') + converged = (results['status'] == 'optimal') + warnflag = results['status'] + retvals = { + 'fopt': fopt, 'converged': converged, 'iterations': iterations, + 'gopt': gopt, 'hopt': hopt, 'trimmed': trimmed, + 'warnflag': warnflag} + else: + x = np.array(results['x']).ravel() + params = x[:k_params] + + ### Return results + if full_output: + return params, retvals + else: + return params + + +def _objective_func(f, x, k_params, alpha, *args): + """ + The regularized objective function. + """ + x_arr = np.asarray(x) + params = x_arr[:k_params].ravel() + u = x_arr[k_params:] + # Call the numpy version + objective_func_arr = f(params, *args) + (alpha * u).sum() + # Return + return matrix(objective_func_arr) + + +def _fprime(score, x, k_params, alpha): + """ + The regularized derivative. + """ + x_arr = np.asarray(x) + params = x_arr[:k_params].ravel() + # Call the numpy version + # The derivative just appends a vector of constants + fprime_arr = np.append(score(params), alpha) + # Return + return matrix(fprime_arr, (1, 2 * k_params)) + + +def _get_G(k_params): + """ + The linear inequality constraint matrix. + """ + I = np.eye(k_params) # noqa:E741 + A = np.concatenate((-I, -I), axis=1) + B = np.concatenate((I, -I), axis=1) + C = np.concatenate((A, B), axis=0) + # Return + return matrix(C) + + +def _hessian_wrapper(hess, x, z, k_params): + """ + Wraps the hessian up in the form for cvxopt. + + cvxopt wants the hessian of the objective function and the constraints. + Since our constraints are linear, this part is all zeros. + """ + x_arr = np.asarray(x) + params = x_arr[:k_params].ravel() + zh_x = np.asarray(z[0]) * hess(params) + zero_mat = np.zeros(zh_x.shape) + A = np.concatenate((zh_x, zero_mat), axis=1) + B = np.concatenate((zero_mat, zero_mat), axis=1) + zh_x_ext = np.concatenate((A, B), axis=0) + return matrix(zh_x_ext, (2 * k_params, 2 * k_params)) diff --git a/statsmodels/base/l1_slsqp.py b/statsmodels/base/l1_slsqp.py new file mode 100644 index 0000000..06aff59 --- /dev/null +++ b/statsmodels/base/l1_slsqp.py @@ -0,0 +1,168 @@ +""" +Holds files for l1 regularization of LikelihoodModel, using +scipy.optimize.slsqp +""" +import numpy as np +from scipy.optimize import fmin_slsqp +import statsmodels.base.l1_solvers_common as l1_solvers_common + + +def fit_l1_slsqp( + f, score, start_params, args, kwargs, disp=False, maxiter=1000, + callback=None, retall=False, full_output=False, hess=None): + """ + Solve the l1 regularized problem using scipy.optimize.fmin_slsqp(). + + Specifically: We convert the convex but non-smooth problem + + .. math:: \\min_\\beta f(\\beta) + \\sum_k\\alpha_k |\\beta_k| + + via the transformation to the smooth, convex, constrained problem in twice + as many variables (adding the "added variables" :math:`u_k`) + + .. math:: \\min_{\\beta,u} f(\\beta) + \\sum_k\\alpha_k u_k, + + subject to + + .. math:: -u_k \\leq \\beta_k \\leq u_k. + + Parameters + ---------- + All the usual parameters from LikelhoodModel.fit + alpha : non-negative scalar or numpy array (same size as parameters) + The weight multiplying the l1 penalty term + trim_mode : 'auto, 'size', or 'off' + If not 'off', trim (set to zero) parameters that would have been zero + if the solver reached the theoretical minimum. + If 'auto', trim params using the Theory above. + If 'size', trim params if they have very small absolute value + size_trim_tol : float or 'auto' (default = 'auto') + For use when trim_mode === 'size' + auto_trim_tol : float + For sue when trim_mode == 'auto'. Use + qc_tol : float + Print warning and don't allow auto trim when (ii) in "Theory" (above) + is violated by this much. + qc_verbose : Boolean + If true, print out a full QC report upon failure + acc : float (default 1e-6) + Requested accuracy as used by slsqp + """ + start_params = np.array(start_params).ravel('F') + + ### Extract values + # k_params is total number of covariates, + # possibly including a leading constant. + k_params = len(start_params) + # The start point + x0 = np.append(start_params, np.fabs(start_params)) + # alpha is the regularization parameter + alpha = np.array(kwargs['alpha_rescaled']).ravel('F') + # Make sure it's a vector + alpha = alpha * np.ones(k_params) + assert alpha.min() >= 0 + # Convert display parameters to scipy.optimize form + disp_slsqp = _get_disp_slsqp(disp, retall) + # Set/retrieve the desired accuracy + acc = kwargs.setdefault('acc', 1e-10) + + ### Wrap up for use in fmin_slsqp + func = lambda x_full: _objective_func(f, x_full, k_params, alpha, *args) + f_ieqcons_wrap = lambda x_full: _f_ieqcons(x_full, k_params) + fprime_wrap = lambda x_full: _fprime(score, x_full, k_params, alpha) + fprime_ieqcons_wrap = lambda x_full: _fprime_ieqcons(x_full, k_params) + + ### Call the solver + results = fmin_slsqp( + func, x0, f_ieqcons=f_ieqcons_wrap, fprime=fprime_wrap, acc=acc, + iter=maxiter, disp=disp_slsqp, full_output=full_output, + fprime_ieqcons=fprime_ieqcons_wrap) + params = np.asarray(results[0][:k_params]) + + ### Post-process + # QC + qc_tol = kwargs['qc_tol'] + qc_verbose = kwargs['qc_verbose'] + passed = l1_solvers_common.qc_results( + params, alpha, score, qc_tol, qc_verbose) + # Possibly trim + trim_mode = kwargs['trim_mode'] + size_trim_tol = kwargs['size_trim_tol'] + auto_trim_tol = kwargs['auto_trim_tol'] + params, trimmed = l1_solvers_common.do_trim_params( + params, k_params, alpha, score, passed, trim_mode, size_trim_tol, + auto_trim_tol) + + ### Pack up return values for statsmodels optimizers + # TODO These retvals are returned as mle_retvals...but the fit wasn't ML. + # This could be confusing someday. + if full_output: + x_full, fx, its, imode, smode = results + fopt = func(np.asarray(x_full)) + converged = (imode == 0) + warnflag = str(imode) + ' ' + smode + iterations = its + gopt = float('nan') # Objective is non-differentiable + hopt = float('nan') + retvals = { + 'fopt': fopt, 'converged': converged, 'iterations': iterations, + 'gopt': gopt, 'hopt': hopt, 'trimmed': trimmed, + 'warnflag': warnflag} + + ### Return + if full_output: + return params, retvals + else: + return params + + +def _get_disp_slsqp(disp, retall): + if disp or retall: + if disp: + disp_slsqp = 1 + if retall: + disp_slsqp = 2 + else: + disp_slsqp = 0 + return disp_slsqp + + +def _objective_func(f, x_full, k_params, alpha, *args): + """ + The regularized objective function + """ + x_params = x_full[:k_params] + x_added = x_full[k_params:] + ## Return + return f(x_params, *args) + (alpha * x_added).sum() + + +def _fprime(score, x_full, k_params, alpha): + """ + The regularized derivative + """ + x_params = x_full[:k_params] + # The derivative just appends a vector of constants + return np.append(score(x_params), alpha) + + +def _f_ieqcons(x_full, k_params): + """ + The inequality constraints. + """ + x_params = x_full[:k_params] + x_added = x_full[k_params:] + # All entries in this vector must be \geq 0 in a feasible solution + return np.append(x_params + x_added, x_added - x_params) + + +def _fprime_ieqcons(x_full, k_params): + """ + Derivative of the inequality constraints + """ + I = np.eye(k_params) # noqa:E741 + A = np.concatenate((I, I), axis=1) + B = np.concatenate((-I, I), axis=1) + C = np.concatenate((A, B), axis=0) + ## Return + return C diff --git a/statsmodels/base/l1_solvers_common.py b/statsmodels/base/l1_solvers_common.py new file mode 100644 index 0000000..cc32839 --- /dev/null +++ b/statsmodels/base/l1_solvers_common.py @@ -0,0 +1,165 @@ +""" +Holds common functions for l1 solvers. +""" +from __future__ import print_function + +import numpy as np + +from statsmodels.compat.python import range +from statsmodels.tools.sm_exceptions import ConvergenceWarning + + +def qc_results(params, alpha, score, qc_tol, qc_verbose=False): + """ + Theory dictates that one of two conditions holds: + i) abs(score[i]) == alpha[i] and params[i] != 0 + ii) abs(score[i]) <= alpha[i] and params[i] == 0 + qc_results checks to see that (ii) holds, within qc_tol + + qc_results also checks for nan or results of the wrong shape. + + Parameters + ---------- + params : np.ndarray + model parameters. Not including the added variables x_added. + alpha : np.ndarray + regularization coefficients + score : function + Gradient of unregularized objective function + qc_tol : float + Tolerance to hold conditions (i) and (ii) to for QC check. + qc_verbose : Boolean + If true, print out a full QC report upon failure + + Returns + ------- + passed : Boolean + True if QC check passed + qc_dict : Dictionary + Keys are fprime, alpha, params, passed_array + + Prints + ------ + Warning message if QC check fails. + """ + ## Check for fatal errors + assert not np.isnan(params).max() + assert (params == params.ravel('F')).min(), \ + "params should have already been 1-d" + + ## Start the theory compliance check + fprime = score(params) + k_params = len(params) + + passed_array = np.array([True] * k_params) + for i in range(k_params): + if alpha[i] > 0: + # If |fprime| is too big, then something went wrong + if (abs(fprime[i]) - alpha[i]) / alpha[i] > qc_tol: + passed_array[i] = False + qc_dict = dict( + fprime=fprime, alpha=alpha, params=params, passed_array=passed_array) + passed = passed_array.min() + if not passed: + num_failed = (~passed_array).sum() + message = 'QC check did not pass for %d out of %d parameters' % ( + num_failed, k_params) + message += '\nTry increasing solver accuracy or number of iterations'\ + ', decreasing alpha, or switch solvers' + if qc_verbose: + message += _get_verbose_addon(qc_dict) + + import warnings + warnings.warn(message, ConvergenceWarning) + + return passed + + +def _get_verbose_addon(qc_dict): + alpha = qc_dict['alpha'] + params = qc_dict['params'] + fprime = qc_dict['fprime'] + passed_array = qc_dict['passed_array'] + + addon = '\n------ verbose QC printout -----------------' + addon = '\n------ Recall the problem was rescaled by 1 / nobs ---' + addon += '\n|%-10s|%-10s|%-10s|%-10s|' % ( + 'passed', 'alpha', 'fprime', 'param') + addon += '\n--------------------------------------------' + for i in range(len(alpha)): + addon += '\n|%-10s|%-10.3e|%-10.3e|%-10.3e|' % ( + passed_array[i], alpha[i], fprime[i], params[i]) + return addon + + +def do_trim_params(params, k_params, alpha, score, passed, trim_mode, + size_trim_tol, auto_trim_tol): + """ + Trims (set to zero) params that are zero at the theoretical minimum. + Uses heuristics to account for the solver not actually finding the minimum. + + In all cases, if alpha[i] == 0, then don't trim the ith param. + In all cases, do nothing with the added variables. + + Parameters + ---------- + params : np.ndarray + model parameters. Not including added variables. + k_params : Int + Number of parameters + alpha : np.ndarray + regularization coefficients + score : Function. + score(params) should return a 1-d vector of derivatives of the + unpenalized objective function. + passed : Boolean + True if the QC check passed + trim_mode : 'auto, 'size', or 'off' + If not 'off', trim (set to zero) parameters that would have been zero + if the solver reached the theoretical minimum. + If 'auto', trim params using the Theory above. + If 'size', trim params if they have very small absolute value + size_trim_tol : float or 'auto' (default = 'auto') + For use when trim_mode === 'size' + auto_trim_tol : float + For sue when trim_mode == 'auto'. Use + qc_tol : float + Print warning and don't allow auto trim when (ii) in "Theory" (above) + is violated by this much. + + Returns + ------- + params : np.ndarray + Trimmed model parameters + trimmed : np.ndarray of Booleans + trimmed[i] == True if the ith parameter was trimmed. + """ + ## Trim the small params + trimmed = [False] * k_params + + if trim_mode == 'off': + trimmed = np.array([False] * k_params) + elif trim_mode == 'auto' and not passed: + import warnings + msg = "Could not trim params automatically due to failed QC check. " \ + "Trimming using trim_mode == 'size' will still work." + warnings.warn(msg, ConvergenceWarning) + trimmed = np.array([False] * k_params) + elif trim_mode == 'auto' and passed: + fprime = score(params) + for i in range(k_params): + if alpha[i] != 0: + if (alpha[i] - abs(fprime[i])) / alpha[i] > auto_trim_tol: + params[i] = 0.0 + trimmed[i] = True + elif trim_mode == 'size': + for i in range(k_params): + if alpha[i] != 0: + if abs(params[i]) < size_trim_tol: + params[i] = 0.0 + trimmed[i] = True + else: + raise ValueError( + "trim_mode == %s, which is not recognized" % (trim_mode)) + + return params, np.asarray(trimmed) diff --git a/statsmodels/base/model.py b/statsmodels/base/model.py new file mode 100644 index 0000000..6c457ff --- /dev/null +++ b/statsmodels/base/model.py @@ -0,0 +1,2442 @@ +from __future__ import print_function +from statsmodels.compat.python import lzip, range, reduce +import numpy as np +from scipy import stats +from statsmodels.base.data import handle_data +from statsmodels.tools.data import _is_using_pandas +from statsmodels.tools.tools import recipr, nan_dot +from statsmodels.stats.contrast import (ContrastResults, WaldTestResults, + t_test_pairwise) +from statsmodels.tools.decorators import cache_readonly +import statsmodels.base.wrapper as wrap +from statsmodels.tools.numdiff import approx_fprime +from statsmodels.tools.sm_exceptions import ValueWarning, \ + HessianInversionWarning +from statsmodels.formula import handle_formula_data +from statsmodels.base.optimizer import Optimizer + + +_model_params_doc = """ + Parameters + ---------- + endog : array-like + 1-d endogenous response variable. The dependent variable. + exog : array-like + A nobs x k array where `nobs` is the number of observations and `k` + is the number of regressors. An intercept is not included by default + and should be added by the user. See + :func:`statsmodels.tools.add_constant`.""" + +_missing_param_doc = """\ +missing : str + Available options are 'none', 'drop', and 'raise'. If 'none', no nan + checking is done. If 'drop', any observations with nans are dropped. + If 'raise', an error is raised. Default is 'none.'""" +_extra_param_doc = """ + hasconst : None or bool + Indicates whether the RHS includes a user-supplied constant. If True, + a constant is not checked for and k_constant is set to 1 and all + result statistics are calculated as if a constant is present. If + False, a constant is not checked for and k_constant is set to 0. +""" + + +class Model(object): + __doc__ = """ + A (predictive) statistical model. Intended to be subclassed not used. + + %(params_doc)s + %(extra_params_doc)s + + Attributes + ---------- + exog_names + endog_names + + Notes + ----- + `endog` and `exog` are references to any data provided. So if the data is + already stored in numpy arrays and it is changed then `endog` and `exog` + will change as well. + """ % {'params_doc': _model_params_doc, + 'extra_params_doc': _missing_param_doc + _extra_param_doc} + + def __init__(self, endog, exog=None, **kwargs): + missing = kwargs.pop('missing', 'none') + hasconst = kwargs.pop('hasconst', None) + self.data = self._handle_data(endog, exog, missing, hasconst, + **kwargs) + self.k_constant = self.data.k_constant + self.exog = self.data.exog + self.endog = self.data.endog + self._data_attr = [] + self._data_attr.extend(['exog', 'endog', 'data.exog', 'data.endog']) + if 'formula' not in kwargs: # won't be able to unpickle without these + self._data_attr.extend(['data.orig_endog', 'data.orig_exog']) + # store keys for extras if we need to recreate model instance + # we don't need 'missing', maybe we need 'hasconst' + self._init_keys = list(kwargs.keys()) + if hasconst is not None: + self._init_keys.append('hasconst') + + def _get_init_kwds(self): + """return dictionary with extra keys used in model.__init__ + """ + kwds = dict(((key, getattr(self, key, None)) + for key in self._init_keys)) + + return kwds + + def _handle_data(self, endog, exog, missing, hasconst, **kwargs): + data = handle_data(endog, exog, missing, hasconst, **kwargs) + # kwargs arrays could have changed, easier to just attach here + for key in kwargs: + if key in ['design_info', 'formula']: # leave attached to data + continue + # pop so we don't start keeping all these twice or references + try: + setattr(self, key, data.__dict__.pop(key)) + except KeyError: # panel already pops keys in data handling + pass + return data + + @classmethod + def from_formula(cls, formula, data, subset=None, drop_cols=None, + *args, **kwargs): + """ + Create a Model from a formula and dataframe. + + Parameters + ---------- + formula : str or generic Formula object + The formula specifying the model + data : array-like + The data for the model. See Notes. + subset : array-like + An array-like object of booleans, integers, or index values that + indicate the subset of df to use in the model. Assumes df is a + `pandas.DataFrame` + drop_cols : array-like + Columns to drop from the design matrix. Cannot be used to + drop terms involving categoricals. + args : extra arguments + These are passed to the model + kwargs : extra keyword arguments + These are passed to the model with one exception. The + ``eval_env`` keyword is passed to patsy. It can be either a + :class:`patsy:patsy.EvalEnvironment` object or an integer + indicating the depth of the namespace to use. For example, the + default ``eval_env=0`` uses the calling namespace. If you wish + to use a "clean" environment set ``eval_env=-1``. + + Returns + ------- + model : Model instance + + Notes + ----- + data must define __getitem__ with the keys in the formula terms + args and kwargs are passed on to the model instantiation. E.g., + a numpy structured or rec array, a dictionary, or a pandas DataFrame. + """ + # TODO: provide a docs template for args/kwargs from child models + # TODO: subset could use syntax. issue #469. + if subset is not None: + data = data.loc[subset] + eval_env = kwargs.pop('eval_env', None) + if eval_env is None: + eval_env = 2 + elif eval_env == -1: + from patsy import EvalEnvironment + eval_env = EvalEnvironment({}) + else: + eval_env += 1 # we're going down the stack again + missing = kwargs.get('missing', 'drop') + if missing == 'none': # with patsy it's drop or raise. let's raise. + missing = 'raise' + + tmp = handle_formula_data(data, None, formula, depth=eval_env, + missing=missing) + ((endog, exog), missing_idx, design_info) = tmp + + if drop_cols is not None and len(drop_cols) > 0: + cols = [x for x in exog.columns if x not in drop_cols] + if len(cols) < len(exog.columns): + exog = exog[cols] + cols = list(design_info.term_names) + for col in drop_cols: + try: + cols.remove(col) + except ValueError: + pass # OK if not present + design_info = design_info.subset(cols) + + kwargs.update({'missing_idx': missing_idx, + 'missing': missing, + 'formula': formula, # attach formula for unpckling + 'design_info': design_info}) + mod = cls(endog, exog, *args, **kwargs) + mod.formula = formula + + # since we got a dataframe, attach the original + mod.data.frame = data + return mod + + @property + def endog_names(self): + """Names of endogenous variables""" + return self.data.ynames + + @property + def exog_names(self): + """Names of exogenous variables""" + return self.data.xnames + + def fit(self): + """ + Fit a model to data. + """ + raise NotImplementedError + + def predict(self, params, exog=None, *args, **kwargs): + """ + After a model has been fit predict returns the fitted values. + + This is a placeholder intended to be overwritten by individual models. + """ + raise NotImplementedError + + +class LikelihoodModel(Model): + """ + Likelihood model is a subclass of Model. + """ + + def __init__(self, endog, exog=None, **kwargs): + super(LikelihoodModel, self).__init__(endog, exog, **kwargs) + self.initialize() + + def initialize(self): + """ + Initialize (possibly re-initialize) a Model instance. For + instance, the design matrix of a linear model may change + and some things must be recomputed. + """ + pass + + # TODO: if the intent is to re-initialize the model with new data then this + # method needs to take inputs... + + def loglike(self, params): + """ + Log-likelihood of model. + """ + raise NotImplementedError + + def score(self, params): + """ + Score vector of model. + + The gradient of logL with respect to each parameter. + """ + raise NotImplementedError + + def information(self, params): + """ + Fisher information matrix of model + + Returns -Hessian of loglike evaluated at params. + """ + raise NotImplementedError + + def hessian(self, params): + """ + The Hessian matrix of the model + """ + raise NotImplementedError + + def fit(self, start_params=None, method='newton', maxiter=100, + full_output=True, disp=True, fargs=(), callback=None, retall=False, + skip_hessian=False, **kwargs): + """ + Fit method for likelihood based models + + Parameters + ---------- + start_params : array-like, optional + Initial guess of the solution for the loglikelihood maximization. + The default is an array of zeros. + method : str, optional + The `method` determines which solver from `scipy.optimize` + is used, and it can be chosen from among the following strings: + + - 'newton' for Newton-Raphson, 'nm' for Nelder-Mead + - 'bfgs' for Broyden-Fletcher-Goldfarb-Shanno (BFGS) + - 'lbfgs' for limited-memory BFGS with optional box constraints + - 'powell' for modified Powell's method + - 'cg' for conjugate gradient + - 'ncg' for Newton-conjugate gradient + - 'basinhopping' for global basin-hopping solver + - 'minimize' for generic wrapper of scipy minimize (BFGS by default) + + The explicit arguments in `fit` are passed to the solver, + with the exception of the basin-hopping solver. Each + solver has several optional arguments that are not the same across + solvers. See the notes section below (or scipy.optimize) for the + available arguments and for the list of explicit arguments that the + basin-hopping solver supports. + maxiter : int, optional + The maximum number of iterations to perform. + full_output : bool, optional + Set to True to have all available output in the Results object's + mle_retvals attribute. The output is dependent on the solver. + See LikelihoodModelResults notes section for more information. + disp : bool, optional + Set to True to print convergence messages. + fargs : tuple, optional + Extra arguments passed to the likelihood function, i.e., + loglike(x,*args) + callback : callable callback(xk), optional + Called after each iteration, as callback(xk), where xk is the + current parameter vector. + retall : bool, optional + Set to True to return list of solutions at each iteration. + Available in Results object's mle_retvals attribute. + skip_hessian : bool, optional + If False (default), then the negative inverse hessian is calculated + after the optimization. If True, then the hessian will not be + calculated. However, it will be available in methods that use the + hessian in the optimization (currently only with `"newton"`). + kwargs : keywords + All kwargs are passed to the chosen solver with one exception. The + following keyword controls what happens after the fit:: + + warn_convergence : bool, optional + If True, checks the model for the converged flag. If the + converged flag is False, a ConvergenceWarning is issued. + + Notes + ----- + The 'basinhopping' solver ignores `maxiter`, `retall`, `full_output` + explicit arguments. + + Optional arguments for solvers (see returned Results.mle_settings):: + + 'newton' + tol : float + Relative error in params acceptable for convergence. + 'nm' -- Nelder Mead + xtol : float + Relative error in params acceptable for convergence + ftol : float + Relative error in loglike(params) acceptable for + convergence + maxfun : int + Maximum number of function evaluations to make. + 'bfgs' + gtol : float + Stop when norm of gradient is less than gtol. + norm : float + Order of norm (np.Inf is max, -np.Inf is min) + epsilon + If fprime is approximated, use this value for the step + size. Only relevant if LikelihoodModel.score is None. + 'lbfgs' + m : int + This many terms are used for the Hessian approximation. + factr : float + A stop condition that is a variant of relative error. + pgtol : float + A stop condition that uses the projected gradient. + epsilon + If fprime is approximated, use this value for the step + size. Only relevant if LikelihoodModel.score is None. + maxfun : int + Maximum number of function evaluations to make. + bounds : sequence + (min, max) pairs for each element in x, + defining the bounds on that parameter. + Use None for one of min or max when there is no bound + in that direction. + 'cg' + gtol : float + Stop when norm of gradient is less than gtol. + norm : float + Order of norm (np.Inf is max, -np.Inf is min) + epsilon : float + If fprime is approximated, use this value for the step + size. Can be scalar or vector. Only relevant if + Likelihoodmodel.score is None. + 'ncg' + fhess_p : callable f'(x,*args) + Function which computes the Hessian of f times an arbitrary + vector, p. Should only be supplied if + LikelihoodModel.hessian is None. + avextol : float + Stop when the average relative error in the minimizer + falls below this amount. + epsilon : float or ndarray + If fhess is approximated, use this value for the step size. + Only relevant if Likelihoodmodel.hessian is None. + 'powell' + xtol : float + Line-search error tolerance + ftol : float + Relative error in loglike(params) for acceptable for + convergence. + maxfun : int + Maximum number of function evaluations to make. + start_direc : ndarray + Initial direction set. + 'basinhopping' + niter : integer + The number of basin hopping iterations. + niter_success : integer + Stop the run if the global minimum candidate remains the + same for this number of iterations. + T : float + The "temperature" parameter for the accept or reject + criterion. Higher "temperatures" mean that larger jumps + in function value will be accepted. For best results + `T` should be comparable to the separation (in function + value) between local minima. + stepsize : float + Initial step size for use in the random displacement. + interval : integer + The interval for how often to update the `stepsize`. + minimizer : dict + Extra keyword arguments to be passed to the minimizer + `scipy.optimize.minimize()`, for example 'method' - the + minimization method (e.g. 'L-BFGS-B'), or 'tol' - the + tolerance for termination. Other arguments are mapped from + explicit argument of `fit`: + - `args` <- `fargs` + - `jac` <- `score` + - `hess` <- `hess` + 'minimize' + min_method : str, optional + Name of minimization method to use. + Any method specific arguments can be passed directly. + For a list of methods and their arguments, see + documentation of `scipy.optimize.minimize`. + If no method is specified, then BFGS is used. + """ + Hinv = None # JP error if full_output=0, Hinv not defined + + if start_params is None: + if hasattr(self, 'start_params'): + start_params = self.start_params + elif self.exog is not None: + # fails for shape (K,)? + start_params = [0] * self.exog.shape[1] + else: + raise ValueError("If exog is None, then start_params should " + "be specified") + + # TODO: separate args from nonarg taking score and hessian, ie., + # user-supplied and numerically evaluated estimate frprime doesn't take + # args in most (any?) of the optimize function + + nobs = self.endog.shape[0] + # f = lambda params, *args: -self.loglike(params, *args) / nobs + + def f(params, *args): + return -self.loglike(params, *args) / nobs + + if method == 'newton': + # TODO: why are score and hess positive? + def score(params, *args): + return self.score(params, *args) / nobs + + def hess(params, *args): + return self.hessian(params, *args) / nobs + else: + def score(params, *args): + return -self.score(params, *args) / nobs + + def hess(params, *args): + return -self.hessian(params, *args) / nobs + + warn_convergence = kwargs.pop('warn_convergence', True) + optimizer = Optimizer() + xopt, retvals, optim_settings = optimizer._fit(f, score, start_params, + fargs, kwargs, + hessian=hess, + method=method, + disp=disp, + maxiter=maxiter, + callback=callback, + retall=retall, + full_output=full_output) + + # NOTE: this is for fit_regularized and should be generalized + cov_params_func = kwargs.setdefault('cov_params_func', None) + if cov_params_func: + Hinv = cov_params_func(self, xopt, retvals) + elif method == 'newton' and full_output: + Hinv = np.linalg.inv(-retvals['Hessian']) / nobs + elif not skip_hessian: + H = -1 * self.hessian(xopt) + invertible = False + if np.all(np.isfinite(H)): + eigvals, eigvecs = np.linalg.eigh(H) + if np.min(eigvals) > 0: + invertible = True + + if invertible: + Hinv = eigvecs.dot(np.diag(1.0 / eigvals)).dot(eigvecs.T) + Hinv = np.asfortranarray((Hinv + Hinv.T) / 2.0) + else: + from warnings import warn + warn('Inverting hessian failed, no bse or cov_params ' + 'available', HessianInversionWarning) + Hinv = None + + if 'cov_type' in kwargs: + cov_kwds = kwargs.get('cov_kwds', {}) + kwds = {'cov_type': kwargs['cov_type'], 'cov_kwds': cov_kwds} + else: + kwds = {} + if 'use_t' in kwargs: + kwds['use_t'] = kwargs['use_t'] + # TODO: add Hessian approximation and change the above if needed + mlefit = LikelihoodModelResults(self, xopt, Hinv, scale=1., **kwds) + + # TODO: hardcode scale? + mlefit.mle_retvals = retvals + if isinstance(retvals, dict): + if warn_convergence and not retvals['converged']: + from warnings import warn + from statsmodels.tools.sm_exceptions import ConvergenceWarning + warn("Maximum Likelihood optimization failed to converge. " + "Check mle_retvals", ConvergenceWarning) + + mlefit.mle_settings = optim_settings + return mlefit + + def _fit_zeros(self, keep_index=None, start_params=None, + return_auxiliary=False, k_params=None, **fit_kwds): + """experimental, fit the model subject to zero constraints + + Intended for internal use cases until we know what we need. + API will need to change to handle models with two exog. + This is not yet supported by all model subclasses. + + This is essentially a simplified version of `fit_constrained`, and + does not need to use `offset`. + + The estimation creates a new model with transformed design matrix, + exog, and converts the results back to the original parameterization. + + Some subclasses could use a more efficient calculation than using a + new model. + + Parameters + ---------- + keep_index : array_like (int or bool) or slice + variables that should be dropped. + start_params : None or array_like + starting values for the optimization. `start_params` needs to be + given in the original parameter space and are internally + transformed. + k_params : int or None + If None, then we try to infer from start_params or model. + **fit_kwds : keyword arguments + fit_kwds are used in the optimization of the transformed model. + + Returns + ------- + results : Results instance + + """ + # we need to append index of extra params to keep_index as in + # NegativeBinomial + if hasattr(self, 'k_extra') and self.k_extra > 0: + # we cannot change the original, TODO: should we add keep_index_params? + keep_index = np.array(keep_index, copy=True) + k = self.exog.shape[1] + extra_index = np.arange(k, k + self.k_extra) + keep_index_p = np.concatenate((keep_index, extra_index)) + else: + keep_index_p = keep_index + + # not all models support start_params, drop if None, hide them in fit_kwds + if start_params is not None: + fit_kwds['start_params'] = start_params[keep_index_p] + k_params = len(start_params) + # ignore k_params in this case, or verify consisteny? + + # build auxiliary model and fit + init_kwds = self._get_init_kwds() + mod_constr = self.__class__(self.endog, self.exog[:, keep_index], + **init_kwds) + res_constr = mod_constr.fit(**fit_kwds) + # switch name, only need keep_index for params below + keep_index = keep_index_p + + if k_params is None: + k_params = self.exog.shape[1] + k_params += getattr(self, 'k_extra', 0) + + params_full = np.zeros(k_params) + params_full[keep_index] = res_constr.params + + # create dummy results Instance, TODO: wire up properly + # TODO: this could be moved into separate private method if needed + # discrete L1 fit_regularized doens't reestimate AFAICS + # RLM doesn't have method, disp nor warn_convergence keywords + # OLS, WLS swallows extra kwds with **kwargs, but doesn't have method='nm' + try: + # Note: addding full_output=False causes exceptions + res = self.fit(maxiter=0, disp=0, method='nm', skip_hessian=True, + warn_convergence=False, start_params=params_full) + # we get a wrapper back + except (TypeError, ValueError): + res = self.fit() + + # Warning: make sure we are not just changing the wrapper instead of + # results #2400 + # TODO: do we need to change res._results.scale in some models? + if hasattr(res_constr.model, 'scale'): + # Note: res.model is self + # GLM problem, see #2399, + # TODO: remove from model if not needed anymore + res.model.scale = res._results.scale = res_constr.model.scale + + if hasattr(res_constr, 'mle_retvals'): + res._results.mle_retvals = res_constr.mle_retvals + # not available for not scipy optimization, e.g. glm irls + # TODO: what retvals should be required? + # res.mle_retvals['fcall'] = res_constr.mle_retvals.get('fcall', np.nan) + # res.mle_retvals['iterations'] = res_constr.mle_retvals.get( + # 'iterations', np.nan) + # res.mle_retvals['converged'] = res_constr.mle_retvals['converged'] + # overwrite all mle_settings + if hasattr(res_constr, 'mle_settings'): + res._results.mle_settings = res_constr.mle_settings + + res._results.params = params_full + if (not hasattr(res._results, 'normalized_cov_params') or + res._results.normalized_cov_params is None): + res._results.normalized_cov_params = np.zeros((k_params, k_params)) + else: + res._results.normalized_cov_params[...] = 0 + + # fancy indexing requires integer array + keep_index = np.array(keep_index) + res._results.normalized_cov_params[keep_index[:, None], keep_index] = \ + res_constr.normalized_cov_params + k_constr = res_constr.df_resid - res._results.df_resid + if hasattr(res_constr, 'cov_params_default'): + res._results.cov_params_default = np.zeros((k_params, k_params)) + res._results.cov_params_default[keep_index[:, None], keep_index] = \ + res_constr.cov_params_default + if hasattr(res_constr, 'cov_type'): + res._results.cov_type = res_constr.cov_type + res._results.cov_kwds = res_constr.cov_kwds + + res._results.keep_index = keep_index + res._results.df_resid = res_constr.df_resid + res._results.df_model = res_constr.df_model + + res._results.k_constr = k_constr + res._results.results_constrained = res_constr + + # special temporary workaround for RLM + # need to be able to override robust covariances + if hasattr(res.model, 'M'): + del res._results._cache['resid'] + del res._results._cache['fittedvalues'] + del res._results._cache['sresid'] + cov = res._results._cache['bcov_scaled'] + # inplace adjustment + cov[...] = 0 + cov[keep_index[:, None], keep_index] = res_constr.bcov_scaled + res._results.cov_params_default = cov + + return res + + def _fit_collinear(self, atol=1e-14, rtol=1e-13, **kwds): + """experimental, fit of the model without collinear variables + + This currently uses QR to drop variables based on the given + sequence. + Options will be added in future, when the supporting functions + to identify collinear variables become available. + """ + + # ------ copied from PR #2380 remove when merged + x = self.exog + tol = atol + rtol * x.var(0) + r = np.linalg.qr(x, mode='r') + mask = np.abs(r.diagonal()) < np.sqrt(tol) + # TODO add to results instance + # idx_collinear = np.where(mask)[0] + idx_keep = np.where(~mask)[0] + return self._fit_zeros(keep_index=idx_keep, **kwds) + + +# TODO: the below is unfinished +class GenericLikelihoodModel(LikelihoodModel): + """ + Allows the fitting of any likelihood function via maximum likelihood. + + A subclass needs to specify at least the log-likelihood + If the log-likelihood is specified for each observation, then results that + require the Jacobian will be available. (The other case is not tested yet.) + + Notes + ----- + Optimization methods that require only a likelihood function are 'nm' and + 'powell' + + Optimization methods that require a likelihood function and a + score/gradient are 'bfgs', 'cg', and 'ncg'. A function to compute the + Hessian is optional for 'ncg'. + + Optimization method that require a likelihood function, a score/gradient, + and a Hessian is 'newton' + + If they are not overwritten by a subclass, then numerical gradient, + Jacobian and Hessian of the log-likelihood are caclulated by numerical + forward differentiation. This might results in some cases in precision + problems, and the Hessian might not be positive definite. Even if the + Hessian is not positive definite the covariance matrix of the parameter + estimates based on the outer product of the Jacobian might still be valid. + + + Examples + -------- + see also subclasses in directory miscmodels + + import statsmodels.api as sm + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog) + # in this dir + from model import GenericLikelihoodModel + probit_mod = sm.Probit(data.endog, data.exog) + probit_res = probit_mod.fit() + loglike = probit_mod.loglike + score = probit_mod.score + mod = GenericLikelihoodModel(data.endog, data.exog, loglike, score) + res = mod.fit(method="nm", maxiter = 500) + import numpy as np + np.allclose(res.params, probit_res.params) + + """ + def __init__(self, endog, exog=None, loglike=None, score=None, + hessian=None, missing='none', extra_params_names=None, + **kwds): + # let them be none in case user wants to use inheritance + if loglike is not None: + self.loglike = loglike + if score is not None: + self.score = score + if hessian is not None: + self.hessian = hessian + + self.__dict__.update(kwds) + + # TODO: data structures? + + # TODO temporary solution, force approx normal + # self.df_model = 9999 + # somewhere: CacheWriteWarning: 'df_model' cannot be overwritten + super(GenericLikelihoodModel, self).__init__(endog, exog, + missing=missing) + + # this won't work for ru2nmnl, maybe np.ndim of a dict? + if exog is not None: + self.nparams = (exog.shape[1] if np.ndim(exog) == 2 else 1) + + if extra_params_names is not None: + self._set_extra_params_names(extra_params_names) + + def _set_extra_params_names(self, extra_params_names): + # check param_names + if extra_params_names is not None: + if self.exog is not None: + self.exog_names.extend(extra_params_names) + else: + self.data.xnames = extra_params_names + + self.nparams = len(self.exog_names) + + # this is redundant and not used when subclassing + def initialize(self): + """ + Initialize (possibly re-initialize) a Model instance. For + instance, the design matrix of a linear model may change + and some things must be recomputed. + """ + if not self.score: # right now score is not optional + self.score = lambda x: approx_fprime(x, self.loglike) + if not self.hessian: + pass + else: # can use approx_hess_p if we have a gradient + if not self.hessian: + pass + # Initialize is called by + # statsmodels.model.LikelihoodModel.__init__ + # and should contain any preprocessing that needs to be done for a model + if self.exog is not None: + # assume constant + er = np.linalg.matrix_rank(self.exog) + self.df_model = float(er - 1) + self.df_resid = float(self.exog.shape[0] - er) + else: + self.df_model = np.nan + self.df_resid = np.nan + super(GenericLikelihoodModel, self).initialize() + + def expandparams(self, params): + """ + expand to full parameter array when some parameters are fixed + + Parameters + ---------- + params : array + reduced parameter array + + Returns + ------- + paramsfull : array + expanded parameter array where fixed parameters are included + + Notes + ----- + Calling this requires that self.fixed_params and self.fixed_paramsmask + are defined. + + *developer notes:* + + This can be used in the log-likelihood to ... + + this could also be replaced by a more general parameter + transformation. + + """ + paramsfull = self.fixed_params.copy() + paramsfull[self.fixed_paramsmask] = params + return paramsfull + + def reduceparams(self, params): + """Reduce parameters""" + return params[self.fixed_paramsmask] + + def loglike(self, params): + """Log-likelihood of model at params""" + return self.loglikeobs(params).sum(0) + + def nloglike(self, params): + """Negative log-likelihood of model at params""" + return -self.loglikeobs(params).sum(0) + + def loglikeobs(self, params): + """Log-likelihood of individual observations at params""" + return -self.nloglikeobs(params) + + def score(self, params): + """ + Gradient of log-likelihood evaluated at params + """ + kwds = {} + kwds.setdefault('centered', True) + return approx_fprime(params, self.loglike, **kwds).ravel() + + def score_obs(self, params, **kwds): + """ + Jacobian/Gradient of log-likelihood evaluated at params for each + observation. + """ + # kwds.setdefault('epsilon', 1e-4) + kwds.setdefault('centered', True) + return approx_fprime(params, self.loglikeobs, **kwds) + + def hessian(self, params): + """ + Hessian of log-likelihood evaluated at params + """ + from statsmodels.tools.numdiff import approx_hess + # need options for hess (epsilon) + return approx_hess(params, self.loglike) + + def hessian_factor(self, params, scale=None, observed=True): + """Weights for calculating Hessian + + Parameters + ---------- + params : ndarray + parameter at which Hessian is evaluated + scale : None or float + If scale is None, then the default scale will be calculated. + Default scale is defined by `self.scaletype` and set in fit. + If scale is not None, then it is used as a fixed scale. + observed : bool + If True, then the observed Hessian is returned. If false then the + expected information matrix is returned. + + Returns + ------- + hessian_factor : ndarray, 1d + A 1d weight vector used in the calculation of the Hessian. + The hessian is obtained by `(exog.T * hessian_factor).dot(exog)` + """ + + raise NotImplementedError + + def fit(self, start_params=None, method='nm', maxiter=500, full_output=1, + disp=1, callback=None, retall=0, **kwargs): + """ + Fit the model using maximum likelihood. + + The rest of the docstring is from + statsmodels.LikelihoodModel.fit + """ + if start_params is None: + if hasattr(self, 'start_params'): + start_params = self.start_params + else: + start_params = 0.1 * np.ones(self.nparams) + + fit_method = super(GenericLikelihoodModel, self).fit + mlefit = fit_method(start_params=start_params, + method=method, maxiter=maxiter, + full_output=full_output, + disp=disp, callback=callback, **kwargs) + genericmlefit = GenericLikelihoodModelResults(self, mlefit) + + # amend param names + exog_names = [] if (self.exog_names is None) else self.exog_names + k_miss = len(exog_names) - len(mlefit.params) + if not k_miss == 0: + if k_miss < 0: + self._set_extra_params_names(['par%d' % i + for i in range(-k_miss)]) + else: + # I don't want to raise after we have already fit() + import warnings + warnings.warn('more exog_names than parameters', ValueWarning) + + return genericmlefit + # fit.__doc__ += LikelihoodModel.fit.__doc__ + + +class Results(object): + """ + Class to contain model results + + Parameters + ---------- + model : class instance + the previously specified model instance + params : array + parameter estimates from the fit model + """ + def __init__(self, model, params, **kwd): + self.__dict__.update(kwd) + self.initialize(model, params, **kwd) + self._data_attr = [] + + def initialize(self, model, params, **kwd): + """ + Initialize (possibly re-initialize) a Results instance. + """ + self.params = params + self.model = model + if hasattr(model, 'k_constant'): + self.k_constant = model.k_constant + + def predict(self, exog=None, transform=True, *args, **kwargs): + """ + Call self.model.predict with self.params as the first argument. + + Parameters + ---------- + exog : array-like, optional + The values for which you want to predict. see Notes below. + transform : bool, optional + If the model was fit via a formula, do you want to pass + exog through the formula. Default is True. E.g., if you fit + a model y ~ log(x1) + log(x2), and transform is True, then + you can pass a data structure that contains x1 and x2 in + their original form. Otherwise, you'd need to log the data + first. + args, kwargs : + Some models can take additional arguments or keywords, see the + predict method of the model for the details. + + Returns + ------- + prediction : ndarray, pandas.Series or pandas.DataFrame + See self.model.predict + + Notes + ----- + The types of exog that are supported depends on whether a formula + was used in the specification of the model. + + If a formula was used, then exog is processed in the same way as + the original data. This transformation needs to have key access to the + same variable names, and can be a pandas DataFrame or a dict like + object that contains numpy arrays. + + If no formula was used, then the provided exog needs to have the + same number of columns as the original exog in the model. No + transformation of the data is performed except converting it to + a numpy array. + + Row indices as in pandas data frames are supported, and added to the + returned prediction. + + """ + import pandas as pd + + is_pandas = _is_using_pandas(exog, None) + + exog_index = exog.index if is_pandas else None + + if transform and hasattr(self.model, 'formula') and (exog is not None): + design_info = self.model.data.design_info + from patsy import dmatrix + if isinstance(exog, pd.Series): + # we are guessing whether it should be column or row + if (hasattr(exog, 'name') and isinstance(exog.name, str) and + exog.name in design_info.describe()): + # assume we need one column + exog = pd.DataFrame(exog) + else: + # assume we need a row + exog = pd.DataFrame(exog).T + orig_exog_len = len(exog) + is_dict = isinstance(exog, dict) + try: + exog = dmatrix(design_info, exog, return_type="dataframe") + except Exception as exc: + msg = ('predict requires that you use a DataFrame when ' + 'predicting from a model\nthat was created using the ' + 'formula api.' + '\n\nThe original error message returned by patsy is:\n' + '{0}'.format(str(str(exc)))) + raise exc.__class__(msg) + if orig_exog_len > len(exog) and not is_dict: + import warnings + if exog_index is None: + warnings.warn('nan values have been dropped', ValueWarning) + else: + exog = exog.reindex(exog_index) + exog_index = exog.index + + if exog is not None: + exog = np.asarray(exog) + if exog.ndim == 1 and (self.model.exog.ndim == 1 or + self.model.exog.shape[1] == 1): + exog = exog[:, None] + exog = np.atleast_2d(exog) # needed in count model shape[1] + + predict_results = self.model.predict(self.params, exog, *args, + **kwargs) + + if exog_index is not None and not hasattr(predict_results, + 'predicted_values'): + if predict_results.ndim == 1: + return pd.Series(predict_results, index=exog_index) + else: + return pd.DataFrame(predict_results, index=exog_index) + else: + return predict_results + + def summary(self): + """ + Summary + + Not implemented + """ + raise NotImplementedError + + +# TODO: public method? +class LikelihoodModelResults(Results): + """ + Class to contain results from likelihood models + + Parameters + ---------- + model : LikelihoodModel instance or subclass instance + LikelihoodModelResults holds a reference to the model that is fit. + params : 1d array_like + parameter estimates from estimated model + normalized_cov_params : 2d array + Normalized (before scaling) covariance of params. (dot(X.T,X))**-1 + scale : float + For (some subset of models) scale will typically be the + mean square error from the estimated model (sigma^2) + + Attributes + ---------- + mle_retvals : dict + Contains the values returned from the chosen optimization method if + full_output is True during the fit. Available only if the model + is fit by maximum likelihood. See notes below for the output from + the different methods. + mle_settings : dict + Contains the arguments passed to the chosen optimization method. + Available if the model is fit by maximum likelihood. See + LikelihoodModel.fit for more information. + model : model instance + LikelihoodResults contains a reference to the model that is fit. + params : ndarray + The parameters estimated for the model. + scale : float + The scaling factor of the model given during instantiation. + tvalues : array + The t-values of the standard errors. + + + Notes + ----- + The covariance of params is given by scale times normalized_cov_params. + + Return values by solver if full_output is True during fit: + + 'newton' + fopt : float + The value of the (negative) loglikelihood at its + minimum. + iterations : int + Number of iterations performed. + score : ndarray + The score vector at the optimum. + Hessian : ndarray + The Hessian at the optimum. + warnflag : int + 1 if maxiter is exceeded. 0 if successful convergence. + converged : bool + True: converged. False: did not converge. + allvecs : list + List of solutions at each iteration. + 'nm' + fopt : float + The value of the (negative) loglikelihood at its + minimum. + iterations : int + Number of iterations performed. + warnflag : int + 1: Maximum number of function evaluations made. + 2: Maximum number of iterations reached. + converged : bool + True: converged. False: did not converge. + allvecs : list + List of solutions at each iteration. + 'bfgs' + fopt : float + Value of the (negative) loglikelihood at its minimum. + gopt : float + Value of gradient at minimum, which should be near 0. + Hinv : ndarray + value of the inverse Hessian matrix at minimum. Note + that this is just an approximation and will often be + different from the value of the analytic Hessian. + fcalls : int + Number of calls to loglike. + gcalls : int + Number of calls to gradient/score. + warnflag : int + 1: Maximum number of iterations exceeded. 2: Gradient + and/or function calls are not changing. + converged : bool + True: converged. False: did not converge. + allvecs : list + Results at each iteration. + 'lbfgs' + fopt : float + Value of the (negative) loglikelihood at its minimum. + gopt : float + Value of gradient at minimum, which should be near 0. + fcalls : int + Number of calls to loglike. + warnflag : int + Warning flag: + + - 0 if converged + - 1 if too many function evaluations or too many iterations + - 2 if stopped for another reason + + converged : bool + True: converged. False: did not converge. + 'powell' + fopt : float + Value of the (negative) loglikelihood at its minimum. + direc : ndarray + Current direction set. + iterations : int + Number of iterations performed. + fcalls : int + Number of calls to loglike. + warnflag : int + 1: Maximum number of function evaluations. 2: Maximum number + of iterations. + converged : bool + True : converged. False: did not converge. + allvecs : list + Results at each iteration. + 'cg' + fopt : float + Value of the (negative) loglikelihood at its minimum. + fcalls : int + Number of calls to loglike. + gcalls : int + Number of calls to gradient/score. + warnflag : int + 1: Maximum number of iterations exceeded. 2: Gradient and/ + or function calls not changing. + converged : bool + True: converged. False: did not converge. + allvecs : list + Results at each iteration. + 'ncg' + fopt : float + Value of the (negative) loglikelihood at its minimum. + fcalls : int + Number of calls to loglike. + gcalls : int + Number of calls to gradient/score. + hcalls : int + Number of calls to hessian. + warnflag : int + 1: Maximum number of iterations exceeded. + converged : bool + True: converged. False: did not converge. + allvecs : list + Results at each iteration. + """ + + # by default we use normal distribution + # can be overwritten by instances or subclasses + use_t = False + + def __init__(self, model, params, normalized_cov_params=None, scale=1., + **kwargs): + super(LikelihoodModelResults, self).__init__(model, params) + self.normalized_cov_params = normalized_cov_params + self.scale = scale + + # robust covariance + # We put cov_type in kwargs so subclasses can decide in fit whether to + # use this generic implementation + if 'use_t' in kwargs: + use_t = kwargs['use_t'] + if use_t is not None: + self.use_t = use_t + if 'cov_type' in kwargs: + cov_type = kwargs.get('cov_type', 'nonrobust') + cov_kwds = kwargs.get('cov_kwds', {}) + + if cov_type == 'nonrobust': + self.cov_type = 'nonrobust' + self.cov_kwds = {'description': 'Standard Errors assume that the ' + + 'covariance matrix of the errors is correctly ' + + 'specified.'} + else: + from statsmodels.base.covtype import get_robustcov_results + if cov_kwds is None: + cov_kwds = {} + use_t = self.use_t + # TODO: we shouldn't need use_t in get_robustcov_results + get_robustcov_results(self, cov_type=cov_type, use_self=True, + use_t=use_t, **cov_kwds) + + def normalized_cov_params(self): + """See specific model class docstring""" + raise NotImplementedError + + def _get_robustcov_results(self, cov_type='nonrobust', use_self=True, + use_t=None, **cov_kwds): + if use_self is False: + raise ValueError("use_self should have been removed long ago. " + "See GH#4401") + from statsmodels.base.covtype import get_robustcov_results + if cov_kwds is None: + cov_kwds = {} + + if cov_type == 'nonrobust': + self.cov_type = 'nonrobust' + self.cov_kwds = {'description': 'Standard Errors assume that the ' + + 'covariance matrix of the errors is correctly ' + + 'specified.'} + else: + # TODO: we shouldn't need use_t in get_robustcov_results + get_robustcov_results(self, cov_type=cov_type, use_self=True, + use_t=use_t, **cov_kwds) + + @cache_readonly + def llf(self): + """Log-likelihood of model""" + return self.model.loglike(self.params) + + @cache_readonly + def bse(self): + """The standard errors of the parameter estimates.""" + # Issue 3299 + if ((not hasattr(self, 'cov_params_default')) and + (self.normalized_cov_params is None)): + bse_ = np.empty(len(self.params)) + bse_[:] = np.nan + else: + bse_ = np.sqrt(np.diag(self.cov_params())) + return bse_ + + @cache_readonly + def tvalues(self): + """ + Return the t-statistic for a given parameter estimate. + """ + return self.params / self.bse + + @cache_readonly + def pvalues(self): + """The two-tailed p values for the t-stats of the params.""" + if self.use_t: + df_resid = getattr(self, 'df_resid_inference', self.df_resid) + return stats.t.sf(np.abs(self.tvalues), df_resid) * 2 + else: + return stats.norm.sf(np.abs(self.tvalues)) * 2 + + def cov_params(self, r_matrix=None, column=None, scale=None, cov_p=None, + other=None): + """ + Returns the variance/covariance matrix. + + The variance/covariance matrix can be of a linear contrast + of the estimates of params or all params multiplied by scale which + will usually be an estimate of sigma^2. Scale is assumed to be + a scalar. + + Parameters + ---------- + r_matrix : array-like + Can be 1d, or 2d. Can be used alone or with other. + column : array-like, optional + Must be used on its own. Can be 0d or 1d see below. + scale : float, optional + Can be specified or not. Default is None, which means that + the scale argument is taken from the model. + other : array-like, optional + Can be used when r_matrix is specified. + + Returns + ------- + cov : ndarray + covariance matrix of the parameter estimates or of linear + combination of parameter estimates. See Notes. + + Notes + ----- + (The below are assumed to be in matrix notation.) + + If no argument is specified returns the covariance matrix of a model + ``(scale)*(X.T X)^(-1)`` + + If contrast is specified it pre and post-multiplies as follows + ``(scale) * r_matrix (X.T X)^(-1) r_matrix.T`` + + If contrast and other are specified returns + ``(scale) * r_matrix (X.T X)^(-1) other.T`` + + If column is specified returns + ``(scale) * (X.T X)^(-1)[column,column]`` if column is 0d + + OR + + ``(scale) * (X.T X)^(-1)[column][:,column]`` if column is 1d + + """ + if (hasattr(self, 'mle_settings') and + self.mle_settings['optimizer'] in ['l1', 'l1_cvxopt_cp']): + dot_fun = nan_dot + else: + dot_fun = np.dot + + if (cov_p is None and self.normalized_cov_params is None and + not hasattr(self, 'cov_params_default')): + raise ValueError('need covariance of parameters for computing ' + '(unnormalized) covariances') + if column is not None and (r_matrix is not None or other is not None): + raise ValueError('Column should be specified without other ' + 'arguments.') + if other is not None and r_matrix is None: + raise ValueError('other can only be specified with r_matrix') + + if cov_p is None: + if hasattr(self, 'cov_params_default'): + cov_p = self.cov_params_default + else: + if scale is None: + scale = self.scale + cov_p = self.normalized_cov_params * scale + + if column is not None: + column = np.asarray(column) + if column.shape == (): + return cov_p[column, column] + else: + return cov_p[column[:, None], column] + elif r_matrix is not None: + r_matrix = np.asarray(r_matrix) + if r_matrix.shape == (): + raise ValueError("r_matrix should be 1d or 2d") + if other is None: + other = r_matrix + else: + other = np.asarray(other) + tmp = dot_fun(r_matrix, dot_fun(cov_p, np.transpose(other))) + return tmp + else: # if r_matrix is None and column is None: + return cov_p + + # TODO: make sure this works as needed for GLMs + def t_test(self, r_matrix, cov_p=None, scale=None, use_t=None): + """ + Compute a t-test for a each linear hypothesis of the form Rb = q + + Parameters + ---------- + r_matrix : array-like, str, tuple + - array : If an array is given, a p x k 2d array or length k 1d + array specifying the linear restrictions. It is assumed + that the linear combination is equal to zero. + - str : The full hypotheses to test can be given as a string. + See the examples. + - tuple : A tuple of arrays in the form (R, q). If q is given, + can be either a scalar or a length p row vector. + cov_p : array-like, optional + An alternative estimate for the parameter covariance matrix. + If None is given, self.normalized_cov_params is used. + scale : float, optional + + .. deprecated:: 0.10.0 + + An optional `scale` to use. Default is the scale specified + by the model fit. + use_t : bool, optional + If use_t is None, then the default of the model is used. + If use_t is True, then the p-values are based on the t + distribution. + If use_t is False, then the p-values are based on the normal + distribution. + + Returns + ------- + res : ContrastResults instance + The results for the test are attributes of this results instance. + The available results have the same elements as the parameter table + in `summary()`. + + Examples + -------- + >>> import numpy as np + >>> import statsmodels.api as sm + >>> data = sm.datasets.longley.load(as_pandas=False) + >>> data.exog = sm.add_constant(data.exog) + >>> results = sm.OLS(data.endog, data.exog).fit() + >>> r = np.zeros_like(results.params) + >>> r[5:] = [1,-1] + >>> print(r) + [ 0. 0. 0. 0. 0. 1. -1.] + + r tests that the coefficients on the 5th and 6th independent + variable are the same. + + >>> T_test = results.t_test(r) + >>> print(T_test) + Test for Constraints + ============================================================================== + coef std err t P>|t| [0.025 0.975] + ------------------------------------------------------------------------------ + c0 -1829.2026 455.391 -4.017 0.003 -2859.368 -799.037 + ============================================================================== + >>> T_test.effect + -1829.2025687192481 + >>> T_test.sd + 455.39079425193762 + >>> T_test.tvalue + -4.0167754636411717 + >>> T_test.pvalue + 0.0015163772380899498 + + Alternatively, you can specify the hypothesis tests using a string + + >>> from statsmodels.formula.api import ols + >>> dta = sm.datasets.longley.load_pandas().data + >>> formula = 'TOTEMP ~ GNPDEFL + GNP + UNEMP + ARMED + POP + YEAR' + >>> results = ols(formula, dta).fit() + >>> hypotheses = 'GNPDEFL = GNP, UNEMP = 2, YEAR/1829 = 1' + >>> t_test = results.t_test(hypotheses) + >>> print(t_test) + Test for Constraints + ============================================================================== + coef std err t P>|t| [0.025 0.975] + ------------------------------------------------------------------------------ + c0 15.0977 84.937 0.178 0.863 -177.042 207.238 + c1 -2.0202 0.488 -8.231 0.000 -3.125 -0.915 + c2 1.0001 0.249 0.000 1.000 0.437 1.563 + ============================================================================== + + See Also + -------- + tvalues : individual t statistics + f_test : for F tests + patsy.DesignInfo.linear_constraint + """ + if scale is not None: + import warnings + warnings.warn('scale is has no effect and is deprecated. It will' + 'be removed in the next version.', + DeprecationWarning) + + from patsy import DesignInfo + names = self.model.data.param_names + LC = DesignInfo(names).linear_constraint(r_matrix) + r_matrix, q_matrix = LC.coefs, LC.constants + num_ttests = r_matrix.shape[0] + num_params = r_matrix.shape[1] + + if (cov_p is None and self.normalized_cov_params is None and + not hasattr(self, 'cov_params_default')): + raise ValueError('Need covariance of parameters for computing ' + 'T statistics') + if num_params != self.params.shape[0]: + raise ValueError('r_matrix and params are not aligned') + if q_matrix is None: + q_matrix = np.zeros(num_ttests) + else: + q_matrix = np.asarray(q_matrix) + q_matrix = q_matrix.squeeze() + if q_matrix.size > 1: + if q_matrix.shape[0] != num_ttests: + raise ValueError("r_matrix and q_matrix must have the same " + "number of rows") + + if use_t is None: + # switch to use_t false if undefined + use_t = (hasattr(self, 'use_t') and self.use_t) + + _t = _sd = None + + _effect = np.dot(r_matrix, self.params) + # nan_dot multiplies with the convention nan * 0 = 0 + + # Perform the test + if num_ttests > 1: + _sd = np.sqrt(np.diag(self.cov_params( + r_matrix=r_matrix, cov_p=cov_p))) + else: + _sd = np.sqrt(self.cov_params(r_matrix=r_matrix, cov_p=cov_p)) + _t = (_effect - q_matrix) * recipr(_sd) + + df_resid = getattr(self, 'df_resid_inference', self.df_resid) + + if use_t: + return ContrastResults(effect=_effect, t=_t, sd=_sd, + df_denom=df_resid) + else: + return ContrastResults(effect=_effect, statistic=_t, sd=_sd, + df_denom=df_resid, + distribution='norm') + + def f_test(self, r_matrix, cov_p=None, scale=1.0, invcov=None): + """ + Compute the F-test for a joint linear hypothesis. + + This is a special case of `wald_test` that always uses the F + distribution. + + Parameters + ---------- + r_matrix : array-like, str, or tuple + - array : An r x k array where r is the number of restrictions to + test and k is the number of regressors. It is assumed + that the linear combination is equal to zero. + - str : The full hypotheses to test can be given as a string. + See the examples. + - tuple : A tuple of arrays in the form (R, q), ``q`` can be + either a scalar or a length k row vector. + cov_p : array-like, optional + An alternative estimate for the parameter covariance matrix. + If None is given, self.normalized_cov_params is used. + scale : float, optional + + .. deprecated:: 0.10.0 + + Default is 1.0 for no scaling. + invcov : array-like, optional + A q x q array to specify an inverse covariance matrix based on a + restrictions matrix. + + Returns + ------- + res : ContrastResults instance + The results for the test are attributes of this results instance. + + Examples + -------- + >>> import numpy as np + >>> import statsmodels.api as sm + >>> data = sm.datasets.longley.load(as_pandas=False) + >>> data.exog = sm.add_constant(data.exog) + >>> results = sm.OLS(data.endog, data.exog).fit() + >>> A = np.identity(len(results.params)) + >>> A = A[1:,:] + + This tests that each coefficient is jointly statistically + significantly different from zero. + + >>> print(results.f_test(A)) + + + Compare this to + + >>> results.fvalue + 330.2853392346658 + >>> results.f_pvalue + 4.98403096572e-10 + + >>> B = np.array(([0,0,1,-1,0,0,0],[0,0,0,0,0,1,-1])) + + This tests that the coefficient on the 2nd and 3rd regressors are + equal and jointly that the coefficient on the 5th and 6th regressors + are equal. + + >>> print(results.f_test(B)) + + + Alternatively, you can specify the hypothesis tests using a string + + >>> from statsmodels.datasets import longley + >>> from statsmodels.formula.api import ols + >>> dta = longley.load_pandas().data + >>> formula = 'TOTEMP ~ GNPDEFL + GNP + UNEMP + ARMED + POP + YEAR' + >>> results = ols(formula, dta).fit() + >>> hypotheses = '(GNPDEFL = GNP), (UNEMP = 2), (YEAR/1829 = 1)' + >>> f_test = results.f_test(hypotheses) + >>> print(f_test) + + + See Also + -------- + statsmodels.stats.contrast.ContrastResults + wald_test + t_test + patsy.DesignInfo.linear_constraint + + Notes + ----- + The matrix `r_matrix` is assumed to be non-singular. More precisely, + + r_matrix (pX pX.T) r_matrix.T + + is assumed invertible. Here, pX is the generalized inverse of the + design matrix of the model. There can be problems in non-OLS models + where the rank of the covariance of the noise is not full. + """ + if scale != 1.0: + import warnings + warnings.warn('scale is has no effect and is deprecated. It will' + 'be removed in the next version.', + DeprecationWarning) + + res = self.wald_test(r_matrix, cov_p=cov_p, invcov=invcov, use_f=True) + return res + + # TODO: untested for GLMs? + def wald_test(self, r_matrix, cov_p=None, scale=1.0, invcov=None, + use_f=None, df_constraints=None): + """ + Compute a Wald-test for a joint linear hypothesis. + + Parameters + ---------- + r_matrix : array-like, str, or tuple + - array : An r x k array where r is the number of restrictions to + test and k is the number of regressors. It is assumed that the + linear combination is equal to zero. + - str : The full hypotheses to test can be given as a string. + See the examples. + - tuple : A tuple of arrays in the form (R, q), ``q`` can be + either a scalar or a length p row vector. + cov_p : array-like, optional + An alternative estimate for the parameter covariance matrix. + If None is given, self.normalized_cov_params is used. + scale : float, optional + + .. deprecated:: 0.10.0 + + Default is 1.0 for no scaling. + invcov : array-like, optional + A q x q array to specify an inverse covariance matrix based on a + restrictions matrix. + use_f : bool + If True, then the F-distribution is used. If False, then the + asymptotic distribution, chisquare is used. If use_f is None, then + the F distribution is used if the model specifies that use_t is True. + The test statistic is proportionally adjusted for the distribution + by the number of constraints in the hypothesis. + + Returns + ------- + res : ContrastResults instance + The results for the test are attributes of this results instance. + + See Also + -------- + statsmodels.stats.contrast.ContrastResults + f_test + t_test + patsy.DesignInfo.linear_constraint + + Notes + ----- + The matrix `r_matrix` is assumed to be non-singular. More precisely, + + r_matrix (pX pX.T) r_matrix.T + + is assumed invertible. Here, pX is the generalized inverse of the + design matrix of the model. There can be problems in non-OLS models + where the rank of the covariance of the noise is not full. + """ + if scale != 1.0: + import warnings + warnings.warn('scale is has no effect and is deprecated. It will' + 'be removed in the next version.', + DeprecationWarning) + + if use_f is None: + # switch to use_t false if undefined + use_f = (hasattr(self, 'use_t') and self.use_t) + + from patsy import DesignInfo + names = self.model.data.param_names + LC = DesignInfo(names).linear_constraint(r_matrix) + r_matrix, q_matrix = LC.coefs, LC.constants + + if (self.normalized_cov_params is None and cov_p is None and + invcov is None and not hasattr(self, 'cov_params_default')): + raise ValueError('need covariance of parameters for computing ' + 'F statistics') + + cparams = np.dot(r_matrix, self.params[:, None]) + J = float(r_matrix.shape[0]) # number of restrictions + + if q_matrix is None: + q_matrix = np.zeros(J) + else: + q_matrix = np.asarray(q_matrix) + if q_matrix.ndim == 1: + q_matrix = q_matrix[:, None] + if q_matrix.shape[0] != J: + raise ValueError("r_matrix and q_matrix must have the same " + "number of rows") + Rbq = cparams - q_matrix + if invcov is None: + cov_p = self.cov_params(r_matrix=r_matrix, cov_p=cov_p) + if np.isnan(cov_p).max(): + raise ValueError("r_matrix performs f_test for using " + "dimensions that are asymptotically " + "non-normal") + invcov = np.linalg.pinv(cov_p) + J_ = np.linalg.matrix_rank(cov_p) + if J_ < J: + import warnings + warnings.warn('covariance of constraints does not have full ' + 'rank. The number of constraints is %d, but ' + 'rank is %d' % (J, J_), ValueWarning) + J = J_ + + # TODO streamline computation, we don't need to compute J if given + if df_constraints is not None: + # let caller override J by df_constraint + J = df_constraints + + if (hasattr(self, 'mle_settings') and + self.mle_settings['optimizer'] in ['l1', 'l1_cvxopt_cp']): + F = nan_dot(nan_dot(Rbq.T, invcov), Rbq) + else: + F = np.dot(np.dot(Rbq.T, invcov), Rbq) + + df_resid = getattr(self, 'df_resid_inference', self.df_resid) + if use_f: + F /= J + return ContrastResults(F=F, df_denom=df_resid, + df_num=J) #invcov.shape[0]) + else: + return ContrastResults(chi2=F, df_denom=J, statistic=F, + distribution='chi2', distargs=(J,)) + + def wald_test_terms(self, skip_single=False, extra_constraints=None, + combine_terms=None): + """ + Compute a sequence of Wald tests for terms over multiple columns + + This computes joined Wald tests for the hypothesis that all + coefficients corresponding to a `term` are zero. + + `Terms` are defined by the underlying formula or by string matching. + + Parameters + ---------- + skip_single : boolean + If true, then terms that consist only of a single column and, + therefore, refers only to a single parameter is skipped. + If false, then all terms are included. + extra_constraints : ndarray + not tested yet + combine_terms : None or list of strings + Each string in this list is matched to the name of the terms or + the name of the exogenous variables. All columns whose name + includes that string are combined in one joint test. + + Returns + ------- + test_result : result instance + The result instance contains `table` which is a pandas DataFrame + with the test results: test statistic, degrees of freedom and + pvalues. + + Examples + -------- + >>> res_ols = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", data).fit() + >>> res_ols.wald_test_terms() + + F P>F df constraint df denom + Intercept 279.754525 2.37985521351e-22 1 51 + C(Duration, Sum) 5.367071 0.0245738436636 1 51 + C(Weight, Sum) 12.432445 3.99943118767e-05 2 51 + C(Duration, Sum):C(Weight, Sum) 0.176002 0.83912310946 2 51 + + >>> res_poi = Poisson.from_formula("Days ~ C(Weight) * C(Duration)", \ + data).fit(cov_type='HC0') + >>> wt = res_poi.wald_test_terms(skip_single=False, \ + combine_terms=['Duration', 'Weight']) + >>> print(wt) + chi2 P>chi2 df constraint + Intercept 15.695625 7.43960374424e-05 1 + C(Weight) 16.132616 0.000313940174705 2 + C(Duration) 1.009147 0.315107378931 1 + C(Weight):C(Duration) 0.216694 0.897315972824 2 + Duration 11.187849 0.010752286833 3 + Weight 30.263368 4.32586407145e-06 4 + + """ + # lazy import + from collections import defaultdict + + result = self + if extra_constraints is None: + extra_constraints = [] + if combine_terms is None: + combine_terms = [] + design_info = getattr(result.model.data, 'design_info', None) + + if design_info is None and extra_constraints is None: + raise ValueError('no constraints, nothing to do') + + identity = np.eye(len(result.params)) + constraints = [] + combined = defaultdict(list) + if design_info is not None: + for term in design_info.terms: + cols = design_info.slice(term) + name = term.name() + constraint_matrix = identity[cols] + + # check if in combined + for cname in combine_terms: + if cname in name: + combined[cname].append(constraint_matrix) + + k_constraint = constraint_matrix.shape[0] + if skip_single: + if k_constraint == 1: + continue + + constraints.append((name, constraint_matrix)) + + combined_constraints = [] + for cname in combine_terms: + combined_constraints.append((cname, np.vstack(combined[cname]))) + else: + # check by exog/params names if there is no formula info + for col, name in enumerate(result.model.exog_names): + constraint_matrix = np.atleast_2d(identity[col]) + + # check if in combined + for cname in combine_terms: + if cname in name: + combined[cname].append(constraint_matrix) + + if skip_single: + continue + + constraints.append((name, constraint_matrix)) + + combined_constraints = [] + for cname in combine_terms: + combined_constraints.append((cname, np.vstack(combined[cname]))) + + use_t = result.use_t + distribution = ['chi2', 'F'][use_t] + + res_wald = [] + index = [] + for name, constraint in constraints + combined_constraints + extra_constraints: + wt = result.wald_test(constraint) + row = [wt.statistic.item(), wt.pvalue.item(), constraint.shape[0]] + if use_t: + row.append(wt.df_denom) + res_wald.append(row) + index.append(name) + + # distribution nerutral names + col_names = ['statistic', 'pvalue', 'df_constraint'] + if use_t: + col_names.append('df_denom') + # TODO: maybe move DataFrame creation to results class + from pandas import DataFrame + table = DataFrame(res_wald, index=index, columns=col_names) + res = WaldTestResults(None, distribution, None, table=table) + # TODO: remove temp again, added for testing + res.temp = constraints + combined_constraints + extra_constraints + return res + + def t_test_pairwise(self, term_name, method='hs', alpha=0.05, + factor_labels=None): + """perform pairwise t_test with multiple testing corrected p-values + + This uses the formula design_info encoding contrast matrix and should + work for all encodings of a main effect. + + Parameters + ---------- + result : result instance + The results of an estimated model with a categorical main effect. + term_name : str + name of the term for which pairwise comparisons are computed. + Term names for categorical effects are created by patsy and + correspond to the main part of the exog names. + method : str or list of strings + multiple testing p-value correction, default is 'hs', + see stats.multipletesting + alpha : float + significance level for multiple testing reject decision. + factor_labels : None, list of str + Labels for the factor levels used for pairwise labels. If not + provided, then the labels from the formula design_info are used. + + Returns + ------- + results : instance of a simple Results class + The results are stored as attributes, the main attributes are the + following two. Other attributes are added for debugging purposes + or as background information. + + - result_frame : pandas DataFrame with t_test results and multiple + testing corrected p-values. + - contrasts : matrix of constraints of the null hypothesis in the + t_test. + + Notes + ----- + Status: experimental. Currently only checked for treatment coding with + and without specified reference level. + + Currently there are no multiple testing corrected confidence intervals + available. + + Examples + -------- + >>> res = ols("np.log(Days+1) ~ C(Weight) + C(Duration)", data).fit() + >>> pw = res.t_test_pairwise("C(Weight)") + >>> pw.result_frame + coef std err t P>|t| Conf. Int. Low + 2-1 0.632315 0.230003 2.749157 8.028083e-03 0.171563 + 3-1 1.302555 0.230003 5.663201 5.331513e-07 0.841803 + 3-2 0.670240 0.230003 2.914044 5.119126e-03 0.209488 + Conf. Int. Upp. pvalue-hs reject-hs + 2-1 1.093067 0.010212 True + 3-1 1.763307 0.000002 True + 3-2 1.130992 0.010212 True + """ + res = t_test_pairwise(self, term_name, method=method, alpha=alpha, + factor_labels=factor_labels) + return res + + def conf_int(self, alpha=.05, cols=None, method='default'): + """ + Returns the confidence interval of the fitted parameters. + + Parameters + ---------- + alpha : float, optional + The significance level for the confidence interval. + ie., The default `alpha` = .05 returns a 95% confidence interval. + cols : array-like, optional + `cols` specifies which confidence intervals to return + method : string + Not Implemented Yet + Method to estimate the confidence_interval. + "Default" : uses self.bse which is based on inverse Hessian for MLE + "hjjh" : + "jac" : + "boot-bse" + "boot_quant" + "profile" + + + Returns + ------- + conf_int : array + Each row contains [lower, upper] limits of the confidence interval + for the corresponding parameter. The first column contains all + lower, the second column contains all upper limits. + + Examples + -------- + >>> import statsmodels.api as sm + >>> data = sm.datasets.longley.load(as_pandas=False) + >>> data.exog = sm.add_constant(data.exog) + >>> results = sm.OLS(data.endog, data.exog).fit() + >>> results.conf_int() + array([[-5496529.48322745, -1467987.78596704], + [ -177.02903529, 207.15277984], + [ -0.1115811 , 0.03994274], + [ -3.12506664, -0.91539297], + [ -1.5179487 , -0.54850503], + [ -0.56251721, 0.460309 ], + [ 798.7875153 , 2859.51541392]]) + + + >>> results.conf_int(cols=(2,3)) + array([[-0.1115811 , 0.03994274], + [-3.12506664, -0.91539297]]) + + Notes + ----- + The confidence interval is based on the standard normal distribution. + Models wish to use a different distribution should overwrite this + method. + """ + bse = self.bse + + if self.use_t: + dist = stats.t + df_resid = getattr(self, 'df_resid_inference', self.df_resid) + q = dist.ppf(1 - alpha / 2, df_resid) + else: + dist = stats.norm + q = dist.ppf(1 - alpha / 2) + + if cols is None: + lower = self.params - q * bse + upper = self.params + q * bse + else: + cols = np.asarray(cols) + lower = self.params[cols] - q * bse[cols] + upper = self.params[cols] + q * bse[cols] + return np.asarray(lzip(lower, upper)) + + def save(self, fname, remove_data=False): + """ + save a pickle of this instance + + Parameters + ---------- + fname : string or filehandle + fname can be a string to a file path or filename, or a filehandle. + remove_data : bool + If False (default), then the instance is pickled without changes. + If True, then all arrays with length nobs are set to None before + pickling. See the remove_data method. + In some cases not all arrays will be set to None. + + Notes + ----- + If remove_data is true and the model result does not implement a + remove_data method then this will raise an exception. + """ + + from statsmodels.iolib.smpickle import save_pickle + + if remove_data: + self.remove_data() + + save_pickle(self, fname) + + @classmethod + def load(cls, fname): + """ + load a pickle, (class method) + + Parameters + ---------- + fname : string or filehandle + fname can be a string to a file path or filename, or a filehandle. + + Returns + ------- + unpickled instance + """ + + from statsmodels.iolib.smpickle import load_pickle + return load_pickle(fname) + + def remove_data(self): + """remove data arrays, all nobs arrays from result and model + + This reduces the size of the instance, so it can be pickled with less + memory. Currently tested for use with predict from an unpickled + results and model instance. + + .. warning:: Since data and some intermediate results have been removed + calculating new statistics that require them will raise exceptions. + The exception will occur the first time an attribute is accessed + that has been set to None. + + Not fully tested for time series models, tsa, and might delete too much + for prediction or not all that would be possible. + + The lists of arrays to delete are maintained as attributes of + the result and model instance, except for cached values. These + lists could be changed before calling remove_data. + + The attributes to remove are named in: + + model._data_attr : arrays attached to both the model instance + and the results instance with the same attribute name. + + result.data_in_cache : arrays that may exist as values in + result._cache (TODO : should privatize name) + + result._data_attr_model : arrays attached to the model + instance but not to the results instance + """ + def wipe(obj, att): + # get to last element in attribute path + p = att.split('.') + att_ = p.pop(-1) + try: + obj_ = reduce(getattr, [obj] + p) + if hasattr(obj_, att_): + setattr(obj_, att_, None) + except AttributeError: + pass + + model_only = ['model.' + i for i in getattr(self, "_data_attr_model", [])] + model_attr = ['model.' + i for i in self.model._data_attr] + for att in self._data_attr + model_attr + model_only: + wipe(self, att) + + data_in_cache = getattr(self, 'data_in_cache', []) + data_in_cache += ['fittedvalues', 'resid', 'wresid'] + for key in data_in_cache: + try: + self._cache[key] = None + except (AttributeError, KeyError): + pass + + +class LikelihoodResultsWrapper(wrap.ResultsWrapper): + _attrs = { + 'params': 'columns', + 'bse': 'columns', + 'pvalues': 'columns', + 'tvalues': 'columns', + 'resid': 'rows', + 'fittedvalues': 'rows', + 'normalized_cov_params': 'cov', + } + + _wrap_attrs = _attrs + _wrap_methods = { + 'cov_params': 'cov', + 'conf_int': 'columns' + } + +wrap.populate_wrapper(LikelihoodResultsWrapper, # noqa:E305 + LikelihoodModelResults) + + +class ResultMixin(object): + + @cache_readonly + def df_modelwc(self): + """Model WC""" + # collect different ways of defining the number of parameters, used for + # aic, bic + if hasattr(self, 'df_model'): + if hasattr(self, 'hasconst'): + hasconst = self.hasconst + else: + # default assumption + hasconst = 1 + return self.df_model + hasconst + else: + return self.params.size + + @cache_readonly + def aic(self): + """Akaike information criterion""" + return -2 * self.llf + 2 * (self.df_modelwc) + + @cache_readonly + def bic(self): + """Bayesian information criterion""" + return -2 * self.llf + np.log(self.nobs) * (self.df_modelwc) + + @cache_readonly + def score_obsv(self): + """cached Jacobian of log-likelihood + """ + return self.model.score_obs(self.params) + + @cache_readonly + def hessv(self): + """cached Hessian of log-likelihood + """ + return self.model.hessian(self.params) + + @cache_readonly + def covjac(self): + """ + covariance of parameters based on outer product of jacobian of + log-likelihood + + """ + # if not hasattr(self, '_results'): + # raise ValueError('need to call fit first') + # #self.fit() + # self.jacv = jacv = self.jac(self._results.params) + jacv = self.score_obsv + return np.linalg.inv(np.dot(jacv.T, jacv)) + + @cache_readonly + def covjhj(self): + """covariance of parameters based on HJJH + + dot product of Hessian, Jacobian, Jacobian, Hessian of likelihood + + name should be covhjh + """ + jacv = self.score_obsv + hessv = self.hessv + hessinv = np.linalg.inv(hessv) + # self.hessinv = hessin = self.cov_params() + return np.dot(hessinv, np.dot(np.dot(jacv.T, jacv), hessinv)) + + @cache_readonly + def bsejhj(self): + """standard deviation of parameter estimates based on covHJH + """ + return np.sqrt(np.diag(self.covjhj)) + + @cache_readonly + def bsejac(self): + """standard deviation of parameter estimates based on covjac + """ + return np.sqrt(np.diag(self.covjac)) + + def bootstrap(self, nrep=100, method='nm', disp=0, store=1): + """simple bootstrap to get mean and variance of estimator + + see notes + + Parameters + ---------- + nrep : int + number of bootstrap replications + method : str + optimization method to use + disp : bool + If true, then optimization prints results + store : bool + If true, then parameter estimates for all bootstrap iterations + are attached in self.bootstrap_results + + Returns + ------- + mean : array + mean of parameter estimates over bootstrap replications + std : array + standard deviation of parameter estimates over bootstrap + replications + + Notes + ----- + This was mainly written to compare estimators of the standard errors of + the parameter estimates. It uses independent random sampling from the + original endog and exog, and therefore is only correct if observations + are independently distributed. + + This will be moved to apply only to models with independently + distributed observations. + """ + results = [] + print(self.model.__class__) + hascloneattr = True if hasattr(self.model, 'cloneattr') else False + for i in range(nrep): + rvsind = np.random.randint(self.nobs, size=self.nobs) + # this needs to set startparam and get other defining attributes + # need a clone method on model + if self.exog is not None: + exog_resamp = self.exog[rvsind, :] + else: + exog_resamp = None + fitmod = self.model.__class__(self.endog[rvsind], + exog=exog_resamp) + if hascloneattr: + for attr in self.model.cloneattr: + setattr(fitmod, attr, getattr(self.model, attr)) + + fitres = fitmod.fit(method=method, disp=disp) + results.append(fitres.params) + results = np.array(results) + if store: + self.bootstrap_results = results + return results.mean(0), results.std(0), results + + def get_nlfun(self, fun): + """ + get_nlfun + + This is not Implemented + """ + # I think this is supposed to get the delta method that is currently + # in miscmodels count (as part of Poisson example) + raise NotImplementedError + + +class GenericLikelihoodModelResults(LikelihoodModelResults, ResultMixin): + """ + A results class for the discrete dependent variable models. + + ..Warning : + + The following description has not been updated to this version/class. + Where are AIC, BIC, ....? docstring looks like copy from discretemod + + Parameters + ---------- + model : A DiscreteModel instance + mlefit : instance of LikelihoodResults + This contains the numerical optimization results as returned by + LikelihoodModel.fit(), in a superclass of GnericLikelihoodModels + + + Attributes + ---------- + aic : float + Akaike information criterion. -2*(`llf` - p) where p is the number + of regressors including the intercept. + bic : float + Bayesian information criterion. -2*`llf` + ln(`nobs`)*p where p is the + number of regressors including the intercept. + bse : array + The standard errors of the coefficients. + df_resid : float + See model definition. + df_model : float + See model definition. + fitted_values : array + Linear predictor XB. + llf : float + Value of the loglikelihood + llnull : float + Value of the constant-only loglikelihood + llr : float + Likelihood ratio chi-squared statistic; -2*(`llnull` - `llf`) + llr_pvalue : float + The chi-squared probability of getting a log-likelihood ratio + statistic greater than llr. llr has a chi-squared distribution + with degrees of freedom `df_model`. + prsquared : float + McFadden's pseudo-R-squared. 1 - (`llf`/`llnull`) + + """ + + def __init__(self, model, mlefit): + self.model = model + self.endog = model.endog + self.exog = model.exog + self.nobs = model.endog.shape[0] + + # TODO: possibly move to model.fit() + # and outsource together with patching names + if hasattr(model, 'df_model'): + self.df_model = model.df_model + else: + self.df_model = len(mlefit.params) + # retrofitting the model, used in t_test TODO: check design + self.model.df_model = self.df_model + + if hasattr(model, 'df_resid'): + self.df_resid = model.df_resid + else: + self.df_resid = self.endog.shape[0] - self.df_model + # retrofitting the model, used in t_test TODO: check design + self.model.df_resid = self.df_resid + + self._cache = {} + self.__dict__.update(mlefit.__dict__) + + def summary(self, yname=None, xname=None, title=None, alpha=.05): + """Summarize the Regression Results + + Parameters + ---------- + yname : string, optional + Default is `y` + xname : list of strings, optional + Default is `var_##` for ## in p the number of regressors + title : string, optional + Title for the top table. If not None, then this replaces the + default title + alpha : float + significance level for the confidence intervals + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary.Summary : class to hold summary results + """ + + top_left = [('Dep. Variable:', None), + ('Model:', None), + ('Method:', ['Maximum Likelihood']), + ('Date:', None), + ('Time:', None), + ('No. Observations:', None), + ('Df Residuals:', None), + ('Df Model:', None), + ] + + top_right = [('Log-Likelihood:', None), + ('AIC:', ["%#8.4g" % self.aic]), + ('BIC:', ["%#8.4g" % self.bic]) + ] + + if title is None: + title = self.model.__class__.__name__ + ' ' + "Results" + + # create summary table instance + from statsmodels.iolib.summary import Summary + smry = Summary() + smry.add_table_2cols(self, gleft=top_left, gright=top_right, + yname=yname, xname=xname, title=title) + smry.add_table_params(self, yname=yname, xname=xname, alpha=alpha, + use_t=self.use_t) + + return smry diff --git a/statsmodels/base/optimizer.py b/statsmodels/base/optimizer.py new file mode 100644 index 0000000..01a7b45 --- /dev/null +++ b/statsmodels/base/optimizer.py @@ -0,0 +1,613 @@ +""" +Functions that are general enough to use for any model fitting. The idea is +to untie these from LikelihoodModel so that they may be re-used generally. +""" +from __future__ import print_function + +import numpy as np +from scipy import optimize + + +def _check_method(method, methods): + if method not in methods: + message = "Unknown fit method %s" % method + raise ValueError(message) + + +class Optimizer(object): + def _fit(self, objective, gradient, start_params, fargs, kwargs, + hessian=None, method='newton', maxiter=100, full_output=True, + disp=True, callback=None, retall=False): + """ + Fit function for any model with an objective function. + + Parameters + ---------- + start_params : array-like, optional + Initial guess of the solution for the loglikelihood maximization. + The default is an array of zeros. + method : str {'newton','nm','bfgs','powell','cg','ncg','basinhopping', + 'minimize'} + Method can be 'newton' for Newton-Raphson, 'nm' for Nelder-Mead, + 'bfgs' for Broyden-Fletcher-Goldfarb-Shanno, 'powell' for modified + Powell's method, 'cg' for conjugate gradient, 'ncg' for Newton- + conjugate gradient, 'basinhopping' for global basin-hopping + solver, if available or a generic 'minimize' which is a wrapper for + scipy.optimize.minimize. `method` determines which solver from + scipy.optimize is used. The explicit arguments in `fit` are passed + to the solver, with the exception of the basin-hopping solver. Each + solver has several optional arguments that are not the same across + solvers. See the notes section below (or scipy.optimize) for the + available arguments and for the list of explicit arguments that the + basin-hopping solver supports.. + maxiter : int + The maximum number of iterations to perform. + full_output : bool + Set to True to have all available output in the Results object's + mle_retvals attribute. The output is dependent on the solver. + See LikelihoodModelResults notes section for more information. + disp : bool + Set to True to print convergence messages. + fargs : tuple + Extra arguments passed to the likelihood function, i.e., + loglike(x,*args) + callback : callable callback(xk) + Called after each iteration, as callback(xk), where xk is the + current parameter vector. + retall : bool + Set to True to return list of solutions at each iteration. + Available in Results object's mle_retvals attribute. + + Returns + ------- + xopt : array + The solution to the objective function + retvals : dict, None + If `full_output` is True then this is a dictionary which holds + information returned from the solver used. If it is False, this is + None. + optim_settings : dict + A dictionary that contains the parameters passed to the solver. + + Notes + ----- + The 'basinhopping' solver ignores `maxiter`, `retall`, `full_output` + explicit arguments. + + Optional arguments for the solvers (available in Results.mle_settings):: + + 'newton' + tol : float + Relative error in params acceptable for convergence. + 'nm' -- Nelder Mead + xtol : float + Relative error in params acceptable for convergence + ftol : float + Relative error in loglike(params) acceptable for + convergence + maxfun : int + Maximum number of function evaluations to make. + 'bfgs' + gtol : float + Stop when norm of gradient is less than gtol. + norm : float + Order of norm (np.Inf is max, -np.Inf is min) + epsilon + If fprime is approximated, use this value for the step + size. Only relevant if LikelihoodModel.score is None. + 'lbfgs' + m : int + The maximum number of variable metric corrections used to + define the limited memory matrix. (The limited memory BFGS + method does not store the full hessian but uses this many + terms in an approximation to it.) + pgtol : float + The iteration will stop when + ``max{|proj g_i | i = 1, ..., n} <= pgtol`` where pg_i is + the i-th component of the projected gradient. + factr : float + The iteration stops when + ``(f^k - f^{k+1})/max{|f^k|,|f^{k+1}|,1} <= factr * eps``, + where eps is the machine precision, which is automatically + generated by the code. Typical values for factr are: 1e12 + for low accuracy; 1e7 for moderate accuracy; 10.0 for + extremely high accuracy. See Notes for relationship to + ftol, which is exposed (instead of factr) by the + scipy.optimize.minimize interface to L-BFGS-B. + maxfun : int + Maximum number of iterations. + epsilon : float + Step size used when approx_grad is True, for numerically + calculating the gradient + approx_grad : bool + Whether to approximate the gradient numerically (in which + case func returns only the function value). + 'cg' + gtol : float + Stop when norm of gradient is less than gtol. + norm : float + Order of norm (np.Inf is max, -np.Inf is min) + epsilon : float + If fprime is approximated, use this value for the step + size. Can be scalar or vector. Only relevant if + Likelihoodmodel.score is None. + 'ncg' + fhess_p : callable f'(x,*args) + Function which computes the Hessian of f times an arbitrary + vector, p. Should only be supplied if + LikelihoodModel.hessian is None. + avextol : float + Stop when the average relative error in the minimizer + falls below this amount. + epsilon : float or ndarray + If fhess is approximated, use this value for the step size. + Only relevant if Likelihoodmodel.hessian is None. + 'powell' + xtol : float + Line-search error tolerance + ftol : float + Relative error in loglike(params) for acceptable for + convergence. + maxfun : int + Maximum number of function evaluations to make. + start_direc : ndarray + Initial direction set. + 'basinhopping' + niter : integer + The number of basin hopping iterations. + niter_success : integer + Stop the run if the global minimum candidate remains the + same for this number of iterations. + T : float + The "temperature" parameter for the accept or reject + criterion. Higher "temperatures" mean that larger jumps + in function value will be accepted. For best results + `T` should be comparable to the separation (in function + value) between local minima. + stepsize : float + Initial step size for use in the random displacement. + interval : integer + The interval for how often to update the `stepsize`. + minimizer : dict + Extra keyword arguments to be passed to the minimizer + `scipy.optimize.minimize()`, for example 'method' - the + minimization method (e.g. 'L-BFGS-B'), or 'tol' - the + tolerance for termination. Other arguments are mapped from + explicit argument of `fit`: + - `args` <- `fargs` + - `jac` <- `score` + - `hess` <- `hess` + 'minimize' + min_method : str, optional + Name of minimization method to use. + Any method specific arguments can be passed directly. + For a list of methods and their arguments, see + documentation of `scipy.optimize.minimize`. + If no method is specified, then BFGS is used. + """ + #TODO: generalize the regularization stuff + # Extract kwargs specific to fit_regularized calling fit + extra_fit_funcs = kwargs.setdefault('extra_fit_funcs', dict()) + + methods = ['newton', 'nm', 'bfgs', 'lbfgs', 'powell', 'cg', 'ncg', + 'basinhopping', 'minimize'] + methods += extra_fit_funcs.keys() + method = method.lower() + _check_method(method, methods) + + fit_funcs = { + 'newton': _fit_newton, + 'nm': _fit_nm, # Nelder-Mead + 'bfgs': _fit_bfgs, + 'lbfgs': _fit_lbfgs, + 'cg': _fit_cg, + 'ncg': _fit_ncg, + 'powell': _fit_powell, + 'basinhopping': _fit_basinhopping, + 'minimize': _fit_minimize # wrapper for scipy.optimize.minimize + } + + #NOTE: fit_regularized checks the methods for these but it should be + # moved up probably + if extra_fit_funcs: + fit_funcs.update(extra_fit_funcs) + + func = fit_funcs[method] + xopt, retvals = func(objective, gradient, start_params, fargs, kwargs, + disp=disp, maxiter=maxiter, callback=callback, + retall=retall, full_output=full_output, + hess=hessian) + + optim_settings = {'optimizer': method, 'start_params': start_params, + 'maxiter': maxiter, 'full_output': full_output, + 'disp': disp, 'fargs': fargs, 'callback': callback, + 'retall': retall} + optim_settings.update(kwargs) + # set as attributes or return? + return xopt, retvals, optim_settings + + def _fit_constrained(self, params): + """ + TODO: how to add constraints? + + Something like + sm.add_constraint(Model, func) + + or + + model_instance.add_constraint(func) + model_instance.add_constraint("x1 + x2 = 2") + result = model_instance.fit() + """ + raise NotImplementedError + + def _fit_regularized(self, params): + # TODO: code won't necessarily be general here. 3 options. + # 1) setup for scipy.optimize.fmin_sqlsqp + # 2) setup for cvxopt + # 3) setup for openopt + raise NotImplementedError + + +######################################## +# Helper functions to fit + + +def _fit_minimize(f, score, start_params, fargs, kwargs, disp=True, + maxiter=100, callback=None, retall=False, + full_output=True, hess=None): + kwargs.setdefault('min_method', 'BFGS') + + # prepare options dict for minimize + filter_opts = ['extra_fit_funcs', 'niter', 'min_method', 'tol'] + options = dict((k,v) for k,v in kwargs.items() if k not in filter_opts) + options['disp'] = disp + options['maxiter'] = maxiter + + # Use Hessian/Jacobian only if they're required by the method + no_hess = ['Nelder-Mead', 'Powell', 'CG', 'BFGS', 'COBYLA', 'SLSQP'] + no_jac = ['Nelder-Mead', 'Powell', 'COBYLA'] + if kwargs['min_method'] in no_hess: hess = None + if kwargs['min_method'] in no_jac: score = None + + res = optimize.minimize(f, start_params, args=fargs, method=kwargs['min_method'], + jac=score, hess=hess, callback=callback, options=options) + + xopt = res.x + retvals = None + if full_output: + nit = getattr(res, 'nit', np.nan) # scipy 0.14 compat + retvals = {'fopt': res.fun, 'iterations': nit, + 'fcalls': res.nfev, 'warnflag': res.status, + 'converged': res.success} + if retall: + retvals.update({'allvecs': res.values()}) + + return xopt, retvals + + +def _fit_newton(f, score, start_params, fargs, kwargs, disp=True, + maxiter=100, callback=None, retall=False, + full_output=True, hess=None, ridge_factor=1e-10): + tol = kwargs.setdefault('tol', 1e-8) + iterations = 0 + oldparams = np.inf + newparams = np.asarray(start_params) + if retall: + history = [oldparams, newparams] + while (iterations < maxiter and np.any(np.abs(newparams - + oldparams) > tol)): + H = np.asarray(hess(newparams)) + # regularize Hessian, not clear what ridge factor should be + # keyword option with absolute default 1e-10, see #1847 + if not np.all(ridge_factor == 0): + H[np.diag_indices(H.shape[0])] += ridge_factor + oldparams = newparams + newparams = oldparams - np.dot(np.linalg.inv(H), + score(oldparams)) + if retall: + history.append(newparams) + if callback is not None: + callback(newparams) + iterations += 1 + fval = f(newparams, *fargs) # this is the negative likelihood + if iterations == maxiter: + warnflag = 1 + if disp: + print("Warning: Maximum number of iterations has been " + "exceeded.") + print(" Current function value: %f" % fval) + print(" Iterations: %d" % iterations) + else: + warnflag = 0 + if disp: + print("Optimization terminated successfully.") + print(" Current function value: %f" % fval) + print(" Iterations %d" % iterations) + if full_output: + (xopt, fopt, niter, + gopt, hopt) = (newparams, f(newparams, *fargs), + iterations, score(newparams), + hess(newparams)) + converged = not warnflag + retvals = {'fopt': fopt, 'iterations': niter, 'score': gopt, + 'Hessian': hopt, 'warnflag': warnflag, + 'converged': converged} + if retall: + retvals.update({'allvecs': history}) + + else: + xopt = newparams + retvals = None + + return xopt, retvals + + +def _fit_bfgs(f, score, start_params, fargs, kwargs, disp=True, + maxiter=100, callback=None, retall=False, + full_output=True, hess=None): + gtol = kwargs.setdefault('gtol', 1.0000000000000001e-05) + norm = kwargs.setdefault('norm', np.Inf) + epsilon = kwargs.setdefault('epsilon', 1.4901161193847656e-08) + retvals = optimize.fmin_bfgs(f, start_params, score, args=fargs, + gtol=gtol, norm=norm, epsilon=epsilon, + maxiter=maxiter, full_output=full_output, + disp=disp, retall=retall, callback=callback) + if full_output: + if not retall: + xopt, fopt, gopt, Hinv, fcalls, gcalls, warnflag = retvals + else: + (xopt, fopt, gopt, Hinv, fcalls, + gcalls, warnflag, allvecs) = retvals + converged = not warnflag + retvals = {'fopt': fopt, 'gopt': gopt, 'Hinv': Hinv, + 'fcalls': fcalls, 'gcalls': gcalls, 'warnflag': + warnflag, 'converged': converged} + if retall: + retvals.update({'allvecs': allvecs}) + else: + xopt = retvals + retvals = None + + return xopt, retvals + + +def _fit_lbfgs(f, score, start_params, fargs, kwargs, disp=True, maxiter=100, + callback=None, retall=False, full_output=True, hess=None): + """ + Fit model using L-BFGS algorithm + + Parameters + ---------- + f : function + Returns negative log likelihood given parameters. + score : function + Returns gradient of negative log likelihood with respect to params. + + Notes + ----- + Within the mle part of statsmodels, the log likelihood function and + its gradient with respect to the parameters do not have notationally + consistent sign. + """ + + # Use unconstrained optimization by default. + bounds = kwargs.setdefault('bounds', [(None, None)] * len(start_params)) + kwargs.setdefault('iprint', 0) + + # Pass the following keyword argument names through to fmin_l_bfgs_b + # if they are present in kwargs, otherwise use the fmin_l_bfgs_b + # default values. + names = ('m', 'pgtol', 'factr', 'maxfun', 'epsilon', 'approx_grad') + extra_kwargs = dict((x, kwargs[x]) for x in names if x in kwargs) + + # Extract values for the options related to the gradient. + approx_grad = kwargs.get('approx_grad', False) + loglike_and_score = kwargs.get('loglike_and_score', None) + epsilon = kwargs.get('epsilon', None) + + # The approx_grad flag has superpowers nullifying the score function arg. + if approx_grad: + score = None + + # Choose among three options for dealing with the gradient (the gradient + # of a log likelihood function with respect to its parameters + # is more specifically called the score in statistics terminology). + # The first option is to use the finite-differences + # approximation that is built into the fmin_l_bfgs_b optimizer. + # The second option is to use the provided score function. + # The third option is to use the score component of a provided + # function that simultaneously evaluates the log likelihood and score. + if epsilon and not approx_grad: + raise ValueError('a finite-differences epsilon was provided ' + 'even though we are not using approx_grad') + if approx_grad and loglike_and_score: + raise ValueError('gradient approximation was requested ' + 'even though an analytic loglike_and_score function ' + 'was given') + if loglike_and_score: + func = lambda p, *a : tuple(-x for x in loglike_and_score(p, *a)) + elif score: + func = f + extra_kwargs['fprime'] = score + elif approx_grad: + func = f + + retvals = optimize.fmin_l_bfgs_b(func, start_params, maxiter=maxiter, + callback=callback, args=fargs, + bounds=bounds, disp=disp, + **extra_kwargs) + + if full_output: + xopt, fopt, d = retvals + # The warnflag is + # 0 if converged + # 1 if too many function evaluations or too many iterations + # 2 if stopped for another reason, given in d['task'] + warnflag = d['warnflag'] + converged = (warnflag == 0) + gopt = d['grad'] + fcalls = d['funcalls'] + iterations = d['nit'] + retvals = {'fopt': fopt, 'gopt': gopt, 'fcalls': fcalls, + 'warnflag': warnflag, 'converged': converged, + 'iterations': iterations} + else: + xopt = retvals[0] + retvals = None + + return xopt, retvals + + +def _fit_nm(f, score, start_params, fargs, kwargs, disp=True, + maxiter=100, callback=None, retall=False, + full_output=True, hess=None): + xtol = kwargs.setdefault('xtol', 0.0001) + ftol = kwargs.setdefault('ftol', 0.0001) + maxfun = kwargs.setdefault('maxfun', None) + retvals = optimize.fmin(f, start_params, args=fargs, xtol=xtol, + ftol=ftol, maxiter=maxiter, maxfun=maxfun, + full_output=full_output, disp=disp, retall=retall, + callback=callback) + if full_output: + if not retall: + xopt, fopt, niter, fcalls, warnflag = retvals + else: + xopt, fopt, niter, fcalls, warnflag, allvecs = retvals + converged = not warnflag + retvals = {'fopt': fopt, 'iterations': niter, + 'fcalls': fcalls, 'warnflag': warnflag, + 'converged': converged} + if retall: + retvals.update({'allvecs': allvecs}) + else: + xopt = retvals + retvals = None + + return xopt, retvals + + +def _fit_cg(f, score, start_params, fargs, kwargs, disp=True, + maxiter=100, callback=None, retall=False, + full_output=True, hess=None): + gtol = kwargs.setdefault('gtol', 1.0000000000000001e-05) + norm = kwargs.setdefault('norm', np.Inf) + epsilon = kwargs.setdefault('epsilon', 1.4901161193847656e-08) + retvals = optimize.fmin_cg(f, start_params, score, gtol=gtol, norm=norm, + epsilon=epsilon, maxiter=maxiter, + full_output=full_output, disp=disp, + retall=retall, callback=callback) + if full_output: + if not retall: + xopt, fopt, fcalls, gcalls, warnflag = retvals + else: + xopt, fopt, fcalls, gcalls, warnflag, allvecs = retvals + converged = not warnflag + retvals = {'fopt': fopt, 'fcalls': fcalls, 'gcalls': gcalls, + 'warnflag': warnflag, 'converged': converged} + if retall: + retvals.update({'allvecs': allvecs}) + + else: + xopt = retvals + retvals = None + + return xopt, retvals + + +def _fit_ncg(f, score, start_params, fargs, kwargs, disp=True, + maxiter=100, callback=None, retall=False, + full_output=True, hess=None): + fhess_p = kwargs.setdefault('fhess_p', None) + avextol = kwargs.setdefault('avextol', 1.0000000000000001e-05) + epsilon = kwargs.setdefault('epsilon', 1.4901161193847656e-08) + retvals = optimize.fmin_ncg(f, start_params, score, fhess_p=fhess_p, + fhess=hess, args=fargs, avextol=avextol, + epsilon=epsilon, maxiter=maxiter, + full_output=full_output, disp=disp, + retall=retall, callback=callback) + if full_output: + if not retall: + xopt, fopt, fcalls, gcalls, hcalls, warnflag = retvals + else: + xopt, fopt, fcalls, gcalls, hcalls, warnflag, allvecs =\ + retvals + converged = not warnflag + retvals = {'fopt': fopt, 'fcalls': fcalls, 'gcalls': gcalls, + 'hcalls': hcalls, 'warnflag': warnflag, + 'converged': converged} + if retall: + retvals.update({'allvecs': allvecs}) + else: + xopt = retvals + retvals = None + + return xopt, retvals + + +def _fit_powell(f, score, start_params, fargs, kwargs, disp=True, + maxiter=100, callback=None, retall=False, + full_output=True, hess=None): + xtol = kwargs.setdefault('xtol', 0.0001) + ftol = kwargs.setdefault('ftol', 0.0001) + maxfun = kwargs.setdefault('maxfun', None) + start_direc = kwargs.setdefault('start_direc', None) + retvals = optimize.fmin_powell(f, start_params, args=fargs, xtol=xtol, + ftol=ftol, maxiter=maxiter, maxfun=maxfun, + full_output=full_output, disp=disp, + retall=retall, callback=callback, + direc=start_direc) + if full_output: + if not retall: + xopt, fopt, direc, niter, fcalls, warnflag = retvals + else: + xopt, fopt, direc, niter, fcalls, warnflag, allvecs =\ + retvals + converged = not warnflag + retvals = {'fopt': fopt, 'direc': direc, 'iterations': niter, + 'fcalls': fcalls, 'warnflag': warnflag, + 'converged': converged} + if retall: + retvals.update({'allvecs': allvecs}) + else: + xopt = retvals + retvals = None + + return xopt, retvals + + +def _fit_basinhopping(f, score, start_params, fargs, kwargs, disp=True, + maxiter=100, callback=None, retall=False, + full_output=True, hess=None): + + from copy import copy + kwargs = copy(kwargs) + niter = kwargs.setdefault('niter', 100) + niter_success = kwargs.setdefault('niter_success', None) + T = kwargs.setdefault('T', 1.0) + stepsize = kwargs.setdefault('stepsize', 0.5) + interval = kwargs.setdefault('interval', 50) + minimizer_kwargs = kwargs.get('minimizer', {}) + minimizer_kwargs['args'] = fargs + minimizer_kwargs['jac'] = score + method = minimizer_kwargs.get('method', None) + if method and method != 'L-BFGS-B': # l_bfgs_b doesn't take a hessian + minimizer_kwargs['hess'] = hess + + retvals = optimize.basinhopping(f, start_params, + minimizer_kwargs=minimizer_kwargs, + niter=niter, niter_success=niter_success, + T=T, stepsize=stepsize, disp=disp, + callback=callback, interval=interval) + if full_output: + xopt, fopt, niter, fcalls = map(lambda x : getattr(retvals, x), + ['x', 'fun', 'nit', 'nfev']) + converged = 'completed successfully' in retvals.message[0] + retvals = {'fopt': fopt, 'iterations': niter, + 'fcalls': fcalls, 'converged': converged} + + else: + xopt = retvals.x + retvals = None + + return xopt, retvals diff --git a/statsmodels/base/tests/__init__.py b/statsmodels/base/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/base/tests/test_data.py b/statsmodels/base/tests/test_data.py new file mode 100644 index 0000000..1f389cd --- /dev/null +++ b/statsmodels/base/tests/test_data.py @@ -0,0 +1,945 @@ +import numpy as np +from numpy.testing import assert_equal, assert_, assert_raises +import pandas as pd +import pandas.util.testing as tm +import pytest + +from statsmodels.base import data as sm_data +from statsmodels.formula import handle_formula_data +from statsmodels.regression.linear_model import OLS +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod import families +from statsmodels.discrete.discrete_model import Logit + + +# FIXME: don't leave commented-out, enable or move/remove +# class TestDates(object): +# @classmethod +# def setup_class(cls): +# nrows = 10 +# cls.dates_result = cls.dates_results = np.random.random(nrows) +# +# def test_dates(self): +# np.testing.assert_equal(data.wrap_output(self.dates_input, 'dates'), +# self.dates_result) + + +class TestArrays(object): + @classmethod + def setup_class(cls): + cls.endog = np.random.random(10) + cls.exog = np.c_[np.ones(10), np.random.random((10, 2))] + cls.data = sm_data.handle_data(cls.endog, cls.exog) + nrows = 10 + nvars = 3 + cls.col_result = cls.col_input = np.random.random(nvars) + cls.row_result = cls.row_input = np.random.random(nrows) + cls.cov_result = cls.cov_input = np.random.random((nvars, nvars)) + cls.xnames = ['const', 'x1', 'x2'] + cls.ynames = 'y' + cls.row_labels = None + + def test_orig(self): + np.testing.assert_equal(self.data.orig_endog, self.endog) + np.testing.assert_equal(self.data.orig_exog, self.exog) + + def test_endogexog(self): + np.testing.assert_equal(self.data.endog, self.endog) + np.testing.assert_equal(self.data.exog, self.exog) + + def test_attach(self): + data = self.data + # this makes sure what the wrappers need work but not the wrapped + # results themselves + np.testing.assert_equal(data.wrap_output(self.col_input, 'columns'), + self.col_result) + np.testing.assert_equal(data.wrap_output(self.row_input, 'rows'), + self.row_result) + np.testing.assert_equal(data.wrap_output(self.cov_input, 'cov'), + self.cov_result) + + def test_names(self): + data = self.data + np.testing.assert_equal(data.xnames, self.xnames) + np.testing.assert_equal(data.ynames, self.ynames) + + def test_labels(self): + # HACK: because numpy master after NA stuff assert_equal fails on + # pandas indices + # FIXME: see if this can be de-hacked + np.testing.assert_(np.all(self.data.row_labels == self.row_labels)) + + +class TestArrays2dEndog(TestArrays): + @classmethod + def setup_class(cls): + super(TestArrays2dEndog, cls).setup_class() + cls.endog = np.random.random((10, 1)) + cls.exog = np.c_[np.ones(10), np.random.random((10, 2))] + cls.data = sm_data.handle_data(cls.endog, cls.exog) + + def test_endogexog(self): + np.testing.assert_equal(self.data.endog, self.endog.squeeze()) + np.testing.assert_equal(self.data.exog, self.exog) + + +class TestArrays1dExog(TestArrays): + @classmethod + def setup_class(cls): + super(TestArrays1dExog, cls).setup_class() + cls.endog = np.random.random(10) + exog = np.random.random(10) + cls.data = sm_data.handle_data(cls.endog, exog) + cls.exog = exog[:, None] + cls.xnames = ['x1'] + cls.ynames = 'y' + + def test_orig(self): + np.testing.assert_equal(self.data.orig_endog, self.endog) + np.testing.assert_equal(self.data.orig_exog, self.exog.squeeze()) + + +class TestDataFrames(TestArrays): + @classmethod + def setup_class(cls): + cls.endog = pd.DataFrame(np.random.random(10), columns=['y_1']) + exog = pd.DataFrame(np.random.random((10, 2)), + columns=['x_1', 'x_2']) + exog.insert(0, 'const', 1) + cls.exog = exog + cls.data = sm_data.handle_data(cls.endog, cls.exog) + nrows = 10 + nvars = 3 + cls.col_input = np.random.random(nvars) + cls.col_result = pd.Series(cls.col_input, + index=exog.columns) + cls.row_input = np.random.random(nrows) + cls.row_result = pd.Series(cls.row_input, + index=exog.index) + cls.cov_input = np.random.random((nvars, nvars)) + cls.cov_result = pd.DataFrame(cls.cov_input, + index=exog.columns, + columns=exog.columns) + cls.xnames = ['const', 'x_1', 'x_2'] + cls.ynames = 'y_1' + cls.row_labels = cls.exog.index + + def test_orig(self): + tm.assert_frame_equal(self.data.orig_endog, self.endog) + tm.assert_frame_equal(self.data.orig_exog, self.exog) + + def test_endogexog(self): + np.testing.assert_equal(self.data.endog, self.endog.values.squeeze()) + np.testing.assert_equal(self.data.exog, self.exog.values) + + def test_attach(self): + data = self.data + # this makes sure what the wrappers need work but not the wrapped + # results themselves + tm.assert_series_equal(data.wrap_output(self.col_input, 'columns'), + self.col_result) + tm.assert_series_equal(data.wrap_output(self.row_input, 'rows'), + self.row_result) + tm.assert_frame_equal(data.wrap_output(self.cov_input, 'cov'), + self.cov_result) + + +class TestDataFramesWithMultiIndex(TestDataFrames): + @classmethod + def setup_class(cls): + cls.endog = pd.DataFrame(np.random.random(10), columns=['y_1']) + mi = pd.MultiIndex.from_product([['x'], ['1', '2']]) + exog = pd.DataFrame(np.random.random((10, 2)), columns=mi) + exog_flattened_idx = pd.Index(['const', 'x_1', 'x_2']) + exog.insert(0, 'const', 1) + cls.exog = exog + cls.data = sm_data.handle_data(cls.endog, cls.exog) + nrows = 10 + nvars = 3 + cls.col_input = np.random.random(nvars) + cls.col_result = pd.Series(cls.col_input, index=exog_flattened_idx) + cls.row_input = np.random.random(nrows) + cls.row_result = pd.Series(cls.row_input, index=exog.index) + cls.cov_input = np.random.random((nvars, nvars)) + cls.cov_result = pd.DataFrame(cls.cov_input, + index=exog_flattened_idx, + columns=exog_flattened_idx) + cls.xnames = ['const', 'x_1', 'x_2'] + cls.ynames = 'y_1' + cls.row_labels = cls.exog.index + + +class TestLists(TestArrays): + @classmethod + def setup_class(cls): + super(TestLists, cls).setup_class() + cls.endog = np.random.random(10).tolist() + cls.exog = np.c_[np.ones(10), np.random.random((10, 2))].tolist() + cls.data = sm_data.handle_data(cls.endog, cls.exog) + + +class TestRecarrays(TestArrays): + @classmethod + def setup_class(cls): + super(TestRecarrays, cls).setup_class() + cls.endog = np.random.random(9).view([('y_1', 'f8')]).view(np.recarray) + exog = np.random.random(9*3).view([('const', 'f8'), ('x_1', 'f8'), + ('x_2', 'f8')]).view(np.recarray) + exog['const'] = 1 + cls.exog = exog + cls.data = sm_data.handle_data(cls.endog, cls.exog) + cls.xnames = ['const', 'x_1', 'x_2'] + cls.ynames = 'y_1' + + def test_endogexog(self): + np.testing.assert_equal(self.data.endog, + self.endog.view(float, type=np.ndarray)) + np.testing.assert_equal(self.data.exog, + self.exog.view((float, 3), type=np.ndarray)) + + +class TestStructarrays(TestArrays): + @classmethod + def setup_class(cls): + super(TestStructarrays, cls).setup_class() + cls.endog = np.random.random(9).view([('y_1', 'f8')]).view(np.recarray) + exog = np.random.random(9*3).view([('const', 'f8'), ('x_1', 'f8'), + ('x_2', 'f8')]).view(np.recarray) + exog['const'] = 1 + cls.exog = exog + cls.data = sm_data.handle_data(cls.endog, cls.exog) + cls.xnames = ['const', 'x_1', 'x_2'] + cls.ynames = 'y_1' + + def test_endogexog(self): + np.testing.assert_equal(self.data.endog, + self.endog.view(float, type=np.ndarray)) + np.testing.assert_equal(self.data.exog, + self.exog.view((float, 3), type=np.ndarray)) + + +class TestListDataFrame(TestDataFrames): + @classmethod + def setup_class(cls): + cls.endog = np.random.random(10).tolist() + + exog = pd.DataFrame(np.random.random((10, 2)), + columns=['x_1', 'x_2']) + exog.insert(0, 'const', 1) + cls.exog = exog + cls.data = sm_data.handle_data(cls.endog, cls.exog) + nrows = 10 + nvars = 3 + cls.col_input = np.random.random(nvars) + cls.col_result = pd.Series(cls.col_input, + index=exog.columns) + cls.row_input = np.random.random(nrows) + cls.row_result = pd.Series(cls.row_input, + index=exog.index) + cls.cov_input = np.random.random((nvars, nvars)) + cls.cov_result = pd.DataFrame(cls.cov_input, + index=exog.columns, + columns=exog.columns) + cls.xnames = ['const', 'x_1', 'x_2'] + cls.ynames = 'y' + cls.row_labels = cls.exog.index + + def test_endogexog(self): + np.testing.assert_equal(self.data.endog, self.endog) + np.testing.assert_equal(self.data.exog, self.exog.values) + + def test_orig(self): + np.testing.assert_equal(self.data.orig_endog, self.endog) + tm.assert_frame_equal(self.data.orig_exog, self.exog) + + +class TestDataFrameList(TestDataFrames): + @classmethod + def setup_class(cls): + cls.endog = pd.DataFrame(np.random.random(10), columns=['y_1']) + + exog = pd.DataFrame(np.random.random((10, 2)), + columns=['x1', 'x2']) + exog.insert(0, 'const', 1) + cls.exog = exog.values.tolist() + cls.data = sm_data.handle_data(cls.endog, cls.exog) + nrows = 10 + nvars = 3 + cls.col_input = np.random.random(nvars) + cls.col_result = pd.Series(cls.col_input, + index=exog.columns) + cls.row_input = np.random.random(nrows) + cls.row_result = pd.Series(cls.row_input, + index=exog.index) + cls.cov_input = np.random.random((nvars, nvars)) + cls.cov_result = pd.DataFrame(cls.cov_input, + index=exog.columns, + columns=exog.columns) + cls.xnames = ['const', 'x1', 'x2'] + cls.ynames = 'y_1' + cls.row_labels = cls.endog.index + + def test_endogexog(self): + np.testing.assert_equal(self.data.endog, self.endog.values.squeeze()) + np.testing.assert_equal(self.data.exog, self.exog) + + def test_orig(self): + tm.assert_frame_equal(self.data.orig_endog, self.endog) + np.testing.assert_equal(self.data.orig_exog, self.exog) + + +class TestArrayDataFrame(TestDataFrames): + @classmethod + def setup_class(cls): + cls.endog = np.random.random(10) + + exog = pd.DataFrame(np.random.random((10, 2)), + columns=['x_1', 'x_2']) + exog.insert(0, 'const', 1) + cls.exog = exog + cls.data = sm_data.handle_data(cls.endog, exog) + nrows = 10 + nvars = 3 + cls.col_input = np.random.random(nvars) + cls.col_result = pd.Series(cls.col_input, + index=exog.columns) + cls.row_input = np.random.random(nrows) + cls.row_result = pd.Series(cls.row_input, + index=exog.index) + cls.cov_input = np.random.random((nvars, nvars)) + cls.cov_result = pd.DataFrame(cls.cov_input, + index=exog.columns, + columns=exog.columns) + cls.xnames = ['const', 'x_1', 'x_2'] + cls.ynames = 'y' + cls.row_labels = cls.exog.index + + def test_endogexog(self): + np.testing.assert_equal(self.data.endog, self.endog) + np.testing.assert_equal(self.data.exog, self.exog.values) + + def test_orig(self): + np.testing.assert_equal(self.data.orig_endog, self.endog) + tm.assert_frame_equal(self.data.orig_exog, self.exog) + + +class TestDataFrameArray(TestDataFrames): + @classmethod + def setup_class(cls): + cls.endog = pd.DataFrame(np.random.random(10), columns=['y_1']) + + exog = pd.DataFrame(np.random.random((10, 2)), + columns=['x1', 'x2']) # names mimic defaults + exog.insert(0, 'const', 1) + cls.exog = exog.values + cls.data = sm_data.handle_data(cls.endog, cls.exog) + nrows = 10 + nvars = 3 + cls.col_input = np.random.random(nvars) + cls.col_result = pd.Series(cls.col_input, + index=exog.columns) + cls.row_input = np.random.random(nrows) + cls.row_result = pd.Series(cls.row_input, + index=exog.index) + cls.cov_input = np.random.random((nvars, nvars)) + cls.cov_result = pd.DataFrame(cls.cov_input, + index=exog.columns, + columns=exog.columns) + cls.xnames = ['const', 'x1', 'x2'] + cls.ynames = 'y_1' + cls.row_labels = cls.endog.index + + def test_endogexog(self): + np.testing.assert_equal(self.data.endog, self.endog.values.squeeze()) + np.testing.assert_equal(self.data.exog, self.exog) + + def test_orig(self): + tm.assert_frame_equal(self.data.orig_endog, self.endog) + np.testing.assert_equal(self.data.orig_exog, self.exog) + + +class TestSeriesDataFrame(TestDataFrames): + @classmethod + def setup_class(cls): + cls.endog = pd.Series(np.random.random(10), name='y_1') + + exog = pd.DataFrame(np.random.random((10, 2)), + columns=['x_1', 'x_2']) + exog.insert(0, 'const', 1) + cls.exog = exog + cls.data = sm_data.handle_data(cls.endog, cls.exog) + nrows = 10 + nvars = 3 + cls.col_input = np.random.random(nvars) + cls.col_result = pd.Series(cls.col_input, + index=exog.columns) + cls.row_input = np.random.random(nrows) + cls.row_result = pd.Series(cls.row_input, + index=exog.index) + cls.cov_input = np.random.random((nvars, nvars)) + cls.cov_result = pd.DataFrame(cls.cov_input, + index=exog.columns, + columns=exog.columns) + cls.xnames = ['const', 'x_1', 'x_2'] + cls.ynames = 'y_1' + cls.row_labels = cls.exog.index + + def test_orig(self): + tm.assert_series_equal(self.data.orig_endog, self.endog) + tm.assert_frame_equal(self.data.orig_exog, self.exog) + + +class TestSeriesSeries(TestDataFrames): + @classmethod + def setup_class(cls): + cls.endog = pd.Series(np.random.random(10), name='y_1') + + exog = pd.Series(np.random.random(10), name='x_1') + cls.exog = exog + cls.data = sm_data.handle_data(cls.endog, cls.exog) + nrows = 10 + nvars = 1 + cls.col_input = np.random.random(nvars) + cls.col_result = pd.Series(cls.col_input, + index=[exog.name]) + cls.row_input = np.random.random(nrows) + cls.row_result = pd.Series(cls.row_input, + index=exog.index) + cls.cov_input = np.random.random((nvars, nvars)) + cls.cov_result = pd.DataFrame(cls.cov_input, + index=[exog.name], + columns=[exog.name]) + cls.xnames = ['x_1'] + cls.ynames = 'y_1' + cls.row_labels = cls.exog.index + + def test_orig(self): + tm.assert_series_equal(self.data.orig_endog, self.endog) + tm.assert_series_equal(self.data.orig_exog, self.exog) + + def test_endogexog(self): + np.testing.assert_equal(self.data.endog, self.endog.values.squeeze()) + np.testing.assert_equal(self.data.exog, self.exog.values[:, None]) + + +def test_alignment(): + # Fix Issue GH#206 + from statsmodels.datasets.macrodata import load_pandas + + d = load_pandas().data + # growth rates + gs_l_realinv = 400 * np.log(d['realinv']).diff().dropna() + gs_l_realgdp = 400 * np.log(d['realgdp']).diff().dropna() + lint = d['realint'][:-1] # incorrect indexing for test purposes + + endog = gs_l_realinv + + # re-index because they won't conform to lint + realgdp = gs_l_realgdp.reindex(lint.index, method='bfill') + data = dict(const=np.ones_like(lint), lrealgdp=realgdp, lint=lint) + exog = pd.DataFrame(data) + + # TODO: which index do we get?? + np.testing.assert_raises(ValueError, OLS, *(endog, exog)) + + +class TestMultipleEqsArrays(TestArrays): + @classmethod + def setup_class(cls): + cls.endog = np.random.random((10, 4)) + cls.exog = np.c_[np.ones(10), np.random.random((10, 2))] + cls.data = sm_data.handle_data(cls.endog, cls.exog) + nrows = 10 + nvars = 3 + neqs = 4 + cls.col_result = cls.col_input = np.random.random(nvars) + cls.row_result = cls.row_input = np.random.random(nrows) + cls.cov_result = cls.cov_input = np.random.random((nvars, nvars)) + cls.cov_eq_result = cls.cov_eq_input = np.random.random((neqs, neqs)) + cls.col_eq_result = cls.col_eq_input = np.array((neqs, nvars)) + cls.xnames = ['const', 'x1', 'x2'] + cls.ynames = ['y1', 'y2', 'y3', 'y4'] + cls.row_labels = None + + def test_attach(self): + data = self.data + # this makes sure what the wrappers need work but not the wrapped + # results themselves + np.testing.assert_equal(data.wrap_output(self.col_input, 'columns'), + self.col_result) + np.testing.assert_equal(data.wrap_output(self.row_input, 'rows'), + self.row_result) + np.testing.assert_equal(data.wrap_output(self.cov_input, 'cov'), + self.cov_result) + np.testing.assert_equal(data.wrap_output(self.cov_eq_input, 'cov_eq'), + self.cov_eq_result) + np.testing.assert_equal(data.wrap_output(self.col_eq_input, + 'columns_eq'), + self.col_eq_result) + + +class TestMultipleEqsDataFrames(TestDataFrames): + @classmethod + def setup_class(cls): + cls.endog = endog = pd.DataFrame(np.random.random((10, 4)), + columns=['y_1', 'y_2', 'y_3', 'y_4']) + exog = pd.DataFrame(np.random.random((10, 2)), + columns=['x_1', 'x_2']) + exog.insert(0, 'const', 1) + cls.exog = exog + cls.data = sm_data.handle_data(cls.endog, cls.exog) + nrows = 10 + nvars = 3 + neqs = 4 + cls.col_input = np.random.random(nvars) + cls.col_result = pd.Series(cls.col_input, + index=exog.columns) + cls.row_input = np.random.random(nrows) + cls.row_result = pd.Series(cls.row_input, + index=exog.index) + cls.cov_input = np.random.random((nvars, nvars)) + cls.cov_result = pd.DataFrame(cls.cov_input, + index=exog.columns, + columns=exog.columns) + cls.cov_eq_input = np.random.random((neqs, neqs)) + cls.cov_eq_result = pd.DataFrame(cls.cov_eq_input, + index=endog.columns, + columns=endog.columns) + cls.col_eq_input = np.random.random((nvars, neqs)) + cls.col_eq_result = pd.DataFrame(cls.col_eq_input, + index=exog.columns, + columns=endog.columns) + cls.xnames = ['const', 'x_1', 'x_2'] + cls.ynames = ['y_1', 'y_2', 'y_3', 'y_4'] + cls.row_labels = cls.exog.index + + def test_attach(self): + data = self.data + tm.assert_series_equal(data.wrap_output(self.col_input, 'columns'), + self.col_result) + tm.assert_series_equal(data.wrap_output(self.row_input, 'rows'), + self.row_result) + tm.assert_frame_equal(data.wrap_output(self.cov_input, 'cov'), + self.cov_result) + tm.assert_frame_equal(data.wrap_output(self.cov_eq_input, 'cov_eq'), + self.cov_eq_result) + tm.assert_frame_equal(data.wrap_output(self.col_eq_input, + 'columns_eq'), + self.col_eq_result) + + +class TestMissingArray(object): + @classmethod + def setup_class(cls): + X = np.random.random((25, 4)) + y = np.random.random(25) + y[10] = np.nan + X[2, 3] = np.nan + X[14, 2] = np.nan + cls.y, cls.X = y, X + + @pytest.mark.smoke + def test_raise_no_missing(self): + # GH#1700 + sm_data.handle_data(np.random.random(20), np.random.random((20, 2)), + 'raise') + + def test_raise(self): + with pytest.raises(Exception): + # TODO: be more specific about exception + sm_data.handle_data(self.y, self.X, 'raise') + + def test_drop(self): + y = self.y + X = self.X + combined = np.c_[y, X] + idx = ~np.isnan(combined).any(axis=1) + y = y[idx] + X = X[idx] + data = sm_data.handle_data(self.y, self.X, 'drop') + np.testing.assert_array_equal(data.endog, y) + np.testing.assert_array_equal(data.exog, X) + + def test_none(self): + data = sm_data.handle_data(self.y, self.X, 'none', hasconst=False) + np.testing.assert_array_equal(data.endog, self.y) + np.testing.assert_array_equal(data.exog, self.X) + assert data.k_constant == 0 + + def test_endog_only_raise(self): + with pytest.raises(Exception): + # TODO: be more specific about exception + sm_data.handle_data(self.y, None, 'raise') + + def test_endog_only_drop(self): + y = self.y + y = y[~np.isnan(y)] + data = sm_data.handle_data(self.y, None, 'drop') + np.testing.assert_array_equal(data.endog, y) + + def test_mv_endog(self): + y = self.X + y = y[~np.isnan(y).any(axis=1)] + data = sm_data.handle_data(self.X, None, 'drop') + np.testing.assert_array_equal(data.endog, y) + + def test_extra_kwargs_2d(self): + sigma = np.random.random((25, 25)) + sigma = sigma + sigma.T - np.diag(np.diag(sigma)) + data = sm_data.handle_data(self.y, self.X, 'drop', sigma=sigma) + idx = ~np.isnan(np.c_[self.y, self.X]).any(axis=1) + sigma = sigma[idx][:, idx] + np.testing.assert_array_equal(data.sigma, sigma) + + def test_extra_kwargs_1d(self): + weights = np.random.random(25) + data = sm_data.handle_data(self.y, self.X, 'drop', weights=weights) + idx = ~np.isnan(np.c_[self.y, self.X]).any(axis=1) + weights = weights[idx] + np.testing.assert_array_equal(data.weights, weights) + + +class TestMissingPandas(object): + @classmethod + def setup_class(cls): + X = np.random.random((25, 4)) + y = np.random.random(25) + y[10] = np.nan + X[2, 3] = np.nan + X[14, 2] = np.nan + cls.y = pd.Series(y) + cls.X = pd.DataFrame(X) + + @pytest.mark.smoke + def test_raise_no_missing(self): + # GH#1700 + sm_data.handle_data(pd.Series(np.random.random(20)), + pd.DataFrame(np.random.random((20, 2))), + 'raise') + + def test_raise(self): + with pytest.raises(Exception): + # TODO: be more specific about exception + sm_data.handle_data(self.y, self.X, 'raise') + + def test_drop(self): + y = self.y + X = self.X + combined = np.c_[y, X] + idx = ~np.isnan(combined).any(axis=1) + y = y.loc[idx] + X = X.loc[idx] + data = sm_data.handle_data(self.y, self.X, 'drop') + np.testing.assert_array_equal(data.endog, y.values) + tm.assert_series_equal(data.orig_endog, self.y.loc[idx]) + np.testing.assert_array_equal(data.exog, X.values) + tm.assert_frame_equal(data.orig_exog, self.X.loc[idx]) + + def test_none(self): + data = sm_data.handle_data(self.y, self.X, 'none', hasconst=False) + np.testing.assert_array_equal(data.endog, self.y.values) + np.testing.assert_array_equal(data.exog, self.X.values) + assert data.k_constant == 0 + + def test_endog_only_raise(self): + with pytest.raises(Exception): + # TODO: be more specific about exception + sm_data.handle_data(self.y, None, 'raise') + + def test_endog_only_drop(self): + y = self.y + y = y.dropna() + data = sm_data.handle_data(self.y, None, 'drop') + np.testing.assert_array_equal(data.endog, y.values) + + def test_mv_endog(self): + y = self.X + y = y.loc[~np.isnan(y.values).any(axis=1)] + data = sm_data.handle_data(self.X, None, 'drop') + np.testing.assert_array_equal(data.endog, y.values) + + def test_labels(self): + 2, 10, 14 + labels = pd.Index([0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24]) + data = sm_data.handle_data(self.y, self.X, 'drop') + np.testing.assert_(data.row_labels.equals(labels)) + + +class TestConstant(object): + @classmethod + def setup_class(cls): + from statsmodels.datasets.longley import load_pandas + cls.data = load_pandas() + + def test_array_constant(self): + exog = self.data.exog.copy() + exog['const'] = 1 + data = sm_data.handle_data(self.data.endog.values, exog.values) + np.testing.assert_equal(data.k_constant, 1) + np.testing.assert_equal(data.const_idx, 6) + + def test_pandas_constant(self): + exog = self.data.exog.copy() + exog['const'] = 1 + data = sm_data.handle_data(self.data.endog, exog) + np.testing.assert_equal(data.k_constant, 1) + np.testing.assert_equal(data.const_idx, 6) + + def test_pandas_noconstant(self): + exog = self.data.exog.copy() + data = sm_data.handle_data(self.data.endog, exog) + np.testing.assert_equal(data.k_constant, 0) + np.testing.assert_equal(data.const_idx, None) + + def test_array_noconstant(self): + exog = self.data.exog.copy() + data = sm_data.handle_data(self.data.endog.values, exog.values) + np.testing.assert_equal(data.k_constant, 0) + np.testing.assert_equal(data.const_idx, None) + + +class TestHandleMissing(object): + + def test_pandas(self): + df = tm.makeDataFrame() + df.values[[2, 5, 10], [2, 3, 1]] = np.nan + y, X = df[df.columns[0]], df[df.columns[1:]] + data, _ = sm_data.handle_missing(y, X, missing='drop') + + df = df.dropna() + y_exp, X_exp = df[df.columns[0]], df[df.columns[1:]] + tm.assert_frame_equal(data['exog'], X_exp) + tm.assert_series_equal(data['endog'], y_exp) + + def test_arrays(self): + arr = np.random.randn(20, 4) + arr[[2, 5, 10], [2, 3, 1]] = np.nan + y, X = arr[:, 0], arr[:, 1:] + data, _ = sm_data.handle_missing(y, X, missing='drop') + + bools_mask = np.ones(20, dtype=bool) + bools_mask[[2, 5, 10]] = False + y_exp = arr[bools_mask, 0] + X_exp = arr[bools_mask, 1:] + np.testing.assert_array_equal(data['endog'], y_exp) + np.testing.assert_array_equal(data['exog'], X_exp) + + def test_pandas_array(self): + df = tm.makeDataFrame() + df.values[[2, 5, 10], [2, 3, 1]] = np.nan + y, X = df[df.columns[0]], df[df.columns[1:]].values + data, _ = sm_data.handle_missing(y, X, missing='drop') + + df = df.dropna() + y_exp, X_exp = df[df.columns[0]], df[df.columns[1:]].values + np.testing.assert_array_equal(data['exog'], X_exp) + tm.assert_series_equal(data['endog'], y_exp) + + def test_array_pandas(self): + df = tm.makeDataFrame() + df.values[[2, 5, 10], [2, 3, 1]] = np.nan + y, X = df[df.columns[0]].values, df[df.columns[1:]] + data, _ = sm_data.handle_missing(y, X, missing='drop') + + df = df.dropna() + y_exp, X_exp = df[df.columns[0]].values, df[df.columns[1:]] + tm.assert_frame_equal(data['exog'], X_exp) + np.testing.assert_array_equal(data['endog'], y_exp) + + def test_noop(self): + df = tm.makeDataFrame() + df.values[[2, 5, 10], [2, 3, 1]] = np.nan + y, X = df[df.columns[0]], df[df.columns[1:]] + data, _ = sm_data.handle_missing(y, X, missing='none') + + y_exp, X_exp = df[df.columns[0]], df[df.columns[1:]] + tm.assert_frame_equal(data['exog'], X_exp) + tm.assert_series_equal(data['endog'], y_exp) + + +class CheckHasConstant(object): + + def test_hasconst(self): + for x, result in zip(self.exogs, self.results): + mod = self.mod(self.y, x) + assert_equal(mod.k_constant, result[0]) + assert_equal(mod.data.k_constant, result[0]) + if result[1] is None: + assert_(mod.data.const_idx is None) + else: + assert_equal(mod.data.const_idx, result[1]) + + # extra check after fit, some models raise on singular + fit_kwds = getattr(self, 'fit_kwds', {}) + try: + res = mod.fit(**fit_kwds) + except np.linalg.LinAlgError: + pass + else: + assert_equal(res.model.k_constant, result[0]) + assert_equal(res.model.data.k_constant, result[0]) + + @classmethod + def setup_class(cls): + # create data + np.random.seed(0) + cls.y_c = np.random.randn(20) + cls.y_bin = (cls.y_c > 0).astype(int) + x1 = np.column_stack((np.ones(20), np.zeros(20))) + result1 = (1, 0) + x2 = np.column_stack((np.arange(20) < 10.5, + np.arange(20) > 10.5)).astype(float) + result2 = (1, None) + x3 = np.column_stack((np.arange(20), np.zeros(20))) + result3 = (0, None) + x4 = np.column_stack((np.arange(20), np.zeros((20, 2)))) + result4 = (0, None) + x5 = np.column_stack((np.zeros(20), 0.5 * np.ones(20))) + result5 = (1, 1) + x5b = np.column_stack((np.arange(20), np.ones((20, 3)))) + result5b = (1, 1) + x5c = np.column_stack((np.arange(20), np.ones((20, 3)) * [0.5, 1, 1])) + result5c = (1, 2) + # implicit and zero column + x6 = np.column_stack((np.arange(20) < 10.5, + np.arange(20) > 10.5, + np.zeros(20))).astype(float) + result6 = (1, None) + x7 = np.column_stack((np.arange(20) < 10.5, + np.arange(20) > 10.5, + np.zeros((20, 2)))).astype(float) + result7 = (1, None) + + cls.exogs = (x1, x2, x3, x4, x5, x5b, x5c, x6, x7) + cls.results = (result1, result2, result3, result4, result5, result5b, + result5c, result6, result7) + cls._initialize() + + +class TestHasConstantOLS(CheckHasConstant): + + @classmethod + def _initialize(cls): + + cls.mod = OLS + cls.y = cls.y_c + + +class TestHasConstantGLM(CheckHasConstant): + + @staticmethod + def mod(y, x): + return GLM(y, x, family=families.Binomial()) + + @classmethod + def _initialize(cls): + cls.y = cls.y_bin + + +class TestHasConstantLogit(CheckHasConstant): + + @classmethod + def _initialize(cls): + cls.mod = Logit + cls.y = cls.y_bin + cls.fit_kwds = {'disp': False} + + +def test_dtype_object(): + # see GH#880 + + X = np.random.random((40, 2)) + df = pd.DataFrame(X) + df[2] = np.random.randint(2, size=40).astype('object') + df['constant'] = 1 + + y = pd.Series(np.random.randint(2, size=40)) + + np.testing.assert_raises(ValueError, sm_data.handle_data, y, df) + + +def test_formula_missing_extra_arrays(): + np.random.seed(1) + # because patsy can't turn off missing data-handling as of 0.3.0, we need + # separate tests to make sure that missing values are handled correctly + # when going through formulas + + # there is a handle_formula_data step + # then there is the regular handle_data step + # see GH#2083 + + # the untested cases are endog/exog have missing. extra has missing. + # endog/exog are fine. extra has missing. + # endog/exog do or do not have missing and extra has wrong dimension + y = np.random.randn(10) + y_missing = y.copy() + y_missing[[2, 5]] = np.nan + X = np.random.randn(10) + X_missing = X.copy() + X_missing[[1, 3]] = np.nan + + weights = np.random.uniform(size=10) + weights_missing = weights.copy() + weights_missing[[6]] = np.nan + + weights_wrong_size = np.random.randn(12) + + data = {'y': y, + 'X': X, + 'y_missing': y_missing, + 'X_missing': X_missing, + 'weights': weights, + 'weights_missing': weights_missing} + data = pd.DataFrame.from_dict(data) + data['constant'] = 1 + + formula = 'y_missing ~ X_missing' + + ((endog, exog), + missing_idx, design_info) = handle_formula_data(data, None, formula, + depth=2, + missing='drop') + + kwargs = {'missing_idx': missing_idx, 'missing': 'drop', + 'weights': data['weights_missing']} + + model_data = sm_data.handle_data(endog, exog, **kwargs) + data_nona = data.dropna() + assert_equal(data_nona['y'].values, model_data.endog) + assert_equal(data_nona[['constant', 'X']].values, model_data.exog) + assert_equal(data_nona['weights'].values, model_data.weights) + + tmp = handle_formula_data(data, None, formula, depth=2, missing='drop') + (endog, exog), missing_idx, design_info = tmp + weights_2d = np.random.randn(10, 10) + weights_2d[[8, 7], [7, 8]] = np.nan # symmetric missing values + kwargs.update({'weights': weights_2d, + 'missing_idx': missing_idx}) + + model_data2 = sm_data.handle_data(endog, exog, **kwargs) + + good_idx = [0, 4, 6, 9] + assert_equal(data.loc[good_idx, 'y'], model_data2.endog) + assert_equal(data.loc[good_idx, ['constant', 'X']], model_data2.exog) + assert_equal(weights_2d[good_idx][:, good_idx], model_data2.weights) + + tmp = handle_formula_data(data, None, formula, depth=2, missing='drop') + (endog, exog), missing_idx, design_info = tmp + + kwargs.update({'weights': weights_wrong_size, + 'missing_idx': missing_idx}) + assert_raises(ValueError, sm_data.handle_data, endog, exog, **kwargs) + + +def test_raise_nonfinite_exog(): + # we raise now in the has constant check before hitting the linear algebra + from statsmodels.tools.sm_exceptions import MissingDataError + x = np.arange(10)[:, None]**([0., 1.]) + # random numbers for y + y = np.array([-0.6, -0.1, 0., -0.7, -0.5, 0.5, 0.1, -0.8, -2., 1.1]) + + x[1, 1] = np.inf + assert_raises(MissingDataError, OLS, y, x) + x[1, 1] = np.nan + assert_raises(MissingDataError, OLS, y, x) diff --git a/statsmodels/base/tests/test_distributed_estimation.py b/statsmodels/base/tests/test_distributed_estimation.py new file mode 100644 index 0000000..9a653af --- /dev/null +++ b/statsmodels/base/tests/test_distributed_estimation.py @@ -0,0 +1,479 @@ +import numpy as np +from numpy.testing import assert_equal, assert_, assert_allclose +from statsmodels.regression.linear_model import OLS +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod.families import Binomial +from statsmodels.base.distributed_estimation import _calc_grad, \ + _calc_wdesign_mat, _est_regularized_debiased, _join_debiased, \ + _est_regularized_naive, _est_unregularized_naive, _join_naive, \ + DistributedModel + + +def _data_gen(endog, exog, partitions): + """partitions data""" + + n_exog = exog.shape[0] + n_part = np.ceil(n_exog / partitions) + + n_part = np.floor(n_exog / partitions) + rem = n_exog - n_part * partitions + + stp = 0 + + while stp < (partitions - 1): + ii = int(n_part * stp) + jj = int(n_part * (stp + 1)) + yield endog[ii:jj], exog[ii:jj, :] + stp += 1 + + ii = int(n_part * stp) + jj = int(n_part * (stp + 1) + rem) + yield endog[ii:jj], exog[ii:jj, :] + + +def test_calc_grad(): + + # seperately tests that _calc_grad returns + # sensible results + # + # regression test + + np.random.seed(435265) + X = np.random.normal(size=(50, 3)) + y = np.random.randint(0, 2, size=50) + beta = np.random.normal(size=3) + mod = OLS(y, X) + grad = _calc_grad(mod, beta, 0.01, 1, {}) + assert_allclose(grad, np.array([19.75816, -6.62307, 7.324644]), + atol=1e-6, rtol=0) + + +def test_calc_wdesign_mat(): + + # seperately tests that _calc_wdesign_mat + # returns sensible results + # + # regression test + + np.random.seed(435265) + X = np.random.normal(size=(3, 3)) + y = np.random.randint(0, 2, size=3) + beta = np.random.normal(size=3) + mod = OLS(y, X) + dmat = _calc_wdesign_mat(mod, beta, {}) + assert_allclose(dmat, np.array([[1.306314, -0.024897, 1.326498], + [-0.539219, -0.483028, -0.703503], + [-3.327987, 0.524541, -0.139761]]), + atol=1e-6, rtol=0) + + mod = GLM(y, X, family=Binomial()) + dmat = _calc_wdesign_mat(mod, beta, {}) + assert_allclose(dmat, np.array([[0.408616, -0.007788, 0.41493], + [-0.263292, -0.235854, -0.343509], + [-0.11241, 0.017718, -0.004721]]), + atol=1e-6, rtol=0) + + +def test_est_regularized_debiased(): + + # tests that the shape of all the intermediate steps + # remains correct for regularized debiased estimation, + # does this for OLS and GLM + + np.random.seed(435265) + X = np.random.normal(size=(50, 3)) + y = np.random.randint(0, 2, size=50) + beta = np.random.normal(size=3) + mod = OLS(y, X) + res = _est_regularized_debiased(mod, 0, 2, fit_kwds={"alpha": 0.5}) + bhat = res[0] + grad = res[1] + ghat_l = res[2] + that_l = res[3] + + assert_(isinstance(res, tuple)) + assert_equal(bhat.shape, beta.shape) + assert_equal(grad.shape, beta.shape) + assert_(isinstance(ghat_l, list)) + assert_(isinstance(that_l, list)) + assert_equal(len(ghat_l), len(that_l)) + assert_equal(ghat_l[0].shape, (2,)) + assert_(isinstance(that_l[0], float)) + + mod = GLM(y, X, family=Binomial()) + res = _est_regularized_debiased(mod, 0, 2, fit_kwds={"alpha": 0.5}) + bhat = res[0] + grad = res[1] + ghat_l = res[2] + that_l = res[3] + + assert_(isinstance(res, tuple)) + assert_equal(bhat.shape, beta.shape) + assert_equal(grad.shape, beta.shape) + assert_(isinstance(ghat_l, list)) + assert_(isinstance(that_l, list)) + assert_equal(len(ghat_l), len(that_l)) + assert_equal(ghat_l[0].shape, (2,)) + assert_(isinstance(that_l[0], float)) + + +def test_est_regularized_naive(): + + # tests that the shape of all the intermediate steps + # remains correct for regularized naive estimation, + # does this for OLS and GLM + + np.random.seed(435265) + X = np.random.normal(size=(50, 3)) + y = np.random.randint(0, 2, size=50) + beta = np.random.normal(size=3) + mod = OLS(y, X) + res = _est_regularized_naive(mod, 0, 2, fit_kwds={"alpha": 0.5}) + + assert_equal(res.shape, beta.shape) + + mod = GLM(y, X, family=Binomial()) + res = _est_regularized_naive(mod, 0, 2, fit_kwds={"alpha": 0.5}) + + assert_equal(res.shape, beta.shape) + + +def test_est_unregularized_naive(): + + # tests that the shape of all the intermediate steps + # remains correct for unregularized naive estimation, + # does this for OLS and GLM + + np.random.seed(435265) + X = np.random.normal(size=(50, 3)) + y = np.random.randint(0, 2, size=50) + beta = np.random.normal(size=3) + mod = OLS(y, X) + res = _est_unregularized_naive(mod, 0, 2, fit_kwds={"alpha": 0.5}) + + assert_equal(res.shape, beta.shape) + + mod = GLM(y, X, family=Binomial()) + res = _est_unregularized_naive(mod, 0, 2, fit_kwds={"alpha": 0.5}) + + assert_equal(res.shape, beta.shape) + + +def test_join_debiased(): + + # tests that the results of all the intermediate steps + # remains correct for debiased join, does this for OLS and GLM + # + # regression test + + np.random.seed(435265) + X = np.random.normal(size=(50, 3)) + y = np.random.randint(0, 2, size=50) + mod = OLS(y, X) + res_l = [] + for i in range(2): + res = _est_regularized_debiased(mod, i, 2, fit_kwds={"alpha": 0.1}) + res_l.append(res) + joined = _join_debiased(res_l) + assert_allclose(joined, np.array([-0.167548, -0.016567, -0.34414]), + atol=1e-6, rtol=0) + + mod = GLM(y, X, family=Binomial()) + res_l = [] + for i in range(2): + res = _est_regularized_debiased(mod, i, 2, fit_kwds={"alpha": 0.1}) + res_l.append(res) + joined = _join_debiased(res_l) + assert_allclose(joined, np.array([-0.164515, -0.412854, -0.223955]), + atol=1e-6, rtol=0) + + +def test_join_naive(): + + # tests that the results of all the intermediate steps + # remains correct for naive join, does this for OLS and GLM + # + # regression test + + np.random.seed(435265) + X = np.random.normal(size=(50, 3)) + y = np.random.randint(0, 2, size=50) + mod = OLS(y, X) + res_l = [] + for i in range(2): + res = _est_regularized_naive(mod, i, 2, fit_kwds={"alpha": 0.1}) + res_l.append(res) + joined = _join_naive(res_l) + assert_allclose(joined, np.array([-0.020757, 0., 0.]), + atol=1e-6, rtol=0) + + mod = GLM(y, X, family=Binomial()) + res_l = [] + for i in range(2): + res = _est_regularized_naive(mod, i, 2, fit_kwds={"alpha": 0.1}) + res_l.append(res) + joined = _join_naive(res_l) + assert_allclose(joined, np.array([0., 0., 0.]), + atol=1e-6, rtol=0) + + +def test_fit_sequential(): + + # tests that the results of all the intermediate steps + # remains correct for sequential fit, does this for OLS and GLM + # and a variety of model sizes + # + # regression test + + np.random.seed(435265) + X = np.random.normal(size=(50, 3)) + y = np.random.randint(0, 2, size=50) + + mod = DistributedModel(1, model_class=OLS) + fit = mod.fit(_data_gen(y, X, 1), parallel_method="sequential", + fit_kwds={"alpha": 0.5}) + assert_allclose(fit.params, np.array([-0.191606, -0.012565, -0.351398]), + atol=1e-6, rtol=0) + mod = DistributedModel(2, model_class=OLS) + fit = mod.fit(_data_gen(y, X, 2), parallel_method="sequential", + fit_kwds={"alpha": 0.5}) + assert_allclose(fit.params, np.array([-0.157416, -0.029643, -0.471653]), + atol=1e-6, rtol=0) + mod = DistributedModel(3, model_class=OLS) + fit = mod.fit(_data_gen(y, X, 3), parallel_method="sequential", + fit_kwds={"alpha": 0.5}) + assert_allclose(fit.params, np.array([-0.124891, -0.050934, -0.403354]), + atol=1e-6, rtol=0) + + mod = DistributedModel(1, model_class=GLM, + init_kwds={"family": Binomial()}) + fit = mod.fit(_data_gen(y, X, 1), parallel_method="sequential", + fit_kwds={"alpha": 0.5}) + assert_allclose(fit.params, np.array([-0.164515, -0.412854, -0.223955]), + atol=1e-6, rtol=0) + mod = DistributedModel(2, model_class=GLM, + init_kwds={"family": Binomial()}) + fit = mod.fit(_data_gen(y, X, 2), parallel_method="sequential", + fit_kwds={"alpha": 0.5}) + assert_allclose(fit.params, np.array([-0.142513, -0.360324, -0.295485]), + atol=1e-6, rtol=0) + mod = DistributedModel(3, model_class=GLM, + init_kwds={"family": Binomial()}) + fit = mod.fit(_data_gen(y, X, 3), parallel_method="sequential", + fit_kwds={"alpha": 0.5}) + assert_allclose(fit.params, np.array([-0.110487, -0.306431, -0.243921]), + atol=1e-6, rtol=0) + + +def test_fit_joblib(): + + # tests that the results of all the intermediate steps + # remains correct for joblib fit, does this for OLS and GLM + # and a variety of model sizes + # + # regression test + + np.random.seed(435265) + X = np.random.normal(size=(50, 3)) + y = np.random.randint(0, 2, size=50) + + mod = DistributedModel(1, model_class=OLS) + fit = mod.fit(_data_gen(y, X, 1), parallel_method="joblib", + fit_kwds={"alpha": 0.5}) + assert_allclose(fit.params, np.array([-0.191606, -0.012565, -0.351398]), + atol=1e-6, rtol=0) + mod = DistributedModel(2, model_class=OLS) + fit = mod.fit(_data_gen(y, X, 2), parallel_method="joblib", + fit_kwds={"alpha": 0.5}) + assert_allclose(fit.params, np.array([-0.157416, -0.029643, -0.471653]), + atol=1e-6, rtol=0) + mod = DistributedModel(3, model_class=OLS) + fit = mod.fit(_data_gen(y, X, 3), parallel_method="joblib", + fit_kwds={"alpha": 0.5}) + assert_allclose(fit.params, np.array([-0.124891, -0.050934, -0.403354]), + atol=1e-6, rtol=0) + + mod = DistributedModel(1, model_class=GLM, + init_kwds={"family": Binomial()}) + fit = mod.fit(_data_gen(y, X, 1), parallel_method="joblib", + fit_kwds={"alpha": 0.5}) + assert_allclose(fit.params, np.array([-0.164515, -0.412854, -0.223955]), + atol=1e-6, rtol=0) + mod = DistributedModel(2, model_class=GLM, + init_kwds={"family": Binomial()}) + fit = mod.fit(_data_gen(y, X, 2), parallel_method="joblib", + fit_kwds={"alpha": 0.5}) + assert_allclose(fit.params, np.array([-0.142513, -0.360324, -0.295485]), + atol=1e-6, rtol=0) + mod = DistributedModel(3, model_class=GLM, + init_kwds={"family": Binomial()}) + fit = mod.fit(_data_gen(y, X, 3), parallel_method="joblib", + fit_kwds={"alpha": 0.5}) + assert_allclose(fit.params, np.array([-0.110487, -0.306431, -0.243921]), + atol=1e-6, rtol=0) + + +def test_single_partition(): + + # tests that the results make sense if we have a single partition + + np.random.seed(435265) + N = 200 + p = 10 + m = 1 + + beta = np.random.normal(size=p) + beta = beta * np.random.randint(0, 2, p) + X = np.random.normal(size=(N, p)) + y = X.dot(beta) + np.random.normal(size=N) + + # test regularized OLS v. naive + db_mod = DistributedModel(m) + fitOLSdb = db_mod.fit(_data_gen(y, X, m), fit_kwds={"alpha": 0}) + + nv_mod = DistributedModel(m, estimation_method=_est_regularized_naive, + join_method=_join_naive) + fitOLSnv = nv_mod.fit(_data_gen(y, X, m), fit_kwds={"alpha": 0}) + + ols_mod = OLS(y, X) + fitOLS = ols_mod.fit(alpha=0) + + assert_allclose(fitOLSdb.params, fitOLS.params) + assert_allclose(fitOLSnv.params, fitOLS.params) + + # test regularized + nv_mod = DistributedModel(m, estimation_method=_est_regularized_naive, + join_method=_join_naive) + fitOLSnv = nv_mod.fit(_data_gen(y, X, m), fit_kwds={"alpha": 0.1}) + + ols_mod = OLS(y, X) + fitOLS = ols_mod.fit_regularized(alpha=0.1) + + assert_allclose(fitOLSnv.params, fitOLS.params) + + +def test_larger_p(): + + # tests when p > N / m for the debiased and naive case + + np.random.seed(435265) + N = 40 + p = 40 + m = 5 + + beta = np.random.normal(size=p) + beta = beta * np.random.randint(0, 2, p) + X = np.random.normal(size=(N, p)) + y = X.dot(beta) + np.random.normal(size=N) + + db_mod = DistributedModel(m) + fitOLSdb = db_mod.fit(_data_gen(y, X, m), fit_kwds={"alpha": 0.1}) + assert_equal(np.sum(np.isnan(fitOLSdb.params)), 0) + + nv_mod = DistributedModel(m, estimation_method=_est_regularized_naive, + join_method=_join_naive) + fitOLSnv = nv_mod.fit(_data_gen(y, X, m), fit_kwds={"alpha": 0.1}) + assert_equal(np.sum(np.isnan(fitOLSnv.params)), 0) + + +def test_non_zero_params(): + + # tests that the thresholding does not cause any issues + + np.random.seed(435265) + N = 200 + p = 10 + m = 5 + + beta = np.random.normal(size=p) + beta = beta * np.random.randint(0, 2, p) + X = np.random.normal(size=(N, p)) + y = X.dot(beta) + np.random.normal(size=N) + + db_mod = DistributedModel(m, join_kwds={"threshold": 0.13}) + fitOLSdb = db_mod.fit(_data_gen(y, X, m), fit_kwds={"alpha": 0.1}) + ols_mod = OLS(y, X) + fitOLS = ols_mod.fit_regularized(alpha=0.1) + + nz_params_db = 1 * (fitOLSdb.params != 0) + nz_params_ols = 1 * (fitOLS.params != 0) + + assert_allclose(nz_params_db, nz_params_ols) + + +def test_repeat_partition(): + + # tests that if we use identical partitions the average is the same + # as the estimate for the full data + + np.random.seed(435265) + N = 200 + p = 10 + m = 1 + + beta = np.random.normal(size=p) + beta = beta * np.random.randint(0, 2, p) + X = np.random.normal(size=(N, p)) + y = X.dot(beta) + np.random.normal(size=N) + + def _rep_data_gen(endog, exog, partitions): + """partitions data""" + + n_exog = exog.shape[0] + n_part = np.ceil(n_exog / partitions) + + ii = 0 + while ii < n_exog: + yield endog, exog + ii += int(n_part) + + nv_mod = DistributedModel(m, estimation_method=_est_regularized_naive, + join_method=_join_naive) + fitOLSnv = nv_mod.fit(_rep_data_gen(y, X, m), fit_kwds={"alpha": 0.1}) + + ols_mod = OLS(y, X) + fitOLS = ols_mod.fit_regularized(alpha=0.1) + + assert_allclose(fitOLSnv.params, fitOLS.params) + + +def test_debiased_v_average(): + + # tests that the debiased method performs better than the standard + # average. Does this for both OLS and GLM. + + np.random.seed(435265) + N = 200 + p = 10 + m = 4 + + beta = np.random.normal(size=p) + beta = beta * np.random.randint(0, 2, p) + X = np.random.normal(size=(N, p)) + y = X.dot(beta) + np.random.normal(size=N) + + db_mod = DistributedModel(m) + fitOLSdb = db_mod.fit(_data_gen(y, X, m), fit_kwds={"alpha": 0.2}) + olsdb = np.linalg.norm(fitOLSdb.params - beta) + n_mod = DistributedModel(m, estimation_method=_est_regularized_naive, + join_method=_join_naive) + fitOLSn = n_mod.fit(_data_gen(y, X, m), fit_kwds={"alpha": 0.2}) + olsn = np.linalg.norm(fitOLSn.params - beta) + + assert_(olsdb < olsn) + + prob = 1 / (1 + np.exp(-X.dot(beta) + np.random.normal(size=N))) + y = 1. * (prob > 0.5) + + db_mod = DistributedModel(m, model_class=GLM, + init_kwds={"family": Binomial()}) + fitGLMdb = db_mod.fit(_data_gen(y, X, m), fit_kwds={"alpha": 0.2}) + glmdb = np.linalg.norm(fitGLMdb.params - beta) + n_mod = DistributedModel(m, model_class=GLM, + init_kwds={"family": Binomial()}, + estimation_method=_est_regularized_naive, + join_method=_join_naive) + fitGLMn = n_mod.fit(_data_gen(y, X, m), fit_kwds={"alpha": 0.2}) + glmn = np.linalg.norm(fitGLMn.params - beta) + + assert_(glmdb < glmn) diff --git a/statsmodels/base/tests/test_generic_methods.py b/statsmodels/base/tests/test_generic_methods.py new file mode 100644 index 0000000..beff8dd --- /dev/null +++ b/statsmodels/base/tests/test_generic_methods.py @@ -0,0 +1,736 @@ +# -*- coding: utf-8 -*- +"""Tests that use cross-checks for generic methods + +Should be easy to check consistency across models +Does not cover tsa + +Initial cases copied from test_shrink_pickle + +Created on Wed Oct 30 14:01:27 2013 + +Author: Josef Perktold +""" +from statsmodels.compat.pandas import assert_series_equal, assert_index_equal +from statsmodels.compat.python import range +from statsmodels.compat.platform import PLATFORM_OSX + +import numpy as np +import pandas as pd +import pytest +import statsmodels.api as sm +import statsmodels.tools._testing as smt +from statsmodels.formula.api import ols, glm + +from numpy.testing import (assert_, assert_allclose, assert_equal, + assert_array_equal) + + +class CheckGenericMixin(object): + + @classmethod + def setup_class(cls): + nobs = 500 + np.random.seed(987689) + x = np.random.randn(nobs, 3) + x = sm.add_constant(x) + cls.exog = x + cls.xf = 0.25 * np.ones((2, 4)) + cls.predict_kwds = {} + cls.transform_index = None + + def test_ttest_tvalues(self): + # test that t_test has same results a params, bse, tvalues, ... + smt.check_ttest_tvalues(self.results) + + res = self.results + mat = np.eye(len(res.params)) + + tt = res.t_test(mat[0]) + string_confint = lambda alpha: "[%4.3F %4.3F]" % ( + alpha / 2, 1- alpha / 2) + summ = tt.summary() # smoke test for #1323 + assert_allclose(tt.pvalue, res.pvalues[0], rtol=5e-10) + assert_(string_confint(0.05) in str(summ)) + + # issue #3116 alpha not used in column headers + summ = tt.summary(alpha=0.1) + ss = "[0.05 0.95]" # different formatting + assert_(ss in str(summ)) + + summf = tt.summary_frame(alpha=0.1) + pvstring_use_t = 'P>|z|' if res.use_t is False else 'P>|t|' + tstring_use_t = 'z' if res.use_t is False else 't' + cols = ['coef', 'std err', tstring_use_t, pvstring_use_t, + 'Conf. Int. Low', 'Conf. Int. Upp.'] + assert_array_equal(summf.columns.values, cols) + + def test_ftest_pvalues(self): + smt.check_ftest_pvalues(self.results) + + def test_fitted(self): + smt.check_fitted(self.results) + + def test_predict_types(self): + smt.check_predict_types(self.results) + + def test_zero_constrained(self): + # not completely generic yet + if (isinstance(self.results.model, (sm.GEE))): + # GEE does not subclass LikelihoodModel + pytest.skip('GEE does not subclass LikelihoodModel') + + use_start_params = not isinstance(self.results.model, + (sm.RLM, sm.OLS, sm.WLS)) + self.use_start_params = use_start_params # attach for _get_constrained + + keep_index = list(range(self.results.model.exog.shape[1])) + # index for params might include extra params + keep_index_p = list(range(self.results.params.shape[0])) + drop_index = [1] + for i in drop_index: + del keep_index[i] + del keep_index_p[i] + + if use_start_params: + res1 = self.results.model._fit_zeros(keep_index, maxiter=500, + start_params=self.results.params) + else: + res1 = self.results.model._fit_zeros(keep_index, maxiter=500) + + res2 = self._get_constrained(keep_index, keep_index_p) + + assert_allclose(res1.params[keep_index_p], res2.params, rtol=1e-10, + atol=1e-10) + assert_equal(res1.params[drop_index], 0) + assert_allclose(res1.bse[keep_index_p], res2.bse, rtol=1e-10, + atol=1e-10) + assert_equal(res1.bse[drop_index], 0) + # OSX has many slight failures on this test + tol = 1e-8 if PLATFORM_OSX else 1e-10 + assert_allclose(res1.tvalues[keep_index_p], res2.tvalues, rtol=tol, + atol=tol) + assert_allclose(res1.pvalues[keep_index_p], res2.pvalues, rtol=tol, + atol=tol) + + if hasattr(res1, 'resid'): + # discrete models, Logit don't have `resid` yet + # atol discussion at gh-5158 + rtol = 1e-10 + atol = 1e-12 + if PLATFORM_OSX: + # GH 5628 + rtol = 1e-8 + atol = 1e-10 + assert_allclose(res1.resid, res2.resid, rtol=rtol, atol=atol) + + ex = self.results.model.exog.mean(0) + predicted1 = res1.predict(ex, **self.predict_kwds) + predicted2 = res2.predict(ex[keep_index], **self.predict_kwds) + assert_allclose(predicted1, predicted2, rtol=1e-10) + + ex = self.results.model.exog[:5] + predicted1 = res1.predict(ex, **self.predict_kwds) + predicted2 = res2.predict(ex[:, keep_index], **self.predict_kwds) + assert_allclose(predicted1, predicted2, rtol=1e-10) + + def _get_constrained(self, keep_index, keep_index_p): + # override in some test classes, no fit_kwds yet, e.g. cov_type + mod2 = self.results.model + mod_cls = mod2.__class__ + init_kwds = mod2._get_init_kwds() + mod = mod_cls(mod2.endog, mod2.exog[:, keep_index], **init_kwds) + if self.use_start_params: + res = mod.fit(start_params=self.results.params[keep_index_p], + maxiter=500) + else: + res = mod.fit(maxiter=500) + return res + + def test_zero_collinear(self): + # not completely generic yet + if isinstance(self.results.model, (sm.GEE)): + pytest.skip('Not completely generic yet') + + use_start_params = not isinstance(self.results.model, + (sm.RLM, sm.OLS, sm.WLS, sm.GLM)) + self.use_start_params = use_start_params # attach for _get_constrained + keep_index = list(range(self.results.model.exog.shape[1])) + # index for params might include extra params + keep_index_p = list(range(self.results.params.shape[0])) + drop_index = [] + for i in drop_index: + del keep_index[i] + del keep_index_p[i] + + keep_index_p = list(range(self.results.params.shape[0])) + + # create collinear model + mod2 = self.results.model + mod_cls = mod2.__class__ + init_kwds = mod2._get_init_kwds() + ex = np.column_stack((mod2.exog, mod2.exog)) + mod = mod_cls(mod2.endog, ex, **init_kwds) + + keep_index = list(range(self.results.model.exog.shape[1])) + keep_index_p = list(range(self.results.model.exog.shape[1])) + k_vars = ex.shape[1] + k_extra = 0 + if hasattr(mod, 'k_extra') and mod.k_extra > 0: + keep_index_p += list(range(k_vars, k_vars + mod.k_extra)) + k_extra = mod.k_extra + + cov_types = ['nonrobust', 'HC0'] + + for cov_type in cov_types: + # Note: for RLM we only check default when cov_type is 'nonrobust' + # cov_type is otherwise ignored + if cov_type != 'nonrobust' and (isinstance(self.results.model, + sm.RLM)): + return + + if use_start_params: + start_params = np.zeros(k_vars + k_extra) + method = self.results.mle_settings['optimizer'] + # string in `method` is not mutable, so no need for copy + sp = self.results.mle_settings['start_params'].copy() + if self.transform_index is not None: + # work around internal transform_params, currently in NB + sp[self.transform_index] = np.exp(sp[self.transform_index]) + + start_params[keep_index_p] = sp + res1 = mod._fit_collinear(cov_type=cov_type, + start_params=start_params, + method=method, disp=0) + if cov_type != 'nonrobust': + # reestimate original model to get robust cov + res2 = self.results.model.fit(cov_type=cov_type, + start_params=sp, + method=method, disp=0) + else: + # more special casing RLM + if (isinstance(self.results.model, (sm.RLM))): + res1 = mod._fit_collinear() + else: + res1 = mod._fit_collinear(cov_type=cov_type) + if cov_type != 'nonrobust': + # reestimate original model to get robust cov + res2 = self.results.model.fit(cov_type=cov_type) + + if cov_type == 'nonrobust': + res2 = self.results + + # check fit optimizer arguments, if mle_settings is available + if hasattr(res2, 'mle_settings'): + assert_equal(res1.results_constrained.mle_settings['optimizer'], + res2.mle_settings['optimizer']) + if 'start_params' in res2.mle_settings: + spc = res1.results_constrained.mle_settings['start_params'] + assert_allclose(spc, + res2.mle_settings['start_params'], + rtol=1e-10, atol=1e-20) + assert_equal(res1.mle_settings['optimizer'], + res2.mle_settings['optimizer']) + assert_allclose(res1.mle_settings['start_params'], + res2.mle_settings['start_params'], + rtol=1e-10, atol=1e-20) + + # Poisson has reduced precision in params, difficult optimization? + assert_allclose(res1.params[keep_index_p], res2.params, rtol=1e-6) + assert_allclose(res1.params[drop_index], 0, rtol=1e-10) + assert_allclose(res1.bse[keep_index_p], res2.bse, rtol=1e-8) + assert_allclose(res1.bse[drop_index], 0, rtol=1e-10) + assert_allclose(res1.tvalues[keep_index_p], res2.tvalues, rtol=5e-8) + assert_allclose(res1.pvalues[keep_index_p], res2.pvalues, + rtol=1e-6, atol=1e-30) + + if hasattr(res1, 'resid'): + # discrete models, Logit don't have `resid` yet + assert_allclose(res1.resid, res2.resid, rtol=1e-5, atol=1e-10) + + ex = res1.model.exog.mean(0) + predicted1 = res1.predict(ex, **self.predict_kwds) + predicted2 = res2.predict(ex[keep_index], **self.predict_kwds) + assert_allclose(predicted1, predicted2, rtol=1e-8, atol=1e-11) + + ex = res1.model.exog[:5] + kwds = getattr(self, 'predict_kwds_5', {}) + + predicted1 = res1.predict(ex, **kwds) + predicted2 = res2.predict(ex[:, keep_index], **kwds) + assert_allclose(predicted1, predicted2, rtol=1e-8, atol=1e-11) + + +######### subclasses for individual models, unchanged from test_shrink_pickle +# TODO: check if setup_class is faster than setup + +class TestGenericOLS(CheckGenericMixin): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + np.random.seed(987689) + y = x.sum(1) + np.random.randn(x.shape[0]) + self.results = sm.OLS(y, self.exog).fit() + + +class TestGenericOLSOneExog(CheckGenericMixin): + # check with single regressor (no constant) + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog[:, 1] + np.random.seed(987689) + y = x + np.random.randn(x.shape[0]) + self.results = sm.OLS(y, x).fit() + + def test_zero_constrained(self): + # override, we cannot remove the only regressor + pytest.skip('Override since cannot remove the only regressor') + pass + + +class TestGenericWLS(CheckGenericMixin): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + np.random.seed(987689) + y = x.sum(1) + np.random.randn(x.shape[0]) + self.results = sm.WLS(y, self.exog, weights=np.ones(len(y))).fit() + + +class TestGenericPoisson(CheckGenericMixin): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + np.random.seed(987689) + y_count = np.random.poisson(np.exp(x.sum(1) - x.mean())) + model = sm.Poisson(y_count, x) + # use start_params to converge faster + start_params = np.array([0.75334818, 0.99425553, 1.00494724, 1.00247112]) + self.results = model.fit(start_params=start_params, method='bfgs', + disp=0) + + +class TestGenericPoissonOffset(CheckGenericMixin): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + nobs = x.shape[0] + np.random.seed(987689) + y_count = np.random.poisson(np.exp(x.sum(1) - x.mean())) + model = sm.Poisson(y_count, x, offset=0.01 * np.ones(nobs), + exposure=np.ones(nobs)) # bug with default + # use start_params to converge faster + start_params = np.array([0.75334818, 0.99425553, 1.00494724, 1.00247112]) + self.results = model.fit(start_params=start_params, method='bfgs', + disp=0) + + self.predict_kwds_5 = dict(exposure=0.01 * np.ones(5), offset=np.ones(5)) + self.predict_kwds = dict(exposure=1, offset=0) + + +class TestGenericNegativeBinomial(CheckGenericMixin): + + def setup(self): + #fit for each test, because results will be changed by test + np.random.seed(987689) + data = sm.datasets.randhie.load(as_pandas=False) + exog = sm.add_constant(data.exog, prepend=False) + mod = sm.NegativeBinomial(data.endog, exog) + start_params = np.array([-0.05783623, -0.26655806, 0.04109148, -0.03815837, + 0.2685168 , 0.03811594, -0.04426238, 0.01614795, + 0.17490962, 0.66461151, 1.2925957 ]) + self.results = mod.fit(start_params=start_params, disp=0, maxiter=500) + self.transform_index = -1 + + +class TestGenericLogit(CheckGenericMixin): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + nobs = x.shape[0] + np.random.seed(987689) + y_bin = (np.random.rand(nobs) < 1.0 / (1 + np.exp(x.sum(1) - x.mean()))).astype(int) + model = sm.Logit(y_bin, x) #, exposure=np.ones(nobs), offset=np.zeros(nobs)) #bug with default + # use start_params to converge faster + start_params = np.array([-0.73403806, -1.00901514, -0.97754543, -0.95648212]) + self.results = model.fit(start_params=start_params, method='bfgs', disp=0) + + +class TestGenericRLM(CheckGenericMixin): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + np.random.seed(987689) + y = x.sum(1) + np.random.randn(x.shape[0]) + self.results = sm.RLM(y, self.exog).fit() + + +class TestGenericGLM(CheckGenericMixin): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + np.random.seed(987689) + y = x.sum(1) + np.random.randn(x.shape[0]) + self.results = sm.GLM(y, self.exog).fit() + + +class TestGenericGLMPoissonOffset(CheckGenericMixin): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + nobs = x.shape[0] + np.random.seed(987689) + y_count = np.random.poisson(np.exp(x.sum(1) - x.mean())) + model = sm.GLM(y_count, x, family=sm.families.Poisson(), + offset=0.01 * np.ones(nobs), + exposure=np.ones(nobs)) + # use start_params to converge faster + start_params = np.array([0.75334818, 0.99425553, 1.00494724, 1.00247112]) + self.results = model.fit(start_params=start_params, method='bfgs', + disp=0) + + self.predict_kwds_5 = dict(exposure=0.01 * np.ones(5), offset=np.ones(5)) + self.predict_kwds = dict(exposure=1, offset=0) + + +class TestGenericGEEPoisson(CheckGenericMixin): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + np.random.seed(987689) + y_count = np.random.poisson(np.exp(x.sum(1) - x.mean())) + groups = np.random.randint(0, 4, size=x.shape[0]) + # use start_params to speed up test, difficult convergence not tested + start_params = np.array([0., 1., 1., 1.]) + + vi = sm.cov_struct.Independence() + family = sm.families.Poisson() + self.results = sm.GEE(y_count, self.exog, groups, family=family, + cov_struct=vi).fit(start_params=start_params) + + +class TestGenericGEEPoissonNaive(CheckGenericMixin): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + np.random.seed(987689) + #y_count = np.random.poisson(np.exp(x.sum(1) - x.mean())) + y_count = np.random.poisson(np.exp(x.sum(1) - x.sum(1).mean(0))) + groups = np.random.randint(0, 4, size=x.shape[0]) + # use start_params to speed up test, difficult convergence not tested + start_params = np.array([0., 1., 1., 1.]) + + vi = sm.cov_struct.Independence() + family = sm.families.Poisson() + self.results = sm.GEE(y_count, self.exog, groups, family=family, + cov_struct=vi).fit(start_params=start_params, + cov_type='naive') + + +class TestGenericGEEPoissonBC(CheckGenericMixin): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + np.random.seed(987689) + #y_count = np.random.poisson(np.exp(x.sum(1) - x.mean())) + y_count = np.random.poisson(np.exp(x.sum(1) - x.sum(1).mean(0))) + groups = np.random.randint(0, 4, size=x.shape[0]) + # use start_params to speed up test, difficult convergence not tested + start_params = np.array([0., 1., 1., 1.]) + # params_est = np.array([-0.0063238 , 0.99463752, 1.02790201, 0.98080081]) + + vi = sm.cov_struct.Independence() + family = sm.families.Poisson() + mod = sm.GEE(y_count, self.exog, groups, family=family, cov_struct=vi) + self.results = mod.fit(start_params=start_params, + cov_type='bias_reduced') + + +# Other test classes + +class CheckAnovaMixin(object): + + @classmethod + def setup_class(cls): + import statsmodels.stats.tests.test_anova as ttmod + + test = ttmod.TestAnova3() + test.setup_class() + + cls.data = test.data.drop([0,1,2]) + cls.initialize() + + def test_combined(self): + res = self.res + wa = res.wald_test_terms(skip_single=False, combine_terms=['Duration', 'Weight']) + eye = np.eye(len(res.params)) + c_const = eye[0] + c_w = eye[[2,3]] + c_d = eye[1] + c_dw = eye[[4,5]] + c_weight = eye[2:6] + c_duration = eye[[1, 4, 5]] + + compare_waldres(res, wa, [c_const, c_d, c_w, c_dw, c_duration, c_weight]) + + def test_categories(self): + # test only multicolumn terms + res = self.res + wa = res.wald_test_terms(skip_single=True) + eye = np.eye(len(res.params)) + c_w = eye[[2,3]] + c_dw = eye[[4,5]] + + compare_waldres(res, wa, [c_w, c_dw]) + + +def compare_waldres(res, wa, constrasts): + for i, c in enumerate(constrasts): + wt = res.wald_test(c) + assert_allclose(wa.table.values[i, 0], wt.statistic) + assert_allclose(wa.table.values[i, 1], wt.pvalue) + df = c.shape[0] if c.ndim == 2 else 1 + assert_equal(wa.table.values[i, 2], df) + # attributes + assert_allclose(wa.statistic[i], wt.statistic) + assert_allclose(wa.pvalues[i], wt.pvalue) + assert_equal(wa.df_constraints[i], df) + if res.use_t: + assert_equal(wa.df_denom[i], res.df_resid) + + col_names = wa.col_names + if res.use_t: + assert_equal(wa.distribution, 'F') + assert_equal(col_names[0], 'F') + assert_equal(col_names[1], 'P>F') + else: + assert_equal(wa.distribution, 'chi2') + assert_equal(col_names[0], 'chi2') + assert_equal(col_names[1], 'P>chi2') + + # SMOKETEST + wa.summary_frame() + + +class TestWaldAnovaOLS(CheckAnovaMixin): + + @classmethod + def initialize(cls): + mod = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", cls.data) + cls.res = mod.fit(use_t=False) + + def test_noformula(self): + # this verifies single and composite constraints against explicit + # wald test + endog = self.res.model.endog + exog = self.res.model.data.orig_exog + exog = pd.DataFrame(exog) + + res = sm.OLS(endog, exog).fit() + wa = res.wald_test_terms(skip_single=False, + combine_terms=['Duration', 'Weight']) + eye = np.eye(len(res.params)) + + c_single = [row for row in eye] + c_weight = eye[2:6] + c_duration = eye[[1, 4, 5]] + + compare_waldres(res, wa, c_single + [c_duration, c_weight]) + + # assert correct df_constraints, see #5475 for bug in single constraint + df_constraints = [1] * len(c_single) + [3, 4] + assert_equal(wa.df_constraints, df_constraints) + + +class TestWaldAnovaOLSF(CheckAnovaMixin): + + @classmethod + def initialize(cls): + mod = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", cls.data) + cls.res = mod.fit() # default use_t=True + + def test_predict_missing(self): + ex = self.data[:5].copy() + ex.iloc[0, 1] = np.nan + predicted1 = self.res.predict(ex) + predicted2 = self.res.predict(ex[1:]) + + assert_index_equal(predicted1.index, ex.index) + assert_series_equal(predicted1[1:], predicted2) + assert_equal(predicted1.values[0], np.nan) + + +class TestWaldAnovaGLM(CheckAnovaMixin): + + @classmethod + def initialize(cls): + mod = glm("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", cls.data) + cls.res = mod.fit(use_t=False) + + +class TestWaldAnovaPoisson(CheckAnovaMixin): + + @classmethod + def initialize(cls): + from statsmodels.discrete.discrete_model import Poisson + + mod = Poisson.from_formula("Days ~ C(Duration, Sum)*C(Weight, Sum)", cls.data) + cls.res = mod.fit(cov_type='HC0') + + +class TestWaldAnovaNegBin(CheckAnovaMixin): + + @classmethod + def initialize(cls): + from statsmodels.discrete.discrete_model import NegativeBinomial + + formula = "Days ~ C(Duration, Sum)*C(Weight, Sum)" + mod = NegativeBinomial.from_formula(formula, cls.data, + loglike_method='nb2') + cls.res = mod.fit() + + +class TestWaldAnovaNegBin1(CheckAnovaMixin): + + @classmethod + def initialize(cls): + from statsmodels.discrete.discrete_model import NegativeBinomial + + formula = "Days ~ C(Duration, Sum)*C(Weight, Sum)" + mod = NegativeBinomial.from_formula(formula, cls.data, + loglike_method='nb1') + cls.res = mod.fit(cov_type='HC0') + + +class CheckPairwise(object): + + def test_default(self): + res = self.res + + tt = res.t_test(self.constraints) + + pw = res.t_test_pairwise(self.term_name) + pw_frame = pw.result_frame + assert_allclose(pw_frame.iloc[:, :6].values, + tt.summary_frame().values) + + +class TestTTestPairwiseOLS(CheckPairwise): + + @classmethod + def setup_class(cls): + from statsmodels.formula.api import ols + import statsmodels.stats.tests.test_anova as ttmod + + test = ttmod.TestAnova3() + test.setup_class() + cls.data = test.data.drop([0,1,2]) + + mod = ols("np.log(Days+1) ~ C(Duration) + C(Weight)", cls.data) + cls.res = mod.fit() + cls.term_name = "C(Weight)" + cls.constraints = ['C(Weight)[T.2]', + 'C(Weight)[T.3]', + 'C(Weight)[T.3] - C(Weight)[T.2]'] + + def test_alpha(self): + pw1 = self.res.t_test_pairwise(self.term_name, method='hommel', + factor_labels='A B C'.split()) + pw2 = self.res.t_test_pairwise(self.term_name, method='hommel', + alpha=0.01) + assert_allclose(pw1.result_frame.iloc[:, :7].values, + pw2.result_frame.iloc[:, :7].values, rtol=1e-10) + assert_equal(pw1.result_frame.iloc[:, -1].values, + [True]*3) + assert_equal(pw2.result_frame.iloc[:, -1].values, + [False, True, False]) + + assert_equal(pw1.result_frame.index.values, + np.array(['B-A', 'C-A', 'C-B'], dtype=object)) + + +class TestTTestPairwiseOLS2(CheckPairwise): + + @classmethod + def setup_class(cls): + from statsmodels.formula.api import ols + import statsmodels.stats.tests.test_anova as ttmod + + test = ttmod.TestAnova3() + test.setup_class() + cls.data = test.data.drop([0,1,2]) + + mod = ols("np.log(Days+1) ~ C(Weight) + C(Duration)", cls.data) + cls.res = mod.fit() + cls.term_name = "C(Weight)" + cls.constraints = ['C(Weight)[T.2]', + 'C(Weight)[T.3]', + 'C(Weight)[T.3] - C(Weight)[T.2]'] + + +class TestTTestPairwiseOLS3(CheckPairwise): + + @classmethod + def setup_class(cls): + from statsmodels.formula.api import ols + import statsmodels.stats.tests.test_anova as ttmod + + test = ttmod.TestAnova3() + test.setup_class() + cls.data = test.data.drop([0,1,2]) + + mod = ols("np.log(Days+1) ~ C(Weight) + C(Duration) - 1", cls.data) + cls.res = mod.fit() + cls.term_name = "C(Weight)" + cls.constraints = ['C(Weight)[2] - C(Weight)[1]', + 'C(Weight)[3] - C(Weight)[1]', + 'C(Weight)[3] - C(Weight)[2]'] + + +class TestTTestPairwiseOLS4(CheckPairwise): + + @classmethod + def setup_class(cls): + from statsmodels.formula.api import ols + import statsmodels.stats.tests.test_anova as ttmod + + test = ttmod.TestAnova3() + test.setup_class() + cls.data = test.data.drop([0,1,2]) + + mod = ols("np.log(Days+1) ~ C(Weight, Treatment(2)) + C(Duration)", cls.data) + cls.res = mod.fit() + cls.term_name = "C(Weight, Treatment(2))" + cls.constraints = ['-C(Weight, Treatment(2))[T.1]', + 'C(Weight, Treatment(2))[T.3] - C(Weight, Treatment(2))[T.1]', + 'C(Weight, Treatment(2))[T.3]',] + + +class TestTTestPairwisePoisson(CheckPairwise): + + @classmethod + def setup_class(cls): + from statsmodels.discrete.discrete_model import Poisson + import statsmodels.stats.tests.test_anova as ttmod + + test = ttmod.TestAnova3() + test.setup_class() + cls.data = test.data.drop([0,1,2]) + + mod = Poisson.from_formula("Days ~ C(Duration) + C(Weight)", cls.data) + cls.res = mod.fit(cov_type='HC0') + cls.term_name = "C(Weight)" + cls.constraints = ['C(Weight)[T.2]', + 'C(Weight)[T.3]', + 'C(Weight)[T.3] - C(Weight)[T.2]'] diff --git a/statsmodels/base/tests/test_optimize.py b/statsmodels/base/tests/test_optimize.py new file mode 100644 index 0000000..702a307 --- /dev/null +++ b/statsmodels/base/tests/test_optimize.py @@ -0,0 +1,77 @@ +import pytest +from numpy.testing import assert_ + +from statsmodels.base.optimizer import (_fit_newton, _fit_nm, + _fit_bfgs, _fit_cg, + _fit_ncg, _fit_powell, + _fit_lbfgs, _fit_basinhopping) +fit_funcs = { + 'newton': _fit_newton, + 'nm': _fit_nm, # Nelder-Mead + 'bfgs': _fit_bfgs, + 'cg': _fit_cg, + 'ncg': _fit_ncg, + 'powell': _fit_powell, + 'lbfgs': _fit_lbfgs, + 'basinhopping': _fit_basinhopping, +} + + +def dummy_func(x): + return x**2 + + +def dummy_score(x): + return 2.*x + + +def dummy_hess(x): + return [[2.]] + + +@pytest.mark.smoke +def test_full_output_false(reset_randomstate): + # newton needs f, score, start, fargs, kwargs + # bfgs needs f, score start, fargs, kwargs + # nm needs "" + # cg "" + # ncg "" + # powell "" + for method in fit_funcs: + func = fit_funcs[method] + if method == "newton": + xopt, retvals = func(dummy_func, dummy_score, [1], (), {}, + hess=dummy_hess, full_output=False, disp=0) + + else: + xopt, retvals = func(dummy_func, dummy_score, [1], (), {}, + full_output=False, disp=0) + assert_(retvals is None) + if method == "powell": + #NOTE: I think I reported this? Might be version/optimize API + # dependent + assert_(xopt.shape == () and xopt.size == 1) + else: + assert_(len(xopt) == 1) + + +def test_full_output(reset_randomstate): + for method in fit_funcs: + func = fit_funcs[method] + if method == "newton": + xopt, retvals = func(dummy_func, dummy_score, [1], (), {}, + hess=dummy_hess, full_output=True, disp=0) + + else: + xopt, retvals = func(dummy_func, dummy_score, [1], (), {}, + full_output=True, disp=0) + + assert_(retvals is not None) + assert_('converged' in retvals) + + if method == "powell": + #NOTE: I think I reported this? Might be version/optimize API + # dependent + assert_(xopt.shape == () and xopt.size == 1) + else: + assert_(len(xopt) == 1) diff --git a/statsmodels/base/tests/test_penalized.py b/statsmodels/base/tests/test_penalized.py new file mode 100644 index 0000000..f519bc6 --- /dev/null +++ b/statsmodels/base/tests/test_penalized.py @@ -0,0 +1,733 @@ +# -*- coding: utf-8 -*- +""" +Created on Sun May 10 12:39:33 2015 + +Author: Josef Perktold +License: BSD-3 +""" + +import warnings + +import pytest +import numpy as np +from numpy.testing import assert_allclose, assert_equal +from statsmodels.discrete.discrete_model import Poisson, Logit, Probit +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod.families import family +from statsmodels.sandbox.regression.penalized import TheilGLS +from statsmodels.base._penalized import PenalizedMixin +import statsmodels.base._penalties as smpen + + +class PoissonPenalized(PenalizedMixin, Poisson): + pass + + +class LogitPenalized(PenalizedMixin, Logit): + pass + + +class ProbitPenalized(PenalizedMixin, Probit): + pass + + +class GLMPenalized(PenalizedMixin, GLM): + pass + + +class CheckPenalizedPoisson(object): + + @classmethod + def setup_class(cls): + # simulate data + np.random.seed(987865) + + nobs, k_vars = 500, 10 + k_nonzero = 4 + x = ((np.random.rand(nobs, k_vars) + + 0.5* (np.random.rand(nobs, 1) - 0.5)) * 2 - 1) + x *= 1.2 + x[:, 0] = 1 + beta = np.zeros(k_vars) + beta[:k_nonzero] = 1. / np.arange(1, k_nonzero + 1) + linpred = x.dot(beta) + y = cls._generate_endog(linpred) + + cls.k_nonzero = k_nonzero + cls.x = x + cls.y = y + + # defaults to be overwritten by subclasses + cls.rtol = 1e-4 + cls.atol = 1e-6 + cls.exog_index = slice(None, None, None) + cls.k_params = k_vars + cls.skip_hessian = False # can be overwritten in _initialize + cls.penalty = smpen.SCADSmoothed(0.1, c0=0.0001) # default for tests + cls._initialize() + + @classmethod + def _generate_endog(self, linpred): + mu = np.exp(linpred) + np.random.seed(999) + y = np.random.poisson(mu) + return y + + def test_params_table(self): + res1 = self.res1 + res2 = self.res2 + assert_equal((res1.params != 0).sum(), self.k_params) + assert_allclose(res1.params[self.exog_index], res2.params, + rtol=self.rtol, atol=self.atol) + assert_allclose(res1.bse[self.exog_index], res2.bse, rtol=self.rtol, + atol=self.atol) + with warnings.catch_warnings(): + # silence scipy distribution warnigns becaus of zero bse + warnings.simplefilter('ignore', RuntimeWarning) + assert_allclose(res1.pvalues[self.exog_index], res2.pvalues, + rtol=self.rtol, atol=self.atol) + assert_allclose(res1.predict(), res2.predict(), rtol=0.05) + + @pytest.mark.smoke + def test_summary(self): + self.res1.summary() + + @pytest.mark.smoke + def test_summary2(self): + summ = self.res1.summary2() + assert isinstance(summ.as_latex(), str) + assert isinstance(summ.as_html(), str) + assert isinstance(summ.as_text(), str) + + def test_numdiff(self): + res1 = self.res1 + + # avoid checking score at MLE, score close to zero + p = res1.params * 0.98 + # GLM concentrates out scale which affects derivatives, see #4616 + kwds = {'scale': 1} if isinstance(res1.model, GLM) else {} + + assert_allclose(res1.model.score(p, **kwds)[self.exog_index], + res1.model.score_numdiff(p, **kwds)[self.exog_index], + rtol=0.025) + + if not self.skip_hessian: + if isinstance(self.exog_index, slice): + idx1 = idx2 = self.exog_index + else: + idx1 = self.exog_index[:, None] + idx2 = self.exog_index + + h1 = res1.model.hessian(res1.params, **kwds)[idx1, idx2] + h2 = res1.model.hessian_numdiff(res1.params, **kwds)[idx1, idx2] + assert_allclose(h1, h2, rtol=0.02) + + +class TestPenalizedPoissonNonePenal(CheckPenalizedPoisson): + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + + modp = Poisson(y, x) + cls.res2 = modp.fit(disp=0) + + mod = PoissonPenalized(y, x) # default no penalty + mod.pen_weight = 0 + cls.res1 = mod.fit(method='bfgs', maxiter=100, disp=0) + + cls.atol = 5e-6 + + +class TestPenalizedPoissonNoPenal(CheckPenalizedPoisson): + # TODO: check, adjust cov_type + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + + modp = Poisson(y, x) + cls.res2 = modp.fit(disp=0) + + mod = PoissonPenalized(y, x) + mod.pen_weight = 0 + cls.res1 = mod.fit(method='bfgs', maxiter=100, disp=0) + + cls.atol = 5e-6 + + +class TestPenalizedGLMPoissonNoPenal(CheckPenalizedPoisson): + # TODO: check, adjust cov_type + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + + modp = GLM(y, x, family=family.Poisson()) + cls.res2 = modp.fit() + + mod = GLMPenalized(y, x, family=family.Poisson(), penal=cls.penalty) + mod.pen_weight = 0 + cls.res1 = mod.fit(method='bfgs', maxiter=100, disp=0) + + cls.atol = 5e-6 + + +class TestPenalizedPoissonOracle(CheckPenalizedPoisson): + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + modp = Poisson(y, x[:, :cls.k_nonzero]) + cls.res2 = modp.fit(disp=0) + + mod = PoissonPenalized(y, x, penal=cls.penalty) + mod.pen_weight *= 1.5 + mod.penal.tau = 0.05 + cls.res1 = mod.fit(method='bfgs', maxiter=100, disp=0) + + cls.exog_index = slice(None, cls.k_nonzero, None) + + cls.atol = 5e-3 + + +class TestPenalizedGLMPoissonOracle(CheckPenalizedPoisson): + # TODO: check, adjust cov_type + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + modp = GLM(y, x[:, :cls.k_nonzero], family=family.Poisson()) + cls.res2 = modp.fit() + + mod = GLMPenalized(y, x, family=family.Poisson(), penal=cls.penalty) + mod.pen_weight *= 1.5 # same as discrete Poisson + mod.penal.tau = 0.05 + cls.res1 = mod.fit(method='bfgs', maxiter=100) + + cls.exog_index = slice(None, cls.k_nonzero, None) + + cls.atol = 5e-3 + + +class TestPenalizedPoissonOracleHC(CheckPenalizedPoisson): + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + cov_type = 'HC0' + modp = Poisson(y, x[:, :cls.k_nonzero]) + cls.res2 = modp.fit(cov_type=cov_type, method='bfgs', maxiter=100, + disp=0) + + mod = PoissonPenalized(y, x, penal=cls.penalty) + mod.pen_weight *= 1.5 + mod.penal.tau = 0.05 + cls.res1 = mod.fit(cov_type=cov_type, method='bfgs', maxiter=100, + disp=0) + + cls.exog_index = slice(None, cls.k_nonzero, None) + + cls.atol = 5e-3 + + def test_cov_type(self): + res1 = self.res1 + res2 = self.res2 + + assert_equal(self.res1.cov_type, 'HC0') + cov_kwds = {'description': 'Standard Errors are heteroscedasticity ' + 'robust (HC0)', + 'adjust_df': False, 'use_t': False, 'scaling_factor': None} + assert_equal(self.res1.cov_kwds, cov_kwds) + # numbers are regression test using bfgs + params = np.array([0.96817787574701109, 0.43674374940137434, + 0.33096260487556745, 0.27415680046693747]) + bse = np.array([0.028126650444581985, 0.033099984564283147, + 0.033184585514904545, 0.034282504130503301]) + assert_allclose(res2.params[:self.k_nonzero], params, atol=1e-5) + assert_allclose(res2.bse[:self.k_nonzero], bse, rtol=1e-6) + assert_allclose(res1.params[:self.k_nonzero], params, atol=self.atol) + assert_allclose(res1.bse[:self.k_nonzero], bse, rtol=0.02) + + +class TestPenalizedGLMPoissonOracleHC(CheckPenalizedPoisson): + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + cov_type = 'HC0' + modp = GLM(y, x[:, :cls.k_nonzero], family=family.Poisson()) + cls.res2 = modp.fit(cov_type=cov_type, method='bfgs', maxiter=100, + disp=0) + + mod = GLMPenalized(y, x, family=family.Poisson(), penal=cls.penalty) + mod.pen_weight *= 1.5 # same as ddiscrete Poisson + mod.penal.tau = 0.05 + cls.res1 = mod.fit(cov_type=cov_type, method='bfgs', maxiter=100, + disp=0) + + cls.exog_index = slice(None, cls.k_nonzero, None) + + cls.atol = 5e-3 + + +class TestPenalizedPoissonGLMOracleHC(CheckPenalizedPoisson): + # compare discrete Poisson and GLM-Poisson + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + cov_type = 'HC0' + modp = PoissonPenalized(y, x, penal=cls.penalty) + modp.pen_weight *= 1.5 # same as discrete Poisson 1.5 + modp.penal.tau = 0.05 + cls.res2 = modp.fit(cov_type=cov_type, method='bfgs', maxiter=100, + disp=0) + + mod = GLMPenalized(y, x, family=family.Poisson(), penal=cls.penalty) + mod.pen_weight *= 1.5 # same as discrete Poisson 1.5 + mod.penal.tau = 0.05 + cls.res1 = mod.fit(cov_type=cov_type, method='bfgs', maxiter=100, + disp=0) + + cls.exog_index = slice(None, None, None) + + cls.atol = 1e-4 + + +class TestPenalizedPoissonOraclePenalized(CheckPenalizedPoisson): + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + modp = PoissonPenalized(y, x[:, :cls.k_nonzero], penal=cls.penalty) + cls.res2 = modp.fit(method='bfgs', maxiter=100, disp=0) + + mod = PoissonPenalized(y, x, penal=cls.penalty) + # mod.pen_weight *= 1.5 + # mod.penal.tau = 0.05 + cls.res1 = mod.fit(method='bfgs', maxiter=100, trim=False, disp=0) + + cls.exog_index = slice(None, cls.k_nonzero, None) + + cls.atol = 1e-3 + + +class TestPenalizedPoissonOraclePenalized2(CheckPenalizedPoisson): + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + modp = PoissonPenalized(y, x[:, :cls.k_nonzero], penal=cls.penalty) + modp.pen_weight *= 10 # need to penalize more to get oracle selection + modp.penal.tau = 0.05 + cls.res2 = modp.fit(method='bfgs', maxiter=100, disp=0) + + mod = PoissonPenalized(y, x, penal=cls.penalty) + mod.pen_weight *= 10 # need to penalize more to get oracle selection + mod.penal.tau = 0.05 + cls.res1 = mod.fit(method='bfgs', maxiter=100, trim=True, disp=0) + + cls.exog_index = slice(None, cls.k_nonzero, None) + + cls.atol = 1e-8 + cls.k_params = cls.k_nonzero + + def test_zeros(self): + + # first test for trimmed result + assert_equal(self.res1.params[self.k_nonzero:], 0) + # we also set bse to zero, TODO: check fit_regularized + assert_equal(self.res1.bse[self.k_nonzero:], 0) + + +class TestPenalizedPoissonOraclePenalized2HC(CheckPenalizedPoisson): + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + cov_type = 'HC0' + modp = PoissonPenalized(y, x[:, :cls.k_nonzero], penal=cls.penalty) + modp.pen_weight *= 10 # need to penalize more to get oracle selection + modp.penal.tau = 0.05 + cls.res2 = modp.fit(cov_type=cov_type, method='bfgs', maxiter=100, + disp=0) + + mod = PoissonPenalized(y, x, penal=cls.penalty) + mod.pen_weight *= 10 # need to penalize more to get oracle selection + mod.penal.tau = 0.05 + cls.res1 = mod.fit(cov_type=cov_type, method='bfgs', maxiter=100, + trim=True, disp=0) + + cls.exog_index = slice(None, cls.k_nonzero, None) + cls.atol = 1e-12 + cls.k_params = cls.k_nonzero + + def test_cov_type(self): + res1 = self.res1 + res2 = self.res2 + + assert_equal(self.res1.cov_type, 'HC0') + assert_equal(self.res1.results_constrained.cov_type, 'HC0') + cov_kwds = {'description': 'Standard Errors are heteroscedasticity ' + 'robust (HC0)', + 'adjust_df': False, 'use_t': False, 'scaling_factor': None} + assert_equal(self.res1.cov_kwds, cov_kwds) + assert_equal(self.res1.cov_kwds, self.res1.results_constrained.cov_kwds) + + # numbers are regression test using bfgs + params = np.array([0.96817787574701109, 0.43674374940137434, + 0.33096260487556745, 0.27415680046693747]) + bse = np.array([0.028126650444581985, 0.033099984564283147, + 0.033184585514904545, 0.034282504130503301]) + assert_allclose(res2.params[:self.k_nonzero], params, atol=1e-5) + assert_allclose(res2.bse[:self.k_nonzero], bse, rtol=5e-6) + assert_allclose(res1.params[:self.k_nonzero], params, atol=1e-5) + assert_allclose(res1.bse[:self.k_nonzero], bse, rtol=5e-6) + + +# the following classes are copies of Poisson with model adjustments + +class CheckPenalizedLogit(CheckPenalizedPoisson): + + @classmethod + def _generate_endog(self, linpred): + mu = 1 / (1 + np.exp(-linpred + linpred.mean() - 0.5)) + np.random.seed(999) + y = np.random.rand(len(mu)) < mu + return y + + +class TestPenalizedLogitNoPenal(CheckPenalizedLogit): + # TODO: check, adjust cov_type + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + + modp = Logit(y, x) + cls.res2 = modp.fit(disp=0) + + mod = LogitPenalized(y, x, penal=cls.penalty) + mod.pen_weight = 0 + cls.res1 = mod.fit(disp=0) + + cls.atol = 1e-4 # why not closer ? + + +class TestPenalizedLogitOracle(CheckPenalizedLogit): + # TODO: check, adjust cov_type + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + modp = Logit(y, x[:, :cls.k_nonzero]) + cls.res2 = modp.fit(disp=0) + + mod = LogitPenalized(y, x, penal=cls.penalty) + mod.pen_weight *= .5 + mod.penal.tau = 0.05 + cls.res1 = mod.fit(method='bfgs', maxiter=100, disp=0) + + cls.exog_index = slice(None, cls.k_nonzero, None) + + cls.atol = 5e-3 + + +class TestPenalizedGLMLogitOracle(CheckPenalizedLogit): + # TODO: check, adjust cov_type + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + modp = GLM(y, x[:, :cls.k_nonzero], family=family.Binomial()) + cls.res2 = modp.fit(disp=0) + + mod = GLMPenalized(y, x, family=family.Binomial(), penal=cls.penalty) + mod.pen_weight *= .5 + mod.penal.tau = 0.05 + cls.res1 = mod.fit(method='bfgs', maxiter=100, disp=0) + + cls.exog_index = slice(None, cls.k_nonzero, None) + + cls.atol = 5e-3 + + +class TestPenalizedLogitOraclePenalized(CheckPenalizedLogit): + # TODO: check, adjust cov_type + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + modp = LogitPenalized(y, x[:, :cls.k_nonzero], penal=cls.penalty) + cls.res2 = modp.fit(method='bfgs', maxiter=100, disp=0) + + mod = LogitPenalized(y, x, penal=cls.penalty) + # mod.pen_weight *= 1.5 + # mod.penal.tau = 0.05 + cls.res1 = mod.fit(method='bfgs', maxiter=100, trim=False, disp=0) + + cls.exog_index = slice(None, cls.k_nonzero, None) + + cls.atol = 1e-3 + + +class TestPenalizedLogitOraclePenalized2(CheckPenalizedLogit): + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + modp = LogitPenalized(y, x[:, :cls.k_nonzero], penal=cls.penalty) + modp.pen_weight *= 0.5 + modp.penal.tau = 0.05 + cls.res2 = modp.fit(method='bfgs', maxiter=100, disp=0) + + mod = LogitPenalized(y, x, penal=cls.penalty) + mod.pen_weight *= 0.5 + mod.penal.tau = 0.05 + cls.res1 = mod.fit(method='bfgs', maxiter=100, trim=True, disp=0) + + cls.exog_index = slice(None, cls.k_nonzero, None) + + cls.atol = 1e-8 + cls.k_params = cls.k_nonzero + + def test_zeros(self): + + # test for trimmed result + assert_equal(self.res1.params[self.k_nonzero:], 0) + # we also set bse to zero + assert_equal(self.res1.bse[self.k_nonzero:], 0) + + +# the following classes are copies of Poisson with model adjustments +class CheckPenalizedBinomCount(CheckPenalizedPoisson): + + @classmethod + def _generate_endog(self, linpred): + mu = 1 / (1 + np.exp(-linpred + linpred.mean() - 0.5)) + np.random.seed(999) + n_trials = 5 * np.ones(len(mu), int) + n_trials[:len(mu)//2] += 5 + y = np.random.binomial(n_trials, mu) + return np.column_stack((y, n_trials - y)) + + +class TestPenalizedGLMBinomCountNoPenal(CheckPenalizedBinomCount): + # TODO: check, adjust cov_type + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + x = x[:, :4] + offset = -0.25 * np.ones(len(y)) # also check offset + modp = GLM(y, x, family=family.Binomial(), offset=offset) + cls.res2 = modp.fit(method='bfgs', max_start_irls=100) + + mod = GLMPenalized(y, x, family=family.Binomial(), offset=offset, + penal=cls.penalty) + mod.pen_weight = 0 + cls.res1 = mod.fit(method='bfgs', max_start_irls=3, maxiter=100, disp=0, + start_params=cls.res2.params*0.9) + + cls.atol = 1e-10 + cls.k_params = 4 + + def test_deriv(self): + res1 = self.res1 + res2 = self.res2 + assert_allclose(res1.model.score(res2.params * 0.98), + res2.model.score(res2.params * 0.98), rtol=1e-10) + assert_allclose(res1.model.score_obs(res2.params * 0.98), + res2.model.score_obs(res2.params * 0.98), rtol=1e-10) + + +class TestPenalizedGLMBinomCountOracleHC(CheckPenalizedBinomCount): + # TODO: There are still problems with this case + # using the standard optimization, I get convergence failures and + # different estimates depending on details, e.g. small changes in pen_weight + # most likely convexity fails with SCAD in this case + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + offset = -0.25 * np.ones(len(y)) # also check offset + cov_type = 'HC0' + modp = GLM(y, x[:, :cls.k_nonzero], family=family.Binomial(), + offset=offset) + cls.res2 = modp.fit(cov_type=cov_type, method='newton', maxiter=1000, + disp=0) + + mod = GLMPenalized(y, x, family=family.Binomial(), offset=offset, + penal=cls.penalty) + mod.pen_weight *= 1 # lower than in other cases + mod.penal.tau = 0.05 + cls.res1 = mod.fit(cov_type=cov_type, method='bfgs', max_start_irls=0, + maxiter=100, disp=0) + + cls.exog_index = slice(None, cls.k_nonzero, None) + + cls.atol = 1e-3 + + +class TestPenalizedGLMBinomCountOracleHC2(CheckPenalizedBinomCount): + # TODO: There are still problems with this case, see other class + # with trimming of small parameters, needs larger trim threshold + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + offset = -0.25 * np.ones(len(y)) # also check offset + cov_type = 'HC0' + modp = GLM(y, x[:, :cls.k_nonzero], family=family.Binomial(), + offset=offset) + cls.res2 = modp.fit(cov_type=cov_type, method='newton', maxiter=1000, + disp=0) + + mod = GLMPenalized(y, x, family=family.Binomial(), offset=offset, + penal=cls.penalty) + mod.pen_weight *= 1 # lower than in other cases + mod.penal.tau = 0.05 + cls.res1 = mod.fit(cov_type=cov_type, method='bfgs', max_start_irls=0, + maxiter=100, disp=0, trim=0.001) + + cls.exog_index = slice(None, cls.k_nonzero, None) + + cls.atol = 1e-3 + cls.k_params = cls.k_nonzero + + +# the following classes are copies of Poisson with model adjustments +class CheckPenalizedGaussian(CheckPenalizedPoisson): + + @classmethod + def _generate_endog(self, linpred): + sig_e = np.sqrt(0.1) + np.random.seed(999) + y = linpred + sig_e * np.random.rand(len(linpred)) + return y + + +class TestPenalizedGLMGaussianOracleHC(CheckPenalizedGaussian): + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + # adding 10 to avoid strict rtol at predicted values close to zero + y = y + 10 + cov_type = 'HC0' + modp = GLM(y, x[:, :cls.k_nonzero], family=family.Gaussian()) + cls.res2 = modp.fit(cov_type=cov_type, method='bfgs', maxiter=100, + disp=0) + + mod = GLMPenalized(y, x, family=family.Gaussian(), penal=cls.penalty) + mod.pen_weight *= 1.5 # same as discrete Poisson + mod.penal.tau = 0.05 + cls.res1 = mod.fit(cov_type=cov_type, method='bfgs', maxiter=100, + disp=0) + + cls.exog_index = slice(None, cls.k_nonzero, None) + + cls.atol = 5e-6 + cls.rtol = 1e-6 + + +class TestPenalizedGLMGaussianOracleHC2(CheckPenalizedGaussian): + # with trimming + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + # adding 10 to avoid strict rtol at predicted values close to zero + y = y + 10 + cov_type = 'HC0' + modp = GLM(y, x[:, :cls.k_nonzero], family=family.Gaussian()) + cls.res2 = modp.fit(cov_type=cov_type, method='bfgs', maxiter=100, + disp=0) + + mod = GLMPenalized(y, x, family=family.Gaussian(), penal=cls.penalty) + mod.pen_weight *= 1.5 # same as discrete Poisson + mod.penal.tau = 0.05 + cls.res1 = mod.fit(cov_type=cov_type, method='bfgs', maxiter=100, + disp=0, trim=True) + + cls.exog_index = slice(None, cls.k_nonzero, None) + cls.k_params = cls.k_nonzero + cls.atol = 1e-5 + cls.rtol = 1e-5 + + +class TestPenalizedGLMGaussianL2(CheckPenalizedGaussian): + # L2 penalty on redundant exog + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + # adding 10 to avoid strict rtol at predicted values close to zero + y = y + 10 + cov_type = 'HC0' + modp = GLM(y, x[:, :cls.k_nonzero], family=family.Gaussian()) + cls.res2 = modp.fit(cov_type=cov_type, method='bfgs', maxiter=100, + disp=0) + + weights = (np.arange(x.shape[1]) >= 4).astype(float) + mod = GLMPenalized(y, x, family=family.Gaussian(), + penal=smpen.L2ContraintsPenalty(weights=weights)) + # make pen_weight large to force redundant to close to zero + mod.pen_weight *= 500 + cls.res1 = mod.fit(cov_type=cov_type, method='bfgs', maxiter=100, + disp=0, trim=False) + + cls.exog_index = slice(None, cls.k_nonzero, None) + cls.k_params = x.shape[1] + cls.atol = 1e-5 + cls.rtol = 1e-5 + + +class TestPenalizedGLMGaussianL2Theil(CheckPenalizedGaussian): + # L2 penalty on redundant exog + + @classmethod + def _initialize(cls): + y, x = cls.y, cls.x + # adding 10 to avoid strict rtol at predicted values close to zero + y = y + 10 + k = x.shape[1] + cov_type = 'HC0' + restriction = np.eye(k)[2:] + modp = TheilGLS(y, x, r_matrix=restriction) + # the corresponding Theil penweight seems to be 2 * nobs / sigma2_e + cls.res2 = modp.fit(pen_weight=120.74564413221599 * 1000, use_t=False) + + pen = smpen.L2ContraintsPenalty(restriction=restriction) + mod = GLMPenalized(y, x, family=family.Gaussian(), + penal=pen) + # use default weight for GLMPenalized + mod.pen_weight *= 1 + cls.res1 = mod.fit(cov_type=cov_type, method='bfgs', maxiter=100, + disp=0, trim=False) + + cls.k_nonzero = k + cls.exog_index = slice(None, cls.k_nonzero, None) + cls.k_params = x.shape[1] + cls.atol = 1e-5 + cls.rtol = 1e-5 + + def test_params_table(self): + # override inherited because match is not good except for params and predict + # The cov_type in GLMPenalized and in TheilGLS are not the same + # both use sandwiches but TheilGLS sandwich is not HC + # relative difference in bse up to 7% + res1 = self.res1 + res2 = self.res2 + assert_equal((res1.params != 0).sum(), self.k_params) + assert_allclose(res1.params, res2.params, rtol=self.rtol, + atol=self.atol) + + exog_index = slice(None, None, None) + assert_allclose(res1.bse[exog_index], res2.bse[exog_index], + rtol=0.1, atol=self.atol) + assert_allclose(res1.tvalues[exog_index], res2.tvalues[exog_index], + rtol=0.08, atol=5e-3) + assert_allclose(res1.pvalues[exog_index], res2.pvalues[exog_index], + rtol=0.1, atol=5e-3) + assert_allclose(res1.predict(), res2.predict(), rtol=1e-5) diff --git a/statsmodels/base/tests/test_penalties.py b/statsmodels/base/tests/test_penalties.py new file mode 100644 index 0000000..d1c9c31 --- /dev/null +++ b/statsmodels/base/tests/test_penalties.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +""" +Created on Wed May 16 22:21:26 2018 + +Author: Josef Perktold +License: BSD-3 +""" + +import numpy as np +from numpy.testing import assert_allclose, assert_equal + +import pytest + +import statsmodels.base._penalties as smpen +from statsmodels.tools.numdiff import approx_fprime, approx_hess + + + + +class CheckPenalty(object): + + def test_symmetry(self): + pen = self.pen + x = self.params + + p = np.array([pen.func(np.atleast_1d(xi)) for xi in x]) + assert_allclose(p, p[::-1], rtol=1e-10) + # func(0) should be 0 + assert_allclose(pen.func(0 * np.atleast_1d(x[0])), 0, rtol=1e-10) + + def test_derivatives(self): + pen = self.pen + x = self.params + + ps = np.array([pen.deriv(np.atleast_1d(xi)) for xi in x]) + psn = np.array([approx_fprime(np.atleast_1d(xi), pen.func) for xi in x]) + assert_allclose(ps, psn, rtol=1e-7, atol=1e-8) + + ph = np.array([pen.deriv2(np.atleast_1d(xi)) for xi in x]) + phn = np.array([approx_hess(np.atleast_1d(xi), pen.func) for xi in x]) + if ph.ndim == 2: + # SmoothedSCAD returns only diagonal if hessian if independent + # TODO should ww allow this also in L@? + ph = np.array([np.diag(phi) for phi in ph]) + assert_allclose(ph, phn, rtol=1e-7, atol=1e-8) + + +class TestL2Constraints0(CheckPenalty): + + @classmethod + def setup_class(cls): + x0 = np.linspace(-0.2, 0.2, 11) + cls.params = np.column_stack((x0, x0)) + cls.pen = smpen.L2ContraintsPenalty() + + def test_equivalence(self): + # compare plain penalty with included weights or restriction + pen = self.pen + x = self.params + k = x.shape[1] + + pen2 = smpen.L2ContraintsPenalty(weights=np.ones(k)) + pen3 = smpen.L2ContraintsPenalty(restriction=np.eye(k)) + f = pen.func(x.T) + d = pen.deriv(x.T) + d2 = np.array([pen.deriv2(np.atleast_1d(xi)) for xi in x]) + for pen_ in [pen2, pen3]: + assert_allclose(pen_.func(x.T), f, rtol=1e-7, atol=1e-8) + assert_allclose(pen_.deriv(x.T), d, rtol=1e-7, atol=1e-8) + d2_ = np.array([pen.deriv2(np.atleast_1d(xi)) for xi in x]) + assert_allclose(d2_, d2, rtol=1e-10, atol=1e-8) + + +class TestL2Constraints1(CheckPenalty): + + @classmethod + def setup_class(cls): + x0 = np.linspace(-0.2, 0.2, 11) + cls.params = np.column_stack((x0, x0)) + cls.pen = smpen.L2ContraintsPenalty(restriction=[[1,0], [1, 1]]) + + def test_values(self): + pen = self.pen + x = self.params + r = pen.restriction + f = (r.dot(x.T)**2).sum(0) + assert_allclose(pen.func(x.T), f, rtol=1e-7, atol=1e-8) + + +class TestSmoothedSCAD(CheckPenalty): + + @classmethod + def setup_class(cls): + x0 = np.linspace(-0.2, 0.2, 11) + cls.params = np.column_stack((x0, x0)) + cls.pen = smpen.SCADSmoothed(tau=0.05, c0=0.05) + + +class TestPseudoHuber(CheckPenalty): + + @classmethod + def setup_class(cls): + x0 = np.linspace(-0.2, 0.2, 11) + cls.params = np.column_stack((x0, x0)) + cls.pen = smpen.PseudoHuber(0.1) + + def test_backward_compatibility(self): + wts = [0.5] + with pytest.deprecated_call(): + pen = smpen.PseudoHuber(0.1, wts=wts) + assert_equal(pen.weights, wts) + + def test_deprecated_priority(self): + weights = [1.0] + wts = [0.5] + with pytest.deprecated_call(): + pen = smpen.PseudoHuber(0.1, weights=weights, wts=wts) + assert_equal(pen.weights, weights) + + def test_weights_assignment(self): + weights = [1.0, 2.0] + pen = smpen.PseudoHuber(0.1, weights=weights) + assert_equal(pen.weights, weights) + + +class TestL2(CheckPenalty): + + @classmethod + def setup_class(cls): + x0 = np.linspace(-0.2, 0.2, 11) + cls.params = np.column_stack((x0, x0)) + cls.pen = smpen.L2() + + def test_backward_compatibility(self): + wts = [0.5] + with pytest.deprecated_call(): + pen = smpen.L2(wts=wts) + assert_equal(pen.weights, wts) + + def test_deprecated_priority(self): + weights = [1.0] + wts = [0.5] + with pytest.deprecated_call(): + pen = smpen.L2(weights=weights, wts=wts) + assert_equal(pen.weights, weights) + + def test_weights_assignment(self): + weights = [1.0, 2.0] + pen = smpen.L2(weights=weights) + assert_equal(pen.weights, weights) + + +class TestNonePenalty(CheckPenalty): + + @classmethod + def setup_class(cls): + x0 = np.linspace(-0.2, 0.2, 11) + cls.params = np.column_stack((x0, x0)) + cls.pen = smpen.NonePenalty() diff --git a/statsmodels/base/tests/test_predict.py b/statsmodels/base/tests/test_predict.py new file mode 100644 index 0000000..aa18856 --- /dev/null +++ b/statsmodels/base/tests/test_predict.py @@ -0,0 +1,153 @@ +# -*- coding: utf-8 -*- +""" +Tests for Results.predict +""" +from statsmodels.compat.pandas import testing as pdt + +import numpy as np +import pandas as pd + +from numpy.testing import assert_allclose, assert_equal + +from statsmodels.regression.linear_model import OLS +from statsmodels.genmod.generalized_linear_model import GLM + + +class CheckPredictReturns(object): + + def test_2d(self): + res = self.res + data = self.data + + fitted = res.fittedvalues.iloc[1:10:2] + + pred = res.predict(data.iloc[1:10:2]) + pdt.assert_index_equal(pred.index, fitted.index) + assert_allclose(pred.values, fitted.values, rtol=1e-13) + + # plain dict + xd = dict(zip(data.columns, data.iloc[1:10:2].values.T)) + pred = res.predict(xd) + assert_equal(pred.index, np.arange(len(pred))) + assert_allclose(pred.values, fitted.values, rtol=1e-13) + + def test_1d(self): + # one observation + res = self.res + data = self.data + + pred = res.predict(data.iloc[:1]) + pdt.assert_index_equal(pred.index, data.iloc[:1].index) + assert_allclose(pred.values, res.fittedvalues[0], rtol=1e-13) + + fittedm = res.fittedvalues.mean() + xmean = data.mean() + pred = res.predict(xmean.to_frame().T) + assert_equal(pred.index, np.arange(1)) + assert_allclose(pred, fittedm, rtol=1e-13) + + # Series + pred = res.predict(data.mean()) + assert_equal(pred.index, np.arange(1)) + assert_allclose(pred.values, fittedm, rtol=1e-13) + + # dict with scalar value (is plain dict) + # Note: this warns about dropped nan, even though there are None -FIXED + pred = res.predict(data.mean().to_dict()) + assert_equal(pred.index, np.arange(1)) + assert_allclose(pred.values, fittedm, rtol=1e-13) + + def test_nopatsy(self): + res = self.res + data = self.data + fitted = res.fittedvalues.iloc[1:10:2] + + # plain numpy array + pred = res.predict(res.model.exog[1:10:2], transform=False) + assert_allclose(pred, fitted.values, rtol=1e-13) + + # pandas DataFrame + x = pd.DataFrame(res.model.exog[1:10:2], + index = data.index[1:10:2], + columns=res.model.exog_names) + pred = res.predict(x) + pdt.assert_index_equal(pred.index, fitted.index) + assert_allclose(pred.values, fitted.values, rtol=1e-13) + + # one observation - 1-D + pred = res.predict(res.model.exog[1], transform=False) + assert_allclose(pred, fitted.values[0], rtol=1e-13) + + # one observation - pd.Series + pred = res.predict(x.iloc[0]) + pdt.assert_index_equal(pred.index, fitted.index[:1]) + assert_allclose(pred.values[0], fitted.values[0], rtol=1e-13) + + +class TestPredictOLS(CheckPredictReturns): + + @classmethod + def setup_class(cls): + nobs = 30 + np.random.seed(987128) + x = np.random.randn(nobs, 3) + y = x.sum(1) + np.random.randn(nobs) + index = ['obs%02d' % i for i in range(nobs)] + # add one extra column to check that it doesn't matter + cls.data = pd.DataFrame(np.round(np.column_stack((y, x)), 4), + columns='y var1 var2 var3'.split(), + index=index) + + cls.res = OLS.from_formula('y ~ var1 + var2', data=cls.data).fit() + + +class TestPredictGLM(CheckPredictReturns): + + @classmethod + def setup_class(cls): + nobs = 30 + np.random.seed(987128) + x = np.random.randn(nobs, 3) + y = x.sum(1) + np.random.randn(nobs) + index = ['obs%02d' % i for i in range(nobs)] + # add one extra column to check that it doesn't matter + cls.data = pd.DataFrame(np.round(np.column_stack((y, x)), 4), + columns='y var1 var2 var3'.split(), + index=index) + + cls.res = GLM.from_formula('y ~ var1 + var2', data=cls.data).fit() + + def test_predict_offset(self): + res = self.res + data = self.data + + fitted = res.fittedvalues.iloc[1:10:2] + offset = np.arange(len(fitted)) + fitted = fitted + offset + + pred = res.predict(data.iloc[1:10:2], offset=offset) + pdt.assert_index_equal(pred.index, fitted.index) + assert_allclose(pred.values, fitted.values, rtol=1e-13) + + # plain dict + xd = dict(zip(data.columns, data.iloc[1:10:2].values.T)) + pred = res.predict(xd, offset=offset) + assert_equal(pred.index, np.arange(len(pred))) + assert_allclose(pred.values, fitted.values, rtol=1e-13) + + # offset as pandas.Series + data2 = data.iloc[1:10:2].copy() + data2['offset'] = offset + pred = res.predict(data2, offset=data2['offset']) + pdt.assert_index_equal(pred.index, fitted.index) + assert_allclose(pred.values, fitted.values, rtol=1e-13) + + # check nan in exog is ok, preserves index matching offset length + data2 = data.iloc[1:10:2].copy() + data2['offset'] = offset + data2.iloc[0, 1] = np.nan + pred = res.predict(data2, offset=data2['offset']) + pdt.assert_index_equal(pred.index, fitted.index) + fitted_nan = fitted.copy() + fitted_nan[0] = np.nan + assert_allclose(pred.values, fitted_nan.values, rtol=1e-13) diff --git a/statsmodels/base/tests/test_screening.py b/statsmodels/base/tests/test_screening.py new file mode 100644 index 0000000..954e964 --- /dev/null +++ b/statsmodels/base/tests/test_screening.py @@ -0,0 +1,353 @@ +# -*- coding: utf-8 -*- +""" +Created on Wed May 23 12:53:27 2018 + +Author: Josef Perktold + +""" + +import numpy as np +from numpy.testing import assert_allclose, assert_equal +import pandas as pd + +from statsmodels.discrete.discrete_model import Poisson, Logit +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod.families import family +from statsmodels.base._penalized import PenalizedMixin +from statsmodels.base._screening import VariableScreening + + +class PoissonPenalized(PenalizedMixin, Poisson): + pass + + +class LogitPenalized(PenalizedMixin, Logit): + pass + + +class GLMPenalized(PenalizedMixin, GLM): + pass + + +def _get_poisson_data(): + np.random.seed(987865) + + nobs, k_vars = 100, 500 + k_nonzero = 5 + x = (np.random.rand(nobs, k_vars) + + 1. * (np.random.rand(nobs, 1) - 0.5)) * 2 - 1 + x *= 1.2 + + x = (x - x.mean(0)) / x.std(0) + x[:, 0] = 1 + beta = np.zeros(k_vars) + idx_nonzero_true = [0, 100, 300, 400, 411] + beta[idx_nonzero_true] = 1. / np.arange(1, k_nonzero + 1) + beta = np.sqrt(beta) # make small coefficients larger + linpred = x.dot(beta) + mu = np.exp(linpred) + y = np.random.poisson(mu) + return y, x, idx_nonzero_true, beta + + +def test_poisson_screening(): + + np.random.seed(987865) + + y, x, idx_nonzero_true, beta = _get_poisson_data() + nobs = len(y) + + xnames_true = ['var%4d' % ii for ii in idx_nonzero_true] + xnames_true[0] = 'const' + parameters = pd.DataFrame(beta[idx_nonzero_true], index=xnames_true, + columns=['true']) + + xframe_true = pd.DataFrame(x[:, idx_nonzero_true], columns=xnames_true) + res_oracle = Poisson(y, xframe_true).fit() + parameters['oracle'] = res_oracle.params + + mod_initial = PoissonPenalized(y, np.ones(nobs), pen_weight=nobs * 5) + + screener = VariableScreening(mod_initial) + exog_candidates = x[:, 1:] + res_screen = screener.screen_exog(exog_candidates, maxiter=10) + + assert_equal(np.sort(res_screen.idx_nonzero), idx_nonzero_true) + + xnames = ['var%4d' % ii for ii in res_screen.idx_nonzero] + xnames[0] = 'const' + + # smoke test + res_screen.results_final.summary(xname=xnames) + res_screen.results_pen.summary() + assert_equal(res_screen.results_final.mle_retvals['converged'], True) + + ps = pd.Series(res_screen.results_final.params, index=xnames, name='final') + parameters = parameters.join(ps, how='outer') + + assert_allclose(parameters['oracle'], parameters['final'], atol=5e-6) + + +def test_screen_iterated(): + np.random.seed(987865) + + nobs, k_nonzero = 100, 5 + + x = (np.random.rand(nobs, k_nonzero - 1) + + 1.* (np.random.rand(nobs, 1) - 0.5)) * 2 - 1 + x *= 1.2 + x = (x - x.mean(0)) / x.std(0) + x = np.column_stack((np.ones(nobs), x)) + + beta = 1. / np.arange(1, k_nonzero + 1) + beta = np.sqrt(beta) # make small coefficients larger + linpred = x.dot(beta) + mu = np.exp(linpred) + y = np.random.poisson(mu) + + common = x[:, 1:].sum(1)[:, None] + + x_nonzero = x + + def exog_iterator(): + k_vars = 100 + + n_batches = 6 + for i in range(n_batches): + x = (0.05 * common + np.random.rand(nobs, k_vars) + + 1.* (np.random.rand(nobs, 1) - 0.5)) * 2 - 1 + x *= 1.2 + if i < k_nonzero - 1: + # hide a nonezero + x[:, 10] = x_nonzero[:, i + 1] + x = (x - x.mean(0)) / x.std(0) + yield x + + dummy = np.ones(nobs) + dummy[:nobs // 2] = 0 + exog_keep = np.column_stack((np.ones(nobs), dummy)) + for k in [1, 2]: + mod_initial = PoissonPenalized(y, exog_keep[:, :k], pen_weight=nobs * 500) + screener = VariableScreening(mod_initial) + screener.k_max_add = 30 + + final = screener.screen_exog_iterator(exog_iterator()) + names = ['var0_10', 'var1_10', 'var2_10', 'var3_10'] + assert_equal(final.exog_final_names, names) + idx_full = np.array([[ 0, 10], + [ 1, 10], + [ 2, 10], + [ 3, 10]], dtype=np.int64) + assert_equal(final.idx_nonzero_batches, idx_full) + + +def test_glmpoisson_screening(): + + y, x, idx_nonzero_true, beta = _get_poisson_data() + nobs = len(y) + + xnames_true = ['var%4d' % ii for ii in idx_nonzero_true] + xnames_true[0] = 'const' + parameters = pd.DataFrame(beta[idx_nonzero_true], index=xnames_true, columns=['true']) + + xframe_true = pd.DataFrame(x[:, idx_nonzero_true], columns=xnames_true) + res_oracle = GLMPenalized(y, xframe_true, family=family.Poisson()).fit() + parameters['oracle'] = res_oracle.params + + mod_initial = GLMPenalized(y, np.ones(nobs), family=family.Poisson()) + + screener = VariableScreening(mod_initial) + exog_candidates = x[:, 1:] + res_screen = screener.screen_exog(exog_candidates, maxiter=10) + + assert_equal(np.sort(res_screen.idx_nonzero), idx_nonzero_true) + + xnames = ['var%4d' % ii for ii in res_screen.idx_nonzero] + xnames[0] = 'const' + + # smoke test + res_screen.results_final.summary(xname=xnames) + res_screen.results_pen.summary() + assert_equal(res_screen.results_final.mle_retvals['converged'], True) + + ps = pd.Series(res_screen.results_final.params, index=xnames, name='final') + parameters = parameters.join(ps, how='outer') + + assert_allclose(parameters['oracle'], parameters['final'], atol=5e-6) + + +def _get_logit_data(): + np.random.seed(987865) + + nobs, k_vars = 300, 500 + k_nonzero = 5 + x = (np.random.rand(nobs, k_vars) + + 0.01 * (np.random.rand(nobs, 1) - 0.5)) * 2 - 1 + x *= 1.2 + + x = (x - x.mean(0)) / x.std(0) + x[:, 0] = 1 + beta = np.zeros(k_vars) + idx_nonzero_true = [0, 100, 300, 400, 411] + beta[idx_nonzero_true] = 1. / np.arange(1, k_nonzero + 1)**0.5 + beta = np.sqrt(beta) # make small coefficients larger + linpred = x.dot(beta) + mu = 1 / (1 + np.exp(-linpred)) + y = (np.random.rand(len(mu)) < mu).astype(int) + return y, x, idx_nonzero_true, beta + + +def test_logit_screening(): + + y, x, idx_nonzero_true, beta = _get_logit_data() + nobs = len(y) + # test uses + screener_kwds = dict(pen_weight=nobs * 0.7, threshold_trim=1e-3) + + xnames_true = ['var%4d' % ii for ii in idx_nonzero_true] + xnames_true[0] = 'const' + parameters = pd.DataFrame(beta[idx_nonzero_true], index=xnames_true, + columns=['true']) + + xframe_true = pd.DataFrame(x[:, idx_nonzero_true], columns=xnames_true) + res_oracle = Logit(y, xframe_true).fit() + parameters['oracle'] = res_oracle.params + + mod_initial = LogitPenalized(y, np.ones(nobs), pen_weight=nobs * 0.5) + screener = VariableScreening(mod_initial, **screener_kwds) + screener.k_max_add = 30 + exog_candidates = x[:, 1:] + res_screen = screener.screen_exog(exog_candidates, maxiter=30) + + # we have extra variables, check index for larger params + mask = np.abs(res_screen.results_final.params) > 0.1 + assert_equal(np.sort(res_screen.idx_nonzero[mask]), idx_nonzero_true) + # regression test + idx_r = np.array([0, 74, 100, 163, 300, 400, 411]) + assert_equal(np.sort(res_screen.idx_nonzero), idx_r) + + xnames = ['var%4d' % ii for ii in res_screen.idx_nonzero] + xnames[0] = 'const' + + # smoke test + res_screen.results_final.summary(xname=xnames) + res_screen.results_pen.summary() + assert_equal(res_screen.results_final.mle_retvals['converged'], True) + + ps = pd.Series(res_screen.results_final.params, index=xnames, name='final') + # changed the following to allow for some extra params + # parameters = parameters.join(ps, how='outer') + parameters['final'] = ps + + assert_allclose(parameters['oracle'], parameters['final'], atol=0.005) + + +def test_glmlogit_screening(): + + y, x, idx_nonzero_true, beta = _get_logit_data() + nobs = len(y) + + # test uses + screener_kwds = dict(pen_weight=nobs * 0.75, threshold_trim=1e-3, + ranking_attr='model.score_factor') + + xnames_true = ['var%4d' % ii for ii in idx_nonzero_true] + xnames_true[0] = 'const' + parameters = pd.DataFrame(beta[idx_nonzero_true], index=xnames_true, + columns=['true']) + + xframe_true = pd.DataFrame(x[:, idx_nonzero_true], columns=xnames_true) + res_oracle = GLMPenalized(y, xframe_true, family=family.Binomial()).fit() + parameters['oracle'] = res_oracle.params + + #mod_initial = LogitPenalized(y, np.ones(nobs), pen_weight=nobs * 0.5) + mod_initial = GLMPenalized(y, np.ones(nobs), family=family.Binomial()) + + screener = VariableScreening(mod_initial, **screener_kwds) + screener.k_max_add = 10 + exog_candidates = x[:, 1:] + res_screen = screener.screen_exog(exog_candidates, maxiter=30) + + res_screen.idx_nonzero + + res_screen.results_final + + xnames = ['var%4d' % ii for ii in res_screen.idx_nonzero] + xnames[0] = 'const' + + # smoke test + res_screen.results_final.summary(xname=xnames) + res_screen.results_pen.summary() + assert_equal(res_screen.results_final.mle_retvals['converged'], True) + + ps = pd.Series(res_screen.results_final.params, index=xnames, name='final') + # changed the following to allow for some extra params + # parameters = parameters.join(ps, how='outer') + parameters['final'] = ps + + assert_allclose(parameters['oracle'], parameters['final'], atol=0.005) + + +def _get_gaussian_data(): + np.random.seed(987865) + + nobs, k_vars = 100, 500 + k_nonzero = 5 + x = (np.random.rand(nobs, k_vars) + + 0.01 * (np.random.rand(nobs, 1) - 0.5)) * 2 - 1 + x *= 1.2 + + x = (x - x.mean(0)) / x.std(0) + x[:, 0] = 1 # make first column into constant + beta = np.zeros(k_vars) + idx_nonzero_true = [0, 1, 300, 400, 411] + beta[idx_nonzero_true] = 1. / np.arange(1, k_nonzero + 1) + beta = np.sqrt(beta) # make small coefficients larger + linpred = x.dot(beta) + y = linpred + 0.1 * np.random.randn(len(linpred)) + + return y, x, idx_nonzero_true, beta + + +def test_glmgaussian_screening(): + + y, x, idx_nonzero_true, beta = _get_gaussian_data() + nobs = len(y) + # demeaning makes constant zero, checks that exog_keep are not trimmed + y = y - y.mean(0) + + # test uses + screener_kwds = dict(pen_weight=nobs * 0.75, threshold_trim=1e-3, + ranking_attr='model.score_factor') + + xnames_true = ['var%4d' % ii for ii in idx_nonzero_true] + xnames_true[0] = 'const' + parameters = pd.DataFrame(beta[idx_nonzero_true], index=xnames_true, + columns=['true']) + + xframe_true = pd.DataFrame(x[:, idx_nonzero_true], columns=xnames_true) + res_oracle = GLMPenalized(y, xframe_true, family=family.Gaussian()).fit() + parameters['oracle'] = res_oracle.params + + for k_keep in [1, 2]: + mod_initial = GLMPenalized(y, x[:, :k_keep], family=family.Gaussian()) + screener = VariableScreening(mod_initial, **screener_kwds) + exog_candidates = x[:, k_keep:] + res_screen = screener.screen_exog(exog_candidates, maxiter=30) + + assert_equal(np.sort(res_screen.idx_nonzero), idx_nonzero_true) + + xnames = ['var%4d' % ii for ii in res_screen.idx_nonzero] + xnames[0] = 'const' + + # smoke test + res_screen.results_final.summary(xname=xnames) + res_screen.results_pen.summary() + assert_equal(res_screen.results_final.mle_retvals['converged'], True) + + ps = pd.Series(res_screen.results_final.params, index=xnames, name='final') + parameters = parameters.join(ps, how='outer') + + assert_allclose(parameters['oracle'], parameters['final'], atol=1e-5) + # we need to remove 'final' again for next iteration + del parameters['final'] diff --git a/statsmodels/base/tests/test_shrink_pickle.py b/statsmodels/base/tests/test_shrink_pickle.py new file mode 100644 index 0000000..f8a7f3e --- /dev/null +++ b/statsmodels/base/tests/test_shrink_pickle.py @@ -0,0 +1,287 @@ +# -*- coding: utf-8 -*- +""" + +Created on Fri Mar 09 16:00:27 2012 + +Author: Josef Perktold +""" +from __future__ import print_function +from statsmodels.compat.python import iterkeys, cPickle, BytesIO + +import warnings + +import numpy as np +from numpy.testing import assert_ +import pandas as pd + +import statsmodels.api as sm + + +def check_pickle(obj): + fh = BytesIO() + cPickle.dump(obj, fh, protocol=cPickle.HIGHEST_PROTOCOL) + plen = fh.tell() + fh.seek(0, 0) + res = cPickle.load(fh) + fh.close() + return res, plen + + +class RemoveDataPickle(object): + + @classmethod + def setup_class(cls): + nobs = 10000 + np.random.seed(987689) + x = np.random.randn(nobs, 3) + x = sm.add_constant(x) + cls.exog = x + cls.xf = 0.25 * np.ones((2, 4)) + cls.nbytes_max = 20000 + cls.predict_kwds = {} + + def test_remove_data_pickle(self): + import pandas as pd + from pandas.util.testing import assert_series_equal + + results = self.results + xf = self.xf + pred_kwds = self.predict_kwds + pred1 = results.predict(xf, **pred_kwds) + #create some cached attributes + results.summary() + res = results.summary2() # SMOKE test also summary2 + + # uncomment the following to check whether tests run (7 failures now) + #np.testing.assert_equal(res, 1) + + #check pickle unpickle works on full results + #TODO: drop of load save is tested + res, _ = check_pickle(results._results) + + #remove data arrays, check predict still works + with warnings.catch_warnings(record=True) as w: + results.remove_data() + + pred2 = results.predict(xf, **pred_kwds) + + if isinstance(pred1, pd.Series) and isinstance(pred2, pd.Series): + assert_series_equal(pred1, pred2) + elif isinstance(pred1, pd.DataFrame) and isinstance(pred2, pd.DataFrame): + assert_(pred1.equals(pred2)) + else: + np.testing.assert_equal(pred2, pred1) + + # pickle and unpickle reduced array + res, nbytes = check_pickle(results._results) + + #for testing attach res + self.res = res + + # Note: nbytes_max is just a guess for the limit on the length + # of the pickle + nbytes_max = self.nbytes_max + assert_(nbytes < nbytes_max, + msg='pickle length not %d < %d' % (nbytes, nbytes_max)) + + pred3 = results.predict(xf, **pred_kwds) + + if isinstance(pred1, pd.Series) and isinstance(pred3, pd.Series): + assert_series_equal(pred1, pred3) + elif isinstance(pred1, pd.DataFrame) and isinstance(pred3, pd.DataFrame): + assert_(pred1.equals(pred3)) + else: + np.testing.assert_equal(pred3, pred1) + + def test_remove_data_docstring(self): + assert_(self.results.remove_data.__doc__ is not None) + + def test_pickle_wrapper(self): + + fh = BytesIO() # use cPickle with binary content + + # test unwrapped results load save pickle + self.results._results.save(fh) + fh.seek(0, 0) + res_unpickled = self.results._results.__class__.load(fh) + assert type(res_unpickled) is type(self.results._results) # noqa: E721 + + # test wrapped results load save + fh.seek(0, 0) + self.results.save(fh) + fh.seek(0, 0) + res_unpickled = self.results.__class__.load(fh) + fh.close() + assert type(res_unpickled) is type(self.results) # noqa: E721 + + before = sorted(iterkeys(self.results.__dict__)) + after = sorted(iterkeys(res_unpickled.__dict__)) + assert_(before == after, msg='not equal %r and %r' % (before, after)) + + before = sorted(iterkeys(self.results._results.__dict__)) + after = sorted(iterkeys(res_unpickled._results.__dict__)) + assert_(before == after, msg='not equal %r and %r' % (before, after)) + + before = sorted(iterkeys(self.results.model.__dict__)) + after = sorted(iterkeys(res_unpickled.model.__dict__)) + assert_(before == after, msg='not equal %r and %r' % (before, after)) + + before = sorted(iterkeys(self.results._cache)) + after = sorted(iterkeys(res_unpickled._cache)) + assert_(before == after, msg='not equal %r and %r' % (before, after)) + + +class TestRemoveDataPickleOLS(RemoveDataPickle): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + np.random.seed(987689) + y = x.sum(1) + np.random.randn(x.shape[0]) + self.results = sm.OLS(y, self.exog).fit() + + +class TestRemoveDataPickleWLS(RemoveDataPickle): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + np.random.seed(987689) + y = x.sum(1) + np.random.randn(x.shape[0]) + self.results = sm.WLS(y, self.exog, weights=np.ones(len(y))).fit() + + +class TestRemoveDataPicklePoisson(RemoveDataPickle): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + np.random.seed(987689) + y_count = np.random.poisson(np.exp(x.sum(1) - x.mean())) + model = sm.Poisson(y_count, x) #, exposure=np.ones(nobs), offset=np.zeros(nobs)) #bug with default + # use start_params to converge faster + start_params = np.array([0.75334818, 0.99425553, 1.00494724, 1.00247112]) + self.results = model.fit(start_params=start_params, method='bfgs', + disp=0) + + #TODO: temporary, fixed in master + self.predict_kwds = dict(exposure=1, offset=0) + + +class TestRemoveDataPickleNegativeBinomial(RemoveDataPickle): + + def setup(self): + #fit for each test, because results will be changed by test + np.random.seed(987689) + data = sm.datasets.randhie.load(as_pandas=False) + exog = sm.add_constant(data.exog, prepend=False) + mod = sm.NegativeBinomial(data.endog, data.exog) + self.results = mod.fit(disp=0) + + +class TestRemoveDataPickleLogit(RemoveDataPickle): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + nobs = x.shape[0] + np.random.seed(987689) + y_bin = (np.random.rand(nobs) < 1.0 / (1 + np.exp(x.sum(1) - x.mean()))).astype(int) + model = sm.Logit(y_bin, x) #, exposure=np.ones(nobs), offset=np.zeros(nobs)) #bug with default + # use start_params to converge faster + start_params = np.array([-0.73403806, -1.00901514, -0.97754543, -0.95648212]) + self.results = model.fit(start_params=start_params, method='bfgs', disp=0) + + +class TestRemoveDataPickleRLM(RemoveDataPickle): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + np.random.seed(987689) + y = x.sum(1) + np.random.randn(x.shape[0]) + self.results = sm.RLM(y, self.exog).fit() + + +class TestRemoveDataPickleGLM(RemoveDataPickle): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + np.random.seed(987689) + y = x.sum(1) + np.random.randn(x.shape[0]) + self.results = sm.GLM(y, self.exog).fit() + + +class TestPickleFormula(RemoveDataPickle): + @classmethod + def setup_class(cls): + super(TestPickleFormula, cls).setup_class() + nobs = 10000 + np.random.seed(987689) + x = np.random.randn(nobs, 3) + cls.exog = pd.DataFrame(x, columns=["A", "B", "C"]) + cls.xf = pd.DataFrame(0.25 * np.ones((2, 3)), + columns=cls.exog.columns) + cls.nbytes_max = 900000 # have to pickle endo/exog to unpickle form. + + def setup(self): + x = self.exog + np.random.seed(123) + y = x.sum(1) + np.random.randn(x.shape[0]) + y = pd.Series(y, name="Y") + X = self.exog.copy() + X["Y"] = y + self.results = sm.OLS.from_formula("Y ~ A + B + C", data=X).fit() + + +class TestPickleFormula2(RemoveDataPickle): + @classmethod + def setup_class(cls): + super(TestPickleFormula2, cls).setup_class() + nobs = 500 + np.random.seed(987689) + data = np.random.randn(nobs, 4) + data[:,0] = data[:, 1:].sum(1) + cls.data = pd.DataFrame(data, columns=["Y", "A", "B", "C"]) + cls.xf = pd.DataFrame(0.25 * np.ones((2, 3)), + columns=cls.data.columns[1:]) + cls.nbytes_max = 900000 # have to pickle endo/exog to unpickle form. + + def setup(self): + self.results = sm.OLS.from_formula("Y ~ A + B + C", data=self.data).fit() + + +class TestPickleFormula3(TestPickleFormula2): + + def setup(self): + self.results = sm.OLS.from_formula("Y ~ A + B * C", data=self.data).fit() + + +class TestPickleFormula4(TestPickleFormula2): + + def setup(self): + self.results = sm.OLS.from_formula("Y ~ np.log(abs(A) + 1) + B * C", data=self.data).fit() + + +# we need log in module namespace for TestPickleFormula5 +from numpy import log # noqa:F401 + + +class TestPickleFormula5(TestPickleFormula2): + + def setup(self): + # if we import here, then unpickling fails -> exception in test + #from numpy import log + self.results = sm.OLS.from_formula("Y ~ log(abs(A) + 1) + B * C", data=self.data).fit() + + +class TestRemoveDataPicklePoissonRegularized(RemoveDataPickle): + + def setup(self): + #fit for each test, because results will be changed by test + x = self.exog + np.random.seed(987689) + y_count = np.random.poisson(np.exp(x.sum(1) - x.mean())) + model = sm.Poisson(y_count, x) + self.results = model.fit_regularized(method='l1', disp=0, alpha=10) diff --git a/statsmodels/base/tests/test_transform.py b/statsmodels/base/tests/test_transform.py new file mode 100644 index 0000000..bf95ff6 --- /dev/null +++ b/statsmodels/base/tests/test_transform.py @@ -0,0 +1,108 @@ +import numpy as np +from numpy.testing import (assert_almost_equal, assert_equal, assert_raises) +from statsmodels.base.transform import (BoxCox) +from statsmodels.datasets import macrodata + + +class TestTransform: + + @classmethod + def setup_class(cls): + data = macrodata.load_pandas() + cls.x = data.data['realgdp'].values + cls.bc = BoxCox() + + def test_nonpositive(self): + # Testing negative values + y = [1, -1, 1] + assert_raises(ValueError, self.bc.transform_boxcox, y) + + # Testing nonzero + y = [1, 0, 1] + assert_raises(ValueError, self.bc.transform_boxcox, y) + + def test_invalid_bounds(self): + # more than two bounds + assert_raises(ValueError, self.bc._est_lambda, self.x, (-3, 2, 3)) + + # upper bound <= lower bound + assert_raises(ValueError, self.bc._est_lambda, self.x, (2, -1)) + + def test_unclear_methods(self): + # Both _est_lambda and untransform have a method argument that should + # be tested. + assert_raises(ValueError, self.bc._est_lambda, + self.x, (-1, 2), 'test') + assert_raises(ValueError, self.bc.untransform_boxcox, + self.x, 1, 'test') + + def test_unclear_scale_parameter(self): + # bc.guerrero allows for 'mad' and 'sd', for the MAD and Standard + # Deviation, respectively + assert_raises(ValueError, self.bc._est_lambda, + self.x, scale='test') + + # Next, check if mad/sd work: + self.bc._est_lambda(self.x, scale='mad') + self.bc._est_lambda(self.x, scale='MAD') + + self.bc._est_lambda(self.x, scale='sd') + self.bc._est_lambda(self.x, scale='SD') + + def test_valid_guerrero(self): + # `l <- BoxCox.lambda(x, method="guerrero")` on a ts object + # with frequency 4 (BoxCox.lambda defaults to 2, but we use + # Guerrero and Perera (2004) as a guideline) + lmbda = self.bc._est_lambda(self.x, method='guerrero', window_length=4) + assert_almost_equal(lmbda, 0.507624, 4) + + # `l <- BoxCox.lambda(x, method="guerrero")` with the default grouping + # parameter (namely, window_length=2). + lmbda = self.bc._est_lambda(self.x, method='guerrero', window_length=2) + assert_almost_equal(lmbda, 0.513893, 4) + + def test_guerrero_robust_scale(self): + # The lambda is derived from a manual check of the values for the MAD. + # Compare also the result for the standard deviation on R=4: 0.5076, + # i.e. almost the same value. + lmbda = self.bc._est_lambda(self.x, scale='mad') + assert_almost_equal(lmbda, 0.488621, 4) + + def test_loglik_lambda_estimation(self): + # 0.2 is the value returned by `BoxCox.lambda(x, method="loglik")` + lmbda = self.bc._est_lambda(self.x, method='loglik') + assert_almost_equal(lmbda, 0.2, 1) + + def test_boxcox_transformation_methods(self): + # testing estimated lambda vs. provided. Should result in almost + # the same transformed data. Value taken from R. + y_transformed_no_lambda = self.bc.transform_boxcox(self.x) + y_transformed_lambda = self.bc.transform_boxcox(self.x, 0.507624) + + assert_almost_equal(y_transformed_no_lambda[0], + y_transformed_lambda[0], 3) + + # a perfectly increasing set has a constant variance over the entire + # series, hence stabilising should result in the same scale: lmbda = 1. + y, lmbda = self.bc.transform_boxcox(np.arange(1, 100)) + assert_almost_equal(lmbda, 1., 5) + + def test_zero_lambda(self): + # zero lambda should be a log transform. + y_transform_zero_lambda, lmbda = self.bc.transform_boxcox(self.x, 0.) + + assert_equal(lmbda, 0.) + assert_almost_equal(y_transform_zero_lambda, np.log(self.x), 5) + + def test_naive_back_transformation(self): + # test both transformations functions -> 0. and .5 + y_zero_lambda = self.bc.transform_boxcox(self.x, 0.) + y_half_lambda = self.bc.transform_boxcox(self.x, .5) + + y_zero_lambda_un = self.bc.untransform_boxcox(*y_zero_lambda, + method='naive') + y_half_lambda_un = self.bc.untransform_boxcox(*y_half_lambda, + method='naive') + + assert_almost_equal(self.x, y_zero_lambda_un, 5) + assert_almost_equal(self.x, y_half_lambda_un, 5) diff --git a/statsmodels/base/transform.py b/statsmodels/base/transform.py new file mode 100644 index 0000000..f7a0742 --- /dev/null +++ b/statsmodels/base/transform.py @@ -0,0 +1,226 @@ +import numpy as np +from statsmodels.robust import mad +from scipy.optimize import minimize_scalar + + +class BoxCox(object): + """ + Mixin class to allow for a Box-Cox transformation. + """ + + def transform_boxcox(self, x, lmbda=None, method='guerrero', **kwargs): + """ + Performs a Box-Cox transformation on the data array x. If lmbda is None, + the indicated method is used to estimate a suitable lambda parameter. + + Parameters + ---------- + x : array_like + lmbda : float + The lambda parameter for the Box-Cox transform. If None, a value + will be estimated by means of the specified method. + method : {'guerrero', 'loglik'} + The method to estimate the lambda parameter. Will only be used if + lmbda is None, and defaults to 'guerrero', detailed in Guerrero + (1993). 'loglik' maximizes the profile likelihood. + **kwargs + Options for the specified method. + * For 'guerrero', this entails window_length, the grouping + parameter, scale, the dispersion measure, and options, to be + passed to the optimizer. + * For 'loglik': options, to be passed to the optimizer. + + Returns + ------- + y : array_like + The transformed series. + lmbda : float + The lmbda parameter used to transform the series. + + References + ---------- + Guerrero, Victor M. 1993. "Time-series analysis supported by power + transformations". `Journal of Forecasting`. 12 (1): 37-48. + + Guerrero, Victor M. and Perera, Rafael. 2004. "Variance Stabilizing + Power Transformation for Time Series," `Journal of Modern Applied + Statistical Methods`. 3 (2): 357-369. + + Box, G. E. P., and D. R. Cox. 1964. "An Analysis of Transformations". + `Journal of the Royal Statistical Society`. 26 (2): 211-252. + """ + x = np.asarray(x) + + if np.any(x <= 0): + raise ValueError("Non-positive x.") + + if lmbda is None: + lmbda = self._est_lambda(x, + method=method, + **kwargs) + + # if less than 0.01, treat lambda as zero. + if np.isclose(lmbda, 0.): + y = np.log(x) + else: + y = (np.power(x, lmbda) - 1.) / lmbda + + return y, lmbda + + def untransform_boxcox(self, x, lmbda, method='naive'): + """ + Back-transforms the Box-Cox transformed data array, by means of the + indicated method. The provided argument lmbda should be the lambda + parameter that was used to initially transform the data. + + Parameters + ---------- + x : array_like + The transformed series. + lmbda : float + The lambda parameter that was used to transform the series. + method : {'naive'} + Indicates the method to be used in the untransformation. Defaults + to 'naive', which reverses the transformation. + + NOTE: 'naive' is implemented natively, while other methods may be + available in subclasses! + + Returns + ------- + y : array_like + The untransformed series. + """ + method = method.lower() + x = np.asarray(x) + + if method == 'naive': + if np.isclose(lmbda, 0.): + y = np.exp(x) + else: + y = np.power(lmbda * x + 1, 1. / lmbda) + else: + raise ValueError("Method '{0}' not understood.".format(method)) + + return y + + def _est_lambda(self, x, bounds=(-1, 2), method='guerrero', **kwargs): + """ + Computes an estimate for the lambda parameter in the Box-Cox + transformation using method. + + Parameters + ---------- + x : array_like + The untransformed data. + bounds : tuple + Numeric 2-tuple, that indicate the solution space for the lambda + parameter. Default (-1, 2). + method : {'guerrero', 'loglik'} + The method by which to estimate lambda. Defaults to 'guerrero', but + the profile likelihood ('loglik') is also available. + **kwargs + Options for the specified method. + * For 'guerrero': window_length (int), the seasonality/grouping + parameter. Scale ({'mad', 'sd'}), the dispersion measure. Options + (dict), to be passed to the optimizer. + * For 'loglik': Options (dict), to be passed to the optimizer. + + Returns + ------- + lmbda : float + The lambda parameter. + """ + method = method.lower() + + if len(bounds) != 2: + raise ValueError("Bounds of length {0} not understood." + .format(len(bounds))) + elif bounds[0] >= bounds[1]: + raise ValueError("Lower bound exceeds upper bound.") + + if method == 'guerrero': + lmbda = self._guerrero_cv(x, bounds=bounds, **kwargs) + elif method == 'loglik': + lmbda = self._loglik_boxcox(x, bounds=bounds, **kwargs) + else: + raise ValueError("Method '{0}' not understood.".format(method)) + + return lmbda + + def _guerrero_cv(self, x, bounds, window_length=4, scale='sd', + options={'maxiter': 25}): + """ + Computes lambda using guerrero's coefficient of variation. If no + seasonality is present in the data, window_length is set to 4 (as + per Guerrero and Perera, (2004)). + + NOTE: Seasonality-specific auxiliaries *should* provide their own + seasonality parameter. + + Parameters + ---------- + x : array_like + bounds : tuple + Numeric 2-tuple, that indicate the solution space for the lambda + parameter. + window_length : int + Seasonality/grouping parameter. Default 4, as per Guerrero and + Perera (2004). NOTE: this indicates the length of the individual + groups, not the total number of groups! + scale : {'sd', 'mad'} + The dispersion measure to be used. 'sd' indicates the sample + standard deviation, but the more robust 'mad' is also available. + options : dict + The options (as a dict) to be passed to the optimizer. + """ + nobs = len(x) + groups = int(nobs / window_length) + + # remove the first n < window_length observations from consideration. + grouped_data = np.reshape(x[nobs - (groups * window_length): nobs], + (groups, window_length)) + mean = np.mean(grouped_data, 1) + + scale = scale.lower() + if scale == 'sd': + dispersion = np.std(grouped_data, 1, ddof=1) + elif scale == 'mad': + dispersion = mad(grouped_data, axis=1) + else: + raise ValueError("Scale '{0}' not understood.".format(scale)) + + def optim(lmbda): + rat = np.divide(dispersion, np.power(mean, 1 - lmbda)) # eq 6, p 40 + return np.std(rat, ddof=1) / np.mean(rat) + + res = minimize_scalar(optim, + bounds=bounds, + method='bounded', + options=options) + return res.x + + def _loglik_boxcox(self, x, bounds, options={'maxiter': 25}): + """ + Taken from the Stata manual on Box-Cox regressions, where this is the + special case of 'lhs only'. As an estimator for the variance, the + sample variance is used, by means of the well-known formula. + + Parameters + ---------- + x : array_like + options : dict + The options (as a dict) to be passed to the optimizer. + """ + sum_x = np.sum(np.log(x)) + nobs = len(x) + + def optim(lmbda): + y, lmbda = self.transform_boxcox(x, lmbda) + return (1 - lmbda) * sum_x + (nobs / 2.) * np.log(np.var(y)) + + res = minimize_scalar(optim, + bounds=bounds, + method='bounded', + options=options) + return res.x diff --git a/statsmodels/base/wrapper.py b/statsmodels/base/wrapper.py new file mode 100644 index 0000000..5d4bb45 --- /dev/null +++ b/statsmodels/base/wrapper.py @@ -0,0 +1,120 @@ +import inspect +import functools + +from statsmodels.compat.python import iteritems, getargspec + + +class ResultsWrapper(object): + """ + Class which wraps a statsmodels estimation Results class and steps in to + reattach metadata to results (if available) + """ + _wrap_attrs = {} + _wrap_methods = {} + + def __init__(self, results): + self._results = results + self.__doc__ = results.__doc__ + + def __dir__(self): + return [x for x in dir(self._results)] + + def __getattribute__(self, attr): + get = lambda name: object.__getattribute__(self, name) + + try: + results = get('_results') + except AttributeError: + pass + + try: + return get(attr) + except AttributeError: + pass + + obj = getattr(results, attr) + data = results.model.data + how = self._wrap_attrs.get(attr) + if how and isinstance(how, tuple): + obj = data.wrap_output(obj, how[0], *how[1:]) + elif how: + obj = data.wrap_output(obj, how=how) + + return obj + + def __getstate__(self): + #print 'pickling wrapper', self.__dict__ + return self.__dict__ + + def __setstate__(self, dict_): + #print 'unpickling wrapper', dict_ + self.__dict__.update(dict_) + + def save(self, fname, remove_data=False): + '''save a pickle of this instance + + Parameters + ---------- + fname : string or filehandle + fname can be a string to a file path or filename, or a filehandle. + remove_data : bool + If False (default), then the instance is pickled without changes. + If True, then all arrays with length nobs are set to None before + pickling. See the remove_data method. + In some cases not all arrays will be set to None. + + ''' + from statsmodels.iolib.smpickle import save_pickle + + if remove_data: + self.remove_data() + + save_pickle(self, fname) + + @classmethod + def load(cls, fname): + from statsmodels.iolib.smpickle import load_pickle + return load_pickle(fname) + + +def union_dicts(*dicts): + result = {} + for d in dicts: + result.update(d) + return result + + +def make_wrapper(func, how): + @functools.wraps(func) + def wrapper(self, *args, **kwargs): + results = object.__getattribute__(self, '_results') + data = results.model.data + if how and isinstance(how, tuple): + obj = data.wrap_output(func(results, *args, **kwargs), how[0], how[1:]) + elif how: + obj = data.wrap_output(func(results, *args, **kwargs), how) + return obj + + try: # Python 3.3+ + sig = inspect.signature(func) + formatted = str(sig) + except AttributeError: + # TODO: Remove when Python 2.7 is dropped + argspec = getargspec(func) + formatted = inspect.formatargspec(argspec[0], + varargs=argspec[1], + defaults=argspec[3]) + + wrapper.__doc__ = "%s%s\n%s" % (func.__name__, formatted, wrapper.__doc__) + + return wrapper + + +def populate_wrapper(klass, wrapping): + for meth, how in iteritems(klass._wrap_methods): + if not hasattr(wrapping, meth): + continue + + func = getattr(wrapping, meth) + wrapper = make_wrapper(func, how) + setattr(klass, meth, wrapper) diff --git a/statsmodels/compat/__init__.py b/statsmodels/compat/__init__.py new file mode 100644 index 0000000..3f2fd45 --- /dev/null +++ b/statsmodels/compat/__init__.py @@ -0,0 +1,27 @@ +from statsmodels.tools._testing import PytestTester + +from .python import ( + PY3, PY37, + bytes, str, unicode, string_types, + asunicode, asbytes, asstr, asstr2, + range, zip, filter, map, + lrange, lzip, lmap, lfilter, + cStringIO, StringIO, BytesIO, + cPickle, pickle, + iteritems, iterkeys, itervalues, + urlopen, urljoin, urlencode, HTTPError, URLError, + reduce, long, unichr, zip_longest, + builtins, + getargspec, + next, get_class +) + +__all__ = ['PY3', 'PY37', 'bytes', 'str', 'unicode', 'string_types', + 'asunicode', 'asbytes', 'asstr', 'asstr2', 'range', 'zip', + 'filter', 'map', 'lrange', 'lzip', 'lmap', 'lfilter', 'cStringIO', + 'StringIO', 'BytesIO', 'cPickle', 'pickle', 'iteritems', + 'iterkeys', 'itervalues', 'urlopen', 'urljoin', 'urlencode', + 'HTTPError', 'URLError', 'reduce', 'long', 'unichr', 'zip_longest', + 'builtins', 'getargspec', 'next', 'get_class', 'test'] + +test = PytestTester() diff --git a/statsmodels/compat/numpy.py b/statsmodels/compat/numpy.py new file mode 100644 index 0000000..d8f8831 --- /dev/null +++ b/statsmodels/compat/numpy.py @@ -0,0 +1,90 @@ +"""Compatibility functions for numpy versions in lib + +np_new_unique +------------- +Optionally provides the count of the number of occurences of each +unique element. + +Copied from Numpy source, under license: + +Copyright (c) 2005-2015, NumPy Developers. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +* Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + +* Neither the name of the NumPy Developers nor the names of any + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +""" + +from __future__ import absolute_import +from distutils.version import LooseVersion + +import numpy as np + +from .python import PY3 + +NP_LT_114 = LooseVersion(np.__version__) < LooseVersion('1.14') +NP_LT_113 = LooseVersion(np.__version__) < '1.13.0' + +np_matrix_rank = np.linalg.matrix_rank +np_new_unique = np.unique + + +def recarray_select(recarray, fields): + """" + Work-around for changes in NumPy 1.13 that return views for recarray + multiple column selection + """ + from pandas import DataFrame + fields = [fields] if not isinstance(fields, (tuple, list)) else fields + if len(fields) == len(recarray.dtype): + selection = recarray + else: + recarray = DataFrame.from_records(recarray) + selection = recarray[fields].to_records(index=False) + + _bytelike_dtype_names(selection) + return selection + + +def _bytelike_dtype_names(arr): + # See # 3658 + if not PY3: + dtype = arr.dtype + names = dtype.names + names = [bytes(name) if isinstance(name, unicode) # noqa:F821 + else name for name in names] + dtype.names = names + + +def lstsq(a, b, rcond=None): + """ + Shim that allows modern rcond setting with backward compat for NumPY + earlier than 1.14 + """ + if NP_LT_114 and rcond is None: + rcond = -1 + return np.linalg.lstsq(a, b, rcond=rcond) diff --git a/statsmodels/compat/pandas.py b/statsmodels/compat/pandas.py new file mode 100644 index 0000000..b9fade8 --- /dev/null +++ b/statsmodels/compat/pandas.py @@ -0,0 +1,57 @@ +from __future__ import absolute_import + +from distutils.version import LooseVersion + +import pandas +try: + from pandas.util._decorators import cache_readonly, deprecate_kwarg +except ImportError: + from pandas.util.decorators import cache_readonly, deprecate_kwarg + + +__all__ = ['assert_frame_equal', 'assert_index_equal', 'assert_series_equal', + 'data_klasses', 'frequencies', 'is_numeric_dtype', 'testing', + 'cache_readonly', 'deprecate_kwarg'] + +version = LooseVersion(pandas.__version__) +pandas_lte_0_19_2 = version <= LooseVersion('0.19.2') +pandas_gt_0_19_2 = version > LooseVersion('0.19.2') +pandas_ge_20_0 = version >= LooseVersion('0.20.0') +pandas_lt_25_0 = version < LooseVersion('0.25.0') +pandas_ge_25_0 = version >= LooseVersion('0.25.0') + +try: + from pandas.api.types import is_numeric_dtype # noqa:F401 +except ImportError: + from pandas.core.common import is_numeric_dtype # noqa:F401 + +if pandas_ge_25_0: + from pandas.tseries import offsets as frequencies # noqa:F401 + data_klasses = (pandas.Series, pandas.DataFrame) +elif pandas_ge_20_0: + try: + from pandas.tseries import offsets as frequencies + except ImportError: + from pandas.tseries import frequencies + data_klasses = (pandas.Series, pandas.DataFrame, pandas.Panel) +else: + try: + import pandas.tseries.frequencies as frequencies + except ImportError: + from pandas.core import datetools as frequencies # noqa + + data_klasses = (pandas.Series, pandas.DataFrame, pandas.Panel, + pandas.WidePanel) + +data_klasses = (pandas.Series, pandas.DataFrame) +if pandas_lt_25_0: + data_klasses += (pandas.Panel,) + +try: + import pandas.testing as testing +except ImportError: + import pandas.util.testing as testing + +assert_frame_equal = testing.assert_frame_equal +assert_index_equal = testing.assert_index_equal +assert_series_equal = testing.assert_series_equal diff --git a/statsmodels/compat/platform.py b/statsmodels/compat/platform.py new file mode 100644 index 0000000..71086ff --- /dev/null +++ b/statsmodels/compat/platform.py @@ -0,0 +1,8 @@ +import os +import sys + +__all__ = ['PLATFORM_OSX', 'PLATFORM_WIN', 'PLATFORM_WIN32'] + +PLATFORM_OSX = sys.platform == 'darwin' +PLATFORM_WIN = sys.platform in ('win32', 'cygwin') or os.name == 'nt' +PLATFORM_WIN32 = PLATFORM_WIN and sys.maxsize < 2**33 diff --git a/statsmodels/compat/python.py b/statsmodels/compat/python.py new file mode 100644 index 0000000..6466ef0 --- /dev/null +++ b/statsmodels/compat/python.py @@ -0,0 +1,203 @@ +""" +Compatibility tools for differences between Python 2 and 3 +""" +import functools +import itertools +import sys +import urllib + +PY3 = (sys.version_info[0] >= 3) +PY37 = (sys.version_info[:2] == (3, 7)) + +if PY3: + import builtins + from collections import namedtuple + from io import StringIO, BytesIO + import inspect + + cStringIO = StringIO + import pickle as cPickle + pickle = cPickle + import urllib.request + import urllib.parse + from urllib.error import HTTPError, URLError + bytes = bytes + str = str + unicode = str + asunicode = lambda x, _: str(x) # noqa:E731 + + def asbytes(s): + if isinstance(s, bytes): + return s + return s.encode('latin1') + + def asstr(s): + if isinstance(s, str): + return s + return s.decode('latin1') + + def asstr2(s): # added JP, not in numpy version + if isinstance(s, str): + return s + elif isinstance(s, bytes): + return s.decode('latin1') + else: + return str(s) + + # have to explicitly put builtins into the namespace + range = range + map = map + zip = zip + filter = filter + reduce = functools.reduce + long = int + unichr = chr + zip_longest = itertools.zip_longest + + # list-producing versions of the major Python iterating functions + def lrange(*args, **kwargs): + return list(range(*args, **kwargs)) + + def lzip(*args, **kwargs): + return list(zip(*args, **kwargs)) + + def lmap(*args, **kwargs): + return list(map(*args, **kwargs)) + + def lfilter(*args, **kwargs): + return list(filter(*args, **kwargs)) + + urlopen = urllib.request.urlopen + urljoin = urllib.parse.urljoin + urlretrieve = urllib.request.urlretrieve + urlencode = urllib.parse.urlencode + string_types = str + + ArgSpec = namedtuple('ArgSpec', + ['args', 'varargs', 'keywords', 'defaults']) + + def getargspec(func): + """ + Simple workaroung for getargspec deprecation that returns + an ArgSpec-like object + """ + sig = inspect.signature(func) + parameters = sig.parameters + args, defaults = [], [] + varargs, keywords = None, None + + for key in parameters: + parameter = parameters[key] + + if parameter.kind == inspect.Parameter.VAR_POSITIONAL: + varargs = key + elif parameter.kind == inspect.Parameter.VAR_KEYWORD: + keywords = key + else: + args.append(key) + if parameter.default is not parameter.empty: + defaults.append(parameter.default) + defaults = None if len(defaults) == 0 else defaults + + return ArgSpec(args, varargs, keywords, defaults) + +else: + import __builtin__ as builtins + # not writeable when instantiated with string, doesn't handle unicode well + from cStringIO import StringIO as cStringIO # noqa:F401 + # always writeable + from StringIO import StringIO + from inspect import getargspec # noqa:F401 + + BytesIO = StringIO + import cPickle + pickle = cPickle + import urllib2 + import urlparse + + bytes = str + str = str + unicode = unicode + asbytes = str + asstr = str + asstr2 = str + + def asunicode(s, encoding='ascii'): + if isinstance(s, unicode): + return s + return s.decode(encoding) + + # import iterator versions of these functions + range = xrange # noqa:F821 + zip = itertools.izip + filter = itertools.ifilter + map = itertools.imap + reduce = reduce + long = long + unichr = unichr + zip_longest = itertools.izip_longest + + # Python 2-builtin ranges produce lists + lrange = builtins.range + lzip = builtins.zip + lmap = builtins.map + lfilter = builtins.filter + + urlopen = urllib2.urlopen + urljoin = urlparse.urljoin + urlencode = urllib.urlencode + HTTPError = urllib2.HTTPError + URLError = urllib2.URLError + string_types = basestring # noqa:F821 + + +try: + next = next +except NameError: + def next(it): + return it.next() + + +def iteritems(obj, **kwargs): + """replacement for six's iteritems for Python2/3 compat + uses 'iteritems' if available and otherwise uses 'items'. + + Passes kwargs to method. + """ + func = getattr(obj, "iteritems", None) + if not func: + func = obj.items + return func(**kwargs) + + +def iterkeys(obj, **kwargs): + func = getattr(obj, "iterkeys", None) + if not func: + func = obj.keys + return func(**kwargs) + + +def itervalues(obj, **kwargs): + func = getattr(obj, "itervalues", None) + if not func: + func = obj.values + return func(**kwargs) + + +def get_class(func): + try: + return func.im_class + except AttributeError: + # Python 3 + return func.__self__.__class__ + + +def with_metaclass(meta, *bases): + """Create a base class with a metaclass.""" + # This requires a bit of explanation: the basic idea is to make a dummy + # metaclass for one level of class instantiation that replaces itself with + # the actual metaclass. + class metaclass(meta): + def __new__(cls, name, this_bases, d): + return meta(name, bases, d) + return type.__new__(metaclass, 'temporary_class', (), {}) diff --git a/statsmodels/compat/scipy.py b/statsmodels/compat/scipy.py new file mode 100644 index 0000000..3a30584 --- /dev/null +++ b/statsmodels/compat/scipy.py @@ -0,0 +1,121 @@ +from __future__ import absolute_import +from distutils.version import LooseVersion + +import numpy as np +import scipy + +SP_GTE_019 = LooseVersion(scipy.__version__) >= LooseVersion('0.19') +NumpyVersion = np.lib.NumpyVersion + + +def _next_regular(target): + """ + Find the next regular number greater than or equal to target. + Regular numbers are composites of the prime factors 2, 3, and 5. + Also known as 5-smooth numbers or Hamming numbers, these are the optimal + size for inputs to FFTPACK. + + Target must be a positive integer. + """ + if target <= 6: + return target + + # Quickly check if it's already a power of 2 + if not (target & (target - 1)): + return target + + match = float('inf') # Anything found will be smaller + p5 = 1 + while p5 < target: + p35 = p5 + while p35 < target: + # Ceiling integer division, avoiding conversion to float + # (quotient = ceil(target / p35)) + quotient = -(-target // p35) + # Quickly find next power of 2 >= quotient + p2 = 2 ** ((quotient - 1).bit_length()) + + N = p2 * p35 + if N == target: + return N + elif N < match: + match = N + p35 *= 3 + if p35 == target: + return p35 + if p35 < match: + match = p35 + p5 *= 5 + if p5 == target: + return p5 + if p5 < match: + match = p5 + return match + + +def _valarray(shape, value=np.nan, typecode=None): + """Return an array of all value. + """ + + out = np.ones(shape, dtype=bool) * value + if typecode is not None: + out = out.astype(typecode) + if not isinstance(out, np.ndarray): + out = np.asarray(out) + return out + + +def _lazywhere(cond, arrays, f, fillvalue=None, f2=None): + """ + np.where(cond, x, fillvalue) always evaluates x even where cond is False. + This one only evaluates f(arr1[cond], arr2[cond], ...). + For example, + >>> a, b = np.array([1, 2, 3, 4]), np.array([5, 6, 7, 8]) + >>> def f(a, b): + return a*b + >>> _lazywhere(a > 2, (a, b), f, np.nan) + array([ nan, nan, 21., 32.]) + Notice it assumes that all `arrays` are of the same shape, or can be + broadcasted together. + """ + if fillvalue is None: + if f2 is None: + raise ValueError("One of (fillvalue, f2) must be given.") + else: + fillvalue = np.nan + else: + if f2 is not None: + raise ValueError("Only one of (fillvalue, f2) can be given.") + + arrays = np.broadcast_arrays(*arrays) + temp = tuple(np.extract(cond, arr) for arr in arrays) + tcode = np.mintypecode([a.dtype.char for a in arrays]) + out = _valarray(np.shape(arrays[0]), value=fillvalue, typecode=tcode) + np.place(out, cond, f(*temp)) + if f2 is not None: + temp = tuple(np.extract(~cond, arr) for arr in arrays) + np.place(out, ~cond, f2(*temp)) + + return out + + +# Work around for complex chnges in gammaln in 1.0.0. +# loggamma introduced in 0.18. +try: + from scipy.special import loggamma # noqa:F401 +except ImportError: + from scipy.special import gammaln # noqa:F401 + loggamma = gammaln + +# Work around for factorial changes in 1.0.0 + +try: + from scipy.special import factorial, factorial2 # noqa:F401 +except ImportError: + from scipy.misc import factorial, factorial2 # noqa:F401 + +# Moved in 1.0 to special +try: + from scipy.special import logsumexp # noqa:F401 +except ImportError: + from scipy.misc import logsumexp # noqa:F401 diff --git a/statsmodels/compat/tests/__init__.py b/statsmodels/compat/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/compat/tests/test_itercompat.py b/statsmodels/compat/tests/test_itercompat.py new file mode 100644 index 0000000..68aaf79 --- /dev/null +++ b/statsmodels/compat/tests/test_itercompat.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +""" + +Created on Wed Feb 29 10:34:00 2012 + +Author: Josef Perktold +""" +from statsmodels.compat import lrange, zip_longest +from itertools import combinations +from numpy.testing import assert_ + + +def test_zip_longest(): + lili = [['a0', 'b0', 'c0', 'd0'], + ['a1', 'b1', 'c1'], + ['a2', 'b2', 'c2', 'd2'], + ['a3', 'b3', 'c3', 'd3'], + ['a4', 'b4']] + + transposed = [('a0', 'a1', 'a2', 'a3', 'a4'), + ('b0', 'b1', 'b2', 'b3', 'b4'), + ('c0', 'c1', 'c2', 'c3', None), + ('d0', None, 'd2', 'd3', None)] + + assert_(list(zip_longest(*lili)) == transposed, '%r not equal %r' % ( + zip_longest(*lili), transposed)) + + +def test_combinations(): + actual = list(combinations('ABCD', 2)) + desired = [('A', 'B'), ('A', 'C'), ('A', 'D'), ('B', 'C'), ('B', 'D'), + ('C', 'D')] + assert_(actual == desired, '%r not equal %r' % (actual, desired)) + + actual = list(combinations(lrange(4), 3)) + desired = [(0, 1, 2), (0, 1, 3), (0, 2, 3), (1, 2, 3)] + assert_(actual == desired, '%r not equal %r' % (actual, desired)) diff --git a/statsmodels/compat/tests/test_scipy_compat.py b/statsmodels/compat/tests/test_scipy_compat.py new file mode 100644 index 0000000..028c2f2 --- /dev/null +++ b/statsmodels/compat/tests/test_scipy_compat.py @@ -0,0 +1,85 @@ +from numpy.testing import assert_equal +from statsmodels.compat.scipy import _next_regular + + +def test_next_regular(): + hams = { + 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 8, 8: 8, 14: 15, 15: 15, + 16: 16, 17: 18, 1021: 1024, 1536: 1536, 51200000: 51200000, + 510183360: 510183360, 510183360+1: 512000000, 511000000: 512000000, + 854296875: 854296875, 854296875+1: 859963392, + 196608000000: 196608000000, 196608000000+1: 196830000000, + 8789062500000: 8789062500000, 8789062500000+1: 8796093022208, + 206391214080000: 206391214080000, 206391214080000+1: 206624260800000, + 470184984576000: 470184984576000, 470184984576000+1: 470715894135000, + 7222041363087360: 7222041363087360, + 7222041363087360+1: 7230196133913600, + + # power of 5 5**23 + 11920928955078125: 11920928955078125, + 11920928955078125-1: 11920928955078125, + + # power of 3 3**34 + 16677181699666569: 16677181699666569, + 16677181699666569-1: 16677181699666569, + + # power of 2 2**54 + 18014398509481984: 18014398509481984, + 18014398509481984-1: 18014398509481984, + + # above this, int(ceil(n)) == int(ceil(n+1)) + 19200000000000000: 19200000000000000, + 19200000000000000+1: 19221679687500000, + + 288230376151711744: 288230376151711744, + 288230376151711744+1: 288325195312500000, + 288325195312500000-1: 288325195312500000, + 288325195312500000: 288325195312500000, + 288325195312500000+1: 288555831593533440, + + # power of 3 3**83 + 3990838394187339929534246675572349035227-1: + 3990838394187339929534246675572349035227, + 3990838394187339929534246675572349035227: + 3990838394187339929534246675572349035227, + + # power of 2 2**135 + 43556142965880123323311949751266331066368-1: + 43556142965880123323311949751266331066368, + 43556142965880123323311949751266331066368: + 43556142965880123323311949751266331066368, + + # power of 5 5**57 + 6938893903907228377647697925567626953125-1: + 6938893903907228377647697925567626953125, + 6938893903907228377647697925567626953125: + 6938893903907228377647697925567626953125, + + # http://www.drdobbs.com/228700538 + # 2**96 * 3**1 * 5**13 + 290142196707511001929482240000000000000-1: + 290142196707511001929482240000000000000, + 290142196707511001929482240000000000000: + 290142196707511001929482240000000000000, + 290142196707511001929482240000000000000+1: + 290237644800000000000000000000000000000, + + # 2**36 * 3**69 * 5**7 + 4479571262811807241115438439905203543080960000000-1: + 4479571262811807241115438439905203543080960000000, + 4479571262811807241115438439905203543080960000000: + 4479571262811807241115438439905203543080960000000, + 4479571262811807241115438439905203543080960000000+1: + 4480327901140333639941336854183943340032000000000, + + # 2**37 * 3**44 * 5**42 + 30774090693237851027531250000000000000000000000000000000000000-1: + 30774090693237851027531250000000000000000000000000000000000000, + 30774090693237851027531250000000000000000000000000000000000000: + 30774090693237851027531250000000000000000000000000000000000000, + 30774090693237851027531250000000000000000000000000000000000000+1: + 30778180617309082445871527002041377406962596539492679680000000, + } + + for x, y in hams.items(): + assert_equal(_next_regular(x), y) diff --git a/statsmodels/conftest.py b/statsmodels/conftest.py new file mode 100644 index 0000000..1ddefa0 --- /dev/null +++ b/statsmodels/conftest.py @@ -0,0 +1,119 @@ +import numpy as np +import pytest + +try: + import matplotlib + + matplotlib.use('agg') + HAVE_MATPLOTLIB = True +except ImportError: + HAVE_MATPLOTLIB = False + + +def pytest_addoption(parser): + parser.addoption("--skip-slow", action="store_true", + help="skip slow tests") + parser.addoption("--only-slow", action="store_true", + help="run only slow tests") + parser.addoption("--skip-examples", action="store_true", + help="skip tests of examples") + parser.addoption("--skip-matplotlib", action="store_true", + help="skip tests that depend on matplotlib") + parser.addoption("--skip-smoke", action="store_true", + help="skip smoke tests") + parser.addoption("--only-smoke", action="store_true", + help="run only smoke tests") + + +def pytest_runtest_setup(item): + if 'slow' in item.keywords and item.config.getoption("--skip-slow"): + pytest.skip("skipping due to --skip-slow") + + if 'slow' not in item.keywords and item.config.getoption("--only-slow"): + pytest.skip("skipping due to --only-slow") + + if 'example' in item.keywords and item.config.getoption("--skip-examples"): + pytest.skip("skipping due to --skip-examples") + + if 'matplotlib' in item.keywords and \ + item.config.getoption("--skip-matplotlib"): + pytest.skip("skipping due to --skip-matplotlib") + + if 'matplotlib' in item.keywords and not HAVE_MATPLOTLIB: + pytest.skip("skipping since matplotlib is not intalled") + + if 'smoke' in item.keywords and item.config.getoption("--skip-smoke"): + pytest.skip("skipping due to --skip-smoke") + + if 'smoke' not in item.keywords and item.config.getoption('--only-smoke'): + pytest.skip("skipping due to --only-smoke") + + +def pytest_configure(config): + try: + import matplotlib + matplotlib.use('agg') + except ImportError: + pass + + +@pytest.fixture() +def close_figures(): + """ + Fixture that closes all figures after a test function has completed + + Returns + ------- + closer : callable + Function that will close all figures when called. + + Notes + ----- + Used by passing as an argument to the function that produces a plot, + for example + + def test_some_plot(close_figures): + + + If a function creates many figures, then these can be destroyed within a + test function by calling close_figures to ensure that the number of + figures does not become too large. + + def test_many_plots(close_figures): + for i in range(100000): + plt.plot(x,y) + close_figures() + """ + try: + import matplotlib.pyplot + + def close(): + matplotlib.pyplot.close('all') + + except ImportError: + def close(): + pass + + yield close + close() + + +@pytest.fixture() +def reset_randomstate(): + """ + Fixture that set the global RandomState to the fixed seed 1 + + Notes + ----- + Used by passing as an argument to the function that uses the global + RandomState + + def test_some_plot(reset_randomstate): + + + Returns the state after the test function exits + """ + state = np.random.get_state() + np.random.seed(1) + yield + np.random.set_state(state) diff --git a/statsmodels/datasets/COPYING b/statsmodels/datasets/COPYING new file mode 100644 index 0000000..b244761 --- /dev/null +++ b/statsmodels/datasets/COPYING @@ -0,0 +1,35 @@ +Last Change: Tue Jul 17 05:00 PM 2007 J + +The code and descriptive text is copyrighted and offered under the terms of +the BSD License from the authors; see below. However, the actual dataset may +have a different origin and intellectual property status. See the SOURCE and +COPYRIGHT variables for this information. + +Copyright (c) 2007 David Cournapeau +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the + distribution. + * Neither the author nor the names of any contributors may be used + to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/statsmodels/datasets/README.txt b/statsmodels/datasets/README.txt new file mode 100644 index 0000000..5d6944d --- /dev/null +++ b/statsmodels/datasets/README.txt @@ -0,0 +1,32 @@ +This README was copied from +http://projects.scipy.org/scikits/browser/trunk/learn/scikits/learn/datasets/ +----------------------------------------------------------------------------- + +Last Change: Tue Jul 17 04:00 PM 2007 J + +This packages datasets defines a set of packages which contain datasets useful +for demo, examples, etc... This can be seen as an equivalent of the R dataset +package, but for python. + +Each subdir is a python package, and should define the function load, returning +the corresponding data. For example, to access datasets data1, you should be able to do: + +>> from datasets.data1 import load +>> d = load() # -> d contains the data of the datasets data1 + +load can do whatever it wants: fetching data from a file (python script, csv +file, etc...), from the internet, etc... Some special variables must be defined +for each package, containing a python string: + - COPYRIGHT: copyright informations + - SOURCE: where the data are coming from + - DESCHOSRT: short description + - DESCLONG: long description + - NOTE: some notes on the datasets. + +For the datasets to be useful in the learn scikits, which is the project which initiated this datasets package, the data returned by load has to be a dict with the following conventions: + - 'data': this value should be a record array containing the actual data. + - 'label': this value should be a rank 1 array of integers, contains the + label index for each sample, that is label[i] should be the label index + of data[i]. + - 'class': a record array such as class[i] is the class name. In other + words, this makes the correspondance label index <> label name. diff --git a/statsmodels/datasets/__init__.py b/statsmodels/datasets/__init__.py new file mode 100644 index 0000000..1d7d9d4 --- /dev/null +++ b/statsmodels/datasets/__init__.py @@ -0,0 +1,22 @@ +""" +Datasets module +""" +from statsmodels.tools._testing import PytestTester + +from . import (anes96, cancer, committee, ccard, copper, cpunish, elnino, + engel, grunfeld, interest_inflation, longley, macrodata, + modechoice, nile, randhie, scotland, spector, stackloss, + star98, strikes, sunspots, fair, heart, statecrime, co2, + fertility, china_smoking) +from .utils import (get_rdataset, get_data_home, clear_data_home, webuse, + check_internet) + +__all__ = ['anes96', 'cancer', 'committee', 'ccard', 'copper', 'cpunish', + 'elnino', 'engel', 'grunfeld', 'interest_inflation', 'longley', + 'macrodata', 'modechoice', 'nile', 'randhie', 'scotland', 'spector', + 'stackloss', 'star98', 'strikes', 'sunspots', 'fair', 'heart', + 'statecrime', 'co2', 'fertility', 'china_smoking', + 'get_rdataset', 'get_data_home', 'clear_data_home', 'webuse', + 'check_internet', 'test'] + +test = PytestTester() diff --git a/statsmodels/datasets/anes96/__init__.py b/statsmodels/datasets/anes96/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/anes96/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/anes96/anes96.csv b/statsmodels/datasets/anes96/anes96.csv new file mode 100644 index 0000000..92e19f5 --- /dev/null +++ b/statsmodels/datasets/anes96/anes96.csv @@ -0,0 +1,945 @@ +'popul' 'TVnews' 'selfLR' 'ClinLR' 'DoleLR' 'PID' 'age' 'educ' 'income' 'vote' +0 7 7 1 6 6 36 3 1 1 +190 1 3 3 5 1 20 4 1 0 +31 7 2 2 6 1 24 6 1 0 +83 4 3 4 5 1 28 6 1 0 +640 7 5 6 4 0 68 6 1 0 +110 3 3 4 6 1 21 4 1 0 +100 7 5 6 4 1 77 4 1 0 +31 1 5 4 5 4 21 4 1 0 +180 7 4 6 3 3 31 4 1 0 +2800 0 3 3 7 0 39 3 1 0 +1600 0 3 2 4 4 26 2 1 0 +330 5 4 3 6 1 31 4 1 0 +190 2 5 4 6 5 22 4 1 1 +100 7 4 4 6 0 42 5 1 0 +1000 7 5 7 4 0 74 1 1 0 +0 7 6 7 5 0 62 3 1 0 +130 7 4 4 5 1 58 3 1 0 +5 5 3 3 6 1 24 6 1 0 +33 7 6 2 6 5 51 4 1 1 +19 2 2 1 4 0 36 3 2 0 +74 7 4 4 7 2 88 2 2 0 +190 0 2 4 6 2 20 4 2 0 +12 3 4 6 3 2 27 3 2 0 +0 7 6 1 6 6 44 4 2 1 +19 0 4 2 2 1 45 3 2 0 +0 2 4 3 6 1 21 4 2 0 +390 5 3 4 7 1 40 5 2 0 +40 7 4 3 4 0 40 6 2 0 +3 3 5 5 4 1 48 3 2 0 +450 3 4 7 1 0 34 3 2 0 +350 0 3 4 7 2 26 2 2 0 +64 3 4 4 2 1 60 2 3 0 +3 0 4 4 3 0 32 3 3 0 +0 1 4 3 7 1 31 3 3 0 +640 7 7 5 7 4 33 3 3 1 +0 7 3 4 6 0 57 3 3 0 +12 7 4 3 6 1 84 3 3 0 +62 6 7 2 7 5 75 3 3 1 +31 2 7 2 6 6 19 4 3 1 +0 1 3 2 6 1 47 6 3 0 +180 6 5 5 5 0 51 2 3 0 +640 3 6 4 4 5 40 3 3 0 +110 0 2 3 6 1 22 6 3 0 +100 1 7 7 5 6 35 2 3 0 +100 7 4 4 7 2 43 5 3 0 +11 3 6 6 3 2 76 6 3 0 +0 7 4 3 1 6 45 3 3 1 +4 7 4 6 6 0 88 2 3 0 +35 6 4 4 2 1 46 3 4 0 +0 1 3 4 5 2 22 6 4 0 +0 7 5 1 6 5 68 3 4 1 +0 2 5 2 6 5 38 3 4 1 +33 7 4 3 6 3 69 2 4 0 +270 2 5 4 3 0 67 3 4 0 +45 7 2 4 6 0 88 4 4 0 +40 3 6 2 5 5 68 3 4 1 +6 1 5 2 4 2 76 3 4 1 +2 7 4 4 6 0 72 2 4 0 +0 0 6 2 6 6 37 6 4 1 +35 3 4 2 6 0 69 3 4 0 +83 0 2 4 6 0 33 6 4 0 +3500 7 2 2 6 0 34 4 4 0 +100 2 4 4 7 2 30 3 4 0 +350 2 3 3 6 1 19 3 4 0 +100 3 4 6 2 0 44 3 4 0 +67 1 4 4 7 1 64 3 4 0 +30 5 7 7 2 0 37 4 4 0 +0 7 6 3 5 4 31 5 5 1 +0 0 6 1 5 4 88 4 5 1 +6 7 6 2 6 6 77 4 5 1 +350 1 4 5 6 5 30 6 5 0 +400 1 2 3 7 1 32 4 5 0 +15 7 6 2 6 6 59 1 5 1 +0 0 4 4 4 3 47 4 5 0 +3 2 4 6 5 1 22 3 5 0 +22 5 4 2 6 2 55 3 5 0 +64 2 2 1 3 0 24 2 5 0 +32 5 3 7 4 1 65 1 5 0 +390 7 3 6 2 2 24 3 5 0 +0 7 3 4 5 3 30 3 5 0 +0 7 4 5 2 3 73 3 5 0 +59 5 3 3 5 1 73 5 5 0 +0 6 4 3 6 2 91 1 5 0 +35 7 3 2 5 0 71 2 5 0 +0 2 6 4 5 4 34 4 5 1 +170 7 4 3 2 0 48 2 6 0 +12 1 6 2 6 5 42 4 6 1 +40 4 6 5 4 0 72 2 6 0 +31 2 3 4 6 6 20 4 6 1 +31 7 2 2 7 0 22 4 6 0 +1600 1 3 3 6 1 24 6 6 0 +1 1 4 2 7 2 39 6 6 0 +4 7 6 1 6 6 83 5 6 1 +190 0 6 2 6 6 39 3 6 1 +53 3 5 3 6 1 33 5 6 0 +31 7 4 3 6 1 53 3 6 1 +16 7 5 3 6 5 82 3 6 1 +33 5 4 3 5 6 82 3 6 1 +0 3 5 3 6 5 47 6 7 1 +0 3 4 2 7 4 68 3 7 0 +0 7 4 3 5 0 84 6 7 0 +27 2 6 1 6 5 35 5 7 1 +84 7 4 5 6 1 67 2 7 0 +22 3 5 3 5 4 33 2 7 1 +0 3 3 3 5 0 49 7 7 0 +3500 0 4 3 7 0 91 1 7 0 +390 7 4 5 3 1 43 3 7 0 +0 7 4 3 2 6 65 4 7 0 +16 7 5 6 3 0 69 3 7 0 +200 0 5 5 4 1 56 4 8 0 +640 0 2 3 5 0 24 6 8 0 +0 7 4 4 5 0 77 3 8 0 +45 7 6 3 7 0 74 3 8 0 +12 0 7 3 6 6 25 6 8 1 +20 7 6 2 5 4 85 1 8 1 +7300 5 7 7 6 3 21 2 8 0 +64 7 6 3 1 0 24 4 8 0 +13 7 5 4 7 4 73 4 8 0 +190 0 4 5 3 2 37 3 8 0 +9 4 4 5 1 2 35 4 8 0 +0 7 4 4 7 0 47 3 8 0 +170 2 4 2 6 6 21 3 8 1 +640 7 3 6 4 0 55 5 8 0 +9 4 6 3 6 6 30 6 8 1 +0 4 5 3 6 4 76 7 8 1 +7300 5 3 4 3 3 36 4 8 0 +2800 0 1 1 7 0 38 3 9 0 +0 7 2 3 5 0 67 3 9 0 +30 7 7 3 7 6 70 2 9 1 +44 7 5 3 7 2 78 4 9 0 +7300 1 2 2 7 3 27 6 9 0 +330 4 3 5 6 1 51 4 9 0 +3 0 6 7 3 5 33 4 9 0 +51 2 6 1 5 6 80 6 9 1 +29 5 4 1 6 1 79 1 9 0 +630 2 6 4 5 4 66 1 9 1 +170 0 4 1 6 0 32 3 10 0 +33 7 4 5 7 0 70 2 10 0 +0 3 2 3 6 3 42 3 10 0 +9 5 5 4 5 5 73 4 10 1 +22 4 4 4 6 0 87 2 10 0 +100 0 7 5 1 1 30 5 10 0 +2 2 4 4 5 3 52 3 10 0 +0 6 5 3 6 1 62 4 10 0 +50 7 6 3 4 0 67 3 10 0 +15 4 6 3 4 4 37 6 10 0 +3 4 3 5 7 0 37 4 10 0 +720 5 1 5 6 1 64 6 10 0 +640 7 1 1 5 0 34 3 10 0 +5 7 4 4 7 0 70 3 10 0 +24 2 6 2 6 6 31 5 10 1 +22 7 2 2 6 0 29 6 11 0 +55 7 4 5 4 1 71 2 11 0 +0 2 4 4 4 0 67 1 11 0 +1600 5 4 4 6 0 41 7 11 0 +170 6 1 2 6 0 49 6 11 0 +1000 7 4 4 5 0 42 5 11 0 +63 0 6 3 2 0 78 2 11 0 +110 0 4 1 6 1 24 3 11 0 +16 7 4 6 6 1 29 3 11 0 +100 3 4 2 6 5 39 5 11 1 +7300 3 5 3 6 1 19 4 11 0 +22 2 4 2 7 1 32 5 11 0 +71 3 4 2 6 5 69 3 11 1 +900 4 5 2 5 5 83 3 11 1 +35 7 4 1 5 4 76 2 11 1 +2 7 7 1 2 0 62 2 11 0 +83 2 3 3 6 0 47 7 11 0 +370 5 6 7 4 0 35 3 11 0 +12 0 4 5 3 4 23 3 11 0 +370 7 4 4 1 1 79 4 11 0 +100 7 6 2 6 5 64 5 11 1 +470 7 6 2 4 5 70 4 11 1 +22 7 6 1 6 6 87 5 11 1 +2800 0 3 6 1 0 28 2 12 0 +47 5 3 5 7 1 58 3 12 0 +900 5 4 4 6 1 85 2 12 0 +330 7 3 6 4 0 62 3 12 0 +84 0 3 2 7 1 26 6 12 0 +0 0 6 2 5 5 28 3 12 1 +33 3 6 1 7 6 88 2 12 1 +53 7 2 3 6 0 57 6 12 0 +8 7 2 2 6 0 78 3 12 0 +2 7 4 4 2 0 56 3 12 0 +0 0 4 6 3 3 46 5 12 0 +0 2 4 4 3 5 20 3 12 1 +0 0 5 6 4 1 24 4 12 0 +0 7 5 2 6 2 72 4 12 0 +15 7 2 4 7 1 51 4 12 0 +900 0 6 2 5 6 34 6 12 1 +30 2 4 2 6 1 21 4 12 0 +0 7 4 4 6 2 74 7 12 0 +170 3 4 4 6 1 48 1 12 0 +900 2 3 3 7 5 28 3 12 0 +0 6 7 1 7 5 38 2 12 1 +1600 7 4 6 1 0 70 3 12 0 +0 7 4 5 4 0 72 2 12 0 +2800 0 4 5 6 0 41 3 12 0 +110 5 3 4 5 1 50 7 12 0 +1 7 6 2 5 5 73 3 12 1 +3 5 5 2 4 0 79 6 12 0 +0 4 5 1 4 5 76 2 12 1 +22 0 5 3 5 5 62 5 12 1 +63 3 6 2 6 6 30 6 12 1 +290 0 6 3 6 5 35 4 12 1 +2 7 1 2 7 1 66 4 12 0 +40 0 2 4 6 0 35 4 12 0 +67 0 6 1 5 6 57 6 12 1 +0 5 4 5 4 5 37 5 12 1 +470 7 5 5 2 1 61 3 13 0 +0 7 6 2 6 6 56 3 13 1 +4 6 3 4 5 1 53 3 13 0 +20 0 4 5 3 2 24 6 13 1 +2800 7 4 1 6 5 74 3 13 1 +0 0 4 4 3 1 36 3 13 0 +1 0 6 2 4 5 30 5 13 1 +640 0 4 7 4 1 55 2 13 0 +170 3 3 2 7 2 35 6 13 0 +270 2 3 4 6 0 26 4 13 0 +390 0 3 4 6 2 25 4 13 0 +16 2 6 7 4 3 27 3 13 0 +11 7 4 1 6 5 66 3 13 1 +0 1 5 2 6 2 39 2 13 0 +270 7 1 1 2 2 58 5 13 0 +170 2 4 4 4 0 53 3 13 1 +900 7 6 7 4 0 76 3 13 0 +270 7 5 2 7 1 51 3 13 0 +0 7 4 2 7 0 70 2 13 0 +350 3 6 3 6 6 68 4 13 1 +0 0 5 4 5 2 32 3 13 1 +6 0 5 4 5 5 55 3 13 0 +290 7 2 2 6 0 52 4 13 0 +630 7 6 4 6 4 73 2 13 1 +900 0 5 4 7 0 42 2 13 0 +31 2 4 4 3 4 23 5 13 1 +1600 5 2 3 6 0 30 7 14 0 +71 7 2 2 7 0 68 4 14 0 +200 7 5 2 3 2 68 3 14 0 +0 0 6 4 7 3 68 6 14 0 +30 5 2 3 6 0 38 5 14 0 +10 1 4 3 6 2 74 3 14 0 +0 7 5 6 3 0 59 2 14 0 +900 2 5 2 5 2 73 2 14 0 +71 7 2 3 6 0 79 3 14 0 +22 3 7 1 6 5 28 4 14 1 +0 7 6 2 6 6 50 3 14 1 +0 4 6 3 1 1 36 4 14 0 +0 3 6 2 6 6 50 3 14 1 +0 1 6 2 6 6 61 3 14 1 +7300 3 2 2 6 0 37 4 14 0 +83 0 3 4 7 0 29 6 14 0 +93 7 2 3 7 0 39 4 14 0 +0 7 4 5 4 2 83 6 14 1 +51 7 6 1 5 4 68 6 14 1 +31 2 6 1 5 6 25 4 14 1 +93 2 1 3 6 1 41 6 14 0 +0 7 3 2 6 1 67 3 14 0 +0 3 4 2 6 4 36 6 14 1 +31 4 6 2 6 4 66 4 14 1 +900 1 3 2 7 1 55 4 14 0 +0 4 3 2 6 2 42 5 14 0 +2 7 6 3 5 5 42 3 14 1 +110 3 4 5 7 1 36 3 14 0 +63 1 6 4 6 4 53 5 14 1 +900 0 3 2 5 1 36 5 14 0 +31 3 4 3 6 2 29 7 14 0 +510 1 4 4 6 0 31 3 14 0 +270 2 3 4 6 1 43 6 14 0 +9 3 3 4 7 1 33 6 14 0 +3 1 6 6 2 0 63 3 14 0 +29 1 5 2 4 2 25 5 14 0 +45 2 3 2 6 0 72 4 14 0 +83 5 3 3 6 1 40 4 14 0 +22 7 4 2 6 2 27 6 14 0 +15 3 5 4 7 2 26 4 15 0 +110 7 5 2 5 6 67 3 15 1 +8 0 4 5 5 1 21 3 15 0 +11 5 6 2 6 6 27 7 15 1 +56 4 6 5 3 0 78 6 15 1 +8 3 4 4 3 1 32 3 15 0 +100 5 4 2 6 1 68 4 15 0 +900 7 4 2 6 5 76 4 15 0 +67 7 3 3 6 0 33 5 15 0 +35 4 6 2 5 4 38 2 15 1 +35 3 4 3 5 1 49 7 15 0 +22 0 5 4 6 5 61 4 15 1 +110 7 7 1 5 4 57 3 15 1 +12 0 4 2 5 2 20 3 15 0 +7300 7 4 2 4 4 63 6 15 1 +0 0 4 1 5 4 53 3 15 1 +19 5 4 2 6 5 35 4 15 1 +470 3 4 4 7 0 39 3 15 0 +4 3 3 5 3 4 48 3 15 1 +640 4 6 2 5 4 62 3 15 1 +640 2 4 2 3 1 30 5 15 0 +200 7 7 1 4 6 26 6 15 1 +0 7 3 2 4 5 74 6 15 1 +29 4 3 4 6 2 37 5 15 0 +330 2 4 5 5 1 43 5 15 0 +19 5 5 1 4 6 68 3 15 1 +1 7 5 3 4 5 73 5 15 1 +110 5 6 1 6 6 60 7 15 1 +0 7 5 4 6 1 35 3 15 0 +350 4 3 4 6 0 29 6 15 0 +2 5 3 3 5 1 25 6 15 0 +0 7 2 2 6 0 25 7 15 0 +7 4 2 4 5 0 70 6 15 0 +71 1 6 2 5 6 41 3 15 1 +53 0 4 2 6 1 37 6 15 0 +0 0 6 1 6 6 39 5 15 1 +2 6 3 4 6 0 35 4 15 0 +190 4 2 3 6 0 62 7 15 0 +31 0 3 2 6 1 30 7 15 0 +16 7 4 2 6 0 74 4 15 0 +22 7 3 3 4 5 47 3 15 0 +3 4 4 5 3 1 43 6 15 0 +0 6 5 3 6 5 64 2 15 1 +0 7 4 3 5 2 75 4 15 1 +67 3 4 4 7 1 27 6 15 0 +40 7 4 4 6 0 21 3 15 0 +74 4 2 2 6 1 70 2 15 0 +3 6 5 2 6 5 67 3 15 1 +140 7 6 4 5 6 82 5 15 0 +14 0 2 2 6 0 40 6 15 0 +110 0 5 3 6 5 26 4 15 1 +35 3 4 3 5 1 29 6 15 0 +0 1 4 5 6 2 28 6 15 0 +310 7 6 4 3 5 65 3 15 0 +900 2 6 5 3 1 25 3 15 0 +0 7 3 2 7 1 65 2 15 0 +11 4 6 2 6 5 38 5 15 1 +0 2 4 3 5 5 72 7 15 1 +270 7 3 2 7 1 67 3 15 0 +51 7 3 1 7 0 74 3 15 0 +11 5 2 4 4 2 71 6 15 0 +2 0 4 6 4 0 47 3 15 0 +20 7 5 4 6 1 69 1 15 0 +31 3 3 3 6 1 29 6 15 0 +2 0 6 2 5 6 34 3 15 1 +5 3 4 3 6 0 43 4 15 0 +22 7 2 1 7 0 30 3 15 0 +0 7 5 5 4 0 76 2 15 0 +27 0 2 4 6 1 26 5 16 0 +7 7 4 3 6 2 76 5 16 0 +0 0 1 4 6 1 42 7 16 0 +0 4 3 1 4 5 33 3 16 1 +0 1 6 2 5 5 25 3 16 1 +2800 0 2 2 7 0 51 4 16 0 +0 4 4 2 5 4 57 3 16 1 +22 1 6 1 5 6 21 4 16 1 +9 7 5 1 4 5 79 7 16 1 +0 1 6 2 5 5 35 5 16 1 +9 5 4 2 5 4 57 6 16 1 +0 1 4 4 6 5 32 6 16 0 +37 5 4 5 5 2 51 6 16 0 +23 0 5 2 4 6 62 7 16 1 +0 4 5 1 6 5 48 4 16 1 +0 7 7 1 6 6 39 3 16 1 +0 5 3 2 6 5 26 6 16 1 +40 0 4 2 4 1 38 3 16 1 +0 5 3 3 4 0 50 4 16 0 +9 2 5 5 6 4 33 3 16 1 +15 5 4 3 6 2 36 3 16 0 +640 5 4 4 6 0 24 6 16 0 +0 4 3 2 6 0 25 5 16 0 +0 7 6 5 3 0 62 3 16 0 +0 2 4 3 3 6 33 3 16 1 +0 7 6 2 5 6 53 6 16 1 +22 7 6 2 5 6 68 6 16 1 +22 7 5 4 6 1 68 3 16 0 +10 1 6 1 5 5 38 3 16 1 +29 1 4 5 3 0 58 1 16 0 +170 7 4 2 6 5 34 6 16 1 +4 2 4 3 4 1 58 2 16 0 +11 0 3 4 7 1 35 5 16 0 +31 3 7 2 6 6 42 6 16 1 +0 7 4 4 6 0 54 3 16 0 +0 7 6 2 5 6 69 3 16 1 +360 2 4 6 5 0 35 4 16 0 +0 7 6 1 5 6 66 4 16 1 +900 2 3 2 7 0 58 3 16 0 +51 5 2 4 7 1 41 3 16 0 +0 2 5 2 6 4 35 6 16 0 +110 0 3 3 6 1 40 7 16 0 +1 7 4 7 2 0 53 1 16 0 +8 5 6 2 6 5 67 6 16 1 +5 5 4 4 6 0 32 5 16 0 +87 4 3 4 6 0 41 4 16 0 +3 1 2 1 6 1 43 7 16 0 +51 1 5 3 2 0 65 2 16 0 +350 7 3 3 7 0 60 5 16 0 +3 7 5 3 6 0 77 6 16 0 +630 0 6 5 4 1 35 4 16 0 +180 4 6 7 5 1 48 4 16 0 +0 0 6 2 6 6 52 3 16 1 +35 7 5 3 6 2 43 7 16 0 +0 7 6 2 6 6 43 5 16 1 +0 7 6 2 6 6 67 4 16 1 +6 1 4 4 7 0 56 3 16 0 +7300 2 3 3 4 0 62 4 16 0 +2 1 7 7 5 0 62 3 16 0 +35 3 3 2 6 1 22 6 16 0 +0 0 2 2 6 1 21 5 16 0 +45 3 6 1 6 6 34 3 16 1 +0 7 4 3 5 0 70 3 16 0 +5 1 3 2 6 2 50 3 16 0 +35 5 6 1 6 6 42 4 16 1 +900 5 6 2 6 6 73 3 16 1 +35 2 3 1 6 0 57 7 16 0 +0 7 6 1 5 6 40 6 16 1 +0 2 6 1 6 6 58 6 16 1 +11 7 4 6 2 1 62 3 16 0 +40 1 3 5 3 1 44 3 17 0 +0 3 5 3 7 6 30 6 17 0 +23 7 3 3 7 0 76 5 17 0 +270 3 4 3 3 1 50 4 17 0 +9 1 6 2 5 5 41 4 17 1 +0 6 6 3 6 6 77 3 17 1 +0 3 6 3 5 6 35 6 17 1 +0 7 4 3 4 3 39 4 17 0 +2 0 4 2 4 4 72 3 17 1 +0 2 6 2 5 6 42 7 17 1 +16 7 5 2 6 5 85 2 17 1 +7300 0 4 2 6 3 79 4 17 0 +0 5 2 3 6 0 39 4 17 0 +23 4 6 1 5 6 58 6 17 1 +42 0 4 2 6 5 27 6 17 1 +2 4 4 3 5 1 43 5 17 0 +0 0 3 3 6 0 58 4 17 0 +42 7 4 3 6 4 28 7 17 1 +470 2 5 3 6 5 27 6 17 0 +42 0 3 6 5 2 40 3 17 0 +0 5 1 3 6 0 43 6 17 0 +40 7 5 4 6 5 64 3 17 1 +180 7 2 2 6 0 39 6 17 0 +110 7 4 2 6 4 76 4 17 1 +140 5 3 3 6 0 64 5 17 0 +0 4 4 6 3 2 28 4 17 0 +0 2 4 2 6 1 45 3 17 0 +190 1 6 2 6 6 22 3 17 1 +35 1 3 3 6 1 27 6 17 0 +45 0 1 2 7 0 31 4 17 0 +170 1 2 2 7 0 34 6 17 0 +0 4 2 3 7 0 30 4 17 0 +0 2 6 1 6 6 64 3 17 1 +35 0 6 1 6 4 36 6 17 1 +5 7 4 3 5 4 31 2 17 1 +350 1 4 3 4 5 37 3 17 1 +4 0 6 4 2 1 48 3 17 0 +70 0 5 7 7 3 41 3 17 0 +8 2 5 2 6 5 25 4 17 1 +12 5 4 2 6 6 82 3 17 1 +5 1 6 2 5 4 36 7 17 1 +0 7 6 2 5 1 47 3 17 1 +16 6 2 3 6 0 67 4 17 0 +0 0 4 6 2 5 24 4 17 1 +9 0 4 5 3 5 33 6 17 1 +14 7 4 1 5 1 59 4 17 1 +22 7 7 1 6 6 71 4 17 1 +0 7 6 2 5 6 36 3 17 1 +1 3 3 3 5 0 41 3 17 0 +1600 5 6 2 6 6 38 6 17 1 +7300 1 6 3 6 6 32 3 17 1 +19 0 5 6 7 1 32 4 17 0 +9 6 5 4 6 0 75 6 17 0 +0 7 5 2 4 4 52 3 17 1 +1600 5 2 3 6 0 29 7 17 0 +12 7 3 4 6 0 71 3 17 0 +1 0 6 2 5 2 33 6 17 0 +0 3 1 2 7 2 67 7 17 0 +0 2 6 1 6 6 49 4 17 1 +0 0 2 3 5 1 31 7 17 0 +9 7 3 4 6 1 53 2 17 0 +0 3 2 3 7 0 35 7 17 0 +170 7 6 2 6 6 49 7 18 1 +3 7 6 4 4 0 74 3 18 0 +14 0 6 1 5 6 29 4 18 1 +1 5 2 3 6 0 27 6 18 0 +23 5 4 4 6 5 70 4 18 0 +0 0 6 1 6 6 43 6 18 1 +1 5 2 3 6 2 47 7 18 0 +0 4 4 4 6 0 42 7 18 0 +9 0 6 2 5 6 41 6 18 1 +130 2 6 4 6 6 37 4 18 1 +5 5 5 5 4 1 61 3 18 0 +4 7 4 2 6 0 84 4 18 0 +2800 7 5 3 7 0 46 6 18 0 +4 0 4 3 6 5 39 7 18 0 +6 7 2 3 6 0 53 3 18 0 +4 7 5 1 6 6 87 6 18 1 +84 2 4 6 2 0 51 3 18 0 +0 0 5 2 5 4 37 5 18 1 +9 1 4 3 5 4 37 6 18 1 +290 0 5 2 6 6 40 6 18 1 +0 3 4 4 6 2 46 6 18 0 +9 7 1 4 1 3 44 3 18 1 +0 2 4 3 6 1 37 3 18 0 +0 7 4 2 6 2 55 7 18 0 +22 0 5 2 5 1 40 6 18 1 +0 5 3 2 6 1 42 7 18 0 +640 7 6 2 6 6 40 3 18 1 +10 0 6 2 6 6 32 3 18 1 +4 5 5 2 5 4 58 7 18 1 +0 2 5 1 6 4 37 3 18 1 +640 4 4 5 5 5 51 3 18 1 +110 5 3 5 4 5 44 5 18 0 +0 2 4 5 2 0 23 2 18 0 +0 2 6 2 6 6 38 3 18 1 +67 0 3 4 6 0 42 7 18 0 +520 7 4 2 5 4 60 4 18 1 +0 3 4 3 6 1 34 4 18 0 +51 1 6 2 6 6 49 3 18 1 +0 0 4 2 3 4 40 3 18 1 +2800 7 2 2 7 0 23 4 18 0 +110 2 2 3 6 0 47 3 18 0 +7300 7 4 4 7 0 44 5 18 0 +7300 5 5 2 6 1 37 7 18 1 +0 2 6 1 6 5 26 5 18 1 +16 7 7 6 5 2 51 4 18 0 +140 4 4 4 6 0 69 3 18 0 +54 2 2 2 7 0 36 6 18 0 +2 2 2 3 6 2 28 4 18 0 +470 4 5 2 6 5 40 4 19 1 +0 1 6 1 6 5 45 4 19 1 +75 3 5 2 5 5 75 6 19 1 +11 2 6 2 5 5 32 6 19 1 +0 0 3 2 6 1 27 3 19 0 +2800 6 5 2 5 3 63 6 19 1 +140 1 5 3 6 6 79 7 19 1 +9 7 3 2 6 1 40 6 19 0 +7300 2 4 3 6 1 57 6 19 0 +45 3 3 4 5 1 44 6 19 0 +1600 7 5 2 5 6 78 6 19 1 +9 7 4 5 5 5 58 7 19 0 +0 7 2 2 7 1 55 3 19 0 +130 4 3 4 6 2 25 6 19 0 +9 0 2 3 6 0 27 7 19 0 +3500 3 4 2 7 2 21 3 19 0 +0 3 6 2 6 5 37 4 19 1 +0 0 7 3 4 5 31 3 19 1 +35 7 2 4 6 0 85 7 19 0 +900 1 4 2 6 5 33 3 19 0 +27 7 3 7 4 3 63 2 19 1 +900 7 4 4 6 1 51 3 19 0 +0 2 3 5 2 0 46 3 19 0 +64 2 5 2 6 6 26 5 19 1 +4 7 3 3 6 0 57 6 19 0 +0 3 4 2 6 1 48 3 19 1 +0 2 7 1 5 5 55 3 19 1 +53 0 3 6 4 1 37 5 19 0 +290 2 6 2 6 6 39 3 19 1 +15 2 2 3 4 1 24 3 19 1 +0 0 6 3 6 6 30 6 19 1 +35 0 3 4 6 1 36 7 19 0 +0 0 5 4 6 4 45 3 19 0 +470 1 5 2 6 2 29 3 19 0 +16 7 6 3 6 5 41 4 19 1 +40 1 5 3 5 4 28 5 19 1 +290 7 2 2 7 0 35 4 19 0 +4 7 2 3 6 0 46 4 19 0 +1 7 1 2 7 1 55 4 19 0 +140 3 2 3 6 6 65 4 19 0 +110 1 4 2 6 1 22 4 19 0 +0 1 4 4 6 1 41 4 19 0 +900 1 2 3 6 2 43 7 19 0 +0 2 4 3 6 0 49 4 19 0 +0 4 4 2 5 4 35 7 19 1 +51 7 3 3 5 1 80 3 19 0 +71 2 4 6 2 0 57 4 19 0 +900 4 3 3 6 0 48 3 19 0 +83 4 1 4 6 2 43 6 19 0 +360 3 4 4 7 0 34 4 19 0 +180 7 2 2 4 0 44 5 19 0 +1 3 6 1 6 4 49 6 20 1 +22 7 5 2 7 2 43 7 20 0 +1 0 4 3 5 6 39 4 20 1 +2 2 4 3 7 1 27 3 20 0 +34 4 6 2 6 6 30 6 20 1 +33 2 6 2 6 4 33 6 20 1 +10 1 2 3 7 0 32 5 20 0 +290 7 5 2 6 6 31 6 20 1 +0 2 5 3 7 2 27 5 20 0 +76 3 2 2 6 0 36 4 20 0 +20 7 3 2 6 2 45 5 20 0 +0 5 4 6 5 2 51 3 20 0 +0 0 6 2 3 5 36 4 20 1 +0 7 6 4 6 4 47 7 20 1 +470 4 4 4 6 1 42 6 20 0 +9 6 6 1 5 6 70 6 20 1 +0 0 3 3 6 3 40 4 20 0 +0 7 2 5 7 0 38 3 20 0 +8 0 5 1 6 4 29 3 20 1 +1 0 4 2 5 6 58 3 20 1 +1 7 4 6 1 2 28 3 20 0 +7 1 6 3 6 5 30 4 20 1 +0 3 4 3 6 2 48 5 20 0 +170 0 6 2 6 6 35 4 20 1 +270 3 6 7 6 0 38 3 20 0 +0 0 4 2 5 4 56 7 20 1 +13 4 5 3 6 5 62 4 20 1 +10 7 6 1 6 5 56 4 20 1 +22 0 6 2 5 6 32 3 20 1 +640 5 4 5 7 1 50 5 20 0 +900 3 3 4 6 1 45 6 20 0 +22 7 3 3 4 0 36 6 20 0 +62 1 6 2 6 6 49 4 20 1 +110 2 7 1 6 6 31 6 20 1 +84 4 2 3 6 2 33 7 20 0 +0 1 6 2 6 6 35 4 20 1 +13 2 4 2 5 4 73 4 20 1 +20 7 6 1 5 6 54 5 20 1 +0 3 4 2 7 1 48 3 20 0 +16 3 6 2 6 4 65 4 20 1 +6 7 5 6 5 6 46 4 20 0 +12 0 2 2 6 0 45 7 20 0 +0 7 6 2 5 6 65 7 20 1 +0 0 6 2 6 6 45 6 20 1 +170 7 4 1 5 4 89 7 20 1 +100 0 5 3 6 4 32 4 20 0 +5 4 6 4 4 1 38 4 20 0 +3500 5 2 4 2 5 33 4 20 1 +71 4 6 2 5 6 49 7 20 1 +4 7 5 2 6 5 64 6 20 1 +7300 5 5 4 7 1 55 4 20 0 +7 0 3 3 5 1 56 7 20 0 +290 4 4 5 3 5 30 6 20 0 +0 0 5 4 6 5 41 7 20 1 +0 1 6 2 5 6 39 5 20 1 +520 7 4 4 6 4 34 3 20 0 +430 5 4 5 7 1 53 3 20 0 +9 2 3 3 6 2 40 6 20 0 +40 0 3 3 6 1 48 6 20 0 +2 7 6 5 5 5 59 4 20 0 +75 7 6 2 4 4 54 4 20 1 +170 0 3 5 6 1 41 6 20 0 +170 1 2 3 6 0 41 6 20 0 +640 5 5 3 6 4 63 7 20 0 +2800 1 7 1 6 4 39 3 20 1 +9 3 7 2 5 4 46 3 20 0 +150 7 4 3 6 0 55 3 20 0 +0 7 4 1 5 3 42 3 20 1 +0 7 6 3 6 4 58 2 20 1 +100 0 3 2 6 2 42 4 20 0 +33 7 4 3 4 2 40 6 20 1 +310 7 5 2 5 1 56 6 20 1 +53 1 4 5 2 2 37 4 20 0 +13 2 3 2 6 2 37 6 20 0 +290 6 5 1 5 5 49 6 20 1 +310 7 6 1 6 6 63 4 20 1 +0 7 6 2 5 6 30 7 20 1 +54 7 4 2 6 4 62 5 20 1 +1600 0 4 3 6 1 30 6 20 0 +14 0 6 3 6 6 34 6 20 1 +25 7 6 3 6 5 41 4 20 1 +45 0 4 5 4 6 43 3 20 1 +20 2 5 2 6 4 33 5 20 0 +18 6 4 3 5 5 67 7 20 1 +740 7 5 1 6 0 55 5 20 1 +9 6 2 2 6 0 33 5 20 0 +5 0 6 1 5 5 61 4 20 1 +7300 7 4 1 6 4 45 3 20 0 +81 7 4 3 7 0 34 3 20 0 +190 1 6 2 6 6 35 3 20 1 +51 1 4 4 5 2 50 6 20 0 +7300 7 3 4 2 0 38 4 20 0 +350 0 6 2 6 5 56 3 20 1 +27 2 4 1 6 5 31 3 20 1 +33 5 6 1 4 5 40 7 20 1 +50 4 3 2 6 0 44 3 20 0 +1 7 6 5 2 2 39 4 20 0 +11 1 4 3 6 1 45 3 20 0 +51 5 3 3 6 0 72 6 20 0 +160 7 2 3 5 1 44 7 20 0 +16 7 1 3 6 0 61 7 21 0 +110 6 6 2 6 6 34 7 21 1 +110 4 5 2 5 5 61 6 21 1 +13 6 3 3 7 1 67 4 21 0 +220 7 4 1 4 6 38 6 21 1 +470 7 4 2 6 1 50 6 21 0 +22 6 6 1 6 6 62 4 21 1 +9 2 6 3 6 5 36 6 21 1 +22 3 6 3 5 4 50 6 21 1 +190 2 4 2 7 1 30 6 21 0 +100 5 6 2 6 6 59 5 21 1 +14 7 3 3 6 0 62 6 21 0 +0 7 4 3 6 3 40 4 21 0 +180 1 6 1 6 6 30 4 21 1 +3 6 3 2 6 2 47 3 21 0 +51 2 5 2 6 1 41 6 21 0 +9 2 6 1 6 6 35 7 21 1 +0 7 5 2 6 6 45 4 21 1 +0 2 4 2 6 4 34 6 21 1 +71 2 5 7 2 2 55 3 21 0 +290 1 5 3 6 2 37 4 21 0 +45 3 5 2 4 4 61 7 21 1 +0 3 4 5 4 1 62 2 21 0 +26 1 5 2 6 6 54 6 21 1 +87 3 2 3 6 1 33 6 21 0 +0 0 2 3 6 1 50 6 21 0 +630 0 3 4 7 2 37 3 21 0 +50 5 5 3 6 3 44 3 21 1 +35 7 4 3 4 3 78 3 21 0 +180 7 6 2 4 6 56 3 21 0 +32 0 2 3 4 2 29 6 21 0 +0 7 3 2 5 4 52 6 21 0 +51 1 6 4 5 1 31 3 21 0 +40 0 6 3 6 6 34 7 21 1 +0 2 5 3 6 5 31 7 21 1 +0 7 4 3 5 2 43 6 21 0 +0 1 4 4 3 5 31 3 21 1 +1 6 6 1 6 6 63 7 21 1 +7 2 2 3 7 4 38 4 21 0 +0 2 6 2 6 6 31 5 21 1 +71 2 2 1 7 0 64 3 21 0 +75 2 3 2 5 5 55 7 21 0 +55 1 2 2 6 0 41 3 21 0 +290 4 3 4 5 5 38 4 21 1 +88 4 6 3 6 5 28 6 21 1 +0 7 4 3 5 5 42 5 21 1 +16 7 2 4 3 1 43 4 21 0 +75 1 5 1 6 5 37 4 21 1 +220 1 4 2 6 3 47 5 21 0 +3 5 5 1 6 5 52 7 21 1 +130 0 5 2 6 5 32 4 21 1 +0 5 4 4 3 2 29 3 21 0 +110 2 6 2 5 4 56 3 21 1 +12 7 4 3 5 5 63 7 21 1 +180 3 3 3 6 1 35 5 21 0 +93 7 4 3 5 3 36 4 21 1 +170 7 4 2 7 0 75 5 21 0 +31 5 3 3 6 1 48 6 21 0 +62 4 7 2 6 6 36 5 21 1 +30 4 4 3 6 2 34 6 21 0 +66 7 4 3 7 1 35 5 21 0 +3 3 5 2 5 6 50 4 21 1 +18 3 5 2 5 6 39 7 21 1 +350 5 5 4 6 5 70 7 21 1 +71 7 4 2 5 6 76 3 21 1 +3500 5 5 2 5 5 35 6 21 1 +0 0 3 4 3 3 53 7 21 1 +360 6 5 2 6 4 46 6 21 1 +81 2 5 2 5 4 34 4 21 1 +350 5 4 4 6 5 69 4 21 0 +190 1 5 2 5 1 32 3 21 0 +0 7 5 1 6 6 50 2 21 1 +290 1 5 3 6 6 35 6 21 1 +18 0 6 1 6 6 67 5 21 1 +11 3 5 5 6 5 47 3 21 0 +2 2 6 3 5 4 50 6 21 1 +570 0 6 2 6 4 32 3 21 1 +310 3 5 4 6 2 58 5 21 0 +1 7 3 2 7 0 49 7 21 0 +0 2 6 3 6 1 43 4 21 1 +35 1 5 2 6 5 24 6 21 1 +22 7 5 3 4 2 58 7 21 0 +2 1 2 2 5 0 43 4 21 0 +0 7 4 3 6 5 59 3 21 1 +0 3 6 1 6 6 40 5 21 1 +310 0 5 2 7 0 35 4 21 0 +470 5 2 3 5 1 48 4 21 0 +0 4 6 1 6 6 40 3 21 1 +270 3 3 2 7 0 48 3 21 0 +110 0 2 4 6 0 47 7 21 0 +50 3 6 4 1 1 23 3 21 0 +0 0 6 1 6 6 38 3 21 1 +3 7 6 2 6 6 81 7 21 1 +31 5 3 3 6 1 48 6 21 0 +22 7 5 6 2 4 52 3 21 0 +83 2 4 1 6 3 24 6 21 1 +9 0 4 2 6 1 21 5 21 0 +5 7 5 2 6 5 70 6 21 1 +0 7 7 1 7 6 24 6 21 1 +0 7 4 3 5 1 57 7 21 0 +0 6 3 5 6 4 37 6 21 0 +27 1 3 5 3 5 25 5 21 0 +110 1 6 5 1 1 33 3 21 0 +0 7 4 6 3 0 45 3 22 0 +0 3 5 2 7 5 42 6 22 0 +350 3 3 3 6 2 47 6 22 0 +0 7 6 1 6 6 51 7 22 1 +5 7 5 4 6 5 85 2 22 0 +15 4 3 3 6 2 32 7 22 0 +35 7 3 3 6 2 31 7 22 0 +0 2 4 3 6 2 23 6 22 0 +75 3 3 3 6 0 42 6 22 0 +0 5 6 2 5 5 55 6 22 1 +16 7 6 2 6 6 45 6 22 1 +0 1 6 2 5 6 35 7 22 1 +0 0 2 4 6 0 45 6 22 0 +0 0 3 3 5 2 42 3 22 0 +4 1 6 2 6 5 37 4 22 1 +62 0 4 4 4 5 38 3 22 1 +0 3 2 2 6 1 47 7 22 0 +4 7 4 2 6 2 32 6 22 0 +56 2 5 2 6 5 35 6 22 1 +2 6 4 2 6 5 38 4 22 1 +0 0 4 4 4 3 40 3 22 0 +75 7 6 2 5 6 62 6 22 1 +10 2 2 2 6 1 28 7 22 0 +0 6 6 2 5 6 59 5 22 1 +0 2 1 2 6 0 25 6 22 0 +220 2 4 2 6 6 31 6 22 1 +0 1 7 2 6 6 45 4 22 1 +75 0 5 2 7 5 42 6 22 0 +0 3 2 2 5 1 56 7 22 0 +140 5 3 3 6 1 47 7 22 0 +290 1 6 2 5 5 38 6 22 1 +350 7 4 3 7 2 47 6 22 0 +55 1 5 2 6 6 49 4 22 1 +31 3 3 3 6 2 29 7 22 0 +17 7 2 2 6 0 57 6 22 0 +51 4 6 3 5 6 68 3 22 1 +140 7 2 2 4 0 76 6 22 0 +9 4 6 2 6 5 66 6 22 1 +0 7 5 1 6 4 59 4 22 1 +640 7 5 3 6 4 37 7 22 0 +32 2 5 2 6 6 38 6 22 1 +5 7 6 2 6 5 47 7 22 1 +8 1 5 2 4 5 36 7 22 1 +18 0 5 4 6 0 45 7 22 0 +0 6 5 2 6 5 39 7 22 1 +0 1 3 2 6 1 34 6 22 0 +0 3 6 6 4 0 49 4 22 0 +31 2 6 2 6 5 36 6 22 1 +350 7 6 1 6 6 81 5 22 1 +20 1 5 2 6 4 29 4 22 1 +70 3 5 3 4 0 45 6 22 0 +31 3 5 2 6 5 21 4 22 1 +3 7 2 4 3 6 33 6 22 1 +9 7 4 4 2 2 44 3 23 0 +59 1 2 2 6 4 52 7 23 0 +27 2 3 5 7 1 38 4 23 0 +51 4 2 3 6 2 44 5 23 0 +9 7 6 2 6 6 87 7 23 1 +0 2 7 2 6 5 22 3 23 1 +88 0 3 3 5 2 32 6 23 1 +67 0 4 5 6 4 69 3 23 0 +29 2 6 2 5 6 49 6 23 1 +5 0 6 2 6 6 53 3 23 1 +0 0 6 1 6 5 44 6 23 1 +900 1 6 2 7 5 34 6 23 1 +18 1 6 1 5 5 55 7 23 1 +190 2 3 3 6 0 35 6 23 0 +2 7 4 5 5 3 55 3 23 0 +5 3 6 3 5 5 27 6 23 1 +56 3 4 4 5 1 26 6 23 0 +75 7 4 2 6 5 54 6 23 0 +56 0 5 2 6 5 42 4 23 1 +0 5 6 1 6 6 57 7 23 1 +0 0 7 1 4 6 54 6 23 1 +75 6 6 3 6 6 55 6 23 1 +1600 7 5 3 6 6 50 7 23 1 +15 0 5 5 6 1 57 7 23 0 +19 3 5 3 7 3 46 4 23 0 +16 7 6 2 6 6 53 6 23 1 +42 2 3 3 5 0 32 7 23 0 +18 5 5 2 5 3 53 5 23 1 +0 3 3 3 6 1 39 6 23 0 +310 1 5 2 5 4 47 6 23 1 +1600 7 5 2 4 2 57 4 23 0 +23 5 6 3 6 6 49 6 23 1 +20 1 5 4 6 5 31 5 23 0 +51 5 5 3 5 5 43 6 23 1 +0 2 5 2 5 4 44 6 23 1 +0 4 4 3 6 0 39 6 23 0 +0 2 6 1 6 5 49 4 23 1 +18 7 5 4 6 4 72 6 23 1 +7300 7 5 2 6 5 50 6 23 1 +110 1 5 2 6 6 28 4 23 1 +0 0 5 2 7 3 48 7 23 1 +3500 1 3 4 7 1 32 6 23 0 +720 7 5 5 5 1 63 4 23 0 +9 4 4 5 6 5 36 4 23 1 +47 7 6 3 6 6 36 6 23 1 +350 7 3 2 7 2 53 3 23 0 +0 5 2 2 6 2 44 7 23 0 +0 0 4 2 6 6 41 7 24 1 +83 0 2 3 6 1 56 7 24 0 +1 4 4 4 6 2 63 7 24 0 +190 7 2 4 6 0 52 6 24 0 +0 7 3 3 7 2 43 7 24 0 +12 7 4 3 6 2 40 3 24 0 +9 5 5 1 7 4 69 4 24 1 +23 7 2 2 6 0 49 7 24 0 +9 1 3 3 6 2 65 7 24 0 +18 5 6 1 6 5 53 7 24 1 +0 5 5 3 5 6 50 4 24 1 +12 3 2 4 6 0 27 5 24 0 +0 6 5 3 5 5 44 6 24 1 +170 2 2 3 5 0 54 7 24 0 +0 7 4 2 6 4 33 5 24 1 +9 0 4 4 6 3 48 7 24 0 +23 3 5 2 6 5 54 5 24 1 +0 0 6 2 5 6 56 3 24 1 +9 1 2 4 7 2 34 7 24 0 +290 7 6 4 7 6 41 6 24 0 +1 0 5 1 5 6 40 6 24 1 +350 1 7 2 6 6 55 6 24 1 +20 0 4 3 5 5 38 6 24 1 +0 3 6 2 6 6 40 6 24 1 +23 1 6 1 6 6 46 4 24 1 +150 4 3 3 4 0 26 6 24 0 +31 0 5 2 7 3 49 6 24 0 +0 7 4 1 5 6 51 5 24 1 +9 2 5 2 6 4 46 6 24 0 +47 0 3 4 6 2 40 7 24 0 +900 0 3 4 7 2 30 5 24 0 +83 3 2 3 6 2 45 5 24 0 +18 7 5 4 6 4 52 7 24 1 +0 0 6 1 5 6 36 6 24 1 +20 0 4 3 5 3 49 6 24 0 +24 7 3 4 5 1 38 7 24 0 +18 0 2 4 6 1 51 7 24 0 +9 3 3 2 5 1 47 6 24 0 +0 1 6 1 5 6 52 7 24 1 +9 0 6 2 6 6 33 6 24 1 +0 4 4 2 6 6 50 4 24 1 +18 7 6 2 5 4 48 7 24 1 +19 3 2 2 6 0 36 6 24 0 +31 3 2 3 6 1 35 7 24 0 +3500 7 7 3 5 4 34 7 24 0 +0 7 2 4 5 2 53 6 24 0 +33 0 4 3 6 2 33 7 24 0 +0 1 6 3 6 6 52 6 24 1 +18 3 4 3 6 4 44 7 24 0 +0 0 3 4 4 0 48 6 24 0 +31 3 5 2 6 5 20 4 24 1 +0 5 3 2 4 6 45 6 24 1 +59 7 4 2 6 2 70 3 24 0 +0 0 3 3 4 2 39 3 24 0 +7300 7 3 3 5 1 40 7 24 1 +75 4 5 2 7 5 62 6 24 1 +0 7 5 2 6 4 46 6 24 1 +27 7 4 4 7 2 46 3 24 0 +1600 7 4 2 5 6 56 7 24 1 +0 7 6 3 6 6 55 7 24 1 +0 7 6 2 6 6 41 4 24 1 +7300 1 2 3 6 0 43 7 24 0 +16 7 7 1 7 6 34 3 24 1 +0 7 7 1 6 4 73 6 24 1 +0 7 5 2 6 6 50 6 24 1 +0 3 6 2 7 5 43 6 24 1 +0 6 6 2 5 6 46 7 24 1 +18 7 4 2 6 3 61 7 24 1 diff --git a/statsmodels/datasets/anes96/data.py b/statsmodels/datasets/anes96/data.py new file mode 100644 index 0000000..7f229a4 --- /dev/null +++ b/statsmodels/datasets/anes96/data.py @@ -0,0 +1,125 @@ +"""American National Election Survey 1996""" +from numpy import log + +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """This is public domain.""" +TITLE = __doc__ +SOURCE = """ +http://www.electionstudies.org/ + +The American National Election Studies. +""" + +DESCRSHORT = """This data is a subset of the American National Election Studies of 1996.""" + +DESCRLONG = DESCRSHORT + +NOTE = """:: + + Number of observations - 944 + Number of variables - 10 + + Variables name definitions:: + + popul - Census place population in 1000s + TVnews - Number of times per week that respondent watches TV news. + PID - Party identification of respondent. + 0 - Strong Democrat + 1 - Weak Democrat + 2 - Independent-Democrat + 3 - Independent-Indpendent + 4 - Independent-Republican + 5 - Weak Republican + 6 - Strong Republican + age : Age of respondent. + educ - Education level of respondent + 1 - 1-8 grades + 2 - Some high school + 3 - High school graduate + 4 - Some college + 5 - College degree + 6 - Master's degree + 7 - PhD + income - Income of household + 1 - None or less than $2,999 + 2 - $3,000-$4,999 + 3 - $5,000-$6,999 + 4 - $7,000-$8,999 + 5 - $9,000-$9,999 + 6 - $10,000-$10,999 + 7 - $11,000-$11,999 + 8 - $12,000-$12,999 + 9 - $13,000-$13,999 + 10 - $14,000-$14.999 + 11 - $15,000-$16,999 + 12 - $17,000-$19,999 + 13 - $20,000-$21,999 + 14 - $22,000-$24,999 + 15 - $25,000-$29,999 + 16 - $30,000-$34,999 + 17 - $35,000-$39,999 + 18 - $40,000-$44,999 + 19 - $45,000-$49,999 + 20 - $50,000-$59,999 + 21 - $60,000-$74,999 + 22 - $75,000-89,999 + 23 - $90,000-$104,999 + 24 - $105,000 and over + vote - Expected vote + 0 - Clinton + 1 - Dole + The following 3 variables all take the values: + 1 - Extremely liberal + 2 - Liberal + 3 - Slightly liberal + 4 - Moderate + 5 - Slightly conservative + 6 - Conservative + 7 - Extremely Conservative + selfLR - Respondent's self-reported political leanings from "Left" + to "Right". + ClinLR - Respondents impression of Bill Clinton's political + leanings from "Left" to "Right". + DoleLR - Respondents impression of Bob Dole's political leanings + from "Left" to "Right". + logpopul - log(popul + .1) +""" + + +def load_pandas(): + """Load the anes96 data and returns a Dataset class. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + data = _get_data() + return du.process_pandas(data, endog_idx=5, exog_idx=[10, 2, 6, 7, 8]) + + +def load(as_pandas=None): + """Load the anes96 data and returns a Dataset class. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def _get_data(): + data = du.load_csv(__file__, 'anes96.csv', sep=r'\s') + data = du.strip_column_names(data) + data['logpopul'] = log(data['popul'] + .1) + return data.astype(float) diff --git a/statsmodels/datasets/anes96/src/anes96.csv b/statsmodels/datasets/anes96/src/anes96.csv new file mode 100644 index 0000000..319e358 --- /dev/null +++ b/statsmodels/datasets/anes96/src/anes96.csv @@ -0,0 +1,945 @@ +popul TVnews selfLR ClinLR DoleLR PID age educ income vote reldist +0 7 7 1 6 6 36 3 1 1 -5 +190 1 3 3 5 1 20 4 1 0 2 +31 7 2 2 6 1 24 6 1 0 4 +83 4 3 4 5 1 28 6 1 0 1 +640 7 5 6 4 0 68 6 1 0 0 +110 3 3 4 6 1 21 4 1 0 2 +100 7 5 6 4 1 77 4 1 0 0 +31 1 5 4 5 4 21 4 1 0 -1 +180 7 4 6 3 3 31 4 1 0 -1 +2800 0 3 3 7 0 39 3 1 0 4 +1600 0 3 2 4 4 26 2 1 0 0 +330 5 4 3 6 1 31 4 1 0 1 +190 2 5 4 6 5 22 4 1 1 0 +100 7 4 4 6 0 42 5 1 0 2 +1000 7 5 7 4 0 74 1 1 0 -1 +0 7 6 7 5 0 62 3 1 0 0 +130 7 4 4 5 1 58 3 1 0 1 +5 5 3 3 6 1 24 6 1 0 3 +33 7 6 2 6 5 51 4 1 1 -4 +19 2 2 1 4 0 36 3 2 0 1 +74 7 4 4 7 2 88 2 2 0 3 +190 0 2 4 6 2 20 4 2 0 2 +12 3 4 6 3 2 27 3 2 0 -1 +0 7 6 1 6 6 44 4 2 1 -5 +19 0 4 2 2 1 45 3 2 0 0 +0 2 4 3 6 1 21 4 2 0 1 +390 5 3 4 7 1 40 5 2 0 3 +40 7 4 3 4 0 40 6 2 0 -1 +3 3 5 5 4 1 48 3 2 0 1 +450 3 4 7 1 0 34 3 2 0 0 +350 0 3 4 7 2 26 2 2 0 3 +64 3 4 4 2 1 60 2 3 0 2 +3 0 4 4 3 0 32 3 3 0 1 +0 1 4 3 7 1 31 3 3 0 2 +640 7 7 5 7 4 33 3 3 1 -2 +0 7 3 4 6 0 57 3 3 0 2 +12 7 4 3 6 1 84 3 3 0 1 +62 6 7 2 7 5 75 3 3 1 -5 +31 2 7 2 6 6 19 4 3 1 -4 +0 1 3 2 6 1 47 6 3 0 2 +180 6 5 5 5 0 51 2 3 0 0 +640 3 6 4 4 5 40 3 3 0 0 +110 0 2 3 6 1 22 6 3 0 3 +100 1 7 7 5 6 35 2 3 0 2 +100 7 4 4 7 2 43 5 3 0 3 +11 3 6 6 3 2 76 6 3 0 3 +0 7 4 3 1 6 45 3 3 1 2 +4 7 4 6 6 0 88 2 3 0 0 +35 6 4 4 2 1 46 3 4 0 2 +0 1 3 4 5 2 22 6 4 0 1 +0 7 5 1 6 5 68 3 4 1 -3 +0 2 5 2 6 5 38 3 4 1 -2 +33 7 4 3 6 3 69 2 4 0 1 +270 2 5 4 3 0 67 3 4 0 1 +45 7 2 4 6 0 88 4 4 0 2 +40 3 6 2 5 5 68 3 4 1 -3 +6 1 5 2 4 2 76 3 4 1 -2 +2 7 4 4 6 0 72 2 4 0 2 +0 0 6 2 6 6 37 6 4 1 -4 +35 3 4 2 6 0 69 3 4 0 0 +83 0 2 4 6 0 33 6 4 0 2 +3500 7 2 2 6 0 34 4 4 0 4 +100 2 4 4 7 2 30 3 4 0 3 +350 2 3 3 6 1 19 3 4 0 3 +100 3 4 6 2 0 44 3 4 0 0 +67 1 4 4 7 1 64 3 4 0 3 +30 5 7 7 2 0 37 4 4 0 5 +0 7 6 3 5 4 31 5 5 1 -2 +0 0 6 1 5 4 88 4 5 1 -4 +6 7 6 2 6 6 77 4 5 1 -4 +350 1 4 5 6 5 30 6 5 0 1 +400 1 2 3 7 1 32 4 5 0 4 +15 7 6 2 6 6 59 1 5 1 -4 +0 0 4 4 4 3 47 4 5 0 0 +3 2 4 6 5 1 22 3 5 0 -1 +22 5 4 2 6 2 55 3 5 0 0 +64 2 2 1 3 0 24 2 5 0 0 +32 5 3 7 4 1 65 1 5 0 -3 +390 7 3 6 2 2 24 3 5 0 -2 +0 7 3 4 5 3 30 3 5 0 1 +0 7 4 5 2 3 73 3 5 0 1 +59 5 3 3 5 1 73 5 5 0 2 +0 6 4 3 6 2 91 1 5 0 1 +35 7 3 2 5 0 71 2 5 0 1 +0 2 6 4 5 4 34 4 5 1 -1 +170 7 4 3 2 0 48 2 6 0 1 +12 1 6 2 6 5 42 4 6 1 -4 +40 4 6 5 4 0 72 2 6 0 1 +31 2 3 4 6 6 20 4 6 1 2 +31 7 2 2 7 0 22 4 6 0 5 +1600 1 3 3 6 1 24 6 6 0 3 +1 1 4 2 7 2 39 6 6 0 1 +4 7 6 1 6 6 83 5 6 1 -5 +190 0 6 2 6 6 39 3 6 1 -4 +53 3 5 3 6 1 33 5 6 0 -1 +31 7 4 3 6 1 53 3 6 1 1 +16 7 5 3 6 5 82 3 6 1 -1 +33 5 4 3 5 6 82 3 6 1 0 +0 3 5 3 6 5 47 6 7 1 -1 +0 3 4 2 7 4 68 3 7 0 1 +0 7 4 3 5 0 84 6 7 0 0 +27 2 6 1 6 5 35 5 7 1 -5 +84 7 4 5 6 1 67 2 7 0 1 +22 3 5 3 5 4 33 2 7 1 -2 +0 3 3 3 5 0 49 7 7 0 2 +3500 0 4 3 7 0 91 1 7 0 2 +390 7 4 5 3 1 43 3 7 0 0 +0 7 4 3 2 6 65 4 7 0 1 +16 7 5 6 3 0 69 3 7 0 1 +200 0 5 5 4 1 56 4 8 0 1 +640 0 2 3 5 0 24 6 8 0 2 +0 7 4 4 5 0 77 3 8 0 1 +45 7 6 3 7 0 74 3 8 0 -2 +12 0 7 3 6 6 25 6 8 1 -3 +20 7 6 2 5 4 85 1 8 1 -3 +7300 5 7 7 6 3 21 2 8 0 1 +64 7 6 3 1 0 24 4 8 0 2 +13 7 5 4 7 4 73 4 8 0 1 +190 0 4 5 3 2 37 3 8 0 0 +9 4 4 5 1 2 35 4 8 0 2 +0 7 4 4 7 0 47 3 8 0 3 +170 2 4 2 6 6 21 3 8 1 0 +640 7 3 6 4 0 55 5 8 0 -2 +9 4 6 3 6 6 30 6 8 1 -3 +0 4 5 3 6 4 76 7 8 1 -1 +7300 5 3 4 3 3 36 4 8 0 -1 +2800 0 1 1 7 0 38 3 9 0 6 +0 7 2 3 5 0 67 3 9 0 2 +30 7 7 3 7 6 70 2 9 1 -4 +44 7 5 3 7 2 78 4 9 0 0 +7300 1 2 2 7 3 27 6 9 0 5 +330 4 3 5 6 1 51 4 9 0 1 +3 0 6 7 3 5 33 4 9 0 2 +51 2 6 1 5 6 80 6 9 1 -4 +29 5 4 1 6 1 79 1 9 0 -1 +630 2 6 4 5 4 66 1 9 1 -1 +170 0 4 1 6 0 32 3 10 0 -1 +33 7 4 5 7 0 70 2 10 0 2 +0 3 2 3 6 3 42 3 10 0 3 +9 5 5 4 5 5 73 4 10 1 -1 +22 4 4 4 6 0 87 2 10 0 2 +100 0 7 5 1 1 30 5 10 0 4 +2 2 4 4 5 3 52 3 10 0 1 +0 6 5 3 6 1 62 4 10 0 -1 +50 7 6 3 4 0 67 3 10 0 -1 +15 4 6 3 4 4 37 6 10 0 -1 +3 4 3 5 7 0 37 4 10 0 2 +720 5 1 5 6 1 64 6 10 0 1 +640 7 1 1 5 0 34 3 10 0 4 +5 7 4 4 7 0 70 3 10 0 3 +24 2 6 2 6 6 31 5 10 1 -4 +22 7 2 2 6 0 29 6 11 0 4 +55 7 4 5 4 1 71 2 11 0 -1 +0 2 4 4 4 0 67 1 11 0 0 +1600 5 4 4 6 0 41 7 11 0 2 +170 6 1 2 6 0 49 6 11 0 4 +1000 7 4 4 5 0 42 5 11 0 1 +63 0 6 3 2 0 78 2 11 0 1 +110 0 4 1 6 1 24 3 11 0 -1 +16 7 4 6 6 1 29 3 11 0 0 +100 3 4 2 6 5 39 5 11 1 0 +7300 3 5 3 6 1 19 4 11 0 -1 +22 2 4 2 7 1 32 5 11 0 1 +71 3 4 2 6 5 69 3 11 1 0 +900 4 5 2 5 5 83 3 11 1 -3 +35 7 4 1 5 4 76 2 11 1 -2 +2 7 7 1 2 0 62 2 11 0 -1 +83 2 3 3 6 0 47 7 11 0 3 +370 5 6 7 4 0 35 3 11 0 1 +12 0 4 5 3 4 23 3 11 0 0 +370 7 4 4 1 1 79 4 11 0 3 +100 7 6 2 6 5 64 5 11 1 -4 +470 7 6 2 4 5 70 4 11 1 -2 +22 7 6 1 6 6 87 5 11 1 -5 +2800 0 3 6 1 0 28 2 12 0 -1 +47 5 3 5 7 1 58 3 12 0 2 +900 5 4 4 6 1 85 2 12 0 2 +330 7 3 6 4 0 62 3 12 0 -2 +84 0 3 2 7 1 26 6 12 0 3 +0 0 6 2 5 5 28 3 12 1 -3 +33 3 6 1 7 6 88 2 12 1 -4 +53 7 2 3 6 0 57 6 12 0 3 +8 7 2 2 6 0 78 3 12 0 4 +2 7 4 4 2 0 56 3 12 0 2 +0 0 4 6 3 3 46 5 12 0 -1 +0 2 4 4 3 5 20 3 12 1 1 +0 0 5 6 4 1 24 4 12 0 0 +0 7 5 2 6 2 72 4 12 0 -2 +15 7 2 4 7 1 51 4 12 0 3 +900 0 6 2 5 6 34 6 12 1 -3 +30 2 4 2 6 1 21 4 12 0 0 +0 7 4 4 6 2 74 7 12 0 2 +170 3 4 4 6 1 48 1 12 0 2 +900 2 3 3 7 5 28 3 12 0 4 +0 6 7 1 7 5 38 2 12 1 -6 +1600 7 4 6 1 0 70 3 12 0 1 +0 7 4 5 4 0 72 2 12 0 -1 +2800 0 4 5 6 0 41 3 12 0 1 +110 5 3 4 5 1 50 7 12 0 1 +1 7 6 2 5 5 73 3 12 1 -3 +3 5 5 2 4 0 79 6 12 0 -2 +0 4 5 1 4 5 76 2 12 1 -3 +22 0 5 3 5 5 62 5 12 1 -2 +63 3 6 2 6 6 30 6 12 1 -4 +290 0 6 3 6 5 35 4 12 1 -3 +2 7 1 2 7 1 66 4 12 0 5 +40 0 2 4 6 0 35 4 12 0 2 +67 0 6 1 5 6 57 6 12 1 -4 +0 5 4 5 4 5 37 5 12 1 -1 +470 7 5 5 2 1 61 3 13 0 3 +0 7 6 2 6 6 56 3 13 1 -4 +4 6 3 4 5 1 53 3 13 0 1 +20 0 4 5 3 2 24 6 13 1 0 +2800 7 4 1 6 5 74 3 13 1 -1 +0 0 4 4 3 1 36 3 13 0 1 +1 0 6 2 4 5 30 5 13 1 -2 +640 0 4 7 4 1 55 2 13 0 -3 +170 3 3 2 7 2 35 6 13 0 3 +270 2 3 4 6 0 26 4 13 0 2 +390 0 3 4 6 2 25 4 13 0 2 +16 2 6 7 4 3 27 3 13 0 1 +11 7 4 1 6 5 66 3 13 1 -1 +0 1 5 2 6 2 39 2 13 0 -2 +270 7 1 1 2 2 58 5 13 0 1 +170 2 4 4 4 0 53 3 13 1 0 +900 7 6 7 4 0 76 3 13 0 1 +270 7 5 2 7 1 51 3 13 0 -1 +0 7 4 2 7 0 70 2 13 0 1 +350 3 6 3 6 6 68 4 13 1 -3 +0 0 5 4 5 2 32 3 13 1 -1 +6 0 5 4 5 5 55 3 13 0 -1 +290 7 2 2 6 0 52 4 13 0 4 +630 7 6 4 6 4 73 2 13 1 -2 +900 0 5 4 7 0 42 2 13 0 1 +31 2 4 4 3 4 23 5 13 1 1 +1600 5 2 3 6 0 30 7 14 0 3 +71 7 2 2 7 0 68 4 14 0 5 +200 7 5 2 3 2 68 3 14 0 -1 +0 0 6 4 7 3 68 6 14 0 -1 +30 5 2 3 6 0 38 5 14 0 3 +10 1 4 3 6 2 74 3 14 0 1 +0 7 5 6 3 0 59 2 14 0 1 +900 2 5 2 5 2 73 2 14 0 -3 +71 7 2 3 6 0 79 3 14 0 3 +22 3 7 1 6 5 28 4 14 1 -5 +0 7 6 2 6 6 50 3 14 1 -4 +0 4 6 3 1 1 36 4 14 0 2 +0 3 6 2 6 6 50 3 14 1 -4 +0 1 6 2 6 6 61 3 14 1 -4 +7300 3 2 2 6 0 37 4 14 0 4 +83 0 3 4 7 0 29 6 14 0 3 +93 7 2 3 7 0 39 4 14 0 4 +0 7 4 5 4 2 83 6 14 1 -1 +51 7 6 1 5 4 68 6 14 1 -4 +31 2 6 1 5 6 25 4 14 1 -4 +93 2 1 3 6 1 41 6 14 0 3 +0 7 3 2 6 1 67 3 14 0 2 +0 3 4 2 6 4 36 6 14 1 0 +31 4 6 2 6 4 66 4 14 1 -4 +900 1 3 2 7 1 55 4 14 0 3 +0 4 3 2 6 2 42 5 14 0 2 +2 7 6 3 5 5 42 3 14 1 -2 +110 3 4 5 7 1 36 3 14 0 2 +63 1 6 4 6 4 53 5 14 1 -2 +900 0 3 2 5 1 36 5 14 0 1 +31 3 4 3 6 2 29 7 14 0 1 +510 1 4 4 6 0 31 3 14 0 2 +270 2 3 4 6 1 43 6 14 0 2 +9 3 3 4 7 1 33 6 14 0 3 +3 1 6 6 2 0 63 3 14 0 4 +29 1 5 2 4 2 25 5 14 0 -2 +45 2 3 2 6 0 72 4 14 0 2 +83 5 3 3 6 1 40 4 14 0 3 +22 7 4 2 6 2 27 6 14 0 0 +15 3 5 4 7 2 26 4 15 0 1 +110 7 5 2 5 6 67 3 15 1 -3 +8 0 4 5 5 1 21 3 15 0 0 +11 5 6 2 6 6 27 7 15 1 -4 +56 4 6 5 3 0 78 6 15 1 2 +8 3 4 4 3 1 32 3 15 0 1 +100 5 4 2 6 1 68 4 15 0 0 +900 7 4 2 6 5 76 4 15 0 0 +67 7 3 3 6 0 33 5 15 0 3 +35 4 6 2 5 4 38 2 15 1 -3 +35 3 4 3 5 1 49 7 15 0 0 +22 0 5 4 6 5 61 4 15 1 0 +110 7 7 1 5 4 57 3 15 1 -4 +12 0 4 2 5 2 20 3 15 0 -1 +7300 7 4 2 4 4 63 6 15 1 -2 +0 0 4 1 5 4 53 3 15 1 -2 +19 5 4 2 6 5 35 4 15 1 0 +470 3 4 4 7 0 39 3 15 0 3 +4 3 3 5 3 4 48 3 15 1 -2 +640 4 6 2 5 4 62 3 15 1 -3 +640 2 4 2 3 1 30 5 15 0 -1 +200 7 7 1 4 6 26 6 15 1 -3 +0 7 3 2 4 5 74 6 15 1 0 +29 4 3 4 6 2 37 5 15 0 2 +330 2 4 5 5 1 43 5 15 0 0 +19 5 5 1 4 6 68 3 15 1 -3 +1 7 5 3 4 5 73 5 15 1 -1 +110 5 6 1 6 6 60 7 15 1 -5 +0 7 5 4 6 1 35 3 15 0 0 +350 4 3 4 6 0 29 6 15 0 2 +2 5 3 3 5 1 25 6 15 0 2 +0 7 2 2 6 0 25 7 15 0 4 +7 4 2 4 5 0 70 6 15 0 1 +71 1 6 2 5 6 41 3 15 1 -3 +53 0 4 2 6 1 37 6 15 0 0 +0 0 6 1 6 6 39 5 15 1 -5 +2 6 3 4 6 0 35 4 15 0 2 +190 4 2 3 6 0 62 7 15 0 3 +31 0 3 2 6 1 30 7 15 0 2 +16 7 4 2 6 0 74 4 15 0 0 +22 7 3 3 4 5 47 3 15 0 1 +3 4 4 5 3 1 43 6 15 0 0 +0 6 5 3 6 5 64 2 15 1 -1 +0 7 4 3 5 2 75 4 15 1 0 +67 3 4 4 7 1 27 6 15 0 3 +40 7 4 4 6 0 21 3 15 0 2 +74 4 2 2 6 1 70 2 15 0 4 +3 6 5 2 6 5 67 3 15 1 -2 +140 7 6 4 5 6 82 5 15 0 -1 +14 0 2 2 6 0 40 6 15 0 4 +110 0 5 3 6 5 26 4 15 1 -1 +35 3 4 3 5 1 29 6 15 0 0 +0 1 4 5 6 2 28 6 15 0 1 +310 7 6 4 3 5 65 3 15 0 1 +900 2 6 5 3 1 25 3 15 0 2 +0 7 3 2 7 1 65 2 15 0 3 +11 4 6 2 6 5 38 5 15 1 -4 +0 2 4 3 5 5 72 7 15 1 0 +270 7 3 2 7 1 67 3 15 0 3 +51 7 3 1 7 0 74 3 15 0 2 +11 5 2 4 4 2 71 6 15 0 0 +2 0 4 6 4 0 47 3 15 0 -2 +20 7 5 4 6 1 69 1 15 0 0 +31 3 3 3 6 1 29 6 15 0 3 +2 0 6 2 5 6 34 3 15 1 -3 +5 3 4 3 6 0 43 4 15 0 1 +22 7 2 1 7 0 30 3 15 0 4 +0 7 5 5 4 0 76 2 15 0 1 +27 0 2 4 6 1 26 5 16 0 2 +7 7 4 3 6 2 76 5 16 0 1 +0 0 1 4 6 1 42 7 16 0 2 +0 4 3 1 4 5 33 3 16 1 -1 +0 1 6 2 5 5 25 3 16 1 -3 +2800 0 2 2 7 0 51 4 16 0 5 +0 4 4 2 5 4 57 3 16 1 -1 +22 1 6 1 5 6 21 4 16 1 -4 +9 7 5 1 4 5 79 7 16 1 -3 +0 1 6 2 5 5 35 5 16 1 -3 +9 5 4 2 5 4 57 6 16 1 -1 +0 1 4 4 6 5 32 6 16 0 2 +37 5 4 5 5 2 51 6 16 0 0 +23 0 5 2 4 6 62 7 16 1 -2 +0 4 5 1 6 5 48 4 16 1 -3 +0 7 7 1 6 6 39 3 16 1 -5 +0 5 3 2 6 5 26 6 16 1 2 +40 0 4 2 4 1 38 3 16 1 -2 +0 5 3 3 4 0 50 4 16 0 1 +9 2 5 5 6 4 33 3 16 1 1 +15 5 4 3 6 2 36 3 16 0 1 +640 5 4 4 6 0 24 6 16 0 2 +0 4 3 2 6 0 25 5 16 0 2 +0 7 6 5 3 0 62 3 16 0 2 +0 2 4 3 3 6 33 3 16 1 0 +0 7 6 2 5 6 53 6 16 1 -3 +22 7 6 2 5 6 68 6 16 1 -3 +22 7 5 4 6 1 68 3 16 0 0 +10 1 6 1 5 5 38 3 16 1 -4 +29 1 4 5 3 0 58 1 16 0 0 +170 7 4 2 6 5 34 6 16 1 0 +4 2 4 3 4 1 58 2 16 0 -1 +11 0 3 4 7 1 35 5 16 0 3 +31 3 7 2 6 6 42 6 16 1 -4 +0 7 4 4 6 0 54 3 16 0 2 +0 7 6 2 5 6 69 3 16 1 -3 +360 2 4 6 5 0 35 4 16 0 -1 +0 7 6 1 5 6 66 4 16 1 -4 +900 2 3 2 7 0 58 3 16 0 3 +51 5 2 4 7 1 41 3 16 0 3 +0 2 5 2 6 4 35 6 16 0 -2 +110 0 3 3 6 1 40 7 16 0 3 +1 7 4 7 2 0 53 1 16 0 -1 +8 5 6 2 6 5 67 6 16 1 -4 +5 5 4 4 6 0 32 5 16 0 2 +87 4 3 4 6 0 41 4 16 0 2 +3 1 2 1 6 1 43 7 16 0 3 +51 1 5 3 2 0 65 2 16 0 1 +350 7 3 3 7 0 60 5 16 0 4 +3 7 5 3 6 0 77 6 16 0 -1 +630 0 6 5 4 1 35 4 16 0 1 +180 4 6 7 5 1 48 4 16 0 0 +0 0 6 2 6 6 52 3 16 1 -4 +35 7 5 3 6 2 43 7 16 0 -1 +0 7 6 2 6 6 43 5 16 1 -4 +0 7 6 2 6 6 67 4 16 1 -4 +6 1 4 4 7 0 56 3 16 0 3 +7300 2 3 3 4 0 62 4 16 0 1 +2 1 7 7 5 0 62 3 16 0 2 +35 3 3 2 6 1 22 6 16 0 2 +0 0 2 2 6 1 21 5 16 0 4 +45 3 6 1 6 6 34 3 16 1 -5 +0 7 4 3 5 0 70 3 16 0 0 +5 1 3 2 6 2 50 3 16 0 2 +35 5 6 1 6 6 42 4 16 1 -5 +900 5 6 2 6 6 73 3 16 1 -4 +35 2 3 1 6 0 57 7 16 0 1 +0 7 6 1 5 6 40 6 16 1 -4 +0 2 6 1 6 6 58 6 16 1 -5 +11 7 4 6 2 1 62 3 16 0 0 +40 1 3 5 3 1 44 3 17 0 -2 +0 3 5 3 7 6 30 6 17 0 0 +23 7 3 3 7 0 76 5 17 0 4 +270 3 4 3 3 1 50 4 17 0 0 +9 1 6 2 5 5 41 4 17 1 -3 +0 6 6 3 6 6 77 3 17 1 -3 +0 3 6 3 5 6 35 6 17 1 -2 +0 7 4 3 4 3 39 4 17 0 -1 +2 0 4 2 4 4 72 3 17 1 -2 +0 2 6 2 5 6 42 7 17 1 -3 +16 7 5 2 6 5 85 2 17 1 -2 +7300 0 4 2 6 3 79 4 17 0 0 +0 5 2 3 6 0 39 4 17 0 3 +23 4 6 1 5 6 58 6 17 1 -4 +42 0 4 2 6 5 27 6 17 1 0 +2 4 4 3 5 1 43 5 17 0 0 +0 0 3 3 6 0 58 4 17 0 3 +42 7 4 3 6 4 28 7 17 1 1 +470 2 5 3 6 5 27 6 17 0 -1 +42 0 3 6 5 2 40 3 17 0 -1 +0 5 1 3 6 0 43 6 17 0 3 +40 7 5 4 6 5 64 3 17 1 0 +180 7 2 2 6 0 39 6 17 0 4 +110 7 4 2 6 4 76 4 17 1 0 +140 5 3 3 6 0 64 5 17 0 3 +0 4 4 6 3 2 28 4 17 0 -1 +0 2 4 2 6 1 45 3 17 0 0 +190 1 6 2 6 6 22 3 17 1 -4 +35 1 3 3 6 1 27 6 17 0 3 +45 0 1 2 7 0 31 4 17 0 5 +170 1 2 2 7 0 34 6 17 0 5 +0 4 2 3 7 0 30 4 17 0 4 +0 2 6 1 6 6 64 3 17 1 -5 +35 0 6 1 6 4 36 6 17 1 -5 +5 7 4 3 5 4 31 2 17 1 0 +350 1 4 3 4 5 37 3 17 1 -1 +4 0 6 4 2 1 48 3 17 0 2 +70 0 5 7 7 3 41 3 17 0 0 +8 2 5 2 6 5 25 4 17 1 -2 +12 5 4 2 6 6 82 3 17 1 0 +5 1 6 2 5 4 36 7 17 1 -3 +0 7 6 2 5 1 47 3 17 1 -3 +16 6 2 3 6 0 67 4 17 0 3 +0 0 4 6 2 5 24 4 17 1 0 +9 0 4 5 3 5 33 6 17 1 0 +14 7 4 1 5 1 59 4 17 1 -2 +22 7 7 1 6 6 71 4 17 1 -5 +0 7 6 2 5 6 36 3 17 1 -3 +1 3 3 3 5 0 41 3 17 0 2 +1600 5 6 2 6 6 38 6 17 1 -4 +7300 1 6 3 6 6 32 3 17 1 -3 +19 0 5 6 7 1 32 4 17 0 1 +9 6 5 4 6 0 75 6 17 0 0 +0 7 5 2 4 4 52 3 17 1 -2 +1600 5 2 3 6 0 29 7 17 0 3 +12 7 3 4 6 0 71 3 17 0 2 +1 0 6 2 5 2 33 6 17 0 -3 +0 3 1 2 7 2 67 7 17 0 5 +0 2 6 1 6 6 49 4 17 1 -5 +0 0 2 3 5 1 31 7 17 0 2 +9 7 3 4 6 1 53 2 17 0 2 +0 3 2 3 7 0 35 7 17 0 4 +170 7 6 2 6 6 49 7 18 1 -4 +3 7 6 4 4 0 74 3 18 0 0 +14 0 6 1 5 6 29 4 18 1 -4 +1 5 2 3 6 0 27 6 18 0 3 +23 5 4 4 6 5 70 4 18 0 2 +0 0 6 1 6 6 43 6 18 1 -5 +1 5 2 3 6 2 47 7 18 0 3 +0 4 4 4 6 0 42 7 18 0 2 +9 0 6 2 5 6 41 6 18 1 -3 +130 2 6 4 6 6 37 4 18 1 -2 +5 5 5 5 4 1 61 3 18 0 1 +4 7 4 2 6 0 84 4 18 0 0 +2800 7 5 3 7 0 46 6 18 0 0 +4 0 4 3 6 5 39 7 18 0 1 +6 7 2 3 6 0 53 3 18 0 3 +4 7 5 1 6 6 87 6 18 1 -3 +84 2 4 6 2 0 51 3 18 0 0 +0 0 5 2 5 4 37 5 18 1 -3 +9 1 4 3 5 4 37 6 18 1 0 +290 0 5 2 6 6 40 6 18 1 -2 +0 3 4 4 6 2 46 6 18 0 2 +9 7 1 4 1 3 44 3 18 1 -3 +0 2 4 3 6 1 37 3 18 0 1 +0 7 4 2 6 2 55 7 18 0 0 +22 0 5 2 5 1 40 6 18 1 -3 +0 5 3 2 6 1 42 7 18 0 2 +640 7 6 2 6 6 40 3 18 1 -4 +10 0 6 2 6 6 32 3 18 1 -4 +4 5 5 2 5 4 58 7 18 1 -3 +0 2 5 1 6 4 37 3 18 1 -3 +640 4 4 5 5 5 51 3 18 1 0 +110 5 3 5 4 5 44 5 18 0 -1 +0 2 4 5 2 0 23 2 18 0 1 +0 2 6 2 6 6 38 3 18 1 -4 +67 0 3 4 6 0 42 7 18 0 2 +520 7 4 2 5 4 60 4 18 1 -1 +0 3 4 3 6 1 34 4 18 0 1 +51 1 6 2 6 6 49 3 18 1 -4 +0 0 4 2 3 4 40 3 18 1 -1 +2800 7 2 2 7 0 23 4 18 0 5 +110 2 2 3 6 0 47 3 18 0 3 +7300 7 4 4 7 0 44 5 18 0 3 +7300 5 5 2 6 1 37 7 18 1 -2 +0 2 6 1 6 5 26 5 18 1 -5 +16 7 7 6 5 2 51 4 18 0 1 +140 4 4 4 6 0 69 3 18 0 2 +54 2 2 2 7 0 36 6 18 0 5 +2 2 2 3 6 2 28 4 18 0 3 +470 4 5 2 6 5 40 4 19 1 -2 +0 1 6 1 6 5 45 4 19 1 -5 +75 3 5 2 5 5 75 6 19 1 -3 +11 2 6 2 5 5 32 6 19 1 -3 +0 0 3 2 6 1 27 3 19 0 2 +2800 6 5 2 5 3 63 6 19 1 -3 +140 1 5 3 6 6 79 7 19 1 -1 +9 7 3 2 6 1 40 6 19 0 2 +7300 2 4 3 6 1 57 6 19 0 1 +45 3 3 4 5 1 44 6 19 0 1 +1600 7 5 2 5 6 78 6 19 1 -3 +9 7 4 5 5 5 58 7 19 0 0 +0 7 2 2 7 1 55 3 19 0 5 +130 4 3 4 6 2 25 6 19 0 2 +9 0 2 3 6 0 27 7 19 0 3 +3500 3 4 2 7 2 21 3 19 0 1 +0 3 6 2 6 5 37 4 19 1 -4 +0 0 7 3 4 5 31 3 19 1 -1 +35 7 2 4 6 0 85 7 19 0 2 +900 1 4 2 6 5 33 3 19 0 0 +27 7 3 7 4 3 63 2 19 1 -3 +900 7 4 4 6 1 51 3 19 0 2 +0 2 3 5 2 0 46 3 19 0 -1 +64 2 5 2 6 6 26 5 19 1 -2 +4 7 3 3 6 0 57 6 19 0 3 +0 3 4 2 6 1 48 3 19 1 0 +0 2 7 1 5 5 55 3 19 1 -4 +53 0 3 6 4 1 37 5 19 0 -2 +290 2 6 2 6 6 39 3 19 1 -4 +15 2 2 3 4 1 24 3 19 1 1 +0 0 6 3 6 6 30 6 19 1 -3 +35 0 3 4 6 1 36 7 19 0 2 +0 0 5 4 6 4 45 3 19 0 0 +470 1 5 2 6 2 29 3 19 0 -2 +16 7 6 3 6 5 41 4 19 1 -3 +40 1 5 3 5 4 28 5 19 1 -2 +290 7 2 2 7 0 35 4 19 0 5 +4 7 2 3 6 0 46 4 19 0 3 +1 7 1 2 7 1 55 4 19 0 5 +140 3 2 3 6 6 65 4 19 0 3 +110 1 4 2 6 1 22 4 19 0 0 +0 1 4 4 6 1 41 4 19 0 2 +900 1 2 3 6 2 43 7 19 0 3 +0 2 4 3 6 0 49 4 19 0 1 +0 4 4 2 5 4 35 7 19 1 -1 +51 7 3 3 5 1 80 3 19 0 2 +71 2 4 6 2 0 57 4 19 0 0 +900 4 3 3 6 0 48 3 19 0 3 +83 4 1 4 6 2 43 6 19 0 2 +360 3 4 4 7 0 34 4 19 0 3 +180 7 2 2 4 0 44 5 19 0 2 +1 3 6 1 6 4 49 6 20 1 -5 +22 7 5 2 7 2 43 7 20 0 -1 +1 0 4 3 5 6 39 4 20 1 0 +2 2 4 3 7 1 27 3 20 0 2 +34 4 6 2 6 6 30 6 20 1 -4 +33 2 6 2 6 4 33 6 20 1 -4 +10 1 2 3 7 0 32 5 20 0 4 +290 7 5 2 6 6 31 6 20 1 -2 +0 2 5 3 7 2 27 5 20 0 0 +76 3 2 2 6 0 36 4 20 0 4 +20 7 3 2 6 2 45 5 20 0 2 +0 5 4 6 5 2 51 3 20 0 -1 +0 0 6 2 3 5 36 4 20 1 -1 +0 7 6 4 6 4 47 7 20 1 -2 +470 4 4 4 6 1 42 6 20 0 2 +9 6 6 1 5 6 70 6 20 1 -4 +0 0 3 3 6 3 40 4 20 0 3 +0 7 2 5 7 0 38 3 20 0 2 +8 0 5 1 6 4 29 3 20 1 -3 +1 0 4 2 5 6 58 3 20 1 -1 +1 7 4 6 1 2 28 3 20 0 1 +7 1 6 3 6 5 30 4 20 1 -3 +0 3 4 3 6 2 48 5 20 0 1 +170 0 6 2 6 6 35 4 20 1 -4 +270 3 6 7 6 0 38 3 20 0 -1 +0 0 4 2 5 4 56 7 20 1 -1 +13 4 5 3 6 5 62 4 20 1 -1 +10 7 6 1 6 5 56 4 20 1 -5 +22 0 6 2 5 6 32 3 20 1 -3 +640 5 4 5 7 1 50 5 20 0 2 +900 3 3 4 6 1 45 6 20 0 2 +22 7 3 3 4 0 36 6 20 0 1 +62 1 6 2 6 6 49 4 20 1 -4 +110 2 7 1 6 6 31 6 20 1 -5 +84 4 2 3 6 2 33 7 20 0 3 +0 1 6 2 6 6 35 4 20 1 -4 +13 2 4 2 5 4 73 4 20 1 -1 +20 7 6 1 5 6 54 5 20 1 -4 +0 3 4 2 7 1 48 3 20 0 1 +16 3 6 2 6 4 65 4 20 1 -4 +6 7 5 6 5 6 46 4 20 0 -1 +12 0 2 2 6 0 45 7 20 0 4 +0 7 6 2 5 6 65 7 20 1 -3 +0 0 6 2 6 6 45 6 20 1 -4 +170 7 4 1 5 4 89 7 20 1 -2 +100 0 5 3 6 4 32 4 20 0 -1 +5 4 6 4 4 1 38 4 20 0 0 +3500 5 2 4 2 5 33 4 20 1 -2 +71 4 6 2 5 6 49 7 20 1 -3 +4 7 5 2 6 5 64 6 20 1 -2 +7300 5 5 4 7 1 55 4 20 0 1 +7 0 3 3 5 1 56 7 20 0 2 +290 4 4 5 3 5 30 6 20 0 0 +0 0 5 4 6 5 41 7 20 1 0 +0 1 6 2 5 6 39 5 20 1 -3 +520 7 4 4 6 4 34 3 20 0 2 +430 5 4 5 7 1 53 3 20 0 2 +9 2 3 3 6 2 40 6 20 0 3 +40 0 3 3 6 1 48 6 20 0 3 +2 7 6 5 5 5 59 4 20 0 0 +75 7 6 2 4 4 54 4 20 1 -2 +170 0 3 5 6 1 41 6 20 0 1 +170 1 2 3 6 0 41 6 20 0 3 +640 5 5 3 6 4 63 7 20 0 -1 +2800 1 7 1 6 4 39 3 20 1 -5 +9 3 7 2 5 4 46 3 20 0 -3 +150 7 4 3 6 0 55 3 20 0 1 +0 7 4 1 5 3 42 3 20 1 -2 +0 7 6 3 6 4 58 2 20 1 -3 +100 0 3 2 6 2 42 4 20 0 2 +33 7 4 3 4 2 40 6 20 1 -1 +310 7 5 2 5 1 56 6 20 1 -3 +53 1 4 5 2 2 37 4 20 0 1 +13 2 3 2 6 2 37 6 20 0 2 +290 6 5 1 5 5 49 6 20 1 -4 +310 7 6 1 6 6 63 4 20 1 -5 +0 7 6 2 5 6 30 7 20 1 -3 +54 7 4 2 6 4 62 5 20 1 0 +1600 0 4 3 6 1 30 6 20 0 1 +14 0 6 3 6 6 34 6 20 1 -3 +25 7 6 3 6 5 41 4 20 1 -3 +45 0 4 5 4 6 43 3 20 1 -1 +20 2 5 2 6 4 33 5 20 0 -2 +18 6 4 3 5 5 67 7 20 1 0 +740 7 5 1 6 0 55 5 20 1 -3 +9 6 2 2 6 0 33 5 20 0 4 +5 0 6 1 5 5 61 4 20 1 -4 +7300 7 4 1 6 4 45 3 20 0 -1 +81 7 4 3 7 0 34 3 20 0 2 +190 1 6 2 6 6 35 3 20 1 -4 +51 1 4 4 5 2 50 6 20 0 1 +7300 7 3 4 2 0 38 4 20 0 0 +350 0 6 2 6 5 56 3 20 1 -4 +27 2 4 1 6 5 31 3 20 1 -1 +33 5 6 1 4 5 40 7 20 1 -3 +50 4 3 2 6 0 44 3 20 0 2 +1 7 6 5 2 2 39 4 20 0 3 +11 1 4 3 6 1 45 3 20 0 1 +51 5 3 3 6 0 72 6 20 0 3 +160 7 2 3 5 1 44 7 20 0 2 +16 7 1 3 6 0 61 7 21 0 3 +110 6 6 2 6 6 34 7 21 1 -4 +110 4 5 2 5 5 61 6 21 1 -3 +13 6 3 3 7 1 67 4 21 0 4 +220 7 4 1 4 6 38 6 21 1 -3 +470 7 4 2 6 1 50 6 21 0 0 +22 6 6 1 6 6 62 4 21 1 -5 +9 2 6 3 6 5 36 6 21 1 -3 +22 3 6 3 5 4 50 6 21 1 -2 +190 2 4 2 7 1 30 6 21 0 1 +100 5 6 2 6 6 59 5 21 1 -4 +14 7 3 3 6 0 62 6 21 0 3 +0 7 4 3 6 3 40 4 21 0 1 +180 1 6 1 6 6 30 4 21 1 -5 +3 6 3 2 6 2 47 3 21 0 2 +51 2 5 2 6 1 41 6 21 0 -2 +9 2 6 1 6 6 35 7 21 1 -5 +0 7 5 2 6 6 45 4 21 1 -2 +0 2 4 2 6 4 34 6 21 1 0 +71 2 5 7 2 2 55 3 21 0 1 +290 1 5 3 6 2 37 4 21 0 -1 +45 3 5 2 4 4 61 7 21 1 -2 +0 3 4 5 4 1 62 2 21 0 -1 +26 1 5 2 6 6 54 6 21 1 -2 +87 3 2 3 6 1 33 6 21 0 3 +0 0 2 3 6 1 50 6 21 0 3 +630 0 3 4 7 2 37 3 21 0 3 +50 5 5 3 6 3 44 3 21 1 -1 +35 7 4 3 4 3 78 3 21 0 -1 +180 7 6 2 4 6 56 3 21 0 -2 +32 0 2 3 4 2 29 6 21 0 1 +0 7 3 2 5 4 52 6 21 0 1 +51 1 6 4 5 1 31 3 21 0 -1 +40 0 6 3 6 6 34 7 21 1 -3 +0 2 5 3 6 5 31 7 21 1 -1 +0 7 4 3 5 2 43 6 21 0 0 +0 1 4 4 3 5 31 3 21 1 1 +1 6 6 1 6 6 63 7 21 1 -5 +7 2 2 3 7 4 38 4 21 0 4 +0 2 6 2 6 6 31 5 21 1 -4 +71 2 2 1 7 0 64 3 21 0 4 +75 2 3 2 5 5 55 7 21 0 1 +55 1 2 2 6 0 41 3 21 0 4 +290 4 3 4 5 5 38 4 21 1 1 +88 4 6 3 6 5 28 6 21 1 -3 +0 7 4 3 5 5 42 5 21 1 0 +16 7 2 4 3 1 43 4 21 0 -1 +75 1 5 1 6 5 37 4 21 1 -3 +220 1 4 2 6 3 47 5 21 0 0 +3 5 5 1 6 5 52 7 21 1 -3 +130 0 5 2 6 5 32 4 21 1 -2 +0 5 4 4 3 2 29 3 21 0 1 +110 2 6 2 5 4 56 3 21 1 -3 +12 7 4 3 5 5 63 7 21 1 0 +180 3 3 3 6 1 35 5 21 0 3 +93 7 4 3 5 3 36 4 21 1 0 +170 7 4 2 7 0 75 5 21 0 1 +31 5 3 3 6 1 48 6 21 0 3 +62 4 7 2 6 6 36 5 21 1 -4 +30 4 4 3 6 2 34 6 21 0 1 +66 7 4 3 7 1 35 5 21 0 2 +3 3 5 2 5 6 50 4 21 1 -3 +18 3 5 2 5 6 39 7 21 1 -3 +350 5 5 4 6 5 70 7 21 1 0 +71 7 4 2 5 6 76 3 21 1 -1 +3500 5 5 2 5 5 35 6 21 1 -3 +0 0 3 4 3 3 53 7 21 1 -1 +360 6 5 2 6 4 46 6 21 1 -2 +81 2 5 2 5 4 34 4 21 1 -3 +350 5 4 4 6 5 69 4 21 0 2 +190 1 5 2 5 1 32 3 21 0 -3 +0 7 5 1 6 6 50 2 21 1 -3 +290 1 5 3 6 6 35 6 21 1 -1 +18 0 6 1 6 6 67 5 21 1 -5 +11 3 5 5 6 5 47 3 21 0 1 +2 2 6 3 5 4 50 6 21 1 -2 +570 0 6 2 6 4 32 3 21 1 -4 +310 3 5 4 6 2 58 5 21 0 0 +1 7 3 2 7 0 49 7 21 0 3 +0 2 6 3 6 1 43 4 21 1 -3 +35 1 5 2 6 5 24 6 21 1 -2 +22 7 5 3 4 2 58 7 21 0 -1 +2 1 2 2 5 0 43 4 21 0 3 +0 7 4 3 6 5 59 3 21 1 1 +0 3 6 1 6 6 40 5 21 1 -5 +310 0 5 2 7 0 35 4 21 0 -1 +470 5 2 3 5 1 48 4 21 0 2 +0 4 6 1 6 6 40 3 21 1 -5 +270 3 3 2 7 0 48 3 21 0 3 +110 0 2 4 6 0 47 7 21 0 2 +50 3 6 4 1 1 23 3 21 0 3 +0 0 6 1 6 6 38 3 21 1 -5 +3 7 6 2 6 6 81 7 21 1 -4 +31 5 3 3 6 1 48 6 21 0 3 +22 7 5 6 2 4 52 3 21 0 2 +83 2 4 1 6 3 24 6 21 1 -1 +9 0 4 2 6 1 21 5 21 0 0 +5 7 5 2 6 5 70 6 21 1 -2 +0 7 7 1 7 6 24 6 21 1 -6 +0 7 4 3 5 1 57 7 21 0 0 +0 6 3 5 6 4 37 6 21 0 1 +27 1 3 5 3 5 25 5 21 0 -2 +110 1 6 5 1 1 33 3 21 0 4 +0 7 4 6 3 0 45 3 22 0 -1 +0 3 5 2 7 5 42 6 22 0 -1 +350 3 3 3 6 2 47 6 22 0 3 +0 7 6 1 6 6 51 7 22 1 -5 +5 7 5 4 6 5 85 2 22 0 0 +15 4 3 3 6 2 32 7 22 0 3 +35 7 3 3 6 2 31 7 22 0 3 +0 2 4 3 6 2 23 6 22 0 1 +75 3 3 3 6 0 42 6 22 0 3 +0 5 6 2 5 5 55 6 22 1 -3 +16 7 6 2 6 6 45 6 22 1 -4 +0 1 6 2 5 6 35 7 22 1 -3 +0 0 2 4 6 0 45 6 22 0 2 +0 0 3 3 5 2 42 3 22 0 2 +4 1 6 2 6 5 37 4 22 1 -4 +62 0 4 4 4 5 38 3 22 1 0 +0 3 2 2 6 1 47 7 22 0 4 +4 7 4 2 6 2 32 6 22 0 0 +56 2 5 2 6 5 35 6 22 1 -2 +2 6 4 2 6 5 38 4 22 1 0 +0 0 4 4 4 3 40 3 22 0 0 +75 7 6 2 5 6 62 6 22 1 -3 +10 2 2 2 6 1 28 7 22 0 4 +0 6 6 2 5 6 59 5 22 1 -3 +0 2 1 2 6 0 25 6 22 0 4 +220 2 4 2 6 6 31 6 22 1 0 +0 1 7 2 6 6 45 4 22 1 -4 +75 0 5 2 7 5 42 6 22 0 -1 +0 3 2 2 5 1 56 7 22 0 3 +140 5 3 3 6 1 47 7 22 0 3 +290 1 6 2 5 5 38 6 22 1 -3 +350 7 4 3 7 2 47 6 22 0 2 +55 1 5 2 6 6 49 4 22 1 -2 +31 3 3 3 6 2 29 7 22 0 3 +17 7 2 2 6 0 57 6 22 0 4 +51 4 6 3 5 6 68 3 22 1 -2 +140 7 2 2 4 0 76 6 22 0 2 +9 4 6 2 6 5 66 6 22 1 -4 +0 7 5 1 6 4 59 4 22 1 -3 +640 7 5 3 6 4 37 7 22 0 -1 +32 2 5 2 6 6 38 6 22 1 -2 +5 7 6 2 6 5 47 7 22 1 -4 +8 1 5 2 4 5 36 7 22 1 -2 +18 0 5 4 6 0 45 7 22 0 0 +0 6 5 2 6 5 39 7 22 1 -2 +0 1 3 2 6 1 34 6 22 0 2 +0 3 6 6 4 0 49 4 22 0 2 +31 2 6 2 6 5 36 6 22 1 -4 +350 7 6 1 6 6 81 5 22 1 -5 +20 1 5 2 6 4 29 4 22 1 -2 +70 3 5 3 4 0 45 6 22 0 -1 +31 3 5 2 6 5 21 4 22 1 -2 +3 7 2 4 3 6 33 6 22 1 -1 +9 7 4 4 2 2 44 3 23 0 2 +59 1 2 2 6 4 52 7 23 0 4 +27 2 3 5 7 1 38 4 23 0 2 +51 4 2 3 6 2 44 5 23 0 3 +9 7 6 2 6 6 87 7 23 1 -4 +0 2 7 2 6 5 22 3 23 1 -4 +88 0 3 3 5 2 32 6 23 1 2 +67 0 4 5 6 4 69 3 23 0 1 +29 2 6 2 5 6 49 6 23 1 -3 +5 0 6 2 6 6 53 3 23 1 -4 +0 0 6 1 6 5 44 6 23 1 -5 +900 1 6 2 7 5 34 6 23 1 -3 +18 1 6 1 5 5 55 7 23 1 -4 +190 2 3 3 6 0 35 6 23 0 3 +2 7 4 5 5 3 55 3 23 0 0 +5 3 6 3 5 5 27 6 23 1 -2 +56 3 4 4 5 1 26 6 23 0 1 +75 7 4 2 6 5 54 6 23 0 0 +56 0 5 2 6 5 42 4 23 1 -2 +0 5 6 1 6 6 57 7 23 1 -5 +0 0 7 1 4 6 54 6 23 1 -3 +75 6 6 3 6 6 55 6 23 1 -3 +1600 7 5 3 6 6 50 7 23 1 -1 +15 0 5 5 6 1 57 7 23 0 1 +19 3 5 3 7 3 46 4 23 0 0 +16 7 6 2 6 6 53 6 23 1 -4 +42 2 3 3 5 0 32 7 23 0 2 +18 5 5 2 5 3 53 5 23 1 -3 +0 3 3 3 6 1 39 6 23 0 3 +310 1 5 2 5 4 47 6 23 1 -3 +1600 7 5 2 4 2 57 4 23 0 -2 +23 5 6 3 6 6 49 6 23 1 -3 +20 1 5 4 6 5 31 5 23 0 0 +51 5 5 3 5 5 43 6 23 1 -2 +0 2 5 2 5 4 44 6 23 1 -3 +0 4 4 3 6 0 39 6 23 0 1 +0 2 6 1 6 5 49 4 23 1 -5 +18 7 5 4 6 4 72 6 23 1 0 +7300 7 5 2 6 5 50 6 23 1 -2 +110 1 5 2 6 6 28 4 23 1 -2 +0 0 5 2 7 3 48 7 23 1 -1 +3500 1 3 4 7 1 32 6 23 0 3 +720 7 5 5 5 1 63 4 23 0 0 +9 4 4 5 6 5 36 4 23 1 1 +47 7 6 3 6 6 36 6 23 1 -3 +350 7 3 2 7 2 53 3 23 0 3 +0 5 2 2 6 2 44 7 23 0 4 +0 0 4 2 6 6 41 7 24 1 0 +83 0 2 3 6 1 56 7 24 0 3 +1 4 4 4 6 2 63 7 24 0 2 +190 7 2 4 6 0 52 6 24 0 2 +0 7 3 3 7 2 43 7 24 0 4 +12 7 4 3 6 2 40 3 24 0 1 +9 5 5 1 7 4 69 4 24 1 -2 +23 7 2 2 6 0 49 7 24 0 4 +9 1 3 3 6 2 65 7 24 0 3 +18 5 6 1 6 5 53 7 24 1 -5 +0 5 5 3 5 6 50 4 24 1 -2 +12 3 2 4 6 0 27 5 24 0 2 +0 6 5 3 5 5 44 6 24 1 -2 +170 2 2 3 5 0 54 7 24 0 2 +0 7 4 2 6 4 33 5 24 1 0 +9 0 4 4 6 3 48 7 24 0 2 +23 3 5 2 6 5 54 5 24 1 -2 +0 0 6 2 5 6 56 3 24 1 -3 +9 1 2 4 7 2 34 7 24 0 3 +290 7 6 4 7 6 41 6 24 0 -1 +1 0 5 1 5 6 40 6 24 1 -4 +350 1 7 2 6 6 55 6 24 1 -4 +20 0 4 3 5 5 38 6 24 1 0 +0 3 6 2 6 6 40 6 24 1 -4 +23 1 6 1 6 6 46 4 24 1 -5 +150 4 3 3 4 0 26 6 24 0 1 +31 0 5 2 7 3 49 6 24 0 -1 +0 7 4 1 5 6 51 5 24 1 -2 +9 2 5 2 6 4 46 6 24 0 -2 +47 0 3 4 6 2 40 7 24 0 2 +900 0 3 4 7 2 30 5 24 0 3 +83 3 2 3 6 2 45 5 24 0 3 +18 7 5 4 6 4 52 7 24 1 0 +0 0 6 1 5 6 36 6 24 1 -4 +20 0 4 3 5 3 49 6 24 0 0 +24 7 3 4 5 1 38 7 24 0 1 +18 0 2 4 6 1 51 7 24 0 2 +9 3 3 2 5 1 47 6 24 0 1 +0 1 6 1 5 6 52 7 24 1 -4 +9 0 6 2 6 6 33 6 24 1 -4 +0 4 4 2 6 6 50 4 24 1 0 +18 7 6 2 5 4 48 7 24 1 -3 +19 3 2 2 6 0 36 6 24 0 4 +31 3 2 3 6 1 35 7 24 0 3 +3500 7 7 3 5 4 34 7 24 0 -2 +0 7 2 4 5 2 53 6 24 0 1 +33 0 4 3 6 2 33 7 24 0 1 +0 1 6 3 6 6 52 6 24 1 -3 +18 3 4 3 6 4 44 7 24 0 1 +0 0 3 4 4 0 48 6 24 0 0 +31 3 5 2 6 5 20 4 24 1 -2 +0 5 3 2 4 6 45 6 24 1 0 +59 7 4 2 6 2 70 3 24 0 0 +0 0 3 3 4 2 39 3 24 0 1 +7300 7 3 3 5 1 40 7 24 1 2 +75 4 5 2 7 5 62 6 24 1 -1 +0 7 5 2 6 4 46 6 24 1 -2 +27 7 4 4 7 2 46 3 24 0 3 +1600 7 4 2 5 6 56 7 24 1 -1 +0 7 6 3 6 6 55 7 24 1 -3 +0 7 6 2 6 6 41 4 24 1 -4 +7300 1 2 3 6 0 43 7 24 0 3 +16 7 7 1 7 6 34 3 24 1 -6 +0 7 7 1 6 4 73 6 24 1 -5 +0 7 5 2 6 6 50 6 24 1 -2 +0 3 6 2 7 5 43 6 24 1 -3 +0 6 6 2 5 6 46 7 24 1 -3 +18 7 4 2 6 3 61 7 24 1 0 diff --git a/statsmodels/datasets/cancer/__init__.py b/statsmodels/datasets/cancer/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/cancer/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/cancer/cancer.csv b/statsmodels/datasets/cancer/cancer.csv new file mode 100644 index 0000000..811c6d4 --- /dev/null +++ b/statsmodels/datasets/cancer/cancer.csv @@ -0,0 +1,302 @@ +cancer,population +1,445 +0,559 +3,677 +4,681 +3,746 +4,869 +1,950 +5,976 +5,1096 +5,1098 +5,1114 +7,1125 +5,1236 +6,1285 +3,1291 +3,1318 +2,1323 +8,1327 +9,1438 +7,1479 +4,1536 +6,1598 +6,1635 +11,1667 +4,1696 +7,1792 +7,1795 +4,1808 +6,1838 +16,1838 +3,1847 +8,1933 +8,1959 +4,1990 +9,2003 +10,2070 +7,2091 +8,2099 +5,2104 +11,2147 +4,2154 +12,2163 +11,2172 +9,2174 +13,2183 +17,2193 +11,2210 +10,2212 +4,2236 +4,2245 +8,2261 +6,2317 +8,2333 +16,2393 +10,2404 +4,2419 +11,2462 +10,2476 +11,2477 +9,2483 +11,2511 +14,2591 +6,2624 +8,2690 +12,2731 +15,2735 +9,2736 +13,2747 +18,2782 +15,2783 +12,2793 +11,2891 +12,2894 +12,2906 +14,2929 +12,2935 +3,2962 +5,3054 +7,3112 +9,3118 +11,3185 +14,3217 +18,3236 +11,3290 +11,3314 +4,3316 +13,3401 +10,3409 +10,3426 +9,3470 +11,3488 +12,3511 +4,3549 +16,3571 +20,3578 +5,3620 +15,3654 +15,3680 +12,3683 +7,3688 +7,3706 +12,3733 +21,3800 +16,3802 +13,3832 +16,3863 +8,3891 +12,4008 +20,4093 +21,4149 +15,4162 +13,4223 +13,4232 +10,4312 +22,4329 +14,4331 +16,4399 +13,4470 +24,4618 +27,4669 +16,4681 +28,4737 +11,4784 +12,4829 +14,4857 +26,4918 +27,4967 +17,5041 +20,5051 +12,5077 +20,5107 +12,5108 +24,5124 +27,5156 +25,5167 +19,5211 +21,5246 +8,5743 +15,5773 +22,5932 +21,5983 +37,5989 +23,5998 +18,6021 +25,6035 +26,6074 +17,6134 +27,6175 +13,6220 +13,6296 +15,6445 +33,6624 +24,6841 +23,6868 +18,6903 +24,6904 +21,6916 +32,6934 +23,6978 +32,7014 +16,7025 +29,7031 +33,7115 +20,7256 +19,7288 +27,7304 +10,7367 +34,7376 +36,7407 +26,7408 +33,7503 +24,7599 +37,7743 +34,7760 +37,7910 +20,7917 +28,7957 +30,7984 +27,8004 +45,8208 +39,8249 +29,8289 +22,8313 +27,8377 +19,8396 +30,8468 +34,8493 +35,8531 +21,8773 +18,8866 +41,9091 +34,9215 +51,9225 +30,9243 +32,9435 +38,9445 +18,9468 +42,9563 +60,9605 +19,9841 +29,9994 +17,10033 +29,10049 +41,10144 +31,10303 +35,10416 +27,10461 +37,10670 +18,10844 +41,10875 +39,10890 +41,11105 +61,11622 +46,12038 +47,12173 +36,12181 +43,12608 +45,12775 +46,12915 +45,13021 +49,13142 +55,13206 +64,13407 +64,13647 +66,13870 +57,13989 +53,14089 +51,14197 +36,14620 +28,14816 +59,14952 +39,15039 +73,15049 +41,15179 +48,15204 +37,16161 +72,16239 +72,16427 +48,16462 +62,16793 +51,16925 +71,17027 +60,17201 +70,17526 +59,17666 +91,17692 +52,17742 +65,18482 +77,18731 +84,18835 +51,19274 +66,19818 +53,19906 +58,20065 +75,20140 +88,20268 +83,20539 +48,20639 +69,20969 +41,21353 +73,21757 +79,22811 +63,23245 +90,23258 +92,24296 +60,24351 +63,24692 +63,24896 +75,25275 +70,25405 +90,25715 +111,26245 +103,26408 +117,26691 +118,28024 +40,28270 +83,28477 +90,29254 +97,29422 +92,30125 +104,30538 +96,34109 +142,35112 +105,35876 +145,36307 +160,39023 +127,40756 +169,42997 +104,47672 +179,49126 +152,53464 +163,56529 +167,59634 +302,60161 +246,62398 +236,62652 +250,62931 +267,63476 +244,66676 +248,74005 +360,88456 diff --git a/statsmodels/datasets/cancer/data.py b/statsmodels/datasets/cancer/data.py new file mode 100644 index 0000000..0e8dea3 --- /dev/null +++ b/statsmodels/datasets/cancer/data.py @@ -0,0 +1,55 @@ +"""Breast Cancer Data""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """???""" +TITLE = """Breast Cancer Data""" +SOURCE = """ +This is the breast cancer data used in Owen's empirical likelihood. It is taken from +Rice, J.A. Mathematical Statistics and Data Analysis. +http://www.cengage.com/statistics/discipline_content/dataLibrary.html +""" + +DESCRSHORT = """Breast Cancer and county population""" + +DESCRLONG = """The number of breast cancer observances in various counties""" + +#suggested notes +NOTE = """:: + + Number of observations: 301 + Number of variables: 2 + Variable name definitions: + + cancer - The number of breast cancer observances + population - The population of the county + +""" + + +def load_pandas(): + data = _get_data() + return du.process_pandas(data, endog_idx=0, exog_idx=None) + + +def load(as_pandas=None): + """ + Load the data and return a Dataset class instance. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def _get_data(): + return du.load_csv(__file__, 'cancer.csv', convert_float=True) diff --git a/statsmodels/datasets/ccard/R_wls.s b/statsmodels/datasets/ccard/R_wls.s new file mode 100644 index 0000000..55a71bb --- /dev/null +++ b/statsmodels/datasets/ccard/R_wls.s @@ -0,0 +1,13 @@ +d <- read.csv('./ccard.csv') +attach(d) + + +m1 <- lm(AVGEXP ~ AGE + INCOME + INCOMESQ + OWNRENT, weights=1/INCOMESQ) +results <- summary(m1) + +m2 <- lm(AVGEXP ~ AGE + INCOME + INCOMESQ + OWNRENT - 1, weights=1/INCOMESQ) +results2 <- summary(m2) + +print('m1 has a constant, which theoretically should be INCOME') +print('m2 include -1 for no constant') +print('See ccard/R_wls.s') diff --git a/statsmodels/datasets/ccard/__init__.py b/statsmodels/datasets/ccard/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/ccard/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/ccard/ccard.csv b/statsmodels/datasets/ccard/ccard.csv new file mode 100644 index 0000000..7fd1e51 --- /dev/null +++ b/statsmodels/datasets/ccard/ccard.csv @@ -0,0 +1,73 @@ +"AVGEXP","AGE","INCOME","INCOMESQ","OWNRENT" +124.98,38,4.52,20.4304,1 +9.85,33,2.42,5.8564,0 +15,34,4.5,20.25,1 +137.87,31,2.54,6.4516,0 +546.5,32,9.79,95.8441,1 +92,23,2.5,6.25,0 +40.83,28,3.96,15.6816,0 +150.79,29,2.37,5.6169,1 +777.82,37,3.8,14.44,1 +52.58,28,3.2,10.24,0 +256.66,31,3.95,15.6025,1 +78.87,29,2.45,6.0025,1 +42.62,35,1.91,3.6481,1 +335.43,41,3.2,10.24,1 +248.72,40,4,16,1 +548.03,40,10,100,1 +43.34,35,2.35,5.5225,1 +218.52,34,2,4,1 +170.64,36,4,16,0 +37.58,43,5.14,26.4196,1 +502.2,30,4.51,20.3401,0 +73.18,22,1.5,2.25,0 +1532.77,40,5.5,30.25,1 +42.69,22,2.03,4.1209,0 +417.83,29,3.2,10.24,0 +552.72,21,2.47,6.1009,1 +222.54,24,3,9,0 +541.3,43,3.54,12.5316,1 +568.77,37,5.7,32.49,1 +344.47,27,3.5,12.25,0 +405.35,28,4.6,21.16,1 +310.94,26,3,9,1 +53.65,23,2.59,6.7081,0 +63.92,30,1.51,2.2801,0 +165.85,30,1.85,3.4225,0 +9.58,38,2.6,6.76,0 +319.49,36,2,4,0 +83.08,26,2.35,5.5225,0 +644.83,28,7,49,1 +93.2,24,2,4,0 +105.04,21,1.7,2.89,0 +34.13,24,2.8,7.84,0 +41.19,26,2.4,5.76,0 +169.89,33,3,9,0 +1898.03,34,4.8,23.04,0 +810.39,33,3.18,10.1124,0 +32.78,21,1.5,2.25,0 +95.8,25,3,9,0 +27.78,27,2.28,5.1984,0 +215.07,26,2.8,7.84,0 +79.51,22,2.7,7.29,0 +306.03,41,6,36,0 +104.54,42,3.9,15.21,0 +642.47,25,3.07,9.4249,0 +308.05,31,2.46,6.0516,1 +186.35,27,2,4,0 +56.15,33,3.25,10.5625,0 +129.37,37,2.72,7.3984,0 +93.11,27,2.2,4.84,0 +292.66,24,3.75,14.0625,0 +98.46,25,2.88,8.2944,0 +258.55,36,3.05,9.3025,0 +101.68,33,2.55,6.5025,0 +65.25,55,2.64,6.9696,1 +108.61,20,1.65,2.7225,0 +49.56,29,2.4,5.76,0 +235.57,41,7.24,52.4176,1 +68.38,43,2.4,5.76,0 +474.15,33,6,36,1 +234.05,25,3.6,12.96,0 +451.2,26,5,25,1 +251.52,46,5.5,30.25,1 diff --git a/statsmodels/datasets/ccard/data.py b/statsmodels/datasets/ccard/data.py new file mode 100644 index 0000000..344475d --- /dev/null +++ b/statsmodels/datasets/ccard/data.py @@ -0,0 +1,61 @@ +"""Bill Greene's credit scoring data.""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """Used with express permission of the original author, who +retains all rights.""" +TITLE = __doc__ +SOURCE = """ +William Greene's `Econometric Analysis` + +More information can be found at the web site of the text: +http://pages.stern.nyu.edu/~wgreene/Text/econometricanalysis.htm +""" + +DESCRSHORT = """William Greene's credit scoring data""" + +DESCRLONG = """More information on this data can be found on the +homepage for Greene's `Econometric Analysis`. See source. +""" + +NOTE = """:: + + Number of observations - 72 + Number of variables - 5 + Variable name definitions - See Source for more information on the + variables. +""" + + +def load_pandas(): + """Load the credit card data and returns a Dataset class. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + data = _get_data() + return du.process_pandas(data, endog_idx=0) + + +def load(as_pandas=None): + """Load the credit card data and returns a Dataset class. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def _get_data(): + return du.load_csv(__file__, 'ccard.csv', convert_float=True) diff --git a/statsmodels/datasets/ccard/src/ccard.csv b/statsmodels/datasets/ccard/src/ccard.csv new file mode 100644 index 0000000..7f9afd3 --- /dev/null +++ b/statsmodels/datasets/ccard/src/ccard.csv @@ -0,0 +1,101 @@ +"MDR","Acc","Age","Income","Avgexp","Ownrent","Selfempl" +0,1,38,4.52,124.98,1,0 +0,1,33,2.42,9.85,0,0 +0,1,34,4.5,15,1,0 +0,1,31,2.54,137.87,0,0 +0,1,32,9.79,546.5,1,0 +0,1,23,2.5,92,0,0 +0,1,28,3.96,40.83,0,0 +0,1,29,2.37,150.79,1,0 +0,1,37,3.8,777.82,1,0 +0,1,28,3.2,52.58,0,0 +0,1,31,3.95,256.66,1,0 +0,0,42,1.98,0,1,0 +0,0,30,1.73,0,1,0 +0,1,29,2.45,78.87,1,0 +0,1,35,1.91,42.62,1,0 +0,1,41,3.2,335.43,1,0 +0,1,40,4,248.72,1,0 +7,0,30,3,0,1,0 +0,1,40,10,548.03,1,1 +3,0,46,3.4,0,0,0 +0,1,35,2.35,43.34,1,0 +1,0,25,1.88,0,0,0 +0,1,34,2,218.52,1,0 +1,1,36,4,170.64,0,0 +0,1,43,5.14,37.58,1,0 +0,1,30,4.51,502.2,0,0 +0,0,22,3.84,0,0,1 +0,1,22,1.5,73.18,0,0 +0,0,34,2.5,0,1,0 +0,1,40,5.5,1532.77,1,0 +0,1,22,2.03,42.69,0,0 +1,1,29,3.2,417.83,0,0 +1,0,25,3.15,0,1,0 +0,1,21,2.47,552.72,1,0 +0,1,24,3,222.54,0,0 +0,1,43,3.54,541.3,1,0 +0,0,43,2.28,0,0,0 +0,1,37,5.7,568.77,1,0 +0,1,27,3.5,344.47,0,0 +0,1,28,4.6,405.35,1,0 +0,1,26,3,310.94,1,0 +0,1,23,2.59,53.65,0,0 +0,1,30,1.51,63.92,0,0 +0,1,30,1.85,165.85,0,0 +0,1,38,2.6,9.58,0,0 +0,0,28,1.8,0,0,1 +0,1,36,2,319.49,0,0 +0,0,38,3.26,0,0,0 +0,1,26,2.35,83.08,0,0 +0,1,28,7,644.83,1,0 +0,0,50,3.6,0,0,0 +0,1,24,2,93.2,0,0 +0,1,21,1.7,105.04,0,0 +0,1,24,2.8,34.13,0,0 +0,1,26,2.4,41.19,0,0 +1,1,33,3,169.89,0,0 +0,1,34,4.8,1898.03,0,0 +0,1,33,3.18,810.39,0,0 +0,0,45,1.8,0,0,0 +0,1,21,1.5,32.78,0,0 +2,1,25,3,95.8,0,0 +0,1,27,2.28,27.78,0,0 +0,1,26,2.8,215.07,0,0 +0,1,22,2.7,79.51,0,0 +3,0,27,4.9,0,1,0 +0,0,26,2.5,0,0,1 +0,1,41,6,306.03,0,1 +0,1,42,3.9,104.54,0,0 +0,0,22,5.1,0,0,0 +0,1,25,3.07,642.47,0,0 +0,1,31,2.46,308.05,1,0 +0,1,27,2,186.35,0,0 +0,1,33,3.25,56.15,0,0 +0,1,37,2.72,129.37,0,0 +0,1,27,2.2,93.11,0,0 +1,0,24,4.1,0,0,0 +0,1,24,3.75,292.66,0,0 +0,1,25,2.88,98.46,0,0 +0,1,36,3.05,258.55,0,0 +0,1,33,2.55,101.68,0,0 +0,0,33,4,0,0,0 +1,1,55,2.64,65.25,1,0 +0,1,20,1.65,108.61,0,0 +0,1,29,2.4,49.56,0,0 +3,0,40,3.71,0,0,0 +0,1,41,7.24,235.57,1,0 +0,0,41,4.39,0,1,0 +0,0,35,3.3,0,1,0 +0,0,24,2.3,0,0,0 +1,0,54,4.18,0,0,0 +2,0,34,2.49,0,0,0 +0,0,45,2.81,0,1,0 +0,1,43,2.4,68.38,0,0 +4,0,35,1.5,0,0,0 +2,0,36,8.4,0,0,0 +0,1,22,1.56,0,0,0 +1,1,33,6,474.15,1,0 +1,1,25,3.6,234.05,0,0 +0,1,26,5,451.2,1,0 +0,1,46,5.5,251.52,1,0 diff --git a/statsmodels/datasets/ccard/src/names.txt b/statsmodels/datasets/ccard/src/names.txt new file mode 100644 index 0000000..8408cca --- /dev/null +++ b/statsmodels/datasets/ccard/src/names.txt @@ -0,0 +1,14 @@ +MDR = Number of derogator reports + +Acc = Credit card application accpeted (1=yes) + +Age = Age in years + 12ths of a year + +Income = Income divided by 10,000 + +Avgexp = Avg. monthly credit card expenditure + +Ownrent = Indiviual owns(1) or rents(0) home + +Selfempl = (1=yes, 0=no) + diff --git a/statsmodels/datasets/china_smoking/__init__.py b/statsmodels/datasets/china_smoking/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/china_smoking/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/china_smoking/china_smoking.csv b/statsmodels/datasets/china_smoking/china_smoking.csv new file mode 100644 index 0000000..a01f9ed --- /dev/null +++ b/statsmodels/datasets/china_smoking/china_smoking.csv @@ -0,0 +1,9 @@ +Location,smoking_yes_cancer_yes,smoking_yes_cancer_no,smoking_no_cancer_yes,smoking_no_cancer_no +Beijing,126,100,35,61 +Shanghai,908,688,497,807 +Shenyang,913,747,336,598 +Nanjng,235,172,58,121 +Harbin,402,308,121,215 +Zhengzhou,182,156,72,98 +Taiyuan,60,99,11,43 +Nanchang,104,89,21,36 diff --git a/statsmodels/datasets/china_smoking/data.py b/statsmodels/datasets/china_smoking/data.py new file mode 100644 index 0000000..9550d64 --- /dev/null +++ b/statsmodels/datasets/china_smoking/data.py @@ -0,0 +1,63 @@ +"""Smoking and lung cancer in eight cities in China.""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """Intern. J. Epidemiol. (1992)""" +TITLE = __doc__ +SOURCE = """ +Transcribed from Z. Liu, Smoking and Lung Cancer Incidence in China, +Intern. J. Epidemiol., 21:197-201, (1992). +""" + +DESCRSHORT = """Co-occurrence of lung cancer and smoking in 8 Chinese cities.""" + +DESCRLONG = """This is a series of 8 2x2 contingency tables showing the co-occurrence +of lung cancer and smoking in 8 Chinese cities. +""" + +NOTE = """:: + + Number of Observations - 8 + Number of Variables - 3 + Variable name definitions:: + + city_name - name of the city + smoking - yes or no, according to a person's smoking behavior + lung_cancer - yes or no, according to a person's lung cancer status +""" + + +def load_pandas(): + """ + Load the China smoking/lung cancer data and return a Dataset class. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + raw_data = du.load_csv(__file__, 'china_smoking.csv') + data = raw_data.set_index('Location') + dset = du.Dataset(data=data, title="Smoking and lung cancer in Chinese regions") + dset.raw_data = raw_data + return dset + + +def load(as_pandas=None): + """ + Load the China smoking/lung cancer data and return a Dataset class. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas, + retain_index=True) diff --git a/statsmodels/datasets/co2/__init__.py b/statsmodels/datasets/co2/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/co2/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/co2/co2.csv b/statsmodels/datasets/co2/co2.csv new file mode 100644 index 0000000..506036d --- /dev/null +++ b/statsmodels/datasets/co2/co2.csv @@ -0,0 +1,2285 @@ +date,co2 +19580329,316.1 +19580405,317.3 +19580412,317.6 +19580419,317.5 +19580426,316.4 +19580503,316.9 +19580510, +19580517,317.5 +19580524,317.9 +19580531, +19580607, +19580614, +19580621, +19580628, +19580705,315.8 +19580712,315.8 +19580719,315.4 +19580726,315.5 +19580802,315.6 +19580809,315.1 +19580816,315.0 +19580823, +19580830,314.1 +19580906,313.5 +19580913, +19580920, +19580927, +19581004, +19581011, +19581018, +19581025, +19581101, +19581108,313.0 +19581115,313.2 +19581122,313.5 +19581129,314.0 +19581206,314.5 +19581213,314.4 +19581220,314.7 +19581227,315.2 +19590103,315.2 +19590110,315.5 +19590117,315.6 +19590124,315.8 +19590131,315.4 +19590207, +19590214,316.9 +19590221,316.6 +19590228,316.6 +19590307,316.8 +19590314, +19590321,316.7 +19590328,316.7 +19590404,317.7 +19590411,317.1 +19590418,317.6 +19590425,318.3 +19590502,318.2 +19590509,318.7 +19590516,318.0 +19590523,318.4 +19590530, +19590606,318.5 +19590613,318.1 +19590620,317.8 +19590627,317.7 +19590704,316.8 +19590711,316.8 +19590718,316.4 +19590725,316.1 +19590801,315.6 +19590808,314.9 +19590815, +19590822,315.0 +19590829,314.1 +19590905,314.4 +19590912,313.9 +19590919,313.5 +19590926,313.5 +19591003,313.0 +19591010,313.1 +19591017,313.4 +19591024,313.4 +19591031,314.1 +19591107,314.4 +19591114,314.8 +19591121,315.2 +19591128,315.1 +19591205,315.0 +19591212,315.6 +19591219,315.8 +19591226,315.7 +19600102,315.7 +19600109,316.4 +19600116,316.7 +19600123,316.5 +19600130,316.6 +19600206,316.6 +19600213,316.9 +19600220,317.4 +19600227,317.0 +19600305,316.9 +19600312,317.7 +19600319,318.0 +19600326,317.7 +19600402,318.6 +19600409,319.3 +19600416,319.0 +19600423,319.0 +19600430,319.7 +19600507,319.9 +19600514,319.8 +19600521,320.0 +19600528,320.0 +19600604,319.4 +19600611,320.0 +19600618,319.4 +19600625,319.0 +19600702,318.1 +19600709,318.6 +19600716,318.4 +19600723,317.9 +19600730,317.3 +19600806,316.6 +19600813,316.7 +19600820,315.1 +19600827,314.7 +19600903,314.7 +19600910,314.5 +19600917,314.2 +19600924,313.3 +19601001,313.6 +19601008,313.3 +19601015,313.9 +19601022,314.2 +19601029,314.2 +19601105,314.5 +19601112,315.1 +19601119,315.1 +19601126,315.4 +19601203,315.8 +19601210,316.0 +19601217,316.2 +19601224,316.4 +19601231,316.6 +19610107,316.7 +19610114,317.0 +19610121,317.0 +19610128,317.0 +19610204,317.0 +19610211,317.7 +19610218,317.9 +19610225,318.0 +19610304,318.0 +19610311,318.5 +19610318,318.9 +19610325,318.7 +19610401,319.4 +19610408,319.5 +19610415,318.9 +19610422,319.7 +19610429,319.6 +19610506,320.6 +19610513,320.4 +19610520,320.6 +19610527,320.3 +19610603,320.0 +19610610,320.0 +19610617,319.6 +19610624,319.4 +19610701,319.2 +19610708,319.0 +19610715,318.4 +19610722,317.1 +19610729,317.9 +19610805,317.9 +19610812,317.3 +19610819,316.7 +19610826,315.2 +19610902,315.2 +19610909,314.9 +19610916,314.5 +19610923,315.0 +19610930,315.6 +19611007,314.9 +19611014,315.4 +19611021,315.4 +19611028,315.7 +19611104,315.8 +19611111,315.7 +19611118,316.2 +19611125,316.5 +19611202,316.5 +19611209,317.0 +19611216,316.9 +19611223,317.1 +19611230,317.4 +19620106,317.9 +19620113,318.1 +19620120,318.0 +19620127,317.7 +19620203,318.0 +19620210,318.3 +19620217,318.9 +19620224,319.3 +19620303,319.2 +19620310,319.4 +19620317,319.9 +19620324,319.7 +19620331,320.2 +19620407,320.2 +19620414,321.0 +19620421,320.7 +19620428,320.3 +19620505,320.8 +19620512,320.7 +19620519,321.0 +19620526,321.1 +19620602,320.9 +19620609,320.8 +19620616,320.5 +19620623,320.1 +19620630,320.2 +19620707,320.1 +19620714,319.9 +19620721,319.0 +19620728,318.7 +19620804,318.6 +19620811,317.2 +19620818,317.4 +19620825, +19620901, +19620908, +19620915,316.6 +19620922,315.7 +19620929,315.9 +19621006,315.1 +19621013,315.4 +19621020,315.7 +19621027,315.7 +19621103,315.9 +19621110,316.4 +19621117,316.9 +19621124,317.0 +19621201,317.1 +19621208,317.3 +19621215,317.6 +19621222,318.1 +19621229, +19630105,318.5 +19630112,318.7 +19630119,318.9 +19630126,318.8 +19630202,318.7 +19630209,318.9 +19630216, +19630223,319.3 +19630302,319.3 +19630309,319.7 +19630316,319.8 +19630323,320.3 +19630330,320.2 +19630406,320.3 +19630413,320.9 +19630420,322.0 +19630427,321.9 +19630504, +19630511,321.9 +19630518,322.2 +19630525,322.2 +19630601,322.3 +19630608,322.0 +19630615,321.8 +19630622,320.8 +19630629,320.4 +19630706,320.1 +19630713,319.8 +19630720,319.5 +19630727,319.0 +19630803,318.6 +19630810,318.2 +19630817,317.7 +19630824,317.1 +19630831,316.4 +19630907,316.8 +19630914,315.9 +19630921,316.0 +19630928,315.9 +19631005,316.2 +19631012,315.6 +19631019,316.1 +19631026,316.3 +19631102,316.6 +19631109,316.8 +19631116,317.1 +19631123, +19631130,317.5 +19631207,318.0 +19631214,318.2 +19631221,318.5 +19631228,318.7 +19640104,319.0 +19640111,319.4 +19640118,319.8 +19640125, +19640201, +19640208, +19640215, +19640222, +19640229, +19640307, +19640314, +19640321, +19640328, +19640404, +19640411, +19640418, +19640425, +19640502, +19640509, +19640516, +19640523, +19640530,322.0 +19640606,322.0 +19640613, +19640620, +19640627,321.5 +19640704,321.1 +19640711,319.9 +19640718,320.2 +19640725,320.0 +19640801,319.1 +19640808, +19640815,318.6 +19640822,318.2 +19640829,318.1 +19640905,317.4 +19640912,316.5 +19640919,315.5 +19640926,317.0 +19641003,316.9 +19641010,316.5 +19641017,316.8 +19641024,317.0 +19641031,317.6 +19641107,317.7 +19641114,317.6 +19641121,317.5 +19641128,318.1 +19641205,318.4 +19641212,318.5 +19641219,318.9 +19641226,318.9 +19650102,319.0 +19650109,319.1 +19650116,319.1 +19650123,319.7 +19650130,320.1 +19650206,320.2 +19650213,320.1 +19650220,320.7 +19650227,320.8 +19650306,321.0 +19650313,320.9 +19650320,320.4 +19650327,321.4 +19650403,321.9 +19650410,322.2 +19650417,322.1 +19650424,321.8 +19650501,322.4 +19650508,322.2 +19650515,321.9 +19650522,321.6 +19650529,322.2 +19650605,321.8 +19650612,321.7 +19650619,321.7 +19650626,321.9 +19650703,321.9 +19650710,321.8 +19650717,321.7 +19650724,320.4 +19650731,319.4 +19650807,319.4 +19650814,318.0 +19650821,318.8 +19650828,318.7 +19650904,318.3 +19650911,318.0 +19650918,318.2 +19650925,316.8 +19651002,316.6 +19651009,317.2 +19651016,317.8 +19651023,317.5 +19651030,317.6 +19651106,318.3 +19651113,319.2 +19651120,318.9 +19651127,319.1 +19651204,319.0 +19651211,319.3 +19651218,319.3 +19651225,319.7 +19660101,319.6 +19660108,320.4 +19660115,320.6 +19660122,321.0 +19660129,321.1 +19660205,321.2 +19660212,321.7 +19660219,321.6 +19660226,321.8 +19660305,322.1 +19660312,322.1 +19660319,322.5 +19660326,322.8 +19660402,323.5 +19660409,323.6 +19660416,323.8 +19660423,323.9 +19660430,323.5 +19660507,324.0 +19660514,324.1 +19660521,323.7 +19660528,324.3 +19660604,324.0 +19660611,323.8 +19660618,323.7 +19660625,323.3 +19660702,322.8 +19660709,322.9 +19660716, +19660723, +19660730, +19660806,321.3 +19660813,320.8 +19660820,319.1 +19660827,319.6 +19660903,319.9 +19660910,318.2 +19660917,318.4 +19660924,318.3 +19661001,317.9 +19661008,317.9 +19661015,318.2 +19661022,318.6 +19661029,318.3 +19661105, +19661112,319.5 +19661119,320.0 +19661126,320.2 +19661203,320.8 +19661210,320.8 +19661217,321.1 +19661224,321.3 +19661231,321.3 +19670107,321.9 +19670114,322.9 +19670121, +19670128, +19670204,322.1 +19670211,322.2 +19670218,322.8 +19670225,322.6 +19670304,322.9 +19670311,322.6 +19670318,323.3 +19670325,323.2 +19670401,323.1 +19670408,324.2 +19670415,324.4 +19670422,324.6 +19670429,325.1 +19670506,325.2 +19670513,324.7 +19670520,325.0 +19670527,324.9 +19670603,324.9 +19670610,324.6 +19670617,323.3 +19670624,323.5 +19670701,322.8 +19670708,322.8 +19670715,322.4 +19670722,322.4 +19670729,322.0 +19670805,321.6 +19670812,321.4 +19670819,320.4 +19670826,320.0 +19670902,320.0 +19670909,319.4 +19670916,319.3 +19670923,319.0 +19670930,318.8 +19671007,318.8 +19671014,319.8 +19671021,319.4 +19671028,319.8 +19671104,320.0 +19671111,320.3 +19671118,320.9 +19671125,321.5 +19671202,321.4 +19671209,321.8 +19671216,322.2 +19671223,321.9 +19671230,322.3 +19680106,322.4 +19680113,322.5 +19680120,322.5 +19680127,322.8 +19680203,322.6 +19680210,323.1 +19680217,323.4 +19680224,323.1 +19680302,323.1 +19680309,323.8 +19680316,323.8 +19680323,324.2 +19680330,324.7 +19680406,324.7 +19680413,325.0 +19680420,324.8 +19680427,325.4 +19680504,325.6 +19680511,325.0 +19680518,325.5 +19680525,325.8 +19680601,325.6 +19680608,325.7 +19680615,325.5 +19680622,324.9 +19680629,324.6 +19680706,324.7 +19680713,324.1 +19680720,323.9 +19680727,323.4 +19680803,322.4 +19680810,322.2 +19680817,322.0 +19680824,321.7 +19680831,321.4 +19680907,320.4 +19680914,321.1 +19680921,319.7 +19680928,319.8 +19681005,320.5 +19681012,320.5 +19681019,320.2 +19681026,319.9 +19681102,320.7 +19681109,320.8 +19681116,321.4 +19681123,321.7 +19681130,322.0 +19681207,322.4 +19681214,322.9 +19681221,323.3 +19681228,323.1 +19690104,323.3 +19690111,324.0 +19690118,324.3 +19690125,324.1 +19690201,324.1 +19690208,323.9 +19690215,324.3 +19690222,324.8 +19690301,325.1 +19690308,325.5 +19690315,325.7 +19690322,325.9 +19690329,325.8 +19690405,326.2 +19690412,327.1 +19690419,326.5 +19690426,326.5 +19690503,327.5 +19690510,327.8 +19690517,326.8 +19690524,326.9 +19690531,327.4 +19690607,326.5 +19690614,326.7 +19690621,326.7 +19690628,326.3 +19690705,326.1 +19690712,326.0 +19690719,325.7 +19690726,325.4 +19690802,324.5 +19690809,324.5 +19690816,323.1 +19690823,322.5 +19690830,323.1 +19690906,322.2 +19690913,322.7 +19690920,322.8 +19690927,321.9 +19691004,321.5 +19691011,321.8 +19691018,322.0 +19691025,321.9 +19691101,322.2 +19691108,322.6 +19691115,322.7 +19691122,323.1 +19691129,323.5 +19691206,323.9 +19691213,323.9 +19691220,324.2 +19691227,324.5 +19700103,324.7 +19700110,325.4 +19700117,325.0 +19700124,324.8 +19700131,325.5 +19700207,325.7 +19700214,326.0 +19700221,326.3 +19700228,326.1 +19700307,326.8 +19700314,326.8 +19700321,327.5 +19700328,326.9 +19700404,328.2 +19700411,327.8 +19700418,327.8 +19700425,328.5 +19700502,327.9 +19700509,327.5 +19700516,328.0 +19700523,328.3 +19700530,327.9 +19700606,327.5 +19700613,327.8 +19700620,327.7 +19700627,327.2 +19700704,327.2 +19700711,326.2 +19700718,326.2 +19700725,325.6 +19700801,325.2 +19700808,325.2 +19700815,324.8 +19700822,324.8 +19700829,323.3 +19700905,322.9 +19700912,323.5 +19700919,323.1 +19700926,323.1 +19701003,323.2 +19701010,323.5 +19701017,322.9 +19701024,323.0 +19701031,323.1 +19701107,323.6 +19701114,323.7 +19701121,324.2 +19701128,324.7 +19701205,324.7 +19701212,325.0 +19701219,325.2 +19701226,325.5 +19710102,325.7 +19710109,325.8 +19710116,325.9 +19710123,326.7 +19710130,326.6 +19710206,326.5 +19710213,326.4 +19710220,326.7 +19710227,327.0 +19710306,327.1 +19710313,327.3 +19710320,327.0 +19710327,327.4 +19710403,327.4 +19710410,327.1 +19710417,327.7 +19710424,328.5 +19710501,328.2 +19710508,329.0 +19710515,329.2 +19710522,328.9 +19710529,328.8 +19710605,328.5 +19710612,328.8 +19710619,328.1 +19710626,328.5 +19710703,327.9 +19710710,327.8 +19710717,327.5 +19710724,326.2 +19710731,326.7 +19710807,326.1 +19710814,325.6 +19710821,325.3 +19710828,324.0 +19710904,323.6 +19710911,323.5 +19710918,323.2 +19710925,323.3 +19711002,323.3 +19711009,322.9 +19711016,323.5 +19711023,323.6 +19711030,324.4 +19711106,324.3 +19711113,324.5 +19711120,325.0 +19711127,325.5 +19711204,325.3 +19711211,325.9 +19711218,326.2 +19711225,326.3 +19720101,326.6 +19720108,326.6 +19720115,326.6 +19720122,326.6 +19720129,327.2 +19720205,327.4 +19720212,327.9 +19720219,327.8 +19720226,327.4 +19720304,327.5 +19720311,327.1 +19720318,327.7 +19720325,328.6 +19720401,328.9 +19720408,329.4 +19720415,329.8 +19720422,330.1 +19720429,330.0 +19720506,330.0 +19720513,329.7 +19720520,330.1 +19720527,330.2 +19720603,329.7 +19720610,329.1 +19720617,329.0 +19720624,328.5 +19720701,328.6 +19720708,328.3 +19720715,327.7 +19720722,328.1 +19720729,327.5 +19720805,326.9 +19720812,326.6 +19720819,326.5 +19720826,325.0 +19720902,325.4 +19720909,325.7 +19720916,324.8 +19720923,324.2 +19720930,324.2 +19721007,324.8 +19721014,325.5 +19721021,325.1 +19721028,325.8 +19721104,326.3 +19721111,326.1 +19721118,326.4 +19721125,326.9 +19721202,326.9 +19721209,327.1 +19721216,327.6 +19721223,327.9 +19721230,328.2 +19730106,328.4 +19730113,328.4 +19730120,328.6 +19730127,328.8 +19730203,329.1 +19730210,329.5 +19730217,329.6 +19730224,329.7 +19730303,329.9 +19730310,330.1 +19730317,330.5 +19730324,330.8 +19730331,330.6 +19730407,331.2 +19730414,331.1 +19730421,331.9 +19730428,332.1 +19730505,332.2 +19730512,332.3 +19730519,332.6 +19730526,332.5 +19730602,332.2 +19730609,332.5 +19730616,332.0 +19730623,331.6 +19730630,331.4 +19730707,331.5 +19730714,331.0 +19730721,330.0 +19730728,330.1 +19730804,330.0 +19730811,329.5 +19730818,329.3 +19730825,328.5 +19730901,328.4 +19730908,327.6 +19730915,327.8 +19730922,327.1 +19730929,326.6 +19731006,327.0 +19731013,327.4 +19731020,327.4 +19731027,327.1 +19731103,327.5 +19731110,328.0 +19731117,328.2 +19731124,328.5 +19731201,329.0 +19731208,328.7 +19731215,328.6 +19731222,328.2 +19731229,328.7 +19740105,328.9 +19740112,329.2 +19740119,329.4 +19740126,329.8 +19740202,330.5 +19740209,330.8 +19740216,330.6 +19740223,330.6 +19740302,330.7 +19740309,331.2 +19740316,332.1 +19740323,332.0 +19740330,331.5 +19740406,332.4 +19740413,332.1 +19740420,332.9 +19740427,333.1 +19740504,332.9 +19740511,333.0 +19740518,333.2 +19740525,332.8 +19740601,332.9 +19740608,332.0 +19740615,332.0 +19740622,332.2 +19740629,331.7 +19740706,331.7 +19740713,331.2 +19740720,330.4 +19740727,331.0 +19740803,330.0 +19740810,329.9 +19740817,329.2 +19740824,328.9 +19740831,328.1 +19740907,328.0 +19740914,327.3 +19740921,326.9 +19740928,327.3 +19741005,327.3 +19741012,327.0 +19741019,327.5 +19741026,327.7 +19741102,327.9 +19741109,328.0 +19741116,328.8 +19741123,328.6 +19741130,328.7 +19741207,329.5 +19741214,329.7 +19741221,329.8 +19741228,329.7 +19750104,329.9 +19750111,329.8 +19750118,330.2 +19750125,331.1 +19750201,331.1 +19750208,331.4 +19750215,331.0 +19750222,331.7 +19750301,331.8 +19750308,331.6 +19750315,331.9 +19750322,332.2 +19750329,332.5 +19750405,333.0 +19750412,333.5 +19750419,333.5 +19750426,333.1 +19750503,333.9 +19750510,333.9 +19750517,333.7 +19750524,333.7 +19750531,334.1 +19750607,333.8 +19750614,333.3 +19750621,333.4 +19750628,333.1 +19750705,332.7 +19750712,332.0 +19750719,331.0 +19750726,331.5 +19750802,330.8 +19750809,330.7 +19750816,330.3 +19750823,329.3 +19750830,328.8 +19750906,329.4 +19750913,328.5 +19750920,328.0 +19750927,328.2 +19751004,328.0 +19751011,328.0 +19751018,328.5 +19751025,328.8 +19751101,329.3 +19751108,329.2 +19751115,329.1 +19751122,329.5 +19751129,330.1 +19751206,330.3 +19751213,330.5 +19751220,331.1 +19751227,331.2 +19760103,331.5 +19760110,331.5 +19760117,331.7 +19760124,331.8 +19760131,332.2 +19760207,332.1 +19760214,332.5 +19760221,333.2 +19760228,332.4 +19760306,332.8 +19760313,333.6 +19760320,333.1 +19760327,334.3 +19760403,334.7 +19760410,334.2 +19760417,334.4 +19760424,334.5 +19760501,334.7 +19760508,334.3 +19760515,334.6 +19760522,335.4 +19760529,334.8 +19760605,334.3 +19760612,334.6 +19760619,334.3 +19760626, +19760703,333.6 +19760710,333.4 +19760717,332.8 +19760724,332.4 +19760731,332.1 +19760807,331.7 +19760814,330.6 +19760821,330.6 +19760828,330.0 +19760904,329.7 +19760911,330.0 +19760918,329.3 +19760925,328.4 +19761002,328.8 +19761009,329.0 +19761016,329.6 +19761023,329.1 +19761030,329.0 +19761106,329.8 +19761113,330.4 +19761120,330.5 +19761127,330.7 +19761204,331.1 +19761211,331.3 +19761218,331.9 +19761225,332.2 +19770101,332.5 +19770108,332.4 +19770115,333.1 +19770122,333.2 +19770129,333.2 +19770205,333.4 +19770212,333.3 +19770219,333.4 +19770226,333.6 +19770305,334.1 +19770312,334.6 +19770319,335.1 +19770326,335.0 +19770402,335.5 +19770409,335.9 +19770416,336.0 +19770423,336.1 +19770430,336.7 +19770507,336.8 +19770514,336.4 +19770521,336.8 +19770528,336.7 +19770604,336.4 +19770611,336.3 +19770618,336.1 +19770625,336.0 +19770702,335.5 +19770709,335.1 +19770716,335.1 +19770723,334.6 +19770730,333.7 +19770806,333.0 +19770813,332.9 +19770820,332.8 +19770827,332.8 +19770903,332.1 +19770910,331.2 +19770917,332.1 +19770924,330.9 +19771001,330.4 +19771008,330.9 +19771015,331.5 +19771022,331.5 +19771029,331.7 +19771105,332.1 +19771112,332.0 +19771119,332.5 +19771126,332.8 +19771203,333.2 +19771210,333.5 +19771217,333.8 +19771224,334.2 +19771231,334.6 +19780107,334.2 +19780114,334.6 +19780121,335.4 +19780128,335.9 +19780204,335.0 +19780211,335.1 +19780218,335.6 +19780225,335.7 +19780304,336.2 +19780311,336.1 +19780318,336.8 +19780325,337.3 +19780401,337.0 +19780408,337.9 +19780415,337.9 +19780422,337.4 +19780429,338.0 +19780506,338.0 +19780513,338.1 +19780520,337.8 +19780527,337.9 +19780603,338.4 +19780610,338.2 +19780617,337.8 +19780624,337.3 +19780701,337.6 +19780708,336.7 +19780715,336.7 +19780722,335.9 +19780729,335.6 +19780805,335.1 +19780812,334.8 +19780819,334.4 +19780826,334.3 +19780902,333.8 +19780909,332.8 +19780916,332.1 +19780923,332.3 +19780930,332.7 +19781007,332.1 +19781014,332.4 +19781021,333.0 +19781028,333.1 +19781104,333.5 +19781111,333.8 +19781118,333.8 +19781125,334.2 +19781202,334.5 +19781209,334.8 +19781216,335.1 +19781223,335.1 +19781230,335.3 +19790106,335.3 +19790113,335.9 +19790120,336.8 +19790127,336.9 +19790203,336.9 +19790210,336.5 +19790217,336.7 +19790224,336.7 +19790303,337.1 +19790310,337.7 +19790317,337.4 +19790324,339.0 +19790331,338.8 +19790407,338.1 +19790414,338.6 +19790421,339.2 +19790428,339.6 +19790505,339.3 +19790512,338.8 +19790519,339.8 +19790526,339.6 +19790602,339.9 +19790609,339.5 +19790616,338.9 +19790623,338.9 +19790630,339.0 +19790707,338.2 +19790714,337.8 +19790721,337.3 +19790728,336.8 +19790804,337.0 +19790811,336.5 +19790818,336.1 +19790825,334.5 +19790901,334.4 +19790908,334.0 +19790915,334.2 +19790922,333.2 +19790929,334.1 +19791006,334.1 +19791013,333.9 +19791020,333.7 +19791027,334.1 +19791103,334.7 +19791110,334.8 +19791117,335.5 +19791124,335.6 +19791201,335.9 +19791208,336.5 +19791215,336.7 +19791222,336.8 +19791229,337.4 +19800105,337.6 +19800112,337.4 +19800119,338.3 +19800126,338.4 +19800202,338.0 +19800209,338.1 +19800216,338.6 +19800223,338.2 +19800301,339.3 +19800308,339.5 +19800315,340.0 +19800322,340.5 +19800329,341.0 +19800405,340.4 +19800412,340.9 +19800419,340.7 +19800426,341.0 +19800503,341.5 +19800510,341.3 +19800517,341.3 +19800524,340.9 +19800531,341.7 +19800607,341.3 +19800614,341.3 +19800621,340.8 +19800628,340.4 +19800705,340.4 +19800712,339.7 +19800719,338.5 +19800726,338.9 +19800802,337.9 +19800809,337.7 +19800816,337.7 +19800823,337.7 +19800830,337.0 +19800906,336.6 +19800913,335.7 +19800920,335.2 +19800927,336.0 +19801004,335.8 +19801011,335.8 +19801018,336.1 +19801025,336.4 +19801101,336.6 +19801108,336.9 +19801115,337.1 +19801122,337.3 +19801129,337.4 +19801206,337.7 +19801213,338.1 +19801220,338.3 +19801227,338.7 +19810103,338.9 +19810110,339.1 +19810117,339.3 +19810124,339.3 +19810131,339.5 +19810207,340.5 +19810214,340.0 +19810221,340.2 +19810228,341.1 +19810307,340.7 +19810314,341.0 +19810321,341.8 +19810328,342.1 +19810404,342.4 +19810411,342.4 +19810418,342.7 +19810425,342.3 +19810502,342.9 +19810509,343.0 +19810516,342.8 +19810523,342.7 +19810530,342.7 +19810606,342.6 +19810613,342.5 +19810620,341.8 +19810627,341.6 +19810704,341.0 +19810711,340.8 +19810718,339.7 +19810725,340.2 +19810801,339.5 +19810808,338.9 +19810815,338.4 +19810822,337.5 +19810829,337.7 +19810905,337.2 +19810912,337.0 +19810919,336.7 +19810926,335.9 +19811003,336.3 +19811010,336.6 +19811017,337.1 +19811024,337.2 +19811031,337.5 +19811107,337.8 +19811114,338.1 +19811121,338.5 +19811128,339.3 +19811205,339.2 +19811212,339.4 +19811219,339.6 +19811226,340.2 +19820102,340.2 +19820109,340.3 +19820116,340.7 +19820123,341.1 +19820130,341.2 +19820206,341.9 +19820213,341.1 +19820220,341.1 +19820227,342.1 +19820306,342.6 +19820313,342.6 +19820320,342.7 +19820327,342.8 +19820403,342.9 +19820410,343.3 +19820417,343.5 +19820424,344.2 +19820501,343.8 +19820508,343.6 +19820515,344.2 +19820522,344.1 +19820529,344.1 +19820605,343.4 +19820612,343.5 +19820619,343.4 +19820626,342.9 +19820703,342.5 +19820710,342.0 +19820717,342.0 +19820724,341.8 +19820731,341.3 +19820807,340.5 +19820814,340.0 +19820821,339.7 +19820828,338.3 +19820904,338.8 +19820911,338.6 +19820918,337.8 +19820925,336.9 +19821002,337.3 +19821009,338.0 +19821016,337.6 +19821023,337.9 +19821030,338.7 +19821106,338.4 +19821113,339.2 +19821120,339.7 +19821127,339.8 +19821204,339.8 +19821211,340.4 +19821218,340.7 +19821225,340.8 +19830101,340.9 +19830108,341.4 +19830115,341.5 +19830122,341.2 +19830129,341.7 +19830205,342.0 +19830212,342.7 +19830219,342.5 +19830226,342.8 +19830305,342.3 +19830312,342.5 +19830319,344.0 +19830326,343.8 +19830402,344.0 +19830409,344.8 +19830416,345.0 +19830423,345.3 +19830430,345.4 +19830507,345.4 +19830514,345.7 +19830521,345.8 +19830528,345.7 +19830604,345.6 +19830611,345.6 +19830618,345.0 +19830625,344.9 +19830702,344.7 +19830709,344.5 +19830716,343.7 +19830723,343.6 +19830730,342.6 +19830806,343.0 +19830813,341.7 +19830820,342.1 +19830827,341.8 +19830903,339.9 +19830910,339.9 +19830917,339.8 +19830924,339.9 +19831001,339.8 +19831008,339.7 +19831015,340.1 +19831022,340.2 +19831029,340.3 +19831105,340.8 +19831112,341.0 +19831119,341.1 +19831126,341.7 +19831203,341.8 +19831210,342.8 +19831217,343.3 +19831224,343.6 +19831231,343.4 +19840107,343.7 +19840114,343.4 +19840121,343.5 +19840128,344.1 +19840204,344.3 +19840211,344.5 +19840218,344.3 +19840225,344.6 +19840303,344.8 +19840310,344.9 +19840317,345.4 +19840324,345.6 +19840331, +19840407, +19840414, +19840421, +19840428,347.4 +19840505,347.4 +19840512,347.7 +19840519,347.3 +19840526,347.0 +19840602,347.0 +19840609,347.0 +19840616,346.8 +19840623,346.3 +19840630,346.2 +19840707,345.8 +19840714,345.4 +19840721,345.2 +19840728,344.4 +19840804,344.0 +19840811,344.1 +19840818,343.1 +19840825,342.0 +19840901,341.6 +19840908,340.6 +19840915,341.3 +19840922,341.3 +19840929,340.8 +19841006,341.1 +19841013,341.3 +19841020,341.9 +19841027,341.6 +19841103,342.0 +19841110,342.6 +19841117,343.1 +19841124,343.7 +19841201,343.6 +19841208,343.9 +19841215,344.2 +19841222,344.5 +19841229,344.5 +19850105,344.7 +19850112,345.0 +19850119,345.0 +19850126,345.0 +19850202,345.9 +19850209,345.5 +19850216,345.8 +19850223,346.3 +19850302,346.7 +19850309,347.1 +19850316,347.5 +19850323,347.7 +19850330,348.2 +19850406,348.0 +19850413,348.0 +19850420,348.5 +19850427,348.8 +19850504,348.8 +19850511,349.3 +19850518,349.1 +19850525,348.1 +19850601,349.0 +19850608,348.4 +19850615,348.2 +19850622,347.9 +19850629,347.4 +19850706,346.9 +19850713,346.8 +19850720,346.4 +19850727,345.7 +19850803, +19850810,344.7 +19850817,344.5 +19850824,344.3 +19850831,343.7 +19850907,344.2 +19850914,343.3 +19850921,342.4 +19850928,342.1 +19851005,342.4 +19851012,342.5 +19851019,343.1 +19851026,343.2 +19851102,343.3 +19851109,343.7 +19851116,344.2 +19851123,344.6 +19851130,345.3 +19851207,345.3 +19851214,345.6 +19851221,345.1 +19851228,346.3 +19860104,346.4 +19860111,346.0 +19860118,346.2 +19860125,346.4 +19860201,346.2 +19860208,346.8 +19860215,347.1 +19860222,347.2 +19860301,347.0 +19860308,346.6 +19860315,347.2 +19860322,349.1 +19860329,348.8 +19860405,349.2 +19860412,349.4 +19860419,349.3 +19860426,350.2 +19860503,349.9 +19860510,350.1 +19860517,350.2 +19860524,350.1 +19860531,350.1 +19860607,349.7 +19860614,349.5 +19860621,349.4 +19860628,348.9 +19860705,348.6 +19860712,347.7 +19860719,347.6 +19860726,347.4 +19860802,346.6 +19860809,346.2 +19860816,345.5 +19860823,345.6 +19860830,345.2 +19860906,345.0 +19860913,345.3 +19860920,344.4 +19860927,344.5 +19861004,343.9 +19861011,344.1 +19861018,343.9 +19861025,344.5 +19861101,345.1 +19861108,345.3 +19861115,345.6 +19861122,345.7 +19861129,346.4 +19861206,346.9 +19861213,346.7 +19861220,346.9 +19861227,347.0 +19870103,347.6 +19870110,348.3 +19870117,348.2 +19870124,347.9 +19870131,348.0 +19870207,347.9 +19870214,348.2 +19870221,348.5 +19870228,349.4 +19870307,348.8 +19870314,349.2 +19870321,349.7 +19870328,350.2 +19870404,350.8 +19870411,350.2 +19870418,351.1 +19870425,351.3 +19870502,351.4 +19870509,352.0 +19870516,351.7 +19870523,351.9 +19870530,351.7 +19870606,351.6 +19870613,351.1 +19870620,351.0 +19870627,350.9 +19870704,349.7 +19870711,349.8 +19870718,348.8 +19870725,349.5 +19870801,349.0 +19870808,348.1 +19870815,348.6 +19870822,348.0 +19870829,346.7 +19870905,347.0 +19870912,346.6 +19870919,346.2 +19870926,345.8 +19871003,345.7 +19871010,346.3 +19871017,346.5 +19871024,346.8 +19871031,346.9 +19871107,347.3 +19871114,347.6 +19871121,348.1 +19871128,348.7 +19871205,348.6 +19871212,348.8 +19871219,349.1 +19871226,349.2 +19880102,349.7 +19880109,350.2 +19880116,350.2 +19880123,350.7 +19880130,351.2 +19880206,351.8 +19880213,351.3 +19880220,351.5 +19880227,352.5 +19880305,352.8 +19880312,351.8 +19880319,351.7 +19880326,352.2 +19880402,353.1 +19880409,353.5 +19880416,353.1 +19880423,354.0 +19880430,354.2 +19880507,353.7 +19880514,354.3 +19880521,354.5 +19880528,354.2 +19880604,354.1 +19880611,354.2 +19880618,353.6 +19880625,353.1 +19880702,353.0 +19880709,352.5 +19880716,352.6 +19880723,351.9 +19880730,351.1 +19880806,350.9 +19880813,350.3 +19880820,350.4 +19880827,349.6 +19880903,349.3 +19880910,348.7 +19880917,348.9 +19880924,348.1 +19881001,348.8 +19881008,348.8 +19881015,348.6 +19881022,349.4 +19881029,349.2 +19881105,349.7 +19881112,349.8 +19881119,350.1 +19881126,350.4 +19881203,350.5 +19881210,351.0 +19881217,351.6 +19881224,351.3 +19881231,352.4 +19890107,352.7 +19890114,352.9 +19890121,352.5 +19890128,353.0 +19890204,352.8 +19890211,352.6 +19890218,353.2 +19890225,353.4 +19890304,353.1 +19890311,353.4 +19890318,353.5 +19890325,354.4 +19890401,354.5 +19890408,355.0 +19890415,355.4 +19890422,356.0 +19890429,355.9 +19890506,355.3 +19890513,355.8 +19890520,355.6 +19890527,355.7 +19890603,355.8 +19890610,355.0 +19890617,354.8 +19890624,354.9 +19890701,354.5 +19890708,354.7 +19890715,353.8 +19890722,353.1 +19890729,353.2 +19890805,352.6 +19890812,352.2 +19890819,351.1 +19890826,350.4 +19890902,350.7 +19890909,350.2 +19890916,349.4 +19890923,349.3 +19890930,349.7 +19891007,349.9 +19891014,349.7 +19891021,350.2 +19891028,350.4 +19891104,350.6 +19891111,351.2 +19891118,351.6 +19891125,351.4 +19891202,352.0 +19891209,352.1 +19891216,352.4 +19891223,352.5 +19891230,353.4 +19900106,353.4 +19900113,353.5 +19900120,353.8 +19900127,353.9 +19900203,354.1 +19900210,355.0 +19900217,354.8 +19900224,354.7 +19900303,355.7 +19900310,354.9 +19900317,355.8 +19900324,355.1 +19900331,355.9 +19900407,356.1 +19900414,355.9 +19900421,356.6 +19900428,356.1 +19900505,357.3 +19900512,357.0 +19900519,356.9 +19900526,357.1 +19900602,357.0 +19900609,356.6 +19900616,355.6 +19900623,355.5 +19900630,355.7 +19900707,355.5 +19900714,354.0 +19900721,354.5 +19900728,354.7 +19900804,353.5 +19900811,353.2 +19900818,352.9 +19900825,352.0 +19900901,350.9 +19900908,350.7 +19900915,351.3 +19900922,350.9 +19900929,350.9 +19901006,351.1 +19901013,351.0 +19901020,351.4 +19901027,351.4 +19901103,352.1 +19901110,352.6 +19901117,353.0 +19901124,353.1 +19901201,353.6 +19901208,354.0 +19901215,353.8 +19901222,354.5 +19901229,354.8 +19910105,354.2 +19910112,354.7 +19910119,354.8 +19910126,355.0 +19910202,355.2 +19910209,355.2 +19910216,356.4 +19910223,355.8 +19910302,356.4 +19910309,357.2 +19910316,357.6 +19910323,356.9 +19910330,357.9 +19910406,358.3 +19910413,357.8 +19910420,359.1 +19910427,359.2 +19910504,359.1 +19910511,358.9 +19910518,360.0 +19910525,359.0 +19910601,358.5 +19910608,358.4 +19910615,358.2 +19910622,358.1 +19910629,357.7 +19910706,357.2 +19910713,356.5 +19910720,355.2 +19910727,355.3 +19910803,354.8 +19910810,354.6 +19910817,353.7 +19910824,353.0 +19910831,353.2 +19910907,353.0 +19910914,352.1 +19910921,351.8 +19910928,351.6 +19911005,351.7 +19911012,352.1 +19911019,352.5 +19911026,352.7 +19911102,353.4 +19911109,353.7 +19911116,353.5 +19911123,353.8 +19911130,354.3 +19911207,354.5 +19911214,354.9 +19911221,355.2 +19911228,355.5 +19920104,355.6 +19920111,356.0 +19920118,356.1 +19920125,355.9 +19920201,356.0 +19920208,356.7 +19920215,357.3 +19920222,356.9 +19920229,356.5 +19920307,357.3 +19920314,357.8 +19920321,358.1 +19920328,358.4 +19920404,358.5 +19920411,358.9 +19920418,359.7 +19920425,359.2 +19920502,359.6 +19920509,359.7 +19920516,358.6 +19920523,359.6 +19920530,360.2 +19920606,360.0 +19920613,359.4 +19920620,358.7 +19920627,358.4 +19920704,358.4 +19920711,357.2 +19920718,356.3 +19920725,356.1 +19920801,354.9 +19920808,355.3 +19920815,355.3 +19920822,354.5 +19920829,354.3 +19920905,353.5 +19920912,353.6 +19920919,352.3 +19920926,352.7 +19921003,353.6 +19921010,353.3 +19921017,353.2 +19921024,353.5 +19921031,353.5 +19921107,353.9 +19921114,353.8 +19921121,354.5 +19921128,354.6 +19921205,354.8 +19921212,355.3 +19921219,355.4 +19921226,355.9 +19930102,356.2 +19930109,356.9 +19930116,356.7 +19930123,356.6 +19930130,357.0 +19930206,356.6 +19930213,357.2 +19930220,357.3 +19930227,357.6 +19930306,358.3 +19930313,358.5 +19930320,358.1 +19930327,358.8 +19930403,359.1 +19930410,358.8 +19930417,359.4 +19930424,360.0 +19930501,359.6 +19930508,359.7 +19930515,360.7 +19930522,360.6 +19930529,360.3 +19930605,359.7 +19930612,359.9 +19930619,359.3 +19930626,359.1 +19930703,357.9 +19930710,358.0 +19930717,358.1 +19930724,356.6 +19930731,356.5 +19930807,355.8 +19930814,355.9 +19930821,354.9 +19930828,354.7 +19930904,354.3 +19930911,353.2 +19930918,353.8 +19930925,353.8 +19931002,353.8 +19931009,353.8 +19931016,354.0 +19931023,354.4 +19931030,354.3 +19931106,354.7 +19931113,355.1 +19931120,355.6 +19931127,356.0 +19931204,356.2 +19931211,356.5 +19931218,356.9 +19931225,357.5 +19940101,358.1 +19940108,358.1 +19940115,358.4 +19940122,358.3 +19940129,358.7 +19940205,358.4 +19940212,358.6 +19940219,359.0 +19940226,359.6 +19940305,358.7 +19940312,359.8 +19940319,360.4 +19940326,360.8 +19940402,360.6 +19940409,361.0 +19940416,361.0 +19940423,361.3 +19940430,362.2 +19940507,361.6 +19940514,361.4 +19940521,361.7 +19940528,361.9 +19940604,361.0 +19940611,361.0 +19940618,360.9 +19940625,360.7 +19940702,360.2 +19940709,359.9 +19940716,359.4 +19940723,359.0 +19940730,358.8 +19940806,358.1 +19940813,357.5 +19940820,357.6 +19940827,356.3 +19940903,356.4 +19940910,356.4 +19940917,355.4 +19940924,355.5 +19941001,355.4 +19941008,355.8 +19941015,356.0 +19941022,356.3 +19941029,356.6 +19941105,356.9 +19941112,357.4 +19941119,357.9 +19941126,358.1 +19941203,358.4 +19941210,359.1 +19941217,359.2 +19941224,359.1 +19941231,359.5 +19950107,359.6 +19950114,360.2 +19950121,360.1 +19950128,360.0 +19950204,360.6 +19950211,361.0 +19950218,360.8 +19950225,361.3 +19950304,362.2 +19950311,361.2 +19950318,360.9 +19950325,362.0 +19950401,363.8 +19950408,363.4 +19950415,363.3 +19950422,362.8 +19950429,363.5 +19950506,363.2 +19950513,364.1 +19950520,364.1 +19950527,363.4 +19950603,363.9 +19950610,363.4 +19950617,362.9 +19950624,362.8 +19950701,362.5 +19950708,362.2 +19950715,361.9 +19950722,361.5 +19950729,360.9 +19950805,360.4 +19950812,359.2 +19950819,358.7 +19950826,359.2 +19950902,357.3 +19950909,358.5 +19950916,358.5 +19950923,358.2 +19950930,357.5 +19951007,357.6 +19951014,357.6 +19951021,358.0 +19951028,358.2 +19951104,359.1 +19951111,359.4 +19951118,359.6 +19951125,359.8 +19951202,360.1 +19951209,360.4 +19951216,360.5 +19951223,360.8 +19951230,361.7 +19960106,361.8 +19960113,362.0 +19960120,362.1 +19960127,362.2 +19960203,362.6 +19960210,363.1 +19960217,363.0 +19960224,364.0 +19960302,363.8 +19960309,363.6 +19960316,364.1 +19960323,364.5 +19960330,364.3 +19960406,364.5 +19960413,364.8 +19960420,364.4 +19960427,365.1 +19960504,364.9 +19960511,365.3 +19960518,365.7 +19960525,365.4 +19960601,364.8 +19960608,365.1 +19960615,365.2 +19960622,365.0 +19960629,364.3 +19960706,364.1 +19960713,363.7 +19960720,363.3 +19960727,362.8 +19960803,361.7 +19960810,362.1 +19960817,361.2 +19960824,360.8 +19960831,360.8 +19960907,359.8 +19960914,359.8 +19960921,359.0 +19960928,359.0 +19961005,359.4 +19961012,359.5 +19961019,359.8 +19961026,359.8 +19961102,359.9 +19961109,360.5 +19961116,360.7 +19961123,361.2 +19961130,361.4 +19961207,361.9 +19961214,362.6 +19961221,362.4 +19961228,362.6 +19970104,362.9 +19970111,363.0 +19970118,363.1 +19970125,363.5 +19970201,363.2 +19970208,364.1 +19970215,364.0 +19970222,364.2 +19970301,364.5 +19970308,364.1 +19970315,364.1 +19970322,364.7 +19970329,365.4 +19970405,365.8 +19970412,366.2 +19970419,366.6 +19970426,366.7 +19970503,366.7 +19970510,366.8 +19970517,367.0 +19970524,366.6 +19970531,366.3 +19970607,365.7 +19970614,365.6 +19970621,365.5 +19970628,365.1 +19970705,365.0 +19970712,364.6 +19970719,364.1 +19970726,363.8 +19970802,363.3 +19970809,363.3 +19970816,362.6 +19970823,361.5 +19970830,361.6 +19970906,360.6 +19970913,360.2 +19970920,360.0 +19970927,359.8 +19971004,360.5 +19971011,360.4 +19971018,361.0 +19971025,361.1 +19971101,361.7 +19971108,362.1 +19971115,362.0 +19971122,362.6 +19971129,363.5 +19971206,363.9 +19971213,363.9 +19971220,364.2 +19971227,365.0 +19980103,365.2 +19980110,365.3 +19980117,365.3 +19980124,365.3 +19980131,365.6 +19980207,366.0 +19980214,365.5 +19980221,366.0 +19980228,367.3 +19980307,367.0 +19980314,366.6 +19980321,367.4 +19980328,368.5 +19980404,368.6 +19980411,368.6 +19980418,368.0 +19980425,368.9 +19980502,369.1 +19980509,368.8 +19980516,368.5 +19980523,369.6 +19980530,369.7 +19980606,369.4 +19980613,368.8 +19980620,368.5 +19980627,368.3 +19980704,368.0 +19980711,367.5 +19980718,367.6 +19980725,367.3 +19980801,366.8 +19980808,366.4 +19980815,365.6 +19980822,365.6 +19980829,364.2 +19980905,364.7 +19980912,363.9 +19980919,363.5 +19980926,363.6 +19981003,364.0 +19981010,364.1 +19981017,364.4 +19981024,364.4 +19981031,364.7 +19981107,365.0 +19981114,365.4 +19981121,365.8 +19981128,366.0 +19981205,366.4 +19981212,366.7 +19981219,367.3 +19981226,367.3 +19990102,367.5 +19990109,367.8 +19990116,367.8 +19990123,368.3 +19990130,369.2 +19990206,369.1 +19990213,368.8 +19990220,369.0 +19990227,368.5 +19990306,368.1 +19990313,369.5 +19990320,370.2 +19990327,370.6 +19990403,371.1 +19990410,371.5 +19990417,371.0 +19990424,370.3 +19990501,370.8 +19990508,371.3 +19990515,371.0 +19990522,370.8 +19990529,370.3 +19990605,370.9 +19990612,370.3 +19990619,369.9 +19990626,369.9 +19990703,369.4 +19990710,370.1 +19990717,369.5 +19990724,368.6 +19990731,367.4 +19990807,367.6 +19990814,366.7 +19990821,366.4 +19990828,366.1 +19990904,364.1 +19990911,364.7 +19990918,365.2 +19990925,364.7 +19991002,364.5 +19991009,365.0 +19991016,364.9 +19991023,365.6 +19991030,365.7 +19991106,366.2 +19991113,366.7 +19991120,366.6 +19991127,367.1 +19991204,367.4 +19991211,368.0 +19991218,368.0 +19991225,368.2 +20000101,368.6 +20000108,368.5 +20000115,369.0 +20000122,369.8 +20000129,369.2 +20000205,369.1 +20000212,369.6 +20000219,369.3 +20000226,369.5 +20000304,370.0 +20000311,370.0 +20000318,370.9 +20000325,370.7 +20000401,370.9 +20000408,371.7 +20000415,371.8 +20000422,372.0 +20000429,371.3 +20000506,371.2 +20000513,371.7 +20000520,371.9 +20000527,371.8 +20000603,371.9 +20000610,371.6 +20000617,371.7 +20000624,371.3 +20000701,370.8 +20000708,370.0 +20000715,370.2 +20000722,369.7 +20000729,369.0 +20000805,368.7 +20000812,368.3 +20000819,367.7 +20000826,367.1 +20000902,367.2 +20000909,366.7 +20000916,366.2 +20000923,366.2 +20000930,366.4 +20001007,366.3 +20001014,366.6 +20001021,366.7 +20001028,367.3 +20001104,367.6 +20001111,368.0 +20001118,368.6 +20001125,368.3 +20001202,369.0 +20001209,369.6 +20001216,369.3 +20001223,369.5 +20001230,369.8 +20010106,369.8 +20010113,370.2 +20010120,369.9 +20010127,370.8 +20010203,371.3 +20010210,371.1 +20010217,371.7 +20010224,371.2 +20010303,372.2 +20010310,372.2 +20010317,372.1 +20010324,371.8 +20010331,372.0 +20010407,372.7 +20010414,372.7 +20010421,373.0 +20010428,372.7 +20010505,373.7 +20010512,373.9 +20010519,373.7 +20010526,373.9 +20010602,373.8 +20010609,373.1 +20010616,372.8 +20010623,372.9 +20010630,372.7 +20010707,372.1 +20010714,371.3 +20010721,371.2 +20010728,370.6 +20010804,369.9 +20010811,369.5 +20010818,369.3 +20010825,369.0 +20010901,368.4 +20010908,368.2 +20010915,368.0 +20010922,367.4 +20010929,367.4 +20011006,367.8 +20011013,367.6 +20011020,368.1 +20011027,368.7 +20011103,368.7 +20011110,368.8 +20011117,369.7 +20011124,370.3 +20011201,370.3 +20011208,370.8 +20011215,371.2 +20011222,371.3 +20011229,371.5 diff --git a/statsmodels/datasets/co2/data.py b/statsmodels/datasets/co2/data.py new file mode 100644 index 0000000..30020ba --- /dev/null +++ b/statsmodels/datasets/co2/data.py @@ -0,0 +1,70 @@ +"""Mauna Loa Weekly Atmospheric CO2 Data""" +import pandas as pd + +from statsmodels.datasets import utils as du + + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """This is public domain.""" +TITLE = """Mauna Loa Weekly Atmospheric CO2 Data""" +SOURCE = """ +Data obtained from http://cdiac.ornl.gov/trends/co2/sio-keel-flask/sio-keel-flaskmlo_c.html + +Obtained on 3/15/2014. + +Citation: + +Keeling, C.D. and T.P. Whorf. 2004. Atmospheric CO2 concentrations derived from flask air samples at sites in the SIO network. In Trends: A Compendium of Data on Global Change. Carbon Dioxide Information Analysis Center, Oak Ridge National Laboratory, U.S. Department of Energy, Oak Ridge, Tennessee, U.S.A. +""" + +DESCRSHORT = """Atmospheric CO2 from Continuous Air Samples at Mauna Loa Observatory, Hawaii, U.S.A.""" + +DESCRLONG = """ +Atmospheric CO2 from Continuous Air Samples at Mauna Loa Observatory, Hawaii, U.S.A. + +Period of Record: March 1958 - December 2001 + +Methods: An Applied Physics Corporation (APC) nondispersive infrared gas analyzer was used to obtain atmospheric CO2 concentrations, based on continuous data (four measurements per hour) from atop intake lines on several towers. Steady data periods of not less than six hours per day are required; if no such six-hour periods are available on any given day, then no data are used that day. Weekly averages were calculated for most weeks throughout the approximately 44 years of record. The continuous data for year 2000 is compared with flask data from the same site in the graphics section.""" + +#suggested notes +NOTE = """:: + + Number of observations: 2225 + Number of variables: 2 + Variable name definitions: + + date - sample date in YYMMDD format + co2 - CO2 Concentration ppmv + + The data returned by load_pandas contains the dates as the index. +""" + + +def load_pandas(): + data = _get_data() + index = pd.date_range(start=str(data['date'][0]), periods=len(data), freq='W-SAT') + dataset = data[['co2']] + dataset.index = index + return du.Dataset(data=dataset, names=list(data.columns)) + + +def load(as_pandas=None): + """ + Load the data and return a Dataset class instance. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas, retain_index=True) + +def _get_data(): + return du.load_csv(__file__, 'co2.csv') diff --git a/statsmodels/datasets/co2/src/maunaloa_c.dat b/statsmodels/datasets/co2/src/maunaloa_c.dat new file mode 100644 index 0000000..8f35826 --- /dev/null +++ b/statsmodels/datasets/co2/src/maunaloa_c.dat @@ -0,0 +1,2252 @@ +******************************************************************* +*** Weekly averages derived from continuous air samples *** +*** for the Mauna Loa Observatory, Hawaii, U.S.A. *** +*** *** +*** *** +*** September 2004 *** +*** *** +*** Source: Carbon Dioxide Research Group *** +*** Scripps Institution of Oceanography *** +*** University of California, San Diego *** +*** La Jolla, California, USA 92023-0444 *** +******************************************************************* + +These weekly averages are ultimately based on measurements of 4 air +samples per hour taken atop intake lines on several towers during +steady periods of CO2 concentration of not less than 6 hours per day; +if no such periods are available on a given day, then no data are +used for that day. The "Weight" column gives the number of days used +in each weekly average. Flag codes are explained in the NDP writeup, available +electronically from the home page of this data set. CO2 concentrations +are in terms of the 1999 calibration scale (Keeling et al., 2002) +available electronically from the references in the NDP writeup which +can be accessed from the home page of this data set. + +Station Sample Weight Flag CO2 concentration + code date code (ppmv) + +MLO 580329 4 0 316.10 +MLO 580405 6 0 317.30 +MLO 580412 4 0 317.60 +MLO 580419 6 0 317.50 +MLO 580426 2 0 316.40 +MLO 580503 6 0 316.90 +MLO 580517 1 0 317.50 +MLO 580524 5 0 317.90 +MLO 580705 2 0 315.80 +MLO 580712 4 0 315.80 +MLO 580719 4 0 315.40 +MLO 580726 7 0 315.50 +MLO 580802 3 0 315.60 +MLO 580809 4 0 315.10 +MLO 580816 3 0 315.00 +MLO 580830 5 0 314.10 +MLO 580906 1 0 313.50 +MLO 581108 4 0 313.00 +MLO 581115 7 0 313.20 +MLO 581122 5 0 313.50 +MLO 581129 7 0 314.00 +MLO 581206 6 0 314.50 +MLO 581213 7 0 314.40 +MLO 581220 4 0 314.70 +MLO 581227 2 0 315.20 +MLO 590103 3 0 315.20 +MLO 590110 7 0 315.50 +MLO 590117 7 0 315.60 +MLO 590124 5 0 315.80 +MLO 590131 2 0 315.40 +MLO 590214 1 0 316.90 +MLO 590221 7 0 316.60 +MLO 590228 3 0 316.60 +MLO 590307 7 0 316.80 +MLO 590321 4 0 316.70 +MLO 590328 6 0 316.70 +MLO 590404 7 0 317.70 +MLO 590411 7 0 317.10 +MLO 590418 6 0 317.60 +MLO 590425 5 0 318.30 +MLO 590502 3 0 318.20 +MLO 590509 1 0 318.70 +MLO 590516 7 0 318.00 +MLO 590523 5 0 318.40 +MLO 590606 7 0 318.50 +MLO 590613 5 0 318.10 +MLO 590620 5 0 317.80 +MLO 590627 2 0 317.70 +MLO 590704 7 0 316.80 +MLO 590711 7 0 316.80 +MLO 590718 5 0 316.40 +MLO 590725 4 0 316.10 +MLO 590801 7 0 315.60 +MLO 590808 3 0 314.90 +MLO 590822 1 0 315.00 +MLO 590829 4 0 314.10 +MLO 590905 5 0 314.40 +MLO 590912 3 0 313.90 +MLO 590919 5 0 313.50 +MLO 590926 4 0 313.50 +MLO 591003 6 0 313.00 +MLO 591010 3 0 313.10 +MLO 591017 7 0 313.40 +MLO 591024 7 0 313.40 +MLO 591031 7 0 314.10 +MLO 591107 2 0 314.40 +MLO 591114 5 0 314.80 +MLO 591121 6 0 315.20 +MLO 591128 5 0 315.10 +MLO 591205 4 0 315.00 +MLO 591212 5 0 315.60 +MLO 591219 6 0 315.80 +MLO 591226 6 0 315.70 +MLO 600102 4 0 315.70 +MLO 600109 5 0 316.40 +MLO 600116 6 0 316.70 +MLO 600123 5 0 316.50 +MLO 600130 6 0 316.60 +MLO 600206 2 0 316.60 +MLO 600213 6 0 316.90 +MLO 600220 4 0 317.40 +MLO 600227 5 0 317.00 +MLO 600305 7 0 316.90 +MLO 600312 7 0 317.70 +MLO 600319 4 0 318.00 +MLO 600326 6 0 317.70 +MLO 600402 5 0 318.60 +MLO 600409 3 0 319.30 +MLO 600416 7 0 319.00 +MLO 600423 7 0 319.00 +MLO 600430 1 0 319.70 +MLO 600507 6 0 319.90 +MLO 600514 5 0 319.80 +MLO 600521 6 0 320.00 +MLO 600528 7 0 320.00 +MLO 600604 3 0 319.40 +MLO 600611 5 0 320.00 +MLO 600618 3 0 319.40 +MLO 600625 2 0 319.00 +MLO 600702 5 0 318.10 +MLO 600709 4 0 318.60 +MLO 600716 5 0 318.40 +MLO 600723 6 0 317.90 +MLO 600730 5 0 317.30 +MLO 600806 3 0 316.60 +MLO 600813 6 0 316.70 +MLO 600820 5 0 315.10 +MLO 600827 5 0 314.70 +MLO 600903 7 0 314.70 +MLO 600910 7 0 314.50 +MLO 600917 6 0 314.20 +MLO 600924 5 0 313.30 +MLO 601001 2 0 313.60 +MLO 601008 4 0 313.30 +MLO 601015 5 0 313.90 +MLO 601022 6 0 314.20 +MLO 601029 3 0 314.20 +MLO 601105 7 0 314.50 +MLO 601112 6 0 315.10 +MLO 601119 7 0 315.10 +MLO 601126 7 0 315.40 +MLO 601203 5 0 315.80 +MLO 601210 7 0 316.00 +MLO 601217 7 0 316.20 +MLO 601224 5 0 316.40 +MLO 601231 7 0 316.60 +MLO 610107 6 0 316.70 +MLO 610114 7 0 317.00 +MLO 610121 7 0 317.00 +MLO 610128 7 0 317.00 +MLO 610204 6 0 317.00 +MLO 610211 6 0 317.70 +MLO 610218 7 0 317.90 +MLO 610225 7 0 318.00 +MLO 610304 5 0 318.00 +MLO 610311 4 0 318.50 +MLO 610318 6 0 318.90 +MLO 610325 7 0 318.70 +MLO 610401 7 0 319.40 +MLO 610408 6 0 319.50 +MLO 610415 7 0 318.90 +MLO 610422 6 0 319.70 +MLO 610429 6 0 319.60 +MLO 610506 7 0 320.60 +MLO 610513 3 0 320.40 +MLO 610520 6 0 320.60 +MLO 610527 7 0 320.30 +MLO 610603 6 0 320.00 +MLO 610610 5 0 320.00 +MLO 610617 7 0 319.60 +MLO 610624 6 0 319.40 +MLO 610701 5 0 319.20 +MLO 610708 6 0 319.00 +MLO 610715 5 0 318.40 +MLO 610722 1 0 317.10 +MLO 610729 3 0 317.90 +MLO 610805 7 0 317.90 +MLO 610812 2 0 317.30 +MLO 610819 5 0 316.70 +MLO 610826 6 0 315.20 +MLO 610902 5 0 315.20 +MLO 610909 5 0 314.90 +MLO 610916 5 0 314.50 +MLO 610923 4 0 315.00 +MLO 610930 4 0 315.60 +MLO 611007 5 0 314.90 +MLO 611014 7 0 315.40 +MLO 611021 7 0 315.40 +MLO 611028 6 0 315.70 +MLO 611104 6 0 315.80 +MLO 611111 5 0 315.70 +MLO 611118 7 0 316.20 +MLO 611125 6 0 316.50 +MLO 611202 5 0 316.50 +MLO 611209 5 0 317.00 +MLO 611216 6 0 316.90 +MLO 611223 3 0 317.10 +MLO 611230 7 0 317.40 +MLO 620106 5 0 317.90 +MLO 620113 7 0 318.10 +MLO 620120 5 0 318.00 +MLO 620127 7 0 317.70 +MLO 620203 7 0 318.00 +MLO 620210 4 0 318.30 +MLO 620217 4 0 318.90 +MLO 620224 1 0 319.30 +MLO 620303 6 0 319.20 +MLO 620310 6 0 319.40 +MLO 620317 7 0 319.90 +MLO 620324 4 0 319.70 +MLO 620331 5 0 320.20 +MLO 620407 3 0 320.20 +MLO 620414 6 0 321.00 +MLO 620421 2 0 320.70 +MLO 620428 5 0 320.30 +MLO 620505 4 0 320.80 +MLO 620512 5 0 320.70 +MLO 620519 5 0 321.00 +MLO 620526 5 0 321.10 +MLO 620602 6 0 320.90 +MLO 620609 5 0 320.80 +MLO 620616 6 0 320.50 +MLO 620623 6 0 320.10 +MLO 620630 7 0 320.20 +MLO 620707 6 0 320.10 +MLO 620714 3 0 319.90 +MLO 620721 2 0 319.00 +MLO 620728 7 0 318.70 +MLO 620804 3 0 318.60 +MLO 620811 6 0 317.20 +MLO 620818 3 0 317.40 +MLO 620915 5 0 316.60 +MLO 620922 4 0 315.70 +MLO 620929 7 0 315.90 +MLO 621006 5 0 315.10 +MLO 621013 4 0 315.40 +MLO 621020 5 0 315.70 +MLO 621027 5 0 315.70 +MLO 621103 5 0 315.90 +MLO 621110 6 0 316.40 +MLO 621117 7 0 316.90 +MLO 621124 7 0 317.00 +MLO 621201 7 0 317.10 +MLO 621208 5 0 317.30 +MLO 621215 7 0 317.60 +MLO 621222 4 0 318.10 +MLO 630105 5 0 318.50 +MLO 630112 7 0 318.70 +MLO 630119 7 0 318.90 +MLO 630126 7 0 318.80 +MLO 630202 7 0 318.70 +MLO 630209 7 0 318.90 +MLO 630223 2 0 319.30 +MLO 630302 5 0 319.30 +MLO 630309 6 0 319.70 +MLO 630316 5 0 319.80 +MLO 630323 7 0 320.30 +MLO 630330 5 0 320.20 +MLO 630406 3 0 320.30 +MLO 630413 6 0 320.90 +MLO 630420 6 0 322.00 +MLO 630427 6 0 321.90 +MLO 630511 3 0 321.90 +MLO 630518 5 0 322.20 +MLO 630525 6 0 322.20 +MLO 630601 3 0 322.30 +MLO 630608 2 0 322.00 +MLO 630615 6 0 321.80 +MLO 630622 4 0 320.80 +MLO 630629 7 0 320.40 +MLO 630706 7 0 320.10 +MLO 630713 5 0 319.80 +MLO 630720 7 0 319.50 +MLO 630727 6 0 319.00 +MLO 630803 3 0 318.60 +MLO 630810 7 0 318.20 +MLO 630817 3 0 317.70 +MLO 630824 7 0 317.10 +MLO 630831 3 0 316.40 +MLO 630907 7 0 316.80 +MLO 630914 7 0 315.90 +MLO 630921 5 0 316.00 +MLO 630928 4 0 315.90 +MLO 631005 3 0 316.20 +MLO 631012 7 0 315.60 +MLO 631019 6 0 316.10 +MLO 631026 7 0 316.30 +MLO 631102 4 0 316.60 +MLO 631109 6 0 316.80 +MLO 631116 1 0 317.10 +MLO 631130 5 0 317.50 +MLO 631207 6 0 318.00 +MLO 631214 4 0 318.20 +MLO 631221 7 0 318.50 +MLO 631228 7 0 318.70 +MLO 640104 6 0 319.00 +MLO 640111 6 0 319.40 +MLO 640118 6 0 319.80 +MLO 640530 2 0 322.00 +MLO 640606 4 0 322.00 +MLO 640627 3 0 321.50 +MLO 640704 4 0 321.10 +MLO 640711 2 0 319.90 +MLO 640718 7 0 320.20 +MLO 640725 5 0 320.00 +MLO 640801 2 0 319.10 +MLO 640815 4 0 318.60 +MLO 640822 6 0 318.20 +MLO 640829 5 0 318.10 +MLO 640905 5 0 317.40 +MLO 640912 4 0 316.50 +MLO 640919 2 0 315.50 +MLO 640926 2 0 317.00 +MLO 641003 4 0 316.90 +MLO 641010 7 0 316.50 +MLO 641017 7 0 316.80 +MLO 641024 2 0 317.00 +MLO 641031 6 0 317.60 +MLO 641107 7 0 317.70 +MLO 641114 7 0 317.60 +MLO 641121 6 0 317.50 +MLO 641128 6 0 318.10 +MLO 641205 6 0 318.40 +MLO 641212 7 0 318.50 +MLO 641219 7 0 318.90 +MLO 641226 6 0 318.90 +MLO 650102 5 0 319.00 +MLO 650109 7 0 319.10 +MLO 650116 7 0 319.10 +MLO 650123 4 0 319.70 +MLO 650130 7 0 320.10 +MLO 650206 7 0 320.20 +MLO 650213 7 0 320.10 +MLO 650220 7 0 320.70 +MLO 650227 6 0 320.80 +MLO 650306 5 0 321.00 +MLO 650313 7 0 320.90 +MLO 650320 7 0 320.40 +MLO 650327 7 0 321.40 +MLO 650403 7 0 321.90 +MLO 650410 4 0 322.20 +MLO 650417 7 0 322.10 +MLO 650424 5 0 321.80 +MLO 650501 7 0 322.40 +MLO 650508 6 0 322.20 +MLO 650515 7 0 321.90 +MLO 650522 7 0 321.60 +MLO 650529 5 0 322.20 +MLO 650605 7 0 321.80 +MLO 650612 7 0 321.70 +MLO 650619 7 0 321.70 +MLO 650626 6 0 321.90 +MLO 650703 7 0 321.90 +MLO 650710 6 0 321.80 +MLO 650717 3 0 321.70 +MLO 650724 6 0 320.40 +MLO 650731 5 0 319.40 +MLO 650807 7 0 319.40 +MLO 650814 5 0 318.00 +MLO 650821 6 0 318.80 +MLO 650828 3 0 318.70 +MLO 650904 7 0 318.30 +MLO 650911 4 0 318.00 +MLO 650918 6 0 318.20 +MLO 650925 6 0 316.80 +MLO 651002 6 0 316.60 +MLO 651009 7 0 317.20 +MLO 651016 7 0 317.80 +MLO 651023 7 0 317.50 +MLO 651030 7 0 317.60 +MLO 651106 7 0 318.30 +MLO 651113 7 0 319.20 +MLO 651120 7 0 318.90 +MLO 651127 7 0 319.10 +MLO 651204 7 0 319.00 +MLO 651211 5 0 319.30 +MLO 651218 6 0 319.30 +MLO 651225 6 0 319.70 +MLO 660101 7 0 319.60 +MLO 660108 7 0 320.40 +MLO 660115 7 0 320.60 +MLO 660122 7 0 321.00 +MLO 660129 7 0 321.10 +MLO 660205 7 0 321.20 +MLO 660212 6 0 321.70 +MLO 660219 7 0 321.60 +MLO 660226 7 0 321.80 +MLO 660305 4 0 322.10 +MLO 660312 5 0 322.10 +MLO 660319 6 0 322.50 +MLO 660326 5 0 322.80 +MLO 660402 7 0 323.50 +MLO 660409 3 0 323.60 +MLO 660416 7 0 323.80 +MLO 660423 4 0 323.90 +MLO 660430 6 0 323.50 +MLO 660507 6 0 324.00 +MLO 660514 7 0 324.10 +MLO 660521 7 0 323.70 +MLO 660528 7 0 324.30 +MLO 660604 7 0 324.00 +MLO 660611 7 0 323.80 +MLO 660618 7 0 323.70 +MLO 660625 6 0 323.30 +MLO 660702 5 0 322.80 +MLO 660709 6 0 322.90 +MLO 660806 4 0 321.30 +MLO 660813 3 0 320.80 +MLO 660820 3 0 319.10 +MLO 660827 7 0 319.60 +MLO 660903 4 0 319.90 +MLO 660910 3 0 318.20 +MLO 660917 7 0 318.40 +MLO 660924 5 0 318.30 +MLO 661001 6 0 317.90 +MLO 661008 7 0 317.90 +MLO 661015 4 0 318.20 +MLO 661022 4 0 318.60 +MLO 661029 6 0 318.30 +MLO 661112 4 0 319.50 +MLO 661119 5 0 320.00 +MLO 661126 6 0 320.20 +MLO 661203 3 0 320.80 +MLO 661210 7 0 320.80 +MLO 661217 5 0 321.10 +MLO 661224 4 0 321.30 +MLO 661231 7 0 321.30 +MLO 670107 6 0 321.90 +MLO 670114 2 0 322.90 +MLO 670204 5 0 322.10 +MLO 670211 5 0 322.20 +MLO 670218 6 0 322.80 +MLO 670225 4 0 322.60 +MLO 670304 6 0 322.90 +MLO 670311 6 0 322.60 +MLO 670318 4 0 323.30 +MLO 670325 2 0 323.20 +MLO 670401 3 0 323.10 +MLO 670408 7 0 324.20 +MLO 670415 5 0 324.40 +MLO 670422 3 0 324.60 +MLO 670429 6 0 325.10 +MLO 670506 1 0 325.20 +MLO 670513 5 0 324.70 +MLO 670520 5 0 325.00 +MLO 670527 5 0 324.90 +MLO 670603 4 0 324.90 +MLO 670610 6 0 324.60 +MLO 670617 4 0 323.30 +MLO 670624 6 0 323.50 +MLO 670701 6 0 322.80 +MLO 670708 7 0 322.80 +MLO 670715 5 0 322.40 +MLO 670722 5 0 322.40 +MLO 670729 6 0 322.00 +MLO 670805 7 0 321.60 +MLO 670812 5 0 321.40 +MLO 670819 5 0 320.40 +MLO 670826 5 0 320.00 +MLO 670902 4 0 320.00 +MLO 670909 6 0 319.40 +MLO 670916 7 0 319.30 +MLO 670923 7 0 319.00 +MLO 670930 7 0 318.80 +MLO 671007 7 0 318.80 +MLO 671014 6 0 319.80 +MLO 671021 7 0 319.40 +MLO 671028 7 0 319.80 +MLO 671104 7 0 320.00 +MLO 671111 7 0 320.30 +MLO 671118 7 0 320.90 +MLO 671125 7 0 321.50 +MLO 671202 7 0 321.40 +MLO 671209 7 0 321.80 +MLO 671216 7 0 322.20 +MLO 671223 7 0 321.90 +MLO 671230 7 0 322.30 +MLO 680106 7 0 322.40 +MLO 680113 7 0 322.50 +MLO 680120 6 0 322.50 +MLO 680127 7 0 322.80 +MLO 680203 7 0 322.60 +MLO 680210 7 0 323.10 +MLO 680217 7 0 323.40 +MLO 680224 7 0 323.10 +MLO 680302 6 0 323.10 +MLO 680309 4 0 323.80 +MLO 680316 6 0 323.80 +MLO 680323 6 0 324.20 +MLO 680330 5 0 324.70 +MLO 680406 7 0 324.70 +MLO 680413 6 0 325.00 +MLO 680420 5 0 324.80 +MLO 680427 7 0 325.40 +MLO 680504 7 0 325.60 +MLO 680511 7 0 325.00 +MLO 680518 6 0 325.50 +MLO 680525 7 0 325.80 +MLO 680601 5 0 325.60 +MLO 680608 7 0 325.70 +MLO 680615 4 0 325.50 +MLO 680622 4 0 324.90 +MLO 680629 5 0 324.60 +MLO 680706 6 0 324.70 +MLO 680713 7 0 324.10 +MLO 680720 7 0 323.90 +MLO 680727 7 0 323.40 +MLO 680803 5 0 322.40 +MLO 680810 5 0 322.20 +MLO 680817 3 0 322.00 +MLO 680824 6 0 321.70 +MLO 680831 6 0 321.40 +MLO 680907 7 0 320.40 +MLO 680914 7 0 321.10 +MLO 680921 7 0 319.70 +MLO 680928 7 0 319.80 +MLO 681005 7 0 320.50 +MLO 681012 6 0 320.50 +MLO 681019 7 0 320.20 +MLO 681026 7 0 319.90 +MLO 681102 5 0 320.70 +MLO 681109 7 0 320.80 +MLO 681116 7 0 321.40 +MLO 681123 7 0 321.70 +MLO 681130 6 0 322.00 +MLO 681207 4 0 322.40 +MLO 681214 7 0 322.90 +MLO 681221 5 0 323.30 +MLO 681228 6 0 323.10 +MLO 690104 6 0 323.30 +MLO 690111 6 0 324.00 +MLO 690118 6 0 324.30 +MLO 690125 7 0 324.10 +MLO 690201 7 0 324.10 +MLO 690208 5 0 323.90 +MLO 690215 5 0 324.30 +MLO 690222 5 0 324.80 +MLO 690301 7 0 325.10 +MLO 690308 7 0 325.50 +MLO 690315 7 0 325.70 +MLO 690322 6 0 325.90 +MLO 690329 7 0 325.80 +MLO 690405 7 0 326.20 +MLO 690412 7 0 327.10 +MLO 690419 6 0 326.50 +MLO 690426 6 0 326.50 +MLO 690503 7 0 327.50 +MLO 690510 7 0 327.80 +MLO 690517 6 0 326.80 +MLO 690524 7 0 326.90 +MLO 690531 5 0 327.40 +MLO 690607 6 0 326.50 +MLO 690614 4 0 326.70 +MLO 690621 5 0 326.70 +MLO 690628 7 0 326.30 +MLO 690705 6 0 326.10 +MLO 690712 7 0 326.00 +MLO 690719 6 0 325.70 +MLO 690726 4 0 325.40 +MLO 690802 5 0 324.50 +MLO 690809 7 0 324.50 +MLO 690816 7 0 323.10 +MLO 690823 5 0 322.50 +MLO 690830 7 0 323.10 +MLO 690906 6 0 322.20 +MLO 690913 6 0 322.70 +MLO 690920 4 0 322.80 +MLO 690927 7 0 321.90 +MLO 691004 7 0 321.50 +MLO 691011 7 0 321.80 +MLO 691018 7 0 322.00 +MLO 691025 7 0 321.90 +MLO 691101 7 0 322.20 +MLO 691108 7 0 322.60 +MLO 691115 7 0 322.70 +MLO 691122 7 0 323.10 +MLO 691129 7 0 323.50 +MLO 691206 7 0 323.90 +MLO 691213 7 0 323.90 +MLO 691220 7 0 324.20 +MLO 691227 7 0 324.50 +MLO 700103 7 0 324.70 +MLO 700110 7 0 325.40 +MLO 700117 7 0 325.00 +MLO 700124 7 0 324.80 +MLO 700131 7 0 325.50 +MLO 700207 7 0 325.70 +MLO 700214 7 0 326.00 +MLO 700221 6 0 326.30 +MLO 700228 7 0 326.10 +MLO 700307 7 0 326.80 +MLO 700314 7 0 326.80 +MLO 700321 7 0 327.50 +MLO 700328 7 0 326.90 +MLO 700404 7 0 328.20 +MLO 700411 7 0 327.80 +MLO 700418 7 0 327.80 +MLO 700425 7 0 328.50 +MLO 700502 7 0 327.90 +MLO 700509 5 0 327.50 +MLO 700516 5 0 328.00 +MLO 700523 7 0 328.30 +MLO 700530 6 0 327.90 +MLO 700606 7 0 327.50 +MLO 700613 7 0 327.80 +MLO 700620 7 0 327.70 +MLO 700627 6 0 327.20 +MLO 700704 6 0 327.20 +MLO 700711 6 0 326.20 +MLO 700718 6 0 326.20 +MLO 700725 7 0 325.60 +MLO 700801 5 0 325.20 +MLO 700808 3 0 325.20 +MLO 700815 6 0 324.80 +MLO 700822 5 0 324.80 +MLO 700829 5 0 323.30 +MLO 700905 7 0 322.90 +MLO 700912 4 0 323.50 +MLO 700919 4 0 323.10 +MLO 700926 5 0 323.10 +MLO 701003 5 0 323.20 +MLO 701010 6 0 323.50 +MLO 701017 4 0 322.90 +MLO 701024 7 0 323.00 +MLO 701031 5 0 323.10 +MLO 701107 7 0 323.60 +MLO 701114 5 0 323.70 +MLO 701121 7 0 324.20 +MLO 701128 7 0 324.70 +MLO 701205 7 0 324.70 +MLO 701212 7 0 325.00 +MLO 701219 7 0 325.20 +MLO 701226 3 0 325.50 +MLO 710102 6 0 325.70 +MLO 710109 7 0 325.80 +MLO 710116 7 0 325.90 +MLO 710123 6 0 326.70 +MLO 710130 7 0 326.60 +MLO 710206 7 0 326.50 +MLO 710213 7 0 326.40 +MLO 710220 7 0 326.70 +MLO 710227 7 0 327.00 +MLO 710306 6 0 327.10 +MLO 710313 6 0 327.30 +MLO 710320 7 0 327.00 +MLO 710327 7 0 327.40 +MLO 710403 6 0 327.40 +MLO 710410 6 0 327.10 +MLO 710417 7 0 327.70 +MLO 710424 7 0 328.50 +MLO 710501 7 0 328.20 +MLO 710508 7 0 329.00 +MLO 710515 7 0 329.20 +MLO 710522 7 0 328.90 +MLO 710529 6 0 328.80 +MLO 710605 6 0 328.50 +MLO 710612 7 0 328.80 +MLO 710619 7 0 328.10 +MLO 710626 7 0 328.50 +MLO 710703 7 0 327.90 +MLO 710710 6 0 327.80 +MLO 710717 7 0 327.50 +MLO 710724 6 0 326.20 +MLO 710731 2 0 326.70 +MLO 710807 7 0 326.10 +MLO 710814 2 0 325.60 +MLO 710821 6 0 325.30 +MLO 710828 6 0 324.00 +MLO 710904 7 0 323.60 +MLO 710911 7 0 323.50 +MLO 710918 4 0 323.20 +MLO 710925 7 0 323.30 +MLO 711002 7 0 323.30 +MLO 711009 1 0 322.90 +MLO 711016 7 0 323.50 +MLO 711023 7 0 323.60 +MLO 711030 7 0 324.40 +MLO 711106 7 0 324.30 +MLO 711113 7 0 324.50 +MLO 711120 7 0 325.00 +MLO 711127 7 0 325.50 +MLO 711204 7 0 325.30 +MLO 711211 7 0 325.90 +MLO 711218 7 0 326.20 +MLO 711225 7 0 326.30 +MLO 720101 6 0 326.60 +MLO 720108 7 0 326.60 +MLO 720115 7 0 326.60 +MLO 720122 7 0 326.60 +MLO 720129 7 0 327.20 +MLO 720205 7 0 327.40 +MLO 720212 7 0 327.90 +MLO 720219 7 0 327.80 +MLO 720226 7 0 327.40 +MLO 720304 7 0 327.50 +MLO 720311 6 0 327.10 +MLO 720318 7 0 327.70 +MLO 720325 4 0 328.60 +MLO 720401 6 0 328.90 +MLO 720408 7 0 329.40 +MLO 720415 7 0 329.80 +MLO 720422 7 0 330.10 +MLO 720429 6 0 330.00 +MLO 720506 7 0 330.00 +MLO 720513 7 0 329.70 +MLO 720520 7 0 330.10 +MLO 720527 7 0 330.20 +MLO 720603 7 0 329.70 +MLO 720610 5 0 329.10 +MLO 720617 7 0 329.00 +MLO 720624 7 0 328.50 +MLO 720701 7 0 328.60 +MLO 720708 7 0 328.30 +MLO 720715 7 0 327.70 +MLO 720722 5 0 328.10 +MLO 720729 5 0 327.50 +MLO 720805 7 0 326.90 +MLO 720812 7 0 326.60 +MLO 720819 7 0 326.50 +MLO 720826 7 0 325.00 +MLO 720902 7 0 325.40 +MLO 720909 7 0 325.70 +MLO 720916 7 0 324.80 +MLO 720923 7 0 324.20 +MLO 720930 6 0 324.20 +MLO 721007 6 0 324.80 +MLO 721014 5 0 325.50 +MLO 721021 7 0 325.10 +MLO 721028 7 0 325.80 +MLO 721104 7 0 326.30 +MLO 721111 6 0 326.10 +MLO 721118 7 0 326.40 +MLO 721125 7 0 326.90 +MLO 721202 7 0 326.90 +MLO 721209 7 0 327.10 +MLO 721216 7 0 327.60 +MLO 721223 6 0 327.90 +MLO 721230 7 0 328.20 +MLO 730106 5 0 328.40 +MLO 730113 7 0 328.40 +MLO 730120 5 0 328.60 +MLO 730127 7 0 328.80 +MLO 730203 6 0 329.10 +MLO 730210 7 0 329.50 +MLO 730217 7 0 329.60 +MLO 730224 7 0 329.70 +MLO 730303 6 0 329.90 +MLO 730310 7 0 330.10 +MLO 730317 5 0 330.50 +MLO 730324 4 0 330.80 +MLO 730331 7 0 330.60 +MLO 730407 7 0 331.20 +MLO 730414 7 0 331.10 +MLO 730421 6 0 331.90 +MLO 730428 4 0 332.10 +MLO 730505 7 0 332.20 +MLO 730512 7 0 332.30 +MLO 730519 7 0 332.60 +MLO 730526 6 0 332.50 +MLO 730602 6 0 332.20 +MLO 730609 7 0 332.50 +MLO 730616 7 0 332.00 +MLO 730623 7 0 331.60 +MLO 730630 4 0 331.40 +MLO 730707 6 0 331.50 +MLO 730714 5 0 331.00 +MLO 730721 5 0 330.00 +MLO 730728 3 0 330.10 +MLO 730804 4 0 330.00 +MLO 730811 5 0 329.50 +MLO 730818 4 0 329.30 +MLO 730825 6 0 328.50 +MLO 730901 5 0 328.40 +MLO 730908 5 0 327.60 +MLO 730915 5 0 327.80 +MLO 730922 5 0 327.10 +MLO 730929 2 0 326.60 +MLO 731006 7 0 327.00 +MLO 731013 4 0 327.40 +MLO 731020 7 0 327.40 +MLO 731027 6 0 327.10 +MLO 731103 4 0 327.50 +MLO 731110 5 0 328.00 +MLO 731117 6 0 328.20 +MLO 731124 5 0 328.50 +MLO 731201 6 0 329.00 +MLO 731208 2 0 328.70 +MLO 731215 7 0 328.60 +MLO 731222 7 0 328.20 +MLO 731229 5 0 328.70 +MLO 740105 7 0 328.90 +MLO 740112 7 0 329.20 +MLO 740119 6 0 329.40 +MLO 740126 6 0 329.80 +MLO 740202 7 0 330.50 +MLO 740209 7 0 330.80 +MLO 740216 7 0 330.60 +MLO 740223 7 0 330.60 +MLO 740302 7 0 330.70 +MLO 740309 6 0 331.20 +MLO 740316 7 0 332.10 +MLO 740323 7 0 332.00 +MLO 740330 7 0 331.50 +MLO 740406 7 0 332.40 +MLO 740413 7 0 332.10 +MLO 740420 7 0 332.90 +MLO 740427 7 0 333.10 +MLO 740504 7 0 332.90 +MLO 740511 7 0 333.00 +MLO 740518 7 0 333.20 +MLO 740525 7 0 332.80 +MLO 740601 7 0 332.90 +MLO 740608 6 0 332.00 +MLO 740615 5 0 332.00 +MLO 740622 6 0 332.20 +MLO 740629 5 0 331.70 +MLO 740706 6 0 331.70 +MLO 740713 7 0 331.20 +MLO 740720 5 0 330.40 +MLO 740727 3 0 331.00 +MLO 740803 6 0 330.00 +MLO 740810 5 0 329.90 +MLO 740817 6 0 329.20 +MLO 740824 6 0 328.90 +MLO 740831 7 0 328.10 +MLO 740907 7 0 328.00 +MLO 740914 7 0 327.30 +MLO 740921 7 0 326.90 +MLO 740928 7 0 327.30 +MLO 741005 6 0 327.30 +MLO 741012 6 0 327.00 +MLO 741019 7 0 327.50 +MLO 741026 7 0 327.70 +MLO 741102 7 0 327.90 +MLO 741109 7 0 328.00 +MLO 741116 6 0 328.80 +MLO 741123 6 0 328.60 +MLO 741130 3 0 328.70 +MLO 741207 2 0 329.50 +MLO 741214 4 0 329.70 +MLO 741221 7 0 329.80 +MLO 741228 7 0 329.70 +MLO 750104 4 0 329.90 +MLO 750111 4 0 329.80 +MLO 750118 4 0 330.20 +MLO 750125 7 0 331.10 +MLO 750201 6 0 331.10 +MLO 750208 7 0 331.40 +MLO 750215 7 0 331.00 +MLO 750222 5 0 331.70 +MLO 750301 7 0 331.80 +MLO 750308 7 0 331.60 +MLO 750315 7 0 331.90 +MLO 750322 7 0 332.20 +MLO 750329 6 0 332.50 +MLO 750405 7 0 333.00 +MLO 750412 6 0 333.50 +MLO 750419 7 0 333.50 +MLO 750426 7 0 333.10 +MLO 750503 7 0 333.90 +MLO 750510 7 0 333.90 +MLO 750517 7 0 333.70 +MLO 750524 7 0 333.70 +MLO 750531 7 0 334.10 +MLO 750607 7 0 333.80 +MLO 750614 6 0 333.30 +MLO 750621 7 0 333.40 +MLO 750628 7 0 333.10 +MLO 750705 5 0 332.70 +MLO 750712 7 0 332.00 +MLO 750719 5 0 331.00 +MLO 750726 6 0 331.50 +MLO 750802 7 0 330.80 +MLO 750809 7 0 330.70 +MLO 750816 5 0 330.30 +MLO 750823 6 0 329.30 +MLO 750830 6 0 328.80 +MLO 750906 6 0 329.40 +MLO 750913 6 0 328.50 +MLO 750920 7 0 328.00 +MLO 750927 6 0 328.20 +MLO 751004 6 0 328.00 +MLO 751011 5 0 328.00 +MLO 751018 6 0 328.50 +MLO 751025 6 0 328.80 +MLO 751101 4 0 329.30 +MLO 751108 6 0 329.20 +MLO 751115 5 0 329.10 +MLO 751122 3 0 329.50 +MLO 751129 5 0 330.10 +MLO 751206 7 0 330.30 +MLO 751213 7 0 330.50 +MLO 751220 5 0 331.10 +MLO 751227 5 0 331.20 +MLO 760103 7 0 331.50 +MLO 760110 7 0 331.50 +MLO 760117 7 0 331.70 +MLO 760124 7 0 331.80 +MLO 760131 5 0 332.20 +MLO 760207 6 0 332.10 +MLO 760214 7 0 332.50 +MLO 760221 6 0 333.20 +MLO 760228 5 0 332.40 +MLO 760306 7 0 332.80 +MLO 760313 7 0 333.60 +MLO 760320 3 0 333.10 +MLO 760327 7 0 334.30 +MLO 760403 7 0 334.70 +MLO 760410 6 0 334.20 +MLO 760417 6 0 334.40 +MLO 760424 6 0 334.50 +MLO 760501 6 0 334.70 +MLO 760508 5 0 334.30 +MLO 760515 7 0 334.60 +MLO 760522 6 0 335.40 +MLO 760529 7 0 334.80 +MLO 760605 7 0 334.30 +MLO 760612 7 0 334.60 +MLO 760619 6 0 334.30 +MLO 760703 6 0 333.60 +MLO 760710 6 0 333.40 +MLO 760717 4 0 332.80 +MLO 760724 7 0 332.40 +MLO 760731 6 0 332.10 +MLO 760807 6 0 331.70 +MLO 760814 6 0 330.60 +MLO 760821 5 0 330.60 +MLO 760828 1 0 330.00 +MLO 760904 5 0 329.70 +MLO 760911 4 0 330.00 +MLO 760918 7 0 329.30 +MLO 760925 5 0 328.40 +MLO 761002 4 0 328.80 +MLO 761009 4 0 329.00 +MLO 761016 3 0 329.60 +MLO 761023 6 0 329.10 +MLO 761030 7 0 329.00 +MLO 761106 5 0 329.80 +MLO 761113 5 0 330.40 +MLO 761120 7 0 330.50 +MLO 761127 7 0 330.70 +MLO 761204 7 0 331.10 +MLO 761211 6 0 331.30 +MLO 761218 6 0 331.90 +MLO 761225 7 0 332.20 +MLO 770101 7 0 332.50 +MLO 770108 7 0 332.40 +MLO 770115 5 0 333.10 +MLO 770122 7 0 333.20 +MLO 770129 5 0 333.20 +MLO 770205 5 0 333.40 +MLO 770212 6 0 333.30 +MLO 770219 7 0 333.40 +MLO 770226 7 0 333.60 +MLO 770305 6 0 334.10 +MLO 770312 7 0 334.60 +MLO 770319 7 0 335.10 +MLO 770326 7 0 335.00 +MLO 770402 7 0 335.50 +MLO 770409 7 0 335.90 +MLO 770416 7 0 336.00 +MLO 770423 7 0 336.10 +MLO 770430 7 0 336.70 +MLO 770507 7 0 336.80 +MLO 770514 7 0 336.40 +MLO 770521 7 0 336.80 +MLO 770528 7 0 336.70 +MLO 770604 7 0 336.40 +MLO 770611 6 0 336.30 +MLO 770618 7 0 336.10 +MLO 770625 7 0 336.00 +MLO 770702 6 0 335.50 +MLO 770709 6 0 335.10 +MLO 770716 4 0 335.10 +MLO 770723 5 0 334.60 +MLO 770730 3 0 333.70 +MLO 770806 7 0 333.00 +MLO 770813 2 0 332.90 +MLO 770820 1 0 332.80 +MLO 770827 2 0 332.80 +MLO 770903 3 0 332.10 +MLO 770910 1 0 331.20 +MLO 770917 2 0 332.10 +MLO 770924 2 0 330.90 +MLO 771001 3 0 330.40 +MLO 771008 5 0 330.90 +MLO 771015 4 0 331.50 +MLO 771022 1 0 331.50 +MLO 771029 2 0 331.70 +MLO 771105 4 0 332.10 +MLO 771112 2 0 332.00 +MLO 771119 2 0 332.50 +MLO 771126 5 0 332.80 +MLO 771203 6 0 333.20 +MLO 771210 6 0 333.50 +MLO 771217 7 0 333.80 +MLO 771224 6 0 334.20 +MLO 771231 7 0 334.60 +MLO 780107 7 0 334.20 +MLO 780114 7 0 334.60 +MLO 780121 7 0 335.40 +MLO 780128 5 0 335.90 +MLO 780204 7 0 335.00 +MLO 780211 6 0 335.10 +MLO 780218 7 0 335.60 +MLO 780225 7 0 335.70 +MLO 780304 7 0 336.20 +MLO 780311 7 0 336.10 +MLO 780318 5 0 336.80 +MLO 780325 7 0 337.30 +MLO 780401 4 0 337.00 +MLO 780408 6 0 337.90 +MLO 780415 6 0 337.90 +MLO 780422 5 0 337.40 +MLO 780429 7 0 338.00 +MLO 780506 6 0 338.00 +MLO 780513 7 0 338.10 +MLO 780520 7 0 337.80 +MLO 780527 7 0 337.90 +MLO 780603 1 0 338.40 +MLO 780610 2 0 338.20 +MLO 780617 4 0 337.80 +MLO 780624 5 0 337.30 +MLO 780701 2 0 337.60 +MLO 780708 6 0 336.70 +MLO 780715 7 0 336.70 +MLO 780722 7 0 335.90 +MLO 780729 6 0 335.60 +MLO 780805 7 0 335.10 +MLO 780812 7 0 334.80 +MLO 780819 2 0 334.40 +MLO 780826 4 0 334.30 +MLO 780902 4 0 333.80 +MLO 780909 4 0 332.80 +MLO 780916 5 0 332.10 +MLO 780923 3 0 332.30 +MLO 780930 6 0 332.70 +MLO 781007 5 0 332.10 +MLO 781014 4 0 332.40 +MLO 781021 4 0 333.00 +MLO 781028 3 0 333.10 +MLO 781104 6 0 333.50 +MLO 781111 5 0 333.80 +MLO 781118 4 0 333.80 +MLO 781125 5 0 334.20 +MLO 781202 2 0 334.50 +MLO 781209 6 0 334.80 +MLO 781216 6 0 335.10 +MLO 781223 6 0 335.10 +MLO 781230 7 0 335.30 +MLO 790106 7 0 335.30 +MLO 790113 6 0 335.90 +MLO 790120 7 0 336.80 +MLO 790127 5 0 336.90 +MLO 790203 6 0 336.90 +MLO 790210 5 0 336.50 +MLO 790217 7 0 336.70 +MLO 790224 7 0 336.70 +MLO 790303 6 0 337.10 +MLO 790310 5 0 337.70 +MLO 790317 4 0 337.40 +MLO 790324 5 0 339.00 +MLO 790331 7 0 338.80 +MLO 790407 4 0 338.10 +MLO 790414 7 0 338.60 +MLO 790421 7 0 339.20 +MLO 790428 6 0 339.60 +MLO 790505 7 0 339.30 +MLO 790512 5 0 338.80 +MLO 790519 5 0 339.80 +MLO 790526 7 0 339.60 +MLO 790602 4 0 339.90 +MLO 790609 6 0 339.50 +MLO 790616 5 0 338.90 +MLO 790623 5 0 338.90 +MLO 790630 2 0 339.00 +MLO 790707 4 0 338.20 +MLO 790714 6 0 337.80 +MLO 790721 6 0 337.30 +MLO 790728 5 0 336.80 +MLO 790804 5 0 337.00 +MLO 790811 7 0 336.50 +MLO 790818 6 0 336.10 +MLO 790825 5 0 334.50 +MLO 790901 7 0 334.40 +MLO 790908 3 0 334.00 +MLO 790915 4 0 334.20 +MLO 790922 5 0 333.20 +MLO 790929 5 0 334.10 +MLO 791006 4 0 334.10 +MLO 791013 6 0 333.90 +MLO 791020 7 0 333.70 +MLO 791027 5 0 334.10 +MLO 791103 6 0 334.70 +MLO 791110 6 0 334.80 +MLO 791117 6 0 335.50 +MLO 791124 5 0 335.60 +MLO 791201 6 0 335.90 +MLO 791208 4 0 336.50 +MLO 791215 6 0 336.70 +MLO 791222 6 0 336.80 +MLO 791229 7 0 337.40 +MLO 800105 7 0 337.60 +MLO 800112 6 0 337.40 +MLO 800119 7 0 338.30 +MLO 800126 7 0 338.40 +MLO 800202 6 0 338.00 +MLO 800209 5 0 338.10 +MLO 800216 7 0 338.60 +MLO 800223 6 0 338.20 +MLO 800301 6 0 339.30 +MLO 800308 6 0 339.50 +MLO 800315 6 0 340.00 +MLO 800322 6 0 340.50 +MLO 800329 7 0 341.00 +MLO 800405 4 0 340.40 +MLO 800412 4 0 340.90 +MLO 800419 6 0 340.70 +MLO 800426 6 0 341.00 +MLO 800503 5 0 341.50 +MLO 800510 6 0 341.30 +MLO 800517 5 0 341.30 +MLO 800524 5 0 340.90 +MLO 800531 7 0 341.70 +MLO 800607 3 0 341.30 +MLO 800614 7 0 341.30 +MLO 800621 6 0 340.80 +MLO 800628 3 0 340.40 +MLO 800705 6 0 340.40 +MLO 800712 5 0 339.70 +MLO 800719 3 0 338.50 +MLO 800726 6 0 338.90 +MLO 800802 6 0 337.90 +MLO 800809 5 0 337.70 +MLO 800816 4 0 337.70 +MLO 800823 3 0 337.70 +MLO 800830 3 0 337.00 +MLO 800906 4 0 336.60 +MLO 800913 4 0 335.70 +MLO 800920 5 0 335.20 +MLO 800927 4 0 336.00 +MLO 801004 4 0 335.80 +MLO 801011 7 0 335.80 +MLO 801018 7 0 336.10 +MLO 801025 5 0 336.40 +MLO 801101 7 0 336.60 +MLO 801108 7 0 336.90 +MLO 801115 6 0 337.10 +MLO 801122 7 0 337.30 +MLO 801129 7 0 337.40 +MLO 801206 4 0 337.70 +MLO 801213 7 0 338.10 +MLO 801220 7 0 338.30 +MLO 801227 7 0 338.70 +MLO 810103 7 0 338.90 +MLO 810110 7 0 339.10 +MLO 810117 7 0 339.30 +MLO 810124 7 0 339.30 +MLO 810131 6 0 339.50 +MLO 810207 7 0 340.50 +MLO 810214 4 0 340.00 +MLO 810221 5 0 340.20 +MLO 810228 6 0 341.10 +MLO 810307 4 0 340.70 +MLO 810314 6 0 341.00 +MLO 810321 5 0 341.80 +MLO 810328 6 0 342.10 +MLO 810404 5 0 342.40 +MLO 810411 6 0 342.40 +MLO 810418 7 0 342.70 +MLO 810425 7 0 342.30 +MLO 810502 7 0 342.90 +MLO 810509 7 0 343.00 +MLO 810516 7 0 342.80 +MLO 810523 7 0 342.70 +MLO 810530 7 0 342.70 +MLO 810606 7 0 342.60 +MLO 810613 7 0 342.50 +MLO 810620 7 0 341.80 +MLO 810627 5 0 341.60 +MLO 810704 5 0 341.00 +MLO 810711 7 0 340.80 +MLO 810718 4 0 339.70 +MLO 810725 4 0 340.20 +MLO 810801 5 0 339.50 +MLO 810808 5 0 338.90 +MLO 810815 6 0 338.40 +MLO 810822 5 0 337.50 +MLO 810829 4 0 337.70 +MLO 810905 7 0 337.20 +MLO 810912 3 0 337.00 +MLO 810919 7 0 336.70 +MLO 810926 5 0 335.90 +MLO 811003 6 0 336.30 +MLO 811010 4 0 336.60 +MLO 811017 7 0 337.10 +MLO 811024 5 0 337.20 +MLO 811031 6 0 337.50 +MLO 811107 6 0 337.80 +MLO 811114 6 0 338.10 +MLO 811121 4 0 338.50 +MLO 811128 6 0 339.30 +MLO 811205 5 0 339.20 +MLO 811212 7 0 339.40 +MLO 811219 6 0 339.60 +MLO 811226 4 0 340.20 +MLO 820102 5 0 340.20 +MLO 820109 7 0 340.30 +MLO 820116 5 0 340.70 +MLO 820123 6 0 341.10 +MLO 820130 7 0 341.20 +MLO 820206 7 0 341.90 +MLO 820213 6 0 341.10 +MLO 820220 4 0 341.10 +MLO 820227 5 0 342.10 +MLO 820306 6 0 342.60 +MLO 820313 4 0 342.60 +MLO 820320 1 0 342.70 +MLO 820327 4 0 342.80 +MLO 820403 6 0 342.90 +MLO 820410 6 0 343.30 +MLO 820417 6 0 343.50 +MLO 820424 5 0 344.20 +MLO 820501 4 0 343.80 +MLO 820508 1 0 343.60 +MLO 820515 3 0 344.20 +MLO 820522 6 0 344.10 +MLO 820529 6 0 344.10 +MLO 820605 6 0 343.40 +MLO 820612 7 0 343.50 +MLO 820619 3 0 343.40 +MLO 820626 4 0 342.90 +MLO 820703 7 0 342.50 +MLO 820710 6 0 342.00 +MLO 820717 5 0 342.00 +MLO 820724 4 0 341.80 +MLO 820731 6 0 341.30 +MLO 820807 6 0 340.50 +MLO 820814 6 0 340.00 +MLO 820821 3 0 339.70 +MLO 820828 5 0 338.30 +MLO 820904 5 0 338.80 +MLO 820911 6 0 338.60 +MLO 820918 2 0 337.80 +MLO 820925 6 0 336.90 +MLO 821002 4 0 337.30 +MLO 821009 5 0 338.00 +MLO 821016 4 0 337.60 +MLO 821023 4 0 337.90 +MLO 821030 5 0 338.70 +MLO 821106 5 0 338.40 +MLO 821113 6 0 339.20 +MLO 821120 6 0 339.70 +MLO 821127 4 0 339.80 +MLO 821204 6 0 339.80 +MLO 821211 5 0 340.40 +MLO 821218 7 0 340.70 +MLO 821225 5 0 340.80 +MLO 830101 5 0 340.90 +MLO 830108 5 0 341.40 +MLO 830115 6 0 341.50 +MLO 830122 7 0 341.20 +MLO 830129 7 0 341.70 +MLO 830205 6 0 342.00 +MLO 830212 7 0 342.70 +MLO 830219 6 0 342.50 +MLO 830226 6 0 342.80 +MLO 830305 7 0 342.30 +MLO 830312 7 0 342.50 +MLO 830319 5 0 344.00 +MLO 830326 5 0 343.80 +MLO 830402 7 0 344.00 +MLO 830409 6 0 344.80 +MLO 830416 7 0 345.00 +MLO 830423 7 0 345.30 +MLO 830430 7 0 345.40 +MLO 830507 5 0 345.40 +MLO 830514 6 0 345.70 +MLO 830521 6 0 345.80 +MLO 830528 7 0 345.70 +MLO 830604 5 0 345.60 +MLO 830611 5 0 345.60 +MLO 830618 7 0 345.00 +MLO 830625 6 0 344.90 +MLO 830702 6 0 344.70 +MLO 830709 4 0 344.50 +MLO 830716 3 0 343.70 +MLO 830723 6 0 343.60 +MLO 830730 4 0 342.60 +MLO 830806 5 0 343.00 +MLO 830813 2 0 341.70 +MLO 830820 3 0 342.10 +MLO 830827 6 0 341.80 +MLO 830903 3 0 339.90 +MLO 830910 5 0 339.90 +MLO 830917 5 0 339.80 +MLO 830924 4 0 339.90 +MLO 831001 6 0 339.80 +MLO 831008 7 0 339.70 +MLO 831015 6 0 340.10 +MLO 831022 6 0 340.20 +MLO 831029 7 0 340.30 +MLO 831105 7 0 340.80 +MLO 831112 7 0 341.00 +MLO 831119 6 0 341.10 +MLO 831126 7 0 341.70 +MLO 831203 6 0 341.80 +MLO 831210 2 0 342.80 +MLO 831217 7 0 343.30 +MLO 831224 7 0 343.60 +MLO 831231 7 0 343.40 +MLO 840107 7 0 343.70 +MLO 840114 5 0 343.40 +MLO 840121 5 0 343.50 +MLO 840128 5 0 344.10 +MLO 840204 5 0 344.30 +MLO 840211 7 0 344.50 +MLO 840218 5 0 344.30 +MLO 840225 6 0 344.60 +MLO 840303 7 0 344.80 +MLO 840310 6 0 344.90 +MLO 840317 6 0 345.40 +MLO 840324 5 0 345.60 +MLO 840428 2 0 347.40 +MLO 840505 6 0 347.40 +MLO 840512 3 0 347.70 +MLO 840519 5 0 347.30 +MLO 840526 5 0 347.00 +MLO 840602 5 0 347.00 +MLO 840609 6 0 347.00 +MLO 840616 3 0 346.80 +MLO 840623 5 0 346.30 +MLO 840630 6 0 346.20 +MLO 840707 4 0 345.80 +MLO 840714 5 0 345.40 +MLO 840721 3 0 345.20 +MLO 840728 6 0 344.40 +MLO 840804 2 0 344.00 +MLO 840811 2 0 344.10 +MLO 840818 5 0 343.10 +MLO 840825 3 0 342.00 +MLO 840901 3 0 341.60 +MLO 840908 6 0 340.60 +MLO 840915 6 0 341.30 +MLO 840922 6 0 341.30 +MLO 840929 3 0 340.80 +MLO 841006 5 0 341.10 +MLO 841013 4 0 341.30 +MLO 841020 1 0 341.90 +MLO 841027 5 0 341.60 +MLO 841103 5 0 342.00 +MLO 841110 6 0 342.60 +MLO 841117 6 0 343.10 +MLO 841124 6 0 343.70 +MLO 841201 4 0 343.60 +MLO 841208 6 0 343.90 +MLO 841215 4 0 344.20 +MLO 841222 5 0 344.50 +MLO 841229 3 0 344.50 +MLO 850105 7 0 344.70 +MLO 850112 6 0 345.00 +MLO 850119 7 0 345.00 +MLO 850126 5 0 345.00 +MLO 850202 5 0 345.90 +MLO 850209 4 0 345.50 +MLO 850216 5 0 345.80 +MLO 850223 5 0 346.30 +MLO 850302 6 0 346.70 +MLO 850309 6 0 347.10 +MLO 850316 7 0 347.50 +MLO 850323 4 0 347.70 +MLO 850330 5 0 348.20 +MLO 850406 7 0 348.00 +MLO 850413 4 0 348.00 +MLO 850420 5 0 348.50 +MLO 850427 4 0 348.80 +MLO 850504 5 0 348.80 +MLO 850511 5 0 349.30 +MLO 850518 7 0 349.10 +MLO 850525 6 0 348.10 +MLO 850601 4 0 349.00 +MLO 850608 7 0 348.40 +MLO 850615 3 0 348.20 +MLO 850622 5 0 347.90 +MLO 850629 6 0 347.40 +MLO 850706 6 0 346.90 +MLO 850713 5 0 346.80 +MLO 850720 3 0 346.40 +MLO 850727 6 0 345.70 +MLO 850810 6 0 344.70 +MLO 850817 3 0 344.50 +MLO 850824 5 0 344.30 +MLO 850831 5 0 343.70 +MLO 850907 5 0 344.20 +MLO 850914 6 0 343.30 +MLO 850921 5 0 342.40 +MLO 850928 5 0 342.10 +MLO 851005 4 0 342.40 +MLO 851012 4 0 342.50 +MLO 851019 7 0 343.10 +MLO 851026 6 0 343.20 +MLO 851102 5 0 343.30 +MLO 851109 5 0 343.70 +MLO 851116 7 0 344.20 +MLO 851123 6 0 344.60 +MLO 851130 6 0 345.30 +MLO 851207 5 0 345.30 +MLO 851214 6 0 345.60 +MLO 851221 6 0 345.10 +MLO 851228 7 0 346.30 +MLO 860104 4 0 346.40 +MLO 860111 7 0 346.00 +MLO 860118 4 0 346.20 +MLO 860125 7 0 346.40 +MLO 860201 6 0 346.20 +MLO 860208 6 0 346.80 +MLO 860215 7 0 347.10 +MLO 860222 7 0 347.20 +MLO 860301 7 0 347.00 +MLO 860308 3 0 346.60 +MLO 860315 6 0 347.20 +MLO 860322 6 0 349.10 +MLO 860329 6 0 348.80 +MLO 860405 7 0 349.20 +MLO 860412 4 0 349.40 +MLO 860419 6 0 349.30 +MLO 860426 6 0 350.20 +MLO 860503 4 0 349.90 +MLO 860510 5 0 350.10 +MLO 860517 5 0 350.20 +MLO 860524 6 0 350.10 +MLO 860531 6 0 350.10 +MLO 860607 4 0 349.70 +MLO 860614 6 0 349.50 +MLO 860621 7 0 349.40 +MLO 860628 7 0 348.90 +MLO 860705 7 0 348.60 +MLO 860712 5 0 347.70 +MLO 860719 6 0 347.60 +MLO 860726 6 0 347.40 +MLO 860802 3 0 346.60 +MLO 860809 5 0 346.20 +MLO 860816 7 0 345.50 +MLO 860823 5 0 345.60 +MLO 860830 4 0 345.20 +MLO 860906 4 0 345.00 +MLO 860913 7 0 345.30 +MLO 860920 5 0 344.40 +MLO 860927 6 0 344.50 +MLO 861004 7 0 343.90 +MLO 861011 7 0 344.10 +MLO 861018 3 0 343.90 +MLO 861025 7 0 344.50 +MLO 861101 6 0 345.10 +MLO 861108 5 0 345.30 +MLO 861115 7 0 345.60 +MLO 861122 6 0 345.70 +MLO 861129 7 0 346.40 +MLO 861206 7 0 346.90 +MLO 861213 7 0 346.70 +MLO 861220 7 0 346.90 +MLO 861227 6 0 347.00 +MLO 870103 6 0 347.60 +MLO 870110 6 0 348.30 +MLO 870117 7 0 348.20 +MLO 870124 5 0 347.90 +MLO 870131 6 0 348.00 +MLO 870207 7 0 347.90 +MLO 870214 6 0 348.20 +MLO 870221 7 0 348.50 +MLO 870228 7 0 349.40 +MLO 870307 7 0 348.80 +MLO 870314 7 0 349.20 +MLO 870321 7 0 349.70 +MLO 870328 7 0 350.20 +MLO 870404 6 0 350.80 +MLO 870411 5 0 350.20 +MLO 870418 7 0 351.10 +MLO 870425 7 0 351.30 +MLO 870502 6 0 351.40 +MLO 870509 7 0 352.00 +MLO 870516 7 0 351.70 +MLO 870523 7 0 351.90 +MLO 870530 7 0 351.70 +MLO 870606 6 0 351.60 +MLO 870613 7 0 351.10 +MLO 870620 6 0 351.00 +MLO 870627 5 0 350.90 +MLO 870704 7 0 349.70 +MLO 870711 7 0 349.80 +MLO 870718 3 0 348.80 +MLO 870725 5 0 349.50 +MLO 870801 4 0 349.00 +MLO 870808 2 0 348.10 +MLO 870815 3 0 348.60 +MLO 870822 5 0 348.00 +MLO 870829 5 0 346.70 +MLO 870905 4 0 347.00 +MLO 870912 6 0 346.60 +MLO 870919 6 0 346.20 +MLO 870926 3 0 345.80 +MLO 871003 4 0 345.70 +MLO 871010 5 0 346.30 +MLO 871017 5 0 346.50 +MLO 871024 7 0 346.80 +MLO 871031 6 0 346.90 +MLO 871107 4 0 347.30 +MLO 871114 7 0 347.60 +MLO 871121 3 0 348.10 +MLO 871128 3 0 348.70 +MLO 871205 5 0 348.60 +MLO 871212 5 0 348.80 +MLO 871219 5 0 349.10 +MLO 871226 5 0 349.20 +MLO 880102 6 0 349.70 +MLO 880109 7 0 350.20 +MLO 880116 5 0 350.20 +MLO 880123 5 0 350.70 +MLO 880130 5 0 351.20 +MLO 880206 4 0 351.80 +MLO 880213 7 0 351.30 +MLO 880220 6 0 351.50 +MLO 880227 7 0 352.50 +MLO 880305 6 0 352.80 +MLO 880312 7 0 351.80 +MLO 880319 4 0 351.70 +MLO 880326 5 0 352.20 +MLO 880402 6 0 353.10 +MLO 880409 7 0 353.50 +MLO 880416 7 0 353.10 +MLO 880423 5 0 354.00 +MLO 880430 4 0 354.20 +MLO 880507 7 0 353.70 +MLO 880514 5 0 354.30 +MLO 880521 6 0 354.50 +MLO 880528 6 0 354.20 +MLO 880604 5 0 354.10 +MLO 880611 6 0 354.20 +MLO 880618 6 0 353.60 +MLO 880625 7 0 353.10 +MLO 880702 4 0 353.00 +MLO 880709 4 0 352.50 +MLO 880716 4 0 352.60 +MLO 880723 5 0 351.90 +MLO 880730 3 0 351.10 +MLO 880806 5 0 350.90 +MLO 880813 3 0 350.30 +MLO 880820 4 0 350.40 +MLO 880827 6 0 349.60 +MLO 880903 5 0 349.30 +MLO 880910 5 0 348.70 +MLO 880917 5 0 348.90 +MLO 880924 4 0 348.10 +MLO 881001 4 0 348.80 +MLO 881008 3 0 348.80 +MLO 881015 7 0 348.60 +MLO 881022 3 0 349.40 +MLO 881029 5 0 349.20 +MLO 881105 7 0 349.70 +MLO 881112 7 0 349.80 +MLO 881119 5 0 350.10 +MLO 881126 7 0 350.40 +MLO 881203 5 0 350.50 +MLO 881210 5 0 351.00 +MLO 881217 4 0 351.60 +MLO 881224 6 0 351.30 +MLO 881231 7 0 352.40 +MLO 890107 7 0 352.70 +MLO 890114 6 0 352.90 +MLO 890121 7 0 352.50 +MLO 890128 7 0 353.00 +MLO 890204 5 0 352.80 +MLO 890211 5 0 352.60 +MLO 890218 6 0 353.20 +MLO 890225 7 0 353.40 +MLO 890304 7 0 353.10 +MLO 890311 6 0 353.40 +MLO 890318 6 0 353.50 +MLO 890325 7 0 354.40 +MLO 890401 7 0 354.50 +MLO 890408 7 0 355.00 +MLO 890415 4 0 355.40 +MLO 890422 7 0 356.00 +MLO 890429 6 0 355.90 +MLO 890506 6 0 355.30 +MLO 890513 5 0 355.80 +MLO 890520 6 0 355.60 +MLO 890527 4 0 355.70 +MLO 890603 6 0 355.80 +MLO 890610 6 0 355.00 +MLO 890617 7 0 354.80 +MLO 890624 5 0 354.90 +MLO 890701 6 0 354.50 +MLO 890708 4 0 354.70 +MLO 890715 7 0 353.80 +MLO 890722 6 0 353.10 +MLO 890729 6 0 353.20 +MLO 890805 6 0 352.60 +MLO 890812 6 0 352.20 +MLO 890819 5 0 351.10 +MLO 890826 5 0 350.40 +MLO 890902 7 0 350.70 +MLO 890909 5 0 350.20 +MLO 890916 6 0 349.40 +MLO 890923 7 0 349.30 +MLO 890930 1 0 349.70 +MLO 891007 6 0 349.90 +MLO 891014 6 0 349.70 +MLO 891021 6 0 350.20 +MLO 891028 7 0 350.40 +MLO 891104 7 0 350.60 +MLO 891111 6 0 351.20 +MLO 891118 7 0 351.60 +MLO 891125 5 0 351.40 +MLO 891202 6 0 352.00 +MLO 891209 4 0 352.10 +MLO 891216 6 0 352.40 +MLO 891223 5 0 352.50 +MLO 891230 4 0 353.40 +MLO 900106 7 0 353.40 +MLO 900113 7 0 353.50 +MLO 900120 7 0 353.80 +MLO 900127 7 0 353.90 +MLO 900203 7 0 354.10 +MLO 900210 5 0 355.00 +MLO 900217 7 0 354.80 +MLO 900224 7 0 354.70 +MLO 900303 3 0 355.70 +MLO 900310 5 0 354.90 +MLO 900317 7 0 355.80 +MLO 900324 6 0 355.10 +MLO 900331 6 0 355.90 +MLO 900407 7 0 356.10 +MLO 900414 7 0 355.90 +MLO 900421 6 0 356.60 +MLO 900428 4 0 356.10 +MLO 900505 5 0 357.30 +MLO 900512 5 0 357.00 +MLO 900519 7 0 356.90 +MLO 900526 6 0 357.10 +MLO 900602 6 0 357.00 +MLO 900609 7 0 356.60 +MLO 900616 5 0 355.60 +MLO 900623 7 0 355.50 +MLO 900630 7 0 355.70 +MLO 900707 7 0 355.50 +MLO 900714 7 0 354.00 +MLO 900721 6 0 354.50 +MLO 900728 5 0 354.70 +MLO 900804 5 0 353.50 +MLO 900811 5 0 353.20 +MLO 900818 7 0 352.90 +MLO 900825 5 0 352.00 +MLO 900901 4 0 350.90 +MLO 900908 3 0 350.70 +MLO 900915 6 0 351.30 +MLO 900922 6 0 350.90 +MLO 900929 3 0 350.90 +MLO 901006 2 0 351.10 +MLO 901013 7 0 351.00 +MLO 901020 4 0 351.40 +MLO 901027 3 0 351.40 +MLO 901103 5 0 352.10 +MLO 901110 7 0 352.60 +MLO 901117 6 0 353.00 +MLO 901124 5 0 353.10 +MLO 901201 7 0 353.60 +MLO 901208 6 0 354.00 +MLO 901215 6 0 353.80 +MLO 901222 7 0 354.50 +MLO 901229 6 0 354.80 +MLO 910105 7 0 354.20 +MLO 910112 7 0 354.70 +MLO 910119 6 0 354.80 +MLO 910126 7 0 355.00 +MLO 910202 7 0 355.20 +MLO 910209 6 0 355.20 +MLO 910216 7 0 356.40 +MLO 910223 6 0 355.80 +MLO 910302 7 0 356.40 +MLO 910309 7 0 357.20 +MLO 910316 6 0 357.60 +MLO 910323 7 0 356.90 +MLO 910330 5 0 357.90 +MLO 910406 7 0 358.30 +MLO 910413 7 0 357.80 +MLO 910420 6 0 359.10 +MLO 910427 7 0 359.20 +MLO 910504 7 0 359.10 +MLO 910511 7 0 358.90 +MLO 910518 7 0 360.00 +MLO 910525 7 0 359.00 +MLO 910601 7 0 358.50 +MLO 910608 6 0 358.40 +MLO 910615 6 0 358.20 +MLO 910622 5 0 358.10 +MLO 910629 5 0 357.70 +MLO 910706 6 0 357.20 +MLO 910713 5 0 356.50 +MLO 910720 7 0 355.20 +MLO 910727 5 0 355.30 +MLO 910803 4 0 354.80 +MLO 910810 5 0 354.60 +MLO 910817 5 0 353.70 +MLO 910824 7 0 353.00 +MLO 910831 6 0 353.20 +MLO 910907 4 0 353.00 +MLO 910914 7 0 352.10 +MLO 910921 6 0 351.80 +MLO 910928 5 0 351.60 +MLO 911005 7 0 351.70 +MLO 911012 6 0 352.10 +MLO 911019 6 0 352.50 +MLO 911026 7 0 352.70 +MLO 911102 6 0 353.40 +MLO 911109 7 0 353.70 +MLO 911116 7 0 353.50 +MLO 911123 7 0 353.80 +MLO 911130 7 0 354.30 +MLO 911207 4 0 354.50 +MLO 911214 7 0 354.90 +MLO 911221 6 0 355.20 +MLO 911228 6 0 355.50 +MLO 920104 6 0 355.60 +MLO 920111 7 0 356.00 +MLO 920118 4 0 356.10 +MLO 920125 7 0 355.90 +MLO 920201 5 0 356.00 +MLO 920208 7 0 356.70 +MLO 920215 6 0 357.30 +MLO 920222 4 0 356.90 +MLO 920229 7 0 356.50 +MLO 920307 7 0 357.30 +MLO 920314 5 0 357.80 +MLO 920321 6 0 358.10 +MLO 920328 6 0 358.40 +MLO 920404 7 0 358.50 +MLO 920411 5 0 358.90 +MLO 920418 5 0 359.70 +MLO 920425 6 0 359.20 +MLO 920502 7 0 359.60 +MLO 920509 7 0 359.70 +MLO 920516 7 0 358.60 +MLO 920523 7 0 359.60 +MLO 920530 7 0 360.20 +MLO 920606 7 0 360.00 +MLO 920613 4 0 359.40 +MLO 920620 7 0 358.70 +MLO 920627 7 0 358.40 +MLO 920704 5 0 358.40 +MLO 920711 5 0 357.20 +MLO 920718 5 0 356.30 +MLO 920725 5 0 356.10 +MLO 920801 2 0 354.90 +MLO 920808 6 0 355.30 +MLO 920815 6 0 355.30 +MLO 920822 4 0 354.50 +MLO 920829 3 0 354.30 +MLO 920905 5 0 353.50 +MLO 920912 6 0 353.60 +MLO 920919 7 0 352.30 +MLO 920926 7 0 352.70 +MLO 921003 6 0 353.60 +MLO 921010 5 0 353.30 +MLO 921017 7 0 353.20 +MLO 921024 7 0 353.50 +MLO 921031 7 0 353.50 +MLO 921107 7 0 353.90 +MLO 921114 6 0 353.80 +MLO 921121 7 0 354.50 +MLO 921128 7 0 354.60 +MLO 921205 7 0 354.80 +MLO 921212 7 0 355.30 +MLO 921219 7 0 355.40 +MLO 921226 6 0 355.90 +MLO 930102 6 0 356.20 +MLO 930109 5 0 356.90 +MLO 930116 6 0 356.70 +MLO 930123 6 0 356.60 +MLO 930130 7 0 357.00 +MLO 930206 7 0 356.60 +MLO 930213 7 0 357.20 +MLO 930220 7 0 357.30 +MLO 930227 5 0 357.60 +MLO 930306 6 0 358.30 +MLO 930313 5 0 358.50 +MLO 930320 7 0 358.10 +MLO 930327 4 0 358.80 +MLO 930403 7 0 359.10 +MLO 930410 6 0 358.80 +MLO 930417 7 0 359.40 +MLO 930424 7 0 360.00 +MLO 930501 6 0 359.60 +MLO 930508 7 0 359.70 +MLO 930515 6 0 360.70 +MLO 930522 6 0 360.60 +MLO 930529 7 0 360.30 +MLO 930605 7 0 359.70 +MLO 930612 7 0 359.90 +MLO 930619 7 0 359.30 +MLO 930626 6 0 359.10 +MLO 930703 6 0 357.90 +MLO 930710 7 0 358.00 +MLO 930717 4 0 358.10 +MLO 930724 5 0 356.60 +MLO 930731 5 0 356.50 +MLO 930807 6 0 355.80 +MLO 930814 5 0 355.90 +MLO 930821 4 0 354.90 +MLO 930828 4 0 354.70 +MLO 930904 1 0 354.30 +MLO 930911 6 0 353.20 +MLO 930918 6 0 353.80 +MLO 930925 6 0 353.80 +MLO 931002 5 0 353.80 +MLO 931009 6 0 353.80 +MLO 931016 6 0 354.00 +MLO 931023 6 0 354.40 +MLO 931030 7 0 354.30 +MLO 931106 6 0 354.70 +MLO 931113 7 0 355.10 +MLO 931120 7 0 355.60 +MLO 931127 7 0 356.00 +MLO 931204 6 0 356.20 +MLO 931211 7 0 356.50 +MLO 931218 7 0 356.90 +MLO 931225 2 0 357.50 +MLO 940101 6 0 358.10 +MLO 940108 6 0 358.10 +MLO 940115 7 0 358.40 +MLO 940122 7 0 358.30 +MLO 940129 7 0 358.70 +MLO 940205 5 0 358.40 +MLO 940212 6 0 358.60 +MLO 940219 7 0 359.00 +MLO 940226 5 0 359.60 +MLO 940305 6 0 358.70 +MLO 940312 7 0 359.80 +MLO 940319 7 0 360.40 +MLO 940326 6 0 360.80 +MLO 940402 7 0 360.60 +MLO 940409 7 0 361.00 +MLO 940416 7 0 361.00 +MLO 940423 5 0 361.30 +MLO 940430 6 0 362.20 +MLO 940507 5 0 361.60 +MLO 940514 6 0 361.40 +MLO 940521 2 0 361.70 +MLO 940528 4 0 361.90 +MLO 940604 6 0 361.00 +MLO 940611 6 0 361.00 +MLO 940618 6 0 360.90 +MLO 940625 6 0 360.70 +MLO 940702 6 0 360.20 +MLO 940709 7 0 359.90 +MLO 940716 7 0 359.40 +MLO 940723 7 0 359.00 +MLO 940730 5 0 358.80 +MLO 940806 6 0 358.10 +MLO 940813 1 0 357.50 +MLO 940820 4 0 357.60 +MLO 940827 6 0 356.30 +MLO 940903 7 0 356.40 +MLO 940910 6 0 356.40 +MLO 940917 7 0 355.40 +MLO 940924 7 0 355.50 +MLO 941001 7 0 355.40 +MLO 941008 7 0 355.80 +MLO 941015 7 0 356.00 +MLO 941022 7 0 356.30 +MLO 941029 7 0 356.60 +MLO 941105 7 0 356.90 +MLO 941112 5 0 357.40 +MLO 941119 7 0 357.90 +MLO 941126 7 0 358.10 +MLO 941203 7 0 358.40 +MLO 941210 7 0 359.10 +MLO 941217 7 0 359.20 +MLO 941224 7 0 359.10 +MLO 941231 7 0 359.50 +MLO 950107 4 0 359.60 +MLO 950114 7 0 360.20 +MLO 950121 6 0 360.10 +MLO 950128 7 0 360.00 +MLO 950204 6 0 360.60 +MLO 950211 6 0 361.00 +MLO 950218 7 0 360.80 +MLO 950225 7 0 361.30 +MLO 950304 6 0 362.20 +MLO 950311 7 0 361.20 +MLO 950318 5 0 360.90 +MLO 950325 5 0 362.00 +MLO 950401 7 0 363.80 +MLO 950408 7 0 363.40 +MLO 950415 7 0 363.30 +MLO 950422 7 0 362.80 +MLO 950429 6 0 363.50 +MLO 950506 7 0 363.20 +MLO 950513 7 0 364.10 +MLO 950520 7 0 364.10 +MLO 950527 7 0 363.40 +MLO 950603 6 0 363.90 +MLO 950610 7 0 363.40 +MLO 950617 6 0 362.90 +MLO 950624 7 0 362.80 +MLO 950701 6 0 362.50 +MLO 950708 5 0 362.20 +MLO 950715 6 0 361.90 +MLO 950722 6 0 361.50 +MLO 950729 7 0 360.90 +MLO 950805 7 0 360.40 +MLO 950812 5 0 359.20 +MLO 950819 7 0 358.70 +MLO 950826 6 0 359.20 +MLO 950902 4 0 357.30 +MLO 950909 7 0 358.50 +MLO 950916 6 0 358.50 +MLO 950923 6 0 358.20 +MLO 950930 7 0 357.50 +MLO 951007 7 0 357.60 +MLO 951014 7 0 357.60 +MLO 951021 7 0 358.00 +MLO 951028 6 0 358.20 +MLO 951104 6 0 359.10 +MLO 951111 6 0 359.40 +MLO 951118 7 0 359.60 +MLO 951125 7 0 359.80 +MLO 951202 7 0 360.10 +MLO 951209 7 0 360.40 +MLO 951216 7 0 360.50 +MLO 951223 6 0 360.80 +MLO 951230 5 0 361.70 +MLO 960106 7 0 361.80 +MLO 960113 7 0 362.00 +MLO 960120 7 0 362.10 +MLO 960127 4 0 362.20 +MLO 960203 7 0 362.60 +MLO 960210 7 0 363.10 +MLO 960217 7 0 363.00 +MLO 960224 7 0 364.00 +MLO 960302 6 0 363.80 +MLO 960309 7 0 363.60 +MLO 960316 7 0 364.10 +MLO 960323 6 0 364.50 +MLO 960330 7 0 364.30 +MLO 960406 7 0 364.50 +MLO 960413 7 0 364.80 +MLO 960420 7 0 364.40 +MLO 960427 7 0 365.10 +MLO 960504 7 0 364.90 +MLO 960511 6 0 365.30 +MLO 960518 7 0 365.70 +MLO 960525 7 0 365.40 +MLO 960601 7 0 364.80 +MLO 960608 5 0 365.10 +MLO 960615 7 0 365.20 +MLO 960622 7 0 365.00 +MLO 960629 7 0 364.30 +MLO 960706 7 0 364.10 +MLO 960713 7 0 363.70 +MLO 960720 7 0 363.30 +MLO 960727 7 0 362.80 +MLO 960803 7 0 361.70 +MLO 960810 6 0 362.10 +MLO 960817 7 0 361.20 +MLO 960824 7 0 360.80 +MLO 960831 7 0 360.80 +MLO 960907 4 0 359.80 +MLO 960914 6 0 359.80 +MLO 960921 7 0 359.00 +MLO 960928 6 0 359.00 +MLO 961005 7 0 359.40 +MLO 961012 5 0 359.50 +MLO 961019 4 0 359.80 +MLO 961026 6 0 359.80 +MLO 961102 4 0 359.90 +MLO 961109 7 0 360.50 +MLO 961116 5 0 360.70 +MLO 961123 7 0 361.20 +MLO 961130 4 0 361.40 +MLO 961207 6 0 361.90 +MLO 961214 5 0 362.60 +MLO 961221 7 0 362.40 +MLO 961228 7 0 362.60 +MLO 970104 7 0 362.90 +MLO 970111 7 0 363.00 +MLO 970118 5 0 363.10 +MLO 970125 7 0 363.50 +MLO 970201 7 0 363.20 +MLO 970208 6 0 364.10 +MLO 970215 6 0 364.00 +MLO 970222 5 0 364.20 +MLO 970301 4 0 364.50 +MLO 970308 4 0 364.10 +MLO 970315 7 0 364.10 +MLO 970322 6 0 364.70 +MLO 970329 7 0 365.40 +MLO 970405 7 0 365.80 +MLO 970412 6 0 366.20 +MLO 970419 3 0 366.60 +MLO 970426 6 0 366.70 +MLO 970503 7 0 366.70 +MLO 970510 7 0 366.80 +MLO 970517 7 0 367.00 +MLO 970524 6 0 366.60 +MLO 970531 6 0 366.30 +MLO 970607 7 0 365.70 +MLO 970614 5 0 365.60 +MLO 970621 7 0 365.50 +MLO 970628 6 0 365.10 +MLO 970705 7 0 365.00 +MLO 970712 7 0 364.60 +MLO 970719 6 0 364.10 +MLO 970726 7 0 363.80 +MLO 970802 5 0 363.30 +MLO 970809 4 0 363.30 +MLO 970816 4 0 362.60 +MLO 970823 7 0 361.50 +MLO 970830 6 0 361.60 +MLO 970906 7 0 360.60 +MLO 970913 7 0 360.20 +MLO 970920 7 0 360.00 +MLO 970927 7 0 359.80 +MLO 971004 7 0 360.50 +MLO 971011 7 0 360.40 +MLO 971018 7 0 361.00 +MLO 971025 6 0 361.10 +MLO 971101 7 0 361.70 +MLO 971108 7 0 362.10 +MLO 971115 7 0 362.00 +MLO 971122 6 0 362.60 +MLO 971129 7 0 363.50 +MLO 971206 7 0 363.90 +MLO 971213 6 0 363.90 +MLO 971220 7 0 364.20 +MLO 971227 7 0 365.00 +MLO 980103 6 0 365.20 +MLO 980110 7 0 365.30 +MLO 980117 7 0 365.30 +MLO 980124 7 0 365.30 +MLO 980131 7 0 365.60 +MLO 980207 7 0 366.00 +MLO 980214 7 0 365.50 +MLO 980221 3 0 366.00 +MLO 980228 5 0 367.30 +MLO 980307 7 0 367.00 +MLO 980314 7 0 366.60 +MLO 980321 7 0 367.40 +MLO 980328 7 0 368.50 +MLO 980404 7 0 368.60 +MLO 980411 6 0 368.60 +MLO 980418 7 0 368.00 +MLO 980425 7 0 368.90 +MLO 980502 6 0 369.10 +MLO 980509 4 0 368.80 +MLO 980516 6 0 368.50 +MLO 980523 7 0 369.60 +MLO 980530 7 0 369.70 +MLO 980606 6 0 369.40 +MLO 980613 7 0 368.80 +MLO 980620 6 0 368.50 +MLO 980627 6 0 368.30 +MLO 980704 6 0 368.00 +MLO 980711 7 0 367.50 +MLO 980718 5 0 367.60 +MLO 980725 7 0 367.30 +MLO 980801 7 0 366.80 +MLO 980808 6 0 366.40 +MLO 980815 6 0 365.60 +MLO 980822 3 0 365.60 +MLO 980829 4 0 364.20 +MLO 980905 7 0 364.70 +MLO 980912 7 0 363.90 +MLO 980919 7 0 363.50 +MLO 980926 7 0 363.60 +MLO 981003 7 0 364.00 +MLO 981010 7 0 364.10 +MLO 981017 7 0 364.40 +MLO 981024 7 0 364.40 +MLO 981031 6 0 364.70 +MLO 981107 7 0 365.00 +MLO 981114 7 0 365.40 +MLO 981121 7 0 365.80 +MLO 981128 7 0 366.00 +MLO 981205 7 0 366.40 +MLO 981212 6 0 366.70 +MLO 981219 7 0 367.30 +MLO 981226 7 0 367.30 +MLO 990102 7 0 367.50 +MLO 990109 7 0 367.80 +MLO 990116 7 0 367.80 +MLO 990123 7 0 368.30 +MLO 990130 7 0 369.20 +MLO 990206 7 0 369.10 +MLO 990213 7 0 368.80 +MLO 990220 7 0 369.00 +MLO 990227 7 0 368.50 +MLO 990306 7 0 368.10 +MLO 990313 7 0 369.50 +MLO 990320 7 0 370.20 +MLO 990327 7 0 370.60 +MLO 990403 7 0 371.10 +MLO 990410 7 0 371.50 +MLO 990417 7 0 371.00 +MLO 990424 6 0 370.30 +MLO 990501 6 0 370.80 +MLO 990508 7 0 371.30 +MLO 990515 6 0 371.00 +MLO 990522 4 0 370.80 +MLO 990529 6 0 370.30 +MLO 990605 6 0 370.90 +MLO 990612 7 0 370.30 +MLO 990619 7 0 369.90 +MLO 990626 7 0 369.90 +MLO 990703 5 0 369.40 +MLO 990710 7 0 370.10 +MLO 990717 7 0 369.50 +MLO 990724 6 0 368.60 +MLO 990731 6 0 367.40 +MLO 990807 7 0 367.60 +MLO 990814 6 0 366.70 +MLO 990821 7 0 366.40 +MLO 990828 7 0 366.10 +MLO 990904 7 0 364.10 +MLO 990911 7 0 364.70 +MLO 990918 6 0 365.20 +MLO 990925 7 0 364.70 +MLO 991002 7 0 364.50 +MLO 991009 6 0 365.00 +MLO 991016 7 0 364.90 +MLO 991023 7 0 365.60 +MLO 991030 7 0 365.70 +MLO 991106 7 0 366.20 +MLO 991113 7 0 366.70 +MLO 991120 5 0 366.60 +MLO 991127 7 0 367.10 +MLO 991204 7 0 367.40 +MLO 991211 7 0 368.00 +MLO 991218 7 0 368.00 +MLO 991225 7 0 368.20 +MLO 000101 7 0 368.60 +MLO 000108 7 0 368.50 +MLO 000115 6 0 369.00 +MLO 000122 5 0 369.80 +MLO 000129 6 0 369.20 +MLO 000205 5 0 369.10 +MLO 000212 7 0 369.60 +MLO 000219 7 0 369.30 +MLO 000226 7 0 369.50 +MLO 000304 6 0 370.00 +MLO 000311 7 0 370.00 +MLO 000318 7 0 370.90 +MLO 000325 7 0 370.70 +MLO 000401 7 0 370.90 +MLO 000408 6 0 371.70 +MLO 000415 6 0 371.80 +MLO 000422 7 0 372.00 +MLO 000429 7 0 371.30 +MLO 000506 7 0 371.20 +MLO 000513 7 0 371.70 +MLO 000520 7 0 371.90 +MLO 000527 7 0 371.80 +MLO 000603 6 0 371.90 +MLO 000610 7 0 371.60 +MLO 000617 7 0 371.70 +MLO 000624 4 0 371.30 +MLO 000701 7 0 370.80 +MLO 000708 6 0 370.00 +MLO 000715 7 0 370.20 +MLO 000722 7 0 369.70 +MLO 000729 6 0 369.00 +MLO 000805 6 0 368.70 +MLO 000812 7 0 368.30 +MLO 000819 5 0 367.70 +MLO 000826 6 0 367.10 +MLO 000902 7 0 367.20 +MLO 000909 4 0 366.70 +MLO 000916 4 0 366.20 +MLO 000923 7 0 366.20 +MLO 000930 7 0 366.40 +MLO 001007 7 0 366.30 +MLO 001014 7 0 366.60 +MLO 001021 7 0 366.70 +MLO 001028 7 0 367.30 +MLO 001104 6 0 367.60 +MLO 001111 7 0 368.00 +MLO 001118 7 0 368.60 +MLO 001125 7 0 368.30 +MLO 001202 5 0 369.00 +MLO 001209 6 0 369.60 +MLO 001216 6 0 369.30 +MLO 001223 7 0 369.50 +MLO 001230 7 0 369.80 +MLO 010106 6 0 369.80 +MLO 010113 4 0 370.20 +MLO 010120 7 0 369.90 +MLO 010127 7 0 370.80 +MLO 010203 6 0 371.30 +MLO 010210 7 0 371.10 +MLO 010217 7 0 371.70 +MLO 010224 7 0 371.20 +MLO 010303 6 0 372.20 +MLO 010310 7 0 372.20 +MLO 010317 6 0 372.10 +MLO 010324 6 0 371.80 +MLO 010331 6 0 372.00 +MLO 010407 7 0 372.70 +MLO 010414 7 0 372.70 +MLO 010421 7 0 373.00 +MLO 010428 7 0 372.70 +MLO 010505 5 0 373.70 +MLO 010512 7 0 373.90 +MLO 010519 5 0 373.70 +MLO 010526 7 0 373.90 +MLO 010602 6 0 373.80 +MLO 010609 7 0 373.10 +MLO 010616 7 0 372.80 +MLO 010623 7 0 372.90 +MLO 010630 6 0 372.70 +MLO 010707 4 0 372.10 +MLO 010714 7 0 371.30 +MLO 010721 4 0 371.20 +MLO 010728 6 0 370.60 +MLO 010804 6 0 369.90 +MLO 010811 7 0 369.50 +MLO 010818 6 0 369.30 +MLO 010825 7 0 369.00 +MLO 010901 6 0 368.40 +MLO 010908 7 0 368.20 +MLO 010915 7 0 368.00 +MLO 010922 7 0 367.40 +MLO 010929 7 0 367.40 +MLO 011006 7 0 367.80 +MLO 011013 7 0 367.60 +MLO 011020 7 0 368.10 +MLO 011027 6 0 368.70 +MLO 011103 7 0 368.70 +MLO 011110 3 0 368.80 +MLO 011117 7 0 369.70 +MLO 011124 7 0 370.30 +MLO 011201 7 0 370.30 +MLO 011208 7 0 370.80 +MLO 011215 7 0 371.20 +MLO 011222 6 0 371.30 +MLO 011229 6 0 371.50 diff --git a/statsmodels/datasets/committee/R_committee.s b/statsmodels/datasets/committee/R_committee.s new file mode 100644 index 0000000..a75c0de --- /dev/null +++ b/statsmodels/datasets/committee/R_committee.s @@ -0,0 +1,11 @@ +### SETUP ### +d <- read.table("./committee.csv",sep=",", header=T) +attach(d) + +LNSTAFF <- log(STAFF) +SUBS.LNSTAFF <- SUBS*LNSTAFF +library(MASS) +#m1 <- glm.nb(BILLS104 ~ SIZE + SUBS + LNSTAFF + PRESTIGE + BILLS103 + SUBS.LNSTAFF) +m1 <- glm(BILLS104 ~ SIZE + SUBS + LNSTAFF + PRESTIGE + BILLS103 + SUBS.LNSTAFF, family=negative.binomial(1)) # Disp should be 1 by default + +results <- summary.glm(m1) diff --git a/statsmodels/datasets/committee/__init__.py b/statsmodels/datasets/committee/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/committee/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/committee/committee.csv b/statsmodels/datasets/committee/committee.csv new file mode 100644 index 0000000..40a9eaf --- /dev/null +++ b/statsmodels/datasets/committee/committee.csv @@ -0,0 +1,21 @@ +"COMMITTEE","BILLS104","SIZE","SUBS","STAFF","PRESTIGE","BILLS103" +"Appropriations",6,58,13,109,1,9 +"Budget",23,42,0,39,1,101 +"Rules",44,13,2,25,1,54 +"Ways_and_Means",355,39,5,23,1,542 +"Banking",125,51,5,61,0,101 +"Economic_Educ_Oppor",131,43,5,69,0,158 +"Commerce",271,49,4,79,0,196 +"International_Relations",63,44,3,68,0,40 +"Government_Reform",149,51,7,99,0,72 +"Judiciary",253,35,5,56,0,168 +"Agriculture",81,49,5,46,0,60 +"National_Security",89,55,7,48,0,75 +"Resources",142,44,5,58,0,98 +"TransInfrastructure",155,61,6,74,0,69 +"Science",27,50,4,58,0,25 +"Small_Business",8,43,4,29,0,9 +"Veterans_Affairs",28,33,3,36,0,41 +"House_Oversight",68,12,0,24,0,233 +"Stds_of_Conduct",1,10,0,9,0,0 +"Intelligence",4,16,2,24,0,2 diff --git a/statsmodels/datasets/committee/data.py b/statsmodels/datasets/committee/data.py new file mode 100644 index 0000000..f140484 --- /dev/null +++ b/statsmodels/datasets/committee/data.py @@ -0,0 +1,75 @@ +"""First 100 days of the US House of Representatives 1995""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """Used with express permission from the original author, +who retains all rights.""" +TITLE = __doc__ +SOURCE = """ +Jeff Gill's `Generalized Linear Models: A Unifited Approach` + +http://jgill.wustl.edu/research/books.html +""" + +DESCRSHORT = """Number of bill assignments in the 104th House in 1995""" + +DESCRLONG = """The example in Gill, seeks to explain the number of bill +assignments in the first 100 days of the US' 104th House of Representatives. +The response variable is the number of bill assignments in the first 100 days +over 20 Committees. The explanatory variables in the example are the number of +assignments in the first 100 days of the 103rd House, the number of members on +the committee, the number of subcommittees, the log of the number of staff +assigned to the committee, a dummy variable indicating whether +the committee is a high prestige committee, and an interaction term between +the number of subcommittees and the log of the staff size. + +The data returned by load are not cleaned to represent the above example. +""" + +NOTE = """:: + + Number of Observations - 20 + Number of Variables - 6 + Variable name definitions:: + + BILLS104 - Number of bill assignments in the first 100 days of the + 104th House of Representatives. + SIZE - Number of members on the committee. + SUBS - Number of subcommittees. + STAFF - Number of staff members assigned to the committee. + PRESTIGE - PRESTIGE == 1 is a high prestige committee. + BILLS103 - Number of bill assignments in the first 100 days of the + 103rd House of Representatives. + + Committee names are included as a variable in the data file though not + returned by load. +""" + + +def load_pandas(): + data = _get_data() + return du.process_pandas(data, endog_idx=0) + + +def load(as_pandas=None): + """Load the committee data and returns a data class. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def _get_data(): + data = du.load_csv(__file__, 'committee.csv') + data = data.iloc[:, 1:7].astype(float) + return data diff --git a/statsmodels/datasets/committee/src/committee.dat b/statsmodels/datasets/committee/src/committee.dat new file mode 100644 index 0000000..4f94593 --- /dev/null +++ b/statsmodels/datasets/committee/src/committee.dat @@ -0,0 +1,21 @@ + SIZE SUBS STAFF PRESTIGE POLICY CONSTIT SERVICE BILLS103 BILLS104 +Appropriations 58 13 109 1 0 0 0 9 6 +Budget 42 0 39 1 0 0 0 101 23 +Rules 13 2 25 1 0 0 0 54 44 +Ways_and_Means 39 5 23 1 0 0 0 542 355 +Banking 51 5 61 0 1 0 0 101 125 +Economic_Educ_Oppor 43 5 69 0 1 0 0 158 131 +Commerce 49 4 79 0 1 0 0 196 271 +International_Relations 44 3 68 0 1 0 0 40 63 +Government_Reform 51 7 99 0 1 0 0 72 149 +Judiciary 35 5 56 0 1 0 0 168 253 +Agriculture 49 5 46 0 0 1 0 60 81 +National_Security 55 7 48 0 0 1 0 75 89 +Resources 44 5 58 0 0 1 0 98 142 +TransInfrastructure 61 6 74 0 0 1 0 69 155 +Science 50 4 58 0 0 1 0 25 27 +Small_Business 43 4 29 0 0 1 0 9 8 +Veterans_Affairs 33 3 36 0 0 1 0 41 28 +House_Oversight 12 0 24 0 0 0 1 233 68 +Stds_of_Conduct 10 0 9 0 0 0 1 0 1 +Intelligence 16 2 24 0 0 0 1 2 4 diff --git a/statsmodels/datasets/copper/__init__.py b/statsmodels/datasets/copper/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/copper/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/copper/copper.csv b/statsmodels/datasets/copper/copper.csv new file mode 100644 index 0000000..9347f3c --- /dev/null +++ b/statsmodels/datasets/copper/copper.csv @@ -0,0 +1,26 @@ +"YEAR","WORLDCONSUMPTION","COPPERPRICE","INCOMEINDEX","ALUMPRICE","INVENTORYINDEX","TIME" +1951,3173,26.56,0.7,19.76,0.98,1 +1952,3281.1,27.31,0.71,20.78,1.04,2 +1953,3135.7,32.95,0.72,22.55,1.05,3 +1954,3359.1,33.9,0.7,23.06,0.97,4 +1955,3755.1,42.7,0.74,24.93,1.02,5 +1956,3875.9,46.11,0.74,26.5,1.04,6 +1957,3905.7,31.7,0.74,27.24,0.98,7 +1958,3957.6,27.23,0.72,26.21,0.98,8 +1959,4279.1,32.89,0.75,26.09,1.03,9 +1960,4627.9,33.78,0.77,27.4,1.03,10 +1961,4910.2,31.66,0.76,26.94,0.98,11 +1962,4908.4,32.28,0.79,25.18,1,12 +1963,5327.9,32.38,0.83,23.94,0.97,13 +1964,5878.4,33.75,0.85,25.07,1.03,14 +1965,6075.2,36.25,0.89,25.37,1.08,15 +1966,6312.7,36.24,0.93,24.55,1.05,16 +1967,6056.8,38.23,0.95,24.98,1.03,17 +1968,6375.9,40.83,0.99,24.96,1.03,18 +1969,6974.3,44.62,1,25.52,0.99,19 +1970,7101.6,52.27,1,26.01,1,20 +1971,7071.7,45.16,1.02,25.46,0.96,21 +1972,7754.8,42.5,1.07,22.17,0.97,22 +1973,8480.3,43.7,1.12,18.56,0.98,23 +1974,8105.2,47.88,1.1,21.32,1.01,24 +1975,7157.2,36.33,1.07,22.75,0.94,25 diff --git a/statsmodels/datasets/copper/data.py b/statsmodels/datasets/copper/data.py new file mode 100644 index 0000000..1dac875 --- /dev/null +++ b/statsmodels/datasets/copper/data.py @@ -0,0 +1,78 @@ +"""World Copper Prices 1951-1975 dataset.""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """Used with express permission from the original author, +who retains all rights.""" +TITLE = "World Copper Market 1951-1975 Dataset" +SOURCE = """ +Jeff Gill's `Generalized Linear Models: A Unified Approach` + +http://jgill.wustl.edu/research/books.html +""" + +DESCRSHORT = """World Copper Market 1951-1975""" + +DESCRLONG = """This data describes the world copper market from 1951 through 1975. In an +example, in Gill, the outcome variable (of a 2 stage estimation) is the world +consumption of copper for the 25 years. The explanatory variables are the +world consumption of copper in 1000 metric tons, the constant dollar adjusted +price of copper, the price of a substitute, aluminum, an index of real per +capita income base 1970, an annual measure of manufacturer inventory change, +and a time trend. +""" + +NOTE = """ +Number of Observations - 25 + +Number of Variables - 6 + +Variable name definitions:: + + WORLDCONSUMPTION - World consumption of copper (in 1000 metric tons) + COPPERPRICE - Constant dollar adjusted price of copper + INCOMEINDEX - An index of real per capita income (base 1970) + ALUMPRICE - The price of aluminum + INVENTORYINDEX - A measure of annual manufacturer inventory trend + TIME - A time trend + +Years are included in the data file though not returned by load. +""" + + +def _get_data(): + data = du.load_csv(__file__, 'copper.csv') + data = data.iloc[:, 1:7] + return data.astype(float) + + +def load_pandas(): + """ + Load the copper data and returns a Dataset class. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + data = _get_data() + return du.process_pandas(data, endog_idx=0) + + +def load(as_pandas=None): + """ + Load the copper data and returns a Dataset class. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) diff --git a/statsmodels/datasets/copper/src/copper.dat b/statsmodels/datasets/copper/src/copper.dat new file mode 100644 index 0000000..594f452 --- /dev/null +++ b/statsmodels/datasets/copper/src/copper.dat @@ -0,0 +1,26 @@ +YEAR WORLDCONSUMPTION COPPERPRICE INCOMEINDEX ALUMPRICE INVENTORYINDEX TIME +1951 3173.0 26.56 0.70 19.76 0.97679 1 +1952 3281.1 27.31 0.71 20.78 1.03937 2 +1953 3135.7 32.95 0.72 22.55 1.05153 3 +1954 3359.1 33.90 0.70 23.06 0.97312 4 +1955 3755.1 42.70 0.74 24.93 1.02349 5 +1956 3875.9 46.11 0.74 26.50 1.04135 6 +1957 3905.7 31.70 0.74 27.24 0.97686 7 +1958 3957.6 27.23 0.72 26.21 0.98069 8 +1959 4279.1 32.89 0.75 26.09 1.02888 9 +1960 4627.9 33.78 0.77 27.40 1.03392 10 +1961 4910.2 31.66 0.76 26.94 0.97922 11 +1962 4908.4 32.28 0.79 25.18 0.99679 12 +1963 5327.9 32.38 0.83 23.94 0.96630 13 +1964 5878.4 33.75 0.85 25.07 1.02915 14 +1965 6075.2 36.25 0.89 25.37 1.07950 15 +1966 6312.7 36.24 0.93 24.55 1.05073 16 +1967 6056.8 38.23 0.95 24.98 1.02788 17 +1968 6375.9 40.83 0.99 24.96 1.02799 18 +1969 6974.3 44.62 1.00 25.52 0.99151 19 +1970 7101.6 52.27 1.00 26.01 1.00191 20 +1971 7071.7 45.16 1.02 25.46 0.95644 21 +1972 7754.8 42.50 1.07 22.17 0.96947 22 +1973 8480.3 43.70 1.12 18.56 0.98220 23 +1974 8105.2 47.88 1.10 21.32 1.00793 24 +1975 7157.2 36.33 1.07 22.75 0.93810 25 diff --git a/statsmodels/datasets/cpunish/R_cpunish.s b/statsmodels/datasets/cpunish/R_cpunish.s new file mode 100644 index 0000000..077bd7d --- /dev/null +++ b/statsmodels/datasets/cpunish/R_cpunish.s @@ -0,0 +1,15 @@ +### SETUP ### +d <- read.table("./cpunish.csv",sep=",", header=T) +attach(d) +LN_VC100k96 = log(VC100k96) +### MODEL ### +m1 <- glm(EXECUTIONS ~ INCOME + PERPOVERTY + PERBLACK + LN_VC100k96 + SOUTH + DEGREE, + family=poisson) +results <- summary.glm(m1) +results +results['coefficients'] + +# Model with exposure +m2 <- glm(EXECUTIONS ~ INCOME + PERPOVERTY + PERBLACK + LN_VC100k96 + SOUTH + DEGREE, + family=poisson, offset=rep(log(100), length(EXECUTIONS))) +results2 <- summary.glm(m2) diff --git a/statsmodels/datasets/cpunish/__init__.py b/statsmodels/datasets/cpunish/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/cpunish/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/cpunish/cpunish.csv b/statsmodels/datasets/cpunish/cpunish.csv new file mode 100644 index 0000000..6e9e90d --- /dev/null +++ b/statsmodels/datasets/cpunish/cpunish.csv @@ -0,0 +1,18 @@ +"STATE","EXECUTIONS","INCOME","PERPOVERTY","PERBLACK","VC100k96","SOUTH","DEGREE" +"Texas",37,34453,16.7,12.2,644,1,0.16 +"Virginia",9,41534,12.5,20,351,1,0.27 +"Missouri",6,35802,10.6,11.2,591,0,0.21 +"Arkansas",4,26954,18.4,16.1,524,1,0.16 +"Alabama",3,31468,14.8,25.9,565,1,0.19 +"Arizona",2,32552,18.8,3.5,632,0,0.25 +"Illinois",2,40873,11.6,15.3,886,0,0.25 +"South_Carolina",2,34861,13.1,30.1,997,1,0.21 +"Colorado",1,42562,9.4,4.3,405,0,0.31 +"Florida",1,31900,14.3,15.4,1051,1,0.24 +"Indiana",1,37421,8.2,8.2,537,0,0.19 +"Kentucky",1,33305,16.4,7.2,321,0,0.16 +"Louisiana",1,32108,18.4,32.1,929,1,0.18 +"Maryland",1,45844,9.3,27.4,931,0,0.29 +"Nebraska",1,34743,10,4,435,0,0.24 +"Oklahoma",1,29709,15.2,7.7,597,0,0.21 +"Oregon",1,36777,11.7,1.8,463,0,0.25 diff --git a/statsmodels/datasets/cpunish/data.py b/statsmodels/datasets/cpunish/data.py new file mode 100644 index 0000000..8ea675f --- /dev/null +++ b/statsmodels/datasets/cpunish/data.py @@ -0,0 +1,81 @@ +"""US Capital Punishment dataset.""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """Used with express permission from the original author, +who retains all rights.""" +TITLE = __doc__ +SOURCE = """ +Jeff Gill's `Generalized Linear Models: A Unified Approach` + +http://jgill.wustl.edu/research/books.html +""" + +DESCRSHORT = """Number of state executions in 1997""" + +DESCRLONG = """This data describes the number of times capital punishment is implemented +at the state level for the year 1997. The outcome variable is the number of +executions. There were executions in 17 states. +Included in the data are explanatory variables for median per capita income +in dollars, the percent of the population classified as living in poverty, +the percent of Black citizens in the population, the rate of violent +crimes per 100,000 residents for 1996, a dummy variable indicating +whether the state is in the South, and (an estimate of) the proportion +of the population with a college degree of some kind. +""" + +NOTE = """:: + + Number of Observations - 17 + Number of Variables - 7 + Variable name definitions:: + + EXECUTIONS - Executions in 1996 + INCOME - Median per capita income in 1996 dollars + PERPOVERTY - Percent of the population classified as living in poverty + PERBLACK - Percent of black citizens in the population + VC100k96 - Rate of violent crimes per 100,00 residents for 1996 + SOUTH - SOUTH == 1 indicates a state in the South + DEGREE - An esimate of the proportion of the state population with a + college degree of some kind + + State names are included in the data file, though not returned by load. +""" + + +def load_pandas(): + """ + Load the cpunish data and return a Dataset class. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + data = _get_data() + return du.process_pandas(data, endog_idx=0) + + +def load(as_pandas=None): + """ + Load the cpunish data and return a Dataset class. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def _get_data(): + data = du.load_csv(__file__, 'cpunish.csv') + data = data.iloc[:, 1:8].astype(float) + return data diff --git a/statsmodels/datasets/cpunish/src/cpunish.dat b/statsmodels/datasets/cpunish/src/cpunish.dat new file mode 100644 index 0000000..4bcf841 --- /dev/null +++ b/statsmodels/datasets/cpunish/src/cpunish.dat @@ -0,0 +1,18 @@ +STATE EXECUTIONS INCOME PERPOVERTY PERBLACK VC100k96 SOUTH <9thGRADE 9thTO12th HSOREQUIV SOMECOLL AADEGREE BACHELORS GRAD/PROF +Texas 37 34453 16.7 12.2 644 1 1492112 1924831 3153187 2777973 598956 530849 673250 +Virginia 9 41534 12.5 20.0 351 1 461475 669851 1297714 969191 244488 676710 363602 +Missouri 6 35802 10.6 11.2 591 0 391097 578440 1251550 785555 170146 420521 204294 +Arkansas 4 26954 18.4 16.1 524 1 234071 328690 571252 323016 62246 143038 67144 +Alabama 3 31468 14.8 25.9 565 1 362434 597455 875703 575123 146228 281466 142177 +Arizona 2 32552 18.8 3.5 632 0 224662 368279 708340 724228 173801 325575 161560 +Illinois 2 40873 11.6 15.3 886 0 786815 1203134 2531465 1817238 490791 1101193 552145 +South_Carolina 2 34861 13.1 30.1 997 1 303694 479916 776053 466145 152671 267365 118811 +Colorado 1 42562 9.4 4.3 405 0 124477 270560 654510 630445 161331 402917 190168 +Florida 1 31900 14.3 15.4 1051 1 883820 1706839 3045682 2054574 682005 1133053 567453 +Indiana 1 37421 8.2 8.2 537 0 310403 673362 1530741 775605 212379 360087 224057 +Kentucky 1 33305 16.4 7.2 321 0 456107 467956 881795 476362 108409 209055 129994 +Louisiana 1 32108 18.4 32.1 929 1 391630 534570 951832 586477 94409 288154 143624 +Maryland 1 45844 9.3 27.4 931 0 257518 514788 1044976 744604 182465 532883 342012 +Nebraska 1 34743 10.0 4.0 435 0 81690 124792 388540 272981 80956 141231 59008 +Oklahoma 1 29709 15.2 7.7 597 0 201228 375155 706003 539511 113434 253635 119774 +Oregon 1 36777 11.7 1.8 463 0 122513 283409 613983 561176 139269 267161 130403 diff --git a/statsmodels/datasets/elnino/__init__.py b/statsmodels/datasets/elnino/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/elnino/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/elnino/data.py b/statsmodels/datasets/elnino/data.py new file mode 100644 index 0000000..03978da --- /dev/null +++ b/statsmodels/datasets/elnino/data.py @@ -0,0 +1,67 @@ +"""El Nino dataset, 1950 - 2010""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """This data is in the public domain.""" + +TITLE = """El Nino - Sea Surface Temperatures""" + +SOURCE = """ +National Oceanic and Atmospheric Administration's National Weather Service + +ERSST.V3B dataset, Nino 1+2 +http://www.cpc.ncep.noaa.gov/data/indices/ +""" + +DESCRSHORT = """Averaged monthly sea surface temperature - Pacific Ocean.""" + +DESCRLONG = """This data contains the averaged monthly sea surface +temperature in degrees Celcius of the Pacific Ocean, between 0-10 degrees South +and 90-80 degrees West, from 1950 to 2010. This dataset was obtained from +NOAA. +""" + +NOTE = """:: + + Number of Observations - 61 x 12 + + Number of Variables - 1 + + Variable name definitions:: + + TEMPERATURE - average sea surface temperature in degrees Celcius + (12 columns, one per month). +""" + + +def load_pandas(): + data = _get_data() + dataset = du.Dataset(data=data, names=list(data.columns)) + return dataset + + +def load(as_pandas=None): + """ + Load the El Nino data and return a Dataset class. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + + Notes + ----- + The elnino Dataset instance does not contain endog and exog attributes. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def _get_data(): + return du.load_csv(__file__, 'elnino.csv', convert_float=True) diff --git a/statsmodels/datasets/elnino/elnino.csv b/statsmodels/datasets/elnino/elnino.csv new file mode 100644 index 0000000..c692bc9 --- /dev/null +++ b/statsmodels/datasets/elnino/elnino.csv @@ -0,0 +1,62 @@ +"YEAR","JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC" +1950,23.110,24.200,25.370,23.860,23.030,21.570,20.630,20.150,19.670,20.030,20.020,21.800 +1951,24.190,25.280,25.600,25.370,24.790,24.690,23.860,22.320,21.440,21.770,22.330,22.890 +1952,24.520,26.210,26.370,24.730,23.710,22.340,20.890,20.020,19.630,20.400,20.770,22.390 +1953,24.150,26.340,27.360,27.030,25.470,23.490,22.200,21.450,21.250,20.950,21.600,22.440 +1954,23.020,25.000,25.330,22.970,21.730,20.770,19.520,19.330,18.950,19.110,20.270,21.300 +1955,23.750,24.820,25.140,24.220,22.160,21.200,20.460,19.630,19.240,19.160,19.840,21.190 +1956,23.240,24.710,25.900,24.660,23.140,22.040,21.470,20.550,19.890,19.690,20.570,21.580 +1957,23.130,26.300,27.630,27.150,26.720,25.040,23.830,22.340,21.800,21.800,22.390,23.690 +1958,24.890,26.550,27.090,26.370,24.710,23.230,22.310,20.720,20.620,21.050,21.520,22.500 +1959,23.970,25.900,26.940,25.840,24.230,22.570,21.500,20.150,20.230,20.860,21.880,22.550 +1960,24.400,25.590,26.010,24.660,23.530,21.830,20.730,20.100,20.560,20.270,20.930,22.740 +1961,24.580,26.660,25.950,25.170,23.600,22.360,20.520,19.970,19.700,20.070,21.090,22.110 +1962,24.020,25.350,24.470,23.430,23.030,21.810,20.600,20.170,20.020,20.140,20.990,21.820 +1963,23.810,25.360,26.020,24.670,23.970,22.410,21.800,21.310,21.000,21.130,21.640,22.550 +1964,24.150,25.080,25.300,24.610,21.930,21.440,20.250,19.480,19.670,19.790,20.880,21.830 +1965,24.220,26.170,26.710,27.010,26.090,24.600,23.260,22.540,21.260,21.570,22.290,23.350 +1966,25.150,25.880,25.350,24.260,22.920,21.800,20.850,20.170,20.040,20.510,21.030,22.250 +1967,23.660,25.540,25.550,24.980,23.770,22.040,21.100,19.840,19.080,19.470,20.200,21.280 +1968,23.190,24.880,25.110,23.970,22.440,21.700,21.250,20.970,21.230,21.120,21.680,23.200 +1969,24.670,25.560,27.090,26.660,26.070,24.390,22.470,21.060,20.880,21.740,22.470,23.600 +1970,25.020,25.760,25.530,24.760,22.940,21.270,19.690,19.270,19.500,20.160,20.610,21.770 +1971,23.330,24.580,25.240,24.950,23.290,21.600,21.010,19.970,19.740,19.880,20.940,21.990 +1972,24.510,26.660,27.090,26.250,25.470,25.010,24.110,23.420,22.120,22.580,23.320,24.890 +1973,26.030,26.480,26.270,24.870,23.440,21.760,20.840,19.470,19.490,19.800,20.710,21.740 +1974,23.290,24.870,25.690,25.280,24.350,22.480,21.580,20.730,20.150,19.880,20.680,21.410 +1975,23.550,24.950,26.060,25.530,23.710,21.840,21.050,19.970,19.140,19.170,19.440,21.050 +1976,23.510,25.360,25.880,25.720,25.110,24.460,23.300,21.910,21.560,21.690,22.140,23.290 +1977,24.930,25.790,26.130,25.290,23.880,22.700,21.630,20.250,19.820,20.610,21.290,22.470 +1978,24.320,25.770,25.390,24.730,23.150,21.890,21.010,19.660,19.980,20.220,21.620,22.940 +1979,24.710,25.600,25.930,25.580,24.520,23.280,21.790,21.050,21.150,21.430,21.950,22.970 +1980,24.350,25.730,26.460,25.710,24.460,22.880,21.260,20.570,20.450,20.430,21.230,22.340 +1981,22.980,24.900,25.940,24.890,23.900,22.570,21.100,20.030,20.090,20.580,21.260,22.600 +1982,24.360,25.420,25.400,24.960,24.210,23.350,22.500,21.890,22.040,22.880,24.570,25.890 +1983,27.250,28.230,28.850,28.820,28.370,27.430,25.730,23.880,22.260,22.220,22.210,23.190 +1984,24.320,25.120,25.750,25.400,23.580,22.300,21.530,20.640,20.730,20.620,21.700,22.470 +1985,23.840,24.830,25.600,24.280,22.670,21.840,20.750,19.900,19.860,20.260,20.970,22.490 +1986,24.310,25.900,25.780,24.860,23.350,22.030,21.640,21.070,21.130,21.460,22.170,23.530 +1987,25.600,27.020,27.890,26.950,25.960,24.040,23.000,21.920,22.000,22.540,22.840,23.510 +1988,24.760,25.740,25.710,24.680,23.180,21.660,20.590,19.630,19.440,19.830,20.960,22.250 +1989,24.360,26.020,26.210,25.540,23.360,22.140,21.270,20.860,20.170,20.520,21.440,22.610 +1990,24.220,26.170,26.150,25.150,24.140,22.760,21.360,20.700,20.280,20.400,21.190,22.290 +1991,23.990,25.590,26.310,25.150,24.440,23.280,22.390,21.390,21.220,21.730,22.400,23.750 +1992,25.020,26.620,27.720,27.580,26.440,23.860,21.840,20.870,20.850,21.150,21.840,22.790 +1993,24.680,26.460,27.070,26.840,25.600,24.110,22.610,21.650,21.110,21.710,22.070,22.860 +1994,24.560,25.890,25.750,24.490,23.520,22.310,21.170,20.220,20.650,22.040,22.270,23.750 +1995,25.480,26.250,26.090,24.320,23.370,22.430,21.420,20.460,20.500,20.620,21.490,22.030 +1996,23.810,25.520,26.280,24.000,23.110,21.660,20.720,20.230,20.430,20.520,20.770,21.680 +1997,23.700,26.080,27.170,26.740,26.770,26.150,25.590,24.950,24.690,24.640,25.850,27.080 +1998,28.120,28.820,29.240,28.450,27.360,25.190,23.610,22.270,21.310,21.370,21.600,22.810 +1999,24.230,25.730,26.470,24.530,23.640,22.090,21.360,20.670,20.080,20.460,20.620,22.420 +2000,24.010,25.380,25.670,25.530,24.270,22.930,21.470,20.070,20.640,20.900,20.670,22.080 +2001,24.240,26.110,26.890,25.990,23.980,22.710,21.480,20.240,19.730,20.140,20.680,21.730 +2002,24.090,26.230,27.390,26.440,25.290,23.280,21.640,21.320,21.420,21.850,22.850,24.050 +2003,25.010,26.270,26.910,25.410,23.240,22.150,21.500,21.250,20.750,21.700,22.330,23.600 +2004,25.090,26.470,26.120,25.270,23.440,22.540,21.260,20.790,20.830,21.560,22.880,23.390 +2005,24.610,25.090,25.230,25.210,24.310,22.600,21.610,20.470,20.000,19.890,20.610,22.200 +2006,24.760,26.520,26.220,24.290,23.840,22.820,22.200,21.890,21.930,22.460,22.610,24.150 +2007,25.820,26.810,26.410,24.960,23.050,21.610,21.050,19.950,19.850,19.310,19.820,21.150 +2008,24.240,26.390,26.910,25.680,24.430,23.190,23.020,22.140,21.600,21.390,21.540,22.730 +2009,24.390,25.530,25.480,25.840,24.950,24.090,23.090,22.030,21.480,21.640,21.990,23.210 +2010,24.700,26.160,26.540,26.040,24.750,23.260,21.110,19.490,19.280,19.730,20.440,22.070 diff --git a/statsmodels/datasets/elnino/src/elnino.dat b/statsmodels/datasets/elnino/src/elnino.dat new file mode 100644 index 0000000..28c4035 --- /dev/null +++ b/statsmodels/datasets/elnino/src/elnino.dat @@ -0,0 +1,733 @@ + YR MON NINO1+2 ANOM NINO3 ANOM NINO4 ANOM NINO3.4 ANOM +1950 1 23.11 -1.42 23.74 -1.91 27.03 -1.12 24.83 -1.72 +1950 2 24.20 -1.71 24.92 -1.45 27.15 -0.92 25.20 -1.53 +1950 3 25.37 -1.00 26.33 -0.80 27.06 -1.11 26.03 -1.20 +1950 4 23.86 -1.71 26.46 -0.97 27.29 -1.10 26.36 -1.30 +1950 5 23.03 -1.39 25.72 -1.38 27.59 -1.10 26.19 -1.58 +1950 6 21.57 -1.50 25.55 -0.92 27.97 -0.70 26.52 -1.01 +1950 7 20.63 -1.34 24.97 -0.68 27.83 -0.78 26.42 -0.69 +1950 8 20.15 -0.86 24.61 -0.45 27.72 -0.78 25.98 -0.77 +1950 9 19.67 -1.10 24.22 -0.72 27.66 -0.85 25.78 -0.92 +1950 10 20.03 -1.04 24.39 -0.56 27.44 -1.07 25.96 -0.68 +1950 11 20.02 -1.72 24.00 -1.05 27.35 -1.11 25.64 -0.96 +1950 12 21.80 -1.11 24.30 -0.91 27.30 -1.05 25.50 -1.07 +1951 1 24.19 -0.35 25.00 -0.65 27.36 -0.79 25.46 -1.09 +1951 2 25.28 -0.64 25.80 -0.57 27.27 -0.80 25.78 -0.96 +1951 3 25.60 -0.78 26.91 -0.22 27.96 -0.21 26.72 -0.51 +1951 4 25.37 -0.20 27.31 -0.11 28.49 0.09 27.24 -0.43 +1951 5 24.79 0.37 27.08 -0.02 29.04 0.35 27.68 -0.09 +1951 6 24.69 1.62 26.57 0.10 28.74 0.07 27.46 -0.07 +1951 7 23.86 1.88 26.54 0.89 28.82 0.21 27.72 0.61 +1951 8 22.32 1.31 25.67 0.62 28.53 0.04 27.36 0.61 +1951 9 21.44 0.67 25.56 0.62 28.62 0.11 27.51 0.81 +1951 10 21.77 0.70 25.85 0.90 28.71 0.20 27.43 0.78 +1951 11 22.33 0.59 26.18 1.13 28.74 0.29 27.48 0.87 +1951 12 22.89 -0.01 25.98 0.77 28.53 0.19 27.12 0.55 +1952 1 24.52 -0.02 25.85 0.20 28.35 0.19 26.85 0.30 +1952 2 26.21 0.29 26.46 0.08 28.08 0.00 26.79 0.06 +1952 3 26.37 0.00 27.18 0.05 28.10 -0.07 27.32 0.09 +1952 4 24.73 -0.84 27.41 -0.02 28.52 0.12 27.88 0.21 +1952 5 23.71 -0.71 26.92 -0.18 28.69 -0.01 27.99 0.21 +1952 6 22.34 -0.73 25.84 -0.63 28.47 -0.20 27.33 -0.20 +1952 7 20.89 -1.09 24.92 -0.73 28.24 -0.37 26.72 -0.38 +1952 8 20.02 -0.99 24.50 -0.56 28.09 -0.40 26.46 -0.29 +1952 9 19.63 -1.14 24.43 -0.51 28.55 0.04 26.54 -0.17 +1952 10 20.40 -0.67 24.52 -0.42 28.25 -0.26 26.54 -0.10 +1952 11 20.77 -0.97 24.36 -0.69 28.28 -0.17 26.36 -0.24 +1952 12 22.39 -0.52 24.88 -0.33 28.30 -0.04 26.53 -0.04 +1953 1 24.15 -0.39 25.77 0.11 28.31 0.15 26.85 0.29 +1953 2 26.34 0.42 26.74 0.36 28.26 0.18 27.19 0.45 +1953 3 27.36 0.98 27.57 0.44 28.10 -0.07 27.68 0.45 +1953 4 27.03 1.46 27.91 0.49 28.53 0.14 28.19 0.53 +1953 5 25.47 1.05 27.39 0.28 28.92 0.23 28.29 0.52 +1953 6 23.49 0.42 26.77 0.30 29.18 0.51 28.02 0.49 +1953 7 22.20 0.23 25.81 0.16 29.02 0.41 27.52 0.42 +1953 8 21.45 0.44 25.20 0.14 28.83 0.34 27.16 0.41 +1953 9 21.25 0.49 25.17 0.24 28.61 0.09 27.13 0.43 +1953 10 20.95 -0.12 25.07 0.13 28.91 0.41 27.02 0.38 +1953 11 21.60 -0.14 25.25 0.19 28.91 0.46 26.96 0.36 +1953 12 22.44 -0.47 25.55 0.34 28.74 0.40 26.99 0.42 +1954 1 23.02 -1.52 25.73 0.07 28.30 0.14 27.03 0.47 +1954 2 25.00 -0.92 26.43 0.05 28.16 0.08 27.22 0.48 +1954 3 25.33 -1.05 26.85 -0.28 27.89 -0.28 27.21 -0.02 +1954 4 22.97 -2.60 25.85 -1.57 28.20 -0.19 26.87 -0.80 +1954 5 21.73 -2.69 25.67 -1.44 28.40 -0.30 27.06 -0.71 +1954 6 20.77 -2.30 25.20 -1.27 28.32 -0.35 26.93 -0.60 +1954 7 19.52 -2.46 24.47 -1.17 28.00 -0.61 26.37 -0.74 +1954 8 19.33 -1.68 23.83 -1.23 27.76 -0.73 25.73 -1.02 +1954 9 18.95 -1.82 23.51 -1.43 27.61 -0.90 25.38 -1.33 +1954 10 19.11 -1.96 23.63 -1.31 27.54 -0.97 25.51 -1.13 +1954 11 20.27 -1.47 23.86 -1.19 27.53 -0.92 25.67 -0.93 +1954 12 21.30 -1.61 23.79 -1.42 27.61 -0.74 25.37 -1.20 +1955 1 23.75 -0.79 24.79 -0.86 27.60 -0.56 25.54 -1.02 +1955 2 24.82 -1.10 25.76 -0.62 27.30 -0.77 25.90 -0.84 +1955 3 25.14 -1.23 26.35 -0.78 27.37 -0.81 26.37 -0.86 +1955 4 24.22 -1.35 26.32 -1.11 27.82 -0.57 26.66 -1.01 +1955 5 22.16 -2.26 25.52 -1.58 28.03 -0.66 26.66 -1.11 +1955 6 21.20 -1.87 25.08 -1.39 28.08 -0.59 26.56 -0.97 +1955 7 20.46 -1.52 24.55 -1.10 28.14 -0.47 26.31 -0.80 +1955 8 19.63 -1.38 23.69 -1.37 27.94 -0.55 25.60 -1.15 +1955 9 19.24 -1.53 23.36 -1.57 27.71 -0.81 25.63 -1.07 +1955 10 19.16 -1.91 22.71 -2.24 27.22 -1.29 24.66 -1.98 +1955 11 19.84 -1.90 22.66 -2.39 26.79 -1.66 24.29 -2.32 +1955 12 21.19 -1.71 23.08 -2.13 27.20 -1.15 24.58 -1.99 +1956 1 23.24 -1.30 24.47 -1.18 27.18 -0.97 25.28 -1.27 +1956 2 24.71 -1.20 25.80 -0.57 27.27 -0.81 26.00 -0.73 +1956 3 25.90 -0.47 26.84 -0.29 27.49 -0.68 26.62 -0.61 +1956 4 24.66 -0.91 27.12 -0.30 27.72 -0.68 26.96 -0.70 +1956 5 23.14 -1.28 26.63 -0.47 28.11 -0.58 27.23 -0.54 +1956 6 22.04 -1.03 25.87 -0.60 28.22 -0.46 26.99 -0.54 +1956 7 21.47 -0.51 24.82 -0.82 28.07 -0.54 26.37 -0.73 +1956 8 20.55 -0.46 24.16 -0.90 27.67 -0.82 25.91 -0.84 +1956 9 19.89 -0.88 23.97 -0.97 27.71 -0.80 25.91 -0.79 +1956 10 19.69 -1.39 24.01 -0.94 27.92 -0.59 25.83 -0.81 +1956 11 20.57 -1.17 23.91 -1.14 28.02 -0.43 25.64 -0.97 +1956 12 21.58 -1.32 24.06 -1.15 28.09 -0.26 25.71 -0.86 +1957 1 23.13 -1.40 25.05 -0.60 28.03 -0.12 26.09 -0.47 +1957 2 26.30 0.38 26.23 -0.15 28.10 0.02 26.58 -0.16 +1957 3 27.63 1.26 27.55 0.42 28.33 0.16 27.65 0.41 +1957 4 27.15 1.59 27.94 0.51 28.86 0.47 28.34 0.68 +1957 5 26.72 2.30 27.81 0.71 29.15 0.46 28.59 0.82 +1957 6 25.04 1.97 27.30 0.84 28.83 0.16 28.28 0.75 +1957 7 23.83 1.85 26.95 1.31 28.73 0.12 28.11 1.00 +1957 8 22.34 1.33 26.14 1.08 28.91 0.41 27.75 1.00 +1957 9 21.80 1.03 25.71 0.77 28.96 0.45 27.54 0.84 +1957 10 21.80 0.73 25.68 0.74 29.12 0.61 27.49 0.85 +1957 11 22.39 0.65 26.23 1.18 29.12 0.67 27.79 1.19 +1957 12 23.69 0.78 26.64 1.43 29.08 0.74 28.08 1.51 +1958 1 24.89 0.35 27.04 1.38 29.26 1.10 28.37 1.81 +1958 2 26.55 0.63 27.57 1.20 29.28 1.21 28.41 1.68 +1958 3 27.09 0.72 27.85 0.72 29.04 0.86 28.34 1.11 +1958 4 26.37 0.80 27.86 0.44 29.04 0.65 28.35 0.69 +1958 5 24.71 0.29 27.39 0.28 29.21 0.52 28.35 0.57 +1958 6 23.23 0.16 26.70 0.23 29.13 0.46 28.05 0.52 +1958 7 22.31 0.33 25.73 0.09 28.89 0.28 27.48 0.37 +1958 8 20.72 -0.29 24.97 -0.08 28.53 0.04 26.90 0.15 +1958 9 20.62 -0.14 24.45 -0.48 28.50 -0.02 26.50 -0.20 +1958 10 21.05 -0.02 24.65 -0.30 28.68 0.17 26.61 -0.03 +1958 11 21.52 -0.22 25.06 0.01 28.79 0.34 26.89 0.29 +1958 12 22.50 -0.40 25.02 -0.19 28.76 0.41 26.77 0.20 +1959 1 23.97 -0.57 25.75 0.10 28.63 0.48 27.14 0.58 +1959 2 25.90 -0.01 26.50 0.13 28.38 0.31 27.25 0.51 +1959 3 26.94 0.56 27.17 0.04 28.48 0.31 27.55 0.32 +1959 4 25.84 0.27 27.56 0.14 28.75 0.36 27.93 0.27 +1959 5 24.23 -0.19 26.94 -0.16 28.85 0.16 27.80 0.03 +1959 6 22.57 -0.50 26.07 -0.39 28.39 -0.28 27.34 -0.19 +1959 7 21.50 -0.47 24.94 -0.71 28.30 -0.31 26.56 -0.55 +1959 8 20.15 -0.86 24.40 -0.66 28.27 -0.22 26.32 -0.43 +1959 9 20.23 -0.54 24.37 -0.57 28.19 -0.32 26.17 -0.53 +1959 10 20.86 -0.21 24.67 -0.28 28.21 -0.30 26.42 -0.22 +1959 11 21.88 0.14 24.74 -0.31 28.12 -0.34 26.32 -0.28 +1959 12 22.55 -0.36 24.94 -0.27 28.07 -0.27 26.44 -0.13 +1960 1 24.40 -0.14 25.34 -0.32 27.77 -0.38 26.25 -0.31 +1960 2 25.59 -0.32 25.87 -0.50 27.49 -0.58 26.27 -0.47 +1960 3 26.01 -0.36 26.75 -0.38 27.77 -0.40 26.97 -0.26 +1960 4 24.66 -0.91 27.03 -0.39 28.08 -0.31 27.51 -0.16 +1960 5 23.53 -0.89 26.66 -0.45 28.52 -0.18 27.62 -0.16 +1960 6 21.83 -1.24 25.95 -0.52 28.35 -0.32 27.24 -0.29 +1960 7 20.73 -1.25 25.38 -0.26 28.31 -0.30 27.07 -0.04 +1960 8 20.10 -0.91 24.95 -0.11 28.19 -0.30 26.85 0.10 +1960 9 20.56 -0.20 24.70 -0.24 28.32 -0.20 26.60 -0.11 +1960 10 20.27 -0.80 24.24 -0.71 28.33 -0.17 26.35 -0.29 +1960 11 20.93 -0.81 24.31 -0.75 28.37 -0.09 26.34 -0.26 +1960 12 22.74 -0.17 24.73 -0.48 28.36 0.02 26.41 -0.16 +1961 1 24.58 0.04 25.19 -0.46 27.94 -0.21 26.38 -0.17 +1961 2 26.66 0.75 26.25 -0.13 27.85 -0.23 26.61 -0.13 +1961 3 25.95 -0.42 26.83 -0.30 27.92 -0.26 27.00 -0.24 +1961 4 25.17 -0.40 27.40 -0.02 27.96 -0.43 27.50 -0.16 +1961 5 23.60 -0.82 27.08 -0.02 28.38 -0.31 27.85 0.08 +1961 6 22.36 -0.71 26.37 -0.10 28.49 -0.18 27.86 0.33 +1961 7 20.52 -1.46 24.95 -0.70 28.33 -0.28 27.16 0.05 +1961 8 19.97 -1.04 24.20 -0.86 28.12 -0.37 26.43 -0.32 +1961 9 19.70 -1.07 23.65 -1.29 28.19 -0.33 25.97 -0.73 +1961 10 20.07 -1.01 23.89 -1.06 28.09 -0.42 25.94 -0.71 +1961 11 21.09 -0.65 24.38 -0.67 28.26 -0.19 26.20 -0.40 +1961 12 22.11 -0.80 24.75 -0.46 28.06 -0.28 26.20 -0.37 +1962 1 24.02 -0.52 25.23 -0.42 27.66 -0.49 26.12 -0.43 +1962 2 25.35 -0.56 26.07 -0.31 27.57 -0.51 26.28 -0.46 +1962 3 24.47 -1.90 26.49 -0.64 27.83 -0.34 26.80 -0.44 +1962 4 23.43 -2.14 26.59 -0.83 28.19 -0.20 27.22 -0.44 +1962 5 23.03 -1.39 26.28 -0.82 28.23 -0.47 27.23 -0.54 +1962 6 21.81 -1.26 25.83 -0.64 28.30 -0.37 27.18 -0.35 +1962 7 20.60 -1.37 25.21 -0.44 28.24 -0.37 26.93 -0.17 +1962 8 20.17 -0.84 24.72 -0.33 28.15 -0.34 26.52 -0.23 +1962 9 20.02 -0.75 24.20 -0.74 28.11 -0.40 26.07 -0.63 +1962 10 20.14 -0.93 24.23 -0.72 28.10 -0.41 26.06 -0.58 +1962 11 20.99 -0.75 24.10 -0.95 28.12 -0.33 25.88 -0.72 +1962 12 21.82 -1.09 24.12 -1.09 27.96 -0.38 25.75 -0.82 +1963 1 23.81 -0.73 24.96 -0.69 27.74 -0.41 25.86 -0.69 +1963 2 25.36 -0.55 25.91 -0.47 27.70 -0.38 26.39 -0.35 +1963 3 26.02 -0.36 27.06 -0.07 28.01 -0.16 27.31 0.08 +1963 4 24.67 -0.90 27.66 0.23 28.28 -0.11 27.87 0.20 +1963 5 23.97 -0.45 27.10 0.00 28.40 -0.30 27.71 -0.06 +1963 6 22.41 -0.66 26.74 0.27 28.38 -0.29 27.69 0.16 +1963 7 21.80 -0.18 26.36 0.71 28.72 0.11 27.91 0.80 +1963 8 21.31 0.30 25.80 0.74 29.01 0.51 27.63 0.88 +1963 9 21.00 0.23 25.41 0.48 29.03 0.52 27.47 0.76 +1963 10 21.13 0.06 25.58 0.63 29.07 0.56 27.56 0.92 +1963 11 21.64 -0.10 25.83 0.78 29.11 0.66 27.61 1.00 +1963 12 22.55 -0.35 26.08 0.87 28.87 0.52 27.71 1.14 +1964 1 24.15 -0.39 26.07 0.42 28.70 0.55 27.43 0.87 +1964 2 25.08 -0.83 26.41 0.04 28.39 0.31 27.27 0.53 +1964 3 25.30 -1.08 26.76 -0.37 28.08 -0.09 27.10 -0.13 +1964 4 24.61 -0.96 26.34 -1.09 28.24 -0.15 27.06 -0.60 +1964 5 21.93 -2.49 25.56 -1.54 28.39 -0.30 26.94 -0.84 +1964 6 21.44 -1.63 25.10 -1.37 28.06 -0.61 26.66 -0.87 +1964 7 20.25 -1.72 24.82 -0.82 27.87 -0.74 26.42 -0.69 +1964 8 19.48 -1.53 23.73 -1.33 27.64 -0.85 25.74 -1.01 +1964 9 19.67 -1.10 23.89 -1.04 27.38 -1.13 25.49 -1.22 +1964 10 19.79 -1.28 23.95 -0.99 27.38 -1.13 25.53 -1.11 +1964 11 20.88 -0.86 24.04 -1.02 27.34 -1.11 25.40 -1.20 +1964 12 21.83 -1.08 23.86 -1.35 27.25 -1.10 25.42 -1.15 +1965 1 24.22 -0.32 24.84 -0.81 27.57 -0.59 25.78 -0.77 +1965 2 26.17 0.26 25.96 -0.41 27.77 -0.31 26.37 -0.37 +1965 3 26.71 0.33 27.07 -0.06 27.93 -0.24 27.12 -0.11 +1965 4 27.01 1.45 27.66 0.23 28.06 -0.33 27.62 -0.05 +1965 5 26.09 1.67 27.68 0.57 28.70 0.01 28.07 0.29 +1965 6 24.60 1.54 27.24 0.78 29.02 0.35 28.19 0.66 +1965 7 23.26 1.29 26.64 0.99 29.08 0.47 28.02 0.91 +1965 8 22.54 1.53 26.25 1.20 29.19 0.70 28.07 1.32 +1965 9 21.26 0.49 26.07 1.13 29.11 0.60 28.03 1.32 +1965 10 21.57 0.50 26.15 1.21 29.30 0.80 28.26 1.62 +1965 11 22.29 0.55 26.50 1.45 29.17 0.72 28.29 1.69 +1965 12 23.35 0.44 26.59 1.38 29.03 0.68 28.07 1.50 +1966 1 25.15 0.62 26.70 1.05 28.87 0.71 27.75 1.19 +1966 2 25.88 -0.03 26.86 0.49 28.85 0.78 27.66 0.92 +1966 3 25.35 -1.02 27.26 0.13 29.18 1.01 28.22 0.99 +1966 4 24.26 -1.31 27.40 -0.03 28.99 0.60 28.24 0.58 +1966 5 22.92 -1.50 26.28 -0.82 29.08 0.39 27.67 -0.10 +1966 6 21.80 -1.27 26.08 -0.39 29.13 0.46 27.77 0.24 +1966 7 20.85 -1.13 25.42 -0.22 29.03 0.42 27.42 0.31 +1966 8 20.17 -0.84 24.51 -0.55 28.76 0.27 26.65 -0.10 +1966 9 20.04 -0.73 24.17 -0.77 28.71 0.20 26.49 -0.22 +1966 10 20.51 -0.56 24.42 -0.53 28.57 0.06 26.40 -0.25 +1966 11 21.03 -0.71 24.26 -0.79 28.65 0.20 26.42 -0.19 +1966 12 22.25 -0.66 24.30 -0.91 28.27 -0.07 26.21 -0.36 +1967 1 23.66 -0.88 25.09 -0.56 27.69 -0.46 26.18 -0.38 +1967 2 25.54 -0.37 26.09 -0.28 27.48 -0.60 26.35 -0.39 +1967 3 25.55 -0.83 26.46 -0.67 27.78 -0.39 26.67 -0.56 +1967 4 24.98 -0.59 26.46 -0.96 28.40 0.01 26.91 -0.76 +1967 5 23.77 -0.65 26.69 -0.41 28.80 0.11 27.49 -0.28 +1967 6 22.04 -1.03 26.40 -0.07 28.69 0.02 27.62 0.09 +1967 7 21.10 -0.88 25.32 -0.32 28.62 0.01 27.17 0.06 +1967 8 19.84 -1.17 24.30 -0.76 28.42 -0.07 26.62 -0.13 +1967 9 19.08 -1.68 23.69 -1.25 28.19 -0.32 26.10 -0.60 +1967 10 19.47 -1.60 23.80 -1.14 28.32 -0.19 26.19 -0.45 +1967 11 20.20 -1.54 24.01 -1.04 28.43 -0.02 26.26 -0.34 +1967 12 21.28 -1.62 24.14 -1.07 28.27 -0.08 26.10 -0.47 +1968 1 23.19 -1.35 24.40 -1.25 27.92 -0.24 25.78 -0.78 +1968 2 24.88 -1.04 25.00 -1.38 27.80 -0.28 25.79 -0.95 +1968 3 25.11 -1.27 25.86 -1.27 27.87 -0.30 26.38 -0.85 +1968 4 23.97 -1.60 26.57 -0.85 28.16 -0.24 27.09 -0.58 +1968 5 22.44 -1.98 26.19 -0.92 28.30 -0.40 27.15 -0.62 +1968 6 21.70 -1.36 26.22 -0.25 28.90 0.23 27.69 0.16 +1968 7 21.25 -0.72 26.00 0.35 28.70 0.09 27.61 0.51 +1968 8 20.97 -0.04 25.28 0.22 28.68 0.19 27.12 0.37 +1968 9 21.23 0.46 24.96 0.02 28.66 0.15 26.90 0.19 +1968 10 21.12 0.05 25.17 0.22 28.77 0.26 26.99 0.34 +1968 11 21.68 -0.06 25.35 0.29 29.17 0.72 27.38 0.78 +1968 12 23.20 0.29 25.79 0.58 29.17 0.83 27.42 0.85 +1969 1 24.67 0.13 26.27 0.62 29.11 0.95 27.55 0.99 +1969 2 25.56 -0.36 26.92 0.54 29.28 1.20 27.95 1.21 +1969 3 27.09 0.72 27.63 0.50 28.99 0.82 28.02 0.79 +1969 4 26.66 1.10 27.94 0.52 29.03 0.64 28.39 0.73 +1969 5 26.07 1.65 27.92 0.81 29.21 0.52 28.50 0.73 +1969 6 24.39 1.32 27.05 0.58 29.09 0.42 27.99 0.46 +1969 7 22.47 0.50 25.84 0.19 28.85 0.24 27.30 0.20 +1969 8 21.06 0.05 25.41 0.35 28.93 0.44 27.16 0.41 +1969 9 20.88 0.12 25.46 0.52 29.14 0.63 27.34 0.63 +1969 10 21.74 0.67 25.69 0.75 29.20 0.69 27.50 0.86 +1969 11 22.47 0.73 25.75 0.70 29.20 0.75 27.35 0.74 +1969 12 23.60 0.69 26.16 0.95 28.87 0.52 27.30 0.73 +1970 1 25.02 0.48 26.38 0.73 28.57 0.42 27.05 0.50 +1970 2 25.76 -0.16 26.52 0.14 28.57 0.50 27.02 0.29 +1970 3 25.53 -0.85 26.97 -0.16 28.52 0.35 27.35 0.12 +1970 4 24.76 -0.81 27.20 -0.23 28.73 0.34 27.96 0.29 +1970 5 22.94 -1.48 26.44 -0.66 28.97 0.28 27.77 0.00 +1970 6 21.27 -1.80 25.30 -1.17 28.75 0.08 27.14 -0.39 +1970 7 19.69 -2.28 24.18 -1.47 28.66 0.05 26.48 -0.63 +1970 8 19.27 -1.74 23.69 -1.37 28.16 -0.34 25.86 -0.89 +1970 9 19.50 -1.26 23.89 -1.05 27.88 -0.64 25.86 -0.84 +1970 10 20.16 -0.91 23.80 -1.14 27.86 -0.65 25.79 -0.85 +1970 11 20.61 -1.13 23.78 -1.28 27.91 -0.54 25.83 -0.77 +1970 12 21.77 -1.13 24.01 -1.20 27.44 -0.91 25.47 -1.10 +1971 1 23.33 -1.21 24.19 -1.47 26.94 -1.21 25.09 -1.46 +1971 2 24.58 -1.34 24.91 -1.47 27.07 -1.00 25.40 -1.34 +1971 3 25.24 -1.13 26.01 -1.11 27.25 -0.92 26.10 -1.13 +1971 4 24.95 -0.62 26.61 -0.81 27.63 -0.76 26.78 -0.89 +1971 5 23.29 -1.13 26.26 -0.85 28.02 -0.67 27.06 -0.71 +1971 6 21.60 -1.47 25.44 -1.03 28.03 -0.64 26.70 -0.83 +1971 7 21.01 -0.96 24.78 -0.86 27.93 -0.68 26.29 -0.82 +1971 8 19.97 -1.04 23.90 -1.16 27.84 -0.66 25.99 -0.76 +1971 9 19.74 -1.03 23.92 -1.02 27.75 -0.77 25.94 -0.76 +1971 10 19.88 -1.19 23.73 -1.21 27.80 -0.71 25.65 -0.99 +1971 11 20.94 -0.80 23.93 -1.12 27.87 -0.58 25.69 -0.91 +1971 12 21.99 -0.92 23.92 -1.29 27.98 -0.36 25.55 -1.02 +1972 1 24.51 -0.03 25.02 -0.63 27.97 -0.19 25.84 -0.72 +1972 2 26.66 0.75 26.04 -0.34 28.15 0.07 26.42 -0.32 +1972 3 27.09 0.72 27.12 -0.01 28.36 0.19 27.21 -0.02 +1972 4 26.25 0.68 27.78 0.35 28.82 0.43 27.93 0.26 +1972 5 25.47 1.05 27.62 0.52 29.21 0.52 28.27 0.49 +1972 6 25.01 1.95 27.37 0.90 29.19 0.52 28.23 0.70 +1972 7 24.11 2.13 27.14 1.49 29.09 0.48 28.18 1.07 +1972 8 23.42 2.41 26.86 1.81 28.92 0.43 28.10 1.35 +1972 9 22.12 1.35 26.48 1.54 29.10 0.58 28.10 1.40 +1972 10 22.58 1.51 26.83 1.89 29.44 0.93 28.46 1.82 +1972 11 23.32 1.58 27.17 2.11 29.48 1.03 28.69 2.09 +1972 12 24.89 1.99 27.60 2.39 29.35 1.00 28.81 2.24 +1973 1 26.03 1.49 27.52 1.86 29.03 0.88 28.44 1.88 +1973 2 26.48 0.56 27.24 0.87 28.77 0.70 28.00 1.26 +1973 3 26.27 -0.10 27.37 0.24 28.52 0.35 27.71 0.48 +1973 4 24.87 -0.70 26.87 -0.55 28.39 0.00 27.39 -0.28 +1973 5 23.44 -0.98 26.06 -1.04 28.51 -0.18 27.13 -0.65 +1973 6 21.76 -1.31 25.34 -1.12 28.23 -0.44 26.74 -0.79 +1973 7 20.84 -1.14 24.31 -1.34 28.01 -0.60 25.95 -1.16 +1973 8 19.47 -1.54 23.69 -1.36 27.65 -0.84 25.46 -1.29 +1973 9 19.49 -1.28 23.56 -1.38 27.53 -0.98 25.32 -1.39 +1973 10 19.80 -1.27 23.49 -1.46 27.32 -1.19 25.03 -1.61 +1973 11 20.71 -1.03 23.35 -1.71 26.97 -1.48 24.50 -2.11 +1973 12 21.74 -1.17 23.40 -1.81 26.69 -1.65 24.43 -2.14 +1974 1 23.29 -1.25 23.93 -1.72 26.50 -1.65 24.52 -2.04 +1974 2 24.87 -1.04 25.11 -1.27 26.87 -1.21 25.12 -1.61 +1974 3 25.69 -0.68 26.28 -0.85 27.21 -0.96 25.91 -1.32 +1974 4 25.28 -0.29 26.84 -0.58 27.46 -0.93 26.63 -1.03 +1974 5 24.35 -0.07 26.56 -0.54 27.94 -0.75 26.84 -0.93 +1974 6 22.48 -0.58 25.91 -0.55 27.97 -0.70 26.71 -0.82 +1974 7 21.58 -0.40 25.30 -0.35 27.83 -0.78 26.48 -0.63 +1974 8 20.73 -0.28 24.82 -0.24 27.97 -0.52 26.37 -0.38 +1974 9 20.15 -0.62 24.38 -0.56 27.91 -0.61 26.23 -0.47 +1974 10 19.88 -1.19 24.14 -0.81 27.74 -0.77 25.92 -0.73 +1974 11 20.68 -1.06 24.07 -0.98 27.72 -0.73 25.63 -0.97 +1974 12 21.41 -1.50 24.31 -0.90 27.61 -0.74 25.70 -0.87 +1975 1 23.55 -0.99 25.34 -0.31 27.86 -0.30 26.18 -0.37 +1975 2 24.95 -0.97 25.74 -0.64 27.96 -0.12 26.22 -0.52 +1975 3 26.06 -0.32 26.49 -0.64 27.76 -0.41 26.44 -0.79 +1975 4 25.53 -0.04 27.08 -0.34 27.83 -0.56 26.99 -0.67 +1975 5 23.71 -0.72 26.27 -0.83 27.95 -0.74 26.97 -0.80 +1975 6 21.84 -1.22 25.29 -1.18 27.71 -0.96 26.29 -1.24 +1975 7 21.05 -0.92 24.72 -0.93 27.57 -1.04 25.98 -1.12 +1975 8 19.97 -1.04 24.15 -0.91 27.29 -1.21 25.47 -1.28 +1975 9 19.14 -1.63 23.67 -1.27 26.91 -1.60 25.20 -1.50 +1975 10 19.17 -1.90 23.40 -1.54 26.76 -1.75 24.87 -1.77 +1975 11 19.44 -2.30 23.73 -1.33 26.80 -1.66 25.10 -1.50 +1975 12 21.05 -1.85 23.39 -1.82 26.84 -1.50 24.76 -1.81 +1976 1 23.51 -1.02 23.91 -1.74 26.92 -1.23 24.72 -1.84 +1976 2 25.36 -0.56 25.31 -1.07 27.19 -0.89 25.58 -1.16 +1976 3 25.88 -0.49 26.46 -0.66 27.56 -0.61 26.61 -0.62 +1976 4 25.72 0.15 26.94 -0.49 27.98 -0.42 26.99 -0.67 +1976 5 25.11 0.69 26.98 -0.12 28.32 -0.37 27.27 -0.50 +1976 6 24.46 1.39 26.95 0.48 28.32 -0.35 27.34 -0.19 +1976 7 23.30 1.33 26.29 0.65 28.42 -0.19 27.26 0.16 +1976 8 21.91 0.90 25.87 0.81 28.34 -0.15 27.09 0.34 +1976 9 21.56 0.79 25.76 0.83 28.50 -0.01 27.12 0.42 +1976 10 21.69 0.62 25.97 1.03 28.82 0.31 27.48 0.84 +1976 11 22.14 0.40 25.93 0.87 28.92 0.47 27.42 0.82 +1976 12 23.29 0.39 25.91 0.70 28.45 0.10 27.17 0.60 +1977 1 24.93 0.39 26.57 0.92 28.38 0.23 27.31 0.76 +1977 2 25.79 -0.13 27.03 0.65 28.11 0.04 27.15 0.41 +1977 3 26.13 -0.24 27.51 0.38 28.28 0.10 27.57 0.34 +1977 4 25.29 -0.28 27.02 -0.41 28.50 0.10 27.61 -0.05 +1977 5 23.88 -0.54 27.04 -0.06 28.78 0.09 27.97 0.19 +1977 6 22.70 -0.37 26.56 0.09 28.97 0.30 27.96 0.43 +1977 7 21.63 -0.34 25.70 0.05 29.13 0.52 27.56 0.45 +1977 8 20.25 -0.76 24.81 -0.25 28.87 0.38 26.93 0.18 +1977 9 19.82 -0.95 24.97 0.04 28.98 0.47 27.21 0.50 +1977 10 20.61 -0.46 25.34 0.39 28.96 0.45 27.37 0.73 +1977 11 21.29 -0.45 25.41 0.35 29.10 0.65 27.28 0.67 +1977 12 22.47 -0.44 25.54 0.33 29.11 0.76 27.37 0.80 +1978 1 24.32 -0.22 25.92 0.27 28.80 0.65 27.32 0.77 +1978 2 25.77 -0.15 26.46 0.09 28.48 0.41 27.17 0.43 +1978 3 25.39 -0.98 26.83 -0.30 28.26 0.09 27.24 0.01 +1978 4 24.73 -0.84 26.66 -0.77 28.28 -0.11 27.26 -0.41 +1978 5 23.15 -1.27 26.13 -0.97 28.72 0.03 27.36 -0.42 +1978 6 21.89 -1.18 25.68 -0.79 28.56 -0.11 27.16 -0.37 +1978 7 21.01 -0.96 25.08 -0.57 28.26 -0.35 26.81 -0.29 +1978 8 19.66 -1.35 24.35 -0.71 28.25 -0.24 26.23 -0.52 +1978 9 19.98 -0.79 24.33 -0.61 28.43 -0.08 26.20 -0.50 +1978 10 20.22 -0.86 24.72 -0.22 28.35 -0.16 26.40 -0.24 +1978 11 21.62 -0.12 24.94 -0.11 28.37 -0.09 26.43 -0.17 +1978 12 22.94 0.03 25.34 0.13 28.27 -0.08 26.48 -0.09 +1979 1 24.71 0.17 25.43 -0.23 28.40 0.25 26.45 -0.11 +1979 2 25.60 -0.32 26.19 -0.19 28.22 0.14 26.60 -0.13 +1979 3 25.93 -0.44 27.25 0.12 28.26 0.09 27.48 0.25 +1979 4 25.58 0.01 27.66 0.23 28.35 -0.05 27.87 0.20 +1979 5 24.52 0.10 27.26 0.16 28.70 0.01 27.74 -0.03 +1979 6 23.28 0.22 26.54 0.08 28.74 0.07 27.55 0.02 +1979 7 21.79 -0.19 25.56 -0.09 28.66 0.05 26.95 -0.15 +1979 8 21.05 0.04 25.29 0.23 28.36 -0.13 26.77 0.02 +1979 9 21.15 0.39 25.58 0.65 28.67 0.16 27.15 0.45 +1979 10 21.43 0.36 25.54 0.60 28.81 0.31 27.01 0.36 +1979 11 21.95 0.21 25.58 0.53 28.87 0.42 27.08 0.48 +1979 12 22.97 0.07 25.68 0.47 28.79 0.45 27.09 0.52 +1980 1 24.35 -0.18 26.12 0.47 28.62 0.47 27.10 0.54 +1980 2 25.73 -0.18 26.52 0.15 28.47 0.39 27.03 0.29 +1980 3 26.46 0.08 27.05 -0.07 28.51 0.34 27.38 0.15 +1980 4 25.71 0.14 27.33 -0.10 28.70 0.30 27.78 0.12 +1980 5 24.46 0.04 27.15 0.05 29.08 0.39 27.99 0.21 +1980 6 22.88 -0.19 26.76 0.29 29.15 0.48 27.99 0.46 +1980 7 21.26 -0.71 25.65 0.00 28.95 0.34 27.35 0.24 +1980 8 20.57 -0.44 24.87 -0.19 28.47 -0.02 26.62 -0.13 +1980 9 20.45 -0.32 24.86 -0.08 28.50 -0.01 26.57 -0.13 +1980 10 20.43 -0.64 24.62 -0.32 28.66 0.15 26.51 -0.13 +1980 11 21.23 -0.51 25.07 0.02 28.58 0.13 26.63 0.03 +1980 12 22.34 -0.56 25.28 0.07 28.44 0.10 26.58 0.01 +1981 1 22.98 -1.56 25.05 -0.61 28.08 -0.08 26.17 -0.39 +1981 2 24.90 -1.01 25.63 -0.75 27.94 -0.14 26.13 -0.60 +1981 3 25.94 -0.43 26.74 -0.39 28.08 -0.09 26.75 -0.48 +1981 4 24.89 -0.68 27.10 -0.32 28.17 -0.22 27.32 -0.34 +1981 5 23.90 -0.52 26.74 -0.37 28.34 -0.35 27.41 -0.36 +1981 6 22.57 -0.50 26.26 -0.20 28.36 -0.31 27.35 -0.18 +1981 7 21.10 -0.87 25.26 -0.39 28.29 -0.32 26.66 -0.44 +1981 8 20.03 -0.98 24.43 -0.63 28.22 -0.28 26.25 -0.50 +1981 9 20.09 -0.68 24.74 -0.20 28.30 -0.22 26.54 -0.17 +1981 10 20.58 -0.49 24.92 -0.03 28.45 -0.06 26.52 -0.12 +1981 11 21.26 -0.48 24.83 -0.22 28.47 0.02 26.41 -0.19 +1981 12 22.60 -0.30 25.23 0.03 28.43 0.09 26.47 -0.10 +1982 1 24.36 -0.18 25.96 0.30 28.19 0.03 26.69 0.14 +1982 2 25.42 -0.49 26.55 0.17 28.04 -0.04 26.71 -0.02 +1982 3 25.40 -0.98 27.06 -0.07 28.37 0.19 27.36 0.13 +1982 4 24.96 -0.61 27.52 0.10 28.78 0.39 27.90 0.24 +1982 5 24.21 -0.21 27.66 0.56 29.21 0.52 28.42 0.65 +1982 6 23.35 0.29 27.31 0.84 29.20 0.53 28.32 0.79 +1982 7 22.50 0.52 26.33 0.68 28.83 0.22 27.65 0.54 +1982 8 21.89 0.88 26.21 1.15 28.81 0.32 27.64 0.89 +1982 9 22.04 1.27 26.82 1.88 28.98 0.47 28.21 1.50 +1982 10 22.88 1.81 27.31 2.37 29.37 0.86 28.68 2.04 +1982 11 24.57 2.83 27.68 2.63 29.18 0.73 28.72 2.11 +1982 12 25.89 2.98 28.23 3.02 29.13 0.79 28.94 2.37 +1983 1 27.25 2.71 28.60 2.95 28.96 0.81 28.93 2.37 +1983 2 28.23 2.32 28.63 2.26 28.80 0.73 28.75 2.01 +1983 3 28.85 2.48 28.91 1.78 28.81 0.64 28.76 1.53 +1983 4 28.82 3.25 29.06 1.63 28.81 0.42 28.74 1.07 +1983 5 28.37 3.95 28.98 1.87 29.21 0.51 28.82 1.05 +1983 6 27.43 4.36 28.19 1.72 28.98 0.31 28.27 0.74 +1983 7 25.73 3.75 26.66 1.01 28.64 0.03 27.18 0.07 +1983 8 23.88 2.87 25.78 0.72 28.35 -0.14 26.51 -0.24 +1983 9 22.26 1.49 25.02 0.09 28.05 -0.46 26.18 -0.52 +1983 10 22.22 1.15 24.48 -0.46 27.92 -0.59 25.75 -0.89 +1983 11 22.21 0.47 24.19 -0.86 27.73 -0.73 25.54 -1.06 +1983 12 23.19 0.29 24.58 -0.63 27.75 -0.59 25.82 -0.75 +1984 1 24.32 -0.21 25.30 -0.35 27.64 -0.51 26.14 -0.42 +1984 2 25.12 -0.79 26.43 0.05 27.60 -0.48 26.72 -0.02 +1984 3 25.75 -0.63 27.14 0.01 27.59 -0.58 27.05 -0.19 +1984 4 25.40 -0.17 27.24 -0.18 27.78 -0.61 27.30 -0.37 +1984 5 23.58 -0.84 26.38 -0.72 28.19 -0.51 27.31 -0.47 +1984 6 22.30 -0.77 25.50 -0.97 28.38 -0.29 26.95 -0.58 +1984 7 21.53 -0.44 25.04 -0.60 28.47 -0.14 26.84 -0.26 +1984 8 20.64 -0.37 24.81 -0.25 28.30 -0.19 26.67 -0.08 +1984 9 20.73 -0.04 24.63 -0.30 28.26 -0.25 26.43 -0.27 +1984 10 20.62 -0.45 24.34 -0.61 28.19 -0.32 26.15 -0.49 +1984 11 21.70 -0.04 24.23 -0.83 27.92 -0.53 25.60 -1.00 +1984 12 22.47 -0.44 24.10 -1.11 27.60 -0.74 25.38 -1.19 +1985 1 23.84 -0.70 24.68 -0.97 27.55 -0.60 25.58 -0.98 +1985 2 24.83 -1.08 25.65 -0.72 27.68 -0.39 26.11 -0.63 +1985 3 25.60 -0.77 26.45 -0.68 27.59 -0.58 26.53 -0.71 +1985 4 24.28 -1.29 26.63 -0.79 27.78 -0.61 26.93 -0.74 +1985 5 22.67 -1.75 26.26 -0.84 27.99 -0.70 27.09 -0.68 +1985 6 21.84 -1.23 25.66 -0.81 28.09 -0.58 26.92 -0.61 +1985 7 20.75 -1.23 24.72 -0.93 28.32 -0.30 26.64 -0.46 +1985 8 19.90 -1.11 24.12 -0.94 28.34 -0.16 26.28 -0.47 +1985 9 19.86 -0.91 24.05 -0.88 28.32 -0.20 26.08 -0.62 +1985 10 20.26 -0.81 24.23 -0.71 28.40 -0.11 26.22 -0.42 +1985 11 20.97 -0.77 24.40 -0.65 28.48 0.03 26.39 -0.22 +1985 12 22.49 -0.41 24.56 -0.65 28.39 0.05 26.19 -0.38 +1986 1 24.31 -0.23 24.99 -0.67 27.96 -0.19 26.04 -0.52 +1986 2 25.90 -0.02 26.04 -0.33 27.95 -0.13 26.26 -0.48 +1986 3 25.78 -0.59 26.92 -0.21 28.11 -0.06 26.99 -0.24 +1986 4 24.86 -0.71 27.30 -0.13 28.23 -0.17 27.65 -0.02 +1986 5 23.35 -1.07 26.78 -0.32 28.53 -0.17 27.58 -0.20 +1986 6 22.03 -1.04 26.27 -0.20 28.76 0.09 27.56 0.03 +1986 7 21.64 -0.33 25.82 0.18 28.75 0.14 27.39 0.28 +1986 8 21.07 0.06 25.38 0.33 28.95 0.46 27.21 0.46 +1986 9 21.13 0.36 25.38 0.44 29.20 0.69 27.35 0.65 +1986 10 21.46 0.39 25.65 0.70 29.27 0.76 27.60 0.95 +1986 11 22.17 0.43 25.94 0.88 29.33 0.88 27.67 1.07 +1986 12 23.53 0.63 26.26 1.05 28.97 0.63 27.75 1.18 +1987 1 25.60 1.07 26.74 1.09 28.81 0.65 27.82 1.27 +1987 2 27.02 1.10 27.60 1.23 28.82 0.74 28.02 1.29 +1987 3 27.89 1.51 28.38 1.26 28.95 0.77 28.49 1.26 +1987 4 26.95 1.38 28.63 1.20 28.97 0.58 28.68 1.02 +1987 5 25.96 1.53 28.30 1.19 29.24 0.55 28.70 0.93 +1987 6 24.04 0.97 27.51 1.04 29.44 0.77 28.67 1.14 +1987 7 23.00 1.03 26.94 1.30 29.37 0.76 28.52 1.42 +1987 8 21.92 0.91 26.59 1.53 29.40 0.91 28.48 1.73 +1987 9 22.00 1.23 26.62 1.68 29.47 0.96 28.42 1.71 +1987 10 22.54 1.47 26.19 1.25 29.67 1.17 28.08 1.43 +1987 11 22.84 1.10 26.21 1.16 29.53 1.08 27.94 1.34 +1987 12 23.51 0.60 26.33 1.12 29.25 0.90 27.60 1.03 +1988 1 24.76 0.22 26.47 0.82 28.97 0.81 27.49 0.94 +1988 2 25.74 -0.18 26.43 0.05 28.54 0.46 27.01 0.28 +1988 3 25.71 -0.66 27.10 -0.03 28.46 0.29 27.45 0.22 +1988 4 24.68 -0.89 27.01 -0.41 28.41 0.02 27.56 -0.10 +1988 5 23.18 -1.24 25.88 -1.22 28.26 -0.43 26.97 -0.80 +1988 6 21.66 -1.41 24.61 -1.86 28.00 -0.67 26.21 -1.32 +1988 7 20.59 -1.38 23.79 -1.85 27.95 -0.67 25.66 -1.45 +1988 8 19.63 -1.38 23.71 -1.35 28.07 -0.43 25.71 -1.04 +1988 9 19.44 -1.32 23.88 -1.06 27.90 -0.61 25.72 -0.99 +1988 10 19.83 -1.24 23.41 -1.53 27.12 -1.39 24.82 -1.82 +1988 11 20.96 -0.78 23.45 -1.61 27.06 -1.39 24.73 -1.87 +1988 12 22.25 -0.66 23.50 -1.71 26.85 -1.49 24.68 -1.89 +1989 1 24.36 -0.18 24.27 -1.38 26.63 -1.52 24.70 -1.86 +1989 2 26.02 0.10 25.49 -0.89 26.75 -1.33 25.34 -1.40 +1989 3 26.21 -0.17 26.23 -0.90 27.25 -0.93 26.12 -1.12 +1989 4 25.54 -0.03 26.85 -0.57 27.71 -0.68 26.83 -0.83 +1989 5 23.36 -1.06 26.58 -0.53 28.24 -0.46 27.18 -0.60 +1989 6 22.14 -0.93 26.42 -0.05 28.12 -0.55 27.23 -0.30 +1989 7 21.27 -0.70 25.32 -0.32 28.23 -0.38 26.80 -0.31 +1989 8 20.86 -0.15 24.73 -0.33 28.10 -0.39 26.43 -0.32 +1989 9 20.17 -0.60 24.67 -0.27 28.37 -0.14 26.46 -0.24 +1989 10 20.52 -0.55 24.61 -0.34 28.27 -0.24 26.31 -0.34 +1989 11 21.44 -0.30 24.56 -0.49 28.10 -0.36 26.29 -0.31 +1989 12 22.61 -0.30 24.92 -0.29 28.51 0.17 26.58 0.01 +1990 1 24.22 -0.32 25.45 -0.20 28.49 0.33 26.63 0.07 +1990 2 26.17 0.26 26.54 0.16 28.58 0.50 27.03 0.29 +1990 3 26.15 -0.22 27.01 -0.12 28.69 0.51 27.39 0.16 +1990 4 25.15 -0.42 27.56 0.14 28.83 0.44 27.94 0.27 +1990 5 24.14 -0.29 27.42 0.32 28.93 0.23 28.08 0.30 +1990 6 22.76 -0.31 26.55 0.08 28.97 0.30 27.63 0.10 +1990 7 21.36 -0.61 25.82 0.18 29.01 0.40 27.42 0.31 +1990 8 20.70 -0.31 25.32 0.26 28.99 0.49 27.16 0.41 +1990 9 20.28 -0.49 25.15 0.21 28.92 0.41 26.96 0.25 +1990 10 20.40 -0.67 24.96 0.02 29.10 0.59 27.01 0.37 +1990 11 21.19 -0.55 25.00 -0.06 29.13 0.68 26.88 0.28 +1990 12 22.29 -0.61 25.23 0.02 29.16 0.81 26.96 0.39 +1991 1 23.99 -0.55 25.84 0.19 28.96 0.81 27.07 0.51 +1991 2 25.59 -0.33 26.50 0.12 28.71 0.63 27.12 0.38 +1991 3 26.31 -0.06 27.12 -0.01 28.58 0.40 27.38 0.15 +1991 4 25.15 -0.42 27.65 0.22 28.94 0.55 28.10 0.44 +1991 5 24.44 0.02 27.64 0.54 29.37 0.68 28.36 0.58 +1991 6 23.28 0.21 27.43 0.96 29.28 0.61 28.41 0.88 +1991 7 22.39 0.42 26.75 1.10 29.27 0.66 28.17 1.07 +1991 8 21.39 0.38 25.71 0.65 29.23 0.74 27.73 0.98 +1991 9 21.22 0.45 25.32 0.39 29.24 0.73 27.42 0.71 +1991 10 21.73 0.66 25.63 0.69 29.44 0.93 27.62 0.98 +1991 11 22.40 0.66 26.10 1.04 29.40 0.95 27.93 1.33 +1991 12 23.75 0.85 26.42 1.21 29.46 1.12 28.32 1.75 +1992 1 25.02 0.48 27.03 1.38 29.03 0.87 28.36 1.81 +1992 2 26.62 0.71 27.61 1.23 29.00 0.92 28.43 1.69 +1992 3 27.72 1.34 28.22 1.09 29.03 0.86 28.66 1.42 +1992 4 27.58 2.01 28.79 1.37 29.16 0.77 29.05 1.39 +1992 5 26.44 2.02 28.49 1.38 29.39 0.70 29.01 1.24 +1992 6 23.86 0.79 27.28 0.82 29.28 0.60 28.35 0.82 +1992 7 21.84 -0.14 25.84 0.19 29.15 0.54 27.56 0.45 +1992 8 20.87 -0.14 25.11 0.06 28.92 0.43 26.96 0.21 +1992 9 20.85 0.08 24.90 -0.03 28.83 0.32 26.66 -0.04 +1992 10 21.15 0.08 24.65 -0.29 28.69 0.18 26.39 -0.25 +1992 11 21.84 0.10 24.77 -0.29 28.67 0.21 26.60 0.00 +1992 12 22.79 -0.12 24.97 -0.24 28.82 0.47 26.72 0.15 +1993 1 24.68 0.15 25.79 0.14 28.71 0.56 26.87 0.31 +1993 2 26.46 0.55 26.94 0.57 28.37 0.29 27.20 0.46 +1993 3 27.07 0.69 27.64 0.51 28.50 0.32 27.71 0.48 +1993 4 26.84 1.28 28.43 1.00 28.78 0.38 28.50 0.83 +1993 5 25.60 1.18 28.33 1.23 29.03 0.34 28.70 0.93 +1993 6 24.11 1.04 27.03 0.56 29.03 0.36 28.08 0.55 +1993 7 22.61 0.64 26.19 0.54 29.01 0.40 27.59 0.49 +1993 8 21.65 0.64 25.52 0.46 28.86 0.37 27.01 0.26 +1993 9 21.11 0.34 25.25 0.31 29.02 0.51 27.14 0.43 +1993 10 21.71 0.64 25.28 0.33 28.84 0.33 27.01 0.36 +1993 11 22.07 0.33 25.20 0.14 28.88 0.43 26.92 0.32 +1993 12 22.86 -0.05 25.30 0.09 28.85 0.50 26.79 0.22 +1994 1 24.56 0.02 25.84 0.18 28.54 0.39 26.74 0.19 +1994 2 25.89 -0.03 26.40 0.02 28.27 0.20 26.97 0.23 +1994 3 25.75 -0.62 26.88 -0.24 28.46 0.28 27.52 0.29 +1994 4 24.49 -1.08 27.15 -0.28 28.82 0.43 28.13 0.46 +1994 5 23.52 -0.90 27.17 0.06 29.20 0.51 28.27 0.50 +1994 6 22.31 -0.76 26.63 0.17 29.27 0.60 28.09 0.56 +1994 7 21.17 -0.80 25.61 -0.04 29.49 0.88 27.68 0.57 +1994 8 20.22 -0.79 24.93 -0.13 29.51 1.02 27.40 0.65 +1994 9 20.65 -0.12 24.97 0.03 29.38 0.87 27.25 0.54 +1994 10 22.04 0.97 25.65 0.70 29.51 1.00 27.53 0.89 +1994 11 22.27 0.53 26.17 1.12 29.60 1.15 27.95 1.35 +1994 12 23.75 0.85 26.23 1.02 29.56 1.22 28.02 1.45 +1995 1 25.48 0.94 26.51 0.86 29.24 1.09 27.74 1.18 +1995 2 26.25 0.33 26.90 0.52 29.16 1.09 27.67 0.94 +1995 3 26.09 -0.28 27.26 0.13 29.23 1.05 27.91 0.68 +1995 4 24.32 -1.25 27.20 -0.23 29.26 0.87 28.17 0.50 +1995 5 23.37 -1.05 26.55 -0.55 29.36 0.67 27.87 0.10 +1995 6 22.43 -0.64 26.30 -0.17 29.21 0.54 27.80 0.27 +1995 7 21.42 -0.55 25.65 0.00 29.03 0.42 27.24 0.14 +1995 8 20.46 -0.55 24.36 -0.70 28.81 0.32 26.42 -0.33 +1995 9 20.50 -0.27 24.05 -0.89 28.59 0.08 26.20 -0.50 +1995 10 20.62 -0.45 24.16 -0.78 28.52 0.01 26.08 -0.57 +1995 11 21.49 -0.25 24.22 -0.84 28.32 -0.13 25.82 -0.78 +1995 12 22.03 -0.87 24.45 -0.76 28.13 -0.22 25.86 -0.71 +1996 1 23.81 -0.73 25.06 -0.59 27.89 -0.27 25.83 -0.73 +1996 2 25.52 -0.40 25.84 -0.54 27.61 -0.46 25.98 -0.76 +1996 3 26.28 -0.09 26.75 -0.38 27.91 -0.27 26.73 -0.50 +1996 4 24.00 -1.57 26.83 -0.59 28.25 -0.15 27.42 -0.25 +1996 5 23.11 -1.31 26.63 -0.47 28.62 -0.07 27.65 -0.12 +1996 6 21.66 -1.41 26.10 -0.37 28.71 0.04 27.49 -0.04 +1996 7 20.72 -1.26 25.29 -0.36 28.65 0.04 27.02 -0.09 +1996 8 20.23 -0.78 24.78 -0.28 28.62 0.12 26.75 0.00 +1996 9 20.43 -0.34 24.53 -0.41 28.57 0.05 26.44 -0.27 +1996 10 20.52 -0.55 24.52 -0.42 28.62 0.11 26.49 -0.15 +1996 11 20.77 -0.97 24.56 -0.49 28.62 0.17 26.43 -0.17 +1996 12 21.68 -1.22 24.31 -0.90 28.52 0.18 26.13 -0.44 +1997 1 23.70 -0.83 24.80 -0.85 28.42 0.26 26.09 -0.47 +1997 2 26.08 0.16 25.78 -0.60 28.53 0.45 26.46 -0.28 +1997 3 27.17 0.80 26.97 -0.16 28.73 0.56 27.13 -0.10 +1997 4 26.74 1.17 27.50 0.07 29.33 0.94 27.97 0.31 +1997 5 26.77 2.35 28.03 0.92 29.51 0.82 28.63 0.85 +1997 6 26.15 3.08 28.23 1.76 29.37 0.70 28.86 1.33 +1997 7 25.59 3.61 27.99 2.34 29.41 0.80 28.86 1.76 +1997 8 24.95 3.94 27.75 2.69 29.31 0.82 28.69 1.94 +1997 9 24.69 3.92 27.82 2.88 29.54 1.03 28.89 2.19 +1997 10 24.64 3.57 28.09 3.15 29.51 1.00 29.14 2.50 +1997 11 25.85 4.11 28.40 3.35 29.45 1.00 29.13 2.52 +1997 12 27.08 4.18 28.53 3.32 29.27 0.93 29.04 2.48 +1998 1 28.12 3.58 28.71 3.06 29.06 0.91 28.98 2.43 +1998 2 28.82 2.90 28.86 2.48 28.90 0.82 28.71 1.97 +1998 3 29.24 2.87 29.10 1.97 28.83 0.66 28.66 1.43 +1998 4 28.45 2.88 29.16 1.74 28.77 0.38 28.64 0.98 +1998 5 27.36 2.94 28.53 1.42 28.87 0.18 28.47 0.70 +1998 6 25.19 2.12 27.04 0.57 28.46 -0.21 27.41 -0.12 +1998 7 23.61 1.64 25.60 -0.05 28.30 -0.31 26.52 -0.59 +1998 8 22.27 1.26 24.78 -0.28 27.99 -0.50 25.91 -0.84 +1998 9 21.31 0.54 24.19 -0.75 27.83 -0.68 25.66 -1.05 +1998 10 21.37 0.30 24.08 -0.86 27.51 -1.00 25.46 -1.19 +1998 11 21.60 -0.14 24.40 -0.66 27.41 -1.04 25.48 -1.12 +1998 12 22.81 -0.10 24.25 -0.96 27.19 -1.16 25.12 -1.45 +1999 1 24.23 -0.31 24.41 -1.24 26.89 -1.26 24.96 -1.59 +1999 2 25.73 -0.19 25.56 -0.82 26.90 -1.18 25.58 -1.16 +1999 3 26.47 0.10 26.81 -0.32 27.14 -1.04 26.43 -0.80 +1999 4 24.53 -1.04 26.90 -0.52 27.66 -0.73 26.92 -0.75 +1999 5 23.64 -0.78 26.55 -0.56 28.14 -0.55 26.99 -0.78 +1999 6 22.09 -0.98 25.89 -0.58 28.05 -0.62 26.66 -0.87 +1999 7 21.36 -0.61 25.03 -0.62 27.89 -0.72 26.28 -0.83 +1999 8 20.67 -0.34 24.36 -0.70 27.77 -0.73 25.82 -0.93 +1999 9 20.08 -0.69 23.91 -1.03 27.96 -0.56 25.77 -0.94 +1999 10 20.46 -0.61 23.77 -1.18 27.93 -0.58 25.62 -1.03 +1999 11 20.62 -1.12 23.72 -1.34 27.54 -0.91 25.20 -1.40 +1999 12 22.42 -0.48 23.76 -1.45 27.30 -1.05 24.97 -1.60 +2000 1 24.01 -0.53 24.12 -1.53 27.17 -0.99 24.88 -1.68 +2000 2 25.38 -0.54 25.35 -1.03 26.88 -1.20 25.23 -1.50 +2000 3 25.67 -0.70 26.78 -0.35 26.95 -1.22 26.27 -0.96 +2000 4 25.53 -0.04 27.46 0.04 27.40 -0.99 26.99 -0.68 +2000 5 24.27 -0.15 26.85 -0.26 27.90 -0.79 27.10 -0.67 +2000 6 22.93 -0.13 26.01 -0.46 28.25 -0.42 26.97 -0.56 +2000 7 21.47 -0.50 25.24 -0.41 28.41 -0.20 26.69 -0.41 +2000 8 20.07 -0.94 24.74 -0.31 28.28 -0.21 26.46 -0.29 +2000 9 20.64 -0.13 24.73 -0.21 28.37 -0.14 26.32 -0.39 +2000 10 20.90 -0.17 24.60 -0.34 28.27 -0.24 26.11 -0.53 +2000 11 20.67 -1.07 24.43 -0.62 28.06 -0.39 26.01 -0.59 +2000 12 22.08 -0.83 24.73 -0.48 27.66 -0.68 25.83 -0.74 +2001 1 24.24 -0.29 25.37 -0.29 27.49 -0.66 25.93 -0.63 +2001 2 26.11 0.20 26.38 0.01 27.38 -0.70 26.24 -0.49 +2001 3 26.89 0.52 27.31 0.18 27.68 -0.50 26.89 -0.35 +2001 4 25.99 0.42 27.52 0.09 28.16 -0.23 27.38 -0.28 +2001 5 23.98 -0.44 27.21 0.11 28.65 -0.04 27.70 -0.08 +2001 6 22.71 -0.36 26.44 -0.03 28.91 0.24 27.60 0.07 +2001 7 21.48 -0.50 25.63 -0.02 29.12 0.51 27.37 0.26 +2001 8 20.24 -0.77 25.03 -0.03 28.98 0.48 26.95 0.20 +2001 9 19.73 -1.04 24.49 -0.45 29.11 0.60 26.74 0.04 +2001 10 20.14 -0.93 24.59 -0.36 29.08 0.58 26.66 0.02 +2001 11 20.68 -1.06 24.53 -0.53 28.93 0.48 26.47 -0.13 +2001 12 21.73 -1.17 24.79 -0.42 28.77 0.42 26.32 -0.25 +2002 1 24.09 -0.45 25.23 -0.42 28.84 0.69 26.49 -0.07 +2002 2 26.23 0.31 26.22 -0.15 28.70 0.63 26.83 0.09 +2002 3 27.39 1.01 27.51 0.38 28.62 0.44 27.48 0.25 +2002 4 26.44 0.87 27.71 0.28 29.14 0.75 28.00 0.34 +2002 5 25.29 0.87 27.68 0.58 29.61 0.92 28.44 0.66 +2002 6 23.28 0.21 27.30 0.83 29.58 0.91 28.48 0.95 +2002 7 21.64 -0.34 26.31 0.67 29.53 0.92 28.03 0.93 +2002 8 21.32 0.31 25.62 0.56 29.41 0.92 27.67 0.92 +2002 9 21.42 0.65 25.69 0.75 29.41 0.90 27.75 1.05 +2002 10 21.85 0.78 25.94 1.00 29.52 1.01 27.95 1.31 +2002 11 22.85 1.11 26.43 1.37 29.66 1.21 28.14 1.54 +2002 12 24.05 1.15 26.62 1.41 29.57 1.23 28.08 1.52 +2003 1 25.01 0.47 26.68 1.02 29.09 0.94 27.68 1.12 +2003 2 26.27 0.35 27.01 0.63 28.94 0.86 27.63 0.89 +2003 3 26.91 0.53 27.48 0.35 28.95 0.78 27.84 0.61 +2003 4 25.41 -0.15 27.22 -0.20 28.94 0.55 27.75 0.08 +2003 5 23.24 -1.18 26.44 -0.66 29.01 0.32 27.42 -0.36 +2003 6 22.15 -0.91 26.20 -0.27 29.17 0.50 27.56 0.03 +2003 7 21.50 -0.48 26.16 0.52 29.19 0.58 27.66 0.55 +2003 8 21.25 0.24 25.65 0.59 29.09 0.59 27.32 0.57 +2003 9 20.75 -0.02 25.20 0.26 29.05 0.54 27.10 0.40 +2003 10 21.70 0.63 25.58 0.63 29.22 0.71 27.33 0.69 +2003 11 22.33 0.59 25.85 0.80 29.08 0.62 27.13 0.53 +2003 12 23.60 0.70 26.07 0.86 28.97 0.63 27.04 0.47 +2004 1 25.09 0.55 26.23 0.58 28.71 0.56 26.90 0.35 +2004 2 26.47 0.55 26.81 0.44 28.61 0.53 27.04 0.31 +2004 3 26.12 -0.26 27.47 0.34 28.53 0.36 27.38 0.15 +2004 4 25.27 -0.30 27.62 0.19 28.82 0.43 27.91 0.24 +2004 5 23.44 -0.98 26.96 -0.14 29.18 0.49 28.02 0.24 +2004 6 22.54 -0.53 26.55 0.08 29.24 0.57 27.93 0.40 +2004 7 21.26 -0.72 25.94 0.30 29.36 0.75 27.86 0.75 +2004 8 20.79 -0.22 25.47 0.41 29.47 0.98 27.67 0.92 +2004 9 20.83 0.06 25.42 0.48 29.54 1.02 27.58 0.88 +2004 10 21.56 0.49 25.64 0.70 29.53 1.03 27.53 0.89 +2004 11 22.88 1.14 25.84 0.79 29.49 1.04 27.37 0.77 +2004 12 23.39 0.49 25.95 0.74 29.41 1.07 27.38 0.81 +2005 1 24.61 0.07 26.10 0.45 29.23 1.08 27.32 0.76 +2005 2 25.09 -0.83 26.38 0.00 28.91 0.83 27.17 0.43 +2005 3 25.23 -1.14 27.12 -0.01 28.89 0.71 27.63 0.40 +2005 4 25.21 -0.36 27.62 0.20 29.03 0.64 28.02 0.36 +2005 5 24.31 -0.11 27.56 0.46 29.24 0.55 28.30 0.52 +2005 6 22.60 -0.47 26.86 0.39 29.20 0.53 27.99 0.46 +2005 7 21.61 -0.37 26.07 0.42 28.93 0.32 27.45 0.34 +2005 8 20.47 -0.54 25.44 0.38 28.78 0.29 27.11 0.36 +2005 9 20.00 -0.77 24.88 -0.05 28.85 0.34 26.79 0.09 +2005 10 19.89 -1.18 24.83 -0.12 28.85 0.34 26.70 0.06 +2005 11 20.61 -1.13 23.92 -1.14 28.65 0.19 26.13 -0.48 +2005 12 22.20 -0.70 24.01 -1.20 28.34 0.00 25.80 -0.77 +2006 1 24.76 0.22 24.66 -0.99 27.91 -0.25 25.68 -0.87 +2006 2 26.52 0.60 26.02 -0.35 27.58 -0.50 26.15 -0.59 +2006 3 26.22 -0.15 26.83 -0.30 27.82 -0.35 26.80 -0.43 +2006 4 24.29 -1.28 27.18 -0.24 28.36 -0.04 27.54 -0.13 +2006 5 23.84 -0.58 27.30 0.19 28.91 0.21 27.91 0.13 +2006 6 22.82 -0.24 26.73 0.27 29.15 0.48 27.82 0.29 +2006 7 22.20 0.22 25.93 0.28 29.14 0.53 27.36 0.25 +2006 8 21.89 0.88 25.68 0.62 29.20 0.71 27.25 0.50 +2006 9 21.93 1.16 25.77 0.83 29.30 0.79 27.32 0.61 +2006 10 22.46 1.39 26.00 1.06 29.43 0.92 27.47 0.83 +2006 11 22.61 0.87 26.39 1.33 29.55 1.09 27.81 1.21 +2006 12 24.15 1.24 26.63 1.42 29.45 1.11 27.86 1.29 +2007 1 25.82 1.28 26.68 1.03 28.98 0.82 27.36 0.81 +2007 2 26.81 0.90 26.56 0.18 28.69 0.61 26.98 0.24 +2007 3 26.41 0.04 26.77 -0.36 28.81 0.64 27.25 0.02 +2007 4 24.96 -0.61 26.93 -0.50 28.88 0.49 27.56 -0.10 +2007 5 23.05 -1.37 26.40 -0.70 28.90 0.21 27.54 -0.23 +2007 6 21.61 -1.46 26.11 -0.35 28.92 0.25 27.54 0.01 +2007 7 21.05 -0.93 25.14 -0.51 28.80 0.19 26.99 -0.12 +2007 8 19.95 -1.06 24.24 -0.82 28.57 0.08 26.41 -0.34 +2007 9 19.85 -0.91 23.84 -1.10 28.21 -0.31 25.86 -0.84 +2007 10 19.31 -1.76 23.85 -1.09 28.09 -0.42 25.73 -0.92 +2007 11 19.82 -1.92 23.76 -1.30 27.90 -0.56 25.47 -1.14 +2007 12 21.15 -1.76 23.91 -1.30 27.70 -0.64 25.40 -1.17 +2008 1 24.24 -0.30 24.42 -1.23 27.18 -0.98 25.06 -1.50 +2008 2 26.39 0.47 25.34 -1.04 26.79 -1.29 25.19 -1.55 +2008 3 26.91 0.53 26.54 -0.59 27.22 -0.95 26.16 -1.07 +2008 4 25.68 0.12 27.36 -0.07 27.53 -0.86 26.97 -0.70 +2008 5 24.43 0.00 27.15 0.05 27.93 -0.76 27.19 -0.58 +2008 6 23.19 0.12 26.49 0.02 28.10 -0.57 27.15 -0.38 +2008 7 23.02 1.05 26.01 0.36 28.18 -0.43 27.00 -0.11 +2008 8 22.14 1.13 25.56 0.51 28.27 -0.22 26.81 0.06 +2008 9 21.60 0.84 25.36 0.42 28.25 -0.27 26.70 0.00 +2008 10 21.39 0.32 25.48 0.53 28.23 -0.28 26.66 0.02 +2008 11 21.54 -0.20 25.25 0.20 28.16 -0.29 26.52 -0.08 +2008 12 22.73 -0.18 24.59 -0.62 27.83 -0.52 25.78 -0.79 +2009 1 24.39 -0.15 25.26 -0.39 27.47 -0.69 25.69 -0.87 +2009 2 25.53 -0.38 26.16 -0.22 27.34 -0.74 26.02 -0.71 +2009 3 25.48 -0.89 26.62 -0.51 27.85 -0.32 26.66 -0.57 +2009 4 25.84 0.27 27.38 -0.04 28.36 -0.03 27.53 -0.13 +2009 5 24.95 0.52 27.57 0.47 29.09 0.40 28.10 0.33 +2009 6 24.09 1.02 27.15 0.68 29.15 0.48 28.06 0.53 +2009 7 23.09 1.12 26.56 0.91 29.13 0.52 27.88 0.78 +2009 8 22.03 1.02 25.90 0.84 29.20 0.71 27.51 0.76 +2009 9 21.48 0.71 25.74 0.80 29.24 0.73 27.48 0.78 +2009 10 21.64 0.57 25.82 0.87 29.68 1.17 27.73 1.09 +2009 11 21.99 0.25 26.13 1.07 29.90 1.44 28.17 1.57 +2009 12 23.21 0.31 26.69 1.48 29.80 1.45 28.51 1.94 +2010 1 24.70 0.17 26.86 1.21 29.58 1.42 28.32 1.76 +2010 2 26.16 0.24 27.37 1.00 29.25 1.18 28.19 1.45 +2010 3 26.54 0.16 28.04 0.91 29.18 1.01 28.46 1.23 +2010 4 26.04 0.47 28.08 0.66 29.28 0.89 28.49 0.82 +2010 5 24.75 0.33 27.34 0.24 29.27 0.57 28.13 0.36 +2010 6 23.26 0.19 26.32 -0.15 28.76 0.09 27.35 -0.18 +2010 7 21.11 -0.87 24.95 -0.70 28.33 -0.28 26.44 -0.67 +2010 8 19.49 -1.52 24.21 -0.85 27.82 -0.68 25.70 -1.05 +2010 9 19.28 -1.49 23.83 -1.11 27.47 -1.05 25.36 -1.34 +2010 10 19.73 -1.34 23.67 -1.28 27.35 -1.16 25.25 -1.40 +2010 11 20.44 -1.30 23.68 -1.37 27.47 -0.99 25.20 -1.41 +2010 12 22.07 -0.83 24.00 -1.21 27.54 -0.81 25.29 -1.28 diff --git a/statsmodels/datasets/engel/__init__.py b/statsmodels/datasets/engel/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/engel/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/engel/data.py b/statsmodels/datasets/engel/data.py new file mode 100644 index 0000000..b11f260 --- /dev/null +++ b/statsmodels/datasets/engel/data.py @@ -0,0 +1,57 @@ +"""Name of dataset.""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """This is public domain.""" +TITLE = """Engel (1857) food expenditure data""" +SOURCE = """ +This dataset was used in Koenker and Bassett (1982) and distributed alongside +the ``quantreg`` package for R. + +Koenker, R. and Bassett, G (1982) Robust Tests of Heteroscedasticity based on +Regression Quantiles; Econometrica 50, 43-61. + +Roger Koenker (2012). quantreg: Quantile Regression. R package version 4.94. +http://CRAN.R-project.org/package=quantreg +""" + +DESCRSHORT = """Engel food expenditure data.""" + +DESCRLONG = """Data on income and food expenditure for 235 working class households in 1857 Belgium.""" + +#suggested notes +NOTE = """:: + + Number of observations: 235 + Number of variables: 2 + Variable name definitions: + income - annual household income (Belgian francs) + foodexp - annual household food expenditure (Belgian francs) +""" + +def load(as_pandas=None): + """ + Load the data and return a Dataset class instance. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def load_pandas(): + data = _get_data() + return du.process_pandas(data, endog_idx=0, exog_idx=None) + + +def _get_data(): + return du.load_csv(__file__, 'engel.csv') diff --git a/statsmodels/datasets/engel/engel.csv b/statsmodels/datasets/engel/engel.csv new file mode 100644 index 0000000..0fcf473 --- /dev/null +++ b/statsmodels/datasets/engel/engel.csv @@ -0,0 +1,236 @@ +"income","foodexp" +420.157650843928,255.839424594576 +541.411706721205,310.958667059145 +901.157456651663,485.680014171085 +639.08022868883,402.997355544163 +750.875605828476,495.560774933776 +945.7989310482,633.797815132393 +829.397886847186,630.756567705217 +979.164835837914,700.440904266032 +1309.87894037831,830.95862150535 +1492.39874437426,815.360217290461 +502.838980218067,338.001387329587 +616.71684724229,412.361338428638 +790.922511291545,520.000617981121 +555.878641643074,452.401472907332 +713.44118368415,512.720057836885 +838.756132722629,658.839530303595 +535.076645900387,392.599496749012 +596.440805359932,443.558633799595 +924.561896582212,640.11637771341 +487.758301817955,333.839386975747 +692.639734238467,466.958318528848 +997.876977824175,543.396904263231 +506.999491179525,317.719843756484 +654.158711401758,424.320896352573 +933.919270183382,518.961656053407 +433.681329252018,338.001387329587 +587.596213341684,419.641174631375 +896.474635643808,476.320048933563 +454.478223782524,386.36016331012 +584.998919370362,423.278349805554 +800.799016617394,503.35717119023 +502.436869899465,354.638868545299 +713.519666530832,497.31816882899 +906.000628725279,588.519463958722 +880.596923786325,654.597144597117 +796.828919368547,550.727427597965 +854.87905261442,528.376976714303 +1167.37159427026,640.481348055373 +523.800035579844,401.320355546637 +670.779185433114,435.999021900918 +377.058368850099,276.560609645838 +851.543001748297,588.348818059025 +1121.09369365137,664.19780220393 +625.517933400268,444.860166410776 +805.537696174017,462.899514863823 +558.581201465033,377.779238546012 +884.400487319312,553.15043561635 +1257.49886576834,810.896154761447 +2051.17894099901,1067.95405614074 +1466.33299214604,1049.87879168732 +730.098896774438,522.701209676143 +800.799016617394,572.080662617684 +1245.69638760971,907.396944580766 +1201.00021368196,811.57759369573 +634.400209148622,427.797520201042 +956.231463138833,649.998464123521 +1148.60104702955,860.600154559902 +1768.82364982203,1143.42108582835 +2822.53303466609,2032.67919020832 +922.354832141967,590.618327009967 +2293.19197144236,1570.39113831708 +627.472597042135,483.480024661708 +889.980898378682,600.480399087121 +1162.19995392922,696.202105745481 +1197.07935707754,774.796179057776 +530.797185462728,390.598430399482 +1142.15259256708,612.56190089616 +1088.00388697846,708.762151593178 +484.661156316503,296.919185772441 +1536.02010067662,1071.46269646941 +678.897392141278,496.597580037315 +671.880165854403,503.39744137471 +690.468256477202,357.641110879089 +860.694825783725,430.337592716917 +873.309484596291,624.699041398883 +894.459835214087,582.54125094185 +1148.64699199033,580.221542246938 +926.876192988813,543.88074278423 +839.041358293354,588.637179622688 +829.49742056551,627.99989545798 +1264.00432957802,712.101174262357 +1937.97714636527,968.394940061335 +698.831741432851,482.581587621304 +920.419919363967,593.169385581544 +1897.57113999412,1033.56575426925 +891.682386298282,693.679473449282 +889.6783563083,693.679473449282 +1221.48181114807,761.279065822776 +544.599139402161,361.398056338879 +1031.44911476975,628.452218199356 +1462.94967217323,771.44856441849 +830.435282442915,757.118666447887 +975.04146665886,821.59699408795 +1337.99833996025,1022.3201704203 +867.64270523161,679.440727360101 +725.745933703277,538.749115686801 +989.005606041026,679.998097246959 +1525.00047421177,977.003270959677 +672.196023753147,561.201488176248 +923.397682201603,728.399746623589 +472.321548280698,372.318622584609 +590.760092419618,361.52095256921 +940.921768902254,517.919590751206 +643.357141462033,459.817650989876 +2551.66151377579,863.919851470995 +1795.32258882792,831.440717300088 +1165.77339020587,534.761043791083 +815.62117431089,392.050242021584 +1264.20658645087,934.975195444102 +1095.40561684263,813.308096301318 +447.447852411217,263.709996170628 +1178.97417954918,769.083849021127 +975.802295687602,630.586286420944 +1017.85220007186,645.987400679307 +423.879832013577,319.558386349475 +558.776739102636,348.451830104442 +943.248718270872,614.506803163417 +1348.30024452767,662.009562038758 +2340.61735387973,1504.37077491258 +587.179168098792,406.218015716283 +1540.97405699008,692.1688993212 +1115.84807481956,588.137050604953 +1044.68428590432,511.260885979623 +1389.79286912095,700.559989341702 +2497.78595383858,1301.14509754583 +1585.38094296753,879.066017413729 +1862.04383602348,912.885078250154 +2008.8546243469,1509.7811718462 +697.309947594492,484.060548936204 +571.251746766114,399.670317095029 +598.346489479165,444.100105563446 +461.097722534667,248.810111222236 +977.110747230569,527.801359578015 +883.984916757004,500.631349055309 +718.359399343153,436.810734740578 +543.897059451262,374.799044124691 +1587.34803468162,726.392135101241 +4957.81302447901,1827.1999644396 +969.68376220836,523.49108470832 +419.998021268147,334.99982183865 +561.998960360707,473.200883889103 +689.598814337616,581.202945705675 +1398.5202607169,929.75396743285 +820.816847571835,591.197416678028 +875.171616264683,637.548275219478 +1392.44991016741,674.950935444337 +1256.31737222348,776.758895179758 +1362.85902988814,959.516968477919 +1999.25521962472,1250.96433391432 +1209.47299210597,737.820079380279 +1125.0356465964,810.677242354166 +1827.40096749065,983.000864895715 +1014.15395295671,708.896829195949 +880.394409783857,633.120014158391 +2432.39099224122,1424.80465628899 +1177.85468592228,830.95862150535 +1222.5938655042,925.579474233555 +1519.58112468928,1162.00239672989 +687.663761691575,383.457962724518 +953.11922427465,621.117329201764 +953.11922427465,621.117329201764 +953.11922427465,621.117329201764 +939.04180595405,548.600231233027 +1283.40245730726,745.235294456105 +1511.57888086542,837.80049554801 +1342.58212809281,795.34024163682 +511.797991841133,418.597567936084 +689.798826994207,508.797449887606 +1532.30742618103,883.278011623353 +1056.08082482784,742.527569034242 +387.319525632704,242.32020192074 +387.319525632704,242.32020192074 +410.998678844171,266.00098186588 +832.755431984518,614.75880260907 +614.998605300573,385.318397885378 +887.465812960725,515.619969025557 +1024.81767735549,708.478703425954 +1006.43533940422,734.235630810297 +725.999989237198,433.000983776039 +494.417350707113,327.418772037758 +748.641327251627,429.039933638385 +987.64171960278,619.640827692018 +788.09607104789,400.798978053224 +831.79831368624,620.800640126449 +1139.49447493599,819.996440995918 +507.516894491359,360.878017655466 +576.197221195524,395.760804612775 +696.59905406528,442.000052121661 +650.817978373872,404.03843113149 +949.580207412905,670.799309110531 +497.119281341608,297.5701513364 +570.167398903935,353.488163131684 +724.730600295316,383.93758487932 +408.339934376479,284.800803268761 +638.671348198183,431.099964756245 +1225.78900333424,801.351758612919 +715.370077715236,448.451258996436 +800.470756318541,577.911070749254 +975.597398720442,570.521012300081 +1613.75654835121,865.320535878418 +608.501878790717,444.557764325978 +958.663378279956,680.419826789901 +835.942641428986,576.277894453487 +873.737511101673,631.798175131743 +951.44320976533,608.641850318947 +473.002181248345,300.999920310599 +601.003044352051,377.998414059123 +713.99788489267,397.001476569931 +829.29836507219,588.519463958722 +959.795268750367,681.761575036767 +1212.96129506839,807.360270100159 +958.874307424532,696.801097085781 +1129.44314702273,811.196241851397 +1943.04187331083,1305.72014134299 +539.638785503439,442.000052121661 +463.599021125583,353.601297444411 +562.640004501253,468.000797511221 +736.758383070776,526.75734679978 +1415.44606403432,890.239030266526 +2208.78970565549,1318.80328223672 +636.000913716338,331.000537750629 +759.401026863119,416.401525383919 +1078.83819961899,596.840554600565 +499.751012804117,408.499218009175 +1020.02253584507,775.020902533032 +1595.1610788589,1138.16204602323 +776.595792938105,485.519766208776 +1230.92352504251,772.761142353133 +1807.95201459536,993.96301727137 +415.440747985411,305.438973730216 +440.51742415637,306.519078570937 +541.200597324592,299.199327967538 +581.35989168777,468.000797511221 +743.077242789534,522.601905880464 +1057.67671146451,750.320163419201 diff --git a/statsmodels/datasets/fair/__init__.py b/statsmodels/datasets/fair/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/fair/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/fair/data.py b/statsmodels/datasets/fair/data.py new file mode 100644 index 0000000..7af0918 --- /dev/null +++ b/statsmodels/datasets/fair/data.py @@ -0,0 +1,77 @@ +"""Fair's Extramarital Affairs Data""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """Included with permission of the author.""" +TITLE = """Affairs dataset""" +SOURCE = """ +Fair, Ray. 1978. "A Theory of Extramarital Affairs," `Journal of Political +Economy`, February, 45-61. + +The data is available at http://fairmodel.econ.yale.edu/rayfair/pdf/2011b.htm +""" + +DESCRSHORT = """Extramarital affair data.""" + +DESCRLONG = """Extramarital affair data used to explain the allocation +of an individual's time among work, time spent with a spouse, and time +spent with a paramour. The data is used as an example of regression +with censored data.""" + +#suggested notes +NOTE = """:: + + Number of observations: 6366 + Number of variables: 9 + Variable name definitions: + + rate_marriage : How rate marriage, 1 = very poor, 2 = poor, 3 = fair, + 4 = good, 5 = very good + age : Age + yrs_married : No. years married. Interval approximations. See + original paper for detailed explanation. + children : No. children + religious : How relgious, 1 = not, 2 = mildly, 3 = fairly, + 4 = strongly + educ : Level of education, 9 = grade school, 12 = high + school, 14 = some college, 16 = college graduate, + 17 = some graduate school, 20 = advanced degree + occupation : 1 = student, 2 = farming, agriculture; semi-skilled, + or unskilled worker; 3 = white-colloar; 4 = teacher + counselor social worker, nurse; artist, writers; + technician, skilled worker, 5 = managerial, + administrative, business, 6 = professional with + advanced degree + occupation_husb : Husband's occupation. Same as occupation. + affairs : measure of time spent in extramarital affairs + + See the original paper for more details. +""" + + +def load(as_pandas=None): + """ + Load the data and return a Dataset class instance. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def load_pandas(): + data = _get_data() + return du.process_pandas(data, endog_idx=8, exog_idx=None) + + +def _get_data(): + return du.load_csv(__file__, 'fair.csv', convert_float=True) diff --git a/statsmodels/datasets/fair/fair.csv b/statsmodels/datasets/fair/fair.csv new file mode 100644 index 0000000..cc8d635 --- /dev/null +++ b/statsmodels/datasets/fair/fair.csv @@ -0,0 +1,6367 @@ +"rate_marriage","age","yrs_married","children","religious","educ","occupation","occupation_husb","affairs" +3,32,9,3,3,17,2,5,0.1111111 +3,27,13,3,1,14,3,4,3.2307692 +4,22,2.5,0,1,16,3,5,1.3999996 +4,37,16.5,4,3,16,5,5,0.7272727 +5,27,9,1,1,14,3,4,4.666666 +4,27,9,0,2,14,3,4,4.666666 +5,37,23,5.5,2,12,5,4,0.8521735 +5,37,23,5.5,2,12,2,3,1.826086 +3,22,2.5,0,2,12,3,3,4.7999992 +3,27,6,0,1,16,3,5,1.333333 +2,27,6,2,1,16,3,5,3.2666645 +5,27,6,2,3,14,3,5,2.041666 +3,37,16.5,5.5,1,12,2,3,0.4848484 +5,27,6,0,2,14,3,2,2 +4,22,6,1,1,14,4,4,3.2666645 +4,37,9,2,2,14,3,6,1.3611107 +4,27,6,1,1,12,3,5,2 +1,37,23,5.5,4,14,5,2,1.826086 +2,42,23,2,2,20,4,4,1.826086 +4,37,6,0,2,16,5,4,2.041666 +5,22,2.5,0,2,14,3,4,7.8399963 +3,37,16.5,5.5,2,9,3,2,2.545454 +3,42,23,5.5,3,12,5,4,0.5326087 +2,27,9,2,4,20,3,4,0.6222222 +4,27,6,1,2,12,5,4,0.5833333 +5,27,2.5,0,3,16,4,1,4.7999992 +2,27,6,2,2,12,2,5,0.1666666 +5,37,13,1,3,12,3,4,0.6153846 +2,32,16.5,2,2,12,4,2,1.1878777 +3,27,6,1,1,14,3,6,11.1999989 +3,32,16.5,4,3,14,5,5,1.1878777 +3,27,9,2,1,14,3,4,2.1777763 +3,37,16.5,3,3,14,3,2,0.4848484 +4,32,16.5,5.5,4,12,2,4,0.7272727 +5,42,16.5,4,3,16,4,6,0.7272727 +3,27,9,2,2,12,5,2,1.333333 +3,17.5,0.5,0,1,12,3,2,7 +4,42,23,5.5,2,20,3,2,0.5217391 +5,37,16.5,3,3,12,3,5,0.2121212 +4,22,2.5,1,2,14,3,5,0.4 +4,27,2.5,0,2,16,4,1,1.3999996 +4,22,2.5,0,2,14,3,6,3.1999998 +4,37,13,3,2,16,4,5,1.5076914 +4,22,2.5,0,2,16,3,4,7.8399963 +4,22,2.5,0,1,14,1,2,7.8399963 +5,22,2.5,0,3,12,3,2,0.4 +5,22,2.5,0,3,16,4,5,4.8999996 +3,42,23,4,3,16,5,5,0.0434783 +5,32,13,3,3,14,4,4,0.0769231 +5,22,6,2,2,14,3,4,0.5833333 +3,27,2.5,1,4,17,4,6,4.7999992 +2,42,23,3,3,14,3,5,0.8521735 +4,22,2.5,0,1,17,6,6,4.7999992 +2,42,23,3,3,14,3,5,2.9217386 +4,42,23,2,2,14,4,4,0.5217391 +4,42,23,3,3,12,5,4,0.5326087 +4,37,16.5,2,3,14,3,4,0.4848484 +4,27,2.5,0,2,20,4,5,7.8399963 +2,32,9,2,2,12,2,2,1.333333 +4,42,13,0,1,14,3,4,1.5076914 +4,22,6,2,1,12,3,4,1.333333 +5,32,16.5,3,3,14,2,4,1.1878777 +4,42,13,0,2,12,3,2,1.5076914 +5,27,9,1,3,14,5,5,1.333333 +5,22,6,2,2,12,2,5,7 +2,27,16.5,2,3,16,4,5,0.7272727 +5,37,13,2,1,12,3,4,1.5076914 +5,27,6,0,2,14,3,4,2.041666 +2,27,2.5,1,1,12,2,3,26.8799896 +5,42,23,5.5,4,20,5,4,0.5326087 +5,27,6,0,2,16,5,2,2 +5,37,16.5,3,2,14,3,5,0.2121212 +2,32,9,2,2,16,3,5,1.333333 +3,37,16.5,5.5,3,12,5,5,2.545454 +5,27,6,2,2,12,3,4,0.1666666 +5,32,16.5,3,1,12,4,4,0.4848484 +5,27,9,2,1,14,5,1,1.333333 +4,22,2.5,0,2,16,5,5,0.4 +5,32,16.5,2,4,14,5,2,0.4848484 +2,22,6,2,2,14,2,5,0.1666666 +3,32,13,3,1,12,4,5,1.5076914 +5,32,16.5,3,2,12,3,4,0.0606061 +3,27,6,2,1,14,3,6,2.041666 +5,22,2.5,0,1,20,4,4,0.4 +3,32,9,2,3,14,3,5,0.8888888 +3,22,2.5,1,2,14,3,2,4.7999992 +3,22,2.5,0,2,16,3,4,4.7999992 +5,27,9,2,1,16,4,6,1.333333 +3,42,23,2,2,12,2,2,0.1521739 +3,37,16.5,3,2,17,3,2,1.1878777 +5,32,13,2,2,12,2,6,0.9423077 +1,27,13,2,2,12,4,4,1.5076914 +5,27,2.5,0,2,14,3,2,0.4 +5,27,9,0,1,14,4,4,0.1111111 +5,32,13,2,2,16,3,3,0.9423077 +4,27,9,2,2,14,3,5,0.3888888 +3,22,2.5,1,3,14,5,4,4.8999996 +2,37,23,2,2,12,5,5,0.5326087 +2,27,6,2,1,14,3,5,2.041666 +4,27,2.5,1,2,12,5,2,4.8999996 +3,37,13,5.5,2,12,5,5,5.1692305 +5,37,16.5,4,1,12,3,6,1.696969 +5,22,2.5,0,1,14,3,5,1.3999996 +4,42,13,0,1,14,5,5,0.0769231 +5,27,9,1,1,14,5,5,2.1777763 +4,22,2.5,0,1,14,3,4,1.3999996 +4,22,2.5,1,2,14,5,4,7.8399963 +4,27,6,2,3,16,4,6,0.5833333 +2,32,16.5,1,2,14,3,5,2.7151508 +3,27,13,2,1,14,3,4,0.9423077 +4,22,0.5,0,2,12,3,2,7 +5,27,6,1,1,16,4,3,3.2666645 +2,27,9,2,2,14,3,5,4.666666 +3,27,9,2,2,12,3,4,2.1777763 +4,32,16.5,3,3,12,2,3,0.4848484 +5,22,2.5,0,1,12,3,3,1.3999996 +4,22,2.5,1,2,14,4,4,3.1999998 +1,22,2.5,0,2,9,2,4,11.1999998 +3,32,13,2,1,20,6,6,1.5076914 +5,32,9,1,2,14,3,5,1.333333 +5,27,2.5,0,1,20,6,4,1.3999996 +4,27,9,2,2,14,2,5,0.3888888 +4,27,6,0,3,12,5,2,2 +2,22,2.5,0,3,14,3,2,4.8999996 +3,27,9,2,3,17,4,6,1.3611107 +4,27,6,2,1,14,3,4,2.041666 +5,22,2.5,1,1,12,2,2,1.3999996 +4,27,16.5,4,3,12,2,6,0.2121212 +2,27,6,1,2,14,4,3,3.2666645 +2,32,6,1,1,17,4,4,7.4666672 +5,27,6,2,2,16,4,3,0.5833333 +4,42,23,3,3,17,4,4,0.5217391 +4,32,9,2,1,16,4,6,0.1111111 +3,42,23,4,3,14,4,3,0.5217391 +5,27,6,2,1,12,5,2,2 +2,42,23,4,4,20,4,5,0.1521739 +3,32,6,0,2,20,4,5,4.666666 +5,27,2.5,0,2,14,3,2,1.3999996 +2,42,16.5,3,3,12,3,5,1.1878777 +4,37,23,3,2,12,5,4,1.826086 +3,27,2.5,0,2,17,4,4,1.3999996 +3,32,13,3,3,20,4,6,3.2307692 +3,27,2.5,0,2,14,3,4,4.7999992 +3,42,16.5,2,1,16,3,5,1.1878777 +4,22,2.5,0,2,14,5,5,0.4 +5,27,6,0,3,14,3,5,0.5833333 +3,22,2.5,0,1,12,2,4,7.8399963 +4,27,6,0,3,14,2,4,11.1999989 +3,27,9,2,2,16,3,4,1.3611107 +2,27,9,1,2,14,2,2,4.9777775 +3,22,2.5,0,3,12,3,3,4.7999992 +4,32,16.5,4,4,14,3,5,2.7151508 +5,32,2.5,2,2,14,3,4,0.4 +4,27,2.5,0,2,14,3,5,0.4 +5,32,9,3,3,16,4,4,0.1111111 +3,32,13,2,2,12,3,5,0.2692307 +3,32,16.5,3,3,12,3,2,0.7272727 +5,42,23,2,2,14,5,5,0.5217391 +3,27,16.5,4,3,14,4,2,0.7424242 +3,32,16.5,4,2,20,4,4,0.7272727 +4,22,2.5,2,2,14,5,2,4.7999992 +5,27,6,0,1,12,3,4,7.4666672 +4,37,16.5,3,4,16,5,5,0.2121212 +3,22,2.5,0,2,12,3,5,1.3999996 +4,32,13,2,2,14,3,5,1.5076914 +5,42,23,5.5,3,17,4,4,0.5217391 +2,27,6,2,3,12,2,2,1.333333 +5,22,2.5,1,2,16,3,6,1.3999996 +3,42,23,2,3,12,2,2,0.5326087 +5,42,23,3,1,14,3,5,1.826086 +4,22,2.5,0,3,12,3,4,4.8999996 +3,27,9,1,4,14,5,5,0.1111111 +2,37,23,3,3,12,2,4,4.173913 +3,32,9,3,3,14,4,5,0.3888888 +5,37,16.5,4,3,12,3,4,1.1878777 +3,27,9,2,2,12,5,2,1.333333 +3,27,6,1,2,17,2,2,1.333333 +5,22,2.5,0,3,14,3,3,1.3999996 +5,27,6,0,2,17,4,5,1.333333 +4,22,2.5,0,2,12,4,2,4.8999996 +4,27,6,0,2,12,3,4,4.666666 +3,32,9,1,2,12,3,3,0.1111111 +1,42,23,4,3,12,3,5,0.8521735 +2,22,6,2,2,12,3,4,1.333333 +4,32,16.5,2,2,12,2,2,0.4848484 +4,32,13,3,3,14,2,2,0.9423077 +5,27,9,2,1,12,3,3,0.3888888 +3,42,23,3,2,12,3,2,0.5217391 +3,37,16.5,1,3,20,6,6,2.7151508 +5,32,13,2,1,12,5,2,0.9423077 +4,27,13,3,1,12,4,2,3.4461536 +2,37,13,0,2,14,3,5,0.9230769 +3,27,9,1,1,12,2,2,3.1111107 +5,27,6,0,1,14,5,5,3.2666645 +2,42,23,2,3,12,5,2,0.8521735 +5,27,6,0,2,16,3,4,0.5833333 +4,22,2.5,0,4,16,5,4,7.8399963 +5,22,2.5,0,2,16,4,4,1.3999996 +5,42,13,0,3,12,3,2,1.5076914 +4,22,2.5,1,1,16,3,4,1.3999996 +4,32,9,1,3,16,3,5,1.3611107 +4,27,9,2,2,12,4,2,0.3888888 +5,27,6,0,1,16,5,2,2.041666 +4,32,16.5,3,2,14,5,4,2.545454 +2,42,2.5,0,4,20,6,5,4.7999992 +2,42,23,5.5,4,14,3,6,0.3478261 +4,42,23,4,2,12,3,2,0.3478261 +3,22,2.5,0,3,16,5,5,4.7999992 +2,22,2.5,0,3,14,3,5,1.3999996 +4,22,2.5,0,3,14,3,3,4.7999992 +4,32,16.5,4,3,14,4,4,0.2121212 +5,32,13,2,4,17,4,5,0.9423077 +4,32,13,3,4,12,3,5,1.5076914 +5,27,9,2,1,14,4,4,1.3611107 +4,27,6,1,4,16,3,4,0.5833333 +4,27,9,2,3,12,2,4,1.333333 +1,37,16.5,3,2,17,4,4,0.7424242 +3,27,9,3,2,12,4,5,1.3611107 +2,27,6,0,2,14,3,4,4.666666 +3,22,2.5,1,2,14,2,2,25.5999908 +4,22,2.5,1,3,12,3,4,4.8999996 +4,27,2.5,0,2,14,4,4,1.3999996 +1,42,23,2,3,12,3,5,0.5217391 +5,27,6,2,4,14,5,5,3.2666645 +5,27,6,0,1,12,4,2,0.5833333 +4,37,23,2,3,12,3,5,0.1521739 +4,22,6,2,2,12,3,4,0.1666666 +1,32,13,1,3,14,3,1,0.9423077 +5,22,6,1,1,16,3,5,0.5833333 +5,27,6,0,1,14,3,5,2 +5,27,6,1,1,17,4,5,3.2666645 +4,37,16.5,1,2,14,2,5,1.1878777 +4,27,9,2,2,12,2,2,2.1777763 +4,42,23,4,1,12,3,4,0.1521739 +4,32,13,0,3,12,2,2,2.1538458 +5,32,13,2,3,12,2,2,0.9230769 +4,42,23,4,1,17,4,4,0.8521735 +4,37,23,4,2,14,4,3,0.5326087 +4,32,16.5,2,2,14,3,6,1.1878777 +4,27,13,4,3,12,2,4,3.2307692 +5,37,23,3,2,12,3,2,0.1521739 +2,32,13,0,3,9,6,2,0.0769231 +5,32,13,2,1,14,4,6,3.4461536 +4,27,6,1,2,14,4,2,0.1666666 +5,27,2.5,0,3,20,4,5,4.7999992 +2,42,23,3,3,14,4,2,0.5217391 +3,27,6,0,1,14,3,2,0.5833333 +4,27,6,1,2,12,3,4,2.041666 +2,22,2.5,0,3,12,3,3,3.1999998 +3,27,2.5,0,3,12,2,2,7.8399963 +4,42,23,2,2,17,5,2,0.8521735 +5,32,13,2,1,14,2,5,0.9230769 +5,32,13,0,1,12,5,4,2.1538458 +4,27,9,2,2,16,4,5,0.3888888 +5,42,23,4,3,17,4,4,0.1521739 +3,27,9,3,1,16,4,5,0.1111111 +5,42,13,0,2,14,5,3,0.9230769 +5,32,16.5,2,2,16,5,5,0.2121212 +1,42,23,2,1,12,3,3,1.826086 +4,27,6,0,1,12,3,4,0.5833333 +5,42,23,3,2,12,5,4,1.9478254 +4,27,9,2,3,16,4,5,1.333333 +2,32,13,3,3,20,4,5,0.0769231 +4,22,2.5,0,2,12,3,2,11.1999998 +3,32,16.5,3,2,12,3,2,0.7272727 +5,27,6,1,3,12,5,2,2 +3,27,2.5,0,1,12,3,4,3.1999998 +5,22,2.5,0,2,16,4,6,1.3999996 +3,32,13,0,2,16,4,5,0.9230769 +4,37,16.5,2,2,20,4,2,0.7424242 +4,27,6,1,2,17,4,5,2.041666 +4,37,23,4,2,12,3,2,0.1521739 +4,22,2.5,2,2,14,3,5,4.8999996 +3,27,6,1,3,17,4,4,1.333333 +4,32,16.5,3,4,12,3,5,1.1878777 +5,22,6,2,3,14,3,5,7.4666672 +4,32,13,2,3,14,3,2,0.0769231 +4,27,9,1,1,14,2,5,1.3611107 +3,32,16.5,2,2,12,3,4,0.7272727 +4,27,13,2,2,12,3,2,0.0769231 +5,27,9,1,3,12,2,3,0.3888888 +3,27,9,0,1,12,3,4,16 +4,27,9,0,3,14,5,6,4.9777775 +3,22,2.5,0,1,12,3,2,7.8399963 +3,32,13,2,3,20,4,5,0.0769231 +4,42,23,5.5,2,14,5,3,0.5326087 +5,22,2.5,0,2,16,3,4,4.8999996 +5,27,9,1,2,14,4,5,0.3888888 +5,37,13,2,3,14,4,3,0.2692307 +5,27,2.5,1,3,16,3,3,1.3999996 +4,27,6,0,2,14,3,2,0.5833333 +5,22,2.5,0,2,12,4,4,7.8399963 +5,27,6,1,3,12,2,3,1.333333 +4,32,9,2,2,16,5,5,1.333333 +4,32,6,2,3,14,4,2,2.041666 +2,22,2.5,1,2,17,2,2,11.1999998 +5,27,2.5,0,2,17,5,5,4.7999992 +5,37,16.5,3,2,14,4,4,1.1878777 +3,27,2.5,1,3,14,5,3,4.7999992 +4,27,6,1,1,14,3,4,0.1666666 +5,27,6,2,3,12,2,4,3.2666645 +4,42,23,3,2,12,3,2,1.217391 +3,27,6,2,3,14,3,5,0.5833333 +5,22,6,1,3,14,1,4,2 +5,37,23,3,2,12,3,4,0.5326087 +3,37,16.5,3,3,12,3,4,1.1878777 +4,42,23,4,2,9,4,4,0.5217391 +4,42,23,3,3,12,3,5,0.5217391 +4,37,23,2,2,16,4,6,0.1521739 +5,32,16.5,4,1,12,2,1,0.4848484 +4,27,6,2,3,14,2,6,1.333333 +3,32,16.5,2,2,12,2,2,1.1878777 +2,27,6,1,2,12,3,2,0.5833333 +4,22,2.5,0,1,14,3,4,4.7999992 +3,22,6,1,2,14,3,2,0.5833333 +2,27,6,0,3,12,3,3,0.1666666 +4,27,6,1,2,12,2,5,3.2666645 +3,22,2.5,1,1,12,5,5,4.8999996 +2,37,16.5,3,2,14,3,5,1.1878777 +5,32,13,2,2,16,4,2,3.2307692 +5,22,2.5,0,1,12,3,2,1.3999996 +4,22,6,1,3,14,4,1,0.5833333 +4,22,0.5,0,2,12,5,2,2 +3,27,2.5,0,2,20,4,4,1.3999996 +5,27,2.5,0,3,12,2,2,1.3999996 +4,22,2.5,0,3,14,3,2,1.3999996 +4,42,16.5,2,1,16,4,5,2.7151508 +5,32,13,1,2,12,5,2,1.5076914 +5,32,13,3,3,14,3,5,0.9230769 +5,32,2.5,0,3,14,4,2,4.7999992 +3,32,13,1,1,16,4,5,0.9423077 +5,42,23,2,3,14,5,6,1.217391 +4,27,6,1,1,14,3,2,2.041666 +3,37,16.5,4,3,12,2,5,1.1878777 +5,37,16.5,2,2,12,2,4,0.2121212 +2,32,9,1,2,12,3,3,1.333333 +2,32,13,0,2,14,5,4,0.2692307 +4,22,0.5,0,1,12,3,4,2 +4,22,6,0,1,12,3,4,0.1666666 +3,37,16.5,3,3,12,2,2,0.2121212 +3,27,2.5,0,2,17,4,5,3.1999998 +3,22,2.5,0,2,17,5,4,0.4 +4,32,16.5,2,2,14,3,4,0.7272727 +4,42,16.5,2,3,17,5,6,0.4848484 +4,32,16.5,5.5,3,12,2,2,1.1878777 +3,32,13,2,3,14,2,2,0.6153846 +4,42,23,2,2,20,4,5,0.8521735 +3,32,9,1,2,16,4,3,4.666666 +4,22,2.5,0,2,14,3,2,1.3999996 +3,37,16.5,3,3,12,3,3,5.818181 +3,42,23,3,1,14,3,4,0.5217391 +1,32,16.5,3,3,12,4,2,0.7424242 +2,37,16.5,5.5,2,12,2,5,2.545454 +5,32,9,0,3,12,3,5,2.1777763 +2,32,16.5,4,2,14,3,5,2.7151508 +3,22,2.5,0,2,17,4,1,16.7999878 +5,32,2.5,0,2,16,5,5,4.8999996 +3,27,6,1,1,17,4,5,0.1666666 +4,27,6,0,1,17,4,1,3.2666645 +3,37,16.5,2,2,14,4,2,0.2121212 +4,37,16.5,2,1,14,3,3,0.2121212 +5,42,23,2,3,14,3,4,0.5217391 +4,32,13,2,1,17,4,2,0.9230769 +3,27,9,0,1,14,3,5,4.9777775 +3,32,13,2,1,12,3,6,0.9423077 +3,27,6,2,3,17,4,6,2.041666 +2,37,16.5,3,2,12,2,4,0.7272727 +2,22,6,2,1,14,3,4,0.1666666 +3,17.5,2.5,1,3,12,4,2,4.8999996 +3,27,6,3,2,14,2,2,0.1666666 +3,22,2.5,0,1,12,2,5,1.3999996 +4,42,23,3,2,14,3,5,1.826086 +2,27,6,2,3,14,3,3,2 +4,32,16.5,5.5,2,14,3,2,2.545454 +4,27,2.5,0,3,12,3,5,0.4 +4,27,6,2,3,12,3,2,2 +4,27,2.5,0,3,16,4,5,4.7999992 +5,27,6,0,1,16,4,5,4.666666 +2,22,6,2,2,12,2,3,0.5833333 +3,27,2.5,0,1,20,4,4,4.7999992 +4,32,16.5,3,3,14,3,5,0.7272727 +5,32,13,1,3,17,4,4,0.9423077 +3,22,2.5,1,2,12,2,4,7.8399963 +4,22,2.5,0,1,14,3,3,1.3999996 +5,32,9,2,3,16,4,4,1.333333 +5,32,2.5,0,3,14,5,4,0.4 +5,27,9,2,1,14,2,4,1.333333 +4,32,9,1,2,14,5,5,0.8888888 +4,22,2.5,0,2,14,3,5,1.3999996 +4,42,23,1,3,12,3,3,2.9217386 +4,27,9,2,2,16,4,4,1.333333 +4,32,16.5,3,2,17,4,2,0.4848484 +4,27,6,2,2,16,4,5,7.4666672 +4,37,16.5,2,2,14,4,5,0.7272727 +5,27,6,1,3,16,4,4,4.666666 +2,27,6,1,2,12,2,2,4.666666 +4,22,2.5,1,1,12,2,2,3.1999998 +3,37,13,1,2,12,3,2,0.9423077 +4,42,23,2,2,14,3,5,0.1521739 +5,22,2.5,0,1,14,3,2,0.4 +3,42,23,2,1,17,4,6,4.173913 +4,32,16.5,2,3,12,3,4,0.7272727 +1,32,16.5,3,3,14,3,4,0.0606061 +5,27,13,2,3,12,3,2,0.9230769 +3,27,6,0,1,17,5,4,3.2666645 +5,42,23,5.5,2,14,4,4,0.5326087 +4,32,16.5,1,3,16,4,5,0.0606061 +2,22,2.5,0,1,12,3,2,4.7999992 +2,42,23,1,3,14,4,2,0.5326087 +2,22,6,0,2,12,3,4,0.5833333 +4,27,6,0,1,16,5,1,0.5833333 +4,42,23,1,4,17,3,2,1.826086 +5,42,23,2,1,12,3,2,0.3478261 +4,27,6,2,2,16,4,2,2 +3,22,2.5,0,1,12,3,2,1.3999996 +3,27,13,3,2,14,5,5,3.4461536 +4,32,13,2,2,14,4,5,2.1538458 +4,27,9,3,3,14,4,3,0.3888888 +3,32,9,1,2,14,3,4,0.3888888 +3,27,9,2,1,14,4,2,1.333333 +5,37,16.5,5.5,3,12,2,2,1.1878777 +3,27,6,1,4,14,3,5,4.666666 +2,27,9,1,1,14,5,3,4.666666 +4,27,2.5,0,2,17,4,6,7.8399963 +4,32,13,1,1,20,4,4,1.5076914 +1,42,23,4,3,12,3,4,1.9478254 +4,32,16.5,1,1,14,5,5,0.7424242 +1,42,23,5.5,2,12,2,2,0.5217391 +4,37,13,1,2,12,3,5,1.5076914 +4,32,16.5,2,2,14,5,5,1.1878777 +4,42,23,3,2,14,4,4,0.0434783 +5,27,6,1,3,14,3,6,2.041666 +3,37,16.5,4,3,12,3,2,0.7272727 +3,37,23,3,3,9,4,2,0.1521739 +4,37,16.5,2,2,12,3,4,2.545454 +3,27,6,2,1,14,4,5,1.333333 +4,37,13,0,3,12,3,2,1.5076914 +2,27,2.5,1,3,16,4,4,4.8999996 +4,42,23,5.5,3,12,5,5,0.5326087 +3,32,16.5,3,2,12,2,2,0.7424242 +4,37,16.5,3,2,12,5,2,0.2121212 +3,42,13,0,3,12,4,4,0.9230769 +4,37,13,4,3,14,4,2,0.6153846 +2,32,16.5,4,2,14,5,4,1.1878777 +3,27,13,2,1,14,4,4,2.1538458 +5,22,2.5,0,2,14,4,5,0.4 +4,22,2.5,1,2,14,4,5,0.4 +3,32,2.5,0,1,16,4,5,17.9199982 +5,27,6,2,3,14,3,5,3.2666645 +5,32,16.5,3,4,12,2,3,0.0606061 +2,42,23,2,3,16,4,5,0.5217391 +5,22,6,2,3,14,2,4,0.5833333 +5,42,23,2,1,14,4,5,0.0434783 +4,22,6,0,2,14,3,3,0.5833333 +3,32,16.5,4,3,14,3,4,0.7272727 +3,32,16.5,2,2,14,3,5,0.7272727 +4,42,16.5,1,3,17,4,5,0.7272727 +1,37,16.5,3,2,12,3,5,0.2121212 +3,32,13,1,3,20,4,4,0.0769231 +3,27,2.5,0,3,14,5,5,1.3999996 +5,22,2.5,2,1,14,5,4,16.7999878 +3,42,23,5.5,3,12,3,2,0.5217391 +4,27,9,2,3,12,2,2,0.3888888 +3,32,16.5,2,3,12,2,4,1.1878777 +4,32,16.5,3,2,14,3,4,2.545454 +3,27,2.5,2,2,16,4,4,1.3999996 +4,32,6,2,2,14,4,4,4.666666 +1,42,23,2,1,12,2,3,1.9478254 +4,22,2.5,0,2,16,5,1,3.1999998 +3,22,6,0,2,12,3,4,2 +2,42,23,5.5,3,17,4,4,2.9217386 +3,27,13,2,2,12,2,4,3.2307692 +4,27,9,2,3,12,2,2,0.3888888 +5,32,16.5,3,3,17,4,4,2.545454 +5,32,16.5,2,1,14,4,6,0.0606061 +5,32,16.5,3,3,14,2,5,1.1878777 +3,27,9,2,2,12,2,3,1.3611107 +2,27,6,1,3,12,4,4,0.5833333 +4,22,2.5,2,2,12,5,2,7.8399963 +5,27,6,2,4,20,4,4,3.2666645 +3,22,2.5,0,2,14,3,2,4.7999992 +2,32,9,0,1,16,5,4,7.4666662 +4,37,16.5,2,3,16,3,6,0.7272727 +4,42,23,2,3,12,3,2,1.217391 +5,22,2.5,0,3,14,3,4,7.8399963 +5,32,9,1,2,14,2,4,1.333333 +4,37,16.5,2,3,12,3,6,0.4848484 +3,22,2.5,0,3,12,3,4,1.3999996 +4,37,16.5,4,2,12,3,5,0.7272727 +4,27,2.5,0,3,17,4,1,1.3999996 +3,27,6,0,1,14,3,5,2.041666 +5,32,16.5,2,2,20,4,4,0.7424242 +2,22,2.5,1,2,12,5,5,0.4 +4,42,16.5,2,1,14,5,4,0.7424242 +5,42,13,3,4,14,2,2,1.5076914 +5,32,13,1,3,16,6,6,0.2692307 +5,37,13,0,1,14,4,5,0.0769231 +2,22,6,0,1,20,6,4,3.2666645 +4,22,2.5,0,2,12,3,4,4.8999996 +4,32,16.5,1,2,12,3,4,0.7272727 +4,27,6,2,2,12,2,2,1.333333 +2,37,16.5,2,2,12,3,3,0.7272727 +3,22,6,2,3,12,3,2,3.2666645 +4,27,13,2,2,16,4,5,3.2307692 +4,22,6,1,2,12,2,5,2 +4,17.5,0.5,0,3,14,3,4,7 +5,27,2.5,0,2,17,5,1,7.8399963 +5,27,9,1,3,14,3,4,1.333333 +2,22,2.5,1,3,12,2,2,4.7999992 +4,42,23,5.5,3,9,2,4,0.8521735 +3,32,16.5,3,3,14,4,5,1.696969 +4,37,13,1,1,12,5,5,0.9423077 +2,32,16.5,3,2,12,3,5,0.7272727 +4,32,13,2,2,14,2,5,0.2692307 +4,22,2.5,0,2,14,1,1,0.4 +5,22,2.5,0,2,12,3,2,4.8999996 +4,32,16.5,3,2,12,4,2,1.1878777 +4,37,16.5,3,2,12,3,3,0.2121212 +5,42,23,4,3,14,5,5,0.5217391 +5,27,9,2,1,9,3,4,0.3888888 +5,32,9,0,2,17,3,2,0.1111111 +2,42,23,3,4,12,4,5,0.1521739 +4,42,23,2,3,12,3,2,0.5217391 +5,27,6,0,3,14,3,4,1.333333 +4,22,6,0,3,14,3,3,0.1666666 +2,32,16.5,5.5,2,12,3,2,2.7151508 +4,22,2.5,1,2,14,2,4,3.1999998 +5,37,23,4,3,12,3,3,0.5326087 +4,32,13,3,2,12,3,5,0.2692307 +4,32,16.5,2,2,12,3,4,1.1878777 +4,27,6,1,2,17,3,5,0.5833333 +2,27,13,2,3,12,5,5,3.2307692 +4,37,16.5,2,2,14,4,5,1.1878777 +4,27,6,0,4,16,4,6,3.2666645 +4,37,23,3,3,12,5,3,0.1521739 +3,27,2.5,0,1,14,4,6,38.3999939 +3,27,9,1,2,12,3,4,2.1777763 +2,37,23,4,2,12,5,2,0.1521739 +3,37,23,3,3,12,2,2,0.8521735 +3,32,13,2,3,17,4,4,0.0769231 +2,37,16.5,4,3,12,2,4,1.1878777 +4,27,9,2,3,12,3,3,1.333333 +4,42,23,3,3,12,2,2,0.8521735 +5,42,23,3,3,14,3,5,0.5326087 +2,27,6,0,2,12,3,5,2 +1,27,2.5,0,2,16,3,1,4.7999992 +5,32,16.5,2,1,12,3,3,0.2121212 +4,32,16.5,3,2,14,4,5,2.545454 +3,22,6,0,2,12,2,2,0.1666666 +3,27,2.5,2,2,14,4,4,0.4 +3,42,23,1,3,14,3,2,0.3478261 +5,42,23,4,2,14,3,5,0.1521739 +1,27,6,2,2,14,2,3,0.5833333 +4,32,13,2,2,12,2,5,0.2692307 +4,32,13,2,1,12,5,5,0.9423077 +5,32,16.5,3,2,12,2,4,0.0606061 +5,42,23,2,1,20,4,3,0.1521739 +4,27,9,2,2,12,3,4,1.333333 +4,37,16.5,3,3,16,3,2,2.7151508 +5,37,16.5,5.5,1,16,4,4,0.7272727 +3,42,9,2,1,12,4,4,0.8888888 +4,27,6,1,3,14,4,3,0.5833333 +3,27,9,2,3,12,2,4,2.1777763 +4,27,6,2,2,16,5,5,3.2666645 +4,37,16.5,4,3,14,4,5,2.7151508 +4,32,16.5,3,3,14,3,4,1.1878777 +4,27,6,1,2,16,3,5,0.1666666 +5,42,23,2,2,12,4,4,0.8521735 +4,32,13,1,3,14,3,2,0.9423077 +2,27,6,1,2,12,3,2,0.5833333 +3,22,2.5,0,2,12,3,4,0.4 +3,27,6,0,2,17,2,4,4.666666 +5,37,23,4,2,12,3,5,0.3478261 +3,32,16.5,3,4,12,5,4,2.545454 +4,22,2.5,0,2,12,2,2,4.8999996 +2,22,6,2,3,12,5,3,7.4666672 +4,27,9,2,3,14,3,2,0.1111111 +4,22,2.5,0,1,20,6,5,1.3999996 +3,42,23,5.5,4,12,2,5,0.1521739 +3,42,23,3,2,20,6,5,0.5217391 +3,22,2.5,1,3,12,3,2,3.1999998 +4,32,9,2,2,14,3,5,1.333333 +3,32,16.5,1,3,12,3,4,0.4848484 +3,27,6,2,1,14,3,3,11.1999989 +3,27,6,1,3,14,3,4,0.1666666 +4,37,16.5,3,1,14,5,5,0.0606061 +4,32,13,2,2,16,5,6,0.2692307 +3,22,2.5,0,1,17,4,4,1.3999996 +3,27,6,0,3,14,3,4,3.2666645 +3,42,23,3,2,14,5,6,1.826086 +5,32,13,3,3,14,2,2,0.0769231 +5,27,2.5,1,2,14,3,4,3.1999998 +3,27,9,3,1,14,3,4,1.333333 +2,22,2.5,0,2,12,3,4,16.7999878 +1,42,23,5.5,2,12,5,5,0.5326087 +3,22,2.5,0,1,14,2,4,0.4 +4,27,2.5,0,1,17,5,6,4.8999996 +5,27,6,0,2,16,3,5,2.041666 +3,27,6,1,2,14,4,4,2.041666 +2,42,23,1,1,14,3,4,0.5217391 +4,27,6,0,4,14,3,4,7.4666672 +3,22,6,1,1,14,3,4,2.041666 +5,22,2.5,0,2,14,3,5,1.3999996 +3,27,2.5,4,2,14,3,2,16.7999878 +4,27,6,3,2,14,2,4,2 +3,32,16.5,2,3,14,3,5,1.696969 +5,22,2.5,0,3,14,3,6,7.8399963 +5,32,13,1,2,14,3,5,0.9230769 +5,22,2.5,0,3,12,3,2,4.7999992 +3,32,13,2,1,14,3,5,0.9230769 +1,37,23,4,2,12,2,2,0.5217391 +2,22,2.5,1,3,14,4,4,0.4 +4,42,23,3,4,12,3,4,1.826086 +4,27,6,2,2,14,5,5,2.041666 +5,37,16.5,2,4,16,3,4,0.0606061 +4,22,6,0,3,12,3,3,2.041666 +3,32,16.5,3,2,14,5,3,0.2121212 +4,27,9,3,3,12,3,4,2.1777763 +5,27,6,0,1,16,4,4,0.1666666 +2,22,6,3,3,12,3,2,3.2666645 +5,22,2.5,0,1,16,4,5,0.4 +5,42,23,4,4,14,1,6,0.8521735 +4,32,9,1,1,16,4,5,2.1777763 +4,22,2.5,2,3,12,2,2,11.1999998 +3,42,23,5.5,3,14,3,5,0.8521735 +3,22,2.5,1,1,12,5,4,4.7999992 +5,27,9,2,2,17,2,2,2.1777763 +3,22,2.5,0,1,12,2,4,3.1999998 +4,32,13,1,2,12,3,3,0.2692307 +4,37,16.5,1,2,12,3,4,4.0727262 +5,32,9,3,2,17,4,6,0.1111111 +4,27,9,1,2,12,2,3,1.333333 +3,27,2.5,1,3,14,3,2,4.8999996 +2,22,2.5,1,2,16,4,3,1.3999996 +1,42,16.5,5.5,3,14,5,5,0.7424242 +3,27,13,2,2,9,2,4,0.2692307 +4,42,23,3,4,14,3,2,0.5217391 +3,27,9,2,2,12,3,4,7.4666662 +3,27,6,2,2,14,3,1,2.041666 +5,27,2.5,0,3,14,3,2,0.4 +3,27,2.5,0,3,16,3,5,3.1999998 +3,22,2.5,0,3,16,4,2,0.4 +3,42,23,3,1,12,3,3,2.9217386 +5,42,23,2,2,12,2,5,0.1521739 +4,27,2.5,0,1,17,4,4,4.8999996 +5,27,6,0,2,14,3,5,0.1666666 +4,32,16.5,4,2,14,4,4,0.7272727 +4,27,6,0,3,12,3,2,3.2666645 +4,32,9,2,2,14,3,4,2.1777763 +3,27,9,2,1,14,3,4,0.8888888 +3,27,2.5,1,2,16,2,2,1.3999996 +5,27,13,2,2,9,2,4,0.9230769 +2,27,13,2,2,12,3,4,1.5076914 +3,42,16.5,4,2,14,3,5,0.2121212 +3,32,9,2,1,14,3,2,1.3611107 +5,32,13,0,2,12,3,5,0.2692307 +1,27,9,2,2,12,2,4,2.1777763 +3,32,13,3,2,12,3,2,0.9423077 +5,27,2.5,0,3,14,5,5,1.3999996 +4,32,6,1,1,16,4,4,0.1666666 +5,27,13,3,1,14,3,4,3.4461536 +5,27,2.5,0,3,20,6,6,1.3999996 +5,32,16.5,4,2,12,2,4,1.1878777 +4,37,13,0,2,12,3,3,1.5076914 +3,22,2.5,0,3,16,4,4,0.4 +5,37,13,2,4,17,4,6,0.9230769 +4,22,2.5,2,1,12,3,4,0.4 +1,42,16.5,2,4,16,5,2,0.2121212 +3,37,16.5,3,3,17,4,4,2.7151508 +4,22,2.5,0,3,17,3,4,0.4 +5,32,13,2,2,20,4,2,1.5076914 +3,37,16.5,2,3,17,4,5,2.545454 +4,32,16.5,4,3,12,2,4,0.2121212 +4,32,16.5,2,2,14,3,5,0.7272727 +5,37,16.5,2,4,17,3,3,0.7272727 +3,27,9,2,1,12,3,5,0.3888888 +3,42,23,3,3,9,3,5,1.9478254 +4,32,9,2,1,20,4,5,1.333333 +4,22,6,2,2,12,3,3,0.5833333 +1,32,13,2,2,16,6,5,1.5076914 +4,22,2.5,0,1,12,2,2,4.7999992 +4,27,9,2,1,12,3,4,0.3888888 +3,27,6,0,2,14,4,5,2 +4,32,13,4,2,12,3,5,0.0769231 +5,42,23,3,4,12,2,4,1.217391 +2,37,16.5,3,1,14,3,4,1.1878777 +3,32,9,0,2,14,3,5,1.333333 +4,37,16.5,2,3,14,3,6,0.7272727 +1,32,16.5,4,3,12,3,5,1.1878777 +3,37,16.5,1,3,14,3,5,1.1878777 +4,22,2.5,0,3,14,4,5,1.3999996 +4,22,6,2,2,12,2,2,0.5833333 +3,22,2.5,1,3,12,3,2,3.1999998 +5,27,6,1,3,16,4,1,0.1666666 +5,27,9,2,2,20,6,5,0.3888888 +4,22,6,1,2,12,5,4,4.666666 +1,32,16.5,3,1,20,4,2,0.7272727 +5,22,2.5,0,2,16,4,4,4.8999996 +4,42,16.5,3,2,14,3,5,1.1878777 +4,32,13,2,4,16,4,6,0.2692307 +4,32,9,2,2,16,4,5,0.3888888 +2,42,23,4,1,12,3,4,0.8521735 +3,42,16.5,2,2,14,4,4,0.7272727 +4,42,16.5,1,3,14,4,5,0.7272727 +4,32,13,3,2,16,4,5,0.9230769 +4,27,2.5,0,2,14,5,5,4.7999992 +4,27,6,1,1,14,3,4,3.2666645 +5,27,6,0,2,14,3,5,1.333333 +4,27,6,0,3,20,6,6,2 +5,27,6,0,2,14,3,4,3.2666645 +4,27,6,2,2,12,4,4,2.041666 +4,42,23,1,3,14,3,4,0.5217391 +5,22,6,1,3,12,3,3,2 +3,37,16.5,3,3,14,4,5,0.0606061 +4,27,9,2,3,14,4,4,0.8888888 +4,42,13,0,3,12,2,4,0.9423077 +4,27,2.5,0,2,14,3,5,1.3999996 +2,32,13,3,2,16,4,2,2.1538458 +4,37,16.5,4,2,12,5,5,1.1878777 +2,22,2.5,0,2,16,2,5,7.8399963 +5,42,23,1,3,12,5,2,0.5217391 +3,27,6,2,1,16,4,5,2 +3,22,2.5,0,2,14,3,5,1.3999996 +4,32,9,2,1,14,3,5,1.333333 +4,27,9,1,1,14,3,5,0.8888888 +5,27,6,0,3,12,3,4,0.5833333 +4,37,13,2,3,17,4,6,0.2692307 +3,42,23,2,2,14,3,4,0.8521735 +5,22,2.5,0,1,17,5,1,0.4 +2,37,23,5.5,2,14,3,5,0.1521739 +4,32,2.5,0,2,12,3,2,4.7999992 +4,27,2.5,0,3,12,3,3,1.3999996 +2,27,2.5,0,2,14,3,5,1.3999996 +3,22,2.5,0,3,14,3,6,3.1999998 +3,42,23,5.5,2,12,4,2,1.9478254 +3,37,16.5,3,3,14,3,3,8.727272 +2,27,9,0,2,14,3,4,4.666666 +2,37,16.5,3,1,12,3,2,2.545454 +3,22,2.5,2,3,17,4,2,3.1999998 +4,22,6,0,3,12,3,4,2.041666 +4,37,16.5,4,1,14,5,4,0.7272727 +4,27,9,3,3,14,3,2,0.1111111 +4,22,2.5,0,1,14,2,5,0.4 +2,42,23,4,2,14,3,5,0.8521735 +5,27,6,0,2,14,5,2,0.5833333 +2,27,6,1,1,12,3,5,0.5833333 +3,32,16.5,2,2,12,3,2,0.7272727 +4,37,23,5.5,2,12,4,2,0.5326087 +4,17.5,2.5,0,1,12,4,2,17.9199982 +5,22,2.5,1,1,14,3,5,57.5999908 +4,22,2.5,0,2,14,5,4,1.3999996 +3,27,9,2,2,14,3,5,4.666666 +2,32,9,2,2,16,4,5,2.1777763 +5,22,2.5,0,1,14,2,2,0.4 +3,22,2.5,1,3,14,5,4,0.4 +3,27,9,2,3,12,5,5,7.4666662 +4,27,16.5,5.5,2,14,4,4,0.0606061 +4,32,13,2,3,14,3,5,0.2692307 +4,27,9,2,2,16,3,4,0.8888888 +5,32,13,2,2,17,4,4,2.1538458 +4,27,6,1,3,14,4,1,7.4666672 +4,32,13,3,4,12,3,5,0.2692307 +3,27,2.5,1,2,16,4,2,4.7999992 +3,42,23,3,2,14,3,5,0.5326087 +4,27,2.5,0,1,12,3,2,0.4 +4,22,2.5,0,1,14,4,4,4.7999992 +5,32,13,2,1,14,2,2,1.5076914 +3,32,9,2,2,14,3,5,1.333333 +3,37,16.5,2,2,12,3,4,0.7424242 +2,42,23,3,3,14,3,4,0.8521735 +5,32,16.5,2,4,17,4,4,0.2121212 +4,22,2.5,1,3,12,5,3,4.8999996 +5,27,9,2,2,14,3,4,0.1111111 +4,32,16.5,3,2,16,5,6,0.7424242 +5,32,16.5,4,3,12,3,5,0.0606061 +3,32,16.5,3,2,12,5,5,0.7424242 +4,42,23,2,3,20,4,4,0.0434783 +4,37,16.5,4,1,14,4,5,0.2121212 +5,27,2.5,0,2,12,3,3,0.4 +3,22,2.5,0,2,14,3,5,0.4 +5,37,23,5.5,2,12,2,4,0.1521739 +4,42,23,2,2,12,3,5,1.217391 +4,22,6,2,1,12,2,4,11.1999989 +5,27,6,1,4,12,5,5,0.5833333 +5,42,23,3,3,12,3,2,0.5326087 +3,27,6,2,2,14,4,4,0.1666666 +4,27,6,2,1,16,4,5,2 +2,42,16.5,1,2,20,4,4,0.7272727 +2,37,16.5,4,2,14,3,5,1.1878777 +1,32,13,2,1,12,2,4,0.0769231 +3,37,16.5,4,4,14,5,3,0.4848484 +4,27,9,1,1,12,3,4,4.666666 +2,27,2.5,0,3,14,5,4,4.7999992 +3,32,16.5,5.5,4,12,3,2,0.2121212 +4,22,2.5,0,2,14,2,2,3.1999998 +4,27,6,0,3,17,4,4,3.2666645 +5,32,9,0,3,20,6,4,0.1111111 +3,22,6,0,2,17,4,3,4.666666 +4,22,2.5,2,2,12,3,2,3.1999998 +4,42,23,1,2,14,3,6,2.9217386 +3,27,6,0,2,14,3,4,7 +4,37,23,5.5,2,9,3,4,0.8521735 +4,22,2.5,1,3,14,5,5,7.8399963 +5,27,9,2,2,14,5,4,1.333333 +4,22,2.5,0,2,12,3,4,4.8999996 +3,27,9,2,3,14,3,5,1.333333 +4,22,6,1,2,12,3,4,0.1666666 +4,27,6,2,3,14,4,5,0.5833333 +3,42,23,2,2,14,3,5,0.8521735 +4,22,6,1,2,12,3,4,0.5833333 +4,32,13,3,2,14,2,5,0.2692307 +5,42,23,4,3,14,2,2,0.0434783 +4,27,13,2,3,12,5,4,0.9230769 +4,27,9,1,2,14,5,4,2.1777763 +4,27,9,1,2,12,3,3,1.333333 +5,22,2.5,0,3,14,3,4,1.3999996 +3,32,13,2,3,12,3,5,0.6153846 +3,42,23,4,2,12,3,4,0.8521735 +3,27,6,0,2,16,4,4,0.1666666 +5,42,23,2,2,14,3,3,0.1521739 +3,37,16.5,5.5,3,12,2,2,0.4848484 +4,22,2.5,0,2,14,3,4,17.9199982 +5,42,23,2,2,12,3,2,0.5326087 +5,27,2.5,0,1,16,5,2,1.3999996 +4,32,23,3,4,12,2,2,0.5326087 +5,22,2.5,0,2,17,4,6,7.8399963 +4,37,16.5,5.5,2,14,2,3,1.1878777 +4,22,2.5,1,3,12,2,2,4.8999996 +2,27,6,2,2,12,3,2,2 +5,32,16.5,3,3,16,2,4,0.2121212 +3,27,6,1,3,14,3,2,3.2666645 +3,27,2.5,2,1,14,3,5,1.3999996 +5,42,23,5.5,3,16,4,4,0.5326087 +3,17.5,2.5,0,1,12,3,4,7.8399963 +3,37,23,3,2,12,3,5,0.8521735 +5,27,6,0,3,17,3,1,0.1666666 +4,37,16.5,1,2,12,3,5,2.7151508 +3,32,16.5,2,2,12,3,6,0.7424242 +3,27,2.5,0,1,17,4,6,4.7999992 +4,32,16.5,4,3,12,2,4,0.7424242 +3,32,16.5,2,2,12,3,4,1.1878777 +4,17.5,2.5,1,1,12,3,2,4.7999992 +3,22,2.5,1,2,12,5,2,7.8399963 +5,37,16.5,2,2,16,4,4,0.7272727 +5,37,16.5,2,3,12,3,2,0.7272727 +5,22,2.5,0,4,14,3,3,0.4 +4,27,2.5,0,1,14,3,2,4.8999996 +4,22,2.5,1,2,14,4,2,0.4 +4,37,16.5,3,3,12,2,4,0.7272727 +3,22,6,1,3,16,4,4,3.2666645 +4,27,6,1,1,14,3,5,0.5833333 +1,42,23,3,3,12,3,4,1.826086 +3,22,6,2,3,12,2,4,3.2666645 +3,22,2.5,1,2,12,4,1,0.4 +4,22,2.5,1,3,16,3,3,4.7999992 +2,22,2.5,2,1,12,2,4,3.1999998 +5,22,2.5,1,3,14,2,5,4.8999996 +4,22,2.5,0,3,14,3,5,1.3999996 +4,42,23,5.5,3,12,5,5,0.5217391 +3,27,9,1,1,14,3,5,0.1111111 +3,37,23,4,2,12,3,2,1.9478254 +4,37,16.5,3,3,12,5,2,0.7424242 +5,22,2.5,1,2,14,4,1,7.8399963 +2,27,2.5,0,1,14,3,3,11.1999998 +5,22,2.5,1,2,16,4,4,1.3999996 +4,22,2.5,1,3,12,3,3,4.7999992 +4,27,6,2,2,14,3,5,0.1666666 +5,22,2.5,0,3,16,4,4,0.4 +4,27,6,1,3,16,3,3,1.333333 +5,42,23,3,2,17,5,5,0.0434783 +5,37,16.5,4,2,12,3,2,1.696969 +2,27,6,0,1,14,3,4,7 +4,32,16.5,3,4,14,3,5,1.1878777 +5,37,16.5,5.5,3,20,4,6,0.7424242 +5,27,2.5,2,2,16,3,2,0.4 +3,27,9,2,2,14,3,6,4.666666 +4,32,13,4,3,12,3,4,0.2692307 +5,27,9,1,3,12,3,4,2.1777763 +5,32,6,3,1,14,3,2,4.666666 +4,32,16.5,3,1,12,3,4,1.696969 +3,27,9,0,1,12,3,5,7.4666662 +4,32,13,1,3,14,3,5,1.5076914 +3,42,23,2,3,9,2,2,0.5217391 +3,22,6,1,2,12,3,2,1.333333 +4,37,23,3,3,12,5,2,0.3478261 +5,42,23,3,3,16,4,2,0.3478261 +2,22,6,0,2,12,3,3,3.2666645 +3,37,13,2,2,12,3,5,0.2692307 +3,32,13,2,2,16,3,5,0.9230769 +3,22,2.5,0,2,12,3,3,0.4 +3,42,23,5.5,3,14,3,4,0.5326087 +2,32,16.5,2,2,16,4,6,0.7424242 +4,27,6,2,3,14,5,4,2 +4,37,16.5,3,4,16,4,5,0.7424242 +5,37,23,3,1,12,3,5,0.3478261 +3,22,2.5,0,3,14,3,3,3.1999998 +3,22,2.5,0,2,12,3,5,4.7999992 +4,22,9,3,2,14,3,3,0.3888888 +3,42,23,2,1,12,2,5,0.0434783 +4,32,13,1,1,12,3,2,1.5076914 +3,22,2.5,1,2,12,2,4,11.1999998 +2,37,13,3,2,14,4,2,0.0769231 +5,42,23,2,3,12,5,5,0.1521739 +2,37,16.5,3,3,16,4,2,0.7272727 +3,27,6,1,2,14,4,4,2 +5,22,2.5,0,2,14,4,4,3.1999998 +3,22,2.5,1,3,14,4,3,4.7999992 +4,32,13,3,1,14,3,4,0.2692307 +5,27,9,2,1,16,3,5,1.3611107 +4,22,2.5,0,3,14,3,2,7.8399963 +5,42,23,3,3,12,5,2,0.1521739 +3,22,2.5,1,3,14,3,2,1.3999996 +4,27,6,1,2,17,4,2,3.2666645 +4,37,16.5,3,3,14,4,2,0.7424242 +5,27,6,1,3,14,3,2,2 +4,22,2.5,4,3,12,2,4,0.4 +2,32,9,2,2,14,4,5,2.1777763 +4,22,2.5,1,3,17,4,1,4.8999996 +4,27,6,0,2,20,6,6,2.041666 +3,27,2.5,0,2,12,3,6,7.8399963 +4,22,2.5,2,2,12,4,2,1.3999996 +2,22,6,1,2,14,3,5,7.4666672 +4,32,6,1,3,12,3,4,0.5833333 +5,22,6,0,2,14,3,1,2.041666 +4,32,9,2,2,12,3,2,0.8888888 +2,42,23,4,2,17,4,2,0.1521739 +1,37,23,4,2,9,2,5,0.8521735 +4,37,23,2,2,14,4,4,0.1521739 +4,27,9,0,2,17,4,5,2.1777763 +2,22,6,2,2,12,4,4,0.1666666 +3,27,6,3,3,14,3,5,2.041666 +4,22,2.5,5.5,3,12,3,2,1.3999996 +5,22,6,2,3,12,3,5,0.5833333 +3,27,6,1,2,16,4,4,0.5833333 +3,22,2.5,0,3,14,3,5,3.1999998 +4,32,16.5,5.5,2,12,3,5,0.2121212 +4,27,9,2,3,12,3,2,0.8888888 +2,37,23,3,3,12,3,4,0.0434783 +3,37,23,4,3,12,5,2,0.0434783 +3,32,16.5,5.5,2,12,3,3,2.545454 +3,22,2.5,0,2,16,5,4,1.3999996 +5,37,23,4,3,12,2,2,1.217391 +5,22,2.5,0,3,12,3,2,1.3999996 +5,27,9,1,3,12,2,2,0.3888888 +5,32,13,3,1,12,2,2,0.6153846 +3,32,16.5,2,3,12,2,2,1.1878777 +5,32,16.5,2,1,16,4,2,4.0727262 +4,27,6,0,2,16,4,2,2 +4,22,2.5,0,3,16,3,5,1.3999996 +2,22,2.5,0,3,14,3,2,4.7999992 +4,37,16.5,2,3,14,3,5,8.727272 +5,27,6,1,4,16,4,4,2.041666 +3,22,6,1,3,12,4,4,4.666666 +2,32,9,2,3,14,2,4,1.3611107 +4,27,6,2,1,14,3,1,3.2666645 +3,27,2.5,0,1,17,5,4,16.7999878 +2,22,6,1,3,12,3,5,2.041666 +3,27,9,2,3,12,2,2,2.1777763 +3,37,23,4,1,17,4,4,0.5217391 +3,42,23,5.5,4,20,4,4,0.5326087 +5,22,2.5,1,3,12,6,2,26.8799896 +4,37,16.5,3,2,12,2,2,0.7272727 +5,27,6,0,2,12,3,2,11.1999989 +3,22,2.5,0,2,14,5,2,11.1999998 +3,32,16.5,3,2,14,5,5,2.7151508 +5,27,6,0,3,16,5,5,3.2666645 +2,42,23,3,2,12,3,4,0.0434783 +4,27,2.5,0,3,20,4,5,7.8399963 +5,22,2.5,0,3,14,3,5,0.4 +3,27,6,1,3,12,3,4,0.5833333 +5,32,13,1,2,14,4,3,0.9423077 +2,32,2.5,0,3,20,4,4,1.3999996 +2,27,9,2,2,16,4,5,0.1111111 +5,22,2.5,0,2,14,3,3,1.3999996 +4,27,2.5,0,2,17,4,5,0.4 +4,27,0.5,0,3,12,3,4,2 +4,32,13,2,4,14,4,5,0.2692307 +3,27,9,1,3,12,2,2,2.1777763 +3,32,13,2,2,12,3,5,3.4461536 +5,27,9,2,2,12,3,5,0.3888888 +5,22,6,1,2,12,3,2,1.333333 +3,32,13,0,1,12,3,4,3.4461536 +3,37,23,2,3,14,4,5,0.3478261 +5,32,16.5,1,3,12,3,2,1.1878777 +3,32,16.5,3,1,14,3,6,1.1878777 +5,22,6,0,1,14,4,4,7 +4,37,13,0,2,20,2,6,5.1692305 +3,42,23,3,2,14,5,4,0.5217391 +4,22,2.5,0,3,14,3,4,7.8399963 +4,27,13,3,3,14,6,5,5.1692305 +2,42,23,1,1,20,6,6,1.9478254 +2,27,9,2,3,14,2,2,1.3611107 +5,27,6,1,2,14,4,2,2.041666 +5,37,13,4,2,12,4,5,1.5076914 +2,22,6,1,2,14,3,2,3.2666645 +3,17.5,2.5,0,4,14,3,4,3.1999998 +5,22,2.5,1,3,14,2,4,16.7999878 +3,27,6,0,3,14,3,4,2 +5,27,9,0,1,14,3,5,2.1777763 +3,32,13,3,2,14,3,6,1.5076914 +4,37,23,3,3,12,3,4,0.5217391 +4,42,23,1,2,12,5,5,0.3478261 +3,32,9,2,3,16,3,5,2.1777763 +5,42,23,3,4,14,5,6,0.5217391 +4,27,9,2,2,12,3,4,1.3611107 +4,32,16.5,3,3,14,5,5,1.1878777 +2,22,2.5,0,1,14,3,4,11.1999998 +3,37,16.5,3,2,12,3,5,5.818181 +3,22,2.5,0,2,14,3,4,0.4 +4,27,6,0,1,17,4,6,3.2666645 +5,32,13,3,3,14,6,6,0.2692307 +5,42,23,3,2,12,4,2,2.9217386 +5,22,2.5,1,3,14,3,2,1.3999996 +4,42,23,2,3,12,3,5,1.826086 +4,32,16.5,2,4,14,3,5,0.7272727 +3,27,2.5,2,1,14,4,2,3.1999998 +5,42,16.5,2,1,20,4,4,0.2121212 +5,22,2.5,0,2,14,5,4,0.4 +3,22,2.5,0,1,14,5,4,4.7999992 +4,27,2.5,0,2,16,3,5,3.1999998 +3,27,6,1,3,14,3,4,0.5833333 +4,42,23,2,3,14,3,5,0.5326087 +2,37,2.5,1,3,14,3,2,1.3999996 +2,42,23,2,3,14,3,5,0.5326087 +1,42,23,2,1,14,5,5,1.826086 +5,27,13,1,1,12,2,4,0.9423077 +5,32,9,1,3,20,3,3,4.9777775 +3,27,9,1,1,16,5,4,0.3888888 +4,27,9,2,2,12,4,4,2.1777763 +4,27,6,2,3,14,6,5,2.041666 +4,27,9,1,2,20,3,5,2.1777763 +2,37,16.5,3,2,20,4,4,0.2121212 +3,27,9,2,3,14,3,5,0.3888888 +5,27,6,1,2,14,4,6,0.5833333 +3,37,23,2,2,14,5,4,0.5326087 +4,27,13,1,4,14,3,5,0.9230769 +4,22,0.5,0,1,12,2,4,24 +5,42,23,5.5,4,12,3,4,0.1521739 +4,32,13,2,1,14,5,6,0.9423077 +4,27,9,2,1,16,4,4,0.8888888 +5,22,6,2,3,12,2,5,0.1666666 +2,37,16.5,2,1,12,3,6,1.1878777 +3,32,13,2,2,16,3,5,1.5076914 +4,27,9,0,1,12,3,5,2.1777763 +3,42,23,2,3,16,5,6,0.8521735 +4,27,9,2,3,14,3,4,2.1777763 +5,22,6,0,3,12,3,5,0.1666666 +4,42,23,3,3,12,3,4,0.5217391 +4,37,16.5,2,2,12,3,5,0.2121212 +4,42,16.5,1,2,16,2,6,0.2121212 +4,37,16.5,5.5,2,14,4,5,0.7424242 +2,32,13,1,2,17,3,3,1.5076914 +2,32,9,2,1,16,5,5,0.3888888 +4,42,23,2,1,14,5,6,2.782608 +4,42,23,2,2,12,3,4,0.1521739 +5,22,2.5,0,1,12,3,4,4.8999996 +4,27,6,1,2,14,4,2,1.333333 +4,22,6,2,4,12,3,2,0.1666666 +5,37,23,4,3,12,3,4,2.782608 +3,42,23,2,1,20,4,4,0.8521735 +4,32,9,0,2,20,4,4,0.1111111 +4,22,2.5,0,1,16,2,4,3.1999998 +5,27,6,1,3,14,3,3,2 +5,27,2.5,0,3,16,4,3,7.8399963 +5,22,2.5,1,2,12,2,2,1.3999996 +5,27,6,0,1,17,5,2,0.5833333 +3,32,13,2,4,12,2,5,1.5076914 +4,32,16.5,2,3,14,5,4,0.7424242 +5,32,13,2,2,14,4,5,0.2692307 +4,32,16.5,2,4,14,2,1,0.4848484 +3,32,13,2,2,20,4,5,0.2692307 +3,42,23,4,3,20,4,5,0.8521735 +5,27,9,1,1,20,6,6,0.8888888 +4,32,16.5,2,2,12,3,4,1.1878777 +5,42,23,3,3,17,4,5,0.0434783 +3,32,13,4,2,12,2,4,0.2692307 +3,32,16.5,2,1,14,3,4,2.545454 +5,32,6,1,1,14,4,5,0.5833333 +4,27,6,1,2,14,3,5,0.5833333 +2,27,9,1,1,17,1,4,3.1111107 +5,27,6,0,2,16,5,6,0.5833333 +4,27,16.5,2,3,9,2,4,0.7424242 +4,32,13,1,3,20,2,2,0.9423077 +4,37,16.5,2,2,12,3,3,1.1878777 +3,27,6,0,4,12,3,5,1.333333 +3,37,23,4,2,12,3,4,2.9217386 +3,27,6,0,3,14,3,3,2 +5,22,2.5,0,3,12,3,5,4.7999992 +4,32,9,1,2,12,3,4,2.1777763 +4,27,9,1,3,17,4,6,2.1777763 +5,27,13,2,2,12,4,5,0.9230769 +5,22,2.5,2,1,12,3,2,1.3999996 +4,22,6,2,2,12,3,4,0.5833333 +2,32,16.5,1,4,12,5,5,1.1878777 +3,27,2.5,0,2,20,4,1,1.3999996 +3,27,13,1,2,12,5,5,3.2307692 +4,37,23,1,1,16,5,5,1.217391 +4,27,6,0,3,16,2,1,2 +4,22,6,0,2,14,3,5,4.666666 +5,42,16.5,2,3,20,6,6,0.7272727 +2,37,16.5,1,2,16,4,5,1.1878777 +1,32,13,3,3,12,2,4,0.0769231 +5,22,2.5,1,3,12,3,4,4.8999996 +4,22,2.5,0,2,14,3,5,4.7999992 +3,22,2.5,0,2,16,4,4,4.8999996 +5,37,16.5,2,3,12,5,5,4.0727262 +4,17.5,2.5,0,2,12,2,5,4.7999992 +5,42,23,2,3,17,5,2,0.5326087 +3,32,13,2,3,14,5,2,3.2307692 +3,42,23,3,2,12,4,4,1.217391 +4,27,2.5,0,3,14,3,4,1.3999996 +5,42,13,0,2,12,5,5,0.9230769 +2,32,9,2,4,16,4,4,2.1777763 +3,27,6,1,3,14,3,4,3.2666645 +2,27,9,3,3,12,5,4,2.1777763 +3,27,6,2,3,14,4,6,0.5833333 +5,27,9,2,1,14,3,4,4.9777775 +2,27,13,1,3,12,3,2,0.0769231 +4,27,13,2,2,12,3,4,0.0769231 +5,22,2.5,0,3,12,3,4,4.7999992 +4,27,9,0,3,12,2,4,4.666666 +3,27,9,2,3,12,4,5,0.3888888 +3,22,2.5,0,2,17,2,6,3.1999998 +3,27,6,1,3,14,3,3,2.041666 +4,27,6,0,2,14,5,3,2 +4,32,16.5,3,3,14,5,5,0.0606061 +4,32,16.5,2,3,12,5,5,0.7424242 +3,42,16.5,2,4,16,5,5,0.2121212 +3,32,6,2,3,14,3,4,2 +3,37,23,4,4,9,5,5,0.5326087 +1,42,16.5,1,2,12,3,5,1.1878777 +2,42,23,5.5,3,14,2,2,0.5217391 +5,37,16.5,4,4,14,3,3,0.0606061 +5,42,23,1,3,14,3,5,0.8521735 +3,22,2.5,1,2,12,2,2,7.8399963 +5,22,2.5,0,2,16,5,4,4.8999996 +2,27,6,1,2,14,3,4,0.1666666 +1,32,13,2,2,16,4,6,0.0769231 +3,32,16.5,2,2,16,4,2,1.1878777 +5,27,9,1,3,14,3,5,2.1777763 +3,22,6,1,1,12,3,2,3.2666645 +4,27,6,2,3,12,3,2,1.333333 +4,37,16.5,2,4,17,6,6,0.4848484 +4,22,2.5,0,3,12,3,3,0.4 +1,42,23,3,3,14,3,5,0.8521735 +2,22,2.5,0,2,12,3,5,4.7999992 +4,37,13,1,3,20,4,2,1.5076914 +2,27,6,1,2,12,2,2,0.5833333 +5,27,9,2,3,20,4,4,0.3888888 +3,42,23,3,3,12,2,2,1.826086 +3,42,16.5,2,3,14,3,2,0.7272727 +2,32,16.5,1,1,17,4,6,0.2121212 +4,22,2.5,1,2,14,3,5,0.4 +5,42,23,3,4,16,3,4,0.8521735 +4,27,13,2,3,14,3,5,3.2307692 +1,32,13,1,2,12,3,3,0.0769231 +3,42,23,5.5,2,14,5,6,0.5217391 +5,37,23,2,3,12,3,5,1.826086 +5,22,2.5,0,1,14,4,1,4.8999996 +3,27,6,0,2,14,3,6,2 +4,22,2.5,1,1,14,2,2,1.3999996 +5,37,13,2,1,12,3,4,0.9423077 +4,42,23,3,2,14,3,3,0.8521735 +3,27,6,2,3,20,4,2,0.5833333 +4,27,6,2,2,12,2,5,2.041666 +2,27,2.5,1,3,14,2,4,7.8399963 +5,42,23,4,1,12,5,6,0.1521739 +3,42,13,0,3,17,3,2,0.9230769 +5,27,6,0,3,14,3,5,0.5833333 +4,22,2.5,0,3,14,3,2,1.3999996 +3,27,13,3,3,12,4,4,5.1692305 +3,32,9,0,2,14,3,4,0.8888888 +1,37,16.5,1,3,14,2,5,0.2121212 +3,37,23,2,3,12,5,5,0.8521735 +2,32,16.5,2,2,12,3,4,0.7272727 +3,27,6,0,1,16,4,1,7.4666672 +4,42,16.5,3,2,14,5,4,0.7424242 +1,42,16.5,1,3,12,5,5,1.1878777 +3,32,16.5,3,4,12,4,2,0.7272727 +5,27,6,1,4,14,3,3,2.041666 +2,32,16.5,2,2,14,2,3,4.0727262 +2,17.5,2.5,0,2,12,3,2,16.7999878 +4,32,16.5,2,3,14,3,4,0.7424242 +3,22,2.5,0,3,14,3,4,7.8399963 +5,27,6,0,3,16,3,6,2 +5,37,23,3,3,12,3,5,0.1521739 +3,32,13,0,2,12,5,2,0.2692307 +4,42,23,1,2,14,5,5,0.0434783 +1,42,23,2,3,14,3,4,2.9217386 +2,37,23,3,2,12,3,3,1.9478254 +4,22,0.5,0,3,16,4,6,7 +5,27,9,2,2,14,3,4,0.1111111 +4,22,0.5,0,1,14,5,4,16 +3,27,9,2,2,17,4,4,1.3611107 +4,42,23,2,3,14,3,5,1.217391 +4,22,2.5,0,2,14,5,5,1.3999996 +4,22,2.5,0,3,14,3,4,17.9199982 +4,27,13,2,3,14,5,5,0.9423077 +4,27,6,1,3,16,4,6,2.041666 +3,42,23,3,2,14,2,2,0.5217391 +3,27,6,2,1,12,4,3,2.041666 +5,42,23,2,2,16,3,5,0.8521735 +3,42,23,2,4,14,3,6,0.0434783 +5,32,16.5,1,3,14,3,5,0.2121212 +4,27,6,2,3,14,5,5,0.1666666 +2,37,23,3,1,14,5,5,0.1521739 +4,22,6,1,3,14,3,1,3.2666645 +2,27,9,2,3,12,3,4,1.333333 +5,27,9,2,1,14,4,4,2.1777763 +4,27,2.5,0,3,14,3,4,16.7999878 +5,37,16.5,2,2,14,3,5,0.7272727 +3,22,2.5,1,2,14,2,2,0.4 +4,27,2.5,1,2,16,3,6,0.4 +1,27,6,1,1,12,3,5,0.1666666 +4,37,16.5,5.5,3,17,4,2,0.2121212 +5,22,2.5,0,3,12,4,3,4.8999996 +2,22,2.5,1,1,14,2,6,1.3999996 +5,42,16.5,2,3,12,3,3,0.7424242 +3,22,6,1,2,12,4,4,1.333333 +3,37,23,3,3,12,3,4,1.9478254 +4,27,6,1,3,14,3,2,2.041666 +2,32,16.5,4,2,12,3,4,1.1878777 +3,27,9,1,2,14,3,5,0.3888888 +5,32,16.5,3,3,16,4,6,0.2121212 +5,22,6,1,2,12,3,2,0.5833333 +3,27,13,3,2,12,2,4,0.2692307 +5,22,2.5,0,3,12,3,3,1.3999996 +4,32,2.5,0,2,14,5,6,1.3999996 +3,27,6,1,2,14,3,5,2.041666 +3,27,6,2,3,12,3,6,0.1666666 +2,32,13,2,3,12,3,3,0.2692307 +4,32,16.5,2,3,14,2,5,0.2121212 +3,27,6,2,2,12,5,2,2 +4,27,9,2,1,17,4,5,2.1777763 +4,37,16.5,2,2,12,4,4,1.1878777 +3,22,2.5,0,3,16,3,4,4.7999992 +4,27,9,2,2,14,5,5,1.3611107 +3,32,16.5,4,2,12,3,5,1.696969 +3,27,9,2,4,14,3,2,2.1777763 +4,32,13,2,2,16,2,5,0.2692307 +2,37,23,2,3,14,3,5,0.5217391 +4,22,2.5,0,1,17,3,4,17.9199982 +4,27,6,0,1,17,4,4,0.1666666 +4,27,6,1,2,12,3,6,7 +3,22,6,0,3,12,3,2,0.5833333 +3,42,23,3,2,12,3,2,1.826086 +4,27,6,3,3,16,3,2,2.041666 +4,32,16.5,3,3,12,3,3,1.1878777 +3,27,13,2,3,12,5,5,3.4461536 +3,27,16.5,2,4,14,3,4,0.2121212 +3,27,6,3,2,14,2,2,0.1666666 +5,22,2.5,0,3,12,5,2,0.4 +4,42,23,2,2,16,5,5,1.217391 +1,22,2.5,1,3,14,3,5,4.8999996 +4,42,23,3,3,16,4,3,0.1521739 +3,32,16.5,2,4,16,4,4,0.7424242 +3,32,16.5,2,4,12,3,3,0.7272727 +4,22,2.5,1,2,14,3,3,4.7999992 +3,22,6,1,3,14,3,5,0.5833333 +4,27,6,0,2,12,3,4,0.1666666 +5,32,16.5,4,4,9,2,4,0.0606061 +1,27,6,1,3,20,4,4,2 +2,22,2.5,0,1,14,3,2,4.8999996 +5,27,9,3,4,14,2,5,0.3888888 +3,27,6,1,2,16,3,1,7 +4,32,16.5,2,1,16,5,5,2.545454 +5,27,6,0,3,12,3,3,2.041666 +4,42,23,2,3,12,5,2,0.5326087 +3,27,9,2,2,12,3,4,2.1777763 +4,27,9,0,3,14,3,3,2.1777763 +4,27,13,2,3,17,4,2,3.4461536 +5,32,16.5,2,3,17,4,4,1.1878777 +4,27,6,1,2,12,5,4,3.2666645 +4,42,23,4,4,12,5,5,0.5326087 +1,42,23,2,4,14,3,2,0.3478261 +2,22,2.5,1,3,14,3,4,1.3999996 +1,32,9,3,2,14,4,4,1.3611107 +3,27,6,1,3,12,4,3,0.5833333 +4,27,2.5,0,1,16,4,1,4.7999992 +5,42,23,2,1,17,4,5,0.5217391 +5,32,16.5,2,3,14,3,5,0.4848484 +4,32,16.5,2,4,12,3,4,2.545454 +5,42,23,3,3,14,4,2,0.5326087 +4,37,16.5,2,1,16,3,5,0.7272727 +2,32,9,0,2,12,3,4,0.1111111 +4,37,16.5,2,4,12,3,4,0.4848484 +3,32,6,3,2,14,3,4,0.5833333 +5,37,23,2,2,14,3,5,0.3478261 +2,32,13,0,2,12,3,4,1.5076914 +4,32,13,2,3,14,3,4,3.2307692 +4,37,16.5,3,3,14,3,3,0.2121212 +4,22,2.5,0,2,14,3,5,4.7999992 +5,42,23,4,2,14,3,4,0.8521735 +3,32,16.5,2,4,12,3,5,1.1878777 +4,42,23,4,3,9,3,5,1.9478254 +5,22,2.5,1,2,12,3,4,4.8999996 +2,32,9,0,2,14,3,4,0.8888888 +5,32,13,1,2,14,3,5,0.2692307 +2,32,16.5,3,2,12,5,2,0.7424242 +5,27,6,1,1,14,5,5,2 +4,42,23,4,2,14,3,4,0.8521735 +3,27,6,1,2,14,5,2,3.2666645 +3,32,13,1,1,16,4,2,0.6153846 +2,27,6,2,3,12,3,5,0.1666666 +4,27,9,2,3,12,4,4,1.3611107 +5,22,2.5,1,1,14,3,2,11.1999998 +2,22,2.5,1,3,14,5,6,7.8399963 +5,22,2.5,0,1,16,5,4,0.4 +4,37,23,4,3,14,3,5,1.9478254 +2,32,16.5,4,3,12,3,4,0.7424242 +3,22,6,1,3,12,3,4,2.041666 +3,32,9,2,3,12,3,4,16 +1,27,2.5,0,2,12,4,3,4.8999996 +5,42,23,2,3,14,3,4,0.5217391 +4,27,13,1,2,12,3,4,0.0769231 +4,32,9,2,3,17,3,4,1.3611107 +5,42,23,4,4,14,5,4,0.5326087 +4,27,6,2,3,12,2,2,2.041666 +5,32,16.5,2,4,16,5,6,1.696969 +5,27,9,2,1,16,2,5,0.3888888 +4,22,6,1,2,12,2,1,2.041666 +5,32,13,2,1,12,3,4,0.0769231 +3,42,23,2,3,12,3,5,0.1521739 +4,27,16.5,4,3,17,4,6,2.545454 +3,37,16.5,2,3,12,3,4,0.7272727 +5,27,6,2,3,14,4,2,3.2666645 +2,17.5,2.5,1,3,12,3,2,1.3999996 +4,22,2.5,1,2,14,3,5,1.3999996 +5,27,6,1,3,14,3,3,2.041666 +5,27,6,2,2,12,4,4,0.1666666 +3,37,23,3,4,12,5,2,0.8521735 +3,27,6,3,2,16,4,4,0.5833333 +3,22,2.5,1,2,12,3,2,1.3999996 +5,27,13,3,1,12,3,5,1.5076914 +4,27,9,1,4,14,3,3,1.3611107 +1,37,23,5.5,2,12,3,4,0.5217391 +5,42,23,3,1,16,4,6,0.8521735 +4,27,2.5,0,1,16,5,6,7.8399963 +4,32,13,2,2,12,5,4,0.9423077 +3,27,9,2,2,14,5,5,1.3611107 +4,22,2.5,0,1,14,3,4,4.8999996 +4,22,2.5,0,1,12,3,2,1.3999996 +4,27,6,1,3,17,4,5,0.1666666 +4,37,23,5.5,2,12,3,4,0.5217391 +5,32,16.5,2,1,12,2,4,0.2121212 +2,22,6,2,4,17,3,5,2 +2,22,2.5,0,1,17,4,4,26.8799896 +4,27,6,0,3,14,2,2,7.4666672 +5,22,2.5,0,2,14,3,5,1.3999996 +5,42,23,3,3,12,3,5,2.782608 +5,32,13,2,2,14,5,4,0.9423077 +5,32,13,2,2,14,5,4,1.5076914 +3,42,23,5.5,3,20,6,4,2.9217386 +5,22,2.5,1,1,12,3,5,1.3999996 +2,22,2.5,0,1,16,3,5,17.9199982 +3,42,23,2,3,16,4,5,0.1521739 +3,27,6,0,2,12,3,4,4.666666 +3,27,13,0,3,12,3,5,0.9423077 +4,22,2.5,0,2,12,2,4,4.7999992 +3,32,13,2,3,14,3,3,1.5076914 +5,37,16.5,3,2,12,3,5,0.7272727 +3,27,9,1,3,14,3,3,2.1777763 +5,42,23,2,2,12,5,4,0.8521735 +5,27,2.5,0,1,17,4,5,4.8999996 +3,32,0.5,0,2,16,4,5,24.5 +4,32,13,2,3,12,3,1,0.0769231 +3,42,23,5.5,3,12,3,2,0.1521739 +1,42,23,2,3,14,3,5,0.8521735 +3,37,16.5,2,1,17,4,2,0.7272727 +4,27,9,1,1,14,3,4,1.3611107 +4,22,2.5,0,3,12,3,2,1.3999996 +4,37,23,5.5,2,14,3,6,1.217391 +5,32,9,3,2,14,2,6,0.3888888 +4,37,9,3,3,16,4,2,2.1777763 +5,37,16.5,3,3,16,3,4,1.696969 +4,32,13,2,2,12,5,5,0.2692307 +3,37,23,3,4,12,3,5,0.5217391 +4,42,23,3,4,16,4,2,1.217391 +3,27,6,1,2,12,3,4,0.5833333 +5,42,23,2,3,16,3,5,0.5326087 +5,27,6,1,3,20,5,6,1.333333 +3,37,16.5,3,2,12,3,2,2.7151508 +3,27,13,2,3,12,3,5,0.9230769 +5,37,23,3,1,12,3,4,0.0434783 +3,42,23,5.5,3,12,3,4,0.0434783 +2,27,9,0,2,17,2,3,1.3611107 +2,22,2.5,0,3,12,2,3,0.4 +4,27,13,2,2,12,3,2,0.0769231 +4,32,9,1,1,16,4,5,4.9777775 +3,32,9,3,3,14,3,6,2.1777763 +4,32,13,1,3,14,5,5,0.2692307 +5,22,2.5,0,3,16,4,1,1.3999996 +3,27,6,1,2,17,4,4,4.666666 +4,27,2.5,0,2,16,4,2,7.8399963 +3,27,6,0,1,16,4,4,1.333333 +3,42,16.5,4,3,16,2,4,0.2121212 +1,27,2.5,1,3,16,4,4,1.3999996 +5,27,9,1,2,14,4,4,3.1111107 +4,42,23,2,3,12,3,5,1.826086 +4,27,13,2,2,12,3,4,0.9230769 +5,32,13,1,1,14,4,4,0.9423077 +4,22,2.5,1,2,14,3,4,7.8399963 +2,27,9,2,2,14,5,5,4.666666 +5,22,2.5,0,4,14,3,4,4.8999996 +3,37,16.5,3,3,14,3,3,0.2121212 +3,27,6,1,3,14,3,4,7 +4,32,13,2,1,12,2,4,3.4461536 +3,42,23,2,2,16,4,5,0.5217391 +4,37,16.5,3,3,12,3,5,0.2121212 +4,32,13,2,1,12,2,4,1.5076914 +3,42,23,5.5,2,12,3,4,2.9217386 +3,27,9,1,1,14,3,4,1.3611107 +5,32,16.5,2,3,12,3,2,0.7424242 +5,32,16.5,1,2,14,5,5,0.2121212 +5,27,6,2,2,20,6,6,4.666666 +4,27,6,2,3,12,3,2,0.1666666 +3,22,6,1,3,14,5,4,0.5833333 +5,27,16.5,3,3,14,5,5,0.2121212 +5,22,2.5,0,2,14,5,6,4.8999996 +3,42,23,5.5,3,14,3,5,0.5217391 +4,37,23,3,2,12,3,3,0.5217391 +1,42,16.5,3,4,17,4,4,1.1878777 +3,27,2.5,0,2,16,4,2,4.7999992 +2,27,6,2,2,12,5,1,0.1666666 +5,27,9,3,2,16,4,4,0.1111111 +5,27,6,2,2,12,5,3,0.5833333 +3,32,16.5,3,1,14,2,2,0.4848484 +4,27,6,2,2,14,3,4,0.5833333 +4,27,0.5,0,3,17,4,6,7 +4,22,6,1,2,12,3,3,3.2666645 +5,42,23,2,1,14,6,6,2.9217386 +4,27,6,2,4,14,5,4,0.1666666 +5,27,6,1,2,16,4,5,2.041666 +3,42,13,0,3,17,4,5,0.2692307 +3,42,23,3,3,12,2,2,1.217391 +5,27,6,1,1,16,4,4,2.041666 +5,22,6,0,3,14,3,4,2.041666 +3,42,23,3,2,14,3,4,0.8521735 +4,22,6,0,2,16,4,5,0.5833333 +5,32,13,2,1,14,3,5,3.2307692 +3,22,6,2,3,14,2,2,11.1999989 +5,27,2.5,0,2,14,3,2,1.3999996 +2,42,23,5.5,2,14,3,2,0.0434783 +4,37,23,3,1,14,3,4,0.8521735 +5,22,2.5,0,1,14,3,4,7.8399963 +5,27,2.5,0,1,17,4,5,0.4 +4,27,9,1,2,16,3,5,0.3888888 +4,27,9,3,3,14,3,4,1.3611107 +4,42,23,4,2,16,4,5,0.8521735 +4,37,16.5,4,3,14,3,2,0.7424242 +4,32,9,0,2,12,3,3,1.333333 +4,32,13,0,2,14,3,6,0.9423077 +2,22,6,2,2,12,3,4,0.5833333 +3,42,23,3,2,14,5,5,0.5326087 +4,32,13,0,3,14,3,5,0.9230769 +4,37,16.5,4,3,14,3,4,0.7424242 +3,37,23,3,2,12,3,5,0.8521735 +4,32,16.5,2,1,14,3,4,2.545454 +4,27,6,1,2,16,3,5,2 +4,22,2.5,0,2,16,4,5,3.1999998 +2,22,2.5,0,3,12,3,2,1.3999996 +4,27,6,1,2,14,3,3,1.333333 +3,32,16.5,2,2,12,3,2,2.7151508 +5,17.5,2.5,2,2,12,2,5,4.7999992 +3,22,2.5,0,3,20,3,1,7.8399963 +2,37,23,3,3,12,3,2,0.8521735 +4,32,16.5,5.5,3,14,5,5,0.7424242 +3,42,23,3,4,14,3,5,0.1521739 +5,22,2.5,0,2,14,2,3,4.8999996 +4,27,9,0,2,14,3,4,3.1111107 +3,22,2.5,2,2,12,3,4,0.4 +3,42,23,2,4,14,4,6,1.217391 +5,42,23,5.5,2,14,3,2,0.5326087 +4,27,6,0,3,14,6,6,2.041666 +4,42,23,4,3,14,3,4,0.5217391 +3,32,16.5,2,2,12,3,5,0.3393939 +3,27,2.5,0,1,16,3,4,4.8999996 +3,32,13,2,4,14,4,2,5.1692305 +2,37,16.5,2,2,14,3,5,1.1878777 +4,22,6,2,2,12,2,4,2 +4,32,9,3,1,16,2,4,0.1111111 +3,42,23,4,2,12,3,5,0.3478261 +3,32,13,2,3,12,3,3,2.1538458 +4,22,2.5,0,2,14,2,1,0.4 +3,37,16.5,2,2,12,2,2,0.7272727 +3,27,6,0,2,14,3,5,2 +4,42,23,3,3,12,5,4,2.9217386 +4,42,23,3,2,14,5,4,1.217391 +2,42,23,5.5,4,14,2,5,0.1521739 +5,27,6,0,2,12,5,4,0.5833333 +4,32,16.5,1,2,14,3,4,0.7424242 +4,37,16.5,3,3,12,4,2,1.696969 +5,42,23,5.5,3,14,3,6,0.1521739 +3,37,16.5,3,2,14,5,4,0.7272727 +2,37,13,1,1,16,4,4,0.9423077 +4,27,6,0,3,16,5,6,0.5833333 +4,42,23,4,3,16,4,2,0.8521735 +5,27,2.5,0,2,14,3,4,3.1999998 +2,42,23,3,1,12,3,5,2.9217386 +5,37,13,2,1,14,3,6,0.2692307 +4,32,16.5,2,1,12,5,2,1.1878777 +4,37,16.5,3,1,14,3,2,0.4848484 +3,27,2.5,0,1,14,5,4,1.3999996 +4,22,2.5,0,1,14,3,3,4.8999996 +4,37,16.5,2,2,14,3,5,1.1878777 +3,27,6,2,2,12,3,4,0.1666666 +4,22,6,1,2,12,3,4,0.1666666 +5,32,13,2,2,14,4,5,0.2692307 +2,37,23,3,3,12,5,2,0.5326087 +2,37,16.5,2,3,14,3,5,2.545454 +4,32,16.5,2,2,14,5,4,0.7272727 +5,37,16.5,5.5,4,20,4,6,0.7424242 +3,32,16.5,3,2,12,3,2,1.1878777 +3,27,9,4,3,14,3,5,2.1777763 +3,37,13,0,1,14,5,4,3.2307692 +2,27,2.5,2,2,14,4,5,4.8999996 +4,27,9,2,1,14,3,4,0.8888888 +4,42,23,2,3,14,3,4,0.3478261 +5,42,23,2,1,14,5,5,0.8521735 +4,42,23,4,2,12,3,3,0.5217391 +4,37,16.5,4,3,14,3,5,0.2121212 +4,32,16.5,3,2,12,2,2,1.1878777 +2,37,23,2,2,12,4,4,0.0434783 +4,42,23,1,3,20,4,4,0.5217391 +4,22,2.5,1,2,14,4,4,4.8999996 +1,32,13,2,2,14,4,4,2.1538458 +3,42,23,3,2,14,3,5,1.826086 +4,22,2.5,0,2,16,3,2,1.3999996 +5,37,23,3,3,12,3,5,0.1521739 +3,22,2.5,0,2,14,2,2,4.8999996 +1,42,23,3,3,12,5,5,1.9478254 +3,22,2.5,0,2,14,3,4,4.8999996 +3,37,23,2,3,12,3,5,1.9478254 +4,22,2.5,0,2,12,5,4,0.4 +5,32,9,2,3,14,5,4,0.1111111 +1,37,16.5,4,2,14,3,6,1.1878777 +3,42,23,1,3,12,3,4,0.8521735 +5,27,9,2,1,12,3,2,1.3611107 +4,22,2.5,1,2,14,2,4,17.9199982 +5,42,23,3,2,14,3,5,0.8521735 +4,27,6,1,3,14,5,5,2 +5,22,2.5,0,1,14,3,1,1.3999996 +3,37,16.5,2,3,16,3,4,0.7272727 +3,32,16.5,2,3,12,5,5,2.545454 +5,37,16.5,3,3,14,2,5,0.7272727 +3,27,6,2,1,16,4,3,0.5833333 +4,27,9,1,2,20,4,4,0.1111111 +4,27,6,0,2,14,3,4,2.041666 +5,32,13,2,2,14,3,4,0.9423077 +4,42,23,2,2,12,4,4,1.217391 +2,37,16.5,2,2,12,5,4,0.4848484 +4,27,2.5,0,2,17,5,5,0.4 +4,37,16.5,2,2,17,4,5,0.2121212 +4,32,13,2,2,12,3,3,0.9230769 +4,32,9,2,1,14,3,4,1.3611107 +4,32,9,2,2,14,3,5,0.1111111 +4,32,13,2,3,12,5,5,0.9423077 +4,32,13,3,2,14,3,2,2.1538458 +4,22,2.5,1,1,14,2,2,1.3999996 +5,27,16.5,2,3,12,5,4,0.2121212 +4,32,2.5,0,3,14,2,6,4.8999996 +3,32,16.5,1,2,14,2,4,0.2121212 +3,37,16.5,3,2,16,4,3,1.1878777 +5,42,23,4,2,12,5,5,0.8521735 +5,27,6,2,3,14,3,4,3.2666645 +4,22,2.5,1,3,12,3,2,1.3999996 +4,42,23,3,1,20,6,6,1.217391 +4,32,9,2,1,17,4,5,2.1777763 +5,32,2.5,0,2,20,6,6,1.3999996 +3,27,6,1,2,14,3,6,0.5833333 +1,22,2.5,0,1,14,4,4,4.8999996 +3,32,16.5,2,2,14,3,2,0.7424242 +4,42,23,2,2,12,3,3,0.1521739 +4,22,6,1,3,14,3,5,0.5833333 +5,42,23,3,2,14,3,5,0.5326087 +3,27,13,2,2,12,4,3,3.4461536 +4,32,13,2,2,14,5,4,0.2692307 +3,27,2.5,0,3,14,3,4,3.1999998 +2,22,2.5,0,3,12,3,2,0.4 +5,42,23,2,2,20,4,4,1.826086 +3,27,6,1,2,14,2,2,0.5833333 +5,42,23,2,2,20,3,6,0.5326087 +3,37,23,4,1,12,3,2,0.3478261 +5,42,23,4,4,20,6,6,6.260869 +5,27,6,0,1,17,4,5,1.333333 +3,32,13,2,1,17,4,6,0.2692307 +2,27,2.5,0,1,14,5,5,1.3999996 +4,27,9,3,2,12,3,6,1.333333 +5,27,6,1,1,14,3,5,2 +4,22,0.5,0,2,14,4,5,24.5 +4,17.5,2.5,1,2,12,3,2,1.3999996 +3,27,2.5,1,2,14,3,4,1.3999996 +5,32,16.5,3,2,14,2,4,0.0606061 +4,42,23,5.5,1,14,3,5,0.5326087 +5,22,2.5,0,1,14,3,4,4.8999996 +5,42,23,2,2,20,1,5,0.1521739 +5,42,23,3,3,14,3,5,0.0434783 +2,42,23,3,3,16,4,4,0.1521739 +4,32,16.5,4,2,12,3,5,0.4848484 +4,37,23,4,2,12,3,4,0.8521735 +4,42,23,2,1,14,5,3,0.5326087 +5,22,2.5,0,4,14,3,4,1.3999996 +4,22,2.5,0,1,16,3,5,1.3999996 +4,42,23,3,3,14,5,5,1.9478254 +4,42,23,3,2,14,3,5,1.9478254 +2,22,2.5,0,2,14,3,5,0.4 +3,42,23,3,1,20,4,4,0.0434783 +3,37,16.5,3,4,12,3,2,2.545454 +4,27,16.5,2,1,12,3,2,0.2121212 +3,27,6,1,1,16,4,1,3.2666645 +5,32,13,2,2,14,4,4,0.9230769 +4,32,13,3,2,12,2,4,0.6153846 +5,42,13,0,1,16,3,6,1.5076914 +4,32,9,2,3,14,3,4,2.1777763 +3,42,16.5,1,3,17,3,3,0.7424242 +4,42,23,3,1,14,3,5,0.8521735 +1,32,13,3,3,14,3,4,1.5076914 +4,27,6,2,2,14,3,5,1.333333 +4,27,6,2,2,14,5,4,3.2666645 +5,27,2.5,0,3,16,3,5,1.3999996 +4,22,2.5,0,1,16,4,2,1.3999996 +4,27,6,3,3,14,4,2,2.041666 +4,42,23,2,1,16,4,5,0.1521739 +3,27,6,1,4,14,5,4,0.5833333 +3,32,13,0,2,16,3,6,0.9230769 +1,27,6,2,3,14,3,2,3.2666645 +3,32,13,2,2,14,3,2,2.1538458 +3,37,16.5,4,2,14,4,4,0.7424242 +4,37,16.5,3,4,14,4,4,0.2121212 +4,32,16.5,4,3,14,3,5,0.2121212 +5,27,2.5,0,1,14,3,5,4.7999992 +3,22,2.5,0,2,14,3,1,0.4 +5,32,23,2,3,14,5,6,0.5217391 +3,27,9,1,3,14,3,2,1.333333 +5,37,23,3,2,14,5,4,0.3478261 +3,27,6,1,3,20,4,4,3.2666645 +1,27,9,1,3,14,2,4,0.3888888 +4,32,13,4,2,16,4,2,0.2692307 +3,32,16.5,3,3,14,5,4,4.0727262 +4,42,23,3,3,14,4,5,0.1521739 +4,32,16.5,4,2,14,2,5,1.696969 +3,27,9,4,4,14,4,4,0.3888888 +4,27,6,1,2,12,2,4,0.1666666 +2,22,6,1,3,14,3,5,2 +4,22,2.5,1,2,14,3,5,1.3999996 +3,22,2.5,1,3,14,3,4,3.1999998 +5,22,2.5,0,1,14,3,2,1.3999996 +5,37,23,3,1,12,5,2,1.826086 +3,27,9,1,1,14,3,6,4.666666 +4,27,2.5,0,1,14,5,5,7.8399963 +5,27,2.5,0,1,16,4,2,1.3999996 +3,22,6,2,3,12,3,2,0.5833333 +4,37,23,2,2,12,3,2,0.1521739 +3,22,2.5,0,2,14,3,4,4.7999992 +5,27,2.5,0,2,17,4,5,1.3999996 +4,22,2.5,0,1,14,5,2,4.8999996 +4,27,6,1,2,14,3,3,7 +4,27,6,2,2,14,4,4,0.5833333 +4,32,13,0,2,12,3,3,3.2307692 +4,27,9,2,2,12,2,4,1.3611107 +3,22,2.5,0,1,14,3,2,7.8399963 +5,27,2.5,0,1,14,2,4,7.8399963 +3,37,23,4,2,14,3,4,1.9478254 +5,27,9,3,2,16,4,4,1.333333 +4,22,2.5,0,2,12,2,2,1.3999996 +2,32,16.5,3,1,14,4,4,1.1878777 +3,27,9,2,2,12,3,2,1.3611107 +4,32,16.5,3,1,16,4,5,0.7272727 +3,27,9,1,2,12,5,4,0.1111111 +5,22,2.5,0,1,14,2,2,7.8399963 +4,42,23,2,3,14,5,5,0.5326087 +5,27,6,1,4,16,4,1,0.1666666 +4,22,2.5,0,1,12,2,2,4.8999996 +3,22,0.5,0,1,14,5,5,7 +5,42,23,5.5,3,14,5,4,1.9478254 +4,37,16.5,2,2,12,3,4,0.2121212 +4,22,2.5,0,2,12,3,3,3.1999998 +3,22,6,1,2,12,3,2,2.041666 +4,42,23,4,3,17,6,3,2.782608 +4,22,6,0,4,14,5,4,2.041666 +2,27,9,3,3,14,4,4,0.1111111 +3,27,6,1,1,14,5,4,7 +5,42,23,5.5,3,16,4,6,0.0434783 +4,37,13,3,1,12,4,4,0.6153846 +4,37,16.5,2,3,12,5,5,0.7272727 +4,37,13,3,3,16,3,4,0.2692307 +5,22,6,2,2,12,2,4,4.666666 +4,27,2.5,0,2,17,4,6,16.7999878 +2,22,6,2,3,14,3,5,3.2666645 +3,22,6,1,2,12,4,4,1.333333 +5,32,9,2,2,14,4,4,0.1111111 +3,27,9,3,2,12,3,2,0.3888888 +3,32,13,2,3,14,3,5,0.2692307 +2,27,9,1,2,16,4,5,4.9777775 +4,27,6,1,1,17,3,5,0.5833333 +4,32,2.5,0,2,20,6,6,16.7999878 +5,32,13,2,1,12,3,5,0.9423077 +4,32,16.5,1,1,14,5,5,1.696969 +5,27,2.5,0,3,12,4,5,0.4 +3,42,23,4,3,16,4,2,0.3478261 +4,22,6,1,3,14,3,4,2.041666 +4,27,6,0,3,14,3,4,0.1666666 +4,17.5,2.5,0,2,12,3,4,7.8399963 +4,22,2.5,0,1,12,3,4,0.4 +1,37,13,3,1,17,5,6,0.0769231 +2,32,16.5,2,1,12,5,2,2.7151508 +3,37,23,3,3,12,3,5,0.1521739 +5,27,9,1,3,12,3,5,1.3611107 +4,27,6,1,1,12,3,3,3.2666645 +3,37,23,4,2,12,3,2,1.826086 +4,37,23,5.5,3,12,5,5,0.1521739 +1,22,2.5,1,1,12,3,4,1.3999996 +3,22,2.5,0,1,12,3,5,4.7999992 +4,27,2.5,0,1,16,4,2,7.8399963 +4,32,13,1,3,16,3,5,0.6153846 +4,27,2.5,0,2,12,3,4,7.8399963 +2,32,9,0,2,16,3,2,1.3611107 +5,42,23,4,1,20,4,5,0.5217391 +4,22,6,1,1,12,3,5,2 +3,42,23,4,2,14,3,5,0.3478261 +5,27,6,0,3,12,3,4,2.041666 +4,42,16.5,2,2,12,3,4,0.2121212 +5,22,2.5,0,2,16,4,1,3.1999998 +4,42,23,5.5,4,20,4,2,0.1521739 +5,27,9,2,3,14,4,5,0.3888888 +4,27,2.5,1,3,16,6,5,4.7999992 +3,27,9,0,3,16,5,5,1.333333 +5,37,23,3,2,14,3,5,0.1521739 +4,37,16.5,2,3,17,4,2,1.696969 +3,27,6,1,1,17,4,5,2.041666 +5,32,16.5,3,4,14,3,6,0.7272727 +5,37,16.5,2,3,12,3,4,0.7424242 +3,27,6,1,4,17,4,5,7 +3,37,16.5,3,2,14,3,4,2.545454 +5,27,9,1,1,14,3,4,0.3888888 +3,32,9,3,2,14,5,5,1.3611107 +2,42,23,3,2,12,3,5,0.8521735 +4,32,13,2,1,14,3,5,1.5076914 +4,22,2.5,1,2,14,3,2,4.7999992 +5,27,9,2,2,12,3,6,0.3888888 +5,32,16.5,2,1,12,3,6,0.0606061 +4,32,16.5,2,2,12,2,4,1.696969 +4,42,23,3,2,12,3,5,1.9478254 +4,32,9,2,3,9,3,5,1.333333 +2,27,6,2,3,12,3,4,2.041666 +5,42,23,2,3,16,4,5,0.2434782 +4,37,23,3,4,12,5,4,0.5326087 +4,32,16.5,3,2,12,5,5,3.878787 +3,27,9,1,2,12,3,4,7.1111107 +2,37,13,2,3,14,3,4,0.9230769 +4,32,16.5,3,3,14,4,3,0.2121212 +3,32,16.5,4,3,12,2,2,1.1878777 +3,42,23,4,2,12,4,4,1.826086 +3,42,23,3,3,17,4,6,0.0434783 +5,27,9,3,1,14,3,6,1.333333 +4,27,6,1,3,14,4,5,0.5833333 +3,22,2.5,0,2,12,3,5,1.3999996 +3,22,2.5,0,2,14,5,4,0.4 +4,32,16.5,3,3,9,5,5,0.2121212 +4,27,2.5,0,3,16,4,6,4.8999996 +3,27,6,1,2,12,3,5,0.5833333 +3,32,16.5,2,3,16,4,4,0.7424242 +5,42,23,3,3,12,4,2,1.217391 +3,27,6,1,3,16,2,2,2 +4,27,9,2,3,14,5,5,1.333333 +4,27,9,1,4,12,3,2,3.1111107 +3,37,13,2,3,16,2,4,1.5076914 +4,22,6,1,2,14,3,5,0.5833333 +5,37,13,2,3,14,5,5,0.6153846 +3,22,2.5,0,1,14,3,1,4.8999996 +4,37,16.5,3,3,12,5,5,0.2121212 +1,32,13,2,2,17,4,6,3.2307692 +3,22,2.5,0,3,14,5,4,3.1999998 +3,22,6,1,3,12,4,2,2 +4,22,2.5,1,3,14,2,2,16.7999878 +2,42,23,2,1,14,3,5,0.1521739 +1,42,23,3,1,17,4,5,1.826086 +3,37,16.5,3,3,16,6,4,1.696969 +4,27,6,0,2,12,3,4,7 +3,37,16.5,4,1,12,3,6,0.7272727 +4,27,6,2,2,12,3,2,0.1666666 +3,32,9,0,1,16,4,5,7.4666662 +5,22,2.5,0,3,14,4,4,0.4 +2,37,16.5,2,4,12,3,3,0.2121212 +3,22,2.5,0,3,12,3,2,1.3999996 +4,27,6,2,1,14,2,2,2.041666 +3,32,16.5,3,2,12,4,2,0.7424242 +2,27,2.5,0,2,16,4,5,17.9199982 +3,42,23,5.5,2,20,4,3,0.1521739 +1,37,16.5,2,3,14,3,5,0.7272727 +4,22,6,2,2,12,3,5,3.2666645 +4,42,23,2,3,20,4,4,0.8521735 +3,22,2.5,0,2,14,3,3,3.1999998 +4,27,9,0,3,17,5,6,1.333333 +5,27,2.5,0,2,16,3,2,11.1999998 +5,27,9,2,3,14,3,3,0.3888888 +2,27,6,1,1,16,4,5,2 +3,42,23,2,2,14,3,5,0.5217391 +4,27,9,2,3,12,3,5,1.3611107 +3,37,23,5.5,2,12,2,5,0.3478261 +4,27,6,1,2,14,3,4,3.2666645 +3,27,2.5,0,3,12,3,5,4.7999992 +1,27,2.5,0,2,14,3,2,4.8999996 +3,27,6,1,3,16,5,4,2 +4,27,6,2,3,16,4,2,3.2666645 +4,27,13,3,4,14,2,4,1.5076914 +3,27,9,2,3,16,4,5,4.666666 +5,27,13,3,2,14,5,4,0.9423077 +5,22,6,1,3,12,4,2,7 +1,32,16.5,2,3,16,4,4,0.7272727 +1,42,23,3,3,20,4,4,0.8521735 +3,27,2.5,0,1,16,5,5,3.1999998 +5,42,23,5.5,3,14,4,5,0.0434783 +3,22,6,1,1,16,3,4,3.2666645 +1,22,2.5,0,1,12,3,2,1.3999996 +2,22,2.5,1,2,14,3,4,11.1999998 +5,27,2.5,0,1,17,4,4,1.3999996 +2,27,6,1,3,12,3,6,3.2666645 +3,37,9,2,1,17,4,3,0.3888888 +3,42,23,2,3,12,3,3,1.826086 +4,37,16.5,4,3,17,4,2,1.1878777 +4,32,13,2,2,14,5,5,0.2692307 +5,27,9,2,3,14,4,4,1.333333 +5,42,16.5,4,3,16,5,4,0.0606061 +1,37,13,1,4,16,3,5,1.5076914 +5,32,9,3,2,16,4,5,0.3888888 +3,22,2.5,0,2,12,3,3,25.5999908 +3,27,2.5,0,4,14,5,6,0.4 +3,22,2.5,0,2,12,3,5,1.3999996 +2,32,16.5,2,1,16,6,6,0.7272727 +4,32,9,1,3,14,3,5,0.8888888 +2,42,16.5,2,3,12,3,3,1.1878777 +4,37,16.5,3,2,12,5,2,4.0727262 +2,37,16.5,3,2,12,3,5,0.2121212 +4,22,2.5,1,3,12,3,4,1.3999996 +3,32,16.5,3,1,12,5,4,0.7272727 +3,32,9,1,1,14,2,4,2.1777763 +1,42,23,3,2,14,3,5,0.8521735 +5,22,2.5,0,1,14,3,2,7.8399963 +3,42,23,4,1,14,3,5,0.1521739 +4,27,9,2,2,12,1,5,3.1111107 +4,27,9,1,3,14,3,5,3.1111107 +4,22,2.5,0,1,16,4,4,1.3999996 +4,37,16.5,5.5,3,12,2,4,0.2121212 +3,22,6,2,1,12,3,4,1.333333 +1,42,16.5,5.5,2,12,2,5,0.2121212 +3,32,9,2,4,17,4,2,2.1777763 +4,32,13,2,2,12,3,5,0.9423077 +3,37,16.5,2,2,16,4,5,1.1878777 +3,37,16.5,3,3,17,4,6,0.7272727 +4,32,13,2,2,14,5,4,1.5076914 +3,42,23,3,1,14,4,4,1.217391 +1,32,16.5,2,3,14,4,2,2.545454 +1,42,23,2,3,12,3,4,0.8521735 +5,37,6,2,3,17,4,4,0.5833333 +5,22,2.5,0,3,16,3,5,16.7999878 +3,32,16.5,2,1,12,3,4,0.7272727 +1,27,6,2,2,12,2,2,0.5833333 +3,42,23,4,2,12,3,5,0.8521735 +5,27,6,2,1,14,4,4,2.041666 +4,27,6,2,2,12,3,2,3.2666645 +4,22,2.5,0,1,16,3,4,3.1999998 +4,27,9,0,2,12,3,4,1.3611107 +4,22,6,0,1,14,5,6,2 +3,42,16.5,2,1,14,3,6,0.7272727 +3,32,16.5,4,1,12,3,4,1.696969 +1,22,2.5,1,1,12,3,4,7.8399963 +4,37,16.5,3,2,12,3,5,2.545454 +3,22,6,3,2,14,3,2,3.2666645 +5,22,2.5,0,2,12,3,5,7.8399963 +2,22,2.5,0,3,14,3,3,4.8999996 +3,22,2.5,0,3,16,4,4,1.3999996 +3,22,0.5,0,1,14,3,2,39.1999817 +4,22,2.5,0,3,14,3,4,0.4 +4,27,9,2,2,14,4,2,1.3611107 +5,37,16.5,2,3,14,3,5,1.1878777 +4,32,13,1,3,14,4,5,0.9423077 +3,32,13,4,3,12,5,4,0.2692307 +3,27,6,3,3,14,3,5,2.041666 +4,32,13,2,2,14,3,4,0.9230769 +2,42,23,2,2,14,5,5,0.8521735 +4,37,16.5,2,3,12,4,4,0.7272727 +5,27,2.5,1,3,12,4,5,4.8999996 +3,22,2.5,1,1,12,2,2,0.4 +2,27,6,2,2,14,4,4,0.5833333 +3,42,23,3,2,14,3,3,0.8521735 +2,22,2.5,1,2,14,2,2,7.8399963 +5,22,6,1,2,17,4,2,7 +5,32,13,2,2,14,2,2,0.6153846 +1,32,16.5,2,2,17,4,2,0.7272727 +2,32,16.5,3,2,14,4,5,0.2121212 +3,37,16.5,2,3,14,5,2,0.7424242 +4,42,23,5.5,1,12,3,5,0.8521735 +4,42,23,3,4,14,3,4,0.5217391 +4,27,6,0,2,16,4,4,1.333333 +4,27,2.5,2,2,16,4,5,1.3999996 +3,27,9,1,2,12,2,2,0.3888888 +4,27,6,2,3,14,4,4,2 +4,27,9,2,2,12,4,5,0.3888888 +2,27,6,0,3,14,3,6,2 +4,27,9,2,3,16,4,6,1.3611107 +4,22,2.5,1,3,14,5,1,0.4 +2,27,2.5,1,1,14,5,4,7.8399963 +4,37,16.5,3,3,14,3,4,0.2121212 +5,32,13,2,1,14,3,6,0.9230769 +2,27,9,0,2,17,4,5,1.3611107 +4,32,16.5,3,3,12,3,3,0.7272727 +5,42,23,3,3,12,3,5,1.217391 +1,37,16.5,1,3,12,2,3,0.7424242 +5,27,2.5,0,2,14,2,4,4.8999996 +4,37,16.5,1,3,14,3,6,0.7424242 +5,32,13,1,1,20,2,6,1.5076914 +5,27,6,2,2,14,4,5,0.5833333 +4,27,2.5,0,1,20,6,1,7.8399963 +4,42,23,4,3,12,2,3,0.3478261 +3,27,9,1,3,17,5,5,2.1777763 +3,22,2.5,1,2,12,2,2,3.1999998 +4,27,6,0,2,14,3,6,2.041666 +4,32,13,2,1,12,3,5,3.4461536 +2,32,9,1,2,16,3,3,0.1111111 +2,27,6,1,1,14,4,6,2.041666 +3,22,2.5,1,1,14,2,2,1.3999996 +5,22,0.5,0,1,12,3,4,2 +5,22,2.5,0,2,20,4,1,7.8399963 +5,22,6,0,3,14,3,2,0.5833333 +5,42,23,2,3,17,4,2,0.1521739 +1,22,2.5,1,2,14,3,2,4.7999992 +3,27,6,1,2,12,3,4,3.2666645 +3,22,6,0,3,14,5,4,2 +4,27,9,2,2,16,4,4,2.1777763 +3,22,6,1,2,9,2,2,0.1666666 +4,32,16.5,3,2,16,5,5,0.2121212 +5,37,16.5,1,3,14,3,2,0.4848484 +2,27,9,2,3,14,2,2,0.8888888 +4,32,13,0,2,14,3,5,0.2692307 +4,37,23,5.5,3,14,4,5,0.8521735 +4,27,13,2,3,12,3,5,0.2692307 +3,27,9,1,1,16,3,6,1.3611107 +3,32,13,3,2,14,3,4,0.2692307 +2,27,9,1,3,14,3,5,1.3611107 +3,22,6,2,2,12,3,2,1.333333 +3,32,16.5,2,2,12,3,5,0.0606061 +3,42,23,2,3,12,2,3,2.9217386 +4,27,6,1,3,14,3,3,2.041666 +2,27,13,2,1,12,4,5,1.5076914 +3,42,23,3,2,12,3,4,0.1521739 +2,42,23,4,2,12,5,5,0.5217391 +5,42,23,4,4,14,3,2,0.1521739 +4,27,6,1,1,12,5,6,7 +3,42,23,1,2,14,5,6,0.5326087 +1,32,13,0,3,14,3,5,0.9423077 +5,32,13,2,3,14,4,2,0.9230769 +3,27,6,0,1,16,3,2,2.041666 +3,27,9,2,3,14,5,5,1.333333 +3,27,6,1,3,16,4,5,0.5833333 +4,22,2.5,0,1,12,3,2,1.3999996 +2,42,23,2,3,12,5,5,0.8521735 +4,22,2.5,0,3,14,5,4,3.1999998 +4,27,9,2,2,20,4,6,0.3888888 +2,27,2.5,1,2,14,2,4,1.3999996 +4,37,23,4,3,14,3,3,4.173913 +3,27,9,1,2,14,3,4,1.333333 +5,22,2.5,0,2,12,3,2,1.3999996 +4,27,6,1,2,12,3,4,0.1666666 +5,32,13,1,3,14,5,5,0.9230769 +5,32,13,1,2,12,3,4,0.2692307 +4,27,2.5,0,3,14,5,4,4.7999992 +4,27,9,1,3,14,3,5,0.1111111 +5,32,13,2,2,12,5,3,0.9423077 +4,27,2.5,0,3,12,3,3,0.4 +3,32,13,2,2,14,3,3,0.2692307 +4,27,6,1,3,12,3,4,0.5833333 +5,37,23,4,3,16,5,5,0.5217391 +4,27,9,2,2,12,5,5,2.1777763 +2,42,16.5,3,3,16,3,5,2.545454 +4,27,6,0,2,14,3,5,2.041666 +3,22,2.5,1,3,12,5,5,0.4 +4,32,13,2,2,14,3,5,1.5076914 +3,27,6,1,2,14,3,4,3.2666645 +3,27,13,1,1,12,3,3,0.6153846 +3,27,6,0,1,16,6,6,2.041666 +3,32,16.5,3,2,14,3,4,1.1878777 +5,42,23,3,3,14,3,4,0.8521735 +4,22,6,0,3,12,3,5,0.5833333 +4,32,16.5,2,3,12,3,4,0.2121212 +1,37,16.5,3,2,14,4,4,0.2121212 +3,22,2.5,0,3,16,3,4,4.8999996 +3,27,6,0,3,17,5,5,3.2666645 +3,37,16.5,2,3,16,5,3,0.0606061 +2,32,13,3,2,12,3,2,0.9423077 +4,37,23,2,3,14,5,2,0.1521739 +4,27,9,2,4,17,4,4,1.3611107 +4,27,9,1,2,14,3,5,0.1111111 +2,42,16.5,5.5,2,16,3,5,2.545454 +4,32,16.5,3,4,14,3,4,4.0727262 +4,27,6,1,3,14,3,2,2 +4,42,23,3,2,12,3,4,1.9478254 +5,32,16.5,3,2,12,3,5,1.696969 +5,32,16.5,3,1,14,2,4,0.0606061 +4,37,16.5,2,2,14,3,2,0.7272727 +2,22,6,2,3,12,3,4,2 +4,32,16.5,3,4,14,3,3,0.0606061 +2,37,23,3,3,12,3,2,0.1521739 +5,27,6,2,2,12,4,4,0.5833333 +5,32,16.5,2,2,17,4,3,0.0606061 +3,32,16.5,2,2,12,4,4,1.1878777 +4,27,9,2,3,12,3,4,0.8888888 +4,32,16.5,1,3,14,5,2,1.696969 +4,27,9,2,2,16,4,5,2.1777763 +4,22,2.5,0,1,16,3,2,0.4 +3,37,23,4,2,14,3,5,0.8521735 +5,27,13,2,2,12,2,5,0.9423077 +5,32,16.5,4,3,14,3,4,0.7272727 +2,37,16.5,3,2,14,5,3,0.2121212 +5,32,6,1,3,14,3,5,0.5833333 +3,22,2.5,0,2,16,3,3,4.8999996 +5,22,2.5,0,3,16,3,2,4.7999992 +2,32,13,1,2,12,3,2,1.5076914 +3,42,13,0,3,17,5,2,1.5076914 +3,22,2.5,0,1,16,3,5,7.8399963 +3,42,23,3,2,17,4,4,1.217391 +2,27,13,2,1,14,3,5,4.9230766 +4,22,2.5,1,1,14,3,1,1.3999996 +5,22,2.5,1,3,14,4,5,0.4 +4,42,23,1,3,14,3,2,0.1521739 +5,32,9,2,1,17,6,6,2.1777763 +4,32,16.5,3,2,12,3,2,2.545454 +3,27,2.5,1,3,14,3,6,1.3999996 +3,37,16.5,4,2,14,3,2,0.2121212 +3,32,16.5,3,3,14,3,5,0.7424242 +3,32,23,3,3,14,3,2,1.217391 +5,22,2.5,0,1,12,2,2,1.3999996 +3,32,16.5,3,2,12,5,5,4.0727262 +4,27,2.5,0,1,17,4,3,1.3999996 +3,27,6,0,2,20,6,6,3.2666645 +5,27,13,0,3,14,3,4,0.0769231 +5,37,16.5,3,4,14,5,5,0.2121212 +4,37,16.5,3,1,14,3,3,0.7272727 +5,32,13,1,3,14,5,2,3.2307692 +4,27,6,0,2,14,3,6,2 +3,27,0.5,0,1,14,3,3,24 +3,22,2.5,2,3,14,2,2,4.8999996 +4,37,23,4,4,12,3,3,0.1521739 +5,32,16.5,2,3,14,4,5,1.1878777 +5,32,13,3,3,14,3,6,0.9230769 +4,32,13,3,1,20,5,5,1.5076914 +3,27,6,0,1,12,3,4,0.5833333 +5,22,2.5,0,3,14,3,2,1.3999996 +4,32,23,3,2,9,4,5,1.217391 +3,37,23,2,2,12,5,4,0.5217391 +2,22,2.5,2,2,12,2,2,4.8999996 +4,32,13,0,3,14,3,5,1.5076914 +5,27,2.5,0,3,14,3,5,0.4 +4,32,9,2,3,14,2,4,0 +4,27,6,0,2,14,3,4,0 +4,22,2.5,0,2,14,3,2,0 +5,42,23,4,3,16,3,5,0 +5,27,2.5,1,3,20,2,2,0 +4,27,6,1,2,14,2,4,0 +4,42,23,5.5,2,12,3,2,0 +5,27,2.5,0,1,14,3,2,0 +5,32,13,2,3,14,3,5,0 +4,22,2.5,0,2,12,4,4,0 +5,22,2.5,0,3,12,3,2,0 +3,27,6,1,2,17,5,4,0 +3,27,2.5,0,2,16,3,5,0 +5,22,2.5,0,3,14,3,5,0 +5,22,2.5,0,1,17,4,2,0 +4,27,2.5,1,1,16,2,4,0 +5,27,2.5,0,2,16,5,4,0 +4,32,13,4,3,12,3,4,0 +5,17.5,0.5,0,4,16,3,4,0 +5,27,6,2,3,14,5,5,0 +5,22,6,2,2,17,4,2,0 +5,22,2.5,0,2,14,4,2,0 +3,27,9,0,2,16,5,2,0 +4,27,2.5,1,3,14,3,5,0 +5,22,2.5,0,1,12,3,4,0 +5,22,6,0,3,12,3,4,0 +5,27,6,2,3,12,3,3,0 +5,27,6,2,3,12,2,4,0 +4,27,2.5,0,1,12,3,2,0 +3,22,2.5,1,1,14,4,2,0 +4,22,2.5,0,1,14,3,2,0 +5,22,2.5,1,3,12,2,2,0 +5,27,6,1,4,14,5,6,0 +4,42,23,5.5,2,12,3,5,0 +5,27,9,2,3,14,3,4,0 +5,32,9,2,2,12,4,5,0 +4,22,2.5,0,3,16,4,6,0 +5,32,9,4,3,14,4,4,0 +5,27,2.5,0,2,16,2,4,0 +3,27,2.5,0,2,14,3,4,0 +4,27,9,0,2,12,4,4,0 +5,32,6,1,2,17,4,5,0 +4,22,2.5,0,3,12,3,4,0 +4,32,9,2,2,14,4,2,0 +4,22,2.5,0,2,16,4,5,0 +5,42,23,4,3,14,4,6,0 +4,27,2.5,2,3,14,4,3,0 +5,22,2.5,0,4,16,4,1,0 +5,17.5,0.5,0,2,14,4,5,0 +3,22,0.5,0,2,16,3,2,0 +5,22,0.5,0,3,16,4,2,0 +3,32,13,0,3,20,4,5,0 +4,27,2.5,0,4,16,4,6,0 +5,42,23,5.5,1,14,3,3,0 +4,37,16.5,3,3,16,3,5,0 +5,32,16.5,3,2,12,2,2,0 +4,32,9,2,2,14,4,3,0 +3,22,2.5,0,1,12,3,4,0 +4,37,2.5,0,3,12,3,4,0 +4,27,2.5,0,2,14,3,5,0 +5,32,9,2,1,14,3,5,0 +5,32,13,2,1,16,4,5,0 +5,37,16.5,3,3,16,5,4,0 +5,22,0.5,0,2,14,3,5,0 +5,42,16.5,2,3,17,4,4,0 +3,27,6,1,3,12,3,2,0 +5,22,2.5,0,2,16,4,4,0 +5,27,9,3,4,16,4,5,0 +5,42,23,1,4,17,4,5,0 +5,27,2.5,0,2,16,4,5,0 +5,42,23,1,3,14,3,2,0 +5,27,2.5,0,1,16,6,6,0 +5,27,2.5,1,2,14,3,4,0 +5,17.5,2.5,0,1,14,3,2,0 +5,22,6,0,1,12,2,3,0 +3,32,13,2,2,14,2,2,0 +5,27,2.5,0,1,17,4,5,0 +4,32,2.5,0,2,16,4,3,0 +5,22,2.5,1,1,12,3,3,0 +5,22,2.5,0,2,14,3,3,0 +5,42,16.5,3,2,12,3,4,0 +5,27,6,1,2,14,4,4,0 +5,32,9,2,3,16,4,4,0 +5,32,16.5,3,1,16,4,2,0 +4,27,2.5,0,3,14,3,5,0 +5,27,9,3,1,17,4,4,0 +4,27,2.5,0,3,14,4,5,0 +3,37,16.5,4,3,14,4,4,0 +5,22,2.5,0,2,17,5,5,0 +5,32,9,2,2,17,5,5,0 +5,22,2.5,1,1,12,3,4,0 +3,27,6,2,2,14,5,6,0 +5,22,2.5,0,2,14,3,4,0 +5,27,9,2,3,17,4,5,0 +4,27,2.5,0,2,14,3,3,0 +5,22,2.5,1,2,12,3,4,0 +4,27,2.5,0,3,12,2,5,0 +5,27,6,2,3,14,2,4,0 +5,22,2.5,2,1,14,4,3,0 +4,42,23,3,2,16,3,5,0 +4,32,6,0,3,12,3,4,0 +5,22,2.5,0,3,16,4,5,0 +5,22,2.5,0,3,16,3,4,0 +5,27,6,0,1,16,4,2,0 +4,42,23,3,2,9,5,5,0 +5,22,0.5,0,2,16,3,3,0 +3,22,2.5,0,2,16,5,5,0 +5,27,9,2,1,12,2,3,0 +5,32,16.5,2,1,12,2,5,0 +2,32,16.5,1,3,12,3,5,0 +3,22,2.5,0,2,14,3,4,0 +4,22,2.5,1,2,12,3,2,0 +4,27,6,0,2,12,3,2,0 +5,22,0.5,0,1,16,4,1,0 +5,27,2.5,0,3,16,3,5,0 +5,37,16.5,3,1,16,4,5,0 +4,42,23,3,4,12,3,4,0 +5,27,2.5,0,2,20,4,6,0 +4,32,6,2,2,16,4,5,0 +5,27,9,0,2,12,4,5,0 +4,32,6,1,3,12,6,6,0 +3,32,13,2,2,16,3,2,0 +4,37,16.5,4,2,12,3,2,0 +5,32,13,2,3,12,5,4,0 +3,22,2.5,2,1,12,3,2,0 +5,27,2.5,0,3,17,4,4,0 +5,22,2.5,0,3,12,3,5,0 +5,37,13,0,3,12,3,4,0 +5,22,2.5,0,1,12,3,4,0 +4,37,16.5,2,3,14,4,5,0 +5,37,16.5,2,3,14,3,4,0 +5,27,6,2,3,17,4,5,0 +1,22,2.5,1,2,17,2,2,0 +3,32,13,3,1,14,3,5,0 +4,27,2.5,1,3,12,3,5,0 +5,32,6,2,2,16,4,5,0 +5,22,2.5,0,1,12,3,5,0 +5,32,9,4,2,16,4,4,0 +4,22,2.5,0,1,14,3,1,0 +5,17.5,0.5,0,3,12,2,2,0 +5,27,0.5,0,1,17,4,5,0 +5,22,0.5,0,4,16,6,2,0 +5,27,6,0,1,12,3,5,0 +5,37,16.5,1,2,14,4,3,0 +3,42,16.5,3,3,14,3,4,0 +5,27,6,1,2,16,4,4,0 +5,42,23,2,3,17,5,4,0 +4,22,0.5,0,3,14,4,4,0 +2,37,16.5,3,2,14,3,4,0 +5,22,2.5,0,2,14,3,4,0 +5,27,2.5,0,1,16,4,4,0 +4,27,2.5,1,2,14,3,5,0 +3,42,13,0,3,16,4,6,0 +3,42,16.5,1,4,20,6,6,0 +4,42,23,4,3,14,3,5,0 +5,27,6,1,2,12,3,4,0 +5,37,23,5.5,3,12,2,5,0 +5,27,9,2,2,14,2,2,0 +4,27,13,4,2,12,3,2,0 +3,27,6,1,1,17,4,5,0 +5,32,9,2,3,12,4,4,0 +5,27,2.5,0,1,14,5,4,0 +4,27,9,2,3,16,4,4,0 +5,27,2.5,0,1,14,3,3,0 +4,42,23,4,3,12,3,2,0 +3,27,2.5,0,1,17,4,5,0 +4,27,6,1,2,12,3,2,0 +3,27,6,2,1,12,2,2,0 +3,42,9,1,2,14,5,4,0 +5,42,23,3,3,14,3,5,0 +4,22,6,2,1,12,3,6,0 +5,27,2.5,0,2,16,3,5,0 +4,27,9,2,3,12,2,5,0 +5,22,2.5,0,4,16,5,1,0 +5,27,6,2,3,16,3,5,0 +5,22,2.5,0,3,16,4,4,0 +5,22,0.5,0,2,12,2,2,0 +5,32,6,0,2,14,3,4,0 +5,42,23,4,2,16,5,5,0 +5,42,16.5,1,3,17,4,5,0 +5,27,16.5,4,2,12,3,4,0 +5,27,6,2,1,14,3,4,0 +5,37,23,3,2,14,3,6,0 +3,27,6,2,2,12,3,5,0 +5,32,6,0,1,16,5,5,0 +4,32,9,0,2,14,3,5,0 +4,27,9,5.5,1,12,4,3,0 +4,22,2.5,1,1,12,5,4,0 +4,22,6,1,2,12,2,2,0 +5,42,23,3,3,12,3,4,0 +4,32,6,2,3,14,4,4,0 +4,22,2.5,0,1,16,3,4,0 +4,42,23,2,3,14,3,5,0 +4,37,16.5,2,3,14,3,5,0 +5,27,2.5,0,3,14,3,4,0 +2,42,23,5.5,1,20,2,5,0 +4,27,2.5,1,2,14,5,5,0 +4,27,16.5,4,2,17,4,4,0 +4,22,2.5,0,1,14,3,4,0 +5,32,9,2,2,16,4,4,0 +4,22,2.5,0,3,14,4,5,0 +5,42,23,5.5,3,16,2,5,0 +5,27,2.5,0,4,14,3,5,0 +5,27,2.5,1,1,14,4,6,0 +4,22,0.5,0,3,16,5,1,0 +4,22,2.5,0,3,14,3,4,0 +5,22,0.5,0,1,16,3,6,0 +3,42,23,3,2,16,4,2,0 +5,27,2.5,1,2,12,3,2,0 +5,22,2.5,0,3,14,3,6,0 +4,27,6,2,3,16,4,4,0 +3,22,6,3,2,14,3,2,0 +4,22,2.5,0,4,12,3,2,0 +5,42,23,2,3,12,3,4,0 +4,27,2.5,0,2,16,4,5,0 +5,27,6,0,1,12,3,4,0 +5,22,0.5,0,2,14,2,4,0 +5,32,16.5,2,3,12,3,4,0 +4,27,2.5,0,2,12,3,5,0 +5,22,2.5,0,2,17,4,4,0 +5,32,9,2,2,16,4,5,0 +5,17.5,2.5,0,3,12,3,2,0 +4,22,2.5,0,3,12,3,2,0 +5,22,2.5,0,2,16,4,5,0 +5,32,9,2,3,17,4,2,0 +5,22,0.5,0,2,16,4,4,0 +5,37,16.5,3,4,14,4,2,0 +5,27,2.5,0,2,16,2,4,0 +5,37,13,3,3,20,4,4,0 +4,32,6,1,2,14,5,6,0 +5,27,6,0,1,12,5,5,0 +5,32,2.5,0,3,12,3,5,0 +5,32,16.5,2,3,12,3,3,0 +4,27,2.5,1,2,17,4,5,0 +4,27,6,1,3,17,4,4,0 +2,42,23,4,3,9,2,2,0 +4,22,2.5,0,2,14,5,4,0 +4,27,2.5,0,1,16,4,4,0 +5,27,6,0,2,12,3,4,0 +3,22,2.5,0,2,16,3,5,0 +4,22,2.5,0,2,12,3,5,0 +4,22,2.5,0,3,17,5,4,0 +5,42,23,5.5,4,12,3,5,0 +4,32,13,3,3,12,3,5,0 +5,22,2.5,0,3,14,3,5,0 +5,22,2.5,0,2,16,3,5,0 +4,27,2.5,1,2,16,4,5,0 +5,42,23,4,1,17,3,5,0 +4,32,13,3,3,12,3,5,0 +3,17.5,2.5,0,1,16,4,2,0 +4,42,23,3,3,16,4,2,0 +5,27,9,2,3,12,3,5,0 +5,22,2.5,1,3,14,3,4,0 +4,27,6,2,2,14,3,4,0 +5,32,9,0,3,17,4,5,0 +5,22,2.5,0,4,12,3,4,0 +5,37,16.5,3,3,12,3,5,0 +4,22,6,2,3,14,4,2,0 +5,27,2.5,0,4,16,4,2,0 +5,37,13,2,2,20,4,5,0 +5,27,13,2,2,16,4,4,0 +5,22,2.5,0,3,12,2,5,0 +4,22,6,1,2,12,3,5,0 +5,27,2.5,0,2,16,4,4,0 +3,22,2.5,1,2,12,2,5,0 +5,22,0.5,0,3,14,3,5,0 +5,17.5,2.5,0,1,14,3,4,0 +5,22,2.5,0,2,14,3,5,0 +4,22,0.5,0,3,12,2,5,0 +5,27,2.5,0,1,16,4,5,0 +4,22,2.5,0,3,12,3,3,0 +4,27,6,0,1,12,3,2,0 +5,22,2.5,2,1,14,3,4,0 +2,27,6,1,2,12,2,2,0 +5,22,0.5,0,2,16,4,5,0 +5,22,6,0,3,14,3,4,0 +5,27,2.5,0,3,12,4,2,0 +3,32,16.5,4,3,14,4,4,0 +5,27,2.5,0,1,20,4,4,0 +4,27,2.5,0,2,16,5,6,0 +5,22,2.5,0,4,16,4,5,0 +5,22,2.5,0,3,17,4,4,0 +4,22,2.5,0,2,16,3,2,0 +4,37,16.5,3,2,12,5,4,0 +5,27,6,2,4,17,4,5,0 +5,22,2.5,1,2,12,3,2,0 +5,32,16.5,4,3,12,3,3,0 +5,22,0.5,0,4,16,3,2,0 +3,27,9,1,2,14,3,4,0 +5,37,23,3,4,12,3,2,0 +5,22,2.5,0,3,14,3,5,0 +5,22,2.5,0,3,14,3,4,0 +5,22,2.5,0,3,12,3,4,0 +4,32,13,1,3,12,5,5,0 +5,32,2.5,1,3,12,3,4,0 +4,22,2.5,0,2,12,3,4,0 +4,22,6,1,2,12,3,5,0 +5,17.5,2.5,1,3,12,2,2,0 +5,22,2.5,0,2,14,2,4,0 +4,27,0.5,0,3,16,3,6,0 +5,22,2.5,0,2,12,3,2,0 +5,22,2.5,0,1,17,4,4,0 +5,32,2.5,0,3,14,3,4,0 +5,27,2.5,0,2,14,3,5,0 +4,27,6,1,2,12,3,4,0 +3,22,2.5,0,2,14,2,5,0 +5,27,6,2,3,12,4,2,0 +4,22,0.5,0,1,12,2,2,0 +5,42,23,3,1,20,4,6,0 +3,22,2.5,1,2,12,3,4,0 +5,27,6,0,2,16,5,5,0 +4,22,2.5,0,3,12,2,5,0 +5,22,6,0,3,14,3,4,0 +4,22,2.5,0,3,14,5,4,0 +5,17.5,2.5,0,2,12,2,5,0 +4,27,2.5,0,1,17,2,6,0 +3,42,23,5.5,3,14,3,5,0 +4,32,6,2,1,16,4,4,0 +5,22,6,2,2,14,3,2,0 +5,22,6,3,3,12,3,4,0 +5,22,2.5,0,2,12,2,2,0 +4,42,23,2,3,16,4,5,0 +4,27,2.5,2,3,20,4,5,0 +4,27,2.5,1,2,14,3,5,0 +4,32,13,2,4,14,4,3,0 +5,22,0.5,0,3,14,3,5,0 +3,42,23,2,2,12,3,5,0 +5,42,23,3,4,14,3,5,0 +5,22,0.5,0,2,20,4,4,0 +5,22,2.5,0,1,14,3,3,0 +4,27,6,1,1,20,4,2,0 +5,32,9,2,3,14,4,1,0 +4,17.5,0.5,0,1,12,3,4,0 +5,42,6,0,2,17,4,5,0 +5,42,23,2,2,12,3,6,0 +4,27,13,1,2,12,5,2,0 +4,27,2.5,0,1,14,3,4,0 +3,27,6,2,2,12,2,2,0 +5,22,6,0,1,14,5,5,0 +4,37,13,2,3,20,4,4,0 +4,27,2.5,0,1,16,4,1,0 +5,27,9,2,3,17,4,4,0 +4,32,2.5,1,2,12,3,4,0 +4,27,2.5,0,4,14,3,6,0 +5,27,6,3,1,16,3,5,0 +5,32,16.5,4,3,14,5,2,0 +5,17.5,0.5,0,3,12,3,2,0 +4,42,23,4,2,12,2,5,0 +5,27,6,0,4,16,5,5,0 +4,27,2.5,0,1,16,4,5,0 +5,37,16.5,2,1,16,4,5,0 +5,22,2.5,1,3,17,4,2,0 +4,17.5,2.5,0,3,12,3,4,0 +3,27,6,2,3,14,3,5,0 +3,37,16.5,3,3,12,4,5,0 +4,27,2.5,0,4,14,3,4,0 +4,37,13,2,2,12,2,4,0 +4,32,9,1,3,17,4,4,0 +5,27,6,1,2,16,2,6,0 +4,22,2.5,1,3,12,2,4,0 +2,42,23,5.5,1,12,5,5,0 +5,42,16.5,5.5,3,17,4,5,0 +5,42,23,4,3,12,5,6,0 +5,22,0.5,0,3,12,3,5,0 +5,22,2.5,0,1,16,5,5,0 +3,32,13,3,4,14,3,5,0 +3,32,13,3,3,16,4,2,0 +5,32,9,2,3,16,4,6,0 +5,27,0.5,0,3,12,3,5,0 +5,32,16.5,3,4,14,2,4,0 +3,22,2.5,0,2,12,3,2,0 +5,27,13,3,3,12,2,4,0 +4,27,2.5,0,3,14,3,4,0 +4,42,13,0,3,20,4,4,0 +5,32,13,3,2,12,3,4,0 +5,27,13,3,3,12,3,5,0 +4,32,13,3,4,14,3,4,0 +4,27,0.5,1,3,17,4,4,0 +5,27,6,0,2,12,3,5,0 +3,27,6,2,2,14,4,3,0 +3,22,2.5,0,2,16,5,4,0 +3,32,0.5,0,3,20,6,5,0 +5,42,23,4,4,20,4,4,0 +3,22,0.5,0,2,14,3,5,0 +5,27,9,2,4,16,2,5,0 +5,22,2.5,0,3,16,4,4,0 +4,42,16.5,2,3,12,2,2,0 +4,42,16.5,3,2,20,4,4,0 +5,42,23,4,2,20,6,5,0 +4,32,16.5,3,2,12,3,5,0 +4,32,6,1,1,17,4,4,0 +2,32,16.5,2,4,12,3,2,0 +5,32,9,2,4,20,4,6,0 +5,22,2.5,0,2,16,3,2,0 +5,27,2.5,1,1,16,4,4,0 +4,27,9,1,3,12,3,4,0 +2,32,16.5,3,4,12,3,5,0 +4,32,13,2,1,20,4,6,0 +5,27,2.5,0,2,16,4,5,0 +4,37,13,2,4,14,4,5,0 +4,22,0.5,0,2,16,4,4,0 +4,27,9,2,2,14,4,4,0 +5,27,6,0,1,16,5,5,0 +4,32,13,2,3,14,4,5,0 +2,42,23,2,2,12,3,5,0 +4,22,0.5,0,2,14,3,2,0 +5,42,23,2,3,12,3,5,0 +5,22,2.5,0,3,16,4,6,0 +5,32,13,0,3,17,4,4,0 +5,22,0.5,0,2,16,4,2,0 +4,32,13,0,1,12,5,5,0 +4,37,9,0,1,16,3,5,0 +5,37,16.5,5.5,3,14,4,4,0 +4,27,6,0,3,14,5,6,0 +5,42,23,1,1,17,3,2,0 +4,22,2.5,0,1,17,1,3,0 +4,27,9,0,2,12,3,5,0 +4,32,9,1,3,14,3,6,0 +1,22,2.5,1,3,14,3,4,0 +4,27,2.5,1,3,16,4,5,0 +4,27,6,2,3,16,4,2,0 +2,27,6,1,2,14,3,4,0 +2,37,13,1,1,12,2,3,0 +5,22,2.5,0,4,14,5,5,0 +5,22,2.5,0,2,17,4,2,0 +4,27,6,1,2,14,4,2,0 +4,22,6,1,4,14,3,4,0 +4,27,9,2,3,12,4,5,0 +4,32,13,3,1,16,4,6,0 +5,32,16.5,1,3,12,2,2,0 +4,42,23,4,4,14,5,5,0 +5,32,9,4,3,14,4,6,0 +3,22,2.5,1,2,14,3,3,0 +5,37,16.5,4,3,17,5,6,0 +5,22,2.5,0,4,12,3,4,0 +5,32,13,2,2,14,3,5,0 +3,42,16.5,3,2,12,3,4,0 +4,37,13,3,3,12,2,2,0 +4,22,2.5,0,3,14,3,6,0 +5,42,23,5.5,4,17,4,6,0 +5,22,0.5,2,1,12,2,4,0 +5,37,16.5,3,1,16,3,4,0 +5,32,9,3,3,14,2,5,0 +5,27,6,1,3,20,4,6,0 +5,27,6,2,3,17,4,1,0 +5,32,6,1,4,16,4,6,0 +4,27,2.5,0,3,14,3,5,0 +5,22,2.5,0,1,12,3,3,0 +5,22,2.5,0,1,12,3,3,0 +3,42,23,4,3,14,3,5,0 +5,27,6,1,1,16,5,2,0 +3,27,6,0,2,17,4,6,0 +5,27,6,2,3,16,4,5,0 +5,27,6,0,3,12,3,5,0 +4,27,2.5,0,1,12,3,4,0 +5,32,9,2,1,14,5,5,0 +4,22,2.5,0,2,14,3,5,0 +4,22,0.5,0,3,14,3,3,0 +5,32,6,2,4,12,3,5,0 +5,42,23,5.5,2,12,2,2,0 +5,22,2.5,0,4,16,4,4,0 +4,22,2.5,1,3,14,5,1,0 +5,32,6,0,3,16,4,4,0 +4,27,9,2,3,12,3,4,0 +4,42,23,4,4,16,4,4,0 +4,27,6,0,2,16,4,4,0 +4,22,2.5,0,2,14,3,4,0 +5,27,0.5,0,3,17,4,5,0 +2,27,2.5,0,3,14,4,1,0 +4,27,6,0,2,14,3,6,0 +5,27,2.5,0,2,17,3,3,0 +5,32,13,2,2,14,2,4,0 +5,22,2.5,0,4,12,2,4,0 +4,42,16.5,2,2,12,3,2,0 +5,27,13,2,3,12,3,5,0 +5,22,2.5,1,2,12,2,2,0 +5,37,16.5,4,3,12,2,6,0 +5,27,2.5,0,2,16,3,4,0 +4,22,2.5,0,2,14,3,4,0 +5,22,2.5,0,3,12,2,5,0 +5,27,2.5,0,2,17,4,2,0 +4,27,2.5,0,2,17,4,4,0 +4,42,23,2,4,12,4,2,0 +5,27,2.5,0,2,16,3,5,0 +4,37,13,1,3,12,2,2,0 +4,27,6,2,3,14,3,5,0 +5,27,6,1,3,12,3,4,0 +3,42,23,5.5,2,14,4,5,0 +5,27,6,0,3,20,4,4,0 +5,22,2.5,0,2,14,3,2,0 +4,27,2.5,0,3,12,3,3,0 +5,22,2.5,0,3,16,3,5,0 +2,32,2.5,1,2,12,5,2,0 +4,27,2.5,1,2,14,4,4,0 +4,27,0.5,0,3,14,3,4,0 +4,32,9,1,3,17,4,4,0 +4,27,9,2,2,17,4,5,0 +5,22,2.5,0,4,14,4,4,0 +4,22,2.5,0,2,12,2,2,0 +5,27,6,2,2,16,4,1,0 +4,27,6,0,2,12,3,4,0 +4,32,13,2,2,14,3,5,0 +4,37,16.5,2,1,20,4,6,0 +4,42,23,3,2,12,3,5,0 +1,42,23,5.5,3,14,2,5,0 +4,27,2.5,0,1,12,3,2,0 +4,27,6,1,3,14,2,5,0 +3,42,16.5,5.5,2,14,3,6,0 +5,22,2.5,0,2,16,3,1,0 +4,27,2.5,1,2,12,3,2,0 +5,37,16.5,4,3,16,4,5,0 +5,22,2.5,0,2,14,3,3,0 +4,27,2.5,0,3,14,3,1,0 +4,22,2.5,0,1,14,2,2,0 +5,22,2.5,0,2,12,3,4,0 +5,22,0.5,0,3,12,3,3,0 +3,42,23,2,1,20,4,4,0 +5,32,16.5,1,3,17,5,4,0 +5,27,9,1,2,14,3,4,0 +5,27,2.5,1,3,14,3,5,0 +4,27,6,0,2,16,3,3,0 +5,22,0.5,0,3,14,3,2,0 +4,32,9,0,1,17,4,4,0 +3,37,16.5,3,3,12,3,3,0 +5,27,2.5,0,3,12,3,4,0 +5,22,2.5,0,4,14,3,2,0 +4,32,13,3,3,17,4,4,0 +5,42,23,5.5,4,17,5,5,0 +4,27,2.5,0,2,16,4,4,0 +5,42,16.5,4,3,14,3,4,0 +3,27,2.5,0,3,12,3,3,0 +5,27,6,2,4,16,4,6,0 +3,22,0.5,0,3,12,5,4,0 +4,42,23,3,2,14,3,4,0 +5,27,2.5,0,2,16,4,5,0 +5,22,0.5,0,3,12,3,2,0 +5,22,2.5,0,2,12,3,4,0 +5,37,16.5,2,1,12,3,5,0 +3,22,6,2,2,12,3,2,0 +2,42,23,3,2,14,3,5,0 +4,32,2.5,0,1,17,5,5,0 +5,22,2.5,0,3,16,3,4,0 +4,22,0.5,0,3,14,3,4,0 +5,27,6,1,1,14,4,4,0 +4,27,2.5,0,3,16,4,4,0 +5,32,6,3,1,16,3,5,0 +5,32,16.5,2,1,12,2,3,0 +4,42,16.5,3,2,14,3,2,0 +5,22,0.5,0,2,12,2,2,0 +5,17.5,0.5,0,2,12,2,4,0 +5,42,23,3,3,14,4,4,0 +2,22,0.5,0,1,14,3,2,0 +5,27,2.5,0,1,16,4,5,0 +5,27,16.5,3,1,12,3,5,0 +5,22,0.5,0,2,14,3,5,0 +4,32,9,2,3,20,6,5,0 +4,22,0.5,0,2,14,2,1,0 +4,27,6,2,4,14,3,5,0 +1,27,9,4,1,12,4,2,0 +4,22,2.5,0,2,14,3,5,0 +5,22,2.5,0,2,16,4,5,0 +5,22,2.5,1,2,12,2,2,0 +5,17.5,0.5,0,3,12,5,2,0 +4,32,9,2,3,14,2,4,0 +5,27,6,0,3,17,5,5,0 +5,22,0.5,0,2,12,3,2,0 +5,32,9,0,3,12,3,4,0 +3,27,9,3,1,12,3,4,0 +5,22,2.5,0,1,12,3,1,0 +5,42,16.5,4,2,14,3,5,0 +5,27,2.5,1,2,16,4,5,0 +3,22,2.5,0,3,12,3,4,0 +5,22,2.5,1,1,14,3,5,0 +4,27,16.5,3,1,16,5,5,0 +5,27,2.5,1,3,16,4,5,0 +3,27,2.5,1,1,17,2,5,0 +5,22,2.5,0,3,14,3,4,0 +5,37,16.5,2,3,20,6,6,0 +5,22,2.5,0,2,14,5,4,0 +5,27,2.5,0,3,14,3,4,0 +4,22,2.5,0,3,16,3,1,0 +4,27,6,0,2,14,3,5,0 +1,27,6,1,2,20,4,5,0 +5,22,0.5,0,3,14,2,2,0 +5,32,13,4,3,12,3,4,0 +5,22,6,0,2,12,3,5,0 +5,37,16.5,2,3,16,4,5,0 +3,22,6,2,3,12,2,4,0 +4,22,0.5,0,3,16,3,5,0 +5,27,2.5,0,3,14,3,2,0 +4,22,2.5,0,4,14,3,4,0 +5,22,2.5,0,1,12,3,2,0 +5,27,6,0,2,14,3,5,0 +3,27,0.5,0,3,20,6,6,0 +4,32,13,2,3,12,5,5,0 +3,22,2.5,0,2,16,3,6,0 +5,32,2.5,0,2,20,4,4,0 +4,22,2.5,0,3,17,4,5,0 +5,22,2.5,0,3,17,4,5,0 +3,22,0.5,0,3,16,3,4,0 +5,27,6,1,1,14,3,4,0 +5,32,16.5,1,3,12,2,2,0 +3,37,23,3,3,12,3,4,0 +5,22,2.5,0,1,20,4,5,0 +5,27,6,0,1,12,3,4,0 +5,27,6,0,2,14,3,5,0 +3,37,23,5.5,1,12,3,4,0 +3,42,16.5,2,2,12,2,6,0 +4,27,6,2,2,12,2,2,0 +5,22,2.5,0,2,16,4,4,0 +5,22,0.5,0,3,12,2,5,0 +4,42,23,2,3,12,2,5,0 +5,37,16.5,2,1,14,5,6,0 +5,42,23,4,4,12,3,5,0 +2,22,2.5,0,3,14,3,4,0 +4,27,6,2,1,14,3,4,0 +3,22,0.5,0,2,17,3,5,0 +3,27,6,2,2,16,4,5,0 +5,32,13,3,2,20,3,6,0 +5,42,23,4,4,16,2,5,0 +4,22,2.5,0,3,16,4,4,0 +5,27,6,1,3,20,4,6,0 +2,42,23,5.5,3,12,2,5,0 +5,22,6,0,4,14,3,2,0 +5,22,6,1,1,12,3,5,0 +5,27,2.5,0,2,12,3,4,0 +5,32,13,3,4,16,4,6,0 +5,27,0.5,0,2,12,3,2,0 +4,37,16.5,2,2,12,2,2,0 +4,32,2.5,0,3,20,4,4,0 +5,32,2.5,1,3,12,3,4,0 +4,27,2.5,0,2,12,3,4,0 +5,27,6,1,3,12,3,4,0 +4,27,6,1,1,20,4,4,0 +5,22,2.5,0,1,12,3,5,0 +5,32,16.5,2,3,17,3,5,0 +5,22,2.5,0,1,16,5,5,0 +5,27,6,1,3,20,6,6,0 +3,27,6,2,3,20,4,5,0 +5,27,9,1,2,16,4,4,0 +3,42,23,4,3,14,3,4,0 +5,27,6,2,2,20,4,3,0 +4,27,6,2,3,14,3,4,0 +5,42,23,3,2,12,5,4,0 +4,22,2.5,0,3,16,3,5,0 +5,32,16.5,3,3,12,3,4,0 +5,22,2.5,0,2,14,1,5,0 +5,27,6,0,3,14,4,5,0 +5,22,2.5,0,1,12,2,1,0 +4,27,6,1,1,14,4,4,0 +4,22,2.5,0,3,16,2,4,0 +4,22,2.5,0,4,12,3,2,0 +5,17.5,2.5,0,1,12,2,4,0 +4,37,16.5,3,3,12,4,5,0 +4,27,6,1,2,12,4,4,0 +3,37,13,0,2,14,5,6,0 +4,37,16.5,4,3,12,2,4,0 +4,27,2.5,0,1,14,5,6,0 +5,42,23,2,2,12,5,5,0 +5,22,2.5,0,4,14,2,2,0 +5,22,2.5,0,3,16,3,1,0 +5,27,0.5,0,3,20,4,4,0 +5,27,6,1,2,20,4,6,0 +4,22,2.5,0,2,16,5,2,0 +5,22,2.5,0,3,12,2,3,0 +5,22,0.5,0,3,12,3,2,0 +4,37,9,5.5,4,12,4,2,0 +3,27,0.5,0,2,12,3,2,0 +5,27,2.5,0,2,20,4,5,0 +3,22,2.5,0,1,14,3,3,0 +3,42,16.5,4,4,16,3,1,0 +5,32,13,3,2,12,2,5,0 +2,32,13,2,3,12,2,2,0 +5,22,2.5,0,2,14,3,1,0 +3,27,2.5,1,1,14,5,4,0 +4,22,0.5,0,4,12,3,2,0 +4,27,9,2,3,12,5,4,0 +5,22,2.5,0,3,14,3,4,0 +5,27,6,2,3,17,4,5,0 +4,22,2.5,0,1,12,3,2,0 +5,22,0.5,0,2,12,3,3,0 +5,42,23,3,3,12,3,5,0 +3,22,2.5,1,3,14,3,2,0 +4,27,16.5,2,3,12,4,4,0 +5,17.5,0.5,0,2,12,3,4,0 +5,27,2.5,0,3,17,4,5,0 +4,27,9,2,4,16,4,5,0 +5,22,2.5,0,2,16,4,5,0 +5,37,16.5,2,2,12,3,6,0 +5,32,23,2,3,14,5,5,0 +5,22,2.5,1,4,14,4,1,0 +4,27,2.5,0,3,17,4,6,0 +5,22,0.5,0,2,12,4,4,0 +4,37,16.5,2,3,20,4,6,0 +4,27,2.5,0,3,14,4,1,0 +4,22,2.5,0,3,16,4,3,0 +4,22,2.5,0,2,12,2,5,0 +5,42,23,2,3,14,3,6,0 +5,22,0.5,0,2,16,4,4,0 +5,27,6,3,2,16,4,5,0 +4,32,16.5,3,2,16,2,6,0 +4,27,0.5,0,2,16,4,4,0 +2,22,0.5,0,4,12,3,3,0 +4,22,2.5,0,3,17,4,2,0 +5,27,2.5,0,3,16,4,6,0 +5,22,2.5,0,3,12,3,2,0 +4,27,2.5,3,2,12,3,6,0 +4,32,6,1,4,20,5,5,0 +2,27,2.5,0,3,14,3,3,0 +4,42,23,4,2,12,2,6,0 +5,42,16.5,1,3,12,5,3,0 +3,27,9,2,1,14,3,5,0 +4,42,23,2,2,12,2,4,0 +5,42,23,2,2,12,4,4,0 +5,22,2.5,0,3,16,4,4,0 +3,42,23,3,3,12,3,3,0 +5,22,2.5,0,4,17,3,2,0 +2,22,2.5,0,3,14,3,2,0 +5,27,6,1,4,20,4,4,0 +4,37,16.5,5.5,2,14,3,4,0 +5,32,13,3,3,12,2,4,0 +5,27,6,2,3,16,3,4,0 +4,27,6,1,1,20,4,4,0 +5,22,2.5,0,1,12,3,2,0 +5,27,2.5,0,3,14,4,5,0 +5,22,6,0,3,12,3,4,0 +4,22,2.5,0,3,12,5,5,0 +4,22,2.5,0,3,16,4,6,0 +5,22,2.5,0,3,16,4,4,0 +5,27,6,0,2,16,4,6,0 +2,37,16.5,3,4,12,2,5,0 +5,22,6,2,2,12,5,2,0 +4,27,2.5,1,2,16,4,4,0 +5,22,2.5,0,2,17,3,2,0 +5,42,23,3,3,17,4,5,0 +4,22,2.5,0,3,12,4,1,0 +4,32,13,2,2,12,3,4,0 +5,27,2.5,0,3,20,5,6,0 +5,22,0.5,0,3,16,3,2,0 +4,22,2.5,0,3,12,3,2,0 +4,27,9,2,1,14,3,2,0 +4,27,6,1,1,20,4,4,0 +5,27,2.5,2,1,12,2,4,0 +4,37,9,1,3,20,4,2,0 +4,22,0.5,0,3,16,4,4,0 +5,32,16.5,2,1,14,5,5,0 +3,27,6,0,1,12,3,5,0 +4,27,6,1,3,16,4,5,0 +5,32,13,1,2,12,3,4,0 +3,27,2.5,0,3,12,3,4,0 +5,22,2.5,0,2,12,3,2,0 +4,32,6,1,3,17,4,4,0 +3,27,2.5,0,1,20,4,4,0 +4,42,23,2,4,14,3,5,0 +2,27,2.5,1,2,14,3,2,0 +4,42,23,3,2,12,3,5,0 +5,27,6,2,2,17,4,5,0 +5,22,0.5,0,1,14,3,5,0 +5,27,6,2,3,12,3,3,0 +3,22,2.5,0,1,14,5,4,0 +1,42,23,3,2,12,3,2,0 +4,42,16.5,3,2,17,5,5,0 +1,27,2.5,0,1,12,3,1,0 +5,22,0.5,0,1,17,4,4,0 +5,37,16.5,2,3,12,3,4,0 +4,27,6,2,3,16,4,5,0 +5,22,2.5,0,4,14,5,5,0 +5,22,2.5,0,4,17,4,5,0 +3,27,6,2,3,14,5,2,0 +4,27,2.5,0,3,16,3,6,0 +5,27,2.5,0,1,12,3,5,0 +5,17.5,2.5,2,1,12,2,4,0 +4,32,16.5,2,3,14,3,2,0 +5,27,2.5,0,1,16,4,5,0 +3,42,23,2,3,12,2,5,0 +4,22,2.5,0,2,14,3,4,0 +3,22,2.5,1,2,12,3,2,0 +3,27,2.5,0,3,16,4,6,0 +4,22,2.5,0,3,14,3,5,0 +5,32,13,2,4,20,4,6,0 +5,22,2.5,0,1,16,4,6,0 +4,32,9,2,3,14,4,2,0 +4,42,23,5.5,3,12,2,4,0 +3,27,0.5,0,2,12,3,2,0 +5,42,23,2,2,12,5,2,0 +5,27,2.5,0,2,16,2,4,0 +4,22,2.5,2,3,12,2,4,0 +3,27,6,2,2,12,4,5,0 +5,27,2.5,2,3,14,2,4,0 +5,22,0.5,0,2,16,3,4,0 +3,32,6,2,2,14,4,6,0 +4,27,2.5,0,3,14,3,5,0 +5,37,23,5.5,2,12,5,2,0 +2,27,6,0,1,17,4,4,0 +4,32,16.5,4,3,12,3,4,0 +5,22,2.5,2,2,12,2,5,0 +4,22,2.5,0,1,16,4,4,0 +5,27,2.5,0,3,16,5,5,0 +5,22,2.5,0,1,12,3,4,0 +4,22,2.5,1,4,14,3,5,0 +4,22,2.5,0,3,14,3,5,0 +5,22,6,1,2,12,3,2,0 +3,27,6,0,3,14,5,2,0 +5,37,16.5,4,3,16,4,5,0 +4,27,6,2,4,14,4,5,0 +4,22,2.5,0,2,17,5,5,0 +5,22,2.5,0,2,16,4,2,0 +3,32,16.5,2,2,12,3,4,0 +5,27,0.5,0,2,16,4,6,0 +5,27,6,3,2,14,2,5,0 +5,22,2.5,0,2,16,2,2,0 +4,22,2.5,2,2,16,5,5,0 +4,32,9,0,1,20,4,5,0 +3,22,2.5,0,2,12,3,4,0 +4,37,9,1,3,20,5,4,0 +5,27,2.5,0,3,20,4,4,0 +4,32,13,2,4,12,3,3,0 +4,27,2.5,1,2,12,3,2,0 +4,22,2.5,0,3,17,4,4,0 +5,27,6,2,4,12,3,2,0 +4,32,13,1,3,14,2,4,0 +5,22,0.5,0,1,16,2,3,0 +5,22,2.5,0,2,12,2,2,0 +3,42,23,5.5,2,14,2,5,0 +4,27,6,2,1,14,3,3,0 +5,22,2.5,0,3,16,3,5,0 +5,27,6,0,1,12,3,2,0 +2,32,13,2,3,12,3,4,0 +5,27,9,2,3,12,2,3,0 +4,22,2.5,2,3,14,4,4,0 +5,37,2.5,0,3,14,3,3,0 +5,37,16.5,2,3,12,3,3,0 +5,27,6,2,2,14,4,4,0 +4,27,6,0,3,20,4,5,0 +5,32,13,3,3,12,4,5,0 +4,27,2.5,0,2,14,3,5,0 +3,22,2.5,0,2,16,6,3,0 +5,32,9,3,2,17,4,4,0 +2,27,6,1,2,14,3,4,0 +5,22,2.5,0,1,16,5,5,0 +5,22,0.5,0,2,16,3,4,0 +5,27,2.5,0,4,20,4,5,0 +5,22,0.5,0,3,14,3,2,0 +5,22,2.5,0,2,12,3,5,0 +5,27,6,0,2,20,4,6,0 +5,17.5,0.5,0,3,14,3,4,0 +3,32,16.5,3,2,16,5,4,0 +3,37,16.5,4,2,14,4,3,0 +5,27,6,1,3,14,4,2,0 +4,32,16.5,4,4,16,4,4,0 +4,22,2.5,0,3,12,3,4,0 +4,27,2.5,1,4,14,3,2,0 +3,42,23,3,1,14,3,4,0 +4,27,9,3,3,12,2,2,0 +4,27,9,2,1,20,4,5,0 +4,27,0.5,0,1,14,4,2,0 +5,42,16.5,2,2,12,3,3,0 +4,22,2.5,0,1,16,4,4,0 +4,37,16.5,2,1,17,4,6,0 +5,32,16.5,2,1,12,3,5,0 +5,22,2.5,0,4,14,3,5,0 +5,27,2.5,2,3,20,2,4,0 +5,22,2.5,0,3,14,3,3,0 +4,27,6,1,2,20,4,4,0 +5,22,2.5,0,3,12,3,4,0 +4,22,2.5,0,3,14,3,3,0 +4,22,2.5,1,1,14,3,5,0 +5,22,0.5,0,1,12,3,2,0 +4,22,2.5,1,3,12,4,2,0 +5,42,23,2,3,12,4,4,0 +4,27,2.5,0,4,16,5,6,0 +5,32,13,4,3,16,4,2,0 +5,27,6,2,2,16,4,5,0 +4,27,6,0,1,14,3,4,0 +4,17.5,2.5,0,1,14,3,4,0 +5,22,0.5,0,2,16,3,4,0 +5,27,9,2,3,16,4,4,0 +5,22,2.5,1,3,12,3,1,0 +5,27,2.5,0,1,14,3,5,0 +5,42,16.5,2,3,12,5,4,0 +5,17.5,2.5,0,2,12,2,2,0 +5,22,2.5,3,3,12,3,4,0 +5,32,9,3,4,17,4,6,0 +5,22,2.5,2,3,14,5,4,0 +4,37,23,5.5,2,12,3,2,0 +5,27,2.5,0,4,16,5,3,0 +4,22,2.5,0,1,14,3,4,0 +4,22,2.5,1,2,12,3,4,0 +5,22,2.5,0,3,12,3,5,0 +5,27,6,2,2,14,5,4,0 +5,27,2.5,0,3,16,4,5,0 +4,32,2.5,0,3,17,4,4,0 +5,32,6,2,4,20,4,4,0 +5,27,13,3,1,12,3,4,0 +5,32,16.5,3,3,12,4,2,0 +5,17.5,0.5,0,1,12,2,4,0 +4,27,2.5,0,1,20,6,6,0 +4,22,2.5,0,2,12,3,4,0 +4,22,0.5,0,3,12,5,2,0 +5,42,23,1,2,12,2,2,0 +3,22,0.5,0,1,12,3,3,0 +5,32,9,2,2,20,4,5,0 +4,32,16.5,2,2,14,5,4,0 +5,27,6,2,2,12,3,2,0 +5,27,2.5,0,1,16,3,5,0 +5,22,0.5,0,3,12,3,3,0 +4,27,2.5,0,3,17,4,1,0 +5,27,2.5,0,3,12,3,2,0 +5,42,23,2,3,9,2,4,0 +5,27,2.5,0,3,14,3,4,0 +5,22,0.5,0,2,16,4,4,0 +5,37,13,2,2,17,4,5,0 +4,42,23,2,1,12,3,4,0 +4,27,6,1,3,16,4,5,0 +5,42,23,2,3,12,3,3,0 +5,22,2.5,0,3,16,4,4,0 +5,32,13,2,2,16,4,4,0 +5,22,2.5,0,3,14,4,5,0 +4,32,9,2,1,12,2,2,0 +4,22,2.5,0,1,12,3,2,0 +4,22,6,2,2,14,3,6,0 +5,22,2.5,0,2,14,3,4,0 +4,22,2.5,0,3,14,4,4,0 +5,22,2.5,0,3,14,5,5,0 +5,22,6,0,3,12,5,5,0 +3,42,23,2,2,14,3,5,0 +5,22,2.5,0,1,12,2,5,0 +4,22,2.5,0,2,14,3,6,0 +5,22,2.5,0,1,16,5,5,0 +4,17.5,2.5,0,2,14,3,3,0 +4,37,13,0,3,20,5,5,0 +5,27,2.5,0,2,12,3,4,0 +5,22,2.5,0,2,14,3,4,0 +4,42,23,2,2,16,4,5,0 +5,22,2.5,1,1,12,2,4,0 +4,27,6,1,2,16,3,3,0 +4,37,16.5,2,2,12,3,2,0 +4,37,13,5.5,2,14,2,6,0 +5,22,0.5,0,3,16,3,4,0 +4,27,2.5,1,2,12,3,5,0 +4,22,2.5,0,3,14,3,4,0 +5,27,6,2,2,16,4,6,0 +5,22,0.5,0,2,12,3,2,0 +5,27,2.5,0,1,12,2,2,0 +4,22,2.5,1,1,12,3,5,0 +4,27,0.5,0,3,14,3,2,0 +4,22,2.5,0,2,16,4,1,0 +3,32,13,1,1,12,3,2,0 +5,32,6,2,2,16,4,5,0 +5,42,23,4,3,14,2,2,0 +4,22,2.5,1,3,14,3,4,0 +5,32,2.5,1,1,12,4,5,0 +4,32,13,2,1,16,3,6,0 +5,27,6,2,2,14,4,5,0 +5,32,16.5,4,4,14,2,3,0 +4,22,0.5,0,3,12,3,4,0 +4,22,2.5,1,1,14,3,4,0 +4,32,9,2,3,16,4,4,0 +5,22,2.5,0,2,14,1,1,0 +4,27,2.5,2,3,16,2,4,0 +3,27,16.5,2,3,12,3,5,0 +5,22,2.5,0,3,16,3,2,0 +3,27,2.5,1,3,12,2,2,0 +4,22,2.5,0,2,12,3,2,0 +5,42,23,5.5,3,12,3,2,0 +4,37,13,2,2,17,4,5,0 +5,32,2.5,0,2,12,2,2,0 +3,37,23,3,3,14,4,5,0 +5,22,0.5,0,3,16,4,2,0 +5,32,16.5,3,4,16,4,2,0 +5,22,2.5,0,2,12,4,4,0 +5,37,16.5,2,4,20,6,4,0 +5,27,6,1,2,16,4,2,0 +4,37,16.5,2,3,12,3,5,0 +5,42,23,3,3,17,4,4,0 +4,37,16.5,3,2,16,3,4,0 +4,37,13,2,3,14,4,2,0 +5,22,2.5,0,1,12,5,4,0 +5,22,0.5,0,4,16,4,6,0 +5,22,6,1,1,14,2,4,0 +3,22,2.5,1,2,12,4,4,0 +5,27,2.5,0,2,14,4,6,0 +5,22,2.5,0,2,12,3,4,0 +4,42,23,2,2,14,3,5,0 +4,22,2.5,0,2,12,3,4,0 +5,22,0.5,1,2,12,2,2,0 +3,27,6,2,2,14,2,4,0 +5,22,2.5,0,3,14,3,3,0 +5,22,0.5,0,3,14,3,5,0 +5,42,23,3,3,12,3,2,0 +4,27,2.5,0,1,16,3,3,0 +5,27,2.5,0,2,14,2,2,0 +5,27,9,2,4,12,2,4,0 +4,22,2.5,0,4,16,4,5,0 +4,27,6,2,1,16,4,5,0 +5,27,6,1,3,16,4,5,0 +5,32,16.5,3,3,12,2,3,0 +4,17.5,2.5,0,2,12,3,5,0 +4,32,2.5,0,3,17,4,2,0 +3,32,16.5,3,3,14,5,6,0 +5,22,2.5,1,3,12,3,3,0 +4,32,23,4,4,14,4,2,0 +5,22,2.5,0,1,16,4,5,0 +5,22,0.5,0,3,14,3,2,0 +3,22,2.5,0,2,16,4,6,0 +4,37,6,0,3,20,4,3,0 +4,22,0.5,0,3,12,2,2,0 +4,32,9,0,3,14,4,4,0 +5,22,2.5,0,3,12,2,2,0 +4,32,13,3,3,14,4,4,0 +4,22,2.5,1,4,14,3,5,0 +4,22,2.5,0,3,12,2,4,0 +5,17.5,2.5,0,3,12,3,2,0 +5,27,2.5,1,2,12,2,2,0 +5,22,2.5,1,1,12,3,4,0 +4,27,6,1,3,14,3,3,0 +4,42,23,2,3,12,3,3,0 +4,37,16.5,3,2,16,4,4,0 +5,42,23,5.5,4,12,3,5,0 +5,27,9,2,2,12,2,4,0 +5,27,6,0,2,14,2,3,0 +5,22,0.5,0,3,16,4,2,0 +5,42,23,5.5,2,16,4,6,0 +4,22,2.5,0,3,16,4,5,0 +5,32,13,1,3,14,3,5,0 +5,27,2.5,0,3,16,4,4,0 +5,42,23,4,3,14,4,4,0 +5,22,2.5,1,2,12,2,4,0 +3,32,9,2,2,14,3,4,0 +5,27,2.5,0,3,12,3,3,0 +4,22,0.5,0,3,14,4,2,0 +2,37,16.5,5.5,3,14,3,5,0 +5,42,23,4,3,12,5,4,0 +3,27,9,0,2,12,3,6,0 +5,42,16.5,3,2,14,3,4,0 +4,27,9,2,3,14,2,4,0 +4,17.5,0.5,0,2,12,3,5,0 +4,22,2.5,0,4,12,2,5,0 +4,22,2.5,1,2,12,2,4,0 +5,22,0.5,0,3,14,3,4,0 +5,32,16.5,3,2,12,3,5,0 +4,32,16.5,2,3,14,4,5,0 +5,22,2.5,0,1,17,4,4,0 +5,27,2.5,0,2,16,5,6,0 +5,32,0.5,0,1,12,4,5,0 +3,22,6,1,2,9,2,2,0 +4,27,13,3,2,12,3,2,0 +5,37,0.5,0,3,12,3,4,0 +5,17.5,0.5,0,3,12,3,2,0 +4,27,2.5,0,2,16,4,3,0 +4,37,9,2,3,17,4,4,0 +4,22,6,2,3,12,3,2,0 +4,42,23,3,3,14,3,5,0 +5,22,2.5,1,1,14,3,2,0 +3,22,2.5,0,2,16,3,5,0 +5,22,6,1,2,12,3,4,0 +4,37,16.5,3,4,16,4,3,0 +3,42,23,5.5,2,14,3,2,0 +5,22,2.5,0,3,12,2,2,0 +4,27,2.5,1,4,16,4,2,0 +4,32,9,3,3,14,2,2,0 +5,37,16.5,3,2,12,3,4,0 +5,22,6,1,2,12,3,4,0 +5,22,2.5,1,3,12,2,2,0 +4,27,9,1,2,14,3,4,0 +5,22,2.5,0,4,16,6,6,0 +4,32,2.5,0,3,17,4,3,0 +5,27,9,0,3,12,3,3,0 +4,22,6,0,1,14,3,5,0 +5,42,23,4,4,12,3,2,0 +5,32,16.5,4,3,12,5,4,0 +5,32,16.5,3,3,12,3,4,0 +4,27,6,0,2,12,3,4,0 +4,32,2.5,0,3,16,3,4,0 +5,27,6,1,2,16,3,3,0 +5,22,0.5,0,1,12,3,2,0 +5,42,23,4,4,12,2,4,0 +2,32,6,2,2,16,4,6,0 +5,22,6,2,3,16,4,2,0 +4,22,2.5,1,2,12,5,4,0 +5,42,23,5.5,3,12,3,2,0 +5,32,6,2,2,14,4,4,0 +5,42,23,2,2,14,5,3,0 +4,27,6,0,3,14,3,5,0 +4,37,16.5,3,3,14,3,4,0 +5,42,16.5,3,2,12,5,2,0 +4,32,16.5,3,2,12,3,4,0 +5,22,2.5,0,2,14,5,1,0 +4,27,9,2,3,14,4,3,0 +5,22,6,1,2,9,4,2,0 +4,22,2.5,2,2,14,3,4,0 +5,27,9,1,3,16,4,4,0 +4,27,6,2,3,14,3,4,0 +5,22,2.5,0,4,9,3,5,0 +5,22,2.5,0,3,20,4,6,0 +5,27,2.5,0,2,16,4,2,0 +5,22,2.5,0,3,17,4,5,0 +5,27,13,2,3,12,3,4,0 +4,27,2.5,0,3,16,4,5,0 +4,42,23,2,4,12,4,2,0 +5,27,6,2,2,17,4,1,0 +3,27,2.5,0,1,16,4,5,0 +4,27,6,1,3,12,4,6,0 +5,27,6,1,2,16,4,3,0 +5,22,0.5,0,2,12,2,2,0 +2,22,0.5,0,2,14,3,5,0 +4,27,2.5,0,3,14,3,5,0 +5,27,6,1,1,14,4,2,0 +4,37,23,3,3,14,2,6,0 +3,22,2.5,0,1,14,3,5,0 +4,27,9,2,3,17,4,6,0 +4,42,23,5.5,3,12,3,2,0 +4,22,0.5,0,3,16,3,5,0 +5,22,2.5,0,1,14,3,5,0 +5,22,6,0,2,12,3,5,0 +4,27,6,1,3,16,4,3,0 +4,42,23,4,3,12,3,4,0 +5,22,0.5,0,3,12,3,5,0 +4,22,2.5,0,1,16,2,4,0 +5,22,0.5,0,4,14,3,4,0 +5,27,2.5,0,3,14,3,4,0 +5,22,2.5,0,4,14,3,6,0 +4,37,16.5,4,3,14,4,5,0 +5,22,2.5,0,2,12,2,2,0 +5,22,2.5,0,2,14,3,5,0 +4,22,2.5,1,4,16,3,2,0 +5,37,23,4,1,14,3,2,0 +5,27,2.5,0,1,16,3,5,0 +3,37,9,1,2,17,5,5,0 +5,22,0.5,0,4,16,4,2,0 +5,27,9,2,2,14,4,5,0 +5,32,6,1,3,12,3,2,0 +4,22,2.5,0,3,14,3,5,0 +4,27,6,0,1,14,3,5,0 +4,17.5,0.5,0,3,14,3,5,0 +4,27,6,1,1,16,5,4,0 +4,22,2.5,0,2,14,3,5,0 +4,27,6,0,3,14,4,5,0 +4,27,6,2,3,16,4,5,0 +4,27,6,0,1,20,4,4,0 +5,22,2.5,0,4,14,5,4,0 +5,27,2.5,0,4,20,6,5,0 +5,22,0.5,0,2,17,4,2,0 +5,37,23,4,2,14,3,5,0 +5,37,16.5,4,4,12,4,5,0 +5,27,2.5,0,1,14,5,5,0 +5,42,23,4,3,12,3,4,0 +5,27,13,3,1,14,2,4,0 +4,22,2.5,0,2,14,3,4,0 +5,32,16.5,4,4,12,2,4,0 +3,37,16.5,2,3,12,3,4,0 +5,22,2.5,0,2,12,3,2,0 +4,27,2.5,1,3,12,3,2,0 +5,27,2.5,0,3,12,3,2,0 +5,32,13,3,3,12,3,4,0 +4,27,2.5,1,2,16,4,4,0 +4,22,0.5,0,3,12,3,5,0 +4,27,2.5,0,2,16,4,4,0 +4,27,2.5,0,2,17,5,6,0 +2,22,2.5,0,1,16,4,1,0 +4,32,9,2,3,14,2,4,0 +5,42,23,3,2,12,3,4,0 +3,27,2.5,0,2,14,4,4,0 +5,27,13,0,3,12,3,4,0 +4,22,2.5,0,3,12,3,2,0 +4,17.5,0.5,0,3,17,2,4,0 +4,27,6,1,2,12,3,6,0 +5,22,6,0,4,14,4,1,0 +3,27,6,1,3,16,4,5,0 +5,22,6,2,3,12,4,5,0 +5,27,6,2,3,16,4,6,0 +5,27,2.5,1,3,14,5,5,0 +4,22,2.5,1,2,14,1,5,0 +4,32,13,2,3,12,2,6,0 +4,27,16.5,2,3,20,4,4,0 +4,32,9,2,2,17,4,5,0 +4,37,16.5,3,3,14,2,5,0 +5,17.5,0.5,0,3,12,2,2,0 +4,22,2.5,0,2,16,4,1,0 +4,27,9,1,3,14,3,5,0 +5,27,6,2,3,14,4,2,0 +1,32,16.5,5.5,2,12,2,2,0 +3,27,9,1,2,14,3,5,0 +3,32,13,4,3,12,2,4,0 +5,42,13,4,4,14,3,4,0 +3,22,2.5,1,3,14,3,2,0 +5,32,13,2,2,12,2,2,0 +5,27,2.5,0,3,16,4,5,0 +4,22,2.5,0,2,16,4,5,0 +5,22,2.5,0,3,12,3,4,0 +5,22,2.5,0,2,12,2,4,0 +3,37,16.5,2,2,14,2,2,0 +5,32,9,2,2,20,4,6,0 +5,27,13,2,2,12,5,5,0 +3,37,13,1,4,12,2,2,0 +5,42,23,3,2,12,2,2,0 +4,22,2.5,0,3,14,3,4,0 +4,42,23,2,4,14,3,2,0 +3,22,2.5,0,1,14,3,2,0 +4,27,0.5,0,2,14,3,3,0 +4,42,13,2,1,20,4,4,0 +4,22,2.5,0,2,14,3,2,0 +5,27,6,0,4,16,3,5,0 +4,22,0.5,0,3,14,3,4,0 +5,32,2.5,0,3,17,4,4,0 +5,22,2.5,0,3,12,3,2,0 +4,32,16.5,4,1,12,2,2,0 +3,27,6,0,3,17,4,4,0 +5,32,13,2,3,16,2,2,0 +5,27,2.5,0,3,16,4,5,0 +4,32,16.5,2,2,14,4,5,0 +4,17.5,0.5,0,2,12,2,2,0 +4,37,23,3,2,12,3,5,0 +5,27,13,2,3,14,3,4,0 +5,32,16.5,3,2,12,2,2,0 +5,27,6,2,2,14,2,5,0 +5,22,2.5,0,3,12,3,2,0 +5,27,2.5,1,3,16,4,4,0 +3,17.5,2.5,1,3,12,3,2,0 +5,22,2.5,0,2,14,4,2,0 +5,22,0.5,0,4,16,4,2,0 +4,27,2.5,0,3,12,3,2,0 +4,27,6,2,1,12,2,2,0 +4,22,6,1,2,14,3,4,0 +4,27,2.5,0,3,17,4,1,0 +2,32,16.5,3,4,16,4,4,0 +4,22,2.5,0,2,14,3,2,0 +5,27,2.5,0,2,17,4,3,0 +4,27,2.5,0,3,16,4,2,0 +5,27,6,2,4,12,3,2,0 +5,32,16.5,2,3,14,2,2,0 +5,17.5,2.5,0,2,14,4,4,0 +4,42,16.5,5.5,3,12,2,5,0 +5,27,2.5,1,2,12,4,4,0 +4,32,2.5,0,3,16,5,5,0 +5,22,6,1,2,12,2,2,0 +4,27,6,1,3,16,4,4,0 +4,37,16.5,2,2,20,4,4,0 +5,17.5,0.5,0,3,12,3,2,0 +4,37,16.5,3,3,12,5,2,0 +5,27,2.5,0,2,16,2,2,0 +4,27,6,0,2,14,3,1,0 +4,27,9,2,3,20,4,4,0 +5,32,16.5,2,4,12,2,5,0 +5,27,2.5,2,3,17,4,5,0 +5,37,16.5,2,3,14,3,2,0 +4,42,23,3,3,14,3,2,0 +5,32,16.5,2,3,14,3,4,0 +4,22,0.5,0,2,12,3,5,0 +5,27,6,1,1,20,3,5,0 +3,27,2.5,0,3,17,4,3,0 +4,32,13,2,3,14,3,5,0 +4,22,2.5,1,2,14,3,4,0 +4,27,2.5,0,1,12,3,4,0 +5,22,2.5,0,3,12,3,4,0 +3,42,23,3,3,12,5,2,0 +5,27,6,0,3,14,3,4,0 +4,37,16.5,2,3,16,4,5,0 +4,27,6,0,4,14,3,3,0 +5,22,6,1,3,12,3,4,0 +5,32,6,1,2,17,4,3,0 +5,22,0.5,0,2,12,3,4,0 +4,22,2.5,0,3,14,3,4,0 +4,22,0.5,0,3,12,3,4,0 +3,32,2.5,1,2,14,3,4,0 +2,32,6,0,3,17,4,3,0 +5,32,9,2,4,17,4,4,0 +4,42,23,2,3,12,3,4,0 +5,42,23,3,4,17,4,6,0 +5,22,2.5,1,2,12,2,5,0 +5,42,23,2,2,12,2,2,0 +4,27,6,1,2,12,2,4,0 +4,27,2.5,0,1,14,3,3,0 +5,22,2.5,0,2,16,2,1,0 +4,42,16.5,4,4,17,4,5,0 +5,27,2.5,0,1,14,3,4,0 +3,32,9,1,3,14,2,5,0 +5,22,2.5,0,3,14,4,6,0 +4,22,6,0,3,12,3,4,0 +5,22,2.5,0,2,16,4,2,0 +4,22,0.5,0,3,16,4,5,0 +5,22,0.5,1,3,16,4,5,0 +4,32,9,0,2,14,3,2,0 +3,27,2.5,1,3,14,4,4,0 +4,27,6,0,2,20,4,6,0 +5,22,2.5,0,1,16,4,2,0 +5,22,2.5,2,3,12,2,4,0 +5,22,6,3,3,12,3,2,0 +4,27,9,2,3,14,6,4,0 +4,32,16.5,5.5,3,14,2,2,0 +5,32,6,2,3,17,2,6,0 +4,22,0.5,0,3,17,5,5,0 +5,27,6,2,4,12,2,2,0 +5,42,23,4,4,12,3,5,0 +4,22,2.5,0,2,12,2,5,0 +4,42,23,3,3,12,2,2,0 +5,32,9,2,3,14,2,2,0 +5,42,23,3,2,12,3,2,0 +4,42,23,2,2,12,3,5,0 +5,27,9,1,4,16,3,3,0 +5,22,2.5,0,3,12,2,2,0 +3,32,16.5,2,2,9,2,4,0 +5,22,2.5,0,3,16,3,5,0 +5,32,9,1,4,20,4,5,0 +5,27,6,2,4,14,3,2,0 +5,42,23,2,3,14,3,4,0 +5,32,16.5,2,1,14,4,5,0 +5,27,9,3,1,20,1,6,0 +5,32,13,2,4,20,6,6,0 +5,22,2.5,0,2,17,5,4,0 +4,27,6,0,3,14,3,5,0 +5,27,2.5,0,4,16,5,5,0 +4,17.5,2.5,1,2,12,5,6,0 +5,22,0.5,0,4,16,3,2,0 +4,22,2.5,0,4,16,3,1,0 +5,37,23,5.5,3,12,2,2,0 +4,22,0.5,0,1,12,5,2,0 +3,32,9,3,3,14,3,6,0 +4,22,2.5,0,1,12,2,4,0 +3,27,6,4,3,16,4,5,0 +4,22,2.5,1,3,14,4,5,0 +4,32,6,0,1,16,3,2,0 +5,32,16.5,3,3,17,4,5,0 +3,22,2.5,1,2,16,4,4,0 +5,27,6,0,3,16,2,1,0 +5,32,6,0,4,17,4,5,0 +5,27,6,2,3,14,3,5,0 +4,22,2.5,0,3,12,3,3,0 +5,42,23,3,2,12,5,5,0 +4,22,2.5,0,2,16,4,5,0 +5,27,6,0,2,20,4,1,0 +5,32,9,3,3,12,2,4,0 +5,42,23,4,1,14,4,4,0 +4,27,6,1,1,14,3,5,0 +5,22,2.5,0,1,14,3,1,0 +5,27,6,0,2,12,3,5,0 +5,27,2.5,1,3,16,4,4,0 +5,37,13,1,2,14,5,5,0 +4,22,2.5,0,2,16,4,4,0 +5,22,2.5,0,3,12,4,4,0 +3,22,6,1,2,12,2,2,0 +5,22,0.5,0,2,16,4,5,0 +4,32,13,1,2,12,3,4,0 +4,22,6,0,1,14,3,5,0 +5,22,2.5,0,1,14,3,1,0 +3,27,6,0,2,14,3,1,0 +3,27,13,4,3,12,2,2,0 +4,22,2.5,0,3,16,4,5,0 +5,27,6,2,2,16,4,6,0 +5,22,2.5,0,2,12,2,5,0 +4,17.5,2.5,0,2,12,2,2,0 +5,42,16.5,3,2,12,2,2,0 +3,27,6,2,2,9,4,2,0 +5,27,2.5,0,1,20,4,6,0 +5,22,2.5,0,3,12,5,4,0 +5,32,16.5,4,3,12,5,5,0 +5,27,0.5,0,3,16,5,5,0 +4,22,2.5,0,4,14,1,6,0 +5,32,13,3,3,12,2,2,0 +4,22,2.5,0,3,16,3,1,0 +5,27,2.5,0,1,20,6,1,0 +4,27,2.5,0,3,17,4,4,0 +5,22,2.5,0,4,12,3,4,0 +5,17.5,0.5,0,4,9,2,2,0 +2,27,9,1,1,12,3,5,0 +4,22,2.5,0,3,12,3,2,0 +4,22,2.5,0,2,12,3,2,0 +5,42,23,3,1,16,4,6,0 +4,22,2.5,1,3,12,3,2,0 +3,27,6,1,3,12,3,2,0 +5,27,0.5,0,4,17,3,2,0 +4,42,23,1,3,12,5,5,0 +4,32,16.5,3,3,12,3,5,0 +5,22,6,0,2,12,2,4,0 +4,22,2.5,0,2,16,4,4,0 +4,22,2.5,0,3,14,3,1,0 +3,27,9,2,1,12,2,2,0 +5,22,2.5,0,3,12,3,2,0 +5,37,16.5,2,1,12,3,4,0 +4,42,23,3,3,12,3,4,0 +5,27,2.5,0,2,12,3,4,0 +4,32,2.5,0,1,14,3,2,0 +3,22,0.5,0,2,16,3,1,0 +5,22,0.5,0,4,16,3,1,0 +5,42,23,5.5,3,12,2,5,0 +4,22,2.5,1,3,12,3,2,0 +4,27,2.5,0,1,14,3,2,0 +2,42,23,4,4,12,3,2,0 +4,22,2.5,0,4,17,5,1,0 +4,27,6,1,2,14,2,4,0 +5,27,6,3,2,14,5,5,0 +5,27,6,3,2,14,3,4,0 +4,27,6,2,3,14,3,5,0 +4,22,2.5,0,2,14,3,4,0 +4,22,2.5,2,2,14,2,2,0 +3,42,23,3,2,12,3,5,0 +5,22,0.5,0,2,17,4,2,0 +5,27,9,4,2,12,3,2,0 +5,22,0.5,0,1,16,4,5,0 +4,22,2.5,0,2,16,4,2,0 +5,17.5,0.5,0,3,14,3,5,0 +5,27,6,1,3,12,3,6,0 +2,27,6,0,3,17,2,5,0 +5,27,0.5,0,2,12,3,4,0 +5,22,2.5,0,1,12,5,4,0 +5,27,2.5,0,2,16,4,4,0 +4,37,16.5,2,2,16,4,3,0 +5,22,2.5,0,2,14,3,2,0 +5,27,2.5,0,1,16,4,1,0 +5,42,23,5.5,3,14,3,4,0 +5,37,16.5,4,2,14,2,5,0 +4,27,0.5,0,2,17,4,4,0 +5,27,6,0,3,20,6,2,0 +4,27,13,2,2,12,3,4,0 +3,22,6,1,2,12,4,2,0 +5,32,13,2,2,16,4,2,0 +5,27,2.5,0,2,17,3,6,0 +5,27,6,4,3,12,3,4,0 +4,42,23,2,3,12,3,2,0 +4,22,2.5,0,4,17,4,2,0 +5,32,16.5,3,3,12,2,4,0 +5,22,2.5,0,1,16,3,5,0 +5,22,0.5,0,3,12,5,2,0 +4,42,23,5.5,4,12,3,5,0 +5,42,16.5,2,3,16,4,4,0 +4,22,2.5,0,1,12,3,2,0 +2,22,2.5,1,2,14,3,4,0 +3,22,2.5,0,1,12,3,3,0 +4,32,13,2,3,17,4,3,0 +5,27,6,1,3,16,4,5,0 +4,32,9,2,2,16,4,5,0 +5,27,2.5,0,2,16,4,4,0 +2,22,2.5,2,3,14,4,2,0 +5,22,0.5,0,4,16,4,5,0 +5,27,2.5,0,3,14,3,2,0 +5,27,6,1,3,12,2,4,0 +4,27,6,2,4,12,3,2,0 +4,22,2.5,0,2,14,3,2,0 +4,22,2.5,0,1,12,4,3,0 +5,22,2.5,0,2,14,3,5,0 +5,22,2.5,2,3,14,3,4,0 +3,32,6,2,3,17,2,4,0 +4,27,6,3,3,14,4,4,0 +4,42,23,3,3,14,3,4,0 +5,22,0.5,0,3,12,3,4,0 +4,42,13,4,3,12,2,5,0 +5,22,6,0,4,14,1,5,0 +2,32,13,1,3,20,4,3,0 +4,22,2.5,0,1,12,2,4,0 +5,22,2.5,0,2,17,4,5,0 +5,42,23,5.5,2,12,5,5,0 +4,17.5,2.5,1,2,12,3,2,0 +5,27,13,1,2,14,3,5,0 +5,22,0.5,0,2,16,4,5,0 +4,32,2.5,0,1,12,3,4,0 +5,17.5,0.5,0,4,12,4,5,0 +5,22,0.5,2,2,16,4,4,0 +3,17.5,2.5,1,2,14,2,1,0 +3,27,6,0,3,14,3,2,0 +4,22,2.5,0,3,16,4,5,0 +5,22,6,2,2,12,3,4,0 +4,22,2.5,2,3,12,3,5,0 +4,22,6,1,2,12,3,5,0 +4,27,2.5,0,3,20,4,4,0 +5,27,2.5,0,3,17,3,5,0 +4,22,2.5,0,3,14,3,5,0 +5,27,2.5,0,2,14,2,2,0 +5,27,2.5,0,2,17,4,4,0 +5,22,2.5,0,3,14,2,2,0 +5,22,0.5,0,2,14,3,5,0 +4,42,23,3,4,17,3,6,0 +5,37,23,5.5,3,12,5,5,0 +4,22,6,1,3,12,2,2,0 +4,22,2.5,0,2,12,3,4,0 +5,32,2.5,0,1,14,3,3,0 +4,17.5,2.5,0,2,12,3,3,0 +5,37,23,5.5,3,12,2,3,0 +5,22,2.5,1,3,12,3,2,0 +5,42,23,5.5,4,16,4,5,0 +5,42,23,4,3,12,3,3,0 +4,27,6,0,2,14,5,3,0 +4,32,13,2,3,16,3,3,0 +4,27,6,2,3,12,2,4,0 +4,32,13,3,4,14,3,5,0 +5,32,13,3,2,12,3,2,0 +3,42,23,5.5,2,14,3,2,0 +1,37,13,3,4,17,2,4,0 +5,22,2.5,0,2,14,5,5,0 +4,22,2.5,0,1,12,5,4,0 +4,22,2.5,0,3,14,3,2,0 +4,22,6,3,2,14,4,2,0 +5,27,2.5,0,3,17,4,5,0 +4,22,0.5,0,2,14,3,5,0 +5,22,0.5,0,3,17,4,4,0 +4,27,9,0,2,12,3,2,0 +4,27,0.5,0,3,16,4,6,0 +4,27,6,2,3,12,2,6,0 +4,22,2.5,0,2,14,4,4,0 +5,22,6,0,3,12,4,6,0 +4,22,0.5,0,2,12,3,5,0 +5,17.5,0.5,0,2,12,4,2,0 +5,27,2.5,1,1,17,4,5,0 +3,27,9,2,1,14,3,5,0 +4,27,0.5,2,2,14,3,5,0 +4,22,2.5,0,2,14,2,5,0 +4,27,2.5,0,3,12,3,2,0 +2,27,6,2,2,14,3,2,0 +5,27,2.5,0,3,14,2,4,0 +5,42,9,0,4,20,4,4,0 +5,22,2.5,0,2,14,4,3,0 +5,37,13,5.5,4,17,4,5,0 +4,42,23,2,3,14,4,3,0 +5,32,16.5,3,4,14,4,3,0 +5,37,16.5,1,3,12,3,5,0 +5,22,2.5,0,3,14,3,5,0 +5,27,2.5,0,3,20,6,1,0 +4,42,23,3,3,14,4,5,0 +4,42,23,4,1,16,4,5,0 +3,27,2.5,0,2,16,3,5,0 +5,37,16.5,3,2,16,4,3,0 +5,42,23,5.5,3,14,4,4,0 +4,22,2.5,1,1,14,3,4,0 +5,27,9,1,3,12,2,5,0 +5,22,2.5,0,2,14,3,6,0 +4,22,2.5,1,2,14,2,2,0 +3,42,23,3,4,12,3,4,0 +5,42,23,3,3,12,3,4,0 +4,32,13,2,1,14,3,4,0 +4,37,16.5,5.5,3,12,4,5,0 +4,27,6,1,4,12,3,4,0 +5,42,23,5.5,3,16,4,5,0 +5,32,6,2,2,16,2,5,0 +2,32,9,2,4,14,4,5,0 +5,27,13,2,3,12,3,4,0 +5,42,23,5.5,4,14,4,2,0 +5,42,23,3,3,12,3,5,0 +5,22,0.5,0,2,14,4,3,0 +3,37,16.5,2,3,12,5,2,0 +4,27,6,2,3,12,3,2,0 +4,37,16.5,2,2,14,3,2,0 +2,32,16.5,2,2,12,3,4,0 +4,27,2.5,0,2,14,4,4,0 +5,37,23,2,2,14,3,2,0 +5,22,0.5,0,4,14,4,2,0 +5,42,16.5,3,2,12,3,4,0 +4,37,13,3,2,12,2,4,0 +5,32,13,2,4,12,2,2,0 +4,22,2.5,0,3,12,3,2,0 +5,27,2.5,1,3,14,5,5,0 +5,22,0.5,0,4,16,4,6,0 +5,37,16.5,5.5,3,12,2,4,0 +4,32,9,2,2,16,4,4,0 +5,22,2.5,0,1,14,3,5,0 +5,22,2.5,0,3,16,4,5,0 +4,32,16.5,4,3,12,2,4,0 +5,22,2.5,0,4,14,3,2,0 +5,37,23,3,4,14,2,4,0 +5,27,6,0,2,16,4,1,0 +5,22,2.5,0,2,12,3,4,0 +5,32,6,0,4,20,4,4,0 +4,32,16.5,2,2,14,4,2,0 +4,22,0.5,0,3,16,4,4,0 +3,22,2.5,0,3,14,3,2,0 +4,22,2.5,0,1,14,5,4,0 +5,27,2.5,0,2,17,4,5,0 +5,22,2.5,0,2,14,3,5,0 +2,42,16.5,3,3,14,3,5,0 +3,22,2.5,0,4,14,3,3,0 +5,27,6,0,2,20,4,4,0 +5,27,6,1,2,12,4,2,0 +4,22,2.5,0,1,14,3,4,0 +4,37,16.5,3,1,12,3,2,0 +4,32,16.5,3,2,14,3,2,0 +3,27,6,1,1,14,3,4,0 +4,27,6,1,3,17,4,3,0 +4,42,23,2,3,20,4,4,0 +4,27,6,2,2,12,3,4,0 +4,32,9,2,3,12,5,5,0 +5,42,23,2,2,14,3,2,0 +5,32,16.5,2,3,12,3,5,0 +4,22,2.5,0,3,16,3,4,0 +5,27,6,2,3,14,4,3,0 +5,27,2.5,1,2,12,3,3,0 +5,27,6,1,3,12,3,2,0 +4,32,6,1,3,12,2,2,0 +4,22,2.5,0,2,16,4,5,0 +5,27,2.5,1,3,16,3,6,0 +3,27,6,0,1,17,4,6,0 +5,27,2.5,0,2,17,4,6,0 +4,22,2.5,0,3,12,5,5,0 +4,22,6,1,2,12,3,4,0 +3,32,2.5,0,1,20,6,6,0 +2,37,23,5.5,2,14,3,4,0 +3,42,23,4,3,12,2,2,0 +4,22,2.5,1,1,12,3,3,0 +5,42,16.5,4,3,16,4,2,0 +5,22,0.5,0,3,14,3,5,0 +4,22,0.5,0,2,12,2,5,0 +4,27,6,2,3,12,4,5,0 +5,27,2.5,0,4,16,3,1,0 +4,22,2.5,0,3,12,5,2,0 +3,22,0.5,0,3,14,3,5,0 +5,27,2.5,0,2,16,3,5,0 +5,27,0.5,0,2,20,4,2,0 +5,32,16.5,4,3,14,4,5,0 +4,22,2.5,1,3,12,2,4,0 +3,22,2.5,0,1,16,3,2,0 +4,27,6,1,2,12,4,4,0 +4,17.5,2.5,0,3,14,2,2,0 +5,37,16.5,4,2,17,4,6,0 +4,32,16.5,5.5,1,14,2,2,0 +5,22,0.5,0,4,16,4,4,0 +5,22,2.5,0,2,16,4,5,0 +5,17.5,0.5,0,2,12,4,4,0 +5,22,2.5,1,4,14,2,2,0 +5,42,9,0,3,12,3,4,0 +4,27,6,1,2,14,3,2,0 +3,32,13,2,2,16,2,2,0 +4,32,13,2,2,12,2,2,0 +5,22,2.5,0,3,17,3,4,0 +4,27,9,2,2,12,2,4,0 +4,37,23,2,4,14,3,6,0 +4,42,23,3,2,14,4,6,0 +4,22,2.5,0,3,14,3,4,0 +5,27,9,2,3,14,4,4,0 +2,32,13,1,3,14,5,3,0 +1,42,23,2,3,12,2,2,0 +5,22,2.5,0,3,14,3,4,0 +4,27,6,1,3,16,4,4,0 +4,42,23,4,3,12,2,5,0 +5,32,16.5,3,1,14,5,5,0 +5,27,2.5,0,4,16,3,6,0 +4,27,9,0,2,12,5,2,0 +3,22,2.5,0,1,14,3,5,0 +5,27,2.5,0,2,12,3,6,0 +5,32,9,3,2,12,3,3,0 +5,22,0.5,0,3,14,2,4,0 +4,27,2.5,1,1,12,3,3,0 +4,37,16.5,3,3,12,3,2,0 +5,22,2.5,0,3,12,5,4,0 +3,22,2.5,0,2,14,4,2,0 +5,32,13,2,2,12,2,4,0 +5,32,9,2,3,17,4,5,0 +4,37,16.5,3,2,12,3,5,0 +5,27,2.5,0,3,14,4,4,0 +2,42,23,4,1,17,3,5,0 +4,27,6,2,3,16,4,4,0 +4,42,23,3,4,14,4,4,0 +5,22,0.5,0,4,14,3,1,0 +5,27,2.5,0,3,16,4,5,0 +4,22,2.5,0,3,16,4,4,0 +3,32,6,2,3,16,4,5,0 +5,22,6,0,3,14,3,4,0 +4,22,2.5,1,2,12,2,4,0 +5,27,0.5,0,2,14,4,4,0 +3,32,6,3,4,16,5,6,0 +4,27,0.5,0,4,14,3,4,0 +5,27,2.5,0,3,16,4,5,0 +4,22,6,0,2,12,3,2,0 +4,22,2.5,0,3,12,3,5,0 +4,22,2.5,0,1,17,4,4,0 +4,27,6,2,4,14,4,5,0 +5,22,2.5,0,1,16,2,5,0 +4,27,6,2,3,16,4,4,0 +5,22,0.5,0,2,16,3,5,0 +5,32,13,3,3,14,4,5,0 +4,32,6,0,3,17,2,2,0 +5,32,13,2,2,12,3,5,0 +5,22,2.5,0,2,14,5,2,0 +5,27,13,2,2,14,4,4,0 +4,27,6,1,4,16,4,4,0 +5,32,16.5,5.5,4,14,4,6,0 +5,37,16.5,3,3,17,4,5,0 +4,22,2.5,0,4,14,3,2,0 +5,37,16.5,4,2,14,3,2,0 +3,32,16.5,3,3,12,3,3,0 +5,22,2.5,0,1,14,2,2,0 +5,22,2.5,2,3,14,3,4,0 +3,37,16.5,2,3,12,3,5,0 +4,22,2.5,0,2,16,3,6,0 +5,22,0.5,0,3,12,5,4,0 +5,42,23,3,4,16,4,5,0 +4,22,6,2,2,14,5,5,0 +5,27,2.5,0,2,17,4,6,0 +5,27,6,0,1,12,3,4,0 +5,22,2.5,0,3,12,2,4,0 +4,37,23,3,4,14,4,4,0 +3,27,2.5,0,3,16,3,5,0 +5,27,2.5,0,2,14,4,3,0 +5,22,2.5,0,2,14,3,5,0 +4,32,13,2,2,14,2,3,0 +4,32,16.5,2,2,17,4,6,0 +4,27,6,2,2,12,3,4,0 +4,22,0.5,0,3,12,3,4,0 +3,22,2.5,1,4,14,2,2,0 +3,27,2.5,0,2,16,4,4,0 +3,27,6,2,2,17,6,4,0 +5,27,2.5,0,2,12,2,4,0 +5,22,0.5,0,2,12,3,4,0 +2,42,23,5.5,4,12,3,4,0 +4,27,2.5,0,4,17,5,5,0 +5,27,6,2,3,16,4,4,0 +4,42,23,2,3,12,3,2,0 +5,27,6,1,2,14,3,5,0 +5,22,2.5,0,3,14,4,2,0 +3,22,6,3,2,12,2,2,0 +5,17.5,0.5,0,2,12,3,5,0 +4,27,6,0,3,14,3,1,0 +5,22,2.5,0,2,16,4,5,0 +5,27,0.5,0,4,14,3,4,0 +4,42,23,5.5,4,16,4,5,0 +5,37,16.5,3,2,12,3,3,0 +4,42,23,3,2,12,3,3,0 +4,27,2.5,0,3,16,4,4,0 +4,22,2.5,0,3,17,4,5,0 +5,22,0.5,0,2,20,4,5,0 +5,22,2.5,1,2,12,3,4,0 +4,22,6,3,3,12,2,2,0 +5,42,23,5.5,2,16,4,4,0 +3,32,6,0,1,14,3,6,0 +5,37,13,0,2,14,4,6,0 +5,27,2.5,0,1,17,4,4,0 +3,32,6,0,2,14,3,5,0 +5,27,2.5,0,2,14,5,4,0 +5,42,23,4,3,14,2,5,0 +5,32,16.5,5.5,4,12,5,5,0 +4,27,6,2,2,12,3,4,0 +3,22,2.5,0,2,12,2,2,0 +2,27,2.5,0,1,20,4,2,0 +5,37,16.5,5.5,3,9,2,5,0 +3,37,23,3,2,12,2,4,0 +5,22,2.5,1,3,12,2,3,0 +5,22,2.5,0,2,14,3,5,0 +5,22,2.5,0,4,14,2,2,0 +5,27,2.5,0,4,16,4,4,0 +4,22,2.5,0,3,14,3,2,0 +4,32,6,2,3,14,2,2,0 +5,17.5,2.5,0,1,12,3,2,0 +4,27,9,2,1,12,2,2,0 +3,32,16.5,1,2,12,3,2,0 +4,27,6,1,2,14,3,4,0 +5,27,6,2,3,16,4,5,0 +5,27,6,1,3,17,4,5,0 +4,22,0.5,0,2,14,3,2,0 +5,22,2.5,1,2,12,4,4,0 +4,27,9,2,2,12,3,2,0 +4,22,2.5,1,3,12,3,5,0 +4,22,2.5,0,3,16,4,1,0 +5,32,16.5,1,3,12,3,4,0 +5,22,2.5,0,3,12,3,2,0 +5,22,2.5,1,3,12,3,4,0 +5,27,13,1,2,12,3,3,0 +4,27,6,2,2,16,4,5,0 +3,42,23,4,2,16,4,6,0 +3,37,16.5,2,2,12,2,2,0 +5,27,6,1,3,12,2,2,0 +5,22,0.5,0,2,16,4,6,0 +5,22,2.5,0,4,14,1,1,0 +4,27,6,1,4,16,4,4,0 +3,42,23,2,4,14,2,5,0 +3,27,6,1,3,14,3,5,0 +4,22,2.5,0,3,14,4,4,0 +5,22,2.5,0,2,14,3,5,0 +3,32,13,2,2,12,4,4,0 +4,37,16.5,5.5,3,14,1,3,0 +4,37,23,5.5,1,14,3,2,0 +5,22,0.5,0,3,16,4,4,0 +5,42,16.5,3,4,17,4,4,0 +4,27,2.5,0,3,17,4,5,0 +4,32,16.5,2,1,12,5,5,0 +4,22,2.5,0,3,14,3,5,0 +3,22,6,2,2,14,2,4,0 +5,22,2.5,0,2,14,4,6,0 +5,37,13,0,1,12,5,5,0 +4,42,23,5.5,2,14,4,3,0 +5,37,16.5,3,2,14,3,6,0 +5,27,6,0,3,16,6,5,0 +4,22,9,3,3,12,5,5,0 +5,17.5,2.5,0,3,12,2,2,0 +5,42,23,3,2,12,3,5,0 +5,37,13,2,4,17,4,5,0 +4,37,13,0,2,14,5,5,0 +2,27,6,2,3,14,5,5,0 +5,22,2.5,2,4,12,3,5,0 +4,22,6,1,2,12,2,2,0 +4,27,6,1,2,14,3,3,0 +5,42,23,4,3,12,3,5,0 +5,27,2.5,0,4,16,3,3,0 +5,22,2.5,0,2,14,3,5,0 +5,42,13,0,4,14,5,2,0 +5,22,2.5,0,3,16,3,5,0 +5,22,2.5,0,3,12,3,2,0 +5,22,2.5,1,3,17,4,2,0 +5,22,0.5,0,3,17,4,3,0 +4,32,9,3,3,16,4,5,0 +4,32,9,2,3,14,2,2,0 +4,27,6,2,1,14,4,4,0 +5,32,2.5,4,3,16,5,4,0 +5,22,0.5,0,2,14,2,5,0 +5,27,2.5,0,3,14,3,2,0 +4,32,16.5,3,3,9,4,4,0 +5,42,23,2,1,14,3,4,0 +3,32,13,3,2,16,4,5,0 +4,27,6,1,3,12,3,2,0 +5,27,9,2,4,12,2,2,0 +4,27,6,2,2,14,3,4,0 +4,22,2.5,0,2,14,3,1,0 +5,17.5,0.5,0,1,14,1,1,0 +4,32,16.5,3,3,14,5,5,0 +2,22,6,1,2,14,4,2,0 +5,22,2.5,0,2,14,3,4,0 +4,27,9,1,3,12,4,2,0 +5,22,2.5,1,2,12,4,1,0 +5,27,6,0,3,12,4,2,0 +3,42,23,3,3,14,3,4,0 +5,42,16.5,3,3,16,4,4,0 +5,27,6,1,4,14,2,2,0 +5,22,6,1,4,14,5,2,0 +4,22,0.5,0,2,16,3,2,0 +4,37,16.5,4,2,14,2,5,0 +5,32,16.5,3,3,12,2,2,0 +5,22,0.5,0,2,14,3,2,0 +5,32,16.5,3,3,12,3,2,0 +5,27,0.5,0,2,20,4,2,0 +5,22,2.5,0,3,12,3,4,0 +5,27,9,2,2,12,4,4,0 +4,22,2.5,1,2,12,2,3,0 +4,27,6,3,3,16,3,4,0 +3,42,16.5,3,4,9,5,4,0 +3,32,13,1,3,9,3,5,0 +5,32,16.5,3,3,14,4,4,0 +5,27,6,1,2,14,3,4,0 +4,32,16.5,2,2,12,3,3,0 +4,32,13,3,3,12,2,4,0 +5,22,2.5,0,3,16,4,1,0 +5,22,2.5,0,2,16,4,4,0 +4,27,13,2,3,16,4,4,0 +5,17.5,0.5,0,3,12,3,1,0 +4,27,9,2,3,14,2,1,0 +4,32,9,2,3,14,3,3,0 +5,32,16.5,3,2,14,3,4,0 +5,27,6,0,4,20,3,4,0 +5,32,16.5,2,4,14,4,4,0 +4,37,16.5,5.5,1,12,3,4,0 +4,22,2.5,0,3,14,3,3,0 +5,22,2.5,0,3,14,3,4,0 +4,27,2.5,0,2,16,3,5,0 +5,42,23,3,2,14,3,4,0 +5,22,2.5,1,3,14,3,4,0 +5,27,6,0,3,16,3,2,0 +4,27,6,0,2,14,2,2,0 +4,32,13,3,3,14,4,2,0 +5,27,9,1,2,12,3,4,0 +5,22,2.5,0,2,14,3,5,0 +1,42,23,4,4,16,4,2,0 +5,22,6,0,1,14,3,2,0 +5,32,13,3,1,14,3,2,0 +4,42,23,4,4,14,1,5,0 +3,22,2.5,0,2,12,3,4,0 +5,27,6,1,2,17,4,4,0 +3,42,23,3,2,12,3,2,0 +4,42,23,5.5,2,12,3,5,0 +4,22,6,0,1,16,4,5,0 +4,22,2.5,0,2,14,2,4,0 +5,27,6,2,4,12,2,4,0 +2,42,23,2,3,14,2,2,0 +5,32,16.5,3,3,14,3,2,0 +4,42,23,5.5,4,20,5,6,0 +5,22,2.5,0,1,14,2,5,0 +5,42,23,5.5,3,12,3,5,0 +5,27,0.5,0,2,16,4,4,0 +5,22,2.5,0,4,16,3,2,0 +3,27,9,2,3,12,2,5,0 +5,22,0.5,0,2,16,4,5,0 +5,22,2.5,1,3,16,4,4,0 +4,32,16.5,4,2,12,2,2,0 +4,32,13,0,2,17,4,2,0 +4,27,2.5,0,2,17,4,3,0 +5,32,16.5,2,2,14,3,3,0 +4,27,9,2,2,14,3,6,0 +4,22,2.5,2,3,12,2,4,0 +5,27,2.5,0,1,16,4,6,0 +2,22,2.5,1,3,16,2,4,0 +5,42,23,5.5,2,16,5,5,0 +5,27,2.5,0,3,20,4,4,0 +5,37,13,2,2,20,4,4,0 +5,42,16.5,1,4,14,3,5,0 +4,32,13,2,3,20,4,4,0 +5,22,2.5,1,3,12,3,1,0 +4,42,23,2,2,20,4,3,0 +4,27,9,2,3,12,3,4,0 +5,22,2.5,0,3,14,2,5,0 +5,22,2.5,0,4,12,2,4,0 +5,22,2.5,0,3,16,4,4,0 +5,32,16.5,3,3,12,3,3,0 +3,42,16.5,3,3,12,2,2,0 +5,27,2.5,1,1,16,4,5,0 +4,37,16.5,2,3,14,3,4,0 +5,37,2.5,0,3,20,4,3,0 +5,32,13,3,1,16,4,5,0 +3,37,16.5,2,3,14,2,2,0 +4,42,23,2,4,12,3,4,0 +5,27,2.5,0,2,16,4,4,0 +5,22,2.5,0,3,16,4,1,0 +5,22,6,0,2,14,2,2,0 +4,27,2.5,0,3,17,4,4,0 +5,22,2.5,0,3,16,4,1,0 +3,27,6,1,2,14,3,4,0 +5,32,16.5,4,3,12,5,5,0 +5,37,16.5,3,4,17,4,6,0 +4,32,13,2,3,12,4,5,0 +3,37,16.5,4,1,12,5,5,0 +5,22,2.5,0,2,12,2,4,0 +4,22,2.5,0,2,12,2,5,0 +4,22,2.5,1,3,16,4,4,0 +4,27,6,2,3,14,5,5,0 +5,22,2.5,0,3,12,2,2,0 +4,37,23,4,2,9,2,2,0 +5,27,9,2,3,12,3,4,0 +5,27,6,0,2,16,4,1,0 +4,32,2.5,0,2,12,3,2,0 +4,22,2.5,0,1,14,2,4,0 +3,32,13,0,1,14,3,6,0 +5,32,6,2,3,14,3,5,0 +5,22,2.5,0,1,14,3,3,0 +5,27,6,2,2,20,4,6,0 +4,22,2.5,0,1,16,4,4,0 +5,22,2.5,0,3,14,4,1,0 +4,42,23,4,2,17,4,6,0 +3,27,6,1,2,14,3,5,0 +4,27,2.5,0,3,16,3,5,0 +3,42,23,2,3,16,3,4,0 +4,42,23,3,2,12,3,4,0 +5,27,2.5,0,3,16,4,3,0 +4,22,2.5,0,3,12,3,3,0 +5,27,0.5,0,1,14,3,2,0 +5,37,16.5,3,3,12,5,5,0 +5,32,6,0,2,20,4,5,0 +5,22,6,0,1,12,5,5,0 +4,32,16.5,4,1,12,2,2,0 +4,22,2.5,1,1,12,2,2,0 +4,27,2.5,2,3,14,2,4,0 +3,27,2.5,0,2,16,4,2,0 +5,42,23,4,3,12,3,3,0 +4,27,2.5,1,4,14,4,4,0 +5,27,6,1,3,16,5,2,0 +5,27,6,0,3,14,3,4,0 +5,42,23,4,2,14,3,4,0 +5,22,2.5,1,3,14,5,2,0 +2,27,6,2,4,14,2,2,0 +4,42,23,2,3,14,3,5,0 +5,27,6,1,4,14,5,4,0 +4,22,2.5,0,4,16,4,4,0 +4,22,2.5,0,2,16,4,4,0 +4,27,9,2,2,16,4,3,0 +5,37,16.5,1,3,14,3,2,0 +4,22,2.5,1,3,12,2,2,0 +5,27,13,2,4,12,2,4,0 +4,27,6,0,2,17,4,5,0 +5,22,2.5,1,2,16,4,4,0 +5,17.5,0.5,0,1,12,3,3,0 +4,27,2.5,0,1,17,1,4,0 +5,27,6,1,2,16,4,4,0 +5,22,2.5,0,2,14,5,5,0 +4,37,16.5,3,2,12,3,5,0 +4,22,2.5,0,2,16,3,3,0 +4,32,9,2,2,16,4,6,0 +5,22,2.5,1,3,17,4,5,0 +4,27,2.5,0,2,12,3,4,0 +5,27,6,2,2,16,2,4,0 +4,22,2.5,1,3,14,3,4,0 +3,22,0.5,0,2,14,3,4,0 +5,32,13,3,3,16,4,4,0 +5,32,9,2,1,16,2,4,0 +5,22,2.5,0,3,12,2,4,0 +4,32,13,0,3,12,5,4,0 +5,27,2.5,0,2,12,3,2,0 +2,22,2.5,0,3,14,2,2,0 +3,32,9,1,3,16,4,3,0 +5,22,0.5,0,3,17,4,2,0 +5,27,6,0,3,16,4,6,0 +3,42,23,3,2,16,4,5,0 +4,32,9,2,1,12,3,3,0 +5,32,13,2,4,20,6,6,0 +5,27,2.5,1,4,20,4,4,0 +4,32,9,2,3,16,4,2,0 +4,37,16.5,3,4,14,2,4,0 +5,42,23,1,4,12,2,2,0 +4,27,2.5,0,1,16,3,3,0 +4,27,6,1,2,17,3,3,0 +5,32,13,1,1,16,4,4,0 +5,27,6,1,4,16,2,2,0 +5,32,16.5,3,3,16,4,5,0 +5,42,23,2,4,12,2,2,0 +5,37,6,1,3,12,3,2,0 +1,22,2.5,1,2,12,3,5,0 +4,22,2.5,1,3,17,4,4,0 +5,17.5,0.5,1,2,12,3,3,0 +5,42,23,5.5,3,12,3,4,0 +5,42,6,0,4,20,4,2,0 +2,17.5,2.5,1,2,12,4,4,0 +4,37,16.5,3,4,12,3,4,0 +5,32,16.5,3,2,16,3,5,0 +5,22,2.5,0,3,12,3,1,0 +5,22,6,2,4,12,3,3,0 +5,22,2.5,1,3,20,4,4,0 +4,22,6,0,1,14,4,6,0 +5,32,13,1,3,12,3,2,0 +4,32,6,3,2,17,4,6,0 +4,27,6,2,3,14,4,2,0 +3,22,6,1,3,12,2,4,0 +3,37,23,3,3,12,3,4,0 +5,22,2.5,1,1,14,3,2,0 +2,27,9,1,2,12,3,4,0 +3,22,2.5,1,2,12,3,2,0 +4,32,13,2,2,17,3,2,0 +2,22,2.5,1,3,12,3,4,0 +5,37,13,0,2,12,4,2,0 +3,37,16.5,4,4,14,4,2,0 +5,42,23,3,3,12,3,5,0 +5,22,2.5,0,4,16,4,4,0 +3,27,2.5,0,3,20,4,4,0 +4,27,2.5,2,3,12,4,5,0 +5,22,2.5,0,4,14,3,1,0 +4,22,2.5,0,3,14,2,2,0 +3,32,13,2,2,12,2,2,0 +5,27,6,2,3,12,3,5,0 +5,27,9,3,4,14,4,2,0 +4,22,6,2,2,12,3,2,0 +4,32,9,3,2,16,4,2,0 +4,42,23,4,3,14,3,5,0 +5,42,23,5.5,4,14,4,4,0 +3,22,2.5,2,1,12,3,2,0 +5,32,13,3,3,14,4,3,0 +4,32,16.5,5.5,3,12,3,4,0 +5,22,2.5,0,3,17,5,5,0 +3,22,2.5,1,3,12,3,5,0 +5,22,2.5,0,2,14,1,4,0 +5,32,9,0,2,12,3,5,0 +2,22,2.5,1,3,14,3,2,0 +5,22,2.5,0,3,16,5,1,0 +4,27,6,0,3,16,4,5,0 +5,27,0.5,0,3,16,4,1,0 +5,27,6,2,3,17,4,5,0 +4,27,2.5,1,3,16,2,3,0 +5,22,2.5,0,3,14,4,2,0 +5,32,16.5,4,3,12,5,2,0 +2,22,2.5,0,2,12,3,2,0 +5,27,0.5,0,1,12,3,2,0 +4,42,23,1,1,12,4,5,0 +3,27,9,0,3,17,4,6,0 +4,22,2.5,0,2,16,3,1,0 +3,42,23,3,3,14,2,2,0 +4,22,0.5,0,3,16,3,4,0 +5,32,9,2,1,16,5,5,0 +5,37,0.5,0,2,17,4,2,0 +4,22,2.5,0,3,16,3,5,0 +4,22,2.5,0,3,16,4,5,0 +5,42,23,4,3,12,2,4,0 +5,32,6,2,1,12,3,5,0 +4,22,2.5,0,2,12,3,4,0 +5,22,2.5,1,2,12,3,2,0 +5,27,13,1,2,14,3,5,0 +5,27,6,2,2,17,4,3,0 +4,22,2.5,0,3,16,3,2,0 +5,27,6,0,1,14,2,1,0 +4,42,23,5.5,3,14,5,4,0 +3,17.5,2.5,1,2,12,2,4,0 +4,22,2.5,0,2,14,1,1,0 +5,22,0.5,0,2,12,4,4,0 +3,27,2.5,1,1,12,2,2,0 +5,17.5,2.5,0,3,14,2,3,0 +5,37,16.5,3,3,14,3,5,0 +4,27,6,2,2,14,3,2,0 +3,42,23,3,2,14,5,4,0 +4,22,2.5,0,3,12,3,2,0 +5,22,0.5,0,2,12,2,4,0 +3,27,9,3,3,12,2,4,0 +3,22,2.5,0,2,12,3,4,0 +4,22,2.5,0,1,17,4,1,0 +3,22,2.5,2,3,12,3,2,0 +3,42,23,2,1,16,4,5,0 +4,22,2.5,2,2,14,2,2,0 +5,17.5,2.5,1,3,12,5,5,0 +5,22,0.5,0,1,16,4,2,0 +5,22,2.5,0,3,16,3,3,0 +4,27,6,1,2,16,4,4,0 +4,27,2.5,0,1,14,4,1,0 +5,22,2.5,0,3,17,4,2,0 +5,27,2.5,0,1,14,2,5,0 +5,22,2.5,0,1,16,3,2,0 +4,32,13,2,1,14,3,4,0 +5,22,0.5,0,2,14,3,5,0 +5,22,2.5,0,3,17,4,4,0 +5,22,2.5,0,3,14,2,4,0 +5,22,2.5,1,2,14,3,4,0 +5,27,2.5,0,1,12,3,2,0 +3,27,6,1,3,12,4,4,0 +4,27,6,2,3,14,3,4,0 +4,32,16.5,2,3,12,3,5,0 +4,27,6,0,1,17,4,5,0 +4,22,2.5,0,3,14,3,2,0 +5,27,6,0,2,16,3,4,0 +4,27,6,0,2,16,4,2,0 +3,32,16.5,2,4,20,4,4,0 +4,22,2.5,1,2,14,3,4,0 +5,27,6,2,3,17,4,4,0 +3,27,9,1,3,14,1,4,0 +5,27,2.5,0,3,16,4,5,0 +5,22,2.5,0,4,16,3,5,0 +5,27,2.5,1,2,12,2,2,0 +1,37,13,5.5,3,12,2,4,0 +4,27,6,2,1,12,3,5,0 +3,22,2.5,0,2,12,2,4,0 +4,22,2.5,0,4,16,3,2,0 +4,27,13,2,2,12,4,4,0 +5,22,2.5,0,2,14,4,4,0 +4,27,2.5,0,2,17,4,5,0 +2,22,2.5,0,1,12,3,4,0 +5,22,2.5,0,1,16,3,1,0 +4,22,2.5,0,2,14,3,5,0 +4,27,2.5,0,3,17,4,6,0 +5,22,0.5,0,3,14,3,5,0 +4,22,2.5,1,3,14,3,5,0 +3,22,2.5,0,1,16,4,5,0 +5,37,16.5,2,4,14,4,6,0 +5,22,0.5,0,3,14,3,4,0 +5,32,9,1,2,16,4,4,0 +5,22,2.5,0,3,16,3,3,0 +5,22,2.5,1,3,14,4,4,0 +4,27,6,1,2,14,5,3,0 +4,27,9,3,3,12,3,4,0 +2,22,2.5,0,4,16,4,4,0 +5,22,2.5,0,3,14,4,2,0 +5,27,2.5,1,1,16,4,6,0 +4,37,16.5,3,3,12,3,5,0 +5,22,2.5,0,3,14,5,5,0 +3,22,2.5,0,1,12,4,4,0 +4,32,9,3,2,20,4,6,0 +4,42,23,3,4,12,4,2,0 +1,32,2.5,1,1,20,4,4,0 +5,22,6,0,2,14,3,4,0 +4,27,6,1,3,14,3,5,0 +5,22,2.5,0,2,16,4,2,0 +4,22,2.5,0,2,14,4,4,0 +3,32,13,2,2,16,4,5,0 +5,37,23,3,3,12,2,2,0 +5,22,9,2,2,12,3,4,0 +5,27,6,0,3,14,5,2,0 +3,37,16.5,3,3,12,3,2,0 +5,27,6,0,3,17,3,1,0 +5,17.5,0.5,0,4,12,2,2,0 +5,27,2.5,0,4,17,4,2,0 +5,22,2.5,0,3,14,5,4,0 +3,22,2.5,0,3,16,4,4,0 +5,22,2.5,1,3,16,4,5,0 +4,27,2.5,0,2,16,5,4,0 +5,22,2.5,0,2,17,4,5,0 +5,22,0.5,0,3,14,3,4,0 +4,22,2.5,1,3,14,3,4,0 +4,32,6,2,3,14,4,4,0 +4,42,16.5,3,3,20,6,6,0 +3,27,2.5,1,2,17,4,3,0 +2,42,23,2,3,14,3,4,0 +5,27,9,1,2,12,2,2,0 +5,22,2.5,0,4,17,4,4,0 +4,32,16.5,4,2,12,3,2,0 +4,32,6,0,1,14,4,5,0 +5,27,6,1,1,20,6,6,0 +4,37,13,2,3,14,4,4,0 +4,27,9,2,3,14,3,5,0 +5,27,9,3,1,12,2,2,0 +4,32,9,2,2,12,5,3,0 +5,42,23,3,3,12,5,3,0 +3,37,23,3,3,14,4,6,0 +4,27,2.5,0,2,16,4,5,0 +4,22,2.5,0,3,14,5,4,0 +4,42,13,0,3,16,4,5,0 +5,27,6,0,1,12,3,4,0 +5,22,2.5,0,4,16,3,1,0 +5,37,16.5,1,3,12,3,5,0 +3,32,13,3,2,9,2,5,0 +3,27,6,2,3,16,4,5,0 +5,27,2.5,1,4,16,4,5,0 +4,37,16.5,3,2,14,4,5,0 +5,22,2.5,0,4,14,3,2,0 +4,37,16.5,2,3,12,3,4,0 +2,32,6,0,3,14,2,2,0 +4,27,9,0,3,12,3,4,0 +3,32,9,1,3,17,4,5,0 +5,22,6,2,3,12,3,2,0 +3,27,13,3,3,14,4,4,0 +5,22,2.5,0,1,14,3,4,0 +5,37,16.5,3,3,12,3,5,0 +5,27,2.5,1,3,16,5,3,0 +5,32,13,3,3,14,4,4,0 +5,37,23,3,3,14,3,5,0 +4,22,2.5,0,3,14,3,2,0 +3,22,2.5,0,3,14,3,2,0 +4,37,23,3,1,9,3,4,0 +4,37,23,2,2,14,5,4,0 +3,37,23,2,4,14,3,3,0 +5,22,2.5,0,2,14,3,6,0 +5,22,2.5,0,3,14,3,2,0 +5,32,9,2,1,17,4,5,0 +5,32,13,2,3,16,4,2,0 +3,42,23,3,3,12,3,5,0 +2,32,6,2,2,16,4,2,0 +5,17.5,2.5,0,3,12,4,1,0 +5,42,16.5,2,2,14,4,4,0 +5,27,6,2,3,12,3,2,0 +5,37,16.5,3,3,12,3,2,0 +5,32,9,1,4,16,4,4,0 +4,42,23,4,3,14,3,2,0 +4,42,23,5.5,4,20,4,6,0 +5,22,2.5,0,2,14,3,5,0 +3,27,9,1,3,12,5,4,0 +5,22,0.5,0,2,16,4,5,0 +5,37,13,1,3,14,3,5,0 +5,22,2.5,0,3,17,4,4,0 +2,32,9,2,3,12,3,4,0 +4,22,6,0,4,14,3,5,0 +4,22,2.5,0,3,14,4,2,0 +5,27,6,1,3,16,3,4,0 +4,22,2.5,0,1,17,4,5,0 +4,32,13,2,4,17,5,5,0 +5,27,6,0,2,14,5,4,0 +5,37,23,3,3,14,3,5,0 +2,37,16.5,2,2,12,3,5,0 +4,27,6,2,3,14,3,3,0 +5,27,2.5,0,2,16,4,4,0 +5,42,23,2,4,12,3,2,0 +5,27,2.5,0,2,16,4,2,0 +5,32,13,1,3,16,4,5,0 +5,37,13,2,4,20,4,5,0 +3,27,6,0,3,14,3,5,0 +3,22,6,2,3,12,2,2,0 +5,22,2.5,0,2,12,2,3,0 +5,22,2.5,1,2,14,2,2,0 +2,17.5,2.5,2,2,12,3,4,0 +5,27,2.5,0,3,14,3,3,0 +5,22,0.5,0,2,16,4,5,0 +5,27,2.5,1,2,12,2,4,0 +2,22,2.5,2,3,12,2,4,0 +4,22,2.5,0,3,14,4,5,0 +5,42,16.5,2,3,14,3,5,0 +5,32,6,0,1,16,6,1,0 +5,27,2.5,0,3,14,5,2,0 +5,37,16.5,2,3,14,3,2,0 +4,27,6,1,4,14,4,4,0 +5,27,6,1,2,16,3,5,0 +4,22,2.5,0,3,16,5,6,0 +5,42,23,1,3,14,5,5,0 +5,22,2.5,0,3,14,3,4,0 +4,42,23,3,4,12,5,2,0 +5,42,23,3,4,12,3,3,0 +5,32,16.5,3,3,12,2,2,0 +4,22,6,1,1,12,3,2,0 +5,42,23,4,3,20,6,6,0 +5,17.5,0.5,0,3,14,3,5,0 +5,27,2.5,0,1,14,2,6,0 +5,22,2.5,0,3,14,3,4,0 +5,32,6,1,3,20,4,5,0 +5,22,0.5,0,3,17,6,2,0 +2,37,16.5,2,1,12,3,5,0 +5,27,9,2,3,12,3,2,0 +4,27,2.5,0,2,16,4,2,0 +4,27,13,1,3,12,3,3,0 +3,42,23,3,2,14,3,3,0 +5,27,6,1,1,14,4,5,0 +5,27,6,0,3,14,3,5,0 +2,22,6,1,1,12,3,2,0 +5,37,16.5,4,3,14,2,3,0 +4,27,9,2,3,20,4,5,0 +5,17.5,0.5,0,4,12,2,4,0 +5,42,23,3,3,17,4,5,0 +5,37,16.5,2,2,14,3,5,0 +5,22,2.5,0,1,14,4,4,0 +4,22,2.5,0,3,14,4,5,0 +3,22,2.5,0,3,14,3,6,0 +3,42,23,3,2,12,3,4,0 +4,27,6,0,2,16,5,6,0 +5,42,23,3,3,16,2,3,0 +5,27,9,2,3,17,4,4,0 +5,22,2.5,0,2,16,3,4,0 +2,27,6,1,3,16,4,2,0 +5,27,6,0,2,17,4,2,0 +3,22,2.5,0,4,17,4,2,0 +4,37,16.5,3,3,14,4,5,0 +3,22,2.5,1,3,16,4,3,0 +4,32,9,1,3,20,4,4,0 +5,27,6,2,1,12,3,5,0 +5,27,6,0,3,16,5,4,0 +5,22,6,1,4,14,3,3,0 +4,32,0.5,0,3,14,5,5,0 +5,32,2.5,1,2,14,3,4,0 +4,22,0.5,0,4,14,3,2,0 +4,37,6,0,4,12,3,2,0 +2,22,6,1,2,14,3,4,0 +5,37,13,1,2,12,5,5,0 +4,32,9,0,1,12,3,4,0 +5,22,0.5,0,2,14,3,2,0 +5,27,2.5,0,1,16,5,5,0 +5,32,2.5,0,2,16,5,5,0 +4,27,6,1,4,14,4,4,0 +5,27,2.5,0,3,12,3,4,0 +4,37,13,2,3,14,3,5,0 +4,22,2.5,0,3,17,5,4,0 +5,22,2.5,0,2,12,3,2,0 +5,22,2.5,0,2,14,3,5,0 +4,32,13,2,3,14,3,2,0 +4,22,2.5,0,2,16,4,6,0 +4,22,2.5,0,2,12,2,4,0 +3,22,0.5,0,2,14,3,5,0 +5,37,16.5,4,4,12,3,5,0 +4,22,6,1,3,12,3,4,0 +5,37,16.5,1,3,16,4,5,0 +4,27,6,1,2,14,3,4,0 +5,32,16.5,2,2,12,3,2,0 +5,42,23,4,4,20,4,6,0 +5,27,2.5,0,1,20,5,4,0 +5,22,2.5,2,3,16,3,1,0 +4,42,16.5,2,4,20,4,6,0 +4,27,9,0,2,12,5,5,0 +4,27,2.5,1,2,12,2,4,0 +4,27,2.5,0,3,17,5,5,0 +5,27,2.5,0,2,16,3,3,0 +4,37,13,2,2,16,4,5,0 +5,32,13,2,4,14,3,4,0 +4,37,16.5,4,3,16,4,3,0 +4,27,6,1,3,20,4,6,0 +3,27,13,3,3,12,3,4,0 +4,22,2.5,1,3,16,4,5,0 +5,22,2.5,0,3,16,4,6,0 +5,37,16.5,1,3,16,3,4,0 +3,42,23,3,2,16,4,2,0 +3,22,2.5,0,2,12,3,2,0 +2,27,2.5,1,3,12,2,2,0 +5,27,6,3,3,16,3,5,0 +5,27,0.5,0,2,16,5,6,0 +4,32,2.5,0,3,14,3,6,0 +4,27,6,0,3,14,4,5,0 +4,37,13,1,3,16,4,5,0 +4,42,23,3,3,14,4,6,0 +4,27,9,0,2,14,3,5,0 +5,37,2.5,0,2,16,4,3,0 +5,27,6,1,2,16,5,6,0 +5,32,2.5,1,3,17,3,5,0 +4,42,16.5,2,2,12,3,5,0 +4,22,2.5,0,3,16,3,4,0 +5,32,13,1,3,12,3,5,0 +5,27,2.5,0,2,20,4,5,0 +5,22,2.5,0,2,14,3,4,0 +5,42,23,2,3,16,4,4,0 +4,42,23,4,3,20,4,4,0 +5,27,6,1,1,16,1,6,0 +5,27,0.5,0,3,14,3,4,0 +5,27,9,3,2,12,2,4,0 +4,42,23,4,3,14,4,4,0 +5,27,2.5,0,2,16,3,4,0 +5,27,9,3,3,12,3,5,0 +4,22,0.5,0,2,16,5,4,0 +4,27,2.5,0,2,16,3,5,0 +5,22,2.5,0,3,14,3,6,0 +5,22,2.5,0,3,14,4,4,0 +5,22,2.5,0,1,16,3,5,0 +4,42,23,3,3,12,3,4,0 +5,22,2.5,0,2,14,3,5,0 +4,22,2.5,0,2,17,3,1,0 +5,42,23,3,2,12,3,5,0 +5,27,9,3,3,14,2,3,0 +3,32,13,1,2,14,3,3,0 +5,32,9,2,4,20,5,5,0 +3,27,2.5,0,3,14,5,5,0 +4,27,6,1,3,16,4,4,0 +4,32,6,2,2,16,4,5,0 +5,42,23,3,2,12,4,3,0 +5,32,13,2,3,14,3,5,0 +4,22,0.5,0,2,14,3,2,0 +3,22,2.5,1,2,12,3,2,0 +2,42,23,2,2,20,4,2,0 +4,22,2.5,1,4,12,3,4,0 +4,42,23,4,4,16,4,5,0 +3,37,16.5,4,1,12,3,5,0 +4,22,2.5,0,3,14,5,1,0 +1,17.5,0.5,0,2,9,2,2,0 +4,27,2.5,0,2,20,6,5,0 +4,27,2.5,0,3,14,3,4,0 +3,27,6,2,3,12,3,5,0 +5,32,13,5.5,3,14,4,3,0 +5,42,23,3,2,12,5,5,0 +4,32,6,1,3,14,4,4,0 +4,37,16.5,1,2,12,3,3,0 +4,22,2.5,0,2,14,3,4,0 +4,37,16.5,2,3,12,3,5,0 +5,22,2.5,0,3,12,2,3,0 +4,22,0.5,0,3,12,3,5,0 +4,22,2.5,0,3,12,3,4,0 +5,42,23,4,3,12,3,5,0 +2,22,2.5,1,3,14,3,4,0 +4,32,16.5,2,2,12,3,4,0 +1,32,13,2,3,17,4,5,0 +5,27,2.5,0,2,14,4,6,0 +4,22,6,2,3,12,5,3,0 +4,17.5,2.5,1,3,9,2,2,0 +4,22,2.5,0,2,17,4,2,0 +5,37,16.5,3,3,17,4,5,0 +4,27,6,2,3,14,3,4,0 +4,42,23,3,3,17,4,6,0 +3,22,2.5,0,2,16,4,4,0 +2,37,16.5,3,3,12,3,4,0 +4,27,2.5,0,2,16,5,5,0 +5,22,2.5,0,3,16,4,2,0 +5,27,6,2,3,16,3,4,0 +5,37,13,0,3,12,3,4,0 +5,22,2.5,0,2,14,2,2,0 +4,22,2.5,0,2,16,4,5,0 +3,22,2.5,0,2,16,4,5,0 +4,22,2.5,0,2,12,3,5,0 +3,27,6,1,3,14,4,4,0 +4,22,2.5,0,2,12,3,4,0 +3,22,2.5,0,3,17,4,6,0 +5,37,16.5,2,3,17,3,5,0 +5,27,2.5,0,3,16,4,5,0 +4,37,13,2,4,16,5,5,0 +5,32,13,3,3,17,4,3,0 +4,22,2.5,0,2,12,4,5,0 +5,22,0.5,0,3,14,3,4,0 +5,22,2.5,0,4,16,3,5,0 +5,17.5,2.5,0,3,16,4,2,0 +5,22,6,1,4,12,2,4,0 +5,27,6,2,2,16,4,2,0 +4,37,16.5,2,4,14,4,6,0 +5,22,6,1,3,12,2,5,0 +4,17.5,0.5,0,3,12,3,4,0 +4,22,2.5,0,4,14,3,4,0 +2,22,2.5,0,3,12,3,5,0 +4,27,6,1,4,20,4,5,0 +5,22,0.5,0,3,16,3,1,0 +5,22,2.5,0,3,12,3,3,0 +4,42,23,3,2,12,3,3,0 +4,22,2.5,1,2,14,3,2,0 +5,27,6,0,2,17,4,5,0 +5,22,2.5,0,3,17,5,5,0 +4,22,2.5,0,3,12,3,3,0 +5,27,6,0,2,14,3,5,0 +5,27,2.5,1,3,16,4,2,0 +5,42,23,5.5,4,14,4,2,0 +5,32,13,1,3,14,3,5,0 +5,22,2.5,0,3,12,3,2,0 +3,22,2.5,0,4,12,5,5,0 +5,22,2.5,1,2,16,4,4,0 +5,32,16.5,3,4,17,4,6,0 +5,42,23,4,3,20,4,6,0 +5,22,2.5,0,4,12,3,5,0 +4,42,23,3,4,14,5,2,0 +5,27,6,0,2,17,4,6,0 +4,27,2.5,1,3,20,4,4,0 +5,32,13,3,4,14,4,3,0 +4,22,2.5,1,4,14,4,4,0 +4,32,13,2,3,14,2,5,0 +4,17.5,2.5,0,3,12,3,4,0 +3,22,2.5,0,3,16,4,1,0 +5,27,6,1,3,14,6,4,0 +5,27,9,2,4,14,3,3,0 +4,22,2.5,0,2,16,5,5,0 +4,27,9,2,2,14,3,4,0 +5,32,9,2,2,20,4,3,0 +5,42,23,5.5,4,12,4,2,0 +4,27,6,1,3,16,4,4,0 +4,27,6,1,3,17,4,6,0 +4,27,6,0,3,16,5,5,0 +5,27,2.5,0,4,17,4,1,0 +4,42,13,0,3,20,4,5,0 +5,22,2.5,1,2,12,3,4,0 +4,17.5,2.5,0,3,14,3,3,0 +4,22,6,0,2,14,3,4,0 +4,22,2.5,0,3,16,5,5,0 +5,27,6,2,2,14,3,3,0 +3,27,6,0,2,16,3,5,0 +5,22,0.5,0,3,16,5,5,0 +5,37,16.5,4,3,12,2,2,0 +4,22,2.5,2,3,12,3,2,0 +4,22,2.5,0,3,14,3,2,0 +5,27,2.5,0,1,16,4,5,0 +5,27,6,0,2,16,4,3,0 +4,27,2.5,0,2,20,6,4,0 +4,22,6,2,3,14,3,5,0 +4,22,2.5,0,1,12,3,5,0 +4,17.5,2.5,0,2,14,4,4,0 +5,22,2.5,0,3,14,3,4,0 +5,22,0.5,0,2,14,3,2,0 +3,32,2.5,0,3,17,4,3,0 +5,22,2.5,0,4,17,4,5,0 +4,22,6,0,4,14,3,4,0 +3,22,0.5,0,3,14,3,4,0 +4,17.5,0.5,0,3,12,2,4,0 +3,32,16.5,3,3,12,4,5,0 +5,22,2.5,1,3,16,4,5,0 +5,22,2.5,0,4,12,3,4,0 +5,22,6,2,3,12,3,4,0 +5,22,2.5,0,2,14,5,1,0 +5,22,2.5,0,3,12,2,2,0 +5,27,6,0,4,12,3,2,0 +5,42,23,2,3,12,3,6,0 +5,22,2.5,0,2,14,3,4,0 +3,37,16.5,1,3,14,2,5,0 +4,32,13,2,3,12,2,2,0 +5,22,2.5,0,3,14,2,5,0 +4,27,9,1,1,12,3,2,0 +5,42,23,2,3,20,4,6,0 +5,22,2.5,1,3,14,3,4,0 +5,42,23,4,3,12,4,5,0 +3,27,9,2,2,14,3,4,0 +2,32,13,4,3,14,3,3,0 +4,22,6,0,2,14,3,5,0 +5,22,2.5,0,1,17,2,5,0 +4,22,2.5,0,3,14,5,2,0 +4,22,2.5,1,2,16,4,6,0 +5,27,6,1,3,14,3,4,0 +4,27,6,1,1,16,4,4,0 +3,22,2.5,1,2,14,3,4,0 +5,32,6,0,3,20,6,6,0 +5,22,2.5,0,2,14,3,2,0 +5,17.5,0.5,0,3,12,2,5,0 +5,27,2.5,0,3,14,3,4,0 +4,42,23,2,3,20,4,2,0 +5,27,2.5,0,2,16,4,6,0 +5,22,6,0,3,14,3,5,0 +5,22,0.5,0,3,16,3,4,0 +4,22,0.5,0,3,12,2,2,0 +4,22,2.5,0,4,12,4,4,0 +5,27,2.5,1,3,14,3,4,0 +5,22,6,0,3,12,3,4,0 +4,22,2.5,0,4,14,3,4,0 +5,22,2.5,0,1,16,4,4,0 +5,32,13,1,3,12,3,4,0 +4,27,9,2,2,14,3,4,0 +4,27,9,1,2,12,3,4,0 +5,22,2.5,0,2,14,6,5,0 +4,32,13,1,3,14,3,5,0 +3,37,16.5,3,3,14,4,4,0 +3,22,2.5,1,3,16,6,4,0 +5,27,16.5,3,3,16,5,5,0 +5,42,23,2,3,12,5,5,0 +5,27,0.5,0,4,12,3,6,0 +5,32,16.5,2,1,16,4,5,0 +5,37,16.5,1,4,12,3,2,0 +5,27,9,1,3,12,3,2,0 +5,27,13,3,3,14,3,3,0 +5,22,2.5,0,3,14,3,4,0 +4,22,2.5,0,2,12,3,2,0 +5,32,16.5,3,4,12,3,5,0 +5,22,2.5,2,4,12,2,2,0 +5,27,9,2,4,14,3,4,0 +5,27,2.5,0,3,16,4,4,0 +4,32,13,2,4,14,3,5,0 +5,17.5,0.5,0,3,12,2,5,0 +5,42,23,3,4,14,3,6,0 +5,22,2.5,1,2,14,3,2,0 +5,27,9,2,3,17,4,6,0 +4,17.5,2.5,0,1,14,3,1,0 +2,22,6,0,2,14,5,2,0 +5,27,2.5,0,3,16,3,2,0 +4,27,6,1,3,16,4,5,0 +4,37,9,0,3,20,4,4,0 +4,22,2.5,0,1,16,3,5,0 +4,37,13,2,2,16,4,4,0 +5,37,16.5,3,4,17,4,4,0 +4,27,6,0,1,20,6,6,0 +4,27,6,0,3,16,4,5,0 +5,37,16.5,3,1,17,4,6,0 +5,27,6,2,3,14,3,4,0 +5,37,16.5,3,3,12,3,4,0 +5,42,23,1,4,12,3,4,0 +5,27,9,2,3,12,5,5,0 +5,27,13,2,2,14,2,4,0 +5,42,23,2,4,14,5,5,0 +5,42,23,5.5,4,14,5,4,0 +4,22,6,0,1,17,4,1,0 +4,27,2.5,0,4,16,3,1,0 +4,17.5,2.5,0,1,12,5,2,0 +3,27,9,0,2,16,4,4,0 +5,22,2.5,0,2,12,3,5,0 +4,27,9,2,3,12,3,2,0 +4,22,6,0,2,16,5,5,0 +4,22,0.5,0,1,14,1,1,0 +5,22,2.5,1,2,12,3,1,0 +5,27,9,2,3,12,5,5,0 +5,27,6,0,2,14,3,5,0 +4,22,2.5,0,3,14,2,2,0 +4,22,6,1,2,12,3,4,0 +5,22,2.5,1,3,14,3,4,0 +3,27,6,1,1,12,3,5,0 +5,37,16.5,4,3,20,4,2,0 +4,22,2.5,0,2,14,3,5,0 +4,32,13,2,3,14,5,5,0 +5,22,2.5,0,1,14,3,4,0 +5,27,2.5,0,2,14,3,4,0 +4,27,9,1,2,12,2,2,0 +5,22,2.5,0,2,14,3,4,0 +3,37,13,1,3,17,5,3,0 +5,42,23,3,4,12,2,2,0 +5,27,6,0,4,16,4,5,0 +2,27,6,0,2,14,3,4,0 +5,32,13,2,4,14,4,5,0 +5,22,2.5,0,1,17,4,4,0 +5,27,9,2,3,12,3,5,0 +5,27,6,0,2,16,6,6,0 +5,27,6,1,3,16,4,2,0 +4,22,9,1,1,12,2,2,0 +4,32,13,3,3,20,4,5,0 +4,22,2.5,0,1,14,3,2,0 +4,27,6,2,3,14,3,5,0 +5,42,23,4,2,12,3,6,0 +3,32,13,3,4,16,4,2,0 +3,22,0.5,0,3,12,3,1,0 +2,22,2.5,0,2,14,3,4,0 +3,37,23,4,2,14,4,2,0 +5,42,23,5.5,4,14,5,2,0 +5,37,23,3,3,12,4,5,0 +5,32,9,2,3,16,4,6,0 +5,32,23,2,3,12,2,2,0 +5,37,13,3,4,16,4,2,0 +5,32,16.5,5.5,2,12,3,2,0 +5,27,9,3,1,12,2,5,0 +4,17.5,2.5,0,2,14,3,3,0 +5,22,0.5,0,1,16,3,1,0 +5,22,2.5,0,3,14,3,2,0 +5,22,2.5,0,3,16,5,4,0 +5,32,9,0,4,20,6,6,0 +3,27,6,0,4,16,4,4,0 +5,22,2.5,0,1,14,3,4,0 +5,22,0.5,0,2,12,3,1,0 +4,27,13,2,4,14,4,4,0 +4,42,23,4,2,14,4,5,0 +5,22,2.5,0,3,16,5,3,0 +5,42,23,3,3,16,4,2,0 +5,22,2.5,0,1,14,6,6,0 +4,17.5,2.5,0,3,14,3,3,0 +5,27,2.5,2,1,14,2,3,0 +4,27,9,1,3,12,3,3,0 +5,22,0.5,0,3,16,4,4,0 +5,32,16.5,4,3,12,3,4,0 +5,32,13,2,4,12,3,3,0 +5,27,2.5,1,3,14,5,5,0 +5,42,23,1,3,12,3,4,0 +4,42,23,4,3,14,5,5,0 +4,22,0.5,0,2,14,4,4,0 +3,27,6,2,3,14,3,6,0 +5,22,2.5,0,1,14,3,5,0 +4,37,23,5.5,2,12,3,2,0 +5,37,16.5,3,2,14,3,4,0 +5,27,9,3,2,14,3,2,0 +5,22,2.5,0,3,14,3,2,0 +3,27,9,2,3,16,4,5,0 +3,22,2.5,0,2,12,3,5,0 +5,37,16.5,4,4,14,3,4,0 +4,22,9,1,3,12,3,4,0 +2,27,6,2,2,12,5,5,0 +5,22,2.5,0,3,14,5,4,0 +5,32,13,2,4,14,5,4,0 +4,22,2.5,0,2,16,3,5,0 +5,27,9,0,2,14,3,5,0 +5,32,9,0,4,20,4,6,0 +5,32,13,2,3,16,4,5,0 +5,17.5,2.5,0,4,14,3,4,0 +5,42,23,3,3,12,3,2,0 +5,22,0.5,0,2,14,4,2,0 +5,37,13,0,2,12,3,4,0 +4,22,2.5,0,3,14,3,3,0 +5,37,16.5,4,3,14,4,2,0 +4,42,23,4,3,16,3,5,0 +5,27,6,1,2,16,4,4,0 +5,32,13,3,2,16,4,4,0 +5,42,23,3,4,14,3,4,0 +4,22,2.5,0,3,14,3,4,0 +5,42,13,0,4,14,3,5,0 +4,27,2.5,0,1,14,3,2,0 +5,22,2.5,0,3,12,2,2,0 +4,22,6,0,2,17,4,1,0 +5,22,2.5,0,2,14,5,5,0 +5,32,16.5,3,3,12,3,2,0 +4,27,2.5,0,2,16,4,6,0 +4,22,2.5,0,2,14,4,3,0 +4,32,16.5,2,3,12,3,2,0 +2,22,2.5,0,2,14,3,4,0 +2,42,23,3,3,14,5,5,0 +4,42,23,4,3,12,5,2,0 +3,32,16.5,3,3,12,3,3,0 +5,37,16.5,2,4,12,5,5,0 +5,32,13,2,3,14,3,5,0 +4,22,2.5,0,2,16,3,2,0 +4,27,2.5,0,3,12,3,3,0 +3,42,23,4,4,20,6,6,0 +3,32,16.5,2,2,14,5,2,0 +5,22,0.5,1,2,14,3,5,0 +4,22,6,1,2,12,4,1,0 +5,27,6,0,3,17,5,6,0 +2,37,13,4,4,20,4,6,0 +4,27,2.5,0,3,20,4,3,0 +5,32,2.5,1,1,20,3,1,0 +5,37,16.5,3,3,12,5,5,0 +5,27,9,1,2,12,3,4,0 +4,32,13,2,3,12,3,2,0 +4,37,16.5,4,4,14,4,5,0 +5,17.5,0.5,0,2,12,2,2,0 +4,32,13,1,3,14,2,5,0 +5,37,23,5.5,4,17,5,6,0 +5,22,2.5,0,2,14,2,4,0 +4,22,2.5,0,2,14,3,4,0 +4,42,23,4,2,12,4,4,0 +5,42,23,4,3,14,3,4,0 +4,17.5,0.5,0,1,14,3,4,0 +5,22,0.5,0,4,20,4,1,0 +4,27,6,1,3,16,4,3,0 +4,42,23,2,2,14,3,5,0 +4,27,9,2,2,14,4,5,0 +4,27,6,1,1,12,4,1,0 +5,27,2.5,0,3,12,3,4,0 +4,22,2.5,0,2,14,2,2,0 +5,37,16.5,3,4,14,4,4,0 +5,27,6,0,2,14,2,4,0 +5,37,16.5,2,3,12,3,4,0 +2,32,9,3,1,16,4,4,0 +5,27,6,1,2,16,3,4,0 +4,37,23,3,3,20,4,4,0 +5,37,23,3,4,12,3,2,0 +4,27,6,2,3,14,3,5,0 +5,32,13,2,4,16,4,4,0 +4,27,6,1,3,17,4,4,0 +3,37,13,1,2,14,4,6,0 +5,37,16.5,2,4,14,3,6,0 +4,27,6,0,3,16,3,4,0 +4,42,13,0,3,14,5,5,0 +4,27,9,2,3,14,3,2,0 +4,22,6,1,3,12,3,4,0 +5,22,2.5,0,3,12,3,4,0 +5,22,2.5,0,2,14,2,4,0 +4,27,6,2,3,16,4,6,0 +4,27,2.5,0,1,12,3,6,0 +5,27,13,2,3,14,3,4,0 +4,27,6,1,1,16,2,4,0 +5,32,16.5,2,3,12,3,5,0 +5,27,2.5,0,2,12,3,5,0 +4,27,9,1,3,17,4,4,0 +5,37,16.5,3,2,12,4,4,0 +5,27,2.5,0,4,20,4,2,0 +5,27,2.5,0,3,16,4,4,0 +5,27,6,1,3,16,4,4,0 +5,22,2.5,0,2,14,3,4,0 +5,42,23,2,3,14,3,2,0 +5,27,9,2,3,20,4,5,0 +3,22,2.5,1,1,12,3,2,0 +5,22,2.5,0,2,14,3,4,0 +5,42,23,2,3,14,3,5,0 +5,32,16.5,3,1,14,4,5,0 +4,22,2.5,0,3,14,3,1,0 +5,32,9,2,4,16,4,5,0 +5,22,2.5,0,3,16,4,2,0 +4,27,9,2,3,16,4,4,0 +4,37,16.5,3,3,12,3,6,0 +3,27,9,1,4,14,6,4,0 +5,32,16.5,3,4,12,4,4,0 +4,32,16.5,3,2,12,3,4,0 +5,32,16.5,2,4,12,4,3,0 +3,22,2.5,0,2,16,2,5,0 +5,22,2.5,0,4,14,3,3,0 +4,27,16.5,1,3,14,4,4,0 +5,27,6,0,3,16,3,6,0 +5,27,0.5,0,2,17,4,3,0 +5,22,2.5,1,2,14,4,4,0 +4,27,6,2,2,17,4,6,0 +3,22,2.5,1,2,14,3,5,0 +5,22,2.5,0,2,12,2,4,0 +5,22,2.5,0,3,17,4,4,0 +5,42,23,4,4,16,4,4,0 +5,22,0.5,0,2,17,3,4,0 +4,27,9,2,3,12,3,4,0 +5,22,2.5,0,4,16,4,5,0 +3,27,6,2,4,17,2,4,0 +5,22,2.5,0,3,12,3,4,0 +5,27,6,0,3,14,3,3,0 +3,42,23,2,3,14,3,2,0 +5,27,9,0,1,14,3,5,0 +3,27,2.5,0,2,20,6,4,0 +4,27,16.5,2,3,12,5,5,0 +4,32,9,1,3,16,4,5,0 +4,42,23,5.5,4,14,5,5,0 +4,22,2.5,0,3,12,2,1,0 +5,27,2.5,0,3,20,4,6,0 +5,22,2.5,0,2,14,4,4,0 +3,22,2.5,2,3,12,3,2,0 +4,42,23,3,2,14,3,4,0 +4,22,2.5,0,2,16,3,1,0 +5,22,2.5,0,2,14,3,3,0 +5,27,6,0,1,17,4,5,0 +5,32,13,2,3,14,2,2,0 +5,17.5,2.5,0,4,12,3,1,0 +5,42,23,5.5,4,14,4,6,0 +5,37,13,2,3,16,4,4,0 +4,32,16.5,3,3,14,2,6,0 +2,17.5,2.5,1,3,14,3,2,0 +4,22,2.5,0,3,16,4,4,0 +5,22,2.5,0,2,14,5,5,0 +3,32,6,1,2,14,5,4,0 +4,27,2.5,0,2,16,4,1,0 +3,42,13,0,3,14,4,5,0 +5,27,9,2,4,14,5,4,0 +3,22,2.5,0,2,14,3,2,0 +5,32,6,1,4,16,4,5,0 +5,32,13,2,3,16,4,4,0 +3,22,6,1,3,12,3,4,0 +5,27,2.5,0,2,17,6,6,0 +5,22,6,1,2,14,4,4,0 +5,22,6,0,3,12,5,4,0 +4,27,6,0,4,17,4,5,0 +4,27,2.5,0,2,14,3,6,0 +5,22,2.5,2,3,14,4,4,0 +4,22,2.5,0,2,12,3,3,0 +5,27,2.5,0,4,16,5,2,0 +4,22,2.5,0,3,14,3,1,0 +4,37,16.5,5.5,3,14,2,4,0 +5,22,2.5,1,2,12,5,2,0 +4,22,2.5,0,2,14,5,5,0 +5,42,23,5.5,4,17,4,6,0 +5,22,2.5,0,3,14,3,3,0 +4,32,13,1,3,20,6,5,0 +5,22,2.5,0,2,12,3,4,0 +5,27,9,2,2,14,3,4,0 +5,32,16.5,2,4,14,5,4,0 +5,27,9,3,3,14,3,2,0 +5,32,13,2,2,14,3,6,0 +4,37,16.5,3,3,14,5,4,0 +4,27,6,1,3,14,3,4,0 +4,27,6,2,3,16,4,2,0 +4,22,2.5,0,3,14,3,4,0 +4,17.5,0.5,0,3,12,3,4,0 +5,17.5,0.5,0,3,12,3,1,0 +5,22,2.5,0,1,14,3,2,0 +5,32,16.5,2,2,12,3,5,0 +5,42,23,3,3,17,4,5,0 +5,22,2.5,1,4,12,5,4,0 +4,27,6,1,3,14,3,4,0 +3,22,2.5,0,2,12,3,3,0 +5,22,2.5,0,3,16,2,5,0 +5,17.5,2.5,0,3,12,2,1,0 +4,17.5,2.5,0,3,12,2,4,0 +5,27,2.5,0,4,12,3,6,0 +5,22,2.5,0,3,16,4,5,0 +4,42,23,3,1,14,5,4,0 +5,42,23,2,3,14,5,5,0 +4,22,6,2,2,12,3,4,0 +4,32,13,2,3,16,5,2,0 +4,37,16.5,3,3,14,4,4,0 +5,32,16.5,5.5,4,12,3,4,0 +4,32,9,1,2,12,2,3,0 +5,22,2.5,0,4,14,1,2,0 +5,17.5,2.5,0,3,14,4,1,0 +5,22,2.5,0,3,12,3,4,0 +5,27,2.5,0,2,16,5,5,0 +5,27,6,1,4,14,3,3,0 +5,32,13,2,4,14,3,4,0 +3,37,16.5,5.5,3,12,2,4,0 +3,32,9,3,3,16,4,5,0 +5,27,2.5,0,2,16,4,6,0 +5,32,16.5,3,2,12,3,2,0 +5,27,0.5,0,4,17,4,4,0 +4,22,6,1,2,16,4,4,0 +4,22,0.5,0,3,14,3,2,0 +5,22,6,3,1,12,4,4,0 +4,22,0.5,0,3,14,2,4,0 +5,22,2.5,1,3,14,3,5,0 +3,37,23,5.5,3,16,4,6,0 +2,22,2.5,0,3,14,3,2,0 +5,27,9,1,1,14,4,4,0 +5,22,2.5,0,2,12,2,3,0 +3,37,16.5,3,1,16,3,6,0 +3,27,2.5,1,2,14,2,4,0 +4,42,23,2,3,14,4,5,0 +3,27,2.5,2,2,14,4,4,0 +4,22,2.5,0,1,14,5,4,0 +5,22,0.5,0,3,16,4,2,0 +4,27,6,2,1,16,4,4,0 +4,22,6,1,2,12,2,5,0 +5,32,13,3,3,16,4,4,0 +4,32,16.5,1,3,12,4,2,0 +5,27,2.5,0,4,12,3,5,0 +5,17.5,2.5,1,1,12,3,4,0 +5,22,2.5,1,3,14,4,1,0 +5,32,9,0,4,20,4,5,0 +5,22,0.5,0,1,16,4,5,0 +5,32,9,0,1,16,3,5,0 +4,42,23,3,3,12,3,5,0 +4,22,2.5,0,3,14,2,2,0 +5,32,13,1,3,16,3,5,0 +5,22,6,1,1,12,3,4,0 +2,42,23,4,2,14,4,5,0 +5,22,2.5,0,4,12,4,4,0 +5,32,13,2,2,14,3,4,0 +5,22,0.5,0,3,14,3,4,0 +5,22,2.5,0,1,17,4,1,0 +5,22,2.5,0,1,14,4,1,0 +4,42,23,5.5,3,16,5,5,0 +5,22,2.5,0,3,16,3,5,0 +4,37,13,1,4,20,6,4,0 +5,27,2.5,0,2,20,4,4,0 +3,22,0.5,1,4,12,5,4,0 +4,27,2.5,1,3,14,5,5,0 +5,22,2.5,0,1,12,2,4,0 +5,22,6,2,2,12,2,4,0 +4,27,6,2,1,14,5,5,0 +5,22,0.5,0,2,17,3,1,0 +3,27,9,1,2,14,3,4,0 +5,42,23,4,3,14,5,5,0 +5,22,2.5,0,1,14,3,4,0 +4,22,2.5,1,2,12,3,4,0 +5,32,2.5,0,3,16,4,5,0 +4,27,2.5,0,1,20,4,4,0 +4,27,2.5,0,3,17,4,1,0 +4,22,2.5,0,2,14,3,2,0 +4,32,13,2,2,17,4,6,0 +5,17.5,0.5,0,4,12,4,5,0 +3,37,16.5,3,3,14,3,4,0 +4,27,6,1,2,14,3,1,0 +4,22,2.5,0,3,14,3,4,0 +4,22,2.5,0,1,14,3,3,0 +3,22,2.5,1,3,14,3,2,0 +4,32,13,2,3,12,5,4,0 +5,42,23,2,3,12,2,3,0 +5,32,9,0,3,16,5,4,0 +5,32,6,2,2,17,6,6,0 +5,22,6,1,2,14,3,4,0 +3,37,13,1,3,20,4,4,0 +3,42,23,5.5,2,14,3,4,0 +4,22,2.5,0,2,14,3,6,0 +4,22,0.5,0,3,14,1,1,0 +4,22,0.5,0,3,14,3,4,0 +5,27,2.5,0,3,14,4,1,0 +5,27,0.5,0,1,14,2,6,0 +4,37,23,5.5,4,14,4,4,0 +4,22,2.5,0,1,14,4,2,0 +4,27,2.5,3,1,16,3,4,0 +4,22,0.5,0,2,14,2,2,0 +3,37,9,2,3,16,4,5,0 +5,37,16.5,3,4,14,4,2,0 +3,27,6,0,1,17,2,6,0 +3,27,9,3,2,12,2,2,0 +4,22,2.5,0,2,14,3,4,0 +5,42,23,3,4,16,4,5,0 +5,27,2.5,1,3,16,5,5,0 +5,22,0.5,0,3,17,4,4,0 +5,27,2.5,0,3,16,3,1,0 +4,22,2.5,0,1,14,5,2,0 +4,27,9,2,3,14,5,5,0 +5,37,16.5,2,3,12,2,4,0 +4,22,6,2,2,12,3,5,0 +4,32,16.5,4,2,16,5,6,0 +5,22,2.5,0,2,14,3,6,0 +4,32,2.5,0,2,12,3,4,0 +5,37,23,5.5,4,12,2,5,0 +5,22,0.5,0,2,12,3,4,0 +5,27,6,1,1,16,2,1,0 +4,22,2.5,2,2,12,3,2,0 +5,22,2.5,0,2,14,6,4,0 +4,32,13,2,4,14,3,6,0 +4,27,9,2,2,20,4,5,0 +4,22,2.5,1,2,12,3,4,0 +3,22,2.5,1,2,14,5,5,0 +5,22,2.5,0,3,14,3,4,0 +3,22,2.5,0,2,16,3,5,0 +5,22,0.5,0,4,14,5,5,0 +5,42,9,0,3,16,4,4,0 +4,32,9,1,3,17,5,4,0 +5,32,6,2,4,17,2,6,0 +5,27,6,0,2,20,4,5,0 +5,27,6,2,4,16,4,4,0 +5,22,2.5,1,3,12,4,4,0 +5,22,2.5,0,2,14,4,4,0 +4,22,2.5,0,3,16,4,6,0 +4,22,2.5,1,2,14,3,2,0 +5,42,23,2,3,14,3,5,0 +5,32,13,0,2,16,3,5,0 +5,22,2.5,0,1,12,3,1,0 +5,22,9,3,2,14,5,4,0 +5,27,0.5,0,2,16,3,5,0 +3,32,6,0,2,9,2,2,0 +5,22,2.5,0,1,17,1,1,0 +4,32,16.5,5.5,2,16,4,4,0 +4,37,6,1,3,20,6,6,0 +5,42,23,2,2,17,3,5,0 +5,27,2.5,0,3,17,5,5,0 +5,42,23,2,3,14,5,5,0 +5,27,6,2,1,14,5,5,0 +5,32,13,2,3,17,4,5,0 +5,22,2.5,0,2,16,4,5,0 +5,22,2.5,0,1,14,3,4,0 +5,22,2.5,0,3,12,3,2,0 +2,32,13,4,3,12,3,2,0 +5,37,16.5,4,4,16,4,2,0 +5,37,16.5,5.5,4,12,3,6,0 +4,22,6,2,1,12,3,4,0 +3,37,9,0,4,12,3,3,0 +4,27,6,1,1,17,4,4,0 +5,22,2.5,1,2,12,3,3,0 +4,22,2.5,1,3,14,4,4,0 +5,32,13,2,3,12,3,5,0 +5,27,2.5,0,3,17,4,2,0 +4,27,6,3,4,14,4,2,0 +3,22,6,1,1,12,3,6,0 +4,22,2.5,0,4,17,4,4,0 +5,27,9,0,4,20,4,6,0 +3,42,23,4,4,14,5,4,0 +4,32,16.5,4,3,14,3,3,0 +5,22,2.5,0,4,16,3,3,0 +5,27,0.5,0,2,16,4,4,0 +5,37,23,3,2,14,4,5,0 +5,27,2.5,0,1,12,3,4,0 +5,22,2.5,1,4,12,3,2,0 +5,22,2.5,2,1,16,3,6,0 +5,27,2.5,0,3,14,3,5,0 +4,27,6,1,2,17,4,5,0 +2,27,2.5,1,3,12,4,5,0 +4,37,16.5,3,3,14,3,2,0 +4,32,16.5,2,3,16,4,4,0 +4,27,6,0,1,20,4,1,0 +5,27,9,3,3,12,2,4,0 +4,27,2.5,0,3,17,4,5,0 +3,22,6,1,2,16,1,3,0 +2,27,9,2,3,14,3,2,0 +5,27,9,3,3,14,3,4,0 +5,22,0.5,0,3,14,3,1,0 +4,27,9,2,3,12,2,4,0 +5,32,13,2,3,12,3,4,0 +5,27,0.5,0,2,16,5,4,0 +4,42,23,5.5,3,12,5,4,0 +4,22,2.5,0,3,16,3,5,0 +5,22,0.5,0,3,12,3,4,0 +4,22,6,1,2,14,4,3,0 +3,27,13,2,2,12,2,4,0 +5,27,2.5,0,2,16,5,4,0 +5,22,2.5,0,2,14,3,5,0 +5,27,2.5,0,1,16,2,2,0 +3,32,13,2,3,14,3,5,0 +5,22,0.5,0,2,16,3,4,0 +3,42,23,5.5,3,17,5,2,0 +2,22,2.5,2,3,12,2,2,0 +4,37,16.5,1,3,12,3,5,0 +4,27,2.5,0,1,20,6,6,0 +5,22,2.5,0,3,12,2,5,0 +4,22,2.5,0,3,14,3,1,0 +5,42,23,4,3,14,4,4,0 +5,22,2.5,0,2,14,4,6,0 +5,32,16.5,3,3,12,2,5,0 +5,22,2.5,0,2,17,4,2,0 +5,37,23,5.5,4,12,5,3,0 +5,37,16.5,3,2,12,3,4,0 +5,22,2.5,0,3,12,2,2,0 +5,27,2.5,0,2,16,4,4,0 +2,22,2.5,0,3,14,3,4,0 +3,37,16.5,2,3,14,5,4,0 +3,37,16.5,2,3,14,3,3,0 +3,32,13,2,4,16,3,3,0 +5,32,13,0,1,14,4,4,0 +4,32,9,3,3,14,1,4,0 +5,32,13,2,2,17,4,5,0 +4,27,2.5,0,1,14,2,2,0 +3,27,13,0,3,12,3,4,0 +2,37,9,0,2,16,4,4,0 +4,42,9,0,1,14,3,2,0 +5,22,0.5,0,3,14,4,5,0 +5,42,23,2,3,12,3,6,0 +5,27,2.5,0,3,16,5,5,0 +5,42,23,4,3,14,3,5,0 +3,42,23,4,3,12,2,4,0 +4,27,6,1,3,14,3,6,0 +5,22,2.5,0,1,14,3,4,0 +4,22,0.5,0,4,16,5,1,0 +5,27,6,1,3,20,4,4,0 +5,22,2.5,0,3,14,5,1,0 +3,27,9,2,3,14,2,1,0 +5,27,6,0,4,14,3,3,0 +5,32,6,1,3,20,2,5,0 +4,22,2.5,1,2,12,2,2,0 +5,27,6,0,2,14,3,4,0 +4,32,9,2,2,16,4,4,0 +5,32,13,0,1,16,4,5,0 +4,32,13,3,2,12,2,5,0 +3,32,2.5,0,2,14,5,3,0 +5,22,2.5,1,3,12,3,4,0 +5,32,13,2,2,14,3,3,0 +4,27,6,0,2,14,3,3,0 +4,22,2.5,0,3,16,4,6,0 +3,32,2.5,0,1,17,5,6,0 +5,32,6,0,2,17,4,5,0 +4,42,13,0,2,14,2,2,0 +4,22,6,2,4,12,4,4,0 +3,17.5,0.5,0,2,14,3,2,0 +3,42,23,5.5,3,14,2,4,0 +5,32,16.5,2,2,14,5,5,0 +5,22,0.5,0,1,12,2,4,0 +5,22,6,2,3,12,2,4,0 +5,27,2.5,0,2,20,4,6,0 +4,22,2.5,0,1,16,5,6,0 +4,27,9,0,2,14,3,4,0 +4,32,9,1,2,14,3,2,0 +5,22,2.5,0,1,14,3,1,0 +4,32,16.5,3,4,16,4,6,0 +4,42,16.5,4,4,14,3,4,0 +4,22,0.5,0,1,12,2,2,0 +5,32,13,3,4,14,3,4,0 +5,32,13,3,2,14,2,3,0 +3,42,23,3,4,12,3,2,0 +5,22,2.5,0,2,14,3,1,0 +5,27,9,2,3,16,4,4,0 +5,27,2.5,0,3,20,4,6,0 +5,17.5,2.5,0,4,14,2,2,0 +5,27,6,1,1,14,3,4,0 +5,22,2.5,0,3,16,2,2,0 +4,22,2.5,0,2,14,3,1,0 +4,37,16.5,3,3,12,4,4,0 +3,42,23,5.5,4,12,2,4,0 +5,22,2.5,0,1,14,2,2,0 +4,32,2.5,0,2,14,4,3,0 +3,32,13,1,1,14,2,2,0 +5,27,6,1,1,16,4,2,0 +4,27,6,2,3,17,6,5,0 +5,37,13,2,3,20,4,6,0 +5,22,0.5,0,3,16,3,6,0 +4,22,2.5,0,2,16,5,4,0 +5,22,2.5,0,3,12,3,2,0 +5,27,6,0,2,14,3,3,0 +5,22,2.5,0,3,12,2,4,0 +5,27,6,2,2,12,2,2,0 +4,42,23,4,1,14,4,4,0 +5,27,6,0,1,14,3,5,0 +3,37,16.5,5.5,3,14,3,2,0 +5,32,16.5,2,3,12,3,2,0 +4,22,0.5,0,2,16,4,5,0 +5,22,2.5,0,3,12,3,5,0 +4,32,9,2,2,16,4,4,0 +4,27,2.5,0,3,17,4,4,0 +5,27,6,2,4,14,3,4,0 +3,32,13,1,1,14,3,6,0 +5,32,13,3,4,14,5,5,0 +5,37,2.5,0,2,12,2,4,0 +5,42,23,2,1,12,5,2,0 +4,32,9,3,3,14,5,5,0 +5,37,13,0,1,16,3,5,0 +4,27,6,1,2,14,3,5,0 +4,32,2.5,0,3,16,2,5,0 +3,42,23,3,2,12,2,2,0 +4,37,16.5,2,3,14,3,5,0 +5,37,16.5,1,4,17,4,4,0 +4,27,2.5,0,1,16,4,5,0 +4,37,16.5,2,2,14,3,5,0 +4,22,2.5,0,2,12,3,2,0 +3,32,6,2,3,20,4,2,0 +5,42,23,2,1,12,3,2,0 +5,37,16.5,3,3,14,3,6,0 +3,37,16.5,3,2,12,2,3,0 +5,32,16.5,4,3,12,3,5,0 +4,27,9,2,2,12,3,4,0 +5,32,16.5,1,1,14,2,2,0 +4,27,6,0,2,16,5,5,0 +5,22,2.5,0,2,14,4,2,0 +3,32,13,2,2,14,3,2,0 +5,42,23,1,3,14,3,5,0 +5,22,0.5,0,2,14,2,5,0 +5,32,2.5,0,2,14,5,2,0 +5,42,23,2,4,14,3,5,0 +3,37,23,3,3,12,5,5,0 +5,27,2.5,0,3,17,4,5,0 +5,27,2.5,0,1,17,4,6,0 +5,32,13,0,2,20,5,4,0 +3,42,23,4,2,14,6,6,0 +3,22,2.5,0,3,14,4,4,0 +5,27,6,1,2,17,4,4,0 +4,27,9,3,1,12,2,2,0 +5,27,9,1,2,12,3,4,0 +5,42,23,2,4,12,2,2,0 +5,42,23,2,2,12,3,2,0 +4,22,2.5,1,2,14,3,4,0 +3,42,23,2,2,20,4,4,0 +4,22,0.5,0,1,14,3,3,0 +5,37,16.5,2,1,16,4,6,0 +5,22,6,0,2,14,3,4,0 +5,37,9,1,2,14,3,5,0 +3,22,6,1,2,14,4,5,0 +5,27,2.5,0,2,14,3,4,0 +5,27,6,2,3,14,3,5,0 +4,17.5,2.5,1,2,12,2,2,0 +5,42,23,3,3,12,3,5,0 +5,27,2.5,1,3,17,4,4,0 +3,22,2.5,0,3,14,3,4,0 +5,27,2.5,2,2,14,3,4,0 +4,27,2.5,1,2,16,4,6,0 +5,27,2.5,1,1,14,2,2,0 +5,27,2.5,0,1,16,4,4,0 +5,27,2.5,0,4,14,5,5,0 +5,32,9,2,3,16,4,2,0 +5,42,23,1,3,14,2,5,0 +4,32,9,2,1,17,4,4,0 +4,22,2.5,0,3,14,3,1,0 +4,27,6,1,3,17,4,4,0 +5,22,2.5,0,1,14,4,2,0 +5,22,2.5,0,1,12,3,5,0 +4,27,2.5,1,2,14,5,5,0 +4,22,2.5,0,1,14,3,4,0 +4,27,6,0,3,20,6,6,0 +5,27,2.5,0,2,14,5,4,0 +5,32,16.5,2,3,12,3,2,0 +5,32,13,0,1,16,4,6,0 +4,27,9,0,4,14,3,4,0 +5,37,16.5,2,2,16,4,5,0 +5,32,16.5,4,2,16,4,5,0 +5,27,6,0,2,16,3,5,0 +5,27,6,2,1,16,3,5,0 +5,22,2.5,1,4,14,2,4,0 +3,32,2.5,1,2,14,3,3,0 +5,22,6,0,2,12,2,2,0 +5,42,23,2,2,12,4,4,0 +5,22,2.5,0,3,16,3,2,0 +4,37,9,2,3,20,4,2,0 +5,32,13,2,1,16,4,5,0 +5,42,23,1,4,20,4,4,0 +5,27,6,0,3,14,4,5,0 +3,42,23,2,2,17,3,4,0 +4,22,2.5,1,1,14,3,4,0 +4,37,16.5,3,2,14,3,3,0 +4,22,2.5,0,2,14,3,3,0 +3,27,6,0,1,16,5,5,0 +4,27,9,2,3,17,6,6,0 +4,37,16.5,2,4,14,5,5,0 +5,27,2.5,0,4,16,4,6,0 +5,42,23,2,3,12,2,4,0 +4,32,13,1,3,14,4,4,0 +5,42,23,5.5,3,12,3,5,0 +5,22,0.5,0,3,16,3,2,0 +5,27,2.5,1,1,14,3,5,0 +3,27,9,1,2,12,3,4,0 +5,42,13,5.5,2,12,3,5,0 +4,27,6,1,3,12,3,2,0 +5,22,2.5,0,3,14,3,2,0 +4,32,13,2,2,14,3,5,0 +4,42,23,2,2,14,3,4,0 +4,37,23,5.5,4,12,3,5,0 +3,22,2.5,0,2,14,4,2,0 +5,27,6,2,1,20,5,5,0 +4,27,2.5,2,2,16,4,6,0 +4,22,0.5,0,1,16,4,2,0 +2,32,16.5,4,2,14,4,2,0 +5,22,2.5,0,2,14,3,4,0 +5,22,2.5,0,4,16,2,4,0 +2,27,2.5,2,4,12,2,4,0 +4,27,2.5,1,2,14,5,2,0 +5,22,2.5,0,3,16,3,4,0 +5,27,16.5,3,2,14,2,4,0 +4,22,2.5,0,4,16,3,3,0 +5,42,23,5.5,4,14,3,5,0 +3,27,6,3,3,14,4,2,0 +5,27,2.5,2,1,14,4,6,0 +5,27,6,1,3,14,5,5,0 +4,27,16.5,2,3,14,3,5,0 +2,27,2.5,1,2,14,3,3,0 +2,32,13,2,1,12,2,2,0 +5,37,16.5,5.5,2,12,3,5,0 +5,42,23,3,3,12,2,2,0 +4,42,23,2,2,14,3,3,0 +5,22,2.5,1,2,12,3,4,0 +5,27,13,2,2,14,3,4,0 +5,32,6,2,4,20,6,6,0 +4,42,23,4,4,14,4,4,0 +5,37,16.5,2,2,14,3,5,0 +4,22,2.5,0,1,12,3,3,0 +4,22,2.5,0,4,14,3,5,0 +3,22,6,1,3,12,3,2,0 +4,27,6,2,3,14,3,3,0 +4,37,16.5,3,3,14,4,3,0 +2,42,13,0,2,12,3,4,0 +5,27,2.5,0,3,14,3,3,0 +4,27,6,1,3,14,3,4,0 +4,27,9,2,2,12,3,5,0 +5,22,2.5,0,1,16,6,4,0 +4,42,23,3,2,14,3,5,0 +4,32,9,3,2,16,3,5,0 +4,22,2.5,0,2,14,3,2,0 +4,27,6,2,4,17,4,2,0 +5,27,2.5,0,3,20,5,6,0 +5,27,6,0,4,14,3,4,0 +5,37,16.5,2,2,12,3,4,0 +4,37,16.5,2,2,14,4,4,0 +4,27,2.5,0,1,17,4,1,0 +4,27,13,2,2,12,3,4,0 +3,22,2.5,0,1,12,3,4,0 +3,37,16.5,2,3,12,3,4,0 +3,22,2.5,0,1,14,3,1,0 +4,27,2.5,1,1,17,4,4,0 +5,32,13,2,3,12,3,5,0 +5,42,13,0,3,12,5,2,0 +4,42,23,2,2,12,4,4,0 +4,27,9,2,2,14,2,3,0 +5,22,2.5,0,1,14,3,1,0 +5,27,6,2,3,16,5,4,0 +3,22,2.5,1,4,14,2,2,0 +4,32,16.5,3,2,14,3,5,0 +5,27,2.5,1,3,17,1,6,0 +4,27,6,0,2,17,4,4,0 +5,42,23,3,3,14,3,5,0 +5,27,2.5,0,1,20,4,5,0 +4,37,16.5,4,2,14,1,4,0 +5,17.5,0.5,0,3,12,3,4,0 +5,42,23,3,1,20,4,6,0 +5,32,13,2,4,14,3,5,0 +4,37,16.5,4,2,14,2,4,0 +5,32,16.5,2,2,14,3,4,0 +5,32,9,2,2,12,4,2,0 +5,42,23,5.5,3,12,5,4,0 +5,42,23,5.5,1,12,3,5,0 +5,27,6,0,1,12,3,4,0 +4,27,6,0,2,14,2,2,0 +4,22,6,2,2,12,2,4,0 +5,22,0.5,0,3,12,2,2,0 +3,32,6,0,1,20,4,2,0 +5,37,16.5,3,3,16,4,4,0 +5,42,23,1,3,16,5,5,0 +5,27,0.5,0,3,20,4,4,0 +4,27,9,2,1,12,4,5,0 +5,42,23,5.5,2,14,4,4,0 +4,42,23,3,2,14,3,3,0 +4,37,16.5,4,3,14,2,4,0 +4,27,9,1,4,12,4,5,0 +4,22,2.5,0,2,12,3,3,0 +5,32,9,2,2,16,3,2,0 +4,22,2.5,0,1,14,2,2,0 +4,32,6,1,4,17,4,6,0 +5,22,6,1,2,12,2,4,0 +5,32,13,1,3,16,5,6,0 +5,27,9,0,4,14,3,5,0 +5,27,13,2,3,17,4,4,0 +4,27,6,0,3,14,3,6,0 +4,32,9,2,4,16,4,5,0 +4,37,23,5.5,2,14,4,4,0 +2,22,6,0,2,14,3,5,0 +4,22,2.5,0,3,16,4,3,0 +3,27,9,3,4,14,2,2,0 +5,37,16.5,3,3,14,3,3,0 +3,37,23,4,2,14,5,4,0 +1,42,13,2,1,14,5,5,0 +5,17.5,0.5,0,4,12,1,4,0 +4,32,23,3,2,9,2,6,0 +5,37,13,2,2,16,5,2,0 +5,22,2.5,0,3,17,5,5,0 +5,22,2.5,1,3,14,3,5,0 +4,42,23,4,2,14,6,2,0 +2,42,16.5,2,3,14,3,5,0 +5,27,2.5,1,3,16,4,2,0 +5,22,2.5,0,3,14,3,4,0 +4,27,2.5,1,2,14,3,3,0 +4,42,23,2,3,16,3,6,0 +4,37,23,3,2,12,2,2,0 +4,32,9,3,3,16,4,4,0 +3,27,6,0,2,14,4,2,0 +4,27,2.5,0,1,16,4,2,0 +4,27,9,2,3,14,3,4,0 +5,22,2.5,0,2,14,3,1,0 +5,27,6,2,3,12,2,2,0 +4,27,6,0,4,9,2,2,0 +4,32,13,3,2,14,3,5,0 +1,42,23,3,3,12,2,3,0 +3,22,2.5,1,3,12,3,2,0 +4,27,16.5,2,1,12,2,4,0 +3,22,2.5,0,3,14,4,5,0 +4,22,2.5,1,1,14,4,4,0 +5,27,6,2,2,14,1,2,0 +4,27,9,4,3,14,2,5,0 +4,22,0.5,0,3,17,4,1,0 +4,27,2.5,1,3,16,4,2,0 +5,22,2.5,1,2,14,2,2,0 +5,22,0.5,0,3,14,3,5,0 +5,32,16.5,4,2,14,4,6,0 +4,22,2.5,0,1,16,2,5,0 +3,27,9,2,2,14,3,5,0 +5,22,0.5,0,3,17,4,5,0 +4,42,13,2,3,16,5,5,0 +5,27,2.5,0,3,16,4,5,0 +4,27,6,0,3,16,4,2,0 +5,22,2.5,1,1,16,3,2,0 +5,32,16.5,2,2,14,5,5,0 +5,27,6,0,3,12,3,2,0 +5,37,16.5,2,1,14,5,2,0 +3,27,6,0,2,16,5,4,0 +5,32,9,2,2,12,3,2,0 +4,27,13,2,1,14,4,4,0 +5,22,2.5,0,1,12,2,4,0 +5,27,2.5,0,3,14,3,5,0 +2,22,2.5,1,3,16,3,2,0 +5,42,13,1,3,12,2,6,0 +3,32,16.5,3,3,14,3,5,0 +4,27,6,2,2,14,2,3,0 +5,42,23,2,2,14,3,2,0 +4,42,23,3,4,16,3,5,0 +4,37,16.5,1,2,12,2,4,0 +4,32,16.5,3,4,12,2,2,0 +5,22,2.5,2,1,14,3,4,0 +3,27,6,0,1,14,3,4,0 +5,32,16.5,3,1,12,2,5,0 +5,27,9,2,2,14,3,5,0 +5,27,6,2,2,12,2,2,0 +4,27,6,1,2,14,4,5,0 +5,27,16.5,1,2,14,3,2,0 +5,17.5,0.5,0,3,14,3,5,0 +4,42,23,2,1,12,3,4,0 +4,37,16.5,3,1,12,4,4,0 +5,42,23,3,2,14,5,4,0 +5,27,2.5,0,1,16,3,2,0 +4,37,23,3,2,12,3,5,0 +5,27,2.5,0,2,14,5,1,0 +3,17.5,2.5,0,2,12,1,2,0 +4,42,23,1,3,12,3,3,0 +5,22,2.5,0,2,14,3,4,0 +3,22,2.5,1,3,14,5,4,0 +5,17.5,0.5,0,1,12,3,2,0 +5,32,6,1,1,17,4,6,0 +3,27,2.5,0,1,17,4,2,0 +3,37,16.5,3,4,14,4,6,0 +5,22,2.5,0,2,16,4,5,0 +5,22,2.5,0,2,16,4,4,0 +5,32,16.5,3,4,14,4,5,0 +4,27,6,1,1,14,3,5,0 +4,22,0.5,0,3,16,4,1,0 +4,22,2.5,0,4,14,3,5,0 +4,32,16.5,2,3,12,3,4,0 +4,22,2.5,0,1,12,2,4,0 +3,27,2.5,0,2,12,3,1,0 +4,22,2.5,0,1,16,3,4,0 +4,27,6,1,2,14,5,5,0 +4,32,16.5,4,4,14,3,5,0 +1,27,6,0,2,14,4,5,0 +5,27,6,2,4,14,3,2,0 +5,32,16.5,3,1,12,2,5,0 +5,22,2.5,0,3,12,5,4,0 +4,27,0.5,0,2,14,3,5,0 +4,17.5,2.5,1,1,12,2,4,0 +5,42,23,2,3,14,3,5,0 +4,37,9,1,3,12,2,5,0 +5,42,23,3,3,16,3,3,0 +5,22,2.5,0,2,14,1,4,0 +5,42,23,3,3,12,4,5,0 +3,22,2.5,0,4,14,3,5,0 +5,27,9,2,2,12,3,3,0 +4,37,16.5,2,4,14,4,4,0 +4,42,23,3,1,12,3,5,0 +4,27,16.5,2,3,16,3,4,0 +5,32,2.5,0,4,17,5,4,0 +5,27,9,1,2,12,3,5,0 +5,27,6,0,1,14,3,4,0 +1,37,13,2,1,17,4,4,0 +2,17.5,0.5,0,2,12,3,2,0 +5,27,6,2,2,14,3,3,0 +4,42,23,3,2,12,5,6,0 +5,32,23,3,2,12,3,4,0 +4,32,13,3,2,14,4,6,0 +4,17.5,0.5,0,2,16,4,4,0 +5,27,0.5,0,3,14,2,2,0 +4,27,6,0,2,16,4,4,0 +5,32,13,3,3,16,4,5,0 +4,22,2.5,0,1,17,4,5,0 +5,32,2.5,0,1,20,2,1,0 +2,32,16.5,3,4,12,5,5,0 +3,32,9,0,4,20,4,4,0 +3,22,0.5,0,2,17,1,5,0 +4,27,9,2,2,12,3,2,0 +5,42,23,3,3,12,5,4,0 +5,22,2.5,0,3,16,4,5,0 +5,22,2.5,1,1,14,2,2,0 +5,42,23,3,2,12,5,5,0 +5,37,16.5,4,3,20,4,4,0 +4,22,2.5,1,3,12,3,4,0 +3,27,6,1,1,17,5,6,0 +2,27,2.5,0,3,12,3,2,0 +4,22,6,2,2,12,4,4,0 +5,27,9,0,1,17,4,6,0 +4,22,2.5,2,2,12,3,2,0 +4,22,2.5,1,2,12,3,1,0 +4,42,23,2,2,12,2,5,0 +3,32,6,0,1,16,4,4,0 +5,22,2.5,1,3,17,4,4,0 +5,22,2.5,0,2,12,4,1,0 +4,37,23,2,3,20,4,4,0 +3,27,6,1,2,12,4,2,0 +5,32,13,3,2,14,4,5,0 +4,32,16.5,2,2,14,3,4,0 +5,42,23,3,2,14,3,4,0 +4,32,13,2,4,14,2,4,0 +4,32,6,0,2,14,3,5,0 +4,42,23,2,3,14,5,5,0 +5,22,2.5,0,2,14,3,2,0 +4,27,6,0,1,16,3,2,0 +5,27,2.5,0,4,14,3,6,0 +2,22,2.5,0,3,16,4,5,0 +5,27,6,1,2,16,4,6,0 +5,27,6,0,2,17,4,6,0 +5,27,6,1,2,12,5,5,0 +4,22,2.5,0,2,16,3,4,0 +4,27,9,1,1,14,3,4,0 +4,32,6,2,1,17,4,4,0 +5,22,0.5,0,2,14,3,1,0 +5,22,2.5,2,3,14,4,4,0 +4,22,2.5,0,3,12,3,4,0 +4,32,16.5,2,2,9,3,5,0 +5,27,6,0,1,14,3,5,0 +5,22,6,2,3,12,2,4,0 +5,22,2.5,1,3,16,4,5,0 +4,27,2.5,0,3,17,4,4,0 +5,27,2.5,0,4,20,4,4,0 +5,27,6,2,4,12,2,5,0 +5,22,0.5,0,2,14,2,5,0 +5,22,2.5,2,2,12,2,2,0 +5,27,2.5,0,4,14,3,4,0 +5,22,2.5,0,2,14,3,3,0 +5,17.5,0.5,0,4,12,2,4,0 +5,32,13,2,2,14,5,4,0 +3,27,6,0,2,12,5,5,0 +4,37,16.5,3,3,12,3,5,0 +5,32,13,2,2,17,4,3,0 +4,22,2.5,1,3,14,4,4,0 +5,27,2.5,0,2,14,5,5,0 +5,32,9,2,4,16,4,5,0 +4,27,6,1,2,14,2,2,0 +4,27,6,1,2,14,2,3,0 +5,32,2.5,0,3,14,4,4,0 +5,22,0.5,0,1,14,5,6,0 +4,27,2.5,0,2,14,2,2,0 +4,22,2.5,0,3,16,4,1,0 +5,42,16.5,3,3,14,3,4,0 +5,42,16.5,2,4,14,3,4,0 +5,22,0.5,0,3,14,3,3,0 +4,22,2.5,1,1,14,2,5,0 +5,42,23,5.5,2,12,2,2,0 +5,27,2.5,0,2,16,3,6,0 +5,22,2.5,0,2,14,3,3,0 +4,22,0.5,0,3,14,3,5,0 +5,27,6,0,2,14,4,1,0 +5,27,6,0,4,17,4,4,0 +5,37,23,2,3,17,4,4,0 +4,27,6,2,3,14,4,4,0 +4,22,2.5,0,1,12,3,3,0 +5,37,13,2,2,14,5,2,0 +4,17.5,0.5,0,4,12,2,5,0 +4,22,2.5,1,1,14,3,2,0 +5,27,2.5,0,1,17,4,5,0 +5,22,2.5,0,2,14,3,4,0 +4,27,6,1,3,16,3,1,0 +5,22,2.5,0,3,16,3,2,0 +1,42,23,4,3,14,3,5,0 +4,27,6,1,3,12,3,3,0 +5,22,2.5,0,1,14,3,5,0 +4,27,6,1,3,16,4,4,0 +4,22,2.5,0,1,12,3,2,0 +5,22,2.5,0,2,12,4,2,0 +4,22,2.5,0,2,14,3,5,0 +5,17.5,0.5,0,1,14,3,5,0 +3,37,16.5,3,4,17,4,5,0 +4,32,2.5,1,3,17,4,3,0 +5,32,16.5,3,3,14,4,5,0 +5,22,6,2,2,12,2,5,0 +4,27,6,0,2,16,3,6,0 +5,22,2.5,0,2,16,3,4,0 +4,22,2.5,0,2,12,5,2,0 +4,22,6,3,2,12,2,2,0 +2,42,16.5,2,3,16,4,2,0 +4,27,6,1,2,16,4,5,0 +5,32,13,2,2,16,4,4,0 +5,27,6,1,2,14,3,1,0 +4,22,0.5,0,3,14,3,1,0 +5,32,16.5,3,4,16,5,6,0 +4,27,6,0,1,16,4,4,0 +5,27,6,1,2,14,5,4,0 +5,32,13,3,2,14,4,6,0 +5,22,2.5,0,1,14,3,5,0 +3,27,2.5,2,2,14,3,1,0 +5,27,6,0,2,14,4,6,0 +3,22,0.5,0,1,16,3,3,0 +5,27,6,1,2,17,4,4,0 +5,27,2.5,0,3,20,4,5,0 +5,32,16.5,4,4,14,3,3,0 +4,42,23,4,2,12,3,4,0 +3,27,9,2,1,12,2,4,0 +5,32,16.5,2,3,12,3,4,0 +2,42,23,2,1,14,2,2,0 +5,37,16.5,2,1,12,2,5,0 +5,27,6,1,4,17,4,6,0 +4,37,2.5,0,3,12,5,5,0 +5,27,2.5,1,2,14,2,2,0 +4,27,2.5,0,3,16,4,4,0 +5,27,2.5,0,4,14,4,4,0 +4,27,9,0,1,14,2,4,0 +4,22,2.5,0,2,12,3,2,0 +4,22,2.5,0,2,14,3,2,0 +5,22,2.5,0,3,12,3,2,0 +4,17.5,0.5,0,1,12,3,1,0 +4,27,2.5,0,3,17,4,5,0 +5,17.5,0.5,0,1,12,3,4,0 +4,32,13,2,1,16,4,4,0 +4,27,2.5,0,2,12,3,2,0 +5,27,9,2,3,12,3,2,0 +4,32,6,1,3,12,3,4,0 +3,27,2.5,0,2,20,4,4,0 +5,22,0.5,0,2,12,5,1,0 +4,42,23,2,4,14,3,5,0 +5,22,2.5,0,1,16,4,5,0 +5,27,6,2,2,14,4,2,0 +5,22,2.5,1,3,12,3,4,0 +5,27,6,0,2,16,4,6,0 +4,42,23,2,2,17,2,4,0 +5,32,2.5,0,2,14,2,6,0 +5,22,2.5,0,1,14,4,4,0 +4,22,2.5,0,2,12,3,5,0 +5,42,23,5.5,3,20,4,6,0 +5,27,2.5,0,2,12,3,4,0 +4,37,9,0,3,14,4,4,0 +3,27,2.5,1,3,17,4,5,0 +5,42,23,4,2,12,3,4,0 +4,22,2.5,0,2,14,3,5,0 +5,22,2.5,0,1,14,3,5,0 +5,32,2.5,1,1,14,4,6,0 +3,27,9,2,4,12,3,3,0 +4,22,0.5,0,3,12,3,5,0 +2,27,6,1,2,12,3,2,0 +5,42,23,5.5,3,14,5,5,0 +5,42,23,4,3,14,4,4,0 +4,32,13,3,1,12,3,5,0 +5,22,2.5,0,1,16,4,5,0 +4,37,16.5,2,3,16,4,2,0 +5,37,16.5,4,2,12,3,5,0 +2,27,6,1,3,14,4,4,0 +4,27,6,2,3,12,3,4,0 +4,22,6,0,3,16,3,2,0 +5,27,6,1,2,14,3,5,0 +4,22,2.5,0,2,14,3,4,0 +5,27,2.5,0,1,14,2,5,0 +4,22,2.5,1,3,12,3,4,0 +5,27,6,0,4,20,3,5,0 +3,42,23,3,2,12,5,5,0 +4,22,6,2,3,9,3,4,0 +4,22,2.5,0,3,14,3,4,0 +5,27,2.5,0,2,16,4,2,0 +5,22,2.5,1,4,14,4,2,0 +4,42,16.5,2,4,17,4,5,0 +4,42,23,5.5,3,14,5,3,0 +4,27,6,0,1,14,3,5,0 +4,22,6,0,3,17,4,3,0 +4,27,2.5,0,4,16,3,4,0 +4,27,6,1,1,17,4,5,0 +5,27,2.5,0,2,14,3,2,0 +5,27,6,2,3,14,3,3,0 +5,32,13,2,3,14,3,4,0 +4,22,2.5,0,3,17,4,1,0 +5,27,13,2,4,12,3,5,0 +5,22,2.5,3,3,14,3,5,0 +3,42,23,3,3,14,5,3,0 +4,27,6,1,3,16,4,4,0 +5,22,2.5,0,2,17,3,1,0 +4,32,16.5,3,3,12,5,5,0 +5,17.5,0.5,0,2,14,3,6,0 +4,22,2.5,0,4,14,3,4,0 +4,42,16.5,3,3,14,4,5,0 +4,27,9,1,1,12,2,4,0 +4,22,2.5,0,2,14,5,1,0 +5,22,2.5,0,2,14,3,2,0 +5,27,2.5,0,2,14,2,6,0 +4,22,2.5,0,4,20,2,5,0 +3,27,6,0,3,14,3,5,0 +5,32,13,2,1,17,5,6,0 +5,37,16.5,3,2,14,5,4,0 +5,22,2.5,0,2,14,2,2,0 +5,22,6,1,2,14,4,4,0 +3,27,2.5,0,1,16,3,2,0 +4,32,13,3,2,16,4,5,0 +5,22,2.5,0,2,17,4,5,0 +5,37,13,3,3,16,3,4,0 +4,42,23,2,3,14,4,3,0 +5,27,6,0,3,14,4,4,0 +4,22,2.5,0,3,16,4,5,0 +4,27,2.5,2,2,14,3,6,0 +4,27,9,3,3,14,3,2,0 +4,27,9,1,2,14,2,4,0 +5,22,2.5,0,2,16,3,2,0 +5,42,23,1,2,20,6,4,0 +4,27,2.5,0,3,20,4,5,0 +5,37,13,2,3,17,4,5,0 +5,32,9,1,2,14,5,5,0 +4,22,2.5,0,4,12,3,4,0 +4,22,6,1,1,12,3,4,0 +5,27,2.5,1,3,17,4,5,0 +5,22,6,2,2,14,3,4,0 +4,22,2.5,1,4,12,3,2,0 +4,37,16.5,2,2,20,4,5,0 +5,32,13,3,3,14,2,2,0 +4,42,23,2,4,16,4,5,0 +5,27,6,1,3,16,4,4,0 +4,27,2.5,0,2,12,2,5,0 +3,27,9,1,4,12,3,5,0 +5,37,23,4,2,14,3,5,0 +3,27,6,2,1,14,4,4,0 +5,22,2.5,0,1,12,2,4,0 +5,22,2.5,0,4,14,4,2,0 +4,22,2.5,0,1,14,3,4,0 +3,17.5,2.5,0,2,12,2,2,0 +5,22,2.5,0,2,16,3,3,0 +5,42,23,4,3,14,3,6,0 +4,17.5,2.5,1,2,12,3,4,0 +4,32,13,2,3,20,4,4,0 +5,22,0.5,0,2,12,3,2,0 +3,22,6,1,3,12,2,4,0 +3,32,13,2,2,12,3,4,0 +5,32,9,0,3,17,6,6,0 +4,42,16.5,1,3,14,3,6,0 +3,42,16.5,3,3,12,3,5,0 +4,27,2.5,0,3,16,3,5,0 +4,17.5,0.5,0,3,12,2,4,0 +5,27,2.5,1,2,12,3,4,0 +5,27,2.5,0,4,16,4,4,0 +5,22,2.5,0,3,17,4,4,0 +4,27,6,1,3,17,4,5,0 +5,22,0.5,0,2,12,3,4,0 +4,32,6,2,3,14,3,4,0 +3,22,2.5,1,1,12,3,4,0 +2,22,2.5,0,2,12,3,2,0 +5,27,2.5,1,2,14,3,5,0 +5,22,2.5,0,1,17,4,4,0 +4,27,6,1,2,12,3,4,0 +5,27,13,2,2,12,3,5,0 +5,22,2.5,0,1,14,1,1,0 +4,22,6,1,3,12,3,2,0 +5,32,16.5,4,3,14,4,6,0 +5,27,6,0,3,12,3,4,0 +4,32,13,2,4,14,5,5,0 +4,42,23,4,3,14,3,5,0 +4,27,6,2,3,16,3,2,0 +5,27,9,2,1,14,3,5,0 +3,27,2.5,0,3,16,5,4,0 +3,32,13,2,2,12,3,4,0 +4,27,2.5,0,2,16,5,4,0 +5,22,2.5,0,1,12,3,5,0 +4,32,9,1,1,16,4,3,0 +5,17.5,2.5,0,3,12,4,4,0 +4,42,23,4,4,16,4,6,0 +5,42,23,2,3,17,4,2,0 +5,22,2.5,0,2,14,3,1,0 +4,32,9,2,2,12,4,6,0 +5,27,2.5,0,1,14,3,5,0 +5,22,0.5,4,1,12,5,5,0 +5,27,6,0,1,20,4,4,0 +5,27,2.5,0,3,20,4,2,0 +5,27,6,1,3,14,3,2,0 +4,27,2.5,0,3,16,4,2,0 +5,22,0.5,0,3,16,4,2,0 +5,42,23,4,4,14,4,6,0 +3,22,2.5,1,3,14,3,2,0 +4,37,16.5,3,4,16,4,4,0 +4,37,16.5,2,3,14,3,5,0 +4,22,2.5,0,2,12,3,4,0 +4,22,6,0,2,16,5,5,0 +5,22,2.5,0,2,14,4,4,0 +4,27,6,0,2,12,2,5,0 +2,42,23,5.5,3,16,4,5,0 +5,22,2.5,0,2,14,3,2,0 +5,27,2.5,1,2,12,2,5,0 +5,42,23,1,3,12,4,5,0 +5,42,23,3,3,14,5,5,0 +5,42,23,1,1,12,3,5,0 +4,27,6,0,1,16,4,2,0 +3,27,9,2,2,14,3,4,0 +5,27,6,0,2,12,3,3,0 +4,22,2.5,0,3,12,3,5,0 +5,32,9,2,1,16,4,6,0 +5,22,2.5,1,2,12,3,2,0 +5,22,6,0,1,16,4,4,0 +5,37,16.5,2,4,20,4,6,0 +4,22,2.5,0,2,12,5,5,0 +4,22,2.5,0,3,14,3,1,0 +5,27,6,0,3,17,4,6,0 +5,22,0.5,0,3,16,5,5,0 +5,22,2.5,0,3,14,3,2,0 +5,22,2.5,0,2,14,3,4,0 +4,27,6,0,2,14,3,4,0 +5,22,2.5,0,3,12,3,4,0 +4,22,0.5,0,3,14,5,5,0 +3,42,23,1,1,12,3,6,0 +5,22,2.5,1,3,14,2,2,0 +4,27,6,1,2,14,5,2,0 +5,22,2.5,0,4,12,3,4,0 +5,22,2.5,0,2,16,4,5,0 +5,27,9,2,3,16,4,4,0 +5,32,13,0,2,12,5,4,0 +3,27,2.5,0,3,16,3,5,0 +3,27,6,0,2,20,4,4,0 +5,22,0.5,0,3,16,5,2,0 +5,22,2.5,0,2,16,4,2,0 +5,27,6,1,1,16,4,5,0 +5,27,2.5,0,1,12,3,5,0 +5,27,9,2,3,12,3,4,0 +5,22,2.5,0,2,16,4,4,0 +5,42,16.5,4,3,12,2,2,0 +3,27,9,2,3,12,5,4,0 +4,27,13,3,3,14,5,5,0 +4,22,2.5,0,2,17,4,5,0 +5,27,9,0,3,14,3,2,0 +2,22,2.5,1,2,12,3,3,0 +5,22,2.5,0,2,12,5,1,0 +4,22,2.5,0,3,16,4,3,0 +5,27,6,2,4,17,4,2,0 +4,22,2.5,0,3,17,4,4,0 +5,37,16.5,3,3,14,3,5,0 +2,37,13,0,2,17,3,5,0 +5,27,2.5,0,3,16,2,4,0 +3,27,9,2,1,12,3,5,0 +5,37,16.5,2,3,12,5,5,0 +4,22,2.5,0,3,16,5,1,0 +5,22,2.5,0,3,12,3,4,0 +5,17.5,0.5,0,2,12,3,4,0 +5,37,13,3,3,17,4,5,0 +5,32,9,3,3,14,4,4,0 +4,27,0.5,0,2,20,4,5,0 +5,37,16.5,2,4,16,4,6,0 +2,27,2.5,1,2,14,3,4,0 +4,22,2.5,0,3,17,3,6,0 +4,32,6,1,3,14,4,5,0 +4,22,2.5,1,2,12,3,2,0 +5,22,2.5,0,2,14,3,5,0 +4,27,2.5,1,1,16,4,5,0 +5,42,23,3,4,17,4,5,0 +4,37,16.5,2,2,12,3,4,0 +4,42,13,0,3,12,3,5,0 +5,22,2.5,0,2,16,4,5,0 +3,22,0.5,0,2,14,4,4,0 +4,32,6,1,1,17,2,4,0 +4,27,2.5,0,2,16,4,2,0 +5,22,2.5,0,2,16,3,1,0 +5,37,16.5,5.5,3,12,2,6,0 +5,22,2.5,0,2,16,5,2,0 +4,27,0.5,0,2,14,3,5,0 +4,22,2.5,0,2,12,2,2,0 +5,32,6,2,3,12,3,4,0 +5,42,23,2,3,12,4,4,0 +4,32,6,2,3,17,4,2,0 +4,27,2.5,0,2,12,3,2,0 +5,32,13,1,3,12,2,4,0 +4,37,16.5,2,2,14,4,2,0 +4,27,0.5,0,1,20,5,5,0 +4,17.5,0.5,0,2,14,3,3,0 +5,32,16.5,3,3,12,2,4,0 +4,37,16.5,3,2,16,4,6,0 +4,22,2.5,0,2,14,3,4,0 +5,32,13,2,3,12,3,4,0 +5,27,6,2,3,17,4,6,0 +4,22,2.5,0,2,12,2,4,0 +3,22,2.5,0,2,16,4,1,0 +4,27,9,1,1,12,2,5,0 +5,22,2.5,0,3,12,3,4,0 +5,32,13,3,1,17,4,4,0 +5,22,0.5,0,2,16,4,4,0 +5,32,13,2,4,14,3,4,0 +5,22,2.5,0,2,14,3,5,0 +5,32,9,1,2,17,2,4,0 +5,42,23,5.5,2,12,3,5,0 +2,32,2.5,1,3,20,6,5,0 +5,37,6,0,3,20,4,5,0 +4,32,9,2,3,16,4,5,0 +4,22,2.5,0,3,14,4,4,0 +4,22,2.5,0,1,12,3,2,0 +5,27,2.5,0,2,20,6,6,0 +4,32,13,2,3,12,3,3,0 +5,17.5,2.5,1,3,12,2,1,0 +5,32,16.5,3,3,12,5,5,0 +4,27,6,0,3,16,4,4,0 +5,37,16.5,2,2,12,5,5,0 +3,27,2.5,1,3,14,3,5,0 +5,27,6,0,1,16,2,4,0 +5,37,23,3,3,12,2,4,0 +4,27,2.5,1,3,14,2,2,0 +5,22,2.5,0,2,12,3,6,0 +5,22,2.5,0,1,14,4,4,0 +4,22,6,2,1,16,3,4,0 +5,22,0.5,0,3,16,4,5,0 +2,22,2.5,1,3,12,3,4,0 +5,22,0.5,0,2,20,3,4,0 +5,32,2.5,0,2,20,4,4,0 +4,27,2.5,1,2,12,3,1,0 +5,22,2.5,0,3,12,5,2,0 +3,42,13,0,4,20,2,2,0 +5,27,2.5,1,1,14,5,4,0 +5,27,13,2,4,12,3,6,0 +4,27,2.5,0,3,14,3,4,0 +4,32,13,2,3,12,2,4,0 +4,27,6,0,2,20,4,6,0 +5,32,6,0,3,12,2,2,0 +5,22,0.5,0,2,12,3,2,0 +4,27,9,1,1,16,4,4,0 +5,27,0.5,0,2,16,3,5,0 +4,22,0.5,0,2,14,4,5,0 +4,22,6,1,2,14,5,5,0 +3,22,2.5,2,1,12,3,4,0 +3,42,13,2,3,12,3,2,0 +5,27,6,3,2,14,2,5,0 +4,27,6,2,1,12,4,2,0 +5,22,2.5,0,2,14,1,4,0 +5,27,2.5,0,3,16,4,4,0 +5,27,2.5,2,2,17,4,5,0 +3,22,2.5,0,3,14,4,5,0 +4,27,6,0,3,12,3,4,0 +2,27,6,2,2,16,2,6,0 +4,32,16.5,2,2,17,4,3,0 +4,22,2.5,1,3,17,4,2,0 +5,22,2.5,0,2,12,3,5,0 +3,22,2.5,1,3,12,3,4,0 +4,22,2.5,0,2,12,3,4,0 +4,22,0.5,0,3,14,5,4,0 +3,32,13,2,2,20,4,4,0 +5,17.5,2.5,0,1,17,4,4,0 +4,22,2.5,0,3,16,4,4,0 +3,27,2.5,0,1,14,3,2,0 +5,42,13,0,4,12,5,5,0 +5,32,16.5,3,4,14,3,2,0 +5,22,2.5,0,3,14,4,5,0 +5,22,0.5,0,3,14,3,4,0 +1,32,16.5,4,3,12,2,5,0 +5,32,16.5,1,1,20,6,6,0 +3,27,9,0,3,14,3,6,0 +2,27,0.5,0,2,14,3,4,0 +5,22,2.5,0,3,14,4,6,0 +4,37,13,2,3,16,4,3,0 +4,42,16.5,2,4,12,2,4,0 +4,42,23,4,4,16,4,4,0 +3,17.5,0.5,1,2,12,3,2,0 +5,27,2.5,1,3,16,4,4,0 +5,32,16.5,2,3,12,3,2,0 +5,42,23,5.5,4,14,4,4,0 +5,37,16.5,3,3,14,3,4,0 +5,22,2.5,1,1,14,2,5,0 +5,27,2.5,0,2,17,4,4,0 +5,27,6,2,1,14,2,5,0 +5,27,9,3,3,12,2,2,0 +5,32,9,2,4,20,2,4,0 +3,27,6,1,2,14,1,4,0 +4,22,0.5,0,2,12,2,2,0 +4,22,6,1,2,12,3,4,0 +4,22,0.5,0,3,14,3,2,0 +5,32,16.5,2,3,14,3,2,0 +5,42,23,2,1,20,4,5,0 +5,37,16.5,3,3,17,4,6,0 +4,32,13,1,4,17,4,1,0 +5,42,23,5.5,3,12,5,5,0 +5,32,13,0,2,14,5,4,0 +5,22,2.5,0,3,14,4,5,0 +1,27,6,3,1,14,2,6,0 +4,27,13,3,2,12,3,4,0 +4,37,6,0,3,16,4,5,0 +5,22,2.5,1,1,14,2,2,0 +5,22,2.5,0,4,12,3,4,0 +5,22,2.5,0,3,14,4,2,0 +5,37,16.5,2,3,12,3,5,0 +5,22,6,2,2,12,3,5,0 +5,42,23,3,4,16,4,6,0 +4,32,13,4,4,12,3,4,0 +5,22,0.5,0,1,14,3,3,0 +4,22,2.5,0,2,14,3,4,0 +4,27,6,0,1,16,4,6,0 +4,32,13,3,2,12,2,6,0 +4,22,2.5,1,3,17,4,4,0 +4,22,0.5,0,1,16,3,5,0 +4,32,13,2,2,12,2,5,0 +4,17.5,2.5,1,1,12,2,4,0 +3,27,6,0,1,17,2,6,0 +4,32,16.5,1,3,12,3,4,0 +5,27,0.5,0,2,16,3,2,0 +4,27,9,2,4,20,4,4,0 +3,42,23,2,3,12,3,5,0 +5,22,2.5,0,2,14,4,2,0 +5,32,13,3,4,20,4,4,0 +2,32,6,2,2,17,3,4,0 +5,22,2.5,0,3,14,2,2,0 +5,27,9,3,2,12,3,4,0 +4,27,2.5,1,4,20,1,1,0 +4,27,6,1,2,12,3,4,0 +5,22,2.5,0,3,12,3,6,0 +4,32,16.5,5.5,3,12,2,2,0 +4,32,13,2,4,16,2,4,0 +5,32,13,5.5,3,14,2,2,0 +5,27,9,3,3,12,2,4,0 +4,27,2.5,0,2,14,3,2,0 +4,42,23,4,1,17,4,4,0 +3,27,9,2,3,17,4,4,0 +5,27,6,1,3,16,4,3,0 +5,27,2.5,0,1,14,3,5,0 +5,42,23,4,2,12,3,5,0 +4,22,2.5,1,2,12,2,4,0 +4,37,16.5,2,2,12,3,4,0 +5,22,2.5,0,3,16,3,6,0 +4,22,2.5,0,3,14,3,4,0 +5,22,2.5,0,4,17,4,5,0 +5,22,2.5,0,3,16,4,6,0 +3,22,2.5,0,2,16,4,4,0 +4,27,9,0,2,14,5,5,0 +4,32,13,2,3,14,3,6,0 +5,27,6,2,4,20,6,6,0 +5,27,9,2,3,16,4,6,0 +5,42,23,2,2,12,3,4,0 +4,27,2.5,0,2,12,3,5,0 +5,22,2.5,0,3,14,3,2,0 +4,22,2.5,0,3,12,2,2,0 +4,32,9,1,2,12,2,5,0 +4,27,6,0,2,14,3,2,0 +5,22,2.5,1,1,12,3,2,0 +5,42,2.5,0,4,12,5,4,0 +5,22,2.5,0,1,14,4,3,0 +4,42,23,2,4,20,2,2,0 +4,42,23,3,3,12,4,4,0 +5,22,2.5,0,1,16,4,2,0 +5,32,16.5,2,2,12,3,5,0 +5,17.5,0.5,0,2,12,3,3,0 +4,22,2.5,1,3,12,2,4,0 +5,27,2.5,0,4,17,4,3,0 +4,22,2.5,0,2,14,3,4,0 +5,22,0.5,0,3,16,2,2,0 +5,22,2.5,1,4,14,3,3,0 +5,42,23,3,4,14,3,6,0 +5,27,6,0,3,12,2,2,0 +4,27,2.5,0,2,14,4,4,0 +4,22,2.5,0,3,12,3,2,0 +5,42,23,3,3,14,3,3,0 +4,42,16.5,3,3,14,2,2,0 +5,32,13,2,2,16,3,4,0 +5,22,2.5,0,3,14,2,2,0 +4,22,6,2,3,12,2,4,0 +4,27,6,0,3,14,3,3,0 +3,32,6,1,3,14,3,5,0 +5,37,16.5,3,4,12,6,5,0 +4,27,9,2,2,14,2,2,0 +4,22,2.5,0,2,12,3,5,0 +5,27,2.5,0,3,20,4,5,0 +4,32,6,0,3,12,5,2,0 +4,22,2.5,0,3,14,3,2,0 +5,37,16.5,4,4,14,3,6,0 +3,37,16.5,4,2,12,2,4,0 +2,22,9,2,2,12,3,4,0 +4,27,6,0,4,16,5,4,0 +5,27,13,3,3,12,3,3,0 +5,27,6,1,4,20,4,4,0 +5,27,6,1,3,14,4,5,0 +5,32,6,1,4,20,6,6,0 +5,27,6,2,2,14,4,4,0 +5,27,6,2,2,14,4,6,0 +3,42,23,4,3,14,3,4,0 +4,22,2.5,0,3,14,3,3,0 +3,32,13,2,2,16,4,5,0 +4,42,23,3,4,12,2,5,0 +5,27,6,0,4,14,5,2,0 +4,27,9,3,2,14,3,1,0 +5,27,9,2,2,14,3,6,0 +5,32,2.5,0,3,12,5,5,0 +5,27,6,0,3,16,4,5,0 +4,27,6,2,3,16,4,2,0 +5,22,2.5,1,3,14,3,2,0 +5,42,23,3,2,12,4,4,0 +5,22,2.5,0,2,17,4,1,0 +4,27,2.5,1,2,14,3,3,0 +4,27,6,2,1,14,5,5,0 +5,17.5,0.5,0,3,12,3,2,0 +4,32,9,1,3,12,3,2,0 +5,42,23,3,2,16,4,6,0 +4,22,2.5,1,3,14,2,4,0 +5,32,6,1,4,17,2,2,0 +4,22,2.5,1,3,14,3,5,0 +5,27,0.5,0,2,14,6,4,0 +3,42,23,2,2,14,3,6,0 +5,32,13,2,3,14,3,4,0 +4,42,23,5.5,2,12,2,4,0 +4,32,9,2,3,14,5,5,0 +5,32,16.5,2,3,12,2,3,0 +5,22,6,0,1,14,5,4,0 +5,42,16.5,1,2,12,5,3,0 +4,42,23,2,2,12,3,4,0 +2,42,23,4,2,14,5,6,0 +4,32,9,2,2,14,3,2,0 +5,42,16.5,1,4,12,4,5,0 +4,32,13,3,2,12,2,2,0 +4,22,2.5,1,2,12,3,4,0 +5,22,2.5,0,3,14,4,4,0 +5,27,2.5,0,2,20,1,6,0 +5,27,6,0,3,16,4,2,0 +4,32,13,2,3,14,3,4,0 +4,27,6,0,2,16,4,6,0 +5,17.5,0.5,0,1,14,3,2,0 +5,32,16.5,2,4,12,3,4,0 +5,17.5,0.5,0,3,12,6,2,0 +4,22,6,0,2,14,3,5,0 +5,27,2.5,0,4,20,4,5,0 +5,42,23,1,2,12,3,4,0 +3,27,9,3,4,12,2,2,0 +5,37,16.5,4,4,14,3,4,0 +4,22,2.5,0,3,14,5,4,0 +5,32,9,2,4,12,3,4,0 +5,22,2.5,2,3,17,4,4,0 +5,32,13,0,4,12,3,4,0 +3,42,23,4,3,12,3,3,0 +4,27,6,2,3,14,3,5,0 +4,22,2.5,0,2,16,5,2,0 +4,27,9,2,3,14,3,5,0 +5,27,0.5,0,3,12,3,5,0 +5,27,0.5,0,4,17,4,2,0 +5,32,13,3,3,14,3,5,0 +5,22,0.5,1,3,14,4,4,0 +5,22,2.5,0,2,12,3,4,0 +5,22,2.5,0,2,12,2,4,0 +4,22,2.5,0,1,12,3,3,0 +4,27,6,1,1,14,3,4,0 +5,37,23,4,3,16,5,5,0 +5,22,2.5,0,2,16,4,4,0 +3,37,16.5,1,2,20,4,4,0 +4,27,2.5,1,3,14,4,2,0 +5,27,2.5,0,2,17,4,4,0 +5,42,23,3,3,17,4,2,0 +5,32,9,2,3,14,4,3,0 +5,22,0.5,0,4,14,3,5,0 +3,27,6,1,2,12,5,4,0 +3,27,9,1,2,12,3,4,0 +5,22,2.5,0,3,16,5,4,0 +4,32,9,3,4,16,4,4,0 +2,27,6,1,4,20,5,6,0 +5,22,2.5,0,3,14,4,2,0 +5,27,2.5,0,3,16,4,5,0 +4,32,13,3,2,12,2,5,0 +4,22,0.5,0,1,14,3,5,0 +5,27,9,1,2,12,3,5,0 +5,37,16.5,3,2,14,3,4,0 +5,22,2.5,0,3,16,4,5,0 +4,22,2.5,0,2,12,3,2,0 +4,42,23,1,2,12,3,3,0 +1,27,6,1,2,16,3,5,0 +5,27,6,1,3,20,4,5,0 +5,27,2.5,0,4,14,3,4,0 +5,27,2.5,0,3,14,3,4,0 +5,32,9,0,2,12,4,5,0 +5,22,2.5,0,3,17,5,5,0 +2,37,16.5,3,3,12,3,4,0 +5,27,6,0,3,17,4,6,0 +4,27,6,0,1,12,3,3,0 +4,27,9,1,3,16,3,2,0 +5,22,2.5,1,3,12,5,5,0 +4,17.5,2.5,0,3,14,3,1,0 +5,27,2.5,0,2,16,4,5,0 +4,22,2.5,0,2,12,3,2,0 +5,27,9,2,3,12,2,2,0 +4,32,9,1,3,17,3,6,0 +4,37,16.5,4,2,14,4,3,0 +4,27,9,0,3,14,2,5,0 +5,37,13,3,3,20,4,6,0 +4,27,2.5,1,3,16,4,2,0 +5,27,2.5,0,2,14,4,6,0 +4,22,2.5,0,2,12,3,2,0 +4,27,6,0,2,14,3,5,0 +4,27,13,3,2,12,3,4,0 +4,27,6,1,3,14,5,5,0 +5,27,6,1,4,16,4,4,0 +3,27,9,0,2,14,3,5,0 +4,42,23,3,4,14,3,3,0 +4,32,13,2,2,12,5,5,0 +5,27,6,0,4,20,4,1,0 +5,37,23,4,2,14,3,4,0 +5,22,2.5,0,2,12,3,4,0 +5,22,2.5,1,4,14,3,4,0 +4,22,2.5,0,3,12,3,4,0 +4,17.5,2.5,0,2,12,3,4,0 +3,22,2.5,1,3,12,3,4,0 +5,17.5,0.5,0,4,12,3,2,0 +4,37,23,3,4,9,2,2,0 +5,42,23,4,2,14,5,4,0 +4,32,16.5,2,3,14,3,4,0 +4,22,2.5,2,3,14,5,4,0 +5,17.5,0.5,0,2,12,3,4,0 +5,37,16.5,3,4,14,3,4,0 +4,27,9,1,3,12,3,3,0 +5,37,16.5,3,2,14,3,3,0 +3,42,13,2,3,17,4,4,0 +5,37,23,4,4,16,4,6,0 +5,37,23,1,3,14,3,5,0 +4,42,23,3,3,17,4,2,0 +4,27,6,1,3,20,4,4,0 +5,32,9,0,4,20,4,6,0 +4,27,2.5,0,4,17,4,4,0 +3,17.5,2.5,0,3,12,4,4,0 +5,22,2.5,0,3,12,2,2,0 +5,37,13,3,1,20,4,5,0 +5,27,16.5,2,3,12,4,4,0 +4,22,2.5,1,3,14,3,5,0 +4,42,16.5,4,3,9,2,2,0 +4,22,2.5,0,2,14,3,5,0 +4,42,23,2,3,14,4,2,0 +5,32,13,2,2,14,2,6,0 +4,32,13,2,3,17,4,5,0 +5,22,2.5,1,1,12,5,1,0 +5,22,2.5,0,4,16,4,2,0 +5,37,9,0,3,20,4,6,0 +5,42,23,2,3,14,3,5,0 +5,32,9,2,3,16,4,4,0 +5,22,6,0,1,12,3,2,0 +4,27,6,2,2,12,2,2,0 +4,22,2.5,0,2,12,3,4,0 +5,27,2.5,0,4,16,4,4,0 +5,32,16.5,3,4,14,2,4,0 +4,37,16.5,2,1,12,3,4,0 +5,22,2.5,0,3,12,3,3,0 +4,37,16.5,4,2,12,2,2,0 +3,27,9,1,3,17,4,1,0 +5,22,2.5,0,1,17,2,2,0 +5,22,2.5,0,1,14,3,4,0 +5,22,2.5,0,2,16,4,5,0 +5,27,6,0,2,16,3,5,0 +4,22,2.5,0,3,14,5,4,0 +5,27,2.5,0,1,17,4,6,0 +5,42,23,1,4,20,4,3,0 +4,17.5,0.5,0,2,14,3,1,0 +5,22,6,1,3,12,2,3,0 +4,22,6,2,2,9,2,3,0 +5,27,2.5,0,4,16,5,4,0 +4,22,2.5,1,2,12,3,2,0 +3,32,2.5,0,4,17,6,6,0 +5,37,16.5,3,4,14,4,6,0 +5,32,13,4,2,12,5,1,0 +3,42,23,3,4,16,3,5,0 +5,27,2.5,0,3,12,3,4,0 +5,32,2.5,1,3,20,4,4,0 +5,27,9,2,3,12,2,4,0 +3,27,2.5,0,2,14,3,3,0 +5,17.5,2.5,1,2,12,5,2,0 +4,37,16.5,3,2,17,4,5,0 +4,27,2.5,1,3,16,4,6,0 +5,22,2.5,1,3,14,3,5,0 +4,27,2.5,0,1,20,5,5,0 +5,22,2.5,0,3,14,5,5,0 +5,42,23,5.5,3,14,4,4,0 +5,42,23,4,3,14,3,2,0 +5,37,13,2,2,20,6,6,0 +5,27,13,2,3,14,4,5,0 +4,27,13,2,2,12,2,2,0 +5,37,23,3,2,12,4,4,0 +5,22,2.5,0,2,17,5,3,0 +5,27,6,1,2,12,2,4,0 +5,22,2.5,0,2,14,3,4,0 +5,37,13,2,3,16,4,4,0 +5,27,6,0,2,17,5,6,0 +5,27,0.5,0,3,12,3,4,0 +2,37,16.5,3,1,14,3,2,0 +5,37,23,2,3,20,4,4,0 +2,32,9,2,4,14,3,5,0 +5,32,13,2,4,20,4,5,0 +5,22,2.5,1,4,16,4,5,0 +5,22,2.5,0,3,20,4,4,0 +3,37,13,3,2,16,4,3,0 +3,17.5,2.5,1,1,9,3,3,0 +4,27,2.5,0,2,14,3,1,0 +1,27,6,1,3,14,3,4,0 +4,27,6,2,2,14,4,5,0 +2,42,23,2,2,14,3,4,0 +5,32,13,2,3,14,4,6,0 +4,22,2.5,1,3,14,3,4,0 +4,27,2.5,0,1,14,2,5,0 +4,22,2.5,0,3,20,6,6,0 +3,37,2.5,0,3,12,3,3,0 +5,27,2.5,0,3,17,4,4,0 +5,27,2.5,0,3,16,3,5,0 +4,27,6,1,2,20,4,2,0 +4,27,9,2,2,14,4,4,0 +4,27,2.5,0,3,17,4,4,0 +5,27,6,0,4,16,4,5,0 +5,42,23,5.5,3,12,3,2,0 +5,22,2.5,0,3,16,4,1,0 +5,22,0.5,0,3,14,2,2,0 +4,22,2.5,1,3,14,2,4,0 +5,22,2.5,1,4,12,3,4,0 +5,42,23,4,3,14,5,4,0 +5,27,6,0,4,14,4,4,0 +5,42,23,2,3,12,2,2,0 +4,32,13,3,3,16,4,2,0 +5,27,13,3,3,16,4,2,0 +5,27,9,1,2,14,4,5,0 +4,22,2.5,0,2,16,4,1,0 +5,17.5,2.5,0,4,12,3,5,0 +4,32,16.5,2,2,12,3,4,0 +5,27,9,1,3,12,3,5,0 +4,22,2.5,0,4,14,4,2,0 +5,22,2.5,1,2,12,3,2,0 +5,27,0.5,0,4,20,4,4,0 +5,37,16.5,3,3,14,5,5,0 +5,32,13,2,4,14,3,6,0 +4,22,0.5,0,2,16,3,1,0 +5,42,23,2,4,12,3,2,0 +5,22,2.5,2,2,14,3,5,0 +5,42,23,4,4,12,3,5,0 +4,27,6,0,3,12,3,4,0 +5,32,13,3,3,12,3,5,0 +5,32,13,4,2,14,4,4,0 +3,27,6,2,4,14,3,1,0 +4,22,2.5,0,3,16,5,5,0 +5,22,2.5,0,2,14,3,3,0 +5,32,13,2,3,17,4,3,0 +4,32,13,1,1,16,5,5,0 +5,22,2.5,0,2,14,3,1,0 +5,32,6,1,3,14,3,4,0 +4,22,2.5,0,2,16,2,4,0 diff --git a/statsmodels/datasets/fair/fair_pt.csv b/statsmodels/datasets/fair/fair_pt.csv new file mode 100644 index 0000000..03feba9 --- /dev/null +++ b/statsmodels/datasets/fair/fair_pt.csv @@ -0,0 +1,602 @@ +identifier,constant,sex,age,nmarried,nchildren,religious,education,occupation,rate_marriage,naffairs +4,1.0,1,37.0,10.0,0,3,18.0,7,4,0.0 +5,1.0,0,27.0,4.0,0,4,14.0,6,4,0.0 +11,1.0,0,32.0,15.0,1,1,12.0,1,4,0.0 +16,1.0,1,57.0,15.0,1,5,18.0,6,5,0.0 +23,1.0,1,22.0,0.75,0,2,17.0,6,3,0.0 +29,1.0,0,32.0,1.5,0,2,17.0,5,5,0.0 +44,1.0,0,22.0,0.75,0,2,12.0,1,3,0.0 +45,1.0,1,57.0,15.0,1,2,14.0,4,4,0.0 +47,1.0,0,32.0,15.0,1,4,16.0,1,2,0.0 +49,1.0,1,22.0,1.5,0,4,14.0,4,5,0.0 +50,1.0,1,37.0,15.0,1,2,20.0,7,2,0.0 +55,1.0,1,27.0,4.0,1,4,18.0,6,4,0.0 +64,1.0,1,47.0,15.0,1,5,17.0,6,4,0.0 +80,1.0,0,22.0,1.5,0,2,17.0,5,4,0.0 +86,1.0,0,27.0,4.0,0,4,14.0,5,4,0.0 +93,1.0,0,37.0,15.0,1,1,17.0,5,5,0.0 +108,1.0,0,37.0,15.0,1,2,18.0,4,3,0.0 +114,1.0,0,22.0,0.75,0,3,16.0,5,4,0.0 +115,1.0,0,22.0,1.5,0,2,16.0,5,5,0.0 +116,1.0,0,27.0,10.0,1,2,14.0,1,5,0.0 +123,1.0,0,22.0,1.5,0,2,16.0,5,5,0.0 +127,1.0,0,22.0,1.5,0,2,16.0,5,5,0.0 +129,1.0,0,27.0,10.0,1,4,16.0,5,4,0.0 +134,1.0,0,32.0,10.0,1,3,14.0,1,5,0.0 +137,1.0,1,37.0,4.0,1,2,20.0,6,4,0.0 +139,1.0,0,22.0,1.5,0,2,18.0,5,5,0.0 +147,1.0,0,27.0,7.0,0,4,16.0,1,5,0.0 +151,1.0,1,42.0,15.0,1,5,20.0,6,4,0.0 +153,1.0,1,27.0,4.0,1,3,16.0,5,5,0.0 +155,1.0,0,27.0,4.0,1,3,17.0,5,4,0.0 +162,1.0,1,42.0,15.0,1,4,20.0,6,3,0.0 +163,1.0,0,22.0,1.5,0,3,16.0,5,5,0.0 +165,1.0,1,27.0,0.417,0,4,17.0,6,4,0.0 +168,1.0,0,42.0,15.0,1,5,14.0,5,4,0.0 +170,1.0,1,32.0,4.0,1,1,18.0,6,4,0.0 +172,1.0,0,22.0,1.5,0,4,16.0,5,3,0.0 +184,1.0,0,42.0,15.0,1,3,12.0,1,4,0.0 +187,1.0,0,22.0,4.0,0,4,17.0,5,5,0.0 +192,1.0,1,22.0,1.5,1,1,14.0,3,5,0.0 +194,1.0,0,22.0,0.75,0,3,16.0,1,5,0.0 +210,1.0,1,32.0,10.0,1,5,20.0,6,5,0.0 +217,1.0,1,52.0,15.0,1,5,18.0,6,3,0.0 +220,1.0,0,22.0,0.417,0,5,14.0,1,4,0.0 +224,1.0,0,27.0,4.0,1,2,18.0,6,1,0.0 +227,1.0,0,32.0,7.0,1,5,17.0,5,3,0.0 +228,1.0,1,22.0,4.0,0,3,16.0,5,5,0.0 +239,1.0,0,27.0,7.0,1,4,18.0,6,5,0.0 +241,1.0,0,42.0,15.0,1,2,18.0,5,4,0.0 +245,1.0,1,27.0,1.5,1,4,16.0,3,5,0.0 +249,1.0,1,42.0,15.0,1,2,20.0,6,4,0.0 +262,1.0,0,22.0,0.75,0,5,14.0,3,5,0.0 +265,1.0,1,32.0,7.0,1,2,20.0,6,4,0.0 +267,1.0,1,27.0,4.0,1,5,20.0,6,5,0.0 +269,1.0,1,27.0,10.0,1,4,20.0,6,4,0.0 +271,1.0,1,22.0,4.0,0,1,18.0,5,5,0.0 +277,1.0,0,37.0,15.0,1,4,14.0,3,1,0.0 +290,1.0,1,22.0,1.5,1,5,16.0,4,4,0.0 +292,1.0,0,37.0,15.0,1,4,17.0,1,5,0.0 +293,1.0,0,27.0,0.75,0,4,17.0,5,4,0.0 +295,1.0,1,32.0,10.0,1,4,20.0,6,4,0.0 +299,1.0,0,47.0,15.0,1,5,14.0,7,2,0.0 +320,1.0,1,37.0,10.0,1,3,20.0,6,4,0.0 +321,1.0,0,22.0,0.75,0,2,16.0,5,5,0.0 +324,1.0,1,27.0,4.0,0,2,18.0,4,5,0.0 +334,1.0,1,32.0,7.0,0,4,20.0,6,4,0.0 +351,1.0,1,42.0,15.0,1,2,17.0,3,5,0.0 +355,1.0,1,37.0,10.0,1,4,20.0,6,4,0.0 +361,1.0,0,47.0,15.0,1,3,17.0,6,5,0.0 +362,1.0,0,22.0,1.5,0,5,16.0,5,5,0.0 +366,1.0,0,27.0,1.5,0,2,16.0,6,4,0.0 +370,1.0,0,27.0,4.0,0,3,17.0,5,5,0.0 +374,1.0,0,32.0,10.0,1,5,14.0,4,5,0.0 +378,1.0,0,22.0,0.125,0,2,12.0,5,5,0.0 +381,1.0,1,47.0,15.0,1,4,14.0,4,3,0.0 +382,1.0,1,32.0,15.0,1,1,14.0,5,5,0.0 +383,1.0,1,27.0,7.0,1,4,16.0,5,5,0.0 +384,1.0,0,22.0,1.5,1,3,16.0,5,5,0.0 +400,1.0,1,27.0,4.0,1,3,17.0,6,5,0.0 +403,1.0,0,22.0,1.5,0,3,16.0,5,5,0.0 +409,1.0,1,57.0,15.0,1,2,14.0,7,2,0.0 +412,1.0,1,17.5,1.5,1,3,18.0,6,5,0.0 +413,1.0,1,57.0,15.0,1,4,20.0,6,5,0.0 +416,1.0,0,22.0,0.75,0,2,16.0,3,4,0.0 +418,1.0,1,42.0,4.0,0,4,17.0,3,3,0.0 +422,1.0,0,22.0,1.5,1,4,12.0,1,5,0.0 +435,1.0,0,22.0,0.417,0,1,17.0,6,4,0.0 +439,1.0,0,32.0,15.0,1,4,17.0,5,5,0.0 +445,1.0,0,27.0,1.5,0,3,18.0,5,2,0.0 +447,1.0,0,22.0,1.5,1,3,14.0,1,5,0.0 +448,1.0,0,37.0,15.0,1,3,14.0,1,4,0.0 +449,1.0,0,32.0,15.0,1,4,14.0,3,4,0.0 +478,1.0,1,37.0,10.0,1,2,14.0,5,3,0.0 +482,1.0,1,37.0,10.0,1,4,16.0,5,4,0.0 +486,1.0,1,57.0,15.0,1,5,20.0,5,3,0.0 +489,1.0,1,27.0,0.417,0,1,16.0,3,4,0.0 +490,1.0,0,42.0,15.0,1,5,14.0,1,5,0.0 +491,1.0,1,57.0,15.0,1,3,16.0,6,1,0.0 +492,1.0,1,37.0,10.0,1,1,16.0,6,4,0.0 +503,1.0,1,37.0,15.0,1,3,17.0,5,5,0.0 +508,1.0,1,37.0,15.0,1,4,20.0,6,5,0.0 +509,1.0,0,27.0,10.0,1,5,14.0,1,5,0.0 +512,1.0,1,37.0,10.0,1,2,18.0,6,4,0.0 +515,1.0,0,22.0,0.125,0,4,12.0,4,5,0.0 +517,1.0,1,57.0,15.0,1,5,20.0,6,5,0.0 +532,1.0,0,37.0,15.0,1,4,18.0,6,4,0.0 +533,1.0,1,22.0,4.0,1,4,14.0,6,4,0.0 +535,1.0,1,27.0,7.0,1,4,18.0,5,4,0.0 +537,1.0,1,57.0,15.0,1,4,20.0,5,4,0.0 +538,1.0,1,32.0,15.0,1,3,14.0,6,3,0.0 +543,1.0,0,22.0,1.5,0,2,14.0,5,4,0.0 +547,1.0,0,32.0,7.0,1,4,17.0,1,5,0.0 +550,1.0,0,37.0,15.0,1,4,17.0,6,5,0.0 +558,1.0,0,32.0,1.5,0,5,18.0,5,5,0.0 +571,1.0,1,42.0,10.0,1,5,20.0,7,4,0.0 +578,1.0,0,27.0,7.0,0,3,16.0,5,4,0.0 +583,1.0,1,37.0,15.0,0,4,20.0,6,5,0.0 +586,1.0,1,37.0,15.0,1,4,14.0,3,2,0.0 +594,1.0,1,32.0,10.0,0,5,18.0,6,4,0.0 +597,1.0,0,22.0,0.75,0,4,16.0,1,5,0.0 +602,1.0,0,27.0,7.0,1,4,12.0,2,4,0.0 +603,1.0,0,27.0,7.0,1,2,16.0,2,5,0.0 +604,1.0,0,42.0,15.0,1,5,18.0,5,4,0.0 +612,1.0,1,42.0,15.0,1,4,17.0,5,3,0.0 +613,1.0,0,27.0,7.0,1,2,16.0,1,2,0.0 +621,1.0,0,22.0,1.5,0,3,16.0,5,5,0.0 +627,1.0,1,37.0,15.0,1,5,20.0,6,5,0.0 +630,1.0,0,22.0,0.125,0,2,14.0,4,5,0.0 +631,1.0,1,27.0,1.5,0,4,16.0,5,5,0.0 +632,1.0,1,32.0,1.5,0,2,18.0,6,5,0.0 +639,1.0,1,27.0,1.5,0,2,17.0,6,5,0.0 +645,1.0,0,27.0,10.0,1,4,16.0,1,3,0.0 +647,1.0,1,42.0,15.0,1,4,18.0,6,5,0.0 +648,1.0,0,27.0,1.5,0,2,16.0,6,5,0.0 +651,1.0,1,27.0,4.0,0,2,18.0,6,3,0.0 +655,1.0,0,32.0,10.0,1,3,14.0,5,3,0.0 +667,1.0,0,32.0,15.0,1,3,18.0,5,4,0.0 +670,1.0,0,22.0,0.75,0,2,18.0,6,5,0.0 +671,1.0,0,37.0,15.0,1,2,16.0,1,4,0.0 +673,1.0,1,27.0,4.0,1,4,20.0,5,5,0.0 +701,1.0,1,27.0,4.0,0,1,20.0,5,4,0.0 +705,1.0,0,27.0,10.0,1,2,12.0,1,4,0.0 +706,1.0,0,32.0,15.0,1,5,18.0,6,4,0.0 +709,1.0,1,27.0,7.0,1,5,12.0,5,3,0.0 +717,1.0,1,52.0,15.0,1,2,18.0,5,4,0.0 +719,1.0,1,27.0,4.0,0,3,20.0,6,3,0.0 +723,1.0,1,37.0,4.0,1,1,18.0,5,4,0.0 +724,1.0,1,27.0,4.0,1,4,14.0,5,4,0.0 +726,1.0,0,52.0,15.0,1,5,12.0,1,3,0.0 +734,1.0,0,57.0,15.0,1,4,16.0,6,4,0.0 +735,1.0,1,27.0,7.0,1,1,16.0,5,4,0.0 +736,1.0,1,37.0,7.0,1,4,20.0,6,3,0.0 +737,1.0,1,22.0,0.75,0,2,14.0,4,3,0.0 +739,1.0,1,32.0,4.0,1,2,18.0,5,3,0.0 +743,1.0,1,37.0,15.0,1,4,20.0,6,3,0.0 +745,1.0,1,22.0,0.75,1,2,14.0,4,3,0.0 +747,1.0,1,42.0,15.0,1,4,20.0,6,3,0.0 +751,1.0,0,52.0,15.0,1,5,17.0,1,1,0.0 +752,1.0,0,37.0,15.0,1,4,14.0,1,2,0.0 +754,1.0,1,27.0,7.0,1,4,14.0,5,3,0.0 +760,1.0,1,32.0,4.0,1,2,16.0,5,5,0.0 +763,1.0,0,27.0,4.0,1,2,18.0,6,5,0.0 +774,1.0,0,27.0,4.0,1,2,18.0,5,5,0.0 +776,1.0,1,37.0,15.0,1,5,18.0,6,5,0.0 +779,1.0,0,47.0,15.0,1,5,12.0,5,4,0.0 +784,1.0,0,32.0,10.0,1,3,17.0,1,4,0.0 +788,1.0,0,27.0,1.5,1,4,17.0,1,2,0.0 +794,1.0,0,57.0,15.0,1,2,18.0,5,2,0.0 +795,1.0,0,22.0,1.5,0,4,14.0,5,4,0.0 +798,1.0,1,42.0,15.0,1,3,14.0,3,4,0.0 +800,1.0,1,57.0,15.0,1,4,9.0,2,2,0.0 +803,1.0,1,57.0,15.0,1,4,20.0,6,5,0.0 +807,1.0,0,22.0,0.125,0,4,14.0,4,5,0.0 +812,1.0,0,32.0,10.0,1,4,14.0,1,5,0.0 +820,1.0,0,42.0,15.0,1,3,18.0,5,4,0.0 +823,1.0,0,27.0,1.5,0,2,18.0,6,5,0.0 +830,1.0,1,32.0,0.125,1,2,18.0,5,2,0.0 +843,1.0,0,27.0,4.0,0,3,16.0,5,4,0.0 +848,1.0,0,27.0,10.0,1,2,16.0,1,4,0.0 +851,1.0,0,32.0,7.0,1,4,16.0,1,3,0.0 +854,1.0,0,37.0,15.0,1,4,14.0,5,4,0.0 +856,1.0,0,42.0,15.0,1,5,17.0,6,2,0.0 +857,1.0,1,32.0,1.5,1,4,14.0,6,5,0.0 +859,1.0,0,32.0,4.0,1,3,17.0,5,3,0.0 +863,1.0,0,37.0,7.0,0,4,18.0,5,5,0.0 +865,1.0,0,22.0,0.417,1,3,14.0,3,5,0.0 +867,1.0,0,27.0,7.0,1,4,14.0,1,5,0.0 +870,1.0,1,27.0,0.75,0,3,16.0,5,5,0.0 +873,1.0,1,27.0,4.0,1,2,20.0,5,5,0.0 +875,1.0,1,32.0,10.0,1,4,16.0,4,5,0.0 +876,1.0,1,32.0,15.0,1,1,14.0,5,5,0.0 +877,1.0,1,22.0,0.75,0,3,17.0,4,5,0.0 +880,1.0,0,27.0,7.0,1,4,17.0,1,4,0.0 +903,1.0,1,27.0,0.417,1,4,20.0,5,4,0.0 +904,1.0,1,37.0,15.0,1,4,20.0,5,4,0.0 +905,1.0,0,37.0,15.0,1,2,14.0,1,3,0.0 +908,1.0,1,22.0,4.0,1,1,18.0,5,4,0.0 +909,1.0,1,37.0,15.0,1,4,17.0,5,3,0.0 +910,1.0,0,22.0,1.5,0,2,14.0,4,5,0.0 +912,1.0,1,52.0,15.0,1,4,14.0,6,2,0.0 +914,1.0,0,22.0,1.5,0,4,17.0,5,5,0.0 +915,1.0,1,32.0,4.0,1,5,14.0,3,5,0.0 +916,1.0,1,32.0,4.0,1,2,14.0,3,5,0.0 +920,1.0,0,22.0,1.5,0,3,16.0,6,5,0.0 +921,1.0,1,27.0,0.75,0,2,18.0,3,3,0.0 +925,1.0,0,22.0,7.0,1,2,14.0,5,2,0.0 +926,1.0,0,27.0,0.75,0,2,17.0,5,3,0.0 +929,1.0,0,37.0,15.0,1,4,12.0,1,2,0.0 +931,1.0,0,22.0,1.5,0,1,14.0,1,5,0.0 +945,1.0,0,37.0,10.0,0,2,12.0,4,4,0.0 +947,1.0,0,37.0,15.0,1,4,18.0,5,3,0.0 +949,1.0,0,42.0,15.0,1,3,12.0,3,3,0.0 +950,1.0,1,22.0,4.0,0,2,18.0,5,5,0.0 +961,1.0,1,52.0,7.0,1,2,20.0,6,2,0.0 +965,1.0,1,27.0,0.75,0,2,17.0,5,5,0.0 +966,1.0,0,27.0,4.0,0,2,17.0,4,5,0.0 +967,1.0,1,42.0,1.5,0,5,20.0,6,5,0.0 +987,1.0,1,22.0,1.5,0,4,17.0,6,5,0.0 +990,1.0,1,22.0,4.0,0,4,17.0,5,3,0.0 +992,1.0,0,22.0,4.0,1,1,14.0,5,4,0.0 +995,1.0,1,37.0,15.0,1,5,20.0,4,5,0.0 +1009,1.0,0,37.0,10.0,1,3,16.0,6,3,0.0 +1021,1.0,1,42.0,15.0,1,4,17.0,6,5,0.0 +1026,1.0,0,47.0,15.0,1,4,17.0,5,5,0.0 +1027,1.0,1,22.0,1.5,0,4,16.0,5,4,0.0 +1030,1.0,0,32.0,10.0,1,3,12.0,1,4,0.0 +1031,1.0,0,22.0,7.0,1,1,14.0,3,5,0.0 +1034,1.0,0,32.0,10.0,1,4,17.0,5,4,0.0 +1037,1.0,1,27.0,1.5,1,2,16.0,2,4,0.0 +1038,1.0,1,37.0,15.0,1,4,14.0,5,5,0.0 +1039,1.0,1,42.0,4.0,1,3,14.0,4,5,0.0 +1045,1.0,0,37.0,15.0,1,5,14.0,5,4,0.0 +1046,1.0,0,32.0,7.0,1,4,17.0,5,5,0.0 +1054,1.0,0,42.0,15.0,1,4,18.0,6,5,0.0 +1059,1.0,1,27.0,4.0,0,4,18.0,6,4,0.0 +1063,1.0,1,22.0,0.75,0,4,18.0,6,5,0.0 +1068,1.0,1,27.0,4.0,1,4,14.0,5,3,0.0 +1070,1.0,0,22.0,0.75,0,5,18.0,1,5,0.0 +1072,1.0,0,52.0,15.0,1,5,9.0,5,5,0.0 +1073,1.0,1,32.0,10.0,1,3,14.0,5,5,0.0 +1077,1.0,0,37.0,15.0,1,4,16.0,4,4,0.0 +1081,1.0,1,32.0,7.0,1,2,20.0,5,4,0.0 +1083,1.0,0,42.0,15.0,1,3,18.0,1,4,0.0 +1084,1.0,1,32.0,15.0,1,1,16.0,5,5,0.0 +1086,1.0,1,27.0,4.0,1,3,18.0,5,5,0.0 +1087,1.0,0,32.0,15.0,1,4,12.0,3,4,0.0 +1089,1.0,1,22.0,0.75,1,3,14.0,2,4,0.0 +1096,1.0,0,22.0,1.5,0,3,16.0,5,3,0.0 +1102,1.0,0,42.0,15.0,1,4,14.0,3,5,0.0 +1103,1.0,0,52.0,15.0,1,3,16.0,5,4,0.0 +1107,1.0,1,37.0,15.0,1,5,20.0,6,4,0.0 +1109,1.0,0,47.0,15.0,1,4,12.0,2,3,0.0 +1115,1.0,1,57.0,15.0,1,2,20.0,6,4,0.0 +1119,1.0,1,32.0,7.0,1,4,17.0,5,5,0.0 +1124,1.0,0,27.0,7.0,1,4,17.0,1,4,0.0 +1126,1.0,1,22.0,1.5,0,1,18.0,6,5,0.0 +1128,1.0,0,22.0,4.0,1,3,9.0,1,4,0.0 +1129,1.0,0,22.0,1.5,0,2,14.0,1,5,0.0 +1130,1.0,1,42.0,15.0,1,2,20.0,6,4,0.0 +1133,1.0,1,57.0,15.0,1,4,9.0,2,4,0.0 +1140,1.0,0,27.0,7.0,1,2,18.0,1,5,0.0 +1143,1.0,0,22.0,4.0,1,3,14.0,1,5,0.0 +1146,1.0,1,37.0,15.0,1,4,14.0,5,3,0.0 +1153,1.0,1,32.0,7.0,1,1,18.0,6,4,0.0 +1156,1.0,0,22.0,1.5,0,2,14.0,5,5,0.0 +1157,1.0,0,22.0,1.5,1,3,12.0,1,3,0.0 +1158,1.0,1,52.0,15.0,1,2,14.0,5,5,0.0 +1160,1.0,0,37.0,15.0,1,2,14.0,1,1,0.0 +1161,1.0,0,32.0,10.0,1,2,14.0,5,5,0.0 +1166,1.0,1,42.0,15.0,1,4,20.0,4,5,0.0 +1177,1.0,0,27.0,4.0,1,3,18.0,4,5,0.0 +1178,1.0,1,37.0,15.0,1,4,20.0,6,5,0.0 +1180,1.0,1,27.0,1.5,0,3,18.0,5,5,0.0 +1187,1.0,0,22.0,0.125,0,2,16.0,6,3,0.0 +1191,1.0,1,32.0,10.0,1,2,20.0,6,3,0.0 +1195,1.0,0,27.0,4.0,0,4,18.0,5,4,0.0 +1207,1.0,0,27.0,7.0,1,2,12.0,5,1,0.0 +1208,1.0,1,32.0,4.0,1,5,18.0,6,3,0.0 +1209,1.0,0,37.0,15.0,1,2,17.0,5,5,0.0 +1211,1.0,1,47.0,15.0,0,4,20.0,6,4,0.0 +1215,1.0,1,27.0,1.5,0,1,18.0,5,5,0.0 +1221,1.0,1,37.0,15.0,1,4,20.0,6,4,0.0 +1226,1.0,0,32.0,15.0,1,4,18.0,1,4,0.0 +1229,1.0,0,32.0,7.0,1,4,17.0,5,4,0.0 +1231,1.0,0,42.0,15.0,1,3,14.0,1,3,0.0 +1234,1.0,0,27.0,7.0,1,3,16.0,1,4,0.0 +1235,1.0,1,27.0,1.5,0,3,16.0,4,2,0.0 +1242,1.0,1,22.0,1.5,0,3,16.0,3,5,0.0 +1245,1.0,1,27.0,4.0,1,3,16.0,4,2,0.0 +1260,1.0,0,27.0,7.0,1,3,12.0,1,2,0.0 +1266,1.0,0,37.0,15.0,1,2,18.0,5,4,0.0 +1271,1.0,0,37.0,7.0,1,3,14.0,4,4,0.0 +1273,1.0,1,22.0,1.5,0,2,16.0,5,5,0.0 +1276,1.0,1,37.0,15.0,1,5,20.0,5,4,0.0 +1280,1.0,0,22.0,1.5,0,4,16.0,5,3,0.0 +1282,1.0,0,32.0,10.0,1,4,16.0,1,5,0.0 +1285,1.0,1,27.0,4.0,0,2,17.0,5,3,0.0 +1295,1.0,0,22.0,0.417,0,4,14.0,5,5,0.0 +1298,1.0,0,27.0,4.0,0,2,18.0,5,5,0.0 +1299,1.0,1,37.0,15.0,1,4,18.0,5,3,0.0 +1304,1.0,1,37.0,10.0,1,5,20.0,7,4,0.0 +1305,1.0,0,27.0,7.0,1,2,14.0,4,2,0.0 +1311,1.0,1,32.0,4.0,1,2,16.0,5,5,0.0 +1314,1.0,1,32.0,4.0,1,2,16.0,6,4,0.0 +1319,1.0,1,22.0,1.5,0,3,18.0,4,5,0.0 +1322,1.0,0,22.0,4.0,1,4,14.0,3,4,0.0 +1324,1.0,0,17.5,0.75,0,2,18.0,5,4,0.0 +1327,1.0,1,32.0,10.0,1,4,20.0,4,5,0.0 +1328,1.0,0,32.0,0.75,0,5,14.0,3,3,0.0 +1330,1.0,1,37.0,15.0,1,4,17.0,5,3,0.0 +1332,1.0,1,32.0,4.0,0,3,14.0,4,5,0.0 +1333,1.0,0,27.0,1.5,0,2,17.0,3,2,0.0 +1336,1.0,0,22.0,7.0,1,4,14.0,1,5,0.0 +1341,1.0,1,47.0,15.0,1,5,14.0,6,5,0.0 +1344,1.0,1,27.0,4.0,1,1,16.0,4,4,0.0 +1352,1.0,0,37.0,15.0,1,5,14.0,1,3,0.0 +1358,1.0,1,42.0,4.0,1,4,18.0,5,5,0.0 +1359,1.0,0,32.0,4.0,1,2,14.0,1,5,0.0 +1361,1.0,1,52.0,15.0,1,2,14.0,7,4,0.0 +1364,1.0,0,22.0,1.5,0,2,16.0,1,4,0.0 +1368,1.0,1,52.0,15.0,1,4,12.0,2,4,0.0 +1384,1.0,0,22.0,0.417,0,3,17.0,1,5,0.0 +1390,1.0,0,22.0,1.5,0,2,16.0,5,5,0.0 +1393,1.0,1,27.0,4.0,1,4,20.0,6,4,0.0 +1394,1.0,0,32.0,15.0,1,4,14.0,1,5,0.0 +1402,1.0,0,27.0,1.5,0,2,16.0,3,5,0.0 +1407,1.0,1,32.0,4.0,0,1,20.0,6,5,0.0 +1408,1.0,1,37.0,15.0,1,3,20.0,6,4,0.0 +1412,1.0,0,32.0,10.0,0,2,16.0,6,5,0.0 +1413,1.0,0,32.0,10.0,1,5,14.0,5,5,0.0 +1416,1.0,1,37.0,1.5,1,4,18.0,5,3,0.0 +1417,1.0,1,32.0,1.5,0,2,18.0,4,4,0.0 +1418,1.0,0,32.0,10.0,1,4,14.0,1,4,0.0 +1419,1.0,0,47.0,15.0,1,4,18.0,5,4,0.0 +1420,1.0,0,27.0,10.0,1,5,12.0,1,5,0.0 +1423,1.0,1,27.0,4.0,1,3,16.0,4,5,0.0 +1424,1.0,0,37.0,15.0,1,4,12.0,4,2,0.0 +1432,1.0,0,27.0,0.75,0,4,16.0,5,5,0.0 +1433,1.0,0,37.0,15.0,1,4,16.0,1,5,0.0 +1437,1.0,0,32.0,15.0,1,3,16.0,1,5,0.0 +1438,1.0,0,27.0,10.0,1,2,16.0,1,5,0.0 +1439,1.0,1,27.0,7.0,0,2,20.0,6,5,0.0 +1446,1.0,0,37.0,15.0,1,2,14.0,1,3,0.0 +1450,1.0,1,27.0,1.5,1,2,17.0,4,4,0.0 +1451,1.0,0,22.0,0.75,1,2,14.0,1,5,0.0 +1452,1.0,1,22.0,4.0,1,4,14.0,2,4,0.0 +1453,1.0,1,42.0,0.125,0,4,17.0,6,4,0.0 +1456,1.0,1,27.0,1.5,1,4,18.0,6,5,0.0 +1464,1.0,1,27.0,7.0,1,3,16.0,6,3,0.0 +1469,1.0,0,52.0,15.0,1,4,14.0,1,3,0.0 +1473,1.0,1,27.0,1.5,0,5,20.0,5,2,0.0 +1481,1.0,0,27.0,1.5,0,2,16.0,5,5,0.0 +1482,1.0,0,27.0,1.5,0,3,17.0,5,5,0.0 +1496,1.0,1,22.0,0.125,0,5,16.0,4,4,0.0 +1497,1.0,0,27.0,4.0,1,4,16.0,1,5,0.0 +1504,1.0,0,27.0,4.0,1,4,12.0,1,5,0.0 +1513,1.0,0,47.0,15.0,1,2,14.0,5,5,0.0 +1515,1.0,0,32.0,15.0,1,3,14.0,5,3,0.0 +1534,1.0,1,42.0,7.0,1,2,16.0,5,5,0.0 +1535,1.0,1,22.0,0.75,0,4,16.0,6,4,0.0 +1536,1.0,1,27.0,0.125,0,3,20.0,6,5,0.0 +1540,1.0,1,32.0,10.0,1,3,20.0,6,5,0.0 +1551,1.0,0,22.0,0.417,0,5,14.0,4,5,0.0 +1555,1.0,0,47.0,15.0,1,5,14.0,1,4,0.0 +1557,1.0,0,32.0,10.0,1,3,14.0,1,5,0.0 +1566,1.0,1,57.0,15.0,1,4,17.0,5,5,0.0 +1567,1.0,1,27.0,4.0,1,3,20.0,6,5,0.0 +1576,1.0,0,32.0,7.0,1,4,17.0,1,5,0.0 +1584,1.0,0,37.0,10.0,1,4,16.0,1,5,0.0 +1585,1.0,0,32.0,10.0,1,1,18.0,1,4,0.0 +1590,1.0,0,22.0,4.0,0,3,14.0,1,4,0.0 +1594,1.0,0,27.0,7.0,1,4,14.0,3,2,0.0 +1595,1.0,1,57.0,15.0,1,5,18.0,5,2,0.0 +1603,1.0,1,32.0,7.0,1,2,18.0,5,5,0.0 +1608,1.0,0,27.0,1.5,0,4,17.0,1,3,0.0 +1609,1.0,1,22.0,1.5,0,4,14.0,5,5,0.0 +1615,1.0,0,22.0,1.5,1,4,14.0,5,4,0.0 +1616,1.0,0,32.0,7.0,1,3,16.0,1,5,0.0 +1617,1.0,0,47.0,15.0,1,3,16.0,5,4,0.0 +1620,1.0,0,22.0,0.75,0,3,16.0,1,5,0.0 +1621,1.0,0,22.0,1.5,1,2,14.0,5,5,0.0 +1637,1.0,0,27.0,4.0,1,1,16.0,5,5,0.0 +1638,1.0,1,52.0,15.0,1,4,16.0,5,5,0.0 +1650,1.0,1,32.0,10.0,1,4,20.0,6,5,0.0 +1654,1.0,1,47.0,15.0,1,4,16.0,6,4,0.0 +1665,1.0,0,27.0,7.0,1,2,14.0,1,2,0.0 +1670,1.0,0,22.0,1.5,0,4,14.0,4,5,0.0 +1671,1.0,0,32.0,10.0,1,2,16.0,5,4,0.0 +1675,1.0,0,22.0,0.75,0,2,16.0,5,4,0.0 +1688,1.0,0,22.0,1.5,0,2,16.0,5,5,0.0 +1691,1.0,0,42.0,15.0,1,3,18.0,6,4,0.0 +1695,1.0,0,27.0,7.0,1,5,14.0,4,5,0.0 +1698,1.0,1,42.0,15.0,1,4,16.0,4,4,0.0 +1704,1.0,0,57.0,15.0,1,3,18.0,5,2,0.0 +1705,1.0,1,42.0,15.0,1,3,18.0,6,2,0.0 +1711,1.0,0,32.0,7.0,1,2,14.0,1,2,0.0 +1719,1.0,1,22.0,4.0,0,5,12.0,4,5,0.0 +1723,1.0,0,22.0,1.5,0,1,16.0,6,5,0.0 +1726,1.0,0,22.0,0.75,0,1,14.0,4,5,0.0 +1749,1.0,0,32.0,15.0,1,4,12.0,1,5,0.0 +1752,1.0,1,22.0,1.5,0,2,18.0,5,3,0.0 +1754,1.0,1,27.0,4.0,1,5,17.0,2,5,0.0 +1758,1.0,0,27.0,4.0,1,4,12.0,1,5,0.0 +1761,1.0,1,42.0,15.0,1,5,18.0,5,4,0.0 +1773,1.0,1,32.0,1.5,0,2,20.0,7,3,0.0 +1775,1.0,1,57.0,15.0,0,4,9.0,3,1,0.0 +1786,1.0,1,37.0,7.0,0,4,18.0,5,5,0.0 +1793,1.0,1,52.0,15.0,1,2,17.0,5,4,0.0 +1799,1.0,1,47.0,15.0,1,4,17.0,6,5,0.0 +1803,1.0,0,27.0,7.0,0,2,17.0,5,4,0.0 +1806,1.0,0,27.0,7.0,1,4,14.0,5,5,0.0 +1807,1.0,0,22.0,4.0,0,2,14.0,3,3,0.0 +1808,1.0,1,37.0,7.0,1,2,20.0,6,5,0.0 +1814,1.0,1,27.0,7.0,0,4,12.0,4,3,0.0 +1815,1.0,1,42.0,10.0,1,4,18.0,6,4,0.0 +1818,1.0,0,22.0,1.5,0,3,14.0,1,5,0.0 +1827,1.0,0,22.0,4.0,1,2,14.0,1,3,0.0 +1834,1.0,0,57.0,15.0,0,4,20.0,6,5,0.0 +1835,1.0,1,37.0,15.0,1,4,14.0,4,3,0.0 +1843,1.0,0,27.0,7.0,1,3,18.0,5,5,0.0 +1846,1.0,0,17.5,10.0,0,4,14.0,4,5,0.0 +1850,1.0,1,22.0,4.0,1,4,16.0,5,5,0.0 +1851,1.0,0,27.0,4.0,1,2,16.0,1,4,0.0 +1854,1.0,0,37.0,15.0,1,2,14.0,5,1,0.0 +1859,1.0,0,22.0,1.5,0,5,14.0,1,4,0.0 +1861,1.0,1,27.0,7.0,1,2,20.0,5,4,0.0 +1866,1.0,1,27.0,4.0,1,4,14.0,5,5,0.0 +1873,1.0,1,22.0,0.125,0,1,16.0,3,5,0.0 +1875,1.0,0,27.0,7.0,1,4,14.0,1,4,0.0 +1885,1.0,0,32.0,15.0,1,5,16.0,5,3,0.0 +1892,1.0,1,32.0,10.0,1,4,18.0,5,4,0.0 +1895,1.0,0,32.0,15.0,1,2,14.0,3,4,0.0 +1896,1.0,0,22.0,1.5,0,3,17.0,5,5,0.0 +1897,1.0,1,27.0,4.0,1,4,17.0,4,4,0.0 +1899,1.0,0,52.0,15.0,1,5,14.0,1,5,0.0 +1904,1.0,0,27.0,7.0,1,2,12.0,1,2,0.0 +1905,1.0,0,27.0,7.0,1,3,12.0,1,4,0.0 +1908,1.0,0,42.0,15.0,1,2,14.0,1,4,0.0 +1916,1.0,0,42.0,15.0,1,4,14.0,5,4,0.0 +1918,1.0,1,27.0,7.0,1,4,14.0,3,3,0.0 +1920,1.0,1,27.0,7.0,1,2,20.0,6,2,0.0 +1930,1.0,0,42.0,15.0,1,3,12.0,3,3,0.0 +1940,1.0,1,27.0,4.0,1,3,16.0,3,5,0.0 +1947,1.0,0,27.0,7.0,1,3,14.0,1,4,0.0 +1949,1.0,0,22.0,1.5,0,2,14.0,4,5,0.0 +1951,1.0,0,27.0,4.0,1,4,14.0,1,4,0.0 +1952,1.0,0,22.0,4.0,0,4,14.0,5,5,0.0 +1960,1.0,0,22.0,1.5,0,2,16.0,4,5,0.0 +9001,1.0,1,47.0,15.0,0,4,14.0,5,4,0.0 +9012,1.0,1,37.0,10.0,1,2,18.0,6,2,0.0 +9023,1.0,1,37.0,15.0,1,3,17.0,5,4,0.0 +9029,1.0,0,27.0,4.0,1,2,16.0,1,4,0.0 +6,1.0,1,27.0,1.5,0,3,18.0,4,4,3.0 +12,1.0,0,27.0,4.0,1,3,17.0,1,5,3.0 +43,1.0,1,37.0,15.0,1,5,18.0,6,2,7.0 +53,1.0,0,32.0,10.0,1,3,17.0,5,2,12.0 +67,1.0,1,22.0,0.125,0,4,16.0,5,5,1.0 +79,1.0,0,22.0,1.5,1,2,14.0,1,5,1.0 +122,1.0,1,37.0,15.0,1,4,14.0,5,2,12.0 +126,1.0,0,22.0,1.5,0,2,14.0,3,4,7.0 +133,1.0,1,37.0,15.0,1,2,18.0,6,4,2.0 +138,1.0,0,32.0,15.0,1,4,12.0,3,2,3.0 +154,1.0,0,37.0,15.0,1,4,14.0,4,2,1.0 +159,1.0,0,42.0,15.0,1,3,17.0,1,4,7.0 +174,1.0,0,42.0,15.0,1,5,9.0,4,1,12.0 +176,1.0,1,37.0,10.0,1,2,20.0,6,2,12.0 +181,1.0,0,32.0,15.0,1,3,14.0,1,2,12.0 +182,1.0,1,27.0,4.0,0,1,18.0,6,5,3.0 +186,1.0,1,37.0,10.0,1,2,18.0,7,3,7.0 +189,1.0,0,27.0,4.0,0,3,17.0,5,5,7.0 +204,1.0,1,42.0,15.0,1,4,16.0,5,5,1.0 +215,1.0,0,47.0,15.0,1,5,14.0,4,5,1.0 +232,1.0,0,27.0,4.0,1,3,18.0,5,4,7.0 +233,1.0,0,27.0,7.0,1,5,14.0,1,4,1.0 +252,1.0,1,27.0,1.5,1,3,17.0,5,4,12.0 +253,1.0,0,27.0,7.0,1,4,14.0,6,2,12.0 +274,1.0,0,42.0,15.0,1,4,16.0,5,4,3.0 +275,1.0,0,27.0,10.0,1,4,12.0,7,3,7.0 +287,1.0,1,27.0,1.5,0,2,18.0,5,2,1.0 +288,1.0,1,32.0,4.0,0,4,20.0,6,4,1.0 +325,1.0,0,27.0,7.0,1,3,14.0,1,3,1.0 +328,1.0,0,32.0,10.0,1,4,14.0,1,4,3.0 +344,1.0,1,27.0,4.0,1,2,18.0,7,2,3.0 +353,1.0,0,17.5,0.75,0,5,14.0,4,5,1.0 +354,1.0,0,32.0,10.0,1,4,18.0,1,5,1.0 +367,1.0,0,32.0,7.0,1,2,17.0,6,4,7.0 +369,1.0,1,37.0,15.0,1,2,20.0,6,4,7.0 +390,1.0,0,37.0,10.0,0,1,20.0,5,3,7.0 +392,1.0,0,32.0,10.0,1,2,16.0,5,5,12.0 +423,1.0,1,52.0,15.0,1,2,20.0,6,4,7.0 +432,1.0,0,42.0,15.0,1,1,12.0,1,3,7.0 +436,1.0,1,52.0,15.0,1,2,20.0,6,3,1.0 +483,1.0,1,37.0,15.0,1,3,18.0,6,5,2.0 +513,1.0,0,22.0,4.0,0,3,12.0,3,4,12.0 +516,1.0,1,27.0,7.0,1,1,18.0,6,2,12.0 +518,1.0,1,27.0,4.0,1,3,18.0,5,5,1.0 +520,1.0,1,47.0,15.0,1,4,17.0,6,5,12.0 +526,1.0,0,42.0,15.0,1,4,12.0,1,1,12.0 +528,1.0,1,27.0,4.0,0,3,14.0,3,4,7.0 +553,1.0,0,32.0,7.0,1,4,18.0,4,5,7.0 +576,1.0,1,32.0,0.417,1,3,12.0,3,4,1.0 +611,1.0,1,47.0,15.0,1,5,16.0,5,4,3.0 +625,1.0,1,37.0,15.0,1,2,20.0,5,4,12.0 +635,1.0,1,22.0,4.0,1,2,17.0,6,4,7.0 +646,1.0,1,27.0,4.0,0,2,14.0,4,5,1.0 +657,1.0,0,52.0,15.0,1,5,16.0,1,3,7.0 +659,1.0,1,27.0,4.0,0,3,14.0,3,3,1.0 +666,1.0,0,27.0,10.0,1,4,16.0,1,4,1.0 +679,1.0,1,32.0,7.0,1,3,14.0,7,4,1.0 +729,1.0,1,32.0,7.0,1,2,18.0,4,1,7.0 +755,1.0,1,22.0,1.5,0,1,14.0,3,2,3.0 +758,1.0,1,22.0,4.0,1,3,18.0,6,4,7.0 +770,1.0,1,42.0,15.0,1,4,20.0,6,4,7.0 +786,1.0,0,57.0,15.0,1,1,18.0,5,4,2.0 +797,1.0,0,32.0,4.0,1,3,18.0,5,2,7.0 +811,1.0,1,27.0,4.0,1,1,16.0,4,4,1.0 +834,1.0,1,32.0,7.0,1,4,16.0,1,4,7.0 +858,1.0,1,57.0,15.0,1,1,17.0,4,4,2.0 +885,1.0,0,42.0,15.0,1,4,14.0,5,2,7.0 +893,1.0,1,37.0,10.0,1,1,18.0,5,3,7.0 +927,1.0,1,42.0,15.0,1,3,17.0,6,1,3.0 +928,1.0,0,52.0,15.0,1,3,14.0,4,4,1.0 +933,1.0,0,27.0,7.0,1,3,17.0,5,3,2.0 +951,1.0,1,32.0,7.0,1,2,12.0,4,2,12.0 +968,1.0,1,22.0,4.0,0,4,14.0,2,5,1.0 +972,1.0,1,27.0,7.0,1,3,18.0,6,4,3.0 +975,1.0,0,37.0,15.0,1,1,18.0,5,5,12.0 +977,1.0,0,32.0,15.0,1,3,17.0,1,3,7.0 +981,1.0,0,27.0,7.0,0,2,17.0,5,5,7.0 +986,1.0,0,32.0,7.0,1,3,17.0,5,3,1.0 +1002,1.0,1,32.0,1.5,1,2,14.0,2,4,1.0 +1007,1.0,0,42.0,15.0,1,4,14.0,1,2,12.0 +1011,1.0,1,32.0,10.0,1,3,14.0,5,4,7.0 +1035,1.0,1,37.0,4.0,1,1,20.0,6,3,7.0 +1050,1.0,0,27.0,4.0,1,2,16.0,5,3,1.0 +1056,1.0,0,42.0,15.0,1,3,14.0,4,3,12.0 +1057,1.0,1,27.0,10.0,1,5,20.0,6,5,1.0 +1075,1.0,1,37.0,10.0,1,2,20.0,6,2,12.0 +1080,1.0,0,27.0,7.0,1,1,14.0,3,3,12.0 +1125,1.0,0,27.0,7.0,1,4,12.0,1,2,3.0 +1131,1.0,1,32.0,10.0,1,2,14.0,4,4,3.0 +1138,1.0,0,17.5,0.75,1,2,12.0,1,3,12.0 +1150,1.0,0,32.0,15.0,1,3,18.0,5,4,12.0 +1163,1.0,0,22.0,7.0,0,4,14.0,4,3,2.0 +1169,1.0,1,32.0,7.0,1,4,20.0,6,5,1.0 +1198,1.0,1,27.0,4.0,1,2,18.0,6,2,7.0 +1204,1.0,0,22.0,1.5,1,5,14.0,5,3,1.0 +1218,1.0,0,32.0,15.0,0,3,17.0,5,1,12.0 +1230,1.0,0,42.0,15.0,1,2,12.0,1,2,12.0 +1236,1.0,1,42.0,15.0,1,3,20.0,5,4,7.0 +1247,1.0,1,32.0,10.0,0,2,18.0,4,2,12.0 +1259,1.0,0,32.0,15.0,1,3,9.0,1,1,12.0 +1294,1.0,1,57.0,15.0,1,5,20.0,4,5,7.0 +1353,1.0,1,47.0,15.0,1,4,20.0,6,4,12.0 +1370,1.0,0,42.0,15.0,1,2,17.0,6,3,2.0 +1427,1.0,1,37.0,15.0,1,3,17.0,6,3,12.0 +1445,1.0,1,37.0,15.0,1,5,17.0,5,2,12.0 +1460,1.0,1,27.0,10.0,1,2,20.0,6,4,7.0 +1480,1.0,1,37.0,15.0,1,2,16.0,5,4,2.0 +1505,1.0,0,32.0,15.0,1,1,14.0,5,2,12.0 +1543,1.0,1,32.0,10.0,1,3,17.0,6,3,7.0 +1548,1.0,1,37.0,15.0,1,4,18.0,5,1,2.0 +1550,1.0,0,27.0,1.5,0,2,17.0,5,5,7.0 +1561,1.0,0,47.0,15.0,1,2,17.0,5,2,3.0 +1564,1.0,1,37.0,15.0,1,2,17.0,5,4,12.0 +1573,1.0,0,27.0,4.0,0,2,14.0,5,5,12.0 +1575,1.0,0,27.0,10.0,1,4,14.0,1,5,2.0 +1599,1.0,0,22.0,4.0,1,3,16.0,1,3,1.0 +1622,1.0,1,52.0,7.0,0,4,16.0,5,5,12.0 +1629,1.0,0,27.0,4.0,1,1,16.0,3,5,2.0 +1664,1.0,0,37.0,15.0,1,2,17.0,6,4,7.0 +1669,1.0,0,27.0,4.0,0,1,17.0,3,1,2.0 +1674,1.0,0,17.5,0.75,1,2,12.0,3,5,12.0 +1682,1.0,0,32.0,15.0,1,5,18.0,5,4,7.0 +1685,1.0,0,22.0,4.0,0,1,16.0,3,5,7.0 +1697,1.0,1,32.0,4.0,1,4,18.0,6,4,2.0 +1716,1.0,0,22.0,1.5,1,3,18.0,5,2,1.0 +1730,1.0,0,42.0,15.0,1,2,17.0,5,4,3.0 +1731,1.0,1,32.0,7.0,1,4,16.0,4,4,1.0 +1732,1.0,1,37.0,15.0,0,3,14.0,6,2,12.0 +1743,1.0,1,42.0,15.0,1,3,16.0,6,3,1.0 +1751,1.0,1,27.0,4.0,1,1,18.0,5,4,1.0 +1757,1.0,1,37.0,15.0,1,4,20.0,7,3,2.0 +1763,1.0,1,37.0,15.0,1,3,20.0,6,4,7.0 +1766,1.0,1,22.0,1.5,0,2,12.0,3,3,3.0 +1772,1.0,1,32.0,4.0,1,3,20.0,6,2,3.0 +1776,1.0,1,32.0,15.0,1,5,20.0,6,5,2.0 +1782,1.0,0,52.0,15.0,1,1,18.0,5,5,12.0 +1784,1.0,1,47.0,15.0,0,1,18.0,6,5,12.0 +1791,1.0,0,32.0,15.0,1,4,16.0,4,4,3.0 +1831,1.0,0,32.0,15.0,1,3,14.0,3,2,7.0 +1840,1.0,0,27.0,7.0,1,4,16.0,1,2,7.0 +1844,1.0,1,42.0,15.0,1,3,18.0,6,2,12.0 +1856,1.0,0,42.0,15.0,1,2,14.0,3,2,7.0 +1876,1.0,1,27.0,7.0,1,2,17.0,5,4,12.0 +1929,1.0,1,32.0,10.0,1,4,14.0,4,3,3.0 +1935,1.0,1,47.0,15.0,1,3,16.0,4,2,7.0 +1938,1.0,1,22.0,1.5,1,1,12.0,2,5,1.0 +1941,1.0,0,32.0,10.0,1,2,18.0,5,4,7.0 +1954,1.0,1,32.0,10.0,1,2,17.0,6,5,2.0 +1959,1.0,1,22.0,7.0,1,3,18.0,6,2,2.0 +9010,1.0,0,32.0,15.0,1,3,14.0,1,5,1.0 diff --git a/statsmodels/datasets/fair/src/1978ADAT.asc b/statsmodels/datasets/fair/src/1978ADAT.asc new file mode 100644 index 0000000..295e7f4 --- /dev/null +++ b/statsmodels/datasets/fair/src/1978ADAT.asc @@ -0,0 +1,6984 @@ +PT data: 15 variables per line; they are: +identifier, not used, constant, z1, z2, z3, z4, z5, z6, not used, z7, + z8, yPT, not used, not used + +RB data: 14 variables per line; they are: +identifier, constant, v1, v2, v3, v4, v5, v6, not used, v7, v8, yRB, + not used, not used + +See Table 1 in the article for the notation. + +BEGIN PT data (601 observations): + + 4 0 1. 1 37.0 10.000 0 3 18. 40.0 7 4 0. 0. 1. + 5 0 1. 0 27.0 4.000 0 4 14. 20.0 6 4 0. 0. 1. + 11 0 1. 0 32.0 15.000 1 1 12. 12.5 1 4 0. 0. 1. + 16 0 1. 1 57.0 15.000 1 5 18. 12.5 6 5 0. 0. 1. + 23 0 1. 1 22.0 0.750 0 2 17. 7.5 6 3 0. 0. 1. + 29 0 1. 0 32.0 1.500 0 2 17. 7.5 5 5 0. 0. 1. + 44 0 1. 0 22.0 0.750 0 2 12. 12.5 1 3 0. 0. 1. + 45 0 1. 1 57.0 15.000 1 2 14. 20.0 4 4 0. 0. 1. + 47 0 1. 0 32.0 15.000 1 4 16. 20.0 1 2 0. 0. 1. + 49 0 1. 1 22.0 1.500 0 4 14. 12.5 4 5 0. 0. 1. + 50 0 1. 1 37.0 15.000 1 2 20. 20.0 7 2 0. 0. 1. + 55 0 1. 1 27.0 4.000 1 4 18. 12.5 6 4 0. 0. 1. + 64 0 1. 1 47.0 15.000 1 5 17. 12.5 6 4 0. 0. 1. + 80 0 1. 0 22.0 1.500 0 2 17. 12.5 5 4 0. 0. 1. + 86 0 1. 0 27.0 4.000 0 4 14. 7.5 5 4 0. 0. 1. + 93 0 1. 0 37.0 15.000 1 1 17. 20.0 5 5 0. 0. 1. + 108 0 1. 0 37.0 15.000 1 2 18. 20.0 4 3 0. 0. 1. + 114 0 1. 0 22.0 0.750 0 3 16. 7.5 5 4 0. 0. 1. + 115 0 1. 0 22.0 1.500 0 2 16. 7.5 5 5 0. 0. 1. + 116 0 1. 0 27.0 10.000 1 2 14. 7.5 1 5 0. 0. 1. + 123 0 1. 0 22.0 1.500 0 2 16. 12.5 5 5 0. 0. 1. + 127 0 1. 0 22.0 1.500 0 2 16. 7.5 5 5 0. 0. 1. + 129 0 1. 0 27.0 10.000 1 4 16. 20.0 5 4 0. 0. 1. + 134 0 1. 0 32.0 10.000 1 3 14. 7.5 1 5 0. 0. 1. + 137 0 1. 1 37.0 4.000 1 2 20. 20.0 6 4 0. 0. 1. + 139 0 1. 0 22.0 1.500 0 2 18. 12.5 5 5 0. 0. 1. + 147 0 1. 0 27.0 7.000 0 4 16. 12.5 1 5 0. 0. 1. + 151 0 1. 1 42.0 15.000 1 5 20. 12.5 6 4 0. 0. 1. + 153 0 1. 1 27.0 4.000 1 3 16. 12.5 5 5 0. 0. 1. + 155 0 1. 0 27.0 4.000 1 3 17. 12.5 5 4 0. 0. 1. + 162 0 1. 1 42.0 15.000 1 4 20. 20.0 6 3 0. 0. 1. + 163 0 1. 0 22.0 1.500 0 3 16. 12.5 5 5 0. 0. 1. + 165 0 1. 1 27.0 0.417 0 4 17. 7.5 6 4 0. 0. 1. + 168 0 1. 0 42.0 15.000 1 5 14. 20.0 5 4 0. 0. 1. + 170 0 1. 1 32.0 4.000 1 1 18. 20.0 6 4 0. 0. 1. + 172 0 1. 0 22.0 1.500 0 4 16. 7.5 5 3 0. 0. 1. + 184 0 1. 0 42.0 15.000 1 3 12. 20.0 1 4 0. 0. 1. + 187 0 1. 0 22.0 4.000 0 4 17. 20.0 5 5 0. 0. 1. + 192 0 1. 1 22.0 1.500 1 1 14. 7.5 3 5 0. 0. 1. + 194 0 1. 0 22.0 0.750 0 3 16. 7.5 1 5 0. 0. 1. + 210 0 1. 1 32.0 10.000 1 5 20. 12.5 6 5 0. 0. 1. + 217 0 1. 1 52.0 15.000 1 5 18. 7.5 6 3 0. 0. 1. + 220 0 1. 0 22.0 0.417 0 5 14. 12.5 1 4 0. 0. 1. + 224 0 1. 0 27.0 4.000 1 2 18. 4.0 6 1 0. 0. 1. + 227 0 1. 0 32.0 7.000 1 5 17. 12.5 5 3 0. 0. 1. + 228 0 1. 1 22.0 4.000 0 3 16. 7.5 5 5 0. 0. 1. + 239 0 1. 0 27.0 7.000 1 4 18. 40.0 6 5 0. 0. 1. + 241 0 1. 0 42.0 15.000 1 2 18. 20.0 5 4 0. 0. 1. + 245 0 1. 1 27.0 1.500 1 4 16. 7.5 3 5 0. 0. 1. + 249 0 1. 1 42.0 15.000 1 2 20. 20.0 6 4 0. 0. 1. + 262 0 1. 0 22.0 0.750 0 5 14. 20.0 3 5 0. 0. 1. + 265 0 1. 1 32.0 7.000 1 2 20. 20.0 6 4 0. 0. 1. + 267 0 1. 1 27.0 4.000 1 5 20. 7.5 6 5 0. 0. 1. + 269 0 1. 1 27.0 10.000 1 4 20. 7.5 6 4 0. 0. 1. + 271 0 1. 1 22.0 4.000 0 1 18. 20.0 5 5 0. 0. 1. + 277 0 1. 0 37.0 15.000 1 4 14. 12.5 3 1 0. 0. 1. + 290 0 1. 1 22.0 1.500 1 5 16. 20.0 4 4 0. 0. 1. + 292 0 1. 0 37.0 15.000 1 4 17. 20.0 1 5 0. 0. 1. + 293 0 1. 0 27.0 0.750 0 4 17. 12.5 5 4 0. 0. 1. + 295 0 1. 1 32.0 10.000 1 4 20. 12.5 6 4 0. 0. 1. + 299 0 1. 0 47.0 15.000 1 5 14. 40.0 7 2 0. 0. 1. + 320 0 1. 1 37.0 10.000 1 3 20. 40.0 6 4 0. 0. 1. + 321 0 1. 0 22.0 0.750 0 2 16. 7.5 5 5 0. 0. 1. + 324 0 1. 1 27.0 4.000 0 2 18. 12.5 4 5 0. 0. 1. + 334 0 1. 1 32.0 7.000 0 4 20. 7.5 6 4 0. 0. 1. + 351 0 1. 1 42.0 15.000 1 2 17. 40.0 3 5 0. 0. 1. + 355 0 1. 1 37.0 10.000 1 4 20. 7.5 6 4 0. 0. 1. + 361 0 1. 0 47.0 15.000 1 3 17. 20.0 6 5 0. 0. 1. + 362 0 1. 0 22.0 1.500 0 5 16. 7.5 5 5 0. 0. 1. + 366 0 1. 0 27.0 1.500 0 2 16. 20.0 6 4 0. 0. 1. + 370 0 1. 0 27.0 4.000 0 3 17. 7.5 5 5 0. 0. 1. + 374 0 1. 0 32.0 10.000 1 5 14. 12.5 4 5 0. 0. 1. + 378 0 1. 0 22.0 0.125 0 2 12. 7.5 5 5 0. 0. 1. + 381 0 1. 1 47.0 15.000 1 4 14. 20.0 4 3 0. 0. 1. + 382 0 1. 1 32.0 15.000 1 1 14. 40.0 5 5 0. 0. 1. + 383 0 1. 1 27.0 7.000 1 4 16. 12.5 5 5 0. 0. 1. + 384 0 1. 0 22.0 1.500 1 3 16. 7.5 5 5 0. 0. 1. + 400 0 1. 1 27.0 4.000 1 3 17. 7.5 6 5 0. 0. 1. + 403 0 1. 0 22.0 1.500 0 3 16. 7.5 5 5 0. 0. 1. + 409 0 1. 1 57.0 15.000 1 2 14. 20.0 7 2 0. 0. 1. + 412 0 1. 1 17.5 1.500 1 3 18. 20.0 6 5 0. 0. 1. + 413 0 1. 1 57.0 15.000 1 4 20. 40.0 6 5 0. 0. 1. + 416 0 1. 0 22.0 0.750 0 2 16. 20.0 3 4 0. 0. 1. + 418 0 1. 1 42.0 4.000 0 4 17. 12.5 3 3 0. 0. 1. + 422 0 1. 0 22.0 1.500 1 4 12. 12.5 1 5 0. 0. 1. + 435 0 1. 0 22.0 0.417 0 1 17. 4.0 6 4 0. 0. 1. + 439 0 1. 0 32.0 15.000 1 4 17. 12.5 5 5 0. 0. 1. + 445 0 1. 0 27.0 1.500 0 3 18. 12.5 5 2 0. 0. 1. + 447 0 1. 0 22.0 1.500 1 3 14. 7.5 1 5 0. 0. 1. + 448 0 1. 0 37.0 15.000 1 3 14. 40.0 1 4 0. 0. 1. + 449 0 1. 0 32.0 15.000 1 4 14. 20.0 3 4 0. 0. 1. + 478 0 1. 1 37.0 10.000 1 2 14. 12.5 5 3 0. 0. 1. + 482 0 1. 1 37.0 10.000 1 4 16. 12.5 5 4 0. 0. 1. + 486 0 1. 1 57.0 15.000 1 5 20. 12.5 5 3 0. 0. 1. + 489 0 1. 1 27.0 0.417 0 1 16. 7.5 3 4 0. 0. 1. + 490 0 1. 0 42.0 15.000 1 5 14. 12.5 1 5 0. 0. 1. + 491 0 1. 1 57.0 15.000 1 3 16. 20.0 6 1 0. 0. 1. + 492 0 1. 1 37.0 10.000 1 1 16. 7.5 6 4 0. 0. 1. + 503 0 1. 1 37.0 15.000 1 3 17. 40.0 5 5 0. 0. 1. + 508 0 1. 1 37.0 15.000 1 4 20. 20.0 6 5 0. 0. 1. + 509 0 1. 0 27.0 10.000 1 5 14. 12.5 1 5 0. 0. 1. + 512 0 1. 1 37.0 10.000 1 2 18. 20.0 6 4 0. 0. 1. + 515 0 1. 0 22.0 0.125 0 4 12. 12.5 4 5 0. 0. 1. + 517 0 1. 1 57.0 15.000 1 5 20. 40.0 6 5 0. 0. 1. + 532 0 1. 0 37.0 15.000 1 4 18. 40.0 6 4 0. 0. 1. + 533 0 1. 1 22.0 4.000 1 4 14. 7.5 6 4 0. 0. 1. + 535 0 1. 1 27.0 7.000 1 4 18. 7.5 5 4 0. 0. 1. + 537 0 1. 1 57.0 15.000 1 4 20. 40.0 5 4 0. 0. 1. + 538 0 1. 1 32.0 15.000 1 3 14. 12.5 6 3 0. 0. 1. + 543 0 1. 0 22.0 1.500 0 2 14. 12.5 5 4 0. 0. 1. + 547 0 1. 0 32.0 7.000 1 4 17. 40.0 1 5 0. 0. 1. + 550 0 1. 0 37.0 15.000 1 4 17. 40.0 6 5 0. 0. 1. + 558 0 1. 0 32.0 1.500 0 5 18. 40.0 5 5 0. 0. 1. + 571 0 1. 1 42.0 10.000 1 5 20. 40.0 7 4 0. 0. 1. + 578 0 1. 0 27.0 7.000 0 3 16. 12.5 5 4 0. 0. 1. + 583 0 1. 1 37.0 15.000 0 4 20. 40.0 6 5 0. 0. 1. + 586 0 1. 1 37.0 15.000 1 4 14. 12.5 3 2 0. 0. 1. + 594 0 1. 1 32.0 10.000 0 5 18. 20.0 6 4 0. 0. 1. + 597 0 1. 0 22.0 0.750 0 4 16. 7.5 1 5 0. 0. 1. + 602 0 1. 0 27.0 7.000 1 4 12. 7.5 2 4 0. 0. 1. + 603 0 1. 0 27.0 7.000 1 2 16. 12.5 2 5 0. 0. 1. + 604 0 1. 0 42.0 15.000 1 5 18. 40.0 5 4 0. 0. 1. + 612 0 1. 1 42.0 15.000 1 4 17. 20.0 5 3 0. 0. 1. + 613 0 1. 0 27.0 7.000 1 2 16. 20.0 1 2 0. 0. 1. + 621 0 1. 0 22.0 1.500 0 3 16. 12.5 5 5 0. 0. 1. + 627 0 1. 1 37.0 15.000 1 5 20. 40.0 6 5 0. 0. 1. + 630 0 1. 0 22.0 0.125 0 2 14. 12.5 4 5 0. 0. 1. + 631 0 1. 1 27.0 1.500 0 4 16. 7.5 5 5 0. 0. 1. + 632 0 1. 1 32.0 1.500 0 2 18. 20.0 6 5 0. 0. 1. + 639 0 1. 1 27.0 1.500 0 2 17. 7.5 6 5 0. 0. 1. + 645 0 1. 0 27.0 10.000 1 4 16. 12.5 1 3 0. 0. 1. + 647 0 1. 1 42.0 15.000 1 4 18. 12.5 6 5 0. 0. 1. + 648 0 1. 0 27.0 1.500 0 2 16. 7.5 6 5 0. 0. 1. + 651 0 1. 1 27.0 4.000 0 2 18. 12.5 6 3 0. 0. 1. + 655 0 1. 0 32.0 10.000 1 3 14. 7.5 5 3 0. 0. 1. + 667 0 1. 0 32.0 15.000 1 3 18. 20.0 5 4 0. 0. 1. + 670 0 1. 0 22.0 0.750 0 2 18. 4.0 6 5 0. 0. 1. + 671 0 1. 0 37.0 15.000 1 2 16. 7.5 1 4 0. 0. 1. + 673 0 1. 1 27.0 4.000 1 4 20. 12.5 5 5 0. 0. 1. + 701 0 1. 1 27.0 4.000 0 1 20. 20.0 5 4 0. 0. 1. + 705 0 1. 0 27.0 10.000 1 2 12. 7.5 1 4 0. 0. 1. + 706 0 1. 0 32.0 15.000 1 5 18. 20.0 6 4 0. 0. 1. + 709 0 1. 1 27.0 7.000 1 5 12. 7.5 5 3 0. 0. 1. + 717 0 1. 1 52.0 15.000 1 2 18. 12.5 5 4 0. 0. 1. + 719 0 1. 1 27.0 4.000 0 3 20. 12.5 6 3 0. 0. 1. + 723 0 1. 1 37.0 4.000 1 1 18. 20.0 5 4 0. 0. 1. + 724 0 1. 1 27.0 4.000 1 4 14. 7.5 5 4 0. 0. 1. + 726 0 1. 0 52.0 15.000 1 5 12. 12.5 1 3 0. 0. 1. + 734 0 1. 0 57.0 15.000 1 4 16. 20.0 6 4 0. 0. 1. + 735 0 1. 1 27.0 7.000 1 1 16. 20.0 5 4 0. 0. 1. + 736 0 1. 1 37.0 7.000 1 4 20. 20.0 6 3 0. 0. 1. + 737 0 1. 1 22.0 0.750 0 2 14. 12.5 4 3 0. 0. 1. + 739 0 1. 1 32.0 4.000 1 2 18. 7.5 5 3 0. 0. 1. + 743 0 1. 1 37.0 15.000 1 4 20. 7.5 6 3 0. 0. 1. + 745 0 1. 1 22.0 0.750 1 2 14. 7.5 4 3 0. 0. 1. + 747 0 1. 1 42.0 15.000 1 4 20. 20.0 6 3 0. 0. 1. + 751 0 1. 0 52.0 15.000 1 5 17. 12.5 1 1 0. 0. 1. + 752 0 1. 0 37.0 15.000 1 4 14. 40.0 1 2 0. 0. 1. + 754 0 1. 1 27.0 7.000 1 4 14. 12.5 5 3 0. 0. 1. + 760 0 1. 1 32.0 4.000 1 2 16. 7.5 5 5 0. 0. 1. + 763 0 1. 0 27.0 4.000 1 2 18. 12.5 6 5 0. 0. 1. + 774 0 1. 0 27.0 4.000 1 2 18. 7.5 5 5 0. 0. 1. + 776 0 1. 1 37.0 15.000 1 5 18. 7.5 6 5 0. 0. 1. + 779 0 1. 0 47.0 15.000 1 5 12. 12.5 5 4 0. 0. 1. + 784 0 1. 0 32.0 10.000 1 3 17. 12.5 1 4 0. 0. 1. + 788 0 1. 0 27.0 1.500 1 4 17. 7.5 1 2 0. 0. 1. + 794 0 1. 0 57.0 15.000 1 2 18. 20.0 5 2 0. 0. 1. + 795 0 1. 0 22.0 1.500 0 4 14. 7.5 5 4 0. 0. 1. + 798 0 1. 1 42.0 15.000 1 3 14. 12.5 3 4 0. 0. 1. + 800 0 1. 1 57.0 15.000 1 4 9. 7.5 2 2 0. 0. 1. + 803 0 1. 1 57.0 15.000 1 4 20. 40.0 6 5 0. 0. 1. + 807 0 1. 0 22.0 0.125 0 4 14. 12.5 4 5 0. 0. 1. + 812 0 1. 0 32.0 10.000 1 4 14. 20.0 1 5 0. 0. 1. + 820 0 1. 0 42.0 15.000 1 3 18. 20.0 5 4 0. 0. 1. + 823 0 1. 0 27.0 1.500 0 2 18. 20.0 6 5 0. 0. 1. + 830 0 1. 1 32.0 0.125 1 2 18. 12.5 5 2 0. 0. 1. + 843 0 1. 0 27.0 4.000 0 3 16. 20.0 5 4 0. 0. 1. + 848 0 1. 0 27.0 10.000 1 2 16. 12.5 1 4 0. 0. 1. + 851 0 1. 0 32.0 7.000 1 4 16. 40.0 1 3 0. 0. 1. + 854 0 1. 0 37.0 15.000 1 4 14. 40.0 5 4 0. 0. 1. + 856 0 1. 0 42.0 15.000 1 5 17. 12.5 6 2 0. 0. 1. + 857 0 1. 1 32.0 1.500 1 4 14. 12.5 6 5 0. 0. 1. + 859 0 1. 0 32.0 4.000 1 3 17. 12.5 5 3 0. 0. 1. + 863 0 1. 0 37.0 7.000 0 4 18. 12.5 5 5 0. 0. 1. + 865 0 1. 0 22.0 0.417 1 3 14. 7.5 3 5 0. 0. 1. + 867 0 1. 0 27.0 7.000 1 4 14. 12.5 1 5 0. 0. 1. + 870 0 1. 1 27.0 0.750 0 3 16. 12.5 5 5 0. 0. 1. + 873 0 1. 1 27.0 4.000 1 2 20. 40.0 5 5 0. 0. 1. + 875 0 1. 1 32.0 10.000 1 4 16. 7.5 4 5 0. 0. 1. + 876 0 1. 1 32.0 15.000 1 1 14. 12.5 5 5 0. 0. 1. + 877 0 1. 1 22.0 0.750 0 3 17. 7.5 4 5 0. 0. 1. + 880 0 1. 0 27.0 7.000 1 4 17. 20.0 1 4 0. 0. 1. + 903 0 1. 1 27.0 0.417 1 4 20. 12.5 5 4 0. 0. 1. + 904 0 1. 1 37.0 15.000 1 4 20. 40.0 5 4 0. 0. 1. + 905 0 1. 0 37.0 15.000 1 2 14. 12.5 1 3 0. 0. 1. + 908 0 1. 1 22.0 4.000 1 1 18. 7.5 5 4 0. 0. 1. + 909 0 1. 1 37.0 15.000 1 4 17. 20.0 5 3 0. 0. 1. + 910 0 1. 0 22.0 1.500 0 2 14. 12.5 4 5 0. 0. 1. + 912 0 1. 1 52.0 15.000 1 4 14. 20.0 6 2 0. 0. 1. + 914 0 1. 0 22.0 1.500 0 4 17. 12.5 5 5 0. 0. 1. + 915 0 1. 1 32.0 4.000 1 5 14. 20.0 3 5 0. 0. 1. + 916 0 1. 1 32.0 4.000 1 2 14. 20.0 3 5 0. 0. 1. + 920 0 1. 0 22.0 1.500 0 3 16. 12.5 6 5 0. 0. 1. + 921 0 1. 1 27.0 0.750 0 2 18. 12.5 3 3 0. 0. 1. + 925 0 1. 0 22.0 7.000 1 2 14. 7.5 5 2 0. 0. 1. + 926 0 1. 0 27.0 0.750 0 2 17. 7.5 5 3 0. 0. 1. + 929 0 1. 0 37.0 15.000 1 4 12. 20.0 1 2 0. 0. 1. + 931 0 1. 0 22.0 1.500 0 1 14. 4.0 1 5 0. 0. 1. + 945 0 1. 0 37.0 10.000 0 2 12. 12.5 4 4 0. 0. 1. + 947 0 1. 0 37.0 15.000 1 4 18. 20.0 5 3 0. 0. 1. + 949 0 1. 0 42.0 15.000 1 3 12. 20.0 3 3 0. 0. 1. + 950 0 1. 1 22.0 4.000 0 2 18. 7.5 5 5 0. 0. 1. + 961 0 1. 1 52.0 7.000 1 2 20. 20.0 6 2 0. 0. 1. + 965 0 1. 1 27.0 0.750 0 2 17. 12.5 5 5 0. 0. 1. + 966 0 1. 0 27.0 4.000 0 2 17. 12.5 4 5 0. 0. 1. + 967 0 1. 1 42.0 1.500 0 5 20. 12.5 6 5 0. 0. 1. + 987 0 1. 1 22.0 1.500 0 4 17. 12.5 6 5 0. 0. 1. + 990 0 1. 1 22.0 4.000 0 4 17. 12.5 5 3 0. 0. 1. + 992 0 1. 0 22.0 4.000 1 1 14. 7.5 5 4 0. 0. 1. + 995 0 1. 1 37.0 15.000 1 5 20. 12.5 4 5 0. 0. 1. + 1009 0 1. 0 37.0 10.000 1 3 16. 20.0 6 3 0. 0. 1. + 1021 0 1. 1 42.0 15.000 1 4 17. 20.0 6 5 0. 0. 1. + 1026 0 1. 0 47.0 15.000 1 4 17. 20.0 5 5 0. 0. 1. + 1027 0 1. 1 22.0 1.500 0 4 16. 7.5 5 4 0. 0. 1. + 1030 0 1. 0 32.0 10.000 1 3 12. 12.5 1 4 0. 0. 1. + 1031 0 1. 0 22.0 7.000 1 1 14. 7.5 3 5 0. 0. 1. + 1034 0 1. 0 32.0 10.000 1 4 17. 12.5 5 4 0. 0. 1. + 1037 0 1. 1 27.0 1.500 1 2 16. 7.5 2 4 0. 0. 1. + 1038 0 1. 1 37.0 15.000 1 4 14. 12.5 5 5 0. 0. 1. + 1039 0 1. 1 42.0 4.000 1 3 14. 12.5 4 5 0. 0. 1. + 1045 0 1. 0 37.0 15.000 1 5 14. 20.0 5 4 0. 0. 1. + 1046 0 1. 0 32.0 7.000 1 4 17. 12.5 5 5 0. 0. 1. + 1054 0 1. 0 42.0 15.000 1 4 18. 40.0 6 5 0. 0. 1. + 1059 0 1. 1 27.0 4.000 0 4 18. 20.0 6 4 0. 0. 1. + 1063 0 1. 1 22.0 0.750 0 4 18. 12.5 6 5 0. 0. 1. + 1068 0 1. 1 27.0 4.000 1 4 14. 7.5 5 3 0. 0. 1. + 1070 0 1. 0 22.0 0.750 0 5 18. 4.0 1 5 0. 0. 1. + 1072 0 1. 0 52.0 15.000 1 5 9. 12.5 5 5 0. 0. 1. + 1073 0 1. 1 32.0 10.000 1 3 14. 12.5 5 5 0. 0. 1. + 1077 0 1. 0 37.0 15.000 1 4 16. 7.5 4 4 0. 0. 1. + 1081 0 1. 1 32.0 7.000 1 2 20. 20.0 5 4 0. 0. 1. + 1083 0 1. 0 42.0 15.000 1 3 18. 20.0 1 4 0. 0. 1. + 1084 0 1. 1 32.0 15.000 1 1 16. 12.5 5 5 0. 0. 1. + 1086 0 1. 1 27.0 4.000 1 3 18. 7.5 5 5 0. 0. 1. + 1087 0 1. 0 32.0 15.000 1 4 12. 7.5 3 4 0. 0. 1. + 1089 0 1. 1 22.0 0.750 1 3 14. 7.5 2 4 0. 0. 1. + 1096 0 1. 0 22.0 1.500 0 3 16. 7.5 5 3 0. 0. 1. + 1102 0 1. 0 42.0 15.000 1 4 14. 12.5 3 5 0. 0. 1. + 1103 0 1. 0 52.0 15.000 1 3 16. 20.0 5 4 0. 0. 1. + 1107 0 1. 1 37.0 15.000 1 5 20. 20.0 6 4 0. 0. 1. + 1109 0 1. 0 47.0 15.000 1 4 12. 12.5 2 3 0. 0. 1. + 1115 0 1. 1 57.0 15.000 1 2 20. 40.0 6 4 0. 0. 1. + 1119 0 1. 1 32.0 7.000 1 4 17. 20.0 5 5 0. 0. 1. + 1124 0 1. 0 27.0 7.000 1 4 17. 12.5 1 4 0. 0. 1. + 1126 0 1. 1 22.0 1.500 0 1 18. 7.5 6 5 0. 0. 1. + 1128 0 1. 0 22.0 4.000 1 3 9. 7.5 1 4 0. 0. 1. + 1129 0 1. 0 22.0 1.500 0 2 14. 7.5 1 5 0. 0. 1. + 1130 0 1. 1 42.0 15.000 1 2 20. 20.0 6 4 0. 0. 1. + 1133 0 1. 1 57.0 15.000 1 4 9. 12.5 2 4 0. 0. 1. + 1140 0 1. 0 27.0 7.000 1 2 18. 20.0 1 5 0. 0. 1. + 1143 0 1. 0 22.0 4.000 1 3 14. 7.5 1 5 0. 0. 1. + 1146 0 1. 1 37.0 15.000 1 4 14. 20.0 5 3 0. 0. 1. + 1153 0 1. 1 32.0 7.000 1 1 18. 4.0 6 4 0. 0. 1. + 1156 0 1. 0 22.0 1.500 0 2 14. 4.0 5 5 0. 0. 1. + 1157 0 1. 0 22.0 1.500 1 3 12. 4.0 1 3 0. 0. 1. + 1158 0 1. 1 52.0 15.000 1 2 14. 40.0 5 5 0. 0. 1. + 1160 0 1. 0 37.0 15.000 1 2 14. 20.0 1 1 0. 0. 1. + 1161 0 1. 0 32.0 10.000 1 2 14. 12.5 5 5 0. 0. 1. + 1166 0 1. 1 42.0 15.000 1 4 20. 12.5 4 5 0. 0. 1. + 1177 0 1. 0 27.0 4.000 1 3 18. 12.5 4 5 0. 0. 1. + 1178 0 1. 1 37.0 15.000 1 4 20. 40.0 6 5 0. 0. 1. + 1180 0 1. 1 27.0 1.500 0 3 18. 12.5 5 5 0. 0. 1. + 1187 0 1. 0 22.0 0.125 0 2 16. 7.5 6 3 0. 0. 1. + 1191 0 1. 1 32.0 10.000 1 2 20. 12.5 6 3 0. 0. 1. + 1195 0 1. 0 27.0 4.000 0 4 18. 20.0 5 4 0. 0. 1. + 1207 0 1. 0 27.0 7.000 1 2 12. 12.5 5 1 0. 0. 1. + 1208 0 1. 1 32.0 4.000 1 5 18. 7.5 6 3 0. 0. 1. + 1209 0 1. 0 37.0 15.000 1 2 17. 12.5 5 5 0. 0. 1. + 1211 0 1. 1 47.0 15.000 0 4 20. 20.0 6 4 0. 0. 1. + 1215 0 1. 1 27.0 1.500 0 1 18. 12.5 5 5 0. 0. 1. + 1221 0 1. 1 37.0 15.000 1 4 20. 20.0 6 4 0. 0. 1. + 1226 0 1. 0 32.0 15.000 1 4 18. 12.5 1 4 0. 0. 1. + 1229 0 1. 0 32.0 7.000 1 4 17. 40.0 5 4 0. 0. 1. + 1231 0 1. 0 42.0 15.000 1 3 14. 7.5 1 3 0. 0. 1. + 1234 0 1. 0 27.0 7.000 1 3 16. 12.5 1 4 0. 0. 1. + 1235 0 1. 1 27.0 1.500 0 3 16. 7.5 4 2 0. 0. 1. + 1242 0 1. 1 22.0 1.500 0 3 16. 7.5 3 5 0. 0. 1. + 1245 0 1. 1 27.0 4.000 1 3 16. 12.5 4 2 0. 0. 1. + 1260 0 1. 0 27.0 7.000 1 3 12. 12.5 1 2 0. 0. 1. + 1266 0 1. 0 37.0 15.000 1 2 18. 40.0 5 4 0. 0. 1. + 1271 0 1. 0 37.0 7.000 1 3 14. 20.0 4 4 0. 0. 1. + 1273 0 1. 1 22.0 1.500 0 2 16. 7.5 5 5 0. 0. 1. + 1276 0 1. 1 37.0 15.000 1 5 20. 40.0 5 4 0. 0. 1. + 1280 0 1. 0 22.0 1.500 0 4 16. 7.5 5 3 0. 0. 1. + 1282 0 1. 0 32.0 10.000 1 4 16. 20.0 1 5 0. 0. 1. + 1285 0 1. 1 27.0 4.000 0 2 17. 12.5 5 3 0. 0. 1. + 1295 0 1. 0 22.0 0.417 0 4 14. 12.5 5 5 0. 0. 1. + 1298 0 1. 0 27.0 4.000 0 2 18. 12.5 5 5 0. 0. 1. + 1299 0 1. 1 37.0 15.000 1 4 18. 7.5 5 3 0. 0. 1. + 1304 0 1. 1 37.0 10.000 1 5 20. 12.5 7 4 0. 0. 1. + 1305 0 1. 0 27.0 7.000 1 2 14. 12.5 4 2 0. 0. 1. + 1311 0 1. 1 32.0 4.000 1 2 16. 20.0 5 5 0. 0. 1. + 1314 0 1. 1 32.0 4.000 1 2 16. 12.5 6 4 0. 0. 1. + 1319 0 1. 1 22.0 1.500 0 3 18. 12.5 4 5 0. 0. 1. + 1322 0 1. 0 22.0 4.000 1 4 14. 12.5 3 4 0. 0. 1. + 1324 0 1. 0 17.5 0.750 0 2 18. 12.5 5 4 0. 0. 1. + 1327 0 1. 1 32.0 10.000 1 4 20. 7.5 4 5 0. 0. 1. + 1328 0 1. 0 32.0 0.750 0 5 14. 20.0 3 3 0. 0. 1. + 1330 0 1. 1 37.0 15.000 1 4 17. 7.5 5 3 0. 0. 1. + 1332 0 1. 1 32.0 4.000 0 3 14. 12.5 4 5 0. 0. 1. + 1333 0 1. 0 27.0 1.500 0 2 17. 20.0 3 2 0. 0. 1. + 1336 0 1. 0 22.0 7.000 1 4 14. 7.5 1 5 0. 0. 1. + 1341 0 1. 1 47.0 15.000 1 5 14. 20.0 6 5 0. 0. 1. + 1344 0 1. 1 27.0 4.000 1 1 16. 12.5 4 4 0. 0. 1. + 1352 0 1. 0 37.0 15.000 1 5 14. 12.5 1 3 0. 0. 1. + 1358 0 1. 1 42.0 4.000 1 4 18. 20.0 5 5 0. 0. 1. + 1359 0 1. 0 32.0 4.000 1 2 14. 12.5 1 5 0. 0. 1. + 1361 0 1. 1 52.0 15.000 1 2 14. 40.0 7 4 0. 0. 1. + 1364 0 1. 0 22.0 1.500 0 2 16. 7.5 1 4 0. 0. 1. + 1368 0 1. 1 52.0 15.000 1 4 12. 12.5 2 4 0. 0. 1. + 1384 0 1. 0 22.0 0.417 0 3 17. 12.5 1 5 0. 0. 1. + 1390 0 1. 0 22.0 1.500 0 2 16. 7.5 5 5 0. 0. 1. + 1393 0 1. 1 27.0 4.000 1 4 20. 12.5 6 4 0. 0. 1. + 1394 0 1. 0 32.0 15.000 1 4 14. 12.5 1 5 0. 0. 1. + 1402 0 1. 0 27.0 1.500 0 2 16. 20.0 3 5 0. 0. 1. + 1407 0 1. 1 32.0 4.000 0 1 20. 20.0 6 5 0. 0. 1. + 1408 0 1. 1 37.0 15.000 1 3 20. 20.0 6 4 0. 0. 1. + 1412 0 1. 0 32.0 10.000 0 2 16. 20.0 6 5 0. 0. 1. + 1413 0 1. 0 32.0 10.000 1 5 14. 12.5 5 5 0. 0. 1. + 1416 0 1. 1 37.0 1.500 1 4 18. 7.5 5 3 0. 0. 1. + 1417 0 1. 1 32.0 1.500 0 2 18. 12.5 4 4 0. 0. 1. + 1418 0 1. 0 32.0 10.000 1 4 14. 12.5 1 4 0. 0. 1. + 1419 0 1. 0 47.0 15.000 1 4 18. 20.0 5 4 0. 0. 1. + 1420 0 1. 0 27.0 10.000 1 5 12. 7.5 1 5 0. 0. 1. + 1423 0 1. 1 27.0 4.000 1 3 16. 12.5 4 5 0. 0. 1. + 1424 0 1. 0 37.0 15.000 1 4 12. 12.5 4 2 0. 0. 1. + 1432 0 1. 0 27.0 0.750 0 4 16. 12.5 5 5 0. 0. 1. + 1433 0 1. 0 37.0 15.000 1 4 16. 7.5 1 5 0. 0. 1. + 1437 0 1. 0 32.0 15.000 1 3 16. 12.5 1 5 0. 0. 1. + 1438 0 1. 0 27.0 10.000 1 2 16. 7.5 1 5 0. 0. 1. + 1439 0 1. 1 27.0 7.000 0 2 20. 20.0 6 5 0. 0. 1. + 1446 0 1. 0 37.0 15.000 1 2 14. 20.0 1 3 0. 0. 1. + 1450 0 1. 1 27.0 1.500 1 2 17. 7.5 4 4 0. 0. 1. + 1451 0 1. 0 22.0 0.750 1 2 14. 12.5 1 5 0. 0. 1. + 1452 0 1. 1 22.0 4.000 1 4 14. 7.5 2 4 0. 0. 1. + 1453 0 1. 1 42.0 0.125 0 4 17. 12.5 6 4 0. 0. 1. + 1456 0 1. 1 27.0 1.500 1 4 18. 7.5 6 5 0. 0. 1. + 1464 0 1. 1 27.0 7.000 1 3 16. 12.5 6 3 0. 0. 1. + 1469 0 1. 0 52.0 15.000 1 4 14. 7.5 1 3 0. 0. 1. + 1473 0 1. 1 27.0 1.500 0 5 20. 7.5 5 2 0. 0. 1. + 1481 0 1. 0 27.0 1.500 0 2 16. 7.5 5 5 0. 0. 1. + 1482 0 1. 0 27.0 1.500 0 3 17. 12.5 5 5 0. 0. 1. + 1496 0 1. 1 22.0 0.125 0 5 16. 7.5 4 4 0. 0. 1. + 1497 0 1. 0 27.0 4.000 1 4 16. 7.5 1 5 0. 0. 1. + 1504 0 1. 0 27.0 4.000 1 4 12. 7.5 1 5 0. 0. 1. + 1513 0 1. 0 47.0 15.000 1 2 14. 40.0 5 5 0. 0. 1. + 1515 0 1. 0 32.0 15.000 1 3 14. 12.5 5 3 0. 0. 1. + 1534 0 1. 1 42.0 7.000 1 2 16. 12.5 5 5 0. 0. 1. + 1535 0 1. 1 22.0 0.750 0 4 16. 7.5 6 4 0. 0. 1. + 1536 0 1. 1 27.0 0.125 0 3 20. 7.5 6 5 0. 0. 1. + 1540 0 1. 1 32.0 10.000 1 3 20. 20.0 6 5 0. 0. 1. + 1551 0 1. 0 22.0 0.417 0 5 14. 12.5 4 5 0. 0. 1. + 1555 0 1. 0 47.0 15.000 1 5 14. 12.5 1 4 0. 0. 1. + 1557 0 1. 0 32.0 10.000 1 3 14. 40.0 1 5 0. 0. 1. + 1566 0 1. 1 57.0 15.000 1 4 17. 12.5 5 5 0. 0. 1. + 1567 0 1. 1 27.0 4.000 1 3 20. 12.5 6 5 0. 0. 1. + 1576 0 1. 0 32.0 7.000 1 4 17. 12.5 1 5 0. 0. 1. + 1584 0 1. 0 37.0 10.000 1 4 16. 40.0 1 5 0. 0. 1. + 1585 0 1. 0 32.0 10.000 1 1 18. 20.0 1 4 0. 0. 1. + 1590 0 1. 0 22.0 4.000 0 3 14. 7.5 1 4 0. 0. 1. + 1594 0 1. 0 27.0 7.000 1 4 14. 7.5 3 2 0. 0. 1. + 1595 0 1. 1 57.0 15.000 1 5 18. 20.0 5 2 0. 0. 1. + 1603 0 1. 1 32.0 7.000 1 2 18. 7.5 5 5 0. 0. 1. + 1608 0 1. 0 27.0 1.500 0 4 17. 7.5 1 3 0. 0. 1. + 1609 0 1. 1 22.0 1.500 0 4 14. 7.5 5 5 0. 0. 1. + 1615 0 1. 0 22.0 1.500 1 4 14. 4.0 5 4 0. 0. 1. + 1616 0 1. 0 32.0 7.000 1 3 16. 12.5 1 5 0. 0. 1. + 1617 0 1. 0 47.0 15.000 1 3 16. 20.0 5 4 0. 0. 1. + 1620 0 1. 0 22.0 0.750 0 3 16. 40.0 1 5 0. 0. 1. + 1621 0 1. 0 22.0 1.500 1 2 14. 7.5 5 5 0. 0. 1. + 1637 0 1. 0 27.0 4.000 1 1 16. 7.5 5 5 0. 0. 1. + 1638 0 1. 1 52.0 15.000 1 4 16. 20.0 5 5 0. 0. 1. + 1650 0 1. 1 32.0 10.000 1 4 20. 40.0 6 5 0. 0. 1. + 1654 0 1. 1 47.0 15.000 1 4 16. 20.0 6 4 0. 0. 1. + 1665 0 1. 0 27.0 7.000 1 2 14. 7.5 1 2 0. 0. 1. + 1670 0 1. 0 22.0 1.500 0 4 14. 20.0 4 5 0. 0. 1. + 1671 0 1. 0 32.0 10.000 1 2 16. 20.0 5 4 0. 0. 1. + 1675 0 1. 0 22.0 0.750 0 2 16. 12.5 5 4 0. 0. 1. + 1688 0 1. 0 22.0 1.500 0 2 16. 12.5 5 5 0. 0. 1. + 1691 0 1. 0 42.0 15.000 1 3 18. 20.0 6 4 0. 0. 1. + 1695 0 1. 0 27.0 7.000 1 5 14. 20.0 4 5 0. 0. 1. + 1698 0 1. 1 42.0 15.000 1 4 16. 20.0 4 4 0. 0. 1. + 1704 0 1. 0 57.0 15.000 1 3 18. 20.0 5 2 0. 0. 1. + 1705 0 1. 1 42.0 15.000 1 3 18. 12.5 6 2 0. 0. 1. + 1711 0 1. 0 32.0 7.000 1 2 14. 7.5 1 2 0. 0. 1. + 1719 0 1. 1 22.0 4.000 0 5 12. 7.5 4 5 0. 0. 1. + 1723 0 1. 0 22.0 1.500 0 1 16. 7.5 6 5 0. 0. 1. + 1726 0 1. 0 22.0 0.750 0 1 14. 7.5 4 5 0. 0. 1. + 1749 0 1. 0 32.0 15.000 1 4 12. 20.0 1 5 0. 0. 1. + 1752 0 1. 1 22.0 1.500 0 2 18. 12.5 5 3 0. 0. 1. + 1754 0 1. 1 27.0 4.000 1 5 17. 7.5 2 5 0. 0. 1. + 1758 0 1. 0 27.0 4.000 1 4 12. 7.5 1 5 0. 0. 1. + 1761 0 1. 1 42.0 15.000 1 5 18. 7.5 5 4 0. 0. 1. + 1773 0 1. 1 32.0 1.500 0 2 20. 20.0 7 3 0. 0. 1. + 1775 0 1. 1 57.0 15.000 0 4 9. 7.5 3 1 0. 0. 1. + 1786 0 1. 1 37.0 7.000 0 4 18. 12.5 5 5 0. 0. 1. + 1793 0 1. 1 52.0 15.000 1 2 17. 20.0 5 4 0. 0. 1. + 1799 0 1. 1 47.0 15.000 1 4 17. 20.0 6 5 0. 0. 1. + 1803 0 1. 0 27.0 7.000 0 2 17. 20.0 5 4 0. 0. 1. + 1806 0 1. 0 27.0 7.000 1 4 14. 40.0 5 5 0. 0. 1. + 1807 0 1. 0 22.0 4.000 0 2 14. 12.5 3 3 0. 0. 1. + 1808 0 1. 1 37.0 7.000 1 2 20. 40.0 6 5 0. 0. 1. + 1814 0 1. 1 27.0 7.000 0 4 12. 7.5 4 3 0. 0. 1. + 1815 0 1. 1 42.0 10.000 1 4 18. 40.0 6 4 0. 0. 1. + 1818 0 1. 0 22.0 1.500 0 3 14. 7.5 1 5 0. 0. 1. + 1827 0 1. 0 22.0 4.000 1 2 14. 12.5 1 3 0. 0. 1. + 1834 0 1. 0 57.0 15.000 0 4 20. 20.0 6 5 0. 0. 1. + 1835 0 1. 1 37.0 15.000 1 4 14. 12.5 4 3 0. 0. 1. + 1843 0 1. 0 27.0 7.000 1 3 18. 12.5 5 5 0. 0. 1. + 1846 0 1. 0 17.5 10.000 0 4 14. 20.0 4 5 0. 0. 1. + 1850 0 1. 1 22.0 4.000 1 4 16. 12.5 5 5 0. 0. 1. + 1851 0 1. 0 27.0 4.000 1 2 16. 12.5 1 4 0. 0. 1. + 1854 0 1. 0 37.0 15.000 1 2 14. 12.5 5 1 0. 0. 1. + 1859 0 1. 0 22.0 1.500 0 5 14. 4.0 1 4 0. 0. 1. + 1861 0 1. 1 27.0 7.000 1 2 20. 7.5 5 4 0. 0. 1. + 1866 0 1. 1 27.0 4.000 1 4 14. 7.5 5 5 0. 0. 1. + 1873 0 1. 1 22.0 0.125 0 1 16. 7.5 3 5 0. 0. 1. + 1875 0 1. 0 27.0 7.000 1 4 14. 20.0 1 4 0. 0. 1. + 1885 0 1. 0 32.0 15.000 1 5 16. 12.5 5 3 0. 0. 1. + 1892 0 1. 1 32.0 10.000 1 4 18. 12.5 5 4 0. 0. 1. + 1895 0 1. 0 32.0 15.000 1 2 14. 7.5 3 4 0. 0. 1. + 1896 0 1. 0 22.0 1.500 0 3 17. 7.5 5 5 0. 0. 1. + 1897 0 1. 1 27.0 4.000 1 4 17. 7.5 4 4 0. 0. 1. + 1899 0 1. 0 52.0 15.000 1 5 14. 12.5 1 5 0. 0. 1. + 1904 0 1. 0 27.0 7.000 1 2 12. 20.0 1 2 0. 0. 1. + 1905 0 1. 0 27.0 7.000 1 3 12. 12.5 1 4 0. 0. 1. + 1908 0 1. 0 42.0 15.000 1 2 14. 20.0 1 4 0. 0. 1. + 1916 0 1. 0 42.0 15.000 1 4 14. 20.0 5 4 0. 0. 1. + 1918 0 1. 1 27.0 7.000 1 4 14. 7.5 3 3 0. 0. 1. + 1920 0 1. 1 27.0 7.000 1 2 20. 20.0 6 2 0. 0. 1. + 1930 0 1. 0 42.0 15.000 1 3 12. 20.0 3 3 0. 0. 1. + 1940 0 1. 1 27.0 4.000 1 3 16. 7.5 3 5 0. 0. 1. + 1947 0 1. 0 27.0 7.000 1 3 14. 40.0 1 4 0. 0. 1. + 1949 0 1. 0 22.0 1.500 0 2 14. 12.5 4 5 0. 0. 1. + 1951 0 1. 0 27.0 4.000 1 4 14. 12.5 1 4 0. 0. 1. + 1952 0 1. 0 22.0 4.000 0 4 14. 4.0 5 5 0. 0. 1. + 1960 0 1. 0 22.0 1.500 0 2 16. 20.0 4 5 0. 0. 1. + 9001 0 1. 1 47.0 15.000 0 4 14. 12.5 5 4 0. 0. 1. + 9012 0 1. 1 37.0 10.000 1 2 18. 12.5 6 2 0. 0. 1. + 9023 0 1. 1 37.0 15.000 1 3 17. 40.0 5 4 0. 0. 1. + 9029 0 1. 0 27.0 4.000 1 2 16. 7.5 1 4 0. 0. 1. + 6 3 1. 1 27.0 1.500 0 3 18. 20.0 4 4 3. 0. 1. + 12 3 1. 0 27.0 4.000 1 3 17. 12.5 1 5 3. 0. 1. + 43 4 1. 1 37.0 15.000 1 5 18. 12.5 6 2 7. 0. 1. + 53 6 1. 0 32.0 10.000 1 3 17. 40.0 5 2 12. 0. 1. + 67 1 1. 1 22.0 0.125 0 4 16. 20.0 5 5 1. 0. 1. + 79 1 1. 0 22.0 1.500 1 2 14. 4.0 1 5 1. 0. 1. + 122 6 1. 1 37.0 15.000 1 4 14. 7.5 5 2 12. 0. 1. + 126 4 1. 0 22.0 1.500 0 2 14. 4.0 3 4 7. 0. 1. + 133 2 1. 1 37.0 15.000 1 2 18. 20.0 6 4 2. 0. 1. + 138 3 1. 0 32.0 15.000 1 4 12. 12.5 3 2 3. 0. 1. + 154 1 1. 0 37.0 15.000 1 4 14. 12.5 4 2 1. 0. 1. + 159 4 1. 0 42.0 15.000 1 3 17. 40.0 1 4 7. 0. 1. + 174 6 1. 0 42.0 15.000 1 5 9. 12.5 4 1 12. 0. 1. + 176 5 1. 1 37.0 10.000 1 2 20. 40.0 6 2 12. 0. 1. + 181 6 1. 0 32.0 15.000 1 3 14. 12.5 1 2 12. 0. 1. + 182 3 1. 1 27.0 4.000 0 1 18. 7.5 6 5 3. 0. 1. + 186 4 1. 1 37.0 10.000 1 2 18. 40.0 7 3 7. 0. 1. + 189 4 1. 0 27.0 4.000 0 3 17. 7.5 5 5 7. 0. 1. + 204 1 1. 1 42.0 15.000 1 4 16. 20.0 5 5 1. 0. 1. + 215 1 1. 0 47.0 15.000 1 5 14. 12.5 4 5 1. 0. 1. + 232 4 1. 0 27.0 4.000 1 3 18. 12.5 5 4 7. 0. 1. + 233 1 1. 0 27.0 7.000 1 5 14. 4.0 1 4 1. 0. 1. + 252 6 1. 1 27.0 1.500 1 3 17. 20.0 5 4 12. 0. 1. + 253 5 1. 0 27.0 7.000 1 4 14. 12.5 6 2 12. 0. 1. + 274 3 1. 0 42.0 15.000 1 4 16. 20.0 5 4 3. 0. 1. + 275 4 1. 0 27.0 10.000 1 4 12. 12.5 7 3 7. 0. 1. + 287 1 1. 1 27.0 1.500 0 2 18. 12.5 5 2 1. 0. 1. + 288 1 1. 1 32.0 4.000 0 4 20. 20.0 6 4 1. 0. 1. + 325 1 1. 0 27.0 7.000 1 3 14. 7.5 1 3 1. 0. 1. + 328 3 1. 0 32.0 10.000 1 4 14. 7.5 1 4 3. 0. 1. + 344 3 1. 1 27.0 4.000 1 2 18. 12.5 7 2 3. 0. 1. + 353 1 1. 0 17.5 0.750 0 5 14. 7.5 4 5 1. 0. 1. + 354 1 1. 0 32.0 10.000 1 4 18. 20.0 1 5 1. 0. 1. + 367 4 1. 0 32.0 7.000 1 2 17. 20.0 6 4 7. 0. 1. + 369 4 1. 1 37.0 15.000 1 2 20. 20.0 6 4 7. 0. 1. + 390 4 1. 0 37.0 10.000 0 1 20. 20.0 5 3 7. 0. 1. + 392 5 1. 0 32.0 10.000 1 2 16. 12.5 5 5 12. 0. 1. + 423 4 1. 1 52.0 15.000 1 2 20. 40.0 6 4 7. 0. 1. + 432 4 1. 0 42.0 15.000 1 1 12. 12.5 1 3 7. 0. 1. + 436 1 1. 1 52.0 15.000 1 2 20. 40.0 6 3 1. 0. 1. + 483 2 1. 1 37.0 15.000 1 3 18. 12.5 6 5 2. 0. 1. + 513 5 1. 0 22.0 4.000 0 3 12. 12.5 3 4 12. 0. 1. + 516 6 1. 1 27.0 7.000 1 1 18. 12.5 6 2 12. 0. 1. + 518 1 1. 1 27.0 4.000 1 3 18. 12.5 5 5 1. 0. 1. + 520 7 1. 1 47.0 15.000 1 4 17. 12.5 6 5 12. 0. 1. + 526 6 1. 0 42.0 15.000 1 4 12. 20.0 1 1 12. 0. 1. + 528 4 1. 1 27.0 4.000 0 3 14. 7.5 3 4 7. 0. 1. + 553 4 1. 0 32.0 7.000 1 4 18. 12.5 4 5 7. 0. 1. + 576 1 1. 1 32.0 0.417 1 3 12. 7.5 3 4 1. 0. 1. + 611 3 1. 1 47.0 15.000 1 5 16. 12.5 5 4 3. 0. 1. + 625 5 1. 1 37.0 15.000 1 2 20. 40.0 5 4 12. 0. 1. + 635 4 1. 1 22.0 4.000 1 2 17. 7.5 6 4 7. 0. 1. + 646 1 1. 1 27.0 4.000 0 2 14. 12.5 4 5 1. 0. 1. + 657 4 1. 0 52.0 15.000 1 5 16. 12.5 1 3 7. 0. 1. + 659 1 1. 1 27.0 4.000 0 3 14. 12.5 3 3 1. 0. 1. + 666 1 1. 0 27.0 10.000 1 4 16. 12.5 1 4 1. 0. 1. + 679 1 1. 1 32.0 7.000 1 3 14. 20.0 7 4 1. 0. 1. + 729 4 1. 1 32.0 7.000 1 2 18. 20.0 4 1 7. 0. 1. + 755 3 1. 1 22.0 1.500 0 1 14. 20.0 3 2 3. 0. 1. + 758 4 1. 1 22.0 4.000 1 3 18. 12.5 6 4 7. 0. 1. + 770 4 1. 1 42.0 15.000 1 4 20. 40.0 6 4 7. 0. 1. + 786 2 1. 0 57.0 15.000 1 1 18. 40.0 5 4 2. 0. 1. + 797 4 1. 0 32.0 4.000 1 3 18. 12.5 5 2 7. 0. 1. + 811 1 1. 1 27.0 4.000 1 1 16. 20.0 4 4 1. 0. 1. + 834 4 1. 1 32.0 7.000 1 4 16. 12.5 1 4 7. 0. 1. + 858 2 1. 1 57.0 15.000 1 1 17. 20.0 4 4 2. 0. 1. + 885 4 1. 0 42.0 15.000 1 4 14. 20.0 5 2 7. 0. 1. + 893 4 1. 1 37.0 10.000 1 1 18. 12.5 5 3 7. 0. 1. + 927 3 1. 1 42.0 15.000 1 3 17. 12.5 6 1 3. 0. 1. + 928 1 1. 0 52.0 15.000 1 3 14. 12.5 4 4 1. 0. 1. + 933 2 1. 0 27.0 7.000 1 3 17. 12.5 5 3 2. 0. 1. + 951 6 1. 1 32.0 7.000 1 2 12. 20.0 4 2 12. 0. 1. + 968 1 1. 1 22.0 4.000 0 4 14. 7.5 2 5 1. 0. 1. + 972 3 1. 1 27.0 7.000 1 3 18. 12.5 6 4 3. 0. 1. + 975 6 1. 0 37.0 15.000 1 1 18. 12.5 5 5 12. 0. 1. + 977 4 1. 0 32.0 15.000 1 3 17. 20.0 1 3 7. 0. 1. + 981 4 1. 0 27.0 7.000 0 2 17. 20.0 5 5 7. 0. 1. + 986 1 1. 0 32.0 7.000 1 3 17. 12.5 5 3 1. 0. 1. + 1002 1 1. 1 32.0 1.500 1 2 14. 7.5 2 4 1. 0. 1. + 1007 6 1. 0 42.0 15.000 1 4 14. 12.5 1 2 12. 0. 1. + 1011 4 1. 1 32.0 10.000 1 3 14. 20.0 5 4 7. 0. 1. + 1035 4 1. 1 37.0 4.000 1 1 20. 20.0 6 3 7. 0. 1. + 1050 1 1. 0 27.0 4.000 1 2 16. 12.5 5 3 1. 0. 1. + 1056 5 1. 0 42.0 15.000 1 3 14. 20.0 4 3 12. 0. 1. + 1057 1 1. 1 27.0 10.000 1 5 20. 20.0 6 5 1. 0. 1. + 1075 6 1. 1 37.0 10.000 1 2 20. 40.0 6 2 12. 0. 1. + 1080 6 1. 0 27.0 7.000 1 1 14. 12.5 3 3 12. 0. 1. + 1125 3 1. 0 27.0 7.000 1 4 12. 7.5 1 2 3. 0. 1. + 1131 3 1. 1 32.0 10.000 1 2 14. 12.5 4 4 3. 0. 1. + 1138 7 1. 0 17.5 0.750 1 2 12. 7.5 1 3 12. 0. 1. + 1150 5 1. 0 32.0 15.000 1 3 18. 40.0 5 4 12. 0. 1. + 1163 2 1. 0 22.0 7.000 0 4 14. 20.0 4 3 2. 0. 1. + 1169 1 1. 1 32.0 7.000 1 4 20. 20.0 6 5 1. 0. 1. + 1198 4 1. 1 27.0 4.000 1 2 18. 12.5 6 2 7. 0. 1. + 1204 1 1. 0 22.0 1.500 1 5 14. 7.5 5 3 1. 0. 1. + 1218 7 1. 0 32.0 15.000 0 3 17. 7.5 5 1 12. 0. 1. + 1230 5 1. 0 42.0 15.000 1 2 12. 20.0 1 2 12. 0. 1. + 1236 4 1. 1 42.0 15.000 1 3 20. 40.0 5 4 7. 0. 1. + 1247 6 1. 1 32.0 10.000 0 2 18. 20.0 4 2 12. 0. 1. + 1259 5 1. 0 32.0 15.000 1 3 9. 12.5 1 1 12. 0. 1. + 1294 4 1. 1 57.0 15.000 1 5 20. 12.5 4 5 7. 0. 1. + 1353 5 1. 1 47.0 15.000 1 4 20. 40.0 6 4 12. 0. 1. + 1370 2 1. 0 42.0 15.000 1 2 17. 20.0 6 3 2. 0. 1. + 1427 6 1. 1 37.0 15.000 1 3 17. 40.0 6 3 12. 0. 1. + 1445 5 1. 1 37.0 15.000 1 5 17. 12.5 5 2 12. 0. 1. + 1460 4 1. 1 27.0 10.000 1 2 20. 12.5 6 4 7. 0. 1. + 1480 2 1. 1 37.0 15.000 1 2 16. 20.0 5 4 2. 0. 1. + 1505 6 1. 0 32.0 15.000 1 1 14. 20.0 5 2 12. 0. 1. + 1543 4 1. 1 32.0 10.000 1 3 17. 7.5 6 3 7. 0. 1. + 1548 2 1. 1 37.0 15.000 1 4 18. 12.5 5 1 2. 0. 1. + 1550 4 1. 0 27.0 1.500 0 2 17. 12.5 5 5 7. 0. 1. + 1561 3 1. 0 47.0 15.000 1 2 17. 20.0 5 2 3. 0. 1. + 1564 6 1. 1 37.0 15.000 1 2 17. 20.0 5 4 12. 0. 1. + 1573 5 1. 0 27.0 4.000 0 2 14. 20.0 5 5 12. 0. 1. + 1575 2 1. 0 27.0 10.000 1 4 14. 12.5 1 5 2. 0. 1. + 1599 1 1. 0 22.0 4.000 1 3 16. 12.5 1 3 1. 0. 1. + 1622 6 1. 1 52.0 7.000 0 4 16. 7.5 5 5 12. 0. 1. + 1629 2 1. 0 27.0 4.000 1 1 16. 7.5 3 5 2. 0. 1. + 1664 4 1. 0 37.0 15.000 1 2 17. 40.0 6 4 7. 0. 1. + 1669 2 1. 0 27.0 4.000 0 1 17. 4.0 3 1 2. 0. 1. + 1674 7 1. 0 17.5 0.750 1 2 12. 7.5 3 5 12. 0. 1. + 1682 4 1. 0 32.0 15.000 1 5 18. 12.5 5 4 7. 0. 1. + 1685 4 1. 0 22.0 4.000 0 1 16. 7.5 3 5 7. 0. 1. + 1697 2 1. 1 32.0 4.000 1 4 18. 20.0 6 4 2. 0. 1. + 1716 1 1. 0 22.0 1.500 1 3 18. 20.0 5 2 1. 0. 1. + 1730 3 1. 0 42.0 15.000 1 2 17. 40.0 5 4 3. 0. 1. + 1731 1 1. 1 32.0 7.000 1 4 16. 12.5 4 4 1. 0. 1. + 1732 5 1. 1 37.0 15.000 0 3 14. 20.0 6 2 12. 0. 1. + 1743 1 1. 1 42.0 15.000 1 3 16. 40.0 6 3 1. 0. 1. + 1751 1 1. 1 27.0 4.000 1 1 18. 7.5 5 4 1. 0. 1. + 1757 2 1. 1 37.0 15.000 1 4 20. 40.0 7 3 2. 0. 1. + 1763 4 1. 1 37.0 15.000 1 3 20. 40.0 6 4 7. 0. 1. + 1766 3 1. 1 22.0 1.500 0 2 12. 12.5 3 3 3. 0. 1. + 1772 3 1. 1 32.0 4.000 1 3 20. 20.0 6 2 3. 0. 1. + 1776 2 1. 1 32.0 15.000 1 5 20. 20.0 6 5 2. 0. 1. + 1782 5 1. 0 52.0 15.000 1 1 18. 40.0 5 5 12. 0. 1. + 1784 5 1. 1 47.0 15.000 0 1 18. 40.0 6 5 12. 0. 1. + 1791 3 1. 0 32.0 15.000 1 4 16. 12.5 4 4 3. 0. 1. + 1831 4 1. 0 32.0 15.000 1 3 14. 12.5 3 2 7. 0. 1. + 1840 4 1. 0 27.0 7.000 1 4 16. 20.0 1 2 7. 0. 1. + 1844 5 1. 1 42.0 15.000 1 3 18. 12.5 6 2 12. 0. 1. + 1856 4 1. 0 42.0 15.000 1 2 14. 12.5 3 2 7. 0. 1. + 1876 5 1. 1 27.0 7.000 1 2 17. 12.5 5 4 12. 0. 1. + 1929 3 1. 1 32.0 10.000 1 4 14. 7.5 4 3 3. 0. 1. + 1935 4 1. 1 47.0 15.000 1 3 16. 20.0 4 2 7. 0. 1. + 1938 1 1. 1 22.0 1.500 1 1 12. 7.5 2 5 1. 0. 1. + 1941 4 1. 0 32.0 10.000 1 2 18. 7.5 5 4 7. 0. 1. + 1954 2 1. 1 32.0 10.000 1 2 17. 20.0 6 5 2. 0. 1. + 1959 2 1. 1 22.0 7.000 1 3 18. 20.0 6 2 2. 0. 1. + 9010 1 1. 0 32.0 15.000 1 3 14. 40.0 1 5 1. 0. 1. +END OF PT DATA + +BEGIN RB DATA (6366 observations): + + 3. 1. 3. 32.0 9.0 3.0 3. 17.0 40.0 2. 5. 0.1111111 0. 1. + 12. 1. 3. 27.0 13.0 3.0 1. 14.0 20.0 3. 4. 3.2307692 0. 1. + 51. 1. 4. 22.0 2.5 0.0 1. 16.0 11.5 3. 5. 1.3999996 0. 1. + 53. 1. 4. 37.0 16.5 4.0 3. 16.0 20.0 5. 5. 0.7272727 0. 1. + 54. 1. 5. 27.0 9.0 1.0 1. 14.0 14.0 3. 4. 4.6666660 0. 1. + 74. 1. 4. 27.0 9.0 0.0 2. 14.0 20.0 3. 4. 4.6666660 0. 1. + 81. 1. 5. 37.0 23.0 5.5 2. 12.0 20.0 5. 4. 0.8521735 0. 1. + 83. 1. 5. 37.0 23.0 5.5 2. 12.0 20.0 2. 3. 1.8260860 0. 1. + 89. 1. 3. 22.0 2.5 0.0 2. 12.0 11.5 3. 3. 4.7999992 0. 1. + 102. 1. 3. 27.0 6.0 0.0 1. 16.0 20.0 3. 5. 1.3333330 0. 1. + 135. 1. 2. 27.0 6.0 2.0 1. 16.0 20.0 3. 5. 3.2666645 0. 1. + 137. 1. 5. 27.0 6.0 2.0 3. 14.0 14.0 3. 5. 2.0416660 0. 1. + 144. 1. 3. 37.0 16.5 5.5 1. 12.0 11.5 2. 3. 0.4848484 0. 1. + 160. 1. 5. 27.0 6.0 0.0 2. 14.0 20.0 3. 2. 2.0000000 0. 1. + 168. 1. 4. 22.0 6.0 1.0 1. 14.0 14.0 4. 4. 3.2666645 0. 1. + 182. 1. 4. 37.0 9.0 2.0 2. 14.0 40.0 3. 6. 1.3611107 0. 1. + 202. 1. 4. 27.0 6.0 1.0 1. 12.0 20.0 3. 5. 2.0000000 0. 1. + 228. 1. 1. 37.0 23.0 5.5 4. 14.0 14.0 5. 2. 1.8260860 0. 1. + 239. 1. 2. 42.0 23.0 2.0 2. 20.0 20.0 4. 4. 1.8260860 0. 1. + 243. 1. 4. 37.0 6.0 0.0 2. 16.0 20.0 5. 4. 2.0416660 0. 1. + 248. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 4. 7.8399963 0. 1. + 251. 1. 3. 37.0 16.5 5.5 2. 9.0 40.0 3. 2. 2.5454540 0. 1. + 264. 1. 3. 42.0 23.0 5.5 3. 12.0 14.0 5. 4. 0.5326087 0. 1. + 266. 1. 2. 27.0 9.0 2.0 4. 20.0 20.0 3. 4. 0.6222222 0. 1. + 280. 1. 4. 27.0 6.0 1.0 2. 12.0 11.5 5. 4. 0.5833333 0. 1. + 284. 1. 5. 27.0 2.5 0.0 3. 16.0 14.0 4. 1. 4.7999992 0. 1. + 286. 1. 2. 27.0 6.0 2.0 2. 12.0 11.5 2. 5. 0.1666666 0. 1. + 289. 1. 5. 37.0 13.0 1.0 3. 12.0 11.5 3. 4. 0.6153846 0. 1. + 293. 1. 2. 32.0 16.5 2.0 2. 12.0 14.0 4. 2. 1.1878777 0. 1. + 296. 1. 3. 27.0 6.0 1.0 1. 14.0 14.0 3. 6. 11.1999989 0. 1. + 297. 1. 3. 32.0 16.5 4.0 3. 14.0 20.0 5. 5. 1.1878777 0. 1. + 300. 1. 3. 27.0 9.0 2.0 1. 14.0 20.0 3. 4. 2.1777763 0. 1. + 308. 1. 3. 37.0 16.5 3.0 3. 14.0 14.0 3. 2. 0.4848484 0. 1. + 312. 1. 4. 32.0 16.5 5.5 4. 12.0 14.0 2. 4. 0.7272727 0. 1. + 320. 1. 5. 42.0 16.5 4.0 3. 16.0 40.0 4. 6. 0.7272727 0. 1. + 322. 1. 3. 27.0 9.0 2.0 2. 12.0 14.0 5. 2. 1.3333330 0. 1. + 332. 1. 3. 17.5 0.5 0.0 1. 12.0 11.5 3. 2. 7.0000000 0. 1. + 339. 1. 4. 42.0 23.0 5.5 2. 20.0 4.0 3. 2. 0.5217391 0. 1. + 354. 1. 5. 37.0 16.5 3.0 3. 12.0 20.0 3. 5. 0.2121212 0. 1. + 359. 1. 4. 22.0 2.5 1.0 2. 14.0 20.0 3. 5. 0.4000000 0. 1. + 361. 1. 4. 27.0 2.5 0.0 2. 16.0 20.0 4. 1. 1.3999996 0. 1. + 368. 1. 4. 22.0 2.5 0.0 2. 14.0 14.0 3. 6. 3.1999998 0. 1. + 370. 1. 4. 37.0 13.0 3.0 2. 16.0 40.0 4. 5. 1.5076914 0. 1. + 373. 1. 4. 22.0 2.5 0.0 2. 16.0 14.0 3. 4. 7.8399963 0. 1. + 386. 1. 4. 22.0 2.5 0.0 1. 14.0 11.5 1. 2. 7.8399963 0. 1. + 387. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 3. 2. 0.4000000 0. 1. + 410. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 4. 5. 4.8999996 0. 1. + 411. 1. 3. 42.0 23.0 4.0 3. 16.0 40.0 5. 5. 0.0434783 0. 1. + 425. 1. 5. 32.0 13.0 3.0 3. 14.0 14.0 4. 4. 0.0769231 0. 1. + 431. 1. 5. 22.0 6.0 2.0 2. 14.0 14.0 3. 4. 0.5833333 0. 1. + 471. 1. 3. 27.0 2.5 1.0 4. 17.0 6.5 4. 6. 4.7999992 0. 1. + 473. 1. 2. 42.0 23.0 3.0 3. 14.0 20.0 3. 5. 0.8521735 0. 1. + 478. 1. 4. 22.0 2.5 0.0 1. 17.0 40.0 6. 6. 4.7999992 0. 1. + 496. 1. 2. 42.0 23.0 3.0 3. 14.0 20.0 3. 5. 2.9217386 0. 1. + 510. 1. 4. 42.0 23.0 2.0 2. 14.0 14.0 4. 4. 0.5217391 0. 1. + 512. 1. 4. 42.0 23.0 3.0 3. 12.0 20.0 5. 4. 0.5326087 0. 1. + 516. 1. 4. 37.0 16.5 2.0 3. 14.0 20.0 3. 4. 0.4848484 0. 1. + 521. 1. 4. 27.0 2.5 0.0 2. 20.0 20.0 4. 5. 7.8399963 0. 1. + 529. 1. 2. 32.0 9.0 2.0 2. 12.0 9.0 2. 2. 1.3333330 0. 1. + 533. 1. 4. 42.0 13.0 0.0 1. 14.0 20.0 3. 4. 1.5076914 0. 1. + 536. 1. 4. 22.0 6.0 2.0 1. 12.0 11.5 3. 4. 1.3333330 0. 1. + 544. 1. 5. 32.0 16.5 3.0 3. 14.0 20.0 2. 4. 1.1878777 0. 1. + 546. 1. 4. 42.0 13.0 0.0 2. 12.0 11.5 3. 2. 1.5076914 0. 1. + 547. 1. 5. 27.0 9.0 1.0 3. 14.0 20.0 5. 5. 1.3333330 0. 1. + 565. 1. 5. 22.0 6.0 2.0 2. 12.0 14.0 2. 5. 7.0000000 0. 1. + 575. 1. 2. 27.0 16.5 2.0 3. 16.0 20.0 4. 5. 0.7272727 0. 1. + 577. 1. 5. 37.0 13.0 2.0 1. 12.0 14.0 3. 4. 1.5076914 0. 1. + 584. 1. 5. 27.0 6.0 0.0 2. 14.0 20.0 3. 4. 2.0416660 0. 1. + 587. 1. 2. 27.0 2.5 1.0 1. 12.0 11.5 2. 3. 26.8799896 0. 1. + 588. 1. 5. 42.0 23.0 5.5 4. 20.0 40.0 5. 4. 0.5326087 0. 1. + 612. 1. 5. 27.0 6.0 0.0 2. 16.0 20.0 5. 2. 2.0000000 0. 1. + 616. 1. 5. 37.0 16.5 3.0 2. 14.0 20.0 3. 5. 0.2121212 0. 1. + 618. 1. 2. 32.0 9.0 2.0 2. 16.0 20.0 3. 5. 1.3333330 0. 1. + 630. 1. 3. 37.0 16.5 5.5 3. 12.0 20.0 5. 5. 2.5454540 0. 1. + 633. 1. 5. 27.0 6.0 2.0 2. 12.0 20.0 3. 4. 0.1666666 0. 1. + 648. 1. 5. 32.0 16.5 3.0 1. 12.0 20.0 4. 4. 0.4848484 0. 1. + 652. 1. 5. 27.0 9.0 2.0 1. 14.0 11.5 5. 1. 1.3333330 0. 1. + 672. 1. 4. 22.0 2.5 0.0 2. 16.0 20.0 5. 5. 0.4000000 0. 1. + 674. 1. 5. 32.0 16.5 2.0 4. 14.0 14.0 5. 2. 0.4848484 0. 1. + 706. 1. 2. 22.0 6.0 2.0 2. 14.0 9.0 2. 5. 0.1666666 0. 1. + 715. 1. 3. 32.0 13.0 3.0 1. 12.0 11.5 4. 5. 1.5076914 0. 1. + 733. 1. 5. 32.0 16.5 3.0 2. 12.0 20.0 3. 4. 0.0606061 0. 1. + 734. 1. 3. 27.0 6.0 2.0 1. 14.0 11.5 3. 6. 2.0416660 0. 1. + 736. 1. 5. 22.0 2.5 0.0 1. 20.0 14.0 4. 4. 0.4000000 0. 1. + 740. 1. 3. 32.0 9.0 2.0 3. 14.0 20.0 3. 5. 0.8888888 0. 1. + 771. 1. 3. 22.0 2.5 1.0 2. 14.0 11.5 3. 2. 4.7999992 0. 1. + 775. 1. 3. 22.0 2.5 0.0 2. 16.0 9.0 3. 4. 4.7999992 0. 1. + 779. 1. 5. 27.0 9.0 2.0 1. 16.0 40.0 4. 6. 1.3333330 0. 1. + 780. 1. 3. 42.0 23.0 2.0 2. 12.0 14.0 2. 2. 0.1521739 0. 1. + 784. 1. 3. 37.0 16.5 3.0 2. 17.0 20.0 3. 2. 1.1878777 0. 1. + 808. 1. 5. 32.0 13.0 2.0 2. 12.0 20.0 2. 6. 0.9423077 0. 1. + 822. 1. 1. 27.0 13.0 2.0 2. 12.0 11.5 4. 4. 1.5076914 0. 1. + 825. 1. 5. 27.0 2.5 0.0 2. 14.0 20.0 3. 2. 0.4000000 0. 1. + 827. 1. 5. 27.0 9.0 0.0 1. 14.0 20.0 4. 4. 0.1111111 0. 1. + 839. 1. 5. 32.0 13.0 2.0 2. 16.0 20.0 3. 3. 0.9423077 0. 1. + 860. 1. 4. 27.0 9.0 2.0 2. 14.0 20.0 3. 5. 0.3888888 0. 1. + 865. 1. 3. 22.0 2.5 1.0 3. 14.0 11.5 5. 4. 4.8999996 0. 1. + 866. 1. 2. 37.0 23.0 2.0 2. 12.0 40.0 5. 5. 0.5326087 0. 1. + 882. 1. 2. 27.0 6.0 2.0 1. 14.0 20.0 3. 5. 2.0416660 0. 1. + 922. 1. 4. 27.0 2.5 1.0 2. 12.0 11.5 5. 2. 4.8999996 0. 1. + 946. 1. 3. 37.0 13.0 5.5 2. 12.0 40.0 5. 5. 5.1692305 0. 1. + 948. 1. 5. 37.0 16.5 4.0 1. 12.0 40.0 3. 6. 1.6969690 0. 1. + 954. 1. 5. 22.0 2.5 0.0 1. 14.0 20.0 3. 5. 1.3999996 0. 1. + 955. 1. 4. 42.0 13.0 0.0 1. 14.0 11.5 5. 5. 0.0769231 0. 1. + 961. 1. 5. 27.0 9.0 1.0 1. 14.0 20.0 5. 5. 2.1777763 0. 1. + 980. 1. 4. 22.0 2.5 0.0 1. 14.0 11.5 3. 4. 1.3999996 0. 1. + 1000. 1. 4. 22.0 2.5 1.0 2. 14.0 20.0 5. 4. 7.8399963 0. 1. + 1011. 1. 4. 27.0 6.0 2.0 3. 16.0 20.0 4. 6. 0.5833333 0. 1. + 1013. 1. 2. 32.0 16.5 1.0 2. 14.0 40.0 3. 5. 2.7151508 0. 1. + 1024. 1. 3. 27.0 13.0 2.0 1. 14.0 20.0 3. 4. 0.9423077 0. 1. + 1029. 1. 4. 22.0 0.5 0.0 2. 12.0 20.0 3. 2. 7.0000000 0. 1. + 1035. 1. 5. 27.0 6.0 1.0 1. 16.0 20.0 4. 3. 3.2666645 0. 1. + 1037. 1. 2. 27.0 9.0 2.0 2. 14.0 11.5 3. 5. 4.6666660 0. 1. + 1041. 1. 3. 27.0 9.0 2.0 2. 12.0 14.0 3. 4. 2.1777763 0. 1. + 1047. 1. 4. 32.0 16.5 3.0 3. 12.0 20.0 2. 3. 0.4848484 0. 1. + 1049. 1. 5. 22.0 2.5 0.0 1. 12.0 20.0 3. 3. 1.3999996 0. 1. + 1071. 1. 4. 22.0 2.5 1.0 2. 14.0 11.5 4. 4. 3.1999998 0. 1. + 1072. 1. 1. 22.0 2.5 0.0 2. 9.0 6.5 2. 4. 11.1999998 0. 1. + 1074. 1. 3. 32.0 13.0 2.0 1. 20.0 40.0 6. 6. 1.5076914 0. 1. + 1101. 1. 5. 32.0 9.0 1.0 2. 14.0 40.0 3. 5. 1.3333330 0. 1. + 1118. 1. 5. 27.0 2.5 0.0 1. 20.0 20.0 6. 4. 1.3999996 0. 1. + 1125. 1. 4. 27.0 9.0 2.0 2. 14.0 9.0 2. 5. 0.3888888 0. 1. + 1128. 1. 4. 27.0 6.0 0.0 3. 12.0 11.5 5. 2. 2.0000000 0. 1. + 1129. 1. 2. 22.0 2.5 0.0 3. 14.0 20.0 3. 2. 4.8999996 0. 1. + 1130. 1. 3. 27.0 9.0 2.0 3. 17.0 9.0 4. 6. 1.3611107 0. 1. + 1151. 1. 4. 27.0 6.0 2.0 1. 14.0 40.0 3. 4. 2.0416660 0. 1. + 1152. 1. 5. 22.0 2.5 1.0 1. 12.0 20.0 2. 2. 1.3999996 0. 1. + 1158. 1. 4. 27.0 16.5 4.0 3. 12.0 40.0 2. 6. 0.2121212 0. 1. + 1165. 1. 2. 27.0 6.0 1.0 2. 14.0 11.5 4. 3. 3.2666645 0. 1. + 1187. 1. 2. 32.0 6.0 1.0 1. 17.0 11.5 4. 4. 7.4666672 0. 1. + 1194. 1. 5. 27.0 6.0 2.0 2. 16.0 20.0 4. 3. 0.5833333 0. 1. + 1202. 1. 4. 42.0 23.0 3.0 3. 17.0 20.0 4. 4. 0.5217391 0. 1. + 1207. 1. 4. 32.0 9.0 2.0 1. 16.0 20.0 4. 6. 0.1111111 0. 1. + 1223. 1. 3. 42.0 23.0 4.0 3. 14.0 20.0 4. 3. 0.5217391 0. 1. + 1232. 1. 5. 27.0 6.0 2.0 1. 12.0 9.0 5. 2. 2.0000000 0. 1. + 1233. 1. 2. 42.0 23.0 4.0 4. 20.0 40.0 4. 5. 0.1521739 0. 1. + 1251. 1. 3. 32.0 6.0 0.0 2. 20.0 40.0 4. 5. 4.6666660 0. 1. + 1259. 1. 5. 27.0 2.5 0.0 2. 14.0 20.0 3. 2. 1.3999996 0. 1. + 1261. 1. 2. 42.0 16.5 3.0 3. 12.0 20.0 3. 5. 1.1878777 0. 1. + 1269. 1. 4. 37.0 23.0 3.0 2. 12.0 20.0 5. 4. 1.8260860 0. 1. + 1271. 1. 3. 27.0 2.5 0.0 2. 17.0 14.0 4. 4. 1.3999996 0. 1. + 1278. 1. 3. 32.0 13.0 3.0 3. 20.0 40.0 4. 6. 3.2307692 0. 1. + 1288. 1. 3. 27.0 2.5 0.0 2. 14.0 40.0 3. 4. 4.7999992 0. 1. + 1296. 1. 3. 42.0 16.5 2.0 1. 16.0 40.0 3. 5. 1.1878777 0. 1. + 1301. 1. 4. 22.0 2.5 0.0 2. 14.0 20.0 5. 5. 0.4000000 0. 1. + 1314. 1. 5. 27.0 6.0 0.0 3. 14.0 20.0 3. 5. 0.5833333 0. 1. + 1320. 1. 3. 22.0 2.5 0.0 1. 12.0 11.5 2. 4. 7.8399963 0. 1. + 1325. 1. 4. 27.0 6.0 0.0 3. 14.0 40.0 2. 4. 11.1999989 0. 1. + 1333. 1. 3. 27.0 9.0 2.0 2. 16.0 14.0 3. 4. 1.3611107 0. 1. + 1334. 1. 2. 27.0 9.0 1.0 2. 14.0 20.0 2. 2. 4.9777775 0. 1. + 1337. 1. 3. 22.0 2.5 0.0 3. 12.0 20.0 3. 3. 4.7999992 0. 1. + 1339. 1. 4. 32.0 16.5 4.0 4. 14.0 20.0 3. 5. 2.7151508 0. 1. + 1349. 1. 5. 32.0 2.5 2.0 2. 14.0 20.0 3. 4. 0.4000000 0. 1. + 1351. 1. 4. 27.0 2.5 0.0 2. 14.0 40.0 3. 5. 0.4000000 0. 1. + 1356. 1. 5. 32.0 9.0 3.0 3. 16.0 11.5 4. 4. 0.1111111 0. 1. + 1364. 1. 3. 32.0 13.0 2.0 2. 12.0 20.0 3. 5. 0.2692307 0. 1. + 1368. 1. 3. 32.0 16.5 3.0 3. 12.0 20.0 3. 2. 0.7272727 0. 1. + 1369. 1. 5. 42.0 23.0 2.0 2. 14.0 20.0 5. 5. 0.5217391 0. 1. + 1370. 1. 3. 27.0 16.5 4.0 3. 14.0 20.0 4. 2. 0.7424242 0. 1. + 1374. 1. 3. 32.0 16.5 4.0 2. 20.0 20.0 4. 4. 0.7272727 0. 1. + 1378. 1. 4. 22.0 2.5 2.0 2. 14.0 14.0 5. 2. 4.7999992 0. 1. + 1392. 1. 5. 27.0 6.0 0.0 1. 12.0 20.0 3. 4. 7.4666672 0. 1. + 1396. 1. 4. 37.0 16.5 3.0 4. 16.0 40.0 5. 5. 0.2121212 0. 1. + 1410. 1. 3. 22.0 2.5 0.0 2. 12.0 6.5 3. 5. 1.3999996 0. 1. + 1411. 1. 4. 32.0 13.0 2.0 2. 14.0 20.0 3. 5. 1.5076914 0. 1. + 1422. 1. 5. 42.0 23.0 5.5 3. 17.0 20.0 4. 4. 0.5217391 0. 1. + 1455. 1. 2. 27.0 6.0 2.0 3. 12.0 11.5 2. 2. 1.3333330 0. 1. + 1465. 1. 5. 22.0 2.5 1.0 2. 16.0 20.0 3. 6. 1.3999996 0. 1. + 1486. 1. 3. 42.0 23.0 2.0 3. 12.0 11.5 2. 2. 0.5326087 0. 1. + 1495. 1. 5. 42.0 23.0 3.0 1. 14.0 40.0 3. 5. 1.8260860 0. 1. + 1499. 1. 4. 22.0 2.5 0.0 3. 12.0 20.0 3. 4. 4.8999996 0. 1. + 1516. 1. 3. 27.0 9.0 1.0 4. 14.0 20.0 5. 5. 0.1111111 0. 1. + 1519. 1. 2. 37.0 23.0 3.0 3. 12.0 20.0 2. 4. 4.1739130 0. 1. + 1553. 1. 3. 32.0 9.0 3.0 3. 14.0 20.0 4. 5. 0.3888888 0. 1. + 1554. 1. 5. 37.0 16.5 4.0 3. 12.0 14.0 3. 4. 1.1878777 0. 1. + 1559. 1. 3. 27.0 9.0 2.0 2. 12.0 14.0 5. 2. 1.3333330 0. 1. + 1560. 1. 3. 27.0 6.0 1.0 2. 17.0 6.5 2. 2. 1.3333330 0. 1. + 1563. 1. 5. 22.0 2.5 0.0 3. 14.0 14.0 3. 3. 1.3999996 0. 1. + 1568. 1. 5. 27.0 6.0 0.0 2. 17.0 20.0 4. 5. 1.3333330 0. 1. + 1591. 1. 4. 22.0 2.5 0.0 2. 12.0 14.0 4. 2. 4.8999996 0. 1. + 1595. 1. 4. 27.0 6.0 0.0 2. 12.0 20.0 3. 4. 4.6666660 0. 1. + 1610. 1. 3. 32.0 9.0 1.0 2. 12.0 20.0 3. 3. 0.1111111 0. 1. + 1611. 1. 1. 42.0 23.0 4.0 3. 12.0 20.0 3. 5. 0.8521735 0. 1. + 1612. 1. 2. 22.0 6.0 2.0 2. 12.0 20.0 3. 4. 1.3333330 0. 1. + 1617. 1. 4. 32.0 16.5 2.0 2. 12.0 14.0 2. 2. 0.4848484 0. 1. + 1635. 1. 4. 32.0 13.0 3.0 3. 14.0 11.5 2. 2. 0.9423077 0. 1. + 1639. 1. 5. 27.0 9.0 2.0 1. 12.0 20.0 3. 3. 0.3888888 0. 1. + 1649. 1. 3. 42.0 23.0 3.0 2. 12.0 20.0 3. 2. 0.5217391 0. 1. + 1673. 1. 3. 37.0 16.5 1.0 3. 20.0 20.0 6. 6. 2.7151508 0. 1. + 1674. 1. 5. 32.0 13.0 2.0 1. 12.0 20.0 5. 2. 0.9423077 0. 1. + 1677. 1. 4. 27.0 13.0 3.0 1. 12.0 9.0 4. 2. 3.4461536 0. 1. + 1688. 1. 2. 37.0 13.0 0.0 2. 14.0 20.0 3. 5. 0.9230769 0. 1. + 1690. 1. 3. 27.0 9.0 1.0 1. 12.0 11.5 2. 2. 3.1111107 0. 1. + 1708. 1. 5. 27.0 6.0 0.0 1. 14.0 40.0 5. 5. 3.2666645 0. 1. + 1711. 1. 2. 42.0 23.0 2.0 3. 12.0 14.0 5. 2. 0.8521735 0. 1. + 1712. 1. 5. 27.0 6.0 0.0 2. 16.0 11.5 3. 4. 0.5833333 0. 1. + 1713. 1. 4. 22.0 2.5 0.0 4. 16.0 14.0 5. 4. 7.8399963 0. 1. + 1720. 1. 5. 22.0 2.5 0.0 2. 16.0 6.5 4. 4. 1.3999996 0. 1. + 1724. 1. 5. 42.0 13.0 0.0 3. 12.0 11.5 3. 2. 1.5076914 0. 1. + 1742. 1. 4. 22.0 2.5 1.0 1. 16.0 20.0 3. 4. 1.3999996 0. 1. + 1757. 1. 4. 32.0 9.0 1.0 3. 16.0 14.0 3. 5. 1.3611107 0. 1. + 1773. 1. 4. 27.0 9.0 2.0 2. 12.0 11.5 4. 2. 0.3888888 0. 1. + 1793. 1. 5. 27.0 6.0 0.0 1. 16.0 14.0 5. 2. 2.0416660 0. 1. + 1796. 1. 4. 32.0 16.5 3.0 2. 14.0 20.0 5. 4. 2.5454540 0. 1. + 1802. 1. 2. 42.0 2.5 0.0 4. 20.0 40.0 6. 5. 4.7999992 0. 1. + 1805. 1. 2. 42.0 23.0 5.5 4. 14.0 14.0 3. 6. 0.3478261 0. 1. + 1822. 1. 4. 42.0 23.0 4.0 2. 12.0 20.0 3. 2. 0.3478261 0. 1. + 1827. 1. 3. 22.0 2.5 0.0 3. 16.0 20.0 5. 5. 4.7999992 0. 1. + 1837. 1. 2. 22.0 2.5 0.0 3. 14.0 20.0 3. 5. 1.3999996 0. 1. + 1844. 1. 4. 22.0 2.5 0.0 3. 14.0 14.0 3. 3. 4.7999992 0. 1. + 1852. 1. 4. 32.0 16.5 4.0 3. 14.0 11.5 4. 4. 0.2121212 0. 1. + 1855. 1. 5. 32.0 13.0 2.0 4. 17.0 14.0 4. 5. 0.9423077 0. 1. + 1863. 1. 4. 32.0 13.0 3.0 4. 12.0 20.0 3. 5. 1.5076914 0. 1. + 1872. 1. 5. 27.0 9.0 2.0 1. 14.0 11.5 4. 4. 1.3611107 0. 1. + 1889. 1. 4. 27.0 6.0 1.0 4. 16.0 11.5 3. 4. 0.5833333 0. 1. + 1891. 1. 4. 27.0 9.0 2.0 3. 12.0 11.5 2. 4. 1.3333330 0. 1. + 1904. 1. 1. 37.0 16.5 3.0 2. 17.0 11.5 4. 4. 0.7424242 0. 1. + 1922. 1. 3. 27.0 9.0 3.0 2. 12.0 20.0 4. 5. 1.3611107 0. 1. + 1926. 1. 2. 27.0 6.0 0.0 2. 14.0 20.0 3. 4. 4.6666660 0. 1. + 1942. 1. 3. 22.0 2.5 1.0 2. 14.0 9.0 2. 2. 25.5999908 0. 1. + 1950. 1. 4. 22.0 2.5 1.0 3. 12.0 9.0 3. 4. 4.8999996 0. 1. + 1953. 1. 4. 27.0 2.5 0.0 2. 14.0 20.0 4. 4. 1.3999996 0. 1. + 1967. 1. 1. 42.0 23.0 2.0 3. 12.0 11.5 3. 5. 0.5217391 0. 1. + 1968. 1. 5. 27.0 6.0 2.0 4. 14.0 40.0 5. 5. 3.2666645 0. 1. + 1969. 1. 5. 27.0 6.0 0.0 1. 12.0 20.0 4. 2. 0.5833333 0. 1. + 1993. 1. 4. 37.0 23.0 2.0 3. 12.0 40.0 3. 5. 0.1521739 0. 1. + 2003. 1. 4. 22.0 6.0 2.0 2. 12.0 11.5 3. 4. 0.1666666 0. 1. + 2011. 1. 1. 32.0 13.0 1.0 3. 14.0 6.5 3. 1. 0.9423077 0. 1. + 2020. 1. 5. 22.0 6.0 1.0 1. 16.0 20.0 3. 5. 0.5833333 0. 1. + 2022. 1. 5. 27.0 6.0 0.0 1. 14.0 40.0 3. 5. 2.0000000 0. 1. + 2034. 1. 5. 27.0 6.0 1.0 1. 17.0 40.0 4. 5. 3.2666645 0. 1. + 2046. 1. 4. 37.0 16.5 1.0 2. 14.0 20.0 2. 5. 1.1878777 0. 1. + 2051. 1. 4. 27.0 9.0 2.0 2. 12.0 9.0 2. 2. 2.1777763 0. 1. + 2052. 1. 4. 42.0 23.0 4.0 1. 12.0 40.0 3. 4. 0.1521739 0. 1. + 2086. 1. 4. 32.0 13.0 0.0 3. 12.0 20.0 2. 2. 2.1538458 0. 1. + 2096. 1. 5. 32.0 13.0 2.0 3. 12.0 11.5 2. 2. 0.9230769 0. 1. + 2113. 1. 4. 42.0 23.0 4.0 1. 17.0 11.5 4. 4. 0.8521735 0. 1. + 2123. 1. 4. 37.0 23.0 4.0 2. 14.0 20.0 4. 3. 0.5326087 0. 1. + 2124. 1. 4. 32.0 16.5 2.0 2. 14.0 20.0 3. 6. 1.1878777 0. 1. + 2129. 1. 4. 27.0 13.0 4.0 3. 12.0 40.0 2. 4. 3.2307692 0. 1. + 2135. 1. 5. 37.0 23.0 3.0 2. 12.0 11.5 3. 2. 0.1521739 0. 1. + 2147. 1. 2. 32.0 13.0 0.0 3. 9.0 11.5 6. 2. 0.0769231 0. 1. + 2153. 1. 5. 32.0 13.0 2.0 1. 14.0 40.0 4. 6. 3.4461536 0. 1. + 2155. 1. 4. 27.0 6.0 1.0 2. 14.0 14.0 4. 2. 0.1666666 0. 1. + 2156. 1. 5. 27.0 2.5 0.0 3. 20.0 20.0 4. 5. 4.7999992 0. 1. + 2160. 1. 2. 42.0 23.0 3.0 3. 14.0 20.0 4. 2. 0.5217391 0. 1. + 2176. 1. 3. 27.0 6.0 0.0 1. 14.0 20.0 3. 2. 0.5833333 0. 1. + 2195. 1. 4. 27.0 6.0 1.0 2. 12.0 9.0 3. 4. 2.0416660 0. 1. + 2196. 1. 2. 22.0 2.5 0.0 3. 12.0 11.5 3. 3. 3.1999998 0. 1. + 2217. 1. 3. 27.0 2.5 0.0 3. 12.0 11.5 2. 2. 7.8399963 0. 1. + 2223. 1. 4. 42.0 23.0 2.0 2. 17.0 40.0 5. 2. 0.8521735 0. 1. + 2235. 1. 5. 32.0 13.0 2.0 1. 14.0 14.0 2. 5. 0.9230769 0. 1. + 2240. 1. 5. 32.0 13.0 0.0 1. 12.0 20.0 5. 4. 2.1538458 0. 1. + 2244. 1. 4. 27.0 9.0 2.0 2. 16.0 11.5 4. 5. 0.3888888 0. 1. + 2255. 1. 5. 42.0 23.0 4.0 3. 17.0 40.0 4. 4. 0.1521739 0. 1. + 2268. 1. 3. 27.0 9.0 3.0 1. 16.0 20.0 4. 5. 0.1111111 0. 1. + 2270. 1. 5. 42.0 13.0 0.0 2. 14.0 20.0 5. 3. 0.9230769 0. 1. + 2271. 1. 5. 32.0 16.5 2.0 2. 16.0 40.0 5. 5. 0.2121212 0. 1. + 2276. 1. 1. 42.0 23.0 2.0 1. 12.0 14.0 3. 3. 1.8260860 0. 1. + 2277. 1. 4. 27.0 6.0 0.0 1. 12.0 11.5 3. 4. 0.5833333 0. 1. + 2279. 1. 5. 42.0 23.0 3.0 2. 12.0 20.0 5. 4. 1.9478254 0. 1. + 2280. 1. 4. 27.0 9.0 2.0 3. 16.0 20.0 4. 5. 1.3333330 0. 1. + 2281. 1. 2. 32.0 13.0 3.0 3. 20.0 20.0 4. 5. 0.0769231 0. 1. + 2283. 1. 4. 22.0 2.5 0.0 2. 12.0 11.5 3. 2. 11.1999998 0. 1. + 2286. 1. 3. 32.0 16.5 3.0 2. 12.0 20.0 3. 2. 0.7272727 0. 1. + 2289. 1. 5. 27.0 6.0 1.0 3. 12.0 14.0 5. 2. 2.0000000 0. 1. + 2290. 1. 3. 27.0 2.5 0.0 1. 12.0 20.0 3. 4. 3.1999998 0. 1. + 2315. 1. 5. 22.0 2.5 0.0 2. 16.0 20.0 4. 6. 1.3999996 0. 1. + 2319. 1. 3. 32.0 13.0 0.0 2. 16.0 40.0 4. 5. 0.9230769 0. 1. + 2324. 1. 4. 37.0 16.5 2.0 2. 20.0 40.0 4. 2. 0.7424242 0. 1. + 2330. 1. 4. 27.0 6.0 1.0 2. 17.0 20.0 4. 5. 2.0416660 0. 1. + 2355. 1. 4. 37.0 23.0 4.0 2. 12.0 20.0 3. 2. 0.1521739 0. 1. + 2363. 1. 4. 22.0 2.5 2.0 2. 14.0 9.0 3. 5. 4.8999996 0. 1. + 2381. 1. 3. 27.0 6.0 1.0 3. 17.0 20.0 4. 4. 1.3333330 0. 1. + 2393. 1. 4. 32.0 16.5 3.0 4. 12.0 11.5 3. 5. 1.1878777 0. 1. + 2400. 1. 5. 22.0 6.0 2.0 3. 14.0 20.0 3. 5. 7.4666672 0. 1. + 2407. 1. 4. 32.0 13.0 2.0 3. 14.0 6.5 3. 2. 0.0769231 0. 1. + 2420. 1. 4. 27.0 9.0 1.0 1. 14.0 20.0 2. 5. 1.3611107 0. 1. + 2426. 1. 3. 32.0 16.5 2.0 2. 12.0 20.0 3. 4. 0.7272727 0. 1. + 2432. 1. 4. 27.0 13.0 2.0 2. 12.0 14.0 3. 2. 0.0769231 0. 1. + 2448. 1. 5. 27.0 9.0 1.0 3. 12.0 20.0 2. 3. 0.3888888 0. 1. + 2455. 1. 3. 27.0 9.0 0.0 1. 12.0 20.0 3. 4. 16.0000000 0. 1. + 2511. 1. 4. 27.0 9.0 0.0 3. 14.0 40.0 5. 6. 4.9777775 0. 1. + 2514. 1. 3. 22.0 2.5 0.0 1. 12.0 9.0 3. 2. 7.8399963 0. 1. + 2539. 1. 3. 32.0 13.0 2.0 3. 20.0 20.0 4. 5. 0.0769231 0. 1. + 2541. 1. 4. 42.0 23.0 5.5 2. 14.0 20.0 5. 3. 0.5326087 0. 1. + 2546. 1. 5. 22.0 2.5 0.0 2. 16.0 20.0 3. 4. 4.8999996 0. 1. + 2547. 1. 5. 27.0 9.0 1.0 2. 14.0 20.0 4. 5. 0.3888888 0. 1. + 2556. 1. 5. 37.0 13.0 2.0 3. 14.0 40.0 4. 3. 0.2692307 0. 1. + 2575. 1. 5. 27.0 2.5 1.0 3. 16.0 6.5 3. 3. 1.3999996 0. 1. + 2577. 1. 4. 27.0 6.0 0.0 2. 14.0 11.5 3. 2. 0.5833333 0. 1. + 2589. 1. 5. 22.0 2.5 0.0 2. 12.0 6.5 4. 4. 7.8399963 0. 1. + 2590. 1. 5. 27.0 6.0 1.0 3. 12.0 11.5 2. 3. 1.3333330 0. 1. + 2607. 1. 4. 32.0 9.0 2.0 2. 16.0 20.0 5. 5. 1.3333330 0. 1. + 2608. 1. 4. 32.0 6.0 2.0 3. 14.0 20.0 4. 2. 2.0416660 0. 1. + 2609. 1. 2. 22.0 2.5 1.0 2. 17.0 11.5 2. 2. 11.1999998 0. 1. + 2628. 1. 5. 27.0 2.5 0.0 2. 17.0 40.0 5. 5. 4.7999992 0. 1. + 2640. 1. 5. 37.0 16.5 3.0 2. 14.0 14.0 4. 4. 1.1878777 0. 1. + 2642. 1. 3. 27.0 2.5 1.0 3. 14.0 14.0 5. 3. 4.7999992 0. 1. + 2653. 1. 4. 27.0 6.0 1.0 1. 14.0 20.0 3. 4. 0.1666666 0. 1. + 2655. 1. 5. 27.0 6.0 2.0 3. 12.0 20.0 2. 4. 3.2666645 0. 1. + 2666. 1. 4. 42.0 23.0 3.0 2. 12.0 14.0 3. 2. 1.2173910 0. 1. + 2667. 1. 3. 27.0 6.0 2.0 3. 14.0 11.5 3. 5. 0.5833333 0. 1. + 2669. 1. 5. 22.0 6.0 1.0 3. 14.0 14.0 1. 4. 2.0000000 0. 1. + 2670. 1. 5. 37.0 23.0 3.0 2. 12.0 20.0 3. 4. 0.5326087 0. 1. + 2687. 1. 3. 37.0 16.5 3.0 3. 12.0 11.5 3. 4. 1.1878777 0. 1. + 2690. 1. 4. 42.0 23.0 4.0 2. 9.0 11.5 4. 4. 0.5217391 0. 1. + 2699. 1. 4. 42.0 23.0 3.0 3. 12.0 11.5 3. 5. 0.5217391 0. 1. + 2704. 1. 4. 37.0 23.0 2.0 2. 16.0 40.0 4. 6. 0.1521739 0. 1. + 2710. 1. 5. 32.0 16.5 4.0 1. 12.0 11.5 2. 1. 0.4848484 0. 1. + 2719. 1. 4. 27.0 6.0 2.0 3. 14.0 11.5 2. 6. 1.3333330 0. 1. + 2757. 1. 3. 32.0 16.5 2.0 2. 12.0 11.5 2. 2. 1.1878777 0. 1. + 2770. 1. 2. 27.0 6.0 1.0 2. 12.0 11.5 3. 2. 0.5833333 0. 1. + 2782. 1. 4. 22.0 2.5 0.0 1. 14.0 20.0 3. 4. 4.7999992 0. 1. + 2808. 1. 3. 22.0 6.0 1.0 2. 14.0 6.5 3. 2. 0.5833333 0. 1. + 2814. 1. 2. 27.0 6.0 0.0 3. 12.0 14.0 3. 3. 0.1666666 0. 1. + 2818. 1. 4. 27.0 6.0 1.0 2. 12.0 14.0 2. 5. 3.2666645 0. 1. + 2821. 1. 3. 22.0 2.5 1.0 1. 12.0 20.0 5. 5. 4.8999996 0. 1. + 2824. 1. 2. 37.0 16.5 3.0 2. 14.0 14.0 3. 5. 1.1878777 0. 1. + 2844. 1. 5. 32.0 13.0 2.0 2. 16.0 40.0 4. 2. 3.2307692 0. 1. + 2846. 1. 5. 22.0 2.5 0.0 1. 12.0 6.5 3. 2. 1.3999996 0. 1. + 2865. 1. 4. 22.0 6.0 1.0 3. 14.0 20.0 4. 1. 0.5833333 0. 1. + 2868. 1. 4. 22.0 0.5 0.0 2. 12.0 20.0 5. 2. 2.0000000 0. 1. + 2877. 1. 3. 27.0 2.5 0.0 2. 20.0 20.0 4. 4. 1.3999996 0. 1. + 2886. 1. 5. 27.0 2.5 0.0 3. 12.0 9.0 2. 2. 1.3999996 0. 1. + 2898. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 3. 2. 1.3999996 0. 1. + 2921. 1. 4. 42.0 16.5 2.0 1. 16.0 40.0 4. 5. 2.7151508 0. 1. + 2929. 1. 5. 32.0 13.0 1.0 2. 12.0 11.5 5. 2. 1.5076914 0. 1. + 2933. 1. 5. 32.0 13.0 3.0 3. 14.0 20.0 3. 5. 0.9230769 0. 1. + 2944. 1. 5. 32.0 2.5 0.0 3. 14.0 14.0 4. 2. 4.7999992 0. 1. + 2955. 1. 3. 32.0 13.0 1.0 1. 16.0 40.0 4. 5. 0.9423077 0. 1. + 2970. 1. 5. 42.0 23.0 2.0 3. 14.0 20.0 5. 6. 1.2173910 0. 1. + 2975. 1. 4. 27.0 6.0 1.0 1. 14.0 20.0 3. 2. 2.0416660 0. 1. + 2978. 1. 3. 37.0 16.5 4.0 3. 12.0 20.0 2. 5. 1.1878777 0. 1. + 2986. 1. 5. 37.0 16.5 2.0 2. 12.0 11.5 2. 4. 0.2121212 0. 1. + 2987. 1. 2. 32.0 9.0 1.0 2. 12.0 11.5 3. 3. 1.3333330 0. 1. + 3004. 1. 2. 32.0 13.0 0.0 2. 14.0 20.0 5. 4. 0.2692307 0. 1. + 3037. 1. 4. 22.0 0.5 0.0 1. 12.0 20.0 3. 4. 2.0000000 0. 1. + 3059. 1. 4. 22.0 6.0 0.0 1. 12.0 20.0 3. 4. 0.1666666 0. 1. + 3079. 1. 3. 37.0 16.5 3.0 3. 12.0 40.0 2. 2. 0.2121212 0. 1. + 3097. 1. 3. 27.0 2.5 0.0 2. 17.0 40.0 4. 5. 3.1999998 0. 1. + 3103. 1. 3. 22.0 2.5 0.0 2. 17.0 20.0 5. 4. 0.4000000 0. 1. + 3104. 1. 4. 32.0 16.5 2.0 2. 14.0 20.0 3. 4. 0.7272727 0. 1. + 3114. 1. 4. 42.0 16.5 2.0 3. 17.0 20.0 5. 6. 0.4848484 0. 1. + 3121. 1. 4. 32.0 16.5 5.5 3. 12.0 11.5 2. 2. 1.1878777 0. 1. + 3124. 1. 3. 32.0 13.0 2.0 3. 14.0 11.5 2. 2. 0.6153846 0. 1. + 3135. 1. 4. 42.0 23.0 2.0 2. 20.0 40.0 4. 5. 0.8521735 0. 1. + 3137. 1. 3. 32.0 9.0 1.0 2. 16.0 20.0 4. 3. 4.6666660 0. 1. + 3143. 1. 4. 22.0 2.5 0.0 2. 14.0 40.0 3. 2. 1.3999996 0. 1. + 3149. 1. 3. 37.0 16.5 3.0 3. 12.0 40.0 3. 3. 5.8181810 0. 1. + 3150. 1. 3. 42.0 23.0 3.0 1. 14.0 40.0 3. 4. 0.5217391 0. 1. + 3154. 1. 1. 32.0 16.5 3.0 3. 12.0 20.0 4. 2. 0.7424242 0. 1. + 3155. 1. 2. 37.0 16.5 5.5 2. 12.0 11.5 2. 5. 2.5454540 0. 1. + 3163. 1. 5. 32.0 9.0 0.0 3. 12.0 20.0 3. 5. 2.1777763 0. 1. + 3164. 1. 2. 32.0 16.5 4.0 2. 14.0 20.0 3. 5. 2.7151508 0. 1. + 3169. 1. 3. 22.0 2.5 0.0 2. 17.0 6.5 4. 1. 16.7999878 0. 1. + 3172. 1. 5. 32.0 2.5 0.0 2. 16.0 40.0 5. 5. 4.8999996 0. 1. + 3174. 1. 3. 27.0 6.0 1.0 1. 17.0 14.0 4. 5. 0.1666666 0. 1. + 3203. 1. 4. 27.0 6.0 0.0 1. 17.0 20.0 4. 1. 3.2666645 0. 1. + 3205. 1. 3. 37.0 16.5 2.0 2. 14.0 20.0 4. 2. 0.2121212 0. 1. + 3257. 1. 4. 37.0 16.5 2.0 1. 14.0 20.0 3. 3. 0.2121212 0. 1. + 3269. 1. 5. 42.0 23.0 2.0 3. 14.0 14.0 3. 4. 0.5217391 0. 1. + 3271. 1. 4. 32.0 13.0 2.0 1. 17.0 40.0 4. 2. 0.9230769 0. 1. + 3284. 1. 3. 27.0 9.0 0.0 1. 14.0 14.0 3. 5. 4.9777775 0. 1. + 3302. 1. 3. 32.0 13.0 2.0 1. 12.0 40.0 3. 6. 0.9423077 0. 1. + 3303. 1. 3. 27.0 6.0 2.0 3. 17.0 20.0 4. 6. 2.0416660 0. 1. + 3311. 1. 2. 37.0 16.5 3.0 2. 12.0 14.0 2. 4. 0.7272727 0. 1. + 3315. 1. 2. 22.0 6.0 2.0 1. 14.0 11.5 3. 4. 0.1666666 0. 1. + 3341. 1. 3. 17.5 2.5 1.0 3. 12.0 6.5 4. 2. 4.8999996 0. 1. + 3356. 1. 3. 27.0 6.0 3.0 2. 14.0 20.0 2. 2. 0.1666666 0. 1. + 3359. 1. 3. 22.0 2.5 0.0 1. 12.0 20.0 2. 5. 1.3999996 0. 1. + 3363. 1. 4. 42.0 23.0 3.0 2. 14.0 20.0 3. 5. 1.8260860 0. 1. + 3364. 1. 2. 27.0 6.0 2.0 3. 14.0 14.0 3. 3. 2.0000000 0. 1. + 3380. 1. 4. 32.0 16.5 5.5 2. 14.0 20.0 3. 2. 2.5454540 0. 1. + 3413. 1. 4. 27.0 2.5 0.0 3. 12.0 14.0 3. 5. 0.4000000 0. 1. + 3420. 1. 4. 27.0 6.0 2.0 3. 12.0 14.0 3. 2. 2.0000000 0. 1. + 3428. 1. 4. 27.0 2.5 0.0 3. 16.0 20.0 4. 5. 4.7999992 0. 1. + 3442. 1. 5. 27.0 6.0 0.0 1. 16.0 11.5 4. 5. 4.6666660 0. 1. + 3454. 1. 2. 22.0 6.0 2.0 2. 12.0 20.0 2. 3. 0.5833333 0. 1. + 3471. 1. 3. 27.0 2.5 0.0 1. 20.0 20.0 4. 4. 4.7999992 0. 1. + 3475. 1. 4. 32.0 16.5 3.0 3. 14.0 20.0 3. 5. 0.7272727 0. 1. + 3493. 1. 5. 32.0 13.0 1.0 3. 17.0 20.0 4. 4. 0.9423077 0. 1. + 3494. 1. 3. 22.0 2.5 1.0 2. 12.0 6.5 2. 4. 7.8399963 0. 1. + 3513. 1. 4. 22.0 2.5 0.0 1. 14.0 20.0 3. 3. 1.3999996 0. 1. + 3518. 1. 5. 32.0 9.0 2.0 3. 16.0 20.0 4. 4. 1.3333330 0. 1. + 3525. 1. 5. 32.0 2.5 0.0 3. 14.0 20.0 5. 4. 0.4000000 0. 1. + 3541. 1. 5. 27.0 9.0 2.0 1. 14.0 14.0 2. 4. 1.3333330 0. 1. + 3545. 1. 4. 32.0 9.0 1.0 2. 14.0 20.0 5. 5. 0.8888888 0. 1. + 3546. 1. 4. 22.0 2.5 0.0 2. 14.0 20.0 3. 5. 1.3999996 0. 1. + 3555. 1. 4. 42.0 23.0 1.0 3. 12.0 14.0 3. 3. 2.9217386 0. 1. + 3558. 1. 4. 27.0 9.0 2.0 2. 16.0 20.0 4. 4. 1.3333330 0. 1. + 3561. 1. 4. 32.0 16.5 3.0 2. 17.0 11.5 4. 2. 0.4848484 0. 1. + 3563. 1. 4. 27.0 6.0 2.0 2. 16.0 9.0 4. 5. 7.4666672 0. 1. + 3574. 1. 4. 37.0 16.5 2.0 2. 14.0 20.0 4. 5. 0.7272727 0. 1. + 3590. 1. 5. 27.0 6.0 1.0 3. 16.0 14.0 4. 4. 4.6666660 0. 1. + 3596. 1. 2. 27.0 6.0 1.0 2. 12.0 6.5 2. 2. 4.6666660 0. 1. + 3604. 1. 4. 22.0 2.5 1.0 1. 12.0 11.5 2. 2. 3.1999998 0. 1. + 3605. 1. 3. 37.0 13.0 1.0 2. 12.0 11.5 3. 2. 0.9423077 0. 1. + 3627. 1. 4. 42.0 23.0 2.0 2. 14.0 20.0 3. 5. 0.1521739 0. 1. + 3634. 1. 5. 22.0 2.5 0.0 1. 14.0 11.5 3. 2. 0.4000000 0. 1. + 3639. 1. 3. 42.0 23.0 2.0 1. 17.0 40.0 4. 6. 4.1739130 0. 1. + 3649. 1. 4. 32.0 16.5 2.0 3. 12.0 14.0 3. 4. 0.7272727 0. 1. + 3664. 1. 1. 32.0 16.5 3.0 3. 14.0 20.0 3. 4. 0.0606061 0. 1. + 3670. 1. 5. 27.0 13.0 2.0 3. 12.0 20.0 3. 2. 0.9230769 0. 1. + 3671. 1. 3. 27.0 6.0 0.0 1. 17.0 40.0 5. 4. 3.2666645 0. 1. + 3711. 1. 5. 42.0 23.0 5.5 2. 14.0 14.0 4. 4. 0.5326087 0. 1. + 3717. 1. 4. 32.0 16.5 1.0 3. 16.0 14.0 4. 5. 0.0606061 0. 1. + 3728. 1. 2. 22.0 2.5 0.0 1. 12.0 11.5 3. 2. 4.7999992 0. 1. + 3729. 1. 2. 42.0 23.0 1.0 3. 14.0 9.0 4. 2. 0.5326087 0. 1. + 3733. 1. 2. 22.0 6.0 0.0 2. 12.0 11.5 3. 4. 0.5833333 0. 1. + 3737. 1. 4. 27.0 6.0 0.0 1. 16.0 20.0 5. 1. 0.5833333 0. 1. + 3740. 1. 4. 42.0 23.0 1.0 4. 17.0 20.0 3. 2. 1.8260860 0. 1. + 3754. 1. 5. 42.0 23.0 2.0 1. 12.0 20.0 3. 2. 0.3478261 0. 1. + 3772. 1. 4. 27.0 6.0 2.0 2. 16.0 40.0 4. 2. 2.0000000 0. 1. + 3779. 1. 3. 22.0 2.5 0.0 1. 12.0 20.0 3. 2. 1.3999996 0. 1. + 3784. 1. 3. 27.0 13.0 3.0 2. 14.0 14.0 5. 5. 3.4461536 0. 1. + 3800. 1. 4. 32.0 13.0 2.0 2. 14.0 20.0 4. 5. 2.1538458 0. 1. + 3810. 1. 4. 27.0 9.0 3.0 3. 14.0 20.0 4. 3. 0.3888888 0. 1. + 3822. 1. 3. 32.0 9.0 1.0 2. 14.0 14.0 3. 4. 0.3888888 0. 1. + 3824. 1. 3. 27.0 9.0 2.0 1. 14.0 14.0 4. 2. 1.3333330 0. 1. + 3836. 1. 5. 37.0 16.5 5.5 3. 12.0 11.5 2. 2. 1.1878777 0. 1. + 3844. 1. 3. 27.0 6.0 1.0 4. 14.0 11.5 3. 5. 4.6666660 0. 1. + 3860. 1. 2. 27.0 9.0 1.0 1. 14.0 20.0 5. 3. 4.6666660 0. 1. + 3875. 1. 4. 27.0 2.5 0.0 2. 17.0 40.0 4. 6. 7.8399963 0. 1. + 3882. 1. 4. 32.0 13.0 1.0 1. 20.0 11.5 4. 4. 1.5076914 0. 1. + 3889. 1. 1. 42.0 23.0 4.0 3. 12.0 40.0 3. 4. 1.9478254 0. 1. + 3897. 1. 4. 32.0 16.5 1.0 1. 14.0 20.0 5. 5. 0.7424242 0. 1. + 3899. 1. 1. 42.0 23.0 5.5 2. 12.0 11.5 2. 2. 0.5217391 0. 1. + 3940. 1. 4. 37.0 13.0 1.0 2. 12.0 20.0 3. 5. 1.5076914 0. 1. + 3943. 1. 4. 32.0 16.5 2.0 2. 14.0 40.0 5. 5. 1.1878777 0. 1. + 3944. 1. 4. 42.0 23.0 3.0 2. 14.0 20.0 4. 4. 0.0434783 0. 1. + 3946. 1. 5. 27.0 6.0 1.0 3. 14.0 20.0 3. 6. 2.0416660 0. 1. + 3950. 1. 3. 37.0 16.5 4.0 3. 12.0 20.0 3. 2. 0.7272727 0. 1. + 3961. 1. 3. 37.0 23.0 3.0 3. 9.0 6.5 4. 2. 0.1521739 0. 1. + 3963. 1. 4. 37.0 16.5 2.0 2. 12.0 11.5 3. 4. 2.5454540 0. 1. + 3967. 1. 3. 27.0 6.0 2.0 1. 14.0 11.5 4. 5. 1.3333330 0. 1. + 3971. 1. 4. 37.0 13.0 0.0 3. 12.0 14.0 3. 2. 1.5076914 0. 1. + 3975. 1. 2. 27.0 2.5 1.0 3. 16.0 20.0 4. 4. 4.8999996 0. 1. + 3977. 1. 4. 42.0 23.0 5.5 3. 12.0 40.0 5. 5. 0.5326087 0. 1. + 3978. 1. 3. 32.0 16.5 3.0 2. 12.0 20.0 2. 2. 0.7424242 0. 1. + 4001. 1. 4. 37.0 16.5 3.0 2. 12.0 40.0 5. 2. 0.2121212 0. 1. + 4012. 1. 3. 42.0 13.0 0.0 3. 12.0 14.0 4. 4. 0.9230769 0. 1. + 4025. 1. 4. 37.0 13.0 4.0 3. 14.0 11.5 4. 2. 0.6153846 0. 1. + 4041. 1. 2. 32.0 16.5 4.0 2. 14.0 40.0 5. 4. 1.1878777 0. 1. + 4047. 1. 3. 27.0 13.0 2.0 1. 14.0 20.0 4. 4. 2.1538458 0. 1. + 4053. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 4. 5. 0.4000000 0. 1. + 4063. 1. 4. 22.0 2.5 1.0 2. 14.0 14.0 4. 5. 0.4000000 0. 1. + 4083. 1. 3. 32.0 2.5 0.0 1. 16.0 40.0 4. 5. 17.9199982 0. 1. + 4088. 1. 5. 27.0 6.0 2.0 3. 14.0 14.0 3. 5. 3.2666645 0. 1. + 4091. 1. 5. 32.0 16.5 3.0 4. 12.0 20.0 2. 3. 0.0606061 0. 1. + 4097. 1. 2. 42.0 23.0 2.0 3. 16.0 40.0 4. 5. 0.5217391 0. 1. + 4099. 1. 5. 22.0 6.0 2.0 3. 14.0 20.0 2. 4. 0.5833333 0. 1. + 4100. 1. 5. 42.0 23.0 2.0 1. 14.0 40.0 4. 5. 0.0434783 0. 1. + 4121. 1. 4. 22.0 6.0 0.0 2. 14.0 20.0 3. 3. 0.5833333 0. 1. + 4130. 1. 3. 32.0 16.5 4.0 3. 14.0 20.0 3. 4. 0.7272727 0. 1. + 4146. 1. 3. 32.0 16.5 2.0 2. 14.0 20.0 3. 5. 0.7272727 0. 1. + 4158. 1. 4. 42.0 16.5 1.0 3. 17.0 20.0 4. 5. 0.7272727 0. 1. + 4168. 1. 1. 37.0 16.5 3.0 2. 12.0 11.5 3. 5. 0.2121212 0. 1. + 4192. 1. 3. 32.0 13.0 1.0 3. 20.0 11.5 4. 4. 0.0769231 0. 1. + 4201. 1. 3. 27.0 2.5 0.0 3. 14.0 20.0 5. 5. 1.3999996 0. 1. + 4206. 1. 5. 22.0 2.5 2.0 1. 14.0 20.0 5. 4. 16.7999878 0. 1. + 4209. 1. 3. 42.0 23.0 5.5 3. 12.0 6.5 3. 2. 0.5217391 0. 1. + 4220. 1. 4. 27.0 9.0 2.0 3. 12.0 9.0 2. 2. 0.3888888 0. 1. + 4226. 1. 3. 32.0 16.5 2.0 3. 12.0 14.0 2. 4. 1.1878777 0. 1. + 4233. 1. 4. 32.0 16.5 3.0 2. 14.0 20.0 3. 4. 2.5454540 0. 1. + 4252. 1. 3. 27.0 2.5 2.0 2. 16.0 9.0 4. 4. 1.3999996 0. 1. + 4269. 1. 4. 32.0 6.0 2.0 2. 14.0 40.0 4. 4. 4.6666660 0. 1. + 4275. 1. 1. 42.0 23.0 2.0 1. 12.0 6.5 2. 3. 1.9478254 0. 1. + 4277. 1. 4. 22.0 2.5 0.0 2. 16.0 11.5 5. 1. 3.1999998 0. 1. + 4283. 1. 3. 22.0 6.0 0.0 2. 12.0 20.0 3. 4. 2.0000000 0. 1. + 4285. 1. 2. 42.0 23.0 5.5 3. 17.0 20.0 4. 4. 2.9217386 0. 1. + 4293. 1. 3. 27.0 13.0 2.0 2. 12.0 14.0 2. 4. 3.2307692 0. 1. + 4294. 1. 4. 27.0 9.0 2.0 3. 12.0 11.5 2. 2. 0.3888888 0. 1. + 4298. 1. 5. 32.0 16.5 3.0 3. 17.0 40.0 4. 4. 2.5454540 0. 1. + 4302. 1. 5. 32.0 16.5 2.0 1. 14.0 40.0 4. 6. 0.0606061 0. 1. + 4312. 1. 5. 32.0 16.5 3.0 3. 14.0 20.0 2. 5. 1.1878777 0. 1. + 4313. 1. 3. 27.0 9.0 2.0 2. 12.0 20.0 2. 3. 1.3611107 0. 1. + 4315. 1. 2. 27.0 6.0 1.0 3. 12.0 9.0 4. 4. 0.5833333 0. 1. + 4316. 1. 4. 22.0 2.5 2.0 2. 12.0 9.0 5. 2. 7.8399963 0. 1. + 4317. 1. 5. 27.0 6.0 2.0 4. 20.0 11.5 4. 4. 3.2666645 0. 1. + 4334. 1. 3. 22.0 2.5 0.0 2. 14.0 20.0 3. 2. 4.7999992 0. 1. + 4338. 1. 2. 32.0 9.0 0.0 1. 16.0 40.0 5. 4. 7.4666662 0. 1. + 4356. 1. 4. 37.0 16.5 2.0 3. 16.0 11.5 3. 6. 0.7272727 0. 1. + 4373. 1. 4. 42.0 23.0 2.0 3. 12.0 14.0 3. 2. 1.2173910 0. 1. + 4377. 1. 5. 22.0 2.5 0.0 3. 14.0 11.5 3. 4. 7.8399963 0. 1. + 4378. 1. 5. 32.0 9.0 1.0 2. 14.0 11.5 2. 4. 1.3333330 0. 1. + 4393. 1. 4. 37.0 16.5 2.0 3. 12.0 11.5 3. 6. 0.4848484 0. 1. + 4406. 1. 3. 22.0 2.5 0.0 3. 12.0 20.0 3. 4. 1.3999996 0. 1. + 4419. 1. 4. 37.0 16.5 4.0 2. 12.0 20.0 3. 5. 0.7272727 0. 1. + 4422. 1. 4. 27.0 2.5 0.0 3. 17.0 14.0 4. 1. 1.3999996 0. 1. + 4424. 1. 3. 27.0 6.0 0.0 1. 14.0 20.0 3. 5. 2.0416660 0. 1. + 4432. 1. 5. 32.0 16.5 2.0 2. 20.0 20.0 4. 4. 0.7424242 0. 1. + 4443. 1. 2. 22.0 2.5 1.0 2. 12.0 6.5 5. 5. 0.4000000 0. 1. + 4466. 1. 4. 42.0 16.5 2.0 1. 14.0 9.0 5. 4. 0.7424242 0. 1. + 4483. 1. 5. 42.0 13.0 3.0 4. 14.0 14.0 2. 2. 1.5076914 0. 1. + 4485. 1. 5. 32.0 13.0 1.0 3. 16.0 14.0 6. 6. 0.2692307 0. 1. + 4487. 1. 5. 37.0 13.0 0.0 1. 14.0 40.0 4. 5. 0.0769231 0. 1. + 4490. 1. 2. 22.0 6.0 0.0 1. 20.0 11.5 6. 4. 3.2666645 0. 1. + 4498. 1. 4. 22.0 2.5 0.0 2. 12.0 20.0 3. 4. 4.8999996 0. 1. + 4537. 1. 4. 32.0 16.5 1.0 2. 12.0 20.0 3. 4. 0.7272727 0. 1. + 4551. 1. 4. 27.0 6.0 2.0 2. 12.0 14.0 2. 2. 1.3333330 0. 1. + 4553. 1. 2. 37.0 16.5 2.0 2. 12.0 40.0 3. 3. 0.7272727 0. 1. + 4559. 1. 3. 22.0 6.0 2.0 3. 12.0 11.5 3. 2. 3.2666645 0. 1. + 4563. 1. 4. 27.0 13.0 2.0 2. 16.0 40.0 4. 5. 3.2307692 0. 1. + 4569. 1. 4. 22.0 6.0 1.0 2. 12.0 11.5 2. 5. 2.0000000 0. 1. + 4594. 1. 4. 17.5 0.5 0.0 3. 14.0 9.0 3. 4. 7.0000000 0. 1. + 4605. 1. 5. 27.0 2.5 0.0 2. 17.0 11.5 5. 1. 7.8399963 0. 1. + 4608. 1. 5. 27.0 9.0 1.0 3. 14.0 9.0 3. 4. 1.3333330 0. 1. + 4617. 1. 2. 22.0 2.5 1.0 3. 12.0 14.0 2. 2. 4.7999992 0. 1. + 4620. 1. 4. 42.0 23.0 5.5 3. 9.0 14.0 2. 4. 0.8521735 0. 1. + 4630. 1. 3. 32.0 16.5 3.0 3. 14.0 11.5 4. 5. 1.6969690 0. 1. + 4632. 1. 4. 37.0 13.0 1.0 1. 12.0 20.0 5. 5. 0.9423077 0. 1. + 4651. 1. 2. 32.0 16.5 3.0 2. 12.0 20.0 3. 5. 0.7272727 0. 1. + 4677. 1. 4. 32.0 13.0 2.0 2. 14.0 40.0 2. 5. 0.2692307 0. 1. + 4686. 1. 4. 22.0 2.5 0.0 2. 14.0 6.5 1. 1. 0.4000000 0. 1. + 4695. 1. 5. 22.0 2.5 0.0 2. 12.0 6.5 3. 2. 4.8999996 0. 1. + 4707. 1. 4. 32.0 16.5 3.0 2. 12.0 20.0 4. 2. 1.1878777 0. 1. + 4710. 1. 4. 37.0 16.5 3.0 2. 12.0 14.0 3. 3. 0.2121212 0. 1. + 4726. 1. 5. 42.0 23.0 4.0 3. 14.0 40.0 5. 5. 0.5217391 0. 1. + 4729. 1. 5. 27.0 9.0 2.0 1. 9.0 20.0 3. 4. 0.3888888 0. 1. + 4738. 1. 5. 32.0 9.0 0.0 2. 17.0 20.0 3. 2. 0.1111111 0. 1. + 4742. 1. 2. 42.0 23.0 3.0 4. 12.0 20.0 4. 5. 0.1521739 0. 1. + 4749. 1. 4. 42.0 23.0 2.0 3. 12.0 20.0 3. 2. 0.5217391 0. 1. + 4783. 1. 5. 27.0 6.0 0.0 3. 14.0 20.0 3. 4. 1.3333330 0. 1. + 4784. 1. 4. 22.0 6.0 0.0 3. 14.0 14.0 3. 3. 0.1666666 0. 1. + 4786. 1. 2. 32.0 16.5 5.5 2. 12.0 11.5 3. 2. 2.7151508 0. 1. + 4790. 1. 4. 22.0 2.5 1.0 2. 14.0 14.0 2. 4. 3.1999998 0. 1. + 4795. 1. 5. 37.0 23.0 4.0 3. 12.0 40.0 3. 3. 0.5326087 0. 1. + 4799. 1. 4. 32.0 13.0 3.0 2. 12.0 20.0 3. 5. 0.2692307 0. 1. + 4813. 1. 4. 32.0 16.5 2.0 2. 12.0 11.5 3. 4. 1.1878777 0. 1. + 4817. 1. 4. 27.0 6.0 1.0 2. 17.0 14.0 3. 5. 0.5833333 0. 1. + 4823. 1. 2. 27.0 13.0 2.0 3. 12.0 20.0 5. 5. 3.2307692 0. 1. + 4829. 1. 4. 37.0 16.5 2.0 2. 14.0 20.0 4. 5. 1.1878777 0. 1. + 4835. 1. 4. 27.0 6.0 0.0 4. 16.0 20.0 4. 6. 3.2666645 0. 1. + 4838. 1. 4. 37.0 23.0 3.0 3. 12.0 20.0 5. 3. 0.1521739 0. 1. + 4843. 1. 3. 27.0 2.5 0.0 1. 14.0 20.0 4. 6. 38.3999939 0. 1. + 4857. 1. 3. 27.0 9.0 1.0 2. 12.0 20.0 3. 4. 2.1777763 0. 1. + 4860. 1. 2. 37.0 23.0 4.0 2. 12.0 20.0 5. 2. 0.1521739 0. 1. + 4870. 1. 3. 37.0 23.0 3.0 3. 12.0 14.0 2. 2. 0.8521735 0. 1. + 4871. 1. 3. 32.0 13.0 2.0 3. 17.0 11.5 4. 4. 0.0769231 0. 1. + 4881. 1. 2. 37.0 16.5 4.0 3. 12.0 14.0 2. 4. 1.1878777 0. 1. + 4885. 1. 4. 27.0 9.0 2.0 3. 12.0 11.5 3. 3. 1.3333330 0. 1. + 4888. 1. 4. 42.0 23.0 3.0 3. 12.0 11.5 2. 2. 0.8521735 0. 1. + 4895. 1. 5. 42.0 23.0 3.0 3. 14.0 20.0 3. 5. 0.5326087 0. 1. + 4897. 1. 2. 27.0 6.0 0.0 2. 12.0 40.0 3. 5. 2.0000000 0. 1. + 4903. 1. 1. 27.0 2.5 0.0 2. 16.0 6.5 3. 1. 4.7999992 0. 1. + 4907. 1. 5. 32.0 16.5 2.0 1. 12.0 40.0 3. 3. 0.2121212 0. 1. + 4913. 1. 4. 32.0 16.5 3.0 2. 14.0 40.0 4. 5. 2.5454540 0. 1. + 4924. 1. 3. 22.0 6.0 0.0 2. 12.0 4.0 2. 2. 0.1666666 0. 1. + 4935. 1. 3. 27.0 2.5 2.0 2. 14.0 11.5 4. 4. 0.4000000 0. 1. + 4937. 1. 3. 42.0 23.0 1.0 3. 14.0 40.0 3. 2. 0.3478261 0. 1. + 4943. 1. 5. 42.0 23.0 4.0 2. 14.0 20.0 3. 5. 0.1521739 0. 1. + 4950. 1. 1. 27.0 6.0 2.0 2. 14.0 11.5 2. 3. 0.5833333 0. 1. + 4959. 1. 4. 32.0 13.0 2.0 2. 12.0 11.5 2. 5. 0.2692307 0. 1. + 4964. 1. 4. 32.0 13.0 2.0 1. 12.0 20.0 5. 5. 0.9423077 0. 1. + 4969. 1. 5. 32.0 16.5 3.0 2. 12.0 14.0 2. 4. 0.0606061 0. 1. + 4975. 1. 5. 42.0 23.0 2.0 1. 20.0 40.0 4. 3. 0.1521739 0. 1. + 4976. 1. 4. 27.0 9.0 2.0 2. 12.0 11.5 3. 4. 1.3333330 0. 1. + 4979. 1. 4. 37.0 16.5 3.0 3. 16.0 20.0 3. 2. 2.7151508 0. 1. + 4980. 1. 5. 37.0 16.5 5.5 1. 16.0 40.0 4. 4. 0.7272727 0. 1. + 4988. 1. 3. 42.0 9.0 2.0 1. 12.0 9.0 4. 4. 0.8888888 0. 1. + 5014. 1. 4. 27.0 6.0 1.0 3. 14.0 14.0 4. 3. 0.5833333 0. 1. + 5020. 1. 3. 27.0 9.0 2.0 3. 12.0 11.5 2. 4. 2.1777763 0. 1. + 5024. 1. 4. 27.0 6.0 2.0 2. 16.0 20.0 5. 5. 3.2666645 0. 1. + 5032. 1. 4. 37.0 16.5 4.0 3. 14.0 40.0 4. 5. 2.7151508 0. 1. + 5033. 1. 4. 32.0 16.5 3.0 3. 14.0 14.0 3. 4. 1.1878777 0. 1. + 5045. 1. 4. 27.0 6.0 1.0 2. 16.0 20.0 3. 5. 0.1666666 0. 1. + 5046. 1. 5. 42.0 23.0 2.0 2. 12.0 9.0 4. 4. 0.8521735 0. 1. + 5047. 1. 4. 32.0 13.0 1.0 3. 14.0 14.0 3. 2. 0.9423077 0. 1. + 5060. 1. 2. 27.0 6.0 1.0 2. 12.0 14.0 3. 2. 0.5833333 0. 1. + 5098. 1. 3. 22.0 2.5 0.0 2. 12.0 9.0 3. 4. 0.4000000 0. 1. + 5104. 1. 3. 27.0 6.0 0.0 2. 17.0 20.0 2. 4. 4.6666660 0. 1. + 5108. 1. 5. 37.0 23.0 4.0 2. 12.0 20.0 3. 5. 0.3478261 0. 1. + 5109. 1. 3. 32.0 16.5 3.0 4. 12.0 40.0 5. 4. 2.5454540 0. 1. + 5131. 1. 4. 22.0 2.5 0.0 2. 12.0 6.5 2. 2. 4.8999996 0. 1. + 5132. 1. 2. 22.0 6.0 2.0 3. 12.0 20.0 5. 3. 7.4666672 0. 1. + 5146. 1. 4. 27.0 9.0 2.0 3. 14.0 14.0 3. 2. 0.1111111 0. 1. + 5150. 1. 4. 22.0 2.5 0.0 1. 20.0 20.0 6. 5. 1.3999996 0. 1. + 5152. 1. 3. 42.0 23.0 5.5 4. 12.0 20.0 2. 5. 0.1521739 0. 1. + 5157. 1. 3. 42.0 23.0 3.0 2. 20.0 40.0 6. 5. 0.5217391 0. 1. + 5166. 1. 3. 22.0 2.5 1.0 3. 12.0 11.5 3. 2. 3.1999998 0. 1. + 5186. 1. 4. 32.0 9.0 2.0 2. 14.0 11.5 3. 5. 1.3333330 0. 1. + 5195. 1. 3. 32.0 16.5 1.0 3. 12.0 14.0 3. 4. 0.4848484 0. 1. + 5205. 1. 3. 27.0 6.0 2.0 1. 14.0 14.0 3. 3. 11.1999989 0. 1. + 5207. 1. 3. 27.0 6.0 1.0 3. 14.0 20.0 3. 4. 0.1666666 0. 1. + 5210. 1. 4. 37.0 16.5 3.0 1. 14.0 40.0 5. 5. 0.0606061 0. 1. + 5214. 1. 4. 32.0 13.0 2.0 2. 16.0 20.0 5. 6. 0.2692307 0. 1. + 5222. 1. 3. 22.0 2.5 0.0 1. 17.0 11.5 4. 4. 1.3999996 0. 1. + 5225. 1. 3. 27.0 6.0 0.0 3. 14.0 20.0 3. 4. 3.2666645 0. 1. + 5254. 1. 3. 42.0 23.0 3.0 2. 14.0 40.0 5. 6. 1.8260860 0. 1. + 5255. 1. 5. 32.0 13.0 3.0 3. 14.0 11.5 2. 2. 0.0769231 0. 1. + 5264. 1. 5. 27.0 2.5 1.0 2. 14.0 9.0 3. 4. 3.1999998 0. 1. + 5267. 1. 3. 27.0 9.0 3.0 1. 14.0 20.0 3. 4. 1.3333330 0. 1. + 5268. 1. 2. 22.0 2.5 0.0 2. 12.0 20.0 3. 4. 16.7999878 0. 1. + 5299. 1. 1. 42.0 23.0 5.5 2. 12.0 20.0 5. 5. 0.5326087 0. 1. + 5302. 1. 3. 22.0 2.5 0.0 1. 14.0 11.5 2. 4. 0.4000000 0. 1. + 5314. 1. 4. 27.0 2.5 0.0 1. 17.0 40.0 5. 6. 4.8999996 0. 1. + 5320. 1. 5. 27.0 6.0 0.0 2. 16.0 20.0 3. 5. 2.0416660 0. 1. + 5325. 1. 3. 27.0 6.0 1.0 2. 14.0 11.5 4. 4. 2.0416660 0. 1. + 5335. 1. 2. 42.0 23.0 1.0 1. 14.0 20.0 3. 4. 0.5217391 0. 1. + 5363. 1. 4. 27.0 6.0 0.0 4. 14.0 20.0 3. 4. 7.4666672 0. 1. + 5366. 1. 3. 22.0 6.0 1.0 1. 14.0 14.0 3. 4. 2.0416660 0. 1. + 5384. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 5. 1.3999996 0. 1. + 5426. 1. 3. 27.0 2.5 4.0 2. 14.0 20.0 3. 2. 16.7999878 0. 1. + 5436. 1. 4. 27.0 6.0 3.0 2. 14.0 11.5 2. 4. 2.0000000 0. 1. + 5445. 1. 3. 32.0 16.5 2.0 3. 14.0 20.0 3. 5. 1.6969690 0. 1. + 5463. 1. 5. 22.0 2.5 0.0 3. 14.0 40.0 3. 6. 7.8399963 0. 1. + 5465. 1. 5. 32.0 13.0 1.0 2. 14.0 40.0 3. 5. 0.9230769 0. 1. + 5492. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 3. 2. 4.7999992 0. 1. + 5510. 1. 3. 32.0 13.0 2.0 1. 14.0 20.0 3. 5. 0.9230769 0. 1. + 5542. 1. 1. 37.0 23.0 4.0 2. 12.0 40.0 2. 2. 0.5217391 0. 1. + 5545. 1. 2. 22.0 2.5 1.0 3. 14.0 4.0 4. 4. 0.4000000 0. 1. + 5548. 1. 4. 42.0 23.0 3.0 4. 12.0 14.0 3. 4. 1.8260860 0. 1. + 5550. 1. 4. 27.0 6.0 2.0 2. 14.0 11.5 5. 5. 2.0416660 0. 1. + 5551. 1. 5. 37.0 16.5 2.0 4. 16.0 20.0 3. 4. 0.0606061 0. 1. + 5552. 1. 4. 22.0 6.0 0.0 3. 12.0 14.0 3. 3. 2.0416660 0. 1. + 5570. 1. 3. 32.0 16.5 3.0 2. 14.0 20.0 5. 3. 0.2121212 0. 1. + 5578. 1. 4. 27.0 9.0 3.0 3. 12.0 20.0 3. 4. 2.1777763 0. 1. + 5593. 1. 5. 27.0 6.0 0.0 1. 16.0 20.0 4. 4. 0.1666666 0. 1. + 5600. 1. 2. 22.0 6.0 3.0 3. 12.0 6.5 3. 2. 3.2666645 0. 1. + 5607. 1. 5. 22.0 2.5 0.0 1. 16.0 20.0 4. 5. 0.4000000 0. 1. + 5608. 1. 5. 42.0 23.0 4.0 4. 14.0 14.0 1. 6. 0.8521735 0. 1. + 5619. 1. 4. 32.0 9.0 1.0 1. 16.0 20.0 4. 5. 2.1777763 0. 1. + 5644. 1. 4. 22.0 2.5 2.0 3. 12.0 20.0 2. 2. 11.1999998 0. 1. + 5653. 1. 3. 42.0 23.0 5.5 3. 14.0 20.0 3. 5. 0.8521735 0. 1. + 5654. 1. 3. 22.0 2.5 1.0 1. 12.0 20.0 5. 4. 4.7999992 0. 1. + 5658. 1. 5. 27.0 9.0 2.0 2. 17.0 20.0 2. 2. 2.1777763 0. 1. + 5670. 1. 3. 22.0 2.5 0.0 1. 12.0 9.0 2. 4. 3.1999998 0. 1. + 5674. 1. 4. 32.0 13.0 1.0 2. 12.0 20.0 3. 3. 0.2692307 0. 1. + 5677. 1. 4. 37.0 16.5 1.0 2. 12.0 20.0 3. 4. 4.0727262 0. 1. + 5700. 1. 5. 32.0 9.0 3.0 2. 17.0 20.0 4. 6. 0.1111111 0. 1. + 5714. 1. 4. 27.0 9.0 1.0 2. 12.0 11.5 2. 3. 1.3333330 0. 1. + 5740. 1. 3. 27.0 2.5 1.0 3. 14.0 20.0 3. 2. 4.8999996 0. 1. + 5747. 1. 2. 22.0 2.5 1.0 2. 16.0 14.0 4. 3. 1.3999996 0. 1. + 5752. 1. 1. 42.0 16.5 5.5 3. 14.0 20.0 5. 5. 0.7424242 0. 1. + 5768. 1. 3. 27.0 13.0 2.0 2. 9.0 11.5 2. 4. 0.2692307 0. 1. + 5769. 1. 4. 42.0 23.0 3.0 4. 14.0 11.5 3. 2. 0.5217391 0. 1. + 5783. 1. 3. 27.0 9.0 2.0 2. 12.0 20.0 3. 4. 7.4666662 0. 1. + 5792. 1. 3. 27.0 6.0 2.0 2. 14.0 6.5 3. 1. 2.0416660 0. 1. + 5818. 1. 5. 27.0 2.5 0.0 3. 14.0 20.0 3. 2. 0.4000000 0. 1. + 5821. 1. 3. 27.0 2.5 0.0 3. 16.0 20.0 3. 5. 3.1999998 0. 1. + 5833. 1. 3. 22.0 2.5 0.0 3. 16.0 20.0 4. 2. 0.4000000 0. 1. + 5842. 1. 3. 42.0 23.0 3.0 1. 12.0 20.0 3. 3. 2.9217386 0. 1. + 5854. 1. 5. 42.0 23.0 2.0 2. 12.0 14.0 2. 5. 0.1521739 0. 1. + 5880. 1. 4. 27.0 2.5 0.0 1. 17.0 40.0 4. 4. 4.8999996 0. 1. + 5891. 1. 5. 27.0 6.0 0.0 2. 14.0 20.0 3. 5. 0.1666666 0. 1. + 5894. 1. 4. 32.0 16.5 4.0 2. 14.0 20.0 4. 4. 0.7272727 0. 1. + 5897. 1. 4. 27.0 6.0 0.0 3. 12.0 14.0 3. 2. 3.2666645 0. 1. + 5903. 1. 4. 32.0 9.0 2.0 2. 14.0 20.0 3. 4. 2.1777763 0. 1. + 6002. 1. 3. 27.0 9.0 2.0 1. 14.0 20.0 3. 4. 0.8888888 0. 1. + 6006. 1. 3. 27.0 2.5 1.0 2. 16.0 20.0 2. 2. 1.3999996 0. 1. + 6008. 1. 5. 27.0 13.0 2.0 2. 9.0 14.0 2. 4. 0.9230769 0. 1. + 6014. 1. 2. 27.0 13.0 2.0 2. 12.0 20.0 3. 4. 1.5076914 0. 1. + 6025. 1. 3. 42.0 16.5 4.0 2. 14.0 40.0 3. 5. 0.2121212 0. 1. + 6030. 1. 3. 32.0 9.0 2.0 1. 14.0 11.5 3. 2. 1.3611107 0. 1. + 6032. 1. 5. 32.0 13.0 0.0 2. 12.0 40.0 3. 5. 0.2692307 0. 1. + 6050. 1. 1. 27.0 9.0 2.0 2. 12.0 11.5 2. 4. 2.1777763 0. 1. + 6051. 1. 3. 32.0 13.0 3.0 2. 12.0 11.5 3. 2. 0.9423077 0. 1. + 6066. 1. 5. 27.0 2.5 0.0 3. 14.0 40.0 5. 5. 1.3999996 0. 1. + 6070. 1. 4. 32.0 6.0 1.0 1. 16.0 14.0 4. 4. 0.1666666 0. 1. + 6076. 1. 5. 27.0 13.0 3.0 1. 14.0 14.0 3. 4. 3.4461536 0. 1. + 6109. 1. 5. 27.0 2.5 0.0 3. 20.0 20.0 6. 6. 1.3999996 0. 1. + 6122. 1. 5. 32.0 16.5 4.0 2. 12.0 11.5 2. 4. 1.1878777 0. 1. + 6125. 1. 4. 37.0 13.0 0.0 2. 12.0 20.0 3. 3. 1.5076914 0. 1. + 6132. 1. 3. 22.0 2.5 0.0 3. 16.0 40.0 4. 4. 0.4000000 0. 1. + 6140. 1. 5. 37.0 13.0 2.0 4. 17.0 40.0 4. 6. 0.9230769 0. 1. + 6144. 1. 4. 22.0 2.5 2.0 1. 12.0 40.0 3. 4. 0.4000000 0. 1. + 6147. 1. 1. 42.0 16.5 2.0 4. 16.0 20.0 5. 2. 0.2121212 0. 1. + 6152. 1. 3. 37.0 16.5 3.0 3. 17.0 14.0 4. 4. 2.7151508 0. 1. + 6171. 1. 4. 22.0 2.5 0.0 3. 17.0 20.0 3. 4. 0.4000000 0. 1. + 6173. 1. 5. 32.0 13.0 2.0 2. 20.0 20.0 4. 2. 1.5076914 0. 1. + 6190. 1. 3. 37.0 16.5 2.0 3. 17.0 40.0 4. 5. 2.5454540 0. 1. + 6192. 1. 4. 32.0 16.5 4.0 3. 12.0 20.0 2. 4. 0.2121212 0. 1. + 6225. 1. 4. 32.0 16.5 2.0 2. 14.0 20.0 3. 5. 0.7272727 0. 1. + 6228. 1. 5. 37.0 16.5 2.0 4. 17.0 20.0 3. 3. 0.7272727 0. 1. + 6231. 1. 3. 27.0 9.0 2.0 1. 12.0 20.0 3. 5. 0.3888888 0. 1. + 6254. 1. 3. 42.0 23.0 3.0 3. 9.0 14.0 3. 5. 1.9478254 0. 1. + 6260. 1. 4. 32.0 9.0 2.0 1. 20.0 40.0 4. 5. 1.3333330 0. 1. + 6266. 1. 4. 22.0 6.0 2.0 2. 12.0 11.5 3. 3. 0.5833333 0. 1. + 6267. 1. 1. 32.0 13.0 2.0 2. 16.0 20.0 6. 5. 1.5076914 0. 1. + 6270. 1. 4. 22.0 2.5 0.0 1. 12.0 20.0 2. 2. 4.7999992 0. 1. + 6274. 1. 4. 27.0 9.0 2.0 1. 12.0 11.5 3. 4. 0.3888888 0. 1. + 6281. 1. 3. 27.0 6.0 0.0 2. 14.0 20.0 4. 5. 2.0000000 0. 1. + 6292. 1. 4. 32.0 13.0 4.0 2. 12.0 11.5 3. 5. 0.0769231 0. 1. + 6305. 1. 5. 42.0 23.0 3.0 4. 12.0 20.0 2. 4. 1.2173910 0. 1. + 6313. 1. 2. 37.0 16.5 3.0 1. 14.0 20.0 3. 4. 1.1878777 0. 1. + 6318. 1. 3. 32.0 9.0 0.0 2. 14.0 20.0 3. 5. 1.3333330 0. 1. + 6328. 1. 4. 37.0 16.5 2.0 3. 14.0 20.0 3. 6. 0.7272727 0. 1. + 6339. 1. 1. 32.0 16.5 4.0 3. 12.0 11.5 3. 5. 1.1878777 0. 1. + 6353. 1. 3. 37.0 16.5 1.0 3. 14.0 20.0 3. 5. 1.1878777 0. 1. + 6366. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 4. 5. 1.3999996 0. 1. + 6380. 1. 4. 22.0 6.0 2.0 2. 12.0 6.5 2. 2. 0.5833333 0. 1. + 6391. 1. 3. 22.0 2.5 1.0 3. 12.0 14.0 3. 2. 3.1999998 0. 1. + 6411. 1. 5. 27.0 6.0 1.0 3. 16.0 9.0 4. 1. 0.1666666 0. 1. + 6427. 1. 5. 27.0 9.0 2.0 2. 20.0 40.0 6. 5. 0.3888888 0. 1. + 6428. 1. 4. 22.0 6.0 1.0 2. 12.0 20.0 5. 4. 4.6666660 0. 1. + 6450. 1. 1. 32.0 16.5 3.0 1. 20.0 20.0 4. 2. 0.7272727 0. 1. + 6501. 1. 5. 22.0 2.5 0.0 2. 16.0 11.5 4. 4. 4.8999996 0. 1. + 6504. 1. 4. 42.0 16.5 3.0 2. 14.0 20.0 3. 5. 1.1878777 0. 1. + 6505. 1. 4. 32.0 13.0 2.0 4. 16.0 20.0 4. 6. 0.2692307 0. 1. + 6508. 1. 4. 32.0 9.0 2.0 2. 16.0 11.5 4. 5. 0.3888888 0. 1. + 6511. 1. 2. 42.0 23.0 4.0 1. 12.0 11.5 3. 4. 0.8521735 0. 1. + 6516. 1. 3. 42.0 16.5 2.0 2. 14.0 20.0 4. 4. 0.7272727 0. 1. + 6536. 1. 4. 42.0 16.5 1.0 3. 14.0 20.0 4. 5. 0.7272727 0. 1. + 6545. 1. 4. 32.0 13.0 3.0 2. 16.0 20.0 4. 5. 0.9230769 0. 1. + 6550. 1. 4. 27.0 2.5 0.0 2. 14.0 20.0 5. 5. 4.7999992 0. 1. + 6560. 1. 4. 27.0 6.0 1.0 1. 14.0 14.0 3. 4. 3.2666645 0. 1. + 6561. 1. 5. 27.0 6.0 0.0 2. 14.0 20.0 3. 5. 1.3333330 0. 1. + 6566. 1. 4. 27.0 6.0 0.0 3. 20.0 20.0 6. 6. 2.0000000 0. 1. + 6572. 1. 5. 27.0 6.0 0.0 2. 14.0 20.0 3. 4. 3.2666645 0. 1. + 6581. 1. 4. 27.0 6.0 2.0 2. 12.0 9.0 4. 4. 2.0416660 0. 1. + 6590. 1. 4. 42.0 23.0 1.0 3. 14.0 20.0 3. 4. 0.5217391 0. 1. + 6591. 1. 5. 22.0 6.0 1.0 3. 12.0 6.5 3. 3. 2.0000000 0. 1. + 6600. 1. 3. 37.0 16.5 3.0 3. 14.0 20.0 4. 5. 0.0606061 0. 1. + 6605. 1. 4. 27.0 9.0 2.0 3. 14.0 20.0 4. 4. 0.8888888 0. 1. + 6611. 1. 4. 42.0 13.0 0.0 3. 12.0 14.0 2. 4. 0.9423077 0. 1. + 6618. 1. 4. 27.0 2.5 0.0 2. 14.0 20.0 3. 5. 1.3999996 0. 1. + 6621. 1. 2. 32.0 13.0 3.0 2. 16.0 20.0 4. 2. 2.1538458 0. 1. + 6624. 1. 4. 37.0 16.5 4.0 2. 12.0 20.0 5. 5. 1.1878777 0. 1. + 6640. 1. 2. 22.0 2.5 0.0 2. 16.0 11.5 2. 5. 7.8399963 0. 1. + 6644. 1. 5. 42.0 23.0 1.0 3. 12.0 14.0 5. 2. 0.5217391 0. 1. + 6663. 1. 3. 27.0 6.0 2.0 1. 16.0 20.0 4. 5. 2.0000000 0. 1. + 6664. 1. 3. 22.0 2.5 0.0 2. 14.0 20.0 3. 5. 1.3999996 0. 1. + 6666. 1. 4. 32.0 9.0 2.0 1. 14.0 40.0 3. 5. 1.3333330 0. 1. + 6668. 1. 4. 27.0 9.0 1.0 1. 14.0 20.0 3. 5. 0.8888888 0. 1. + 6681. 1. 5. 27.0 6.0 0.0 3. 12.0 20.0 3. 4. 0.5833333 0. 1. + 6692. 1. 4. 37.0 13.0 2.0 3. 17.0 14.0 4. 6. 0.2692307 0. 1. + 6693. 1. 3. 42.0 23.0 2.0 2. 14.0 20.0 3. 4. 0.8521735 0. 1. + 6703. 1. 5. 22.0 2.5 0.0 1. 17.0 9.0 5. 1. 0.4000000 0. 1. + 6710. 1. 2. 37.0 23.0 5.5 2. 14.0 20.0 3. 5. 0.1521739 0. 1. + 6714. 1. 4. 32.0 2.5 0.0 2. 12.0 14.0 3. 2. 4.7999992 0. 1. + 6717. 1. 4. 27.0 2.5 0.0 3. 12.0 20.0 3. 3. 1.3999996 0. 1. + 6720. 1. 2. 27.0 2.5 0.0 2. 14.0 14.0 3. 5. 1.3999996 0. 1. + 6726. 1. 3. 22.0 2.5 0.0 3. 14.0 20.0 3. 6. 3.1999998 0. 1. + 6730. 1. 3. 42.0 23.0 5.5 2. 12.0 14.0 4. 2. 1.9478254 0. 1. + 6743. 1. 3. 37.0 16.5 3.0 3. 14.0 14.0 3. 3. 8.7272720 0. 1. + 6747. 1. 2. 27.0 9.0 0.0 2. 14.0 20.0 3. 4. 4.6666660 0. 1. + 6770. 1. 2. 37.0 16.5 3.0 1. 12.0 14.0 3. 2. 2.5454540 0. 1. + 6782. 1. 3. 22.0 2.5 2.0 3. 17.0 20.0 4. 2. 3.1999998 0. 1. + 6788. 1. 4. 22.0 6.0 0.0 3. 12.0 9.0 3. 4. 2.0416660 0. 1. + 6797. 1. 4. 37.0 16.5 4.0 1. 14.0 20.0 5. 4. 0.7272727 0. 1. + 6809. 1. 4. 27.0 9.0 3.0 3. 14.0 20.0 3. 2. 0.1111111 0. 1. + 6813. 1. 4. 22.0 2.5 0.0 1. 14.0 20.0 2. 5. 0.4000000 0. 1. + 6819. 1. 2. 42.0 23.0 4.0 2. 14.0 40.0 3. 5. 0.8521735 0. 1. + 6851. 1. 5. 27.0 6.0 0.0 2. 14.0 14.0 5. 2. 0.5833333 0. 1. + 6854. 1. 2. 27.0 6.0 1.0 1. 12.0 20.0 3. 5. 0.5833333 0. 1. + 6859. 1. 3. 32.0 16.5 2.0 2. 12.0 20.0 3. 2. 0.7272727 0. 1. + 6866. 1. 4. 37.0 23.0 5.5 2. 12.0 14.0 4. 2. 0.5326087 0. 1. + 6871. 1. 4. 17.5 2.5 0.0 1. 12.0 11.5 4. 2. 17.9199982 0. 1. + 6872. 1. 5. 22.0 2.5 1.0 1. 14.0 20.0 3. 5. 57.5999908 0. 1. + 6876. 1. 4. 22.0 2.5 0.0 2. 14.0 11.5 5. 4. 1.3999996 0. 1. + 6877. 1. 3. 27.0 9.0 2.0 2. 14.0 14.0 3. 5. 4.6666660 0. 1. + 6881. 1. 2. 32.0 9.0 2.0 2. 16.0 20.0 4. 5. 2.1777763 0. 1. + 6883. 1. 5. 22.0 2.5 0.0 1. 14.0 9.0 2. 2. 0.4000000 0. 1. + 6904. 1. 3. 22.0 2.5 1.0 3. 14.0 20.0 5. 4. 0.4000000 0. 1. + 6920. 1. 3. 27.0 9.0 2.0 3. 12.0 11.5 5. 5. 7.4666662 0. 1. + 6921. 1. 4. 27.0 16.5 5.5 2. 14.0 20.0 4. 4. 0.0606061 0. 1. + 6929. 1. 4. 32.0 13.0 2.0 3. 14.0 20.0 3. 5. 0.2692307 0. 1. + 6937. 1. 4. 27.0 9.0 2.0 2. 16.0 20.0 3. 4. 0.8888888 0. 1. + 6947. 1. 5. 32.0 13.0 2.0 2. 17.0 14.0 4. 4. 2.1538458 0. 1. + 6949. 1. 4. 27.0 6.0 1.0 3. 14.0 40.0 4. 1. 7.4666672 0. 1. + 6952. 1. 4. 32.0 13.0 3.0 4. 12.0 20.0 3. 5. 0.2692307 0. 1. + 6954. 1. 3. 27.0 2.5 1.0 2. 16.0 20.0 4. 2. 4.7999992 0. 1. + 6973. 1. 3. 42.0 23.0 3.0 2. 14.0 20.0 3. 5. 0.5326087 0. 1. + 6975. 1. 4. 27.0 2.5 0.0 1. 12.0 11.5 3. 2. 0.4000000 0. 1. + 6982. 1. 4. 22.0 2.5 0.0 1. 14.0 20.0 4. 4. 4.7999992 0. 1. + 6998. 1. 5. 32.0 13.0 2.0 1. 14.0 20.0 2. 2. 1.5076914 0. 1. + 7013. 1. 3. 32.0 9.0 2.0 2. 14.0 20.0 3. 5. 1.3333330 0. 1. + 7031. 1. 3. 37.0 16.5 2.0 2. 12.0 20.0 3. 4. 0.7424242 0. 1. + 7040. 1. 2. 42.0 23.0 3.0 3. 14.0 20.0 3. 4. 0.8521735 0. 1. + 7048. 1. 5. 32.0 16.5 2.0 4. 17.0 14.0 4. 4. 0.2121212 0. 1. + 7054. 1. 4. 22.0 2.5 1.0 3. 12.0 11.5 5. 3. 4.8999996 0. 1. + 7059. 1. 5. 27.0 9.0 2.0 2. 14.0 20.0 3. 4. 0.1111111 0. 1. + 7066. 1. 4. 32.0 16.5 3.0 2. 16.0 40.0 5. 6. 0.7424242 0. 1. + 7069. 1. 5. 32.0 16.5 4.0 3. 12.0 20.0 3. 5. 0.0606061 0. 1. + 7091. 1. 3. 32.0 16.5 3.0 2. 12.0 20.0 5. 5. 0.7424242 0. 1. + 7113. 1. 4. 42.0 23.0 2.0 3. 20.0 20.0 4. 4. 0.0434783 0. 1. + 7115. 1. 4. 37.0 16.5 4.0 1. 14.0 20.0 4. 5. 0.2121212 0. 1. + 7120. 1. 5. 27.0 2.5 0.0 2. 12.0 9.0 3. 3. 0.4000000 0. 1. + 7126. 1. 3. 22.0 2.5 0.0 2. 14.0 20.0 3. 5. 0.4000000 0. 1. + 7148. 1. 5. 37.0 23.0 5.5 2. 12.0 20.0 2. 4. 0.1521739 0. 1. + 7150. 1. 4. 42.0 23.0 2.0 2. 12.0 20.0 3. 5. 1.2173910 0. 1. + 7157. 1. 4. 22.0 6.0 2.0 1. 12.0 11.5 2. 4. 11.1999989 0. 1. + 7160. 1. 5. 27.0 6.0 1.0 4. 12.0 14.0 5. 5. 0.5833333 0. 1. + 7172. 1. 5. 42.0 23.0 3.0 3. 12.0 9.0 3. 2. 0.5326087 0. 1. + 7183. 1. 3. 27.0 6.0 2.0 2. 14.0 20.0 4. 4. 0.1666666 0. 1. + 7186. 1. 4. 27.0 6.0 2.0 1. 16.0 40.0 4. 5. 2.0000000 0. 1. + 7196. 1. 2. 42.0 16.5 1.0 2. 20.0 40.0 4. 4. 0.7272727 0. 1. + 7198. 1. 2. 37.0 16.5 4.0 2. 14.0 20.0 3. 5. 1.1878777 0. 1. + 7200. 1. 1. 32.0 13.0 2.0 1. 12.0 14.0 2. 4. 0.0769231 0. 1. + 7203. 1. 3. 37.0 16.5 4.0 4. 14.0 11.5 5. 3. 0.4848484 0. 1. + 7244. 1. 4. 27.0 9.0 1.0 1. 12.0 11.5 3. 4. 4.6666660 0. 1. + 7245. 1. 2. 27.0 2.5 0.0 3. 14.0 6.5 5. 4. 4.7999992 0. 1. + 7249. 1. 3. 32.0 16.5 5.5 4. 12.0 11.5 3. 2. 0.2121212 0. 1. + 7254. 1. 4. 22.0 2.5 0.0 2. 14.0 14.0 2. 2. 3.1999998 0. 1. + 7259. 1. 4. 27.0 6.0 0.0 3. 17.0 9.0 4. 4. 3.2666645 0. 1. + 7260. 1. 5. 32.0 9.0 0.0 3. 20.0 20.0 6. 4. 0.1111111 0. 1. + 7291. 1. 3. 22.0 6.0 0.0 2. 17.0 20.0 4. 3. 4.6666660 0. 1. + 7298. 1. 4. 22.0 2.5 2.0 2. 12.0 11.5 3. 2. 3.1999998 0. 1. + 7301. 1. 4. 42.0 23.0 1.0 2. 14.0 20.0 3. 6. 2.9217386 0. 1. + 7303. 1. 3. 27.0 6.0 0.0 2. 14.0 20.0 3. 4. 7.0000000 0. 1. + 7335. 1. 4. 37.0 23.0 5.5 2. 9.0 20.0 3. 4. 0.8521735 0. 1. + 7354. 1. 4. 22.0 2.5 1.0 3. 14.0 20.0 5. 5. 7.8399963 0. 1. + 7355. 1. 5. 27.0 9.0 2.0 2. 14.0 14.0 5. 4. 1.3333330 0. 1. + 7365. 1. 4. 22.0 2.5 0.0 2. 12.0 20.0 3. 4. 4.8999996 0. 1. + 7423. 1. 3. 27.0 9.0 2.0 3. 14.0 20.0 3. 5. 1.3333330 0. 1. + 7435. 1. 4. 22.0 6.0 1.0 2. 12.0 11.5 3. 4. 0.1666666 0. 1. + 7444. 1. 4. 27.0 6.0 2.0 3. 14.0 6.5 4. 5. 0.5833333 0. 1. + 7448. 1. 3. 42.0 23.0 2.0 2. 14.0 20.0 3. 5. 0.8521735 0. 1. + 7470. 1. 4. 22.0 6.0 1.0 2. 12.0 20.0 3. 4. 0.5833333 0. 1. + 7487. 1. 4. 32.0 13.0 3.0 2. 14.0 20.0 2. 5. 0.2692307 0. 1. + 7493. 1. 5. 42.0 23.0 4.0 3. 14.0 14.0 2. 2. 0.0434783 0. 1. + 7506. 1. 4. 27.0 13.0 2.0 3. 12.0 20.0 5. 4. 0.9230769 0. 1. + 7517. 1. 4. 27.0 9.0 1.0 2. 14.0 20.0 5. 4. 2.1777763 0. 1. + 7540. 1. 4. 27.0 9.0 1.0 2. 12.0 14.0 3. 3. 1.3333330 0. 1. + 7551. 1. 5. 22.0 2.5 0.0 3. 14.0 11.5 3. 4. 1.3999996 0. 1. + 7552. 1. 3. 32.0 13.0 2.0 3. 12.0 20.0 3. 5. 0.6153846 0. 1. + 7555. 1. 3. 42.0 23.0 4.0 2. 12.0 20.0 3. 4. 0.8521735 0. 1. + 7564. 1. 3. 27.0 6.0 0.0 2. 16.0 40.0 4. 4. 0.1666666 0. 1. + 7578. 1. 5. 42.0 23.0 2.0 2. 14.0 20.0 3. 3. 0.1521739 0. 1. + 7579. 1. 3. 37.0 16.5 5.5 3. 12.0 14.0 2. 2. 0.4848484 0. 1. + 7607. 1. 4. 22.0 2.5 0.0 2. 14.0 6.5 3. 4. 17.9199982 0. 1. + 7613. 1. 5. 42.0 23.0 2.0 2. 12.0 14.0 3. 2. 0.5326087 0. 1. + 7619. 1. 5. 27.0 2.5 0.0 1. 16.0 14.0 5. 2. 1.3999996 0. 1. + 7638. 1. 4. 32.0 23.0 3.0 4. 12.0 11.5 2. 2. 0.5326087 0. 1. + 7652. 1. 5. 22.0 2.5 0.0 2. 17.0 20.0 4. 6. 7.8399963 0. 1. + 7662. 1. 4. 37.0 16.5 5.5 2. 14.0 14.0 2. 3. 1.1878777 0. 1. + 7690. 1. 4. 22.0 2.5 1.0 3. 12.0 6.5 2. 2. 4.8999996 0. 1. + 7691. 1. 2. 27.0 6.0 2.0 2. 12.0 11.5 3. 2. 2.0000000 0. 1. + 7705. 1. 5. 32.0 16.5 3.0 3. 16.0 20.0 2. 4. 0.2121212 0. 1. + 7714. 1. 3. 27.0 6.0 1.0 3. 14.0 11.5 3. 2. 3.2666645 0. 1. + 7715. 1. 3. 27.0 2.5 2.0 1. 14.0 11.5 3. 5. 1.3999996 0. 1. + 7728. 1. 5. 42.0 23.0 5.5 3. 16.0 20.0 4. 4. 0.5326087 0. 1. + 7737. 1. 3. 17.5 2.5 0.0 1. 12.0 11.5 3. 4. 7.8399963 0. 1. + 7740. 1. 3. 37.0 23.0 3.0 2. 12.0 20.0 3. 5. 0.8521735 0. 1. + 7763. 1. 5. 27.0 6.0 0.0 3. 17.0 9.0 3. 1. 0.1666666 0. 1. + 7769. 1. 4. 37.0 16.5 1.0 2. 12.0 20.0 3. 5. 2.7151508 0. 1. + 7789. 1. 3. 32.0 16.5 2.0 2. 12.0 40.0 3. 6. 0.7424242 0. 1. + 7803. 1. 3. 27.0 2.5 0.0 1. 17.0 20.0 4. 6. 4.7999992 0. 1. + 7808. 1. 4. 32.0 16.5 4.0 3. 12.0 11.5 2. 4. 0.7424242 0. 1. + 7809. 1. 3. 32.0 16.5 2.0 2. 12.0 20.0 3. 4. 1.1878777 0. 1. + 7813. 1. 4. 17.5 2.5 1.0 1. 12.0 6.5 3. 2. 4.7999992 0. 1. + 7821. 1. 3. 22.0 2.5 1.0 2. 12.0 6.5 5. 2. 7.8399963 0. 1. + 7823. 1. 5. 37.0 16.5 2.0 2. 16.0 20.0 4. 4. 0.7272727 0. 1. + 7829. 1. 5. 37.0 16.5 2.0 3. 12.0 11.5 3. 2. 0.7272727 0. 1. + 7834. 1. 5. 22.0 2.5 0.0 4. 14.0 20.0 3. 3. 0.4000000 0. 1. + 7846. 1. 4. 27.0 2.5 0.0 1. 14.0 20.0 3. 2. 4.8999996 0. 1. + 7860. 1. 4. 22.0 2.5 1.0 2. 14.0 20.0 4. 2. 0.4000000 0. 1. + 7864. 1. 4. 37.0 16.5 3.0 3. 12.0 14.0 2. 4. 0.7272727 0. 1. + 7866. 1. 3. 22.0 6.0 1.0 3. 16.0 20.0 4. 4. 3.2666645 0. 1. + 7883. 1. 4. 27.0 6.0 1.0 1. 14.0 20.0 3. 5. 0.5833333 0. 1. + 7886. 1. 1. 42.0 23.0 3.0 3. 12.0 14.0 3. 4. 1.8260860 0. 1. + 7889. 1. 3. 22.0 6.0 2.0 3. 12.0 11.5 2. 4. 3.2666645 0. 1. + 7897. 1. 3. 22.0 2.5 1.0 2. 12.0 4.0 4. 1. 0.4000000 0. 1. + 7899. 1. 4. 22.0 2.5 1.0 3. 16.0 11.5 3. 3. 4.7999992 0. 1. + 7900. 1. 2. 22.0 2.5 2.0 1. 12.0 11.5 2. 4. 3.1999998 0. 1. + 7902. 1. 5. 22.0 2.5 1.0 3. 14.0 9.0 2. 5. 4.8999996 0. 1. + 7916. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 3. 5. 1.3999996 0. 1. + 7922. 1. 4. 42.0 23.0 5.5 3. 12.0 11.5 5. 5. 0.5217391 0. 1. + 7927. 1. 3. 27.0 9.0 1.0 1. 14.0 9.0 3. 5. 0.1111111 0. 1. + 7940. 1. 3. 37.0 23.0 4.0 2. 12.0 9.0 3. 2. 1.9478254 0. 1. + 7949. 1. 4. 37.0 16.5 3.0 3. 12.0 20.0 5. 2. 0.7424242 0. 1. + 7950. 1. 5. 22.0 2.5 1.0 2. 14.0 11.5 4. 1. 7.8399963 0. 1. + 7954. 1. 2. 27.0 2.5 0.0 1. 14.0 20.0 3. 3. 11.1999998 0. 1. + 7956. 1. 5. 22.0 2.5 1.0 2. 16.0 11.5 4. 4. 1.3999996 0. 1. + 7965. 1. 4. 22.0 2.5 1.0 3. 12.0 6.5 3. 3. 4.7999992 0. 1. + 7966. 1. 4. 27.0 6.0 2.0 2. 14.0 11.5 3. 5. 0.1666666 0. 1. + 7988. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 4. 4. 0.4000000 0. 1. + 7997. 1. 4. 27.0 6.0 1.0 3. 16.0 9.0 3. 3. 1.3333330 0. 1. + 8000. 1. 5. 42.0 23.0 3.0 2. 17.0 11.5 5. 5. 0.0434783 0. 1. + 8005. 1. 5. 37.0 16.5 4.0 2. 12.0 20.0 3. 2. 1.6969690 0. 1. + 8008. 1. 2. 27.0 6.0 0.0 1. 14.0 40.0 3. 4. 7.0000000 0. 1. + 8013. 1. 4. 32.0 16.5 3.0 4. 14.0 20.0 3. 5. 1.1878777 0. 1. + 8016. 1. 5. 37.0 16.5 5.5 3. 20.0 40.0 4. 6. 0.7424242 0. 1. + 8026. 1. 5. 27.0 2.5 2.0 2. 16.0 20.0 3. 2. 0.4000000 0. 1. + 8027. 1. 3. 27.0 9.0 2.0 2. 14.0 20.0 3. 6. 4.6666660 0. 1. + 8031. 1. 4. 32.0 13.0 4.0 3. 12.0 20.0 3. 4. 0.2692307 0. 1. + 8035. 1. 5. 27.0 9.0 1.0 3. 12.0 20.0 3. 4. 2.1777763 0. 1. + 8037. 1. 5. 32.0 6.0 3.0 1. 14.0 6.5 3. 2. 4.6666660 0. 1. + 8038. 1. 4. 32.0 16.5 3.0 1. 12.0 11.5 3. 4. 1.6969690 0. 1. + 8042. 1. 3. 27.0 9.0 0.0 1. 12.0 14.0 3. 5. 7.4666662 0. 1. + 8047. 1. 4. 32.0 13.0 1.0 3. 14.0 9.0 3. 5. 1.5076914 0. 1. + 8070. 1. 3. 42.0 23.0 2.0 3. 9.0 6.5 2. 2. 0.5217391 0. 1. + 8071. 1. 3. 22.0 6.0 1.0 2. 12.0 11.5 3. 2. 1.3333330 0. 1. + 8084. 1. 4. 37.0 23.0 3.0 3. 12.0 20.0 5. 2. 0.3478261 0. 1. + 8090. 1. 5. 42.0 23.0 3.0 3. 16.0 40.0 4. 2. 0.3478261 0. 1. + 8098. 1. 2. 22.0 6.0 0.0 2. 12.0 14.0 3. 3. 3.2666645 0. 1. + 8111. 1. 3. 37.0 13.0 2.0 2. 12.0 20.0 3. 5. 0.2692307 0. 1. + 8128. 1. 3. 32.0 13.0 2.0 2. 16.0 6.5 3. 5. 0.9230769 0. 1. + 8129. 1. 3. 22.0 2.5 0.0 2. 12.0 20.0 3. 3. 0.4000000 0. 1. + 8133. 1. 3. 42.0 23.0 5.5 3. 14.0 20.0 3. 4. 0.5326087 0. 1. + 8136. 1. 2. 32.0 16.5 2.0 2. 16.0 20.0 4. 6. 0.7424242 0. 1. + 8141. 1. 4. 27.0 6.0 2.0 3. 14.0 20.0 5. 4. 2.0000000 0. 1. + 8144. 1. 4. 37.0 16.5 3.0 4. 16.0 20.0 4. 5. 0.7424242 0. 1. + 8149. 1. 5. 37.0 23.0 3.0 1. 12.0 40.0 3. 5. 0.3478261 0. 1. + 8150. 1. 3. 22.0 2.5 0.0 3. 14.0 11.5 3. 3. 3.1999998 0. 1. + 8153. 1. 3. 22.0 2.5 0.0 2. 12.0 14.0 3. 5. 4.7999992 0. 1. + 8159. 1. 4. 22.0 9.0 3.0 2. 14.0 20.0 3. 3. 0.3888888 0. 1. + 8161. 1. 3. 42.0 23.0 2.0 1. 12.0 40.0 2. 5. 0.0434783 0. 1. + 8162. 1. 4. 32.0 13.0 1.0 1. 12.0 11.5 3. 2. 1.5076914 0. 1. + 8163. 1. 3. 22.0 2.5 1.0 2. 12.0 9.0 2. 4. 11.1999998 0. 1. + 8169. 1. 2. 37.0 13.0 3.0 2. 14.0 40.0 4. 2. 0.0769231 0. 1. + 8170. 1. 5. 42.0 23.0 2.0 3. 12.0 20.0 5. 5. 0.1521739 0. 1. + 8184. 1. 2. 37.0 16.5 3.0 3. 16.0 6.5 4. 2. 0.7272727 0. 1. + 8188. 1. 3. 27.0 6.0 1.0 2. 14.0 20.0 4. 4. 2.0000000 0. 1. + 8196. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 4. 4. 3.1999998 0. 1. + 8210. 1. 3. 22.0 2.5 1.0 3. 14.0 14.0 4. 3. 4.7999992 0. 1. + 8215. 1. 4. 32.0 13.0 3.0 1. 14.0 14.0 3. 4. 0.2692307 0. 1. + 8220. 1. 5. 27.0 9.0 2.0 1. 16.0 9.0 3. 5. 1.3611107 0. 1. + 8223. 1. 4. 22.0 2.5 0.0 3. 14.0 6.5 3. 2. 7.8399963 0. 1. + 8225. 1. 5. 42.0 23.0 3.0 3. 12.0 11.5 5. 2. 0.1521739 0. 1. + 8231. 1. 3. 22.0 2.5 1.0 3. 14.0 20.0 3. 2. 1.3999996 0. 1. + 8236. 1. 4. 27.0 6.0 1.0 2. 17.0 20.0 4. 2. 3.2666645 0. 1. + 8251. 1. 4. 37.0 16.5 3.0 3. 14.0 14.0 4. 2. 0.7424242 0. 1. + 8256. 1. 5. 27.0 6.0 1.0 3. 14.0 20.0 3. 2. 2.0000000 0. 1. + 8261. 1. 4. 22.0 2.5 4.0 3. 12.0 20.0 2. 4. 0.4000000 0. 1. + 8263. 1. 2. 32.0 9.0 2.0 2. 14.0 20.0 4. 5. 2.1777763 0. 1. + 8265. 1. 4. 22.0 2.5 1.0 3. 17.0 6.5 4. 1. 4.8999996 0. 1. + 8269. 1. 4. 27.0 6.0 0.0 2. 20.0 20.0 6. 6. 2.0416660 0. 1. + 8281. 1. 3. 27.0 2.5 0.0 2. 12.0 40.0 3. 6. 7.8399963 0. 1. + 8289. 1. 4. 22.0 2.5 2.0 2. 12.0 11.5 4. 2. 1.3999996 0. 1. + 8290. 1. 2. 22.0 6.0 1.0 2. 14.0 9.0 3. 5. 7.4666672 0. 1. + 8307. 1. 4. 32.0 6.0 1.0 3. 12.0 20.0 3. 4. 0.5833333 0. 1. + 8309. 1. 5. 22.0 6.0 0.0 2. 14.0 6.5 3. 1. 2.0416660 0. 1. + 8333. 1. 4. 32.0 9.0 2.0 2. 12.0 20.0 3. 2. 0.8888888 0. 1. + 8336. 1. 2. 42.0 23.0 4.0 2. 17.0 6.5 4. 2. 0.1521739 0. 1. + 8337. 1. 1. 37.0 23.0 4.0 2. 9.0 20.0 2. 5. 0.8521735 0. 1. + 8352. 1. 4. 37.0 23.0 2.0 2. 14.0 11.5 4. 4. 0.1521739 0. 1. + 8355. 1. 4. 27.0 9.0 0.0 2. 17.0 20.0 4. 5. 2.1777763 0. 1. + 8370. 1. 2. 22.0 6.0 2.0 2. 12.0 11.5 4. 4. 0.1666666 0. 1. + 8383. 1. 3. 27.0 6.0 3.0 3. 14.0 11.5 3. 5. 2.0416660 0. 1. + 8384. 1. 4. 22.0 2.5 5.5 3. 12.0 11.5 3. 2. 1.3999996 0. 1. + 8392. 1. 5. 22.0 6.0 2.0 3. 12.0 6.5 3. 5. 0.5833333 0. 1. + 8416. 1. 3. 27.0 6.0 1.0 2. 16.0 14.0 4. 4. 0.5833333 0. 1. + 8419. 1. 3. 22.0 2.5 0.0 3. 14.0 20.0 3. 5. 3.1999998 0. 1. + 8422. 1. 4. 32.0 16.5 5.5 2. 12.0 20.0 3. 5. 0.2121212 0. 1. + 8423. 1. 4. 27.0 9.0 2.0 3. 12.0 11.5 3. 2. 0.8888888 0. 1. + 8431. 1. 2. 37.0 23.0 3.0 3. 12.0 20.0 3. 4. 0.0434783 0. 1. + 8454. 1. 3. 37.0 23.0 4.0 3. 12.0 40.0 5. 2. 0.0434783 0. 1. + 8458. 1. 3. 32.0 16.5 5.5 2. 12.0 9.0 3. 3. 2.5454540 0. 1. + 8473. 1. 3. 22.0 2.5 0.0 2. 16.0 6.5 5. 4. 1.3999996 0. 1. + 8479. 1. 5. 37.0 23.0 4.0 3. 12.0 20.0 2. 2. 1.2173910 0. 1. + 8483. 1. 5. 22.0 2.5 0.0 3. 12.0 11.5 3. 2. 1.3999996 0. 1. + 8484. 1. 5. 27.0 9.0 1.0 3. 12.0 14.0 2. 2. 0.3888888 0. 1. + 8492. 1. 5. 32.0 13.0 3.0 1. 12.0 20.0 2. 2. 0.6153846 0. 1. + 8496. 1. 3. 32.0 16.5 2.0 3. 12.0 11.5 2. 2. 1.1878777 0. 1. + 8504. 1. 5. 32.0 16.5 2.0 1. 16.0 20.0 4. 2. 4.0727262 0. 1. + 8510. 1. 4. 27.0 6.0 0.0 2. 16.0 11.5 4. 2. 2.0000000 0. 1. + 8523. 1. 4. 22.0 2.5 0.0 3. 16.0 20.0 3. 5. 1.3999996 0. 1. + 8536. 1. 2. 22.0 2.5 0.0 3. 14.0 14.0 3. 2. 4.7999992 0. 1. + 8538. 1. 4. 37.0 16.5 2.0 3. 14.0 20.0 3. 5. 8.7272720 0. 1. + 8541. 1. 5. 27.0 6.0 1.0 4. 16.0 14.0 4. 4. 2.0416660 0. 1. + 8551. 1. 3. 22.0 6.0 1.0 3. 12.0 14.0 4. 4. 4.6666660 0. 1. + 8556. 1. 2. 32.0 9.0 2.0 3. 14.0 20.0 2. 4. 1.3611107 0. 1. + 8562. 1. 4. 27.0 6.0 2.0 1. 14.0 6.5 3. 1. 3.2666645 0. 1. + 8565. 1. 3. 27.0 2.5 0.0 1. 17.0 40.0 5. 4. 16.7999878 0. 1. + 8587. 1. 2. 22.0 6.0 1.0 3. 12.0 11.5 3. 5. 2.0416660 0. 1. + 8589. 1. 3. 27.0 9.0 2.0 3. 12.0 9.0 2. 2. 2.1777763 0. 1. + 8593. 1. 3. 37.0 23.0 4.0 1. 17.0 20.0 4. 4. 0.5217391 0. 1. + 8596. 1. 3. 42.0 23.0 5.5 4. 20.0 20.0 4. 4. 0.5326087 0. 1. + 8602. 1. 5. 22.0 2.5 1.0 3. 12.0 20.0 6. 2. 26.8799896 0. 1. + 8617. 1. 4. 37.0 16.5 3.0 2. 12.0 20.0 2. 2. 0.7272727 0. 1. + 8633. 1. 5. 27.0 6.0 0.0 2. 12.0 20.0 3. 2. 11.1999989 0. 1. + 8646. 1. 3. 22.0 2.5 0.0 2. 14.0 20.0 5. 2. 11.1999998 0. 1. + 8657. 1. 3. 32.0 16.5 3.0 2. 14.0 40.0 5. 5. 2.7151508 0. 1. + 8673. 1. 5. 27.0 6.0 0.0 3. 16.0 20.0 5. 5. 3.2666645 0. 1. + 8687. 1. 2. 42.0 23.0 3.0 2. 12.0 20.0 3. 4. 0.0434783 0. 1. + 8697. 1. 4. 27.0 2.5 0.0 3. 20.0 20.0 4. 5. 7.8399963 0. 1. + 8722. 1. 5. 22.0 2.5 0.0 3. 14.0 14.0 3. 5. 0.4000000 0. 1. + 8738. 1. 3. 27.0 6.0 1.0 3. 12.0 20.0 3. 4. 0.5833333 0. 1. + 8749. 1. 5. 32.0 13.0 1.0 2. 14.0 20.0 4. 3. 0.9423077 0. 1. + 8752. 1. 2. 32.0 2.5 0.0 3. 20.0 20.0 4. 4. 1.3999996 0. 1. + 8757. 1. 2. 27.0 9.0 2.0 2. 16.0 20.0 4. 5. 0.1111111 0. 1. + 8787. 1. 5. 22.0 2.5 0.0 2. 14.0 14.0 3. 3. 1.3999996 0. 1. + 8795. 1. 4. 27.0 2.5 0.0 2. 17.0 20.0 4. 5. 0.4000000 0. 1. + 8805. 1. 4. 27.0 0.5 0.0 3. 12.0 6.5 3. 4. 2.0000000 0. 1. + 8811. 1. 4. 32.0 13.0 2.0 4. 14.0 20.0 4. 5. 0.2692307 0. 1. + 8813. 1. 3. 27.0 9.0 1.0 3. 12.0 11.5 2. 2. 2.1777763 0. 1. + 8814. 1. 3. 32.0 13.0 2.0 2. 12.0 11.5 3. 5. 3.4461536 0. 1. + 8815. 1. 5. 27.0 9.0 2.0 2. 12.0 20.0 3. 5. 0.3888888 0. 1. + 8816. 1. 5. 22.0 6.0 1.0 2. 12.0 11.5 3. 2. 1.3333330 0. 1. + 8825. 1. 3. 32.0 13.0 0.0 1. 12.0 14.0 3. 4. 3.4461536 0. 1. + 8842. 1. 3. 37.0 23.0 2.0 3. 14.0 20.0 4. 5. 0.3478261 0. 1. + 8861. 1. 5. 32.0 16.5 1.0 3. 12.0 40.0 3. 2. 1.1878777 0. 1. + 8863. 1. 3. 32.0 16.5 3.0 1. 14.0 40.0 3. 6. 1.1878777 0. 1. + 8866. 1. 5. 22.0 6.0 0.0 1. 14.0 11.5 4. 4. 7.0000000 0. 1. + 8867. 1. 4. 37.0 13.0 0.0 2. 20.0 40.0 2. 6. 5.1692305 0. 1. + 8889. 1. 3. 42.0 23.0 3.0 2. 14.0 40.0 5. 4. 0.5217391 0. 1. + 8892. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 3. 4. 7.8399963 0. 1. + 8897. 1. 4. 27.0 13.0 3.0 3. 14.0 14.0 6. 5. 5.1692305 0. 1. + 8898. 1. 2. 42.0 23.0 1.0 1. 20.0 40.0 6. 6. 1.9478254 0. 1. + 8899. 1. 2. 27.0 9.0 2.0 3. 14.0 14.0 2. 2. 1.3611107 0. 1. + 8907. 1. 5. 27.0 6.0 1.0 2. 14.0 11.5 4. 2. 2.0416660 0. 1. + 8913. 1. 5. 37.0 13.0 4.0 2. 12.0 20.0 4. 5. 1.5076914 0. 1. + 8914. 1. 2. 22.0 6.0 1.0 2. 14.0 20.0 3. 2. 3.2666645 0. 1. + 8915. 1. 3. 17.5 2.5 0.0 4. 14.0 11.5 3. 4. 3.1999998 0. 1. + 8916. 1. 5. 22.0 2.5 1.0 3. 14.0 6.5 2. 4. 16.7999878 0. 1. + 8922. 1. 3. 27.0 6.0 0.0 3. 14.0 20.0 3. 4. 2.0000000 0. 1. + 8929. 1. 5. 27.0 9.0 0.0 1. 14.0 20.0 3. 5. 2.1777763 0. 1. + 8930. 1. 3. 32.0 13.0 3.0 2. 14.0 40.0 3. 6. 1.5076914 0. 1. + 8931. 1. 4. 37.0 23.0 3.0 3. 12.0 11.5 3. 4. 0.5217391 0. 1. + 8933. 1. 4. 42.0 23.0 1.0 2. 12.0 40.0 5. 5. 0.3478261 0. 1. + 8938. 1. 3. 32.0 9.0 2.0 3. 16.0 14.0 3. 5. 2.1777763 0. 1. + 8944. 1. 5. 42.0 23.0 3.0 4. 14.0 40.0 5. 6. 0.5217391 0. 1. + 8947. 1. 4. 27.0 9.0 2.0 2. 12.0 14.0 3. 4. 1.3611107 0. 1. + 8949. 1. 4. 32.0 16.5 3.0 3. 14.0 20.0 5. 5. 1.1878777 0. 1. + 8959. 1. 2. 22.0 2.5 0.0 1. 14.0 11.5 3. 4. 11.1999998 0. 1. + 8960. 1. 3. 37.0 16.5 3.0 2. 12.0 20.0 3. 5. 5.8181810 0. 1. + 8964. 1. 3. 22.0 2.5 0.0 2. 14.0 11.5 3. 4. 0.4000000 0. 1. + 8969. 1. 4. 27.0 6.0 0.0 1. 17.0 40.0 4. 6. 3.2666645 0. 1. + 8971. 1. 5. 32.0 13.0 3.0 3. 14.0 40.0 6. 6. 0.2692307 0. 1. + 8975. 1. 5. 42.0 23.0 3.0 2. 12.0 20.0 4. 2. 2.9217386 0. 1. + 8985. 1. 5. 22.0 2.5 1.0 3. 14.0 9.0 3. 2. 1.3999996 0. 1. + 8993. 1. 4. 42.0 23.0 2.0 3. 12.0 14.0 3. 5. 1.8260860 0. 1. + 9012. 1. 4. 32.0 16.5 2.0 4. 14.0 20.0 3. 5. 0.7272727 0. 1. + 9028. 1. 3. 27.0 2.5 2.0 1. 14.0 20.0 4. 2. 3.1999998 0. 1. + 9036. 1. 5. 42.0 16.5 2.0 1. 20.0 40.0 4. 4. 0.2121212 0. 1. + 9037. 1. 5. 22.0 2.5 0.0 2. 14.0 9.0 5. 4. 0.4000000 0. 1. + 9044. 1. 3. 22.0 2.5 0.0 1. 14.0 14.0 5. 4. 4.7999992 0. 1. + 9046. 1. 4. 27.0 2.5 0.0 2. 16.0 40.0 3. 5. 3.1999998 0. 1. + 9051. 1. 3. 27.0 6.0 1.0 3. 14.0 14.0 3. 4. 0.5833333 0. 1. + 9053. 1. 4. 42.0 23.0 2.0 3. 14.0 40.0 3. 5. 0.5326087 0. 1. + 9081. 1. 2. 37.0 2.5 1.0 3. 14.0 14.0 3. 2. 1.3999996 0. 1. + 9083. 1. 2. 42.0 23.0 2.0 3. 14.0 20.0 3. 5. 0.5326087 0. 1. + 9093. 1. 1. 42.0 23.0 2.0 1. 14.0 40.0 5. 5. 1.8260860 0. 1. + 9095. 1. 5. 27.0 13.0 1.0 1. 12.0 14.0 2. 4. 0.9423077 0. 1. + 9104. 1. 5. 32.0 9.0 1.0 3. 20.0 20.0 3. 3. 4.9777775 0. 1. + 9106. 1. 3. 27.0 9.0 1.0 1. 16.0 20.0 5. 4. 0.3888888 0. 1. + 9109. 1. 4. 27.0 9.0 2.0 2. 12.0 20.0 4. 4. 2.1777763 0. 1. + 9134. 1. 4. 27.0 6.0 2.0 3. 14.0 11.5 6. 5. 2.0416660 0. 1. + 9163. 1. 4. 27.0 9.0 1.0 2. 20.0 14.0 3. 5. 2.1777763 0. 1. + 9172. 1. 2. 37.0 16.5 3.0 2. 20.0 20.0 4. 4. 0.2121212 0. 1. + 9178. 1. 3. 27.0 9.0 2.0 3. 14.0 20.0 3. 5. 0.3888888 0. 1. + 9180. 1. 5. 27.0 6.0 1.0 2. 14.0 40.0 4. 6. 0.5833333 0. 1. + 9185. 1. 3. 37.0 23.0 2.0 2. 14.0 20.0 5. 4. 0.5326087 0. 1. + 9226. 1. 4. 27.0 13.0 1.0 4. 14.0 11.5 3. 5. 0.9230769 0. 1. + 9229. 1. 4. 22.0 0.5 0.0 1. 12.0 9.0 2. 4. 24.0000000 0. 1. + 9234. 1. 5. 42.0 23.0 5.5 4. 12.0 14.0 3. 4. 0.1521739 0. 1. + 9238. 1. 4. 32.0 13.0 2.0 1. 14.0 20.0 5. 6. 0.9423077 0. 1. + 9239. 1. 4. 27.0 9.0 2.0 1. 16.0 11.5 4. 4. 0.8888888 0. 1. + 9243. 1. 5. 22.0 6.0 2.0 3. 12.0 11.5 2. 5. 0.1666666 0. 1. + 9253. 1. 2. 37.0 16.5 2.0 1. 12.0 40.0 3. 6. 1.1878777 0. 1. + 9280. 1. 3. 32.0 13.0 2.0 2. 16.0 20.0 3. 5. 1.5076914 0. 1. + 9281. 1. 4. 27.0 9.0 0.0 1. 12.0 20.0 3. 5. 2.1777763 0. 1. + 9284. 1. 3. 42.0 23.0 2.0 3. 16.0 40.0 5. 6. 0.8521735 0. 1. + 9292. 1. 4. 27.0 9.0 2.0 3. 14.0 14.0 3. 4. 2.1777763 0. 1. + 9296. 1. 5. 22.0 6.0 0.0 3. 12.0 40.0 3. 5. 0.1666666 0. 1. + 9298. 1. 4. 42.0 23.0 3.0 3. 12.0 20.0 3. 4. 0.5217391 0. 1. + 9301. 1. 4. 37.0 16.5 2.0 2. 12.0 40.0 3. 5. 0.2121212 0. 1. + 9303. 1. 4. 42.0 16.5 1.0 2. 16.0 40.0 2. 6. 0.2121212 0. 1. + 9312. 1. 4. 37.0 16.5 5.5 2. 14.0 20.0 4. 5. 0.7424242 0. 1. + 9326. 1. 2. 32.0 13.0 1.0 2. 17.0 20.0 3. 3. 1.5076914 0. 1. + 9341. 1. 2. 32.0 9.0 2.0 1. 16.0 40.0 5. 5. 0.3888888 0. 1. + 9368. 1. 4. 42.0 23.0 2.0 1. 14.0 40.0 5. 6. 2.7826080 0. 1. + 9373. 1. 4. 42.0 23.0 2.0 2. 12.0 9.0 3. 4. 0.1521739 0. 1. + 9381. 1. 5. 22.0 2.5 0.0 1. 12.0 11.5 3. 4. 4.8999996 0. 1. + 9386. 1. 4. 27.0 6.0 1.0 2. 14.0 20.0 4. 2. 1.3333330 0. 1. + 9388. 1. 4. 22.0 6.0 2.0 4. 12.0 11.5 3. 2. 0.1666666 0. 1. + 9393. 1. 5. 37.0 23.0 4.0 3. 12.0 20.0 3. 4. 2.7826080 0. 1. + 9419. 1. 3. 42.0 23.0 2.0 1. 20.0 40.0 4. 4. 0.8521735 0. 1. + 9423. 1. 4. 32.0 9.0 0.0 2. 20.0 40.0 4. 4. 0.1111111 0. 1. + 9424. 1. 4. 22.0 2.5 0.0 1. 16.0 20.0 2. 4. 3.1999998 0. 1. + 9441. 1. 5. 27.0 6.0 1.0 3. 14.0 20.0 3. 3. 2.0000000 0. 1. + 9446. 1. 5. 27.0 2.5 0.0 3. 16.0 20.0 4. 3. 7.8399963 0. 1. + 9456. 1. 5. 22.0 2.5 1.0 2. 12.0 9.0 2. 2. 1.3999996 0. 1. + 9464. 1. 5. 27.0 6.0 0.0 1. 17.0 20.0 5. 2. 0.5833333 0. 1. + 9469. 1. 3. 32.0 13.0 2.0 4. 12.0 9.0 2. 5. 1.5076914 0. 1. + 9486. 1. 4. 32.0 16.5 2.0 3. 14.0 20.0 5. 4. 0.7424242 0. 1. + 9496. 1. 5. 32.0 13.0 2.0 2. 14.0 20.0 4. 5. 0.2692307 0. 1. + 9497. 1. 4. 32.0 16.5 2.0 4. 14.0 6.5 2. 1. 0.4848484 0. 1. + 9500. 1. 3. 32.0 13.0 2.0 2. 20.0 40.0 4. 5. 0.2692307 0. 1. + 9515. 1. 3. 42.0 23.0 4.0 3. 20.0 11.5 4. 5. 0.8521735 0. 1. + 9518. 1. 5. 27.0 9.0 1.0 1. 20.0 40.0 6. 6. 0.8888888 0. 1. + 9531. 1. 4. 32.0 16.5 2.0 2. 12.0 20.0 3. 4. 1.1878777 0. 1. + 9540. 1. 5. 42.0 23.0 3.0 3. 17.0 40.0 4. 5. 0.0434783 0. 1. + 9555. 1. 3. 32.0 13.0 4.0 2. 12.0 11.5 2. 4. 0.2692307 0. 1. + 9568. 1. 3. 32.0 16.5 2.0 1. 14.0 14.0 3. 4. 2.5454540 0. 1. + 9576. 1. 5. 32.0 6.0 1.0 1. 14.0 20.0 4. 5. 0.5833333 0. 1. + 9580. 1. 4. 27.0 6.0 1.0 2. 14.0 14.0 3. 5. 0.5833333 0. 1. + 9581. 1. 2. 27.0 9.0 1.0 1. 17.0 11.5 1. 4. 3.1111107 0. 1. + 9584. 1. 5. 27.0 6.0 0.0 2. 16.0 40.0 5. 6. 0.5833333 0. 1. + 9606. 1. 4. 27.0 16.5 2.0 3. 9.0 11.5 2. 4. 0.7424242 0. 1. + 9610. 1. 4. 32.0 13.0 1.0 3. 20.0 9.0 2. 2. 0.9423077 0. 1. + 9614. 1. 4. 37.0 16.5 2.0 2. 12.0 20.0 3. 3. 1.1878777 0. 1. + 9619. 1. 3. 27.0 6.0 0.0 4. 12.0 9.0 3. 5. 1.3333330 0. 1. + 9628. 1. 3. 37.0 23.0 4.0 2. 12.0 20.0 3. 4. 2.9217386 0. 1. + 9630. 1. 3. 27.0 6.0 0.0 3. 14.0 40.0 3. 3. 2.0000000 0. 1. + 9635. 1. 5. 22.0 2.5 0.0 3. 12.0 11.5 3. 5. 4.7999992 0. 1. + 9637. 1. 4. 32.0 9.0 1.0 2. 12.0 20.0 3. 4. 2.1777763 0. 1. + 9649. 1. 4. 27.0 9.0 1.0 3. 17.0 20.0 4. 6. 2.1777763 0. 1. + 9652. 1. 5. 27.0 13.0 2.0 2. 12.0 40.0 4. 5. 0.9230769 0. 1. + 9660. 1. 5. 22.0 2.5 2.0 1. 12.0 20.0 3. 2. 1.3999996 0. 1. + 9661. 1. 4. 22.0 6.0 2.0 2. 12.0 9.0 3. 4. 0.5833333 0. 1. + 9663. 1. 2. 32.0 16.5 1.0 4. 12.0 40.0 5. 5. 1.1878777 0. 1. + 9686. 1. 3. 27.0 2.5 0.0 2. 20.0 20.0 4. 1. 1.3999996 0. 1. + 9691. 1. 3. 27.0 13.0 1.0 2. 12.0 14.0 5. 5. 3.2307692 0. 1. + 9713. 1. 4. 37.0 23.0 1.0 1. 16.0 20.0 5. 5. 1.2173910 0. 1. + 9714. 1. 4. 27.0 6.0 0.0 3. 16.0 11.5 2. 1. 2.0000000 0. 1. + 9715. 1. 4. 22.0 6.0 0.0 2. 14.0 20.0 3. 5. 4.6666660 0. 1. + 9723. 1. 5. 42.0 16.5 2.0 3. 20.0 40.0 6. 6. 0.7272727 0. 1. + 9736. 1. 2. 37.0 16.5 1.0 2. 16.0 20.0 4. 5. 1.1878777 0. 1. + 9743. 1. 1. 32.0 13.0 3.0 3. 12.0 14.0 2. 4. 0.0769231 0. 1. + 9750. 1. 5. 22.0 2.5 1.0 3. 12.0 20.0 3. 4. 4.8999996 0. 1. + 9767. 1. 4. 22.0 2.5 0.0 2. 14.0 14.0 3. 5. 4.7999992 0. 1. + 9770. 1. 3. 22.0 2.5 0.0 2. 16.0 20.0 4. 4. 4.8999996 0. 1. + 9773. 1. 5. 37.0 16.5 2.0 3. 12.0 20.0 5. 5. 4.0727262 0. 1. + 9779. 1. 4. 17.5 2.5 0.0 2. 12.0 11.5 2. 5. 4.7999992 0. 1. + 9780. 1. 5. 42.0 23.0 2.0 3. 17.0 20.0 5. 2. 0.5326087 0. 1. + 9797. 1. 3. 32.0 13.0 2.0 3. 14.0 40.0 5. 2. 3.2307692 0. 1. + 9807. 1. 3. 42.0 23.0 3.0 2. 12.0 9.0 4. 4. 1.2173910 0. 1. + 9810. 1. 4. 27.0 2.5 0.0 3. 14.0 14.0 3. 4. 1.3999996 0. 1. + 9813. 1. 5. 42.0 13.0 0.0 2. 12.0 14.0 5. 5. 0.9230769 0. 1. + 9825. 1. 2. 32.0 9.0 2.0 4. 16.0 20.0 4. 4. 2.1777763 0. 1. + 9832. 1. 3. 27.0 6.0 1.0 3. 14.0 20.0 3. 4. 3.2666645 0. 1. + 9838. 1. 2. 27.0 9.0 3.0 3. 12.0 11.5 5. 4. 2.1777763 0. 1. + 9846. 1. 3. 27.0 6.0 2.0 3. 14.0 20.0 4. 6. 0.5833333 0. 1. + 9864. 1. 5. 27.0 9.0 2.0 1. 14.0 20.0 3. 4. 4.9777775 0. 1. + 9877. 1. 2. 27.0 13.0 1.0 3. 12.0 20.0 3. 2. 0.0769231 0. 1. + 9896. 1. 4. 27.0 13.0 2.0 2. 12.0 14.0 3. 4. 0.0769231 0. 1. + 9905. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 3. 4. 4.7999992 0. 1. + 9906. 1. 4. 27.0 9.0 0.0 3. 12.0 9.0 2. 4. 4.6666660 0. 1. + 9922. 1. 3. 27.0 9.0 2.0 3. 12.0 20.0 4. 5. 0.3888888 0. 1. + 9925. 1. 3. 22.0 2.5 0.0 2. 17.0 11.5 2. 6. 3.1999998 0. 1. + 9930. 1. 3. 27.0 6.0 1.0 3. 14.0 20.0 3. 3. 2.0416660 0. 1. + 9933. 1. 4. 27.0 6.0 0.0 2. 14.0 14.0 5. 3. 2.0000000 0. 1. + 9937. 1. 4. 32.0 16.5 3.0 3. 14.0 20.0 5. 5. 0.0606061 0. 1. + 9938. 1. 4. 32.0 16.5 2.0 3. 12.0 20.0 5. 5. 0.7424242 0. 1. + 9942. 1. 3. 42.0 16.5 2.0 4. 16.0 20.0 5. 5. 0.2121212 0. 1. + 9948. 1. 3. 32.0 6.0 2.0 3. 14.0 14.0 3. 4. 2.0000000 0. 1. + 9950. 1. 3. 37.0 23.0 4.0 4. 9.0 20.0 5. 5. 0.5326087 0. 1. + 9962. 1. 1. 42.0 16.5 1.0 2. 12.0 20.0 3. 5. 1.1878777 0. 1. + 9963. 1. 2. 42.0 23.0 5.5 3. 14.0 20.0 2. 2. 0.5217391 0. 1. + 9966. 1. 5. 37.0 16.5 4.0 4. 14.0 20.0 3. 3. 0.0606061 0. 1. + 9968. 1. 5. 42.0 23.0 1.0 3. 14.0 14.0 3. 5. 0.8521735 0. 1. + 9975. 1. 3. 22.0 2.5 1.0 2. 12.0 4.0 2. 2. 7.8399963 0. 1. + 9991. 1. 5. 22.0 2.5 0.0 2. 16.0 11.5 5. 4. 4.8999996 0. 1. + 9995. 1. 2. 27.0 6.0 1.0 2. 14.0 20.0 3. 4. 0.1666666 0. 1. + 10007. 1. 1. 32.0 13.0 2.0 2. 16.0 20.0 4. 6. 0.0769231 0. 1. + 10008. 1. 3. 32.0 16.5 2.0 2. 16.0 14.0 4. 2. 1.1878777 0. 1. + 10024. 1. 5. 27.0 9.0 1.0 3. 14.0 14.0 3. 5. 2.1777763 0. 1. + 10046. 1. 3. 22.0 6.0 1.0 1. 12.0 11.5 3. 2. 3.2666645 0. 1. + 10054. 1. 4. 27.0 6.0 2.0 3. 12.0 11.5 3. 2. 1.3333330 0. 1. + 10066. 1. 4. 37.0 16.5 2.0 4. 17.0 40.0 6. 6. 0.4848484 0. 1. + 10073. 1. 4. 22.0 2.5 0.0 3. 12.0 20.0 3. 3. 0.4000000 0. 1. + 10085. 1. 1. 42.0 23.0 3.0 3. 14.0 20.0 3. 5. 0.8521735 0. 1. + 10088. 1. 2. 22.0 2.5 0.0 2. 12.0 20.0 3. 5. 4.7999992 0. 1. + 10093. 1. 4. 37.0 13.0 1.0 3. 20.0 14.0 4. 2. 1.5076914 0. 1. + 10098. 1. 2. 27.0 6.0 1.0 2. 12.0 11.5 2. 2. 0.5833333 0. 1. + 10103. 1. 5. 27.0 9.0 2.0 3. 20.0 11.5 4. 4. 0.3888888 0. 1. + 10115. 1. 3. 42.0 23.0 3.0 3. 12.0 20.0 2. 2. 1.8260860 0. 1. + 10116. 1. 3. 42.0 16.5 2.0 3. 14.0 20.0 3. 2. 0.7272727 0. 1. + 10123. 1. 2. 32.0 16.5 1.0 1. 17.0 40.0 4. 6. 0.2121212 0. 1. + 10124. 1. 4. 22.0 2.5 1.0 2. 14.0 14.0 3. 5. 0.4000000 0. 1. + 10125. 1. 5. 42.0 23.0 3.0 4. 16.0 20.0 3. 4. 0.8521735 0. 1. + 10134. 1. 4. 27.0 13.0 2.0 3. 14.0 14.0 3. 5. 3.2307692 0. 1. + 10146. 1. 1. 32.0 13.0 1.0 2. 12.0 40.0 3. 3. 0.0769231 0. 1. + 10147. 1. 3. 42.0 23.0 5.5 2. 14.0 40.0 5. 6. 0.5217391 0. 1. + 10170. 1. 5. 37.0 23.0 2.0 3. 12.0 20.0 3. 5. 1.8260860 0. 1. + 10188. 1. 5. 22.0 2.5 0.0 1. 14.0 9.0 4. 1. 4.8999996 0. 1. + 10199. 1. 3. 27.0 6.0 0.0 2. 14.0 11.5 3. 6. 2.0000000 0. 1. + 10219. 1. 4. 22.0 2.5 1.0 1. 14.0 6.5 2. 2. 1.3999996 0. 1. + 10224. 1. 5. 37.0 13.0 2.0 1. 12.0 20.0 3. 4. 0.9423077 0. 1. + 10228. 1. 4. 42.0 23.0 3.0 2. 14.0 11.5 3. 3. 0.8521735 0. 1. + 10237. 1. 3. 27.0 6.0 2.0 3. 20.0 40.0 4. 2. 0.5833333 0. 1. + 10245. 1. 4. 27.0 6.0 2.0 2. 12.0 20.0 2. 5. 2.0416660 0. 1. + 10253. 1. 2. 27.0 2.5 1.0 3. 14.0 9.0 2. 4. 7.8399963 0. 1. + 10265. 1. 5. 42.0 23.0 4.0 1. 12.0 40.0 5. 6. 0.1521739 0. 1. + 10268. 1. 3. 42.0 13.0 0.0 3. 17.0 20.0 3. 2. 0.9230769 0. 1. + 10273. 1. 5. 27.0 6.0 0.0 3. 14.0 9.0 3. 5. 0.5833333 0. 1. + 10284. 1. 4. 22.0 2.5 0.0 3. 14.0 11.5 3. 2. 1.3999996 0. 1. + 10285. 1. 3. 27.0 13.0 3.0 3. 12.0 11.5 4. 4. 5.1692305 0. 1. + 10297. 1. 3. 32.0 9.0 0.0 2. 14.0 20.0 3. 4. 0.8888888 0. 1. + 10300. 1. 1. 37.0 16.5 1.0 3. 14.0 11.5 2. 5. 0.2121212 0. 1. + 10309. 1. 3. 37.0 23.0 2.0 3. 12.0 20.0 5. 5. 0.8521735 0. 1. + 10317. 1. 2. 32.0 16.5 2.0 2. 12.0 14.0 3. 4. 0.7272727 0. 1. + 10337. 1. 3. 27.0 6.0 0.0 1. 16.0 11.5 4. 1. 7.4666672 0. 1. + 10343. 1. 4. 42.0 16.5 3.0 2. 14.0 20.0 5. 4. 0.7424242 0. 1. + 10352. 1. 1. 42.0 16.5 1.0 3. 12.0 40.0 5. 5. 1.1878777 0. 1. + 10355. 1. 3. 32.0 16.5 3.0 4. 12.0 11.5 4. 2. 0.7272727 0. 1. + 10370. 1. 5. 27.0 6.0 1.0 4. 14.0 20.0 3. 3. 2.0416660 0. 1. + 10380. 1. 2. 32.0 16.5 2.0 2. 14.0 20.0 2. 3. 4.0727262 0. 1. + 10385. 1. 2. 17.5 2.5 0.0 2. 12.0 20.0 3. 2. 16.7999878 0. 1. + 10404. 1. 4. 32.0 16.5 2.0 3. 14.0 20.0 3. 4. 0.7424242 0. 1. + 10434. 1. 3. 22.0 2.5 0.0 3. 14.0 20.0 3. 4. 7.8399963 0. 1. + 10457. 1. 5. 27.0 6.0 0.0 3. 16.0 20.0 3. 6. 2.0000000 0. 1. + 10478. 1. 5. 37.0 23.0 3.0 3. 12.0 20.0 3. 5. 0.1521739 0. 1. + 10483. 1. 3. 32.0 13.0 0.0 2. 12.0 20.0 5. 2. 0.2692307 0. 1. + 10492. 1. 4. 42.0 23.0 1.0 2. 14.0 20.0 5. 5. 0.0434783 0. 1. + 10498. 1. 1. 42.0 23.0 2.0 3. 14.0 20.0 3. 4. 2.9217386 0. 1. + 10499. 1. 2. 37.0 23.0 3.0 2. 12.0 20.0 3. 3. 1.9478254 0. 1. + 10500. 1. 4. 22.0 0.5 0.0 3. 16.0 11.5 4. 6. 7.0000000 0. 1. + 10519. 1. 5. 27.0 9.0 2.0 2. 14.0 11.5 3. 4. 0.1111111 0. 1. + 10525. 1. 4. 22.0 0.5 0.0 1. 14.0 20.0 5. 4. 16.0000000 0. 1. + 10530. 1. 3. 27.0 9.0 2.0 2. 17.0 20.0 4. 4. 1.3611107 0. 1. + 10532. 1. 4. 42.0 23.0 2.0 3. 14.0 20.0 3. 5. 1.2173910 0. 1. + 10540. 1. 4. 22.0 2.5 0.0 2. 14.0 20.0 5. 5. 1.3999996 0. 1. + 10545. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 3. 4. 17.9199982 0. 1. + 10546. 1. 4. 27.0 13.0 2.0 3. 14.0 20.0 5. 5. 0.9423077 0. 1. + 10550. 1. 4. 27.0 6.0 1.0 3. 16.0 20.0 4. 6. 2.0416660 0. 1. + 10551. 1. 3. 42.0 23.0 3.0 2. 14.0 20.0 2. 2. 0.5217391 0. 1. + 10572. 1. 3. 27.0 6.0 2.0 1. 12.0 9.0 4. 3. 2.0416660 0. 1. + 10579. 1. 5. 42.0 23.0 2.0 2. 16.0 20.0 3. 5. 0.8521735 0. 1. + 10590. 1. 3. 42.0 23.0 2.0 4. 14.0 40.0 3. 6. 0.0434783 0. 1. + 10594. 1. 5. 32.0 16.5 1.0 3. 14.0 14.0 3. 5. 0.2121212 0. 1. + 10604. 1. 4. 27.0 6.0 2.0 3. 14.0 20.0 5. 5. 0.1666666 0. 1. + 10605. 1. 2. 37.0 23.0 3.0 1. 14.0 40.0 5. 5. 0.1521739 0. 1. + 10614. 1. 4. 22.0 6.0 1.0 3. 14.0 6.5 3. 1. 3.2666645 0. 1. + 10616. 1. 2. 27.0 9.0 2.0 3. 12.0 14.0 3. 4. 1.3333330 0. 1. + 10617. 1. 5. 27.0 9.0 2.0 1. 14.0 20.0 4. 4. 2.1777763 0. 1. + 10625. 1. 4. 27.0 2.5 0.0 3. 14.0 40.0 3. 4. 16.7999878 0. 1. + 10638. 1. 5. 37.0 16.5 2.0 2. 14.0 40.0 3. 5. 0.7272727 0. 1. + 10649. 1. 3. 22.0 2.5 1.0 2. 14.0 6.5 2. 2. 0.4000000 0. 1. + 10655. 1. 4. 27.0 2.5 1.0 2. 16.0 20.0 3. 6. 0.4000000 0. 1. + 10659. 1. 1. 27.0 6.0 1.0 1. 12.0 9.0 3. 5. 0.1666666 0. 1. + 10669. 1. 4. 37.0 16.5 5.5 3. 17.0 9.0 4. 2. 0.2121212 0. 1. + 10672. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 4. 3. 4.8999996 0. 1. + 10689. 1. 2. 22.0 2.5 1.0 1. 14.0 20.0 2. 6. 1.3999996 0. 1. + 10694. 1. 5. 42.0 16.5 2.0 3. 12.0 20.0 3. 3. 0.7424242 0. 1. + 10711. 1. 3. 22.0 6.0 1.0 2. 12.0 20.0 4. 4. 1.3333330 0. 1. + 10712. 1. 3. 37.0 23.0 3.0 3. 12.0 20.0 3. 4. 1.9478254 0. 1. + 10714. 1. 4. 27.0 6.0 1.0 3. 14.0 20.0 3. 2. 2.0416660 0. 1. + 10736. 1. 2. 32.0 16.5 4.0 2. 12.0 20.0 3. 4. 1.1878777 0. 1. + 10741. 1. 3. 27.0 9.0 1.0 2. 14.0 20.0 3. 5. 0.3888888 0. 1. + 10752. 1. 5. 32.0 16.5 3.0 3. 16.0 20.0 4. 6. 0.2121212 0. 1. + 10769. 1. 5. 22.0 6.0 1.0 2. 12.0 6.5 3. 2. 0.5833333 0. 1. + 10775. 1. 3. 27.0 13.0 3.0 2. 12.0 20.0 2. 4. 0.2692307 0. 1. + 10777. 1. 5. 22.0 2.5 0.0 3. 12.0 11.5 3. 3. 1.3999996 0. 1. + 10788. 1. 4. 32.0 2.5 0.0 2. 14.0 40.0 5. 6. 1.3999996 0. 1. + 10795. 1. 3. 27.0 6.0 1.0 2. 14.0 11.5 3. 5. 2.0416660 0. 1. + 10797. 1. 3. 27.0 6.0 2.0 3. 12.0 14.0 3. 6. 0.1666666 0. 1. + 10807. 1. 2. 32.0 13.0 2.0 3. 12.0 20.0 3. 3. 0.2692307 0. 1. + 10808. 1. 4. 32.0 16.5 2.0 3. 14.0 20.0 2. 5. 0.2121212 0. 1. + 10826. 1. 3. 27.0 6.0 2.0 2. 12.0 20.0 5. 2. 2.0000000 0. 1. + 10827. 1. 4. 27.0 9.0 2.0 1. 17.0 14.0 4. 5. 2.1777763 0. 1. + 10836. 1. 4. 37.0 16.5 2.0 2. 12.0 14.0 4. 4. 1.1878777 0. 1. + 10841. 1. 3. 22.0 2.5 0.0 3. 16.0 9.0 3. 4. 4.7999992 0. 1. + 10857. 1. 4. 27.0 9.0 2.0 2. 14.0 20.0 5. 5. 1.3611107 0. 1. + 10893. 1. 3. 32.0 16.5 4.0 2. 12.0 11.5 3. 5. 1.6969690 0. 1. + 10897. 1. 3. 27.0 9.0 2.0 4. 14.0 14.0 3. 2. 2.1777763 0. 1. + 10898. 1. 4. 32.0 13.0 2.0 2. 16.0 20.0 2. 5. 0.2692307 0. 1. + 10905. 1. 2. 37.0 23.0 2.0 3. 14.0 20.0 3. 5. 0.5217391 0. 1. + 10922. 1. 4. 22.0 2.5 0.0 1. 17.0 11.5 3. 4. 17.9199982 0. 1. + 10928. 1. 4. 27.0 6.0 0.0 1. 17.0 14.0 4. 4. 0.1666666 0. 1. + 10933. 1. 4. 27.0 6.0 1.0 2. 12.0 20.0 3. 6. 7.0000000 0. 1. + 10935. 1. 3. 22.0 6.0 0.0 3. 12.0 9.0 3. 2. 0.5833333 0. 1. + 10947. 1. 3. 42.0 23.0 3.0 2. 12.0 11.5 3. 2. 1.8260860 0. 1. + 10964. 1. 4. 27.0 6.0 3.0 3. 16.0 9.0 3. 2. 2.0416660 0. 1. + 10966. 1. 4. 32.0 16.5 3.0 3. 12.0 20.0 3. 3. 1.1878777 0. 1. + 10971. 1. 3. 27.0 13.0 2.0 3. 12.0 9.0 5. 5. 3.4461536 0. 1. + 10972. 1. 3. 27.0 16.5 2.0 4. 14.0 11.5 3. 4. 0.2121212 0. 1. + 10991. 1. 3. 27.0 6.0 3.0 2. 14.0 9.0 2. 2. 0.1666666 0. 1. + 11004. 1. 5. 22.0 2.5 0.0 3. 12.0 6.5 5. 2. 0.4000000 0. 1. + 11012. 1. 4. 42.0 23.0 2.0 2. 16.0 20.0 5. 5. 1.2173910 0. 1. + 11020. 1. 1. 22.0 2.5 1.0 3. 14.0 20.0 3. 5. 4.8999996 0. 1. + 11021. 1. 4. 42.0 23.0 3.0 3. 16.0 14.0 4. 3. 0.1521739 0. 1. + 11056. 1. 3. 32.0 16.5 2.0 4. 16.0 20.0 4. 4. 0.7424242 0. 1. + 11068. 1. 3. 32.0 16.5 2.0 4. 12.0 14.0 3. 3. 0.7272727 0. 1. + 11072. 1. 4. 22.0 2.5 1.0 2. 14.0 11.5 3. 3. 4.7999992 0. 1. + 11086. 1. 3. 22.0 6.0 1.0 3. 14.0 20.0 3. 5. 0.5833333 0. 1. + 11099. 1. 4. 27.0 6.0 0.0 2. 12.0 11.5 3. 4. 0.1666666 0. 1. + 11104. 1. 5. 32.0 16.5 4.0 4. 9.0 11.5 2. 4. 0.0606061 0. 1. + 11122. 1. 1. 27.0 6.0 1.0 3. 20.0 14.0 4. 4. 2.0000000 0. 1. + 11123. 1. 2. 22.0 2.5 0.0 1. 14.0 20.0 3. 2. 4.8999996 0. 1. + 11127. 1. 5. 27.0 9.0 3.0 4. 14.0 20.0 2. 5. 0.3888888 0. 1. + 11142. 1. 3. 27.0 6.0 1.0 2. 16.0 20.0 3. 1. 7.0000000 0. 1. + 11150. 1. 4. 32.0 16.5 2.0 1. 16.0 40.0 5. 5. 2.5454540 0. 1. + 11156. 1. 5. 27.0 6.0 0.0 3. 12.0 14.0 3. 3. 2.0416660 0. 1. + 11179. 1. 4. 42.0 23.0 2.0 3. 12.0 6.5 5. 2. 0.5326087 0. 1. + 11182. 1. 3. 27.0 9.0 2.0 2. 12.0 14.0 3. 4. 2.1777763 0. 1. + 11192. 1. 4. 27.0 9.0 0.0 3. 14.0 20.0 3. 3. 2.1777763 0. 1. + 11193. 1. 4. 27.0 13.0 2.0 3. 17.0 20.0 4. 2. 3.4461536 0. 1. + 11210. 1. 5. 32.0 16.5 2.0 3. 17.0 14.0 4. 4. 1.1878777 0. 1. + 11215. 1. 4. 27.0 6.0 1.0 2. 12.0 14.0 5. 4. 3.2666645 0. 1. + 11217. 1. 4. 42.0 23.0 4.0 4. 12.0 40.0 5. 5. 0.5326087 0. 1. + 11222. 1. 1. 42.0 23.0 2.0 4. 14.0 9.0 3. 2. 0.3478261 0. 1. + 11233. 1. 2. 22.0 2.5 1.0 3. 14.0 20.0 3. 4. 1.3999996 0. 1. + 11234. 1. 1. 32.0 9.0 3.0 2. 14.0 20.0 4. 4. 1.3611107 0. 1. + 11245. 1. 3. 27.0 6.0 1.0 3. 12.0 6.5 4. 3. 0.5833333 0. 1. + 11252. 1. 4. 27.0 2.5 0.0 1. 16.0 14.0 4. 1. 4.7999992 0. 1. + 11255. 1. 5. 42.0 23.0 2.0 1. 17.0 14.0 4. 5. 0.5217391 0. 1. + 11257. 1. 5. 32.0 16.5 2.0 3. 14.0 20.0 3. 5. 0.4848484 0. 1. + 11269. 1. 4. 32.0 16.5 2.0 4. 12.0 40.0 3. 4. 2.5454540 0. 1. + 11281. 1. 5. 42.0 23.0 3.0 3. 14.0 20.0 4. 2. 0.5326087 0. 1. + 11285. 1. 4. 37.0 16.5 2.0 1. 16.0 40.0 3. 5. 0.7272727 0. 1. + 11288. 1. 2. 32.0 9.0 0.0 2. 12.0 9.0 3. 4. 0.1111111 0. 1. + 11302. 1. 4. 37.0 16.5 2.0 4. 12.0 20.0 3. 4. 0.4848484 0. 1. + 11310. 1. 3. 32.0 6.0 3.0 2. 14.0 9.0 3. 4. 0.5833333 0. 1. + 11314. 1. 5. 37.0 23.0 2.0 2. 14.0 40.0 3. 5. 0.3478261 0. 1. + 11315. 1. 2. 32.0 13.0 0.0 2. 12.0 20.0 3. 4. 1.5076914 0. 1. + 11365. 1. 4. 32.0 13.0 2.0 3. 14.0 20.0 3. 4. 3.2307692 0. 1. + 11372. 1. 4. 37.0 16.5 3.0 3. 14.0 14.0 3. 3. 0.2121212 0. 1. + 11382. 1. 4. 22.0 2.5 0.0 2. 14.0 11.5 3. 5. 4.7999992 0. 1. + 11384. 1. 5. 42.0 23.0 4.0 2. 14.0 11.5 3. 4. 0.8521735 0. 1. + 11406. 1. 3. 32.0 16.5 2.0 4. 12.0 20.0 3. 5. 1.1878777 0. 1. + 11409. 1. 4. 42.0 23.0 4.0 3. 9.0 14.0 3. 5. 1.9478254 0. 1. + 11418. 1. 5. 22.0 2.5 1.0 2. 12.0 11.5 3. 4. 4.8999996 0. 1. + 11429. 1. 2. 32.0 9.0 0.0 2. 14.0 6.5 3. 4. 0.8888888 0. 1. + 11433. 1. 5. 32.0 13.0 1.0 2. 14.0 20.0 3. 5. 0.2692307 0. 1. + 11449. 1. 2. 32.0 16.5 3.0 2. 12.0 11.5 5. 2. 0.7424242 0. 1. + 11459. 1. 5. 27.0 6.0 1.0 1. 14.0 20.0 5. 5. 2.0000000 0. 1. + 11461. 1. 4. 42.0 23.0 4.0 2. 14.0 14.0 3. 4. 0.8521735 0. 1. + 11465. 1. 3. 27.0 6.0 1.0 2. 14.0 11.5 5. 2. 3.2666645 0. 1. + 11470. 1. 3. 32.0 13.0 1.0 1. 16.0 20.0 4. 2. 0.6153846 0. 1. + 11472. 1. 2. 27.0 6.0 2.0 3. 12.0 6.5 3. 5. 0.1666666 0. 1. + 11473. 1. 4. 27.0 9.0 2.0 3. 12.0 11.5 4. 4. 1.3611107 0. 1. + 11486. 1. 5. 22.0 2.5 1.0 1. 14.0 9.0 3. 2. 11.1999998 0. 1. + 11489. 1. 2. 22.0 2.5 1.0 3. 14.0 20.0 5. 6. 7.8399963 0. 1. + 11509. 1. 5. 22.0 2.5 0.0 1. 16.0 11.5 5. 4. 0.4000000 0. 1. + 11520. 1. 4. 37.0 23.0 4.0 3. 14.0 40.0 3. 5. 1.9478254 0. 1. + 11522. 1. 2. 32.0 16.5 4.0 3. 12.0 6.5 3. 4. 0.7424242 0. 1. + 11524. 1. 3. 22.0 6.0 1.0 3. 12.0 11.5 3. 4. 2.0416660 0. 1. + 11529. 1. 3. 32.0 9.0 2.0 3. 12.0 9.0 3. 4. 16.0000000 0. 1. + 11531. 1. 1. 27.0 2.5 0.0 2. 12.0 11.5 4. 3. 4.8999996 0. 1. + 11542. 1. 5. 42.0 23.0 2.0 3. 14.0 20.0 3. 4. 0.5217391 0. 1. + 11555. 1. 4. 27.0 13.0 1.0 2. 12.0 14.0 3. 4. 0.0769231 0. 1. + 11557. 1. 4. 32.0 9.0 2.0 3. 17.0 4.0 3. 4. 1.3611107 0. 1. + 11585. 1. 5. 42.0 23.0 4.0 4. 14.0 20.0 5. 4. 0.5326087 0. 1. + 11588. 1. 4. 27.0 6.0 2.0 3. 12.0 6.5 2. 2. 2.0416660 0. 1. + 11590. 1. 5. 32.0 16.5 2.0 4. 16.0 40.0 5. 6. 1.6969690 0. 1. + 11591. 1. 5. 27.0 9.0 2.0 1. 16.0 20.0 2. 5. 0.3888888 0. 1. + 11597. 1. 4. 22.0 6.0 1.0 2. 12.0 11.5 2. 1. 2.0416660 0. 1. + 11600. 1. 5. 32.0 13.0 2.0 1. 12.0 14.0 3. 4. 0.0769231 0. 1. + 11620. 1. 3. 42.0 23.0 2.0 3. 12.0 20.0 3. 5. 0.1521739 0. 1. + 11629. 1. 4. 27.0 16.5 4.0 3. 17.0 40.0 4. 6. 2.5454540 0. 1. + 11634. 1. 3. 37.0 16.5 2.0 3. 12.0 14.0 3. 4. 0.7272727 0. 1. + 11650. 1. 5. 27.0 6.0 2.0 3. 14.0 14.0 4. 2. 3.2666645 0. 1. + 11653. 1. 2. 17.5 2.5 1.0 3. 12.0 9.0 3. 2. 1.3999996 0. 1. + 11669. 1. 4. 22.0 2.5 1.0 2. 14.0 9.0 3. 5. 1.3999996 0. 1. + 11675. 1. 5. 27.0 6.0 1.0 3. 14.0 20.0 3. 3. 2.0416660 0. 1. + 11699. 1. 5. 27.0 6.0 2.0 2. 12.0 9.0 4. 4. 0.1666666 0. 1. + 11705. 1. 3. 37.0 23.0 3.0 4. 12.0 20.0 5. 2. 0.8521735 0. 1. + 11710. 1. 3. 27.0 6.0 3.0 2. 16.0 11.5 4. 4. 0.5833333 0. 1. + 11727. 1. 3. 22.0 2.5 1.0 2. 12.0 9.0 3. 2. 1.3999996 0. 1. + 11734. 1. 5. 27.0 13.0 3.0 1. 12.0 14.0 3. 5. 1.5076914 0. 1. + 11736. 1. 4. 27.0 9.0 1.0 4. 14.0 14.0 3. 3. 1.3611107 0. 1. + 11752. 1. 1. 37.0 23.0 5.5 2. 12.0 20.0 3. 4. 0.5217391 0. 1. + 11754. 1. 5. 42.0 23.0 3.0 1. 16.0 20.0 4. 6. 0.8521735 0. 1. + 11755. 1. 4. 27.0 2.5 0.0 1. 16.0 40.0 5. 6. 7.8399963 0. 1. + 11764. 1. 4. 32.0 13.0 2.0 2. 12.0 40.0 5. 4. 0.9423077 0. 1. + 11765. 1. 3. 27.0 9.0 2.0 2. 14.0 20.0 5. 5. 1.3611107 0. 1. + 11766. 1. 4. 22.0 2.5 0.0 1. 14.0 6.5 3. 4. 4.8999996 0. 1. + 11769. 1. 4. 22.0 2.5 0.0 1. 12.0 4.0 3. 2. 1.3999996 0. 1. + 11773. 1. 4. 27.0 6.0 1.0 3. 17.0 14.0 4. 5. 0.1666666 0. 1. + 11781. 1. 4. 37.0 23.0 5.5 2. 12.0 14.0 3. 4. 0.5217391 0. 1. + 11799. 1. 5. 32.0 16.5 2.0 1. 12.0 11.5 2. 4. 0.2121212 0. 1. + 11818. 1. 2. 22.0 6.0 2.0 4. 17.0 14.0 3. 5. 2.0000000 0. 1. + 11831. 1. 2. 22.0 2.5 0.0 1. 17.0 9.0 4. 4. 26.8799896 0. 1. + 11838. 1. 4. 27.0 6.0 0.0 3. 14.0 11.5 2. 2. 7.4666672 0. 1. + 11846. 1. 5. 22.0 2.5 0.0 2. 14.0 14.0 3. 5. 1.3999996 0. 1. + 11864. 1. 5. 42.0 23.0 3.0 3. 12.0 14.0 3. 5. 2.7826080 0. 1. + 11866. 1. 5. 32.0 13.0 2.0 2. 14.0 20.0 5. 4. 0.9423077 0. 1. + 11869. 1. 5. 32.0 13.0 2.0 2. 14.0 9.0 5. 4. 1.5076914 0. 1. + 11896. 1. 3. 42.0 23.0 5.5 3. 20.0 40.0 6. 4. 2.9217386 0. 1. + 11897. 1. 5. 22.0 2.5 1.0 1. 12.0 6.5 3. 5. 1.3999996 0. 1. + 11900. 1. 2. 22.0 2.5 0.0 1. 16.0 11.5 3. 5. 17.9199982 0. 1. + 11902. 1. 3. 42.0 23.0 2.0 3. 16.0 40.0 4. 5. 0.1521739 0. 1. + 11913. 1. 3. 27.0 6.0 0.0 2. 12.0 20.0 3. 4. 4.6666660 0. 1. + 11920. 1. 3. 27.0 13.0 0.0 3. 12.0 20.0 3. 5. 0.9423077 0. 1. + 11925. 1. 4. 22.0 2.5 0.0 2. 12.0 6.5 2. 4. 4.7999992 0. 1. + 11954. 1. 3. 32.0 13.0 2.0 3. 14.0 11.5 3. 3. 1.5076914 0. 1. + 11959. 1. 5. 37.0 16.5 3.0 2. 12.0 20.0 3. 5. 0.7272727 0. 1. + 11968. 1. 3. 27.0 9.0 1.0 3. 14.0 40.0 3. 3. 2.1777763 0. 1. + 11974. 1. 5. 42.0 23.0 2.0 2. 12.0 40.0 5. 4. 0.8521735 0. 1. + 11987. 1. 5. 27.0 2.5 0.0 1. 17.0 14.0 4. 5. 4.8999996 0. 1. + 11994. 1. 3. 32.0 0.5 0.0 2. 16.0 14.0 4. 5. 24.5000000 0. 1. + 11999. 1. 4. 32.0 13.0 2.0 3. 12.0 11.5 3. 1. 0.0769231 0. 1. + 12013. 1. 3. 42.0 23.0 5.5 3. 12.0 14.0 3. 2. 0.1521739 0. 1. + 12017. 1. 1. 42.0 23.0 2.0 3. 14.0 11.5 3. 5. 0.8521735 0. 1. + 12022. 1. 3. 37.0 16.5 2.0 1. 17.0 20.0 4. 2. 0.7272727 0. 1. + 12028. 1. 4. 27.0 9.0 1.0 1. 14.0 20.0 3. 4. 1.3611107 0. 1. + 12038. 1. 4. 22.0 2.5 0.0 3. 12.0 11.5 3. 2. 1.3999996 0. 1. + 12044. 1. 4. 37.0 23.0 5.5 2. 14.0 20.0 3. 6. 1.2173910 0. 1. + 12050. 1. 5. 32.0 9.0 3.0 2. 14.0 11.5 2. 6. 0.3888888 0. 1. + 12072. 1. 4. 37.0 9.0 3.0 3. 16.0 40.0 4. 2. 2.1777763 0. 1. + 12101. 1. 5. 37.0 16.5 3.0 3. 16.0 11.5 3. 4. 1.6969690 0. 1. + 12102. 1. 4. 32.0 13.0 2.0 2. 12.0 20.0 5. 5. 0.2692307 0. 1. + 12105. 1. 3. 37.0 23.0 3.0 4. 12.0 20.0 3. 5. 0.5217391 0. 1. + 12111. 1. 4. 42.0 23.0 3.0 4. 16.0 20.0 4. 2. 1.2173910 0. 1. + 12118. 1. 3. 27.0 6.0 1.0 2. 12.0 11.5 3. 4. 0.5833333 0. 1. + 12119. 1. 5. 42.0 23.0 2.0 3. 16.0 20.0 3. 5. 0.5326087 0. 1. + 12131. 1. 5. 27.0 6.0 1.0 3. 20.0 20.0 5. 6. 1.3333330 0. 1. + 12135. 1. 3. 37.0 16.5 3.0 2. 12.0 20.0 3. 2. 2.7151508 0. 1. + 12136. 1. 3. 27.0 13.0 2.0 3. 12.0 9.0 3. 5. 0.9230769 0. 1. + 12147. 1. 5. 37.0 23.0 3.0 1. 12.0 20.0 3. 4. 0.0434783 0. 1. + 12168. 1. 3. 42.0 23.0 5.5 3. 12.0 20.0 3. 4. 0.0434783 0. 1. + 12174. 1. 2. 27.0 9.0 0.0 2. 17.0 11.5 2. 3. 1.3611107 0. 1. + 12177. 1. 2. 22.0 2.5 0.0 3. 12.0 6.5 2. 3. 0.4000000 0. 1. + 12181. 1. 4. 27.0 13.0 2.0 2. 12.0 11.5 3. 2. 0.0769231 0. 1. + 12188. 1. 4. 32.0 9.0 1.0 1. 16.0 40.0 4. 5. 4.9777775 0. 1. + 12212. 1. 3. 32.0 9.0 3.0 3. 14.0 40.0 3. 6. 2.1777763 0. 1. + 12216. 1. 4. 32.0 13.0 1.0 3. 14.0 20.0 5. 5. 0.2692307 0. 1. + 12218. 1. 5. 22.0 2.5 0.0 3. 16.0 6.5 4. 1. 1.3999996 0. 1. + 12222. 1. 3. 27.0 6.0 1.0 2. 17.0 11.5 4. 4. 4.6666660 0. 1. + 12225. 1. 4. 27.0 2.5 0.0 2. 16.0 14.0 4. 2. 7.8399963 0. 1. + 12230. 1. 3. 27.0 6.0 0.0 1. 16.0 40.0 4. 4. 1.3333330 0. 1. + 12240. 1. 3. 42.0 16.5 4.0 3. 16.0 14.0 2. 4. 0.2121212 0. 1. + 12245. 1. 1. 27.0 2.5 1.0 3. 16.0 20.0 4. 4. 1.3999996 0. 1. + 12247. 1. 5. 27.0 9.0 1.0 2. 14.0 20.0 4. 4. 3.1111107 0. 1. + 12252. 1. 4. 42.0 23.0 2.0 3. 12.0 14.0 3. 5. 1.8260860 0. 1. + 12278. 1. 4. 27.0 13.0 2.0 2. 12.0 20.0 3. 4. 0.9230769 0. 1. + 12307. 1. 5. 32.0 13.0 1.0 1. 14.0 14.0 4. 4. 0.9423077 0. 1. + 12308. 1. 4. 22.0 2.5 1.0 2. 14.0 6.5 3. 4. 7.8399963 0. 1. + 12309. 1. 2. 27.0 9.0 2.0 2. 14.0 20.0 5. 5. 4.6666660 0. 1. + 12321. 1. 5. 22.0 2.5 0.0 4. 14.0 9.0 3. 4. 4.8999996 0. 1. + 12329. 1. 3. 37.0 16.5 3.0 3. 14.0 14.0 3. 3. 0.2121212 0. 1. + 12374. 1. 3. 27.0 6.0 1.0 3. 14.0 11.5 3. 4. 7.0000000 0. 1. + 12380. 1. 4. 32.0 13.0 2.0 1. 12.0 20.0 2. 4. 3.4461536 0. 1. + 12399. 1. 3. 42.0 23.0 2.0 2. 16.0 20.0 4. 5. 0.5217391 0. 1. + 12406. 1. 4. 37.0 16.5 3.0 3. 12.0 40.0 3. 5. 0.2121212 0. 1. + 12415. 1. 4. 32.0 13.0 2.0 1. 12.0 11.5 2. 4. 1.5076914 0. 1. + 12419. 1. 3. 42.0 23.0 5.5 2. 12.0 20.0 3. 4. 2.9217386 0. 1. + 12432. 1. 3. 27.0 9.0 1.0 1. 14.0 6.5 3. 4. 1.3611107 0. 1. + 12438. 1. 5. 32.0 16.5 2.0 3. 12.0 9.0 3. 2. 0.7424242 0. 1. + 12478. 1. 5. 32.0 16.5 1.0 2. 14.0 20.0 5. 5. 0.2121212 0. 1. + 12484. 1. 5. 27.0 6.0 2.0 2. 20.0 14.0 6. 6. 4.6666660 0. 1. + 12496. 1. 4. 27.0 6.0 2.0 3. 12.0 9.0 3. 2. 0.1666666 0. 1. + 12497. 1. 3. 22.0 6.0 1.0 3. 14.0 9.0 5. 4. 0.5833333 0. 1. + 12499. 1. 5. 27.0 16.5 3.0 3. 14.0 40.0 5. 5. 0.2121212 0. 1. + 12514. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 5. 6. 4.8999996 0. 1. + 12524. 1. 3. 42.0 23.0 5.5 3. 14.0 40.0 3. 5. 0.5217391 0. 1. + 12525. 1. 4. 37.0 23.0 3.0 2. 12.0 40.0 3. 3. 0.5217391 0. 1. + 12529. 1. 1. 42.0 16.5 3.0 4. 17.0 20.0 4. 4. 1.1878777 0. 1. + 12536. 1. 3. 27.0 2.5 0.0 2. 16.0 9.0 4. 2. 4.7999992 0. 1. + 12549. 1. 2. 27.0 6.0 2.0 2. 12.0 11.5 5. 1. 0.1666666 0. 1. + 12577. 1. 5. 27.0 9.0 3.0 2. 16.0 14.0 4. 4. 0.1111111 0. 1. + 12582. 1. 5. 27.0 6.0 2.0 2. 12.0 20.0 5. 3. 0.5833333 0. 1. + 12583. 1. 3. 32.0 16.5 3.0 1. 14.0 14.0 2. 2. 0.4848484 0. 1. + 12591. 1. 4. 27.0 6.0 2.0 2. 14.0 6.5 3. 4. 0.5833333 0. 1. + 12595. 1. 4. 27.0 0.5 0.0 3. 17.0 20.0 4. 6. 7.0000000 0. 1. + 12596. 1. 4. 22.0 6.0 1.0 2. 12.0 11.5 3. 3. 3.2666645 0. 1. + 12599. 1. 5. 42.0 23.0 2.0 1. 14.0 40.0 6. 6. 2.9217386 0. 1. + 12600. 1. 4. 27.0 6.0 2.0 4. 14.0 20.0 5. 4. 0.1666666 0. 1. + 12603. 1. 5. 27.0 6.0 1.0 2. 16.0 11.5 4. 5. 2.0416660 0. 1. + 12607. 1. 3. 42.0 13.0 0.0 3. 17.0 40.0 4. 5. 0.2692307 0. 1. + 12615. 1. 3. 42.0 23.0 3.0 3. 12.0 14.0 2. 2. 1.2173910 0. 1. + 12639. 1. 5. 27.0 6.0 1.0 1. 16.0 14.0 4. 4. 2.0416660 0. 1. + 12643. 1. 5. 22.0 6.0 0.0 3. 14.0 6.5 3. 4. 2.0416660 0. 1. + 12649. 1. 3. 42.0 23.0 3.0 2. 14.0 20.0 3. 4. 0.8521735 0. 1. + 12669. 1. 4. 22.0 6.0 0.0 2. 16.0 14.0 4. 5. 0.5833333 0. 1. + 12671. 1. 5. 32.0 13.0 2.0 1. 14.0 20.0 3. 5. 3.2307692 0. 1. + 12673. 1. 3. 22.0 6.0 2.0 3. 14.0 11.5 2. 2. 11.1999989 0. 1. + 12679. 1. 5. 27.0 2.5 0.0 2. 14.0 20.0 3. 2. 1.3999996 0. 1. + 12701. 1. 2. 42.0 23.0 5.5 2. 14.0 20.0 3. 2. 0.0434783 0. 1. + 12705. 1. 4. 37.0 23.0 3.0 1. 14.0 20.0 3. 4. 0.8521735 0. 1. + 12716. 1. 5. 22.0 2.5 0.0 1. 14.0 20.0 3. 4. 7.8399963 0. 1. + 12720. 1. 5. 27.0 2.5 0.0 1. 17.0 20.0 4. 5. 0.4000000 0. 1. + 12723. 1. 4. 27.0 9.0 1.0 2. 16.0 9.0 3. 5. 0.3888888 0. 1. + 12754. 1. 4. 27.0 9.0 3.0 3. 14.0 20.0 3. 4. 1.3611107 0. 1. + 12761. 1. 4. 42.0 23.0 4.0 2. 16.0 14.0 4. 5. 0.8521735 0. 1. + 12765. 1. 4. 37.0 16.5 4.0 3. 14.0 20.0 3. 2. 0.7424242 0. 1. + 12783. 1. 4. 32.0 9.0 0.0 2. 12.0 14.0 3. 3. 1.3333330 0. 1. + 12785. 1. 4. 32.0 13.0 0.0 2. 14.0 20.0 3. 6. 0.9423077 0. 1. + 12786. 1. 2. 22.0 6.0 2.0 2. 12.0 11.5 3. 4. 0.5833333 0. 1. + 12792. 1. 3. 42.0 23.0 3.0 2. 14.0 40.0 5. 5. 0.5326087 0. 1. + 12808. 1. 4. 32.0 13.0 0.0 3. 14.0 20.0 3. 5. 0.9230769 0. 1. + 12821. 1. 4. 37.0 16.5 4.0 3. 14.0 11.5 3. 4. 0.7424242 0. 1. + 12836. 1. 3. 37.0 23.0 3.0 2. 12.0 20.0 3. 5. 0.8521735 0. 1. + 12843. 1. 4. 32.0 16.5 2.0 1. 14.0 20.0 3. 4. 2.5454540 0. 1. + 12856. 1. 4. 27.0 6.0 1.0 2. 16.0 20.0 3. 5. 2.0000000 0. 1. + 12858. 1. 4. 22.0 2.5 0.0 2. 16.0 6.5 4. 5. 3.1999998 0. 1. + 12861. 1. 2. 22.0 2.5 0.0 3. 12.0 14.0 3. 2. 1.3999996 0. 1. + 12864. 1. 4. 27.0 6.0 1.0 2. 14.0 20.0 3. 3. 1.3333330 0. 1. + 12872. 1. 3. 32.0 16.5 2.0 2. 12.0 11.5 3. 2. 2.7151508 0. 1. + 12875. 1. 5. 17.5 2.5 2.0 2. 12.0 11.5 2. 5. 4.7999992 0. 1. + 12880. 1. 3. 22.0 2.5 0.0 3. 20.0 9.0 3. 1. 7.8399963 0. 1. + 12907. 1. 2. 37.0 23.0 3.0 3. 12.0 20.0 3. 2. 0.8521735 0. 1. + 12938. 1. 4. 32.0 16.5 5.5 3. 14.0 20.0 5. 5. 0.7424242 0. 1. + 12953. 1. 3. 42.0 23.0 3.0 4. 14.0 14.0 3. 5. 0.1521739 0. 1. + 12986. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 2. 3. 4.8999996 0. 1. + 12990. 1. 4. 27.0 9.0 0.0 2. 14.0 20.0 3. 4. 3.1111107 0. 1. + 12992. 1. 3. 22.0 2.5 2.0 2. 12.0 14.0 3. 4. 0.4000000 0. 1. + 12994. 1. 3. 42.0 23.0 2.0 4. 14.0 11.5 4. 6. 1.2173910 0. 1. + 13000. 1. 5. 42.0 23.0 5.5 2. 14.0 14.0 3. 2. 0.5326087 0. 1. + 13002. 1. 4. 27.0 6.0 0.0 3. 14.0 20.0 6. 6. 2.0416660 0. 1. + 13015. 1. 4. 42.0 23.0 4.0 3. 14.0 20.0 3. 4. 0.5217391 0. 1. + 13028. 1. 3. 32.0 16.5 2.0 2. 12.0 20.0 3. 5. 0.3393939 0. 1. + 13041. 1. 3. 27.0 2.5 0.0 1. 16.0 20.0 3. 4. 4.8999996 0. 1. + 13050. 1. 3. 32.0 13.0 2.0 4. 14.0 20.0 4. 2. 5.1692305 0. 1. + 13051. 1. 2. 37.0 16.5 2.0 2. 14.0 40.0 3. 5. 1.1878777 0. 1. + 13053. 1. 4. 22.0 6.0 2.0 2. 12.0 20.0 2. 4. 2.0000000 0. 1. + 13059. 1. 4. 32.0 9.0 3.0 1. 16.0 20.0 2. 4. 0.1111111 0. 1. + 13062. 1. 3. 42.0 23.0 4.0 2. 12.0 40.0 3. 5. 0.3478261 0. 1. + 13089. 1. 3. 32.0 13.0 2.0 3. 12.0 9.0 3. 3. 2.1538458 0. 1. + 13102. 1. 4. 22.0 2.5 0.0 2. 14.0 6.5 2. 1. 0.4000000 0. 1. + 13110. 1. 3. 37.0 16.5 2.0 2. 12.0 20.0 2. 2. 0.7272727 0. 1. + 13113. 1. 3. 27.0 6.0 0.0 2. 14.0 40.0 3. 5. 2.0000000 0. 1. + 13139. 1. 4. 42.0 23.0 3.0 3. 12.0 11.5 5. 4. 2.9217386 0. 1. + 13141. 1. 4. 42.0 23.0 3.0 2. 14.0 40.0 5. 4. 1.2173910 0. 1. + 13147. 1. 2. 42.0 23.0 5.5 4. 14.0 14.0 2. 5. 0.1521739 0. 1. + 13153. 1. 5. 27.0 6.0 0.0 2. 12.0 40.0 5. 4. 0.5833333 0. 1. + 13158. 1. 4. 32.0 16.5 1.0 2. 14.0 40.0 3. 4. 0.7424242 0. 1. + 13171. 1. 4. 37.0 16.5 3.0 3. 12.0 20.0 4. 2. 1.6969690 0. 1. + 13175. 1. 5. 42.0 23.0 5.5 3. 14.0 40.0 3. 6. 0.1521739 0. 1. + 13190. 1. 3. 37.0 16.5 3.0 2. 14.0 20.0 5. 4. 0.7272727 0. 1. + 13199. 1. 2. 37.0 13.0 1.0 1. 16.0 20.0 4. 4. 0.9423077 0. 1. + 13225. 1. 4. 27.0 6.0 0.0 3. 16.0 40.0 5. 6. 0.5833333 0. 1. + 13242. 1. 4. 42.0 23.0 4.0 3. 16.0 20.0 4. 2. 0.8521735 0. 1. + 13253. 1. 5. 27.0 2.5 0.0 2. 14.0 9.0 3. 4. 3.1999998 0. 1. + 13282. 1. 2. 42.0 23.0 3.0 1. 12.0 14.0 3. 5. 2.9217386 0. 1. + 13294. 1. 5. 37.0 13.0 2.0 1. 14.0 20.0 3. 6. 0.2692307 0. 1. + 13301. 1. 4. 32.0 16.5 2.0 1. 12.0 40.0 5. 2. 1.1878777 0. 1. + 13310. 1. 4. 37.0 16.5 3.0 1. 14.0 14.0 3. 2. 0.4848484 0. 1. + 13316. 1. 3. 27.0 2.5 0.0 1. 14.0 20.0 5. 4. 1.3999996 0. 1. + 13334. 1. 4. 22.0 2.5 0.0 1. 14.0 6.5 3. 3. 4.8999996 0. 1. + 13343. 1. 4. 37.0 16.5 2.0 2. 14.0 20.0 3. 5. 1.1878777 0. 1. + 13349. 1. 3. 27.0 6.0 2.0 2. 12.0 20.0 3. 4. 0.1666666 0. 1. + 13350. 1. 4. 22.0 6.0 1.0 2. 12.0 20.0 3. 4. 0.1666666 0. 1. + 13352. 1. 5. 32.0 13.0 2.0 2. 14.0 20.0 4. 5. 0.2692307 0. 1. + 13358. 1. 2. 37.0 23.0 3.0 3. 12.0 14.0 5. 2. 0.5326087 0. 1. + 13369. 1. 2. 37.0 16.5 2.0 3. 14.0 20.0 3. 5. 2.5454540 0. 1. + 13370. 1. 4. 32.0 16.5 2.0 2. 14.0 20.0 5. 4. 0.7272727 0. 1. + 13378. 1. 5. 37.0 16.5 5.5 4. 20.0 40.0 4. 6. 0.7424242 0. 1. + 13382. 1. 3. 32.0 16.5 3.0 2. 12.0 11.5 3. 2. 1.1878777 0. 1. + 13389. 1. 3. 27.0 9.0 4.0 3. 14.0 20.0 3. 5. 2.1777763 0. 1. + 13393. 1. 3. 37.0 13.0 0.0 1. 14.0 20.0 5. 4. 3.2307692 0. 1. + 13394. 1. 2. 27.0 2.5 2.0 2. 14.0 11.5 4. 5. 4.8999996 0. 1. + 13407. 1. 4. 27.0 9.0 2.0 1. 14.0 11.5 3. 4. 0.8888888 0. 1. + 13416. 1. 4. 42.0 23.0 2.0 3. 14.0 20.0 3. 4. 0.3478261 0. 1. + 13436. 1. 5. 42.0 23.0 2.0 1. 14.0 40.0 5. 5. 0.8521735 0. 1. + 13438. 1. 4. 42.0 23.0 4.0 2. 12.0 20.0 3. 3. 0.5217391 0. 1. + 13447. 1. 4. 37.0 16.5 4.0 3. 14.0 14.0 3. 5. 0.2121212 0. 1. + 13450. 1. 4. 32.0 16.5 3.0 2. 12.0 11.5 2. 2. 1.1878777 0. 1. + 13466. 1. 2. 37.0 23.0 2.0 2. 12.0 20.0 4. 4. 0.0434783 0. 1. + 13473. 1. 4. 42.0 23.0 1.0 3. 20.0 40.0 4. 4. 0.5217391 0. 1. + 13477. 1. 4. 22.0 2.5 1.0 2. 14.0 14.0 4. 4. 4.8999996 0. 1. + 13500. 1. 1. 32.0 13.0 2.0 2. 14.0 40.0 4. 4. 2.1538458 0. 1. + 13509. 1. 3. 42.0 23.0 3.0 2. 14.0 20.0 3. 5. 1.8260860 0. 1. + 13529. 1. 4. 22.0 2.5 0.0 2. 16.0 11.5 3. 2. 1.3999996 0. 1. + 13542. 1. 5. 37.0 23.0 3.0 3. 12.0 20.0 3. 5. 0.1521739 0. 1. + 13551. 1. 3. 22.0 2.5 0.0 2. 14.0 20.0 2. 2. 4.8999996 0. 1. + 13552. 1. 1. 42.0 23.0 3.0 3. 12.0 11.5 5. 5. 1.9478254 0. 1. + 13564. 1. 3. 22.0 2.5 0.0 2. 14.0 11.5 3. 4. 4.8999996 0. 1. + 13593. 1. 3. 37.0 23.0 2.0 3. 12.0 14.0 3. 5. 1.9478254 0. 1. + 13605. 1. 4. 22.0 2.5 0.0 2. 12.0 11.5 5. 4. 0.4000000 0. 1. + 13610. 1. 5. 32.0 9.0 2.0 3. 14.0 20.0 5. 4. 0.1111111 0. 1. + 13631. 1. 1. 37.0 16.5 4.0 2. 14.0 20.0 3. 6. 1.1878777 0. 1. + 13632. 1. 3. 42.0 23.0 1.0 3. 12.0 20.0 3. 4. 0.8521735 0. 1. + 13642. 1. 5. 27.0 9.0 2.0 1. 12.0 11.5 3. 2. 1.3611107 0. 1. + 13643. 1. 4. 22.0 2.5 1.0 2. 14.0 11.5 2. 4. 17.9199982 0. 1. + 13644. 1. 5. 42.0 23.0 3.0 2. 14.0 20.0 3. 5. 0.8521735 0. 1. + 13665. 1. 4. 27.0 6.0 1.0 3. 14.0 20.0 5. 5. 2.0000000 0. 1. + 13666. 1. 5. 22.0 2.5 0.0 1. 14.0 11.5 3. 1. 1.3999996 0. 1. + 13681. 1. 3. 37.0 16.5 2.0 3. 16.0 20.0 3. 4. 0.7272727 0. 1. + 13696. 1. 3. 32.0 16.5 2.0 3. 12.0 20.0 5. 5. 2.5454540 0. 1. + 13699. 1. 5. 37.0 16.5 3.0 3. 14.0 14.0 2. 5. 0.7272727 0. 1. + 13710. 1. 3. 27.0 6.0 2.0 1. 16.0 9.0 4. 3. 0.5833333 0. 1. + 13715. 1. 4. 27.0 9.0 1.0 2. 20.0 40.0 4. 4. 0.1111111 0. 1. + 13719. 1. 4. 27.0 6.0 0.0 2. 14.0 9.0 3. 4. 2.0416660 0. 1. + 13733. 1. 5. 32.0 13.0 2.0 2. 14.0 20.0 3. 4. 0.9423077 0. 1. + 13745. 1. 4. 42.0 23.0 2.0 2. 12.0 20.0 4. 4. 1.2173910 0. 1. + 13756. 1. 2. 37.0 16.5 2.0 2. 12.0 20.0 5. 4. 0.4848484 0. 1. + 13765. 1. 4. 27.0 2.5 0.0 2. 17.0 20.0 5. 5. 0.4000000 0. 1. + 13775. 1. 4. 37.0 16.5 2.0 2. 17.0 40.0 4. 5. 0.2121212 0. 1. + 13777. 1. 4. 32.0 13.0 2.0 2. 12.0 20.0 3. 3. 0.9230769 0. 1. + 13788. 1. 4. 32.0 9.0 2.0 1. 14.0 20.0 3. 4. 1.3611107 0. 1. + 13790. 1. 4. 32.0 9.0 2.0 2. 14.0 20.0 3. 5. 0.1111111 0. 1. + 13794. 1. 4. 32.0 13.0 2.0 3. 12.0 14.0 5. 5. 0.9423077 0. 1. + 13823. 1. 4. 32.0 13.0 3.0 2. 14.0 14.0 3. 2. 2.1538458 0. 1. + 13829. 1. 4. 22.0 2.5 1.0 1. 14.0 9.0 2. 2. 1.3999996 0. 1. + 13833. 1. 5. 27.0 16.5 2.0 3. 12.0 11.5 5. 4. 0.2121212 0. 1. + 13837. 1. 4. 32.0 2.5 0.0 3. 14.0 40.0 2. 6. 4.8999996 0. 1. + 13843. 1. 3. 32.0 16.5 1.0 2. 14.0 14.0 2. 4. 0.2121212 0. 1. + 13844. 1. 3. 37.0 16.5 3.0 2. 16.0 14.0 4. 3. 1.1878777 0. 1. + 13859. 1. 5. 42.0 23.0 4.0 2. 12.0 40.0 5. 5. 0.8521735 0. 1. + 13880. 1. 5. 27.0 6.0 2.0 3. 14.0 14.0 3. 4. 3.2666645 0. 1. + 13890. 1. 4. 22.0 2.5 1.0 3. 12.0 20.0 3. 2. 1.3999996 0. 1. + 13895. 1. 4. 42.0 23.0 3.0 1. 20.0 20.0 6. 6. 1.2173910 0. 1. + 13898. 1. 4. 32.0 9.0 2.0 1. 17.0 20.0 4. 5. 2.1777763 0. 1. + 13899. 1. 5. 32.0 2.5 0.0 2. 20.0 40.0 6. 6. 1.3999996 0. 1. + 13902. 1. 3. 27.0 6.0 1.0 2. 14.0 20.0 3. 6. 0.5833333 0. 1. + 13907. 1. 1. 22.0 2.5 0.0 1. 14.0 6.5 4. 4. 4.8999996 0. 1. + 13913. 1. 3. 32.0 16.5 2.0 2. 14.0 11.5 3. 2. 0.7424242 0. 1. + 13917. 1. 4. 42.0 23.0 2.0 2. 12.0 20.0 3. 3. 0.1521739 0. 1. + 13920. 1. 4. 22.0 6.0 1.0 3. 14.0 14.0 3. 5. 0.5833333 0. 1. + 13941. 1. 5. 42.0 23.0 3.0 2. 14.0 20.0 3. 5. 0.5326087 0. 1. + 13947. 1. 3. 27.0 13.0 2.0 2. 12.0 11.5 4. 3. 3.4461536 0. 1. + 13953. 1. 4. 32.0 13.0 2.0 2. 14.0 14.0 5. 4. 0.2692307 0. 1. + 13955. 1. 3. 27.0 2.5 0.0 3. 14.0 20.0 3. 4. 3.1999998 0. 1. + 13956. 1. 2. 22.0 2.5 0.0 3. 12.0 9.0 3. 2. 0.4000000 0. 1. + 13964. 1. 5. 42.0 23.0 2.0 2. 20.0 20.0 4. 4. 1.8260860 0. 1. + 13979. 1. 3. 27.0 6.0 1.0 2. 14.0 20.0 2. 2. 0.5833333 0. 1. + 14001. 1. 5. 42.0 23.0 2.0 2. 20.0 14.0 3. 6. 0.5326087 0. 1. + 14003. 1. 3. 37.0 23.0 4.0 1. 12.0 20.0 3. 2. 0.3478261 0. 1. + 14020. 1. 5. 42.0 23.0 4.0 4. 20.0 40.0 6. 6. 6.2608690 0. 1. + 14036. 1. 5. 27.0 6.0 0.0 1. 17.0 20.0 4. 5. 1.3333330 0. 1. + 14046. 1. 3. 32.0 13.0 2.0 1. 17.0 40.0 4. 6. 0.2692307 0. 1. + 14047. 1. 2. 27.0 2.5 0.0 1. 14.0 20.0 5. 5. 1.3999996 0. 1. + 14048. 1. 4. 27.0 9.0 3.0 2. 12.0 20.0 3. 6. 1.3333330 0. 1. + 14067. 1. 5. 27.0 6.0 1.0 1. 14.0 20.0 3. 5. 2.0000000 0. 1. + 14078. 1. 4. 22.0 0.5 0.0 2. 14.0 11.5 4. 5. 24.5000000 0. 1. + 14084. 1. 4. 17.5 2.5 1.0 2. 12.0 11.5 3. 2. 1.3999996 0. 1. + 14089. 1. 3. 27.0 2.5 1.0 2. 14.0 20.0 3. 4. 1.3999996 0. 1. + 14099. 1. 5. 32.0 16.5 3.0 2. 14.0 14.0 2. 4. 0.0606061 0. 1. + 14113. 1. 4. 42.0 23.0 5.5 1. 14.0 40.0 3. 5. 0.5326087 0. 1. + 14121. 1. 5. 22.0 2.5 0.0 1. 14.0 20.0 3. 4. 4.8999996 0. 1. + 14175. 1. 5. 42.0 23.0 2.0 2. 20.0 40.0 1. 5. 0.1521739 0. 1. + 14180. 1. 5. 42.0 23.0 3.0 3. 14.0 20.0 3. 5. 0.0434783 0. 1. + 14181. 1. 2. 42.0 23.0 3.0 3. 16.0 20.0 4. 4. 0.1521739 0. 1. + 14191. 1. 4. 32.0 16.5 4.0 2. 12.0 11.5 3. 5. 0.4848484 0. 1. + 14194. 1. 4. 37.0 23.0 4.0 2. 12.0 20.0 3. 4. 0.8521735 0. 1. + 14199. 1. 4. 42.0 23.0 2.0 1. 14.0 20.0 5. 3. 0.5326087 0. 1. + 14206. 1. 5. 22.0 2.5 0.0 4. 14.0 11.5 3. 4. 1.3999996 0. 1. + 14231. 1. 4. 22.0 2.5 0.0 1. 16.0 11.5 3. 5. 1.3999996 0. 1. + 14235. 1. 4. 42.0 23.0 3.0 3. 14.0 40.0 5. 5. 1.9478254 0. 1. + 14237. 1. 4. 42.0 23.0 3.0 2. 14.0 20.0 3. 5. 1.9478254 0. 1. + 14247. 1. 2. 22.0 2.5 0.0 2. 14.0 11.5 3. 5. 0.4000000 0. 1. + 14252. 1. 3. 42.0 23.0 3.0 1. 20.0 40.0 4. 4. 0.0434783 0. 1. + 14265. 1. 3. 37.0 16.5 3.0 4. 12.0 20.0 3. 2. 2.5454540 0. 1. + 14271. 1. 4. 27.0 16.5 2.0 1. 12.0 11.5 3. 2. 0.2121212 0. 1. + 14275. 1. 3. 27.0 6.0 1.0 1. 16.0 14.0 4. 1. 3.2666645 0. 1. + 14277. 1. 5. 32.0 13.0 2.0 2. 14.0 14.0 4. 4. 0.9230769 0. 1. + 14299. 1. 4. 32.0 13.0 3.0 2. 12.0 6.5 2. 4. 0.6153846 0. 1. + 14305. 1. 5. 42.0 13.0 0.0 1. 16.0 40.0 3. 6. 1.5076914 0. 1. + 14307. 1. 4. 32.0 9.0 2.0 3. 14.0 20.0 3. 4. 2.1777763 0. 1. + 14319. 1. 3. 42.0 16.5 1.0 3. 17.0 20.0 3. 3. 0.7424242 0. 1. + 14337. 1. 4. 42.0 23.0 3.0 1. 14.0 20.0 3. 5. 0.8521735 0. 1. + 14338. 1. 1. 32.0 13.0 3.0 3. 14.0 20.0 3. 4. 1.5076914 0. 1. + 14339. 1. 4. 27.0 6.0 2.0 2. 14.0 20.0 3. 5. 1.3333330 0. 1. + 14348. 1. 4. 27.0 6.0 2.0 2. 14.0 11.5 5. 4. 3.2666645 0. 1. + 14349. 1. 5. 27.0 2.5 0.0 3. 16.0 20.0 3. 5. 1.3999996 0. 1. + 14356. 1. 4. 22.0 2.5 0.0 1. 16.0 40.0 4. 2. 1.3999996 0. 1. + 14361. 1. 4. 27.0 6.0 3.0 3. 14.0 6.5 4. 2. 2.0416660 0. 1. + 14367. 1. 4. 42.0 23.0 2.0 1. 16.0 40.0 4. 5. 0.1521739 0. 1. + 14378. 1. 3. 27.0 6.0 1.0 4. 14.0 20.0 5. 4. 0.5833333 0. 1. + 14382. 1. 3. 32.0 13.0 0.0 2. 16.0 40.0 3. 6. 0.9230769 0. 1. + 14388. 1. 1. 27.0 6.0 2.0 3. 14.0 14.0 3. 2. 3.2666645 0. 1. + 14392. 1. 3. 32.0 13.0 2.0 2. 14.0 20.0 3. 2. 2.1538458 0. 1. + 14395. 1. 3. 37.0 16.5 4.0 2. 14.0 40.0 4. 4. 0.7424242 0. 1. + 14398. 1. 4. 37.0 16.5 3.0 4. 14.0 6.5 4. 4. 0.2121212 0. 1. + 14400. 1. 4. 32.0 16.5 4.0 3. 14.0 11.5 3. 5. 0.2121212 0. 1. + 14402. 1. 5. 27.0 2.5 0.0 1. 14.0 20.0 3. 5. 4.7999992 0. 1. + 14422. 1. 3. 22.0 2.5 0.0 2. 14.0 6.5 3. 1. 0.4000000 0. 1. + 14432. 1. 5. 32.0 23.0 2.0 3. 14.0 40.0 5. 6. 0.5217391 0. 1. + 14437. 1. 3. 27.0 9.0 1.0 3. 14.0 11.5 3. 2. 1.3333330 0. 1. + 14445. 1. 5. 37.0 23.0 3.0 2. 14.0 20.0 5. 4. 0.3478261 0. 1. + 14458. 1. 3. 27.0 6.0 1.0 3. 20.0 20.0 4. 4. 3.2666645 0. 1. + 14472. 1. 1. 27.0 9.0 1.0 3. 14.0 9.0 2. 4. 0.3888888 0. 1. + 14473. 1. 4. 32.0 13.0 4.0 2. 16.0 14.0 4. 2. 0.2692307 0. 1. + 14478. 1. 3. 32.0 16.5 3.0 3. 14.0 14.0 5. 4. 4.0727262 0. 1. + 14501. 1. 4. 42.0 23.0 3.0 3. 14.0 14.0 4. 5. 0.1521739 0. 1. + 14502. 1. 4. 32.0 16.5 4.0 2. 14.0 20.0 2. 5. 1.6969690 0. 1. + 14505. 1. 3. 27.0 9.0 4.0 4. 14.0 14.0 4. 4. 0.3888888 0. 1. + 14510. 1. 4. 27.0 6.0 1.0 2. 12.0 11.5 2. 4. 0.1666666 0. 1. + 14514. 1. 2. 22.0 6.0 1.0 3. 14.0 11.5 3. 5. 2.0000000 0. 1. + 14534. 1. 4. 22.0 2.5 1.0 2. 14.0 9.0 3. 5. 1.3999996 0. 1. + 14535. 1. 3. 22.0 2.5 1.0 3. 14.0 11.5 3. 4. 3.1999998 0. 1. + 14543. 1. 5. 22.0 2.5 0.0 1. 14.0 9.0 3. 2. 1.3999996 0. 1. + 14547. 1. 5. 37.0 23.0 3.0 1. 12.0 40.0 5. 2. 1.8260860 0. 1. + 14553. 1. 3. 27.0 9.0 1.0 1. 14.0 20.0 3. 6. 4.6666660 0. 1. + 14554. 1. 4. 27.0 2.5 0.0 1. 14.0 20.0 5. 5. 7.8399963 0. 1. + 14557. 1. 5. 27.0 2.5 0.0 1. 16.0 20.0 4. 2. 1.3999996 0. 1. + 14559. 1. 3. 22.0 6.0 2.0 3. 12.0 11.5 3. 2. 0.5833333 0. 1. + 14561. 1. 4. 37.0 23.0 2.0 2. 12.0 20.0 3. 2. 0.1521739 0. 1. + 14564. 1. 3. 22.0 2.5 0.0 2. 14.0 9.0 3. 4. 4.7999992 0. 1. + 14568. 1. 5. 27.0 2.5 0.0 2. 17.0 14.0 4. 5. 1.3999996 0. 1. + 14590. 1. 4. 22.0 2.5 0.0 1. 14.0 9.0 5. 2. 4.8999996 0. 1. + 14606. 1. 4. 27.0 6.0 1.0 2. 14.0 20.0 3. 3. 7.0000000 0. 1. + 14610. 1. 4. 27.0 6.0 2.0 2. 14.0 20.0 4. 4. 0.5833333 0. 1. + 14618. 1. 4. 32.0 13.0 0.0 2. 12.0 20.0 3. 3. 3.2307692 0. 1. + 14622. 1. 4. 27.0 9.0 2.0 2. 12.0 20.0 2. 4. 1.3611107 0. 1. + 14625. 1. 3. 22.0 2.5 0.0 1. 14.0 11.5 3. 2. 7.8399963 0. 1. + 14638. 1. 5. 27.0 2.5 0.0 1. 14.0 20.0 2. 4. 7.8399963 0. 1. + 14650. 1. 3. 37.0 23.0 4.0 2. 14.0 20.0 3. 4. 1.9478254 0. 1. + 14657. 1. 5. 27.0 9.0 3.0 2. 16.0 9.0 4. 4. 1.3333330 0. 1. + 14658. 1. 4. 22.0 2.5 0.0 2. 12.0 6.5 2. 2. 1.3999996 0. 1. + 14662. 1. 2. 32.0 16.5 3.0 1. 14.0 14.0 4. 4. 1.1878777 0. 1. + 14722. 1. 3. 27.0 9.0 2.0 2. 12.0 20.0 3. 2. 1.3611107 0. 1. + 14739. 1. 4. 32.0 16.5 3.0 1. 16.0 40.0 4. 5. 0.7272727 0. 1. + 14755. 1. 3. 27.0 9.0 1.0 2. 12.0 14.0 5. 4. 0.1111111 0. 1. + 14756. 1. 5. 22.0 2.5 0.0 1. 14.0 4.0 2. 2. 7.8399963 0. 1. + 14783. 1. 4. 42.0 23.0 2.0 3. 14.0 20.0 5. 5. 0.5326087 0. 1. + 14790. 1. 5. 27.0 6.0 1.0 4. 16.0 11.5 4. 1. 0.1666666 0. 1. + 14793. 1. 4. 22.0 2.5 0.0 1. 12.0 11.5 2. 2. 4.8999996 0. 1. + 14804. 1. 3. 22.0 0.5 0.0 1. 14.0 11.5 5. 5. 7.0000000 0. 1. + 14805. 1. 5. 42.0 23.0 5.5 3. 14.0 40.0 5. 4. 1.9478254 0. 1. + 14837. 1. 4. 37.0 16.5 2.0 2. 12.0 20.0 3. 4. 0.2121212 0. 1. + 14888. 1. 4. 22.0 2.5 0.0 2. 12.0 14.0 3. 3. 3.1999998 0. 1. + 14895. 1. 3. 22.0 6.0 1.0 2. 12.0 20.0 3. 2. 2.0416660 0. 1. + 14906. 1. 4. 42.0 23.0 4.0 3. 17.0 40.0 6. 3. 2.7826080 0. 1. + 14912. 1. 4. 22.0 6.0 0.0 4. 14.0 20.0 5. 4. 2.0416660 0. 1. + 14915. 1. 2. 27.0 9.0 3.0 3. 14.0 14.0 4. 4. 0.1111111 0. 1. + 14917. 1. 3. 27.0 6.0 1.0 1. 14.0 14.0 5. 4. 7.0000000 0. 1. + 14929. 1. 5. 42.0 23.0 5.5 3. 16.0 40.0 4. 6. 0.0434783 0. 1. + 14951. 1. 4. 37.0 13.0 3.0 1. 12.0 20.0 4. 4. 0.6153846 0. 1. + 14954. 1. 4. 37.0 16.5 2.0 3. 12.0 14.0 5. 5. 0.7272727 0. 1. + 14992. 1. 4. 37.0 13.0 3.0 3. 16.0 11.5 3. 4. 0.2692307 0. 1. + 15040. 1. 5. 22.0 6.0 2.0 2. 12.0 11.5 2. 4. 4.6666660 0. 1. + 15042. 1. 4. 27.0 2.5 0.0 2. 17.0 20.0 4. 6. 16.7999878 0. 1. + 15043. 1. 2. 22.0 6.0 2.0 3. 14.0 14.0 3. 5. 3.2666645 0. 1. + 15050. 1. 3. 22.0 6.0 1.0 2. 12.0 11.5 4. 4. 1.3333330 0. 1. + 15057. 1. 5. 32.0 9.0 2.0 2. 14.0 11.5 4. 4. 0.1111111 0. 1. + 15059. 1. 3. 27.0 9.0 3.0 2. 12.0 20.0 3. 2. 0.3888888 0. 1. + 15061. 1. 3. 32.0 13.0 2.0 3. 14.0 14.0 3. 5. 0.2692307 0. 1. + 15062. 1. 2. 27.0 9.0 1.0 2. 16.0 20.0 4. 5. 4.9777775 0. 1. + 15068. 1. 4. 27.0 6.0 1.0 1. 17.0 20.0 3. 5. 0.5833333 0. 1. + 15087. 1. 4. 32.0 2.5 0.0 2. 20.0 20.0 6. 6. 16.7999878 0. 1. + 15088. 1. 5. 32.0 13.0 2.0 1. 12.0 20.0 3. 5. 0.9423077 0. 1. + 15091. 1. 4. 32.0 16.5 1.0 1. 14.0 20.0 5. 5. 1.6969690 0. 1. + 15095. 1. 5. 27.0 2.5 0.0 3. 12.0 9.0 4. 5. 0.4000000 0. 1. + 15102. 1. 3. 42.0 23.0 4.0 3. 16.0 40.0 4. 2. 0.3478261 0. 1. + 15106. 1. 4. 22.0 6.0 1.0 3. 14.0 11.5 3. 4. 2.0416660 0. 1. + 15108. 1. 4. 27.0 6.0 0.0 3. 14.0 20.0 3. 4. 0.1666666 0. 1. + 15122. 1. 4. 17.5 2.5 0.0 2. 12.0 6.5 3. 4. 7.8399963 0. 1. + 15125. 1. 4. 22.0 2.5 0.0 1. 12.0 20.0 3. 4. 0.4000000 0. 1. + 15131. 1. 1. 37.0 13.0 3.0 1. 17.0 40.0 5. 6. 0.0769231 0. 1. + 15134. 1. 2. 32.0 16.5 2.0 1. 12.0 20.0 5. 2. 2.7151508 0. 1. + 15137. 1. 3. 37.0 23.0 3.0 3. 12.0 40.0 3. 5. 0.1521739 0. 1. + 15138. 1. 5. 27.0 9.0 1.0 3. 12.0 40.0 3. 5. 1.3611107 0. 1. + 15139. 1. 4. 27.0 6.0 1.0 1. 12.0 20.0 3. 3. 3.2666645 0. 1. + 15144. 1. 3. 37.0 23.0 4.0 2. 12.0 40.0 3. 2. 1.8260860 0. 1. + 15149. 1. 4. 37.0 23.0 5.5 3. 12.0 14.0 5. 5. 0.1521739 0. 1. + 15158. 1. 1. 22.0 2.5 1.0 1. 12.0 20.0 3. 4. 1.3999996 0. 1. + 15177. 1. 3. 22.0 2.5 0.0 1. 12.0 20.0 3. 5. 4.7999992 0. 1. + 15184. 1. 4. 27.0 2.5 0.0 1. 16.0 11.5 4. 2. 7.8399963 0. 1. + 15192. 1. 4. 32.0 13.0 1.0 3. 16.0 14.0 3. 5. 0.6153846 0. 1. + 15193. 1. 4. 27.0 2.5 0.0 2. 12.0 20.0 3. 4. 7.8399963 0. 1. + 15199. 1. 2. 32.0 9.0 0.0 2. 16.0 14.0 3. 2. 1.3611107 0. 1. + 15243. 1. 5. 42.0 23.0 4.0 1. 20.0 40.0 4. 5. 0.5217391 0. 1. + 15258. 1. 4. 22.0 6.0 1.0 1. 12.0 14.0 3. 5. 2.0000000 0. 1. + 15259. 1. 3. 42.0 23.0 4.0 2. 14.0 20.0 3. 5. 0.3478261 0. 1. + 15285. 1. 5. 27.0 6.0 0.0 3. 12.0 11.5 3. 4. 2.0416660 0. 1. + 15293. 1. 4. 42.0 16.5 2.0 2. 12.0 20.0 3. 4. 0.2121212 0. 1. + 15301. 1. 5. 22.0 2.5 0.0 2. 16.0 6.5 4. 1. 3.1999998 0. 1. + 15305. 1. 4. 42.0 23.0 5.5 4. 20.0 14.0 4. 2. 0.1521739 0. 1. + 15308. 1. 5. 27.0 9.0 2.0 3. 14.0 20.0 4. 5. 0.3888888 0. 1. + 15315. 1. 4. 27.0 2.5 1.0 3. 16.0 20.0 6. 5. 4.7999992 0. 1. + 15327. 1. 3. 27.0 9.0 0.0 3. 16.0 20.0 5. 5. 1.3333330 0. 1. + 15330. 1. 5. 37.0 23.0 3.0 2. 14.0 40.0 3. 5. 0.1521739 0. 1. + 15331. 1. 4. 37.0 16.5 2.0 3. 17.0 40.0 4. 2. 1.6969690 0. 1. + 15335. 1. 3. 27.0 6.0 1.0 1. 17.0 20.0 4. 5. 2.0416660 0. 1. + 15337. 1. 5. 32.0 16.5 3.0 4. 14.0 14.0 3. 6. 0.7272727 0. 1. + 15338. 1. 5. 37.0 16.5 2.0 3. 12.0 14.0 3. 4. 0.7424242 0. 1. + 15339. 1. 3. 27.0 6.0 1.0 4. 17.0 20.0 4. 5. 7.0000000 0. 1. + 15341. 1. 3. 37.0 16.5 3.0 2. 14.0 20.0 3. 4. 2.5454540 0. 1. + 15342. 1. 5. 27.0 9.0 1.0 1. 14.0 6.5 3. 4. 0.3888888 0. 1. + 15345. 1. 3. 32.0 9.0 3.0 2. 14.0 20.0 5. 5. 1.3611107 0. 1. + 15351. 1. 2. 42.0 23.0 3.0 2. 12.0 40.0 3. 5. 0.8521735 0. 1. + 15363. 1. 4. 32.0 13.0 2.0 1. 14.0 14.0 3. 5. 1.5076914 0. 1. + 15367. 1. 4. 22.0 2.5 1.0 2. 14.0 9.0 3. 2. 4.7999992 0. 1. + 15374. 1. 5. 27.0 9.0 2.0 2. 12.0 14.0 3. 6. 0.3888888 0. 1. + 15375. 1. 5. 32.0 16.5 2.0 1. 12.0 20.0 3. 6. 0.0606061 0. 1. + 15385. 1. 4. 32.0 16.5 2.0 2. 12.0 20.0 2. 4. 1.6969690 0. 1. + 15392. 1. 4. 42.0 23.0 3.0 2. 12.0 20.0 3. 5. 1.9478254 0. 1. + 15395. 1. 4. 32.0 9.0 2.0 3. 9.0 20.0 3. 5. 1.3333330 0. 1. + 15396. 1. 2. 27.0 6.0 2.0 3. 12.0 14.0 3. 4. 2.0416660 0. 1. + 15398. 1. 5. 42.0 23.0 2.0 3. 16.0 40.0 4. 5. 0.2434782 0. 1. + 15399. 1. 4. 37.0 23.0 3.0 4. 12.0 20.0 5. 4. 0.5326087 0. 1. + 15412. 1. 4. 32.0 16.5 3.0 2. 12.0 20.0 5. 5. 3.8787870 0. 1. + 15422. 1. 3. 27.0 9.0 1.0 2. 12.0 20.0 3. 4. 7.1111107 0. 1. + 15425. 1. 2. 37.0 13.0 2.0 3. 14.0 14.0 3. 4. 0.9230769 0. 1. + 15449. 1. 4. 32.0 16.5 3.0 3. 14.0 20.0 4. 3. 0.2121212 0. 1. + 15467. 1. 3. 32.0 16.5 4.0 3. 12.0 11.5 2. 2. 1.1878777 0. 1. + 15485. 1. 3. 42.0 23.0 4.0 2. 12.0 20.0 4. 4. 1.8260860 0. 1. + 15489. 1. 3. 42.0 23.0 3.0 3. 17.0 40.0 4. 6. 0.0434783 0. 1. + 15497. 1. 5. 27.0 9.0 3.0 1. 14.0 11.5 3. 6. 1.3333330 0. 1. + 15502. 1. 4. 27.0 6.0 1.0 3. 14.0 9.0 4. 5. 0.5833333 0. 1. + 15503. 1. 3. 22.0 2.5 0.0 2. 12.0 20.0 3. 5. 1.3999996 0. 1. + 15509. 1. 3. 22.0 2.5 0.0 2. 14.0 6.5 5. 4. 0.4000000 0. 1. + 15511. 1. 4. 32.0 16.5 3.0 3. 9.0 40.0 5. 5. 0.2121212 0. 1. + 15519. 1. 4. 27.0 2.5 0.0 3. 16.0 20.0 4. 6. 4.8999996 0. 1. + 15525. 1. 3. 27.0 6.0 1.0 2. 12.0 11.5 3. 5. 0.5833333 0. 1. + 15528. 1. 3. 32.0 16.5 2.0 3. 16.0 20.0 4. 4. 0.7424242 0. 1. + 15531. 1. 5. 42.0 23.0 3.0 3. 12.0 6.5 4. 2. 1.2173910 0. 1. + 15536. 1. 3. 27.0 6.0 1.0 3. 16.0 20.0 2. 2. 2.0000000 0. 1. + 15540. 1. 4. 27.0 9.0 2.0 3. 14.0 11.5 5. 5. 1.3333330 0. 1. + 15545. 1. 4. 27.0 9.0 1.0 4. 12.0 11.5 3. 2. 3.1111107 0. 1. + 15549. 1. 3. 37.0 13.0 2.0 3. 16.0 11.5 2. 4. 1.5076914 0. 1. + 15551. 1. 4. 22.0 6.0 1.0 2. 14.0 20.0 3. 5. 0.5833333 0. 1. + 15557. 1. 5. 37.0 13.0 2.0 3. 14.0 14.0 5. 5. 0.6153846 0. 1. + 15573. 1. 3. 22.0 2.5 0.0 1. 14.0 9.0 3. 1. 4.8999996 0. 1. + 15583. 1. 4. 37.0 16.5 3.0 3. 12.0 20.0 5. 5. 0.2121212 0. 1. + 15584. 1. 1. 32.0 13.0 2.0 2. 17.0 20.0 4. 6. 3.2307692 0. 1. + 15587. 1. 3. 22.0 2.5 0.0 3. 14.0 11.5 5. 4. 3.1999998 0. 1. + 15592. 1. 3. 22.0 6.0 1.0 3. 12.0 6.5 4. 2. 2.0000000 0. 1. + 15593. 1. 4. 22.0 2.5 1.0 3. 14.0 6.5 2. 2. 16.7999878 0. 1. + 15596. 1. 2. 42.0 23.0 2.0 1. 14.0 40.0 3. 5. 0.1521739 0. 1. + 15611. 1. 1. 42.0 23.0 3.0 1. 17.0 40.0 4. 5. 1.8260860 0. 1. + 15613. 1. 3. 37.0 16.5 3.0 3. 16.0 20.0 6. 4. 1.6969690 0. 1. + 15621. 1. 4. 27.0 6.0 0.0 2. 12.0 11.5 3. 4. 7.0000000 0. 1. + 15635. 1. 3. 37.0 16.5 4.0 1. 12.0 40.0 3. 6. 0.7272727 0. 1. + 15643. 1. 4. 27.0 6.0 2.0 2. 12.0 14.0 3. 2. 0.1666666 0. 1. + 15644. 1. 3. 32.0 9.0 0.0 1. 16.0 40.0 4. 5. 7.4666662 0. 1. + 15662. 1. 5. 22.0 2.5 0.0 3. 14.0 11.5 4. 4. 0.4000000 0. 1. + 15663. 1. 2. 37.0 16.5 2.0 4. 12.0 11.5 3. 3. 0.2121212 0. 1. + 15665. 1. 3. 22.0 2.5 0.0 3. 12.0 11.5 3. 2. 1.3999996 0. 1. + 15672. 1. 4. 27.0 6.0 2.0 1. 14.0 20.0 2. 2. 2.0416660 0. 1. + 15673. 1. 3. 32.0 16.5 3.0 2. 12.0 14.0 4. 2. 0.7424242 0. 1. + 15678. 1. 2. 27.0 2.5 0.0 2. 16.0 20.0 4. 5. 17.9199982 0. 1. + 15686. 1. 3. 42.0 23.0 5.5 2. 20.0 11.5 4. 3. 0.1521739 0. 1. + 15694. 1. 1. 37.0 16.5 2.0 3. 14.0 11.5 3. 5. 0.7272727 0. 1. + 15695. 1. 4. 22.0 6.0 2.0 2. 12.0 14.0 3. 5. 3.2666645 0. 1. + 15696. 1. 4. 42.0 23.0 2.0 3. 20.0 20.0 4. 4. 0.8521735 0. 1. + 15734. 1. 3. 22.0 2.5 0.0 2. 14.0 11.5 3. 3. 3.1999998 0. 1. + 15735. 1. 4. 27.0 9.0 0.0 3. 17.0 20.0 5. 6. 1.3333330 0. 1. + 15742. 1. 5. 27.0 2.5 0.0 2. 16.0 40.0 3. 2. 11.1999998 0. 1. + 15761. 1. 5. 27.0 9.0 2.0 3. 14.0 14.0 3. 3. 0.3888888 0. 1. + 15768. 1. 2. 27.0 6.0 1.0 1. 16.0 20.0 4. 5. 2.0000000 0. 1. + 15801. 1. 3. 42.0 23.0 2.0 2. 14.0 14.0 3. 5. 0.5217391 0. 1. + 15805. 1. 4. 27.0 9.0 2.0 3. 12.0 14.0 3. 5. 1.3611107 0. 1. + 15811. 1. 3. 37.0 23.0 5.5 2. 12.0 11.5 2. 5. 0.3478261 0. 1. + 15816. 1. 4. 27.0 6.0 1.0 2. 14.0 14.0 3. 4. 3.2666645 0. 1. + 15827. 1. 3. 27.0 2.5 0.0 3. 12.0 9.0 3. 5. 4.7999992 0. 1. + 15838. 1. 1. 27.0 2.5 0.0 2. 14.0 20.0 3. 2. 4.8999996 0. 1. + 15846. 1. 3. 27.0 6.0 1.0 3. 16.0 40.0 5. 4. 2.0000000 0. 1. + 15862. 1. 4. 27.0 6.0 2.0 3. 16.0 20.0 4. 2. 3.2666645 0. 1. + 15864. 1. 4. 27.0 13.0 3.0 4. 14.0 11.5 2. 4. 1.5076914 0. 1. + 15883. 1. 3. 27.0 9.0 2.0 3. 16.0 20.0 4. 5. 4.6666660 0. 1. + 15892. 1. 5. 27.0 13.0 3.0 2. 14.0 20.0 5. 4. 0.9423077 0. 1. + 15904. 1. 5. 22.0 6.0 1.0 3. 12.0 6.5 4. 2. 7.0000000 0. 1. + 15906. 1. 1. 32.0 16.5 2.0 3. 16.0 20.0 4. 4. 0.7272727 0. 1. + 15914. 1. 1. 42.0 23.0 3.0 3. 20.0 20.0 4. 4. 0.8521735 0. 1. + 15918. 1. 3. 27.0 2.5 0.0 1. 16.0 40.0 5. 5. 3.1999998 0. 1. + 15939. 1. 5. 42.0 23.0 5.5 3. 14.0 40.0 4. 5. 0.0434783 0. 1. + 15940. 1. 3. 22.0 6.0 1.0 1. 16.0 6.5 3. 4. 3.2666645 0. 1. + 15947. 1. 1. 22.0 2.5 0.0 1. 12.0 11.5 3. 2. 1.3999996 0. 1. + 15949. 1. 2. 22.0 2.5 1.0 2. 14.0 9.0 3. 4. 11.1999998 0. 1. + 15953. 1. 5. 27.0 2.5 0.0 1. 17.0 6.5 4. 4. 1.3999996 0. 1. + 15963. 1. 2. 27.0 6.0 1.0 3. 12.0 20.0 3. 6. 3.2666645 0. 1. + 15968. 1. 3. 37.0 9.0 2.0 1. 17.0 20.0 4. 3. 0.3888888 0. 1. + 15982. 1. 3. 42.0 23.0 2.0 3. 12.0 11.5 3. 3. 1.8260860 0. 1. + 15998. 1. 4. 37.0 16.5 4.0 3. 17.0 20.0 4. 2. 1.1878777 0. 1. + 16011. 1. 4. 32.0 13.0 2.0 2. 14.0 20.0 5. 5. 0.2692307 0. 1. + 16015. 1. 5. 27.0 9.0 2.0 3. 14.0 14.0 4. 4. 1.3333330 0. 1. + 16025. 1. 5. 42.0 16.5 4.0 3. 16.0 20.0 5. 4. 0.0606061 0. 1. + 16074. 1. 1. 37.0 13.0 1.0 4. 16.0 20.0 3. 5. 1.5076914 0. 1. + 16089. 1. 5. 32.0 9.0 3.0 2. 16.0 20.0 4. 5. 0.3888888 0. 1. + 16093. 1. 3. 22.0 2.5 0.0 2. 12.0 20.0 3. 3. 25.5999908 0. 1. + 16105. 1. 3. 27.0 2.5 0.0 4. 14.0 11.5 5. 6. 0.4000000 0. 1. + 16110. 1. 3. 22.0 2.5 0.0 2. 12.0 20.0 3. 5. 1.3999996 0. 1. + 16113. 1. 2. 32.0 16.5 2.0 1. 16.0 40.0 6. 6. 0.7272727 0. 1. + 16126. 1. 4. 32.0 9.0 1.0 3. 14.0 20.0 3. 5. 0.8888888 0. 1. + 16138. 1. 2. 42.0 16.5 2.0 3. 12.0 14.0 3. 3. 1.1878777 0. 1. + 16153. 1. 4. 37.0 16.5 3.0 2. 12.0 11.5 5. 2. 4.0727262 0. 1. + 16174. 1. 2. 37.0 16.5 3.0 2. 12.0 14.0 3. 5. 0.2121212 0. 1. + 16177. 1. 4. 22.0 2.5 1.0 3. 12.0 11.5 3. 4. 1.3999996 0. 1. + 16193. 1. 3. 32.0 16.5 3.0 1. 12.0 20.0 5. 4. 0.7272727 0. 1. + 16208. 1. 3. 32.0 9.0 1.0 1. 14.0 20.0 2. 4. 2.1777763 0. 1. + 16215. 1. 1. 42.0 23.0 3.0 2. 14.0 20.0 3. 5. 0.8521735 0. 1. + 16217. 1. 5. 22.0 2.5 0.0 1. 14.0 20.0 3. 2. 7.8399963 0. 1. + 16231. 1. 3. 42.0 23.0 4.0 1. 14.0 20.0 3. 5. 0.1521739 0. 1. + 16242. 1. 4. 27.0 9.0 2.0 2. 12.0 14.0 1. 5. 3.1111107 0. 1. + 16246. 1. 4. 27.0 9.0 1.0 3. 14.0 20.0 3. 5. 3.1111107 0. 1. + 16256. 1. 4. 22.0 2.5 0.0 1. 16.0 20.0 4. 4. 1.3999996 0. 1. + 16265. 1. 4. 37.0 16.5 5.5 3. 12.0 20.0 2. 4. 0.2121212 0. 1. + 16271. 1. 3. 22.0 6.0 2.0 1. 12.0 11.5 3. 4. 1.3333330 0. 1. + 16277. 1. 1. 42.0 16.5 5.5 2. 12.0 20.0 2. 5. 0.2121212 0. 1. + 16278. 1. 3. 32.0 9.0 2.0 4. 17.0 11.5 4. 2. 2.1777763 0. 1. + 16280. 1. 4. 32.0 13.0 2.0 2. 12.0 20.0 3. 5. 0.9423077 0. 1. + 16287. 1. 3. 37.0 16.5 2.0 2. 16.0 20.0 4. 5. 1.1878777 0. 1. + 16289. 1. 3. 37.0 16.5 3.0 3. 17.0 40.0 4. 6. 0.7272727 0. 1. + 16299. 1. 4. 32.0 13.0 2.0 2. 14.0 20.0 5. 4. 1.5076914 0. 1. + 16300. 1. 3. 42.0 23.0 3.0 1. 14.0 40.0 4. 4. 1.2173910 0. 1. + 16303. 1. 1. 32.0 16.5 2.0 3. 14.0 11.5 4. 2. 2.5454540 0. 1. + 16307. 1. 1. 42.0 23.0 2.0 3. 12.0 20.0 3. 4. 0.8521735 0. 1. + 16309. 1. 5. 37.0 6.0 2.0 3. 17.0 40.0 4. 4. 0.5833333 0. 1. + 16320. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 3. 5. 16.7999878 0. 1. + 16331. 1. 3. 32.0 16.5 2.0 1. 12.0 11.5 3. 4. 0.7272727 0. 1. + 16343. 1. 1. 27.0 6.0 2.0 2. 12.0 9.0 2. 2. 0.5833333 0. 1. + 16346. 1. 3. 42.0 23.0 4.0 2. 12.0 14.0 3. 5. 0.8521735 0. 1. + 16349. 1. 5. 27.0 6.0 2.0 1. 14.0 11.5 4. 4. 2.0416660 0. 1. + 16354. 1. 4. 27.0 6.0 2.0 2. 12.0 14.0 3. 2. 3.2666645 0. 1. + 16359. 1. 4. 22.0 2.5 0.0 1. 16.0 11.5 3. 4. 3.1999998 0. 1. + 16363. 1. 4. 27.0 9.0 0.0 2. 12.0 20.0 3. 4. 1.3611107 0. 1. + 16370. 1. 4. 22.0 6.0 0.0 1. 14.0 20.0 5. 6. 2.0000000 0. 1. + 16387. 1. 3. 42.0 16.5 2.0 1. 14.0 20.0 3. 6. 0.7272727 0. 1. + 16390. 1. 3. 32.0 16.5 4.0 1. 12.0 20.0 3. 4. 1.6969690 0. 1. + 16395. 1. 1. 22.0 2.5 1.0 1. 12.0 14.0 3. 4. 7.8399963 0. 1. + 16410. 1. 4. 37.0 16.5 3.0 2. 12.0 40.0 3. 5. 2.5454540 0. 1. + 16426. 1. 3. 22.0 6.0 3.0 2. 14.0 11.5 3. 2. 3.2666645 0. 1. + 16430. 1. 5. 22.0 2.5 0.0 2. 12.0 14.0 3. 5. 7.8399963 0. 1. + 16434. 1. 2. 22.0 2.5 0.0 3. 14.0 20.0 3. 3. 4.8999996 0. 1. + 16447. 1. 3. 22.0 2.5 0.0 3. 16.0 9.0 4. 4. 1.3999996 0. 1. + 16455. 1. 3. 22.0 0.5 0.0 1. 14.0 9.0 3. 2. 39.1999817 0. 1. + 16456. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.4000000 0. 1. + 16457. 1. 4. 27.0 9.0 2.0 2. 14.0 6.5 4. 2. 1.3611107 0. 1. + 16459. 1. 5. 37.0 16.5 2.0 3. 14.0 40.0 3. 5. 1.1878777 0. 1. + 16465. 1. 4. 32.0 13.0 1.0 3. 14.0 20.0 4. 5. 0.9423077 0. 1. + 16483. 1. 3. 32.0 13.0 4.0 3. 12.0 9.0 5. 4. 0.2692307 0. 1. + 16484. 1. 3. 27.0 6.0 3.0 3. 14.0 14.0 3. 5. 2.0416660 0. 1. + 16494. 1. 4. 32.0 13.0 2.0 2. 14.0 20.0 3. 4. 0.9230769 0. 1. + 16496. 1. 2. 42.0 23.0 2.0 2. 14.0 20.0 5. 5. 0.8521735 0. 1. + 16499. 1. 4. 37.0 16.5 2.0 3. 12.0 20.0 4. 4. 0.7272727 0. 1. + 16501. 1. 5. 27.0 2.5 1.0 3. 12.0 14.0 4. 5. 4.8999996 0. 1. + 16518. 1. 3. 22.0 2.5 1.0 1. 12.0 6.5 2. 2. 0.4000000 0. 1. + 16519. 1. 2. 27.0 6.0 2.0 2. 14.0 9.0 4. 4. 0.5833333 0. 1. + 16545. 1. 3. 42.0 23.0 3.0 2. 14.0 20.0 3. 3. 0.8521735 0. 1. + 16546. 1. 2. 22.0 2.5 1.0 2. 14.0 14.0 2. 2. 7.8399963 0. 1. + 16547. 1. 5. 22.0 6.0 1.0 2. 17.0 4.0 4. 2. 7.0000000 0. 1. + 16554. 1. 5. 32.0 13.0 2.0 2. 14.0 9.0 2. 2. 0.6153846 0. 1. + 16581. 1. 1. 32.0 16.5 2.0 2. 17.0 40.0 4. 2. 0.7272727 0. 1. + 16593. 1. 2. 32.0 16.5 3.0 2. 14.0 20.0 4. 5. 0.2121212 0. 1. + 16608. 1. 3. 37.0 16.5 2.0 3. 14.0 20.0 5. 2. 0.7424242 0. 1. + 16614. 1. 4. 42.0 23.0 5.5 1. 12.0 20.0 3. 5. 0.8521735 0. 1. + 16627. 1. 4. 42.0 23.0 3.0 4. 14.0 20.0 3. 4. 0.5217391 0. 1. + 16639. 1. 4. 27.0 6.0 0.0 2. 16.0 14.0 4. 4. 1.3333330 0. 1. + 16648. 1. 4. 27.0 2.5 2.0 2. 16.0 14.0 4. 5. 1.3999996 0. 1. + 16650. 1. 3. 27.0 9.0 1.0 2. 12.0 14.0 2. 2. 0.3888888 0. 1. + 16653. 1. 4. 27.0 6.0 2.0 3. 14.0 11.5 4. 4. 2.0000000 0. 1. + 16659. 1. 4. 27.0 9.0 2.0 2. 12.0 14.0 4. 5. 0.3888888 0. 1. + 16666. 1. 2. 27.0 6.0 0.0 3. 14.0 20.0 3. 6. 2.0000000 0. 1. + 16672. 1. 4. 27.0 9.0 2.0 3. 16.0 40.0 4. 6. 1.3611107 0. 1. + 16677. 1. 4. 22.0 2.5 1.0 3. 14.0 6.5 5. 1. 0.4000000 0. 1. + 16710. 1. 2. 27.0 2.5 1.0 1. 14.0 20.0 5. 4. 7.8399963 0. 1. + 16715. 1. 4. 37.0 16.5 3.0 3. 14.0 11.5 3. 4. 0.2121212 0. 1. + 16717. 1. 5. 32.0 13.0 2.0 1. 14.0 20.0 3. 6. 0.9230769 0. 1. + 16719. 1. 2. 27.0 9.0 0.0 2. 17.0 14.0 4. 5. 1.3611107 0. 1. + 16732. 1. 4. 32.0 16.5 3.0 3. 12.0 20.0 3. 3. 0.7272727 0. 1. + 16739. 1. 5. 42.0 23.0 3.0 3. 12.0 20.0 3. 5. 1.2173910 0. 1. + 16741. 1. 1. 37.0 16.5 1.0 3. 12.0 20.0 2. 3. 0.7424242 0. 1. + 16742. 1. 5. 27.0 2.5 0.0 2. 14.0 20.0 2. 4. 4.8999996 0. 1. + 16752. 1. 4. 37.0 16.5 1.0 3. 14.0 40.0 3. 6. 0.7424242 0. 1. + 16754. 1. 5. 32.0 13.0 1.0 1. 20.0 14.0 2. 6. 1.5076914 0. 1. + 16785. 1. 5. 27.0 6.0 2.0 2. 14.0 20.0 4. 5. 0.5833333 0. 1. + 16820. 1. 4. 27.0 2.5 0.0 1. 20.0 9.0 6. 1. 7.8399963 0. 1. + 16826. 1. 4. 42.0 23.0 4.0 3. 12.0 11.5 2. 3. 0.3478261 0. 1. + 16829. 1. 3. 27.0 9.0 1.0 3. 17.0 11.5 5. 5. 2.1777763 0. 1. + 16864. 1. 3. 22.0 2.5 1.0 2. 12.0 6.5 2. 2. 3.1999998 0. 1. + 16881. 1. 4. 27.0 6.0 0.0 2. 14.0 40.0 3. 6. 2.0416660 0. 1. + 16904. 1. 4. 32.0 13.0 2.0 1. 12.0 20.0 3. 5. 3.4461536 0. 1. + 16906. 1. 2. 32.0 9.0 1.0 2. 16.0 14.0 3. 3. 0.1111111 0. 1. + 16909. 1. 2. 27.0 6.0 1.0 1. 14.0 20.0 4. 6. 2.0416660 0. 1. + 16910. 1. 3. 22.0 2.5 1.0 1. 14.0 6.5 2. 2. 1.3999996 0. 1. + 16917. 1. 5. 22.0 0.5 0.0 1. 12.0 14.0 3. 4. 2.0000000 0. 1. + 16924. 1. 5. 22.0 2.5 0.0 2. 20.0 11.5 4. 1. 7.8399963 0. 1. + 16926. 1. 5. 22.0 6.0 0.0 3. 14.0 14.0 3. 2. 0.5833333 0. 1. + 16930. 1. 5. 42.0 23.0 2.0 3. 17.0 20.0 4. 2. 0.1521739 0. 1. + 16931. 1. 1. 22.0 2.5 1.0 2. 14.0 20.0 3. 2. 4.7999992 0. 1. + 16936. 1. 3. 27.0 6.0 1.0 2. 12.0 14.0 3. 4. 3.2666645 0. 1. + 16940. 1. 3. 22.0 6.0 0.0 3. 14.0 20.0 5. 4. 2.0000000 0. 1. + 16942. 1. 4. 27.0 9.0 2.0 2. 16.0 11.5 4. 4. 2.1777763 0. 1. + 16944. 1. 3. 22.0 6.0 1.0 2. 9.0 11.5 2. 2. 0.1666666 0. 1. + 16968. 1. 4. 32.0 16.5 3.0 2. 16.0 20.0 5. 5. 0.2121212 0. 1. + 16974. 1. 5. 37.0 16.5 1.0 3. 14.0 20.0 3. 2. 0.4848484 0. 1. + 16976. 1. 2. 27.0 9.0 2.0 3. 14.0 11.5 2. 2. 0.8888888 0. 1. + 16980. 1. 4. 32.0 13.0 0.0 2. 14.0 20.0 3. 5. 0.2692307 0. 1. + 16981. 1. 4. 37.0 23.0 5.5 3. 14.0 20.0 4. 5. 0.8521735 0. 1. + 16983. 1. 4. 27.0 13.0 2.0 3. 12.0 20.0 3. 5. 0.2692307 0. 1. + 16985. 1. 3. 27.0 9.0 1.0 1. 16.0 20.0 3. 6. 1.3611107 0. 1. + 16987. 1. 3. 32.0 13.0 3.0 2. 14.0 11.5 3. 4. 0.2692307 0. 1. + 17000. 1. 2. 27.0 9.0 1.0 3. 14.0 20.0 3. 5. 1.3611107 0. 1. + 17029. 1. 3. 22.0 6.0 2.0 2. 12.0 9.0 3. 2. 1.3333330 0. 1. + 17030. 1. 3. 32.0 16.5 2.0 2. 12.0 11.5 3. 5. 0.0606061 0. 1. + 17036. 1. 3. 42.0 23.0 2.0 3. 12.0 20.0 2. 3. 2.9217386 0. 1. + 17042. 1. 4. 27.0 6.0 1.0 3. 14.0 20.0 3. 3. 2.0416660 0. 1. + 17058. 1. 2. 27.0 13.0 2.0 1. 12.0 40.0 4. 5. 1.5076914 0. 1. + 17061. 1. 3. 42.0 23.0 3.0 2. 12.0 20.0 3. 4. 0.1521739 0. 1. + 17063. 1. 2. 42.0 23.0 4.0 2. 12.0 20.0 5. 5. 0.5217391 0. 1. + 17071. 1. 5. 42.0 23.0 4.0 4. 14.0 20.0 3. 2. 0.1521739 0. 1. + 17082. 1. 4. 27.0 6.0 1.0 1. 12.0 40.0 5. 6. 7.0000000 0. 1. + 17104. 1. 3. 42.0 23.0 1.0 2. 14.0 40.0 5. 6. 0.5326087 0. 1. + 17109. 1. 1. 32.0 13.0 0.0 3. 14.0 20.0 3. 5. 0.9423077 0. 1. + 17114. 1. 5. 32.0 13.0 2.0 3. 14.0 20.0 4. 2. 0.9230769 0. 1. + 17125. 1. 3. 27.0 6.0 0.0 1. 16.0 20.0 3. 2. 2.0416660 0. 1. + 17134. 1. 3. 27.0 9.0 2.0 3. 14.0 20.0 5. 5. 1.3333330 0. 1. + 17136. 1. 3. 27.0 6.0 1.0 3. 16.0 40.0 4. 5. 0.5833333 0. 1. + 17138. 1. 4. 22.0 2.5 0.0 1. 12.0 6.5 3. 2. 1.3999996 0. 1. + 17140. 1. 2. 42.0 23.0 2.0 3. 12.0 14.0 5. 5. 0.8521735 0. 1. + 17141. 1. 4. 22.0 2.5 0.0 3. 14.0 14.0 5. 4. 3.1999998 0. 1. + 17163. 1. 4. 27.0 9.0 2.0 2. 20.0 11.5 4. 6. 0.3888888 0. 1. + 17181. 1. 2. 27.0 2.5 1.0 2. 14.0 6.5 2. 4. 1.3999996 0. 1. + 17200. 1. 4. 37.0 23.0 4.0 3. 14.0 20.0 3. 3. 4.1739130 0. 1. + 17201. 1. 3. 27.0 9.0 1.0 2. 14.0 20.0 3. 4. 1.3333330 0. 1. + 17203. 1. 5. 22.0 2.5 0.0 2. 12.0 6.5 3. 2. 1.3999996 0. 1. + 17228. 1. 4. 27.0 6.0 1.0 2. 12.0 40.0 3. 4. 0.1666666 0. 1. + 17238. 1. 5. 32.0 13.0 1.0 3. 14.0 14.0 5. 5. 0.9230769 0. 1. + 17250. 1. 5. 32.0 13.0 1.0 2. 12.0 20.0 3. 4. 0.2692307 0. 1. + 17288. 1. 4. 27.0 2.5 0.0 3. 14.0 20.0 5. 4. 4.7999992 0. 1. + 17289. 1. 4. 27.0 9.0 1.0 3. 14.0 20.0 3. 5. 0.1111111 0. 1. + 17310. 1. 5. 32.0 13.0 2.0 2. 12.0 20.0 5. 3. 0.9423077 0. 1. + 17311. 1. 4. 27.0 2.5 0.0 3. 12.0 20.0 3. 3. 0.4000000 0. 1. + 17317. 1. 3. 32.0 13.0 2.0 2. 14.0 20.0 3. 3. 0.2692307 0. 1. + 17329. 1. 4. 27.0 6.0 1.0 3. 12.0 11.5 3. 4. 0.5833333 0. 1. + 17343. 1. 5. 37.0 23.0 4.0 3. 16.0 40.0 5. 5. 0.5217391 0. 1. + 17347. 1. 4. 27.0 9.0 2.0 2. 12.0 20.0 5. 5. 2.1777763 0. 1. + 17360. 1. 2. 42.0 16.5 3.0 3. 16.0 20.0 3. 5. 2.5454540 0. 1. + 17374. 1. 4. 27.0 6.0 0.0 2. 14.0 14.0 3. 5. 2.0416660 0. 1. + 17378. 1. 3. 22.0 2.5 1.0 3. 12.0 9.0 5. 5. 0.4000000 0. 1. + 17379. 1. 4. 32.0 13.0 2.0 2. 14.0 20.0 3. 5. 1.5076914 0. 1. + 17397. 1. 3. 27.0 6.0 1.0 2. 14.0 14.0 3. 4. 3.2666645 0. 1. + 17416. 1. 3. 27.0 13.0 1.0 1. 12.0 14.0 3. 3. 0.6153846 0. 1. + 17417. 1. 3. 27.0 6.0 0.0 1. 16.0 40.0 6. 6. 2.0416660 0. 1. + 17422. 1. 3. 32.0 16.5 3.0 2. 14.0 20.0 3. 4. 1.1878777 0. 1. + 17424. 1. 5. 42.0 23.0 3.0 3. 14.0 20.0 3. 4. 0.8521735 0. 1. + 17425. 1. 4. 22.0 6.0 0.0 3. 12.0 14.0 3. 5. 0.5833333 0. 1. + 17435. 1. 4. 32.0 16.5 2.0 3. 12.0 20.0 3. 4. 0.2121212 0. 1. + 17436. 1. 1. 37.0 16.5 3.0 2. 14.0 14.0 4. 4. 0.2121212 0. 1. + 17437. 1. 3. 22.0 2.5 0.0 3. 16.0 6.5 3. 4. 4.8999996 0. 1. + 17438. 1. 3. 27.0 6.0 0.0 3. 17.0 11.5 5. 5. 3.2666645 0. 1. + 17447. 1. 3. 37.0 16.5 2.0 3. 16.0 20.0 5. 3. 0.0606061 0. 1. + 17448. 1. 2. 32.0 13.0 3.0 2. 12.0 20.0 3. 2. 0.9423077 0. 1. + 17455. 1. 4. 37.0 23.0 2.0 3. 14.0 20.0 5. 2. 0.1521739 0. 1. + 17456. 1. 4. 27.0 9.0 2.0 4. 17.0 11.5 4. 4. 1.3611107 0. 1. + 17491. 1. 4. 27.0 9.0 1.0 2. 14.0 20.0 3. 5. 0.1111111 0. 1. + 17493. 1. 2. 42.0 16.5 5.5 2. 16.0 40.0 3. 5. 2.5454540 0. 1. + 17510. 1. 4. 32.0 16.5 3.0 4. 14.0 20.0 3. 4. 4.0727262 0. 1. + 17518. 1. 4. 27.0 6.0 1.0 3. 14.0 9.0 3. 2. 2.0000000 0. 1. + 17519. 1. 4. 42.0 23.0 3.0 2. 12.0 9.0 3. 4. 1.9478254 0. 1. + 17525. 1. 5. 32.0 16.5 3.0 2. 12.0 40.0 3. 5. 1.6969690 0. 1. + 17527. 1. 5. 32.0 16.5 3.0 1. 14.0 20.0 2. 4. 0.0606061 0. 1. + 17532. 1. 4. 37.0 16.5 2.0 2. 14.0 20.0 3. 2. 0.7272727 0. 1. + 17543. 1. 2. 22.0 6.0 2.0 3. 12.0 20.0 3. 4. 2.0000000 0. 1. + 17552. 1. 4. 32.0 16.5 3.0 4. 14.0 20.0 3. 3. 0.0606061 0. 1. + 17571. 1. 2. 37.0 23.0 3.0 3. 12.0 14.0 3. 2. 0.1521739 0. 1. + 17590. 1. 5. 27.0 6.0 2.0 2. 12.0 9.0 4. 4. 0.5833333 0. 1. + 17599. 1. 5. 32.0 16.5 2.0 2. 17.0 14.0 4. 3. 0.0606061 0. 1. + 17607. 1. 3. 32.0 16.5 2.0 2. 12.0 11.5 4. 4. 1.1878777 0. 1. + 17617. 1. 4. 27.0 9.0 2.0 3. 12.0 9.0 3. 4. 0.8888888 0. 1. + 17621. 1. 4. 32.0 16.5 1.0 3. 14.0 20.0 5. 2. 1.6969690 0. 1. + 17622. 1. 4. 27.0 9.0 2.0 2. 16.0 11.5 4. 5. 2.1777763 0. 1. + 17628. 1. 4. 22.0 2.5 0.0 1. 16.0 20.0 3. 2. 0.4000000 0. 1. + 17631. 1. 3. 37.0 23.0 4.0 2. 14.0 20.0 3. 5. 0.8521735 0. 1. + 17689. 1. 5. 27.0 13.0 2.0 2. 12.0 14.0 2. 5. 0.9423077 0. 1. + 17692. 1. 5. 32.0 16.5 4.0 3. 14.0 20.0 3. 4. 0.7272727 0. 1. + 17703. 1. 2. 37.0 16.5 3.0 2. 14.0 20.0 5. 3. 0.2121212 0. 1. + 17710. 1. 5. 32.0 6.0 1.0 3. 14.0 20.0 3. 5. 0.5833333 0. 1. + 17711. 1. 3. 22.0 2.5 0.0 2. 16.0 11.5 3. 3. 4.8999996 0. 1. + 17713. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 3. 2. 4.7999992 0. 1. + 17717. 1. 2. 32.0 13.0 1.0 2. 12.0 40.0 3. 2. 1.5076914 0. 1. + 17724. 1. 3. 42.0 13.0 0.0 3. 17.0 20.0 5. 2. 1.5076914 0. 1. + 17735. 1. 3. 22.0 2.5 0.0 1. 16.0 20.0 3. 5. 7.8399963 0. 1. + 17736. 1. 3. 42.0 23.0 3.0 2. 17.0 14.0 4. 4. 1.2173910 0. 1. + 17737. 1. 2. 27.0 13.0 2.0 1. 14.0 20.0 3. 5. 4.9230766 0. 1. + 17757. 1. 4. 22.0 2.5 1.0 1. 14.0 6.5 3. 1. 1.3999996 0. 1. + 17766. 1. 5. 22.0 2.5 1.0 3. 14.0 20.0 4. 5. 0.4000000 0. 1. + 17792. 1. 4. 42.0 23.0 1.0 3. 14.0 6.5 3. 2. 0.1521739 0. 1. + 17801. 1. 5. 32.0 9.0 2.0 1. 17.0 14.0 6. 6. 2.1777763 0. 1. + 17809. 1. 4. 32.0 16.5 3.0 2. 12.0 40.0 3. 2. 2.5454540 0. 1. + 17819. 1. 3. 27.0 2.5 1.0 3. 14.0 20.0 3. 6. 1.3999996 0. 1. + 17830. 1. 3. 37.0 16.5 4.0 2. 14.0 14.0 3. 2. 0.2121212 0. 1. + 17838. 1. 3. 32.0 16.5 3.0 3. 14.0 20.0 3. 5. 0.7424242 0. 1. + 17846. 1. 3. 32.0 23.0 3.0 3. 14.0 40.0 3. 2. 1.2173910 0. 1. + 17853. 1. 5. 22.0 2.5 0.0 1. 12.0 4.0 2. 2. 1.3999996 0. 1. + 17882. 1. 3. 32.0 16.5 3.0 2. 12.0 40.0 5. 5. 4.0727262 0. 1. + 17894. 1. 4. 27.0 2.5 0.0 1. 17.0 40.0 4. 3. 1.3999996 0. 1. + 17902. 1. 3. 27.0 6.0 0.0 2. 20.0 20.0 6. 6. 3.2666645 0. 1. + 17903. 1. 5. 27.0 13.0 0.0 3. 14.0 14.0 3. 4. 0.0769231 0. 1. + 17912. 1. 5. 37.0 16.5 3.0 4. 14.0 40.0 5. 5. 0.2121212 0. 1. + 17915. 1. 4. 37.0 16.5 3.0 1. 14.0 14.0 3. 3. 0.7272727 0. 1. + 17918. 1. 5. 32.0 13.0 1.0 3. 14.0 14.0 5. 2. 3.2307692 0. 1. + 17919. 1. 4. 27.0 6.0 0.0 2. 14.0 20.0 3. 6. 2.0000000 0. 1. + 17920. 1. 3. 27.0 0.5 0.0 1. 14.0 20.0 3. 3. 24.0000000 0. 1. + 17926. 1. 3. 22.0 2.5 2.0 3. 14.0 11.5 2. 2. 4.8999996 0. 1. + 17931. 1. 4. 37.0 23.0 4.0 4. 12.0 20.0 3. 3. 0.1521739 0. 1. + 17944. 1. 5. 32.0 16.5 2.0 3. 14.0 20.0 4. 5. 1.1878777 0. 1. + 17966. 1. 5. 32.0 13.0 3.0 3. 14.0 20.0 3. 6. 0.9230769 0. 1. + 17985. 1. 4. 32.0 13.0 3.0 1. 20.0 20.0 5. 5. 1.5076914 0. 1. + 17986. 1. 3. 27.0 6.0 0.0 1. 12.0 11.5 3. 4. 0.5833333 0. 1. + 17991. 1. 5. 22.0 2.5 0.0 3. 14.0 40.0 3. 2. 1.3999996 0. 1. + 17994. 1. 4. 32.0 23.0 3.0 2. 9.0 20.0 4. 5. 1.2173910 0. 1. + 18001. 1. 3. 37.0 23.0 2.0 2. 12.0 20.0 5. 4. 0.5217391 0. 1. + 19007. 1. 2. 22.0 2.5 2.0 2. 12.0 6.5 2. 2. 4.8999996 0. 1. + 19011. 1. 4. 32.0 13.0 0.0 3. 14.0 20.0 3. 5. 1.5076914 0. 1. + 19017. 1. 5. 27.0 2.5 0.0 3. 14.0 14.0 3. 5. 0.4000000 0. 1. + 7. 1. 4. 32.0 9.0 2.0 3. 14.0 9.0 2. 4. 0.0 0. 1. + 14. 1. 4. 27.0 6.0 0.0 2. 14.0 6.5 3. 4. 0.0 0. 1. + 16. 1. 4. 22.0 2.5 0.0 2. 14.0 9.0 3. 2. 0.0 0. 1. + 17. 1. 5. 42.0 23.0 4.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 26. 1. 5. 27.0 2.5 1.0 3. 20.0 14.0 2. 2. 0.0 0. 1. + 27. 1. 4. 27.0 6.0 1.0 2. 14.0 11.5 2. 4. 0.0 0. 1. + 28. 1. 4. 42.0 23.0 5.5 2. 12.0 11.5 3. 2. 0.0 0. 1. + 42. 1. 5. 27.0 2.5 0.0 1. 14.0 11.5 3. 2. 0.0 0. 1. + 43. 1. 5. 32.0 13.0 2.0 3. 14.0 40.0 3. 5. 0.0 0. 1. + 46. 1. 4. 22.0 2.5 0.0 2. 12.0 11.5 4. 4. 0.0 0. 1. + 47. 1. 5. 22.0 2.5 0.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 49. 1. 3. 27.0 6.0 1.0 2. 17.0 11.5 5. 4. 0.0 0. 1. + 52. 1. 3. 27.0 2.5 0.0 2. 16.0 20.0 3. 5. 0.0 0. 1. + 55. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 56. 1. 5. 22.0 2.5 0.0 1. 17.0 20.0 4. 2. 0.0 0. 1. + 59. 1. 4. 27.0 2.5 1.0 1. 16.0 11.5 2. 4. 0.0 0. 1. + 60. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 5. 4. 0.0 0. 1. + 62. 1. 4. 32.0 13.0 4.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 66. 1. 5. 17.5 0.5 0.0 4. 16.0 20.0 3. 4. 0.0 0. 1. + 71. 1. 5. 27.0 6.0 2.0 3. 14.0 14.0 5. 5. 0.0 0. 1. + 76. 1. 5. 22.0 6.0 2.0 2. 17.0 20.0 4. 2. 0.0 0. 1. + 77. 1. 5. 22.0 2.5 0.0 2. 14.0 9.0 4. 2. 0.0 0. 1. + 79. 1. 3. 27.0 9.0 0.0 2. 16.0 11.5 5. 2. 0.0 0. 1. + 80. 1. 4. 27.0 2.5 1.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 86. 1. 5. 22.0 2.5 0.0 1. 12.0 14.0 3. 4. 0.0 0. 1. + 87. 1. 5. 22.0 6.0 0.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 88. 1. 5. 27.0 6.0 2.0 3. 12.0 11.5 3. 3. 0.0 0. 1. + 90. 1. 5. 27.0 6.0 2.0 3. 12.0 20.0 2. 4. 0.0 0. 1. + 93. 1. 4. 27.0 2.5 0.0 1. 12.0 20.0 3. 2. 0.0 0. 1. + 96. 1. 3. 22.0 2.5 1.0 1. 14.0 6.5 4. 2. 0.0 0. 1. + 97. 1. 4. 22.0 2.5 0.0 1. 14.0 11.5 3. 2. 0.0 0. 1. + 99. 1. 5. 22.0 2.5 1.0 3. 12.0 9.0 2. 2. 0.0 0. 1. + 100. 1. 5. 27.0 6.0 1.0 4. 14.0 20.0 5. 6. 0.0 0. 1. + 120. 1. 4. 42.0 23.0 5.5 2. 12.0 20.0 3. 5. 0.0 0. 1. + 125. 1. 5. 27.0 9.0 2.0 3. 14.0 9.0 3. 4. 0.0 0. 1. + 136. 1. 5. 32.0 9.0 2.0 2. 12.0 20.0 4. 5. 0.0 0. 1. + 142. 1. 4. 22.0 2.5 0.0 3. 16.0 20.0 4. 6. 0.0 0. 1. + 145. 1. 5. 32.0 9.0 4.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 146. 1. 5. 27.0 2.5 0.0 2. 16.0 11.5 2. 4. 0.0 0. 1. + 154. 1. 3. 27.0 2.5 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 158. 1. 4. 27.0 9.0 0.0 2. 12.0 20.0 4. 4. 0.0 0. 1. + 167. 1. 5. 32.0 6.0 1.0 2. 17.0 20.0 4. 5. 0.0 0. 1. + 169. 1. 4. 22.0 2.5 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 170. 1. 4. 32.0 9.0 2.0 2. 14.0 20.0 4. 2. 0.0 0. 1. + 173. 1. 4. 22.0 2.5 0.0 2. 16.0 14.0 4. 5. 0.0 0. 1. + 174. 1. 5. 42.0 23.0 4.0 3. 14.0 20.0 4. 6. 0.0 0. 1. + 175. 1. 4. 27.0 2.5 2.0 3. 14.0 11.5 4. 3. 0.0 0. 1. + 183. 1. 5. 22.0 2.5 0.0 4. 16.0 9.0 4. 1. 0.0 0. 1. + 187. 1. 5. 17.5 0.5 0.0 2. 14.0 9.0 4. 5. 0.0 0. 1. + 191. 1. 3. 22.0 0.5 0.0 2. 16.0 20.0 3. 2. 0.0 0. 1. + 196. 1. 5. 22.0 0.5 0.0 3. 16.0 20.0 4. 2. 0.0 0. 1. + 197. 1. 3. 32.0 13.0 0.0 3. 20.0 20.0 4. 5. 0.0 0. 1. + 199. 1. 4. 27.0 2.5 0.0 4. 16.0 20.0 4. 6. 0.0 0. 1. + 200. 1. 5. 42.0 23.0 5.5 1. 14.0 14.0 3. 3. 0.0 0. 1. + 201. 1. 4. 37.0 16.5 3.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 208. 1. 5. 32.0 16.5 3.0 2. 12.0 20.0 2. 2. 0.0 0. 1. + 212. 1. 4. 32.0 9.0 2.0 2. 14.0 20.0 4. 3. 0.0 0. 1. + 215. 1. 3. 22.0 2.5 0.0 1. 12.0 14.0 3. 4. 0.0 0. 1. + 218. 1. 4. 37.0 2.5 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 224. 1. 4. 27.0 2.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 232. 1. 5. 32.0 9.0 2.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 233. 1. 5. 32.0 13.0 2.0 1. 16.0 40.0 4. 5. 0.0 0. 1. + 235. 1. 5. 37.0 16.5 3.0 3. 16.0 20.0 5. 4. 0.0 0. 1. + 252. 1. 5. 22.0 0.5 0.0 2. 14.0 11.5 3. 5. 0.0 0. 1. + 255. 1. 5. 42.0 16.5 2.0 3. 17.0 40.0 4. 4. 0.0 0. 1. + 259. 1. 3. 27.0 6.0 1.0 3. 12.0 6.5 3. 2. 0.0 0. 1. + 262. 1. 5. 22.0 2.5 0.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 265. 1. 5. 27.0 9.0 3.0 4. 16.0 11.5 4. 5. 0.0 0. 1. + 270. 1. 5. 42.0 23.0 1.0 4. 17.0 40.0 4. 5. 0.0 0. 1. + 272. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 278. 1. 5. 42.0 23.0 1.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 282. 1. 5. 27.0 2.5 0.0 1. 16.0 20.0 6. 6. 0.0 0. 1. + 285. 1. 5. 27.0 2.5 1.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 290. 1. 5. 17.5 2.5 0.0 1. 14.0 11.5 3. 2. 0.0 0. 1. + 294. 1. 5. 22.0 6.0 0.0 1. 12.0 11.5 2. 3. 0.0 0. 1. + 309. 1. 3. 32.0 13.0 2.0 2. 14.0 11.5 2. 2. 0.0 0. 1. + 311. 1. 5. 27.0 2.5 0.0 1. 17.0 20.0 4. 5. 0.0 0. 1. + 318. 1. 4. 32.0 2.5 0.0 2. 16.0 20.0 4. 3. 0.0 0. 1. + 323. 1. 5. 22.0 2.5 1.0 1. 12.0 6.5 3. 3. 0.0 0. 1. + 327. 1. 5. 22.0 2.5 0.0 2. 14.0 14.0 3. 3. 0.0 0. 1. + 329. 1. 5. 42.0 16.5 3.0 2. 12.0 9.0 3. 4. 0.0 0. 1. + 331. 1. 5. 27.0 6.0 1.0 2. 14.0 6.5 4. 4. 0.0 0. 1. + 335. 1. 5. 32.0 9.0 2.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 341. 1. 5. 32.0 16.5 3.0 1. 16.0 20.0 4. 2. 0.0 0. 1. + 344. 1. 4. 27.0 2.5 0.0 3. 14.0 14.0 3. 5. 0.0 0. 1. + 350. 1. 5. 27.0 9.0 3.0 1. 17.0 20.0 4. 4. 0.0 0. 1. + 353. 1. 4. 27.0 2.5 0.0 3. 14.0 40.0 4. 5. 0.0 0. 1. + 357. 1. 3. 37.0 16.5 4.0 3. 14.0 11.5 4. 4. 0.0 0. 1. + 364. 1. 5. 22.0 2.5 0.0 2. 17.0 40.0 5. 5. 0.0 0. 1. + 382. 1. 5. 32.0 9.0 2.0 2. 17.0 20.0 5. 5. 0.0 0. 1. + 383. 1. 5. 22.0 2.5 1.0 1. 12.0 9.0 3. 4. 0.0 0. 1. + 385. 1. 3. 27.0 6.0 2.0 2. 14.0 9.0 5. 6. 0.0 0. 1. + 395. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 397. 1. 5. 27.0 9.0 2.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 407. 1. 4. 27.0 2.5 0.0 2. 14.0 11.5 3. 3. 0.0 0. 1. + 408. 1. 5. 22.0 2.5 1.0 2. 12.0 9.0 3. 4. 0.0 0. 1. + 409. 1. 4. 27.0 2.5 0.0 3. 12.0 20.0 2. 5. 0.0 0. 1. + 415. 1. 5. 27.0 6.0 2.0 3. 14.0 11.5 2. 4. 0.0 0. 1. + 421. 1. 5. 22.0 2.5 2.0 1. 14.0 14.0 4. 3. 0.0 0. 1. + 423. 1. 4. 42.0 23.0 3.0 2. 16.0 40.0 3. 5. 0.0 0. 1. + 430. 1. 4. 32.0 6.0 0.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 436. 1. 5. 22.0 2.5 0.0 3. 16.0 11.5 4. 5. 0.0 0. 1. + 443. 1. 5. 22.0 2.5 0.0 3. 16.0 14.0 3. 4. 0.0 0. 1. + 445. 1. 5. 27.0 6.0 0.0 1. 16.0 20.0 4. 2. 0.0 0. 1. + 449. 1. 4. 42.0 23.0 3.0 2. 9.0 20.0 5. 5. 0.0 0. 1. + 454. 1. 5. 22.0 0.5 0.0 2. 16.0 11.5 3. 3. 0.0 0. 1. + 455. 1. 3. 22.0 2.5 0.0 2. 16.0 14.0 5. 5. 0.0 0. 1. + 456. 1. 5. 27.0 9.0 2.0 1. 12.0 20.0 2. 3. 0.0 0. 1. + 459. 1. 5. 32.0 16.5 2.0 1. 12.0 14.0 2. 5. 0.0 0. 1. + 460. 1. 2. 32.0 16.5 1.0 3. 12.0 11.5 3. 5. 0.0 0. 1. + 462. 1. 3. 22.0 2.5 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 464. 1. 4. 22.0 2.5 1.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 469. 1. 4. 27.0 6.0 0.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 475. 1. 5. 22.0 0.5 0.0 1. 16.0 6.5 4. 1. 0.0 0. 1. + 477. 1. 5. 27.0 2.5 0.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 485. 1. 5. 37.0 16.5 3.0 1. 16.0 20.0 4. 5. 0.0 0. 1. + 486. 1. 4. 42.0 23.0 3.0 4. 12.0 20.0 3. 4. 0.0 0. 1. + 488. 1. 5. 27.0 2.5 0.0 2. 20.0 20.0 4. 6. 0.0 0. 1. + 492. 1. 4. 32.0 6.0 2.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 494. 1. 5. 27.0 9.0 0.0 2. 12.0 20.0 4. 5. 0.0 0. 1. + 498. 1. 4. 32.0 6.0 1.0 3. 12.0 40.0 6. 6. 0.0 0. 1. + 499. 1. 3. 32.0 13.0 2.0 2. 16.0 14.0 3. 2. 0.0 0. 1. + 500. 1. 4. 37.0 16.5 4.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 501. 1. 5. 32.0 13.0 2.0 3. 12.0 20.0 5. 4. 0.0 0. 1. + 507. 1. 3. 22.0 2.5 2.0 1. 12.0 9.0 3. 2. 0.0 0. 1. + 511. 1. 5. 27.0 2.5 0.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 514. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 517. 1. 5. 37.0 13.0 0.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 524. 1. 5. 22.0 2.5 0.0 1. 12.0 11.5 3. 4. 0.0 0. 1. + 525. 1. 4. 37.0 16.5 2.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 528. 1. 5. 37.0 16.5 2.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 532. 1. 5. 27.0 6.0 2.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 543. 1. 1. 22.0 2.5 1.0 2. 17.0 4.0 2. 2. 0.0 0. 1. + 548. 1. 3. 32.0 13.0 3.0 1. 14.0 11.5 3. 5. 0.0 0. 1. + 554. 1. 4. 27.0 2.5 1.0 3. 12.0 14.0 3. 5. 0.0 0. 1. + 556. 1. 5. 32.0 6.0 2.0 2. 16.0 11.5 4. 5. 0.0 0. 1. + 562. 1. 5. 22.0 2.5 0.0 1. 12.0 11.5 3. 5. 0.0 0. 1. + 564. 1. 5. 32.0 9.0 4.0 2. 16.0 11.5 4. 4. 0.0 0. 1. + 566. 1. 4. 22.0 2.5 0.0 1. 14.0 11.5 3. 1. 0.0 0. 1. + 567. 1. 5. 17.5 0.5 0.0 3. 12.0 9.0 2. 2. 0.0 0. 1. + 569. 1. 5. 27.0 0.5 0.0 1. 17.0 20.0 4. 5. 0.0 0. 1. + 572. 1. 5. 22.0 0.5 0.0 4. 16.0 6.5 6. 2. 0.0 0. 1. + 581. 1. 5. 27.0 6.0 0.0 1. 12.0 20.0 3. 5. 0.0 0. 1. + 582. 1. 5. 37.0 16.5 1.0 2. 14.0 20.0 4. 3. 0.0 0. 1. + 589. 1. 3. 42.0 16.5 3.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 591. 1. 5. 27.0 6.0 1.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 593. 1. 5. 42.0 23.0 2.0 3. 17.0 20.0 5. 4. 0.0 0. 1. + 594. 1. 4. 22.0 0.5 0.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 597. 1. 2. 37.0 16.5 3.0 2. 14.0 9.0 3. 4. 0.0 0. 1. + 598. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 599. 1. 5. 27.0 2.5 0.0 1. 16.0 40.0 4. 4. 0.0 0. 1. + 600. 1. 4. 27.0 2.5 1.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 601. 1. 3. 42.0 13.0 0.0 3. 16.0 20.0 4. 6. 0.0 0. 1. + 602. 1. 3. 42.0 16.5 1.0 4. 20.0 40.0 6. 6. 0.0 0. 1. + 603. 1. 4. 42.0 23.0 4.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 610. 1. 5. 27.0 6.0 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 611. 1. 5. 37.0 23.0 5.5 3. 12.0 20.0 2. 5. 0.0 0. 1. + 615. 1. 5. 27.0 9.0 2.0 2. 14.0 14.0 2. 2. 0.0 0. 1. + 617. 1. 4. 27.0 13.0 4.0 2. 12.0 6.5 3. 2. 0.0 0. 1. + 620. 1. 3. 27.0 6.0 1.0 1. 17.0 40.0 4. 5. 0.0 0. 1. + 627. 1. 5. 32.0 9.0 2.0 3. 12.0 11.5 4. 4. 0.0 0. 1. + 629. 1. 5. 27.0 2.5 0.0 1. 14.0 14.0 5. 4. 0.0 0. 1. + 631. 1. 4. 27.0 9.0 2.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 632. 1. 5. 27.0 2.5 0.0 1. 14.0 20.0 3. 3. 0.0 0. 1. + 637. 1. 4. 42.0 23.0 4.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 638. 1. 3. 27.0 2.5 0.0 1. 17.0 11.5 4. 5. 0.0 0. 1. + 640. 1. 4. 27.0 6.0 1.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 647. 1. 3. 27.0 6.0 2.0 1. 12.0 11.5 2. 2. 0.0 0. 1. + 651. 1. 3. 42.0 9.0 1.0 2. 14.0 20.0 5. 4. 0.0 0. 1. + 659. 1. 5. 42.0 23.0 3.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 660. 1. 4. 22.0 6.0 2.0 1. 12.0 20.0 3. 6. 0.0 0. 1. + 661. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 3. 5. 0.0 0. 1. + 663. 1. 4. 27.0 9.0 2.0 3. 12.0 6.5 2. 5. 0.0 0. 1. + 668. 1. 5. 22.0 2.5 0.0 4. 16.0 11.5 5. 1. 0.0 0. 1. + 692. 1. 5. 27.0 6.0 2.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 693. 1. 5. 22.0 2.5 0.0 3. 16.0 14.0 4. 4. 0.0 0. 1. + 698. 1. 5. 22.0 0.5 0.0 2. 12.0 20.0 2. 2. 0.0 0. 1. + 699. 1. 5. 32.0 6.0 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 704. 1. 5. 42.0 23.0 4.0 2. 16.0 40.0 5. 5. 0.0 0. 1. + 708. 1. 5. 42.0 16.5 1.0 3. 17.0 14.0 4. 5. 0.0 0. 1. + 709. 1. 5. 27.0 16.5 4.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 711. 1. 5. 27.0 6.0 2.0 1. 14.0 20.0 3. 4. 0.0 0. 1. + 718. 1. 5. 37.0 23.0 3.0 2. 14.0 11.5 3. 6. 0.0 0. 1. + 722. 1. 3. 27.0 6.0 2.0 2. 12.0 11.5 3. 5. 0.0 0. 1. + 724. 1. 5. 32.0 6.0 0.0 1. 16.0 40.0 5. 5. 0.0 0. 1. + 730. 1. 4. 32.0 9.0 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 731. 1. 4. 27.0 9.0 5.5 1. 12.0 9.0 4. 3. 0.0 0. 1. + 741. 1. 4. 22.0 2.5 1.0 1. 12.0 14.0 5. 4. 0.0 0. 1. + 742. 1. 4. 22.0 6.0 1.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 743. 1. 5. 42.0 23.0 3.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 747. 1. 4. 32.0 6.0 2.0 3. 14.0 14.0 4. 4. 0.0 0. 1. + 754. 1. 4. 22.0 2.5 0.0 1. 16.0 6.5 3. 4. 0.0 0. 1. + 761. 1. 4. 42.0 23.0 2.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 765. 1. 4. 37.0 16.5 2.0 3. 14.0 40.0 3. 5. 0.0 0. 1. + 767. 1. 5. 27.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 768. 1. 2. 42.0 23.0 5.5 1. 20.0 40.0 2. 5. 0.0 0. 1. + 770. 1. 4. 27.0 2.5 1.0 2. 14.0 20.0 5. 5. 0.0 0. 1. + 782. 1. 4. 27.0 16.5 4.0 2. 17.0 20.0 4. 4. 0.0 0. 1. + 792. 1. 4. 22.0 2.5 0.0 1. 14.0 14.0 3. 4. 0.0 0. 1. + 795. 1. 5. 32.0 9.0 2.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 797. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 798. 1. 5. 42.0 23.0 5.5 3. 16.0 20.0 2. 5. 0.0 0. 1. + 799. 1. 5. 27.0 2.5 0.0 4. 14.0 20.0 3. 5. 0.0 0. 1. + 804. 1. 5. 27.0 2.5 1.0 1. 14.0 20.0 4. 6. 0.0 0. 1. + 810. 1. 4. 22.0 0.5 0.0 3. 16.0 9.0 5. 1. 0.0 0. 1. + 811. 1. 4. 22.0 2.5 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 815. 1. 5. 22.0 0.5 0.0 1. 16.0 11.5 3. 6. 0.0 0. 1. + 823. 1. 3. 42.0 23.0 3.0 2. 16.0 20.0 4. 2. 0.0 0. 1. + 828. 1. 5. 27.0 2.5 1.0 2. 12.0 9.0 3. 2. 0.0 0. 1. + 829. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 3. 6. 0.0 0. 1. + 835. 1. 4. 27.0 6.0 2.0 3. 16.0 9.0 4. 4. 0.0 0. 1. + 842. 1. 3. 22.0 6.0 3.0 2. 14.0 6.5 3. 2. 0.0 0. 1. + 849. 1. 4. 22.0 2.5 0.0 4. 12.0 20.0 3. 2. 0.0 0. 1. + 852. 1. 5. 42.0 23.0 2.0 3. 12.0 6.5 3. 4. 0.0 0. 1. + 853. 1. 4. 27.0 2.5 0.0 2. 16.0 11.5 4. 5. 0.0 0. 1. + 862. 1. 5. 27.0 6.0 0.0 1. 12.0 20.0 3. 4. 0.0 0. 1. + 864. 1. 5. 22.0 0.5 0.0 2. 14.0 6.5 2. 4. 0.0 0. 1. + 867. 1. 5. 32.0 16.5 2.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 868. 1. 4. 27.0 2.5 0.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 871. 1. 5. 22.0 2.5 0.0 2. 17.0 20.0 4. 4. 0.0 0. 1. + 878. 1. 5. 32.0 9.0 2.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 879. 1. 5. 17.5 2.5 0.0 3. 12.0 6.5 3. 2. 0.0 0. 1. + 886. 1. 4. 22.0 2.5 0.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 890. 1. 5. 22.0 2.5 0.0 2. 16.0 14.0 4. 5. 0.0 0. 1. + 893. 1. 5. 32.0 9.0 2.0 3. 17.0 20.0 4. 2. 0.0 0. 1. + 897. 1. 5. 22.0 0.5 0.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 906. 1. 5. 37.0 16.5 3.0 4. 14.0 20.0 4. 2. 0.0 0. 1. + 912. 1. 5. 27.0 2.5 0.0 2. 16.0 14.0 2. 4. 0.0 0. 1. + 913. 1. 5. 37.0 13.0 3.0 3. 20.0 20.0 4. 4. 0.0 0. 1. + 914. 1. 4. 32.0 6.0 1.0 2. 14.0 20.0 5. 6. 0.0 0. 1. + 916. 1. 5. 27.0 6.0 0.0 1. 12.0 20.0 5. 5. 0.0 0. 1. + 918. 1. 5. 32.0 2.5 0.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 921. 1. 5. 32.0 16.5 2.0 3. 12.0 14.0 3. 3. 0.0 0. 1. + 926. 1. 4. 27.0 2.5 1.0 2. 17.0 20.0 4. 5. 0.0 0. 1. + 930. 1. 4. 27.0 6.0 1.0 3. 17.0 9.0 4. 4. 0.0 0. 1. + 931. 1. 2. 42.0 23.0 4.0 3. 9.0 11.5 2. 2. 0.0 0. 1. + 932. 1. 4. 22.0 2.5 0.0 2. 14.0 9.0 5. 4. 0.0 0. 1. + 936. 1. 4. 27.0 2.5 0.0 1. 16.0 4.0 4. 4. 0.0 0. 1. + 940. 1. 5. 27.0 6.0 0.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 941. 1. 3. 22.0 2.5 0.0 2. 16.0 20.0 3. 5. 0.0 0. 1. + 950. 1. 4. 22.0 2.5 0.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 951. 1. 4. 22.0 2.5 0.0 3. 17.0 20.0 5. 4. 0.0 0. 1. + 959. 1. 5. 42.0 23.0 5.5 4. 12.0 20.0 3. 5. 0.0 0. 1. + 962. 1. 4. 32.0 13.0 3.0 3. 12.0 14.0 3. 5. 0.0 0. 1. + 963. 1. 5. 22.0 2.5 0.0 3. 14.0 14.0 3. 5. 0.0 0. 1. + 965. 1. 5. 22.0 2.5 0.0 2. 16.0 11.5 3. 5. 0.0 0. 1. + 966. 1. 4. 27.0 2.5 1.0 2. 16.0 11.5 4. 5. 0.0 0. 1. + 973. 1. 5. 42.0 23.0 4.0 1. 17.0 40.0 3. 5. 0.0 0. 1. + 974. 1. 4. 32.0 13.0 3.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 975. 1. 3. 17.5 2.5 0.0 1. 16.0 14.0 4. 2. 0.0 0. 1. + 982. 1. 4. 42.0 23.0 3.0 3. 16.0 20.0 4. 2. 0.0 0. 1. + 983. 1. 5. 27.0 9.0 2.0 3. 12.0 14.0 3. 5. 0.0 0. 1. + 984. 1. 5. 22.0 2.5 1.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 986. 1. 4. 27.0 6.0 2.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 987. 1. 5. 32.0 9.0 0.0 3. 17.0 40.0 4. 5. 0.0 0. 1. + 996. 1. 5. 22.0 2.5 0.0 4. 12.0 20.0 3. 4. 0.0 0. 1. + 997. 1. 5. 37.0 16.5 3.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 1005. 1. 4. 22.0 6.0 2.0 3. 14.0 11.5 4. 2. 0.0 0. 1. + 1014. 1. 5. 27.0 2.5 0.0 4. 16.0 20.0 4. 2. 0.0 0. 1. + 1017. 1. 5. 37.0 13.0 2.0 2. 20.0 20.0 4. 5. 0.0 0. 1. + 1018. 1. 5. 27.0 13.0 2.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 1019. 1. 5. 22.0 2.5 0.0 3. 12.0 11.5 2. 5. 0.0 0. 1. + 1022. 1. 4. 22.0 6.0 1.0 2. 12.0 14.0 3. 5. 0.0 0. 1. + 1023. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 1025. 1. 3. 22.0 2.5 1.0 2. 12.0 6.5 2. 5. 0.0 0. 1. + 1027. 1. 5. 22.0 0.5 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 1031. 1. 5. 17.5 2.5 0.0 1. 14.0 6.5 3. 4. 0.0 0. 1. + 1032. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 1034. 1. 4. 22.0 0.5 0.0 3. 12.0 9.0 2. 5. 0.0 0. 1. + 1044. 1. 5. 27.0 2.5 0.0 1. 16.0 40.0 4. 5. 0.0 0. 1. + 1046. 1. 4. 22.0 2.5 0.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 1053. 1. 4. 27.0 6.0 0.0 1. 12.0 20.0 3. 2. 0.0 0. 1. + 1065. 1. 5. 22.0 2.5 2.0 1. 14.0 11.5 3. 4. 0.0 0. 1. + 1070. 1. 2. 27.0 6.0 1.0 2. 12.0 9.0 2. 2. 0.0 0. 1. + 1079. 1. 5. 22.0 0.5 0.0 2. 16.0 40.0 4. 5. 0.0 0. 1. + 1082. 1. 5. 22.0 6.0 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 1085. 1. 5. 27.0 2.5 0.0 3. 12.0 11.5 4. 2. 0.0 0. 1. + 1086. 1. 3. 32.0 16.5 4.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 1090. 1. 5. 27.0 2.5 0.0 1. 20.0 9.0 4. 4. 0.0 0. 1. + 1098. 1. 4. 27.0 2.5 0.0 2. 16.0 40.0 5. 6. 0.0 0. 1. + 1103. 1. 5. 22.0 2.5 0.0 4. 16.0 20.0 4. 5. 0.0 0. 1. + 1107. 1. 5. 22.0 2.5 0.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 1113. 1. 4. 22.0 2.5 0.0 2. 16.0 20.0 3. 2. 0.0 0. 1. + 1126. 1. 4. 37.0 16.5 3.0 2. 12.0 40.0 5. 4. 0.0 0. 1. + 1134. 1. 5. 27.0 6.0 2.0 4. 17.0 14.0 4. 5. 0.0 0. 1. + 1135. 1. 5. 22.0 2.5 1.0 2. 12.0 6.5 3. 2. 0.0 0. 1. + 1136. 1. 5. 32.0 16.5 4.0 3. 12.0 40.0 3. 3. 0.0 0. 1. + 1141. 1. 5. 22.0 0.5 0.0 4. 16.0 11.5 3. 2. 0.0 0. 1. + 1150. 1. 3. 27.0 9.0 1.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 1157. 1. 5. 37.0 23.0 3.0 4. 12.0 20.0 3. 2. 0.0 0. 1. + 1161. 1. 5. 22.0 2.5 0.0 3. 14.0 9.0 3. 5. 0.0 0. 1. + 1162. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 1163. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 1177. 1. 4. 32.0 13.0 1.0 3. 12.0 20.0 5. 5. 0.0 0. 1. + 1183. 1. 5. 32.0 2.5 1.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 1184. 1. 4. 22.0 2.5 0.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 1185. 1. 4. 22.0 6.0 1.0 2. 12.0 11.5 3. 5. 0.0 0. 1. + 1186. 1. 5. 17.5 2.5 1.0 3. 12.0 6.5 2. 2. 0.0 0. 1. + 1198. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 2. 4. 0.0 0. 1. + 1200. 1. 4. 27.0 0.5 0.0 3. 16.0 20.0 3. 6. 0.0 0. 1. + 1204. 1. 5. 22.0 2.5 0.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 1206. 1. 5. 22.0 2.5 0.0 1. 17.0 20.0 4. 4. 0.0 0. 1. + 1210. 1. 5. 32.0 2.5 0.0 3. 14.0 40.0 3. 4. 0.0 0. 1. + 1221. 1. 5. 27.0 2.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 1225. 1. 4. 27.0 6.0 1.0 2. 12.0 6.5 3. 4. 0.0 0. 1. + 1227. 1. 3. 22.0 2.5 0.0 2. 14.0 20.0 2. 5. 0.0 0. 1. + 1231. 1. 5. 27.0 6.0 2.0 3. 12.0 11.5 4. 2. 0.0 0. 1. + 1237. 1. 4. 22.0 0.5 0.0 1. 12.0 11.5 2. 2. 0.0 0. 1. + 1239. 1. 5. 42.0 23.0 3.0 1. 20.0 40.0 4. 6. 0.0 0. 1. + 1245. 1. 3. 22.0 2.5 1.0 2. 12.0 6.5 3. 4. 0.0 0. 1. + 1257. 1. 5. 27.0 6.0 0.0 2. 16.0 40.0 5. 5. 0.0 0. 1. + 1258. 1. 4. 22.0 2.5 0.0 3. 12.0 6.5 2. 5. 0.0 0. 1. + 1264. 1. 5. 22.0 6.0 0.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 1270. 1. 4. 22.0 2.5 0.0 3. 14.0 11.5 5. 4. 0.0 0. 1. + 1272. 1. 5. 17.5 2.5 0.0 2. 12.0 9.0 2. 5. 0.0 0. 1. + 1276. 1. 4. 27.0 2.5 0.0 1. 17.0 9.0 2. 6. 0.0 0. 1. + 1287. 1. 3. 42.0 23.0 5.5 3. 14.0 20.0 3. 5. 0.0 0. 1. + 1299. 1. 4. 32.0 6.0 2.0 1. 16.0 14.0 4. 4. 0.0 0. 1. + 1303. 1. 5. 22.0 6.0 2.0 2. 14.0 6.5 3. 2. 0.0 0. 1. + 1305. 1. 5. 22.0 6.0 3.0 3. 12.0 6.5 3. 4. 0.0 0. 1. + 1310. 1. 5. 22.0 2.5 0.0 2. 12.0 20.0 2. 2. 0.0 0. 1. + 1312. 1. 4. 42.0 23.0 2.0 3. 16.0 40.0 4. 5. 0.0 0. 1. + 1322. 1. 4. 27.0 2.5 2.0 3. 20.0 20.0 4. 5. 0.0 0. 1. + 1324. 1. 4. 27.0 2.5 1.0 2. 14.0 9.0 3. 5. 0.0 0. 1. + 1326. 1. 4. 32.0 13.0 2.0 4. 14.0 11.5 4. 3. 0.0 0. 1. + 1327. 1. 5. 22.0 0.5 0.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 1335. 1. 3. 42.0 23.0 2.0 2. 12.0 14.0 3. 5. 0.0 0. 1. + 1340. 1. 5. 42.0 23.0 3.0 4. 14.0 20.0 3. 5. 0.0 0. 1. + 1343. 1. 5. 22.0 0.5 0.0 2. 20.0 14.0 4. 4. 0.0 0. 1. + 1344. 1. 5. 22.0 2.5 0.0 1. 14.0 14.0 3. 3. 0.0 0. 1. + 1347. 1. 4. 27.0 6.0 1.0 1. 20.0 20.0 4. 2. 0.0 0. 1. + 1348. 1. 5. 32.0 9.0 2.0 3. 14.0 11.5 4. 1. 0.0 0. 1. + 1357. 1. 4. 17.5 0.5 0.0 1. 12.0 14.0 3. 4. 0.0 0. 1. + 1366. 1. 5. 42.0 6.0 0.0 2. 17.0 40.0 4. 5. 0.0 0. 1. + 1371. 1. 5. 42.0 23.0 2.0 2. 12.0 40.0 3. 6. 0.0 0. 1. + 1373. 1. 4. 27.0 13.0 1.0 2. 12.0 14.0 5. 2. 0.0 0. 1. + 1375. 1. 4. 27.0 2.5 0.0 1. 14.0 20.0 3. 4. 0.0 0. 1. + 1376. 1. 3. 27.0 6.0 2.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 1377. 1. 5. 22.0 6.0 0.0 1. 14.0 40.0 5. 5. 0.0 0. 1. + 1380. 1. 4. 37.0 13.0 2.0 3. 20.0 20.0 4. 4. 0.0 0. 1. + 1382. 1. 4. 27.0 2.5 0.0 1. 16.0 14.0 4. 1. 0.0 0. 1. + 1385. 1. 5. 27.0 9.0 2.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 1386. 1. 4. 32.0 2.5 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 1390. 1. 4. 27.0 2.5 0.0 4. 14.0 20.0 3. 6. 0.0 0. 1. + 1397. 1. 5. 27.0 6.0 3.0 1. 16.0 20.0 3. 5. 0.0 0. 1. + 1401. 1. 5. 32.0 16.5 4.0 3. 14.0 11.5 5. 2. 0.0 0. 1. + 1405. 1. 5. 17.5 0.5 0.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 1409. 1. 4. 42.0 23.0 4.0 2. 12.0 11.5 2. 5. 0.0 0. 1. + 1417. 1. 5. 27.0 6.0 0.0 4. 16.0 20.0 5. 5. 0.0 0. 1. + 1418. 1. 4. 27.0 2.5 0.0 1. 16.0 14.0 4. 5. 0.0 0. 1. + 1423. 1. 5. 37.0 16.5 2.0 1. 16.0 40.0 4. 5. 0.0 0. 1. + 1429. 1. 5. 22.0 2.5 1.0 3. 17.0 11.5 4. 2. 0.0 0. 1. + 1430. 1. 4. 17.5 2.5 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 1437. 1. 3. 27.0 6.0 2.0 3. 14.0 14.0 3. 5. 0.0 0. 1. + 1440. 1. 3. 37.0 16.5 3.0 3. 12.0 20.0 4. 5. 0.0 0. 1. + 1451. 1. 4. 27.0 2.5 0.0 4. 14.0 14.0 3. 4. 0.0 0. 1. + 1454. 1. 4. 37.0 13.0 2.0 2. 12.0 11.5 2. 4. 0.0 0. 1. + 1456. 1. 4. 32.0 9.0 1.0 3. 17.0 14.0 4. 4. 0.0 0. 1. + 1457. 1. 5. 27.0 6.0 1.0 2. 16.0 11.5 2. 6. 0.0 0. 1. + 1461. 1. 4. 22.0 2.5 1.0 3. 12.0 9.0 2. 4. 0.0 0. 1. + 1468. 1. 2. 42.0 23.0 5.5 1. 12.0 20.0 5. 5. 0.0 0. 1. + 1472. 1. 5. 42.0 16.5 5.5 3. 17.0 40.0 4. 5. 0.0 0. 1. + 1474. 1. 5. 42.0 23.0 4.0 3. 12.0 40.0 5. 6. 0.0 0. 1. + 1475. 1. 5. 22.0 0.5 0.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 1479. 1. 5. 22.0 2.5 0.0 1. 16.0 20.0 5. 5. 0.0 0. 1. + 1481. 1. 3. 32.0 13.0 3.0 4. 14.0 20.0 3. 5. 0.0 0. 1. + 1485. 1. 3. 32.0 13.0 3.0 3. 16.0 20.0 4. 2. 0.0 0. 1. + 1490. 1. 5. 32.0 9.0 2.0 3. 16.0 40.0 4. 6. 0.0 0. 1. + 1493. 1. 5. 27.0 0.5 0.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 1497. 1. 5. 32.0 16.5 3.0 4. 14.0 20.0 2. 4. 0.0 0. 1. + 1500. 1. 3. 22.0 2.5 0.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 1502. 1. 5. 27.0 13.0 3.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 1507. 1. 4. 27.0 2.5 0.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 1511. 1. 4. 42.0 13.0 0.0 3. 20.0 20.0 4. 4. 0.0 0. 1. + 1524. 1. 5. 32.0 13.0 3.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 1525. 1. 5. 27.0 13.0 3.0 3. 12.0 11.5 3. 5. 0.0 0. 1. + 1528. 1. 4. 32.0 13.0 3.0 4. 14.0 14.0 3. 4. 0.0 0. 1. + 1533. 1. 4. 27.0 0.5 1.0 3. 17.0 11.5 4. 4. 0.0 0. 1. + 1541. 1. 5. 27.0 6.0 0.0 2. 12.0 11.5 3. 5. 0.0 0. 1. + 1542. 1. 3. 27.0 6.0 2.0 2. 14.0 20.0 4. 3. 0.0 0. 1. + 1544. 1. 3. 22.0 2.5 0.0 2. 16.0 20.0 5. 4. 0.0 0. 1. + 1546. 1. 3. 32.0 0.5 0.0 3. 20.0 40.0 6. 5. 0.0 0. 1. + 1547. 1. 5. 42.0 23.0 4.0 4. 20.0 40.0 4. 4. 0.0 0. 1. + 1550. 1. 3. 22.0 0.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 1557. 1. 5. 27.0 9.0 2.0 4. 16.0 20.0 2. 5. 0.0 0. 1. + 1566. 1. 5. 22.0 2.5 0.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 1574. 1. 4. 42.0 16.5 2.0 3. 12.0 14.0 2. 2. 0.0 0. 1. + 1584. 1. 4. 42.0 16.5 3.0 2. 20.0 40.0 4. 4. 0.0 0. 1. + 1586. 1. 5. 42.0 23.0 4.0 2. 20.0 40.0 6. 5. 0.0 0. 1. + 1588. 1. 4. 32.0 16.5 3.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 1589. 1. 4. 32.0 6.0 1.0 1. 17.0 20.0 4. 4. 0.0 0. 1. + 1592. 1. 2. 32.0 16.5 2.0 4. 12.0 11.5 3. 2. 0.0 0. 1. + 1593. 1. 5. 32.0 9.0 2.0 4. 20.0 20.0 4. 6. 0.0 0. 1. + 1594. 1. 5. 22.0 2.5 0.0 2. 16.0 6.5 3. 2. 0.0 0. 1. + 1597. 1. 5. 27.0 2.5 1.0 1. 16.0 14.0 4. 4. 0.0 0. 1. + 1606. 1. 4. 27.0 9.0 1.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 1607. 1. 2. 32.0 16.5 3.0 4. 12.0 11.5 3. 5. 0.0 0. 1. + 1608. 1. 4. 32.0 13.0 2.0 1. 20.0 20.0 4. 6. 0.0 0. 1. + 1626. 1. 5. 27.0 2.5 0.0 2. 16.0 40.0 4. 5. 0.0 0. 1. + 1632. 1. 4. 37.0 13.0 2.0 4. 14.0 20.0 4. 5. 0.0 0. 1. + 1633. 1. 4. 22.0 0.5 0.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 1640. 1. 4. 27.0 9.0 2.0 2. 14.0 14.0 4. 4. 0.0 0. 1. + 1641. 1. 5. 27.0 6.0 0.0 1. 16.0 20.0 5. 5. 0.0 0. 1. + 1646. 1. 4. 32.0 13.0 2.0 3. 14.0 14.0 4. 5. 0.0 0. 1. + 1651. 1. 2. 42.0 23.0 2.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 1653. 1. 4. 22.0 0.5 0.0 2. 14.0 20.0 3. 2. 0.0 0. 1. + 1657. 1. 5. 42.0 23.0 2.0 3. 12.0 40.0 3. 5. 0.0 0. 1. + 1659. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 4. 6. 0.0 0. 1. + 1664. 1. 5. 32.0 13.0 0.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 1665. 1. 5. 22.0 0.5 0.0 2. 16.0 9.0 4. 2. 0.0 0. 1. + 1669. 1. 4. 32.0 13.0 0.0 1. 12.0 40.0 5. 5. 0.0 0. 1. + 1670. 1. 4. 37.0 9.0 0.0 1. 16.0 20.0 3. 5. 0.0 0. 1. + 1671. 1. 5. 37.0 16.5 5.5 3. 14.0 20.0 4. 4. 0.0 0. 1. + 1687. 1. 4. 27.0 6.0 0.0 3. 14.0 40.0 5. 6. 0.0 0. 1. + 1691. 1. 5. 42.0 23.0 1.0 1. 17.0 20.0 3. 2. 0.0 0. 1. + 1692. 1. 4. 22.0 2.5 0.0 1. 17.0 20.0 1. 3. 0.0 0. 1. + 1693. 1. 4. 27.0 9.0 0.0 2. 12.0 40.0 3. 5. 0.0 0. 1. + 1696. 1. 4. 32.0 9.0 1.0 3. 14.0 11.5 3. 6. 0.0 0. 1. + 1697. 1. 1. 22.0 2.5 1.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 1698. 1. 4. 27.0 2.5 1.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 1699. 1. 4. 27.0 6.0 2.0 3. 16.0 20.0 4. 2. 0.0 0. 1. + 1700. 1. 2. 27.0 6.0 1.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 1702. 1. 2. 37.0 13.0 1.0 1. 12.0 9.0 2. 3. 0.0 0. 1. + 1705. 1. 5. 22.0 2.5 0.0 4. 14.0 20.0 5. 5. 0.0 0. 1. + 1706. 1. 5. 22.0 2.5 0.0 2. 17.0 20.0 4. 2. 0.0 0. 1. + 1715. 1. 4. 27.0 6.0 1.0 2. 14.0 9.0 4. 2. 0.0 0. 1. + 1716. 1. 4. 22.0 6.0 1.0 4. 14.0 9.0 3. 4. 0.0 0. 1. + 1719. 1. 4. 27.0 9.0 2.0 3. 12.0 11.5 4. 5. 0.0 0. 1. + 1728. 1. 4. 32.0 13.0 3.0 1. 16.0 40.0 4. 6. 0.0 0. 1. + 1733. 1. 5. 32.0 16.5 1.0 3. 12.0 14.0 2. 2. 0.0 0. 1. + 1738. 1. 4. 42.0 23.0 4.0 4. 14.0 11.5 5. 5. 0.0 0. 1. + 1748. 1. 5. 32.0 9.0 4.0 3. 14.0 14.0 4. 6. 0.0 0. 1. + 1751. 1. 3. 22.0 2.5 1.0 2. 14.0 20.0 3. 3. 0.0 0. 1. + 1752. 1. 5. 37.0 16.5 4.0 3. 17.0 40.0 5. 6. 0.0 0. 1. + 1754. 1. 5. 22.0 2.5 0.0 4. 12.0 20.0 3. 4. 0.0 0. 1. + 1758. 1. 5. 32.0 13.0 2.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 1762. 1. 3. 42.0 16.5 3.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 1763. 1. 4. 37.0 13.0 3.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 1764. 1. 4. 22.0 2.5 0.0 3. 14.0 14.0 3. 6. 0.0 0. 1. + 1766. 1. 5. 42.0 23.0 5.5 4. 17.0 40.0 4. 6. 0.0 0. 1. + 1771. 1. 5. 22.0 0.5 2.0 1. 12.0 11.5 2. 4. 0.0 0. 1. + 1775. 1. 5. 37.0 16.5 3.0 1. 16.0 20.0 3. 4. 0.0 0. 1. + 1776. 1. 5. 32.0 9.0 3.0 3. 14.0 20.0 2. 5. 0.0 0. 1. + 1778. 1. 5. 27.0 6.0 1.0 3. 20.0 20.0 4. 6. 0.0 0. 1. + 1781. 1. 5. 27.0 6.0 2.0 3. 17.0 11.5 4. 1. 0.0 0. 1. + 1783. 1. 5. 32.0 6.0 1.0 4. 16.0 11.5 4. 6. 0.0 0. 1. + 1784. 1. 4. 27.0 2.5 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 1785. 1. 5. 22.0 2.5 0.0 1. 12.0 14.0 3. 3. 0.0 0. 1. + 1787. 1. 5. 22.0 2.5 0.0 1. 12.0 20.0 3. 3. 0.0 0. 1. + 1788. 1. 3. 42.0 23.0 4.0 3. 14.0 40.0 3. 5. 0.0 0. 1. + 1794. 1. 5. 27.0 6.0 1.0 1. 16.0 11.5 5. 2. 0.0 0. 1. + 1798. 1. 3. 27.0 6.0 0.0 2. 17.0 40.0 4. 6. 0.0 0. 1. + 1801. 1. 5. 27.0 6.0 2.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 1803. 1. 5. 27.0 6.0 0.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 1806. 1. 4. 27.0 2.5 0.0 1. 12.0 20.0 3. 4. 0.0 0. 1. + 1808. 1. 5. 32.0 9.0 2.0 1. 14.0 14.0 5. 5. 0.0 0. 1. + 1809. 1. 4. 22.0 2.5 0.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 1810. 1. 4. 22.0 0.5 0.0 3. 14.0 11.5 3. 3. 0.0 0. 1. + 1814. 1. 5. 32.0 6.0 2.0 4. 12.0 14.0 3. 5. 0.0 0. 1. + 1816. 1. 5. 42.0 23.0 5.5 2. 12.0 20.0 2. 2. 0.0 0. 1. + 1817. 1. 5. 22.0 2.5 0.0 4. 16.0 6.5 4. 4. 0.0 0. 1. + 1818. 1. 4. 22.0 2.5 1.0 3. 14.0 11.5 5. 1. 0.0 0. 1. + 1824. 1. 5. 32.0 6.0 0.0 3. 16.0 14.0 4. 4. 0.0 0. 1. + 1825. 1. 4. 27.0 9.0 2.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 1828. 1. 4. 42.0 23.0 4.0 4. 16.0 14.0 4. 4. 0.0 0. 1. + 1833. 1. 4. 27.0 6.0 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 1835. 1. 4. 22.0 2.5 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 1840. 1. 5. 27.0 0.5 0.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 1841. 1. 2. 27.0 2.5 0.0 3. 14.0 11.5 4. 1. 0.0 0. 1. + 1860. 1. 4. 27.0 6.0 0.0 2. 14.0 20.0 3. 6. 0.0 0. 1. + 1866. 1. 5. 27.0 2.5 0.0 2. 17.0 20.0 3. 3. 0.0 0. 1. + 1870. 1. 5. 32.0 13.0 2.0 2. 14.0 40.0 2. 4. 0.0 0. 1. + 1875. 1. 5. 22.0 2.5 0.0 4. 12.0 6.5 2. 4. 0.0 0. 1. + 1876. 1. 4. 42.0 16.5 2.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 1879. 1. 5. 27.0 13.0 2.0 3. 12.0 11.5 3. 5. 0.0 0. 1. + 1881. 1. 5. 22.0 2.5 1.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 1887. 1. 5. 37.0 16.5 4.0 3. 12.0 40.0 2. 6. 0.0 0. 1. + 1893. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 3. 4. 0.0 0. 1. + 1902. 1. 4. 22.0 2.5 0.0 2. 14.0 9.0 3. 4. 0.0 0. 1. + 1903. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 2. 5. 0.0 0. 1. + 1905. 1. 5. 27.0 2.5 0.0 2. 17.0 20.0 4. 2. 0.0 0. 1. + 1908. 1. 4. 27.0 2.5 0.0 2. 17.0 14.0 4. 4. 0.0 0. 1. + 1913. 1. 4. 42.0 23.0 2.0 4. 12.0 20.0 4. 2. 0.0 0. 1. + 1915. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 3. 5. 0.0 0. 1. + 1919. 1. 4. 37.0 13.0 1.0 3. 12.0 40.0 2. 2. 0.0 0. 1. + 1927. 1. 4. 27.0 6.0 2.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 1929. 1. 5. 27.0 6.0 1.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 1932. 1. 3. 42.0 23.0 5.5 2. 14.0 40.0 4. 5. 0.0 0. 1. + 1943. 1. 5. 27.0 6.0 0.0 3. 20.0 40.0 4. 4. 0.0 0. 1. + 1944. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 2. 0.0 0. 1. + 1945. 1. 4. 27.0 2.5 0.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 1948. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 1949. 1. 2. 32.0 2.5 1.0 2. 12.0 14.0 5. 2. 0.0 0. 1. + 1955. 1. 4. 27.0 2.5 1.0 2. 14.0 14.0 4. 4. 0.0 0. 1. + 1956. 1. 4. 27.0 0.5 0.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 1959. 1. 4. 32.0 9.0 1.0 3. 17.0 14.0 4. 4. 0.0 0. 1. + 1962. 1. 4. 27.0 9.0 2.0 2. 17.0 20.0 4. 5. 0.0 0. 1. + 1963. 1. 5. 22.0 2.5 0.0 4. 14.0 6.5 4. 4. 0.0 0. 1. + 1985. 1. 4. 22.0 2.5 0.0 2. 12.0 14.0 2. 2. 0.0 0. 1. + 1996. 1. 5. 27.0 6.0 2.0 2. 16.0 20.0 4. 1. 0.0 0. 1. + 1997. 1. 4. 27.0 6.0 0.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 1999. 1. 4. 32.0 13.0 2.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 2009. 1. 4. 37.0 16.5 2.0 1. 20.0 40.0 4. 6. 0.0 0. 1. + 2013. 1. 4. 42.0 23.0 3.0 2. 12.0 11.5 3. 5. 0.0 0. 1. + 2017. 1. 1. 42.0 23.0 5.5 3. 14.0 20.0 2. 5. 0.0 0. 1. + 2018. 1. 4. 27.0 2.5 0.0 1. 12.0 20.0 3. 2. 0.0 0. 1. + 2029. 1. 4. 27.0 6.0 1.0 3. 14.0 11.5 2. 5. 0.0 0. 1. + 2030. 1. 3. 42.0 16.5 5.5 2. 14.0 40.0 3. 6. 0.0 0. 1. + 2033. 1. 5. 22.0 2.5 0.0 2. 16.0 6.5 3. 1. 0.0 0. 1. + 2040. 1. 4. 27.0 2.5 1.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 2043. 1. 5. 37.0 16.5 4.0 3. 16.0 40.0 4. 5. 0.0 0. 1. + 2045. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 3. 0.0 0. 1. + 2049. 1. 4. 27.0 2.5 0.0 3. 14.0 11.5 3. 1. 0.0 0. 1. + 2057. 1. 4. 22.0 2.5 0.0 1. 14.0 11.5 2. 2. 0.0 0. 1. + 2059. 1. 5. 22.0 2.5 0.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 2068. 1. 5. 22.0 0.5 0.0 3. 12.0 14.0 3. 3. 0.0 0. 1. + 2069. 1. 3. 42.0 23.0 2.0 1. 20.0 40.0 4. 4. 0.0 0. 1. + 2071. 1. 5. 32.0 16.5 1.0 3. 17.0 40.0 5. 4. 0.0 0. 1. + 2074. 1. 5. 27.0 9.0 1.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 2081. 1. 5. 27.0 2.5 1.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 2083. 1. 4. 27.0 6.0 0.0 2. 16.0 14.0 3. 3. 0.0 0. 1. + 2084. 1. 5. 22.0 0.5 0.0 3. 14.0 9.0 3. 2. 0.0 0. 1. + 2085. 1. 4. 32.0 9.0 0.0 1. 17.0 20.0 4. 4. 0.0 0. 1. + 2089. 1. 3. 37.0 16.5 3.0 3. 12.0 11.5 3. 3. 0.0 0. 1. + 2091. 1. 5. 27.0 2.5 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 2092. 1. 5. 22.0 2.5 0.0 4. 14.0 40.0 3. 2. 0.0 0. 1. + 2094. 1. 4. 32.0 13.0 3.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 2097. 1. 5. 42.0 23.0 5.5 4. 17.0 40.0 5. 5. 0.0 0. 1. + 2103. 1. 4. 27.0 2.5 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 2117. 1. 5. 42.0 16.5 4.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 2118. 1. 3. 27.0 2.5 0.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 2119. 1. 5. 27.0 6.0 2.0 4. 16.0 40.0 4. 6. 0.0 0. 1. + 2121. 1. 3. 22.0 0.5 0.0 3. 12.0 9.0 5. 4. 0.0 0. 1. + 2127. 1. 4. 42.0 23.0 3.0 2. 14.0 40.0 3. 4. 0.0 0. 1. + 2131. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 2148. 1. 5. 22.0 0.5 0.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 2151. 1. 5. 22.0 2.5 0.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 2154. 1. 5. 37.0 16.5 2.0 1. 12.0 40.0 3. 5. 0.0 0. 1. + 2162. 1. 3. 22.0 6.0 2.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 2171. 1. 2. 42.0 23.0 3.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 2172. 1. 4. 32.0 2.5 0.0 1. 17.0 40.0 5. 5. 0.0 0. 1. + 2175. 1. 5. 22.0 2.5 0.0 3. 16.0 11.5 3. 4. 0.0 0. 1. + 2181. 1. 4. 22.0 0.5 0.0 3. 14.0 9.0 3. 4. 0.0 0. 1. + 2184. 1. 5. 27.0 6.0 1.0 1. 14.0 14.0 4. 4. 0.0 0. 1. + 2186. 1. 4. 27.0 2.5 0.0 3. 16.0 40.0 4. 4. 0.0 0. 1. + 2188. 1. 5. 32.0 6.0 3.0 1. 16.0 20.0 3. 5. 0.0 0. 1. + 2190. 1. 5. 32.0 16.5 2.0 1. 12.0 20.0 2. 3. 0.0 0. 1. + 2193. 1. 4. 42.0 16.5 3.0 2. 14.0 40.0 3. 2. 0.0 0. 1. + 2194. 1. 5. 22.0 0.5 0.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 2197. 1. 5. 17.5 0.5 0.0 2. 12.0 4.0 2. 4. 0.0 0. 1. + 2198. 1. 5. 42.0 23.0 3.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 2200. 1. 2. 22.0 0.5 0.0 1. 14.0 20.0 3. 2. 0.0 0. 1. + 2201. 1. 5. 27.0 2.5 0.0 1. 16.0 40.0 4. 5. 0.0 0. 1. + 2204. 1. 5. 27.0 16.5 3.0 1. 12.0 11.5 3. 5. 0.0 0. 1. + 2207. 1. 5. 22.0 0.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 2211. 1. 4. 32.0 9.0 2.0 3. 20.0 40.0 6. 5. 0.0 0. 1. + 2213. 1. 4. 22.0 0.5 0.0 2. 14.0 6.5 2. 1. 0.0 0. 1. + 2214. 1. 4. 27.0 6.0 2.0 4. 14.0 9.0 3. 5. 0.0 0. 1. + 2215. 1. 1. 27.0 9.0 4.0 1. 12.0 9.0 4. 2. 0.0 0. 1. + 2224. 1. 4. 22.0 2.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 2227. 1. 5. 22.0 2.5 0.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 2233. 1. 5. 22.0 2.5 1.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 2237. 1. 5. 17.5 0.5 0.0 3. 12.0 11.5 5. 2. 0.0 0. 1. + 2239. 1. 4. 32.0 9.0 2.0 3. 14.0 14.0 2. 4. 0.0 0. 1. + 2245. 1. 5. 27.0 6.0 0.0 3. 17.0 20.0 5. 5. 0.0 0. 1. + 2246. 1. 5. 22.0 0.5 0.0 2. 12.0 9.0 3. 2. 0.0 0. 1. + 2250. 1. 5. 32.0 9.0 0.0 3. 12.0 40.0 3. 4. 0.0 0. 1. + 2252. 1. 3. 27.0 9.0 3.0 1. 12.0 20.0 3. 4. 0.0 0. 1. + 2254. 1. 5. 22.0 2.5 0.0 1. 12.0 4.0 3. 1. 0.0 0. 1. + 2261. 1. 5. 42.0 16.5 4.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 2262. 1. 5. 27.0 2.5 1.0 2. 16.0 40.0 4. 5. 0.0 0. 1. + 2263. 1. 3. 22.0 2.5 0.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 2264. 1. 5. 22.0 2.5 1.0 1. 14.0 11.5 3. 5. 0.0 0. 1. + 2284. 1. 4. 27.0 16.5 3.0 1. 16.0 20.0 5. 5. 0.0 0. 1. + 2285. 1. 5. 27.0 2.5 1.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 2295. 1. 3. 27.0 2.5 1.0 1. 17.0 11.5 2. 5. 0.0 0. 1. + 2297. 1. 5. 22.0 2.5 0.0 3. 14.0 6.5 3. 4. 0.0 0. 1. + 2301. 1. 5. 37.0 16.5 2.0 3. 20.0 40.0 6. 6. 0.0 0. 1. + 2321. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 5. 4. 0.0 0. 1. + 2322. 1. 5. 27.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 2326. 1. 4. 22.0 2.5 0.0 3. 16.0 6.5 3. 1. 0.0 0. 1. + 2327. 1. 4. 27.0 6.0 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 2332. 1. 1. 27.0 6.0 1.0 2. 20.0 40.0 4. 5. 0.0 0. 1. + 2335. 1. 5. 22.0 0.5 0.0 3. 14.0 14.0 2. 2. 0.0 0. 1. + 2345. 1. 5. 32.0 13.0 4.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 2347. 1. 5. 22.0 6.0 0.0 2. 12.0 40.0 3. 5. 0.0 0. 1. + 2351. 1. 5. 37.0 16.5 2.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 2353. 1. 3. 22.0 6.0 2.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 2356. 1. 4. 22.0 0.5 0.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 2361. 1. 5. 27.0 2.5 0.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 2366. 1. 4. 22.0 2.5 0.0 4. 14.0 14.0 3. 4. 0.0 0. 1. + 2367. 1. 5. 22.0 2.5 0.0 1. 12.0 11.5 3. 2. 0.0 0. 1. + 2368. 1. 5. 27.0 6.0 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 2369. 1. 3. 27.0 0.5 0.0 3. 20.0 40.0 6. 6. 0.0 0. 1. + 2371. 1. 4. 32.0 13.0 2.0 3. 12.0 20.0 5. 5. 0.0 0. 1. + 2373. 1. 3. 22.0 2.5 0.0 2. 16.0 14.0 3. 6. 0.0 0. 1. + 2377. 1. 5. 32.0 2.5 0.0 2. 20.0 20.0 4. 4. 0.0 0. 1. + 2382. 1. 4. 22.0 2.5 0.0 3. 17.0 40.0 4. 5. 0.0 0. 1. + 2385. 1. 5. 22.0 2.5 0.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 2387. 1. 3. 22.0 0.5 0.0 3. 16.0 20.0 3. 4. 0.0 0. 1. + 2389. 1. 5. 27.0 6.0 1.0 1. 14.0 14.0 3. 4. 0.0 0. 1. + 2394. 1. 5. 32.0 16.5 1.0 3. 12.0 9.0 2. 2. 0.0 0. 1. + 2397. 1. 3. 37.0 23.0 3.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 2399. 1. 5. 22.0 2.5 0.0 1. 20.0 20.0 4. 5. 0.0 0. 1. + 2401. 1. 5. 27.0 6.0 0.0 1. 12.0 14.0 3. 4. 0.0 0. 1. + 2405. 1. 5. 27.0 6.0 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 2408. 1. 3. 37.0 23.0 5.5 1. 12.0 14.0 3. 4. 0.0 0. 1. + 2410. 1. 3. 42.0 16.5 2.0 2. 12.0 40.0 2. 6. 0.0 0. 1. + 2411. 1. 4. 27.0 6.0 2.0 2. 12.0 20.0 2. 2. 0.0 0. 1. + 2417. 1. 5. 22.0 2.5 0.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 2418. 1. 5. 22.0 0.5 0.0 3. 12.0 9.0 2. 5. 0.0 0. 1. + 2423. 1. 4. 42.0 23.0 2.0 3. 12.0 20.0 2. 5. 0.0 0. 1. + 2425. 1. 5. 37.0 16.5 2.0 1. 14.0 40.0 5. 6. 0.0 0. 1. + 2428. 1. 5. 42.0 23.0 4.0 4. 12.0 40.0 3. 5. 0.0 0. 1. + 2429. 1. 2. 22.0 2.5 0.0 3. 14.0 9.0 3. 4. 0.0 0. 1. + 2433. 1. 4. 27.0 6.0 2.0 1. 14.0 20.0 3. 4. 0.0 0. 1. + 2434. 1. 3. 22.0 0.5 0.0 2. 17.0 14.0 3. 5. 0.0 0. 1. + 2435. 1. 3. 27.0 6.0 2.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 2445. 1. 5. 32.0 13.0 3.0 2. 20.0 40.0 3. 6. 0.0 0. 1. + 2454. 1. 5. 42.0 23.0 4.0 4. 16.0 20.0 2. 5. 0.0 0. 1. + 2461. 1. 4. 22.0 2.5 0.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 2470. 1. 5. 27.0 6.0 1.0 3. 20.0 40.0 4. 6. 0.0 0. 1. + 2471. 1. 2. 42.0 23.0 5.5 3. 12.0 20.0 2. 5. 0.0 0. 1. + 2472. 1. 5. 22.0 6.0 0.0 4. 14.0 6.5 3. 2. 0.0 0. 1. + 2478. 1. 5. 22.0 6.0 1.0 1. 12.0 11.5 3. 5. 0.0 0. 1. + 2480. 1. 5. 27.0 2.5 0.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 2492. 1. 5. 32.0 13.0 3.0 4. 16.0 14.0 4. 6. 0.0 0. 1. + 2493. 1. 5. 27.0 0.5 0.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 2501. 1. 4. 37.0 16.5 2.0 2. 12.0 20.0 2. 2. 0.0 0. 1. + 2505. 1. 4. 32.0 2.5 0.0 3. 20.0 20.0 4. 4. 0.0 0. 1. + 2506. 1. 5. 32.0 2.5 1.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 2513. 1. 4. 27.0 2.5 0.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 2519. 1. 5. 27.0 6.0 1.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 2520. 1. 4. 27.0 6.0 1.0 1. 20.0 20.0 4. 4. 0.0 0. 1. + 2522. 1. 5. 22.0 2.5 0.0 1. 12.0 20.0 3. 5. 0.0 0. 1. + 2524. 1. 5. 32.0 16.5 2.0 3. 17.0 11.5 3. 5. 0.0 0. 1. + 2535. 1. 5. 22.0 2.5 0.0 1. 16.0 20.0 5. 5. 0.0 0. 1. + 2537. 1. 5. 27.0 6.0 1.0 3. 20.0 20.0 6. 6. 0.0 0. 1. + 2542. 1. 3. 27.0 6.0 2.0 3. 20.0 20.0 4. 5. 0.0 0. 1. + 2544. 1. 5. 27.0 9.0 1.0 2. 16.0 11.5 4. 4. 0.0 0. 1. + 2545. 1. 3. 42.0 23.0 4.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 2549. 1. 5. 27.0 6.0 2.0 2. 20.0 14.0 4. 3. 0.0 0. 1. + 2555. 1. 4. 27.0 6.0 2.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 2558. 1. 5. 42.0 23.0 3.0 2. 12.0 20.0 5. 4. 0.0 0. 1. + 2563. 1. 4. 22.0 2.5 0.0 3. 16.0 14.0 3. 5. 0.0 0. 1. + 2569. 1. 5. 32.0 16.5 3.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 2573. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 1. 5. 0.0 0. 1. + 2574. 1. 5. 27.0 6.0 0.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 2576. 1. 5. 22.0 2.5 0.0 1. 12.0 9.0 2. 1. 0.0 0. 1. + 2580. 1. 4. 27.0 6.0 1.0 1. 14.0 20.0 4. 4. 0.0 0. 1. + 2581. 1. 4. 22.0 2.5 0.0 3. 16.0 11.5 2. 4. 0.0 0. 1. + 2582. 1. 4. 22.0 2.5 0.0 4. 12.0 20.0 3. 2. 0.0 0. 1. + 2586. 1. 5. 17.5 2.5 0.0 1. 12.0 9.0 2. 4. 0.0 0. 1. + 2592. 1. 4. 37.0 16.5 3.0 3. 12.0 11.5 4. 5. 0.0 0. 1. + 2593. 1. 4. 27.0 6.0 1.0 2. 12.0 11.5 4. 4. 0.0 0. 1. + 2595. 1. 3. 37.0 13.0 0.0 2. 14.0 20.0 5. 6. 0.0 0. 1. + 2597. 1. 4. 37.0 16.5 4.0 3. 12.0 14.0 2. 4. 0.0 0. 1. + 2598. 1. 4. 27.0 2.5 0.0 1. 14.0 40.0 5. 6. 0.0 0. 1. + 2599. 1. 5. 42.0 23.0 2.0 2. 12.0 40.0 5. 5. 0.0 0. 1. + 2600. 1. 5. 22.0 2.5 0.0 4. 14.0 11.5 2. 2. 0.0 0. 1. + 2601. 1. 5. 22.0 2.5 0.0 3. 16.0 9.0 3. 1. 0.0 0. 1. + 2610. 1. 5. 27.0 0.5 0.0 3. 20.0 40.0 4. 4. 0.0 0. 1. + 2616. 1. 5. 27.0 6.0 1.0 2. 20.0 14.0 4. 6. 0.0 0. 1. + 2619. 1. 4. 22.0 2.5 0.0 2. 16.0 9.0 5. 2. 0.0 0. 1. + 2622. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 2. 3. 0.0 0. 1. + 2623. 1. 5. 22.0 0.5 0.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 2631. 1. 4. 37.0 9.0 5.5 4. 12.0 20.0 4. 2. 0.0 0. 1. + 2646. 1. 3. 27.0 0.5 0.0 2. 12.0 9.0 3. 2. 0.0 0. 1. + 2671. 1. 5. 27.0 2.5 0.0 2. 20.0 20.0 4. 5. 0.0 0. 1. + 2674. 1. 3. 22.0 2.5 0.0 1. 14.0 14.0 3. 3. 0.0 0. 1. + 2680. 1. 3. 42.0 16.5 4.0 4. 16.0 6.5 3. 1. 0.0 0. 1. + 2684. 1. 5. 32.0 13.0 3.0 2. 12.0 40.0 2. 5. 0.0 0. 1. + 2688. 1. 2. 32.0 13.0 2.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 2696. 1. 5. 22.0 2.5 0.0 2. 14.0 6.5 3. 1. 0.0 0. 1. + 2697. 1. 3. 27.0 2.5 1.0 1. 14.0 11.5 5. 4. 0.0 0. 1. + 2702. 1. 4. 22.0 0.5 0.0 4. 12.0 14.0 3. 2. 0.0 0. 1. + 2713. 1. 4. 27.0 9.0 2.0 3. 12.0 11.5 5. 4. 0.0 0. 1. + 2715. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 2718. 1. 5. 27.0 6.0 2.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 2723. 1. 4. 22.0 2.5 0.0 1. 12.0 6.5 3. 2. 0.0 0. 1. + 2726. 1. 5. 22.0 0.5 0.0 2. 12.0 20.0 3. 3. 0.0 0. 1. + 2729. 1. 5. 42.0 23.0 3.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 2740. 1. 3. 22.0 2.5 1.0 3. 14.0 9.0 3. 2. 0.0 0. 1. + 2742. 1. 4. 27.0 16.5 2.0 3. 12.0 40.0 4. 4. 0.0 0. 1. + 2744. 1. 5. 17.5 0.5 0.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 2745. 1. 5. 27.0 2.5 0.0 3. 17.0 40.0 4. 5. 0.0 0. 1. + 2748. 1. 4. 27.0 9.0 2.0 4. 16.0 20.0 4. 5. 0.0 0. 1. + 2751. 1. 5. 22.0 2.5 0.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 2754. 1. 5. 37.0 16.5 2.0 2. 12.0 20.0 3. 6. 0.0 0. 1. + 2755. 1. 5. 32.0 23.0 2.0 3. 14.0 20.0 5. 5. 0.0 0. 1. + 2758. 1. 5. 22.0 2.5 1.0 4. 14.0 4.0 4. 1. 0.0 0. 1. + 2760. 1. 4. 27.0 2.5 0.0 3. 17.0 14.0 4. 6. 0.0 0. 1. + 2761. 1. 5. 22.0 0.5 0.0 2. 12.0 11.5 4. 4. 0.0 0. 1. + 2764. 1. 4. 37.0 16.5 2.0 3. 20.0 20.0 4. 6. 0.0 0. 1. + 2765. 1. 4. 27.0 2.5 0.0 3. 14.0 14.0 4. 1. 0.0 0. 1. + 2766. 1. 4. 22.0 2.5 0.0 3. 16.0 14.0 4. 3. 0.0 0. 1. + 2769. 1. 4. 22.0 2.5 0.0 2. 12.0 20.0 2. 5. 0.0 0. 1. + 2774. 1. 5. 42.0 23.0 2.0 3. 14.0 40.0 3. 6. 0.0 0. 1. + 2775. 1. 5. 22.0 0.5 0.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 2783. 1. 5. 27.0 6.0 3.0 2. 16.0 40.0 4. 5. 0.0 0. 1. + 2784. 1. 4. 32.0 16.5 3.0 2. 16.0 40.0 2. 6. 0.0 0. 1. + 2789. 1. 4. 27.0 0.5 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 2793. 1. 2. 22.0 0.5 0.0 4. 12.0 20.0 3. 3. 0.0 0. 1. + 2797. 1. 4. 22.0 2.5 0.0 3. 17.0 11.5 4. 2. 0.0 0. 1. + 2798. 1. 5. 27.0 2.5 0.0 3. 16.0 14.0 4. 6. 0.0 0. 1. + 2812. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 2813. 1. 4. 27.0 2.5 3.0 2. 12.0 9.0 3. 6. 0.0 0. 1. + 2825. 1. 4. 32.0 6.0 1.0 4. 20.0 11.5 5. 5. 0.0 0. 1. + 2832. 1. 2. 27.0 2.5 0.0 3. 14.0 9.0 3. 3. 0.0 0. 1. + 2836. 1. 4. 42.0 23.0 4.0 2. 12.0 40.0 2. 6. 0.0 0. 1. + 2837. 1. 5. 42.0 16.5 1.0 3. 12.0 20.0 5. 3. 0.0 0. 1. + 2847. 1. 3. 27.0 9.0 2.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 2852. 1. 4. 42.0 23.0 2.0 2. 12.0 11.5 2. 4. 0.0 0. 1. + 2853. 1. 5. 42.0 23.0 2.0 2. 12.0 14.0 4. 4. 0.0 0. 1. + 2855. 1. 5. 22.0 2.5 0.0 3. 16.0 9.0 4. 4. 0.0 0. 1. + 2858. 1. 3. 42.0 23.0 3.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 2861. 1. 5. 22.0 2.5 0.0 4. 17.0 20.0 3. 2. 0.0 0. 1. + 2864. 1. 2. 22.0 2.5 0.0 3. 14.0 11.5 3. 2. 0.0 0. 1. + 2867. 1. 5. 27.0 6.0 1.0 4. 20.0 20.0 4. 4. 0.0 0. 1. + 2870. 1. 4. 37.0 16.5 5.5 2. 14.0 20.0 3. 4. 0.0 0. 1. + 2879. 1. 5. 32.0 13.0 3.0 3. 12.0 14.0 2. 4. 0.0 0. 1. + 2887. 1. 5. 27.0 6.0 2.0 3. 16.0 20.0 3. 4. 0.0 0. 1. + 2889. 1. 4. 27.0 6.0 1.0 1. 20.0 40.0 4. 4. 0.0 0. 1. + 2899. 1. 5. 22.0 2.5 0.0 1. 12.0 9.0 3. 2. 0.0 0. 1. + 2903. 1. 5. 27.0 2.5 0.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 2904. 1. 5. 22.0 6.0 0.0 3. 12.0 9.0 3. 4. 0.0 0. 1. + 2905. 1. 4. 22.0 2.5 0.0 3. 12.0 9.0 5. 5. 0.0 0. 1. + 2906. 1. 4. 22.0 2.5 0.0 3. 16.0 11.5 4. 6. 0.0 0. 1. + 2908. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 2911. 1. 5. 27.0 6.0 0.0 2. 16.0 14.0 4. 6. 0.0 0. 1. + 2920. 1. 2. 37.0 16.5 3.0 4. 12.0 9.0 2. 5. 0.0 0. 1. + 2923. 1. 5. 22.0 6.0 2.0 2. 12.0 9.0 5. 2. 0.0 0. 1. + 2928. 1. 4. 27.0 2.5 1.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 2930. 1. 5. 22.0 2.5 0.0 2. 17.0 20.0 3. 2. 0.0 0. 1. + 2936. 1. 5. 42.0 23.0 3.0 3. 17.0 40.0 4. 5. 0.0 0. 1. + 2948. 1. 4. 22.0 2.5 0.0 3. 12.0 6.5 4. 1. 0.0 0. 1. + 2949. 1. 4. 32.0 13.0 2.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 2951. 1. 5. 27.0 2.5 0.0 3. 20.0 20.0 5. 6. 0.0 0. 1. + 2956. 1. 5. 22.0 0.5 0.0 3. 16.0 11.5 3. 2. 0.0 0. 1. + 2959. 1. 4. 22.0 2.5 0.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 2960. 1. 4. 27.0 9.0 2.0 1. 14.0 11.5 3. 2. 0.0 0. 1. + 2966. 1. 4. 27.0 6.0 1.0 1. 20.0 20.0 4. 4. 0.0 0. 1. + 2969. 1. 5. 27.0 2.5 2.0 1. 12.0 9.0 2. 4. 0.0 0. 1. + 2974. 1. 4. 37.0 9.0 1.0 3. 20.0 20.0 4. 2. 0.0 0. 1. + 2976. 1. 4. 22.0 0.5 0.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 2979. 1. 5. 32.0 16.5 2.0 1. 14.0 40.0 5. 5. 0.0 0. 1. + 2983. 1. 3. 27.0 6.0 0.0 1. 12.0 20.0 3. 5. 0.0 0. 1. + 2985. 1. 4. 27.0 6.0 1.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 2988. 1. 5. 32.0 13.0 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 2993. 1. 3. 27.0 2.5 0.0 3. 12.0 6.5 3. 4. 0.0 0. 1. + 2997. 1. 5. 22.0 2.5 0.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 2999. 1. 4. 32.0 6.0 1.0 3. 17.0 11.5 4. 4. 0.0 0. 1. + 3002. 1. 3. 27.0 2.5 0.0 1. 20.0 20.0 4. 4. 0.0 0. 1. + 3003. 1. 4. 42.0 23.0 2.0 4. 14.0 40.0 3. 5. 0.0 0. 1. + 3007. 1. 2. 27.0 2.5 1.0 2. 14.0 14.0 3. 2. 0.0 0. 1. + 3010. 1. 4. 42.0 23.0 3.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 3011. 1. 5. 27.0 6.0 2.0 2. 17.0 20.0 4. 5. 0.0 0. 1. + 3013. 1. 5. 22.0 0.5 0.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 3015. 1. 5. 27.0 6.0 2.0 3. 12.0 11.5 3. 3. 0.0 0. 1. + 3016. 1. 3. 22.0 2.5 0.0 1. 14.0 20.0 5. 4. 0.0 0. 1. + 3018. 1. 1. 42.0 23.0 3.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 3024. 1. 4. 42.0 16.5 3.0 2. 17.0 20.0 5. 5. 0.0 0. 1. + 3025. 1. 1. 27.0 2.5 0.0 1. 12.0 11.5 3. 1. 0.0 0. 1. + 3029. 1. 5. 22.0 0.5 0.0 1. 17.0 11.5 4. 4. 0.0 0. 1. + 3030. 1. 5. 37.0 16.5 2.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 3044. 1. 4. 27.0 6.0 2.0 3. 16.0 14.0 4. 5. 0.0 0. 1. + 3045. 1. 5. 22.0 2.5 0.0 4. 14.0 20.0 5. 5. 0.0 0. 1. + 3046. 1. 5. 22.0 2.5 0.0 4. 17.0 20.0 4. 5. 0.0 0. 1. + 3048. 1. 3. 27.0 6.0 2.0 3. 14.0 20.0 5. 2. 0.0 0. 1. + 3049. 1. 4. 27.0 2.5 0.0 3. 16.0 20.0 3. 6. 0.0 0. 1. + 3064. 1. 5. 27.0 2.5 0.0 1. 12.0 11.5 3. 5. 0.0 0. 1. + 3067. 1. 5. 17.5 2.5 2.0 1. 12.0 6.5 2. 4. 0.0 0. 1. + 3071. 1. 4. 32.0 16.5 2.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 3072. 1. 5. 27.0 2.5 0.0 1. 16.0 40.0 4. 5. 0.0 0. 1. + 3077. 1. 3. 42.0 23.0 2.0 3. 12.0 40.0 2. 5. 0.0 0. 1. + 3083. 1. 4. 22.0 2.5 0.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 3084. 1. 3. 22.0 2.5 1.0 2. 12.0 9.0 3. 2. 0.0 0. 1. + 3086. 1. 3. 27.0 2.5 0.0 3. 16.0 20.0 4. 6. 0.0 0. 1. + 3090. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 3095. 1. 5. 32.0 13.0 2.0 4. 20.0 11.5 4. 6. 0.0 0. 1. + 3101. 1. 5. 22.0 2.5 0.0 1. 16.0 6.5 4. 6. 0.0 0. 1. + 3108. 1. 4. 32.0 9.0 2.0 3. 14.0 9.0 4. 2. 0.0 0. 1. + 3112. 1. 4. 42.0 23.0 5.5 3. 12.0 11.5 2. 4. 0.0 0. 1. + 3115. 1. 3. 27.0 0.5 0.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 3119. 1. 5. 42.0 23.0 2.0 2. 12.0 14.0 5. 2. 0.0 0. 1. + 3120. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 2. 4. 0.0 0. 1. + 3123. 1. 4. 22.0 2.5 2.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 3139. 1. 3. 27.0 6.0 2.0 2. 12.0 40.0 4. 5. 0.0 0. 1. + 3141. 1. 5. 27.0 2.5 2.0 3. 14.0 11.5 2. 4. 0.0 0. 1. + 3146. 1. 5. 22.0 0.5 0.0 2. 16.0 4.0 3. 4. 0.0 0. 1. + 3147. 1. 3. 32.0 6.0 2.0 2. 14.0 20.0 4. 6. 0.0 0. 1. + 3153. 1. 4. 27.0 2.5 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 3156. 1. 5. 37.0 23.0 5.5 2. 12.0 14.0 5. 2. 0.0 0. 1. + 3157. 1. 2. 27.0 6.0 0.0 1. 17.0 40.0 4. 4. 0.0 0. 1. + 3161. 1. 4. 32.0 16.5 4.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 3166. 1. 5. 22.0 2.5 2.0 2. 12.0 11.5 2. 5. 0.0 0. 1. + 3167. 1. 4. 22.0 2.5 0.0 1. 16.0 11.5 4. 4. 0.0 0. 1. + 3170. 1. 5. 27.0 2.5 0.0 3. 16.0 40.0 5. 5. 0.0 0. 1. + 3171. 1. 5. 22.0 2.5 0.0 1. 12.0 20.0 3. 4. 0.0 0. 1. + 3175. 1. 4. 22.0 2.5 1.0 4. 14.0 6.5 3. 5. 0.0 0. 1. + 3181. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 3183. 1. 5. 22.0 6.0 1.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 3184. 1. 3. 27.0 6.0 0.0 3. 14.0 20.0 5. 2. 0.0 0. 1. + 3193. 1. 5. 37.0 16.5 4.0 3. 16.0 40.0 4. 5. 0.0 0. 1. + 3198. 1. 4. 27.0 6.0 2.0 4. 14.0 14.0 4. 5. 0.0 0. 1. + 3200. 1. 4. 22.0 2.5 0.0 2. 17.0 14.0 5. 5. 0.0 0. 1. + 3201. 1. 5. 22.0 2.5 0.0 2. 16.0 11.5 4. 2. 0.0 0. 1. + 3206. 1. 3. 32.0 16.5 2.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 3208. 1. 5. 27.0 0.5 0.0 2. 16.0 40.0 4. 6. 0.0 0. 1. + 3210. 1. 5. 27.0 6.0 3.0 2. 14.0 11.5 2. 5. 0.0 0. 1. + 3211. 1. 5. 22.0 2.5 0.0 2. 16.0 14.0 2. 2. 0.0 0. 1. + 3214. 1. 4. 22.0 2.5 2.0 2. 16.0 20.0 5. 5. 0.0 0. 1. + 3215. 1. 4. 32.0 9.0 0.0 1. 20.0 40.0 4. 5. 0.0 0. 1. + 3229. 1. 3. 22.0 2.5 0.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 3235. 1. 4. 37.0 9.0 1.0 3. 20.0 14.0 5. 4. 0.0 0. 1. + 3239. 1. 5. 27.0 2.5 0.0 3. 20.0 14.0 4. 4. 0.0 0. 1. + 3241. 1. 4. 32.0 13.0 2.0 4. 12.0 11.5 3. 3. 0.0 0. 1. + 3242. 1. 4. 27.0 2.5 1.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 3245. 1. 4. 22.0 2.5 0.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 3247. 1. 5. 27.0 6.0 2.0 4. 12.0 4.0 3. 2. 0.0 0. 1. + 3251. 1. 4. 32.0 13.0 1.0 3. 14.0 11.5 2. 4. 0.0 0. 1. + 3255. 1. 5. 22.0 0.5 0.0 1. 16.0 14.0 2. 3. 0.0 0. 1. + 3261. 1. 5. 22.0 2.5 0.0 2. 12.0 20.0 2. 2. 0.0 0. 1. + 3268. 1. 3. 42.0 23.0 5.5 2. 14.0 20.0 2. 5. 0.0 0. 1. + 3274. 1. 4. 27.0 6.0 2.0 1. 14.0 9.0 3. 3. 0.0 0. 1. + 3275. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 3276. 1. 5. 27.0 6.0 0.0 1. 12.0 20.0 3. 2. 0.0 0. 1. + 3278. 1. 2. 32.0 13.0 2.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 3286. 1. 5. 27.0 9.0 2.0 3. 12.0 11.5 2. 3. 0.0 0. 1. + 3291. 1. 4. 22.0 2.5 2.0 3. 14.0 14.0 4. 4. 0.0 0. 1. + 3292. 1. 5. 37.0 2.5 0.0 3. 14.0 20.0 3. 3. 0.0 0. 1. + 3293. 1. 5. 37.0 16.5 2.0 3. 12.0 14.0 3. 3. 0.0 0. 1. + 3294. 1. 5. 27.0 6.0 2.0 2. 14.0 11.5 4. 4. 0.0 0. 1. + 3297. 1. 4. 27.0 6.0 0.0 3. 20.0 20.0 4. 5. 0.0 0. 1. + 3298. 1. 5. 32.0 13.0 3.0 3. 12.0 14.0 4. 5. 0.0 0. 1. + 3299. 1. 4. 27.0 2.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 3304. 1. 3. 22.0 2.5 0.0 2. 16.0 11.5 6. 3. 0.0 0. 1. + 3308. 1. 5. 32.0 9.0 3.0 2. 17.0 20.0 4. 4. 0.0 0. 1. + 3312. 1. 2. 27.0 6.0 1.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 3316. 1. 5. 22.0 2.5 0.0 1. 16.0 40.0 5. 5. 0.0 0. 1. + 3317. 1. 5. 22.0 0.5 0.0 2. 16.0 20.0 3. 4. 0.0 0. 1. + 3330. 1. 5. 27.0 2.5 0.0 4. 20.0 20.0 4. 5. 0.0 0. 1. + 3338. 1. 5. 22.0 0.5 0.0 3. 14.0 14.0 3. 2. 0.0 0. 1. + 3340. 1. 5. 22.0 2.5 0.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 3344. 1. 5. 27.0 6.0 0.0 2. 20.0 20.0 4. 6. 0.0 0. 1. + 3346. 1. 5. 17.5 0.5 0.0 3. 14.0 6.5 3. 4. 0.0 0. 1. + 3348. 1. 3. 32.0 16.5 3.0 2. 16.0 20.0 5. 4. 0.0 0. 1. + 3349. 1. 3. 37.0 16.5 4.0 2. 14.0 14.0 4. 3. 0.0 0. 1. + 3352. 1. 5. 27.0 6.0 1.0 3. 14.0 14.0 4. 2. 0.0 0. 1. + 3355. 1. 4. 32.0 16.5 4.0 4. 16.0 40.0 4. 4. 0.0 0. 1. + 3366. 1. 4. 22.0 2.5 0.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 3367. 1. 4. 27.0 2.5 1.0 4. 14.0 11.5 3. 2. 0.0 0. 1. + 3369. 1. 3. 42.0 23.0 3.0 1. 14.0 14.0 3. 4. 0.0 0. 1. + 3372. 1. 4. 27.0 9.0 3.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 3374. 1. 4. 27.0 9.0 2.0 1. 20.0 20.0 4. 5. 0.0 0. 1. + 3379. 1. 4. 27.0 0.5 0.0 1. 14.0 20.0 4. 2. 0.0 0. 1. + 3388. 1. 5. 42.0 16.5 2.0 2. 12.0 11.5 3. 3. 0.0 0. 1. + 3393. 1. 4. 22.0 2.5 0.0 1. 16.0 11.5 4. 4. 0.0 0. 1. + 3395. 1. 4. 37.0 16.5 2.0 1. 17.0 40.0 4. 6. 0.0 0. 1. + 3396. 1. 5. 32.0 16.5 2.0 1. 12.0 40.0 3. 5. 0.0 0. 1. + 3400. 1. 5. 22.0 2.5 0.0 4. 14.0 20.0 3. 5. 0.0 0. 1. + 3419. 1. 5. 27.0 2.5 2.0 3. 20.0 11.5 2. 4. 0.0 0. 1. + 3424. 1. 5. 22.0 2.5 0.0 3. 14.0 6.5 3. 3. 0.0 0. 1. + 3425. 1. 4. 27.0 6.0 1.0 2. 20.0 20.0 4. 4. 0.0 0. 1. + 3427. 1. 5. 22.0 2.5 0.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 3431. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 3. 3. 0.0 0. 1. + 3433. 1. 4. 22.0 2.5 1.0 1. 14.0 40.0 3. 5. 0.0 0. 1. + 3437. 1. 5. 22.0 0.5 0.0 1. 12.0 14.0 3. 2. 0.0 0. 1. + 3438. 1. 4. 22.0 2.5 1.0 3. 12.0 9.0 4. 2. 0.0 0. 1. + 3439. 1. 5. 42.0 23.0 2.0 3. 12.0 20.0 4. 4. 0.0 0. 1. + 3444. 1. 4. 27.0 2.5 0.0 4. 16.0 40.0 5. 6. 0.0 0. 1. + 3448. 1. 5. 32.0 13.0 4.0 3. 16.0 14.0 4. 2. 0.0 0. 1. + 3462. 1. 5. 27.0 6.0 2.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 3466. 1. 4. 27.0 6.0 0.0 1. 14.0 20.0 3. 4. 0.0 0. 1. + 3470. 1. 4. 17.5 2.5 0.0 1. 14.0 9.0 3. 4. 0.0 0. 1. + 3473. 1. 5. 22.0 0.5 0.0 2. 16.0 20.0 3. 4. 0.0 0. 1. + 3474. 1. 5. 27.0 9.0 2.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 3477. 1. 5. 22.0 2.5 1.0 3. 12.0 9.0 3. 1. 0.0 0. 1. + 3478. 1. 5. 27.0 2.5 0.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 3480. 1. 5. 42.0 16.5 2.0 3. 12.0 11.5 5. 4. 0.0 0. 1. + 3486. 1. 5. 17.5 2.5 0.0 2. 12.0 20.0 2. 2. 0.0 0. 1. + 3488. 1. 5. 22.0 2.5 3.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 3495. 1. 5. 32.0 9.0 3.0 4. 17.0 40.0 4. 6. 0.0 0. 1. + 3496. 1. 5. 22.0 2.5 2.0 3. 14.0 11.5 5. 4. 0.0 0. 1. + 3497. 1. 4. 37.0 23.0 5.5 2. 12.0 20.0 3. 2. 0.0 0. 1. + 3502. 1. 5. 27.0 2.5 0.0 4. 16.0 9.0 5. 3. 0.0 0. 1. + 3503. 1. 4. 22.0 2.5 0.0 1. 14.0 14.0 3. 4. 0.0 0. 1. + 3504. 1. 4. 22.0 2.5 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 3506. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 3514. 1. 5. 27.0 6.0 2.0 2. 14.0 14.0 5. 4. 0.0 0. 1. + 3523. 1. 5. 27.0 2.5 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 3524. 1. 4. 32.0 2.5 0.0 3. 17.0 11.5 4. 4. 0.0 0. 1. + 3552. 1. 5. 32.0 6.0 2.0 4. 20.0 20.0 4. 4. 0.0 0. 1. + 3553. 1. 5. 27.0 13.0 3.0 1. 12.0 11.5 3. 4. 0.0 0. 1. + 3559. 1. 5. 32.0 16.5 3.0 3. 12.0 20.0 4. 2. 0.0 0. 1. + 3566. 1. 5. 17.5 0.5 0.0 1. 12.0 14.0 2. 4. 0.0 0. 1. + 3572. 1. 4. 27.0 2.5 0.0 1. 20.0 20.0 6. 6. 0.0 0. 1. + 3582. 1. 4. 22.0 2.5 0.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 3585. 1. 4. 22.0 0.5 0.0 3. 12.0 20.0 5. 2. 0.0 0. 1. + 3586. 1. 5. 42.0 23.0 1.0 2. 12.0 14.0 2. 2. 0.0 0. 1. + 3594. 1. 3. 22.0 0.5 0.0 1. 12.0 20.0 3. 3. 0.0 0. 1. + 3597. 1. 5. 32.0 9.0 2.0 2. 20.0 14.0 4. 5. 0.0 0. 1. + 3599. 1. 4. 32.0 16.5 2.0 2. 14.0 11.5 5. 4. 0.0 0. 1. + 3610. 1. 5. 27.0 6.0 2.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 3612. 1. 5. 27.0 2.5 0.0 1. 16.0 20.0 3. 5. 0.0 0. 1. + 3621. 1. 5. 22.0 0.5 0.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 3623. 1. 4. 27.0 2.5 0.0 3. 17.0 14.0 4. 1. 0.0 0. 1. + 3625. 1. 5. 27.0 2.5 0.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 3630. 1. 5. 42.0 23.0 2.0 3. 9.0 6.5 2. 4. 0.0 0. 1. + 3631. 1. 5. 27.0 2.5 0.0 3. 14.0 40.0 3. 4. 0.0 0. 1. + 3637. 1. 5. 22.0 0.5 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 3644. 1. 5. 37.0 13.0 2.0 2. 17.0 20.0 4. 5. 0.0 0. 1. + 3646. 1. 4. 42.0 23.0 2.0 1. 12.0 20.0 3. 4. 0.0 0. 1. + 3648. 1. 4. 27.0 6.0 1.0 3. 16.0 11.5 4. 5. 0.0 0. 1. + 3651. 1. 5. 42.0 23.0 2.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 3652. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 3654. 1. 5. 32.0 13.0 2.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 3661. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 3672. 1. 4. 32.0 9.0 2.0 1. 12.0 9.0 2. 2. 0.0 0. 1. + 3680. 1. 4. 22.0 2.5 0.0 1. 12.0 11.5 3. 2. 0.0 0. 1. + 3681. 1. 4. 22.0 6.0 2.0 2. 14.0 20.0 3. 6. 0.0 0. 1. + 3686. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 3692. 1. 4. 22.0 2.5 0.0 3. 14.0 11.5 4. 4. 0.0 0. 1. + 3694. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 5. 5. 0.0 0. 1. + 3697. 1. 5. 22.0 6.0 0.0 3. 12.0 20.0 5. 5. 0.0 0. 1. + 3699. 1. 3. 42.0 23.0 2.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 3702. 1. 5. 22.0 2.5 0.0 1. 12.0 9.0 2. 5. 0.0 0. 1. + 3706. 1. 4. 22.0 2.5 0.0 2. 14.0 20.0 3. 6. 0.0 0. 1. + 3707. 1. 5. 22.0 2.5 0.0 1. 16.0 20.0 5. 5. 0.0 0. 1. + 3709. 1. 4. 17.5 2.5 0.0 2. 14.0 6.5 3. 3. 0.0 0. 1. + 3710. 1. 4. 37.0 13.0 0.0 3. 20.0 40.0 5. 5. 0.0 0. 1. + 3712. 1. 5. 27.0 2.5 0.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 3720. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 3722. 1. 4. 42.0 23.0 2.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 3723. 1. 5. 22.0 2.5 1.0 1. 12.0 11.5 2. 4. 0.0 0. 1. + 3726. 1. 4. 27.0 6.0 1.0 2. 16.0 20.0 3. 3. 0.0 0. 1. + 3730. 1. 4. 37.0 16.5 2.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 3736. 1. 4. 37.0 13.0 5.5 2. 14.0 40.0 2. 6. 0.0 0. 1. + 3745. 1. 5. 22.0 0.5 0.0 3. 16.0 9.0 3. 4. 0.0 0. 1. + 3756. 1. 4. 27.0 2.5 1.0 2. 12.0 11.5 3. 5. 0.0 0. 1. + 3760. 1. 4. 22.0 2.5 0.0 3. 14.0 40.0 3. 4. 0.0 0. 1. + 3761. 1. 5. 27.0 6.0 2.0 2. 16.0 20.0 4. 6. 0.0 0. 1. + 3763. 1. 5. 22.0 0.5 0.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 3766. 1. 5. 27.0 2.5 0.0 1. 12.0 11.5 2. 2. 0.0 0. 1. + 3767. 1. 4. 22.0 2.5 1.0 1. 12.0 14.0 3. 5. 0.0 0. 1. + 3773. 1. 4. 27.0 0.5 0.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 3790. 1. 4. 22.0 2.5 0.0 2. 16.0 11.5 4. 1. 0.0 0. 1. + 3797. 1. 3. 32.0 13.0 1.0 1. 12.0 20.0 3. 2. 0.0 0. 1. + 3799. 1. 5. 32.0 6.0 2.0 2. 16.0 14.0 4. 5. 0.0 0. 1. + 3801. 1. 5. 42.0 23.0 4.0 3. 14.0 14.0 2. 2. 0.0 0. 1. + 3803. 1. 4. 22.0 2.5 1.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 3805. 1. 5. 32.0 2.5 1.0 1. 12.0 14.0 4. 5. 0.0 0. 1. + 3808. 1. 4. 32.0 13.0 2.0 1. 16.0 20.0 3. 6. 0.0 0. 1. + 3811. 1. 5. 27.0 6.0 2.0 2. 14.0 40.0 4. 5. 0.0 0. 1. + 3827. 1. 5. 32.0 16.5 4.0 4. 14.0 11.5 2. 3. 0.0 0. 1. + 3829. 1. 4. 22.0 0.5 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 3834. 1. 4. 22.0 2.5 1.0 1. 14.0 11.5 3. 4. 0.0 0. 1. + 3835. 1. 4. 32.0 9.0 2.0 3. 16.0 40.0 4. 4. 0.0 0. 1. + 3839. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 1. 1. 0.0 0. 1. + 3846. 1. 4. 27.0 2.5 2.0 3. 16.0 14.0 2. 4. 0.0 0. 1. + 3848. 1. 3. 27.0 16.5 2.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 3852. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 3. 2. 0.0 0. 1. + 3856. 1. 3. 27.0 2.5 1.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 3867. 1. 4. 22.0 2.5 0.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 3871. 1. 5. 42.0 23.0 5.5 3. 12.0 9.0 3. 2. 0.0 0. 1. + 3872. 1. 4. 37.0 13.0 2.0 2. 17.0 20.0 4. 5. 0.0 0. 1. + 3874. 1. 5. 32.0 2.5 0.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 3881. 1. 3. 37.0 23.0 3.0 3. 14.0 14.0 4. 5. 0.0 0. 1. + 3886. 1. 5. 22.0 0.5 0.0 3. 16.0 20.0 4. 2. 0.0 0. 1. + 3890. 1. 5. 32.0 16.5 3.0 4. 16.0 9.0 4. 2. 0.0 0. 1. + 3893. 1. 5. 22.0 2.5 0.0 2. 12.0 9.0 4. 4. 0.0 0. 1. + 3906. 1. 5. 37.0 16.5 2.0 4. 20.0 20.0 6. 4. 0.0 0. 1. + 3908. 1. 5. 27.0 6.0 1.0 2. 16.0 20.0 4. 2. 0.0 0. 1. + 3924. 1. 4. 37.0 16.5 2.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 3932. 1. 5. 42.0 23.0 3.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 3934. 1. 4. 37.0 16.5 3.0 2. 16.0 20.0 3. 4. 0.0 0. 1. + 3936. 1. 4. 37.0 13.0 2.0 3. 14.0 14.0 4. 2. 0.0 0. 1. + 3938. 1. 5. 22.0 2.5 0.0 1. 12.0 20.0 5. 4. 0.0 0. 1. + 3949. 1. 5. 22.0 0.5 0.0 4. 16.0 20.0 4. 6. 0.0 0. 1. + 3954. 1. 5. 22.0 6.0 1.0 1. 14.0 40.0 2. 4. 0.0 0. 1. + 3956. 1. 3. 22.0 2.5 1.0 2. 12.0 9.0 4. 4. 0.0 0. 1. + 3957. 1. 5. 27.0 2.5 0.0 2. 14.0 40.0 4. 6. 0.0 0. 1. + 3959. 1. 5. 22.0 2.5 0.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 3965. 1. 4. 42.0 23.0 2.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 3972. 1. 4. 22.0 2.5 0.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 3987. 1. 5. 22.0 0.5 1.0 2. 12.0 14.0 2. 2. 0.0 0. 1. + 3998. 1. 3. 27.0 6.0 2.0 2. 14.0 11.5 2. 4. 0.0 0. 1. + 3999. 1. 5. 22.0 2.5 0.0 3. 14.0 11.5 3. 3. 0.0 0. 1. + 4002. 1. 5. 22.0 0.5 0.0 3. 14.0 14.0 3. 5. 0.0 0. 1. + 4008. 1. 5. 42.0 23.0 3.0 3. 12.0 14.0 3. 2. 0.0 0. 1. + 4017. 1. 4. 27.0 2.5 0.0 1. 16.0 20.0 3. 3. 0.0 0. 1. + 4018. 1. 5. 27.0 2.5 0.0 2. 14.0 11.5 2. 2. 0.0 0. 1. + 4022. 1. 5. 27.0 9.0 2.0 4. 12.0 11.5 2. 4. 0.0 0. 1. + 4024. 1. 4. 22.0 2.5 0.0 4. 16.0 11.5 4. 5. 0.0 0. 1. + 4027. 1. 4. 27.0 6.0 2.0 1. 16.0 14.0 4. 5. 0.0 0. 1. + 4028. 1. 5. 27.0 6.0 1.0 3. 16.0 11.5 4. 5. 0.0 0. 1. + 4032. 1. 5. 32.0 16.5 3.0 3. 12.0 20.0 2. 3. 0.0 0. 1. + 4036. 1. 4. 17.5 2.5 0.0 2. 12.0 11.5 3. 5. 0.0 0. 1. + 4046. 1. 4. 32.0 2.5 0.0 3. 17.0 20.0 4. 2. 0.0 0. 1. + 4059. 1. 3. 32.0 16.5 3.0 3. 14.0 40.0 5. 6. 0.0 0. 1. + 4061. 1. 5. 22.0 2.5 1.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 4065. 1. 4. 32.0 23.0 4.0 4. 14.0 20.0 4. 2. 0.0 0. 1. + 4066. 1. 5. 22.0 2.5 0.0 1. 16.0 14.0 4. 5. 0.0 0. 1. + 4067. 1. 5. 22.0 0.5 0.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 4068. 1. 3. 22.0 2.5 0.0 2. 16.0 20.0 4. 6. 0.0 0. 1. + 4070. 1. 4. 37.0 6.0 0.0 3. 20.0 20.0 4. 3. 0.0 0. 1. + 4072. 1. 4. 22.0 0.5 0.0 3. 12.0 14.0 2. 2. 0.0 0. 1. + 4074. 1. 4. 32.0 9.0 0.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 4080. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 2. 2. 0.0 0. 1. + 4082. 1. 4. 32.0 13.0 3.0 3. 14.0 11.5 4. 4. 0.0 0. 1. + 4086. 1. 4. 22.0 2.5 1.0 4. 14.0 11.5 3. 5. 0.0 0. 1. + 4093. 1. 4. 22.0 2.5 0.0 3. 12.0 20.0 2. 4. 0.0 0. 1. + 4096. 1. 5. 17.5 2.5 0.0 3. 12.0 4.0 3. 2. 0.0 0. 1. + 4102. 1. 5. 27.0 2.5 1.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 4107. 1. 5. 22.0 2.5 1.0 1. 12.0 11.5 3. 4. 0.0 0. 1. + 4108. 1. 4. 27.0 6.0 1.0 3. 14.0 11.5 3. 3. 0.0 0. 1. + 4109. 1. 4. 42.0 23.0 2.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 4113. 1. 4. 37.0 16.5 3.0 2. 16.0 11.5 4. 4. 0.0 0. 1. + 4119. 1. 5. 42.0 23.0 5.5 4. 12.0 11.5 3. 5. 0.0 0. 1. + 4120. 1. 5. 27.0 9.0 2.0 2. 12.0 11.5 2. 4. 0.0 0. 1. + 4122. 1. 5. 27.0 6.0 0.0 2. 14.0 40.0 2. 3. 0.0 0. 1. + 4124. 1. 5. 22.0 0.5 0.0 3. 16.0 9.0 4. 2. 0.0 0. 1. + 4131. 1. 5. 42.0 23.0 5.5 2. 16.0 40.0 4. 6. 0.0 0. 1. + 4132. 1. 4. 22.0 2.5 0.0 3. 16.0 11.5 4. 5. 0.0 0. 1. + 4143. 1. 5. 32.0 13.0 1.0 3. 14.0 14.0 3. 5. 0.0 0. 1. + 4148. 1. 5. 27.0 2.5 0.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 4149. 1. 5. 42.0 23.0 4.0 3. 14.0 40.0 4. 4. 0.0 0. 1. + 4150. 1. 5. 22.0 2.5 1.0 2. 12.0 14.0 2. 4. 0.0 0. 1. + 4151. 1. 3. 32.0 9.0 2.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 4162. 1. 5. 27.0 2.5 0.0 3. 12.0 14.0 3. 3. 0.0 0. 1. + 4163. 1. 4. 22.0 0.5 0.0 3. 14.0 9.0 4. 2. 0.0 0. 1. + 4164. 1. 2. 37.0 16.5 5.5 3. 14.0 20.0 3. 5. 0.0 0. 1. + 4167. 1. 5. 42.0 23.0 4.0 3. 12.0 20.0 5. 4. 0.0 0. 1. + 4173. 1. 3. 27.0 9.0 0.0 2. 12.0 20.0 3. 6. 0.0 0. 1. + 4174. 1. 5. 42.0 16.5 3.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 4175. 1. 4. 27.0 9.0 2.0 3. 14.0 14.0 2. 4. 0.0 0. 1. + 4180. 1. 4. 17.5 0.5 0.0 2. 12.0 11.5 3. 5. 0.0 0. 1. + 4185. 1. 4. 22.0 2.5 0.0 4. 12.0 11.5 2. 5. 0.0 0. 1. + 4187. 1. 4. 22.0 2.5 1.0 2. 12.0 11.5 2. 4. 0.0 0. 1. + 4189. 1. 5. 22.0 0.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 4193. 1. 5. 32.0 16.5 3.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 4197. 1. 4. 32.0 16.5 2.0 3. 14.0 14.0 4. 5. 0.0 0. 1. + 4202. 1. 5. 22.0 2.5 0.0 1. 17.0 14.0 4. 4. 0.0 0. 1. + 4204. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 5. 6. 0.0 0. 1. + 4207. 1. 5. 32.0 0.5 0.0 1. 12.0 40.0 4. 5. 0.0 0. 1. + 4208. 1. 3. 22.0 6.0 1.0 2. 9.0 11.5 2. 2. 0.0 0. 1. + 4216. 1. 4. 27.0 13.0 3.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 4222. 1. 5. 37.0 0.5 0.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 4224. 1. 5. 17.5 0.5 0.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 4228. 1. 4. 27.0 2.5 0.0 2. 16.0 20.0 4. 3. 0.0 0. 1. + 4229. 1. 4. 37.0 9.0 2.0 3. 17.0 14.0 4. 4. 0.0 0. 1. + 4236. 1. 4. 22.0 6.0 2.0 3. 12.0 6.5 3. 2. 0.0 0. 1. + 4240. 1. 4. 42.0 23.0 3.0 3. 14.0 40.0 3. 5. 0.0 0. 1. + 4244. 1. 5. 22.0 2.5 1.0 1. 14.0 14.0 3. 2. 0.0 0. 1. + 4247. 1. 3. 22.0 2.5 0.0 2. 16.0 4.0 3. 5. 0.0 0. 1. + 4248. 1. 5. 22.0 6.0 1.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 4251. 1. 4. 37.0 16.5 3.0 4. 16.0 14.0 4. 3. 0.0 0. 1. + 4253. 1. 3. 42.0 23.0 5.5 2. 14.0 20.0 3. 2. 0.0 0. 1. + 4254. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 2. 2. 0.0 0. 1. + 4255. 1. 4. 27.0 2.5 1.0 4. 16.0 14.0 4. 2. 0.0 0. 1. + 4258. 1. 4. 32.0 9.0 3.0 3. 14.0 20.0 2. 2. 0.0 0. 1. + 4259. 1. 5. 37.0 16.5 3.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 4260. 1. 5. 22.0 6.0 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 4268. 1. 5. 22.0 2.5 1.0 3. 12.0 14.0 2. 2. 0.0 0. 1. + 4270. 1. 4. 27.0 9.0 1.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 4271. 1. 5. 22.0 2.5 0.0 4. 16.0 20.0 6. 6. 0.0 0. 1. + 4288. 1. 4. 32.0 2.5 0.0 3. 17.0 9.0 4. 3. 0.0 0. 1. + 4289. 1. 5. 27.0 9.0 0.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 4291. 1. 4. 22.0 6.0 0.0 1. 14.0 14.0 3. 5. 0.0 0. 1. + 4297. 1. 5. 42.0 23.0 4.0 4. 12.0 20.0 3. 2. 0.0 0. 1. + 4304. 1. 5. 32.0 16.5 4.0 3. 12.0 11.5 5. 4. 0.0 0. 1. + 4305. 1. 5. 32.0 16.5 3.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 4306. 1. 4. 27.0 6.0 0.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 4308. 1. 4. 32.0 2.5 0.0 3. 16.0 20.0 3. 4. 0.0 0. 1. + 4311. 1. 5. 27.0 6.0 1.0 2. 16.0 20.0 3. 3. 0.0 0. 1. + 4319. 1. 5. 22.0 0.5 0.0 1. 12.0 20.0 3. 2. 0.0 0. 1. + 4322. 1. 5. 42.0 23.0 4.0 4. 12.0 20.0 2. 4. 0.0 0. 1. + 4327. 1. 2. 32.0 6.0 2.0 2. 16.0 20.0 4. 6. 0.0 0. 1. + 4331. 1. 5. 22.0 6.0 2.0 3. 16.0 11.5 4. 2. 0.0 0. 1. + 4332. 1. 4. 22.0 2.5 1.0 2. 12.0 11.5 5. 4. 0.0 0. 1. + 4335. 1. 5. 42.0 23.0 5.5 3. 12.0 14.0 3. 2. 0.0 0. 1. + 4339. 1. 5. 32.0 6.0 2.0 2. 14.0 14.0 4. 4. 0.0 0. 1. + 4340. 1. 5. 42.0 23.0 2.0 2. 14.0 20.0 5. 3. 0.0 0. 1. + 4348. 1. 4. 27.0 6.0 0.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 4355. 1. 4. 37.0 16.5 3.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 4359. 1. 5. 42.0 16.5 3.0 2. 12.0 40.0 5. 2. 0.0 0. 1. + 4363. 1. 4. 32.0 16.5 3.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 4365. 1. 5. 22.0 2.5 0.0 2. 14.0 14.0 5. 1. 0.0 0. 1. + 4368. 1. 4. 27.0 9.0 2.0 3. 14.0 14.0 4. 3. 0.0 0. 1. + 4369. 1. 5. 22.0 6.0 1.0 2. 9.0 40.0 4. 2. 0.0 0. 1. + 4372. 1. 4. 22.0 2.5 2.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 4382. 1. 5. 27.0 9.0 1.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 4385. 1. 4. 27.0 6.0 2.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 4387. 1. 5. 22.0 2.5 0.0 4. 9.0 14.0 3. 5. 0.0 0. 1. + 4389. 1. 5. 22.0 2.5 0.0 3. 20.0 20.0 4. 6. 0.0 0. 1. + 4390. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 4. 2. 0.0 0. 1. + 4394. 1. 5. 22.0 2.5 0.0 3. 17.0 14.0 4. 5. 0.0 0. 1. + 4395. 1. 5. 27.0 13.0 2.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 4397. 1. 4. 27.0 2.5 0.0 3. 16.0 14.0 4. 5. 0.0 0. 1. + 4407. 1. 4. 42.0 23.0 2.0 4. 12.0 9.0 4. 2. 0.0 0. 1. + 4414. 1. 5. 27.0 6.0 2.0 2. 17.0 6.5 4. 1. 0.0 0. 1. + 4415. 1. 3. 27.0 2.5 0.0 1. 16.0 14.0 4. 5. 0.0 0. 1. + 4427. 1. 4. 27.0 6.0 1.0 3. 12.0 11.5 4. 6. 0.0 0. 1. + 4428. 1. 5. 27.0 6.0 1.0 2. 16.0 14.0 4. 3. 0.0 0. 1. + 4431. 1. 5. 22.0 0.5 0.0 2. 12.0 6.5 2. 2. 0.0 0. 1. + 4436. 1. 2. 22.0 0.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 4438. 1. 4. 27.0 2.5 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 4447. 1. 5. 27.0 6.0 1.0 1. 14.0 20.0 4. 2. 0.0 0. 1. + 4448. 1. 4. 37.0 23.0 3.0 3. 14.0 20.0 2. 6. 0.0 0. 1. + 4451. 1. 3. 22.0 2.5 0.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 4455. 1. 4. 27.0 9.0 2.0 3. 17.0 20.0 4. 6. 0.0 0. 1. + 4456. 1. 4. 42.0 23.0 5.5 3. 12.0 14.0 3. 2. 0.0 0. 1. + 4458. 1. 4. 22.0 0.5 0.0 3. 16.0 11.5 3. 5. 0.0 0. 1. + 4460. 1. 5. 22.0 2.5 0.0 1. 14.0 11.5 3. 5. 0.0 0. 1. + 4464. 1. 5. 22.0 6.0 0.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 4465. 1. 4. 27.0 6.0 1.0 3. 16.0 11.5 4. 3. 0.0 0. 1. + 4467. 1. 4. 42.0 23.0 4.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 4472. 1. 5. 22.0 0.5 0.0 3. 12.0 11.5 3. 5. 0.0 0. 1. + 4477. 1. 4. 22.0 2.5 0.0 1. 16.0 11.5 2. 4. 0.0 0. 1. + 4486. 1. 5. 22.0 0.5 0.0 4. 14.0 20.0 3. 4. 0.0 0. 1. + 4488. 1. 5. 27.0 2.5 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 4492. 1. 5. 22.0 2.5 0.0 4. 14.0 9.0 3. 6. 0.0 0. 1. + 4495. 1. 4. 37.0 16.5 4.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 4497. 1. 5. 22.0 2.5 0.0 2. 12.0 9.0 2. 2. 0.0 0. 1. + 4500. 1. 5. 22.0 2.5 0.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 4502. 1. 4. 22.0 2.5 1.0 4. 16.0 11.5 3. 2. 0.0 0. 1. + 4504. 1. 5. 37.0 23.0 4.0 1. 14.0 20.0 3. 2. 0.0 0. 1. + 4506. 1. 5. 27.0 2.5 0.0 1. 16.0 40.0 3. 5. 0.0 0. 1. + 4509. 1. 3. 37.0 9.0 1.0 2. 17.0 20.0 5. 5. 0.0 0. 1. + 4511. 1. 5. 22.0 0.5 0.0 4. 16.0 20.0 4. 2. 0.0 0. 1. + 4513. 1. 5. 27.0 9.0 2.0 2. 14.0 14.0 4. 5. 0.0 0. 1. + 4515. 1. 5. 32.0 6.0 1.0 3. 12.0 9.0 3. 2. 0.0 0. 1. + 4524. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 4530. 1. 4. 27.0 6.0 0.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 4539. 1. 4. 17.5 0.5 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 4542. 1. 4. 27.0 6.0 1.0 1. 16.0 20.0 5. 4. 0.0 0. 1. + 4546. 1. 4. 22.0 2.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 4549. 1. 4. 27.0 6.0 0.0 3. 14.0 40.0 4. 5. 0.0 0. 1. + 4565. 1. 4. 27.0 6.0 2.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 4567. 1. 4. 27.0 6.0 0.0 1. 20.0 20.0 4. 4. 0.0 0. 1. + 4574. 1. 5. 22.0 2.5 0.0 4. 14.0 20.0 5. 4. 0.0 0. 1. + 4589. 1. 5. 27.0 2.5 0.0 4. 20.0 20.0 6. 5. 0.0 0. 1. + 4593. 1. 5. 22.0 0.5 0.0 2. 17.0 14.0 4. 2. 0.0 0. 1. + 4595. 1. 5. 37.0 23.0 4.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 4601. 1. 5. 37.0 16.5 4.0 4. 12.0 20.0 4. 5. 0.0 0. 1. + 4603. 1. 5. 27.0 2.5 0.0 1. 14.0 14.0 5. 5. 0.0 0. 1. + 4604. 1. 5. 42.0 23.0 4.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 4607. 1. 5. 27.0 13.0 3.0 1. 14.0 14.0 2. 4. 0.0 0. 1. + 4609. 1. 4. 22.0 2.5 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 4611. 1. 5. 32.0 16.5 4.0 4. 12.0 20.0 2. 4. 0.0 0. 1. + 4615. 1. 3. 37.0 16.5 2.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 4623. 1. 5. 22.0 2.5 0.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 4625. 1. 4. 27.0 2.5 1.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 4628. 1. 5. 27.0 2.5 0.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 4633. 1. 5. 32.0 13.0 3.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 4636. 1. 4. 27.0 2.5 1.0 2. 16.0 11.5 4. 4. 0.0 0. 1. + 4639. 1. 4. 22.0 0.5 0.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 4647. 1. 4. 27.0 2.5 0.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 4648. 1. 4. 27.0 2.5 0.0 2. 17.0 40.0 5. 6. 0.0 0. 1. + 4649. 1. 2. 22.0 2.5 0.0 1. 16.0 4.0 4. 1. 0.0 0. 1. + 4650. 1. 4. 32.0 9.0 2.0 3. 14.0 14.0 2. 4. 0.0 0. 1. + 4653. 1. 5. 42.0 23.0 3.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 4655. 1. 3. 27.0 2.5 0.0 2. 14.0 40.0 4. 4. 0.0 0. 1. + 4657. 1. 5. 27.0 13.0 0.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 4664. 1. 4. 22.0 2.5 0.0 3. 12.0 9.0 3. 2. 0.0 0. 1. + 4666. 1. 4. 17.5 0.5 0.0 3. 17.0 4.0 2. 4. 0.0 0. 1. + 4667. 1. 4. 27.0 6.0 1.0 2. 12.0 11.5 3. 6. 0.0 0. 1. + 4668. 1. 5. 22.0 6.0 0.0 4. 14.0 6.5 4. 1. 0.0 0. 1. + 4669. 1. 3. 27.0 6.0 1.0 3. 16.0 14.0 4. 5. 0.0 0. 1. + 4670. 1. 5. 22.0 6.0 2.0 3. 12.0 20.0 4. 5. 0.0 0. 1. + 4672. 1. 5. 27.0 6.0 2.0 3. 16.0 14.0 4. 6. 0.0 0. 1. + 4673. 1. 5. 27.0 2.5 1.0 3. 14.0 11.5 5. 5. 0.0 0. 1. + 4674. 1. 4. 22.0 2.5 1.0 2. 14.0 14.0 1. 5. 0.0 0. 1. + 4675. 1. 4. 32.0 13.0 2.0 3. 12.0 20.0 2. 6. 0.0 0. 1. + 4683. 1. 4. 27.0 16.5 2.0 3. 20.0 20.0 4. 4. 0.0 0. 1. + 4694. 1. 4. 32.0 9.0 2.0 2. 17.0 20.0 4. 5. 0.0 0. 1. + 4698. 1. 4. 37.0 16.5 3.0 3. 14.0 11.5 2. 5. 0.0 0. 1. + 4703. 1. 5. 17.5 0.5 0.0 3. 12.0 6.5 2. 2. 0.0 0. 1. + 4708. 1. 4. 22.0 2.5 0.0 2. 16.0 9.0 4. 1. 0.0 0. 1. + 4711. 1. 4. 27.0 9.0 1.0 3. 14.0 9.0 3. 5. 0.0 0. 1. + 4720. 1. 5. 27.0 6.0 2.0 3. 14.0 14.0 4. 2. 0.0 0. 1. + 4722. 1. 1. 32.0 16.5 5.5 2. 12.0 14.0 2. 2. 0.0 0. 1. + 4737. 1. 3. 27.0 9.0 1.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 4739. 1. 3. 32.0 13.0 4.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 4740. 1. 5. 42.0 13.0 4.0 4. 14.0 14.0 3. 4. 0.0 0. 1. + 4741. 1. 3. 22.0 2.5 1.0 3. 14.0 14.0 3. 2. 0.0 0. 1. + 4747. 1. 5. 32.0 13.0 2.0 2. 12.0 14.0 2. 2. 0.0 0. 1. + 4751. 1. 5. 27.0 2.5 0.0 3. 16.0 40.0 4. 5. 0.0 0. 1. + 4754. 1. 4. 22.0 2.5 0.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 4764. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 4766. 1. 5. 22.0 2.5 0.0 2. 12.0 9.0 2. 4. 0.0 0. 1. + 4767. 1. 3. 37.0 16.5 2.0 2. 14.0 9.0 2. 2. 0.0 0. 1. + 4772. 1. 5. 32.0 9.0 2.0 2. 20.0 20.0 4. 6. 0.0 0. 1. + 4777. 1. 5. 27.0 13.0 2.0 2. 12.0 14.0 5. 5. 0.0 0. 1. + 4780. 1. 3. 37.0 13.0 1.0 4. 12.0 11.5 2. 2. 0.0 0. 1. + 4781. 1. 5. 42.0 23.0 3.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 4782. 1. 4. 22.0 2.5 0.0 3. 14.0 9.0 3. 4. 0.0 0. 1. + 4792. 1. 4. 42.0 23.0 2.0 4. 14.0 40.0 3. 2. 0.0 0. 1. + 4797. 1. 3. 22.0 2.5 0.0 1. 14.0 14.0 3. 2. 0.0 0. 1. + 4798. 1. 4. 27.0 0.5 0.0 2. 14.0 14.0 3. 3. 0.0 0. 1. + 4803. 1. 4. 42.0 13.0 2.0 1. 20.0 40.0 4. 4. 0.0 0. 1. + 4805. 1. 4. 22.0 2.5 0.0 2. 14.0 11.5 3. 2. 0.0 0. 1. + 4818. 1. 5. 27.0 6.0 0.0 4. 16.0 20.0 3. 5. 0.0 0. 1. + 4819. 1. 4. 22.0 0.5 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 4821. 1. 5. 32.0 2.5 0.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 4822. 1. 5. 22.0 2.5 0.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 4825. 1. 4. 32.0 16.5 4.0 1. 12.0 20.0 2. 2. 0.0 0. 1. + 4828. 1. 3. 27.0 6.0 0.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 4832. 1. 5. 32.0 13.0 2.0 3. 16.0 11.5 2. 2. 0.0 0. 1. + 4836. 1. 5. 27.0 2.5 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 4840. 1. 4. 32.0 16.5 2.0 2. 14.0 20.0 4. 5. 0.0 0. 1. + 4842. 1. 4. 17.5 0.5 0.0 2. 12.0 4.0 2. 2. 0.0 0. 1. + 4845. 1. 4. 37.0 23.0 3.0 2. 12.0 14.0 3. 5. 0.0 0. 1. + 4849. 1. 5. 27.0 13.0 2.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 4862. 1. 5. 32.0 16.5 3.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 4873. 1. 5. 27.0 6.0 2.0 2. 14.0 11.5 2. 5. 0.0 0. 1. + 4894. 1. 5. 22.0 2.5 0.0 3. 12.0 9.0 3. 2. 0.0 0. 1. + 4899. 1. 5. 27.0 2.5 1.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 4900. 1. 3. 17.5 2.5 1.0 3. 12.0 9.0 3. 2. 0.0 0. 1. + 4909. 1. 5. 22.0 2.5 0.0 2. 14.0 40.0 4. 2. 0.0 0. 1. + 4911. 1. 5. 22.0 0.5 0.0 4. 16.0 6.5 4. 2. 0.0 0. 1. + 4916. 1. 4. 27.0 2.5 0.0 3. 12.0 9.0 3. 2. 0.0 0. 1. + 4919. 1. 4. 27.0 6.0 2.0 1. 12.0 11.5 2. 2. 0.0 0. 1. + 4926. 1. 4. 22.0 6.0 1.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 4927. 1. 4. 27.0 2.5 0.0 3. 17.0 11.5 4. 1. 0.0 0. 1. + 4931. 1. 2. 32.0 16.5 3.0 4. 16.0 20.0 4. 4. 0.0 0. 1. + 4933. 1. 4. 22.0 2.5 0.0 2. 14.0 6.5 3. 2. 0.0 0. 1. + 4938. 1. 5. 27.0 2.5 0.0 2. 17.0 20.0 4. 3. 0.0 0. 1. + 4940. 1. 4. 27.0 2.5 0.0 3. 16.0 11.5 4. 2. 0.0 0. 1. + 4941. 1. 5. 27.0 6.0 2.0 4. 12.0 14.0 3. 2. 0.0 0. 1. + 4942. 1. 5. 32.0 16.5 2.0 3. 14.0 9.0 2. 2. 0.0 0. 1. + 4944. 1. 5. 17.5 2.5 0.0 2. 14.0 11.5 4. 4. 0.0 0. 1. + 4947. 1. 4. 42.0 16.5 5.5 3. 12.0 14.0 2. 5. 0.0 0. 1. + 4949. 1. 5. 27.0 2.5 1.0 2. 12.0 20.0 4. 4. 0.0 0. 1. + 4952. 1. 4. 32.0 2.5 0.0 3. 16.0 20.0 5. 5. 0.0 0. 1. + 4963. 1. 5. 22.0 6.0 1.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 4966. 1. 4. 27.0 6.0 1.0 3. 16.0 14.0 4. 4. 0.0 0. 1. + 4968. 1. 4. 37.0 16.5 2.0 2. 20.0 40.0 4. 4. 0.0 0. 1. + 4981. 1. 5. 17.5 0.5 0.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 4989. 1. 4. 37.0 16.5 3.0 3. 12.0 20.0 5. 2. 0.0 0. 1. + 4991. 1. 5. 27.0 2.5 0.0 2. 16.0 11.5 2. 2. 0.0 0. 1. + 4995. 1. 4. 27.0 6.0 0.0 2. 14.0 14.0 3. 1. 0.0 0. 1. + 5002. 1. 4. 27.0 9.0 2.0 3. 20.0 20.0 4. 4. 0.0 0. 1. + 5012. 1. 5. 32.0 16.5 2.0 4. 12.0 14.0 2. 5. 0.0 0. 1. + 5013. 1. 5. 27.0 2.5 2.0 3. 17.0 11.5 4. 5. 0.0 0. 1. + 5016. 1. 5. 37.0 16.5 2.0 3. 14.0 11.5 3. 2. 0.0 0. 1. + 5021. 1. 4. 42.0 23.0 3.0 3. 14.0 14.0 3. 2. 0.0 0. 1. + 5022. 1. 5. 32.0 16.5 2.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 5023. 1. 4. 22.0 0.5 0.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 5035. 1. 5. 27.0 6.0 1.0 1. 20.0 11.5 3. 5. 0.0 0. 1. + 5041. 1. 3. 27.0 2.5 0.0 3. 17.0 40.0 4. 3. 0.0 0. 1. + 5049. 1. 4. 32.0 13.0 2.0 3. 14.0 14.0 3. 5. 0.0 0. 1. + 5055. 1. 4. 22.0 2.5 1.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 5058. 1. 4. 27.0 2.5 0.0 1. 12.0 14.0 3. 4. 0.0 0. 1. + 5062. 1. 5. 22.0 2.5 0.0 3. 12.0 9.0 3. 4. 0.0 0. 1. + 5063. 1. 3. 42.0 23.0 3.0 3. 12.0 11.5 5. 2. 0.0 0. 1. + 5066. 1. 5. 27.0 6.0 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 5067. 1. 4. 37.0 16.5 2.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 5069. 1. 4. 27.0 6.0 0.0 4. 14.0 20.0 3. 3. 0.0 0. 1. + 5070. 1. 5. 22.0 6.0 1.0 3. 12.0 9.0 3. 4. 0.0 0. 1. + 5072. 1. 5. 32.0 6.0 1.0 2. 17.0 20.0 4. 3. 0.0 0. 1. + 5075. 1. 5. 22.0 0.5 0.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 5083. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 5100. 1. 4. 22.0 0.5 0.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 5101. 1. 3. 32.0 2.5 1.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 5102. 1. 2. 32.0 6.0 0.0 3. 17.0 20.0 4. 3. 0.0 0. 1. + 5115. 1. 5. 32.0 9.0 2.0 4. 17.0 20.0 4. 4. 0.0 0. 1. + 5116. 1. 4. 42.0 23.0 2.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 5121. 1. 5. 42.0 23.0 3.0 4. 17.0 20.0 4. 6. 0.0 0. 1. + 5128. 1. 5. 22.0 2.5 1.0 2. 12.0 6.5 2. 5. 0.0 0. 1. + 5135. 1. 5. 42.0 23.0 2.0 2. 12.0 9.0 2. 2. 0.0 0. 1. + 5136. 1. 4. 27.0 6.0 1.0 2. 12.0 20.0 2. 4. 0.0 0. 1. + 5141. 1. 4. 27.0 2.5 0.0 1. 14.0 20.0 3. 3. 0.0 0. 1. + 5142. 1. 5. 22.0 2.5 0.0 2. 16.0 11.5 2. 1. 0.0 0. 1. + 5163. 1. 4. 42.0 16.5 4.0 4. 17.0 20.0 4. 5. 0.0 0. 1. + 5164. 1. 5. 27.0 2.5 0.0 1. 14.0 14.0 3. 4. 0.0 0. 1. + 5165. 1. 3. 32.0 9.0 1.0 3. 14.0 20.0 2. 5. 0.0 0. 1. + 5168. 1. 5. 22.0 2.5 0.0 3. 14.0 14.0 4. 6. 0.0 0. 1. + 5170. 1. 4. 22.0 6.0 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 5173. 1. 5. 22.0 2.5 0.0 2. 16.0 20.0 4. 2. 0.0 0. 1. + 5175. 1. 4. 22.0 0.5 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 5177. 1. 5. 22.0 0.5 1.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 5183. 1. 4. 32.0 9.0 0.0 2. 14.0 40.0 3. 2. 0.0 0. 1. + 5184. 1. 3. 27.0 2.5 1.0 3. 14.0 9.0 4. 4. 0.0 0. 1. + 5188. 1. 4. 27.0 6.0 0.0 2. 20.0 40.0 4. 6. 0.0 0. 1. + 5189. 1. 5. 22.0 2.5 0.0 1. 16.0 6.5 4. 2. 0.0 0. 1. + 5191. 1. 5. 22.0 2.5 2.0 3. 12.0 6.5 2. 4. 0.0 0. 1. + 5199. 1. 5. 22.0 6.0 3.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 5200. 1. 4. 27.0 9.0 2.0 3. 14.0 11.5 6. 4. 0.0 0. 1. + 5201. 1. 4. 32.0 16.5 5.5 3. 14.0 14.0 2. 2. 0.0 0. 1. + 5204. 1. 5. 32.0 6.0 2.0 3. 17.0 20.0 2. 6. 0.0 0. 1. + 5215. 1. 4. 22.0 0.5 0.0 3. 17.0 11.5 5. 5. 0.0 0. 1. + 5216. 1. 5. 27.0 6.0 2.0 4. 12.0 9.0 2. 2. 0.0 0. 1. + 5219. 1. 5. 42.0 23.0 4.0 4. 12.0 20.0 3. 5. 0.0 0. 1. + 5220. 1. 4. 22.0 2.5 0.0 2. 12.0 11.5 2. 5. 0.0 0. 1. + 5224. 1. 4. 42.0 23.0 3.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 5228. 1. 5. 32.0 9.0 2.0 3. 14.0 14.0 2. 2. 0.0 0. 1. + 5229. 1. 5. 42.0 23.0 3.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 5232. 1. 4. 42.0 23.0 2.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 5235. 1. 5. 27.0 9.0 1.0 4. 16.0 14.0 3. 3. 0.0 0. 1. + 5244. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 2. 2. 0.0 0. 1. + 5257. 1. 3. 32.0 16.5 2.0 2. 9.0 20.0 2. 4. 0.0 0. 1. + 5259. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 5260. 1. 5. 32.0 9.0 1.0 4. 20.0 20.0 4. 5. 0.0 0. 1. + 5262. 1. 5. 27.0 6.0 2.0 4. 14.0 11.5 3. 2. 0.0 0. 1. + 5263. 1. 5. 42.0 23.0 2.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 5269. 1. 5. 32.0 16.5 2.0 1. 14.0 14.0 4. 5. 0.0 0. 1. + 5271. 1. 5. 27.0 9.0 3.0 1. 20.0 20.0 1. 6. 0.0 0. 1. + 5272. 1. 5. 32.0 13.0 2.0 4. 20.0 14.0 6. 6. 0.0 0. 1. + 5273. 1. 5. 22.0 2.5 0.0 2. 17.0 20.0 5. 4. 0.0 0. 1. + 5274. 1. 4. 27.0 6.0 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 5283. 1. 5. 27.0 2.5 0.0 4. 16.0 11.5 5. 5. 0.0 0. 1. + 5285. 1. 4. 17.5 2.5 1.0 2. 12.0 6.5 5. 6. 0.0 0. 1. + 5290. 1. 5. 22.0 0.5 0.0 4. 16.0 6.5 3. 2. 0.0 0. 1. + 5291. 1. 4. 22.0 2.5 0.0 4. 16.0 9.0 3. 1. 0.0 0. 1. + 5292. 1. 5. 37.0 23.0 5.5 3. 12.0 6.5 2. 2. 0.0 0. 1. + 5301. 1. 4. 22.0 0.5 0.0 1. 12.0 11.5 5. 2. 0.0 0. 1. + 5307. 1. 3. 32.0 9.0 3.0 3. 14.0 20.0 3. 6. 0.0 0. 1. + 5308. 1. 4. 22.0 2.5 0.0 1. 12.0 20.0 2. 4. 0.0 0. 1. + 5310. 1. 3. 27.0 6.0 4.0 3. 16.0 40.0 4. 5. 0.0 0. 1. + 5311. 1. 4. 22.0 2.5 1.0 3. 14.0 14.0 4. 5. 0.0 0. 1. + 5312. 1. 4. 32.0 6.0 0.0 1. 16.0 11.5 3. 2. 0.0 0. 1. + 5313. 1. 5. 32.0 16.5 3.0 3. 17.0 40.0 4. 5. 0.0 0. 1. + 5323. 1. 3. 22.0 2.5 1.0 2. 16.0 4.0 4. 4. 0.0 0. 1. + 5333. 1. 5. 27.0 6.0 0.0 3. 16.0 20.0 2. 1. 0.0 0. 1. + 5337. 1. 5. 32.0 6.0 0.0 4. 17.0 20.0 4. 5. 0.0 0. 1. + 5338. 1. 5. 27.0 6.0 2.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 5340. 1. 4. 22.0 2.5 0.0 3. 12.0 6.5 3. 3. 0.0 0. 1. + 5341. 1. 5. 42.0 23.0 3.0 2. 12.0 20.0 5. 5. 0.0 0. 1. + 5346. 1. 4. 22.0 2.5 0.0 2. 16.0 14.0 4. 5. 0.0 0. 1. + 5348. 1. 5. 27.0 6.0 0.0 2. 20.0 20.0 4. 1. 0.0 0. 1. + 5355. 1. 5. 32.0 9.0 3.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 5356. 1. 5. 42.0 23.0 4.0 1. 14.0 6.5 4. 4. 0.0 0. 1. + 5364. 1. 4. 27.0 6.0 1.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 5377. 1. 5. 22.0 2.5 0.0 1. 14.0 4.0 3. 1. 0.0 0. 1. + 5380. 1. 5. 27.0 6.0 0.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 5382. 1. 5. 27.0 2.5 1.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 5387. 1. 5. 37.0 13.0 1.0 2. 14.0 14.0 5. 5. 0.0 0. 1. + 5390. 1. 4. 22.0 2.5 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 5391. 1. 5. 22.0 2.5 0.0 3. 12.0 6.5 4. 4. 0.0 0. 1. + 5395. 1. 3. 22.0 6.0 1.0 2. 12.0 9.0 2. 2. 0.0 0. 1. + 5396. 1. 5. 22.0 0.5 0.0 2. 16.0 14.0 4. 5. 0.0 0. 1. + 5397. 1. 4. 32.0 13.0 1.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 5399. 1. 4. 22.0 6.0 0.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 5401. 1. 5. 22.0 2.5 0.0 1. 14.0 9.0 3. 1. 0.0 0. 1. + 5404. 1. 3. 27.0 6.0 0.0 2. 14.0 6.5 3. 1. 0.0 0. 1. + 5406. 1. 3. 27.0 13.0 4.0 3. 12.0 14.0 2. 2. 0.0 0. 1. + 5410. 1. 4. 22.0 2.5 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 5413. 1. 5. 27.0 6.0 2.0 2. 16.0 20.0 4. 6. 0.0 0. 1. + 5416. 1. 5. 22.0 2.5 0.0 2. 12.0 9.0 2. 5. 0.0 0. 1. + 5417. 1. 4. 17.5 2.5 0.0 2. 12.0 6.5 2. 2. 0.0 0. 1. + 5422. 1. 5. 42.0 16.5 3.0 2. 12.0 20.0 2. 2. 0.0 0. 1. + 5423. 1. 3. 27.0 6.0 2.0 2. 9.0 11.5 4. 2. 0.0 0. 1. + 5425. 1. 5. 27.0 2.5 0.0 1. 20.0 20.0 4. 6. 0.0 0. 1. + 5427. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 5. 4. 0.0 0. 1. + 5428. 1. 5. 32.0 16.5 4.0 3. 12.0 11.5 5. 5. 0.0 0. 1. + 5430. 1. 5. 27.0 0.5 0.0 3. 16.0 40.0 5. 5. 0.0 0. 1. + 5431. 1. 4. 22.0 2.5 0.0 4. 14.0 9.0 1. 6. 0.0 0. 1. + 5432. 1. 5. 32.0 13.0 3.0 3. 12.0 20.0 2. 2. 0.0 0. 1. + 5438. 1. 4. 22.0 2.5 0.0 3. 16.0 6.5 3. 1. 0.0 0. 1. + 5443. 1. 5. 27.0 2.5 0.0 1. 20.0 14.0 6. 1. 0.0 0. 1. + 5447. 1. 4. 27.0 2.5 0.0 3. 17.0 14.0 4. 4. 0.0 0. 1. + 5448. 1. 5. 22.0 2.5 0.0 4. 12.0 11.5 3. 4. 0.0 0. 1. + 5449. 1. 5. 17.5 0.5 0.0 4. 9.0 11.5 2. 2. 0.0 0. 1. + 5450. 1. 2. 27.0 9.0 1.0 1. 12.0 11.5 3. 5. 0.0 0. 1. + 5454. 1. 4. 22.0 2.5 0.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 5457. 1. 4. 22.0 2.5 0.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 5467. 1. 5. 42.0 23.0 3.0 1. 16.0 40.0 4. 6. 0.0 0. 1. + 5473. 1. 4. 22.0 2.5 1.0 3. 12.0 14.0 3. 2. 0.0 0. 1. + 5476. 1. 3. 27.0 6.0 1.0 3. 12.0 9.0 3. 2. 0.0 0. 1. + 5480. 1. 5. 27.0 0.5 0.0 4. 17.0 6.5 3. 2. 0.0 0. 1. + 5483. 1. 4. 42.0 23.0 1.0 3. 12.0 11.5 5. 5. 0.0 0. 1. + 5484. 1. 4. 32.0 16.5 3.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 5487. 1. 5. 22.0 6.0 0.0 2. 12.0 20.0 2. 4. 0.0 0. 1. + 5490. 1. 4. 22.0 2.5 0.0 2. 16.0 6.5 4. 4. 0.0 0. 1. + 5491. 1. 4. 22.0 2.5 0.0 3. 14.0 4.0 3. 1. 0.0 0. 1. + 5496. 1. 3. 27.0 9.0 2.0 1. 12.0 4.0 2. 2. 0.0 0. 1. + 5505. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 5506. 1. 5. 37.0 16.5 2.0 1. 12.0 40.0 3. 4. 0.0 0. 1. + 5523. 1. 4. 42.0 23.0 3.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 5531. 1. 5. 27.0 2.5 0.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 5532. 1. 4. 32.0 2.5 0.0 1. 14.0 20.0 3. 2. 0.0 0. 1. + 5536. 1. 3. 22.0 0.5 0.0 2. 16.0 4.0 3. 1. 0.0 0. 1. + 5537. 1. 5. 22.0 0.5 0.0 4. 16.0 9.0 3. 1. 0.0 0. 1. + 5540. 1. 5. 42.0 23.0 5.5 3. 12.0 20.0 2. 5. 0.0 0. 1. + 5543. 1. 4. 22.0 2.5 1.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 5547. 1. 4. 27.0 2.5 0.0 1. 14.0 11.5 3. 2. 0.0 0. 1. + 5558. 1. 2. 42.0 23.0 4.0 4. 12.0 9.0 3. 2. 0.0 0. 1. + 5560. 1. 4. 22.0 2.5 0.0 4. 17.0 6.5 5. 1. 0.0 0. 1. + 5568. 1. 4. 27.0 6.0 1.0 2. 14.0 14.0 2. 4. 0.0 0. 1. + 5575. 1. 5. 27.0 6.0 3.0 2. 14.0 20.0 5. 5. 0.0 0. 1. + 5576. 1. 5. 27.0 6.0 3.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 5583. 1. 4. 27.0 6.0 2.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 5586. 1. 4. 22.0 2.5 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 5587. 1. 4. 22.0 2.5 2.0 2. 14.0 11.5 2. 2. 0.0 0. 1. + 5591. 1. 3. 42.0 23.0 3.0 2. 12.0 40.0 3. 5. 0.0 0. 1. + 5592. 1. 5. 22.0 0.5 0.0 2. 17.0 14.0 4. 2. 0.0 0. 1. + 5597. 1. 5. 27.0 9.0 4.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 5601. 1. 5. 22.0 0.5 0.0 1. 16.0 20.0 4. 5. 0.0 0. 1. + 5602. 1. 4. 22.0 2.5 0.0 2. 16.0 14.0 4. 2. 0.0 0. 1. + 5604. 1. 5. 17.5 0.5 0.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 5625. 1. 5. 27.0 6.0 1.0 3. 12.0 14.0 3. 6. 0.0 0. 1. + 5630. 1. 2. 27.0 6.0 0.0 3. 17.0 20.0 2. 5. 0.0 0. 1. + 5634. 1. 5. 27.0 0.5 0.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 5636. 1. 5. 22.0 2.5 0.0 1. 12.0 20.0 5. 4. 0.0 0. 1. + 5637. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 5642. 1. 4. 37.0 16.5 2.0 2. 16.0 40.0 4. 3. 0.0 0. 1. + 5651. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 2. 0.0 0. 1. + 5659. 1. 5. 27.0 2.5 0.0 1. 16.0 20.0 4. 1. 0.0 0. 1. + 5661. 1. 5. 42.0 23.0 5.5 3. 14.0 20.0 3. 4. 0.0 0. 1. + 5664. 1. 5. 37.0 16.5 4.0 2. 14.0 40.0 2. 5. 0.0 0. 1. + 5668. 1. 4. 27.0 0.5 0.0 2. 17.0 20.0 4. 4. 0.0 0. 1. + 5672. 1. 5. 27.0 6.0 0.0 3. 20.0 14.0 6. 2. 0.0 0. 1. + 5681. 1. 4. 27.0 13.0 2.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 5693. 1. 3. 22.0 6.0 1.0 2. 12.0 14.0 4. 2. 0.0 0. 1. + 5701. 1. 5. 32.0 13.0 2.0 2. 16.0 20.0 4. 2. 0.0 0. 1. + 5703. 1. 5. 27.0 2.5 0.0 2. 17.0 20.0 3. 6. 0.0 0. 1. + 5706. 1. 5. 27.0 6.0 4.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 5707. 1. 4. 42.0 23.0 2.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 5709. 1. 4. 22.0 2.5 0.0 4. 17.0 20.0 4. 2. 0.0 0. 1. + 5712. 1. 5. 32.0 16.5 3.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 5721. 1. 5. 22.0 2.5 0.0 1. 16.0 14.0 3. 5. 0.0 0. 1. + 5723. 1. 5. 22.0 0.5 0.0 3. 12.0 9.0 5. 2. 0.0 0. 1. + 5727. 1. 4. 42.0 23.0 5.5 4. 12.0 20.0 3. 5. 0.0 0. 1. + 5729. 1. 5. 42.0 16.5 2.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 5730. 1. 4. 22.0 2.5 0.0 1. 12.0 14.0 3. 2. 0.0 0. 1. + 5731. 1. 2. 22.0 2.5 1.0 2. 14.0 6.5 3. 4. 0.0 0. 1. + 5732. 1. 3. 22.0 2.5 0.0 1. 12.0 11.5 3. 3. 0.0 0. 1. + 5734. 1. 4. 32.0 13.0 2.0 3. 17.0 40.0 4. 3. 0.0 0. 1. + 5742. 1. 5. 27.0 6.0 1.0 3. 16.0 14.0 4. 5. 0.0 0. 1. + 5750. 1. 4. 32.0 9.0 2.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 5755. 1. 5. 27.0 2.5 0.0 2. 16.0 11.5 4. 4. 0.0 0. 1. + 5757. 1. 2. 22.0 2.5 2.0 3. 14.0 20.0 4. 2. 0.0 0. 1. + 5764. 1. 5. 22.0 0.5 0.0 4. 16.0 11.5 4. 5. 0.0 0. 1. + 5765. 1. 5. 27.0 2.5 0.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 5766. 1. 5. 27.0 6.0 1.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 5767. 1. 4. 27.0 6.0 2.0 4. 12.0 11.5 3. 2. 0.0 0. 1. + 5771. 1. 4. 22.0 2.5 0.0 2. 14.0 14.0 3. 2. 0.0 0. 1. + 5772. 1. 4. 22.0 2.5 0.0 1. 12.0 20.0 4. 3. 0.0 0. 1. + 5781. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 5782. 1. 5. 22.0 2.5 2.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 5785. 1. 3. 32.0 6.0 2.0 3. 17.0 14.0 2. 4. 0.0 0. 1. + 5787. 1. 4. 27.0 6.0 3.0 3. 14.0 9.0 4. 4. 0.0 0. 1. + 5788. 1. 4. 42.0 23.0 3.0 3. 14.0 40.0 3. 4. 0.0 0. 1. + 5789. 1. 5. 22.0 0.5 0.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 5798. 1. 4. 42.0 13.0 4.0 3. 12.0 9.0 2. 5. 0.0 0. 1. + 5803. 1. 5. 22.0 6.0 0.0 4. 14.0 11.5 1. 5. 0.0 0. 1. + 5808. 1. 2. 32.0 13.0 1.0 3. 20.0 40.0 4. 3. 0.0 0. 1. + 5809. 1. 4. 22.0 2.5 0.0 1. 12.0 11.5 2. 4. 0.0 0. 1. + 5811. 1. 5. 22.0 2.5 0.0 2. 17.0 14.0 4. 5. 0.0 0. 1. + 5812. 1. 5. 42.0 23.0 5.5 2. 12.0 40.0 5. 5. 0.0 0. 1. + 5814. 1. 4. 17.5 2.5 1.0 2. 12.0 4.0 3. 2. 0.0 0. 1. + 5816. 1. 5. 27.0 13.0 1.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 5825. 1. 5. 22.0 0.5 0.0 2. 16.0 14.0 4. 5. 0.0 0. 1. + 5827. 1. 4. 32.0 2.5 0.0 1. 12.0 40.0 3. 4. 0.0 0. 1. + 5828. 1. 5. 17.5 0.5 0.0 4. 12.0 11.5 4. 5. 0.0 0. 1. + 5830. 1. 5. 22.0 0.5 2.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 5831. 1. 3. 17.5 2.5 1.0 2. 14.0 9.0 2. 1. 0.0 0. 1. + 5834. 1. 3. 27.0 6.0 0.0 3. 14.0 11.5 3. 2. 0.0 0. 1. + 5837. 1. 4. 22.0 2.5 0.0 3. 16.0 11.5 4. 5. 0.0 0. 1. + 5839. 1. 5. 22.0 6.0 2.0 2. 12.0 9.0 3. 4. 0.0 0. 1. + 5841. 1. 4. 22.0 2.5 2.0 3. 12.0 11.5 3. 5. 0.0 0. 1. + 5845. 1. 4. 22.0 6.0 1.0 2. 12.0 6.5 3. 5. 0.0 0. 1. + 5860. 1. 4. 27.0 2.5 0.0 3. 20.0 20.0 4. 4. 0.0 0. 1. + 5861. 1. 5. 27.0 2.5 0.0 3. 17.0 20.0 3. 5. 0.0 0. 1. + 5866. 1. 4. 22.0 2.5 0.0 3. 14.0 14.0 3. 5. 0.0 0. 1. + 5869. 1. 5. 27.0 2.5 0.0 2. 14.0 20.0 2. 2. 0.0 0. 1. + 5870. 1. 5. 27.0 2.5 0.0 2. 17.0 20.0 4. 4. 0.0 0. 1. + 5873. 1. 5. 22.0 2.5 0.0 3. 14.0 9.0 2. 2. 0.0 0. 1. + 5875. 1. 5. 22.0 0.5 0.0 2. 14.0 11.5 3. 5. 0.0 0. 1. + 5877. 1. 4. 42.0 23.0 3.0 4. 17.0 20.0 3. 6. 0.0 0. 1. + 5881. 1. 5. 37.0 23.0 5.5 3. 12.0 20.0 5. 5. 0.0 0. 1. + 5882. 1. 4. 22.0 6.0 1.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 5885. 1. 4. 22.0 2.5 0.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 5901. 1. 5. 32.0 2.5 0.0 1. 14.0 20.0 3. 3. 0.0 0. 1. + 5904. 1. 4. 17.5 2.5 0.0 2. 12.0 20.0 3. 3. 0.0 0. 1. + 5905. 1. 5. 37.0 23.0 5.5 3. 12.0 20.0 2. 3. 0.0 0. 1. + 5911. 1. 5. 22.0 2.5 1.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 5914. 1. 5. 42.0 23.0 5.5 4. 16.0 20.0 4. 5. 0.0 0. 1. + 5922. 1. 5. 42.0 23.0 4.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 6004. 1. 4. 27.0 6.0 0.0 2. 14.0 20.0 5. 3. 0.0 0. 1. + 6007. 1. 4. 32.0 13.0 2.0 3. 16.0 14.0 3. 3. 0.0 0. 1. + 6010. 1. 4. 27.0 6.0 2.0 3. 12.0 20.0 2. 4. 0.0 0. 1. + 6016. 1. 4. 32.0 13.0 3.0 4. 14.0 11.5 3. 5. 0.0 0. 1. + 6017. 1. 5. 32.0 13.0 3.0 2. 12.0 9.0 3. 2. 0.0 0. 1. + 6019. 1. 3. 42.0 23.0 5.5 2. 14.0 9.0 3. 2. 0.0 0. 1. + 6022. 1. 1. 37.0 13.0 3.0 4. 17.0 20.0 2. 4. 0.0 0. 1. + 6024. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 5. 5. 0.0 0. 1. + 6028. 1. 4. 22.0 2.5 0.0 1. 12.0 11.5 5. 4. 0.0 0. 1. + 6033. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 6037. 1. 4. 22.0 6.0 3.0 2. 14.0 11.5 4. 2. 0.0 0. 1. + 6043. 1. 5. 27.0 2.5 0.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 6045. 1. 4. 22.0 0.5 0.0 2. 14.0 9.0 3. 5. 0.0 0. 1. + 6046. 1. 5. 22.0 0.5 0.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 6052. 1. 4. 27.0 9.0 0.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 6056. 1. 4. 27.0 0.5 0.0 3. 16.0 11.5 4. 6. 0.0 0. 1. + 6064. 1. 4. 27.0 6.0 2.0 3. 12.0 14.0 2. 6. 0.0 0. 1. + 6072. 1. 4. 22.0 2.5 0.0 2. 14.0 6.5 4. 4. 0.0 0. 1. + 6077. 1. 5. 22.0 6.0 0.0 3. 12.0 11.5 4. 6. 0.0 0. 1. + 6081. 1. 4. 22.0 0.5 0.0 2. 12.0 9.0 3. 5. 0.0 0. 1. + 6093. 1. 5. 17.5 0.5 0.0 2. 12.0 11.5 4. 2. 0.0 0. 1. + 6095. 1. 5. 27.0 2.5 1.0 1. 17.0 40.0 4. 5. 0.0 0. 1. + 6098. 1. 3. 27.0 9.0 2.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 6102. 1. 4. 27.0 0.5 2.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 6111. 1. 4. 22.0 2.5 0.0 2. 14.0 11.5 2. 5. 0.0 0. 1. + 6123. 1. 4. 27.0 2.5 0.0 3. 12.0 14.0 3. 2. 0.0 0. 1. + 6124. 1. 2. 27.0 6.0 2.0 2. 14.0 14.0 3. 2. 0.0 0. 1. + 6130. 1. 5. 27.0 2.5 0.0 3. 14.0 20.0 2. 4. 0.0 0. 1. + 6150. 1. 5. 42.0 9.0 0.0 4. 20.0 40.0 4. 4. 0.0 0. 1. + 6155. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 4. 3. 0.0 0. 1. + 6156. 1. 5. 37.0 13.0 5.5 4. 17.0 20.0 4. 5. 0.0 0. 1. + 6158. 1. 4. 42.0 23.0 2.0 3. 14.0 20.0 4. 3. 0.0 0. 1. + 6161. 1. 5. 32.0 16.5 3.0 4. 14.0 20.0 4. 3. 0.0 0. 1. + 6162. 1. 5. 37.0 16.5 1.0 3. 12.0 14.0 3. 5. 0.0 0. 1. + 6167. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 6177. 1. 5. 27.0 2.5 0.0 3. 20.0 20.0 6. 1. 0.0 0. 1. + 6189. 1. 4. 42.0 23.0 3.0 3. 14.0 40.0 4. 5. 0.0 0. 1. + 6194. 1. 4. 42.0 23.0 4.0 1. 16.0 20.0 4. 5. 0.0 0. 1. + 6197. 1. 3. 27.0 2.5 0.0 2. 16.0 20.0 3. 5. 0.0 0. 1. + 6200. 1. 5. 37.0 16.5 3.0 2. 16.0 20.0 4. 3. 0.0 0. 1. + 6202. 1. 5. 42.0 23.0 5.5 3. 14.0 14.0 4. 4. 0.0 0. 1. + 6206. 1. 4. 22.0 2.5 1.0 1. 14.0 11.5 3. 4. 0.0 0. 1. + 6208. 1. 5. 27.0 9.0 1.0 3. 12.0 20.0 2. 5. 0.0 0. 1. + 6211. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 6. 0.0 0. 1. + 6216. 1. 4. 22.0 2.5 1.0 2. 14.0 6.5 2. 2. 0.0 0. 1. + 6219. 1. 3. 42.0 23.0 3.0 4. 12.0 14.0 3. 4. 0.0 0. 1. + 6220. 1. 5. 42.0 23.0 3.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 6224. 1. 4. 32.0 13.0 2.0 1. 14.0 14.0 3. 4. 0.0 0. 1. + 6232. 1. 4. 37.0 16.5 5.5 3. 12.0 4.0 4. 5. 0.0 0. 1. + 6240. 1. 4. 27.0 6.0 1.0 4. 12.0 20.0 3. 4. 0.0 0. 1. + 6241. 1. 5. 42.0 23.0 5.5 3. 16.0 20.0 4. 5. 0.0 0. 1. + 6242. 1. 5. 32.0 6.0 2.0 2. 16.0 20.0 2. 5. 0.0 0. 1. + 6248. 1. 2. 32.0 9.0 2.0 4. 14.0 11.5 4. 5. 0.0 0. 1. + 6253. 1. 5. 27.0 13.0 2.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 6255. 1. 5. 42.0 23.0 5.5 4. 14.0 20.0 4. 2. 0.0 0. 1. + 6259. 1. 5. 42.0 23.0 3.0 3. 12.0 11.5 3. 5. 0.0 0. 1. + 6264. 1. 5. 22.0 0.5 0.0 2. 14.0 14.0 4. 3. 0.0 0. 1. + 6276. 1. 3. 37.0 16.5 2.0 3. 12.0 20.0 5. 2. 0.0 0. 1. + 6277. 1. 4. 27.0 6.0 2.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 6282. 1. 4. 37.0 16.5 2.0 2. 14.0 20.0 3. 2. 0.0 0. 1. + 6283. 1. 2. 32.0 16.5 2.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 6287. 1. 4. 27.0 2.5 0.0 2. 14.0 20.0 4. 4. 0.0 0. 1. + 6290. 1. 5. 37.0 23.0 2.0 2. 14.0 11.5 3. 2. 0.0 0. 1. + 6296. 1. 5. 22.0 0.5 0.0 4. 14.0 6.5 4. 2. 0.0 0. 1. + 6297. 1. 5. 42.0 16.5 3.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 6319. 1. 4. 37.0 13.0 3.0 2. 12.0 9.0 2. 4. 0.0 0. 1. + 6321. 1. 5. 32.0 13.0 2.0 4. 12.0 14.0 2. 2. 0.0 0. 1. + 6330. 1. 4. 22.0 2.5 0.0 3. 12.0 14.0 3. 2. 0.0 0. 1. + 6336. 1. 5. 27.0 2.5 1.0 3. 14.0 11.5 5. 5. 0.0 0. 1. + 6342. 1. 5. 22.0 0.5 0.0 4. 16.0 9.0 4. 6. 0.0 0. 1. + 6347. 1. 5. 37.0 16.5 5.5 3. 12.0 20.0 2. 4. 0.0 0. 1. + 6348. 1. 4. 32.0 9.0 2.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 6351. 1. 5. 22.0 2.5 0.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 6355. 1. 5. 22.0 2.5 0.0 3. 16.0 11.5 4. 5. 0.0 0. 1. + 6356. 1. 4. 32.0 16.5 4.0 3. 12.0 20.0 2. 4. 0.0 0. 1. + 6357. 1. 5. 22.0 2.5 0.0 4. 14.0 14.0 3. 2. 0.0 0. 1. + 6359. 1. 5. 37.0 23.0 3.0 4. 14.0 14.0 2. 4. 0.0 0. 1. + 6374. 1. 5. 27.0 6.0 0.0 2. 16.0 11.5 4. 1. 0.0 0. 1. + 6376. 1. 5. 22.0 2.5 0.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 6379. 1. 5. 32.0 6.0 0.0 4. 20.0 40.0 4. 4. 0.0 0. 1. + 6383. 1. 4. 32.0 16.5 2.0 2. 14.0 14.0 4. 2. 0.0 0. 1. + 6386. 1. 4. 22.0 0.5 0.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 6387. 1. 3. 22.0 2.5 0.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 6393. 1. 4. 22.0 2.5 0.0 1. 14.0 20.0 5. 4. 0.0 0. 1. + 6395. 1. 5. 27.0 2.5 0.0 2. 17.0 20.0 4. 5. 0.0 0. 1. + 6397. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 5. 0.0 0. 1. + 6398. 1. 2. 42.0 16.5 3.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 6399. 1. 3. 22.0 2.5 0.0 4. 14.0 20.0 3. 3. 0.0 0. 1. + 6401. 1. 5. 27.0 6.0 0.0 2. 20.0 20.0 4. 4. 0.0 0. 1. + 6402. 1. 5. 27.0 6.0 1.0 2. 12.0 14.0 4. 2. 0.0 0. 1. + 6412. 1. 4. 22.0 2.5 0.0 1. 14.0 11.5 3. 4. 0.0 0. 1. + 6413. 1. 4. 37.0 16.5 3.0 1. 12.0 6.5 3. 2. 0.0 0. 1. + 6414. 1. 4. 32.0 16.5 3.0 2. 14.0 14.0 3. 2. 0.0 0. 1. + 6417. 1. 3. 27.0 6.0 1.0 1. 14.0 14.0 3. 4. 0.0 0. 1. + 6421. 1. 4. 27.0 6.0 1.0 3. 17.0 20.0 4. 3. 0.0 0. 1. + 6424. 1. 4. 42.0 23.0 2.0 3. 20.0 40.0 4. 4. 0.0 0. 1. + 6429. 1. 4. 27.0 6.0 2.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 6430. 1. 4. 32.0 9.0 2.0 3. 12.0 20.0 5. 5. 0.0 0. 1. + 6432. 1. 5. 42.0 23.0 2.0 2. 14.0 20.0 3. 2. 0.0 0. 1. + 6433. 1. 5. 32.0 16.5 2.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 6444. 1. 4. 22.0 2.5 0.0 3. 16.0 11.5 3. 4. 0.0 0. 1. + 6448. 1. 5. 27.0 6.0 2.0 3. 14.0 14.0 4. 3. 0.0 0. 1. + 6451. 1. 5. 27.0 2.5 1.0 2. 12.0 11.5 3. 3. 0.0 0. 1. + 6452. 1. 5. 27.0 6.0 1.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 6453. 1. 4. 32.0 6.0 1.0 3. 12.0 6.5 2. 2. 0.0 0. 1. + 6458. 1. 4. 22.0 2.5 0.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 6468. 1. 5. 27.0 2.5 1.0 3. 16.0 11.5 3. 6. 0.0 0. 1. + 6469. 1. 3. 27.0 6.0 0.0 1. 17.0 20.0 4. 6. 0.0 0. 1. + 6479. 1. 5. 27.0 2.5 0.0 2. 17.0 20.0 4. 6. 0.0 0. 1. + 6484. 1. 4. 22.0 2.5 0.0 3. 12.0 20.0 5. 5. 0.0 0. 1. + 6490. 1. 4. 22.0 6.0 1.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 6494. 1. 3. 32.0 2.5 0.0 1. 20.0 14.0 6. 6. 0.0 0. 1. + 6507. 1. 2. 37.0 23.0 5.5 2. 14.0 20.0 3. 4. 0.0 0. 1. + 6510. 1. 3. 42.0 23.0 4.0 3. 12.0 9.0 2. 2. 0.0 0. 1. + 6517. 1. 4. 22.0 2.5 1.0 1. 12.0 20.0 3. 3. 0.0 0. 1. + 6519. 1. 5. 42.0 16.5 4.0 3. 16.0 20.0 4. 2. 0.0 0. 1. + 6523. 1. 5. 22.0 0.5 0.0 3. 14.0 6.5 3. 5. 0.0 0. 1. + 6524. 1. 4. 22.0 0.5 0.0 2. 12.0 6.5 2. 5. 0.0 0. 1. + 6527. 1. 4. 27.0 6.0 2.0 3. 12.0 20.0 4. 5. 0.0 0. 1. + 6529. 1. 5. 27.0 2.5 0.0 4. 16.0 6.5 3. 1. 0.0 0. 1. + 6537. 1. 4. 22.0 2.5 0.0 3. 12.0 20.0 5. 2. 0.0 0. 1. + 6539. 1. 3. 22.0 0.5 0.0 3. 14.0 9.0 3. 5. 0.0 0. 1. + 6540. 1. 5. 27.0 2.5 0.0 2. 16.0 40.0 3. 5. 0.0 0. 1. + 6542. 1. 5. 27.0 0.5 0.0 2. 20.0 20.0 4. 2. 0.0 0. 1. + 6543. 1. 5. 32.0 16.5 4.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 6546. 1. 4. 22.0 2.5 1.0 3. 12.0 14.0 2. 4. 0.0 0. 1. + 6552. 1. 3. 22.0 2.5 0.0 1. 16.0 9.0 3. 2. 0.0 0. 1. + 6559. 1. 4. 27.0 6.0 1.0 2. 12.0 20.0 4. 4. 0.0 0. 1. + 6562. 1. 4. 17.5 2.5 0.0 3. 14.0 6.5 2. 2. 0.0 0. 1. + 6570. 1. 5. 37.0 16.5 4.0 2. 17.0 20.0 4. 6. 0.0 0. 1. + 6571. 1. 4. 32.0 16.5 5.5 1. 14.0 11.5 2. 2. 0.0 0. 1. + 6574. 1. 5. 22.0 0.5 0.0 4. 16.0 14.0 4. 4. 0.0 0. 1. + 6576. 1. 5. 22.0 2.5 0.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 6578. 1. 5. 17.5 0.5 0.0 2. 12.0 11.5 4. 4. 0.0 0. 1. + 6585. 1. 5. 22.0 2.5 1.0 4. 14.0 20.0 2. 2. 0.0 0. 1. + 6589. 1. 5. 42.0 9.0 0.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 6593. 1. 4. 27.0 6.0 1.0 2. 14.0 9.0 3. 2. 0.0 0. 1. + 6596. 1. 3. 32.0 13.0 2.0 2. 16.0 11.5 2. 2. 0.0 0. 1. + 6602. 1. 4. 32.0 13.0 2.0 2. 12.0 20.0 2. 2. 0.0 0. 1. + 6606. 1. 5. 22.0 2.5 0.0 3. 17.0 9.0 3. 4. 0.0 0. 1. + 6609. 1. 4. 27.0 9.0 2.0 2. 12.0 11.5 2. 4. 0.0 0. 1. + 6613. 1. 4. 37.0 23.0 2.0 4. 14.0 20.0 3. 6. 0.0 0. 1. + 6615. 1. 4. 42.0 23.0 3.0 2. 14.0 40.0 4. 6. 0.0 0. 1. + 6616. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 6620. 1. 5. 27.0 9.0 2.0 3. 14.0 11.5 4. 4. 0.0 0. 1. + 6623. 1. 2. 32.0 13.0 1.0 3. 14.0 20.0 5. 3. 0.0 0. 1. + 6638. 1. 1. 42.0 23.0 2.0 3. 12.0 14.0 2. 2. 0.0 0. 1. + 6639. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 6641. 1. 4. 27.0 6.0 1.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 6646. 1. 4. 42.0 23.0 4.0 3. 12.0 14.0 2. 5. 0.0 0. 1. + 6648. 1. 5. 32.0 16.5 3.0 1. 14.0 14.0 5. 5. 0.0 0. 1. + 6649. 1. 5. 27.0 2.5 0.0 4. 16.0 40.0 3. 6. 0.0 0. 1. + 6651. 1. 4. 27.0 9.0 0.0 2. 12.0 14.0 5. 2. 0.0 0. 1. + 6652. 1. 3. 22.0 2.5 0.0 1. 14.0 11.5 3. 5. 0.0 0. 1. + 6658. 1. 5. 27.0 2.5 0.0 2. 12.0 14.0 3. 6. 0.0 0. 1. + 6661. 1. 5. 32.0 9.0 3.0 2. 12.0 11.5 3. 3. 0.0 0. 1. + 6667. 1. 5. 22.0 0.5 0.0 3. 14.0 20.0 2. 4. 0.0 0. 1. + 6671. 1. 4. 27.0 2.5 1.0 1. 12.0 14.0 3. 3. 0.0 0. 1. + 6683. 1. 4. 37.0 16.5 3.0 3. 12.0 14.0 3. 2. 0.0 0. 1. + 6686. 1. 5. 22.0 2.5 0.0 3. 12.0 6.5 5. 4. 0.0 0. 1. + 6690. 1. 3. 22.0 2.5 0.0 2. 14.0 20.0 4. 2. 0.0 0. 1. + 6697. 1. 5. 32.0 13.0 2.0 2. 12.0 11.5 2. 4. 0.0 0. 1. + 6701. 1. 5. 32.0 9.0 2.0 3. 17.0 40.0 4. 5. 0.0 0. 1. + 6708. 1. 4. 37.0 16.5 3.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 6715. 1. 5. 27.0 2.5 0.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 6718. 1. 2. 42.0 23.0 4.0 1. 17.0 40.0 3. 5. 0.0 0. 1. + 6719. 1. 4. 27.0 6.0 2.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 6725. 1. 4. 42.0 23.0 3.0 4. 14.0 20.0 4. 4. 0.0 0. 1. + 6733. 1. 5. 22.0 0.5 0.0 4. 14.0 9.0 3. 1. 0.0 0. 1. + 6737. 1. 5. 27.0 2.5 0.0 3. 16.0 40.0 4. 5. 0.0 0. 1. + 6741. 1. 4. 22.0 2.5 0.0 3. 16.0 9.0 4. 4. 0.0 0. 1. + 6742. 1. 3. 32.0 6.0 2.0 3. 16.0 11.5 4. 5. 0.0 0. 1. + 6749. 1. 5. 22.0 6.0 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 6750. 1. 4. 22.0 2.5 1.0 2. 12.0 9.0 2. 4. 0.0 0. 1. + 6756. 1. 5. 27.0 0.5 0.0 2. 14.0 11.5 4. 4. 0.0 0. 1. + 6767. 1. 3. 32.0 6.0 3.0 4. 16.0 40.0 5. 6. 0.0 0. 1. + 6769. 1. 4. 27.0 0.5 0.0 4. 14.0 11.5 3. 4. 0.0 0. 1. + 6776. 1. 5. 27.0 2.5 0.0 3. 16.0 40.0 4. 5. 0.0 0. 1. + 6778. 1. 4. 22.0 6.0 0.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 6781. 1. 4. 22.0 2.5 0.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 6784. 1. 4. 22.0 2.5 0.0 1. 17.0 20.0 4. 4. 0.0 0. 1. + 6800. 1. 4. 27.0 6.0 2.0 4. 14.0 14.0 4. 5. 0.0 0. 1. + 6802. 1. 5. 22.0 2.5 0.0 1. 16.0 11.5 2. 5. 0.0 0. 1. + 6803. 1. 4. 27.0 6.0 2.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 6808. 1. 5. 22.0 0.5 0.0 2. 16.0 20.0 3. 5. 0.0 0. 1. + 6812. 1. 5. 32.0 13.0 3.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 6816. 1. 4. 32.0 6.0 0.0 3. 17.0 40.0 2. 2. 0.0 0. 1. + 6824. 1. 5. 32.0 13.0 2.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 6844. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 5. 2. 0.0 0. 1. + 6846. 1. 5. 27.0 13.0 2.0 2. 14.0 20.0 4. 4. 0.0 0. 1. + 6847. 1. 4. 27.0 6.0 1.0 4. 16.0 14.0 4. 4. 0.0 0. 1. + 6852. 1. 5. 32.0 16.5 5.5 4. 14.0 20.0 4. 6. 0.0 0. 1. + 6855. 1. 5. 37.0 16.5 3.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 6865. 1. 4. 22.0 2.5 0.0 4. 14.0 20.0 3. 2. 0.0 0. 1. + 6885. 1. 5. 37.0 16.5 4.0 2. 14.0 14.0 3. 2. 0.0 0. 1. + 6886. 1. 3. 32.0 16.5 3.0 3. 12.0 14.0 3. 3. 0.0 0. 1. + 6888. 1. 5. 22.0 2.5 0.0 1. 14.0 9.0 2. 2. 0.0 0. 1. + 6895. 1. 5. 22.0 2.5 2.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 6906. 1. 3. 37.0 16.5 2.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 6907. 1. 4. 22.0 2.5 0.0 2. 16.0 20.0 3. 6. 0.0 0. 1. + 6912. 1. 5. 22.0 0.5 0.0 3. 12.0 11.5 5. 4. 0.0 0. 1. + 6914. 1. 5. 42.0 23.0 3.0 4. 16.0 40.0 4. 5. 0.0 0. 1. + 6915. 1. 4. 22.0 6.0 2.0 2. 14.0 20.0 5. 5. 0.0 0. 1. + 6922. 1. 5. 27.0 2.5 0.0 2. 17.0 20.0 4. 6. 0.0 0. 1. + 6927. 1. 5. 27.0 6.0 0.0 1. 12.0 20.0 3. 4. 0.0 0. 1. + 6933. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 2. 4. 0.0 0. 1. + 6934. 1. 4. 37.0 23.0 3.0 4. 14.0 14.0 4. 4. 0.0 0. 1. + 6938. 1. 3. 27.0 2.5 0.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 6941. 1. 5. 27.0 2.5 0.0 2. 14.0 9.0 4. 3. 0.0 0. 1. + 6946. 1. 5. 22.0 2.5 0.0 2. 14.0 40.0 3. 5. 0.0 0. 1. + 6951. 1. 4. 32.0 13.0 2.0 2. 14.0 20.0 2. 3. 0.0 0. 1. + 6955. 1. 4. 32.0 16.5 2.0 2. 17.0 40.0 4. 6. 0.0 0. 1. + 6957. 1. 4. 27.0 6.0 2.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 6959. 1. 4. 22.0 0.5 0.0 3. 12.0 9.0 3. 4. 0.0 0. 1. + 6964. 1. 3. 22.0 2.5 1.0 4. 14.0 11.5 2. 2. 0.0 0. 1. + 6968. 1. 3. 27.0 2.5 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 6969. 1. 3. 27.0 6.0 2.0 2. 17.0 20.0 6. 4. 0.0 0. 1. + 6970. 1. 5. 27.0 2.5 0.0 2. 12.0 11.5 2. 4. 0.0 0. 1. + 6979. 1. 5. 22.0 0.5 0.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 6980. 1. 2. 42.0 23.0 5.5 4. 12.0 20.0 3. 4. 0.0 0. 1. + 6984. 1. 4. 27.0 2.5 0.0 4. 17.0 20.0 5. 5. 0.0 0. 1. + 6988. 1. 5. 27.0 6.0 2.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 6994. 1. 4. 42.0 23.0 2.0 3. 12.0 4.0 3. 2. 0.0 0. 1. + 6996. 1. 5. 27.0 6.0 1.0 2. 14.0 11.5 3. 5. 0.0 0. 1. + 6999. 1. 5. 22.0 2.5 0.0 3. 14.0 6.5 4. 2. 0.0 0. 1. + 7000. 1. 3. 22.0 6.0 3.0 2. 12.0 14.0 2. 2. 0.0 0. 1. + 7005. 1. 5. 17.5 0.5 0.0 2. 12.0 14.0 3. 5. 0.0 0. 1. + 7006. 1. 4. 27.0 6.0 0.0 3. 14.0 6.5 3. 1. 0.0 0. 1. + 7009. 1. 5. 22.0 2.5 0.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 7016. 1. 5. 27.0 0.5 0.0 4. 14.0 14.0 3. 4. 0.0 0. 1. + 7017. 1. 4. 42.0 23.0 5.5 4. 16.0 20.0 4. 5. 0.0 0. 1. + 7024. 1. 5. 37.0 16.5 3.0 2. 12.0 14.0 3. 3. 0.0 0. 1. + 7026. 1. 4. 42.0 23.0 3.0 2. 12.0 20.0 3. 3. 0.0 0. 1. + 7027. 1. 4. 27.0 2.5 0.0 3. 16.0 6.5 4. 4. 0.0 0. 1. + 7032. 1. 4. 22.0 2.5 0.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 7037. 1. 5. 22.0 0.5 0.0 2. 20.0 14.0 4. 5. 0.0 0. 1. + 7038. 1. 5. 22.0 2.5 1.0 2. 12.0 6.5 3. 4. 0.0 0. 1. + 7043. 1. 4. 22.0 6.0 3.0 3. 12.0 9.0 2. 2. 0.0 0. 1. + 7049. 1. 5. 42.0 23.0 5.5 2. 16.0 20.0 4. 4. 0.0 0. 1. + 7050. 1. 3. 32.0 6.0 0.0 1. 14.0 40.0 3. 6. 0.0 0. 1. + 7053. 1. 5. 37.0 13.0 0.0 2. 14.0 20.0 4. 6. 0.0 0. 1. + 7061. 1. 5. 27.0 2.5 0.0 1. 17.0 20.0 4. 4. 0.0 0. 1. + 7068. 1. 3. 32.0 6.0 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 7070. 1. 5. 27.0 2.5 0.0 2. 14.0 20.0 5. 4. 0.0 0. 1. + 7072. 1. 5. 42.0 23.0 4.0 3. 14.0 20.0 2. 5. 0.0 0. 1. + 7077. 1. 5. 32.0 16.5 5.5 4. 12.0 20.0 5. 5. 0.0 0. 1. + 7078. 1. 4. 27.0 6.0 2.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 7085. 1. 3. 22.0 2.5 0.0 2. 12.0 20.0 2. 2. 0.0 0. 1. + 7086. 1. 2. 27.0 2.5 0.0 1. 20.0 9.0 4. 2. 0.0 0. 1. + 7093. 1. 5. 37.0 16.5 5.5 3. 9.0 20.0 2. 5. 0.0 0. 1. + 7096. 1. 3. 37.0 23.0 3.0 2. 12.0 20.0 2. 4. 0.0 0. 1. + 7099. 1. 5. 22.0 2.5 1.0 3. 12.0 6.5 2. 3. 0.0 0. 1. + 7104. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 7108. 1. 5. 22.0 2.5 0.0 4. 14.0 14.0 2. 2. 0.0 0. 1. + 7111. 1. 5. 27.0 2.5 0.0 4. 16.0 14.0 4. 4. 0.0 0. 1. + 7123. 1. 4. 22.0 2.5 0.0 3. 14.0 9.0 3. 2. 0.0 0. 1. + 7124. 1. 4. 32.0 6.0 2.0 3. 14.0 20.0 2. 2. 0.0 0. 1. + 7125. 1. 5. 17.5 2.5 0.0 1. 12.0 9.0 3. 2. 0.0 0. 1. + 7127. 1. 4. 27.0 9.0 2.0 1. 12.0 20.0 2. 2. 0.0 0. 1. + 7130. 1. 3. 32.0 16.5 1.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 7133. 1. 4. 27.0 6.0 1.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 7135. 1. 5. 27.0 6.0 2.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 7142. 1. 5. 27.0 6.0 1.0 3. 17.0 40.0 4. 5. 0.0 0. 1. + 7143. 1. 4. 22.0 0.5 0.0 2. 14.0 11.5 3. 2. 0.0 0. 1. + 7144. 1. 5. 22.0 2.5 1.0 2. 12.0 20.0 4. 4. 0.0 0. 1. + 7145. 1. 4. 27.0 9.0 2.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 7146. 1. 4. 22.0 2.5 1.0 3. 12.0 11.5 3. 5. 0.0 0. 1. + 7149. 1. 4. 22.0 2.5 0.0 3. 16.0 6.5 4. 1. 0.0 0. 1. + 7152. 1. 5. 32.0 16.5 1.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 7161. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 3. 2. 0.0 0. 1. + 7162. 1. 5. 22.0 2.5 1.0 3. 12.0 6.5 3. 4. 0.0 0. 1. + 7164. 1. 5. 27.0 13.0 1.0 2. 12.0 20.0 3. 3. 0.0 0. 1. + 7166. 1. 4. 27.0 6.0 2.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 7168. 1. 3. 42.0 23.0 4.0 2. 16.0 20.0 4. 6. 0.0 0. 1. + 7171. 1. 3. 37.0 16.5 2.0 2. 12.0 20.0 2. 2. 0.0 0. 1. + 7174. 1. 5. 27.0 6.0 1.0 3. 12.0 20.0 2. 2. 0.0 0. 1. + 7175. 1. 5. 22.0 0.5 0.0 2. 16.0 20.0 4. 6. 0.0 0. 1. + 7178. 1. 5. 22.0 2.5 0.0 4. 14.0 4.0 1. 1. 0.0 0. 1. + 7189. 1. 4. 27.0 6.0 1.0 4. 16.0 11.5 4. 4. 0.0 0. 1. + 7204. 1. 3. 42.0 23.0 2.0 4. 14.0 20.0 2. 5. 0.0 0. 1. + 7206. 1. 3. 27.0 6.0 1.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 7209. 1. 4. 22.0 2.5 0.0 3. 14.0 9.0 4. 4. 0.0 0. 1. + 7211. 1. 5. 22.0 2.5 0.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 7213. 1. 3. 32.0 13.0 2.0 2. 12.0 14.0 4. 4. 0.0 0. 1. + 7214. 1. 4. 37.0 16.5 5.5 3. 14.0 20.0 1. 3. 0.0 0. 1. + 7217. 1. 4. 37.0 23.0 5.5 1. 14.0 14.0 3. 2. 0.0 0. 1. + 7218. 1. 5. 22.0 0.5 0.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 7219. 1. 5. 42.0 16.5 3.0 4. 17.0 40.0 4. 4. 0.0 0. 1. + 7221. 1. 4. 27.0 2.5 0.0 3. 17.0 11.5 4. 5. 0.0 0. 1. + 7232. 1. 4. 32.0 16.5 2.0 1. 12.0 14.0 5. 5. 0.0 0. 1. + 7234. 1. 4. 22.0 2.5 0.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 7241. 1. 3. 22.0 6.0 2.0 2. 14.0 9.0 2. 4. 0.0 0. 1. + 7246. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 4. 6. 0.0 0. 1. + 7248. 1. 5. 37.0 13.0 0.0 1. 12.0 40.0 5. 5. 0.0 0. 1. + 7253. 1. 4. 42.0 23.0 5.5 2. 14.0 40.0 4. 3. 0.0 0. 1. + 7255. 1. 5. 37.0 16.5 3.0 2. 14.0 40.0 3. 6. 0.0 0. 1. + 7257. 1. 5. 27.0 6.0 0.0 3. 16.0 40.0 6. 5. 0.0 0. 1. + 7261. 1. 4. 22.0 9.0 3.0 3. 12.0 11.5 5. 5. 0.0 0. 1. + 7264. 1. 5. 17.5 2.5 0.0 3. 12.0 6.5 2. 2. 0.0 0. 1. + 7267. 1. 5. 42.0 23.0 3.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 7269. 1. 5. 37.0 13.0 2.0 4. 17.0 20.0 4. 5. 0.0 0. 1. + 7273. 1. 4. 37.0 13.0 0.0 2. 14.0 40.0 5. 5. 0.0 0. 1. + 7276. 1. 2. 27.0 6.0 2.0 3. 14.0 11.5 5. 5. 0.0 0. 1. + 7279. 1. 5. 22.0 2.5 2.0 4. 12.0 11.5 3. 5. 0.0 0. 1. + 7281. 1. 4. 22.0 6.0 1.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 7287. 1. 4. 27.0 6.0 1.0 2. 14.0 20.0 3. 3. 0.0 0. 1. + 7289. 1. 5. 42.0 23.0 4.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 7299. 1. 5. 27.0 2.5 0.0 4. 16.0 20.0 3. 3. 0.0 0. 1. + 7302. 1. 5. 22.0 2.5 0.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 7306. 1. 5. 42.0 13.0 0.0 4. 14.0 40.0 5. 2. 0.0 0. 1. + 7308. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 7309. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 3. 2. 0.0 0. 1. + 7311. 1. 5. 22.0 2.5 1.0 3. 17.0 11.5 4. 2. 0.0 0. 1. + 7316. 1. 5. 22.0 0.5 0.0 3. 17.0 11.5 4. 3. 0.0 0. 1. + 7324. 1. 4. 32.0 9.0 3.0 3. 16.0 40.0 4. 5. 0.0 0. 1. + 7325. 1. 4. 32.0 9.0 2.0 3. 14.0 11.5 2. 2. 0.0 0. 1. + 7328. 1. 4. 27.0 6.0 2.0 1. 14.0 6.5 4. 4. 0.0 0. 1. + 7330. 1. 5. 32.0 2.5 4.0 3. 16.0 20.0 5. 4. 0.0 0. 1. + 7331. 1. 5. 22.0 0.5 0.0 2. 14.0 14.0 2. 5. 0.0 0. 1. + 7332. 1. 5. 27.0 2.5 0.0 3. 14.0 9.0 3. 2. 0.0 0. 1. + 7337. 1. 4. 32.0 16.5 3.0 3. 9.0 20.0 4. 4. 0.0 0. 1. + 7340. 1. 5. 42.0 23.0 2.0 1. 14.0 20.0 3. 4. 0.0 0. 1. + 7358. 1. 3. 32.0 13.0 3.0 2. 16.0 11.5 4. 5. 0.0 0. 1. + 7362. 1. 4. 27.0 6.0 1.0 3. 12.0 14.0 3. 2. 0.0 0. 1. + 7366. 1. 5. 27.0 9.0 2.0 4. 12.0 11.5 2. 2. 0.0 0. 1. + 7372. 1. 4. 27.0 6.0 2.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 7373. 1. 4. 22.0 2.5 0.0 2. 14.0 11.5 3. 1. 0.0 0. 1. + 7375. 1. 5. 17.5 0.5 0.0 1. 14.0 6.5 1. 1. 0.0 0. 1. + 7381. 1. 4. 32.0 16.5 3.0 3. 14.0 40.0 5. 5. 0.0 0. 1. + 7384. 1. 2. 22.0 6.0 1.0 2. 14.0 20.0 4. 2. 0.0 0. 1. + 7385. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 7388. 1. 4. 27.0 9.0 1.0 3. 12.0 11.5 4. 2. 0.0 0. 1. + 7391. 1. 5. 22.0 2.5 1.0 2. 12.0 6.5 4. 1. 0.0 0. 1. + 7392. 1. 5. 27.0 6.0 0.0 3. 12.0 20.0 4. 2. 0.0 0. 1. + 7394. 1. 3. 42.0 23.0 3.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 7403. 1. 5. 42.0 16.5 3.0 3. 16.0 14.0 4. 4. 0.0 0. 1. + 7405. 1. 5. 27.0 6.0 1.0 4. 14.0 11.5 2. 2. 0.0 0. 1. + 7406. 1. 5. 22.0 6.0 1.0 4. 14.0 11.5 5. 2. 0.0 0. 1. + 7408. 1. 4. 22.0 0.5 0.0 2. 16.0 20.0 3. 2. 0.0 0. 1. + 7409. 1. 4. 37.0 16.5 4.0 2. 14.0 11.5 2. 5. 0.0 0. 1. + 7417. 1. 5. 32.0 16.5 3.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 7425. 1. 5. 22.0 0.5 0.0 2. 14.0 9.0 3. 2. 0.0 0. 1. + 7427. 1. 5. 32.0 16.5 3.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 7429. 1. 5. 27.0 0.5 0.0 2. 20.0 20.0 4. 2. 0.0 0. 1. + 7438. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 7440. 1. 5. 27.0 9.0 2.0 2. 12.0 14.0 4. 4. 0.0 0. 1. + 7443. 1. 4. 22.0 2.5 1.0 2. 12.0 6.5 2. 3. 0.0 0. 1. + 7450. 1. 4. 27.0 6.0 3.0 3. 16.0 20.0 3. 4. 0.0 0. 1. + 7451. 1. 3. 42.0 16.5 3.0 4. 9.0 20.0 5. 4. 0.0 0. 1. + 7454. 1. 3. 32.0 13.0 1.0 3. 9.0 20.0 3. 5. 0.0 0. 1. + 7455. 1. 5. 32.0 16.5 3.0 3. 14.0 11.5 4. 4. 0.0 0. 1. + 7456. 1. 5. 27.0 6.0 1.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 7460. 1. 4. 32.0 16.5 2.0 2. 12.0 11.5 3. 3. 0.0 0. 1. + 7462. 1. 4. 32.0 13.0 3.0 3. 12.0 14.0 2. 4. 0.0 0. 1. + 7464. 1. 5. 22.0 2.5 0.0 3. 16.0 6.5 4. 1. 0.0 0. 1. + 7469. 1. 5. 22.0 2.5 0.0 2. 16.0 9.0 4. 4. 0.0 0. 1. + 7471. 1. 4. 27.0 13.0 2.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 7473. 1. 5. 17.5 0.5 0.0 3. 12.0 6.5 3. 1. 0.0 0. 1. + 7478. 1. 4. 27.0 9.0 2.0 3. 14.0 11.5 2. 1. 0.0 0. 1. + 7480. 1. 4. 32.0 9.0 2.0 3. 14.0 20.0 3. 3. 0.0 0. 1. + 7483. 1. 5. 32.0 16.5 3.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 7488. 1. 5. 27.0 6.0 0.0 4. 20.0 20.0 3. 4. 0.0 0. 1. + 7489. 1. 5. 32.0 16.5 2.0 4. 14.0 20.0 4. 4. 0.0 0. 1. + 7497. 1. 4. 37.0 16.5 5.5 1. 12.0 20.0 3. 4. 0.0 0. 1. + 7501. 1. 4. 22.0 2.5 0.0 3. 14.0 11.5 3. 3. 0.0 0. 1. + 7507. 1. 5. 22.0 2.5 0.0 3. 14.0 6.5 3. 4. 0.0 0. 1. + 7511. 1. 4. 27.0 2.5 0.0 2. 16.0 40.0 3. 5. 0.0 0. 1. + 7512. 1. 5. 42.0 23.0 3.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 7513. 1. 5. 22.0 2.5 1.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 7514. 1. 5. 27.0 6.0 0.0 3. 16.0 9.0 3. 2. 0.0 0. 1. + 7516. 1. 4. 27.0 6.0 0.0 2. 14.0 9.0 2. 2. 0.0 0. 1. + 7518. 1. 4. 32.0 13.0 3.0 3. 14.0 14.0 4. 2. 0.0 0. 1. + 7519. 1. 5. 27.0 9.0 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 7520. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 5. 0.0 0. 1. + 7523. 1. 1. 42.0 23.0 4.0 4. 16.0 14.0 4. 2. 0.0 0. 1. + 7525. 1. 5. 22.0 6.0 0.0 1. 14.0 20.0 3. 2. 0.0 0. 1. + 7528. 1. 5. 32.0 13.0 3.0 1. 14.0 11.5 3. 2. 0.0 0. 1. + 7531. 1. 4. 42.0 23.0 4.0 4. 14.0 14.0 1. 5. 0.0 0. 1. + 7534. 1. 3. 22.0 2.5 0.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 7541. 1. 5. 27.0 6.0 1.0 2. 17.0 40.0 4. 4. 0.0 0. 1. + 7547. 1. 3. 42.0 23.0 3.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 7558. 1. 4. 42.0 23.0 5.5 2. 12.0 11.5 3. 5. 0.0 0. 1. + 7560. 1. 4. 22.0 6.0 0.0 1. 16.0 20.0 4. 5. 0.0 0. 1. + 7562. 1. 4. 22.0 2.5 0.0 2. 14.0 14.0 2. 4. 0.0 0. 1. + 7570. 1. 5. 27.0 6.0 2.0 4. 12.0 11.5 2. 4. 0.0 0. 1. + 7571. 1. 2. 42.0 23.0 2.0 3. 14.0 11.5 2. 2. 0.0 0. 1. + 7573. 1. 5. 32.0 16.5 3.0 3. 14.0 11.5 3. 2. 0.0 0. 1. + 7576. 1. 4. 42.0 23.0 5.5 4. 20.0 20.0 5. 6. 0.0 0. 1. + 7586. 1. 5. 22.0 2.5 0.0 1. 14.0 11.5 2. 5. 0.0 0. 1. + 7593. 1. 5. 42.0 23.0 5.5 3. 12.0 20.0 3. 5. 0.0 0. 1. + 7595. 1. 5. 27.0 0.5 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 7597. 1. 5. 22.0 2.5 0.0 4. 16.0 20.0 3. 2. 0.0 0. 1. + 7600. 1. 3. 27.0 9.0 2.0 3. 12.0 14.0 2. 5. 0.0 0. 1. + 7603. 1. 5. 22.0 0.5 0.0 2. 16.0 6.5 4. 5. 0.0 0. 1. + 7604. 1. 5. 22.0 2.5 1.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 7612. 1. 4. 32.0 16.5 4.0 2. 12.0 14.0 2. 2. 0.0 0. 1. + 7618. 1. 4. 32.0 13.0 0.0 2. 17.0 20.0 4. 2. 0.0 0. 1. + 7622. 1. 4. 27.0 2.5 0.0 2. 17.0 20.0 4. 3. 0.0 0. 1. + 7626. 1. 5. 32.0 16.5 2.0 2. 14.0 14.0 3. 3. 0.0 0. 1. + 7628. 1. 4. 27.0 9.0 2.0 2. 14.0 20.0 3. 6. 0.0 0. 1. + 7629. 1. 4. 22.0 2.5 2.0 3. 12.0 6.5 2. 4. 0.0 0. 1. + 7631. 1. 5. 27.0 2.5 0.0 1. 16.0 14.0 4. 6. 0.0 0. 1. + 7633. 1. 2. 22.0 2.5 1.0 3. 16.0 11.5 2. 4. 0.0 0. 1. + 7634. 1. 5. 42.0 23.0 5.5 2. 16.0 40.0 5. 5. 0.0 0. 1. + 7635. 1. 5. 27.0 2.5 0.0 3. 20.0 11.5 4. 4. 0.0 0. 1. + 7640. 1. 5. 37.0 13.0 2.0 2. 20.0 40.0 4. 4. 0.0 0. 1. + 7649. 1. 5. 42.0 16.5 1.0 4. 14.0 20.0 3. 5. 0.0 0. 1. + 7655. 1. 4. 32.0 13.0 2.0 3. 20.0 11.5 4. 4. 0.0 0. 1. + 7661. 1. 5. 22.0 2.5 1.0 3. 12.0 9.0 3. 1. 0.0 0. 1. + 7665. 1. 4. 42.0 23.0 2.0 2. 20.0 20.0 4. 3. 0.0 0. 1. + 7667. 1. 4. 27.0 9.0 2.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 7668. 1. 5. 22.0 2.5 0.0 3. 14.0 14.0 2. 5. 0.0 0. 1. + 7683. 1. 5. 22.0 2.5 0.0 4. 12.0 6.5 2. 4. 0.0 0. 1. + 7686. 1. 5. 22.0 2.5 0.0 3. 16.0 14.0 4. 4. 0.0 0. 1. + 7687. 1. 5. 32.0 16.5 3.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 7688. 1. 3. 42.0 16.5 3.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 7692. 1. 5. 27.0 2.5 1.0 1. 16.0 11.5 4. 5. 0.0 0. 1. + 7693. 1. 4. 37.0 16.5 2.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 7694. 1. 5. 37.0 2.5 0.0 3. 20.0 14.0 4. 3. 0.0 0. 1. + 7701. 1. 5. 32.0 13.0 3.0 1. 16.0 20.0 4. 5. 0.0 0. 1. + 7709. 1. 3. 37.0 16.5 2.0 3. 14.0 20.0 2. 2. 0.0 0. 1. + 7718. 1. 4. 42.0 23.0 2.0 4. 12.0 20.0 3. 4. 0.0 0. 1. + 7736. 1. 5. 27.0 2.5 0.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 7739. 1. 5. 22.0 2.5 0.0 3. 16.0 9.0 4. 1. 0.0 0. 1. + 7752. 1. 5. 22.0 6.0 0.0 2. 14.0 20.0 2. 2. 0.0 0. 1. + 7755. 1. 4. 27.0 2.5 0.0 3. 17.0 14.0 4. 4. 0.0 0. 1. + 7761. 1. 5. 22.0 2.5 0.0 3. 16.0 11.5 4. 1. 0.0 0. 1. + 7762. 1. 3. 27.0 6.0 1.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 7764. 1. 5. 32.0 16.5 4.0 3. 12.0 14.0 5. 5. 0.0 0. 1. + 7765. 1. 5. 37.0 16.5 3.0 4. 17.0 11.5 4. 6. 0.0 0. 1. + 7772. 1. 4. 32.0 13.0 2.0 3. 12.0 20.0 4. 5. 0.0 0. 1. + 7774. 1. 3. 37.0 16.5 4.0 1. 12.0 11.5 5. 5. 0.0 0. 1. + 7778. 1. 5. 22.0 2.5 0.0 2. 12.0 14.0 2. 4. 0.0 0. 1. + 7781. 1. 4. 22.0 2.5 0.0 2. 12.0 14.0 2. 5. 0.0 0. 1. + 7782. 1. 4. 22.0 2.5 1.0 3. 16.0 14.0 4. 4. 0.0 0. 1. + 7785. 1. 4. 27.0 6.0 2.0 3. 14.0 11.5 5. 5. 0.0 0. 1. + 7788. 1. 5. 22.0 2.5 0.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 7794. 1. 4. 37.0 23.0 4.0 2. 9.0 6.5 2. 2. 0.0 0. 1. + 7795. 1. 5. 27.0 9.0 2.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 7797. 1. 5. 27.0 6.0 0.0 2. 16.0 4.0 4. 1. 0.0 0. 1. + 7807. 1. 4. 32.0 2.5 0.0 2. 12.0 9.0 3. 2. 0.0 0. 1. + 7811. 1. 4. 22.0 2.5 0.0 1. 14.0 6.5 2. 4. 0.0 0. 1. + 7812. 1. 3. 32.0 13.0 0.0 1. 14.0 14.0 3. 6. 0.0 0. 1. + 7822. 1. 5. 32.0 6.0 2.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 7824. 1. 5. 22.0 2.5 0.0 1. 14.0 20.0 3. 3. 0.0 0. 1. + 7825. 1. 5. 27.0 6.0 2.0 2. 20.0 20.0 4. 6. 0.0 0. 1. + 7827. 1. 4. 22.0 2.5 0.0 1. 16.0 20.0 4. 4. 0.0 0. 1. + 7832. 1. 5. 22.0 2.5 0.0 3. 14.0 9.0 4. 1. 0.0 0. 1. + 7840. 1. 4. 42.0 23.0 4.0 2. 17.0 20.0 4. 6. 0.0 0. 1. + 7844. 1. 3. 27.0 6.0 1.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 7847. 1. 4. 27.0 2.5 0.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 7848. 1. 3. 42.0 23.0 2.0 3. 16.0 20.0 3. 4. 0.0 0. 1. + 7852. 1. 4. 42.0 23.0 3.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 7859. 1. 5. 27.0 2.5 0.0 3. 16.0 20.0 4. 3. 0.0 0. 1. + 7862. 1. 4. 22.0 2.5 0.0 3. 12.0 11.5 3. 3. 0.0 0. 1. + 7863. 1. 5. 27.0 0.5 0.0 1. 14.0 9.0 3. 2. 0.0 0. 1. + 7874. 1. 5. 37.0 16.5 3.0 3. 12.0 14.0 5. 5. 0.0 0. 1. + 7879. 1. 5. 32.0 6.0 0.0 2. 20.0 40.0 4. 5. 0.0 0. 1. + 7880. 1. 5. 22.0 6.0 0.0 1. 12.0 11.5 5. 5. 0.0 0. 1. + 7891. 1. 4. 32.0 16.5 4.0 1. 12.0 11.5 2. 2. 0.0 0. 1. + 7901. 1. 4. 22.0 2.5 1.0 1. 12.0 9.0 2. 2. 0.0 0. 1. + 7907. 1. 4. 27.0 2.5 2.0 3. 14.0 6.5 2. 4. 0.0 0. 1. + 7908. 1. 3. 27.0 2.5 0.0 2. 16.0 40.0 4. 2. 0.0 0. 1. + 7915. 1. 5. 42.0 23.0 4.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 7921. 1. 4. 27.0 2.5 1.0 4. 14.0 9.0 4. 4. 0.0 0. 1. + 7930. 1. 5. 27.0 6.0 1.0 3. 16.0 14.0 5. 2. 0.0 0. 1. + 7932. 1. 5. 27.0 6.0 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 7934. 1. 5. 42.0 23.0 4.0 2. 14.0 9.0 3. 4. 0.0 0. 1. + 7941. 1. 5. 22.0 2.5 1.0 3. 14.0 20.0 5. 2. 0.0 0. 1. + 7943. 1. 2. 27.0 6.0 2.0 4. 14.0 6.5 2. 2. 0.0 0. 1. + 7945. 1. 4. 42.0 23.0 2.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 7947. 1. 5. 27.0 6.0 1.0 4. 14.0 20.0 5. 4. 0.0 0. 1. + 7953. 1. 4. 22.0 2.5 0.0 4. 16.0 11.5 4. 4. 0.0 0. 1. + 7955. 1. 4. 22.0 2.5 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 7960. 1. 4. 27.0 9.0 2.0 2. 16.0 20.0 4. 3. 0.0 0. 1. + 7967. 1. 5. 37.0 16.5 1.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 7968. 1. 4. 22.0 2.5 1.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 7970. 1. 5. 27.0 13.0 2.0 4. 12.0 20.0 2. 4. 0.0 0. 1. + 7984. 1. 4. 27.0 6.0 0.0 2. 17.0 14.0 4. 5. 0.0 0. 1. + 7987. 1. 5. 22.0 2.5 1.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 7994. 1. 5. 17.5 0.5 0.0 1. 12.0 9.0 3. 3. 0.0 0. 1. + 7995. 1. 4. 27.0 2.5 0.0 1. 17.0 6.5 1. 4. 0.0 0. 1. + 7999. 1. 5. 27.0 6.0 1.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 8002. 1. 5. 22.0 2.5 0.0 2. 14.0 9.0 5. 5. 0.0 0. 1. + 8003. 1. 4. 37.0 16.5 3.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 8009. 1. 4. 22.0 2.5 0.0 2. 16.0 20.0 3. 3. 0.0 0. 1. + 8011. 1. 4. 32.0 9.0 2.0 2. 16.0 20.0 4. 6. 0.0 0. 1. + 8012. 1. 5. 22.0 2.5 1.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 8028. 1. 4. 27.0 2.5 0.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 8036. 1. 5. 27.0 6.0 2.0 2. 16.0 14.0 2. 4. 0.0 0. 1. + 8040. 1. 4. 22.0 2.5 1.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 8041. 1. 3. 22.0 0.5 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 8050. 1. 5. 32.0 13.0 3.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 8051. 1. 5. 32.0 9.0 2.0 1. 16.0 14.0 2. 4. 0.0 0. 1. + 8053. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 2. 4. 0.0 0. 1. + 8055. 1. 4. 32.0 13.0 0.0 3. 12.0 20.0 5. 4. 0.0 0. 1. + 8058. 1. 5. 27.0 2.5 0.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 8061. 1. 2. 22.0 2.5 0.0 3. 14.0 11.5 2. 2. 0.0 0. 1. + 8062. 1. 3. 32.0 9.0 1.0 3. 16.0 11.5 4. 3. 0.0 0. 1. + 8066. 1. 5. 22.0 0.5 0.0 3. 17.0 14.0 4. 2. 0.0 0. 1. + 8067. 1. 5. 27.0 6.0 0.0 3. 16.0 40.0 4. 6. 0.0 0. 1. + 8068. 1. 3. 42.0 23.0 3.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 8069. 1. 4. 32.0 9.0 2.0 1. 12.0 14.0 3. 3. 0.0 0. 1. + 8080. 1. 5. 32.0 13.0 2.0 4. 20.0 20.0 6. 6. 0.0 0. 1. + 8089. 1. 5. 27.0 2.5 1.0 4. 20.0 20.0 4. 4. 0.0 0. 1. + 8092. 1. 4. 32.0 9.0 2.0 3. 16.0 9.0 4. 2. 0.0 0. 1. + 8093. 1. 4. 37.0 16.5 3.0 4. 14.0 20.0 2. 4. 0.0 0. 1. + 8095. 1. 5. 42.0 23.0 1.0 4. 12.0 9.0 2. 2. 0.0 0. 1. + 8104. 1. 4. 27.0 2.5 0.0 1. 16.0 6.5 3. 3. 0.0 0. 1. + 8105. 1. 4. 27.0 6.0 1.0 2. 17.0 14.0 3. 3. 0.0 0. 1. + 8106. 1. 5. 32.0 13.0 1.0 1. 16.0 20.0 4. 4. 0.0 0. 1. + 8107. 1. 5. 27.0 6.0 1.0 4. 16.0 9.0 2. 2. 0.0 0. 1. + 8108. 1. 5. 32.0 16.5 3.0 3. 16.0 40.0 4. 5. 0.0 0. 1. + 8123. 1. 5. 42.0 23.0 2.0 4. 12.0 14.0 2. 2. 0.0 0. 1. + 8124. 1. 5. 37.0 6.0 1.0 3. 12.0 6.5 3. 2. 0.0 0. 1. + 8125. 1. 1. 22.0 2.5 1.0 2. 12.0 9.0 3. 5. 0.0 0. 1. + 8130. 1. 4. 22.0 2.5 1.0 3. 17.0 9.0 4. 4. 0.0 0. 1. + 8131. 1. 5. 17.5 0.5 1.0 2. 12.0 11.5 3. 3. 0.0 0. 1. + 8132. 1. 5. 42.0 23.0 5.5 3. 12.0 20.0 3. 4. 0.0 0. 1. + 8134. 1. 5. 42.0 6.0 0.0 4. 20.0 20.0 4. 2. 0.0 0. 1. + 8137. 1. 2. 17.5 2.5 1.0 2. 12.0 11.5 4. 4. 0.0 0. 1. + 8140. 1. 4. 37.0 16.5 3.0 4. 12.0 20.0 3. 4. 0.0 0. 1. + 8142. 1. 5. 32.0 16.5 3.0 2. 16.0 14.0 3. 5. 0.0 0. 1. + 8146. 1. 5. 22.0 2.5 0.0 3. 12.0 4.0 3. 1. 0.0 0. 1. + 8156. 1. 5. 22.0 6.0 2.0 4. 12.0 9.0 3. 3. 0.0 0. 1. + 8157. 1. 5. 22.0 2.5 1.0 3. 20.0 20.0 4. 4. 0.0 0. 1. + 8158. 1. 4. 22.0 6.0 0.0 1. 14.0 20.0 4. 6. 0.0 0. 1. + 8166. 1. 5. 32.0 13.0 1.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 8171. 1. 4. 32.0 6.0 3.0 2. 17.0 20.0 4. 6. 0.0 0. 1. + 8176. 1. 4. 27.0 6.0 2.0 3. 14.0 20.0 4. 2. 0.0 0. 1. + 8178. 1. 3. 22.0 6.0 1.0 3. 12.0 9.0 2. 4. 0.0 0. 1. + 8181. 1. 3. 37.0 23.0 3.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 8189. 1. 5. 22.0 2.5 1.0 1. 14.0 11.5 3. 2. 0.0 0. 1. + 8191. 1. 2. 27.0 9.0 1.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 8207. 1. 3. 22.0 2.5 1.0 2. 12.0 6.5 3. 2. 0.0 0. 1. + 8211. 1. 4. 32.0 13.0 2.0 2. 17.0 14.0 3. 2. 0.0 0. 1. + 8216. 1. 2. 22.0 2.5 1.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 8224. 1. 5. 37.0 13.0 0.0 2. 12.0 20.0 4. 2. 0.0 0. 1. + 8233. 1. 3. 37.0 16.5 4.0 4. 14.0 14.0 4. 2. 0.0 0. 1. + 8234. 1. 5. 42.0 23.0 3.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 8240. 1. 5. 22.0 2.5 0.0 4. 16.0 11.5 4. 4. 0.0 0. 1. + 8241. 1. 3. 27.0 2.5 0.0 3. 20.0 14.0 4. 4. 0.0 0. 1. + 8243. 1. 4. 27.0 2.5 2.0 3. 12.0 9.0 4. 5. 0.0 0. 1. + 8245. 1. 5. 22.0 2.5 0.0 4. 14.0 6.5 3. 1. 0.0 0. 1. + 8253. 1. 4. 22.0 2.5 0.0 3. 14.0 14.0 2. 2. 0.0 0. 1. + 8254. 1. 3. 32.0 13.0 2.0 2. 12.0 20.0 2. 2. 0.0 0. 1. + 8255. 1. 5. 27.0 6.0 2.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 8266. 1. 5. 27.0 9.0 3.0 4. 14.0 9.0 4. 2. 0.0 0. 1. + 8273. 1. 4. 22.0 6.0 2.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 8277. 1. 4. 32.0 9.0 3.0 2. 16.0 14.0 4. 2. 0.0 0. 1. + 8280. 1. 4. 42.0 23.0 4.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 8285. 1. 5. 42.0 23.0 5.5 4. 14.0 11.5 4. 4. 0.0 0. 1. + 8287. 1. 3. 22.0 2.5 2.0 1. 12.0 9.0 3. 2. 0.0 0. 1. + 8292. 1. 5. 32.0 13.0 3.0 3. 14.0 20.0 4. 3. 0.0 0. 1. + 8295. 1. 4. 32.0 16.5 5.5 3. 12.0 14.0 3. 4. 0.0 0. 1. + 8296. 1. 5. 22.0 2.5 0.0 3. 17.0 20.0 5. 5. 0.0 0. 1. + 8297. 1. 3. 22.0 2.5 1.0 3. 12.0 14.0 3. 5. 0.0 0. 1. + 8299. 1. 5. 22.0 2.5 0.0 2. 14.0 14.0 1. 4. 0.0 0. 1. + 8310. 1. 5. 32.0 9.0 0.0 2. 12.0 11.5 3. 5. 0.0 0. 1. + 8316. 1. 2. 22.0 2.5 1.0 3. 14.0 9.0 3. 2. 0.0 0. 1. + 8325. 1. 5. 22.0 2.5 0.0 3. 16.0 9.0 5. 1. 0.0 0. 1. + 8331. 1. 4. 27.0 6.0 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 8338. 1. 5. 27.0 0.5 0.0 3. 16.0 11.5 4. 1. 0.0 0. 1. + 8341. 1. 5. 27.0 6.0 2.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 8343. 1. 4. 27.0 2.5 1.0 3. 16.0 9.0 2. 3. 0.0 0. 1. + 8349. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 4. 2. 0.0 0. 1. + 8353. 1. 5. 32.0 16.5 4.0 3. 12.0 20.0 5. 2. 0.0 0. 1. + 8359. 1. 2. 22.0 2.5 0.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 8369. 1. 5. 27.0 0.5 0.0 1. 12.0 14.0 3. 2. 0.0 0. 1. + 8374. 1. 4. 42.0 23.0 1.0 1. 12.0 11.5 4. 5. 0.0 0. 1. + 8375. 1. 3. 27.0 9.0 0.0 3. 17.0 20.0 4. 6. 0.0 0. 1. + 8376. 1. 4. 22.0 2.5 0.0 2. 16.0 6.5 3. 1. 0.0 0. 1. + 8379. 1. 3. 42.0 23.0 3.0 3. 14.0 20.0 2. 2. 0.0 0. 1. + 8385. 1. 4. 22.0 0.5 0.0 3. 16.0 6.5 3. 4. 0.0 0. 1. + 8388. 1. 5. 32.0 9.0 2.0 1. 16.0 40.0 5. 5. 0.0 0. 1. + 8398. 1. 5. 37.0 0.5 0.0 2. 17.0 14.0 4. 2. 0.0 0. 1. + 8402. 1. 4. 22.0 2.5 0.0 3. 16.0 11.5 3. 5. 0.0 0. 1. + 8403. 1. 4. 22.0 2.5 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 8405. 1. 5. 42.0 23.0 4.0 3. 12.0 9.0 2. 4. 0.0 0. 1. + 8406. 1. 5. 32.0 6.0 2.0 1. 12.0 20.0 3. 5. 0.0 0. 1. + 8409. 1. 4. 22.0 2.5 0.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 8410. 1. 5. 22.0 2.5 1.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 8411. 1. 5. 27.0 13.0 1.0 2. 14.0 11.5 3. 5. 0.0 0. 1. + 8412. 1. 5. 27.0 6.0 2.0 2. 17.0 20.0 4. 3. 0.0 0. 1. + 8414. 1. 4. 22.0 2.5 0.0 3. 16.0 14.0 3. 2. 0.0 0. 1. + 8417. 1. 5. 27.0 6.0 0.0 1. 14.0 9.0 2. 1. 0.0 0. 1. + 8418. 1. 4. 42.0 23.0 5.5 3. 14.0 9.0 5. 4. 0.0 0. 1. + 8425. 1. 3. 17.5 2.5 1.0 2. 12.0 9.0 2. 4. 0.0 0. 1. + 8426. 1. 4. 22.0 2.5 0.0 2. 14.0 6.5 1. 1. 0.0 0. 1. + 8428. 1. 5. 22.0 0.5 0.0 2. 12.0 14.0 4. 4. 0.0 0. 1. + 8429. 1. 3. 27.0 2.5 1.0 1. 12.0 6.5 2. 2. 0.0 0. 1. + 8438. 1. 5. 17.5 2.5 0.0 3. 14.0 6.5 2. 3. 0.0 0. 1. + 8441. 1. 5. 37.0 16.5 3.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 8449. 1. 4. 27.0 6.0 2.0 2. 14.0 6.5 3. 2. 0.0 0. 1. + 8450. 1. 3. 42.0 23.0 3.0 2. 14.0 11.5 5. 4. 0.0 0. 1. + 8453. 1. 4. 22.0 2.5 0.0 3. 12.0 6.5 3. 2. 0.0 0. 1. + 8455. 1. 5. 22.0 0.5 0.0 2. 12.0 11.5 2. 4. 0.0 0. 1. + 8459. 1. 3. 27.0 9.0 3.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 8469. 1. 3. 22.0 2.5 0.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 8470. 1. 4. 22.0 2.5 0.0 1. 17.0 6.5 4. 1. 0.0 0. 1. + 8471. 1. 3. 22.0 2.5 2.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 8481. 1. 3. 42.0 23.0 2.0 1. 16.0 20.0 4. 5. 0.0 0. 1. + 8486. 1. 4. 22.0 2.5 2.0 2. 14.0 6.5 2. 2. 0.0 0. 1. + 8488. 1. 5. 17.5 2.5 1.0 3. 12.0 6.5 5. 5. 0.0 0. 1. + 8499. 1. 5. 22.0 0.5 0.0 1. 16.0 14.0 4. 2. 0.0 0. 1. + 8503. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 3. 3. 0.0 0. 1. + 8506. 1. 4. 27.0 6.0 1.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 8515. 1. 4. 27.0 2.5 0.0 1. 14.0 6.5 4. 1. 0.0 0. 1. + 8522. 1. 5. 22.0 2.5 0.0 3. 17.0 14.0 4. 2. 0.0 0. 1. + 8530. 1. 5. 27.0 2.5 0.0 1. 14.0 20.0 2. 5. 0.0 0. 1. + 8532. 1. 5. 22.0 2.5 0.0 1. 16.0 14.0 3. 2. 0.0 0. 1. + 8533. 1. 4. 32.0 13.0 2.0 1. 14.0 14.0 3. 4. 0.0 0. 1. + 8535. 1. 5. 22.0 0.5 0.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 8544. 1. 5. 22.0 2.5 0.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 8553. 1. 5. 22.0 2.5 0.0 3. 14.0 14.0 2. 4. 0.0 0. 1. + 8566. 1. 5. 22.0 2.5 1.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 8572. 1. 5. 27.0 2.5 0.0 1. 12.0 14.0 3. 2. 0.0 0. 1. + 8578. 1. 3. 27.0 6.0 1.0 3. 12.0 14.0 4. 4. 0.0 0. 1. + 8581. 1. 4. 27.0 6.0 2.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 8590. 1. 4. 32.0 16.5 2.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 8594. 1. 4. 27.0 6.0 0.0 1. 17.0 11.5 4. 5. 0.0 0. 1. + 8603. 1. 4. 22.0 2.5 0.0 3. 14.0 9.0 3. 2. 0.0 0. 1. + 8606. 1. 5. 27.0 6.0 0.0 2. 16.0 20.0 3. 4. 0.0 0. 1. + 8611. 1. 4. 27.0 6.0 0.0 2. 16.0 20.0 4. 2. 0.0 0. 1. + 8616. 1. 3. 32.0 16.5 2.0 4. 20.0 20.0 4. 4. 0.0 0. 1. + 8619. 1. 4. 22.0 2.5 1.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 8622. 1. 5. 27.0 6.0 2.0 3. 17.0 11.5 4. 4. 0.0 0. 1. + 8623. 1. 3. 27.0 9.0 1.0 3. 14.0 14.0 1. 4. 0.0 0. 1. + 8628. 1. 5. 27.0 2.5 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 8630. 1. 5. 22.0 2.5 0.0 4. 16.0 20.0 3. 5. 0.0 0. 1. + 8632. 1. 5. 27.0 2.5 1.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 8638. 1. 1. 37.0 13.0 5.5 3. 12.0 4.0 2. 4. 0.0 0. 1. + 8640. 1. 4. 27.0 6.0 2.0 1. 12.0 11.5 3. 5. 0.0 0. 1. + 8644. 1. 3. 22.0 2.5 0.0 2. 12.0 11.5 2. 4. 0.0 0. 1. + 8649. 1. 4. 22.0 2.5 0.0 4. 16.0 11.5 3. 2. 0.0 0. 1. + 8651. 1. 4. 27.0 13.0 2.0 2. 12.0 11.5 4. 4. 0.0 0. 1. + 8654. 1. 5. 22.0 2.5 0.0 2. 14.0 9.0 4. 4. 0.0 0. 1. + 8655. 1. 4. 27.0 2.5 0.0 2. 17.0 20.0 4. 5. 0.0 0. 1. + 8668. 1. 2. 22.0 2.5 0.0 1. 12.0 11.5 3. 4. 0.0 0. 1. + 8672. 1. 5. 22.0 2.5 0.0 1. 16.0 11.5 3. 1. 0.0 0. 1. + 8678. 1. 4. 22.0 2.5 0.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 8680. 1. 4. 27.0 2.5 0.0 3. 17.0 20.0 4. 6. 0.0 0. 1. + 8682. 1. 5. 22.0 0.5 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 8686. 1. 4. 22.0 2.5 1.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 8689. 1. 3. 22.0 2.5 0.0 1. 16.0 20.0 4. 5. 0.0 0. 1. + 8693. 1. 5. 37.0 16.5 2.0 4. 14.0 40.0 4. 6. 0.0 0. 1. + 8694. 1. 5. 22.0 0.5 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 8696. 1. 5. 32.0 9.0 1.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 8705. 1. 5. 22.0 2.5 0.0 3. 16.0 11.5 3. 3. 0.0 0. 1. + 8708. 1. 5. 22.0 2.5 1.0 3. 14.0 14.0 4. 4. 0.0 0. 1. + 8710. 1. 4. 27.0 6.0 1.0 2. 14.0 14.0 5. 3. 0.0 0. 1. + 8713. 1. 4. 27.0 9.0 3.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 8715. 1. 2. 22.0 2.5 0.0 4. 16.0 14.0 4. 4. 0.0 0. 1. + 8718. 1. 5. 22.0 2.5 0.0 3. 14.0 14.0 4. 2. 0.0 0. 1. + 8720. 1. 5. 27.0 2.5 1.0 1. 16.0 40.0 4. 6. 0.0 0. 1. + 8721. 1. 4. 37.0 16.5 3.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 8723. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 5. 5. 0.0 0. 1. + 8739. 1. 3. 22.0 2.5 0.0 1. 12.0 14.0 4. 4. 0.0 0. 1. + 8742. 1. 4. 32.0 9.0 3.0 2. 20.0 20.0 4. 6. 0.0 0. 1. + 8748. 1. 4. 42.0 23.0 3.0 4. 12.0 9.0 4. 2. 0.0 0. 1. + 8762. 1. 1. 32.0 2.5 1.0 1. 20.0 40.0 4. 4. 0.0 0. 1. + 8764. 1. 5. 22.0 6.0 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 8765. 1. 4. 27.0 6.0 1.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 8766. 1. 5. 22.0 2.5 0.0 2. 16.0 11.5 4. 2. 0.0 0. 1. + 8767. 1. 4. 22.0 2.5 0.0 2. 14.0 9.0 4. 4. 0.0 0. 1. + 8772. 1. 3. 32.0 13.0 2.0 2. 16.0 40.0 4. 5. 0.0 0. 1. + 8773. 1. 5. 37.0 23.0 3.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 8776. 1. 5. 22.0 9.0 2.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 8777. 1. 5. 27.0 6.0 0.0 3. 14.0 20.0 5. 2. 0.0 0. 1. + 8779. 1. 3. 37.0 16.5 3.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 8783. 1. 5. 27.0 6.0 0.0 3. 17.0 6.5 3. 1. 0.0 0. 1. + 8786. 1. 5. 17.5 0.5 0.0 4. 12.0 9.0 2. 2. 0.0 0. 1. + 8789. 1. 5. 27.0 2.5 0.0 4. 17.0 11.5 4. 2. 0.0 0. 1. + 8791. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 5. 4. 0.0 0. 1. + 8794. 1. 3. 22.0 2.5 0.0 3. 16.0 14.0 4. 4. 0.0 0. 1. + 8801. 1. 5. 22.0 2.5 1.0 3. 16.0 11.5 4. 5. 0.0 0. 1. + 8806. 1. 4. 27.0 2.5 0.0 2. 16.0 40.0 5. 4. 0.0 0. 1. + 8807. 1. 5. 22.0 2.5 0.0 2. 17.0 20.0 4. 5. 0.0 0. 1. + 8810. 1. 5. 22.0 0.5 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 8818. 1. 4. 22.0 2.5 1.0 3. 14.0 9.0 3. 4. 0.0 0. 1. + 8819. 1. 4. 32.0 6.0 2.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 8820. 1. 4. 42.0 16.5 3.0 3. 20.0 20.0 6. 6. 0.0 0. 1. + 8821. 1. 3. 27.0 2.5 1.0 2. 17.0 14.0 4. 3. 0.0 0. 1. + 8828. 1. 2. 42.0 23.0 2.0 3. 14.0 40.0 3. 4. 0.0 0. 1. + 8830. 1. 5. 27.0 9.0 1.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 8831. 1. 5. 22.0 2.5 0.0 4. 17.0 6.5 4. 4. 0.0 0. 1. + 8838. 1. 4. 32.0 16.5 4.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 8843. 1. 4. 32.0 6.0 0.0 1. 14.0 20.0 4. 5. 0.0 0. 1. + 8844. 1. 5. 27.0 6.0 1.0 1. 20.0 20.0 6. 6. 0.0 0. 1. + 8846. 1. 4. 37.0 13.0 2.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 8854. 1. 4. 27.0 9.0 2.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 8855. 1. 5. 27.0 9.0 3.0 1. 12.0 9.0 2. 2. 0.0 0. 1. + 8858. 1. 4. 32.0 9.0 2.0 2. 12.0 20.0 5. 3. 0.0 0. 1. + 8862. 1. 5. 42.0 23.0 3.0 3. 12.0 20.0 5. 3. 0.0 0. 1. + 8864. 1. 3. 37.0 23.0 3.0 3. 14.0 40.0 4. 6. 0.0 0. 1. + 8868. 1. 4. 27.0 2.5 0.0 2. 16.0 40.0 4. 5. 0.0 0. 1. + 8871. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 5. 4. 0.0 0. 1. + 8874. 1. 4. 42.0 13.0 0.0 3. 16.0 40.0 4. 5. 0.0 0. 1. + 8875. 1. 5. 27.0 6.0 0.0 1. 12.0 20.0 3. 4. 0.0 0. 1. + 8877. 1. 5. 22.0 2.5 0.0 4. 16.0 40.0 3. 1. 0.0 0. 1. + 8888. 1. 5. 37.0 16.5 1.0 3. 12.0 40.0 3. 5. 0.0 0. 1. + 8894. 1. 3. 32.0 13.0 3.0 2. 9.0 14.0 2. 5. 0.0 0. 1. + 8908. 1. 3. 27.0 6.0 2.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 8918. 1. 5. 27.0 2.5 1.0 4. 16.0 20.0 4. 5. 0.0 0. 1. + 8919. 1. 4. 37.0 16.5 3.0 2. 14.0 20.0 4. 5. 0.0 0. 1. + 8921. 1. 5. 22.0 2.5 0.0 4. 14.0 6.5 3. 2. 0.0 0. 1. + 8926. 1. 4. 37.0 16.5 2.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 8927. 1. 2. 32.0 6.0 0.0 3. 14.0 11.5 2. 2. 0.0 0. 1. + 8928. 1. 4. 27.0 9.0 0.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 8937. 1. 3. 32.0 9.0 1.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 8941. 1. 5. 22.0 6.0 2.0 3. 12.0 9.0 3. 2. 0.0 0. 1. + 8942. 1. 3. 27.0 13.0 3.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 8945. 1. 5. 22.0 2.5 0.0 1. 14.0 40.0 3. 4. 0.0 0. 1. + 8948. 1. 5. 37.0 16.5 3.0 3. 12.0 40.0 3. 5. 0.0 0. 1. + 8950. 1. 5. 27.0 2.5 1.0 3. 16.0 20.0 5. 3. 0.0 0. 1. + 8953. 1. 5. 32.0 13.0 3.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 8955. 1. 5. 37.0 23.0 3.0 3. 14.0 40.0 3. 5. 0.0 0. 1. + 8968. 1. 4. 22.0 2.5 0.0 3. 14.0 14.0 3. 2. 0.0 0. 1. + 8977. 1. 3. 22.0 2.5 0.0 3. 14.0 14.0 3. 2. 0.0 0. 1. + 8982. 1. 4. 37.0 23.0 3.0 1. 9.0 14.0 3. 4. 0.0 0. 1. + 8986. 1. 4. 37.0 23.0 2.0 2. 14.0 11.5 5. 4. 0.0 0. 1. + 8989. 1. 3. 37.0 23.0 2.0 4. 14.0 20.0 3. 3. 0.0 0. 1. + 8991. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 6. 0.0 0. 1. + 8996. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 8997. 1. 5. 32.0 9.0 2.0 1. 17.0 11.5 4. 5. 0.0 0. 1. + 9000. 1. 5. 32.0 13.0 2.0 3. 16.0 20.0 4. 2. 0.0 0. 1. + 9002. 1. 3. 42.0 23.0 3.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 9014. 1. 2. 32.0 6.0 2.0 2. 16.0 11.5 4. 2. 0.0 0. 1. + 9018. 1. 5. 17.5 2.5 0.0 3. 12.0 6.5 4. 1. 0.0 0. 1. + 9020. 1. 5. 42.0 16.5 2.0 2. 14.0 20.0 4. 4. 0.0 0. 1. + 9021. 1. 5. 27.0 6.0 2.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 9023. 1. 5. 37.0 16.5 3.0 3. 12.0 14.0 3. 2. 0.0 0. 1. + 9026. 1. 5. 32.0 9.0 1.0 4. 16.0 20.0 4. 4. 0.0 0. 1. + 9029. 1. 4. 42.0 23.0 4.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 9030. 1. 4. 42.0 23.0 5.5 4. 20.0 20.0 4. 6. 0.0 0. 1. + 9031. 1. 5. 22.0 2.5 0.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 9035. 1. 3. 27.0 9.0 1.0 3. 12.0 20.0 5. 4. 0.0 0. 1. + 9040. 1. 5. 22.0 0.5 0.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 9043. 1. 5. 37.0 13.0 1.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 9048. 1. 5. 22.0 2.5 0.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 9049. 1. 2. 32.0 9.0 2.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 9055. 1. 4. 22.0 6.0 0.0 4. 14.0 9.0 3. 5. 0.0 0. 1. + 9062. 1. 4. 22.0 2.5 0.0 3. 14.0 6.5 4. 2. 0.0 0. 1. + 9069. 1. 5. 27.0 6.0 1.0 3. 16.0 14.0 3. 4. 0.0 0. 1. + 9071. 1. 4. 22.0 2.5 0.0 1. 17.0 20.0 4. 5. 0.0 0. 1. + 9072. 1. 4. 32.0 13.0 2.0 4. 17.0 20.0 5. 5. 0.0 0. 1. + 9086. 1. 5. 27.0 6.0 0.0 2. 14.0 20.0 5. 4. 0.0 0. 1. + 9087. 1. 5. 37.0 23.0 3.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 9091. 1. 2. 37.0 16.5 2.0 2. 12.0 14.0 3. 5. 0.0 0. 1. + 9094. 1. 4. 27.0 6.0 2.0 3. 14.0 14.0 3. 3. 0.0 0. 1. + 9096. 1. 5. 27.0 2.5 0.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 9097. 1. 5. 42.0 23.0 2.0 4. 12.0 11.5 3. 2. 0.0 0. 1. + 9100. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 4. 2. 0.0 0. 1. + 9101. 1. 5. 32.0 13.0 1.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 9107. 1. 5. 37.0 13.0 2.0 4. 20.0 40.0 4. 5. 0.0 0. 1. + 9112. 1. 3. 27.0 6.0 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 9114. 1. 3. 22.0 6.0 2.0 3. 12.0 6.5 2. 2. 0.0 0. 1. + 9115. 1. 5. 22.0 2.5 0.0 2. 12.0 14.0 2. 3. 0.0 0. 1. + 9116. 1. 5. 22.0 2.5 1.0 2. 14.0 9.0 2. 2. 0.0 0. 1. + 9118. 1. 2. 17.5 2.5 2.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 9120. 1. 5. 27.0 2.5 0.0 3. 14.0 40.0 3. 3. 0.0 0. 1. + 9121. 1. 5. 22.0 0.5 0.0 2. 16.0 11.5 4. 5. 0.0 0. 1. + 9122. 1. 5. 27.0 2.5 1.0 2. 12.0 6.5 2. 4. 0.0 0. 1. + 9126. 1. 2. 22.0 2.5 2.0 3. 12.0 9.0 2. 4. 0.0 0. 1. + 9127. 1. 4. 22.0 2.5 0.0 3. 14.0 14.0 4. 5. 0.0 0. 1. + 9130. 1. 5. 42.0 16.5 2.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 9135. 1. 5. 32.0 6.0 0.0 1. 16.0 9.0 6. 1. 0.0 0. 1. + 9136. 1. 5. 27.0 2.5 0.0 3. 14.0 20.0 5. 2. 0.0 0. 1. + 9138. 1. 5. 37.0 16.5 2.0 3. 14.0 11.5 3. 2. 0.0 0. 1. + 9145. 1. 4. 27.0 6.0 1.0 4. 14.0 11.5 4. 4. 0.0 0. 1. + 9147. 1. 5. 27.0 6.0 1.0 2. 16.0 14.0 3. 5. 0.0 0. 1. + 9153. 1. 4. 22.0 2.5 0.0 3. 16.0 20.0 5. 6. 0.0 0. 1. + 9155. 1. 5. 42.0 23.0 1.0 3. 14.0 20.0 5. 5. 0.0 0. 1. + 9157. 1. 5. 22.0 2.5 0.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 9159. 1. 4. 42.0 23.0 3.0 4. 12.0 20.0 5. 2. 0.0 0. 1. + 9165. 1. 5. 42.0 23.0 3.0 4. 12.0 11.5 3. 3. 0.0 0. 1. + 9168. 1. 5. 32.0 16.5 3.0 3. 12.0 6.5 2. 2. 0.0 0. 1. + 9170. 1. 4. 22.0 6.0 1.0 1. 12.0 9.0 3. 2. 0.0 0. 1. + 9171. 1. 5. 42.0 23.0 4.0 3. 20.0 40.0 6. 6. 0.0 0. 1. + 9173. 1. 5. 17.5 0.5 0.0 3. 14.0 6.5 3. 5. 0.0 0. 1. + 9174. 1. 5. 27.0 2.5 0.0 1. 14.0 40.0 2. 6. 0.0 0. 1. + 9181. 1. 5. 22.0 2.5 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 9186. 1. 5. 32.0 6.0 1.0 3. 20.0 20.0 4. 5. 0.0 0. 1. + 9187. 1. 5. 22.0 0.5 0.0 3. 17.0 20.0 6. 2. 0.0 0. 1. + 9189. 1. 2. 37.0 16.5 2.0 1. 12.0 20.0 3. 5. 0.0 0. 1. + 9190. 1. 5. 27.0 9.0 2.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 9191. 1. 4. 27.0 2.5 0.0 2. 16.0 20.0 4. 2. 0.0 0. 1. + 9193. 1. 4. 27.0 13.0 1.0 3. 12.0 11.5 3. 3. 0.0 0. 1. + 9198. 1. 3. 42.0 23.0 3.0 2. 14.0 20.0 3. 3. 0.0 0. 1. + 9199. 1. 5. 27.0 6.0 1.0 1. 14.0 14.0 4. 5. 0.0 0. 1. + 9200. 1. 5. 27.0 6.0 0.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 9202. 1. 2. 22.0 6.0 1.0 1. 12.0 11.5 3. 2. 0.0 0. 1. + 9214. 1. 5. 37.0 16.5 4.0 3. 14.0 11.5 2. 3. 0.0 0. 1. + 9215. 1. 4. 27.0 9.0 2.0 3. 20.0 40.0 4. 5. 0.0 0. 1. + 9218. 1. 5. 17.5 0.5 0.0 4. 12.0 6.5 2. 4. 0.0 0. 1. + 9219. 1. 5. 42.0 23.0 3.0 3. 17.0 40.0 4. 5. 0.0 0. 1. + 9220. 1. 5. 37.0 16.5 2.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 9222. 1. 5. 22.0 2.5 0.0 1. 14.0 20.0 4. 4. 0.0 0. 1. + 9232. 1. 4. 22.0 2.5 0.0 3. 14.0 14.0 4. 5. 0.0 0. 1. + 9245. 1. 3. 22.0 2.5 0.0 3. 14.0 20.0 3. 6. 0.0 0. 1. + 9254. 1. 3. 42.0 23.0 3.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 9255. 1. 4. 27.0 6.0 0.0 2. 16.0 20.0 5. 6. 0.0 0. 1. + 9256. 1. 5. 42.0 23.0 3.0 3. 16.0 20.0 2. 3. 0.0 0. 1. + 9258. 1. 5. 27.0 9.0 2.0 3. 17.0 14.0 4. 4. 0.0 0. 1. + 9265. 1. 5. 22.0 2.5 0.0 2. 16.0 11.5 3. 4. 0.0 0. 1. + 9274. 1. 2. 27.0 6.0 1.0 3. 16.0 14.0 4. 2. 0.0 0. 1. + 9275. 1. 5. 27.0 6.0 0.0 2. 17.0 20.0 4. 2. 0.0 0. 1. + 9278. 1. 3. 22.0 2.5 0.0 4. 17.0 20.0 4. 2. 0.0 0. 1. + 9279. 1. 4. 37.0 16.5 3.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 9286. 1. 3. 22.0 2.5 1.0 3. 16.0 20.0 4. 3. 0.0 0. 1. + 9288. 1. 4. 32.0 9.0 1.0 3. 20.0 20.0 4. 4. 0.0 0. 1. + 9293. 1. 5. 27.0 6.0 2.0 1. 12.0 14.0 3. 5. 0.0 0. 1. + 9304. 1. 5. 27.0 6.0 0.0 3. 16.0 20.0 5. 4. 0.0 0. 1. + 9308. 1. 5. 22.0 6.0 1.0 4. 14.0 14.0 3. 3. 0.0 0. 1. + 9314. 1. 4. 32.0 0.5 0.0 3. 14.0 11.5 5. 5. 0.0 0. 1. + 9316. 1. 5. 32.0 2.5 1.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 9317. 1. 4. 22.0 0.5 0.0 4. 14.0 6.5 3. 2. 0.0 0. 1. + 9319. 1. 4. 37.0 6.0 0.0 4. 12.0 11.5 3. 2. 0.0 0. 1. + 9320. 1. 2. 22.0 6.0 1.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 9323. 1. 5. 37.0 13.0 1.0 2. 12.0 14.0 5. 5. 0.0 0. 1. + 9331. 1. 4. 32.0 9.0 0.0 1. 12.0 40.0 3. 4. 0.0 0. 1. + 9333. 1. 5. 22.0 0.5 0.0 2. 14.0 14.0 3. 2. 0.0 0. 1. + 9336. 1. 5. 27.0 2.5 0.0 1. 16.0 20.0 5. 5. 0.0 0. 1. + 9342. 1. 5. 32.0 2.5 0.0 2. 16.0 40.0 5. 5. 0.0 0. 1. + 9344. 1. 4. 27.0 6.0 1.0 4. 14.0 11.5 4. 4. 0.0 0. 1. + 9345. 1. 5. 27.0 2.5 0.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 9350. 1. 4. 37.0 13.0 2.0 3. 14.0 40.0 3. 5. 0.0 0. 1. + 9351. 1. 4. 22.0 2.5 0.0 3. 17.0 20.0 5. 4. 0.0 0. 1. + 9353. 1. 5. 22.0 2.5 0.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 9357. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 9360. 1. 4. 32.0 13.0 2.0 3. 14.0 9.0 3. 2. 0.0 0. 1. + 9361. 1. 4. 22.0 2.5 0.0 2. 16.0 9.0 4. 6. 0.0 0. 1. + 9362. 1. 4. 22.0 2.5 0.0 2. 12.0 20.0 2. 4. 0.0 0. 1. + 9363. 1. 3. 22.0 0.5 0.0 2. 14.0 11.5 3. 5. 0.0 0. 1. + 9365. 1. 5. 37.0 16.5 4.0 4. 12.0 20.0 3. 5. 0.0 0. 1. + 9372. 1. 4. 22.0 6.0 1.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 9376. 1. 5. 37.0 16.5 1.0 3. 16.0 40.0 4. 5. 0.0 0. 1. + 9377. 1. 4. 27.0 6.0 1.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 9378. 1. 5. 32.0 16.5 2.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 9379. 1. 5. 42.0 23.0 4.0 4. 20.0 40.0 4. 6. 0.0 0. 1. + 9382. 1. 5. 27.0 2.5 0.0 1. 20.0 20.0 5. 4. 0.0 0. 1. + 9385. 1. 5. 22.0 2.5 2.0 3. 16.0 6.5 3. 1. 0.0 0. 1. + 9387. 1. 4. 42.0 16.5 2.0 4. 20.0 20.0 4. 6. 0.0 0. 1. + 9394. 1. 4. 27.0 9.0 0.0 2. 12.0 20.0 5. 5. 0.0 0. 1. + 9398. 1. 4. 27.0 2.5 1.0 2. 12.0 11.5 2. 4. 0.0 0. 1. + 9403. 1. 4. 27.0 2.5 0.0 3. 17.0 20.0 5. 5. 0.0 0. 1. + 9408. 1. 5. 27.0 2.5 0.0 2. 16.0 11.5 3. 3. 0.0 0. 1. + 9411. 1. 4. 37.0 13.0 2.0 2. 16.0 40.0 4. 5. 0.0 0. 1. + 9413. 1. 5. 32.0 13.0 2.0 4. 14.0 20.0 3. 4. 0.0 0. 1. + 9415. 1. 4. 37.0 16.5 4.0 3. 16.0 20.0 4. 3. 0.0 0. 1. + 9417. 1. 4. 27.0 6.0 1.0 3. 20.0 20.0 4. 6. 0.0 0. 1. + 9418. 1. 3. 27.0 13.0 3.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 9425. 1. 4. 22.0 2.5 1.0 3. 16.0 14.0 4. 5. 0.0 0. 1. + 9427. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 4. 6. 0.0 0. 1. + 9429. 1. 5. 37.0 16.5 1.0 3. 16.0 14.0 3. 4. 0.0 0. 1. + 9433. 1. 3. 42.0 23.0 3.0 2. 16.0 40.0 4. 2. 0.0 0. 1. + 9435. 1. 3. 22.0 2.5 0.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 9436. 1. 2. 27.0 2.5 1.0 3. 12.0 6.5 2. 2. 0.0 0. 1. + 9437. 1. 5. 27.0 6.0 3.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 9440. 1. 5. 27.0 0.5 0.0 2. 16.0 20.0 5. 6. 0.0 0. 1. + 9447. 1. 4. 32.0 2.5 0.0 3. 14.0 40.0 3. 6. 0.0 0. 1. + 9448. 1. 4. 27.0 6.0 0.0 3. 14.0 11.5 4. 5. 0.0 0. 1. + 9449. 1. 4. 37.0 13.0 1.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 9450. 1. 4. 42.0 23.0 3.0 3. 14.0 40.0 4. 6. 0.0 0. 1. + 9451. 1. 4. 27.0 9.0 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 9453. 1. 5. 37.0 2.5 0.0 2. 16.0 40.0 4. 3. 0.0 0. 1. + 9474. 1. 5. 27.0 6.0 1.0 2. 16.0 40.0 5. 6. 0.0 0. 1. + 9476. 1. 5. 32.0 2.5 1.0 3. 17.0 20.0 3. 5. 0.0 0. 1. + 9479. 1. 4. 42.0 16.5 2.0 2. 12.0 40.0 3. 5. 0.0 0. 1. + 9484. 1. 4. 22.0 2.5 0.0 3. 16.0 6.5 3. 4. 0.0 0. 1. + 9487. 1. 5. 32.0 13.0 1.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 9488. 1. 5. 27.0 2.5 0.0 2. 20.0 20.0 4. 5. 0.0 0. 1. + 9489. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 9492. 1. 5. 42.0 23.0 2.0 3. 16.0 40.0 4. 4. 0.0 0. 1. + 9495. 1. 4. 42.0 23.0 4.0 3. 20.0 40.0 4. 4. 0.0 0. 1. + 9501. 1. 5. 27.0 6.0 1.0 1. 16.0 14.0 1. 6. 0.0 0. 1. + 9504. 1. 5. 27.0 0.5 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 9507. 1. 5. 27.0 9.0 3.0 2. 12.0 11.5 2. 4. 0.0 0. 1. + 9509. 1. 4. 42.0 23.0 4.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 9512. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 3. 4. 0.0 0. 1. + 9514. 1. 5. 27.0 9.0 3.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 9529. 1. 4. 22.0 0.5 0.0 2. 16.0 20.0 5. 4. 0.0 0. 1. + 9530. 1. 4. 27.0 2.5 0.0 2. 16.0 20.0 3. 5. 0.0 0. 1. + 9534. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 3. 6. 0.0 0. 1. + 9545. 1. 5. 22.0 2.5 0.0 3. 14.0 9.0 4. 4. 0.0 0. 1. + 9548. 1. 5. 22.0 2.5 0.0 1. 16.0 9.0 3. 5. 0.0 0. 1. + 9551. 1. 4. 42.0 23.0 3.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 9552. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 5. 0.0 0. 1. + 9562. 1. 4. 22.0 2.5 0.0 2. 17.0 6.5 3. 1. 0.0 0. 1. + 9563. 1. 5. 42.0 23.0 3.0 2. 12.0 40.0 3. 5. 0.0 0. 1. + 9567. 1. 5. 27.0 9.0 3.0 3. 14.0 11.5 2. 3. 0.0 0. 1. + 9570. 1. 3. 32.0 13.0 1.0 2. 14.0 20.0 3. 3. 0.0 0. 1. + 9573. 1. 5. 32.0 9.0 2.0 4. 20.0 20.0 5. 5. 0.0 0. 1. + 9575. 1. 3. 27.0 2.5 0.0 3. 14.0 20.0 5. 5. 0.0 0. 1. + 9582. 1. 4. 27.0 6.0 1.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 9585. 1. 4. 32.0 6.0 2.0 2. 16.0 14.0 4. 5. 0.0 0. 1. + 9588. 1. 5. 42.0 23.0 3.0 2. 12.0 20.0 4. 3. 0.0 0. 1. + 9589. 1. 5. 32.0 13.0 2.0 3. 14.0 14.0 3. 5. 0.0 0. 1. + 9594. 1. 4. 22.0 0.5 0.0 2. 14.0 11.5 3. 2. 0.0 0. 1. + 9599. 1. 3. 22.0 2.5 1.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 9600. 1. 2. 42.0 23.0 2.0 2. 20.0 40.0 4. 2. 0.0 0. 1. + 9611. 1. 4. 22.0 2.5 1.0 4. 12.0 9.0 3. 4. 0.0 0. 1. + 9615. 1. 4. 42.0 23.0 4.0 4. 16.0 40.0 4. 5. 0.0 0. 1. + 9616. 1. 3. 37.0 16.5 4.0 1. 12.0 40.0 3. 5. 0.0 0. 1. + 9624. 1. 4. 22.0 2.5 0.0 3. 14.0 6.5 5. 1. 0.0 0. 1. + 9633. 1. 1. 17.5 0.5 0.0 2. 9.0 6.5 2. 2. 0.0 0. 1. + 9642. 1. 4. 27.0 2.5 0.0 2. 20.0 20.0 6. 5. 0.0 0. 1. + 9647. 1. 4. 27.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 9654. 1. 3. 27.0 6.0 2.0 3. 12.0 9.0 3. 5. 0.0 0. 1. + 9662. 1. 5. 32.0 13.0 5.5 3. 14.0 20.0 4. 3. 0.0 0. 1. + 9672. 1. 5. 42.0 23.0 3.0 2. 12.0 20.0 5. 5. 0.0 0. 1. + 9681. 1. 4. 32.0 6.0 1.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 9682. 1. 4. 37.0 16.5 1.0 2. 12.0 20.0 3. 3. 0.0 0. 1. + 9685. 1. 4. 22.0 2.5 0.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 9687. 1. 4. 37.0 16.5 2.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 9695. 1. 5. 22.0 2.5 0.0 3. 12.0 6.5 2. 3. 0.0 0. 1. + 9698. 1. 4. 22.0 0.5 0.0 3. 12.0 14.0 3. 5. 0.0 0. 1. + 9711. 1. 4. 22.0 2.5 0.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 9716. 1. 5. 42.0 23.0 4.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 9717. 1. 2. 22.0 2.5 1.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 9718. 1. 4. 32.0 16.5 2.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 9720. 1. 1. 32.0 13.0 2.0 3. 17.0 40.0 4. 5. 0.0 0. 1. + 9729. 1. 5. 27.0 2.5 0.0 2. 14.0 14.0 4. 6. 0.0 0. 1. + 9738. 1. 4. 22.0 6.0 2.0 3. 12.0 6.5 5. 3. 0.0 0. 1. + 9739. 1. 4. 17.5 2.5 1.0 3. 9.0 9.0 2. 2. 0.0 0. 1. + 9740. 1. 4. 22.0 2.5 0.0 2. 17.0 11.5 4. 2. 0.0 0. 1. + 9741. 1. 5. 37.0 16.5 3.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 9744. 1. 4. 27.0 6.0 2.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 9746. 1. 4. 42.0 23.0 3.0 3. 17.0 20.0 4. 6. 0.0 0. 1. + 9748. 1. 3. 22.0 2.5 0.0 2. 16.0 40.0 4. 4. 0.0 0. 1. + 9751. 1. 2. 37.0 16.5 3.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 9752. 1. 4. 27.0 2.5 0.0 2. 16.0 20.0 5. 5. 0.0 0. 1. + 9753. 1. 5. 22.0 2.5 0.0 3. 16.0 11.5 4. 2. 0.0 0. 1. + 9755. 1. 5. 27.0 6.0 2.0 3. 16.0 11.5 3. 4. 0.0 0. 1. + 9761. 1. 5. 37.0 13.0 0.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 9763. 1. 5. 22.0 2.5 0.0 2. 14.0 14.0 2. 2. 0.0 0. 1. + 9764. 1. 4. 22.0 2.5 0.0 2. 16.0 14.0 4. 5. 0.0 0. 1. + 9765. 1. 3. 22.0 2.5 0.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 9772. 1. 4. 22.0 2.5 0.0 2. 12.0 14.0 3. 5. 0.0 0. 1. + 9775. 1. 3. 27.0 6.0 1.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 9778. 1. 4. 22.0 2.5 0.0 2. 12.0 9.0 3. 4. 0.0 0. 1. + 9786. 1. 3. 22.0 2.5 0.0 3. 17.0 20.0 4. 6. 0.0 0. 1. + 9789. 1. 5. 37.0 16.5 2.0 3. 17.0 20.0 3. 5. 0.0 0. 1. + 9792. 1. 5. 27.0 2.5 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 9793. 1. 4. 37.0 13.0 2.0 4. 16.0 20.0 5. 5. 0.0 0. 1. + 9794. 1. 5. 32.0 13.0 3.0 3. 17.0 20.0 4. 3. 0.0 0. 1. + 9796. 1. 4. 22.0 2.5 0.0 2. 12.0 20.0 4. 5. 0.0 0. 1. + 9800. 1. 5. 22.0 0.5 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 9826. 1. 5. 22.0 2.5 0.0 4. 16.0 20.0 3. 5. 0.0 0. 1. + 9834. 1. 5. 17.5 2.5 0.0 3. 16.0 40.0 4. 2. 0.0 0. 1. + 9837. 1. 5. 22.0 6.0 1.0 4. 12.0 9.0 2. 4. 0.0 0. 1. + 9839. 1. 5. 27.0 6.0 2.0 2. 16.0 20.0 4. 2. 0.0 0. 1. + 9843. 1. 4. 37.0 16.5 2.0 4. 14.0 9.0 4. 6. 0.0 0. 1. + 9845. 1. 5. 22.0 6.0 1.0 3. 12.0 9.0 2. 5. 0.0 0. 1. + 9850. 1. 4. 17.5 0.5 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 9854. 1. 4. 22.0 2.5 0.0 4. 14.0 9.0 3. 4. 0.0 0. 1. + 9855. 1. 2. 22.0 2.5 0.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 9859. 1. 4. 27.0 6.0 1.0 4. 20.0 14.0 4. 5. 0.0 0. 1. + 9861. 1. 5. 22.0 0.5 0.0 3. 16.0 9.0 3. 1. 0.0 0. 1. + 9870. 1. 5. 22.0 2.5 0.0 3. 12.0 11.5 3. 3. 0.0 0. 1. + 9880. 1. 4. 42.0 23.0 3.0 2. 12.0 20.0 3. 3. 0.0 0. 1. + 9881. 1. 4. 22.0 2.5 1.0 2. 14.0 6.5 3. 2. 0.0 0. 1. + 9882. 1. 5. 27.0 6.0 0.0 2. 17.0 11.5 4. 5. 0.0 0. 1. + 9886. 1. 5. 22.0 2.5 0.0 3. 17.0 11.5 5. 5. 0.0 0. 1. + 9887. 1. 4. 22.0 2.5 0.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 9892. 1. 5. 27.0 6.0 0.0 2. 14.0 11.5 3. 5. 0.0 0. 1. + 9895. 1. 5. 27.0 2.5 1.0 3. 16.0 20.0 4. 2. 0.0 0. 1. + 9899. 1. 5. 42.0 23.0 5.5 4. 14.0 11.5 4. 2. 0.0 0. 1. + 9907. 1. 5. 32.0 13.0 1.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 9908. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 9909. 1. 3. 22.0 2.5 0.0 4. 12.0 14.0 5. 5. 0.0 0. 1. + 9912. 1. 5. 22.0 2.5 1.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 9919. 1. 5. 32.0 16.5 3.0 4. 17.0 40.0 4. 6. 0.0 0. 1. + 9920. 1. 5. 42.0 23.0 4.0 3. 20.0 40.0 4. 6. 0.0 0. 1. + 9921. 1. 5. 22.0 2.5 0.0 4. 12.0 9.0 3. 5. 0.0 0. 1. + 9923. 1. 4. 42.0 23.0 3.0 4. 14.0 40.0 5. 2. 0.0 0. 1. + 9926. 1. 5. 27.0 6.0 0.0 2. 17.0 40.0 4. 6. 0.0 0. 1. + 9927. 1. 4. 27.0 2.5 1.0 3. 20.0 11.5 4. 4. 0.0 0. 1. + 9928. 1. 5. 32.0 13.0 3.0 4. 14.0 14.0 4. 3. 0.0 0. 1. + 9929. 1. 4. 22.0 2.5 1.0 4. 14.0 9.0 4. 4. 0.0 0. 1. + 9935. 1. 4. 32.0 13.0 2.0 3. 14.0 20.0 2. 5. 0.0 0. 1. + 9936. 1. 4. 17.5 2.5 0.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 9939. 1. 3. 22.0 2.5 0.0 3. 16.0 6.5 4. 1. 0.0 0. 1. + 9940. 1. 5. 27.0 6.0 1.0 3. 14.0 6.5 6. 4. 0.0 0. 1. + 9941. 1. 5. 27.0 9.0 2.0 4. 14.0 14.0 3. 3. 0.0 0. 1. + 9946. 1. 4. 22.0 2.5 0.0 2. 16.0 20.0 5. 5. 0.0 0. 1. + 9947. 1. 4. 27.0 9.0 2.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 9955. 1. 5. 32.0 9.0 2.0 2. 20.0 20.0 4. 3. 0.0 0. 1. + 9958. 1. 5. 42.0 23.0 5.5 4. 12.0 6.5 4. 2. 0.0 0. 1. + 9964. 1. 4. 27.0 6.0 1.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 9970. 1. 4. 27.0 6.0 1.0 3. 17.0 40.0 4. 6. 0.0 0. 1. + 9974. 1. 4. 27.0 6.0 0.0 3. 16.0 20.0 5. 5. 0.0 0. 1. + 9976. 1. 5. 27.0 2.5 0.0 4. 17.0 4.0 4. 1. 0.0 0. 1. + 9978. 1. 4. 42.0 13.0 0.0 3. 20.0 40.0 4. 5. 0.0 0. 1. + 9979. 1. 5. 22.0 2.5 1.0 2. 12.0 9.0 3. 4. 0.0 0. 1. + 9984. 1. 4. 17.5 2.5 0.0 3. 14.0 9.0 3. 3. 0.0 0. 1. + 9987. 1. 4. 22.0 6.0 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 9989. 1. 4. 22.0 2.5 0.0 3. 16.0 20.0 5. 5. 0.0 0. 1. + 9992. 1. 5. 27.0 6.0 2.0 2. 14.0 11.5 3. 3. 0.0 0. 1. + 9993. 1. 3. 27.0 6.0 0.0 2. 16.0 20.0 3. 5. 0.0 0. 1. + 9996. 1. 5. 22.0 0.5 0.0 3. 16.0 20.0 5. 5. 0.0 0. 1. + 9997. 1. 5. 37.0 16.5 4.0 3. 12.0 40.0 2. 2. 0.0 0. 1. + 10004. 1. 4. 22.0 2.5 2.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 10011. 1. 4. 22.0 2.5 0.0 3. 14.0 11.5 3. 2. 0.0 0. 1. + 10013. 1. 5. 27.0 2.5 0.0 1. 16.0 14.0 4. 5. 0.0 0. 1. + 10018. 1. 5. 27.0 6.0 0.0 2. 16.0 40.0 4. 3. 0.0 0. 1. + 10021. 1. 4. 27.0 2.5 0.0 2. 20.0 14.0 6. 4. 0.0 0. 1. + 10028. 1. 4. 22.0 6.0 2.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 10029. 1. 4. 22.0 2.5 0.0 1. 12.0 14.0 3. 5. 0.0 0. 1. + 10034. 1. 4. 17.5 2.5 0.0 2. 14.0 9.0 4. 4. 0.0 0. 1. + 10052. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 10053. 1. 5. 22.0 0.5 0.0 2. 14.0 6.5 3. 2. 0.0 0. 1. + 10061. 1. 3. 32.0 2.5 0.0 3. 17.0 20.0 4. 3. 0.0 0. 1. + 10072. 1. 5. 22.0 2.5 0.0 4. 17.0 20.0 4. 5. 0.0 0. 1. + 10075. 1. 4. 22.0 6.0 0.0 4. 14.0 14.0 3. 4. 0.0 0. 1. + 10076. 1. 3. 22.0 0.5 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 10094. 1. 4. 17.5 0.5 0.0 3. 12.0 9.0 2. 4. 0.0 0. 1. + 10108. 1. 3. 32.0 16.5 3.0 3. 12.0 20.0 4. 5. 0.0 0. 1. + 10109. 1. 5. 22.0 2.5 1.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 10112. 1. 5. 22.0 2.5 0.0 4. 12.0 11.5 3. 4. 0.0 0. 1. + 10113. 1. 5. 22.0 6.0 2.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 10120. 1. 5. 22.0 2.5 0.0 2. 14.0 9.0 5. 1. 0.0 0. 1. + 10131. 1. 5. 22.0 2.5 0.0 3. 12.0 9.0 2. 2. 0.0 0. 1. + 10132. 1. 5. 27.0 6.0 0.0 4. 12.0 11.5 3. 2. 0.0 0. 1. + 10135. 1. 5. 42.0 23.0 2.0 3. 12.0 20.0 3. 6. 0.0 0. 1. + 10136. 1. 5. 22.0 2.5 0.0 2. 14.0 9.0 3. 4. 0.0 0. 1. + 10138. 1. 3. 37.0 16.5 1.0 3. 14.0 14.0 2. 5. 0.0 0. 1. + 10143. 1. 4. 32.0 13.0 2.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 10153. 1. 5. 22.0 2.5 0.0 3. 14.0 11.5 2. 5. 0.0 0. 1. + 10155. 1. 4. 27.0 9.0 1.0 1. 12.0 11.5 3. 2. 0.0 0. 1. + 10159. 1. 5. 42.0 23.0 2.0 3. 20.0 40.0 4. 6. 0.0 0. 1. + 10161. 1. 5. 22.0 2.5 1.0 3. 14.0 9.0 3. 4. 0.0 0. 1. + 10162. 1. 5. 42.0 23.0 4.0 3. 12.0 40.0 4. 5. 0.0 0. 1. + 10169. 1. 3. 27.0 9.0 2.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 10173. 1. 2. 32.0 13.0 4.0 3. 14.0 20.0 3. 3. 0.0 0. 1. + 10174. 1. 4. 22.0 6.0 0.0 2. 14.0 40.0 3. 5. 0.0 0. 1. + 10176. 1. 5. 22.0 2.5 0.0 1. 17.0 14.0 2. 5. 0.0 0. 1. + 10177. 1. 4. 22.0 2.5 0.0 3. 14.0 11.5 5. 2. 0.0 0. 1. + 10180. 1. 4. 22.0 2.5 1.0 2. 16.0 20.0 4. 6. 0.0 0. 1. + 10181. 1. 5. 27.0 6.0 1.0 3. 14.0 9.0 3. 4. 0.0 0. 1. + 10182. 1. 4. 27.0 6.0 1.0 1. 16.0 14.0 4. 4. 0.0 0. 1. + 10184. 1. 3. 22.0 2.5 1.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 10189. 1. 5. 32.0 6.0 0.0 3. 20.0 20.0 6. 6. 0.0 0. 1. + 10191. 1. 5. 22.0 2.5 0.0 2. 14.0 9.0 3. 2. 0.0 0. 1. + 10195. 1. 5. 17.5 0.5 0.0 3. 12.0 11.5 2. 5. 0.0 0. 1. + 10196. 1. 5. 27.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 10200. 1. 4. 42.0 23.0 2.0 3. 20.0 20.0 4. 2. 0.0 0. 1. + 10205. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 4. 6. 0.0 0. 1. + 10208. 1. 5. 22.0 6.0 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 10209. 1. 5. 22.0 0.5 0.0 3. 16.0 14.0 3. 4. 0.0 0. 1. + 10210. 1. 4. 22.0 0.5 0.0 3. 12.0 9.0 2. 2. 0.0 0. 1. + 10211. 1. 4. 22.0 2.5 0.0 4. 12.0 9.0 4. 4. 0.0 0. 1. + 10221. 1. 5. 27.0 2.5 1.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 10223. 1. 5. 22.0 6.0 0.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 10225. 1. 4. 22.0 2.5 0.0 4. 14.0 14.0 3. 4. 0.0 0. 1. + 10226. 1. 5. 22.0 2.5 0.0 1. 16.0 20.0 4. 4. 0.0 0. 1. + 10227. 1. 5. 32.0 13.0 1.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 10231. 1. 4. 27.0 9.0 2.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 10234. 1. 4. 27.0 9.0 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 10240. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 6. 5. 0.0 0. 1. + 10243. 1. 4. 32.0 13.0 1.0 3. 14.0 14.0 3. 5. 0.0 0. 1. + 10247. 1. 3. 37.0 16.5 3.0 3. 14.0 40.0 4. 4. 0.0 0. 1. + 10248. 1. 3. 22.0 2.5 1.0 3. 16.0 11.5 6. 4. 0.0 0. 1. + 10255. 1. 5. 27.0 16.5 3.0 3. 16.0 20.0 5. 5. 0.0 0. 1. + 10258. 1. 5. 42.0 23.0 2.0 3. 12.0 11.5 5. 5. 0.0 0. 1. + 10262. 1. 5. 27.0 0.5 0.0 4. 12.0 20.0 3. 6. 0.0 0. 1. + 10263. 1. 5. 32.0 16.5 2.0 1. 16.0 20.0 4. 5. 0.0 0. 1. + 10270. 1. 5. 37.0 16.5 1.0 4. 12.0 20.0 3. 2. 0.0 0. 1. + 10274. 1. 5. 27.0 9.0 1.0 3. 12.0 14.0 3. 2. 0.0 0. 1. + 10275. 1. 5. 27.0 13.0 3.0 3. 14.0 14.0 3. 3. 0.0 0. 1. + 10276. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 10278. 1. 4. 22.0 2.5 0.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 10279. 1. 5. 32.0 16.5 3.0 4. 12.0 20.0 3. 5. 0.0 0. 1. + 10280. 1. 5. 22.0 2.5 2.0 4. 12.0 9.0 2. 2. 0.0 0. 1. + 10283. 1. 5. 27.0 9.0 2.0 4. 14.0 11.5 3. 4. 0.0 0. 1. + 10287. 1. 5. 27.0 2.5 0.0 3. 16.0 6.5 4. 4. 0.0 0. 1. + 10299. 1. 4. 32.0 13.0 2.0 4. 14.0 20.0 3. 5. 0.0 0. 1. + 10302. 1. 5. 17.5 0.5 0.0 3. 12.0 9.0 2. 5. 0.0 0. 1. + 10305. 1. 5. 42.0 23.0 3.0 4. 14.0 20.0 3. 6. 0.0 0. 1. + 10308. 1. 5. 22.0 2.5 1.0 2. 14.0 6.5 3. 2. 0.0 0. 1. + 10313. 1. 5. 27.0 9.0 2.0 3. 17.0 20.0 4. 6. 0.0 0. 1. + 10319. 1. 4. 17.5 2.5 0.0 1. 14.0 9.0 3. 1. 0.0 0. 1. + 10321. 1. 2. 22.0 6.0 0.0 2. 14.0 11.5 5. 2. 0.0 0. 1. + 10325. 1. 5. 27.0 2.5 0.0 3. 16.0 14.0 3. 2. 0.0 0. 1. + 10328. 1. 4. 27.0 6.0 1.0 3. 16.0 9.0 4. 5. 0.0 0. 1. + 10332. 1. 4. 37.0 9.0 0.0 3. 20.0 14.0 4. 4. 0.0 0. 1. + 10336. 1. 4. 22.0 2.5 0.0 1. 16.0 14.0 3. 5. 0.0 0. 1. + 10338. 1. 4. 37.0 13.0 2.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 10339. 1. 5. 37.0 16.5 3.0 4. 17.0 20.0 4. 4. 0.0 0. 1. + 10340. 1. 4. 27.0 6.0 0.0 1. 20.0 20.0 6. 6. 0.0 0. 1. + 10342. 1. 4. 27.0 6.0 0.0 3. 16.0 14.0 4. 5. 0.0 0. 1. + 10346. 1. 5. 37.0 16.5 3.0 1. 17.0 20.0 4. 6. 0.0 0. 1. + 10348. 1. 5. 27.0 6.0 2.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 10349. 1. 5. 37.0 16.5 3.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 10363. 1. 5. 42.0 23.0 1.0 4. 12.0 20.0 3. 4. 0.0 0. 1. + 10365. 1. 5. 27.0 9.0 2.0 3. 12.0 20.0 5. 5. 0.0 0. 1. + 10366. 1. 5. 27.0 13.0 2.0 2. 14.0 14.0 2. 4. 0.0 0. 1. + 10375. 1. 5. 42.0 23.0 2.0 4. 14.0 14.0 5. 5. 0.0 0. 1. + 10376. 1. 5. 42.0 23.0 5.5 4. 14.0 11.5 5. 4. 0.0 0. 1. + 10382. 1. 4. 22.0 6.0 0.0 1. 17.0 20.0 4. 1. 0.0 0. 1. + 10395. 1. 4. 27.0 2.5 0.0 4. 16.0 11.5 3. 1. 0.0 0. 1. + 10398. 1. 4. 17.5 2.5 0.0 1. 12.0 11.5 5. 2. 0.0 0. 1. + 10399. 1. 3. 27.0 9.0 0.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 10401. 1. 5. 22.0 2.5 0.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 10412. 1. 4. 27.0 9.0 2.0 3. 12.0 40.0 3. 2. 0.0 0. 1. + 10416. 1. 4. 22.0 6.0 0.0 2. 16.0 20.0 5. 5. 0.0 0. 1. + 10419. 1. 4. 22.0 0.5 0.0 1. 14.0 6.5 1. 1. 0.0 0. 1. + 10421. 1. 5. 22.0 2.5 1.0 2. 12.0 6.5 3. 1. 0.0 0. 1. + 10422. 1. 5. 27.0 9.0 2.0 3. 12.0 9.0 5. 5. 0.0 0. 1. + 10423. 1. 5. 27.0 6.0 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 10431. 1. 4. 22.0 2.5 0.0 3. 14.0 9.0 2. 2. 0.0 0. 1. + 10437. 1. 4. 22.0 6.0 1.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 10439. 1. 5. 22.0 2.5 1.0 3. 14.0 9.0 3. 4. 0.0 0. 1. + 10464. 1. 3. 27.0 6.0 1.0 1. 12.0 20.0 3. 5. 0.0 0. 1. + 10471. 1. 5. 37.0 16.5 4.0 3. 20.0 40.0 4. 2. 0.0 0. 1. + 10476. 1. 4. 22.0 2.5 0.0 2. 14.0 11.5 3. 5. 0.0 0. 1. + 10481. 1. 4. 32.0 13.0 2.0 3. 14.0 14.0 5. 5. 0.0 0. 1. + 10485. 1. 5. 22.0 2.5 0.0 1. 14.0 11.5 3. 4. 0.0 0. 1. + 10487. 1. 5. 27.0 2.5 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 10495. 1. 4. 27.0 9.0 1.0 2. 12.0 20.0 2. 2. 0.0 0. 1. + 10496. 1. 5. 22.0 2.5 0.0 2. 14.0 9.0 3. 4. 0.0 0. 1. + 10497. 1. 3. 37.0 13.0 1.0 3. 17.0 11.5 5. 3. 0.0 0. 1. + 10502. 1. 5. 42.0 23.0 3.0 4. 12.0 20.0 2. 2. 0.0 0. 1. + 10504. 1. 5. 27.0 6.0 0.0 4. 16.0 14.0 4. 5. 0.0 0. 1. + 10505. 1. 2. 27.0 6.0 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 10508. 1. 5. 32.0 13.0 2.0 4. 14.0 20.0 4. 5. 0.0 0. 1. + 10514. 1. 5. 22.0 2.5 0.0 1. 17.0 11.5 4. 4. 0.0 0. 1. + 10523. 1. 5. 27.0 9.0 2.0 3. 12.0 14.0 3. 5. 0.0 0. 1. + 10526. 1. 5. 27.0 6.0 0.0 2. 16.0 20.0 6. 6. 0.0 0. 1. + 10531. 1. 5. 27.0 6.0 1.0 3. 16.0 11.5 4. 2. 0.0 0. 1. + 10533. 1. 4. 22.0 9.0 1.0 1. 12.0 6.5 2. 2. 0.0 0. 1. + 10534. 1. 4. 32.0 13.0 3.0 3. 20.0 20.0 4. 5. 0.0 0. 1. + 10535. 1. 4. 22.0 2.5 0.0 1. 14.0 20.0 3. 2. 0.0 0. 1. + 10541. 1. 4. 27.0 6.0 2.0 3. 14.0 14.0 3. 5. 0.0 0. 1. + 10542. 1. 5. 42.0 23.0 4.0 2. 12.0 40.0 3. 6. 0.0 0. 1. + 10543. 1. 3. 32.0 13.0 3.0 4. 16.0 14.0 4. 2. 0.0 0. 1. + 10544. 1. 3. 22.0 0.5 0.0 3. 12.0 6.5 3. 1. 0.0 0. 1. + 10548. 1. 2. 22.0 2.5 0.0 2. 14.0 9.0 3. 4. 0.0 0. 1. + 10555. 1. 3. 37.0 23.0 4.0 2. 14.0 20.0 4. 2. 0.0 0. 1. + 10564. 1. 5. 42.0 23.0 5.5 4. 14.0 14.0 5. 2. 0.0 0. 1. + 10565. 1. 5. 37.0 23.0 3.0 3. 12.0 14.0 4. 5. 0.0 0. 1. + 10566. 1. 5. 32.0 9.0 2.0 3. 16.0 20.0 4. 6. 0.0 0. 1. + 10567. 1. 5. 32.0 23.0 2.0 3. 12.0 6.5 2. 2. 0.0 0. 1. + 10570. 1. 5. 37.0 13.0 3.0 4. 16.0 40.0 4. 2. 0.0 0. 1. + 10573. 1. 5. 32.0 16.5 5.5 2. 12.0 11.5 3. 2. 0.0 0. 1. + 10575. 1. 5. 27.0 9.0 3.0 1. 12.0 20.0 2. 5. 0.0 0. 1. + 10577. 1. 4. 17.5 2.5 0.0 2. 14.0 6.5 3. 3. 0.0 0. 1. + 10582. 1. 5. 22.0 0.5 0.0 1. 16.0 6.5 3. 1. 0.0 0. 1. + 10585. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 10586. 1. 5. 22.0 2.5 0.0 3. 16.0 9.0 5. 4. 0.0 0. 1. + 10588. 1. 5. 32.0 9.0 0.0 4. 20.0 40.0 6. 6. 0.0 0. 1. + 10593. 1. 3. 27.0 6.0 0.0 4. 16.0 11.5 4. 4. 0.0 0. 1. + 10595. 1. 5. 22.0 2.5 0.0 1. 14.0 20.0 3. 4. 0.0 0. 1. + 10596. 1. 5. 22.0 0.5 0.0 2. 12.0 9.0 3. 1. 0.0 0. 1. + 10598. 1. 4. 27.0 13.0 2.0 4. 14.0 14.0 4. 4. 0.0 0. 1. + 10602. 1. 4. 42.0 23.0 4.0 2. 14.0 40.0 4. 5. 0.0 0. 1. + 10606. 1. 5. 22.0 2.5 0.0 3. 16.0 40.0 5. 3. 0.0 0. 1. + 10607. 1. 5. 42.0 23.0 3.0 3. 16.0 11.5 4. 2. 0.0 0. 1. + 10611. 1. 5. 22.0 2.5 0.0 1. 14.0 14.0 6. 6. 0.0 0. 1. + 10619. 1. 4. 17.5 2.5 0.0 3. 14.0 11.5 3. 3. 0.0 0. 1. + 10621. 1. 5. 27.0 2.5 2.0 1. 14.0 14.0 2. 3. 0.0 0. 1. + 10627. 1. 4. 27.0 9.0 1.0 3. 12.0 11.5 3. 3. 0.0 0. 1. + 10629. 1. 5. 22.0 0.5 0.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 10630. 1. 5. 32.0 16.5 4.0 3. 12.0 9.0 3. 4. 0.0 0. 1. + 10631. 1. 5. 32.0 13.0 2.0 4. 12.0 11.5 3. 3. 0.0 0. 1. + 10633. 1. 5. 27.0 2.5 1.0 3. 14.0 14.0 5. 5. 0.0 0. 1. + 10636. 1. 5. 42.0 23.0 1.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 10637. 1. 4. 42.0 23.0 4.0 3. 14.0 11.5 5. 5. 0.0 0. 1. + 10639. 1. 4. 22.0 0.5 0.0 2. 14.0 6.5 4. 4. 0.0 0. 1. + 10641. 1. 3. 27.0 6.0 2.0 3. 14.0 11.5 3. 6. 0.0 0. 1. + 10660. 1. 5. 22.0 2.5 0.0 1. 14.0 11.5 3. 5. 0.0 0. 1. + 10663. 1. 4. 37.0 23.0 5.5 2. 12.0 20.0 3. 2. 0.0 0. 1. + 10667. 1. 5. 37.0 16.5 3.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 10670. 1. 5. 27.0 9.0 3.0 2. 14.0 20.0 3. 2. 0.0 0. 1. + 10678. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 10681. 1. 3. 27.0 9.0 2.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 10685. 1. 3. 22.0 2.5 0.0 2. 12.0 14.0 3. 5. 0.0 0. 1. + 10690. 1. 5. 37.0 16.5 4.0 4. 14.0 20.0 3. 4. 0.0 0. 1. + 10695. 1. 4. 22.0 9.0 1.0 3. 12.0 9.0 3. 4. 0.0 0. 1. + 10697. 1. 2. 27.0 6.0 2.0 2. 12.0 11.5 5. 5. 0.0 0. 1. + 10698. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 5. 4. 0.0 0. 1. + 10705. 1. 5. 32.0 13.0 2.0 4. 14.0 20.0 5. 4. 0.0 0. 1. + 10710. 1. 4. 22.0 2.5 0.0 2. 16.0 11.5 3. 5. 0.0 0. 1. + 10716. 1. 5. 27.0 9.0 0.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 10724. 1. 5. 32.0 9.0 0.0 4. 20.0 40.0 4. 6. 0.0 0. 1. + 10725. 1. 5. 32.0 13.0 2.0 3. 16.0 11.5 4. 5. 0.0 0. 1. + 10726. 1. 5. 17.5 2.5 0.0 4. 14.0 11.5 3. 4. 0.0 0. 1. + 10728. 1. 5. 42.0 23.0 3.0 3. 12.0 6.5 3. 2. 0.0 0. 1. + 10743. 1. 5. 22.0 0.5 0.0 2. 14.0 9.0 4. 2. 0.0 0. 1. + 10753. 1. 5. 37.0 13.0 0.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 10762. 1. 4. 22.0 2.5 0.0 3. 14.0 6.5 3. 3. 0.0 0. 1. + 10771. 1. 5. 37.0 16.5 4.0 3. 14.0 20.0 4. 2. 0.0 0. 1. + 10791. 1. 4. 42.0 23.0 4.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 10793. 1. 5. 27.0 6.0 1.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 10794. 1. 5. 32.0 13.0 3.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 10804. 1. 5. 42.0 23.0 3.0 4. 14.0 20.0 3. 4. 0.0 0. 1. + 10805. 1. 4. 22.0 2.5 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 10814. 1. 5. 42.0 13.0 0.0 4. 14.0 40.0 3. 5. 0.0 0. 1. + 10817. 1. 4. 27.0 2.5 0.0 1. 14.0 9.0 3. 2. 0.0 0. 1. + 10820. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 2. 2. 0.0 0. 1. + 10823. 1. 4. 22.0 6.0 0.0 2. 17.0 6.5 4. 1. 0.0 0. 1. + 10829. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 5. 5. 0.0 0. 1. + 10833. 1. 5. 32.0 16.5 3.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 10839. 1. 4. 27.0 2.5 0.0 2. 16.0 14.0 4. 6. 0.0 0. 1. + 10845. 1. 4. 22.0 2.5 0.0 2. 14.0 9.0 4. 3. 0.0 0. 1. + 10850. 1. 4. 32.0 16.5 2.0 3. 12.0 14.0 3. 2. 0.0 0. 1. + 10855. 1. 2. 22.0 2.5 0.0 2. 14.0 4.0 3. 4. 0.0 0. 1. + 10867. 1. 2. 42.0 23.0 3.0 3. 14.0 20.0 5. 5. 0.0 0. 1. + 10871. 1. 4. 42.0 23.0 4.0 3. 12.0 20.0 5. 2. 0.0 0. 1. + 10875. 1. 3. 32.0 16.5 3.0 3. 12.0 14.0 3. 3. 0.0 0. 1. + 10880. 1. 5. 37.0 16.5 2.0 4. 12.0 14.0 5. 5. 0.0 0. 1. + 10881. 1. 5. 32.0 13.0 2.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 10883. 1. 4. 22.0 2.5 0.0 2. 16.0 9.0 3. 2. 0.0 0. 1. + 10885. 1. 4. 27.0 2.5 0.0 3. 12.0 14.0 3. 3. 0.0 0. 1. + 10886. 1. 3. 42.0 23.0 4.0 4. 20.0 40.0 6. 6. 0.0 0. 1. + 10891. 1. 3. 32.0 16.5 2.0 2. 14.0 20.0 5. 2. 0.0 0. 1. + 10892. 1. 5. 22.0 0.5 1.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 10903. 1. 4. 22.0 6.0 1.0 2. 12.0 11.5 4. 1. 0.0 0. 1. + 10904. 1. 5. 27.0 6.0 0.0 3. 17.0 20.0 5. 6. 0.0 0. 1. + 10908. 1. 2. 37.0 13.0 4.0 4. 20.0 20.0 4. 6. 0.0 0. 1. + 10911. 1. 4. 27.0 2.5 0.0 3. 20.0 40.0 4. 3. 0.0 0. 1. + 10912. 1. 5. 32.0 2.5 1.0 1. 20.0 4.0 3. 1. 0.0 0. 1. + 10915. 1. 5. 37.0 16.5 3.0 3. 12.0 11.5 5. 5. 0.0 0. 1. + 10919. 1. 5. 27.0 9.0 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 10920. 1. 4. 32.0 13.0 2.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 10921. 1. 4. 37.0 16.5 4.0 4. 14.0 14.0 4. 5. 0.0 0. 1. + 10932. 1. 5. 17.5 0.5 0.0 2. 12.0 4.0 2. 2. 0.0 0. 1. + 10937. 1. 4. 32.0 13.0 1.0 3. 14.0 11.5 2. 5. 0.0 0. 1. + 10944. 1. 5. 37.0 23.0 5.5 4. 17.0 40.0 5. 6. 0.0 0. 1. + 10951. 1. 5. 22.0 2.5 0.0 2. 14.0 6.5 2. 4. 0.0 0. 1. + 10952. 1. 4. 22.0 2.5 0.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 10953. 1. 4. 42.0 23.0 4.0 2. 12.0 20.0 4. 4. 0.0 0. 1. + 10955. 1. 5. 42.0 23.0 4.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 10958. 1. 4. 17.5 0.5 0.0 1. 14.0 11.5 3. 4. 0.0 0. 1. + 10963. 1. 5. 22.0 0.5 0.0 4. 20.0 11.5 4. 1. 0.0 0. 1. + 10967. 1. 4. 27.0 6.0 1.0 3. 16.0 14.0 4. 3. 0.0 0. 1. + 10981. 1. 4. 42.0 23.0 2.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 10982. 1. 4. 27.0 9.0 2.0 2. 14.0 20.0 4. 5. 0.0 0. 1. + 10985. 1. 4. 27.0 6.0 1.0 1. 12.0 11.5 4. 1. 0.0 0. 1. + 10987. 1. 5. 27.0 2.5 0.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 10990. 1. 4. 22.0 2.5 0.0 2. 14.0 6.5 2. 2. 0.0 0. 1. + 10992. 1. 5. 37.0 16.5 3.0 4. 14.0 40.0 4. 4. 0.0 0. 1. + 10998. 1. 5. 27.0 6.0 0.0 2. 14.0 6.5 2. 4. 0.0 0. 1. + 10999. 1. 5. 37.0 16.5 2.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 11002. 1. 2. 32.0 9.0 3.0 1. 16.0 20.0 4. 4. 0.0 0. 1. + 11015. 1. 5. 27.0 6.0 1.0 2. 16.0 11.5 3. 4. 0.0 0. 1. + 11018. 1. 4. 37.0 23.0 3.0 3. 20.0 14.0 4. 4. 0.0 0. 1. + 11025. 1. 5. 37.0 23.0 3.0 4. 12.0 20.0 3. 2. 0.0 0. 1. + 11029. 1. 4. 27.0 6.0 2.0 3. 14.0 9.0 3. 5. 0.0 0. 1. + 11033. 1. 5. 32.0 13.0 2.0 4. 16.0 20.0 4. 4. 0.0 0. 1. + 11035. 1. 4. 27.0 6.0 1.0 3. 17.0 14.0 4. 4. 0.0 0. 1. + 11040. 1. 3. 37.0 13.0 1.0 2. 14.0 40.0 4. 6. 0.0 0. 1. + 11044. 1. 5. 37.0 16.5 2.0 4. 14.0 20.0 3. 6. 0.0 0. 1. + 11046. 1. 4. 27.0 6.0 0.0 3. 16.0 9.0 3. 4. 0.0 0. 1. + 11052. 1. 4. 42.0 13.0 0.0 3. 14.0 9.0 5. 5. 0.0 0. 1. + 11057. 1. 4. 27.0 9.0 2.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 11058. 1. 4. 22.0 6.0 1.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 11063. 1. 5. 22.0 2.5 0.0 3. 12.0 9.0 3. 4. 0.0 0. 1. + 11066. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 2. 4. 0.0 0. 1. + 11074. 1. 4. 27.0 6.0 2.0 3. 16.0 11.5 4. 6. 0.0 0. 1. + 11083. 1. 4. 27.0 2.5 0.0 1. 12.0 20.0 3. 6. 0.0 0. 1. + 11100. 1. 5. 27.0 13.0 2.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 11103. 1. 4. 27.0 6.0 1.0 1. 16.0 11.5 2. 4. 0.0 0. 1. + 11110. 1. 5. 32.0 16.5 2.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 11112. 1. 5. 27.0 2.5 0.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 11121. 1. 4. 27.0 9.0 1.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 11124. 1. 5. 37.0 16.5 3.0 2. 12.0 14.0 4. 4. 0.0 0. 1. + 11129. 1. 5. 27.0 2.5 0.0 4. 20.0 14.0 4. 2. 0.0 0. 1. + 11133. 1. 5. 27.0 2.5 0.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 11140. 1. 5. 27.0 6.0 1.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 11141. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 11149. 1. 5. 42.0 23.0 2.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 11154. 1. 5. 27.0 9.0 2.0 3. 20.0 40.0 4. 5. 0.0 0. 1. + 11155. 1. 3. 22.0 2.5 1.0 1. 12.0 11.5 3. 2. 0.0 0. 1. + 11158. 1. 5. 22.0 2.5 0.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 11159. 1. 5. 42.0 23.0 2.0 3. 14.0 14.0 3. 5. 0.0 0. 1. + 11167. 1. 5. 32.0 16.5 3.0 1. 14.0 20.0 4. 5. 0.0 0. 1. + 11171. 1. 4. 22.0 2.5 0.0 3. 14.0 14.0 3. 1. 0.0 0. 1. + 11173. 1. 5. 32.0 9.0 2.0 4. 16.0 20.0 4. 5. 0.0 0. 1. + 11187. 1. 5. 22.0 2.5 0.0 3. 16.0 40.0 4. 2. 0.0 0. 1. + 11203. 1. 4. 27.0 9.0 2.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 11209. 1. 4. 37.0 16.5 3.0 3. 12.0 20.0 3. 6. 0.0 0. 1. + 11212. 1. 3. 27.0 9.0 1.0 4. 14.0 20.0 6. 4. 0.0 0. 1. + 11213. 1. 5. 32.0 16.5 3.0 4. 12.0 11.5 4. 4. 0.0 0. 1. + 11221. 1. 4. 32.0 16.5 3.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 11228. 1. 5. 32.0 16.5 2.0 4. 12.0 20.0 4. 3. 0.0 0. 1. + 11236. 1. 3. 22.0 2.5 0.0 2. 16.0 20.0 2. 5. 0.0 0. 1. + 11238. 1. 5. 22.0 2.5 0.0 4. 14.0 6.5 3. 3. 0.0 0. 1. + 11241. 1. 4. 27.0 16.5 1.0 3. 14.0 14.0 4. 4. 0.0 0. 1. + 11258. 1. 5. 27.0 6.0 0.0 3. 16.0 20.0 3. 6. 0.0 0. 1. + 11261. 1. 5. 27.0 0.5 0.0 2. 17.0 14.0 4. 3. 0.0 0. 1. + 11263. 1. 5. 22.0 2.5 1.0 2. 14.0 11.5 4. 4. 0.0 0. 1. + 11268. 1. 4. 27.0 6.0 2.0 2. 17.0 20.0 4. 6. 0.0 0. 1. + 11276. 1. 3. 22.0 2.5 1.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 11280. 1. 5. 22.0 2.5 0.0 2. 12.0 11.5 2. 4. 0.0 0. 1. + 11289. 1. 5. 22.0 2.5 0.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 11290. 1. 5. 42.0 23.0 4.0 4. 16.0 20.0 4. 4. 0.0 0. 1. + 11293. 1. 5. 22.0 0.5 0.0 2. 17.0 20.0 3. 4. 0.0 0. 1. + 11297. 1. 4. 27.0 9.0 2.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 11300. 1. 5. 22.0 2.5 0.0 4. 16.0 20.0 4. 5. 0.0 0. 1. + 11307. 1. 3. 27.0 6.0 2.0 4. 17.0 11.5 2. 4. 0.0 0. 1. + 11308. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 11312. 1. 5. 27.0 6.0 0.0 3. 14.0 40.0 3. 3. 0.0 0. 1. + 11316. 1. 3. 42.0 23.0 2.0 3. 14.0 11.5 3. 2. 0.0 0. 1. + 11320. 1. 5. 27.0 9.0 0.0 1. 14.0 14.0 3. 5. 0.0 0. 1. + 11321. 1. 3. 27.0 2.5 0.0 2. 20.0 20.0 6. 4. 0.0 0. 1. + 11323. 1. 4. 27.0 16.5 2.0 3. 12.0 20.0 5. 5. 0.0 0. 1. + 11324. 1. 4. 32.0 9.0 1.0 3. 16.0 11.5 4. 5. 0.0 0. 1. + 11329. 1. 4. 42.0 23.0 5.5 4. 14.0 20.0 5. 5. 0.0 0. 1. + 11341. 1. 4. 22.0 2.5 0.0 3. 12.0 4.0 2. 1. 0.0 0. 1. + 11343. 1. 5. 27.0 2.5 0.0 3. 20.0 20.0 4. 6. 0.0 0. 1. + 11349. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 4. 4. 0.0 0. 1. + 11351. 1. 3. 22.0 2.5 2.0 3. 12.0 9.0 3. 2. 0.0 0. 1. + 11352. 1. 4. 42.0 23.0 3.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 11354. 1. 4. 22.0 2.5 0.0 2. 16.0 6.5 3. 1. 0.0 0. 1. + 11360. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 3. 0.0 0. 1. + 11370. 1. 5. 27.0 6.0 0.0 1. 17.0 40.0 4. 5. 0.0 0. 1. + 11371. 1. 5. 32.0 13.0 2.0 3. 14.0 14.0 2. 2. 0.0 0. 1. + 11379. 1. 5. 17.5 2.5 0.0 4. 12.0 4.0 3. 1. 0.0 0. 1. + 11381. 1. 5. 42.0 23.0 5.5 4. 14.0 40.0 4. 6. 0.0 0. 1. + 11388. 1. 5. 37.0 13.0 2.0 3. 16.0 40.0 4. 4. 0.0 0. 1. + 11401. 1. 4. 32.0 16.5 3.0 3. 14.0 40.0 2. 6. 0.0 0. 1. + 11403. 1. 2. 17.5 2.5 1.0 3. 14.0 6.5 3. 2. 0.0 0. 1. + 11405. 1. 4. 22.0 2.5 0.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 11411. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 5. 5. 0.0 0. 1. + 11412. 1. 3. 32.0 6.0 1.0 2. 14.0 20.0 5. 4. 0.0 0. 1. + 11415. 1. 4. 27.0 2.5 0.0 2. 16.0 11.5 4. 1. 0.0 0. 1. + 11417. 1. 3. 42.0 13.0 0.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 11420. 1. 5. 27.0 9.0 2.0 4. 14.0 11.5 5. 4. 0.0 0. 1. + 11423. 1. 3. 22.0 2.5 0.0 2. 14.0 11.5 3. 2. 0.0 0. 1. + 11424. 1. 5. 32.0 6.0 1.0 4. 16.0 20.0 4. 5. 0.0 0. 1. + 11425. 1. 5. 32.0 13.0 2.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 11435. 1. 3. 22.0 6.0 1.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 11437. 1. 5. 27.0 2.5 0.0 2. 17.0 20.0 6. 6. 0.0 0. 1. + 11444. 1. 5. 22.0 6.0 1.0 2. 14.0 14.0 4. 4. 0.0 0. 1. + 11448. 1. 5. 22.0 6.0 0.0 3. 12.0 11.5 5. 4. 0.0 0. 1. + 11460. 1. 4. 27.0 6.0 0.0 4. 17.0 20.0 4. 5. 0.0 0. 1. + 11464. 1. 4. 27.0 2.5 0.0 2. 14.0 20.0 3. 6. 0.0 0. 1. + 11474. 1. 5. 22.0 2.5 2.0 3. 14.0 9.0 4. 4. 0.0 0. 1. + 11476. 1. 4. 22.0 2.5 0.0 2. 12.0 11.5 3. 3. 0.0 0. 1. + 11477. 1. 5. 27.0 2.5 0.0 4. 16.0 20.0 5. 2. 0.0 0. 1. + 11480. 1. 4. 22.0 2.5 0.0 3. 14.0 6.5 3. 1. 0.0 0. 1. + 11485. 1. 4. 37.0 16.5 5.5 3. 14.0 9.0 2. 4. 0.0 0. 1. + 11487. 1. 5. 22.0 2.5 1.0 2. 12.0 6.5 5. 2. 0.0 0. 1. + 11490. 1. 4. 22.0 2.5 0.0 2. 14.0 14.0 5. 5. 0.0 0. 1. + 11491. 1. 5. 42.0 23.0 5.5 4. 17.0 14.0 4. 6. 0.0 0. 1. + 11493. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 3. 3. 0.0 0. 1. + 11496. 1. 4. 32.0 13.0 1.0 3. 20.0 11.5 6. 5. 0.0 0. 1. + 11497. 1. 5. 22.0 2.5 0.0 2. 12.0 40.0 3. 4. 0.0 0. 1. + 11498. 1. 5. 27.0 9.0 2.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 11501. 1. 5. 32.0 16.5 2.0 4. 14.0 14.0 5. 4. 0.0 0. 1. + 11502. 1. 5. 27.0 9.0 3.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 11512. 1. 5. 32.0 13.0 2.0 2. 14.0 20.0 3. 6. 0.0 0. 1. + 11514. 1. 4. 37.0 16.5 3.0 3. 14.0 20.0 5. 4. 0.0 0. 1. + 11519. 1. 4. 27.0 6.0 1.0 3. 14.0 9.0 3. 4. 0.0 0. 1. + 11523. 1. 4. 27.0 6.0 2.0 3. 16.0 9.0 4. 2. 0.0 0. 1. + 11527. 1. 4. 22.0 2.5 0.0 3. 14.0 6.5 3. 4. 0.0 0. 1. + 11537. 1. 4. 17.5 0.5 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 11544. 1. 5. 17.5 0.5 0.0 3. 12.0 6.5 3. 1. 0.0 0. 1. + 11548. 1. 5. 22.0 2.5 0.0 1. 14.0 11.5 3. 2. 0.0 0. 1. + 11561. 1. 5. 32.0 16.5 2.0 2. 12.0 14.0 3. 5. 0.0 0. 1. + 11564. 1. 5. 42.0 23.0 3.0 3. 17.0 40.0 4. 5. 0.0 0. 1. + 11565. 1. 5. 22.0 2.5 1.0 4. 12.0 11.5 5. 4. 0.0 0. 1. + 11568. 1. 4. 27.0 6.0 1.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 11569. 1. 3. 22.0 2.5 0.0 2. 12.0 4.0 3. 3. 0.0 0. 1. + 11574. 1. 5. 22.0 2.5 0.0 3. 16.0 11.5 2. 5. 0.0 0. 1. + 11579. 1. 5. 17.5 2.5 0.0 3. 12.0 4.0 2. 1. 0.0 0. 1. + 11580. 1. 4. 17.5 2.5 0.0 3. 12.0 6.5 2. 4. 0.0 0. 1. + 11582. 1. 5. 27.0 2.5 0.0 4. 12.0 20.0 3. 6. 0.0 0. 1. + 11594. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 11595. 1. 4. 42.0 23.0 3.0 1. 14.0 20.0 5. 4. 0.0 0. 1. + 11599. 1. 5. 42.0 23.0 2.0 3. 14.0 11.5 5. 5. 0.0 0. 1. + 11602. 1. 4. 22.0 6.0 2.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 11604. 1. 4. 32.0 13.0 2.0 3. 16.0 40.0 5. 2. 0.0 0. 1. + 11608. 1. 4. 37.0 16.5 3.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 11609. 1. 5. 32.0 16.5 5.5 4. 12.0 6.5 3. 4. 0.0 0. 1. + 11610. 1. 4. 32.0 9.0 1.0 2. 12.0 40.0 2. 3. 0.0 0. 1. + 11612. 1. 5. 22.0 2.5 0.0 4. 14.0 6.5 1. 2. 0.0 0. 1. + 11621. 1. 5. 17.5 2.5 0.0 3. 14.0 9.0 4. 1. 0.0 0. 1. + 11628. 1. 5. 22.0 2.5 0.0 3. 12.0 9.0 3. 4. 0.0 0. 1. + 11630. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 5. 5. 0.0 0. 1. + 11632. 1. 5. 27.0 6.0 1.0 4. 14.0 11.5 3. 3. 0.0 0. 1. + 11635. 1. 5. 32.0 13.0 2.0 4. 14.0 20.0 3. 4. 0.0 0. 1. + 11637. 1. 3. 37.0 16.5 5.5 3. 12.0 14.0 2. 4. 0.0 0. 1. + 11640. 1. 3. 32.0 9.0 3.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 11641. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 4. 6. 0.0 0. 1. + 11647. 1. 5. 32.0 16.5 3.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 11654. 1. 5. 27.0 0.5 0.0 4. 17.0 20.0 4. 4. 0.0 0. 1. + 11664. 1. 4. 22.0 6.0 1.0 2. 16.0 11.5 4. 4. 0.0 0. 1. + 11667. 1. 4. 22.0 0.5 0.0 3. 14.0 6.5 3. 2. 0.0 0. 1. + 11671. 1. 5. 22.0 6.0 3.0 1. 12.0 11.5 4. 4. 0.0 0. 1. + 11679. 1. 4. 22.0 0.5 0.0 3. 14.0 11.5 2. 4. 0.0 0. 1. + 11683. 1. 5. 22.0 2.5 1.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 11684. 1. 3. 37.0 23.0 5.5 3. 16.0 40.0 4. 6. 0.0 0. 1. + 11692. 1. 2. 22.0 2.5 0.0 3. 14.0 6.5 3. 2. 0.0 0. 1. + 11695. 1. 5. 27.0 9.0 1.0 1. 14.0 9.0 4. 4. 0.0 0. 1. + 11696. 1. 5. 22.0 2.5 0.0 2. 12.0 9.0 2. 3. 0.0 0. 1. + 11697. 1. 3. 37.0 16.5 3.0 1. 16.0 20.0 3. 6. 0.0 0. 1. + 11698. 1. 3. 27.0 2.5 1.0 2. 14.0 20.0 2. 4. 0.0 0. 1. + 11704. 1. 4. 42.0 23.0 2.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 11711. 1. 3. 27.0 2.5 2.0 2. 14.0 14.0 4. 4. 0.0 0. 1. + 11712. 1. 4. 22.0 2.5 0.0 1. 14.0 14.0 5. 4. 0.0 0. 1. + 11715. 1. 5. 22.0 0.5 0.0 3. 16.0 40.0 4. 2. 0.0 0. 1. + 11719. 1. 4. 27.0 6.0 2.0 1. 16.0 20.0 4. 4. 0.0 0. 1. + 11722. 1. 4. 22.0 6.0 1.0 2. 12.0 20.0 2. 5. 0.0 0. 1. + 11724. 1. 5. 32.0 13.0 3.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 11728. 1. 4. 32.0 16.5 1.0 3. 12.0 20.0 4. 2. 0.0 0. 1. + 11729. 1. 5. 27.0 2.5 0.0 4. 12.0 20.0 3. 5. 0.0 0. 1. + 11731. 1. 5. 17.5 2.5 1.0 1. 12.0 9.0 3. 4. 0.0 0. 1. + 11747. 1. 5. 22.0 2.5 1.0 3. 14.0 6.5 4. 1. 0.0 0. 1. + 11761. 1. 5. 32.0 9.0 0.0 4. 20.0 20.0 4. 5. 0.0 0. 1. + 11763. 1. 5. 22.0 0.5 0.0 1. 16.0 11.5 4. 5. 0.0 0. 1. + 11767. 1. 5. 32.0 9.0 0.0 1. 16.0 20.0 3. 5. 0.0 0. 1. + 11768. 1. 4. 42.0 23.0 3.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 11775. 1. 4. 22.0 2.5 0.0 3. 14.0 11.5 2. 2. 0.0 0. 1. + 11778. 1. 5. 32.0 13.0 1.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 11779. 1. 5. 22.0 6.0 1.0 1. 12.0 11.5 3. 4. 0.0 0. 1. + 11783. 1. 2. 42.0 23.0 4.0 2. 14.0 14.0 4. 5. 0.0 0. 1. + 11791. 1. 5. 22.0 2.5 0.0 4. 12.0 11.5 4. 4. 0.0 0. 1. + 11806. 1. 5. 32.0 13.0 2.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 11810. 1. 5. 22.0 0.5 0.0 3. 14.0 9.0 3. 4. 0.0 0. 1. + 11816. 1. 5. 22.0 2.5 0.0 1. 17.0 9.0 4. 1. 0.0 0. 1. + 11821. 1. 5. 22.0 2.5 0.0 1. 14.0 9.0 4. 1. 0.0 0. 1. + 11827. 1. 4. 42.0 23.0 5.5 3. 16.0 14.0 5. 5. 0.0 0. 1. + 11829. 1. 5. 22.0 2.5 0.0 3. 16.0 11.5 3. 5. 0.0 0. 1. + 11830. 1. 4. 37.0 13.0 1.0 4. 20.0 9.0 6. 4. 0.0 0. 1. + 11833. 1. 5. 27.0 2.5 0.0 2. 20.0 14.0 4. 4. 0.0 0. 1. + 11835. 1. 3. 22.0 0.5 1.0 4. 12.0 11.5 5. 4. 0.0 0. 1. + 11836. 1. 4. 27.0 2.5 1.0 3. 14.0 20.0 5. 5. 0.0 0. 1. + 11841. 1. 5. 22.0 2.5 0.0 1. 12.0 9.0 2. 4. 0.0 0. 1. + 11842. 1. 5. 22.0 6.0 2.0 2. 12.0 4.0 2. 4. 0.0 0. 1. + 11844. 1. 4. 27.0 6.0 2.0 1. 14.0 14.0 5. 5. 0.0 0. 1. + 11845. 1. 5. 22.0 0.5 0.0 2. 17.0 4.0 3. 1. 0.0 0. 1. + 11848. 1. 3. 27.0 9.0 1.0 2. 14.0 4.0 3. 4. 0.0 0. 1. + 11852. 1. 5. 42.0 23.0 4.0 3. 14.0 40.0 5. 5. 0.0 0. 1. + 11853. 1. 5. 22.0 2.5 0.0 1. 14.0 20.0 3. 4. 0.0 0. 1. + 11854. 1. 4. 22.0 2.5 1.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 11856. 1. 5. 32.0 2.5 0.0 3. 16.0 40.0 4. 5. 0.0 0. 1. + 11875. 1. 4. 27.0 2.5 0.0 1. 20.0 9.0 4. 4. 0.0 0. 1. + 11877. 1. 4. 27.0 2.5 0.0 3. 17.0 11.5 4. 1. 0.0 0. 1. + 11880. 1. 4. 22.0 2.5 0.0 2. 14.0 9.0 3. 2. 0.0 0. 1. + 11882. 1. 4. 32.0 13.0 2.0 2. 17.0 40.0 4. 6. 0.0 0. 1. + 11885. 1. 5. 17.5 0.5 0.0 4. 12.0 11.5 4. 5. 0.0 0. 1. + 11889. 1. 3. 37.0 16.5 3.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 11893. 1. 4. 27.0 6.0 1.0 2. 14.0 9.0 3. 1. 0.0 0. 1. + 11894. 1. 4. 22.0 2.5 0.0 3. 14.0 6.5 3. 4. 0.0 0. 1. + 11907. 1. 4. 22.0 2.5 0.0 1. 14.0 14.0 3. 3. 0.0 0. 1. + 11910. 1. 3. 22.0 2.5 1.0 3. 14.0 14.0 3. 2. 0.0 0. 1. + 11921. 1. 4. 32.0 13.0 2.0 3. 12.0 11.5 5. 4. 0.0 0. 1. + 11926. 1. 5. 42.0 23.0 2.0 3. 12.0 20.0 2. 3. 0.0 0. 1. + 11930. 1. 5. 32.0 9.0 0.0 3. 16.0 14.0 5. 4. 0.0 0. 1. + 11931. 1. 5. 32.0 6.0 2.0 2. 17.0 20.0 6. 6. 0.0 0. 1. + 11941. 1. 5. 22.0 6.0 1.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 11947. 1. 3. 37.0 13.0 1.0 3. 20.0 20.0 4. 4. 0.0 0. 1. + 11951. 1. 3. 42.0 23.0 5.5 2. 14.0 20.0 3. 4. 0.0 0. 1. + 11953. 1. 4. 22.0 2.5 0.0 2. 14.0 20.0 3. 6. 0.0 0. 1. + 11955. 1. 4. 22.0 0.5 0.0 3. 14.0 6.5 1. 1. 0.0 0. 1. + 11957. 1. 4. 22.0 0.5 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 11958. 1. 5. 27.0 2.5 0.0 3. 14.0 9.0 4. 1. 0.0 0. 1. + 11969. 1. 5. 27.0 0.5 0.0 1. 14.0 20.0 2. 6. 0.0 0. 1. + 11970. 1. 4. 37.0 23.0 5.5 4. 14.0 11.5 4. 4. 0.0 0. 1. + 11973. 1. 4. 22.0 2.5 0.0 1. 14.0 9.0 4. 2. 0.0 0. 1. + 11977. 1. 4. 27.0 2.5 3.0 1. 16.0 20.0 3. 4. 0.0 0. 1. + 11978. 1. 4. 22.0 0.5 0.0 2. 14.0 14.0 2. 2. 0.0 0. 1. + 11981. 1. 3. 37.0 9.0 2.0 3. 16.0 11.5 4. 5. 0.0 0. 1. + 11990. 1. 5. 37.0 16.5 3.0 4. 14.0 14.0 4. 2. 0.0 0. 1. + 11991. 1. 3. 27.0 6.0 0.0 1. 17.0 20.0 2. 6. 0.0 0. 1. + 11996. 1. 3. 27.0 9.0 3.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 11997. 1. 4. 22.0 2.5 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 12020. 1. 5. 42.0 23.0 3.0 4. 16.0 20.0 4. 5. 0.0 0. 1. + 12021. 1. 5. 27.0 2.5 1.0 3. 16.0 20.0 5. 5. 0.0 0. 1. + 12030. 1. 5. 22.0 0.5 0.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 12037. 1. 5. 27.0 2.5 0.0 3. 16.0 6.5 3. 1. 0.0 0. 1. + 12046. 1. 4. 22.0 2.5 0.0 1. 14.0 11.5 5. 2. 0.0 0. 1. + 12049. 1. 4. 27.0 9.0 2.0 3. 14.0 14.0 5. 5. 0.0 0. 1. + 12052. 1. 5. 37.0 16.5 2.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 12054. 1. 4. 22.0 6.0 2.0 2. 12.0 11.5 3. 5. 0.0 0. 1. + 12057. 1. 4. 32.0 16.5 4.0 2. 16.0 20.0 5. 6. 0.0 0. 1. + 12058. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 6. 0.0 0. 1. + 12059. 1. 4. 32.0 2.5 0.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 12060. 1. 5. 37.0 23.0 5.5 4. 12.0 11.5 2. 5. 0.0 0. 1. + 12063. 1. 5. 22.0 0.5 0.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 12065. 1. 5. 27.0 6.0 1.0 1. 16.0 4.0 2. 1. 0.0 0. 1. + 12069. 1. 4. 22.0 2.5 2.0 2. 12.0 4.0 3. 2. 0.0 0. 1. + 12070. 1. 5. 22.0 2.5 0.0 2. 14.0 9.0 6. 4. 0.0 0. 1. + 12071. 1. 4. 32.0 13.0 2.0 4. 14.0 20.0 3. 6. 0.0 0. 1. + 12086. 1. 4. 27.0 9.0 2.0 2. 20.0 20.0 4. 5. 0.0 0. 1. + 12092. 1. 4. 22.0 2.5 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 12095. 1. 3. 22.0 2.5 1.0 2. 14.0 11.5 5. 5. 0.0 0. 1. + 12099. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 12100. 1. 3. 22.0 2.5 0.0 2. 16.0 14.0 3. 5. 0.0 0. 1. + 12106. 1. 5. 22.0 0.5 0.0 4. 14.0 11.5 5. 5. 0.0 0. 1. + 12109. 1. 5. 42.0 9.0 0.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 12115. 1. 4. 32.0 9.0 1.0 3. 17.0 20.0 5. 4. 0.0 0. 1. + 12116. 1. 5. 32.0 6.0 2.0 4. 17.0 40.0 2. 6. 0.0 0. 1. + 12125. 1. 5. 27.0 6.0 0.0 2. 20.0 20.0 4. 5. 0.0 0. 1. + 12126. 1. 5. 27.0 6.0 2.0 4. 16.0 9.0 4. 4. 0.0 0. 1. + 12127. 1. 5. 22.0 2.5 1.0 3. 12.0 9.0 4. 4. 0.0 0. 1. + 12134. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 4. 4. 0.0 0. 1. + 12139. 1. 4. 22.0 2.5 0.0 3. 16.0 11.5 4. 6. 0.0 0. 1. + 12143. 1. 4. 22.0 2.5 1.0 2. 14.0 6.5 3. 2. 0.0 0. 1. + 12150. 1. 5. 42.0 23.0 2.0 3. 14.0 40.0 3. 5. 0.0 0. 1. + 12153. 1. 5. 32.0 13.0 0.0 2. 16.0 40.0 3. 5. 0.0 0. 1. + 12157. 1. 5. 22.0 2.5 0.0 1. 12.0 6.5 3. 1. 0.0 0. 1. + 12159. 1. 5. 22.0 9.0 3.0 2. 14.0 20.0 5. 4. 0.0 0. 1. + 12171. 1. 5. 27.0 0.5 0.0 2. 16.0 20.0 3. 5. 0.0 0. 1. + 12176. 1. 3. 32.0 6.0 0.0 2. 9.0 11.5 2. 2. 0.0 0. 1. + 12179. 1. 5. 22.0 2.5 0.0 1. 17.0 4.0 1. 1. 0.0 0. 1. + 12182. 1. 4. 32.0 16.5 5.5 2. 16.0 20.0 4. 4. 0.0 0. 1. + 12183. 1. 4. 37.0 6.0 1.0 3. 20.0 40.0 6. 6. 0.0 0. 1. + 12189. 1. 5. 42.0 23.0 2.0 2. 17.0 20.0 3. 5. 0.0 0. 1. + 12191. 1. 5. 27.0 2.5 0.0 3. 17.0 20.0 5. 5. 0.0 0. 1. + 12194. 1. 5. 42.0 23.0 2.0 3. 14.0 40.0 5. 5. 0.0 0. 1. + 12199. 1. 5. 27.0 6.0 2.0 1. 14.0 20.0 5. 5. 0.0 0. 1. + 12200. 1. 5. 32.0 13.0 2.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 12204. 1. 5. 22.0 2.5 0.0 2. 16.0 11.5 4. 5. 0.0 0. 1. + 12207. 1. 5. 22.0 2.5 0.0 1. 14.0 20.0 3. 4. 0.0 0. 1. + 12215. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 12219. 1. 2. 32.0 13.0 4.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 12234. 1. 5. 37.0 16.5 4.0 4. 16.0 40.0 4. 2. 0.0 0. 1. + 12237. 1. 5. 37.0 16.5 5.5 4. 12.0 40.0 3. 6. 0.0 0. 1. + 12242. 1. 4. 22.0 6.0 2.0 1. 12.0 14.0 3. 4. 0.0 0. 1. + 12257. 1. 3. 37.0 9.0 0.0 4. 12.0 14.0 3. 3. 0.0 0. 1. + 12259. 1. 4. 27.0 6.0 1.0 1. 17.0 6.5 4. 4. 0.0 0. 1. + 12260. 1. 5. 22.0 2.5 1.0 2. 12.0 6.5 3. 3. 0.0 0. 1. + 12267. 1. 4. 22.0 2.5 1.0 3. 14.0 11.5 4. 4. 0.0 0. 1. + 12277. 1. 5. 32.0 13.0 2.0 3. 12.0 11.5 3. 5. 0.0 0. 1. + 12281. 1. 5. 27.0 2.5 0.0 3. 17.0 11.5 4. 2. 0.0 0. 1. + 12287. 1. 4. 27.0 6.0 3.0 4. 14.0 40.0 4. 2. 0.0 0. 1. + 12292. 1. 3. 22.0 6.0 1.0 1. 12.0 20.0 3. 6. 0.0 0. 1. + 12293. 1. 4. 22.0 2.5 0.0 4. 17.0 20.0 4. 4. 0.0 0. 1. + 12302. 1. 5. 27.0 9.0 0.0 4. 20.0 40.0 4. 6. 0.0 0. 1. + 12305. 1. 3. 42.0 23.0 4.0 4. 14.0 20.0 5. 4. 0.0 0. 1. + 12306. 1. 4. 32.0 16.5 4.0 3. 14.0 14.0 3. 3. 0.0 0. 1. + 12310. 1. 5. 22.0 2.5 0.0 4. 16.0 14.0 3. 3. 0.0 0. 1. + 12311. 1. 5. 27.0 0.5 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 12313. 1. 5. 37.0 23.0 3.0 2. 14.0 40.0 4. 5. 0.0 0. 1. + 12314. 1. 5. 27.0 2.5 0.0 1. 12.0 14.0 3. 4. 0.0 0. 1. + 12320. 1. 5. 22.0 2.5 1.0 4. 12.0 6.5 3. 2. 0.0 0. 1. + 12323. 1. 5. 22.0 2.5 2.0 1. 16.0 9.0 3. 6. 0.0 0. 1. + 12333. 1. 5. 27.0 2.5 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 12340. 1. 4. 27.0 6.0 1.0 2. 17.0 20.0 4. 5. 0.0 0. 1. + 12342. 1. 2. 27.0 2.5 1.0 3. 12.0 6.5 4. 5. 0.0 0. 1. + 12344. 1. 4. 37.0 16.5 3.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 12348. 1. 4. 32.0 16.5 2.0 3. 16.0 40.0 4. 4. 0.0 0. 1. + 12352. 1. 4. 27.0 6.0 0.0 1. 20.0 9.0 4. 1. 0.0 0. 1. + 12354. 1. 5. 27.0 9.0 3.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 12359. 1. 4. 27.0 2.5 0.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 12365. 1. 3. 22.0 6.0 1.0 2. 16.0 9.0 1. 3. 0.0 0. 1. + 12367. 1. 2. 27.0 9.0 2.0 3. 14.0 14.0 3. 2. 0.0 0. 1. + 12378. 1. 5. 27.0 9.0 3.0 3. 14.0 6.5 3. 4. 0.0 0. 1. + 12386. 1. 5. 22.0 0.5 0.0 3. 14.0 4.0 3. 1. 0.0 0. 1. + 12392. 1. 4. 27.0 9.0 2.0 3. 12.0 9.0 2. 4. 0.0 0. 1. + 12394. 1. 5. 32.0 13.0 2.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 12396. 1. 5. 27.0 0.5 0.0 2. 16.0 14.0 5. 4. 0.0 0. 1. + 12404. 1. 4. 42.0 23.0 5.5 3. 12.0 11.5 5. 4. 0.0 0. 1. + 12410. 1. 4. 22.0 2.5 0.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 12416. 1. 5. 22.0 0.5 0.0 3. 12.0 9.0 3. 4. 0.0 0. 1. + 12420. 1. 4. 22.0 6.0 1.0 2. 14.0 40.0 4. 3. 0.0 0. 1. + 12425. 1. 3. 27.0 13.0 2.0 2. 12.0 4.0 2. 4. 0.0 0. 1. + 12430. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 5. 4. 0.0 0. 1. + 12431. 1. 5. 22.0 2.5 0.0 2. 14.0 9.0 3. 5. 0.0 0. 1. + 12434. 1. 5. 27.0 2.5 0.0 1. 16.0 11.5 2. 2. 0.0 0. 1. + 12441. 1. 3. 32.0 13.0 2.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 12445. 1. 5. 22.0 0.5 0.0 2. 16.0 14.0 3. 4. 0.0 0. 1. + 12446. 1. 3. 42.0 23.0 5.5 3. 17.0 11.5 5. 2. 0.0 0. 1. + 12447. 1. 2. 22.0 2.5 2.0 3. 12.0 9.0 2. 2. 0.0 0. 1. + 12448. 1. 4. 37.0 16.5 1.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 12449. 1. 4. 27.0 2.5 0.0 1. 20.0 40.0 6. 6. 0.0 0. 1. + 12459. 1. 5. 22.0 2.5 0.0 3. 12.0 11.5 2. 5. 0.0 0. 1. + 12464. 1. 4. 22.0 2.5 0.0 3. 14.0 4.0 3. 1. 0.0 0. 1. + 12465. 1. 5. 42.0 23.0 4.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 12467. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 4. 6. 0.0 0. 1. + 12470. 1. 5. 32.0 16.5 3.0 3. 12.0 11.5 2. 5. 0.0 0. 1. + 12472. 1. 5. 22.0 2.5 0.0 2. 17.0 20.0 4. 2. 0.0 0. 1. + 12476. 1. 5. 37.0 23.0 5.5 4. 12.0 14.0 5. 3. 0.0 0. 1. + 12480. 1. 5. 37.0 16.5 3.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 12495. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 2. 2. 0.0 0. 1. + 12500. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 12501. 1. 2. 22.0 2.5 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 12503. 1. 3. 37.0 16.5 2.0 3. 14.0 14.0 5. 4. 0.0 0. 1. + 12505. 1. 3. 37.0 16.5 2.0 3. 14.0 6.5 3. 3. 0.0 0. 1. + 12510. 1. 3. 32.0 13.0 2.0 4. 16.0 14.0 3. 3. 0.0 0. 1. + 12517. 1. 5. 32.0 13.0 0.0 1. 14.0 14.0 4. 4. 0.0 0. 1. + 12522. 1. 4. 32.0 9.0 3.0 3. 14.0 9.0 1. 4. 0.0 0. 1. + 12527. 1. 5. 32.0 13.0 2.0 2. 17.0 20.0 4. 5. 0.0 0. 1. + 12528. 1. 4. 27.0 2.5 0.0 1. 14.0 11.5 2. 2. 0.0 0. 1. + 12531. 1. 3. 27.0 13.0 0.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 12533. 1. 2. 37.0 9.0 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 12537. 1. 4. 42.0 9.0 0.0 1. 14.0 9.0 3. 2. 0.0 0. 1. + 12543. 1. 5. 22.0 0.5 0.0 3. 14.0 6.5 4. 5. 0.0 0. 1. + 12547. 1. 5. 42.0 23.0 2.0 3. 12.0 20.0 3. 6. 0.0 0. 1. + 12550. 1. 5. 27.0 2.5 0.0 3. 16.0 40.0 5. 5. 0.0 0. 1. + 12552. 1. 5. 42.0 23.0 4.0 3. 14.0 40.0 3. 5. 0.0 0. 1. + 12554. 1. 3. 42.0 23.0 4.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 12555. 1. 4. 27.0 6.0 1.0 3. 14.0 14.0 3. 6. 0.0 0. 1. + 12556. 1. 5. 22.0 2.5 0.0 1. 14.0 11.5 3. 4. 0.0 0. 1. + 12560. 1. 4. 22.0 0.5 0.0 4. 16.0 9.0 5. 1. 0.0 0. 1. + 12561. 1. 5. 27.0 6.0 1.0 3. 20.0 9.0 4. 4. 0.0 0. 1. + 12562. 1. 5. 22.0 2.5 0.0 3. 14.0 11.5 5. 1. 0.0 0. 1. + 12564. 1. 3. 27.0 9.0 2.0 3. 14.0 4.0 2. 1. 0.0 0. 1. + 12565. 1. 5. 27.0 6.0 0.0 4. 14.0 20.0 3. 3. 0.0 0. 1. + 12568. 1. 5. 32.0 6.0 1.0 3. 20.0 11.5 2. 5. 0.0 0. 1. + 12573. 1. 4. 22.0 2.5 1.0 2. 12.0 9.0 2. 2. 0.0 0. 1. + 12575. 1. 5. 27.0 6.0 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 12576. 1. 4. 32.0 9.0 2.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 12578. 1. 5. 32.0 13.0 0.0 1. 16.0 40.0 4. 5. 0.0 0. 1. + 12584. 1. 4. 32.0 13.0 3.0 2. 12.0 20.0 2. 5. 0.0 0. 1. + 12585. 1. 3. 32.0 2.5 0.0 2. 14.0 20.0 5. 3. 0.0 0. 1. + 12589. 1. 5. 22.0 2.5 1.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 12592. 1. 5. 32.0 13.0 2.0 2. 14.0 20.0 3. 3. 0.0 0. 1. + 12601. 1. 4. 27.0 6.0 0.0 2. 14.0 40.0 3. 3. 0.0 0. 1. + 12613. 1. 4. 22.0 2.5 0.0 3. 16.0 20.0 4. 6. 0.0 0. 1. + 12614. 1. 3. 32.0 2.5 0.0 1. 17.0 20.0 5. 6. 0.0 0. 1. + 12616. 1. 5. 32.0 6.0 0.0 2. 17.0 40.0 4. 5. 0.0 0. 1. + 12622. 1. 4. 42.0 13.0 0.0 2. 14.0 11.5 2. 2. 0.0 0. 1. + 12624. 1. 4. 22.0 6.0 2.0 4. 12.0 9.0 4. 4. 0.0 0. 1. + 12625. 1. 3. 17.5 0.5 0.0 2. 14.0 9.0 3. 2. 0.0 0. 1. + 12626. 1. 3. 42.0 23.0 5.5 3. 14.0 14.0 2. 4. 0.0 0. 1. + 12628. 1. 5. 32.0 16.5 2.0 2. 14.0 20.0 5. 5. 0.0 0. 1. + 12631. 1. 5. 22.0 0.5 0.0 1. 12.0 6.5 2. 4. 0.0 0. 1. + 12634. 1. 5. 22.0 6.0 2.0 3. 12.0 14.0 2. 4. 0.0 0. 1. + 12642. 1. 5. 27.0 2.5 0.0 2. 20.0 11.5 4. 6. 0.0 0. 1. + 12644. 1. 4. 22.0 2.5 0.0 1. 16.0 14.0 5. 6. 0.0 0. 1. + 12645. 1. 4. 27.0 9.0 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 12648. 1. 4. 32.0 9.0 1.0 2. 14.0 20.0 3. 2. 0.0 0. 1. + 12650. 1. 5. 22.0 2.5 0.0 1. 14.0 9.0 3. 1. 0.0 0. 1. + 12652. 1. 4. 32.0 16.5 3.0 4. 16.0 20.0 4. 6. 0.0 0. 1. + 12658. 1. 4. 42.0 16.5 4.0 4. 14.0 14.0 3. 4. 0.0 0. 1. + 12659. 1. 4. 22.0 0.5 0.0 1. 12.0 14.0 2. 2. 0.0 0. 1. + 12664. 1. 5. 32.0 13.0 3.0 4. 14.0 20.0 3. 4. 0.0 0. 1. + 12674. 1. 5. 32.0 13.0 3.0 2. 14.0 11.5 2. 3. 0.0 0. 1. + 12676. 1. 3. 42.0 23.0 3.0 4. 12.0 14.0 3. 2. 0.0 0. 1. + 12678. 1. 5. 22.0 2.5 0.0 2. 14.0 6.5 3. 1. 0.0 0. 1. + 12687. 1. 5. 27.0 9.0 2.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 12692. 1. 5. 27.0 2.5 0.0 3. 20.0 6.5 4. 6. 0.0 0. 1. + 12693. 1. 5. 17.5 2.5 0.0 4. 14.0 9.0 2. 2. 0.0 0. 1. + 12695. 1. 5. 27.0 6.0 1.0 1. 14.0 20.0 3. 4. 0.0 0. 1. + 12697. 1. 5. 22.0 2.5 0.0 3. 16.0 9.0 2. 2. 0.0 0. 1. + 12703. 1. 4. 22.0 2.5 0.0 2. 14.0 11.5 3. 1. 0.0 0. 1. + 12706. 1. 4. 37.0 16.5 3.0 3. 12.0 20.0 4. 4. 0.0 0. 1. + 12726. 1. 3. 42.0 23.0 5.5 4. 12.0 11.5 2. 4. 0.0 0. 1. + 12727. 1. 5. 22.0 2.5 0.0 1. 14.0 20.0 2. 2. 0.0 0. 1. + 12730. 1. 4. 32.0 2.5 0.0 2. 14.0 20.0 4. 3. 0.0 0. 1. + 12731. 1. 3. 32.0 13.0 1.0 1. 14.0 14.0 2. 2. 0.0 0. 1. + 12739. 1. 5. 27.0 6.0 1.0 1. 16.0 20.0 4. 2. 0.0 0. 1. + 12740. 1. 4. 27.0 6.0 2.0 3. 17.0 20.0 6. 5. 0.0 0. 1. + 12742. 1. 5. 37.0 13.0 2.0 3. 20.0 40.0 4. 6. 0.0 0. 1. + 12744. 1. 5. 22.0 0.5 0.0 3. 16.0 11.5 3. 6. 0.0 0. 1. + 12747. 1. 4. 22.0 2.5 0.0 2. 16.0 14.0 5. 4. 0.0 0. 1. + 12752. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 3. 2. 0.0 0. 1. + 12763. 1. 5. 27.0 6.0 0.0 2. 14.0 20.0 3. 3. 0.0 0. 1. + 12771. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 2. 4. 0.0 0. 1. + 12774. 1. 5. 27.0 6.0 2.0 2. 12.0 14.0 2. 2. 0.0 0. 1. + 12804. 1. 4. 42.0 23.0 4.0 1. 14.0 40.0 4. 4. 0.0 0. 1. + 12813. 1. 5. 27.0 6.0 0.0 1. 14.0 40.0 3. 5. 0.0 0. 1. + 12816. 1. 3. 37.0 16.5 5.5 3. 14.0 20.0 3. 2. 0.0 0. 1. + 12822. 1. 5. 32.0 16.5 2.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 12825. 1. 4. 22.0 0.5 0.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 12827. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 12828. 1. 4. 32.0 9.0 2.0 2. 16.0 40.0 4. 4. 0.0 0. 1. + 12830. 1. 4. 27.0 2.5 0.0 3. 17.0 11.5 4. 4. 0.0 0. 1. + 12832. 1. 5. 27.0 6.0 2.0 4. 14.0 20.0 3. 4. 0.0 0. 1. + 12833. 1. 3. 32.0 13.0 1.0 1. 14.0 11.5 3. 6. 0.0 0. 1. + 12834. 1. 5. 32.0 13.0 3.0 4. 14.0 20.0 5. 5. 0.0 0. 1. + 12840. 1. 5. 37.0 2.5 0.0 2. 12.0 9.0 2. 4. 0.0 0. 1. + 12846. 1. 5. 42.0 23.0 2.0 1. 12.0 40.0 5. 2. 0.0 0. 1. + 12862. 1. 4. 32.0 9.0 3.0 3. 14.0 11.5 5. 5. 0.0 0. 1. + 12867. 1. 5. 37.0 13.0 0.0 1. 16.0 20.0 3. 5. 0.0 0. 1. + 12869. 1. 4. 27.0 6.0 1.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 12873. 1. 4. 32.0 2.5 0.0 3. 16.0 20.0 2. 5. 0.0 0. 1. + 12877. 1. 3. 42.0 23.0 3.0 2. 12.0 14.0 2. 2. 0.0 0. 1. + 12881. 1. 4. 37.0 16.5 2.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 12884. 1. 5. 37.0 16.5 1.0 4. 17.0 20.0 4. 4. 0.0 0. 1. + 12894. 1. 4. 27.0 2.5 0.0 1. 16.0 11.5 4. 5. 0.0 0. 1. + 12897. 1. 4. 37.0 16.5 2.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 12900. 1. 4. 22.0 2.5 0.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 12910. 1. 3. 32.0 6.0 2.0 3. 20.0 14.0 4. 2. 0.0 0. 1. + 12914. 1. 5. 42.0 23.0 2.0 1. 12.0 20.0 3. 2. 0.0 0. 1. + 12918. 1. 5. 37.0 16.5 3.0 3. 14.0 20.0 3. 6. 0.0 0. 1. + 12920. 1. 3. 37.0 16.5 3.0 2. 12.0 14.0 2. 3. 0.0 0. 1. + 12924. 1. 5. 32.0 16.5 4.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 12925. 1. 4. 27.0 9.0 2.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 12927. 1. 5. 32.0 16.5 1.0 1. 14.0 14.0 2. 2. 0.0 0. 1. + 12931. 1. 4. 27.0 6.0 0.0 2. 16.0 40.0 5. 5. 0.0 0. 1. + 12934. 1. 5. 22.0 2.5 0.0 2. 14.0 9.0 4. 2. 0.0 0. 1. + 12940. 1. 3. 32.0 13.0 2.0 2. 14.0 20.0 3. 2. 0.0 0. 1. + 12942. 1. 5. 42.0 23.0 1.0 3. 14.0 40.0 3. 5. 0.0 0. 1. + 12943. 1. 5. 22.0 0.5 0.0 2. 14.0 14.0 2. 5. 0.0 0. 1. + 12955. 1. 5. 32.0 2.5 0.0 2. 14.0 14.0 5. 2. 0.0 0. 1. + 12960. 1. 5. 42.0 23.0 2.0 4. 14.0 20.0 3. 5. 0.0 0. 1. + 12965. 1. 3. 37.0 23.0 3.0 3. 12.0 20.0 5. 5. 0.0 0. 1. + 12983. 1. 5. 27.0 2.5 0.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 12988. 1. 5. 27.0 2.5 0.0 1. 17.0 20.0 4. 6. 0.0 0. 1. + 13001. 1. 5. 32.0 13.0 0.0 2. 20.0 40.0 5. 4. 0.0 0. 1. + 13005. 1. 3. 42.0 23.0 4.0 2. 14.0 20.0 6. 6. 0.0 0. 1. + 13009. 1. 3. 22.0 2.5 0.0 3. 14.0 11.5 4. 4. 0.0 0. 1. + 13013. 1. 5. 27.0 6.0 1.0 2. 17.0 20.0 4. 4. 0.0 0. 1. + 13019. 1. 4. 27.0 9.0 3.0 1. 12.0 11.5 2. 2. 0.0 0. 1. + 13021. 1. 5. 27.0 9.0 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 13022. 1. 5. 42.0 23.0 2.0 4. 12.0 20.0 2. 2. 0.0 0. 1. + 13026. 1. 5. 42.0 23.0 2.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 13033. 1. 4. 22.0 2.5 1.0 2. 14.0 9.0 3. 4. 0.0 0. 1. + 13037. 1. 3. 42.0 23.0 2.0 2. 20.0 40.0 4. 4. 0.0 0. 1. + 13039. 1. 4. 22.0 0.5 0.0 1. 14.0 20.0 3. 3. 0.0 0. 1. + 13042. 1. 5. 37.0 16.5 2.0 1. 16.0 40.0 4. 6. 0.0 0. 1. + 13044. 1. 5. 22.0 6.0 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 13046. 1. 5. 37.0 9.0 1.0 2. 14.0 40.0 3. 5. 0.0 0. 1. + 13052. 1. 3. 22.0 6.0 1.0 2. 14.0 20.0 4. 5. 0.0 0. 1. + 13056. 1. 5. 27.0 2.5 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 13057. 1. 5. 27.0 6.0 2.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 13058. 1. 4. 17.5 2.5 1.0 2. 12.0 9.0 2. 2. 0.0 0. 1. + 13060. 1. 5. 42.0 23.0 3.0 3. 12.0 40.0 3. 5. 0.0 0. 1. + 13064. 1. 5. 27.0 2.5 1.0 3. 17.0 14.0 4. 4. 0.0 0. 1. + 13068. 1. 3. 22.0 2.5 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 13076. 1. 5. 27.0 2.5 2.0 2. 14.0 9.0 3. 4. 0.0 0. 1. + 13079. 1. 4. 27.0 2.5 1.0 2. 16.0 40.0 4. 6. 0.0 0. 1. + 13080. 1. 5. 27.0 2.5 1.0 1. 14.0 11.5 2. 2. 0.0 0. 1. + 13090. 1. 5. 27.0 2.5 0.0 1. 16.0 40.0 4. 4. 0.0 0. 1. + 13092. 1. 5. 27.0 2.5 0.0 4. 14.0 20.0 5. 5. 0.0 0. 1. + 13097. 1. 5. 32.0 9.0 2.0 3. 16.0 14.0 4. 2. 0.0 0. 1. + 13099. 1. 5. 42.0 23.0 1.0 3. 14.0 20.0 2. 5. 0.0 0. 1. + 13100. 1. 4. 32.0 9.0 2.0 1. 17.0 20.0 4. 4. 0.0 0. 1. + 13103. 1. 4. 22.0 2.5 0.0 3. 14.0 11.5 3. 1. 0.0 0. 1. + 13105. 1. 4. 27.0 6.0 1.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 13107. 1. 5. 22.0 2.5 0.0 1. 14.0 11.5 4. 2. 0.0 0. 1. + 13112. 1. 5. 22.0 2.5 0.0 1. 12.0 20.0 3. 5. 0.0 0. 1. + 13119. 1. 4. 27.0 2.5 1.0 2. 14.0 9.0 5. 5. 0.0 0. 1. + 13120. 1. 4. 22.0 2.5 0.0 1. 14.0 20.0 3. 4. 0.0 0. 1. + 13125. 1. 4. 27.0 6.0 0.0 3. 20.0 40.0 6. 6. 0.0 0. 1. + 13129. 1. 5. 27.0 2.5 0.0 2. 14.0 40.0 5. 4. 0.0 0. 1. + 13132. 1. 5. 32.0 16.5 2.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 13134. 1. 5. 32.0 13.0 0.0 1. 16.0 40.0 4. 6. 0.0 0. 1. + 13136. 1. 4. 27.0 9.0 0.0 4. 14.0 9.0 3. 4. 0.0 0. 1. + 13140. 1. 5. 37.0 16.5 2.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 13142. 1. 5. 32.0 16.5 4.0 2. 16.0 40.0 4. 5. 0.0 0. 1. + 13145. 1. 5. 27.0 6.0 0.0 2. 16.0 20.0 3. 5. 0.0 0. 1. + 13150. 1. 5. 27.0 6.0 2.0 1. 16.0 14.0 3. 5. 0.0 0. 1. + 13151. 1. 5. 22.0 2.5 1.0 4. 14.0 14.0 2. 4. 0.0 0. 1. + 13168. 1. 3. 32.0 2.5 1.0 2. 14.0 20.0 3. 3. 0.0 0. 1. + 13172. 1. 5. 22.0 6.0 0.0 2. 12.0 6.5 2. 2. 0.0 0. 1. + 13174. 1. 5. 42.0 23.0 2.0 2. 12.0 20.0 4. 4. 0.0 0. 1. + 13176. 1. 5. 22.0 2.5 0.0 3. 16.0 11.5 3. 2. 0.0 0. 1. + 13182. 1. 4. 37.0 9.0 2.0 3. 20.0 20.0 4. 2. 0.0 0. 1. + 13189. 1. 5. 32.0 13.0 2.0 1. 16.0 20.0 4. 5. 0.0 0. 1. + 13191. 1. 5. 42.0 23.0 1.0 4. 20.0 14.0 4. 4. 0.0 0. 1. + 13192. 1. 5. 27.0 6.0 0.0 3. 14.0 14.0 4. 5. 0.0 0. 1. + 13202. 1. 3. 42.0 23.0 2.0 2. 17.0 20.0 3. 4. 0.0 0. 1. + 13204. 1. 4. 22.0 2.5 1.0 1. 14.0 11.5 3. 4. 0.0 0. 1. + 13208. 1. 4. 37.0 16.5 3.0 2. 14.0 9.0 3. 3. 0.0 0. 1. + 13211. 1. 4. 22.0 2.5 0.0 2. 14.0 14.0 3. 3. 0.0 0. 1. + 13216. 1. 3. 27.0 6.0 0.0 1. 16.0 40.0 5. 5. 0.0 0. 1. + 13217. 1. 4. 27.0 9.0 2.0 3. 17.0 40.0 6. 6. 0.0 0. 1. + 13219. 1. 4. 37.0 16.5 2.0 4. 14.0 40.0 5. 5. 0.0 0. 1. + 13221. 1. 5. 27.0 2.5 0.0 4. 16.0 14.0 4. 6. 0.0 0. 1. + 13222. 1. 5. 42.0 23.0 2.0 3. 12.0 20.0 2. 4. 0.0 0. 1. + 13224. 1. 4. 32.0 13.0 1.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 13226. 1. 5. 42.0 23.0 5.5 3. 12.0 20.0 3. 5. 0.0 0. 1. + 13227. 1. 5. 22.0 0.5 0.0 3. 16.0 14.0 3. 2. 0.0 0. 1. + 13229. 1. 5. 27.0 2.5 1.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 13232. 1. 3. 27.0 9.0 1.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 13233. 1. 5. 42.0 13.0 5.5 2. 12.0 14.0 3. 5. 0.0 0. 1. + 13238. 1. 4. 27.0 6.0 1.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 13244. 1. 5. 22.0 2.5 0.0 3. 14.0 11.5 3. 2. 0.0 0. 1. + 13250. 1. 4. 32.0 13.0 2.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 13255. 1. 4. 42.0 23.0 2.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 13261. 1. 4. 37.0 23.0 5.5 4. 12.0 20.0 3. 5. 0.0 0. 1. + 13268. 1. 3. 22.0 2.5 0.0 2. 14.0 6.5 4. 2. 0.0 0. 1. + 13269. 1. 5. 27.0 6.0 2.0 1. 20.0 20.0 5. 5. 0.0 0. 1. + 13285. 1. 4. 27.0 2.5 2.0 2. 16.0 40.0 4. 6. 0.0 0. 1. + 13292. 1. 4. 22.0 0.5 0.0 1. 16.0 20.0 4. 2. 0.0 0. 1. + 13302. 1. 2. 32.0 16.5 4.0 2. 14.0 14.0 4. 2. 0.0 0. 1. + 13303. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 13308. 1. 5. 22.0 2.5 0.0 4. 16.0 6.5 2. 4. 0.0 0. 1. + 13313. 1. 2. 27.0 2.5 2.0 4. 12.0 11.5 2. 4. 0.0 0. 1. + 13321. 1. 4. 27.0 2.5 1.0 2. 14.0 11.5 5. 2. 0.0 0. 1. + 13325. 1. 5. 22.0 2.5 0.0 3. 16.0 14.0 3. 4. 0.0 0. 1. + 13331. 1. 5. 27.0 16.5 3.0 2. 14.0 11.5 2. 4. 0.0 0. 1. + 13336. 1. 4. 22.0 2.5 0.0 4. 16.0 20.0 3. 3. 0.0 0. 1. + 13338. 1. 5. 42.0 23.0 5.5 4. 14.0 14.0 3. 5. 0.0 0. 1. + 13341. 1. 3. 27.0 6.0 3.0 3. 14.0 14.0 4. 2. 0.0 0. 1. + 13351. 1. 5. 27.0 2.5 2.0 1. 14.0 40.0 4. 6. 0.0 0. 1. + 13366. 1. 5. 27.0 6.0 1.0 3. 14.0 20.0 5. 5. 0.0 0. 1. + 13371. 1. 4. 27.0 16.5 2.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 13374. 1. 2. 27.0 2.5 1.0 2. 14.0 11.5 3. 3. 0.0 0. 1. + 13375. 1. 2. 32.0 13.0 2.0 1. 12.0 14.0 2. 2. 0.0 0. 1. + 13385. 1. 5. 37.0 16.5 5.5 2. 12.0 20.0 3. 5. 0.0 0. 1. + 13386. 1. 5. 42.0 23.0 3.0 3. 12.0 6.5 2. 2. 0.0 0. 1. + 13397. 1. 4. 42.0 23.0 2.0 2. 14.0 20.0 3. 3. 0.0 0. 1. + 13401. 1. 5. 22.0 2.5 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 13417. 1. 5. 27.0 13.0 2.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 13424. 1. 5. 32.0 6.0 2.0 4. 20.0 20.0 6. 6. 0.0 0. 1. + 13427. 1. 4. 42.0 23.0 4.0 4. 14.0 14.0 4. 4. 0.0 0. 1. + 13434. 1. 5. 37.0 16.5 2.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 13435. 1. 4. 22.0 2.5 0.0 1. 12.0 20.0 3. 3. 0.0 0. 1. + 13446. 1. 4. 22.0 2.5 0.0 4. 14.0 20.0 3. 5. 0.0 0. 1. + 13448. 1. 3. 22.0 6.0 1.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 13453. 1. 4. 27.0 6.0 2.0 3. 14.0 11.5 3. 3. 0.0 0. 1. + 13454. 1. 4. 37.0 16.5 3.0 3. 14.0 11.5 4. 3. 0.0 0. 1. + 13458. 1. 2. 42.0 13.0 0.0 2. 12.0 6.5 3. 4. 0.0 0. 1. + 13460. 1. 5. 27.0 2.5 0.0 3. 14.0 11.5 3. 3. 0.0 0. 1. + 13468. 1. 4. 27.0 6.0 1.0 3. 14.0 9.0 3. 4. 0.0 0. 1. + 13474. 1. 4. 27.0 9.0 2.0 2. 12.0 11.5 3. 5. 0.0 0. 1. + 13475. 1. 5. 22.0 2.5 0.0 1. 16.0 11.5 6. 4. 0.0 0. 1. + 13479. 1. 4. 42.0 23.0 3.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 13488. 1. 4. 32.0 9.0 3.0 2. 16.0 20.0 3. 5. 0.0 0. 1. + 13489. 1. 4. 22.0 2.5 0.0 2. 14.0 20.0 3. 2. 0.0 0. 1. + 13490. 1. 4. 27.0 6.0 2.0 4. 17.0 6.5 4. 2. 0.0 0. 1. + 13502. 1. 5. 27.0 2.5 0.0 3. 20.0 40.0 5. 6. 0.0 0. 1. + 13503. 1. 5. 27.0 6.0 0.0 4. 14.0 9.0 3. 4. 0.0 0. 1. + 13506. 1. 5. 37.0 16.5 2.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 13508. 1. 4. 37.0 16.5 2.0 2. 14.0 14.0 4. 4. 0.0 0. 1. + 13519. 1. 4. 27.0 2.5 0.0 1. 17.0 6.5 4. 1. 0.0 0. 1. + 13528. 1. 4. 27.0 13.0 2.0 2. 12.0 6.5 3. 4. 0.0 0. 1. + 13530. 1. 3. 22.0 2.5 0.0 1. 12.0 20.0 3. 4. 0.0 0. 1. + 13538. 1. 3. 37.0 16.5 2.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 13540. 1. 3. 22.0 2.5 0.0 1. 14.0 6.5 3. 1. 0.0 0. 1. + 13541. 1. 4. 27.0 2.5 1.0 1. 17.0 9.0 4. 4. 0.0 0. 1. + 13546. 1. 5. 32.0 13.0 2.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 13555. 1. 5. 42.0 13.0 0.0 3. 12.0 20.0 5. 2. 0.0 0. 1. + 13556. 1. 4. 42.0 23.0 2.0 2. 12.0 11.5 4. 4. 0.0 0. 1. + 13557. 1. 4. 27.0 9.0 2.0 2. 14.0 14.0 2. 3. 0.0 0. 1. + 13561. 1. 5. 22.0 2.5 0.0 1. 14.0 6.5 3. 1. 0.0 0. 1. + 13562. 1. 5. 27.0 6.0 2.0 3. 16.0 20.0 5. 4. 0.0 0. 1. + 13569. 1. 3. 22.0 2.5 1.0 4. 14.0 11.5 2. 2. 0.0 0. 1. + 13571. 1. 4. 32.0 16.5 3.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 13577. 1. 5. 27.0 2.5 1.0 3. 17.0 9.0 1. 6. 0.0 0. 1. + 13581. 1. 4. 27.0 6.0 0.0 2. 17.0 11.5 4. 4. 0.0 0. 1. + 13583. 1. 5. 42.0 23.0 3.0 3. 14.0 40.0 3. 5. 0.0 0. 1. + 13587. 1. 5. 27.0 2.5 0.0 1. 20.0 20.0 4. 5. 0.0 0. 1. + 13588. 1. 4. 37.0 16.5 4.0 2. 14.0 11.5 1. 4. 0.0 0. 1. + 13594. 1. 5. 17.5 0.5 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 13599. 1. 5. 42.0 23.0 3.0 1. 20.0 40.0 4. 6. 0.0 0. 1. + 13600. 1. 5. 32.0 13.0 2.0 4. 14.0 11.5 3. 5. 0.0 0. 1. + 13627. 1. 4. 37.0 16.5 4.0 2. 14.0 20.0 2. 4. 0.0 0. 1. + 13630. 1. 5. 32.0 16.5 2.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 13634. 1. 5. 32.0 9.0 2.0 2. 12.0 14.0 4. 2. 0.0 0. 1. + 13636. 1. 5. 42.0 23.0 5.5 3. 12.0 20.0 5. 4. 0.0 0. 1. + 13645. 1. 5. 42.0 23.0 5.5 1. 12.0 20.0 3. 5. 0.0 0. 1. + 13651. 1. 5. 27.0 6.0 0.0 1. 12.0 20.0 3. 4. 0.0 0. 1. + 13654. 1. 4. 27.0 6.0 0.0 2. 14.0 40.0 2. 2. 0.0 0. 1. + 13657. 1. 4. 22.0 6.0 2.0 2. 12.0 9.0 2. 4. 0.0 0. 1. + 13662. 1. 5. 22.0 0.5 0.0 3. 12.0 6.5 2. 2. 0.0 0. 1. + 13663. 1. 3. 32.0 6.0 0.0 1. 20.0 14.0 4. 2. 0.0 0. 1. + 13667. 1. 5. 37.0 16.5 3.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 13669. 1. 5. 42.0 23.0 1.0 3. 16.0 20.0 5. 5. 0.0 0. 1. + 13674. 1. 5. 27.0 0.5 0.0 3. 20.0 40.0 4. 4. 0.0 0. 1. + 13675. 1. 4. 27.0 9.0 2.0 1. 12.0 20.0 4. 5. 0.0 0. 1. + 13680. 1. 5. 42.0 23.0 5.5 2. 14.0 40.0 4. 4. 0.0 0. 1. + 13682. 1. 4. 42.0 23.0 3.0 2. 14.0 11.5 3. 3. 0.0 0. 1. + 13683. 1. 4. 37.0 16.5 4.0 3. 14.0 20.0 2. 4. 0.0 0. 1. + 13695. 1. 4. 27.0 9.0 1.0 4. 12.0 20.0 4. 5. 0.0 0. 1. + 13697. 1. 4. 22.0 2.5 0.0 2. 12.0 20.0 3. 3. 0.0 0. 1. + 13698. 1. 5. 32.0 9.0 2.0 2. 16.0 6.5 3. 2. 0.0 0. 1. + 13705. 1. 4. 22.0 2.5 0.0 1. 14.0 40.0 2. 2. 0.0 0. 1. + 13707. 1. 4. 32.0 6.0 1.0 4. 17.0 20.0 4. 6. 0.0 0. 1. + 13708. 1. 5. 22.0 6.0 1.0 2. 12.0 20.0 2. 4. 0.0 0. 1. + 13712. 1. 5. 32.0 13.0 1.0 3. 16.0 20.0 5. 6. 0.0 0. 1. + 13717. 1. 5. 27.0 9.0 0.0 4. 14.0 20.0 3. 5. 0.0 0. 1. + 13718. 1. 5. 27.0 13.0 2.0 3. 17.0 11.5 4. 4. 0.0 0. 1. + 13729. 1. 4. 27.0 6.0 0.0 3. 14.0 20.0 3. 6. 0.0 0. 1. + 13734. 1. 4. 32.0 9.0 2.0 4. 16.0 40.0 4. 5. 0.0 0. 1. + 13736. 1. 4. 37.0 23.0 5.5 2. 14.0 20.0 4. 4. 0.0 0. 1. + 13749. 1. 2. 22.0 6.0 0.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 13750. 1. 4. 22.0 2.5 0.0 3. 16.0 20.0 4. 3. 0.0 0. 1. + 13757. 1. 3. 27.0 9.0 3.0 4. 14.0 20.0 2. 2. 0.0 0. 1. + 13761. 1. 5. 37.0 16.5 3.0 3. 14.0 20.0 3. 3. 0.0 0. 1. + 13763. 1. 3. 37.0 23.0 4.0 2. 14.0 20.0 5. 4. 0.0 0. 1. + 13764. 1. 1. 42.0 13.0 2.0 1. 14.0 20.0 5. 5. 0.0 0. 1. + 13766. 1. 5. 17.5 0.5 0.0 4. 12.0 11.5 1. 4. 0.0 0. 1. + 13768. 1. 4. 32.0 23.0 3.0 2. 9.0 40.0 2. 6. 0.0 0. 1. + 13769. 1. 5. 37.0 13.0 2.0 2. 16.0 11.5 5. 2. 0.0 0. 1. + 13770. 1. 5. 22.0 2.5 0.0 3. 17.0 20.0 5. 5. 0.0 0. 1. + 13772. 1. 5. 22.0 2.5 1.0 3. 14.0 40.0 3. 5. 0.0 0. 1. + 13773. 1. 4. 42.0 23.0 4.0 2. 14.0 20.0 6. 2. 0.0 0. 1. + 13774. 1. 2. 42.0 16.5 2.0 3. 14.0 40.0 3. 5. 0.0 0. 1. + 13776. 1. 5. 27.0 2.5 1.0 3. 16.0 11.5 4. 2. 0.0 0. 1. + 13780. 1. 5. 22.0 2.5 0.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 13783. 1. 4. 27.0 2.5 1.0 2. 14.0 9.0 3. 3. 0.0 0. 1. + 13784. 1. 4. 42.0 23.0 2.0 3. 16.0 40.0 3. 6. 0.0 0. 1. + 13798. 1. 4. 37.0 23.0 3.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 13809. 1. 4. 32.0 9.0 3.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 13815. 1. 3. 27.0 6.0 0.0 2. 14.0 6.5 4. 2. 0.0 0. 1. + 13842. 1. 4. 27.0 2.5 0.0 1. 16.0 20.0 4. 2. 0.0 0. 1. + 13846. 1. 4. 27.0 9.0 2.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 13847. 1. 5. 22.0 2.5 0.0 2. 14.0 9.0 3. 1. 0.0 0. 1. + 13854. 1. 5. 27.0 6.0 2.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 13857. 1. 4. 27.0 6.0 0.0 4. 9.0 9.0 2. 2. 0.0 0. 1. + 13860. 1. 4. 32.0 13.0 3.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 13864. 1. 1. 42.0 23.0 3.0 3. 12.0 14.0 2. 3. 0.0 0. 1. + 13865. 1. 3. 22.0 2.5 1.0 3. 12.0 6.5 3. 2. 0.0 0. 1. + 13867. 1. 4. 27.0 16.5 2.0 1. 12.0 20.0 2. 4. 0.0 0. 1. + 13869. 1. 3. 22.0 2.5 0.0 3. 14.0 11.5 4. 5. 0.0 0. 1. + 13873. 1. 4. 22.0 2.5 1.0 1. 14.0 6.5 4. 4. 0.0 0. 1. + 13876. 1. 5. 27.0 6.0 2.0 2. 14.0 20.0 1. 2. 0.0 0. 1. + 13878. 1. 4. 27.0 9.0 4.0 3. 14.0 14.0 2. 5. 0.0 0. 1. + 13884. 1. 4. 22.0 0.5 0.0 3. 17.0 11.5 4. 1. 0.0 0. 1. + 13886. 1. 4. 27.0 2.5 1.0 3. 16.0 9.0 4. 2. 0.0 0. 1. + 13894. 1. 5. 22.0 2.5 1.0 2. 14.0 6.5 2. 2. 0.0 0. 1. + 13897. 1. 5. 22.0 0.5 0.0 3. 14.0 9.0 3. 5. 0.0 0. 1. + 13906. 1. 5. 32.0 16.5 4.0 2. 14.0 20.0 4. 6. 0.0 0. 1. + 13908. 1. 4. 22.0 2.5 0.0 1. 16.0 20.0 2. 5. 0.0 0. 1. + 13911. 1. 3. 27.0 9.0 2.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 13912. 1. 5. 22.0 0.5 0.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 13918. 1. 4. 42.0 13.0 2.0 3. 16.0 20.0 5. 5. 0.0 0. 1. + 13922. 1. 5. 27.0 2.5 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 13927. 1. 4. 27.0 6.0 0.0 3. 16.0 20.0 4. 2. 0.0 0. 1. + 13933. 1. 5. 22.0 2.5 1.0 1. 16.0 9.0 3. 2. 0.0 0. 1. + 13938. 1. 5. 32.0 16.5 2.0 2. 14.0 40.0 5. 5. 0.0 0. 1. + 13944. 1. 5. 27.0 6.0 0.0 3. 12.0 9.0 3. 2. 0.0 0. 1. + 13952. 1. 5. 37.0 16.5 2.0 1. 14.0 11.5 5. 2. 0.0 0. 1. + 13957. 1. 3. 27.0 6.0 0.0 2. 16.0 11.5 5. 4. 0.0 0. 1. + 13958. 1. 5. 32.0 9.0 2.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 13968. 1. 4. 27.0 13.0 2.0 1. 14.0 20.0 4. 4. 0.0 0. 1. + 13970. 1. 5. 22.0 2.5 0.0 1. 12.0 9.0 2. 4. 0.0 0. 1. + 13971. 1. 5. 27.0 2.5 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 13976. 1. 2. 22.0 2.5 1.0 3. 16.0 9.0 3. 2. 0.0 0. 1. + 13977. 1. 5. 42.0 13.0 1.0 3. 12.0 40.0 2. 6. 0.0 0. 1. + 13983. 1. 3. 32.0 16.5 3.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 13985. 1. 4. 27.0 6.0 2.0 2. 14.0 20.0 2. 3. 0.0 0. 1. + 13988. 1. 5. 42.0 23.0 2.0 2. 14.0 20.0 3. 2. 0.0 0. 1. + 13989. 1. 4. 42.0 23.0 3.0 4. 16.0 20.0 3. 5. 0.0 0. 1. + 13990. 1. 4. 37.0 16.5 1.0 2. 12.0 11.5 2. 4. 0.0 0. 1. + 14009. 1. 4. 32.0 16.5 3.0 4. 12.0 11.5 2. 2. 0.0 0. 1. + 14013. 1. 5. 22.0 2.5 2.0 1. 14.0 40.0 3. 4. 0.0 0. 1. + 14014. 1. 3. 27.0 6.0 0.0 1. 14.0 14.0 3. 4. 0.0 0. 1. + 14018. 1. 5. 32.0 16.5 3.0 1. 12.0 11.5 2. 5. 0.0 0. 1. + 14019. 1. 5. 27.0 9.0 2.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 14024. 1. 5. 27.0 6.0 2.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 14026. 1. 4. 27.0 6.0 1.0 2. 14.0 14.0 4. 5. 0.0 0. 1. + 14059. 1. 5. 27.0 16.5 1.0 2. 14.0 20.0 3. 2. 0.0 0. 1. + 14061. 1. 5. 17.5 0.5 0.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 14064. 1. 4. 42.0 23.0 2.0 1. 12.0 20.0 3. 4. 0.0 0. 1. + 14068. 1. 4. 37.0 16.5 3.0 1. 12.0 20.0 4. 4. 0.0 0. 1. + 14070. 1. 5. 42.0 23.0 3.0 2. 14.0 20.0 5. 4. 0.0 0. 1. + 14072. 1. 5. 27.0 2.5 0.0 1. 16.0 14.0 3. 2. 0.0 0. 1. + 14076. 1. 4. 37.0 23.0 3.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 14087. 1. 5. 27.0 2.5 0.0 2. 14.0 14.0 5. 1. 0.0 0. 1. + 14088. 1. 3. 17.5 2.5 0.0 2. 12.0 11.5 1. 2. 0.0 0. 1. + 14093. 1. 4. 42.0 23.0 1.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 14095. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 14100. 1. 3. 22.0 2.5 1.0 3. 14.0 14.0 5. 4. 0.0 0. 1. + 14101. 1. 5. 17.5 0.5 0.0 1. 12.0 11.5 3. 2. 0.0 0. 1. + 14102. 1. 5. 32.0 6.0 1.0 1. 17.0 14.0 4. 6. 0.0 0. 1. + 14104. 1. 3. 27.0 2.5 0.0 1. 17.0 20.0 4. 2. 0.0 0. 1. + 14109. 1. 3. 37.0 16.5 3.0 4. 14.0 20.0 4. 6. 0.0 0. 1. + 14116. 1. 5. 22.0 2.5 0.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 14123. 1. 5. 22.0 2.5 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 14127. 1. 5. 32.0 16.5 3.0 4. 14.0 40.0 4. 5. 0.0 0. 1. + 14129. 1. 4. 27.0 6.0 1.0 1. 14.0 11.5 3. 5. 0.0 0. 1. + 14130. 1. 4. 22.0 0.5 0.0 3. 16.0 9.0 4. 1. 0.0 0. 1. + 14136. 1. 4. 22.0 2.5 0.0 4. 14.0 14.0 3. 5. 0.0 0. 1. + 14144. 1. 4. 32.0 16.5 2.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 14145. 1. 4. 22.0 2.5 0.0 1. 12.0 14.0 2. 4. 0.0 0. 1. + 14152. 1. 3. 27.0 2.5 0.0 2. 12.0 9.0 3. 1. 0.0 0. 1. + 14153. 1. 4. 22.0 2.5 0.0 1. 16.0 6.5 3. 4. 0.0 0. 1. + 14159. 1. 4. 27.0 6.0 1.0 2. 14.0 20.0 5. 5. 0.0 0. 1. + 14164. 1. 4. 32.0 16.5 4.0 4. 14.0 40.0 3. 5. 0.0 0. 1. + 14165. 1. 1. 27.0 6.0 0.0 2. 14.0 20.0 4. 5. 0.0 0. 1. + 14167. 1. 5. 27.0 6.0 2.0 4. 14.0 20.0 3. 2. 0.0 0. 1. + 14169. 1. 5. 32.0 16.5 3.0 1. 12.0 20.0 2. 5. 0.0 0. 1. + 14178. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 5. 4. 0.0 0. 1. + 14179. 1. 4. 27.0 0.5 0.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 14183. 1. 4. 17.5 2.5 1.0 1. 12.0 6.5 2. 4. 0.0 0. 1. + 14184. 1. 5. 42.0 23.0 2.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 14185. 1. 4. 37.0 9.0 1.0 3. 12.0 14.0 2. 5. 0.0 0. 1. + 14188. 1. 5. 42.0 23.0 3.0 3. 16.0 11.5 3. 3. 0.0 0. 1. + 14189. 1. 5. 22.0 2.5 0.0 2. 14.0 6.5 1. 4. 0.0 0. 1. + 14192. 1. 5. 42.0 23.0 3.0 3. 12.0 14.0 4. 5. 0.0 0. 1. + 14203. 1. 3. 22.0 2.5 0.0 4. 14.0 14.0 3. 5. 0.0 0. 1. + 14214. 1. 5. 27.0 9.0 2.0 2. 12.0 14.0 3. 3. 0.0 0. 1. + 14215. 1. 4. 37.0 16.5 2.0 4. 14.0 14.0 4. 4. 0.0 0. 1. + 14219. 1. 4. 42.0 23.0 3.0 1. 12.0 20.0 3. 5. 0.0 0. 1. + 14220. 1. 4. 27.0 16.5 2.0 3. 16.0 9.0 3. 4. 0.0 0. 1. + 14224. 1. 5. 32.0 2.5 0.0 4. 17.0 40.0 5. 4. 0.0 0. 1. + 14225. 1. 5. 27.0 9.0 1.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 14228. 1. 5. 27.0 6.0 0.0 1. 14.0 11.5 3. 4. 0.0 0. 1. + 14229. 1. 1. 37.0 13.0 2.0 1. 17.0 20.0 4. 4. 0.0 0. 1. + 14230. 1. 2. 17.5 0.5 0.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 14243. 1. 5. 27.0 6.0 2.0 2. 14.0 11.5 3. 3. 0.0 0. 1. + 14251. 1. 4. 42.0 23.0 3.0 2. 12.0 40.0 5. 6. 0.0 0. 1. + 14254. 1. 5. 32.0 23.0 3.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 14256. 1. 4. 32.0 13.0 3.0 2. 14.0 20.0 4. 6. 0.0 0. 1. + 14258. 1. 4. 17.5 0.5 0.0 2. 16.0 9.0 4. 4. 0.0 0. 1. + 14259. 1. 5. 27.0 0.5 0.0 3. 14.0 40.0 2. 2. 0.0 0. 1. + 14260. 1. 4. 27.0 6.0 0.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 14262. 1. 5. 32.0 13.0 3.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 14266. 1. 4. 22.0 2.5 0.0 1. 17.0 20.0 4. 5. 0.0 0. 1. + 14279. 1. 5. 32.0 2.5 0.0 1. 20.0 11.5 2. 1. 0.0 0. 1. + 14281. 1. 2. 32.0 16.5 3.0 4. 12.0 9.0 5. 5. 0.0 0. 1. + 14282. 1. 3. 32.0 9.0 0.0 4. 20.0 20.0 4. 4. 0.0 0. 1. + 14290. 1. 3. 22.0 0.5 0.0 2. 17.0 9.0 1. 5. 0.0 0. 1. + 14301. 1. 4. 27.0 9.0 2.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 14313. 1. 5. 42.0 23.0 3.0 3. 12.0 40.0 5. 4. 0.0 0. 1. + 14321. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 14333. 1. 5. 22.0 2.5 1.0 1. 14.0 11.5 2. 2. 0.0 0. 1. + 14341. 1. 5. 42.0 23.0 3.0 2. 12.0 40.0 5. 5. 0.0 0. 1. + 14352. 1. 5. 37.0 16.5 4.0 3. 20.0 40.0 4. 4. 0.0 0. 1. + 14355. 1. 4. 22.0 2.5 1.0 3. 12.0 9.0 3. 4. 0.0 0. 1. + 14369. 1. 3. 27.0 6.0 1.0 1. 17.0 40.0 5. 6. 0.0 0. 1. + 14377. 1. 2. 27.0 2.5 0.0 3. 12.0 40.0 3. 2. 0.0 0. 1. + 14379. 1. 4. 22.0 6.0 2.0 2. 12.0 14.0 4. 4. 0.0 0. 1. + 14380. 1. 5. 27.0 9.0 0.0 1. 17.0 40.0 4. 6. 0.0 0. 1. + 14384. 1. 4. 22.0 2.5 2.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 14390. 1. 4. 22.0 2.5 1.0 2. 12.0 11.5 3. 1. 0.0 0. 1. + 14403. 1. 4. 42.0 23.0 2.0 2. 12.0 20.0 2. 5. 0.0 0. 1. + 14406. 1. 3. 32.0 6.0 0.0 1. 16.0 14.0 4. 4. 0.0 0. 1. + 14413. 1. 5. 22.0 2.5 1.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 14418. 1. 5. 22.0 2.5 0.0 2. 12.0 6.5 4. 1. 0.0 0. 1. + 14427. 1. 4. 37.0 23.0 2.0 3. 20.0 20.0 4. 4. 0.0 0. 1. + 14431. 1. 3. 27.0 6.0 1.0 2. 12.0 11.5 4. 2. 0.0 0. 1. + 14438. 1. 5. 32.0 13.0 3.0 2. 14.0 20.0 4. 5. 0.0 0. 1. + 14446. 1. 4. 32.0 16.5 2.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 14447. 1. 5. 42.0 23.0 3.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 14448. 1. 4. 32.0 13.0 2.0 4. 14.0 20.0 2. 4. 0.0 0. 1. + 14452. 1. 4. 32.0 6.0 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 14468. 1. 4. 42.0 23.0 2.0 3. 14.0 40.0 5. 5. 0.0 0. 1. + 14471. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 2. 0.0 0. 1. + 14474. 1. 4. 27.0 6.0 0.0 1. 16.0 20.0 3. 2. 0.0 0. 1. + 14482. 1. 5. 27.0 2.5 0.0 4. 14.0 9.0 3. 6. 0.0 0. 1. + 14489. 1. 2. 22.0 2.5 0.0 3. 16.0 4.0 4. 5. 0.0 0. 1. + 14491. 1. 5. 27.0 6.0 1.0 2. 16.0 14.0 4. 6. 0.0 0. 1. + 14508. 1. 5. 27.0 6.0 0.0 2. 17.0 20.0 4. 6. 0.0 0. 1. + 14511. 1. 5. 27.0 6.0 1.0 2. 12.0 11.5 5. 5. 0.0 0. 1. + 14516. 1. 4. 22.0 2.5 0.0 2. 16.0 11.5 3. 4. 0.0 0. 1. + 14520. 1. 4. 27.0 9.0 1.0 1. 14.0 20.0 3. 4. 0.0 0. 1. + 14522. 1. 4. 32.0 6.0 2.0 1. 17.0 20.0 4. 4. 0.0 0. 1. + 14528. 1. 5. 22.0 0.5 0.0 2. 14.0 6.5 3. 1. 0.0 0. 1. + 14532. 1. 5. 22.0 2.5 2.0 3. 14.0 11.5 4. 4. 0.0 0. 1. + 14537. 1. 4. 22.0 2.5 0.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 14539. 1. 4. 32.0 16.5 2.0 2. 9.0 11.5 3. 5. 0.0 0. 1. + 14541. 1. 5. 27.0 6.0 0.0 1. 14.0 40.0 3. 5. 0.0 0. 1. + 14542. 1. 5. 22.0 6.0 2.0 3. 12.0 14.0 2. 4. 0.0 0. 1. + 14546. 1. 5. 22.0 2.5 1.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 14565. 1. 4. 27.0 2.5 0.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 14569. 1. 5. 27.0 2.5 0.0 4. 20.0 20.0 4. 4. 0.0 0. 1. + 14570. 1. 5. 27.0 6.0 2.0 4. 12.0 20.0 2. 5. 0.0 0. 1. + 14572. 1. 5. 22.0 0.5 0.0 2. 14.0 11.5 2. 5. 0.0 0. 1. + 14578. 1. 5. 22.0 2.5 2.0 2. 12.0 6.5 2. 2. 0.0 0. 1. + 14580. 1. 5. 27.0 2.5 0.0 4. 14.0 20.0 3. 4. 0.0 0. 1. + 14585. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 3. 0.0 0. 1. + 14588. 1. 5. 17.5 0.5 0.0 4. 12.0 6.5 2. 4. 0.0 0. 1. + 14589. 1. 5. 32.0 13.0 2.0 2. 14.0 11.5 5. 4. 0.0 0. 1. + 14598. 1. 3. 27.0 6.0 0.0 2. 12.0 20.0 5. 5. 0.0 0. 1. + 14603. 1. 4. 37.0 16.5 3.0 3. 12.0 40.0 3. 5. 0.0 0. 1. + 14612. 1. 5. 32.0 13.0 2.0 2. 17.0 14.0 4. 3. 0.0 0. 1. + 14621. 1. 4. 22.0 2.5 1.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 14623. 1. 5. 27.0 2.5 0.0 2. 14.0 20.0 5. 5. 0.0 0. 1. + 14627. 1. 5. 32.0 9.0 2.0 4. 16.0 11.5 4. 5. 0.0 0. 1. + 14630. 1. 4. 27.0 6.0 1.0 2. 14.0 11.5 2. 2. 0.0 0. 1. + 14642. 1. 4. 27.0 6.0 1.0 2. 14.0 11.5 2. 3. 0.0 0. 1. + 14643. 1. 5. 32.0 2.5 0.0 3. 14.0 11.5 4. 4. 0.0 0. 1. + 14649. 1. 5. 22.0 0.5 0.0 1. 14.0 20.0 5. 6. 0.0 0. 1. + 14653. 1. 4. 27.0 2.5 0.0 2. 14.0 20.0 2. 2. 0.0 0. 1. + 14654. 1. 4. 22.0 2.5 0.0 3. 16.0 11.5 4. 1. 0.0 0. 1. + 14664. 1. 5. 42.0 16.5 3.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 14669. 1. 5. 42.0 16.5 2.0 4. 14.0 20.0 3. 4. 0.0 0. 1. + 14676. 1. 5. 22.0 0.5 0.0 3. 14.0 9.0 3. 3. 0.0 0. 1. + 14677. 1. 4. 22.0 2.5 1.0 1. 14.0 11.5 2. 5. 0.0 0. 1. + 14686. 1. 5. 42.0 23.0 5.5 2. 12.0 20.0 2. 2. 0.0 0. 1. + 14693. 1. 5. 27.0 2.5 0.0 2. 16.0 14.0 3. 6. 0.0 0. 1. + 14699. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 3. 0.0 0. 1. + 14700. 1. 4. 22.0 0.5 0.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 14701. 1. 5. 27.0 6.0 0.0 2. 14.0 11.5 4. 1. 0.0 0. 1. + 14706. 1. 5. 27.0 6.0 0.0 4. 17.0 20.0 4. 4. 0.0 0. 1. + 14713. 1. 5. 37.0 23.0 2.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 14715. 1. 4. 27.0 6.0 2.0 3. 14.0 11.5 4. 4. 0.0 0. 1. + 14719. 1. 4. 22.0 2.5 0.0 1. 12.0 20.0 3. 3. 0.0 0. 1. + 14723. 1. 5. 37.0 13.0 2.0 2. 14.0 14.0 5. 2. 0.0 0. 1. + 14726. 1. 4. 17.5 0.5 0.0 4. 12.0 6.5 2. 5. 0.0 0. 1. + 14728. 1. 4. 22.0 2.5 1.0 1. 14.0 20.0 3. 2. 0.0 0. 1. + 14730. 1. 5. 27.0 2.5 0.0 1. 17.0 11.5 4. 5. 0.0 0. 1. + 14735. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 14737. 1. 4. 27.0 6.0 1.0 3. 16.0 11.5 3. 1. 0.0 0. 1. + 14743. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 3. 2. 0.0 0. 1. + 14757. 1. 1. 42.0 23.0 4.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 14760. 1. 4. 27.0 6.0 1.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 14767. 1. 5. 22.0 2.5 0.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 14774. 1. 4. 27.0 6.0 1.0 3. 16.0 14.0 4. 4. 0.0 0. 1. + 14779. 1. 4. 22.0 2.5 0.0 1. 12.0 9.0 3. 2. 0.0 0. 1. + 14784. 1. 5. 22.0 2.5 0.0 2. 12.0 9.0 4. 2. 0.0 0. 1. + 14791. 1. 4. 22.0 2.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 14802. 1. 5. 17.5 0.5 0.0 1. 14.0 14.0 3. 5. 0.0 0. 1. + 14808. 1. 3. 37.0 16.5 3.0 4. 17.0 20.0 4. 5. 0.0 0. 1. + 14811. 1. 4. 32.0 2.5 1.0 3. 17.0 20.0 4. 3. 0.0 0. 1. + 14812. 1. 5. 32.0 16.5 3.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 14815. 1. 5. 22.0 6.0 2.0 2. 12.0 20.0 2. 5. 0.0 0. 1. + 14823. 1. 4. 27.0 6.0 0.0 2. 16.0 6.5 3. 6. 0.0 0. 1. + 14827. 1. 5. 22.0 2.5 0.0 2. 16.0 20.0 3. 4. 0.0 0. 1. + 14836. 1. 4. 22.0 2.5 0.0 2. 12.0 14.0 5. 2. 0.0 0. 1. + 14839. 1. 4. 22.0 6.0 3.0 2. 12.0 9.0 2. 2. 0.0 0. 1. + 14846. 1. 2. 42.0 16.5 2.0 3. 16.0 14.0 4. 2. 0.0 0. 1. + 14858. 1. 4. 27.0 6.0 1.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 14867. 1. 5. 32.0 13.0 2.0 2. 16.0 11.5 4. 4. 0.0 0. 1. + 14876. 1. 5. 27.0 6.0 1.0 2. 14.0 9.0 3. 1. 0.0 0. 1. + 14877. 1. 4. 22.0 0.5 0.0 3. 14.0 6.5 3. 1. 0.0 0. 1. + 14882. 1. 5. 32.0 16.5 3.0 4. 16.0 40.0 5. 6. 0.0 0. 1. + 14887. 1. 4. 27.0 6.0 0.0 1. 16.0 20.0 4. 4. 0.0 0. 1. + 14902. 1. 5. 27.0 6.0 1.0 2. 14.0 20.0 5. 4. 0.0 0. 1. + 14928. 1. 5. 32.0 13.0 3.0 2. 14.0 9.0 4. 6. 0.0 0. 1. + 14939. 1. 5. 22.0 2.5 0.0 1. 14.0 40.0 3. 5. 0.0 0. 1. + 14941. 1. 3. 27.0 2.5 2.0 2. 14.0 9.0 3. 1. 0.0 0. 1. + 14956. 1. 5. 27.0 6.0 0.0 2. 14.0 11.5 4. 6. 0.0 0. 1. + 14960. 1. 3. 22.0 0.5 0.0 1. 16.0 20.0 3. 3. 0.0 0. 1. + 14962. 1. 5. 27.0 6.0 1.0 2. 17.0 11.5 4. 4. 0.0 0. 1. + 14963. 1. 5. 27.0 2.5 0.0 3. 20.0 20.0 4. 5. 0.0 0. 1. + 14967. 1. 5. 32.0 16.5 4.0 4. 14.0 14.0 3. 3. 0.0 0. 1. + 14972. 1. 4. 42.0 23.0 4.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 14976. 1. 3. 27.0 9.0 2.0 1. 12.0 14.0 2. 4. 0.0 0. 1. + 14978. 1. 5. 32.0 16.5 2.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 14983. 1. 2. 42.0 23.0 2.0 1. 14.0 20.0 2. 2. 0.0 0. 1. + 14987. 1. 5. 37.0 16.5 2.0 1. 12.0 40.0 2. 5. 0.0 0. 1. + 14988. 1. 5. 27.0 6.0 1.0 4. 17.0 11.5 4. 6. 0.0 0. 1. + 14995. 1. 4. 37.0 2.5 0.0 3. 12.0 40.0 5. 5. 0.0 0. 1. + 15005. 1. 5. 27.0 2.5 1.0 2. 14.0 11.5 2. 2. 0.0 0. 1. + 15008. 1. 4. 27.0 2.5 0.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 15014. 1. 5. 27.0 2.5 0.0 4. 14.0 11.5 4. 4. 0.0 0. 1. + 15020. 1. 4. 27.0 9.0 0.0 1. 14.0 20.0 2. 4. 0.0 0. 1. + 15022. 1. 4. 22.0 2.5 0.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 15023. 1. 4. 22.0 2.5 0.0 2. 14.0 11.5 3. 2. 0.0 0. 1. + 15047. 1. 5. 22.0 2.5 0.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 15051. 1. 4. 17.5 0.5 0.0 1. 12.0 9.0 3. 1. 0.0 0. 1. + 15056. 1. 4. 27.0 2.5 0.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 15069. 1. 5. 17.5 0.5 0.0 1. 12.0 9.0 3. 4. 0.0 0. 1. + 15070. 1. 4. 32.0 13.0 2.0 1. 16.0 11.5 4. 4. 0.0 0. 1. + 15072. 1. 4. 27.0 2.5 0.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 15074. 1. 5. 27.0 9.0 2.0 3. 12.0 14.0 3. 2. 0.0 0. 1. + 15076. 1. 4. 32.0 6.0 1.0 3. 12.0 9.0 3. 4. 0.0 0. 1. + 15078. 1. 3. 27.0 2.5 0.0 2. 20.0 20.0 4. 4. 0.0 0. 1. + 15083. 1. 5. 22.0 0.5 0.0 2. 12.0 9.0 5. 1. 0.0 0. 1. + 15090. 1. 4. 42.0 23.0 2.0 4. 14.0 20.0 3. 5. 0.0 0. 1. + 15105. 1. 5. 22.0 2.5 0.0 1. 16.0 20.0 4. 5. 0.0 0. 1. + 15107. 1. 5. 27.0 6.0 2.0 2. 14.0 11.5 4. 2. 0.0 0. 1. + 15111. 1. 5. 22.0 2.5 1.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 15112. 1. 5. 27.0 6.0 0.0 2. 16.0 20.0 4. 6. 0.0 0. 1. + 15123. 1. 4. 42.0 23.0 2.0 2. 17.0 20.0 2. 4. 0.0 0. 1. + 15130. 1. 5. 32.0 2.5 0.0 2. 14.0 20.0 2. 6. 0.0 0. 1. + 15135. 1. 5. 22.0 2.5 0.0 1. 14.0 14.0 4. 4. 0.0 0. 1. + 15140. 1. 4. 22.0 2.5 0.0 2. 12.0 14.0 3. 5. 0.0 0. 1. + 15141. 1. 5. 42.0 23.0 5.5 3. 20.0 40.0 4. 6. 0.0 0. 1. + 15150. 1. 5. 27.0 2.5 0.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 15153. 1. 4. 37.0 9.0 0.0 3. 14.0 14.0 4. 4. 0.0 0. 1. + 15168. 1. 3. 27.0 2.5 1.0 3. 17.0 14.0 4. 5. 0.0 0. 1. + 15171. 1. 5. 42.0 23.0 4.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 15176. 1. 4. 22.0 2.5 0.0 2. 14.0 6.5 3. 5. 0.0 0. 1. + 15180. 1. 5. 22.0 2.5 0.0 1. 14.0 14.0 3. 5. 0.0 0. 1. + 15182. 1. 5. 32.0 2.5 1.0 1. 14.0 20.0 4. 6. 0.0 0. 1. + 15185. 1. 3. 27.0 9.0 2.0 4. 12.0 11.5 3. 3. 0.0 0. 1. + 15188. 1. 4. 22.0 0.5 0.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 15190. 1. 2. 27.0 6.0 1.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 15194. 1. 5. 42.0 23.0 5.5 3. 14.0 11.5 5. 5. 0.0 0. 1. + 15200. 1. 5. 42.0 23.0 4.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 15209. 1. 4. 32.0 13.0 3.0 1. 12.0 14.0 3. 5. 0.0 0. 1. + 15212. 1. 5. 22.0 2.5 0.0 1. 16.0 20.0 4. 5. 0.0 0. 1. + 15217. 1. 4. 37.0 16.5 2.0 3. 16.0 20.0 4. 2. 0.0 0. 1. + 15218. 1. 5. 37.0 16.5 4.0 2. 12.0 9.0 3. 5. 0.0 0. 1. + 15229. 1. 2. 27.0 6.0 1.0 3. 14.0 9.0 4. 4. 0.0 0. 1. + 15235. 1. 4. 27.0 6.0 2.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 15247. 1. 4. 22.0 6.0 0.0 3. 16.0 9.0 3. 2. 0.0 0. 1. + 15249. 1. 5. 27.0 6.0 1.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 15251. 1. 4. 22.0 2.5 0.0 2. 14.0 4.0 3. 4. 0.0 0. 1. + 15253. 1. 5. 27.0 2.5 0.0 1. 14.0 20.0 2. 5. 0.0 0. 1. + 15256. 1. 4. 22.0 2.5 1.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 15257. 1. 5. 27.0 6.0 0.0 4. 20.0 20.0 3. 5. 0.0 0. 1. + 15264. 1. 3. 42.0 23.0 3.0 2. 12.0 40.0 5. 5. 0.0 0. 1. + 15268. 1. 4. 22.0 6.0 2.0 3. 9.0 11.5 3. 4. 0.0 0. 1. + 15270. 1. 4. 22.0 2.5 0.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 15275. 1. 5. 27.0 2.5 0.0 2. 16.0 20.0 4. 2. 0.0 0. 1. + 15276. 1. 5. 22.0 2.5 1.0 4. 14.0 11.5 4. 2. 0.0 0. 1. + 15278. 1. 4. 42.0 16.5 2.0 4. 17.0 40.0 4. 5. 0.0 0. 1. + 15281. 1. 4. 42.0 23.0 5.5 3. 14.0 20.0 5. 3. 0.0 0. 1. + 15286. 1. 4. 27.0 6.0 0.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 15289. 1. 4. 22.0 6.0 0.0 3. 17.0 14.0 4. 3. 0.0 0. 1. + 15292. 1. 4. 27.0 2.5 0.0 4. 16.0 9.0 3. 4. 0.0 0. 1. + 15294. 1. 4. 27.0 6.0 1.0 1. 17.0 14.0 4. 5. 0.0 0. 1. + 15295. 1. 5. 27.0 2.5 0.0 2. 14.0 20.0 3. 2. 0.0 0. 1. + 15310. 1. 5. 27.0 6.0 2.0 3. 14.0 11.5 3. 3. 0.0 0. 1. + 15311. 1. 5. 32.0 13.0 2.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 15313. 1. 4. 22.0 2.5 0.0 3. 17.0 11.5 4. 1. 0.0 0. 1. + 15321. 1. 5. 27.0 13.0 2.0 4. 12.0 20.0 3. 5. 0.0 0. 1. + 15343. 1. 5. 22.0 2.5 3.0 3. 14.0 6.5 3. 5. 0.0 0. 1. + 15346. 1. 3. 42.0 23.0 3.0 3. 14.0 14.0 5. 3. 0.0 0. 1. + 15353. 1. 4. 27.0 6.0 1.0 3. 16.0 14.0 4. 4. 0.0 0. 1. + 15354. 1. 5. 22.0 2.5 0.0 2. 17.0 11.5 3. 1. 0.0 0. 1. + 15356. 1. 4. 32.0 16.5 3.0 3. 12.0 14.0 5. 5. 0.0 0. 1. + 15361. 1. 5. 17.5 0.5 0.0 2. 14.0 9.0 3. 6. 0.0 0. 1. + 15364. 1. 4. 22.0 2.5 0.0 4. 14.0 9.0 3. 4. 0.0 0. 1. + 15368. 1. 4. 42.0 16.5 3.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 15372. 1. 4. 27.0 9.0 1.0 1. 12.0 14.0 2. 4. 0.0 0. 1. + 15377. 1. 4. 22.0 2.5 0.0 2. 14.0 9.0 5. 1. 0.0 0. 1. + 15378. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 2. 0.0 0. 1. + 15387. 1. 5. 27.0 2.5 0.0 2. 14.0 20.0 2. 6. 0.0 0. 1. + 15390. 1. 4. 22.0 2.5 0.0 4. 20.0 20.0 2. 5. 0.0 0. 1. + 15397. 1. 3. 27.0 6.0 0.0 3. 14.0 40.0 3. 5. 0.0 0. 1. + 15402. 1. 5. 32.0 13.0 2.0 1. 17.0 40.0 5. 6. 0.0 0. 1. + 15404. 1. 5. 37.0 16.5 3.0 2. 14.0 20.0 5. 4. 0.0 0. 1. + 15414. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 2. 2. 0.0 0. 1. + 15419. 1. 5. 22.0 6.0 1.0 2. 14.0 9.0 4. 4. 0.0 0. 1. + 15420. 1. 3. 27.0 2.5 0.0 1. 16.0 11.5 3. 2. 0.0 0. 1. + 15426. 1. 4. 32.0 13.0 3.0 2. 16.0 40.0 4. 5. 0.0 0. 1. + 15432. 1. 5. 22.0 2.5 0.0 2. 17.0 20.0 4. 5. 0.0 0. 1. + 15435. 1. 5. 37.0 13.0 3.0 3. 16.0 20.0 3. 4. 0.0 0. 1. + 15436. 1. 4. 42.0 23.0 2.0 3. 14.0 20.0 4. 3. 0.0 0. 1. + 15438. 1. 5. 27.0 6.0 0.0 3. 14.0 14.0 4. 4. 0.0 0. 1. + 15439. 1. 4. 22.0 2.5 0.0 3. 16.0 14.0 4. 5. 0.0 0. 1. + 15445. 1. 4. 27.0 2.5 2.0 2. 14.0 11.5 3. 6. 0.0 0. 1. + 15446. 1. 4. 27.0 9.0 3.0 3. 14.0 6.5 3. 2. 0.0 0. 1. + 15452. 1. 4. 27.0 9.0 1.0 2. 14.0 14.0 2. 4. 0.0 0. 1. + 15455. 1. 5. 22.0 2.5 0.0 2. 16.0 20.0 3. 2. 0.0 0. 1. + 15459. 1. 5. 42.0 23.0 1.0 2. 20.0 40.0 6. 4. 0.0 0. 1. + 15461. 1. 4. 27.0 2.5 0.0 3. 20.0 20.0 4. 5. 0.0 0. 1. + 15463. 1. 5. 37.0 13.0 2.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 15465. 1. 5. 32.0 9.0 1.0 2. 14.0 11.5 5. 5. 0.0 0. 1. + 15469. 1. 4. 22.0 2.5 0.0 4. 12.0 11.5 3. 4. 0.0 0. 1. + 15470. 1. 4. 22.0 6.0 1.0 1. 12.0 9.0 3. 4. 0.0 0. 1. + 15471. 1. 5. 27.0 2.5 1.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 15473. 1. 5. 22.0 6.0 2.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 15474. 1. 4. 22.0 2.5 1.0 4. 12.0 9.0 3. 2. 0.0 0. 1. + 15478. 1. 4. 37.0 16.5 2.0 2. 20.0 40.0 4. 5. 0.0 0. 1. + 15479. 1. 5. 32.0 13.0 3.0 3. 14.0 14.0 2. 2. 0.0 0. 1. + 15486. 1. 4. 42.0 23.0 2.0 4. 16.0 20.0 4. 5. 0.0 0. 1. + 15490. 1. 5. 27.0 6.0 1.0 3. 16.0 9.0 4. 4. 0.0 0. 1. + 15499. 1. 4. 27.0 2.5 0.0 2. 12.0 11.5 2. 5. 0.0 0. 1. + 15500. 1. 3. 27.0 9.0 1.0 4. 12.0 14.0 3. 5. 0.0 0. 1. + 15501. 1. 5. 37.0 23.0 4.0 2. 14.0 40.0 3. 5. 0.0 0. 1. + 15513. 1. 3. 27.0 6.0 2.0 1. 14.0 20.0 4. 4. 0.0 0. 1. + 15516. 1. 5. 22.0 2.5 0.0 1. 12.0 14.0 2. 4. 0.0 0. 1. + 15521. 1. 5. 22.0 2.5 0.0 4. 14.0 9.0 4. 2. 0.0 0. 1. + 15530. 1. 4. 22.0 2.5 0.0 1. 14.0 11.5 3. 4. 0.0 0. 1. + 15532. 1. 3. 17.5 2.5 0.0 2. 12.0 9.0 2. 2. 0.0 0. 1. + 15535. 1. 5. 22.0 2.5 0.0 2. 16.0 14.0 3. 3. 0.0 0. 1. + 15546. 1. 5. 42.0 23.0 4.0 3. 14.0 20.0 3. 6. 0.0 0. 1. + 15558. 1. 4. 17.5 2.5 1.0 2. 12.0 9.0 3. 4. 0.0 0. 1. + 15568. 1. 4. 32.0 13.0 2.0 3. 20.0 20.0 4. 4. 0.0 0. 1. + 15569. 1. 5. 22.0 0.5 0.0 2. 12.0 6.5 3. 2. 0.0 0. 1. + 15577. 1. 3. 22.0 6.0 1.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 15578. 1. 3. 32.0 13.0 2.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 15579. 1. 5. 32.0 9.0 0.0 3. 17.0 40.0 6. 6. 0.0 0. 1. + 15589. 1. 4. 42.0 16.5 1.0 3. 14.0 40.0 3. 6. 0.0 0. 1. + 15595. 1. 3. 42.0 16.5 3.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 15601. 1. 4. 27.0 2.5 0.0 3. 16.0 40.0 3. 5. 0.0 0. 1. + 15604. 1. 4. 17.5 0.5 0.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 15609. 1. 5. 27.0 2.5 1.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 15612. 1. 5. 27.0 2.5 0.0 4. 16.0 20.0 4. 4. 0.0 0. 1. + 15615. 1. 5. 22.0 2.5 0.0 3. 17.0 14.0 4. 4. 0.0 0. 1. + 15616. 1. 4. 27.0 6.0 1.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 15619. 1. 5. 22.0 0.5 0.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 15622. 1. 4. 32.0 6.0 2.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 15626. 1. 3. 22.0 2.5 1.0 1. 12.0 9.0 3. 4. 0.0 0. 1. + 15627. 1. 2. 22.0 2.5 0.0 2. 12.0 9.0 3. 2. 0.0 0. 1. + 15629. 1. 5. 27.0 2.5 1.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 15633. 1. 5. 22.0 2.5 0.0 1. 17.0 14.0 4. 4. 0.0 0. 1. + 15634. 1. 4. 27.0 6.0 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 15637. 1. 5. 27.0 13.0 2.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 15640. 1. 5. 22.0 2.5 0.0 1. 14.0 4.0 1. 1. 0.0 0. 1. + 15645. 1. 4. 22.0 6.0 1.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 15647. 1. 5. 32.0 16.5 4.0 3. 14.0 40.0 4. 6. 0.0 0. 1. + 15649. 1. 5. 27.0 6.0 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 15650. 1. 4. 32.0 13.0 2.0 4. 14.0 14.0 5. 5. 0.0 0. 1. + 15654. 1. 4. 42.0 23.0 4.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 15658. 1. 4. 27.0 6.0 2.0 3. 16.0 40.0 3. 2. 0.0 0. 1. + 15659. 1. 5. 27.0 9.0 2.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 15671. 1. 3. 27.0 2.5 0.0 3. 16.0 20.0 5. 4. 0.0 0. 1. + 15674. 1. 3. 32.0 13.0 2.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 15675. 1. 4. 27.0 2.5 0.0 2. 16.0 14.0 5. 4. 0.0 0. 1. + 15681. 1. 5. 22.0 2.5 0.0 1. 12.0 14.0 3. 5. 0.0 0. 1. + 15689. 1. 4. 32.0 9.0 1.0 1. 16.0 14.0 4. 3. 0.0 0. 1. + 15691. 1. 5. 17.5 2.5 0.0 3. 12.0 6.5 4. 4. 0.0 0. 1. + 15699. 1. 4. 42.0 23.0 4.0 4. 16.0 40.0 4. 6. 0.0 0. 1. + 15704. 1. 5. 42.0 23.0 2.0 3. 17.0 20.0 4. 2. 0.0 0. 1. + 15710. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 1. 0.0 0. 1. + 15712. 1. 4. 32.0 9.0 2.0 2. 12.0 20.0 4. 6. 0.0 0. 1. + 15713. 1. 5. 27.0 2.5 0.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 15715. 1. 5. 22.0 0.5 4.0 1. 12.0 40.0 5. 5. 0.0 0. 1. + 15719. 1. 5. 27.0 6.0 0.0 1. 20.0 20.0 4. 4. 0.0 0. 1. + 15721. 1. 5. 27.0 2.5 0.0 3. 20.0 40.0 4. 2. 0.0 0. 1. + 15723. 1. 5. 27.0 6.0 1.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 15726. 1. 4. 27.0 2.5 0.0 3. 16.0 20.0 4. 2. 0.0 0. 1. + 15728. 1. 5. 22.0 0.5 0.0 3. 16.0 6.5 4. 2. 0.0 0. 1. + 15730. 1. 5. 42.0 23.0 4.0 4. 14.0 9.0 4. 6. 0.0 0. 1. + 15737. 1. 3. 22.0 2.5 1.0 3. 14.0 9.0 3. 2. 0.0 0. 1. + 15738. 1. 4. 37.0 16.5 3.0 4. 16.0 20.0 4. 4. 0.0 0. 1. + 15751. 1. 4. 37.0 16.5 2.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 15753. 1. 4. 22.0 2.5 0.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 15755. 1. 4. 22.0 6.0 0.0 2. 16.0 40.0 5. 5. 0.0 0. 1. + 15760. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 4. 4. 0.0 0. 1. + 15762. 1. 4. 27.0 6.0 0.0 2. 12.0 14.0 2. 5. 0.0 0. 1. + 15775. 1. 2. 42.0 23.0 5.5 3. 16.0 20.0 4. 5. 0.0 0. 1. + 15777. 1. 5. 22.0 2.5 0.0 2. 14.0 6.5 3. 2. 0.0 0. 1. + 15781. 1. 5. 27.0 2.5 1.0 2. 12.0 6.5 2. 5. 0.0 0. 1. + 15784. 1. 5. 42.0 23.0 1.0 3. 12.0 20.0 4. 5. 0.0 0. 1. + 15785. 1. 5. 42.0 23.0 3.0 3. 14.0 20.0 5. 5. 0.0 0. 1. + 15789. 1. 5. 42.0 23.0 1.0 1. 12.0 40.0 3. 5. 0.0 0. 1. + 15790. 1. 4. 27.0 6.0 0.0 1. 16.0 14.0 4. 2. 0.0 0. 1. + 15792. 1. 3. 27.0 9.0 2.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 15796. 1. 5. 27.0 6.0 0.0 2. 12.0 20.0 3. 3. 0.0 0. 1. + 15800. 1. 4. 22.0 2.5 0.0 3. 12.0 14.0 3. 5. 0.0 0. 1. + 15803. 1. 5. 32.0 9.0 2.0 1. 16.0 20.0 4. 6. 0.0 0. 1. + 15822. 1. 5. 22.0 2.5 1.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 15830. 1. 5. 22.0 6.0 0.0 1. 16.0 20.0 4. 4. 0.0 0. 1. + 15833. 1. 5. 37.0 16.5 2.0 4. 20.0 20.0 4. 6. 0.0 0. 1. + 15857. 1. 4. 22.0 2.5 0.0 2. 12.0 6.5 5. 5. 0.0 0. 1. + 15860. 1. 4. 22.0 2.5 0.0 3. 14.0 9.0 3. 1. 0.0 0. 1. + 15865. 1. 5. 27.0 6.0 0.0 3. 17.0 20.0 4. 6. 0.0 0. 1. + 15869. 1. 5. 22.0 0.5 0.0 3. 16.0 20.0 5. 5. 0.0 0. 1. + 15884. 1. 5. 22.0 2.5 0.0 3. 14.0 9.0 3. 2. 0.0 0. 1. + 15885. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 15887. 1. 4. 27.0 6.0 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 15903. 1. 5. 22.0 2.5 0.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 15910. 1. 4. 22.0 0.5 0.0 3. 14.0 20.0 5. 5. 0.0 0. 1. + 15911. 1. 3. 42.0 23.0 1.0 1. 12.0 40.0 3. 6. 0.0 0. 1. + 15916. 1. 5. 22.0 2.5 1.0 3. 14.0 6.5 2. 2. 0.0 0. 1. + 15927. 1. 4. 27.0 6.0 1.0 2. 14.0 40.0 5. 2. 0.0 0. 1. + 15930. 1. 5. 22.0 2.5 0.0 4. 12.0 20.0 3. 4. 0.0 0. 1. + 15931. 1. 5. 22.0 2.5 0.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 15934. 1. 5. 27.0 9.0 2.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 15951. 1. 5. 32.0 13.0 0.0 2. 12.0 40.0 5. 4. 0.0 0. 1. + 15952. 1. 3. 27.0 2.5 0.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 15958. 1. 3. 27.0 6.0 0.0 2. 20.0 40.0 4. 4. 0.0 0. 1. + 15965. 1. 5. 22.0 0.5 0.0 3. 16.0 14.0 5. 2. 0.0 0. 1. + 15969. 1. 5. 22.0 2.5 0.0 2. 16.0 6.5 4. 2. 0.0 0. 1. + 15971. 1. 5. 27.0 6.0 1.0 1. 16.0 14.0 4. 5. 0.0 0. 1. + 15972. 1. 5. 27.0 2.5 0.0 1. 12.0 14.0 3. 5. 0.0 0. 1. + 15973. 1. 5. 27.0 9.0 2.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 15974. 1. 5. 22.0 2.5 0.0 2. 16.0 11.5 4. 4. 0.0 0. 1. + 15979. 1. 5. 42.0 16.5 4.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 15984. 1. 3. 27.0 9.0 2.0 3. 12.0 6.5 5. 4. 0.0 0. 1. + 15985. 1. 4. 27.0 13.0 3.0 3. 14.0 14.0 5. 5. 0.0 0. 1. + 15989. 1. 4. 22.0 2.5 0.0 2. 17.0 20.0 4. 5. 0.0 0. 1. + 15993. 1. 5. 27.0 9.0 0.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 16002. 1. 2. 22.0 2.5 1.0 2. 12.0 20.0 3. 3. 0.0 0. 1. + 16006. 1. 5. 22.0 2.5 0.0 2. 12.0 6.5 5. 1. 0.0 0. 1. + 16008. 1. 4. 22.0 2.5 0.0 3. 16.0 11.5 4. 3. 0.0 0. 1. + 16010. 1. 5. 27.0 6.0 2.0 4. 17.0 20.0 4. 2. 0.0 0. 1. + 16018. 1. 4. 22.0 2.5 0.0 3. 17.0 14.0 4. 4. 0.0 0. 1. + 16020. 1. 5. 37.0 16.5 3.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 16021. 1. 2. 37.0 13.0 0.0 2. 17.0 14.0 3. 5. 0.0 0. 1. + 16029. 1. 5. 27.0 2.5 0.0 3. 16.0 9.0 2. 4. 0.0 0. 1. + 16035. 1. 3. 27.0 9.0 2.0 1. 12.0 11.5 3. 5. 0.0 0. 1. + 16038. 1. 5. 37.0 16.5 2.0 3. 12.0 20.0 5. 5. 0.0 0. 1. + 16040. 1. 4. 22.0 2.5 0.0 3. 16.0 20.0 5. 1. 0.0 0. 1. + 16046. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 16048. 1. 5. 17.5 0.5 0.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 16050. 1. 5. 37.0 13.0 3.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 16051. 1. 5. 32.0 9.0 3.0 3. 14.0 11.5 4. 4. 0.0 0. 1. + 16052. 1. 4. 27.0 0.5 0.0 2. 20.0 20.0 4. 5. 0.0 0. 1. + 16054. 1. 5. 37.0 16.5 2.0 4. 16.0 20.0 4. 6. 0.0 0. 1. + 16059. 1. 2. 27.0 2.5 1.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 16061. 1. 4. 22.0 2.5 0.0 3. 17.0 6.5 3. 6. 0.0 0. 1. + 16062. 1. 4. 32.0 6.0 1.0 3. 14.0 14.0 4. 5. 0.0 0. 1. + 16066. 1. 4. 22.0 2.5 1.0 2. 12.0 9.0 3. 2. 0.0 0. 1. + 16068. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 5. 0.0 0. 1. + 16071. 1. 4. 27.0 2.5 1.0 1. 16.0 20.0 4. 5. 0.0 0. 1. + 16077. 1. 5. 42.0 23.0 3.0 4. 17.0 20.0 4. 5. 0.0 0. 1. + 16081. 1. 4. 37.0 16.5 2.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 16085. 1. 4. 42.0 13.0 0.0 3. 12.0 14.0 3. 5. 0.0 0. 1. + 16086. 1. 5. 22.0 2.5 0.0 2. 16.0 20.0 4. 5. 0.0 0. 1. + 16090. 1. 3. 22.0 0.5 0.0 2. 14.0 9.0 4. 4. 0.0 0. 1. + 16116. 1. 4. 32.0 6.0 1.0 1. 17.0 11.5 2. 4. 0.0 0. 1. + 16117. 1. 4. 27.0 2.5 0.0 2. 16.0 11.5 4. 2. 0.0 0. 1. + 16122. 1. 5. 22.0 2.5 0.0 2. 16.0 6.5 3. 1. 0.0 0. 1. + 16123. 1. 5. 37.0 16.5 5.5 3. 12.0 20.0 2. 6. 0.0 0. 1. + 16124. 1. 5. 22.0 2.5 0.0 2. 16.0 11.5 5. 2. 0.0 0. 1. + 16127. 1. 4. 27.0 0.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 16132. 1. 4. 22.0 2.5 0.0 2. 12.0 20.0 2. 2. 0.0 0. 1. + 16136. 1. 5. 32.0 6.0 2.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 16139. 1. 5. 42.0 23.0 2.0 3. 12.0 20.0 4. 4. 0.0 0. 1. + 16140. 1. 4. 32.0 6.0 2.0 3. 17.0 20.0 4. 2. 0.0 0. 1. + 16145. 1. 4. 27.0 2.5 0.0 2. 12.0 14.0 3. 2. 0.0 0. 1. + 16148. 1. 5. 32.0 13.0 1.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 16149. 1. 4. 37.0 16.5 2.0 2. 14.0 11.5 4. 2. 0.0 0. 1. + 16151. 1. 4. 27.0 0.5 0.0 1. 20.0 40.0 5. 5. 0.0 0. 1. + 16154. 1. 4. 17.5 0.5 0.0 2. 14.0 14.0 3. 3. 0.0 0. 1. + 16155. 1. 5. 32.0 16.5 3.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 16156. 1. 4. 37.0 16.5 3.0 2. 16.0 40.0 4. 6. 0.0 0. 1. + 16160. 1. 4. 22.0 2.5 0.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 16167. 1. 5. 32.0 13.0 2.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 16173. 1. 5. 27.0 6.0 2.0 3. 17.0 20.0 4. 6. 0.0 0. 1. + 16185. 1. 4. 22.0 2.5 0.0 2. 12.0 6.5 2. 4. 0.0 0. 1. + 16188. 1. 3. 22.0 2.5 0.0 2. 16.0 11.5 4. 1. 0.0 0. 1. + 16194. 1. 4. 27.0 9.0 1.0 1. 12.0 20.0 2. 5. 0.0 0. 1. + 16198. 1. 5. 22.0 2.5 0.0 3. 12.0 14.0 3. 4. 0.0 0. 1. + 16199. 1. 5. 32.0 13.0 3.0 1. 17.0 20.0 4. 4. 0.0 0. 1. + 16203. 1. 5. 22.0 0.5 0.0 2. 16.0 14.0 4. 4. 0.0 0. 1. + 16204. 1. 5. 32.0 13.0 2.0 4. 14.0 11.5 3. 4. 0.0 0. 1. + 16211. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 16218. 1. 5. 32.0 9.0 1.0 2. 17.0 14.0 2. 4. 0.0 0. 1. + 16223. 1. 5. 42.0 23.0 5.5 2. 12.0 20.0 3. 5. 0.0 0. 1. + 16227. 1. 2. 32.0 2.5 1.0 3. 20.0 20.0 6. 5. 0.0 0. 1. + 16228. 1. 5. 37.0 6.0 0.0 3. 20.0 40.0 4. 5. 0.0 0. 1. + 16229. 1. 4. 32.0 9.0 2.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 16233. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 16234. 1. 4. 22.0 2.5 0.0 1. 12.0 11.5 3. 2. 0.0 0. 1. + 16239. 1. 5. 27.0 2.5 0.0 2. 20.0 40.0 6. 6. 0.0 0. 1. + 16245. 1. 4. 32.0 13.0 2.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 16247. 1. 5. 17.5 2.5 1.0 3. 12.0 11.5 2. 1. 0.0 0. 1. + 16250. 1. 5. 32.0 16.5 3.0 3. 12.0 11.5 5. 5. 0.0 0. 1. + 16253. 1. 4. 27.0 6.0 0.0 3. 16.0 40.0 4. 4. 0.0 0. 1. + 16254. 1. 5. 37.0 16.5 2.0 2. 12.0 20.0 5. 5. 0.0 0. 1. + 16258. 1. 3. 27.0 2.5 1.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 16267. 1. 5. 27.0 6.0 0.0 1. 16.0 11.5 2. 4. 0.0 0. 1. + 16269. 1. 5. 37.0 23.0 3.0 3. 12.0 14.0 2. 4. 0.0 0. 1. + 16279. 1. 4. 27.0 2.5 1.0 3. 14.0 11.5 2. 2. 0.0 0. 1. + 16283. 1. 5. 22.0 2.5 0.0 2. 12.0 20.0 3. 6. 0.0 0. 1. + 16292. 1. 5. 22.0 2.5 0.0 1. 14.0 11.5 4. 4. 0.0 0. 1. + 16294. 1. 4. 22.0 6.0 2.0 1. 16.0 20.0 3. 4. 0.0 0. 1. + 16295. 1. 5. 22.0 0.5 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 16297. 1. 2. 22.0 2.5 1.0 3. 12.0 9.0 3. 4. 0.0 0. 1. + 16298. 1. 5. 22.0 0.5 0.0 2. 20.0 11.5 3. 4. 0.0 0. 1. + 16301. 1. 5. 32.0 2.5 0.0 2. 20.0 40.0 4. 4. 0.0 0. 1. + 16308. 1. 4. 27.0 2.5 1.0 2. 12.0 11.5 3. 1. 0.0 0. 1. + 16310. 1. 5. 22.0 2.5 0.0 3. 12.0 11.5 5. 2. 0.0 0. 1. + 16316. 1. 3. 42.0 13.0 0.0 4. 20.0 40.0 2. 2. 0.0 0. 1. + 16318. 1. 5. 27.0 2.5 1.0 1. 14.0 40.0 5. 4. 0.0 0. 1. + 16321. 1. 5. 27.0 13.0 2.0 4. 12.0 40.0 3. 6. 0.0 0. 1. + 16323. 1. 4. 27.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 16325. 1. 4. 32.0 13.0 2.0 3. 12.0 14.0 2. 4. 0.0 0. 1. + 16327. 1. 4. 27.0 6.0 0.0 2. 20.0 40.0 4. 6. 0.0 0. 1. + 16328. 1. 5. 32.0 6.0 0.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 16329. 1. 5. 22.0 0.5 0.0 2. 12.0 20.0 3. 2. 0.0 0. 1. + 16338. 1. 4. 27.0 9.0 1.0 1. 16.0 20.0 4. 4. 0.0 0. 1. + 16345. 1. 5. 27.0 0.5 0.0 2. 16.0 40.0 3. 5. 0.0 0. 1. + 16351. 1. 4. 22.0 0.5 0.0 2. 14.0 20.0 4. 5. 0.0 0. 1. + 16355. 1. 4. 22.0 6.0 1.0 2. 14.0 14.0 5. 5. 0.0 0. 1. + 16360. 1. 3. 22.0 2.5 2.0 1. 12.0 11.5 3. 4. 0.0 0. 1. + 16361. 1. 3. 42.0 13.0 2.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 16366. 1. 5. 27.0 6.0 3.0 2. 14.0 14.0 2. 5. 0.0 0. 1. + 16380. 1. 4. 27.0 6.0 2.0 1. 12.0 11.5 4. 2. 0.0 0. 1. + 16382. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 1. 4. 0.0 0. 1. + 16383. 1. 5. 27.0 2.5 0.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 16385. 1. 5. 27.0 2.5 2.0 2. 17.0 40.0 4. 5. 0.0 0. 1. + 16388. 1. 3. 22.0 2.5 0.0 3. 14.0 11.5 4. 5. 0.0 0. 1. + 16400. 1. 4. 27.0 6.0 0.0 3. 12.0 6.5 3. 4. 0.0 0. 1. + 16401. 1. 2. 27.0 6.0 2.0 2. 16.0 20.0 2. 6. 0.0 0. 1. + 16402. 1. 4. 32.0 16.5 2.0 2. 17.0 14.0 4. 3. 0.0 0. 1. + 16403. 1. 4. 22.0 2.5 1.0 3. 17.0 20.0 4. 2. 0.0 0. 1. + 16407. 1. 5. 22.0 2.5 0.0 2. 12.0 14.0 3. 5. 0.0 0. 1. + 16408. 1. 3. 22.0 2.5 1.0 3. 12.0 9.0 3. 4. 0.0 0. 1. + 16409. 1. 4. 22.0 2.5 0.0 2. 12.0 9.0 3. 4. 0.0 0. 1. + 16412. 1. 4. 22.0 0.5 0.0 3. 14.0 40.0 5. 4. 0.0 0. 1. + 16414. 1. 3. 32.0 13.0 2.0 2. 20.0 40.0 4. 4. 0.0 0. 1. + 16416. 1. 5. 17.5 2.5 0.0 1. 17.0 20.0 4. 4. 0.0 0. 1. + 16417. 1. 4. 22.0 2.5 0.0 3. 16.0 14.0 4. 4. 0.0 0. 1. + 16420. 1. 3. 27.0 2.5 0.0 1. 14.0 40.0 3. 2. 0.0 0. 1. + 16425. 1. 5. 42.0 13.0 0.0 4. 12.0 40.0 5. 5. 0.0 0. 1. + 16436. 1. 5. 32.0 16.5 3.0 4. 14.0 14.0 3. 2. 0.0 0. 1. + 16438. 1. 5. 22.0 2.5 0.0 3. 14.0 14.0 4. 5. 0.0 0. 1. + 16440. 1. 5. 22.0 0.5 0.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 16442. 1. 1. 32.0 16.5 4.0 3. 12.0 20.0 2. 5. 0.0 0. 1. + 16444. 1. 5. 32.0 16.5 1.0 1. 20.0 40.0 6. 6. 0.0 0. 1. + 16445. 1. 3. 27.0 9.0 0.0 3. 14.0 20.0 3. 6. 0.0 0. 1. + 16448. 1. 2. 27.0 0.5 0.0 2. 14.0 9.0 3. 4. 0.0 0. 1. + 16451. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 4. 6. 0.0 0. 1. + 16468. 1. 4. 37.0 13.0 2.0 3. 16.0 20.0 4. 3. 0.0 0. 1. + 16472. 1. 4. 42.0 16.5 2.0 4. 12.0 9.0 2. 4. 0.0 0. 1. + 16474. 1. 4. 42.0 23.0 4.0 4. 16.0 20.0 4. 4. 0.0 0. 1. + 16475. 1. 3. 17.5 0.5 1.0 2. 12.0 9.0 3. 2. 0.0 0. 1. + 16479. 1. 5. 27.0 2.5 1.0 3. 16.0 14.0 4. 4. 0.0 0. 1. + 16487. 1. 5. 32.0 16.5 2.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 16491. 1. 5. 42.0 23.0 5.5 4. 14.0 40.0 4. 4. 0.0 0. 1. + 16500. 1. 5. 37.0 16.5 3.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 16502. 1. 5. 22.0 2.5 1.0 1. 14.0 11.5 2. 5. 0.0 0. 1. + 16503. 1. 5. 27.0 2.5 0.0 2. 17.0 20.0 4. 4. 0.0 0. 1. + 16533. 1. 5. 27.0 6.0 2.0 1. 14.0 11.5 2. 5. 0.0 0. 1. + 16535. 1. 5. 27.0 9.0 3.0 3. 12.0 11.5 2. 2. 0.0 0. 1. + 16540. 1. 5. 32.0 9.0 2.0 4. 20.0 14.0 2. 4. 0.0 0. 1. + 16550. 1. 3. 27.0 6.0 1.0 2. 14.0 14.0 1. 4. 0.0 0. 1. + 16551. 1. 4. 22.0 0.5 0.0 2. 12.0 14.0 2. 2. 0.0 0. 1. + 16553. 1. 4. 22.0 6.0 1.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 16558. 1. 4. 22.0 0.5 0.0 3. 14.0 6.5 3. 2. 0.0 0. 1. + 16561. 1. 5. 32.0 16.5 2.0 3. 14.0 40.0 3. 2. 0.0 0. 1. + 16562. 1. 5. 42.0 23.0 2.0 1. 20.0 40.0 4. 5. 0.0 0. 1. + 16563. 1. 5. 37.0 16.5 3.0 3. 17.0 40.0 4. 6. 0.0 0. 1. + 16565. 1. 4. 32.0 13.0 1.0 4. 17.0 6.5 4. 1. 0.0 0. 1. + 16567. 1. 5. 42.0 23.0 5.5 3. 12.0 40.0 5. 5. 0.0 0. 1. + 16568. 1. 5. 32.0 13.0 0.0 2. 14.0 20.0 5. 4. 0.0 0. 1. + 16569. 1. 5. 22.0 2.5 0.0 3. 14.0 9.0 4. 5. 0.0 0. 1. + 16572. 1. 1. 27.0 6.0 3.0 1. 14.0 20.0 2. 6. 0.0 0. 1. + 16573. 1. 4. 27.0 13.0 3.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 16574. 1. 4. 37.0 6.0 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 16575. 1. 5. 22.0 2.5 1.0 1. 14.0 9.0 2. 2. 0.0 0. 1. + 16578. 1. 5. 22.0 2.5 0.0 4. 12.0 14.0 3. 4. 0.0 0. 1. + 16583. 1. 5. 22.0 2.5 0.0 3. 14.0 6.5 4. 2. 0.0 0. 1. + 16585. 1. 5. 37.0 16.5 2.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 16586. 1. 5. 22.0 6.0 2.0 2. 12.0 14.0 3. 5. 0.0 0. 1. + 16587. 1. 5. 42.0 23.0 3.0 4. 16.0 20.0 4. 6. 0.0 0. 1. + 16597. 1. 4. 32.0 13.0 4.0 4. 12.0 14.0 3. 4. 0.0 0. 1. + 16602. 1. 5. 22.0 0.5 0.0 1. 14.0 20.0 3. 3. 0.0 0. 1. + 16606. 1. 4. 22.0 2.5 0.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 16611. 1. 4. 27.0 6.0 0.0 1. 16.0 20.0 4. 6. 0.0 0. 1. + 16623. 1. 4. 32.0 13.0 3.0 2. 12.0 20.0 2. 6. 0.0 0. 1. + 16624. 1. 4. 22.0 2.5 1.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 16632. 1. 4. 22.0 0.5 0.0 1. 16.0 11.5 3. 5. 0.0 0. 1. + 16635. 1. 4. 32.0 13.0 2.0 2. 12.0 11.5 2. 5. 0.0 0. 1. + 16636. 1. 4. 17.5 2.5 1.0 1. 12.0 6.5 2. 4. 0.0 0. 1. + 16641. 1. 3. 27.0 6.0 0.0 1. 17.0 14.0 2. 6. 0.0 0. 1. + 16645. 1. 4. 32.0 16.5 1.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 16649. 1. 5. 27.0 0.5 0.0 2. 16.0 11.5 3. 2. 0.0 0. 1. + 16652. 1. 4. 27.0 9.0 2.0 4. 20.0 40.0 4. 4. 0.0 0. 1. + 16655. 1. 3. 42.0 23.0 2.0 3. 12.0 14.0 3. 5. 0.0 0. 1. + 16656. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 4. 2. 0.0 0. 1. + 16660. 1. 5. 32.0 13.0 3.0 4. 20.0 20.0 4. 4. 0.0 0. 1. + 16662. 1. 2. 32.0 6.0 2.0 2. 17.0 14.0 3. 4. 0.0 0. 1. + 16663. 1. 5. 22.0 2.5 0.0 3. 14.0 9.0 2. 2. 0.0 0. 1. + 16669. 1. 5. 27.0 9.0 3.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 16675. 1. 4. 27.0 2.5 1.0 4. 20.0 9.0 1. 1. 0.0 0. 1. + 16683. 1. 4. 27.0 6.0 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 16684. 1. 5. 22.0 2.5 0.0 3. 12.0 20.0 3. 6. 0.0 0. 1. + 16685. 1. 4. 32.0 16.5 5.5 3. 12.0 9.0 2. 2. 0.0 0. 1. + 16689. 1. 4. 32.0 13.0 2.0 4. 16.0 14.0 2. 4. 0.0 0. 1. + 16693. 1. 5. 32.0 13.0 5.5 3. 14.0 20.0 2. 2. 0.0 0. 1. + 16696. 1. 5. 27.0 9.0 3.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 16697. 1. 4. 27.0 2.5 0.0 2. 14.0 40.0 3. 2. 0.0 0. 1. + 16698. 1. 4. 42.0 23.0 4.0 1. 17.0 40.0 4. 4. 0.0 0. 1. + 16699. 1. 3. 27.0 9.0 2.0 3. 17.0 11.5 4. 4. 0.0 0. 1. + 16701. 1. 5. 27.0 6.0 1.0 3. 16.0 20.0 4. 3. 0.0 0. 1. + 16705. 1. 5. 27.0 2.5 0.0 1. 14.0 20.0 3. 5. 0.0 0. 1. + 16707. 1. 5. 42.0 23.0 4.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 16708. 1. 4. 22.0 2.5 1.0 2. 12.0 20.0 2. 4. 0.0 0. 1. + 16728. 1. 4. 37.0 16.5 2.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 16730. 1. 5. 22.0 2.5 0.0 3. 16.0 9.0 3. 6. 0.0 0. 1. + 16745. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 16747. 1. 5. 22.0 2.5 0.0 4. 17.0 20.0 4. 5. 0.0 0. 1. + 16749. 1. 5. 22.0 2.5 0.0 3. 16.0 20.0 4. 6. 0.0 0. 1. + 16751. 1. 3. 22.0 2.5 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 16753. 1. 4. 27.0 9.0 0.0 2. 14.0 40.0 5. 5. 0.0 0. 1. + 16755. 1. 4. 32.0 13.0 2.0 3. 14.0 20.0 3. 6. 0.0 0. 1. + 16757. 1. 5. 27.0 6.0 2.0 4. 20.0 6.5 6. 6. 0.0 0. 1. + 16758. 1. 5. 27.0 9.0 2.0 3. 16.0 20.0 4. 6. 0.0 0. 1. + 16764. 1. 5. 42.0 23.0 2.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 16772. 1. 4. 27.0 2.5 0.0 2. 12.0 14.0 3. 5. 0.0 0. 1. + 16776. 1. 5. 22.0 2.5 0.0 3. 14.0 9.0 3. 2. 0.0 0. 1. + 16787. 1. 4. 22.0 2.5 0.0 3. 12.0 9.0 2. 2. 0.0 0. 1. + 16796. 1. 4. 32.0 9.0 1.0 2. 12.0 20.0 2. 5. 0.0 0. 1. + 16806. 1. 4. 27.0 6.0 0.0 2. 14.0 20.0 3. 2. 0.0 0. 1. + 16807. 1. 5. 22.0 2.5 1.0 1. 12.0 6.5 3. 2. 0.0 0. 1. + 16808. 1. 5. 42.0 2.5 0.0 4. 12.0 20.0 5. 4. 0.0 0. 1. + 16813. 1. 5. 22.0 2.5 0.0 1. 14.0 14.0 4. 3. 0.0 0. 1. + 16816. 1. 4. 42.0 23.0 2.0 4. 20.0 20.0 2. 2. 0.0 0. 1. + 16822. 1. 4. 42.0 23.0 3.0 3. 12.0 20.0 4. 4. 0.0 0. 1. + 16825. 1. 5. 22.0 2.5 0.0 1. 16.0 20.0 4. 2. 0.0 0. 1. + 16831. 1. 5. 32.0 16.5 2.0 2. 12.0 11.5 3. 5. 0.0 0. 1. + 16833. 1. 5. 17.5 0.5 0.0 2. 12.0 20.0 3. 3. 0.0 0. 1. + 16840. 1. 4. 22.0 2.5 1.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 16841. 1. 5. 27.0 2.5 0.0 4. 17.0 20.0 4. 3. 0.0 0. 1. + 16842. 1. 4. 22.0 2.5 0.0 2. 14.0 14.0 3. 4. 0.0 0. 1. + 16854. 1. 5. 22.0 0.5 0.0 3. 16.0 20.0 2. 2. 0.0 0. 1. + 16856. 1. 5. 22.0 2.5 1.0 4. 14.0 4.0 3. 3. 0.0 0. 1. + 16857. 1. 5. 42.0 23.0 3.0 4. 14.0 20.0 3. 6. 0.0 0. 1. + 16859. 1. 5. 27.0 6.0 0.0 3. 12.0 14.0 2. 2. 0.0 0. 1. + 16863. 1. 4. 27.0 2.5 0.0 2. 14.0 20.0 4. 4. 0.0 0. 1. + 16865. 1. 4. 22.0 2.5 0.0 3. 12.0 11.5 3. 2. 0.0 0. 1. + 16866. 1. 5. 42.0 23.0 3.0 3. 14.0 11.5 3. 3. 0.0 0. 1. + 16870. 1. 4. 42.0 16.5 3.0 3. 14.0 20.0 2. 2. 0.0 0. 1. + 16871. 1. 5. 32.0 13.0 2.0 2. 16.0 14.0 3. 4. 0.0 0. 1. + 16872. 1. 5. 22.0 2.5 0.0 3. 14.0 20.0 2. 2. 0.0 0. 1. + 16874. 1. 4. 22.0 6.0 2.0 3. 12.0 11.5 2. 4. 0.0 0. 1. + 16880. 1. 4. 27.0 6.0 0.0 3. 14.0 20.0 3. 3. 0.0 0. 1. + 16882. 1. 3. 32.0 6.0 1.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 16885. 1. 5. 37.0 16.5 3.0 4. 12.0 20.0 6. 5. 0.0 0. 1. + 16887. 1. 4. 27.0 9.0 2.0 2. 14.0 14.0 2. 2. 0.0 0. 1. + 16889. 1. 4. 22.0 2.5 0.0 2. 12.0 11.5 3. 5. 0.0 0. 1. + 16890. 1. 5. 27.0 2.5 0.0 3. 20.0 40.0 4. 5. 0.0 0. 1. + 16892. 1. 4. 32.0 6.0 0.0 3. 12.0 14.0 5. 2. 0.0 0. 1. + 16893. 1. 4. 22.0 2.5 0.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 16896. 1. 5. 37.0 16.5 4.0 4. 14.0 11.5 3. 6. 0.0 0. 1. + 16897. 1. 3. 37.0 16.5 4.0 2. 12.0 11.5 2. 4. 0.0 0. 1. + 16905. 1. 2. 22.0 9.0 2.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 16908. 1. 4. 27.0 6.0 0.0 4. 16.0 11.5 5. 4. 0.0 0. 1. + 16912. 1. 5. 27.0 13.0 3.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 16921. 1. 5. 27.0 6.0 1.0 4. 20.0 20.0 4. 4. 0.0 0. 1. + 16929. 1. 5. 27.0 6.0 1.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 16932. 1. 5. 32.0 6.0 1.0 4. 20.0 14.0 6. 6. 0.0 0. 1. + 16938. 1. 5. 27.0 6.0 2.0 2. 14.0 11.5 4. 4. 0.0 0. 1. + 16946. 1. 5. 27.0 6.0 2.0 2. 14.0 11.5 4. 6. 0.0 0. 1. + 16948. 1. 3. 42.0 23.0 4.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 16949. 1. 4. 22.0 2.5 0.0 3. 14.0 9.0 3. 3. 0.0 0. 1. + 16961. 1. 3. 32.0 13.0 2.0 2. 16.0 14.0 4. 5. 0.0 0. 1. + 16962. 1. 4. 42.0 23.0 3.0 4. 12.0 20.0 2. 5. 0.0 0. 1. + 16964. 1. 5. 27.0 6.0 0.0 4. 14.0 11.5 5. 2. 0.0 0. 1. + 16965. 1. 4. 27.0 9.0 3.0 2. 14.0 11.5 3. 1. 0.0 0. 1. + 16967. 1. 5. 27.0 9.0 2.0 2. 14.0 20.0 3. 6. 0.0 0. 1. + 16969. 1. 5. 32.0 2.5 0.0 3. 12.0 20.0 5. 5. 0.0 0. 1. + 16975. 1. 5. 27.0 6.0 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 16977. 1. 4. 27.0 6.0 2.0 3. 16.0 20.0 4. 2. 0.0 0. 1. + 16978. 1. 5. 22.0 2.5 1.0 3. 14.0 20.0 3. 2. 0.0 0. 1. + 16979. 1. 5. 42.0 23.0 3.0 2. 12.0 14.0 4. 4. 0.0 0. 1. + 16982. 1. 5. 22.0 2.5 0.0 2. 17.0 11.5 4. 1. 0.0 0. 1. + 16984. 1. 4. 27.0 2.5 1.0 2. 14.0 14.0 3. 3. 0.0 0. 1. + 16989. 1. 4. 27.0 6.0 2.0 1. 14.0 20.0 5. 5. 0.0 0. 1. + 16992. 1. 5. 17.5 0.5 0.0 3. 12.0 9.0 3. 2. 0.0 0. 1. + 16994. 1. 4. 32.0 9.0 1.0 3. 12.0 20.0 3. 2. 0.0 0. 1. + 16997. 1. 5. 42.0 23.0 3.0 2. 16.0 20.0 4. 6. 0.0 0. 1. + 16998. 1. 4. 22.0 2.5 1.0 3. 14.0 11.5 2. 4. 0.0 0. 1. + 17003. 1. 5. 32.0 6.0 1.0 4. 17.0 14.0 2. 2. 0.0 0. 1. + 17006. 1. 4. 22.0 2.5 1.0 3. 14.0 14.0 3. 5. 0.0 0. 1. + 17007. 1. 5. 27.0 0.5 0.0 2. 14.0 9.0 6. 4. 0.0 0. 1. + 17009. 1. 3. 42.0 23.0 2.0 2. 14.0 20.0 3. 6. 0.0 0. 1. + 17010. 1. 5. 32.0 13.0 2.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 17015. 1. 4. 42.0 23.0 5.5 2. 12.0 11.5 2. 4. 0.0 0. 1. + 17016. 1. 4. 32.0 9.0 2.0 3. 14.0 20.0 5. 5. 0.0 0. 1. + 17024. 1. 5. 32.0 16.5 2.0 3. 12.0 40.0 2. 3. 0.0 0. 1. + 17028. 1. 5. 22.0 6.0 0.0 1. 14.0 11.5 5. 4. 0.0 0. 1. + 17033. 1. 5. 42.0 16.5 1.0 2. 12.0 20.0 5. 3. 0.0 0. 1. + 17041. 1. 4. 42.0 23.0 2.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 17044. 1. 2. 42.0 23.0 4.0 2. 14.0 40.0 5. 6. 0.0 0. 1. + 17045. 1. 4. 32.0 9.0 2.0 2. 14.0 20.0 3. 2. 0.0 0. 1. + 17046. 1. 5. 42.0 16.5 1.0 4. 12.0 14.0 4. 5. 0.0 0. 1. + 17051. 1. 4. 32.0 13.0 3.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 17052. 1. 4. 22.0 2.5 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 17053. 1. 5. 22.0 2.5 0.0 3. 14.0 11.5 4. 4. 0.0 0. 1. + 17054. 1. 5. 27.0 2.5 0.0 2. 20.0 6.5 1. 6. 0.0 0. 1. + 17062. 1. 5. 27.0 6.0 0.0 3. 16.0 14.0 4. 2. 0.0 0. 1. + 17069. 1. 4. 32.0 13.0 2.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 17075. 1. 4. 27.0 6.0 0.0 2. 16.0 20.0 4. 6. 0.0 0. 1. + 17080. 1. 5. 17.5 0.5 0.0 1. 14.0 4.0 3. 2. 0.0 0. 1. + 17087. 1. 5. 32.0 16.5 2.0 4. 12.0 9.0 3. 4. 0.0 0. 1. + 17094. 1. 5. 17.5 0.5 0.0 3. 12.0 9.0 6. 2. 0.0 0. 1. + 17101. 1. 4. 22.0 6.0 0.0 2. 14.0 14.0 3. 5. 0.0 0. 1. + 17106. 1. 5. 27.0 2.5 0.0 4. 20.0 20.0 4. 5. 0.0 0. 1. + 17107. 1. 5. 42.0 23.0 1.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 17108. 1. 3. 27.0 9.0 3.0 4. 12.0 11.5 2. 2. 0.0 0. 1. + 17112. 1. 5. 37.0 16.5 4.0 4. 14.0 20.0 3. 4. 0.0 0. 1. + 17116. 1. 4. 22.0 2.5 0.0 3. 14.0 14.0 5. 4. 0.0 0. 1. + 17122. 1. 5. 32.0 9.0 2.0 4. 12.0 11.5 3. 4. 0.0 0. 1. + 17137. 1. 5. 22.0 2.5 2.0 3. 17.0 11.5 4. 4. 0.0 0. 1. + 17144. 1. 5. 32.0 13.0 0.0 4. 12.0 20.0 3. 4. 0.0 0. 1. + 17145. 1. 3. 42.0 23.0 4.0 3. 12.0 20.0 3. 3. 0.0 0. 1. + 17146. 1. 4. 27.0 6.0 2.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 17148. 1. 4. 22.0 2.5 0.0 2. 16.0 20.0 5. 2. 0.0 0. 1. + 17151. 1. 4. 27.0 9.0 2.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 17156. 1. 5. 27.0 0.5 0.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 17159. 1. 5. 27.0 0.5 0.0 4. 17.0 14.0 4. 2. 0.0 0. 1. + 17160. 1. 5. 32.0 13.0 3.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 17161. 1. 5. 22.0 0.5 1.0 3. 14.0 20.0 4. 4. 0.0 0. 1. + 17167. 1. 5. 22.0 2.5 0.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 17171. 1. 5. 22.0 2.5 0.0 2. 12.0 9.0 2. 4. 0.0 0. 1. + 17172. 1. 4. 22.0 2.5 0.0 1. 12.0 6.5 3. 3. 0.0 0. 1. + 17174. 1. 4. 27.0 6.0 1.0 1. 14.0 11.5 3. 4. 0.0 0. 1. + 17186. 1. 5. 37.0 23.0 4.0 3. 16.0 20.0 5. 5. 0.0 0. 1. + 17187. 1. 5. 22.0 2.5 0.0 2. 16.0 20.0 4. 4. 0.0 0. 1. + 17190. 1. 3. 37.0 16.5 1.0 2. 20.0 40.0 4. 4. 0.0 0. 1. + 17207. 1. 4. 27.0 2.5 1.0 3. 14.0 9.0 4. 2. 0.0 0. 1. + 17211. 1. 5. 27.0 2.5 0.0 2. 17.0 20.0 4. 4. 0.0 0. 1. + 17220. 1. 5. 42.0 23.0 3.0 3. 17.0 20.0 4. 2. 0.0 0. 1. + 17221. 1. 5. 32.0 9.0 2.0 3. 14.0 14.0 4. 3. 0.0 0. 1. + 17225. 1. 5. 22.0 0.5 0.0 4. 14.0 20.0 3. 5. 0.0 0. 1. + 17227. 1. 3. 27.0 6.0 1.0 2. 12.0 11.5 5. 4. 0.0 0. 1. + 17230. 1. 3. 27.0 9.0 1.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 17232. 1. 5. 22.0 2.5 0.0 3. 16.0 11.5 5. 4. 0.0 0. 1. + 17241. 1. 4. 32.0 9.0 3.0 4. 16.0 20.0 4. 4. 0.0 0. 1. + 17243. 1. 2. 27.0 6.0 1.0 4. 20.0 20.0 5. 6. 0.0 0. 1. + 17248. 1. 5. 22.0 2.5 0.0 3. 14.0 11.5 4. 2. 0.0 0. 1. + 17249. 1. 5. 27.0 2.5 0.0 3. 16.0 20.0 4. 5. 0.0 0. 1. + 17251. 1. 4. 32.0 13.0 3.0 2. 12.0 11.5 2. 5. 0.0 0. 1. + 17256. 1. 4. 22.0 0.5 0.0 1. 14.0 14.0 3. 5. 0.0 0. 1. + 17257. 1. 5. 27.0 9.0 1.0 2. 12.0 20.0 3. 5. 0.0 0. 1. + 17258. 1. 5. 37.0 16.5 3.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 17264. 1. 5. 22.0 2.5 0.0 3. 16.0 14.0 4. 5. 0.0 0. 1. + 17266. 1. 4. 22.0 2.5 0.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 17267. 1. 4. 42.0 23.0 1.0 2. 12.0 20.0 3. 3. 0.0 0. 1. + 17268. 1. 1. 27.0 6.0 1.0 2. 16.0 20.0 3. 5. 0.0 0. 1. + 17276. 1. 5. 27.0 6.0 1.0 3. 20.0 20.0 4. 5. 0.0 0. 1. + 17277. 1. 5. 27.0 2.5 0.0 4. 14.0 11.5 3. 4. 0.0 0. 1. + 17278. 1. 5. 27.0 2.5 0.0 3. 14.0 9.0 3. 4. 0.0 0. 1. + 17280. 1. 5. 32.0 9.0 0.0 2. 12.0 9.0 4. 5. 0.0 0. 1. + 17282. 1. 5. 22.0 2.5 0.0 3. 17.0 20.0 5. 5. 0.0 0. 1. + 17283. 1. 2. 37.0 16.5 3.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 17285. 1. 5. 27.0 6.0 0.0 3. 17.0 20.0 4. 6. 0.0 0. 1. + 17286. 1. 4. 27.0 6.0 0.0 1. 12.0 20.0 3. 3. 0.0 0. 1. + 17299. 1. 4. 27.0 9.0 1.0 3. 16.0 11.5 3. 2. 0.0 0. 1. + 17301. 1. 5. 22.0 2.5 1.0 3. 12.0 11.5 5. 5. 0.0 0. 1. + 17305. 1. 4. 17.5 2.5 0.0 3. 14.0 6.5 3. 1. 0.0 0. 1. + 17307. 1. 5. 27.0 2.5 0.0 2. 16.0 14.0 4. 5. 0.0 0. 1. + 17314. 1. 4. 22.0 2.5 0.0 2. 12.0 6.5 3. 2. 0.0 0. 1. + 17316. 1. 5. 27.0 9.0 2.0 3. 12.0 20.0 2. 2. 0.0 0. 1. + 17318. 1. 4. 32.0 9.0 1.0 3. 17.0 11.5 3. 6. 0.0 0. 1. + 17319. 1. 4. 37.0 16.5 4.0 2. 14.0 11.5 4. 3. 0.0 0. 1. + 17327. 1. 4. 27.0 9.0 0.0 3. 14.0 11.5 2. 5. 0.0 0. 1. + 17335. 1. 5. 37.0 13.0 3.0 3. 20.0 40.0 4. 6. 0.0 0. 1. + 17338. 1. 4. 27.0 2.5 1.0 3. 16.0 9.0 4. 2. 0.0 0. 1. + 17346. 1. 5. 27.0 2.5 0.0 2. 14.0 40.0 4. 6. 0.0 0. 1. + 17349. 1. 4. 22.0 2.5 0.0 2. 12.0 9.0 3. 2. 0.0 0. 1. + 17354. 1. 4. 27.0 6.0 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 17356. 1. 4. 27.0 13.0 3.0 2. 12.0 14.0 3. 4. 0.0 0. 1. + 17357. 1. 4. 27.0 6.0 1.0 3. 14.0 14.0 5. 5. 0.0 0. 1. + 17359. 1. 5. 27.0 6.0 1.0 4. 16.0 11.5 4. 4. 0.0 0. 1. + 17362. 1. 3. 27.0 9.0 0.0 2. 14.0 20.0 3. 5. 0.0 0. 1. + 17363. 1. 4. 42.0 23.0 3.0 4. 14.0 40.0 3. 3. 0.0 0. 1. + 17364. 1. 4. 32.0 13.0 2.0 2. 12.0 20.0 5. 5. 0.0 0. 1. + 17368. 1. 5. 27.0 6.0 0.0 4. 20.0 6.5 4. 1. 0.0 0. 1. + 17370. 1. 5. 37.0 23.0 4.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 17375. 1. 5. 22.0 2.5 0.0 2. 12.0 9.0 3. 4. 0.0 0. 1. + 17382. 1. 5. 22.0 2.5 1.0 4. 14.0 11.5 3. 4. 0.0 0. 1. + 17388. 1. 4. 22.0 2.5 0.0 3. 12.0 11.5 3. 4. 0.0 0. 1. + 17393. 1. 4. 17.5 2.5 0.0 2. 12.0 6.5 3. 4. 0.0 0. 1. + 17395. 1. 3. 22.0 2.5 1.0 3. 12.0 9.0 3. 4. 0.0 0. 1. + 17396. 1. 5. 17.5 0.5 0.0 4. 12.0 6.5 3. 2. 0.0 0. 1. + 17403. 1. 4. 37.0 23.0 3.0 4. 9.0 11.5 2. 2. 0.0 0. 1. + 17408. 1. 5. 42.0 23.0 4.0 2. 14.0 14.0 5. 4. 0.0 0. 1. + 17410. 1. 4. 32.0 16.5 2.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 17412. 1. 4. 22.0 2.5 2.0 3. 14.0 11.5 5. 4. 0.0 0. 1. + 17413. 1. 5. 17.5 0.5 0.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 17415. 1. 5. 37.0 16.5 3.0 4. 14.0 11.5 3. 4. 0.0 0. 1. + 17418. 1. 4. 27.0 9.0 1.0 3. 12.0 14.0 3. 3. 0.0 0. 1. + 17426. 1. 5. 37.0 16.5 3.0 2. 14.0 11.5 3. 3. 0.0 0. 1. + 17431. 1. 3. 42.0 13.0 2.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 17433. 1. 5. 37.0 23.0 4.0 4. 16.0 20.0 4. 6. 0.0 0. 1. + 17434. 1. 5. 37.0 23.0 1.0 3. 14.0 20.0 3. 5. 0.0 0. 1. + 17445. 1. 4. 42.0 23.0 3.0 3. 17.0 40.0 4. 2. 0.0 0. 1. + 17449. 1. 4. 27.0 6.0 1.0 3. 20.0 20.0 4. 4. 0.0 0. 1. + 17450. 1. 5. 32.0 9.0 0.0 4. 20.0 20.0 4. 6. 0.0 0. 1. + 17452. 1. 4. 27.0 2.5 0.0 4. 17.0 20.0 4. 4. 0.0 0. 1. + 17454. 1. 3. 17.5 2.5 0.0 3. 12.0 6.5 4. 4. 0.0 0. 1. + 17471. 1. 5. 22.0 2.5 0.0 3. 12.0 40.0 2. 2. 0.0 0. 1. + 17472. 1. 5. 37.0 13.0 3.0 1. 20.0 20.0 4. 5. 0.0 0. 1. + 17473. 1. 5. 27.0 16.5 2.0 3. 12.0 9.0 4. 4. 0.0 0. 1. + 17474. 1. 4. 22.0 2.5 1.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 17506. 1. 4. 42.0 16.5 4.0 3. 9.0 11.5 2. 2. 0.0 0. 1. + 17508. 1. 4. 22.0 2.5 0.0 2. 14.0 9.0 3. 5. 0.0 0. 1. + 17509. 1. 4. 42.0 23.0 2.0 3. 14.0 20.0 4. 2. 0.0 0. 1. + 17517. 1. 5. 32.0 13.0 2.0 2. 14.0 20.0 2. 6. 0.0 0. 1. + 17520. 1. 4. 32.0 13.0 2.0 3. 17.0 20.0 4. 5. 0.0 0. 1. + 17523. 1. 5. 22.0 2.5 1.0 1. 12.0 9.0 5. 1. 0.0 0. 1. + 17533. 1. 5. 22.0 2.5 0.0 4. 16.0 20.0 4. 2. 0.0 0. 1. + 17544. 1. 5. 37.0 9.0 0.0 3. 20.0 40.0 4. 6. 0.0 0. 1. + 17547. 1. 5. 42.0 23.0 2.0 3. 14.0 9.0 3. 5. 0.0 0. 1. + 17551. 1. 5. 32.0 9.0 2.0 3. 16.0 11.5 4. 4. 0.0 0. 1. + 17553. 1. 5. 22.0 6.0 0.0 1. 12.0 14.0 3. 2. 0.0 0. 1. + 17558. 1. 4. 27.0 6.0 2.0 2. 12.0 9.0 2. 2. 0.0 0. 1. + 17564. 1. 4. 22.0 2.5 0.0 2. 12.0 11.5 3. 4. 0.0 0. 1. + 17569. 1. 5. 27.0 2.5 0.0 4. 16.0 6.5 4. 4. 0.0 0. 1. + 17573. 1. 5. 32.0 16.5 3.0 4. 14.0 20.0 2. 4. 0.0 0. 1. + 17574. 1. 4. 37.0 16.5 2.0 1. 12.0 20.0 3. 4. 0.0 0. 1. + 17575. 1. 5. 22.0 2.5 0.0 3. 12.0 9.0 3. 3. 0.0 0. 1. + 17578. 1. 4. 37.0 16.5 4.0 2. 12.0 11.5 2. 2. 0.0 0. 1. + 17580. 1. 3. 27.0 9.0 1.0 3. 17.0 14.0 4. 1. 0.0 0. 1. + 17585. 1. 5. 22.0 2.5 0.0 1. 17.0 9.0 2. 2. 0.0 0. 1. + 17596. 1. 5. 22.0 2.5 0.0 1. 14.0 9.0 3. 4. 0.0 0. 1. + 17598. 1. 5. 22.0 2.5 0.0 2. 16.0 14.0 4. 5. 0.0 0. 1. + 17602. 1. 5. 27.0 6.0 0.0 2. 16.0 20.0 3. 5. 0.0 0. 1. + 17608. 1. 4. 22.0 2.5 0.0 3. 14.0 11.5 5. 4. 0.0 0. 1. + 17616. 1. 5. 27.0 2.5 0.0 1. 17.0 11.5 4. 6. 0.0 0. 1. + 17620. 1. 5. 42.0 23.0 1.0 4. 20.0 40.0 4. 3. 0.0 0. 1. + 17625. 1. 4. 17.5 0.5 0.0 2. 14.0 4.0 3. 1. 0.0 0. 1. + 17627. 1. 5. 22.0 6.0 1.0 3. 12.0 11.5 2. 3. 0.0 0. 1. + 17636. 1. 4. 22.0 6.0 2.0 2. 9.0 6.5 2. 3. 0.0 0. 1. + 17643. 1. 5. 27.0 2.5 0.0 4. 16.0 20.0 5. 4. 0.0 0. 1. + 17646. 1. 4. 22.0 2.5 1.0 2. 12.0 6.5 3. 2. 0.0 0. 1. + 17651. 1. 3. 32.0 2.5 0.0 4. 17.0 14.0 6. 6. 0.0 0. 1. + 17661. 1. 5. 37.0 16.5 3.0 4. 14.0 20.0 4. 6. 0.0 0. 1. + 17668. 1. 5. 32.0 13.0 4.0 2. 12.0 11.5 5. 1. 0.0 0. 1. + 17669. 1. 3. 42.0 23.0 3.0 4. 16.0 14.0 3. 5. 0.0 0. 1. + 17673. 1. 5. 27.0 2.5 0.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 17674. 1. 5. 32.0 2.5 1.0 3. 20.0 20.0 4. 4. 0.0 0. 1. + 17676. 1. 5. 27.0 9.0 2.0 3. 12.0 9.0 2. 4. 0.0 0. 1. + 17690. 1. 3. 27.0 2.5 0.0 2. 14.0 14.0 3. 3. 0.0 0. 1. + 17691. 1. 5. 17.5 2.5 1.0 2. 12.0 6.5 5. 2. 0.0 0. 1. + 17696. 1. 4. 37.0 16.5 3.0 2. 17.0 40.0 4. 5. 0.0 0. 1. + 17700. 1. 4. 27.0 2.5 1.0 3. 16.0 40.0 4. 6. 0.0 0. 1. + 17705. 1. 5. 22.0 2.5 1.0 3. 14.0 11.5 3. 5. 0.0 0. 1. + 17706. 1. 4. 27.0 2.5 0.0 1. 20.0 40.0 5. 5. 0.0 0. 1. + 17707. 1. 5. 22.0 2.5 0.0 3. 14.0 14.0 5. 5. 0.0 0. 1. + 17716. 1. 5. 42.0 23.0 5.5 3. 14.0 14.0 4. 4. 0.0 0. 1. + 17718. 1. 5. 42.0 23.0 4.0 3. 14.0 14.0 3. 2. 0.0 0. 1. + 17721. 1. 5. 37.0 13.0 2.0 2. 20.0 40.0 6. 6. 0.0 0. 1. + 17723. 1. 5. 27.0 13.0 2.0 3. 14.0 20.0 4. 5. 0.0 0. 1. + 17726. 1. 4. 27.0 13.0 2.0 2. 12.0 6.5 2. 2. 0.0 0. 1. + 17742. 1. 5. 37.0 23.0 3.0 2. 12.0 14.0 4. 4. 0.0 0. 1. + 17748. 1. 5. 22.0 2.5 0.0 2. 17.0 11.5 5. 3. 0.0 0. 1. + 17750. 1. 5. 27.0 6.0 1.0 2. 12.0 14.0 2. 4. 0.0 0. 1. + 17752. 1. 5. 22.0 2.5 0.0 2. 14.0 11.5 3. 4. 0.0 0. 1. + 17758. 1. 5. 37.0 13.0 2.0 3. 16.0 20.0 4. 4. 0.0 0. 1. + 17780. 1. 5. 27.0 6.0 0.0 2. 17.0 20.0 5. 6. 0.0 0. 1. + 17786. 1. 5. 27.0 0.5 0.0 3. 12.0 40.0 3. 4. 0.0 0. 1. + 17796. 1. 2. 37.0 16.5 3.0 1. 14.0 14.0 3. 2. 0.0 0. 1. + 17797. 1. 5. 37.0 23.0 2.0 3. 20.0 40.0 4. 4. 0.0 0. 1. + 17802. 1. 2. 32.0 9.0 2.0 4. 14.0 14.0 3. 5. 0.0 0. 1. + 17803. 1. 5. 32.0 13.0 2.0 4. 20.0 20.0 4. 5. 0.0 0. 1. + 17805. 1. 5. 22.0 2.5 1.0 4. 16.0 11.5 4. 5. 0.0 0. 1. + 17812. 1. 5. 22.0 2.5 0.0 3. 20.0 11.5 4. 4. 0.0 0. 1. + 17813. 1. 3. 37.0 13.0 3.0 2. 16.0 11.5 4. 3. 0.0 0. 1. + 17818. 1. 3. 17.5 2.5 1.0 1. 9.0 6.5 3. 3. 0.0 0. 1. + 17820. 1. 4. 27.0 2.5 0.0 2. 14.0 11.5 3. 1. 0.0 0. 1. + 17821. 1. 1. 27.0 6.0 1.0 3. 14.0 14.0 3. 4. 0.0 0. 1. + 17824. 1. 4. 27.0 6.0 2.0 2. 14.0 40.0 4. 5. 0.0 0. 1. + 17829. 1. 2. 42.0 23.0 2.0 2. 14.0 20.0 3. 4. 0.0 0. 1. + 17832. 1. 5. 32.0 13.0 2.0 3. 14.0 20.0 4. 6. 0.0 0. 1. + 17841. 1. 4. 22.0 2.5 1.0 3. 14.0 11.5 3. 4. 0.0 0. 1. + 17866. 1. 4. 27.0 2.5 0.0 1. 14.0 9.0 2. 5. 0.0 0. 1. + 17872. 1. 4. 22.0 2.5 0.0 3. 20.0 40.0 6. 6. 0.0 0. 1. + 17873. 1. 3. 37.0 2.5 0.0 3. 12.0 11.5 3. 3. 0.0 0. 1. + 17876. 1. 5. 27.0 2.5 0.0 3. 17.0 20.0 4. 4. 0.0 0. 1. + 17878. 1. 5. 27.0 2.5 0.0 3. 16.0 20.0 3. 5. 0.0 0. 1. + 17879. 1. 4. 27.0 6.0 1.0 2. 20.0 20.0 4. 2. 0.0 0. 1. + 17880. 1. 4. 27.0 9.0 2.0 2. 14.0 20.0 4. 4. 0.0 0. 1. + 17892. 1. 4. 27.0 2.5 0.0 3. 17.0 11.5 4. 4. 0.0 0. 1. + 17895. 1. 5. 27.0 6.0 0.0 4. 16.0 14.0 4. 5. 0.0 0. 1. + 17901. 1. 5. 42.0 23.0 5.5 3. 12.0 14.0 3. 2. 0.0 0. 1. + 17905. 1. 5. 22.0 2.5 0.0 3. 16.0 9.0 4. 1. 0.0 0. 1. + 17914. 1. 5. 22.0 0.5 0.0 3. 14.0 9.0 2. 2. 0.0 0. 1. + 17916. 1. 4. 22.0 2.5 1.0 3. 14.0 9.0 2. 4. 0.0 0. 1. + 17925. 1. 5. 22.0 2.5 1.0 4. 12.0 6.5 3. 4. 0.0 0. 1. + 17928. 1. 5. 42.0 23.0 4.0 3. 14.0 14.0 5. 4. 0.0 0. 1. + 17929. 1. 5. 27.0 6.0 0.0 4. 14.0 6.5 4. 4. 0.0 0. 1. + 17934. 1. 5. 42.0 23.0 2.0 3. 12.0 40.0 2. 2. 0.0 0. 1. + 17939. 1. 4. 32.0 13.0 3.0 3. 16.0 20.0 4. 2. 0.0 0. 1. + 17940. 1. 5. 27.0 13.0 3.0 3. 16.0 14.0 4. 2. 0.0 0. 1. + 17943. 1. 5. 27.0 9.0 1.0 2. 14.0 20.0 4. 5. 0.0 0. 1. + 17946. 1. 4. 22.0 2.5 0.0 2. 16.0 6.5 4. 1. 0.0 0. 1. + 17947. 1. 5. 17.5 2.5 0.0 4. 12.0 14.0 3. 5. 0.0 0. 1. + 17952. 1. 4. 32.0 16.5 2.0 2. 12.0 20.0 3. 4. 0.0 0. 1. + 17953. 1. 5. 27.0 9.0 1.0 3. 12.0 40.0 3. 5. 0.0 0. 1. + 17960. 1. 4. 22.0 2.5 0.0 4. 14.0 11.5 4. 2. 0.0 0. 1. + 17961. 1. 5. 22.0 2.5 1.0 2. 12.0 11.5 3. 2. 0.0 0. 1. + 17962. 1. 5. 27.0 0.5 0.0 4. 20.0 20.0 4. 4. 0.0 0. 1. + 17963. 1. 5. 37.0 16.5 3.0 3. 14.0 20.0 5. 5. 0.0 0. 1. + 17967. 1. 5. 32.0 13.0 2.0 4. 14.0 20.0 3. 6. 0.0 0. 1. + 17971. 1. 4. 22.0 0.5 0.0 2. 16.0 9.0 3. 1. 0.0 0. 1. + 17973. 1. 5. 42.0 23.0 2.0 4. 12.0 20.0 3. 2. 0.0 0. 1. + 17975. 1. 5. 22.0 2.5 2.0 2. 14.0 6.5 3. 5. 0.0 0. 1. + 17978. 1. 5. 42.0 23.0 4.0 4. 12.0 20.0 3. 5. 0.0 0. 1. + 17981. 1. 4. 27.0 6.0 0.0 3. 12.0 20.0 3. 4. 0.0 0. 1. + 17982. 1. 5. 32.0 13.0 3.0 3. 12.0 20.0 3. 5. 0.0 0. 1. + 17990. 1. 5. 32.0 13.0 4.0 2. 14.0 20.0 4. 4. 0.0 0. 1. + 17997. 1. 3. 27.0 6.0 2.0 4. 14.0 6.5 3. 1. 0.0 0. 1. + 17998. 1. 4. 22.0 2.5 0.0 3. 16.0 11.5 5. 5. 0.0 0. 1. + 17999. 1. 5. 22.0 2.5 0.0 2. 14.0 20.0 3. 3. 0.0 0. 1. + 19006. 1. 5. 32.0 13.0 2.0 3. 17.0 40.0 4. 3. 0.0 0. 1. + 19009. 1. 4. 32.0 13.0 1.0 1. 16.0 40.0 5. 5. 0.0 0. 1. + 19013. 1. 5. 22.0 2.5 0.0 2. 14.0 6.5 3. 1. 0.0 0. 1. + 19015. 1. 5. 32.0 6.0 1.0 3. 14.0 20.0 3. 4. 0.0 0. 1. + 19020. 1. 4. 22.0 2.5 0.0 2. 16.0 4.0 2. 4. 0.0 0. 1. +END OF RB DATA diff --git a/statsmodels/datasets/fertility/__init__.py b/statsmodels/datasets/fertility/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/fertility/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/fertility/data.py b/statsmodels/datasets/fertility/data.py new file mode 100644 index 0000000..9d79baf --- /dev/null +++ b/statsmodels/datasets/fertility/data.py @@ -0,0 +1,74 @@ +"""World Bank Fertility Data.""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """This data is distributed according to the World Bank terms of use. See SOURCE.""" +TITLE = """World Bank Fertility Data""" +SOURCE = """ +This data has been acquired from + +The World Bank: Fertility rate, total (births per woman): World Development Indicators + +At the following URL: http://data.worldbank.org/indicator/SP.DYN.TFRT.IN + +The sources for these statistics are listed as + +(1) United Nations Population Division. World Population Prospects +(2) United Nations Statistical Division. Population and Vital Statistics Repot (various years) +(3) Census reports and other statistical publications from national statistical offices +(4) Eurostat: Demographic Statistics +(5) Secretariat of the Pacific Community: Statistics and Demography Programme +(6) U.S. Census Bureau: International Database + +The World Bank Terms of Use can be found at the following URL + +http://go.worldbank.org/OJC02YMLA0 +""" + +DESCRSHORT = """Total fertility rate represents the number of children that would be born to a woman if she were to live to the end of her childbearing years and bear children in accordance with current age-specific fertility rates.""" + +DESCRLONG = DESCRSHORT + +#suggested notes +NOTE = """ +:: + + This is panel data in wide-format + + Number of observations: 219 + Number of variables: 58 + Variable name definitions: + Country Name + Country Code + Indicator Name - The World Bank Series indicator + Indicator Code - The World Bank Series code + 1960 - 2013 - The fertility rate for the given year +""" + + +def load(as_pandas=None): + """ + Load the data and return a Dataset class instance. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def load_pandas(): + data = _get_data() + return du.Dataset(data=data) + + +def _get_data(): + return du.load_csv(__file__, 'fertility.csv') diff --git a/statsmodels/datasets/fertility/fertility.csv b/statsmodels/datasets/fertility/fertility.csv new file mode 100644 index 0000000..d1456dd --- /dev/null +++ b/statsmodels/datasets/fertility/fertility.csv @@ -0,0 +1,220 @@ +Country Name,Country Code,Indicator Name,Indicator Code,1960,1961,1962,1963,1964,1965,1966,1967,1968,1969,1970,1971,1972,1973,1974,1975,1976,1977,1978,1979,1980,1981,1982,1983,1984,1985,1986,1987,1988,1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013 +Aruba,ABW,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,4.82,4.655,4.471,4.271,4.059,3.842,3.625,3.417,3.2260000000000004,3.054,2.908,2.7880000000000003,2.6910000000000003,2.613,2.552,2.506,2.472,2.446,2.425,2.408,2.392,2.377,2.364,2.353,2.342,2.332,2.32,2.307,2.291,2.272,2.249,2.221,2.187,2.149,2.108,2.064,2.021,1.979,1.94,1.905,1.874,1.848,1.825,1.805,1.786,1.769,1.754,1.739,1.726,1.713,1.7009999999999998,1.69,, +Andorra,AND,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.24,1.18,1.25,1.19,1.22,,, +Afghanistan,AFG,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.671,7.671,7.671,7.671,7.671,7.671,7.671,7.671,7.671,7.671,7.671,7.671,7.671,7.671,7.671,7.671,7.67,7.67,7.67,7.669,7.669,7.67,7.671,7.672999999999999,7.676,7.6789999999999985,7.681,7.682,7.682,7.682,7.687,7.7,7.725,7.757999999999999,7.796,7.832000000000002,7.859,7.869,7.854,7.809,7.733,7.622999999999997,7.484,7.3210000000000015,7.136,6.93,6.702000000000001,6.456,6.1960000000000015,5.928,5.659,5.395,, +Angola,AGO,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.316,7.354,7.385,7.41,7.425,7.43,7.4220000000000015,7.403,7.375,7.338999999999999,7.301,7.2639999999999985,7.232,7.207999999999997,7.192,7.185,7.186,7.189,7.194,7.197,7.2,7.2010000000000005,7.2029999999999985,7.205,7.207000000000002,7.207999999999997,7.206,7.202000000000001,7.194,7.182,7.165,7.143,7.1160000000000005,7.0870000000000015,7.0539999999999985,7.019,6.984,6.949,6.9129999999999985,6.877999999999999,6.8439999999999985,6.811,6.778,6.7429999999999986,6.704,6.657,6.598,6.523,6.434,6.331,6.218,6.099,, +Albania,ALB,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.186,6.0760000000000005,5.956,5.8329999999999975,5.711,5.5939999999999985,5.483,5.376,5.268,5.16,5.05,4.933,4.809,4.677,4.538,4.393,4.244,4.0939999999999985,3.947,3.807,3.678,3.562,3.46,3.372,3.297,3.233,3.177,3.1260000000000003,3.075,3.023,2.97,2.917,2.867,2.819,2.772,2.7230000000000003,2.67,2.611,2.543,2.467,2.383,2.291,2.195,2.097,2.004,1.919,1.849,1.796,1.761,1.744,1.741,1.7480000000000002,, +United Arab Emirates,ARE,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.928,6.91,6.893,6.877000000000002,6.8610000000000015,6.841,6.816,6.783,6.738,6.6789999999999985,6.605,6.5120000000000005,6.402,6.279,6.146,6.009,5.8729999999999976,5.744,5.624,5.517,5.422999999999999,5.3439999999999985,5.274,5.209,5.141,5.065,4.973,4.86,4.724,4.566,4.388,4.1930000000000005,3.989,3.784,3.583,3.393,3.215,3.052,2.902,2.766,2.644,2.532,2.428,2.329,2.236,2.149,2.071,2.004,1.948,1.903,1.868,1.841,, +Argentina,ARG,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.109,3.1,3.089,3.0780000000000003,3.068,3.0580000000000003,3.051,3.048,3.049,3.056,3.073,3.104,3.148,3.2030000000000003,3.264,3.321,3.366,3.391,3.391,3.3680000000000003,3.325,3.27,3.213,3.1630000000000003,3.123,3.093,3.073,3.056,3.037,3.016,2.989,2.9560000000000004,2.918,2.875,2.827,2.774,2.717,2.657,2.596,2.535,2.477,2.424,2.379,2.34,2.31,2.286,2.268,2.254,2.241,2.228,2.215,2.201,, +Armenia,ARM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,4.55,4.512,4.435,4.317,4.1610000000000005,3.979,3.788,3.606,3.447,3.314,3.208,3.1180000000000003,3.032,2.942,2.846,2.745,2.6460000000000004,2.555,2.479,2.421,2.385,2.373,2.381,2.406,2.441,2.481,2.519,2.549,2.5660000000000003,2.565,2.5380000000000003,2.482,2.399,2.295,2.176,2.053,1.938,1.838,1.7619999999999998,1.712,1.6880000000000002,1.6840000000000002,1.692,1.704,1.715,1.724,1.7280000000000002,1.731,1.734,1.736,1.7380000000000002,1.7380000000000002,, +American Samoa,ASM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Antigua and Barbuda,ATG,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,4.425,4.386,4.3439999999999985,4.299,4.25,4.1930000000000005,4.125,4.042,3.942,3.824,3.684,3.517,3.3280000000000003,3.122,2.908,2.701,2.514,2.358,2.239,2.1590000000000003,2.115,2.0980000000000003,2.096,2.0980000000000003,2.0980000000000003,2.092,2.082,2.07,2.062,2.0580000000000003,2.061,2.073,2.096,2.128,2.166,2.208,2.248,2.281,2.3040000000000003,2.316,2.316,2.305,2.2880000000000003,2.268,2.246,2.224,2.2030000000000003,2.1830000000000003,2.164,2.146,2.13,2.115,, +Australia,AUS,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.4530000000000003,3.54,3.442,3.332,3.1460000000000004,2.977,2.881,2.8480000000000003,2.888,2.886,2.859,2.9610000000000003,2.744,2.491,2.397,2.148,2.06,2.007,1.949,1.907,1.891,1.935,1.929,1.924,1.84,1.923,1.868,1.845,1.831,1.838,1.902,1.849,1.888,1.859,1.842,1.822,1.796,1.778,1.7619999999999998,1.755,1.756,1.739,1.756,1.7480000000000002,1.768,1.807,1.883,1.931,1.933,1.857,1.87,1.87,, +Austria,AUT,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.69,2.799,2.798,2.8110000000000004,2.77,2.685,2.662,2.63,2.591,2.496,2.29,2.202,2.102,1.97,1.95,1.82,1.6980000000000002,1.641,1.621,1.6,1.62,1.67,1.66,1.56,1.53,1.46,1.47,1.42,1.43,1.45,1.45,1.5,1.49,1.48,1.44,1.4,1.42,1.36,1.37,1.34,1.36,1.33,1.39,1.38,1.42,1.41,1.41,1.38,1.41,1.39,1.44,1.42,, +Azerbaijan,AZE,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.5710000000000015,5.596,5.591,5.549,5.468,5.352,5.21,5.056,4.901,4.753,4.612,4.479,4.348,4.216,4.084,3.95,3.814,3.676,3.539,3.407,3.286,3.179,3.092,3.026,2.98,2.91,2.9,2.903,2.8,2.8,2.74,2.87,2.74,2.7,2.52,2.29,2.06,2.07,2.0,2.07,2.0,1.8,1.8,1.9,2.0540000000000003,2.0,1.97,1.97,1.9,1.82,1.92,1.92,, +Burundi,BDI,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.9529999999999985,6.9979999999999976,7.045,7.0920000000000005,7.138,7.1789999999999985,7.216,7.247000000000001,7.272,7.292999999999997,7.311,7.329,7.348,7.37,7.395,7.419,7.439,7.452000000000001,7.457000000000002,7.455,7.45,7.449,7.454,7.4689999999999985,7.492000000000001,7.52,7.546,7.565,7.572,7.564,7.542000000000002,7.507999999999999,7.465,7.417999999999997,7.3679999999999986,7.318,7.267,7.217,7.165,7.112,7.057,7.0,6.939,6.8729999999999976,6.803,6.729,6.65,6.567,6.481,6.393,6.3039999999999985,6.214,, +Belgium,BEL,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.575,2.644,2.592,2.68,2.712,2.613,2.53,2.42,2.313,2.245,2.2,2.208,2.09,1.95,1.83,1.736,1.725,1.705,1.6909999999999998,1.689,1.672,1.67,1.614,1.56,1.591,1.49,1.54,1.55,1.56,1.58,1.62,1.57,1.56,1.61,1.55,1.57,1.55,1.6,1.6,1.62,1.67,1.663,1.66,1.66,1.72,1.76,1.8,1.82,1.86,1.84,1.84,1.84,, +Benin,BEN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.282,6.339,6.394,6.447,6.497000000000001,6.544,6.587999999999999,6.63,6.671,6.71,6.7479999999999976,6.7860000000000005,6.823,6.86,6.896,6.9289999999999985,6.959,6.984,7.004,7.018,7.025,7.025,7.021,7.01,6.994,6.972,6.942,6.904,6.858,6.805,6.744,6.6770000000000005,6.603,6.526,6.4460000000000015,6.365,6.284,6.205,6.127999999999999,6.051,5.975,5.898,5.818,5.733,5.645,5.553,5.459,5.365,5.273,5.182,5.095,5.01,, +Burkina Faso,BFA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.291,6.316,6.3439999999999985,6.377000000000002,6.414,6.454,6.4929999999999986,6.53,6.563,6.593,6.6229999999999976,6.657,6.697,6.744,6.799,6.859,6.9220000000000015,6.984,7.041,7.09,7.127000000000002,7.152,7.165,7.1670000000000025,7.159,7.142,7.119,7.0920000000000005,7.064,7.0360000000000005,7.0070000000000014,6.979,6.95,6.9170000000000025,6.8820000000000014,6.8439999999999985,6.801,6.754,6.704,6.65,6.5920000000000005,6.5310000000000015,6.468,6.403,6.335,6.265,6.193,6.1160000000000005,6.037000000000001,5.954,5.869,5.7810000000000015,, +Bangladesh,BGD,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.725,6.761,6.794,6.825,6.853,6.877999999999999,6.901,6.92,6.935,6.945,6.947,6.942,6.928,6.904,6.869,6.8210000000000015,6.757999999999999,6.68,6.5870000000000015,6.48,6.356,6.216,6.06,5.89,5.71,5.522,5.327000000000001,5.13,4.932,4.738,4.55,4.37,4.197,4.033,3.878,3.732,3.596,3.468,3.346,3.2310000000000003,3.12,3.011,2.905,2.802,2.702,2.607,2.52,2.443,2.377,2.322,2.277,2.24,, +Bulgaria,BGR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.3080000000000003,2.29,2.24,2.21,2.19,2.09,2.03,2.02,2.27,2.27,2.17,2.1,2.03,2.15,2.29,2.23,2.24,2.2,2.15,2.15,2.05,2.01,2.02,2.0,1.99,1.95,1.99,1.96,1.97,1.9,1.81,1.65,1.54,1.45,1.37,1.23,1.24,1.09,1.11,1.23,1.26,1.21,1.21,1.23,1.29,1.32,1.38,1.42,1.48,1.57,1.49,1.51,, +Bahrain,BHR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.09,7.1320000000000014,7.1679999999999975,7.19,7.192,7.165,7.101,6.9979999999999976,6.86,6.69,6.4979999999999976,6.2929999999999975,6.089,5.895,5.716,5.556,5.414,5.283,5.157,5.0360000000000005,4.917,4.802,4.69,4.581,4.472,4.362,4.248,4.128,4.002,3.872,3.738,3.6010000000000004,3.466,3.335,3.212,3.1,3.005,2.926,2.862,2.81,2.765,2.718,2.665,2.602,2.529,2.449,2.367,2.292,2.229,2.1790000000000003,2.142,2.115,, +"Bahamas, The",BHS,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,4.495,4.496,4.45,4.356,4.22,4.057,3.893,3.75,3.641,3.571,3.531,3.504,3.469,3.411,3.33,3.234,3.139,3.062,3.012,2.99,2.989,2.994,2.989,2.965,2.919,2.857,2.789,2.728,2.6830000000000003,2.654,2.639,2.631,2.6210000000000004,2.6010000000000004,2.5660000000000003,2.514,2.443,2.357,2.263,2.165,2.071,1.989,1.924,1.88,1.857,1.853,1.862,1.876,1.889,1.898,1.901,1.898,, +Bosnia and Herzegovina,BIH,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,4.052,3.954,3.849,3.737,3.619,3.495,3.367,3.239,3.114,2.994,2.881,2.775,2.675,2.5810000000000004,2.4930000000000003,2.412,2.336,2.267,2.202,2.144,2.092,2.05,2.017,1.992,1.973,1.953,1.925,1.887,1.836,1.775,1.7080000000000002,1.645,1.594,1.558,1.538,1.528,1.519,1.503,1.474,1.433,1.381,1.325,1.275,1.236,1.21,1.199,1.199,1.207,1.218,1.23,1.242,1.255,, +Belarus,BLR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.67,2.59,2.5,2.4,2.31,2.27,2.29,2.26,2.22,2.26,2.31,2.31,2.28,2.25,2.21,2.17,2.12,2.08,2.06,2.05,2.03,2.02,2.05,2.11,2.11,2.09,2.09,2.03,2.04,2.03,1.91,1.8,1.75,1.61,1.51,1.386,1.31,1.23,1.27,1.31,1.31,1.27,1.22,1.21,1.2,1.21,1.287,1.37,1.42,1.42,1.44,1.51,, +Belize,BLZ,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.5,6.48,6.46,6.44,6.42,6.4,6.379,6.358,6.3370000000000015,6.316,6.299,6.2879999999999985,6.284,6.285,6.2860000000000005,6.278,6.25,6.195,6.109,5.992000000000001,5.849,5.684,5.51,5.336,5.17,5.019,4.886,4.771,4.671,4.584,4.508,4.436,4.363,4.2860000000000005,4.2010000000000005,4.1080000000000005,4.008,3.905,3.8,3.696,3.594,3.4930000000000003,3.395,3.299,3.208,3.122,3.043,2.971,2.907,2.8510000000000004,2.801,2.756,, +Bermuda,BMU,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.8,,,,,1.74,,,,,1.7519999999999998,1.754,1.757,1.759,1.7619999999999998,1.764,1.764,, +Bolivia,BOL,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.6960000000000015,6.6720000000000015,6.648,6.627000000000002,6.607,6.593,6.586,6.585,6.5870000000000015,6.5870000000000015,6.5779999999999985,6.549,6.496,6.415,6.31,6.183,6.0429999999999975,5.899,5.761,5.634,5.521,5.422999999999999,5.3370000000000015,5.259,5.189,5.127000000000002,5.074,5.029,4.989,4.952,4.913,4.8660000000000005,4.81,4.742,4.663,4.575,4.482,4.39,4.302,4.2189999999999985,4.14,4.062,3.982,3.897,3.809,3.72,3.633,3.551,3.477,3.4130000000000003,3.357,3.3080000000000003,, +Brazil,BRA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.21,6.19,6.143,6.063,5.9529999999999985,5.815,5.658,5.4910000000000005,5.3260000000000005,5.167999999999998,5.024,4.896,4.782,4.6789999999999985,4.585,4.499,4.418,4.339,4.256,4.169,4.073,3.966,3.848,3.721,3.587,3.449,3.3080000000000003,3.17,3.039,2.917,2.809,2.717,2.643,2.583,2.537,2.502,2.474,2.451,2.427,2.399,2.364,2.318,2.264,2.202,2.135,2.066,2.001,1.944,1.897,1.862,1.838,1.822,, +Barbados,BRB,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,4.333,4.313,4.269,4.1960000000000015,4.0939999999999985,3.963,3.807,3.637,3.46,3.284,3.113,2.949,2.794,2.648,2.513,2.393,2.2880000000000003,2.198,2.121,2.057,2.004,1.96,1.922,1.889,1.858,1.83,1.805,1.7819999999999998,1.765,1.75,1.74,1.732,1.727,1.725,1.724,1.726,1.73,1.736,1.745,1.756,1.768,1.78,1.791,1.801,1.81,1.817,1.822,1.827,1.831,1.835,1.839,1.842,, +Brunei Darussalam,BRN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.487,6.487,6.448,6.36,6.227,6.068,5.9179999999999975,5.8039999999999985,5.742000000000001,5.731,5.751,5.771,5.757999999999999,5.687,5.555,5.365,5.1320000000000014,4.884,4.645,4.4289999999999985,4.246,4.103,3.992,3.906,3.843,3.794,3.755,3.715,3.668,3.608,3.532,3.435,3.321,3.197,3.064,2.929,2.798,2.677,2.569,2.477,2.401,2.341,2.292,2.249,2.211,2.177,2.147,2.119,2.095,2.072,2.051,2.031,, +Bhutan,BTN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.67,6.67,6.67,6.67,6.67,6.67,6.67,6.67,6.67,6.67,6.671,6.674,6.6789999999999985,6.685,6.69,6.692,6.685,6.6679999999999975,6.64,6.601,6.553,6.504,6.456,6.41,6.362,6.306,6.23,6.127000000000002,5.994,5.829,5.6389999999999985,5.431,5.216,5.003,4.796,4.597,4.401,4.205,4.006,3.806,3.608,3.417,3.237,3.071,2.923,2.793,2.682,2.587,2.506,2.436,2.375,2.322,, +Botswana,BWA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.615,6.6320000000000014,6.649,6.666,6.681,6.693,6.698,6.6960000000000015,6.686,6.6670000000000025,6.641,6.6110000000000015,6.579,6.546,6.5120000000000005,6.477,6.44,6.399,6.35,6.291,6.2170000000000005,6.125,6.0120000000000005,5.88,5.731,5.567,5.393,5.214,5.0360000000000005,4.863,4.698,4.542,4.394,4.252,4.117,3.989,3.866,3.746,3.631,3.519,3.4130000000000003,3.3160000000000003,3.227,3.148,3.079,3.017,2.962,2.91,2.86,2.8110000000000004,2.761,2.712,, +Sub-Saharan Africa (IFC classification),CAA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Central African Republic,CAF,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.84,5.867000000000001,5.891,5.91,5.925,5.937,5.945,5.95,5.9529999999999985,5.954,5.954,5.954,5.9529999999999985,5.952000000000001,5.9510000000000005,5.95,5.9510000000000005,5.952000000000001,5.9529999999999985,5.954,5.954,5.955,5.956,5.955,5.952000000000001,5.944,5.9270000000000005,5.902,5.8679999999999986,5.8260000000000005,5.78,5.734,5.691,5.653,5.622000000000001,5.596,5.573,5.55,5.522,5.488,5.4460000000000015,5.393,5.329,5.2570000000000014,5.176,5.089,4.997,4.9030000000000005,4.809,4.716,4.626,4.538,, +Canada,CAN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.811,3.753,3.681,3.607,3.4560000000000004,3.115,2.749,2.528,2.386,2.334,2.258,2.141,1.98,1.89,1.837,1.824,1.796,1.7819999999999998,1.768,1.754,1.74,1.7,1.69,1.68,1.65,1.67,1.675,1.68,1.68,1.77,1.83,1.7,1.71,1.7,1.669,1.639,1.592,1.55,1.53,1.51,1.49,1.505,1.52,1.53,1.53,1.54,1.586,1.659,1.681,1.668,1.6269999999999998,1.6269999999999998,, +Switzerland,CHE,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.336,2.484,2.464,2.68,2.852,2.568,2.472,2.374,2.287,2.123,2.087,2.033,1.923,1.823,1.731,1.598,1.531,1.521,1.493,1.505,1.55,1.55,1.56,1.51,1.52,1.51,1.52,1.55,1.57,1.56,1.59,1.58,1.58,1.51,1.49,1.47,1.5,1.48,1.47,1.48,1.5,1.38,1.39,1.39,1.42,1.42,1.44,1.46,1.48,1.5,1.52,1.52,, +Channel Islands,CHI,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.421,2.481,2.525,2.55,2.551,2.526,2.475,2.404,2.318,2.222,2.121,2.019,1.918,1.822,1.735,1.659,1.596,1.546,1.505,1.475,1.454,1.4409999999999998,1.4340000000000002,1.433,1.4340000000000002,1.4369999999999998,1.4409999999999998,1.446,1.452,1.457,1.46,1.461,1.457,1.45,1.4409999999999998,1.43,1.42,1.411,1.405,1.402,1.402,1.404,1.408,1.411,1.413,1.415,1.4169999999999998,1.42,1.4240000000000002,1.43,1.436,1.444,, +Chile,CHL,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.5820000000000025,5.5429999999999975,5.462999999999999,5.3420000000000005,5.185,5.0,4.799,4.593,4.392,4.202,4.023,3.851,3.679,3.504,3.33,3.1630000000000003,3.013,2.887,2.7880000000000003,2.718,2.675,2.656,2.65,2.651,2.655,2.657,2.656,2.653,2.649,2.64,2.624,2.597,2.559,2.51,2.4530000000000003,2.388,2.321,2.254,2.192,2.135,2.087,2.047,2.014,1.985,1.96,1.939,1.92,1.903,1.888,1.873,1.858,1.844,, +China,CHN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.757999999999999,5.8870000000000005,6.007999999999999,6.103,6.157,6.1610000000000005,6.11,6.011,5.871,5.692,5.47,5.2,4.887,4.542,4.181,3.826,3.497,3.212,2.982,2.813,2.71,2.673,2.682,2.72,2.769,2.8110000000000004,2.826,2.806,2.745,2.644,2.506,2.342,2.171,2.009,1.865,1.746,1.656,1.591,1.546,1.52,1.51,1.514,1.527,1.546,1.5659999999999998,1.585,1.602,1.617,1.63,1.642,1.65,1.6569999999999998,, +Cote d'Ivoire,CIV,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.351,7.427,7.501,7.572,7.6389999999999985,7.701,7.7570000000000014,7.806,7.849,7.882999999999999,7.907999999999999,7.927,7.937,7.94,7.934,7.916,7.883999999999999,7.8370000000000015,7.774,7.695,7.602,7.497000000000001,7.382999999999999,7.263,7.1389999999999985,7.013,6.884,6.752000000000002,6.619,6.4860000000000015,6.356,6.232,6.114,6.005,5.904,5.81,5.72,5.632999999999999,5.5470000000000015,5.46,5.375,5.289,5.207000000000002,5.13,5.06,5.0,4.956,4.928,4.913,4.909,4.91,4.907,, +Cameroon,CMR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.647,5.705,5.766,5.8279999999999985,5.89,5.949,6.005,6.058,6.11,6.159,6.205,6.247000000000001,6.2860000000000005,6.322,6.356,6.391,6.4289999999999985,6.47,6.516,6.563,6.609,6.651,6.683,6.7029999999999985,6.7079999999999975,6.697,6.669,6.627000000000002,6.572,6.507999999999999,6.434,6.352,6.2639999999999985,6.172999999999999,6.08,5.989,5.903,5.823,5.749,5.682,5.621,5.567,5.515,5.464,5.4129999999999985,5.358,5.299,5.235,5.167000000000002,5.0939999999999985,5.017,4.939,, +"Congo, Rep.",COG,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.88,5.9220000000000015,5.9670000000000005,6.0120000000000005,6.056,6.098,6.138,6.174,6.2070000000000025,6.235,6.259,6.28,6.2970000000000015,6.312,6.3210000000000015,6.325,6.318,6.301,6.273,6.231,6.178,6.112,6.0360000000000005,5.952000000000001,5.864,5.774,5.682,5.591,5.502999999999999,5.421,5.347,5.2860000000000005,5.2360000000000015,5.198,5.171,5.154,5.145,5.141,5.1389999999999985,5.1370000000000005,5.134,5.131,5.127999999999999,5.125,5.122000000000001,5.119,5.114,5.109,5.101,5.089,5.072,5.046,, +Colombia,COL,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.807,6.8,6.776,6.731,6.6610000000000005,6.559,6.4220000000000015,6.25,6.05,5.83,5.599,5.37,5.153,4.956,4.782,4.631,4.497,4.372,4.247,4.121,3.993,3.867,3.744,3.63,3.525,3.43,3.347,3.275,3.2110000000000003,3.155,3.104,3.057,3.012,2.966,2.92,2.872,2.823,2.775,2.727,2.682,2.64,2.603,2.57,2.542,2.518,2.496,2.475,2.454,2.43,2.405,2.376,2.346,, +Comoros,COM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.7920000000000025,6.849,6.897,6.939,6.975,7.004,7.027,7.044,7.055,7.06,7.061,7.06,7.058,7.055,7.0520000000000005,7.0539999999999985,7.065,7.084,7.106,7.126,7.129,7.102,7.033,6.921,6.766,6.5760000000000005,6.362,6.141,5.928,5.735,5.573,5.447,5.355,5.292999999999998,5.2570000000000014,5.246,5.252999999999999,5.27,5.289,5.306,5.315,5.313,5.303,5.283,5.254,5.216,5.167999999999998,5.112,5.051,4.9860000000000015,4.919,4.85,, +Cabo Verde,CPV,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.885,6.9220000000000015,6.9529999999999985,6.976,6.989,6.9929999999999986,6.99,6.982,6.97,6.954,6.935,6.9129999999999985,6.8870000000000005,6.855,6.818,6.771,6.714,6.645,6.564,6.473,6.375,6.274,6.174,6.075,5.979,5.882999999999999,5.784,5.68,5.565,5.441,5.307,5.164,5.016,4.863,4.708,4.55,4.388,4.221,4.05,3.876,3.701,3.527,3.357,3.192,3.037,2.895,2.77,2.66,2.567,2.49,2.427,2.375,, +Costa Rica,CRI,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.311,7.295,7.221,7.085,6.886,6.631,6.3279999999999985,5.997000000000001,5.657,5.324,5.012,4.7330000000000005,4.488,4.2780000000000005,4.105,3.968,3.864,3.784,3.719,3.665,3.618,3.577,3.544,3.517,3.491,3.463,3.427,3.38,3.323,3.254,3.175,3.09,3.002,2.917,2.835,2.758,2.6860000000000004,2.616,2.548,2.481,2.414,2.345,2.275,2.204,2.134,2.067,2.006,1.953,1.909,1.874,1.847,1.827,, +Cuba,CUB,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,4.182,4.36,4.509,4.606,4.643,4.617,4.54,4.433,4.312,4.18,4.033,3.857,3.646,3.4,3.127,2.844,2.573,2.332,2.134,1.987,1.892,1.843,1.826,1.825,1.832,1.837,1.836,1.827,1.81,1.785,1.7519999999999998,1.715,1.68,1.65,1.628,1.614,1.609,1.61,1.615,1.621,1.626,1.626,1.621,1.61,1.592,1.57,1.545,1.52,1.4980000000000002,1.48,1.467,1.459,, +Curacao,CUW,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.1,2.0,2.2,2.1,2.2,,, +Cayman Islands,CYM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Cyprus,CYP,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.5,3.471,3.4210000000000003,3.346,3.249,3.133,3.01,2.889,2.779,2.6860000000000004,2.61,2.547,2.491,2.44,2.393,2.352,2.323,2.31,2.312,2.3280000000000003,2.354,2.385,2.415,2.438,2.4530000000000003,2.458,2.456,2.45,2.442,2.43,2.411,2.381,2.337,2.278,2.206,2.124,2.035,1.945,1.86,1.781,1.714,1.658,1.6130000000000002,1.577,1.5490000000000002,1.529,1.514,1.503,1.493,1.485,1.4780000000000002,1.47,, +Czech Republic,CZE,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.075,2.11,2.12,2.31,2.34,2.165,2.02,1.9,1.84,1.87,1.929,1.99,2.09,2.31,2.46,2.43,2.39,2.34,2.33,2.27,2.07,2.0,2.02,1.97,1.97,1.95,1.94,1.91,1.94,1.874,1.893,1.86,1.72,1.67,1.44,1.278,1.185,1.17,1.16,1.13,1.14,1.14,1.17,1.18,1.23,1.28,1.33,1.44,1.5,1.49,1.49,1.43,, +Germany,DEU,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.37,2.45,2.44,2.51,2.54,2.5,2.53,2.48,2.38,2.21,2.03,1.92,1.71,1.54,1.51,1.45,1.45,1.4,1.38,1.38,1.44,1.43,1.41,1.33,1.29,1.37,1.43,1.43,1.46,1.42,1.45,1.33,1.29,1.28,1.24,1.25,1.3,1.35,1.36,1.36,1.38,1.35,1.34,1.34,1.36,1.34,1.33,1.37,1.38,1.36,1.39,1.36,, +Djibouti,DJI,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.461,6.4929999999999986,6.527,6.561,6.595,6.629,6.665,6.702000000000001,6.739,6.774,6.8039999999999985,6.8260000000000005,6.836,6.834,6.817,6.784,6.734,6.671,6.598,6.52,6.443,6.3729999999999976,6.316,6.271,6.239,6.218,6.205,6.193,6.174,6.142,6.0870000000000015,6.0,5.879,5.727,5.547999999999999,5.352,5.148,4.95,4.768,4.607,4.4689999999999985,4.353,4.253,4.16,4.074,3.991,3.911,3.832,3.755,3.679,3.604,3.53,, +Dominica,DMA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,5.5,,,,,,,,,,3.52,,,,,3.0,,,,,2.5,,,,,1.9,,,,,1.9,1.9,,,,,,,,,, +Denmark,DNK,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.57,2.547,2.544,2.642,2.602,2.61,2.615,2.35,2.117,2.0,1.95,2.043,2.029,1.917,1.897,1.919,1.747,1.66,1.668,1.602,1.546,1.4369999999999998,1.4269999999999998,1.3769999999999998,1.4,1.4469999999999998,1.48,1.5,1.56,1.62,1.67,1.68,1.76,1.75,1.806,1.807,1.747,1.7519999999999998,1.72,1.73,1.77,1.74,1.72,1.76,1.78,1.8,1.85,1.84,1.89,1.84,1.87,1.75,, +Dominican Republic,DOM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.555,7.487999999999999,7.404,7.3039999999999985,7.187,7.0539999999999985,6.904,6.739,6.562,6.376,6.182,5.983,5.782,5.58,5.382999999999999,5.193,5.0139999999999985,4.848,4.6930000000000005,4.552,4.422,4.302,4.19,4.082,3.978,3.878,3.783,3.695,3.613,3.537,3.466,3.397,3.33,3.262,3.195,3.13,3.069,3.014,2.966,2.926,2.892,2.863,2.8360000000000003,2.809,2.781,2.7510000000000003,2.719,2.6860000000000004,2.652,2.6180000000000003,2.584,2.551,, +Algeria,DZA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.648,7.649,7.65,7.652,7.653,7.655,7.657,7.657999999999999,7.657,7.652,7.641,7.622000000000001,7.591,7.547999999999999,7.492000000000001,7.4220000000000015,7.338999999999999,7.244,7.138,7.021,6.8889999999999985,6.7410000000000005,6.5760000000000005,6.392,6.192,5.976,5.747000000000001,5.507999999999999,5.263,5.0139999999999985,4.761,4.503,4.238,3.971,3.705,3.449,3.207,2.987,2.794,2.634,2.514,2.439,2.407,2.412,2.448,2.507,2.58,2.656,2.725,2.781,2.817,2.829,, +Ecuador,ECU,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.689,6.6720000000000015,6.651,6.6229999999999976,6.589,6.545,6.488,6.4179999999999975,6.335,6.238,6.127999999999999,6.005,5.874,5.7360000000000015,5.593,5.449,5.3039999999999985,5.159,5.015,4.875,4.742,4.618,4.505,4.401,4.306,4.217,4.131,4.044,3.955,3.861,3.765,3.669,3.576,3.488,3.407,3.335,3.27,3.213,3.161,3.113,3.068,3.025,2.983,2.94,2.897,2.853,2.81,2.768,2.728,2.69,2.655,2.622,, +"Egypt, Arab Rep.",EGY,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.63,6.605,6.57,6.526,6.471,6.405,6.327000000000001,6.238,6.141,6.04,5.94,5.846,5.763,5.692,5.632999999999999,5.585,5.545,5.5070000000000014,5.465,5.4179999999999975,5.3660000000000005,5.31,5.251,5.189,5.122999999999998,5.045,4.947,4.827,4.684,4.522,4.35,4.1789999999999985,4.018,3.876,3.757,3.659,3.579,3.508,3.44,3.372,3.306,3.242,3.184,3.134,3.091,3.053,3.02,2.987,2.954,2.919,2.883,2.845,, +Eritrea,ERI,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.899,6.8679999999999986,6.8370000000000015,6.806,6.778,6.752000000000002,6.728,6.706,6.686,6.6670000000000025,6.65,6.6370000000000005,6.626,6.619,6.615,6.614,6.6160000000000005,6.619,6.6229999999999976,6.627000000000002,6.627999999999999,6.625,6.6179999999999986,6.607,6.591,6.572,6.553,6.535,6.519,6.504,6.488,6.4670000000000005,6.438,6.4,6.351,6.2929999999999975,6.228,6.159,6.087999999999999,6.015,5.94,5.86,5.774,5.681,5.5820000000000025,5.478,5.372000000000001,5.266,5.1629999999999985,5.063,4.968,4.875,, +Spain,ESP,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.862,2.765,2.7960000000000003,2.875,3.011,2.937,2.912,2.939,2.87,2.858,2.8360000000000003,2.859,2.842,2.823,2.866,2.7880000000000003,2.786,2.649,2.524,2.341,2.217,2.031,1.936,1.7919999999999998,1.72,1.63,1.6,1.47,1.42,1.36,1.33,1.31,1.32,1.27,1.2,1.18,1.15,1.15,1.16,1.19,1.23,1.24,1.26,1.31,1.32,1.34,1.37,1.39,1.46,1.39,1.38,1.36,, +Estonia,EST,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,1.96,1.97,1.96,1.94,1.94,1.93,1.92,1.95,2.03,2.11,2.16,2.18,2.16,2.13,2.1,2.08,2.09,2.08,2.04,2.009,2.02,2.07,2.08,2.16,2.17,2.12,2.17,2.26,2.26,2.21,2.04,1.77,1.69,1.45,1.37,1.32,1.335,1.24,1.28,1.32,1.38,1.34,1.37,1.37,1.47,1.5,1.55,1.63,1.65,1.62,1.63,1.52,, +Ethiopia,ETH,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.88,6.877000000000002,6.875,6.872000000000001,6.867000000000001,6.864,6.867000000000001,6.88,6.903,6.937,6.978,7.02,7.06,7.0939999999999985,7.121,7.143,7.1670000000000025,7.195,7.23,7.271,7.316,7.36,7.397,7.423999999999999,7.437,7.435,7.417999999999997,7.387,7.347,7.297999999999999,7.246,7.193,7.143,7.0939999999999985,7.046,6.995,6.935,6.8610000000000015,6.769,6.659,6.529,6.38,6.218,6.046,5.87,5.693,5.52,5.353,5.193,5.043,4.902,4.769,, +Finland,FIN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.714,2.689,2.637,2.637,2.533,2.398,2.324,2.24,2.068,1.851,1.828,1.703,1.5930000000000002,1.504,1.625,1.6880000000000002,1.72,1.69,1.652,1.642,1.63,1.65,1.72,1.74,1.7,1.64,1.6,1.59,1.7,1.71,1.78,1.8,1.85,1.81,1.85,1.81,1.76,1.75,1.7,1.73,1.73,1.73,1.72,1.76,1.8,1.8,1.84,1.83,1.85,1.86,1.87,1.83,, +Fiji,FJI,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.461,6.2810000000000015,6.085,5.881,5.676,5.475,5.278,5.083,4.892,4.71,4.543,4.397,4.275,4.178,4.106,4.0539999999999985,4.018,3.992,3.968,3.941,3.907,3.864,3.813,3.755,3.693,3.629,3.568,3.512,3.465,3.427,3.398,3.374,3.352,3.33,3.305,3.276,3.244,3.209,3.1710000000000003,3.132,3.09,3.0460000000000003,3.0010000000000003,2.954,2.907,2.86,2.8160000000000003,2.774,2.736,2.701,2.67,2.641,, +France,FRA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.85,2.87,2.89,2.89,2.87,2.84,2.8,2.75,2.69,2.62,2.55,2.47,2.38,2.28,2.18,2.09,2.01,1.94,1.89,1.87,1.85,1.85,1.86,1.86,1.86,1.86,1.85,1.83,1.81,1.79,1.77,1.75,1.74,1.73,1.73,1.74,1.75,1.77,1.78,1.81,1.89,1.9,1.88,1.89,1.92,1.94,2.0,1.98,2.01,2.0,2.03,2.03,, +Faeroe Islands,FRO,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +"Micronesia, Fed. Sts.",FSM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.934,6.9170000000000025,6.905,6.897,6.893,6.894,6.9,6.9110000000000005,6.924,6.935,6.938,6.925,6.894,6.8420000000000005,6.77,6.682,6.586,6.49,6.398,6.311,6.223,6.129,6.02,5.894,5.752000000000002,5.6,5.4460000000000015,5.299,5.167000000000002,5.052,4.958,4.882,4.82,4.766,4.716,4.664,4.6080000000000005,4.544,4.471,4.39,4.3,4.204,4.105,4.007,3.912,3.823,3.739,3.661,3.589,3.522,3.46,3.402,, +Gabon,GAB,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,4.384,4.462,4.541,4.619,4.694,4.766,4.834,4.899,4.961,5.021,5.081,5.143,5.207999999999998,5.275,5.343,5.412000000000001,5.48,5.5429999999999975,5.6,5.648,5.684,5.709,5.722,5.723,5.7120000000000015,5.689,5.654,5.609,5.5539999999999985,5.4910000000000005,5.421,5.343,5.259,5.17,5.078,4.987,4.898,4.814,4.735,4.664,4.6,4.544,4.494,4.449,4.408,4.37,4.335,4.3039999999999985,4.275,4.246,4.214,4.178,, +United Kingdom,GBR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.692,2.784,2.859,2.881,2.934,2.863,2.783,2.679,2.604,2.507,2.437,2.408,2.204,2.036,1.92,1.81,1.74,1.69,1.75,1.86,1.89,1.81,1.78,1.77,1.77,1.8,1.78,1.82,1.83,1.8,1.83,1.82,1.79,1.82,1.74,1.71,1.72,1.72,1.71,1.68,1.64,1.63,1.64,1.71,1.77,1.78,1.84,1.9,1.96,1.94,1.98,1.98,, +Georgia,GEO,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.964,2.965,2.95,2.915,2.864,2.801,2.737,2.68,2.637,2.609,2.595,2.588,2.579,2.563,2.537,2.502,2.461,2.419,2.379,2.343,2.315,2.296,2.2840000000000003,2.277,2.275,2.273,2.269,2.26,2.2430000000000003,2.217,2.18,2.132,2.076,2.013,1.946,1.879,1.812,1.749,1.692,1.643,1.609,1.592,1.5930000000000002,1.609,1.639,1.6780000000000002,1.719,1.758,1.788,1.809,1.82,1.822,, +Ghana,GHA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.749,6.789,6.827000000000001,6.862,6.893,6.9179999999999975,6.937,6.95,6.9570000000000025,6.9570000000000025,6.95,6.936,6.915,6.888,6.855,6.815,6.771,6.721,6.665,6.605,6.539,6.468,6.392,6.31,6.223,6.131,6.035,5.935,5.831,5.725,5.6160000000000005,5.505,5.392,5.278,5.165,5.058,4.959,4.87,4.793,4.727,4.669,4.617,4.566,4.512,4.455,4.392,4.3260000000000005,4.257,4.188,4.119,4.052,3.985,, +Guinea,GIN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.102,6.113,6.121,6.127000000000002,6.131,6.135,6.14,6.147,6.158,6.174,6.195,6.221,6.25,6.283,6.318,6.354,6.391,6.428,6.465,6.5,6.533,6.563,6.59,6.613,6.63,6.641,6.645,6.641,6.629,6.608,6.579,6.539,6.492000000000001,6.436,6.375,6.308,6.237,6.1629999999999985,6.089,6.0139999999999985,5.939,5.8660000000000005,5.794,5.722,5.649,5.5760000000000005,5.501,5.422999999999999,5.343,5.26,5.174,5.088,, +"Gambia, The",GMB,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.573,5.621,5.6720000000000015,5.723,5.776,5.83,5.884,5.938,5.9910000000000005,6.0429999999999975,6.093,6.141,6.185,6.226,6.2620000000000005,6.2929999999999975,6.316,6.3329999999999975,6.3420000000000005,6.343,6.3370000000000015,6.323,6.303,6.277,6.2479999999999976,6.2189999999999985,6.19,6.164,6.141,6.1229999999999976,6.107,6.095,6.0829999999999975,6.07,6.056,6.039,6.018,5.995,5.97,5.944,5.9170000000000025,5.891,5.867000000000001,5.845,5.827000000000001,5.812,5.803,5.799,5.797999999999999,5.797999999999999,5.796,5.789,, +Guinea-Bissau,GNB,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.8279999999999985,5.771,5.67,5.515,5.32,5.1389999999999985,5.045,5.091,5.296,5.643,6.0710000000000015,6.489,6.812,6.984,6.9929999999999986,6.8660000000000005,6.662000000000001,6.462999999999999,6.33,6.283,6.322,6.422999999999999,6.5420000000000025,6.642,6.71,6.7429999999999986,6.7429999999999986,6.728,6.706,6.68,6.649,6.608,6.5539999999999985,6.4860000000000015,6.404,6.311,6.214,6.115,6.019,5.9289999999999985,5.845,5.766,5.69,5.614,5.539,5.462999999999999,5.3889999999999985,5.317,5.247000000000001,5.18,5.115,5.052,, +Equatorial Guinea,GNQ,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.505,5.515,5.529,5.547999999999999,5.57,5.595,5.619,5.64,5.658,5.671,5.678,5.681,5.68,5.6770000000000005,5.675,5.674,5.676,5.682,5.693,5.7079999999999975,5.728,5.751,5.776,5.8020000000000005,5.8260000000000005,5.848,5.8660000000000005,5.881,5.891,5.897,5.9,5.901,5.902,5.902,5.901,5.897,5.888,5.872000000000001,5.847,5.814,5.773,5.727,5.678,5.627000000000002,5.574,5.518,5.4570000000000025,5.39,5.314,5.231,5.14,5.044,, +Greece,GRC,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.277,2.189,2.234,2.215,2.312,2.297,2.376,2.549,2.559,2.48,2.337,2.295,2.315,2.28,2.39,2.365,2.385,2.266,2.274,2.261,2.226,2.091,2.024,1.94,1.823,1.6769999999999998,1.615,1.5,1.5,1.41,1.4,1.38,1.38,1.34,1.36,1.32,1.3,1.31,1.26,1.24,1.26,1.25,1.27,1.28,1.3,1.33,1.4,1.41,1.51,1.52,1.51,1.43,, +Grenada,GRD,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.7429999999999986,6.627000000000002,6.442,6.1960000000000015,5.9060000000000015,5.597,5.3,5.04,4.835,4.69,4.604,4.561,4.537,4.512,4.479,4.436,4.385,4.337,4.299,4.269,4.251,4.244,4.243,4.245,4.243,4.231,4.2,4.146,4.0680000000000005,3.966,3.842,3.701,3.551,3.401,3.254,3.116,2.988,2.87,2.762,2.6660000000000004,2.582,2.512,2.455,2.4090000000000003,2.373,2.344,2.321,2.301,2.282,2.262,2.24,2.217,, +Greenland,GRL,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.44,2.41,2.53,2.57,2.47,2.53,2.49,2.6830000000000003,2.39,2.34,2.3080000000000003,2.451,2.489,2.361,2.42,2.3,2.26,2.23,2.247,2.359,2.2,2.1,, +Guatemala,GTM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.534,6.5120000000000005,6.49,6.464,6.434,6.399,6.36,6.323,6.2879999999999985,6.259,6.235,6.2189999999999985,6.2079999999999975,6.2029999999999985,6.2010000000000005,6.2010000000000005,6.2029999999999985,6.204,6.2029999999999985,6.1960000000000015,6.18,6.152,6.109,6.0539999999999985,5.987,5.9129999999999985,5.8370000000000015,5.7639999999999985,5.697,5.636,5.58,5.525,5.465,5.397,5.32,5.237,5.148,5.058,4.97,4.884,4.801,4.718,4.634,4.547,4.459,4.371,4.283,4.199,4.119,4.044,3.974,3.908,, +Guam,GUM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.0520000000000005,6.047999999999999,5.984,5.857,5.67,5.439,5.187,4.939,4.716,4.526,4.372,4.248,4.137,4.0280000000000005,3.917,3.801,3.681,3.5610000000000004,3.447,3.34,3.248,3.177,3.128,3.1,3.092,3.095,3.099,3.097,3.082,3.053,3.013,2.969,2.929,2.899,2.881,2.872,2.87,2.867,2.86,2.846,2.824,2.794,2.759,2.72,2.679,2.638,2.599,2.562,2.529,2.499,2.472,2.448,, +Guyana,GUY,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.671,5.5779999999999985,5.485,5.401,5.329,5.272,5.228,5.19,5.152,5.112,5.0680000000000005,5.022,4.974,4.919,4.852,4.758,4.621,4.435,4.204,3.935,3.646,3.36,3.099,2.881,2.714,2.6,2.5340000000000003,2.499,2.48,2.471,2.467,2.465,2.467,2.4730000000000003,2.482,2.4930000000000003,2.505,2.521,2.54,2.5610000000000004,2.585,2.614,2.645,2.678,2.709,2.735,2.7510000000000003,2.754,2.7430000000000003,2.718,2.682,2.638,, +"Hong Kong SAR, China",HKG,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.162000000000001,5.212999999999999,5.18,5.051,4.833,4.551,4.246,3.959,3.722,3.545,3.4210000000000003,3.459,3.315,3.177,2.967,2.6660000000000004,2.48,2.376,2.272,2.12,2.047,1.933,1.86,1.722,1.5590000000000002,1.491,1.367,1.311,1.4,1.296,1.272,1.281,1.347,1.342,1.355,1.295,1.1909999999999998,1.127,1.017,0.982,1.035,0.932,0.939,0.901,0.927,0.966,0.984,1.028,1.064,1.055,1.127,1.204,, +Honduras,HND,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.457999999999997,7.447999999999999,7.443,7.441,7.443,7.442,7.435,7.417000000000002,7.382999999999999,7.334,7.27,7.195,7.1110000000000015,7.025,6.935,6.8439999999999985,6.749,6.649,6.5429999999999975,6.431,6.313,6.19,6.062,5.932,5.8020000000000005,5.675,5.5539999999999985,5.441,5.335,5.2360000000000015,5.142,5.048,4.95,4.846,4.735,4.617,4.493,4.3660000000000005,4.239,4.1160000000000005,3.996,3.883,3.775,3.674,3.579,3.492,3.4130000000000003,3.34,3.273,3.212,3.154,3.1010000000000004,, +Croatia,HRV,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.332,2.302,2.273,2.2430000000000003,2.211,2.177,2.141,2.104,2.068,2.035,2.007,1.987,1.975,1.972,1.976,1.985,1.996,2.005,2.01,2.01,2.004,1.993,1.9,1.88,1.87,1.82,1.76,1.64,1.79,1.63,1.63,1.53,1.48,1.52,1.47,1.58,1.67,1.69,1.45,1.38,1.39,1.38,1.34,1.33,1.35,1.41,1.38,1.4,1.47,1.5,1.46,1.46,, +Haiti,HTI,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.324,6.318,6.3020000000000005,6.274,6.233,6.1789999999999985,6.109,6.026,5.937,5.847,5.7620000000000005,5.693,5.643,5.6160000000000005,5.615,5.642,5.699,5.779,5.872000000000001,5.97,6.058,6.122000000000001,6.154,6.149,6.106,6.028,5.921,5.799,5.672999999999999,5.549,5.43,5.318,5.21,5.103,4.997,4.8889999999999985,4.779,4.665,4.547,4.426,4.303,4.182,4.065,3.953,3.849,3.753,3.664,3.58,3.5,3.424,3.35,3.28,, +Hungary,HUN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.019,1.941,1.79,1.81,1.82,1.82,1.89,2.01,2.06,2.029,1.97,1.915,1.931,1.93,2.27,2.35,2.23,2.15,2.07,2.01,1.91,1.877,1.92,1.73,1.73,1.83,1.83,1.81,1.79,1.78,1.84,1.86,1.77,1.69,1.64,1.57,1.46,1.38,1.32,1.28,1.32,1.31,1.3,1.27,1.28,1.31,1.34,1.32,1.35,1.32,1.25,1.23,, +Indonesia,IDN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.666,5.6560000000000015,5.645,5.634,5.6229999999999976,5.612,5.599,5.5820000000000025,5.556,5.521,5.474,5.4129999999999985,5.337999999999999,5.251,5.152,5.043,4.927,4.806,4.682,4.557,4.43,4.301,4.167,4.0280000000000005,3.887,3.745,3.606,3.472,3.346,3.229,3.122,3.023,2.931,2.844,2.764,2.6910000000000003,2.628,2.575,2.5340000000000003,2.503,2.484,2.475,2.474,2.479,2.486,2.4930000000000003,2.495,2.49,2.479,2.46,2.434,2.403,, +Isle of Man,IMN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,2.707,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.8,,,,,,,,1.65,,,,,,,,,,, +India,IND,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.87,5.856,5.8420000000000005,5.8260000000000005,5.807,5.7810000000000015,5.747000000000001,5.7010000000000005,5.642,5.573,5.494,5.41,5.323,5.238,5.1560000000000015,5.077,5.0,4.922,4.843,4.762,4.6789999999999985,4.597,4.515,4.436,4.3580000000000005,4.2810000000000015,4.203,4.125,4.044,3.961,3.878,3.793,3.709,3.628,3.549,3.4730000000000003,3.402,3.334,3.269,3.207,3.145,3.083,3.018,2.952,2.884,2.817,2.753,2.694,2.643,2.6,2.563,2.532,, +Ireland,IRL,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.76,3.791,3.921,4.01,4.065,4.0310000000000015,3.954,3.842,3.778,3.845,3.93,3.975,3.874,3.74,3.617,3.3960000000000004,3.312,3.269,3.24,3.229,3.229,3.07,2.957,2.759,2.589,2.5,2.45,2.31,2.17,2.08,2.12,2.09,2.02,1.93,1.86,1.87,1.91,1.92,1.94,1.9,1.89,1.94,1.97,1.96,1.94,1.87,1.93,2.01,2.1,2.07,2.07,2.05,, +"Iran, Islamic Rep.",IRN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.9270000000000005,6.924,6.914,6.896,6.8679999999999986,6.827000000000001,6.77,6.699,6.617000000000001,6.528,6.44,6.359,6.2920000000000025,6.2429999999999986,6.214,6.2120000000000015,6.238,6.289,6.354,6.4220000000000015,6.481,6.516,6.515,6.47,6.374,6.223,6.015,5.759,5.468,5.152,4.819,4.478,4.137,3.806,3.492,3.204,2.946,2.716,2.512,2.337,2.193,2.079,1.994,1.934,1.895,1.873,1.866,1.87,1.88,1.893,1.904,1.912,, +Iraq,IRQ,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.252000000000002,6.364,6.5139999999999985,6.689,6.872000000000001,7.044,7.188,7.295,7.362,7.382999999999999,7.362,7.308,7.234,7.153,7.072,6.9929999999999986,6.915,6.834,6.7479999999999976,6.658,6.569,6.485,6.407,6.337999999999999,6.276,6.22,6.164,6.105,6.039,5.965,5.8820000000000014,5.7920000000000025,5.699,5.605,5.51,5.4170000000000025,5.324,5.233,5.142,5.053,4.965,4.879,4.795,4.713,4.634,4.557,4.4830000000000005,4.412,4.343,4.276,4.211,4.147,, +Iceland,ISL,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,4.294,3.884,3.983,3.98,3.858,3.713,3.5780000000000003,3.282,3.0610000000000004,2.988,2.793,2.875,3.088,2.948,2.66,2.613,2.529,2.319,2.355,2.49,2.48,2.33,2.26,2.24,2.08,1.93,1.93,2.05,2.2,2.2,2.31,2.19,2.21,2.22,2.14,2.08,2.12,2.04,2.05,1.99,2.08,1.95,1.93,1.99,2.04,2.05,2.08,2.09,2.15,2.23,2.2,2.02,, +Israel,ISR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.866,3.858,3.85,3.838,3.826,3.814,3.802,3.79,3.786,3.782,3.778,3.774,3.77,3.698,3.626,3.554,3.482,3.41,3.354,3.298,3.242,3.1860000000000004,3.13,3.1060000000000003,3.082,3.0580000000000003,3.034,3.01,2.948,2.886,2.824,2.762,2.7,2.8,2.9,2.9,2.9,2.94,2.98,2.965,2.95,2.92,2.89,2.95,2.9,2.84,2.88,2.9,2.96,2.96,3.03,3.0,, +Italy,ITA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.406,2.407,2.463,2.547,2.701,2.665,2.625,2.535,2.4930000000000003,2.508,2.425,2.411,2.359,2.339,2.331,2.208,2.108,1.975,1.87,1.7619999999999998,1.64,1.617,1.592,1.52,1.462,1.39,1.34,1.28,1.32,1.28,1.26,1.27,1.3,1.25,1.22,1.18,1.21,1.22,1.21,1.23,1.26,1.25,1.27,1.29,1.33,1.32,1.35,1.37,1.42,1.41,1.41,1.41,, +Jamaica,JAM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.419,5.529,5.627000000000002,5.711,5.775,5.815,5.8210000000000015,5.79,5.722,5.617000000000001,5.477,5.305,5.1080000000000005,4.899,4.685,4.478,4.2860000000000005,4.115,3.965,3.839,3.733,3.643,3.559,3.477,3.394,3.3080000000000003,3.224,3.143,3.07,3.005,2.948,2.899,2.855,2.815,2.778,2.744,2.712,2.6830000000000003,2.655,2.629,2.603,2.5780000000000003,2.552,2.525,2.498,2.47,2.442,2.414,2.387,2.36,2.334,2.309,, +Jordan,JOR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.687,7.802,7.904,7.983,8.033999999999999,8.057,8.052999999999999,8.033,8.004,7.968,7.926,7.876,7.818,7.75,7.675,7.598,7.523,7.455,7.391,7.329,7.262,7.178,7.0710000000000015,6.935,6.771,6.581,6.3729999999999976,6.157,5.943,5.734,5.5360000000000005,5.349,5.169,4.997,4.832,4.677,4.5310000000000015,4.395,4.269,4.155,4.053,3.966,3.893,3.832,3.78,3.734,3.689,3.641,3.5860000000000003,3.526,3.458,3.386,, +Japan,JPN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.001,2.05,2.01,2.02,2.05,2.139,1.58,2.02,2.13,2.13,2.135,2.16,2.14,2.14,2.05,1.909,1.85,1.8,1.79,1.77,1.75,1.74,1.77,1.8,1.81,1.76,1.72,1.69,1.66,1.57,1.54,1.53,1.5019999999999998,1.4580000000000002,1.5,1.422,1.425,1.388,1.384,1.342,1.359,1.33,1.32,1.29,1.29,1.26,1.32,1.34,1.37,1.37,1.39,1.39,, +Kazakhstan,KAZ,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,4.563,4.5139999999999985,4.437,4.331,4.2010000000000005,4.059,3.918,3.79,3.683,3.6,3.5380000000000003,3.489,3.44,3.385,3.32,3.249,3.175,3.1060000000000003,3.048,3.019,2.9,2.95,3.0,3.04,3.08,3.08,3.135,3.19,3.13,2.82,2.72,2.61,2.5,2.3,2.28,2.26,2.13,2.0,1.8,1.7,1.8,1.9,2.0,2.03,2.21,2.22,2.36,2.5,2.7,2.6,2.59,2.59,, +Kenya,KEN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.9460000000000015,7.997999999999997,8.042,8.078,8.103,8.119,8.126,8.125,8.117,8.103,8.081,8.051,8.012,7.962999999999999,7.905,7.84,7.769,7.695,7.6179999999999986,7.5379999999999985,7.455,7.366,7.27,7.165,7.049,6.9179999999999975,6.769,6.602,6.4220000000000015,6.231,6.037000000000001,5.847,5.6679999999999975,5.506,5.3660000000000005,5.251,5.165,5.102,5.059,5.03,5.012,5.001,4.99,4.976,4.955,4.923,4.879,4.824,4.761,4.691,4.6160000000000005,4.538,, +Kyrgyz Republic,KGZ,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.166,5.255,5.314,5.335,5.317,5.266,5.193,5.112,5.034,4.961,4.892,4.815,4.724,4.615,4.492,4.365,4.247,4.15,4.082,4.044,4.035,4.046,4.0680000000000005,4.086,4.097,4.093,4.073,4.039,3.992,3.875,3.69,3.671,3.617,3.3,3.14,3.31,2.99,2.79,2.648,2.629,2.4,2.4,2.5,2.5,2.6,2.5,2.7,2.8,2.8,2.9,3.06,3.06,, +Cambodia,KHM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.9670000000000005,6.964,6.955,6.937,6.909,6.8679999999999986,6.815,6.749,6.6720000000000015,6.5829999999999975,6.475,6.337999999999999,6.172999999999999,5.988,5.795,5.622000000000001,5.4979999999999976,5.441,5.459,5.545,5.685,5.85,6.007999999999999,6.13,6.2,6.21,6.16,6.065,5.941,5.7920000000000025,5.6229999999999976,5.438,5.24,5.033,4.825,4.62,4.423,4.2360000000000015,4.059,3.896,3.75,3.619,3.504,3.401,3.31,3.23,3.162,3.102,3.051,3.007,2.966,2.929,, +Kiribati,KIR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.9529999999999985,7.0120000000000005,7.077000000000001,7.143,7.2010000000000005,7.221,7.165,7.013,6.763,6.431,6.051,5.674,5.346,5.103,4.957,4.904,4.925,4.978,5.029,5.064,5.073,5.053,5.015,4.967,4.912,4.855,4.799,4.748,4.704,4.666,4.632,4.601,4.5680000000000005,4.527,4.476,4.412,4.331,4.235,4.126,4.006,3.881,3.754,3.631,3.516,3.4130000000000003,3.324,3.249,3.1860000000000004,3.133,3.087,3.048,3.014,, +St. Kitts and Nevis,KNA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,3.5,,,,,,,,,,3.3,,,,,2.8,,,,,2.6,,,,,2.4,,,,,2.107,,,,,,,,,,, +"Korea, Rep.",KOR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.155,5.989,5.789,5.574,5.357,5.157,4.987,4.845,4.725,4.624,4.53,4.54,4.14,4.1,3.81,3.47,3.05,3.02,2.65,2.9,2.83,2.66,2.42,2.08,1.96,1.67,1.6,1.55,1.56,1.58,1.59,1.74,1.78,1.67,1.67,1.65,1.58,1.54,1.47,1.42,1.47,1.3,1.17,1.19,1.16,1.0759999999999998,1.123,1.25,1.192,1.149,1.226,1.244,, +Kosovo,KSV,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,4.5760000000000005,4.884,4.476,4.82,4.564,4.466,4.43,4.263,3.922,3.903,3.584,2.958,2.84,2.7060000000000004,2.701,2.698,2.457,2.568,2.878,2.954,2.799,2.664,2.343,2.533,2.647,2.425,2.431,2.384,2.337,2.289,2.2,, +Kuwait,KWT,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.251,7.279,7.312,7.348,7.381,7.407,7.419,7.4129999999999985,7.382999999999999,7.327000000000001,7.241,7.124,6.978,6.809,6.622000000000001,6.4270000000000005,6.234,6.05,5.874,5.7029999999999985,5.524,5.319,5.075,4.7860000000000005,4.456,4.092,3.704,3.313,2.944,2.615,2.358,2.2,2.144,2.182,2.3,2.467,2.642,2.7880000000000003,2.878,2.903,2.869,2.7960000000000003,2.718,2.66,2.63,2.628,2.645,2.667,2.681,2.6830000000000003,2.673,2.652,, +Lao PDR,LAO,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.961,5.964,5.966,5.9689999999999985,5.971,5.973,5.974,5.973,5.973,5.972,5.974,5.979,5.99,6.006,6.029,6.059,6.096,6.1389999999999985,6.186,6.233,6.277,6.315,6.345,6.363,6.369,6.3610000000000015,6.3420000000000005,6.313,6.274,6.222,6.152,6.057,5.934,5.782,5.603,5.398,5.167999999999998,4.922,4.669,4.42,4.19,3.991,3.829,3.706,3.619,3.562,3.52,3.4810000000000003,3.432,3.3680000000000003,3.29,3.2,, +Lebanon,LBN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.739,5.724,5.694,5.647,5.5829999999999975,5.501,5.403,5.295,5.181,5.064,4.948,4.836,4.73,4.629,4.534,4.444,4.357,4.271,4.182,4.092,3.997,3.898,3.796,3.692,3.587,3.482,3.379,3.279,3.182,3.09,3.002,2.919,2.841,2.765,2.6910000000000003,2.617,2.543,2.468,2.39,2.31,2.226,2.137,2.044,1.948,1.854,1.765,1.686,1.621,1.57,1.535,1.513,1.5019999999999998,, +Liberia,LBR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.4060000000000015,6.4289999999999985,6.4529999999999985,6.476,6.5,6.524,6.5520000000000005,6.5829999999999975,6.617000000000001,6.655,6.695,6.7360000000000015,6.777,6.815,6.849,6.88,6.907,6.93,6.95,6.964,6.973,6.973,6.964,6.9460000000000015,6.9170000000000025,6.875,6.82,6.752000000000002,6.672999999999999,6.5870000000000015,6.499,6.414,6.336,6.267,6.2079999999999975,6.1560000000000015,6.109,6.061,6.007999999999999,5.948,5.88,5.8039999999999985,5.722,5.635,5.5470000000000015,5.456,5.3660000000000005,5.277,5.19,5.106,5.024,4.945,, +Libya,LBY,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.536,7.5710000000000015,7.607,7.642,7.676,7.71,7.7429999999999986,7.776,7.808,7.837999999999999,7.867000000000001,7.898,7.9289999999999985,7.957000000000002,7.979,7.992000000000001,7.992000000000001,7.976,7.939,7.872999999999997,7.769,7.619,7.4220000000000015,7.1789999999999985,6.897,6.584,6.252000000000002,5.9129999999999985,5.581,5.263,4.966,4.688,4.426,4.178,3.945,3.732,3.544,3.383,3.248,3.139,3.052,2.984,2.929,2.882,2.8360000000000003,2.79,2.741,2.69,2.637,2.582,2.525,2.467,, +St. Lucia,LCA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.9670000000000005,6.931,6.88,6.8210000000000015,6.757999999999999,6.688,6.607,6.507999999999999,6.3870000000000005,6.249,6.101,5.9529999999999985,5.813,5.686,5.5710000000000015,5.4620000000000015,5.347,5.216,5.064,4.891,4.703,4.512,4.328,4.1610000000000005,4.0139999999999985,3.888,3.78,3.683,3.589,3.495,3.398,3.298,3.195,3.09,2.983,2.873,2.76,2.644,2.528,2.416,2.313,2.224,2.152,2.0980000000000003,2.062,2.04,2.029,2.022,2.013,2.0,1.982,1.96,, +Latin America & Caribbean (all income levels),LCN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.98,5.977,5.959,5.921,5.8660000000000005,5.7920000000000025,5.704,5.608,5.5070000000000014,5.405,5.301,5.197,5.091,4.982,4.871,4.759,4.646,4.533,4.419,4.307,4.1960000000000015,4.087,3.978,3.871,3.766,3.664,3.564,3.469,3.377,3.2910000000000004,3.209,3.134,3.065,3.0,2.9410000000000003,2.886,2.833,2.785,2.738,2.692,2.6460000000000004,2.597,2.549,2.5,2.452,2.405,2.361,2.32,2.285,2.254,2.228,2.205,, +Liechtenstein,LIE,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.57,1.52,1.47,1.36,1.44,1.49,1.43,1.42,1.43,1.71,1.4,1.69,, +Sri Lanka,LKA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.541,5.421,5.299,5.18,5.067,4.959,4.849,4.734,4.609,4.477,4.342,4.208,4.083,3.97,3.87,3.783,3.705,3.633,3.562,3.488,3.408,3.319,3.2230000000000003,3.12,3.012,2.904,2.8,2.7030000000000003,2.617,2.544,2.483,2.4330000000000003,2.39,2.353,2.32,2.291,2.268,2.251,2.24,2.236,2.237,2.2430000000000003,2.252,2.263,2.274,2.286,2.298,2.311,2.323,2.335,2.343,2.347,, +Lesotho,LSO,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.839,5.829,5.82,5.812,5.806,5.8020000000000005,5.801,5.803,5.805,5.807,5.808,5.807,5.8020000000000005,5.794,5.78,5.761,5.7360000000000015,5.706,5.6720000000000015,5.632999999999999,5.589,5.5420000000000025,5.4910000000000005,5.436,5.377000000000002,5.313,5.244,5.169,5.088,5.004,4.919,4.837,4.759,4.686,4.617,4.548,4.475,4.394,4.302,4.2,4.089,3.975,3.862,3.754,3.654,3.562,3.48,3.405,3.335,3.269,3.207,3.148,, +Lithuania,LTU,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.56,2.53,2.45,2.35,2.28,2.23,2.22,2.23,2.24,2.3,2.37,2.38,2.33,2.25,2.21,2.19,2.17,2.13,2.09,2.04,2.03,1.98,1.99,2.04,2.09,2.1,2.14,2.16,2.09,1.98,2.03,1.97,1.89,1.67,1.57,1.55,1.49,1.47,1.46,1.46,1.39,1.3,1.24,1.26,1.26,1.27,1.31,1.35,1.47,1.55,1.55,1.76,, +Luxembourg,LUX,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.28,,2.369,,2.34,2.42,2.34,2.24,2.12,2.02,1.98,1.92,1.72,1.52,1.55,1.55,,1.45,1.49,1.48,1.5,1.55,1.49,1.44,1.43,1.38,1.44,1.4,1.51,1.52,1.62,1.6,1.67,1.69,1.72,1.68,1.76,1.71,1.68,1.74,1.76,1.66,1.63,1.62,1.66,1.63,1.65,1.61,1.61,1.59,1.63,1.52,, +Latvia,LVA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,1.94,1.94,1.91,1.85,1.79,1.74,1.76,1.8,1.83,1.88,1.96,2.0,2.0,1.98,1.97,1.96,1.93,1.89,1.87,1.87,1.86,1.88,1.97,2.07,2.09,2.08,2.12,2.15,2.11,2.05,2.02,1.86,1.73,1.51,1.39,1.25,1.16,1.11,1.09,1.16,1.24,1.21,1.23,1.29,1.24,1.31,1.35,1.41,1.44,1.31,1.17,1.34,, +"Macao SAR, China",MAC,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,4.945,4.763,4.525,4.242,3.926,3.594,3.261,2.942,2.647,2.388,2.166,1.98,1.821,1.683,1.568,1.484,1.44,1.4409999999999998,1.485,1.5630000000000002,1.665,1.777,1.882,1.966,2.021,2.04,2.019,1.966,1.891,1.798,1.694,1.589,1.487,1.394,1.3119999999999998,1.242,1.179,1.119,1.057,0.996,0.939,0.8909999999999999,0.856,0.838,0.836,0.8490000000000001,0.8740000000000001,0.906,0.939,0.973,1.003,1.031,, +St. Martin (French part),MAF,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,2.4,2.4,2.3,2.2,2.1,2.1,2.1,2.2,2.1,2.1,1.9,1.8,1.8,1.8,1.8,1.8,1.8,1.8,1.8,1.8,1.8,1.8,1.8,1.8,1.8,1.8,1.8,1.8,1.8,1.8,, +Morocco,MAR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.065,7.106,7.131,7.135,7.119,7.081,7.024,6.9529999999999985,6.871,6.7810000000000015,6.687,6.587999999999999,6.485,6.38,6.273,6.1679999999999975,6.067,5.97,5.876,5.782,5.682,5.57,5.439,5.29,5.122999999999998,4.942,4.754,4.567,4.387,4.217,4.058,3.905,3.755,3.606,3.457,3.31,3.167,3.033,2.909,2.797,2.698,2.611,2.535,2.47,2.418,2.385,2.377,2.398,2.443,2.509,2.583,2.652,, +Monaco,MCO,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Moldova,MDA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.3280000000000003,3.259,3.178,3.0860000000000003,2.989,2.891,2.801,2.722,2.66,2.613,2.582,2.56,2.542,2.523,2.503,2.483,2.465,2.455,2.454,2.462,2.481,2.51,2.546,2.585,2.62,2.643,2.6460000000000004,2.625,2.5780000000000003,2.506,2.4130000000000003,2.305,2.191,2.079,1.975,1.882,1.801,1.73,1.6669999999999998,1.6130000000000002,1.568,1.535,1.511,1.497,1.489,1.487,1.487,1.4880000000000002,1.487,1.483,1.477,1.469,, +Madagascar,MDG,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.3,7.3,7.3,7.3,7.3,7.301,7.3039999999999985,7.31,7.316,7.322,7.325,7.325,7.318,7.3,7.269,7.216,7.129,7.007999999999999,6.857,6.687,6.5139999999999985,6.359,6.24,6.165,6.135,6.146,6.182,6.225,6.256,6.268,6.257999999999999,6.225,6.1789999999999985,6.126,6.066,5.999,5.924,5.841,5.749,5.651,5.547999999999999,5.443,5.3370000000000015,5.233,5.132999999999999,5.039,4.952,4.87,4.794,4.722,4.654,4.59,, +Maldives,MDV,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.021,7.075,7.1179999999999986,7.152,7.1789999999999985,7.2010000000000005,7.218,7.231,7.237,7.237,7.227,7.2010000000000005,7.159,7.103,7.04,6.981,6.941,6.931,6.9529999999999985,7.002000000000002,7.0710000000000015,7.146,7.21,7.245,7.24,7.183,7.064,6.888,6.664,6.397,6.099,5.783,5.461,5.146,4.845,4.56,4.289,4.024,3.763,3.51,3.2710000000000004,3.055,2.869,2.715,2.596,2.508,2.449,2.41,2.382,2.36,2.339,2.314,, +Mexico,MEX,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.783,6.776,6.771,6.768,6.767,6.769,6.773,6.777,6.775,6.76,6.72,6.643,6.525,6.364,6.164,5.932,5.6789999999999985,5.4179999999999975,5.1629999999999985,4.924,4.705,4.51,4.334,4.174,4.029,3.898,3.778,3.669,3.5660000000000003,3.468,3.375,3.285,3.199,3.117,3.04,2.966,2.8960000000000004,2.8310000000000004,2.77,2.712,2.659,2.61,2.565,2.523,2.484,2.448,2.4130000000000003,2.379,2.346,2.313,2.281,2.248,, +Marshall Islands,MHL,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,5.9,,,,,,,,,,,,5.71,,,,,,4.5,4.5,4.5,,,,,, +"Macedonia, FYR",MKD,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.72,3.666,3.602,3.528,3.446,3.358,3.27,3.185,3.108,3.039,2.98,2.928,2.88,2.834,2.789,2.745,2.7030000000000003,2.665,2.629,2.597,2.567,2.537,2.507,2.474,2.44,2.404,2.369,2.336,2.305,2.275,2.244,2.208,2.164,2.113,2.0540000000000003,1.989,1.92,1.852,1.788,1.729,1.6780000000000002,1.635,1.598,1.567,1.54,1.519,1.501,1.486,1.473,1.462,1.452,1.443,, +Mali,MLI,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.7029999999999985,6.725,6.747000000000001,6.77,6.7929999999999975,6.816,6.837999999999999,6.858,6.875,6.8889999999999985,6.901,6.9129999999999985,6.924,6.937,6.9510000000000005,6.966,6.982,6.999,7.016,7.0310000000000015,7.046,7.059,7.07,7.08,7.087999999999999,7.093,7.095,7.0920000000000005,7.086,7.0760000000000005,7.062,7.044,7.023,6.999,6.973,6.947,6.921,6.896,6.8729999999999976,6.853,6.836,6.822,6.811,6.803,6.7970000000000015,6.796,6.799,6.806,6.817,6.83,6.841,6.85,, +Malta,MLT,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.62,3.274,3.237,2.904,2.79,2.52,2.326,2.236,2.12,2.019,2.025,2.06,2.007,1.649,1.64,2.274,2.205,2.18,2.1180000000000003,2.1,1.99,1.87,1.98,1.965,1.95,1.99,1.98,1.98,2.08,2.11,2.05,2.04,2.12,2.01,1.89,1.83,2.1,1.95,1.88,1.77,1.7,1.48,1.45,1.48,1.4,1.38,1.39,1.37,1.44,1.43,1.38,1.38,, +Myanmar,MMR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.051,6.073,6.096,6.1160000000000005,6.13,6.136,6.129,6.109,6.074,6.024,5.959,5.881,5.791,5.694,5.5920000000000005,5.488,5.3870000000000005,5.289,5.194,5.1,5.001,4.891,4.7639999999999985,4.619,4.456,4.279,4.0939999999999985,3.909,3.732,3.5660000000000003,3.415,3.279,3.158,3.0460000000000003,2.945,2.8510000000000004,2.761,2.675,2.59,2.508,2.428,2.353,2.286,2.227,2.178,2.137,2.103,2.075,2.049,2.026,2.003,1.98,, +Montenegro,MNE,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.5210000000000004,3.417,3.3080000000000003,3.199,3.093,2.994,2.906,2.833,2.773,2.7260000000000004,2.689,2.657,2.625,2.59,2.549,2.503,2.4530000000000003,2.402,2.354,2.309,2.266,2.225,2.185,2.145,2.104,2.063,2.022,1.98,1.94,1.902,1.869,1.843,1.825,1.815,1.813,1.815,1.82,1.824,1.826,1.823,1.815,1.804,1.7919999999999998,1.779,1.767,1.756,1.745,1.734,1.722,1.71,1.6980000000000002,1.6869999999999998,, +Mongolia,MNG,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.9529999999999985,7.1679999999999975,7.347,7.477,7.558,7.593,7.599,7.591,7.584,7.5779999999999985,7.569,7.546,7.497000000000001,7.4129999999999985,7.294,7.144,6.9689999999999985,6.78,6.5870000000000015,6.395,6.209,6.033,5.864,5.6960000000000015,5.526,5.345,5.14,4.9060000000000015,4.644,4.356,4.052,3.746,3.451,3.18,2.9410000000000003,2.738,2.57,2.43,2.312,2.216,2.144,2.102,2.089,2.103,2.141,2.193,2.254,2.315,2.3680000000000003,2.41,2.437,2.447,, +Northern Mariana Islands,MNP,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Mozambique,MOZ,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.6,6.6,6.601,6.601,6.602,6.602,6.602,6.601,6.599,6.596,6.591,6.586,6.58,6.572,6.564,6.5539999999999985,6.544,6.532,6.519,6.505,6.49,6.474,6.4570000000000025,6.439,6.42,6.398,6.3729999999999976,6.345,6.313,6.277,6.237,6.191,6.14,6.086,6.0310000000000015,5.976,5.925,5.88,5.84,5.808,5.782,5.76,5.7410000000000005,5.721,5.697,5.669,5.6320000000000014,5.587999999999999,5.5360000000000005,5.476,5.409,5.337999999999999,, +Mauritania,MRT,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.775,6.787000000000001,6.794,6.797999999999999,6.799,6.799,6.797999999999999,6.797999999999999,6.795,6.791,6.784,6.774,6.759,6.739,6.712999999999999,6.681,6.641,6.5939999999999985,6.541,6.484,6.426,6.3679999999999986,6.314,6.2639999999999985,6.2189999999999985,6.178,6.141,6.104,6.065,6.023,5.978,5.928,5.875,5.818,5.757999999999999,5.6960000000000015,5.632999999999999,5.569,5.505,5.442,5.381,5.3210000000000015,5.263,5.205,5.15,5.095,5.042,4.99,4.939,4.888,4.837,4.783,, +Mauritius,MUS,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.1670000000000025,6.178,6.124,5.9929999999999986,5.785,5.51,5.187,4.847,4.516,4.213,3.952,3.741,3.575,3.444,3.341,3.255,3.169,3.071,2.954,2.818,2.672,2.532,2.412,2.325,2.16,2.02,1.99,2.05,2.14,2.23,2.32,2.3,2.37,2.21,2.25,2.14,2.12,2.04,1.97,2.05,1.99,1.91,1.94,1.87,1.87,1.82,1.7,1.66,1.58,1.5,1.47,1.45,, +Malawi,MWI,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.9129999999999985,6.9460000000000015,6.983,7.021,7.06,7.101,7.141,7.182,7.222,7.263,7.3039999999999985,7.346,7.3889999999999985,7.433,7.477,7.518,7.555,7.584,7.605,7.617000000000001,7.621,7.619,7.612999999999999,7.601,7.582999999999997,7.548999999999999,7.49,7.402,7.287000000000001,7.148,6.997000000000001,6.85,6.7189999999999985,6.614,6.5360000000000005,6.483,6.4460000000000015,6.4110000000000005,6.369,6.317,6.254,6.186,6.119,6.058,6.002000000000002,5.95,5.899,5.843,5.7810000000000015,5.7120000000000015,5.636,5.5539999999999985,, +Malaysia,MYS,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.194,6.136,6.0520000000000005,5.942,5.808,5.655,5.492000000000001,5.3260000000000005,5.165,5.0139999999999985,4.872,4.737,4.603,4.4689999999999985,4.337,4.209,4.092,3.99,3.906,3.839,3.789,3.753,3.725,3.702,3.679,3.656,3.63,3.604,3.576,3.5460000000000003,3.515,3.485,3.454,3.422,3.385,3.339,3.275,3.19,3.085,2.9610000000000003,2.825,2.6830000000000003,2.544,2.418,2.307,2.216,2.146,2.093,2.052,2.023,2.002,1.986,, +Namibia,NAM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.15,6.1670000000000025,6.184,6.199,6.216,6.2360000000000015,6.263,6.301,6.347,6.401,6.459,6.517,6.57,6.613,6.642,6.654,6.647,6.622000000000001,6.581,6.524,6.4510000000000005,6.362,6.259,6.145,6.022,5.893,5.76,5.625,5.4910000000000005,5.358,5.227,5.098,4.97,4.842,4.715,4.59,4.4689999999999985,4.351,4.24,4.134,4.033,3.938,3.847,3.759,3.674,3.591,3.512,3.4360000000000004,3.364,3.295,3.229,3.167,, +New Caledonia,NCL,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.278,6.144,6.01,5.8729999999999976,5.737,5.6,5.385,5.17,4.88,4.59,4.3,4.176,4.051,3.927,3.803,3.679,3.554,3.43,3.372,3.314,3.256,3.198,3.14,3.093,3.047,3.0,3.025,3.05,3.097,3.143,3.19,3.02,2.85,2.763,2.677,2.59,2.645,2.7,2.677,2.653,2.63,2.47,2.37,2.3,2.18,2.2,2.29,2.2,2.166,2.2,2.193,2.172,, +Niger,NER,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.0520000000000005,7.0829999999999975,7.1160000000000005,7.15,7.185,7.222,7.26,7.3,7.341,7.3820000000000014,7.4220000000000015,7.46,7.495,7.526,7.553,7.5779999999999985,7.603,7.627999999999999,7.654,7.681,7.707000000000002,7.731,7.751,7.7639999999999985,7.773,7.775,7.774,7.771,7.767,7.7639999999999985,7.763,7.7639999999999985,7.766,7.769,7.771,7.773,7.772,7.767,7.7570000000000014,7.7429999999999986,7.725,7.704,7.681,7.657999999999999,7.636,7.617000000000001,7.602,7.593,7.587999999999999,7.585,7.584,7.581,, +Nigeria,NGA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.354,6.351,6.346,6.341,6.336,6.335,6.3420000000000005,6.359,6.3870000000000005,6.425,6.471,6.522,6.575,6.625,6.669,6.706,6.735,6.7570000000000014,6.772,6.7810000000000015,6.783,6.779,6.767,6.749,6.726,6.698,6.664,6.625,6.5820000000000025,6.537000000000001,6.49,6.443,6.395,6.348,6.303,6.261,6.222,6.187,6.154,6.125,6.099,6.077000000000001,6.058,6.0420000000000025,6.029,6.02,6.015,6.015,6.017,6.021,6.022,6.017,, +Nicaragua,NIC,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.336,7.2570000000000014,7.1789999999999985,7.109,7.0520000000000005,7.01,6.981,6.961,6.941,6.919,6.892,6.855,6.807,6.7479999999999976,6.678,6.597,6.51,6.42,6.327000000000001,6.232,6.131,6.018,5.89,5.746,5.589,5.426,5.267,5.118,4.985,4.865,4.754,4.642,4.519,4.381,4.225,4.055,3.878,3.702,3.535,3.384,3.2510000000000003,3.139,3.0460000000000003,2.967,2.903,2.8480000000000003,2.802,2.759,2.717,2.675,2.631,2.585,, +Netherlands,NLD,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.122,3.217,3.176,3.193,3.1660000000000004,3.039,2.903,2.814,2.716,2.748,2.572,2.362,2.151,1.904,1.773,1.664,1.632,1.579,1.5830000000000002,1.5630000000000002,1.602,1.5630000000000002,1.495,1.4680000000000002,1.491,1.511,1.5530000000000002,1.558,1.55,1.55,1.62,1.61,1.59,1.57,1.57,1.53,1.53,1.53,1.63,1.65,1.72,1.71,1.73,1.75,1.72,1.71,1.72,1.72,1.77,1.79,1.79,1.76,, +Norway,NOR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.846,2.9130000000000003,2.887,2.906,2.964,2.932,2.893,2.8,2.75,2.699,2.503,2.498,2.372,2.238,2.137,1.991,1.871,1.76,1.775,1.755,1.72,1.7,1.69,1.66,1.66,1.68,1.71,1.8,1.84,1.88,1.93,1.92,1.88,1.86,1.87,1.87,1.89,1.86,1.81,1.85,1.85,1.78,1.75,1.8,1.83,1.84,1.9,1.9,1.96,1.98,1.95,1.88,, +Nepal,NPL,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.9929999999999986,5.994,5.995,5.996,5.997000000000001,5.997000000000001,5.996,5.994,5.988,5.981,5.971,5.9579999999999975,5.945,5.9289999999999985,5.912000000000001,5.894,5.8729999999999976,5.85,5.824,5.795,5.76,5.721,5.676,5.625,5.569,5.507999999999999,5.444,5.377999999999999,5.31,5.239,5.165,5.088,5.004,4.914,4.817,4.711,4.596,4.473,4.343,4.208,4.0680000000000005,3.924,3.778,3.632,3.486,3.34,3.194,3.0460000000000003,2.899,2.755,2.619,2.496,, +New Zealand,NZL,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,4.129,4.099,4.107,3.989,3.733,3.54,3.41,3.354,3.332,3.269,3.158,3.194,3.0,2.696,2.57,2.331,2.273,2.229,2.07,2.12,2.03,2.01,1.95,1.92,1.93,1.93,1.96,2.03,2.1,2.12,2.18,2.16,2.12,2.05,2.0,1.99,1.96,1.95,1.92,1.94,2.0,1.97,1.89,1.91,2.0,1.96,2.0,2.11,2.19,2.14,2.16,2.1,, +OECD members,OED,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.247,3.252,3.208,3.1910000000000003,3.173,3.08,2.925,2.917,2.872,2.835,2.799,2.736,2.604,2.522,2.465,2.369,2.302,2.255,2.197,2.191,2.169,2.121,2.101,2.049,2.022,2.0,1.975,1.958,1.963,1.954,1.965,1.943,1.922,1.889,1.864,1.826,1.816,1.803,1.798,1.786,1.805,1.777,1.76,1.767,1.7719999999999998,1.766,1.796,1.817,1.824,1.79,1.78,1.759,, +Oman,OMN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.247000000000001,7.247999999999997,7.251,7.256,7.263,7.271,7.277,7.282,7.286,7.292999999999997,7.311,7.35,7.414,7.504,7.617000000000001,7.747000000000001,7.885,8.017999999999999,8.137,8.232000000000001,8.299,8.338,8.352,8.34,8.299,8.222000000000001,8.101,7.933,7.7189999999999985,7.4620000000000015,7.164,6.831,6.472,6.098,5.72,5.346,4.982,4.631,4.298,3.992,3.72,3.488,3.297,3.144,3.029,2.951,2.906,2.887,2.886,2.894,2.901,2.899,, +Other small states,OSS,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.841,5.849,5.847,5.8320000000000025,5.8039999999999985,5.768,5.733,5.7079999999999975,5.695,5.698,5.71,5.723,5.727,5.716,5.689,5.651,5.602,5.569,5.537000000000001,5.511,5.487,5.462999999999999,5.422999999999999,5.4,5.348,5.289,5.234,5.169,5.129,5.073,5.012,4.94,4.863,4.789,4.723,4.645,4.572,4.475,4.39,4.317,4.2360000000000015,4.158,4.097,4.033,3.968,3.902,3.834,3.777,3.733,3.691,3.646,3.604,, +Pakistan,PAK,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.6,6.601,6.602,6.605,6.608,6.6110000000000015,6.612,6.608,6.599,6.5829999999999975,6.561,6.535,6.507999999999999,6.483,6.46,6.436,6.407,6.367000000000001,6.31,6.234,6.138,6.024,5.899,5.767,5.634,5.499,5.359,5.207999999999998,5.042,4.8610000000000015,4.669,4.474,4.29,4.125,3.986,3.873,3.785,3.713,3.648,3.5810000000000004,3.509,3.43,3.347,, +Panama,PAN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.87,5.846,5.812,5.765,5.7070000000000025,5.638,5.559,5.472,5.377999999999999,5.279,5.172999999999999,5.06,4.939,4.81,4.675,4.537,4.398,4.26,4.128,4.002,3.884,3.775,3.673,3.579,3.492,3.41,3.334,3.262,3.195,3.132,3.075,3.024,2.982,2.948,2.9210000000000003,2.901,2.884,2.87,2.855,2.839,2.821,2.799,2.775,2.75,2.724,2.696,2.667,2.637,2.608,2.5780000000000003,2.549,2.521,, +Peru,PER,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.876,6.872000000000001,6.86,6.836,6.8,6.75,6.684,6.605,6.515,6.415,6.307,6.192,6.073,5.952000000000001,5.8279999999999985,5.702000000000001,5.572,5.437,5.2970000000000015,5.153,5.009,4.8660000000000005,4.729,4.598,4.475,4.36,4.25,4.144,4.038,3.933,3.828,3.722,3.617,3.514,3.4130000000000003,3.317,3.2260000000000004,3.142,3.064,2.9930000000000003,2.929,2.872,2.82,2.773,2.73,2.689,2.65,2.614,2.579,2.545,2.511,2.479,, +Philippines,PHL,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.148,7.0870000000000015,7.02,6.947,6.867000000000001,6.7810000000000015,6.689,6.589,6.485,6.376,6.2639999999999985,6.152,6.041,5.931,5.824,5.718,5.613,5.506,5.399,5.29,5.183,5.078,4.978,4.883,4.795,4.712,4.632,4.5539999999999985,4.476,4.397,4.32,4.246,4.177,4.113,4.056,4.006,3.962,3.923,3.888,3.852,3.813,3.766,3.709,3.642,3.5660000000000003,3.485,3.403,3.326,3.257,3.199,3.151,3.111,, +Palau,PLW,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,2.757,,,,,2.861,,,,,1.535,,,,,,,,,,,,, +Papua New Guinea,PNG,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.275,6.278,6.278,6.275,6.268,6.257999999999999,6.244,6.227,6.2079999999999975,6.187,6.1629999999999985,6.1370000000000005,6.108,6.077000000000001,6.041,6.0,5.954,5.9,5.839,5.771,5.694,5.609,5.515,5.415,5.312,5.21,5.11,5.018,4.934,4.8610000000000015,4.802,4.757,4.724,4.7010000000000005,4.685,4.671,4.654,4.631,4.599,4.557,4.507,4.4510000000000005,4.392,4.335,4.279,4.226,4.174,4.122,4.067,4.011,3.954,3.896,, +Poland,POL,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.98,2.83,2.72,2.697,2.57,2.52,2.34,2.33,2.24,2.2,2.2,2.25,2.235,2.255,2.26,2.27,2.302,2.23,2.205,2.28,2.276,2.235,2.336,2.416,2.372,2.329,2.22,2.154,2.13,2.0780000000000003,2.04,2.05,1.93,1.85,1.798,1.61,1.58,1.513,1.44,1.37,1.35,1.31,1.25,1.22,1.23,1.24,1.27,1.31,1.39,1.4,1.38,1.3,, +Puerto Rico,PRI,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,4.657,4.547,4.4110000000000005,4.252,4.075,3.888,3.703,3.53,3.377,3.248,3.1460000000000004,3.068,3.006,2.955,2.908,2.864,2.818,2.769,2.718,2.664,2.607,2.548,2.49,2.436,2.387,2.344,2.3080000000000003,2.279,2.256,2.236,2.219,2.201,2.18,2.154,2.124,2.088,1.94,1.9,1.9,1.974,2.049,1.935,1.832,1.7619999999999998,1.7819999999999998,1.77,1.712,1.651,1.652,1.653,1.664,1.653,, +"Korea, Dem. Rep.",PRK,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,4.579,4.357,4.173,4.057,4.022,4.064,4.159,4.262,4.336,4.364,4.327,4.214,4.038,3.816,3.564,3.307,3.075,2.889,2.761,2.693,2.676,2.687,2.698,2.69,2.654,2.593,2.515,2.438,2.374,2.325,2.289,2.262,2.235,2.202,2.1630000000000003,2.121,2.079,2.042,2.015,1.999,1.991,1.992,1.996,2.0,2.004,2.005,2.006,2.005,2.005,2.004,2.003,2.0,, +Portugal,PRT,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.006,3.1830000000000003,3.213,3.084,3.153,3.0780000000000003,3.052,2.9960000000000004,2.902,2.849,2.759,2.799,2.697,2.655,2.599,2.517,2.569,2.448,2.231,2.112,2.19,2.144,2.19,1.946,1.92,1.74,1.63,1.57,1.53,1.48,1.43,1.42,1.48,1.53,1.44,1.38,1.43,1.46,1.48,1.5,1.55,1.45,1.47,1.44,1.4,1.4,1.36,1.33,1.37,1.32,1.36,1.35,, +Paraguay,PRY,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.5,6.489,6.472,6.447,6.41,6.356,6.276,6.17,6.041,5.894,5.739,5.589,5.456,5.347,5.267,5.2170000000000005,5.1960000000000015,5.195,5.2029999999999985,5.214,5.2189999999999985,5.212999999999999,5.191,5.151,5.0939999999999985,5.02,4.931,4.835,4.7360000000000015,4.637,4.541,4.448,4.356,4.266,4.177,4.09,4.005,3.921,3.839,3.758,3.677,3.595,3.512,3.429,3.346,3.266,3.1910000000000003,3.123,3.063,3.012,2.968,2.931,, +Pacific island small states,PSS,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.774,6.6789999999999985,6.572,6.4570000000000025,6.336,6.214,6.091,5.9689999999999985,5.848,5.73,5.6160000000000005,5.51,5.4129999999999985,5.3279999999999985,5.257999999999999,5.202000000000001,5.158,5.122000000000001,5.085,5.042,4.99,4.927,4.855,4.7780000000000005,4.7010000000000005,4.627,4.56,4.501,4.449,4.402,4.357,4.312,4.2639999999999985,4.215,4.163,4.11,4.056,4.002,3.948,3.894,3.842,3.791,3.741,3.693,3.646,3.6010000000000004,3.557,3.514,3.472,3.43,3.389,3.349,, +French Polynesia,PYF,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.658,5.577000000000001,5.5,5.43,5.3679999999999986,5.314,5.267,5.222,5.174,5.12,5.057,4.98,4.8889999999999985,4.785,4.67,4.548,4.423,4.301,4.185,4.08,3.989,3.916,3.858,3.812,3.774,3.738,3.697,3.645,3.579,3.497,3.4,3.2910000000000004,3.175,3.059,2.946,2.841,2.745,2.66,2.585,2.52,2.463,2.414,2.37,2.329,2.289,2.251,2.216,2.184,2.156,2.132,2.11,2.092,, +Qatar,QAT,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.971,6.973,6.977,6.981,6.985,6.987,6.987,6.983,6.973,6.952000000000001,6.9179999999999975,6.8660000000000005,6.794,6.7029999999999985,6.595,6.474,6.3439999999999985,6.211,6.079,5.947,5.811,5.665,5.504,5.3260000000000005,5.1320000000000014,4.9289999999999985,4.722,4.521,4.333,4.163,4.016,3.894,3.796,3.715,3.648,3.59,3.534,3.477,3.411,3.334,3.241,3.127,2.9960000000000004,2.853,2.7030000000000003,2.555,2.418,2.299,2.2030000000000003,2.133,2.085,2.055,, +Romania,ROU,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.34,2.173,2.04,2.008,1.963,1.907,1.9,3.66,3.63,3.19,2.886,2.67,2.548,2.439,2.71,2.6,2.55,2.57,2.52,2.48,2.43,2.36,2.166,2.06,2.26,2.31,2.386,2.313,2.306,2.2,1.84,1.57,1.52,1.44,1.41,1.3430000000000002,1.3,1.32,1.32,1.3,1.31,1.27,1.25,1.27,1.29,1.32,1.32,1.3,1.35,1.38,1.33,1.25,, +Russian Federation,RUS,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.52,2.45,2.36,2.27,2.18,2.13,2.1,2.04,1.99,1.97,1.99,2.03,2.04,2.01,2.0,1.98,1.97,1.95,1.92,1.9,1.89,1.91,2.04,2.11,2.06,2.05,2.15,2.22,2.12,2.01,1.89,1.732,1.5519999999999998,1.385,1.4,1.34,1.277,1.23,1.24,1.17,1.21,1.25,1.3,1.31,1.33,1.29,1.3,1.41,1.49,1.54,1.54,1.54,, +Rwanda,RWA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,8.187000000000001,8.193999999999999,8.197000000000001,8.198,8.198,8.198,8.198,8.201,8.207,8.217,8.231,8.252,8.277999999999999,8.307,8.339,8.37,8.399,8.423,8.441,8.449,8.448,8.439,8.423,8.397,8.355,8.283999999999999,8.169,8.004,7.792000000000002,7.541,7.271,7.005,6.766,6.568,6.416,6.307,6.229,6.16,6.085,5.9979999999999976,5.897,5.7860000000000005,5.674,5.566,5.462999999999999,5.365,5.267,5.167000000000002,5.062,4.954,4.841,4.728,, +Saudi Arabia,SAU,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.216,7.23,7.2429999999999986,7.252000000000002,7.2570000000000014,7.26,7.262,7.2639999999999985,7.267,7.273,7.28,7.289,7.298999999999999,7.307,7.312,7.313,7.309,7.298999999999999,7.2810000000000015,7.252000000000002,7.206,7.14,7.05,6.939,6.806,6.6560000000000015,6.496,6.331,6.166,6.004,5.8439999999999985,5.685,5.522,5.352,5.174,4.989,4.795,4.5939999999999985,4.39,4.187,3.99,3.804,3.634,3.482,3.349,3.234,3.136,3.05,2.971,2.898,2.829,2.763,, +Sudan,SDN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.691,6.712999999999999,6.737,6.7620000000000005,6.787000000000001,6.81,6.831,6.85,6.865,6.877999999999999,6.888,6.899,6.91,6.921,6.93,6.936,6.933,6.919,6.892,6.853,6.8020000000000005,6.7410000000000005,6.674,6.605,6.535,6.4670000000000005,6.401,6.337999999999999,6.275,6.214,6.153,6.0920000000000005,6.028,5.9620000000000015,5.893,5.8210000000000015,5.747000000000001,5.6720000000000015,5.596,5.52,5.444,5.3660000000000005,5.287000000000001,5.206,5.122999999999998,5.039,4.956,4.873,4.792,4.713,4.637,4.563,, +Senegal,SEN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.9510000000000005,6.994,7.0360000000000005,7.075,7.114,7.152,7.189,7.227,7.266,7.303,7.338999999999999,7.374,7.405,7.432,7.452000000000001,7.465,7.468,7.461,7.445,7.417999999999997,7.3820000000000014,7.3370000000000015,7.284,7.225,7.16,7.087999999999999,7.01,6.925,6.8320000000000025,6.734,6.629,6.519,6.404,6.287000000000001,6.169,6.0539999999999985,5.943,5.8370000000000015,5.737,5.645,5.561,5.484,5.4129999999999985,5.346,5.285,5.229,5.181,5.14,5.107,5.078,5.05,5.019,, +Singapore,SGP,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.454,5.256,5.2,5.007,4.853,4.698,4.498,3.946,3.562,3.2460000000000004,3.0860000000000003,3.0380000000000003,3.048,2.8,2.359,2.079,2.111,1.82,1.759,1.791,1.737,1.723,1.706,1.608,1.615,1.614,1.433,1.621,1.956,1.754,1.865,1.77,1.76,1.778,1.75,1.71,1.696,1.635,1.494,1.475,,1.41,1.37,1.27,1.26,1.26,1.28,1.29,1.28,1.22,1.15,1.2,, +Solomon Islands,SLB,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.388,6.385,6.382999999999999,6.385,6.394,6.419,6.47,6.549,6.655,6.7810000000000015,6.914,7.04,7.145,7.216,7.247999999999997,7.2360000000000015,7.182,7.096,6.99,6.871,6.7479999999999976,6.6320000000000014,6.525,6.431,6.349,6.278,6.211,6.1389999999999985,6.056,5.961,5.851,5.728,5.596,5.461,5.3260000000000005,5.197,5.077,4.968,4.872,4.789,4.72,4.665,4.618,4.578,4.54,4.502,4.459,4.412,4.359,4.3,4.2360000000000015,4.168,, +Sierra Leone,SLE,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.033,6.093,6.158,6.229,6.3020000000000005,6.376,6.449,6.519,6.5829999999999975,6.643,6.697,6.7479999999999976,6.797999999999999,6.847,6.894,6.938,6.979,7.013,7.0379999999999985,7.0539999999999985,7.058,7.047999999999999,7.025,6.99,6.945,6.8889999999999985,6.824,6.752999999999999,6.678,6.601,6.525,6.4529999999999985,6.385,6.32,6.26,6.204,6.15,6.098,6.0429999999999975,5.985,5.92,5.845,5.759,5.664,5.56,5.4510000000000005,5.34,5.232,5.127999999999999,5.032,4.9430000000000005,4.8610000000000015,, +El Salvador,SLV,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.728,6.749,6.752000000000002,6.7360000000000015,6.699,6.643,6.5710000000000015,6.487,6.396,6.3,6.2029999999999985,6.106,6.01,5.914,5.817,5.718,5.615,5.506,5.3889999999999985,5.266,5.1370000000000005,5.004,4.87,4.738,4.609,4.485,4.367,4.255,4.148,4.047,3.951,3.862,3.777,3.695,3.614,3.529,3.432,3.323,3.201,3.07,2.934,2.803,2.6830000000000003,2.58,2.496,2.4330000000000003,2.386,2.35,2.319,2.291,2.263,2.236,, +San Marino,SMR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Somalia,SOM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.25,7.252000000000002,7.255,7.257999999999999,7.261,7.261,7.2570000000000014,7.247999999999997,7.232,7.209,7.182,7.151,7.1179999999999986,7.086,7.057,7.033,7.016,7.005,7.0,7.002999999999999,7.013,7.03,7.053,7.08,7.112,7.149,7.19,7.237,7.2879999999999985,7.341,7.397,7.455,7.512,7.567,7.616,7.655,7.6789999999999985,7.687,7.678,7.651,7.61,7.556,7.495,7.4289999999999985,7.3610000000000015,7.292000000000002,7.2189999999999985,7.14,7.056,6.965,6.869,6.769,, +Serbia,SRB,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,2.5,,,,,,,,,,2.3,,,,,,,,,,2.1,,,,,,,,,,1.8,,,,1.7,,1.6,,,1.48,1.58,1.57,1.59,1.57,1.45,1.43,1.38,1.4,1.44,1.4,1.36,, +South Sudan,SSD,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.721,6.733,6.747000000000001,6.763,6.7810000000000015,6.8,6.819,6.837999999999999,6.855,6.869,6.881,6.892,6.903,6.912000000000001,6.92,6.924,6.9220000000000015,6.9129999999999985,6.897,6.874,6.85,6.829,6.813,6.806,6.806,6.811,6.817,6.819,6.813,6.796,6.769,6.729,6.682,6.627000000000002,6.567,6.502999999999999,6.435,6.364,6.289,6.2120000000000015,6.132999999999999,6.05,5.9620000000000015,5.871,5.777,5.68,5.5820000000000025,5.483,5.385,5.2879999999999985,5.194,5.101,, +Sao Tome and Principe,STP,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.242000000000001,6.263,6.284,6.306,6.327000000000001,6.349,6.371,6.394,6.419,6.444,6.468,6.49,6.51,6.525,6.534,6.535,6.528,6.513,6.489,6.455,6.409,6.348,6.271,6.181,6.0779999999999985,5.9670000000000005,5.849,5.73,5.613,5.501,5.395,5.296,5.2029999999999985,5.115,5.032,4.956,4.887,4.8260000000000005,4.773,4.727,4.687,4.654,4.625,4.598,4.572,4.542,4.506,4.462,4.4110000000000005,4.352,4.287,4.217,, +Suriname,SUR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.608,6.5939999999999985,6.558,6.497000000000001,6.412000000000001,6.3039999999999985,6.182,6.053,5.9220000000000015,5.79,5.653,5.504,5.336,5.148,4.945,4.735,4.5310000000000015,4.3439999999999985,4.18,4.041,3.922,3.815,3.708,3.594,3.471,3.338,3.2,3.063,2.9360000000000004,2.823,2.733,2.6710000000000003,2.639,2.634,2.651,2.682,2.717,2.7460000000000004,2.762,2.759,2.739,2.702,2.656,2.609,2.562,2.518,2.478,2.441,2.406,2.374,2.345,2.318,, +Slovak Republic,SVK,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.04,2.96,2.83,2.92,2.89,2.78,2.66,2.48,2.39,2.43,2.41,2.43,2.49,2.56,2.61,2.55,2.55,2.49,2.47,2.45,2.32,2.29,2.28,2.28,2.26,2.26,2.2,2.14,2.13,2.07,2.09,2.05,1.93,1.87,1.67,1.52,1.47,1.43,1.37,1.33,1.3,1.2,1.19,1.2,1.24,1.25,1.24,1.25,1.32,1.41,1.4,1.45,, +Slovenia,SVN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.324,2.325,2.33,2.336,2.34,2.341,2.336,2.326,2.312,2.294,2.273,2.255,2.239,2.227,2.218,2.209,2.195,2.172,2.138,2.093,2.039,1.978,1.93,1.81,1.74,1.71,1.67,1.65,1.63,1.52,1.46,1.42,1.33,1.33,1.32,1.29,1.28,1.25,1.23,1.21,1.26,1.21,1.21,1.2,1.25,1.26,1.31,1.38,1.53,1.53,1.57,1.56,, +Sweden,SWE,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.174,2.213,2.246,2.3280000000000003,2.474,2.391,2.367,2.281,2.067,1.943,1.939,1.978,1.927,1.88,1.888,1.779,1.689,1.644,1.601,1.6569999999999998,1.68,1.63,1.65,1.61,1.66,1.74,1.79,1.9,1.975,2.02,2.13,2.11,2.09,2.0,1.88,1.73,1.6,1.52,1.5,1.5,1.54,1.57,1.65,1.71,1.75,1.77,1.85,1.88,1.91,1.94,1.98,1.9,, +Swaziland,SWZ,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.7170000000000005,6.73,6.745,6.763,6.782,6.8020000000000005,6.822,6.841,6.857,6.869,6.875,6.876,6.87,6.858,6.84,6.817,6.79,6.761,6.729,6.695,6.658,6.6179999999999986,6.573,6.52,6.459,6.384,6.291,6.18,6.051,5.905,5.744,5.5710000000000015,5.392,5.211,5.035,4.8660000000000005,4.709,4.564,4.432,4.313,4.209,4.121,4.046,3.982,3.925,3.871,3.818,3.761,3.699,3.632,3.559,3.483,, +Sint Maarten (Dutch part),SXM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,1.5,1.7,1.7,,,, +Seychelles,SYC,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,4.5,,,,,,3.5,,,,,3.0,,,,,2.696,,,,,2.1,2.04,2.04,2.08,1.98,2.04,2.1,2.0,2.2,2.1,2.24,2.3,2.4,2.1,2.1,, +Syrian Arab Republic,SYR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.467,7.497000000000001,7.522,7.541,7.555,7.564,7.569,7.572,7.574,7.574,7.572,7.566,7.556,7.537000000000001,7.51,7.472,7.4220000000000015,7.359,7.285,7.197,7.0939999999999985,6.976,6.843,6.695,6.534,6.359,6.1679999999999975,5.962999999999999,5.7479999999999976,5.529,5.313,5.11,4.925,4.76,4.618,4.495,4.386,4.282,4.178,4.07,3.958,3.841,3.724,3.61,3.5010000000000003,3.401,3.313,3.237,3.173,3.1210000000000004,3.0780000000000003,3.04,, +Turks and Caicos Islands,TCA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Chad,TCD,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.25,6.268,6.285,6.301,6.318,6.3370000000000015,6.362,6.393,6.432,6.477,6.528,6.5820000000000025,6.636,6.688,6.7360000000000015,6.78,6.82,6.857,6.892,6.925,6.9579999999999975,6.99,7.023,7.056,7.089,7.124,7.1610000000000005,7.199,7.237999999999999,7.276,7.313,7.346,7.376,7.399,7.416,7.425,7.426,7.419,7.405,7.383999999999999,7.354,7.315,7.268,7.2120000000000015,7.147,7.074,6.992000000000001,6.902,6.805,6.702000000000001,6.596,6.4860000000000015,, +Togo,TGO,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.521,6.57,6.622000000000001,6.6770000000000005,6.734,6.7920000000000025,6.851,6.9110000000000005,6.971,7.029,7.084,7.136,7.182,7.222,7.254,7.275,7.286,7.284,7.27,7.244,7.207000000000002,7.158,7.099,7.032,6.9570000000000025,6.874,6.7810000000000015,6.6789999999999985,6.569,6.452000000000001,6.331,6.206,6.081,5.9570000000000025,5.8370000000000015,5.725,5.62,5.524,5.437,5.359,5.2879999999999985,5.224,5.166,5.1110000000000015,5.059,5.009,4.962,4.918,4.876,4.835,4.792,4.746,, +Thailand,THA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.147,6.151,6.155,6.157,6.151,6.129,6.084,6.009,5.903,5.7639999999999985,5.595,5.397,5.181,4.953,4.721,4.488,4.257,4.03,3.808,3.594,3.392,3.202,3.024,2.859,2.707,2.571,2.451,2.346,2.256,2.1790000000000003,2.113,2.055,2.003,1.956,1.911,1.867,1.824,1.784,1.745,1.709,1.676,1.644,1.615,1.588,1.5630000000000002,1.539,1.517,1.496,1.477,1.459,1.443,1.4269999999999998,, +Tajikistan,TJK,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.235,6.266,6.308,6.365,6.433,6.513,6.602,6.693,6.775,6.841,6.877999999999999,6.87,6.814,6.712999999999999,6.572,6.402,6.22,6.0429999999999975,5.8870000000000005,5.759,5.6629999999999985,5.601,5.561,5.533,5.51,5.4860000000000015,5.4529999999999985,5.408,5.347,5.27,5.175,5.067,4.95,4.83,4.709,4.587,4.462,4.334,4.203,4.075,3.954,3.848,3.76,3.695,3.653,3.636,3.642,3.667,3.703,3.743,3.78,3.807,, +Turkmenistan,TKM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.415,6.537000000000001,6.626,6.6679999999999975,6.6629999999999985,6.6160000000000005,6.545,6.4689999999999985,6.403,6.35,6.3020000000000005,6.249,6.175,6.0710000000000015,5.939,5.783,5.612,5.441,5.279,5.135,5.012,4.915,4.836,4.772,4.718,4.669,4.623,4.572,4.513,4.44,4.345,4.222,4.0710000000000015,3.898,3.707,3.512,3.325,3.159,3.0210000000000004,2.914,2.837,2.783,2.741,2.701,2.66,2.615,2.569,2.523,2.482,2.445,2.412,2.381,, +Timor-Leste,TLS,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.3729999999999976,6.376,6.375,6.367000000000001,6.347,6.314,6.268,6.2070000000000025,6.1320000000000014,6.039,5.9170000000000025,5.751,5.541,5.297999999999999,5.037,4.794,4.6110000000000015,4.5139999999999985,4.513,4.606,4.767,4.956,5.13,5.256,5.324,5.336,5.308,5.271,5.256,5.273,5.34,5.4689999999999985,5.651,5.874,6.125,6.384,6.627000000000002,6.8320000000000025,6.9860000000000015,7.079,7.112,7.0920000000000005,7.037000000000001,6.965,6.649,6.3320000000000025,6.016,5.7,5.7,5.7,5.5779999999999985,5.4529999999999985,, +Tonga,TON,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.362999999999999,7.346,7.302,7.226,7.117000000000001,6.974,6.795,6.59,6.371,6.15,5.941,5.761,5.6160000000000005,5.5120000000000005,5.449,5.426,5.438,5.471,5.509,5.541,5.553,5.532,5.475,5.385,5.266,5.127999999999999,4.989,4.864,4.763,4.691,4.644,4.612,4.583,4.547,4.501,4.447,4.391,4.34,4.3,4.27,4.25,4.2360000000000015,4.221,4.202,4.177,4.144,4.104,4.059,4.012,3.963,3.914,3.864,, +Trinidad and Tobago,TTO,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.2639999999999985,5.1770000000000005,5.047,4.873,4.664,4.433,4.2,3.985,3.802,3.658,3.554,3.484,3.432,3.389,3.349,3.313,3.287,3.273,3.2710000000000004,3.278,3.284,3.281,3.261,3.218,3.151,3.06,2.949,2.827,2.7,2.574,2.4530000000000003,2.339,2.231,2.131,2.04,1.961,1.896,1.843,1.801,1.7719999999999998,1.753,1.744,1.744,1.749,1.758,1.769,1.779,1.788,1.796,1.8,1.802,1.801,, +Tunisia,TUN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.0429999999999975,7.087999999999999,7.1179999999999986,7.125,7.107,7.059,6.978,6.869,6.737,6.59,6.438,6.2920000000000025,6.16,6.046,5.95,5.867000000000001,5.79,5.706,5.606,5.488,5.349,5.189,5.015,4.833,4.645,4.454,4.265,4.077,3.893,3.714,3.5380000000000003,3.363,3.188,3.013,2.9,2.67,2.51,2.38,2.23,2.09,2.08,2.05,2.0,2.06,2.02,2.04,2.03,2.04,2.06,2.05,2.13,2.13,, +Turkey,TUR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.303,6.2410000000000005,6.175,6.104,6.029,5.9510000000000005,5.874,5.7970000000000015,5.721,5.644,5.563,5.475,5.375,5.263,5.14,5.008,4.872,4.738,4.6080000000000005,4.4830000000000005,4.3610000000000015,4.239,4.114,3.982,3.844,3.704,3.563,3.427,3.3,3.1830000000000003,3.0780000000000003,2.987,2.906,2.835,2.772,2.715,2.661,2.609,2.557,2.506,2.454,2.404,2.356,2.311,2.27,2.234,2.202,2.173,2.147,2.123,2.101,2.08,, +Tuvalu,TUV,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +Tanzania,TZA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.806,6.806,6.8039999999999985,6.803,6.801,6.797999999999999,6.795,6.791,6.785,6.778,6.771,6.765,6.761,6.757999999999999,6.755,6.751,6.7429999999999986,6.73,6.711,6.685,6.653,6.6179999999999986,6.58,6.5420000000000025,6.504,6.465,6.424,6.379,6.3279999999999985,6.273,6.212999999999999,6.148,6.081,6.013,5.9460000000000015,5.882999999999999,5.8279999999999985,5.78,5.7410000000000005,5.711,5.689,5.675,5.666,5.659,5.651,5.638,5.6160000000000005,5.585,5.5429999999999975,5.49,5.428,5.359,, +Uganda,UGA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.999,7.019,7.04,7.06,7.0779999999999985,7.0939999999999985,7.106,7.113,7.117000000000001,7.1179999999999986,7.115,7.1110000000000015,7.107,7.103,7.1,7.099,7.099,7.099,7.099,7.1,7.1,7.101,7.101,7.102,7.103,7.103,7.103,7.102,7.1,7.097,7.091,7.0820000000000025,7.0710000000000015,7.057,7.039,7.018,6.994,6.9670000000000005,6.937,6.903,6.865,6.822,6.772,6.716,6.653,6.5829999999999975,6.5070000000000014,6.425,6.337999999999999,6.2479999999999976,6.155,6.06,, +Ukraine,UKR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.24,2.17,2.14,2.06,1.96,1.99,2.02,2.01,1.998,2.04,2.09,2.12,2.08,2.04,2.04,2.02,1.99,1.94,1.96,1.96,1.95,1.93,1.98,2.08,2.09,2.06,2.08,2.05,2.02,1.92,1.848,1.81,1.72,1.6,1.5,1.4,1.3,1.3,1.2,1.2,1.1,1.1,1.1,1.2,1.2,1.2,1.31,1.345,1.39,1.46,1.445,1.459,, +Uruguay,URY,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,2.881,2.887,2.885,2.874,2.858,2.841,2.8310000000000004,2.8310000000000004,2.844,2.869,2.902,2.938,2.969,2.988,2.9930000000000003,2.9810000000000003,2.951,2.905,2.849,2.787,2.724,2.665,2.614,2.574,2.546,2.53,2.523,2.523,2.524,2.523,2.518,2.506,2.487,2.463,2.432,2.398,2.362,2.327,2.295,2.267,2.2430000000000003,2.2230000000000003,2.205,2.188,2.171,2.155,2.138,2.122,2.107,2.093,2.08,2.068,, +United States,USA,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,3.654,3.62,3.4610000000000003,3.319,3.19,2.9130000000000003,2.721,2.5580000000000003,2.464,2.456,2.48,2.266,2.01,1.879,1.835,1.774,1.7380000000000002,1.79,1.76,1.808,1.839,1.812,1.827,1.7990000000000002,1.806,1.844,1.837,1.872,1.934,2.014,2.081,2.062,2.046,2.019,2.002,1.978,1.976,1.971,1.999,2.007,2.056,2.0340000000000003,2.013,2.042,2.045,2.0540000000000003,2.1,2.122,2.084,2.001,1.931,1.895,, +Uzbekistan,UZB,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.7070000000000025,6.755,6.783,6.79,6.777,6.7479999999999976,6.7070000000000025,6.66,6.608,6.5520000000000005,6.492000000000001,6.4220000000000015,6.337999999999999,6.237,6.119,5.983,5.829,5.66,5.482,5.3020000000000005,5.127000000000002,4.968,4.829,4.711,4.6160000000000005,4.539,4.474,4.5,4.28,4.1789999999999985,4.072,4.199,4.004,3.8,3.537,3.596,3.32,3.082,2.815,2.72,2.58,2.46,2.52,2.36,2.46,2.36,2.39,2.55,2.64,2.53,2.499,2.499,, +St. Vincent and the Grenadines,VCT,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.224,7.155,7.074,6.981,6.876,6.76,6.6320000000000014,6.494,6.345,6.185,6.0139999999999985,5.8279999999999985,5.629,5.4170000000000025,5.197,4.973,4.752,4.54,4.339,4.154,3.985,3.832,3.692,3.5610000000000004,3.439,3.3280000000000003,3.23,3.144,3.072,3.01,2.9560000000000004,2.907,2.86,2.8110000000000004,2.76,2.7030000000000003,2.641,2.576,2.509,2.442,2.379,2.321,2.271,2.229,2.196,2.17,2.149,2.131,2.112,2.092,2.07,2.046,, +"Venezuela, RB",VEN,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.6160000000000005,6.6370000000000005,6.627999999999999,6.581,6.495,6.3679999999999986,6.2029999999999985,6.0139999999999985,5.811,5.605,5.404,5.2189999999999985,5.053,4.905,4.779,4.67,4.574,4.4830000000000005,4.391,4.296,4.199,4.104,4.0139999999999985,3.933,3.861,3.794,3.73,3.665,3.597,3.524,3.448,3.37,3.292,3.218,3.147,3.082,3.022,2.967,2.915,2.867,2.822,2.779,2.739,2.701,2.664,2.629,2.595,2.562,2.531,2.501,2.472,2.444,, +Virgin Islands (U.S.),VIR,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,5.615,5.651,5.6789999999999985,5.6960000000000015,5.698,5.6789999999999985,5.634,5.561,5.459,5.3279999999999985,5.167000000000002,4.976,4.76,4.527,4.2860000000000005,4.047,3.818,3.607,3.42,3.261,3.138,3.053,3.0,2.9730000000000003,2.967,2.9730000000000003,2.986,2.997,2.999,2.987,2.954,2.895,2.813,2.712,2.599,2.481,2.367,2.265,2.184,2.128,2.055,1.9,2.113,2.006,2.068,2.111,1.95,1.915,1.88,1.845,1.8,1.8,, +Vietnam,VNM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.348,6.392,6.425,6.448,6.464,6.475,6.485,6.4929999999999986,6.494,6.487,6.465,6.421,6.35,6.251,6.125,5.973,5.8,5.614,5.422999999999999,5.232,5.046,4.865,4.691,4.521,4.359,4.205,4.063,3.931,3.806,3.684,3.5580000000000003,3.4160000000000004,3.255,3.074,2.878,2.676,2.482,2.309,2.166,2.057,1.983,1.94,1.918,1.907,1.902,1.897,1.889,1.877,1.862,1.843,1.82,1.794,, +Vanuatu,VUT,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.197,7.12,7.033,6.938,6.836,6.73,6.626,6.526,6.433,6.348,6.272,6.202000000000001,6.134,6.067,5.999,5.9289999999999985,5.858,5.787000000000001,5.716,5.645,5.575,5.502999999999999,5.43,5.356,5.282,5.209,5.141,5.078,5.022,4.971,4.927,4.887,4.85,4.814,4.775,4.73,4.677,4.614,4.542,4.459,4.368,4.268,4.162,4.056,3.95,3.851,3.76,3.679,3.608,3.549,3.499,3.4560000000000004,, +West Bank and Gaza,PSE,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,6.532,6.547999999999999,6.539,6.4929999999999986,6.404,6.274,6.1110000000000015,5.931,5.7479999999999976,5.5710000000000015,5.404,5.247999999999998,5.1,4.958,4.823,4.697,4.581,4.476,4.381,4.295,4.216,4.144,, +Samoa,WSM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.651,7.645,7.63,7.604,7.567,7.519,7.4620000000000015,7.4,7.334,7.265,7.194,7.119,7.039,6.952000000000001,6.859,6.761,6.6560000000000015,6.5470000000000015,6.434,6.32,6.2029999999999985,6.086,5.968,5.85,5.734,5.62,5.51,5.404,5.303,5.207999999999998,5.118,5.034,4.956,4.882,4.815,4.751,4.692,4.637,4.587,4.541,4.503,4.476,4.46,4.454,4.456,4.46,4.46,4.45,4.426,4.3889999999999985,4.338,4.277,, +"Yemen, Rep.",YEM,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.292000000000002,7.308,7.3279999999999985,7.354,7.385,7.417999999999997,7.447,7.471,7.491,7.512,7.542000000000002,7.593,7.6720000000000015,7.782,7.9220000000000015,8.089,8.277000000000001,8.474,8.667,8.843,8.993,9.108,9.185,9.223,9.223,9.186,9.119,9.03,8.925,8.805,8.667,8.504,8.311,8.088,7.841,7.5779999999999985,7.31,7.049,6.8020000000000005,6.574,6.363,6.166,5.975,5.782,5.587999999999999,5.393,5.199,5.01,4.829,4.658,4.498,4.348,, +South Africa,ZAF,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.172999999999999,6.144,6.103,6.049,5.984,5.9110000000000005,5.836,5.765,5.7,5.643,5.591,5.539,5.482,5.415,5.337999999999999,5.251,5.159,5.064,4.9689999999999985,4.877,4.7860000000000005,4.695,4.602,4.504,4.402,4.293,4.177,4.052,3.923,3.791,3.658,3.53,3.408,3.2960000000000003,3.196,3.11,3.04,2.983,2.937,2.899,2.866,2.834,2.801,2.763,2.721,2.675,2.627,2.58,2.5380000000000003,2.5,2.467,2.438,, +"Congo, Dem. Rep.",COD,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,6.001,6.015,6.03,6.047999999999999,6.067,6.089,6.1110000000000015,6.135,6.1610000000000005,6.187,6.214,6.242000000000001,6.271,6.301,6.3329999999999975,6.3660000000000005,6.403,6.443,6.487,6.535,6.585,6.636,6.689,6.742000000000001,6.794,6.847,6.902,6.96,7.019,7.077000000000001,7.132999999999999,7.183,7.223,7.251,7.267,7.267,7.252999999999999,7.227,7.19,7.143,7.089,7.027,6.96,6.8870000000000005,6.809,6.728,6.642,6.55,6.454,6.354,6.251,6.146,, +Zambia,ZMB,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.018,7.0710000000000015,7.127000000000002,7.184,7.24,7.292000000000002,7.337999999999999,7.376,7.405,7.425,7.437,7.443,7.4460000000000015,7.447,7.444,7.435,7.414,7.377999999999999,7.326,7.258999999999999,7.182,7.098,7.015,6.937,6.865,6.799,6.737,6.672999999999999,6.606,6.537000000000001,6.468,6.401,6.34,6.2879999999999985,6.245,6.209,6.1789999999999985,6.152,6.126,6.098,6.0710000000000015,6.044,6.018,5.995,5.974,5.954,5.932,5.908,5.881,5.849,5.813,5.773,, +Zimbabwe,ZWE,"Fertility rate, total (births per woman)",SP.DYN.TFRT.IN,7.158,7.215,7.267,7.311,7.347,7.372999999999997,7.391,7.403,7.411,7.415,7.417000000000002,7.419,7.42,7.417000000000002,7.41,7.395,7.369,7.33,7.273,7.1960000000000015,7.095,6.9670000000000005,6.811,6.632999999999999,6.435,6.223,6.004,5.784,5.569,5.365,5.176,5.001,4.84,4.69,4.5539999999999985,4.432,4.328,4.24,4.169,4.112,4.069,4.039,4.018,4.002,3.987,3.969,3.941,3.903,3.853,3.792,3.721,3.643,, \ No newline at end of file diff --git a/statsmodels/datasets/grunfeld/__init__.py b/statsmodels/datasets/grunfeld/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/grunfeld/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/grunfeld/data.py b/statsmodels/datasets/grunfeld/data.py new file mode 100644 index 0000000..09ec317 --- /dev/null +++ b/statsmodels/datasets/grunfeld/data.py @@ -0,0 +1,91 @@ +"""Grunfeld (1950) Investment Data""" +import pandas as pd + +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """This is public domain.""" +TITLE = __doc__ +SOURCE = """This is the Grunfeld (1950) Investment Data. + +The source for the data was the original 11-firm data set from Grunfeld's Ph.D. +thesis recreated by Kleiber and Zeileis (2008) "The Grunfeld Data at 50". +The data can be found here. +http://statmath.wu-wien.ac.at/~zeileis/grunfeld/ + +For a note on the many versions of the Grunfeld data circulating see: +http://www.stanford.edu/~clint/bench/grunfeld.htm +""" + +DESCRSHORT = """Grunfeld (1950) Investment Data for 11 U.S. Firms.""" + +DESCRLONG = DESCRSHORT + +NOTE = """:: + + Number of observations - 220 (20 years for 11 firms) + + Number of variables - 5 + + Variables name definitions:: + + invest - Gross investment in 1947 dollars + value - Market value as of Dec. 31 in 1947 dollars + capital - Stock of plant and equipment in 1947 dollars + firm - General Motors, US Steel, General Electric, Chrysler, + Atlantic Refining, IBM, Union Oil, Westinghouse, Goodyear, + Diamond Match, American Steel + year - 1935 - 1954 + + Note that raw_data has firm expanded to dummy variables, since it is a + string categorical variable. +""" + +def load(as_pandas=None): + """ + Loads the Grunfeld data and returns a Dataset class. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + + Notes + ----- + raw_data has the firm variable expanded to dummy variables for each + firm (ie., there is no reference dummy) + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + +def load_pandas(): + """ + Loads the Grunfeld data and returns a Dataset class. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + + Notes + ----- + raw_data has the firm variable expanded to dummy variables for each + firm (ie., there is no reference dummy) + """ + data = _get_data() + data.year = data.year.astype(float) + raw_data = pd.get_dummies(data) + ds = du.process_pandas(data, endog_idx=0) + ds.raw_data = raw_data + return ds + + +def _get_data(): + data = du.load_csv(__file__, 'grunfeld.csv') + return data diff --git a/statsmodels/datasets/grunfeld/grunfeld.csv b/statsmodels/datasets/grunfeld/grunfeld.csv new file mode 100644 index 0000000..b2adbe5 --- /dev/null +++ b/statsmodels/datasets/grunfeld/grunfeld.csv @@ -0,0 +1,221 @@ +invest,value,capital,firm,year +317.6,3078.5,2.8,General Motors,1935 +391.8,4661.7,52.6,General Motors,1936 +410.6,5387.1,156.9,General Motors,1937 +257.7,2792.2,209.2,General Motors,1938 +330.8,4313.2,203.4,General Motors,1939 +461.2,4643.9,207.2,General Motors,1940 +512,4551.2,255.2,General Motors,1941 +448,3244.1,303.7,General Motors,1942 +499.6,4053.7,264.1,General Motors,1943 +547.5,4379.3,201.6,General Motors,1944 +561.2,4840.9,265,General Motors,1945 +688.1,4900.9,402.2,General Motors,1946 +568.9,3526.5,761.5,General Motors,1947 +529.2,3254.7,922.4,General Motors,1948 +555.1,3700.2,1020.1,General Motors,1949 +642.9,3755.6,1099,General Motors,1950 +755.9,4833,1207.7,General Motors,1951 +891.2,4924.9,1430.5,General Motors,1952 +1304.4,6241.7,1777.3,General Motors,1953 +1486.7,5593.6,2226.3,General Motors,1954 +209.9,1362.4,53.8,US Steel,1935 +355.3,1807.1,50.5,US Steel,1936 +469.9,2676.3,118.1,US Steel,1937 +262.3,1801.9,260.2,US Steel,1938 +230.4,1957.3,312.7,US Steel,1939 +361.6,2202.9,254.2,US Steel,1940 +472.8,2380.5,261.4,US Steel,1941 +445.6,2168.6,298.7,US Steel,1942 +361.6,1985.1,301.8,US Steel,1943 +288.2,1813.9,279.1,US Steel,1944 +258.7,1850.2,213.8,US Steel,1945 +420.3,2067.7,132.6,US Steel,1946 +420.5,1796.7,264.8,US Steel,1947 +494.5,1625.8,306.9,US Steel,1948 +405.1,1667,351.1,US Steel,1949 +418.8,1677.4,357.8,US Steel,1950 +588.2,2289.5,342.1,US Steel,1951 +645.5,2159.4,444.2,US Steel,1952 +641,2031.3,623.6,US Steel,1953 +459.3,2115.5,669.7,US Steel,1954 +33.1,1170.6,97.8,General Electric,1935 +45,2015.8,104.4,General Electric,1936 +77.2,2803.3,118,General Electric,1937 +44.6,2039.7,156.2,General Electric,1938 +48.1,2256.2,172.6,General Electric,1939 +74.4,2132.2,186.6,General Electric,1940 +113,1834.1,220.9,General Electric,1941 +91.9,1588,287.8,General Electric,1942 +61.3,1749.4,319.9,General Electric,1943 +56.8,1687.2,321.3,General Electric,1944 +93.6,2007.7,319.6,General Electric,1945 +159.9,2208.3,346,General Electric,1946 +147.2,1656.7,456.4,General Electric,1947 +146.3,1604.4,543.4,General Electric,1948 +98.3,1431.8,618.3,General Electric,1949 +93.5,1610.5,647.4,General Electric,1950 +135.2,1819.4,671.3,General Electric,1951 +157.3,2079.7,726.1,General Electric,1952 +179.5,2371.6,800.3,General Electric,1953 +189.6,2759.9,888.9,General Electric,1954 +40.29,417.5,10.5,Chrysler,1935 +72.76,837.8,10.2,Chrysler,1936 +66.26,883.9,34.7,Chrysler,1937 +51.6,437.9,51.8,Chrysler,1938 +52.41,679.7,64.3,Chrysler,1939 +69.41,727.8,67.1,Chrysler,1940 +68.35,643.6,75.2,Chrysler,1941 +46.8,410.9,71.4,Chrysler,1942 +47.4,588.4,67.1,Chrysler,1943 +59.57,698.4,60.5,Chrysler,1944 +88.78,846.4,54.6,Chrysler,1945 +74.12,893.8,84.8,Chrysler,1946 +62.68,579,96.8,Chrysler,1947 +89.36,694.6,110.2,Chrysler,1948 +78.98,590.3,147.4,Chrysler,1949 +100.66,693.5,163.2,Chrysler,1950 +160.62,809,203.5,Chrysler,1951 +145,727,290.6,Chrysler,1952 +174.93,1001.5,346.1,Chrysler,1953 +172.49,703.2,414.9,Chrysler,1954 +39.68,157.7,183.2,Atlantic Refining,1935 +50.73,167.9,204,Atlantic Refining,1936 +74.24,192.9,236,Atlantic Refining,1937 +53.51,156.7,291.7,Atlantic Refining,1938 +42.65,191.4,323.1,Atlantic Refining,1939 +46.48,185.5,344,Atlantic Refining,1940 +61.4,199.6,367.7,Atlantic Refining,1941 +39.67,189.5,407.2,Atlantic Refining,1942 +62.24,151.2,426.6,Atlantic Refining,1943 +52.32,187.7,470,Atlantic Refining,1944 +63.21,214.7,499.2,Atlantic Refining,1945 +59.37,232.9,534.6,Atlantic Refining,1946 +58.02,249,566.6,Atlantic Refining,1947 +70.34,224.5,595.3,Atlantic Refining,1948 +67.42,237.3,631.4,Atlantic Refining,1949 +55.74,240.1,662.3,Atlantic Refining,1950 +80.3,327.3,683.9,Atlantic Refining,1951 +85.4,359.4,729.3,Atlantic Refining,1952 +91.9,398.4,774.3,Atlantic Refining,1953 +81.43,365.7,804.9,Atlantic Refining,1954 +20.36,197,6.5,IBM,1935 +25.98,210.3,15.8,IBM,1936 +25.94,223.1,27.7,IBM,1937 +27.53,216.7,39.2,IBM,1938 +24.6,286.4,48.6,IBM,1939 +28.54,298,52.5,IBM,1940 +43.41,276.9,61.5,IBM,1941 +42.81,272.6,80.5,IBM,1942 +27.84,287.4,94.4,IBM,1943 +32.6,330.3,92.6,IBM,1944 +39.03,324.4,92.3,IBM,1945 +50.17,401.9,94.2,IBM,1946 +51.85,407.4,111.4,IBM,1947 +64.03,409.2,127.4,IBM,1948 +68.16,482.2,149.3,IBM,1949 +77.34,673.8,164.4,IBM,1950 +95.3,676.9,177.2,IBM,1951 +99.49,702,200,IBM,1952 +127.52,793.5,211.5,IBM,1953 +135.72,927.3,238.7,IBM,1954 +24.43,138,100.2,Union Oil,1935 +23.21,200.1,125,Union Oil,1936 +32.78,210.1,142.4,Union Oil,1937 +32.54,161.2,165.1,Union Oil,1938 +26.65,161.7,194.8,Union Oil,1939 +33.71,145.1,222.9,Union Oil,1940 +43.5,110.6,252.1,Union Oil,1941 +34.46,98.1,276.3,Union Oil,1942 +44.28,108.8,300.3,Union Oil,1943 +70.8,118.2,318.2,Union Oil,1944 +44.12,126.5,336.2,Union Oil,1945 +48.98,156.7,351.2,Union Oil,1946 +48.51,119.4,373.6,Union Oil,1947 +50,129.1,389.4,Union Oil,1948 +50.59,134.8,406.7,Union Oil,1949 +42.53,140.8,429.5,Union Oil,1950 +64.77,179,450.6,Union Oil,1951 +72.68,178.1,466.9,Union Oil,1952 +73.86,186.8,486.2,Union Oil,1953 +89.51,192.7,511.3,Union Oil,1954 +12.93,191.5,1.8,Westinghouse,1935 +25.9,516,0.8,Westinghouse,1936 +35.05,729,7.4,Westinghouse,1937 +22.89,560.4,18.1,Westinghouse,1938 +18.84,519.9,23.5,Westinghouse,1939 +28.57,628.5,26.5,Westinghouse,1940 +48.51,537.1,36.2,Westinghouse,1941 +43.34,561.2,60.8,Westinghouse,1942 +37.02,617.2,84.4,Westinghouse,1943 +37.81,626.7,91.2,Westinghouse,1944 +39.27,737.2,92.4,Westinghouse,1945 +53.46,760.5,86,Westinghouse,1946 +55.56,581.4,111.1,Westinghouse,1947 +49.56,662.3,130.6,Westinghouse,1948 +32.04,583.8,141.8,Westinghouse,1949 +32.24,635.2,136.7,Westinghouse,1950 +54.38,723.8,129.7,Westinghouse,1951 +71.78,864.1,145.5,Westinghouse,1952 +90.08,1193.5,174.8,Westinghouse,1953 +68.6,1188.9,213.5,Westinghouse,1954 +26.63,290.6,162,Goodyear,1935 +23.39,291.1,174,Goodyear,1936 +30.65,335,183,Goodyear,1937 +20.89,246,198,Goodyear,1938 +28.78,356.2,208,Goodyear,1939 +26.93,289.8,223,Goodyear,1940 +32.08,268.2,234,Goodyear,1941 +32.21,213.3,248,Goodyear,1942 +35.69,348.2,274,Goodyear,1943 +62.47,374.2,282,Goodyear,1944 +52.32,387.2,316,Goodyear,1945 +56.95,347.4,302,Goodyear,1946 +54.32,291.9,333,Goodyear,1947 +40.53,297.2,359,Goodyear,1948 +32.54,276.9,370,Goodyear,1949 +43.48,274.6,376,Goodyear,1950 +56.49,339.9,391,Goodyear,1951 +65.98,474.8,414,Goodyear,1952 +66.11,496,443,Goodyear,1953 +49.34,474.5,468,Goodyear,1954 +2.54,70.91,4.5,Diamond Match,1935 +2,87.94,4.71,Diamond Match,1936 +2.19,82.2,4.57,Diamond Match,1937 +1.99,58.72,4.56,Diamond Match,1938 +2.03,80.54,4.38,Diamond Match,1939 +1.81,86.47,4.21,Diamond Match,1940 +2.14,77.68,4.12,Diamond Match,1941 +1.86,62.16,3.83,Diamond Match,1942 +0.93,62.24,3.58,Diamond Match,1943 +1.18,61.82,3.41,Diamond Match,1944 +1.36,65.85,3.31,Diamond Match,1945 +2.24,69.54,3.23,Diamond Match,1946 +3.81,64.97,3.9,Diamond Match,1947 +5.66,68,5.38,Diamond Match,1948 +4.21,71.24,7.39,Diamond Match,1949 +3.42,69.05,8.74,Diamond Match,1950 +4.67,83.04,9.07,Diamond Match,1951 +6,74.42,9.93,Diamond Match,1952 +6.53,63.51,11.68,Diamond Match,1953 +5.12,58.12,14.33,Diamond Match,1954 +2.938,30.284,52.011,American Steel,1935 +5.643,43.909,52.903,American Steel,1936 +10.233,107.02,54.499,American Steel,1937 +4.046,68.306,59.722,American Steel,1938 +3.326,84.164,61.659,American Steel,1939 +4.68,69.157,62.243,American Steel,1940 +5.732,60.148,63.361,American Steel,1941 +12.117,49.332,64.861,American Steel,1942 +15.276,75.18,67.953,American Steel,1943 +9.275,62.05,69.59,American Steel,1944 +9.577,59.152,69.144,American Steel,1945 +3.956,68.424,70.269,American Steel,1946 +3.834,48.505,71.051,American Steel,1947 +5.97,40.507,71.508,American Steel,1948 +6.433,39.961,73.827,American Steel,1949 +4.77,36.494,75.847,American Steel,1950 +6.532,46.082,77.367,American Steel,1951 +7.329,57.616,78.631,American Steel,1952 +9.02,57.441,80.215,American Steel,1953 +6.281,47.165,83.788,American Steel,1954 diff --git a/statsmodels/datasets/grunfeld/src/grunfeld.csv b/statsmodels/datasets/grunfeld/src/grunfeld.csv new file mode 100644 index 0000000..b2adbe5 --- /dev/null +++ b/statsmodels/datasets/grunfeld/src/grunfeld.csv @@ -0,0 +1,221 @@ +invest,value,capital,firm,year +317.6,3078.5,2.8,General Motors,1935 +391.8,4661.7,52.6,General Motors,1936 +410.6,5387.1,156.9,General Motors,1937 +257.7,2792.2,209.2,General Motors,1938 +330.8,4313.2,203.4,General Motors,1939 +461.2,4643.9,207.2,General Motors,1940 +512,4551.2,255.2,General Motors,1941 +448,3244.1,303.7,General Motors,1942 +499.6,4053.7,264.1,General Motors,1943 +547.5,4379.3,201.6,General Motors,1944 +561.2,4840.9,265,General Motors,1945 +688.1,4900.9,402.2,General Motors,1946 +568.9,3526.5,761.5,General Motors,1947 +529.2,3254.7,922.4,General Motors,1948 +555.1,3700.2,1020.1,General Motors,1949 +642.9,3755.6,1099,General Motors,1950 +755.9,4833,1207.7,General Motors,1951 +891.2,4924.9,1430.5,General Motors,1952 +1304.4,6241.7,1777.3,General Motors,1953 +1486.7,5593.6,2226.3,General Motors,1954 +209.9,1362.4,53.8,US Steel,1935 +355.3,1807.1,50.5,US Steel,1936 +469.9,2676.3,118.1,US Steel,1937 +262.3,1801.9,260.2,US Steel,1938 +230.4,1957.3,312.7,US Steel,1939 +361.6,2202.9,254.2,US Steel,1940 +472.8,2380.5,261.4,US Steel,1941 +445.6,2168.6,298.7,US Steel,1942 +361.6,1985.1,301.8,US Steel,1943 +288.2,1813.9,279.1,US Steel,1944 +258.7,1850.2,213.8,US Steel,1945 +420.3,2067.7,132.6,US Steel,1946 +420.5,1796.7,264.8,US Steel,1947 +494.5,1625.8,306.9,US Steel,1948 +405.1,1667,351.1,US Steel,1949 +418.8,1677.4,357.8,US Steel,1950 +588.2,2289.5,342.1,US Steel,1951 +645.5,2159.4,444.2,US Steel,1952 +641,2031.3,623.6,US Steel,1953 +459.3,2115.5,669.7,US Steel,1954 +33.1,1170.6,97.8,General Electric,1935 +45,2015.8,104.4,General Electric,1936 +77.2,2803.3,118,General Electric,1937 +44.6,2039.7,156.2,General Electric,1938 +48.1,2256.2,172.6,General Electric,1939 +74.4,2132.2,186.6,General Electric,1940 +113,1834.1,220.9,General Electric,1941 +91.9,1588,287.8,General Electric,1942 +61.3,1749.4,319.9,General Electric,1943 +56.8,1687.2,321.3,General Electric,1944 +93.6,2007.7,319.6,General Electric,1945 +159.9,2208.3,346,General Electric,1946 +147.2,1656.7,456.4,General Electric,1947 +146.3,1604.4,543.4,General Electric,1948 +98.3,1431.8,618.3,General Electric,1949 +93.5,1610.5,647.4,General Electric,1950 +135.2,1819.4,671.3,General Electric,1951 +157.3,2079.7,726.1,General Electric,1952 +179.5,2371.6,800.3,General Electric,1953 +189.6,2759.9,888.9,General Electric,1954 +40.29,417.5,10.5,Chrysler,1935 +72.76,837.8,10.2,Chrysler,1936 +66.26,883.9,34.7,Chrysler,1937 +51.6,437.9,51.8,Chrysler,1938 +52.41,679.7,64.3,Chrysler,1939 +69.41,727.8,67.1,Chrysler,1940 +68.35,643.6,75.2,Chrysler,1941 +46.8,410.9,71.4,Chrysler,1942 +47.4,588.4,67.1,Chrysler,1943 +59.57,698.4,60.5,Chrysler,1944 +88.78,846.4,54.6,Chrysler,1945 +74.12,893.8,84.8,Chrysler,1946 +62.68,579,96.8,Chrysler,1947 +89.36,694.6,110.2,Chrysler,1948 +78.98,590.3,147.4,Chrysler,1949 +100.66,693.5,163.2,Chrysler,1950 +160.62,809,203.5,Chrysler,1951 +145,727,290.6,Chrysler,1952 +174.93,1001.5,346.1,Chrysler,1953 +172.49,703.2,414.9,Chrysler,1954 +39.68,157.7,183.2,Atlantic Refining,1935 +50.73,167.9,204,Atlantic Refining,1936 +74.24,192.9,236,Atlantic Refining,1937 +53.51,156.7,291.7,Atlantic Refining,1938 +42.65,191.4,323.1,Atlantic Refining,1939 +46.48,185.5,344,Atlantic Refining,1940 +61.4,199.6,367.7,Atlantic Refining,1941 +39.67,189.5,407.2,Atlantic Refining,1942 +62.24,151.2,426.6,Atlantic Refining,1943 +52.32,187.7,470,Atlantic Refining,1944 +63.21,214.7,499.2,Atlantic Refining,1945 +59.37,232.9,534.6,Atlantic Refining,1946 +58.02,249,566.6,Atlantic Refining,1947 +70.34,224.5,595.3,Atlantic Refining,1948 +67.42,237.3,631.4,Atlantic Refining,1949 +55.74,240.1,662.3,Atlantic Refining,1950 +80.3,327.3,683.9,Atlantic Refining,1951 +85.4,359.4,729.3,Atlantic Refining,1952 +91.9,398.4,774.3,Atlantic Refining,1953 +81.43,365.7,804.9,Atlantic Refining,1954 +20.36,197,6.5,IBM,1935 +25.98,210.3,15.8,IBM,1936 +25.94,223.1,27.7,IBM,1937 +27.53,216.7,39.2,IBM,1938 +24.6,286.4,48.6,IBM,1939 +28.54,298,52.5,IBM,1940 +43.41,276.9,61.5,IBM,1941 +42.81,272.6,80.5,IBM,1942 +27.84,287.4,94.4,IBM,1943 +32.6,330.3,92.6,IBM,1944 +39.03,324.4,92.3,IBM,1945 +50.17,401.9,94.2,IBM,1946 +51.85,407.4,111.4,IBM,1947 +64.03,409.2,127.4,IBM,1948 +68.16,482.2,149.3,IBM,1949 +77.34,673.8,164.4,IBM,1950 +95.3,676.9,177.2,IBM,1951 +99.49,702,200,IBM,1952 +127.52,793.5,211.5,IBM,1953 +135.72,927.3,238.7,IBM,1954 +24.43,138,100.2,Union Oil,1935 +23.21,200.1,125,Union Oil,1936 +32.78,210.1,142.4,Union Oil,1937 +32.54,161.2,165.1,Union Oil,1938 +26.65,161.7,194.8,Union Oil,1939 +33.71,145.1,222.9,Union Oil,1940 +43.5,110.6,252.1,Union Oil,1941 +34.46,98.1,276.3,Union Oil,1942 +44.28,108.8,300.3,Union Oil,1943 +70.8,118.2,318.2,Union Oil,1944 +44.12,126.5,336.2,Union Oil,1945 +48.98,156.7,351.2,Union Oil,1946 +48.51,119.4,373.6,Union Oil,1947 +50,129.1,389.4,Union Oil,1948 +50.59,134.8,406.7,Union Oil,1949 +42.53,140.8,429.5,Union Oil,1950 +64.77,179,450.6,Union Oil,1951 +72.68,178.1,466.9,Union Oil,1952 +73.86,186.8,486.2,Union Oil,1953 +89.51,192.7,511.3,Union Oil,1954 +12.93,191.5,1.8,Westinghouse,1935 +25.9,516,0.8,Westinghouse,1936 +35.05,729,7.4,Westinghouse,1937 +22.89,560.4,18.1,Westinghouse,1938 +18.84,519.9,23.5,Westinghouse,1939 +28.57,628.5,26.5,Westinghouse,1940 +48.51,537.1,36.2,Westinghouse,1941 +43.34,561.2,60.8,Westinghouse,1942 +37.02,617.2,84.4,Westinghouse,1943 +37.81,626.7,91.2,Westinghouse,1944 +39.27,737.2,92.4,Westinghouse,1945 +53.46,760.5,86,Westinghouse,1946 +55.56,581.4,111.1,Westinghouse,1947 +49.56,662.3,130.6,Westinghouse,1948 +32.04,583.8,141.8,Westinghouse,1949 +32.24,635.2,136.7,Westinghouse,1950 +54.38,723.8,129.7,Westinghouse,1951 +71.78,864.1,145.5,Westinghouse,1952 +90.08,1193.5,174.8,Westinghouse,1953 +68.6,1188.9,213.5,Westinghouse,1954 +26.63,290.6,162,Goodyear,1935 +23.39,291.1,174,Goodyear,1936 +30.65,335,183,Goodyear,1937 +20.89,246,198,Goodyear,1938 +28.78,356.2,208,Goodyear,1939 +26.93,289.8,223,Goodyear,1940 +32.08,268.2,234,Goodyear,1941 +32.21,213.3,248,Goodyear,1942 +35.69,348.2,274,Goodyear,1943 +62.47,374.2,282,Goodyear,1944 +52.32,387.2,316,Goodyear,1945 +56.95,347.4,302,Goodyear,1946 +54.32,291.9,333,Goodyear,1947 +40.53,297.2,359,Goodyear,1948 +32.54,276.9,370,Goodyear,1949 +43.48,274.6,376,Goodyear,1950 +56.49,339.9,391,Goodyear,1951 +65.98,474.8,414,Goodyear,1952 +66.11,496,443,Goodyear,1953 +49.34,474.5,468,Goodyear,1954 +2.54,70.91,4.5,Diamond Match,1935 +2,87.94,4.71,Diamond Match,1936 +2.19,82.2,4.57,Diamond Match,1937 +1.99,58.72,4.56,Diamond Match,1938 +2.03,80.54,4.38,Diamond Match,1939 +1.81,86.47,4.21,Diamond Match,1940 +2.14,77.68,4.12,Diamond Match,1941 +1.86,62.16,3.83,Diamond Match,1942 +0.93,62.24,3.58,Diamond Match,1943 +1.18,61.82,3.41,Diamond Match,1944 +1.36,65.85,3.31,Diamond Match,1945 +2.24,69.54,3.23,Diamond Match,1946 +3.81,64.97,3.9,Diamond Match,1947 +5.66,68,5.38,Diamond Match,1948 +4.21,71.24,7.39,Diamond Match,1949 +3.42,69.05,8.74,Diamond Match,1950 +4.67,83.04,9.07,Diamond Match,1951 +6,74.42,9.93,Diamond Match,1952 +6.53,63.51,11.68,Diamond Match,1953 +5.12,58.12,14.33,Diamond Match,1954 +2.938,30.284,52.011,American Steel,1935 +5.643,43.909,52.903,American Steel,1936 +10.233,107.02,54.499,American Steel,1937 +4.046,68.306,59.722,American Steel,1938 +3.326,84.164,61.659,American Steel,1939 +4.68,69.157,62.243,American Steel,1940 +5.732,60.148,63.361,American Steel,1941 +12.117,49.332,64.861,American Steel,1942 +15.276,75.18,67.953,American Steel,1943 +9.275,62.05,69.59,American Steel,1944 +9.577,59.152,69.144,American Steel,1945 +3.956,68.424,70.269,American Steel,1946 +3.834,48.505,71.051,American Steel,1947 +5.97,40.507,71.508,American Steel,1948 +6.433,39.961,73.827,American Steel,1949 +4.77,36.494,75.847,American Steel,1950 +6.532,46.082,77.367,American Steel,1951 +7.329,57.616,78.631,American Steel,1952 +9.02,57.441,80.215,American Steel,1953 +6.281,47.165,83.788,American Steel,1954 diff --git a/statsmodels/datasets/heart/__init__.py b/statsmodels/datasets/heart/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/heart/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/heart/data.py b/statsmodels/datasets/heart/data.py new file mode 100644 index 0000000..de69102 --- /dev/null +++ b/statsmodels/datasets/heart/data.py @@ -0,0 +1,59 @@ +"""Heart Transplant Data, Miller 1976""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """???""" + +TITLE = """Transplant Survival Data""" + +SOURCE = """ Miller, R. (1976). Least squares regression with censored dara. Biometrica, 63 (3). 449-464. + +""" + +DESCRSHORT = """Survival times after receiving a heart transplant""" + +DESCRLONG = """This data contains the survival time after receiving a heart transplant, the age of the patient and whether or not the survival time was censored. +""" + +NOTE = """:: + + Number of Observations - 69 + + Number of Variables - 3 + + Variable name definitions:: + death - Days after surgery until death + age - age at the time of surgery + censored - indicates if an observation is censored. 1 is uncensored +""" + + +def load(as_pandas=None): + """ + Load the data and return a Dataset class instance. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def load_pandas(): + data = _get_data() + dataset = du.process_pandas(data, endog_idx=0, exog_idx=None) + dataset.censors = dataset.exog.iloc[:, 0] + dataset.exog = dataset.exog.iloc[:, 1] + return dataset + + +def _get_data(): + return du.load_csv(__file__, 'heart.csv') diff --git a/statsmodels/datasets/heart/heart.csv b/statsmodels/datasets/heart/heart.csv new file mode 100644 index 0000000..4a1cd78 --- /dev/null +++ b/statsmodels/datasets/heart/heart.csv @@ -0,0 +1,70 @@ +survival,censors,age +15.000000,1.000000,54.300000 +3.000000,1.000000,40.400000 +624.000000,1.000000,51.000000 +46.000000,1.000000,42.500000 +127.000000,1.000000,48.000000 +64.000000,1.000000,54.600000 +1350.000000,1.000000,54.100000 +280.000000,1.000000,49.500000 +23.000000,1.000000,56.900000 +10.000000,1.000000,55.300000 +1024.000000,1.000000,43.400000 +39.000000,1.000000,42.800000 +730.000000,1.000000,58.400000 +136.000000,1.000000,52.000000 +1775.000000,0.000000,33.300000 +1.000000,1.000000,54.200000 +836.000000,1.000000,45.000000 +60.000000,1.000000,64.500000 +1536.000000,0.000000,49.000000 +1549.000000,0.000000,40.600000 +54.000000,1.000000,49.000000 +47.000000,1.000000,61.500000 +1.000000,1.000000,41.500000 +51.000000,1.000000,50.500000 +1367.000000,0.000000,48.600000 +1264.000000,0.000000,45.500000 +44.000000,1.000000,36.200000 +994.000000,1.000000,48.600000 +51.000000,1.000000,47.200000 +1106.000000,0.000000,36.800000 +897.000000,1.000000,46.100000 +253.000000,1.000000,48.800000 +147.000000,1.000000,47.500000 +51.000000,1.000000,52.500000 +875.000000,0.000000,38.900000 +322.000000,1.000000,48.100000 +838.000000,0.000000,41.600000 +65.000000,1.000000,49.100000 +815.000000,0.000000,32.700000 +551.000000,1.000000,48.900000 +66.000000,1.000000,51.300000 +228.000000,1.000000,19.700000 +65.000000,1.000000,45.200000 +660.000000,0.000000,48.000000 +25.000000,1.000000,53.000000 +589.000000,0.000000,47.500000 +592.000000,0.000000,26.700000 +63.000000,1.000000,56.400000 +12.000000,1.000000,29.200000 +499.000000,0.000000,52.200000 +305.000000,0.000000,49.300000 +29.000000,1.000000,54.000000 +456.000000,0.000000,46.500000 +439.000000,0.000000,52.900000 +48.000000,1.000000,53.400000 +297.000000,1.000000,42.800000 +389.000000,0.000000,48.900000 +50.000000,1.000000,46.400000 +339.000000,0.000000,54.400000 +68.000000,1.000000,51.400000 +26.000000,1.000000,52.500000 +30.000000,0.000000,45.800000 +237.000000,0.000000,47.800000 +161.000000,1.000000,43.800000 +14.000000,1.000000,40.300000 +167.000000,0.000000,26.700000 +110.000000,0.000000,23.700000 +13.000000,0.000000,28.900000 +1.000000,0.000000,35.200000 diff --git a/statsmodels/datasets/interest_inflation/E6.csv b/statsmodels/datasets/interest_inflation/E6.csv new file mode 100644 index 0000000..b97782c --- /dev/null +++ b/statsmodels/datasets/interest_inflation/E6.csv @@ -0,0 +1,108 @@ +"year","quarter","Dp","R" +1972,2,-0.00313258,0.083 +1972,3,0.0188713,0.083 +1972,4,0.0248036,0.087 +1973,1,0.0162776,0.087 +1973,2,0.000289679,0.102 +1973,3,0.016829,0.098 +1973,4,0.0385835,0.097 +1974,1,-0.00144386,0.107 +1974,2,0.0127239,0.109 +1974,3,0.0238972,0.108 +1974,4,0.0427728,0.099 +1975,1,-0.0103779,0.089 +1975,2,0.00558424,0.084 +1975,3,0.00870609,0.087 +1975,4,0.0389199,0.086 +1976,1,-0.0196176,0.078 +1976,2,0.00731993,0.083 +1976,3,0.0180764,0.081 +1976,4,0.0237775,0.074 +1977,1,-0.0144377,0.07 +1977,2,0.0110059,0.064 +1977,3,0.0104017,0.06 +1977,4,0.0354648,0.06 +1978,1,-0.0157599,0.056 +1978,2,0.0100193,0.06 +1978,3,0.0180621,0.064 +1978,4,0.0256915,0.066 +1979,1,-0.0170689,0.071 +1979,2,0.00350475,0.08 +1979,3,0.0256438,0.078 +1979,4,0.0315075,0.08 +1980,1,-0.0132775,0.095 +1980,2,0.0130968,0.083 +1980,3,0.0151458,0.083 +1980,4,0.0312119,0.091 +1981,1,-0.0207896,0.104 +1981,2,0.0104489,0.111 +1981,3,0.018106,0.113 +1981,4,0.0405002,0.099 +1982,1,-0.0201483,0.096 +1982,2,0.00380802,0.092 +1982,3,0.0215569,0.088 +1982,4,0.0327106,0.08 +1983,1,-0.0201726,0.074 +1983,2,-0.00333166,0.081 +1983,3,0.0192871,0.084 +1983,4,0.0345473,0.083 +1984,1,-0.0262156,0.079 +1984,2,-0.00519753,0.081 +1984,3,0.0132318,0.077 +1984,4,0.0374279,0.07 +1985,1,-0.0291948,0.077 +1985,2,-0.00261354,0.07 +1985,3,0.0172353,0.064 +1985,4,0.0376387,0.066 +1986,1,-0.0204763,0.06 +1986,2,0.000900269,0.06 +1986,3,0.0125732,0.058 +1986,4,0.0344677,0.06 +1987,1,-0.0220394,0.056 +1987,2,-0.00202703,0.055 +1987,3,0.00173426,0.062 +1987,4,0.0365901,0.058 +1988,1,-0.0252557,0.056 +1988,2,0.00092268,0.06 +1988,3,0.00451374,0.063 +1988,4,0.0383272,0.062 +1989,1,-0.0211368,0.07 +1989,2,-0.000533104,0.071 +1989,3,0.00981092,0.071 +1989,4,0.0373549,0.078 +1990,1,-0.016232,0.09 +1990,2,0.00197124,0.09 +1990,3,0.00687361,0.091 +1990,4,0.0274582,0.09 +1991,1,-0.0140786,0.086 +1991,2,0.0166497,0.086 +1991,3,0.0144682,0.088 +1991,4,0.043004,0.087 +1992,1,-0.0127769,0.082 +1992,2,0.00927353,0.084 +1992,3,0.0179157,0.082 +1992,4,0.030508,0.074 +1993,1,-0.0105906,0.065 +1993,2,0.00747108,0.067 +1993,3,0.00467587,0.061 +1993,4,0.0310678,0.056 +1994,1,-0.0153685,0.062 +1994,2,0.000810146,0.069 +1994,3,0.00806475,0.074 +1994,4,0.0287657,0.074 +1995,1,-0.0183783,0.071 +1995,2,0.00449467,0.064 +1995,3,0.00988674,0.061 +1995,4,0.0245948,0.055 +1996,1,-0.0185189,0.058 +1996,2,-0.00590181,0.059 +1996,3,0.00581503,0.055 +1996,4,0.0243654,0.051 +1997,1,-0.0157485,0.051 +1997,2,-0.00749254,0.05 +1997,3,0.00388288,0.051 +1997,4,0.0242448,0.051 +1998,1,-0.014647,0.047 +1998,2,-0.00204897,0.047 +1998,3,0.00247526,0.041 +1998,4,0.0239234,0.038 diff --git a/statsmodels/datasets/interest_inflation/E6_jmulti.csv b/statsmodels/datasets/interest_inflation/E6_jmulti.csv new file mode 100644 index 0000000..452e94b --- /dev/null +++ b/statsmodels/datasets/interest_inflation/E6_jmulti.csv @@ -0,0 +1,107 @@ +-0.00313258 0.083 +0.0188713 0.083 +0.0248036 0.087 +0.0162776 0.087 +0.000289679 0.102 +0.016829 0.098 +0.0385835 0.097 +-0.00144386 0.107 +0.0127239 0.109 +0.0238972 0.108 +0.0427728 0.099 +-0.0103779 0.089 +0.00558424 0.084 +0.00870609 0.087 +0.0389199 0.086 +-0.0196176 0.078 +0.00731993 0.083 +0.0180764 0.081 +0.0237775 0.074 +-0.0144377 0.07 +0.0110059 0.064 +0.0104017 0.06 +0.0354648 0.06 +-0.0157599 0.056 +0.0100193 0.06 +0.0180621 0.064 +0.0256915 0.066 +-0.0170689 0.071 +0.00350475 0.08 +0.0256438 0.078 +0.0315075 0.08 +-0.0132775 0.095 +0.0130968 0.083 +0.0151458 0.083 +0.0312119 0.091 +-0.0207896 0.104 +0.0104489 0.111 +0.018106 0.113 +0.0405002 0.099 +-0.0201483 0.096 +0.00380802 0.092 +0.0215569 0.088 +0.0327106 0.08 +-0.0201726 0.074 +-0.00333166 0.081 +0.0192871 0.084 +0.0345473 0.083 +-0.0262156 0.079 +-0.00519753 0.081 +0.0132318 0.077 +0.0374279 0.07 +-0.0291948 0.077 +-0.00261354 0.07 +0.0172353 0.064 +0.0376387 0.066 +-0.0204763 0.06 +0.000900269 0.06 +0.0125732 0.058 +0.0344677 0.06 +-0.0220394 0.056 +-0.00202703 0.055 +0.00173426 0.062 +0.0365901 0.058 +-0.0252557 0.056 +0.00092268 0.06 +0.00451374 0.063 +0.0383272 0.062 +-0.0211368 0.07 +-0.000533104 0.071 +0.00981092 0.071 +0.0373549 0.078 +-0.016232 0.09 +0.00197124 0.09 +0.00687361 0.091 +0.0274582 0.09 +-0.0140786 0.086 +0.0166497 0.086 +0.0144682 0.088 +0.043004 0.087 +-0.0127769 0.082 +0.00927353 0.084 +0.0179157 0.082 +0.030508 0.074 +-0.0105906 0.065 +0.00747108 0.067 +0.00467587 0.061 +0.0310678 0.056 +-0.0153685 0.062 +0.000810146 0.069 +0.00806475 0.074 +0.0287657 0.074 +-0.0183783 0.071 +0.00449467 0.064 +0.00988674 0.061 +0.0245948 0.055 +-0.0185189 0.058 +-0.00590181 0.059 +0.00581503 0.055 +0.0243654 0.051 +-0.0157485 0.051 +-0.00749254 0.05 +0.00388288 0.051 +0.0242448 0.051 +-0.014647 0.047 +-0.00204897 0.047 +0.00247526 0.041 +0.0239234 0.038 diff --git a/statsmodels/datasets/interest_inflation/__init__.py b/statsmodels/datasets/interest_inflation/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/interest_inflation/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/interest_inflation/data.py b/statsmodels/datasets/interest_inflation/data.py new file mode 100644 index 0000000..d574f41 --- /dev/null +++ b/statsmodels/datasets/interest_inflation/data.py @@ -0,0 +1,70 @@ +"""(West) German interest and inflation rate 1972-1998""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """...""" # TODO +TITLE = __doc__ +SOURCE = """ +http://www.jmulti.de/download/datasets/e6.dat +""" + +DESCRSHORT = """(West) German interest and inflation rate 1972Q2 - 1998Q4""" + +DESCRLONG = """West German (until 1990) / German (afterwards) interest and +inflation rate 1972Q2 - 1998Q4 +""" + + +NOTE = """:: + Number of Observations - 107 + + Number of Variables - 2 + + Variable name definitions:: + + year - 1972q2 - 1998q4 + quarter - 1-4 + Dp - Delta log gdp deflator + R - nominal long term interest rate +""" + +variable_names = ["Dp", "R"] +first_season = 1 # 1 stands for: first observation in Q2 (0 would mean Q1) + + +def load(as_pandas=None): + """ + Load the West German interest/inflation data and return a Dataset class. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + + Notes + ----- + The interest_inflation Dataset instance does not contain endog and exog + attributes. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def load_pandas(): + data = _get_data() + names = data.columns + dataset = du.Dataset(data=data, names=names) + return dataset + + +def _get_data(): + return du.load_csv(__file__, 'E6.csv', convert_float=True) + +def __str__(): + return "e6" diff --git a/statsmodels/datasets/longley/R_gls.s b/statsmodels/datasets/longley/R_gls.s new file mode 100644 index 0000000..2a8cc20 --- /dev/null +++ b/statsmodels/datasets/longley/R_gls.s @@ -0,0 +1,37 @@ +### GLS Example with Longley Data +### Done the long way... + +d <- read.table('./longley.csv', sep=',', header=T) +attach(d) +m1 <- lm(TOTEMP ~ GNP + POP) +rho <- cor(m1$res[-1],m1$res[-16]) +sigma <- diag(16) # diagonal matrix of ones +sigma <- rho^abs(row(sigma)-col(sigma)) +# row sigma is a matrix of the row index +# col sigma is a matrix of the column index +# this gives a upper-lower triangle with the +# covariance structure of an AR1 process... +sigma_inv <- solve(sigma) # inverse of sigma +x <- model.matrix(m1) +xPrimexInv <- solve(t(x) %*% sigma_inv %*% x) +beta <- xPrimexInv %*% t(x) %*% sigma_inv %*% TOTEMP +beta +# residuals +res <- TOTEMP - x %*% beta +# whitened residuals, not sure if this is right +# xPrimexInv is different than cholsigmainv obviously... +wres = sigma_inv %*% TOTEMP - sigma_inv %*% x %*% beta + +sig <- sqrt(sum(res^2)/m1$df) +wsig <- sqrt(sum(wres^2)/m1$df) +wvc <- sqrt(diag(xPrimexInv))*wsig +vc <- sqrt(diag(xPrimexInv))*sig +vc + +### Attempt to use a varFunc for GLS +library(nlme) +m1 <- gls(TOTEMP ~ GNP + POP, correlation=corAR1(value=rho, fixed=TRUE)) +results <- summary(m1) +bse <- sqrt(diag(vcov(m1))) + + diff --git a/statsmodels/datasets/longley/R_lm.s b/statsmodels/datasets/longley/R_lm.s new file mode 100644 index 0000000..de33b22 --- /dev/null +++ b/statsmodels/datasets/longley/R_lm.s @@ -0,0 +1,6 @@ +d <- read.table('./longley.csv', sep=',', header=T) +attach(d) + +library(nlme) # to be able to get BIC +m1 <- lm(TOTEMP ~ GNPDEFL + GNP + UNEMP + ARMED + POP + YEAR) +results <-summary(m1) diff --git a/statsmodels/datasets/longley/__init__.py b/statsmodels/datasets/longley/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/longley/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/longley/data.py b/statsmodels/datasets/longley/data.py new file mode 100644 index 0000000..0012979 --- /dev/null +++ b/statsmodels/datasets/longley/data.py @@ -0,0 +1,79 @@ +"""Longley dataset""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """This is public domain.""" +TITLE = __doc__ +SOURCE = """ +The classic 1967 Longley Data + +http://www.itl.nist.gov/div898/strd/lls/data/Longley.shtml + +:: + + Longley, J.W. (1967) "An Appraisal of Least Squares Programs for the + Electronic Comptuer from the Point of View of the User." Journal of + the American Statistical Association. 62.319, 819-41. +""" + +DESCRSHORT = """""" + +DESCRLONG = """The Longley dataset contains various US macroeconomic +variables that are known to be highly collinear. It has been used to appraise +the accuracy of least squares routines.""" + +NOTE = """:: + + Number of Observations - 16 + + Number of Variables - 6 + + Variable name definitions:: + + TOTEMP - Total Employment + GNPDEFL - GNP deflator + GNP - GNP + UNEMP - Number of unemployed + ARMED - Size of armed forces + POP - Population + YEAR - Year (1947 - 1962) +""" + + + +def load(as_pandas=None): + """ + Load the Longley data and return a Dataset class. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def load_pandas(): + """ + Load the Longley data and return a Dataset class. + + Returns + ------- + Dataset instance + See DATASET_PROPOSAL.txt for more information. + """ + data = _get_data() + return du.process_pandas(data, endog_idx=0) + + +def _get_data(): + data = du.load_csv(__file__, 'longley.csv') + data = data.iloc[:, [1, 2, 3, 4, 5, 6, 7]].astype(float) + return data diff --git a/statsmodels/datasets/longley/longley.csv b/statsmodels/datasets/longley/longley.csv new file mode 100644 index 0000000..0661f26 --- /dev/null +++ b/statsmodels/datasets/longley/longley.csv @@ -0,0 +1,17 @@ +"Obs","TOTEMP","GNPDEFL","GNP","UNEMP","ARMED","POP","YEAR" +1,60323,83,234289,2356,1590,107608,1947 +2,61122,88.5,259426,2325,1456,108632,1948 +3,60171,88.2,258054,3682,1616,109773,1949 +4,61187,89.5,284599,3351,1650,110929,1950 +5,63221,96.2,328975,2099,3099,112075,1951 +6,63639,98.1,346999,1932,3594,113270,1952 +7,64989,99,365385,1870,3547,115094,1953 +8,63761,100,363112,3578,3350,116219,1954 +9,66019,101.2,397469,2904,3048,117388,1955 +10,67857,104.6,419180,2822,2857,118734,1956 +11,68169,108.4,442769,2936,2798,120445,1957 +12,66513,110.8,444546,4681,2637,121950,1958 +13,68655,112.6,482704,3813,2552,123366,1959 +14,69564,114.2,502601,3931,2514,125368,1960 +15,69331,115.7,518173,4806,2572,127852,1961 +16,70551,116.9,554894,4007,2827,130081,1962 diff --git a/statsmodels/datasets/macrodata/__init__.py b/statsmodels/datasets/macrodata/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/macrodata/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/macrodata/data.py b/statsmodels/datasets/macrodata/data.py new file mode 100644 index 0000000..6201892 --- /dev/null +++ b/statsmodels/datasets/macrodata/data.py @@ -0,0 +1,93 @@ +"""United States Macroeconomic data""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """This is public domain.""" +TITLE = __doc__ +SOURCE = """ +Compiled by Skipper Seabold. All data are from the Federal Reserve Bank of St. +Louis [1] except the unemployment rate which was taken from the National +Bureau of Labor Statistics [2]. :: + + [1] Data Source: FRED, Federal Reserve Economic Data, Federal Reserve Bank of + St. Louis; http://research.stlouisfed.org/fred2/; accessed December 15, + 2009. + + [2] Data Source: Bureau of Labor Statistics, U.S. Department of Labor; + http://www.bls.gov/data/; accessed December 15, 2009. +""" + +DESCRSHORT = """US Macroeconomic Data for 1959Q1 - 2009Q3""" + +DESCRLONG = DESCRSHORT + +NOTE = """:: + Number of Observations - 203 + + Number of Variables - 14 + + Variable name definitions:: + + year - 1959q1 - 2009q3 + quarter - 1-4 + realgdp - Real gross domestic product (Bil. of chained 2005 US$, + seasonally adjusted annual rate) + realcons - Real personal consumption expenditures (Bil. of chained + 2005 US$, seasonally adjusted annual rate) + realinv - Real gross private domestic investment (Bil. of chained + 2005 US$, seasonally adjusted annual rate) + realgovt - Real federal consumption expenditures & gross investment + (Bil. of chained 2005 US$, seasonally adjusted annual rate) + realdpi - Real private disposable income (Bil. of chained 2005 + US$, seasonally adjusted annual rate) + cpi - End of the quarter consumer price index for all urban + consumers: all items (1982-84 = 100, seasonally adjusted). + m1 - End of the quarter M1 nominal money stock (Seasonally + adjusted) + tbilrate - Quarterly monthly average of the monthly 3-month + treasury bill: secondary market rate + unemp - Seasonally adjusted unemployment rate (%) + pop - End of the quarter total population: all ages incl. armed + forces over seas + infl - Inflation rate (ln(cpi_{t}/cpi_{t-1}) * 400) + realint - Real interest rate (tbilrate - infl) +""" + + +def load_pandas(): + data = _get_data() + return du.Dataset(data=data, names=list(data.columns)) + + +def load(as_pandas=None): + """ + Load the US macro data and return a Dataset class. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + + Notes + ----- + The macrodata Dataset instance does not contain endog and exog attributes. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def _get_data(): + return du.load_csv(__file__, 'macrodata.csv').astype(float) + + +variable_names = ["realcons", "realgdp", "realinv"] + + +def __str__(): + return "macrodata" diff --git a/statsmodels/datasets/macrodata/macrodata.csv b/statsmodels/datasets/macrodata/macrodata.csv new file mode 100644 index 0000000..25175f7 --- /dev/null +++ b/statsmodels/datasets/macrodata/macrodata.csv @@ -0,0 +1,204 @@ +"year","quarter","realgdp","realcons","realinv","realgovt","realdpi","cpi","m1","tbilrate","unemp","pop","infl","realint" +1959,1,2710.349,1707.4,286.898,470.045,1886.9,28.980,139.7,2.82,5.8,177.146,0,0 +1959,2,2778.801,1733.7,310.859,481.301,1919.7,29.150,141.7,3.08,5.1,177.830,2.34,0.74 +1959,3,2775.488,1751.8,289.226,491.260,1916.4,29.350,140.5,3.82,5.3,178.657,2.74,1.09 +1959,4,2785.204,1753.7,299.356,484.052,1931.3,29.370,140,4.33,5.6,179.386,0.27,4.06 +1960,1,2847.699,1770.5,331.722,462.199,1955.5,29.540,139.6,3.50,5.2,180.007,2.31,1.19 +1960,2,2834.390,1792.9,298.152,460.400,1966.1,29.550,140.2,2.68,5.2,180.671,0.14,2.55 +1960,3,2839.022,1785.8,296.375,474.676,1967.8,29.750,140.9,2.36,5.6,181.528,2.7,-0.34 +1960,4,2802.616,1788.2,259.764,476.434,1966.6,29.840,141.1,2.29,6.3,182.287,1.21,1.08 +1961,1,2819.264,1787.7,266.405,475.854,1984.5,29.810,142.1,2.37,6.8,182.992,-0.4,2.77 +1961,2,2872.005,1814.3,286.246,480.328,2014.4,29.920,142.9,2.29,7,183.691,1.47,0.81 +1961,3,2918.419,1823.1,310.227,493.828,2041.9,29.980,144.1,2.32,6.8,184.524,0.8,1.52 +1961,4,2977.830,1859.6,315.463,502.521,2082.0,30.040,145.2,2.60,6.2,185.242,0.8,1.8 +1962,1,3031.241,1879.4,334.271,520.960,2101.7,30.210,146.4,2.73,5.6,185.874,2.26,0.47 +1962,2,3064.709,1902.5,331.039,523.066,2125.2,30.220,146.5,2.78,5.5,186.538,0.13,2.65 +1962,3,3093.047,1917.9,336.962,538.838,2137.0,30.380,146.7,2.78,5.6,187.323,2.11,0.67 +1962,4,3100.563,1945.1,325.650,535.912,2154.6,30.440,148.3,2.87,5.5,188.013,0.79,2.08 +1963,1,3141.087,1958.2,343.721,522.917,2172.5,30.480,149.7,2.90,5.8,188.580,0.53,2.38 +1963,2,3180.447,1976.9,348.730,518.108,2193.1,30.690,151.3,3.03,5.7,189.242,2.75,0.29 +1963,3,3240.332,2003.8,360.102,546.893,2217.9,30.750,152.6,3.38,5.5,190.028,0.78,2.6 +1963,4,3264.967,2020.6,364.534,532.383,2254.6,30.940,153.7,3.52,5.6,190.668,2.46,1.06 +1964,1,3338.246,2060.5,379.523,529.686,2299.6,30.950,154.8,3.51,5.5,191.245,0.13,3.38 +1964,2,3376.587,2096.7,377.778,526.175,2362.1,31.020,156.8,3.47,5.2,191.889,0.9,2.57 +1964,3,3422.469,2135.2,386.754,522.008,2392.7,31.120,159.2,3.53,5,192.631,1.29,2.25 +1964,4,3431.957,2141.2,389.910,514.603,2420.4,31.280,160.7,3.76,5,193.223,2.05,1.71 +1965,1,3516.251,2188.8,429.145,508.006,2447.4,31.380,162,3.93,4.9,193.709,1.28,2.65 +1965,2,3563.960,2213.0,429.119,508.931,2474.5,31.580,163.1,3.84,4.7,194.303,2.54,1.3 +1965,3,3636.285,2251.0,444.444,529.446,2542.6,31.650,166,3.93,4.4,194.997,0.89,3.04 +1965,4,3724.014,2314.3,446.493,544.121,2594.1,31.880,169.1,4.35,4.1,195.539,2.9,1.46 +1966,1,3815.423,2348.5,484.244,556.593,2618.4,32.280,171.8,4.62,3.9,195.999,4.99,-0.37 +1966,2,3828.124,2354.5,475.408,571.371,2624.7,32.450,170.3,4.65,3.8,196.560,2.1,2.55 +1966,3,3853.301,2381.5,470.697,594.514,2657.8,32.850,171.2,5.23,3.8,197.207,4.9,0.33 +1966,4,3884.520,2391.4,472.957,599.528,2688.2,32.900,171.9,5.00,3.7,197.736,0.61,4.39 +1967,1,3918.740,2405.3,460.007,640.682,2728.4,33.100,174.2,4.22,3.8,198.206,2.42,1.8 +1967,2,3919.556,2438.1,440.393,631.430,2750.8,33.400,178.1,3.78,3.8,198.712,3.61,0.17 +1967,3,3950.826,2450.6,453.033,641.504,2777.1,33.700,181.6,4.42,3.8,199.311,3.58,0.84 +1967,4,3980.970,2465.7,462.834,640.234,2797.4,34.100,184.3,4.90,3.9,199.808,4.72,0.18 +1968,1,4063.013,2524.6,472.907,651.378,2846.2,34.400,186.6,5.18,3.7,200.208,3.5,1.67 +1968,2,4131.998,2563.3,492.026,646.145,2893.5,34.900,190.5,5.50,3.5,200.706,5.77,-0.28 +1968,3,4160.267,2611.5,476.053,640.615,2899.3,35.300,194,5.21,3.5,201.290,4.56,0.65 +1968,4,4178.293,2623.5,480.998,636.729,2918.4,35.700,198.7,5.85,3.4,201.760,4.51,1.34 +1969,1,4244.100,2652.9,512.686,633.224,2923.4,36.300,200.7,6.08,3.4,202.161,6.67,-0.58 +1969,2,4256.460,2669.8,508.601,623.160,2952.9,36.800,201.7,6.49,3.4,202.677,5.47,1.02 +1969,3,4283.378,2682.7,520.360,623.613,3012.9,37.300,202.9,7.02,3.6,203.302,5.4,1.63 +1969,4,4263.261,2704.1,492.334,606.900,3034.9,37.900,206.2,7.64,3.6,203.849,6.38,1.26 +1970,1,4256.573,2720.7,476.925,594.888,3050.1,38.500,206.7,6.76,4.2,204.401,6.28,0.47 +1970,2,4264.289,2733.2,478.419,576.257,3103.5,38.900,208,6.66,4.8,205.052,4.13,2.52 +1970,3,4302.259,2757.1,486.594,567.743,3145.4,39.400,212.9,6.15,5.2,205.788,5.11,1.04 +1970,4,4256.637,2749.6,458.406,564.666,3135.1,39.900,215.5,4.86,5.8,206.466,5.04,-0.18 +1971,1,4374.016,2802.2,517.935,542.709,3197.3,40.100,220,3.65,5.9,207.065,2,1.65 +1971,2,4398.829,2827.9,533.986,534.905,3245.3,40.600,224.9,4.76,5.9,207.661,4.96,-0.19 +1971,3,4433.943,2850.4,541.010,532.646,3259.7,40.900,227.2,4.70,6,208.345,2.94,1.75 +1971,4,4446.264,2897.8,524.085,516.140,3294.2,41.200,230.1,3.87,6,208.917,2.92,0.95 +1972,1,4525.769,2936.5,561.147,518.192,3314.9,41.500,235.6,3.55,5.8,209.386,2.9,0.64 +1972,2,4633.101,2992.6,595.495,526.473,3346.1,41.800,238.8,3.86,5.7,209.896,2.88,0.98 +1972,3,4677.503,3038.8,603.970,498.116,3414.6,42.200,245,4.47,5.6,210.479,3.81,0.66 +1972,4,4754.546,3110.1,607.104,496.540,3550.5,42.700,251.5,5.09,5.3,210.985,4.71,0.38 +1973,1,4876.166,3167.0,645.654,504.838,3590.7,43.700,252.7,5.98,5,211.420,9.26,-3.28 +1973,2,4932.571,3165.4,675.837,497.033,3626.2,44.200,257.5,7.19,4.9,211.909,4.55,2.64 +1973,3,4906.252,3176.7,649.412,475.897,3644.4,45.600,259,8.06,4.8,212.475,12.47,-4.41 +1973,4,4953.050,3167.4,674.253,476.174,3688.9,46.800,263.8,7.68,4.8,212.932,10.39,-2.71 +1974,1,4909.617,3139.7,631.230,491.043,3632.3,48.100,267.2,7.80,5.1,213.361,10.96,-3.16 +1974,2,4922.188,3150.6,628.102,490.177,3601.1,49.300,269.3,7.89,5.2,213.854,9.86,-1.96 +1974,3,4873.520,3163.6,592.672,492.586,3612.4,51.000,272.3,8.16,5.6,214.451,13.56,-5.4 +1974,4,4854.340,3117.3,598.306,496.176,3596.0,52.300,273.9,6.96,6.6,214.931,10.07,-3.11 +1975,1,4795.295,3143.4,493.212,490.603,3581.9,53.000,276.2,5.53,8.2,215.353,5.32,0.22 +1975,2,4831.942,3195.8,476.085,486.679,3749.3,54.000,283.7,5.57,8.9,215.973,7.48,-1.91 +1975,3,4913.328,3241.4,516.402,498.836,3698.6,54.900,285.4,6.27,8.5,216.587,6.61,-0.34 +1975,4,4977.511,3275.7,530.596,500.141,3736.0,55.800,288.4,5.26,8.3,217.095,6.5,-1.24 +1976,1,5090.663,3341.2,585.541,495.568,3791.0,56.100,294.7,4.91,7.7,217.528,2.14,2.77 +1976,2,5128.947,3371.8,610.513,494.532,3822.2,57.000,297.2,5.28,7.6,218.035,6.37,-1.09 +1976,3,5154.072,3407.5,611.646,493.141,3856.7,57.900,302,5.05,7.7,218.644,6.27,-1.22 +1976,4,5191.499,3451.8,615.898,494.415,3884.4,58.700,308.3,4.57,7.8,219.179,5.49,-0.92 +1977,1,5251.762,3491.3,646.198,498.509,3887.5,60.000,316,4.60,7.5,219.684,8.76,-4.16 +1977,2,5356.131,3510.6,696.141,506.695,3931.8,60.800,320.2,5.06,7.1,220.239,5.3,-0.24 +1977,3,5451.921,3544.1,734.078,509.605,3990.8,61.600,326.4,5.82,6.9,220.904,5.23,0.59 +1977,4,5450.793,3597.5,713.356,504.584,4071.2,62.700,334.4,6.20,6.6,221.477,7.08,-0.88 +1978,1,5469.405,3618.5,727.504,506.314,4096.4,63.900,339.9,6.34,6.3,221.991,7.58,-1.24 +1978,2,5684.569,3695.9,777.454,518.366,4143.4,65.500,347.6,6.72,6,222.585,9.89,-3.18 +1978,3,5740.300,3711.4,801.452,520.199,4177.1,67.100,353.3,7.64,6,223.271,9.65,-2.01 +1978,4,5816.222,3741.3,819.689,524.782,4209.8,68.500,358.6,9.02,5.9,223.865,8.26,0.76 +1979,1,5825.949,3760.2,819.556,525.524,4255.9,70.600,368,9.42,5.9,224.438,12.08,-2.66 +1979,2,5831.418,3758.0,817.660,532.040,4226.1,73.000,377.2,9.30,5.7,225.055,13.37,-4.07 +1979,3,5873.335,3794.9,801.742,531.232,4250.3,75.200,380.8,10.49,5.9,225.801,11.88,-1.38 +1979,4,5889.495,3805.0,786.817,531.126,4284.3,78.000,385.8,11.94,5.9,226.451,14.62,-2.68 +1980,1,5908.467,3798.4,781.114,548.115,4296.2,80.900,383.8,13.75,6.3,227.061,14.6,-0.85 +1980,2,5787.373,3712.2,710.640,561.895,4236.1,82.600,394,7.90,7.3,227.726,8.32,-0.42 +1980,3,5776.617,3752.0,656.477,554.292,4279.7,84.700,409,10.34,7.7,228.417,10.04,0.3 +1980,4,5883.460,3802.0,723.220,556.130,4368.1,87.200,411.3,14.75,7.4,228.937,11.64,3.11 +1981,1,6005.717,3822.8,795.091,567.618,4358.1,89.100,427.4,13.95,7.4,229.403,8.62,5.32 +1981,2,5957.795,3822.8,757.240,584.540,4358.6,91.500,426.9,15.33,7.4,229.966,10.63,4.69 +1981,3,6030.184,3838.3,804.242,583.890,4455.4,93.400,428.4,14.58,7.4,230.641,8.22,6.36 +1981,4,5955.062,3809.3,773.053,590.125,4464.4,94.400,442.7,11.33,8.2,231.157,4.26,7.07 +1982,1,5857.333,3833.9,692.514,591.043,4469.6,95.000,447.1,12.95,8.8,231.645,2.53,10.42 +1982,2,5889.074,3847.7,691.900,596.403,4500.8,97.500,448,11.97,9.4,232.188,10.39,1.58 +1982,3,5866.370,3877.2,683.825,605.370,4520.6,98.100,464.5,8.10,9.9,232.816,2.45,5.65 +1982,4,5871.001,3947.9,622.930,623.307,4536.4,97.900,477.2,7.96,10.7,233.322,-0.82,8.77 +1983,1,5944.020,3986.6,645.110,630.873,4572.2,98.800,493.2,8.22,10.4,233.781,3.66,4.56 +1983,2,6077.619,4065.7,707.372,644.322,4605.5,99.800,507.8,8.69,10.1,234.307,4.03,4.66 +1983,3,6197.468,4137.6,754.937,662.412,4674.7,100.800,517.2,8.99,9.4,234.907,3.99,5.01 +1983,4,6325.574,4203.2,834.427,639.197,4771.1,102.100,525.1,8.89,8.5,235.385,5.13,3.76 +1984,1,6448.264,4239.2,921.763,644.635,4875.4,103.300,535,9.43,7.9,235.839,4.67,4.76 +1984,2,6559.594,4299.9,952.841,664.839,4959.4,104.100,540.9,9.94,7.5,236.348,3.09,6.85 +1984,3,6623.343,4333.0,974.989,662.294,5036.6,105.100,543.7,10.19,7.4,236.976,3.82,6.37 +1984,4,6677.264,4390.1,958.993,684.282,5084.5,105.700,557,8.14,7.3,237.468,2.28,5.87 +1985,1,6740.275,4464.6,927.375,691.613,5072.0,107.000,570.4,8.25,7.3,237.900,4.89,3.36 +1985,2,6797.344,4505.2,943.383,708.524,5172.7,107.700,589.1,7.17,7.3,238.466,2.61,4.56 +1985,3,6903.523,4590.8,932.959,732.305,5140.7,108.500,607.8,7.13,7.2,239.113,2.96,4.17 +1985,4,6955.918,4600.9,969.434,732.026,5193.9,109.900,621.4,7.14,7,239.638,5.13,2.01 +1986,1,7022.757,4639.3,967.442,728.125,5255.8,108.700,641,6.56,7,240.094,-4.39,10.95 +1986,2,7050.969,4688.7,945.972,751.334,5315.5,109.500,670.3,6.06,7.2,240.651,2.93,3.13 +1986,3,7118.950,4770.7,916.315,779.770,5343.3,110.200,694.9,5.31,7,241.274,2.55,2.76 +1986,4,7153.359,4799.4,917.736,767.671,5346.5,111.400,730.2,5.44,6.8,241.784,4.33,1.1 +1987,1,7193.019,4792.1,945.776,772.247,5379.4,112.700,743.9,5.61,6.6,242.252,4.64,0.97 +1987,2,7269.510,4856.3,947.100,782.962,5321.0,113.800,743,5.67,6.3,242.804,3.89,1.79 +1987,3,7332.558,4910.4,948.055,783.804,5416.2,115.000,756.2,6.19,6,243.446,4.2,1.99 +1987,4,7458.022,4922.2,1021.980,795.467,5493.1,116.000,756.2,5.76,5.9,243.981,3.46,2.29 +1988,1,7496.600,5004.4,964.398,773.851,5562.1,117.200,768.1,5.76,5.7,244.445,4.12,1.64 +1988,2,7592.881,5040.8,987.858,765.980,5614.3,118.500,781.4,6.48,5.5,245.021,4.41,2.07 +1988,3,7632.082,5080.6,994.204,760.245,5657.5,119.900,783.3,7.22,5.5,245.693,4.7,2.52 +1988,4,7733.991,5140.4,1007.371,783.065,5708.5,121.200,785.7,8.03,5.3,246.224,4.31,3.72 +1989,1,7806.603,5159.3,1045.975,767.024,5773.4,123.100,779.2,8.67,5.2,246.721,6.22,2.44 +1989,2,7865.016,5182.4,1033.753,784.275,5749.8,124.500,777.8,8.15,5.2,247.342,4.52,3.63 +1989,3,7927.393,5236.1,1021.604,791.819,5787.0,125.400,786.6,7.76,5.3,248.067,2.88,4.88 +1989,4,7944.697,5261.7,1011.119,787.844,5831.3,127.500,795.4,7.65,5.4,248.659,6.64,1.01 +1990,1,8027.693,5303.3,1021.070,799.681,5875.1,128.900,806.2,7.80,5.3,249.306,4.37,3.44 +1990,2,8059.598,5320.8,1021.360,800.639,5913.9,130.500,810.1,7.70,5.3,250.132,4.93,2.76 +1990,3,8059.476,5341.0,997.319,793.513,5918.1,133.400,819.8,7.33,5.7,251.057,8.79,-1.46 +1990,4,7988.864,5299.5,934.248,800.525,5878.2,134.700,827.2,6.67,6.1,251.889,3.88,2.79 +1991,1,7950.164,5284.4,896.210,806.775,5896.3,135.100,843.2,5.83,6.6,252.643,1.19,4.65 +1991,2,8003.822,5324.7,891.704,809.081,5941.1,136.200,861.5,5.54,6.8,253.493,3.24,2.29 +1991,3,8037.538,5345.0,913.904,793.987,5953.6,137.200,878,5.18,6.9,254.435,2.93,2.25 +1991,4,8069.046,5342.6,948.891,778.378,5992.4,138.300,910.4,4.14,7.1,255.214,3.19,0.95 +1992,1,8157.616,5434.5,927.796,778.568,6082.9,139.400,943.8,3.88,7.4,255.992,3.17,0.71 +1992,2,8244.294,5466.7,988.912,777.762,6129.5,140.500,963.2,3.50,7.6,256.894,3.14,0.36 +1992,3,8329.361,5527.1,999.135,786.639,6160.6,141.700,1003.8,2.97,7.6,257.861,3.4,-0.44 +1992,4,8417.016,5594.6,1030.758,787.064,6248.2,142.800,1030.4,3.12,7.4,258.679,3.09,0.02 +1993,1,8432.485,5617.2,1054.979,762.901,6156.5,143.800,1047.6,2.92,7.2,259.414,2.79,0.13 +1993,2,8486.435,5671.1,1063.263,752.158,6252.3,144.500,1084.5,3.02,7.1,260.255,1.94,1.08 +1993,3,8531.108,5732.7,1062.514,744.227,6265.7,145.600,1113,3.00,6.8,261.163,3.03,-0.04 +1993,4,8643.769,5783.7,1118.583,748.102,6358.1,146.300,1131.6,3.05,6.6,261.919,1.92,1.13 +1994,1,8727.919,5848.1,1166.845,721.288,6332.6,147.200,1141.1,3.48,6.6,262.631,2.45,1.02 +1994,2,8847.303,5891.5,1234.855,717.197,6440.6,148.400,1150.5,4.20,6.2,263.436,3.25,0.96 +1994,3,8904.289,5938.7,1212.655,736.890,6487.9,149.400,1150.1,4.68,6,264.301,2.69,2 +1994,4,9003.180,5997.3,1269.190,716.702,6574.0,150.500,1151.4,5.53,5.6,265.044,2.93,2.6 +1995,1,9025.267,6004.3,1282.090,715.326,6616.6,151.800,1149.3,5.72,5.5,265.755,3.44,2.28 +1995,2,9044.668,6053.5,1247.610,712.492,6617.2,152.600,1145.4,5.52,5.7,266.557,2.1,3.42 +1995,3,9120.684,6107.6,1235.601,707.649,6666.8,153.500,1137.3,5.32,5.7,267.456,2.35,2.97 +1995,4,9184.275,6150.6,1270.392,681.081,6706.2,154.700,1123.5,5.17,5.6,268.151,3.11,2.05 +1996,1,9247.188,6206.9,1287.128,695.265,6777.7,156.100,1124.8,4.91,5.5,268.853,3.6,1.31 +1996,2,9407.052,6277.1,1353.795,705.172,6850.6,157.000,1112.4,5.09,5.5,269.667,2.3,2.79 +1996,3,9488.879,6314.6,1422.059,692.741,6908.9,158.200,1086.1,5.04,5.3,270.581,3.05,2 +1996,4,9592.458,6366.1,1418.193,690.744,6946.8,159.400,1081.5,4.99,5.3,271.360,3.02,1.97 +1997,1,9666.235,6430.2,1451.304,681.445,7008.9,159.900,1063.8,5.10,5.2,272.083,1.25,3.85 +1997,2,9809.551,6456.2,1543.976,693.525,7061.5,160.400,1066.2,5.01,5,272.912,1.25,3.76 +1997,3,9932.672,6566.0,1571.426,691.261,7142.4,161.500,1065.5,5.02,4.9,273.852,2.73,2.29 +1997,4,10008.874,6641.1,1596.523,690.311,7241.5,162.000,1074.4,5.11,4.7,274.626,1.24,3.88 +1998,1,10103.425,6707.2,1672.732,668.783,7406.2,162.200,1076.1,5.02,4.6,275.304,0.49,4.53 +1998,2,10194.277,6822.6,1652.716,687.184,7512.0,163.200,1075,4.98,4.4,276.115,2.46,2.52 +1998,3,10328.787,6913.1,1700.071,681.472,7591.0,163.900,1086,4.49,4.5,277.003,1.71,2.78 +1998,4,10507.575,7019.1,1754.743,688.147,7646.5,164.700,1097.8,4.38,4.4,277.790,1.95,2.43 +1999,1,10601.179,7088.3,1809.993,683.601,7698.4,165.900,1101.9,4.39,4.3,278.451,2.9,1.49 +1999,2,10684.049,7199.9,1803.674,683.594,7716.0,166.700,1098.7,4.54,4.3,279.295,1.92,2.62 +1999,3,10819.914,7286.4,1848.949,697.936,7765.9,168.100,1102.3,4.75,4.2,280.203,3.35,1.41 +1999,4,11014.254,7389.2,1914.567,713.445,7887.7,169.300,1121.9,5.20,4.1,280.976,2.85,2.35 +2000,1,11043.044,7501.3,1887.836,685.216,8053.4,170.900,1113.5,5.63,4,281.653,3.76,1.87 +2000,2,11258.454,7571.8,2018.529,712.641,8135.9,172.700,1103,5.81,3.9,282.385,4.19,1.62 +2000,3,11267.867,7645.9,1986.956,698.827,8222.3,173.900,1098.7,6.07,4,283.190,2.77,3.3 +2000,4,11334.544,7713.5,1987.845,695.597,8234.6,175.600,1097.7,5.70,3.9,283.900,3.89,1.81 +2001,1,11297.171,7744.3,1882.691,710.403,8296.5,176.400,1114.9,4.39,4.2,284.550,1.82,2.57 +2001,2,11371.251,7773.5,1876.650,725.623,8273.7,177.400,1139.7,3.54,4.4,285.267,2.26,1.28 +2001,3,11340.075,7807.7,1837.074,730.493,8484.5,177.600,1166,2.72,4.8,286.047,0.45,2.27 +2001,4,11380.128,7930.0,1731.189,739.318,8385.5,177.700,1190.9,1.74,5.5,286.728,0.23,1.51 +2002,1,11477.868,7957.3,1789.327,756.915,8611.6,179.300,1185.9,1.75,5.7,287.328,3.59,-1.84 +2002,2,11538.770,7997.8,1810.779,774.408,8658.9,180.000,1199.5,1.70,5.8,288.028,1.56,0.14 +2002,3,11596.430,8052.0,1814.531,786.673,8629.2,181.200,1204,1.61,5.7,288.783,2.66,-1.05 +2002,4,11598.824,8080.6,1813.219,799.967,8649.6,182.600,1226.8,1.20,5.8,289.421,3.08,-1.88 +2003,1,11645.819,8122.3,1813.141,800.196,8681.3,183.200,1248.4,1.14,5.9,290.019,1.31,-0.17 +2003,2,11738.706,8197.8,1823.698,838.775,8812.5,183.700,1287.9,0.96,6.2,290.704,1.09,-0.13 +2003,3,11935.461,8312.1,1889.883,839.598,8935.4,184.900,1297.3,0.94,6.1,291.449,2.6,-1.67 +2003,4,12042.817,8358.0,1959.783,845.722,8986.4,186.300,1306.1,0.90,5.8,292.057,3.02,-2.11 +2004,1,12127.623,8437.6,1970.015,856.570,9025.9,187.400,1332.1,0.94,5.7,292.635,2.35,-1.42 +2004,2,12213.818,8483.2,2055.580,861.440,9115.0,189.100,1340.5,1.21,5.6,293.310,3.61,-2.41 +2004,3,12303.533,8555.8,2082.231,876.385,9175.9,190.800,1361,1.63,5.4,294.066,3.58,-1.95 +2004,4,12410.282,8654.2,2125.152,865.596,9303.4,191.800,1366.6,2.20,5.4,294.741,2.09,0.11 +2005,1,12534.113,8719.0,2170.299,869.204,9189.6,193.800,1357.8,2.69,5.3,295.308,4.15,-1.46 +2005,2,12587.535,8802.9,2131.468,870.044,9253.0,194.700,1366.6,3.01,5.1,295.994,1.85,1.16 +2005,3,12683.153,8865.6,2154.949,890.394,9308.0,199.200,1375,3.52,5,296.770,9.14,-5.62 +2005,4,12748.699,8888.5,2232.193,875.557,9358.7,199.400,1380.6,4.00,4.9,297.435,0.4,3.6 +2006,1,12915.938,8986.6,2264.721,900.511,9533.8,200.700,1380.5,4.51,4.7,298.061,2.6,1.91 +2006,2,12962.462,9035.0,2261.247,892.839,9617.3,202.700,1369.2,4.82,4.7,298.766,3.97,0.85 +2006,3,12965.916,9090.7,2229.636,892.002,9662.5,201.900,1369.4,4.90,4.7,299.593,-1.58,6.48 +2006,4,13060.679,9181.6,2165.966,894.404,9788.8,203.574,1373.6,4.92,4.4,300.320,3.3,1.62 +2007,1,13099.901,9265.1,2132.609,882.766,9830.2,205.920,1379.7,4.95,4.5,300.977,4.58,0.36 +2007,2,13203.977,9291.5,2162.214,898.713,9842.7,207.338,1370,4.72,4.5,301.714,2.75,1.97 +2007,3,13321.109,9335.6,2166.491,918.983,9883.9,209.133,1379.2,4.00,4.7,302.509,3.45,0.55 +2007,4,13391.249,9363.6,2123.426,925.110,9886.2,212.495,1377.4,3.01,4.8,303.204,6.38,-3.37 +2008,1,13366.865,9349.6,2082.886,943.372,9826.8,213.997,1384,1.56,4.9,303.803,2.82,-1.26 +2008,2,13415.266,9351.0,2026.518,961.280,10059.0,218.610,1409.3,1.74,5.4,304.483,8.53,-6.79 +2008,3,13324.600,9267.7,1990.693,991.551,9838.3,216.889,1474.7,1.17,6,305.270,-3.16,4.33 +2008,4,13141.920,9195.3,1857.661,1007.273,9920.4,212.174,1576.5,0.12,6.9,305.952,-8.79,8.91 +2009,1,12925.410,9209.2,1558.494,996.287,9926.4,212.671,1592.8,0.22,8.1,306.547,0.94,-0.71 +2009,2,12901.504,9189.0,1456.678,1023.528,10077.5,214.469,1653.6,0.18,9.2,307.226,3.37,-3.19 +2009,3,12990.341,9256.0,1486.398,1044.088,10040.6,216.385,1673.9,0.12,9.6,308.013,3.56,-3.44 diff --git a/statsmodels/datasets/macrodata/macrodata.dta b/statsmodels/datasets/macrodata/macrodata.dta new file mode 100644 index 0000000000000000000000000000000000000000..265fbcc3a8187d355a598101472f23564415b4ab GIT binary patch literal 13255 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 Zyebz|xv0u-HRtH^%P#64|DXEve*hwj59 + +See randhie/src for the original data and description. The data included +here contains only a subset of the original data. The data varies slightly +compared to that reported in Cameron and Trivedi. +""" + +DESCRSHORT = """The RAND Co. Health Insurance Experiment Data""" + +DESCRLONG = """""" + +NOTE = """:: + + Number of observations - 20,190 + Number of variables - 10 + Variable name definitions:: + + mdvis - Number of outpatient visits to an MD + lncoins - ln(coinsurance + 1), 0 <= coninsurance <= 100 + idp - 1 if individual deductible plan, 0 otherwise + lpi - ln(max(1, annual participation incentive payment)) + fmde - 0 if idp = 1; ln(max(1, MDE/(0.01 coinsurance))) otherwise + physlm - 1 if the person has a physical limitation + disea - number of chronic diseases + hlthg - 1 if self-rated health is good + hlthf - 1 if self-rated health is fair + hlthp - 1 if self-rated health is poor + (Omitted category is excellent self-rated health) +""" + + +def load(as_pandas=None): + """ + Loads the RAND HIE data and returns a Dataset class. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + + Notes + ----- + endog - response variable, mdvis + exog - design + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def load_pandas(): + """ + Loads the RAND HIE data and returns a Dataset class. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + + Notes + ----- + endog - response variable, mdvis + exog - design + """ + return du.process_pandas(_get_data(), endog_idx=0) + + +def _get_data(): + return du.load_csv(__file__, 'randhie.csv') diff --git a/statsmodels/datasets/randhie/randhie.csv b/statsmodels/datasets/randhie/randhie.csv new file mode 100644 index 0000000..45cfb7f --- /dev/null +++ b/statsmodels/datasets/randhie/randhie.csv @@ -0,0 +1,20191 @@ +mdvis,lncoins,idp,lpi,fmde,physlm,disea,hlthg,hlthf,hlthp +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +2,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +6,4.61512,1,6.907755,0,0,13.73189,1,0,0 +2,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +1,0,1,6.109248,0,0,13.73189,1,0,0 +0,0,1,6.109248,0,0,13.73189,1,0,0 +0,0,1,6.109248,0,0,13.73189,1,0,0 +0,0,1,6.109248,0,0,13.73189,1,0,0 +0,0,1,6.109248,0,0,13.73189,1,0,0 +1,0,1,6.109248,0,1,13,1,0,0 +0,0,1,6.109248,0,1,13,1,0,0 +1,0,1,6.109248,0,1,13,1,0,0 +2,0,1,6.109248,0,1,13,1,0,0 +4,0,1,6.109248,0,1,13,1,0,0 +0,0,1,6.109248,0,0,17.4,1,0,0 +0,0,1,6.109248,0,0,17.4,1,0,0 +0,0,1,6.109248,0,0,17.4,1,0,0 +0,0,1,6.109248,0,0,17.4,1,0,0 +0,0,1,6.109248,0,0,17.4,1,0,0 +0,0,1,0,0,0,4.3,0,0,0 +0,0,1,0,0,0,4.3,0,0,0 +0,0,1,0,0,0,4.3,0,0,0 +0,0,0,6.006353,0,0,13,1,0,0 +0,0,0,6.006353,0,0,13,1,0,0 +0,0,0,6.006353,0,0,13,1,0,0 +1,0,0,6.006353,0,0,4.3,1,0,0 +0,0,0,6.006353,0,0,4.3,1,0,0 +0,0,0,6.006353,0,0,4.3,1,0,0 +0,0,0,6.006353,0,0,13,1,0,0 +0,0,0,6.006353,0,0,13,1,0,0 +0,0,0,6.006353,0,0,13,1,0,0 +1,0,0,6.006353,0,0,13,1,0,0 +0,0,0,6.006353,0,0,13,1,0,0 +7,0,0,6.006353,0,0,13,1,0,0 +1,0,0,0,0,0,4.3,0,0,0 +0,0,0,0,0,0,4.3,0,0,0 +2,0,0,0,0,0,4.3,0,0,0 +8,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,8.7,0,0,0 +1,0,0,0,0,0,8.7,0,0,0 +0,0,0,0,0,0,8.7,0,0,0 +4,4.61512,1,6.802395,0,0,17.4,1,0,0 +5,4.61512,1,6.802395,0,0,17.4,1,0,0 +14,4.61512,1,6.802395,0,0,17.4,1,0,0 +3,4.61512,1,6.802395,0,0,13,1,0,0 +3,4.61512,1,6.802395,0,0,13,1,0,0 +5,4.61512,1,6.802395,0,0,13,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +2,3.258096,0,6.907755,8.294049,0,0,0,0,0 +1,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +2,3.258096,0,6.907755,8.294049,1,26.1,0,0,0 +1,3.258096,0,6.907755,8.294049,1,26.1,0,0,0 +6,3.258096,0,6.907755,8.294049,1,26.1,0,0,0 +2,3.258096,0,6.907755,8.294049,1,26.1,0,0,0 +1,3.258096,0,6.907755,8.294049,1,26.1,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,30.4,0,0,0 +1,3.258096,0,6.907755,8.294049,0,30.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,30.4,0,0,0 +15,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +6,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +2,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +4,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +4,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +3,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +21,0,0,0,0,0,13,0,1,0 +15,0,0,0,0,0,13,0,1,0 +20,0,0,0,0,0,13,0,1,0 +20,0,0,0,0,0,13,0,1,0 +17,0,0,0,0,0,13,0,1,0 +7,0,0,0,0,0,17.4,1,0,0 +8,0,0,0,0,0,17.4,1,0,0 +6,0,0,0,0,0,17.4,1,0,0 +15,0,0,0,0,0,17.4,1,0,0 +10,0,0,0,0,0,17.4,1,0,0 +6,3.931826,0,6.683361,7.376508,0,0,1,0,0 +3,3.931826,0,6.683361,7.376508,0,0,1,0,0 +7,3.931826,0,6.683361,7.376508,0,0,1,0,0 +1,3.931826,0,6.683361,7.376508,0,34.8,1,0,0 +1,3.931826,0,6.683361,7.376508,0,34.8,1,0,0 +0,3.931826,0,6.683361,7.376508,0,34.8,1,0,0 +1,3.931826,0,6.683361,7.376508,0,13,0,1,0 +1,3.931826,0,6.683361,7.376508,0,13,0,1,0 +0,3.931826,0,6.683361,7.376508,0,13,0,1,0 +1,4.61512,1,6.907755,0,0,0,1,0,0 +4,4.61512,1,6.907755,0,0,0,1,0,0 +12,4.61512,1,6.907755,0,0,0,1,0,0 +3,4.61512,1,6.907755,0,0,17.4,0,1,0 +2,4.61512,1,6.907755,0,0,17.4,0,1,0 +2,4.61512,1,6.907755,0,0,17.4,0,1,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +3,4.61512,1,6.907755,0,0,13.73189,1,0,0 +2,4.61512,1,6.907755,0,0,13.73189,1,0,0 +2,4.61512,1,6.907755,0,0,8.7,1,0,0 +2,4.61512,1,6.907755,0,0,8.7,1,0,0 +1,4.61512,1,6.907755,0,0,8.7,1,0,0 +3,4.61512,1,6.907755,0,1,13,1,0,0 +1,4.61512,1,6.907755,0,1,13,1,0,0 +4,4.61512,1,6.907755,0,1,13,1,0,0 +20,4.61512,1,6.907755,0,0,21.7,1,0,0 +15,4.61512,1,6.907755,0,0,21.7,1,0,0 +11,4.61512,1,6.907755,0,0,21.7,1,0,0 +69,0,0,6.393591,0,1,13.73189,0,1,0 +58,0,0,6.393591,0,1,13.73189,0,1,0 +63,0,0,6.393591,0,1,13.73189,0,1,0 +2,0,0,6.393591,0,1,13.73189,0,0,0 +3,0,0,6.393591,0,1,13.73189,0,0,0 +2,0,0,6.393591,0,1,13.73189,0,0,0 +11,0,0,0,0,0,13.73189,0,0,0 +9,0,0,0,0,0,13.73189,0,0,0 +5,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +8,0,0,0,0,0,13.73189,0,0,0 +6,0,0,0,0,0,13.73189,1,0,0 +3,0,0,0,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +3,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +6,0,0,0,0,0,17.4,0,0,0 +10,0,0,0,0,0,17.4,0,0,0 +12,0,0,0,0,0,17.4,0,0,0 +35,0,0,0,0,0,13,0,0,0 +9,0,0,0,0,0,13,0,0,0 +6,0,0,0,0,0,13,0,0,0 +6,0,0,0,0,0,13,0,0,0 +14,0,0,0,0,0,13,0,0,0 +5,4.61512,1,6.907755,0,0,13.73189,1,0,0 +4,4.61512,1,6.907755,0,0,13.73189,1,0,0 +2,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +5,4.61512,1,6.907755,0,0,13.73189,0,0,0 +3,4.61512,1,6.907755,0,0,13.73189,0,0,0 +3,4.61512,1,6.907755,0,0,13.73189,0,0,0 +3,4.61512,1,6.907755,0,0,13.73189,0,0,0 +3,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +3,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +3,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +16,0,0,0,0,1,21.7,1,0,0 +16,0,0,0,0,1,21.7,1,0,0 +17,0,0,0,0,1,21.7,1,0,0 +0,0,0,0,0,0,13,0,0,0 +0,0,0,0,0,0,13,0,0,0 +3,0,0,0,0,0,13,0,0,0 +2,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,4.3,1,0,0 +3,0,0,0,0,0,4.3,1,0,0 +3,0,0,0,0,0,4.3,1,0,0 +7,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,26.1,0,0,0 +8,0,0,0,0,0,26.1,0,0,0 +4,0,0,0,0,0,26.1,0,0,0 +4,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +4,0,0,0,0,0,13.73189,0,0,0 +8,0,0,0,0,1,13.73189,1,0,0 +4,0,0,0,0,1,13.73189,1,0,0 +7,0,0,0,0,1,13.73189,1,0,0 +7,0,0,5.446737,0,1,13,1,0,0 +19,0,0,5.446737,0,1,13,1,0,0 +0,0,0,5.446737,0,1,13,1,0,0 +12,0,0,5.446737,0,0,17.4,0,0,0 +7,0,0,5.446737,0,0,17.4,0,0,0 +3,0,0,5.446737,0,0,17.4,0,0,0 +0,0,0,5.446737,0,0,13.73189,0,0,0 +0,0,0,5.446737,0,0,13.73189,0,0,0 +1,0,0,5.446737,0,0,13.73189,0,0,0 +9,0,0,5.446737,0,0,13.73189,0,0,0 +2,0,0,5.446737,0,0,13.73189,0,0,0 +2,0,0,5.446737,0,0,13.73189,0,0,0 +3,0,0,5.446737,0,0,13.73189,0,0,0 +3,0,0,5.446737,0,0,13.73189,0,0,0 +2,0,0,5.446737,0,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +3,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +3,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +5,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +5,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13,1,0,0 +2,3.258096,0,6.907755,8.294049,0,26.1,1,0,0 +1,3.258096,0,6.907755,8.294049,0,26.1,1,0,0 +3,3.258096,0,6.907755,8.294049,0,26.1,1,0,0 +4,3.258096,0,6.907755,8.294049,0,26.1,1,0,0 +1,3.258096,0,6.907755,8.294049,0,26.1,1,0,0 +2,4.61512,1,6.907755,0,0,4.3,0,0,0 +2,4.61512,1,6.907755,0,0,4.3,0,0,0 +2,4.61512,1,6.907755,0,0,4.3,0,0,0 +2,4.61512,1,6.907755,0,0,4.3,0,0,0 +1,4.61512,1,6.907755,0,0,4.3,0,0,0 +4,4.61512,1,6.907755,0,0,17.4,1,0,0 +3,4.61512,1,6.907755,0,0,17.4,1,0,0 +10,4.61512,1,6.907755,0,0,17.4,1,0,0 +5,4.61512,1,6.907755,0,0,17.4,1,0,0 +11,4.61512,1,6.907755,0,0,17.4,1,0,0 +5,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +3,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +2,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +0,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +5,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +7,3.258096,0,6.907755,8.294049,1,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,1,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,1,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,1,13.73189,1,0,0 +5,3.258096,0,6.907755,8.294049,1,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +11,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +7,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +0,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +1,3.258096,0,6.300786,7.68708,0,13.73189,1,0,0 +2,3.258096,0,6.300786,7.68708,0,13.73189,1,0,0 +4,3.258096,0,6.300786,7.68708,0,13.73189,1,0,0 +0,3.258096,0,6.300786,7.68708,0,13.73189,1,0,0 +0,3.258096,0,6.300786,7.68708,0,13.73189,1,0,0 +1,3.258096,0,6.300786,7.68708,0,13.73189,1,0,0 +0,3.258096,0,6.300786,7.68708,0,13.73189,1,0,0 +0,3.258096,0,6.300786,7.68708,0,13.73189,1,0,0 +0,3.258096,0,6.300786,7.68708,0,13.73189,1,0,0 +4,4.61512,1,6.55108,0,0,17.4,0,0,0 +10,4.61512,1,6.55108,0,0,17.4,0,0,0 +1,4.61512,1,6.55108,0,0,17.4,0,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +1,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +1,4.61512,1,0,0,0,13.73189,1,0,0 +1,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,4.3,0,0,0 +0,4.61512,1,6.907755,0,0,4.3,0,0,0 +0,4.61512,1,6.907755,0,0,4.3,0,0,0 +1,4.61512,1,6.907755,0,0,17.4,0,0,0 +1,4.61512,1,6.907755,0,0,17.4,0,0,0 +3,4.61512,1,6.907755,0,0,17.4,0,0,0 +3,4.61512,1,5.843544,0,0,4.3,0,0,0 +2,4.61512,1,5.843544,0,0,4.3,0,0,0 +1,4.61512,1,5.843544,0,0,4.3,0,0,0 +1,4.61512,1,5.843544,0,0,4.3,0,0,0 +2,4.61512,1,5.843544,0,0,4.3,0,0,0 +0,0,0,0,0,0,17.4,1,0,0 +0,0,0,0,0,0,17.4,1,0,0 +0,0,0,0,0,0,17.4,1,0,0 +3,0,0,0,0,0,17.4,1,0,0 +0,0,0,0,0,0,17.4,1,0,0 +6,0,0,0,0,0,4.3,0,0,0 +1,0,0,0,0,0,4.3,0,0,0 +0,0,0,0,0,0,4.3,0,0,0 +5,0,0,0,0,0,4.3,0,0,0 +1,0,0,0,0,0,4.3,0,0,0 +11,4.61512,1,6.907755,0,1,8.7,1,0,0 +44,4.61512,1,6.907755,0,1,8.7,1,0,0 +7,4.61512,1,6.907755,0,1,8.7,1,0,0 +1,4.61512,1,6.907755,0,0,13,1,0,0 +1,4.61512,1,6.907755,0,0,13,1,0,0 +3,4.61512,1,6.907755,0,0,13,1,0,0 +0,4.61512,1,6.907755,0,1,13.73189,1,0,0 +3,4.61512,1,6.907755,0,1,13.73189,1,0,0 +1,4.61512,1,6.907755,0,1,13.73189,1,0,0 +8,4.61512,1,6.907755,0,1,39.1,0,1,0 +6,4.61512,1,6.907755,0,1,39.1,0,1,0 +3,4.61512,1,6.907755,0,1,39.1,0,1,0 +3,3.258096,0,5.420535,6.806829,1,21.7,1,0,0 +3,3.258096,0,5.420535,6.806829,1,21.7,1,0,0 +3,3.258096,0,5.420535,6.806829,1,21.7,1,0,0 +2,3.258096,0,6.272877,7.659172,0,8.7,0,0,0 +1,3.258096,0,6.272877,7.659172,0,8.7,0,0,0 +1,3.258096,0,6.272877,7.659172,0,8.7,0,0,0 +3,4.61512,1,6.907755,0,0,0,1,0,0 +1,4.61512,1,6.907755,0,0,0,1,0,0 +0,4.61512,1,6.907755,0,0,0,1,0,0 +3,4.61512,1,6.907755,0,0,13.73189,1,0,0 +17,4.61512,1,6.907755,0,0,13.73189,1,0,0 +21,4.61512,1,6.907755,0,0,13.73189,1,0,0 +5,4.61512,1,6.907755,0,1,39.1,1,0,0 +5,4.61512,1,6.907755,0,1,39.1,1,0,0 +3,4.61512,1,6.907755,0,1,39.1,1,0,0 +10,0,0,0,0,1,13.73189,0,0,1 +1,0,0,0,0,1,13.73189,0,0,1 +1,0,0,0,0,1,13.73189,0,0,1 +2,0,0,0,0,1,13.73189,0,0,1 +1,0,0,0,0,1,13.73189,0,0,1 +2,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +7,0,0,0,0,0,13.73189,0,0,0 +5,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +0,0,0,0,0,0,13.73189,1,0,0 +0,0,0,0,0,0,13.73189,1,0,0 +1,0,0,0,0,0,13.73189,1,0,0 +0,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,1,0,0 +1,0,0,0,0,0,13.73189,1,0,0 +0,0,0,0,0,0,13.73189,1,0,0 +6,0,0,0,0,0,13.73189,1,0,0 +0,0,0,0,0,0,13.73189,1,0,0 +3,0,0,0,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +5,0,0,0,0,0,13.73189,1,0,0 +0,0,0,0,0,0,13.73189,0,1,0 +0,0,0,0,0,0,13.73189,0,1,0 +0,0,0,0,0,0,13.73189,0,1,0 +9,0,0,0,0,1,13.73189,0,1,0 +9,0,0,0,0,1,13.73189,0,1,0 +10,0,0,0,0,1,13.73189,0,1,0 +2,3.258096,0,5.720312,7.106606,0,13.73189,0,1,0 +5,3.258096,0,5.720312,7.106606,0,13.73189,0,1,0 +9,3.258096,0,5.720312,7.106606,0,13.73189,0,1,0 +48,3.258096,0,5.720312,7.106606,0,13.73189,0,1,0 +8,3.258096,0,5.720312,7.106606,0,13.73189,0,1,0 +5,4.61512,1,6.907755,0,0,4.3,0,0,0 +8,4.61512,1,6.907755,0,0,4.3,0,0,0 +14,4.61512,1,6.907755,0,0,4.3,0,0,0 +5,4.61512,1,6.907755,0,0,13.73189,0,0,0 +10,4.61512,1,6.907755,0,0,13.73189,0,0,0 +4,4.61512,1,6.907755,0,0,13.73189,0,0,0 +7,4.61512,1,6.907755,0,0,13.73189,0,0,0 +6,4.61512,1,6.907755,0,0,13.73189,0,0,0 +3,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,21.7,0,0,0 +2,4.61512,1,6.907755,0,0,21.7,0,0,0 +2,4.61512,1,6.907755,0,0,21.7,0,0,0 +1,4.61512,1,6.907755,0,0,0,0,0,0 +0,4.61512,1,6.907755,0,0,0,0,0,0 +0,4.61512,1,6.907755,0,0,0,0,0,0 +30,3.258096,0,6.907755,8.294049,1,43.5,0,0,1 +25,3.258096,0,6.907755,8.294049,1,43.5,0,0,1 +18,3.258096,0,6.907755,8.294049,1,43.5,0,0,1 +15,3.258096,0,6.907755,8.294049,1,43.5,0,0,1 +20,3.258096,0,6.907755,8.294049,1,43.5,0,0,1 +45,3.258096,0,6.907755,8.294049,1,43.5,1,0,0 +28,3.258096,0,6.907755,8.294049,1,43.5,1,0,0 +14,3.258096,0,6.907755,8.294049,1,43.5,1,0,0 +14,3.258096,0,6.907755,8.294049,1,43.5,1,0,0 +28,3.258096,0,6.907755,8.294049,1,43.5,1,0,0 +3,3.931826,0,6.907755,7.600903,0,13,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13,0,0,0 +3,3.931826,0,6.907755,7.600903,0,13,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +3,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,17.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,17.4,0,0,0 +7,3.931826,0,6.907755,7.600903,0,17.4,0,0,0 +0,4.61512,1,5.883322,0,0,0,1,0,0 +0,4.61512,1,5.883322,0,0,0,1,0,0 +1,4.61512,1,5.883322,0,0,0,1,0,0 +0,4.61512,1,5.883322,0,0,13.73189,0,0,0 +0,4.61512,1,5.883322,0,0,13.73189,0,0,0 +2,4.61512,1,5.883322,0,0,13.73189,0,0,0 +0,4.61512,1,5.883322,0,0,26.1,0,0,0 +0,4.61512,1,5.883322,0,0,26.1,0,0,0 +0,4.61512,1,5.883322,0,0,26.1,0,0,0 +2,4.61512,1,6.907755,0,0,8.7,1,0,0 +2,4.61512,1,6.907755,0,0,8.7,1,0,0 +7,4.61512,1,6.907755,0,0,26.1,0,1,0 +4,4.61512,1,6.907755,0,0,26.1,0,1,0 +9,4.61512,1,6.907755,0,0,26.1,0,1,0 +10,4.61512,1,6.907755,0,0,26.1,0,1,0 +9,4.61512,1,6.907755,0,0,26.1,0,1,0 +5,4.61512,1,6.907755,0,0,8.7,1,0,0 +9,4.61512,1,6.907755,0,0,8.7,1,0,0 +7,4.61512,1,6.907755,0,0,8.7,1,0,0 +3,4.61512,1,6.907755,0,0,8.7,1,0,0 +4,4.61512,1,6.907755,0,0,8.7,1,0,0 +3,4.61512,1,6.907755,0,1,8.7,1,0,0 +3,4.61512,1,6.907755,0,1,8.7,1,0,0 +1,4.61512,1,6.907755,0,1,8.7,1,0,0 +0,4.61512,1,6.907755,0,1,8.7,1,0,0 +3,4.61512,1,6.907755,0,1,8.7,1,0,0 +4,4.61512,1,6.907755,0,0,13,1,0,0 +1,4.61512,1,6.907755,0,0,13,1,0,0 +1,4.61512,1,6.907755,0,0,13,1,0,0 +3,4.61512,1,6.907755,0,0,13,1,0,0 +2,4.61512,1,6.907755,0,0,13,1,0,0 +1,4.61512,1,6.907755,0,1,13.73189,0,1,0 +0,4.61512,1,6.907755,0,1,13.73189,0,1,0 +1,4.61512,1,6.907755,0,1,13.73189,0,1,0 +3,4.61512,1,6.907755,0,1,13.73189,0,1,0 +1,4.61512,1,6.907755,0,1,13.73189,0,1,0 +2,0,0,0,0,1,17.4,1,0,0 +1,0,0,0,0,1,17.4,1,0,0 +3,0,0,0,0,1,17.4,1,0,0 +0,0,0,0,0,1,17.4,1,0,0 +1,0,0,0,0,1,17.4,1,0,0 +0,0,0,0,0,0,13,0,1,0 +0,0,0,0,0,0,13,0,1,0 +0,0,0,0,0,0,13,0,1,0 +0,0,0,0,0,0,13,0,1,0 +0,0,0,0,0,0,13,0,1,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +3,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +1,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +0,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +0,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +0,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +4,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +2,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +2,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +0,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +2,4.61512,1,5.703783,0,0,13.73189,1,0,0 +1,4.61512,1,5.703783,0,0,13.73189,1,0,0 +1,4.61512,1,5.703783,0,0,13.73189,1,0,0 +0,4.61512,1,5.703783,0,0,13.73189,1,0,0 +5,4.61512,1,5.703783,0,0,13.73189,1,0,0 +1,4.61512,1,5.703783,0,0,13.73189,1,0,0 +6,4.61512,1,5.703783,0,0,13.73189,0,0,0 +1,4.61512,1,5.703783,0,0,13.73189,0,0,0 +3,4.61512,1,5.703783,0,0,13.73189,0,0,0 +4,0,0,0,0,0,4.3,0,0,0 +2,0,0,0,0,0,4.3,0,0,0 +1,0,0,0,0,0,4.3,0,0,0 +0,0,0,0,0,0,8.7,0,0,0 +1,0,0,0,0,0,8.7,0,0,0 +1,0,0,0,0,0,8.7,0,0,0 +1,0,0,0,0,0,4.3,0,0,0 +0,0,0,0,0,0,4.3,0,0,0 +1,0,0,0,0,0,4.3,0,0,0 +4,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,4.3,0,0,0 +8,0,0,0,0,0,4.3,0,0,0 +3,0,0,0,0,0,4.3,0,0,0 +4,0,0,0,0,0,8.7,0,0,0 +0,0,0,0,0,0,8.7,0,0,0 +1,0,0,0,0,0,8.7,0,0,0 +1,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +0,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +2,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +7,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +5,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13,1,0,0 +6,3.931826,0,6.907755,7.600903,0,13,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13,1,0,0 +10,0,0,0,0,0,17.4,0,0,0 +7,0,0,0,0,0,17.4,0,0,0 +8,0,0,0,0,0,17.4,0,0,0 +4,0,0,0,0,0,17.4,0,0,0 +3,0,0,0,0,0,17.4,0,0,0 +10,0,0,0,0,0,17.4,0,0,0 +15,0,0,0,0,0,17.4,0,0,0 +16,0,0,0,0,0,17.4,0,0,0 +3,0,0,0,0,0,17.4,0,0,0 +6,0,0,0,0,0,17.4,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +5,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +5,0,0,0,0,0,13.73189,0,0,0 +14,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +13,0,0,0,0,0,13.73189,0,0,0 +1,0,0,6.198479,0,0,13.73189,0,0,0 +9,0,0,6.198479,0,0,13.73189,0,0,0 +1,0,0,6.198479,0,0,13.73189,0,0,0 +2,0,0,6.198479,0,0,13.73189,0,0,0 +2,0,0,6.198479,0,0,13.73189,0,0,0 +2,0,0,6.198479,0,0,13.73189,0,0,0 +5,0,0,6.198479,0,0,13.73189,0,0,0 +2,0,0,6.198479,0,0,13.73189,0,0,0 +2,0,0,6.198479,0,0,13.73189,0,0,0 +6,0,0,6.198479,0,0,13.73189,0,0,0 +0,0,0,6.198479,0,0,13.73189,1,0,0 +0,0,0,6.198479,0,0,13.73189,1,0,0 +0,0,0,6.198479,0,0,13.73189,1,0,0 +2,0,0,6.198479,0,0,13.73189,1,0,0 +2,0,0,6.198479,0,0,13.73189,1,0,0 +6,0,0,5.662961,0,0,13.73189,0,0,0 +4,0,0,5.662961,0,0,13.73189,0,0,0 +5,0,0,5.662961,0,0,13.73189,0,0,0 +1,0,0,5.662961,0,0,13.73189,0,0,0 +2,0,0,5.662961,0,0,13.73189,0,0,0 +4,0,0,5.662961,0,0,13.73189,0,0,0 +4,0,0,5.662961,0,0,13.73189,0,0,0 +1,0,0,5.662961,0,0,13.73189,0,0,0 +1,0,0,5.662961,0,0,13.73189,0,0,0 +2,0,0,5.662961,0,0,13.73189,0,0,0 +10,0,0,5.662961,0,0,13.73189,0,0,0 +7,0,0,5.662961,0,0,13.73189,0,0,0 +5,0,0,5.662961,0,0,13.73189,0,0,0 +4,0,0,5.662961,0,0,13.73189,0,0,0 +4,0,0,5.662961,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,1,0,0 +1,0,0,0,0,0,13.73189,1,0,0 +1,0,0,0,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +0,0,0,0,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +3,0,0,0,0,0,13.73189,1,0,0 +3,0,0,0,0,0,13.73189,1,0,0 +5,0,0,0,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +0,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +3,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +6,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +4,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +2,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +7,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +6,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +1,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +0,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +2,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +0,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +0,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +5,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +3,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +0,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +1,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +8,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +7,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +1,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +3,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +2,3.931826,0,6.395262,7.088409,0,13.73189,0,0,0 +1,3.931826,0,6.576469,7.269617,0,13.73189,0,0,0 +4,3.931826,0,6.576469,7.269617,0,13.73189,0,0,0 +1,3.931826,0,6.576469,7.269617,0,13.73189,0,0,0 +5,3.931826,0,6.576469,7.269617,0,13.73189,1,0,0 +1,3.931826,0,6.576469,7.269617,0,13.73189,1,0,0 +2,3.931826,0,6.576469,7.269617,0,13.73189,1,0,0 +13,3.931826,0,6.576469,7.269617,0,13.73189,0,1,0 +12,3.931826,0,6.576469,7.269617,0,13.73189,0,1,0 +13,3.931826,0,6.576469,7.269617,0,13.73189,0,1,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,0,1,4.532599,0,0,13,0,0,0 +4,0,1,4.532599,0,0,13,0,0,0 +0,0,1,4.532599,0,0,13,0,0,0 +0,4.61512,1,6.907755,0,0,0,1,0,0 +1,4.61512,1,6.907755,0,0,0,1,0,0 +1,4.61512,1,6.907755,0,0,0,1,0,0 +2,4.61512,1,6.907755,0,0,0,1,0,0 +0,4.61512,1,6.907755,0,0,0,1,0,0 +0,4.61512,1,6.907755,0,0,0,1,0,0 +1,4.61512,1,6.907755,0,0,0,1,0,0 +0,4.61512,1,6.907755,0,0,0,1,0,0 +1,4.61512,1,6.907755,0,0,0,1,0,0 +0,4.61512,1,6.907755,0,0,0,1,0,0 +4,0,0,5.777652,0,0,13.73189,1,0,0 +4,0,0,5.777652,0,0,13.73189,1,0,0 +4,0,0,5.777652,0,0,13.73189,1,0,0 +1,0,0,5.777652,0,0,13.73189,1,0,0 +3,0,0,5.777652,0,0,13.73189,1,0,0 +3,0,0,5.777652,0,0,13.73189,1,0,0 +12,0,0,5.777652,0,0,13.73189,1,0,0 +14,0,0,5.777652,0,0,13.73189,1,0,0 +5,0,0,5.777652,0,0,13.73189,1,0,0 +10,0,0,5.777652,0,0,13.73189,1,0,0 +4,0,0,5.777652,0,0,13.73189,0,1,0 +4,0,0,5.777652,0,0,13.73189,0,1,0 +4,0,0,5.777652,0,0,13.73189,0,1,0 +3,0,0,5.777652,0,0,13.73189,0,1,0 +3,0,0,5.777652,0,0,13.73189,0,1,0 +3,0,0,5.777652,0,0,13.73189,1,0,0 +2,0,0,5.777652,0,0,13.73189,1,0,0 +1,0,0,5.777652,0,0,13.73189,1,0,0 +5,0,0,5.777652,0,0,13.73189,1,0,0 +1,0,0,5.777652,0,0,13.73189,1,0,0 +19,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +4,4.61512,1,6.907755,0,0,13.73189,0,0,0 +15,4.61512,1,6.907755,0,0,13.73189,1,0,0 +10,4.61512,1,6.907755,0,0,13.73189,1,0,0 +7,4.61512,1,6.907755,0,0,13.73189,1,0,0 +3,0,1,5.703783,0,0,8.7,1,0,0 +0,0,1,5.703783,0,0,8.7,1,0,0 +0,0,1,5.703783,0,0,8.7,1,0,0 +1,0,1,5.703783,0,0,8.7,1,0,0 +0,0,1,5.703783,0,0,8.7,1,0,0 +5,0,1,5.703783,0,1,17.4,1,0,0 +2,0,1,5.703783,0,1,17.4,1,0,0 +0,0,1,5.703783,0,1,17.4,1,0,0 +3,0,1,5.703783,0,1,17.4,1,0,0 +4,0,1,5.703783,0,1,17.4,1,0,0 +0,0,1,6.272877,0,0,0,0,0,0 +1,0,1,6.272877,0,0,0,0,0,0 +3,0,1,6.272877,0,0,0,0,0,0 +1,0,1,6.272877,0,0,13.73189,0,0,0 +0,0,1,6.272877,0,0,13.73189,0,0,0 +4,0,1,6.272877,0,0,13.73189,0,0,0 +4,0,1,6.272877,0,0,13,0,0,0 +2,0,1,6.272877,0,0,13,0,0,0 +6,0,1,6.272877,0,0,13,0,0,0 +1,0,1,6.272877,0,0,13.73189,0,0,0 +2,0,1,6.272877,0,0,13.73189,0,0,0 +5,0,1,6.272877,0,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,1,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +4,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +4,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +7,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +1,3.258096,0,6.907755,8.294049,0,0,0,0,0 +6,3.258096,0,6.907755,8.294049,1,0,0,0,0 +4,3.258096,0,6.907755,8.294049,1,0,0,0,0 +0,3.258096,0,6.907755,8.294049,1,0,0,0,0 +2,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +3,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +14,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +0,0,1,4.727388,0,0,0,0,0,0 +0,0,1,4.727388,0,0,0,0,0,0 +1,0,1,4.727388,0,0,0,0,0,0 +2,0,1,4.727388,0,0,0,0,0,0 +2,0,1,4.727388,0,0,0,0,0,0 +2,0,1,4.727388,0,0,13,0,0,0 +0,0,1,4.727388,0,0,13,0,0,0 +0,0,1,4.727388,0,0,13,0,0,0 +7,0,1,4.727388,0,0,13,0,0,0 +3,0,1,4.727388,0,0,13,0,0,0 +3,0,1,4.727388,0,0,8.7,0,0,0 +3,0,1,4.727388,0,0,8.7,0,0,0 +3,0,1,4.727388,0,0,8.7,0,0,0 +0,0,1,4.727388,0,0,8.7,0,0,0 +0,0,1,4.727388,0,0,8.7,0,0,0 +0,0,1,0,0,0,13.73189,0,0,0 +2,0,1,0,0,0,13.73189,0,0,0 +4,0,1,0,0,0,13.73189,0,0,0 +0,0,1,0,0,0,13.73189,1,0,0 +1,0,1,0,0,0,13.73189,1,0,0 +1,0,1,0,0,0,13.73189,1,0,0 +0,0,1,0,0,1,13.73189,0,0,1 +0,0,1,0,0,1,13.73189,0,0,1 +0,0,1,0,0,1,13.73189,0,0,1 +2,0,1,0,0,0,13.73189,1,0,0 +1,0,1,0,0,0,13.73189,1,0,0 +2,0,1,0,0,0,13.73189,1,0,0 +0,3.258096,0,5.828946,7.21524,0,13.73189,1,0,0 +1,3.258096,0,5.828946,7.21524,0,13.73189,1,0,0 +0,3.258096,0,5.828946,7.21524,0,4.3,1,0,0 +0,3.258096,0,5.828946,7.21524,0,4.3,1,0,0 +3,3.258096,0,5.828946,7.21524,0,4.3,1,0,0 +2,3.258096,0,5.828946,7.21524,0,4.3,1,0,0 +0,3.258096,0,5.828946,7.21524,0,4.3,1,0,0 +0,3.258096,0,5.828946,7.21524,0,4.3,1,0,0 +0,3.258096,0,5.828946,7.21524,0,13.73189,1,0,0 +0,3.258096,0,5.828946,7.21524,0,13.73189,1,0,0 +0,3.258096,0,5.828946,7.21524,0,8.7,0,1,0 +5,3.258096,0,5.828946,7.21524,0,8.7,0,1,0 +2,0,1,5.703783,0,0,13.73189,1,0,0 +6,0,1,5.703783,0,0,13.73189,1,0,0 +0,0,1,5.703783,0,0,13.73189,1,0,0 +0,0,1,5.703783,0,0,13.73189,0,0,0 +0,0,1,5.703783,0,0,13.73189,0,0,0 +2,0,1,5.703783,0,0,13.73189,0,0,0 +35,0,1,5.986452,0,1,13.73189,1,0,0 +20,0,1,5.986452,0,1,13.73189,1,0,0 +16,0,1,5.986452,0,1,13.73189,1,0,0 +9,0,1,5.986452,0,1,13.73189,1,0,0 +16,0,1,5.986452,0,1,13.73189,1,0,0 +22,0,1,5.986452,0,0,13.73189,1,0,0 +9,0,1,5.986452,0,0,13.73189,1,0,0 +13,0,1,5.986452,0,0,13.73189,1,0,0 +8,0,1,5.986452,0,0,13.73189,1,0,0 +5,0,1,5.986452,0,0,13.73189,1,0,0 +1,3.931826,0,6.683361,7.376508,0,13.73189,1,0,0 +1,3.931826,0,6.683361,7.376508,0,13.73189,1,0,0 +1,3.931826,0,6.683361,7.376508,0,13.73189,1,0,0 +0,3.931826,0,6.683361,7.376508,0,13.73189,1,0,0 +0,3.931826,0,6.683361,7.376508,0,13.73189,1,0,0 +0,3.931826,0,6.683361,7.376508,0,13.73189,1,0,0 +0,3.931826,0,6.683361,7.376508,0,13.73189,1,0,0 +0,3.931826,0,6.683361,7.376508,0,13.73189,1,0,0 +3,3.931826,0,6.683361,7.376508,0,13.73189,1,0,0 +0,3.931826,0,6.683361,7.376508,0,13.73189,1,0,0 +0,3.931826,0,6.683361,7.376508,0,13.73189,1,0,0 +0,3.931826,0,6.683361,7.376508,0,13.73189,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +8,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +10,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +5,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +5,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +5,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +7,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +10,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,0,0,0 +0,4.61512,1,0,0,0,13.73189,0,0,0 +2,4.61512,1,0,0,0,13.73189,0,0,0 +0,4.61512,1,0,0,0,13.73189,0,0,0 +0,4.61512,1,0,0,0,13.73189,0,0,0 +2,4.61512,1,6.684612,0,0,13.73189,1,0,0 +3,4.61512,1,6.684612,0,0,13.73189,1,0,0 +1,4.61512,1,6.684612,0,0,13.73189,1,0,0 +1,4.61512,1,6.684612,0,0,13.73189,1,0,0 +4,4.61512,1,6.684612,0,0,13.73189,1,0,0 +15,4.61512,1,6.684612,0,0,13.73189,1,0,0 +9,4.61512,1,6.684612,0,0,13.73189,1,0,0 +10,4.61512,1,6.684612,0,0,13.73189,1,0,0 +2,4.61512,1,6.684612,0,0,13.73189,1,0,0 +4,4.61512,1,6.684612,0,0,13.73189,1,0,0 +4,4.61512,1,6.684612,0,0,13.73189,1,0,0 +2,4.61512,1,6.684612,0,0,13.73189,1,0,0 +0,4.61512,1,6.684612,0,0,13.73189,1,0,0 +3,4.61512,1,6.684612,0,0,13.73189,1,0,0 +0,4.61512,1,6.684612,0,0,13.73189,1,0,0 +6,3.258096,0,6.907755,8.294049,0,17.4,0,0,1 +2,3.258096,0,6.907755,8.294049,0,17.4,0,0,1 +5,3.258096,0,6.907755,8.294049,0,17.4,0,0,1 +9,3.258096,0,6.907755,8.294049,1,30.4,0,0,1 +2,3.258096,0,6.907755,8.294049,1,30.4,0,0,1 +8,3.258096,0,6.907755,8.294049,1,30.4,0,0,1 +0,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13,0,0,0 +0,0,0,0,0,0,13,0,0,0 +0,0,0,0,0,0,13,0,0,0 +0,0,0,0,0,0,13,0,0,0 +0,0,0,0,0,0,13,0,0,0 +1,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +7,0,0,0,0,0,8.7,0,0,0 +2,0,0,0,0,0,8.7,0,0,0 +2,0,0,0,0,0,8.7,0,0,0 +1,0,0,0,0,0,8.7,0,0,0 +4,0,0,0,0,0,8.7,0,0,0 +5,0,0,4.543295,0,1,34.8,1,0,0 +5,0,0,4.543295,0,1,34.8,1,0,0 +8,0,0,4.543295,0,1,34.8,1,0,0 +7,0,0,4.543295,0,1,34.8,1,0,0 +6,0,0,4.543295,0,1,34.8,1,0,0 +0,4.61512,1,6.826545,0,0,13.73189,1,0,0 +3,4.61512,1,6.826545,0,0,13.73189,1,0,0 +5,4.61512,1,6.826545,0,0,13.73189,1,0,0 +0,0,0,0,0,0,4.3,0,0,0 +1,0,0,0,0,0,4.3,0,0,0 +2,0,0,0,0,0,4.3,0,0,0 +1,0,0,0,0,0,4.3,0,0,0 +0,0,0,0,0,0,4.3,0,0,0 +5,0,0,0,0,0,4.3,0,0,0 +0,0,0,0,0,0,4.3,0,0,0 +5,0,0,0,0,0,4.3,0,0,0 +0,0,0,0,0,0,4.3,0,0,0 +0,0,0,0,0,0,4.3,0,0,0 +7,0,0,0,0,0,17.4,1,0,0 +1,0,0,0,0,0,17.4,1,0,0 +1,0,0,0,0,0,17.4,1,0,0 +3,0,0,0,0,0,17.4,1,0,0 +4,0,0,0,0,0,17.4,1,0,0 +2,3.931826,0,6.855409,7.548556,0,8.7,0,0,0 +0,3.931826,0,6.855409,7.548556,0,8.7,0,0,0 +1,3.931826,0,6.855409,7.548556,0,8.7,0,0,0 +1,3.931826,0,6.855409,7.548556,0,8.7,0,0,0 +0,3.931826,0,6.855409,7.548556,0,8.7,0,0,0 +8,3.931826,0,6.855409,7.548556,0,21.7,0,0,0 +1,3.931826,0,6.855409,7.548556,0,21.7,0,0,0 +5,3.931826,0,6.855409,7.548556,0,21.7,0,0,0 +3,3.931826,0,6.855409,7.548556,0,21.7,0,0,0 +7,3.931826,0,6.855409,7.548556,0,21.7,0,0,0 +0,3.258096,0,0,0,0,17.4,0,0,0 +0,3.258096,0,0,0,0,17.4,0,0,0 +0,3.258096,0,0,0,0,17.4,0,0,0 +0,3.258096,0,0,0,0,17.4,0,0,0 +1,3.258096,0,0,0,0,17.4,0,0,0 +5,3.258096,0,0,0,0,30.4,0,0,0 +2,3.258096,0,0,0,0,30.4,0,0,0 +2,3.258096,0,0,0,0,30.4,0,0,0 +0,3.258096,0,0,0,0,30.4,0,0,0 +1,3.258096,0,0,0,0,30.4,0,0,0 +0,3.258096,0,0,0,0,13.73189,0,0,0 +1,3.258096,0,0,0,0,13.73189,0,0,0 +2,3.258096,0,0,0,0,13.73189,0,0,0 +3,3.258096,0,0,0,0,13.73189,0,0,0 +3,3.258096,0,0,0,0,13.73189,0,0,0 +0,3.258096,0,0,0,0,13.73189,0,0,0 +2,3.258096,0,0,0,0,13.73189,0,0,0 +0,3.258096,0,0,0,0,13.73189,0,0,0 +1,3.258096,0,0,0,0,13.73189,0,0,0 +1,3.258096,0,0,0,0,13.73189,0,0,0 +3,3.258096,0,0,0,0,13.73189,0,0,0 +3,3.258096,0,0,0,0,13.73189,0,0,0 +0,3.258096,0,0,0,0,13.73189,0,0,0 +1,3.258096,0,0,0,0,13.73189,0,0,0 +1,3.258096,0,0,0,0,13.73189,0,0,0 +2,3.258096,0,0,0,0,13.73189,0,0,0 +2,3.258096,0,0,0,0,13.73189,0,0,0 +0,3.258096,0,0,0,0,13.73189,0,0,0 +1,3.258096,0,0,0,0,13.73189,0,0,0 +5,3.258096,0,0,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,0,1,0,0 +0,4.61512,1,6.907755,0,0,0,1,0,0 +0,4.61512,1,6.907755,0,0,0,1,0,0 +1,4.61512,1,6.907755,0,0,4.3,0,0,0 +0,4.61512,1,6.907755,0,0,4.3,0,0,0 +0,4.61512,1,6.907755,0,0,4.3,0,0,0 +4,3.258096,0,5.926926,7.313221,0,13,1,0,0 +0,3.258096,0,5.926926,7.313221,0,13,1,0,0 +0,3.258096,0,5.926926,7.313221,0,13,1,0,0 +0,3.258096,0,5.926926,7.313221,0,13,1,0,0 +0,3.258096,0,5.926926,7.313221,0,13,1,0,0 +2,4.61512,1,6.907755,0,1,13.73189,1,0,0 +1,4.61512,1,6.907755,0,1,13.73189,1,0,0 +0,4.61512,1,6.907755,0,1,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +3,4.61512,1,6.907755,0,0,13.73189,1,0,0 +8,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +3,4.61512,1,6.907755,0,0,21.7,1,0,0 +12,4.61512,1,6.907755,0,0,21.7,1,0,0 +18,4.61512,1,6.907755,0,0,21.7,1,0,0 +8,4.61512,1,6.907755,0,0,13,0,0,0 +4,4.61512,1,6.907755,0,0,13,0,0,0 +13,4.61512,1,6.907755,0,0,13,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13,0,0,0 +2,4.61512,1,6.907755,0,0,13,0,0,0 +4,4.61512,1,6.907755,0,0,13,0,0,0 +6,4.61512,1,6.907755,0,0,13,0,0,0 +0,4.61512,1,6.907755,0,0,13,0,0,0 +8,4.61512,1,6.907755,0,0,13,0,0,0 +0,4.61512,1,6.907755,0,0,8.7,0,0,0 +0,4.61512,1,6.907755,0,0,8.7,0,0,0 +7,4.61512,1,6.907755,0,0,8.7,0,0,0 +1,3.258096,0,6.683361,8.069655,0,30.4,1,0,0 +1,3.258096,0,6.683361,8.069655,0,30.4,1,0,0 +2,3.258096,0,6.683361,8.069655,0,30.4,1,0,0 +12,3.258096,0,6.683361,8.069655,0,30.4,1,0,0 +3,3.258096,0,6.683361,8.069655,0,30.4,1,0,0 +4,3.258096,0,6.683361,8.069655,0,13.73189,1,0,0 +2,3.258096,0,6.683361,8.069655,0,13.73189,1,0,0 +3,3.258096,0,6.683361,8.069655,0,13.73189,1,0,0 +2,3.258096,0,6.683361,8.069655,0,13.73189,1,0,0 +2,3.258096,0,6.683361,8.069655,0,13.73189,1,0,0 +2,3.258096,0,6.683361,8.069655,1,30.4,1,0,0 +1,3.258096,0,6.683361,8.069655,1,30.4,1,0,0 +2,3.258096,0,6.683361,8.069655,1,30.4,1,0,0 +3,3.258096,0,6.683361,8.069655,1,30.4,1,0,0 +3,3.258096,0,6.683361,8.069655,1,30.4,1,0,0 +0,3.258096,0,5.556828,6.943122,0,4.3,1,0,0 +0,3.258096,0,5.556828,6.943122,0,4.3,1,0,0 +0,3.258096,0,5.556828,6.943122,0,4.3,1,0,0 +0,3.258096,0,5.556828,6.943122,0,4.3,1,0,0 +0,3.258096,0,5.556828,6.943122,0,4.3,1,0,0 +7,0,0,6.139884,0,0,13.73189,0,0,0 +6,0,0,6.139884,0,0,13.73189,0,0,0 +12,0,0,6.139884,0,0,13.73189,0,0,0 +5,0,0,6.139884,0,0,13.73189,1,0,0 +10,0,0,6.139884,0,0,13.73189,1,0,0 +5,0,0,6.139884,0,0,13.73189,1,0,0 +3,0,0,6.139884,0,0,13.73189,0,0,0 +7,0,0,6.139884,0,0,13.73189,0,0,0 +0,0,0,6.139884,0,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +1,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +1,3.258096,0,6.907755,8.294049,0,21.7,0,0,0 +1,3.258096,0,6.907755,8.294049,0,21.7,0,0,0 +3,3.258096,0,6.907755,8.294049,0,21.7,0,0,0 +8,3.931826,0,6.907755,7.600903,0,13,0,0,0 +8,3.931826,0,6.907755,7.600903,0,13,0,0,0 +8,3.931826,0,6.907755,7.600903,0,13,0,0,0 +5,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +2,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +3,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +6,3.931826,0,6.907755,7.600903,0,21.7,0,0,0 +4,3.931826,0,6.907755,7.600903,0,21.7,0,0,0 +5,3.931826,0,6.907755,7.600903,0,21.7,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +7,0,1,5.313206,0,0,13,0,0,0 +9,0,1,5.313206,0,0,13,0,0,0 +5,0,1,5.313206,0,0,13,0,0,0 +0,4.61512,1,6.907755,0,0,17.4,0,1,0 +0,4.61512,1,6.907755,0,0,17.4,0,1,0 +0,4.61512,1,6.907755,0,0,17.4,0,1,0 +1,4.61512,1,6.907755,0,0,30.4,1,0,0 +0,4.61512,1,6.907755,0,0,30.4,1,0,0 +0,4.61512,1,6.907755,0,0,30.4,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +6,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +4,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +3,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +8,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +6,3.931826,0,6.907755,7.600903,0,13,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13,0,0,0 +3,3.931826,0,6.907755,7.600903,0,13,0,0,0 +6,3.931826,0,6.907755,7.600903,0,13,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13,0,0,0 +3,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +1,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +2,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +6,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +11,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +1,3.258096,0,6.907755,8.294049,0,0,0,0,0 +1,3.258096,0,6.907755,8.294049,0,0,0,0,0 +1,3.258096,0,6.907755,8.294049,0,0,0,0,0 +1,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +4,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +3,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +2,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +1,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +0,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +8,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +3,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +2,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +1,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +4,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +2,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +3,3.258096,0,6.907755,8.294049,0,0,0,0,0 +1,3.258096,0,6.907755,8.294049,0,0,0,0,0 +3,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +3,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +1,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.519147,7.905442,0,8.7,0,0,0 +3,3.258096,0,6.519147,7.905442,0,8.7,0,0,0 +2,3.258096,0,6.519147,7.905442,0,8.7,0,0,0 +5,3.258096,0,6.519147,7.905442,0,8.7,0,0,0 +5,3.258096,0,6.519147,7.905442,0,8.7,0,0,0 +6,3.258096,0,6.519147,7.905442,0,13.73189,0,0,0 +1,3.258096,0,6.519147,7.905442,0,13.73189,0,0,0 +1,3.258096,0,6.519147,7.905442,0,13.73189,0,0,0 +0,3.258096,0,6.519147,7.905442,0,13.73189,0,0,0 +2,3.258096,0,6.519147,7.905442,0,13.73189,0,0,0 +0,3.258096,0,6.519147,7.905442,0,17.4,0,0,0 +1,3.258096,0,6.519147,7.905442,0,17.4,0,0,0 +1,3.258096,0,6.519147,7.905442,0,17.4,0,0,0 +3,3.258096,0,6.519147,7.905442,0,17.4,0,0,0 +5,3.258096,0,6.519147,7.905442,0,17.4,0,0,0 +0,3.258096,0,0,6.57368,0,0,0,0,0 +0,3.258096,0,0,6.57368,0,0,0,0,0 +0,3.258096,0,0,6.57368,0,0,0,0,0 +1,3.258096,0,0,6.57368,0,0,0,0,0 +0,3.258096,0,0,6.57368,0,0,0,0,0 +2,3.931826,0,0,0,0,13.73189,0,0,0 +5,3.931826,0,0,0,0,13.73189,0,0,0 +7,3.931826,0,0,0,0,13.73189,0,0,0 +7,3.931826,0,0,0,0,13.73189,0,0,0 +4,3.931826,0,0,0,0,13.73189,0,0,0 +1,3.931826,0,0,0,0,13.73189,0,0,0 +9,3.931826,0,0,0,1,13.73189,1,0,0 +7,3.931826,0,0,0,1,13.73189,1,0,0 +14,3.931826,0,0,0,1,13.73189,1,0,0 +11,3.931826,0,0,0,0,13.73189,0,0,0 +16,3.931826,0,0,0,0,13.73189,0,0,0 +15,3.931826,0,0,0,0,13.73189,0,0,0 +4,0,1,6.109248,0,0,13.73189,0,0,0 +3,0,1,6.109248,0,0,13.73189,0,0,0 +3,0,1,6.109248,0,0,13.73189,0,0,0 +1,0,1,6.109248,0,0,17.4,0,0,0 +0,0,1,6.109248,0,0,17.4,0,0,0 +0,0,1,6.109248,0,0,17.4,0,0,0 +4,0,1,6.109248,0,0,13,0,0,0 +0,0,1,6.109248,0,0,13,0,0,0 +3,0,1,6.109248,0,0,13,0,0,0 +19,0,0,0,0,0,13,0,0,0 +3,0,0,0,0,0,13,0,0,0 +10,0,0,0,0,0,13,0,0,0 +7,0,0,0,0,0,17.4,0,0,0 +9,0,0,0,0,0,17.4,0,0,0 +6,0,0,0,0,0,17.4,0,0,0 +5,0,0,0,0,0,13,0,0,0 +10,0,0,0,0,0,13,0,0,0 +1,0,0,0,0,0,13,0,0,0 +6,0,0,3.951244,0,0,4.3,0,0,0 +4,0,0,3.951244,0,0,4.3,0,0,0 +7,0,0,3.951244,0,0,4.3,0,0,0 +15,3.258096,0,6.57368,7.959975,0,13.73189,0,0,0 +16,3.258096,0,6.57368,7.959975,0,13.73189,0,0,0 +3,3.258096,0,6.57368,7.959975,0,13.73189,0,0,0 +1,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +2,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +3,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +2,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +9,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +2,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +1,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +0,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +2,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +2,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +0,3.258096,0,6.214608,7.600903,.12982,13.73189,1,0,0 +0,3.258096,0,6.214608,7.600903,.12982,13.73189,1,0,0 +0,3.258096,0,6.214608,7.600903,.12982,13.73189,1,0,0 +1,3.258096,0,6.214608,7.600903,.12982,13.73189,1,0,0 +0,3.258096,0,6.214608,7.600903,.12982,13.73189,1,0,0 +3,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +0,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +0,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +0,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +0,3.258096,0,6.214608,7.600903,0,13.73189,1,0,0 +3,4.61512,1,6.907755,0,0,17.4,1,0,0 +7,4.61512,1,6.907755,0,0,17.4,1,0,0 +14,4.61512,1,6.907755,0,0,17.4,1,0,0 +5,3.258096,0,6.120297,7.506592,0,13,0,0,0 +4,3.258096,0,6.120297,7.506592,0,13,0,0,0 +1,3.258096,0,6.120297,7.506592,0,13,0,0,0 +4,3.258096,0,6.120297,7.506592,0,13,0,0,0 +3,3.258096,0,6.120297,7.506592,0,13,0,0,0 +0,3.258096,0,6.120297,7.506592,0,13.73189,0,0,0 +2,3.258096,0,6.120297,7.506592,0,13.73189,0,0,0 +5,3.258096,0,6.120297,7.506592,0,13.73189,0,0,0 +0,3.258096,0,6.120297,7.506592,0,13.73189,0,0,0 +0,3.258096,0,6.120297,7.506592,0,13.73189,0,0,0 +1,3.258096,0,6.120297,7.506592,0,4.3,0,0,0 +1,3.258096,0,6.120297,7.506592,0,4.3,0,0,0 +1,3.258096,0,6.120297,7.506592,0,4.3,0,0,0 +0,3.258096,0,6.120297,7.506592,0,4.3,0,0,0 +1,3.258096,0,6.120297,7.506592,0,4.3,0,0,0 +1,3.258096,0,6.120297,7.506592,0,13.73189,0,0,0 +3,3.258096,0,6.120297,7.506592,0,13.73189,0,0,0 +3,3.258096,0,6.120297,7.506592,0,13.73189,0,0,0 +2,3.258096,0,6.120297,7.506592,0,13.73189,0,0,0 +2,3.258096,0,6.120297,7.506592,0,13.73189,0,0,0 +0,0,1,6.131227,0,0,17.4,1,0,0 +4,0,1,6.131227,0,0,17.4,1,0,0 +1,0,1,6.131227,0,0,17.4,1,0,0 +0,0,1,6.131227,0,0,17.4,1,0,0 +0,0,1,6.131227,0,0,17.4,1,0,0 +1,0,1,6.131227,0,0,13.73189,1,0,0 +1,0,1,6.131227,0,0,13.73189,1,0,0 +3,0,1,6.131227,0,0,13.73189,1,0,0 +5,0,1,6.131227,0,0,13.73189,1,0,0 +1,0,1,6.131227,0,0,13.73189,1,0,0 +0,0,1,6.131227,0,0,4.3,1,0,0 +0,0,1,6.131227,0,0,4.3,1,0,0 +1,0,1,6.131227,0,0,4.3,1,0,0 +2,0,1,6.131227,0,0,4.3,1,0,0 +12,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +5,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +10,0,0,0,0,0,13.73189,0,0,0 +5,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +17,3.258096,0,6.684612,8.070906,1,26.1,1,0,0 +10,3.258096,0,6.684612,8.070906,1,26.1,1,0,0 +8,3.258096,0,6.684612,8.070906,1,26.1,1,0,0 +6,3.258096,0,6.684612,8.070906,1,26.1,1,0,0 +1,3.258096,0,6.684612,8.070906,1,26.1,1,0,0 +8,3.258096,0,6.684612,8.070906,1,21.7,0,1,0 +5,3.258096,0,6.684612,8.070906,1,21.7,0,1,0 +4,3.258096,0,6.684612,8.070906,1,21.7,0,1,0 +2,3.258096,0,6.684612,8.070906,1,21.7,0,1,0 +4,3.258096,0,6.684612,8.070906,1,21.7,0,1,0 +11,3.258096,0,6.684612,8.070906,0,13,0,0,0 +6,3.258096,0,6.684612,8.070906,0,13,0,0,0 +6,3.258096,0,6.684612,8.070906,0,13,0,0,0 +2,3.258096,0,6.684612,8.070906,0,13,0,0,0 +7,3.258096,0,6.684612,8.070906,0,13,0,0,0 +0,3.258096,0,6.736967,8.123261,0,13.73189,0,0,0 +0,3.258096,0,6.736967,8.123261,0,13.73189,0,0,0 +0,3.258096,0,6.736967,8.123261,0,13.73189,0,0,0 +14,4.61512,1,0,0,1,26.1,0,0,0 +3,4.61512,1,0,0,1,26.1,0,0,0 +7,0,1,6.109248,0,0,21.7,1,0,0 +3,0,1,6.109248,0,0,21.7,1,0,0 +2,0,1,6.109248,0,0,21.7,1,0,0 +1,0,1,6.109248,0,0,13,1,0,0 +3,0,1,6.109248,0,0,13,1,0,0 +2,0,1,6.109248,0,0,13,1,0,0 +8,0,1,6.109248,0,0,8.7,1,0,0 +14,0,1,6.109248,0,0,8.7,1,0,0 +6,0,1,6.109248,0,0,8.7,1,0,0 +0,3.931826,0,6.109248,5.786897,0,13.73189,1,0,0 +0,3.931826,0,6.109248,5.786897,0,13.73189,1,0,0 +2,3.931826,0,6.109248,5.786897,0,13.73189,1,0,0 +0,3.931826,0,6.109248,5.786897,0,13.73189,1,0,0 +5,3.931826,0,6.109248,5.786897,0,13.73189,1,0,0 +4,3.931826,0,6.109248,5.786897,0,26.1,1,0,0 +0,3.931826,0,6.109248,5.786897,0,26.1,1,0,0 +9,3.931826,0,6.109248,5.786897,0,26.1,1,0,0 +2,3.931826,0,6.109248,5.786897,0,26.1,1,0,0 +7,3.931826,0,6.109248,5.786897,0,26.1,1,0,0 +9,3.931826,0,6.109248,5.786897,0,13,1,0,0 +3,3.931826,0,6.109248,5.786897,0,13,1,0,0 +7,3.931826,0,6.109248,5.786897,0,13,1,0,0 +4,3.931826,0,6.109248,5.786897,0,13,1,0,0 +5,3.931826,0,6.109248,5.786897,0,13,1,0,0 +10,3.258096,0,6.907755,8.294049,0,21.7,0,1,0 +2,3.258096,0,6.907755,8.294049,0,21.7,0,1,0 +6,3.258096,0,6.907755,8.294049,0,8.7,1,0,0 +2,3.258096,0,6.907755,8.294049,0,8.7,1,0,0 +2,4.61512,1,6.907755,0,0,13.73189,1,0,0 +10,4.61512,1,6.907755,0,0,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +3,4.61512,1,6.907755,0,0,13.73189,1,0,0 +2,4.61512,1,6.907755,0,0,13.73189,1,0,0 +3,4.61512,1,6.907755,0,0,13.73189,1,0,0 +3,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +5,4.61512,1,6.907755,0,0,13.73189,1,0,0 +7,4.61512,1,6.907755,0,0,13.73189,1,0,0 +10,4.61512,1,6.907755,0,0,13.73189,1,0,0 +5,4.61512,1,6.907755,0,0,13.73189,1,0,0 +6,4.61512,1,6.907755,0,0,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +12,3.931826,0,6.907755,7.600903,1,26.1,1,0,0 +17,3.931826,0,6.907755,7.600903,1,26.1,1,0,0 +0,3.931826,0,6.907755,7.600903,1,26.1,1,0,0 +2,3.931826,0,6.907755,7.600903,0,4.3,1,0,0 +0,3.931826,0,6.907755,7.600903,0,4.3,1,0,0 +1,3.931826,0,6.907755,7.600903,0,4.3,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +2,4.61512,1,6.907755,0,0,13.73189,1,0,0 +3,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,17.4,1,0,0 +0,4.61512,1,6.907755,0,0,17.4,1,0,0 +0,4.61512,1,6.907755,0,0,17.4,1,0,0 +0,4.61512,1,6.907755,0,0,17.4,1,0,0 +0,4.61512,1,6.907755,0,0,17.4,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +2,4.61512,1,6.907755,0,0,13,1,0,0 +0,4.61512,1,6.907755,0,0,13,1,0,0 +1,4.61512,1,6.907755,0,0,13,1,0,0 +1,4.61512,1,6.907755,0,0,13,1,0,0 +1,4.61512,1,6.907755,0,0,13,1,0,0 +4,4.61512,1,6.907755,0,0,8.7,1,0,0 +3,4.61512,1,6.907755,0,0,8.7,1,0,0 +1,4.61512,1,6.907755,0,0,8.7,1,0,0 +1,4.61512,1,6.907755,0,0,8.7,1,0,0 +0,4.61512,1,6.907755,0,0,8.7,1,0,0 +0,4.61512,1,6.907755,0,0,0,0,0,0 +0,4.61512,1,6.907755,0,0,0,0,0,0 +3,4.61512,1,6.907755,0,0,0,0,0,0 +2,4.61512,1,6.907755,0,0,0,0,0,0 +1,4.61512,1,6.907755,0,0,0,0,0,0 +1,4.61512,1,6.907755,0,.0277778,13.73189,1,0,0 +1,4.61512,1,6.907755,0,.0277778,13.73189,1,0,0 +2,4.61512,1,6.907755,0,.0277778,13.73189,1,0,0 +0,4.61512,1,6.907755,0,.0277778,13.73189,1,0,0 +2,4.61512,1,6.907755,0,.0277778,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,8.7,1,0,0 +6,4.61512,1,6.907755,0,0,8.7,1,0,0 +0,4.61512,1,6.907755,0,0,8.7,1,0,0 +1,4.61512,1,6.907755,0,0,8.7,1,0,0 +1,4.61512,1,6.907755,0,0,8.7,1,0,0 +12,3.931826,0,6.907755,7.600903,1,21.7,1,0,0 +9,3.931826,0,6.907755,7.600903,1,21.7,1,0,0 +7,3.931826,0,6.907755,7.600903,1,21.7,1,0,0 +3,3.931826,0,6.907755,7.600903,1,13,0,0,0 +2,3.931826,0,6.907755,7.600903,1,13,0,0,0 +3,3.931826,0,6.907755,7.600903,1,13,0,0,0 +10,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +7,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +5,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +5,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +5,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +3,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +4,4.61512,1,0,0,0,8.7,1,0,0 +3,4.61512,1,0,0,0,8.7,1,0,0 +0,4.61512,1,0,0,0,8.7,1,0,0 +1,4.61512,1,0,0,0,8.7,1,0,0 +1,4.61512,1,0,0,0,8.7,1,0,0 +1,4.61512,1,0,0,0,4.3,1,0,0 +1,4.61512,1,0,0,0,4.3,1,0,0 +0,4.61512,1,0,0,0,4.3,1,0,0 +0,4.61512,1,0,0,0,4.3,1,0,0 +0,4.61512,1,0,0,0,4.3,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +1,4.61512,1,0,0,0,13.73189,1,0,0 +8,4.61512,1,0,0,0,13.73189,1,0,0 +3,4.61512,1,0,0,0,13.73189,1,0,0 +2,4.61512,1,0,0,0,13.73189,1,0,0 +7,4.61512,1,0,0,0,17.4,1,0,0 +5,4.61512,1,0,0,0,17.4,1,0,0 +4,4.61512,1,0,0,0,17.4,1,0,0 +2,4.61512,1,0,0,0,17.4,1,0,0 +4,4.61512,1,0,0,0,17.4,1,0,0 +1,4.61512,1,0,0,0,13,0,1,0 +6,4.61512,1,0,0,0,13,0,1,0 +2,4.61512,1,0,0,0,13,0,1,0 +4,4.61512,1,0,0,0,13,0,1,0 +0,4.61512,1,0,0,0,13,0,1,0 +8,0,1,6.109248,0,0,13.73189,0,0,0 +4,0,1,6.109248,0,0,13.73189,0,0,0 +6,0,1,6.109248,0,0,13.73189,0,0,0 +4,0,1,6.109248,0,0,13.73189,0,0,0 +3,0,1,6.109248,0,0,13.73189,0,0,0 +4,0,1,6.109248,0,0,13.73189,0,0,0 +3,0,1,6.109248,0,0,13.73189,0,0,0 +2,0,1,6.109248,0,0,13.73189,0,0,0 +3,0,1,6.109248,0,0,13.73189,0,0,0 +3,0,1,6.109248,0,0,13.73189,0,0,0 +1,0,1,6.109248,0,0,13.73189,1,0,0 +0,0,1,6.109248,0,0,13.73189,1,0,0 +4,0,1,6.109248,0,0,13.73189,1,0,0 +3,0,1,6.109248,0,0,13.73189,1,0,0 +0,0,1,6.109248,0,0,13.73189,1,0,0 +3,0,1,6.109248,0,0,13.73189,1,0,0 +2,0,1,6.109248,0,0,13.73189,1,0,0 +1,0,1,6.109248,0,0,13.73189,1,0,0 +2,0,1,6.109248,0,0,13.73189,1,0,0 +2,0,1,6.109248,0,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +9,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +11,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +7,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +31,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +5,0,0,6.126869,0,0,13.73189,0,0,0 +3,0,0,6.126869,0,0,13.73189,0,0,0 +6,0,0,6.126869,0,0,13.73189,0,0,0 +4,0,0,6.126869,0,0,13.73189,0,0,0 +1,0,0,6.126869,0,0,13.73189,0,0,0 +3,0,0,6.126869,0,0,8.7,0,0,0 +9,0,0,6.126869,0,0,8.7,0,0,0 +1,0,0,6.126869,0,0,8.7,0,0,0 +4,0,0,6.126869,0,0,8.7,0,0,0 +1,0,0,6.126869,0,0,8.7,0,0,0 +1,0,0,6.126869,0,0,0,0,0,0 +3,0,0,6.126869,0,0,0,0,0,0 +0,0,0,6.126869,0,0,0,0,0,0 +2,0,0,6.126869,0,0,0,0,0,0 +1,0,0,6.126869,0,0,0,0,0,0 +3,0,0,6.126869,0,0,13.73189,0,0,0 +5,0,0,6.126869,0,0,13.73189,0,0,0 +7,0,0,6.126869,0,0,13.73189,0,0,0 +3,0,0,6.126869,0,0,13.73189,0,0,0 +0,0,0,6.126869,0,0,13.73189,0,0,0 +1,0,0,6.126869,0,0,13.73189,0,0,0 +5,0,0,6.126869,0,0,13.73189,0,0,0 +7,0,0,6.126869,0,0,13.73189,0,0,0 +4,0,0,6.126869,0,0,13.73189,0,0,0 +2,0,0,6.126869,0,0,13.73189,0,0,0 +8,0,0,0,0,1,30.4,0,0,1 +9,0,0,0,0,1,30.4,0,0,1 +2,0,0,0,0,1,30.4,0,0,1 +4,0,0,0,0,1,30.4,0,0,1 +3,0,0,0,0,1,30.4,0,0,1 +15,0,0,0,0,0,30.4,0,1,0 +28,0,0,0,0,0,30.4,0,1,0 +11,0,0,0,0,0,30.4,0,1,0 +16,0,0,0,0,0,30.4,0,1,0 +17,0,0,0,0,0,30.4,0,1,0 +0,0,1,0,0,0,4.3,0,0,0 +0,0,1,0,0,0,4.3,0,0,0 +0,0,1,0,0,0,4.3,0,0,0 +0,0,1,0,0,0,4.3,0,0,0 +0,0,1,0,0,0,4.3,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +4,4.61512,1,6.907755,0,1,13.73189,0,1,0 +0,4.61512,1,6.907755,0,1,13.73189,0,1,0 +3,4.61512,1,6.907755,0,1,13.73189,0,1,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +4,0,0,0,0,0,17.4,1,0,0 +5,0,0,0,0,0,17.4,1,0,0 +0,0,0,0,0,0,17.4,1,0,0 +0,0,0,0,0,0,17.4,1,0,0 +3,0,0,0,0,0,17.4,1,0,0 +4,0,0,0,0,0,4.3,1,0,0 +0,0,0,0,0,0,4.3,1,0,0 +0,0,0,0,0,0,4.3,1,0,0 +0,0,0,0,0,0,4.3,1,0,0 +2,0,0,0,0,0,4.3,1,0,0 +1,0,0,0,0,0,13.73189,1,0,0 +1,0,0,0,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +10,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +6,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +5,3.931826,0,6.907755,7.600903,1,26.1,0,1,0 +2,3.931826,0,6.907755,7.600903,1,26.1,0,1,0 +5,3.931826,0,6.907755,7.600903,1,26.1,0,1,0 +3,3.931826,0,6.907755,7.600903,1,26.1,0,1,0 +4,3.931826,0,6.907755,7.600903,1,26.1,0,1,0 +0,3.931826,0,6.907755,7.600903,0,13,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13,1,0,0 +4,3.931826,0,6.907755,7.600903,0,13,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13,0,0,0 +3,0,0,0,0,1,17.4,1,0,0 +6,0,0,0,0,1,17.4,1,0,0 +2,0,0,0,0,1,17.4,1,0,0 +2,0,0,0,0,1,30.4,0,1,0 +1,0,0,0,0,1,30.4,0,1,0 +5,0,0,0,0,1,30.4,0,1,0 +8,3.258096,0,4.70048,6.086775,1,13.73189,0,1,0 +5,3.258096,0,4.70048,6.086775,1,13.73189,0,1,0 +0,0,0,0,0,0,4.3,1,0,0 +1,0,0,0,0,0,4.3,1,0,0 +3,0,0,0,0,0,4.3,1,0,0 +0,0,0,0,0,0,4.3,1,0,0 +2,0,0,0,0,0,4.3,1,0,0 +2,0,0,0,0,0,8.7,1,0,0 +0,0,0,0,0,0,8.7,1,0,0 +0,0,0,0,0,0,8.7,1,0,0 +0,0,0,0,0,0,8.7,1,0,0 +1,0,0,0,0,0,8.7,1,0,0 +0,0,0,0,0,0,8.7,1,0,0 +1,0,0,0,0,0,8.7,1,0,0 +8,0,0,0,0,0,8.7,1,0,0 +1,0,0,0,0,0,8.7,1,0,0 +3,0,0,0,0,0,8.7,1,0,0 +4,0,0,4.276666,0,0,0,1,0,0 +10,0,0,4.276666,0,0,0,1,0,0 +8,0,0,4.276666,0,0,0,1,0,0 +3,0,0,4.276666,0,0,0,1,0,0 +2,0,0,4.276666,0,0,0,1,0,0 +8,4.61512,1,0,0,0,21.7,0,0,1 +0,4.61512,1,0,0,0,21.7,0,0,1 +0,4.61512,1,0,0,0,21.7,0,0,1 +0,3.258096,0,4.61512,6.001415,0,13.73189,0,0,0 +0,3.258096,0,4.61512,6.001415,0,13.73189,0,0,0 +0,3.258096,0,4.61512,6.001415,0,13.73189,0,0,0 +0,3.258096,0,4.61512,6.001415,0,13.73189,0,0,0 +0,3.258096,0,4.61512,6.001415,0,13.73189,0,0,0 +0,3.258096,0,4.61512,6.001415,0,13.73189,0,0,0 +0,3.258096,0,4.61512,6.001415,0,8.7,0,0,0 +0,3.258096,0,4.61512,6.001415,0,8.7,0,0,0 +0,3.258096,0,4.61512,6.001415,0,21.7,0,0,0 +0,3.258096,0,4.61512,6.001415,0,21.7,0,0,0 +2,0,0,0,0,0,13,0,0,0 +5,0,0,0,0,0,13,0,0,0 +5,0,0,0,0,0,13,0,0,0 +5,0,0,0,0,0,13,0,0,0 +5,0,0,0,0,0,13,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +6,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +5,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +3,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,1,0,0 +1,3.931826,0,6.907755,7.600903,0,0,1,0,0 +0,3.931826,0,6.907755,7.600903,0,0,1,0,0 +0,3.931826,0,6.907755,7.600903,0,0,1,0,0 +0,3.931826,0,6.907755,7.600903,0,0,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,1,21.7,1,0,0 +0,3.931826,0,6.907755,7.600903,1,21.7,1,0,0 +1,3.931826,0,6.907755,7.600903,1,21.7,1,0,0 +1,3.931826,0,6.907755,7.600903,1,21.7,1,0,0 +2,3.931826,0,6.907755,7.600903,1,21.7,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +3,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +6,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13,1,0,0 +2,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +9,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +4,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +1,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +2,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +8,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +7,3.258096,0,6.520621,7.906916,0,13,1,0,0 +13,3.258096,0,6.520621,7.906916,0,13,1,0,0 +4,3.258096,0,6.520621,7.906916,0,13,1,0,0 +1,3.258096,0,6.520621,7.906916,0,8.7,1,0,0 +1,3.258096,0,6.520621,7.906916,0,8.7,1,0,0 +7,3.258096,0,6.520621,7.906916,0,8.7,1,0,0 +2,3.258096,0,6.520621,7.906916,0,13.73189,1,0,0 +1,3.258096,0,6.520621,7.906916,0,13.73189,1,0,0 +0,3.258096,0,6.520621,7.906916,0,13.73189,1,0,0 +0,3.258096,0,6.520621,7.906916,0,13.73189,1,0,0 +1,3.258096,0,6.520621,7.906916,0,13.73189,1,0,0 +0,3.258096,0,6.520621,7.906916,0,13.73189,1,0,0 +5,0,1,6.109248,0,0,30.4,1,0,0 +2,0,1,6.109248,0,0,30.4,1,0,0 +0,0,1,6.109248,0,0,30.4,1,0,0 +3,0,1,6.109248,0,0,30.4,1,0,0 +4,0,1,6.109248,0,0,30.4,1,0,0 +2,0,1,6.109248,0,1,17.4,1,0,0 +1,0,1,6.109248,0,1,17.4,1,0,0 +1,0,1,6.109248,0,1,17.4,1,0,0 +1,0,1,6.109248,0,1,17.4,1,0,0 +1,0,1,6.109248,0,1,17.4,1,0,0 +9,0,1,6.109248,0,0,13.73189,1,0,0 +10,0,1,6.109248,0,0,13.73189,1,0,0 +8,0,1,6.109248,0,0,13.73189,1,0,0 +6,0,1,6.109248,0,0,13.73189,1,0,0 +8,0,1,6.109248,0,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +3,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +2,3.931826,0,6.907755,7.600903,0,0,0,0,0 +2,3.931826,0,6.907755,7.600903,0,0,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,21.7,0,0,0 +1,3.931826,0,6.907755,7.600903,0,21.7,0,0,0 +5,3.931826,0,6.907755,7.600903,0,21.7,0,0,0 +4,3.931826,0,6.907755,7.600903,0,21.7,0,0,0 +3,3.931826,0,6.907755,7.600903,0,21.7,0,0,0 +1,3.931826,0,6.907755,7.600903,0,8.7,1,0,0 +0,3.931826,0,6.907755,7.600903,0,8.7,1,0,0 +0,3.931826,0,6.907755,7.600903,0,8.7,1,0,0 +0,3.931826,0,6.907755,7.600903,0,4.3,1,0,0 +0,3.931826,0,6.907755,7.600903,0,4.3,1,0,0 +1,3.931826,0,6.907755,7.600903,0,4.3,1,0,0 +2,3.931826,0,6.907755,7.600903,0,0,1,0,0 +2,3.931826,0,6.907755,7.600903,0,0,1,0,0 +6,3.931826,0,6.907755,7.600903,0,0,1,0,0 +1,3.931826,0,6.907755,7.600903,0,21.7,1,0,0 +0,3.931826,0,6.907755,7.600903,0,21.7,1,0,0 +2,3.931826,0,6.907755,7.600903,0,21.7,1,0,0 +0,3.931826,0,6.907755,7.600903,1,30.4,1,0,0 +2,3.931826,0,6.907755,7.600903,1,30.4,1,0,0 +6,3.931826,0,6.907755,7.600903,1,30.4,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +7,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +2,3.931826,0,6.363563,7.05671,0,21.7,1,0,0 +2,3.931826,0,6.363563,7.05671,0,21.7,1,0,0 +1,3.931826,0,6.363563,7.05671,0,21.7,1,0,0 +2,3.931826,0,6.263398,6.956545,0,8.7,0,0,0 +2,3.931826,0,6.263398,6.956545,0,8.7,0,0,0 +0,3.931826,0,6.263398,6.956545,0,8.7,0,0,0 +1,3.931826,0,6.263398,6.956545,0,8.7,0,0,0 +1,3.931826,0,6.263398,6.956545,0,8.7,0,0,0 +2,3.931826,0,6.263398,6.956545,0,13.73189,0,0,0 +0,3.931826,0,6.263398,6.956545,0,13.73189,0,0,0 +0,3.931826,0,6.263398,6.956545,0,13.73189,0,0,0 +2,3.931826,0,6.263398,6.956545,0,13.73189,0,0,0 +1,3.931826,0,6.263398,6.956545,0,13.73189,0,0,0 +16,3.931826,0,6.263398,6.956545,0,13.73189,0,0,0 +16,3.931826,0,6.263398,6.956545,0,13.73189,0,0,0 +7,3.931826,0,6.263398,6.956545,0,13.73189,0,0,0 +0,3.931826,0,6.263398,6.956545,0,13.73189,0,0,0 +0,3.931826,0,6.263398,6.956545,0,13.73189,0,0,0 +4,3.931826,0,6.263398,6.956545,0,17.4,0,0,0 +0,3.931826,0,6.263398,6.956545,0,17.4,0,0,0 +3,3.931826,0,6.263398,6.956545,0,17.4,0,0,0 +1,3.931826,0,6.263398,6.956545,0,17.4,0,0,0 +2,3.931826,0,6.263398,6.956545,0,17.4,0,0,0 +0,3.258096,0,4.276666,5.662961,1,13.73189,0,1,0 +0,3.258096,0,4.276666,5.662961,1,13.73189,0,1,0 +29,3.258096,0,4.276666,5.662961,1,13.73189,0,1,0 +0,3.258096,0,4.276666,5.662961,1,26.1,0,1,0 +0,3.258096,0,4.276666,5.662961,1,26.1,0,1,0 +12,3.258096,0,4.276666,5.662961,1,26.1,0,1,0 +3,4.61512,1,6.907755,0,0,8.7,0,0,0 +0,4.61512,1,6.907755,0,0,8.7,0,0,0 +7,4.61512,1,6.907755,0,0,8.7,0,0,0 +2,4.61512,1,6.907755,0,0,8.7,0,0,0 +1,4.61512,1,6.907755,0,0,8.7,0,0,0 +4,4.61512,1,6.907755,0,0,4.3,0,0,0 +0,4.61512,1,6.907755,0,0,4.3,0,0,0 +0,4.61512,1,6.907755,0,0,4.3,0,0,0 +0,4.61512,1,6.907755,0,0,4.3,0,0,0 +1,4.61512,1,6.907755,0,0,4.3,0,0,0 +1,4.61512,1,6.907755,0,0,4.3,0,0,0 +3,4.61512,1,6.907755,0,0,4.3,0,0,0 +1,4.61512,1,6.907755,0,0,4.3,0,0,0 +0,4.61512,1,6.907755,0,0,4.3,0,0,0 +2,4.61512,1,6.907755,0,0,4.3,0,0,0 +2,4.61512,1,6.907755,0,0,26.1,1,0,0 +4,4.61512,1,6.907755,0,0,26.1,1,0,0 +1,4.61512,1,6.907755,0,0,26.1,1,0,0 +4,4.61512,1,6.907755,0,0,26.1,1,0,0 +6,4.61512,1,6.907755,0,0,26.1,1,0,0 +2,4.61512,1,4.317488,0,0,13.73189,0,0,0 +8,4.61512,1,4.317488,0,0,13.73189,0,0,0 +2,4.61512,1,4.317488,0,0,13.73189,0,0,0 +4,4.61512,1,4.317488,0,0,13.73189,0,0,0 +4,4.61512,1,4.317488,0,0,13.73189,0,0,0 +8,4.61512,1,4.317488,0,0,21.7,0,0,0 +3,4.61512,1,4.317488,0,0,21.7,0,0,0 +16,4.61512,1,4.317488,0,0,21.7,0,0,0 +18,4.61512,1,4.317488,0,0,21.7,0,0,0 +8,4.61512,1,4.317488,0,0,21.7,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +7,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +5,4.61512,1,6.907755,0,1,13.73189,0,1,0 +1,4.61512,1,6.907755,0,1,13.73189,0,1,0 +11,4.61512,1,6.907755,0,1,13.73189,0,1,0 +8,4.61512,1,6.907755,0,1,13.73189,0,1,0 +9,4.61512,1,6.907755,0,1,13.73189,0,1,0 +6,0,1,4.382027,0,1,26.1,1,0,0 +2,0,1,4.382027,0,1,26.1,1,0,0 +4,0,1,4.382027,0,1,26.1,1,0,0 +3,0,1,4.382027,0,1,26.1,1,0,0 +6,0,1,4.382027,0,1,26.1,1,0,0 +3,0,1,4.382027,0,0,4.3,0,0,0 +4,0,1,4.382027,0,0,4.3,0,0,0 +3,0,1,4.382027,0,0,4.3,0,0,0 +3,0,1,4.382027,0,0,4.3,0,0,0 +5,0,1,4.382027,0,0,4.3,0,0,0 +1,0,0,0,0,0,8.7,0,0,0 +1,0,0,0,0,0,8.7,0,0,0 +2,0,0,0,0,0,8.7,0,0,0 +6,0,0,0,0,0,8.7,0,0,0 +4,0,0,0,0,0,8.7,0,0,0 +5,0,0,0,0,0,17.4,0,0,0 +2,0,0,0,0,0,17.4,0,0,0 +4,0,0,0,0,0,17.4,0,0,0 +3,0,0,0,0,0,17.4,0,0,0 +5,0,0,0,0,0,17.4,0,0,0 +6,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +8,0,0,0,0,0,13.73189,0,0,0 +5,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +15,0,0,0,0,0,8.7,0,0,0 +4,0,0,0,0,0,8.7,0,0,0 +5,0,0,0,0,0,8.7,0,0,0 +2,0,0,0,0,0,8.7,0,0,0 +0,0,0,0,0,0,8.7,0,0,0 +2,0,0,0,0,0,4.3,0,0,0 +12,0,0,0,0,0,4.3,0,0,0 +9,0,0,0,0,0,4.3,0,0,0 +4,0,0,0,0,0,4.3,0,0,0 +2,0,0,0,0,0,4.3,0,0,0 +3,0,0,5.451038,0,0,13.73189,1,0,0 +5,0,0,5.451038,0,0,13.73189,1,0,0 +4,0,0,5.451038,0,0,13.73189,1,0,0 +5,0,0,5.451038,0,0,13.73189,1,0,0 +3,0,0,5.451038,0,0,13.73189,1,0,0 +4,0,0,5.451038,0,0,13.73189,1,0,0 +5,0,0,5.451038,0,0,13.73189,1,0,0 +6,0,0,5.451038,0,0,13.73189,1,0,0 +5,0,0,5.451038,0,0,13.73189,1,0,0 +6,0,0,5.451038,0,0,13.73189,1,0,0 +1,0,0,5.451038,0,0,13.73189,1,0,0 +1,0,0,5.451038,0,0,13.73189,1,0,0 +0,0,0,5.451038,0,0,13.73189,1,0,0 +0,0,0,5.451038,0,0,13.73189,1,0,0 +1,0,0,5.451038,0,0,13.73189,1,0,0 +9,0,0,5.451038,0,0,13.73189,1,0,0 +4,0,0,5.451038,0,0,13.73189,1,0,0 +2,0,0,5.451038,0,0,13.73189,1,0,0 +2,0,0,5.451038,0,0,13.73189,1,0,0 +4,0,0,5.451038,0,0,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +5,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +6,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +11,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +13,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +9,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +1,4.61512,1,6.549651,0,0,4.3,0,0,0 +6,4.61512,1,6.549651,0,0,4.3,0,0,0 +0,4.61512,1,6.549651,0,0,4.3,0,0,0 +6,4.61512,1,6.549651,0,0,4.3,0,0,0 +5,4.61512,1,6.549651,0,0,4.3,0,0,0 +22,4.61512,1,6.549651,0,0,26.1,1,0,0 +2,4.61512,1,6.549651,0,0,26.1,1,0,0 +0,4.61512,1,6.549651,0,0,26.1,1,0,0 +2,4.61512,1,6.549651,0,0,26.1,1,0,0 +0,4.61512,1,6.549651,0,0,26.1,1,0,0 +8,0,1,4.976734,0,0,13.73189,0,0,0 +7,0,1,4.976734,0,0,13.73189,0,0,0 +1,0,1,4.976734,0,0,13.73189,0,0,0 +0,0,1,4.976734,0,0,13.73189,1,0,0 +7,0,1,4.976734,0,0,13.73189,1,0,0 +6,0,1,4.976734,0,0,13.73189,1,0,0 +0,0,1,4.976734,0,0,13.73189,1,0,0 +0,0,1,4.976734,0,0,13.73189,1,0,0 +0,0,1,4.976734,0,0,13.73189,1,0,0 +1,3.931826,0,6.907755,7.600903,0,0,0,0,0 +2,3.931826,0,6.907755,7.600903,0,0,0,0,0 +2,3.931826,0,6.907755,7.600903,0,0,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,21.7,0,0,0 +5,3.931826,0,6.907755,7.600903,0,21.7,0,0,0 +4,3.931826,0,6.907755,7.600903,0,21.7,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +1,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +4,3.931826,0,6.907755,7.600903,0,4.3,1,0,0 +2,3.931826,0,6.907755,7.600903,0,4.3,1,0,0 +0,3.931826,0,6.907755,7.600903,0,0,1,0,0 +1,3.931826,0,6.907755,7.600903,0,0,1,0,0 +1,3.931826,0,6.907755,7.600903,0,0,1,0,0 +1,3.931826,0,6.907755,7.600903,0,0,1,0,0 +0,3.931826,0,6.907755,7.600903,0,0,1,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,4.3,0,0,0 +0,4.61512,1,6.907755,0,0,4.3,0,0,0 +1,4.61512,1,6.907755,0,0,4.3,0,0,0 +0,4.61512,1,6.907755,0,0,4.3,0,0,0 +0,4.61512,1,6.907755,0,0,4.3,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,1,0,0 +6,4.61512,1,6.907755,0,0,13.73189,1,0,0 +3,4.61512,1,6.907755,0,0,13.73189,1,0,0 +2,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13,0,0,0 +4,4.61512,1,6.907755,0,0,13,0,0,0 +3,4.61512,1,6.907755,0,0,13,0,0,0 +1,4.61512,1,6.907755,0,0,13,0,0,0 +0,4.61512,1,6.907755,0,0,13,0,0,0 +15,3.258096,0,6.461468,7.847763,0,13.73189,1,0,0 +4,3.258096,0,6.461468,7.847763,0,13.73189,1,0,0 +6,3.258096,0,6.461468,7.847763,0,13.73189,1,0,0 +11,3.258096,0,6.461468,7.847763,1,30.4,0,1,0 +1,3.258096,0,6.461468,7.847763,1,30.4,0,1,0 +6,3.258096,0,6.461468,7.847763,1,30.4,0,1,0 +7,3.258096,0,6.461468,7.847763,0,13.73189,1,0,0 +6,3.258096,0,6.461468,7.847763,0,13.73189,1,0,0 +5,3.258096,0,6.461468,7.847763,0,13.73189,1,0,0 +2,3.258096,0,6.461468,7.847763,0,26.1,0,0,0 +9,3.258096,0,6.461468,7.847763,0,26.1,0,0,0 +4,3.258096,0,6.461468,7.847763,0,26.1,0,0,0 +4,0,0,5.111988,0,0,13.73189,1,0,0 +4,0,0,5.111988,0,0,13.73189,1,0,0 +6,0,0,5.111988,0,0,13.73189,1,0,0 +2,0,0,5.111988,0,0,13.73189,0,0,0 +1,0,0,5.111988,0,0,13.73189,0,0,0 +5,0,0,5.111988,0,0,13.73189,0,0,0 +5,0,0,5.111988,0,0,13.73189,0,0,0 +5,0,0,5.111988,0,0,13.73189,0,0,0 +3,0,0,5.111988,0,0,13.73189,0,0,0 +0,3.258096,0,6.214608,7.600903,0,0,0,0,0 +0,3.258096,0,6.214608,7.600903,0,0,0,0,0 +0,3.258096,0,6.214608,7.600903,0,0,0,0,0 +0,3.258096,0,6.214608,7.600903,0,0,0,0,0 +0,3.258096,0,6.214608,7.600903,0,0,0,0,0 +8,3.258096,0,6.214608,7.600903,0,13.73189,0,0,0 +3,3.258096,0,6.214608,7.600903,0,13.73189,0,0,0 +2,3.258096,0,6.214608,7.600903,0,13.73189,0,0,0 +4,3.258096,0,6.214608,7.600903,0,13.73189,0,0,0 +1,3.258096,0,6.214608,7.600903,0,13.73189,0,0,0 +10,3.258096,0,6.214608,7.600903,0,13.73189,0,0,0 +6,3.258096,0,6.214608,7.600903,0,13.73189,0,0,0 +2,3.258096,0,6.214608,7.600903,0,13.73189,0,0,0 +1,3.258096,0,6.214608,7.600903,0,13.73189,0,0,0 +2,3.258096,0,6.214608,7.600903,0,13.73189,0,0,0 +6,3.258096,0,6.214608,7.600903,0,26.1,0,0,0 +1,3.258096,0,6.214608,7.600903,0,26.1,0,0,0 +4,3.258096,0,6.214608,7.600903,0,26.1,0,0,0 +1,3.258096,0,6.214608,7.600903,0,26.1,0,0,0 +1,3.258096,0,6.214608,7.600903,0,26.1,0,0,0 +0,4.61512,1,6.39693,0,0,26.1,1,0,0 +4,4.61512,1,6.39693,0,0,26.1,1,0,0 +0,4.61512,1,6.39693,0,0,26.1,1,0,0 +0,4.61512,1,6.39693,0,0,26.1,1,0,0 +2,4.61512,1,6.39693,0,0,26.1,1,0,0 +4,4.61512,1,6.39693,0,0,4.3,0,0,0 +1,4.61512,1,6.39693,0,0,4.3,0,0,0 +0,4.61512,1,6.39693,0,0,4.3,0,0,0 +1,4.61512,1,6.39693,0,0,4.3,0,0,0 +7,4.61512,1,6.39693,0,0,4.3,0,0,0 +1,0,1,0,0,0,13.73189,0,0,0 +0,0,1,0,0,0,13.73189,0,0,0 +0,0,1,0,0,0,13.73189,0,0,0 +0,0,1,0,0,0,13.73189,0,0,0 +0,0,1,0,0,0,13.73189,0,0,0 +5,0,1,0,0,0,17.4,1,0,0 +3,0,1,0,0,0,17.4,1,0,0 +0,0,1,0,0,0,17.4,1,0,0 +9,0,1,0,0,0,17.4,1,0,0 +9,0,1,0,0,0,17.4,1,0,0 +0,0,1,0,0,0,8.7,0,0,0 +0,0,1,0,0,0,8.7,0,0,0 +5,0,1,0,0,0,8.7,0,0,0 +2,0,1,0,0,0,8.7,0,0,0 +0,0,1,0,0,0,8.7,0,0,0 +0,0,1,0,0,0,8.7,0,0,0 +0,0,1,0,0,0,8.7,0,0,0 +0,0,1,0,0,0,8.7,0,0,0 +2,0,1,0,0,0,8.7,0,0,0 +3,0,1,0,0,0,8.7,0,0,0 +2,0,1,0,0,0,13,0,0,0 +0,0,1,0,0,0,13,0,0,0 +0,0,1,0,0,0,13,0,0,0 +0,0,1,0,0,0,13,0,0,0 +3,0,1,0,0,0,13,0,0,0 +0,0,1,0,0,0,13.73189,0,0,0 +0,0,1,0,0,0,13.73189,0,0,0 +2,0,1,0,0,0,13.73189,0,0,0 +6,0,1,0,0,0,13.73189,0,0,0 +1,0,1,0,0,0,13.73189,0,0,0 +1,0,1,0,0,0,8.7,0,0,0 +0,0,1,0,0,0,8.7,0,0,0 +0,0,1,0,0,0,8.7,0,0,0 +1,0,1,0,0,0,8.7,0,0,0 +1,0,1,0,0,0,8.7,0,0,0 +2,0,0,0,0,0,26.1,1,0,0 +38,0,0,0,0,0,26.1,1,0,0 +22,0,0,0,0,0,26.1,1,0,0 +6,0,0,4.094345,0,0,13.73189,0,0,0 +0,0,0,4.094345,0,0,13.73189,0,0,0 +1,0,0,4.094345,0,0,13.73189,0,0,0 +1,0,0,4.094345,0,0,13.73189,0,0,0 +1,0,0,4.094345,0,0,13.73189,0,0,0 +4,0,0,4.094345,0,0,0,0,0,0 +3,0,0,4.094345,0,0,0,0,0,0 +1,0,0,4.094345,0,0,0,0,0,0 +3,0,0,4.094345,0,0,0,0,0,0 +5,0,0,4.094345,0,0,0,0,0,0 +5,0,0,4.094345,0,0,0,0,0,0 +0,0,0,4.094345,0,0,0,0,0,0 +1,0,0,4.094345,0,0,0,0,0,0 +1,0,0,4.094345,0,0,0,0,0,0 +0,0,0,4.094345,0,0,0,0,0,0 +6,0,0,4.094345,0,0,13,0,0,0 +0,0,0,4.094345,0,0,13.73189,0,0,0 +0,0,0,4.094345,0,0,13.73189,0,0,0 +0,0,0,4.094345,0,0,13.73189,0,0,0 +3,0,0,4.094345,0,0,13.73189,0,0,0 +6,0,0,4.094345,0,0,13.73189,0,0,0 +1,0,0,4.094345,0,0,13.73189,0,0,0 +0,0,0,4.094345,0,0,13.73189,0,0,0 +1,0,0,4.094345,0,0,13.73189,0,0,0 +2,0,0,4.094345,0,0,13.73189,0,0,0 +3,0,0,4.094345,0,0,13.73189,0,0,0 +2,0,0,4.094345,0,0,13.73189,0,0,0 +2,0,0,4.094345,0,0,13.73189,0,0,0 +1,0,0,4.094345,0,0,13.73189,0,0,0 +4,0,0,4.094345,0,0,13.73189,0,0,0 +1,0,0,4.094345,0,0,13.73189,0,0,0 +1,0,0,4.094345,0,0,13,0,0,0 +1,0,0,4.094345,0,0,13,0,0,0 +4,0,0,4.094345,0,0,13,0,0,0 +2,0,0,4.094345,0,0,13,0,0,0 +5,0,0,4.094345,0,0,13,0,0,0 +14,0,1,5.703783,0,0,21.7,1,0,0 +4,0,1,5.703783,0,0,21.7,1,0,0 +11,0,1,5.703783,0,0,21.7,1,0,0 +13,0,1,5.703783,0,0,21.7,1,0,0 +12,0,1,5.703783,0,0,21.7,1,0,0 +24,0,1,5.703783,0,0,4.3,1,0,0 +12,0,1,5.703783,0,0,4.3,1,0,0 +18,0,1,5.703783,0,0,4.3,1,0,0 +19,0,1,5.703783,0,0,4.3,1,0,0 +18,0,1,5.703783,0,0,4.3,1,0,0 +5,3.931826,0,0,0,1,30.4,1,0,0 +23,3.931826,0,0,0,1,30.4,1,0,0 +0,3.931826,0,0,0,1,30.4,1,0,0 +0,3.931826,0,0,7.600903,1,34.8,1,0,0 +0,3.931826,0,0,7.600903,1,34.8,1,0,0 +0,3.931826,0,0,7.600903,1,34.8,1,0,0 +6,0,1,5.924256,0,0,13.73189,1,0,0 +1,0,1,5.924256,0,0,13.73189,1,0,0 +0,0,1,5.924256,0,0,13.73189,1,0,0 +0,0,1,5.924256,0,0,13.73189,0,0,0 +0,0,1,5.924256,0,0,13.73189,0,0,0 +0,0,1,5.924256,0,0,13.73189,0,0,0 +3,0,1,5.924256,0,0,13.73189,0,0,0 +3,0,1,5.924256,0,0,13.73189,0,0,0 +3,0,1,5.924256,0,0,13.73189,0,0,0 +2,0,1,5.924256,0,0,13.73189,0,0,0 +1,0,1,5.924256,0,0,13.73189,0,0,0 +1,0,1,5.924256,0,0,13.73189,0,0,0 +1,0,0,0,0,1,21.7,0,0,1 +5,0,0,0,0,1,21.7,0,0,1 +3,0,0,0,0,1,21.7,0,0,1 +9,0,0,0,0,1,21.7,0,0,1 +4,0,0,0,0,1,21.7,0,0,1 +7,0,0,0,0,0,13,1,0,0 +9,0,0,0,0,0,13,1,0,0 +1,0,0,0,0,0,13,1,0,0 +4,0,0,0,0,0,13,1,0,0 +1,0,0,0,0,0,13,1,0,0 +0,0,0,0,0,0,4.3,0,0,0 +1,0,0,0,0,0,4.3,0,0,0 +0,0,0,0,0,0,4.3,0,0,0 +1,0,0,0,0,0,4.3,0,0,0 +0,0,0,0,0,0,4.3,0,0,0 +13,4.61512,1,6.331502,0,1,13.73189,1,0,0 +0,4.61512,1,6.331502,0,1,13.73189,1,0,0 +7,4.61512,1,6.331502,0,1,13.73189,1,0,0 +12,4.61512,1,6.331502,0,1,13.73189,1,0,0 +15,4.61512,1,6.331502,0,1,13.73189,1,0,0 +0,0,1,5.402678,0,1,13,1,0,0 +0,0,1,5.402678,0,1,13,1,0,0 +1,0,1,5.402678,0,1,13,1,0,0 +4,0,1,5.402678,0,1,13,1,0,0 +3,0,1,5.402678,0,1,13,1,0,0 +2,4.61512,1,6.618739,0,0,13.73189,1,0,0 +3,4.61512,1,6.618739,0,0,13.73189,1,0,0 +11,4.61512,1,6.618739,0,0,13.73189,1,0,0 +3,4.61512,1,6.618739,0,0,13.73189,1,0,0 +0,4.61512,1,6.618739,0,0,13.73189,1,0,0 +4,4.61512,1,6.618739,0,0,13.73189,1,0,0 +8,4.61512,1,6.618739,0,0,13.73189,1,0,0 +1,4.61512,1,6.618739,0,0,13.73189,1,0,0 +1,4.61512,1,6.618739,0,0,13.73189,1,0,0 +0,4.61512,1,6.618739,0,0,13.73189,1,0,0 +1,4.61512,1,6.618739,0,0,13.73189,1,0,0 +2,3.931826,0,5.963579,6.656726,0,13,0,0,0 +1,3.931826,0,5.963579,6.656726,0,13,0,0,0 +1,3.931826,0,5.963579,6.656726,0,13,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,8.7,0,0,0 +3,0,0,0,0,0,4.3,0,0,0 +0,0,0,0,0,0,4.3,0,0,0 +2,0,0,0,0,0,4.3,0,0,0 +2,0,0,0,0,0,4.3,0,0,0 +2,0,0,0,0,0,4.3,0,0,0 +5,0,0,0,0,0,13,0,0,0 +7,0,0,0,0,0,13,0,0,0 +3,0,0,0,0,0,13,0,0,0 +1,0,0,0,0,0,13,0,0,0 +14,0,0,0,0,0,13,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +6,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +5,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +4,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,26.1,0,0,0 +3,0,0,0,0,0,26.1,0,0,0 +6,0,0,0,0,0,26.1,0,0,0 +8,0,0,0,0,0,26.1,0,0,0 +5,0,0,0,0,0,26.1,0,0,0 +1,0,0,0,0,0,21.7,0,0,0 +3,0,0,0,0,0,21.7,0,0,0 +9,0,0,0,0,0,21.7,0,0,0 +4,0,0,0,0,0,21.7,0,0,0 +6,0,0,0,0,0,21.7,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +6,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +5,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +10,0,0,0,0,0,13.73189,0,0,0 +51,0,0,0,0,0,13.73189,0,0,0 +3,4.61512,1,6.907755,0,0,13.73189,0,0,0 +4,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +6,4.61512,1,6.907755,0,0,13.73189,0,0,0 +23,4.61512,1,6.907755,0,0,13.73189,0,0,0 +23,4.61512,1,6.907755,0,0,21.7,0,0,0 +12,4.61512,1,6.907755,0,0,21.7,0,0,0 +17,4.61512,1,6.907755,0,0,21.7,0,0,0 +11,4.61512,1,6.907755,0,0,21.7,0,0,0 +13,4.61512,1,6.907755,0,0,21.7,0,0,0 +2,4.61512,1,6.907755,0,0,13,1,0,0 +2,4.61512,1,6.907755,0,0,13,1,0,0 +1,4.61512,1,6.907755,0,0,13,1,0,0 +5,4.61512,1,6.907755,0,0,13,1,0,0 +2,4.61512,1,6.907755,0,0,13,1,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +5,4.61512,1,6.907755,0,0,13.73189,0,0,0 +4,4.61512,1,6.907755,0,0,4.3,0,0,0 +3,4.61512,1,6.907755,0,0,4.3,0,0,0 +5,4.61512,1,6.907755,0,0,4.3,0,0,0 +0,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +0,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +5,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +1,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +5,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +1,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +5,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +4,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +1,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +5,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +2,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +33,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +8,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +10,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +2,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +0,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +0,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +4,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +0,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +0,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +1,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +1,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +1,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +0,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +0,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +0,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +1,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +0,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +3,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +0,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +1,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +0,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +1,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +0,3.258096,0,6.244167,7.630461,0,13.73189,1,0,0 +0,4.61512,1,5.645447,0,0,13.73189,1,0,0 +0,4.61512,1,5.645447,0,0,13.73189,1,0,0 +0,4.61512,1,5.645447,0,0,13.73189,1,0,0 +0,4.61512,1,5.645447,0,0,13.73189,1,0,0 +0,4.61512,1,5.645447,0,0,13.73189,1,0,0 +0,4.61512,1,5.645447,0,0,13.73189,1,0,0 +0,4.61512,1,5.645447,0,0,13.73189,1,0,0 +0,4.61512,1,5.645447,0,0,13.73189,1,0,0 +0,4.61512,1,5.645447,0,0,13.73189,1,0,0 +0,4.61512,1,5.645447,0,0,0,1,0,0 +0,4.61512,1,5.645447,0,0,0,1,0,0 +0,4.61512,1,5.645447,0,0,0,1,0,0 +0,4.61512,1,5.645447,0,0,13.73189,1,0,0 +0,4.61512,1,5.645447,0,0,13.73189,1,0,0 +0,4.61512,1,5.645447,0,0,13.73189,1,0,0 +2,3.931826,0,6.309918,7.003066,1,17.4,0,0,1 +0,3.931826,0,6.309918,7.003066,1,17.4,0,0,1 +0,3.931826,0,6.633318,7.326466,0,4.3,1,0,0 +3,3.931826,0,6.633318,7.326466,0,4.3,1,0,0 +0,3.931826,0,6.633318,7.326466,0,4.3,1,0,0 +0,3.931826,0,6.633318,7.326466,0,4.3,1,0,0 +5,3.931826,0,6.633318,7.326466,0,4.3,1,0,0 +4,0,0,0,0,1,13.73189,0,0,0 +3,0,0,0,0,1,13.73189,0,0,0 +1,0,0,0,0,1,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +5,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +0,3.258096,0,6.55108,7.937375,0,0,0,0,0 +0,3.258096,0,6.55108,7.937375,0,0,0,0,0 +1,3.258096,0,6.55108,7.937375,0,0,0,0,0 +0,3.258096,0,6.55108,7.937375,0,13.73189,0,0,0 +0,3.258096,0,6.55108,7.937375,0,13.73189,0,0,0 +1,3.258096,0,6.55108,7.937375,0,13.73189,0,0,0 +0,3.258096,0,6.55108,7.937375,0,4.3,0,0,0 +0,3.258096,0,6.55108,7.937375,0,4.3,0,0,0 +0,3.258096,0,6.55108,7.937375,0,4.3,0,0,0 +0,3.258096,0,6.55108,7.937375,0,13.73189,0,0,0 +1,3.258096,0,6.55108,7.937375,0,13.73189,0,0,0 +1,3.258096,0,6.55108,7.937375,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +4,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,4.3,0,0,0 +2,0,0,0,0,0,4.3,0,0,0 +1,0,0,0,0,0,4.3,0,0,0 +3,0,0,0,0,0,4.3,0,0,0 +2,0,0,0,0,0,4.3,0,0,0 +9,0,0,0,0,0,0,0,0,0 +17,0,0,0,0,0,0,0,0,0 +31,0,0,0,0,0,0,0,0,0 +13,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +4,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +15,0,0,0,0,0,13,0,0,0 +28,0,0,0,0,0,13,0,0,0 +10,0,0,0,0,0,13,0,0,0 +20,0,0,0,0,0,13,0,0,0 +16,0,0,0,0,0,13,0,0,0 +6,3.931826,0,0,6.527958,0,13.73189,0,0,0 +2,3.931826,0,0,6.527958,0,13.73189,0,0,0 +3,3.931826,0,0,6.527958,0,13.73189,0,0,0 +1,3.931826,0,0,6.527958,0,13.73189,0,0,0 +0,3.931826,0,0,6.527958,0,13.73189,0,0,0 +1,3.931826,0,0,6.527958,0,13.73189,0,0,0 +1,3.931826,0,6.028278,6.721426,0,13.73189,0,0,0 +0,3.931826,0,6.028278,6.721426,0,13.73189,0,0,0 +2,3.931826,0,6.028278,6.721426,0,13.73189,0,0,0 +0,3.931826,0,6.028278,6.721426,0,13.73189,0,0,0 +0,3.931826,0,6.028278,6.721426,0,13.73189,0,0,0 +0,3.931826,0,6.028278,6.721426,0,13.73189,0,0,0 +0,3.931826,0,6.028278,6.721426,0,13.73189,0,0,0 +1,3.931826,0,6.028278,6.721426,0,13.73189,0,0,0 +1,3.931826,0,6.028278,6.721426,0,13.73189,0,0,0 +0,3.931826,0,6.028278,6.721426,0,13.73189,0,0,0 +2,3.931826,0,5.81413,6.507277,0,13.73189,0,0,0 +0,3.931826,0,5.81413,6.507277,0,13.73189,0,0,0 +4,3.931826,0,5.81413,6.507277,0,13.73189,0,0,0 +1,3.931826,0,5.81413,6.507277,0,13.73189,0,0,0 +1,3.931826,0,5.81413,6.507277,0,13.73189,0,0,0 +4,3.931826,0,6.028278,6.721426,0,13.73189,1,0,0 +1,3.931826,0,6.028278,6.721426,0,13.73189,1,0,0 +1,3.931826,0,6.028278,6.721426,0,13.73189,1,0,0 +1,3.931826,0,6.028278,6.721426,0,13.73189,1,0,0 +1,3.931826,0,6.028278,6.721426,0,13.73189,1,0,0 +1,0,0,4.174387,0,0,13.73189,0,0,0 +2,0,0,4.174387,0,0,13.73189,0,0,0 +5,0,0,4.174387,0,0,13.73189,0,0,0 +8,0,0,4.174387,0,0,13.73189,1,0,0 +3,0,0,4.174387,0,0,13.73189,1,0,0 +4,0,0,4.174387,0,0,13.73189,1,0,0 +5,0,0,4.174387,0,0,13.73189,0,0,0 +11,0,0,4.174387,0,0,13.73189,0,0,0 +7,0,0,4.174387,0,0,13.73189,0,0,0 +1,0,0,4.174387,0,0,13.73189,0,0,0 +0,0,0,4.174387,0,0,13.73189,0,0,0 +2,0,0,4.174387,0,0,13.73189,0,0,0 +6,0,0,4.174387,0,0,13.73189,0,0,0 +5,0,0,4.174387,0,0,13.73189,0,0,0 +12,0,0,4.174387,0,0,13.73189,0,0,0 +3,0,0,4.094345,0,0,4.3,0,0,0 +1,0,0,4.094345,0,0,4.3,0,0,0 +1,0,0,4.094345,0,0,4.3,0,0,0 +0,0,0,4.094345,0,0,4.3,0,0,0 +5,0,0,4.094345,0,0,4.3,0,0,0 +0,0,0,4.094345,0,0,13.73189,0,0,0 +2,0,0,4.094345,0,0,13.73189,0,0,0 +3,0,0,4.094345,0,0,13.73189,0,0,0 +0,0,0,4.094345,0,0,13.73189,0,0,0 +0,0,0,4.094345,0,0,13.73189,0,0,0 +1,0,0,4.094345,0,0,8.7,0,0,0 +0,0,0,4.094345,0,0,8.7,0,0,0 +0,0,0,4.094345,0,0,8.7,0,0,0 +0,0,0,4.094345,0,0,8.7,0,0,0 +0,0,0,4.094345,0,0,8.7,0,0,0 +6,0,0,4.094345,0,1,13,0,0,0 +3,0,0,4.094345,0,1,13,0,0,0 +4,0,0,4.094345,0,1,13,0,0,0 +2,0,0,4.094345,0,1,13,0,0,0 +1,0,0,4.094345,0,1,13,0,0,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +8,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +6,3.258096,0,6.907755,8.294049,1,13.73189,1,0,0 +5,3.258096,0,6.907755,8.294049,1,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,1,13.73189,1,0,0 +5,0,0,0,0,0,21.7,0,1,0 +5,0,0,0,0,0,21.7,0,1,0 +3,0,0,0,0,0,21.7,0,1,0 +2,0,0,0,0,0,47.8,0,1,0 +1,0,0,0,0,0,47.8,0,1,0 +4,0,0,0,0,0,47.8,0,1,0 +0,3.258096,0,6.907755,8.294049,0,13,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,26.1,0,1,0 +3,3.258096,0,6.907755,8.294049,0,26.1,0,1,0 +2,3.258096,0,6.907755,8.294049,0,26.1,0,1,0 +3,3.258096,0,6.907755,8.294049,0,26.1,0,1,0 +4,3.258096,0,6.907755,8.294049,0,26.1,0,1,0 +34,3.258096,0,6.907755,8.294049,0,4.3,1,0,0 +24,3.258096,0,6.907755,8.294049,0,4.3,1,0,0 +28,3.258096,0,6.907755,8.294049,0,4.3,1,0,0 +22,3.258096,0,6.907755,8.294049,0,4.3,1,0,0 +24,3.258096,0,6.907755,8.294049,0,4.3,1,0,0 +1,0,1,6.109248,0,0,13.73189,0,0,0 +0,0,1,6.109248,0,0,13.73189,0,0,0 +0,0,1,6.109248,0,0,13.73189,0,0,0 +2,0,1,6.109248,0,0,13.73189,0,0,0 +1,0,1,6.109248,0,0,13.73189,0,0,0 +0,0,1,6.109248,0,0,13.73189,0,0,0 +2,0,1,6.109248,0,0,13.73189,0,0,0 +2,0,1,6.109248,0,0,13.73189,0,0,0 +2,0,1,6.109248,0,0,13.73189,0,0,0 +3,0,1,6.109248,0,0,13.73189,0,0,0 +0,0,1,6.109248,0,0,13.73189,0,0,0 +0,0,1,6.109248,0,0,13.73189,0,0,0 +0,0,1,6.109248,0,0,13.73189,0,0,0 +0,0,1,6.109248,0,0,13.73189,0,0,0 +8,0,1,6.109248,0,0,13.73189,0,0,0 +0,4.61512,1,5.135798,0,0,17.4,0,1,0 +3,4.61512,1,5.135798,0,0,17.4,0,1,0 +2,4.61512,1,5.135798,0,0,17.4,0,1,0 +0,4.61512,1,5.135798,0,0,17.4,0,1,0 +4,4.61512,1,5.135798,0,0,17.4,0,1,0 +0,3.258096,0,0,0,1,30.4,0,1,0 +0,3.258096,0,0,0,1,30.4,0,1,0 +0,3.258096,0,0,0,1,30.4,0,1,0 +0,0,1,0,0,0,13.73189,0,1,0 +2,0,1,0,0,0,13.73189,0,1,0 +4,0,1,0,0,0,13.73189,0,1,0 +4,0,1,0,0,0,13.73189,0,1,0 +5,0,1,0,0,0,13.73189,0,1,0 +0,0,1,0,0,1,13.73189,1,0,0 +0,0,1,0,0,1,13.73189,1,0,0 +1,0,1,0,0,1,13.73189,1,0,0 +1,0,1,0,0,1,13.73189,1,0,0 +1,0,1,0,0,1,13.73189,1,0,0 +1,0,1,0,0,0,13.73189,1,0,0 +1,0,1,0,0,0,13.73189,1,0,0 +3,0,1,0,0,0,13.73189,1,0,0 +0,0,1,0,0,0,13.73189,1,0,0 +3,0,1,0,0,0,13.73189,1,0,0 +2,0,1,0,0,0,13.73189,1,0,0 +1,0,1,0,0,0,13.73189,1,0,0 +3,0,1,0,0,0,13.73189,1,0,0 +2,0,1,0,0,0,13.73189,1,0,0 +2,0,1,0,0,0,13.73189,1,0,0 +2,3.258096,0,5.83773,7.224025,0,26.1,1,0,0 +0,3.258096,0,5.83773,7.224025,0,26.1,1,0,0 +0,3.258096,0,5.83773,7.224025,0,26.1,1,0,0 +2,3.258096,0,5.83773,7.224025,0,26.1,1,0,0 +26,3.258096,0,5.83773,7.224025,0,26.1,1,0,0 +0,3.258096,0,5.83773,7.224025,1,17.4,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +7,4.61512,1,6.907755,0,0,13.73189,0,0,0 +6,4.61512,1,6.907755,0,0,13.73189,0,0,0 +8,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +3,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +6,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,0,0,0,0,0,4.3,0,0,0 +4,0,0,0,0,0,4.3,0,0,0 +10,0,0,0,0,0,4.3,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +7,0,0,0,0,0,13.73189,0,0,0 +7,0,0,0,0,0,13.73189,0,0,0 +6,0,0,0,0,0,13,0,0,0 +4,0,0,0,0,0,13,0,0,0 +2,0,0,0,0,0,13,0,0,0 +4,0,0,0,0,0,26.1,0,0,0 +2,0,0,0,0,0,26.1,0,0,0 +5,0,0,0,0,0,26.1,0,0,0 +18,4.61512,1,6.907755,0,0,0,0,0,0 +21,4.61512,1,6.907755,0,0,0,0,0,0 +14,4.61512,1,6.907755,0,0,0,0,0,0 +10,4.61512,1,6.907755,0,0,0,0,0,0 +14,4.61512,1,6.907755,0,0,0,0,0,0 +11,4.61512,1,6.907755,0,0,17.4,1,0,0 +8,4.61512,1,6.907755,0,0,17.4,1,0,0 +16,4.61512,1,6.907755,0,0,17.4,1,0,0 +3,4.61512,1,6.907755,0,0,17.4,1,0,0 +4,4.61512,1,6.907755,0,0,17.4,1,0,0 +0,4.61512,1,5.924256,0,0,13,0,0,0 +3,4.61512,1,5.924256,0,0,13,0,0,0 +0,4.61512,1,5.924256,0,0,13,0,0,0 +1,4.61512,1,5.924256,0,0,13,0,0,0 +0,4.61512,1,5.924256,0,0,13,0,0,0 +6,0,0,5.673323,0,0,13.73189,1,0,0 +5,0,0,5.673323,0,0,13.73189,1,0,0 +14,0,0,5.673323,0,0,13.73189,1,0,0 +2,0,0,5.673323,0,0,13.73189,1,0,0 +5,0,0,5.673323,0,0,13.73189,1,0,0 +5,0,0,5.673323,0,0,13.73189,1,0,0 +5,0,0,5.673323,0,0,34.8,1,0,0 +11,0,0,5.673323,0,0,34.8,1,0,0 +11,0,0,5.673323,0,0,34.8,1,0,0 +6,0,0,5.673323,0,0,17.4,0,0,1 +11,0,0,5.673323,0,0,17.4,0,0,1 +11,0,0,5.673323,0,0,17.4,0,0,1 +3,0,0,5.673323,0,0,13.73189,1,0,0 +6,0,0,5.673323,0,0,13.73189,1,0,0 +2,0,0,5.673323,0,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,0,0,0,0 +4,3.258096,0,6.907755,8.294049,0,0,0,0,0 +2,3.258096,0,6.907755,8.294049,0,0,0,0,0 +2,3.258096,0,6.907755,8.294049,0,0,0,0,0 +3,3.258096,0,6.907755,8.294049,0,0,0,0,0 +4,3.258096,0,6.907755,8.294049,0,0,0,0,0 +2,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +5,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +5,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +2,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +5,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +2,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +10,4.61512,1,6.907755,0,0,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +13,4.61512,1,6.907755,0,0,13.73189,1,0,0 +5,4.61512,1,6.907755,0,0,13.73189,1,0,0 +7,4.61512,1,6.907755,0,0,13.73189,1,0,0 +4,4.61512,1,6.907755,0,0,13.73189,1,0,0 +8,4.61512,1,6.907755,0,0,17.4,1,0,0 +3,4.61512,1,6.907755,0,0,17.4,1,0,0 +5,4.61512,1,6.907755,0,0,17.4,1,0,0 +15,4.61512,1,6.907755,0,0,21.7,1,0,0 +4,4.61512,1,6.907755,0,0,21.7,1,0,0 +9,4.61512,1,6.907755,0,0,21.7,1,0,0 +22,4.61512,1,6.907755,0,0,13.73189,1,0,0 +23,4.61512,1,6.907755,0,0,13.73189,1,0,0 +13,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.436151,0,0,13.73189,0,0,0 +0,4.61512,1,6.436151,0,0,13.73189,0,0,0 +1,4.61512,1,6.436151,0,0,13.73189,0,0,0 +1,4.61512,1,6.436151,0,0,13.73189,0,0,0 +0,4.61512,1,6.436151,0,0,13.73189,0,0,0 +0,4.61512,1,6.436151,0,0,13.73189,0,0,0 +0,4.61512,1,6.436151,0,0,13.73189,0,0,0 +0,4.61512,1,6.436151,0,0,13.73189,0,0,0 +0,4.61512,1,6.436151,0,0,13.73189,0,0,0 +0,4.61512,1,6.436151,0,0,13.73189,0,0,0 +0,4.61512,1,6.436151,0,0,13.73189,1,0,0 +0,4.61512,1,6.436151,0,0,13.73189,1,0,0 +0,4.61512,1,6.436151,0,0,13.73189,1,0,0 +0,4.61512,1,6.436151,0,0,13.73189,1,0,0 +0,4.61512,1,6.436151,0,0,13.73189,1,0,0 +0,4.61512,1,6.436151,0,0,13.73189,0,0,0 +1,4.61512,1,6.436151,0,0,13.73189,0,0,0 +0,4.61512,1,6.436151,0,0,13.73189,0,0,0 +0,4.61512,1,6.436151,0,0,13.73189,0,0,0 +0,4.61512,1,6.436151,0,0,13.73189,0,0,0 +1,4.61512,1,6.436151,0,0,13.73189,1,0,0 +0,4.61512,1,6.436151,0,0,13.73189,1,0,0 +2,4.61512,1,6.436151,0,0,13.73189,1,0,0 +0,4.61512,1,6.436151,0,0,13.73189,1,0,0 +0,4.61512,1,6.436151,0,0,13.73189,1,0,0 +1,4.61512,1,6.436151,0,0,13.73189,0,0,0 +0,4.61512,1,6.436151,0,0,13.73189,0,0,0 +1,4.61512,1,6.436151,0,0,13.73189,0,0,0 +3,4.61512,1,6.436151,0,0,13.73189,0,0,0 +0,4.61512,1,6.436151,0,0,13.73189,0,0,0 +2,4.61512,1,5.998937,0,0,21.7,1,0,0 +0,4.61512,1,5.998937,0,0,21.7,1,0,0 +0,4.61512,1,5.998937,0,0,21.7,1,0,0 +3,4.61512,1,5.998937,0,0,21.7,1,0,0 +2,4.61512,1,5.998937,0,0,21.7,1,0,0 +6,0,0,0,0,0,13.73189,1,0,0 +6,0,0,0,0,0,13.73189,1,0,0 +6,0,0,0,0,0,13.73189,1,0,0 +8,0,0,0,0,0,13.73189,1,0,0 +6,0,0,0,0,0,13.73189,1,0,0 +7,0,0,0,0,1,21.7,1,0,0 +7,0,0,0,0,1,21.7,1,0,0 +6,0,0,0,0,1,21.7,1,0,0 +9,0,0,0,0,1,21.7,1,0,0 +6,0,0,0,0,1,21.7,1,0,0 +3,0,0,0,0,0,13.73189,1,0,0 +5,0,0,0,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +3,0,0,0,0,0,13.73189,1,0,0 +1,0,0,0,0,0,13.73189,1,0,0 +1,0,0,0,0,0,8.7,1,0,0 +6,0,0,0,0,0,8.7,1,0,0 +0,0,0,0,0,0,8.7,1,0,0 +0,0,0,0,0,0,8.7,1,0,0 +1,0,0,0,0,0,8.7,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +8,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +9,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +10,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +8,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +8,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,0,1,0,0,0,13.73189,1,0,0 +0,0,1,0,0,0,13.73189,1,0,0 +1,0,1,0,0,0,13.73189,1,0,0 +1,0,1,0,0,0,13.73189,1,0,0 +0,0,1,0,0,0,13.73189,1,0,0 +0,0,1,0,0,0,17.4,1,0,0 +0,0,1,0,0,0,17.4,1,0,0 +0,0,1,0,0,0,17.4,1,0,0 +0,0,1,0,0,0,17.4,1,0,0 +0,0,1,0,0,0,17.4,1,0,0 +0,3.258096,0,6.327937,7.714231,0,4.3,1,0,0 +0,3.258096,0,6.327937,7.714231,0,4.3,1,0,0 +0,3.258096,0,6.327937,7.714231,0,4.3,1,0,0 +2,3.258096,0,6.327937,7.714231,0,4.3,1,0,0 +2,3.258096,0,6.327937,7.714231,0,4.3,1,0,0 +4,3.258096,0,6.327937,7.714231,0,13.73189,1,0,0 +3,3.258096,0,6.327937,7.714231,0,13.73189,1,0,0 +2,3.258096,0,6.327937,7.714231,0,13.73189,1,0,0 +1,3.258096,0,6.327937,7.714231,0,13.73189,1,0,0 +6,3.258096,0,6.327937,7.714231,0,13.73189,1,0,0 +1,3.258096,0,6.327937,7.714231,0,8.7,1,0,0 +2,3.258096,0,6.327937,7.714231,0,8.7,1,0,0 +1,3.258096,0,6.327937,7.714231,0,8.7,1,0,0 +1,3.258096,0,6.327937,7.714231,0,8.7,1,0,0 +1,3.258096,0,6.327937,7.714231,0,8.7,1,0,0 +2,3.258096,0,6.327937,7.714231,0,13.73189,1,0,0 +6,3.258096,0,6.327937,7.714231,0,13.73189,1,0,0 +4,3.258096,0,6.327937,7.714231,0,13.73189,1,0,0 +1,3.258096,0,6.327937,7.714231,0,13.73189,1,0,0 +2,3.258096,0,6.327937,7.714231,0,13.73189,1,0,0 +6,0,1,5.986452,0,0,30.4,1,0,0 +13,0,1,5.986452,0,0,30.4,1,0,0 +19,0,1,5.986452,0,0,30.4,1,0,0 +14,0,1,5.986452,0,1,26.1,1,0,0 +30,0,1,5.986452,0,1,26.1,1,0,0 +38,0,1,5.986452,0,1,26.1,1,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +10,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +9,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +11,3.258096,0,6.620073,8.006368,0,13.73189,1,0,0 +18,3.258096,0,6.620073,8.006368,0,13.73189,1,0,0 +2,3.258096,0,6.620073,8.006368,0,13.73189,1,0,0 +2,3.258096,0,6.620073,8.006368,0,13.73189,1,0,0 +0,3.258096,0,6.620073,8.006368,0,13.73189,1,0,0 +4,4.61512,1,6.448889,0,0,8.7,0,0,0 +1,4.61512,1,6.448889,0,0,8.7,0,0,0 +2,4.61512,1,6.448889,0,0,8.7,0,0,0 +4,4.61512,1,6.448889,0,0,8.7,0,0,0 +0,4.61512,1,6.448889,0,0,8.7,0,0,0 +1,4.61512,1,6.448889,0,0,8.7,0,0,0 +1,4.61512,1,6.448889,0,0,17.4,0,0,0 +1,4.61512,1,6.448889,0,0,17.4,0,0,0 +0,4.61512,1,6.448889,0,0,17.4,0,0,0 +0,0,1,4.356709,0,0,13.73189,0,0,0 +4,0,1,4.356709,0,0,13.73189,0,0,0 +9,0,1,4.356709,0,0,13.73189,0,0,0 +2,0,1,4.356709,0,0,13.73189,0,0,0 +0,0,1,4.356709,0,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,21.7,0,0,0 +3,3.258096,0,6.907755,8.294049,0,21.7,0,0,0 +7,3.258096,0,6.907755,8.294049,0,21.7,0,0,0 +2,3.258096,0,6.907755,8.294049,0,21.7,0,0,0 +0,3.258096,0,6.907755,8.294049,0,21.7,0,0,0 +15,3.258096,0,6.907755,8.294049,0,13,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13,0,0,0 +16,3.258096,0,6.907755,8.294049,0,13,0,0,0 +8,3.258096,0,6.907755,8.294049,0,13,0,0,0 +6,3.258096,0,6.907755,8.294049,0,13,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +2,3.258096,0,6.907755,8.294049,0,21.7,0,0,0 +1,3.258096,0,6.907755,8.294049,0,21.7,0,0,0 +0,3.258096,0,6.907755,8.294049,0,21.7,0,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +2,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +2,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +3,4.61512,1,6.907755,0,0,21.7,1,0,0 +3,4.61512,1,6.907755,0,0,21.7,1,0,0 +5,4.61512,1,6.907755,0,0,21.7,1,0,0 +11,4.61512,1,6.907755,0,0,21.7,1,0,0 +2,4.61512,1,6.907755,0,0,21.7,1,0,0 +7,4.61512,1,6.907755,0,0,13,1,0,0 +6,4.61512,1,6.907755,0,0,13,1,0,0 +2,4.61512,1,6.907755,0,0,13,1,0,0 +2,4.61512,1,6.907755,0,0,13,1,0,0 +0,4.61512,1,6.907755,0,0,13,1,0,0 +5,4.61512,1,6.799056,0,0,21.7,0,1,0 +8,4.61512,1,6.799056,0,0,21.7,0,1,0 +6,4.61512,1,6.799056,0,0,21.7,0,1,0 +9,4.61512,1,6.799056,0,0,21.7,0,1,0 +4,4.61512,1,6.799056,0,0,21.7,0,1,0 +1,4.61512,1,6.799056,0,1,30.4,0,1,0 +0,4.61512,1,6.799056,0,1,30.4,0,1,0 +0,4.61512,1,6.799056,0,1,30.4,0,1,0 +0,4.61512,1,6.799056,0,1,30.4,0,1,0 +0,4.61512,1,6.799056,0,1,30.4,0,1,0 +1,4.61512,1,6.519147,0,0,13,1,0,0 +1,4.61512,1,6.519147,0,0,13,1,0,0 +0,4.61512,1,6.519147,0,0,13,1,0,0 +1,4.61512,1,6.519147,0,0,13,1,0,0 +0,4.61512,1,6.519147,0,0,13,1,0,0 +0,0,0,5.509388,0,0,21.7,0,0,0 +1,0,0,5.509388,0,0,21.7,0,0,0 +2,0,0,5.509388,0,0,21.7,0,0,0 +1,0,0,5.509388,0,0,21.7,0,0,0 +1,0,0,5.509388,0,0,21.7,0,0,0 +2,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +1,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +9,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,0,1,5.703783,0,0,30.4,1,0,0 +2,0,1,5.703783,0,0,30.4,1,0,0 +13,0,1,5.703783,0,1,26.1,0,1,0 +12,0,1,5.703783,0,1,26.1,0,1,0 +7,0,0,0,0,0,17.4,1,0,0 +11,0,0,0,0,0,17.4,1,0,0 +11,0,0,0,0,0,17.4,1,0,0 +2,0,0,0,0,0,30.4,1,0,0 +2,0,0,0,0,0,30.4,1,0,0 +2,0,0,0,0,0,30.4,1,0,0 +1,0,0,0,0,0,4.3,0,0,0 +0,0,0,0,0,0,4.3,0,0,0 +4,0,0,0,0,0,4.3,0,0,0 +0,3.258096,0,5.988961,7.375256,0,4.3,0,0,0 +0,3.258096,0,5.988961,7.375256,0,4.3,0,0,0 +2,3.258096,0,5.988961,7.375256,0,4.3,0,0,0 +1,3.258096,0,5.988961,7.375256,0,4.3,0,0,0 +1,3.258096,0,5.988961,7.375256,0,4.3,0,0,0 +0,4.61512,1,6.302619,0,0,13.73189,0,1,0 +0,4.61512,1,6.302619,0,0,13.73189,0,1,0 +0,4.61512,1,6.302619,0,0,13.73189,0,1,0 +6,4.61512,1,6.907755,0,0,13.73189,0,0,0 +4,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +5,4.61512,1,6.907755,0,0,13.73189,0,0,0 +4,4.61512,1,6.907755,0,0,13.73189,0,0,0 +5,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +6,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +8,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +4,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +5,4.61512,1,6.907755,0,0,13.73189,0,0,0 +13,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,0,1,5.703783,0,0,13.73189,0,0,0 +1,0,1,5.703783,0,0,13.73189,1,0,0 +0,0,1,5.703783,0,0,13.73189,1,0,0 +0,0,1,5.703783,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +8,0,0,0,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +1,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +5,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +6,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +7,0,0,0,0,0,13.73189,1,0,0 +5,0,0,0,0,0,21.7,1,0,0 +5,0,0,0,0,0,21.7,1,0,0 +7,0,0,0,0,0,21.7,1,0,0 +5,0,0,0,0,0,21.7,1,0,0 +9,0,0,0,0,0,21.7,1,0,0 +2,0,0,0,0,0,17.4,1,0,0 +3,0,0,0,0,0,17.4,1,0,0 +3,0,0,0,0,0,17.4,1,0,0 +1,0,0,0,0,0,17.4,1,0,0 +3,0,0,0,0,0,17.4,1,0,0 +3,3.931826,0,4.49981,0,0,4.3,1,0,0 +6,3.931826,0,4.49981,0,0,4.3,1,0,0 +0,3.931826,0,4.49981,0,0,4.3,1,0,0 +13,0,0,0,0,0,26.1,0,1,0 +1,0,0,0,0,0,26.1,0,1,0 +2,0,0,0,0,0,26.1,0,1,0 +9,0,0,0,0,1,43.5,0,1,0 +7,0,0,0,0,1,43.5,0,1,0 +13,0,0,0,0,1,43.5,0,1,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +11,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +4,4.61512,1,6.802395,0,0,0,0,0,0 +2,4.61512,1,6.802395,0,0,0,0,0,0 +5,4.61512,1,6.802395,0,0,0,0,0,0 +5,4.61512,1,6.802395,0,0,8.7,0,0,0 +0,4.61512,1,6.802395,0,0,8.7,0,0,0 +1,4.61512,1,6.802395,0,0,8.7,0,0,0 +9,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +8,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +4,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +3,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +1,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +5,3.258096,0,6.907755,8.294049,0,8.7,1,0,0 +1,3.258096,0,6.907755,8.294049,0,8.7,1,0,0 +4,3.258096,0,6.907755,8.294049,0,8.7,1,0,0 +5,3.258096,0,6.907755,8.294049,0,8.7,1,0,0 +0,3.258096,0,6.771935,8.15823,0,13.73189,0,0,0 +0,3.258096,0,6.771935,8.15823,0,13.73189,0,0,0 +0,3.258096,0,6.771935,8.15823,0,13.73189,0,0,0 +1,3.258096,0,6.771935,8.15823,0,13.73189,0,0,0 +2,3.258096,0,6.771935,8.15823,0,13.73189,0,0,0 +0,3.258096,0,6.771935,8.15823,0,13.73189,1,0,0 +0,3.258096,0,6.771935,8.15823,0,13.73189,1,0,0 +0,3.258096,0,6.771935,8.15823,0,13.73189,1,0,0 +0,3.258096,0,6.771935,8.15823,0,13.73189,1,0,0 +0,3.258096,0,6.771935,8.15823,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +4,0,0,0,0,0,13.73189,0,0,0 +4,0,0,0,0,0,13.73189,0,0,0 +31,0,0,0,0,0,13.73189,1,0,0 +17,0,0,0,0,0,13.73189,1,0,0 +9,0,0,0,0,0,13.73189,1,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +3,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,8.7,0,0,0 +0,4.61512,1,6.907755,0,0,8.7,0,0,0 +0,4.61512,1,6.907755,0,0,8.7,0,0,0 +0,4.61512,1,6.907755,0,0,8.7,0,0,0 +0,4.61512,1,6.907755,0,0,8.7,0,0,0 +0,4.61512,1,6.907755,0,0,4.3,0,0,0 +1,4.61512,1,6.907755,0,0,4.3,0,0,0 +1,4.61512,1,6.907755,0,0,4.3,0,0,0 +1,4.61512,1,6.907755,0,0,4.3,0,0,0 +2,4.61512,1,6.907755,0,0,4.3,0,0,0 +0,3.258096,0,6.635947,8.022241,0,13.73189,0,0,0 +1,3.258096,0,6.635947,8.022241,0,13.73189,0,0,0 +6,3.258096,0,6.635947,8.022241,0,13.73189,0,0,0 +8,3.258096,0,6.635947,8.022241,1,13.73189,0,0,0 +6,3.258096,0,6.635947,8.022241,1,13.73189,0,0,0 +8,3.258096,0,6.635947,8.022241,1,13.73189,0,0,0 +3,3.258096,0,6.635947,8.022241,0,13.73189,0,0,0 +2,3.258096,0,6.635947,8.022241,0,13.73189,0,0,0 +0,3.258096,0,6.635947,8.022241,0,13.73189,0,0,0 +3,3.258096,0,6.635947,8.022241,1,13.73189,0,0,0 +2,3.258096,0,6.635947,8.022241,1,13.73189,0,0,0 +0,3.258096,0,6.635947,8.022241,1,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +5,0,0,0,0,0,13.73189,0,0,0 +23,0,0,0,0,0,13.73189,0,0,0 +4,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +5,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +4,0,0,0,0,0,13.73189,0,0,0 +11,0,0,5.552959,0,0,13.73189,1,0,0 +3,0,0,5.552959,0,0,13.73189,1,0,0 +6,0,0,5.552959,0,0,13.73189,1,0,0 +6,0,0,5.552959,0,0,13.73189,1,0,0 +2,0,0,5.552959,0,0,13.73189,1,0,0 +0,0,0,5.552959,0,0,13.73189,1,0,0 +1,0,0,5.552959,0,0,13.73189,1,0,0 +5,0,0,5.552959,0,0,13.73189,1,0,0 +6,0,0,5.552959,0,0,13.73189,1,0,0 +0,0,0,5.552959,0,0,13.73189,1,0,0 +1,0,0,5.552959,0,0,13.73189,1,0,0 +1,0,0,5.552959,0,0,13.73189,1,0,0 +2,0,0,5.552959,0,0,13.73189,1,0,0 +11,0,0,5.552959,0,0,13.73189,1,0,0 +5,0,0,5.552959,0,0,13.73189,1,0,0 +4,4.61512,1,6.907755,0,0,13.73189,1,0,0 +2,4.61512,1,6.907755,0,0,13.73189,1,0,0 +3,4.61512,1,6.907755,0,0,13.73189,1,0,0 +3,4.61512,1,6.907755,0,0,13.73189,1,0,0 +2,4.61512,1,6.907755,0,0,13.73189,1,0,0 +3,4.61512,1,6.907755,0,0,13.73189,0,0,0 +5,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,.12982,13.73189,0,0,0 +0,4.61512,1,6.907755,0,.12982,13.73189,0,0,0 +0,4.61512,1,6.907755,0,.12982,13.73189,0,0,0 +2,3.258096,0,6.55108,7.937375,0,13.73189,0,0,0 +3,3.258096,0,6.55108,7.937375,0,13.73189,0,0,0 +3,3.258096,0,6.55108,7.937375,0,13.73189,0,0,0 +2,3.258096,0,6.55108,7.937375,0,13.73189,0,0,0 +4,3.258096,0,6.55108,7.937375,0,13.73189,0,0,0 +0,4.61512,1,5.988961,0,0,13.73189,0,0,0 +6,4.61512,1,5.988961,0,0,13.73189,0,0,0 +6,4.61512,1,5.988961,0,0,13.73189,0,0,0 +3,4.61512,1,5.988961,0,0,21.7,0,0,0 +1,4.61512,1,5.988961,0,0,21.7,0,0,0 +2,4.61512,1,5.988961,0,0,21.7,0,0,0 +2,4.61512,1,5.988961,0,0,17.4,1,0,0 +2,4.61512,1,5.988961,0,0,17.4,1,0,0 +3,4.61512,1,5.988961,0,0,17.4,1,0,0 +8,4.61512,1,5.988961,0,0,13.73189,1,0,0 +3,4.61512,1,5.988961,0,0,13.73189,1,0,0 +20,4.61512,1,5.988961,0,0,13.73189,1,0,0 +7,4.61512,1,5.988961,0,0,8.7,0,0,0 +1,4.61512,1,5.988961,0,0,8.7,0,0,0 +5,4.61512,1,5.988961,0,0,8.7,0,0,0 +15,3.931826,0,5.298317,5.991465,0,8.7,1,0,0 +2,3.931826,0,5.298317,5.991465,0,8.7,1,0,0 +1,3.931826,0,5.298317,5.991465,0,8.7,1,0,0 +4,3.931826,0,5.298317,5.991465,0,8.7,1,0,0 +2,3.931826,0,5.298317,5.991465,0,8.7,1,0,0 +2,3.931826,0,4.744932,5.438079,0,8.7,1,0,0 +0,3.931826,0,4.744932,5.438079,0,8.7,1,0,0 +0,3.931826,0,4.744932,5.438079,0,8.7,1,0,0 +2,3.931826,0,4.744932,5.438079,0,8.7,1,0,0 +5,3.931826,0,4.744932,5.438079,0,8.7,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,0,0,5.673323,0,0,13.73189,0,0,0 +1,0,0,5.673323,0,0,13.73189,0,0,0 +1,0,0,5.673323,0,0,13.73189,0,0,0 +3,0,0,5.673323,0,0,13.73189,0,0,0 +1,0,0,5.673323,0,0,13.73189,0,0,0 +6,0,0,5.673323,0,0,17.4,1,0,0 +3,0,0,5.673323,0,0,17.4,1,0,0 +7,0,0,5.673323,0,0,17.4,1,0,0 +8,0,0,5.673323,0,0,17.4,1,0,0 +2,0,0,5.673323,0,0,17.4,1,0,0 +1,0,0,5.673323,0,0,13.73189,0,0,0 +0,0,0,5.673323,0,0,13.73189,0,0,0 +3,0,0,5.673323,0,0,13.73189,0,0,0 +6,0,0,5.673323,0,0,13.73189,0,0,0 +1,0,0,5.673323,0,0,13.73189,0,0,0 +2,0,0,5.673323,0,0,8.7,0,0,0 +2,0,0,5.673323,0,0,8.7,0,0,0 +5,0,0,5.673323,0,0,8.7,0,0,0 +3,0,0,5.673323,0,0,8.7,0,0,0 +2,0,0,5.673323,0,0,8.7,0,0,0 +1,4.61512,1,6.885509,0,0,13.73189,0,0,0 +3,4.61512,1,6.885509,0,0,13.73189,0,0,0 +1,4.61512,1,6.885509,0,0,13.73189,0,0,0 +2,4.61512,1,6.885509,0,0,13.73189,0,0,0 +1,4.61512,1,6.885509,0,0,13.73189,0,0,0 +2,4.61512,1,6.885509,0,0,13.73189,0,0,0 +0,4.61512,1,6.885509,0,0,13.73189,0,0,0 +3,4.61512,1,6.885509,0,0,13.73189,0,0,0 +0,4.61512,1,6.885509,0,0,13.73189,0,0,0 +22,4.61512,1,6.885509,0,0,13.73189,1,0,0 +19,4.61512,1,6.885509,0,0,13.73189,1,0,0 +14,4.61512,1,6.885509,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,0,1,0,0 +0,4.61512,1,0,0,0,0,1,0,0 +1,4.61512,1,0,0,0,0,1,0,0 +0,4.61512,1,0,0,0,0,1,0,0 +0,4.61512,1,0,0,0,0,1,0,0 +1,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +2,4.61512,1,0,0,0,21.7,1,0,0 +0,4.61512,1,0,0,0,21.7,1,0,0 +0,4.61512,1,0,0,0,21.7,1,0,0 +0,4.61512,1,0,0,0,21.7,1,0,0 +1,4.61512,1,0,0,0,21.7,1,0,0 +0,4.61512,1,0,0,0,0,1,0,0 +0,4.61512,1,0,0,0,0,1,0,0 +0,4.61512,1,0,0,0,0,1,0,0 +0,4.61512,1,0,0,0,0,1,0,0 +0,4.61512,1,0,0,0,0,1,0,0 +1,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +5,4.61512,1,0,0,0,21.7,1,0,0 +0,4.61512,1,0,0,0,21.7,1,0,0 +0,4.61512,1,0,0,0,21.7,1,0,0 +0,4.61512,1,0,0,0,21.7,1,0,0 +0,4.61512,1,0,0,0,21.7,1,0,0 +1,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +3,0,0,5.105946,0,0,13.73189,0,0,0 +4,0,0,5.105946,0,0,13.73189,0,0,0 +1,0,0,5.105946,0,0,13.73189,0,0,0 +3,0,0,5.105946,0,0,13.73189,0,0,0 +9,0,0,5.105946,0,0,13.73189,0,0,0 +4,0,0,5.105946,0,0,13.73189,1,0,0 +11,0,0,5.105946,0,0,13.73189,1,0,0 +7,0,0,5.105946,0,0,13.73189,1,0,0 +6,0,0,5.105946,0,0,13.73189,1,0,0 +4,0,0,5.105946,0,0,13.73189,1,0,0 +2,0,0,5.105946,0,0,13.73189,0,0,0 +0,0,0,5.105946,0,0,13.73189,0,0,0 +4,0,0,5.105946,0,0,13.73189,0,0,0 +7,0,0,5.105946,0,0,13.73189,0,0,0 +11,0,0,5.105946,0,0,13.73189,0,0,0 +4,0,0,5.105946,0,0,13.73189,0,0,0 +5,0,0,5.105946,0,0,13.73189,0,0,0 +7,0,0,5.105946,0,0,13.73189,0,0,0 +4,0,0,5.105946,0,0,13.73189,0,0,0 +5,0,0,5.105946,0,0,13.73189,0,0,0 +0,0,0,5.105946,0,0,13.73189,0,0,0 +8,0,0,5.105946,0,0,13.73189,0,0,0 +4,0,0,5.105946,0,0,13.73189,0,0,0 +1,0,0,5.105946,0,0,13.73189,0,0,0 +4,0,0,5.105946,0,0,13.73189,0,0,0 +1,4.61512,1,5.351858,0,1,13.73189,0,0,1 +11,4.61512,1,5.351858,0,1,13.73189,0,0,1 +1,4.61512,1,5.351858,0,1,13.73189,0,0,1 +0,4.61512,1,4.317488,0,0,13.73189,1,0,0 +0,4.61512,1,4.317488,0,0,13.73189,1,0,0 +2,4.61512,1,4.317488,0,0,13.73189,1,0,0 +0,3.258096,0,5.129899,6.516193,0,17.4,1,0,0 +1,3.258096,0,5.129899,6.516193,0,17.4,1,0,0 +0,3.258096,0,5.129899,6.516193,0,17.4,1,0,0 +0,3.258096,0,5.129899,6.516193,0,13.73189,1,0,0 +0,3.258096,0,5.129899,6.516193,0,13.73189,1,0,0 +0,3.258096,0,5.129899,6.516193,0,13.73189,1,0,0 +0,4.61512,1,4.919981,0,.0327869,13.73189,0,0,0 +0,4.61512,1,4.919981,0,.12982,13.73189,1,0,0 +0,3.931826,0,5.187386,5.880533,.12982,13.73189,1,0,0 +0,3.931826,0,5.187386,5.880533,.12982,13.73189,1,0,0 +0,3.931826,0,5.187386,5.880533,.12982,13.73189,1,0,0 +1,3.931826,0,5.187386,5.880533,0,8.7,1,0,0 +0,3.931826,0,5.187386,5.880533,0,8.7,1,0,0 +0,3.931826,0,5.187386,5.880533,0,8.7,1,0,0 +0,0,0,0,0,0,13.73189,0,1,0 +0,0,0,0,0,0,13.73189,0,1,0 +0,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +7,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +8,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +8,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +11,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +12,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +9,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +8,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,0,0,1,13.73189,0,1,0 +2,3.258096,0,0,0,1,13.73189,0,1,0 +4,3.258096,0,0,0,1,13.73189,0,1,0 +4,3.258096,0,0,0,1,13.73189,0,1,0 +7,3.258096,0,0,0,1,13.73189,0,1,0 +20,3.258096,0,5.556828,6.590301,1,13.73189,0,1,0 +2,4.61512,1,4.844187,0,0,13.73189,1,0,0 +0,4.61512,1,4.844187,0,0,13.73189,1,0,0 +0,4.61512,1,6.476973,0,0,8.7,0,0,0 +4,4.61512,1,6.476973,0,0,8.7,0,0,0 +1,4.61512,1,6.476973,0,0,8.7,0,0,0 +2,4.61512,1,6.476973,0,0,8.7,0,0,0 +3,4.61512,1,6.476973,0,0,8.7,0,0,0 +8,4.61512,1,6.476973,0,0,8.7,0,0,0 +5,4.61512,1,6.476973,0,0,8.7,0,0,0 +4,4.61512,1,6.476973,0,0,8.7,0,0,0 +0,4.61512,1,6.476973,0,0,8.7,0,0,0 +2,4.61512,1,6.476973,0,0,8.7,0,0,0 +3,4.61512,1,6.476973,0,0,13.73189,0,0,0 +1,4.61512,1,6.476973,0,0,13.73189,0,0,0 +1,4.61512,1,6.476973,0,0,13.73189,0,0,0 +0,4.61512,1,6.476973,0,0,13.73189,0,0,0 +0,4.61512,1,6.476973,0,0,13.73189,0,0,0 +0,4.61512,1,6.476973,0,0,13.73189,0,0,0 +1,4.61512,1,6.476973,0,0,13.73189,0,0,0 +1,4.61512,1,6.476973,0,0,13.73189,0,0,0 +2,4.61512,1,6.476973,0,0,13.73189,0,0,0 +0,4.61512,1,6.476973,0,0,13.73189,0,0,0 +3,4.61512,1,6.476973,0,0,13.73189,0,0,0 +2,4.61512,1,6.476973,0,0,13.73189,0,0,0 +1,4.61512,1,6.476973,0,0,13.73189,0,0,0 +4,4.61512,1,6.476973,0,0,13.73189,0,0,0 +1,4.61512,1,6.476973,0,0,13.73189,0,0,0 +0,0,1,4.787492,0,0,21.7,0,0,0 +1,0,1,4.787492,0,0,21.7,0,0,0 +1,0,1,4.787492,0,0,21.7,0,0,0 +0,0,1,4.787492,0,0,21.7,0,0,0 +2,0,1,4.787492,0,0,21.7,0,0,0 +0,0,1,4.787492,0,0,0,0,0,0 +0,0,1,4.787492,0,0,0,0,0,0 +0,0,1,4.787492,0,0,0,0,0,0 +0,0,1,4.787492,0,0,0,0,0,0 +1,0,1,4.787492,0,0,0,0,0,0 +1,0,1,4.787492,0,0,13.73189,0,0,0 +1,0,1,4.787492,0,0,13.73189,0,0,0 +1,0,1,4.787492,0,0,13.73189,0,0,0 +0,0,1,4.787492,0,0,13.73189,0,0,0 +3,0,1,4.787492,0,0,13.73189,0,0,0 +2,0,1,4.787492,0,0,13.73189,0,0,0 +1,0,1,4.787492,0,0,13.73189,0,0,0 +0,0,1,4.787492,0,0,13.73189,0,0,0 +1,0,1,4.787492,0,0,13.73189,0,0,0 +4,0,1,4.787492,0,0,13.73189,0,0,0 +0,3.258096,0,6.871091,8.257385,0,4.3,0,0,0 +0,3.258096,0,6.871091,8.257385,0,4.3,0,0,0 +5,3.258096,0,6.871091,8.257385,0,4.3,0,0,0 +4,3.258096,0,6.871091,8.257385,0,13.73189,0,0,0 +2,3.258096,0,6.871091,8.257385,0,13.73189,0,0,0 +1,3.258096,0,6.871091,8.257385,0,13.73189,0,0,0 +2,3.258096,0,6.871091,8.257385,0,13.73189,0,0,0 +1,3.258096,0,6.871091,8.257385,0,13.73189,0,0,0 +2,3.258096,0,6.871091,8.257385,0,13.73189,0,0,0 +1,3.258096,0,6.871091,8.257385,1,13.73189,0,0,0 +2,3.258096,0,6.871091,8.257385,1,13.73189,0,0,0 +1,3.258096,0,6.871091,8.257385,1,13.73189,0,0,0 +2,3.258096,0,6.871091,8.257385,0,13,0,0,0 +1,3.258096,0,6.871091,8.257385,0,13,0,0,0 +1,3.258096,0,6.871091,8.257385,0,13,0,0,0 +6,3.258096,0,6.871091,8.257385,0,13.73189,0,0,0 +1,3.258096,0,6.871091,8.257385,0,13.73189,0,0,0 +1,3.258096,0,6.871091,8.257385,0,13.73189,0,0,0 +4,3.258096,0,6.871091,8.257385,0,13.73189,0,0,0 +1,3.258096,0,6.871091,8.257385,0,13.73189,0,0,0 +1,3.258096,0,6.871091,8.257385,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13,1,0,0 +0,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +1,3.258096,0,6.907755,8.294049,0,17.4,0,0,0 +4,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +3,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +2,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +3,0,0,5.451038,0,0,13.73189,0,0,0 +6,0,0,5.451038,0,0,13.73189,0,0,0 +3,0,0,5.451038,0,0,13.73189,0,0,0 +4,0,0,5.451038,0,0,13.73189,0,0,0 +6,0,0,5.451038,0,0,13.73189,0,0,0 +4,0,0,5.451038,0,0,13,0,0,0 +10,0,0,5.451038,0,0,13,0,0,0 +3,0,0,5.451038,0,0,13,0,0,0 +7,0,0,5.451038,0,0,13,0,0,0 +5,0,0,5.451038,0,0,13,0,0,0 +5,0,0,5.451038,0,0,13.73189,0,0,0 +3,0,0,5.451038,0,0,13.73189,0,0,0 +5,0,0,5.451038,0,0,13.73189,0,0,0 +2,0,0,5.451038,0,0,13.73189,0,0,0 +4,0,0,5.451038,0,0,13.73189,0,0,0 +4,0,0,5.451038,0,0,4.3,0,0,0 +7,0,0,5.451038,0,0,4.3,0,0,0 +6,0,0,5.451038,0,0,4.3,0,0,0 +12,0,0,5.451038,0,0,4.3,0,0,0 +1,0,0,5.451038,0,0,4.3,0,0,0 +13,4.61512,1,6.386879,0,1,34.8,0,1,0 +5,4.61512,1,6.386879,0,1,34.8,0,1,0 +1,4.61512,1,6.386879,0,1,34.8,0,1,0 +1,4.61512,1,6.386879,0,0,13.73189,0,1,0 +6,4.61512,1,6.386879,0,0,13.73189,0,1,0 +7,4.61512,1,6.386879,0,0,13.73189,0,1,0 +1,4.61512,1,6.386879,0,0,13.73189,0,1,0 +3,4.61512,1,6.386879,0,0,13.73189,0,1,0 +2,4.61512,1,6.386879,0,0,13.73189,0,1,0 +4,4.61512,1,6.386879,0,0,13.73189,0,0,0 +6,4.61512,1,6.386879,0,0,13.73189,0,0,0 +2,4.61512,1,6.386879,0,0,13.73189,0,0,0 +2,4.61512,1,6.386879,0,0,17.4,1,0,0 +0,4.61512,1,6.386879,0,0,17.4,1,0,0 +1,4.61512,1,6.386879,0,0,17.4,1,0,0 +6,0,0,5.796058,0,0,13,0,0,0 +0,0,0,5.796058,0,0,13,0,0,0 +1,0,0,5.796058,0,0,13,0,0,0 +3,0,0,5.796058,0,0,13,0,0,0 +2,0,0,5.796058,0,0,13,0,0,0 +0,0,0,5.796058,0,0,4.3,0,0,0 +4,0,0,5.796058,0,0,4.3,0,0,0 +3,0,0,5.796058,0,0,4.3,0,0,0 +3,0,0,5.796058,0,0,4.3,0,0,0 +2,0,0,5.796058,0,0,4.3,0,0,0 +4,0,0,5.796058,0,0,17.4,1,0,0 +11,0,0,5.796058,0,0,17.4,1,0,0 +7,0,0,5.796058,0,0,17.4,1,0,0 +3,0,0,5.796058,0,0,17.4,1,0,0 +5,0,0,5.796058,0,0,17.4,1,0,0 +1,4.61512,1,6.791222,0,0,13.73189,0,0,0 +2,4.61512,1,6.791222,0,0,13.73189,0,0,0 +1,4.61512,1,6.791222,0,0,13.73189,0,0,0 +1,4.61512,1,6.791222,0,0,13.73189,0,0,0 +3,4.61512,1,6.791222,0,0,13.73189,0,0,0 +4,4.61512,1,6.791222,0,0,0,0,0,0 +3,4.61512,1,6.791222,0,0,0,0,0,0 +2,4.61512,1,6.791222,0,0,0,0,0,0 +1,4.61512,1,6.791222,0,0,0,0,0,0 +4,4.61512,1,6.791222,0,0,0,0,0,0 +2,4.61512,1,6.791222,0,0,8.7,0,0,0 +3,4.61512,1,6.791222,0,0,8.7,0,0,0 +6,4.61512,1,6.791222,0,0,8.7,0,0,0 +0,4.61512,1,6.791222,0,0,8.7,0,0,0 +2,4.61512,1,6.791222,0,0,8.7,0,0,0 +2,0,0,5.273,0,0,4.3,0,0,0 +3,0,0,5.273,0,0,4.3,0,0,0 +1,0,0,5.273,0,0,4.3,0,0,0 +0,0,0,5.273,0,0,4.3,0,0,0 +0,0,0,5.273,0,0,4.3,0,0,0 +4,0,0,5.273,0,0,4.3,0,0,0 +2,0,0,5.273,0,0,4.3,0,0,0 +1,0,0,5.273,0,0,4.3,0,0,0 +2,0,0,5.273,0,0,4.3,0,0,0 +7,0,0,5.273,0,0,0,0,0,0 +1,0,0,5.273,0,0,0,0,0,0 +2,0,0,5.273,0,0,0,0,0,0 +1,0,0,5.273,0,0,0,0,0,0 +4,0,0,5.273,0,0,0,0,0,0 +2,0,0,5.273,0,0,0,0,0,0 +3,0,0,5.273,0,0,0,0,0,0 +0,0,0,5.273,0,0,0,0,0,0 +4,0,0,5.273,0,0,0,0,0,0 +1,0,0,5.273,0,0,0,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,1,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,1,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,1,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,1,13.73189,0,0,0 +4,3.258096,0,6.907755,8.294049,1,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +19,3.258096,0,6.907755,8.294049,1,13.73189,0,1,0 +11,3.258096,0,6.907755,8.294049,1,13.73189,0,1,0 +8,3.258096,0,6.907755,8.294049,1,13.73189,0,1,0 +1,3.258096,0,6.907755,8.294049,1,13.73189,0,1,0 +3,3.258096,0,6.907755,8.294049,1,13.73189,0,1,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +1,0,0,5.278115,0,0,13,0,0,0 +2,0,0,5.278115,0,0,13,0,0,0 +5,0,0,5.278115,0,0,13,0,0,0 +3,0,0,5.278115,0,0,13,0,0,0 +0,0,0,5.278115,0,0,13,0,0,0 +4,0,0,5.278115,0,0,13.73189,0,0,0 +3,0,0,5.278115,0,0,13.73189,0,0,0 +0,0,0,5.278115,0,0,13.73189,0,0,0 +1,0,0,5.278115,0,0,13.73189,0,0,0 +2,0,0,5.278115,0,0,13.73189,0,0,0 +20,0,0,5.278115,0,0,13.73189,1,0,0 +9,0,0,5.278115,0,0,13.73189,1,0,0 +26,0,0,5.278115,0,0,13.73189,1,0,0 +28,0,0,5.278115,0,0,13.73189,1,0,0 +33,0,0,5.278115,0,0,13.73189,1,0,0 +13,0,0,5.278115,0,0,8.7,0,0,0 +11,0,0,5.278115,0,0,8.7,0,0,0 +12,0,0,5.278115,0,0,8.7,0,0,0 +7,0,0,5.278115,0,0,8.7,0,0,0 +16,0,0,5.278115,0,0,8.7,0,0,0 +6,0,0,5.278115,0,0,8.7,0,0,0 +3,0,0,5.278115,0,0,8.7,0,0,0 +6,0,0,5.278115,0,0,8.7,0,0,0 +7,0,0,5.278115,0,0,8.7,0,0,0 +6,0,0,5.278115,0,0,8.7,0,0,0 +2,0,0,5.278115,0,0,13.73189,0,0,0 +0,0,0,5.278115,0,0,13.73189,0,0,0 +0,0,0,5.278115,0,0,13.73189,0,0,0 +3,0,0,5.278115,0,0,13.73189,0,0,0 +3,0,0,5.278115,0,0,13.73189,0,0,0 +2,3.258096,0,5.883322,7.269617,0,13.73189,1,0,0 +1,3.258096,0,5.883322,7.269617,0,13.73189,1,0,0 +0,3.258096,0,5.883322,7.269617,0,13.73189,1,0,0 +2,3.258096,0,5.883322,7.269617,0,13.73189,1,0,0 +3,3.258096,0,5.883322,7.269617,0,13.73189,1,0,0 +4,3.258096,0,5.883322,7.269617,0,13.73189,1,0,0 +1,3.258096,0,5.883322,7.269617,0,13.73189,1,0,0 +1,3.258096,0,5.883322,7.269617,0,13.73189,1,0,0 +1,3.258096,0,5.883322,7.269617,0,13.73189,1,0,0 +2,0,1,5.703783,0,0,8.7,1,0,0 +6,0,1,5.703783,0,0,8.7,1,0,0 +1,0,1,5.703783,0,0,8.7,1,0,0 +0,0,1,5.703783,0,0,4.3,1,0,0 +7,0,1,5.703783,0,0,4.3,1,0,0 +6,0,1,5.703783,0,0,4.3,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +37,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +11,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +6,3.258096,0,6.907755,8.294049,1,13.73189,1,0,0 +8,3.258096,0,6.907755,8.294049,1,13.73189,1,0,0 +5,3.258096,0,6.907755,8.294049,1,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +3,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +2,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +0,3.258096,0,6.907755,8.294049,.0327869,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +3,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +0,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +1,0,0,0,0,0,17.4,0,0,0 +4,0,0,0,0,0,17.4,0,0,0 +1,0,0,0,0,0,17.4,0,0,0 +0,0,0,0,0,0,17.4,0,0,0 +1,0,0,0,0,0,17.4,0,0,0 +3,0,0,0,0,0,8.7,0,0,0 +2,0,0,0,0,0,8.7,0,0,0 +3,0,0,0,0,0,8.7,0,0,0 +1,0,0,0,0,0,8.7,0,0,0 +3,0,0,0,0,0,8.7,0,0,0 +6,0,0,0,0,0,8.7,0,0,0 +7,0,0,0,0,0,8.7,0,0,0 +8,0,0,0,0,0,8.7,0,0,0 +2,0,0,0,0,0,8.7,0,0,0 +2,0,0,0,0,0,8.7,0,0,0 +2,0,0,0,0,0,17.4,0,0,0 +0,0,0,0,0,0,17.4,0,0,0 +0,0,0,0,0,0,17.4,0,0,0 +2,0,0,0,0,0,17.4,0,0,0 +0,0,0,0,0,0,17.4,0,0,0 +12,0,1,0,0,1,47.8,0,0,1 +38,0,1,0,0,1,30.4,1,0,0 +11,0,1,0,0,1,30.4,1,0,0 +6,0,1,0,0,1,30.4,1,0,0 +9,0,1,0,0,1,30.4,1,0,0 +7,0,1,0,0,1,30.4,1,0,0 +27,3.931826,0,6.408529,7.101676,1,13.73189,0,0,1 +0,3.931826,0,6.408529,7.101676,1,13.73189,0,0,1 +0,3.931826,0,6.408529,7.101676,1,13.73189,0,0,1 +0,3.931826,0,6.408529,7.101676,0,13.73189,1,0,0 +9,3.931826,0,6.408529,7.101676,0,13.73189,1,0,0 +11,3.931826,0,6.408529,7.101676,0,13.73189,1,0,0 +0,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +0,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +0,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +0,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +0,3.931826,0,6.907755,7.600903,0,4.3,0,0,0 +2,3.931826,0,6.907755,7.600903,0,17.4,0,0,0 +3,3.931826,0,6.907755,7.600903,0,17.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,17.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,17.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,17.4,0,0,0 +2,3.931826,0,6.50129,7.194437,0,17.4,1,0,0 +3,3.931826,0,6.50129,7.194437,0,17.4,1,0,0 +2,3.931826,0,6.50129,7.194437,0,17.4,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13,1,0,0 +1,3.258096,0,6.907755,8.294049,0,8.7,1,0,0 +1,3.258096,0,6.907755,8.294049,0,8.7,1,0,0 +2,3.258096,0,6.907755,8.294049,0,8.7,1,0,0 +1,3.258096,0,6.907755,8.294049,0,8.7,1,0,0 +0,3.258096,0,6.907755,8.294049,0,8.7,1,0,0 +1,4.61512,1,6.855409,0,0,8.7,0,0,0 +0,4.61512,1,6.855409,0,0,8.7,0,0,0 +0,4.61512,1,6.855409,0,0,8.7,0,0,0 +13,4.61512,1,6.855409,0,0,30.4,0,0,0 +8,4.61512,1,6.855409,0,0,30.4,0,0,0 +11,4.61512,1,6.855409,0,0,30.4,0,0,0 +1,4.61512,1,6.907755,0,0,21.7,1,0,0 +4,4.61512,1,6.907755,0,0,21.7,1,0,0 +1,4.61512,1,6.907755,0,0,21.7,1,0,0 +2,4.61512,1,6.907755,0,0,21.7,1,0,0 +3,4.61512,1,6.907755,0,0,21.7,1,0,0 +5,4.61512,1,6.907755,0,1,30.4,0,1,0 +2,4.61512,1,6.907755,0,1,30.4,0,1,0 +3,4.61512,1,6.907755,0,1,30.4,0,1,0 +13,4.61512,1,6.907755,0,1,30.4,0,1,0 +6,4.61512,1,6.907755,0,1,30.4,0,1,0 +1,3.931826,0,6.536692,7.229839,0,13.73189,0,0,0 +0,3.931826,0,6.536692,7.229839,0,13.73189,0,0,0 +1,3.931826,0,6.536692,7.229839,0,13.73189,0,0,0 +2,3.931826,0,6.536692,7.229839,0,13.73189,0,0,0 +2,3.931826,0,6.536692,7.229839,0,13.73189,0,0,0 +3,3.931826,0,6.536692,7.229839,0,13.73189,0,0,0 +9,3.931826,0,6.536692,7.229839,1,13.73189,1,0,0 +7,3.931826,0,6.536692,7.229839,1,13.73189,1,0,0 +5,3.931826,0,6.536692,7.229839,1,13.73189,1,0,0 +0,3.931826,0,6.536692,7.229839,0,13.73189,0,0,0 +0,3.931826,0,6.536692,7.229839,0,13.73189,0,0,0 +1,3.931826,0,6.536692,7.229839,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +3,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +6,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +3,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +3,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +5,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +8,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +3,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +2,3.931826,0,6.907755,7.600903,0,0,0,0,0 +3,3.931826,0,6.907755,7.600903,0,0,0,0,0 +4,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +1,3.931826,0,6.907755,7.600903,0,0,0,0,0 +2,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +1,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +0,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +1,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +0,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +1,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +1,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +2,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +0,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +4,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +1,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +0,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +2,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +4,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +0,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +3,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +2,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +1,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,4.61512,1,6.802395,0,0,13,0,0,0 +0,4.61512,1,6.802395,0,0,13,0,0,0 +0,4.61512,1,6.802395,0,0,13,0,0,0 +0,4.61512,1,6.802395,0,0,13,0,0,0 +1,4.61512,1,6.802395,0,0,13,0,0,0 +0,4.61512,1,6.802395,0,0,13,0,0,0 +3,4.61512,1,6.802395,0,0,13.73189,0,0,0 +1,4.61512,1,6.802395,0,0,13.73189,0,0,0 +1,4.61512,1,6.802395,0,0,13.73189,0,0,0 +1,4.61512,1,6.802395,0,0,13.73189,0,0,0 +1,4.61512,1,6.802395,0,0,13.73189,0,0,0 +1,4.61512,1,6.802395,0,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +1,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +2,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +22,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +41,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +22,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +65,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +0,0,0,5.257495,0,0,8.7,1,0,0 +2,0,0,5.257495,0,0,8.7,1,0,0 +0,0,0,5.257495,0,0,8.7,1,0,0 +2,0,0,5.257495,0,0,17.4,1,0,0 +3,0,0,5.257495,0,0,17.4,1,0,0 +1,0,0,5.257495,0,0,17.4,1,0,0 +4,0,0,5.257495,0,0,13.73189,0,0,0 +0,0,0,5.257495,0,0,13.73189,0,0,0 +3,0,0,5.257495,0,0,13.73189,0,0,0 +1,0,0,4.094345,0,0,13.73189,0,0,0 +2,0,0,4.094345,0,0,13.73189,0,0,0 +1,0,0,4.094345,0,0,13.73189,0,0,0 +4,0,0,4.094345,0,0,13.73189,0,0,0 +2,0,0,4.094345,0,0,13.73189,0,0,0 +34,0,0,4.094345,0,0,13.73189,1,0,0 +22,0,0,4.094345,0,0,13.73189,1,0,0 +31,0,0,4.094345,0,0,13.73189,1,0,0 +4,0,0,4.094345,0,0,13.73189,1,0,0 +7,0,0,4.094345,0,0,13.73189,1,0,0 +2,0,0,4.094345,0,0,17.4,0,0,0 +4,0,0,4.094345,0,0,17.4,0,0,0 +2,0,0,4.094345,0,0,17.4,0,0,0 +10,0,0,4.094345,0,0,17.4,0,0,0 +12,0,0,4.094345,0,0,17.4,0,0,0 +28,0,0,4.094345,0,0,13,0,0,0 +9,0,0,4.094345,0,0,13,0,0,0 +1,0,0,4.094345,0,0,13,0,0,0 +9,0,0,4.094345,0,0,13,0,0,0 +24,0,0,4.094345,0,0,13,0,0,0 +6,0,0,5.552959,0,0,17.4,1,0,0 +5,0,0,5.552959,0,0,17.4,1,0,0 +6,0,0,5.552959,0,0,17.4,1,0,0 +11,0,0,5.552959,0,0,17.4,1,0,0 +10,0,0,5.552959,0,0,17.4,1,0,0 +4,0,0,4.430817,0,0,13,0,0,0 +4,0,0,4.430817,0,0,13,0,0,0 +5,0,0,4.430817,0,0,13,0,0,0 +4,0,0,4.430817,0,0,13,0,0,0 +10,0,0,4.430817,0,0,13,0,0,0 +16,0,0,4.430817,0,0,13,0,0,0 +8,0,0,4.430817,0,0,13,0,0,0 +7,0,0,4.430817,0,0,13,0,0,0 +5,0,0,4.430817,0,0,13,0,0,0 +7,0,0,4.430817,0,0,13,0,0,0 +4,0,0,4.430817,0,0,13,0,0,0 +1,0,0,4.430817,0,0,13,0,0,0 +4,0,0,4.430817,0,0,13,0,0,0 +4,0,0,4.430817,0,0,13,0,0,0 +2,0,0,4.430817,0,0,13,0,0,0 +4,0,0,4.430817,0,0,13.73189,1,0,0 +11,0,0,4.430817,0,0,13.73189,1,0,0 +13,0,0,4.430817,0,0,13.73189,1,0,0 +6,0,0,4.430817,0,0,13.73189,1,0,0 +9,0,0,4.430817,0,0,13.73189,1,0,0 +5,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +9,0,0,0,0,0,13.73189,0,0,0 +5,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +12,0,0,0,0,0,13.73189,1,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +8,0,0,0,0,0,13.73189,0,0,0 +18,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +4,0,0,0,0,0,13.73189,0,0,0 +6,0,0,0,0,0,13.73189,1,0,0 +5,0,0,0,0,0,13.73189,1,0,0 +6,0,0,0,0,0,13.73189,1,0,0 +2,3.931826,0,6.907755,7.600903,0,8.7,1,0,0 +0,3.931826,0,6.907755,7.600903,0,8.7,1,0,0 +4,3.931826,0,6.907755,7.600903,0,8.7,1,0,0 +0,3.931826,0,6.907755,7.600903,0,8.7,1,0,0 +0,3.931826,0,6.907755,7.600903,0,8.7,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13,1,0,0 +1,0,1,0,0,0,13.73189,0,0,0 +0,0,1,0,0,0,13.73189,0,0,0 +2,0,1,0,0,0,13.73189,0,0,0 +2,0,1,0,0,0,13.73189,0,0,0 +1,0,1,0,0,0,13.73189,0,0,0 +10,0,1,0,0,1,30.4,1,0,0 +3,0,1,0,0,1,30.4,1,0,0 +1,0,1,0,0,1,30.4,1,0,0 +2,0,1,0,0,1,30.4,1,0,0 +0,0,1,0,0,1,30.4,1,0,0 +3,0,1,0,0,0,0,0,0,0 +0,0,1,0,0,0,0,0,0,0 +0,0,1,0,0,0,0,0,0,0 +0,0,1,0,0,0,0,0,0,0 +3,0,1,0,0,0,0,0,0,0 +2,0,1,0,0,0,13.73189,0,0,0 +0,0,1,0,0,0,13.73189,0,0,0 +2,0,1,0,0,0,13.73189,0,0,0 +1,0,1,0,0,0,13.73189,0,0,0 +0,0,1,0,0,0,13.73189,0,0,0 +6,0,1,0,0,0,13.73189,0,0,0 +0,0,1,0,0,0,13.73189,0,0,0 +1,0,1,0,0,0,13.73189,0,0,0 +4,0,1,0,0,0,13.73189,0,0,0 +1,0,1,0,0,0,13.73189,0,0,0 +11,3.931826,0,6.906755,7.599902,0,13.73189,1,0,0 +7,3.931826,0,6.906755,7.599902,0,13.73189,1,0,0 +9,3.931826,0,6.906755,7.599902,0,13.73189,1,0,0 +6,3.931826,0,6.906755,7.599902,0,13.73189,1,0,0 +4,3.931826,0,6.906755,7.599902,0,13.73189,1,0,0 +8,3.931826,0,6.906755,7.599902,0,17.4,1,0,0 +6,3.931826,0,6.906755,7.599902,0,17.4,1,0,0 +6,3.931826,0,6.906755,7.599902,0,17.4,1,0,0 +6,3.931826,0,6.906755,7.599902,0,17.4,1,0,0 +12,3.931826,0,6.906755,7.599902,0,17.4,1,0,0 +3,3.931826,0,6.906755,7.599902,0,13.73189,1,0,0 +7,3.931826,0,6.906755,7.599902,0,13.73189,1,0,0 +13,3.931826,0,6.906755,7.599902,0,13.73189,1,0,0 +10,3.931826,0,6.906755,7.599902,0,13.73189,1,0,0 +2,3.931826,0,6.906755,7.599902,0,13.73189,1,0,0 +2,3.931826,0,6.906755,7.599902,0,26.1,1,0,0 +2,3.931826,0,6.906755,7.599902,0,26.1,1,0,0 +4,3.931826,0,6.906755,7.599902,0,26.1,1,0,0 +3,3.931826,0,6.906755,7.599902,0,26.1,1,0,0 +4,3.931826,0,6.906755,7.599902,0,26.1,1,0,0 +8,0,0,3.178054,0,1,13.73189,1,0,0 +1,0,0,3.178054,0,1,13.73189,1,0,0 +0,0,0,3.178054,0,1,13.73189,1,0,0 +0,3.931826,0,6.309918,7.003066,1,8.7,1,0,0 +0,3.931826,0,6.309918,7.003066,1,8.7,1,0,0 +0,3.931826,0,6.309918,7.003066,1,8.7,1,0,0 +0,3.931826,0,6.309918,7.003066,1,8.7,1,0,0 +0,3.931826,0,6.309918,7.003066,1,8.7,1,0,0 +1,3.931826,0,6.309918,7.003066,0,8.7,1,0,0 +0,3.931826,0,6.309918,7.003066,0,8.7,1,0,0 +0,3.931826,0,6.309918,7.003066,0,8.7,1,0,0 +4,3.931826,0,6.309918,7.003066,0,8.7,1,0,0 +10,3.931826,0,6.309918,7.003066,0,21.7,1,0,0 +22,3.931826,0,6.309918,7.003066,0,21.7,1,0,0 +8,3.931826,0,6.309918,7.003066,0,21.7,1,0,0 +22,3.931826,0,6.309918,7.003066,0,21.7,1,0,0 +18,3.931826,0,6.309918,7.003066,0,21.7,1,0,0 +7,4.61512,1,6.802395,0,0,4.3,0,0,0 +7,4.61512,1,6.802395,0,0,4.3,0,0,0 +2,4.61512,1,6.802395,0,0,4.3,0,0,0 +0,4.61512,1,6.802395,0,0,4.3,0,0,0 +3,4.61512,1,6.802395,0,0,4.3,0,0,0 +0,4.61512,1,6.802395,0,0,4.3,0,0,0 +6,4.61512,1,6.802395,0,0,0,0,0,0 +5,4.61512,1,6.802395,0,0,0,0,0,0 +7,4.61512,1,6.802395,0,0,0,0,0,0 +2,4.61512,1,6.802395,0,0,17.4,0,0,0 +8,4.61512,1,6.802395,0,0,17.4,0,0,0 +3,4.61512,1,6.802395,0,0,17.4,0,0,0 +3,4.61512,1,6.802395,0,0,13.73189,0,0,0 +4,4.61512,1,6.802395,0,0,13.73189,0,0,0 +2,4.61512,1,6.802395,0,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,13,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13,1,0,0 +3,3.931826,0,6.907755,7.600903,0,13,1,0,0 +1,3.931826,0,6.907755,7.600903,0,13,1,0,0 +2,3.931826,0,6.907755,7.600903,0,17.4,1,0,0 +2,3.931826,0,6.907755,7.600903,0,17.4,1,0,0 +1,3.931826,0,6.907755,7.600903,0,17.4,1,0,0 +1,3.931826,0,6.907755,7.600903,0,17.4,1,0,0 +2,3.931826,0,6.907755,7.600903,0,17.4,1,0,0 +1,0,0,6.408529,0,0,13,1,0,0 +2,0,0,6.408529,0,0,13,1,0,0 +1,0,0,6.408529,0,0,13,1,0,0 +5,0,0,6.408529,0,1,34.8,1,0,0 +9,0,0,6.408529,0,1,34.8,1,0,0 +11,0,0,6.408529,0,1,34.8,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +1,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +2,3.931826,0,6.907755,7.600903,0,8.7,0,0,0 +5,3.931826,0,5.003946,5.697093,0,17.4,0,0,0 +3,3.931826,0,5.003946,5.697093,0,17.4,0,0,0 +2,3.931826,0,5.003946,5.697093,0,17.4,0,0,0 +5,3.931826,0,5.003946,5.697093,0,17.4,0,0,0 +4,3.931826,0,5.003946,5.697093,0,17.4,0,0,0 +3,3.931826,0,5.003946,5.697093,0,13.73189,0,0,0 +2,3.931826,0,5.003946,5.697093,0,13.73189,0,0,0 +6,3.931826,0,5.003946,5.697093,0,13.73189,0,0,0 +4,3.931826,0,5.003946,5.697093,0,13.73189,0,0,0 +3,3.931826,0,5.003946,5.697093,0,13.73189,0,0,0 +4,3.931826,0,5.003946,5.697093,0,13.73189,1,0,0 +3,3.931826,0,5.003946,5.697093,0,13.73189,1,0,0 +0,3.931826,0,5.003946,5.697093,0,13.73189,1,0,0 +0,3.931826,0,5.003946,5.697093,0,13.73189,1,0,0 +3,3.931826,0,5.003946,5.697093,0,13.73189,1,0,0 +4,3.931826,0,5.003946,5.697093,0,13.73189,0,0,0 +2,3.931826,0,5.003946,5.697093,0,13.73189,0,0,0 +6,3.931826,0,5.003946,5.697093,0,13.73189,0,0,0 +0,3.931826,0,5.003946,5.697093,0,13.73189,0,0,0 +5,3.931826,0,5.003946,5.697093,0,13.73189,0,0,0 +3,4.61512,1,6.75227,0,0,13.73189,0,0,0 +0,4.61512,1,6.75227,0,0,13.73189,0,0,0 +1,4.61512,1,6.75227,0,0,13.73189,0,0,0 +2,4.61512,1,6.75227,0,0,13.73189,0,0,0 +0,4.61512,1,6.75227,0,0,13.73189,0,0,0 +6,4.61512,1,6.75227,0,0,13.73189,0,0,0 +0,4.61512,1,6.75227,0,0,13.73189,0,0,0 +3,4.61512,1,6.75227,0,0,13.73189,0,0,0 +1,4.61512,1,6.75227,0,0,13.73189,0,0,0 +0,4.61512,1,6.75227,0,0,13.73189,0,0,0 +2,4.61512,1,6.907755,0,0,13.73189,0,0,0 +4,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +7,4.61512,1,6.907755,0,0,13.73189,0,0,0 +4,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,3.931826,0,5.852202,6.190315,0,13.73189,1,0,0 +0,3.931826,0,5.852202,6.190315,0,13.73189,1,0,0 +1,3.931826,0,5.852202,6.190315,0,13.73189,1,0,0 +2,3.931826,0,5.852202,6.190315,1,30.4,0,1,0 +0,3.931826,0,5.852202,6.190315,1,30.4,0,1,0 +0,3.931826,0,5.852202,6.190315,1,30.4,0,1,0 +4,4.61512,1,6.907755,0,0,8.7,1,0,0 +1,4.61512,1,6.907755,0,0,8.7,1,0,0 +1,4.61512,1,6.907755,0,0,8.7,1,0,0 +3,4.61512,1,6.907755,0,0,13,1,0,0 +3,4.61512,1,6.907755,0,0,13,1,0,0 +1,4.61512,1,6.907755,0,0,13,1,0,0 +0,0,0,5.783825,0,0,13.73189,0,0,0 +0,0,0,5.783825,0,0,13.73189,0,0,0 +3,0,0,5.783825,0,0,13.73189,0,0,0 +6,0,0,5.783825,0,0,13.73189,0,0,0 +5,0,0,5.783825,0,0,13.73189,0,0,0 +1,0,0,5.783825,0,0,13.73189,0,0,0 +1,0,0,5.783825,0,0,13.73189,0,0,0 +4,0,0,5.783825,0,0,13.73189,0,0,0 +0,0,0,5.783825,0,0,13.73189,0,0,0 +1,0,0,5.783825,0,0,13.73189,0,0,0 +5,0,0,5.783825,0,0,8.7,0,0,0 +8,0,0,5.783825,0,0,8.7,0,0,0 +1,0,0,5.783825,0,0,8.7,0,0,0 +1,0,0,5.783825,0,0,8.7,0,0,0 +0,0,0,5.783825,0,0,8.7,0,0,0 +1,0,0,5.783825,0,0,13.73189,0,0,0 +1,0,0,5.783825,0,0,13.73189,0,0,0 +2,0,0,5.783825,0,0,13.73189,0,0,0 +1,0,0,5.783825,0,0,13.73189,0,0,0 +0,0,0,5.783825,0,0,13.73189,0,0,0 +4,0,0,5.783825,0,0,0,0,0,0 +4,0,0,5.783825,0,0,0,0,0,0 +9,0,0,5.783825,0,0,0,0,0,0 +4,0,0,5.783825,0,0,0,0,0,0 +7,0,0,5.783825,0,0,0,0,0,0 +0,0,0,5.783825,0,0,0,1,0,0 +2,0,0,5.783825,0,0,0,1,0,0 +0,0,0,5.783825,0,0,0,1,0,0 +4,0,0,5.783825,0,0,0,1,0,0 +0,0,0,5.783825,0,0,0,1,0,0 +0,0,0,5.783825,0,0,13.73189,0,0,0 +1,0,0,5.783825,0,0,13.73189,0,0,0 +1,0,0,5.783825,0,0,13.73189,0,0,0 +0,0,0,5.783825,0,0,13.73189,0,0,0 +0,0,0,5.783825,0,0,13.73189,0,0,0 +3,0,0,5.746203,0,1,26.1,0,0,1 +7,0,0,5.746203,0,1,26.1,0,0,1 +6,0,0,5.746203,0,1,26.1,0,0,1 +3,0,0,5.746203,0,0,17.4,0,1,0 +8,0,0,5.746203,0,0,17.4,0,1,0 +0,0,0,5.746203,0,0,17.4,0,1,0 +9,0,0,5.746203,0,1,34.8,0,0,1 +8,0,0,5.746203,0,1,34.8,0,0,1 +6,0,0,5.746203,0,1,34.8,0,0,1 +2,0,0,0,0,0,13.73189,0,0,0 +9,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +4,0,0,0,0,0,13.73189,0,0,0 +0,0,0,5.31812,0,0,13.73189,0,0,0 +0,0,0,5.31812,0,0,13.73189,0,0,0 +0,0,0,5.31812,0,0,13.73189,0,0,0 +0,0,0,5.31812,0,0,13.73189,0,0,0 +1,0,0,5.31812,0,0,13.73189,0,0,0 +12,3.258096,0,5.986452,6.79794,0,13.73189,0,0,0 +12,3.258096,0,5.986452,6.79794,0,13.73189,0,0,0 +7,3.258096,0,5.986452,6.79794,0,13.73189,0,0,0 +21,3.258096,0,5.986452,6.79794,1,30.4,0,0,1 +10,3.258096,0,5.986452,6.79794,1,30.4,0,0,1 +12,3.258096,0,5.986452,6.79794,1,30.4,0,0,1 +38,3.258096,0,5.986452,6.79794,0,26.1,1,0,0 +13,3.258096,0,5.986452,6.79794,0,26.1,1,0,0 +15,3.258096,0,5.986452,6.79794,0,26.1,1,0,0 +35,3.258096,0,5.986452,6.79794,0,13.73189,0,0,0 +46,3.258096,0,5.986452,6.79794,0,13.73189,0,0,0 +31,3.258096,0,5.986452,6.79794,0,13.73189,0,0,0 +13,3.258096,0,5.627621,7.013916,1,13.73189,0,0,0 +1,0,0,0,0,0,8.7,1,0,0 +2,0,0,0,0,0,8.7,1,0,0 +0,0,0,0,0,0,8.7,1,0,0 +1,0,0,0,0,0,13,0,1,0 +0,0,0,0,0,0,13,0,1,0 +0,0,0,0,0,0,13,0,1,0 +1,0,0,0,0,0,13,0,1,0 +1,0,0,0,0,0,13,0,1,0 +3,0,0,0,0,0,13,0,1,0 +0,4.61512,1,0,0,0,13.73189,0,0,0 +0,4.61512,1,0,0,0,13.73189,0,0,0 +1,4.61512,1,0,0,0,13.73189,0,0,0 +1,4.61512,1,0,0,1,17.4,0,0,0 +3,4.61512,1,0,0,1,17.4,0,0,0 +2,4.61512,1,0,0,1,17.4,0,0,0 +0,4.61512,1,0,0,0,13.73189,0,0,0 +0,4.61512,1,0,0,0,13.73189,0,0,0 +0,4.61512,1,0,0,0,13.73189,0,0,0 +2,4.61512,1,0,0,0,8.7,0,0,0 +0,4.61512,1,0,0,0,8.7,0,0,0 +0,4.61512,1,0,0,0,8.7,0,0,0 +0,4.61512,1,0,0,1,13,1,0,0 +0,4.61512,1,0,0,1,13,1,0,0 +0,4.61512,1,0,0,1,13,1,0,0 +0,4.61512,1,5.56452,0,0,13.73189,1,0,0 +13,4.61512,1,5.56452,0,0,13.73189,1,0,0 +6,4.61512,1,5.56452,0,0,13.73189,1,0,0 +1,4.61512,1,5.56452,0,0,13.73189,1,0,0 +4,4.61512,1,5.56452,0,0,13.73189,1,0,0 +3,0,0,5.556828,0,1,39.1,1,0,0 +7,0,0,5.556828,0,1,39.1,1,0,0 +10,0,0,5.556828,0,1,39.1,1,0,0 +0,4.61512,1,0,0,0,21.7,1,0,0 +0,4.61512,1,0,0,0,21.7,1,0,0 +0,4.61512,1,0,0,0,21.7,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13.73189,1,0,0 +9,3.258096,0,6.39693,7.783224,0,17.4,1,0,0 +15,3.258096,0,6.39693,7.783224,0,17.4,1,0,0 +19,3.258096,0,6.39693,7.783224,0,17.4,1,0,0 +2,3.258096,0,6.39693,7.783224,0,17.4,1,0,0 +3,3.258096,0,6.39693,7.783224,0,17.4,1,0,0 +9,3.258096,0,0,0,0,30.4,0,1,0 +12,3.258096,0,0,0,0,30.4,0,1,0 +9,3.258096,0,0,0,0,30.4,0,1,0 +8,3.258096,0,0,0,0,30.4,0,1,0 +12,3.258096,0,0,0,0,30.4,0,1,0 +2,3.258096,0,0,0,0,13.73189,1,0,0 +1,3.258096,0,0,0,0,13.73189,1,0,0 +2,3.258096,0,0,0,0,13.73189,1,0,0 +1,3.258096,0,0,0,0,13.73189,1,0,0 +2,3.258096,0,0,0,0,13.73189,1,0,0 +2,3.258096,0,0,0,0,8.7,1,0,0 +2,3.258096,0,0,0,0,8.7,1,0,0 +5,3.258096,0,0,0,0,8.7,1,0,0 +4,3.258096,0,0,0,0,8.7,1,0,0 +8,3.258096,0,0,0,0,8.7,1,0,0 +11,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +3,0,0,0,0,0,13.73189,1,0,0 +3,0,0,0,0,0,13.73189,1,0,0 +2,0,0,0,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +3,0,0,0,0,0,13.73189,1,0,0 +4,0,0,0,0,0,13.73189,1,0,0 +13,0,0,0,0,0,26.1,1,0,0 +14,0,0,0,0,0,26.1,1,0,0 +2,0,0,0,0,0,26.1,1,0,0 +10,0,0,0,0,0,13,1,0,0 +4,0,0,0,0,0,13,1,0,0 +3,0,0,0,0,0,13,1,0,0 +0,3.931826,0,0,5.111988,0,13.73189,0,0,0 +0,3.931826,0,0,5.111988,0,13.73189,0,0,0 +0,3.931826,0,0,5.111988,0,13.73189,0,0,0 +3,3.931826,0,0,5.111988,0,13.73189,0,0,0 +0,3.931826,0,0,5.111988,0,13.73189,0,0,0 +6,3.931826,0,0,5.111988,0,13.73189,0,0,0 +8,3.931826,0,0,5.111988,0,13.73189,0,0,0 +17,3.931826,0,0,5.111988,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +2,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +1,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +2,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +3,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +1,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,0,0,0,0,0,13.73189,0,1,0 +0,0,0,0,0,0,13.73189,0,1,0 +0,0,0,0,0,0,13.73189,0,1,0 +0,0,0,0,0,0,26.1,0,1,0 +0,0,0,0,0,0,26.1,0,1,0 +0,0,0,0,0,0,26.1,0,1,0 +0,0,0,0,0,0,13.73189,0,1,0 +0,0,0,0,0,0,13.73189,0,1,0 +0,0,0,0,0,0,13.73189,0,1,0 +1,0,0,4.983607,0,0,4.3,0,0,0 +6,0,0,4.983607,0,0,4.3,0,0,0 +2,0,0,4.983607,0,0,4.3,0,0,0 +9,0,0,4.983607,0,0,8.7,0,0,0 +3,0,0,4.983607,0,0,8.7,0,0,0 +3,0,0,4.983607,0,0,8.7,0,0,0 +5,0,0,5.277298,0,0,8.7,1,0,0 +2,0,0,5.277298,0,0,8.7,1,0,0 +3,0,0,5.277298,0,0,8.7,1,0,0 +2,0,0,5.277298,0,.12982,13.73189,0,0,0 +6,0,0,5.277298,0,.12982,13.73189,0,0,0 +2,0,0,5.277298,0,.12982,13.73189,0,0,0 +3,0,0,5.277298,0,0,13.73189,0,0,0 +2,0,0,5.277298,0,0,13.73189,0,0,0 +4,0,0,5.277298,0,0,13.73189,0,0,0 +3,0,0,5.277298,0,0,13.73189,0,0,0 +5,0,0,5.277298,0,0,13.73189,0,0,0 +4,0,0,5.277298,0,0,13.73189,0,0,0 +8,0,0,5.277298,0,0,21.7,0,0,0 +10,0,0,5.277298,0,0,21.7,0,0,0 +10,0,0,5.277298,0,0,21.7,0,0,0 +0,3.931826,0,5.988961,6.682108,0,13.73189,1,0,0 +1,3.931826,0,5.988961,6.682108,0,13.73189,1,0,0 +0,3.931826,0,5.988961,6.682108,0,13.73189,1,0,0 +0,3.931826,0,5.988961,6.682108,0,13.73189,1,0,0 +1,3.931826,0,5.988961,6.682108,0,13.73189,1,0,0 +7,3.931826,0,5.988961,6.682108,0,8.7,1,0,0 +10,3.931826,0,5.988961,6.682108,0,8.7,1,0,0 +4,3.931826,0,5.988961,6.682108,0,8.7,1,0,0 +0,3.931826,0,5.988961,6.682108,0,8.7,1,0,0 +1,3.931826,0,5.988961,6.682108,0,8.7,1,0,0 +9,3.931826,0,0,7.570443,0,13.73189,0,0,0 +1,3.931826,0,0,7.570443,0,13.73189,0,0,0 +2,3.931826,0,0,7.570443,0,13.73189,0,0,0 +4,3.931826,0,0,7.570443,0,13.73189,0,0,0 +0,3.931826,0,0,7.570443,0,13.73189,0,0,0 +1,3.931826,0,0,7.570443,0,13.73189,0,0,0 +0,3.931826,0,0,7.570443,0,13.73189,0,0,0 +0,3.931826,0,0,7.570443,0,13.73189,0,0,0 +0,3.931826,0,0,7.570443,0,13.73189,0,0,0 +0,3.931826,0,0,7.570443,0,13.73189,0,0,0 +8,3.931826,0,0,7.570443,0,13.73189,1,0,0 +5,3.931826,0,0,7.570443,0,13.73189,1,0,0 +0,3.931826,0,0,7.570443,0,13.73189,1,0,0 +0,3.931826,0,0,7.570443,0,13.73189,1,0,0 +0,3.931826,0,0,7.570443,0,13.73189,1,0,0 +3,3.931826,0,0,7.570443,0,13.73189,0,0,0 +1,3.931826,0,0,7.570443,0,13.73189,0,0,0 +0,3.931826,0,0,7.570443,0,13.73189,0,0,0 +0,3.931826,0,0,7.570443,0,13.73189,0,0,0 +0,3.931826,0,0,7.570443,0,13.73189,0,0,0 +9,3.258096,0,6.907755,8.294049,0,13,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13,1,0,0 +8,3.258096,0,6.907755,8.294049,0,13,1,0,0 +1,0,0,0,0,0,13.73189,0,1,0 +3,0,0,0,0,0,13.73189,0,1,0 +4,0,0,0,0,0,13.73189,0,1,0 +0,0,0,0,0,0,13.73189,1,0,0 +0,0,0,0,0,0,13.73189,1,0,0 +7,0,0,0,0,0,13.73189,1,0,0 +3,0,1,6.475433,0,0,13,0,0,0 +6,0,1,6.475433,0,0,13,0,0,0 +3,0,1,6.475433,0,0,13,0,0,0 +0,0,1,6.475433,0,0,0,0,0,0 +9,0,1,6.475433,0,0,0,0,0,0 +0,0,1,6.475433,0,0,0,0,0,0 +5,0,0,0,0,0,13.73189,0,0,0 +12,0,0,0,0,0,13.73189,0,0,0 +44,0,0,0,0,0,13.73189,0,0,0 +56,0,0,0,0,0,13.73189,0,0,0 +38,0,0,0,0,0,13.73189,0,0,0 +10,0,0,0,0,0,8.7,0,0,0 +4,0,0,0,0,0,8.7,0,0,0 +4,0,0,0,0,0,8.7,0,0,0 +1,0,0,0,0,0,8.7,0,0,0 +3,0,0,0,0,0,8.7,0,0,0 +0,0,0,4.094345,0,0,13.73189,0,0,0 +5,0,0,4.094345,0,0,13.73189,0,0,0 +0,0,0,4.094345,0,0,13.73189,0,0,0 +7,0,0,4.094345,0,0,13.73189,0,0,0 +7,0,0,4.094345,0,0,13.73189,0,0,0 +9,0,0,4.094345,0,0,13.73189,0,0,0 +3,0,0,4.094345,0,0,13.73189,0,0,0 +7,0,0,4.094345,0,0,13.73189,0,0,0 +4,0,0,4.094345,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,4.3,0,0,0 +5,4.61512,1,6.907755,0,0,4.3,0,0,0 +3,4.61512,1,6.907755,0,0,4.3,0,0,0 +3,4.61512,1,6.907755,0,0,8.7,0,0,0 +5,4.61512,1,6.907755,0,0,8.7,0,0,0 +1,4.61512,1,6.907755,0,0,8.7,0,0,0 +1,4.61512,1,0,0,0,0,0,0,0 +2,4.61512,1,0,0,0,0,0,0,0 +0,4.61512,1,0,0,0,0,0,0,0 +0,4.61512,1,0,0,0,0,0,0,0 +4,0,0,0,0,0,4.3,0,0,0 +5,0,0,0,0,0,4.3,0,0,0 +3,0,0,0,0,0,4.3,0,0,0 +8,0,0,0,0,0,0,0,0,0 +10,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0 +13,0,0,0,0,1,39.1,0,0,0 +10,0,0,0,0,1,39.1,0,0,0 +11,0,0,0,0,1,39.1,0,0,0 +5,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +3,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +2,3.258096,0,6.907755,8.294049,0,8.7,0,0,0 +13,3.258096,0,6.907755,8.294049,0,13,1,0,0 +16,3.258096,0,6.907755,8.294049,0,13,1,0,0 +7,3.258096,0,6.907755,8.294049,0,13,1,0,0 +4,3.931826,0,5.988961,6.682108,0,13.73189,1,0,0 +3,3.931826,0,5.988961,6.682108,0,13.73189,1,0,0 +0,3.931826,0,5.988961,6.682108,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,13,0,0,0 +0,4.61512,1,0,0,0,13,0,0,0 +0,4.61512,1,0,0,0,13,0,0,0 +1,4.61512,1,0,0,0,13,0,0,0 +1,4.61512,1,0,0,0,13,0,0,0 +0,4.61512,1,0,0,0,13.73189,0,0,0 +0,4.61512,1,0,0,0,13.73189,0,0,0 +1,4.61512,1,0,0,0,13.73189,0,0,0 +0,4.61512,1,0,0,0,13.73189,0,0,0 +0,4.61512,1,0,0,0,13.73189,0,0,0 +0,4.61512,1,0,0,0,8.7,0,0,0 +0,4.61512,1,0,0,0,8.7,0,0,0 +7,4.61512,1,0,0,0,8.7,0,0,0 +1,4.61512,1,0,0,0,8.7,0,0,0 +3,4.61512,1,0,0,0,8.7,0,0,0 +5,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +8,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +6,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +11,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +5,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +6,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +3,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +6,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +3,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +10,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +30,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +18,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +18,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +17,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +14,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +19,3.258096,0,6.907755,8.294049,1,26.1,1,0,0 +23,3.258096,0,6.907755,8.294049,1,26.1,1,0,0 +29,3.258096,0,6.907755,8.294049,1,26.1,1,0,0 +27,3.258096,0,6.907755,8.294049,1,26.1,1,0,0 +25,3.258096,0,6.907755,8.294049,1,26.1,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +7,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +6,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +2,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +1,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +6,3.258096,0,6.907755,8.294049,0,21.7,1,0,0 +5,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,4.61512,1,6.005269,0,0,13.73189,0,0,0 +0,4.61512,1,6.005269,0,0,13.73189,0,0,0 +0,4.61512,1,6.005269,0,0,13.73189,0,0,0 +0,4.61512,1,6.005269,0,0,13.73189,0,0,0 +1,4.61512,1,6.005269,0,0,13.73189,0,0,0 +0,4.61512,1,6.005269,0,0,13.73189,0,0,0 +0,4.61512,1,6.005269,0,0,13.73189,0,0,0 +0,4.61512,1,6.005269,0,0,13.73189,0,0,0 +0,4.61512,1,6.005269,0,0,13.73189,0,0,0 +0,4.61512,1,6.005269,0,0,13.73189,0,0,0 +0,4.61512,1,6.005269,0,0,13.73189,0,0,0 +1,4.61512,1,6.005269,0,0,13.73189,0,0,0 +1,4.61512,1,6.907755,0,0,8.7,0,0,0 +0,4.61512,1,6.907755,0,0,8.7,0,0,0 +0,4.61512,1,6.907755,0,0,8.7,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,8.7,0,0,0 +0,4.61512,1,6.907755,0,0,8.7,0,0,0 +0,4.61512,1,6.907755,0,0,8.7,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,0,0,0 +0,3.931826,0,6.620073,7.313221,0,4.3,0,0,0 +0,3.931826,0,6.620073,7.313221,0,4.3,0,0,0 +0,3.931826,0,6.620073,7.313221,0,4.3,0,0,0 +1,4.61512,1,6.907755,0,0,17.4,1,0,0 +5,4.61512,1,6.907755,0,0,17.4,1,0,0 +0,4.61512,1,6.907755,0,0,17.4,1,0,0 +0,4.61512,1,6.907755,0,0,17.4,1,0,0 +6,4.61512,1,6.907755,0,0,17.4,1,0,0 +3,4.61512,1,6.907755,0,0,21.7,1,0,0 +5,4.61512,1,6.907755,0,0,21.7,1,0,0 +1,4.61512,1,6.907755,0,0,21.7,1,0,0 +4,4.61512,1,6.907755,0,0,21.7,1,0,0 +1,4.61512,1,6.907755,0,0,21.7,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +3,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +1,4.61512,1,6.907755,0,0,13.73189,1,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +10,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +8,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +8,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +9,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +8,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +8,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +0,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,13.73189,0,0,0 +1,0,0,0,0,0,8.7,1,0,0 +0,0,0,0,0,0,8.7,1,0,0 +0,0,0,0,0,0,8.7,1,0,0 +2,0,0,0,0,0,21.7,1,0,0 +2,0,0,0,0,0,21.7,1,0,0 +1,0,0,0,0,0,21.7,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +6,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +8,0,0,4.61512,0,1,13.73189,0,0,0 +2,0,0,4.61512,0,1,13.73189,0,0,0 +6,0,0,4.61512,0,1,13.73189,0,0,0 +4,0,0,4.61512,0,1,13.73189,0,0,0 +3,0,0,4.61512,0,1,13.73189,0,0,0 +7,0,0,4.61512,0,0,13.73189,0,0,0 +6,0,0,4.61512,0,0,13.73189,0,0,0 +0,0,0,4.61512,0,0,13.73189,0,0,0 +0,0,0,4.61512,0,0,13.73189,0,0,0 +10,0,0,4.61512,0,0,13.73189,0,0,0 +9,0,0,4.61512,0,1,13.73189,0,0,0 +6,0,0,4.61512,0,1,13.73189,0,0,0 +9,0,0,4.61512,0,1,13.73189,0,0,0 +12,0,0,4.61512,0,1,13.73189,0,0,0 +0,0,0,4.61512,0,1,13.73189,0,0,0 +15,3.931826,0,5.991465,6.684612,0,8.7,1,0,0 +4,3.931826,0,5.991465,6.684612,0,8.7,1,0,0 +2,3.931826,0,5.991465,6.684612,0,8.7,1,0,0 +2,3.931826,0,5.389072,5.991465,0,13,0,0,0 +1,3.931826,0,5.389072,5.991465,0,13,0,0,0 +1,3.931826,0,5.389072,5.991465,0,13,0,0,0 +7,0,0,0,0,0,0,1,0,0 +2,0,0,0,0,0,0,1,0,0 +4,0,0,0,0,0,0,1,0,0 +1,0,0,0,0,0,0,1,0,0 +2,0,0,0,0,0,0,1,0,0 +4,0,0,0,0,0,13,1,0,0 +4,0,0,0,0,0,13,1,0,0 +8,0,0,0,0,0,13,1,0,0 +4,0,0,0,0,0,13,1,0,0 +4,0,0,0,0,0,13,1,0,0 +7,0,0,0,0,0,13.73189,0,0,0 +9,0,0,0,0,0,13.73189,0,0,0 +12,0,0,0,0,0,13.73189,0,0,0 +4,0,0,0,0,0,13.73189,0,0,0 +9,0,0,0,0,0,13.73189,0,0,0 +1,0,1,5.703783,0,0,13.73189,0,0,0 +0,0,1,5.703783,0,0,13.73189,0,0,0 +2,0,1,5.703783,0,0,13.73189,0,0,0 +2,0,1,5.703783,0,0,13.73189,0,0,0 +1,0,1,5.703783,0,0,13.73189,0,0,0 +4,0,1,5.703783,0,0,13.73189,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,0,1,0 +2,3.931826,0,6.39693,7.090077,0,13.73189,0,1,0 +5,3.931826,0,6.39693,7.090077,0,13.73189,0,1,0 +4,3.931826,0,6.39693,7.090077,0,13.73189,0,1,0 +4,3.931826,0,6.39693,7.090077,0,13.73189,0,0,0 +1,3.931826,0,6.39693,7.090077,0,13.73189,0,0,0 +0,3.931826,0,6.39693,7.090077,0,13.73189,0,0,0 +5,0,0,4.787492,0,0,13.73189,0,0,0 +11,0,0,4.787492,0,0,13.73189,0,0,0 +41,0,0,4.787492,0,0,13.73189,0,0,0 +2,0,0,4.787492,0,0,13.73189,0,0,0 +3,0,0,4.787492,0,0,13.73189,0,0,0 +3,0,0,4.787492,0,0,13.73189,0,0,0 +7,0,0,4.787492,0,0,13.73189,1,0,0 +10,0,0,4.787492,0,0,13.73189,1,0,0 +10,0,0,4.787492,0,0,13.73189,1,0,0 +7,0,1,0,0,1,13.73189,0,0,1 +6,0,1,0,0,1,13.73189,0,0,1 +11,0,1,0,0,1,13.73189,0,0,1 +4,0,1,0,0,0,13.73189,1,0,0 +7,0,1,0,0,0,13.73189,1,0,0 +6,0,1,0,0,0,13.73189,1,0,0 +2,0,1,0,0,1,13.73189,0,1,0 +2,0,1,0,0,1,13.73189,0,1,0 +4,0,1,0,0,1,13.73189,0,1,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +3,3.931826,0,6.907755,7.600903,0,17.4,1,0,0 +6,3.931826,0,6.907755,7.600903,0,17.4,1,0,0 +13,3.931826,0,6.907755,7.600903,0,17.4,1,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,4.3,0,1,0 +1,3.931826,0,6.907755,7.600903,0,4.3,0,1,0 +0,3.931826,0,6.907755,7.600903,0,4.3,0,1,0 +2,3.931826,0,6.907755,7.600903,0,4.3,0,1,0 +0,3.931826,0,6.907755,7.600903,0,4.3,0,1,0 +0,3.931826,0,6.907755,7.600903,0,17.4,1,0,0 +0,3.931826,0,6.907755,7.600903,0,17.4,1,0,0 +0,3.931826,0,6.907755,7.600903,0,17.4,1,0,0 +6,3.931826,0,6.907755,7.600903,0,17.4,1,0,0 +2,3.931826,0,6.907755,7.600903,0,17.4,1,0,0 +0,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +1,4.61512,1,6.395262,0,0,8.7,1,0,0 +0,4.61512,1,6.395262,0,0,8.7,1,0,0 +2,4.61512,1,6.395262,0,0,8.7,1,0,0 +1,4.61512,1,6.395262,0,1,17.4,0,1,0 +0,4.61512,1,6.395262,0,1,17.4,0,1,0 +2,4.61512,1,6.395262,0,1,17.4,0,1,0 +0,4.61512,1,6.395262,0,0,13.73189,1,0,0 +0,4.61512,1,6.395262,0,0,13.73189,1,0,0 +2,4.61512,1,6.395262,0,0,13.73189,1,0,0 +0,4.61512,1,0,0,0,17.4,1,0,0 +0,4.61512,1,0,0,0,17.4,1,0,0 +0,4.61512,1,0,0,0,17.4,1,0,0 +0,4.61512,1,0,0,0,17.4,1,0,0 +0,4.61512,1,0,0,0,8.7,1,0,0 +0,4.61512,1,0,0,0,8.7,1,0,0 +0,4.61512,1,0,0,0,8.7,1,0,0 +0,4.61512,1,0,0,0,8.7,1,0,0 +0,4.61512,1,0,0,0,8.7,1,0,0 +0,4.61512,1,0,0,0,34.8,0,1,0 +0,4.61512,1,0,0,0,34.8,0,1,0 +0,4.61512,1,0,0,0,34.8,0,1,0 +0,4.61512,1,0,0,0,34.8,0,1,0 +0,4.61512,1,0,0,0,34.8,0,1,0 +0,4.61512,1,0,0,0,4.3,0,0,0 +0,4.61512,1,0,0,0,4.3,0,0,0 +0,4.61512,1,0,0,0,4.3,0,0,0 +0,4.61512,1,0,0,0,4.3,0,0,0 +0,4.61512,1,0,0,0,4.3,0,0,0 +0,4.61512,1,6.907755,0,0,13,0,0,0 +0,4.61512,1,6.907755,0,0,13,0,0,0 +0,4.61512,1,6.907755,0,0,13.73189,1,0,0 +7,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +5,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +4,3.258096,0,6.907755,8.294049,0,17.4,1,0,0 +2,3.258096,0,6.907755,8.294049,0,26.1,0,0,0 +2,3.258096,0,6.907755,8.294049,0,26.1,0,0,0 +15,3.258096,0,6.907755,8.294049,0,26.1,0,0,0 +0,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +2,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +1,3.258096,0,6.907755,8.294049,0,4.3,0,0,0 +3,4.61512,1,6.308098,0,0,8.7,0,0,0 +1,4.61512,1,6.308098,0,0,8.7,0,0,0 +3,4.61512,1,6.308098,0,0,8.7,0,0,0 +4,4.61512,1,6.308098,0,0,21.7,0,0,0 +3,4.61512,1,6.308098,0,0,21.7,0,0,0 +0,4.61512,1,6.308098,0,0,21.7,0,0,0 +7,4.61512,1,6.907755,0,1,8.7,0,1,0 +8,4.61512,1,6.907755,0,1,8.7,0,1,0 +9,4.61512,1,6.907755,0,1,8.7,0,1,0 +8,4.61512,1,6.907755,0,1,8.7,0,1,0 +7,4.61512,1,6.907755,0,1,8.7,0,1,0 +1,0,0,0,0,0,13.73189,1,0,0 +1,0,0,0,0,0,13.73189,1,0,0 +5,0,0,0,0,0,13.73189,1,0,0 +5,0,0,4.276666,0,0,13.73189,0,0,0 +3,0,0,4.276666,0,0,13.73189,0,0,0 +2,0,0,4.276666,0,0,13.73189,0,0,0 +0,4.61512,1,0,0,0,13.73189,0,1,0 +1,4.61512,1,0,0,0,13.73189,0,1,0 +0,4.61512,1,0,0,0,13.73189,0,1,0 +0,4.61512,1,0,0,0,13.73189,0,1,0 +0,4.61512,1,0,0,0,13.73189,0,1,0 +1,0,0,0,0,1,13.73189,0,1,0 +1,0,0,0,0,1,13.73189,0,1,0 +1,0,0,0,0,1,13.73189,0,1,0 +7,0,0,0,0,1,13.73189,0,1,0 +1,0,0,0,0,1,13.73189,0,1,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +4,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,1,0,0 +0,3.258096,0,5.828946,7.21524,0,13.73189,0,1,0 +0,3.258096,0,5.828946,7.21524,0,13.73189,0,1,0 +3,3.931826,0,6.683361,7.376508,0,13.73189,0,0,0 +0,3.931826,0,6.683361,7.376508,0,13.73189,0,0,0 +0,3.931826,0,6.683361,7.376508,0,13.73189,0,0,0 +8,0,0,0,0,0,13.73189,0,0,0 +9,0,0,0,0,0,13.73189,0,0,0 +3,0,0,0,0,0,13.73189,0,0,0 +2,0,0,0,0,0,13.73189,0,0,0 +6,0,0,0,0,0,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +3,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.73189,0,0,0 +1,0,1,0,0,1,13.73189,0,0,0 +0,0,1,0,0,1,13.73189,0,0,0 +3,0,1,0,0,1,13.73189,0,0,0 +9,0,1,0,0,1,13.73189,0,0,0 +1,0,1,0,0,1,13.73189,0,0,0 +0,4.61512,1,5.645447,0,0,13.73189,0,0,0 +0,4.61512,1,5.645447,0,0,13.73189,0,0,0 +0,4.61512,1,5.645447,0,0,13.73189,0,0,0 +16,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +6,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +9,3.931826,0,6.907755,7.600903,0,13.73189,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.73189,0,0,0 +9,0,0,5.783825,0,.0327869,13.73189,0,0,0 +23,0,0,5.783825,0,.0327869,13.73189,0,0,0 +41,0,0,5.783825,0,.0327869,13.73189,0,0,0 +20,0,0,5.783825,0,.0327869,13.73189,0,0,0 +21,0,0,5.783825,0,.0327869,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +1,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +0,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +15,0,0,6.126869,0,.0327869,13.73189,0,0,0 +7,0,0,6.126869,0,.0327869,13.73189,0,0,0 +5,0,0,6.126869,0,.0327869,13.73189,0,0,0 +0,0,0,6.126869,0,.0327869,13.73189,0,0,0 +5,0,1,4.976734,0,.0327869,13.73189,0,0,0 +8,0,1,4.976734,0,.0327869,13.73189,0,0,0 +13,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +7,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +5,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +8,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +5,4.61512,1,0,0,.0327869,13.73189,0,0,0 +1,4.61512,1,0,0,.0327869,13.73189,0,0,0 +0,4.61512,1,0,0,.0327869,13.73189,0,0,0 +2,4.61512,1,0,0,.0327869,13.73189,0,0,0 +1,0,0,0,0,.0327869,13.73189,0,0,0 +2,0,0,0,0,.0327869,13.73189,0,0,0 +13,3.931826,0,6.109248,5.786897,.0327869,13.73189,0,0,0 +6,3.931826,0,6.109248,5.786897,.0327869,13.73189,0,0,0 +3,3.931826,0,6.109248,5.786897,.0327869,13.73189,0,0,0 +0,3.931826,0,6.109248,5.786897,.0327869,13.73189,0,0,0 +4,3.258096,0,6.907755,8.294049,.0327869,13.73189,0,0,0 +13,0,0,5.783825,0,.0327869,13.73189,0,0,0 +2,0,0,5.783825,0,.0327869,13.73189,0,0,0 +1,0,0,5.783825,0,.0327869,13.73189,0,0,0 +0,0,0,0,0,.0327869,13.73189,0,0,0 +0,0,0,0,0,.0327869,13.73189,0,0,0 +10,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +5,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +2,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +8,3.258096,0,6.907755,8.294049,.0327869,13.73189,0,0,0 +4,3.258096,0,6.907755,8.294049,.0327869,13.73189,0,0,0 +4,4.61512,1,6.802395,0,.0327869,13.73189,0,0,0 +2,4.61512,1,6.802395,0,.0327869,13.73189,0,0,0 +6,0,0,5.777652,0,.0327869,13.73189,0,0,0 +3,0,0,5.777652,0,.0327869,13.73189,0,0,0 +2,0,0,5.777652,0,.0327869,13.73189,0,0,0 +5,0,0,5.777652,0,.0327869,13.73189,0,0,0 +9,0,0,0,0,.0327869,13.73189,0,0,0 +7,0,0,0,0,.0327869,13.73189,0,0,0 +9,3.258096,0,6.907755,8.294049,.0327869,13.73189,0,0,0 +22,3.258096,0,6.907755,8.294049,.0327869,13.73189,0,0,0 +5,3.258096,0,6.907755,8.294049,.0327869,13.73189,0,0,0 +2,3.258096,0,6.907755,8.294049,.0327869,13.73189,0,0,0 +8,3.258096,0,6.907755,8.294049,.0327869,13.73189,0,0,0 +1,3.258096,0,6.907755,8.294049,.0327869,13.73189,0,0,0 +2,0,0,4.094345,0,.0327869,13.73189,0,0,0 +3,0,0,4.094345,0,.0327869,13.73189,0,0,0 +7,0,0,0,0,.0327869,13.73189,0,0,0 +1,0,0,0,0,.0327869,13.73189,0,0,0 +3,0,0,0,0,.0327869,13.73189,0,0,0 +2,0,0,0,0,.0327869,13.73189,0,0,0 +3,4.61512,1,6.791222,0,.0327869,13.73189,0,0,0 +1,4.61512,1,6.791222,0,.0327869,13.73189,0,0,0 +2,4.61512,1,6.791222,0,.0327869,13.73189,0,0,0 +6,4.61512,1,6.791222,0,.0327869,13.73189,0,0,0 +13,0,0,0,0,.0327869,13.73189,0,0,0 +4,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +5,3.258096,0,5.988961,7.375256,.0327869,13.73189,0,0,0 +5,3.258096,0,5.988961,7.375256,.0327869,13.73189,0,0,0 +1,3.258096,0,5.988961,7.375256,.0327869,13.73189,0,0,0 +3,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +0,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +0,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +6,0,0,5.31812,0,.0327869,13.73189,0,0,0 +1,0,0,5.31812,0,.0327869,13.73189,0,0,0 +2,0,0,5.31812,0,.0327869,13.73189,0,0,0 +6,0,0,0,0,.0327869,13.73189,0,0,0 +4,0,0,0,0,.0327869,13.73189,0,0,0 +7,0,0,0,0,.0327869,13.73189,0,0,0 +7,3.931826,0,5.298317,5.991465,.0327869,13.73189,0,0,0 +2,3.931826,0,5.298317,5.991465,.0327869,13.73189,0,0,0 +3,3.931826,0,5.298317,5.991465,.0327869,13.73189,0,0,0 +7,3.931826,0,6.907755,7.600903,.0327869,13.73189,0,0,0 +4,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +1,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +0,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +11,3.258096,0,6.907755,8.294049,.0327869,13.73189,0,0,0 +11,0,0,4.983607,0,.0327869,13.73189,0,0,0 +1,4.61512,1,4.317488,0,.0327869,13.73189,0,0,0 +0,4.61512,1,4.317488,0,.0327869,13.73189,0,0,0 +0,4.61512,1,4.317488,0,.0327869,13.73189,0,0,0 +18,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +5,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +2,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +12,0,0,0,0,.0327869,13.73189,0,0,0 +8,0,0,0,0,.0327869,13.73189,0,0,0 +8,0,1,6.109248,0,.0327869,13.73189,0,0,0 +15,0,0,0,0,.0327869,13.73189,0,0,0 +6,0,0,0,0,.0327869,13.73189,0,0,0 +6,3.931826,0,6.395262,7.088409,.0327869,13.73189,0,0,0 +6,3.931826,0,6.395262,7.088409,.0327869,13.73189,0,0,0 +4,0,0,5.783825,0,.0327869,13.73189,0,0,0 +3,0,0,5.783825,0,.0327869,13.73189,0,0,0 +8,0,0,0,0,.0327869,13.73189,0,0,0 +6,0,0,0,0,.0327869,13.73189,0,0,0 +20,0,0,4.61512,0,.0327869,13.73189,0,0,0 +14,0,0,4.61512,0,.0327869,13.73189,0,0,0 +2,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +0,4.61512,1,6.907755,0,.0327869,13.73189,0,0,0 +0,4.61512,1,0,0,.0327869,13.73189,0,0,0 +5,4.61512,1,0,0,.0327869,13.73189,0,0,0 +7,0,0,0,0,.0327869,13.73189,0,0,0 +6,3.258096,0,0,0,.0327869,13.73189,0,0,0 +2,0,1,0,0,.0327869,13.73189,0,0,0 +7,0,0,0,0,.0327869,13.73189,0,0,0 +5,0,0,5.552959,0,.0327869,13.73189,0,0,0 +0,4.61512,1,5.843544,0,.0327869,13.73189,0,0,0 +2,4.61512,1,0,0,.0327869,13.73189,0,0,0 +4,3.258096,0,6.39693,7.783224,.0327869,13.73189,0,0,0 +7,0,1,4.787492,0,.0327869,13.73189,0,0,0 +13,4.61512,1,5.924256,0,.0327869,13.73189,0,0,0 +2,0,1,5.703783,5.755076,0,13.8,0,0,0 +1,0,1,5.703783,5.755076,0,13.8,0,0,0 +0,0,1,5.703783,5.755076,0,13.8,0,0,0 +0,4.564348,0,6.309918,6.361212,0,6.9,1,0,0 +0,4.564348,0,6.309918,6.361212,0,6.9,1,0,0 +3,4.564348,0,6.309918,6.361212,0,6.9,1,0,0 +3,4.564348,0,6.309918,6.361212,0,6.9,1,0,0 +0,4.564348,0,6.309918,6.361212,0,6.9,1,0,0 +1,4.564348,0,6.309918,6.361212,0,10.3,1,0,0 +3,4.564348,0,6.309918,6.361212,0,10.3,1,0,0 +0,4.564348,0,6.309918,6.361212,0,10.3,1,0,0 +0,4.564348,0,6.309918,6.361212,0,10.3,1,0,0 +0,4.564348,0,6.309918,6.361212,0,10.3,1,0,0 +1,0,0,5.187609,0,0,10.3,1,0,0 +0,0,0,5.187609,0,0,10.3,1,0,0 +2,0,0,5.187609,0,0,10.3,1,0,0 +2,0,0,5.187609,0,0,27.6,1,0,0 +3,0,0,5.187609,0,0,27.6,1,0,0 +6,0,0,5.187609,0,0,27.6,1,0,0 +3,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +2,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +9,0,1,6.109248,6.160541,0,6.9,0,0,0 +19,0,1,6.109248,6.160541,0,11.84267,0,0,0 +6,0,1,6.109248,6.160541,0,11.84267,0,0,0 +7,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +5,0,1,6.109248,6.160541,0,11.84267,0,0,0 +6,0,1,6.109248,6.160541,0,11.84267,0,0,0 +4,0,1,6.109248,6.160541,0,24.1,1,0,0 +5,0,1,6.109248,6.160541,0,24.1,1,0,0 +2,0,1,6.109248,6.160541,0,24.1,1,0,0 +2,3.258096,0,6.907755,8.294049,0,20.7,1,0,0 +0,3.258096,0,6.907755,8.294049,0,20.7,1,0,0 +2,3.258096,0,6.907755,8.294049,0,20.7,1,0,0 +0,3.258096,0,6.907755,8.294049,0,20.7,1,0,0 +2,3.258096,0,6.907755,8.294049,0,20.7,1,0,0 +1,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +1,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +3,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,1,0,0 +3,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +6,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,4.564348,0,4.405865,5.374791,0,0,0,0,0 +0,4.564348,0,4.405865,5.374791,0,0,0,0,0 +0,4.564348,0,4.405865,5.374791,0,0,0,0,0 +1,4.564348,0,4.405865,5.374791,1,20.7,1,0,0 +1,4.564348,0,4.405865,5.374791,1,20.7,1,0,0 +0,4.564348,0,4.405865,5.374791,1,20.7,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +4,0,0,0,0,0,6.9,1,0,0 +14,0,0,0,0,0,13.8,1,0,0 +10,0,0,0,0,0,13.8,1,0,0 +22,0,0,0,0,0,13.8,1,0,0 +1,0,1,0,6.160541,0,10.3,0,0,0 +1,0,1,0,6.160541,0,10.3,0,0,0 +0,0,1,0,6.160541,0,10.3,0,0,0 +3,0,1,0,6.160541,0,0,0,0,0 +2,0,1,0,6.160541,0,0,0,0,0 +0,0,1,0,6.160541,0,0,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +3,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +3,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +3,0,1,0,5.061929,0,10.3,0,0,0 +7,0,1,0,5.061929,0,10.3,0,0,0 +13,0,1,0,5.061929,0,10.3,0,0,0 +4,0,0,6.177778,0,0,13.8,0,0,0 +3,0,0,6.177778,0,0,13.8,0,0,0 +3,0,0,6.177778,0,0,13.8,0,0,0 +4,0,0,6.177778,0,0,13.8,0,0,0 +8,0,0,6.177778,0,0,13.8,0,0,0 +2,4.564348,0,5.981894,6.365746,0,11.84267,1,0,0 +0,4.564348,0,5.981894,6.365746,0,11.84267,1,0,0 +1,4.564348,0,5.981894,6.365746,0,11.84267,1,0,0 +2,4.564348,0,5.981894,6.365746,0,10.3,1,0,0 +8,4.564348,0,5.981894,6.365746,0,10.3,1,0,0 +2,4.564348,0,5.981894,6.365746,0,10.3,1,0,0 +0,4.564348,0,5.981894,6.365746,1,27.6,1,0,0 +3,4.564348,0,5.981894,6.365746,1,27.6,1,0,0 +6,4.564348,0,5.981894,6.365746,1,27.6,1,0,0 +3,4.564348,0,5.981894,6.365746,0,11.84267,1,0,0 +6,4.564348,0,5.981894,6.365746,0,11.84267,1,0,0 +1,4.564348,0,5.981894,6.365746,0,11.84267,1,0,0 +0,4.564348,0,5.981894,6.365746,0,11.84267,1,0,0 +2,4.564348,0,5.981894,6.365746,0,11.84267,1,0,0 +3,4.564348,0,5.981894,6.365746,0,11.84267,1,0,0 +0,0,1,5.460734,6.160541,0,11.84267,0,0,0 +1,0,1,5.460734,6.160541,0,11.84267,0,0,0 +3,0,1,5.460734,6.160541,0,11.84267,0,0,0 +8,0,1,5.460734,6.160541,0,11.84267,0,0,0 +3,0,1,5.460734,6.160541,0,11.84267,0,0,0 +1,0,1,5.460734,6.160541,0,11.84267,0,0,0 +3,0,1,5.460734,6.160541,0,11.84267,0,0,0 +2,0,1,5.460734,6.160541,0,11.84267,0,0,0 +1,0,1,5.460734,6.160541,0,11.84267,0,0,0 +2,0,1,5.460734,6.160541,0,11.84267,0,0,0 +1,0,1,5.460734,6.160541,0,3.4,0,0,0 +1,0,1,5.460734,6.160541,0,3.4,0,0,0 +0,0,1,5.460734,6.160541,0,3.4,0,0,0 +1,0,1,5.460734,6.160541,0,3.4,0,0,0 +1,0,1,5.460734,6.160541,0,3.4,0,0,0 +4,0,1,5.460734,6.160541,0,11.84267,0,0,0 +2,0,1,5.460734,6.160541,0,11.84267,0,0,0 +3,0,1,5.460734,6.160541,0,11.84267,0,0,0 +1,0,1,5.460734,6.160541,0,11.84267,0,0,0 +4,0,1,5.460734,6.160541,0,11.84267,0,0,0 +1,0,1,5.460734,6.160541,0,3.4,0,0,0 +1,0,1,5.460734,6.160541,0,3.4,0,0,0 +0,0,1,5.460734,6.160541,0,3.4,0,0,0 +1,0,1,5.460734,6.160541,0,3.4,0,0,0 +1,0,1,5.460734,6.160541,0,3.4,0,0,0 +3,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +8,3.258096,0,6.907755,8.294049,0,0,1,0,0 +2,3.258096,0,6.907755,8.294049,0,0,1,0,0 +0,3.258096,0,6.907755,8.294049,0,0,1,0,0 +12,0,1,0,5.061929,1,27.6,1,0,0 +1,0,1,0,5.061929,1,27.6,1,0,0 +5,0,1,0,5.061929,1,27.6,1,0,0 +1,0,1,6.39693,6.160541,0,11.84267,0,0,0 +0,0,1,6.39693,6.160541,0,11.84267,0,0,0 +2,0,1,6.39693,6.160541,1,10.3,1,0,0 +1,0,1,6.39693,6.160541,1,10.3,1,0,0 +7,0,1,6.39693,6.160541,1,34.5,0,0,0 +2,0,1,6.39693,6.160541,1,34.5,0,0,0 +9,0,0,0,0,0,10.3,1,0,0 +3,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +3,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +2,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +3,3.258096,0,6.907755,8.294049,0,3.4,1,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,1,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,1,0,0 +1,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +3,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +0,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +3,0,0,4.730568,0,0,3.4,0,0,0 +1,0,0,4.730568,0,0,3.4,0,0,0 +1,0,0,4.730568,0,0,3.4,0,0,0 +7,0,0,5.330978,0,0,11.84267,0,0,0 +7,0,0,5.330978,0,0,11.84267,0,0,0 +7,0,0,5.330978,0,0,11.84267,0,0,0 +11,0,0,5.330978,0,0,11.84267,0,0,0 +6,0,0,5.330978,0,0,11.84267,0,0,0 +2,0,0,5.330978,0,0,0,0,0,0 +2,0,0,5.330978,0,0,0,0,0,0 +4,0,0,5.330978,0,0,0,0,0,0 +1,0,0,5.330978,0,0,0,0,0,0 +4,0,0,5.330978,0,0,0,0,0,0 +1,0,0,5.330978,0,0,3.4,0,0,0 +2,0,0,5.330978,0,0,3.4,0,0,0 +7,0,0,5.330978,0,0,3.4,0,0,0 +5,0,0,5.330978,0,0,3.4,0,0,0 +7,0,0,5.330978,0,0,3.4,0,0,0 +12,0,0,0,0,0,31,0,0,0 +6,0,0,0,0,0,31,0,0,0 +7,0,0,0,0,0,31,0,0,0 +7,0,0,0,0,0,31,0,0,0 +8,0,0,0,0,0,31,0,0,0 +7,0,0,0,0,1,31,0,0,0 +7,0,0,0,0,1,31,0,0,0 +5,0,0,0,0,1,31,0,0,0 +5,0,0,0,0,1,31,0,0,0 +6,0,0,0,0,1,31,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +6,0,0,0,0,0,0,0,0,0 +7,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +4,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +8,0,0,0,0,0,11.84267,0,0,0 +4,0,0,0,0,0,11.84267,0,0,0 +4,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +1,0,0,5.641907,0,0,11.84267,0,0,0 +12,0,0,5.641907,0,0,11.84267,0,0,0 +14,0,0,5.641907,0,0,11.84267,0,0,0 +3,0,0,5.641907,0,1,17.2,0,0,0 +3,0,0,5.641907,0,1,17.2,0,0,0 +2,0,0,5.641907,0,1,17.2,0,0,0 +3,0,0,5.641907,0,0,13.8,0,0,0 +3,0,0,5.641907,0,0,13.8,0,0,0 +1,0,0,5.641907,0,0,13.8,0,0,0 +4,0,0,0,0,0,11.84267,0,0,0 +4,0,0,0,0,0,11.84267,0,0,0 +5,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +5,0,0,0,0,0,11.84267,0,0,0 +4,0,1,5.617753,6.160541,0,11.84267,0,0,0 +0,0,1,5.617753,6.160541,0,11.84267,0,0,0 +0,0,1,5.617753,6.160541,0,11.84267,0,0,0 +0,0,1,5.617753,6.160541,0,11.84267,0,0,0 +5,0,1,5.617753,6.160541,0,11.84267,0,0,0 +2,0,1,5.617753,6.160541,0,6.9,0,0,0 +3,0,1,5.617753,6.160541,0,6.9,0,0,0 +1,0,1,5.617753,6.160541,0,6.9,0,0,0 +2,0,1,5.617753,6.160541,0,6.9,0,0,0 +0,0,1,5.617753,6.160541,0,6.9,0,0,0 +8,0,1,5.617753,6.160541,1,10.3,0,0,0 +3,0,1,5.617753,6.160541,1,10.3,0,0,0 +1,0,1,5.617753,6.160541,1,10.3,0,0,0 +1,0,1,5.617753,6.160541,1,10.3,0,0,0 +3,0,1,5.617753,6.160541,1,10.3,0,0,0 +5,0,0,0,0,0,6.9,0,0,0 +6,0,0,0,0,0,6.9,0,0,0 +5,0,0,0,0,0,6.9,0,0,0 +6,0,0,0,0,0,17.2,1,0,0 +27,0,0,0,0,0,17.2,1,0,0 +15,0,0,0,0,0,17.2,1,0,0 +1,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0 +2,0,0,5.878744,0,0,11.84267,1,0,0 +10,0,0,5.878744,0,0,11.84267,1,0,0 +6,0,0,5.878744,0,0,11.84267,1,0,0 +3,0,0,5.878744,0,0,13.8,1,0,0 +7,0,0,5.878744,0,0,13.8,1,0,0 +3,0,0,5.878744,0,0,13.8,1,0,0 +1,0,0,5.878744,0,0,6.9,1,0,0 +5,0,0,5.878744,0,0,6.9,1,0,0 +5,0,0,5.878744,0,0,6.9,1,0,0 +9,0,0,5.878744,0,0,11.84267,1,0,0 +8,0,0,5.878744,0,0,11.84267,1,0,0 +4,0,0,5.878744,0,0,11.84267,1,0,0 +0,4.564348,0,6.547474,6.943732,0,0,0,0,0 +3,4.564348,0,6.547474,6.943732,0,0,0,0,0 +0,4.564348,0,6.547474,6.943732,0,0,0,0,0 +0,4.564348,0,6.547474,6.943732,0,0,0,0,0 +0,4.564348,0,6.547474,6.943732,0,0,0,0,0 +0,4.564348,0,6.547474,6.943732,0,17.2,0,0,0 +2,4.564348,0,6.547474,6.943732,0,17.2,0,0,0 +0,4.564348,0,6.547474,6.943732,0,17.2,0,0,0 +4,4.564348,0,6.547474,6.943732,0,17.2,0,0,0 +1,4.564348,0,6.547474,6.943732,0,17.2,0,0,0 +1,3.258096,0,6.804725,8.19102,0,10.3,1,0,0 +1,3.258096,0,6.804725,8.19102,0,10.3,1,0,0 +1,3.258096,0,6.804725,8.19102,0,10.3,1,0,0 +4,3.258096,0,6.804725,8.19102,0,6.9,0,0,0 +2,3.258096,0,6.804725,8.19102,0,6.9,0,0,0 +0,3.258096,0,6.804725,8.19102,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +3,0,1,6.109248,6.160541,0,11.84267,0,0,0 +5,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +6,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,3.258096,0,5.298317,6.684612,0,27.6,0,0,0 +0,3.258096,0,5.298317,6.684612,0,27.6,0,0,0 +19,3.258096,0,5.298317,6.684612,0,27.6,0,0,0 +30,3.258096,0,5.298317,6.684612,0,27.6,0,0,0 +18,3.258096,0,5.298317,6.684612,0,27.6,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +28,0,0,0,0,1,17.2,1,0,0 +20,0,0,0,0,1,17.2,1,0,0 +2,0,0,0,0,1,17.2,1,0,0 +0,0,0,0,0,1,17.2,1,0,0 +0,0,0,0,0,1,17.2,1,0,0 +4,0,0,0,0,0,10.3,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +3,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +2,0,0,0,0,0,10.3,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +7,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +11,0,1,5.703783,5.755076,0,3.4,0,0,0 +7,0,1,5.703783,5.755076,0,3.4,0,0,0 +7,0,1,5.703783,5.755076,0,3.4,0,0,0 +3,0,1,5.703783,5.755076,0,10.3,0,0,0 +1,0,1,5.703783,5.755076,0,10.3,0,0,0 +8,0,1,5.703783,5.755076,0,10.3,0,0,0 +4,3.258096,0,6.856462,8.242756,0,6.9,0,0,0 +2,3.258096,0,6.856462,8.242756,0,6.9,0,0,0 +2,3.258096,0,6.856462,8.242756,0,6.9,0,0,0 +2,3.258096,0,6.856462,8.242756,0,6.9,0,0,0 +5,3.258096,0,6.856462,8.242756,0,6.9,0,0,0 +3,3.258096,0,6.907755,8.294049,0,24.1,0,0,0 +1,3.258096,0,6.907755,8.294049,0,24.1,0,0,0 +0,3.258096,0,6.907755,8.294049,0,24.1,0,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,1,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,1,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,1,0,0 +0,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +0,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +2,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +0,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +5,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,0,0,6.762128,0,0,6.9,0,0,0 +2,0,0,6.762128,0,0,6.9,0,0,0 +2,0,0,6.762128,0,0,6.9,0,0,0 +0,0,0,6.762128,0,0,0,0,0,0 +2,0,0,6.762128,0,0,0,0,0,0 +2,0,0,6.762128,0,0,0,0,0,0 +3,3.258096,0,5.808503,7.194797,0,13.8,0,0,0 +3,3.258096,0,5.808503,7.194797,0,13.8,0,0,0 +3,3.258096,0,5.808503,7.194797,0,13.8,0,0,0 +2,0,0,6.099332,0,0,11.84267,0,0,0 +2,0,0,6.099332,0,0,11.84267,0,0,0 +5,0,0,6.099332,0,0,11.84267,0,0,0 +7,0,0,6.099332,0,0,11.84267,0,0,0 +12,0,0,6.099332,0,0,11.84267,0,0,0 +6,0,0,6.099332,0,0,11.84267,0,0,0 +4,0,0,6.099332,0,0,11.84267,0,0,0 +3,0,0,6.099332,0,0,11.84267,0,0,0 +4,0,0,6.099332,0,0,11.84267,0,0,0 +11,0,0,6.099332,0,0,10.3,0,0,0 +9,0,0,6.099332,0,0,10.3,0,0,0 +5,0,0,6.099332,0,0,10.3,0,0,0 +2,0,0,6.099332,0,0,11.84267,0,0,0 +2,0,0,6.099332,0,0,11.84267,0,0,0 +1,0,0,6.099332,0,0,11.84267,0,0,0 +3,0,0,6.099332,0,0,20.7,0,0,0 +3,0,0,6.099332,0,0,20.7,0,0,0 +6,0,0,6.099332,0,0,20.7,0,0,0 +8,0,0,5.680172,0,1,41.4,0,1,0 +8,0,0,5.680172,0,1,41.4,0,1,0 +13,0,0,5.680172,0,1,41.4,0,1,0 +31,0,0,0,0,0,3.4,0,0,0 +33,0,0,0,0,0,3.4,0,0,0 +11,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +11,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,17.2,1,0,0 +3,0,0,0,0,0,17.2,1,0,0 +2,0,0,0,0,0,17.2,1,0,0 +3,0,1,5.992264,5.755076,0,13.8,1,0,0 +0,0,1,5.992264,5.755076,0,13.8,1,0,0 +3,0,1,5.992264,5.755076,0,13.8,1,0,0 +10,0,1,5.992264,5.755076,1,31,1,0,0 +3,0,1,5.992264,5.755076,1,31,1,0,0 +9,0,1,5.992264,5.755076,1,31,1,0,0 +5,0,0,0,0,1,34.5,0,0,0 +8,0,0,0,0,1,34.5,0,0,0 +16,0,0,0,0,1,34.5,0,0,0 +2,4.564348,0,6.393591,6.445051,1,13.8,1,0,0 +0,4.564348,0,6.393591,6.445051,1,13.8,1,0,0 +0,4.564348,0,6.393591,6.445051,1,13.8,1,0,0 +1,4.564348,0,6.393591,6.445051,0,10.3,0,0,0 +1,4.564348,0,6.393591,6.445051,0,10.3,0,0,0 +3,4.564348,0,6.393591,6.445051,0,10.3,0,0,0 +0,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +3,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +0,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +1,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +3,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +0,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,0,1,5.010635,5.061929,0,0,0,0,0 +8,0,1,5.010635,5.061929,0,0,0,0,0 +2,0,1,5.010635,5.061929,0,0,0,0,0 +2,4.564348,0,5.926926,5.97822,0,11.84267,0,0,0 +0,4.564348,0,5.926926,5.97822,0,11.84267,0,0,0 +0,4.564348,0,5.926926,5.97822,0,11.84267,0,0,0 +0,4.564348,0,5.926926,5.97822,0,11.84267,0,0,0 +1,4.564348,0,5.926926,5.97822,0,11.84267,0,0,0 +0,4.564348,0,5.926926,5.97822,0,11.84267,0,0,0 +0,4.564348,0,5.926926,5.97822,0,11.84267,0,0,0 +0,4.564348,0,5.926926,5.97822,0,11.84267,0,0,0 +0,4.564348,0,5.926926,5.97822,0,11.84267,0,0,0 +1,4.564348,0,5.926926,5.97822,0,11.84267,0,0,0 +1,4.564348,0,5.926926,5.97822,0,0,1,0,0 +0,4.564348,0,5.926926,5.97822,0,0,1,0,0 +0,4.564348,0,5.926926,5.97822,0,0,1,0,0 +5,4.564348,0,5.926926,5.97822,0,0,1,0,0 +2,4.564348,0,5.926926,5.97822,0,0,1,0,0 +14,3.258096,0,6.907755,8.294049,0,20.7,0,0,0 +3,3.258096,0,6.907755,8.294049,0,20.7,0,0,0 +6,3.258096,0,6.907755,8.294049,0,20.7,0,0,0 +2,3.258096,0,6.907755,8.294049,0,20.7,0,0,0 +2,3.258096,0,6.907755,8.294049,0,20.7,0,0,0 +4,3.258096,0,6.907755,8.294049,0,20.7,0,0,0 +5,0,0,6.45331,0,0,10.3,1,0,0 +14,0,0,6.45331,0,0,10.3,1,0,0 +13,0,0,6.45331,0,0,10.3,1,0,0 +9,0,0,6.45331,0,0,10.3,1,0,0 +13,0,0,6.45331,0,0,10.3,1,0,0 +9,0,0,6.45331,0,1,13.8,0,0,1 +10,0,0,6.45331,0,1,13.8,0,0,1 +19,0,0,6.45331,0,1,13.8,0,0,1 +13,0,0,6.45331,0,1,13.8,0,0,1 +19,0,0,6.45331,0,1,13.8,0,0,1 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +3,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +2,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +6,0,1,6.109248,6.160541,0,24.1,0,0,0 +0,0,1,6.109248,6.160541,0,24.1,0,0,0 +1,0,1,6.109248,6.160541,0,24.1,0,0,0 +5,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +4,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +4,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +2,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +1,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +0,0,1,5.010635,5.061929,0,13.8,1,0,0 +0,0,1,5.010635,5.061929,0,13.8,1,0,0 +2,0,1,5.010635,5.061929,0,13.8,1,0,0 +2,0,1,5.010635,5.061929,0,13.8,1,0,0 +0,0,1,5.010635,5.061929,0,13.8,1,0,0 +4,3.258096,0,5.273,6.659294,0,24.1,1,0,0 +3,3.258096,0,5.273,6.659294,0,24.1,1,0,0 +7,3.258096,0,5.273,6.659294,0,24.1,1,0,0 +4,0,0,0,0,0,3.4,0,0,0 +5,0,0,0,0,0,3.4,0,0,0 +4,0,0,0,0,0,3.4,0,0,0 +11,0,1,3.688879,5.061929,0,20.7,0,0,0 +1,0,1,3.688879,5.061929,0,20.7,0,0,0 +1,0,1,3.688879,5.061929,0,20.7,0,0,0 +2,4.564348,0,6.907755,6.959049,0,24.1,1,0,0 +4,4.564348,0,6.907755,6.959049,0,24.1,1,0,0 +13,4.564348,0,6.907755,6.959049,0,24.1,1,0,0 +12,4.564348,0,6.907755,6.959049,0,24.1,1,0,0 +4,4.564348,0,6.907755,6.959049,0,24.1,1,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +2,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +4,0,0,0,0,1,31,1,0,0 +1,0,0,0,0,1,31,1,0,0 +2,0,0,0,0,1,31,1,0,0 +8,0,0,0,0,1,31,1,0,0 +3,0,0,0,0,1,31,1,0,0 +2,0,0,0,0,0,3.4,1,0,0 +11,0,0,0,0,0,3.4,1,0,0 +3,0,0,0,0,0,3.4,1,0,0 +10,0,0,0,0,0,3.4,1,0,0 +8,0,0,0,0,0,3.4,1,0,0 +7,0,0,0,0,0,13.8,0,0,0 +2,0,0,0,0,0,13.8,0,0,0 +5,0,0,0,0,0,13.8,0,0,0 +7,0,0,0,0,0,13.8,0,0,0 +9,0,0,0,0,0,13.8,0,0,0 +0,0,0,4.59875,0,0,11.84267,0,0,0 +0,0,0,4.59875,0,0,11.84267,0,0,0 +1,0,0,4.59875,0,0,11.84267,0,0,0 +4,0,0,4.59875,0,0,3.4,0,0,0 +1,0,0,4.59875,0,0,3.4,0,0,0 +3,0,0,4.59875,0,0,3.4,0,0,0 +5,0,0,4.59875,0,0,10.3,0,0,0 +1,0,0,4.59875,0,0,10.3,0,0,0 +1,0,0,4.59875,0,0,10.3,0,0,0 +1,0,0,4.59875,0,0,11.84267,1,0,0 +1,0,0,4.59875,0,0,11.84267,1,0,0 +1,0,0,4.59875,0,0,11.84267,1,0,0 +0,0,1,0,5.061929,1,20.7,0,0,0 +0,0,1,0,5.061929,1,20.7,0,0,0 +0,0,1,0,5.061929,1,20.7,0,0,0 +1,0,1,0,5.061929,1,20.7,0,0,0 +2,0,1,0,5.061929,1,20.7,0,0,0 +0,0,1,0,6.160541,0,11.84267,0,0,0 +1,0,1,0,6.160541,0,11.84267,0,0,0 +0,0,1,0,6.160541,0,11.84267,0,0,0 +1,0,1,0,6.160541,0,13.8,0,0,0 +2,0,1,0,6.160541,0,13.8,0,0,0 +2,0,1,0,6.160541,0,13.8,0,0,0 +1,0,1,0,6.160541,0,11.84267,0,0,0 +2,0,1,0,6.160541,0,11.84267,0,0,0 +2,0,1,0,6.160541,0,11.84267,0,0,0 +0,0,1,0,6.160541,0,11.84267,0,0,0 +1,0,1,0,6.160541,0,11.84267,0,0,0 +0,0,1,0,6.160541,0,11.84267,0,0,0 +1,0,1,0,6.160541,0,10.3,1,0,0 +0,0,1,0,6.160541,0,10.3,1,0,0 +1,0,1,0,6.160541,0,10.3,1,0,0 +4,3.258096,0,6.907755,8.294049,0,0,0,0,0 +1,3.258096,0,6.907755,8.294049,0,0,0,0,0 +3,3.258096,0,6.907755,8.294049,0,0,0,0,0 +6,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +0,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +5,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +35,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +25,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +37,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +23,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +15,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,1,3.4,1,0,0 +1,4.564348,0,6.907755,6.959049,1,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,1,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,17.2,1,0,0 +1,4.564348,0,6.907755,6.959049,0,17.2,1,0,0 +1,4.564348,0,6.907755,6.959049,0,17.2,1,0,0 +0,4.564348,0,5.93648,6.735905,0,6.9,0,0,0 +0,4.564348,0,5.93648,6.735905,0,6.9,0,0,0 +0,4.564348,0,5.93648,6.735905,0,6.9,0,0,0 +2,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +6,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +0,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +4,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +1,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +1,0,1,5.703783,6.160541,0,11.84267,0,0,0 +1,0,1,5.703783,6.160541,0,11.84267,0,0,0 +1,0,1,5.703783,6.160541,0,11.84267,0,0,0 +0,0,1,5.703783,6.160541,0,6.9,0,0,0 +2,0,1,5.703783,6.160541,0,6.9,0,0,0 +1,0,1,5.703783,6.160541,0,6.9,0,0,0 +1,0,1,5.703783,6.160541,0,6.9,0,0,0 +2,0,1,5.703783,6.160541,0,6.9,0,0,0 +0,0,1,5.703783,6.160541,0,6.9,0,0,0 +10,0,1,5.05529,5.755076,0,10.3,0,1,0 +3,0,1,5.05529,5.755076,0,10.3,0,1,0 +2,0,1,5.05529,5.755076,0,17.2,0,0,0 +0,0,1,5.05529,5.755076,0,17.2,0,0,0 +3,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +5,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +3,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +2,3.258096,0,6.907755,8.294049,0,6.9,1,0,0 +1,3.258096,0,6.907755,8.294049,0,6.9,1,0,0 +3,3.258096,0,6.907755,8.294049,0,6.9,1,0,0 +11,3.258096,0,6.907755,8.294049,0,11.84267,1,0,0 +6,3.258096,0,6.907755,8.294049,0,11.84267,1,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,1,0,0 +3,3.258096,0,6.574629,7.960924,0,11.84267,0,0,0 +0,3.258096,0,6.574629,7.960924,0,11.84267,0,0,0 +0,3.258096,0,6.574629,7.960924,0,11.84267,0,0,0 +0,3.258096,0,6.574629,7.960924,0,11.84267,0,0,0 +0,3.258096,0,6.574629,7.960924,0,11.84267,0,0,0 +11,3.258096,0,6.574629,7.960924,1,10.3,0,0,0 +1,3.258096,0,6.574629,7.960924,1,10.3,0,0,0 +0,3.258096,0,6.574629,7.960924,1,10.3,0,0,0 +0,3.258096,0,6.574629,7.960924,1,10.3,0,0,0 +0,3.258096,0,6.574629,7.960924,1,10.3,0,0,0 +1,3.258096,0,6.574629,7.960924,0,11.84267,0,0,0 +0,3.258096,0,6.574629,7.960924,0,11.84267,0,0,0 +0,3.258096,0,6.574629,7.960924,0,11.84267,0,0,0 +0,3.258096,0,6.574629,7.960924,0,11.84267,0,0,0 +0,3.258096,0,6.574629,7.960924,0,11.84267,0,0,0 +24,0,0,3.696848,0,0,10.3,0,1,0 +11,0,0,3.696848,0,0,10.3,0,1,0 +4,0,0,3.696848,0,0,10.3,0,1,0 +6,0,0,3.696848,0,0,13.8,0,1,0 +4,0,0,3.696848,0,0,13.8,0,1,0 +3,0,0,3.696848,0,0,13.8,0,1,0 +7,3.258096,0,6.115671,7.501966,0,11.84267,1,0,0 +8,3.258096,0,6.115671,7.501966,0,11.84267,1,0,0 +3,3.258096,0,6.115671,7.501966,0,11.84267,1,0,0 +2,3.258096,0,6.115671,7.501966,0,27.6,1,0,0 +3,3.258096,0,6.115671,7.501966,0,27.6,1,0,0 +1,3.258096,0,6.115671,7.501966,0,27.6,1,0,0 +2,3.258096,0,6.115671,7.501966,0,10.3,1,0,0 +0,3.258096,0,6.115671,7.501966,0,10.3,1,0,0 +1,3.258096,0,6.115671,7.501966,0,10.3,1,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +3,4.564348,0,5.947513,5.998806,1,27.6,0,1,0 +0,0,1,0,5.061929,0,6.9,0,0,0 +0,0,1,0,5.061929,0,6.9,0,0,0 +3,0,1,0,5.061929,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +1,0,1,6.109248,6.160541,0,11.84267,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +2,0,1,6.109248,6.160541,0,11.84267,1,0,0 +2,0,1,6.109248,6.160541,0,11.84267,1,0,0 +0,0,1,6.109248,6.160541,0,17.2,1,0,0 +0,0,1,6.109248,6.160541,0,17.2,1,0,0 +0,0,1,6.109248,6.160541,0,17.2,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +1,0,1,6.109248,6.160541,0,11.84267,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +9,0,0,0,0,0,11.84267,0,0,0 +14,0,0,0,0,0,11.84267,0,0,0 +9,0,0,0,0,0,10.3,1,0,0 +6,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,3.4,0,0,0 +7,0,0,0,0,0,3.4,0,0,0 +8,0,0,0,0,0,3.4,0,0,0 +1,0,1,4.341856,5.755076,0,10.3,0,0,0 +1,0,1,4.341856,5.755076,0,10.3,0,0,0 +2,0,1,4.341856,5.755076,0,10.3,0,0,0 +1,0,1,4.341856,5.755076,0,6.9,1,0,0 +0,0,1,4.341856,5.755076,0,6.9,1,0,0 +0,0,1,4.341856,5.755076,0,6.9,1,0,0 +5,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +5,0,0,0,0,0,6.9,0,0,0 +4,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +4,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +10,0,0,0,0,1,24.1,1,0,0 +4,0,0,0,0,1,24.1,1,0,0 +3,0,0,0,0,1,24.1,1,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +7,0,0,0,0,1,17.2,0,1,0 +7,0,0,0,0,1,17.2,0,1,0 +0,0,0,0,0,1,17.2,0,1,0 +2,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +15,0,1,6.109248,6.160541,1,11.84267,0,0,0 +9,0,1,6.109248,6.160541,1,11.84267,0,0,0 +2,0,1,6.109248,6.160541,1,11.84267,0,0,0 +5,0,1,6.109248,6.160541,1,11.84267,0,0,0 +2,0,1,6.109248,6.160541,1,11.84267,0,0,0 +5,0,1,6.109248,6.160541,0,17.2,0,0,0 +2,0,1,6.109248,6.160541,0,17.2,0,0,0 +5,0,1,6.109248,6.160541,0,17.2,0,0,0 +6,0,1,6.109248,6.160541,0,17.2,0,0,0 +4,0,1,6.109248,6.160541,0,17.2,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +2,0,1,6.109248,6.160541,0,11.84267,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +3,0,1,6.109248,6.160541,0,20.7,1,0,0 +1,0,1,6.109248,6.160541,0,20.7,1,0,0 +2,0,1,6.109248,6.160541,0,20.7,1,0,0 +3,0,1,6.109248,6.160541,0,20.7,1,0,0 +3,0,1,6.109248,6.160541,0,20.7,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +1,0,1,6.109248,6.160541,0,11.84267,1,0,0 +1,0,1,6.109248,6.160541,0,11.84267,1,0,0 +6,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +1,0,1,6.109248,6.160541,0,3.4,1,0,0 +3,0,1,6.109248,6.160541,1,13.8,0,0,0 +4,0,1,6.109248,6.160541,1,13.8,0,0,0 +1,0,1,6.109248,6.160541,1,13.8,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +5,0,1,6.109248,6.160541,0,3.4,0,0,0 +5,0,0,0,0,0,11.84267,0,0,0 +6,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +8,0,0,0,0,0,13.8,0,0,0 +5,0,0,0,0,0,13.8,0,0,0 +3,0,0,0,0,0,13.8,0,0,0 +6,0,0,0,0,1,20.7,0,1,0 +0,0,0,0,0,1,20.7,0,1,0 +0,0,0,0,0,1,20.7,0,1,0 +1,0,0,0,0,1,20.7,0,1,0 +0,0,0,0,0,1,20.7,0,1,0 +4,3.258096,0,6.87363,8.259924,0,3.4,1,0,0 +0,3.258096,0,6.87363,8.259924,0,3.4,1,0,0 +2,3.258096,0,6.87363,8.259924,0,3.4,1,0,0 +3,3.258096,0,6.87363,8.259924,0,3.4,1,0,0 +11,3.258096,0,6.87363,8.259924,0,3.4,1,0,0 +1,3.258096,0,6.87363,8.259924,0,0,0,0,0 +1,3.258096,0,6.87363,8.259924,0,0,0,0,0 +0,3.258096,0,6.87363,8.259924,0,0,0,0,0 +1,3.258096,0,6.87363,8.259924,0,0,0,0,0 +1,3.258096,0,6.87363,8.259924,0,0,0,0,0 +3,3.258096,0,6.87363,8.259924,0,11.84267,0,0,0 +1,3.258096,0,6.87363,8.259924,0,11.84267,0,0,0 +1,3.258096,0,6.87363,8.259924,0,11.84267,0,0,0 +1,3.258096,0,6.87363,8.259924,0,11.84267,0,0,0 +0,3.258096,0,6.87363,8.259924,0,11.84267,0,0,0 +3,3.258096,0,6.87363,8.259924,0,11.84267,0,0,0 +0,3.258096,0,6.87363,8.259924,0,11.84267,0,0,0 +1,3.258096,0,6.87363,8.259924,0,11.84267,0,0,0 +1,3.258096,0,6.87363,8.259924,0,11.84267,0,0,0 +3,3.258096,0,6.87363,8.259924,0,11.84267,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,1,0,5.755076,0,10.3,0,0,0 +0,0,1,0,5.755076,0,10.3,0,0,0 +1,0,1,0,5.755076,0,10.3,0,0,0 +0,0,1,0,5.755076,0,10.3,0,0,0 +0,0,1,0,5.755076,0,10.3,0,0,0 +1,0,1,0,5.755076,0,10.3,1,0,0 +7,0,1,0,5.755076,0,10.3,1,0,0 +1,0,1,0,5.755076,0,10.3,1,0,0 +0,0,1,0,5.755076,0,10.3,1,0,0 +1,0,1,0,5.755076,0,10.3,1,0,0 +5,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +4,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +8,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +12,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +6,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +3,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +2,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +6,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +7,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,0,6.959049,0,27.6,1,0,0 +1,4.564348,0,0,6.959049,0,27.6,1,0,0 +5,4.564348,0,0,6.959049,0,27.6,1,0,0 +3,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +0,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +11,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +4,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +3,3.258096,0,6.907755,8.294049,0,0,0,0,0 +3,3.258096,0,6.907755,8.294049,0,0,0,0,0 +4,3.258096,0,6.907755,8.294049,0,0,0,0,0 +11,3.258096,0,6.907755,8.294049,1,11.84267,0,1,0 +11,3.258096,0,6.907755,8.294049,1,11.84267,0,1,0 +11,3.258096,0,6.907755,8.294049,1,11.84267,0,1,0 +2,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +3,0,0,0,0,0,17.2,0,0,0 +3,0,0,0,0,0,17.2,0,0,0 +1,0,0,0,0,0,17.2,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +3,0,0,0,0,0,6.9,0,0,0 +2,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +4,0,1,6.109248,6.160541,0,11.84267,0,0,0 +2,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +2,0,1,6.109248,6.160541,0,11.84267,0,0,0 +6,0,1,6.109248,6.160541,0,10.3,1,0,0 +2,0,1,6.109248,6.160541,0,10.3,1,0,0 +4,0,1,6.109248,6.160541,0,10.3,1,0,0 +3,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +3,0,1,6.109248,6.160541,0,11.84267,0,0,0 +7,0,1,5.010635,5.061929,0,24.1,0,1,0 +16,0,1,5.010635,5.061929,0,24.1,0,1,0 +10,0,1,5.010635,5.061929,0,24.1,0,1,0 +2,0,1,4.362206,5.061929,0,10.3,1,0,0 +2,0,1,4.362206,5.061929,0,10.3,1,0,0 +0,0,1,4.362206,5.061929,0,10.3,1,0,0 +2,3.258096,0,6.151668,7.537962,1,6.9,0,0,0 +1,3.258096,0,6.151668,7.537962,1,6.9,0,0,0 +12,3.258096,0,6.151668,7.537962,1,6.9,0,0,0 +3,3.258096,0,6.151668,7.537962,1,6.9,0,0,0 +4,3.258096,0,6.151668,7.537962,1,6.9,0,0,0 +2,3.258096,0,6.158038,7.544332,0,17.2,1,0,0 +7,3.258096,0,6.158038,7.544332,0,17.2,1,0,0 +5,3.258096,0,6.158038,7.544332,0,17.2,1,0,0 +5,3.258096,0,6.158038,7.544332,0,17.2,1,0,0 +6,3.258096,0,6.158038,7.544332,0,17.2,1,0,0 +0,0,1,5.703783,5.755076,0,6.9,0,0,0 +4,0,1,5.703783,5.755076,0,6.9,0,0,0 +9,0,1,5.703783,5.755076,0,6.9,0,0,0 +3,0,1,5.703783,5.755076,1,6.9,1,0,0 +1,0,1,5.703783,5.755076,1,6.9,1,0,0 +1,0,1,5.703783,5.755076,1,6.9,1,0,0 +2,4.564348,0,5.587249,5.638542,1,17.2,1,0,0 +14,4.564348,0,5.587249,5.638542,1,17.2,1,0,0 +2,4.564348,0,5.587249,5.638542,1,17.2,1,0,0 +0,0,0,4.342636,0,0,13.8,1,0,0 +3,0,0,4.342636,0,0,13.8,1,0,0 +3,0,0,4.342636,0,0,13.8,1,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +2,4.564348,0,6.907755,6.959049,0,27.6,0,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +3,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +3,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,0,0,0,0,0,20.7,1,0,0 +0,0,0,0,0,0,20.7,1,0,0 +0,0,0,0,0,0,20.7,1,0,0 +0,0,0,0,0,0,20.7,1,0,0 +0,0,0,0,0,0,20.7,1,0,0 +11,0,0,0,0,0,6.9,0,0,0 +16,0,0,0,0,0,6.9,0,0,0 +16,0,0,0,0,0,6.9,0,0,0 +6,0,0,0,0,0,6.9,0,0,0 +11,0,0,0,0,0,6.9,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +0,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +8,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +3,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +1,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +4,3.258096,0,6.907755,8.294049,0,24.1,0,0,0 +6,3.258096,0,6.907755,8.294049,0,24.1,0,0,0 +5,3.258096,0,6.907755,8.294049,0,24.1,0,0,0 +0,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,1,27.6,0,1,0 +7,3.258096,0,6.907755,8.294049,1,27.6,0,1,0 +3,3.258096,0,6.907755,8.294049,1,27.6,0,1,0 +1,3.258096,0,6.907755,8.294049,1,27.6,0,1,0 +1,3.258096,0,6.907755,8.294049,1,27.6,0,1,0 +1,3.258096,0,6.907755,8.294049,1,11.84267,0,0,0 +3,3.258096,0,6.907755,8.294049,1,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,1,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,1,11.84267,0,0,0 +4,3.258096,0,6.907755,8.294049,1,11.84267,0,0,0 +9,3.258096,0,6.907755,8.294049,1,31,0,1,0 +4,3.258096,0,6.907755,8.294049,1,31,0,1,0 +3,3.258096,0,6.907755,8.294049,1,31,0,1,0 +2,3.258096,0,6.907755,8.294049,1,31,0,1,0 +2,3.258096,0,6.907755,8.294049,1,31,0,1,0 +3,3.258096,0,6.907755,8.294049,1,11.84267,0,1,0 +4,3.258096,0,6.907755,8.294049,1,11.84267,0,1,0 +2,3.258096,0,6.907755,8.294049,1,11.84267,0,1,0 +7,3.258096,0,6.907755,8.294049,1,11.84267,0,1,0 +3,3.258096,0,6.907755,8.294049,1,11.84267,0,1,0 +2,3.258096,0,6.907755,8.294049,1,13.8,1,0,0 +2,3.258096,0,6.907755,8.294049,1,13.8,1,0,0 +1,3.258096,0,6.907755,8.294049,1,13.8,1,0,0 +1,3.258096,0,6.907755,8.294049,1,13.8,1,0,0 +3,3.258096,0,6.907755,8.294049,1,13.8,1,0,0 +0,3.258096,0,6.612041,7.998335,0,3.4,0,0,0 +2,3.258096,0,6.612041,7.998335,0,3.4,0,0,0 +0,3.258096,0,6.612041,7.998335,0,3.4,0,0,0 +1,4.564348,0,5.042651,5.746707,1,17.2,0,0,0 +1,4.564348,0,5.042651,5.746707,1,17.2,0,0,0 +1,4.564348,0,5.042651,5.746707,1,17.2,0,0,0 +0,4.564348,0,5.519459,5.570752,0,10.3,0,0,0 +0,4.564348,0,5.519459,5.570752,0,10.3,0,0,0 +0,4.564348,0,5.519459,5.570752,0,10.3,0,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,1,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,1,0,0 +3,3.258096,0,6.907755,8.294049,0,6.9,1,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,1,0,0 +3,3.258096,0,6.907755,8.294049,0,6.9,1,0,0 +2,3.258096,0,6.907755,8.294049,0,6.9,1,0,0 +3,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +3,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +5,0,1,0,6.160541,0,3.4,0,0,1 +4,0,1,0,6.160541,0,3.4,0,0,1 +3,0,1,0,6.160541,0,3.4,0,0,1 +0,0,1,0,6.160541,0,6.9,0,0,0 +8,0,1,0,6.160541,0,13.8,1,0,0 +8,0,1,0,6.160541,0,13.8,1,0,0 +5,0,1,0,6.160541,0,13.8,1,0,0 +2,0,0,6.475741,0,1,17.2,1,0,0 +6,0,0,6.475741,0,1,17.2,1,0,0 +13,0,0,6.475741,0,1,17.2,1,0,0 +2,0,0,6.475741,0,1,20.7,1,0,0 +1,0,0,6.475741,0,1,20.7,1,0,0 +5,0,0,6.475741,0,1,20.7,1,0,0 +6,0,0,6.475741,0,0,11.84267,0,0,0 +8,0,0,6.475741,0,0,11.84267,0,0,0 +6,0,0,6.475741,0,0,11.84267,0,0,0 +6,0,0,3.295837,0,0,13.8,1,0,0 +7,0,0,3.295837,0,0,13.8,1,0,0 +5,0,0,3.295837,0,0,13.8,1,0,0 +10,0,0,3.295837,0,0,13.8,1,0,0 +10,0,0,3.295837,0,0,13.8,1,0,0 +1,0,0,3.295837,0,0,11.84267,0,0,0 +1,0,0,3.295837,0,0,11.84267,0,0,0 +1,0,0,3.295837,0,0,11.84267,0,0,0 +2,0,0,3.295837,0,0,11.84267,0,0,0 +3,0,0,3.295837,0,0,11.84267,0,0,0 +1,0,0,3.295837,0,0,0,0,0,0 +0,0,0,3.295837,0,0,0,0,0,0 +1,0,0,3.295837,0,0,0,0,0,0 +4,0,0,3.295837,0,0,0,0,0,0 +4,0,0,3.295837,0,0,0,0,0,0 +0,0,0,3.295837,0,0,6.9,0,0,0 +1,0,0,3.295837,0,0,6.9,0,0,0 +0,0,0,3.295837,0,0,6.9,0,0,0 +0,0,0,3.295837,0,0,6.9,0,0,0 +5,0,0,3.295837,0,0,6.9,0,0,0 +6,0,0,3.295837,0,0,6.9,0,0,0 +17,0,0,3.295837,0,0,6.9,0,0,0 +7,0,0,3.295837,0,0,6.9,0,0,0 +6,0,0,3.295837,0,0,6.9,0,0,0 +7,0,0,3.295837,0,0,6.9,0,0,0 +0,4.564348,0,0,6.105732,0,13.8,0,0,0 +0,4.564348,0,0,6.105732,0,13.8,0,0,0 +0,4.564348,0,0,6.105732,0,13.8,0,0,0 +2,4.564348,0,0,6.105732,0,13.8,0,0,0 +0,4.564348,0,0,6.105732,0,13.8,0,0,0 +0,4.564348,0,0,6.105732,0,11.84267,0,0,0 +3,4.564348,0,0,6.105732,0,11.84267,0,0,0 +0,4.564348,0,0,6.105732,0,11.84267,0,0,0 +0,4.564348,0,0,6.105732,0,11.84267,0,0,0 +1,4.564348,0,0,6.105732,0,11.84267,0,0,0 +0,4.564348,0,0,6.105732,0,11.84267,0,0,0 +0,4.564348,0,0,6.105732,0,11.84267,0,0,0 +0,4.564348,0,0,6.105732,0,11.84267,0,0,0 +2,4.564348,0,0,6.105732,0,11.84267,0,0,0 +0,4.564348,0,0,6.105732,0,11.84267,0,0,0 +1,4.564348,0,0,6.105732,0,13.8,0,0,0 +0,4.564348,0,0,6.105732,0,13.8,0,0,0 +0,4.564348,0,0,6.105732,0,13.8,0,0,0 +0,4.564348,0,0,6.105732,0,13.8,0,0,0 +0,4.564348,0,0,6.105732,0,13.8,0,0,0 +2,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +4,0,0,0,0,0,6.9,1,0,0 +3,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +2,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +1,0,1,5.703783,5.755076,0,20.7,0,0,0 +1,0,1,5.703783,5.755076,0,20.7,0,0,0 +1,0,1,5.703783,5.755076,0,20.7,0,0,0 +1,0,1,5.703783,5.755076,0,20.7,0,0,0 +6,0,1,5.703783,5.755076,0,20.7,0,0,0 +1,0,1,5.703783,5.755076,0,3.4,0,0,0 +4,0,1,5.703783,5.755076,0,3.4,0,0,0 +2,0,1,5.703783,5.755076,0,3.4,0,0,0 +1,0,1,5.703783,5.755076,0,3.4,0,0,0 +3,0,1,5.703783,5.755076,0,3.4,0,0,0 +1,0,1,5.703783,5.755076,0,3.4,1,0,0 +0,0,1,5.703783,5.755076,0,3.4,1,0,0 +1,0,1,5.703783,5.755076,0,3.4,1,0,0 +2,0,1,5.703783,5.755076,0,17.2,1,0,0 +5,0,1,5.703783,5.755076,0,17.2,1,0,0 +8,0,1,5.703783,5.755076,0,17.2,1,0,0 +16,0,1,5.703783,5.755076,0,3.4,1,0,0 +3,0,1,5.703783,5.755076,0,3.4,1,0,0 +6,0,1,5.703783,5.755076,0,3.4,1,0,0 +12,0,1,5.703783,5.755076,0,10.3,0,0,0 +6,0,1,5.703783,5.755076,0,10.3,0,0,0 +3,0,1,5.703783,5.755076,0,10.3,0,0,0 +7,0,0,0,0,0,11.84267,0,0,0 +5,0,0,0,0,0,11.84267,0,0,0 +4,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,6.9,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +8,0,0,0,0,0,11.84267,0,0,0 +9,0,0,0,0,0,11.84267,0,0,0 +7,0,0,0,0,0,11.84267,0,0,0 +8,0,0,0,0,0,17.2,0,0,0 +11,0,0,0,0,0,17.2,0,0,0 +7,0,0,0,0,0,17.2,0,0,0 +4,0,0,0,0,0,17.2,0,0,0 +5,0,0,0,0,0,17.2,0,0,0 +14,0,0,0,0,0,17.2,0,0,0 +2,0,0,0,0,0,17.2,0,0,0 +5,0,0,0,0,0,17.2,0,0,0 +8,0,0,0,0,0,6.9,0,0,0 +4,0,0,0,0,0,6.9,0,0,0 +3,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +3,0,0,0,0,0,6.9,0,0,0 +5,0,0,0,0,0,11.84267,0,0,0 +7,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +4,0,0,0,0,0,11.84267,0,0,0 +5,0,0,0,0,0,11.84267,1,0,0 +6,0,0,0,0,0,11.84267,1,0,0 +11,0,0,0,0,0,11.84267,1,0,0 +5,0,0,0,0,0,11.84267,1,0,0 +9,0,0,0,0,0,11.84267,1,0,0 +1,0,1,0,5.755076,0,13.8,1,0,0 +2,0,1,0,5.755076,0,13.8,1,0,0 +0,0,1,0,5.755076,0,13.8,1,0,0 +3,0,1,0,5.755076,0,10.3,0,0,0 +0,0,1,0,5.755076,0,10.3,0,0,0 +3,0,1,0,5.755076,0,10.3,0,0,0 +1,3.258096,0,6.907755,8.294049,1,17.2,0,0,0 +2,3.258096,0,6.907755,8.294049,1,17.2,0,0,0 +1,3.258096,0,6.907755,8.294049,1,17.2,0,0,0 +3,3.258096,0,6.907755,8.294049,1,10.3,1,0,0 +3,3.258096,0,6.907755,8.294049,1,10.3,1,0,0 +15,3.258096,0,6.907755,8.294049,1,10.3,1,0,0 +6,3.258096,0,6.553078,7.939373,1,24.1,0,0,0 +2,3.258096,0,6.553078,7.939373,1,24.1,0,0,0 +5,3.258096,0,6.553078,7.939373,1,24.1,0,0,0 +2,3.258096,0,6.553078,7.939373,1,24.1,0,0,0 +3,3.258096,0,6.553078,7.939373,1,24.1,0,0,0 +5,3.258096,0,6.553078,7.939373,1,24.1,0,0,0 +3,3.258096,0,6.553078,7.939373,0,11.84267,0,0,0 +0,3.258096,0,6.553078,7.939373,0,11.84267,0,0,0 +0,3.258096,0,6.553078,7.939373,0,11.84267,0,0,0 +0,3.258096,0,6.553078,7.939373,0,11.84267,0,0,0 +1,3.258096,0,6.553078,7.939373,0,11.84267,0,0,0 +0,3.258096,0,6.553078,7.939373,0,11.84267,0,0,0 +5,0,0,5.988059,0,1,34.5,1,0,0 +7,0,0,5.988059,0,1,34.5,1,0,0 +8,0,0,5.988059,0,1,34.5,1,0,0 +5,0,0,5.988059,0,1,6.9,1,0,0 +9,0,0,5.988059,0,1,6.9,1,0,0 +3,0,0,5.988059,0,1,6.9,1,0,0 +0,4.564348,0,6.72827,6.779563,0,0,0,0,0 +1,4.564348,0,6.72827,6.779563,0,0,0,0,0 +0,4.564348,0,6.72827,6.779563,0,0,0,0,0 +0,4.564348,0,6.72827,6.779563,0,0,0,0,0 +1,4.564348,0,6.72827,6.779563,0,0,0,0,0 +1,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +0,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +1,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +1,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +0,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +2,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +3,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +0,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +1,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +4,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +0,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +1,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +0,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +0,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +0,4.564348,0,6.72827,6.779563,0,11.84267,0,0,0 +6,4.564348,0,6.72827,6.779563,1,10.3,0,0,0 +2,4.564348,0,6.72827,6.779563,1,10.3,0,0,0 +1,4.564348,0,6.72827,6.779563,1,10.3,0,0,0 +4,4.564348,0,6.72827,6.779563,1,10.3,0,0,0 +8,4.564348,0,6.72827,6.779563,1,10.3,0,0,0 +5,0,0,0,0,0,13.8,1,0,0 +2,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +5,0,0,0,0,0,13.8,1,0,0 +2,0,0,0,0,0,13.8,1,0,0 +7,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.079933,6.160541,0,3.4,1,0,0 +3,0,1,6.079933,6.160541,0,3.4,1,0,0 +0,0,1,6.079933,6.160541,0,6.9,0,0,0 +0,0,1,6.079933,6.160541,0,6.9,0,0,0 +2,0,1,6.079933,6.160541,0,6.9,0,0,0 +0,0,1,6.079933,6.160541,0,3.4,0,0,0 +0,0,1,6.079933,6.160541,0,3.4,0,0,0 +0,0,1,6.079933,6.160541,0,3.4,0,0,0 +4,4.564348,0,6.680604,6.731897,1,10.3,1,0,0 +4,4.564348,0,6.680604,6.731897,1,10.3,1,0,0 +0,4.564348,0,6.680604,6.731897,1,10.3,1,0,0 +2,4.564348,0,6.680604,6.731897,0,11.84267,0,0,0 +1,4.564348,0,6.680604,6.731897,0,11.84267,0,0,0 +1,4.564348,0,6.680604,6.731897,0,11.84267,0,0,0 +13,0,0,0,0,0,6.9,1,0,0 +7,0,0,0,0,0,6.9,1,0,0 +5,0,0,0,0,0,6.9,1,0,0 +4,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +6,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +2,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +2,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +1,4.564348,0,5.375278,6.958999,0,11.84267,0,0,0 +2,4.564348,0,5.375278,6.958999,0,11.84267,0,0,0 +1,4.564348,0,5.375278,6.958999,0,11.84267,0,0,0 +3,4.564348,0,5.375278,6.958999,0,20.7,0,0,0 +0,4.564348,0,5.375278,6.958999,0,20.7,0,0,0 +1,4.564348,0,5.375278,6.958999,0,20.7,0,0,0 +6,4.564348,0,5.375278,6.958999,0,6.9,0,0,0 +1,4.564348,0,5.375278,6.958999,0,6.9,0,0,0 +0,4.564348,0,5.375278,6.958999,0,6.9,0,0,0 +3,4.564348,0,5.375278,6.958999,0,11.84267,0,0,0 +1,4.564348,0,5.375278,6.958999,0,11.84267,0,0,0 +1,4.564348,0,5.375278,6.958999,0,11.84267,0,0,0 +4,0,0,4.063885,0,0,6.9,1,0,0 +0,0,0,4.063885,0,0,6.9,1,0,0 +4,0,0,4.063885,0,0,6.9,1,0,0 +8,0,0,4.063885,0,0,17.2,1,0,0 +1,0,0,4.063885,0,0,17.2,1,0,0 +2,0,0,4.063885,0,0,17.2,1,0,0 +10,0,0,4.063885,0,0,13.8,1,0,0 +7,0,0,4.063885,0,0,13.8,1,0,0 +7,0,0,4.063885,0,0,13.8,1,0,0 +3,0,0,6.840974,0,0,6.9,0,0,0 +1,0,0,6.840974,0,0,6.9,0,0,0 +4,0,0,6.840974,0,0,6.9,0,0,0 +2,0,0,6.840974,0,0,24.1,0,0,0 +2,0,0,6.840974,0,0,24.1,0,0,0 +3,0,0,6.840974,0,0,24.1,0,0,0 +2,0,0,6.840974,0,0,11.84267,0,0,0 +4,0,0,6.840974,0,0,11.84267,0,0,0 +4,0,0,6.840974,0,0,11.84267,0,0,0 +0,0,0,6.840974,0,0,11.84267,0,0,0 +3,0,0,6.840974,0,0,11.84267,0,0,0 +1,0,0,6.840974,0,0,11.84267,0,0,0 +2,0,0,6.840974,0,0,11.84267,0,0,0 +4,0,0,6.840974,0,0,11.84267,0,0,0 +1,0,0,6.840974,0,0,11.84267,0,0,0 +2,0,0,6.840974,0,.1981873,13.8,0,0,0 +2,0,0,6.840974,0,.1981873,13.8,0,0,0 +1,0,0,6.840974,0,.1981873,13.8,0,0,0 +11,0,0,0,0,0,10.3,0,0,0 +9,0,0,0,0,0,10.3,0,0,0 +6,0,0,0,0,0,10.3,0,0,0 +7,3.258096,0,6.572423,7.958717,0,24.1,1,0,0 +9,3.258096,0,6.572423,7.958717,0,24.1,1,0,0 +9,3.258096,0,6.572423,7.958717,0,24.1,1,0,0 +5,0,1,0,5.755076,0,3.4,0,0,0 +0,0,1,0,5.755076,0,3.4,0,0,0 +3,0,1,0,5.755076,0,3.4,0,0,0 +1,0,1,0,5.755076,0,3.4,0,0,0 +0,0,1,0,5.755076,0,3.4,0,0,0 +1,0,1,0,5.755076,0,3.4,0,0,0 +2,3.258096,0,0,7.167964,0,10.3,1,0,0 +3,3.258096,0,0,7.167964,0,10.3,1,0,0 +2,3.258096,0,0,7.167964,0,10.3,1,0,0 +1,3.258096,0,0,7.167964,0,3.4,0,0,0 +3,3.258096,0,0,7.167964,0,3.4,0,0,0 +4,3.258096,0,0,7.167964,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +5,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +6,0,0,0,0,0,3.4,0,0,0 +23,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +9,0,0,0,0,0,11.84267,0,0,0 +6,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +6,0,0,0,0,0,11.84267,0,0,0 +11,0,0,0,0,0,11.84267,0,0,0 +11,0,0,0,0,0,20.7,0,0,0 +2,0,0,0,0,0,20.7,0,0,0 +4,0,0,0,0,0,20.7,0,0,0 +13,0,0,0,0,0,20.7,0,0,0 +18,0,0,0,0,0,20.7,0,0,0 +4,0,0,0,0,0,10.3,0,0,0 +2,0,0,0,0,0,10.3,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +4,0,0,0,0,0,0,0,1,0 +3,0,0,0,0,0,0,0,1,0 +4,0,0,0,0,0,0,0,1,0 +4,0,0,0,0,0,17.2,1,0,0 +2,0,0,0,0,0,17.2,1,0,0 +5,0,0,0,0,0,17.2,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +2,0,0,0,0,0,10.3,1,0,0 +8,0,0,0,0,1,6.9,0,0,0 +3,0,0,0,0,1,6.9,0,0,0 +5,0,0,0,0,1,6.9,0,0,0 +3,0,0,0,0,0,11.84267,1,0,0 +4,0,0,0,0,0,11.84267,1,0,0 +1,0,0,0,0,0,11.84267,1,0,0 +10,0,0,0,0,0,11.84267,0,1,0 +7,0,0,0,0,0,11.84267,0,1,0 +6,0,0,0,0,0,11.84267,0,1,0 +17,0,0,0,0,1,34.5,0,1,0 +19,0,0,0,0,1,34.5,0,1,0 +13,0,0,0,0,1,34.5,0,1,0 +6,0,0,4.599152,0,0,10.3,0,0,0 +2,0,0,4.599152,0,0,10.3,0,0,0 +7,0,0,4.599152,0,0,10.3,0,0,0 +4,0,0,4.599152,0,1,17.2,0,1,0 +6,0,0,4.599152,0,1,17.2,0,1,0 +4,0,0,4.599152,0,1,17.2,0,1,0 +1,0,1,5.703783,5.755076,0,27.6,0,0,0 +8,0,1,5.703783,5.755076,0,27.6,0,0,0 +2,0,1,5.703783,5.755076,0,27.6,0,0,0 +0,0,1,5.703783,5.755076,0,17.2,0,0,0 +4,0,1,5.703783,5.755076,0,17.2,0,0,0 +3,0,1,5.703783,5.755076,0,17.2,0,0,0 +0,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +1,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +1,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +0,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +1,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +13,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +0,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +1,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +0,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +0,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +0,4.564348,0,6.114964,6.63781,0,3.4,1,0,0 +0,4.564348,0,6.114964,6.63781,0,3.4,1,0,0 +0,4.564348,0,6.114964,6.63781,0,3.4,1,0,0 +0,4.564348,0,6.114964,6.63781,0,3.4,1,0,0 +0,4.564348,0,6.114964,6.63781,0,3.4,1,0,0 +0,4.564348,0,6.114964,6.63781,0,10.3,0,0,0 +0,4.564348,0,6.114964,6.63781,0,10.3,0,0,0 +0,4.564348,0,6.114964,6.63781,0,10.3,0,0,0 +0,4.564348,0,6.114964,6.63781,0,10.3,0,0,0 +0,4.564348,0,6.114964,6.63781,0,10.3,0,0,0 +0,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +0,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +2,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +0,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +1,4.564348,0,6.114964,6.63781,0,11.84267,0,0,0 +1,0,0,4.564348,0,0,0,0,0,0 +1,0,0,4.564348,0,0,0,0,0,0 +1,0,0,4.564348,0,0,0,0,0,0 +1,0,0,4.564348,0,0,0,0,0,0 +3,0,0,4.564348,0,0,0,0,0,0 +0,0,0,4.564348,0,0,0,0,0,0 +8,0,0,4.564348,0,0,0,0,0,0 +0,0,0,4.564348,0,0,0,0,0,0 +1,0,0,4.564348,0,0,0,0,0,0 +4,0,0,4.564348,0,0,0,0,0,0 +10,0,0,4.564348,0,1,31,1,0,0 +6,0,0,4.564348,0,1,31,1,0,0 +3,0,0,4.564348,0,1,31,1,0,0 +3,0,0,4.564348,0,1,31,1,0,0 +8,0,0,4.564348,0,1,31,1,0,0 +0,0,0,4.564348,0,0,11.84267,0,0,0 +5,0,0,4.564348,0,0,11.84267,0,0,0 +4,0,0,4.564348,0,0,11.84267,0,0,0 +6,0,0,4.564348,0,0,11.84267,0,0,0 +4,0,0,4.564348,0,0,11.84267,0,0,0 +9,0,0,4.564348,0,0,10.3,0,0,0 +0,0,0,4.564348,0,0,10.3,0,0,0 +0,0,0,4.564348,0,0,10.3,0,0,0 +1,0,0,4.564348,0,0,10.3,0,0,0 +3,0,0,4.564348,0,0,10.3,0,0,0 +5,0,1,6.109248,6.160541,1,13.8,1,0,0 +0,0,1,6.109248,6.160541,1,13.8,1,0,0 +6,0,1,6.109248,6.160541,1,13.8,1,0,0 +3,0,1,6.109248,6.160541,0,20.7,1,0,0 +6,0,1,6.109248,6.160541,0,20.7,1,0,0 +3,0,1,6.109248,6.160541,0,20.7,1,0,0 +4,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +2,0,1,6.109248,6.160541,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,27.6,1,0,0 +3,4.564348,0,6.907755,6.959049,0,27.6,1,0,0 +2,4.564348,0,6.907755,6.959049,0,27.6,1,0,0 +2,4.564348,0,6.907755,6.959049,0,27.6,1,0,0 +2,4.564348,0,6.907755,6.959049,0,27.6,1,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,1,0,0 +1,3.258096,0,6.907755,8.294049,0,3.4,1,0,0 +5,3.258096,0,6.907755,8.294049,0,3.4,1,0,0 +12,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +62,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +74,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +3,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +2,3.258096,0,6.907755,8.294049,1,3.4,1,0,0 +1,3.258096,0,6.907755,8.294049,1,3.4,1,0,0 +3,3.258096,0,6.907755,8.294049,1,3.4,1,0,0 +11,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +16,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +26,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +7,3.258096,0,0,8.294049,0,11.84267,0,0,0 +3,3.258096,0,0,8.294049,0,11.84267,0,0,0 +4,3.258096,0,0,8.294049,0,11.84267,0,0,0 +1,3.258096,0,0,8.294049,0,11.84267,0,0,0 +2,3.258096,0,0,8.294049,0,11.84267,0,0,0 +3,3.258096,0,0,8.294049,0,11.84267,0,0,0 +2,3.258096,0,0,8.294049,0,11.84267,0,0,0 +1,3.258096,0,0,8.294049,0,11.84267,0,0,0 +2,3.258096,0,0,8.294049,0,11.84267,0,0,0 +4,3.258096,0,0,8.294049,0,11.84267,0,0,0 +0,3.258096,0,0,8.294049,0,10.3,0,0,0 +1,3.258096,0,0,8.294049,0,10.3,0,0,0 +0,3.258096,0,0,8.294049,0,10.3,0,0,0 +0,3.258096,0,0,8.294049,0,10.3,0,0,0 +2,3.258096,0,0,8.294049,0,10.3,0,0,0 +3,3.258096,0,0,8.294049,0,13.8,0,0,0 +4,3.258096,0,0,8.294049,0,13.8,0,0,0 +6,3.258096,0,0,8.294049,0,13.8,0,0,0 +1,3.258096,0,0,8.294049,0,13.8,0,0,0 +2,3.258096,0,0,8.294049,0,13.8,0,0,0 +4,3.258096,0,0,6.624596,0,6.9,0,0,0 +4,3.258096,0,0,6.624596,0,6.9,0,0,0 +2,3.258096,0,0,6.624596,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +11,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +19,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +19,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +8,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +4,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +3,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +1,3.258096,0,6.981507,8.294049,0,3.4,1,0,0 +1,3.258096,0,6.981507,8.294049,0,3.4,1,0,0 +0,3.258096,0,6.981507,8.294049,0,3.4,1,0,0 +4,3.258096,0,6.981507,8.294049,0,11.84267,1,0,0 +2,3.258096,0,6.981507,8.294049,0,11.84267,1,0,0 +5,3.258096,0,6.981507,8.294049,0,11.84267,1,0,0 +3,3.258096,0,6.981507,8.294049,0,11.84267,1,0,0 +1,3.258096,0,6.981507,8.294049,0,11.84267,1,0,0 +1,3.258096,0,6.981507,8.294049,0,11.84267,1,0,0 +1,3.258096,0,6.981507,8.294049,0,11.84267,1,0,0 +2,3.258096,0,6.981507,8.294049,0,11.84267,1,0,0 +3,3.258096,0,6.981507,8.294049,0,11.84267,1,0,0 +0,3.258096,0,6.981507,8.294049,1,10.3,1,0,0 +0,3.258096,0,6.981507,8.294049,1,10.3,1,0,0 +2,3.258096,0,6.981507,8.294049,1,10.3,1,0,0 +10,0,0,0,0,1,6.9,0,0,0 +4,0,0,0,0,1,6.9,0,0,0 +0,0,0,0,0,1,6.9,0,0,0 +2,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +6,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +3,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +0,3.258096,0,6.031646,7.417941,0,17.2,0,1,0 +0,3.258096,0,6.031646,7.417941,0,17.2,0,1,0 +0,3.258096,0,6.031646,7.417941,0,17.2,0,1,0 +0,3.258096,0,6.031646,7.417941,0,11.84267,0,1,0 +2,3.258096,0,6.031646,7.417941,0,11.84267,0,1,0 +0,3.258096,0,6.031646,7.417941,0,11.84267,0,1,0 +0,3.258096,0,6.031646,7.417941,0,0,0,1,0 +0,3.258096,0,6.031646,7.417941,0,0,0,1,0 +0,3.258096,0,6.031646,7.417941,0,0,0,1,0 +2,3.258096,0,6.031646,7.417941,0,0,0,1,0 +0,3.258096,0,6.031646,7.417941,0,0,0,1,0 +3,3.258096,0,6.031646,7.417941,0,0,0,1,0 +0,3.258096,0,6.031646,7.417941,0,11.84267,0,1,0 +0,3.258096,0,6.031646,7.417941,0,11.84267,0,1,0 +0,3.258096,0,6.031646,7.417941,0,11.84267,0,1,0 +0,0,0,0,0,0,10.3,0,1,0 +0,0,0,0,0,0,10.3,0,1,0 +1,0,0,0,0,0,10.3,0,1,0 +1,0,0,0,0,0,6.9,1,0,0 +4,0,0,0,0,0,6.9,1,0,0 +4,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,1,34.5,1,0,0 +0,0,0,0,0,1,34.5,1,0,0 +3,0,0,0,0,1,34.5,1,0,0 +5,4.564348,0,6.703188,6.754481,0,6.9,0,0,0 +2,4.564348,0,6.703188,6.754481,0,6.9,0,0,0 +2,4.564348,0,6.703188,6.754481,0,6.9,0,0,0 +3,4.564348,0,6.703188,6.754481,0,11.84267,0,0,0 +0,4.564348,0,6.703188,6.754481,0,11.84267,0,0,0 +2,4.564348,0,6.703188,6.754481,0,11.84267,0,0,0 +2,4.564348,0,6.703188,6.754481,0,6.9,0,0,0 +1,4.564348,0,6.703188,6.754481,0,6.9,0,0,0 +3,4.564348,0,6.703188,6.754481,0,6.9,0,0,0 +6,4.564348,0,6.907755,6.959049,1,11.84267,0,1,0 +0,4.564348,0,6.907755,6.959049,1,11.84267,0,1,0 +1,4.564348,0,6.907755,6.959049,1,11.84267,0,1,0 +3,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +2,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +1,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +0,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +1,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +45,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +37,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +2,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,5.298317,5.349611,0,6.9,1,0,0 +0,4.564348,0,5.298317,5.349611,0,6.9,1,0,0 +0,4.564348,0,5.298317,5.349611,0,6.9,1,0,0 +4,4.564348,0,5.298317,5.349611,1,17.2,1,0,0 +2,4.564348,0,5.298317,5.349611,1,17.2,1,0,0 +4,4.564348,0,5.298317,5.349611,1,17.2,1,0,0 +4,0,1,5.010635,5.061929,0,6.9,1,0,0 +7,0,1,5.010635,5.061929,0,6.9,1,0,0 +7,0,1,5.010635,5.061929,0,6.9,1,0,0 +1,0,1,5.010635,5.061929,0,3.4,1,0,0 +0,0,1,5.010635,5.061929,0,3.4,1,0,0 +0,0,1,5.010635,5.061929,0,3.4,1,0,0 +0,0,1,5.010635,5.061929,0,13.8,1,0,0 +0,0,1,5.010635,5.061929,0,13.8,1,0,0 +0,0,1,5.010635,5.061929,0,13.8,1,0,0 +1,0,1,0,5.061929,0,0,0,0,0 +3,0,1,0,5.061929,0,0,0,0,0 +2,0,1,0,5.061929,0,0,0,0,0 +1,0,1,0,5.061929,0,3.4,0,0,0 +0,0,1,0,5.061929,0,3.4,0,0,0 +0,0,1,0,5.061929,0,3.4,0,0,0 +4,0,0,6.120297,0,0,10.3,0,0,0 +3,0,0,6.120297,0,0,10.3,0,0,0 +2,0,0,6.120297,0,0,10.3,0,0,0 +4,0,0,6.120297,0,0,11.84267,0,0,0 +1,0,0,6.120297,0,0,11.84267,0,0,0 +2,0,0,6.120297,0,0,11.84267,0,0,0 +2,0,0,6.120297,0,0,11.84267,0,0,0 +5,0,0,6.120297,0,0,11.84267,0,0,0 +2,0,0,6.120297,0,0,11.84267,0,0,0 +1,0,0,6.120297,0,0,10.3,0,0,0 +2,0,0,6.120297,0,0,10.3,0,0,0 +1,0,0,6.120297,0,0,10.3,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +4,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +7,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +7,4.564348,0,6.907755,6.959049,0,37.9,1,0,0 +1,4.564348,0,6.907755,6.959049,0,37.9,1,0,0 +2,4.564348,0,6.907755,6.959049,0,37.9,1,0,0 +2,4.564348,0,6.907755,6.959049,0,24.1,1,0,0 +10,4.564348,0,6.907755,6.959049,0,24.1,1,0,0 +5,4.564348,0,6.907755,6.959049,0,24.1,1,0,0 +0,0,1,5.010635,5.061929,0,10.3,1,0,0 +3,0,1,5.010635,5.061929,0,10.3,1,0,0 +4,0,1,5.010635,5.061929,0,10.3,1,0,0 +0,0,1,5.010635,5.061929,0,10.3,1,0,0 +0,0,1,5.010635,5.061929,0,10.3,1,0,0 +0,4.564348,0,0,6.671367,1,20.7,0,0,0 +0,4.564348,0,0,6.671367,1,20.7,0,0,0 +0,4.564348,0,0,6.671367,1,20.7,0,0,0 +0,4.564348,0,0,6.671367,1,20.7,0,0,0 +0,4.564348,0,0,6.671367,1,20.7,0,0,0 +5,3.258096,0,6.907755,8.294049,1,24.1,1,0,0 +1,3.258096,0,6.907755,8.294049,1,24.1,1,0,0 +5,3.258096,0,6.907755,8.294049,1,24.1,1,0,0 +4,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +4,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +1,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +1,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +1,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +1,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +4,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +8,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +8,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +0,3.258096,0,6.395262,7.774856,0,11.84267,0,0,0 +0,3.258096,0,6.395262,7.774856,0,11.84267,0,0,0 +0,3.258096,0,6.395262,7.774856,0,11.84267,0,0,0 +0,3.258096,0,6.395262,7.774856,0,3.4,1,0,0 +21,3.258096,0,6.395262,7.774856,0,3.4,1,0,0 +6,3.258096,0,6.395262,7.774856,0,3.4,1,0,0 +4,3.258096,0,6.395262,7.774856,0,11.84267,0,0,0 +3,3.258096,0,6.395262,7.774856,0,11.84267,0,0,0 +5,3.258096,0,6.395262,7.774856,0,11.84267,0,0,0 +0,3.258096,0,6.395262,7.774856,0,11.84267,0,0,0 +1,3.258096,0,6.395262,7.774856,0,11.84267,0,0,0 +0,3.258096,0,6.395262,7.774856,0,11.84267,0,0,0 +0,3.258096,0,6.395262,7.774856,0,3.4,1,0,0 +0,3.258096,0,6.395262,7.774856,0,3.4,1,0,0 +0,3.258096,0,6.395262,7.774856,0,3.4,1,0,0 +0,0,1,0,5.061929,0,3.4,0,1,0 +0,0,1,0,5.061929,0,3.4,0,1,0 +0,0,1,0,5.061929,0,3.4,0,1,0 +5,0,0,5.871329,0,0,6.9,1,0,0 +5,0,0,5.871329,0,0,6.9,1,0,0 +4,0,0,5.871329,0,0,6.9,1,0,0 +5,0,0,5.871329,0,1,10.3,1,0,0 +14,0,0,5.871329,0,1,10.3,1,0,0 +6,0,0,5.871329,0,1,10.3,1,0,0 +0,0,1,5.743003,5.755076,0,0,0,1,0 +0,0,1,5.743003,5.755076,0,0,0,1,0 +0,0,1,5.743003,5.755076,0,0,0,1,0 +4,0,1,5.743003,5.755076,0,10.3,0,1,0 +2,0,1,5.743003,5.755076,0,10.3,0,1,0 +0,0,1,5.743003,5.755076,0,10.3,0,1,0 +3,0,0,5.805978,0,0,10.3,0,0,0 +34,0,0,5.805978,0,0,10.3,0,0,0 +18,0,0,5.805978,0,0,10.3,0,0,0 +0,0,0,5.805978,0,0,17.2,0,0,0 +1,0,0,5.805978,0,0,17.2,0,0,0 +3,0,0,5.805978,0,0,17.2,0,0,0 +7,0,0,5.805978,0,0,11.84267,0,0,0 +1,0,0,5.805978,0,0,11.84267,0,0,0 +2,0,0,5.805978,0,0,11.84267,0,0,0 +0,0,0,5.506307,0,0,13.8,1,0,0 +1,0,0,5.506307,0,0,13.8,1,0,0 +1,0,0,5.506307,0,0,13.8,1,0,0 +7,0,0,5.506307,0,0,3.4,1,0,0 +4,0,0,5.506307,0,0,3.4,1,0,0 +2,0,0,5.506307,0,0,3.4,1,0,0 +0,0,0,5.506307,0,0,17.2,1,0,0 +1,0,0,5.506307,0,0,17.2,1,0,0 +3,0,0,5.506307,0,0,17.2,1,0,0 +8,3.258096,0,0,7.968458,0,10.3,0,1,0 +10,3.258096,0,0,7.968458,0,10.3,0,1,0 +12,3.258096,0,0,7.968458,0,10.3,0,1,0 +0,3.258096,0,0,7.968458,0,11.84267,1,0,0 +3,3.258096,0,0,7.968458,0,11.84267,1,0,0 +2,3.258096,0,0,7.968458,0,11.84267,1,0,0 +8,3.258096,0,0,7.968458,0,11.84267,1,0,0 +6,3.258096,0,0,7.968458,0,11.84267,1,0,0 +7,3.258096,0,0,7.968458,0,11.84267,1,0,0 +11,3.258096,0,0,7.968458,1,10.3,0,1,0 +2,3.258096,0,0,7.968458,1,10.3,0,1,0 +7,3.258096,0,0,7.968458,1,10.3,0,1,0 +6,3.258096,0,0,7.968458,0,11.84267,1,0,0 +3,3.258096,0,0,7.968458,0,11.84267,1,0,0 +6,3.258096,0,0,7.968458,0,11.84267,1,0,0 +2,0,1,6.109248,6.160541,0,6.9,0,0,0 +13,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +10,0,1,6.109248,6.160541,0,13.8,0,0,0 +4,0,1,6.109248,6.160541,0,13.8,0,0,0 +3,0,1,6.109248,6.160541,0,13.8,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,1,0,0,0,0 +0,0,1,6.109248,6.160541,1,0,0,0,0 +0,0,1,6.109248,6.160541,1,0,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +7,0,0,0,0,0,6.9,0,0,0 +8,0,0,0,0,1,17.2,0,1,0 +4,0,0,0,0,1,17.2,0,1,0 +5,0,0,0,0,1,17.2,0,1,0 +7,0,0,0,0,1,17.2,0,1,0 +3,0,0,0,0,1,17.2,0,1,0 +5,0,0,0,0,0,11.84267,1,0,0 +2,0,0,0,0,0,11.84267,1,0,0 +7,0,0,0,0,0,11.84267,1,0,0 +5,0,0,0,0,0,11.84267,1,0,0 +6,0,0,0,0,0,11.84267,1,0,0 +10,3.258096,0,6.243779,7.630073,0,10.3,0,0,0 +7,3.258096,0,6.243779,7.630073,0,10.3,0,0,0 +7,3.258096,0,6.243779,7.630073,0,10.3,0,0,0 +3,3.258096,0,6.243779,7.630073,0,11.84267,0,1,0 +0,3.258096,0,6.243779,7.630073,0,11.84267,0,1,0 +1,3.258096,0,6.243779,7.630073,0,11.84267,0,1,0 +3,3.258096,0,6.243779,7.630073,0,11.84267,0,0,0 +3,3.258096,0,6.243779,7.630073,0,11.84267,0,0,0 +1,3.258096,0,6.243779,7.630073,0,11.84267,0,0,0 +0,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +19,0,1,6.215408,5.755076,1,31,0,0,0 +19,0,1,6.215408,5.755076,1,31,0,0,0 +12,0,1,6.215408,5.755076,1,31,0,0,0 +2,0,1,6.215408,5.755076,0,3.4,0,0,0 +5,0,0,3.871201,0,1,10.3,0,0,0 +0,0,0,3.871201,0,1,10.3,0,0,0 +0,0,0,3.871201,0,1,10.3,0,0,0 +0,0,0,3.871201,0,1,13.8,0,0,0 +0,0,0,3.871201,0,1,13.8,0,0,0 +0,0,0,3.871201,0,1,13.8,0,0,0 +0,0,0,3.871201,0,0,3.4,0,0,0 +0,0,0,3.871201,0,0,3.4,0,0,0 +0,0,0,3.871201,0,0,3.4,0,0,0 +0,0,0,3.871201,0,0,17.2,0,0,0 +0,0,0,3.871201,0,0,17.2,0,0,0 +0,0,0,3.871201,0,0,17.2,0,0,0 +9,3.258096,0,6.291291,7.677586,0,17.2,0,0,0 +12,3.258096,0,6.291291,7.677586,0,17.2,0,0,0 +10,3.258096,0,6.291291,7.677586,0,17.2,0,0,0 +1,3.258096,0,6.291291,7.677586,0,10.3,0,0,0 +5,3.258096,0,6.291291,7.677586,0,10.3,0,0,0 +1,3.258096,0,6.291291,7.677586,0,11.84267,0,0,0 +3,3.258096,0,6.291291,7.677586,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,1,11.84267,0,1,0 +1,0,0,0,0,1,11.84267,0,1,0 +2,0,0,0,0,1,11.84267,0,1,0 +1,0,0,0,0,0,11.84267,0,1,0 +0,0,0,0,0,0,11.84267,0,1,0 +0,0,0,0,0,0,11.84267,0,1,0 +0,0,0,0,0,0,27.6,1,0,0 +6,0,0,0,0,0,27.6,1,0,0 +2,0,0,0,0,0,27.6,1,0,0 +14,0,0,0,0,1,11.84267,0,1,0 +8,0,0,0,0,1,11.84267,0,1,0 +3,0,0,0,0,1,11.84267,0,1,0 +3,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +4,3.258096,0,5.768321,7.154615,0,20.7,1,0,0 +4,3.258096,0,5.768321,7.154615,0,20.7,1,0,0 +7,3.258096,0,5.768321,7.154615,0,20.7,1,0,0 +3,3.258096,0,5.768321,7.154615,0,11.84267,0,0,0 +3,3.258096,0,5.768321,7.154615,0,11.84267,0,0,0 +0,3.258096,0,5.768321,7.154615,0,11.84267,0,0,0 +6,3.258096,0,6.659294,8.045588,0,11.84267,0,0,0 +7,3.258096,0,6.659294,8.045588,0,11.84267,0,0,0 +4,3.258096,0,6.659294,8.045588,0,11.84267,0,0,0 +3,3.258096,0,6.659294,8.045588,0,17.2,1,0,0 +0,3.258096,0,6.659294,8.045588,0,17.2,1,0,0 +3,3.258096,0,6.659294,8.045588,0,17.2,1,0,0 +1,3.258096,0,6.659294,8.045588,0,11.84267,0,0,0 +4,3.258096,0,6.659294,8.045588,0,11.84267,0,0,0 +1,3.258096,0,6.659294,8.045588,0,11.84267,0,0,0 +3,3.258096,0,6.659294,8.045588,0,11.84267,0,0,0 +5,3.258096,0,6.659294,8.045588,0,11.84267,0,0,0 +3,3.258096,0,6.659294,8.045588,0,11.84267,0,0,0 +6,3.258096,0,6.659294,8.045588,0,0,0,0,0 +0,3.258096,0,6.659294,8.045588,0,0,0,0,0 +0,3.258096,0,6.659294,8.045588,0,0,0,0,0 +5,0,0,4.736198,0,0,6.9,0,0,0 +8,0,0,4.736198,0,0,6.9,0,0,0 +7,0,0,4.736198,0,0,6.9,0,0,0 +4,0,0,4.736198,0,0,11.84267,1,0,0 +1,0,0,4.736198,0,0,11.84267,1,0,0 +4,0,0,4.736198,0,0,11.84267,1,0,0 +2,0,0,4.736198,0,0,11.84267,1,0,0 +3,0,0,4.736198,0,0,11.84267,1,0,0 +2,0,0,4.736198,0,0,11.84267,1,0,0 +8,4.564348,0,5.584999,3.628682,0,17.2,0,0,0 +2,4.564348,0,5.584999,3.628682,0,17.2,0,0,0 +3,4.564348,0,5.584999,3.628682,0,17.2,0,0,0 +12,4.564348,0,5.675383,5.726676,1,24.1,0,1,0 +4,4.564348,0,5.675383,5.726676,1,24.1,0,1,0 +15,4.564348,0,5.675383,5.726676,1,24.1,0,1,0 +3,4.564348,0,5.675383,5.726676,1,3.4,0,1,0 +1,4.564348,0,5.675383,5.726676,1,3.4,0,1,0 +2,4.564348,0,5.675383,5.726676,1,3.4,0,1,0 +0,4.564348,0,5.675383,5.726676,0,6.9,0,1,0 +1,4.564348,0,5.675383,5.726676,0,6.9,0,1,0 +1,4.564348,0,5.675383,5.726676,0,6.9,0,1,0 +8,4.564348,0,5.675383,5.726676,0,0,1,0,0 +5,4.564348,0,5.675383,5.726676,0,0,1,0,0 +0,4.564348,0,5.675383,5.726676,0,0,1,0,0 +2,4.564348,0,5.675383,5.726676,1,6.9,1,0,0 +5,4.564348,0,5.675383,5.726676,1,6.9,1,0,0 +5,4.564348,0,5.675383,5.726676,1,6.9,1,0,0 +1,3.258096,0,0,7.495542,0,10.3,0,1,0 +1,3.258096,0,0,7.495542,0,10.3,0,1,0 +1,3.258096,0,0,7.495542,0,10.3,0,1,0 +1,3.258096,0,0,7.495542,0,10.3,0,1,0 +0,3.258096,0,0,7.495542,0,10.3,0,1,0 +19,4.564348,0,4.848116,4.89941,0,11.84267,0,0,0 +1,4.564348,0,4.848116,4.89941,0,13.8,0,0,0 +15,4.564348,0,6.907755,6.959049,1,20.7,0,1,0 +26,4.564348,0,6.907755,6.959049,1,20.7,0,1,0 +40,4.564348,0,6.907755,6.959049,1,20.7,0,1,0 +1,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +2,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +10,0,0,5.301911,0,1,17.2,1,0,0 +10,0,0,5.301911,0,1,17.2,1,0,0 +3,0,0,5.301911,0,1,17.2,1,0,0 +3,0,0,5.301911,0,1,17.2,1,0,0 +1,0,0,5.301911,0,1,17.2,1,0,0 +0,4.564348,0,0,6.566006,0,11.84267,0,0,0 +0,4.564348,0,0,6.566006,0,11.84267,0,0,0 +0,4.564348,0,0,6.566006,0,11.84267,0,0,0 +2,4.564348,0,5.087596,5.061929,0,17.2,1,0,0 +0,4.564348,0,5.087596,5.061929,0,17.2,1,0,0 +0,4.564348,0,5.087596,5.061929,0,17.2,1,0,0 +8,4.564348,0,5.087596,5.061929,0,13.8,1,0,0 +0,4.564348,0,5.087596,5.061929,0,13.8,1,0,0 +0,4.564348,0,5.087596,5.061929,0,13.8,1,0,0 +0,0,1,5.703783,5.755076,0,11.84267,0,0,0 +0,0,1,5.703783,5.755076,0,11.84267,0,0,0 +0,0,1,5.703783,5.755076,0,11.84267,0,0,0 +0,0,1,5.703783,5.755076,0,10.3,0,0,0 +0,0,1,5.703783,5.755076,0,10.3,0,0,0 +0,0,1,5.703783,5.755076,0,10.3,0,0,0 +13,3.258096,0,6.907755,8.294049,0,27.6,1,0,0 +7,3.258096,0,6.907755,8.294049,0,27.6,1,0,0 +15,3.258096,0,6.907755,8.294049,0,27.6,1,0,0 +2,0,1,6.145901,5.061929,0,17.2,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +1,0,0,5.941539,0,0,11.84267,0,0,0 +3,0,0,5.941539,0,0,11.84267,0,0,0 +2,0,0,5.941539,0,0,11.84267,0,0,0 +3,0,0,5.941539,0,0,11.84267,1,0,0 +7,0,0,5.941539,0,0,11.84267,1,0,0 +2,0,0,5.941539,0,0,11.84267,1,0,0 +6,0,0,5.941539,0,0,34.5,0,0,0 +7,0,0,5.941539,0,0,34.5,0,0,0 +3,0,0,5.941539,0,0,34.5,0,0,0 +2,0,0,0,0,1,17.2,1,0,0 +0,0,0,0,0,1,17.2,1,0,0 +4,0,0,0,0,1,17.2,1,0,0 +1,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +8,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +4,0,0,0,0,0,11.84267,0,0,0 +4,0,0,0,0,0,34.5,1,0,0 +13,0,0,0,0,0,34.5,1,0,0 +10,0,0,0,0,0,34.5,1,0,0 +16,0,0,0,0,0,11.84267,1,0,0 +5,0,0,0,0,0,11.84267,1,0,0 +2,0,0,0,0,0,11.84267,1,0,0 +6,0,0,0,0,0,3.4,0,0,0 +6,0,0,0,0,0,3.4,0,0,0 +7,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0 +0,3.258096,0,3.871201,5.257495,0,3.4,1,0,0 +10,3.258096,0,3.871201,5.257495,0,3.4,1,0,0 +4,3.258096,0,3.871201,5.257495,0,3.4,1,0,0 +0,3.258096,0,3.871201,5.257495,0,3.4,1,0,0 +4,3.258096,0,3.871201,5.257495,0,3.4,1,0,0 +1,3.258096,0,3.871201,5.257495,1,10.3,1,0,0 +0,3.258096,0,3.871201,5.257495,1,10.3,1,0,0 +5,3.258096,0,3.871201,5.257495,1,10.3,1,0,0 +2,3.258096,0,3.871201,5.257495,1,10.3,1,0,0 +4,3.258096,0,3.871201,5.257495,1,10.3,1,0,0 +24,3.258096,0,3.871201,5.257495,0,10.3,1,0,0 +16,3.258096,0,3.871201,5.257495,0,10.3,1,0,0 +9,3.258096,0,3.871201,5.257495,0,10.3,1,0,0 +4,3.258096,0,3.871201,5.257495,0,10.3,1,0,0 +4,3.258096,0,3.871201,5.257495,0,10.3,1,0,0 +0,3.258096,0,3.871201,5.257495,0,3.4,1,0,0 +1,3.258096,0,3.871201,5.257495,0,3.4,1,0,0 +0,3.258096,0,3.871201,5.257495,0,3.4,1,0,0 +0,3.258096,0,3.871201,5.257495,0,3.4,1,0,0 +0,3.258096,0,3.871201,5.257495,0,3.4,1,0,0 +10,0,0,5.622572,0,0,13.8,0,0,0 +9,0,0,5.622572,0,0,13.8,0,0,0 +1,0,0,5.622572,0,0,13.8,0,0,0 +2,0,0,5.622572,0,0,3.4,0,0,0 +3,0,0,5.622572,0,0,3.4,0,0,0 +1,0,0,5.622572,0,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,0,0,1,0 +0,0,1,6.109248,6.160541,0,0,0,1,0 +2,0,1,6.109248,6.160541,0,0,0,1,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,1,0,0 +16,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +2,4.564348,0,6.300786,6.352079,0,11.84267,0,0,0 +1,4.564348,0,6.300786,6.352079,0,11.84267,0,0,0 +4,4.564348,0,6.300786,6.352079,0,17.2,0,0,0 +0,0,0,0,0,0,13.8,0,0,0 +0,0,0,0,0,0,13.8,0,0,0 +2,0,0,0,0,0,13.8,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +2,4.564348,0,6.907755,6.959049,0,10.3,0,1,0 +2,4.564348,0,6.907755,6.959049,0,10.3,0,1,0 +5,4.564348,0,6.907755,6.959049,0,10.3,0,1,0 +1,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +6,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +8,4.564348,0,6.907755,6.959049,1,37.9,0,1,0 +5,4.564348,0,6.907755,6.959049,1,37.9,0,1,0 +7,4.564348,0,6.907755,6.959049,1,37.9,0,1,0 +3,0,0,6.351409,0,1,11.84267,0,0,0 +3,0,0,6.351409,0,1,11.84267,0,0,0 +0,0,0,6.351409,0,1,11.84267,0,0,0 +3,0,0,6.351409,0,0,11.84267,0,0,0 +1,0,0,6.351409,0,0,11.84267,0,0,0 +0,0,0,6.351409,0,0,11.84267,0,0,0 +3,0,0,6.351409,0,1,10.3,1,0,0 +2,0,0,6.351409,0,1,10.3,1,0,0 +3,0,0,6.351409,0,1,10.3,1,0,0 +4,0,0,3.583519,0,0,17.2,1,0,0 +3,0,0,3.583519,0,0,17.2,1,0,0 +9,0,0,3.583519,0,0,17.2,1,0,0 +2,0,0,0,0,1,20.7,0,0,0 +3,0,0,0,0,1,20.7,0,0,0 +2,0,0,0,0,1,20.7,0,0,0 +7,0,0,0,0,1,10.3,1,0,0 +11,0,0,0,0,1,10.3,1,0,0 +4,0,0,0,0,1,10.3,1,0,0 +5,3.258096,0,0,5.075174,0,17.2,0,0,0 +6,3.258096,0,0,5.075174,0,17.2,0,0,0 +13,3.258096,0,0,5.075174,0,17.2,0,0,0 +0,4.564348,0,0,6.619512,0,3.4,0,0,0 +0,4.564348,0,0,6.619512,0,3.4,0,0,0 +0,4.564348,0,0,6.619512,0,3.4,0,0,0 +2,4.564348,0,0,6.619512,0,3.4,1,0,0 +2,4.564348,0,0,6.619512,0,3.4,1,0,0 +0,4.564348,0,0,6.619512,0,3.4,1,0,0 +0,4.564348,0,0,6.619512,0,11.84267,0,0,0 +1,4.564348,0,0,6.619512,0,11.84267,0,0,0 +1,4.564348,0,0,6.619512,0,11.84267,0,0,0 +0,0,1,5.010635,5.061929,0,17.2,0,0,0 +0,4.564348,0,6.907755,6.959049,1,27.6,0,0,0 +0,4.564348,0,6.907755,6.959049,1,27.6,0,0,0 +0,4.564348,0,6.907755,6.959049,1,27.6,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,31,0,0,0 +2,4.564348,0,6.907755,6.959049,0,31,0,0,0 +2,4.564348,0,6.907755,6.959049,0,31,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +5,0,0,5.678431,0,1,27.6,1,0,0 +2,0,0,5.678431,0,1,27.6,1,0,0 +3,0,0,5.678431,0,1,27.6,1,0,0 +0,0,1,5.831296,5.061929,1,17.2,0,0,0 +1,0,1,5.831296,5.061929,1,17.2,0,0,0 +0,0,1,5.831296,5.061929,1,17.2,0,0,0 +0,0,1,0,5.061929,0,0,0,0,0 +2,0,1,0,5.061929,0,0,0,0,0 +0,0,1,0,5.061929,0,0,0,0,0 +7,0,1,6.109248,6.160541,0,11.84267,1,0,0 +11,0,1,6.109248,6.160541,0,11.84267,1,0,0 +1,0,1,6.109248,6.160541,0,11.84267,1,0,0 +5,0,1,6.109248,6.160541,0,13.8,1,0,0 +10,0,1,6.109248,6.160541,0,13.8,1,0,0 +6,0,1,6.109248,6.160541,0,13.8,1,0,0 +24,0,1,6.109248,6.160541,1,11.84267,0,1,0 +39,0,1,6.109248,6.160541,1,11.84267,0,1,0 +12,0,1,6.109248,6.160541,1,11.84267,0,1,0 +8,0,1,6.109248,6.160541,0,6.9,1,0,0 +6,0,1,6.109248,6.160541,0,6.9,1,0,0 +2,0,1,6.109248,6.160541,0,6.9,1,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +4,0,0,0,0,1,20.7,0,1,0 +5,0,0,0,0,1,17.2,1,0,0 +2,3.258096,0,6.802839,8.189134,0,11.84267,0,0,0 +2,3.258096,0,6.802839,8.189134,0,11.84267,0,0,0 +11,3.258096,0,6.802839,8.189134,0,11.84267,0,0,0 +12,3.258096,0,6.802839,8.189134,0,11.84267,0,0,0 +5,3.258096,0,6.802839,8.189134,0,11.84267,0,0,0 +1,3.258096,0,6.802839,8.189134,1,10.3,1,0,0 +4,3.258096,0,6.802839,8.189134,1,10.3,1,0,0 +5,3.258096,0,6.802839,8.189134,1,10.3,1,0,0 +29,3.258096,0,6.802839,8.189134,1,10.3,1,0,0 +11,3.258096,0,6.802839,8.189134,1,20.7,1,0,0 +3,3.258096,0,6.802839,8.189134,1,20.7,1,0,0 +14,3.258096,0,6.802839,8.189134,1,20.7,1,0,0 +5,3.258096,0,6.802839,8.189134,1,20.7,1,0,0 +5,3.258096,0,6.802839,8.189134,1,20.7,1,0,0 +2,0,1,6.109248,6.160541,0,11.84267,1,0,0 +1,0,1,6.109248,6.160541,0,11.84267,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,1 +1,0,1,6.109248,6.160541,0,3.4,0,0,1 +0,0,1,6.109248,6.160541,0,3.4,0,0,1 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +1,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,0,0,1,0 +0,0,1,6.109248,6.160541,0,0,0,1,0 +0,0,1,6.109248,6.160541,0,0,0,1,0 +0,0,1,6.109248,6.160541,0,6.9,0,1,0 +3,0,1,6.109248,6.160541,0,6.9,0,1,0 +0,0,1,6.109248,6.160541,0,6.9,0,1,0 +0,0,1,5.010635,5.061929,0,0,1,0,0 +2,0,1,5.010635,5.061929,0,0,1,0,0 +0,0,1,5.010635,5.061929,0,0,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +1,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +9,3.258096,0,6.907755,8.294049,1,27.6,1,0,0 +7,3.258096,0,6.907755,8.294049,1,27.6,1,0,0 +19,3.258096,0,6.907755,8.294049,1,27.6,1,0,0 +0,3.258096,0,6.907755,8.294049,1,17.2,0,0,0 +0,3.258096,0,6.907755,8.294049,1,17.2,0,0,0 +4,3.258096,0,6.907755,8.294049,1,17.2,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +2,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +4,0,0,0,0,1,13.8,1,0,0 +4,0,0,0,0,1,13.8,1,0,0 +12,0,0,0,0,1,13.8,1,0,0 +8,0,0,0,0,1,13.8,1,0,0 +52,0,0,0,0,1,13.8,1,0,0 +4,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +11,0,0,0,0,0,11.84267,0,0,0 +5,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +6,0,0,0,0,0,11.84267,0,0,0 +11,0,0,0,0,0,11.84267,0,0,0 +8,0,0,0,0,0,11.84267,0,0,0 +8,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +6,0,0,0,0,0,10.3,0,0,0 +11,0,0,5.981414,0,1,10.3,1,0,0 +15,0,0,5.981414,0,1,10.3,1,0,0 +13,0,0,5.981414,0,1,10.3,1,0,0 +13,0,0,5.981414,0,1,10.3,1,0,0 +11,0,0,5.981414,0,1,10.3,1,0,0 +0,0,0,5.192957,0,0,3.4,0,0,0 +0,0,0,5.192957,0,0,3.4,0,0,0 +1,0,0,5.192957,0,0,3.4,0,0,0 +3,0,0,5.192957,0,0,6.9,0,0,0 +3,0,0,5.192957,0,0,6.9,0,0,0 +2,0,0,5.192957,0,0,6.9,0,0,0 +1,0,0,5.192957,0,0,0,0,0,0 +2,0,0,5.192957,0,0,0,0,0,0 +2,0,0,5.192957,0,0,0,0,0,0 +5,0,0,5.192957,0,1,13.8,0,0,1 +1,0,0,5.192957,0,1,13.8,0,0,1 +3,0,0,5.192957,0,1,13.8,0,0,1 +1,4.564348,0,6.720943,6.772237,0,17.2,1,0,0 +1,4.564348,0,6.720943,6.772237,0,17.2,1,0,0 +5,4.564348,0,6.720943,6.772237,0,17.2,1,0,0 +4,4.564348,0,6.720943,6.772237,0,11.84267,0,0,0 +1,4.564348,0,6.720943,6.772237,0,11.84267,0,0,0 +2,4.564348,0,6.720943,6.772237,0,11.84267,0,0,0 +1,4.564348,0,6.720943,6.772237,0,13.8,1,0,0 +4,4.564348,0,6.720943,6.772237,0,13.8,1,0,0 +0,4.564348,0,6.720943,6.772237,0,13.8,1,0,0 +9,4.564348,0,6.720943,6.772237,0,11.84267,1,0,0 +1,4.564348,0,6.720943,6.772237,0,10.3,0,0,0 +0,4.564348,0,6.720943,6.772237,0,10.3,0,0,0 +0,4.564348,0,6.720943,6.772237,0,10.3,0,0,0 +2,4.564348,0,6.720943,6.772237,0,10.3,0,1,0 +4,4.564348,0,6.720943,6.772237,0,11.84267,0,1,0 +0,4.564348,0,6.720943,6.772237,0,11.84267,0,1,0 +2,4.564348,0,6.720943,6.772237,0,11.84267,0,1,0 +2,4.564348,0,6.720943,6.772237,0,11.84267,0,0,0 +2,4.564348,0,6.720943,6.772237,0,11.84267,0,0,0 +0,4.564348,0,6.720943,6.772237,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,20.7,0,0,0 +3,0,1,6.109248,6.160541,0,20.7,0,0,0 +2,0,1,6.109248,6.160541,0,20.7,0,0,0 +4,0,1,6.109248,6.160541,0,20.7,0,0,0 +8,0,1,6.109248,6.160541,0,20.7,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +4,0,1,6.109248,6.160541,0,11.84267,0,0,0 +6,0,1,6.109248,6.160541,0,11.84267,0,0,0 +2,0,1,6.109248,6.160541,1,17.2,0,1,0 +9,0,1,6.109248,6.160541,1,17.2,0,1,0 +6,0,1,6.109248,6.160541,1,17.2,0,1,0 +5,0,1,6.109248,6.160541,1,17.2,0,1,0 +3,0,1,6.109248,6.160541,1,17.2,0,1,0 +19,0,1,5.010635,5.061929,0,31,0,0,0 +32,0,1,5.010635,5.061929,0,31,0,0,0 +3,0,1,5.010635,5.061929,0,31,0,0,0 +3,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,5.975564,6.448223,0,17.2,1,0,0 +0,4.564348,0,5.975564,6.448223,0,17.2,1,0,0 +0,4.564348,0,5.975564,6.448223,0,17.2,1,0,0 +7,0,1,6.109248,6.160541,0,13.8,0,0,0 +2,0,1,6.109248,6.160541,0,13.8,0,0,0 +10,0,1,6.109248,6.160541,0,13.8,0,0,0 +2,0,1,6.109248,6.160541,0,20.7,0,0,0 +2,0,1,6.109248,6.160541,0,20.7,0,0,0 +6,0,1,6.109248,6.160541,0,20.7,0,0,0 +1,0,1,6.109248,6.160541,0,10.3,0,0,0 +1,0,1,6.109248,6.160541,0,10.3,0,0,0 +1,0,1,6.109248,6.160541,0,10.3,0,0,0 +2,0,1,6.109248,6.160541,0,10.3,0,0,0 +7,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +5,0,0,0,0,0,11.84267,1,0,0 +1,0,0,0,0,0,11.84267,1,0,0 +2,0,0,0,0,0,11.84267,1,0,0 +1,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,11.84267,1,0,0 +1,0,0,0,0,0,11.84267,1,0,0 +2,0,0,0,0,0,11.84267,1,0,0 +4,0,1,5.010635,5.061929,0,27.6,1,0,0 +1,0,1,5.010635,5.061929,0,27.6,1,0,0 +2,0,1,5.010635,5.061929,0,27.6,1,0,0 +3,0,1,5.010635,5.061929,0,27.6,1,0,0 +3,0,1,5.010635,5.061929,0,27.6,1,0,0 +3,0,0,0,0,0,0,1,0,0 +2,0,0,0,0,0,0,1,0,0 +2,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,1,0,0 +2,0,0,0,0,0,11.84267,1,0,0 +5,0,0,0,0,0,11.84267,1,0,0 +7,0,0,0,0,0,17.2,1,0,0 +4,0,0,0,0,0,17.2,1,0,0 +3,0,0,0,0,0,17.2,1,0,0 +0,3.258096,0,6.146436,7.532731,0,6.9,1,0,0 +0,3.258096,0,6.146436,7.532731,0,6.9,1,0,0 +1,3.258096,0,6.146436,7.532731,0,6.9,1,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +4,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +1,4.564348,0,6.907755,6.959049,0,0,1,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +1,4.564348,0,6.907755,6.959049,0,0,1,0,0 +1,4.564348,0,6.907755,6.959049,0,0,1,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +9,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +2,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +4,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +34,3.258096,0,6.282267,7.668561,1,31,0,1,0 +13,3.258096,0,6.282267,7.668561,0,10.3,0,1,0 +2,0,1,6.645819,6.160541,0,24.1,1,0,0 +4,0,1,6.645819,6.160541,0,24.1,1,0,0 +1,0,1,6.645819,6.160541,0,24.1,1,0,0 +9,0,1,6.645819,6.160541,0,11.84267,0,0,0 +35,0,1,6.645819,6.160541,0,11.84267,0,0,0 +30,0,1,6.645819,6.160541,0,11.84267,0,0,0 +5,0,1,6.645819,6.160541,0,11.84267,0,0,0 +2,0,1,6.645819,6.160541,0,11.84267,0,0,0 +1,0,1,6.645819,6.160541,0,11.84267,0,0,0 +0,0,1,6.645819,6.160541,0,17.2,0,0,0 +1,0,1,6.645819,6.160541,0,17.2,0,0,0 +0,0,1,6.645819,6.160541,0,17.2,0,0,0 +4,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,6.9,0,0,0 +4,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,1,0,0,0,0 +2,0,0,0,0,1,0,0,0,0 +0,0,0,0,0,1,0,0,0,0 +7,0,0,0,0,1,34.5,1,0,0 +2,0,0,0,0,1,34.5,1,0,0 +1,0,0,0,0,1,34.5,1,0,0 +2,0,1,5.703783,5.755076,0,11.84267,1,0,0 +2,0,1,5.703783,5.755076,0,11.84267,1,0,0 +4,0,1,5.703783,5.755076,0,11.84267,1,0,0 +3,0,1,5.703783,5.755076,0,24.1,1,0,0 +1,0,1,5.703783,5.755076,0,24.1,1,0,0 +1,0,1,5.703783,5.755076,0,24.1,1,0,0 +5,0,1,5.703783,5.755076,0,13.8,1,0,0 +11,0,1,5.703783,5.755076,0,13.8,1,0,0 +1,0,1,5.703783,5.755076,0,13.8,1,0,0 +0,0,1,5.703783,5.755076,0,10.3,0,1,0 +2,0,1,5.703783,5.755076,0,10.3,0,1,0 +6,0,1,5.703783,5.755076,0,10.3,0,1,0 +4,0,0,4.162003,0,0,10.3,0,0,0 +1,0,0,4.162003,0,0,10.3,0,0,0 +5,0,0,4.162003,0,0,10.3,0,0,0 +8,0,0,4.162003,0,0,10.3,0,0,0 +6,0,0,4.162003,0,0,10.3,0,0,0 +3,0,1,0,5.061929,1,13.8,0,1,0 +1,0,1,0,5.061929,1,13.8,0,1,0 +3,0,1,0,5.061929,1,13.8,0,1,0 +2,0,1,0,5.061929,1,13.8,0,1,0 +3,0,1,0,5.061929,1,13.8,0,1,0 +0,3.258096,0,6.200509,8.248006,0,6.9,0,0,0 +0,3.258096,0,6.200509,8.248006,0,6.9,0,0,0 +0,3.258096,0,6.200509,8.248006,0,6.9,0,0,0 +3,3.258096,0,6.200509,8.248006,0,10.3,0,0,0 +2,3.258096,0,6.200509,8.248006,0,10.3,0,0,0 +5,3.258096,0,6.200509,8.248006,0,10.3,0,0,0 +3,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +1,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +3,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +2,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +3,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +0,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +1,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +5,4.564348,0,0,6.529803,1,13.8,0,0,0 +7,4.564348,0,0,6.529803,1,13.8,0,0,0 +3,4.564348,0,0,6.529803,1,13.8,0,0,0 +4,4.564348,0,0,6.529803,0,17.2,0,0,1 +1,4.564348,0,0,6.529803,0,17.2,0,0,1 +0,4.564348,0,0,6.529803,0,17.2,0,0,1 +6,4.564348,0,0,6.529803,1,11.84267,0,0,0 +2,4.564348,0,0,6.529803,1,11.84267,0,0,0 +3,4.564348,0,0,6.529803,1,11.84267,0,0,0 +2,4.564348,0,0,6.529803,0,11.84267,0,0,0 +1,4.564348,0,0,6.529803,0,11.84267,0,0,0 +6,4.564348,0,0,6.529803,0,11.84267,0,0,0 +1,0,0,5.496512,0,0,20.7,0,0,0 +5,0,0,5.496512,0,0,20.7,0,0,0 +1,0,0,5.496512,0,0,20.7,0,0,0 +1,0,0,5.496512,0,0,6.9,0,0,0 +4,0,0,5.496512,0,0,6.9,0,0,0 +6,0,0,5.496512,0,0,6.9,0,0,0 +38,0,0,0,0,0,3.4,0,0,0 +26,0,0,0,0,0,3.4,0,0,0 +32,0,0,0,0,0,3.4,0,0,0 +2,4.564348,0,6.703188,6.754481,0,24.1,1,0,0 +8,4.564348,0,6.703188,6.754481,0,24.1,1,0,0 +10,4.564348,0,6.703188,6.754481,0,24.1,1,0,0 +0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,11.84267,1,0,0 +2,0,0,0,0,0,11.84267,1,0,0 +8,0,0,0,0,0,11.84267,1,0,0 +4,0,0,0,0,0,11.84267,1,0,0 +4,0,0,0,0,0,11.84267,1,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +6,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +5,0,0,0,0,0,10.3,1,0,0 +5,0,0,0,0,0,10.3,1,0,0 +4,0,0,0,0,0,10.3,1,0,0 +2,0,0,0,0,0,10.3,1,0,0 +5,0,0,0,0,0,10.3,1,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +6,0,0,0,0,0,11.84267,0,0,0 +4,0,0,0,0,0,11.84267,0,0,0 +6,0,0,0,0,0,11.84267,0,0,0 +4,0,0,0,0,0,11.84267,0,0,0 +3,3.258096,0,6.098074,7.484369,0,24.1,1,0,0 +0,3.258096,0,6.098074,7.484369,0,24.1,1,0,0 +1,3.258096,0,6.098074,7.484369,0,24.1,1,0,0 +3,0,1,5.852662,5.755076,0,17.2,1,0,0 +1,0,1,5.852662,5.755076,0,17.2,1,0,0 +1,0,1,5.852662,5.755076,0,17.2,1,0,0 +20,0,1,5.852662,5.755076,1,27.6,0,1,0 +38,0,1,5.852662,5.755076,1,27.6,0,1,0 +26,0,1,5.852662,5.755076,1,27.6,0,1,0 +4,3.258096,0,6.907755,8.294049,0,10.3,0,0,0 +1,3.258096,0,6.907755,8.294049,0,10.3,0,0,0 +0,3.258096,0,6.907755,8.294049,0,10.3,0,0,0 +1,3.258096,0,6.907755,8.294049,1,6.9,0,0,0 +0,3.258096,0,6.907755,8.294049,1,6.9,0,0,0 +0,3.258096,0,6.907755,8.294049,1,6.9,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +0,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,5.886104,7.272398,1,27.6,0,0,0 +9,3.258096,0,5.886104,7.272398,1,27.6,0,0,0 +3,3.258096,0,5.886104,7.272398,1,27.6,0,0,0 +6,3.258096,0,5.886104,7.272398,1,27.6,0,0,0 +3,3.258096,0,5.886104,7.272398,1,27.6,0,0,0 +5,3.258096,0,5.886104,7.272398,1,11.84267,0,1,0 +12,3.258096,0,5.886104,7.272398,1,11.84267,0,1,0 +2,3.258096,0,5.886104,7.272398,1,11.84267,0,1,0 +2,3.258096,0,5.886104,7.272398,1,11.84267,0,1,0 +2,3.258096,0,5.886104,7.272398,1,11.84267,0,1,0 +8,3.258096,0,5.886104,7.272398,1,17.2,0,0,0 +13,3.258096,0,5.886104,7.272398,1,17.2,0,0,0 +8,3.258096,0,5.886104,7.272398,1,17.2,0,0,0 +5,3.258096,0,5.886104,7.272398,1,17.2,0,0,0 +1,3.258096,0,5.886104,7.272398,1,17.2,0,0,0 +9,3.258096,0,5.886104,7.272398,0,11.84267,0,0,0 +11,3.258096,0,5.886104,7.272398,0,11.84267,0,0,0 +5,3.258096,0,5.886104,7.272398,0,11.84267,0,0,0 +3,3.258096,0,5.886104,7.272398,0,11.84267,0,0,0 +0,3.258096,0,5.886104,7.272398,0,11.84267,0,0,0 +5,0,1,6.109248,6.160541,0,11.84267,0,0,0 +4,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +9,0,1,6.109248,6.160541,0,13.8,1,0,0 +3,0,1,6.109248,6.160541,0,13.8,1,0,0 +4,0,1,6.109248,6.160541,0,13.8,1,0,0 +7,0,1,6.109248,6.160541,0,11.84267,0,0,0 +3,0,1,6.109248,6.160541,0,11.84267,0,0,0 +2,0,1,6.109248,6.160541,0,11.84267,0,0,0 +9,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +9,0,0,0,0,1,31,0,1,0 +5,0,0,0,0,1,31,0,1,0 +24,0,0,0,0,1,31,0,1,0 +6,0,0,0,0,1,17.2,0,1,0 +4,0,0,0,0,1,17.2,0,1,0 +2,0,0,0,0,1,17.2,0,1,0 +1,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,24.1,0,0,0 +2,0,0,0,0,0,24.1,0,0,0 +2,0,0,0,0,0,24.1,0,0,0 +10,4.564348,0,6.907755,6.959049,1,20.7,0,1,0 +6,4.564348,0,6.907755,6.959049,1,20.7,0,1,0 +1,4.564348,0,6.907755,6.959049,1,20.7,0,1,0 +2,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,1,0,0 +2,0,1,6.109248,6.160541,0,10.3,1,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +2,0,1,6.109248,6.160541,0,11.84267,0,0,0 +3,0,0,0,0,0,17.2,1,0,0 +0,0,0,0,0,0,17.2,1,0,0 +5,0,0,0,0,0,17.2,1,0,0 +19,3.258096,0,6.148917,7.535211,1,34.5,1,0,0 +32,3.258096,0,6.148917,7.535211,1,34.5,1,0,0 +27,3.258096,0,6.148917,7.535211,1,34.5,1,0,0 +0,3.258096,0,0,6.040255,0,6.9,1,0,0 +0,3.258096,0,0,6.040255,0,6.9,1,0,0 +6,3.258096,0,0,6.040255,0,6.9,1,0,0 +11,0,1,0,5.061929,0,10.3,0,0,0 +2,0,1,0,5.061929,0,10.3,0,0,0 +9,0,1,0,5.061929,0,10.3,0,0,0 +3,0,0,0,0,1,27.6,1,0,0 +2,0,0,0,0,1,27.6,1,0,0 +2,0,0,0,0,1,27.6,1,0,0 +6,0,0,0,0,0,11.84267,1,0,0 +0,0,0,0,0,0,11.84267,1,0,0 +0,0,0,0,0,0,11.84267,1,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +5,0,0,0,0,1,17.2,1,0,0 +6,0,0,0,0,1,17.2,1,0,0 +5,0,0,0,0,1,17.2,1,0,0 +0,0,0,0,0,0,11.84267,1,0,0 +2,0,0,0,0,0,11.84267,1,0,0 +0,0,0,0,0,0,11.84267,1,0,0 +0,0,0,0,0,0,10.3,0,0,0 +2,0,0,0,0,0,10.3,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +3,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +3,0,0,0,0,0,6.9,1,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,1,0,0 +3,0,0,0,0,0,11.84267,1,0,0 +2,0,0,0,0,0,11.84267,1,0,0 +4,4.564348,0,6.907755,6.959049,0,37.9,0,0,0 +3,4.564348,0,6.907755,6.959049,0,37.9,0,0,0 +4,4.564348,0,6.907755,6.959049,0,37.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +38,0,1,6.109248,6.160541,0,11.84267,0,0,0 +37,0,1,6.109248,6.160541,0,11.84267,0,0,0 +16,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +2,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +3,3.258096,0,0,8.294049,0,11.84267,0,0,0 +3,3.258096,0,0,8.294049,0,11.84267,0,0,0 +0,3.258096,0,0,8.294049,1,10.3,0,0,0 +4,3.258096,0,0,8.294049,1,31,0,1,0 +4,3.258096,0,0,8.294049,0,11.84267,0,0,0 +0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,1,17.2,0,1,0 +8,0,0,0,0,1,17.2,0,1,0 +21,0,0,0,0,1,17.2,0,1,0 +2,0,0,0,0,1,17.2,0,1,0 +11,0,0,0,0,0,20.7,1,0,0 +0,0,0,0,0,0,20.7,1,0,0 +2,0,0,0,0,0,20.7,1,0,0 +7,0,0,0,0,0,20.7,1,0,0 +3,0,0,0,0,0,20.7,1,0,0 +0,3.258096,0,6.109248,7.495542,0,3.4,0,0,0 +1,3.258096,0,6.109248,7.495542,0,3.4,0,0,0 +1,3.258096,0,6.109248,7.495542,0,3.4,0,0,0 +2,3.258096,0,6.109248,7.495542,0,3.4,0,0,0 +4,3.258096,0,6.109248,7.495542,0,3.4,0,0,0 +5,0,0,0,0,0,17.2,1,0,0 +3,0,0,0,0,0,17.2,1,0,0 +2,0,0,0,0,0,17.2,1,0,0 +1,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +1,0,1,6.109248,6.160541,0,13.8,1,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +5,0,1,6.109248,6.160541,0,11.84267,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +2,0,1,6.109248,6.160541,0,11.84267,1,0,0 +1,0,1,6.109248,6.160541,0,11.84267,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +8,4.564348,0,6.620273,6.671566,0,6.9,0,0,0 +5,4.564348,0,6.620273,6.671566,0,6.9,0,0,0 +8,4.564348,0,6.620273,6.671566,0,6.9,0,0,0 +11,4.564348,0,6.620273,6.671566,1,31,0,0,1 +10,4.564348,0,6.620273,6.671566,1,31,0,0,1 +7,4.564348,0,6.620273,6.671566,1,31,0,0,1 +0,0,0,0,0,0,20.7,1,0,0 +4,0,0,0,0,0,20.7,1,0,0 +0,0,0,0,0,0,20.7,1,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,24.1,1,0,0 +3,0,0,0,0,0,24.1,1,0,0 +3,0,0,0,0,0,24.1,1,0,0 +0,0,0,0,0,0,11.84267,1,0,0 +3,0,0,0,0,0,11.84267,1,0,0 +0,0,0,0,0,0,11.84267,1,0,0 +3,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +1,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +2,3.258096,0,6.907755,8.294049,0,13.8,1,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,1,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,1,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,1,0,0 +3,0,0,6.047372,0,0,0,0,0,0 +2,0,0,6.047372,0,0,0,0,0,0 +1,0,0,6.047372,0,0,0,0,0,0 +3,0,0,6.047372,0,0,0,0,0,0 +7,0,0,6.047372,0,0,0,0,0,0 +5,0,0,6.047372,0,0,0,0,0,0 +3,0,0,6.047372,0,0,11.84267,0,0,0 +6,0,0,6.047372,0,0,11.84267,0,0,0 +3,0,0,6.047372,0,0,11.84267,0,0,0 +3,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +3,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +4,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +3,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,3.258096,0,6.415506,7.8018,1,20.7,0,1,0 +1,3.258096,0,5.700611,7.086905,0,3.4,0,0,0 +0,3.258096,0,5.700611,7.086905,0,3.4,0,0,0 +0,3.258096,0,5.700611,7.086905,0,3.4,0,0,0 +4,0,1,6.228511,6.160541,0,0,0,1,0 +1,0,1,6.228511,6.160541,0,0,0,1,0 +0,0,1,6.228511,6.160541,0,0,0,1,0 +0,0,1,6.228511,6.160541,0,0,0,1,0 +10,0,1,6.228511,6.160541,0,20.7,1,0,0 +5,0,1,6.228511,6.160541,0,20.7,1,0,0 +2,0,1,6.228511,6.160541,0,20.7,1,0,0 +3,0,1,6.228511,6.160541,0,20.7,1,0,0 +4,0,1,6.228511,6.160541,0,20.7,1,0,0 +9,0,1,6.228511,6.160541,0,6.9,0,1,0 +1,0,1,6.228511,6.160541,0,6.9,0,1,0 +2,0,1,6.228511,6.160541,0,6.9,0,1,0 +0,0,1,6.228511,6.160541,0,6.9,0,1,0 +6,0,1,6.228511,6.160541,0,6.9,0,1,0 +9,0,1,3.789177,5.061929,0,17.2,0,0,0 +1,0,1,3.789177,5.061929,0,17.2,0,0,0 +0,0,1,3.789177,5.061929,0,17.2,0,0,0 +5,0,0,5.355642,0,0,10.3,0,0,0 +0,0,0,5.355642,0,0,10.3,0,0,0 +0,0,0,5.355642,0,0,10.3,0,0,0 +1,0,0,5.355642,0,0,10.3,0,0,0 +1,0,0,5.355642,0,0,10.3,0,0,0 +0,0,0,6.246107,0,0,0,0,0,0 +1,0,0,6.246107,0,0,0,0,0,0 +8,0,0,6.246107,0,0,0,0,0,0 +5,0,0,6.246107,0,0,11.84267,0,1,0 +2,0,0,6.246107,0,0,11.84267,0,1,0 +4,0,0,6.246107,0,0,11.84267,0,1,0 +0,0,0,6.246107,0,0,11.84267,0,0,0 +5,0,0,6.246107,0,0,11.84267,0,0,0 +3,0,0,6.246107,0,0,11.84267,0,0,0 +2,0,0,6.246107,0,0,10.3,1,0,0 +7,0,0,6.246107,0,0,10.3,1,0,0 +7,0,0,6.246107,0,0,10.3,1,0,0 +2,0,0,5.219274,0,0,10.3,1,0,0 +1,0,0,5.219274,0,0,10.3,1,0,0 +0,0,0,5.219274,0,0,10.3,1,0,0 +11,0,0,5.219274,0,1,17.2,0,1,0 +2,0,0,5.219274,0,1,17.2,0,1,0 +1,0,0,5.219274,0,1,17.2,0,1,0 +1,0,0,5.219274,0,0,13.8,0,1,0 +0,0,0,5.219274,0,0,13.8,0,1,0 +5,0,0,5.219274,0,0,13.8,0,1,0 +0,4.564348,0,0,6.265902,0,3.4,0,0,0 +0,4.564348,0,0,6.265902,0,3.4,0,0,0 +0,4.564348,0,0,6.265902,0,3.4,0,0,0 +0,4.564348,0,0,6.265902,0,11.84267,0,0,0 +0,4.564348,0,0,6.265902,0,11.84267,0,0,0 +4,4.564348,0,0,6.265902,0,11.84267,0,0,0 +1,4.564348,0,0,6.265902,0,10.3,0,0,0 +1,4.564348,0,0,6.265902,0,10.3,0,0,0 +5,4.564348,0,0,6.265902,0,10.3,0,0,0 +6,4.564348,0,0,6.265902,0,11.84267,0,0,0 +3,4.564348,0,0,6.265902,0,11.84267,0,0,0 +2,4.564348,0,0,6.265902,0,11.84267,0,0,0 +0,0,1,0,5.755076,0,10.3,1,0,0 +1,0,1,0,5.755076,0,10.3,1,0,0 +2,0,1,0,5.755076,0,10.3,1,0,0 +0,0,1,0,5.755076,0,10.3,1,0,0 +1,0,1,0,5.755076,0,10.3,1,0,0 +0,0,1,0,5.755076,0,10.3,1,0,0 +4,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +2,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +10,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +3,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +1,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +0,3.258096,0,6.342209,7.728504,0,3.4,0,0,0 +1,3.258096,0,6.342209,7.728504,0,3.4,0,0,0 +1,3.258096,0,6.342209,7.728504,0,3.4,0,0,0 +15,3.258096,0,6.342209,7.728504,1,27.6,1,0,0 +6,3.258096,0,6.342209,7.728504,1,27.6,1,0,0 +12,3.258096,0,6.342209,7.728504,1,27.6,1,0,0 +6,0,1,6.489873,6.160541,0,13.8,0,0,0 +1,0,1,6.489873,6.160541,0,13.8,0,0,0 +0,0,1,6.489873,6.160541,0,13.8,0,0,0 +0,0,1,6.489873,6.160541,0,11.84267,0,0,0 +1,0,1,6.489873,6.160541,0,11.84267,0,0,0 +0,0,1,6.489873,6.160541,0,11.84267,0,0,0 +0,0,1,6.489873,6.160541,0,24.1,0,0,0 +1,0,1,6.489873,6.160541,0,24.1,0,0,0 +0,0,1,6.489873,6.160541,0,24.1,0,0,0 +0,0,1,6.489873,6.160541,0,11.84267,0,0,0 +0,0,1,6.489873,6.160541,0,11.84267,0,0,0 +0,0,1,6.489873,6.160541,0,11.84267,0,0,0 +20,0,1,6.489873,6.160541,1,11.84267,0,0,0 +18,0,1,6.489873,6.160541,1,11.84267,0,0,0 +16,0,1,6.489873,6.160541,1,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +5,0,0,0,0,0,11.84267,0,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +7,0,0,0,0,0,11.84267,0,0,0 +4,0,0,0,0,1,6.9,1,0,0 +5,0,0,0,0,1,6.9,1,0,0 +6,0,0,0,0,1,6.9,1,0,0 +15,0,0,0,0,1,6.9,1,0,0 +6,0,0,0,0,1,6.9,1,0,0 +0,0,0,0,0,0,13.8,0,0,0 +0,0,0,0,0,0,13.8,0,0,0 +0,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +1,0,0,0,0,0,44.8,0,1,0 +3,0,0,0,0,0,44.8,0,1,0 +3,0,0,0,0,0,44.8,0,1,0 +0,3.258096,0,0,8.294049,0,6.9,0,0,0 +0,3.258096,0,0,8.294049,0,6.9,0,0,0 +0,3.258096,0,0,8.294049,0,6.9,0,0,0 +9,0,0,0,0,1,20.7,1,0,0 +18,0,0,0,0,1,20.7,1,0,0 +3,0,0,0,0,1,20.7,1,0,0 +0,0,0,0,0,1,20.7,1,0,0 +1,0,0,0,0,1,20.7,1,0,0 +9,0,0,0,0,0,11.84267,1,0,0 +3,0,0,0,0,0,11.84267,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +4,0,0,0,0,0,6.9,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +4,0,0,0,0,1,6.9,1,0,0 +2,0,0,0,0,1,6.9,1,0,0 +0,0,0,0,0,1,6.9,1,0,0 +0,0,0,0,0,1,6.9,1,0,0 +0,0,0,0,0,1,6.9,1,0,0 +0,0,0,4.94876,0,1,6.9,1,0,0 +1,0,0,4.94876,0,1,6.9,1,0,0 +2,0,0,4.94876,0,1,6.9,1,0,0 +0,0,0,4.94876,0,1,6.9,1,0,0 +1,0,0,4.94876,0,1,6.9,1,0,0 +0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,17.2,0,0,0 +0,0,0,0,0,0,17.2,0,0,0 +1,0,0,0,0,0,17.2,0,0,0 +0,0,0,0,0,0,17.2,0,0,0 +2,0,0,0,0,0,17.2,0,0,0 +9,0,0,0,0,1,6.9,1,0,0 +11,0,0,0,0,1,6.9,1,0,0 +6,0,0,0,0,1,6.9,1,0,0 +10,0,0,0,0,1,6.9,1,0,0 +5,0,0,0,0,1,6.9,1,0,0 +8,0,1,6.771248,6.160541,0,6.9,0,0,0 +5,0,1,6.771248,6.160541,0,6.9,0,0,0 +3,0,1,6.771248,6.160541,0,6.9,0,0,0 +8,0,1,6.771248,6.160541,1,10.3,1,0,0 +5,0,1,6.771248,6.160541,1,10.3,1,0,0 +8,0,1,6.771248,6.160541,1,10.3,1,0,0 +2,0,1,6.771248,6.160541,0,11.84267,0,0,0 +1,0,1,6.771248,6.160541,0,11.84267,0,0,0 +0,0,1,6.771248,6.160541,0,11.84267,0,0,0 +0,4.564348,0,0,6.959049,0,0,0,0,0 +1,4.564348,0,0,6.959049,0,0,0,0,0 +0,4.564348,0,0,6.959049,0,0,0,0,0 +0,4.564348,0,0,6.959049,0,0,0,0,0 +1,4.564348,0,0,6.959049,0,0,0,0,0 +2,4.564348,0,0,6.959049,0,10.3,0,0,0 +1,4.564348,0,0,6.959049,0,10.3,0,0,0 +0,4.564348,0,0,6.959049,0,10.3,0,0,0 +0,4.564348,0,0,6.959049,0,10.3,0,0,0 +0,4.564348,0,0,6.959049,0,10.3,0,0,0 +1,4.564348,0,0,6.959049,0,6.9,0,0,0 +1,4.564348,0,0,6.959049,0,6.9,0,0,0 +0,4.564348,0,0,6.959049,0,6.9,0,0,0 +2,4.564348,0,0,6.959049,0,6.9,0,0,0 +1,4.564348,0,0,6.959049,0,6.9,0,0,0 +8,4.564348,0,0,6.959049,0,11.84267,0,0,0 +2,4.564348,0,0,6.959049,0,11.84267,0,0,0 +4,4.564348,0,0,6.959049,0,11.84267,0,0,0 +6,4.564348,0,0,6.959049,0,11.84267,0,0,0 +3,4.564348,0,0,6.959049,0,11.84267,0,0,0 +0,4.564348,0,0,6.959049,0,0,0,0,0 +1,4.564348,0,0,6.959049,0,0,0,0,0 +1,4.564348,0,0,6.959049,0,0,0,0,0 +0,4.564348,0,0,6.959049,0,0,0,0,0 +1,4.564348,0,0,6.959049,0,0,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +5,3.258096,0,6.907755,8.294049,0,13.8,0,0,0 +10,0,1,5.703783,5.755076,0,13.8,0,0,0 +0,0,1,5.703783,5.755076,0,13.8,0,0,0 +0,0,1,5.703783,5.755076,0,13.8,0,0,0 +1,0,1,5.703783,5.755076,1,10.3,1,0,0 +0,0,1,5.703783,5.755076,1,10.3,1,0,0 +1,0,1,5.703783,5.755076,1,10.3,1,0,0 +2,3.258096,0,6.907755,8.294049,0,20.7,1,0,0 +1,3.258096,0,6.907755,8.294049,0,20.7,1,0,0 +3,3.258096,0,6.907755,8.294049,0,20.7,1,0,0 +5,3.258096,0,6.515601,7.038784,0,17.2,0,0,0 +1,3.258096,0,6.515601,7.038784,0,17.2,0,0,0 +2,3.258096,0,6.515601,7.038784,0,17.2,0,0,0 +2,3.258096,0,6.515601,7.038784,0,17.2,0,0,0 +6,3.258096,0,6.515601,7.038784,0,17.2,0,0,0 +0,3.258096,0,6.515601,7.038784,0,3.4,0,0,0 +1,3.258096,0,6.515601,7.038784,0,3.4,0,0,0 +0,3.258096,0,6.515601,7.038784,0,3.4,0,0,0 +0,3.258096,0,6.515601,7.038784,0,3.4,0,0,0 +0,3.258096,0,6.515601,7.038784,0,3.4,0,0,0 +11,3.258096,0,6.515601,7.038784,0,10.3,0,0,0 +18,3.258096,0,6.515601,7.038784,0,10.3,0,0,0 +1,3.258096,0,6.515601,7.038784,0,10.3,0,0,0 +8,3.258096,0,6.515601,7.038784,0,10.3,0,0,0 +0,3.258096,0,6.515601,7.038784,0,10.3,0,0,0 +0,3.258096,0,6.515601,7.038784,0,10.3,0,0,0 +0,3.258096,0,6.515601,7.038784,0,10.3,0,0,0 +1,3.258096,0,6.814652,8.200947,0,11.84267,1,0,0 +0,3.258096,0,6.814652,8.200947,0,11.84267,1,0,0 +0,3.258096,0,6.814652,8.200947,0,11.84267,1,0,0 +1,3.258096,0,6.814652,8.200947,0,11.84267,1,0,0 +0,3.258096,0,6.814652,8.200947,0,11.84267,1,0,0 +0,3.258096,0,6.814652,8.200947,0,11.84267,1,0,0 +3,3.258096,0,6.814652,8.200947,0,17.2,1,0,0 +0,3.258096,0,6.814652,8.200947,0,17.2,1,0,0 +0,3.258096,0,6.814652,8.200947,0,17.2,1,0,0 +0,3.258096,0,6.814652,8.200947,0,10.3,1,0,0 +0,3.258096,0,6.814652,8.200947,0,10.3,1,0,0 +0,3.258096,0,6.814652,8.200947,0,10.3,1,0,0 +2,3.258096,0,6.814652,8.200947,0,11.84267,1,0,0 +0,3.258096,0,6.814652,8.200947,0,11.84267,1,0,0 +0,3.258096,0,6.814652,8.200947,0,11.84267,1,0,0 +1,3.258096,0,6.582247,7.654443,0,13.8,1,0,0 +0,3.258096,0,6.582247,7.654443,0,13.8,1,0,0 +2,3.258096,0,6.582247,7.654443,0,13.8,1,0,0 +8,3.258096,0,6.582247,7.654443,0,0,0,0,0 +4,3.258096,0,6.582247,7.654443,0,0,0,0,0 +4,3.258096,0,6.582247,7.654443,0,0,0,0,0 +8,3.258096,0,6.582247,7.654443,0,11.84267,0,0,0 +7,3.258096,0,6.582247,7.654443,0,11.84267,0,0,0 +10,3.258096,0,6.582247,7.654443,0,11.84267,0,0,0 +11,3.258096,0,6.582247,7.654443,0,11.84267,0,0,0 +10,3.258096,0,6.582247,7.654443,0,11.84267,0,0,0 +7,3.258096,0,6.582247,7.654443,0,11.84267,0,0,0 +1,4.564348,0,6.276794,6.767828,0,3.4,1,0,0 +1,4.564348,0,6.276794,6.767828,0,3.4,1,0,0 +0,4.564348,0,6.276794,6.767828,0,3.4,1,0,0 +1,4.564348,0,6.276794,6.767828,0,11.84267,1,0,0 +0,4.564348,0,6.276794,6.767828,0,11.84267,1,0,0 +0,4.564348,0,6.276794,6.767828,0,11.84267,1,0,0 +0,4.564348,0,6.276794,6.767828,0,20.7,1,0,0 +0,4.564348,0,6.276794,6.767828,0,20.7,1,0,0 +0,4.564348,0,6.276794,6.767828,0,20.7,1,0,0 +1,4.564348,0,6.276794,6.767828,0,3.4,1,0,0 +0,4.564348,0,6.276794,6.767828,0,3.4,1,0,0 +0,4.564348,0,6.276794,6.767828,0,11.84267,1,0,0 +0,4.564348,0,6.276794,6.767828,0,11.84267,1,0,0 +0,4.564348,0,6.276794,6.767828,0,11.84267,1,0,0 +0,4.564348,0,6.276794,6.767828,0,10.3,1,0,0 +0,4.564348,0,6.276794,6.767828,0,10.3,1,0,0 +0,4.564348,0,6.276794,6.767828,0,10.3,1,0,0 +2,0,0,0,0,1,20.7,1,0,0 +0,0,0,0,0,1,20.7,1,0,0 +0,0,0,0,0,1,20.7,1,0,0 +2,0,0,0,0,1,20.7,1,0,0 +5,0,0,0,0,1,20.7,1,0,0 +4,0,0,0,0,0,10.3,1,0,0 +2,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +3,0,0,0,0,0,10.3,1,0,0 +4,0,0,0,0,0,10.3,1,0,0 +3,0,0,5.51986,0,0,13.8,0,0,0 +0,0,0,5.51986,0,0,13.8,0,0,0 +1,0,0,5.51986,0,0,13.8,0,0,0 +1,0,0,5.51986,0,0,11.84267,0,0,0 +0,0,0,5.51986,0,0,11.84267,0,0,0 +0,0,0,5.51986,0,0,11.84267,0,0,0 +8,0,0,5.51986,0,0,11.84267,1,0,0 +4,0,0,5.51986,0,0,11.84267,1,0,0 +0,0,0,5.51986,0,0,11.84267,1,0,0 +4,0,0,5.51986,0,0,10.3,1,0,0 +15,0,0,0,0,0,6.9,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +17,0,0,0,0,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,1,17.2,1,0,0 +3,0,1,6.109248,6.160541,0,13.8,0,1,0 +1,0,1,5.703783,5.755076,0,3.4,0,0,0 +1,0,1,5.703783,5.755076,0,3.4,0,0,0 +0,0,1,5.703783,5.755076,0,3.4,0,0,0 +0,0,1,5.703783,5.755076,0,6.9,0,0,0 +5,0,1,5.703783,5.755076,0,6.9,0,0,0 +1,0,1,5.703783,5.755076,0,6.9,0,0,0 +0,0,1,5.460734,6.160541,0,24.1,1,0,0 +3,0,1,5.460734,6.160541,0,24.1,1,0,0 +0,0,1,5.460734,6.160541,0,24.1,1,0,0 +5,0,1,5.460734,6.160541,0,11.84267,1,0,0 +2,0,1,5.460734,6.160541,0,11.84267,1,0,0 +2,0,1,5.460734,6.160541,0,11.84267,1,0,0 +8,0,1,5.460734,6.160541,0,11.84267,1,0,0 +2,0,1,5.460734,6.160541,0,11.84267,1,0,0 +4,0,1,5.460734,6.160541,0,11.84267,1,0,0 +5,0,1,5.460734,6.160541,0,20.7,1,0,0 +0,0,1,5.460734,6.160541,0,20.7,1,0,0 +4,0,1,5.460734,6.160541,0,20.7,1,0,0 +11,0,1,5.460734,6.160541,0,11.84267,1,0,0 +5,0,1,5.460734,6.160541,0,11.84267,1,0,0 +11,0,1,5.460734,6.160541,0,11.84267,1,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +2,0,0,6.288007,0,0,3.4,0,0,0 +1,0,0,6.288007,0,0,3.4,0,0,0 +0,0,0,6.288007,0,0,3.4,0,0,0 +8,0,0,6.288007,0,0,11.84267,0,0,0 +7,0,0,6.288007,0,0,11.84267,0,0,0 +1,0,0,6.288007,0,0,11.84267,0,0,0 +4,0,0,6.288007,0,0,11.84267,0,0,0 +0,0,0,6.288007,0,0,11.84267,0,0,0 +0,0,0,6.288007,0,0,11.84267,0,0,0 +1,0,0,6.288007,0,0,13.8,1,0,0 +1,0,0,6.288007,0,0,13.8,1,0,0 +2,0,0,6.288007,0,0,13.8,1,0,0 +2,3.258096,0,6.253829,8.294049,0,10.3,1,0,0 +0,3.258096,0,6.253829,8.294049,0,10.3,1,0,0 +3,3.258096,0,6.253829,8.294049,0,10.3,1,0,0 +1,3.258096,0,6.253829,8.294049,0,10.3,1,0,0 +0,3.258096,0,6.253829,8.294049,0,10.3,1,0,0 +0,3.258096,0,6.253829,8.294049,0,0,1,0,0 +5,3.258096,0,6.253829,8.294049,0,0,1,0,0 +0,3.258096,0,6.253829,8.294049,0,0,1,0,0 +1,3.258096,0,6.253829,8.294049,0,0,1,0,0 +0,3.258096,0,6.253829,8.294049,0,0,1,0,0 +6,0,0,5.762052,0,1,24.1,0,1,0 +2,0,0,5.762052,0,1,24.1,0,1,0 +3,0,0,5.762052,0,1,24.1,0,1,0 +0,0,0,5.762052,0,0,11.84267,0,0,0 +0,0,0,5.762052,0,0,11.84267,0,0,0 +0,0,0,5.762052,0,0,11.84267,0,0,0 +0,0,0,5.762052,0,0,11.84267,0,0,0 +0,0,0,5.762052,0,0,11.84267,0,0,0 +0,0,0,5.762052,0,0,11.84267,0,0,0 +3,0,0,5.375278,0,.1981873,11.84267,1,0,0 +4,0,0,5.375278,0,.1981873,11.84267,1,0,0 +0,0,0,5.375278,0,.1981873,11.84267,1,0,0 +6,0,0,5.375278,0,.1981873,11.84267,0,1,0 +6,0,0,5.375278,0,.1981873,11.84267,0,1,0 +1,0,0,5.375278,0,.1981873,11.84267,0,1,0 +2,0,0,5.785915,0,0,3.4,1,0,0 +2,0,0,5.785915,0,0,3.4,1,0,0 +2,0,0,5.785915,0,0,3.4,1,0,0 +7,0,0,5.785915,0,0,3.4,1,0,0 +5,0,0,5.785915,0,0,3.4,1,0,0 +1,0,0,5.785915,0,0,3.4,1,0,0 +2,0,0,5.785915,0,0,3.4,1,0,0 +0,0,0,5.785915,0,0,3.4,1,0,0 +0,0,0,5.785915,0,0,3.4,1,0,0 +0,0,0,5.785915,0,0,3.4,1,0,0 +1,0,0,5.897868,0,0,6.9,1,0,0 +5,0,0,5.897868,0,0,6.9,1,0,0 +8,0,0,5.897868,0,0,6.9,1,0,0 +4,0,0,5.897868,0,0,11.84267,1,0,0 +1,0,0,5.897868,0,0,11.84267,1,0,0 +2,0,0,5.897868,0,0,11.84267,1,0,0 +11,0,0,5.897868,0,0,11.84267,1,0,0 +3,0,0,5.897868,0,0,11.84267,1,0,0 +3,0,0,5.897868,0,0,11.84267,1,0,0 +6,0,0,5.897868,0,0,3.4,1,0,0 +2,0,0,5.897868,0,0,3.4,1,0,0 +0,0,0,5.897868,0,0,3.4,1,0,0 +8,0,0,6.243273,0,0,6.9,1,0,0 +4,0,0,6.243273,0,0,6.9,1,0,0 +2,0,0,6.243273,0,0,6.9,1,0,0 +10,0,0,6.243273,0,0,10.3,1,0,0 +10,0,0,6.243273,0,0,10.3,1,0,0 +4,0,0,6.243273,0,0,10.3,1,0,0 +6,0,0,6.408858,0,1,20.7,1,0,0 +3,0,0,6.408858,0,1,20.7,1,0,0 +5,0,0,6.408858,0,1,20.7,1,0,0 +3,0,0,6.408858,0,1,20.7,1,0,0 +3,0,0,6.408858,0,1,20.7,1,0,0 +1,0,0,6.408858,0,1,17.2,0,1,0 +2,0,0,6.408858,0,1,17.2,0,1,0 +1,0,0,6.408858,0,1,17.2,0,1,0 +8,0,0,6.408858,0,1,17.2,0,1,0 +4,0,0,6.408858,0,1,17.2,0,1,0 +2,0,0,6.408858,0,0,11.84267,0,0,0 +0,0,0,6.408858,0,0,11.84267,0,0,0 +3,0,0,6.408858,0,0,11.84267,0,0,0 +2,0,0,6.408858,0,0,11.84267,0,0,0 +6,0,0,6.408858,0,0,11.84267,0,0,0 +1,0,0,6.408858,0,0,11.84267,0,0,0 +0,0,0,6.408858,0,0,11.84267,0,0,0 +1,0,0,6.408858,0,0,11.84267,0,0,0 +0,0,0,6.408858,0,0,11.84267,0,0,0 +1,0,0,6.408858,0,0,11.84267,0,0,0 +9,0,1,6.109248,6.160541,1,11.84267,1,0,0 +11,0,1,6.109248,6.160541,1,11.84267,1,0,0 +14,0,1,6.109248,6.160541,1,11.84267,1,0,0 +14,0,1,6.109248,6.160541,0,11.84267,1,0,0 +8,0,1,6.109248,6.160541,0,11.84267,1,0,0 +17,0,1,6.109248,6.160541,0,11.84267,1,0,0 +1,0,1,6.109248,6.160541,0,17.2,1,0,0 +5,0,1,6.109248,6.160541,0,17.2,1,0,0 +2,0,1,6.109248,6.160541,0,17.2,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +3,0,1,6.109248,6.160541,0,3.4,1,0,0 +3,0,1,6.109248,6.160541,0,3.4,1,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,3.258096,0,6.573541,7.959835,0,3.4,1,0,0 +3,3.258096,0,6.573541,7.959835,0,3.4,1,0,0 +1,3.258096,0,6.573541,7.959835,0,3.4,1,0,0 +2,0,0,5.817825,0,0,0,1,0,0 +4,0,0,5.817825,0,0,0,1,0,0 +6,0,0,5.817825,0,0,0,1,0,0 +10,0,0,5.817825,0,0,27.6,1,0,0 +8,0,0,5.817825,0,0,27.6,1,0,0 +5,0,0,5.817825,0,0,27.6,1,0,0 +9,0,0,5.817825,0,0,6.9,0,0,0 +2,0,0,5.817825,0,0,6.9,0,0,0 +0,0,0,5.817825,0,0,6.9,0,0,0 +9,0,0,5.817825,0,0,3.4,0,0,0 +11,0,0,5.817825,0,0,3.4,0,0,0 +4,0,0,5.817825,0,0,10.3,1,0,0 +2,0,0,5.817825,0,0,10.3,1,0,0 +1,0,0,5.817825,0,0,10.3,1,0,0 +3,0,0,0,0,0,11.84267,0,0,0 +5,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,0,10.3,0,0,0 +9,0,0,0,0,0,10.3,0,0,0 +3,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +4,0,0,0,0,0,11.84267,0,0,0 +4,0,0,0,0,0,11.84267,0,0,0 +12,0,0,0,0,0,11.84267,0,0,0 +12,0,0,0,0,0,11.84267,0,0,0 +6,0,0,0,0,0,11.84267,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +1,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +5,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +3,0,1,5.703783,5.755076,0,13.8,0,0,0 +0,0,1,5.703783,5.755076,0,13.8,0,0,0 +0,0,1,5.703783,5.755076,0,13.8,0,0,0 +1,0,1,5.703783,5.755076,0,13.8,0,0,0 +0,0,1,5.703783,5.755076,0,13.8,0,0,0 +4,0,1,5.703783,5.755076,0,3.4,0,0,0 +0,0,1,5.703783,5.755076,0,3.4,0,0,0 +4,0,1,5.703783,5.755076,0,3.4,0,0,0 +44,0,1,5.703783,5.755076,0,3.4,0,0,0 +57,0,1,5.703783,5.755076,0,3.4,0,0,0 +5,0,1,6.109248,6.160541,0,11.84267,0,0,0 +11,0,1,6.109248,6.160541,0,11.84267,0,0,0 +3,0,1,6.109248,6.160541,0,11.84267,0,0,0 +2,0,1,6.109248,6.160541,0,10.3,0,0,0 +1,0,1,6.109248,6.160541,0,10.3,0,0,0 +11,0,1,6.109248,6.160541,0,10.3,0,0,0 +4,0,1,6.109248,6.160541,0,17.2,1,0,0 +5,0,1,6.109248,6.160541,0,17.2,1,0,0 +6,0,1,6.109248,6.160541,0,17.2,1,0,0 +2,0,1,6.109248,6.160541,0,17.2,1,0,0 +3,0,1,6.109248,6.160541,0,17.2,1,0,0 +3,0,1,6.109248,6.160541,0,17.2,1,0,0 +1,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,5.274383,6.160541,0,11.84267,0,0,0 +0,0,1,5.274383,6.160541,0,11.84267,0,0,0 +0,0,1,5.274383,6.160541,0,11.84267,0,0,0 +3,0,1,5.274383,6.160541,0,10.3,0,0,0 +0,0,1,5.274383,6.160541,0,10.3,0,0,0 +0,0,1,5.274383,6.160541,0,10.3,0,0,0 +1,0,1,5.274383,6.160541,0,0,0,0,0 +2,0,1,5.274383,6.160541,0,0,0,0,0 +1,0,1,5.274383,6.160541,0,0,0,0,0 +1,0,1,5.274383,6.160541,0,11.84267,0,0,0 +1,0,1,5.274383,6.160541,0,11.84267,0,0,0 +0,0,1,5.274383,6.160541,0,11.84267,0,0,0 +1,4.564348,0,6.743352,6.794645,0,10.3,1,0,0 +0,4.564348,0,6.743352,6.794645,0,10.3,1,0,0 +0,4.564348,0,6.743352,6.794645,0,10.3,1,0,0 +0,4.564348,0,6.743352,6.794645,0,10.3,1,0,0 +0,4.564348,0,6.743352,6.794645,0,10.3,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +2,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,1,27.6,1,0,0 +4,0,0,0,0,1,27.6,1,0,0 +4,0,0,0,0,1,27.6,1,0,0 +3,3.258096,0,5.717028,7.103322,0,11.84267,0,0,0 +33,3.258096,0,5.717028,7.103322,0,11.84267,0,0,0 +3,3.258096,0,5.717028,7.103322,0,11.84267,0,0,0 +6,3.258096,0,5.717028,7.103322,0,11.84267,0,0,0 +5,3.258096,0,5.717028,7.103322,0,11.84267,0,0,0 +3,3.258096,0,5.717028,7.103322,0,3.4,0,0,0 +1,3.258096,0,5.717028,7.103322,0,3.4,0,0,0 +1,3.258096,0,5.717028,7.103322,0,3.4,0,0,0 +1,3.258096,0,5.717028,7.103322,0,3.4,0,0,0 +1,3.258096,0,5.717028,7.103322,0,3.4,0,0,0 +1,3.258096,0,5.717028,7.103322,0,0,0,0,0 +1,3.258096,0,5.717028,7.103322,0,0,0,0,0 +0,3.258096,0,5.717028,7.103322,0,0,0,0,0 +0,3.258096,0,5.717028,7.103322,0,0,0,0,0 +1,3.258096,0,5.717028,7.103322,0,0,0,0,0 +2,0,0,0,0,1,3.4,0,0,0 +1,0,0,0,0,1,3.4,0,0,0 +4,0,0,0,0,1,3.4,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +6,0,0,0,0,0,6.9,0,0,0 +3,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +7,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +5,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +5,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +5,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +5,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +8,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +6,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +7,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,0,1,6.243273,5.755076,0,6.9,0,0,0 +0,0,1,6.243273,5.755076,0,6.9,0,0,0 +0,0,1,6.243273,5.755076,0,6.9,0,0,0 +1,0,1,6.243273,5.755076,0,10.3,0,0,0 +19,0,1,6.243273,5.755076,0,10.3,0,0,0 +1,0,1,6.243273,5.755076,0,10.3,0,0,0 +14,3.258096,0,5.291293,5.703783,0,27.6,1,0,0 +11,3.258096,0,5.291293,5.703783,0,27.6,1,0,0 +10,3.258096,0,5.291293,5.703783,0,27.6,1,0,0 +3,3.258096,0,5.521461,6.907755,0,3.4,0,0,0 +6,3.258096,0,5.521461,6.907755,0,3.4,0,0,0 +6,3.258096,0,5.521461,6.907755,0,3.4,0,0,0 +7,4.564348,0,6.040255,6.091548,0,11.84267,0,0,0 +0,4.564348,0,6.040255,6.091548,0,11.84267,0,0,0 +6,4.564348,0,6.040255,6.091548,0,11.84267,0,0,0 +6,4.564348,0,6.040255,6.091548,0,11.84267,0,0,0 +2,4.564348,0,6.040255,6.091548,0,11.84267,0,0,0 +2,4.564348,0,6.040255,6.091548,0,11.84267,0,0,0 +2,4.564348,0,6.040255,6.091548,0,6.9,0,0,0 +2,4.564348,0,6.040255,6.091548,0,6.9,0,0,0 +3,4.564348,0,6.040255,6.091548,0,6.9,0,0,0 +5,4.564348,0,6.907755,6.959049,1,20.7,1,0,0 +5,4.564348,0,6.907755,6.959049,1,20.7,1,0,0 +4,4.564348,0,6.907755,6.959049,1,20.7,1,0,0 +2,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +5,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +3,4.564348,0,6.907755,6.959049,1,17.2,1,0,0 +3,4.564348,0,6.907755,6.959049,1,17.2,1,0,0 +3,4.564348,0,6.907755,6.959049,1,17.2,1,0,0 +0,0,1,5.703783,5.755076,0,6.9,0,0,0 +0,0,1,5.703783,5.755076,0,6.9,0,0,0 +0,0,1,5.703783,5.755076,0,6.9,0,0,0 +0,0,1,5.703783,5.755076,0,6.9,0,0,0 +0,0,1,5.703783,5.755076,0,6.9,0,0,0 +1,0,1,5.703783,5.755076,0,24.1,1,0,0 +2,0,1,5.703783,5.755076,0,24.1,1,0,0 +1,0,1,5.703783,5.755076,0,24.1,1,0,0 +1,0,1,5.703783,5.755076,0,24.1,1,0,0 +5,0,1,5.703783,5.755076,0,24.1,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +0,0,1,0,5.061929,1,13.8,1,0,0 +0,0,1,0,5.061929,1,13.8,1,0,0 +0,0,1,0,5.061929,1,13.8,1,0,0 +3,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +1,4.564348,0,6.907755,6.959049,0,20.7,0,1,0 +0,4.564348,0,5.857933,5.909226,0,17.2,0,0,0 +0,4.564348,0,5.857933,5.909226,0,17.2,0,0,0 +0,4.564348,0,5.857933,5.909226,0,17.2,0,0,0 +14,4.564348,0,6.907755,6.959049,0,17.2,1,0,0 +0,4.564348,0,6.907755,6.959049,0,17.2,1,0,0 +4,4.564348,0,6.907755,6.959049,0,17.2,1,0,0 +1,4.564348,0,6.907755,6.959049,0,17.2,1,0,0 +1,4.564348,0,6.907755,6.959049,0,17.2,1,0,0 +21,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +13,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +20,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +7,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +3,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +15,4.564348,0,6.907755,6.959049,0,11.84267,1,0,0 +2,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +1,0,0,0,0,0,13.8,1,0,0 +1,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,11.84267,1,0,0 +0,0,0,0,0,0,11.84267,1,0,0 +1,0,0,0,0,0,11.84267,1,0,0 +3,0,0,0,0,0,11.84267,1,0,0 +1,0,0,0,0,0,11.84267,1,0,0 +0,4.564348,0,6.506501,6.959049,0,10.3,0,0,0 +4,4.564348,0,6.506501,6.959049,0,10.3,0,0,0 +1,4.564348,0,6.506501,6.959049,0,10.3,0,0,0 +9,4.564348,0,6.506501,6.959049,1,11.84267,0,0,0 +2,4.564348,0,6.506501,6.959049,1,11.84267,0,0,0 +4,4.564348,0,6.506501,6.959049,1,11.84267,0,0,0 +1,4.564348,0,6.506501,6.959049,0,17.2,0,0,0 +3,4.564348,0,6.506501,6.959049,0,17.2,0,0,0 +1,4.564348,0,6.506501,6.959049,0,17.2,0,0,0 +7,4.564348,0,6.506501,6.959049,0,27.6,0,0,0 +55,4.564348,0,6.506501,6.959049,0,27.6,0,0,0 +3,4.564348,0,6.506501,6.959049,0,27.6,0,0,0 +1,0,1,0,5.061929,0,0,1,0,0 +14,0,1,0,5.061929,1,24.1,1,0,0 +2,0,1,0,5.061929,1,24.1,1,0,0 +0,0,1,0,5.061929,1,24.1,1,0,0 +2,0,1,6.109248,6.160541,0,11.84267,0,0,0 +4,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +2,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +2,0,1,6.109248,6.160541,0,11.84267,0,0,0 +5,0,1,6.109248,6.160541,0,11.84267,0,0,0 +6,0,1,6.109248,6.160541,0,10.3,0,0,0 +9,0,1,6.109248,6.160541,0,10.3,0,0,0 +5,0,1,6.109248,6.160541,0,10.3,0,0,0 +3,0,1,6.109248,6.160541,0,10.3,0,0,0 +6,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +6,0,1,6.109248,6.160541,0,3.4,0,0,0 +3,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +4,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +3,0,0,6.282566,0,0,11.84267,0,0,0 +2,0,0,6.282566,0,0,11.84267,0,0,0 +0,0,0,6.282566,0,0,11.84267,0,0,0 +1,0,0,6.282566,0,0,6.9,0,0,0 +0,0,0,6.282566,0,0,6.9,0,0,0 +3,0,0,6.282566,0,0,6.9,0,0,0 +1,0,0,6.282566,0,0,6.9,1,0,0 +0,0,0,6.282566,0,0,6.9,1,0,0 +1,0,0,6.282566,0,0,6.9,1,0,0 +7,0,0,6.282566,0,0,3.4,1,0,0 +7,0,0,6.282566,0,0,3.4,1,0,0 +3,0,0,6.282566,0,0,3.4,1,0,0 +14,0,1,5.010635,5.061929,0,13.8,0,0,0 +7,0,1,5.010635,5.061929,0,13.8,0,0,0 +3,0,1,5.010635,5.061929,0,13.8,0,0,0 +3,4.564348,0,5.164786,5.216079,0,6.9,0,0,0 +5,4.564348,0,5.164786,5.216079,0,6.9,0,0,0 +0,4.564348,0,5.164786,5.216079,0,6.9,0,0,0 +1,4.564348,0,5.164786,5.216079,0,6.9,0,0,0 +1,4.564348,0,5.164786,5.216079,0,6.9,0,0,0 +2,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +3,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +5,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +3,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +2,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +3,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,0,1,5.703783,5.755076,0,17.2,0,0,0 +0,0,1,5.703783,5.755076,0,13.8,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +2,3.258096,0,6.907755,8.294049,0,0,0,0,0 +5,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +3,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +8,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +9,3.258096,0,6.907755,8.294049,0,24.1,1,0,0 +6,3.258096,0,6.907755,8.294049,0,24.1,1,0,0 +7,3.258096,0,6.907755,8.294049,0,24.1,1,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +3,3.258096,0,6.907755,8.294049,0,0,0,0,0 +4,3.258096,0,6.907755,8.294049,1,13.8,0,1,0 +1,3.258096,0,6.907755,8.294049,1,13.8,0,1,0 +0,3.258096,0,6.907755,8.294049,1,13.8,0,1,0 +2,3.258096,0,6.907755,8.294049,0,10.3,0,0,0 +4,3.258096,0,6.907755,8.294049,0,10.3,0,0,0 +0,3.258096,0,6.907755,8.294049,0,10.3,0,0,0 +2,3.258096,0,0,7.832014,0,13.8,1,0,0 +1,3.258096,0,0,7.832014,0,13.8,1,0,0 +0,3.258096,0,0,7.832014,0,13.8,1,0,0 +1,0,1,0,5.061929,0,17.2,1,0,0 +0,0,1,0,5.061929,0,17.2,1,0,0 +0,0,1,0,5.061929,0,17.2,1,0,0 +0,0,1,0,5.061929,0,6.9,1,0,0 +1,0,1,0,5.061929,0,6.9,1,0,0 +1,0,1,0,5.061929,0,6.9,1,0,0 +2,0,1,0,5.061929,1,13.8,0,1,0 +0,0,1,0,5.061929,1,13.8,0,1,0 +2,0,1,0,5.061929,1,13.8,0,1,0 +3,0,0,4.587006,0,0,10.3,0,0,0 +3,0,0,4.587006,0,0,10.3,0,0,0 +6,0,0,4.587006,0,0,10.3,0,0,0 +1,0,0,4.587006,0,0,6.9,1,0,0 +0,0,0,4.587006,0,0,6.9,1,0,0 +5,0,0,4.587006,0,0,6.9,1,0,0 +0,4.564348,0,0,4.145638,1,17.2,0,0,0 +0,4.564348,0,0,4.145638,1,17.2,0,0,0 +5,0,0,5.962654,0,0,13.8,0,0,0 +6,0,0,5.962654,0,0,13.8,0,0,0 +2,0,0,5.962654,0,0,13.8,0,0,0 +5,0,0,5.962654,0,0,11.84267,0,0,0 +1,0,0,5.962654,0,0,11.84267,0,0,0 +4,0,0,5.962654,0,0,11.84267,0,0,0 +1,0,0,5.962654,0,0,3.4,0,0,0 +3,0,0,5.962654,0,0,3.4,0,0,0 +4,0,0,5.962654,0,0,3.4,0,0,0 +4,0,0,0,0,0,24.1,0,0,0 +6,0,0,0,0,0,24.1,0,0,0 +2,0,0,0,0,0,24.1,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +3,3.258096,0,4.969813,7.041412,0,6.9,1,0,0 +6,3.258096,0,4.969813,7.041412,0,6.9,1,0,0 +9,3.258096,0,4.969813,7.041412,0,6.9,1,0,0 +0,3.258096,0,0,6.579251,0,13.8,0,1,0 +1,3.258096,0,0,6.579251,0,13.8,0,1,0 +0,3.258096,0,0,6.579251,0,13.8,0,1,0 +5,0,0,0,0,0,3.4,0,0,0 +4,0,0,0,0,0,3.4,0,0,0 +4,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,0,0,0,0 +9,0,0,4.509099,0,0,13.8,1,0,0 +12,0,0,4.509099,0,0,13.8,1,0,0 +10,0,0,4.509099,0,0,13.8,1,0,0 +4,0,0,4.509099,0,0,10.3,1,0,0 +11,0,0,4.509099,0,0,10.3,1,0,0 +9,0,0,4.509099,0,0,10.3,1,0,0 +0,3.258096,0,4.49981,5.886104,0,6.9,0,0,0 +1,3.258096,0,4.49981,5.886104,0,6.9,0,0,0 +0,3.258096,0,4.49981,5.886104,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +1,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +1,0,1,6.109248,6.160541,0,0,0,0,0 +2,0,1,6.109248,6.160541,0,24.1,0,0,0 +3,0,1,6.109248,6.160541,0,24.1,0,0,0 +0,0,1,6.109248,6.160541,0,24.1,0,0,0 +2,0,1,6.109248,6.160541,0,24.1,0,0,0 +2,0,1,6.109248,6.160541,0,24.1,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +1,4.564348,0,0,6.165086,0,13.8,1,0,0 +9,4.564348,0,0,6.165086,0,13.8,1,0,0 +11,4.564348,0,0,6.165086,0,13.8,1,0,0 +3,4.564348,0,6.639876,6.691169,0,0,0,0,0 +1,4.564348,0,6.639876,6.691169,0,0,0,0,0 +5,4.564348,0,6.639876,6.691169,0,0,0,0,0 +2,4.564348,0,6.639876,6.691169,0,0,0,0,0 +1,4.564348,0,6.639876,6.691169,0,0,0,0,0 +13,0,1,6.109248,6.160541,0,6.9,0,0,0 +2,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +7,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +2,0,1,6.109248,6.160541,0,6.9,0,0,0 +7,0,1,6.109248,6.160541,0,17.2,1,0,0 +7,0,1,6.109248,6.160541,0,17.2,1,0,0 +3,0,1,6.109248,6.160541,0,17.2,1,0,0 +11,3.258096,0,4.989071,6.375365,0,3.4,0,0,0 +0,3.258096,0,4.989071,6.375365,0,3.4,0,0,0 +8,0,0,0,0,0,6.9,0,0,0 +6,0,0,0,0,0,6.9,0,0,0 +13,0,0,0,0,0,6.9,0,0,0 +7,0,0,0,0,1,10.3,1,0,0 +4,0,0,0,0,1,10.3,1,0,0 +1,0,0,0,0,1,10.3,1,0,0 +2,0,0,0,0,0,6.9,0,1,0 +1,0,0,0,0,0,6.9,0,1,0 +1,0,0,0,0,0,6.9,0,1,0 +0,0,0,0,0,1,6.9,0,0,0 +0,0,0,0,0,1,6.9,0,0,0 +3,0,0,0,0,1,6.9,0,0,0 +2,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +3,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +6,3.258096,0,6.907755,8.294049,0,10.3,1,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +0,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +1,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +3,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,1,37.9,0,0,0 +4,4.564348,0,6.907755,6.959049,1,37.9,0,0,0 +1,4.564348,0,6.907755,6.959049,1,37.9,0,0,0 +2,4.564348,0,6.907755,6.959049,1,37.9,0,0,0 +0,4.564348,0,6.907755,6.959049,1,37.9,0,0,0 +2,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +9,0,1,6.289567,5.755076,1,10.3,0,0,0 +8,0,1,6.289567,5.755076,1,10.3,0,0,0 +10,0,1,6.289567,5.755076,1,10.3,0,0,0 +0,0,1,6.289567,5.755076,0,10.3,0,0,0 +1,0,1,6.289567,5.755076,0,10.3,0,0,0 +0,0,1,6.289567,5.755076,0,10.3,0,0,0 +2,0,0,5.949705,0,0,24.1,0,0,0 +5,0,0,5.949705,0,0,24.1,0,0,0 +3,0,0,5.949705,0,0,24.1,0,0,0 +2,0,0,5.949705,0,0,11.84267,0,0,0 +1,0,0,5.949705,0,0,11.84267,0,0,0 +4,0,0,5.949705,0,0,11.84267,0,0,0 +3,0,0,5.949705,0,0,11.84267,0,0,0 +2,0,0,5.949705,0,0,11.84267,0,0,0 +1,0,0,5.949705,0,0,11.84267,0,0,0 +2,0,0,5.949705,0,0,11.84267,0,0,0 +1,0,0,5.949705,0,0,11.84267,0,0,0 +1,0,0,5.949705,0,0,11.84267,0,0,0 +6,0,0,5.949705,0,0,10.3,0,0,0 +7,0,0,5.949705,0,0,10.3,0,0,0 +6,0,0,5.949705,0,0,10.3,0,0,0 +3,0,0,0,0,0,10.3,1,0,0 +16,0,0,0,0,0,10.3,1,0,0 +2,0,0,0,0,0,10.3,1,0,0 +2,0,0,0,0,0,11.84267,1,0,0 +0,0,0,0,0,0,11.84267,1,0,0 +0,0,0,0,0,0,11.84267,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +3,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,3.258096,0,6.39693,7.783224,0,13.8,0,0,0 +3,3.258096,0,6.39693,7.783224,0,13.8,0,0,0 +0,3.258096,0,6.39693,7.783224,0,11.84267,0,0,0 +0,3.258096,0,6.39693,7.783224,0,11.84267,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +2,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +3,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +1,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +1,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +2,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +1,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +3,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +2,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +4,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +4,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +2,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +12,0,1,5.703783,5.755076,1,3.4,0,0,0 +3,0,1,5.703783,5.755076,1,3.4,0,0,0 +1,0,1,5.703783,5.755076,1,3.4,0,0,0 +1,0,1,5.703783,5.755076,1,3.4,0,0,0 +4,0,1,5.703783,5.755076,1,3.4,0,0,0 +4,0,1,5.703783,5.755076,0,13.8,0,0,0 +1,0,1,5.703783,5.755076,0,13.8,0,0,0 +2,0,1,5.703783,5.755076,0,13.8,0,0,0 +3,0,1,5.703783,5.755076,0,13.8,0,0,0 +0,0,1,5.703783,5.755076,0,13.8,0,0,0 +1,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,10.3,1,0,0 +5,0,0,0,0,0,10.3,1,0,0 +4,0,0,0,0,0,10.3,1,0,0 +6,0,0,0,0,0,3.4,0,0,0 +4,0,0,0,0,0,3.4,0,0,0 +4,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +2,0,0,0,0,1,11.84267,0,0,0 +5,0,0,5.455321,0,0,24.1,0,1,0 +8,0,0,5.455321,0,0,24.1,0,1,0 +9,0,0,5.455321,0,0,24.1,0,1,0 +11,0,0,5.455321,0,1,20.7,0,0,0 +9,0,0,5.455321,0,1,20.7,0,0,0 +4,0,0,5.455321,0,1,20.7,0,0,0 +6,0,0,5.455321,0,0,11.84267,0,0,0 +2,0,0,5.455321,0,0,11.84267,0,0,0 +1,0,0,5.455321,0,0,11.84267,0,0,0 +4,0,0,6.378766,0,0,0,0,0,0 +2,0,0,6.378766,0,0,0,0,0,0 +4,0,0,6.378766,0,0,0,0,0,0 +6,0,0,6.378766,0,1,10.3,0,0,0 +2,0,0,6.378766,0,1,10.3,0,0,0 +3,0,0,6.378766,0,1,10.3,0,0,0 +1,0,1,6.249125,6.160541,0,24.1,1,0,0 +6,0,1,6.249125,6.160541,0,24.1,1,0,0 +24,0,1,6.249125,6.160541,0,24.1,1,0,0 +2,0,1,6.249125,6.160541,0,11.84267,0,0,0 +1,0,1,6.249125,6.160541,0,11.84267,0,0,0 +5,0,1,6.249125,6.160541,0,11.84267,0,0,0 +0,0,1,6.249125,6.160541,0,6.9,0,0,0 +0,0,1,6.249125,6.160541,0,6.9,0,0,0 +3,0,1,6.249125,6.160541,0,6.9,0,0,0 +0,0,1,6.249125,6.160541,0,11.84267,0,0,0 +2,0,1,6.249125,6.160541,0,11.84267,0,0,0 +1,0,1,6.249125,6.160541,0,11.84267,0,0,0 +4,0,0,0,0,0,13.8,0,0,0 +4,0,0,0,0,0,13.8,0,0,0 +3,0,0,0,0,0,13.8,0,0,0 +1,3.258096,0,6.43575,7.693937,1,24.1,1,0,0 +0,3.258096,0,6.43575,7.693937,1,24.1,1,0,0 +0,3.258096,0,6.43575,7.693937,1,24.1,1,0,0 +2,3.258096,0,6.43575,7.693937,1,13.8,1,0,0 +1,3.258096,0,6.43575,7.693937,1,13.8,1,0,0 +0,3.258096,0,6.43575,7.693937,1,13.8,1,0,0 +1,3.258096,0,6.43575,7.693937,0,11.84267,0,0,0 +2,3.258096,0,6.43575,7.693937,0,11.84267,0,0,0 +1,3.258096,0,6.43575,7.693937,0,11.84267,0,0,0 +3,4.564348,0,5.956356,6.007648,0,13.8,0,0,0 +0,4.564348,0,5.956356,6.007648,0,13.8,0,0,0 +0,0,1,3.648839,5.061929,0,0,1,0,0 +0,0,1,3.648839,5.061929,0,0,1,0,0 +0,0,1,3.648839,5.061929,0,0,1,0,0 +0,0,1,3.648839,5.061929,0,0,1,0,0 +0,0,1,3.648839,5.061929,0,0,1,0,0 +0,0,0,5.244916,0,0,24.1,1,0,0 +2,0,0,5.244916,0,0,24.1,1,0,0 +0,0,0,5.244916,0,0,24.1,1,0,0 +0,0,0,5.244916,0,0,24.1,1,0,0 +1,0,0,5.244916,0,0,24.1,1,0,0 +6,0,0,4.896346,0,0,17.2,1,0,0 +2,0,0,4.896346,0,0,17.2,1,0,0 +1,0,0,4.896346,0,0,17.2,1,0,0 +1,0,0,4.896346,0,0,17.2,1,0,0 +3,0,0,4.896346,0,0,17.2,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +2,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +8,0,0,0,0,1,13.8,1,0,0 +9,0,0,0,0,1,13.8,1,0,0 +9,0,0,0,0,1,13.8,1,0,0 +11,0,0,0,0,1,13.8,1,0,0 +6,0,0,0,0,1,13.8,1,0,0 +1,3.258096,0,5.783825,7.17012,1,17.2,1,0,0 +2,3.258096,0,0,6.329008,0,20.7,1,0,0 +2,3.258096,0,0,6.329008,0,20.7,1,0,0 +5,3.258096,0,0,6.329008,0,20.7,1,0,0 +4,3.258096,0,0,6.329008,0,20.7,1,0,0 +1,3.258096,0,0,6.329008,0,20.7,1,0,0 +2,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +3,0,1,6.109248,6.160541,0,13.8,0,0,0 +8,0,1,6.109248,6.160541,0,13.8,0,0,0 +3,0,1,6.109248,6.160541,0,13.8,0,0,0 +10,0,1,6.109248,6.160541,0,13.8,0,0,0 +1,0,1,6.109248,6.160541,0,13.8,0,0,0 +2,0,1,0,5.061929,0,3.4,0,0,0 +0,0,1,0,5.061929,0,3.4,0,0,0 +0,0,1,0,5.061929,0,3.4,0,0,0 +0,0,1,0,5.061929,0,3.4,0,0,0 +14,4.564348,0,0,5.435788,0,3.4,0,0,0 +9,4.564348,0,0,5.435788,0,3.4,0,0,0 +23,4.564348,0,0,5.435788,0,3.4,0,0,0 +7,0,1,6.109248,6.160541,0,10.3,1,0,0 +4,0,1,6.109248,6.160541,0,10.3,1,0,0 +6,0,1,6.109248,6.160541,0,10.3,1,0,0 +3,0,1,6.109248,6.160541,0,10.3,1,0,0 +3,0,1,6.109248,6.160541,0,10.3,1,0,0 +5,0,1,6.109248,6.160541,0,10.3,1,0,0 +4,0,1,6.109248,6.160541,0,10.3,1,0,0 +9,0,1,6.109248,6.160541,0,10.3,1,0,0 +4,0,1,6.109248,6.160541,0,10.3,1,0,0 +5,0,1,6.109248,6.160541,0,10.3,1,0,0 +2,0,1,6.109248,6.160541,0,6.9,0,0,0 +6,0,1,6.109248,6.160541,0,6.9,0,0,0 +3,0,1,6.109248,6.160541,0,6.9,0,0,0 +3,0,1,6.109248,6.160541,0,6.9,0,0,0 +7,0,1,6.109248,6.160541,0,6.9,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +13,0,1,6.109248,6.160541,0,3.4,0,0,0 +10,0,1,6.109248,6.160541,0,3.4,0,0,0 +6,0,1,6.109248,6.160541,0,3.4,0,0,0 +14,0,1,6.109248,6.160541,0,3.4,0,0,0 +5,3.258096,0,6.114788,7.501082,0,17.2,0,0,0 +12,3.258096,0,6.114788,7.501082,0,17.2,0,0,0 +21,3.258096,0,6.114788,7.501082,0,17.2,0,0,0 +0,0,0,4.189655,0,0,11.84267,0,0,0 +1,0,0,4.189655,0,0,11.84267,0,0,0 +1,0,0,4.189655,0,0,11.84267,0,0,0 +1,0,0,4.189655,0,0,11.84267,1,0,0 +2,0,0,4.189655,0,0,11.84267,1,0,0 +6,0,0,4.189655,0,0,11.84267,1,0,0 +5,0,0,4.189655,0,0,13.8,0,0,0 +2,0,0,4.189655,0,0,13.8,0,0,0 +4,0,0,4.189655,0,0,13.8,0,0,0 +0,0,1,0,6.160541,0,11.84267,1,0,0 +0,0,1,0,6.160541,0,11.84267,1,0,0 +1,0,1,0,6.160541,0,11.84267,1,0,0 +2,0,1,0,6.160541,0,11.84267,1,0,0 +1,0,1,0,6.160541,0,11.84267,1,0,0 +3,0,1,0,6.160541,1,6.9,1,0,0 +5,0,1,0,6.160541,1,6.9,1,0,0 +4,0,1,0,6.160541,1,6.9,1,0,0 +0,0,1,0,6.160541,1,6.9,1,0,0 +1,0,1,0,6.160541,1,6.9,1,0,0 +0,0,1,0,6.160541,0,11.84267,1,0,0 +15,0,0,0,0,1,20.7,1,0,0 +9,0,0,0,0,1,20.7,1,0,0 +1,0,0,0,0,1,20.7,1,0,0 +0,0,0,0,0,1,11.84267,0,0,0 +0,0,0,0,0,1,11.84267,0,0,0 +1,0,0,0,0,1,11.84267,0,0,0 +0,0,0,0,0,0,10.3,0,1,0 +6,0,0,0,0,0,10.3,0,1,0 +0,0,0,0,0,0,10.3,0,1,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +4,0,0,0,0,0,0,1,0,0 +2,0,0,0,0,0,0,1,0,0 +3,0,0,0,0,0,0,1,0,0 +21,0,1,6.86943,5.755076,1,20.7,0,1,0 +41,0,1,6.86943,5.755076,1,20.7,0,1,0 +25,0,1,6.86943,5.755076,1,20.7,0,1,0 +1,0,1,6.86943,5.755076,1,17.2,0,0,0 +1,0,1,6.86943,5.755076,1,17.2,0,0,0 +1,0,1,6.86943,5.755076,1,17.2,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +1,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +0,0,1,6.109248,6.160541,0,11.84267,0,0,0 +4,0,1,6.109248,6.160541,0,11.84267,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,3.258096,0,4.382027,8.294049,0,6.9,0,0,0 +1,3.258096,0,4.382027,8.294049,0,6.9,0,0,0 +1,3.258096,0,4.382027,8.294049,0,6.9,0,0,0 +0,3.258096,0,4.382027,8.294049,0,6.9,0,0,0 +0,3.258096,0,4.382027,8.294049,0,6.9,0,0,0 +0,3.258096,0,4.382027,8.294049,0,3.4,0,0,0 +2,3.258096,0,4.382027,8.294049,0,3.4,0,0,0 +7,3.258096,0,4.382027,8.294049,0,3.4,0,0,0 +3,3.258096,0,4.382027,8.294049,0,3.4,0,0,0 +0,3.258096,0,4.382027,8.294049,0,3.4,0,0,0 +0,3.258096,0,4.382027,8.294049,0,17.2,0,0,0 +5,3.258096,0,4.382027,8.294049,0,17.2,0,0,0 +8,3.258096,0,4.382027,8.294049,0,17.2,0,0,0 +2,3.258096,0,4.382027,8.294049,0,17.2,0,0,0 +1,3.258096,0,4.382027,8.294049,0,17.2,0,0,0 +9,0,0,0,0,0,10.3,0,0,0 +13,0,0,0,0,0,10.3,0,0,0 +14,0,0,0,0,0,10.3,0,0,0 +0,0,1,5.010635,5.061929,0,0,1,0,0 +0,0,1,0,5.061929,0,10.3,1,0,0 +1,0,1,0,5.061929,0,10.3,1,0,0 +10,0,1,0,5.061929,0,10.3,1,0,0 +4,0,1,0,5.061929,0,10.3,1,0,0 +4,0,1,0,5.061929,0,10.3,1,0,0 +3,0,0,0,0,0,20.7,0,1,0 +0,0,0,0,0,0,20.7,0,1,0 +8,0,0,0,0,0,20.7,0,1,0 +7,0,0,0,0,0,20.7,0,1,0 +1,0,0,0,0,0,11.84267,1,0,0 +0,0,0,0,0,0,11.84267,1,0,0 +1,0,0,0,0,0,11.84267,1,0,0 +5,0,0,0,0,0,11.84267,1,0,0 +1,0,0,0,0,0,11.84267,1,0,0 +19,0,0,0,0,0,24.1,0,0,1 +14,0,0,0,0,0,24.1,0,0,1 +23,0,0,0,0,0,24.1,0,0,1 +23,0,0,0,0,0,24.1,0,0,1 +14,0,0,0,0,0,24.1,0,0,1 +4,0,0,0,0,1,13.8,0,0,0 +9,0,0,0,0,1,13.8,0,0,0 +6,0,0,0,0,1,13.8,0,0,0 +5,0,0,0,0,0,6.9,0,0,0 +7,0,0,0,0,0,6.9,0,0,0 +8,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,13.8,0,0,0 +3,0,0,0,0,0,13.8,0,0,0 +3,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +3,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +0,4.564348,0,5.247024,5.298317,0,0,0,0,0 +6,0,0,0,0,1,0,0,0,0 +4,0,0,0,0,1,0,0,0,0 +9,0,0,0,0,1,0,0,0,0 +1,0,0,3.401197,0,0,10.3,0,0,0 +4,0,0,3.401197,0,0,10.3,0,0,0 +2,0,0,3.401197,0,0,10.3,0,0,0 +0,3.258096,0,6.351758,7.738052,1,20.7,1,0,0 +6,3.258096,0,6.351758,7.738052,1,20.7,1,0,0 +4,3.258096,0,6.351758,7.738052,1,20.7,1,0,0 +2,3.258096,0,6.351758,7.738052,0,11.84267,0,0,0 +3,3.258096,0,6.351758,7.738052,0,11.84267,0,0,0 +2,3.258096,0,6.351758,7.738052,0,11.84267,0,0,0 +0,0,0,0,0,0,13.8,1,0,0 +2,0,0,0,0,0,13.8,1,0,0 +1,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +1,0,0,0,0,0,13.8,1,0,0 +1,3.258096,0,0,8.294049,0,10.3,1,0,0 +2,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +4,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +5,0,1,6.109248,6.160541,0,11.84267,1,0,0 +0,0,1,6.109248,6.160541,0,11.84267,1,0,0 +1,0,1,6.109248,6.160541,0,11.84267,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +2,0,0,0,0,1,27.6,1,0,0 +0,0,0,0,0,1,27.6,1,0,0 +0,0,0,0,0,1,27.6,1,0,0 +1,0,0,0,0,1,3.4,0,0,1 +0,0,0,0,0,1,3.4,0,0,1 +0,0,0,0,0,1,3.4,0,0,1 +1,0,0,0,0,0,3.4,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +3,4.564348,0,6.645741,6.697034,0,13.8,0,0,0 +0,4.564348,0,6.645741,6.697034,0,13.8,0,0,0 +0,4.564348,0,6.645741,6.697034,0,13.8,0,0,0 +3,4.564348,0,6.645741,6.697034,0,6.9,0,0,0 +1,4.564348,0,6.645741,6.697034,0,6.9,0,0,0 +0,4.564348,0,6.645741,6.697034,0,6.9,0,0,0 +2,4.564348,0,6.645741,6.697034,0,0,0,0,0 +0,4.564348,0,6.645741,6.697034,0,0,0,0,0 +0,4.564348,0,6.645741,6.697034,0,0,0,0,0 +3,4.564348,0,6.645741,6.697034,0,17.2,0,0,0 +1,4.564348,0,6.645741,6.697034,0,17.2,0,0,0 +1,4.564348,0,6.645741,6.697034,0,17.2,0,0,0 +0,4.564348,0,6.645741,6.697034,0,11.84267,0,0,0 +0,4.564348,0,6.645741,6.697034,0,11.84267,0,0,0 +0,4.564348,0,6.645741,6.697034,0,11.84267,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,4.564348,0,0,6.959049,0,6.9,0,0,0 +0,4.564348,0,0,6.959049,0,17.2,0,0,0 +0,4.564348,0,0,6.959049,1,17.2,0,0,0 +0,0,1,5.554818,5.061929,0,10.3,0,0,1 +2,0,1,5.554818,5.061929,0,10.3,0,0,1 +1,0,1,5.554818,5.061929,0,10.3,0,0,1 +0,4.564348,0,0,6.602374,0,3.4,0,0,0 +0,4.564348,0,0,6.602374,0,3.4,0,0,0 +0,4.564348,0,0,6.602374,0,3.4,0,0,0 +0,0,0,0,0,.1981873,11.84267,0,0,0 +0,0,0,0,0,.1981873,11.84267,0,0,0 +0,0,0,0,0,.1981873,11.84267,0,0,0 +0,0,0,0,0,1,0,0,1,0 +0,0,0,0,0,1,0,0,1,0 +0,0,0,0,0,1,0,0,1,0 +0,3.258096,0,0,7.495542,0,6.9,1,0,0 +7,3.258096,0,0,7.495542,0,6.9,1,0,0 +2,3.258096,0,0,7.495542,0,6.9,1,0,0 +5,3.258096,0,6.907755,8.294049,0,24.1,1,0,0 +2,3.258096,0,6.907755,8.294049,0,24.1,1,0,0 +1,3.258096,0,6.907755,8.294049,0,24.1,1,0,0 +1,4.564348,0,0,4.807036,0,6.9,1,0,0 +5,4.564348,0,0,4.807036,0,6.9,1,0,0 +0,4.564348,0,0,4.807036,0,6.9,1,0,0 +7,3.258096,0,0,7.552342,1,6.9,1,0,0 +1,3.258096,0,0,7.552342,1,6.9,1,0,0 +1,3.258096,0,0,7.552342,1,6.9,1,0,0 +7,4.564348,0,5.788491,5.674408,1,24.1,1,0,0 +4,4.564348,0,5.788491,5.674408,1,24.1,1,0,0 +3,4.564348,0,5.788491,5.674408,1,24.1,1,0,0 +2,4.564348,0,5.788491,5.674408,1,27.6,1,0,0 +6,4.564348,0,5.788491,5.674408,1,27.6,1,0,0 +11,4.564348,0,5.788491,5.674408,1,27.6,1,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +12,0,1,5.617753,6.160541,0,11.84267,0,0,0 +8,0,1,5.617753,6.160541,0,11.84267,0,0,0 +6,0,1,5.617753,6.160541,0,11.84267,0,0,0 +3,0,1,5.617753,6.160541,0,11.84267,0,0,0 +3,0,1,5.617753,6.160541,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +4,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +5,3.258096,0,6.115671,7.501966,0,11.84267,0,0,0 +3,3.258096,0,6.115671,7.501966,0,11.84267,0,0,0 +9,3.258096,0,6.115671,7.501966,0,11.84267,0,0,0 +1,4.564348,0,4.882802,4.934095,1,10.3,0,0,0 +0,4.564348,0,4.882802,4.934095,1,10.3,0,0,0 +0,4.564348,0,4.882802,4.934095,1,10.3,0,0,0 +0,4.564348,0,0,6.566006,0,13.8,0,0,0 +0,4.564348,0,0,6.566006,0,13.8,0,0,0 +0,4.564348,0,0,6.566006,0,13.8,0,0,0 +4,0,0,0,0,.1981873,11.84267,0,0,0 +4,0,0,0,0,.1981873,11.84267,0,0,0 +1,0,0,0,0,.1981873,11.84267,0,0,0 +0,0,0,0,0,.0221239,11.84267,0,0,0 +5,0,0,0,0,.0221239,11.84267,0,0,0 +4,0,0,0,0,.0221239,11.84267,0,0,0 +2,0,1,6.39693,6.160541,.0221239,11.84267,0,0,0 +1,0,1,6.39693,6.160541,.0221239,11.84267,0,0,0 +6,0,0,6.762128,0,.0221239,11.84267,0,0,0 +5,0,0,6.762128,0,.0221239,11.84267,0,0,0 +4,0,0,6.762128,0,.0221239,11.84267,0,0,0 +4,0,0,0,0,0,11.84267,0,0,0 +1,0,0,0,0,0,11.84267,0,0,0 +0,0,0,0,0,0,11.84267,0,0,0 +3,0,0,6.351409,0,0,6.9,0,0,0 +1,0,0,6.351409,0,0,6.9,0,0,0 +0,0,0,6.351409,0,0,6.9,0,0,0 +7,0,0,5.871329,0,0,11.84267,0,0,0 +2,0,0,5.871329,0,0,11.84267,0,0,0 +6,0,0,5.871329,0,0,11.84267,0,0,0 +4,0,1,0,6.160541,0,11.84267,0,0,0 +0,0,1,0,6.160541,0,11.84267,0,0,0 +8,0,1,0,6.160541,0,11.84267,0,0,0 +8,0,0,5.785915,0,0,11.84267,0,0,0 +6,0,0,5.785915,0,0,11.84267,0,0,0 +1,0,0,5.785915,0,0,11.84267,0,0,0 +3,0,0,5.785915,0,0,11.84267,0,0,0 +2,0,0,5.785915,0,0,11.84267,0,0,0 +3,3.258096,0,0,7.167964,.0221239,11.84267,0,0,0 +2,3.258096,0,0,7.167964,.0221239,11.84267,0,0,0 +0,0,0,0,0,.1981873,11.84267,0,0,0 +3,0,0,0,0,.1981873,11.84267,0,0,0 +1,0,0,0,0,.1981873,11.84267,0,0,0 +3,3.258096,0,5.717028,7.103322,0,11.84267,0,0,0 +1,3.258096,0,5.717028,7.103322,0,11.84267,0,0,0 +1,3.258096,0,5.717028,7.103322,0,11.84267,0,0,0 +2,3.258096,0,5.717028,7.103322,0,11.84267,0,0,0 +2,3.258096,0,5.717028,7.103322,0,11.84267,0,0,0 +4,0,0,6.246107,0,0,11.84267,0,0,0 +4,0,0,6.246107,0,0,11.84267,0,0,0 +5,0,0,6.246107,0,0,11.84267,0,0,0 +7,4.564348,0,6.639876,6.691169,.1981873,11.84267,0,0,0 +8,4.564348,0,6.639876,6.691169,.1981873,11.84267,0,0,0 +7,4.564348,0,6.639876,6.691169,.1981873,11.84267,0,0,0 +7,4.564348,0,6.639876,6.691169,.1981873,11.84267,0,0,0 +16,4.564348,0,6.639876,6.691169,.1981873,11.84267,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +5,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +0,4.564348,0,0,6.959049,1,27.6,0,0,0 +1,3.258096,0,6.280845,6.628041,0,11.84267,1,0,0 +4,3.258096,0,6.280845,6.628041,0,11.84267,1,0,0 +5,3.258096,0,6.280845,6.628041,0,11.84267,1,0,0 +7,3.258096,0,6.280845,6.628041,0,3.4,1,0,0 +26,3.258096,0,6.280845,6.628041,0,3.4,1,0,0 +11,3.258096,0,6.280845,6.628041,0,3.4,1,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +0,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +5,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +1,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +2,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +2,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +0,3.258096,0,6.907755,8.294049,0,6.9,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +0,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,0,0,0,0,.0221239,11.84267,0,0,0 +2,0,0,0,0,.0221239,11.84267,0,0,0 +0,0,0,0,0,.0221239,11.84267,0,0,0 +1,0,0,0,0,.0221239,11.84267,0,0,0 +3,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,1,20.7,0,0,0 +1,0,0,5.355642,0,0,3.4,0,0,0 +1,0,0,5.355642,0,0,3.4,0,0,0 +2,0,0,5.355642,0,0,3.4,0,0,0 +9,0,0,5.355642,0,0,3.4,0,0,0 +3,0,0,5.355642,0,0,3.4,0,0,0 +15,0,0,4.587006,0,0,11.84267,0,0,0 +4,0,0,4.587006,0,0,11.84267,0,0,0 +1,0,0,4.587006,0,0,11.84267,0,0,0 +4,0,1,5.703783,5.755076,0,6.9,0,0,0 +0,0,1,5.703783,5.755076,0,6.9,0,0,0 +5,0,1,5.703783,5.755076,0,6.9,0,0,0 +3,3.258096,0,6.612041,7.998335,.0221239,11.84267,0,0,0 +5,3.258096,0,6.612041,7.998335,.0221239,11.84267,0,0,0 +0,3.258096,0,6.612041,7.998335,.0221239,11.84267,0,0,0 +4,0,1,6.109248,6.160541,0,0,0,0,0 +3,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +2,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0 +3,0,1,0,5.755076,0,10.3,0,0,0 +4,0,1,0,5.755076,0,10.3,0,0,0 +0,0,1,0,5.755076,0,10.3,0,0,0 +0,0,1,0,5.755076,0,10.3,0,0,0 +0,0,1,0,5.755076,0,10.3,0,0,0 +5,0,1,0,5.755076,1,24.1,0,0,0 +2,0,1,0,5.755076,1,24.1,0,0,0 +4,0,1,0,5.755076,1,24.1,0,0,0 +1,0,1,0,5.755076,1,24.1,0,0,0 +7,0,1,0,5.755076,1,24.1,0,0,0 +3,3.258096,0,6.907755,8.294049,0,0,0,0,0 +1,3.258096,0,6.907755,8.294049,0,0,0,0,0 +4,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +0,3.258096,0,6.907755,8.294049,0,0,0,0,0 +2,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +3,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +0,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,0,11.84267,0,0,0 +20,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +10,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +23,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +12,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +9,3.258096,0,6.907755,8.294049,0,17.2,0,0,0 +7,0,0,0,0,.0221239,11.84267,0,0,0 +6,0,0,0,0,.0221239,11.84267,0,0,0 +3,0,0,0,0,.0221239,11.84267,0,0,0 +4,4.564348,0,0,5.435788,0,10.3,0,0,0 +9,4.564348,0,0,5.435788,0,10.3,0,0,0 +5,4.564348,0,0,5.435788,0,10.3,0,0,0 +10,3.258096,0,6.280845,6.628041,1,13.8,0,0,0 +8,3.258096,0,6.280845,6.628041,1,13.8,0,0,0 +7,3.258096,0,6.280845,6.628041,1,13.8,0,0,0 +2,0,0,4.063885,0,0,3.4,0,0,0 +0,0,0,4.063885,0,0,3.4,0,0,0 +0,0,0,4.063885,0,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,11.84267,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +0,3.258096,0,6.907755,8.294049,0,3.4,0,0,0 +1,3.258096,0,0,7.194437,0,6.9,0,0,0 +0,3.258096,0,0,7.194437,0,6.9,0,0,0 +0,3.258096,0,0,7.194437,0,6.9,0,0,0 +0,3.258096,0,0,7.194437,0,11.84267,0,0,0 +0,3.258096,0,0,7.194437,0,11.84267,0,0,0 +0,3.258096,0,0,7.194437,0,11.84267,0,0,0 +0,3.258096,0,0,6.866933,0,3.4,0,0,0 +1,3.258096,0,0,6.866933,0,3.4,0,0,0 +1,3.258096,0,0,6.866933,0,3.4,0,0,0 +0,3.258096,0,5.783825,7.17012,0,13.8,0,0,0 +1,3.258096,0,5.783825,7.17012,0,13.8,0,0,0 +1,3.258096,0,5.783825,7.17012,0,13.8,0,0,0 +10,0,0,0,0,0,10.3,0,0,0 +2,0,0,0,0,0,10.3,0,0,0 +4,0,0,0,0,0,10.3,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +4,0,0,0,0,0,10.3,0,0,0 +1,3.258096,0,5.521461,6.907755,1,13.8,0,0,0 +4,3.258096,0,5.521461,6.907755,1,13.8,0,0,0 +2,3.258096,0,5.521461,6.907755,1,13.8,0,0,0 +11,3.258096,0,5.886104,7.272398,.0221239,11.84267,0,0,0 +10,3.258096,0,5.886104,7.272398,.0221239,11.84267,0,0,0 +7,3.258096,0,5.886104,7.272398,.0221239,11.84267,0,0,0 +3,3.258096,0,5.886104,7.272398,.0221239,11.84267,0,0,0 +0,3.258096,0,5.886104,7.272398,.0221239,11.84267,0,0,0 +2,0,1,6.109248,6.160541,.0221239,11.84267,0,0,0 +1,0,1,6.109248,6.160541,.0221239,11.84267,0,0,0 +8,0,0,0,0,.0221239,11.84267,0,0,0 +5,0,0,0,0,.0221239,11.84267,0,0,0 +7,0,1,5.703783,5.755076,.0221239,11.84267,0,0,0 +2,0,1,5.703783,5.755076,.0221239,11.84267,0,0,0 +3,4.564348,0,5.519459,5.570752,.0221239,11.84267,0,0,0 +1,4.564348,0,5.519459,5.570752,.0221239,11.84267,0,0,0 +4,3.258096,0,6.907755,8.294049,.0221239,11.84267,0,0,0 +5,3.258096,0,6.907755,8.294049,.0221239,11.84267,0,0,0 +2,3.258096,0,6.43575,7.693937,.0221239,11.84267,0,0,0 +1,3.258096,0,6.43575,7.693937,.0221239,11.84267,0,0,0 +7,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,.0221239,11.84267,0,0,0 +5,0,0,0,0,.0221239,11.84267,0,0,0 +2,0,0,0,0,.0221239,11.84267,0,0,0 +4,0,0,0,0,.0221239,11.84267,0,0,0 +3,0,0,0,0,.0221239,11.84267,0,0,0 +1,0,0,0,0,.0221239,11.84267,0,0,0 +15,4.564348,0,6.907755,6.959049,.0221239,11.84267,0,0,0 +12,4.564348,0,6.907755,6.959049,.0221239,11.84267,0,0,0 +8,4.564348,0,6.907755,6.959049,.0221239,11.84267,0,0,0 +4,4.564348,0,6.907755,6.959049,.0221239,11.84267,0,0,0 +10,0,0,5.871329,0,.0221239,11.84267,0,0,0 +6,0,0,5.871329,0,.0221239,11.84267,0,0,0 +11,0,0,5.330978,0,.0221239,11.84267,0,0,0 +6,0,0,5.330978,0,.0221239,11.84267,0,0,0 +4,0,0,5.330978,0,.0221239,11.84267,0,0,0 +3,0,0,5.330978,0,.0221239,11.84267,0,0,0 +7,3.258096,0,6.804725,8.19102,.0221239,11.84267,0,0,0 +4,3.258096,0,6.804725,8.19102,.0221239,11.84267,0,0,0 +6,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +5,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +2,0,1,6.109248,6.160541,0,6.9,0,0,0 +2,0,0,0,0,.0221239,11.84267,0,0,0 +1,0,0,0,0,.0221239,11.84267,0,0,0 +4,0,1,0,6.160541,.0221239,11.84267,0,0,0 +1,0,1,0,6.160541,.0221239,11.84267,0,0,0 +3,0,1,5.743003,5.755076,.0221239,11.84267,0,0,0 +0,0,1,5.743003,5.755076,.0221239,11.84267,0,0,0 +4,4.564348,0,6.907755,6.959049,.0221239,11.84267,0,0,0 +4,4.564348,0,6.907755,6.959049,.0221239,11.84267,0,0,0 +9,4.564348,0,6.703188,6.754481,.0221239,11.84267,0,0,0 +8,4.564348,0,6.703188,6.754481,.0221239,11.84267,0,0,0 +12,0,0,5.496512,0,.0221239,11.84267,0,0,0 +8,0,0,5.496512,0,.0221239,11.84267,0,0,0 +2,3.258096,0,6.907755,8.294049,.0221239,11.84267,0,0,0 +1,3.258096,0,6.907755,8.294049,.0221239,11.84267,0,0,0 +5,3.258096,0,6.87363,8.259924,.0221239,11.84267,0,0,0 +2,3.258096,0,6.87363,8.259924,.0221239,11.84267,0,0,0 +0,3.258096,0,6.87363,8.259924,.0221239,11.84267,0,0,0 +14,0,0,0,0,.0221239,11.84267,0,0,0 +12,0,0,0,0,.0221239,11.84267,0,0,0 +5,4.564348,0,6.547474,6.943732,.0221239,11.84267,0,0,0 +6,4.564348,0,6.547474,6.943732,.0221239,11.84267,0,0,0 +2,4.564348,0,6.547474,6.943732,.0221239,11.84267,0,0,0 +4,0,0,5.962654,0,.0221239,11.84267,0,0,0 +3,0,0,5.962654,0,.0221239,11.84267,0,0,0 +3,0,1,0,5.061929,.0221239,11.84267,0,0,0 +2,0,1,0,5.061929,.0221239,11.84267,0,0,0 +3,0,1,0,5.061929,.0221239,11.84267,0,0,0 +3,0,1,4.341856,5.755076,.0221239,11.84267,0,0,0 +5,0,1,4.341856,5.755076,.0221239,11.84267,0,0,0 +0,4.564348,0,6.743352,6.794645,.0221239,11.84267,0,0,0 +0,4.564348,0,6.743352,6.794645,.0221239,11.84267,0,0,0 +0,4.564348,0,6.743352,6.794645,.0221239,11.84267,0,0,0 +0,4.564348,0,6.743352,6.794645,.0221239,11.84267,0,0,0 +3,0,1,5.703783,6.160541,.0221239,11.84267,0,0,0 +2,0,1,5.617753,6.160541,.0221239,11.84267,0,0,0 +2,0,1,5.617753,6.160541,.0221239,11.84267,0,0,0 +2,0,1,5.617753,6.160541,.0221239,11.84267,0,0,0 +10,0,0,0,0,.0221239,11.84267,0,0,0 +2,0,0,0,0,.0221239,11.84267,0,0,0 +7,0,1,5.703783,5.755076,.0221239,11.84267,0,0,0 +1,0,1,5.703783,5.755076,.0221239,11.84267,0,0,0 +12,3.258096,0,6.342209,7.728504,.0221239,11.84267,0,0,0 +1,0,1,6.109248,6.160541,.0221239,11.84267,0,0,0 +5,3.258096,0,6.907755,8.294049,.0221239,11.84267,0,0,0 +12,4.564348,0,6.907755,6.959049,.0221239,11.84267,0,0,0 +6,3.258096,0,0,5.075174,.0221239,11.84267,0,0,0 +0,0,0,0,0,.0221239,11.84267,0,0,0 +3,0,1,6.109248,6.160541,.0221239,11.84267,0,0,0 +0,3.258096,0,0,7.194437,.0221239,11.84267,0,0,0 +6,4.564348,0,6.907755,6.959049,.0221239,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,.0221239,11.84267,0,0,0 +1,4.564348,0,6.907755,6.959049,.0221239,11.84267,0,0,0 +4,0,0,0,0,.0221239,11.84267,0,0,0 +7,0,0,5.785915,0,.0221239,11.84267,0,0,0 +10,0,0,5.785915,0,.0221239,11.84267,0,0,0 +6,0,0,5.785915,0,.0221239,11.84267,0,0,0 +0,0,1,5.703783,5.755076,.0221239,11.84267,0,0,0 +6,0,1,5.703783,5.755076,.0221239,11.84267,0,0,0 +9,0,1,5.703783,5.755076,.0221239,11.84267,0,0,0 +3,0,0,5.355642,0,.0221239,11.84267,0,0,0 +6,0,0,5.355642,0,.0221239,11.84267,0,0,0 +3,0,0,5.355642,0,.0221239,11.84267,0,0,0 +1,0,0,0,0,.0221239,11.84267,0,0,0 +7,0,0,0,0,.0221239,11.84267,0,0,0 +2,0,0,0,0,.0221239,11.84267,0,0,0 +6,4.564348,0,6.547474,6.943732,.0221239,11.84267,0,0,0 +2,4.564348,0,6.547474,6.943732,.0221239,11.84267,0,0,0 +8,4.564348,0,6.72827,6.779563,.0221239,11.84267,0,0,0 +6,4.564348,0,6.72827,6.779563,.0221239,11.84267,0,0,0 +11,0,0,0,0,.0221239,11.84267,0,0,0 +2,0,0,0,0,.0221239,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,.0221239,11.84267,0,0,0 +2,4.564348,0,6.907755,6.959049,.0221239,11.84267,0,0,0 +12,0,1,5.703783,5.755076,.0221239,11.84267,0,0,0 +8,0,1,5.703783,5.755076,.0221239,11.84267,0,0,0 +3,0,1,6.109248,6.160541,.0221239,11.84267,0,0,0 +8,4.564348,0,6.639876,6.691169,.0221239,11.84267,0,0,0 +7,0,0,0,0,.0221239,11.84267,0,0,0 +7,0,0,5.355642,0,.0221239,11.84267,0,0,0 +6,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +3,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +2,3.258096,0,6.620073,8.006368,0,0,0,0,0 +9,3.258096,0,6.620073,8.006368,0,0,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +5,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,1,17.2,1,0,0 +1,3.258096,0,6.620073,8.006368,1,17.2,1,0,0 +2,3.258096,0,6.620073,8.006368,1,17.2,1,0,0 +0,0,1,6.1441,5.755076,0,0,0,0,0 +3,0,1,6.1441,5.755076,0,0,0,0,0 +3,0,1,6.1441,5.755076,0,0,0,0,0 +4,0,1,6.1441,5.755076,0,10.3,0,0,0 +6,0,1,6.1441,5.755076,0,10.3,0,0,0 +1,0,1,6.1441,5.755076,0,10.3,0,0,0 +6,0,0,6.953913,0,0,9.967326,0,0,0 +2,0,0,6.953913,0,0,9.967326,0,0,0 +3,0,0,6.953913,0,0,9.967326,0,0,0 +2,0,0,6.953913,0,1,6.9,0,0,0 +1,0,0,6.953913,0,1,6.9,0,0,0 +37,0,0,6.953913,0,1,6.9,0,0,0 +1,0,0,6.953913,0,0,6.9,0,0,0 +3,0,0,6.953913,0,0,6.9,0,0,0 +1,0,0,6.953913,0,0,6.9,0,0,0 +6,0,0,6.953913,0,1,9.967326,0,0,0 +7,0,0,6.953913,0,1,9.967326,0,0,0 +13,0,0,6.953913,0,1,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,0,1,0,0 +0,3.931826,0,6.907755,7.600903,0,0,1,0,0 +0,3.931826,0,6.907755,7.600903,0,0,1,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +4,3.931826,0,6.907755,7.600903,0,10.3,1,0,0 +2,3.931826,0,6.907755,7.600903,0,10.3,1,0,0 +1,3.931826,0,6.907755,7.600903,0,10.3,1,0,0 +2,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +1,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +1,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,1,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,1,0,0 +5,3.931826,0,6.907755,7.600903,0,3.4,1,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +3,3.258096,0,6.620073,8.006368,0,27.6,1,0,0 +2,3.258096,0,6.620073,8.006368,0,27.6,1,0,0 +1,3.258096,0,6.620073,8.006368,0,27.6,1,0,0 +6,3.258096,0,6.620073,8.006368,0,27.6,1,0,0 +5,3.258096,0,6.620073,8.006368,0,27.6,1,0,0 +1,0,0,5.629059,0,0,9.967326,0,0,0 +3,0,0,5.629059,0,0,9.967326,0,0,0 +5,0,0,5.629059,0,0,9.967326,0,0,0 +2,0,0,5.629059,0,0,9.967326,0,0,0 +4,0,0,5.629059,0,0,9.967326,0,0,0 +1,0,0,5.629059,0,0,9.967326,0,0,0 +1,0,0,5.629059,0,0,9.967326,0,0,0 +5,0,0,5.629059,0,0,9.967326,0,0,0 +2,0,0,5.629059,0,0,9.967326,0,0,0 +1,0,0,5.629059,0,0,9.967326,0,0,0 +1,0,0,5.629059,0,1,13.8,0,0,0 +2,0,0,5.629059,0,1,13.8,0,0,0 +1,0,0,5.629059,0,1,13.8,0,0,0 +2,0,0,5.629059,0,1,13.8,0,0,0 +2,0,0,5.629059,0,1,13.8,0,0,0 +2,0,0,5.629059,0,0,3.4,0,0,0 +6,0,0,5.629059,0,0,3.4,0,0,0 +0,0,0,5.629059,0,0,3.4,0,0,0 +1,0,0,5.629059,0,0,3.4,0,0,0 +1,0,0,5.629059,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +4,0,0,0,0,0,3.4,0,0,0 +5,0,0,0,0,0,3.4,0,0,0 +5,0,0,0,0,1,17.2,1,0,0 +3,0,0,0,0,1,17.2,1,0,0 +5,0,0,0,0,1,17.2,1,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,1,6.694067,6.160541,0,0,1,0,0 +3,0,1,6.694067,6.160541,0,0,1,0,0 +2,0,1,6.694067,6.160541,0,0,1,0,0 +1,0,1,6.694067,6.160541,0,24.1,1,0,0 +1,0,1,6.694067,6.160541,0,24.1,1,0,0 +1,0,1,6.694067,6.160541,0,24.1,1,0,0 +5,0,1,6.694067,6.160541,0,9.967326,1,0,0 +4,0,1,6.694067,6.160541,0,9.967326,1,0,0 +6,0,1,6.694067,6.160541,0,9.967326,1,0,0 +0,4.564348,0,6.802395,6.959049,0,0,0,0,0 +0,4.564348,0,6.802395,6.959049,0,0,0,0,0 +2,4.564348,0,6.802395,6.959049,0,0,0,0,0 +0,4.564348,0,6.802395,6.959049,0,0,0,0,0 +0,4.564348,0,6.802395,6.959049,0,0,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +2,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +4,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +4,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +3,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +9,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +4,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +7,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +5,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +11,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +6,0,0,0,0,0,9.967326,0,0,0 +34,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,20.7,1,0,0 +4,0,0,0,0,0,20.7,1,0,0 +5,0,0,0,0,0,20.7,1,0,0 +4,0,0,0,0,1,9.967326,0,0,0 +22,0,0,0,0,1,9.967326,0,0,0 +34,0,0,0,0,1,9.967326,0,0,0 +2,0,0,0,0,0,10.3,0,0,0 +4,0,0,0,0,0,10.3,0,0,0 +3,0,0,0,0,0,10.3,0,0,0 +5,3.258096,0,6.620073,8.006368,1,13.8,0,1,0 +5,3.258096,0,6.620073,8.006368,1,13.8,0,1,0 +4,3.258096,0,6.620073,8.006368,1,13.8,0,1,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +2,0,0,6.364407,0,0,3.4,0,0,0 +1,0,0,6.364407,0,0,3.4,0,0,0 +3,0,0,6.364407,0,0,3.4,0,0,0 +1,0,0,6.364407,0,0,3.4,0,0,0 +2,0,0,6.364407,0,0,3.4,0,0,0 +5,0,0,6.364407,0,0,6.9,1,0,0 +2,0,0,6.364407,0,0,6.9,1,0,0 +2,0,0,6.364407,0,0,6.9,1,0,0 +0,0,0,6.364407,0,0,6.9,1,0,0 +2,0,0,6.364407,0,0,6.9,1,0,0 +2,0,0,6.364407,0,0,0,1,0,0 +0,0,0,6.364407,0,0,0,1,0,0 +3,0,0,6.364407,0,0,0,1,0,0 +1,0,0,6.364407,0,0,0,1,0,0 +9,0,0,6.364407,0,0,0,1,0,0 +1,0,0,6.364407,0,0,6.9,1,0,0 +2,0,0,6.364407,0,0,6.9,1,0,0 +9,0,0,6.364407,0,0,6.9,1,0,0 +3,0,0,6.364407,0,0,6.9,1,0,0 +8,0,0,6.364407,0,0,6.9,1,0,0 +11,4.564348,0,0,0,0,0,1,0,0 +6,4.564348,0,0,0,0,0,1,0,0 +2,4.564348,0,0,0,0,0,1,0,0 +1,0,1,5.010635,5.061929,0,13.8,1,0,0 +3,0,1,5.010635,5.061929,0,13.8,1,0,0 +2,0,1,5.010635,5.061929,0,13.8,1,0,0 +2,4.564348,0,6.907755,6.959049,0,0,0,0,0 +1,4.564348,0,6.907755,6.959049,0,0,0,0,0 +1,4.564348,0,6.907755,6.959049,0,0,0,0,0 +52,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +18,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +2,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +2,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +3,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,0,0,6.63752,0,0,24.1,0,0,0 +1,0,0,6.63752,0,0,24.1,0,0,0 +0,0,0,6.63752,0,0,24.1,0,0,0 +0,0,0,6.63752,0,0,24.1,0,0,0 +2,0,0,6.63752,0,0,24.1,0,0,0 +2,0,0,6.63752,0,1,9.967326,0,0,0 +1,0,0,6.63752,0,1,9.967326,0,0,0 +4,0,0,6.63752,0,1,9.967326,0,0,0 +8,0,0,6.63752,0,1,9.967326,0,0,0 +3,0,0,6.63752,0,1,9.967326,0,0,0 +0,0,0,6.63752,0,0,10.3,1,0,0 +1,0,0,6.63752,0,0,10.3,1,0,0 +0,0,0,6.63752,0,0,10.3,1,0,0 +0,0,0,6.63752,0,0,10.3,1,0,0 +0,0,0,6.63752,0,0,10.3,1,0,0 +0,0,0,6.63752,0,0,9.967326,0,0,0 +1,0,0,6.63752,0,0,9.967326,0,0,0 +2,0,0,6.63752,0,0,9.967326,0,0,0 +0,0,0,6.63752,0,0,9.967326,0,0,0 +0,0,0,6.63752,0,0,9.967326,0,0,0 +1,0,0,6.63752,0,0,9.967326,0,0,0 +1,0,0,6.63752,0,0,9.967326,0,0,0 +0,0,0,6.63752,0,0,9.967326,0,0,0 +1,0,0,6.63752,0,0,9.967326,0,0,0 +0,0,0,6.63752,0,0,9.967326,0,0,0 +3,0,0,6.63752,0,0,9.967326,0,0,0 +1,0,0,6.63752,0,0,9.967326,0,0,0 +3,0,0,6.63752,0,0,9.967326,0,0,0 +1,0,0,6.63752,0,0,9.967326,0,0,0 +3,0,0,6.63752,0,0,9.967326,0,0,0 +2,0,0,6.63752,0,0,9.967326,0,0,0 +3,0,0,6.63752,0,0,9.967326,0,0,0 +0,0,0,6.63752,0,0,9.967326,0,0,0 +0,0,0,6.63752,0,0,9.967326,0,0,0 +2,0,0,6.63752,0,0,9.967326,0,0,0 +4,3.931826,0,6.253829,7.600903,0,9.967326,0,0,0 +3,3.931826,0,6.253829,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.253829,7.600903,0,9.967326,0,0,0 +2,3.931826,0,6.253829,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.253829,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.253829,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.253829,7.600903,0,0,0,0,0 +1,3.931826,0,6.253829,7.600903,0,0,0,0,0 +4,3.931826,0,6.253829,7.600903,0,0,0,0,0 +2,0,0,6.107112,0,0,10.3,1,0,0 +5,0,0,6.107112,0,0,10.3,1,0,0 +9,0,0,6.107112,0,0,10.3,1,0,0 +7,0,0,6.107112,0,0,9.967326,1,0,0 +3,0,0,6.107112,0,0,9.967326,1,0,0 +4,0,0,6.107112,0,0,9.967326,1,0,0 +1,0,0,6.107112,0,0,6.9,1,0,0 +0,0,0,6.107112,0,0,6.9,1,0,0 +1,0,0,6.107112,0,0,6.9,1,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,20.7,1,0,0 +0,0,1,6.109248,6.160541,0,20.7,1,0,0 +3,0,1,6.109248,6.160541,0,20.7,1,0,0 +3,0,1,6.109248,6.160541,0,6.9,1,0,0 +2,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +4,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +4,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,1,0,0 +3,3.931826,0,6.907755,7.600903,0,3.4,1,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,1,0,0 +4,3.931826,0,6.907755,7.600903,0,31,1,0,0 +6,3.931826,0,6.907755,7.600903,0,31,1,0,0 +5,3.931826,0,6.907755,7.600903,0,31,1,0,0 +5,4.564348,0,4.918885,4.970179,0,13.8,1,0,0 +4,4.564348,0,4.918885,4.970179,0,13.8,1,0,0 +2,4.564348,0,4.918885,4.970179,0,13.8,1,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +6,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,0,0,4.832943,0,0,6.9,0,0,0 +0,0,0,4.832943,0,0,6.9,0,0,0 +1,0,0,4.832943,0,0,6.9,0,0,0 +7,0,0,4.832943,0,0,10.3,0,0,0 +1,0,0,4.832943,0,0,10.3,0,0,0 +4,0,0,4.832943,0,0,10.3,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,31,1,0,0 +1,0,0,0,0,0,31,1,0,0 +2,0,0,0,0,0,31,1,0,0 +3,0,0,0,0,0,9.967326,1,0,0 +7,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +0,0,0,0,0,0,6.9,0,1,0 +2,0,0,0,0,0,6.9,0,1,0 +0,0,0,0,0,0,6.9,0,1,0 +1,0,1,5.083886,5.061929,0,17.2,1,0,0 +2,0,1,5.083886,5.061929,0,17.2,1,0,0 +0,0,1,5.083886,5.061929,0,17.2,1,0,0 +11,0,0,3.843316,0,0,13.8,0,0,0 +20,0,0,3.843316,0,0,13.8,0,0,0 +0,0,0,3.843316,0,1,9.967326,1,0,0 +4,0,0,3.843316,0,1,9.967326,1,0,0 +5,0,0,3.843316,0,1,9.967326,1,0,0 +1,0,0,3.843316,0,1,3.4,1,0,0 +2,0,0,3.843316,0,1,3.4,1,0,0 +15,0,0,3.843316,0,1,3.4,1,0,0 +1,0,0,3.843316,0,0,3.4,0,0,0 +1,0,0,3.843316,0,0,3.4,0,0,0 +3,0,0,3.843316,0,0,3.4,0,0,0 +2,0,0,3.843316,0,0,13.8,1,0,0 +0,0,0,3.843316,0,0,13.8,1,0,0 +1,0,0,3.843316,0,0,13.8,1,0,0 +3,0,0,3.843316,0,1,6.9,0,0,0 +5,0,0,3.843316,0,1,6.9,0,0,0 +4,0,0,3.843316,0,1,6.9,0,0,0 +4,0,0,3.843316,0,0,9.967326,0,0,0 +7,0,0,3.843316,0,0,9.967326,0,0,0 +0,0,0,3.843316,0,0,9.967326,0,0,0 +6,0,0,4.356709,0,0,0,1,0,0 +2,0,0,4.356709,0,0,0,1,0,0 +3,0,0,4.356709,0,0,0,1,0,0 +1,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +7,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +7,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +3,3.931826,0,6.907755,7.600903,0,10.3,0,0,0 +1,3.931826,0,6.907755,7.600903,0,10.3,0,0,0 +0,3.931826,0,6.907755,7.600903,0,10.3,0,0,0 +1,0,0,4.836282,0,0,3.4,0,0,0 +2,0,0,4.836282,0,0,3.4,0,0,0 +0,0,0,4.836282,0,0,3.4,0,0,0 +2,3.258096,0,0,0,0,6.9,1,0,0 +4,3.258096,0,0,0,0,6.9,1,0,0 +1,3.258096,0,0,0,0,6.9,1,0,0 +0,0,0,4.339902,0,0,3.4,0,0,0 +0,0,0,4.339902,0,0,3.4,0,0,0 +0,0,0,4.339902,0,0,3.4,0,0,0 +0,0,0,4.339902,0,0,3.4,0,0,0 +0,0,0,4.339902,0,0,3.4,0,0,0 +0,0,0,4.339902,0,0,3.4,0,0,0 +9,0,0,4.339902,0,0,3.4,0,0,0 +1,0,0,4.339902,0,0,3.4,0,0,0 +0,0,0,4.339902,0,0,3.4,0,0,0 +0,0,0,4.339902,0,0,3.4,0,0,0 +4,0,0,5.052161,0,0,9.967326,1,0,0 +1,0,0,5.052161,0,0,9.967326,1,0,0 +6,0,0,5.052161,0,0,9.967326,1,0,0 +5,0,0,5.052161,0,0,9.967326,1,0,0 +5,0,0,5.052161,0,0,9.967326,1,0,0 +3,0,0,5.052161,0,0,3.4,1,0,0 +3,0,0,5.052161,0,0,3.4,1,0,0 +1,0,0,5.052161,0,0,3.4,1,0,0 +3,0,0,5.052161,0,0,3.4,1,0,0 +2,0,0,5.052161,0,0,3.4,1,0,0 +4,0,0,5.052161,0,0,3.4,1,0,0 +3,0,0,5.052161,0,0,3.4,1,0,0 +4,0,0,5.052161,0,0,3.4,1,0,0 +1,0,0,5.052161,0,0,3.4,1,0,0 +1,0,0,5.052161,0,0,3.4,1,0,0 +9,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +4,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +2,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,10.3,0,0,0 +1,3.931826,0,6.907755,7.600903,0,10.3,0,0,0 +3,3.931826,0,6.907755,7.600903,0,10.3,0,0,0 +1,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +1,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +1,3.258096,0,6.215408,7.601702,0,6.9,1,0,0 +0,3.258096,0,6.215408,7.601702,0,6.9,1,0,0 +1,3.258096,0,6.215408,7.601702,0,6.9,1,0,0 +3,3.258096,0,6.215408,7.601702,0,24.1,1,0,0 +0,3.258096,0,6.215408,7.601702,0,24.1,1,0,0 +2,3.258096,0,6.215408,7.601702,0,24.1,1,0,0 +0,0,0,5.949392,0,0,9.967326,0,0,0 +0,0,0,5.949392,0,0,9.967326,0,0,0 +0,0,0,5.949392,0,0,9.967326,0,0,0 +3,0,0,5.949392,0,1,24.1,1,0,0 +0,0,0,5.949392,0,1,24.1,1,0,0 +4,0,0,5.949392,0,1,24.1,1,0,0 +3,0,0,5.949392,0,0,9.967326,0,0,0 +0,0,0,5.949392,0,0,9.967326,0,0,0 +2,0,0,5.949392,0,0,9.967326,0,0,0 +3,0,0,5.949392,0,1,20.7,1,0,0 +0,0,0,5.949392,0,1,20.7,1,0,0 +3,0,0,5.949392,0,1,20.7,1,0,0 +8,0,0,0,0,1,20.7,1,0,0 +8,0,0,0,0,1,20.7,1,0,0 +10,0,0,0,0,1,20.7,1,0,0 +8,0,0,0,0,1,20.7,1,0,0 +13,0,0,0,0,1,20.7,1,0,0 +5,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +6,0,0,0,0,1,10.3,0,1,0 +0,0,0,0,0,1,9.967326,1,0,0 +2,0,0,0,0,1,9.967326,1,0,0 +3,0,0,0,0,0,10.3,0,1,0 +3,0,0,0,0,0,10.3,0,1,0 +5,0,0,0,0,0,10.3,0,1,0 +2,0,0,0,0,0,10.3,0,1,0 +10,0,0,0,0,0,10.3,0,1,0 +0,0,1,6.109248,6.160541,1,17.2,1,0,0 +1,0,1,6.109248,6.160541,1,17.2,1,0,0 +0,0,1,6.109248,6.160541,1,17.2,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,17.2,1,0,0 +0,0,1,6.109248,6.160541,0,17.2,1,0,0 +10,0,1,6.109248,6.160541,0,17.2,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +3,0,0,6.061457,0,0,9.967326,0,0,0 +9,0,0,6.061457,0,0,9.967326,0,0,0 +5,0,0,6.061457,0,0,9.967326,0,0,0 +3,0,0,6.061457,0,0,9.967326,0,0,0 +2,0,0,6.061457,0,0,9.967326,0,0,0 +2,0,0,6.061457,0,0,9.967326,0,0,0 +2,0,0,6.061457,0,0,9.967326,0,0,0 +1,0,0,6.061457,0,0,9.967326,0,0,0 +1,0,0,6.061457,0,0,9.967326,0,0,0 +2,0,0,6.061457,0,0,9.967326,0,0,0 +3,0,0,6.061457,0,0,3.4,0,0,0 +6,0,0,6.061457,0,0,3.4,0,0,0 +6,0,0,6.061457,0,0,3.4,0,0,0 +3,0,0,6.061457,0,0,3.4,0,0,0 +1,0,0,6.061457,0,0,3.4,0,0,0 +4,0,0,6.061457,0,0,10.3,1,0,0 +2,0,0,6.061457,0,0,10.3,1,0,0 +1,0,0,6.061457,0,0,10.3,1,0,0 +2,0,0,6.061457,0,0,10.3,1,0,0 +1,0,0,6.061457,0,0,10.3,1,0,0 +3,0,0,6.061457,0,0,6.9,0,0,0 +6,0,0,6.061457,0,0,6.9,0,0,0 +7,0,0,6.061457,0,0,6.9,0,0,0 +0,0,0,6.061457,0,0,6.9,0,0,0 +0,0,0,6.061457,0,0,6.9,0,0,0 +3,0,0,6.061457,0,0,3.4,0,0,0 +0,0,0,6.061457,0,0,3.4,0,0,0 +0,0,0,6.061457,0,0,3.4,0,0,0 +2,0,0,6.061457,0,0,3.4,0,0,0 +1,0,0,6.061457,0,0,3.4,0,0,0 +5,0,0,6.865057,0,0,3.4,0,0,0 +1,0,0,6.865057,0,0,3.4,0,0,0 +4,0,0,6.865057,0,0,3.4,0,0,0 +9,0,0,6.865057,0,0,3.4,1,0,0 +2,0,0,6.865057,0,0,3.4,1,0,0 +3,0,0,6.865057,0,0,3.4,1,0,0 +2,0,0,6.865057,0,0,9.967326,1,0,0 +1,0,0,6.865057,0,0,9.967326,1,0,0 +0,0,0,6.865057,0,0,9.967326,1,0,0 +2,0,0,6.865057,0,0,9.967326,1,0,0 +3,0,0,6.865057,0,0,9.967326,1,0,0 +4,0,0,6.865057,0,0,9.967326,1,0,0 +2,0,1,6.109248,6.160541,0,0,0,0,0 +2,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +2,0,1,6.109248,6.160541,1,13.8,0,0,0 +3,0,1,6.109248,6.160541,1,13.8,0,0,0 +2,0,1,6.109248,6.160541,1,13.8,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,1,20.7,0,0,0 +0,0,1,6.109248,6.160541,1,20.7,0,0,0 +2,0,1,6.109248,6.160541,1,20.7,0,0,0 +10,0,1,6.109248,6.160541,0,9.967326,0,0,0 +5,0,1,6.109248,6.160541,0,9.967326,0,0,0 +11,0,1,6.109248,6.160541,0,9.967326,0,0,0 +10,0,1,6.109248,6.160541,0,9.967326,0,0,0 +7,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,0,0,0,0 +4,0,1,6.109248,6.160541,0,0,0,0,0 +3,0,1,6.109248,6.160541,0,0,0,0,0 +1,3.931826,0,6.558198,7.251345,0,9.967326,0,0,0 +2,3.931826,0,6.558198,7.251345,0,9.967326,0,0,0 +1,3.931826,0,6.558198,7.251345,0,9.967326,0,0,0 +2,3.931826,0,6.558198,7.251345,0,6.9,1,0,0 +3,3.931826,0,6.558198,7.251345,0,6.9,1,0,0 +5,3.931826,0,6.558198,7.251345,0,6.9,1,0,0 +7,3.931826,0,6.599871,7.293018,1,20.7,0,1,0 +3,3.931826,0,6.599871,7.293018,1,20.7,0,1,0 +2,3.931826,0,6.599871,7.293018,1,20.7,0,1,0 +4,4.564348,0,6.907755,6.959049,0,9.967326,0,1,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,1,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,1,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,1,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,1,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,1,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,1,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,1,0 +3,4.564348,0,6.907755,6.959049,0,9.967326,0,1,0 +0,4.564348,0,6.39693,6.448223,0,20.7,0,0,0 +1,4.564348,0,6.39693,6.448223,0,20.7,0,0,0 +2,4.564348,0,6.39693,6.448223,0,20.7,0,0,0 +5,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +3,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.148468,6.199761,0,9.967326,0,0,0 +2,4.564348,0,6.148468,6.199761,0,9.967326,0,0,0 +2,4.564348,0,6.148468,6.199761,0,9.967326,0,0,0 +4,4.564348,0,6.148468,6.199761,0,9.967326,0,0,0 +2,4.564348,0,6.148468,6.199761,0,9.967326,0,0,0 +3,4.564348,0,6.148468,6.199761,0,9.967326,0,0,0 +6,4.564348,0,6.148468,6.199761,0,6.9,0,0,0 +2,4.564348,0,6.148468,6.199761,0,6.9,0,0,0 +0,4.564348,0,6.148468,6.199761,0,6.9,0,0,0 +2,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +6,0,1,6.109248,6.160541,0,0,0,0,0 +1,0,1,6.109248,6.160541,0,0,0,0,0 +2,0,1,6.109248,6.160541,0,0,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +1,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +1,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +4,0,1,6.109248,6.160541,0,20.7,1,0,0 +5,0,1,6.109248,6.160541,0,20.7,1,0,0 +3,0,1,6.109248,6.160541,0,20.7,1,0,0 +2,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +6,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +2,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +2,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +4,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +2,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +1,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +0,0,1,6.200184,6.160541,0,9.967326,0,0,0 +3,0,1,6.200184,6.160541,0,9.967326,0,0,0 +0,0,1,6.200184,6.160541,0,9.967326,0,0,0 +0,0,1,6.200184,6.160541,0,17.2,0,0,0 +2,0,1,6.200184,6.160541,0,17.2,0,0,0 +2,0,1,6.200184,6.160541,0,17.2,0,0,0 +1,0,1,6.200184,6.160541,0,9.967326,0,0,0 +2,0,1,6.200184,6.160541,0,9.967326,0,0,0 +1,0,1,6.200184,6.160541,0,9.967326,0,0,0 +0,0,1,6.200184,6.160541,0,3.4,0,0,0 +2,0,1,6.200184,6.160541,0,3.4,0,0,0 +0,0,1,6.200184,6.160541,0,3.4,0,0,0 +0,0,0,4.922023,0,1,24.1,1,0,0 +0,0,0,4.922023,0,1,24.1,1,0,0 +0,0,0,4.922023,0,1,24.1,1,0,0 +6,0,0,0,0,0,3.4,0,0,0 +6,0,0,0,0,0,3.4,0,0,0 +10,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,17.2,0,0,0 +2,0,0,0,0,0,17.2,0,0,0 +1,0,0,0,0,0,17.2,0,0,0 +7,0,0,5.45018,0,0,6.9,0,0,0 +6,0,0,5.45018,0,0,6.9,0,0,0 +3,0,0,5.45018,0,0,6.9,0,0,0 +1,0,0,5.45018,0,0,3.4,0,0,0 +1,0,0,5.45018,0,0,3.4,0,0,0 +3,0,0,5.45018,0,0,3.4,0,0,0 +7,0,0,5.45018,0,0,6.9,0,1,0 +4,0,0,5.45018,0,0,6.9,0,1,0 +2,0,0,5.45018,0,0,6.9,0,1,0 +4,0,0,5.45018,0,0,20.7,1,0,0 +9,0,0,5.45018,0,0,20.7,1,0,0 +14,0,0,5.45018,0,0,20.7,1,0,0 +21,0,0,5.45018,0,1,34.5,0,0,1 +6,0,0,5.45018,0,1,34.5,0,0,1 +6,0,0,5.45018,0,1,34.5,0,0,1 +2,4.564348,0,6.818924,6.870217,0,10.3,0,1,0 +6,4.564348,0,6.818924,6.870217,0,10.3,0,1,0 +1,4.564348,0,6.818924,6.870217,0,10.3,0,1,0 +1,4.564348,0,6.818924,6.870217,0,10.3,0,1,0 +5,4.564348,0,6.818924,6.870217,0,10.3,0,1,0 +7,4.564348,0,6.818924,6.870217,0,9.967326,1,0,0 +4,4.564348,0,6.818924,6.870217,0,9.967326,1,0,0 +2,4.564348,0,6.818924,6.870217,0,9.967326,1,0,0 +2,4.564348,0,6.818924,6.870217,0,9.967326,1,0,0 +3,4.564348,0,6.818924,6.870217,0,9.967326,1,0,0 +3,4.564348,0,6.818924,6.870217,0,3.4,0,0,0 +2,4.564348,0,6.818924,6.870217,0,3.4,0,0,0 +0,4.564348,0,6.818924,6.870217,0,3.4,0,0,0 +1,4.564348,0,6.818924,6.870217,0,3.4,0,0,0 +3,4.564348,0,6.818924,6.870217,0,3.4,0,0,0 +3,0,1,5.600494,5.061929,0,3.4,0,0,0 +4,0,1,5.600494,5.061929,0,3.4,0,0,0 +3,0,1,5.600494,5.061929,0,3.4,0,0,0 +15,0,0,0,0,1,27.6,0,1,0 +11,0,0,0,0,1,27.6,0,1,0 +9,0,0,0,0,1,27.6,0,1,0 +0,4.564348,0,6.620073,6.671367,0,9.967326,0,0,0 +2,4.564348,0,6.620073,6.671367,0,9.967326,0,0,0 +1,4.564348,0,6.620073,6.671367,0,9.967326,0,0,0 +0,4.564348,0,6.620073,6.671367,0,9.967326,0,0,0 +0,4.564348,0,6.620073,6.671367,0,9.967326,0,0,0 +2,4.564348,0,6.620073,6.671367,0,9.967326,0,0,0 +0,4.564348,0,6.620073,6.671367,0,10.3,0,0,0 +1,4.564348,0,6.620073,6.671367,0,10.3,0,0,0 +2,4.564348,0,6.620073,6.671367,0,10.3,0,0,0 +0,4.564348,0,6.620073,6.671367,0,9.967326,0,0,0 +1,4.564348,0,6.620073,6.671367,0,9.967326,0,0,0 +0,4.564348,0,6.620073,6.671367,0,9.967326,0,0,0 +4,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +2,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +2,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +4,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +6,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +7,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,10.3,0,0,0 +1,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +3,0,0,0,0,0,10.3,1,0,0 +5,0,0,0,0,0,10.3,1,0,0 +3,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +4,0,0,0,0,0,9.967326,0,0,0 +10,0,0,0,0,0,9.967326,0,1,0 +5,0,0,0,0,0,9.967326,0,1,0 +2,0,0,0,0,0,9.967326,1,0,0 +4,0,0,0,0,0,9.967326,1,0,0 +3,0,0,0,0,0,9.967326,1,0,0 +10,0,0,0,0,0,9.967326,1,0,0 +7,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +3,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +6,0,0,0,0,0,9.967326,1,0,0 +38,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +5,0,0,0,0,1,10.3,1,0,0 +3,0,0,0,0,1,10.3,1,0,0 +2,0,0,0,0,1,10.3,1,0,0 +8,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,9.967326,1,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +5,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +7,0,0,0,0,0,34.5,1,0,0 +8,0,0,0,0,0,34.5,1,0,0 +7,0,0,0,0,0,34.5,1,0,0 +2,0,1,5.703783,5.755076,1,6.9,0,0,0 +2,0,1,5.703783,5.755076,1,6.9,0,0,0 +3,0,1,5.703783,5.755076,1,6.9,0,0,0 +1,0,1,5.703783,5.755076,0,10.3,0,0,0 +1,0,1,5.703783,5.755076,0,10.3,0,0,0 +0,0,1,5.703783,5.755076,0,10.3,0,0,0 +1,0,0,6.239028,0,0,10.3,1,0,0 +1,0,0,6.239028,0,0,10.3,1,0,0 +2,0,0,6.239028,0,0,10.3,1,0,0 +6,0,0,6.239028,0,0,3.4,1,0,0 +2,0,0,6.239028,0,0,3.4,1,0,0 +4,0,0,6.239028,0,0,3.4,1,0,0 +3,0,0,6.239028,0,0,20.7,0,0,0 +3,0,0,6.239028,0,0,20.7,0,0,0 +4,0,0,6.239028,0,0,20.7,0,0,0 +8,0,0,6.239028,0,1,41.4,1,0,0 +7,0,0,6.239028,0,1,41.4,1,0,0 +4,0,0,6.239028,0,1,41.4,1,0,0 +3,0,1,0,5.755076,0,6.9,1,0,0 +7,0,1,0,5.755076,0,6.9,1,0,0 +6,0,1,0,5.755076,0,6.9,1,0,0 +1,0,1,0,5.755076,0,6.9,1,0,0 +3,0,1,0,5.755076,0,6.9,1,0,0 +4,0,1,0,5.755076,0,10.3,1,0,0 +5,0,1,0,5.755076,0,10.3,1,0,0 +5,0,1,0,5.755076,0,10.3,1,0,0 +3,0,1,0,5.755076,0,10.3,1,0,0 +0,0,1,0,5.755076,0,10.3,1,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +9,0,1,6.109248,6.160541,0,3.4,0,0,0 +3,0,1,6.109248,6.160541,0,3.4,0,0,0 +8,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +7,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,3.258096,0,6.620073,8.006368,0,17.2,0,1,0 +2,3.258096,0,6.620073,8.006368,0,17.2,0,1,0 +3,3.258096,0,6.620073,8.006368,0,17.2,0,1,0 +18,3.258096,0,6.017132,7.403427,0,17.2,0,1,0 +11,3.258096,0,6.017132,7.403427,0,17.2,0,1,0 +9,3.258096,0,6.017132,7.403427,0,17.2,0,1,0 +3,3.258096,0,6.017132,7.403427,0,9.967326,1,0,0 +2,3.258096,0,6.017132,7.403427,0,9.967326,1,0,0 +2,3.258096,0,6.017132,7.403427,0,9.967326,1,0,0 +7,3.258096,0,6.017132,7.403427,0,9.967326,0,0,0 +7,3.258096,0,6.017132,7.403427,0,9.967326,0,0,0 +20,3.258096,0,6.017132,7.403427,0,9.967326,0,0,0 +1,0,1,5.010635,5.061929,0,20.7,1,0,0 +0,0,1,5.010635,5.061929,0,20.7,1,0,0 +0,0,1,5.010635,5.061929,0,20.7,1,0,0 +0,4.564348,0,6.185694,6.236988,0,0,0,0,0 +0,4.564348,0,6.185694,6.236988,0,0,0,0,0 +1,4.564348,0,6.185694,6.236988,0,0,0,0,0 +0,4.564348,0,6.185694,6.236988,0,0,0,0,0 +0,4.564348,0,6.185694,6.236988,0,0,0,0,0 +1,4.564348,0,6.185694,6.236988,1,6.9,1,0,0 +0,4.564348,0,6.185694,6.236988,1,6.9,1,0,0 +1,4.564348,0,6.185694,6.236988,1,6.9,1,0,0 +0,4.564348,0,6.185694,6.236988,1,6.9,1,0,0 +3,4.564348,0,6.185694,6.236988,1,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,24.1,0,0,0 +1,0,1,6.109248,6.160541,0,24.1,0,0,0 +0,0,1,6.109248,6.160541,0,24.1,0,0,0 +6,0,1,6.109248,6.160541,0,17.2,0,0,0 +2,0,1,6.109248,6.160541,0,17.2,0,0,0 +1,0,1,6.109248,6.160541,0,17.2,0,0,0 +2,0,1,6.109248,6.160541,0,10.3,0,0,0 +2,0,1,6.109248,6.160541,0,10.3,0,0,0 +2,0,1,6.109248,6.160541,0,10.3,0,0,0 +5,0,1,6.109248,6.160541,0,10.3,1,0,0 +3,0,1,6.109248,6.160541,0,10.3,1,0,0 +2,0,1,6.109248,6.160541,0,10.3,1,0,0 +1,0,1,5.010635,5.061929,0,6.9,0,0,0 +1,0,1,5.010635,5.061929,0,6.9,0,0,0 +1,0,1,5.010635,5.061929,0,6.9,0,0,0 +11,3.258096,0,6.620073,8.006368,0,0,1,0,0 +6,3.258096,0,6.620073,8.006368,0,0,1,0,0 +10,3.258096,0,6.620073,8.006368,0,0,1,0,0 +7,3.258096,0,6.620073,8.006368,0,0,1,0,0 +5,3.258096,0,6.620073,8.006368,0,0,1,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +6,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +5,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +3,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +4,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +8,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +7,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +7,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +5,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +6,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +9,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +3,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +4,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +9,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +2,0,0,3.594569,0,0,6.9,1,0,0 +3,0,0,3.594569,0,0,6.9,1,0,0 +1,0,0,3.594569,0,0,6.9,1,0,0 +3,0,0,3.594569,0,0,3.4,0,0,0 +4,0,0,3.594569,0,0,3.4,0,0,0 +4,0,0,3.594569,0,0,3.4,0,0,0 +1,0,0,3.594569,0,0,10.3,1,0,0 +3,0,0,3.594569,0,0,10.3,1,0,0 +1,0,0,3.594569,0,0,10.3,1,0,0 +6,0,1,6.109248,6.160541,0,9.967326,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +44,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +1,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +2,0,1,6.109248,6.160541,0,10.3,1,0,0 +2,0,1,6.109248,6.160541,0,10.3,1,0,0 +4,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,1,3.4,1,0,0 +1,0,1,6.109248,6.160541,1,3.4,1,0,0 +1,0,1,6.109248,6.160541,1,3.4,1,0,0 +7,0,0,5.917603,0,0,10.3,1,0,0 +6,0,0,5.917603,0,0,10.3,1,0,0 +10,0,0,5.917603,0,0,10.3,1,0,0 +0,0,0,5.917603,0,0,9.967326,0,0,0 +2,0,0,5.917603,0,0,9.967326,0,0,0 +2,0,0,5.917603,0,0,9.967326,0,0,0 +1,0,0,5.917603,0,0,9.967326,0,0,0 +3,0,0,5.917603,0,0,9.967326,0,0,0 +2,0,0,5.917603,0,0,9.967326,0,0,0 +0,0,0,5.917603,0,0,6.9,0,0,0 +1,0,0,5.917603,0,0,6.9,0,0,0 +1,0,0,5.917603,0,0,6.9,0,0,0 +4,0,1,6.109248,6.160541,1,27.6,1,0,0 +6,0,1,6.109248,6.160541,1,27.6,1,0,0 +1,0,1,6.109248,6.160541,1,27.6,1,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,0,1,0,0 +1,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,0,5.061929,1,27.6,0,1,0 +0,0,1,0,5.061929,1,27.6,0,1,0 +1,0,1,0,5.061929,1,27.6,0,1,0 +1,0,1,0,5.061929,1,27.6,0,1,0 +1,0,1,0,5.061929,1,27.6,0,1,0 +2,0,1,6.109248,6.160541,1,0,1,0,0 +1,0,1,6.109248,6.160541,1,0,1,0,0 +1,0,1,6.109248,6.160541,1,0,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,1,9.967326,1,0,0 +0,0,1,6.109248,6.160541,1,9.967326,1,0,0 +5,0,1,6.109248,6.160541,1,9.967326,1,0,0 +4,0,0,5.566358,0,0,3.4,0,0,0 +1,0,0,5.566358,0,0,3.4,0,0,0 +2,0,0,5.566358,0,0,3.4,0,0,0 +10,0,0,5.566358,0,1,9.967326,0,0,0 +5,0,0,5.566358,0,1,9.967326,0,0,0 +2,0,0,5.566358,0,1,9.967326,0,0,0 +3,0,0,5.566358,0,0,0,0,0,0 +2,0,0,5.566358,0,0,0,0,0,0 +0,0,0,5.566358,0,0,0,0,0,0 +4,0,0,0,0,0,3.4,0,0,0 +13,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +5,0,0,0,0,1,20.7,1,0,0 +6,0,0,0,0,1,20.7,1,0,0 +1,0,0,0,0,1,20.7,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +5,0,0,0,0,0,9.967326,1,0,0 +3,0,0,5.45018,0,1,17.2,1,0,0 +2,0,0,5.45018,0,1,17.2,1,0,0 +6,0,0,5.45018,0,1,17.2,1,0,0 +3,0,0,5.45018,0,0,6.9,0,0,0 +1,0,0,5.45018,0,0,6.9,0,0,0 +3,0,0,5.45018,0,0,6.9,0,0,0 +2,0,1,5.703783,5.755076,0,13.8,0,0,0 +1,0,1,5.703783,5.755076,0,13.8,0,0,0 +0,0,1,5.703783,5.755076,0,13.8,0,0,0 +1,0,1,5.703783,5.755076,0,3.4,1,0,0 +1,0,1,5.703783,5.755076,0,3.4,1,0,0 +3,0,1,5.703783,5.755076,0,3.4,1,0,0 +2,4.564348,0,5.438079,5.489373,0,13.8,0,1,0 +0,4.564348,0,5.438079,5.489373,0,13.8,0,1,0 +9,4.564348,0,5.438079,5.489373,0,13.8,0,1,0 +1,3.258096,0,6.561596,7.947891,0,17.2,0,0,0 +1,3.258096,0,6.561596,7.947891,0,17.2,0,0,0 +0,3.258096,0,6.561596,7.947891,0,17.2,0,0,0 +2,3.258096,0,6.561596,7.947891,0,10.3,1,0,0 +4,3.258096,0,6.561596,7.947891,0,10.3,1,0,0 +5,3.258096,0,6.561596,7.947891,0,10.3,1,0,0 +0,3.258096,0,6.561596,7.947891,0,9.967326,0,0,0 +1,3.258096,0,6.561596,7.947891,0,9.967326,0,0,0 +0,3.258096,0,6.561596,7.947891,0,9.967326,0,0,0 +0,3.258096,0,6.561596,7.947891,0,6.9,1,0,0 +0,3.258096,0,6.561596,7.947891,0,6.9,1,0,0 +0,3.258096,0,6.561596,7.947891,0,6.9,1,0,0 +0,3.258096,0,5.068904,6.455199,0,9.967326,0,0,0 +1,3.258096,0,5.068904,6.455199,0,9.967326,0,0,0 +0,3.258096,0,5.068904,6.455199,0,9.967326,0,0,0 +2,3.258096,0,5.068904,6.455199,0,9.967326,0,0,0 +1,3.258096,0,5.068904,6.455199,0,9.967326,0,0,0 +6,3.258096,0,5.068904,6.455199,0,9.967326,0,0,0 +4,3.258096,0,5.068904,6.455199,1,17.2,1,0,0 +5,3.258096,0,5.068904,6.455199,1,17.2,1,0,0 +2,3.258096,0,5.068904,6.455199,1,17.2,1,0,0 +3,0,0,6.061457,0,1,13.8,0,1,0 +4,0,0,6.061457,0,1,13.8,0,1,0 +4,0,0,6.061457,0,1,13.8,0,1,0 +0,0,0,6.061457,0,0,13.8,0,0,0 +1,0,0,6.061457,0,0,13.8,0,0,0 +0,0,0,6.061457,0,0,13.8,0,0,0 +1,0,0,7.128143,0,0,6.9,0,0,0 +1,0,0,7.128143,0,0,6.9,0,0,0 +1,0,0,7.128143,0,0,6.9,0,0,0 +2,0,0,7.128143,0,0,0,0,0,0 +5,0,0,7.128143,0,0,0,0,0,0 +1,0,0,7.128143,0,0,0,0,0,0 +1,0,0,7.128143,0,0,0,0,0,0 +9,0,0,7.128143,0,0,0,0,0,0 +2,0,0,7.128143,0,0,0,0,0,0 +1,0,0,7.128143,0,0,9.967326,0,0,0 +2,0,0,7.128143,0,0,9.967326,0,0,0 +1,0,0,7.128143,0,0,9.967326,0,0,0 +1,0,0,7.128143,0,0,17.2,0,0,0 +2,0,0,7.128143,0,0,17.2,0,0,0 +4,0,0,7.128143,0,0,17.2,0,0,0 +2,0,0,7.128143,0,1,9.967326,0,0,0 +6,0,0,7.128143,0,1,9.967326,0,0,0 +4,0,0,7.128143,0,1,9.967326,0,0,0 +1,0,0,7.128143,0,0,9.967326,0,0,0 +2,0,0,7.128143,0,0,9.967326,0,0,0 +4,0,0,7.128143,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +3,0,0,0,0,0,6.9,0,0,0 +5,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,1,17.2,0,1,0 +1,0,0,0,0,1,17.2,0,1,0 +2,0,0,0,0,1,17.2,0,1,0 +1,0,0,0,0,0,9.967326,1,0,0 +3,0,0,0,0,0,9.967326,1,0,0 +0,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,1,0 +4,0,0,0,0,0,9.967326,0,1,0 +2,0,0,0,0,0,9.967326,0,1,0 +17,0,1,6.772897,6.160541,0,13.8,1,0,0 +16,0,1,6.772897,6.160541,0,13.8,1,0,0 +10,0,1,6.772897,6.160541,0,13.8,1,0,0 +0,0,1,6.772897,6.160541,0,9.967326,0,0,0 +2,0,1,6.772897,6.160541,0,9.967326,0,0,0 +2,0,1,6.772897,6.160541,0,9.967326,0,0,0 +0,0,1,6.772897,6.160541,0,0,1,0,0 +1,0,1,6.772897,6.160541,0,0,1,0,0 +3,0,1,6.772897,6.160541,0,0,1,0,0 +10,3.931826,0,0,6.818924,.1572505,9.967326,0,0,1 +6,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,0,0,0,0 +7,0,1,6.109248,6.160541,0,0,0,0,0 +4,0,1,6.109248,6.160541,0,0,0,0,0 +3,0,1,6.109248,6.160541,0,0,0,0,0 +3,0,1,6.109248,6.160541,0,0,0,0,0 +7,0,1,6.109248,6.160541,0,6.9,0,0,0 +4,0,1,6.109248,6.160541,0,6.9,0,0,0 +5,0,1,6.109248,6.160541,0,6.9,0,0,0 +6,0,1,6.109248,6.160541,0,6.9,0,0,0 +3,0,1,6.109248,6.160541,0,6.9,0,0,0 +7,0,0,4.175003,0,0,13.8,0,0,0 +2,0,0,4.175003,0,0,13.8,0,0,0 +4,0,0,4.175003,0,0,13.8,0,0,0 +1,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +0,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +0,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.367501,6.418794,0,9.967326,0,0,0 +0,4.564348,0,6.367501,6.418794,0,9.967326,0,0,0 +0,4.564348,0,6.367501,6.418794,0,9.967326,0,0,0 +2,4.564348,0,6.367501,6.418794,0,9.967326,1,0,0 +0,4.564348,0,6.367501,6.418794,0,9.967326,1,0,0 +1,4.564348,0,6.367501,6.418794,0,9.967326,1,0,0 +1,4.564348,0,6.367501,6.418794,0,27.6,1,0,0 +4,4.564348,0,6.367501,6.418794,0,27.6,1,0,0 +2,4.564348,0,6.367501,6.418794,0,27.6,1,0,0 +2,4.564348,0,6.367501,6.418794,0,10.3,1,0,0 +1,4.564348,0,6.367501,6.418794,0,10.3,1,0,0 +0,4.564348,0,6.367501,6.418794,0,10.3,1,0,0 +1,4.564348,0,6.367501,6.418794,0,9.967326,1,0,0 +0,4.564348,0,6.367501,6.418794,0,9.967326,1,0,0 +2,4.564348,0,6.367501,6.418794,0,9.967326,1,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +4,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +4,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +1,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +1,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +4,3.931826,0,6.907755,7.600903,0,10.3,0,0,0 +0,3.931826,0,6.907755,7.600903,0,10.3,0,0,0 +2,3.931826,0,6.907755,7.600903,0,10.3,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +3,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.258096,0,6.332569,7.718863,0,6.9,0,0,0 +0,3.258096,0,6.332569,7.718863,0,6.9,0,0,0 +0,3.258096,0,6.332569,7.718863,0,6.9,0,0,0 +2,0,0,0,0,.1572505,9.967326,0,0,0 +2,0,0,0,0,.1572505,9.967326,0,0,0 +9,0,0,0,0,.1572505,9.967326,0,0,0 +9,0,0,0,0,.1572505,9.967326,0,0,0 +7,0,0,0,0,.1572505,9.967326,0,0,0 +1,0,0,5.426711,0,0,3.4,0,0,0 +0,0,0,5.426711,0,0,3.4,0,0,0 +3,0,0,5.426711,0,0,3.4,0,0,0 +0,0,0,5.426711,0,0,3.4,0,0,0 +0,0,0,5.426711,0,0,3.4,0,0,0 +8,0,0,0,0,.1572505,9.967326,0,0,0 +1,0,0,0,0,.1572505,9.967326,0,0,0 +2,0,0,0,0,.1572505,9.967326,0,0,0 +1,0,0,0,0,.1572505,9.967326,0,0,0 +1,0,0,0,0,.1572505,9.967326,0,0,0 +1,0,0,0,0,.1572505,9.967326,0,0,0 +4,0,0,0,0,.1572505,9.967326,0,0,0 +0,0,0,0,0,.1572505,9.967326,0,0,0 +1,0,0,0,0,.1572505,9.967326,0,0,0 +2,0,0,0,0,.1572505,9.967326,0,0,0 +3,0,0,5.911122,0,0,13.8,1,0,0 +1,0,0,5.911122,0,0,13.8,1,0,0 +2,0,0,5.911122,0,0,13.8,1,0,0 +2,0,0,5.911122,0,0,13.8,1,0,0 +2,0,0,5.911122,0,0,13.8,1,0,0 +1,0,0,5.911122,0,0,6.9,1,0,0 +0,0,0,5.911122,0,0,6.9,1,0,0 +3,0,0,5.911122,0,0,6.9,1,0,0 +8,0,0,5.911122,0,0,6.9,1,0,0 +3,0,0,5.911122,0,0,6.9,1,0,0 +0,0,0,5.911122,0,0,0,1,0,0 +1,0,0,5.911122,0,0,0,1,0,0 +2,0,0,5.911122,0,0,0,1,0,0 +2,0,0,5.911122,0,0,0,1,0,0 +2,0,0,5.911122,0,0,0,1,0,0 +7,0,0,0,0,0,9.967326,0,0,0 +4,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,1,24.1,1,0,0 +1,0,0,0,0,1,24.1,1,0,0 +0,0,0,0,0,1,24.1,1,0,0 +1,0,0,0,0,1,24.1,1,0,0 +1,0,0,0,0,1,24.1,1,0,0 +8,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,6.9,1,0,0 +3,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,.0431267,9.967326,0,1,0 +2,0,0,0,0,.0431267,9.967326,0,1,0 +3,0,0,0,0,.0431267,9.967326,0,1,0 +2,0,0,0,0,1,20.7,0,1,0 +11,0,0,0,0,1,20.7,0,1,0 +4,0,0,0,0,1,20.7,0,1,0 +9,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +2,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +8,0,1,6.109248,6.160541,0,17.2,0,0,0 +1,0,1,6.109248,6.160541,0,17.2,0,0,0 +1,0,1,6.109248,6.160541,0,17.2,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,3.258096,0,5.991465,7.377759,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,1,0,0 +1,3.258096,0,6.620073,8.006368,0,0,1,0,0 +0,3.258096,0,6.620073,8.006368,0,0,1,0,0 +3,4.564348,0,6.159518,6.262295,0,17.2,0,1,0 +2,4.564348,0,6.159518,6.262295,0,17.2,0,1,0 +3,4.564348,0,6.159518,6.262295,0,17.2,0,1,0 +2,4.564348,0,6.159518,6.262295,0,17.2,0,1,0 +2,4.564348,0,6.159518,6.262295,0,17.2,0,1,0 +2,4.564348,0,6.159518,6.262295,0,3.4,1,0,0 +0,4.564348,0,6.159518,6.262295,0,3.4,1,0,0 +1,4.564348,0,6.159518,6.262295,0,3.4,1,0,0 +1,4.564348,0,6.159518,6.262295,0,3.4,1,0,0 +1,4.564348,0,6.159518,6.262295,0,3.4,1,0,0 +1,4.564348,0,6.159518,6.262295,0,3.4,0,0,0 +0,4.564348,0,6.159518,6.262295,0,3.4,0,0,0 +0,4.564348,0,6.159518,6.262295,0,3.4,0,0,0 +0,4.564348,0,6.159518,6.262295,0,3.4,0,0,0 +0,4.564348,0,6.159518,6.262295,0,3.4,0,0,0 +3,0,0,5.796483,0,0,3.4,0,0,0 +1,0,0,5.796483,0,0,3.4,0,0,0 +0,0,0,5.796483,0,0,3.4,0,0,0 +1,0,0,5.796483,0,0,3.4,0,0,0 +0,0,0,5.796483,0,0,3.4,0,0,0 +4,0,0,5.796483,0,0,6.9,0,0,0 +6,0,0,5.796483,0,0,6.9,0,0,0 +7,0,0,5.796483,0,0,6.9,0,0,0 +1,0,0,5.796483,0,0,6.9,0,0,0 +4,0,0,5.796483,0,0,6.9,0,0,0 +1,3.258096,0,0,7.755767,0,9.967326,0,0,0 +0,3.258096,0,0,7.755767,0,9.967326,0,0,0 +0,3.258096,0,0,7.755767,0,9.967326,0,0,0 +0,3.258096,0,0,7.755767,0,9.967326,0,0,0 +0,3.258096,0,0,7.755767,0,9.967326,0,0,0 +0,3.258096,0,0,7.755767,0,9.967326,0,0,0 +0,3.258096,0,0,7.755767,0,9.967326,0,0,0 +1,3.258096,0,0,7.755767,0,9.967326,0,0,0 +1,3.258096,0,0,7.755767,0,9.967326,0,0,0 +12,3.258096,0,0,7.755767,0,6.9,0,0,0 +0,3.258096,0,0,7.755767,0,6.9,0,0,0 +4,3.258096,0,0,7.755767,0,6.9,0,0,0 +0,3.258096,0,0,7.755767,0,9.967326,0,0,0 +1,3.258096,0,0,7.755767,0,9.967326,0,0,0 +0,3.258096,0,0,7.755767,0,9.967326,0,0,0 +0,3.258096,0,0,7.755767,0,3.4,0,1,0 +0,3.258096,0,0,7.755767,0,3.4,0,1,0 +0,3.258096,0,0,7.755767,0,3.4,0,1,0 +1,0,1,5.010635,5.061929,0,24.1,1,0,0 +0,0,1,5.010635,5.061929,0,24.1,1,0,0 +0,0,1,5.010635,5.061929,0,24.1,1,0,0 +7,0,1,5.703783,5.755076,0,13.8,0,0,0 +14,0,1,5.703783,5.755076,0,13.8,0,0,0 +23,0,1,5.703783,5.755076,0,13.8,0,0,0 +14,0,1,5.703783,5.755076,0,13.8,0,0,0 +16,0,1,5.703783,5.755076,0,13.8,0,0,0 +21,0,1,5.703783,5.755076,0,20.7,0,0,0 +7,0,1,5.703783,5.755076,0,20.7,0,0,0 +5,0,1,5.703783,5.755076,0,20.7,0,0,0 +15,0,1,5.703783,5.755076,0,20.7,0,0,0 +5,0,1,5.703783,5.755076,0,20.7,0,0,0 +4,4.564348,0,6.620073,6.671367,0,17.2,1,0,0 +4,4.564348,0,6.620073,6.671367,0,17.2,1,0,0 +3,4.564348,0,6.620073,6.671367,0,17.2,1,0,0 +4,0,1,0,6.160541,0,0,0,0,0 +2,0,1,0,6.160541,0,0,0,0,0 +0,0,1,0,6.160541,0,0,0,0,0 +0,0,1,0,6.160541,0,0,0,0,0 +0,0,1,0,6.160541,0,0,0,0,0 +0,0,1,0,6.160541,0,0,0,0,0 +1,0,1,0,6.160541,0,9.967326,0,0,0 +0,0,1,0,6.160541,0,9.967326,0,0,0 +0,0,1,0,6.160541,0,9.967326,0,0,0 +5,0,1,5.010635,5.061929,0,20.7,0,0,0 +1,0,1,5.010635,5.061929,0,20.7,0,0,0 +6,0,1,5.010635,5.061929,0,20.7,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +3,4.564348,0,6.907755,6.959049,0,0,0,0,0 +3,4.564348,0,6.907755,6.959049,0,0,0,0,0 +1,4.564348,0,6.907755,6.959049,0,0,0,0,0 +2,4.564348,0,6.907755,6.959049,0,0,0,0,0 +3,4.564348,0,6.907755,6.959049,0,0,0,0,0 +5,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +2,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +3,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +2,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +3,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +5,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +3,0,1,5.703783,5.755076,0,3.4,1,0,0 +1,0,1,5.703783,5.755076,0,3.4,1,0,0 +1,0,1,5.703783,5.755076,0,3.4,1,0,0 +0,0,1,5.703783,5.755076,0,3.4,0,0,0 +0,0,1,5.703783,5.755076,0,3.4,0,0,0 +5,0,1,5.703783,5.755076,0,3.4,0,0,0 +0,0,1,0,5.061929,0,6.9,1,0,0 +1,0,1,0,5.061929,0,6.9,1,0,0 +0,0,1,0,5.061929,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,0,0,0 +3,0,1,5.703783,5.755076,1,17.2,1,0,0 +0,0,1,5.703783,5.755076,1,17.2,1,0,0 +2,0,1,5.703783,5.755076,1,17.2,1,0,0 +1,0,1,5.703783,5.755076,0,13.8,1,0,0 +0,0,1,5.703783,5.755076,0,13.8,1,0,0 +1,0,1,5.703783,5.755076,0,13.8,1,0,0 +2,0,1,5.50655,5.061929,1,10.3,1,0,0 +4,0,1,5.50655,5.061929,1,10.3,1,0,0 +11,0,1,5.50655,5.061929,1,10.3,1,0,0 +11,3.931826,0,6.907755,7.600903,0,10.3,0,0,0 +2,3.931826,0,6.907755,7.600903,0,10.3,0,0,0 +3,3.931826,0,6.907755,7.600903,0,10.3,0,0,0 +1,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +1,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +3,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +3,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +3,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +5,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +5,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +2,3.258096,0,6.324359,7.710653,1,27.6,0,0,0 +6,3.258096,0,6.324359,7.710653,1,27.6,0,0,0 +6,3.258096,0,6.324359,7.710653,1,27.6,0,0,0 +6,3.258096,0,6.324359,7.710653,1,27.6,0,0,0 +9,3.258096,0,6.324359,7.710653,1,27.6,0,0,0 +1,3.258096,0,6.324359,7.710653,0,3.4,0,0,0 +0,3.258096,0,6.324359,7.710653,0,3.4,0,0,0 +1,3.258096,0,6.324359,7.710653,0,3.4,0,0,0 +2,3.258096,0,6.324359,7.710653,0,3.4,0,0,0 +0,3.258096,0,6.324359,7.710653,0,3.4,0,0,0 +2,3.258096,0,6.324359,7.710653,0,6.9,0,0,0 +0,3.258096,0,6.324359,7.710653,0,6.9,0,0,0 +2,3.258096,0,6.324359,7.710653,0,6.9,0,0,0 +2,3.258096,0,6.324359,7.710653,0,6.9,0,0,0 +0,3.258096,0,6.324359,7.710653,0,6.9,0,0,0 +1,3.258096,0,6.324359,7.710653,0,9.967326,0,0,0 +0,3.258096,0,6.324359,7.710653,0,9.967326,0,0,0 +1,3.258096,0,6.324359,7.710653,0,9.967326,0,0,0 +1,3.258096,0,6.324359,7.710653,0,9.967326,0,0,0 +2,3.258096,0,6.324359,7.710653,0,9.967326,0,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +7,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +8,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +7,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +12,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,1,17.2,0,0,0 +1,3.258096,0,6.620073,8.006368,1,17.2,0,0,0 +1,3.258096,0,6.620073,8.006368,1,17.2,0,0,0 +4,3.258096,0,6.620073,8.006368,1,17.2,0,0,0 +2,3.258096,0,6.620073,8.006368,1,17.2,0,0,0 +1,3.258096,0,6.620073,8.006368,1,3.4,0,0,0 +1,3.258096,0,6.620073,8.006368,1,3.4,0,0,0 +3,3.258096,0,6.620073,8.006368,1,3.4,0,0,0 +1,3.258096,0,6.620073,8.006368,1,3.4,0,0,0 +6,3.258096,0,6.620073,8.006368,1,3.4,0,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +4,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +4,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +6,0,0,4.60517,0,0,6.9,0,0,0 +10,0,0,4.60517,0,0,6.9,0,0,0 +5,0,0,4.60517,0,0,6.9,0,0,0 +13,0,0,4.60517,0,0,13.8,1,0,0 +1,0,0,4.60517,0,0,13.8,1,0,0 +1,0,0,4.60517,0,0,13.8,1,0,0 +2,3.258096,0,6.620073,8.006368,0,0,0,0,0 +2,3.258096,0,6.620073,8.006368,0,0,0,0,0 +5,3.258096,0,6.620073,8.006368,0,0,0,0,0 +2,3.258096,0,6.620073,8.006368,0,0,0,0,0 +1,3.258096,0,6.620073,8.006368,0,0,0,0,0 +10,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +15,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +11,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +7,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +4,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +7,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +7,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +3,0,0,6.256287,0,1,48.3,0,1,0 +0,0,0,6.256287,0,1,48.3,0,1,0 +2,0,0,6.256287,0,1,48.3,0,1,0 +7,0,0,6.256287,0,1,20.7,1,0,0 +4,0,0,6.256287,0,1,20.7,1,0,0 +4,0,0,6.256287,0,1,20.7,1,0,0 +4,0,0,6.256287,0,0,13.8,1,0,0 +3,0,0,6.256287,0,0,13.8,1,0,0 +1,0,0,6.256287,0,0,13.8,1,0,0 +0,0,0,6.256287,0,0,9.967326,0,1,0 +0,0,0,6.256287,0,0,9.967326,0,1,0 +4,0,0,6.256287,0,0,9.967326,0,1,0 +2,0,0,6.256287,0,0,9.967326,1,0,0 +2,0,0,6.256287,0,0,9.967326,1,0,0 +5,0,0,6.256287,0,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +2,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +4,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +3,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +3,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +7,0,0,0,0,0,17.2,0,0,0 +3,0,0,0,0,0,17.2,0,0,0 +3,0,0,0,0,0,17.2,0,0,0 +2,0,0,0,0,0,17.2,0,0,0 +4,0,0,0,0,0,17.2,0,0,0 +6,0,0,0,0,0,3.4,1,0,0 +6,0,0,0,0,0,3.4,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +2,0,0,0,0,0,3.4,1,0,0 +3,0,0,0,0,0,3.4,1,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +13,0,0,0,0,0,9.967326,0,0,0 +4,0,0,0,0,0,9.967326,0,0,0 +6,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +6,0,0,0,0,0,9.967326,0,0,0 +8,0,0,0,0,0,9.967326,0,0,0 +14,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +9,0,0,0,0,0,9.967326,0,0,0 +8,0,0,0,0,0,9.967326,0,0,0 +6,0,0,0,0,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +1,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +2,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +4,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,1,0 +1,0,1,6.109248,6.160541,0,9.967326,0,1,0 +3,0,1,6.109248,6.160541,0,9.967326,0,1,0 +1,0,1,6.109248,6.160541,0,9.967326,0,1,0 +3,0,1,6.109248,6.160541,0,9.967326,0,1,0 +6,3.931826,0,0,7.600903,0,20.7,0,0,0 +1,3.931826,0,0,7.600903,0,20.7,0,0,0 +4,3.931826,0,0,7.600903,0,20.7,0,0,0 +5,3.931826,0,0,7.600903,0,20.7,0,0,0 +4,3.931826,0,0,7.600903,0,20.7,0,0,0 +0,3.931826,0,0,7.600903,0,3.4,0,0,0 +0,3.931826,0,0,7.600903,0,3.4,0,0,0 +0,3.931826,0,0,7.600903,0,3.4,0,0,0 +0,3.931826,0,0,7.600903,0,3.4,0,0,0 +1,3.931826,0,0,7.600903,0,3.4,0,0,0 +10,3.931826,0,0,7.600903,0,9.967326,0,0,0 +11,3.931826,0,0,7.600903,0,9.967326,0,0,0 +6,3.931826,0,0,7.600903,0,9.967326,0,0,0 +2,3.931826,0,0,7.600903,0,9.967326,0,0,0 +2,3.931826,0,0,7.600903,0,9.967326,0,0,0 +0,3.931826,0,0,7.600903,0,6.9,0,0,0 +2,3.931826,0,0,7.600903,0,6.9,0,0,0 +0,3.931826,0,0,7.600903,0,6.9,0,0,0 +2,3.931826,0,0,7.600903,0,6.9,0,0,0 +0,3.931826,0,0,7.600903,0,6.9,0,0,0 +1,0,1,0,6.160541,0,9.967326,0,0,0 +0,0,1,0,6.160541,0,9.967326,0,0,0 +0,0,1,0,6.160541,0,9.967326,0,0,0 +1,0,1,0,6.160541,0,10.3,0,0,0 +0,0,1,0,6.160541,0,10.3,0,0,0 +0,0,1,0,6.160541,0,10.3,0,0,0 +2,0,1,0,6.160541,0,9.967326,0,0,0 +0,0,1,0,6.160541,0,9.967326,0,0,0 +0,0,1,0,6.160541,0,9.967326,0,0,0 +1,0,1,0,6.160541,0,6.9,0,0,0 +0,0,1,0,6.160541,0,6.9,0,0,0 +0,0,1,0,6.160541,0,6.9,0,0,0 +5,0,0,4.356709,0,0,9.967326,0,0,0 +1,0,0,4.356709,0,0,9.967326,0,0,0 +3,0,0,4.356709,0,0,9.967326,0,0,0 +3,0,0,4.356709,0,0,6.9,0,0,0 +0,0,0,4.356709,0,0,6.9,0,0,0 +2,0,0,4.356709,0,0,6.9,0,0,0 +2,0,0,4.356709,0,0,6.9,0,0,0 +0,0,0,4.356709,0,0,6.9,0,0,0 +0,0,0,4.356709,0,0,6.9,0,0,0 +6,0,0,6.64066,0,1,24.1,1,0,0 +4,0,0,6.64066,0,1,24.1,1,0,0 +7,0,0,6.64066,0,1,24.1,1,0,0 +0,0,0,6.64066,0,0,0,0,0,0 +10,0,0,6.64066,0,0,0,0,0,0 +11,0,0,6.64066,0,0,0,0,0,0 +3,0,0,0,0,0,13.8,1,0,0 +4,0,0,0,0,0,13.8,1,0,0 +4,0,0,0,0,0,13.8,1,0,0 +1,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +5,0,0,0,0,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +6,4.564348,0,6.907755,6.959049,1,6.9,1,0,0 +4,4.564348,0,6.907755,6.959049,1,6.9,1,0,0 +2,4.564348,0,6.907755,6.959049,1,6.9,1,0,0 +10,4.564348,0,6.907755,6.959049,0,24.1,0,1,0 +2,4.564348,0,6.907755,6.959049,0,24.1,0,1,0 +11,4.564348,0,6.907755,6.959049,0,24.1,0,1,0 +2,4.564348,0,6.659294,6.710587,0,6.9,0,0,0 +6,4.564348,0,6.659294,6.710587,0,6.9,0,0,0 +2,4.564348,0,6.659294,6.710587,0,6.9,0,0,0 +5,4.564348,0,0,6.784695,0,6.9,0,0,0 +12,4.564348,0,0,6.784695,0,6.9,0,0,0 +2,4.564348,0,0,6.784695,0,6.9,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +1,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +2,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +2,0,1,5.352806,5.061929,.1572505,9.967326,1,0,0 +3,0,1,5.352806,5.061929,.1572505,9.967326,1,0,0 +7,0,1,5.352806,5.061929,.1572505,9.967326,1,0,0 +1,0,0,5.51986,0,0,6.9,1,0,0 +3,0,0,5.51986,0,0,6.9,1,0,0 +0,0,0,5.51986,0,0,6.9,1,0,0 +4,0,0,5.51986,0,1,13.8,0,0,1 +7,0,0,5.51986,0,1,13.8,0,0,1 +10,0,0,5.51986,0,1,13.8,0,0,1 +1,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +6,0,0,0,0,0,10.3,0,0,0 +4,0,0,0,0,0,10.3,0,0,0 +7,0,0,0,0,0,10.3,0,0,0 +5,0,0,0,0,0,10.3,0,0,0 +7,0,0,0,0,0,9.967326,1,0,0 +6,0,0,0,0,0,9.967326,1,0,0 +31,0,0,0,0,0,9.967326,1,0,0 +0,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +3,0,0,0,0,0,13.8,1,0,0 +6,0,0,0,0,0,13.8,1,0,0 +5,0,0,0,0,0,13.8,1,0,0 +2,0,0,0,0,0,10.3,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +2,0,0,0,0,0,10.3,0,0,0 +2,0,0,5.040582,0,0,3.4,0,0,0 +2,0,0,5.040582,0,0,3.4,0,0,0 +8,0,0,5.040582,0,0,3.4,0,0,0 +1,0,0,5.45018,0,0,9.967326,1,0,0 +2,0,0,5.45018,0,0,9.967326,1,0,0 +2,0,0,5.45018,0,0,9.967326,1,0,0 +2,0,0,5.45018,0,0,9.967326,1,0,0 +3,0,0,5.45018,0,0,9.967326,1,0,0 +1,0,0,5.45018,0,0,9.967326,1,0,0 +0,0,0,5.45018,0,0,9.967326,1,0,0 +1,0,0,5.45018,0,0,9.967326,1,0,0 +0,0,0,5.45018,0,0,9.967326,1,0,0 +2,0,0,5.45018,0,0,9.967326,1,0,0 +0,0,0,5.45018,0,0,9.967326,0,0,0 +1,0,0,5.45018,0,0,9.967326,0,0,0 +0,0,0,5.45018,0,0,9.967326,0,0,0 +0,0,0,5.45018,0,0,9.967326,0,0,0 +2,0,0,5.45018,0,0,9.967326,0,0,0 +5,0,0,5.45018,0,0,6.9,1,0,0 +1,0,0,5.45018,0,0,6.9,1,0,0 +3,0,0,5.45018,0,0,6.9,1,0,0 +7,0,0,5.45018,0,0,6.9,1,0,0 +1,0,0,5.45018,0,0,6.9,1,0,0 +3,0,0,5.45018,0,0,3.4,1,0,0 +0,0,0,5.45018,0,0,3.4,1,0,0 +1,0,0,5.45018,0,0,3.4,1,0,0 +3,0,0,5.45018,0,0,3.4,1,0,0 +0,0,0,5.45018,0,0,3.4,1,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +5,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +4,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +6,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +6,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +2,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +2,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +2,3.931826,0,6.586172,7.408531,0,0,0,0,0 +6,3.931826,0,6.586172,7.408531,0,0,0,0,0 +6,3.931826,0,6.586172,7.408531,0,0,0,0,0 +6,3.931826,0,6.586172,7.408531,0,0,0,0,0 +1,3.931826,0,6.586172,7.408531,0,0,0,0,0 +0,4.564348,0,5.247024,5.298317,0,17.2,0,0,0 +2,4.564348,0,6.586379,6.637672,1,20.7,0,0,0 +0,4.564348,0,6.586379,6.637672,1,20.7,0,0,0 +0,4.564348,0,6.586379,6.637672,1,20.7,0,0,0 +0,4.564348,0,6.586379,6.637672,0,6.9,0,0,0 +3,4.564348,0,6.586379,6.637672,0,6.9,0,0,0 +0,4.564348,0,6.586379,6.637672,0,6.9,0,0,0 +0,4.564348,0,6.586379,6.637672,0,9.967326,1,0,0 +0,4.564348,0,6.586379,6.637672,0,9.967326,1,0,0 +2,4.564348,0,6.586379,6.637672,0,9.967326,1,0,0 +0,4.564348,0,6.586379,6.637672,0,9.967326,0,0,0 +4,4.564348,0,6.586379,6.637672,0,9.967326,0,0,0 +1,4.564348,0,6.586379,6.637672,0,9.967326,0,0,0 +0,4.564348,0,6.586379,6.637672,0,3.4,0,0,0 +5,4.564348,0,6.586379,6.637672,0,3.4,0,0,0 +1,4.564348,0,6.586379,6.637672,0,3.4,0,0,0 +0,4.564348,0,6.586379,6.637672,0,9.967326,0,0,0 +3,4.564348,0,6.586379,6.637672,0,9.967326,0,0,0 +0,4.564348,0,6.586379,6.637672,0,9.967326,0,0,0 +2,0,0,5.672085,0,0,3.4,0,0,0 +3,0,0,5.672085,0,0,3.4,0,0,0 +1,0,0,5.672085,0,0,3.4,0,0,0 +2,0,0,5.672085,0,0,3.4,0,0,0 +0,0,0,5.672085,0,0,3.4,0,0,0 +1,0,0,5.672085,0,0,3.4,0,0,0 +1,3.258096,0,6.131227,7.517521,0,9.967326,0,0,0 +4,3.258096,0,6.131227,7.517521,0,9.967326,0,0,0 +1,3.258096,0,6.131227,7.517521,0,9.967326,0,0,0 +3,3.258096,0,6.131227,7.517521,0,9.967326,0,0,0 +0,3.258096,0,6.131227,7.517521,0,9.967326,0,0,0 +1,3.258096,0,6.131227,7.517521,0,37.9,1,0,0 +6,3.258096,0,6.131227,7.517521,0,37.9,1,0,0 +1,3.258096,0,6.131227,7.517521,0,37.9,1,0,0 +6,3.258096,0,6.131227,7.517521,0,37.9,1,0,0 +2,3.258096,0,6.131227,7.517521,0,37.9,1,0,0 +0,3.258096,0,6.131227,7.517521,0,9.967326,0,0,0 +4,3.258096,0,6.131227,7.517521,0,9.967326,0,0,0 +0,3.258096,0,6.131227,7.517521,0,9.967326,0,0,0 +0,3.258096,0,6.131227,7.517521,0,9.967326,0,0,0 +0,3.258096,0,6.131227,7.517521,0,9.967326,0,0,0 +1,3.258096,0,6.131227,7.517521,0,6.9,1,0,0 +2,3.258096,0,6.131227,7.517521,0,6.9,1,0,0 +0,3.258096,0,6.131227,7.517521,0,6.9,1,0,0 +0,3.258096,0,6.131227,7.517521,0,6.9,1,0,0 +0,3.258096,0,6.131227,7.517521,0,6.9,1,0,0 +2,0,0,0,0,0,20.7,0,0,0 +1,4.564348,0,5.164786,5.216079,0,3.4,0,0,0 +10,4.564348,0,5.164786,5.216079,0,3.4,0,0,0 +2,4.564348,0,5.164786,5.216079,0,3.4,0,0,0 +4,4.564348,0,5.164786,5.216079,0,3.4,0,0,0 +0,4.564348,0,5.164786,5.216079,0,3.4,0,0,0 +0,4.564348,0,5.164786,5.216079,0,3.4,0,0,0 +1,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +3,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,5.010635,5.061929,0,10.3,0,0,0 +0,0,1,5.010635,5.061929,0,10.3,0,0,0 +0,0,1,5.010635,5.061929,0,10.3,0,0,0 +4,0,0,4.958078,0,0,13.8,1,0,0 +1,0,0,4.958078,0,0,13.8,1,0,0 +2,0,0,4.958078,0,0,13.8,1,0,0 +3,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +2,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +2,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,4.564348,0,6.49224,6.543533,0,17.2,1,0,0 +5,4.564348,0,6.49224,6.543533,0,17.2,1,0,0 +2,4.564348,0,6.49224,6.543533,0,17.2,1,0,0 +8,4.564348,0,6.49224,6.543533,0,9.967326,0,0,0 +4,4.564348,0,6.49224,6.543533,0,9.967326,0,0,0 +3,4.564348,0,6.49224,6.543533,0,9.967326,0,0,0 +0,4.564348,0,6.49224,6.543533,0,9.967326,0,0,0 +2,4.564348,0,6.49224,6.543533,0,9.967326,0,0,0 +0,4.564348,0,6.49224,6.543533,0,9.967326,0,0,0 +1,4.564348,0,6.49224,6.543533,0,6.9,0,0,0 +7,4.564348,0,6.49224,6.543533,0,6.9,0,0,0 +0,4.564348,0,6.49224,6.543533,0,6.9,0,0,0 +6,4.564348,0,6.49224,6.543533,0,9.967326,0,0,0 +5,4.564348,0,6.49224,6.543533,0,9.967326,0,0,0 +0,4.564348,0,6.49224,6.543533,0,9.967326,0,0,0 +4,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +8,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +5,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +5,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +3,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +3,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +3,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +8,3.258096,0,6.620073,8.006368,1,24.1,0,1,0 +3,3.258096,0,6.620073,8.006368,1,24.1,0,1,0 +2,3.258096,0,6.620073,8.006368,1,24.1,0,1,0 +1,3.258096,0,6.620073,8.006368,1,20.7,1,0,0 +2,3.258096,0,6.620073,8.006368,1,20.7,1,0,0 +5,3.258096,0,6.620073,8.006368,1,20.7,1,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,24.1,0,0,0 +0,0,0,0,0,0,24.1,0,0,0 +0,0,0,0,0,0,24.1,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,17.2,0,0,0 +0,0,0,0,0,0,17.2,0,0,0 +0,0,0,0,0,0,17.2,0,0,0 +1,3.258096,0,6.476973,7.863267,0,10.3,1,0,0 +2,3.258096,0,6.476973,7.863267,0,10.3,1,0,0 +1,3.258096,0,6.476973,7.863267,0,10.3,1,0,0 +3,3.258096,0,6.476973,7.863267,0,10.3,0,0,0 +3,3.258096,0,6.476973,7.863267,0,10.3,0,0,0 +3,3.258096,0,6.476973,7.863267,0,10.3,0,0,0 +1,3.931826,0,5.416101,6.109248,0,6.9,1,0,0 +0,3.931826,0,5.416101,6.109248,0,6.9,1,0,0 +0,3.931826,0,5.416101,6.109248,0,6.9,1,0,0 +0,3.931826,0,5.416101,6.109248,0,9.967326,0,0,0 +1,3.931826,0,5.416101,6.109248,0,9.967326,0,0,0 +0,3.931826,0,5.416101,6.109248,0,9.967326,0,0,0 +6,0,0,6.965062,0,0,0,0,0,0 +1,0,0,6.965062,0,0,0,0,0,0 +0,0,0,6.965062,0,0,0,0,0,0 +1,0,0,6.965062,0,0,9.967326,0,0,0 +0,0,0,6.965062,0,0,9.967326,0,0,0 +1,0,0,6.965062,0,0,9.967326,0,0,0 +1,0,0,6.965062,0,0,10.3,0,0,0 +5,0,0,6.965062,0,0,10.3,0,0,0 +1,0,0,6.965062,0,0,10.3,0,0,0 +1,0,0,6.965062,0,0,9.967326,0,0,0 +0,0,0,6.965062,0,0,9.967326,0,0,0 +5,0,0,6.965062,0,0,9.967326,0,0,0 +7,3.931826,0,6.907755,7.600903,0,20.7,0,1,0 +4,3.931826,0,6.907755,7.600903,0,20.7,0,1,0 +6,3.931826,0,6.907755,7.600903,0,20.7,0,1,0 +6,3.931826,0,6.907755,7.600903,0,13.8,0,1,0 +13,3.931826,0,6.907755,7.600903,0,13.8,0,1,0 +5,3.931826,0,6.907755,7.600903,0,13.8,0,1,0 +2,0,1,5.703783,5.755076,0,9.967326,1,0,0 +0,0,1,5.703783,5.755076,0,9.967326,1,0,0 +0,0,1,5.703783,5.755076,0,9.967326,1,0,0 +1,0,1,5.703783,5.755076,0,10.3,1,0,0 +0,0,1,5.703783,5.755076,0,10.3,1,0,0 +2,0,1,5.703783,5.755076,0,10.3,1,0,0 +2,0,1,6.109248,6.160541,0,6.9,0,1,0 +6,0,1,6.109248,6.160541,0,6.9,0,1,0 +2,0,1,6.109248,6.160541,0,6.9,0,1,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,1,0,0 +2,0,1,6.109248,6.160541,0,3.4,1,0,0 +4,0,1,6.109248,6.160541,0,3.4,1,0,0 +1,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +18,0,1,6.109248,6.160541,0,6.9,1,0,0 +11,0,1,6.109248,6.160541,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,1,0,0 +8,0,1,6.109248,6.160541,0,9.967326,1,0,0 +11,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +5,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +6,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +14,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +10,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +1,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +3,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +1,0,1,6.109248,6.160541,1,20.7,0,1,0 +0,0,1,6.109248,6.160541,1,20.7,0,1,0 +0,0,1,6.109248,6.160541,1,20.7,0,1,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,17.2,1,0,0 +1,0,1,6.109248,6.160541,0,17.2,1,0,0 +0,0,1,6.109248,6.160541,0,17.2,1,0,0 +4,0,1,0,5.061929,0,6.9,1,0,0 +1,0,1,0,5.061929,0,6.9,1,0,0 +0,0,1,0,5.061929,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,1,0 +1,0,1,6.109248,6.160541,0,9.967326,0,1,0 +0,0,1,6.109248,6.160541,0,9.967326,0,1,0 +5,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,3.258096,0,6.620073,8.006368,1,10.3,0,0,0 +0,3.258096,0,6.620073,8.006368,1,10.3,0,0,0 +2,3.258096,0,6.620073,8.006368,1,10.3,0,0,0 +1,3.258096,0,6.620073,8.006368,0,0,0,0,0 +1,3.258096,0,6.620073,8.006368,0,0,0,0,0 +6,3.258096,0,6.620073,8.006368,0,0,0,0,0 +5,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +1,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +1,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +2,3.258096,0,6.620073,8.006368,1,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,1,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,1,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +3,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +4,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +4,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,4.564348,0,0,5.611975,0,0,0,0,0 +3,4.564348,0,0,5.611975,0,0,0,0,0 +0,4.564348,0,0,5.611975,0,0,0,0,0 +0,4.564348,0,5.926926,6.042758,0,13.8,0,0,0 +1,4.564348,0,5.926926,6.042758,0,13.8,0,0,0 +1,4.564348,0,5.926926,6.042758,0,13.8,0,0,0 +1,0,0,6.383034,0,0,0,0,1,0 +2,0,0,6.383034,0,0,0,0,1,0 +1,0,0,6.383034,0,0,0,0,1,0 +0,0,0,6.383034,0,0,3.4,0,1,0 +3,0,0,6.383034,0,0,3.4,0,1,0 +3,0,0,6.383034,0,0,3.4,0,1,0 +0,0,0,6.383034,0,0,9.967326,0,0,0 +1,0,0,6.383034,0,0,9.967326,0,0,0 +0,0,0,6.383034,0,0,9.967326,0,0,0 +23,0,0,6.383034,0,1,20.7,0,0,1 +72,0,0,6.383034,0,1,20.7,0,0,1 +18,0,0,6.383034,0,1,20.7,0,0,1 +3,0,0,6.383034,0,0,9.967326,1,0,0 +1,0,0,6.383034,0,0,9.967326,1,0,0 +3,0,0,6.383034,0,0,9.967326,1,0,0 +3,0,0,6.383034,0,1,0,0,0,1 +8,0,0,6.383034,0,1,0,0,0,1 +4,0,0,6.383034,0,1,0,0,0,1 +1,0,1,5.703783,5.755076,0,9.967326,0,0,0 +1,0,1,5.703783,5.755076,0,9.967326,0,0,0 +0,0,1,5.703783,5.755076,0,9.967326,0,0,0 +3,0,1,5.703783,5.755076,1,31,0,0,0 +1,0,1,5.703783,5.755076,1,31,0,0,0 +1,0,1,5.703783,5.755076,1,31,0,0,0 +5,0,1,5.010635,5.061929,1,10.3,0,1,0 +2,0,1,5.010635,5.061929,1,10.3,0,1,0 +1,0,1,5.703783,5.755076,0,10.3,0,0,0 +2,0,1,5.703783,5.755076,0,10.3,0,0,0 +3,0,1,5.703783,5.755076,0,10.3,0,0,0 +1,0,1,5.703783,5.755076,0,0,0,0,0 +1,0,1,5.703783,5.755076,0,0,0,0,0 +0,0,1,5.703783,5.755076,0,0,0,0,0 +3,0,0,6.660473,0,0,9.967326,0,0,0 +1,0,0,6.660473,0,0,9.967326,0,0,0 +6,0,0,6.660473,0,0,9.967326,0,0,0 +2,0,0,6.660473,0,1,3.4,0,0,0 +0,0,0,6.660473,0,1,3.4,0,0,0 +3,0,0,6.660473,0,1,3.4,0,0,0 +1,0,0,6.660473,0,0,10.3,1,0,0 +1,0,0,6.660473,0,0,10.3,1,0,0 +2,0,0,6.660473,0,0,10.3,1,0,0 +0,3.258096,0,6.418039,7.804333,0,3.4,0,0,0 +0,3.258096,0,6.418039,7.804333,0,3.4,0,0,0 +0,3.258096,0,6.418039,7.804333,0,3.4,0,0,0 +1,3.258096,0,6.418039,7.804333,0,3.4,0,0,0 +1,3.258096,0,6.418039,7.804333,0,3.4,0,0,0 +2,3.258096,0,6.418039,7.804333,0,3.4,0,0,0 +4,0,0,5.741848,0,0,13.8,1,0,0 +2,0,0,5.741848,0,0,13.8,1,0,0 +2,0,0,5.741848,0,0,13.8,1,0,0 +1,0,1,0,0,0,10.3,0,0,0 +9,0,0,5.741848,0,1,10.3,0,0,1 +7,0,0,5.741848,0,1,10.3,0,0,1 +15,0,0,5.741848,0,1,10.3,0,0,1 +5,4.564348,0,5.024538,5.075831,0,9.967326,0,0,0 +4,4.564348,0,5.024538,5.075831,0,9.967326,0,0,0 +1,4.564348,0,5.024538,5.075831,0,9.967326,0,0,0 +3,4.564348,0,5.024538,5.075831,1,20.7,0,1,0 +1,4.564348,0,5.024538,5.075831,1,20.7,0,1,0 +2,4.564348,0,5.024538,5.075831,1,20.7,0,1,0 +0,0,1,6.109248,6.160541,0,9.967326,0,1,0 +3,0,1,6.109248,6.160541,0,9.967326,0,1,0 +2,0,1,6.109248,6.160541,0,9.967326,0,1,0 +0,0,1,6.109248,6.160541,1,3.4,1,0,0 +0,0,1,6.109248,6.160541,1,3.4,1,0,0 +1,0,1,6.109248,6.160541,1,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,5.289478,5.061929,1,10.3,0,1,0 +2,0,1,5.289478,5.061929,1,10.3,0,1,0 +1,0,1,5.289478,5.061929,1,10.3,0,1,0 +2,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +9,4.564348,0,6.407292,6.458586,0,13.8,0,0,0 +7,4.564348,0,6.407292,6.458586,0,13.8,0,0,0 +5,4.564348,0,6.407292,6.458586,0,13.8,0,0,0 +4,0,0,6.190643,0,1,6.9,1,0,0 +3,0,0,6.190643,0,1,6.9,1,0,0 +4,0,0,6.190643,0,1,6.9,1,0,0 +3,0,0,6.190643,0,0,6.9,1,0,0 +34,0,0,6.190643,0,0,6.9,1,0,0 +46,0,0,6.190643,0,0,6.9,1,0,0 +7,0,0,6.190643,0,1,13.8,0,0,0 +5,0,0,6.190643,0,1,13.8,0,0,0 +2,0,0,6.190643,0,1,13.8,0,0,0 +14,0,0,6.190643,0,0,3.4,0,0,0 +4,0,0,6.190643,0,0,3.4,0,0,0 +1,0,0,6.190643,0,0,3.4,0,0,0 +4,0,0,6.190643,0,0,0,0,0,0 +2,0,0,6.190643,0,0,0,0,0,0 +1,0,0,6.190643,0,0,0,0,0,0 +9,0,0,0,0,0,27.6,1,0,0 +5,0,0,0,0,0,27.6,1,0,0 +6,0,0,0,0,0,27.6,1,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +5,0,0,0,0,0,9.967326,0,0,0 +6,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +5,0,0,0,0,0,9.967326,0,0,0 +6,0,0,0,0,0,9.967326,0,0,0 +10,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +8,4.564348,0,6.052183,5.941943,1,24.1,0,1,0 +8,4.564348,0,6.052183,5.941943,1,24.1,0,1,0 +5,4.564348,0,6.052183,5.941943,1,24.1,0,1,0 +12,4.564348,0,6.052183,5.941943,1,24.1,0,1,0 +11,4.564348,0,6.052183,5.941943,1,24.1,0,1,0 +6,0,1,6.109248,6.160541,0,17.2,0,1,0 +13,0,1,6.109248,6.160541,0,17.2,0,1,0 +3,0,1,6.109248,6.160541,0,17.2,0,1,0 +8,0,1,6.109248,6.160541,0,17.2,0,1,0 +6,0,1,6.109248,6.160541,0,17.2,0,1,0 +5,0,1,6.109248,6.160541,0,17.2,1,0,0 +2,0,1,6.109248,6.160541,0,17.2,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +2,0,1,6.109248,6.160541,0,9.967326,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +2,0,1,6.109248,6.160541,0,9.967326,1,0,0 +3,0,1,6.109248,6.160541,0,9.967326,1,0,0 +3,0,1,6.109248,6.160541,0,3.4,1,0,0 +8,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +9,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,0,1,0,0 +1,3.258096,0,6.620073,8.006368,0,0,1,0,0 +0,3.258096,0,6.620073,8.006368,0,0,1,0,0 +9,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +4,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +7,0,0,5.352806,0,1,17.2,0,0,0 +6,0,0,5.352806,0,1,17.2,0,0,0 +2,0,0,5.352806,0,1,17.2,0,0,0 +7,0,0,0,0,0,3.4,0,0,0 +5,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +1,4.564348,0,6.907755,6.959049,1,24.1,1,0,0 +1,4.564348,0,6.907755,6.959049,1,24.1,1,0,0 +0,4.564348,0,6.907755,6.959049,1,24.1,1,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,1,0,0 +3,0,1,6.109248,6.160541,0,9.967326,1,0,0 +3,0,1,6.109248,6.160541,0,9.967326,1,0,0 +3,0,1,6.109248,6.160541,0,10.3,1,0,0 +1,0,1,6.109248,6.160541,0,10.3,1,0,0 +2,0,1,6.109248,6.160541,0,10.3,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +4,0,1,6.109248,6.160541,0,6.9,0,0,0 +3,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,1,9.967326,0,0,0 +2,0,1,6.109248,6.160541,1,9.967326,0,0,0 +1,0,1,6.109248,6.160541,1,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +4,0,1,6.109248,6.160541,0,0,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,1,0 +10,0,1,6.109248,6.160541,0,9.967326,0,1,0 +8,0,1,6.109248,6.160541,0,9.967326,0,1,0 +4,3.931826,0,6.835185,7.528332,0,3.4,0,0,0 +1,3.931826,0,6.835185,7.528332,0,3.4,0,0,0 +1,3.931826,0,6.835185,7.528332,0,3.4,0,0,0 +1,3.931826,0,6.835185,7.528332,0,27.6,1,0,0 +2,3.931826,0,6.835185,7.528332,0,27.6,1,0,0 +23,3.931826,0,6.835185,7.528332,0,27.6,1,0,0 +0,3.931826,0,6.835185,7.528332,0,9.967326,0,1,0 +1,3.931826,0,6.835185,7.528332,0,9.967326,0,1,0 +5,3.931826,0,6.835185,7.528332,0,9.967326,0,1,0 +0,3.931826,0,6.835185,7.528332,0,3.4,1,0,0 +0,3.931826,0,6.835185,7.528332,0,3.4,1,0,0 +5,3.931826,0,6.835185,7.528332,0,3.4,1,0,0 +6,4.564348,0,6.200184,6.249121,0,10.3,1,0,0 +2,4.564348,0,6.200184,6.249121,0,10.3,1,0,0 +6,4.564348,0,6.200184,6.249121,0,10.3,1,0,0 +7,3.258096,0,6.327937,7.714231,0,9.967326,0,0,0 +3,3.258096,0,6.327937,7.714231,0,9.967326,0,0,0 +5,3.258096,0,6.327937,7.714231,0,9.967326,0,0,0 +3,3.258096,0,6.327937,7.714231,0,3.4,0,0,0 +5,3.258096,0,6.327937,7.714231,0,3.4,0,0,0 +2,3.258096,0,6.327937,7.714231,0,3.4,0,0,0 +5,3.258096,0,6.327937,7.714231,0,9.967326,0,0,0 +5,3.258096,0,6.327937,7.714231,0,9.967326,0,0,0 +3,3.258096,0,6.327937,7.714231,0,9.967326,0,0,0 +3,3.258096,0,6.327937,7.714231,0,10.3,0,0,0 +0,3.258096,0,6.327937,7.714231,0,10.3,0,0,0 +2,3.258096,0,6.327937,7.714231,0,10.3,0,0,0 +2,0,1,5.010635,5.061929,0,10.3,1,0,0 +1,0,1,5.010635,5.061929,0,10.3,1,0,0 +2,0,1,5.010635,5.061929,0,10.3,1,0,0 +5,0,1,5.010635,5.061929,0,20.7,0,0,0 +14,0,1,5.010635,5.061929,0,20.7,0,0,0 +1,0,1,5.010635,5.061929,0,20.7,0,0,0 +8,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +8,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +13,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +5,3.258096,0,6.620073,8.006368,1,44.8,1,0,0 +4,3.258096,0,6.620073,8.006368,1,44.8,1,0,0 +1,3.258096,0,6.620073,8.006368,1,44.8,1,0,0 +5,3.258096,0,6.620073,8.006368,1,10.3,1,0,0 +1,3.258096,0,6.620073,8.006368,1,10.3,1,0,0 +2,3.258096,0,6.620073,8.006368,1,10.3,1,0,0 +4,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +9,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +2,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +4,3.258096,0,6.069814,7.456108,0,0,1,0,0 +5,3.258096,0,6.069814,7.456108,0,0,1,0,0 +3,3.258096,0,6.069814,7.456108,0,0,1,0,0 +0,3.258096,0,5.966147,7.352441,0,3.4,1,0,0 +1,3.258096,0,5.966147,7.352441,0,3.4,1,0,0 +1,3.258096,0,5.966147,7.352441,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,1,9.967326,0,1,0 +5,0,1,6.109248,6.160541,1,34.5,0,1,0 +0,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,1,0,0 +6,0,1,6.109248,6.160541,0,10.3,1,0,0 +7,0,1,6.109248,6.160541,0,10.3,1,0,0 +1,0,1,6.109248,6.160541,0,10.3,1,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +5,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,1,0,0 +2,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +2,0,1,6.109248,6.160541,0,9.967326,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +7,0,1,6.109248,6.160541,0,13.8,1,0,0 +4,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +1,3.258096,0,6.620073,8.006368,1,3.4,1,0,0 +2,3.258096,0,6.620073,8.006368,1,3.4,1,0,0 +3,3.258096,0,6.620073,8.006368,1,3.4,1,0,0 +12,3.258096,0,6.620073,8.006368,1,20.7,0,1,0 +5,3.258096,0,6.620073,8.006368,1,20.7,0,1,0 +8,3.258096,0,6.620073,8.006368,1,20.7,0,1,0 +4,0,0,0,0,.1572505,9.967326,0,0,0 +3,0,0,0,0,.1572505,9.967326,0,0,0 +0,0,0,0,0,.1572505,9.967326,0,0,0 +5,0,0,0,0,.1572505,9.967326,0,0,0 +2,0,0,0,0,.1572505,9.967326,0,0,0 +3,0,0,0,0,.1572505,9.967326,0,0,0 +2,0,0,0,0,.1572505,9.967326,0,0,0 +1,0,0,0,0,.1572505,9.967326,0,0,0 +2,0,0,0,0,.1572505,9.967326,0,0,0 +1,0,0,0,0,.1572505,9.967326,0,0,0 +3,0,0,0,0,.1572505,9.967326,0,0,0 +0,0,0,0,0,.1572505,9.967326,0,0,0 +1,0,0,0,0,.1572505,9.967326,0,0,0 +2,0,0,0,0,.1572505,9.967326,0,0,0 +6,3.258096,0,6.49224,7.878534,1,17.2,0,1,0 +6,3.258096,0,6.49224,7.878534,1,17.2,0,1,0 +4,3.258096,0,6.49224,7.878534,1,17.2,0,1,0 +1,3.258096,0,6.49224,7.878534,1,17.2,0,1,0 +8,3.258096,0,6.49224,7.878534,1,17.2,0,1,0 +6,3.258096,0,6.49224,7.878534,0,13.8,1,0,0 +2,3.258096,0,6.49224,7.878534,0,13.8,1,0,0 +4,3.258096,0,6.49224,7.878534,0,13.8,1,0,0 +5,3.258096,0,6.49224,7.878534,0,13.8,1,0,0 +8,3.258096,0,6.49224,7.878534,0,13.8,1,0,0 +5,3.258096,0,6.49224,7.878534,1,9.967326,1,0,0 +2,3.258096,0,6.49224,7.878534,1,9.967326,1,0,0 +7,3.258096,0,6.49224,7.878534,1,9.967326,1,0,0 +6,3.258096,0,6.49224,7.878534,1,9.967326,1,0,0 +6,3.258096,0,6.49224,7.878534,1,9.967326,1,0,0 +6,3.258096,0,6.49224,7.878534,0,9.967326,1,0,0 +5,3.258096,0,6.49224,7.878534,0,9.967326,1,0,0 +8,3.258096,0,6.49224,7.878534,0,9.967326,1,0,0 +4,3.258096,0,6.49224,7.878534,0,9.967326,1,0,0 +2,3.258096,0,6.49224,7.878534,0,9.967326,1,0,0 +16,3.258096,0,6.49224,7.878534,1,13.8,1,0,0 +2,3.258096,0,6.49224,7.878534,1,13.8,1,0,0 +12,3.258096,0,6.49224,7.878534,1,13.8,1,0,0 +5,3.258096,0,6.49224,7.878534,1,13.8,1,0,0 +14,3.258096,0,6.49224,7.878534,1,13.8,1,0,0 +4,3.258096,0,6.49224,7.878534,0,20.7,1,0,0 +4,3.258096,0,6.49224,7.878534,0,20.7,1,0,0 +2,3.258096,0,6.49224,7.878534,0,20.7,1,0,0 +4,3.258096,0,6.49224,7.878534,0,20.7,1,0,0 +5,3.258096,0,6.49224,7.878534,0,20.7,1,0,0 +0,3.258096,0,5.703783,7.090077,0,10.3,1,0,0 +2,3.258096,0,5.703783,7.090077,0,10.3,1,0,0 +1,3.258096,0,5.703783,7.090077,0,10.3,1,0,0 +1,3.258096,0,5.703783,7.090077,0,10.3,1,0,0 +1,3.258096,0,5.703783,7.090077,0,10.3,1,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +6,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,0,1,0,0 +1,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,1,31,1,0,0 +0,0,1,6.109248,6.160541,1,31,1,0,0 +0,0,1,6.109248,6.160541,1,31,1,0,0 +4,0,1,6.109248,6.160541,1,24.1,1,0,0 +10,0,1,6.109248,6.160541,1,24.1,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +2,0,1,6.109248,6.160541,0,9.967326,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +1,0,0,4.276666,0,0,3.4,0,0,0 +0,0,0,4.276666,0,0,3.4,0,0,0 +0,0,0,4.276666,0,0,3.4,0,0,0 +12,0,0,4.276666,0,1,20.7,0,0,0 +4,0,0,4.276666,0,1,20.7,0,0,0 +5,0,0,4.276666,0,1,20.7,0,0,0 +1,0,0,0,0,0,10.3,1,0,0 +5,0,0,0,0,0,10.3,1,0,0 +3,0,0,0,0,0,10.3,1,0,0 +4,0,0,0,0,0,10.3,1,0,0 +4,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,24.1,1,0,0 +1,0,0,0,0,0,24.1,1,0,0 +1,0,0,0,0,0,24.1,1,0,0 +2,0,0,0,0,0,24.1,1,0,0 +6,0,0,0,0,0,24.1,1,0,0 +1,4.564348,0,5.741848,5.937397,0,13.8,0,0,0 +2,4.564348,0,5.741848,5.937397,0,13.8,0,0,0 +5,4.564348,0,5.741848,5.937397,0,13.8,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +14,0,1,0,5.061929,1,24.1,1,0,0 +13,0,1,0,5.061929,1,24.1,1,0,0 +7,0,1,0,5.061929,1,24.1,1,0,0 +4,0,1,5.010635,5.061929,0,24.1,1,0,0 +11,0,1,5.010635,5.061929,0,24.1,1,0,0 +11,0,1,5.010635,5.061929,0,24.1,1,0,0 +0,3.258096,0,6.119858,7.506152,0,3.4,1,0,0 +1,3.258096,0,6.119858,7.506152,0,3.4,1,0,0 +0,3.258096,0,6.119858,7.506152,0,3.4,1,0,0 +0,3.258096,0,6.119858,7.506152,0,9.967326,0,0,0 +1,3.258096,0,6.119858,7.506152,0,9.967326,0,0,0 +2,3.258096,0,6.119858,7.506152,0,9.967326,0,0,0 +0,3.258096,0,6.119858,7.506152,0,3.4,0,0,0 +0,3.258096,0,6.119858,7.506152,0,3.4,0,0,0 +0,3.258096,0,6.119858,7.506152,0,3.4,0,0,0 +2,3.258096,0,6.119858,7.506152,0,9.967326,0,0,0 +0,3.258096,0,6.119858,7.506152,0,9.967326,0,0,0 +1,3.258096,0,6.119858,7.506152,0,9.967326,0,0,0 +2,3.258096,0,6.119858,7.506152,0,6.9,0,0,0 +1,3.258096,0,6.119858,7.506152,0,6.9,0,0,0 +5,3.258096,0,6.119858,7.506152,0,6.9,0,0,0 +1,3.258096,0,6.119858,7.506152,0,3.4,0,0,0 +0,3.258096,0,6.119858,7.506152,0,3.4,0,0,0 +0,3.258096,0,6.119858,7.506152,0,3.4,0,0,0 +0,3.258096,0,5.497783,6.884077,0,6.9,0,0,0 +0,3.258096,0,5.497783,6.884077,0,6.9,0,0,0 +0,3.258096,0,5.497783,6.884077,0,6.9,0,0,0 +1,0,1,5.352806,5.061929,1,3.4,1,0,0 +1,0,1,6.109248,6.160541,0,13.8,1,0,0 +1,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,1,3.4,1,0,0 +0,0,1,6.109248,6.160541,1,3.4,1,0,0 +0,0,1,6.109248,6.160541,1,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,13.8,0,0,0 +0,0,1,6.109248,6.160541,0,13.8,0,0,0 +0,0,1,6.109248,6.160541,0,13.8,0,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +1,0,1,6.109248,6.160541,0,13.8,1,0,0 +1,0,1,6.109248,6.160541,0,13.8,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +4,0,0,0,0,0,9.967326,1,0,0 +8,0,0,0,0,0,9.967326,0,0,0 +9,0,0,0,0,0,9.967326,0,0,0 +4,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,17.2,0,0,0 +1,0,0,0,0,0,17.2,0,0,0 +1,0,0,0,0,0,17.2,0,0,0 +2,0,0,0,0,0,13.8,0,0,0 +3,0,0,0,0,0,13.8,0,0,0 +5,0,0,0,0,0,13.8,0,0,0 +2,4.564348,0,5.991465,6.042758,0,24.1,0,0,0 +1,4.564348,0,5.991465,6.042758,0,24.1,0,0,0 +0,4.564348,0,5.991465,6.042758,0,24.1,0,0,0 +0,0,1,6.109248,6.160541,0,17.2,0,0,0 +2,0,1,6.109248,6.160541,0,17.2,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +5,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +9,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +4,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +3,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +5,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +3,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +3,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,0,1,5.010635,5.061929,1,10.3,1,0,0 +0,0,1,5.010635,5.061929,1,10.3,1,0,0 +0,0,1,5.010635,5.061929,1,10.3,1,0,0 +0,0,1,5.010635,5.061929,1,10.3,1,0,0 +2,0,1,5.010635,5.061929,1,10.3,1,0,0 +1,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +4,0,1,6.109248,6.160541,0,10.3,0,0,0 +4,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,0,0,0,0 +4,0,1,6.109248,6.160541,0,0,0,0,0 +1,0,1,6.109248,6.160541,0,0,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,4.564348,0,6.605095,6.656388,0,10.3,1,0,0 +0,4.564348,0,6.605095,6.656388,0,10.3,1,0,0 +0,4.564348,0,6.605095,6.656388,0,10.3,1,0,0 +1,4.564348,0,6.605095,6.656388,0,3.4,0,0,0 +1,4.564348,0,6.605095,6.656388,0,3.4,0,0,0 +1,4.564348,0,6.605095,6.656388,0,3.4,0,0,0 +0,4.564348,0,6.605095,6.656388,0,6.9,0,0,0 +0,4.564348,0,6.605095,6.656388,0,6.9,0,0,0 +0,4.564348,0,6.605095,6.656388,0,6.9,0,0,0 +1,0,0,2.821379,0,0,10.3,0,0,0 +0,0,0,2.821379,0,0,10.3,0,0,0 +4,0,0,2.821379,0,0,10.3,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,0,5.352806,0,0,17.2,0,1,0 +3,0,0,5.352806,0,0,17.2,0,1,0 +2,0,0,5.352806,0,0,17.2,0,1,0 +6,0,0,6.953913,0,0,9.967326,0,0,0 +7,0,0,6.953913,0,0,9.967326,0,0,0 +4,0,0,6.953913,0,0,9.967326,0,0,0 +6,0,0,4.356709,0,0,9.967326,0,0,0 +16,0,0,4.356709,0,0,9.967326,0,0,0 +2,0,0,4.356709,0,0,9.967326,0,0,0 +5,0,0,4.356709,0,1,6.9,0,0,0 +5,0,0,4.356709,0,1,6.9,0,0,0 +5,0,0,4.356709,0,1,6.9,0,0,0 +8,4.564348,0,6.907755,6.959049,.0268456,9.967326,0,0,0 +9,4.564348,0,6.907755,6.959049,.0268456,9.967326,0,0,0 +3,4.564348,0,6.907755,6.959049,.0268456,9.967326,0,0,0 +3,4.564348,0,6.907755,6.959049,.0268456,9.967326,0,0,0 +4,4.564348,0,6.907755,6.959049,.0268456,9.967326,0,0,0 +1,0,0,6.364407,0,1,0,0,0,0 +0,0,0,6.364407,0,1,0,0,0,0 +2,0,0,6.364407,0,1,0,0,0,0 +0,0,0,6.364407,0,1,0,0,0,0 +1,0,0,6.364407,0,1,0,0,0,0 +4,0,0,6.364407,0,0,3.4,0,0,0 +2,0,0,6.364407,0,0,3.4,0,0,0 +4,0,0,6.364407,0,0,3.4,0,0,0 +1,0,0,6.364407,0,0,3.4,0,0,0 +2,0,0,6.364407,0,0,3.4,0,0,0 +5,4.564348,0,0,0,.0268456,9.967326,0,0,0 +0,4.564348,0,0,0,.0268456,9.967326,0,0,0 +2,4.564348,0,0,0,.0268456,9.967326,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,4.564348,0,6.620073,6.671367,0,6.9,0,0,0 +3,4.564348,0,6.620073,6.671367,0,6.9,0,0,0 +0,4.564348,0,6.620073,6.671367,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,.0268456,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,.0268456,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,.0268456,9.967326,0,0,0 +1,3.931826,0,5.416101,6.109248,1,9.967326,0,0,0 +2,3.931826,0,5.416101,6.109248,1,9.967326,0,0,0 +1,3.931826,0,5.416101,6.109248,1,9.967326,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +9,0,1,6.109248,6.160541,0,9.967326,0,0,0 +11,0,1,6.109248,6.160541,0,9.967326,0,0,0 +17,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +1,4.564348,0,6.907755,6.959049,0,0,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +2,0,0,6.087683,0,0,13.8,0,0,0 +2,0,0,6.087683,0,0,13.8,0,0,0 +9,0,0,6.087683,0,0,13.8,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +7,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0 +6,0,0,0,0,0,0,0,0,0 +1,4.564348,0,5.991465,6.042758,0,6.9,0,0,0 +2,4.564348,0,5.991465,6.042758,0,6.9,0,0,0 +2,4.564348,0,5.991465,6.042758,0,6.9,0,0,0 +4,0,0,5.629059,0,.0268456,9.967326,0,0,0 +1,0,0,5.629059,0,.0268456,9.967326,0,0,0 +2,0,0,5.629059,0,.0268456,9.967326,0,0,0 +2,0,0,5.629059,0,.0268456,9.967326,0,0,0 +5,3.931826,0,6.253829,7.600903,.0268456,9.967326,0,0,0 +1,3.931826,0,6.253829,7.600903,.0268456,9.967326,0,0,0 +7,0,1,6.109248,6.160541,.0268456,9.967326,0,0,0 +1,0,1,6.109248,6.160541,.0268456,9.967326,0,0,0 +13,0,0,6.953913,0,.0268456,9.967326,0,0,0 +14,0,0,6.953913,0,.0268456,9.967326,0,0,0 +5,0,0,0,0,.0268456,9.967326,0,0,0 +2,0,1,6.109248,6.160541,.0268456,9.967326,0,0,0 +3,0,1,6.109248,6.160541,.0268456,9.967326,0,0,0 +2,0,1,6.109248,6.160541,.0268456,9.967326,0,0,0 +4,0,1,6.109248,6.160541,.0268456,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,.0268456,9.967326,0,0,0 +7,0,1,6.109248,6.160541,.0268456,9.967326,0,0,0 +6,0,1,6.109248,6.160541,.0268456,9.967326,0,0,0 +9,3.258096,0,5.966147,7.352441,.0268456,9.967326,0,0,0 +5,3.258096,0,5.966147,7.352441,.0268456,9.967326,0,0,0 +1,0,1,6.694067,6.160541,.0268456,9.967326,0,0,0 +4,0,0,5.796483,0,.0268456,9.967326,0,0,0 +5,0,0,5.796483,0,.0268456,9.967326,0,0,0 +6,0,0,5.796483,0,.0268456,9.967326,0,0,0 +8,3.258096,0,6.49224,7.878534,.0268456,9.967326,0,0,0 +5,3.258096,0,6.49224,7.878534,.0268456,9.967326,0,0,0 +5,3.258096,0,6.49224,7.878534,.0268456,9.967326,0,0,0 +7,0,0,5.566358,0,.0268456,9.967326,0,0,0 +12,0,0,6.660473,0,.0268456,9.967326,0,0,0 +8,0,0,4.832943,0,.0268456,9.967326,0,0,0 +4,0,1,5.703783,5.755076,.0268456,9.967326,0,0,0 +6,4.564348,0,6.818924,6.870217,.0268456,9.967326,0,0,0 +7,4.564348,0,6.818924,6.870217,.0268456,9.967326,0,0,0 +12,4.564348,0,6.818924,6.870217,.0268456,9.967326,0,0,0 +9,4.564348,0,6.620073,6.671367,.0268456,9.967326,0,0,0 +3,4.564348,0,6.907755,6.959049,.0268456,9.967326,0,0,0 +4,4.564348,0,6.907755,6.959049,.0268456,9.967326,0,0,0 +5,3.258096,0,6.327937,7.714231,.0268456,9.967326,0,0,0 +9,0,0,2.821379,0,.0268456,9.967326,0,0,0 +1,4.564348,0,6.802395,6.959049,.0268456,9.967326,0,0,0 +0,4.564348,0,6.802395,6.959049,.0268456,9.967326,0,0,0 +3,3.258096,0,6.49224,7.878534,.0268456,9.967326,0,0,0 +5,3.258096,0,6.49224,7.878534,.0268456,9.967326,0,0,0 +6,0,0,5.426711,0,.0268456,9.967326,0,0,0 +7,0,0,5.052161,0,.0268456,9.967326,0,0,0 +17,4.564348,0,6.818924,6.870217,.0268456,9.967326,0,0,0 +3,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +2,4.564348,0,6.55108,6.602374,1,10.3,1,0,0 +0,4.564348,0,6.55108,6.602374,1,10.3,1,0,0 +0,4.564348,0,6.55108,6.602374,1,10.3,1,0,0 +0,4.564348,0,6.55108,6.602374,0,9.967326,1,0,0 +0,4.564348,0,6.55108,6.602374,0,9.967326,1,0,0 +1,4.564348,0,6.55108,6.602374,0,9.967326,1,0,0 +0,4.564348,0,6.55108,6.602374,0,0,1,0,0 +0,4.564348,0,6.55108,6.602374,0,0,1,0,0 +8,4.564348,0,6.55108,6.602374,0,0,1,0,0 +0,4.564348,0,6.55108,6.602374,0,9.967326,1,0,0 +0,4.564348,0,6.55108,6.602374,0,9.967326,1,0,0 +0,4.564348,0,6.55108,6.602374,0,9.967326,1,0,0 +2,3.258096,0,6.586172,8.006368,0,6.9,0,0,0 +3,3.258096,0,6.586172,8.006368,0,6.9,0,0,0 +0,3.258096,0,6.586172,8.006368,0,6.9,0,0,0 +4,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +6,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.586172,8.006368,0,9.967326,1,0,0 +1,3.258096,0,6.586172,8.006368,0,9.967326,1,0,0 +3,3.258096,0,6.586172,8.006368,0,9.967326,1,0,0 +0,3.258096,0,6.586172,8.006368,0,13.8,0,0,0 +2,3.258096,0,6.586172,8.006368,0,13.8,0,0,0 +0,3.258096,0,6.586172,8.006368,0,13.8,0,0,0 +4,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +4,0,0,0,0,0,13.8,0,0,0 +0,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,10.3,1,0,0 +2,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +4,0,0,0,0,0,9.967326,0,0,0 +3,0,1,0,5.061929,0,6.9,1,0,0 +2,0,1,0,5.061929,0,6.9,1,0,0 +1,0,1,0,5.061929,0,6.9,1,0,0 +1,0,0,5.399971,0,0,10.3,1,0,0 +1,0,0,5.399971,0,0,10.3,1,0,0 +0,0,0,5.399971,0,0,10.3,1,0,0 +5,0,0,0,0,1,10.3,1,0,0 +3,0,0,0,0,1,10.3,1,0,0 +2,0,0,0,0,1,10.3,1,0,0 +1,0,0,0,0,1,0,1,0,0 +1,0,0,0,0,1,0,1,0,0 +1,0,0,0,0,1,0,1,0,0 +7,0,0,0,0,0,9.967326,0,1,0 +3,0,0,0,0,0,9.967326,0,1,0 +8,0,0,0,0,0,9.967326,0,1,0 +8,0,0,0,0,0,9.967326,1,0,0 +4,0,0,0,0,0,9.967326,1,0,0 +4,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,17.2,0,0,0 +1,0,0,0,0,0,17.2,0,0,0 +2,0,0,0,0,0,17.2,0,0,0 +8,0,0,0,0,0,17.2,0,0,0 +4,0,0,0,0,0,17.2,0,0,0 +0,0,1,6.226378,6.160541,0,10.3,0,0,0 +0,0,1,6.226378,6.160541,0,10.3,0,0,0 +0,0,1,6.226378,6.160541,0,10.3,0,0,0 +4,0,1,6.226378,6.160541,0,6.9,1,0,0 +0,0,1,6.226378,6.160541,0,6.9,1,0,0 +0,0,1,6.226378,6.160541,0,6.9,1,0,0 +1,0,1,6.226378,6.160541,0,9.967326,0,0,0 +1,0,1,6.226378,6.160541,0,9.967326,0,0,0 +1,0,1,6.226378,6.160541,0,9.967326,0,0,0 +5,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,9.967326,1,0,0 +3,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +5,0,0,0,0,0,3.4,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +4,0,0,0,0,0,3.4,1,0,0 +3,0,0,0,0,0,3.4,1,0,0 +5,0,0,5.676206,0,1,3.4,1,0,0 +1,0,0,5.676206,0,1,3.4,1,0,0 +1,0,0,5.676206,0,1,3.4,1,0,0 +4,0,0,5.676206,0,1,3.4,1,0,0 +2,0,0,5.676206,0,1,3.4,1,0,0 +1,0,0,5.676206,0,1,9.967326,0,1,0 +2,0,0,5.676206,0,1,9.967326,0,1,0 +1,0,0,5.676206,0,1,9.967326,0,1,0 +8,0,0,5.676206,0,1,9.967326,0,1,0 +5,0,0,5.676206,0,1,9.967326,0,1,0 +7,0,0,5.676206,0,0,9.967326,0,1,0 +5,0,0,5.676206,0,0,9.967326,0,1,0 +0,0,0,5.676206,0,0,9.967326,0,1,0 +0,0,0,5.676206,0,0,9.967326,0,1,0 +1,0,0,5.676206,0,0,9.967326,0,1,0 +2,0,0,5.676206,0,0,9.967326,1,0,0 +2,0,0,5.676206,0,0,9.967326,1,0,0 +2,0,0,5.676206,0,0,9.967326,1,0,0 +5,0,0,5.676206,0,0,9.967326,1,0,0 +7,0,0,5.676206,0,0,9.967326,1,0,0 +11,0,0,5.676206,0,0,17.2,1,0,0 +4,0,0,5.676206,0,0,17.2,1,0,0 +11,0,0,5.676206,0,0,17.2,1,0,0 +9,0,0,5.676206,0,0,17.2,1,0,0 +8,0,0,5.676206,0,0,17.2,1,0,0 +6,0,0,5.676206,0,0,9.967326,0,1,0 +9,0,0,5.676206,0,0,9.967326,0,1,0 +6,0,0,5.676206,0,0,9.967326,0,1,0 +10,0,0,5.676206,0,0,9.967326,0,1,0 +5,0,0,5.676206,0,0,9.967326,0,1,0 +2,0,1,5.010635,5.061929,0,6.9,1,0,0 +0,0,1,5.010635,5.061929,0,6.9,1,0,0 +0,0,1,5.010635,5.061929,0,6.9,1,0,0 +2,0,1,5.010635,5.061929,0,6.9,0,0,0 +1,0,1,5.010635,5.061929,0,6.9,0,0,0 +0,0,1,5.010635,5.061929,0,6.9,0,0,0 +3,0,1,6.104436,6.160541,0,3.4,0,0,0 +0,0,1,6.104436,6.160541,0,3.4,0,0,0 +1,0,1,6.104436,6.160541,0,3.4,0,0,0 +5,0,1,6.104436,6.160541,0,24.1,1,0,0 +3,0,1,6.104436,6.160541,0,24.1,1,0,0 +1,0,1,6.104436,6.160541,0,24.1,1,0,0 +8,0,1,6.104436,6.160541,0,9.967326,1,0,0 +2,0,1,6.104436,6.160541,0,9.967326,1,0,0 +2,0,1,6.104436,6.160541,0,9.967326,1,0,0 +3,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +7,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +4,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.586172,8.006368,0,0,0,0,0 +0,3.258096,0,6.586172,8.006368,0,0,0,0,0 +0,3.258096,0,6.586172,8.006368,0,0,0,0,0 +1,3.258096,0,6.586172,8.006368,0,0,0,0,0 +0,3.258096,0,6.586172,8.006368,0,0,0,0,0 +0,3.258096,0,6.586172,8.006368,0,3.4,0,0,0 +2,3.258096,0,6.586172,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.586172,8.006368,0,3.4,0,0,0 +1,3.258096,0,6.586172,8.006368,0,3.4,0,0,0 +1,3.258096,0,6.586172,8.006368,0,3.4,0,0,0 +1,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +4,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.586172,8.006368,1,10.3,1,0,0 +2,3.258096,0,6.586172,8.006368,1,10.3,1,0,0 +3,3.258096,0,6.586172,8.006368,1,10.3,1,0,0 +3,3.258096,0,6.586172,8.006368,1,10.3,1,0,0 +1,3.258096,0,6.586172,8.006368,1,10.3,1,0,0 +2,0,0,5.974827,0,0,13.8,0,0,0 +4,0,0,5.974827,0,0,13.8,0,0,0 +2,0,0,5.974827,0,0,13.8,0,0,0 +0,0,1,6.005367,5.061929,0,10.3,0,0,1 +1,0,1,6.005367,5.061929,0,10.3,0,0,1 +0,0,1,6.005367,5.061929,0,10.3,0,0,1 +1,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +1,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +1,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +1,0,0,5.437731,0,0,17.2,1,0,0 +5,0,0,5.437731,0,0,17.2,1,0,0 +2,0,0,5.437731,0,0,17.2,1,0,0 +2,0,0,5.437731,0,0,10.3,0,0,0 +3,0,0,5.437731,0,0,10.3,0,0,0 +1,0,0,5.437731,0,0,10.3,0,0,0 +4,0,1,5.703783,5.755076,1,13.8,0,1,0 +1,0,1,5.703783,5.755076,1,13.8,0,1,0 +3,0,1,5.703783,5.755076,1,13.8,0,1,0 +2,0,1,5.703783,5.755076,0,20.7,1,0,0 +1,0,1,5.703783,5.755076,0,20.7,1,0,0 +3,0,1,5.703783,5.755076,0,20.7,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +4,0,1,6.109248,6.160541,0,6.9,0,0,0 +3,0,1,6.109248,6.160541,0,6.9,0,0,0 +2,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +6,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +1,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +3,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +1,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +5,0,0,5.418764,0,1,17.2,1,0,0 +5,0,0,5.418764,0,1,17.2,1,0,0 +3,0,0,5.418764,0,1,17.2,1,0,0 +3,0,0,5.418764,0,0,9.967326,0,0,0 +1,0,0,5.418764,0,0,9.967326,0,0,0 +2,0,0,5.418764,0,0,9.967326,0,0,0 +5,0,0,5.418764,0,0,9.967326,0,0,0 +0,0,0,5.418764,0,0,9.967326,0,0,0 +0,0,0,5.418764,0,0,9.967326,0,0,0 +5,0,0,5.418764,0,0,20.7,0,0,0 +4,0,0,5.418764,0,0,20.7,0,0,0 +7,0,0,5.418764,0,0,20.7,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +2,4.564348,0,6.907755,6.959049,1,24.1,0,0,0 +2,4.564348,0,6.907755,6.959049,1,24.1,0,0,0 +0,4.564348,0,6.907755,6.959049,1,24.1,0,0,0 +0,4.564348,0,6.907755,6.959049,1,24.1,0,0,0 +0,4.564348,0,6.907755,6.959049,1,24.1,0,0,0 +3,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +5,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +6,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +2,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +8,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +4,0,0,6.346478,0,0,13.8,0,0,0 +1,0,0,6.346478,0,0,13.8,0,0,0 +10,0,0,6.346478,0,0,13.8,0,0,0 +3,0,0,6.346478,0,0,9.967326,0,0,0 +1,0,0,6.346478,0,0,9.967326,0,0,0 +2,0,0,6.346478,0,0,9.967326,0,0,0 +13,0,0,6.346478,0,0,9.967326,0,0,0 +4,0,0,6.346478,0,0,9.967326,0,0,0 +5,0,0,6.346478,0,0,9.967326,0,0,0 +3,0,1,5.703783,5.755076,0,3.4,1,0,0 +3,0,1,5.703783,5.755076,0,3.4,1,0,0 +0,0,1,5.703783,5.755076,0,3.4,1,0,0 +0,0,1,5.703783,5.755076,0,3.4,1,0,0 +1,0,1,5.703783,5.755076,0,3.4,1,0,0 +5,0,1,5.703783,5.755076,0,10.3,1,0,0 +5,0,1,5.703783,5.755076,0,10.3,1,0,0 +0,0,1,5.703783,5.755076,0,10.3,1,0,0 +3,0,1,5.703783,5.755076,0,10.3,1,0,0 +5,0,1,5.703783,5.755076,0,10.3,1,0,0 +4,0,0,0,0,0,0,1,0,0 +5,0,0,0,0,0,0,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +5,0,0,0,0,0,3.4,1,0,0 +4,0,0,0,0,0,10.3,1,0,0 +5,0,0,0,0,0,10.3,1,0,0 +5,0,0,0,0,0,10.3,1,0,0 +7,0,0,5.681128,0,1,27.6,1,0,0 +2,0,0,5.681128,0,1,27.6,1,0,0 +0,0,0,5.676206,0,0,9.967326,0,0,0 +1,0,0,5.676206,0,0,9.967326,0,0,0 +1,0,0,5.676206,0,0,9.967326,0,0,0 +4,0,0,5.676206,0,0,9.967326,0,0,0 +1,0,0,5.676206,0,0,9.967326,0,0,0 +1,0,0,5.676206,0,0,9.967326,0,0,0 +2,0,0,5.676206,0,0,13.8,0,0,0 +1,0,0,5.676206,0,0,13.8,0,0,0 +4,0,0,5.676206,0,0,13.8,0,0,0 +0,0,0,5.676206,0,1,24.1,0,0,0 +0,0,0,5.676206,0,1,24.1,0,0,0 +3,0,0,5.676206,0,1,24.1,0,0,0 +1,0,0,5.676206,0,0,9.967326,0,0,0 +1,0,0,5.676206,0,0,9.967326,0,0,0 +4,0,0,5.676206,0,0,9.967326,0,0,0 +4,0,0,5.676206,0,0,3.4,0,0,0 +0,0,0,5.676206,0,0,3.4,0,0,0 +1,0,0,5.676206,0,0,3.4,0,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +5,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +0,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +5,0,0,0,0,1,37.9,0,1,0 +7,0,0,0,0,1,37.9,0,1,0 +1,0,0,0,0,1,37.9,0,1,0 +0,0,0,0,0,1,37.9,0,1,0 +2,0,0,0,0,1,37.9,0,1,0 +8,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +7,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +8,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +6,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +6,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +2,4.564348,0,6.907755,6.959049,0,0,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,0,1,6.22543,6.160541,0,3.4,0,0,0 +1,0,1,6.22543,6.160541,0,3.4,0,0,0 +0,0,1,6.22543,6.160541,0,3.4,0,0,0 +0,0,1,6.22543,6.160541,0,9.967326,0,0,0 +0,0,1,6.22543,6.160541,0,9.967326,0,0,0 +0,0,1,6.22543,6.160541,0,9.967326,0,0,0 +0,0,1,6.22543,6.160541,0,9.967326,0,0,0 +1,0,1,6.22543,6.160541,0,9.967326,0,0,0 +1,0,1,6.22543,6.160541,0,9.967326,0,0,0 +4,0,1,6.22543,6.160541,0,9.967326,0,0,0 +3,0,1,6.22543,6.160541,0,9.967326,0,0,0 +4,0,1,6.22543,6.160541,0,9.967326,0,0,0 +8,0,1,6.22543,6.160541,0,6.9,0,0,0 +2,0,1,6.22543,6.160541,0,6.9,0,0,0 +0,0,1,6.22543,6.160541,0,6.9,0,0,0 +1,0,0,6.094202,0,0,9.967326,0,0,0 +3,0,0,6.094202,0,0,9.967326,0,0,0 +3,0,0,6.094202,0,0,9.967326,0,0,0 +0,0,0,6.094202,0,0,3.4,0,0,0 +0,0,0,6.094202,0,0,3.4,0,0,0 +0,0,0,6.094202,0,0,3.4,0,0,0 +2,0,0,6.094202,0,0,9.967326,0,0,0 +4,0,0,6.094202,0,0,9.967326,0,0,0 +2,0,0,6.094202,0,0,9.967326,0,0,0 +1,0,0,6.094202,0,0,10.3,0,0,0 +2,0,0,6.094202,0,0,10.3,0,0,0 +1,0,0,6.094202,0,0,10.3,0,0,0 +0,4.564348,0,6.882438,6.933731,0,24.1,0,0,0 +2,4.564348,0,6.882438,6.933731,0,24.1,0,0,0 +0,4.564348,0,6.882438,6.933731,0,24.1,0,0,0 +2,0,0,5.313501,0,0,17.2,1,0,0 +1,0,0,5.313501,0,0,17.2,1,0,0 +3,0,0,5.313501,0,0,17.2,1,0,0 +3,0,0,4.880982,0,0,0,1,0,0 +5,0,0,4.880982,0,0,0,1,0,0 +7,0,0,4.880982,0,0,0,1,0,0 +4,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,1,0,0 +4,0,1,6.109248,6.160541,0,10.3,1,0,0 +6,0,1,6.109248,6.160541,0,13.8,1,0,0 +3,0,1,6.109248,6.160541,0,13.8,1,0,0 +9,0,1,6.109248,6.160541,0,13.8,1,0,0 +7,0,1,6.109248,6.160541,0,9.967326,0,1,0 +12,0,1,6.109248,6.160541,0,9.967326,0,1,0 +11,0,1,6.109248,6.160541,0,9.967326,0,1,0 +10,0,1,6.109248,6.160541,0,9.967326,1,0,0 +4,0,1,6.109248,6.160541,0,9.967326,1,0,0 +6,0,1,6.109248,6.160541,0,9.967326,1,0,0 +5,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +5,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,17.2,0,0,0 +2,0,0,0,0,0,17.2,0,0,0 +0,0,0,0,0,0,17.2,0,0,0 +3,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +0,3.258096,0,5.703783,7.090077,0,3.4,0,0,0 +0,3.258096,0,5.703783,7.090077,0,3.4,0,0,0 +1,3.258096,0,5.703783,7.090077,0,3.4,0,0,0 +1,3.258096,0,5.703783,7.090077,0,3.4,0,0,0 +1,3.258096,0,5.703783,7.090077,0,3.4,0,0,0 +2,3.258096,0,5.703783,7.090077,0,9.967326,0,0,0 +0,3.258096,0,5.703783,7.090077,0,9.967326,0,0,0 +0,3.258096,0,5.703783,7.090077,0,9.967326,0,0,0 +2,3.258096,0,5.703783,7.090077,0,9.967326,0,0,0 +0,3.258096,0,5.703783,7.090077,0,9.967326,0,0,0 +1,3.258096,0,0,6.659294,0,9.967326,0,0,0 +2,3.258096,0,0,6.659294,0,9.967326,0,0,0 +0,3.258096,0,0,6.659294,0,9.967326,0,0,0 +2,3.258096,0,0,6.659294,0,3.4,0,0,0 +1,3.258096,0,0,6.659294,0,3.4,0,0,0 +2,3.258096,0,0,6.659294,0,3.4,0,0,0 +1,3.258096,0,6.098074,7.484369,0,3.4,0,0,0 +1,3.258096,0,6.098074,7.484369,0,3.4,0,0,0 +1,3.258096,0,6.098074,7.484369,0,3.4,0,0,0 +3,3.258096,0,6.620073,8.006368,0,20.7,1,0,0 +2,3.258096,0,6.620073,8.006368,0,20.7,1,0,0 +1,3.258096,0,6.620073,8.006368,0,20.7,1,0,0 +3,3.258096,0,6.620073,8.006368,0,20.7,0,0,0 +4,3.258096,0,6.620073,8.006368,0,20.7,0,0,0 +1,3.258096,0,6.620073,8.006368,0,20.7,0,0,0 +2,0,0,6.094202,0,0,9.967326,0,0,0 +3,0,0,6.094202,0,0,9.967326,0,0,0 +0,0,0,6.094202,0,0,9.967326,0,0,0 +4,0,0,6.094202,0,0,9.967326,1,0,0 +1,0,0,6.094202,0,0,9.967326,1,0,0 +3,0,0,6.094202,0,0,9.967326,1,0,0 +7,0,0,6.094202,0,0,10.3,1,0,0 +18,0,0,6.094202,0,0,10.3,1,0,0 +9,0,0,6.094202,0,0,10.3,1,0,0 +7,0,0,6.094202,0,0,20.7,1,0,0 +34,0,0,6.094202,0,0,20.7,1,0,0 +16,0,0,6.094202,0,0,20.7,1,0,0 +0,3.258096,0,6.2105,7.596794,0,13.8,0,0,0 +2,3.258096,0,6.2105,7.596794,0,13.8,0,0,0 +2,3.258096,0,6.2105,7.596794,0,13.8,0,0,0 +4,3.258096,0,6.2105,7.596794,0,9.967326,0,0,0 +2,3.258096,0,6.2105,7.596794,0,9.967326,0,0,0 +1,3.258096,0,6.2105,7.596794,0,9.967326,0,0,0 +11,3.258096,0,6.2105,7.596794,0,3.4,0,0,0 +3,3.258096,0,6.2105,7.596794,0,3.4,0,0,0 +0,3.258096,0,6.2105,7.596794,0,3.4,0,0,0 +4,3.258096,0,6.2105,7.596794,0,9.967326,0,0,0 +2,3.258096,0,6.2105,7.596794,0,9.967326,0,0,0 +2,3.258096,0,6.2105,7.596794,0,9.967326,0,0,0 +0,4.564348,0,5.398163,5.449456,0,9.967326,0,0,0 +0,4.564348,0,5.398163,5.449456,0,9.967326,0,0,0 +2,4.564348,0,5.398163,5.449456,0,3.4,0,0,0 +2,4.564348,0,5.398163,5.449456,0,3.4,0,0,0 +0,4.564348,0,5.398163,5.449456,0,3.4,0,0,0 +1,4.564348,0,5.398163,5.449456,1,24.1,1,0,0 +1,4.564348,0,5.398163,5.449456,1,24.1,1,0,0 +0,4.564348,0,5.398163,5.449456,1,24.1,1,0,0 +1,4.564348,0,5.398163,5.449456,0,9.967326,0,0,0 +0,4.564348,0,5.398163,5.449456,0,9.967326,0,0,0 +0,4.564348,0,5.398163,5.449456,0,9.967326,0,0,0 +2,4.564348,0,5.398163,5.449456,0,9.967326,0,0,0 +0,4.564348,0,5.398163,5.449456,0,9.967326,0,0,0 +2,4.564348,0,5.398163,5.449456,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,20.7,0,0,0 +2,0,1,6.109248,6.160541,0,20.7,0,0,0 +3,0,1,6.109248,6.160541,0,20.7,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +11,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +5,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +4,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +5,3.258096,0,6.620073,8.006368,0,20.7,0,0,0 +3,3.258096,0,6.620073,8.006368,0,20.7,0,0,0 +4,3.258096,0,6.620073,8.006368,0,20.7,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,0,1,6.823765,5.755076,0,13.8,0,0,0 +1,0,1,6.823765,5.755076,0,13.8,0,0,0 +7,0,1,6.823765,5.755076,0,13.8,0,0,0 +0,0,1,6.823765,5.755076,0,3.4,0,0,0 +0,0,1,6.823765,5.755076,0,3.4,0,0,0 +0,0,1,6.823765,5.755076,0,3.4,0,0,0 +8,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,1,13.8,0,0,0 +0,3.258096,0,6.620073,8.006368,1,13.8,0,0,0 +2,3.258096,0,6.620073,8.006368,1,13.8,0,0,0 +5,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +0,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +2,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.931826,0,6.639876,7.333023,0,13.8,1,0,0 +3,3.931826,0,6.639876,7.333023,0,13.8,1,0,0 +1,3.931826,0,6.639876,7.333023,0,13.8,1,0,0 +1,4.564348,0,6.533062,6.584355,1,17.2,0,0,0 +1,4.564348,0,6.533062,6.584355,1,17.2,0,0,0 +8,4.564348,0,6.533062,6.584355,1,17.2,0,0,0 +10,4.564348,0,6.533062,6.584355,1,17.2,0,0,0 +3,4.564348,0,6.533062,6.584355,1,17.2,0,0,0 +3,4.564348,0,6.533062,6.584355,1,20.7,1,0,0 +1,4.564348,0,6.533062,6.584355,1,20.7,1,0,0 +1,4.564348,0,6.533062,6.584355,1,20.7,1,0,0 +3,4.564348,0,6.533062,6.584355,1,20.7,1,0,0 +1,4.564348,0,6.533062,6.584355,1,20.7,1,0,0 +4,0,0,6.094202,0,0,6.9,0,0,0 +0,0,0,6.094202,0,0,6.9,0,0,0 +0,0,0,6.094202,0,0,6.9,0,0,0 +2,0,0,6.094202,0,0,27.6,0,0,0 +3,0,0,6.094202,0,0,27.6,0,0,0 +13,0,0,6.094202,0,0,27.6,0,0,0 +0,0,0,6.094202,0,0,6.9,0,0,0 +0,0,0,6.094202,0,0,6.9,0,0,0 +1,0,0,6.094202,0,0,6.9,0,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +28,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +1,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +3,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +3,0,1,6.109248,6.160541,0,10.3,0,0,0 +4,0,1,6.109248,6.160541,0,10.3,0,0,0 +1,0,1,6.109248,6.160541,0,10.3,0,0,0 +3,0,1,6.109248,6.160541,0,10.3,0,0,0 +6,0,1,6.109248,6.160541,0,17.2,1,0,0 +4,0,1,6.109248,6.160541,0,17.2,1,0,0 +4,0,1,6.109248,6.160541,0,17.2,1,0,0 +4,0,1,6.109248,6.160541,0,17.2,1,0,0 +4,0,1,6.109248,6.160541,0,17.2,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +5,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,0,0,0,0,10.3,1,0,0 +3,0,0,0,0,0,10.3,1,0,0 +6,0,0,0,0,0,10.3,1,0,0 +6,0,1,5.703783,5.755076,0,17.2,0,0,0 +3,0,1,5.703783,5.755076,0,17.2,0,0,0 +0,0,1,5.703783,5.755076,0,17.2,0,0,0 +2,0,1,5.703783,5.755076,0,6.9,0,0,0 +0,0,1,5.703783,5.755076,0,6.9,0,0,0 +0,0,1,5.703783,5.755076,0,6.9,0,0,0 +4,0,0,4.836282,0,1,17.2,1,0,0 +7,0,0,4.836282,0,1,17.2,1,0,0 +6,0,0,4.836282,0,1,17.2,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +0,0,0,0,0,0,9.967326,1,0,0 +0,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +6,0,0,0,0,0,9.967326,1,0,0 +11,0,0,0,0,0,6.9,1,0,0 +10,0,0,0,0,0,6.9,1,0,0 +10,0,0,0,0,0,6.9,1,0,0 +5,0,0,0,0,0,6.9,1,0,0 +4,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,3.4,1,0,0 +2,0,0,0,0,0,3.4,1,0,0 +3,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +6,0,0,0,0,0,3.4,1,0,0 +3,0,0,0,0,0,9.967326,1,0,0 +3,0,0,0,0,0,9.967326,1,0,0 +10,0,0,0,0,0,9.967326,1,0,0 +6,0,0,0,0,0,9.967326,1,0,0 +10,0,0,0,0,0,9.967326,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +4,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,1,0,0 +6,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,0,1,6.109248,6.160541,0,3.4,0,0,0 +4,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +7,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,0,4.836282,0,1,10.3,0,0,0 +0,0,0,4.836282,0,1,10.3,0,0,0 +0,0,0,4.836282,0,1,10.3,0,0,0 +2,0,0,4.836282,0,1,10.3,0,0,0 +4,0,0,4.836282,0,1,10.3,0,0,0 +1,0,0,4.836282,0,0,13.8,0,0,0 +0,0,0,4.836282,0,0,13.8,0,0,0 +1,0,0,4.836282,0,0,13.8,0,0,0 +1,0,0,4.836282,0,0,13.8,0,0,0 +1,0,0,4.836282,0,0,13.8,0,0,0 +8,0,0,0,0,0,13.8,1,0,0 +6,0,0,0,0,0,13.8,1,0,0 +17,0,0,0,0,0,13.8,1,0,0 +0,3.931826,0,6.907755,7.600903,0,10.3,1,0,0 +4,3.931826,0,6.907755,7.600903,0,10.3,1,0,0 +3,3.931826,0,6.907755,7.600903,0,10.3,1,0,0 +8,3.931826,0,6.907755,7.600903,1,10.3,1,0,0 +4,3.931826,0,6.907755,7.600903,1,10.3,1,0,0 +4,3.931826,0,6.907755,7.600903,1,10.3,1,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +3,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +2,3.931826,0,6.907755,7.600903,0,10.3,1,0,0 +0,3.931826,0,6.907755,7.600903,0,10.3,1,0,0 +0,3.931826,0,6.907755,7.600903,0,10.3,1,0,0 +1,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,1,6.472594,5.755076,0,10.3,0,0,0 +0,0,1,6.472594,5.755076,0,10.3,0,0,0 +2,0,1,6.472594,5.755076,0,10.3,0,0,0 +4,0,1,6.472594,5.755076,0,0,0,0,0 +4,0,1,6.472594,5.755076,0,0,0,0,0 +2,0,1,6.472594,5.755076,0,0,0,0,0 +1,0,1,5.075674,5.061929,0,6.9,0,0,0 +7,0,1,5.075674,5.061929,0,6.9,0,0,0 +6,0,1,5.075674,5.061929,0,6.9,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,1,6.9,0,1,0 +1,0,0,0,0,1,6.9,0,1,0 +5,0,0,0,0,1,6.9,0,1,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,0,1,6.109248,6.160541,1,17.2,0,0,0 +2,0,1,6.109248,6.160541,1,17.2,0,0,0 +0,0,1,6.109248,6.160541,1,17.2,0,0,0 +3,0,1,6.109248,6.160541,1,17.2,0,0,0 +1,0,1,6.109248,6.160541,1,17.2,0,0,0 +1,0,1,6.109248,6.160541,0,10.3,0,0,0 +6,0,1,6.109248,6.160541,0,10.3,0,0,0 +5,0,1,6.109248,6.160541,0,10.3,0,0,0 +1,0,1,6.109248,6.160541,0,10.3,0,0,0 +3,0,1,6.109248,6.160541,0,10.3,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,0,1,6.109248,6.160541,0,9.967326,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +8,0,1,6.109248,6.160541,0,9.967326,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,0,0,0,0,24.1,1,0,0 +0,0,0,0,0,0,24.1,1,0,0 +1,0,0,0,0,0,24.1,1,0,0 +2,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +10,0,0,0,0,0,9.967326,0,0,0 +9,0,0,0,0,0,9.967326,0,0,0 +5,0,0,0,0,0,9.967326,0,0,0 +4,0,0,0,0,0,10.3,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +4,0,0,5.676206,0,0,3.4,0,0,0 +3,0,0,5.676206,0,0,3.4,0,0,0 +6,0,0,5.676206,0,0,3.4,0,0,0 +6,0,0,5.676206,0,0,3.4,0,0,0 +5,0,0,5.676206,0,0,3.4,0,0,0 +2,0,0,5.676206,0,0,3.4,0,0,0 +0,0,0,5.676206,0,0,3.4,0,0,0 +5,0,0,5.676206,0,0,3.4,0,0,0 +3,0,0,5.676206,0,0,3.4,0,0,0 +7,0,0,5.676206,0,0,3.4,0,0,0 +3,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +7,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +3,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +4,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +2,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +3,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +2,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +5,0,1,6.109248,6.160541,1,3.4,1,0,0 +2,0,1,6.109248,6.160541,1,3.4,1,0,0 +3,0,1,6.109248,6.160541,1,3.4,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +3,0,1,6.109248,6.160541,0,6.9,0,0,0 +4,0,1,5.998539,5.755076,0,3.4,1,0,0 +0,0,1,5.998539,5.755076,0,3.4,1,0,0 +1,0,1,5.998539,5.755076,0,3.4,1,0,0 +1,0,1,5.998539,5.755076,0,10.3,0,0,0 +1,0,1,5.998539,5.755076,0,10.3,0,0,0 +0,0,1,5.998539,5.755076,0,10.3,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +3,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +1,0,1,5.676206,5.061929,0,10.3,0,0,0 +3,0,1,5.676206,5.061929,0,10.3,0,0,0 +6,0,1,5.676206,5.061929,0,10.3,0,0,0 +3,4.564348,0,0,5.061929,0,0,0,0,0 +1,4.564348,0,0,5.061929,0,0,0,0,0 +0,4.564348,0,0,5.061929,0,0,0,0,0 +2,4.564348,0,5.347107,5.398401,0,6.9,0,0,0 +2,4.564348,0,5.347107,5.398401,0,6.9,0,0,0 +7,4.564348,0,5.347107,5.398401,0,6.9,0,0,0 +0,4.564348,0,6.882438,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.882438,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.882438,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.882438,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.882438,6.959049,0,6.9,0,0,0 +3,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +3,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.882438,6.959049,0,10.3,1,0,0 +7,4.564348,0,6.882438,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.882438,6.959049,0,10.3,1,0,0 +2,4.564348,0,6.882438,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.882438,6.959049,0,10.3,1,0,0 +1,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.882438,6.959049,0,9.967326,0,0,0 +3,0,0,5.918894,0,0,13.8,0,0,0 +0,0,0,5.918894,0,0,13.8,0,0,0 +0,0,0,5.918894,0,0,13.8,0,0,0 +16,0,0,5.918894,0,0,9.967326,0,0,0 +40,0,0,5.918894,0,0,9.967326,0,0,0 +19,0,0,5.918894,0,0,9.967326,0,0,0 +7,0,0,5.918894,0,0,17.2,0,0,1 +5,0,0,5.918894,0,0,17.2,0,0,1 +0,0,0,5.918894,0,0,17.2,0,0,1 +1,0,1,5.703783,5.755076,0,3.4,0,0,0 +0,0,1,5.703783,5.755076,0,3.4,0,0,0 +7,0,1,5.703783,5.755076,0,3.4,0,0,0 +3,0,1,5.703783,5.755076,0,6.9,0,0,0 +1,0,1,5.703783,5.755076,0,6.9,0,0,0 +1,0,1,5.703783,5.755076,0,6.9,0,0,0 +3,0,0,5.824229,0,1,6.9,0,0,0 +1,0,0,5.824229,0,1,6.9,0,0,0 +2,0,0,5.824229,0,1,6.9,0,0,0 +1,0,0,5.824229,0,0,9.967326,0,0,0 +1,0,0,5.824229,0,0,9.967326,0,0,0 +2,0,0,5.824229,0,0,9.967326,0,0,0 +3,0,0,5.824229,0,0,3.4,0,0,0 +1,0,0,5.824229,0,0,3.4,0,0,0 +0,0,0,5.824229,0,0,3.4,0,0,0 +2,0,0,5.824229,0,0,9.967326,0,0,0 +1,0,0,5.824229,0,0,9.967326,0,0,0 +3,0,0,5.824229,0,0,9.967326,0,0,0 +1,0,0,5.532757,0,0,10.3,1,0,0 +2,0,0,5.532757,0,0,10.3,1,0,0 +1,0,0,5.532757,0,0,10.3,1,0,0 +2,0,0,5.532757,0,0,10.3,1,0,0 +3,0,0,5.532757,0,0,10.3,1,0,0 +2,0,1,5.010635,5.061929,0,10.3,1,0,0 +1,0,1,5.010635,5.061929,0,10.3,1,0,0 +0,0,1,5.010635,5.061929,0,10.3,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +1,0,0,0,0,0,0,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +0,0,0,0,0,0,9.967326,1,0,0 +0,0,0,0,0,0,9.967326,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +2,0,0,0,0,0,10.3,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +0,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +0,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +3,0,0,0,0,0,6.9,1,0,0 +3,0,1,5.703783,5.755076,0,10.3,0,0,0 +0,0,1,5.703783,5.755076,0,10.3,0,0,0 +4,0,1,5.703783,5.755076,0,10.3,0,0,0 +12,0,1,5.703783,5.755076,0,6.9,1,0,0 +5,0,1,5.703783,5.755076,0,6.9,1,0,0 +0,4.564348,0,6.427944,6.479237,0,6.9,0,0,0 +2,4.564348,0,6.427944,6.479237,0,9.967326,0,0,0 +1,4.564348,0,6.427944,6.479237,0,9.967326,0,0,0 +2,4.564348,0,6.427944,6.479237,0,9.967326,0,0,0 +0,4.564348,0,6.427944,6.479237,0,13.8,0,0,0 +0,0,1,6.109248,6.160541,1,6.9,1,0,0 +8,0,1,6.109248,6.160541,1,6.9,1,0,0 +16,0,1,6.109248,6.160541,1,6.9,1,0,0 +16,0,1,6.109248,6.160541,1,6.9,1,0,0 +4,0,1,6.109248,6.160541,1,6.9,1,0,0 +1,0,1,6.109248,6.160541,1,9.967326,0,0,0 +2,0,1,6.109248,6.160541,1,9.967326,0,0,0 +0,0,1,6.109248,6.160541,1,9.967326,0,0,0 +1,0,1,6.109248,6.160541,1,9.967326,0,0,0 +1,0,1,6.109248,6.160541,1,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,20.7,0,1,0 +1,0,1,6.109248,6.160541,0,20.7,0,1,0 +1,0,1,6.109248,6.160541,0,20.7,0,1,0 +0,0,1,6.109248,6.160541,0,20.7,0,1,0 +1,0,1,6.109248,6.160541,0,20.7,0,1,0 +4,0,1,6.109248,6.160541,0,9.967326,1,0,0 +3,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,1,0,0 +4,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,1,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +2,0,1,6.109248,6.160541,0,9.967326,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,1,0,0 +18,0,1,0,5.755076,1,41.4,0,1,0 +11,0,1,0,5.755076,1,41.4,0,1,0 +3,0,1,0,5.755076,1,41.4,0,1,0 +2,0,1,0,5.755076,1,41.4,0,1,0 +1,0,1,0,5.755076,0,13.8,0,0,0 +1,0,1,0,5.755076,0,13.8,0,0,0 +6,0,1,0,5.755076,0,13.8,0,0,0 +4,0,1,0,5.755076,0,13.8,0,0,0 +1,0,1,0,5.755076,0,13.8,0,0,0 +3,0,1,7.122189,5.755076,0,17.2,1,0,0 +2,0,1,7.122189,5.755076,0,17.2,1,0,0 +2,0,1,7.122189,5.755076,0,17.2,1,0,0 +2,0,1,7.122189,5.755076,0,17.2,1,0,0 +0,0,1,7.122189,5.755076,0,17.2,1,0,0 +0,0,1,7.122189,5.755076,0,17.2,1,0,0 +3,3.258096,0,6.401469,7.787764,.1572505,9.967326,1,0,0 +1,3.258096,0,6.401469,7.787764,.1572505,9.967326,1,0,0 +3,3.258096,0,6.401469,7.787764,.1572505,9.967326,1,0,0 +4,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +4,3.258096,0,6.586172,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.586172,8.006368,0,3.4,1,0,0 +4,3.258096,0,6.586172,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.586172,8.006368,0,20.7,1,0,0 +4,3.258096,0,6.586172,8.006368,0,20.7,1,0,0 +4,3.258096,0,6.586172,8.006368,0,20.7,1,0,0 +1,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +3,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +3,0,0,0,0,0,9.967326,1,0,0 +3,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +2,0,1,6.109248,6.160541,0,3.4,1,0,0 +7,0,1,6.109248,6.160541,1,24.1,1,0,0 +8,0,1,6.109248,6.160541,1,24.1,1,0,0 +5,0,1,6.109248,6.160541,1,24.1,1,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,0,1,6.109248,6.160541,0,9.967326,0,0,0 +7,0,1,6.109248,6.160541,0,9.967326,0,0,0 +5,0,1,6.109248,6.160541,0,3.4,1,0,0 +6,0,1,6.109248,6.160541,0,3.4,1,0,0 +4,0,1,6.109248,6.160541,0,3.4,1,0,0 +4,0,1,6.109248,6.160541,0,9.967326,0,1,0 +5,0,1,6.109248,6.160541,0,9.967326,0,1,0 +3,0,1,6.109248,6.160541,0,9.967326,0,1,0 +5,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +5,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,27.6,0,0,1 +9,0,1,6.109248,6.160541,0,27.6,0,0,1 +4,0,1,6.109248,6.160541,0,27.6,0,0,1 +4,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +1,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +1,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +2,0,0,5.228324,0,0,6.9,1,0,0 +1,0,0,5.228324,0,0,6.9,1,0,0 +5,0,0,5.228324,0,0,6.9,1,0,0 +3,0,0,5.228324,0,0,6.9,1,0,0 +3,0,0,5.228324,0,0,6.9,1,0,0 +3,0,0,5.228324,0,0,6.9,1,0,0 +1,0,0,5.228324,0,0,3.4,0,0,0 +2,0,0,5.228324,0,0,3.4,0,0,0 +1,0,0,5.228324,0,0,3.4,0,0,0 +2,0,0,5.228324,0,0,9.967326,0,0,0 +2,0,0,5.228324,0,0,9.967326,0,0,0 +2,0,0,5.228324,0,0,9.967326,0,0,0 +0,0,0,5.228324,0,0,3.4,1,0,0 +2,0,0,5.228324,0,0,3.4,1,0,0 +1,0,0,5.228324,0,0,3.4,1,0,0 +0,0,0,5.228324,0,0,9.967326,0,0,0 +0,0,0,5.228324,0,0,9.967326,0,0,0 +2,0,0,5.228324,0,0,9.967326,0,0,0 +4,3.258096,0,6.620073,8.006368,1,27.6,1,0,0 +3,3.258096,0,6.620073,8.006368,1,27.6,1,0,0 +2,3.258096,0,6.620073,8.006368,1,27.6,1,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +7,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +4,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,1,20.7,0,0,0 +0,4.564348,0,6.907755,6.959049,1,20.7,0,0,0 +0,4.564348,0,6.907755,6.959049,1,20.7,0,0,0 +1,4.564348,0,6.907755,6.959049,1,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,1,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,1,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,0,0,0,0,0,6.9,1,0,0 +3,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +5,0,0,0,0,0,6.9,1,0,0 +4,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,13.8,1,0,0 +1,0,0,0,0,0,13.8,1,0,0 +1,0,0,0,0,0,13.8,1,0,0 +2,0,0,0,0,0,13.8,1,0,0 +2,0,0,0,0,0,13.8,1,0,0 +5,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +4,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +4,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +0,3.258096,0,5.010635,6.39693,0,9.967326,0,0,0 +9,3.258096,0,5.010635,6.39693,0,9.967326,0,0,0 +1,3.258096,0,5.010635,6.39693,0,9.967326,0,0,0 +1,3.258096,0,5.010635,6.39693,0,10.3,1,0,0 +2,3.258096,0,5.010635,6.39693,0,10.3,1,0,0 +6,3.258096,0,5.010635,6.39693,0,10.3,1,0,0 +1,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +1,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +1,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +1,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +5,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +7,3.258096,0,5.68358,7.069874,1,13.8,1,0,0 +2,3.258096,0,5.68358,7.069874,1,13.8,1,0,0 +0,3.258096,0,5.68358,7.069874,1,13.8,1,0,0 +12,3.258096,0,5.68358,7.069874,1,13.8,1,0,0 +11,3.258096,0,5.68358,7.069874,1,13.8,1,0,0 +2,3.258096,0,5.68358,7.069874,0,17.2,0,0,0 +9,3.258096,0,5.68358,7.069874,0,17.2,0,0,0 +1,3.258096,0,5.68358,7.069874,0,17.2,0,0,0 +1,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +0,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +1,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +2,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +5,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +7,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +4,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +1,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +0,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +2,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +1,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +0,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +1,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +3,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +0,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +0,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +1,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +3,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +1,3.258096,0,5.68358,7.069874,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +3,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +4,4.564348,0,6.907755,6.959049,1,3.4,1,0,0 +5,4.564348,0,6.907755,6.959049,1,3.4,1,0,0 +3,4.564348,0,6.907755,6.959049,1,3.4,1,0,0 +5,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +5,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +4,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,0,1,5.676206,5.755076,0,9.967326,0,0,0 +2,0,1,5.676206,5.755076,0,9.967326,0,0,0 +5,0,1,5.676206,5.755076,0,9.967326,0,0,0 +6,0,1,5.676206,5.755076,0,13.8,0,0,0 +5,0,1,5.676206,5.755076,0,13.8,0,0,0 +0,0,1,5.676206,5.755076,0,13.8,0,0,0 +6,0,1,5.676206,5.755076,0,9.967326,0,0,0 +3,0,1,5.676206,5.755076,0,9.967326,0,0,0 +1,0,1,5.676206,5.755076,0,9.967326,0,0,0 +1,3.258096,0,6.619806,8.006368,0,9.967326,1,0,0 +1,3.258096,0,6.619806,8.006368,0,9.967326,1,0,0 +0,3.258096,0,6.619806,8.006368,0,9.967326,1,0,0 +1,3.258096,0,6.619806,8.006368,0,9.967326,1,0,0 +1,3.258096,0,6.619806,8.006368,0,9.967326,1,0,0 +2,3.258096,0,6.619806,8.006368,0,9.967326,1,0,0 +2,3.258096,0,6.619806,8.006368,0,9.967326,1,0,0 +1,3.258096,0,6.619806,8.006368,0,9.967326,1,0,0 +8,3.258096,0,6.619806,8.006368,0,9.967326,1,0,0 +4,3.258096,0,6.619806,8.006368,0,9.967326,1,0,0 +1,3.258096,0,6.619806,8.006368,0,10.3,0,0,0 +2,3.258096,0,6.619806,8.006368,0,10.3,0,0,0 +7,3.258096,0,6.619806,8.006368,0,10.3,0,0,0 +1,3.258096,0,6.619806,8.006368,0,10.3,0,0,0 +2,3.258096,0,6.619806,8.006368,0,10.3,0,0,0 +1,3.258096,0,6.619806,8.006368,0,0,0,0,0 +3,3.258096,0,6.619806,8.006368,0,0,0,0,0 +3,3.258096,0,6.619806,8.006368,0,0,0,0,0 +0,3.258096,0,6.619806,8.006368,0,0,0,0,0 +2,3.258096,0,6.619806,8.006368,0,0,0,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +6,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +3,0,0,0,0,0,0,1,0,0 +4,0,0,0,0,0,0,1,0,0 +3,0,0,0,0,0,0,1,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +4,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +8,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,1,0,0,0,0 +1,3.258096,0,6.620073,8.006368,1,0,0,0,0 +5,3.258096,0,6.620073,8.006368,1,0,0,0,0 +5,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +2,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +3,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +6,0,0,3.401197,0,0,37.9,1,0,0 +3,0,0,3.401197,0,0,37.9,1,0,0 +0,0,0,3.401197,0,0,37.9,1,0,0 +3,0,0,3.401197,0,0,37.9,1,0,0 +5,0,0,3.401197,0,0,37.9,1,0,0 +3,0,0,3.401197,0,0,9.967326,0,0,0 +4,0,0,3.401197,0,0,9.967326,0,0,0 +0,0,0,3.401197,0,0,9.967326,0,0,0 +1,0,0,3.401197,0,0,9.967326,0,0,0 +1,0,0,3.401197,0,0,9.967326,0,0,0 +1,0,0,3.401197,0,0,9.967326,0,0,0 +0,0,0,3.401197,0,0,9.967326,0,0,0 +0,0,0,3.401197,0,0,9.967326,0,0,0 +1,0,0,3.401197,0,0,9.967326,0,0,0 +1,0,0,3.401197,0,0,9.967326,0,0,0 +1,0,0,3.401197,0,0,0,0,0,0 +1,0,0,3.401197,0,0,0,0,0,0 +6,0,0,3.401197,0,0,6.9,1,0,0 +1,0,0,3.401197,0,0,6.9,1,0,0 +1,0,0,3.401197,0,0,6.9,1,0,0 +0,0,0,3.401197,0,0,6.9,1,0,0 +4,0,0,3.401197,0,0,6.9,1,0,0 +1,0,0,5.852202,0,0,20.7,1,0,0 +1,0,0,5.852202,0,0,20.7,1,0,0 +4,0,0,5.852202,0,0,20.7,1,0,0 +3,0,0,5.852202,0,0,20.7,1,0,0 +0,0,0,5.852202,0,0,20.7,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +5,0,0,0,0,0,10.3,1,0,0 +5,0,0,0,0,0,10.3,1,0,0 +3,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +0,0,0,0,0,0,9.967326,1,0,0 +2,0,0,5.321057,0,0,9.967326,0,0,0 +2,0,0,5.321057,0,0,9.967326,0,0,0 +1,0,0,5.321057,0,0,9.967326,0,0,0 +3,0,0,5.321057,0,0,9.967326,0,0,0 +3,0,0,5.321057,0,0,9.967326,0,0,0 +3,0,0,5.321057,0,0,9.967326,0,0,0 +4,0,0,5.321057,0,0,3.4,0,0,0 +0,0,0,5.321057,0,0,3.4,0,0,0 +7,0,0,5.321057,0,0,3.4,0,0,0 +3,0,0,5.321057,0,0,3.4,0,0,0 +1,0,0,5.321057,0,0,3.4,0,0,0 +2,0,0,5.321057,0,0,3.4,0,0,0 +3,0,1,5.703783,5.755076,0,9.967326,1,0,0 +5,0,1,5.703783,5.755076,0,9.967326,1,0,0 +8,0,1,5.703783,5.755076,0,9.967326,1,0,0 +1,0,1,5.703783,5.755076,0,17.2,0,0,0 +2,0,1,5.703783,5.755076,0,17.2,0,0,0 +0,0,1,5.703783,5.755076,0,17.2,0,0,0 +4,4.564348,0,5.774551,5.825845,0,9.967326,0,0,1 +7,4.564348,0,5.774551,5.825845,0,9.967326,0,0,1 +5,4.564348,0,5.774551,5.825845,0,9.967326,0,0,1 +0,4.564348,0,5.774551,5.825845,0,10.3,0,0,0 +4,4.564348,0,5.774551,5.825845,0,10.3,0,0,0 +4,4.564348,0,5.774551,5.825845,0,10.3,0,0,0 +1,4.564348,0,5.774551,5.825845,0,9.967326,1,0,0 +3,4.564348,0,5.774551,5.825845,0,9.967326,1,0,0 +2,4.564348,0,5.774551,5.825845,0,9.967326,1,0,0 +3,0,0,0,0,1,9.967326,0,0,0 +8,0,0,0,0,1,9.967326,0,0,0 +4,0,0,0,0,1,9.967326,0,0,0 +6,0,0,0,0,0,9.967326,0,0,0 +6,0,0,0,0,0,9.967326,0,0,0 +4,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,31,1,0,0 +3,0,0,0,0,0,31,1,0,0 +3,0,0,0,0,0,31,1,0,0 +7,0,0,0,0,0,9.967326,0,0,0 +8,0,0,0,0,0,9.967326,0,0,0 +5,0,0,0,0,0,9.967326,0,0,0 +4,0,0,0,0,0,9.967326,0,0,0 +7,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,1,24.1,0,1,0 +7,0,0,0,0,1,24.1,0,1,0 +30,0,0,0,0,1,24.1,0,1,0 +2,3.258096,0,6.26957,7.702105,0,9.967326,1,0,0 +4,3.258096,0,6.26957,7.702105,0,9.967326,1,0,0 +2,3.258096,0,6.26957,7.702105,0,9.967326,1,0,0 +3,3.258096,0,6.26957,7.702105,0,9.967326,1,0,0 +9,3.258096,0,6.26957,7.702105,0,9.967326,1,0,0 +2,3.258096,0,6.26957,7.702105,0,9.967326,1,0,0 +4,3.258096,0,6.26957,7.702105,0,9.967326,1,0,0 +2,3.258096,0,6.26957,7.702105,0,9.967326,1,0,0 +1,3.258096,0,6.26957,7.702105,0,9.967326,1,0,0 +1,3.258096,0,6.26957,7.702105,0,9.967326,1,0,0 +1,3.258096,0,6.26957,7.702105,1,13.8,1,0,0 +2,3.258096,0,6.26957,7.702105,1,13.8,1,0,0 +6,3.258096,0,6.26957,7.702105,1,13.8,1,0,0 +1,3.258096,0,6.26957,7.702105,1,13.8,1,0,0 +5,3.258096,0,6.26957,7.702105,1,13.8,1,0,0 +0,3.258096,0,6.26957,7.702105,0,0,1,0,0 +0,3.258096,0,6.26957,7.702105,0,0,1,0,0 +0,3.258096,0,6.26957,7.702105,0,0,1,0,0 +0,3.258096,0,6.26957,7.702105,0,0,1,0,0 +0,3.258096,0,6.26957,7.702105,0,0,1,0,0 +16,4.564348,0,6.907755,6.959049,1,24.1,0,1,0 +5,4.564348,0,6.907755,6.959049,1,24.1,0,1,0 +9,4.564348,0,6.907755,6.959049,1,24.1,0,1,0 +1,4.564348,0,6.907755,6.959049,0,37.9,0,1,0 +6,4.564348,0,6.907755,6.959049,0,37.9,0,1,0 +1,4.564348,0,6.907755,6.959049,0,37.9,0,1,0 +4,3.258096,0,6.620073,8.006368,0,0,0,0,0 +2,3.258096,0,6.620073,8.006368,0,0,0,0,0 +1,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,0,0,5.480639,0,0,6.9,0,0,0 +0,0,0,5.480639,0,0,6.9,0,0,0 +0,0,0,5.480639,0,0,6.9,0,0,0 +3,0,0,5.480639,0,0,3.4,0,0,0 +1,0,0,5.480639,0,0,3.4,0,0,0 +9,0,0,5.480639,0,0,3.4,0,0,0 +2,0,0,5.480639,0,0,13.8,0,0,0 +0,0,0,5.480639,0,0,13.8,0,0,0 +1,0,0,5.480639,0,0,13.8,0,0,0 +0,0,0,5.480639,0,0,9.967326,0,0,0 +0,0,0,5.480639,0,0,9.967326,0,0,0 +1,0,0,5.480639,0,0,9.967326,0,0,0 +2,0,0,5.480639,0,0,6.9,0,0,0 +1,0,0,5.480639,0,0,6.9,0,0,0 +0,0,0,5.480639,0,0,6.9,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,24.1,0,0,0 +3,3.258096,0,6.620073,8.006368,0,24.1,0,0,0 +0,3.258096,0,6.620073,8.006368,0,24.1,0,0,0 +3,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +2,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +2,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +4,0,1,6.109248,6.160541,0,24.1,0,0,0 +1,0,1,6.109248,6.160541,0,24.1,0,0,0 +1,0,1,6.109248,6.160541,0,24.1,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,20.7,1,0,0 +2,0,1,6.109248,6.160541,0,20.7,1,0,0 +8,0,1,6.109248,6.160541,0,20.7,1,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,1,13.8,1,0,0 +3,0,1,6.109248,6.160541,1,13.8,1,0,0 +2,0,1,6.109248,6.160541,1,13.8,1,0,0 +0,0,1,6.109248,6.160541,1,13.8,1,0,0 +0,0,1,6.109248,6.160541,1,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,27.6,1,0,0 +0,0,1,6.109248,6.160541,0,27.6,1,0,0 +0,0,1,6.109248,6.160541,0,27.6,1,0,0 +2,0,1,6.109248,6.160541,0,27.6,1,0,0 +0,0,1,6.109248,6.160541,0,27.6,1,0,0 +0,0,1,6.109248,6.160541,1,9.967326,0,1,0 +2,0,1,6.109248,6.160541,1,9.967326,0,1,0 +0,0,1,6.109248,6.160541,1,9.967326,0,1,0 +3,0,1,6.109248,6.160541,1,9.967326,0,1,0 +1,0,1,6.109248,6.160541,1,9.967326,0,1,0 +2,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +2,0,0,0,0,0,0,1,0,0 +5,0,0,0,0,0,0,1,0,0 +3,0,0,0,0,0,0,1,0,0 +2,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +0,0,0,0,0,0,13.8,0,0,0 +4,0,0,0,0,0,13.8,0,0,0 +3,0,0,0,0,0,13.8,0,0,0 +19,0,0,0,0,0,24.1,1,0,0 +14,0,0,0,0,0,24.1,1,0,0 +4,0,0,0,0,0,24.1,1,0,0 +8,0,0,0,0,0,24.1,1,0,0 +6,0,0,0,0,0,24.1,1,0,0 +2,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +3,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +4,3.258096,0,5.858676,7.24497,1,3.4,0,0,0 +5,3.258096,0,5.858676,7.24497,1,3.4,0,0,0 +4,3.258096,0,5.858676,7.24497,1,3.4,0,0,0 +0,3.931826,0,6.907935,7.600903,0,13.8,0,0,0 +3,3.931826,0,6.907935,7.600903,0,13.8,0,0,0 +1,3.931826,0,6.907935,7.600903,0,13.8,0,0,0 +4,3.931826,0,6.907935,7.600903,0,13.8,0,0,0 +2,3.931826,0,6.907935,7.600903,0,13.8,0,0,0 +3,3.931826,0,6.907935,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907935,7.600903,0,9.967326,0,0,0 +6,3.931826,0,6.907935,7.600903,0,9.967326,0,0,0 +3,3.931826,0,6.907935,7.600903,0,9.967326,0,0,0 +4,3.931826,0,6.907935,7.600903,0,9.967326,0,0,0 +6,3.931826,0,6.907935,7.600903,0,9.967326,0,0,0 +3,3.931826,0,6.907935,7.600903,0,9.967326,0,0,0 +3,3.931826,0,6.907935,7.600903,0,9.967326,0,0,0 +6,3.931826,0,6.907935,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907935,7.600903,0,9.967326,0,0,0 +2,3.931826,0,6.907935,7.600903,0,3.4,0,0,0 +5,3.931826,0,6.907935,7.600903,0,3.4,0,0,0 +2,3.931826,0,6.907935,7.600903,0,3.4,0,0,0 +5,3.931826,0,6.907935,7.600903,0,3.4,0,0,0 +3,3.931826,0,6.907935,7.600903,0,3.4,0,0,0 +3,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +2,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +2,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +4,3.258096,0,5.294309,7.156956,0,27.6,1,0,0 +2,3.258096,0,5.294309,7.156956,0,27.6,1,0,0 +3,3.258096,0,5.294309,7.156956,0,27.6,1,0,0 +3,3.258096,0,5.294309,7.156956,0,10.3,0,0,0 +3,3.258096,0,5.294309,7.156956,0,10.3,0,0,0 +5,3.258096,0,5.294309,7.156956,0,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +6,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +2,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +13,0,0,5.989262,0,1,13.8,1,0,0 +5,0,0,5.989262,0,1,13.8,1,0,0 +2,0,0,5.989262,0,1,13.8,1,0,0 +4,0,0,5.989262,0,0,6.9,1,0,0 +0,0,0,5.989262,0,0,6.9,1,0,0 +2,0,0,5.989262,0,0,6.9,1,0,0 +10,0,0,0,0,1,17.2,1,0,0 +4,0,0,0,0,1,17.2,1,0,0 +1,0,0,0,0,1,17.2,1,0,0 +5,0,0,0,0,0,13.8,0,0,0 +2,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +7,0,0,0,0,0,6.9,0,0,0 +4,0,0,0,0,0,6.9,0,0,0 +4,0,0,0,0,0,6.9,0,0,0 +13,0,0,0,0,0,6.9,0,0,0 +3,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +6,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +4,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +4,0,0,0,0,0,9.967326,0,0,0 +5,0,0,0,0,0,9.967326,0,0,0 +6,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +2,4.564348,0,6.372978,6.424272,0,3.4,1,0,0 +1,4.564348,0,6.372978,6.424272,0,3.4,1,0,0 +0,4.564348,0,6.372978,6.424272,0,3.4,1,0,0 +1,4.564348,0,6.372978,6.424272,0,3.4,1,0,0 +1,4.564348,0,6.372978,6.424272,0,3.4,1,0,0 +2,4.564348,0,6.372978,6.424272,0,17.2,1,0,0 +2,4.564348,0,6.372978,6.424272,0,17.2,1,0,0 +1,4.564348,0,6.372978,6.424272,0,17.2,1,0,0 +1,4.564348,0,6.372978,6.424272,0,17.2,1,0,0 +1,4.564348,0,6.372978,6.424272,0,17.2,1,0,0 +3,4.564348,0,6.372978,6.424272,0,9.967326,0,0,0 +2,4.564348,0,6.372978,6.424272,0,9.967326,0,0,0 +3,4.564348,0,6.372978,6.424272,0,9.967326,0,0,0 +4,4.564348,0,6.372978,6.424272,0,9.967326,0,0,0 +2,4.564348,0,6.372978,6.424272,0,9.967326,0,0,0 +0,3.931826,0,5.518898,5.442418,0,6.9,0,0,0 +0,3.931826,0,5.518898,5.442418,0,6.9,0,0,0 +1,3.931826,0,5.518898,5.442418,0,6.9,0,0,0 +2,0,1,0,5.061929,0,20.7,1,0,0 +3,0,1,0,5.061929,0,20.7,1,0,0 +0,0,1,0,5.061929,0,20.7,1,0,0 +3,4.564348,0,6.907755,6.959049,0,0,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,6.9,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +4,0,0,0,0,0,9.967326,1,0,0 +4,0,0,0,0,1,24.1,1,0,0 +3,0,0,0,0,1,24.1,1,0,0 +7,0,0,0,0,1,24.1,1,0,0 +4,0,0,0,0,0,3.4,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +8,0,0,0,0,0,3.4,1,0,0 +2,4.564348,0,6.836635,6.887928,0,27.6,1,0,0 +0,4.564348,0,6.836635,6.887928,0,27.6,1,0,0 +4,4.564348,0,6.836635,6.887928,0,6.9,1,0,0 +3,4.564348,0,6.836635,6.887928,0,6.9,1,0,0 +0,4.564348,0,6.802395,6.853688,0,10.3,0,0,0 +1,4.564348,0,6.802395,6.853688,0,10.3,0,0,0 +0,4.564348,0,6.802395,6.853688,0,10.3,0,0,0 +0,4.564348,0,6.802395,6.853688,0,10.3,0,0,0 +0,4.564348,0,6.802395,6.853688,0,10.3,0,0,0 +2,0,1,6.109248,6.160541,0,6.9,0,0,0 +5,0,1,6.109248,6.160541,0,6.9,0,0,0 +5,0,1,6.109248,6.160541,0,6.9,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,4.564348,0,6.365267,6.41656,0,9.967326,0,1,0 +1,4.564348,0,6.365267,6.41656,0,9.967326,0,1,0 +0,4.564348,0,6.365267,6.41656,0,9.967326,0,1,0 +0,4.564348,0,6.365267,6.41656,0,3.4,1,0,0 +0,4.564348,0,6.365267,6.41656,0,3.4,1,0,0 +1,4.564348,0,6.365267,6.41656,0,3.4,1,0,0 +0,4.564348,0,6.365267,6.41656,0,9.967326,1,0,0 +0,4.564348,0,6.365267,6.41656,0,9.967326,1,0,0 +0,4.564348,0,6.365267,6.41656,0,9.967326,1,0,0 +2,4.564348,0,6.365267,6.41656,0,3.4,0,0,0 +0,4.564348,0,6.365267,6.41656,0,3.4,0,0,0 +0,4.564348,0,6.365267,6.41656,0,3.4,0,0,0 +4,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +3,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +4,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +6,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +6,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +0,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +1,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +0,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +4,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +4,3.258096,0,0,6.877296,0,0,0,0,0 +9,3.258096,0,0,6.877296,0,0,0,0,0 +8,3.258096,0,0,6.877296,0,0,0,0,0 +1,0,0,5.154216,0,0,3.4,0,0,0 +0,0,0,5.154216,0,0,3.4,0,0,0 +2,0,0,5.154216,0,0,3.4,0,0,0 +0,0,0,5.154216,0,0,3.4,0,0,0 +0,0,0,5.154216,0,0,3.4,0,0,0 +0,0,0,5.154216,0,0,3.4,0,0,0 +5,0,0,5.154216,0,0,3.4,0,0,0 +4,0,0,5.154216,0,0,3.4,0,0,0 +2,0,0,5.154216,0,0,6.9,0,0,0 +0,0,0,5.154216,0,0,6.9,0,0,0 +0,0,0,5.154216,0,0,9.967326,0,0,0 +0,0,0,5.154216,0,0,9.967326,0,0,0 +1,0,0,5.154216,0,0,9.967326,0,0,0 +2,3.258096,0,6.586172,8.006368,0,10.3,0,0,0 +10,3.258096,0,6.586172,8.006368,0,10.3,0,0,0 +1,3.258096,0,6.586172,8.006368,0,10.3,0,0,0 +3,3.258096,0,6.586172,8.006368,0,13.8,1,0,0 +0,3.258096,0,6.586172,8.006368,0,13.8,1,0,0 +7,0,1,6.823765,6.160541,0,9.967326,0,0,0 +3,0,1,6.823765,6.160541,0,9.967326,0,0,0 +3,0,1,6.823765,6.160541,0,9.967326,0,0,0 +4,0,1,6.823765,6.160541,1,24.1,1,0,0 +7,0,1,6.823765,6.160541,1,24.1,1,0,0 +4,0,1,6.823765,6.160541,1,24.1,1,0,0 +2,0,1,6.823765,6.160541,0,13.8,0,0,0 +1,0,1,6.823765,6.160541,0,13.8,0,0,0 +0,0,1,6.823765,6.160541,0,13.8,0,0,0 +2,0,0,6.218202,0,0,10.3,0,0,0 +0,0,0,6.218202,0,0,10.3,0,0,0 +1,0,0,6.218202,0,0,10.3,0,0,0 +3,0,0,6.218202,0,0,6.9,1,0,0 +5,0,0,6.218202,0,0,6.9,1,0,0 +0,0,0,6.218202,0,0,6.9,1,0,0 +2,3.931826,0,0,7.600903,0,9.967326,1,0,0 +1,3.931826,0,0,7.600903,0,9.967326,1,0,0 +4,3.931826,0,0,7.600903,0,9.967326,1,0,0 +1,3.931826,0,0,7.600903,0,9.967326,1,0,0 +0,3.931826,0,0,7.600903,0,9.967326,1,0,0 +1,3.931826,0,0,7.600903,0,9.967326,1,0,0 +1,3.931826,0,0,7.600903,0,9.967326,1,0,0 +1,3.931826,0,0,7.600903,0,9.967326,1,0,0 +2,3.931826,0,0,7.600903,0,9.967326,1,0,0 +1,3.931826,0,0,7.600903,0,9.967326,1,0,0 +14,3.931826,0,0,7.600903,0,10.3,0,1,0 +15,3.931826,0,0,7.600903,0,10.3,0,1,0 +16,3.931826,0,0,7.600903,0,10.3,0,1,0 +41,3.931826,0,0,7.600903,0,10.3,0,1,0 +7,3.931826,0,0,7.600903,0,6.9,1,0,0 +4,3.931826,0,0,7.600903,0,6.9,1,0,0 +0,3.931826,0,0,7.600903,0,6.9,1,0,0 +5,3.931826,0,0,7.600903,0,6.9,1,0,0 +4,3.931826,0,0,7.600903,0,6.9,1,0,0 +2,3.931826,0,0,7.600903,0,9.967326,1,0,0 +1,3.931826,0,0,7.600903,0,9.967326,1,0,0 +2,3.931826,0,0,7.600903,0,9.967326,1,0,0 +1,3.931826,0,0,7.600903,0,9.967326,1,0,0 +5,3.931826,0,0,7.600903,0,9.967326,1,0,0 +1,3.931826,0,0,7.600903,0,3.4,1,0,0 +2,3.931826,0,0,7.600903,0,3.4,1,0,0 +2,3.931826,0,0,7.600903,0,3.4,1,0,0 +0,3.931826,0,0,7.600903,0,3.4,1,0,0 +1,3.931826,0,0,7.600903,0,3.4,1,0,0 +0,0,0,6.200184,0,0,9.967326,0,0,0 +4,0,0,6.200184,0,0,9.967326,0,0,0 +0,0,0,6.200184,0,0,9.967326,0,0,0 +4,0,0,6.200184,0,0,9.967326,0,0,0 +1,0,0,6.200184,0,0,9.967326,0,0,0 +4,0,0,6.200184,0,0,9.967326,0,0,0 +3,0,0,6.200184,0,0,9.967326,0,0,0 +2,0,0,6.200184,0,0,9.967326,0,0,0 +3,0,0,6.200184,0,0,9.967326,0,0,0 +0,0,0,6.200184,0,0,9.967326,0,0,0 +1,0,0,6.200184,0,0,9.967326,0,0,0 +8,0,0,6.200184,0,0,9.967326,0,0,0 +2,0,0,6.200184,0,0,9.967326,0,0,0 +0,0,0,6.200184,0,0,9.967326,0,0,0 +4,0,0,6.200184,0,0,9.967326,0,0,0 +2,0,0,6.200184,0,0,10.3,0,1,0 +7,0,0,6.200184,0,0,10.3,0,1,0 +2,0,0,6.200184,0,0,10.3,0,1,0 +1,0,0,6.200184,0,0,10.3,0,1,0 +3,0,0,6.200184,0,0,10.3,0,1,0 +4,0,0,6.200184,0,1,6.9,0,0,0 +0,0,0,6.200184,0,1,6.9,0,0,0 +1,0,0,6.200184,0,1,6.9,0,0,0 +1,0,0,6.200184,0,1,6.9,0,0,0 +6,0,0,6.200184,0,1,6.9,0,0,0 +2,0,0,5.198276,0,0,6.9,0,0,0 +6,0,0,5.198276,0,0,6.9,0,0,0 +3,0,0,5.198276,0,0,6.9,0,0,0 +2,0,0,5.198276,0,0,6.9,0,0,0 +2,0,0,5.198276,0,0,6.9,0,0,0 +0,0,0,5.198276,0,0,13.8,0,0,0 +0,0,0,5.198276,0,0,13.8,0,0,0 +4,0,0,5.198276,0,0,13.8,0,0,0 +0,0,0,5.198276,0,0,13.8,0,0,0 +1,0,0,5.198276,0,0,13.8,0,0,0 +24,0,0,5.991664,0,0,9.967326,0,0,0 +6,0,0,5.991664,0,0,9.967326,0,0,0 +5,0,0,5.991664,0,0,9.967326,0,0,0 +5,0,0,5.991664,0,0,9.967326,0,0,0 +7,0,0,5.991664,0,0,9.967326,0,0,0 +0,0,0,5.991664,0,0,6.9,0,0,0 +0,0,0,5.991664,0,0,6.9,0,0,0 +0,0,0,5.991664,0,0,6.9,0,0,0 +1,0,0,5.991664,0,0,6.9,0,0,0 +0,0,0,5.991664,0,0,6.9,0,0,0 +3,0,0,5.991664,0,0,9.967326,0,0,0 +1,0,0,5.991664,0,0,9.967326,0,0,0 +5,0,0,5.991664,0,0,9.967326,0,0,0 +2,0,0,5.991664,0,0,9.967326,0,0,0 +1,0,0,5.991664,0,0,9.967326,0,0,0 +8,0,0,5.991664,0,0,27.6,0,0,0 +5,0,0,5.991664,0,0,27.6,0,0,0 +4,0,0,5.991664,0,0,27.6,0,0,0 +3,0,0,5.991664,0,0,27.6,0,0,0 +4,0,0,5.991664,0,0,27.6,0,0,0 +0,4.564348,0,0,3.592253,0,6.9,0,0,0 +0,4.564348,0,0,3.592253,0,6.9,0,0,0 +1,4.564348,0,0,3.592253,0,6.9,0,0,0 +0,3.931826,0,0,7.185387,0,0,0,0,0 +2,3.931826,0,0,7.185387,0,0,0,0,0 +0,3.931826,0,0,7.185387,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +1,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +6,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +3,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +2,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +2,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +2,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +2,0,0,5.527523,0,0,9.967326,0,0,0 +1,0,0,5.527523,0,0,9.967326,0,0,0 +1,0,0,5.527523,0,0,9.967326,0,0,0 +2,0,0,5.527523,0,0,6.9,1,0,0 +2,0,0,5.527523,0,0,6.9,1,0,0 +2,0,0,5.527523,0,0,6.9,1,0,0 +22,0,0,5.527523,0,0,9.967326,0,1,0 +25,0,0,5.527523,0,0,9.967326,0,1,0 +30,0,0,5.527523,0,0,9.967326,0,1,0 +2,0,0,5.527523,0,0,10.3,1,0,0 +0,0,0,5.527523,0,0,10.3,1,0,0 +4,0,0,5.527523,0,0,10.3,1,0,0 +3,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.872128,6.948998,0,17.2,1,0,0 +2,4.564348,0,6.872128,6.948998,0,17.2,1,0,0 +3,4.564348,0,6.872128,6.948998,0,17.2,1,0,0 +2,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +2,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,10.3,1,0,0 +0,3.931826,0,6.907755,7.600903,0,10.3,1,0,0 +2,3.931826,0,6.907755,7.600903,0,10.3,1,0,0 +6,3.931826,0,6.907755,7.600903,0,17.2,1,0,0 +4,3.931826,0,6.907755,7.600903,0,17.2,1,0,0 +4,3.931826,0,6.907755,7.600903,0,17.2,1,0,0 +0,3.258096,0,0,6.618472,0,10.3,1,0,0 +1,3.258096,0,0,6.618472,0,10.3,1,0,0 +7,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +2,0,0,5.11247,0,0,13.8,0,0,0 +6,0,0,5.11247,0,0,13.8,0,0,0 +3,0,0,5.11247,0,0,13.8,0,0,0 +1,3.931826,0,6.907755,7.600903,0,0,0,0,0 +3,3.931826,0,6.907755,7.600903,0,0,0,0,0 +4,3.931826,0,6.907755,7.600903,0,0,0,0,0 +8,3.931826,0,6.907755,7.600903,0,0,0,0,0 +6,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +3,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,0,1,5.703783,5.755076,0,17.2,0,0,0 +0,0,1,5.703783,5.755076,0,17.2,0,0,0 +0,0,1,5.703783,5.755076,0,17.2,0,0,0 +7,0,1,5.703783,5.755076,0,9.967326,0,0,0 +0,0,1,5.703783,5.755076,0,9.967326,0,0,0 +3,0,1,5.703783,5.755076,0,9.967326,0,0,0 +5,0,1,5.010635,5.061929,0,27.6,1,0,0 +0,0,1,5.010635,5.061929,0,27.6,1,0,0 +0,0,1,5.010635,5.061929,0,27.6,1,0,0 +1,0,1,5.010635,5.061929,0,27.6,1,0,0 +0,0,1,5.010635,5.061929,0,27.6,1,0,0 +7,0,0,0,0,1,6.9,1,0,0 +1,0,0,0,0,1,6.9,1,0,0 +4,0,0,0,0,1,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +5,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +4,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +5,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +1,0,0,4.836282,0,0,10.3,1,0,0 +1,0,0,4.836282,0,0,10.3,1,0,0 +2,0,0,4.836282,0,0,10.3,1,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +3,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +0,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +0,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +24,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +33,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +9,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +5,0,0,0,0,0,9.967326,0,0,0 +12,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +13,0,0,0,0,0,3.4,0,0,0 +5,0,0,0,0,0,3.4,0,0,0 +5,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +2,0,0,0,0,0,13.8,0,0,0 +11,0,0,0,0,0,13.8,0,0,0 +5,0,0,0,0,0,13.8,0,0,0 +3,0,0,0,0,0,13.8,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,17.2,1,0,0 +2,0,0,0,0,0,17.2,1,0,0 +6,0,0,0,0,0,17.2,1,0,0 +1,0,0,0,0,0,10.3,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +6,4.564348,0,0,4.573082,0,0,0,0,0 +3,4.564348,0,0,4.573082,0,0,0,0,0 +0,4.564348,0,0,4.573082,0,0,0,0,0 +1,4.564348,0,0,5.362033,0,10.3,1,0,0 +1,4.564348,0,0,5.362033,0,10.3,1,0,0 +2,4.564348,0,0,5.362033,0,10.3,1,0,0 +1,0,0,5.372497,0,0,3.4,0,0,0 +0,0,0,5.372497,0,0,3.4,0,0,0 +5,0,0,5.372497,0,0,3.4,0,0,0 +9,0,0,5.372497,0,0,9.967326,0,0,0 +1,0,0,5.372497,0,0,9.967326,0,0,0 +2,0,0,5.372497,0,0,9.967326,0,0,0 +2,0,0,5.372497,0,1,9.967326,0,0,0 +0,0,0,5.372497,0,1,9.967326,0,0,0 +3,0,0,5.372497,0,1,9.967326,0,0,0 +1,0,0,5.372497,0,0,13.8,0,0,0 +1,0,0,5.372497,0,0,13.8,0,0,0 +2,0,0,5.372497,0,0,13.8,0,0,0 +1,0,0,5.372497,0,0,9.967326,0,0,0 +0,0,0,5.372497,0,0,9.967326,0,0,0 +3,0,0,5.372497,0,0,9.967326,0,0,0 +2,0,1,6.200184,6.160541,0,9.967326,0,0,0 +1,0,1,6.200184,6.160541,0,9.967326,0,0,0 +6,0,1,6.200184,6.160541,0,9.967326,0,0,0 +0,0,1,6.200184,6.160541,0,3.4,0,0,0 +0,0,1,6.200184,6.160541,0,3.4,0,0,0 +0,0,1,6.200184,6.160541,0,3.4,0,0,0 +0,0,1,6.200184,6.160541,0,0,0,0,0 +0,0,1,6.200184,6.160541,0,0,0,0,0 +2,0,1,6.200184,6.160541,0,0,0,0,0 +0,0,1,6.200184,6.160541,0,9.967326,0,0,0 +0,0,1,6.200184,6.160541,0,9.967326,0,0,0 +1,0,1,6.200184,6.160541,0,9.967326,0,0,0 +5,0,0,0,0,1,6.9,0,0,0 +4,0,0,0,0,1,6.9,0,0,0 +7,0,0,0,0,1,6.9,0,0,0 +3,0,0,0,0,0,17.2,1,0,0 +3,0,0,0,0,0,17.2,1,0,0 +1,0,0,0,0,0,17.2,1,0,0 +3,3.258096,0,4.787492,6.173786,0,3.4,1,0,0 +7,3.258096,0,4.787492,6.173786,0,3.4,1,0,0 +10,3.258096,0,4.787492,6.173786,0,3.4,1,0,0 +23,3.258096,0,4.787492,6.173786,1,31,0,1,0 +18,3.258096,0,4.787492,6.173786,1,31,0,1,0 +4,3.258096,0,4.787492,6.173786,1,31,0,1,0 +7,3.258096,0,4.787492,6.173786,0,3.4,0,0,0 +5,3.258096,0,4.787492,6.173786,0,3.4,0,0,0 +1,3.258096,0,4.787492,6.173786,0,3.4,0,0,0 +0,3.258096,0,4.787492,6.173786,0,9.967326,0,0,0 +12,3.258096,0,4.787492,6.173786,0,9.967326,0,0,0 +3,3.258096,0,4.787492,6.173786,0,9.967326,0,0,0 +1,3.258096,0,4.787492,6.173786,0,13.8,0,0,0 +2,3.258096,0,4.787492,6.173786,0,13.8,0,0,0 +5,3.258096,0,4.787492,6.173786,0,13.8,0,0,0 +0,4.564348,0,6.141069,6.192362,0,13.8,1,0,0 +0,4.564348,0,6.141069,6.192362,0,13.8,1,0,0 +4,4.564348,0,6.141069,6.192362,0,13.8,1,0,0 +7,0,0,0,0,.1572505,9.967326,0,1,0 +2,0,0,0,0,.1572505,9.967326,0,1,0 +5,0,0,0,0,.1572505,9.967326,0,1,0 +4,0,0,0,0,.1572505,9.967326,1,0,0 +6,0,0,0,0,.1572505,9.967326,1,0,0 +3,0,0,0,0,.1572505,9.967326,1,0,0 +7,0,0,0,0,.1572505,9.967326,1,0,0 +1,0,0,0,0,.1572505,9.967326,1,0,0 +2,0,0,0,0,.1572505,9.967326,1,0,0 +8,0,0,0,0,.1572505,9.967326,1,0,0 +2,0,0,0,0,.1572505,9.967326,1,0,0 +0,0,0,0,0,.1572505,9.967326,1,0,0 +2,0,0,0,0,.1572505,9.967326,1,0,0 +2,0,0,0,0,.1572505,9.967326,1,0,0 +3,0,0,0,0,.1572505,9.967326,1,0,0 +2,0,1,3.73767,5.061929,0,6.9,1,0,0 +1,0,1,3.73767,5.061929,0,6.9,1,0,0 +1,0,1,3.73767,5.061929,0,6.9,1,0,0 +1,0,1,3.73767,5.061929,0,6.9,1,0,0 +5,0,1,3.73767,5.061929,0,6.9,1,0,0 +2,0,1,5.749202,5.755076,0,10.3,1,0,0 +1,0,1,5.749202,5.755076,0,10.3,1,0,0 +3,0,1,5.749202,5.755076,0,10.3,1,0,0 +0,0,1,5.749202,5.755076,0,10.3,1,0,0 +1,0,1,5.749202,5.755076,0,10.3,1,0,0 +1,0,1,5.881984,5.755076,0,9.967326,1,0,0 +2,0,1,5.881984,5.755076,0,9.967326,1,0,0 +1,0,1,5.881984,5.755076,0,9.967326,1,0,0 +1,0,1,5.881984,5.755076,0,9.967326,1,0,0 +0,0,1,5.881984,5.755076,0,17.2,1,0,0 +3,0,1,5.881984,5.755076,0,17.2,1,0,0 +2,0,1,5.881984,5.755076,0,17.2,1,0,0 +2,0,1,5.881984,5.755076,0,17.2,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +4,3.258096,0,6.476973,7.863267,0,9.967326,0,0,0 +2,3.258096,0,6.476973,7.863267,0,9.967326,0,0,0 +2,3.258096,0,6.476973,7.863267,0,9.967326,0,0,0 +1,3.258096,0,6.476973,7.863267,0,9.967326,0,0,0 +1,3.258096,0,6.476973,7.863267,0,9.967326,0,0,0 +1,3.258096,0,6.476973,7.863267,0,9.967326,0,0,0 +0,3.258096,0,6.476973,7.863267,0,6.9,0,0,0 +0,3.258096,0,6.476973,7.863267,0,6.9,0,0,0 +1,3.258096,0,6.476973,7.863267,0,6.9,0,0,0 +0,0,0,5.902633,0,0,17.2,0,0,0 +1,0,0,5.902633,0,0,17.2,0,0,0 +4,0,0,5.902633,0,0,17.2,0,0,0 +1,0,0,5.902633,0,0,9.967326,0,0,0 +0,0,0,5.902633,0,0,9.967326,0,0,0 +1,0,0,5.902633,0,0,9.967326,0,0,0 +1,0,0,5.902633,0,0,9.967326,0,0,0 +2,0,0,5.902633,0,0,9.967326,0,0,0 +1,0,0,5.902633,0,0,9.967326,0,0,0 +0,0,0,5.902633,0,0,6.9,0,0,0 +0,0,0,5.902633,0,0,6.9,0,0,0 +0,0,0,5.902633,0,0,6.9,0,0,0 +52,0,1,6.109248,6.160541,0,9.967326,0,0,0 +5,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +8,0,1,6.109248,6.160541,0,13.8,0,1,0 +2,0,1,6.109248,6.160541,0,13.8,0,1,0 +7,0,1,6.109248,6.160541,0,13.8,0,1,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +5,0,1,6.109248,6.160541,0,9.967326,1,0,0 +17,0,1,6.109248,6.160541,0,9.967326,0,0,0 +11,0,1,6.109248,6.160541,0,9.967326,0,0,0 +44,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,0,4.718499,0,0,6.9,1,0,0 +7,0,0,4.718499,0,0,6.9,1,0,0 +3,0,0,4.718499,0,0,6.9,1,0,0 +7,0,0,4.718499,0,0,20.7,1,0,0 +5,0,0,4.718499,0,0,20.7,1,0,0 +1,0,1,6.109248,6.160541,0,3.4,1,0,0 +1,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +1,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +10,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +3,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +4,0,1,6.109248,6.160541,0,6.9,1,0,0 +3,0,1,6.109248,6.160541,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +1,0,1,6.109248,6.160541,0,3.4,1,0,0 +2,0,1,6.109248,6.160541,0,3.4,1,0,0 +4,0,1,6.109248,6.160541,0,3.4,1,0,0 +1,0,1,6.109248,6.160541,0,3.4,1,0,0 +2,4.564348,0,6.044199,6.095492,0,6.9,0,0,0 +4,4.564348,0,6.044199,6.095492,0,6.9,0,0,0 +3,4.564348,0,6.044199,6.095492,0,6.9,0,0,0 +3,4.564348,0,6.044199,6.095492,0,6.9,0,0,0 +2,4.564348,0,6.044199,6.095492,0,6.9,0,0,0 +7,4.564348,0,6.044199,6.095492,0,20.7,0,0,0 +10,4.564348,0,6.044199,6.095492,0,20.7,0,0,0 +2,4.564348,0,6.044199,6.095492,0,20.7,0,0,0 +1,4.564348,0,6.044199,6.095492,0,20.7,0,0,0 +4,4.564348,0,6.044199,6.095492,0,20.7,0,0,0 +2,4.564348,0,6.044199,6.095492,1,3.4,1,0,0 +6,4.564348,0,6.044199,6.095492,1,3.4,1,0,0 +2,4.564348,0,6.044199,6.095492,1,3.4,1,0,0 +2,4.564348,0,6.044199,6.095492,1,3.4,1,0,0 +0,4.564348,0,6.044199,6.095492,1,3.4,1,0,0 +8,4.564348,0,6.044199,6.095492,0,0,1,0,0 +4,4.564348,0,6.044199,6.095492,0,0,1,0,0 +2,4.564348,0,6.044199,6.095492,0,0,1,0,0 +19,4.564348,0,6.044199,6.095492,0,0,1,0,0 +8,4.564348,0,6.044199,6.095492,0,0,1,0,0 +5,4.564348,0,6.044199,6.095492,0,3.4,0,0,0 +5,4.564348,0,6.044199,6.095492,0,3.4,0,0,0 +5,4.564348,0,6.044199,6.095492,0,3.4,0,0,0 +12,4.564348,0,6.044199,6.095492,0,3.4,0,0,0 +2,4.564348,0,6.044199,6.095492,0,3.4,0,0,0 +6,4.564348,0,6.044199,6.095492,0,9.967326,0,0,0 +2,4.564348,0,6.044199,6.095492,0,9.967326,0,0,0 +6,4.564348,0,6.044199,6.095492,0,9.967326,0,0,0 +0,4.564348,0,6.044199,6.095492,0,9.967326,0,0,0 +7,4.564348,0,6.044199,6.095492,0,9.967326,0,0,0 +0,3.258096,0,6.586172,8.006368,0,3.4,0,0,0 +3,3.258096,0,6.586172,8.006368,0,3.4,0,0,0 +1,3.258096,0,6.586172,8.006368,0,3.4,0,0,0 +2,3.258096,0,6.586172,8.006368,1,10.3,1,0,0 +3,3.258096,0,6.586172,8.006368,1,10.3,1,0,0 +2,3.258096,0,6.586172,8.006368,1,10.3,1,0,0 +2,3.258096,0,6.371441,7.757735,0,10.3,1,0,0 +2,3.258096,0,6.371441,7.757735,0,10.3,1,0,0 +1,3.258096,0,6.371441,7.757735,0,10.3,1,0,0 +9,0,0,0,0,0,20.7,1,0,0 +11,0,0,0,0,0,20.7,1,0,0 +6,0,0,0,0,0,20.7,1,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +2,0,0,0,0,0,10.3,0,0,0 +3,0,0,0,0,0,10.3,0,0,0 +4,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +3,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +1,0,1,0,6.160541,0,9.967326,0,0,0 +1,0,1,0,6.160541,0,9.967326,0,0,0 +3,0,1,0,6.160541,0,9.967326,0,0,0 +5,0,1,0,6.160541,0,9.967326,0,0,0 +5,0,1,0,6.160541,0,9.967326,0,0,0 +2,0,1,0,6.160541,0,9.967326,0,0,0 +2,0,1,0,6.160541,0,0,0,0,0 +3,0,1,0,6.160541,0,0,0,0,0 +1,0,1,0,6.160541,0,0,0,0,0 +1,0,1,0,6.160541,0,3.4,0,0,0 +0,0,1,0,6.160541,0,3.4,0,0,0 +3,0,1,0,6.160541,0,3.4,0,0,0 +0,3.258096,0,6.497152,7.883446,0,0,0,0,0 +0,3.258096,0,6.497152,7.883446,0,0,0,0,0 +3,3.258096,0,6.497152,7.883446,0,0,0,0,0 +0,3.258096,0,6.497152,7.883446,0,6.9,1,0,0 +2,3.258096,0,6.497152,7.883446,0,6.9,1,0,0 +0,3.258096,0,6.497152,7.883446,0,6.9,1,0,0 +2,3.258096,0,6.497152,7.883446,0,9.967326,0,0,0 +3,3.258096,0,6.497152,7.883446,0,9.967326,0,0,0 +2,3.258096,0,6.497152,7.883446,0,9.967326,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +0,0,1,5.010635,5.061929,0,3.4,0,0,0 +1,0,1,5.010635,5.061929,0,3.4,0,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +7,3.931826,0,6.907755,7.600903,0,0,0,0,0 +1,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +7,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +3,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +2,3.258096,0,6.55108,7.937375,1,24.1,0,1,0 +1,3.258096,0,6.55108,7.937375,1,24.1,0,1,0 +2,3.258096,0,6.55108,7.937375,1,24.1,0,1,0 +8,3.258096,0,6.55108,7.937375,0,17.2,0,1,0 +3,3.258096,0,6.55108,7.937375,0,17.2,0,1,0 +6,3.258096,0,6.55108,7.937375,0,17.2,0,1,0 +2,3.258096,0,6.55108,7.937375,0,9.967326,0,0,0 +1,3.258096,0,6.55108,7.937375,0,9.967326,0,0,0 +3,3.258096,0,6.55108,7.937375,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,1,10.3,0,0,0 +0,3.931826,0,6.907755,7.600903,1,10.3,0,0,0 +0,3.931826,0,6.907755,7.600903,1,10.3,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,1,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +2,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +4,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0 +21,0,0,0,0,1,13.8,0,0,0 +23,0,0,0,0,1,13.8,0,0,0 +15,0,0,0,0,1,13.8,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +0,4.564348,0,5.955423,5.911367,0,0,0,0,0 +0,4.564348,0,5.955423,5.911367,0,0,0,0,0 +0,4.564348,0,5.955423,5.911367,0,0,0,0,0 +2,4.564348,0,6.882438,6.959049,0,17.2,1,0,0 +0,4.564348,0,6.882438,6.959049,0,17.2,1,0,0 +4,4.564348,0,6.882438,6.959049,0,17.2,1,0,0 +0,4.564348,0,6.882438,6.959049,0,17.2,1,0,0 +5,4.564348,0,6.882438,6.959049,0,17.2,1,0,0 +5,4.564348,0,6.882438,6.959049,1,34.5,1,0,0 +4,4.564348,0,6.882438,6.959049,1,34.5,1,0,0 +5,4.564348,0,6.882438,6.959049,1,34.5,1,0,0 +4,4.564348,0,6.882438,6.959049,1,34.5,1,0,0 +11,4.564348,0,6.882438,6.959049,1,34.5,1,0,0 +1,4.564348,0,6.882438,6.959049,0,9.967326,1,0,0 +3,4.564348,0,6.882438,6.959049,0,9.967326,1,0,0 +4,4.564348,0,6.882438,6.959049,0,9.967326,1,0,0 +4,4.564348,0,6.882438,6.959049,0,9.967326,1,0,0 +1,4.564348,0,6.882438,6.959049,0,9.967326,1,0,0 +2,3.258096,0,6.620073,8.006368,1,9.967326,1,0,0 +5,3.258096,0,6.620073,8.006368,1,9.967326,1,0,0 +3,3.258096,0,6.620073,8.006368,1,9.967326,1,0,0 +1,3.258096,0,6.620073,8.006368,1,9.967326,1,0,0 +0,3.258096,0,6.620073,8.006368,1,9.967326,1,0,0 +2,3.258096,0,6.620073,8.006368,0,0,1,0,0 +1,3.258096,0,6.620073,8.006368,0,0,1,0,0 +1,3.258096,0,6.620073,8.006368,0,0,1,0,0 +1,3.258096,0,6.620073,8.006368,0,0,1,0,0 +2,3.258096,0,6.620073,8.006368,0,0,1,0,0 +2,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +1,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +0,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +1,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +1,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.842769,8.006368,0,13.8,1,0,0 +2,3.258096,0,6.842769,8.006368,0,13.8,1,0,0 +2,3.258096,0,6.842769,8.006368,0,13.8,1,0,0 +2,3.258096,0,6.842769,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.842769,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.842769,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.842769,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.842769,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.842769,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.842769,8.006368,0,0,0,0,0 +2,3.258096,0,6.842769,8.006368,0,0,0,0,0 +2,3.258096,0,6.842769,8.006368,0,0,0,0,0 +4,0,0,0,0,1,31,0,1,0 +2,0,0,0,0,1,31,0,1,0 +3,0,0,0,0,1,31,0,1,0 +6,0,0,0,0,1,20.7,0,1,0 +0,0,0,0,0,1,20.7,0,1,0 +2,0,0,0,0,1,20.7,0,1,0 +1,4.564348,0,6.907755,6.959049,1,13.8,0,0,0 +1,4.564348,0,6.907755,6.959049,1,13.8,0,0,0 +3,4.564348,0,6.907755,6.959049,1,13.8,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +2,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +9,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +9,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,1,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,1,10.3,1,0,0 +2,4.564348,0,6.907755,6.959049,1,10.3,1,0,0 +8,4.564348,0,6.907755,6.959049,1,27.6,0,0,0 +5,4.564348,0,6.907755,6.959049,1,27.6,0,0,0 +2,4.564348,0,6.907755,6.959049,1,27.6,0,0,0 +3,4.564348,0,6.907755,6.959049,1,3.4,0,0,0 +5,4.564348,0,6.907755,6.959049,1,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,1,3.4,0,0,0 +4,4.564348,0,6.907755,6.959049,1,3.4,0,0,0 +3,4.564348,0,6.907755,6.959049,1,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +2,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +1,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +18,0,1,6.109248,6.160541,0,17.2,1,0,0 +13,0,1,6.109248,6.160541,0,17.2,1,0,0 +4,0,1,6.109248,6.160541,0,17.2,1,0,0 +1,0,1,6.109248,6.160541,0,17.2,1,0,0 +2,0,1,6.109248,6.160541,0,17.2,1,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +7,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,41.4,0,0,0 +3,0,1,6.109248,6.160541,0,41.4,0,0,0 +0,0,1,6.109248,6.160541,0,41.4,0,0,0 +0,0,1,6.109248,6.160541,0,41.4,0,0,0 +1,0,1,6.109248,6.160541,0,41.4,0,0,0 +8,0,1,6.109248,6.160541,0,10.3,1,0,0 +3,0,1,6.109248,6.160541,0,10.3,1,0,0 +4,0,1,6.109248,6.160541,0,10.3,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +2,0,1,6.109248,6.160541,0,10.3,0,1,0 +2,0,1,6.109248,6.160541,0,10.3,0,1,0 +2,0,1,6.109248,6.160541,0,10.3,0,1,0 +7,3.258096,0,6.586172,8.006368,0,20.7,1,0,0 +3,3.258096,0,6.586172,8.006368,0,20.7,1,0,0 +4,3.258096,0,6.586172,8.006368,0,20.7,1,0,0 +1,3.258096,0,6.586172,8.006368,0,3.4,1,0,0 +1,3.258096,0,6.586172,8.006368,0,3.4,1,0,0 +1,3.258096,0,6.586172,8.006368,0,3.4,1,0,0 +3,3.258096,0,6.586172,8.006368,0,13.8,1,0,0 +3,3.258096,0,6.586172,8.006368,0,13.8,1,0,0 +14,3.258096,0,6.586172,8.006368,0,13.8,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +6,3.258096,0,6.620073,8.006368,0,0,1,0,0 +1,3.258096,0,6.620073,8.006368,0,0,1,0,0 +4,3.258096,0,6.620073,8.006368,0,0,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +6,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +4,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +5,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +4,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +5,0,0,0,0,1,34.5,1,0,0 +9,0,0,0,0,1,34.5,1,0,0 +44,0,0,0,0,1,34.5,1,0,0 +76,0,0,0,0,1,34.5,1,0,0 +77,0,0,0,0,1,34.5,1,0,0 +1,0,0,0,0,1,17.2,0,0,0 +1,0,0,0,0,1,17.2,0,0,0 +8,0,0,0,0,1,17.2,0,0,0 +25,0,0,0,0,1,17.2,0,0,0 +12,0,0,0,0,1,17.2,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +5,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +4,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +4,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +3,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +5,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +2,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +3,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +5,0,0,0,0,0,13.8,1,0,0 +3,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +10,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +18,3.258096,0,6.802395,8.188689,0,27.6,0,0,0 +0,3.258096,0,6.802395,8.188689,0,27.6,0,0,0 +0,3.258096,0,6.802395,8.188689,0,27.6,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,13.8,1,0,0 +1,0,0,0,0,0,13.8,1,0,0 +3,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +2,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +4,0,1,0,5.061929,0,6.9,1,0,0 +0,0,1,0,5.061929,0,6.9,1,0,0 +0,0,1,0,5.061929,0,6.9,1,0,0 +0,0,1,0,5.061929,0,6.9,1,0,0 +0,0,1,0,5.061929,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +2,0,1,6.109248,6.160541,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +5,0,1,6.109248,6.160541,0,24.1,1,0,0 +7,0,1,6.109248,6.160541,0,24.1,1,0,0 +1,0,1,6.109248,6.160541,0,24.1,1,0,0 +2,0,1,6.109248,6.160541,0,9.967326,1,0,0 +2,0,1,6.109248,6.160541,0,9.967326,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +5,3.931826,0,6.907755,7.600903,0,17.2,0,0,0 +1,3.931826,0,6.907755,7.600903,0,17.2,0,0,0 +0,3.931826,0,6.907755,7.600903,0,17.2,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +3,3.931826,0,6.907755,7.600903,1,20.7,1,0,0 +3,3.931826,0,6.907755,7.600903,1,20.7,1,0,0 +9,3.931826,0,6.907755,7.600903,1,20.7,1,0,0 +1,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +3,3.931826,0,6.907755,7.600903,1,6.9,1,0,0 +0,3.931826,0,6.907755,7.600903,1,6.9,1,0,0 +0,3.931826,0,6.907755,7.600903,1,6.9,1,0,0 +1,3.931826,0,6.907755,7.600903,1,6.9,1,0,0 +2,3.931826,0,6.907755,7.600903,1,6.9,1,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +0,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +2,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +13,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +4,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +5,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +3,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +3,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +3,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +2,0,1,6.109248,6.160541,0,13.8,1,0,0 +3,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +2,0,1,6.109248,6.160541,0,9.967326,0,0,0 +1,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,0,1,6.109248,6.160541,0,9.967326,0,0,0 +6,0,1,6.109248,6.160541,0,6.9,1,0,0 +3,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,5.711089,5.061929,0,10.3,1,0,0 +0,0,1,5.711089,5.061929,0,10.3,1,0,0 +2,0,1,5.711089,5.061929,0,10.3,1,0,0 +8,0,0,0,0,1,31,1,0,0 +4,0,0,0,0,1,31,1,0,0 +4,0,0,0,0,1,31,1,0,0 +2,0,0,5.015954,0,0,13.8,0,0,0 +0,0,0,5.015954,0,0,13.8,0,0,0 +0,0,0,5.015954,0,0,13.8,0,0,0 +8,0,1,5.703783,5.755076,1,17.2,0,1,0 +10,0,1,5.703783,5.755076,1,17.2,0,1,0 +7,0,1,5.703783,5.755076,1,17.2,0,1,0 +9,0,1,5.703783,5.755076,1,17.2,0,1,0 +9,0,1,5.703783,5.755076,1,17.2,0,1,0 +1,0,1,5.703783,5.755076,1,24.1,1,0,0 +7,0,1,5.703783,5.755076,1,24.1,1,0,0 +4,0,1,5.703783,5.755076,1,24.1,1,0,0 +4,0,1,5.703783,5.755076,1,24.1,1,0,0 +5,0,1,5.703783,5.755076,1,24.1,1,0,0 +3,0,1,6.109248,6.160541,0,6.9,1,0,0 +2,0,1,6.109248,6.160541,0,6.9,1,0,0 +6,0,1,6.109248,6.160541,0,6.9,1,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +4,0,1,6.109248,6.160541,0,3.4,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,1,0,0 +1,0,1,6.109248,6.160541,0,9.967326,1,0,0 +2,0,1,6.109248,6.160541,0,9.967326,1,0,0 +2,0,1,6.109248,6.160541,0,3.4,1,0,0 +7,0,1,6.109248,6.160541,0,3.4,1,0,0 +6,0,1,6.109248,6.160541,0,3.4,1,0,0 +5,0,1,5.855989,5.061929,0,3.4,0,0,0 +9,0,1,5.855989,5.061929,0,3.4,0,0,0 +11,0,1,5.855989,5.061929,0,3.4,0,0,0 +4,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +7,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +3,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +4,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +17,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +5,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +6,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +2,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +6,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,1,0,0 +3,4.564348,0,2.890372,2.941665,0,9.967326,0,0,0 +0,4.564348,0,2.890372,2.941665,0,9.967326,0,0,0 +1,4.564348,0,2.890372,2.941665,0,9.967326,0,0,0 +6,4.564348,0,2.890372,2.941665,0,20.7,1,0,0 +2,4.564348,0,2.890372,2.941665,0,20.7,1,0,0 +1,4.564348,0,2.890372,2.941665,0,20.7,1,0,0 +4,3.258096,0,6.55108,7.937375,0,9.967326,0,1,0 +3,3.258096,0,6.55108,7.937375,0,9.967326,0,1,0 +2,3.258096,0,6.55108,7.937375,0,9.967326,0,1,0 +0,3.258096,0,6.55108,7.937375,0,9.967326,0,1,0 +1,3.258096,0,6.55108,7.937375,0,9.967326,0,1,0 +14,3.258096,0,6.55108,7.937375,0,24.1,0,1,0 +13,3.258096,0,6.55108,7.937375,0,24.1,0,1,0 +4,3.258096,0,6.55108,7.937375,0,24.1,0,1,0 +1,3.258096,0,6.55108,7.937375,0,24.1,0,1,0 +1,3.258096,0,6.55108,7.937375,0,24.1,0,1,0 +1,3.258096,0,6.55108,7.937375,0,6.9,1,0,0 +2,3.258096,0,6.55108,7.937375,0,6.9,1,0,0 +0,3.258096,0,6.55108,7.937375,0,6.9,1,0,0 +0,3.258096,0,6.55108,7.937375,0,6.9,1,0,0 +1,3.258096,0,6.55108,7.937375,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +3,4.564348,0,0,5.755076,0,10.3,0,0,0 +0,4.564348,0,0,5.755076,0,10.3,0,0,0 +2,0,1,6.052089,6.160541,0,3.4,1,0,0 +2,0,1,6.052089,6.160541,0,3.4,1,0,0 +2,0,1,6.052089,6.160541,0,3.4,1,0,0 +2,0,1,6.052089,6.160541,0,9.967326,0,0,0 +1,0,1,6.052089,6.160541,0,9.967326,0,0,0 +1,0,1,6.052089,6.160541,0,9.967326,0,0,0 +2,0,1,6.052089,6.160541,0,13.8,0,0,0 +2,0,1,6.052089,6.160541,0,13.8,0,0,0 +1,0,1,6.052089,6.160541,0,13.8,0,0,0 +1,0,1,6.052089,6.160541,0,9.967326,0,0,0 +0,0,1,6.052089,6.160541,0,9.967326,0,0,0 +0,0,1,6.052089,6.160541,0,9.967326,0,0,0 +3,0,1,6.109248,6.160541,0,3.4,1,0,0 +1,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +6,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +6,0,1,6.109248,6.160541,0,24.1,1,0,0 +1,0,1,6.109248,6.160541,0,24.1,1,0,0 +1,0,1,6.109248,6.160541,0,24.1,1,0,0 +6,0,1,5.010635,5.061929,0,31,1,0,0 +2,0,1,5.010635,5.061929,0,31,1,0,0 +6,0,1,5.010635,5.061929,0,31,1,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +5,0,0,0,0,0,0,0,0,0 +0,0,0,6.200184,0,0,0,0,0,0 +4,0,0,6.200184,0,0,0,0,0,0 +5,0,0,6.200184,0,0,0,0,0,0 +0,0,0,6.200184,0,0,6.9,1,0,0 +0,0,0,6.200184,0,0,6.9,1,0,0 +0,0,0,6.200184,0,0,6.9,1,0,0 +0,0,0,6.200184,0,0,0,0,0,0 +1,0,0,6.200184,0,0,0,0,0,0 +0,0,0,6.200184,0,0,13.8,1,0,0 +2,0,0,6.200184,0,0,13.8,1,0,0 +3,0,0,6.200184,0,0,13.8,1,0,0 +0,0,0,6.200184,0,0,9.967326,0,0,0 +2,0,0,6.200184,0,0,9.967326,0,0,0 +0,0,0,6.200184,0,0,9.967326,0,0,0 +0,0,0,6.200184,0,0,9.967326,0,0,0 +0,0,0,6.200184,0,0,9.967326,0,0,0 +0,0,0,6.200184,0,0,9.967326,0,0,0 +1,0,0,6.200184,0,0,9.967326,0,0,0 +0,0,0,6.200184,0,0,9.967326,0,0,0 +1,0,0,6.200184,0,0,9.967326,0,0,0 +1,0,0,6.200184,0,0,6.9,0,0,0 +0,0,0,6.200184,0,0,6.9,0,0,0 +0,0,0,6.200184,0,0,6.9,0,0,0 +3,0,1,5.352806,5.061929,0,10.3,0,0,0 +0,0,1,5.352806,5.061929,0,10.3,0,0,0 +4,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +3,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +25,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +10,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +1,4.564348,0,6.907755,6.959049,0,0,0,0,0 +3,4.564348,0,6.907755,6.959049,0,0,0,0,0 +2,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +2,4.564348,0,6.907755,6.959049,0,31,0,1,0 +3,4.564348,0,6.907755,6.959049,0,31,0,1,0 +1,4.564348,0,6.907755,6.959049,0,31,0,1,0 +4,0,0,5.154216,0,0,9.967326,0,0,0 +7,0,0,5.154216,0,0,9.967326,0,0,0 +4,0,0,5.154216,0,0,9.967326,0,0,0 +7,0,0,5.154216,0,0,17.2,1,0,0 +19,0,0,5.154216,0,0,17.2,1,0,0 +6,0,0,5.154216,0,0,17.2,1,0,0 +0,0,0,5.154216,0,0,3.4,0,0,0 +0,0,0,5.154216,0,0,3.4,0,0,0 +1,0,0,5.154216,0,0,3.4,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +2,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +2,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +3,3.258096,0,6.109248,8.006368,1,10.3,0,0,0 +8,3.258096,0,6.109248,8.006368,1,10.3,0,0,0 +0,3.258096,0,6.109248,8.006368,1,10.3,0,0,0 +3,4.564348,0,6.684612,6.735905,0,3.4,0,0,0 +3,4.564348,0,6.684612,6.735905,0,3.4,0,0,0 +9,4.564348,0,6.684612,6.735905,0,9.967326,0,1,0 +2,4.564348,0,6.684612,6.735905,0,9.967326,0,1,0 +0,4.564348,0,6.684612,6.735905,0,9.967326,0,1,0 +2,4.564348,0,6.684612,6.735905,0,17.2,0,0,0 +1,4.564348,0,6.684612,6.735905,0,17.2,0,0,0 +1,4.564348,0,6.684612,6.735905,0,17.2,0,0,0 +0,4.564348,0,6.684612,6.735905,0,9.967326,0,0,0 +0,4.564348,0,6.684612,6.735905,0,9.967326,0,0,0 +0,4.564348,0,6.684612,6.735905,0,9.967326,0,0,0 +3,4.564348,0,6.684612,6.735905,0,13.8,0,0,0 +2,4.564348,0,6.684612,6.735905,0,13.8,0,0,0 +1,4.564348,0,6.684612,6.735905,0,13.8,0,0,0 +2,4.564348,0,5.521461,5.572754,0,0,0,0,0 +0,4.564348,0,5.521461,5.572754,0,0,0,0,0 +0,4.564348,0,5.521461,5.572754,0,0,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +5,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +6,3.258096,0,6.620073,8.006368,1,24.1,1,0,0 +9,3.258096,0,6.620073,8.006368,1,24.1,1,0,0 +5,3.258096,0,6.620073,8.006368,1,24.1,1,0,0 +2,3.931826,0,6.620073,7.313221,0,6.9,0,0,0 +1,3.931826,0,6.620073,7.313221,0,6.9,0,0,0 +3,3.931826,0,6.620073,7.313221,0,6.9,0,0,0 +1,3.931826,0,6.620073,7.313221,0,6.9,0,0,0 +3,3.931826,0,6.620073,7.313221,0,6.9,0,0,0 +4,0,0,0,0,0,10.3,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +4,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +4,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +3,0,0,0,0,0,9.967326,1,0,0 +5,0,0,0,0,0,9.967326,1,0,0 +0,0,0,0,0,0,9.967326,1,0,0 +0,0,0,0,0,0,9.967326,1,0,0 +3,0,0,0,0,0,9.967326,1,0,0 +3,0,0,0,0,0,9.967326,1,0,0 +2,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +1,0,0,0,0,0,9.967326,1,0,0 +4,0,1,5.010635,5.061929,1,0,1,0,0 +0,0,1,5.010635,5.061929,1,0,1,0,0 +0,0,1,5.010635,5.061929,1,0,1,0,0 +0,0,1,5.352806,5.061929,1,10.3,0,0,0 +1,0,1,5.352806,5.061929,1,10.3,0,0,0 +0,0,1,5.352806,5.061929,1,10.3,0,0,0 +0,0,1,5.703783,5.755076,0,9.967326,0,0,0 +2,0,1,5.703783,5.755076,0,9.967326,0,0,0 +0,0,1,5.703783,5.755076,0,9.967326,0,0,0 +3,0,1,5.703783,5.755076,0,34.5,1,0,0 +2,0,1,5.703783,5.755076,0,34.5,1,0,0 +0,0,1,5.703783,5.755076,0,34.5,1,0,0 +1,0,0,6.468878,0,0,9.967326,0,0,0 +1,0,0,6.468878,0,0,9.967326,0,0,0 +2,0,0,6.468878,0,0,9.967326,0,0,0 +1,0,0,6.468878,0,0,9.967326,0,0,0 +1,0,0,6.468878,0,0,9.967326,0,0,0 +1,0,0,6.468878,0,0,9.967326,0,0,0 +2,0,0,6.468878,0,0,9.967326,0,0,0 +1,0,0,6.468878,0,0,9.967326,0,0,0 +3,0,0,6.468878,0,0,9.967326,0,0,0 +1,0,0,6.468878,0,0,9.967326,0,0,0 +1,0,0,6.468878,0,0,9.967326,0,0,0 +1,0,0,6.468878,0,0,9.967326,0,0,0 +3,0,0,6.468878,0,0,9.967326,0,0,0 +1,0,0,6.468878,0,0,9.967326,0,0,0 +0,0,0,6.468878,0,0,9.967326,0,0,0 +2,0,0,6.468878,0,0,17.2,1,0,0 +3,0,0,6.468878,0,0,17.2,1,0,0 +1,0,0,6.468878,0,0,17.2,1,0,0 +1,0,0,6.468878,0,0,17.2,1,0,0 +1,0,0,6.468878,0,0,17.2,1,0,0 +1,0,0,6.468878,0,0,17.2,0,0,0 +6,0,0,6.468878,0,0,17.2,0,0,0 +5,0,0,6.468878,0,0,17.2,0,0,0 +5,0,0,6.468878,0,0,17.2,0,0,0 +1,0,0,6.468878,0,0,17.2,0,0,0 +1,0,1,5.703783,5.755076,0,6.9,0,0,0 +1,0,1,5.703783,5.755076,0,6.9,0,0,0 +0,0,1,5.703783,5.755076,0,6.9,0,0,0 +3,0,1,5.703783,5.755076,0,6.9,0,0,0 +0,0,1,5.703783,5.755076,0,6.9,0,0,0 +2,0,1,5.703783,5.755076,0,6.9,0,0,0 +4,0,1,5.504844,5.061929,0,13.8,1,0,0 +3,0,1,5.504844,5.061929,0,13.8,1,0,0 +1,0,1,5.504844,5.061929,0,13.8,1,0,0 +18,0,1,6.109248,6.160541,.0431267,9.967326,0,0,0 +6,0,1,6.109248,6.160541,.0431267,9.967326,0,0,0 +4,0,1,6.109248,6.160541,.0431267,9.967326,0,0,0 +0,0,1,6.109248,6.160541,.1572505,9.967326,0,0,0 +0,0,1,6.109248,6.160541,.1572505,9.967326,0,0,0 +0,0,1,6.109248,6.160541,.1572505,9.967326,0,0,0 +1,0,1,6.109248,6.160541,.1572505,9.967326,0,1,0 +4,0,1,6.109248,6.160541,.1572505,9.967326,0,1,0 +2,0,1,6.109248,6.160541,.1572505,9.967326,0,1,0 +0,0,1,5.010635,5.061929,0,0,0,0,0 +0,0,1,5.010635,5.061929,0,0,0,0,0 +0,0,1,5.010635,5.061929,0,0,0,0,0 +1,0,1,6.109248,6.160541,.0431267,9.967326,0,0,0 +0,0,1,6.109248,6.160541,.0431267,9.967326,0,0,0 +1,0,1,6.109248,6.160541,.0431267,9.967326,0,0,0 +7,0,1,5.010635,5.061929,0,6.9,0,0,0 +4,0,1,5.010635,5.061929,0,6.9,0,0,0 +2,0,1,5.010635,5.061929,0,6.9,0,0,0 +2,3.258096,0,6.263398,7.649693,.1572505,9.967326,1,0,0 +0,3.258096,0,6.263398,7.649693,.1572505,9.967326,1,0,0 +8,3.258096,0,6.263398,7.649693,.1572505,9.967326,1,0,0 +4,3.258096,0,6.263398,7.649693,.1572505,9.967326,1,0,0 +3,3.258096,0,6.263398,7.649693,.1572505,9.967326,1,0,0 +2,0,1,6.109248,6.160541,0,3.4,1,0,0 +4,0,1,6.109248,6.160541,0,3.4,1,0,0 +10,0,1,6.109248,6.160541,0,3.4,1,0,0 +10,0,1,6.109248,6.160541,0,9.967326,0,0,0 +12,0,1,6.109248,6.160541,0,9.967326,0,0,0 +6,0,1,6.109248,6.160541,0,9.967326,0,0,0 +8,0,1,6.109248,6.160541,0,13.8,0,0,0 +1,0,1,6.109248,6.160541,0,13.8,0,0,0 +7,0,1,6.109248,6.160541,0,13.8,0,0,0 +3,0,1,6.109248,6.160541,0,9.967326,0,0,0 +8,0,1,6.109248,6.160541,0,9.967326,0,0,0 +7,0,1,6.109248,6.160541,0,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,.1572505,9.967326,0,0,0 +3,4.564348,0,6.907755,6.959049,.1572505,9.967326,0,0,0 +6,4.564348,0,6.907755,6.959049,.1572505,9.967326,0,0,0 +5,4.564348,0,6.907755,6.959049,.1572505,9.967326,0,0,0 +0,4.564348,0,6.907755,6.959049,.1572505,9.967326,0,0,0 +4,4.564348,0,6.907755,6.959049,.1572505,9.967326,0,0,0 +12,4.564348,0,0,0,0,0,0,0,0 +5,4.564348,0,0,0,0,0,0,0,0 +5,4.564348,0,0,0,0,0,0,0,0 +2,4.564348,0,6.907755,6.959049,.1572505,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,.1572505,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,.1572505,9.967326,0,0,0 +3,0,0,6.828582,0,0,17.2,0,0,0 +2,0,0,6.828582,0,0,17.2,0,0,0 +4,0,0,6.828582,0,0,17.2,0,0,0 +5,0,0,6.828582,0,0,6.9,0,0,0 +9,0,0,6.828582,0,0,6.9,0,0,0 +7,0,0,6.828582,0,0,6.9,0,0,0 +0,4.564348,0,6.476973,6.528265,0,10.3,1,0,0 +1,4.564348,0,6.476973,6.528265,0,10.3,1,0,0 +0,4.564348,0,6.476973,6.528265,0,10.3,1,0,0 +3,4.564348,0,6.476973,6.528265,0,9.967326,0,0,0 +2,4.564348,0,6.476973,6.528265,0,9.967326,0,0,0 +3,4.564348,0,6.476973,6.528265,0,9.967326,0,0,0 +1,4.564348,0,6.476973,6.528265,0,9.967326,0,0,0 +8,4.564348,0,6.476973,6.528265,0,9.967326,0,0,0 +5,4.564348,0,6.476973,6.528265,0,9.967326,0,0,0 +4,4.564348,0,6.476973,6.528265,0,0,1,0,0 +1,4.564348,0,6.476973,6.528265,0,0,1,0,0 +3,4.564348,0,6.476973,6.528265,0,0,1,0,0 +2,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +3,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +2,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +4,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +7,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +2,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +4,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +5,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +5,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +0,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,1,0,0 +3,0,0,5.189618,0,0,17.2,1,0,0 +5,0,0,5.189618,0,0,17.2,1,0,0 +1,0,0,5.189618,0,0,17.2,1,0,0 +4,0,1,5.893411,5.755076,0,0,0,0,0 +0,0,1,5.893411,5.755076,0,0,0,0,0 +1,0,1,5.893411,5.755076,0,0,0,0,0 +3,0,1,5.893411,5.755076,0,3.4,0,0,0 +2,0,1,5.893411,5.755076,0,3.4,0,0,0 +2,0,1,5.893411,5.755076,0,3.4,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +4,0,0,0,0,0,9.967326,0,0,0 +5,0,0,0,0,0,9.967326,0,0,0 +0,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +0,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +2,0,0,0,0,0,13.8,0,0,0 +7,0,0,0,0,1,6.9,0,0,0 +1,0,0,0,0,1,6.9,0,0,0 +1,0,0,0,0,1,6.9,0,0,0 +2,0,0,0,0,1,6.9,0,0,0 +2,0,0,0,0,1,6.9,0,0,0 +5,3.258096,0,6.586172,8.006368,0,0,0,0,0 +8,3.258096,0,6.586172,8.006368,0,0,0,0,0 +6,3.258096,0,6.586172,8.006368,0,0,0,0,0 +2,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +10,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +4,3.258096,0,6.586172,8.006368,0,9.967326,0,0,0 +5,3.258096,0,6.586172,8.006368,0,3.4,0,0,0 +2,3.258096,0,6.586172,8.006368,0,3.4,0,0,0 +2,3.258096,0,6.586172,8.006368,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,20.7,1,0,0 +6,3.931826,0,6.907755,7.600903,0,20.7,1,0,0 +2,3.931826,0,6.907755,7.600903,0,20.7,1,0,0 +1,3.931826,0,6.907755,7.600903,1,10.3,1,0,0 +5,3.931826,0,6.907755,7.600903,1,10.3,1,0,0 +2,3.931826,0,6.907755,7.600903,1,10.3,1,0,0 +13,3.258096,0,6.611073,7.344202,0,0,1,0,0 +0,3.258096,0,6.611073,7.344202,0,0,1,0,0 +3,3.258096,0,6.611073,7.344202,0,0,1,0,0 +3,3.258096,0,6.611073,7.344202,0,9.967326,1,0,0 +2,3.258096,0,6.611073,7.344202,0,9.967326,1,0,0 +3,3.258096,0,6.611073,7.344202,0,9.967326,1,0,0 +0,0,1,6.611073,6.160541,1,3.4,1,0,0 +6,0,1,6.611073,6.160541,1,3.4,1,0,0 +5,0,1,6.611073,6.160541,1,3.4,1,0,0 +1,0,1,6.611073,6.160541,0,9.967326,1,0,0 +4,0,1,6.611073,6.160541,0,17.2,1,0,0 +5,0,1,6.611073,6.160541,0,17.2,1,0,0 +2,0,1,6.611073,6.160541,0,17.2,1,0,0 +2,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +2,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +26,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +14,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +11,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +0,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +3,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +4,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +3,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,4.564348,0,6.907555,6.959049,0,9.967326,1,0,0 +2,4.564348,0,6.907555,6.959049,0,9.967326,1,0,0 +1,4.564348,0,6.907555,6.959049,0,9.967326,1,0,0 +3,4.564348,0,6.907555,6.959049,0,6.9,1,0,0 +2,4.564348,0,6.907555,6.959049,0,6.9,1,0,0 +1,4.564348,0,6.907555,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907555,6.959049,0,3.4,1,0,0 +3,4.564348,0,6.907555,6.959049,0,3.4,1,0,0 +5,4.564348,0,6.907555,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.756816,6.808109,0,13.8,0,1,0 +0,4.564348,0,6.756816,6.808109,0,13.8,0,1,0 +1,4.564348,0,6.756816,6.808109,0,9.967326,0,0,0 +0,4.564348,0,6.756816,6.808109,0,9.967326,0,0,0 +0,4.564348,0,6.756816,6.808109,0,6.9,0,0,1 +1,4.564348,0,6.756816,6.808109,0,6.9,0,0,1 +7,0,0,0,0,0,37.9,0,0,0 +6,0,0,0,0,0,37.9,0,0,0 +4,0,0,0,0,0,37.9,0,0,0 +3,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +1,0,0,0,0,0,0,1,0,0 +4,0,0,0,0,0,13.8,0,0,0 +2,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +6,0,0,0,0,1,17.2,1,0,0 +8,0,0,0,0,1,17.2,1,0,0 +2,0,0,0,0,1,17.2,1,0,0 +8,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +4,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +1,0,0,0,0,0,9.967326,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +8,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,10.3,0,1,0 +2,0,0,0,0,0,10.3,0,1,0 +9,0,0,0,0,0,10.3,0,1,0 +8,0,0,0,0,0,10.3,0,1,0 +4,0,0,0,0,0,10.3,0,1,0 +9,0,0,0,0,0,9.967326,0,0,0 +10,0,0,0,0,0,9.967326,0,0,0 +9,0,0,0,0,0,9.967326,0,0,0 +6,0,0,0,0,0,9.967326,0,0,0 +3,0,0,0,0,0,9.967326,0,0,0 +11,0,0,0,0,1,9.967326,1,0,0 +11,0,0,0,0,1,9.967326,1,0,0 +14,0,0,0,0,1,9.967326,1,0,0 +9,0,0,0,0,1,9.967326,1,0,0 +11,0,0,0,0,1,9.967326,1,0,0 +0,4.564348,0,6.882438,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.882438,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.766191,6.817485,0,10.3,0,0,0 +0,4.564348,0,6.766191,6.817485,0,10.3,0,0,0 +0,4.564348,0,6.766191,6.817485,0,10.3,0,0,0 +0,0,1,6.052089,6.160541,0,6.9,1,0,0 +0,0,1,6.052089,6.160541,0,6.9,1,0,0 +1,0,1,6.052089,6.160541,0,6.9,1,0,0 +0,0,1,6.052089,6.160541,0,9.967326,0,0,0 +3,0,1,6.052089,6.160541,0,9.967326,0,0,0 +1,0,1,6.052089,6.160541,0,9.967326,0,0,0 +0,0,1,6.052089,6.160541,0,9.967326,0,0,0 +0,0,1,6.052089,6.160541,0,9.967326,0,0,0 +4,0,1,6.052089,6.160541,0,9.967326,0,0,0 +3,0,1,6.052089,6.160541,0,13.8,0,0,0 +0,0,1,6.052089,6.160541,0,13.8,0,0,0 +4,0,1,6.052089,6.160541,0,13.8,0,0,0 +1,0,1,6.052089,6.160541,0,9.967326,0,0,0 +0,0,1,6.052089,6.160541,0,9.967326,0,0,0 +0,0,1,6.052089,6.160541,0,9.967326,0,0,0 +4,0,0,4.836282,0,0,10.3,1,0,0 +8,0,0,4.836282,0,0,10.3,1,0,0 +10,0,0,4.836282,0,0,10.3,1,0,0 +9,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +2,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +4,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +2,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +6,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +8,3.931826,0,6.907755,7.600903,1,6.9,0,0,1 +8,3.931826,0,6.907755,7.600903,1,6.9,0,0,1 +5,3.931826,0,6.907755,7.600903,1,6.9,0,0,1 +4,3.931826,0,6.907755,7.600903,1,6.9,0,0,1 +8,3.931826,0,6.907755,7.600903,1,6.9,0,0,1 +7,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +8,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +5,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +7,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +7,3.931826,0,6.907755,7.600903,0,9.967326,0,0,0 +1,3.931826,0,6.907755,7.600903,0,27.6,0,0,0 +4,3.931826,0,6.907755,7.600903,0,27.6,0,0,0 +6,3.931826,0,6.907755,7.600903,0,27.6,0,0,0 +10,3.931826,0,6.907755,7.600903,0,27.6,0,0,0 +5,3.931826,0,6.907755,7.600903,0,27.6,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +7,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +16,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +1,0,1,7.122189,5.755076,0,3.4,0,0,0 +1,0,1,7.122189,5.755076,0,3.4,0,0,0 +2,0,1,7.122189,5.755076,0,3.4,0,0,0 +0,0,1,7.122189,5.755076,0,3.4,0,0,0 +5,0,1,7.122189,5.755076,0,3.4,0,0,0 +0,0,1,7.122189,5.755076,0,0,0,0,0 +0,0,1,7.122189,5.755076,0,0,0,0,0 +0,0,1,7.122189,5.755076,0,0,0,0,0 +0,0,1,7.122189,5.755076,0,0,0,0,0 +1,0,1,7.122189,5.755076,0,0,0,0,0 +6,0,1,5.010635,5.061929,0,3.4,0,0,0 +3,0,1,5.010635,5.061929,0,3.4,0,0,0 +5,0,1,5.010635,5.061929,0,3.4,0,0,0 +6,0,1,5.010635,5.061929,0,3.4,0,0,0 +2,0,1,5.010635,5.061929,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +1,4.564348,0,6.907755,6.959049,1,10.3,1,0,0 +5,4.564348,0,6.907755,6.959049,1,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,1,10.3,1,0,0 +5,0,1,0,5.061929,0,6.9,1,0,0 +0,0,1,0,5.061929,0,6.9,1,0,0 +4,0,1,0,5.061929,0,6.9,1,0,0 +3,0,0,0,0,1,37.9,1,0,0 +1,0,0,0,0,1,37.9,1,0,0 +2,0,0,0,0,0,3.4,1,0,0 +3,0,0,0,0,0,3.4,1,0,0 +3,0,0,0,0,0,3.4,1,0,0 +6,0,0,0,0,0,3.4,0,1,0 +2,0,0,0,0,0,3.4,0,1,0 +6,0,0,0,0,0,3.4,0,1,0 +1,3.258096,0,6.612955,7.999249,0,10.3,1,0,0 +2,3.258096,0,6.612955,7.999249,0,10.3,1,0,0 +3,3.258096,0,6.612955,7.999249,0,10.3,1,0,0 +2,3.258096,0,6.612955,7.999249,0,10.3,1,0,0 +0,3.258096,0,6.612955,7.999249,0,10.3,1,0,0 +4,3.258096,0,5.703783,7.090077,1,6.9,0,0,0 +2,3.258096,0,5.703783,7.090077,1,6.9,0,0,0 +1,3.258096,0,5.703783,7.090077,1,6.9,0,0,0 +1,3.258096,0,5.703783,7.090077,1,6.9,0,0,0 +1,3.258096,0,5.703783,7.090077,1,6.9,0,0,0 +3,3.258096,0,5.703783,7.090077,0,10.3,1,0,0 +6,3.258096,0,5.703783,7.090077,0,10.3,1,0,0 +7,3.258096,0,5.703783,7.090077,0,10.3,1,0,0 +3,3.258096,0,5.703783,7.090077,0,10.3,1,0,0 +14,3.258096,0,5.703783,7.090077,0,10.3,1,0,0 +1,3.258096,0,5.703783,7.090077,0,9.967326,0,0,0 +1,3.258096,0,5.703783,7.090077,0,9.967326,0,0,0 +2,3.258096,0,5.703783,7.090077,0,9.967326,0,0,0 +2,3.258096,0,5.703783,7.090077,0,9.967326,0,0,0 +2,3.258096,0,5.703783,7.090077,0,9.967326,0,0,0 +1,4.564348,0,6.123589,6.174882,0,3.4,1,0,0 +0,4.564348,0,6.123589,6.174882,0,3.4,1,0,0 +2,4.564348,0,6.123589,6.174882,0,3.4,1,0,0 +0,4.564348,0,6.123589,6.174882,0,24.1,1,0,0 +0,4.564348,0,6.123589,6.174882,0,24.1,1,0,0 +0,4.564348,0,6.123589,6.174882,0,24.1,1,0,0 +0,4.564348,0,6.123589,6.174882,0,13.8,1,0,0 +0,4.564348,0,6.123589,6.174882,0,13.8,1,0,0 +0,4.564348,0,6.123589,6.174882,0,13.8,1,0,0 +3,4.564348,0,6.123589,6.174882,0,3.4,1,0,0 +0,4.564348,0,6.123589,6.174882,0,3.4,1,0,0 +4,4.564348,0,6.123589,6.174882,0,3.4,1,0,0 +0,4.564348,0,5.416101,5.467394,0,6.9,1,0,0 +0,4.564348,0,5.416101,5.467394,0,6.9,1,0,0 +0,4.564348,0,5.416101,5.467394,0,6.9,1,0,0 +0,4.564348,0,6.802395,6.853688,0,3.4,0,0,0 +0,4.564348,0,6.802395,6.853688,0,3.4,0,0,0 +3,4.564348,0,6.802395,6.853688,0,3.4,0,0,0 +0,4.564348,0,6.802395,6.853688,1,10.3,0,0,0 +5,4.564348,0,6.802395,6.853688,1,10.3,0,0,0 +8,4.564348,0,6.802395,6.853688,1,10.3,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +2,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +14,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +6,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +2,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +7,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +0,3.931826,0,5.741848,4.49981,0,0,0,0,0 +0,3.931826,0,5.741848,4.49981,0,0,0,0,0 +0,3.931826,0,5.741848,4.49981,0,0,0,0,0 +8,0,0,5.741848,0,0,10.3,0,1,0 +11,0,0,5.741848,0,0,10.3,0,1,0 +11,0,0,5.741848,0,0,10.3,0,1,0 +3,0,0,4.836282,0,0,6.9,1,0,0 +11,0,0,4.836282,0,0,6.9,1,0,0 +8,0,0,4.836282,0,0,6.9,1,0,0 +1,0,1,5.913449,5.755076,0,13.8,0,0,0 +0,0,1,5.913449,5.755076,0,13.8,0,0,0 +1,0,1,5.913449,5.755076,0,13.8,0,0,0 +2,0,1,5.913449,5.755076,0,13.8,0,0,0 +0,0,1,5.913449,5.755076,0,13.8,0,0,0 +2,0,1,5.913449,5.755076,0,10.3,1,0,0 +2,0,1,5.913449,5.755076,0,10.3,1,0,0 +1,0,1,5.913449,5.755076,0,10.3,1,0,0 +4,0,1,5.913449,5.755076,0,10.3,1,0,0 +1,0,1,5.913449,5.755076,0,10.3,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +10,0,0,0,0,0,6.9,1,0,0 +12,0,0,0,0,0,6.9,1,0,0 +11,0,0,0,0,0,6.9,1,0,0 +4,0,0,0,0,0,6.9,1,0,0 +7,0,0,5.418764,0,0,9.967326,0,0,0 +3,0,0,5.418764,0,0,9.967326,0,0,0 +0,0,0,5.418764,0,0,9.967326,0,0,0 +5,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +7,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +5,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +2,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,3.258096,0,6.620073,8.006368,0,9.967326,0,0,0 +1,0,1,5.749202,5.755076,0,10.3,0,0,0 +0,0,1,5.749202,5.755076,0,10.3,0,0,0 +1,0,1,5.749202,5.755076,0,10.3,0,0,0 +0,0,1,5.749202,5.755076,0,10.3,0,0,0 +2,0,1,5.749202,5.755076,0,10.3,0,0,0 +6,4.564348,0,6.372978,6.424272,.0268456,9.967326,0,0,0 +3,4.564348,0,6.372978,6.424272,.0268456,9.967326,0,0,0 +2,4.564348,0,6.372978,6.424272,.0268456,9.967326,0,0,0 +3,4.564348,0,6.372978,6.424272,.0268456,9.967326,0,0,0 +2,4.564348,0,6.372978,6.424272,.0268456,9.967326,0,0,0 +1,0,0,6.346478,0,0,0,0,0,0 +2,0,0,6.346478,0,0,0,0,0,0 +1,0,0,6.346478,0,0,0,0,0,0 +5,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +4,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +1,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +2,4.564348,0,6.907755,6.959049,0,9.967326,0,0,0 +0,0,0,3.401197,0,0,6.9,0,0,0 +0,0,0,3.401197,0,0,6.9,0,0,0 +1,0,0,3.401197,0,0,6.9,0,0,0 +4,0,0,3.401197,0,0,6.9,0,0,0 +5,0,0,0,0,1,10.3,0,0,0 +2,0,0,0,0,1,10.3,0,0,0 +3,0,0,0,0,0,10.3,0,0,0 +5,0,0,0,0,0,10.3,0,0,0 +5,0,0,0,0,0,10.3,0,0,0 +5,3.258096,0,6.620073,8.006368,1,37.9,0,0,0 +6,3.258096,0,6.620073,8.006368,1,37.9,0,0,0 +3,3.258096,0,6.620073,8.006368,1,37.9,0,0,0 +2,0,1,5.749202,5.755076,.0268456,9.967326,0,0,0 +3,0,1,5.749202,5.755076,.0268456,9.967326,0,0,0 +1,0,1,5.749202,5.755076,.0268456,9.967326,0,0,0 +3,0,1,5.749202,5.755076,.0268456,9.967326,0,0,0 +7,0,1,5.749202,5.755076,.0268456,9.967326,0,0,0 +0,0,0,0,0,.1572505,9.967326,0,0,0 +7,0,0,0,0,.0268456,9.967326,0,0,0 +4,0,0,0,0,.0268456,9.967326,0,0,0 +7,0,0,0,0,.0268456,9.967326,0,0,0 +2,0,0,0,0,.0268456,9.967326,0,0,0 +13,0,0,6.200184,0,.0268456,9.967326,0,0,0 +4,0,0,6.200184,0,.0268456,9.967326,0,0,0 +1,0,0,6.200184,0,.0268456,9.967326,0,0,0 +5,0,0,6.200184,0,.0268456,9.967326,0,0,0 +5,0,0,6.200184,0,.0268456,9.967326,0,0,0 +12,3.931826,0,6.907755,7.600903,.0268456,9.967326,0,0,0 +4,3.931826,0,6.907755,7.600903,.0268456,9.967326,0,0,0 +6,0,0,0,0,.0268456,9.967326,0,0,0 +7,0,0,0,0,.0268456,9.967326,0,0,0 +2,3.258096,0,5.703783,7.090077,.0268456,9.967326,0,0,0 +2,3.258096,0,5.703783,7.090077,.0268456,9.967326,0,0,0 +5,3.258096,0,5.703783,7.090077,.0268456,9.967326,0,0,0 +2,3.258096,0,5.703783,7.090077,.0268456,9.967326,0,0,0 +4,0,0,0,0,.0268456,9.967326,0,0,0 +3,0,0,0,0,.0268456,9.967326,0,0,0 +18,0,1,6.109248,6.160541,.0268456,9.967326,0,0,0 +13,0,1,6.109248,6.160541,.0268456,9.967326,0,0,0 +9,0,0,0,0,.0268456,9.967326,0,0,0 +10,0,0,0,0,.0268456,9.967326,0,0,0 +7,0,0,0,0,.0268456,9.967326,0,0,0 +7,0,0,0,0,.0268456,9.967326,0,0,0 +5,0,0,0,0,.0268456,9.967326,0,0,0 +4,0,0,0,0,.0268456,9.967326,0,0,0 +2,0,0,0,0,.0268456,9.967326,0,0,0 +4,0,0,0,0,.0268456,9.967326,0,0,0 +6,4.564348,0,6.907555,6.959049,.0268456,9.967326,0,0,0 +2,4.564348,0,6.907555,6.959049,.0268456,9.967326,0,0,0 +4,0,0,5.321057,0,.0268456,9.967326,0,0,0 +3,0,1,6.109248,6.160541,.0268456,9.967326,0,0,0 +3,0,0,0,0,.0268456,9.967326,0,0,0 +5,0,0,0,0,.0268456,9.967326,0,0,0 +3,0,1,5.703783,5.755076,.0268456,9.967326,0,0,0 +2,0,1,5.703783,5.755076,.0268456,9.967326,0,0,0 +1,0,1,5.703783,5.755076,.0268456,9.967326,0,0,0 +20,0,0,0,0,.0268456,9.967326,0,0,0 +6,4.564348,0,6.907755,6.959049,.0268456,9.967326,0,0,0 +1,0,0,0,0,.0268456,9.967326,0,0,0 +11,0,1,5.893411,5.755076,.0268456,9.967326,0,0,0 +7,4.564348,0,0,3.592253,.0268456,9.967326,0,0,0 +2,0,1,5.010635,5.061929,.0268456,9.967326,0,0,0 +3,0,1,5.010635,5.061929,.0268456,9.967326,0,0,0 +1,0,1,5.010635,5.061929,.0268456,9.967326,0,0,0 +7,0,1,5.749202,5.755076,.0268456,9.967326,0,0,0 +2,0,1,5.749202,5.755076,.0268456,9.967326,0,0,0 +1,0,1,5.749202,5.755076,.0268456,9.967326,0,0,0 +0,4.564348,0,5.521461,5.572754,.0268456,9.967326,0,0,0 +8,0,0,0,0,.0268456,9.967326,0,0,0 +3,3.258096,0,6.619806,8.006368,.0268456,9.967326,0,0,0 +7,3.258096,0,6.619806,8.006368,.0268456,9.967326,0,0,0 +7,3.258096,0,5.703783,7.090077,.0268456,9.967326,0,0,0 +2,3.258096,0,5.703783,7.090077,.0268456,9.967326,0,0,0 +4,0,1,5.881984,5.755076,.0268456,9.967326,0,0,0 +0,0,1,5.881984,5.755076,.0268456,9.967326,0,0,0 +6,0,1,5.749202,5.755076,.0268456,9.967326,0,0,0 +2,0,1,5.749202,5.755076,.0268456,9.967326,0,0,0 +7,0,1,0,0,.0268456,9.967326,0,0,0 +6,0,0,0,0,.0268456,9.967326,0,0,0 +8,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +7,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +9,3.258096,0,6.620073,8.006368,0,17.2,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +4,0,0,0,0,0,10.57626,0,0,0 +4,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,1,0 +2,0,0,0,0,0,10.57626,0,1,0 +2,0,0,0,0,0,10.57626,0,1,0 +0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +1,0,1,0,5.755076,1,13.8,0,1,0 +3,0,1,0,5.755076,1,13.8,0,1,0 +0,0,1,0,5.755076,1,13.8,0,1,0 +0,0,1,0,5.755076,1,13.8,0,1,0 +2,0,1,0,5.755076,1,13.8,0,1,0 +0,0,1,0,5.755076,0,6.9,0,0,0 +0,0,1,0,5.755076,0,6.9,0,0,0 +0,0,1,0,5.755076,0,6.9,0,0,0 +0,0,1,0,5.755076,0,6.9,0,0,0 +0,0,1,0,5.755076,0,6.9,0,0,0 +3,0,0,0,0,0,20.7,0,0,0 +1,0,0,0,0,0,20.7,0,0,0 +0,0,0,0,0,0,20.7,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +2,0,0,0,0,0,31,0,1,0 +2,0,0,0,0,0,31,0,1,0 +2,0,0,0,0,0,31,0,1,0 +1,0,0,0,0,0,31,0,1,0 +7,0,0,0,0,0,31,0,1,0 +3,0,0,0,0,1,27.6,0,0,1 +5,0,0,0,0,1,27.6,0,0,1 +4,0,0,0,0,1,27.6,0,0,1 +8,0,0,0,0,1,27.6,0,0,1 +9,0,0,0,0,1,27.6,0,0,1 +9,0,0,0,0,0,3.4,1,0,0 +5,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +2,0,0,0,0,0,3.4,1,0,0 +8,0,0,0,0,0,3.4,1,0,0 +3,3.258096,0,6.620073,8.006368,1,24.1,0,1,0 +7,3.258096,0,6.620073,8.006368,1,24.1,0,1,0 +6,3.258096,0,6.620073,8.006368,1,24.1,0,1,0 +2,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +3,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +5,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.3,0,0,0 +0,3.258096,0,0,6.866933,0,3.4,1,0,0 +0,3.258096,0,0,6.866933,0,3.4,1,0,0 +2,3.258096,0,0,6.866933,0,3.4,1,0,0 +1,0,1,0,5.061929,0,20.7,1,0,0 +3,0,1,0,5.061929,0,20.7,1,0,0 +1,0,1,0,5.061929,0,20.7,1,0,0 +0,0,0,0,0,1,27.6,0,0,1 +0,0,0,0,0,1,27.6,0,0,1 +0,0,0,0,0,1,27.6,0,0,1 +2,0,0,0,0,1,27.6,0,0,1 +0,0,0,0,0,1,27.6,0,0,1 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +2,0,0,2.484907,0,0,17.2,0,0,0 +1,0,0,2.484907,0,0,17.2,0,0,0 +8,0,0,2.484907,0,0,17.2,0,0,0 +4,0,0,2.484907,0,0,17.2,0,0,0 +3,0,0,2.484907,0,0,17.2,0,0,0 +4,0,1,6.761573,6.160541,0,10.3,0,1,0 +1,0,1,6.761573,6.160541,0,10.3,0,1,0 +0,0,1,6.761573,6.160541,0,10.57626,0,0,0 +1,0,1,6.761573,6.160541,0,10.57626,0,0,0 +2,0,1,6.761573,6.160541,0,10.57626,0,0,0 +0,0,1,6.761573,6.160541,0,10.57626,0,0,0 +6,0,1,6.761573,6.160541,1,6.9,0,1,0 +0,0,1,6.761573,6.160541,1,6.9,0,1,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,3.4,1,0,0 +0,0,1,0,6.160541,0,3.4,1,0,0 +0,0,1,0,6.160541,0,3.4,1,0,0 +0,0,1,0,6.160541,0,6.9,1,0,0 +13,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +2,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +5,0,1,6.109248,6.160541,0,6.9,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +5,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +5,0,1,6.109248,6.160541,0,20.7,1,0,0 +3,0,1,6.109248,6.160541,0,20.7,1,0,0 +4,0,1,6.109248,6.160541,0,20.7,1,0,0 +6,0,1,6.109248,6.160541,0,20.7,1,0,0 +3,0,1,6.109248,6.160541,0,20.7,1,0,0 +0,4.564348,0,5.991465,6.042758,0,6.9,0,1,0 +0,4.564348,0,5.991465,6.042758,0,6.9,0,1,0 +0,4.564348,0,5.991465,6.042758,0,6.9,0,1,0 +0,4.564348,0,5.991465,6.042758,0,10.57626,0,0,0 +0,4.564348,0,5.991465,6.042758,0,10.57626,0,0,0 +0,4.564348,0,5.991465,6.042758,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,17.2,0,1,0 +3,0,1,6.109248,6.160541,0,17.2,0,1,0 +0,0,1,6.109248,6.160541,0,17.2,0,1,0 +0,0,1,6.109248,6.160541,0,17.2,0,1,0 +2,0,1,6.109248,6.160541,0,17.2,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +2,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +4,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +4,0,1,5.010635,5.061929,0,10.3,1,0,0 +2,0,1,5.010635,5.061929,0,10.3,1,0,0 +5,0,1,5.010635,5.061929,0,10.3,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +6,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +3,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,24.1,0,1,0 +2,0,0,0,0,0,24.1,0,1,0 +8,0,0,0,0,0,24.1,0,1,0 +12,0,0,0,0,0,24.1,0,1,0 +16,0,0,0,0,0,24.1,0,1,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.3,1,0,0 +2,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +3,0,0,0,0,0,10.3,1,0,0 +7,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +0,0,0,5.970139,0,0,3.4,0,0,0 +0,0,0,5.970139,0,0,3.4,0,0,0 +1,0,0,5.970139,0,0,3.4,0,0,0 +1,0,0,5.970139,0,0,3.4,0,0,0 +0,0,0,5.970139,0,0,3.4,0,0,0 +0,0,0,5.970139,0,0,0,1,0,0 +0,0,0,5.970139,0,0,0,1,0,0 +0,0,0,5.970139,0,0,0,1,0,0 +0,0,0,5.970139,0,0,0,1,0,0 +0,0,0,5.970139,0,0,0,1,0,0 +0,0,0,5.970139,0,0,10.57626,0,0,0 +0,0,0,5.970139,0,0,10.57626,0,0,0 +0,0,0,5.970139,0,0,10.57626,0,0,0 +0,0,0,5.970139,0,0,10.57626,0,0,0 +0,0,0,5.970139,0,0,10.57626,0,0,0 +1,0,0,5.970139,0,0,10.57626,1,0,0 +0,0,0,5.970139,0,0,10.57626,1,0,0 +0,0,0,5.970139,0,0,10.57626,1,0,0 +0,0,0,5.970139,0,0,10.57626,1,0,0 +0,0,0,5.970139,0,0,10.57626,1,0,0 +0,0,0,5.970139,0,0,10.57626,1,0,0 +0,0,0,5.970139,0,0,10.57626,1,0,0 +0,0,0,5.970139,0,0,10.57626,1,0,0 +0,0,0,5.970139,0,0,10.57626,1,0,0 +0,0,0,5.970139,0,0,10.57626,1,0,0 +5,0,1,6.109248,6.160541,0,20.7,0,0,0 +3,0,1,6.109248,6.160541,0,20.7,0,0,0 +3,0,1,6.109248,6.160541,0,20.7,0,0,0 +4,0,1,6.109248,6.160541,0,13.8,0,0,0 +1,0,1,6.109248,6.160541,0,13.8,0,0,0 +4,0,1,6.109248,6.160541,0,13.8,0,0,0 +5,0,0,6.240744,0,0,3.4,1,0,0 +7,0,0,6.240744,0,0,3.4,1,0,0 +4,0,0,6.240744,0,0,3.4,1,0,0 +1,0,0,6.240744,0,0,3.4,1,0,0 +1,0,0,6.240744,0,0,3.4,1,0,0 +11,0,0,6.240744,0,0,10.57626,1,0,0 +15,0,0,6.240744,0,0,10.57626,1,0,0 +6,0,0,6.240744,0,0,10.57626,1,0,0 +2,0,0,6.240744,0,0,10.57626,1,0,0 +2,0,0,6.240744,0,0,10.57626,1,0,0 +13,0,0,6.240744,0,0,10.57626,1,0,0 +17,0,0,6.240744,0,0,10.57626,1,0,0 +10,0,0,6.240744,0,0,10.57626,1,0,0 +13,0,0,6.240744,0,0,10.57626,1,0,0 +11,0,0,6.240744,0,0,10.57626,1,0,0 +5,0,0,6.240744,0,0,3.4,1,0,0 +7,0,0,6.240744,0,0,3.4,1,0,0 +5,0,0,6.240744,0,0,3.4,1,0,0 +4,0,0,6.240744,0,0,3.4,1,0,0 +3,0,0,6.240744,0,0,3.4,1,0,0 +7,0,1,5.703783,5.755076,0,13.8,1,0,0 +9,0,1,5.703783,5.755076,0,13.8,1,0,0 +11,0,1,5.703783,5.755076,0,13.8,1,0,0 +1,0,1,5.703783,5.755076,0,3.4,1,0,0 +2,0,1,5.703783,5.755076,0,3.4,1,0,0 +0,0,1,5.703783,5.755076,0,3.4,1,0,0 +0,0,1,5.010635,5.061929,0,3.4,1,0,0 +0,0,1,5.010635,5.061929,0,3.4,1,0,0 +0,0,1,5.010635,5.061929,0,3.4,1,0,0 +0,3.258096,0,6.471356,5.771441,0,10.57626,1,0,0 +0,3.258096,0,6.471356,5.771441,0,10.57626,1,0,0 +0,3.258096,0,6.471356,5.771441,0,10.57626,1,0,0 +0,3.258096,0,6.471356,5.771441,0,0,0,1,0 +1,3.258096,0,6.471356,5.771441,0,0,0,1,0 +0,3.258096,0,6.471356,5.771441,0,0,0,1,0 +0,3.258096,0,6.471356,5.771441,0,3.4,1,0,0 +0,3.258096,0,6.471356,5.771441,0,3.4,1,0,0 +0,3.258096,0,6.471356,5.771441,0,3.4,1,0,0 +0,3.258096,0,6.471356,5.771441,0,10.57626,1,0,0 +0,3.258096,0,6.471356,5.771441,0,10.57626,1,0,0 +0,3.258096,0,6.471356,5.771441,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +1,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +5,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +4,0,0,0,0,0,3.4,1,0,0 +1,4.564348,0,7.06732,6.675624,0,10.57626,0,0,0 +1,4.564348,0,7.06732,6.675624,0,10.57626,0,0,0 +0,4.564348,0,7.06732,6.675624,0,10.57626,0,0,0 +5,4.564348,0,7.06732,6.675624,0,10.57626,0,0,0 +8,4.564348,0,7.06732,6.675624,0,10.57626,0,0,0 +5,4.564348,0,7.06732,6.675624,0,13.8,0,0,0 +4,4.564348,0,7.06732,6.675624,0,13.8,0,0,0 +4,4.564348,0,7.06732,6.675624,0,13.8,0,0,0 +6,4.564348,0,7.06732,6.675624,0,13.8,0,0,0 +4,4.564348,0,7.06732,6.675624,0,13.8,0,0,0 +2,4.564348,0,7.06732,6.675624,0,3.4,0,0,0 +0,4.564348,0,7.06732,6.675624,0,3.4,0,0,0 +0,4.564348,0,7.06732,6.675624,0,3.4,0,0,0 +0,4.564348,0,7.06732,6.675624,0,3.4,0,0,0 +0,4.564348,0,7.06732,6.675624,0,3.4,0,0,0 +5,4.564348,0,7.06732,6.675624,1,10.57626,0,0,0 +9,4.564348,0,7.06732,6.675624,1,10.57626,0,0,0 +3,4.564348,0,7.06732,6.675624,1,10.57626,0,0,0 +4,4.564348,0,7.06732,6.675624,1,10.57626,0,0,0 +4,4.564348,0,7.06732,6.675624,1,10.57626,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +5,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +5,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +1,0,0,5.009835,0,0,0,1,0,0 +2,0,0,5.009835,0,0,0,1,0,0 +0,0,0,5.009835,0,0,0,1,0,0 +0,0,0,5.009835,0,0,6.9,0,0,0 +0,0,0,5.009835,0,0,6.9,0,0,0 +0,0,0,5.009835,0,0,6.9,0,0,0 +2,0,0,3.401197,0,0,10.57626,0,0,0 +4,0,0,3.401197,0,0,10.57626,0,0,0 +2,0,0,3.401197,0,0,10.57626,0,0,0 +7,0,0,3.401197,0,0,17.2,1,0,0 +3,0,0,3.401197,0,0,17.2,1,0,0 +2,0,0,3.401197,0,0,17.2,1,0,0 +11,0,0,3.401197,0,0,10.57626,1,0,0 +14,0,0,3.401197,0,0,10.57626,1,0,0 +14,0,0,3.401197,0,0,10.57626,1,0,0 +0,0,0,3.401197,0,0,13.8,1,0,0 +0,0,0,3.401197,0,0,13.8,1,0,0 +1,0,0,3.401197,0,0,13.8,1,0,0 +2,0,0,3.401197,0,0,3.4,0,0,0 +1,0,0,3.401197,0,0,3.4,0,0,0 +2,0,0,3.401197,0,0,3.4,0,0,0 +13,4.564348,0,6.907755,6.959049,0,24.1,0,0,0 +3,4.564348,0,6.907755,6.959049,0,24.1,0,0,0 +9,4.564348,0,6.907755,6.959049,0,24.1,0,0,0 +4,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +4,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +8,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +2,3.258096,0,6.620073,8.006368,1,27.6,0,0,0 +3,3.258096,0,6.620073,8.006368,1,27.6,0,0,0 +2,3.258096,0,6.620073,8.006368,1,27.6,0,0,0 +1,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +0,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +0,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +5,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +5,0,1,6.109248,6.160541,0,17.2,0,0,0 +1,0,1,6.109248,6.160541,0,17.2,0,0,0 +2,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,4.564348,0,6.537792,6.282464,0,10.57626,1,0,0 +0,4.564348,0,6.537792,6.282464,1,10.3,1,0,0 +0,4.564348,0,6.537792,6.282464,1,10.3,1,0,0 +0,4.564348,0,6.537792,6.282464,0,10.3,1,0,0 +0,4.564348,0,6.537792,6.282464,0,10.3,1,0,0 +0,4.564348,0,6.537792,6.282464,1,10.3,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +4,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +0,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +2,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +1,4.564348,0,6.235587,6.28688,0,10.57626,0,0,0 +0,4.564348,0,6.235587,6.28688,0,10.57626,0,0,0 +0,4.564348,0,6.235587,6.28688,0,10.57626,0,0,0 +0,4.564348,0,6.235587,6.28688,0,10.57626,0,0,0 +0,4.564348,0,6.235587,6.28688,0,10.57626,0,0,0 +6,4.564348,0,6.235587,6.28688,0,10.57626,0,0,0 +0,4.564348,0,6.235587,6.28688,0,0,0,0,0 +1,4.564348,0,6.235587,6.28688,0,0,0,0,0 +3,4.564348,0,6.235587,6.28688,0,0,0,0,0 +0,4.564348,0,6.235587,6.28688,0,6.9,1,0,0 +0,4.564348,0,6.235587,6.28688,0,6.9,1,0,0 +1,4.564348,0,6.235587,6.28688,0,6.9,1,0,0 +0,4.564348,0,6.235587,6.28688,0,10.57626,0,0,0 +0,4.564348,0,6.235587,6.28688,0,10.57626,0,0,0 +0,4.564348,0,6.235587,6.28688,0,10.57626,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +1,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +2,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +6,4.564348,0,6.907755,6.959049,1,20.7,1,0,0 +2,4.564348,0,6.907755,6.959049,1,20.7,1,0,0 +1,4.564348,0,6.907755,6.959049,1,20.7,1,0,0 +7,4.564348,0,6.907755,6.959049,1,20.7,1,0,0 +15,4.564348,0,6.907755,6.959049,1,20.7,1,0,0 +2,4.564348,0,0,5.714254,1,13.8,1,0,0 +1,4.564348,0,0,5.714254,1,13.8,1,0,0 +4,4.564348,0,0,5.714254,1,13.8,1,0,0 +0,4.564348,0,4.959693,5.010986,1,6.9,1,0,0 +0,4.564348,0,4.959693,5.010986,1,6.9,1,0,0 +0,4.564348,0,4.959693,5.010986,1,6.9,1,0,0 +0,4.564348,0,4.959693,5.010986,1,13.8,0,0,0 +0,4.564348,0,4.959693,5.010986,1,13.8,0,0,0 +0,4.564348,0,4.959693,5.010986,1,13.8,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +2,0,0,0,0,0,10.3,0,0,0 +4,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,0,1,0 +0,0,0,0,0,0,10.57626,0,1,0 +0,0,0,0,0,0,10.57626,0,1,0 +0,0,0,4.992878,0,.1442925,10.57626,0,0,0 +0,0,0,4.992878,0,.1442925,10.57626,0,0,0 +0,0,0,4.992878,0,.1442925,10.57626,0,0,0 +0,0,0,4.992878,0,1,6.9,1,0,0 +0,0,0,4.992878,0,1,6.9,1,0,0 +0,0,0,4.992878,0,1,6.9,1,0,0 +0,0,0,4.992878,0,.1442925,10.57626,0,0,0 +4,0,0,4.992878,0,.1442925,10.57626,0,0,0 +0,0,0,4.992878,0,.1442925,10.57626,0,0,0 +0,0,0,4.992878,0,0,13.8,1,0,0 +0,0,0,4.992878,0,0,13.8,1,0,0 +0,0,0,4.992878,0,0,13.8,1,0,0 +0,4.564348,0,5.172754,5.224048,0,10.3,1,0,0 +0,4.564348,0,5.172754,5.224048,0,10.3,1,0,0 +0,4.564348,0,5.172754,5.224048,0,10.3,1,0,0 +0,4.564348,0,5.172754,5.224048,.1442925,10.57626,1,0,0 +0,4.564348,0,5.172754,5.224048,.1442925,10.57626,1,0,0 +0,4.564348,0,5.172754,5.224048,.1442925,10.57626,1,0,0 +0,4.564348,0,5.172754,5.224048,.1442925,10.57626,0,0,0 +0,4.564348,0,5.172754,5.224048,.1442925,10.57626,0,0,0 +0,4.564348,0,5.172754,5.224048,.1442925,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +12,0,0,6.471356,0,0,3.4,0,0,0 +10,0,0,6.471356,0,0,3.4,0,0,0 +10,0,0,6.471356,0,0,3.4,0,0,0 +8,0,0,6.471356,0,1,10.3,0,0,0 +2,0,0,6.471356,0,1,10.3,0,0,0 +7,0,0,6.471356,0,1,10.3,0,0,0 +0,0,0,6.471356,0,0,10.57626,0,0,0 +1,0,0,6.471356,0,0,10.57626,0,0,0 +1,0,0,6.471356,0,0,10.57626,0,0,0 +4,0,0,6.471356,0,0,10.57626,0,0,0 +2,0,0,6.471356,0,0,10.57626,0,0,0 +5,0,0,6.471356,0,0,10.57626,0,0,0 +8,0,0,6.471356,0,0,10.57626,0,0,0 +3,0,0,6.471356,0,0,10.57626,0,0,0 +2,0,0,6.471356,0,0,10.57626,0,0,0 +0,3.258096,0,5.810392,7.196687,0,0,0,0,0 +0,3.258096,0,5.810392,7.196687,0,0,0,0,0 +0,3.258096,0,5.810392,7.196687,0,0,0,0,0 +0,3.258096,0,5.810392,7.196687,0,0,0,0,0 +0,3.258096,0,5.810392,7.196687,0,0,0,0,0 +0,3.258096,0,5.810392,7.196687,0,10.57626,0,1,0 +0,3.258096,0,5.810392,7.196687,0,10.57626,0,1,0 +0,3.258096,0,5.810392,7.196687,0,10.57626,0,1,0 +0,3.258096,0,5.810392,7.196687,0,10.57626,0,1,0 +0,3.258096,0,5.810392,7.196687,0,10.57626,0,1,0 +0,3.258096,0,5.810392,7.196687,0,6.9,0,1,0 +0,3.258096,0,5.810392,7.196687,0,6.9,0,1,0 +0,3.258096,0,5.810392,7.196687,0,6.9,0,1,0 +0,3.258096,0,5.810392,7.196687,0,6.9,0,1,0 +0,3.258096,0,5.810392,7.196687,0,6.9,0,1,0 +0,3.258096,0,5.810392,7.196687,0,10.57626,1,0,0 +0,3.258096,0,5.810392,7.196687,0,10.57626,1,0,0 +0,3.258096,0,5.810392,7.196687,0,10.57626,1,0,0 +2,3.258096,0,5.810392,7.196687,0,10.57626,1,0,0 +0,3.258096,0,5.810392,7.196687,0,10.57626,1,0,0 +0,3.258096,0,5.810392,7.196687,0,10.57626,1,0,0 +0,3.258096,0,5.810392,7.196687,0,10.57626,1,0,0 +0,3.258096,0,5.810392,7.196687,0,10.57626,1,0,0 +0,3.258096,0,5.810392,7.196687,0,10.57626,1,0,0 +0,3.258096,0,5.810392,7.196687,0,10.57626,1,0,0 +0,3.258096,0,5.810392,7.196687,0,3.4,0,1,0 +0,3.258096,0,5.810392,7.196687,0,3.4,0,1,0 +0,3.258096,0,5.810392,7.196687,0,3.4,0,1,0 +0,3.258096,0,5.810392,7.196687,0,3.4,0,1,0 +1,3.258096,0,5.810392,7.196687,0,3.4,0,1,0 +0,3.258096,0,5.810392,7.196687,0,0,0,1,0 +1,3.258096,0,5.810392,7.196687,0,0,0,1,0 +0,3.258096,0,5.810392,7.196687,0,0,0,1,0 +0,3.258096,0,5.810392,7.196687,0,0,0,1,0 +0,3.258096,0,5.810392,7.196687,0,0,0,1,0 +0,3.258096,0,5.810392,7.196687,0,3.4,1,0,0 +0,3.258096,0,5.810392,7.196687,0,3.4,1,0,0 +0,3.258096,0,5.810392,7.196687,0,3.4,1,0,0 +0,3.258096,0,5.810392,7.196687,0,3.4,1,0,0 +0,3.258096,0,5.810392,7.196687,0,3.4,1,0,0 +0,0,0,5.731462,0,0,0,0,0,0 +1,0,0,5.731462,0,0,0,0,0,0 +4,0,0,5.731462,0,0,0,0,0,0 +1,0,0,5.731462,0,0,13.8,0,1,0 +1,0,0,5.731462,0,0,13.8,0,1,0 +2,0,0,5.731462,0,0,13.8,0,1,0 +0,0,0,7.080969,0,0,10.3,1,0,0 +1,0,0,7.080969,0,0,10.3,1,0,0 +4,0,0,7.080969,0,0,10.3,1,0,0 +0,0,0,7.080969,0,.1442925,10.57626,1,0,0 +1,0,0,7.080969,0,.1442925,10.57626,1,0,0 +1,0,0,7.080969,0,.1442925,10.57626,1,0,0 +0,0,0,7.080969,0,0,0,1,0,0 +1,0,0,7.080969,0,0,0,1,0,0 +0,0,0,7.080969,0,0,0,1,0,0 +4,0,0,7.080969,0,0,3.4,1,0,0 +2,0,0,7.080969,0,0,3.4,1,0,0 +3,0,0,7.080969,0,0,3.4,1,0,0 +0,3.258096,0,0,8.006368,1,27.6,0,1,0 +0,3.258096,0,0,8.006368,1,27.6,0,1,0 +0,3.258096,0,0,8.006368,1,27.6,0,1,0 +4,3.258096,0,0,8.006368,1,27.6,0,1,0 +1,3.258096,0,0,8.006368,1,27.6,0,1,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +4,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +13,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +0,4.564348,0,6.907755,6.959049,1,6.9,1,0,0 +2,4.564348,0,6.907755,6.959049,1,6.9,1,0,0 +1,4.564348,0,6.907755,6.959049,1,6.9,1,0,0 +0,0,0,3.809326,0,0,10.3,0,0,0 +0,0,0,3.809326,0,0,10.3,0,0,0 +0,0,0,3.809326,0,0,10.3,0,0,0 +0,0,0,3.809326,0,0,10.3,0,0,0 +1,0,0,3.809326,0,0,10.3,0,0,0 +1,0,0,3.809326,0,0,6.9,0,0,0 +1,0,0,3.809326,0,0,6.9,0,0,0 +0,0,0,3.809326,0,0,6.9,0,0,0 +0,0,0,3.809326,0,0,6.9,0,0,0 +2,0,0,3.809326,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +1,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +2,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +2,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +1,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +3,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +1,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +1,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,1,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,1,10.3,1,0,0 +2,4.564348,0,6.907755,6.959049,1,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +3,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +6,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +5,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +1,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +4,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +5,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +0,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +0,3.931826,0,0,7.600903,1,20.7,0,1,0 +0,3.931826,0,0,7.600903,1,20.7,0,1,0 +0,3.931826,0,0,7.600903,1,20.7,0,1,0 +0,3.931826,0,0,7.600903,0,3.4,0,0,0 +0,3.931826,0,0,7.600903,0,3.4,0,0,0 +0,3.931826,0,0,7.600903,0,3.4,0,0,0 +1,3.931826,0,0,7.600903,0,13.8,1,0,0 +1,3.931826,0,0,7.600903,0,13.8,1,0,0 +0,3.931826,0,0,7.600903,0,13.8,1,0,0 +0,0,1,0,6.160541,0,6.9,1,0,0 +0,0,1,0,6.160541,0,6.9,1,0,0 +0,0,1,0,6.160541,0,6.9,1,0,0 +0,0,1,0,6.160541,0,6.9,1,0,0 +0,0,1,0,6.160541,0,6.9,1,0,0 +1,0,1,0,6.160541,1,20.7,0,0,1 +0,0,1,0,6.160541,1,20.7,0,0,1 +0,0,1,0,6.160541,1,20.7,0,0,1 +0,0,1,0,6.160541,1,20.7,0,0,1 +0,0,1,0,6.160541,1,20.7,0,0,1 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,0,6.384047,0,0,10.57626,0,0,0 +3,0,0,6.384047,0,0,10.57626,0,0,0 +1,0,0,6.384047,0,0,10.57626,0,0,0 +1,0,0,6.384047,0,0,0,1,0,0 +2,0,0,6.384047,0,0,0,1,0,0 +1,0,0,6.384047,0,0,0,1,0,0 +1,0,0,6.384047,0,0,13.8,1,0,0 +4,0,0,6.384047,0,0,13.8,1,0,0 +1,0,0,6.384047,0,0,13.8,1,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,0,0,0,0,0,3.4,0,1,0 +1,0,0,0,0,0,3.4,0,1,0 +0,0,0,0,0,0,3.4,0,1,0 +7,0,0,6.437399,0,1,37.9,0,1,0 +5,0,0,6.437399,0,1,37.9,0,1,0 +6,0,0,6.437399,0,1,37.9,0,1,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +4,0,0,0,0,0,10.57626,1,0,0 +3,0,0,0,0,0,10.57626,1,0,0 +5,0,0,0,0,0,10.57626,1,0,0 +9,0,0,6.437399,0,0,17.2,1,0,0 +3,0,0,6.437399,0,0,17.2,1,0,0 +5,0,0,6.437399,0,0,17.2,1,0,0 +2,0,0,0,0,1,13.8,1,0,0 +2,0,0,0,0,1,13.8,1,0,0 +1,0,0,0,0,1,13.8,1,0,0 +2,0,0,6.437399,0,0,0,0,1,0 +2,0,1,6.109248,6.160541,1,10.3,1,0,0 +2,0,1,6.109248,6.160541,1,10.3,1,0,0 +6,0,1,6.109248,6.160541,1,10.3,1,0,0 +5,0,1,6.109248,6.160541,0,10.57626,0,0,0 +3,0,1,6.109248,6.160541,0,10.57626,0,0,0 +4,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,1,0,0,0,0 +3,0,1,6.109248,6.160541,1,0,0,0,0 +0,0,1,6.109248,6.160541,1,0,0,0,0 +4,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +2,0,1,6.109248,6.160541,0,10.3,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +6,0,1,6.109248,6.160541,0,3.4,0,0,0 +3,0,1,6.109248,6.160541,0,3.4,0,0,0 +8,0,1,6.109248,6.160541,0,3.4,0,0,0 +9,0,0,6.148468,0,1,58.6,0,0,1 +1,0,0,6.148468,0,1,58.6,0,0,1 +7,0,0,6.148468,0,1,58.6,0,0,1 +19,0,0,6.148468,0,1,58.6,0,0,1 +21,0,0,6.148468,0,1,58.6,0,0,1 +1,0,0,6.148468,0,0,10.3,0,1,0 +0,0,0,6.148468,0,0,10.3,0,1,0 +1,0,0,6.148468,0,0,10.3,0,1,0 +0,0,0,6.148468,0,0,10.3,0,1,0 +2,0,0,6.148468,0,0,6.9,0,0,1 +0,0,0,6.148468,0,0,6.9,0,0,1 +0,0,0,6.148468,0,0,6.9,0,0,1 +4,0,0,6.148468,0,0,6.9,0,0,1 +7,0,0,6.148468,0,0,6.9,0,0,1 +0,0,0,6.148468,0,0,3.4,0,0,0 +0,0,0,6.148468,0,0,3.4,0,0,0 +0,0,0,6.148468,0,0,3.4,0,0,0 +0,0,0,6.148468,0,0,3.4,0,0,0 +1,0,0,6.148468,0,0,3.4,0,0,0 +0,0,0,4.032469,0,1,0,0,0,0 +0,0,0,4.032469,0,1,0,0,0,0 +0,0,0,4.032469,0,1,0,0,0,0 +3,0,0,0,0,0,13.8,0,0,0 +3,0,0,0,0,0,13.8,0,0,0 +2,0,0,0,0,0,13.8,0,0,0 +2,0,0,0,0,0,13.8,0,0,0 +2,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,20.7,0,0,0 +3,0,0,0,0,0,20.7,0,0,0 +1,0,0,0,0,0,20.7,0,0,0 +1,0,0,0,0,0,20.7,0,0,0 +2,3.258096,0,5.646683,7.032977,0,3.4,0,0,0 +0,3.258096,0,5.646683,7.032977,0,3.4,0,0,0 +4,3.258096,0,5.646683,7.032977,0,3.4,0,0,0 +2,3.258096,0,5.646683,7.032977,0,10.57626,0,0,0 +2,3.258096,0,5.646683,7.032977,0,10.57626,0,0,0 +12,3.258096,0,5.646683,7.032977,0,10.57626,0,0,0 +0,3.258096,0,5.646683,7.032977,0,3.4,0,0,0 +0,3.258096,0,5.646683,7.032977,0,3.4,0,0,0 +2,3.258096,0,5.646683,7.032977,0,3.4,0,0,0 +3,0,0,5.879527,0,0,6.9,1,0,0 +4,0,0,5.879527,0,0,6.9,1,0,0 +1,0,0,5.879527,0,0,6.9,1,0,0 +0,0,0,5.879527,0,0,6.9,1,0,0 +0,0,0,5.879527,0,0,6.9,1,0,0 +0,0,0,5.879527,0,0,10.3,1,0,0 +3,0,0,5.879527,0,0,10.3,1,0,0 +0,0,0,5.879527,0,0,10.3,1,0,0 +0,0,0,5.879527,0,0,10.3,1,0,0 +0,0,0,5.879527,0,0,10.3,1,0,0 +2,0,0,5.879527,0,0,10.57626,0,0,0 +4,0,0,5.879527,0,0,10.57626,0,0,0 +3,0,0,5.879527,0,0,10.57626,0,0,0 +5,0,0,5.879527,0,0,10.57626,0,0,0 +0,0,0,5.879527,0,0,10.57626,0,0,0 +1,0,0,0,0,0,17.2,1,0,0 +5,0,0,0,0,0,17.2,1,0,0 +0,0,0,0,0,0,17.2,1,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +3,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,0,0,0,0,0,10.3,0,1,0 +0,0,0,0,0,0,10.3,0,1,0 +0,0,0,0,0,0,10.3,0,1,0 +2,0,0,0,0,0,10.3,0,1,0 +3,0,0,0,0,0,10.3,0,1,0 +3,0,0,0,0,0,10.3,0,1,0 +3,0,0,0,0,0,10.3,0,1,0 +1,0,0,0,0,0,10.3,0,1,0 +0,0,0,0,0,1,3.4,1,0,0 +4,0,0,0,0,1,3.4,1,0,0 +1,0,0,0,0,1,3.4,1,0,0 +1,0,0,0,0,1,3.4,1,0,0 +3,0,0,0,0,1,3.4,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +3,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +2,0,0,0,0,0,17.2,0,0,0 +0,0,0,0,0,0,17.2,0,0,0 +0,0,0,0,0,0,17.2,0,0,0 +3,0,0,0,0,0,6.9,0,0,1 +1,0,0,0,0,0,6.9,0,0,1 +5,0,0,0,0,0,6.9,0,0,1 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +4,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,1,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,1,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,1,17.2,1,0,0 +0,0,1,6.109248,6.160541,1,17.2,1,0,0 +0,0,1,6.109248,6.160541,1,17.2,1,0,0 +2,0,1,6.368736,5.755076,0,10.3,1,0,0 +0,0,1,6.368736,5.755076,0,10.3,1,0,0 +3,0,1,6.368736,5.755076,0,10.3,1,0,0 +1,0,1,6.368736,5.755076,0,6.9,0,0,0 +0,0,1,6.368736,5.755076,0,6.9,0,0,0 +2,0,1,6.368736,5.755076,0,6.9,0,0,0 +1,0,1,6.651572,5.755076,0,13.8,0,0,0 +1,0,1,6.651572,5.755076,0,13.8,0,0,0 +5,0,1,6.651572,5.755076,0,13.8,0,0,0 +2,0,1,6.651572,5.755076,0,13.8,0,0,0 +4,0,1,6.651572,5.755076,0,13.8,0,0,0 +0,0,1,6.651572,5.755076,0,10.57626,0,0,0 +3,0,1,6.651572,5.755076,0,10.57626,0,0,0 +4,0,1,6.651572,5.755076,0,10.57626,0,0,0 +2,0,1,6.651572,5.755076,0,10.57626,0,0,0 +1,0,1,6.651572,5.755076,0,10.57626,0,0,0 +0,3.258096,0,6.55108,7.937375,0,10.57626,0,0,0 +0,3.258096,0,6.55108,7.937375,0,10.57626,0,0,0 +0,3.258096,0,6.55108,7.937375,0,3.4,0,0,0 +1,3.258096,0,6.55108,7.937375,0,3.4,0,0,0 +0,3.258096,0,6.55108,7.937375,0,10.57626,0,0,0 +2,3.258096,0,6.55108,7.937375,0,10.57626,0,0,0 +1,3.258096,0,6.55108,7.937375,0,10.57626,0,0,0 +0,3.258096,0,6.55108,7.937375,0,10.57626,0,0,0 +2,3.258096,0,6.55108,7.937375,0,10.57626,0,0,0 +1,3.258096,0,6.55108,7.937375,0,10.57626,0,0,0 +3,3.258096,0,6.55108,7.937375,0,10.57626,0,0,0 +0,3.258096,0,6.55108,7.937375,0,10.57626,0,0,0 +0,3.258096,0,6.55108,7.937375,0,10.57626,0,0,0 +0,3.258096,0,6.55108,7.937375,0,10.57626,0,0,0 +0,3.258096,0,6.55108,7.937375,0,10.57626,0,0,0 +0,3.258096,0,6.55108,7.937375,0,10.57626,0,0,0 +1,3.258096,0,6.55108,7.937375,1,17.2,0,1,0 +2,3.258096,0,6.55108,7.937375,1,17.2,0,1,0 +2,3.258096,0,6.55108,7.937375,1,17.2,0,1,0 +3,3.258096,0,6.55108,7.937375,1,17.2,0,1,0 +3,3.258096,0,6.55108,7.937375,0,10.3,0,0,0 +2,3.258096,0,6.55108,7.937375,0,10.3,0,0,0 +1,3.258096,0,6.55108,7.937375,0,10.3,0,0,0 +0,3.258096,0,6.55108,7.937375,0,10.3,0,0,0 +5,0,0,6.031934,0,.1442925,10.57626,0,0,0 +2,0,0,6.031934,0,.1442925,10.57626,0,0,0 +4,0,0,6.031934,0,.1442925,10.57626,0,0,0 +2,0,0,6.031934,0,.1442925,10.57626,0,0,0 +1,0,0,6.031934,0,.1442925,10.57626,0,0,0 +2,0,0,6.031934,0,.1442925,10.57626,0,0,0 +5,0,1,6.183674,6.160541,0,3.4,0,0,0 +0,0,1,6.183674,6.160541,0,3.4,0,0,0 +0,0,1,6.183674,6.160541,0,3.4,0,0,0 +5,0,1,6.183674,6.160541,0,3.4,0,0,0 +0,0,1,6.183674,6.160541,0,3.4,0,0,0 +0,0,1,6.183674,6.160541,0,3.4,0,0,0 +8,0,1,6.183674,6.160541,0,10.3,1,0,0 +1,0,1,6.183674,6.160541,0,10.3,1,0,0 +4,0,1,6.183674,6.160541,0,10.3,1,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +3,3.258096,0,6.620073,8.006368,0,0,0,0,0 +1,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,1,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,1,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,1,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +5,0,0,0,0,0,20.7,1,0,0 +1,0,0,0,0,0,20.7,1,0,0 +0,0,0,0,0,0,20.7,1,0,0 +2,0,0,0,0,0,10.57626,1,0,0 +3,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +5,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +13,0,0,0,0,0,13.8,0,0,0 +2,0,0,0,0,1,13.8,1,0,0 +3,0,0,0,0,1,13.8,1,0,0 +1,0,0,0,0,1,13.8,1,0,0 +2,0,0,0,0,1,13.8,1,0,0 +5,0,0,0,0,1,13.8,1,0,0 +0,4.564348,0,0,6.804848,0,10.57626,1,0,0 +0,4.564348,0,0,6.804848,0,10.57626,1,0,0 +0,4.564348,0,0,6.804848,0,10.57626,1,0,0 +0,4.564348,0,0,6.804848,0,10.57626,1,0,0 +0,4.564348,0,0,6.804848,0,10.57626,1,0,0 +0,4.564348,0,0,6.804848,0,10.57626,1,0,0 +0,4.564348,0,0,6.804848,0,10.57626,1,0,0 +0,4.564348,0,0,6.804848,0,10.57626,1,0,0 +0,4.564348,0,0,6.804848,0,10.57626,1,0,0 +0,4.564348,0,0,6.804848,0,10.3,0,0,0 +0,4.564348,0,0,6.804848,0,10.3,0,0,0 +0,4.564348,0,0,6.804848,0,10.3,0,0,0 +0,4.564348,0,0,6.804848,0,3.4,1,0,0 +0,4.564348,0,0,6.804848,0,3.4,1,0,0 +0,4.564348,0,0,6.804848,0,3.4,1,0,0 +0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0 +8,0,0,0,0,0,20.7,1,0,0 +1,0,0,0,0,0,20.7,1,0,0 +3,0,0,0,0,0,20.7,1,0,0 +16,4.564348,0,6.907755,6.959049,1,10.57626,0,0,1 +19,4.564348,0,6.907755,6.959049,1,10.57626,0,0,1 +14,4.564348,0,6.907755,6.959049,1,10.57626,0,0,1 +17,4.564348,0,6.907755,6.959049,1,10.57626,0,0,1 +7,4.564348,0,6.907755,6.959049,1,10.57626,0,0,1 +4,4.564348,0,6.907755,6.959049,1,3.4,0,1,0 +9,4.564348,0,6.907755,6.959049,1,3.4,0,1,0 +3,4.564348,0,6.907755,6.959049,1,3.4,0,1,0 +2,4.564348,0,6.907755,6.959049,1,3.4,0,1,0 +0,4.564348,0,6.907755,6.959049,1,3.4,0,1,0 +9,4.564348,0,6.907755,6.959049,1,24.1,0,1,0 +3,4.564348,0,6.907755,6.959049,1,24.1,0,1,0 +2,4.564348,0,6.907755,6.959049,1,24.1,0,1,0 +3,4.564348,0,6.907755,6.959049,1,24.1,0,1,0 +7,4.564348,0,6.907755,6.959049,1,24.1,0,1,0 +21,4.564348,0,6.907755,6.959049,1,27.6,0,0,1 +23,4.564348,0,6.907755,6.959049,1,27.6,0,0,1 +21,4.564348,0,6.907755,6.959049,1,27.6,0,0,1 +27,4.564348,0,6.907755,6.959049,1,27.6,0,0,1 +29,4.564348,0,6.907755,6.959049,1,27.6,0,0,1 +12,4.564348,0,6.907755,6.959049,1,31,0,1,0 +5,4.564348,0,6.907755,6.959049,1,31,0,1,0 +8,4.564348,0,6.907755,6.959049,1,31,0,1,0 +4,4.564348,0,6.907755,6.959049,0,10.57626,0,1,0 +4,4.564348,0,6.907755,6.959049,0,10.57626,0,1,0 +2,4.564348,0,6.907755,6.959049,0,10.57626,0,1,0 +2,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +1,4.564348,0,6.907755,6.959049,0,0,0,0,0 +5,4.564348,0,6.907755,6.959049,0,10.57626,0,1,0 +4,4.564348,0,6.907755,6.959049,0,10.57626,0,1,0 +3,4.564348,0,6.907755,6.959049,0,10.57626,0,1,0 +3,0,0,6.254329,0,0,10.57626,0,0,0 +1,0,0,6.254329,0,0,10.57626,0,0,0 +5,0,0,6.254329,0,0,10.57626,0,0,0 +7,0,0,6.254329,0,0,10.57626,0,0,0 +4,0,0,6.254329,0,0,10.57626,0,0,0 +0,0,0,6.254329,0,0,0,0,0,0 +5,0,0,6.254329,0,0,0,0,0,0 +0,0,0,6.254329,0,0,0,0,0,0 +3,0,0,6.254329,0,0,0,0,0,0 +10,0,0,6.254329,0,0,0,0,0,0 +9,0,0,6.254329,0,0,34.5,1,0,0 +13,0,0,6.254329,0,0,34.5,1,0,0 +22,0,0,6.254329,0,0,34.5,1,0,0 +14,0,0,6.254329,0,0,34.5,1,0,0 +17,0,0,6.254329,0,0,34.5,1,0,0 +2,0,0,6.254329,0,0,10.3,0,0,0 +1,0,0,6.254329,0,0,10.3,0,0,0 +1,0,0,6.254329,0,0,10.3,0,0,0 +1,0,0,6.254329,0,0,10.3,0,0,0 +5,0,0,6.254329,0,0,10.3,0,0,0 +2,3.258096,0,6.55108,7.937375,0,10.3,0,0,0 +0,3.258096,0,6.55108,7.937375,0,10.3,0,0,0 +8,3.258096,0,6.55108,7.937375,0,10.3,0,0,0 +3,3.258096,0,6.620073,8.006368,1,20.7,1,0,0 +0,3.258096,0,6.620073,8.006368,1,20.7,1,0,0 +1,3.258096,0,6.620073,8.006368,1,20.7,1,0,0 +0,3.258096,0,6.620073,8.006368,1,20.7,1,0,0 +1,3.258096,0,6.620073,8.006368,1,20.7,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,1,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,1,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,1,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,1,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,1,0 +0,3.258096,0,6.620073,8.006368,1,10.57626,0,1,0 +1,3.258096,0,6.620073,8.006368,1,10.57626,0,1,0 +0,3.258096,0,6.620073,8.006368,1,10.57626,0,1,0 +0,3.258096,0,6.620073,8.006368,1,10.57626,0,1,0 +0,3.258096,0,6.620073,8.006368,1,10.57626,0,1,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,4.564348,0,4.945919,4.997212,0,10.3,1,0,0 +0,4.564348,0,4.945919,4.997212,0,10.3,1,0,0 +0,4.564348,0,4.945919,4.997212,0,10.3,1,0,0 +0,4.564348,0,4.945919,4.997212,0,10.57626,0,1,0 +0,4.564348,0,4.945919,4.997212,0,10.57626,0,1,0 +0,4.564348,0,4.945919,4.997212,0,10.57626,0,1,0 +0,4.564348,0,4.945919,4.997212,1,0,1,0,0 +3,4.564348,0,4.945919,4.997212,1,0,1,0,0 +3,4.564348,0,4.945919,4.997212,1,0,1,0,0 +0,4.564348,0,4.945919,4.997212,1,10.3,0,0,1 +0,4.564348,0,4.945919,4.997212,1,10.3,0,0,1 +1,4.564348,0,4.945919,4.997212,1,10.3,0,0,1 +0,4.564348,0,4.945919,4.997212,0,0,0,1,0 +0,4.564348,0,4.945919,4.997212,0,0,0,1,0 +1,4.564348,0,4.945919,4.997212,0,0,0,1,0 +0,0,1,6.109248,6.160541,0,27.6,0,0,0 +2,0,1,6.109248,6.160541,0,27.6,0,0,0 +1,0,1,6.109248,6.160541,0,27.6,0,0,0 +0,0,1,6.109248,6.160541,0,27.6,0,0,0 +0,0,1,6.109248,6.160541,0,27.6,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +2,0,1,6.109248,6.160541,0,10.3,0,0,0 +4,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,4.564348,0,2.960105,3.011398,0,10.57626,1,0,0 +1,4.564348,0,2.960105,3.011398,0,10.57626,1,0,0 +0,4.564348,0,2.960105,3.011398,0,10.57626,1,0,0 +2,4.564348,0,2.960105,3.011398,0,13.8,1,0,0 +4,4.564348,0,2.960105,3.011398,0,13.8,1,0,0 +1,4.564348,0,2.960105,3.011398,0,13.8,1,0,0 +0,4.564348,0,2.960105,3.011398,0,0,1,0,0 +0,4.564348,0,2.960105,3.011398,0,0,1,0,0 +1,4.564348,0,2.960105,3.011398,0,10.57626,1,0,0 +0,4.564348,0,2.960105,3.011398,0,10.57626,1,0,0 +0,4.564348,0,2.960105,3.011398,0,10.57626,1,0,0 +0,4.564348,0,2.960105,3.011398,0,10.57626,1,0,0 +0,4.564348,0,2.960105,3.011398,0,10.57626,1,0,0 +0,4.564348,0,2.960105,3.011398,0,10.57626,1,0,0 +0,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +8,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +16,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +5,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,0,0,0 +1,0,0,5.294309,0,0,0,0,0,0 +4,0,0,5.294309,0,0,0,0,0,0 +2,0,0,5.294309,0,0,0,0,0,0 +2,0,0,5.294309,0,0,10.57626,0,0,0 +0,0,0,5.294309,0,0,10.57626,0,0,0 +1,0,0,5.294309,0,0,10.57626,0,0,0 +1,0,0,5.294309,0,0,0,0,0,0 +2,0,0,5.294309,0,0,0,0,0,0 +4,0,0,5.294309,0,0,0,0,0,0 +1,0,0,4.992878,0,0,20.7,0,0,0 +0,0,0,4.992878,0,0,20.7,0,0,0 +3,0,0,4.992878,0,0,10.57626,0,0,0 +5,0,0,4.992878,0,0,10.57626,0,0,0 +4,3.258096,0,6.620073,8.006368,1,13.8,1,0,0 +2,3.258096,0,6.620073,8.006368,1,13.8,1,0,0 +4,3.258096,0,6.620073,8.006368,1,13.8,1,0,0 +3,3.258096,0,6.620073,8.006368,1,13.8,1,0,0 +4,3.258096,0,6.620073,8.006368,1,13.8,1,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +4,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +10,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +10,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +3,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +3,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,1,0 +0,0,1,6.109248,6.160541,0,10.3,0,1,0 +0,0,1,6.109248,6.160541,0,10.3,0,1,0 +0,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +0,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +0,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +0,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +1,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +0,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +0,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +0,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +0,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +1,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +0,4.564348,0,5.349961,5.401254,0,24.1,0,0,0 +0,4.564348,0,5.349961,5.401254,0,24.1,0,0,0 +2,4.564348,0,5.349961,5.401254,0,24.1,0,0,0 +1,4.564348,0,5.349961,5.401254,0,24.1,0,0,0 +2,4.564348,0,5.349961,5.401254,0,24.1,0,0,0 +0,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +0,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +0,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +0,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +0,4.564348,0,5.349961,5.401254,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,24.1,0,0,0 +2,3.258096,0,6.620073,8.006368,0,24.1,0,0,0 +3,3.258096,0,6.620073,8.006368,0,24.1,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +1,3.258096,0,0,8.006368,0,10.57626,1,0,0 +0,3.258096,0,0,8.006368,0,10.57626,1,0,0 +0,3.258096,0,0,8.006368,0,10.57626,1,0,0 +0,3.258096,0,0,8.006368,0,10.57626,0,1,0 +0,3.258096,0,0,8.006368,0,10.57626,0,1,0 +1,3.258096,0,0,8.006368,0,10.57626,0,1,0 +3,3.258096,0,0,8.006368,0,6.9,1,0,0 +0,3.258096,0,0,8.006368,0,6.9,1,0,0 +1,3.258096,0,0,8.006368,0,6.9,1,0,0 +4,3.258096,0,0,8.006368,0,27.6,1,0,0 +1,3.258096,0,0,8.006368,0,27.6,1,0,0 +2,3.258096,0,0,8.006368,0,27.6,1,0,0 +2,3.258096,0,0,8.006368,0,10.57626,1,0,0 +0,3.258096,0,0,8.006368,0,10.57626,1,0,0 +0,3.258096,0,0,8.006368,0,10.57626,1,0,0 +6,0,1,6.507039,5.755076,1,17.2,0,1,0 +5,0,1,6.507039,5.755076,1,17.2,0,1,0 +7,0,1,6.507039,5.755076,1,17.2,0,1,0 +3,0,1,5.928099,5.755076,0,3.4,1,0,0 +0,0,1,5.928099,5.755076,0,3.4,1,0,0 +0,0,1,5.928099,5.755076,0,3.4,1,0,0 +2,0,1,6.507039,5.755076,0,10.3,1,0,0 +2,0,1,6.507039,5.755076,0,10.3,1,0,0 +4,0,1,6.507039,5.755076,0,10.3,1,0,0 +0,3.258096,0,0,8.006368,0,6.9,0,0,0 +0,3.258096,0,0,8.006368,0,6.9,0,0,0 +0,3.258096,0,0,8.006368,0,6.9,0,0,0 +0,3.258096,0,0,8.006368,1,10.3,0,0,0 +0,3.258096,0,0,8.006368,1,10.3,0,0,0 +0,3.258096,0,0,8.006368,1,10.3,0,0,0 +0,3.258096,0,0,8.006368,1,10.57626,0,0,0 +0,3.258096,0,0,8.006368,1,10.57626,0,0,0 +0,3.258096,0,0,8.006368,1,10.57626,0,0,0 +0,3.258096,0,0,8.006368,0,13.8,1,0,0 +0,3.258096,0,0,8.006368,0,13.8,1,0,0 +1,3.258096,0,0,8.006368,0,13.8,1,0,0 +1,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +5,0,1,6.109248,6.160541,0,6.9,0,1,0 +11,0,1,6.109248,6.160541,0,6.9,0,1,0 +1,0,1,6.109248,6.160541,0,6.9,0,1,0 +2,0,1,6.109248,6.160541,0,6.9,0,1,0 +0,0,1,6.109248,6.160541,0,6.9,0,1,0 +4,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +1,0,1,6.109248,6.160541,0,13.8,1,0,0 +2,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +5,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,13.8,0,0,0 +0,0,0,0,0,0,13.8,0,0,0 +0,0,0,0,0,0,13.8,0,0,0 +0,3.258096,0,0,6.635421,1,10.57626,0,1,0 +0,3.258096,0,0,6.635421,1,10.57626,0,1,0 +0,3.258096,0,0,6.635421,1,10.57626,0,1,0 +0,3.931826,0,0,6.984716,0,10.3,1,0,0 +0,3.931826,0,0,6.984716,0,10.3,1,0,0 +0,3.931826,0,0,6.984716,0,10.3,1,0,0 +0,3.931826,0,0,6.984716,0,10.3,1,0,0 +1,3.931826,0,0,6.984716,0,10.3,1,0,0 +0,3.931826,0,0,6.984716,0,10.57626,1,0,0 +0,3.931826,0,0,6.984716,0,10.57626,1,0,0 +0,3.931826,0,0,6.984716,0,10.57626,1,0,0 +0,3.931826,0,0,6.984716,0,10.57626,1,0,0 +0,3.931826,0,0,6.984716,0,10.57626,1,0,0 +0,3.931826,0,0,6.984716,0,10.57626,1,0,0 +0,3.931826,0,0,6.984716,0,10.57626,1,0,0 +0,3.931826,0,0,6.984716,0,10.57626,1,0,0 +0,3.931826,0,0,6.984716,0,10.57626,1,0,0 +0,3.931826,0,0,6.984716,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,1,17.2,1,0,0 +0,0,1,6.109248,6.160541,1,17.2,1,0,0 +0,0,1,6.109248,6.160541,1,17.2,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,3.931826,0,6.867558,7.560705,1,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,1,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,1,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,1,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,1,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,0,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,0,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,0,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,0,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,0,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,0,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,0,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,0,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,0,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,0,10.57626,0,0,0 +0,3.931826,0,6.867558,7.560705,0,3.4,0,1,0 +0,3.931826,0,6.867558,7.560705,0,3.4,0,1,0 +1,3.931826,0,6.867558,7.560705,0,3.4,0,1,0 +1,3.931826,0,6.867558,7.560705,0,3.4,0,1,0 +0,3.931826,0,6.867558,7.560705,0,3.4,0,1,0 +0,0,0,6.656212,0,0,13.8,0,1,0 +0,0,0,6.656212,0,0,13.8,0,1,0 +0,0,0,6.656212,0,0,13.8,0,1,0 +0,0,0,6.656212,0,0,3.4,0,0,0 +3,0,0,6.656212,0,0,3.4,0,0,0 +2,0,0,6.656212,0,0,3.4,0,0,0 +0,0,0,6.656212,0,0,20.7,0,1,0 +0,0,0,6.656212,0,0,20.7,0,1,0 +0,0,0,6.656212,0,0,20.7,0,1,0 +0,0,1,0,6.160541,1,0,1,0,0 +0,0,1,0,6.160541,1,0,1,0,0 +0,0,1,0,6.160541,1,0,1,0,0 +2,0,1,0,6.160541,1,0,1,0,0 +7,0,1,0,6.160541,1,0,1,0,0 +0,0,1,0,6.160541,0,13.8,1,0,0 +0,0,1,0,6.160541,0,13.8,1,0,0 +0,0,1,0,6.160541,0,13.8,1,0,0 +1,0,1,0,6.160541,0,13.8,1,0,0 +1,0,1,0,6.160541,0,13.8,1,0,0 +0,0,1,0,6.160541,0,0,1,0,0 +0,0,1,0,6.160541,0,0,1,0,0 +3,0,1,0,6.160541,0,0,1,0,0 +3,0,1,0,6.160541,0,0,1,0,0 +2,0,1,0,6.160541,0,0,1,0,0 +1,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +3,0,1,0,6.160541,0,10.57626,1,0,0 +1,0,1,0,6.160541,0,10.57626,1,0,0 +2,0,1,0,6.160541,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,1,17.2,1,0,0 +3,4.564348,0,6.907755,6.959049,1,17.2,1,0,0 +7,4.564348,0,6.907755,6.959049,1,17.2,1,0,0 +1,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +2,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +3,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +4,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +3,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +1,0,0,6.337321,0,0,10.3,1,0,0 +3,0,0,6.337321,0,0,10.3,1,0,0 +4,0,0,6.337321,0,0,10.3,1,0,0 +5,0,0,6.337321,0,0,10.3,1,0,0 +6,0,0,6.337321,0,0,10.3,1,0,0 +8,0,0,6.337321,0,0,10.3,1,0,0 +5,4.564348,0,6.476973,6.528265,0,10.3,0,1,0 +4,4.564348,0,6.476973,6.528265,0,10.3,0,1,0 +4,4.564348,0,6.476973,6.528265,0,10.3,0,1,0 +4,4.564348,0,6.476973,6.528265,0,10.3,0,1,0 +5,4.564348,0,6.476973,6.528265,0,10.3,0,1,0 +0,4.564348,0,6.476973,6.528265,0,10.3,0,1,0 +0,4.564348,0,6.476973,6.528265,0,10.3,0,1,0 +0,4.564348,0,6.476973,6.528265,0,10.3,0,1,0 +0,4.564348,0,6.476973,6.528265,0,10.3,0,1,0 +1,4.564348,0,6.476973,6.528265,0,10.3,0,1,0 +9,0,1,6.109248,6.160541,0,20.7,0,0,0 +5,0,1,6.109248,6.160541,0,20.7,0,0,0 +4,0,1,6.109248,6.160541,0,20.7,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +3,4.564348,0,6.907755,6.959049,0,0,0,0,0 +2,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +2,0,1,6.47148,5.755076,0,10.3,0,0,0 +8,0,1,6.47148,5.755076,0,10.3,0,0,0 +2,0,1,6.47148,5.755076,0,10.3,0,0,0 +3,0,1,6.47148,5.755076,1,27.6,0,0,0 +2,0,1,6.47148,5.755076,1,27.6,0,0,0 +4,0,1,6.47148,5.755076,1,27.6,0,0,0 +3,0,1,5.010635,5.061929,0,13.8,0,0,0 +2,0,1,5.010635,5.061929,0,13.8,0,0,0 +4,0,1,5.010635,5.061929,0,13.8,0,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +0,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +1,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +7,3.258096,0,6.620073,8.006368,1,20.7,0,1,0 +6,3.258096,0,6.620073,8.006368,1,20.7,0,1,0 +9,3.258096,0,6.620073,8.006368,1,20.7,0,1,0 +0,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,1,0 +0,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,1,0 +7,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,1,0 +0,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +0,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +0,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +3,0,0,4.526127,0,0,20.7,0,0,1 +5,0,0,4.526127,0,0,20.7,0,0,1 +15,0,0,4.526127,0,0,20.7,0,0,1 +14,0,0,4.526127,0,0,24.1,0,1,0 +4,0,0,4.526127,0,0,24.1,0,1,0 +7,0,0,4.526127,0,0,24.1,0,1,0 +0,3.258096,0,0,5.243861,1,13.8,1,0,0 +7,3.258096,0,0,5.243861,1,13.8,1,0,0 +3,3.258096,0,0,5.243861,1,13.8,1,0,0 +0,3.258096,0,0,5.243861,0,0,0,0,0 +0,3.258096,0,0,5.243861,0,0,0,0,0 +2,3.258096,0,0,5.243861,0,0,0,0,0 +0,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +0,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +2,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +0,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +0,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +0,4.564348,0,6.802395,6.853688,0,20.7,0,1,0 +2,4.564348,0,6.802395,6.853688,0,20.7,0,1,0 +4,4.564348,0,6.802395,6.853688,0,20.7,0,1,0 +12,4.564348,0,6.802395,6.853688,0,20.7,0,1,0 +5,4.564348,0,6.802395,6.853688,0,20.7,0,1,0 +0,4.564348,0,6.802395,6.853688,0,0,0,1,0 +0,4.564348,0,6.802395,6.853688,0,0,0,1,0 +0,4.564348,0,6.802395,6.853688,0,0,0,1,0 +0,4.564348,0,6.802395,6.853688,0,0,0,1,0 +0,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +0,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +1,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +0,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +2,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +0,4.564348,0,6.802395,6.853688,0,3.4,1,0,0 +0,4.564348,0,6.802395,6.853688,0,3.4,1,0,0 +1,4.564348,0,6.802395,6.853688,0,3.4,1,0,0 +1,4.564348,0,6.802395,6.853688,0,3.4,1,0,0 +0,4.564348,0,6.802395,6.853688,0,3.4,1,0,0 +0,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +0,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +0,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +6,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +3,4.564348,0,6.802395,6.853688,0,10.57626,1,0,0 +9,0,1,6.471356,6.160541,0,24.1,0,0,1 +10,0,1,6.471356,6.160541,0,24.1,0,0,1 +12,0,1,6.471356,6.160541,0,24.1,0,0,1 +18,0,1,6.471356,6.160541,0,10.3,0,0,0 +13,0,1,6.471356,6.160541,0,10.3,0,0,0 +11,0,1,6.471356,6.160541,0,10.3,0,0,0 +6,0,1,6.471356,6.160541,1,10.3,0,1,0 +4,0,1,6.471356,6.160541,1,10.3,0,1,0 +5,0,1,6.471356,6.160541,1,10.3,0,1,0 +0,0,0,5.671328,0,0,0,0,0,0 +4,0,0,5.671328,0,0,0,0,0,0 +3,0,0,5.671328,0,0,0,0,0,0 +1,4.564348,0,5.98202,5.799093,0,10.3,1,0,0 +0,4.564348,0,5.98202,5.799093,0,10.3,1,0,0 +0,4.564348,0,5.98202,5.799093,0,10.3,1,0,0 +3,4.564348,0,5.98202,5.799093,0,20.7,1,0,0 +5,4.564348,0,5.98202,5.799093,0,20.7,1,0,0 +2,4.564348,0,5.98202,5.799093,0,20.7,1,0,0 +6,0,0,6.819711,0,0,6.9,0,0,0 +7,0,0,6.819711,0,0,6.9,0,0,0 +1,0,0,6.819711,0,0,6.9,0,0,0 +1,0,0,6.819711,0,0,10.3,1,0,0 +3,0,0,6.819711,0,0,10.3,1,0,0 +0,0,0,6.819711,0,0,10.3,1,0,0 +0,0,1,0,5.061929,0,10.3,0,0,0 +4,0,1,0,5.061929,0,10.3,0,0,0 +0,0,1,0,5.061929,0,10.3,0,0,0 +0,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +10,0,0,0,0,0,0,1,0,0 +3,3.258096,0,6.210821,7.597116,0,10.57626,0,0,0 +1,3.258096,0,6.210821,7.597116,0,10.57626,0,0,0 +0,3.258096,0,6.210821,7.597116,0,10.57626,0,0,0 +3,3.258096,0,6.210821,7.597116,0,10.57626,0,0,0 +0,3.258096,0,6.210821,7.597116,0,10.57626,0,0,0 +0,3.258096,0,6.210821,7.597116,0,10.3,0,0,0 +0,3.258096,0,6.210821,7.597116,0,10.3,0,0,0 +1,3.258096,0,6.210821,7.597116,0,10.3,0,0,0 +0,3.258096,0,6.210821,7.597116,0,10.3,0,0,0 +0,3.258096,0,6.210821,7.597116,0,10.3,0,0,0 +1,3.258096,0,6.210821,7.597116,0,6.9,0,0,0 +0,3.258096,0,6.210821,7.597116,0,6.9,0,0,0 +0,3.258096,0,6.210821,7.597116,0,6.9,0,0,0 +0,3.258096,0,6.210821,7.597116,0,6.9,0,0,0 +1,3.258096,0,6.210821,7.597116,0,6.9,0,0,0 +2,0,1,5.703783,5.755076,0,3.4,0,0,0 +0,0,1,5.703783,5.755076,0,3.4,0,0,0 +0,0,1,5.703783,5.755076,0,3.4,0,0,0 +0,0,1,5.703783,5.755076,0,10.57626,1,0,0 +0,0,1,5.703783,5.755076,0,10.57626,1,0,0 +0,0,1,5.703783,5.755076,0,10.57626,1,0,0 +0,0,0,4.510859,0,0,3.4,1,0,0 +2,0,0,4.510859,0,0,3.4,1,0,0 +0,0,0,4.510859,0,0,3.4,1,0,0 +0,0,0,4.510859,0,0,13.8,1,0,0 +0,0,0,4.510859,0,0,13.8,1,0,0 +0,0,0,4.510859,0,0,10.57626,1,0,0 +0,0,0,4.510859,0,0,10.57626,1,0,0 +4,0,0,6.437399,0,0,13.8,0,0,0 +4,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +3,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +3,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +2,0,1,5.671328,5.061929,0,6.9,0,0,0 +1,0,1,5.671328,5.061929,0,6.9,0,0,0 +2,0,1,5.671328,5.061929,0,6.9,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,1,0,0 +0,3.258096,0,6.620073,8.006368,0,0,1,0,0 +0,3.258096,0,6.620073,8.006368,0,0,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +7,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +2,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +0,4.564348,0,5.753049,5.804342,1,10.57626,1,0,0 +9,4.564348,0,5.753049,5.804342,1,10.57626,1,0,0 +0,4.564348,0,5.753049,5.804342,1,10.57626,1,0,0 +0,4.564348,0,5.753049,5.804342,1,10.57626,1,0,0 +1,4.564348,0,5.753049,5.804342,1,10.57626,1,0,0 +1,4.564348,0,5.753049,5.804342,1,10.57626,1,0,0 +0,4.564348,0,5.753049,5.804342,0,13.8,0,0,0 +0,4.564348,0,5.753049,5.804342,0,13.8,0,0,0 +6,4.564348,0,5.753049,5.804342,0,13.8,0,0,0 +15,0,0,6.23973,0,1,17.2,0,0,1 +4,0,0,6.23973,0,1,17.2,0,0,1 +12,0,0,6.23973,0,1,17.2,0,0,1 +14,0,0,6.23973,0,1,24.1,0,1,0 +16,0,0,6.23973,0,1,24.1,0,1,0 +14,0,0,6.23973,0,1,24.1,0,1,0 +8,0,0,6.23973,0,0,3.4,0,0,0 +4,0,0,6.23973,0,0,3.4,0,0,0 +10,0,0,6.23973,0,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,1,0 +0,0,1,6.109248,6.160541,0,0,0,1,0 +1,0,1,6.109248,6.160541,0,0,0,1,0 +4,0,1,6.109248,6.160541,0,24.1,0,1,0 +7,0,1,6.109248,6.160541,0,24.1,0,1,0 +11,0,1,6.109248,6.160541,0,24.1,0,1,0 +6,0,0,6.815157,0,0,17.2,1,0,0 +5,0,0,6.815157,0,0,17.2,1,0,0 +3,0,0,6.815157,0,0,17.2,1,0,0 +2,0,0,6.815157,0,0,17.2,1,0,0 +0,0,0,6.815157,0,0,17.2,1,0,0 +5,0,0,6.815157,0,0,0,1,0,0 +1,0,0,6.815157,0,0,0,1,0,0 +0,0,0,6.815157,0,0,0,1,0,0 +2,0,0,6.815157,0,0,0,1,0,0 +2,0,0,6.815157,0,0,0,1,0,0 +2,0,0,6.815157,0,0,10.57626,1,0,0 +0,0,0,6.815157,0,0,10.57626,1,0,0 +5,0,0,6.815157,0,0,10.57626,1,0,0 +1,0,0,6.815157,0,0,10.57626,1,0,0 +2,0,0,6.815157,0,0,10.57626,1,0,0 +2,0,1,5.010635,5.061929,0,0,0,0,0 +2,0,1,5.010635,5.061929,0,0,0,0,0 +0,0,1,5.010635,5.061929,0,0,0,0,0 +0,0,1,5.010635,5.061929,0,0,0,0,0 +0,0,1,5.010635,5.061929,0,0,0,0,0 +0,3.258096,0,6.129377,7.515671,0,10.3,0,0,0 +9,3.258096,0,6.129377,7.515671,0,6.9,1,0,0 +1,0,1,5.735281,5.755076,0,27.6,1,0,0 +3,0,1,5.735281,5.755076,0,27.6,1,0,0 +3,0,1,5.735281,5.755076,1,34.5,0,1,0 +1,0,1,5.735281,5.755076,1,34.5,0,1,0 +2,0,1,5.735281,5.755076,1,34.5,0,1,0 +0,3.258096,0,5.773309,7.034916,0,3.4,0,0,0 +0,3.258096,0,5.773309,7.034916,0,3.4,0,0,0 +1,3.258096,0,5.773309,7.034916,0,3.4,0,0,0 +0,3.258096,0,5.773309,7.034916,0,3.4,0,0,0 +0,3.258096,0,5.773309,7.034916,0,3.4,0,0,0 +1,3.258096,0,5.773309,7.034916,0,17.2,0,0,0 +1,3.258096,0,5.773309,7.034916,0,17.2,0,0,0 +1,3.258096,0,5.773309,7.034916,0,17.2,0,0,0 +1,3.258096,0,5.773309,7.034916,0,17.2,0,0,0 +2,3.258096,0,5.773309,7.034916,0,17.2,0,0,0 +0,4.564348,0,0,6.721172,.1442925,10.57626,1,0,0 +2,4.564348,0,0,6.721172,.1442925,10.57626,1,0,0 +2,4.564348,0,0,6.721172,.1442925,10.57626,1,0,0 +0,0,0,2.890372,0,0,0,0,0,0 +3,0,0,2.890372,0,0,0,0,0,0 +3,0,0,2.890372,0,0,0,0,0,0 +0,0,1,5.089077,5.061929,0,6.9,0,0,0 +0,0,1,5.089077,5.061929,0,6.9,0,0,0 +4,0,1,5.089077,5.061929,0,6.9,0,0,0 +0,4.564348,0,6.160574,6.211867,0,10.57626,1,0,0 +1,4.564348,0,6.160574,6.211867,0,10.57626,1,0,0 +1,4.564348,0,6.160574,6.211867,0,10.57626,1,0,0 +0,4.564348,0,6.160574,6.211867,0,20.7,0,1,0 +1,4.564348,0,6.160574,6.211867,0,20.7,0,1,0 +5,4.564348,0,6.160574,6.211867,0,20.7,0,1,0 +0,4.564348,0,6.160574,6.211867,0,10.57626,0,0,0 +2,4.564348,0,6.160574,6.211867,0,10.57626,0,0,0 +0,4.564348,0,6.160574,6.211867,0,10.57626,0,0,0 +1,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +2,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.3,0,1,0 +2,0,0,0,0,0,10.3,0,1,0 +6,0,0,0,0,0,10.3,0,1,0 +0,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +1,4.564348,0,6.907755,6.959049,1,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,1,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,1,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,1,27.6,0,0,0 +0,4.564348,0,6.907755,6.959049,1,27.6,0,0,0 +0,0,0,0,0,0,17.2,1,0,0 +2,0,0,0,0,0,17.2,1,0,0 +0,0,0,0,0,0,17.2,1,0,0 +0,3.931826,0,6.39693,7.090077,0,3.4,1,0,0 +0,3.931826,0,6.39693,7.090077,0,3.4,1,0,0 +0,3.931826,0,6.39693,7.090077,0,3.4,1,0,0 +0,3.931826,0,6.39693,7.090077,.1442925,10.57626,0,1,0 +0,3.931826,0,6.39693,7.090077,.1442925,10.57626,0,1,0 +0,3.931826,0,6.39693,7.090077,.1442925,10.57626,0,1,0 +4,0,0,4.822859,0,1,37.9,1,0,0 +7,0,0,4.822859,0,1,37.9,1,0,0 +7,0,0,4.822859,0,1,37.9,1,0,0 +2,0,0,4.822859,0,1,37.9,1,0,0 +2,0,0,4.822859,0,1,37.9,1,0,0 +1,0,0,4.822859,0,0,10.57626,0,0,0 +2,0,0,4.822859,0,0,10.57626,0,0,0 +0,0,0,4.822859,0,0,10.57626,0,0,0 +1,0,0,4.822859,0,0,10.57626,0,0,0 +0,0,0,4.822859,0,0,10.57626,0,0,0 +1,0,0,4.822859,0,0,10.3,0,0,0 +1,0,0,4.822859,0,0,10.3,0,0,0 +1,0,0,4.822859,0,0,10.3,0,0,0 +1,0,0,4.822859,0,0,10.3,0,0,0 +0,0,0,4.822859,0,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,1,20.7,1,0,0 +0,4.564348,0,6.907755,6.959049,1,20.7,1,0,0 +26,4.564348,0,6.907755,6.959049,1,20.7,1,0,0 +1,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +0,3.258096,0,6.347144,7.733438,0,10.3,1,0,0 +1,3.258096,0,6.347144,7.733438,0,10.3,1,0,0 +3,3.258096,0,6.347144,7.733438,0,10.3,1,0,0 +0,3.258096,0,5.420535,6.536633,0,6.9,0,0,0 +1,3.258096,0,5.420535,6.536633,0,6.9,0,0,0 +0,3.258096,0,5.420535,6.536633,0,6.9,0,0,0 +0,3.258096,0,5.420535,6.536633,0,3.4,0,0,0 +1,3.258096,0,5.420535,6.536633,0,3.4,0,0,0 +0,3.258096,0,5.420535,6.536633,0,3.4,0,0,0 +0,3.258096,0,5.420535,6.536633,.1442925,10.57626,0,0,0 +0,3.258096,0,5.420535,6.536633,.1442925,10.57626,0,0,0 +0,3.258096,0,5.420535,6.536633,.1442925,10.57626,0,0,0 +0,3.258096,0,5.420535,6.536633,.1442925,10.57626,0,0,0 +0,3.258096,0,5.420535,6.536633,.1442925,10.57626,0,0,0 +0,3.258096,0,5.420535,6.536633,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,1,0 +0,0,1,6.109248,6.160541,0,6.9,0,1,0 +1,0,1,6.109248,6.160541,0,6.9,0,1,0 +6,0,1,6.109248,6.160541,0,6.9,0,1,0 +3,0,1,6.109248,6.160541,0,6.9,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +2,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +3,0,1,6.109248,6.160541,0,6.9,1,0,0 +2,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +2,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,4.564348,0,5.783825,5.835118,.1442925,3.4,1,0,0 +0,4.564348,0,5.783825,5.835118,.1442925,3.4,1,0,0 +0,4.564348,0,5.783825,5.835118,.1442925,3.4,1,0,0 +0,4.564348,0,5.783825,5.835118,0,6.9,1,0,0 +0,4.564348,0,5.783825,5.835118,0,6.9,1,0,0 +0,4.564348,0,5.783825,5.835118,0,6.9,1,0,0 +0,4.564348,0,5.783825,5.835118,.1442925,10.57626,0,0,0 +4,4.564348,0,5.783825,5.835118,.1442925,10.57626,0,0,0 +0,4.564348,0,5.783825,5.835118,.1442925,10.57626,0,0,0 +6,0,0,6.206979,0,0,10.57626,0,0,0 +4,0,0,6.206979,0,0,10.57626,0,0,0 +4,0,0,6.206979,0,0,10.57626,0,0,0 +2,0,0,6.206979,0,0,6.9,1,0,0 +0,0,0,6.206979,0,0,6.9,1,0,0 +2,0,0,6.206979,0,0,6.9,1,0,0 +1,0,0,6.206979,0,0,3.4,1,0,0 +1,0,0,6.206979,0,0,3.4,1,0,0 +2,0,0,6.206979,0,0,3.4,1,0,0 +0,0,1,5.010635,5.061929,0,13.8,0,0,0 +1,0,1,5.010635,5.061929,0,13.8,0,0,0 +1,0,1,5.010635,5.061929,0,13.8,0,0,0 +0,0,0,0,0,0,10.57626,0,1,0 +0,0,0,0,0,0,10.57626,0,1,0 +0,0,0,0,0,0,10.57626,0,1,0 +1,0,0,0,0,1,6.9,1,0,0 +2,0,0,0,0,1,6.9,1,0,0 +0,0,0,0,0,1,6.9,1,0,0 +0,0,0,6.66899,0,1,6.9,0,1,0 +0,0,0,6.66899,0,1,6.9,0,1,0 +2,0,0,6.66899,0,1,6.9,0,1,0 +0,0,0,6.66899,0,0,10.3,0,1,0 +0,0,0,6.66899,0,0,10.3,0,1,0 +0,0,0,6.66899,0,0,10.3,0,1,0 +0,0,0,6.66899,0,0,13.8,0,1,0 +0,0,0,6.66899,0,0,13.8,0,1,0 +0,0,0,6.66899,0,0,13.8,0,1,0 +0,0,0,6.66899,0,0,0,0,1,0 +0,0,0,6.66899,0,0,0,0,1,0 +0,0,0,6.66899,0,0,0,0,1,0 +0,3.258096,0,0,7.532195,0,3.4,0,0,1 +1,3.258096,0,0,7.532195,0,3.4,0,0,1 +0,3.258096,0,0,7.532195,0,3.4,0,0,1 +2,0,1,0,5.061929,0,13.8,1,0,0 +0,0,1,0,5.061929,0,13.8,1,0,0 +1,0,1,0,5.061929,0,13.8,1,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +3,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +5,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +2,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,1,3.4,0,1,0 +0,0,0,0,0,1,3.4,0,1,0 +0,0,0,0,0,1,3.4,0,1,0 +0,0,0,0,0,1,3.4,0,1,0 +1,0,0,0,0,1,3.4,0,1,0 +1,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,0,13.8,1,0,0 +0,4.564348,0,0,6.818751,0,13.8,1,0,0 +0,4.564348,0,0,6.818751,0,13.8,1,0,0 +0,4.564348,0,0,6.818751,0,13.8,1,0,0 +0,4.564348,0,0,6.818751,0,13.8,1,0,0 +1,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +1,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +1,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +2,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +1,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +1,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +1,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +1,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +0,4.564348,0,0,6.818751,.1442925,10.57626,1,0,0 +7,3.258096,0,0,4.884316,0,6.9,1,0,0 +4,3.258096,0,0,4.884316,0,6.9,1,0,0 +2,3.258096,0,0,4.884316,0,6.9,1,0,0 +2,0,1,0,5.061929,0,13.8,0,0,0 +5,0,1,0,5.061929,0,13.8,0,0,0 +6,0,1,0,5.061929,0,13.8,0,0,0 +0,0,0,0,0,0,37.9,1,0,0 +3,0,0,0,0,0,37.9,1,0,0 +4,0,0,0,0,0,37.9,1,0,0 +0,0,0,0,0,.1442925,10.57626,1,0,0 +0,0,0,0,0,.1442925,10.57626,1,0,0 +1,0,0,0,0,.1442925,10.57626,1,0,0 +1,0,0,0,0,.1442925,10.57626,1,0,0 +1,0,0,0,0,.1442925,10.57626,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,20.7,0,0,1 +3,0,0,0,0,0,20.7,0,0,1 +6,0,0,0,0,0,20.7,0,0,1 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,6.9,0,0,1 +1,0,0,0,0,0,6.9,0,0,1 +1,0,0,0,0,0,6.9,0,0,1 +2,0,0,6.030685,0,0,10.57626,1,0,0 +3,0,0,6.030685,0,0,10.57626,1,0,0 +5,0,0,6.030685,0,0,10.57626,1,0,0 +0,0,0,6.030685,0,1,10.3,0,1,0 +1,0,0,6.030685,0,1,10.3,0,1,0 +1,0,0,6.030685,0,1,10.3,0,1,0 +1,0,0,6.030685,0,0,6.9,0,0,0 +1,0,0,6.030685,0,0,6.9,0,0,0 +2,0,0,6.030685,0,0,6.9,0,0,0 +1,0,0,6.030685,0,0,10.57626,1,0,0 +0,0,0,6.030685,0,0,10.57626,1,0,0 +0,0,0,6.030685,0,0,10.57626,1,0,0 +2,0,0,2.890372,0,0,0,1,0,0 +3,0,0,2.890372,0,0,0,1,0,0 +7,0,0,2.890372,0,0,0,1,0,0 +0,0,0,6.030685,0,0,10.57626,1,0,0 +0,0,0,6.030685,0,0,10.57626,1,0,0 +0,0,0,6.030685,0,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,20.7,1,0,0 +2,0,1,6.109248,6.160541,0,20.7,1,0,0 +2,0,1,6.109248,6.160541,0,20.7,1,0,0 +4,0,1,6.109248,6.160541,0,10.3,0,1,0 +0,0,1,6.109248,6.160541,0,10.3,0,1,0 +10,0,1,6.109248,6.160541,0,10.3,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,3.258096,0,5.8925,7.278795,0,6.9,1,0,0 +0,3.258096,0,5.8925,7.278795,0,6.9,1,0,0 +0,3.258096,0,5.8925,7.278795,0,6.9,1,0,0 +0,3.258096,0,5.8925,7.278795,0,3.4,1,0,0 +0,3.258096,0,5.8925,7.278795,0,3.4,1,0,0 +0,3.258096,0,5.8925,7.278795,0,3.4,1,0,0 +0,3.258096,0,5.8925,7.278795,1,10.3,0,1,0 +0,3.258096,0,5.8925,7.278795,1,10.3,0,1,0 +0,3.258096,0,5.8925,7.278795,1,10.3,0,1,0 +0,3.258096,0,5.8925,7.278795,0,10.57626,1,0,0 +0,3.258096,0,5.8925,7.278795,0,10.57626,1,0,0 +0,3.258096,0,5.8925,7.278795,0,10.57626,1,0,0 +3,0,1,5.010635,5.061929,0,3.4,1,0,0 +4,0,1,5.010635,5.061929,0,3.4,1,0,0 +2,0,1,5.010635,5.061929,0,3.4,1,0,0 +0,4.564348,0,6.620007,6.6713,0,6.9,1,0,0 +0,4.564348,0,6.620007,6.6713,0,6.9,1,0,0 +0,4.564348,0,6.620007,6.6713,0,6.9,1,0,0 +5,4.564348,0,6.620007,6.6713,0,20.7,1,0,0 +2,4.564348,0,6.620007,6.6713,0,20.7,1,0,0 +1,4.564348,0,6.620007,6.6713,0,20.7,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +12,0,1,6.109248,6.160541,0,10.3,1,0,0 +2,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,13.8,1,0,0 +1,0,1,0,6.160541,0,13.8,1,0,0 +0,0,1,0,6.160541,0,13.8,1,0,0 +0,0,1,0,6.160541,0,10.3,0,1,0 +0,0,1,0,6.160541,0,10.3,0,1,0 +1,0,1,0,6.160541,0,10.3,0,1,0 +0,0,1,0,6.160541,0,10.57626,0,1,0 +0,0,1,0,6.160541,0,10.57626,0,1,0 +0,0,1,0,6.160541,0,10.57626,0,1,0 +1,0,0,4.268298,0,1,20.7,1,0,0 +1,0,0,4.268298,0,1,20.7,1,0,0 +0,0,0,4.268298,0,1,20.7,1,0,0 +0,0,0,4.564348,0,0,6.9,1,0,0 +0,0,0,4.564348,0,0,6.9,1,0,0 +0,0,0,4.564348,0,0,6.9,1,0,0 +5,0,1,5.594116,5.061929,0,10.3,1,0,0 +0,0,1,5.594116,5.061929,0,10.3,1,0,0 +4,0,1,5.594116,5.061929,0,10.3,1,0,0 +11,0,0,5.869636,0,0,6.9,0,0,0 +9,0,0,5.869636,0,0,6.9,0,0,0 +19,0,0,5.869636,0,0,6.9,0,0,0 +30,0,0,5.869636,0,0,6.9,0,0,0 +27,0,0,5.869636,0,0,6.9,0,0,0 +8,0,0,5.869636,0,0,3.4,0,0,0 +9,0,0,5.869636,0,0,3.4,0,0,0 +6,0,0,5.869636,0,0,3.4,0,0,0 +2,0,0,5.869636,0,0,3.4,0,0,0 +0,0,0,5.869636,0,0,3.4,0,0,0 +1,0,0,5.869636,0,0,6.9,0,0,0 +1,0,0,5.869636,0,0,6.9,0,0,0 +2,0,0,5.869636,0,0,6.9,0,0,0 +1,0,0,5.869636,0,0,6.9,0,0,0 +8,0,0,5.869636,0,0,6.9,0,0,0 +6,0,0,5.869636,0,0,10.57626,0,0,0 +1,0,0,5.869636,0,0,10.57626,0,0,0 +8,0,0,5.869636,0,0,10.57626,0,0,0 +9,0,0,5.869636,0,0,10.57626,0,0,0 +7,0,0,5.869636,0,0,10.57626,0,0,0 +2,4.564348,0,6.745236,6.79653,0,27.6,1,0,0 +1,4.564348,0,6.745236,6.79653,0,27.6,1,0,0 +2,0,0,6.152051,0,0,10.57626,1,0,0 +4,0,0,6.152051,0,0,10.57626,1,0,0 +2,0,0,6.152051,0,0,10.57626,1,0,0 +7,0,0,6.152051,0,0,10.57626,1,0,0 +2,0,0,6.152051,0,0,10.57626,1,0,0 +1,0,0,6.152051,0,0,6.9,1,0,0 +1,0,0,6.152051,0,0,6.9,1,0,0 +0,0,0,6.152051,0,0,6.9,1,0,0 +3,0,0,6.152051,0,0,6.9,1,0,0 +1,0,0,6.152051,0,0,6.9,1,0,0 +2,0,0,6.152051,0,0,24.1,1,0,0 +8,0,0,6.152051,0,0,24.1,1,0,0 +2,0,0,6.152051,0,0,24.1,1,0,0 +2,0,0,6.152051,0,0,24.1,1,0,0 +5,0,0,6.152051,0,0,24.1,1,0,0 +0,4.564348,0,0,0,0,3.4,1,0,0 +0,4.564348,0,0,0,0,3.4,1,0,0 +0,4.564348,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +2,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,5.713733,0,0,6.9,0,0,0 +4,0,0,5.713733,0,0,6.9,0,0,0 +2,0,0,5.713733,0,0,6.9,0,0,0 +4,0,0,5.713733,0,0,17.2,0,1,0 +3,0,0,5.713733,0,0,17.2,0,1,0 +1,0,0,5.713733,0,0,17.2,0,1,0 +1,3.258096,0,6.617403,8.003697,0,13.8,1,0,0 +2,3.258096,0,0,5.768321,0,20.7,1,0,0 +1,3.258096,0,0,5.768321,0,20.7,1,0,0 +5,3.258096,0,0,5.768321,0,20.7,1,0,0 +1,3.258096,0,0,5.768321,0,20.7,1,0,0 +0,3.258096,0,0,5.768321,0,20.7,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,1 +2,0,1,6.109248,6.160541,0,10.57626,0,0,1 +1,0,1,6.109248,6.160541,0,10.57626,0,0,1 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +4,0,1,6.109248,6.160541,0,10.57626,0,0,0 +5,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +3,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +3,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +1,0,0,5.379713,0,0,6.9,0,0,0 +2,0,0,5.379713,0,0,6.9,0,0,0 +0,0,0,5.379713,0,0,6.9,0,0,0 +5,0,0,5.379713,0,0,13.8,0,0,1 +2,0,0,5.379713,0,0,13.8,0,0,1 +3,0,0,5.379713,0,0,13.8,0,0,1 +0,0,0,5.379713,0,0,0,0,0,0 +1,0,0,5.379713,0,0,0,0,0,0 +0,0,0,5.379713,0,0,0,0,0,0 +0,0,1,5.010635,6.160541,.1442925,10.57626,1,0,0 +0,0,1,5.010635,6.160541,.1442925,10.57626,0,0,0 +0,0,1,5.010635,6.160541,.1442925,10.57626,1,0,0 +0,0,1,5.010635,6.160541,.1442925,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +6,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +5,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +2,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +5,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +7,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +2,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +5,3.258096,0,6.620073,8.006368,0,20.7,1,0,0 +4,3.258096,0,6.620073,8.006368,0,20.7,1,0,0 +1,3.258096,0,6.620073,8.006368,0,20.7,1,0,0 +3,3.258096,0,6.620073,8.006368,0,20.7,1,0,0 +1,3.258096,0,6.620073,8.006368,0,20.7,1,0,0 +1,4.564348,0,6.649632,6.700925,0,3.4,1,0,0 +0,4.564348,0,6.649632,6.700925,0,3.4,1,0,0 +1,4.564348,0,6.649632,6.700925,0,3.4,1,0,0 +0,4.564348,0,6.649632,6.700925,0,10.3,0,0,0 +0,4.564348,0,6.649632,6.700925,0,10.3,0,0,0 +1,4.564348,0,6.649632,6.700925,0,10.3,0,0,0 +0,4.564348,0,6.649632,6.700925,0,3.4,1,0,0 +0,4.564348,0,6.649632,6.700925,0,3.4,1,0,0 +4,0,1,5.703783,5.755076,0,3.4,1,0,0 +1,0,1,5.703783,5.755076,0,3.4,1,0,0 +3,0,1,5.703783,5.755076,0,3.4,1,0,0 +1,0,1,5.703783,5.755076,0,3.4,1,0,0 +3,0,1,5.703783,5.755076,0,3.4,1,0,0 +2,0,1,5.703783,5.755076,0,10.3,1,0,0 +1,0,1,5.703783,5.755076,0,10.3,1,0,0 +1,0,1,5.703783,5.755076,0,10.3,1,0,0 +4,0,1,5.703783,5.755076,0,10.3,1,0,0 +1,0,1,5.703783,5.755076,0,10.3,1,0,0 +5,0,0,5.875043,0,1,17.2,1,0,0 +3,0,0,5.875043,0,1,17.2,1,0,0 +2,0,0,5.875043,0,1,17.2,1,0,0 +5,0,0,5.875043,0,.1442925,10.57626,0,0,0 +1,0,0,5.875043,0,.1442925,10.57626,0,0,0 +3,0,0,5.875043,0,.1442925,10.57626,0,0,0 +1,0,0,5.875043,0,.1442925,10.57626,0,0,0 +2,0,0,5.875043,0,.1442925,10.57626,0,0,0 +2,0,0,5.875043,0,.1442925,10.57626,0,0,0 +0,0,0,5.369708,0,0,0,0,0,0 +0,0,0,5.369708,0,0,0,0,0,0 +0,0,0,5.369708,0,0,0,0,0,0 +0,0,0,5.369708,0,0,10.57626,0,1,0 +0,0,0,5.369708,0,0,10.57626,0,1,0 +0,0,0,5.369708,0,0,10.57626,0,1,0 +0,0,0,5.369708,0,0,13.8,1,0,0 +0,0,0,5.369708,0,0,13.8,1,0,0 +0,0,0,5.369708,0,0,3.4,0,0,0 +0,0,0,5.369708,0,0,3.4,0,0,0 +2,0,0,5.369708,0,0,3.4,0,0,0 +0,0,1,0,6.160541,0,10.3,0,0,0 +0,0,1,0,6.160541,0,10.3,0,0,0 +0,0,1,0,6.160541,0,10.3,0,0,0 +0,0,1,0,6.160541,1,10.3,1,0,0 +1,0,1,0,6.160541,1,10.3,1,0,0 +4,0,1,0,6.160541,1,10.3,1,0,0 +1,4.564348,0,6.772966,6.824259,0,27.6,1,0,0 +1,4.564348,0,6.772966,6.824259,0,27.6,1,0,0 +6,4.564348,0,6.772966,6.824259,0,27.6,1,0,0 +0,4.564348,0,6.772966,6.824259,0,10.57626,0,0,0 +0,4.564348,0,6.772966,6.824259,0,10.57626,0,0,0 +2,4.564348,0,6.772966,6.824259,0,10.57626,0,0,0 +1,4.564348,0,6.772966,6.824259,0,6.9,1,0,0 +0,4.564348,0,6.772966,6.824259,0,6.9,1,0,0 +0,4.564348,0,6.772966,6.824259,0,6.9,1,0,0 +0,4.564348,0,6.19461,6.245903,0,10.57626,1,0,0 +0,4.564348,0,6.19461,6.245903,0,10.57626,1,0,0 +1,4.564348,0,6.19461,6.245903,0,10.57626,1,0,0 +1,4.564348,0,6.19461,6.245903,0,10.57626,1,0,0 +3,4.564348,0,6.19461,6.245903,0,10.57626,1,0,0 +0,4.564348,0,6.19461,6.245903,0,10.3,1,0,0 +1,4.564348,0,6.19461,6.245903,0,10.3,1,0,0 +0,4.564348,0,6.19461,6.245903,0,10.3,1,0,0 +3,4.564348,0,6.19461,6.245903,0,10.3,1,0,0 +4,4.564348,0,6.19461,6.245903,0,10.3,1,0,0 +12,0,0,6.934592,0,1,20.7,0,1,0 +8,0,0,6.934592,0,1,20.7,0,1,0 +4,0,0,6.934592,0,1,20.7,0,1,0 +0,0,0,6.934592,0,0,10.3,1,0,0 +0,0,0,6.934592,0,0,10.3,1,0,0 +0,0,0,6.934592,0,0,10.3,1,0,0 +7,4.564348,0,5.97269,5.046476,0,24.1,0,1,0 +13,4.564348,0,5.97269,5.046476,0,24.1,0,1,0 +5,4.564348,0,5.97269,5.046476,0,24.1,0,1,0 +1,0,1,5.703783,5.755076,0,6.9,1,0,0 +0,0,1,5.703783,5.755076,0,6.9,1,0,0 +0,0,1,5.703783,5.755076,0,6.9,1,0,0 +1,0,1,5.703783,5.755076,0,10.57626,1,0,0 +1,0,1,5.703783,5.755076,0,10.57626,1,0,0 +0,0,1,5.703783,5.755076,0,10.57626,1,0,0 +11,3.931826,0,6.907755,7.600903,0,41.4,1,0,0 +4,3.931826,0,6.907755,7.600903,0,41.4,1,0,0 +8,3.931826,0,6.907755,7.600903,0,41.4,1,0,0 +2,3.931826,0,6.907755,7.600903,0,17.2,1,0,0 +0,3.931826,0,6.907755,7.600903,0,17.2,1,0,0 +3,3.931826,0,6.907755,7.600903,0,17.2,1,0,0 +0,3.258096,0,0,7.091243,0,0,1,0,0 +0,3.258096,0,0,7.091243,0,0,1,0,0 +0,3.258096,0,0,7.091243,0,0,1,0,0 +0,3.258096,0,5.752573,7.138867,0,0,0,1,0 +0,3.258096,0,5.752573,7.138867,0,0,0,1,0 +0,3.258096,0,5.752573,7.138867,0,0,0,1,0 +7,0,1,5.703783,6.160541,0,6.9,1,0,0 +2,0,1,5.703783,6.160541,0,6.9,1,0,0 +4,0,1,5.703783,6.160541,0,6.9,1,0,0 +3,0,1,5.703783,6.160541,0,13.8,1,0,0 +10,0,1,5.703783,6.160541,0,13.8,1,0,0 +16,0,1,5.703783,6.160541,0,13.8,1,0,0 +1,0,1,5.703783,6.160541,1,24.1,0,1,0 +2,0,1,5.703783,6.160541,1,24.1,0,1,0 +2,0,1,5.703783,6.160541,1,24.1,0,1,0 +5,0,1,5.703783,6.160541,0,20.7,0,1,0 +3,0,1,5.703783,6.160541,0,20.7,0,1,0 +6,0,1,5.703783,6.160541,0,20.7,0,1,0 +2,0,1,5.703783,6.160541,1,20.7,1,0,0 +0,0,1,5.703783,6.160541,1,20.7,1,0,0 +2,0,1,5.703783,6.160541,1,20.7,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +4,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +8,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +4,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +5,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +3,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +0,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +2,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +0,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +3,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +2,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,13.8,0,1,0 +0,0,0,0,0,0,13.8,0,1,0 +0,0,0,0,0,0,13.8,0,1,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +6,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,1,0,0 +2,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +10,0,1,5.010635,6.160541,0,6.9,1,0,0 +5,0,1,5.010635,6.160541,0,6.9,1,0,0 +0,0,1,5.010635,6.160541,0,6.9,1,0,0 +3,0,1,5.010635,6.160541,0,10.57626,1,0,0 +1,0,1,5.010635,6.160541,0,10.57626,1,0,0 +0,0,1,5.010635,6.160541,0,10.57626,1,0,0 +2,0,1,5.010635,6.160541,1,17.2,1,0,0 +1,0,1,5.010635,6.160541,1,17.2,1,0,0 +2,0,1,5.010635,6.160541,1,17.2,1,0,0 +0,0,0,6.030685,0,1,34.5,0,0,1 +3,0,0,6.030685,0,1,34.5,0,0,1 +10,0,0,6.030685,0,1,34.5,0,0,1 +1,0,0,6.030685,0,0,6.9,0,1,0 +10,0,0,6.030685,0,0,6.9,0,1,0 +12,0,0,6.030685,0,0,6.9,0,1,0 +0,0,0,6.030685,0,0,0,1,0,0 +0,0,0,6.030685,0,0,0,1,0,0 +2,0,0,6.030685,0,0,0,1,0,0 +1,0,0,6.030685,0,0,17.2,1,0,0 +0,0,0,6.030685,0,0,17.2,1,0,0 +4,0,0,6.030685,0,0,17.2,1,0,0 +1,0,1,5.703783,5.755076,0,10.3,0,0,0 +3,0,1,5.703783,5.755076,0,10.3,0,0,0 +2,0,1,5.703783,5.755076,0,10.3,0,0,0 +11,0,1,5.703783,5.755076,1,13.8,1,0,0 +1,0,1,5.703783,5.755076,1,13.8,1,0,0 +4,0,1,5.703783,5.755076,1,13.8,1,0,0 +0,3.258096,0,0,7.391662,1,31,0,1,0 +0,3.258096,0,0,7.391662,1,31,0,1,0 +3,3.258096,0,0,7.391662,1,31,0,1,0 +10,3.258096,0,0,7.391662,1,31,0,1,0 +22,3.258096,0,0,7.391662,1,31,0,1,0 +2,0,1,6.109248,6.160541,0,13.8,1,0,0 +5,0,1,6.109248,6.160541,0,13.8,1,0,0 +6,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +4,0,1,6.109248,6.160541,0,6.9,0,0,0 +3,0,1,6.109248,6.160541,0,6.9,0,0,0 +4,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +4,0,1,6.109248,6.160541,0,0,0,0,0 +1,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +4,3.258096,0,7.006478,7.976801,0,13.8,0,0,0 +1,3.258096,0,7.006478,7.976801,0,13.8,0,0,0 +1,3.258096,0,7.006478,7.976801,0,13.8,0,0,0 +2,3.258096,0,7.006478,7.976801,0,10.57626,0,0,0 +2,3.258096,0,7.006478,7.976801,0,10.57626,0,0,0 +2,3.258096,0,7.006478,7.976801,0,10.57626,0,0,0 +1,3.258096,0,7.006478,7.976801,0,10.3,0,0,0 +0,3.258096,0,7.006478,7.976801,0,10.3,0,0,0 +0,3.258096,0,7.006478,7.976801,0,10.3,0,0,0 +0,3.258096,0,7.006478,7.976801,0,10.57626,0,0,0 +2,3.258096,0,7.006478,7.976801,0,10.57626,0,0,0 +0,3.258096,0,7.006478,7.976801,0,10.57626,0,0,0 +0,0,0,0,0,0,0,0,0,0 +4,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0 +8,3.258096,0,6.510258,7.896553,1,31,1,0,0 +3,3.258096,0,6.510258,7.896553,1,31,1,0,0 +7,3.258096,0,6.510258,7.896553,1,31,1,0,0 +1,3.258096,0,6.510258,7.896553,0,6.9,0,0,0 +2,3.258096,0,6.510258,7.896553,0,6.9,0,0,0 +2,3.258096,0,6.510258,7.896553,0,6.9,0,0,0 +0,3.258096,0,6.510258,7.896553,0,10.57626,0,0,0 +0,3.258096,0,6.510258,7.896553,0,10.57626,0,0,0 +1,3.258096,0,6.510258,7.896553,0,10.57626,0,0,0 +0,0,1,5.010635,5.061929,0,10.3,0,0,0 +0,0,1,5.010635,5.061929,0,10.3,0,0,0 +0,0,1,5.010635,5.061929,0,10.3,0,0,0 +3,3.258096,0,6.620073,8.006368,1,10.57626,1,0,0 +2,3.258096,0,6.620073,8.006368,1,10.57626,1,0,0 +2,3.258096,0,6.620073,8.006368,1,10.57626,1,0,0 +4,3.258096,0,6.620073,8.006368,1,27.6,1,0,0 +1,3.258096,0,6.620073,8.006368,1,27.6,1,0,0 +5,3.258096,0,6.620073,8.006368,1,27.6,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +4,3.258096,0,6.620073,8.006368,1,37.9,0,0,1 +5,3.258096,0,6.620073,8.006368,1,37.9,0,0,1 +5,3.258096,0,6.620073,8.006368,1,37.9,0,0,1 +6,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +6,0,0,5.702181,0,0,17.2,0,0,0 +3,0,0,5.702181,0,0,17.2,0,0,0 +3,0,0,5.702181,0,0,17.2,0,0,0 +5,0,0,5.702181,0,0,17.2,0,0,0 +2,0,0,5.702181,0,0,17.2,0,0,0 +9,0,0,5.702181,0,0,13.8,0,0,0 +0,0,0,5.702181,0,0,13.8,0,0,0 +2,0,0,5.702181,0,0,13.8,0,0,0 +4,0,0,5.702181,0,0,13.8,0,0,0 +7,0,0,5.702181,0,0,13.8,0,0,0 +9,0,0,5.702181,0,0,3.4,1,0,0 +1,0,0,5.702181,0,0,3.4,1,0,0 +2,0,0,5.702181,0,0,3.4,1,0,0 +0,0,0,5.702181,0,0,3.4,1,0,0 +3,0,0,5.702181,0,0,3.4,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +2,3.258096,0,6.620073,8.006368,1,20.7,0,0,0 +1,3.258096,0,6.620073,8.006368,1,20.7,0,0,0 +0,3.258096,0,6.620073,8.006368,1,20.7,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +4,0,0,0,0,1,13.8,0,0,0 +5,0,0,0,0,1,13.8,0,0,0 +1,0,0,0,0,1,13.8,0,0,0 +0,3.258096,0,6.357409,7.743703,0,3.4,1,0,0 +0,3.258096,0,6.357409,7.743703,0,3.4,1,0,0 +1,3.258096,0,6.357409,7.743703,0,3.4,1,0,0 +0,3.258096,0,6.357409,7.743703,0,0,1,0,0 +7,3.258096,0,6.357409,7.743703,0,0,1,0,0 +1,3.258096,0,6.357409,7.743703,0,0,1,0,0 +0,3.258096,0,6.223171,7.609466,1,27.6,1,0,0 +0,3.258096,0,6.223171,7.609466,1,27.6,1,0,0 +1,3.258096,0,6.223171,7.609466,1,27.6,1,0,0 +0,3.258096,0,6.223171,7.609466,0,10.57626,0,0,0 +0,3.258096,0,6.223171,7.609466,0,10.57626,0,0,0 +0,3.258096,0,6.223171,7.609466,0,10.57626,0,0,0 +0,3.258096,0,6.223171,7.609466,0,10.3,0,0,0 +0,3.258096,0,6.223171,7.609466,0,10.3,0,0,0 +0,3.258096,0,6.223171,7.609466,0,10.3,0,0,0 +1,3.931826,0,0,7.600903,0,6.9,1,0,0 +0,3.931826,0,0,7.600903,0,6.9,1,0,0 +2,3.931826,0,0,7.600903,0,6.9,1,0,0 +0,3.931826,0,0,7.600903,0,10.57626,0,0,0 +2,3.931826,0,0,7.600903,0,10.57626,0,0,0 +4,3.931826,0,0,7.600903,0,10.57626,0,0,0 +0,3.931826,0,0,7.600903,0,10.57626,0,0,0 +0,3.931826,0,0,7.600903,0,10.57626,0,0,0 +0,3.931826,0,0,7.600903,0,10.57626,0,0,0 +0,0,0,2.890372,0,.1442925,10.57626,0,0,0 +2,0,0,2.890372,0,.1442925,10.57626,0,0,0 +0,0,0,2.890372,0,.1442925,10.57626,0,0,0 +3,0,0,2.890372,0,0,17.2,1,0,0 +3,0,0,2.890372,0,0,17.2,1,0,0 +4,0,0,2.890372,0,0,17.2,1,0,0 +2,0,0,2.890372,0,0,6.9,0,0,0 +1,0,0,2.890372,0,0,6.9,0,0,0 +3,0,0,2.890372,0,0,6.9,0,0,0 +0,0,1,5.010635,5.061929,0,6.9,0,0,0 +0,0,1,5.010635,5.061929,0,6.9,0,0,0 +0,0,1,5.010635,5.061929,0,6.9,0,0,0 +10,0,0,5.273,0,0,24.1,1,0,0 +2,0,0,5.273,0,0,24.1,1,0,0 +1,0,0,5.273,0,0,24.1,1,0,0 +2,0,0,5.273,0,0,10.57626,1,0,0 +0,0,0,5.273,0,0,10.57626,1,0,0 +1,0,0,5.273,0,0,10.57626,1,0,0 +4,0,0,5.273,0,0,3.4,1,0,0 +2,0,0,5.273,0,0,3.4,1,0,0 +1,0,0,5.273,0,0,3.4,1,0,0 +0,0,0,5.273,0,0,10.57626,1,0,0 +7,0,0,5.273,0,0,10.57626,1,0,0 +3,0,0,5.273,0,0,10.57626,1,0,0 +0,0,0,5.273,0,0,6.9,0,1,0 +0,0,0,5.273,0,0,6.9,0,1,0 +0,0,0,5.273,0,0,6.9,0,1,0 +0,4.564348,0,6.907755,6.959049,0,24.1,1,0,0 +0,4.564348,0,6.907755,6.959049,0,24.1,1,0,0 +2,4.564348,0,6.907755,6.959049,0,24.1,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,1,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,1,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,1,0 +1,4.564348,0,6.383507,6.4348,0,17.2,0,0,0 +3,4.564348,0,6.383507,6.4348,0,17.2,0,0,0 +0,4.564348,0,6.383507,6.4348,0,17.2,0,0,0 +0,4.564348,0,6.383507,6.4348,0,0,0,0,0 +0,4.564348,0,6.383507,6.4348,0,0,0,0,0 +0,4.564348,0,6.383507,6.4348,0,0,0,0,0 +1,0,0,0,0,.1442925,10.57626,0,0,0 +3,0,0,0,0,.1442925,10.57626,0,0,0 +3,0,0,0,0,.1442925,10.57626,0,0,0 +3,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +3,0,0,0,0,.1442925,10.57626,0,0,0 +3,0,0,0,0,.1442925,10.57626,0,0,0 +5,0,0,0,0,.1442925,10.57626,0,0,0 +2,0,0,0,0,.1442925,10.57626,0,0,0 +4,0,0,0,0,.1442925,10.57626,0,0,0 +2,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +4,0,0,0,0,.1442925,10.57626,0,0,0 +1,0,0,0,0,.1442925,10.57626,0,0,0 +1,0,0,0,0,.1442925,10.57626,0,0,0 +14,0,0,6.815157,0,0,10.57626,0,0,0 +12,0,0,6.815157,0,0,10.57626,0,0,0 +10,0,0,6.815157,0,0,10.57626,0,0,0 +5,0,0,6.815157,0,0,10.57626,0,0,0 +3,0,0,6.815157,0,0,10.57626,0,0,0 +6,0,0,0,0,1,6.9,0,0,0 +18,0,0,0,0,1,6.9,0,0,0 +11,0,0,0,0,1,6.9,0,0,0 +7,0,0,0,0,1,6.9,0,0,0 +4,0,0,0,0,1,6.9,0,0,0 +0,0,0,0,0,0,10.3,0,0,0 +7,0,0,0,0,0,10.3,0,0,0 +5,0,0,0,0,0,10.3,0,0,0 +2,0,0,0,0,0,10.3,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +0,4.564348,0,0,5.714254,0,3.4,0,0,0 +0,4.564348,0,0,5.714254,0,3.4,0,0,0 +0,4.564348,0,0,5.714254,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,20.7,0,0,0 +1,3.931826,0,6.907755,7.600903,0,20.7,0,0,0 +0,3.931826,0,6.907755,7.600903,0,20.7,0,0,0 +1,3.931826,0,6.907755,7.600903,0,20.7,0,0,0 +0,3.931826,0,6.907755,7.600903,0,20.7,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,5.977771,5.755076,0,17.2,1,0,0 +5,0,1,5.977771,5.755076,0,17.2,1,0,0 +2,0,1,5.977771,5.755076,0,17.2,1,0,0 +0,0,1,5.977771,5.755076,1,3.4,1,0,0 +0,0,1,5.977771,5.755076,1,3.4,1,0,0 +0,0,1,5.977771,5.755076,1,3.4,1,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,20.7,1,0,0 +3,0,0,0,0,0,20.7,1,0,0 +7,0,0,0,0,0,20.7,1,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +10,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +4,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +10,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +3,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +4,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +4,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,3.931826,0,6.907755,7.600903,0,24.1,0,0,0 +0,3.931826,0,6.907755,7.600903,0,24.1,0,0,0 +1,3.931826,0,6.907755,7.600903,0,24.1,0,0,0 +1,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +2,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +5,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +1,3.931826,0,6.907755,7.600903,1,10.57626,0,0,0 +0,3.931826,0,6.907755,7.600903,1,10.57626,0,0,0 +0,3.931826,0,6.907755,7.600903,1,10.57626,0,0,0 +1,0,0,6.287598,0,0,10.57626,0,0,0 +7,0,0,6.287598,0,0,10.57626,0,0,0 +7,0,0,6.287598,0,0,10.57626,0,0,0 +1,0,0,6.287598,0,0,10.57626,0,1,0 +3,0,0,6.287598,0,0,10.57626,0,1,0 +7,0,0,6.287598,0,0,10.57626,0,1,0 +1,0,0,6.287598,0,0,10.57626,0,1,0 +8,0,0,6.287598,0,0,10.57626,0,1,0 +5,0,0,6.287598,0,0,10.57626,0,1,0 +1,0,0,6.287598,0,0,6.9,0,0,0 +2,0,0,6.287598,0,0,6.9,0,0,0 +5,0,0,6.287598,0,0,6.9,0,0,0 +1,0,0,6.287598,0,0,10.3,0,1,0 +7,0,0,6.287598,0,0,10.3,0,1,0 +9,0,0,6.287598,0,0,10.3,0,1,0 +2,0,0,6.287598,0,0,10.57626,0,0,0 +3,0,0,6.287598,0,0,10.57626,0,0,0 +3,0,0,6.287598,0,0,10.57626,0,0,0 +6,0,0,6.287598,0,0,3.4,0,0,0 +6,0,0,6.287598,0,0,3.4,0,0,0 +0,0,0,6.287598,0,0,3.4,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +1,0,0,6.437399,0,0,6.9,0,0,0 +2,4.564348,0,6.745236,6.79653,0,13.8,0,0,0 +1,4.564348,0,6.745236,6.79653,0,13.8,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,6.384047,0,0,10.57626,0,0,0 +2,0,0,6.384047,0,0,10.57626,0,0,0 +1,0,0,6.384047,0,0,10.57626,0,0,0 +10,0,0,5.879527,0,.1442925,10.57626,0,0,0 +7,0,0,5.879527,0,.1442925,10.57626,0,0,0 +1,0,0,5.879527,0,.1442925,10.57626,0,0,0 +1,0,0,5.879527,0,.1442925,10.57626,0,0,0 +4,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,0,0,0 +0,4.564348,0,4.959693,5.010986,0,10.57626,0,0,0 +0,4.564348,0,4.959693,5.010986,0,10.57626,0,0,0 +0,4.564348,0,4.959693,5.010986,0,10.57626,0,0,0 +4,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +3,0,1,6.109248,6.160541,1,6.9,0,0,0 +5,0,1,6.109248,6.160541,1,6.9,0,0,0 +8,0,1,6.109248,6.160541,1,6.9,0,0,0 +11,0,1,5.010635,5.061929,.1442925,10.57626,0,0,0 +0,0,1,5.010635,5.061929,.1442925,10.57626,0,0,0 +1,0,1,5.010635,5.061929,.1442925,10.57626,0,0,0 +0,0,1,5.010635,5.061929,.1442925,10.57626,0,0,0 +1,4.564348,0,5.98202,5.799093,.1442925,10.57626,0,0,0 +0,4.564348,0,5.98202,5.799093,.1442925,10.57626,0,0,0 +0,4.564348,0,5.98202,5.799093,.1442925,10.57626,0,0,0 +5,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +12,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +3,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +11,0,0,6.152051,0,.1442925,10.57626,0,0,0 +12,0,0,6.152051,0,.1442925,10.57626,0,0,0 +5,0,0,6.152051,0,.1442925,10.57626,0,0,0 +4,0,0,6.152051,0,.1442925,10.57626,0,0,0 +28,0,0,0,0,.1442925,10.57626,0,0,0 +11,0,0,0,0,.1442925,10.57626,0,0,0 +5,0,0,0,0,.1442925,10.57626,0,0,0 +1,0,0,0,0,.1442925,10.57626,0,0,0 +0,3.258096,0,5.810392,7.196687,.1442925,10.57626,0,0,0 +1,3.258096,0,5.810392,7.196687,.1442925,10.57626,0,0,0 +0,3.258096,0,5.810392,7.196687,.1442925,10.57626,0,0,0 +0,3.258096,0,5.810392,7.196687,.1442925,10.57626,0,0,0 +5,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +1,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +5,0,1,6.109248,6.160541,0,10.57626,0,0,0 +3,0,1,6.109248,6.160541,0,10.57626,0,0,0 +4,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,.1442925,10.57626,0,0,0 +0,0,1,0,6.160541,.1442925,10.57626,0,0,0 +0,0,1,0,6.160541,.1442925,10.57626,0,0,0 +2,0,1,0,6.160541,.1442925,10.57626,0,0,0 +15,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +8,0,0,6.819711,0,0,10.57626,0,0,0 +11,0,0,6.819711,0,0,10.57626,0,0,0 +9,0,0,6.819711,0,0,10.57626,0,0,0 +2,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,5.753049,5.804342,0,13.8,0,0,0 +0,4.564348,0,5.753049,5.804342,0,13.8,0,0,0 +0,4.564348,0,5.753049,5.804342,0,13.8,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +6,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +6,0,1,5.928099,5.755076,0,10.3,0,0,0 +0,0,1,5.928099,5.755076,0,10.3,0,0,0 +3,0,1,5.928099,5.755076,0,10.3,0,0,0 +1,0,0,6.532596,0,0,10.57626,0,0,0 +2,0,0,6.532596,0,0,10.57626,0,0,0 +1,0,0,6.532596,0,0,10.57626,0,0,0 +2,0,0,6.532596,0,0,17.2,0,0,0 +10,0,0,6.532596,0,0,17.2,0,0,0 +7,0,0,6.532596,0,0,17.2,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,4.564348,0,5.783825,5.835118,0,10.57626,0,0,0 +2,4.564348,0,5.783825,5.835118,0,10.57626,0,0,0 +0,4.564348,0,5.783825,5.835118,0,10.57626,0,0,0 +4,0,1,6.761573,6.160541,0,10.57626,0,0,0 +1,0,1,6.761573,6.160541,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +5,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +4,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.471356,5.771441,0,10.57626,0,0,0 +0,3.258096,0,6.471356,5.771441,0,10.57626,0,0,0 +0,3.258096,0,6.471356,5.771441,0,10.57626,0,0,0 +8,3.931826,0,6.907755,7.600903,.1442925,10.57626,0,0,0 +4,3.931826,0,6.907755,7.600903,.1442925,10.57626,0,0,0 +2,3.931826,0,6.907755,7.600903,.1442925,10.57626,0,0,0 +10,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +3,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +3,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,3.258096,0,0,6.635421,.1442925,10.57626,0,0,0 +0,3.258096,0,0,6.635421,.1442925,10.57626,0,0,0 +1,0,0,0,0,0,10.3,0,0,0 +2,0,0,0,0,0,10.3,0,0,0 +2,0,0,0,0,0,10.3,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +2,0,1,0,6.160541,0,10.57626,0,0,0 +4,0,1,5.010635,6.160541,0,10.57626,0,0,0 +1,0,1,5.010635,6.160541,0,10.57626,0,0,0 +4,0,1,5.010635,6.160541,0,10.57626,0,0,0 +8,0,0,0,0,0,10.57626,0,0,0 +7,0,0,0,0,0,10.57626,0,0,0 +8,0,0,0,0,0,10.57626,0,0,0 +11,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +9,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +2,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,0,0,4.510859,0,.1442925,10.57626,0,0,0 +0,0,0,4.510859,0,.1442925,10.57626,0,0,0 +1,0,0,0,0,1,0,0,0,0 +0,0,0,0,0,1,0,0,0,0 +0,0,0,0,0,1,0,0,0,0 +0,0,1,6.109248,6.160541,1,10.57626,0,0,0 +0,0,1,6.109248,6.160541,1,10.57626,0,0,0 +0,0,1,6.109248,6.160541,1,10.57626,0,0,0 +4,0,0,2.890372,0,0,10.57626,0,0,0 +3,0,0,2.890372,0,0,10.57626,0,0,0 +3,0,0,2.890372,0,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +3,0,0,0,0,.1442925,10.57626,0,0,0 +1,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,7.080969,0,0,0,0,0,0 +0,0,0,7.080969,0,0,0,0,0,0 +0,0,0,7.080969,0,0,0,0,0,0 +1,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +14,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +8,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +2,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +6,4.564348,0,4.945919,4.997212,.1442925,10.57626,0,0,0 +1,4.564348,0,4.945919,4.997212,.1442925,10.57626,0,0,0 +17,0,0,6.030685,0,.1442925,10.57626,0,0,0 +12,0,0,6.030685,0,.1442925,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,5.752573,7.138867,.1442925,10.57626,0,0,0 +0,3.258096,0,5.752573,7.138867,.1442925,10.57626,0,0,0 +11,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +10,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +6,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +13,0,0,6.819711,0,.1442925,10.57626,0,0,0 +8,0,0,6.819711,0,.1442925,10.57626,0,0,0 +2,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +7,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +3,0,0,5.294309,0,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,4.564348,0,7.06732,6.675624,.1442925,10.57626,0,0,0 +0,4.564348,0,7.06732,6.675624,.1442925,10.57626,0,0,0 +2,0,1,0,6.160541,.1442925,10.57626,0,0,0 +0,4.564348,0,5.783825,5.835118,.1442925,10.57626,0,0,0 +6,3.258096,0,6.357409,7.743703,.1442925,10.57626,0,0,0 +0,4.564348,0,6.160574,6.211867,.1442925,10.57626,0,0,0 +1,4.564348,0,6.160574,6.211867,.1442925,10.57626,0,0,0 +0,0,1,0,6.160541,.1442925,10.57626,0,0,0 +5,0,0,0,0,.1442925,10.57626,0,0,0 +6,4.564348,0,5.753049,5.804342,.1442925,10.57626,0,0,0 +5,0,0,0,0,.1442925,10.57626,0,0,0 +6,0,0,0,0,.1442925,10.57626,0,0,0 +18,0,0,0,0,.1442925,10.57626,0,0,0 +5,0,0,0,0,.1442925,10.57626,0,0,0 +8,0,0,0,0,.1442925,10.57626,0,0,0 +11,0,0,6.206979,0,.1442925,10.57626,0,0,0 +5,0,0,5.702181,0,.1442925,10.57626,0,0,0 +6,0,1,0,6.160541,.1442925,10.57626,0,0,0 +0,4.564348,0,6.649632,6.700925,.1442925,10.57626,0,0,0 +11,0,0,6.030685,0,.1442925,10.57626,0,0,0 +10,0,1,5.703783,5.755076,.1442925,10.57626,0,0,0 +0,3.258096,0,5.752573,7.138867,.1442925,10.57626,0,0,0 +0,4.564348,0,5.991465,6.042758,0,10.3,0,0,0 +0,4.564348,0,5.991465,6.042758,0,10.3,0,0,0 +0,4.564348,0,5.991465,6.042758,0,10.3,0,0,0 +0,4.564348,0,5.991465,6.042758,0,6.9,0,0,0 +2,4.564348,0,5.991465,6.042758,0,6.9,0,0,0 +2,4.564348,0,5.991465,6.042758,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,1,0 +0,4.564348,0,6.907755,6.959049,0,10.3,0,1,0 +1,4.564348,0,6.907755,6.959049,0,10.3,0,1,0 +1,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +2,3.258096,0,6.311226,6.966024,0,10.57626,0,0,0 +3,3.258096,0,6.311226,6.966024,0,10.57626,0,0,0 +0,3.258096,0,6.311226,6.966024,0,10.57626,0,0,0 +4,3.258096,0,6.311226,6.966024,0,6.9,0,0,0 +5,3.258096,0,6.311226,6.966024,0,6.9,0,0,0 +1,3.258096,0,6.311226,6.966024,0,6.9,0,0,0 +1,0,0,5.634933,0,0,10.57626,1,0,0 +0,0,0,5.634933,0,0,10.57626,1,0,0 +2,0,0,5.634933,0,0,10.57626,1,0,0 +3,0,0,5.634933,0,0,10.57626,1,0,0 +1,0,0,5.634933,0,0,10.57626,1,0,0 +0,0,0,5.634933,0,0,0,0,0,0 +0,0,0,5.634933,0,0,0,0,0,0 +2,0,0,5.634933,0,0,0,0,0,0 +5,0,0,5.634933,0,0,0,0,0,0 +1,0,0,5.634933,0,0,0,0,0,0 +18,0,0,5.634933,0,0,17.2,0,0,1 +4,0,0,5.634933,0,0,17.2,0,0,1 +9,0,0,5.634933,0,0,17.2,0,0,1 +4,0,0,5.634933,0,0,17.2,0,0,1 +3,0,0,5.634933,0,0,17.2,0,0,1 +1,0,0,5.634933,0,0,6.9,1,0,0 +9,0,0,5.634933,0,0,6.9,1,0,0 +1,0,0,5.634933,0,0,6.9,1,0,0 +0,0,0,5.634933,0,0,6.9,1,0,0 +0,0,0,5.634933,0,0,6.9,1,0,0 +2,0,0,6.264845,0,0,10.3,0,0,0 +5,0,0,6.264845,0,0,10.3,0,0,0 +3,0,0,6.264845,0,0,10.3,0,0,0 +2,0,0,6.264845,0,0,10.3,0,0,0 +2,0,0,6.264845,0,0,10.3,0,0,0 +2,0,0,6.264845,0,1,0,0,0,0 +1,0,0,6.264845,0,1,0,0,0,0 +1,0,0,6.264845,0,1,0,0,0,0 +1,0,0,6.264845,0,1,0,0,0,0 +1,0,0,6.264845,0,1,0,0,0,0 +3,0,0,6.264845,0,0,3.4,0,0,0 +3,0,0,6.264845,0,0,3.4,0,0,0 +1,0,0,6.264845,0,0,3.4,0,0,0 +3,0,0,6.264845,0,0,3.4,0,0,0 +3,0,0,6.264845,0,0,3.4,0,0,0 +2,0,0,6.264845,0,0,10.3,0,0,0 +1,0,0,6.264845,0,0,10.3,0,0,0 +4,0,0,6.264845,0,0,10.3,0,0,0 +3,0,0,6.264845,0,0,10.3,0,0,0 +2,0,0,6.264845,0,0,10.3,0,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,1,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,1,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,1,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,1,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,1,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,1,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,1,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,1,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,1,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,1,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,1,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,1,0,0 +1,4.564348,0,3.883624,3.934917,.1442925,10.57626,1,0,0 +1,4.564348,0,3.883624,3.934917,.1442925,10.57626,1,0,0 +3,4.564348,0,6.939874,6.602374,0,17.2,1,0,0 +0,4.564348,0,6.939874,6.602374,1,10.3,1,0,0 +2,4.564348,0,6.015181,5.734873,1,3.4,0,1,0 +1,4.564348,0,6.015181,5.734873,1,3.4,0,1,0 +1,4.564348,0,6.015181,5.734873,1,3.4,0,1,0 +9,4.564348,0,6.015181,5.734873,1,3.4,0,1,0 +3,4.564348,0,6.015181,5.734873,1,3.4,0,1,0 +2,4.564348,0,6.015181,5.734873,1,3.4,1,0,0 +0,4.564348,0,6.015181,5.734873,1,3.4,1,0,0 +2,4.564348,0,6.015181,5.734873,1,3.4,1,0,0 +0,4.564348,0,6.015181,5.734873,1,3.4,1,0,0 +3,4.564348,0,6.015181,5.734873,1,3.4,1,0,0 +7,4.564348,0,6.015181,5.734873,1,13.8,1,0,0 +13,4.564348,0,6.015181,5.734873,1,13.8,1,0,0 +7,4.564348,0,6.015181,5.734873,1,13.8,1,0,0 +17,4.564348,0,6.015181,5.734873,1,13.8,1,0,0 +10,4.564348,0,6.015181,5.734873,1,13.8,1,0,0 +1,4.564348,0,6.015181,5.734873,1,10.57626,1,0,0 +1,4.564348,0,6.015181,5.734873,1,10.57626,1,0,0 +0,4.564348,0,6.015181,5.734873,1,10.57626,1,0,0 +0,4.564348,0,6.015181,5.734873,1,10.57626,1,0,0 +0,4.564348,0,6.015181,5.734873,1,10.57626,1,0,0 +2,3.258096,0,0,6.907755,1,17.2,1,0,0 +1,3.258096,0,0,6.907755,1,17.2,1,0,0 +1,3.258096,0,0,6.907755,1,17.2,1,0,0 +0,0,0,0,0,1,31,1,0,0 +2,0,0,0,0,1,31,1,0,0 +2,0,0,0,0,1,31,1,0,0 +4,0,0,0,0,0,10.3,1,0,0 +3,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,20.7,1,0,0 +1,0,0,0,0,0,20.7,1,0,0 +1,0,0,0,0,0,20.7,1,0,0 +2,4.564348,0,6.232605,6.2643,1,13.8,1,0,0 +0,4.564348,0,6.232605,6.2643,1,13.8,1,0,0 +0,4.564348,0,6.232605,6.2643,1,13.8,1,0,0 +0,4.564348,0,6.232605,6.2643,1,13.8,1,0,0 +0,4.564348,0,6.232605,6.2643,1,13.8,1,0,0 +0,4.564348,0,6.232605,6.2643,1,10.3,1,0,0 +0,4.564348,0,6.232605,6.2643,1,10.3,1,0,0 +0,0,0,5.903944,0,0,10.3,1,0,0 +1,0,0,5.903944,0,0,10.3,1,0,0 +2,0,0,5.903944,0,0,10.3,1,0,0 +0,0,0,5.903944,0,0,10.57626,0,1,0 +2,0,0,5.903944,0,0,10.57626,0,1,0 +2,0,0,5.903944,0,0,10.57626,0,1,0 +1,0,0,4.094345,0,1,6.9,1,0,0 +3,0,0,4.094345,0,1,6.9,1,0,0 +4,0,0,4.094345,0,1,6.9,1,0,0 +4,0,0,4.094345,0,1,6.9,1,0,0 +2,0,0,4.094345,0,1,6.9,1,0,0 +4,0,0,4.094345,0,0,10.3,1,0,0 +14,0,0,4.094345,0,0,10.3,1,0,0 +13,0,0,4.094345,0,0,10.3,1,0,0 +7,0,0,4.094345,0,0,10.3,1,0,0 +1,0,0,4.094345,0,0,10.3,1,0,0 +0,0,1,5.703783,5.755076,0,0,1,0,0 +0,0,1,5.703783,5.755076,0,0,1,0,0 +1,0,1,5.703783,5.755076,0,0,1,0,0 +0,0,1,5.703783,5.755076,0,13.8,1,0,0 +1,0,1,5.703783,5.755076,0,13.8,1,0,0 +1,0,1,5.703783,5.755076,0,13.8,1,0,0 +2,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +5,0,0,0,0,0,6.9,0,0,0 +3,0,0,0,0,0,6.9,0,0,0 +5,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +1,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,17.2,0,0,0 +0,3.931826,0,6.907755,7.600903,0,17.2,0,0,0 +1,3.931826,0,6.907755,7.600903,0,17.2,0,0,0 +5,3.931826,0,6.907755,7.600903,0,20.7,0,1,0 +5,3.931826,0,6.907755,7.600903,0,20.7,0,1,0 +0,3.931826,0,6.907755,7.600903,0,20.7,0,1,0 +0,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +1,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +2,0,0,5.039806,0,0,0,0,1,0 +3,0,0,5.039806,0,0,0,0,1,0 +0,0,0,5.039806,0,0,0,0,1,0 +4,0,0,5.039806,0,0,10.3,0,1,0 +1,0,0,5.039806,0,0,10.3,0,1,0 +3,0,0,5.039806,0,0,10.3,0,1,0 +0,0,0,5.259992,0,0,13.8,1,0,0 +2,0,0,5.259992,0,0,13.8,1,0,0 +1,0,0,5.259992,0,0,13.8,1,0,0 +6,0,0,5.259992,0,0,17.2,0,1,0 +10,0,0,5.259992,0,0,17.2,0,1,0 +3,0,0,5.259992,0,0,17.2,0,1,0 +2,4.564348,0,5.752731,5.804342,1,6.9,0,1,0 +1,4.564348,0,5.752731,5.804342,1,6.9,0,1,0 +3,4.564348,0,5.752731,5.804342,1,6.9,0,1,0 +4,4.564348,0,5.752731,5.804342,1,6.9,0,1,0 +4,4.564348,0,5.752731,5.804342,1,6.9,0,1,0 +0,0,1,5.010635,5.061929,0,3.4,1,0,0 +0,0,1,5.010635,5.061929,0,3.4,1,0,0 +1,0,1,5.010635,5.061929,0,3.4,1,0,0 +7,3.258096,0,5.762052,7.148346,1,24.1,0,1,0 +19,3.258096,0,5.762052,7.148346,1,24.1,0,1,0 +6,3.258096,0,5.762052,7.148346,1,24.1,0,1,0 +0,3.258096,0,0,5.991465,0,3.4,0,0,0 +0,3.258096,0,0,5.991465,0,3.4,0,0,0 +3,3.258096,0,0,5.991465,0,3.4,0,0,0 +1,3.258096,0,5.762052,7.148346,0,10.57626,0,0,0 +2,3.258096,0,5.762052,7.148346,0,10.57626,0,0,0 +3,3.258096,0,5.762052,7.148346,0,10.57626,0,0,0 +0,0,1,5.703783,5.755076,1,34.5,0,1,0 +0,0,1,5.703783,5.755076,1,34.5,0,1,0 +0,0,1,5.703783,5.755076,1,34.5,0,1,0 +0,0,1,5.703783,5.755076,1,34.5,0,1,0 +0,0,1,5.703783,5.755076,1,34.5,0,1,0 +0,0,1,5.703783,5.755076,1,10.3,1,0,0 +0,0,1,5.703783,5.755076,1,10.3,1,0,0 +0,0,1,5.703783,5.755076,1,10.3,1,0,0 +0,0,1,5.703783,5.755076,1,10.3,1,0,0 +0,0,1,5.703783,5.755076,1,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,13.8,0,0,0 +1,0,1,6.109248,6.160541,0,13.8,0,0,0 +0,0,1,6.109248,6.160541,0,13.8,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +6,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +2,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +4,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +4,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +1,0,1,6.109248,6.160541,0,10.3,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +3,0,1,6.109248,6.160541,0,6.9,0,0,0 +5,0,1,5.342525,5.061929,1,34.5,0,1,0 +6,0,1,5.342525,5.061929,1,34.5,0,1,0 +5,0,1,5.342525,5.061929,1,34.5,0,1,0 +0,0,1,0,6.160541,0,6.9,1,0,0 +0,0,1,0,6.160541,0,6.9,1,0,0 +0,0,1,0,6.160541,0,6.9,1,0,0 +0,0,1,0,6.160541,0,3.4,1,0,0 +3,0,1,0,6.160541,0,3.4,1,0,0 +2,0,1,0,6.160541,0,3.4,1,0,0 +0,0,1,0,6.160541,.1442925,10.57626,1,0,0 +0,0,1,0,6.160541,.1442925,10.57626,1,0,0 +0,0,1,0,6.160541,.1442925,10.57626,1,0,0 +1,3.258096,0,6.54002,7.926314,0,20.7,1,0,0 +4,3.258096,0,6.54002,7.926314,0,20.7,1,0,0 +1,3.258096,0,6.54002,7.926314,0,20.7,1,0,0 +0,3.258096,0,6.54002,7.926314,0,10.57626,0,0,0 +0,3.258096,0,6.54002,7.926314,0,10.57626,0,0,0 +0,3.258096,0,6.54002,7.926314,0,10.57626,0,0,0 +0,3.258096,0,6.54002,7.926314,0,10.3,1,0,0 +0,3.258096,0,6.54002,7.926314,0,10.3,1,0,0 +0,3.258096,0,6.54002,7.926314,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,1,0 +2,0,1,6.109248,6.160541,0,6.9,0,1,0 +0,0,1,6.109248,6.160541,0,6.9,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,1,0 +0,0,1,6.109248,6.160541,1,10.57626,0,1,0 +0,0,1,6.109248,6.160541,1,10.57626,0,1,0 +0,0,1,6.109248,6.160541,1,10.57626,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,1,0 +0,4.564348,0,5.655992,4.646413,0,10.57626,0,0,0 +2,4.564348,0,5.655992,4.646413,0,10.57626,0,0,0 +0,4.564348,0,5.655992,4.646413,0,10.57626,0,0,0 +0,4.564348,0,5.655992,4.646413,.1442925,10.57626,0,0,0 +0,4.564348,0,5.655992,4.646413,.1442925,10.57626,0,0,0 +0,4.564348,0,5.655992,4.646413,.1442925,10.57626,0,0,0 +0,4.564348,0,5.655992,4.646413,0,0,0,0,0 +0,4.564348,0,5.655992,4.646413,0,0,0,0,0 +0,4.564348,0,5.655992,4.646413,0,0,0,0,0 +1,4.564348,0,5.655992,4.646413,0,34.5,0,0,0 +5,4.564348,0,5.655992,4.646413,0,34.5,0,0,0 +0,4.564348,0,5.655992,4.646413,0,34.5,0,0,0 +4,4.564348,0,5.655992,4.646413,1,27.6,1,0,0 +2,4.564348,0,5.655992,4.646413,1,27.6,1,0,0 +0,4.564348,0,5.655992,4.646413,1,27.6,1,0,0 +0,4.564348,0,5.655992,4.646413,.1442925,10.57626,0,0,0 +0,4.564348,0,5.655992,4.646413,.1442925,10.57626,0,0,0 +0,4.564348,0,5.655992,4.646413,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,1,0,0 +3,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +2,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,0,6.160541,1,34.5,0,0,1 +0,0,1,0,6.160541,1,34.5,0,0,1 +1,0,1,0,6.160541,1,34.5,0,0,1 +0,0,1,0,6.160541,0,3.4,1,0,0 +0,0,1,0,6.160541,0,3.4,1,0,0 +0,0,1,0,6.160541,0,3.4,1,0,0 +1,0,1,0,6.160541,1,6.9,0,0,1 +2,0,1,0,6.160541,1,6.9,0,0,1 +1,0,1,0,6.160541,1,6.9,0,0,1 +5,4.564348,0,6.460843,6.512136,0,6.9,1,0,0 +0,4.564348,0,6.460843,6.512136,0,6.9,1,0,0 +0,4.564348,0,6.460843,6.512136,0,6.9,1,0,0 +0,3.931826,0,6.462249,7.155396,0,3.4,0,0,0 +1,3.931826,0,6.462249,7.155396,0,3.4,0,0,0 +0,3.931826,0,6.462249,7.155396,0,3.4,0,0,0 +40,0,0,5.315371,0,0,17.2,1,0,0 +12,0,0,5.315371,0,0,17.2,1,0,0 +9,0,0,5.315371,0,0,17.2,1,0,0 +9,0,0,5.315371,0,0,17.2,1,0,0 +3,0,0,5.315371,0,0,17.2,1,0,0 +3,0,0,5.315371,0,0,6.9,0,0,0 +0,0,0,5.315371,0,0,6.9,0,0,0 +0,0,0,5.315371,0,0,6.9,0,0,0 +3,0,0,5.315371,0,0,6.9,0,0,0 +6,0,0,5.315371,0,0,6.9,0,0,0 +3,0,0,6.100677,0,0,10.3,1,0,0 +2,0,0,6.100677,0,0,10.3,1,0,0 +1,0,0,6.100677,0,0,10.3,1,0,0 +1,0,0,6.100677,0,0,10.3,1,0,0 +0,0,0,6.100677,0,0,10.3,1,0,0 +2,0,0,6.100677,0,0,6.9,1,0,0 +0,0,0,6.100677,0,0,6.9,1,0,0 +0,0,0,6.100677,0,0,6.9,1,0,0 +0,0,0,6.100677,0,0,6.9,1,0,0 +1,0,0,6.100677,0,0,6.9,1,0,0 +0,0,0,6.100677,0,0,10.57626,1,0,0 +0,0,0,6.100677,0,0,10.57626,1,0,0 +1,0,0,6.100677,0,0,10.57626,1,0,0 +0,0,0,6.100677,0,0,10.57626,1,0,0 +2,0,0,6.100677,0,0,10.57626,1,0,0 +1,0,0,6.100677,0,0,17.2,1,0,0 +5,0,0,6.100677,0,0,17.2,1,0,0 +1,0,0,6.100677,0,0,17.2,1,0,0 +1,0,0,6.100677,0,0,17.2,1,0,0 +2,0,0,6.100677,0,0,17.2,1,0,0 +0,0,0,6.100677,0,0,20.7,0,1,0 +5,0,0,6.100677,0,0,20.7,0,1,0 +1,0,0,6.100677,0,0,20.7,0,1,0 +1,0,0,6.100677,0,0,20.7,0,1,0 +1,0,0,6.100677,0,0,20.7,0,1,0 +2,0,0,6.100677,0,0,6.9,1,0,0 +2,0,0,6.100677,0,0,6.9,1,0,0 +5,0,0,6.100677,0,0,6.9,1,0,0 +2,0,0,6.100677,0,0,6.9,1,0,0 +4,0,0,6.100677,0,0,6.9,1,0,0 +2,3.258096,0,6.507277,7.893572,0,6.9,0,1,0 +1,3.258096,0,6.507277,7.893572,0,6.9,0,1,0 +0,3.258096,0,6.507277,7.893572,0,6.9,0,1,0 +0,3.258096,0,6.507277,7.893572,.1442925,10.57626,1,0,0 +2,3.258096,0,6.507277,7.893572,.1442925,10.57626,1,0,0 +3,3.258096,0,6.507277,7.893572,.1442925,10.57626,1,0,0 +1,3.258096,0,6.507277,7.893572,.1442925,10.57626,1,0,0 +0,3.258096,0,6.507277,7.893572,.1442925,10.57626,1,0,0 +2,3.258096,0,6.507277,7.893572,.1442925,10.57626,1,0,0 +2,3.258096,0,6.507277,7.893572,0,10.3,0,1,0 +0,3.258096,0,6.507277,7.893572,0,10.3,0,1,0 +1,3.258096,0,6.507277,7.893572,0,10.3,0,1,0 +9,3.258096,0,5.156178,6.542472,0,3.4,1,0,0 +5,3.258096,0,5.156178,6.542472,0,3.4,1,0,0 +4,3.258096,0,5.156178,6.542472,0,3.4,1,0,0 +0,3.258096,0,5.156178,6.542472,0,6.9,0,0,0 +0,3.258096,0,5.156178,6.542472,0,6.9,0,0,0 +0,3.258096,0,5.156178,6.542472,0,6.9,0,0,0 +3,3.258096,0,5.156178,6.542472,1,24.1,0,1,0 +4,3.258096,0,5.156178,6.542472,1,24.1,0,1,0 +5,3.258096,0,5.156178,6.542472,1,24.1,0,1,0 +4,3.258096,0,5.156178,6.542472,0,6.9,1,0,0 +0,3.258096,0,5.156178,6.542472,0,6.9,1,0,0 +1,3.258096,0,5.156178,6.542472,0,6.9,1,0,0 +1,3.258096,0,5.156178,6.542472,1,17.2,0,0,0 +1,3.258096,0,5.156178,6.542472,1,17.2,0,0,0 +2,3.258096,0,5.156178,6.542472,1,17.2,0,0,0 +0,4.564348,0,0,6.679335,0,6.9,1,0,0 +0,4.564348,0,0,6.679335,0,6.9,1,0,0 +0,4.564348,0,0,6.679335,0,6.9,1,0,0 +0,4.564348,0,0,6.679335,0,17.2,0,1,0 +0,4.564348,0,0,6.679335,0,17.2,0,1,0 +0,4.564348,0,0,6.679335,0,17.2,0,1,0 +0,4.564348,0,0,6.679335,0,10.57626,0,0,0 +0,4.564348,0,0,6.679335,0,10.57626,0,0,0 +0,4.564348,0,0,6.679335,0,10.57626,0,0,0 +2,4.564348,0,5.857933,5.909226,0,3.4,1,0,0 +1,4.564348,0,5.857933,5.909226,1,10.57626,1,0,0 +2,4.564348,0,5.857933,5.909226,0,10.57626,1,0,0 +3,4.564348,0,5.857933,5.909226,1,10.3,1,0,0 +0,0,1,5.010635,6.160541,0,0,0,0,0 +0,0,1,5.010635,6.160541,0,0,0,0,0 +0,0,1,5.010635,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +6,0,0,3.401197,0,1,6.9,0,0,1 +8,0,0,3.401197,0,1,6.9,0,0,1 +3,0,0,3.401197,0,1,6.9,0,0,1 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +3,0,0,0,0,0,13.8,1,0,0 +1,0,0,0,0,0,13.8,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +1,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +2,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0 +1,0,0,0,0,0,0,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +3,0,1,6.109248,6.160541,0,10.57626,1,0,0 +2,0,1,6.109248,6.160541,0,10.57626,1,0,0 +2,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +2,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +3,0,1,6.109248,6.160541,0,10.3,1,0,0 +16,0,1,6.109248,6.160541,0,10.3,1,0,0 +12,0,1,6.109248,6.160541,0,10.3,1,0,0 +5,3.258096,0,6.401171,7.787465,0,6.9,1,0,0 +1,3.258096,0,6.401171,7.787465,0,6.9,1,0,0 +1,3.258096,0,6.401171,7.787465,0,6.9,1,0,0 +0,3.258096,0,6.401171,7.787465,0,17.2,1,0,0 +0,3.258096,0,6.401171,7.787465,0,17.2,1,0,0 +0,3.258096,0,6.401171,7.787465,0,17.2,1,0,0 +0,3.258096,0,6.401171,7.787465,0,20.7,1,0,0 +1,3.258096,0,6.401171,7.787465,0,20.7,1,0,0 +3,3.258096,0,6.401171,7.787465,0,20.7,1,0,0 +11,0,0,5.030438,0,1,6.9,1,0,0 +11,0,0,5.030438,0,1,6.9,1,0,0 +9,0,0,5.030438,0,1,6.9,1,0,0 +7,0,0,5.030438,0,1,6.9,1,0,0 +2,0,0,5.030438,0,1,6.9,1,0,0 +0,0,1,5.010635,6.160541,0,0,1,0,0 +0,0,1,5.010635,6.160541,0,10.57626,0,1,0 +0,0,1,5.010635,6.160541,0,10.57626,0,1,0 +0,0,1,5.010635,6.160541,0,10.57626,0,1,0 +0,0,1,5.010635,6.160541,0,10.57626,0,1,0 +3,0,1,5.010635,6.160541,0,10.57626,0,1,0 +0,0,1,5.010635,6.160541,0,10.57626,0,1,0 +0,0,1,5.010635,6.160541,0,10.57626,1,0,0 +0,0,1,5.010635,6.160541,0,10.57626,1,0,0 +1,0,1,5.010635,6.160541,1,13.8,1,0,0 +29,0,1,5.010635,6.160541,1,13.8,1,0,0 +0,0,1,5.010635,6.160541,1,13.8,1,0,0 +0,0,1,5.010635,6.160541,0,17.2,0,0,0 +0,0,1,5.010635,6.160541,0,17.2,0,0,0 +0,0,1,5.010635,6.160541,0,17.2,0,0,0 +0,0,1,5.010635,6.160541,0,20.7,1,0,0 +6,0,1,5.010635,6.160541,0,20.7,1,0,0 +0,0,1,5.010635,6.160541,0,10.57626,1,0,0 +0,0,1,5.010635,6.160541,0,10.57626,1,0,0 +0,0,1,5.010635,6.160541,0,10.57626,1,0,0 +2,0,1,5.010635,5.755076,1,10.3,1,0,0 +0,0,1,5.010635,5.755076,1,10.3,1,0,0 +8,0,1,5.010635,5.755076,1,10.3,1,0,0 +0,0,1,5.010635,5.755076,0,0,0,0,0 +5,0,1,5.010635,5.755076,0,0,0,0,0 +1,0,1,5.010635,5.755076,0,0,0,0,0 +12,0,0,0,0,0,13.8,0,0,0 +8,0,0,0,0,0,13.8,0,0,0 +8,0,0,0,0,0,13.8,0,0,0 +8,0,0,0,0,0,10.57626,0,0,0 +4,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +8,0,0,0,0,0,17.2,0,0,0 +3,0,0,0,0,0,17.2,0,0,0 +3,0,0,0,0,0,17.2,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +6,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +6,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +2,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +2,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +4,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +2,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +3,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +2,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +2,0,0,5.482637,0,0,0,1,0,0 +1,0,0,5.482637,0,0,0,1,0,0 +2,0,0,5.482637,0,0,0,1,0,0 +1,0,1,6.109248,6.160541,1,31,0,1,0 +2,0,1,6.109248,6.160541,1,31,0,1,0 +7,0,1,6.109248,6.160541,1,31,0,1,0 +1,0,1,6.109248,6.160541,1,31,0,1,0 +2,0,1,6.109248,6.160541,1,31,0,1,0 +0,0,1,6.109248,6.160541,0,0,0,1,0 +0,0,1,6.109248,6.160541,0,0,0,1,0 +0,0,1,6.109248,6.160541,0,0,0,1,0 +0,0,1,6.109248,6.160541,0,0,0,1,0 +0,0,1,6.109248,6.160541,0,0,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +1,0,1,6.109248,6.160541,0,10.3,0,1,0 +2,0,1,6.109248,6.160541,0,10.3,0,1,0 +1,0,1,6.109248,6.160541,0,10.3,0,1,0 +2,0,1,6.109248,6.160541,0,10.3,0,1,0 +2,0,1,6.109248,6.160541,0,10.3,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,1,0 +1,0,1,6.109248,6.160541,0,10.57626,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,1,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,1,3.4,1,0,0 +3,3.258096,0,6.620073,8.006368,1,3.4,1,0,0 +3,3.258096,0,6.620073,8.006368,1,3.4,1,0,0 +3,3.258096,0,6.620073,8.006368,0,27.6,0,0,0 +0,3.258096,0,6.620073,8.006368,0,27.6,0,0,0 +0,3.258096,0,6.620073,8.006368,0,27.6,0,0,0 +0,0,1,0,6.160541,0,3.4,0,1,0 +0,0,1,0,6.160541,0,3.4,0,1,0 +0,0,1,0,6.160541,0,3.4,0,1,0 +0,0,1,0,6.160541,0,6.9,0,1,0 +1,0,1,0,6.160541,0,6.9,0,1,0 +1,0,1,0,6.160541,0,6.9,0,1,0 +1,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,4.564348,0,6.461468,6.512762,0,3.4,1,0,0 +0,4.564348,0,6.461468,6.512762,0,3.4,1,0,0 +0,4.564348,0,6.461468,6.512762,0,3.4,1,0,0 +0,4.564348,0,6.461468,6.512762,0,10.57626,0,0,0 +0,4.564348,0,6.461468,6.512762,0,10.57626,0,0,0 +0,4.564348,0,6.461468,6.512762,0,10.57626,0,0,0 +0,4.564348,0,6.461468,6.512762,1,24.1,1,0,0 +1,4.564348,0,6.461468,6.512762,1,24.1,1,0,0 +0,4.564348,0,6.461468,6.512762,1,24.1,1,0,0 +0,4.564348,0,6.461468,6.512762,0,3.4,1,0,0 +0,4.564348,0,6.461468,6.512762,0,3.4,1,0,0 +0,4.564348,0,6.461468,6.512762,0,3.4,1,0,0 +0,4.564348,0,6.461468,6.512762,0,10.57626,0,0,0 +0,4.564348,0,6.461468,6.512762,0,10.57626,0,0,0 +0,4.564348,0,6.461468,6.512762,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,1,0,0 +1,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,0,0,0 +1,0,1,6.109248,6.160541,0,13.8,0,0,0 +0,0,1,6.109248,6.160541,0,13.8,0,0,0 +0,0,0,4.822859,0,.1442925,10.57626,0,0,0 +0,0,0,4.822859,0,.1442925,10.57626,0,0,0 +3,0,0,4.822859,0,.1442925,10.57626,0,0,0 +0,0,0,4.822859,0,0,10.3,0,0,0 +1,0,0,4.822859,0,0,10.3,0,0,0 +9,0,0,4.822859,0,0,10.3,0,0,0 +7,0,0,5.042134,0,0,17.2,0,0,1 +9,0,0,5.042134,0,0,17.2,0,0,1 +5,0,0,5.042134,0,0,17.2,0,0,1 +3,0,0,5.042134,0,0,10.3,1,0,0 +2,0,0,5.042134,0,0,10.3,1,0,0 +0,0,0,5.042134,0,0,10.3,1,0,0 +3,0,0,5.042134,0,0,13.8,0,1,0 +1,0,0,5.042134,0,0,13.8,0,1,0 +3,0,0,5.042134,0,0,13.8,0,1,0 +2,0,0,5.042134,0,0,13.8,1,0,0 +6,0,0,5.042134,0,0,13.8,1,0,0 +4,0,0,5.042134,0,0,13.8,1,0,0 +7,0,0,5.042134,0,0,10.57626,1,0,0 +5,0,0,5.042134,0,0,10.57626,1,0,0 +4,0,0,5.042134,0,0,10.57626,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +3,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +3,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +2,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +3,0,0,0,0,0,3.4,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +4,0,0,0,0,0,13.8,1,0,0 +10,0,0,0,0,0,13.8,1,0,0 +10,0,0,0,0,0,13.8,1,0,0 +9,0,0,0,0,0,13.8,1,0,0 +7,0,0,0,0,0,17.2,1,0,0 +2,0,0,0,0,0,17.2,1,0,0 +1,0,0,0,0,0,17.2,1,0,0 +1,0,0,0,0,0,17.2,1,0,0 +6,0,0,0,0,0,17.2,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +3,0,0,0,0,0,10.57626,1,0,0 +5,0,0,0,0,0,13.8,1,0,0 +6,0,0,0,0,0,13.8,1,0,0 +3,0,0,0,0,0,13.8,1,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +4,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,17.2,1,0,0 +0,0,0,0,0,0,17.2,1,0,0 +1,0,0,0,0,0,17.2,1,0,0 +2,3.258096,0,0,8.006368,0,6.9,1,0,0 +1,3.258096,0,0,8.006368,0,6.9,1,0,0 +2,3.258096,0,0,8.006368,0,6.9,1,0,0 +5,0,1,6.109248,6.160541,0,3.4,1,0,0 +2,0,1,6.109248,6.160541,0,3.4,1,0,0 +2,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +15,0,0,0,0,0,20.7,0,0,0 +6,0,0,0,0,0,20.7,0,0,0 +6,0,0,0,0,0,20.7,0,0,0 +11,0,0,0,0,0,20.7,0,0,0 +8,0,0,0,0,0,20.7,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +4,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +4,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +4,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +7,0,1,0,6.160541,0,13.8,1,0,0 +1,0,1,0,6.160541,0,13.8,1,0,0 +2,0,1,0,6.160541,0,13.8,1,0,0 +4,0,1,0,6.160541,0,13.8,1,0,0 +10,0,1,0,6.160541,0,13.8,1,0,0 +2,0,1,0,6.160541,0,3.4,1,0,0 +1,0,1,0,6.160541,0,3.4,1,0,0 +1,0,1,0,6.160541,0,3.4,1,0,0 +0,0,1,0,6.160541,0,3.4,1,0,0 +3,0,1,0,6.160541,0,3.4,1,0,0 +4,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +1,0,1,0,6.160541,0,10.57626,1,0,0 +2,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +1,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +2,0,1,0,6.160541,0,10.57626,1,0,0 +1,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +1,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +4,0,1,6.268187,5.755076,1,37.9,0,0,1 +7,0,1,6.268187,5.755076,1,37.9,0,0,1 +29,0,1,6.268187,5.755076,1,37.9,0,0,1 +5,0,1,6.268187,5.755076,1,37.9,0,0,1 +5,0,1,6.268187,5.755076,1,27.6,0,0,1 +3,3.931826,0,6.907755,7.600903,0,10.57626,1,0,0 +3,3.931826,0,6.907755,7.600903,0,10.57626,1,0,0 +1,3.931826,0,6.907755,7.600903,0,10.57626,1,0,0 +1,3.931826,0,6.907755,7.600903,1,10.3,1,0,0 +3,3.931826,0,6.907755,7.600903,1,10.3,1,0,0 +4,3.931826,0,6.907755,7.600903,1,10.3,1,0,0 +2,3.931826,0,6.907755,7.600903,0,13.8,0,1,0 +1,3.931826,0,6.907755,7.600903,0,13.8,0,1,0 +0,3.931826,0,6.907755,7.600903,0,13.8,0,1,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,0,1,0 +2,3.931826,0,6.907755,7.600903,0,10.57626,0,1,0 +4,3.931826,0,6.907755,7.600903,0,10.57626,0,1,0 +12,0,0,5.632071,0,1,10.3,0,0,1 +0,0,0,5.632071,0,1,10.3,0,0,1 +2,0,0,5.632071,0,1,10.3,0,0,1 +0,0,0,5.632071,0,1,10.3,0,0,1 +11,0,0,5.632071,0,1,10.3,0,0,1 +5,0,0,0,0,0,6.9,0,1,0 +2,0,0,0,0,0,6.9,0,1,0 +3,0,0,0,0,0,6.9,0,1,0 +0,0,0,0,0,0,6.9,0,1,0 +3,0,0,0,0,0,6.9,0,1,0 +3,0,0,5.632071,0,0,3.4,0,1,0 +2,0,0,5.632071,0,0,3.4,0,1,0 +2,0,0,5.632071,0,0,3.4,0,1,0 +0,0,0,5.632071,0,0,3.4,0,1,0 +2,0,0,5.632071,0,0,3.4,0,1,0 +0,0,0,5.632071,0,0,3.4,0,1,0 +0,0,0,5.632071,0,0,3.4,0,1,0 +0,0,0,5.632071,0,0,3.4,0,1,0 +0,0,0,5.632071,0,0,3.4,0,1,0 +3,0,0,5.632071,0,0,3.4,0,1,0 +4,0,0,5.632071,0,0,10.57626,0,1,0 +3,0,0,5.632071,0,0,10.57626,0,1,0 +2,0,0,5.632071,0,0,10.57626,0,1,0 +0,0,0,5.632071,0,0,10.57626,0,1,0 +2,0,0,5.632071,0,0,10.57626,0,1,0 +4,0,0,5.632071,0,0,13.8,0,1,0 +1,0,0,5.632071,0,0,13.8,0,1,0 +10,0,0,5.632071,0,0,13.8,0,1,0 +3,0,0,5.632071,0,0,13.8,0,1,0 +8,0,0,5.632071,0,0,13.8,0,1,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +10,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +1,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +4,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +4,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +2,4.564348,0,6.907755,6.959049,0,20.7,0,1,0 +8,4.564348,0,6.907755,6.959049,0,20.7,0,1,0 +7,4.564348,0,6.907755,6.959049,0,20.7,0,1,0 +0,0,1,0,5.755076,0,10.57626,1,0,0 +1,0,1,0,5.755076,0,10.57626,1,0,0 +0,0,1,0,5.755076,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,0,5.755076,0,3.4,1,0,0 +0,0,1,0,5.755076,0,3.4,1,0,0 +0,0,1,0,5.755076,0,3.4,1,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +2,0,0,0,0,.1442925,10.57626,0,0,0 +3,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,3.258096,0,3.039749,4.426044,0,10.57626,1,0,0 +0,3.258096,0,3.039749,4.426044,0,10.57626,1,0,0 +1,3.258096,0,3.039749,4.426044,0,10.57626,1,0,0 +0,3.258096,0,3.039749,4.426044,0,10.57626,0,1,0 +0,3.258096,0,3.039749,4.426044,0,10.57626,0,1,0 +0,3.258096,0,3.039749,4.426044,0,10.57626,0,1,0 +0,3.258096,0,3.039749,4.426044,1,0,1,0,0 +0,3.258096,0,3.039749,4.426044,1,0,1,0,0 +0,3.258096,0,3.039749,4.426044,1,0,1,0,0 +0,3.258096,0,3.039749,4.426044,1,34.5,0,0,1 +1,3.258096,0,3.039749,4.426044,1,34.5,0,0,1 +8,3.258096,0,3.039749,4.426044,1,34.5,0,0,1 +1,0,1,5.941959,5.755076,1,6.9,0,1,0 +0,0,1,5.941959,5.755076,1,6.9,0,1,0 +0,0,1,5.941959,5.755076,1,6.9,0,1,0 +0,0,1,5.941959,5.755076,1,6.9,0,1,0 +0,0,1,5.941959,5.755076,1,6.9,0,1,0 +1,0,1,5.941959,5.755076,0,3.4,1,0,0 +3,0,1,5.941959,5.755076,0,3.4,1,0,0 +1,0,1,5.941959,5.755076,0,3.4,1,0,0 +1,0,1,5.941959,5.755076,0,3.4,1,0,0 +2,0,1,5.941959,5.755076,0,3.4,1,0,0 +10,0,0,5.126342,0,0,3.4,1,0,0 +6,0,0,5.126342,0,0,3.4,1,0,0 +3,0,0,5.126342,0,0,3.4,1,0,0 +1,0,0,5.126342,0,0,10.57626,1,0,0 +0,0,0,5.126342,0,0,10.57626,1,0,0 +0,0,0,5.126342,0,0,10.57626,1,0,0 +2,0,0,5.126342,0,0,10.57626,1,0,0 +0,0,0,5.126342,0,0,10.57626,1,0,0 +0,0,0,5.126342,0,0,10.57626,1,0,0 +0,0,0,5.126342,0,0,10.3,0,1,0 +0,0,0,5.126342,0,0,10.3,0,1,0 +3,0,0,5.126342,0,0,10.3,0,1,0 +0,0,1,5.010635,6.160541,0,10.57626,0,0,0 +0,0,1,5.010635,6.160541,0,10.57626,0,0,0 +0,0,1,5.010635,6.160541,0,10.57626,0,0,0 +1,0,1,5.010635,6.160541,0,10.3,0,0,0 +1,0,1,5.010635,6.160541,0,10.3,0,0,0 +0,0,1,5.010635,6.160541,0,10.3,0,0,0 +1,0,1,5.010635,6.160541,0,10.57626,0,0,0 +0,0,1,5.010635,6.160541,0,10.57626,0,0,0 +0,0,1,5.010635,6.160541,0,10.57626,0,0,0 +0,0,1,5.010635,6.160541,0,6.9,0,0,0 +0,0,1,5.010635,6.160541,0,6.9,0,0,0 +1,0,1,5.010635,6.160541,0,6.9,0,0,0 +4,0,1,6.109248,6.160541,0,13.8,1,0,0 +2,0,1,6.109248,6.160541,0,13.8,1,0,0 +3,0,1,6.109248,6.160541,0,13.8,1,0,0 +2,0,1,6.109248,6.160541,0,6.9,0,0,0 +3,0,1,6.109248,6.160541,0,6.9,0,0,0 +6,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +3,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,27.6,1,0,0 +0,0,1,6.109248,6.160541,0,27.6,1,0,0 +0,0,1,6.109248,6.160541,0,27.6,1,0,0 +0,0,1,6.109248,6.160541,0,27.6,1,0,0 +0,0,1,6.109248,6.160541,0,27.6,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,27.6,1,0,0 +0,0,1,6.109248,6.160541,0,27.6,1,0,0 +0,0,1,6.109248,6.160541,0,27.6,1,0,0 +0,0,1,6.109248,6.160541,0,27.6,1,0,0 +0,0,1,6.109248,6.160541,0,27.6,1,0,0 +1,0,0,5.259992,0,0,6.9,1,0,0 +0,0,0,5.259992,0,0,6.9,1,0,0 +8,0,0,5.259992,0,0,6.9,1,0,0 +0,0,0,5.259992,0,0,10.3,1,0,0 +5,0,0,5.259992,0,0,10.3,1,0,0 +1,0,0,5.259992,0,0,10.3,1,0,0 +1,0,0,5.259992,0,0,10.57626,1,0,0 +1,0,0,5.259992,0,0,10.57626,1,0,0 +0,0,0,5.259992,0,0,10.57626,1,0,0 +3,0,0,5.259992,0,0,10.57626,1,0,0 +1,0,0,5.259992,0,0,10.57626,1,0,0 +0,0,0,5.259992,0,0,10.57626,1,0,0 +1,0,1,5.703783,5.755076,0,6.9,1,0,0 +0,0,1,5.703783,5.755076,0,6.9,1,0,0 +3,0,1,5.703783,5.755076,0,6.9,1,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +3,0,0,0,0,0,3.4,0,0,0 +1,3.931826,0,6.07507,6.560323,0,17.2,0,1,0 +1,3.931826,0,6.07507,6.560323,0,17.2,0,1,0 +3,3.931826,0,6.07507,6.560323,0,17.2,0,1,0 +0,3.931826,0,6.07507,6.560323,0,3.4,0,0,1 +7,3.931826,0,6.07507,6.560323,0,3.4,0,0,1 +2,3.931826,0,6.07507,6.560323,0,3.4,0,0,1 +5,0,1,6.109248,6.160541,0,10.57626,0,1,0 +8,0,1,6.109248,6.160541,0,0,0,0,0 +3,0,1,6.109248,6.160541,0,0,1,0,0 +3,0,1,6.109248,6.160541,1,24.1,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,1,6.9,0,0,0 +0,3.258096,0,7.163699,8.006368,0,0,0,0,0 +0,3.258096,0,7.163699,8.006368,0,0,0,0,0 +0,3.258096,0,7.163699,8.006368,0,0,0,0,0 +0,3.258096,0,7.163699,8.006368,0,0,0,0,0 +0,3.258096,0,7.163699,8.006368,0,0,0,0,0 +1,3.258096,0,7.163699,8.006368,0,10.57626,0,0,0 +1,3.258096,0,7.163699,8.006368,0,10.57626,0,0,0 +2,3.258096,0,7.163699,8.006368,0,10.57626,0,0,0 +5,3.258096,0,7.163699,8.006368,0,10.57626,0,0,0 +1,3.258096,0,7.163699,8.006368,0,10.57626,0,0,0 +2,3.258096,0,7.163699,8.006368,0,10.57626,0,0,0 +0,3.258096,0,7.163699,8.006368,0,10.57626,0,0,0 +0,3.258096,0,7.163699,8.006368,0,10.57626,0,0,0 +2,3.258096,0,7.163699,8.006368,0,10.57626,0,0,0 +0,3.258096,0,7.163699,8.006368,0,10.57626,0,0,0 +1,3.931826,0,6.907755,7.600903,0,17.2,0,0,0 +0,3.931826,0,6.907755,7.600903,0,17.2,0,0,0 +0,3.931826,0,6.907755,7.600903,0,17.2,0,0,0 +12,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +9,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +2,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +2,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +2,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +2,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,17.2,1,0,0 +5,0,1,6.109248,6.160541,0,17.2,1,0,0 +0,0,1,6.109248,6.160541,0,17.2,1,0,0 +4,0,1,6.109248,6.160541,0,17.2,1,0,0 +1,0,1,6.109248,6.160541,0,17.2,1,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +3,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +5,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +3,0,1,6.109248,6.160541,0,3.4,0,0,0 +13,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +4,0,0,4.457134,0,0,24.1,1,0,0 +4,0,0,4.457134,0,0,24.1,1,0,0 +1,0,0,4.457134,0,0,24.1,1,0,0 +1,0,0,4.457134,0,0,3.4,0,0,0 +1,0,0,4.457134,0,0,3.4,0,0,0 +0,0,0,4.457134,0,0,3.4,0,0,0 +2,0,0,4.457134,0,0,27.6,1,0,0 +1,0,0,4.457134,0,0,27.6,1,0,0 +2,0,0,4.457134,0,0,27.6,1,0,0 +2,0,1,6.708963,6.160541,0,20.7,0,0,0 +1,0,1,6.708963,6.160541,0,20.7,0,0,0 +3,0,1,6.708963,6.160541,0,20.7,0,0,0 +3,0,1,6.708963,6.160541,0,10.57626,0,0,0 +1,0,1,6.708963,6.160541,0,10.57626,0,0,0 +3,0,1,6.708963,6.160541,0,10.57626,0,0,0 +3,0,1,6.708963,6.160541,0,10.3,0,0,0 +0,0,1,6.708963,6.160541,0,10.3,0,0,0 +3,0,1,6.708963,6.160541,0,10.3,0,0,0 +7,0,1,6.708963,6.160541,0,10.57626,0,0,0 +3,0,1,6.708963,6.160541,0,10.57626,0,0,0 +3,0,1,6.708963,6.160541,0,10.57626,0,0,0 +4,0,0,6.370175,0,1,31,0,0,1 +0,0,0,6.370175,0,1,31,0,0,1 +0,0,1,6.109248,6.160541,0,17.2,0,0,0 +0,0,1,6.109248,6.160541,0,17.2,0,0,0 +0,0,1,6.109248,6.160541,0,17.2,0,0,0 +3,0,1,6.109248,6.160541,0,10.3,0,0,0 +1,0,1,6.109248,6.160541,0,10.3,0,0,0 +3,0,1,6.109248,6.160541,0,10.3,0,0,0 +9,0,1,6.109248,6.160541,0,10.57626,1,0,0 +13,0,1,6.109248,6.160541,0,10.57626,1,0,0 +4,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,0,0,0,0,6.9,0,1,0 +1,0,0,0,0,0,6.9,0,1,0 +4,0,0,0,0,0,6.9,0,1,0 +0,0,0,0,0,0,6.9,0,1,0 +1,0,0,0,0,0,10.57626,0,1,0 +1,0,0,0,0,0,10.57626,0,1,0 +3,0,0,0,0,0,10.57626,0,1,0 +3,0,0,0,0,0,10.57626,0,1,0 +2,0,0,0,0,0,10.57626,0,1,0 +11,0,0,0,0,1,17.2,0,1,0 +21,0,0,0,0,1,17.2,0,1,0 +19,0,0,0,0,1,17.2,0,1,0 +2,0,0,0,0,0,10.57626,0,1,0 +5,0,0,0,0,0,10.57626,0,1,0 +2,0,0,0,0,0,10.57626,0,1,0 +4,0,0,0,0,0,10.57626,0,1,0 +2,0,0,0,0,0,10.57626,0,1,0 +0,0,0,0,0,0,6.9,0,1,0 +3,0,0,0,0,0,6.9,0,1,0 +3,0,0,0,0,0,6.9,0,1,0 +4,0,0,0,0,0,6.9,0,1,0 +8,0,0,0,0,1,10.3,0,0,0 +4,0,0,0,0,1,10.3,0,0,0 +0,0,0,0,0,1,10.3,0,0,0 +0,0,1,5.010635,6.160541,0,10.57626,1,0,0 +0,0,1,5.010635,6.160541,0,10.57626,1,0,0 +0,0,1,5.010635,6.160541,0,10.57626,1,0,0 +0,0,1,5.010635,6.160541,0,10.57626,1,0,0 +0,0,1,5.010635,6.160541,0,10.57626,1,0,0 +0,0,1,5.010635,6.160541,0,10.57626,1,0,0 +3,0,1,5.010635,6.160541,0,3.4,1,0,0 +0,0,1,5.010635,6.160541,0,3.4,1,0,0 +0,0,1,5.010635,6.160541,0,3.4,1,0,0 +0,0,1,5.010635,6.160541,0,3.4,0,0,1 +0,0,1,5.010635,6.160541,0,3.4,0,0,1 +2,0,1,5.010635,6.160541,0,3.4,0,0,1 +1,0,1,5.010635,6.160541,0,10.57626,1,0,0 +1,0,1,5.010635,6.160541,0,10.57626,1,0,0 +0,0,1,5.010635,6.160541,0,10.57626,1,0,0 +2,3.931826,0,6.276455,6.969603,0,0,0,0,0 +0,3.931826,0,6.276455,6.969603,0,0,0,0,0 +2,3.931826,0,6.276455,6.969603,0,0,0,0,0 +1,3.931826,0,6.276455,6.969603,0,0,0,0,0 +2,3.931826,0,6.276455,6.969603,0,0,0,0,0 +4,0,0,5.377498,0,0,17.2,0,0,1 +10,0,0,5.377498,0,0,17.2,0,0,1 +4,0,0,5.377498,0,0,17.2,0,0,1 +1,0,0,5.377498,0,0,27.6,1,0,0 +3,0,0,5.377498,0,0,27.6,1,0,0 +3,0,0,5.377498,0,0,27.6,1,0,0 +2,0,0,5.377498,0,0,10.57626,0,0,1 +6,0,0,5.377498,0,0,10.57626,0,0,1 +6,0,0,5.377498,0,0,10.57626,0,0,1 +0,0,0,5.377498,0,0,0,0,0,0 +0,0,0,5.377498,0,0,0,0,0,0 +3,0,0,5.377498,0,0,3.4,1,0,0 +7,0,0,5.377498,0,0,3.4,1,0,0 +1,0,0,5.377498,0,0,3.4,1,0,0 +2,0,0,5.377498,0,0,10.57626,0,0,0 +1,0,0,5.377498,0,0,10.57626,0,0,0 +1,0,0,5.377498,0,0,10.57626,0,0,0 +2,0,0,5.377498,0,0,3.4,1,0,0 +0,0,0,5.377498,0,0,3.4,1,0,0 +0,0,0,5.377498,0,0,3.4,1,0,0 +4,4.564348,0,5.898527,5.94982,1,17.2,0,0,1 +0,4.564348,0,5.898527,5.94982,1,17.2,0,0,1 +1,4.564348,0,5.898527,5.94982,1,17.2,0,0,1 +2,0,0,0,0,1,0,0,1,0 +1,0,0,0,0,1,0,0,1,0 +1,0,0,0,0,1,0,0,1,0 +0,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +3,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,3.4,0,1,0 +0,0,0,0,0,0,3.4,0,1,0 +3,0,0,0,0,0,3.4,0,1,0 +1,0,0,0,0,0,10.57626,1,0,0 +2,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +1,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +4,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +0,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +2,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +0,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +9,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +1,0,1,5.163185,6.160541,.1442925,10.57626,1,0,0 +0,0,1,5.163185,6.160541,.1442925,10.57626,1,0,0 +0,0,1,5.163185,6.160541,.1442925,10.57626,1,0,0 +1,0,1,5.163185,6.160541,.1442925,10.57626,1,0,0 +0,0,1,5.163185,6.160541,.1442925,10.57626,1,0,0 +0,0,1,5.163185,6.160541,.1442925,10.57626,1,0,0 +7,0,1,5.163185,6.160541,0,20.7,1,0,0 +1,0,1,5.163185,6.160541,0,20.7,1,0,0 +0,0,1,5.163185,6.160541,0,20.7,1,0,0 +0,0,1,5.163185,6.160541,0,13.8,1,0,0 +0,0,1,5.163185,6.160541,0,13.8,1,0,0 +0,0,1,5.163185,6.160541,0,13.8,1,0,0 +0,3.258096,0,6.620073,8.006368,0,0,1,0,0 +1,3.258096,0,6.620073,8.006368,0,0,1,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,0,1,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,0,1,0,0 +1,3.258096,0,6.620073,8.006368,.1442925,0,1,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,0,1,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,0,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,1,3.4,0,1,0 +0,3.258096,0,6.620073,8.006368,1,3.4,0,1,0 +1,3.258096,0,6.620073,8.006368,1,3.4,0,1,0 +0,3.258096,0,6.620073,8.006368,1,3.4,0,1,0 +0,3.258096,0,6.620073,8.006368,1,3.4,0,1,0 +0,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +2,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +0,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +0,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +2,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +0,4.564348,0,6.436151,5.741653,0,10.57626,0,1,0 +1,4.564348,0,6.436151,5.741653,0,10.57626,0,1,0 +0,4.564348,0,6.436151,5.741653,0,10.57626,0,1,0 +0,4.564348,0,6.436151,5.741653,1,13.8,1,0,0 +0,4.564348,0,6.436151,5.741653,1,13.8,1,0,0 +0,4.564348,0,6.436151,5.741653,1,13.8,1,0,0 +0,4.564348,0,6.436151,5.741653,0,0,0,1,0 +0,4.564348,0,6.436151,5.741653,0,0,0,1,0 +0,4.564348,0,6.436151,5.741653,0,0,0,1,0 +0,4.564348,0,6.436151,5.741653,0,10.57626,0,1,0 +0,4.564348,0,6.436151,5.741653,0,10.57626,0,1,0 +0,4.564348,0,6.436151,5.741653,0,10.57626,0,1,0 +0,4.564348,0,6.436151,5.741653,0,6.9,0,1,0 +1,4.564348,0,6.436151,5.741653,0,6.9,0,1,0 +0,4.564348,0,6.436151,5.741653,0,6.9,0,1,0 +0,4.564348,0,6.55108,6.602374,1,27.6,0,0,0 +1,4.564348,0,6.55108,6.602374,1,27.6,0,0,0 +0,4.564348,0,6.55108,6.602374,1,27.6,0,0,0 +4,4.564348,0,6.55108,6.602374,1,27.6,0,0,0 +2,4.564348,0,6.55108,6.602374,1,27.6,0,0,0 +0,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +1,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +0,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +1,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +1,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +0,4.564348,0,6.55108,6.602374,1,6.9,0,0,0 +0,4.564348,0,6.55108,6.602374,1,6.9,0,0,0 +0,4.564348,0,6.55108,6.602374,1,6.9,0,0,0 +1,4.564348,0,6.55108,6.602374,1,6.9,0,0,0 +0,4.564348,0,6.55108,6.602374,1,6.9,0,0,0 +1,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +2,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +4,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +1,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +2,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +0,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +0,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +0,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +0,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +2,4.564348,0,6.55108,6.602374,0,10.57626,0,0,0 +1,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +1,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +2,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +5,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +2,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +2,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +1,3.931826,0,6.907755,7.600903,0,13.8,0,0,0 +3,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +2,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +3,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +2,3.931826,0,6.907755,7.600903,0,6.9,0,0,0 +0,0,1,6.115627,6.160541,.1442925,10.57626,1,0,0 +1,0,1,6.115627,6.160541,.1442925,10.57626,1,0,0 +0,0,1,6.115627,6.160541,.1442925,10.57626,1,0,0 +3,0,1,6.115627,6.160541,0,10.3,1,0,0 +0,0,1,6.115627,6.160541,0,10.3,1,0,0 +0,0,1,6.115627,6.160541,0,10.3,1,0,0 +20,0,1,6.115627,6.160541,1,3.4,1,0,0 +0,0,1,6.115627,6.160541,1,3.4,1,0,0 +2,0,1,6.115627,6.160541,1,3.4,1,0,0 +1,0,1,6.109248,6.160541,1,17.2,1,0,0 +0,0,1,6.109248,6.160541,1,17.2,1,0,0 +0,0,1,6.109248,6.160541,1,17.2,1,0,0 +4,0,0,0,0,0,10.57626,1,0,0 +8,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +2,0,0,0,0,0,10.57626,1,0,0 +5,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +3,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +1,0,0,0,0,0,6.9,1,0,0 +8,0,0,0,0,1,13.8,1,0,0 +2,0,0,0,0,1,13.8,1,0,0 +6,0,0,0,0,1,13.8,1,0,0 +5,0,0,0,0,1,13.8,1,0,0 +4,0,0,0,0,1,13.8,1,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +8,3.258096,0,6.620073,8.006368,1,20.7,1,0,0 +12,3.258096,0,6.620073,8.006368,1,20.7,1,0,0 +21,3.258096,0,6.620073,8.006368,1,20.7,1,0,0 +18,3.258096,0,6.620073,8.006368,1,20.7,1,0,0 +3,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +7,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +3,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +15,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +14,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,0,0,5.827062,0,0,20.7,1,0,0 +2,0,0,5.827062,0,0,20.7,1,0,0 +1,0,0,5.827062,0,0,20.7,1,0,0 +4,0,0,5.827062,0,0,20.7,1,0,0 +6,0,0,5.827062,0,0,20.7,1,0,0 +7,0,0,5.827062,0,0,20.7,1,0,0 +5,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +2,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +3,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +4,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +5,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,6.9,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +4,0,0,0,0,0,17.2,0,0,0 +3,0,0,0,0,0,17.2,0,0,0 +2,0,0,0,0,0,17.2,0,0,0 +4,0,0,5.567428,0,0,10.3,1,0,0 +0,0,0,5.567428,0,0,10.3,1,0,0 +2,0,0,5.567428,0,0,10.3,1,0,0 +8,0,0,5.567428,0,0,20.7,1,0,0 +8,0,0,5.567428,0,0,20.7,1,0,0 +7,0,0,5.567428,0,0,20.7,1,0,0 +2,0,1,5.703783,5.755076,1,37.9,0,1,0 +2,0,1,5.703783,5.755076,1,37.9,0,1,0 +5,0,1,5.703783,5.755076,1,37.9,0,1,0 +1,0,1,5.703783,5.755076,1,24.1,1,0,0 +9,0,1,5.703783,5.755076,1,24.1,1,0,0 +8,0,1,5.703783,5.755076,1,24.1,1,0,0 +2,3.258096,0,6.343529,7.729823,0,13.8,1,0,0 +1,3.258096,0,6.343529,7.729823,0,13.8,1,0,0 +0,3.258096,0,6.343529,7.729823,0,13.8,1,0,0 +0,3.258096,0,6.343529,7.729823,0,10.57626,1,0,0 +0,3.258096,0,6.343529,7.729823,0,10.57626,1,0,0 +0,3.258096,0,6.343529,7.729823,0,10.57626,1,0,0 +4,3.258096,0,6.343529,7.729823,0,3.4,1,0,0 +2,3.258096,0,6.343529,7.729823,0,3.4,1,0,0 +4,3.258096,0,6.343529,7.729823,0,3.4,1,0,0 +0,0,0,5.259992,0,0,6.9,0,0,0 +3,0,0,5.259992,0,0,6.9,0,0,0 +2,0,0,5.259992,0,0,6.9,0,0,0 +1,0,0,5.259992,0,0,10.3,1,0,0 +8,0,0,5.259992,0,0,10.3,1,0,0 +5,0,0,5.259992,0,0,10.3,1,0,0 +1,0,0,5.029653,0,0,3.4,0,1,0 +0,0,0,5.029653,0,0,3.4,0,1,0 +1,0,0,5.029653,0,0,3.4,0,1,0 +2,0,0,5.029653,0,0,3.4,0,1,0 +0,0,0,5.029653,0,0,3.4,0,1,0 +1,0,0,5.029653,0,1,10.3,0,0,1 +15,0,0,5.029653,0,1,10.3,0,0,1 +2,0,0,5.029653,0,1,10.3,0,0,1 +1,0,0,5.029653,0,1,10.3,0,0,1 +2,0,0,5.029653,0,1,10.3,0,0,1 +0,0,0,5.029653,0,0,13.8,0,0,1 +1,0,0,5.029653,0,0,13.8,0,0,1 +0,0,0,5.029653,0,0,13.8,0,0,1 +0,0,0,5.029653,0,0,13.8,0,0,1 +0,0,0,5.029653,0,0,13.8,0,0,1 +6,0,1,6.767757,6.160541,1,24.1,0,1,0 +22,0,1,6.767757,6.160541,1,24.1,0,1,0 +13,0,1,6.767757,6.160541,1,24.1,0,1,0 +2,0,1,6.767757,6.160541,0,0,0,0,0 +0,0,1,6.767757,6.160541,0,0,0,0,0 +0,0,1,6.767757,6.160541,0,0,0,0,0 +2,0,1,6.767757,6.160541,0,10.57626,0,0,0 +4,0,1,6.767757,6.160541,0,10.57626,0,0,0 +1,0,1,6.767757,6.160541,0,10.57626,0,0,0 +0,0,0,5.259992,0,1,20.7,1,0,0 +3,0,0,5.259992,0,1,20.7,1,0,0 +0,0,0,5.259992,0,1,20.7,1,0,0 +1,0,0,5.259992,0,0,6.9,0,0,0 +0,0,0,5.259992,0,0,6.9,0,0,0 +1,0,0,5.259992,0,0,6.9,0,0,0 +6,0,0,5.259992,0,1,20.7,1,0,0 +4,0,0,5.259992,0,1,20.7,1,0,0 +3,0,0,5.259992,0,1,20.7,1,0,0 +2,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +3,0,0,0,0,0,6.9,0,0,0 +3,3.258096,0,6.620073,8.006368,.1442925,10.57626,1,0,0 +8,3.258096,0,6.620073,8.006368,.1442925,10.57626,1,0,0 +2,3.258096,0,6.620073,8.006368,.1442925,10.57626,1,0,0 +1,0,0,5.259992,0,0,10.57626,1,0,0 +2,0,0,5.259992,0,0,10.57626,1,0,0 +3,0,0,5.259992,0,0,10.57626,1,0,0 +1,0,0,5.259992,0,0,3.4,1,0,0 +1,0,0,5.259992,0,0,3.4,1,0,0 +1,0,0,5.259992,0,0,3.4,1,0,0 +1,0,0,5.259992,0,0,3.4,1,0,0 +4,0,0,5.259992,0,0,3.4,1,0,0 +2,0,0,5.259992,0,0,3.4,1,0,0 +4,0,1,5.703783,5.755076,0,10.3,1,0,0 +1,0,1,5.703783,5.755076,0,10.3,1,0,0 +6,0,1,5.703783,5.755076,0,10.3,1,0,0 +0,0,1,5.703783,5.755076,0,0,0,0,0 +0,0,1,5.703783,5.755076,0,0,0,0,0 +1,0,1,5.703783,5.755076,0,0,0,0,0 +0,3.258096,0,5.204007,6.590301,0,10.57626,0,0,0 +0,3.258096,0,5.204007,6.590301,0,10.57626,0,0,0 +0,3.258096,0,5.204007,6.590301,0,10.57626,0,0,0 +0,3.258096,0,5.204007,6.590301,0,10.57626,0,0,0 +0,3.258096,0,5.204007,6.590301,0,10.57626,0,0,0 +0,3.258096,0,5.204007,6.590301,0,10.3,0,0,0 +0,3.258096,0,5.204007,6.590301,0,10.3,0,0,0 +0,3.258096,0,5.204007,6.590301,0,10.3,0,0,0 +1,3.258096,0,5.204007,6.590301,0,10.3,0,0,0 +2,3.258096,0,5.204007,6.590301,0,10.3,0,0,0 +2,3.258096,0,5.204007,6.590301,0,10.57626,0,0,0 +2,3.258096,0,5.204007,6.590301,0,10.57626,0,0,0 +0,3.258096,0,5.204007,6.590301,0,10.57626,0,0,0 +5,3.258096,0,5.204007,6.590301,0,10.57626,0,0,0 +3,3.258096,0,5.204007,6.590301,0,10.57626,0,0,0 +5,0,1,6.109248,6.160541,.1442925,10.57626,1,0,0 +4,0,1,6.109248,6.160541,.1442925,10.57626,1,0,0 +3,0,1,6.109248,6.160541,.1442925,10.57626,1,0,0 +3,0,1,6.109248,6.160541,0,20.7,1,0,0 +1,0,1,6.109248,6.160541,0,20.7,1,0,0 +1,0,1,6.109248,6.160541,0,20.7,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +4,0,1,6.109248,6.160541,0,6.9,0,0,0 +2,0,1,6.109248,6.160541,.1442925,10.57626,1,0,0 +4,0,1,6.109248,6.160541,.1442925,10.57626,1,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +2,0,1,6.109248,6.160541,1,37.9,0,1,0 +4,0,1,6.109248,6.160541,1,37.9,0,1,0 +0,0,1,6.109248,6.160541,1,37.9,0,1,0 +2,0,1,6.109248,6.160541,0,13.8,0,0,0 +0,0,1,6.109248,6.160541,0,13.8,0,0,0 +0,0,1,6.109248,6.160541,0,13.8,0,0,0 +1,0,1,6.109248,6.160541,0,13.8,0,0,0 +2,0,1,6.109248,6.160541,0,13.8,0,0,0 +2,0,1,6.109248,6.160541,0,13.8,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,4.564348,0,0,5.928188,0,6.9,1,0,0 +0,4.564348,0,0,5.928188,0,6.9,1,0,0 +0,4.564348,0,0,5.928188,0,6.9,1,0,0 +0,4.564348,0,6.709304,6.760598,0,3.4,1,0,0 +0,4.564348,0,6.709304,6.760598,0,3.4,1,0,0 +0,4.564348,0,6.709304,6.760598,0,3.4,1,0,0 +0,4.564348,0,6.709304,6.760598,0,10.57626,1,0,0 +0,4.564348,0,6.709304,6.760598,0,10.57626,1,0,0 +0,4.564348,0,6.709304,6.760598,0,10.57626,1,0,0 +0,4.564348,0,6.709304,6.760598,0,10.57626,1,0,0 +0,4.564348,0,6.709304,6.760598,0,10.57626,1,0,0 +0,4.564348,0,6.709304,6.760598,0,10.57626,1,0,0 +0,4.564348,0,6.709304,6.760598,0,13.8,1,0,0 +0,4.564348,0,6.709304,6.760598,0,13.8,1,0,0 +0,4.564348,0,6.709304,6.760598,0,13.8,1,0,0 +0,4.564348,0,6.709304,6.760598,0,10.57626,1,0,0 +0,4.564348,0,6.709304,6.760598,0,10.57626,1,0,0 +0,4.564348,0,6.709304,6.760598,0,10.57626,1,0,0 +0,4.564348,0,6.709304,6.760598,0,10.57626,1,0,0 +0,4.564348,0,6.709304,6.760598,0,10.57626,1,0,0 +0,4.564348,0,6.709304,6.760598,0,10.57626,1,0,0 +2,4.564348,0,4.393214,4.444507,0,10.3,0,1,0 +0,4.564348,0,4.393214,4.444507,0,10.3,0,1,0 +0,4.564348,0,4.393214,4.444507,0,10.3,0,1,0 +0,4.564348,0,4.393214,4.444507,0,10.57626,0,1,0 +0,4.564348,0,4.393214,4.444507,0,10.57626,0,1,0 +0,4.564348,0,4.393214,4.444507,0,10.57626,0,1,0 +0,4.564348,0,4.393214,4.444507,0,10.57626,0,0,0 +0,4.564348,0,4.393214,4.444507,0,10.57626,0,0,0 +0,4.564348,0,4.393214,4.444507,0,10.57626,0,0,0 +0,3.931826,0,0,7.600903,.1442925,10.57626,0,0,0 +14,3.931826,0,0,7.600903,.1442925,10.57626,0,0,0 +9,3.931826,0,0,7.600903,.1442925,10.57626,0,0,0 +0,3.931826,0,0,7.600903,.1442925,10.57626,0,0,0 +2,3.931826,0,0,7.600903,.1442925,10.57626,0,0,0 +13,0,0,0,0,0,3.4,1,0,0 +18,0,0,0,0,0,3.4,1,0,0 +16,0,0,0,0,0,3.4,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +2,0,0,0,0,0,6.9,1,0,0 +7,0,0,0,0,0,6.9,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +2,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +4,4.564348,0,5.283711,5.335004,1,24.1,0,0,1 +7,4.564348,0,5.283711,5.335004,1,24.1,0,0,1 +6,4.564348,0,5.283711,5.335004,1,24.1,0,0,1 +4,4.564348,0,5.283711,5.335004,1,24.1,0,0,1 +7,4.564348,0,5.283711,5.335004,1,24.1,0,0,1 +0,4.564348,0,5.283711,5.335004,0,20.7,0,0,1 +2,4.564348,0,5.283711,5.335004,0,20.7,0,0,1 +1,0,0,0,0,1,17.2,0,1,0 +0,0,0,0,0,1,17.2,0,1,0 +0,0,0,0,0,1,17.2,0,1,0 +0,0,0,0,0,1,17.2,0,1,0 +1,0,0,0,0,1,17.2,0,1,0 +6,0,0,0,0,0,24.1,1,0,0 +4,0,0,0,0,0,24.1,1,0,0 +6,0,0,0,0,0,24.1,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,1,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,1,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,1,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,1,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,1,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,1,0 +1,3.258096,0,6.620073,8.006368,0,13.8,0,1,0 +2,3.258096,0,6.620073,8.006368,0,13.8,0,1,0 +4,3.258096,0,6.620073,8.006368,0,13.8,0,1,0 +1,3.258096,0,6.620073,8.006368,.1442925,10.57626,1,0,0 +2,3.258096,0,6.620073,8.006368,.1442925,10.57626,1,0,0 +1,3.258096,0,6.620073,8.006368,.1442925,10.57626,1,0,0 +1,3.258096,0,6.620073,8.006368,0,31,0,1,0 +8,3.258096,0,6.620073,8.006368,0,31,0,1,0 +4,3.258096,0,6.620073,8.006368,0,31,0,1,0 +0,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +4,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +5,3.258096,0,6.620073,8.006368,0,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,1,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,1,3.4,0,0,0 +1,4.564348,0,6.907755,6.959049,1,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +2,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +5,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +4,0,1,6.109248,6.160541,1,13.8,0,1,0 +18,0,1,6.109248,6.160541,1,13.8,0,1,0 +6,0,1,6.109248,6.160541,1,13.8,0,1,0 +3,0,0,0,0,0,10.3,0,0,0 +3,0,0,0,0,0,10.3,0,0,0 +4,0,0,0,0,0,10.3,0,0,0 +3,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +7,0,0,0,0,0,6.9,0,0,0 +7,0,0,0,0,0,10.57626,0,0,0 +12,0,0,0,0,0,10.57626,0,0,0 +7,0,0,0,0,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,0,0,1,0 +0,0,1,0,6.160541,0,0,0,1,0 +0,0,1,0,6.160541,0,0,0,1,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,10.57626,1,0,0 +0,0,1,0,6.160541,0,13.8,1,0,0 +0,0,1,0,6.160541,0,13.8,1,0,0 +0,0,1,0,6.160541,0,13.8,1,0,0 +0,0,1,0,6.160541,0,3.4,0,0,0 +0,0,1,0,6.160541,0,3.4,0,0,0 +0,0,1,0,6.160541,0,3.4,0,0,0 +19,0,0,5.444493,0,1,37.9,0,1,0 +15,0,0,5.444493,0,1,37.9,0,1,0 +17,0,0,5.444493,0,1,37.9,0,1,0 +28,0,0,5.444493,0,1,20.7,1,0,0 +32,0,0,5.444493,0,1,20.7,1,0,0 +0,0,0,3.178054,0,0,0,0,0,0 +0,0,0,3.178054,0,0,0,0,0,0 +0,0,0,3.178054,0,0,0,0,0,0 +5,0,0,3.178054,0,1,27.6,1,0,0 +7,0,0,3.178054,0,1,27.6,1,0,0 +6,0,0,3.178054,0,1,27.6,1,0,0 +0,3.258096,0,6.021509,6.918102,1,24.1,0,1,0 +0,3.258096,0,6.021509,6.918102,1,24.1,0,1,0 +0,3.258096,0,6.021509,6.918102,1,24.1,0,1,0 +0,3.931826,0,5.753049,6.446196,0,24.1,0,1,0 +1,3.931826,0,5.753049,6.446196,0,24.1,0,1,0 +0,3.931826,0,5.753049,6.446196,0,24.1,0,1,0 +0,3.931826,0,5.753049,6.446196,1,17.2,1,0,0 +0,3.931826,0,5.753049,6.446196,1,17.2,1,0,0 +2,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +3,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +2,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +8,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +3,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +5,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +7,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +4,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +16,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +5,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +8,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +6,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +7,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +1,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +1,3.258096,0,6.620073,8.006368,0,0,0,0,0 +2,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +1,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +1,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +6,3.258096,0,6.620073,8.006368,1,24.1,1,0,0 +3,3.258096,0,6.620073,8.006368,1,24.1,1,0,0 +1,3.258096,0,6.620073,8.006368,1,24.1,1,0,0 +5,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +4,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,0,0,5.285232,0,0,6.9,0,0,0 +1,0,0,5.285232,0,0,6.9,0,0,0 +2,0,0,5.285232,0,0,6.9,0,0,0 +1,0,0,5.285232,0,0,10.3,0,0,0 +3,0,0,5.285232,0,0,10.3,0,0,0 +2,0,0,5.285232,0,0,10.3,0,0,0 +0,0,0,5.285232,0,0,10.3,0,0,0 +0,0,0,5.285232,0,0,10.3,0,0,0 +1,0,0,5.285232,0,0,10.3,0,0,0 +2,0,0,4.97231,0,0,17.2,1,0,0 +0,0,0,4.97231,0,0,17.2,1,0,0 +0,0,0,4.97231,0,0,17.2,1,0,0 +0,0,0,4.97231,0,0,10.57626,0,0,0 +1,0,0,4.97231,0,0,10.57626,0,0,0 +0,0,0,4.97231,0,0,10.57626,0,0,0 +2,0,0,4.97231,0,0,31,1,0,0 +2,0,0,4.97231,0,0,31,1,0,0 +1,0,0,4.97231,0,0,31,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +1,0,1,6.109248,6.160541,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +2,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,1,0,0 +5,0,0,0,0,0,10.3,0,1,0 +7,0,0,0,0,0,10.3,0,1,0 +13,0,0,0,0,0,10.3,0,1,0 +0,0,0,0,0,0,0,0,1,0 +0,0,0,0,0,0,0,0,1,0 +0,0,0,0,0,0,0,0,1,0 +0,4.564348,0,5.572838,6.959049,0,0,1,0,0 +0,4.564348,0,5.572838,6.959049,0,0,1,0,0 +0,4.564348,0,5.572838,6.959049,0,0,1,0,0 +0,4.564348,0,5.572838,6.959049,0,10.57626,1,0,0 +0,4.564348,0,5.572838,6.959049,0,10.57626,1,0,0 +0,4.564348,0,5.572838,6.959049,0,10.57626,1,0,0 +0,4.564348,0,5.572838,6.959049,0,0,1,0,0 +0,4.564348,0,5.572838,6.959049,0,0,1,0,0 +0,4.564348,0,5.572838,6.959049,0,0,1,0,0 +0,4.564348,0,5.572838,6.959049,0,10.57626,0,0,0 +0,4.564348,0,5.572838,6.959049,0,10.57626,0,0,0 +0,4.564348,0,5.572838,6.959049,0,10.57626,0,0,0 +1,0,0,4.668708,0,1,17.2,1,0,0 +3,0,0,4.668708,0,1,17.2,1,0,0 +2,0,0,4.668708,0,1,17.2,1,0,0 +1,0,0,4.668708,0,0,10.57626,1,0,0 +1,0,0,4.668708,0,0,10.57626,1,0,0 +2,0,0,4.668708,0,0,10.57626,1,0,0 +0,0,0,4.668708,0,0,10.57626,1,0,0 +0,0,0,4.668708,0,0,10.57626,1,0,0 +0,0,0,4.668708,0,0,10.57626,1,0,0 +0,0,0,4.668708,0,0,13.8,1,0,0 +1,0,0,4.668708,0,0,13.8,1,0,0 +1,0,0,4.668708,0,0,13.8,1,0,0 +0,0,0,4.668708,0,0,10.57626,1,0,0 +0,0,0,4.668708,0,0,10.57626,1,0,0 +0,0,0,4.668708,0,0,10.57626,1,0,0 +0,0,0,4.668708,0,0,10.57626,1,0,0 +3,0,0,4.668708,0,0,10.57626,1,0,0 +0,0,0,4.668708,0,0,10.57626,1,0,0 +2,0,0,4.668708,0,0,13.8,1,0,0 +3,0,0,4.668708,0,0,13.8,1,0,0 +4,0,0,4.668708,0,0,13.8,1,0,0 +1,0,0,4.668708,0,0,10.57626,1,0,0 +1,0,0,4.668708,0,0,10.57626,1,0,0 +1,0,0,4.668708,0,0,10.57626,1,0,0 +0,0,0,4.668708,0,0,10.57626,1,0,0 +1,0,0,4.668708,0,0,10.57626,1,0,0 +0,0,0,4.668708,0,0,10.57626,1,0,0 +1,0,0,4.668708,0,0,3.4,1,0,0 +1,0,0,4.668708,0,0,3.4,1,0,0 +0,0,0,4.668708,0,0,3.4,1,0,0 +1,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +1,4.564348,0,6.907755,6.959049,0,0,0,0,0 +1,4.564348,0,6.907755,6.959049,0,0,0,0,0 +2,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +3,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +4,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +3,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +4,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +8,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +3,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +5,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +2,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +0,0,1,6.109248,6.160541,0,0,1,0,0 +1,3.258096,0,6.620073,8.006368,1,10.3,1,0,0 +2,3.258096,0,6.620073,8.006368,1,10.3,1,0,0 +2,3.258096,0,6.620073,8.006368,1,10.3,1,0,0 +10,4.564348,0,6.50354,6.569703,0,17.2,1,0,0 +10,4.564348,0,6.50354,6.569703,0,17.2,1,0,0 +5,4.564348,0,6.50354,6.569703,0,17.2,1,0,0 +4,4.564348,0,6.50354,6.569703,0,17.2,1,0,0 +2,4.564348,0,6.50354,6.569703,0,17.2,1,0,0 +0,4.564348,0,6.50354,6.569703,0,6.9,0,0,0 +0,4.564348,0,6.50354,6.569703,0,6.9,0,0,0 +0,4.564348,0,6.50354,6.569703,0,6.9,0,0,0 +1,4.564348,0,6.50354,6.569703,0,6.9,0,0,0 +0,4.564348,0,6.50354,6.569703,0,6.9,0,0,0 +0,0,1,5.857819,5.755076,0,0,0,0,0 +0,0,1,5.857819,5.755076,0,0,0,0,0 +0,0,1,5.857819,5.755076,0,0,0,0,0 +1,0,1,5.857819,5.755076,0,0,0,0,0 +0,0,1,5.857819,5.755076,0,0,0,0,0 +0,0,1,5.857819,5.755076,0,13.8,0,0,0 +2,0,1,5.857819,5.755076,0,13.8,0,0,0 +1,0,1,5.857819,5.755076,0,13.8,0,0,0 +1,0,1,5.857819,5.755076,0,13.8,0,0,0 +0,0,1,5.857819,5.755076,0,13.8,0,0,0 +0,0,1,6.109248,6.160541,1,10.3,1,0,0 +4,0,1,6.109248,6.160541,1,10.3,1,0,0 +7,0,1,6.109248,6.160541,1,10.3,1,0,0 +2,0,1,6.109248,6.160541,0,10.3,0,1,0 +3,0,1,6.109248,6.160541,0,10.3,0,1,0 +1,0,1,6.109248,6.160541,0,10.3,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,1,0,0 +2,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +2,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +2,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +1,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +0,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +0,0,1,6.109248,6.160541,1,10.57626,0,0,1 +2,0,1,6.109248,6.160541,1,10.57626,0,0,1 +0,0,1,6.109248,6.160541,1,10.57626,0,0,1 +0,0,1,6.109248,6.160541,1,6.9,1,0,0 +0,0,1,6.109248,6.160541,1,6.9,1,0,0 +3,0,1,6.109248,6.160541,1,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,0,0,1 +0,0,1,6.109248,6.160541,0,13.8,0,0,1 +0,0,1,6.109248,6.160541,0,13.8,0,0,1 +0,0,1,6.109248,6.160541,0,6.9,0,1,0 +0,0,1,6.109248,6.160541,0,6.9,0,1,0 +0,0,1,6.109248,6.160541,0,6.9,0,1,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,1 +1,0,1,6.109248,6.160541,0,6.9,0,0,1 +0,0,1,6.109248,6.160541,0,6.9,0,0,1 +1,0,1,6.109248,6.160541,0,10.57626,0,0,1 +0,0,1,6.109248,6.160541,0,10.57626,0,0,1 +0,0,1,6.109248,6.160541,0,10.57626,0,0,1 +0,0,1,5.615461,5.061929,0,0,0,1,0 +0,0,1,5.615461,5.061929,0,0,0,1,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,0,1,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,0,1,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,0,1,0 +2,3.258096,0,6.094923,7.481217,0,10.57626,0,0,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,0,0,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,0,0,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,1,0,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,1,0,0 +2,3.258096,0,6.094923,7.481217,0,10.57626,1,0,0 +3,3.258096,0,6.094923,7.481217,0,10.3,0,1,0 +4,3.258096,0,6.094923,7.481217,0,10.3,0,1,0 +12,3.258096,0,6.094923,7.481217,0,10.3,0,1,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,1,0,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,1,0,0 +1,3.258096,0,6.094923,7.481217,0,10.57626,1,0,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,1,0,0 +2,3.258096,0,6.094923,7.481217,0,10.57626,1,0,0 +3,3.258096,0,6.094923,7.481217,0,10.57626,1,0,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,0,1,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,0,1,0 +1,3.258096,0,6.094923,7.481217,0,10.57626,0,1,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,0,1,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,0,1,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,0,1,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,1,0,0 +2,3.258096,0,6.094923,7.481217,0,10.57626,1,0,0 +0,3.258096,0,6.094923,7.481217,0,10.57626,1,0,0 +4,3.258096,0,6.094923,7.481217,1,10.3,1,0,0 +3,3.258096,0,6.094923,7.481217,1,10.3,1,0,0 +3,3.258096,0,6.094923,7.481217,1,10.3,1,0,0 +0,0,0,5.986854,0,0,0,1,0,0 +1,0,0,5.986854,0,0,0,1,0,0 +0,0,0,5.986854,0,0,0,1,0,0 +12,0,0,5.743003,0,1,6.9,0,1,0 +5,0,0,5.743003,0,1,6.9,0,1,0 +7,0,0,5.743003,0,1,6.9,0,1,0 +1,0,0,5.743003,0,0,10.57626,1,0,0 +3,0,0,5.743003,0,0,10.57626,1,0,0 +1,0,0,5.743003,0,0,10.57626,1,0,0 +1,0,0,6.148468,0,0,6.9,1,0,0 +0,0,0,6.148468,0,0,6.9,1,0,0 +10,0,0,6.148468,0,0,6.9,1,0,0 +0,0,0,5.743003,0,0,0,1,0,0 +2,0,0,5.743003,0,0,0,1,0,0 +3,0,0,5.743003,0,0,0,1,0,0 +0,0,0,5.743003,0,1,6.9,0,1,0 +0,0,0,5.743003,0,1,6.9,0,1,0 +1,0,0,5.743003,0,1,6.9,0,1,0 +9,0,1,6.701961,5.755076,1,20.7,0,0,1 +14,0,1,6.701961,5.755076,1,20.7,0,0,1 +2,0,1,6.701961,5.755076,1,20.7,0,0,1 +1,0,1,6.701961,5.755076,0,6.9,0,1,0 +1,0,1,6.701961,5.755076,0,6.9,0,1,0 +2,0,1,6.701961,5.755076,0,6.9,0,1,0 +0,3.258096,0,6.476973,7.863267,0,10.57626,0,1,0 +0,3.258096,0,6.476973,7.863267,0,10.57626,0,1,0 +0,3.258096,0,6.476973,7.863267,0,10.57626,0,1,0 +1,3.258096,0,6.476973,7.863267,0,10.57626,0,1,0 +4,3.258096,0,6.476973,7.863267,0,10.57626,0,1,0 +1,3.258096,0,6.476973,7.863267,0,3.4,0,0,0 +0,3.258096,0,6.476973,7.863267,0,3.4,0,0,0 +0,3.258096,0,6.476973,7.863267,0,3.4,0,0,0 +1,3.258096,0,6.476973,7.863267,0,3.4,0,0,0 +2,3.258096,0,6.476973,7.863267,0,3.4,0,0,0 +2,3.258096,0,6.476973,7.863267,0,10.3,0,0,0 +0,3.258096,0,6.476973,7.863267,0,10.3,0,0,0 +1,3.258096,0,6.476973,7.863267,0,10.3,0,0,0 +3,3.258096,0,6.476973,7.863267,0,10.3,0,0,0 +8,3.258096,0,6.476973,7.863267,0,10.3,0,0,0 +0,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +1,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +2,4.564348,0,6.907755,6.959049,0,20.7,1,0,0 +1,0,1,6.109248,6.160541,0,20.7,1,0,0 +22,0,1,6.109248,6.160541,0,20.7,1,0,0 +1,0,1,6.109248,6.160541,0,20.7,1,0,0 +3,0,1,6.109248,6.160541,0,6.9,1,0,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +2,0,1,6.109248,6.160541,0,10.57626,1,0,0 +3,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +6,0,1,0,5.755076,1,37.9,0,0,1 +3,0,1,0,5.755076,1,37.9,0,0,1 +7,0,1,0,5.755076,1,37.9,0,0,1 +2,0,1,0,5.755076,1,20.7,1,0,0 +5,0,1,0,5.755076,1,20.7,1,0,0 +1,0,1,0,5.755076,1,20.7,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,3.4,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +5,0,1,6.109248,6.160541,0,17.2,1,0,0 +0,0,1,6.109248,6.160541,0,17.2,1,0,0 +3,0,1,6.109248,6.160541,0,17.2,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,1,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,3.258096,0,6.603266,7.989561,0,3.4,0,0,0 +0,3.258096,0,6.603266,7.989561,0,3.4,0,0,0 +1,3.258096,0,6.603266,7.989561,0,3.4,0,0,0 +2,3.258096,0,6.603266,7.989561,0,3.4,0,0,0 +0,3.258096,0,6.603266,7.989561,0,3.4,0,0,0 +1,3.258096,0,6.603266,7.989561,0,0,1,0,0 +3,3.258096,0,6.603266,7.989561,0,0,1,0,0 +3,3.258096,0,6.603266,7.989561,0,0,1,0,0 +5,3.258096,0,6.603266,7.989561,0,0,1,0,0 +1,3.258096,0,6.603266,7.989561,0,0,1,0,0 +1,3.258096,0,6.603266,7.989561,0,10.57626,0,0,0 +0,3.258096,0,6.603266,7.989561,0,10.57626,0,0,0 +1,3.258096,0,6.603266,7.989561,0,10.57626,0,0,0 +1,3.258096,0,6.603266,7.989561,0,10.57626,0,0,0 +1,3.258096,0,6.603266,7.989561,0,10.57626,0,0,0 +0,3.258096,0,6.603266,7.989561,0,10.57626,0,0,0 +1,3.258096,0,6.603266,7.989561,0,10.57626,0,0,0 +2,3.258096,0,6.603266,7.989561,0,10.57626,0,0,0 +3,3.258096,0,6.603266,7.989561,0,10.57626,0,0,0 +2,3.258096,0,6.603266,7.989561,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +1,4.564348,0,6.907755,6.959049,0,0,1,0,0 +0,4.564348,0,6.907755,6.959049,0,0,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.3,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +2,3.258096,0,6.408595,6.293789,0,17.2,0,1,0 +1,3.258096,0,6.408595,6.293789,0,17.2,0,1,0 +2,3.258096,0,6.408595,6.293789,0,17.2,0,1,0 +0,4.564348,0,5.933306,5.929029,0,10.57626,1,0,0 +0,4.564348,0,5.933306,5.929029,0,10.57626,1,0,0 +0,4.564348,0,5.933306,5.929029,0,10.57626,1,0,0 +0,4.564348,0,5.933306,5.929029,0,3.4,0,0,0 +0,4.564348,0,5.933306,5.929029,0,3.4,0,0,0 +0,4.564348,0,5.933306,5.929029,0,3.4,0,0,0 +0,4.564348,0,5.933306,5.929029,0,6.9,0,0,0 +0,4.564348,0,5.933306,5.929029,0,6.9,0,0,0 +0,4.564348,0,5.933306,5.929029,0,6.9,0,0,0 +0,4.564348,0,5.933306,5.929029,0,10.57626,0,0,0 +0,4.564348,0,5.933306,5.929029,0,10.57626,0,0,0 +0,4.564348,0,5.933306,5.929029,0,10.57626,0,0,0 +3,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +5,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +1,4.564348,0,6.907755,6.959049,1,6.9,0,0,1 +0,4.564348,0,6.907755,6.959049,1,6.9,0,0,1 +1,4.564348,0,6.907755,6.959049,1,6.9,0,0,1 +1,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +2,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +0,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +7,4.564348,0,6.907755,6.959049,0,17.2,0,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +4,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +3,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +3,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +2,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,1,10.3,1,0,0 +0,0,0,0,0,1,10.3,1,0,0 +0,0,0,0,0,1,10.3,1,0,0 +3,0,0,0,0,1,17.2,1,0,0 +3,0,0,0,0,1,17.2,1,0,0 +2,0,0,0,0,1,17.2,1,0,0 +0,3.258096,0,6.262826,7.649121,0,20.7,0,0,0 +0,3.258096,0,6.262826,7.649121,0,20.7,0,0,0 +0,3.258096,0,6.262826,7.649121,0,20.7,0,0,0 +0,3.258096,0,6.262826,7.649121,1,27.6,0,0,0 +4,3.258096,0,6.262826,7.649121,1,27.6,0,0,0 +0,3.258096,0,6.262826,7.649121,1,27.6,0,0,0 +0,3.258096,0,6.262826,7.649121,0,10.57626,0,0,0 +0,3.258096,0,6.262826,7.649121,0,10.57626,0,0,0 +0,3.258096,0,6.262826,7.649121,0,10.57626,0,0,0 +6,0,0,5.72984,0,1,20.7,0,1,0 +5,0,0,5.72984,0,1,20.7,0,1,0 +4,0,0,5.72984,0,1,20.7,0,1,0 +9,0,0,5.72984,0,1,20.7,0,1,0 +8,0,0,5.72984,0,1,20.7,0,1,0 +7,0,0,5.72984,0,1,24.1,1,0,0 +12,0,0,5.72984,0,1,24.1,1,0,0 +6,0,0,5.72984,0,1,24.1,1,0,0 +5,0,0,5.72984,0,0,10.57626,1,0,0 +6,0,0,5.72984,0,0,10.57626,1,0,0 +4,0,0,5.72984,0,0,10.57626,1,0,0 +4,0,0,5.72984,0,0,10.57626,1,0,0 +1,0,0,5.72984,0,0,10.57626,1,0,0 +1,0,1,5.010635,6.160541,0,10.57626,1,0,0 +3,0,1,5.010635,6.160541,0,10.57626,1,0,0 +1,0,1,5.010635,6.160541,0,10.57626,1,0,0 +1,0,1,5.010635,6.160541,0,10.57626,1,0,0 +1,0,1,5.010635,6.160541,0,10.57626,1,0,0 +0,0,1,5.010635,6.160541,0,10.57626,1,0,0 +0,0,1,5.010635,6.160541,0,10.3,0,0,0 +4,0,1,5.010635,6.160541,0,10.3,0,0,0 +5,0,1,5.010635,6.160541,0,10.3,0,0,0 +4,0,1,5.010635,6.160541,0,6.9,0,0,0 +0,0,1,5.010635,6.160541,0,6.9,0,0,0 +3,0,1,5.010635,6.160541,0,6.9,0,0,0 +13,0,0,0,0,0,10.57626,1,0,0 +7,0,0,0,0,0,10.57626,1,0,0 +3,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +6,0,0,0,0,0,10.3,1,0,0 +9,0,0,0,0,0,10.3,1,0,0 +4,0,0,0,0,0,10.3,1,0,0 +20,0,0,0,0,0,10.57626,1,0,0 +7,0,0,0,0,0,10.57626,1,0,0 +4,0,0,0,0,0,10.57626,1,0,0 +3,3.258096,0,6.620073,8.006368,0,24.1,1,0,0 +1,3.258096,0,6.620073,8.006368,0,24.1,1,0,0 +1,3.258096,0,6.620073,8.006368,0,24.1,1,0,0 +2,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +2,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +1,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +0,0,1,5.703783,6.160541,0,10.3,0,1,0 +1,0,1,5.703783,6.160541,0,10.3,0,1,0 +9,0,1,5.703783,6.160541,0,10.3,0,1,0 +0,0,1,5.703783,6.160541,0,10.3,1,0,0 +0,0,1,5.703783,6.160541,0,10.3,1,0,0 +0,0,1,5.703783,6.160541,0,10.3,1,0,0 +10,0,0,5.560835,0,1,31,0,1,0 +8,0,0,5.560835,0,1,31,0,1,0 +10,0,0,5.560835,0,1,31,0,1,0 +7,0,0,5.560835,0,1,31,0,1,0 +9,0,0,5.560835,0,1,31,0,1,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +1,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +2,4.564348,0,6.907755,6.959049,0,6.9,0,0,0 +2,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +1,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +6,4.564348,0,6.907755,6.959049,0,3.4,1,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +1,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +9,0,1,5.593967,5.061929,1,37.9,0,1,0 +3,0,1,5.593967,5.061929,1,37.9,0,1,0 +5,0,1,5.593967,5.061929,1,37.9,0,1,0 +13,0,0,5.766538,0,1,31,1,0,0 +8,0,0,5.766538,0,1,31,1,0,0 +15,0,0,5.766538,0,1,31,1,0,0 +10,0,0,5.766538,0,1,27.6,0,1,0 +6,0,0,5.766538,0,1,27.6,0,1,0 +14,0,0,5.766538,0,1,27.6,0,1,0 +13,0,1,6.109248,6.160541,0,27.6,1,0,0 +5,0,1,6.109248,6.160541,0,27.6,1,0,0 +4,0,1,6.109248,6.160541,0,27.6,1,0,0 +3,0,1,6.109248,6.160541,0,10.3,1,0,0 +1,0,1,6.109248,6.160541,0,10.3,1,0,0 +4,0,1,6.109248,6.160541,0,10.3,1,0,0 +17,0,1,6.109248,6.160541,0,10.57626,1,0,0 +10,0,1,6.109248,6.160541,0,10.57626,1,0,0 +11,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +1,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,0,1,6.109248,6.160541,0,6.9,0,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +3,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +3,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +4,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +8,0,1,6.109248,6.160541,0,10.3,0,0,0 +3,0,1,6.109248,6.160541,0,10.3,0,0,0 +6,0,1,6.109248,6.160541,0,10.3,0,0,0 +9,0,1,6.109248,6.160541,0,10.3,0,0,0 +4,0,1,6.109248,6.160541,0,17.2,1,0,0 +4,0,1,6.109248,6.160541,0,17.2,1,0,0 +6,0,1,6.109248,6.160541,0,17.2,1,0,0 +11,0,1,6.109248,6.160541,0,17.2,1,0,0 +8,0,1,6.109248,6.160541,0,17.2,1,0,0 +3,0,0,0,0,1,24.1,0,0,1 +1,0,0,0,0,1,10.57626,0,1,0 +13,3.258096,0,6.238403,6.915723,1,37.9,0,0,1 +0,3.931826,0,0,7.37149,0,10.3,0,1,0 +3,3.931826,0,0,7.37149,0,10.3,0,1,0 +2,3.931826,0,0,7.37149,0,10.3,0,1,0 +0,3.931826,0,0,7.37149,1,10.57626,0,1,0 +3,3.931826,0,0,7.37149,1,10.57626,0,1,0 +0,3.931826,0,0,7.37149,1,10.57626,0,1,0 +0,3.931826,0,0,7.37149,1,10.57626,0,1,0 +0,3.931826,0,0,7.37149,1,10.57626,0,1,0 +0,3.931826,0,0,7.37149,1,10.57626,0,1,0 +0,3.931826,0,0,7.37149,1,10.57626,0,0,0 +0,3.931826,0,0,7.37149,1,10.57626,0,0,0 +1,3.931826,0,0,7.37149,1,10.57626,0,0,0 +0,3.931826,0,0,7.37149,1,10.57626,0,0,0 +0,3.931826,0,0,7.37149,1,10.57626,0,0,0 +0,3.931826,0,0,7.37149,1,10.57626,0,0,0 +1,3.931826,0,0,7.37149,0,3.4,0,1,0 +7,3.931826,0,0,7.37149,0,3.4,0,1,0 +2,3.931826,0,0,7.37149,0,3.4,0,1,0 +0,0,0,0,0,.1442925,3.4,0,0,0 +0,0,0,0,0,.1442925,3.4,0,0,0 +0,0,0,0,0,.1442925,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,10.3,0,1,0 +0,0,0,0,0,0,10.3,0,1,0 +0,0,0,0,0,0,10.3,0,1,0 +0,0,0,0,0,0,3.4,0,1,0 +2,0,0,4.094345,0,0,10.3,0,0,0 +3,0,0,4.094345,0,0,10.3,0,0,0 +4,0,0,4.094345,0,0,10.3,0,0,0 +4,0,0,4.094345,0,0,10.3,0,0,0 +1,0,0,4.094345,0,0,10.3,0,0,0 +3,0,0,4.094345,0,0,17.2,0,0,0 +2,0,0,4.094345,0,0,17.2,0,0,0 +2,0,0,4.094345,0,0,17.2,0,0,0 +1,0,0,4.094345,0,0,17.2,0,0,0 +7,0,0,4.094345,0,0,17.2,0,0,0 +0,0,0,5.094976,0,0,0,0,0,0 +0,0,0,5.094976,0,0,3.4,0,0,0 +1,0,0,5.094976,0,0,3.4,0,0,0 +0,0,0,5.094976,0,0,3.4,0,0,0 +0,0,0,5.094976,0,0,10.57626,0,0,0 +0,0,0,5.094976,0,0,10.57626,0,0,0 +0,0,0,5.094976,0,0,10.57626,0,0,0 +0,0,0,5.094976,0,0,10.57626,0,0,0 +1,0,0,5.094976,0,0,10.57626,0,0,0 +0,0,0,5.094976,0,0,10.57626,0,0,0 +0,0,0,5.094976,0,0,0,1,0,0 +1,0,0,5.094976,0,0,0,1,0,0 +0,0,0,5.094976,0,0,0,1,0,0 +0,0,0,5.094976,0,0,13.8,1,0,0 +1,0,0,5.094976,0,0,13.8,1,0,0 +0,0,0,5.094976,0,0,13.8,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +6,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +3,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +1,3.258096,0,6.620073,8.006368,0,13.8,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +5,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +3,3.258096,0,6.620073,8.006368,0,6.9,1,0,0 +4,0,0,5.145166,0,0,6.9,0,0,0 +1,0,0,5.145166,0,0,6.9,0,0,0 +7,0,0,5.145166,0,0,6.9,0,0,0 +4,0,1,5.703783,5.755076,1,17.2,1,0,0 +3,0,1,5.703783,5.755076,1,17.2,1,0,0 +2,0,1,5.703783,5.755076,1,24.1,1,0,0 +7,0,1,5.703783,5.755076,1,24.1,1,0,0 +9,0,1,5.703783,5.755076,1,24.1,1,0,0 +0,3.931826,0,6.907755,7.600903,1,3.4,0,0,1 +0,3.931826,0,6.907755,7.600903,1,3.4,0,0,1 +0,3.931826,0,6.907755,7.600903,1,3.4,0,0,1 +3,3.931826,0,6.907755,7.600903,1,20.7,0,0,1 +2,3.931826,0,6.907755,7.600903,1,20.7,0,0,1 +2,3.931826,0,6.907755,7.600903,1,20.7,0,0,1 +12,0,0,5.046517,0,0,20.7,1,0,0 +21,0,0,5.046517,0,0,20.7,1,0,0 +16,0,0,5.046517,0,0,20.7,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +0,4.564348,0,6.907755,6.959049,0,6.9,1,0,0 +1,4.564348,0,6.907755,6.959049,0,27.6,0,1,0 +9,4.564348,0,6.907755,6.959049,0,27.6,0,1,0 +1,4.564348,0,6.907755,6.959049,0,27.6,0,1,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,1,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,1,0 +0,4.564348,0,6.907755,6.959049,0,6.9,0,1,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,1 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,1 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,1 +0,0,0,5.436556,0,0,3.4,1,0,0 +1,0,0,5.436556,0,0,3.4,1,0,0 +2,0,0,5.436556,0,0,3.4,1,0,0 +3,0,0,5.436556,0,0,13.8,1,0,0 +3,0,0,5.436556,0,0,13.8,1,0,0 +8,0,0,5.436556,0,0,13.8,1,0,0 +6,0,0,5.436556,0,0,10.57626,1,0,0 +1,0,0,5.436556,0,0,10.57626,1,0,0 +2,0,0,5.436556,0,0,10.57626,1,0,0 +4,3.258096,0,6.579251,7.965546,0,6.9,1,0,0 +2,3.258096,0,6.579251,7.965546,0,6.9,1,0,0 +1,3.258096,0,6.579251,7.965546,0,6.9,1,0,0 +6,3.258096,0,6.579251,7.965546,0,27.6,0,1,0 +5,3.258096,0,6.579251,7.965546,0,27.6,0,1,0 +1,3.258096,0,6.579251,7.965546,0,27.6,0,1,0 +2,3.258096,0,6.579251,7.965546,0,3.4,0,1,0 +1,3.258096,0,6.579251,7.965546,0,3.4,0,1,0 +0,3.258096,0,6.579251,7.965546,0,3.4,0,1,0 +1,3.931826,0,6.907755,7.600903,0,10.57626,1,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,1,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,1,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,1,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,1,0,0 +0,3.931826,0,6.907755,7.600903,1,17.2,0,1,0 +0,3.931826,0,6.907755,7.600903,1,17.2,0,1,0 +0,3.931826,0,6.907755,7.600903,1,17.2,0,1,0 +0,3.931826,0,6.907755,7.600903,1,17.2,0,1,0 +0,3.931826,0,6.907755,7.600903,1,17.2,0,1,0 +1,3.931826,0,6.907755,7.600903,0,10.3,0,1,0 +1,3.931826,0,6.907755,7.600903,0,10.3,0,1,0 +1,3.931826,0,6.907755,7.600903,0,10.3,0,1,0 +0,3.931826,0,6.907755,7.600903,0,10.3,0,1,0 +0,3.931826,0,6.907755,7.600903,0,10.3,0,1,0 +4,3.931826,0,6.907755,7.600903,0,10.3,0,1,0 +3,3.931826,0,6.907755,7.600903,0,10.3,0,1,0 +3,3.931826,0,6.907755,7.600903,0,10.3,0,1,0 +4,3.931826,0,6.907755,7.600903,0,10.3,0,1,0 +3,3.931826,0,6.907755,7.600903,0,10.3,0,1,0 +1,0,0,5.943534,0,0,17.2,1,0,0 +2,0,0,5.943534,0,0,17.2,1,0,0 +0,0,0,5.943534,0,0,17.2,1,0,0 +0,0,0,0,0,0,27.6,0,1,0 +9,0,0,0,0,0,27.6,0,1,0 +13,0,0,0,0,0,27.6,0,1,0 +0,4.564348,0,5.160491,5.467394,0,3.4,0,1,0 +0,4.564348,0,5.160491,5.467394,0,3.4,0,1,0 +0,4.564348,0,5.160491,5.467394,0,3.4,0,0,0 +0,4.564348,0,5.160491,5.467394,0,3.4,0,0,0 +0,4.564348,0,5.160491,5.467394,0,3.4,0,0,0 +1,4.564348,0,5.160491,5.467394,0,3.4,0,0,0 +0,4.564348,0,5.160491,5.467394,0,3.4,0,0,0 +0,4.564348,0,5.160491,5.467394,0,10.57626,0,0,0 +0,4.564348,0,5.160491,5.467394,0,10.57626,0,0,0 +0,4.564348,0,0,4.420108,0,0,1,0,0 +0,4.564348,0,0,4.420108,0,0,1,0,0 +0,4.564348,0,0,4.420108,0,0,1,0,0 +0,4.564348,0,0,4.420108,0,0,1,0,0 +0,4.564348,0,0,4.420108,0,0,1,0,0 +9,0,0,5.757007,0,0,17.2,1,0,0 +6,0,0,5.757007,0,0,17.2,1,0,0 +3,0,0,5.757007,0,0,17.2,1,0,0 +5,0,0,5.757007,0,0,10.57626,1,0,0 +2,0,0,5.757007,0,0,10.57626,1,0,0 +2,0,0,5.757007,0,0,10.57626,1,0,0 +9,0,0,5.757007,0,0,17.2,1,0,0 +2,0,0,5.757007,0,0,17.2,1,0,0 +2,0,0,5.757007,0,0,17.2,1,0,0 +2,0,0,5.757007,0,0,10.57626,1,0,0 +3,0,0,5.757007,0,0,10.57626,1,0,0 +2,0,0,5.757007,0,0,10.57626,1,0,0 +2,0,0,5.470083,0,1,24.1,1,0,0 +26,0,0,5.470083,0,1,24.1,1,0,0 +11,0,0,5.470083,0,1,24.1,1,0,0 +8,0,0,5.470083,0,0,10.57626,1,0,0 +14,0,0,5.470083,0,0,10.57626,1,0,0 +5,0,0,5.470083,0,0,10.57626,1,0,0 +34,0,0,5.470083,0,1,44.8,1,0,0 +48,0,0,5.470083,0,1,44.8,1,0,0 +31,0,0,5.470083,0,1,44.8,1,0,0 +0,0,1,0,6.160541,0,3.4,1,0,0 +0,0,1,0,6.160541,0,3.4,1,0,0 +0,0,1,0,6.160541,0,3.4,1,0,0 +0,0,1,0,6.160541,0,0,0,1,0 +0,0,1,0,6.160541,0,3.4,1,0,0 +0,0,1,0,6.160541,0,3.4,1,0,0 +4,0,1,0,6.160541,0,3.4,1,0,0 +0,4.564348,0,0,6.448223,0,3.4,0,0,0 +0,4.564348,0,0,6.448223,0,3.4,0,0,0 +0,4.564348,0,0,6.448223,0,3.4,0,0,0 +0,3.258096,0,6.620073,8.006368,0,20.7,1,0,0 +1,3.258096,0,6.620073,8.006368,0,20.7,1,0,0 +0,3.258096,0,6.620073,8.006368,0,20.7,1,0,0 +0,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +0,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +0,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.3,0,0,0 +1,0,1,6.109248,6.160541,0,10.3,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +5,0,1,6.109248,6.160541,0,27.6,0,0,0 +1,0,1,6.109248,6.160541,0,27.6,0,0,0 +1,3.258096,0,5.269815,6.656109,0,24.1,0,0,0 +2,3.258096,0,5.269815,6.656109,0,24.1,0,0,0 +3,3.258096,0,5.269815,6.656109,0,24.1,0,0,0 +0,3.931826,0,6.907755,7.600903,0,13.8,0,1,0 +4,3.931826,0,6.907755,7.600903,0,13.8,0,1,0 +4,3.931826,0,6.907755,7.600903,0,13.8,0,1,0 +0,3.931826,0,6.907755,7.600903,0,3.4,1,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,1,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,1,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,1,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,1,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,1,0,0 +6,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +1,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +2,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,0,1,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,0,1,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,0,1,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,1,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,1,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,1,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,1,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +4,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,1,13.8,1,0,0 +8,3.258096,0,6.620073,8.006368,1,13.8,1,0,0 +4,3.258096,0,6.620073,8.006368,1,13.8,1,0,0 +5,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +4,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +4,3.258096,0,6.620073,8.006368,0,17.2,1,0,0 +5,0,1,5.703783,5.755076,0,0,1,0,0 +4,0,1,5.703783,5.755076,0,0,1,0,0 +1,0,1,5.703783,5.755076,0,0,1,0,0 +0,0,1,5.703783,5.755076,0,0,1,0,0 +1,0,1,5.703783,5.755076,0,0,1,0,0 +10,0,1,5.703783,5.755076,0,3.4,0,0,0 +0,0,1,5.703783,5.755076,0,3.4,0,0,0 +0,0,1,5.703783,5.755076,0,3.4,0,0,0 +1,0,1,5.703783,5.755076,0,3.4,0,0,0 +0,0,1,5.703783,5.755076,0,3.4,0,0,0 +5,4.564348,0,6.907755,6.959049,1,3.4,1,0,0 +4,4.564348,0,6.907755,6.959049,1,3.4,1,0,0 +6,4.564348,0,6.907755,6.959049,1,3.4,1,0,0 +13,4.564348,0,6.907755,6.959049,0,41.4,0,1,0 +11,4.564348,0,6.907755,6.959049,0,41.4,0,1,0 +13,4.564348,0,6.907755,6.959049,0,41.4,0,1,0 +1,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +6,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +0,0,1,6.109248,6.160541,0,13.8,1,0,0 +3,0,1,6.109248,6.160541,0,20.7,1,0,0 +1,0,1,6.109248,6.160541,0,20.7,1,0,0 +2,0,1,6.109248,6.160541,0,20.7,1,0,0 +0,0,1,6.109248,6.160541,0,20.7,1,0,0 +1,0,1,6.109248,6.160541,0,20.7,1,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,0,0,0,1,13.8,0,0,0 +0,0,0,0,0,1,13.8,0,0,0 +4,0,0,0,0,1,13.8,0,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +7,0,0,0,0,0,6.9,0,0,0 +5,0,0,0,0,0,6.9,0,0,0 +10,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +4,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +1,0,0,0,0,0,3.4,1,0,0 +0,0,0,6.050488,0,.1442925,10.3,0,1,0 +0,0,0,6.050488,0,.1442925,10.3,0,1,0 +0,0,0,6.050488,0,.1442925,10.3,0,1,0 +9,0,0,6.050488,0,.1442925,10.3,0,1,0 +3,0,0,6.050488,0,.1442925,10.3,0,1,0 +5,0,0,6.050488,0,0,10.3,1,0,0 +0,0,0,6.050488,0,0,10.3,1,0,0 +0,0,0,6.050488,0,0,10.3,1,0,0 +14,0,0,6.050488,0,0,10.3,1,0,0 +7,0,0,6.050488,0,0,10.3,1,0,0 +5,0,0,5.88566,0,1,27.6,1,0,0 +0,0,0,5.88566,0,1,27.6,1,0,0 +2,0,0,5.88566,0,1,27.6,1,0,0 +2,0,0,5.88566,0,0,10.57626,0,0,0 +0,0,0,5.88566,0,0,10.57626,0,0,0 +0,0,0,5.88566,0,0,10.57626,0,0,0 +4,0,0,5.88566,0,0,10.57626,1,0,0 +1,0,0,5.88566,0,0,10.57626,1,0,0 +0,0,0,5.88566,0,0,10.57626,1,0,0 +1,0,0,5.88566,0,0,10.3,0,0,0 +2,0,0,5.88566,0,0,10.3,0,0,0 +3,0,0,5.88566,0,0,10.3,0,0,0 +5,0,0,5.88566,0,1,10.57626,1,0,0 +0,0,0,5.88566,0,1,10.57626,1,0,0 +0,0,0,5.88566,0,1,10.57626,1,0,0 +0,0,0,0,0,0,13.8,1,0,0 +3,0,0,0,0,0,13.8,1,0,0 +7,0,0,0,0,1,17.2,0,0,1 +18,0,0,0,0,1,17.2,0,0,1 +0,0,1,5.703783,6.160541,1,6.9,0,0,0 +0,0,1,5.703783,6.160541,1,6.9,0,0,0 +1,0,1,5.703783,6.160541,1,6.9,0,0,0 +0,0,1,5.703783,6.160541,0,10.3,0,0,0 +0,0,1,5.703783,6.160541,0,10.3,0,0,0 +0,0,1,5.703783,6.160541,0,10.3,0,0,0 +1,0,1,5.703783,6.160541,0,10.3,1,0,0 +0,0,1,5.703783,6.160541,0,10.3,1,0,0 +0,0,1,5.703783,6.160541,0,10.3,1,0,0 +1,0,0,6.704414,0,0,6.9,0,1,0 +3,0,0,6.704414,0,0,6.9,0,1,0 +0,0,0,6.704414,0,0,6.9,0,1,0 +1,0,0,6.704414,0,0,6.9,0,1,0 +0,0,0,6.704414,0,0,6.9,0,1,0 +1,0,0,6.704414,0,0,10.57626,1,0,0 +0,0,0,6.704414,0,0,10.57626,1,0,0 +2,0,0,6.704414,0,0,10.57626,1,0,0 +1,0,0,6.704414,0,0,10.57626,1,0,0 +1,0,0,6.704414,0,0,10.57626,1,0,0 +11,0,0,6.704414,0,0,10.3,0,1,0 +5,0,0,6.704414,0,0,10.3,0,1,0 +1,0,0,6.704414,0,0,10.3,0,1,0 +5,0,0,6.704414,0,0,10.3,0,1,0 +7,0,0,6.704414,0,0,10.3,0,1,0 +13,0,1,5.703783,5.755076,1,6.9,0,0,0 +3,0,1,5.703783,5.755076,1,6.9,0,0,0 +0,0,1,5.703783,5.755076,1,6.9,0,0,0 +1,0,1,5.703783,5.755076,0,6.9,0,0,1 +6,0,1,5.703783,5.755076,0,6.9,0,0,1 +6,0,1,5.703783,5.755076,0,6.9,0,0,1 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,1,6.109248,6.160541,0,3.4,1,0,0 +1,0,1,6.109248,6.160541,.1442925,10.57626,1,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,1,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,1,0,0 +3,0,1,6.109248,6.160541,0,0,1,0,0 +1,0,1,6.109248,6.160541,0,0,1,0,0 +2,0,1,6.109248,6.160541,0,0,1,0,0 +1,3.258096,0,6.620073,8.006368,1,24.1,0,1,0 +2,3.258096,0,6.620073,8.006368,1,24.1,0,1,0 +2,3.258096,0,6.620073,8.006368,1,24.1,0,1,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +4,3.258096,0,6.620073,8.006368,0,0,0,0,0 +1,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +2,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +5,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +3,0,0,5.957701,0,0,6.9,1,0,0 +1,0,0,5.957701,0,0,6.9,1,0,0 +1,0,0,5.957701,0,0,6.9,1,0,0 +0,0,0,5.957701,0,0,6.9,1,0,0 +3,0,0,5.957701,0,0,10.57626,0,0,0 +1,0,0,5.957701,0,0,10.57626,0,0,0 +3,0,0,5.957701,0,0,10.57626,0,0,0 +2,0,0,5.957701,0,0,10.57626,0,0,0 +1,0,0,5.957701,0,0,10.57626,0,0,0 +0,0,0,5.957701,0,0,10.57626,0,0,0 +3,0,0,5.957701,0,0,10.57626,0,0,0 +2,0,0,5.957701,0,0,10.57626,0,0,0 +1,0,0,5.957701,0,0,10.57626,0,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +0,3.931826,0,6.907755,7.600903,0,6.9,1,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,3.931826,0,6.907755,7.600903,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +7,0,1,6.109248,6.160541,1,17.2,1,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +1,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +1,0,1,5.703783,5.755076,0,6.9,0,0,0 +2,0,1,5.703783,5.755076,0,6.9,0,0,0 +2,0,1,5.703783,5.755076,0,6.9,0,0,0 +1,0,1,5.703783,5.755076,0,10.3,1,0,0 +7,0,1,5.703783,5.755076,0,10.3,1,0,0 +0,0,1,5.703783,5.755076,0,10.3,1,0,0 +2,0,0,4.094345,0,0,3.4,0,0,0 +2,0,0,4.094345,0,0,3.4,0,0,0 +1,0,0,4.094345,0,0,3.4,0,0,0 +20,4.564348,0,6.49224,5.781393,0,20.7,1,0,0 +24,4.564348,0,6.49224,5.781393,0,20.7,1,0,0 +17,4.564348,0,6.49224,5.781393,0,20.7,1,0,0 +0,4.564348,0,6.49224,5.781393,0,3.4,1,0,0 +0,4.564348,0,6.49224,5.781393,0,3.4,1,0,0 +0,4.564348,0,6.49224,5.781393,0,3.4,1,0,0 +9,4.564348,0,6.49224,5.781393,0,10.57626,1,0,0 +4,4.564348,0,6.49224,5.781393,0,10.57626,1,0,0 +5,4.564348,0,6.49224,5.781393,0,10.57626,1,0,0 +1,0,0,5.482637,0,1,10.3,1,0,0 +2,0,0,5.482637,0,1,10.3,1,0,0 +2,0,0,5.482637,0,1,10.3,1,0,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,1,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,1,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,1,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,1,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,1,0 +0,3.258096,0,6.055495,7.44179,0,10.57626,1,0,0 +0,3.258096,0,6.055495,7.44179,0,10.57626,1,0,0 +0,3.258096,0,6.055495,7.44179,0,10.57626,1,0,0 +0,3.258096,0,6.055495,7.44179,0,10.57626,1,0,0 +0,3.258096,0,6.055495,7.44179,0,10.57626,1,0,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,1,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,1,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,1,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,1,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,1,0 +2,3.258096,0,6.055495,7.44179,0,10.3,0,0,1 +0,3.258096,0,6.055495,7.44179,0,10.3,0,0,1 +0,3.258096,0,6.055495,7.44179,0,10.3,0,0,1 +0,3.258096,0,6.055495,7.44179,0,10.3,0,0,1 +0,3.258096,0,6.055495,7.44179,0,10.3,0,0,1 +5,3.258096,0,6.055495,7.44179,0,20.7,1,0,0 +1,3.258096,0,6.055495,7.44179,0,20.7,1,0,0 +0,3.258096,0,6.055495,7.44179,0,20.7,1,0,0 +0,3.258096,0,6.055495,7.44179,0,20.7,1,0,0 +1,3.258096,0,6.055495,7.44179,0,20.7,1,0,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,0,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,0,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,0,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,0,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,0,0 +0,3.258096,0,0,8.006368,0,0,0,0,0 +0,3.258096,0,0,8.006368,0,0,0,0,0 +0,3.258096,0,0,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +2,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +2,3.258096,0,6.620073,8.006368,0,3.4,1,0,0 +1,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,1,24.1,0,0,0 +0,3.258096,0,6.620073,8.006368,1,24.1,0,0,0 +0,3.258096,0,6.620073,8.006368,1,24.1,0,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +0,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +4,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +6,0,0,0,0,0,6.9,0,0,0 +8,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,10.3,0,0,0 +5,0,0,0,0,0,10.3,0,0,0 +11,0,0,0,0,0,10.3,0,0,0 +5,0,0,0,0,0,10.57626,0,0,0 +10,0,0,0,0,0,10.57626,0,0,0 +5,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,3.4,0,1,0 +0,0,0,0,0,0,3.4,0,1,0 +2,0,0,0,0,0,3.4,0,1,0 +1,0,0,0,0,0,3.4,1,0,0 +3,0,0,0,0,0,3.4,1,0,0 +2,0,0,0,0,0,3.4,1,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +4,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,10.57626,1,0,0 +3,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +3,0,0,0,0,0,10.3,0,1,0 +7,0,0,0,0,0,10.3,0,1,0 +4,0,0,0,0,0,10.3,0,1,0 +0,0,1,6.119022,5.755076,0,3.4,0,0,0 +1,0,1,6.119022,5.755076,0,3.4,0,0,0 +0,0,1,6.119022,5.755076,0,3.4,0,0,0 +0,0,1,6.119022,5.755076,0,3.4,0,0,0 +0,0,1,6.119022,5.755076,0,3.4,0,0,0 +1,0,1,6.119022,5.755076,0,6.9,0,0,0 +0,0,1,6.119022,5.755076,0,6.9,0,0,0 +0,0,1,6.119022,5.755076,0,6.9,0,0,0 +1,0,1,6.119022,5.755076,0,6.9,0,0,0 +3,0,1,6.119022,5.755076,0,6.9,0,0,0 +2,0,0,5.285232,0,0,3.4,0,0,0 +6,0,0,5.285232,0,0,3.4,0,0,0 +6,0,0,5.285232,0,0,3.4,0,0,0 +1,0,0,5.285232,0,0,3.4,0,0,0 +8,0,0,5.285232,0,0,3.4,0,0,0 +5,0,0,5.285232,0,0,3.4,0,0,0 +6,0,0,5.285232,0,0,10.57626,0,0,0 +5,0,0,5.285232,0,0,10.57626,0,0,0 +4,0,0,5.285232,0,0,10.57626,0,0,0 +24,0,0,5.285232,0,0,10.3,0,0,0 +12,0,0,5.285232,0,0,10.3,0,0,0 +9,0,0,5.285232,0,0,10.3,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +0,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +2,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +0,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +0,3.258096,0,6.620073,8.006368,0,10.3,0,1,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +6,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +8,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +5,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +9,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +3,3.258096,0,6.620073,8.006368,0,6.9,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,0,1,6.313548,6.160541,0,6.9,0,0,0 +0,0,1,6.313548,6.160541,0,6.9,0,0,0 +0,0,1,6.313548,6.160541,0,6.9,0,0,0 +11,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +0,4.564348,0,6.907755,6.959049,0,0,0,0,0 +4,4.564348,0,6.907755,6.959049,0,31,0,0,0 +1,4.564348,0,6.907755,6.959049,0,31,0,0,0 +3,4.564348,0,6.907755,6.959049,0,31,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,3.258096,0,6.067036,7.45333,0,6.9,0,0,0 +0,3.258096,0,6.067036,7.45333,0,6.9,0,0,0 +0,3.258096,0,6.067036,7.45333,0,6.9,0,0,0 +0,3.258096,0,6.067036,7.45333,0,13.8,0,0,0 +0,3.258096,0,6.067036,7.45333,0,13.8,0,0,0 +7,3.258096,0,6.067036,7.45333,0,13.8,0,0,0 +0,3.258096,0,6.067036,7.45333,0,3.4,0,0,0 +0,3.258096,0,6.067036,7.45333,0,3.4,0,0,0 +0,3.258096,0,6.067036,7.45333,0,10.57626,0,0,0 +0,3.258096,0,6.067036,7.45333,0,10.57626,0,0,0 +0,3.258096,0,6.067036,7.45333,0,10.57626,0,0,0 +0,3.258096,0,6.067036,7.45333,0,3.4,0,0,0 +0,3.258096,0,6.067036,7.45333,0,3.4,0,0,0 +3,3.258096,0,6.067036,7.45333,0,3.4,0,0,0 +1,3.258096,0,6.067036,7.45333,0,3.4,0,0,0 +0,3.258096,0,6.067036,7.45333,0,3.4,0,0,0 +0,3.258096,0,6.067036,7.45333,0,10.57626,0,0,0 +0,3.258096,0,6.067036,7.45333,0,10.57626,0,0,0 +0,3.258096,0,6.067036,7.45333,0,10.57626,0,0,0 +0,3.258096,0,6.067036,7.45333,0,10.57626,0,0,0 +0,3.258096,0,6.067036,7.45333,0,10.57626,0,0,0 +1,3.258096,0,6.067036,7.45333,0,10.57626,0,0,0 +6,3.258096,0,6.874819,8.006368,0,3.4,1,0,0 +3,3.258096,0,6.874819,8.006368,0,3.4,1,0,0 +6,3.258096,0,6.874819,8.006368,0,3.4,1,0,0 +0,3.258096,0,6.874819,8.006368,0,17.2,1,0,0 +0,3.258096,0,6.874819,8.006368,0,17.2,1,0,0 +4,3.258096,0,6.874819,8.006368,0,17.2,1,0,0 +0,3.258096,0,6.874819,8.006368,0,3.4,1,0,0 +1,3.258096,0,6.874819,8.006368,0,3.4,1,0,0 +3,3.258096,0,6.874819,8.006368,0,3.4,1,0,0 +1,3.258096,0,6.874819,8.006368,1,10.3,1,0,0 +0,3.258096,0,6.874819,8.006368,1,10.3,1,0,0 +7,3.258096,0,6.874819,8.006368,1,10.3,1,0,0 +7,0,0,6.243312,0,0,10.3,1,0,0 +8,0,0,6.243312,0,0,10.3,1,0,0 +8,0,0,6.243312,0,0,10.3,1,0,0 +4,0,0,6.243312,0,0,10.57626,0,0,0 +4,0,0,6.243312,0,0,10.57626,0,0,0 +8,0,0,6.243312,0,0,10.57626,0,0,0 +4,0,0,6.243312,0,0,13.8,0,0,0 +4,0,0,6.243312,0,0,13.8,0,0,0 +0,0,0,6.243312,0,0,13.8,0,0,0 +1,3.258096,0,6.841616,8.006368,1,20.7,1,0,0 +3,3.258096,0,6.841616,8.006368,1,20.7,1,0,0 +1,3.258096,0,6.841616,8.006368,1,20.7,1,0,0 +1,3.258096,0,6.841616,8.006368,1,24.1,1,0,0 +1,3.258096,0,6.841616,8.006368,1,24.1,1,0,0 +4,3.258096,0,6.841616,8.006368,1,24.1,1,0,0 +1,0,0,5.267652,0,0,3.4,0,0,0 +8,0,0,5.267652,0,0,3.4,0,0,0 +4,0,0,5.267652,0,0,3.4,0,0,0 +2,0,0,5.267652,0,0,6.9,0,0,0 +0,0,0,5.267652,0,0,6.9,0,0,0 +0,0,0,5.267652,0,0,6.9,0,0,0 +0,0,0,5.267652,0,.1442925,10.57626,0,0,0 +0,0,0,5.267652,0,.1442925,10.57626,0,0,0 +2,0,0,5.267652,0,.1442925,10.57626,0,0,0 +2,0,0,5.267652,0,.1442925,10.57626,0,0,0 +2,0,0,5.267652,0,.1442925,10.57626,0,0,0 +0,0,0,5.267652,0,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +1,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +1,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,1,0,0 +0,4.564348,0,6.907755,6.959049,1,17.2,1,0,0 +2,4.564348,0,6.907755,6.959049,1,17.2,1,0,0 +0,4.564348,0,6.907755,6.959049,1,17.2,1,0,0 +1,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,1,0,0 +2,4.564348,0,6.907755,6.959049,0,24.1,0,0,0 +2,0,0,6.717563,0,0,10.3,0,0,0 +2,0,0,6.717563,0,0,10.3,0,0,0 +5,0,0,6.717563,0,0,10.3,0,0,0 +2,0,0,6.717563,0,0,10.57626,0,0,0 +2,0,0,6.717563,0,0,10.57626,0,0,0 +3,0,0,6.717563,0,0,10.57626,0,0,0 +17,0,0,6.717563,0,0,6.9,0,0,0 +19,0,0,6.717563,0,0,6.9,0,0,0 +20,0,0,6.717563,0,0,6.9,0,0,0 +2,0,0,6.717563,0,0,10.57626,0,0,0 +3,0,0,6.717563,0,0,10.57626,0,0,0 +7,0,0,6.717563,0,0,10.57626,0,0,0 +4,0,0,6.717563,0,0,10.57626,0,0,0 +6,0,0,6.717563,0,0,10.57626,0,0,0 +3,0,0,6.717563,0,0,10.57626,0,0,0 +0,0,1,5.56268,5.061929,0,24.1,0,0,1 +2,0,1,5.56268,5.061929,0,24.1,0,0,1 +1,0,1,5.56268,5.061929,0,24.1,0,0,1 +0,4.564348,0,5.969474,6.020768,0,6.9,0,1,0 +0,4.564348,0,5.969474,6.020768,0,6.9,0,1,0 +2,4.564348,0,5.969474,6.020768,1,20.7,0,1,0 +0,4.564348,0,5.969474,6.020768,1,20.7,0,1,0 +0,4.564348,0,5.969474,6.020768,1,20.7,0,1,0 +0,4.564348,0,6.265776,6.31707,0,20.7,1,0,0 +5,4.564348,0,6.265776,6.31707,0,20.7,1,0,0 +0,4.564348,0,6.265776,6.31707,0,20.7,1,0,0 +6,3.258096,0,6.174827,7.561121,0,10.57626,0,0,0 +4,3.258096,0,6.174827,7.561121,0,10.57626,0,0,0 +8,3.258096,0,6.174827,7.561121,0,10.57626,0,0,0 +6,3.258096,0,6.174827,7.561121,0,10.57626,0,0,0 +11,3.258096,0,6.174827,7.561121,0,10.57626,0,0,0 +6,3.258096,0,6.174827,7.561121,0,10.57626,1,0,0 +9,3.258096,0,6.174827,7.561121,0,10.57626,1,0,0 +9,3.258096,0,6.174827,7.561121,0,10.57626,1,0,0 +3,3.258096,0,6.174827,7.561121,0,10.57626,1,0,0 +3,3.258096,0,6.174827,7.561121,0,10.57626,1,0,0 +1,3.258096,0,6.174827,7.561121,0,17.2,1,0,0 +0,3.258096,0,6.174827,7.561121,0,17.2,1,0,0 +1,3.258096,0,6.174827,7.561121,0,17.2,1,0,0 +3,3.258096,0,6.174827,7.561121,0,17.2,1,0,0 +0,3.258096,0,6.174827,7.561121,0,17.2,1,0,0 +3,3.258096,0,6.174827,7.561121,0,24.1,1,0,0 +2,3.258096,0,6.174827,7.561121,0,24.1,1,0,0 +3,3.258096,0,6.174827,7.561121,0,24.1,1,0,0 +4,3.258096,0,6.174827,7.561121,0,24.1,1,0,0 +1,3.258096,0,6.174827,7.561121,0,24.1,1,0,0 +0,3.258096,0,6.500689,7.886983,1,24.1,0,0,0 +2,3.258096,0,6.500689,7.886983,1,24.1,0,0,0 +2,3.258096,0,6.500689,7.886983,1,24.1,0,0,0 +1,3.258096,0,6.500689,7.886983,1,24.1,0,0,0 +2,3.258096,0,6.500689,7.886983,0,3.4,0,0,0 +0,3.258096,0,6.500689,7.886983,0,3.4,0,0,0 +0,3.258096,0,6.500689,7.886983,0,3.4,0,0,0 +0,3.258096,0,6.500689,7.886983,0,3.4,0,0,0 +0,3.258096,0,6.500689,7.886983,0,3.4,0,0,0 +2,3.258096,0,6.500689,7.886983,0,13.8,0,0,0 +0,3.258096,0,6.500689,7.886983,0,13.8,0,0,0 +1,3.258096,0,6.500689,7.886983,0,13.8,0,0,0 +1,3.258096,0,6.500689,7.886983,0,13.8,0,0,0 +2,3.258096,0,6.500689,7.886983,0,13.8,0,0,0 +0,3.258096,0,6.500689,7.886983,0,6.9,0,0,0 +0,3.258096,0,6.500689,7.886983,0,6.9,0,0,0 +0,3.258096,0,6.500689,7.886983,0,6.9,0,0,0 +0,3.258096,0,6.500689,7.886983,0,6.9,0,0,0 +0,3.258096,0,6.500689,7.886983,0,6.9,0,0,0 +5,0,0,6.163736,0,0,10.57626,0,0,0 +5,0,0,6.163736,0,0,10.57626,0,0,0 +3,0,0,6.163736,0,0,10.57626,0,0,0 +8,0,0,6.163736,0,0,10.57626,0,0,0 +8,0,0,6.163736,0,0,10.57626,0,0,0 +2,0,0,6.163736,0,0,10.57626,0,0,0 +2,0,0,6.163736,0,0,10.57626,0,0,0 +2,0,0,6.163736,0,0,10.57626,0,0,0 +2,0,0,6.163736,0,0,10.57626,0,0,0 +3,0,0,6.163736,0,0,10.57626,0,0,0 +2,0,0,6.163736,0,0,0,0,0,0 +2,0,0,6.163736,0,0,0,0,0,0 +2,0,0,6.163736,0,0,0,0,0,0 +1,0,0,6.163736,0,0,0,0,0,0 +3,0,0,6.163736,0,0,0,0,0,0 +8,0,0,6.163736,0,1,10.3,0,0,0 +5,0,0,6.163736,0,1,10.3,0,0,0 +4,0,0,6.163736,0,1,10.3,0,0,0 +2,0,0,6.163736,0,1,10.3,0,0,0 +2,0,0,6.163736,0,1,10.3,0,0,0 +2,0,0,6.690892,0,0,6.9,0,1,0 +0,0,0,6.690892,0,0,6.9,0,1,0 +0,0,0,6.690892,0,0,6.9,0,1,0 +2,0,0,6.690892,0,0,3.4,0,1,0 +0,0,0,6.690892,0,0,3.4,0,1,0 +1,0,0,6.690892,0,0,3.4,0,1,0 +1,0,0,6.690892,0,0,3.4,0,1,0 +2,0,0,6.690892,0,0,3.4,0,1,0 +2,0,0,6.690892,0,0,3.4,0,1,0 +3,0,0,6.690892,0,0,10.57626,0,1,0 +1,0,0,6.690892,0,0,10.57626,0,1,0 +1,0,0,6.690892,0,0,10.57626,0,1,0 +0,0,0,6.690892,0,0,10.57626,0,1,0 +0,0,0,6.690892,0,0,10.57626,0,1,0 +0,0,0,6.690892,0,0,10.57626,0,1,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +3,0,1,6.109248,6.160541,0,10.57626,0,0,0 +3,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +3,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +0,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +1,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,3.4,0,0,0 +2,0,1,6.109248,6.160541,0,17.2,0,0,0 +0,0,1,6.109248,6.160541,0,17.2,0,0,0 +1,0,1,6.109248,6.160541,0,17.2,0,0,0 +2,0,1,6.109248,6.160541,0,17.2,0,0,0 +2,0,1,6.109248,6.160541,0,17.2,0,0,0 +0,3.931826,0,6.907755,7.600903,.1442925,10.57626,1,0,0 +0,3.931826,0,6.907755,7.600903,.1442925,10.57626,1,0,0 +3,3.931826,0,6.907755,7.600903,.1442925,10.57626,1,0,0 +1,3.931826,0,6.907755,7.600903,0,0,1,0,0 +1,3.931826,0,6.907755,7.600903,0,0,1,0,0 +4,3.931826,0,6.907755,7.600903,0,0,1,0,0 +8,3.931826,0,6.907755,7.600903,0,13.8,0,1,0 +1,3.931826,0,6.907755,7.600903,0,13.8,0,1,0 +1,3.931826,0,6.907755,7.600903,0,13.8,0,1,0 +4,3.931826,0,6.907755,7.600903,.1442925,10.57626,0,0,0 +1,3.931826,0,6.907755,7.600903,.1442925,10.57626,0,0,0 +1,3.931826,0,6.907755,7.600903,.1442925,10.57626,0,0,0 +0,3.931826,0,6.907755,7.600903,0,0,1,0,0 +0,3.931826,0,6.907755,7.600903,0,0,1,0,0 +0,3.931826,0,6.907755,7.600903,0,0,1,0,0 +4,0,1,6.109248,6.160541,0,6.9,1,0,0 +8,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +0,0,1,6.109248,6.160541,0,6.9,1,0,0 +5,0,1,6.109248,6.160541,1,24.1,1,0,0 +0,0,1,6.109248,6.160541,1,24.1,1,0,0 +0,0,1,6.109248,6.160541,1,24.1,1,0,0 +0,0,1,6.109248,6.160541,1,24.1,1,0,0 +0,0,1,6.109248,6.160541,1,24.1,1,0,0 +1,0,1,6.109248,6.160541,0,24.1,1,0,0 +0,0,1,6.109248,6.160541,0,24.1,1,0,0 +0,0,1,6.109248,6.160541,0,24.1,1,0,0 +2,0,1,6.109248,6.160541,0,24.1,1,0,0 +0,0,1,6.109248,6.160541,0,24.1,1,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +4,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +4,0,1,5.703783,5.755076,0,10.3,1,0,0 +1,0,1,5.703783,5.755076,0,10.3,1,0,0 +3,0,1,5.703783,5.755076,0,10.3,1,0,0 +17,0,1,5.703783,5.755076,1,31,1,0,0 +17,0,1,5.703783,5.755076,1,31,1,0,0 +21,0,1,5.703783,5.755076,1,31,1,0,0 +15,0,0,4.094345,0,0,3.4,0,0,0 +2,0,0,4.094345,0,0,3.4,0,0,0 +1,0,0,4.094345,0,0,3.4,0,0,0 +3,0,0,4.094345,0,1,13.8,1,0,0 +3,0,0,4.094345,0,1,13.8,1,0,0 +6,0,0,4.094345,0,1,13.8,1,0,0 +6,0,0,4.094345,0,1,10.57626,1,0,0 +3,0,0,4.094345,0,1,10.57626,1,0,0 +8,0,0,4.094345,0,1,10.57626,1,0,0 +2,0,0,4.094345,0,0,3.4,0,0,0 +3,0,0,4.094345,0,0,3.4,0,0,0 +4,0,0,4.094345,0,0,3.4,0,0,0 +4,0,0,0,0,0,3.4,0,1,0 +4,0,0,0,0,0,3.4,0,1,0 +0,0,0,0,0,0,3.4,0,1,0 +2,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +3,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +2,0,0,0,0,0,6.9,0,0,0 +0,0,0,0,0,0,6.9,0,0,0 +1,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +16,0,0,0,0,1,10.3,0,1,0 +9,0,0,0,0,1,10.3,0,1,0 +10,0,0,0,0,1,10.3,0,1,0 +0,0,0,5.796544,0,0,3.4,1,0,0 +1,0,0,5.796544,0,0,3.4,1,0,0 +4,0,0,5.796544,0,0,3.4,1,0,0 +5,0,0,0,0,0,17.2,0,0,0 +4,0,0,0,0,0,17.2,0,0,0 +4,0,0,0,0,0,17.2,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,1,3.4,0,0,0 +0,0,0,0,0,1,3.4,0,0,0 +1,0,0,0,0,1,3.4,0,0,0 +4,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,13.8,1,0,0 +3,0,0,0,0,0,13.8,1,0,0 +4,0,0,0,0,0,13.8,1,0,0 +4,0,0,0,0,1,10.3,1,0,0 +0,0,0,0,0,1,10.3,1,0,0 +2,0,0,0,0,1,10.3,1,0,0 +2,0,0,0,0,0,10.57626,0,1,0 +1,0,0,0,0,0,10.57626,0,1,0 +2,0,0,0,0,0,10.57626,0,1,0 +0,0,0,0,0,1,10.57626,1,0,0 +4,0,0,0,0,1,10.57626,1,0,0 +3,0,0,0,0,1,10.57626,1,0,0 +0,0,0,0,0,1,6.9,1,0,0 +9,0,0,0,0,1,6.9,1,0,0 +8,0,0,0,0,1,6.9,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +6,0,0,0,0,0,10.3,1,0,0 +3,0,0,0,0,0,10.3,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +2,0,0,0,0,0,10.57626,1,0,0 +0,0,1,5.703783,5.755076,0,10.57626,0,0,0 +0,0,1,5.703783,5.755076,0,10.57626,0,0,0 +4,0,1,5.703783,5.755076,1,6.9,1,0,0 +5,0,1,5.703783,5.755076,1,6.9,1,0,0 +3,0,1,5.703783,5.755076,1,6.9,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,1,10.57626,1,0,0 +0,0,0,0,0,1,10.57626,1,0,0 +0,0,0,0,0,1,10.57626,1,0,0 +0,0,0,0,0,1,10.57626,1,0,0 +0,0,0,0,0,1,10.57626,1,0,0 +0,0,0,0,0,1,10.57626,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +0,0,0,0,0,0,3.4,1,0,0 +2,0,0,0,0,0,3.4,1,0,0 +4,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,10.3,1,0,0 +5,0,0,0,0,0,10.3,1,0,0 +4,0,0,0,0,0,10.3,1,0,0 +3,0,0,0,0,0,10.3,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +0,0,0,0,0,0,0,1,0,0 +1,0,1,5.010635,5.061929,0,31,1,0,0 +16,0,1,5.010635,5.061929,0,31,1,0,0 +16,0,1,5.010635,5.061929,0,31,1,0,0 +17,0,1,5.010635,5.061929,0,31,1,0,0 +11,0,1,5.010635,5.061929,0,31,1,0,0 +3,0,0,5.33001,0,0,20.7,1,0,0 +2,0,0,5.33001,0,0,20.7,1,0,0 +4,0,0,5.33001,0,0,20.7,1,0,0 +2,0,0,5.33001,0,0,20.7,1,0,0 +3,0,0,5.33001,0,0,20.7,1,0,0 +0,0,0,5.33001,0,0,10.57626,1,0,0 +1,0,0,5.33001,0,0,10.57626,1,0,0 +8,0,0,5.33001,0,0,10.57626,1,0,0 +0,0,0,5.33001,0,0,10.57626,1,0,0 +0,0,0,5.33001,0,0,10.57626,1,0,0 +0,0,0,5.33001,0,0,10.57626,1,0,0 +3,0,0,5.33001,0,0,10.57626,1,0,0 +7,0,0,5.33001,0,0,10.57626,1,0,0 +5,0,0,5.33001,0,0,10.57626,1,0,0 +4,0,0,5.33001,0,0,10.57626,1,0,0 +0,0,0,5.33001,0,0,10.57626,1,0,0 +5,0,0,5.33001,0,0,10.57626,1,0,0 +0,0,0,5.33001,0,0,10.57626,1,0,0 +2,0,0,5.33001,0,0,10.57626,1,0,0 +1,0,0,5.33001,0,0,10.57626,1,0,0 +1,0,0,5.33001,0,0,3.4,1,0,0 +1,0,0,5.33001,0,0,3.4,1,0,0 +0,0,0,5.33001,0,0,3.4,1,0,0 +2,0,0,5.33001,0,0,3.4,1,0,0 +2,0,0,5.33001,0,0,3.4,1,0,0 +1,0,0,5.33001,0,0,10.57626,1,0,0 +0,0,0,5.33001,0,0,10.57626,1,0,0 +0,0,0,5.33001,0,0,10.57626,1,0,0 +0,0,0,5.33001,0,0,10.57626,1,0,0 +1,0,0,5.33001,0,0,10.57626,1,0,0 +0,0,0,5.33001,0,0,10.57626,1,0,0 +0,0,0,5.33001,0,0,10.57626,1,0,0 +0,0,0,5.33001,0,0,10.57626,1,0,0 +3,0,0,5.33001,0,0,10.57626,1,0,0 +1,0,0,5.33001,0,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +4,0,1,6.109248,6.160541,0,10.57626,1,0,0 +0,0,1,6.109248,6.160541,0,10.57626,1,0,0 +1,0,1,6.109248,6.160541,0,3.4,1,0,0 +3,0,1,6.109248,6.160541,0,3.4,1,0,0 +4,0,1,6.109248,6.160541,0,3.4,1,0,0 +6,0,1,6.109248,6.160541,0,3.4,1,0,0 +5,0,1,6.109248,6.160541,0,3.4,1,0,0 +2,0,1,6.109248,6.160541,0,3.4,1,0,0 +0,0,0,4.97231,0,0,6.9,0,0,0 +3,0,0,4.97231,0,0,6.9,0,0,0 +5,0,0,4.97231,0,0,6.9,0,0,0 +0,0,0,4.97231,0,0,24.1,0,0,0 +0,0,0,4.97231,0,0,24.1,0,0,0 +4,0,0,4.97231,0,0,24.1,0,0,0 +2,0,0,4.97231,0,0,10.57626,0,0,0 +4,0,0,4.97231,0,0,10.57626,0,0,0 +3,0,0,4.97231,0,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,0,0,0,0,0 +0,0,1,6.109248,6.160541,1,10.3,0,0,0 +0,0,1,6.109248,6.160541,1,10.3,0,0,0 +0,0,1,6.109248,6.160541,1,10.3,0,0,0 +0,0,1,6.109248,6.160541,1,10.3,0,0,0 +0,0,1,6.109248,6.160541,1,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,1,10.3,1,0,0 +0,0,1,6.109248,6.160541,1,10.3,1,0,0 +0,0,1,6.109248,6.160541,1,10.3,1,0,0 +1,0,1,6.109248,6.160541,1,10.3,1,0,0 +4,0,1,6.109248,6.160541,1,10.3,1,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +2,0,0,5.796544,0,.1442925,10.57626,1,0,0 +2,0,0,5.796544,0,.1442925,10.57626,1,0,0 +0,0,0,5.796544,0,.1442925,10.57626,1,0,0 +2,0,0,0,0,.1442925,10.57626,0,0,0 +1,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +1,0,0,0,0,0,10.57626,1,0,0 +0,0,0,0,0,0,10.57626,1,0,0 +1,4.564348,0,6.907755,6.959049,1,17.2,0,0,0 +2,4.564348,0,6.907755,6.959049,1,17.2,0,0,0 +1,4.564348,0,6.907755,6.959049,1,17.2,0,0,0 +4,0,0,3.178054,0,0,10.57626,0,0,0 +3,0,0,3.178054,0,0,10.57626,0,0,0 +8,0,0,3.178054,0,0,10.57626,0,0,0 +11,0,0,0,0,0,10.57626,0,0,0 +7,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +4,0,0,0,0,0,3.4,0,0,0 +5,0,0,0,0,0,3.4,0,0,0 +4,0,0,0,0,0,3.4,0,0,0 +6,0,0,0,0,0,3.4,0,0,0 +0,0,0,0,0,0,3.4,0,0,0 +0,3.258096,0,0,8.006368,0,6.9,0,0,0 +0,3.258096,0,0,8.006368,0,6.9,0,0,0 +0,3.258096,0,0,8.006368,0,6.9,0,0,0 +0,3.258096,0,0,8.006368,0,6.9,0,0,0 +0,3.258096,0,0,8.006368,0,6.9,0,0,0 +0,3.258096,0,0,8.006368,0,0,0,0,0 +0,3.258096,0,0,8.006368,0,0,0,0,0 +0,3.258096,0,0,8.006368,0,0,0,0,0 +0,3.258096,0,0,8.006368,0,0,0,0,0 +0,3.258096,0,0,8.006368,0,0,0,0,0 +0,3.258096,0,0,8.006368,0,10.57626,0,0,0 +0,3.258096,0,0,8.006368,0,10.57626,0,0,0 +2,3.258096,0,0,8.006368,0,10.57626,0,0,0 +0,3.258096,0,0,8.006368,0,10.57626,0,0,0 +0,3.258096,0,0,8.006368,0,10.57626,0,0,0 +0,0,0,5.029653,0,0,3.4,0,0,0 +0,0,0,5.029653,0,0,3.4,0,0,0 +0,0,0,5.029653,0,0,3.4,0,0,0 +2,3.258096,0,6.476973,7.863267,0,10.57626,0,0,0 +0,3.258096,0,6.476973,7.863267,0,10.57626,0,0,0 +0,3.258096,0,6.476973,7.863267,0,10.57626,0,0,0 +0,3.258096,0,6.476973,7.863267,0,10.57626,0,0,0 +1,3.258096,0,6.476973,7.863267,0,10.57626,0,0,0 +4,0,1,6.109248,6.160541,0,10.57626,0,0,0 +7,0,1,6.109248,6.160541,0,10.57626,0,0,0 +13,0,1,6.109248,6.160541,0,10.57626,0,0,0 +7,0,1,6.109248,6.160541,0,10.57626,0,0,0 +9,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,3.258096,0,6.055495,7.44179,1,10.57626,0,0,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,0,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,0,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,0,0 +0,3.258096,0,6.055495,7.44179,1,10.57626,0,0,0 +0,0,0,5.126342,0,0,10.57626,0,0,0 +3,0,0,5.126342,0,0,10.57626,0,0,0 +0,0,0,5.126342,0,0,10.57626,0,0,0 +5,0,0,0,0,0,10.3,0,0,0 +8,0,0,0,0,0,10.3,0,0,0 +12,0,0,0,0,0,10.3,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,0,4.668708,0,0,10.57626,0,0,0 +0,0,0,4.668708,0,0,10.57626,0,0,0 +0,0,0,4.668708,0,0,10.57626,0,0,0 +0,0,0,5.145166,0,0,3.4,0,0,0 +0,0,0,5.145166,0,0,3.4,0,0,0 +1,0,0,5.145166,0,0,3.4,0,0,0 +1,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +5,0,0,4.094345,0,1,27.6,0,0,0 +4,0,0,4.094345,0,1,27.6,0,0,0 +0,0,0,4.094345,0,1,27.6,0,0,0 +0,0,0,4.094345,0,0,10.57626,0,0,0 +1,0,0,4.094345,0,0,10.57626,0,0,0 +1,0,0,4.094345,0,0,10.57626,0,0,0 +3,0,0,4.094345,0,0,10.57626,0,0,0 +2,0,0,4.094345,0,0,10.57626,0,0,0 +4,0,0,4.094345,0,0,10.57626,0,0,0 +3,0,0,4.458988,0,0,20.7,0,0,0 +3,0,0,4.458988,0,0,20.7,0,0,0 +5,0,0,4.458988,0,0,20.7,0,0,0 +4,0,0,4.458988,0,0,10.3,0,0,0 +4,0,0,4.458988,0,0,10.3,0,0,0 +2,0,0,4.458988,0,0,10.3,0,0,0 +3,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +0,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +0,3.258096,0,6.620073,8.006368,0,13.8,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,0,0,0,0 +6,3.258096,0,6.620073,8.006368,0,0,0,0,0 +5,3.258096,0,6.620073,8.006368,0,24.1,0,0,0 +3,3.258096,0,6.620073,8.006368,0,24.1,0,0,0 +2,3.258096,0,6.620073,8.006368,0,24.1,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.3,0,0,0 +0,3.258096,0,6.784457,7.932075,0,10.57626,0,0,0 +0,3.258096,0,6.784457,7.932075,0,10.57626,0,0,0 +1,3.258096,0,6.784457,7.932075,0,10.57626,0,0,0 +3,3.258096,0,6.784457,7.932075,1,10.3,0,0,0 +1,3.258096,0,6.784457,7.932075,1,10.3,0,0,0 +2,3.258096,0,6.784457,7.932075,1,10.3,0,0,0 +0,3.258096,0,6.784457,7.932075,0,3.4,1,0,0 +1,3.258096,0,6.784457,7.932075,0,3.4,1,0,0 +0,3.258096,0,6.784457,7.932075,0,3.4,1,0,0 +0,3.258096,0,6.784457,7.932075,0,10.3,1,0,0 +0,3.258096,0,6.784457,7.932075,0,10.3,1,0,0 +1,3.258096,0,6.784457,7.932075,0,10.3,1,0,0 +1,3.258096,0,6.784457,7.932075,0,10.57626,0,0,0 +2,3.258096,0,6.784457,7.932075,0,10.57626,0,0,0 +2,3.258096,0,6.784457,7.932075,0,10.57626,0,0,0 +0,3.258096,0,6.784457,7.932075,0,10.57626,0,0,0 +1,3.258096,0,6.784457,7.932075,0,10.57626,0,0,0 +6,3.258096,0,6.784457,7.932075,0,10.57626,0,0,0 +0,0,1,5.010635,6.160541,0,0,0,0,0 +0,0,1,5.010635,6.160541,0,0,0,0,0 +0,0,1,5.010635,6.160541,0,0,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,1,10.3,0,0,0 +0,0,1,6.109248,6.160541,1,10.3,0,0,0 +0,0,1,6.109248,6.160541,1,10.3,0,0,0 +0,0,1,6.109248,6.160541,1,10.3,0,0,0 +4,0,1,6.109248,6.160541,1,10.3,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +1,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +0,0,1,0,6.160541,0,10.57626,0,0,0 +3,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +2,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +2,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +1,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +2,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +4,0,1,0,5.061929,0,6.9,0,0,0 +0,0,1,0,5.061929,0,6.9,0,0,0 +0,0,1,0,5.061929,0,6.9,0,0,0 +0,0,1,0,5.061929,0,6.9,0,0,0 +1,0,1,0,5.061929,0,6.9,0,0,0 +0,0,0,6.050488,0,.1442925,10.57626,0,0,0 +0,0,0,6.050488,0,.1442925,10.57626,0,0,0 +0,0,0,6.050488,0,.1442925,10.57626,0,0,0 +0,0,0,6.050488,0,.1442925,10.57626,0,0,0 +0,0,0,6.050488,0,.1442925,10.57626,0,0,0 +0,0,0,6.050488,0,.1442925,20.7,0,0,0 +0,0,0,6.050488,0,.1442925,20.7,0,0,0 +0,0,0,6.050488,0,.1442925,20.7,0,0,0 +4,0,0,6.050488,0,.1442925,20.7,0,0,0 +9,0,0,6.050488,0,.1442925,20.7,0,0,0 +0,0,1,5.010635,6.160541,.1442925,10.57626,0,0,0 +0,0,1,5.010635,6.160541,.1442925,10.57626,0,0,0 +0,0,1,5.010635,6.160541,.1442925,10.57626,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +1,0,0,0,0,0,13.8,0,0,0 +13,0,0,0,0,0,13.8,0,0,0 +0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +2,0,0,0,0,0,0,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +9,0,0,0,0,0,10.57626,0,0,0 +6,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +4,0,0,0,0,0,10.57626,0,0,0 +4,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +5,0,0,0,0,0,10.57626,0,0,0 +0,3.258096,0,6.579251,7.965546,0,10.57626,0,0,0 +1,3.258096,0,6.579251,7.965546,0,10.57626,0,0,0 +0,3.258096,0,6.579251,7.965546,0,10.57626,0,0,0 +0,4.564348,0,5.160491,5.467394,0,6.9,0,0,0 +0,4.564348,0,5.160491,5.467394,0,6.9,0,0,0 +0,4.564348,0,5.160491,5.467394,0,6.9,0,0,0 +0,4.564348,0,5.160491,5.467394,0,6.9,0,0,0 +0,4.564348,0,5.160491,5.467394,0,6.9,0,0,0 +8,0,0,4.094345,0,.1442925,10.57626,0,0,0 +2,0,0,4.094345,0,.1442925,10.57626,0,0,0 +2,0,0,4.094345,0,.1442925,10.57626,0,0,0 +2,0,0,4.094345,0,.1442925,10.57626,0,0,0 +0,4.564348,0,5.572838,6.959049,0,10.57626,0,0,0 +0,4.564348,0,5.572838,6.959049,0,10.57626,0,0,0 +0,4.564348,0,5.572838,6.959049,0,10.57626,0,0,0 +1,0,0,0,0,.1442925,10.57626,0,0,0 +4,0,0,0,0,.1442925,10.57626,0,0,0 +2,0,0,0,0,.1442925,10.57626,0,0,0 +6,0,0,0,0,1,13.8,0,0,0 +4,0,0,0,0,1,13.8,0,0,0 +5,0,0,0,0,1,13.8,0,0,0 +0,4.564348,0,6.015181,5.734873,.1442925,10.57626,0,0,0 +0,4.564348,0,6.015181,5.734873,.1442925,10.57626,0,0,0 +0,4.564348,0,6.015181,5.734873,.1442925,10.57626,0,0,0 +0,4.564348,0,6.015181,5.734873,.1442925,10.57626,0,0,0 +2,0,1,5.010635,6.160541,0,10.57626,0,0,0 +0,0,1,5.010635,6.160541,0,10.57626,0,0,0 +0,0,1,5.010635,6.160541,0,10.57626,0,0,0 +3,0,0,0,0,0,10.57626,0,0,0 +1,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,4.564348,0,6.709304,6.760598,.1442925,10.57626,0,0,0 +0,4.564348,0,6.709304,6.760598,.1442925,10.57626,0,0,0 +0,4.564348,0,6.709304,6.760598,.1442925,10.57626,0,0,0 +7,0,0,0,0,.1442925,10.57626,0,0,0 +3,0,0,0,0,.1442925,10.57626,0,0,0 +5,0,0,0,0,.1442925,10.57626,0,0,0 +4,0,0,0,0,.1442925,10.57626,0,0,0 +4,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +7,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +0,4.564348,0,6.907755,6.959049,0,13.8,0,0,0 +12,0,1,6.109248,6.160541,0,10.57626,0,0,0 +3,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +3,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +1,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +6,0,0,4.094345,0,.1442925,10.57626,0,0,0 +3,0,0,4.094345,0,.1442925,10.57626,0,0,0 +2,0,0,4.094345,0,.1442925,10.57626,0,0,0 +6,0,0,4.094345,0,.1442925,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +8,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +2,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +5,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +1,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +1,3.258096,0,0,5.991465,0,10.57626,0,0,0 +5,3.258096,0,0,5.991465,0,10.57626,0,0,0 +2,3.258096,0,0,5.991465,0,10.57626,0,0,0 +2,0,0,6.050488,0,.1442925,10.57626,0,0,0 +2,0,0,6.050488,0,.1442925,10.57626,0,0,0 +4,0,0,6.050488,0,.1442925,10.57626,0,0,0 +2,0,0,6.050488,0,.1442925,10.57626,0,0,0 +5,0,0,6.050488,0,.1442925,10.57626,0,0,0 +0,0,0,6.050488,0,.1442925,10.57626,0,0,0 +3,0,0,6.050488,0,.1442925,10.57626,0,0,0 +1,0,0,6.050488,0,.1442925,10.57626,0,0,0 +14,0,1,5.857819,5.755076,.1442925,10.57626,0,0,0 +4,0,1,5.857819,5.755076,.1442925,10.57626,0,0,0 +1,0,1,5.857819,5.755076,.1442925,10.57626,0,0,0 +0,3.258096,0,0,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,0,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,0,8.006368,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +1,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,0,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,0,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,0,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,0,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,0,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,0,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,0,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,0,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,0,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,0,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,0,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +3,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +1,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +4,0,1,6.109248,6.160541,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +4,0,1,6.109248,6.160541,0,10.57626,0,0,0 +20,4.564348,0,6.49224,5.781393,0,10.57626,0,0,0 +21,4.564348,0,6.49224,5.781393,0,10.57626,0,0,0 +28,4.564348,0,6.49224,5.781393,0,10.57626,0,0,0 +1,0,0,5.267652,0,1,10.57626,0,0,0 +9,0,0,5.267652,0,1,10.57626,0,0,0 +9,0,0,5.267652,0,1,10.57626,0,0,0 +1,0,1,6.109248,6.160541,1,10.57626,0,0,0 +1,0,1,6.109248,6.160541,1,10.57626,0,0,0 +0,0,1,6.109248,6.160541,1,10.57626,0,0,0 +0,0,1,6.109248,6.160541,1,20.7,0,0,0 +6,0,1,6.109248,6.160541,1,20.7,0,0,0 +5,0,1,6.109248,6.160541,1,20.7,0,0,0 +0,3.258096,0,5.269815,6.656109,0,0,0,0,0 +0,3.258096,0,5.269815,6.656109,0,0,0,0,0 +0,3.258096,0,5.269815,6.656109,0,0,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +0,0,0,0,0,0,10.57626,0,0,0 +3,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +2,0,0,4.668708,0,0,10.57626,0,0,0 +0,0,0,4.668708,0,0,10.57626,0,0,0 +1,0,0,4.668708,0,0,10.57626,0,0,0 +1,0,0,4.668708,0,.1442925,10.57626,0,0,0 +1,0,0,4.668708,0,.1442925,10.57626,0,0,0 +3,0,0,4.668708,0,.1442925,10.57626,0,0,0 +1,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +0,0,0,0,0,0,0,0,0,0 +2,0,0,5.796544,0,0,10.57626,0,0,0 +2,0,0,5.796544,0,0,10.57626,0,0,0 +3,0,0,5.796544,0,0,10.57626,0,0,0 +0,0,1,5.703783,5.755076,1,27.6,0,0,0 +0,0,1,5.703783,5.755076,1,27.6,0,0,0 +0,0,1,5.703783,5.755076,1,27.6,0,0,0 +0,0,1,5.703783,5.755076,.1442925,10.57626,0,0,0 +0,0,1,5.703783,5.755076,.1442925,10.57626,0,0,0 +0,0,1,5.703783,5.755076,.1442925,10.57626,0,0,0 +1,0,1,5.703783,5.755076,0,10.57626,0,0,0 +0,0,1,5.703783,5.755076,0,10.57626,0,0,0 +1,0,1,5.703783,5.755076,0,10.57626,0,0,0 +1,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +0,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +2,3.931826,0,6.907755,7.600903,0,10.57626,0,0,0 +0,0,0,5.126342,0,0,10.57626,0,0,0 +1,0,0,5.126342,0,0,10.57626,0,0,0 +2,0,0,5.126342,0,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,10.57626,0,0,0 +1,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,0,1,6.109248,6.160541,0,10.57626,0,0,0 +0,4.564348,0,6.015181,5.734873,.1442925,10.57626,0,0,0 +0,4.564348,0,6.015181,5.734873,.1442925,10.57626,0,0,0 +0,4.564348,0,6.015181,5.734873,.1442925,10.57626,0,0,0 +13,0,0,0,0,0,10.57626,0,0,0 +11,0,0,0,0,0,10.57626,0,0,0 +12,0,0,0,0,0,10.57626,0,0,0 +10,4.564348,0,6.50354,6.569703,.1442925,10.57626,0,0,0 +10,4.564348,0,6.50354,6.569703,.1442925,10.57626,0,0,0 +6,4.564348,0,6.50354,6.569703,.1442925,10.57626,0,0,0 +1,0,0,6.050488,0,.1442925,10.57626,0,0,0 +0,0,0,6.050488,0,.1442925,10.57626,0,0,0 +2,0,0,6.050488,0,.1442925,10.57626,0,0,0 +11,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +7,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +4,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +5,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +2,0,0,0,0,0,10.57626,0,0,0 +2,0,1,6.109248,6.160541,0,17.2,0,0,0 +0,0,1,6.109248,6.160541,0,17.2,0,0,0 +0,0,1,6.109248,6.160541,0,17.2,0,0,0 +8,0,1,6.109248,6.160541,1,10.57626,0,0,0 +5,0,1,6.109248,6.160541,1,10.57626,0,0,0 +3,0,1,6.109248,6.160541,1,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +2,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,3.931826,0,6.07507,6.560323,0,10.57626,0,0,0 +2,3.931826,0,6.07507,6.560323,0,10.57626,0,0,0 +0,3.931826,0,6.07507,6.560323,0,10.57626,0,0,0 +3,0,0,6.148468,0,0,10.57626,0,0,0 +6,0,0,6.148468,0,0,10.57626,0,0,0 +5,0,0,6.148468,0,0,10.57626,0,0,0 +8,3.258096,0,6.579251,7.965546,0,10.57626,0,0,0 +7,3.258096,0,6.579251,7.965546,0,10.57626,0,0,0 +0,3.258096,0,6.579251,7.965546,0,10.57626,0,0,0 +0,3.258096,0,0,8.006368,0,0,0,0,0 +3,3.258096,0,0,8.006368,0,0,0,0,0 +2,0,0,5.482637,0,0,10.57626,0,0,0 +1,0,0,5.482637,0,0,10.57626,0,0,0 +0,0,0,5.482637,0,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +2,4.564348,0,6.907755,6.959049,0,3.4,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +1,4.564348,0,6.907755,6.959049,0,10.57626,0,0,0 +4,3.258096,0,0,8.006368,0,6.9,0,0,0 +1,3.258096,0,0,8.006368,0,6.9,0,0,0 +0,3.258096,0,0,8.006368,0,6.9,0,0,0 +0,0,1,6.313548,6.160541,0,10.57626,0,0,0 +0,0,1,6.313548,6.160541,0,10.57626,0,0,0 +1,0,1,6.313548,6.160541,0,10.57626,0,0,0 +5,0,1,6.313548,6.160541,0,24.1,0,0,0 +0,0,1,6.313548,6.160541,0,24.1,0,0,0 +6,0,1,6.313548,6.160541,0,24.1,0,0,0 +8,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +4,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,3.258096,0,6.620073,8.006368,0,10.57626,0,0,0 +2,0,1,5.703783,6.160541,0,10.57626,0,0,0 +0,0,1,5.703783,6.160541,0,10.57626,0,0,0 +0,0,1,5.703783,6.160541,0,10.57626,0,0,0 +12,0,0,0,0,0,17.2,0,0,0 +9,0,0,0,0,0,17.2,0,0,0 +1,0,0,0,0,0,17.2,0,0,0 +20,4.564348,0,6.49224,5.781393,0,10.57626,0,0,0 +15,4.564348,0,6.49224,5.781393,0,10.57626,0,0,0 +12,4.564348,0,6.49224,5.781393,0,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +1,4.564348,0,6.232605,6.2643,.1442925,10.57626,0,0,0 +0,4.564348,0,6.232605,6.2643,.1442925,10.57626,0,0,0 +0,4.564348,0,6.232605,6.2643,.1442925,10.57626,0,0,0 +25,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +16,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +3,0,0,0,0,.1442925,10.57626,0,0,0 +8,0,0,0,0,.1442925,10.57626,0,0,0 +0,4.564348,0,4.393214,4.444507,.1442925,10.57626,0,0,0 +0,4.564348,0,4.393214,4.444507,.1442925,10.57626,0,0,0 +0,4.564348,0,0,6.679335,.1442925,10.57626,0,0,0 +0,4.564348,0,0,6.679335,.1442925,10.57626,0,0,0 +6,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +2,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +9,0,0,0,0,.1442925,10.57626,0,0,0 +3,0,0,0,0,.1442925,10.57626,0,0,0 +2,0,0,0,0,.1442925,10.57626,0,0,0 +1,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,0,0,.1442925,10.57626,0,0,0 +2,0,1,5.703783,5.755076,.1442925,10.57626,0,0,0 +1,0,1,5.703783,5.755076,.1442925,10.57626,0,0,0 +14,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +14,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +14,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +1,0,1,5.010635,6.160541,.1442925,10.57626,0,0,0 +1,0,1,5.010635,6.160541,.1442925,10.57626,0,0,0 +0,0,1,5.010635,6.160541,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +1,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +5,0,1,5.703783,6.160541,.1442925,10.57626,0,0,0 +0,0,1,5.703783,6.160541,.1442925,10.57626,0,0,0 +9,0,0,4.094345,0,.1442925,10.57626,0,0,0 +5,0,0,4.094345,0,.1442925,10.57626,0,0,0 +15,0,0,0,0,.1442925,10.57626,0,0,0 +6,0,0,0,0,.1442925,10.57626,0,0,0 +0,3.258096,0,0,8.006368,.1442925,10.57626,0,0,0 +0,3.258096,0,0,8.006368,.1442925,10.57626,0,0,0 +16,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +0,4.564348,0,6.907755,6.959049,.1442925,10.57626,0,0,0 +3,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +9,0,1,5.857819,5.755076,.1442925,10.57626,0,0,0 +0,0,1,5.857819,5.755076,.1442925,10.57626,0,0,0 +2,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +12,0,0,5.33001,0,.1442925,10.57626,0,0,0 +2,0,0,5.33001,0,.1442925,10.57626,0,0,0 +0,0,1,5.010635,6.160541,.1442925,10.57626,0,0,0 +0,0,1,5.010635,6.160541,.1442925,10.57626,0,0,0 +8,0,0,6.264845,0,.1442925,10.57626,0,0,0 +10,0,0,6.264845,0,.1442925,10.57626,0,0,0 +7,0,0,5.259992,0,.1442925,10.57626,0,0,0 +7,0,0,6.050488,0,.1442925,10.57626,0,0,0 +1,0,0,6.050488,0,.1442925,10.57626,0,0,0 +1,0,0,5.029653,0,.1442925,10.57626,0,0,0 +21,3.258096,0,5.269815,6.656109,.1442925,10.57626,0,0,0 +0,4.564348,0,3.883624,3.934917,.1442925,10.57626,0,0,0 +3,0,0,4.668708,0,.1442925,10.57626,0,0,0 +5,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +8,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 +8,0,1,5.703783,5.755076,.1442925,10.57626,0,0,0 +11,0,0,0,0,.1442925,10.57626,0,0,0 +0,0,0,5.126342,0,.1442925,10.57626,0,0,0 +6,0,0,0,0,.1442925,10.57626,0,0,0 +20,0,0,0,0,.1442925,10.57626,0,0,0 +2,3.258096,0,6.784457,7.932075,.1442925,10.57626,0,0,0 +1,3.258096,0,6.784457,7.932075,.1442925,10.57626,0,0,0 +3,3.931826,0,0,7.37149,.1442925,10.57626,0,0,0 +0,0,1,6.109248,6.160541,.1442925,10.57626,0,0,0 +5,3.258096,0,6.476973,7.863267,.1442925,10.57626,0,0,0 +0,3.258096,0,6.507277,7.893572,.1442925,10.57626,0,0,0 +1,4.564348,0,3.883624,3.934917,.1442925,10.57626,0,0,0 +0,3.258096,0,6.262826,7.649121,.1442925,10.57626,0,0,0 +2,0,0,5.377498,0,.1442925,10.57626,0,0,0 +0,0,0,5.377498,0,.1442925,10.57626,0,0,0 +8,3.258096,0,6.874819,8.006368,.1442925,10.57626,0,0,0 +8,3.258096,0,5.156178,6.542472,.1442925,10.57626,0,0,0 +6,3.258096,0,6.620073,8.006368,.1442925,10.57626,0,0,0 diff --git a/statsmodels/datasets/randhie/src/randdesc.txt b/statsmodels/datasets/randhie/src/randdesc.txt new file mode 100644 index 0000000..d312859 --- /dev/null +++ b/statsmodels/datasets/randhie/src/randdesc.txt @@ -0,0 +1,49 @@ + storage display value +variable name type format label variable label +-------------------------------------------------------------------- +plan float %9.0g hie plan number +site float %9.0g site +coins float %9.0g coinsurance -- medical +tookphys float %9.0g took baseline physical +year float %9.0g study year +zper float %9.0g person id, leading digit is sit +black float %9.0g black +income float %9.0g income based on annual income r +xage float %9.0g age that year +female float %9.0g female +educdec float %9.0g education of decision maker +time float %9.0g time eligible during the year +outpdol float %9.0g outpatient exp. excl. ment and +drugdol float %9.0g drugs purchased, outpatient +suppdol float %9.0g supplies purchased, outpatient +mentdol float %9.0g psychotherapy exp., outpatient +inpdol float %9.0g inpatient exp., facilities & md +meddol float %9.0g medical exp excl outpatient men +totadm float %9.0g number of hosp. admissions +inpmis float %9.0g missing any inpatient charges +mentvis float %9.0g number psychotherapy visits +mdvis float %9.0g number face-to-fact md visits +notmdvis float %9.0g number face-to-face, not-md vis +num float %9.0g family size +mhi float %9.0g mental health index -- baselin +disea float %9.0g count of chronic diseases -- ba +physlm float %9.0g physical limitations -- baselin +ghindx float %9.0g general health index -- baselin +mdeoff float %9.0g maximum expenditure offer +pioff float %9.0g participation incentive +child float %9.0g child +fchild float %9.0g female child +lfam float %9.0g log of family size +lpi float %9.0g log participation incentive +idp float %9.0g individual deductible plan +logc float %9.0g log(coinsurance+1) +fmde float %9.0g function of mdeoff +hlthg float %9.0g good health +hlthf float %9.0g fair health +hlthp float %9.0g poor health +xghindx float %9.0g ghi with imputation +linc float %9.0g +lnum float %9.0g +lnmeddol float %9.0g +binexp float %9.0g + diff --git a/statsmodels/datasets/randhie/src/randhie.csv b/statsmodels/datasets/randhie/src/randhie.csv new file mode 100644 index 0000000..698d767 --- /dev/null +++ b/statsmodels/datasets/randhie/src/randhie.csv @@ -0,0 +1,20191 @@ +plan,site,coins,tookphys,year,zper,black,income,xage,female,educdec,time,outpdol,drugdol,suppdol,mentdol,inpdol,meddol,totadm,inpmis,mentvis,mdvis,notmdvis,num,mhi,disea,physlm,ghindx,mdeoff,pioff,child,fchild,lfam,lpi,idp,logc,fmde,hlthg,hlthf,hlthp,xghindx,linc,lnum,lnmeddol,binexp +3,1,100,0,1,125024,1,13748.76,42.87748,0,12,1,0,8.451119,0,0,0,8.451119,0,0,0,0,0,4,95,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,65.2078,9.528776,1.386294,2.134299,1 +3,1,100,0,2,125024,1,13748.76,43.87748,0,12,1,48.78706,13.28841,0,0,0,62.07547,0,0,0,2,0,4,95,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,65.2078,9.528776,1.386294,4.128351,1 +3,1,100,0,3,125024,1,13748.76,44.87748,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,95,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,65.2078,9.528776,1.386294,,0 +3,1,100,0,4,125024,1,13748.76,45.87748,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,95,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,65.2078,9.528776,1.386294,,0 +3,1,100,0,5,125024,1,13748.76,46.87748,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,95,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,65.2078,9.528776,1.386294,,0 +3,1,100,0,1,125025,1,13748.76,16.59138,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,93.8,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,76.34753,9.528776,1.386294,,0 +3,1,100,0,2,125025,1,13748.76,17.59138,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,93.8,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,76.34753,9.528776,1.386294,,0 +3,1,100,0,3,125025,1,13748.76,18.59138,0,12,1,7.371007,0,0,0,0,7.371007,0,0,0,1,0,4,93.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,76.34753,9.528776,1.386294,1.997554,1 +3,1,100,0,4,125025,1,13748.76,19.59138,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,93.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,76.34753,9.528776,1.386294,,0 +3,1,100,0,5,125025,1,13748.76,20.59138,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,93.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,76.34753,9.528776,1.386294,,0 +3,1,100,0,1,125026,1,13748.76,14.49966,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,98.7,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,71.01083,9.528776,1.386294,,0 +3,1,100,0,2,125026,1,13748.76,15.49966,1,12,1,13.47709,14.28571,0,0,0,27.7628,0,0,0,1,0,4,98.7,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,71.01083,9.528776,1.386294,3.323697,1 +3,1,100,0,3,125026,1,13748.76,16.49966,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,98.7,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,71.01083,9.528776,1.386294,,0 +3,1,100,0,4,125026,1,13748.76,17.49966,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,98.7,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,71.01083,9.528776,1.386294,,0 +3,1,100,0,5,125026,1,13748.76,18.49966,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,98.7,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,71.01083,9.528776,1.386294,,0 +3,1,100,0,1,125027,1,13748.76,43.14305,1,12,1,60.6596,42.93286,0,0,0,103.5925,0,0,0,6,0,4,96.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.84741,9.528776,1.386294,4.640465,1 +3,1,100,0,2,125027,1,13748.76,44.14305,1,12,1,242.1186,11.07817,37.38544,0,0,290.5822,0,0,0,2,1,4,96.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.84741,9.528776,1.386294,5.671886,1 +3,1,100,0,3,125027,1,13748.76,45.14305,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,96.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.84741,9.528776,1.386294,,0 +3,1,100,0,4,125027,1,13748.76,46.14305,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,96.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.84741,9.528776,1.386294,,0 +3,1,100,0,5,125027,1,13748.76,47.14305,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,96.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.84741,9.528776,1.386294,,0 +1,1,0,1,1,125057,1,5107.692,13.54962,1,12,1,12.79001,0,0,0,382.9268,395.7168,1,0,0,1,0,3,74.36826,13.73189,0,,450,450,1,1,1.098612,6.109248,1,0,0,1,0,0,80.28564,8.538699,1.098612,5.980699,1 +1,1,0,1,2,125057,1,5107.692,14.54962,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,450,450,1,1,1.098612,6.109248,1,0,0,1,0,0,80.28564,8.538699,1.098612,,0 +1,1,0,1,3,125057,1,5107.692,15.54962,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,450,450,1,1,1.098612,6.109248,1,0,0,1,0,0,80.28564,8.538699,1.098612,,0 +1,1,0,1,4,125057,1,5107.692,16.54962,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,450,450,1,1,1.098612,6.109248,1,0,0,1,0,0,80.28564,8.538699,1.098612,,0 +1,1,0,1,5,125057,1,5107.692,17.54962,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,450,450,1,1,1.098612,6.109248,1,0,0,1,0,0,80.28564,8.538699,1.098612,,0 +1,1,0,1,1,125058,1,5107.692,15.28268,1,12,1,18.4414,0,0,0,0,18.4414,0,0,0,1,0,3,61.1,13,1,,450,450,1,1,1.098612,6.109248,1,0,0,1,0,0,63.74599,8.538699,1.098612,2.914598,1 +1,1,0,1,2,125058,1,5107.692,16.28268,1,12,1,0,2.39521,0,0,0,2.39521,0,0,0,0,0,3,61.1,13,1,,450,450,1,1,1.098612,6.109248,1,0,0,1,0,0,63.74599,8.538699,1.098612,.8734707,1 +1,1,0,1,3,125058,1,5107.692,17.28268,1,12,1,4.955401,17.09613,0,0,0,22.05154,0,0,0,1,0,3,61.1,13,1,,450,450,1,1,1.098612,6.109248,1,0,0,1,0,0,63.74599,8.538699,1.098612,3.093382,1 +1,1,0,1,4,125058,1,5107.692,18.28268,1,12,1,29.8302,25.7687,0,0,0,55.5989,0,0,0,2,0,3,61.1,13,1,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,63.74599,8.538699,1.098612,4.018163,1 +1,1,0,1,5,125058,1,5107.692,19.28268,1,12,1,122.0025,11.75852,0,0,0,133.761,0,0,0,4,0,3,61.1,13,1,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,63.74599,8.538699,1.098612,4.896055,1 +1,1,0,1,1,125059,1,5107.692,38.83094,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.1,17.4,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,68.12782,8.538699,1.098612,,0 +1,1,0,1,2,125059,1,5107.692,39.83094,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.1,17.4,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,68.12782,8.538699,1.098612,,0 +1,1,0,1,3,125059,1,5107.692,40.83094,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.1,17.4,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,68.12782,8.538699,1.098612,,0 +1,1,0,1,4,125059,1,5107.692,41.83094,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.1,17.4,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,68.12782,8.538699,1.098612,,0 +1,1,0,1,5,125059,1,5107.692,42.83094,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.1,17.4,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,68.12782,8.538699,1.098612,,0 +1,1,0,0,1,125075,1,1,24.60233,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,80,4.3,0,,150,0,0,0,0,0,1,0,0,0,0,0,71.88312,.6931472,0,,0 +1,1,0,0,2,125075,1,1,25.60233,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,80,4.3,0,,150,0,0,0,0,0,1,0,0,0,0,0,71.88312,.6931472,0,,0 +1,1,0,0,3,125075,1,1,26.60233,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,80,4.3,0,,150,0,0,0,0,0,1,0,0,0,0,0,71.88312,.6931472,0,,0 +11,1,0,0,1,125126,1,5899.918,15.74538,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,61.1,13,0,,0,406,1,1,1.386294,6.006353,0,0,0,1,0,0,59.67566,8.682863,1.386294,,0 +11,1,0,0,2,125126,1,5899.918,16.74538,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,61.1,13,0,,0,406,1,1,1.386294,6.006353,0,0,0,1,0,0,59.67566,8.682863,1.386294,,0 +11,1,0,0,3,125126,1,5899.918,17.74538,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,61.1,13,0,,0,406,1,1,1.386294,6.006353,0,0,0,1,0,0,59.67566,8.682863,1.386294,,0 +11,1,0,1,1,125127,1,5899.918,60.48734,1,9,1,5.889281,0,0,0,0,5.889281,0,0,0,1,0,4,71.6,4.3,0,,0,406,0,0,1.386294,6.006353,0,0,0,1,0,0,63.0108,8.682863,1.386294,1.773134,1 +11,1,0,1,2,125127,1,5899.918,61.48734,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,71.6,4.3,0,,0,406,0,0,1.386294,6.006353,0,0,0,1,0,0,63.0108,8.682863,1.386294,,0 +11,1,0,1,3,125127,1,5899.918,62.48734,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,71.6,4.3,0,,0,406,0,0,1.386294,6.006353,0,0,0,1,0,0,63.0108,8.682863,1.386294,,0 +11,1,0,0,1,125128,1,5899.918,14.59001,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,63.5,13,0,,0,406,1,1,1.386294,6.006353,0,0,0,1,0,0,59.67566,8.682863,1.386294,,0 +11,1,0,0,2,125128,1,5899.918,15.59001,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,63.5,13,0,,0,406,1,1,1.386294,6.006353,0,0,0,1,0,0,59.67566,8.682863,1.386294,,0 +11,1,0,0,3,125128,1,5899.918,16.59001,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,63.5,13,0,,0,406,1,1,1.386294,6.006353,0,0,0,1,0,0,59.67566,8.682863,1.386294,,0 +11,1,0,1,1,125129,1,5899.918,59.27721,0,4,1,66.19553,67.13781,0,0,0,133.3333,0,0,0,1,0,4,71.6,13,0,,0,406,0,0,1.386294,6.006353,0,0,0,1,0,0,61.37119,8.682863,1.386294,4.892852,1 +11,1,0,1,2,125129,1,5899.918,60.27721,0,4,1,0,61.45552,0,0,0,61.45552,0,0,0,0,0,4,71.6,13,0,,0,406,0,0,1.386294,6.006353,0,0,0,1,0,0,61.37119,8.682863,1.386294,4.118314,1 +11,1,0,1,3,125129,1,5899.918,61.27721,0,4,1,695.5725,62.11302,5.405406,0,0,763.0909,0,0,0,7,32,4,71.6,13,0,,0,406,0,0,1.386294,6.006353,0,0,0,1,0,0,61.37119,8.682863,1.386294,6.637377,1 +11,1,0,1,1,125133,1,3596.154,14.22313,0,12,1,11.99041,7.284173,0,0,0,19.27458,0,0,0,1,0,3,92.6,4.3,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,75.73199,8.187899,1.098612,2.958787,1 +11,1,0,1,2,125133,1,3596.154,15.22313,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,92.6,4.3,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,75.73199,8.187899,1.098612,,0 +11,1,0,1,3,125133,1,3596.154,16.22313,0,12,1,28.42893,0,0,0,0,28.42893,0,0,0,2,0,3,92.6,4.3,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,75.73199,8.187899,1.098612,3.347407,1 +11,1,0,1,1,125134,1,3596.154,45.42916,0,7,1,455.9352,2.817746,0,0,0,458.753,0,0,0,8,0,3,83.2,0,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,67.10523,8.187899,1.098612,6.128512,1 +11,1,0,1,2,125134,1,3596.154,46.42916,0,7,1,94.38663,0,40.40526,0,0,134.7919,0,0,0,1,1,3,83.2,0,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,67.10523,8.187899,1.098612,4.903732,1 +11,1,0,1,3,125134,1,3596.154,47.42916,0,7,1,37.90524,0,0,0,1239.302,1277.207,1,0,0,2,0,3,83.2,0,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,67.10523,8.187899,1.098612,7.152431,1 +11,1,0,1,1,125135,1,3596.154,37.11157,1,12,1,5.995204,4.586331,0,0,0,10.58153,0,0,0,1,0,3,68.4,8.7,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,74.57648,8.187899,1.098612,2.35911,1 +11,1,0,1,2,125135,1,3596.154,38.11157,1,12,1,15.33406,14.0471,47.82585,0,0,77.20701,0,0,0,1,1,3,68.4,8.7,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,74.57648,8.187899,1.098612,4.34649,1 +11,1,0,1,3,125135,1,3596.154,39.11157,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,68.4,8.7,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,74.57648,8.187899,1.098612,,0 +2,1,100,0,1,125152,1,11468.98,55.32923,1,11,1,38.28033,11.23675,32.61484,0,0,82.13192,0,0,0,4,0,2,82.1,17.4,0,,900,900,0,0,.6931472,6.802395,1,0,0,1,0,0,60.89297,9.347488,.6931472,4.408327,1 +2,1,100,0,2,125152,1,11468.98,56.32923,1,11,1,120.4852,17.69811,0,0,0,138.1833,0,0,0,5,0,2,82.1,17.4,0,,900,900,0,0,.6931472,6.802395,1,0,0,1,0,0,60.89297,9.347488,.6931472,4.928581,1 +2,1,100,0,3,125152,1,11468.98,57.32923,1,11,1,126.5356,42.39312,52.37838,0,944.2113,1165.518,1,0,0,14,0,2,82.1,17.4,0,,900,900,0,0,.6931472,6.802395,1,0,0,1,0,0,60.89297,9.347488,.6931472,7.060921,1 +2,1,100,0,1,125153,1,11468.98,59.01711,0,7,1,20.61249,5.624264,0,0,0,26.23675,0,0,0,3,0,2,87.4,13,0,,900,900,0,0,.6931472,6.802395,1,0,0,1,0,0,59.25336,9.347488,.6931472,3.267161,1 +2,1,100,0,2,125153,1,11468.98,60.01711,0,7,1,18.86792,0,0,0,0,18.86792,0,0,0,3,0,2,87.4,13,0,,900,900,0,0,.6931472,6.802395,1,0,0,1,0,0,59.25336,9.347488,.6931472,2.937463,1 +2,1,100,0,3,125153,1,11468.98,61.01711,0,7,1,80.09828,3.759214,45.18919,0,0,129.0467,0,0,0,5,0,2,87.4,13,0,,900,900,0,0,.6931472,6.802395,1,0,0,1,0,0,59.25336,9.347488,.6931472,4.860174,1 +7,1,25,0,1,125159,0,7586.229,10.00411,1,12,1,4.711425,2.915194,0,0,0,7.626619,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,78.48192,8.934221,1.609438,2.031645,1 +7,1,25,0,2,125159,0,7586.229,11.00411,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,78.48192,8.934221,1.609438,,0 +7,1,25,0,3,125159,0,7586.229,12.00411,1,12,1,32.92383,28.55037,0,0,0,61.4742,0,0,0,5,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,78.48192,8.934221,1.609438,4.118618,1 +7,1,25,0,4,125159,0,7586.229,13.00411,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,78.48192,8.934221,1.609438,,0 +7,1,25,0,5,125159,0,7586.229,14.00411,1,12,1,10.42101,0,0,0,0,10.42101,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,78.48192,8.934221,1.609438,2.343824,1 +7,1,25,0,1,125160,0,7586.229,32.61328,0,13,1,17.66784,0,0,191.4016,0,17.66784,0,0,16,0,0,5,60,0,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,77.5937,8.934221,1.609438,2.871746,1 +7,1,25,0,2,125160,0,7586.229,33.61328,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,60,0,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,77.5937,8.934221,1.609438,,0 +7,1,25,0,3,125160,0,7586.229,34.61328,0,13,1,9.336609,7.174447,0,0,0,16.51106,0,0,0,2,0,5,60,0,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,77.5937,8.934221,1.609438,2.80403,1 +7,1,25,0,4,125160,0,7586.229,35.61328,0,13,1,5.469462,4.010939,0,0,0,9.480401,0,0,0,1,0,5,60,0,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,77.5937,8.934221,1.609438,2.249227,1 +7,1,25,0,5,125160,0,7586.229,36.61328,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,60,0,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,77.5937,8.934221,1.609438,,0 +7,1,25,0,1,125161,0,7586.229,32.50377,1,12,1,15.90106,51.88457,0,459.364,0,67.78563,0,0,30,2,0,5,40,26.1,1,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,79.16502,8.934221,1.609438,4.21635,1 +7,1,25,0,2,125161,0,7586.229,33.50377,1,12,1,70.08086,50.88949,0,0,5875.984,5996.954,2,0,0,1,11,5,40,26.1,1,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,79.16502,8.934221,1.609438,8.699007,1 +7,1,25,0,3,125161,0,7586.229,34.50377,1,12,1,52.08845,105.9165,0,157.2482,0,158.0049,0,0,9,6,0,5,40,26.1,1,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,79.16502,8.934221,1.609438,5.062626,1 +7,1,25,0,4,125161,0,7586.229,35.50377,1,12,1,27.34731,3.696445,0,18.23154,0,31.04376,0,0,1,2,0,5,40,26.1,1,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,79.16502,8.934221,1.609438,3.435398,1 +7,1,25,0,5,125161,0,7586.229,36.50377,1,12,1,10.42101,32.97207,0,264.6936,0,43.39308,0,0,12,1,0,5,40,26.1,1,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,79.16502,8.934221,1.609438,3.7703,1 +7,1,25,0,1,125162,0,7586.229,3.720739,0,12,1,35.33569,16.93168,0,29.44641,0,52.26737,0,0,2,5,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,80.76491,8.934221,1.609438,3.956372,1 +7,1,25,0,2,125162,0,7586.229,4.720739,0,12,1,16.71159,1.832884,0,0,0,18.54447,0,0,0,3,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,80.76491,8.934221,1.609438,2.920172,1 +7,1,25,0,3,125162,0,7586.229,5.720739,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,80.76491,8.934221,1.609438,,0 +7,1,25,0,4,125162,0,7586.229,6.720739,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,80.76491,8.934221,1.609438,,0 +7,1,25,0,5,125162,0,7586.229,7.720739,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,80.76491,8.934221,1.609438,,0 +7,1,25,0,1,125163,0,7586.229,8.309377,0,12,1,22.37927,3.533569,0,0,0,25.91284,0,0,0,4,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,78.9959,8.934221,1.609438,3.254739,1 +7,1,25,0,2,125163,0,7586.229,9.309377,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,78.9959,8.934221,1.609438,,0 +7,1,25,0,3,125163,0,7586.229,10.30938,0,12,1,22.60442,3.847666,0,0,0,26.45209,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,78.9959,8.934221,1.609438,3.275335,1 +7,1,25,0,4,125163,0,7586.229,11.30938,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,78.9959,8.934221,1.609438,,0 +7,1,25,0,5,125163,0,7586.229,12.30938,0,12,1,32.51355,0,0,0,0,32.51355,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,78.9959,8.934221,1.609438,3.481657,1 +6,1,25,0,1,125164,0,7854.839,61.42642,0,13,1,15.90106,14.25206,62.77385,0,0,92.92697,0,0,0,1,1,3,85.3,30.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,77.34652,8.969012,1.098612,4.531814,1 +6,1,25,0,2,125164,0,7854.839,62.42642,0,13,1,39.3531,1.859838,0,0,0,41.21294,0,0,0,1,1,3,85.3,30.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,77.34652,8.969012,1.098612,3.718752,1 +6,1,25,0,3,125164,0,7854.839,63.42642,0,13,1,9.82801,0,55.45946,0,0,65.28747,0,0,0,0,1,3,85.3,30.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,77.34652,8.969012,1.098612,4.1788,1 +6,1,25,0,1,125165,0,7854.839,55.06366,1,12,1,279.7409,33.63369,62.77385,0,1107.167,1483.316,1,0,0,15,7,3,74.7,17.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,66.01054,8.969012,1.098612,7.302035,1 +6,1,25,0,2,125165,0,7854.839,56.06366,1,12,1,226.1456,.7708895,33.23989,0,1411.617,1671.774,1,0,0,6,4,3,74.7,17.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,66.01054,8.969012,1.098612,7.42164,1 +6,1,25,0,3,125165,0,7854.839,57.06366,1,12,1,83.63636,0,48.79607,0,439.1253,571.5577,1,0,0,2,1,3,74.7,17.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,66.01054,8.969012,1.098612,6.348365,1 +6,1,25,0,1,125166,0,7854.839,19.02259,1,12,1,36.51355,2.408716,0,0,0,38.92226,0,0,0,4,0,3,82.1,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.8187,8.969012,1.098612,3.661566,1 +6,1,25,0,2,125166,0,7854.839,20.02259,1,12,1,72.50674,20.31806,0,0,0,92.8248,0,0,0,4,0,3,82.1,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.8187,8.969012,1.098612,4.530714,1 +6,1,25,0,3,125166,0,7854.839,21.02259,1,12,1,17.19902,23.32678,0,0,0,40.5258,0,0,0,3,0,3,82.1,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.8187,8.969012,1.098612,3.701939,1 +11,1,0,1,1,125172,0,12934.86,45.82067,1,12,1,152.2782,71.61271,33.20744,0,0,257.0983,0,0,0,21,0,2,71.6,13,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,57.73302,9.467759,.6931472,5.549459,1 +11,1,0,1,2,125172,0,12934.86,46.82067,1,12,1,115.0055,87.29463,0,0,0,202.3001,0,0,0,15,0,2,71.6,13,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,57.73302,9.467759,.6931472,5.309752,1 +11,1,0,1,3,125172,0,12934.86,47.82067,1,12,1,236.409,152.015,41.93018,0,1868.364,2298.718,1,0,0,20,1,2,71.6,13,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,57.73302,9.467759,.6931472,7.740107,1 +11,1,0,1,4,125172,0,12934.86,48.82067,1,12,1,165.053,176.3024,0,0,0,341.3555,0,0,0,20,0,2,71.6,13,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,57.73302,9.467759,.6931472,5.832924,1 +11,1,0,1,5,125172,0,12934.86,49.82067,1,12,1,128.2268,156.8768,0,0,0,285.1037,0,0,0,17,0,2,71.6,13,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,57.73302,9.467759,.6931472,5.652853,1 +11,1,0,1,1,125173,0,12934.86,52.62149,0,11,1,41.96643,14.02878,12.88969,0,0,68.8849,0,0,0,7,0,2,76.8,17.4,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,62.14933,9.467759,.6931472,4.232437,1 +11,1,0,1,2,125173,0,12934.86,53.62149,0,11,1,66.81271,15.78861,42.35487,0,0,124.9562,0,0,0,8,0,2,76.8,17.4,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,62.14933,9.467759,.6931472,4.827963,1 +11,1,0,1,3,125173,0,12934.86,54.62149,0,11,1,66.33417,14.48379,42.69825,0,618.02,741.5361,1,0,0,6,1,2,76.8,17.4,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,62.14933,9.467759,.6931472,6.608724,1 +11,1,0,1,4,125173,0,12934.86,55.62149,0,11,1,95.43568,14.94698,0,0,36.88336,147.266,0,0,0,15,0,2,76.8,17.4,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,62.14933,9.467759,.6931472,4.99224,1 +11,1,0,1,5,125173,0,12934.86,56.62149,0,11,1,74.90479,18.64156,50.36818,0,0,143.9145,0,0,0,10,1,2,76.8,17.4,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,62.14933,9.467759,.6931472,4.96922,1 +8,1,50,1,1,125181,0,14684.86,21.68652,1,14,1,289.1187,17.17026,28.82494,0,0,335.1139,0,0,0,6,1,3,62.1,0,0,,799,799,0,0,1.098612,6.683361,0,3.931826,7.376508,1,0,0,73.27021,9.594641,1.098612,5.814471,1 +8,1,50,1,2,125181,0,14684.86,22.68652,1,14,1,100.2191,27.17963,0,0,0,127.3987,0,0,0,3,0,3,62.1,0,0,,799,799,0,0,1.098612,6.683361,0,3.931826,7.376508,1,0,0,73.27021,9.594641,1.098612,4.847322,1 +8,1,50,1,3,125181,0,14684.86,23.68652,1,14,1,113.7157,15.65087,17.601,0,0,146.9676,0,0,0,7,1,3,62.1,0,0,,799,799,0,0,1.098612,6.683361,0,3.931826,7.376508,1,0,0,73.27021,9.594641,1.098612,4.990212,1 +8,1,50,1,1,125182,0,14684.86,48.81862,1,11,1,17.98561,12.40408,36.8705,0,0,67.26019,0,0,0,1,1,3,87.4,34.8,0,,799,799,0,0,1.098612,6.683361,0,3.931826,7.376508,1,0,0,68.81352,9.594641,1.098612,4.208569,1 +8,1,50,1,2,125182,0,14684.86,49.81862,1,11,1,15.33406,3.192771,0,0,0,18.52683,0,0,0,1,0,3,87.4,34.8,0,,799,799,0,0,1.098612,6.683361,0,3.931826,7.376508,1,0,0,68.81352,9.594641,1.098612,2.91922,1 +8,1,50,1,3,125182,0,14684.86,50.81862,1,11,1,9.975062,0,33.35661,0,0,43.33167,0,0,0,0,1,3,87.4,34.8,0,,799,799,0,0,1.098612,6.683361,0,3.931826,7.376508,1,0,0,68.81352,9.594641,1.098612,3.768884,1 +8,1,50,1,1,125183,0,14684.86,47.6961,0,9,1,5.995204,0,0,0,0,5.995204,0,0,0,1,0,3,87.4,13,0,,799,799,0,0,1.098612,6.683361,0,3.931826,7.376508,0,1,0,64.34435,9.594641,1.098612,1.79096,1 +8,1,50,1,2,125183,0,14684.86,48.6961,0,9,1,21.90581,15.32311,26.90033,0,0,64.12924,0,0,0,1,2,3,87.4,13,0,,799,799,0,0,1.098612,6.683361,0,3.931826,7.376508,0,1,0,64.34435,9.594641,1.098612,4.160901,1 +8,1,50,1,3,125183,0,14684.86,49.6961,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,87.4,13,0,,799,799,0,0,1.098612,6.683361,0,3.931826,7.376508,0,1,0,64.34435,9.594641,1.098612,,0 +3,1,100,0,1,125184,0,12770.47,15.7755,0,12,1,2.944641,0,0,0,0,2.944641,0,0,0,1,0,6,88.4,0,0,,1000,1000,1,0,1.791759,6.907755,1,0,0,1,0,0,73.87741,9.454969,1.791759,1.079987,1 +3,1,100,0,2,125184,0,12770.47,16.7755,0,12,1,33.42318,4.366577,0,0,0,37.78976,0,0,0,4,0,6,88.4,0,0,,1000,1000,1,0,1.791759,6.907755,1,0,0,1,0,0,73.87741,9.454969,1.791759,3.632038,1 +3,1,100,0,3,125184,0,12770.47,17.7755,0,12,1,105.0369,0,0,0,0,105.0369,0,0,0,12,0,6,88.4,0,0,,1000,1000,1,0,1.791759,6.907755,1,0,0,1,0,0,73.87741,9.454969,1.791759,4.654311,1 +3,1,100,0,1,125185,0,12770.47,43.87132,0,12,1,34.74676,20.81861,25.84806,0,0,81.41343,0,0,0,3,1,6,58.9,17.4,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,0,1,0,56.85956,9.454969,1.791759,4.39954,1 +3,1,100,0,2,125185,0,12770.47,44.87132,0,12,1,22.64151,18.92183,42.81401,0,0,84.37736,0,0,0,2,1,6,58.9,17.4,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,0,1,0,56.85956,9.454969,1.791759,4.435299,1 +3,1,100,0,3,125185,0,12770.47,45.87132,0,12,1,91.40049,6.388206,46.90909,0,0,144.6978,0,0,0,2,4,6,58.9,17.4,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,0,1,0,56.85956,9.454969,1.791759,4.974648,1 +3,1,100,0,1,125186,0,12770.47,11.95072,1,12,1,2.944641,0,0,0,0,2.944641,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,1,0,0,1,0,0,78.63347,9.454969,1.791759,1.079987,1 +3,1,100,0,2,125186,0,12770.47,12.95072,1,12,1,40.43127,0,11.10512,0,0,51.53639,0,0,0,3,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,1,0,0,1,0,0,78.63347,9.454969,1.791759,3.942288,1 +3,1,100,0,3,125186,0,12770.47,13.95072,1,12,1,12.77641,4.078624,0,0,0,16.85504,0,0,0,2,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,1,0,0,1,0,0,78.63347,9.454969,1.791759,2.82465,1 +3,1,100,0,1,125187,0,12770.47,14.44216,0,12,1,12.95642,8.36278,0,0,0,21.3192,0,0,0,2,0,6,77.9,8.7,0,,1000,1000,1,0,1.791759,6.907755,1,0,0,1,0,0,73.87741,9.454969,1.791759,3.059608,1 +3,1,100,0,2,125187,0,12770.47,15.44216,0,12,1,11.32076,4.851752,0,0,0,16.17251,0,0,0,2,0,6,77.9,8.7,0,,1000,1000,1,0,1.791759,6.907755,1,0,0,1,0,0,73.87741,9.454969,1.791759,2.783313,1 +3,1,100,0,3,125187,0,12770.47,16.44216,0,12,1,6.879607,6.388206,0,0,0,13.26781,0,0,0,1,0,6,77.9,8.7,0,,1000,1000,1,0,1.791759,6.907755,1,0,0,1,0,0,73.87741,9.454969,1.791759,2.585341,1 +3,1,100,0,1,125188,0,12770.47,43.46064,1,12,1,27.38516,10.01178,0,0,0,37.39694,0,0,0,3,0,6,71.6,13,1,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,71.8888,9.454969,1.791759,3.621589,1 +3,1,100,0,2,125188,0,12770.47,44.46064,1,12,1,24.25876,17.00809,58.59299,0,0,99.85984,0,0,0,1,1,6,71.6,13,1,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,71.8888,9.454969,1.791759,4.603767,1 +3,1,100,0,3,125188,0,12770.47,45.46064,1,12,1,113.7592,0,0,0,785.9607,899.7199,1,0,0,4,0,6,71.6,13,1,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,71.8888,9.454969,1.791759,6.802083,1 +3,1,100,0,1,125189,0,12770.47,17.13895,0,12,1,159.5995,8.863369,0,0,0,168.4629,0,0,0,20,0,6,71.6,21.7,0,,1000,1000,1,0,1.791759,6.907755,1,0,0,1,0,0,73.87741,9.454969,1.791759,5.126716,1 +3,1,100,0,2,125189,0,12770.47,18.13895,0,12,1,81.9407,142.3989,44.86253,0,0,269.2021,0,0,0,15,1,6,71.6,21.7,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,73.87741,9.454969,1.791759,5.595463,1 +3,1,100,0,3,125189,0,12770.47,19.13895,0,12,1,124.8157,139.9853,37.27273,0,0,302.0737,0,0,0,11,1,6,71.6,21.7,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,73.87741,9.454969,1.791759,5.710671,1 +11,1,0,0,1,125214,0,6866.625,54.21492,1,10,1,588.0447,447.4853,0,0,1195.518,2231.048,1,0,0,69,0,2,76.3,13.73189,1,,0,598,0,0,.6931472,6.393591,0,0,0,0,1,0,50.56934,8.834574,.6931472,7.710227,1 +11,1,0,0,2,125214,0,6866.625,55.21492,1,10,1,496.6146,343.035,25.33693,0,576.097,1441.084,1,0,0,58,1,2,76.3,13.73189,1,,0,598,0,0,.6931472,6.393591,0,0,0,0,1,0,50.56934,8.834574,.6931472,7.27315,1 +11,1,0,0,3,125214,0,6866.625,56.21492,1,10,1,799.8133,335.2776,28.2457,0,41.27764,1204.614,0,0,0,63,1,2,76.3,13.73189,1,,0,598,0,0,.6931472,6.393591,0,0,0,0,1,0,50.56934,8.834574,.6931472,7.093915,1 +11,1,0,0,1,125215,0,6866.625,49.56879,0,9,1,17.66784,0,0,0,0,17.66784,0,0,0,2,0,2,87.5,13.73189,1,,0,598,0,0,.6931472,6.393591,0,0,0,0,0,0,70.33569,8.834574,.6931472,2.871746,1 +11,1,0,0,2,125215,0,6866.625,50.56879,0,9,1,74.93262,9.347709,28.57143,0,0,112.8518,0,0,0,3,1,2,87.5,13.73189,1,,0,598,0,0,.6931472,6.393591,0,0,0,0,0,0,70.33569,8.834574,.6931472,4.726075,1 +11,1,0,0,3,125215,0,6866.625,51.56879,0,9,1,18.18182,8.255528,23.11057,0,0,49.54791,0,0,0,2,1,2,87.5,13.73189,1,,0,598,0,0,.6931472,6.393591,0,0,0,0,0,0,70.33569,8.834574,.6931472,3.90294,1 +11,1,0,1,1,125216,0,9106.079,6.171116,0,12,1,80.01189,26.79952,0,0,286.8055,393.6169,1,0,0,11,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,0,0,0,84.24345,9.116807,1.386294,5.975378,1 +11,1,0,1,2,125216,0,9106.079,7.171116,0,12,1,198.6935,16.08601,0,0,0,214.7795,0,0,0,9,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,0,0,0,84.24345,9.116807,1.386294,5.369612,1 +11,1,0,1,3,125216,0,9106.079,8.171116,0,12,1,34.68781,16.16948,0,0,0,50.85728,0,0,0,5,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,0,0,0,84.24345,9.116807,1.386294,3.929023,1 +11,1,0,1,4,125216,0,9106.079,9.171116,0,12,1,23.86416,7.755851,0,0,0,31.62001,0,0,0,3,0,3,74.36826,13.73189,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,84.24345,9.116807,1.098612,3.45379,1 +11,1,0,1,5,125216,0,9106.079,10.17112,0,12,1,153.8704,35.07783,0,0,0,188.9483,0,0,0,8,0,3,74.36826,13.73189,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,84.24345,9.116807,1.098612,5.241473,1 +11,1,0,1,1,125217,0,9106.079,10.39288,0,12,1,36.28793,4.46163,0,0,0,40.74955,0,0,0,6,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,74.06646,9.116807,1.386294,3.707445,1 +11,1,0,1,2,125217,0,9106.079,11.39288,0,12,1,18.50844,5.960806,0,0,0,24.46924,0,0,0,3,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,74.06646,9.116807,1.386294,3.197417,1 +11,1,0,1,3,125217,0,9106.079,12.39288,0,12,1,23.78593,6.665015,0,0,0,30.45094,0,0,0,4,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,74.06646,9.116807,1.386294,3.416117,1 +11,1,0,1,4,125217,0,9106.079,13.39288,0,12,1,15.14456,8.926113,0,0,0,24.07067,0,0,0,3,0,3,74.36826,13.73189,0,,0,0,1,0,1.098612,0,0,0,0,1,0,0,74.06646,9.116807,1.098612,3.180994,1 +11,1,0,1,5,125217,0,9106.079,14.39288,0,12,1,23.55911,1.262095,0,0,0,24.8212,0,0,0,2,0,3,74.36826,13.73189,0,,0,0,1,0,1.098612,0,0,0,0,1,0,0,74.06646,9.116807,1.098612,3.211698,1 +11,1,0,1,1,125218,0,9106.079,44.80219,0,10,1,197.204,6.097561,0,0,0,203.3016,0,0,0,6,0,4,80,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,69.65557,9.116807,1.386294,5.314691,1 +11,1,0,1,2,125218,0,9106.079,45.80219,0,10,1,166.0316,21.09418,0,0,7141.557,7328.683,2,0,0,10,0,4,80,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,69.65557,9.116807,1.386294,8.899551,1 +11,1,0,1,3,125218,0,9106.079,46.80219,0,10,1,444.9951,90.65907,29.58375,0,0,565.2379,0,0,0,12,31,4,80,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,69.65557,9.116807,1.386294,6.337246,1 +11,1,0,1,1,125219,0,9106.079,33.42916,1,12,1,249.8513,130.3093,3.777514,0,0,383.9381,0,0,0,35,0,4,55.8,13,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.52583,9.116807,1.386294,5.950481,1 +11,1,0,1,2,125219,0,9106.079,34.42916,1,12,1,381.0561,177.006,4.899292,0,1644.339,2207.3,1,0,0,9,15,4,55.8,13,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.52583,9.116807,1.386294,7.699525,1 +11,1,0,1,3,125219,0,9106.079,35.42916,1,12,1,98.11695,149.3062,170.9613,59.46482,0,418.3846,0,0,4,6,0,4,55.8,13,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.52583,9.116807,1.386294,6.036401,1 +11,1,0,1,4,125219,0,9106.079,36.42916,1,12,1,54.61221,145.5484,0,80.31207,1999.358,2199.518,1,0,5,6,0,3,55.8,13,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,78.52583,9.116807,1.098612,7.695993,1 +11,1,0,1,5,125219,0,9106.079,37.42916,1,12,1,110.223,271.9941,257.0467,117.7955,0,639.2638,0,0,8,14,0,3,55.8,13,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,78.52583,9.116807,1.098612,6.460317,1 +2,1,100,0,1,125220,0,12213.6,35.87132,0,17,1,33.57314,10.8813,0,0,0,44.45444,0,0,0,5,0,5,77.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,72.73786,9.410387,1.609438,3.794465,1 +2,1,100,0,2,125220,0,12213.6,36.87132,0,17,1,23.54874,7.338445,0,0,0,30.88719,0,0,0,4,0,5,77.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,72.73786,9.410387,1.609438,3.430341,1 +2,1,100,0,3,125220,0,12213.6,37.87132,0,17,1,43.81047,4.189526,37.0773,0,0,85.07731,0,0,0,2,1,5,77.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,72.73786,9.410387,1.609438,4.44356,1 +2,1,100,0,4,125220,0,12213.6,38.87132,0,17,1,0,0,0,0,0,0,0,0,0,0,0,5,77.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,72.73786,9.410387,1.609438,,0 +2,1,100,0,5,125220,0,12213.6,39.87132,0,17,1,0,0,0,0,0,0,0,0,0,0,0,5,77.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,72.73786,9.410387,1.609438,,0 +2,1,100,0,1,125221,0,12213.6,10.94045,0,16,1,42.86571,.5395684,0,0,0,43.40528,0,0,0,1,2,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,87.05311,9.410387,1.609438,3.770581,1 +2,1,100,0,2,125221,0,12213.6,11.94045,0,16,1,29.84666,8.598028,26.85104,0,0,65.29573,0,0,0,2,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,87.05311,9.410387,1.609438,4.178926,1 +2,1,100,0,3,125221,0,12213.6,12.94045,0,16,1,7.381546,8.254364,0,0,0,15.63591,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,87.05311,9.410387,1.609438,2.74957,1 +2,1,100,0,4,125221,0,12213.6,13.94045,0,16,1,195.6893,3.665283,0,0,0,199.3545,0,0,0,5,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,87.05311,9.410387,1.609438,5.295085,1 +2,1,100,0,5,125221,0,12213.6,14.94045,0,16,1,90.71096,0,0,0,0,90.71096,0,0,0,3,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,87.05311,9.410387,1.609438,4.507678,1 +2,1,100,0,1,125222,0,12213.6,33.19096,1,16,1,45.20384,15.19784,0,0,0,60.40168,0,0,0,3,0,5,71.3,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,80.14037,9.410387,1.609438,4.101017,1 +2,1,100,0,2,125222,0,12213.6,34.19096,1,16,1,21.35816,7.174151,0,0,0,28.53231,0,0,0,3,0,5,71.3,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,80.14037,9.410387,1.609438,3.351037,1 +2,1,100,0,3,125222,0,12213.6,35.19096,1,16,1,23.94015,4.239401,0,0,0,28.17955,0,0,0,3,0,5,71.3,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,80.14037,9.410387,1.609438,3.338597,1 +2,1,100,0,4,125222,0,12213.6,36.19096,1,16,1,6.915629,5.693868,0,0,0,12.6095,0,0,0,1,0,5,71.3,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,80.14037,9.410387,1.609438,2.53445,1 +2,1,100,0,5,125222,0,12213.6,37.19096,1,16,1,49.93652,2.653407,0,0,0,52.58993,0,0,0,2,0,5,71.3,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,80.14037,9.410387,1.609438,3.962525,1 +2,1,100,0,1,125223,0,12213.6,7.750855,0,16,1,34.77218,5.635491,0,0,0,40.40767,0,0,0,3,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,87.05311,9.410387,1.609438,3.69902,1 +2,1,100,0,2,125223,0,12213.6,8.750855,0,16,1,13.96495,10.35049,0,0,0,24.31544,0,0,0,2,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,87.05311,9.410387,1.609438,3.191112,1 +2,1,100,0,3,125223,0,12213.6,9.750855,0,16,1,29.55112,17.95511,0,0,0,47.50623,0,0,0,1,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,87.05311,9.410387,1.609438,3.860861,1 +2,1,100,0,4,125223,0,12213.6,10.75086,0,16,1,15.3988,9.22084,0,0,0,24.61964,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,87.05311,9.410387,1.609438,3.203545,1 +2,1,100,0,5,125223,0,12213.6,11.75086,0,16,1,11.84934,0,0,0,0,11.84934,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,87.05311,9.410387,1.609438,2.472273,1 +2,1,100,0,1,125224,0,12213.6,6.606434,1,16,1,31.41487,10.52158,0,0,0,41.93645,0,0,0,2,1,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,86.53913,9.410387,1.609438,3.736156,1 +2,1,100,0,2,125224,0,12213.6,7.606434,1,16,1,24.26068,11.22672,0,0,0,35.4874,0,0,0,3,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,86.53913,9.410387,1.609438,3.569178,1 +2,1,100,0,3,125224,0,12213.6,8.606434,1,16,1,1.995013,0,0,0,0,1.995013,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,86.53913,9.410387,1.609438,.6906503,1 +2,1,100,0,4,125224,0,12213.6,9.606434,1,16,1,14.01568,0,0,0,0,14.01568,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,86.53913,9.410387,1.609438,2.640176,1 +2,1,100,0,5,125224,0,12213.6,10.60643,1,16,1,13.22471,0,0,0,0,13.22471,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,86.53913,9.410387,1.609438,2.582087,1 +11,1,0,1,1,125229,0,22318.24,41.1143,1,12,1,151.6786,88.81295,26.6307,0,0,267.1223,0,0,0,16,0,8,74.7,21.7,1,,0,0,0,0,2.079442,0,0,0,0,1,0,0,68.03587,10.0132,2.079442,5.587707,1 +11,1,0,1,2,125229,0,22318.24,42.1143,1,12,1,225.0822,26.31435,0,0,0,251.3965,0,0,0,16,0,8,74.7,21.7,1,,0,0,0,0,2.079442,0,0,0,0,1,0,0,68.03587,10.0132,2.079442,5.527031,1 +11,1,0,1,3,125229,0,22318.24,43.1143,1,12,1,185.2868,61.14713,35.91022,0,0,282.3441,0,0,0,17,0,9,74.7,21.7,1,,0,0,0,0,2.197225,0,0,0,0,1,0,0,68.03587,10.0132,2.197225,5.643126,1 +11,1,0,1,1,125230,0,22318.24,17.30869,0,12,1,5.395683,6.564748,0,0,0,11.96043,0,0,0,0,0,8,80,13,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,80.52389,10.0132,2.079442,2.481604,1 +11,1,0,1,2,125230,0,22318.24,18.30869,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,80,13,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,80.52389,10.0132,2.079442,,0 +11,1,0,1,3,125230,0,22318.24,19.30869,0,12,1,17.45636,9.077307,0,0,0,26.53367,0,0,0,3,0,9,80,13,0,,0,0,0,0,2.197225,0,0,0,0,0,0,0,80.52389,10.0132,2.197225,3.278414,1 +11,1,0,1,1,125231,0,22318.24,18.41205,0,12,1,13.48921,5.749401,0,0,0,19.23861,0,0,0,2,0,8,52.6,0,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,78.67783,10.0132,2.079442,2.956919,1 +11,1,0,1,2,125231,0,22318.24,19.41205,0,12,1,49.8357,15.33406,32.04819,0,0,97.21796,0,0,0,4,0,8,52.6,0,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,78.67783,10.0132,2.079442,4.576955,1 +11,1,0,1,3,125231,0,22318.24,20.41205,0,12,1,32.91771,8.304239,0,0,700.02,741.2419,1,0,0,3,0,9,52.6,0,0,,0,0,0,0,2.197225,0,0,0,0,0,0,0,78.67783,10.0132,2.197225,6.608327,1 +11,1,0,1,1,125232,0,22318.24,14.19576,0,12,1,59.95204,14.92806,0,0,0,74.8801,0,0,0,6,0,8,80,4.3,0,,0,0,1,0,2.079442,0,0,0,0,1,0,0,74.01256,10.0132,2.079442,4.315888,1 +11,1,0,1,2,125232,0,22318.24,15.19576,0,12,1,21.90581,35.20263,0,0,0,57.10843,0,0,0,3,0,8,80,4.3,0,,0,0,1,0,2.079442,0,0,0,0,1,0,0,74.01256,10.0132,2.079442,4.044952,1 +11,1,0,1,3,125232,0,22318.24,16.19576,0,12,1,19.95012,16.7581,0,0,0,36.70823,0,0,0,3,0,9,80,4.3,0,,0,0,1,0,2.197225,0,0,0,0,1,0,0,74.01256,10.0132,2.197225,3.603001,1 +11,1,0,1,1,125233,0,22318.24,16.1807,1,12,1,90.22782,44.44844,27.56595,0,0,162.2422,0,0,0,7,0,8,75.8,0,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,74.24654,10.0132,2.079442,5.08909,1 +11,1,0,1,2,125233,0,22318.24,17.1807,1,12,1,19.16758,27.40964,0,0,491.6375,538.2147,1,0,0,3,0,8,75.8,0,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,74.24654,10.0132,2.079442,6.288258,1 +11,1,0,1,3,125233,0,22318.24,18.1807,1,12,1,334.2444,11.47132,0,0,11.97007,357.6858,0,0,0,7,0,9,75.8,0,0,,0,0,0,0,2.197225,0,0,0,0,0,0,0,74.24654,10.0132,2.197225,5.879655,1 +11,1,0,1,1,125234,0,22318.24,43.61123,0,16,1,67.14629,178.0456,55.44365,0,0,300.6355,0,0,0,8,0,8,81.1,26.1,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,77.31422,10.0132,2.079442,5.705899,1 +11,1,0,1,2,125234,0,22318.24,44.61123,0,16,1,65.71741,122.6451,0,0,0,188.3625,0,0,0,8,0,8,81.1,26.1,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,77.31422,10.0132,2.079442,5.238369,1 +11,1,0,1,3,125234,0,22318.24,45.61123,0,16,1,70.82294,125.1122,46.90773,0,0,242.8429,0,0,0,4,0,9,81.1,26.1,0,,0,0,0,0,2.197225,0,0,0,0,0,0,0,77.31422,10.0132,2.197225,5.492415,1 +11,1,0,1,1,125235,0,22318.24,10.42026,0,12,1,26.3789,21.07314,0,0,0,47.45204,0,0,0,4,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,84.64054,10.0132,2.079442,3.85972,1 +11,1,0,1,2,125235,0,22318.24,11.42026,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,84.64054,10.0132,2.079442,,0 +11,1,0,1,3,125235,0,22318.24,12.42026,0,12,1,41.39651,10.69825,0,0,0,52.09476,0,0,0,4,0,9,74.36826,13.73189,0,,0,0,1,0,2.197225,0,0,0,0,0,0,0,84.64054,10.0132,2.197225,3.953064,1 +11,1,0,1,1,125236,0,22318.24,11.50445,0,12,1,59.95204,63.31535,64.04076,0,0,187.3082,0,0,0,8,0,8,74.36826,13.73189,1,,0,0,1,0,2.079442,0,0,0,0,1,0,0,74.46355,10.0132,2.079442,5.232755,1 +11,1,0,1,2,125236,0,22318.24,12.50445,0,12,1,23.00109,41.15005,54.45783,0,0,118.609,0,0,0,4,0,8,74.36826,13.73189,1,,0,0,1,0,2.079442,0,0,0,0,1,0,0,74.46355,10.0132,2.079442,4.775832,1 +11,1,0,1,3,125236,0,22318.24,13.50445,0,12,1,68.82793,62.04489,55.70075,0,0,186.5736,0,0,0,7,0,9,74.36826,13.73189,1,,0,0,1,0,2.197225,0,0,0,0,1,0,0,74.46355,10.0132,2.197225,5.228826,1 +11,1,0,1,1,125258,0,7810.794,41.70842,0,12,1,78.61987,51.86199,7.703748,0,0,138.1856,0,0,0,7,0,5,77.9,13,1,,0,232,0,0,1.609438,5.446737,0,0,0,1,0,0,63.76923,8.96339,1.609438,4.928598,1 +11,1,0,1,2,125258,0,7810.794,42.70842,0,12,1,192.1611,112.0577,87.09853,0,2911.241,3302.559,3,0,0,19,1,5,77.9,13,1,,0,232,0,0,1.609438,5.446737,0,0,0,1,0,0,63.76923,8.96339,1.609438,8.102453,1 +11,1,0,1,3,125258,0,7810.794,43.70842,0,12,1,663.4787,111.7344,26.26363,0,1011.516,1812.993,1,0,0,0,2,5,77.9,13,1,,0,232,0,0,1.609438,5.446737,0,0,0,1,0,0,63.76923,8.96339,1.609438,7.502734,1 +11,1,0,1,1,125259,0,7810.794,31.87406,1,10,1,101.7252,56.00238,0,0,0,157.7275,0,0,0,12,0,5,80,17.4,0,,0,232,0,0,1.609438,5.446737,0,0,0,0,0,0,76.00816,8.96339,1.609438,5.060869,1 +11,1,0,1,2,125259,0,7810.794,32.87406,1,10,1,60.42461,36.89167,0,0,0,97.31628,0,0,0,7,0,5,80,17.4,0,,0,232,0,0,1.609438,5.446737,0,0,0,0,0,0,76.00816,8.96339,1.609438,4.577966,1 +11,1,0,1,3,125259,0,7810.794,33.87406,1,10,1,26.75917,31.91774,0,0,0,58.67691,0,0,0,3,0,5,80,17.4,0,,0,232,0,0,1.609438,5.446737,0,0,0,0,0,0,76.00816,8.96339,1.609438,4.072046,1 +11,1,0,1,1,125260,0,7810.794,10.96509,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,0,232,1,0,1.609438,5.446737,0,0,0,0,0,0,79.16512,8.96339,1.609438,,0 +11,1,0,1,2,125260,0,7810.794,11.96509,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,0,232,1,0,1.609438,5.446737,0,0,0,0,0,0,79.16512,8.96339,1.609438,,0 +11,1,0,1,3,125260,0,7810.794,12.96509,0,10,1,5.946482,1.982161,0,0,0,7.928642,0,0,0,1,0,5,74.36826,13.73189,0,,0,232,1,0,1.609438,5.446737,0,0,0,0,0,0,79.16512,8.96339,1.609438,2.070482,1 +11,1,0,1,1,125261,0,7810.794,12.13415,0,10,1,71.0113,22.08209,0,0,0,93.0934,0,0,0,9,0,5,74.36826,13.73189,0,,0,232,1,0,1.609438,5.446737,0,0,0,0,0,0,79.16512,8.96339,1.609438,4.533603,1 +11,1,0,1,2,125261,0,7810.794,13.13415,0,10,1,37.56124,0,1.633097,0,0,39.19434,0,0,0,2,0,5,74.36826,13.73189,0,,0,232,1,0,1.609438,5.446737,0,0,0,0,0,0,79.16512,8.96339,1.609438,3.668532,1 +11,1,0,1,3,125261,0,7810.794,14.13415,0,10,1,21.80377,4.6333,0,0,0,26.43707,0,0,0,2,0,5,74.36826,13.73189,0,,0,232,1,0,1.609438,5.446737,0,0,0,0,0,0,79.16512,8.96339,1.609438,3.274767,1 +11,1,0,1,1,125262,0,7810.794,9.24846,0,10,1,19.63117,3.920285,0,0,0,23.55146,0,0,0,3,0,5,74.36826,13.73189,0,,0,232,1,0,1.609438,5.446737,0,0,0,0,0,0,79.16512,8.96339,1.609438,3.159188,1 +11,1,0,1,2,125262,0,7810.794,10.24846,0,10,1,22.86336,11.64398,0,0,0,34.50735,0,0,0,3,0,5,74.36826,13.73189,0,,0,232,1,0,1.609438,5.446737,0,0,0,0,0,0,79.16512,8.96339,1.609438,3.541172,1 +11,1,0,1,3,125262,0,7810.794,11.24846,0,10,1,128.8404,3.468781,0,0,0,132.3092,0,0,0,2,0,5,74.36826,13.73189,0,,0,232,1,0,1.609438,5.446737,0,0,0,0,0,0,79.16512,8.96339,1.609438,4.885142,1 +10,1,50,0,1,125292,0,7562.655,3.129364,1,12,1,38.96883,4.118705,0,0,0,43.08753,0,0,0,4,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,1,0,0,72.76939,8.931109,1.386294,3.763234,1 +10,1,50,0,2,125292,0,7562.655,4.129364,1,12,1,31.21577,10.38335,0,0,0,41.59912,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,1,0,0,72.76939,8.931109,1.386294,3.728079,1 +10,1,50,0,3,125292,0,7562.655,5.129364,1,12,1,15.9601,0,0,0,0,15.9601,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,1,0,0,72.76939,8.931109,1.386294,2.770092,1 +10,1,50,0,4,125292,0,7562.655,6.129364,1,12,1,239.6496,0,0,0,0,239.6496,0,0,0,4,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,1,0,0,72.76939,8.931109,1.386294,5.479178,1 +10,1,50,0,5,125292,0,7562.655,7.129364,1,12,1,42.74228,2.530681,0,0,0,45.27296,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,1,0,0,72.76939,8.931109,1.386294,3.81271,1 +10,1,50,0,1,125293,0,7562.655,25.76591,0,12,1,6.594724,15.55755,0,0,0,22.15228,0,0,0,1,0,4,90,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,77.12549,8.931109,1.386294,3.09794,1 +10,1,50,0,2,125293,0,7562.655,26.76591,0,12,1,102.4096,5.733844,0,0,0,108.1435,0,0,0,2,0,4,90,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,77.12549,8.931109,1.386294,4.683459,1 +10,1,50,0,3,125293,0,7562.655,27.76591,0,12,1,199.0025,0,0,0,0,199.0025,0,0,0,0,28,4,90,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,77.12549,8.931109,1.386294,5.293317,1 +10,1,50,0,4,125293,0,7562.655,28.76591,0,12,1,96.81881,0,0,0,0,96.81881,0,0,0,0,21,4,90,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,77.12549,8.931109,1.386294,4.572841,1 +10,1,50,0,5,125293,0,7562.655,29.76591,0,12,1,57.97715,0,0,0,0,57.97715,0,0,0,0,13,4,90,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,77.12549,8.931109,1.386294,4.060049,1 +10,1,50,0,1,125294,0,7562.655,25.56058,1,12,1,20.38369,9.028777,0,0,0,29.41247,0,0,0,2,0,4,81.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,71.5183,8.931109,1.386294,3.381419,1 +10,1,50,0,2,125294,0,7562.655,26.56058,1,12,1,4.928806,19.43045,0,0,0,24.35925,0,0,0,1,0,4,81.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,71.5183,8.931109,1.386294,3.192912,1 +10,1,50,0,3,125294,0,7562.655,27.56058,1,12,1,9.102244,1.361596,0,0,0,10.46384,0,0,0,1,0,4,81.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,71.5183,8.931109,1.386294,2.347926,1 +10,1,50,0,4,125294,0,7562.655,28.56058,1,12,1,11.06501,0,0,0,0,11.06501,0,0,0,2,0,4,81.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,71.5183,8.931109,1.386294,2.403788,1 +10,1,50,0,5,125294,0,7562.655,29.56058,1,12,1,18.6204,0,0,0,0,18.6204,0,0,0,2,0,4,81.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,71.5183,8.931109,1.386294,2.924258,1 +10,1,50,0,1,125295,0,7562.655,1.284052,1,12,1,23.98082,5.905276,0,0,0,29.88609,0,0,0,4,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.6642,8.931109,1.386294,3.397393,1 +10,1,50,0,2,125295,0,7562.655,2.284052,1,12,1,45.96933,8.603505,0,0,0,54.57284,0,0,0,5,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.6642,8.931109,1.386294,3.999536,1 +10,1,50,0,3,125295,0,7562.655,3.284052,1,12,1,25.93516,5.506235,0,0,0,31.4414,0,0,0,4,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.6642,8.931109,1.386294,3.448125,1 +10,1,50,0,4,125295,0,7562.655,4.284052,1,12,1,19.8248,0,0,0,0,19.8248,0,0,0,4,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.6642,8.931109,1.386294,2.986934,1 +10,1,50,0,5,125295,0,7562.655,5.284052,1,12,1,175.9204,0,0,0,320.4655,496.386,1,0,0,5,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.6642,8.931109,1.386294,6.207354,1 +7,1,25,1,1,125310,0,6375.931,42.06982,1,12,1,121.3563,27.78108,0,0,0,149.1374,0,0,0,3,0,2,83.2,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,71.44223,8.760442,.6931472,5.004868,1 +7,1,25,1,2,125310,0,6375.931,43.06982,1,12,1,148.6119,21.5841,0,0,0,170.196,0,0,0,4,0,2,83.2,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,71.44223,8.760442,.6931472,5.13695,1 +7,1,25,1,3,125310,0,6375.931,44.06982,1,12,1,77.7998,32.16056,0,0,0,109.9604,0,0,0,1,0,2,83.2,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,71.44223,8.760442,.6931472,4.70012,1 +7,1,25,1,4,125310,0,6375.931,45.06982,1,12,1,132.1707,21.61542,0,0,0,153.7861,0,0,0,3,0,2,83.2,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,71.44223,8.760442,.6931472,5.035563,1 +7,1,25,1,5,125310,0,6375.931,46.06982,1,12,1,125.7888,15.73412,25.87295,0,676.8364,844.2322,1,0,0,3,1,2,83.2,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,71.44223,8.760442,.6931472,6.738428,1 +7,1,25,1,1,125311,0,6375.931,52.39151,0,9,1,82.09399,0,34.50327,0,0,116.5973,0,0,0,2,1,2,95.8,26.1,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,66.65314,8.760442,.6931472,4.758726,1 +7,1,25,1,2,125311,0,6375.931,53.39151,0,9,1,62.0577,0,0,0,0,62.0577,0,0,0,1,0,2,95.8,26.1,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,66.65314,8.760442,.6931472,4.128065,1 +7,1,25,1,3,125311,0,6375.931,54.39151,0,9,1,83.74628,2.65114,0,0,1015.084,1101.482,1,0,0,3,0,2,95.8,26.1,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,66.65314,8.760442,.6931472,7.004412,1 +7,1,25,1,4,125311,0,6375.931,55.39151,0,9,1,122.9922,53.419,0,0,0,176.4112,0,0,0,4,0,2,95.8,26.1,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,66.65314,8.760442,.6931472,5.172818,1 +7,1,25,1,5,125311,0,6375.931,56.39151,0,9,1,87.50526,51.59865,35.75936,0,0,174.8633,0,0,0,1,1,2,95.8,26.1,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,66.65314,8.760442,.6931472,5.164004,1 +4,1,100,1,1,125323,0,15324.44,56.06297,0,14,1,32.71862,7.614515,0,0,0,40.33313,0,0,0,2,0,2,95.8,4.3,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,77.37316,9.63727,.6931472,3.697173,1 +4,1,100,1,2,125323,0,15324.44,57.06297,0,14,1,19.59717,0,0,0,0,19.59717,0,0,0,2,0,2,95.8,4.3,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,77.37316,9.63727,.6931472,2.975385,1 +4,1,100,1,3,125323,0,15324.44,58.06297,0,14,1,33.44896,0,35.99108,0,0,69.44004,0,0,0,2,0,2,95.8,4.3,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,77.37316,9.63727,.6931472,4.240464,1 +4,1,100,1,4,125323,0,15324.44,59.06297,0,14,1,20.19275,0,0,0,0,20.19275,0,0,0,2,0,2,95.8,4.3,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,77.37316,9.63727,.6931472,3.005324,1 +4,1,100,1,5,125323,0,15324.44,60.06297,0,14,1,6.310475,0,0,0,0,6.310475,0,0,0,1,0,2,95.8,4.3,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,77.37316,9.63727,.6931472,1.842211,1 +4,1,100,1,1,125324,0,15324.44,55.58659,1,12,1,36.58537,28.40571,26.73409,0,0,91.72517,0,0,0,4,0,2,78.9,17.4,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,66.03719,9.63727,.6931472,4.518797,1 +4,1,100,1,2,125324,0,15324.44,56.58659,1,12,1,79.47741,10.17964,0,0,0,89.65705,0,0,0,3,0,2,78.9,17.4,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,66.03719,9.63727,.6931472,4.495992,1 +4,1,100,1,3,125324,0,15324.44,57.58659,1,12,1,80.77304,76.58077,0,0,0,157.3538,0,0,0,10,0,2,78.9,17.4,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,66.03719,9.63727,.6931472,5.058497,1 +4,1,100,1,4,125324,0,15324.44,58.58659,1,12,1,44.51583,44.19917,38.36622,0,0,127.0812,0,0,0,5,0,2,78.9,17.4,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,66.03719,9.63727,.6931472,4.844827,1 +4,1,100,1,5,125324,0,15324.44,59.58659,1,12,1,123.6853,45.18721,32.97434,0,0,201.8469,0,0,0,11,4,2,78.9,17.4,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,66.03719,9.63727,.6931472,5.307509,1 +6,1,25,1,1,125337,0,6566.377,32.282,1,12,1,66.54888,39.25795,0,0,0,105.8068,0,0,0,5,1,5,36.8,17.4,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,66.28,8.78987,1.609438,4.661615,1 +6,1,25,1,2,125337,0,6566.377,33.282,1,12,1,26.95418,6.318059,0,0,0,33.27224,0,0,0,3,0,5,36.8,17.4,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,66.28,8.78987,1.609438,3.504723,1 +6,1,25,1,3,125337,0,6566.377,34.282,1,12,1,19.65602,2.358722,0,0,0,22.01474,0,0,0,2,0,5,36.8,17.4,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,66.28,8.78987,1.609438,3.091712,1 +6,1,25,1,4,125337,0,6566.377,35.282,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,36.8,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,66.28,8.78987,1.386294,,0 +6,1,25,1,5,125337,0,6566.377,36.282,1,12,1,78.69946,.8336807,0,0,0,79.53314,0,0,0,5,0,4,36.8,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,66.28,8.78987,1.386294,4.376174,1 +6,1,25,1,1,125338,0,6566.377,11.11567,0,12,1,110.1296,19.84099,0,0,3467.986,3597.956,1,0,0,7,0,5,74.36826,13.73189,1,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.53985,8.78987,1.609438,8.188121,1 +6,1,25,1,2,125338,0,6566.377,12.11567,0,12,1,69.6496,3.876011,0,0,0,73.5256,0,0,0,1,1,5,74.36826,13.73189,1,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.53985,8.78987,1.609438,4.297634,1 +6,1,25,1,3,125338,0,6566.377,13.11567,0,12,1,40.25553,4.19656,0,0,0,44.45209,0,0,0,2,0,5,74.36826,13.73189,1,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.53985,8.78987,1.609438,3.794412,1 +6,1,25,1,4,125338,0,6566.377,14.11567,0,12,1,30.99362,0,0,0,0,30.99362,0,0,0,1,0,4,74.36826,13.73189,1,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,72.53985,8.78987,1.386294,3.433781,1 +6,1,25,1,5,125338,0,6566.377,15.11567,0,12,1,40.85035,6.669446,0,0,0,47.5198,0,0,0,5,0,4,74.36826,13.73189,1,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,72.53985,8.78987,1.386294,3.861146,1 +6,1,25,1,1,125339,0,6566.377,12.27378,1,12,1,11.77856,1.737338,0,0,0,13.5159,0,0,0,2,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,76.26729,8.78987,1.609438,2.603867,1 +6,1,25,1,2,125339,0,6566.377,13.27378,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,76.26729,8.78987,1.609438,,0 +6,1,25,1,3,125339,0,6566.377,14.27378,1,12,1,21.13022,.5896806,0,0,397.5676,419.2875,1,0,0,3,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,76.26729,8.78987,1.609438,6.038557,1 +6,1,25,1,4,125339,0,6566.377,15.27378,1,12,1,25.97995,0,0,0,0,25.97995,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,76.26729,8.78987,1.386294,3.257325,1 +6,1,25,1,5,125339,0,6566.377,16.27378,1,12,1,5.002084,.8336807,0,0,0,5.835765,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,76.26729,8.78987,1.386294,1.764005,1 +6,1,25,1,1,125340,0,6566.377,5.952087,1,12,1,26.50177,2.173145,0,0,0,28.67491,0,0,0,4,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.02587,8.78987,1.609438,3.356023,1 +6,1,25,1,2,125340,0,6566.377,6.952087,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.02587,8.78987,1.609438,,0 +6,1,25,1,3,125340,0,6566.377,7.952087,1,12,1,90.90909,11.32187,0,0,278.3342,380.5651,1,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.02587,8.78987,1.609438,5.941658,1 +6,1,25,1,4,125340,0,6566.377,8.952087,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,72.02587,8.78987,1.386294,,0 +6,1,25,1,5,125340,0,6566.377,9.952087,1,12,1,5.835765,0,0,0,0,5.835765,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,72.02587,8.78987,1.386294,1.764005,1 +6,1,25,1,1,125341,0,6566.377,35.60849,0,12,1,167.8445,71.67255,0,0,0,239.5171,0,0,0,11,0,5,34.7,21.7,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,61.01952,8.78987,1.609438,5.478625,1 +6,1,25,1,2,125341,0,6566.377,36.60849,0,12,1,36.1186,20.60917,0,0,0,56.72776,0,0,0,7,0,5,34.7,21.7,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,61.01952,8.78987,1.609438,4.038264,1 +6,1,25,1,3,125341,0,6566.377,37.60849,0,12,.9561644,0,4.058968,0,0,0,4.058968,0,0,0,0,0,5,34.7,21.7,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,61.01952,8.78987,1.609438,1.400929,1 +5,1,25,0,1,125352,0,5798.387,31.08829,0,12,1,15.31213,3.386337,0,0,0,18.69847,0,0,0,1,1,3,72.5,13.73189,0,,545,545,0,0,1.098612,6.300786,0,3.258096,7.68708,1,0,0,66.24147,8.665507,1.098612,2.928442,1 +5,1,25,0,2,125352,0,5798.387,32.08829,0,12,1,111.0512,3.22372,0,0,0,114.2749,0,0,0,2,0,3,72.5,13.73189,0,,545,545,0,0,1.098612,6.300786,0,3.258096,7.68708,1,0,0,66.24147,8.665507,1.098612,4.738607,1 +5,1,25,0,3,125352,0,5798.387,33.08829,0,12,1,266.0934,5.307125,0,0,783.8133,1055.214,1,0,0,4,0,3,72.5,13.73189,0,,545,545,0,0,1.098612,6.300786,0,3.258096,7.68708,1,0,0,66.24147,8.665507,1.098612,6.961499,1 +5,1,25,0,1,125353,0,5798.387,30.91855,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,63.8,13.73189,0,,545,545,0,0,1.098612,6.300786,0,3.258096,7.68708,1,0,0,69.36126,8.665507,1.098612,,0 +5,1,25,0,2,125353,0,5798.387,31.91855,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,63.8,13.73189,0,,545,545,0,0,1.098612,6.300786,0,3.258096,7.68708,1,0,0,69.36126,8.665507,1.098612,,0 +5,1,25,0,3,125353,0,5798.387,32.91855,1,12,1,36.85504,0,0,0,0,36.85504,0,0,0,1,0,3,63.8,13.73189,0,,545,545,0,0,1.098612,6.300786,0,3.258096,7.68708,1,0,0,69.36126,8.665507,1.098612,3.606992,1 +5,1,25,0,1,125354,0,5798.387,10.27515,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,545,545,1,1,1.098612,6.300786,0,3.258096,7.68708,1,0,0,73.12908,8.665507,1.098612,,0 +5,1,25,0,2,125354,0,5798.387,11.27515,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,545,545,1,1,1.098612,6.300786,0,3.258096,7.68708,1,0,0,73.12908,8.665507,1.098612,,0 +5,1,25,0,3,125354,0,5798.387,12.27515,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,545,545,1,1,1.098612,6.300786,0,3.258096,7.68708,1,0,0,73.12908,8.665507,1.098612,,0 +3,1,100,1,1,125355,0,4906.328,31.66051,1,12,1,25.58001,32.79596,0,0,0,58.37597,0,0,0,4,0,1,77.9,17.4,0,,700,700,0,0,0,6.55108,1,0,0,0,0,0,78.576,8.498485,0,4.066904,1 +3,1,100,1,2,125355,0,4906.328,32.66051,1,12,1,87.6429,47.50681,33.5656,0,0,168.7153,0,0,0,10,0,1,77.9,17.4,0,,700,700,0,0,0,6.55108,1,0,0,0,0,0,78.576,8.498485,0,5.128212,1 +3,1,100,1,3,125355,0,4906.328,33.66051,1,12,1,12.3885,17.92864,0,0,0,30.31715,0,0,0,1,0,1,77.9,17.4,0,,700,700,0,0,0,6.55108,1,0,0,0,0,0,78.576,8.498485,0,3.411713,1 +4,1,100,0,1,125356,0,2566.822,5.303217,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,537,0,1,0,.6931472,0,1,0,0,1,0,0,75.47171,7.850813,.6931472,,0 +4,1,100,0,2,125356,0,2566.822,6.303217,0,10,1,11.01322,0,0,0,0,11.01322,0,0,0,1,0,2,74.36826,13.73189,0,,537,0,1,0,.6931472,0,1,0,0,1,0,0,75.47171,7.850813,.6931472,2.399096,1 +4,1,100,0,3,125356,0,2566.822,7.303217,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,537,0,1,0,.6931472,0,1,0,0,1,0,0,75.47171,7.850813,.6931472,,0 +4,1,100,0,1,125357,0,2566.822,37.57426,1,10,1,15.07841,1.833534,0,0,713.3414,730.2533,1,0,0,1,0,2,76.3,13.73189,0,,537,0,0,0,.6931472,0,1,0,0,1,0,0,63.56458,7.850813,.6931472,6.593391,1 +4,1,100,0,2,125357,0,2566.822,38.57426,1,10,1,13.76652,0,47.75881,0,0,61.52533,0,0,0,1,0,2,76.3,13.73189,0,,537,0,0,0,.6931472,0,1,0,0,1,0,0,63.56458,7.850813,.6931472,4.119449,1 +4,1,100,0,3,125357,0,2566.822,39.57426,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,76.3,13.73189,0,,537,0,0,0,.6931472,0,1,0,0,1,0,0,63.56458,7.850813,.6931472,,0 +4,1,100,1,1,125386,0,7636.477,14.57632,1,15,1,5.395683,14.1307,0,0,244.2866,263.813,1,0,0,1,0,2,92.2,4.3,0,,1000,1000,1,1,.6931472,6.907755,1,0,0,0,0,0,75.45777,8.940823,.6931472,5.57524,1 +4,1,100,1,2,125386,0,7636.477,15.57632,1,15,1,0,0,0,0,0,0,0,0,0,0,0,2,92.2,4.3,0,,1000,1000,1,1,.6931472,6.907755,1,0,0,0,0,0,75.45777,8.940823,.6931472,,0 +4,1,100,1,3,125386,0,7636.477,16.57632,1,15,1,0,0,0,0,0,0,0,0,0,0,0,2,92.2,4.3,0,,1000,1000,1,1,.6931472,6.907755,1,0,0,0,0,0,75.45777,8.940823,.6931472,,0 +4,1,100,1,1,125387,0,7636.477,55.44969,1,15,1,14.98801,10.7554,37.05036,0,0,62.79377,0,0,0,1,0,2,55.8,17.4,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,78.79291,8.940823,.6931472,4.139856,1 +4,1,100,1,2,125387,0,7636.477,56.44969,1,15,1,6.571742,2.185104,0,0,0,8.756845,0,0,0,1,0,2,55.8,17.4,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,78.79291,8.940823,.6931472,2.169836,1 +4,1,100,1,3,125387,0,7636.477,57.44969,1,15,1,74.81297,5.950125,0,0,0,80.76309,0,0,0,3,0,2,55.8,17.4,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,78.79291,8.940823,.6931472,4.39152,1 +2,1,100,0,1,125410,0,4534.119,23.95893,1,16,1,14.13428,1.413428,0,0,0,15.5477,0,0,0,3,0,1,68.4,4.3,0,,345,345,0,0,0,5.843544,1,0,0,0,0,0,78.4139,8.419606,0,2.743913,1 +2,1,100,0,2,125410,0,4534.119,24.95893,1,16,1,10.78167,1.407008,0,0,0,12.18868,0,0,0,2,0,1,68.4,4.3,0,,345,345,0,0,0,5.843544,1,0,0,0,0,0,78.4139,8.419606,0,2.500508,1 +2,1,100,0,3,125410,0,4534.119,25.95893,1,16,1,29.09091,1.184275,12.30467,0,257.5184,300.0983,1,0,0,1,2,1,68.4,4.3,0,,345,345,0,0,0,5.843544,1,0,0,0,0,0,78.4139,8.419606,0,5.70411,1 +2,1,100,0,4,125410,0,4534.119,26.95893,1,16,1,65.01823,7.301732,0,0,414.5852,486.9052,1,0,0,1,0,1,68.4,4.3,0,,345,345,0,0,0,5.843544,1,0,0,0,0,0,78.4139,8.419606,0,6.188069,1 +2,1,100,0,5,125410,0,4534.119,27.95893,1,16,1,65.23551,4.864527,0,0,0,70.10004,0,0,0,2,0,2,68.4,4.3,0,,345,345,0,0,.6931472,5.843544,1,0,0,0,0,0,78.4139,8.419606,.6931472,4.249923,1 +11,1,0,1,1,125425,0,6586.849,19.63039,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,71.6,17.4,0,,0,0,0,0,0,0,0,0,0,1,0,0,66.48602,8.792982,0,,0 +11,1,0,1,2,125425,0,6586.849,20.63039,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,71.6,17.4,0,,0,0,0,0,0,0,0,0,0,1,0,0,66.48602,8.792982,0,,0 +11,1,0,1,3,125425,0,6586.849,21.63039,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,71.6,17.4,0,,0,0,0,0,0,0,0,0,0,1,0,0,66.48602,8.792982,0,,0 +11,1,0,1,4,125425,0,6586.849,22.63039,0,12,1,32.73398,4.61042,0,0,0,37.3444,0,0,0,3,1,2,71.6,17.4,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,66.48602,8.792982,.6931472,3.620183,1 +11,1,0,1,5,125425,0,6586.849,23.63039,0,12,1,12.69573,0,0,0,0,12.69573,0,0,0,0,1,2,71.6,17.4,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,66.48602,8.792982,.6931472,2.541265,1 +11,1,0,1,1,125426,0,9542.002,19.99726,0,12,1,56.95444,4.046762,0,0,0,61.0012,0,0,0,6,0,1,69.5,4.3,0,,0,0,0,0,0,0,0,0,0,0,0,0,78.01653,9.163564,0,4.110894,1 +11,1,0,1,2,125426,0,9542.002,20.99726,0,12,1,10.9529,.5476452,0,0,0,11.50055,0,0,0,1,0,1,69.5,4.3,0,,0,0,0,0,0,0,0,0,0,0,0,0,78.01653,9.163564,0,2.442395,1 +11,1,0,1,3,125426,0,9542.002,21.99726,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,69.5,4.3,0,,0,0,0,0,0,0,0,0,0,0,0,0,78.01653,9.163564,0,,0 +11,1,0,1,4,125426,0,9542.002,22.99726,0,12,1,82.06547,18.02674,35.17289,0,0,135.2651,0,0,0,5,1,1,69.5,4.3,0,,0,0,0,0,0,0,0,0,0,0,0,0,78.01653,9.163564,0,4.907237,1 +11,1,0,1,5,125426,0,9542.002,23.99726,0,12,1,23.2755,6.982649,0,0,0,30.25815,0,0,0,1,0,1,69.5,4.3,0,,0,0,0,0,0,0,0,0,0,0,0,0,78.01653,9.163564,0,3.409765,1 +4,1,100,1,1,125432,0,2454.715,46.06434,0,17,1,108.813,112.3921,0,35.97122,0,221.205,0,0,5,11,1,4,38.9,8.7,1,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.84441,7.806173,1.386294,5.39909,1 +4,1,100,1,2,125432,0,2454.715,47.06434,0,17,1,370.4819,148.0449,23.46659,690.1698,2736.95,3278.943,3,0,48,44,1,4,38.9,8.7,1,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.84441,7.806173,1.386294,8.095277,1 +4,1,100,1,3,125432,0,2454.715,48.06434,0,17,1,168.0798,57.54115,0,139.6509,0,225.6209,0,0,7,7,0,4,38.9,8.7,1,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.84441,7.806173,1.386294,5.418856,1 +4,1,100,1,1,125433,0,2454.715,17.00479,1,12,1,38.3693,.8693045,0,0,0,39.23861,0,0,0,1,0,4,76.8,13,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,1,0,0,64.73034,7.806173,1.386294,3.669661,1 +4,1,100,1,2,125433,0,2454.715,18.00479,1,12,1,18.15444,2.102957,33.7678,0,0,54.02519,0,0,0,1,1,4,76.8,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,64.73034,7.806173,1.386294,3.98945,1 +4,1,100,1,3,125433,0,2454.715,19.00479,1,12,1,22.44389,0,0,0,0,22.44389,0,0,0,3,0,4,76.8,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,64.73034,7.806173,1.386294,3.111018,1 +4,1,100,1,1,125434,0,2454.715,9.601643,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,1,,1000,1000,1,1,1.386294,6.907755,1,0,0,1,0,0,76.38216,7.806173,1.386294,,0 +4,1,100,1,2,125434,0,2454.715,10.60164,1,12,1,52.35487,0,0,0,0,52.35487,0,0,0,3,1,4,74.36826,13.73189,1,,1000,1000,1,1,1.386294,6.907755,1,0,0,1,0,0,76.38216,7.806173,1.386294,3.958045,1 +4,1,100,1,3,125434,0,2454.715,11.60164,1,12,1,18.95262,0,0,0,0,18.95262,0,0,0,1,0,4,74.36826,13.73189,1,,1000,1000,1,1,1.386294,6.907755,1,0,0,1,0,0,76.38216,7.806173,1.386294,2.941942,1 +4,1,100,1,1,125435,0,2454.715,47.8987,1,12,1,53.95683,68.91487,0,0,0,122.8717,0,0,0,8,0,4,42.1,39.1,1,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,1,0,54.82101,7.806173,1.386294,4.811141,1 +4,1,100,1,2,125435,0,2454.715,48.8987,1,12,1,60.78861,79.4414,30.33406,0,325.3012,495.8653,1,0,0,6,1,4,42.1,39.1,1,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,1,0,54.82101,7.806173,1.386294,6.206304,1 +4,1,100,1,3,125435,0,2454.715,49.8987,1,12,1,22.44389,2.009975,0,0,0,24.45387,0,0,0,3,0,4,42.1,39.1,1,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,1,0,54.82101,7.806173,1.386294,3.196788,1 +6,1,25,1,1,125454,0,1093.672,60.81862,1,6,1,32.71862,20.09518,0,0,0,52.8138,0,0,0,3,0,1,75.8,21.7,1,,226,226,0,0,0,5.420535,0,3.258096,6.806829,1,0,0,62.52559,6.99821,0,3.966773,1 +6,1,25,1,2,125454,0,1093.672,61.81862,1,6,1,26.12956,15.77572,0,0,0,41.90528,0,0,0,3,1,1,75.8,21.7,1,,226,226,0,0,0,5.420535,0,3.258096,6.806829,1,0,0,62.52559,6.99821,0,3.735412,1 +6,1,25,1,3,125454,0,1093.672,62.81862,1,6,1,16.84836,6.868186,0,0,0,23.71655,0,0,0,3,0,1,75.8,21.7,1,,226,226,0,0,0,5.420535,0,3.258096,6.806829,1,0,0,62.52559,6.99821,0,3.166173,1 +6,1,25,1,1,125455,0,3467.742,21.80698,1,12,1,27.95955,0,41.047,0,0,69.00655,0,0,0,2,0,1,68.4,8.7,0,,530,530,0,0,0,6.272877,0,3.258096,7.659172,0,0,0,79.25372,8.151547,0,4.234201,1 +6,1,25,1,2,125455,0,3467.742,22.80698,1,12,1,26.12956,9.450191,13.60915,0,0,49.1889,0,0,0,1,1,1,68.4,8.7,0,,530,530,0,0,0,6.272877,0,3.258096,7.659172,0,0,0,79.25372,8.151547,0,3.895668,1 +6,1,25,1,3,125455,0,3467.742,23.80698,1,12,1,20.19326,0,0,0,0,20.19326,0,0,0,1,0,1,68.4,8.7,0,,530,530,0,0,0,6.272877,0,3.258096,7.659172,0,0,0,79.25372,8.151547,0,3.005349,1 +3,1,100,0,1,125484,0,4986.759,33.18549,0,11,1,18.8457,2.915194,0,0,0,21.76089,0,0,0,3,0,3,77.9,0,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,1,0,0,67.92956,8.514742,1.098612,3.080115,1 +3,1,100,0,2,125484,0,4986.759,34.18549,0,11,1,21.56334,0,0,0,0,21.56334,0,0,0,1,0,3,77.9,0,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,1,0,0,67.92956,8.514742,1.098612,3.070995,1 +3,1,100,0,3,125484,0,4986.759,35.18549,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,77.9,0,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,1,0,0,67.92956,8.514742,1.098612,,0 +3,1,100,0,1,125485,0,4986.759,6.672143,0,12,1,12.36749,28.97527,9.234393,0,360.424,411.0012,1,0,0,3,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,1,0,0,1,0,0,73.90472,8.514742,1.098612,6.018596,1 +3,1,100,0,2,125485,0,4986.759,7.672143,0,12,1,138.7062,37.19677,0,0,0,175.903,0,0,0,17,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,1,0,0,1,0,0,73.90472,8.514742,1.098612,5.169932,1 +3,1,100,0,3,125485,0,4986.759,8.672142,0,12,1,80.09828,7.149877,0,0,0,87.24815,0,0,0,21,1,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,1,0,0,1,0,0,73.90472,8.514742,1.098612,4.468756,1 +3,1,100,0,1,125486,0,4986.759,29.27858,1,12,1,19.43463,5.859835,0,0,0,25.29446,0,0,0,5,0,3,44.2,39.1,1,,1000,1000,0,0,1.098612,6.907755,1,0,0,1,0,0,68.93575,8.514742,1.098612,3.230586,1 +3,1,100,0,2,125486,0,4986.759,30.27858,1,12,1,62.53369,97.96765,53.36927,0,2370.226,2584.097,2,0,0,5,0,3,44.2,39.1,1,,1000,1000,0,0,1.098612,6.907755,1,0,0,1,0,0,68.93575,8.514742,1.098612,7.857131,1 +3,1,100,0,3,125486,0,4986.759,31.27858,1,12,1,33.90664,87.46928,0,0,0,121.3759,0,0,0,3,0,3,44.2,39.1,1,,1000,1000,0,0,1.098612,6.907755,1,0,0,1,0,0,68.93575,8.514742,1.098612,4.798892,1 +11,1,0,0,1,125501,1,9055.211,39.57837,1,12,1,348.0216,43.64508,0,0,0,391.6667,0,0,0,10,0,8,45,13.73189,1,,0,0,0,0,2.079442,0,0,0,0,0,0,1,66.24201,9.111206,2.079442,5.970411,1 +11,1,0,0,2,125501,1,9055.211,40.57837,1,12,1,59.96714,7.721797,0,0,0,67.68893,0,0,0,1,0,8,45,13.73189,1,,0,0,0,0,2.079442,0,0,0,0,0,0,1,66.24201,9.111206,2.079442,4.214923,1 +11,1,0,0,3,125501,1,9055.211,41.57837,1,12,1,3.990025,12.06983,0,0,0,16.05985,0,0,0,1,0,8,45,13.73189,1,,0,0,0,0,2.079442,0,0,0,0,0,0,1,66.24201,9.111206,2.079442,2.776322,1 +11,1,0,0,4,125501,1,9055.211,42.57837,1,12,1,13.83126,21.96865,0,0,0,35.79991,0,0,0,2,0,8,45,13.73189,1,,0,0,0,0,2.079442,0,0,0,0,0,0,1,66.24201,9.111206,2.079442,3.577945,1 +11,1,0,0,5,125501,1,9055.211,43.57837,1,12,1,26.02624,20.94795,3.537876,0,0,50.51206,0,0,0,1,0,8,45,13.73189,1,,0,0,0,0,2.079442,0,0,0,0,0,0,1,66.24201,9.111206,2.079442,3.922212,1 +11,1,0,0,1,125502,1,9055.211,9.535934,1,12,1,64.7482,0,0,0,0,64.7482,0,0,0,2,0,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,78.46435,9.111206,2.079442,4.170506,1 +11,1,0,0,2,125502,1,9055.211,10.53593,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,78.46435,9.111206,2.079442,,0 +11,1,0,0,3,125502,1,9055.211,11.53593,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,78.46435,9.111206,2.079442,,0 +11,1,0,0,4,125502,1,9055.211,12.53593,1,12,1,56.93868,0,0,0,0,56.93868,0,0,0,3,0,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,78.46435,9.111206,2.079442,4.041975,1 +11,1,0,0,5,125502,1,9055.211,13.53593,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,78.46435,9.111206,2.079442,,0 +11,1,0,0,1,125503,1,9055.211,4.971937,0,12,1,35.3717,1.858513,0,0,0,37.23022,0,0,0,1,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,75.5467,9.111206,2.079442,3.617121,1 +11,1,0,0,2,125503,1,9055.211,5.971937,0,12,1,0,2.135816,0,0,0,2.135816,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,75.5467,9.111206,2.079442,.7588488,1 +11,1,0,0,3,125503,1,9055.211,6.971937,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,75.5467,9.111206,2.079442,,0 +11,1,0,0,4,125503,1,9055.211,7.971937,0,12,1,45.50484,0,0,0,0,45.50484,0,0,0,2,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,75.5467,9.111206,2.079442,3.817819,1 +11,1,0,0,5,125503,1,9055.211,8.971937,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,75.5467,9.111206,2.079442,,0 +11,1,0,0,1,125504,1,9055.211,16.19986,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,63.8,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,75.33212,9.111206,2.079442,,0 +11,1,0,0,2,125504,1,9055.211,17.19986,0,12,1,146.2486,0,0,0,0,146.2486,0,0,0,7,0,8,63.8,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,75.33212,9.111206,2.079442,4.985308,1 +11,1,0,0,3,125504,1,9055.211,18.19986,0,12,1,52.36908,0,0,0,0,52.36908,0,0,0,5,0,8,63.8,13.73189,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,75.33212,9.111206,2.079442,3.958316,1 +11,1,0,0,4,125504,1,9055.211,19.19986,0,12,1,0,5.928999,0,0,0,5.928999,0,0,0,0,0,8,63.8,13.73189,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,75.33212,9.111206,2.079442,1.779855,1 +11,1,0,0,5,125504,1,9055.211,20.19986,0,12,1,45.2391,0,0,0,0,45.2391,0,0,0,1,0,8,63.8,13.73189,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,75.33212,9.111206,2.079442,3.811962,1 +11,1,0,0,1,125505,1,9055.211,7.827516,0,12,1,25.77938,1.396883,0,0,0,27.17626,0,0,0,2,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,1,0,0,79.24362,9.111206,2.079442,3.302344,1 +11,1,0,0,2,125505,1,9055.211,8.827516,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,1,0,0,79.24362,9.111206,2.079442,,0 +11,1,0,0,3,125505,1,9055.211,9.827516,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,1,0,0,79.24362,9.111206,2.079442,,0 +11,1,0,0,4,125505,1,9055.211,10.82752,0,12,1,5.532504,0,0,0,0,5.532504,0,0,0,1,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,1,0,0,79.24362,9.111206,2.079442,1.71064,1 +11,1,0,0,5,125505,1,9055.211,11.82752,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,1,0,0,79.24362,9.111206,2.079442,,0 +11,1,0,0,1,125506,1,9055.211,14.91307,0,12,1,31.65468,1.318945,0,0,0,32.97362,0,0,0,2,0,8,80,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,75.33212,9.111206,2.079442,3.495708,1 +11,1,0,0,2,125506,1,9055.211,15.91307,0,12,1,190.0986,11.74699,0,0,0,201.8456,0,0,0,2,0,8,80,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,75.33212,9.111206,2.079442,5.307503,1 +11,1,0,0,3,125506,1,9055.211,16.91307,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,80,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,75.33212,9.111206,2.079442,,0 +11,1,0,0,4,125506,1,9055.211,17.91307,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,80,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,75.33212,9.111206,2.079442,,0 +11,1,0,0,5,125506,1,9055.211,18.91307,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,80,13.73189,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,75.33212,9.111206,2.079442,,0 +11,1,0,0,1,125507,1,9055.211,37.17728,0,3,1,0,0,0,0,0,0,0,0,0,0,0,8,73.8,13.73189,0,,0,0,0,0,2.079442,0,0,0,0,1,0,0,62.82508,9.111206,2.079442,,0 +11,1,0,0,2,125507,1,9055.211,38.17728,0,3,1,8.214677,4.791895,0,0,699.9124,712.9189,1,0,0,1,0,8,73.8,13.73189,0,,0,0,0,0,2.079442,0,0,0,0,1,0,0,62.82508,9.111206,2.079442,6.569368,1 +11,1,0,0,3,125507,1,9055.211,39.17728,0,3,1,0,0,0,0,0,0,0,0,0,0,0,8,73.8,13.73189,0,,0,0,0,0,2.079442,0,0,0,0,1,0,0,62.82508,9.111206,2.079442,,0 +11,1,0,0,4,125507,1,9055.211,40.17728,0,3,1,28.5846,5.048409,0,0,0,33.63301,0,0,0,6,0,8,73.8,13.73189,0,,0,0,0,0,2.079442,0,0,0,0,1,0,0,62.82508,9.111206,2.079442,3.515508,1 +11,1,0,0,5,125507,1,9055.211,41.17728,0,3,1,0,0,0,0,0,0,0,0,0,0,0,8,73.8,13.73189,0,,0,0,0,0,2.079442,0,0,0,0,1,0,0,62.82508,9.111206,2.079442,,0 +11,1,0,0,1,125520,1,9542.002,13.06776,1,8,1,23.79536,8.090423,0,0,0,31.88578,0,0,0,3,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,1,0,0,78.41846,9.163564,1.098612,3.46216,1 +11,1,0,0,2,125520,1,9542.002,14.06776,1,8,1,45.18236,8.111051,0,0,0,53.29342,0,0,0,4,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,1,0,0,78.41846,9.163564,1.098612,3.975813,1 +11,1,0,0,3,125520,1,9542.002,15.06776,1,8,1,77.05649,6.417245,0,0,0,83.47374,0,0,0,5,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,1,0,0,78.41846,9.163564,1.098612,4.424532,1 +11,1,0,0,1,125521,1,9542.002,55.04175,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,98.7,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,1,0,66.12138,9.163564,1.098612,,0 +11,1,0,0,2,125521,1,9542.002,56.04175,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,98.7,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,1,0,66.12138,9.163564,1.098612,,0 +11,1,0,0,3,125521,1,9542.002,57.04175,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,98.7,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,1,0,66.12138,9.163564,1.098612,,0 +11,1,0,0,1,125522,1,9542.002,46.06982,1,8,1,52.94468,108.6615,0,0,0,161.6062,0,0,0,9,0,3,91.3,13.73189,1,,0,0,0,0,1.098612,0,0,0,0,0,1,0,61.18452,9.163564,1.098612,5.085163,1 +11,1,0,0,2,125522,1,9542.002,47.06982,1,8,1,59.88024,77.16386,0,0,0,137.0441,0,0,0,9,0,3,91.3,13.73189,1,,0,0,0,0,1.098612,0,0,0,0,0,1,0,61.18452,9.163564,1.098612,4.920303,1 +11,1,0,0,3,125522,1,9542.002,48.06982,1,8,1,90.68385,107.5322,0,0,0,198.216,0,0,0,10,0,3,91.3,13.73189,1,,0,0,0,0,1.098612,0,0,0,0,0,1,0,61.18452,9.163564,1.098612,5.289358,1 +5,1,25,0,1,125535,1,4560.794,54.19576,1,9,1,28.17746,0,0,0,0,28.17746,0,0,0,2,0,1,81.3,13.73189,0,,305,305,0,0,0,5.720312,0,3.258096,7.106606,0,1,0,62.11581,8.425471,0,3.338522,1 +5,1,25,0,2,125535,1,4560.794,55.19576,1,9,1,89.12924,14.40307,84.12924,0,0,187.6616,0,0,0,5,0,1,81.3,13.73189,0,,305,305,0,0,0,5.720312,0,3.258096,7.106606,0,1,0,62.11581,8.425471,0,5.23464,1 +5,1,25,0,3,125535,1,4560.794,56.19576,1,9,1,159.1022,0,0,0,54.86284,213.9651,1,1,0,9,0,1,81.3,13.73189,0,,305,305,0,0,0,5.720312,0,3.258096,7.106606,0,1,0,62.11581,8.425471,0,5.365813,1 +5,1,25,0,4,125535,1,4560.794,57.19576,1,9,1,1629.986,87.47349,369.29,0,10612.44,12699.19,6,0,0,48,99,1,81.3,13.73189,0,,305,305,0,0,0,5.720312,0,3.258096,7.106606,0,1,0,62.11581,8.425471,0,9.449294,1 +5,1,25,0,5,125535,1,4560.794,58.19576,1,9,.2684931,1913.957,74.28693,70.22429,0,445.6665,2504.135,1,0,0,8,78,1,81.3,13.73189,0,,305,305,0,0,0,5.720312,0,3.258096,7.106606,0,1,0,62.11581,8.425471,0,7.825698,1 +3,1,100,1,1,125558,0,10174.32,14.47775,1,12,1,34.50327,47.81678,0,0,0,82.32005,0,0,0,5,0,5,40,4.3,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,73.93777,9.22772,1.609438,4.410614,1 +3,1,100,1,2,125558,0,10174.32,15.47775,1,12,1,53.89222,16.84812,0,0,0,70.74034,0,0,0,8,0,5,40,4.3,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,73.93777,9.22772,1.609438,4.259016,1 +3,1,100,1,3,125558,0,10174.32,16.47775,1,12,1,96.25867,20.9663,0,0,0,117.225,0,0,0,14,0,5,40,4.3,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,73.93777,9.22772,1.609438,4.764095,1 +3,1,100,1,1,125559,0,10174.32,11.84668,1,12,1,45.50863,13.48602,0,0,0,58.99464,0,0,0,5,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,83.01885,9.22772,1.609438,4.077446,1 +3,1,100,1,2,125559,0,10174.32,12.84668,1,12,1,113.337,22.43876,34.69788,0,0,170.4736,0,0,0,10,1,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,83.01885,9.22772,1.609438,5.13858,1 +3,1,100,1,3,125559,0,10174.32,13.84668,1,12,1,36.05054,9.088206,11.72943,0,0,56.86819,0,0,0,4,1,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,83.01885,9.22772,1.609438,4.040736,1 +3,1,100,1,1,125560,0,10174.32,4.596851,1,12,1,52.94468,21.56454,0,0,0,74.50922,0,0,0,7,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,79.58723,9.22772,1.609438,4.310923,1 +3,1,100,1,2,125560,0,10174.32,5.596851,1,12,1,62.0577,19.53185,0,0,0,81.58955,0,0,0,6,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,79.58723,9.22772,1.609438,4.401701,1 +3,1,100,1,3,125560,0,10174.32,6.596851,1,12,1,27.99802,18.76611,0,0,0,46.76412,0,0,0,3,1,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,79.58723,9.22772,1.609438,3.845116,1 +3,1,100,1,1,125561,0,10174.32,35.14032,1,12,1,21.71327,2.492564,0,0,0,24.20583,0,0,0,2,0,5,65.3,21.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,78.3196,9.22772,1.609438,3.186594,1 +3,1,100,1,2,125561,0,10174.32,36.14032,1,12,1,15.78661,4.284159,0,0,0,20.07077,0,0,0,2,0,5,65.3,21.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,78.3196,9.22772,1.609438,2.999264,1 +3,1,100,1,3,125561,0,10174.32,37.14032,1,12,1,20.6888,9.811695,0,0,0,30.5005,0,0,0,2,0,5,65.3,21.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,78.3196,9.22772,1.609438,3.417743,1 +3,1,100,1,1,125562,0,10174.32,37.46749,0,12,1,21.41582,.9399167,0,0,0,22.35574,0,0,0,1,0,5,72.6,0,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,77.42842,9.22772,1.609438,3.107083,1 +3,1,100,1,2,125562,0,10174.32,38.46749,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,72.6,0,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,77.42842,9.22772,1.609438,,0 +3,1,100,1,3,125562,0,10174.32,39.46749,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,72.6,0,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,77.42842,9.22772,1.609438,,0 +7,1,25,1,1,125563,0,5212.159,56.80493,0,11,1,384.89,464.2772,0,0,380.3688,1229.536,1,0,0,30,0,2,41.1,43.5,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,1,47.30153,8.558941,.6931472,7.114392,1 +7,1,25,1,2,125563,0,5212.159,57.80493,0,11,1,219.3794,246.9243,0,0,0,466.3037,0,0,0,25,0,2,41.1,43.5,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,1,47.30153,8.558941,.6931472,6.144837,1 +7,1,25,1,3,125563,0,5212.159,58.80493,0,11,1,172.9435,265.892,0,0,3273.32,3712.156,3,0,0,18,1,2,41.1,43.5,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,1,47.30153,8.558941,.6931472,8.219368,1 +7,1,25,1,4,125563,0,5212.159,59.80493,0,11,1,156.0349,325.6631,30.74805,0,0,512.4461,0,0,0,15,1,2,41.1,43.5,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,1,47.30153,8.558941,.6931472,6.239195,1 +7,1,25,1,5,125563,0,5212.159,60.80493,0,11,1,216.6597,202.5452,23.55911,0,3844.867,4287.631,5,0,0,20,0,2,41.1,43.5,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,1,47.30153,8.558941,.6931472,8.36349,1 +7,1,25,1,1,125564,0,5212.159,46.55989,1,12,1,685.9429,402.8673,6.912552,0,2913.075,4008.798,1,0,0,45,1,2,52.6,43.5,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,65.82284,8.558941,.6931472,8.296247,1 +7,1,25,1,2,125564,0,5212.159,47.55989,1,12,1,211.4861,452.5749,0,0,0,664.061,0,0,0,28,0,2,52.6,43.5,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,65.82284,8.558941,.6931472,6.498374,1 +7,1,25,1,3,125564,0,5212.159,48.55989,1,12,1,144.5441,268.776,25.11397,0,0,438.4341,0,0,0,14,1,2,52.6,43.5,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,65.82284,8.558941,.6931472,6.08321,1 +7,1,25,1,4,125564,0,5212.159,49.55989,1,12,1,196.2827,228.7334,3.212483,0,3800.069,4228.297,2,0,0,14,3,2,52.6,43.5,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,65.82284,8.558941,.6931472,8.349555,1 +7,1,25,1,5,125564,0,5212.159,50.55989,1,12,1,489.6929,264.2869,33.65587,0,2078.502,2866.138,3,0,0,28,5,2,52.6,43.5,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,65.82284,8.558941,.6931472,7.960721,1 +9,1,50,1,1,125567,0,10021.71,36.75565,1,17,1,22.01071,7.061273,0,0,0,29.07198,0,0,0,3,0,4,62.1,13,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.82717,9.212609,1.386294,3.369775,1 +9,1,50,1,2,125567,0,10021.71,37.75565,1,17,1,0,0,0,0,0,0,0,0,0,0,0,4,62.1,13,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.82717,9.212609,1.386294,,0 +9,1,50,1,3,125567,0,10021.71,38.75565,1,17,1,120.4163,3.320119,1.48662,14.8662,0,125.223,0,0,3,3,0,4,62.1,13,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.82717,9.212609,1.386294,4.830096,1 +9,1,50,1,1,125568,0,10021.71,6.329911,0,17,1,19.03629,2.825699,0,0,0,21.86199,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,85.78433,9.212609,1.386294,3.084749,1 +9,1,50,1,2,125568,0,10021.71,7.329911,0,17,1,34.02286,0,0,0,0,34.02286,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,85.78433,9.212609,1.386294,3.527033,1 +9,1,50,1,3,125568,0,10021.71,8.329911,0,17,1,12.3885,0,0,0,0,12.3885,0,0,0,0,1,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,85.78433,9.212609,1.386294,2.516769,1 +9,1,50,1,1,125569,0,10021.71,13.42642,1,17,1,24.98513,1.784652,0,0,0,26.76978,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,85.27036,9.212609,1.386294,3.287274,1 +9,1,50,1,2,125569,0,10021.71,14.42642,1,17,1,6.53239,2.177463,0,0,0,8.709853,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,85.27036,9.212609,1.386294,2.164455,1 +9,1,50,1,3,125569,0,10021.71,15.42642,1,17,1,14.8662,6.194252,0,14.8662,0,21.06046,0,0,3,3,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,85.27036,9.212609,1.386294,3.047397,1 +9,1,50,1,1,125570,0,10021.71,42.07529,0,10,1,14.8721,0,19.03629,0,0,33.90839,0,0,0,0,1,4,74.7,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,69.59772,9.212609,1.386294,3.523662,1 +9,1,50,1,2,125570,0,10021.71,43.07529,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,74.7,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,69.59772,9.212609,1.386294,,0 +9,1,50,1,3,125570,0,10021.71,44.07529,0,10,1,90.68385,1.73439,0,14.8662,0,92.41824,0,0,3,7,0,4,74.7,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,69.59772,9.212609,1.386294,4.526324,1 +2,1,100,1,1,125574,0,5724.566,27.76728,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,77.9,0,0,,359,359,0,0,1.098612,5.883322,1,0,0,1,0,0,72.43401,8.652697,1.098612,,0 +2,1,100,1,2,125574,0,5724.566,28.76728,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,77.9,0,0,,359,359,0,0,1.098612,5.883322,1,0,0,1,0,0,72.43401,8.652697,1.098612,,0 +2,1,100,1,3,125574,0,5724.566,29.76728,1,13,1,10.90188,0,0,0,0,10.90188,0,0,0,1,0,3,77.9,0,0,,359,359,0,0,1.098612,5.883322,1,0,0,1,0,0,72.43401,8.652697,1.098612,2.388936,1 +2,1,100,1,1,125575,0,5724.566,8.008214,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,359,359,1,0,1.098612,5.883322,1,0,0,0,0,0,82.44528,8.652697,1.098612,,0 +2,1,100,1,2,125575,0,5724.566,9.008214,0,13,1,34.86663,0,0,0,0,34.86663,0,0,0,0,1,3,74.36826,13.73189,0,,359,359,1,0,1.098612,5.883322,1,0,0,0,0,0,82.44528,8.652697,1.098612,3.55153,1 +2,1,100,1,3,125575,0,5724.566,10.00821,0,13,1,9.910803,.9910803,0,0,0,10.90188,0,0,0,2,0,3,74.36826,13.73189,0,,359,359,1,0,1.098612,5.883322,1,0,0,0,0,0,82.44528,8.652697,1.098612,2.388936,1 +2,1,100,1,1,125576,0,5724.566,27.1102,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,62.1,26.1,0,,359,359,0,0,1.098612,5.883322,1,0,0,0,0,0,69.46257,8.652697,1.098612,,0 +2,1,100,1,2,125576,0,5724.566,28.1102,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,62.1,26.1,0,,359,359,0,0,1.098612,5.883322,1,0,0,0,0,0,69.46257,8.652697,1.098612,,0 +2,1,100,1,3,125576,0,5724.566,29.1102,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,62.1,26.1,0,,359,359,0,0,1.098612,5.883322,1,0,0,0,0,0,69.46257,8.652697,1.098612,,0 +2,1,100,1,1,125586,0,18062.99,17.12252,1,12,1,21.41582,4.491374,0,0,0,25.9072,0,0,0,2,1,6,56.8,8.7,0,,1000,1000,1,1,1.791759,6.907755,1,0,0,1,0,0,68.8233,9.801676,1.791759,3.254521,1 +2,1,100,1,2,125586,0,18062.99,18.12252,1,12,1,53.62003,1.360915,.9526402,0,0,55.93359,0,0,0,2,0,6,56.8,8.7,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,68.8233,9.801676,1.791759,4.024165,1 +2,1,100,1,1,125587,0,18062.99,19.14305,1,12,1,152.1594,51.43367,33.56931,0,1869.024,2106.187,2,0,0,7,1,6,45.3,26.1,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,0,1,0,57.79599,9.801676,1.791759,7.652634,1 +2,1,100,1,2,125587,0,18062.99,20.14305,1,12,1,40.55525,24.81764,0,0,0,65.37289,0,0,0,4,0,6,45.3,26.1,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,0,1,0,57.79599,9.801676,1.791759,4.180108,1 +2,1,100,1,3,125587,0,18062.99,21.14305,1,12,1,117.6908,39.4004,37.28444,0,0,194.3756,0,0,0,9,1,5,45.3,26.1,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,1,0,57.79599,9.801676,1.609438,5.269793,1 +2,1,100,1,4,125587,0,18062.99,22.14305,1,12,1,80.771,33.29509,0,0,0,114.0661,0,0,0,10,0,5,45.3,26.1,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,1,0,57.79599,9.801676,1.609438,4.736778,1 +2,1,100,1,5,125587,0,18062.99,23.14305,1,12,1,260.2019,164.2785,32.5326,0,732.0782,1189.091,1,0,0,9,1,5,45.3,26.1,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,1,0,57.79599,9.801676,1.609438,7.080945,1 +2,1,100,1,1,125588,0,18062.99,43.6961,0,12,1,45.21119,45.09221,62.14753,0,0,152.4509,0,0,0,5,2,6,77.9,8.7,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,64.31509,9.801676,1.791759,5.026843,1 +2,1,100,1,2,125588,0,18062.99,44.6961,0,12,1,117.583,71.36636,0,0,0,188.9494,0,0,0,9,6,6,77.9,8.7,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,64.31509,9.801676,1.791759,5.241479,1 +2,1,100,1,3,125588,0,18062.99,45.6961,0,12,1,100.0991,27.70069,0,0,0,127.7998,0,0,0,7,0,5,77.9,8.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,64.31509,9.801676,1.609438,4.850465,1 +2,1,100,1,4,125588,0,18062.99,46.6961,0,12,1,16.98027,43.23084,0,0,0,60.21111,0,0,0,3,0,5,77.9,8.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,64.31509,9.801676,1.609438,4.097857,1 +2,1,100,1,5,125588,0,18062.99,47.6961,0,12,1,37.86285,47.72823,50.99706,0,0,136.5881,0,0,0,4,1,5,77.9,8.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,64.31509,9.801676,1.609438,4.91697,1 +2,1,100,1,1,125589,0,18062.99,39.83847,1,12,1,29.14932,0,42.27246,0,0,71.42178,0,0,0,3,1,6,81.1,8.7,1,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,72.26447,9.801676,1.791759,4.268603,1 +2,1,100,1,2,125589,0,18062.99,40.83847,1,12,1,6.53239,2.384322,0,0,0,8.916712,0,0,0,3,0,6,81.1,8.7,1,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,72.26447,9.801676,1.791759,2.187927,1 +2,1,100,1,3,125589,0,18062.99,41.83847,1,12,1,20.31715,3.508424,37.80476,0,0,61.63033,0,0,0,1,1,5,81.1,8.7,1,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,72.26447,9.801676,1.609438,4.121154,1 +2,1,100,1,4,125589,0,18062.99,42.83847,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.1,8.7,1,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,72.26447,9.801676,1.609438,,0 +2,1,100,1,5,125589,0,18062.99,43.83847,1,12,1,174.5688,0,43.08372,0,0,217.6525,0,0,0,3,1,5,81.1,8.7,1,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,72.26447,9.801676,1.609438,5.3829,1 +2,1,100,1,1,125590,0,18062.99,17.12252,1,12,1,35.69304,0,23.00416,0,0,58.6972,0,0,0,4,1,6,76.8,13,0,,1000,1000,1,1,1.791759,6.907755,1,0,0,1,0,0,68.8233,9.801676,1.791759,4.072392,1 +2,1,100,1,2,125590,0,18062.99,18.12252,1,12,1,11.43168,0,0,0,0,11.43168,0,0,0,1,0,6,76.8,13,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,68.8233,9.801676,1.791759,2.436388,1 +2,1,100,1,3,125590,0,18062.99,19.12252,1,12,1,36.66997,5.277503,14.4995,0,0,56.44698,0,0,0,1,1,5,76.8,13,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,68.8233,9.801676,1.609438,4.033302,1 +2,1,100,1,4,125590,0,18062.99,20.12252,1,12,1,36.71409,2.225792,0,0,0,38.93988,0,0,0,3,0,5,76.8,13,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,68.8233,9.801676,1.609438,3.662019,1 +2,1,100,1,5,125590,0,18062.99,21.12252,1,12,1,30.71098,6.327303,29.69289,0,0,66.73117,0,0,0,2,1,5,76.8,13,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,68.8233,9.801676,1.609438,4.200672,1 +2,1,100,1,1,125591,0,18062.99,13.03765,1,12,1,83.28376,3.450327,398.5842,0,1679.494,2164.813,1,0,0,1,2,6,74.36826,13.73189,1,,1000,1000,1,1,1.791759,6.907755,1,0,0,0,1,0,66.11668,9.801676,1.791759,7.680089,1 +2,1,100,1,2,125591,0,18062.99,14.03765,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,1,,1000,1000,1,1,1.791759,6.907755,1,0,0,0,1,0,66.11668,9.801676,1.791759,,0 +2,1,100,1,3,125591,0,18062.99,15.03765,1,12,1,3.468781,0,0,0,0,3.468781,0,0,0,1,0,5,74.36826,13.73189,1,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,1,0,66.11668,9.801676,1.609438,1.243803,1 +2,1,100,1,4,125591,0,18062.99,16.03765,1,12,1,39.23818,5.598898,0,0,0,44.83708,0,0,0,3,0,5,74.36826,13.73189,1,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,1,0,66.11668,9.801676,1.609438,3.803035,1 +2,1,100,1,5,125591,0,18062.99,17.03765,1,12,1,31.55238,0,30.33656,0,0,61.88894,0,0,0,1,1,5,74.36826,13.73189,1,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,1,0,66.11668,9.801676,1.609438,4.125341,1 +11,1,0,1,1,125613,0,1388.958,20.10404,0,9,1,20.5235,36.35931,0,0,0,56.88281,0,0,0,2,0,1,46.3,17.4,1,,0,0,0,0,0,0,0,0,0,1,0,0,68.92193,7.237029,0,4.040993,1 +11,1,0,1,2,125613,0,1388.958,21.10404,0,9,1,34.38214,0,0,0,0,34.38214,0,0,0,1,0,1,46.3,17.4,1,,0,0,0,0,0,0,0,0,0,1,0,0,68.92193,7.237029,0,3.537537,1 +11,1,0,1,3,125613,0,1388.958,22.10404,0,9,1,37.41328,5.649158,0,0,0,43.06244,0,0,0,3,0,1,46.3,17.4,1,,0,0,0,0,0,0,0,0,0,1,0,0,68.92193,7.237029,0,3.762651,1 +11,1,0,1,4,125613,0,1388.958,23.10404,0,9,1,0,0,0,0,0,0,0,0,0,0,0,1,46.3,17.4,1,,0,0,0,0,0,0,0,0,0,1,0,0,68.92193,7.237029,0,,0 +11,1,0,1,5,125613,0,1388.958,24.10404,0,9,1,21.03492,0,0,0,0,21.03492,0,0,0,1,0,1,46.3,17.4,1,,0,0,0,0,0,0,0,0,0,1,0,0,68.92193,7.237029,0,3.046184,1 +11,1,0,1,1,125614,0,3273.573,57.48391,1,8,1,0,45.87745,0,26.76978,0,45.87745,0,0,3,0,0,1,83.2,13,0,,0,0,0,0,0,0,0,0,0,0,1,0,53.37024,8.093943,0,3.825974,1 +11,1,0,1,2,125614,0,3273.573,58.48391,1,8,1,0,32.69461,0,32.66195,0,32.69461,0,0,4,0,0,1,83.2,13,0,,0,0,0,0,0,0,0,0,0,0,1,0,53.37024,8.093943,0,3.48721,1 +11,1,0,1,3,125614,0,3273.573,59.48391,1,8,1,0,33.05748,0,22.29931,0,33.05748,0,0,3,0,0,1,83.2,13,0,,0,0,0,0,0,0,0,0,0,0,1,0,53.37024,8.093943,0,3.498248,1 +11,1,0,1,4,125614,0,3273.573,60.48391,1,8,1,0,35.09867,0,22.94631,0,35.09867,0,0,3,0,0,1,83.2,13,0,,0,0,0,0,0,0,0,0,0,0,1,0,53.37024,8.093943,0,3.558163,1 +11,1,0,1,5,125614,0,3273.573,61.48391,1,8,1,0,35.12411,0,33.65587,0,35.12411,0,0,4,0,0,1,83.2,13,0,,0,0,0,0,0,0,0,0,0,0,1,0,53.37024,8.093943,0,3.558888,1 +6,1,25,1,1,125617,0,9542.002,6.817248,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,72.63244,9.163564,1.791759,,0 +6,1,25,1,2,125617,0,9542.002,7.817248,0,12,1,2.695418,0,0,0,0,2.695418,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,72.63244,9.163564,1.791759,.9915532,1 +6,1,25,1,3,125617,0,9542.002,8.817248,0,12,1,67.66585,0,4.570024,0,0,72.23587,0,0,0,3,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,72.63244,9.163564,1.791759,4.279937,1 +6,1,25,1,4,125617,0,9542.002,9.817248,0,12,1,24.38469,0,0,0,782.0739,806.4585,1,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,72.63244,9.163564,1.791759,6.692652,1 +6,1,25,1,5,125617,0,9542.002,10.81725,0,12,1,236.9737,0,0,0,0,236.9737,0,0,0,4,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,72.63244,9.163564,1.791759,5.467949,1 +6,1,25,1,1,125618,0,9542.002,3.693361,1,12,1,45.78917,0,27.07892,0,0,72.86808,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.258096,8.294049,1,0,0,68.68684,9.163564,1.791759,4.288651,1 +6,1,25,1,2,125618,0,9542.002,4.693361,1,12,1,2.695418,0,0,0,0,2.695418,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.258096,8.294049,1,0,0,68.68684,9.163564,1.791759,.9915532,1 +6,1,25,1,3,125618,0,9542.002,5.693361,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.258096,8.294049,1,0,0,68.68684,9.163564,1.791759,,0 +6,1,25,1,4,125618,0,9542.002,6.693361,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.258096,8.294049,1,0,0,68.68684,9.163564,1.791759,,0 +6,1,25,1,5,125618,0,9542.002,7.693361,1,12,1,10.42101,0,0,0,0,10.42101,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.258096,8.294049,1,0,0,68.68684,9.163564,1.791759,2.343824,1 +6,1,25,1,1,125619,0,9542.002,4.807666,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,69.20081,9.163564,1.791759,,0 +6,1,25,1,2,125619,0,9542.002,5.807666,0,12,1,2.695418,0,0,0,0,2.695418,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,69.20081,9.163564,1.791759,.9915532,1 +6,1,25,1,3,125619,0,9542.002,6.807666,0,12,1,14.74201,0,23.48894,0,0,38.23096,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,69.20081,9.163564,1.791759,3.643646,1 +6,1,25,1,4,125619,0,9542.002,7.807666,0,12,1,60.28715,0,14.28897,0,0,74.57612,0,0,0,3,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,69.20081,9.163564,1.791759,4.311821,1 +6,1,25,1,5,125619,0,9542.002,8.807666,0,12,1,10.42101,0,20.90871,0,0,31.32972,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,69.20081,9.163564,1.791759,3.444567,1 +6,1,25,1,1,125620,0,9542.002,35.6961,0,10,1,0,0,33.23322,0,0,33.23322,0,0,0,0,0,6,58.9,21.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,67.52351,9.163564,1.791759,3.50355,1 +6,1,25,1,2,125620,0,9542.002,36.6961,0,10,1,140.9704,7.385445,0,0,0,148.3558,0,0,0,3,0,6,58.9,21.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,67.52351,9.163564,1.791759,4.999613,1 +6,1,25,1,3,125620,0,9542.002,37.6961,0,10,1,35.74939,0,0,0,0,35.74939,0,0,0,1,0,6,58.9,21.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,67.52351,9.163564,1.791759,3.576533,1 +6,1,25,1,4,125620,0,9542.002,38.6961,0,10,1,31.9052,0,0,0,675.6426,707.5479,1,0,0,0,3,6,58.9,21.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,67.52351,9.163564,1.791759,6.561805,1 +6,1,25,1,5,125620,0,9542.002,39.6961,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,58.9,21.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,67.52351,9.163564,1.791759,,0 +6,1,25,1,1,125621,0,9542.002,26.33539,1,12,1,0,3.239105,0,0,0,3.239105,0,0,0,0,0,6,49.5,21.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,71.57712,9.163564,1.791759,1.175297,1 +6,1,25,1,2,125621,0,9542.002,27.33539,1,12,1,77.35849,5.175202,0,0,0,82.53369,0,0,0,4,9,6,49.5,21.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,71.57712,9.163564,1.791759,4.413207,1 +6,1,25,1,3,125621,0,9542.002,28.33539,1,12,1,78.50123,1.719902,0,0,1031.071,1111.292,1,0,0,2,0,6,49.5,21.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,71.57712,9.163564,1.791759,7.013279,1 +6,1,25,1,4,125621,0,9542.002,29.33539,1,12,1,48.76937,0,0,0,0,48.76937,0,0,0,2,2,6,49.5,21.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,71.57712,9.163564,1.791759,3.887102,1 +6,1,25,1,5,125621,0,9542.002,30.33539,1,12,1,10.42101,0,0,0,0,10.42101,0,0,0,0,0,6,49.5,21.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,71.57712,9.163564,1.791759,2.343824,1 +2,1,100,0,1,125635,0,6916.232,46.73785,1,9,1,62.42638,12.60306,29.44641,0,0,104.4759,0,0,0,2,2,3,73.8,13.73189,0,,300,300,0,0,1.098612,5.703783,1,0,0,1,0,0,67.80335,8.841771,1.098612,4.648956,1 +2,1,100,0,2,125635,0,6916.232,47.73785,1,9,1,8.625337,2.96496,0,0,0,11.5903,0,0,0,1,0,3,73.8,13.73189,0,,300,300,0,0,1.098612,5.703783,1,0,0,1,0,0,67.80335,8.841771,1.098612,2.450168,1 +2,1,100,0,3,125635,0,6916.232,48.73785,1,9,1,8.845209,6.486486,0,0,0,15.3317,0,0,0,1,0,3,73.8,13.73189,0,,300,300,0,0,1.098612,5.703783,1,0,0,1,0,0,67.80335,8.841771,1.098612,2.729922,1 +2,1,100,0,1,125636,0,6916.232,10.32717,0,9,1,1.766784,15.22379,0,0,0,16.99058,0,0,0,0,0,3,74.36826,13.73189,0,,300,300,1,0,1.098612,5.703783,1,0,0,1,0,0,75.82542,8.841771,1.098612,2.832659,1 +2,1,100,0,2,125636,0,6916.232,11.32717,0,9,1,54.44744,14.76011,0,0,0,69.20755,0,0,0,5,0,3,74.36826,13.73189,0,,300,300,1,0,1.098612,5.703783,1,0,0,1,0,0,75.82542,8.841771,1.098612,4.23711,1 +2,1,100,0,3,125636,0,6916.232,12.32717,0,9,1,4.422605,4.29484,0,0,0,8.717444,0,0,0,1,0,3,74.36826,13.73189,0,,300,300,1,0,1.098612,5.703783,1,0,0,1,0,0,75.82542,8.841771,1.098612,2.165326,1 +2,1,100,0,1,125637,0,6916.232,53.96851,0,11,1,141.9317,27.04947,0,0,0,168.9812,0,0,0,6,3,3,85,13.73189,0,,300,300,0,0,1.098612,5.703783,1,0,0,0,0,0,72.67507,8.841771,1.098612,5.129787,1 +2,1,100,0,2,125637,0,6916.232,54.96851,0,11,1,7.54717,0,0,0,0,7.54717,0,0,0,1,0,3,85,13.73189,0,,300,300,0,0,1.098612,5.703783,1,0,0,0,0,0,72.67507,8.841771,1.098612,2.021173,1 +2,1,100,0,3,125637,0,6916.232,55.96851,0,11,1,7.371007,11.08108,0,0,0,18.45209,0,0,0,3,0,3,85,13.73189,0,,300,300,0,0,1.098612,5.703783,1,0,0,0,0,0,72.67507,8.841771,1.098612,2.915178,1 +11,1,0,1,1,125658,0,9201.975,14.49144,1,12,1,32.97998,28.15077,0,0,0,61.13074,0,0,0,4,0,6,80,4.3,0,,0,0,1,1,1.791759,0,0,0,0,0,0,0,75.07128,9.127282,1.791759,4.113015,1 +11,1,0,1,2,125658,0,9201.975,15.49144,1,12,1,18.86792,2.156334,0,0,0,21.02426,0,0,0,2,0,6,80,4.3,0,,0,0,1,1,1.791759,0,0,0,0,0,0,0,75.07128,9.127282,1.791759,3.045677,1 +11,1,0,1,3,125658,0,9201.975,16.49144,1,12,1,19.53317,0,2.702703,0,0,22.23587,0,0,0,1,0,6,80,4.3,0,,0,0,1,1,1.791759,0,0,0,0,0,0,0,75.07128,9.127282,1.791759,3.101707,1 +11,1,0,1,1,125659,0,9201.975,44.49829,0,12,1,0,3.239105,22.77385,0,0,26.01296,0,0,0,0,0,6,91.6,8.7,0,,0,0,0,0,1.791759,0,0,0,0,0,0,0,76.77976,9.127282,1.791759,3.258595,1 +11,1,0,1,2,125659,0,9201.975,45.49829,0,12,1,5.390836,4.636118,0,0,0,10.02695,0,0,0,1,0,6,91.6,8.7,0,,0,0,0,0,1.791759,0,0,0,0,0,0,0,76.77976,9.127282,1.791759,2.305277,1 +11,1,0,1,3,125659,0,9201.975,46.49829,0,12,1,12.28501,0,44.71745,0,0,57.00246,0,0,0,1,0,6,91.6,8.7,0,,0,0,0,0,1.791759,0,0,0,0,0,0,0,76.77976,9.127282,1.791759,4.043094,1 +11,1,0,1,1,125660,0,9201.975,42.95688,1,12,1,14.7232,10.24735,36.93168,0,0,61.90224,0,0,0,1,0,6,93.7,4.3,0,,0,0,0,0,1.791759,0,0,0,0,0,0,0,78.40642,9.127282,1.791759,4.125556,1 +11,1,0,1,2,125660,0,9201.975,43.95688,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,93.7,4.3,0,,0,0,0,0,1.791759,0,0,0,0,0,0,0,78.40642,9.127282,1.791759,,0 +11,1,0,1,3,125660,0,9201.975,44.95688,1,12,1,17.07617,0,42.75184,0,0,59.82801,0,0,0,1,0,6,93.7,4.3,0,,0,0,0,0,1.791759,0,0,0,0,0,0,0,78.40642,9.127282,1.791759,4.091474,1 +11,1,0,1,1,125661,0,9201.975,12.38604,0,12,1,62.42638,1.766784,0,0,0,64.19317,0,0,0,4,0,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,0,0,0,0,0,85.15327,9.127282,1.791759,4.161897,1 +11,1,0,1,2,125661,0,9201.975,13.38604,0,12,1,26.84636,0,1.293801,0,0,28.14016,0,0,0,0,1,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,0,0,0,0,0,85.15327,9.127282,1.791759,3.337198,1 +11,1,0,1,3,125661,0,9201.975,14.38604,0,12,1,80.95823,0,1.351351,0,0,82.30959,0,0,0,2,1,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,0,0,0,0,0,85.15327,9.127282,1.791759,4.410488,1 +11,1,0,1,1,125662,0,9201.975,16.52019,0,12,1,8.833922,0,14.13428,0,0,22.9682,0,0,0,1,0,6,87.4,4.3,0,,0,0,1,0,1.791759,0,0,0,0,0,0,0,80.40798,9.127282,1.791759,3.134111,1 +11,1,0,1,2,125662,0,9201.975,17.52019,0,12,1,76.54987,61.83289,15.16981,0,0,153.5526,0,0,0,8,0,6,87.4,4.3,0,,0,0,1,0,1.791759,0,0,0,0,0,0,0,80.40798,9.127282,1.791759,5.034043,1 +11,1,0,1,3,125662,0,9201.975,18.52019,0,12,1,51.00246,7.518427,0,0,0,58.52089,0,0,0,3,0,6,87.4,4.3,0,,0,0,0,0,1.791759,0,0,0,0,0,0,0,80.40798,9.127282,1.791759,4.069384,1 +11,1,0,0,1,125663,0,9201.975,17.7577,1,12,1,88.19199,10.95406,0,0,0,99.14606,0,0,0,4,1,6,84.2,8.7,0,,0,0,1,1,1.791759,0,0,0,0,0,0,0,75.07128,9.127282,1.791759,4.596594,1 +11,1,0,0,2,125663,0,9201.975,18.7577,1,12,1,4.312668,0,0,0,0,4.312668,0,0,0,0,0,6,84.2,8.7,0,,0,0,0,0,1.791759,0,0,0,0,0,0,0,75.07128,9.127282,1.791759,1.461557,1 +11,1,0,0,3,125663,0,9201.975,19.7577,1,12,1,25.06142,0,0,0,0,25.06142,0,0,0,1,0,6,84.2,8.7,0,,0,0,0,0,1.791759,0,0,0,0,0,0,0,75.07128,9.127282,1.791759,3.22133,1 +8,1,50,1,1,125664,0,13812.04,52.90349,0,16,1,14.7232,0,32.27326,0,0,46.99647,0,0,0,1,0,2,82.1,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,77.5162,9.533368,.6931472,3.850072,1 +8,1,50,1,2,125664,0,13812.04,53.90349,0,16,1,8.086253,0,0,0,0,8.086253,0,0,0,0,0,2,82.1,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,77.5162,9.533368,.6931472,2.090165,1 +8,1,50,1,3,125664,0,13812.04,54.90349,0,16,1,13.75921,12.01474,10.01474,0,0,35.7887,0,0,0,2,0,2,82.1,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,77.5162,9.533368,.6931472,3.577632,1 +8,1,50,1,4,125664,0,13812.04,55.90349,0,16,1,155.8797,14.19781,0,0,0,170.0775,0,0,0,7,5,2,82.1,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,77.5162,9.533368,.6931472,5.136254,1 +8,1,50,1,5,125664,0,13812.04,56.90349,0,16,1,83.36807,31.82576,26.13589,0,0,141.3297,0,0,0,5,3,2,82.1,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,77.5162,9.533368,.6931472,4.951096,1 +8,1,50,1,1,125665,0,13812.04,50.8063,1,12,1,42.69729,0,46.82568,0,0,89.52296,0,0,0,2,1,2,87.4,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,66.96286,9.533368,.6931472,4.494495,1 +8,1,50,1,2,125665,0,13812.04,51.8063,1,12,1,56.60378,2.695418,15.20755,0,0,74.50674,0,0,0,2,2,2,87.4,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,66.96286,9.533368,.6931472,4.31089,1 +8,1,50,1,3,125665,0,13812.04,52.8063,1,12,1,25.06142,22.89435,0,0,0,47.95577,0,0,0,2,1,2,87.4,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,66.96286,9.533368,.6931472,3.870279,1 +8,1,50,1,4,125665,0,13812.04,53.8063,1,12,1,61.07566,6.800364,41.91431,0,0,109.7903,0,0,0,6,0,2,87.4,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,66.96286,9.533368,.6931472,4.698573,1 +8,1,50,1,5,125665,0,13812.04,54.8063,1,12,1,47.72822,27.10296,0,0,0,74.83118,0,0,0,2,1,2,87.4,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,66.96286,9.533368,.6931472,4.315235,1 +11,1,0,1,1,125666,0,14393.3,37.95756,1,12,1,93.99167,61.64188,29.7442,0,0,185.3777,0,0,0,10,0,4,83.2,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,75.78102,9.574588,1.386294,5.222395,1 +11,1,0,1,2,125666,0,14393.3,38.95756,1,12,1,106.4235,133.3587,26.06968,0,0,265.8519,0,0,0,7,1,4,83.2,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,75.78102,9.574588,1.386294,5.58294,1 +11,1,0,1,3,125666,0,14393.3,39.95756,1,12,1,157.334,97.64619,0,0,0,254.9802,0,0,0,8,0,4,83.2,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,75.78102,9.574588,1.386294,5.541186,1 +11,1,0,1,4,125666,0,14393.3,40.95756,1,12,1,46.35154,77.23267,0,0,0,123.5842,0,0,0,4,0,4,83.2,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,75.78102,9.574588,1.386294,4.816923,1 +11,1,0,1,5,125666,0,14393.3,41.95756,1,12,1,26.92469,77.76609,19.35213,0,0,124.0429,0,0,0,3,0,4,83.2,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,75.78102,9.574588,1.386294,4.820628,1 +11,1,0,1,1,125667,0,14393.3,44.67899,0,16,1,81.49911,8.56633,41.02915,0,0,131.0946,0,0,0,10,0,4,77.9,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,74.46688,9.574588,1.386294,4.875919,1 +11,1,0,1,2,125667,0,14393.3,45.67899,0,16,1,167.6647,45.82471,1.088732,0,0,214.5781,0,0,0,15,0,4,77.9,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,74.46688,9.574588,1.386294,5.368674,1 +11,1,0,1,3,125667,0,14393.3,46.67899,0,16,1,392.4678,36.85332,0,0,0,429.3211,0,0,0,16,0,4,77.9,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,74.46688,9.574588,1.386294,6.062205,1 +11,1,0,1,4,125667,0,14393.3,47.67899,0,16,1,59.43093,24.49289,0,0,0,83.92382,0,0,0,3,0,4,77.9,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,74.46688,9.574588,1.386294,4.42991,1 +11,1,0,1,5,125667,0,14393.3,48.67899,0,16,1,182.6336,19.06184,43.74422,0,0,245.4396,0,0,0,6,0,4,77.9,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,74.46688,9.574588,1.386294,5.503051,1 +11,1,0,1,1,125668,0,14393.3,12.15332,1,12,1,20.82094,0,0,0,0,20.82094,0,0,0,1,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,85.97237,9.574588,1.386294,3.035959,1 +11,1,0,1,2,125668,0,14393.3,13.15332,1,12,1,77.84431,7.234622,23.89222,0,0,108.9711,0,0,0,5,1,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,85.97237,9.574588,1.386294,4.691083,1 +11,1,0,1,3,125668,0,14393.3,14.15332,1,12,1,5.946482,0,0,0,0,5.946482,0,0,0,1,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,85.97237,9.574588,1.386294,1.7828,1 +11,1,0,1,4,125668,0,14393.3,15.15332,1,12,1,62.41395,10.76641,0,0,0,73.18036,0,0,0,5,1,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,85.97237,9.574588,1.386294,4.292927,1 +11,1,0,1,5,125668,0,14393.3,16.15332,1,12,1,94.23643,10.77829,26.33992,0,0,131.3546,0,0,0,14,1,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,85.97237,9.574588,1.386294,4.877901,1 +11,1,0,1,1,125669,0,14393.3,5.067762,0,12,1,41.64188,5.223082,0,0,0,46.86496,0,0,0,2,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,0,0,0,83.05472,9.574588,1.386294,3.84727,1 +11,1,0,1,2,125669,0,14393.3,6.067762,0,12,1,50.08165,1.720196,.8165487,0,0,52.6184,0,0,0,3,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,0,0,0,83.05472,9.574588,1.386294,3.963066,1 +11,1,0,1,3,125669,0,14393.3,7.067762,0,12,1,4.955401,1.233895,0,0,0,6.189296,0,0,0,1,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,0,0,0,83.05472,9.574588,1.386294,1.822821,1 +11,1,0,1,4,125669,0,14393.3,8.067761,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,0,0,0,83.05472,9.574588,1.386294,,0 +11,1,0,1,5,125669,0,14393.3,9.067761,0,12,1,94.44678,3.84939,0,0,0,98.29617,0,0,0,13,1,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,0,0,0,83.05472,9.574588,1.386294,4.587985,1 +11,1,0,0,1,125674,0,14410.96,23.72895,1,16,1,5.995204,0,0,0,0,5.995204,0,0,0,1,0,3,83.8,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,0,0,0,79.16349,9.575813,1.098612,1.79096,1 +11,1,0,0,2,125674,0,14410.96,24.72895,1,16,1,412.5575,31.13363,0,0,0,443.6911,0,0,0,9,0,3,83.8,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,0,0,0,79.16349,9.575813,1.098612,6.095129,1 +11,1,0,0,3,125674,0,14410.96,25.72895,1,16,1,51.07232,29.69077,0,0,723.6409,804.404,1,0,0,1,0,3,83.8,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,0,0,0,79.16349,9.575813,1.098612,6.690102,1 +11,1,0,0,4,125674,0,14410.96,26.72895,1,16,1,28.5846,0,33.72522,0,0,62.30982,0,0,0,2,0,3,83.8,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,0,0,0,79.16349,9.575813,1.098612,4.132119,1 +11,1,0,0,5,125674,0,14410.96,27.72895,1,16,1,61.61659,0,14.1515,0,0,75.76809,0,0,0,2,0,3,83.8,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,0,0,0,79.16349,9.575813,1.098612,4.327677,1 +11,1,0,0,1,125675,0,14410.96,55.64956,1,15,1,55.27578,0,56.85851,0,0,112.1343,0,0,0,2,1,3,80,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,0,0,0,78.89941,9.575813,1.098612,4.719697,1 +11,1,0,0,2,125675,0,14410.96,56.64956,1,15,1,90.36144,0,0,0,0,90.36144,0,0,0,5,0,3,80,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,0,0,0,78.89941,9.575813,1.098612,4.503818,1 +11,1,0,0,3,125675,0,14410.96,57.64956,1,15,1,44.88778,0,0,0,0,44.88778,0,0,0,2,0,3,80,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,0,0,0,78.89941,9.575813,1.098612,3.804166,1 +11,1,0,0,4,125675,0,14410.96,58.64956,1,15,1,55.78608,0,0,0,0,55.78608,0,0,0,2,0,3,80,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,0,0,0,78.89941,9.575813,1.098612,4.021524,1 +11,1,0,0,5,125675,0,14410.96,59.64956,1,15,1,123.868,0,48.64579,0,0,172.5137,0,0,0,6,1,3,80,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,0,0,0,78.89941,9.575813,1.098612,5.150477,1 +11,1,0,0,1,125676,0,14410.96,55.15948,0,15,1,0,0,0,0,0,0,0,0,0,0,0,3,91.3,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,1,0,0,70.76144,9.575813,1.098612,,0 +11,1,0,0,2,125676,0,14410.96,56.15948,0,15,1,0,0,0,0,0,0,0,0,0,0,0,3,91.3,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,1,0,0,70.76144,9.575813,1.098612,,0 +11,1,0,0,3,125676,0,14410.96,57.15948,0,15,1,0,0,0,0,0,0,0,0,0,0,0,3,91.3,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,1,0,0,70.76144,9.575813,1.098612,,0 +11,1,0,0,4,125676,0,14410.96,58.15948,0,15,1,104.1955,0,0,0,0,104.1955,0,0,0,2,0,3,91.3,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,1,0,0,70.76144,9.575813,1.098612,4.646269,1 +11,1,0,0,5,125676,0,14410.96,59.15948,0,15,1,22.85231,0,61.91282,0,912.8227,997.5878,1,0,0,2,0,3,91.3,13.73189,0,,0,492,0,0,1.098612,6.198479,0,0,0,1,0,0,70.76144,9.575813,1.098612,6.90534,1 +11,1,0,0,1,125690,0,11982.63,13.87269,1,16,1,40.76739,10.47962,0,0,0,51.247,0,0,0,6,0,3,74.36826,13.73189,0,,0,288,1,1,1.098612,5.662961,0,0,0,0,0,0,86.44971,9.391296,1.098612,3.936657,1 +11,1,0,0,2,125690,0,11982.63,14.87269,1,16,1,29.02519,13.5816,0,0,0,42.60679,0,0,0,4,0,3,74.36826,13.73189,0,,0,288,1,1,1.098612,5.662961,0,0,0,0,0,0,86.44971,9.391296,1.098612,3.752014,1 +11,1,0,0,3,125690,0,11982.63,15.87269,1,16,1,39.4015,22.19451,0,0,0,61.59601,0,0,0,5,1,3,74.36826,13.73189,0,,0,288,1,1,1.098612,5.662961,0,0,0,0,0,0,86.44971,9.391296,1.098612,4.120597,1 +11,1,0,0,4,125690,0,11982.63,16.87269,1,16,1,5.532504,28.13278,0,0,0,33.66528,0,0,0,1,0,3,74.36826,13.73189,0,,0,288,1,1,1.098612,5.662961,0,0,0,0,0,0,86.44971,9.391296,1.098612,3.516467,1 +11,1,0,0,5,125690,0,11982.63,17.87269,1,16,1,28.98857,24.13457,24.96826,0,0,78.09141,0,0,0,2,1,3,74.36826,13.73189,0,,0,288,1,1,1.098612,5.662961,0,0,0,0,0,0,86.44971,9.391296,1.098612,4.35788,1 +11,1,0,0,1,125691,0,11982.63,49.93292,1,16,1,121.7026,14.65827,32.3741,0,0,168.735,0,0,0,4,1,3,92.5,13.73189,0,,0,288,0,0,1.098612,5.662961,0,0,0,0,0,0,79.07426,9.391296,1.098612,5.12833,1 +11,1,0,0,2,125691,0,11982.63,50.93292,1,16,1,31.76342,20.81051,17.25082,0,0,69.82475,0,0,0,4,1,3,92.5,13.73189,0,,0,288,0,0,1.098612,5.662961,0,0,0,0,0,0,79.07426,9.391296,1.098612,4.245988,1 +11,1,0,0,3,125691,0,11982.63,51.93292,1,16,1,44.13965,12.74314,32.53865,0,0,89.42145,0,0,0,1,1,3,92.5,13.73189,0,,0,288,0,0,1.098612,5.662961,0,0,0,0,0,0,79.07426,9.391296,1.098612,4.493361,1 +11,1,0,0,4,125691,0,11982.63,52.93292,1,16,1,8.759797,6.325496,0,0,0,15.08529,0,0,0,1,0,3,92.5,13.73189,0,,0,288,0,0,1.098612,5.662961,0,0,0,0,0,0,79.07426,9.391296,1.098612,2.71372,1 +11,1,0,0,5,125691,0,11982.63,53.93292,1,16,1,38.51037,27.10538,32.16251,0,0,97.77825,0,0,0,2,1,3,92.5,13.73189,0,,0,288,0,0,1.098612,5.662961,0,0,0,0,0,0,79.07426,9.391296,1.098612,4.582702,1 +11,1,0,0,1,125692,0,11982.63,54.93224,0,16,1,176.8585,98.89688,64.34652,0,0,340.1019,0,0,0,10,1,3,90,13.73189,0,,0,288,0,0,1.098612,5.662961,0,0,0,0,0,0,71.24387,9.391296,1.098612,5.829246,1 +11,1,0,0,2,125692,0,11982.63,55.93224,0,16,1,73.38445,85.47098,19.49617,0,0,178.3516,0,0,0,7,2,3,90,13.73189,0,,0,288,0,0,1.098612,5.662961,0,0,0,0,0,0,71.24387,9.391296,1.098612,5.183757,1 +11,1,0,0,3,125692,0,11982.63,56.93224,0,16,1,56.85786,81.89027,33.78554,0,0,172.5337,0,0,0,5,2,3,90,13.73189,0,,0,288,0,0,1.098612,5.662961,0,0,0,0,0,0,71.24387,9.391296,1.098612,5.150592,1 +11,1,0,0,4,125692,0,11982.63,57.93224,0,16,1,39.18856,88.06824,23.6284,0,0,150.8852,0,0,0,4,2,3,90,13.73189,0,,0,288,0,0,1.098612,5.662961,0,0,0,0,0,0,71.24387,9.391296,1.098612,5.01652,1 +11,1,0,0,5,125692,0,11982.63,58.93224,0,16,1,75.43377,56.97419,22.99619,0,0,155.4041,0,0,0,4,2,3,90,13.73189,0,,0,288,0,0,1.098612,5.662961,0,0,0,0,0,0,71.24387,9.391296,1.098612,5.046029,1 +11,1,0,0,1,125782,0,7207.816,7.958932,1,12,1,6.6345,4.191797,0,0,0,10.8263,0,0,0,1,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,1,0,0,76.96274,8.88306,1.609438,2.381978,1 +11,1,0,0,2,125782,0,7207.816,8.958932,1,12,1,5.506608,0,0,0,0,5.506608,0,0,0,1,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,1,0,0,76.96274,8.88306,1.609438,1.705949,1 +11,1,0,0,3,125782,0,7207.816,9.958932,1,12,1,5.524862,0,0,0,0,5.524862,0,0,0,1,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,1,0,0,76.96274,8.88306,1.609438,1.709258,1 +11,1,0,0,1,125783,0,7207.816,27.72895,1,12,1,30.75995,43.27503,0,0,0,74.03498,0,0,0,4,0,5,70,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,71.7831,8.88306,1.609438,4.304538,1 +11,1,0,0,2,125783,0,7207.816,28.72895,1,12,1,26.98238,34.0859,0,0,0,61.06828,0,0,0,4,1,5,70,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,71.7831,8.88306,1.609438,4.111993,1 +11,1,0,0,3,125783,0,7207.816,29.72895,1,12,1,43.69664,22.25013,17.96585,0,0,83.91261,0,0,0,4,1,5,70,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,71.7831,8.88306,1.609438,4.429776,1 +11,1,0,0,1,125784,0,7207.816,2.38193,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,1,0,0,73.53111,8.88306,1.609438,,0 +11,1,0,0,2,125784,0,7207.816,3.38193,1,12,1,25.3304,9.388766,0,0,0,34.71916,0,0,0,4,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,1,0,0,73.53111,8.88306,1.609438,3.547292,1 +11,1,0,0,3,125784,0,7207.816,4.38193,1,12,1,16.57458,7.132094,0,0,0,23.70668,0,0,0,3,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,1,0,0,73.53111,8.88306,1.609438,3.165757,1 +11,1,0,0,1,125785,0,7207.816,4.599589,0,12,1,21.10977,8.685163,0,0,0,29.79493,0,0,0,3,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,1,0,0,74.04509,8.88306,1.609438,3.394338,1 +11,1,0,0,2,125785,0,7207.816,5.599589,0,12,1,23.67841,20.56718,0,0,0,44.24559,0,0,0,5,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,1,0,0,74.04509,8.88306,1.609438,3.789756,1 +11,1,0,0,3,125785,0,7207.816,6.599589,0,12,1,24.10849,14.13862,0,0,0,38.24711,0,0,0,4,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,1,0,0,74.04509,8.88306,1.609438,3.644068,1 +11,1,0,0,1,125786,0,7207.816,33.67009,0,12,1,10.58504,0,0,0,0,10.58504,0,0,0,0,0,5,92.5,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,71.81962,8.88306,1.609438,2.359442,1 +11,1,0,0,2,125786,0,7207.816,34.67009,0,12,1,16.51982,4.157489,20.14317,0,0,40.82048,0,0,0,2,1,5,92.5,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,71.81962,8.88306,1.609438,3.709184,1 +11,1,0,0,3,125786,0,7207.816,35.67009,0,12,1,27.12205,7.332998,0,0,0,34.45505,0,0,0,4,1,5,92.5,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,71.81962,8.88306,1.609438,3.539655,1 +8,1,50,0,1,125798,0,8419.976,3.496235,0,12,1,18.58513,5.785372,0,0,0,24.3705,0,0,0,3,0,4,74.36826,13.73189,0,,599,599,1,0,1.386294,6.395262,0,3.931826,7.088409,0,0,0,75.69691,9.038481,1.386294,3.193374,1 +8,1,50,0,2,125798,0,8419.976,4.496235,0,12,1,32.85871,8.652793,0,0,0,41.5115,0,0,0,6,0,4,74.36826,13.73189,0,,599,599,1,0,1.386294,6.395262,0,3.931826,7.088409,0,0,0,75.69691,9.038481,1.386294,3.725971,1 +8,1,50,0,3,125798,0,8419.976,5.496235,0,12,1,56.53366,2.493766,0,0,0,59.02743,0,0,0,4,0,4,74.36826,13.73189,0,,599,599,1,0,1.386294,6.395262,0,3.931826,7.088409,0,0,0,75.69691,9.038481,1.386294,4.078002,1 +8,1,50,0,4,125798,0,8419.976,6.496235,0,12,1,28.12356,1.032734,0,0,0,29.15629,0,0,0,2,1,5,74.36826,13.73189,0,,599,599,1,0,1.609438,6.395262,0,3.931826,7.088409,0,0,0,75.69691,9.038481,1.609438,3.372671,1 +8,1,50,0,5,125798,0,8419.976,7.496235,0,12,1,81.07914,16.08125,0,0,0,97.16039,0,0,0,7,0,5,74.36826,13.73189,0,,599,599,1,0,1.609438,6.395262,0,3.931826,7.088409,0,0,0,75.69691,9.038481,1.609438,4.576363,1 +8,1,50,0,1,125799,0,8419.976,27.74812,1,12,1,41.36691,17.44005,0,0,0,58.80695,0,0,0,6,0,4,82.5,13.73189,0,,599,599,0,0,1.386294,6.395262,0,3.931826,7.088409,0,0,0,78.26785,9.038481,1.386294,4.07426,1 +8,1,50,0,2,125799,0,8419.976,28.74812,1,12,1,30.12048,9.83023,0,0,0,39.95071,0,0,0,1,0,4,82.5,13.73189,0,,599,599,0,0,1.386294,6.395262,0,3.931826,7.088409,0,0,0,78.26785,9.038481,1.386294,3.687646,1 +8,1,50,0,3,125799,0,8419.976,29.74812,1,12,1,8.977556,5.21197,35.41147,0,1465.092,1514.693,1,0,0,0,1,4,82.5,13.73189,0,,599,599,0,0,1.386294,6.395262,0,3.931826,7.088409,0,0,0,78.26785,9.038481,1.386294,7.322968,1 +8,1,50,0,4,125799,0,8419.976,30.74812,1,12,1,24.2047,23.02905,0,0,0,47.23375,0,0,0,2,0,5,82.5,13.73189,0,,599,599,0,0,1.609438,6.395262,0,3.931826,7.088409,0,0,0,78.26785,9.038481,1.609438,3.855109,1 +8,1,50,0,5,125799,0,8419.976,31.74812,1,12,1,0,0,13.26703,0,0,13.26703,0,0,0,0,0,5,82.5,13.73189,0,,599,599,0,0,1.609438,6.395262,0,3.931826,7.088409,0,0,0,78.26785,9.038481,1.609438,2.585282,1 +8,1,50,0,1,125800,0,8419.976,32.05202,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,87.5,13.73189,0,,599,599,0,0,1.386294,6.395262,0,3.931826,7.088409,0,0,0,77.63718,9.038481,1.386294,,0 +8,1,50,0,2,125800,0,8419.976,33.05202,0,14,1,55.31216,23.84447,0,0,0,79.15662,0,0,0,5,0,4,87.5,13.73189,0,,599,599,0,0,1.386294,6.395262,0,3.931826,7.088409,0,0,0,77.63718,9.038481,1.386294,4.371428,1 +8,1,50,0,3,125800,0,8419.976,34.05202,0,14,1,46.90773,9.17207,27.9601,0,0,84.0399,0,0,0,3,0,4,87.5,13.73189,0,,599,599,0,0,1.386294,6.395262,0,3.931826,7.088409,0,0,0,77.63718,9.038481,1.386294,4.431292,1 +8,1,50,0,4,125800,0,8419.976,35.05202,0,14,1,20.05532,6.851083,0,0,0,26.90641,0,0,0,0,0,5,87.5,13.73189,0,,599,599,0,0,1.609438,6.395262,0,3.931826,7.088409,0,0,0,77.63718,9.038481,1.609438,3.292365,1 +8,1,50,0,5,125800,0,8419.976,36.05202,0,14,1,8.887008,0,0,0,0,8.887008,0,0,0,1,0,5,87.5,13.73189,0,,599,599,0,0,1.609438,6.395262,0,3.931826,7.088409,0,0,0,77.63718,9.038481,1.609438,2.18459,1 +8,1,50,0,1,125801,0,8419.976,.5804244,1,12,1,65.94724,10.76139,0,0,0,76.70863,0,0,0,8,0,4,74.36826,13.73189,0,,599,599,1,1,1.386294,6.395262,0,3.931826,7.088409,0,0,0,79.42434,9.038481,1.386294,4.340014,1 +8,1,50,0,2,125801,0,8419.976,1.580424,1,12,1,37.23987,19.82475,0,0,0,57.06462,0,0,0,7,0,4,74.36826,13.73189,0,,599,599,1,1,1.386294,6.395262,0,3.931826,7.088409,0,0,0,79.42434,9.038481,1.386294,4.044184,1 +8,1,50,0,3,125801,0,8419.976,2.580424,1,12,1,7.98005,0,0,0,0,7.98005,0,0,0,1,0,4,74.36826,13.73189,0,,599,599,1,1,1.386294,6.395262,0,3.931826,7.088409,0,0,0,79.42434,9.038481,1.386294,2.076945,1 +8,1,50,0,4,125801,0,8419.976,3.580424,1,12,1,27.66252,0,0,0,0,27.66252,0,0,0,3,0,5,74.36826,13.73189,0,,599,599,1,1,1.609438,6.395262,0,3.931826,7.088409,0,0,0,79.42434,9.038481,1.609438,3.320078,1 +8,1,50,0,5,125801,0,8419.976,4.580424,1,12,1,49.09014,0,0,0,0,49.09014,0,0,0,2,1,5,74.36826,13.73189,0,,599,599,1,1,1.609438,6.395262,0,3.931826,7.088409,0,0,0,79.42434,9.038481,1.609438,3.893658,1 +8,1,50,0,1,125806,0,14051.49,28.63244,1,12,1,8.833922,18.49823,0,0,0,27.33216,0,0,0,1,0,3,83.8,13.73189,0,,718,718,0,0,1.098612,6.576469,0,3.931826,7.269617,0,0,0,79.52938,9.550555,1.098612,3.308064,1 +8,1,50,0,2,125806,0,14051.49,29.63244,1,12,1,38.27493,14.47978,0,0,0,52.75472,0,0,0,4,2,3,83.8,13.73189,0,,718,718,0,0,1.098612,6.576469,0,3.931826,7.269617,0,0,0,79.52938,9.550555,1.098612,3.965653,1 +8,1,50,0,3,125806,0,14051.49,30.63244,1,12,1,8.845209,22.13268,0,0,0,30.97789,0,0,0,1,0,3,83.8,13.73189,0,,718,718,0,0,1.098612,6.576469,0,3.931826,7.269617,0,0,0,79.52938,9.550555,1.098612,3.433274,1 +8,1,50,0,1,125807,0,14051.49,8.531143,1,12,1,47.93875,7.832745,14.77032,0,0,70.54182,0,0,0,5,1,3,74.36826,13.73189,0,,718,718,1,1,1.098612,6.576469,0,3.931826,7.269617,1,0,0,79.35551,9.550555,1.098612,4.256206,1 +8,1,50,0,2,125807,0,14051.49,9.531143,1,12,1,16.17251,2.560647,21.04582,0,0,39.77898,0,0,0,1,1,3,74.36826,13.73189,0,,718,718,1,1,1.098612,6.576469,0,3.931826,7.269617,1,0,0,79.35551,9.550555,1.098612,3.683339,1 +8,1,50,0,3,125807,0,14051.49,10.53114,1,12,1,23.09582,0,11.05651,0,0,34.15233,0,0,0,2,1,3,74.36826,13.73189,0,,718,718,1,1,1.098612,6.576469,0,3.931826,7.269617,1,0,0,79.35551,9.550555,1.098612,3.530831,1 +8,1,50,0,1,125808,0,14051.49,8.531143,0,12,1,63.60424,18.22144,0,0,0,81.82568,0,0,0,13,0,3,74.36826,13.73189,0,,718,718,1,0,1.098612,6.576469,0,3.931826,7.269617,0,1,0,60.19517,9.550555,1.098612,4.404591,1 +8,1,50,0,2,125808,0,14051.49,9.531143,0,12,1,77.08895,21.96766,18.88949,0,0,117.9461,0,0,0,12,1,3,74.36826,13.73189,0,,718,718,1,0,1.098612,6.576469,0,3.931826,7.269617,0,1,0,60.19517,9.550555,1.098612,4.770227,1 +8,1,50,0,3,125808,0,14051.49,10.53114,0,12,1,72.72727,13.09582,8.039312,0,0,93.86241,0,0,0,13,1,3,74.36826,13.73189,0,,718,718,1,0,1.098612,6.576469,0,3.931826,7.269617,0,1,0,60.19517,9.550555,1.098612,4.54183,1 +6,1,25,0,1,125810,0,10455.96,8.303902,1,12,1,10.25332,0,0,0,0,10.25332,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,84.24701,9.255023,1.386294,2.327601,1 +6,1,25,0,2,125810,0,10455.96,9.303902,1,12,1,5.506608,0,0,0,0,5.506608,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,84.24701,9.255023,1.386294,1.705949,1 +6,1,25,0,3,125810,0,10455.96,10.3039,1,12,1,11.04972,0,0,0,166.6449,177.6946,1,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,84.24701,9.255023,1.386294,5.180067,1 +6,1,25,0,1,125811,0,10455.96,38.2642,1,12,1,138.1182,6.574186,0,0,0,144.6924,0,0,0,5,0,4,83.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.34193,9.255023,1.386294,4.97461,1 +6,1,25,0,2,125811,0,10455.96,39.2642,1,12,1,29.18502,13.51872,0,0,0,42.70374,0,0,0,3,0,4,83.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.34193,9.255023,1.386294,3.754287,1 +6,1,25,0,3,125811,0,10455.96,40.2642,1,12,1,8.538423,7.157207,0,0,0,15.69563,0,0,0,1,0,4,83.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.34193,9.255023,1.386294,2.753382,1 +6,1,25,0,1,125812,0,10455.96,15.65777,0,12,1,53.49819,51.538,0,0,0,105.0362,0,0,0,2,4,4,77.5,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,80.2968,9.255023,1.386294,4.654305,1 +6,1,25,0,2,125812,0,10455.96,16.65777,0,12,1,6.60793,36.17841,0,0,0,42.78634,0,0,0,1,0,4,77.5,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,80.2968,9.255023,1.386294,3.756219,1 +6,1,25,0,3,125812,0,10455.96,17.65777,0,12,1,24.61075,33.24962,0,0,0,57.86037,0,0,0,1,0,4,77.5,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,80.2968,9.255023,1.386294,4.058033,1 +6,1,25,0,1,125813,0,10455.96,42.66393,0,12,1,15.07841,0,38.76357,0,0,53.84198,0,0,0,1,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.66858,9.255023,1.386294,3.986053,1 +6,1,25,0,2,125813,0,10455.96,43.66393,0,12,1,89.75771,3.276432,0,0,0,93.03414,0,0,0,5,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.66858,9.255023,1.386294,4.532967,1 +6,1,25,0,3,125813,0,10455.96,44.66393,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.66858,9.255023,1.386294,,0 +6,1,25,0,1,125817,0,7893.92,27.98905,0,14,1,17.38609,11.95444,0,0,0,29.34053,0,0,0,3,0,2,80,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,77.89652,8.973975,.6931472,3.37897,1 +6,1,25,0,2,125817,0,7893.92,28.98905,0,14,1,68.45564,33.51041,0,0,0,101.966,0,0,0,6,0,3,80,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,77.89652,8.973975,1.098612,4.62464,1 +6,1,25,0,3,125817,0,7893.92,29.98905,0,14,1,28.91771,24.4389,0,0,0,53.35661,0,0,0,3,0,3,80,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,77.89652,8.973975,1.098612,3.976998,1 +6,1,25,0,1,125818,0,7893.92,24.09309,1,12,1,80.03597,20.73741,0,0,1351.439,1452.212,2,0,0,5,2,2,86.3,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,78.52718,8.973975,.6931472,7.280843,1 +6,1,25,0,2,125818,0,7893.92,25.09309,1,12,1,174.5619,19.24973,0,0,947.6287,1141.44,1,0,0,6,0,3,86.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.52718,8.973975,1.098612,7.040046,1 +6,1,25,0,3,125818,0,7893.92,26.09309,1,12,1,48.00499,42.1197,0,0,0,90.12469,0,0,0,0,0,3,86.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.52718,8.973975,1.098612,4.501194,1 +1,1,0,1,1,125819,0,6789.702,59.02533,1,14,1,19.03629,33.78941,0,0,0,52.8257,0,0,0,0,0,1,82.1,13,0,,150,93,0,0,0,4.532599,1,0,0,0,0,0,78.15913,8.82331,0,3.966998,1 +1,1,0,1,2,125819,0,6789.702,60.02533,1,14,1,145.3457,14.31682,52.62384,0,0,212.2863,0,0,0,4,0,1,82.1,13,0,,150,93,0,0,0,4.532599,1,0,0,0,0,0,78.15913,8.82331,0,5.357936,1 +1,1,0,1,3,125819,0,6789.702,61.02533,1,14,1,0,14.79187,0,0,0,14.79187,0,0,0,0,0,1,82.1,13,0,,150,93,0,0,0,4.532599,1,0,0,0,0,0,78.15913,8.82331,0,2.694078,1 +4,1,100,0,1,125825,0,5982.63,21.49213,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,74.7,0,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,68.84245,8.696783,.6931472,,0 +4,1,100,0,2,125825,0,5982.63,22.49213,0,12,1,4.043127,0,0,0,0,4.043127,0,0,0,1,0,2,74.7,0,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,68.84245,8.696783,.6931472,1.397018,1 +4,1,100,0,3,125825,0,5982.63,23.49213,0,12,1,7.371007,6.422605,0,0,0,13.79361,0,0,0,1,0,3,74.7,0,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,1,0,0,68.84245,8.696783,1.098612,2.624206,1 +4,1,100,0,4,125825,0,5982.63,24.49213,0,12,1,9.913401,2.402005,0,0,0,12.31541,0,0,0,2,0,4,74.7,0,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,68.84245,8.696783,1.386294,2.510851,1 +4,1,100,0,5,125825,0,5982.63,25.49213,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.7,0,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,68.84245,8.696783,1.386294,,0 +4,1,100,0,1,125826,0,5982.63,21.79055,1,13,1,0,8.551237,0,0,0,8.551237,0,0,0,0,0,2,92.6,0,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,70.0071,8.696783,.6931472,2.146076,1 +4,1,100,0,2,125826,0,5982.63,22.79055,1,13,1,195.1483,7.681941,0,0,249.3261,452.1563,2,1,0,1,0,2,92.6,0,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,70.0071,8.696783,.6931472,6.114028,1 +4,1,100,0,3,125826,0,5982.63,23.79055,1,13,1,2.457002,26.60442,0,0,504.5946,533.656,1,0,0,0,0,3,92.6,0,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,1,0,0,70.0071,8.696783,1.098612,6.279751,1 +4,1,100,0,4,125826,0,5982.63,24.79055,1,13,1,15.38286,6.536007,0,0,0,21.91887,0,0,0,1,0,4,92.6,0,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,70.0071,8.696783,1.386294,3.087348,1 +4,1,100,0,5,125826,0,5982.63,25.79055,1,13,1,37.51563,1.350563,0,0,0,38.8662,0,0,0,0,1,4,92.6,0,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,70.0071,8.696783,1.386294,3.660125,1 +11,1,0,0,1,125832,0,7975.186,2.302532,0,12,1,142.5513,5.500603,0,0,0,148.0519,0,0,0,4,0,4,74.36826,13.73189,0,,0,323,1,0,1.386294,5.777652,0,0,0,1,0,0,72.61372,8.984216,1.386294,4.997563,1 +11,1,0,0,2,125832,0,7975.186,3.302532,0,12,1,83.14978,10.5011,7.957048,0,0,101.6079,0,0,0,4,0,5,74.36826,13.73189,0,,0,323,1,0,1.609438,5.777652,0,0,0,1,0,0,72.61372,8.984216,1.609438,4.621121,1 +11,1,0,0,3,125832,0,7975.186,4.302533,0,12,1,37.66951,0,0,0,0,37.66951,0,0,0,4,0,5,74.36826,13.73189,0,,0,323,1,0,1.609438,5.777652,0,0,0,1,0,0,72.61372,8.984216,1.609438,3.628851,1 +11,1,0,0,4,125832,0,7975.186,5.302533,0,12,1,4.636069,4.942049,0,0,0,9.578117,0,0,0,1,0,5,74.36826,13.73189,0,,0,323,1,0,1.609438,5.777652,0,0,0,1,0,0,72.61372,8.984216,1.609438,2.259481,1 +11,1,0,0,5,125832,0,7975.186,6.302533,0,12,1,35.72948,4.100383,0,0,0,39.82986,0,0,0,3,1,5,74.36826,13.73189,0,,0,323,1,0,1.609438,5.777652,0,0,0,1,0,0,72.61372,8.984216,1.609438,3.684617,1 +11,1,0,0,1,125833,0,7975.186,28.26831,1,12,1,68.45597,27.46683,0,0,1018.16,1114.083,1,0,0,3,0,4,63.8,13.73189,0,,0,323,0,0,1.386294,5.777652,0,0,0,1,0,0,65.52039,8.984216,1.386294,7.015787,1 +11,1,0,0,2,125833,0,7975.186,29.26831,1,12,1,214.4824,41.87225,0,0,0,256.3546,0,0,0,12,0,5,63.8,13.73189,0,,0,323,0,0,1.609438,5.777652,0,0,0,1,0,0,65.52039,8.984216,1.609438,5.546562,1 +11,1,0,0,3,125833,0,7975.186,30.26831,1,12,1,382.3204,21.48669,0,0,0,403.8071,0,0,0,14,0,5,63.8,13.73189,0,,0,323,0,0,1.609438,5.777652,0,0,0,1,0,0,65.52039,8.984216,1.609438,6.000937,1 +11,1,0,0,4,125833,0,7975.186,31.26831,1,12,1,45.89708,7.612425,0,0,0,53.5095,0,0,0,5,0,5,63.8,13.73189,0,,0,323,0,0,1.609438,5.777652,0,0,0,1,0,0,65.52039,8.984216,1.609438,3.979859,1 +11,1,0,0,5,125833,0,7975.186,32.26831,1,12,1,369.2046,1.52701,0,0,0,370.7316,0,0,0,10,4,5,63.8,13.73189,0,,0,323,0,0,1.609438,5.777652,0,0,0,1,0,0,65.52039,8.984216,1.609438,5.915478,1 +11,1,0,0,1,125834,0,7975.186,5.185489,0,12,1,30.15681,40.94692,0,0,0,71.10374,0,0,0,4,0,4,74.36826,13.73189,0,,0,323,1,0,1.386294,5.777652,0,0,0,0,1,0,64.17065,8.984216,1.386294,4.26414,1 +11,1,0,0,2,125834,0,7975.186,6.185489,0,12,1,22.57709,13.67291,0,0,0,36.25,0,0,0,4,0,5,74.36826,13.73189,0,,0,323,1,0,1.609438,5.777652,0,0,0,0,1,0,64.17065,8.984216,1.609438,3.590439,1 +11,1,0,0,3,125834,0,7975.186,7.185489,0,12,1,24.10849,9.814164,0,0,0,33.92265,0,0,0,4,0,5,74.36826,13.73189,0,,0,323,1,0,1.609438,5.777652,0,0,0,0,1,0,64.17065,8.984216,1.609438,3.524083,1 +11,1,0,0,4,125834,0,7975.186,8.18549,0,12,1,15.76263,7.927677,0,0,0,23.69031,0,0,0,3,0,5,74.36826,13.73189,0,,0,323,1,0,1.609438,5.777652,0,0,0,0,1,0,64.17065,8.984216,1.609438,3.165066,1 +11,1,0,0,5,125834,0,7975.186,9.18549,0,12,1,35.30413,3.564441,0,0,0,38.86857,0,0,0,3,1,5,74.36826,13.73189,0,,0,323,1,0,1.609438,5.777652,0,0,0,0,1,0,64.17065,8.984216,1.609438,3.660186,1 +11,1,0,0,1,125835,0,7975.186,28.87337,0,12,1,28.95054,9.384801,0,0,0,38.33534,0,0,0,3,0,4,72.5,13.73189,0,,0,323,0,0,1.386294,5.777652,0,0,0,1,0,0,71.03061,8.984216,1.386294,3.646372,1 +11,1,0,0,2,125835,0,7975.186,29.87337,0,12,1,22.85242,10.76542,24.17401,0,0,57.79185,0,0,0,2,1,5,72.5,13.73189,0,,0,323,0,0,1.609438,5.777652,0,0,0,1,0,0,71.03061,8.984216,1.609438,4.056848,1 +11,1,0,0,3,125835,0,7975.186,30.87337,0,12,1,15.8212,0,0,0,0,15.8212,0,0,0,1,0,5,72.5,13.73189,0,,0,323,0,0,1.609438,5.777652,0,0,0,1,0,0,71.03061,8.984216,1.609438,2.761351,1 +11,1,0,0,4,125835,0,7975.186,31.87337,0,12,1,29.20723,10.54242,0,0,571.9843,611.7339,1,0,0,5,0,5,72.5,13.73189,0,,0,323,0,0,1.609438,5.777652,0,0,0,1,0,0,71.03061,8.984216,1.609438,6.416297,1 +11,1,0,0,5,125835,0,7975.186,32.87337,0,12,1,16.58869,2.973203,30.22544,0,0,49.78732,0,0,0,1,1,5,72.5,13.73189,0,,0,323,0,0,1.609438,5.777652,0,0,0,1,0,0,71.03061,8.984216,1.609438,3.90776,1 +3,1,100,0,1,125836,0,6799.007,36.56947,1,16,1,107.9614,53.13631,20.91074,99.51749,1011.683,1193.691,1,0,11,19,0,1,57.5,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,0,0,0,79.52723,8.824679,0,7.084805,1 +3,1,100,0,2,125836,0,6799.007,37.56947,1,16,1,11.56388,16.35463,12.11454,115.6388,0,40.03304,0,0,6,2,0,1,57.5,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,0,0,0,79.52723,8.824679,0,3.689705,1 +3,1,100,0,3,125836,0,6799.007,38.56947,1,16,1,31.64239,18.3325,0,421.8985,0,49.97489,0,0,42,4,0,1,57.5,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,0,0,0,79.52723,8.824679,0,3.911521,1 +3,1,100,0,1,125837,0,8071.34,43.94524,1,12,1,122.1351,67.4427,27.73221,0,0,217.31,0,0,0,15,0,1,57.5,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,1,0,0,67.36094,8.996199,0,5.381325,1 +3,1,100,0,2,125837,0,8071.34,44.94524,1,12,1,162.9956,25,0,0,0,187.9956,0,0,0,10,0,1,57.5,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,1,0,0,67.36094,8.996199,0,5.236419,1 +3,1,100,0,3,125837,0,8071.34,45.94524,1,12,1,45.20341,30.24109,0,0,0,75.4445,0,0,0,7,0,1,57.5,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,1,0,0,67.36094,8.996199,0,4.323397,1 +1,1,0,1,1,125838,0,7445.503,52.89528,1,12,1,34.98191,4.221954,40.97105,0,0,80.17491,0,0,0,3,2,2,89.5,8.7,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,70.84401,8.9155,.6931472,4.384211,1 +1,1,0,1,2,125838,0,7445.503,53.89528,1,12,1,11.01322,0,24.46586,0,0,35.47908,0,0,0,0,1,2,89.5,8.7,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,70.84401,8.9155,.6931472,3.568943,1 +1,1,0,1,3,125838,0,7445.503,54.89528,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,89.5,8.7,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,70.84401,8.9155,.6931472,,0 +1,1,0,1,4,125838,0,7445.503,55.89528,1,12,1,4.636069,2.577654,0,0,0,7.213723,0,0,0,1,0,2,89.5,8.7,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,70.84401,8.9155,.6931472,1.975985,1 +1,1,0,1,5,125838,0,7445.503,56.89528,1,12,1,11.05912,0,32.89239,0,0,43.95151,0,0,0,0,1,2,89.5,8.7,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,70.84401,8.9155,.6931472,3.783087,1 +1,1,0,1,1,125839,0,7445.503,52.94182,0,10,1,62.72618,20.00603,40.97105,0,0,123.7033,0,0,0,5,2,2,76.8,17.4,1,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,63.522,8.9155,.6931472,4.817885,1 +1,1,0,1,2,125839,0,7445.503,53.94182,0,10,1,33.03965,49.20154,24.46586,0,0,106.707,0,0,0,2,3,2,76.8,17.4,1,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,63.522,8.9155,.6931472,4.670087,1 +1,1,0,1,3,125839,0,7445.503,54.94182,0,10,1,12.05424,19.37218,0,0,0,31.42642,0,0,0,0,2,2,76.8,17.4,1,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,63.522,8.9155,.6931472,3.447649,1 +1,1,0,1,4,125839,0,7445.503,55.94182,0,10,1,43.11544,125.9805,12.98099,0,0,182.077,0,0,0,3,3,2,76.8,17.4,1,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,63.522,8.9155,.6931472,5.20443,1 +1,1,0,1,5,125839,0,7445.503,56.94182,0,10,1,89.11102,135.6359,20.44662,0,4835.295,5080.489,1,0,0,4,5,2,76.8,17.4,1,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,63.522,8.9155,.6931472,8.533163,1 +1,1,0,1,1,125840,0,10787.84,27.84942,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,89.5,0,0,,450,530,0,0,1.386294,6.272877,1,0,0,0,0,0,78.6153,9.286267,1.386294,,0 +1,1,0,1,2,125840,0,10787.84,28.84942,0,12,1,4.381161,11.99343,0,0,0,16.37459,0,0,0,1,0,4,89.5,0,0,,450,530,0,0,1.386294,6.272877,1,0,0,0,0,0,78.6153,9.286267,1.386294,2.795731,1 +1,1,0,1,3,125840,0,10787.84,29.84942,0,12,1,21.44638,13.51621,0,0,0,34.96259,0,0,0,3,0,4,89.5,0,0,,450,530,0,0,1.386294,6.272877,1,0,0,0,0,0,78.6153,9.286267,1.386294,3.554279,1 +1,1,0,1,1,125841,0,10787.84,6.390144,1,12,1,21.88249,0,0,0,0,21.88249,0,0,0,1,1,4,74.36826,13.73189,0,,450,530,1,1,1.386294,6.272877,1,0,0,0,0,0,84.83971,9.286267,1.386294,3.085687,1 +1,1,0,1,2,125841,0,10787.84,7.390144,1,12,1,0,1.807229,0,0,0,1.807229,0,0,0,0,0,4,74.36826,13.73189,0,,450,530,1,1,1.386294,6.272877,1,0,0,0,0,0,84.83971,9.286267,1.386294,.5917947,1 +1,1,0,1,3,125841,0,10787.84,8.390143,1,12,1,26.30923,39.56609,0,0,0,65.87531,0,0,0,4,0,4,74.36826,13.73189,0,,450,530,1,1,1.386294,6.272877,1,0,0,0,0,0,84.83971,9.286267,1.386294,4.187764,1 +1,1,0,1,1,125842,0,10787.84,24.34223,1,12,1,20.98321,6.594724,0,0,0,27.57794,0,0,0,4,0,4,87.4,13,0,,450,530,0,0,1.386294,6.272877,1,0,0,0,0,0,79.50648,9.286267,1.386294,3.317016,1 +1,1,0,1,2,125842,0,10787.84,25.34223,1,12,1,9.857613,8.105148,0,0,0,17.96276,0,0,0,2,0,4,87.4,13,0,,450,530,0,0,1.386294,6.272877,1,0,0,0,0,0,79.50648,9.286267,1.386294,2.888301,1 +1,1,0,1,3,125842,0,10787.84,26.34223,1,12,1,106.4838,18.42893,0,0,0,124.9127,0,0,0,6,0,4,87.4,13,0,,450,530,0,0,1.386294,6.272877,1,0,0,0,0,0,79.50648,9.286267,1.386294,4.827615,1 +1,1,0,1,1,125843,0,10787.84,3.863107,0,12,1,8.093525,7.494005,0,0,0,15.58753,0,0,0,1,0,4,74.36826,13.73189,0,,450,530,1,0,1.386294,6.272877,1,0,0,0,0,0,81.92207,9.286267,1.386294,2.746471,1 +1,1,0,1,2,125843,0,10787.84,4.863108,0,12,1,12.59584,4.24425,0,0,0,16.84009,0,0,0,2,0,4,74.36826,13.73189,0,,450,530,1,0,1.386294,6.272877,1,0,0,0,0,0,81.92207,9.286267,1.386294,2.823762,1 +1,1,0,1,3,125843,0,10787.84,5.863108,0,12,1,64.83791,18.85287,0,0,0,83.69077,0,0,0,5,1,4,74.36826,13.73189,0,,450,530,1,0,1.386294,6.272877,1,0,0,0,0,0,81.92207,9.286267,1.386294,4.427129,1 +7,1,25,0,1,125869,0,9542.002,4.889802,0,13,1,34.74676,3.292108,0,0,0,38.03887,0,0,0,1,1,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,80.91723,9.163564,1.386294,3.638608,1 +7,1,25,0,1,125870,0,9542.002,26.49144,1,13,1,17.07892,4.110719,0,0,0,21.18963,0,0,0,2,0,4,61.3,13.73189,1,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,72.26237,9.163564,1.386294,3.053512,1 +7,1,25,0,1,125871,0,9542.002,6.896646,1,13,1,25.91284,6.419317,0,0,0,32.33216,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,83.83487,9.163564,1.386294,3.476062,1 +7,1,25,0,1,125872,0,9542.002,27.436,0,13,1,24.14605,12.56184,14.57008,0,0,51.27797,0,0,0,2,0,4,68.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.78554,9.163564,1.386294,3.937261,1 +6,1,25,1,1,125891,0,19523.22,38.09172,1,14,1,62.72085,7.773851,0,0,0,70.4947,0,0,0,4,0,4,83.2,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,66.25087,9.879411,1.386294,4.255538,1 +6,1,25,1,2,125891,0,19523.22,39.09172,1,14,1,155.7952,6.652291,0,0,0,162.4474,0,0,0,4,1,4,83.2,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,66.25087,9.879411,1.386294,5.090354,1 +6,1,25,1,3,125891,0,19523.22,40.09172,1,14,1,225.5774,4.388206,28.99263,0,0,258.9582,0,0,0,7,1,4,83.2,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,66.25087,9.879411,1.386294,5.556667,1 +6,1,25,1,1,125892,0,19523.22,38.18207,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,95.8,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.21307,9.879411,1.386294,,0 +6,1,25,1,2,125892,0,19523.22,39.18207,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,95.8,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.21307,9.879411,1.386294,,0 +6,1,25,1,3,125892,0,19523.22,40.18207,0,15,1,17.19902,0,0,0,0,17.19902,0,0,0,1,0,4,95.8,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.21307,9.879411,1.386294,2.844852,1 +6,1,25,1,1,125893,0,19523.22,16.64066,0,14,1,41.8139,16.0424,0,0,0,57.8563,0,0,0,6,0,4,86.3,0,1,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.05912,9.879411,1.386294,4.057962,1 +6,1,25,1,2,125893,0,19523.22,17.64066,0,14,1,34.50135,1.617251,8.086253,0,0,44.20485,0,0,0,4,0,4,86.3,0,1,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.05912,9.879411,1.386294,3.788835,1 +6,1,25,1,3,125893,0,19523.22,18.64066,0,14,1,0,2.432432,0,0,0,2.432432,0,0,0,0,0,4,86.3,0,1,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.05912,9.879411,1.386294,.8888918,1 +6,1,25,1,1,125894,0,19523.22,17.66735,0,14,1,11.18964,0,0,0,0,11.18964,0,0,0,2,0,4,93.7,4.3,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.05912,9.879411,1.386294,2.414988,1 +6,1,25,1,2,125894,0,19523.22,18.66735,0,14,1,58.76011,2.458221,0,0,0,61.21833,0,0,0,3,0,4,93.7,4.3,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.05912,9.879411,1.386294,4.114447,1 +6,1,25,1,3,125894,0,19523.22,19.66735,0,14,1,145.4545,38.32924,0,0,0,183.7838,0,0,0,14,3,4,93.7,4.3,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.05912,9.879411,1.386294,5.21376,1 +1,1,0,1,1,125907,0,18647.29,38.52703,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,93.7,0,0,,113,113,0,0,1.098612,4.727388,1,0,0,0,0,0,75.67756,9.83351,1.098612,,0 +1,1,0,1,2,125907,0,18647.29,39.52703,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,93.7,0,0,,113,113,0,0,1.098612,4.727388,1,0,0,0,0,0,75.67756,9.83351,1.098612,,0 +1,1,0,1,3,125907,0,18647.29,40.52703,0,8,1,43.58722,0,0,0,0,43.58722,0,0,0,1,0,3,93.7,0,0,,113,113,0,0,1.098612,4.727388,1,0,0,0,0,0,75.67756,9.83351,1.098612,3.774764,1 +1,1,0,1,4,125907,0,18647.29,41.52703,0,8,1,10.93892,0,0,0,0,10.93892,0,0,0,2,0,3,93.7,0,0,,113,113,0,0,1.098612,4.727388,1,0,0,0,0,0,75.67756,9.83351,1.098612,2.392328,1 +1,1,0,1,5,125907,0,18647.29,42.52703,0,8,1,19.17466,5.122968,29.18716,0,0,53.48479,0,0,0,2,0,3,93.7,0,0,,113,113,0,0,1.098612,4.727388,1,0,0,0,0,0,75.67756,9.83351,1.098612,3.979397,1 +1,1,0,1,1,125908,0,18647.29,38.16564,1,11,1,21.20141,10.3298,0,0,0,31.53121,0,0,0,2,0,3,82.1,13,0,,113,113,0,0,1.098612,4.727388,1,0,0,0,0,0,76.56874,9.83351,1.098612,3.450978,1 +1,1,0,1,2,125908,0,18647.29,39.16564,1,11,1,33.531,9.229111,0,0,0,42.76011,0,0,0,0,1,3,82.1,13,0,,113,113,0,0,1.098612,4.727388,1,0,0,0,0,0,76.56874,9.83351,1.098612,3.755606,1 +1,1,0,1,3,125908,0,18647.29,40.16564,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,82.1,13,0,,113,113,0,0,1.098612,4.727388,1,0,0,0,0,0,76.56874,9.83351,1.098612,,0 +1,1,0,1,4,125908,0,18647.29,41.16564,1,11,1,430.2963,13.79672,25.48314,0,0,469.5761,0,0,0,7,0,3,82.1,13,0,,113,113,0,0,1.098612,4.727388,1,0,0,0,0,0,76.56874,9.83351,1.098612,6.15183,1 +1,1,0,1,5,125908,0,18647.29,42.16564,1,11,1,22.50938,5.769071,0,0,0,28.27845,0,0,0,3,0,3,82.1,13,0,,113,113,0,0,1.098612,4.727388,1,0,0,0,0,0,76.56874,9.83351,1.098612,3.3421,1 +1,1,0,1,1,125909,0,18647.29,16.5421,1,11,1,15.90106,18.43345,0,0,0,34.33451,0,0,0,3,0,3,82.1,8.7,0,,113,113,1,1,1.098612,4.727388,1,0,0,0,0,0,72.18691,9.83351,1.098612,3.536151,1 +1,1,0,1,2,125909,0,18647.29,17.5421,1,11,1,50.40431,10.27493,19.71968,0,0,80.39892,0,0,0,3,0,3,82.1,8.7,0,,113,113,1,1,1.098612,4.727388,1,0,0,0,0,0,72.18691,9.83351,1.098612,4.387001,1 +1,1,0,1,3,125909,0,18647.29,18.5421,1,11,1,17.69042,9.77887,0,0,0,27.46929,0,0,0,3,0,3,82.1,8.7,0,,113,113,0,0,1.098612,4.727388,1,0,0,0,0,0,72.18691,9.83351,1.098612,3.313069,1 +1,1,0,1,4,125909,0,18647.29,19.5421,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,82.1,8.7,0,,113,113,0,0,1.098612,4.727388,1,0,0,0,0,0,72.18691,9.83351,1.098612,,0 +1,1,0,1,5,125909,0,18647.29,20.5421,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,82.1,8.7,0,,113,113,0,0,1.098612,4.727388,1,0,0,0,0,0,72.18691,9.83351,1.098612,,0 +1,1,0,0,1,125962,0,3588.089,15.34292,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,80,13.73189,0,,450,0,1,1,1.098612,0,1,0,0,0,0,0,70.76381,8.185654,1.098612,,0 +1,1,0,0,2,125962,0,3588.089,16.34292,1,10,1,55.52561,0,1.886792,0,0,57.4124,0,0,0,2,2,3,80,13.73189,0,,450,0,1,1,1.098612,0,1,0,0,0,0,0,70.76381,8.185654,1.098612,4.05026,1 +1,1,0,0,3,125962,0,3588.089,17.34292,1,10,1,126.7813,0,0,0,0,126.7813,0,0,0,4,0,3,80,13.73189,0,,450,0,1,1,1.098612,0,1,0,0,0,0,0,70.76381,8.185654,1.098612,4.842464,1 +1,1,0,0,1,125963,0,3588.089,55.24162,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,83.8,13.73189,0,,450,0,0,0,1.098612,0,1,0,0,1,0,0,64.55314,8.185654,1.098612,,0 +1,1,0,0,2,125963,0,3588.089,56.24162,1,10,1,15.09434,3.234501,0,0,0,18.32884,0,0,0,1,0,3,83.8,13.73189,0,,450,0,0,0,1.098612,0,1,0,0,1,0,0,64.55314,8.185654,1.098612,2.908476,1 +1,1,0,0,3,125963,0,3588.089,57.24162,1,10,1,6.879607,0,0,0,0,6.879607,0,0,0,1,0,3,83.8,13.73189,0,,450,0,0,0,1.098612,0,1,0,0,1,0,0,64.55314,8.185654,1.098612,1.928561,1 +1,1,0,0,1,125964,0,3588.089,58.2204,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,70,13.73189,1,,450,0,0,0,1.098612,0,1,0,0,0,0,1,47.8484,8.185654,1.098612,,0 +1,1,0,0,2,125964,0,3588.089,59.2204,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,70,13.73189,1,,450,0,0,0,1.098612,0,1,0,0,0,0,1,47.8484,8.185654,1.098612,,0 +1,1,0,0,3,125964,0,3588.089,60.2204,0,9,1,0,0,0,0,360.2555,360.2555,1,0,0,0,0,3,70,13.73189,1,,450,0,0,0,1.098612,0,1,0,0,0,0,1,47.8484,8.185654,1.098612,5.886814,1 +1,1,0,0,1,125965,0,1,21.65366,0,9,1,10.60071,0,0,0,0,10.60071,0,0,0,2,0,1,45,13.73189,0,,150,0,0,0,0,0,1,0,0,1,0,0,68.1502,.6931472,0,2.360921,1 +1,1,0,0,2,125965,0,1,22.65366,0,9,1,9.703504,0,0,0,0,9.703504,0,0,0,1,0,1,45,13.73189,0,,150,0,0,0,0,0,1,0,0,1,0,0,68.1502,.6931472,0,2.272487,1 +1,1,0,0,3,125965,0,1,23.65366,0,9,1,57.64128,0,0,0,483.8575,541.4988,2,1,0,2,0,2,45,13.73189,0,,150,0,0,0,.6931472,0,1,0,0,1,0,0,68.1502,.6931472,.6931472,6.294341,1 +7,1,25,1,1,125967,1,1176.179,8.539356,1,5,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,340,340,1,1,1.791759,5.828946,0,3.258096,7.21524,1,0,0,76.93629,7.070876,1.791759,,0 +7,1,25,1,2,125967,1,1176.179,9.539356,1,5,1,8.165487,0,0,0,0,8.165487,0,0,0,1,0,6,74.36826,13.73189,0,,340,340,1,1,1.791759,5.828946,0,3.258096,7.21524,1,0,0,76.93629,7.070876,1.791759,2.099916,1 +7,1,25,1,1,125968,1,1176.179,16.41615,1,5,1,0,0,0,0,0,0,0,0,0,0,0,6,75.8,4.3,0,,340,340,1,1,1.791759,5.828946,0,3.258096,7.21524,1,0,0,58.89369,7.070876,1.791759,,0 +7,1,25,1,2,125968,1,1176.179,17.41615,1,5,1,0,0,0,0,0,0,0,0,0,0,0,6,75.8,4.3,0,,340,340,1,1,1.791759,5.828946,0,3.258096,7.21524,1,0,0,58.89369,7.070876,1.791759,,0 +7,1,25,1,1,125969,1,1176.179,17.52225,1,5,1,136.8233,5.264723,0,0,0,142.088,0,0,0,3,0,6,85.3,4.3,0,,340,340,1,1,1.791759,5.828946,0,3.258096,7.21524,1,0,0,58.69306,7.070876,1.791759,4.956447,1 +7,1,25,1,2,125969,1,1176.179,18.52225,1,5,1,41.3718,3.739793,0,0,253.4295,298.5411,1,0,0,2,0,6,85.3,4.3,0,,340,340,0,0,1.791759,5.828946,0,3.258096,7.21524,1,0,0,58.69306,7.070876,1.791759,5.698908,1 +7,1,25,1,3,125969,1,1176.179,19.52225,1,5,1,9.415262,0,0,0,0,9.415262,0,0,0,0,0,1,85.3,4.3,0,,340,340,0,0,0,5.828946,0,3.258096,7.21524,1,0,0,58.69306,7.070876,0,2.242332,1 +7,1,25,1,4,125969,1,1176.179,20.52225,1,5,1,0,0,0,0,0,0,0,0,0,0,0,1,85.3,4.3,0,,340,340,0,0,0,5.828946,0,3.258096,7.21524,1,0,0,58.69306,7.070876,0,,0 +7,1,25,1,1,125970,1,1176.179,1.850787,0,5,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,340,340,1,0,1.791759,5.828946,0,3.258096,7.21524,1,0,0,73.69083,7.070876,1.791759,,0 +7,1,25,1,2,125970,1,1176.179,2.850787,0,5,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,340,340,1,0,1.791759,5.828946,0,3.258096,7.21524,1,0,0,73.69083,7.070876,1.791759,,0 +7,1,25,1,1,125971,1,1176.179,45.83984,1,5,1,0,0,0,0,0,0,0,0,0,0,0,6,63.3,8.7,0,,340,340,0,0,1.791759,5.828946,0,3.258096,7.21524,0,1,0,51.09576,7.070876,1.791759,,0 +7,1,25,1,2,125971,1,1176.179,46.83984,1,5,1,54.98095,10.90365,0,0,0,65.8846,0,0,0,5,0,6,63.3,8.7,0,,340,340,0,0,1.791759,5.828946,0,3.258096,7.21524,0,1,0,51.09576,7.070876,1.791759,4.187905,1 +1,1,0,0,1,125983,0,16303.07,27.41684,1,12,1,15.07841,8.455971,0,0,0,23.53438,0,0,0,2,0,2,35,13.73189,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,72.96643,9.69917,.6931472,3.158462,1 +1,1,0,0,2,125983,0,16303.07,28.41684,1,12,1,88.10573,17.94604,0,0,0,106.0518,0,0,0,6,0,2,35,13.73189,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,72.96643,9.69917,.6931472,4.663928,1 +1,1,0,0,3,125983,0,16303.07,29.41684,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,35,13.73189,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,72.96643,9.69917,.6931472,,0 +1,1,0,0,1,125984,0,16303.07,9.434634,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,300,300,1,0,.6931472,5.703783,1,0,0,0,0,0,86.51532,9.69917,.6931472,,0 +1,1,0,0,2,125984,0,16303.07,10.43463,0,12,1,16.51982,3.744493,0,0,0,20.26432,0,0,0,0,0,2,74.36826,13.73189,0,,300,300,1,0,.6931472,5.703783,1,0,0,0,0,0,86.51532,9.69917,.6931472,3.008862,1 +1,1,0,0,3,125984,0,16303.07,11.43463,0,12,1,10.0452,0,0,0,0,10.0452,0,0,0,2,0,2,74.36826,13.73189,0,,300,300,1,0,.6931472,5.703783,1,0,0,0,0,0,86.51532,9.69917,.6931472,2.307095,1 +1,1,0,0,1,126004,0,13952.85,51.66325,1,12,1,257.5848,48.26889,32.326,0,1196.336,1534.515,1,0,0,35,1,2,87.5,13.73189,1,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,61.69535,9.543511,.6931472,7.33597,1 +1,1,0,0,2,126004,0,13952.85,52.66325,1,12,1,139.902,108.3778,9.798585,0,0,258.0784,0,0,0,20,0,2,87.5,13.73189,1,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,61.69535,9.543511,.6931472,5.553263,1 +1,1,0,0,3,126004,0,13952.85,53.66325,1,12,1,99.85134,44.92072,0,0,0,144.772,0,0,0,16,0,2,87.5,13.73189,1,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,61.69535,9.543511,.6931472,4.975161,1 +1,1,0,0,4,126004,0,13952.85,54.66325,1,12,1,187.2419,31.91831,51.85865,0,1240.936,1511.955,1,0,0,9,1,2,87.5,13.73189,1,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,61.69535,9.543511,.6931472,7.321159,1 +1,1,0,0,5,126004,0,13952.85,55.66325,1,12,1,275.9781,53.71898,35.17038,0,903.7021,1268.57,1,0,0,16,1,2,87.5,13.73189,1,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,61.69535,9.543511,.6931472,7.145645,1 +1,1,0,0,1,126005,0,13952.85,54.70226,0,16,1,217.7275,63.3373,36.68055,0,0,317.7454,0,0,0,22,1,2,85,13.73189,0,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,64.83063,9.543511,.6931472,5.76125,1 +1,1,0,0,2,126005,0,13952.85,55.70226,0,16,1,213.9358,207.4088,23.08111,0,0,444.4257,0,0,0,9,1,2,85,13.73189,0,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,64.83063,9.543511,.6931472,6.096783,1 +1,1,0,0,3,126005,0,13952.85,56.70226,0,16,1,239.3459,54.42517,29.73241,0,0,323.5035,0,0,0,13,1,2,85,13.73189,0,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,64.83063,9.543511,.6931472,5.77921,1 +1,1,0,0,4,126005,0,13952.85,57.70226,0,16,1,174.6214,57.96237,22.94631,0,0,255.5301,0,0,0,8,0,2,85,13.73189,0,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,64.83063,9.543511,.6931472,5.54334,1 +1,1,0,0,5,126005,0,13952.85,58.70226,0,16,1,71.93942,87.61464,31.59024,0,0,191.1443,0,0,0,5,1,2,85,13.73189,0,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,64.83063,9.543511,.6931472,5.253029,1 +9,1,50,0,1,126039,0,9542.002,28.21082,1,10,1,18.4414,1.302796,31.08269,0,0,50.82689,0,0,0,1,1,5,91.3,13.73189,0,,799,799,0,0,1.609438,6.683361,0,3.931826,7.376508,1,0,0,68.16984,9.163564,1.609438,3.928426,1 +9,1,50,0,2,126039,0,9542.002,29.21082,1,10,1,10.88732,9.27055,0,0,0,20.15787,0,0,0,1,0,5,91.3,13.73189,0,,799,799,0,0,1.609438,6.683361,0,3.931826,7.376508,1,0,0,68.16984,9.163564,1.609438,3.003595,1 +9,1,50,0,3,126039,0,9542.002,30.21082,1,10,1,10.90188,9.544103,0,0,0,20.44599,0,0,0,1,0,5,91.3,13.73189,0,,799,799,0,0,1.609438,6.683361,0,3.931826,7.376508,1,0,0,68.16984,9.163564,1.609438,3.017787,1 +9,1,50,0,1,126040,0,9542.002,8.416153,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,799,799,1,1,1.609438,6.683361,0,3.931826,7.376508,1,0,0,71.09991,9.163564,1.609438,,0 +9,1,50,0,2,126040,0,9542.002,9.416153,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,799,799,1,1,1.609438,6.683361,0,3.931826,7.376508,1,0,0,71.09991,9.163564,1.609438,,0 +9,1,50,0,3,126040,0,9542.002,10.41615,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,799,799,1,1,1.609438,6.683361,0,3.931826,7.376508,1,0,0,71.09991,9.163564,1.609438,,0 +9,1,50,0,1,126041,0,9542.002,9.46475,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,799,799,1,1,1.609438,6.683361,0,3.931826,7.376508,1,0,0,71.09991,9.163564,1.609438,,0 +9,1,50,0,2,126041,0,9542.002,10.46475,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,799,799,1,1,1.609438,6.683361,0,3.931826,7.376508,1,0,0,71.09991,9.163564,1.609438,,0 +9,1,50,0,3,126041,0,9542.002,11.46475,1,10,1,226.2735,0,0,0,0,226.2735,0,0,0,3,0,5,74.36826,13.73189,0,,799,799,1,1,1.609438,6.683361,0,3.931826,7.376508,1,0,0,71.09991,9.163564,1.609438,5.421745,1 +9,1,50,0,1,126042,0,9542.002,32.282,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,95,13.73189,0,,799,799,0,0,1.609438,6.683361,0,3.931826,7.376508,1,0,0,71.35583,9.163564,1.609438,,0 +9,1,50,0,2,126042,0,9542.002,33.282,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,95,13.73189,0,,799,799,0,0,1.609438,6.683361,0,3.931826,7.376508,1,0,0,71.35583,9.163564,1.609438,,0 +9,1,50,0,3,126042,0,9542.002,34.282,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,95,13.73189,0,,799,799,0,0,1.609438,6.683361,0,3.931826,7.376508,1,0,0,71.35583,9.163564,1.609438,,0 +9,1,50,0,1,126049,0,12300.87,8.427105,1,11,1,118.0801,1.177856,0,0,0,119.2579,0,0,0,2,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,1,0,0,73.41399,9.417506,1.791759,4.781289,1 +9,1,50,0,2,126049,0,12300.87,9.427105,1,11,1,16.71159,2.156334,0,0,0,18.86792,0,0,0,1,1,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,1,0,0,73.41399,9.417506,1.791759,2.937463,1 +9,1,50,0,3,126049,0,12300.87,10.4271,1,11,1,7.371007,1.474201,0,0,0,8.845209,0,0,0,1,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,1,0,0,73.41399,9.417506,1.94591,2.179876,1 +9,1,50,0,1,126050,0,12300.87,32.10678,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,70,13.73189,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,71.28197,9.417506,1.791759,,0 +9,1,50,0,2,126050,0,12300.87,33.10678,0,12,1,10.78167,0,0,0,0,10.78167,0,0,0,0,1,6,70,13.73189,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,71.28197,9.417506,1.791759,2.377848,1 +9,1,50,0,3,126050,0,12300.87,34.10678,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,70,13.73189,0,,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,71.28197,9.417506,1.94591,,0 +9,1,50,0,1,126051,0,12300.87,5.177276,0,11,1,44.75854,6.478209,0,0,0,51.23675,0,0,0,4,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,74.73775,9.417506,1.791759,3.936457,1 +9,1,50,0,2,126051,0,12300.87,6.177276,0,11,1,15.63342,5.54717,0,0,0,21.18059,0,0,0,2,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,74.73775,9.417506,1.791759,3.053085,1 +9,1,50,0,3,126051,0,12300.87,7.177276,0,11,1,467.9656,19.48894,0,0,1272.885,1760.339,1,0,0,8,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,74.73775,9.417506,1.94591,7.473262,1 +9,1,50,0,1,126052,0,12300.87,1.544148,0,11,1,117.7856,16.48999,0,0,0,134.2756,0,0,0,10,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,70.69041,9.417506,1.791759,4.899895,1 +9,1,50,0,2,126052,0,12300.87,2.544148,0,11,1,100.8086,8.371967,0,0,0,109.1806,0,0,0,5,5,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,70.69041,9.417506,1.791759,4.693003,1 +9,1,50,0,3,126052,0,12300.87,3.544148,0,11,1,485.4546,6.579853,0,0,0,492.0344,0,0,0,5,60,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,70.69041,9.417506,1.94591,6.198549,1 +9,1,50,0,1,126053,0,12300.87,29.73032,1,11,1,41.8139,9.110719,0,0,0,50.92462,0,0,0,2,1,6,87.5,13.73189,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,75.535,9.417506,1.791759,3.930346,1 +9,1,50,0,2,126053,0,12300.87,30.73032,1,11,1,8.625337,13.66038,0,0,992.1833,1014.469,2,0,0,1,0,6,87.5,13.73189,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,75.535,9.417506,1.791759,6.922121,1 +9,1,50,0,3,126053,0,12300.87,31.73032,1,11,1,19.16462,4.412776,0,0,0,23.5774,0,0,0,2,0,7,87.5,13.73189,0,,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,0,0,0,75.535,9.417506,1.94591,3.160289,1 +9,1,50,0,1,126054,0,12300.87,11.55099,1,11,1,88.33923,7.29682,347.4676,0,0,443.1036,0,0,0,5,2,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,1,0,0,77.6554,9.417506,1.791759,6.093804,1 +9,1,50,0,2,126054,0,12300.87,12.55099,1,11,1,85.44474,2.156334,170.3504,0,0,257.9515,0,0,0,7,1,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,1,0,0,77.6554,9.417506,1.791759,5.552772,1 +9,1,50,0,3,126054,0,12300.87,13.55099,1,11,1,150.0737,3.439803,19.65602,0,0,173.1695,0,0,0,10,1,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,1,0,0,77.6554,9.417506,1.94591,5.154271,1 +2,1,100,0,1,126055,0,4093.052,21.77413,0,12,1,13.54535,0,38.86926,0,0,52.4146,0,0,0,0,1,1,88.8,13.73189,0,,400,0,0,0,0,0,1,0,0,0,0,0,78.66626,8.31729,0,3.959185,1 +2,1,100,0,2,126055,0,4093.052,22.77413,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,88.8,13.73189,0,,400,0,0,0,0,0,1,0,0,0,0,0,78.66626,8.31729,0,,0 +2,1,100,0,3,126055,0,4093.052,23.77413,0,12,1,15.72482,3.965602,0,0,0,19.69042,0,0,0,2,0,1,88.8,13.73189,0,,400,0,0,0,0,0,1,0,0,0,0,0,78.66626,8.31729,0,2.980132,1 +2,1,100,0,4,126055,0,4093.052,24.77413,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,88.8,13.73189,0,,400,0,0,0,0,0,1,0,0,0,0,0,78.66626,8.31729,0,,0 +2,1,100,0,5,126055,0,4093.052,25.77413,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,88.8,13.73189,0,,400,0,0,0,0,0,1,0,0,0,0,0,78.66626,8.31729,0,,0 +2,1,100,0,1,126056,0,8754.739,47.22792,1,8,1,58.30389,49.14016,0,0,477.0023,584.4464,1,0,0,2,0,3,88.8,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,68.69417,9.077465,1.098612,6.370665,1 +2,1,100,0,2,126056,0,8754.739,48.22792,1,8,1,33.96227,66.42587,38.30728,0,0,138.6954,0,0,0,3,1,3,88.8,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,68.69417,9.077465,1.098612,4.93228,1 +2,1,100,0,3,126056,0,8754.739,49.22792,1,8,1,18.91892,56.82064,0,0,0,75.73956,0,0,0,1,0,3,88.8,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,68.69417,9.077465,1.098612,4.327301,1 +2,1,100,0,4,126056,0,8754.739,50.22792,1,8,1,18.45943,27.31996,0,0,0,45.7794,0,0,0,1,0,3,88.8,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,68.69417,9.077465,1.098612,3.823834,1 +2,1,100,0,5,126056,0,8754.739,51.22792,1,8,1,295.0396,54.80617,0,0,0,349.8458,0,0,0,4,0,3,88.8,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,68.69417,9.077465,1.098612,5.857492,1 +2,1,100,0,1,126057,0,8754.739,53.3306,0,8,1,204.947,139.3404,40.61837,0,0,384.9058,0,0,0,15,1,3,82.5,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,67.05456,9.077465,1.098612,5.952999,1 +2,1,100,0,2,126057,0,8754.739,54.3306,0,8,1,118.248,12.54986,0,0,734.8302,865.6281,1,0,0,9,0,3,82.5,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,67.05456,9.077465,1.098612,6.763455,1 +2,1,100,0,3,126057,0,8754.739,55.3306,0,8,1,159.0909,42.67322,0,0,1207.027,1408.791,1,0,0,10,0,3,82.5,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,67.05456,9.077465,1.098612,7.250487,1 +2,1,100,0,4,126057,0,8754.739,56.3306,0,8,1,41.47675,4.494075,31.43573,0,0,77.40656,0,0,0,2,1,3,82.5,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,67.05456,9.077465,1.098612,4.349072,1 +2,1,100,0,5,126057,0,8754.739,57.3306,0,8,1,347.4781,16.36932,35.71905,0,0,399.5665,0,0,0,4,1,3,82.5,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,67.05456,9.077465,1.098612,5.99038,1 +2,1,100,0,1,126058,0,8754.739,18.12457,0,12.32507,1,25.91284,30.6066,0,0,0,56.51944,0,0,0,4,0,3,85,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,72.24671,9.077465,1.098612,4.034585,1 +2,1,100,0,2,126058,0,8754.739,19.12457,0,12.32507,1,19.94609,45.92992,16.90027,0,0,82.77628,0,0,0,2,1,3,85,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,72.24671,9.077465,1.098612,4.416142,1 +2,1,100,0,3,126058,0,8754.739,20.12457,0,12.32507,1,9.82801,52.79115,34.91892,0,0,97.53809,0,0,0,0,1,3,85,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,72.24671,9.077465,1.098612,4.580243,1 +2,1,100,0,4,126058,0,8754.739,21.12457,0,12.32507,1,32.81677,26.08478,0,0,0,58.90155,0,0,0,3,0,3,85,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,72.24671,9.077465,1.098612,4.075867,1 +2,1,100,0,5,126058,0,8754.739,22.12457,0,12.32507,1,0,0,0,0,0,0,0,0,0,0,0,3,85,13.73189,0,,800,800,0,0,1.098612,6.684612,1,0,0,1,0,0,72.24671,9.077465,1.098612,,0 +7,1,25,1,1,126064,0,7733.25,46.83094,1,7,1,74.34053,1.199041,51.81655,0,0,127.3561,0,0,0,6,1,2,78.9,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,1,37.95773,8.953414,.6931472,4.846987,1 +7,1,25,1,2,126064,0,7733.25,47.83094,1,7,1,23.00109,14.57284,5.476451,0,0,43.05038,0,0,0,2,0,2,78.9,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,1,37.95773,8.953414,.6931472,3.762371,1 +7,1,25,1,3,126064,0,7733.25,48.83094,1,7,1,37.90524,2.533666,0,0,0,40.4389,0,0,0,5,0,2,78.9,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,1,37.95773,8.953414,.6931472,3.699792,1 +7,1,25,1,1,126065,0,7733.25,52.93634,0,8,1,107.3141,139.3465,42.42206,0,0,289.0827,0,0,0,9,1,2,61.1,30.4,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,1,46.79753,8.953414,.6931472,5.666713,1 +7,1,25,1,2,126065,0,7733.25,53.93634,0,8,1,25.73932,52.24535,0,0,0,77.98466,0,0,0,2,0,2,61.1,30.4,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,1,46.79753,8.953414,.6931472,4.356512,1 +7,1,25,1,3,126065,0,7733.25,54.93634,0,8,1,194.2643,62.23441,0,0,7492.12,7748.619,3,0,0,8,0,2,61.1,30.4,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,1,46.79753,8.953414,.6931472,8.95527,1 +11,1,0,0,1,126084,0,11130.89,10.48323,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,83.49574,9.31757,1.609438,,0 +11,1,0,0,2,126084,0,11130.89,11.48323,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,83.49574,9.31757,1.609438,,0 +11,1,0,0,3,126084,0,11130.89,12.48323,0,9,1,4.914005,0,0,0,0,4.914005,0,0,0,1,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,83.49574,9.31757,1.609438,1.592089,1 +11,1,0,0,4,126084,0,11130.89,13.48323,0,9,1,7.748405,0,0,0,0,7.748405,0,0,0,1,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,83.49574,9.31757,1.609438,2.047487,1 +11,1,0,0,5,126084,0,11130.89,14.48323,0,9,1,20.84202,0,0,0,0,20.84202,0,0,0,1,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,83.49574,9.31757,1.609438,3.036971,1 +11,1,0,0,1,126085,0,11130.89,31.58932,0,9,1,8.833922,0,32.00824,0,0,40.84217,0,0,0,0,1,5,76.8,13,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,74.49057,9.31757,1.609438,3.709715,1 +11,1,0,0,2,126085,0,11130.89,32.58932,0,9,1,33.15364,0,2.156334,0,0,35.30997,0,0,0,0,1,5,76.8,13,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,74.49057,9.31757,1.609438,3.564166,1 +11,1,0,0,3,126085,0,11130.89,33.58932,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,76.8,13,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,74.49057,9.31757,1.609438,,0 +11,1,0,0,4,126085,0,11130.89,34.58932,0,9,1,0,0,0,54.69462,0,0,0,0,4,0,0,5,76.8,13,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,74.49057,9.31757,1.609438,,0 +11,1,0,0,5,126085,0,11130.89,35.58932,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,76.8,13,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,74.49057,9.31757,1.609438,,0 +11,1,0,0,1,126086,0,11130.89,12.10678,0,9,1,7.656066,5.235571,0,0,0,12.89164,0,0,0,1,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,1,0,0,75.63023,9.31757,1.609438,2.556579,1 +11,1,0,0,2,126086,0,11130.89,13.10678,0,9,1,7.54717,0,0,0,0,7.54717,0,0,0,2,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,1,0,0,75.63023,9.31757,1.609438,2.021173,1 +11,1,0,0,3,126086,0,11130.89,14.10678,0,9,1,9.336609,3.87715,0,0,0,13.21376,0,0,0,2,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,1,0,0,75.63023,9.31757,1.609438,2.581259,1 +11,1,0,0,4,126086,0,11130.89,15.10678,0,9,1,104.6035,0,0,0,0,104.6035,0,0,0,2,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,1,0,0,75.63023,9.31757,1.609438,4.650177,1 +11,1,0,0,5,126086,0,11130.89,16.10678,0,9,1,25.42726,0,0,0,0,25.42726,0,0,0,2,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,1,0,0,75.63023,9.31757,1.609438,3.235822,1 +11,1,0,0,1,126087,0,11130.89,9.407255,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,82.98176,9.31757,1.609438,,0 +11,1,0,0,2,126087,0,11130.89,10.40726,1,9,1,0,2.097035,0,0,0,2.097035,0,0,0,0,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,82.98176,9.31757,1.609438,.7405244,1 +11,1,0,0,3,126087,0,11130.89,11.40726,1,9,1,12.28501,0,0,0,0,12.28501,0,0,0,2,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,82.98176,9.31757,1.609438,2.50838,1 +11,1,0,0,4,126087,0,11130.89,12.40726,1,9,1,6.381039,0,0,0,0,6.381039,0,0,0,1,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,82.98176,9.31757,1.609438,1.853331,1 +11,1,0,0,5,126087,0,11130.89,13.40726,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,82.98176,9.31757,1.609438,,0 +11,1,0,0,1,126088,0,11130.89,27.19781,1,9,1,61.83746,37.04358,0,0,569.6584,668.5394,1,0,0,7,0,5,73.7,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,75.38175,9.31757,1.609438,6.505095,1 +11,1,0,0,2,126088,0,11130.89,28.19781,1,9,1,13.47709,7.024259,0,0,347.407,367.9084,1,0,0,2,0,5,73.7,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,75.38175,9.31757,1.609438,5.907834,1 +11,1,0,0,3,126088,0,11130.89,29.19781,1,9,1,19.65602,1.911548,0,0,0,21.56757,0,0,0,2,0,5,73.7,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,75.38175,9.31757,1.609438,3.071191,1 +11,1,0,0,4,126088,0,11130.89,30.19781,1,9,1,20.73838,3.682771,0,0,0,24.42115,0,0,0,1,0,5,73.7,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,75.38175,9.31757,1.609438,3.19545,1 +11,1,0,0,5,126088,0,11130.89,31.19781,1,9,1,43.14297,35.64402,0,0,797.9783,876.7653,1,0,0,4,0,5,73.7,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,75.38175,9.31757,1.609438,6.776239,1 +11,1,0,1,1,126091,0,6160.05,59.03628,1,12,1,94.84319,76.53197,34.66827,0,0,206.0434,0,0,0,5,1,1,56.8,34.8,1,,0,94,0,0,0,4.543295,0,0,0,1,0,0,68.39278,8.726003,0,5.328087,1 +11,1,0,1,2,126091,0,6160.05,60.03628,1,12,1,37.85793,134.6255,0,0,0,172.4835,0,0,0,5,0,1,56.8,34.8,1,,0,94,0,0,0,4.543295,0,0,0,1,0,0,68.39278,8.726003,0,5.150301,1 +11,1,0,1,3,126091,0,6160.05,61.03628,1,12,1,115.4093,74.85686,33.50075,0,0,223.767,0,0,0,8,2,1,56.8,34.8,1,,0,94,0,0,0,4.543295,0,0,0,1,0,0,68.39278,8.726003,0,5.410605,1 +11,1,0,1,4,126091,0,6160.05,62.03628,1,12,1,61.65971,48.77608,0,0,0,110.4358,0,0,0,7,0,1,56.8,34.8,1,,0,94,0,0,0,4.543295,0,0,0,1,0,0,68.39278,8.726003,0,4.704434,1 +11,1,0,1,5,126091,0,6160.05,63.03628,1,12,1,49.76606,65.95917,40.45087,0,0,156.1761,0,0,0,6,1,1,56.8,34.8,1,,0,94,0,0,0,4.543295,0,0,0,1,0,0,68.39278,8.726003,0,5.050984,1 +3,1,100,0,1,126107,0,8785.98,46.41752,1,8,1,10.60071,0,46.77856,0,0,57.37927,0,0,0,0,1,1,80,13.73189,0,,922,922,0,0,0,6.826545,1,0,0,1,0,0,62.95374,9.081026,0,4.049683,1 +3,1,100,0,2,126107,0,8785.98,47.41752,1,8,1,166.7763,0,0,0,0,166.7763,0,0,0,3,0,1,80,13.73189,0,,922,922,0,0,0,6.826545,1,0,0,1,0,0,62.95374,9.081026,0,5.116653,1 +3,1,100,0,3,126107,0,8785.98,48.41752,1,8,1,175.43,27.86241,0,0,1196.427,1399.72,1,0,0,5,0,1,80,13.73189,0,,922,922,0,0,0,6.826545,1,0,0,1,0,0,62.95374,9.081026,0,7.244028,1 +11,1,0,1,1,126119,0,13816.94,58.87748,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,93.7,4.3,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.25327,9.533723,1.098612,,0 +11,1,0,1,2,126119,0,13816.94,59.87748,0,16,1,31.93833,1.624449,16.0022,0,0,49.56498,0,0,0,1,1,3,93.7,4.3,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.25327,9.533723,1.098612,3.903285,1 +11,1,0,1,3,126119,0,13816.94,60.87748,0,16,1,32.14465,2.199899,0,0,0,34.34455,0,0,0,2,1,3,93.7,4.3,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.25327,9.533723,1.098612,3.536443,1 +11,1,0,1,4,126119,0,13816.94,61.87748,0,16,1,20.86231,0,0,0,0,20.86231,0,0,0,1,1,3,93.7,4.3,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.25327,9.533723,1.098612,3.037944,1 +11,1,0,1,5,126119,0,13816.94,62.87748,0,16,1,14.46193,0,45.44875,0,0,59.91068,0,0,0,0,2,3,93.7,4.3,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.25327,9.533723,1.098612,4.092854,1 +11,1,0,1,1,126120,0,13816.94,17.79055,0,12,1,54.28227,15.18697,31.73703,0,0,101.2063,0,0,0,5,1,3,92.6,4.3,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,80.46294,9.533723,1.098612,4.617161,1 +11,1,0,1,2,126120,0,13816.94,18.79055,0,12,1,0,6.150881,0,0,0,6.150881,0,0,0,0,0,3,92.6,4.3,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,80.46294,9.533723,1.098612,1.816595,1 +11,1,0,1,3,126120,0,13816.94,19.79055,0,12,1,51.58212,9.819186,0,0,0,61.40131,0,0,0,5,0,3,92.6,4.3,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,80.46294,9.533723,1.098612,4.117431,1 +11,1,0,1,4,126120,0,13816.94,20.79055,0,12,1,14.83542,0,22.41539,0,0,37.25081,0,0,0,0,2,3,92.6,4.3,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,80.46294,9.533723,1.098612,3.617674,1 +11,1,0,1,5,126120,0,13816.94,21.79055,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,92.6,4.3,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,80.46294,9.533723,1.098612,,0 +11,1,0,1,1,126121,0,13816.94,53.80151,1,12,1,81.4234,28.32328,0,0,310.6273,420.3739,1,0,0,7,0,3,86.3,17.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,71.963,9.533723,1.098612,6.041145,1 +11,1,0,1,2,126121,0,13816.94,54.80151,1,12,1,24.77974,15.00551,33.11674,0,1072.902,1145.804,1,0,0,1,1,3,86.3,17.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,71.963,9.533723,1.098612,7.043862,1 +11,1,0,1,3,126121,0,13816.94,55.80151,1,12,1,57.75992,10.7333,0,0,0,68.49322,0,0,0,1,1,3,86.3,17.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,71.963,9.533723,1.098612,4.226735,1 +11,1,0,1,4,126121,0,13816.94,56.80151,1,12,1,73.24989,5.535466,0,0,0,78.78535,0,0,0,3,1,3,86.3,17.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,71.963,9.533723,1.098612,4.366727,1 +11,1,0,1,5,126121,0,13816.94,57.80151,1,12,1,77.41386,9.136538,41.29307,0,0,127.8435,0,0,0,4,1,3,86.3,17.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,71.963,9.533723,1.098612,4.850807,1 +8,1,50,1,1,126129,0,11888.34,32.31485,0,9,1,25.58001,0,0,0,0,25.58001,0,0,0,2,0,2,88.4,8.7,0,,949,949,0,0,.6931472,6.855409,0,3.931826,7.548556,0,0,0,74.574,9.383397,.6931472,3.241811,1 +8,1,50,1,2,126129,0,11888.34,33.31485,0,9,1,0,0,0,0,0,0,0,0,0,0,0,2,88.4,8.7,0,,949,949,0,0,.6931472,6.855409,0,3.931826,7.548556,0,0,0,74.574,9.383397,.6931472,,0 +8,1,50,1,3,126129,0,11888.34,34.31485,0,9,1,17.3439,0,0,0,0,17.3439,0,0,0,1,0,2,88.4,8.7,0,,949,949,0,0,.6931472,6.855409,0,3.931826,7.548556,0,0,0,74.574,9.383397,.6931472,2.853241,1 +8,1,50,1,4,126129,0,11888.34,35.31485,0,9,1,6.883892,0,0,0,0,6.883892,0,0,0,1,0,2,88.4,8.7,0,,949,949,0,0,.6931472,6.855409,0,3.931826,7.548556,0,0,0,74.574,9.383397,.6931472,1.929184,1 +8,1,50,1,5,126129,0,11888.34,36.31485,0,9,1,0,0,0,0,0,0,0,0,0,0,0,2,88.4,8.7,0,,949,949,0,0,.6931472,6.855409,0,3.931826,7.548556,0,0,0,74.574,9.383397,.6931472,,0 +8,1,50,1,1,126130,0,11888.34,28.4627,1,15,1,73.17073,7.828673,28.81618,0,0,109.8156,0,0,0,8,1,2,81.1,21.7,0,,949,949,0,0,.6931472,6.855409,0,3.931826,7.548556,0,0,0,78.87518,9.383397,.6931472,4.698802,1 +8,1,50,1,2,126130,0,11888.34,29.4627,1,15,1,19.0528,1.453457,12.90147,0,0,33.40773,0,0,0,1,1,2,81.1,21.7,0,,949,949,0,0,.6931472,6.855409,0,3.931826,7.548556,0,0,0,78.87518,9.383397,.6931472,3.508787,1 +8,1,50,1,3,126130,0,11888.34,30.4627,1,15,1,38.65213,5.891972,0,0,0,44.5441,0,0,0,5,1,2,81.1,21.7,0,,949,949,0,0,.6931472,6.855409,0,3.931826,7.548556,0,0,0,78.87518,9.383397,.6931472,3.79648,1 +8,1,50,1,4,126130,0,11888.34,31.4627,1,15,1,20.65167,2.014686,33.18495,0,0,55.85131,0,0,0,3,0,2,81.1,21.7,0,,949,949,0,0,.6931472,6.855409,0,3.931826,7.548556,0,0,0,78.87518,9.383397,.6931472,4.022693,1 +8,1,50,1,5,126130,0,11888.34,32.4627,1,15,1,49.22171,4.362642,0,0,0,53.58435,0,0,0,7,0,2,81.1,21.7,0,,949,949,0,0,.6931472,6.855409,0,3.931826,7.548556,0,0,0,78.87518,9.383397,.6931472,3.981257,1 +7,1,25,1,1,126134,0,9542.002,32.39699,0,14,1,11.99041,0,31.99041,0,0,43.98082,0,0,0,0,1,6,84.2,17.4,0,,0,0,0,0,1.791759,0,0,3.258096,0,0,0,0,77.76795,9.163564,1.791759,3.783754,1 +7,1,25,1,2,126134,0,9542.002,33.39699,0,14,1,0,2.272727,0,0,0,2.272727,0,0,0,0,0,6,84.2,17.4,0,,0,0,0,0,1.791759,0,0,3.258096,0,0,0,0,77.76795,9.163564,1.791759,.8209805,1 +7,1,25,1,3,126134,0,9542.002,34.39699,0,14,1,0,0,29.03242,0,0,29.03242,0,0,0,0,0,6,84.2,17.4,0,,0,0,0,0,1.791759,0,0,3.258096,0,0,0,0,77.76795,9.163564,1.791759,3.368413,1 +7,1,25,1,4,126134,0,9542.002,35.39699,0,14,1,0,0,0,0,0,0,0,0,0,0,0,6,84.2,17.4,0,,0,0,0,0,1.791759,0,0,3.258096,0,0,0,0,77.76795,9.163564,1.791759,,0 +7,1,25,1,5,126134,0,9542.002,36.39699,0,14,1,12.69573,0,28.81083,0,0,41.50656,0,0,0,1,0,6,84.2,17.4,0,,0,0,0,0,1.791759,0,0,3.258096,0,0,0,0,77.76795,9.163564,1.791759,3.725852,1 +7,1,25,1,1,126135,0,9542.002,32.72553,1,14,1,59.95204,11.84053,27.50599,0,0,99.29856,0,0,0,5,1,6,81.1,30.4,0,,0,0,0,0,1.791759,0,0,3.258096,0,0,0,0,78.65913,9.163564,1.791759,4.598131,1 +7,1,25,1,2,126135,0,9542.002,33.72553,1,14,1,19.16758,5.531216,0,0,0,24.6988,0,0,0,2,0,6,81.1,30.4,0,,0,0,0,0,1.791759,0,0,3.258096,0,0,0,0,78.65913,9.163564,1.791759,3.206754,1 +7,1,25,1,3,126135,0,9542.002,34.72553,1,14,1,19.95012,1.496259,0,0,0,21.44638,0,0,0,2,0,6,81.1,30.4,0,,0,0,0,0,1.791759,0,0,3.258096,0,0,0,0,78.65913,9.163564,1.791759,3.065556,1 +7,1,25,1,4,126135,0,9542.002,35.72553,1,14,1,0,0,0,0,0,0,0,0,0,0,0,6,81.1,30.4,0,,0,0,0,0,1.791759,0,0,3.258096,0,0,0,0,78.65913,9.163564,1.791759,,0 +7,1,25,1,5,126135,0,9542.002,36.72553,1,14,1,8.463818,2.835379,0,0,0,11.2992,0,0,0,1,0,6,81.1,30.4,0,,0,0,0,0,1.791759,0,0,3.258096,0,0,0,0,78.65913,9.163564,1.791759,2.424731,1 +7,1,25,1,1,126136,0,9542.002,8.065708,0,14,1,5.395683,1.498801,0,0,0,6.894485,0,0,0,0,1,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,83.32977,9.163564,1.791759,1.930722,1 +7,1,25,1,2,126136,0,9542.002,9.065708,0,14,1,42.71632,0,0,0,0,42.71632,0,0,0,1,4,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,83.32977,9.163564,1.791759,3.754581,1 +7,1,25,1,3,126136,0,9542.002,10.06571,0,14,1,25.93516,0,23.35162,0,0,49.28678,0,0,0,2,0,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,83.32977,9.163564,1.791759,3.897656,1 +7,1,25,1,4,126136,0,9542.002,11.06571,0,14,1,187.8746,2.236053,0,0,0,190.1107,0,0,0,3,1,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,83.32977,9.163564,1.791759,5.247606,1 +7,1,25,1,5,126136,0,9542.002,12.06571,0,14,1,52.89886,0,23.19509,0,0,76.09395,0,0,0,3,0,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,83.32977,9.163564,1.791759,4.331969,1 +7,1,25,1,1,126137,0,9542.002,6.316222,0,14,1,5.395683,0,0,0,0,5.395683,0,0,0,0,1,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,83.32977,9.163564,1.791759,1.685599,1 +7,1,25,1,2,126137,0,9542.002,7.316222,0,14,1,62.97919,0,0,0,0,62.97919,0,0,0,2,2,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,83.32977,9.163564,1.791759,4.142804,1 +7,1,25,1,3,126137,0,9542.002,8.316222,0,14,1,66.20947,0,0,0,0,66.20947,0,0,0,0,1,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,83.32977,9.163564,1.791759,4.192823,1 +7,1,25,1,4,126137,0,9542.002,9.316222,0,14,1,23.51314,0,25.27432,0,0,48.78746,0,0,0,1,1,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,83.32977,9.163564,1.791759,3.887473,1 +7,1,25,1,5,126137,0,9542.002,10.31622,0,14,1,9.310199,0,0,0,0,9.310199,0,0,0,1,0,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,83.32977,9.163564,1.791759,2.23111,1 +7,1,25,1,1,126138,0,9542.002,8.065708,0,14,1,23.38129,10.13189,0,0,0,33.51319,0,0,0,3,1,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,81.39986,9.163564,1.791759,3.511939,1 +7,1,25,1,2,126138,0,9542.002,9.065708,0,14,1,34.50164,4.162103,23.92661,0,0,62.59036,0,0,0,3,1,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,81.39986,9.163564,1.791759,4.136611,1 +7,1,25,1,3,126138,0,9542.002,10.06571,0,14,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,81.39986,9.163564,1.791759,,0 +7,1,25,1,4,126138,0,9542.002,11.06571,0,14,1,23.51314,2.051637,15.73075,0,0,41.29553,0,0,0,1,1,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,81.39986,9.163564,1.791759,3.720754,1 +7,1,25,1,5,126138,0,9542.002,12.06571,0,14,1,11.42615,0,0,0,0,11.42615,0,0,0,1,0,6,74.36826,13.73189,0,,0,0,1,0,1.791759,0,0,3.258096,0,0,0,0,81.39986,9.163564,1.791759,2.435905,1 +7,1,25,1,1,126139,0,9542.002,9.204655,1,14,1,25.77938,8.603118,0,0,0,34.3825,0,0,0,2,1,6,74.36826,13.73189,0,,0,0,1,1,1.791759,0,0,3.258096,0,0,0,0,82.8158,9.163564,1.791759,3.537548,1 +7,1,25,1,2,126139,0,9542.002,10.20465,1,14,1,29.02519,3.242059,0,0,0,32.26725,0,0,0,2,1,6,74.36826,13.73189,0,,0,0,1,1,1.791759,0,0,3.258096,0,0,0,0,82.8158,9.163564,1.791759,3.474053,1 +7,1,25,1,3,126139,0,9542.002,11.20465,1,14,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,0,0,1,1,1.791759,0,0,3.258096,0,0,0,0,82.8158,9.163564,1.791759,,0 +7,1,25,1,4,126139,0,9542.002,12.20465,1,14,1,22.59105,0,0,0,0,22.59105,0,0,0,1,1,6,74.36826,13.73189,0,,0,0,1,1,1.791759,0,0,3.258096,0,0,0,0,82.8158,9.163564,1.791759,3.117554,1 +7,1,25,1,5,126139,0,9542.002,13.20465,1,14,1,73.63521,2.750741,368.1761,0,0,444.562,0,0,0,5,0,6,74.36826,13.73189,0,,0,0,1,1,1.791759,0,0,3.258096,0,0,0,0,82.8158,9.163564,1.791759,6.09709,1 +4,1,100,1,1,126151,0,8923.697,43.38124,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.3,0,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,70.32339,9.096578,.6931472,,0 +4,1,100,1,2,126151,0,8923.697,44.38124,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.3,0,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,70.32339,9.096578,.6931472,,0 +4,1,100,1,3,126151,0,8923.697,45.38124,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.3,0,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,70.32339,9.096578,.6931472,,0 +4,1,100,1,1,126152,0,8923.697,42.28337,1,12,1,10.79137,0,0,0,0,10.79137,0,0,0,1,0,2,90.5,4.3,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,78.46137,9.096578,.6931472,2.378747,1 +4,1,100,1,2,126152,0,8923.697,43.28337,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,90.5,4.3,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,78.46137,9.096578,.6931472,,0 +4,1,100,1,3,126152,0,8923.697,44.28337,1,12,1,5.985037,0,23.94015,0,0,29.92519,0,0,0,0,1,2,90.5,4.3,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,78.46137,9.096578,.6931472,3.3987,1 +5,1,25,0,1,126156,0,4841.812,46.5243,1,9,1,27.67962,3.898704,0,0,0,31.57833,0,0,0,4,0,1,85.6,13,0,,375,375,0,0,0,5.926926,0,3.258096,7.313221,1,0,0,68.95127,8.48525,0,3.452471,1 +5,1,25,0,2,126156,0,4841.812,47.5243,1,9,1,0,0,0,0,0,0,0,0,0,0,0,1,85.6,13,0,,375,375,0,0,0,5.926926,0,3.258096,7.313221,1,0,0,68.95127,8.48525,0,,0 +5,1,25,0,3,126156,0,4841.812,48.5243,1,9,1,0,0,0,0,0,0,0,0,0,0,0,1,85.6,13,0,,375,375,0,0,0,5.926926,0,3.258096,7.313221,1,0,0,68.95127,8.48525,0,,0 +5,1,25,0,4,126156,0,4841.812,49.5243,1,9,1,10.93892,0,30.44212,0,0,41.38104,0,0,0,0,1,1,85.6,13,0,,375,375,0,0,0,5.926926,0,3.258096,7.313221,1,0,0,68.95127,8.48525,0,3.722823,1 +5,1,25,0,5,126156,0,4841.812,50.5243,1,9,1,0,0,0,0,0,0,0,0,0,0,0,1,85.6,13,0,,375,375,0,0,0,5.926926,0,3.258096,7.313221,1,0,0,68.95127,8.48525,0,,0 +4,1,100,0,1,126157,0,9122.829,38.24504,0,12,1,13.68233,10.35098,0,0,0,24.03331,0,0,0,2,0,4,58.8,13.73189,1,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,65.64435,9.118645,1.386294,3.179441,1 +4,1,100,0,2,126157,0,9122.829,39.24504,0,12,1,381.6004,0,37.54491,0,0,419.1454,0,0,0,1,45,4,58.8,13.73189,1,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,65.64435,9.118645,1.386294,6.038218,1 +4,1,100,0,3,126157,0,9122.829,40.24504,0,12,1,5.946482,0,0,0,0,5.946482,0,0,0,0,1,4,58.8,13.73189,1,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,65.64435,9.118645,1.386294,1.7828,1 +4,1,100,0,1,126158,0,9122.829,35.38124,1,10,1,20.82094,21.14813,0,0,0,41.96907,0,0,0,1,1,4,56.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,68.66209,9.118645,1.386294,3.736933,1 +4,1,100,0,2,126158,0,9122.829,36.38124,1,10,1,221.0125,22.37343,6.53239,0,0,249.9184,0,0,0,1,33,4,56.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,68.66209,9.118645,1.386294,5.521134,1 +4,1,100,0,3,126158,0,9122.829,37.38124,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,56.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,68.66209,9.118645,1.386294,,0 +4,1,100,0,1,126159,0,9122.829,14.94045,0,10,1,25.58001,0,0,0,0,25.58001,0,0,0,1,1,4,82.5,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,69.60401,9.118645,1.386294,3.241811,1 +4,1,100,0,2,126159,0,9122.829,15.94045,0,10,1,8.165487,0,0,0,0,8.165487,0,0,0,0,1,4,82.5,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,69.60401,9.118645,1.386294,2.099916,1 +4,1,100,0,3,126159,0,9122.829,16.94045,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,82.5,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,69.60401,9.118645,1.386294,,0 +4,1,100,0,1,126160,0,9122.829,18.52156,1,12,1,21.49911,5.562165,0,0,0,27.06127,0,0,0,3,1,4,91.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,71.81157,9.118645,1.386294,3.298104,1 +4,1,100,0,2,126160,0,9122.829,19.52156,1,12,1,305.4763,14.70332,0,0,0,320.1796,0,0,0,8,36,4,91.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,71.81157,9.118645,1.386294,5.768882,1 +4,1,100,0,3,126160,0,9122.829,20.52156,1,12,1,9.142715,.6937562,0,0,0,9.836472,0,0,0,0,1,4,91.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,71.81157,9.118645,1.386294,2.286097,1 +3,1,100,0,1,126177,0,10341.81,52.85695,0,12,1,75.97173,6.089517,0,0,0,82.06125,0,0,0,3,0,5,86.3,21.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,66.41367,9.244047,1.609438,4.407466,1 +3,1,100,0,2,126177,0,10341.81,53.85695,0,12,1,361.5903,18.72776,50.42049,0,6563.558,6994.296,2,0,0,12,0,5,86.3,21.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,66.41367,9.244047,1.609438,8.85285,1 +3,1,100,0,3,126177,0,10341.81,54.85695,0,12,1,565.1351,59.71008,9.085995,0,834.1572,1468.089,1,0,0,18,1,5,86.3,21.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,66.41367,9.244047,1.609438,7.291717,1 +3,1,100,0,1,126178,0,10341.81,53.33333,1,12,1,110.7185,38.45701,0,0,0,149.1755,0,0,0,8,0,5,80,13,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,74.55164,9.244047,1.609438,5.005124,1 +3,1,100,0,2,126178,0,10341.81,54.33333,1,12,1,69.00269,47.7035,40.56065,0,1090.016,1247.283,1,0,0,4,1,5,80,13,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,74.55164,9.244047,1.609438,7.128723,1 +3,1,100,0,3,126178,0,10341.81,55.33333,1,12,1,105.774,65.58723,51.59705,0,0,222.9582,0,0,0,13,1,5,80,13,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,74.55164,9.244047,1.609438,5.406984,1 +3,1,100,0,1,126179,0,10341.81,12.38877,0,12,1,18.8457,3.374558,0,0,0,22.22026,0,0,0,2,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,85.67059,9.244047,1.609438,3.101004,1 +3,1,100,0,2,126179,0,10341.81,13.38877,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,85.67059,9.244047,1.609438,,0 +3,1,100,0,3,126179,0,10341.81,14.38877,0,12,1,19.65602,1.503685,0,0,0,21.1597,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,85.67059,9.244047,1.609438,3.052099,1 +3,1,100,0,1,126180,0,10341.81,16.52841,1,12,1,15.31213,2.479388,0,0,0,17.79152,0,0,0,2,0,5,72.6,13,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,75.20459,9.244047,1.609438,2.878722,1 +3,1,100,0,2,126180,0,10341.81,17.52841,1,12,1,21.56334,11.21833,0,0,0,32.78167,0,0,0,2,1,5,72.6,13,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,75.20459,9.244047,1.609438,3.48987,1 +3,1,100,0,3,126180,0,10341.81,18.52841,1,12,1,61.42506,14.27518,3.415233,0,0,79.11548,0,0,0,4,0,5,72.6,13,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,75.20459,9.244047,1.609438,4.370909,1 +3,1,100,0,1,126181,0,10341.81,18.2423,0,12.32507,1,91.8728,8.60424,0,0,0,100.477,0,0,0,6,0,5,42.1,13,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,78.95576,9.244047,1.609438,4.609929,1 +3,1,100,0,2,126181,0,10341.81,19.2423,0,12.32507,1,3.234501,1.078167,0,0,0,4.312668,0,0,0,0,0,5,42.1,13,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,78.95576,9.244047,1.609438,1.461557,1 +3,1,100,0,3,126181,0,10341.81,20.2423,0,12.32507,1,193.4742,22.92383,0,0,0,216.398,0,0,0,8,0,5,42.1,13,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,78.95576,9.244047,1.609438,5.37712,1 +3,1,100,0,1,126182,0,9542.002,21.45927,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,72.6,8.7,0,,1000,1000,0,0,0,6.907755,1,0,0,0,0,0,76.1736,9.163564,0,,0 +3,1,100,0,2,126182,0,9542.002,22.45927,1,12,1,0,.6630728,0,0,0,.6630728,0,0,0,0,0,1,72.6,8.7,0,,1000,1000,0,0,0,6.907755,1,0,0,0,0,0,76.1736,9.163564,0,-.4108706,1 +3,1,100,0,3,126182,0,9542.002,23.45927,1,12,1,115.7248,41.2973,30.02948,0,0,187.0516,0,0,0,7,4,1,72.6,8.7,0,,1000,1000,0,0,0,6.907755,1,0,0,0,0,0,76.1736,9.163564,0,5.231384,1 +5,1,25,1,1,126192,0,7179.28,53.90007,0,10,1,20.98321,4.664268,0,0,0,25.64748,0,0,0,1,0,3,45.3,30.4,0,,799,799,0,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,63.23743,8.879094,1.098612,3.244445,1 +5,1,25,1,2,126192,0,7179.28,54.90007,0,10,1,6.024096,3.450164,0,0,0,9.47426,0,0,0,1,0,3,45.3,30.4,0,,799,799,0,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,63.23743,8.879094,1.098612,2.248579,1 +5,1,25,1,3,126192,0,7179.28,55.90007,0,10,1,61.7207,2.488778,0,0,0,64.20947,0,0,0,2,0,3,45.3,30.4,0,,799,799,0,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,63.23743,8.879094,1.098612,4.162151,1 +5,1,25,1,4,126192,0,7179.28,56.90007,0,10,1,158.5293,29.65422,0,0,1485.177,1673.361,1,0,0,12,0,3,45.3,30.4,0,,799,799,0,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,63.23743,8.879094,1.098612,7.422589,1 +5,1,25,1,5,126192,0,7179.28,57.90007,0,10,1,35.12484,21.30766,1.481168,125.8951,0,57.91367,0,0,15,3,1,3,45.3,30.4,0,,799,799,0,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,63.23743,8.879094,1.098612,4.058953,1 +5,1,25,1,1,126193,0,7179.28,13.78782,0,12,1,61.15108,8.141487,0,0,0,69.29256,0,0,0,4,0,3,74.36826,13.73189,0,,799,799,1,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,78.66734,8.879094,1.098612,4.238338,1 +5,1,25,1,2,126193,0,7179.28,14.78782,0,12,1,22.45345,2.924425,36.8839,0,0,62.26178,0,0,0,2,0,3,74.36826,13.73189,0,,799,799,1,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,78.66734,8.879094,1.098612,4.131348,1 +5,1,25,1,3,126193,0,7179.28,15.78782,0,12,1,33.91521,11.08728,0,0,0,45.00249,0,0,0,3,0,3,74.36826,13.73189,0,,799,799,1,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,78.66734,8.879094,1.098612,3.806718,1 +5,1,25,1,4,126193,0,7179.28,16.78782,0,12,1,19.59428,2.996773,27.18764,0,0,49.7787,0,0,0,2,0,3,74.36826,13.73189,0,,799,799,1,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,78.66734,8.879094,1.098612,3.907587,1 +5,1,25,1,5,126193,0,7179.28,17.78782,0,12,1,35.89928,2.276767,0,0,0,38.17605,0,0,0,2,0,3,74.36826,13.73189,0,,799,799,1,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,78.66734,8.879094,1.098612,3.642208,1 +5,1,25,1,1,126194,0,7179.28,34.96235,1,12,1,29.3765,17.90168,33.0036,0,0,80.28178,0,0,0,2,0,3,71.6,30.4,1,,799,799,0,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,69.07321,8.879094,1.098612,4.385543,1 +5,1,25,1,2,126194,0,7179.28,35.96235,1,12,1,9.857613,11.45674,0,0,0,21.31435,0,0,0,1,0,3,71.6,30.4,1,,799,799,0,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,69.07321,8.879094,1.098612,3.059381,1 +5,1,25,1,3,126194,0,7179.28,36.96235,1,12,1,25.93516,1.94015,0,0,0,27.87531,0,0,0,2,0,3,71.6,30.4,1,,799,799,0,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,69.07321,8.879094,1.098612,3.327741,1 +5,1,25,1,4,126194,0,7179.28,37.96235,1,12,1,30.42877,15.09451,0,0,0,45.52328,0,0,0,3,0,3,71.6,30.4,1,,799,799,0,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,69.07321,8.879094,1.098612,3.818224,1 +5,1,25,1,5,126194,0,7179.28,38.96235,1,12,1,121.4558,2.175201,0,276.6653,0,123.631,0,0,23,3,0,3,71.6,30.4,1,,799,799,0,0,1.098612,6.683361,0,3.258096,8.069655,1,0,0,69.07321,8.879094,1.098612,4.817301,1 +5,1,25,1,1,126195,0,3355.459,19.83573,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,66.3,4.3,0,,259,259,0,0,0,5.556828,0,3.258096,6.943122,1,0,0,67.43752,8.118642,0,,0 +5,1,25,1,2,126195,0,3355.459,20.83573,0,12,1,9.309967,0,36.05695,0,0,45.36692,0,0,0,0,1,1,66.3,4.3,0,,259,259,0,0,0,5.556828,0,3.258096,6.943122,1,0,0,67.43752,8.118642,0,3.814783,1 +5,1,25,1,3,126195,0,3355.459,21.83573,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,66.3,4.3,0,,259,259,0,0,0,5.556828,0,3.258096,6.943122,1,0,0,67.43752,8.118642,0,,0 +5,1,25,1,4,126195,0,3355.459,22.83573,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,66.3,4.3,0,,259,259,0,0,0,5.556828,0,3.258096,6.943122,1,0,0,67.43752,8.118642,0,,0 +5,1,25,1,5,126195,0,3355.459,23.83573,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,66.3,4.3,0,,259,259,0,0,0,5.556828,0,3.258096,6.943122,1,0,0,67.43752,8.118642,0,,0 +11,1,0,0,1,126198,0,11809.23,20.53388,0,13,1,61.24853,18.55124,34.06949,0,0,113.8693,0,0,0,7,0,3,85,13.73189,0,,0,464,0,0,1.098612,6.139884,0,0,0,0,0,0,79.07556,9.376721,1.098612,4.735051,1 +11,1,0,0,2,126198,0,11809.23,21.53388,0,13,1,84.20485,23.42318,.4851752,0,0,108.1132,0,0,0,6,2,3,85,13.73189,0,,0,464,0,0,1.098612,6.139884,0,0,0,0,0,0,79.07556,9.376721,1.098612,4.683179,1 +11,1,0,0,3,126198,0,11809.23,22.53388,0,13,1,217.1499,11.10565,32.33415,0,0,260.5897,0,0,0,12,1,3,85,13.73189,0,,0,464,0,0,1.098612,6.139884,0,0,0,0,0,0,79.07556,9.376721,1.098612,5.562947,1 +11,1,0,0,1,126199,0,11809.23,48.39151,1,12,1,72.61484,5.270907,44.00471,0,0,121.8905,0,0,0,5,2,3,67.5,13.73189,0,,0,464,0,0,1.098612,6.139884,0,0,0,1,0,0,72.16116,9.376721,1.098612,4.803123,1 +11,1,0,0,2,126199,0,11809.23,49.39151,1,12,1,212.3181,48.61995,.2695418,0,0,261.2076,0,0,0,10,0,3,67.5,13.73189,0,,0,464,0,0,1.098612,6.139884,0,0,0,1,0,0,72.16116,9.376721,1.098612,5.565315,1 +11,1,0,0,3,126199,0,11809.23,50.39151,1,12,1,116.9533,11.7199,56.48649,0,0,185.1597,0,0,0,5,0,3,67.5,13.73189,0,,0,464,0,0,1.098612,6.139884,0,0,0,1,0,0,72.16116,9.376721,1.098612,5.221219,1 +11,1,0,0,1,126200,0,11809.23,13.55236,0,12,1,20.61249,2.502945,0,0,0,23.11543,0,0,0,3,0,3,74.36826,13.73189,0,,0,464,1,0,1.098612,6.139884,0,0,0,0,0,0,87.52181,9.376721,1.098612,3.1405,1 +11,1,0,0,2,126200,0,11809.23,14.55236,0,12,1,46.36119,10.08625,0,0,0,56.44744,0,0,0,7,0,3,74.36826,13.73189,0,,0,464,1,0,1.098612,6.139884,0,0,0,0,0,0,87.52181,9.376721,1.098612,4.03331,1 +11,1,0,0,3,126200,0,11809.23,15.55236,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,0,464,1,0,1.098612,6.139884,0,0,0,0,0,0,87.52181,9.376721,1.098612,,0 +7,1,25,1,1,126205,0,8393.3,6.31896,1,13,1,9.518144,2.647234,0,0,0,12.16538,0,0,0,1,0,3,74.36826,13.73189,0,,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,83.31136,9.035308,1.098612,2.498594,1 +7,1,25,1,2,126205,0,8393.3,7.31896,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,83.31136,9.035308,1.098612,,0 +7,1,25,1,3,126205,0,8393.3,8.318959,1,13,1,14.8662,7.433102,0,0,0,22.29931,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,83.31136,9.035308,1.386294,3.104556,1 +7,1,25,1,1,126206,0,8393.3,30.34634,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,80,17.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,75.11373,9.035308,1.098612,,0 +7,1,25,1,2,126206,0,8393.3,31.34634,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,80,17.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,75.11373,9.035308,1.098612,,0 +7,1,25,1,3,126206,0,8393.3,32.34634,0,12,1,26.16452,0,39.99009,0,0,66.15461,0,0,0,1,1,4,80,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.11373,9.035308,1.386294,4.191995,1 +7,1,25,1,1,126207,0,8393.3,28.46817,1,13,1,30.63653,18.38192,0,0,0,49.01844,0,0,0,1,0,3,41.1,21.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,76.69158,9.035308,1.098612,3.892197,1 +7,1,25,1,2,126207,0,8393.3,29.46817,1,13,1,5.443658,4.327708,3.266195,0,933.2335,946.2711,2,0,0,1,0,3,41.1,21.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,76.69158,9.035308,1.098612,6.852529,1 +7,1,25,1,3,126207,0,8393.3,30.46817,1,13,1,37.6115,14.14272,0,0,0,51.75421,0,0,0,3,0,4,41.1,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.69158,9.035308,1.386294,3.946506,1 +9,1,50,1,1,126208,0,12392.06,54.0616,0,12,1,131.1719,20.19631,0,0,0,151.3682,0,0,0,8,0,3,95.8,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,77.03518,9.424891,1.098612,5.019715,1 +9,1,50,1,2,126208,0,12392.06,55.0616,0,12,1,101.0343,13.28253,0,0,2096.51,2210.827,2,0,0,8,1,3,95.8,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,77.03518,9.424891,1.098612,7.701122,1 +9,1,50,1,3,126208,0,12392.06,56.0616,0,12,1,72.74529,16.82359,0,0,0,89.56888,0,0,0,8,0,3,95.8,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,77.03518,9.424891,1.098612,4.495008,1 +9,1,50,1,1,126209,0,12392.06,15.93155,0,16,1,39.26234,11.60024,28.59607,0,0,79.45866,0,0,0,5,1,3,77.9,4.3,0,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,81.08195,9.424891,1.098612,4.375237,1 +9,1,50,1,2,126209,0,12392.06,16.93155,0,16,1,10.77844,19.13446,0,0,0,29.9129,0,0,0,2,0,3,77.9,4.3,0,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,81.08195,9.424891,1.098612,3.39829,1 +9,1,50,1,3,126209,0,12392.06,17.93155,0,16,1,54.60852,4.286422,24.28147,0,0,83.17641,0,0,0,3,2,3,77.9,4.3,0,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,81.08195,9.424891,1.098612,4.420964,1 +9,1,50,1,1,126210,0,12392.06,50.22313,1,16,1,155.7406,39.29209,31.52885,0,0,226.5616,0,0,0,6,2,3,86.3,21.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,78.13973,9.424891,1.098612,5.423017,1 +9,1,50,1,2,126210,0,12392.06,51.22313,1,16,1,50.08165,37.20741,31.85629,0,0,119.1453,0,0,0,4,1,3,86.3,21.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,78.13973,9.424891,1.098612,4.780344,1 +9,1,50,1,3,126210,0,12392.06,52.22313,1,16,1,42.76511,39.51933,0,0,0,82.28444,0,0,0,5,0,3,86.3,21.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,78.13973,9.424891,1.098612,4.410182,1 +10,1,50,0,1,126222,0,25825.28,54.11088,0,19,1,50.05889,0,0,38.86926,0,50.05889,0,0,3,0,0,2,81.3,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,77.43079,10.15915,.6931472,3.9132,1 +10,1,50,0,2,126222,0,25825.28,55.11088,0,19,1,13.47709,0,0,266.8464,0,13.47709,0,0,15,0,0,2,81.3,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,77.43079,10.15915,.6931472,2.600991,1 +10,1,50,0,3,126222,0,25825.28,56.11088,0,19,1,0,0,0,16.21622,0,0,0,0,1,0,0,2,81.3,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,77.43079,10.15915,.6931472,,0 +10,1,50,0,1,126223,0,25825.28,52.73375,1,13,1,0,0,0,0,0,0,0,0,0,0,0,2,75,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,78.89941,10.15915,.6931472,,0 +10,1,50,0,2,126223,0,25825.28,53.73375,1,13,1,0,0,0,0,0,0,0,0,0,0,0,2,75,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,78.89941,10.15915,.6931472,,0 +10,1,50,0,3,126223,0,25825.28,54.73375,1,13,1,0,0,0,0,0,0,0,0,0,0,0,2,75,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,78.89941,10.15915,.6931472,,0 +1,1,0,1,1,126231,0,3460.918,51.72895,1,12,1,128.9753,61.96113,17.85041,0,0,208.7868,0,0,0,7,0,1,85.3,13,0,,150,203,0,0,0,5.313206,1,0,0,0,0,0,79.21188,8.149578,0,5.341314,1 +1,1,0,1,2,126231,0,3460.918,52.72895,1,12,1,170.8895,74.88949,44.60917,0,0,290.3882,0,0,0,9,2,1,85.3,13,0,,150,203,0,0,0,5.313206,1,0,0,0,0,0,79.21188,8.149578,0,5.671218,1 +1,1,0,1,3,126231,0,3460.918,53.72895,1,12,1,47.66585,37.99509,62.63882,0,0,148.2998,0,0,0,5,0,1,85.3,13,0,,150,203,0,0,0,5.313206,1,0,0,0,0,0,79.21188,8.149578,0,4.999236,1 +4,1,100,1,1,126240,0,9577.765,28.52019,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,52.6,17.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,1,0,59.58581,9.167304,1.386294,,0 +4,1,100,1,2,126240,0,9577.765,29.52019,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,52.6,17.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,1,0,59.58581,9.167304,1.386294,,0 +4,1,100,1,3,126240,0,9577.765,30.52019,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,52.6,17.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,1,0,59.58581,9.167304,1.386294,,0 +4,1,100,1,1,126241,0,9577.765,32.32854,0,11,1,5.889281,0,0,0,0,5.889281,0,0,0,1,0,4,33.7,30.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,67.88706,9.167304,1.386294,1.773134,1 +4,1,100,1,2,126241,0,9577.765,33.32854,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,33.7,30.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,67.88706,9.167304,1.386294,,0 +4,1,100,1,3,126241,0,9577.765,34.32854,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,33.7,30.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,67.88706,9.167304,1.386294,,0 +4,1,100,1,1,126242,0,9577.765,11.16222,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,81.2337,9.167304,1.386294,,0 +4,1,100,1,2,126242,0,9577.765,12.16222,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,81.2337,9.167304,1.386294,,0 +4,1,100,1,3,126242,0,9577.765,13.16222,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,81.2337,9.167304,1.386294,,0 +4,1,100,1,1,126243,0,9577.765,12.92539,0,9,1,21.3192,0,0,0,0,21.3192,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,81.2337,9.167304,1.386294,3.059608,1 +4,1,100,1,2,126243,0,9577.765,13.92539,0,9,1,8.086253,9.153639,0,0,0,17.23989,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,81.2337,9.167304,1.386294,2.847226,1 +4,1,100,1,3,126243,0,9577.765,14.92539,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,81.2337,9.167304,1.386294,,0 +10,1,50,1,1,126250,0,11668.83,45.38809,1,11,1,36.27098,36.3729,33.71103,0,0,106.3549,0,0,0,4,0,3,80,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,75.51671,9.364761,1.098612,4.666782,1 +10,1,50,1,2,126250,0,11668.83,46.38809,1,11,1,71.08434,16.78532,8.105148,0,0,95.97481,0,0,0,6,0,3,80,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,75.51671,9.364761,1.098612,4.564086,1 +10,1,50,1,3,126250,0,11668.83,47.38809,1,11,1,46.13466,14.3591,37.29177,0,0,97.78554,0,0,0,4,1,3,80,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,75.51671,9.364761,1.098612,4.582777,1 +10,1,50,1,4,126250,0,11668.83,48.38809,1,11,1,35.96127,9.400645,0,0,0,45.36192,0,0,0,3,0,3,80,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,75.51671,9.364761,1.098612,3.814673,1 +10,1,50,1,5,126250,0,11668.83,49.38809,1,11,1,125.6877,34.24884,0,0,0,159.9365,0,0,0,8,0,3,80,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,75.51671,9.364761,1.098612,5.074777,1 +10,1,50,1,1,126251,0,11668.83,46.72416,0,11,1,138.1895,26.90648,31.03717,0,990.5935,1186.727,2,0,0,6,0,3,71.6,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,73.89005,9.364761,1.098612,7.078954,1 +10,1,50,1,2,126251,0,11668.83,47.72416,0,11,1,13.14348,11.65936,0,0,0,24.80285,0,0,0,2,0,3,71.6,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,73.89005,9.364761,1.098612,3.210958,1 +10,1,50,1,3,126251,0,11668.83,48.72416,0,11,1,43.01746,14.46883,33.99002,0,0,91.47631,0,0,0,3,0,3,71.6,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,73.89005,9.364761,1.098612,4.51608,1 +10,1,50,1,4,126251,0,11668.83,49.72416,0,11,1,48.4094,4.319963,0,0,0,52.72937,0,0,0,6,0,3,71.6,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,73.89005,9.364761,1.098612,3.965173,1 +10,1,50,1,5,126251,0,11668.83,50.72416,0,11,1,11.42615,0,29.67414,0,0,41.1003,0,0,0,0,1,3,71.6,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,73.89005,9.364761,1.098612,3.716015,1 +10,1,50,1,1,126252,0,11668.83,18.41752,0,11,1,32.07434,11.66067,0,0,632.9616,676.6967,1,0,0,3,0,3,82.1,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,75.67222,9.364761,1.098612,6.517223,1 +10,1,50,1,2,126252,0,11668.83,19.41752,0,11,1,5.476451,2.584885,0,0,0,8.061337,0,0,0,1,0,3,82.1,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,75.67222,9.364761,1.098612,2.087079,1 +10,1,50,1,3,126252,0,11668.83,20.41752,0,11,1,16.70823,2.992519,0,0,0,19.70075,0,0,0,2,0,3,82.1,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,75.67222,9.364761,1.098612,2.980657,1 +10,1,50,1,4,126252,0,11668.83,21.41752,0,11,1,82.98755,15.20055,0,0,2542.153,2640.341,2,0,0,6,0,3,82.1,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,75.67222,9.364761,1.098612,7.878664,1 +10,1,50,1,5,126252,0,11668.83,22.41752,0,11,1,95.64114,21.17647,0,0,0,116.8176,0,0,0,11,0,3,82.1,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,75.67222,9.364761,1.098612,4.760614,1 +5,1,25,1,1,126256,0,17812.88,41.86721,0,16,1,24.98513,8.893516,27.35277,0,0,61.23141,0,0,0,1,0,4,78.9,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,73.33533,9.787733,1.386294,4.11466,1 +5,1,25,1,2,126256,0,17812.88,42.86721,0,16,1,26.21121,0,0,0,0,26.21121,0,0,0,1,0,4,78.9,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,73.33533,9.787733,1.386294,3.266187,1 +5,1,25,1,3,126256,0,17812.88,43.86721,0,16,1,98.11695,6.243806,9.32111,0,0,113.6819,0,0,0,1,2,4,78.9,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,73.33533,9.787733,1.386294,4.733404,1 +5,1,25,1,4,126256,0,17812.88,44.86721,0,16,1,15.14456,0,44.60303,0,0,59.74759,0,0,0,1,0,4,78.9,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,73.33533,9.787733,1.386294,4.090129,1 +5,1,25,1,5,126256,0,17812.88,45.86721,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,78.9,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,73.33533,9.787733,1.386294,,0 +5,1,25,1,1,126257,0,17812.88,17.46201,0,15,1,28.55443,6.216538,0,0,0,34.77097,0,0,0,4,0,4,82.1,8.7,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.80552,9.787733,1.386294,3.548783,1 +5,1,25,1,2,126257,0,17812.88,18.46201,0,15,1,50.62602,1.986935,0,0,0,52.61296,0,0,0,3,0,4,82.1,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.80552,9.787733,1.386294,3.962962,1 +5,1,25,1,3,126257,0,17812.88,19.46201,0,15,1,25.76809,4.212091,0,0,0,29.98018,0,0,0,2,0,4,82.1,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.80552,9.787733,1.386294,3.400537,1 +5,1,25,1,4,126257,0,17812.88,20.46201,0,15,1,23.40523,0,0,0,0,23.40523,0,0,0,1,0,4,82.1,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.80552,9.787733,1.386294,3.15296,1 +5,1,25,1,5,126257,0,17812.88,21.46201,0,15,1,4.417333,0,0,0,0,4.417333,0,0,0,0,0,4,82.1,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.80552,9.787733,1.386294,1.485536,1 +5,1,25,1,1,126258,0,17812.88,9.459274,1,15,1,41.047,27.79298,0,0,0,68.83997,0,0,0,8,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.77095,9.787733,1.386294,4.231785,1 +5,1,25,1,2,126258,0,17812.88,10.45927,1,15,1,22.319,3.810561,0,0,0,26.12956,0,0,0,4,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.77095,9.787733,1.386294,3.263067,1 +5,1,25,1,3,126258,0,17812.88,11.45927,1,15,1,22.29931,4.831516,0,0,0,27.13082,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.77095,9.787733,1.386294,3.30067,1 +5,1,25,1,4,126258,0,17812.88,12.45927,1,15,1,43.13905,12.09729,0,0,0,55.23635,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.77095,9.787733,1.386294,4.011621,1 +5,1,25,1,5,126258,0,17812.88,13.45927,1,15,1,47.11822,11.42196,0,0,0,58.54018,0,0,0,6,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.77095,9.787733,1.386294,4.069713,1 +5,1,25,1,1,126259,0,17812.88,39.07187,1,15,1,101.7252,0,0,0,0,101.7252,0,0,0,3,0,4,80,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.85065,9.787733,1.386294,4.622275,1 +5,1,25,1,2,126259,0,17812.88,40.07187,1,15,1,126.0207,0,0,0,0,126.0207,0,0,0,3,0,4,80,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.85065,9.787733,1.386294,4.836446,1 +5,1,25,1,3,126259,0,17812.88,41.07187,1,15,1,19.82161,2.750248,0,0,0,22.57185,0,0,0,2,0,4,80,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.85065,9.787733,1.386294,3.116704,1 +5,1,25,1,4,126259,0,17812.88,42.07187,1,15,1,18.81597,0,0,0,0,18.81597,0,0,0,1,0,4,80,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.85065,9.787733,1.386294,2.934706,1 +5,1,25,1,5,126259,0,17812.88,43.07187,1,15,1,109.8023,23.09634,3.407657,0,0,136.3063,0,0,0,4,0,4,80,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.85065,9.787733,1.386294,4.914905,1 +7,1,25,0,1,126288,0,11939.83,4.073922,0,12,1,35.92462,0,0,0,0,35.92462,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.3802,9.387718,1.386294,3.581423,1 +7,1,25,0,2,126288,0,11939.83,5.073922,0,12,1,28.84097,0,0,0,0,28.84097,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.3802,9.387718,1.386294,3.361797,1 +7,1,25,0,3,126288,0,11939.83,6.073922,0,12,1,52.82555,0,4.511056,4.299754,0,57.33661,0,0,1,2,1,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.3802,9.387718,1.386294,4.048939,1 +7,1,25,0,4,126288,0,11939.83,7.073922,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.3802,9.387718,1.386294,,0 +7,1,25,0,5,126288,0,11939.83,8.073922,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.3802,9.387718,1.386294,,0 +7,1,25,0,1,126289,0,11939.83,29.62628,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,91.6,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.3162,9.387718,1.386294,,0 +7,1,25,0,2,126289,0,11939.83,30.62628,0,11,1,24.25876,0,0,0,0,24.25876,0,0,0,2,0,4,91.6,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.3162,9.387718,1.386294,3.188778,1 +7,1,25,0,3,126289,0,11939.83,31.62628,0,11,1,0,0,0,19.04177,0,0,0,0,3,0,0,4,91.6,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.3162,9.387718,1.386294,,0 +7,1,25,0,4,126289,0,11939.83,32.62628,0,11,1,87.39745,0,0,0,0,87.39745,0,0,0,3,0,4,91.6,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.3162,9.387718,1.386294,4.470466,1 +7,1,25,0,5,126289,0,11939.83,33.62628,0,11,1,33.97249,0,0,0,0,33.97249,0,0,0,1,0,4,91.6,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.3162,9.387718,1.386294,3.525551,1 +7,1,25,0,1,126290,0,11939.83,29.02943,1,12,1,438.1036,0,17.85041,0,0,455.9541,0,0,0,3,1,4,61.1,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.35686,9.387718,1.386294,6.122392,1 +7,1,25,0,2,126290,0,11939.83,30.02943,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,61.1,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.35686,9.387718,1.386294,,0 +7,1,25,0,3,126290,0,11939.83,31.02943,1,12,1,12.28501,0,32.40786,50.9828,0,44.69287,0,0,5,0,1,4,61.1,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.35686,9.387718,1.386294,3.799814,1 +7,1,25,0,4,126290,0,11939.83,32.02943,1,12,1,458.7284,0,7.146764,0,1132.84,1598.715,1,0,0,3,0,4,61.1,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.35686,9.387718,1.386294,7.376956,1 +7,1,25,0,5,126290,0,11939.83,33.02943,1,12,1,12.50521,0,0,0,0,12.50521,0,0,0,1,0,4,61.1,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.35686,9.387718,1.386294,2.526145,1 +7,1,25,0,1,126291,0,11939.83,8.657084,1,12,1,75.97173,0,0,0,0,75.97173,0,0,0,2,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,78.36227,9.387718,1.386294,4.330361,1 +7,1,25,0,2,126291,0,11939.83,9.657084,1,12,1,24.20485,0,0,0,0,24.20485,0,0,0,0,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,78.36227,9.387718,1.386294,3.186553,1 +7,1,25,0,3,126291,0,11939.83,10.65708,1,12,1,20.63882,0,0,4.299754,0,20.63882,0,0,1,1,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,78.36227,9.387718,1.386294,3.027174,1 +7,1,25,0,4,126291,0,11939.83,11.65708,1,12,1,116.4768,2.734731,0,0,0,119.2115,0,0,0,4,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,78.36227,9.387718,1.386294,4.780899,1 +7,1,25,0,5,126291,0,11939.83,12.65708,1,12,1,91.9133,0,0,0,0,91.9133,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,78.36227,9.387718,1.386294,4.520846,1 +5,1,25,1,1,126311,0,7136.477,35.90691,0,12,1,58.15348,2.93765,0,0,0,61.09113,0,0,0,2,0,3,85.3,8.7,0,,678,678,0,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,78.56193,8.873115,1.098612,4.112367,1 +5,1,25,1,2,126311,0,7136.477,36.90691,0,12,1,44.35926,0,0,0,0,44.35926,0,0,0,3,0,3,85.3,8.7,0,,678,678,0,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,78.56193,8.873115,1.098612,3.792321,1 +5,1,25,1,3,126311,0,7136.477,37.90691,0,12,1,444.1596,27.6808,0,0,0,471.8404,0,0,0,2,1,3,85.3,8.7,0,,678,678,0,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,78.56193,8.873115,1.098612,6.156641,1 +5,1,25,1,4,126311,0,7136.477,38.90691,0,12,1,76.07192,6.339327,52.0332,0,0,134.4444,0,0,0,5,1,3,85.3,8.7,0,,678,678,0,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,78.56193,8.873115,1.098612,4.901151,1 +5,1,25,1,5,126311,0,7136.477,39.90691,0,12,1,20.31316,8.78121,0,0,0,29.09437,0,0,0,5,0,3,85.3,8.7,0,,678,678,0,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,78.56193,8.873115,1.098612,3.370545,1 +5,1,25,1,1,126312,0,7136.477,.6680356,0,7,1,35.3717,2.068345,0,0,0,37.44005,0,0,0,6,0,3,74.36826,13.73189,0,,678,678,1,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,80.9538,8.873115,1.098612,3.622741,1 +5,1,25,1,2,126312,0,7136.477,1.668036,0,7,1,8.214677,2.382256,0,0,0,10.59693,0,0,0,1,0,3,74.36826,13.73189,0,,678,678,1,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,80.9538,8.873115,1.098612,2.360565,1 +5,1,25,1,3,126312,0,7136.477,2.668036,0,7,1,4.987531,0,0,0,0,4.987531,0,0,0,1,0,3,74.36826,13.73189,0,,678,678,1,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,80.9538,8.873115,1.098612,1.606941,1 +5,1,25,1,4,126312,0,7136.477,3.668036,0,7,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,678,678,1,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,80.9538,8.873115,1.098612,,0 +5,1,25,1,5,126312,0,7136.477,4.668036,0,7,1,22.85231,0,0,0,0,22.85231,0,0,0,2,1,3,74.36826,13.73189,0,,678,678,1,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,80.9538,8.873115,1.098612,3.129052,1 +5,1,25,1,1,126313,0,7136.477,36.23819,1,7,1,11.39089,21.94245,0,0,0,33.33333,0,0,0,0,0,3,64.2,17.4,0,,678,678,0,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,69.21714,8.873115,1.098612,3.506558,1 +5,1,25,1,2,126313,0,7136.477,37.23819,1,7,1,43.81161,27.65608,0,0,0,71.46769,0,0,0,1,0,3,64.2,17.4,0,,678,678,0,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,69.21714,8.873115,1.098612,4.269246,1 +5,1,25,1,3,126313,0,7136.477,38.23819,1,7,1,23.94015,34.0399,26.58354,0,0,84.56359,0,0,0,1,1,3,64.2,17.4,0,,678,678,0,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,69.21714,8.873115,1.098612,4.437504,1 +5,1,25,1,4,126313,0,7136.477,39.23819,1,7,1,47.02628,47.30291,0,0,0,94.32919,0,0,0,3,0,3,64.2,17.4,0,,678,678,0,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,69.21714,8.873115,1.098612,4.546791,1 +5,1,25,1,5,126313,0,7136.477,40.23819,1,7,1,121.5404,33.64367,56.60601,0,0,211.7901,0,0,0,5,1,3,64.2,17.4,0,,678,678,0,0,1.098612,6.519147,0,3.258096,7.905442,0,0,0,69.21714,8.873115,1.098612,5.355596,1 +5,1,25,1,1,126314,0,2291.563,19.36208,0,12,1,8.992805,0,38.21943,0,0,47.21223,0,0,0,0,1,1,73.7,0,0,,179,0,0,0,0,0,0,3.258096,6.57368,0,0,0,77.80665,7.737426,0,3.854653,1 +5,1,25,1,2,126314,0,2291.563,20.36208,0,12,1,0,0,39.49069,0,0,39.49069,0,0,0,0,0,1,73.7,0,0,,179,0,0,0,0,0,0,3.258096,6.57368,0,0,0,77.80665,7.737426,0,3.676065,1 +5,1,25,1,3,126314,0,2291.563,21.36208,0,12,1,8.977556,1.9202,31.79551,0,0,42.69327,0,0,0,0,1,1,73.7,0,0,,179,0,0,0,0,0,0,3.258096,6.57368,0,0,0,77.80665,7.737426,0,3.754041,1 +5,1,25,1,4,126314,0,2291.563,22.36208,0,12,1,49.80175,0,20.71922,0,0,70.52098,0,0,0,1,0,1,73.7,0,0,,179,0,0,0,0,0,0,3.258096,6.57368,0,0,0,77.80665,7.737426,0,4.25591,1 +5,1,25,1,5,126314,0,2291.563,23.36208,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,73.7,0,0,,179,0,0,0,0,0,0,3.258096,6.57368,0,0,0,77.80665,7.737426,0,,0 +8,1,50,0,1,126319,0,3717.07,6.833675,0,13,1,12.58993,10.61151,0,0,0,23.20144,0,0,0,2,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,3.931826,0,0,0,0,84.2508,8.22096,1.386294,3.144214,1 +8,1,50,0,2,126319,0,3717.07,7.833675,0,13,1,34.50164,15.03286,0,0,0,49.5345,0,0,0,5,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,3.931826,0,0,0,0,84.2508,8.22096,1.386294,3.902669,1 +8,1,50,0,3,126319,0,3717.07,8.833675,0,13,1,42.39402,16.28429,0,0,0,58.6783,0,0,0,7,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,3.931826,0,0,0,0,84.2508,8.22096,1.386294,4.07207,1 +8,1,50,0,1,126320,0,3717.07,34.01232,0,17,1,111.8106,2.667866,0,0,0,114.4784,0,0,0,7,0,4,33.8,13.73189,0,,0,0,0,0,1.386294,0,0,3.931826,0,0,0,0,74.86721,8.22096,1.386294,4.740386,1 +8,1,50,0,2,126320,0,3717.07,35.01232,0,17,1,30.66813,13.82804,37.48631,0,0,81.98248,0,0,0,4,0,4,33.8,13.73189,0,,0,0,0,0,1.386294,0,0,3.931826,0,0,0,0,74.86721,8.22096,1.386294,4.406506,1 +8,1,50,0,3,126320,0,3717.07,36.01232,0,17,1,84.78803,16.70823,0,0,0,101.4963,0,0,0,1,0,4,33.8,13.73189,0,,0,0,0,0,1.386294,0,0,3.931826,0,0,0,0,74.86721,8.22096,1.386294,4.620022,1 +8,1,50,0,1,126321,0,3717.07,32.33128,1,13,1,125,24.79017,102.0923,0,783.5432,1035.426,1,0,0,9,0,4,62.5,13.73189,1,,0,0,0,0,1.386294,0,0,3.931826,0,1,0,0,66.88633,8.22096,1.386294,6.942568,1 +8,1,50,0,2,126321,0,3717.07,33.33128,1,13,1,77.76561,40.82694,328.5871,0,1728.598,2175.778,2,0,0,7,0,4,62.5,13.73189,1,,0,0,0,0,1.386294,0,0,3.931826,0,1,0,0,66.88633,8.22096,1.386294,7.685142,1 +8,1,50,0,3,126321,0,3717.07,34.33128,1,13,1,483.5162,15.3616,249.3766,0,982.2244,1730.479,1,0,0,14,0,4,62.5,13.73189,1,,0,0,0,0,1.386294,0,0,3.931826,0,1,0,0,66.88633,8.22096,1.386294,7.456153,1 +8,1,50,0,1,126322,0,3717.07,.6926762,1,13,1,90.52758,16.78657,0,0,0,107.3141,0,0,0,11,1,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,3.931826,0,0,0,0,80.3052,8.22096,1.386294,4.67576,1 +8,1,50,0,2,126322,0,3717.07,1.692676,1,13,1,355.942,60.68456,0,0,0,416.6265,0,0,0,16,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,3.931826,0,0,0,0,80.3052,8.22096,1.386294,6.03219,1 +8,1,50,0,3,126322,0,3717.07,2.692676,1,13,1,100.7481,32.74314,0,0,352.1596,485.6509,1,0,0,15,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,3.931826,0,0,0,0,80.3052,8.22096,1.386294,6.18549,1 +1,1,0,0,1,126331,0,8401.985,1.689254,0,16,1,21.20141,21.2662,0,0,0,42.46761,0,0,0,4,0,3,74.36826,13.73189,0,,450,450,1,0,1.098612,6.109248,1,0,0,0,0,0,80.40897,9.036343,1.098612,3.748742,1 +1,1,0,0,2,126331,0,8401.985,2.689254,0,16,1,20.48518,19.89757,0,0,0,40.38275,0,0,0,3,0,3,74.36826,13.73189,0,,450,450,1,0,1.098612,6.109248,1,0,0,0,0,0,80.40897,9.036343,1.098612,3.698403,1 +1,1,0,0,3,126331,0,8401.985,3.689254,0,16,1,24.57002,20.2113,0,0,0,44.78133,0,0,0,3,0,4,74.36826,13.73189,0,,450,450,1,0,1.386294,6.109248,1,0,0,0,0,0,80.40897,9.036343,1.386294,3.801791,1 +1,1,0,0,1,126332,0,8401.985,28.7447,0,16,1,21.49588,5.223793,0,0,0,26.71967,0,0,0,1,1,3,80,17.4,0,,450,450,0,0,1.098612,6.109248,1,0,0,0,0,0,78.62843,9.036343,1.098612,3.2854,1 +1,1,0,0,2,126332,0,8401.985,29.7447,0,16,1,18.86792,0,0,0,0,18.86792,0,0,0,0,1,3,80,17.4,0,,450,450,0,0,1.098612,6.109248,1,0,0,0,0,0,78.62843,9.036343,1.098612,2.937463,1 +1,1,0,0,3,126332,0,8401.985,30.7447,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,80,17.4,0,,450,450,0,0,1.386294,6.109248,1,0,0,0,0,0,78.62843,9.036343,1.386294,,0 +1,1,0,0,1,126333,0,8401.985,29.08419,1,16,1,60.6596,27.34393,42.40283,0,0,130.4064,0,0,0,4,1,3,87.4,13,0,,450,450,0,0,1.098612,6.109248,1,0,0,0,0,0,79.51961,9.036343,1.098612,4.870656,1 +1,1,0,0,2,126333,0,8401.985,30.08419,1,16,1,2.695418,27.78976,0,0,736.7925,767.2776,1,0,0,0,0,3,87.4,13,0,,450,450,0,0,1.098612,6.109248,1,0,0,0,0,0,79.51961,9.036343,1.098612,6.642848,1 +1,1,0,0,3,126333,0,8401.985,31.08419,1,16,1,26.04423,24.44226,0,0,0,50.48649,0,0,0,3,0,4,87.4,13,0,,450,450,0,0,1.386294,6.109248,1,0,0,0,0,0,79.51961,9.036343,1.386294,3.921706,1 +11,1,0,1,1,126340,0,6321.658,17.30048,1,14,1,132.0643,70.28555,42.75431,0,0,245.1041,0,0,0,19,0,3,92.6,13,0,,0,0,1,1,1.098612,0,0,0,0,0,0,0,74.41844,8.751895,1.098612,5.501683,1 +11,1,0,1,2,126340,0,6321.658,18.30048,1,14,1,22.86336,70.44093,0,0,0,93.3043,0,0,0,3,0,3,92.6,13,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,74.41844,8.751895,1.098612,4.535866,1 +11,1,0,1,3,126340,0,6321.658,19.30048,1,14,1,101.0902,64.54411,45.16848,0,0,210.8028,0,0,0,10,0,3,92.6,13,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,74.41844,8.751895,1.098612,5.350923,1 +11,1,0,1,1,126341,0,6321.658,53.70021,1,14,1,60.08328,23.3492,46.62106,0,0,130.0535,0,0,0,7,0,3,38.9,17.4,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,78.69423,8.751895,1.098612,4.867946,1 +11,1,0,1,2,126341,0,6321.658,54.70021,1,14,1,67.55579,39.62983,4.545455,0,832.798,944.5291,1,0,0,9,0,3,38.9,17.4,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,78.69423,8.751895,1.098612,6.850687,1 +11,1,0,1,3,126341,0,6321.658,55.70021,1,14,1,181.8632,15.36174,44.33102,0,0,241.556,0,0,0,6,1,3,38.9,17.4,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,78.69423,8.751895,1.098612,5.487102,1 +11,1,0,1,1,126342,0,6321.658,53.65366,0,14,1,66.62701,12.0464,38.07257,0,0,116.746,0,0,0,5,6,3,52.6,13,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,76.12692,8.751895,1.098612,4.760001,1 +11,1,0,1,2,126342,0,6321.658,54.65366,0,14,1,97.44148,37.34349,0,0,0,134.785,0,0,0,10,5,3,52.6,13,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,76.12692,8.751895,1.098612,4.903681,1 +11,1,0,1,3,126342,0,6321.658,55.65366,0,14,1,46.08523,23.14172,37.16551,0,0,106.3925,0,0,0,1,5,3,52.6,13,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,76.12692,8.751895,1.098612,4.667135,1 +11,1,0,1,1,126343,0,5065.757,23.02259,0,12,1,46.84117,6.632957,34.19393,0,0,87.66805,0,0,0,6,0,1,62.1,4.3,0,,0,52,0,0,0,3.951244,0,0,0,0,0,0,77.42352,8.530457,0,4.473557,1 +11,1,0,1,2,126343,0,5065.757,24.02259,0,12,1,20.6859,8.328797,0,0,0,29.0147,0,0,0,4,0,1,62.1,4.3,0,,0,52,0,0,0,3.951244,0,0,0,0,0,0,77.42352,8.530457,0,3.367803,1 +11,1,0,1,3,126343,0,5065.757,25.02259,0,12,1,48.56293,12.31417,29.51933,0,0,90.39643,0,0,0,7,0,1,62.1,4.3,0,,0,52,0,0,0,3.951244,0,0,0,0,0,0,77.42352,8.530457,0,4.504205,1 +5,1,25,0,1,126350,0,9707.816,61.90281,1,11,1,107.3322,87.77974,39.3934,0,0,234.5053,0,0,0,15,0,1,95,13.73189,0,,716,716,0,0,0,6.57368,0,3.258096,7.959975,0,0,0,76.49065,9.18079,0,5.457478,1 +5,1,25,0,2,126350,0,9707.816,62.90281,1,11,1,165.2291,86.33962,46.47979,0,1636.14,1934.189,1,0,0,16,0,1,95,13.73189,0,,716,716,0,0,0,6.57368,0,3.258096,7.959975,0,0,0,76.49065,9.18079,0,7.567443,1 +5,1,25,0,3,126350,0,9707.816,63.90281,1,11,1,29.48403,50.71253,0,0,0,80.19656,0,0,0,3,0,1,95,13.73189,0,,716,716,0,0,0,6.57368,0,3.258096,7.959975,0,0,0,76.49065,9.18079,0,4.38448,1 +5,1,25,0,1,126359,0,6277.295,32.53114,1,9,1,6.478209,0,0,0,0,6.478209,0,0,0,1,0,4,95,13.73189,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,69.47372,8.744854,1.386294,1.868444,1 +5,1,25,0,2,126359,0,6277.295,33.53114,1,9,1,25.87601,2.156334,0,0,0,28.03234,0,0,0,2,0,4,95,13.73189,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,69.47372,8.744854,1.386294,3.333359,1 +5,1,25,0,3,126359,0,6277.295,34.53114,1,9,1,46.06879,6.314497,0,0,0,52.38329,0,0,0,3,0,4,95,13.73189,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,69.47372,8.744854,1.386294,3.958588,1 +5,1,25,0,4,126359,0,6277.295,35.53114,1,9,1,26.89152,0,0,0,0,26.89152,0,0,0,2,0,4,95,13.73189,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,69.47372,8.744854,1.386294,3.291811,1 +5,1,25,0,5,126359,0,6277.295,36.53114,1,9,1,350.3126,6.669446,196.0192,0,0,553.0012,0,0,0,9,0,4,95,13.73189,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,69.47372,8.744854,1.386294,6.31536,1 +5,1,25,0,1,126360,0,6277.295,9.029432,1,9,1,19.43463,0,20.84806,0,0,40.28268,0,0,0,2,1,4,74.36826,13.73189,0,,500,500,1,1,1.386294,6.214608,0,3.258096,7.600903,1,0,0,76.85021,8.744854,1.386294,3.695922,1 +5,1,25,0,2,126360,0,6277.295,10.02943,1,9,1,5.390836,2.495957,8.964959,0,0,16.85175,0,0,0,1,0,4,74.36826,13.73189,0,,500,500,1,1,1.386294,6.214608,0,3.258096,7.600903,1,0,0,76.85021,8.744854,1.386294,2.824455,1 +5,1,25,0,3,126360,0,6277.295,11.02943,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,500,500,1,1,1.386294,6.214608,0,3.258096,7.600903,1,0,0,76.85021,8.744854,1.386294,,0 +5,1,25,0,4,126360,0,6277.295,12.02943,1,9,1,46.03464,2.734731,0,0,0,48.76937,0,0,0,2,1,4,74.36826,13.73189,0,,500,500,1,1,1.386294,6.214608,0,3.258096,7.600903,1,0,0,76.85021,8.744854,1.386294,3.887102,1 +5,1,25,0,5,126360,0,6277.295,13.02943,1,9,1,40.45436,5.360567,23.88495,0,492.0342,561.7341,1,0,0,2,0,4,74.36826,13.73189,0,,500,500,1,1,1.386294,6.214608,0,3.258096,7.600903,1,0,0,76.85021,8.744854,1.386294,6.331028,1 +5,1,25,0,1,126361,0,6277.295,32.85695,0,12.32507,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.12982,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,71.97958,8.744854,1.386294,,0 +5,1,25,0,2,126361,0,6277.295,33.85695,0,12.32507,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.12982,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,71.97958,8.744854,1.386294,,0 +5,1,25,0,3,126361,0,6277.295,34.85695,0,12.32507,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.12982,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,71.97958,8.744854,1.386294,,0 +5,1,25,0,4,126361,0,6277.295,35.85695,0,12.32507,1,30.76572,0,0,0,0,30.76572,0,0,0,1,0,4,74.36826,13.73189,.12982,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,71.97958,8.744854,1.386294,3.426401,1 +5,1,25,0,5,126361,0,6277.295,36.85695,0,12.32507,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.12982,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,71.97958,8.744854,1.386294,,0 +5,1,25,0,1,126362,0,6277.295,14.23956,0,9,1,104.2108,.8598351,0,0,0,105.0707,0,0,0,3,0,4,95,13.73189,0,,500,500,1,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,70.41564,8.744854,1.386294,4.654633,1 +5,1,25,0,2,126362,0,6277.295,15.23956,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,95,13.73189,0,,500,500,1,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,70.41564,8.744854,1.386294,,0 +5,1,25,0,3,126362,0,6277.295,16.23956,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,95,13.73189,0,,500,500,1,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,70.41564,8.744854,1.386294,,0 +5,1,25,0,4,126362,0,6277.295,17.23956,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,95,13.73189,0,,500,500,1,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,70.41564,8.744854,1.386294,,0 +5,1,25,0,5,126362,0,6277.295,18.23956,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,95,13.73189,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,1,0,0,70.41564,8.744854,1.386294,,0 +4,1,100,1,1,126384,0,4298.431,62.02327,1,11,1,26.50177,11.16019,0,0,0,37.66196,0,0,0,3,0,1,81.1,17.4,0,,1000,1000,0,0,0,6.907755,1,0,0,1,0,0,68.18743,8.366238,0,3.62865,1 +4,1,100,1,2,126384,0,4298.431,63.02327,1,11,1,202.4259,99.78436,431.1752,0,0,733.3854,0,0,0,7,1,1,81.1,17.4,0,,1000,1000,0,0,0,6.907755,1,0,0,1,0,0,68.18743,8.366238,0,6.597672,1 +4,1,100,1,3,126384,0,4298.431,64.02327,1,11,1,351.8427,100.1228,107.4889,0,703.9951,1263.45,1,0,0,14,0,1,81.1,17.4,0,,1000,1000,0,0,0,6.907755,1,0,0,1,0,0,68.18743,8.366238,0,7.141601,1 +5,1,25,1,1,126386,0,7500,31.64134,1,12,1,47.29328,14.6282,0,0,0,61.92147,0,0,0,5,0,4,74.7,13,0,,455,455,0,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,77.99498,8.922791,1.386294,4.125867,1 +5,1,25,1,2,126386,0,7500,32.64134,1,12,1,51.44257,27.51769,0,0,0,78.96026,0,0,0,4,0,4,74.7,13,0,,455,455,0,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,77.99498,8.922791,1.386294,4.368945,1 +5,1,25,1,3,126386,0,7500,33.64134,1,12,1,9.910803,0,0,0,0,9.910803,0,0,0,1,0,4,74.7,13,0,,455,455,0,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,77.99498,8.922791,1.386294,2.293625,1 +5,1,25,1,4,126386,0,7500,34.64134,1,12,1,68.60945,4.566315,0,0,0,73.17577,0,0,0,4,0,4,74.7,13,0,,455,455,0,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,77.99498,8.922791,1.386294,4.292864,1 +5,1,25,1,5,126386,0,7500,35.64134,1,12,1,29.86958,0,126.2095,0,0,156.0791,0,0,0,3,0,4,74.7,13,0,,455,455,0,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,77.99498,8.922791,1.386294,5.050363,1 +5,1,25,1,1,126387,0,7500,3.069131,0,12,1,0,5.086258,0,0,0,5.086258,0,0,0,0,0,4,74.36826,13.73189,0,,455,455,1,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,79.16171,8.922791,1.386294,1.626542,1 +5,1,25,1,2,126387,0,7500,4.069131,0,12,1,18.50844,2.721829,0,0,0,21.23027,0,0,0,2,0,4,74.36826,13.73189,0,,455,455,1,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,79.16171,8.922791,1.386294,3.055428,1 +5,1,25,1,3,126387,0,7500,5.069131,0,12,1,66.89792,3.468781,0,0,0,70.3667,0,0,0,5,0,4,74.36826,13.73189,0,,455,455,1,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,79.16171,8.922791,1.386294,4.25372,1 +5,1,25,1,4,126387,0,7500,6.069131,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,455,455,1,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,79.16171,8.922791,1.386294,,0 +5,1,25,1,5,126387,0,7500,7.069131,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,455,455,1,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,79.16171,8.922791,1.386294,,0 +5,1,25,1,1,126388,0,7500,31.48528,0,12,1,9.815586,0,0,0,0,9.815586,0,0,0,1,0,4,65.3,4.3,0,,455,455,0,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,78.04445,8.922791,1.386294,2.283972,1 +5,1,25,1,2,126388,0,7500,32.48528,0,12,1,15.24224,0,0,0,0,15.24224,0,0,0,1,0,4,65.3,4.3,0,,455,455,0,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,78.04445,8.922791,1.386294,2.724071,1 +5,1,25,1,3,126388,0,7500,33.48528,0,12,1,7.680872,2.477701,0,0,0,10.15857,0,0,0,1,0,4,65.3,4.3,0,,455,455,0,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,78.04445,8.922791,1.386294,2.318318,1 +5,1,25,1,4,126388,0,7500,34.48528,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,65.3,4.3,0,,455,455,0,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,78.04445,8.922791,1.386294,,0 +5,1,25,1,5,126388,0,7500,35.48528,0,12,1,13.46235,0,0,0,0,13.46235,0,0,0,1,0,4,65.3,4.3,0,,455,455,0,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,78.04445,8.922791,1.386294,2.599897,1 +5,1,25,1,1,126389,0,7500,5.738535,0,12,1,11.89768,7.406306,0,0,0,19.30399,0,0,0,1,0,4,74.36826,13.73189,0,,455,455,1,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,82.59333,8.922791,1.386294,2.960312,1 +5,1,25,1,2,126389,0,7500,6.738535,0,12,1,24.76864,5.389222,0,0,0,30.15787,0,0,0,3,0,4,74.36826,13.73189,0,,455,455,1,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,82.59333,8.922791,1.386294,3.406446,1 +5,1,25,1,3,126389,0,7500,7.738535,0,12,1,28.74133,4.88107,0,0,0,33.6224,0,0,0,3,0,4,74.36826,13.73189,0,,455,455,1,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,82.59333,8.922791,1.386294,3.515193,1 +5,1,25,1,4,126389,0,7500,8.738535,0,12,1,13.99725,2.294631,0,0,0,16.29188,0,0,0,2,0,4,74.36826,13.73189,0,,455,455,1,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,82.59333,8.922791,1.386294,2.790667,1 +5,1,25,1,5,126389,0,7500,9.738535,0,12,1,34.939,0,0,0,0,34.939,0,0,0,2,0,4,74.36826,13.73189,0,,455,455,1,0,1.386294,6.120297,0,3.258096,7.506592,0,0,0,82.59333,8.922791,1.386294,3.553604,1 +1,1,0,1,1,126390,0,4179.28,43.07734,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,80,17.4,0,,450,460,0,0,1.098612,6.131227,1,0,0,1,0,0,70.18314,8.338134,1.098612,,0 +1,1,0,1,2,126390,0,4179.28,44.07734,1,12,1,46.36119,2.695418,14.01617,0,0,63.07278,0,0,0,4,1,3,80,17.4,0,,450,460,0,0,1.098612,6.131227,1,0,0,1,0,0,70.18314,8.338134,1.098612,4.144289,1 +1,1,0,1,3,126390,0,4179.28,45.07734,1,12,1,8.353808,0,0,0,0,8.353808,0,0,0,1,0,3,80,17.4,0,,450,460,0,0,1.098612,6.131227,1,0,0,1,0,0,70.18314,8.338134,1.098612,2.122718,1 +1,1,0,1,4,126390,0,4179.28,46.07734,1,12,1,9.11577,0,0,0,0,9.11577,0,0,0,0,0,2,80,17.4,0,,450,460,0,0,.6931472,6.131227,1,0,0,1,0,0,70.18314,8.338134,.6931472,2.210006,1 +1,1,0,1,5,126390,0,4179.28,47.07734,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,80,17.4,0,,450,460,0,0,1.098612,6.131227,1,0,0,1,0,0,70.18314,8.338134,1.098612,,0 +1,1,0,1,1,126391,0,4179.28,13.04586,0,12,1,5.300354,1.766784,0,0,0,7.067138,0,0,0,1,0,3,74.36826,13.73189,0,,450,460,1,0,1.098612,6.131227,1,0,0,1,0,0,75.23473,8.338134,1.098612,1.955456,1 +1,1,0,1,2,126391,0,4179.28,14.04586,0,12,1,28.03234,0,19.11051,0,0,47.14286,0,0,0,1,1,3,74.36826,13.73189,0,,450,460,1,0,1.098612,6.131227,1,0,0,1,0,0,75.23473,8.338134,1.098612,3.853183,1 +1,1,0,1,3,126391,0,4179.28,15.04586,0,12,1,62.89926,0,0,0,0,62.89926,0,0,0,3,0,3,74.36826,13.73189,0,,450,460,1,0,1.098612,6.131227,1,0,0,1,0,0,75.23473,8.338134,1.098612,4.141534,1 +1,1,0,1,4,126391,0,4179.28,16.04586,0,12,1,75.90246,0,34.77211,0,0,110.6746,0,0,0,5,1,2,74.36826,13.73189,0,,450,460,1,0,.6931472,6.131227,1,0,0,1,0,0,75.23473,8.338134,.6931472,4.706594,1 +1,1,0,1,5,126391,0,4179.28,17.04586,0,12,1,15.00625,.8336807,0,0,0,15.83993,0,0,0,1,0,3,74.36826,13.73189,0,,450,460,1,0,1.098612,6.131227,1,0,0,1,0,0,75.23473,8.338134,1.098612,2.762534,1 +1,1,0,1,1,126392,0,4179.28,39.97262,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,76.8,4.3,0,,450,460,0,0,1.098612,6.131227,1,0,0,1,0,0,67.17622,8.338134,1.098612,,0 +1,1,0,1,2,126392,0,4179.28,40.97262,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,76.8,4.3,0,,450,460,0,0,1.098612,6.131227,1,0,0,1,0,0,67.17622,8.338134,1.098612,,0 +1,1,0,1,3,126392,0,4179.28,41.97262,0,11,1,66.58477,0,0,0,0,66.58477,0,0,0,1,0,3,76.8,4.3,0,,450,460,0,0,1.098612,6.131227,1,0,0,1,0,0,67.17622,8.338134,1.098612,4.198476,1 +1,1,0,1,5,126392,0,4179.28,43.97262,0,11,1,45.22718,0,4.126719,0,0,49.3539,0,0,0,2,0,3,76.8,4.3,0,,450,460,0,0,1.098612,6.131227,1,0,0,1,0,0,67.17622,8.338134,1.098612,3.899017,1 +9,1,50,0,1,126410,0,10069.48,26.74607,1,16,1,200.8393,22.97362,0,0,0,223.8129,0,0,0,12,0,2,93.8,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,69.61801,9.217363,.6931472,5.41081,1 +9,1,50,0,2,126410,0,10069.48,27.74607,1,16,1,465.3341,0,0,0,0,465.3341,0,0,0,5,0,2,93.8,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,69.61801,9.217363,.6931472,6.142756,1 +9,1,50,0,3,126410,0,10069.48,28.74607,1,16,1,74.06483,0,0,0,0,74.06483,0,0,0,1,0,2,93.8,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,69.61801,9.217363,.6931472,4.304941,1 +9,1,50,0,1,126411,0,10069.48,26.6475,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,92.5,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,72.70196,9.217363,.6931472,,0 +9,1,50,0,2,126411,0,10069.48,27.6475,0,16,1,6.571742,0,36.8839,0,0,43.45564,0,0,0,0,1,2,92.5,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,72.70196,9.217363,.6931472,3.771741,1 +9,1,50,0,3,126411,0,10069.48,28.6475,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,92.5,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,72.70196,9.217363,.6931472,,0 +11,1,0,0,1,126417,0,7262.407,25.62354,1,18,1,24.14605,14.68787,0,0,0,38.83392,0,0,0,2,0,3,75,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,78.44444,8.890604,1.098612,3.659294,1 +11,1,0,0,2,126417,0,7262.407,26.62354,1,18,1,173.5849,26.81402,17.57412,0,0,217.9731,0,0,0,10,1,3,75,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,78.44444,8.890604,1.098612,5.384371,1 +11,1,0,0,3,126417,0,7262.407,27.62354,1,18,1,48.2801,10.79115,0,0,0,59.07125,0,0,0,5,0,3,75,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,78.44444,8.890604,1.098612,4.078744,1 +11,1,0,0,4,126417,0,7262.407,28.62354,1,18,1,55.8113,4.443938,0,0,0,60.25524,0,0,0,3,0,3,75,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,78.44444,8.890604,1.098612,4.098589,1 +11,1,0,0,5,126417,0,7262.407,29.62354,1,18,1,38.76615,4.43935,22.62609,0,0,65.8316,0,0,0,3,1,3,75,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,78.44444,8.890604,1.098612,4.1871,1 +11,1,0,0,1,126418,0,7262.407,27.29363,0,18,1,0,0,0,0,0,0,0,0,0,0,0,3,78.8,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.55326,8.890604,1.098612,,0 +11,1,0,0,2,126418,0,7262.407,28.29363,0,18,1,103.504,1.078167,29.29919,0,0,133.8814,0,0,0,2,0,3,78.8,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.55326,8.890604,1.098612,4.896955,1 +11,1,0,0,3,126418,0,7262.407,29.29363,0,18,1,12.28501,5.189189,0,0,0,17.4742,0,0,0,1,1,3,78.8,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.55326,8.890604,1.098612,2.860726,1 +11,1,0,0,4,126418,0,7262.407,30.29363,0,18,1,0,0,0,0,0,0,0,0,0,0,0,3,78.8,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.55326,8.890604,1.098612,,0 +11,1,0,0,5,126418,0,7262.407,31.29363,0,18,1,15.00625,4.326803,22.62609,0,0,41.95915,0,0,0,1,1,3,78.8,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.55326,8.890604,1.098612,3.736696,1 +5,1,25,1,1,126426,0,15193.55,44.84873,1,12,1,177.8269,189.2933,28.92815,0,711.9258,1107.974,1,0,0,17,0,3,44.2,26.1,1,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,1,0,0,67.97492,9.628692,1.098612,7.010289,1 +5,1,25,1,2,126426,0,15193.55,45.84873,1,12,1,93.26145,158.4852,25.3531,0,1780.819,2057.919,2,0,0,10,0,3,44.2,26.1,1,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,1,0,0,67.97492,9.628692,1.098612,7.629451,1 +5,1,25,1,3,126426,0,15193.55,46.84873,1,12,1,222.8501,94.44226,0,0,0,317.2924,0,0,0,8,0,3,44.2,26.1,1,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,1,0,0,67.97492,9.628692,1.098612,5.759824,1 +5,1,25,1,4,126426,0,15193.55,47.84873,1,12,1,147.6755,75.87967,30.433,0,0,253.9881,0,0,0,6,0,3,44.2,26.1,1,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,1,0,0,67.97492,9.628692,1.098612,5.537288,1 +5,1,25,1,5,126426,0,15193.55,48.84873,1,12,1,19.69571,77.93247,0,0,0,97.62818,0,0,0,1,0,3,44.2,26.1,1,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,1,0,0,67.97492,9.628692,1.098612,4.581166,1 +5,1,25,1,1,126427,0,15193.55,42.23682,0,16,1,99.23439,207.9564,0,0,1480.071,1787.261,2,0,0,8,0,3,65.3,21.7,1,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,0,1,0,59.88523,9.628692,1.098612,7.48844,1 +5,1,25,1,2,126427,0,15193.55,43.23682,0,16,1,110.1078,131.3693,0,0,0,241.4771,0,0,0,5,0,3,65.3,21.7,1,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,0,1,0,59.88523,9.628692,1.098612,5.486774,1 +5,1,25,1,3,126427,0,15193.55,44.23682,0,16,1,126.9042,86.81081,0,0,1071.646,1285.361,1,0,0,4,1,3,65.3,21.7,1,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,0,1,0,59.88523,9.628692,1.098612,7.158795,1 +5,1,25,1,4,126427,0,15193.55,45.23682,0,16,1,13.90155,79.85415,0,0,0,93.7557,0,0,0,2,0,3,65.3,21.7,1,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,0,1,0,59.88523,9.628692,1.098612,4.540692,1 +5,1,25,1,5,126427,0,15193.55,46.23682,0,16,1,156.5235,55.02293,24.32263,0,645.8733,881.7424,1,0,0,4,0,3,65.3,21.7,1,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,0,1,0,59.88523,9.628692,1.098612,6.7819,1 +5,1,25,1,1,126428,0,15193.55,19.40862,0,12.32507,1,143.9929,11.78445,0,0,0,155.7774,0,0,0,11,0,3,80,13,0,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,0,0,0,77.93675,9.628692,1.098612,5.048428,1 +5,1,25,1,2,126428,0,15193.55,20.40862,0,12.32507,1,130.9973,9.681941,30.42048,680.8625,0,171.0997,0,0,33,6,0,3,80,13,0,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,0,0,0,77.93675,9.628692,1.098612,5.142247,1 +5,1,25,1,3,126428,0,15193.55,21.40862,0,12.32507,1,107.8624,0,27.72973,0,621.0024,756.5946,1,0,0,6,0,3,80,13,0,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,0,0,0,77.93675,9.628692,1.098612,6.628828,1 +5,1,25,1,4,126428,0,15193.55,22.40862,0,12.32507,1,23.35916,0,0,0,0,23.35916,0,0,0,2,0,3,80,13,0,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,0,0,0,77.93675,9.628692,1.098612,3.150989,1 +5,1,25,1,5,126428,0,15193.55,23.40862,0,12.32507,1,69.50813,7.582326,0,0,0,77.09045,0,0,0,7,0,3,80,13,0,,800,800,0,0,1.098612,6.684612,0,3.258096,8.070906,0,0,0,77.93675,9.628692,1.098612,4.344979,1 +7,1,25,0,1,126461,0,6078.164,49.24572,1,14,1,0,0,0,0,0,0,0,0,0,0,0,1,82.5,13.73189,0,,843,843,0,0,0,6.736967,0,3.258096,8.123261,0,0,0,79.31465,8.712623,0,,0 +7,1,25,0,2,126461,0,6078.164,50.24572,1,14,1,0,0,0,0,0,0,0,0,0,0,0,1,82.5,13.73189,0,,843,843,0,0,0,6.736967,0,3.258096,8.123261,0,0,0,79.31465,8.712623,0,,0 +7,1,25,0,3,126461,0,6078.164,51.24572,1,14,1,0,0,0,0,0,0,0,0,0,0,0,1,82.5,13.73189,0,,843,843,0,0,0,6.736967,0,3.258096,8.123261,0,0,0,79.31465,8.712623,0,,0 +2,1,100,0,1,126465,0,9542.002,59.37577,1,8,1,77.73852,111.331,0,0,0,189.0695,0,0,0,14,0,1,93.7,26.1,1,,107,0,0,0,0,0,1,0,0,0,0,0,74.02026,9.163564,0,5.242115,1 +2,1,100,0,2,126465,0,9542.002,60.37577,1,8,.4098361,33.42318,51.71429,0,0,0,85.13747,0,0,0,3,1,1,93.7,26.1,1,,107,0,0,0,0,0,1,0,0,0,0,0,74.02026,9.163564,0,4.444267,1 +1,1,0,0,1,126467,0,9542.002,51.60301,0,13,1,59.48174,17.95642,0,0,0,77.43816,0,0,0,7,0,3,52.6,21.7,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,69.33797,9.163564,1.098612,4.34948,1 +1,1,0,0,2,126467,0,9542.002,52.60301,0,13,1,17.78976,0,0,0,0,17.78976,0,0,0,3,0,3,52.6,21.7,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,69.33797,9.163564,1.098612,2.878623,1 +1,1,0,0,3,126467,0,9542.002,53.60301,0,13,1,28.13268,0,0,0,0,28.13268,0,0,0,2,0,3,52.6,21.7,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,69.33797,9.163564,1.098612,3.336932,1 +1,1,0,0,1,126468,0,9542.002,18.52704,1,12,1,30.62426,9.045937,0,0,0,39.6702,0,0,0,1,0,3,42.1,13,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,72.70441,9.163564,1.098612,3.6806,1 +1,1,0,0,2,126468,0,9542.002,19.52704,1,12,1,40.97035,5.369272,26.41509,0,0,72.75471,0,0,0,3,0,3,42.1,13,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,72.70441,9.163564,1.098612,4.287094,1 +1,1,0,0,3,126468,0,9542.002,20.52704,1,12,1,42.01474,11.95086,0,0,767.0762,821.0417,1,0,0,2,0,3,42.1,13,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,72.70441,9.163564,1.098612,6.710574,1 +1,1,0,0,1,126469,0,9542.002,47.10199,1,12,1,89.28151,26.27797,0,0,992.2438,1107.803,1,0,0,8,0,3,51.6,8.7,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,71.65771,9.163564,1.098612,7.010134,1 +1,1,0,0,2,126469,0,9542.002,48.10199,1,12,1,284.717,61.062,0,0,0,345.779,0,0,0,14,0,3,51.6,8.7,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,71.65771,9.163564,1.098612,5.8458,1 +1,1,0,0,3,126469,0,9542.002,49.10199,1,12,1,51.30221,44.10811,0,0,0,95.41032,0,0,0,6,0,3,51.6,8.7,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,71.65771,9.163564,1.098612,4.558187,1 +8,1,50,1,1,126486,0,1728.908,10.76797,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,163,450,1,0,1.098612,6.109248,0,3.931826,5.786897,1,0,0,76.10808,7.455823,1.098612,,0 +8,1,50,1,2,126486,0,1728.908,11.76797,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,163,450,1,0,1.386294,6.109248,0,3.931826,5.786897,1,0,0,76.10808,7.455823,1.386294,,0 +8,1,50,1,3,126486,0,1728.908,12.76797,0,11,1,16.35283,0,0,0,0,16.35283,0,0,0,2,0,4,74.36826,13.73189,0,,163,450,1,0,1.386294,6.109248,0,3.931826,5.786897,1,0,0,76.10808,7.455823,1.386294,2.794401,1 +8,1,50,1,4,126486,0,1728.908,13.76797,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,163,450,1,0,1.386294,6.109248,0,3.931826,5.786897,1,0,0,76.10808,7.455823,1.386294,,0 +8,1,50,1,5,126486,0,1728.908,14.76797,0,11,1,41.22844,4.585612,0,0,0,45.81405,0,0,0,5,0,4,74.36826,13.73189,0,,163,450,1,0,1.386294,6.109248,0,3.931826,5.786897,1,0,0,76.10808,7.455823,1.386294,3.824591,1 +8,1,50,1,1,126488,0,1728.908,47.95893,1,11,1,98.15586,20.80904,39.78584,0,0,158.7507,0,0,0,4,1,3,64.2,26.1,0,,163,450,0,0,1.098612,6.109248,0,3.931826,5.786897,1,0,0,67.26075,7.455823,1.098612,5.067335,1 +8,1,50,1,2,126488,0,1728.908,48.95893,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,64.2,26.1,0,,163,450,0,0,1.386294,6.109248,0,3.931826,5.786897,1,0,0,67.26075,7.455823,1.386294,,0 +8,1,50,1,3,126488,0,1728.908,49.95893,1,11,1,81.26859,19.94053,54.89098,0,0,156.1001,0,0,0,9,1,4,64.2,26.1,0,,163,450,0,0,1.386294,6.109248,0,3.931826,5.786897,1,0,0,67.26075,7.455823,1.386294,5.050498,1 +8,1,50,1,4,126488,0,1728.908,50.95893,1,11,1,19.73382,9.343736,0,0,0,29.07756,0,0,0,2,0,4,64.2,26.1,0,,163,450,0,0,1.386294,6.109248,0,3.931826,5.786897,1,0,0,67.26075,7.455823,1.386294,3.369967,1 +8,1,50,1,5,126488,0,1728.908,51.95893,1,11,1,276.7144,45.35128,47.48002,0,470.8162,840.3618,1,0,0,7,1,4,64.2,26.1,0,,163,450,0,0,1.386294,6.109248,0,3.931826,5.786897,1,0,0,67.26075,7.455823,1.386294,6.733832,1 +8,1,50,1,1,126489,0,1728.908,15.86858,1,11,1,95.18144,36.38311,0,0,25263.65,25395.21,1,0,0,9,0,3,75.8,13,0,,163,450,1,1,1.098612,6.109248,0,3.931826,5.786897,1,0,0,63.92562,7.455823,1.098612,10.14232,1 +8,1,50,1,2,126489,0,1728.908,16.86858,1,11,1,27.21829,27.10942,0,0,0,54.32771,0,0,0,3,0,4,75.8,13,0,,163,450,1,1,1.386294,6.109248,0,3.931826,5.786897,1,0,0,63.92562,7.455823,1.386294,3.995034,1 +8,1,50,1,3,126489,0,1728.908,17.86858,1,11,1,80.94153,38.60258,41.94747,0,0,161.4916,0,0,0,7,2,4,75.8,13,0,,163,450,1,1,1.386294,6.109248,0,3.931826,5.786897,1,0,0,63.92562,7.455823,1.386294,5.084453,1 +8,1,50,1,4,126489,0,1728.908,18.86858,1,11,1,76.8793,25.69527,0,0,0,102.5746,0,0,0,4,0,4,75.8,13,0,,163,450,0,0,1.386294,6.109248,0,3.931826,5.786897,1,0,0,63.92562,7.455823,1.386294,4.63059,1 +8,1,50,1,5,126489,0,1728.908,19.86858,1,11,1,134.8296,25.7257,0,0,223.8199,384.3753,1,0,0,5,1,4,75.8,13,0,,163,450,0,0,1.386294,6.109248,0,3.931826,5.786897,1,0,0,63.92562,7.455823,1.386294,5.951619,1 +7,1,25,1,1,126497,0,5035.244,58.32717,0,8,1,143.735,43.96283,25.94125,0,558.5552,772.1943,1,0,0,10,0,2,65.3,21.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,1,0,58.96577,8.524416,.6931472,6.649236,1 +7,1,25,1,2,126497,0,5035.244,59.32717,0,8,1,15.88171,57.19058,30.77218,0,0,103.8445,0,0,0,2,1,2,65.3,21.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,1,0,58.96577,8.524416,.6931472,4.642894,1 +7,1,25,1,1,126498,0,5035.244,49.82888,1,8,1,285.8513,28.84892,0,0,0,314.7002,0,0,0,6,0,2,80,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,63.43494,8.524416,.6931472,5.75162,1 +7,1,25,1,2,126498,0,5035.244,50.82888,1,8,1,17.52464,11.33625,37.48083,0,448.7952,515.1369,1,0,0,2,1,2,80,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,63.43494,8.524416,.6931472,6.244433,1 +3,1,100,0,1,126516,0,17296.53,33.73032,1,16,1,16.65675,11.08864,0,0,0,27.74539,0,0,0,2,0,5,73.8,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,69.55659,9.758319,1.609438,3.32307,1 +3,1,100,0,2,126516,0,17296.53,34.73032,1,16,1,371.8018,30.44638,0,0,0,402.2482,0,0,0,10,0,5,73.8,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,69.55659,9.758319,1.609438,5.997069,1 +3,1,100,0,3,126516,0,17296.53,35.73032,1,16,1,10.15857,43.91972,0,0,0,54.0783,0,0,0,1,0,5,73.8,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,69.55659,9.758319,1.609438,3.990433,1 +3,1,100,0,1,126517,0,17296.53,9.330595,0,16,1,20.22606,17.93575,0,0,0,38.16181,0,0,0,3,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,1,0,0,77.79649,9.758319,1.609438,3.641835,1 +3,1,100,0,2,126517,0,17296.53,10.3306,0,16,1,29.9129,4.599891,0,0,0,34.51279,0,0,0,2,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,1,0,0,77.79649,9.758319,1.609438,3.54133,1 +3,1,100,0,3,126517,0,17296.53,11.3306,0,16,1,22.79485,3.657086,0,0,0,26.45193,0,0,0,3,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,1,0,0,77.79649,9.758319,1.609438,3.275329,1 +3,1,100,0,1,126518,0,17296.53,10.42026,1,16,1,24.39024,1.754908,0,0,0,26.14515,0,0,0,3,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,83.2181,9.758319,1.609438,3.263664,1 +3,1,100,0,2,126518,0,17296.53,11.42026,1,16,1,77.81709,13.05389,0,0,182.5259,273.3969,1,0,0,2,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,83.2181,9.758319,1.609438,5.610924,1 +3,1,100,0,3,126518,0,17296.53,12.42026,1,16,1,14.37066,0,0,0,0,14.37066,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,83.2181,9.758319,1.609438,2.665189,1 +3,1,100,0,1,126519,0,17296.53,34.54894,0,18,1,35.09816,49.55384,0,0,0,84.65199,0,0,0,5,0,5,80,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,64.61339,9.758319,1.609438,4.438549,1 +3,1,100,0,2,126519,0,17296.53,35.54894,0,18,1,159.4992,37.40882,0,0,0,196.908,0,0,0,7,0,5,80,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,64.61339,9.758319,1.609438,5.282737,1 +3,1,100,0,3,126519,0,17296.53,36.54894,0,18,1,101.5857,55.32706,0,0,0,156.9128,0,0,0,10,0,5,80,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,64.61339,9.758319,1.609438,5.05569,1 +3,1,100,0,1,126520,0,17296.53,4.112252,1,16,1,39.26234,15.84176,0,0,0,55.1041,0,0,0,5,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,1,0,0,71.73346,9.758319,1.609438,4.009224,1 +3,1,100,0,2,126520,0,17296.53,5.112252,1,16,1,89.82036,26.32553,0,0,0,116.1459,0,0,0,6,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,1,0,0,71.73346,9.758319,1.609438,4.754847,1 +3,1,100,0,3,126520,0,17296.53,6.112252,1,16,1,8.919723,16.0555,0,0,0,24.97522,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,1,0,0,71.73346,9.758319,1.609438,3.217884,1 +8,1,50,0,1,126544,0,13919.98,11.49076,1,12,1,28.85748,2.37338,0,0,0,31.23086,0,0,0,2,0,3,74.36826,13.73189,0,,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,84.23631,9.541152,1.098612,3.441407,1 +8,1,50,0,2,126544,0,13919.98,12.49076,1,12,1,9.703504,0,0,0,0,9.703504,0,0,0,0,1,3,74.36826,13.73189,0,,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,84.23631,9.541152,1.098612,2.272487,1 +8,1,50,0,3,126544,0,13919.98,13.49076,1,12,1,7.371007,1.941032,0,0,0,9.312039,0,0,0,1,0,3,74.36826,13.73189,0,,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,84.23631,9.541152,1.098612,2.231308,1 +8,1,50,0,1,126545,0,13919.98,42.7269,1,12,1,283.5689,45.36514,0,0,0,328.9341,0,0,0,12,0,3,34.7,26.1,1,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,66.0592,9.541152,1.098612,5.795857,1 +8,1,50,0,2,126545,0,13919.98,43.7269,1,12,1,264.469,92.54447,33.66038,0,0,390.6739,0,0,0,17,6,3,34.7,26.1,1,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,66.0592,9.541152,1.098612,5.967873,1 +8,1,50,0,3,126545,0,13919.98,44.7269,1,12,1,0,47.2629,0,0,0,47.2629,0,0,0,0,0,3,34.7,26.1,1,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,66.0592,9.541152,1.098612,3.855726,1 +8,1,50,0,1,126546,0,13919.98,43.47981,0,11,1,191.9906,6.861013,0,0,0,198.8516,0,0,0,2,0,3,74.7,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,61.27012,9.541152,1.098612,5.292559,1 +8,1,50,0,2,126546,0,13919.98,44.47981,0,11,1,0,8.916442,0,0,0,8.916442,0,0,0,0,0,3,74.7,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,61.27012,9.541152,1.098612,2.187897,1 +8,1,50,0,3,126546,0,13919.98,45.47981,0,11,1,32.43243,2.584767,53.40541,0,0,88.42261,0,0,0,1,0,3,74.7,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,61.27012,9.541152,1.098612,4.482128,1 +3,1,100,1,1,126553,0,11575.06,3.471595,1,14,1,7.237636,0,0,0,0,7.237636,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,1,0,0,74.41945,9.356694,1.386294,1.979295,1 +3,1,100,1,2,126553,0,11575.06,4.471595,1,14,1,18.72247,0,0,0,0,18.72247,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,1,0,0,74.41945,9.356694,1.386294,2.929724,1 +3,1,100,1,3,126553,0,11575.06,5.471595,1,14,1,39.02562,2.556504,0,0,0,41.58212,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,1,0,0,74.41945,9.356694,1.386294,3.72767,1 +3,1,100,1,4,126553,0,11575.06,6.471595,1,14,1,12.05378,0,0,0,0,12.05378,0,0,0,0,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,1,0,0,74.41945,9.356694,1.386294,2.489378,1 +3,1,100,1,5,126553,0,11575.06,7.471595,1,14,1,16.58869,0,0,0,0,16.58869,0,0,0,1,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,1,0,0,74.41945,9.356694,1.386294,2.808721,1 +3,1,100,1,1,126554,0,11575.06,32.55578,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,77.9,17.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,71.67448,9.356694,1.386294,,0 +3,1,100,1,2,126554,0,11575.06,33.55578,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,77.9,17.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,71.67448,9.356694,1.386294,,0 +3,1,100,1,3,126554,0,11575.06,34.55578,0,16,1,12.05424,0,14.1336,0,0,26.18785,0,0,0,0,1,4,77.9,17.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,71.67448,9.356694,1.386294,3.265295,1 +3,1,100,1,4,126554,0,11575.06,35.55578,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,77.9,17.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,71.67448,9.356694,1.386294,,0 +3,1,100,1,5,126554,0,11575.06,36.55578,0,16,1,11.90983,0,0,0,0,11.90983,0,0,0,0,1,4,77.9,17.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,71.67448,9.356694,1.386294,2.477364,1 +3,1,100,1,1,126555,0,11575.06,6.401095,1,14,1,9.650181,8.27503,0,0,0,17.92521,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,1,0,0,77.85107,9.356694,1.386294,2.886208,1 +3,1,100,1,2,126555,0,11575.06,7.401095,1,14,1,0,7.621145,0,0,0,7.621145,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,1,0,0,77.85107,9.356694,1.386294,2.030927,1 +3,1,100,1,3,126555,0,11575.06,8.401095,1,14,1,15.57007,4.650929,0,0,0,20.22099,0,0,0,1,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,1,0,0,77.85107,9.356694,1.386294,3.006721,1 +3,1,100,1,4,126555,0,11575.06,9.401095,1,14,1,12.05378,2.545202,20.34771,0,0,34.94669,0,0,0,0,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,1,0,0,77.85107,9.356694,1.386294,3.553824,1 +3,1,100,1,5,126555,0,11575.06,10.4011,1,14,1,16.58869,0,12.44577,0,0,29.03445,0,0,0,1,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,1,0,0,77.85107,9.356694,1.386294,3.368483,1 +3,1,100,1,1,126556,0,11575.06,31.86311,1,14,1,28.34741,0,25.84439,0,0,54.1918,0,0,0,2,1,4,86.3,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,72.42058,9.356694,1.386294,3.99253,1 +3,1,100,1,2,126556,0,11575.06,32.86311,1,14,1,0,0,0,0,0,0,0,0,0,0,0,4,86.3,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,72.42058,9.356694,1.386294,,0 +3,1,100,1,3,126556,0,11575.06,33.86311,1,14,1,10.54746,0,0,0,0,10.54746,0,0,0,1,0,4,86.3,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,72.42058,9.356694,1.386294,2.355886,1 +3,1,100,1,4,126556,0,11575.06,34.86311,1,14,1,23.64395,1.687529,0,0,0,25.33148,0,0,0,1,1,4,86.3,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,72.42058,9.356694,1.386294,3.232048,1 +3,1,100,1,5,126556,0,11575.06,35.86311,1,14,1,11.48448,0,0,0,0,11.48448,0,0,0,1,0,4,86.3,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,72.42058,9.356694,1.386294,2.440996,1 +4,1,100,1,1,126566,0,8857.32,37.21561,0,13,1,80.33573,134.2626,0,0,0,214.5983,0,0,0,4,0,5,93.7,8.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,72.11638,9.089112,1.609438,5.368768,1 +4,1,100,1,2,126566,0,8857.32,38.21561,0,13,1,108.4337,120.2026,22.32202,0,0,250.9584,0,0,0,3,0,5,93.7,8.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,72.11638,9.089112,1.609438,5.525287,1 +4,1,100,1,3,126566,0,8857.32,39.21561,0,13,1,9.476309,0,0,0,0,9.476309,0,0,0,1,0,6,93.7,8.7,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,72.11638,9.089112,1.791759,2.248795,1 +4,1,100,1,4,126566,0,8857.32,40.21561,0,13,1,9.22084,4.601199,0,0,0,13.82204,0,0,0,1,0,6,93.7,8.7,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,72.11638,9.089112,1.791759,2.626264,1 +4,1,100,1,5,126566,0,8857.32,41.21561,0,13,1,.5289886,2.391028,0,0,0,2.920017,0,0,0,0,0,6,93.7,8.7,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,72.11638,9.089112,1.791759,1.071589,1 +4,1,100,1,1,126567,0,8857.32,14.45311,0,12,1,29.3765,0,0,0,0,29.3765,0,0,0,0,0,5,95.8,0,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,79.27259,9.089112,1.609438,3.380195,1 +4,1,100,1,2,126567,0,8857.32,15.45311,0,12,1,0,4.359255,0,0,0,4.359255,0,0,0,0,0,5,95.8,0,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,79.27259,9.089112,1.609438,1.472301,1 +4,1,100,1,3,126567,0,8857.32,16.45311,0,12,1,26.18454,6.528678,0,0,0,32.71322,0,0,0,3,0,6,95.8,0,0,,1000,1000,1,0,1.791759,6.907755,1,0,0,0,0,0,79.27259,9.089112,1.791759,3.487779,1 +4,1,100,1,4,126567,0,8857.32,17.45311,0,12,1,23.0521,0,0,0,0,23.0521,0,0,0,2,0,6,95.8,0,0,,1000,1000,1,0,1.791759,6.907755,1,0,0,0,0,0,79.27259,9.089112,1.791759,3.137757,1 +4,1,100,1,5,126567,0,8857.32,18.45311,0,12,1,8.463818,0,0,0,0,8.463818,0,0,0,1,0,6,95.8,0,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,0,0,0,79.27259,9.089112,1.791759,2.1358,1 +4,1,100,1,1,126568,0,8857.32,13.40178,1,12,1,14.98801,3.52518,0,0,0,18.51319,0,0,0,1,0,5,74.36826,13.73189,.0277778,,1000,1000,1,1,1.609438,6.907755,1,0,0,1,0,0,77.07726,9.089112,1.609438,2.918483,1 +4,1,100,1,2,126568,0,8857.32,14.40178,1,12,1,6.024096,4.813801,16.59912,0,0,27.43702,0,0,0,1,0,5,74.36826,13.73189,.0277778,,1000,1000,1,1,1.609438,6.907755,1,0,0,1,0,0,77.07726,9.089112,1.609438,3.311893,1 +4,1,100,1,3,126568,0,8857.32,15.40178,1,12,1,17.45636,2.024938,0,0,0,19.4813,0,0,0,2,0,6,74.36826,13.73189,.0277778,,1000,1000,1,1,1.791759,6.907755,1,0,0,1,0,0,77.07726,9.089112,1.791759,2.969455,1 +4,1,100,1,4,126568,0,8857.32,16.40178,1,12,1,0,3.720608,0,0,0,3.720608,0,0,0,0,0,6,74.36826,13.73189,.0277778,,1000,1000,1,1,1.791759,6.907755,1,0,0,1,0,0,77.07726,9.089112,1.791759,1.313887,1 +4,1,100,1,5,126568,0,8857.32,17.40178,1,12,1,74.1642,3.643673,28.67964,0,0,106.4875,0,0,0,2,1,6,74.36826,13.73189,.0277778,,1000,1000,1,1,1.791759,6.907755,1,0,0,1,0,0,77.07726,9.089112,1.791759,4.668028,1 +4,1,100,1,1,126569,0,8857.32,6.075291,1,12,1,4.196643,12.58993,0,0,0,16.78657,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,83.01283,9.089112,1.609438,2.820579,1 +4,1,100,1,2,126569,0,8857.32,7.075291,1,12,1,16.977,11.17196,0,0,0,28.14896,0,0,0,1,1,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,83.01283,9.089112,1.609438,3.33751,1 +4,1,100,1,3,126569,0,8857.32,8.075291,1,12,1,0,3.690773,0,0,0,3.690773,0,0,0,0,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,1,0,0,0,0,0,83.01283,9.089112,1.791759,1.305836,1 +4,1,100,1,4,126569,0,8857.32,9.075291,1,12,1,29.50669,6.325496,0,0,0,35.83218,0,0,0,1,3,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,1,0,0,0,0,0,83.01283,9.089112,1.791759,3.578846,1 +4,1,100,1,5,126569,0,8857.32,10.07529,1,12,1,17.45662,1.447313,0,0,0,18.90394,0,0,0,0,3,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,1,0,0,0,0,0,83.01283,9.089112,1.791759,2.93937,1 +4,1,100,1,1,126570,0,8857.32,32.82683,1,12,1,40.76739,2.392086,0,0,0,43.15947,0,0,0,2,0,5,88.4,8.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,66.55627,9.089112,1.609438,3.764902,1 +4,1,100,1,2,126570,0,8857.32,33.82683,1,12,1,60.24096,11.12815,0,0,1100.181,1171.55,1,0,0,6,0,5,88.4,8.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,66.55627,9.089112,1.609438,7.066083,1 +4,1,100,1,3,126570,0,8857.32,34.82683,1,12,1,2.992519,2.109726,0,0,0,5.102244,0,0,0,0,0,6,88.4,8.7,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,66.55627,9.089112,1.791759,1.629681,1 +4,1,100,1,4,126570,0,8857.32,35.82683,1,12,1,62.24067,0,0,0,0,62.24067,0,0,0,1,1,6,88.4,8.7,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,66.55627,9.089112,1.791759,4.131009,1 +4,1,100,1,5,126570,0,8857.32,36.82683,1,12,1,18.30301,2.835379,0,0,0,21.13838,0,0,0,1,0,6,88.4,8.7,0,,1000,1000,0,0,1.791759,6.907755,1,0,0,1,0,0,66.55627,9.089112,1.791759,3.05109,1 +9,1,50,1,1,126596,0,14330.02,35.03354,1,20,1,106.0071,42.30271,0,0,696.6019,844.9117,1,0,0,12,0,4,67.4,21.7,1,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,64.92197,9.570182,1.386294,6.739232,1 +9,1,50,1,2,126596,0,14330.02,36.03354,1,20,1,100.2695,26.14016,8.625337,0,1220.782,1355.817,1,0,0,9,0,4,67.4,21.7,1,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,64.92197,9.570182,1.386294,7.212159,1 +9,1,50,1,3,126596,0,14330.02,37.03354,1,20,1,83.53809,47.91155,0,0,0,131.4496,0,0,0,7,0,4,67.4,21.7,1,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,64.92197,9.570182,1.386294,4.878624,1 +9,1,50,1,1,126597,0,14330.02,42.59822,0,24,1,21.20141,5.683156,49.85277,0,0,76.73734,0,0,0,3,0,4,68.4,13,1,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,68.74699,9.570182,1.386294,4.340388,1 +9,1,50,1,2,126597,0,14330.02,43.59822,0,24,1,1.617251,2.754717,0,0,0,4.371968,0,0,0,2,0,4,68.4,13,1,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,68.74699,9.570182,1.386294,1.475213,1 +9,1,50,1,3,126597,0,14330.02,44.59822,0,24,1,26.53563,4.127764,48.27027,0,0,78.93366,0,0,0,3,0,4,68.4,13,1,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,68.74699,9.570182,1.386294,4.368608,1 +9,1,50,1,1,126598,0,14330.02,2.023272,0,20,1,55.35925,13.26266,4.711425,0,0,73.33334,0,0,0,10,1,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,66.69353,9.570182,1.386294,4.295015,1 +9,1,50,1,2,126598,0,14330.02,3.023272,0,20,1,51.21294,1.644205,0,0,0,52.85714,0,0,1,7,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,66.69353,9.570182,1.386294,3.967593,1 +9,1,50,1,3,126598,0,14330.02,4.023272,0,20,1,24.57002,11.46929,0,0,0,36.03931,0,0,0,5,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,66.69353,9.570182,1.386294,3.58461,1 +9,1,50,1,1,126599,0,14330.02,4.607803,0,20,1,324.7644,8.386337,0,0,0,333.1508,0,0,0,5,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,66.69353,9.570182,1.386294,5.808595,1 +9,1,50,1,2,126599,0,14330.02,5.607803,0,20,1,24.25876,4.684636,0,0,0,28.9434,0,0,0,5,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,66.69353,9.570182,1.386294,3.365342,1 +9,1,50,1,3,126599,0,14330.02,6.607803,0,20,1,15.23342,10.93366,0,0,0,26.16708,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,66.69353,9.570182,1.386294,3.264502,1 +2,1,100,0,1,126609,0,9542.002,41.79603,1,12,1,45.34747,11.702,0,0,0,57.04947,0,0,0,4,0,4,90.5,8.7,0,,0,0,0,0,1.386294,0,1,0,0,1,0,0,72.1002,9.163564,1.386294,4.043919,1 +2,1,100,0,2,126609,0,9542.002,42.79603,1,12,1,89.75742,4.911051,0,0,0,94.66846,0,0,0,3,0,4,90.5,8.7,0,,0,0,0,0,1.386294,0,1,0,0,1,0,0,72.1002,9.163564,1.386294,4.550381,1 +2,1,100,0,3,126609,0,9542.002,43.79603,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,90.5,8.7,0,,0,0,0,0,1.386294,0,1,0,0,1,0,0,72.1002,9.163564,1.386294,,0 +2,1,100,0,4,126609,0,9542.002,44.79603,1,12,1,13.67366,2.962625,0,0,0,16.63628,0,0,0,1,0,4,90.5,8.7,0,,0,0,0,0,1.386294,0,1,0,0,1,0,0,72.1002,9.163564,1.386294,2.811586,1 +2,1,100,0,5,126609,0,9542.002,45.79603,1,12,1,38.76615,0,0,0,0,38.76615,0,0,0,1,0,4,90.5,8.7,0,,0,0,0,0,1.386294,0,1,0,0,1,0,0,72.1002,9.163564,1.386294,3.657547,1 +2,1,100,0,1,126610,0,9542.002,14.57632,0,12,1,5.889281,0,0,0,0,5.889281,0,0,0,1,0,4,73.7,4.3,0,,0,0,1,0,1.386294,0,1,0,0,1,0,0,74.08881,9.163564,1.386294,1.773134,1 +2,1,100,0,2,126610,0,9542.002,15.57632,0,12,1,13.47709,0,0,0,0,13.47709,0,0,0,1,0,4,73.7,4.3,0,,0,0,1,0,1.386294,0,1,0,0,1,0,0,74.08881,9.163564,1.386294,2.600991,1 +2,1,100,0,3,126610,0,9542.002,16.57632,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,73.7,4.3,0,,0,0,1,0,1.386294,0,1,0,0,1,0,0,74.08881,9.163564,1.386294,,0 +2,1,100,0,4,126610,0,9542.002,17.57632,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,73.7,4.3,0,,0,0,1,0,1.386294,0,1,0,0,1,0,0,74.08881,9.163564,1.386294,,0 +2,1,100,0,5,126610,0,9542.002,18.57632,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,73.7,4.3,0,,0,0,0,0,1.386294,0,1,0,0,1,0,0,74.08881,9.163564,1.386294,,0 +2,1,100,0,1,126611,0,9542.002,8.405202,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,1,0,0,1,0,0,79.46868,9.163564,1.386294,,0 +2,1,100,0,2,126611,0,9542.002,9.405202,1,12,1,4.851752,3.28841,0,0,0,8.140162,0,0,0,1,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,1,0,0,1,0,0,79.46868,9.163564,1.386294,2.09681,1 +2,1,100,0,3,126611,0,9542.002,10.4052,1,12,1,118.6732,23.14496,0,0,0,141.8182,0,0,0,8,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,1,0,0,1,0,0,79.46868,9.163564,1.386294,4.954546,1 +2,1,100,0,4,126611,0,9542.002,11.4052,1,12,1,34.43482,15.10939,0,0,0,49.54421,0,0,0,3,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,1,0,0,1,0,0,79.46868,9.163564,1.386294,3.902865,1 +2,1,100,0,5,126611,0,9542.002,12.4052,1,12,1,22.50938,21.21717,0,0,0,43.72655,0,0,0,2,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,1,0,0,1,0,0,79.46868,9.163564,1.386294,3.777956,1 +2,1,100,0,1,126612,0,9542.002,19.47433,1,13,1,48.29211,40.22968,21.49588,0,0,110.0177,0,0,0,7,0,1,78.9,17.4,0,,0,0,0,0,0,0,1,0,0,1,0,0,74.33247,9.163564,0,4.700641,1 +2,1,100,0,2,126612,0,9542.002,20.47433,1,13,1,44.20485,29.82749,0,0,0,74.03235,0,0,0,5,0,1,78.9,17.4,0,,0,0,0,0,0,0,1,0,0,1,0,0,74.33247,9.163564,0,4.304502,1 +2,1,100,0,3,126612,0,9542.002,21.47433,1,13,1,45.70024,17.79852,0,0,0,63.49877,0,0,0,4,0,1,78.9,17.4,0,,0,0,0,0,0,0,1,0,0,1,0,0,74.33247,9.163564,0,4.151021,1 +2,1,100,0,4,126612,0,9542.002,22.47433,1,13,1,34.27985,5.556062,0,0,0,39.83591,0,0,0,2,0,1,78.9,17.4,0,,0,0,0,0,0,0,1,0,0,1,0,0,74.33247,9.163564,0,3.684769,1 +2,1,100,0,5,126612,0,9542.002,23.47433,1,13,1,33.34723,8.724468,0,0,0,42.0717,0,0,0,4,0,1,78.9,17.4,0,,0,0,0,0,0,0,1,0,0,1,0,0,74.33247,9.163564,0,3.739375,1 +2,1,100,0,1,126613,0,9542.002,42.00411,0,12,1,24.44052,8.763251,37.27915,0,0,70.48292,0,0,0,1,0,4,77.9,13,0,,0,0,0,0,1.386294,0,1,0,0,0,1,0,66.69038,9.163564,1.386294,4.255371,1 +2,1,100,0,2,126613,0,9542.002,43.00411,0,12,1,379.2668,48.46361,0,0,0,427.7305,0,0,0,6,0,4,77.9,13,0,,0,0,0,0,1.386294,0,1,0,0,0,1,0,66.69038,9.163564,1.386294,6.058493,1 +2,1,100,0,3,126613,0,9542.002,44.00411,0,12,1,15.47912,16.09337,0,0,0,31.57248,0,0,0,2,0,4,77.9,13,0,,0,0,0,0,1.386294,0,1,0,0,0,1,0,66.69038,9.163564,1.386294,3.452286,1 +2,1,100,0,4,126613,0,9542.002,45.00411,0,12,1,29.62625,24.09754,37.09207,0,0,90.81586,0,0,0,4,0,4,77.9,13,0,,0,0,0,0,1.386294,0,1,0,0,0,1,0,66.69038,9.163564,1.386294,4.508834,1 +2,1,100,0,5,126613,0,9542.002,46.00411,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.9,13,0,,0,0,0,0,1.386294,0,1,0,0,0,1,0,66.69038,9.163564,1.386294,,0 +1,1,0,0,1,126635,0,9092.432,1.092402,0,19,1,47.59072,9.970256,0,0,0,57.56097,0,0,0,8,0,4,74.36826,13.73189,0,,450,450,1,0,1.386294,6.109248,1,0,0,0,0,0,79.71203,9.115308,1.386294,4.052845,1 +1,1,0,0,2,126635,0,9092.432,2.092402,0,19,1,31.8454,3.712575,0,0,0,35.55798,0,0,0,4,0,4,74.36826,13.73189,0,,450,450,1,0,1.386294,6.109248,1,0,0,0,0,0,79.71203,9.115308,1.386294,3.571164,1 +1,1,0,0,3,126635,0,9092.432,3.092402,0,19,1,66.15461,10.53023,18.58276,0,0,95.26759,0,0,0,6,0,4,74.36826,13.73189,0,,450,450,1,0,1.386294,6.109248,1,0,0,0,0,0,79.71203,9.115308,1.386294,4.55669,1 +1,1,0,0,4,126635,0,9092.432,4.092402,0,19,1,33.73107,5.043598,0,0,0,38.77467,0,0,0,4,0,4,74.36826,13.73189,0,,450,450,1,0,1.386294,6.109248,1,0,0,0,0,0,79.71203,9.115308,1.386294,3.657767,1 +1,1,0,0,5,126635,0,9092.432,5.092402,0,19,1,40.80774,7.942785,28.18679,0,0,76.93732,0,0,0,3,0,4,74.36826,13.73189,0,,450,450,1,0,1.386294,6.109248,1,0,0,0,0,0,79.71203,9.115308,1.386294,4.342991,1 +1,1,0,0,1,126636,0,9092.432,3.92334,1,19,1,27.36466,5.591909,0,0,0,32.95657,0,0,0,4,0,4,74.36826,13.73189,0,,450,450,1,1,1.386294,6.109248,1,0,0,0,0,0,79.19805,9.115308,1.386294,3.495191,1 +1,1,0,0,2,126636,0,9092.432,4.92334,1,19,1,31.02885,5.035384,0,0,0,36.06424,0,0,0,3,0,4,74.36826,13.73189,0,,450,450,1,1,1.386294,6.109248,1,0,0,0,0,0,79.19805,9.115308,1.386294,3.585302,1 +1,1,0,0,3,126636,0,9092.432,5.92334,1,19,1,84.14272,0,0,0,0,84.14272,0,0,0,2,1,4,74.36826,13.73189,0,,450,450,1,1,1.386294,6.109248,1,0,0,0,0,0,79.19805,9.115308,1.386294,4.432514,1 +1,1,0,0,4,126636,0,9092.432,6.92334,1,19,1,19.04543,10.11014,0,0,0,29.15558,0,0,0,3,0,4,74.36826,13.73189,0,,450,450,1,1,1.386294,6.109248,1,0,0,0,0,0,79.19805,9.115308,1.386294,3.372646,1 +1,1,0,0,5,126636,0,9092.432,7.92334,1,19,1,66.91628,14.11022,0,0,0,81.0265,0,0,0,3,0,4,74.36826,13.73189,0,,450,450,1,1,1.386294,6.109248,1,0,0,0,0,0,79.19805,9.115308,1.386294,4.394776,1 +1,1,0,0,1,126637,0,9092.432,32.19439,0,19,1,14.8721,0,35.12195,0,0,49.99405,0,0,0,1,0,4,57.5,13.73189,0,,450,450,0,0,1.386294,6.109248,1,0,0,1,0,0,68.50468,9.115308,1.386294,3.911904,1 +1,1,0,0,2,126637,0,9092.432,33.19439,0,19,1,0,0,0,0,0,0,0,0,0,0,0,4,57.5,13.73189,0,,450,450,0,0,1.386294,6.109248,1,0,0,1,0,0,68.50468,9.115308,1.386294,,0 +1,1,0,0,3,126637,0,9092.432,34.19439,0,19,1,51.53617,2.685827,25.76809,0,0,79.99009,0,0,0,4,0,4,57.5,13.73189,0,,450,450,0,0,1.386294,6.109248,1,0,0,1,0,0,68.50468,9.115308,1.386294,4.381903,1 +1,1,0,0,4,126637,0,9092.432,35.19439,0,19,1,116.5672,6.094539,0,0,0,122.6618,0,0,0,3,0,4,57.5,13.73189,0,,450,450,0,0,1.386294,6.109248,1,0,0,1,0,0,68.50468,9.115308,1.386294,4.809431,1 +1,1,0,0,5,126637,0,9092.432,36.19439,0,19,1,3.365587,0,0,0,0,3.365587,0,0,0,0,0,4,57.5,13.73189,0,,450,450,0,0,1.386294,6.109248,1,0,0,1,0,0,68.50468,9.115308,1.386294,1.213602,1 +1,1,0,0,1,126638,0,9092.432,30.88022,1,19,1,33.3135,27.72159,27.35277,0,0,88.38786,0,0,0,3,0,4,62.5,13.73189,0,,450,450,0,0,1.386294,6.109248,1,0,0,1,0,0,67.19316,9.115308,1.386294,4.481735,1 +1,1,0,0,2,126638,0,9092.432,31.88022,1,19,1,26.12956,11.24115,0,0,0,37.37071,0,0,0,2,0,4,62.5,13.73189,0,,450,450,0,0,1.386294,6.109248,1,0,0,1,0,0,67.19316,9.115308,1.386294,3.620887,1 +1,1,0,0,3,126638,0,9092.432,32.88022,1,19,1,14.8662,9.781962,0,0,0,24.64817,0,0,0,1,0,4,62.5,13.73189,0,,450,450,0,0,1.386294,6.109248,1,0,0,1,0,0,67.19316,9.115308,1.386294,3.204703,1 +1,1,0,0,4,126638,0,9092.432,33.88022,1,19,1,48.64617,2.505737,0,0,0,51.15191,0,0,0,2,0,4,62.5,13.73189,0,,450,450,0,0,1.386294,6.109248,1,0,0,1,0,0,67.19316,9.115308,1.386294,3.9348,1 +1,1,0,0,5,126638,0,9092.432,34.88022,1,19,1,24.8212,0,0,0,0,24.8212,0,0,0,2,0,4,62.5,13.73189,0,,450,450,0,0,1.386294,6.109248,1,0,0,1,0,0,67.19316,9.115308,1.386294,3.211698,1 +6,1,25,0,1,126650,0,9743.176,32.97467,0,14,1,0,2.338045,0,0,0,2.338045,0,0,0,0,0,4,91.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,78.79201,9.184425,1.386294,.8493149,1 +6,1,25,0,2,126650,0,9743.176,33.97467,0,14,1,43.66577,6.080863,0,0,0,49.74663,0,0,0,2,0,4,91.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,78.79201,9.184425,1.386294,3.906943,1 +6,1,25,0,3,126650,0,9743.176,34.97467,0,14,1,7.371007,7.208845,0,0,0,14.57985,0,0,0,1,0,5,91.3,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,78.79201,9.184425,1.609438,2.679641,1 +6,1,25,0,1,126651,0,9743.176,6.130048,0,12,1,50.79505,3.274441,0,0,0,54.06949,0,0,0,4,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,85.04264,9.184425,1.386294,3.99027,1 +6,1,25,0,2,126651,0,9743.176,7.130048,0,12,1,18.86792,8.722372,0,0,0,27.5903,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,85.04264,9.184425,1.386294,3.317464,1 +6,1,25,0,3,126651,0,9743.176,8.130048,0,12,1,64.37347,9.7543,0,0,0,74.12776,0,0,0,3,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,85.04264,9.184425,1.609438,4.30579,1 +6,1,25,0,1,126652,0,9743.176,31.21424,1,12,1,80.09423,51.60188,0,0,0,131.6961,0,0,0,9,0,4,86.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,1,0,56.3639,9.184425,1.386294,4.880497,1 +6,1,25,0,2,126652,0,9743.176,32.21424,1,12,1,124.5283,109.504,35.76819,0,4801.725,5071.525,1,0,0,11,0,4,86.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,1,0,56.3639,9.184425,1.386294,8.531397,1 +6,1,25,0,3,126652,0,9743.176,33.21424,1,12,1,6.633907,58.45209,0,0,0,65.086,0,0,0,1,0,5,86.3,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,56.3639,9.184425,1.609438,4.175709,1 +6,1,25,0,1,126653,0,9743.176,8.919918,0,12,1,130.7421,58.75147,0,0,0,189.4935,0,0,0,7,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,73.90643,9.184425,1.386294,5.244355,1 +6,1,25,0,2,126653,0,9743.176,9.919918,0,12,1,90.29649,40.14016,26.95418,0,0,157.3908,0,0,0,31,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,73.90643,9.184425,1.386294,5.058732,1 +6,1,25,0,3,126653,0,9743.176,10.91992,0,12,1,7.371007,18.92875,0,0,0,26.29976,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,73.90643,9.184425,1.609438,3.26956,1 +11,1,0,1,1,126665,0,5583.747,3.039014,0,11,1,51.56815,9.408926,0,0,255.5609,316.538,1,0,0,5,1,5,74.36826,13.73189,0,,0,458,1,0,1.609438,6.126869,0,0,0,0,0,0,79.08629,8.627794,1.609438,5.757443,1 +11,1,0,1,2,126665,0,5583.747,4.039014,0,11,1,62.67621,0,0,0,0,62.67621,0,0,0,3,0,6,74.36826,13.73189,0,,0,458,1,0,1.791759,6.126869,0,0,0,0,0,0,79.08629,8.627794,1.791759,4.137982,1 +11,1,0,1,3,126665,0,5583.747,5.039014,0,11,1,47.21246,14.21396,0,0,0,61.42642,0,0,0,6,0,6,74.36826,13.73189,0,,0,458,1,0,1.791759,6.126869,0,0,0,0,0,0,79.08629,8.627794,1.791759,4.11784,1 +11,1,0,1,4,126665,0,5583.747,6.039014,0,11,1,25.96198,5.656003,0,0,0,31.61799,0,0,0,4,0,6,74.36826,13.73189,0,,0,458,1,0,1.791759,6.126869,0,0,0,0,0,0,79.08629,8.627794,1.791759,3.453726,1 +11,1,0,1,5,126665,0,5583.747,7.039014,0,11,1,13.61123,2.105487,20.44662,0,0,36.16333,0,0,0,1,1,6,74.36826,13.73189,0,,0,458,1,0,1.791759,6.126869,0,0,0,0,0,0,79.08629,8.627794,1.791759,3.588046,1 +11,1,0,1,1,126666,0,5583.747,22.5243,1,11,1,15.68154,12.14113,0,0,1307.382,1335.205,1,0,0,3,0,5,96.8,8.7,0,,0,458,0,0,1.609438,6.126869,0,0,0,0,0,0,75.68143,8.627794,1.609438,7.19684,1 +11,1,0,1,2,126666,0,5583.747,23.5243,1,11,1,237.5991,13.05066,0,0,0,250.6498,0,0,0,9,0,6,96.8,8.7,0,,0,458,0,0,1.791759,6.126869,0,0,0,0,0,0,75.68143,8.627794,1.791759,5.524056,1 +11,1,0,1,3,126666,0,5583.747,24.5243,1,11,1,47.40332,1.808137,0,0,1024.405,1073.616,1,0,0,1,0,6,96.8,8.7,0,,0,458,0,0,1.791759,6.126869,0,0,0,0,0,0,75.68143,8.627794,1.791759,6.978788,1 +11,1,0,1,4,126666,0,5583.747,25.5243,1,11,1,25.49838,10.75568,0,0,0,36.25406,0,0,0,4,0,6,96.8,8.7,0,,0,458,0,0,1.791759,6.126869,0,0,0,0,0,0,75.68143,8.627794,1.791759,3.590551,1 +11,1,0,1,5,126666,0,5583.747,26.5243,1,11,1,5.104211,9.506593,0,0,0,14.6108,0,0,0,1,0,6,96.8,8.7,0,,0,458,0,0,1.791759,6.126869,0,0,0,0,0,0,75.68143,8.627794,1.791759,2.681761,1 +11,1,0,1,1,126667,0,5583.747,23.90144,0,11,1,1.809409,5.458384,0,0,0,7.267793,0,0,0,1,0,5,93.7,0,0,,0,458,0,0,1.609438,6.126869,0,0,0,0,0,0,74.79025,8.627794,1.609438,1.983453,1 +11,1,0,1,2,126667,0,5583.747,24.90144,0,11,1,23.95374,7.075991,0,0,0,31.02974,0,0,0,3,0,6,93.7,0,0,,0,458,0,0,1.791759,6.126869,0,0,0,0,0,0,74.79025,8.627794,1.791759,3.434946,1 +11,1,0,1,3,126667,0,5583.747,25.90144,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,93.7,0,0,,0,458,0,0,1.791759,6.126869,0,0,0,0,0,0,74.79025,8.627794,1.791759,,0 +11,1,0,1,4,126667,0,5583.747,26.90144,0,11,1,10.19935,1.34446,0,0,0,11.54381,0,0,0,2,0,6,93.7,0,0,,0,458,0,0,1.791759,6.126869,0,0,0,0,0,0,74.79025,8.627794,1.791759,2.446149,1 +11,1,0,1,5,126667,0,5583.747,27.90144,0,11,1,7.230966,5.338154,0,0,0,12.56912,0,0,0,1,0,6,93.7,0,0,,0,458,0,0,1.791759,6.126869,0,0,0,0,0,0,74.79025,8.627794,1.791759,2.531243,1 +11,1,0,1,1,126668,0,5583.747,1.954826,1,11,1,24.12545,11.78528,0,0,0,35.91074,0,0,0,3,0,5,74.36826,13.73189,0,,0,458,1,1,1.609438,6.126869,0,0,0,0,0,0,78.57231,8.627794,1.609438,3.581036,1 +11,1,0,1,2,126668,0,5583.747,2.954825,1,11,1,29.29515,14.17952,0,0,0,43.47467,0,0,0,5,0,6,74.36826,13.73189,0,,0,458,1,1,1.791759,6.126869,0,0,0,0,0,0,78.57231,8.627794,1.791759,3.772178,1 +11,1,0,1,3,126668,0,5583.747,3.954825,1,11,1,42.69212,10.29633,0,0,0,52.98845,0,0,0,7,0,6,74.36826,13.73189,0,,0,458,1,1,1.791759,6.126869,0,0,0,0,0,0,78.57231,8.627794,1.791759,3.970074,1 +11,1,0,1,4,126668,0,5583.747,4.954825,1,11,1,15.76263,0,0,0,0,15.76263,0,0,0,3,0,6,74.36826,13.73189,0,,0,458,1,1,1.791759,6.126869,0,0,0,0,0,0,78.57231,8.627794,1.791759,2.757642,1 +11,1,0,1,5,126668,0,5583.747,5.954825,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,0,458,1,1,1.791759,6.126869,0,0,0,0,0,0,78.57231,8.627794,1.791759,,0 +11,1,0,1,1,126669,0,5583.747,4.911705,0,11,1,6.6345,2.110977,0,0,0,8.745477,0,0,0,1,0,5,74.36826,13.73189,0,,0,458,1,0,1.609438,6.126869,0,0,0,0,0,0,79.08629,8.627794,1.609438,2.168537,1 +11,1,0,1,2,126669,0,5583.747,5.911705,0,11,1,25.88106,8.397577,0,0,0,34.27863,0,0,0,5,0,6,74.36826,13.73189,0,,0,458,1,0,1.791759,6.126869,0,0,0,0,0,0,79.08629,8.627794,1.791759,3.534522,1 +11,1,0,1,3,126669,0,5583.747,6.911705,0,11,1,46.7102,18.08137,0,0,360.2059,424.9975,1,0,0,7,0,6,74.36826,13.73189,0,,0,458,1,0,1.791759,6.126869,0,0,0,0,0,0,79.08629,8.627794,1.791759,6.052083,1 +11,1,0,1,4,126669,0,5583.747,7.911705,0,11,1,19.70329,15.80899,0,0,0,35.51229,0,0,0,4,0,6,74.36826,13.73189,0,,0,458,1,0,1.791759,6.126869,0,0,0,0,0,0,79.08629,8.627794,1.791759,3.569879,1 +11,1,0,1,5,126669,0,5583.747,8.911704,0,11,1,16.37601,3.913229,0,0,0,20.28924,0,0,0,2,0,6,74.36826,13.73189,0,,0,458,1,0,1.791759,6.126869,0,0,0,0,0,0,79.08629,8.627794,1.791759,3.010091,1 +11,1,0,1,1,126670,0,5098.015,57.87269,0,4,1,136.6906,17.47002,25.77938,0,0,179.94,0,0,0,8,1,2,61.1,30.4,1,,0,0,0,0,.6931472,0,0,0,0,0,0,1,49.52655,8.536802,.6931472,5.192624,1 +11,1,0,1,2,126670,0,5098.015,58.87269,0,4,1,117.7437,23.46659,0,0,0,141.2103,0,0,0,9,0,2,61.1,30.4,1,,0,0,0,0,.6931472,0,0,0,0,0,0,1,49.52655,8.536802,.6931472,4.95025,1 +11,1,0,1,3,126670,0,5098.015,59.87269,0,4,1,26.43392,13.49127,0,0,0,39.92519,0,0,0,2,0,2,61.1,30.4,1,,0,0,0,0,.6931472,0,0,0,0,0,0,1,49.52655,8.536802,.6931472,3.687007,1 +11,1,0,1,4,126670,0,5098.015,60.87269,0,4,1,57.63025,23.12125,28.35408,0,0,109.1056,0,0,0,4,1,2,61.1,30.4,1,,0,0,0,0,.6931472,0,0,0,0,0,0,1,49.52655,8.536802,.6931472,4.692316,1 +11,1,0,1,5,126670,0,5098.015,61.87269,0,4,1,35.97122,14.28269,0,0,0,50.25391,0,0,0,3,0,2,61.1,30.4,1,,0,0,0,0,.6931472,0,0,0,0,0,0,1,49.52655,8.536802,.6931472,3.917089,1 +11,1,0,1,1,126671,0,5098.015,53.72211,1,6,1,143.4353,39.52038,26.3789,0,0,209.3345,0,0,0,15,1,2,63.2,30.4,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,54.70358,8.536802,.6931472,5.343934,1 +11,1,0,1,2,126671,0,5098.015,54.72211,1,6,1,262.2399,60.87075,0,0,0,323.1106,0,0,0,28,1,2,63.2,30.4,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,54.70358,8.536802,.6931472,5.777995,1 +11,1,0,1,3,126671,0,5098.015,55.72211,1,6,1,78.80299,119.6908,0,0,0,198.4938,0,0,0,11,0,2,63.2,30.4,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,54.70358,8.536802,.6931472,5.290758,1 +11,1,0,1,4,126671,0,5098.015,56.72211,1,6,1,160.9036,100.5994,28.35408,0,0,289.8571,0,0,0,16,2,2,63.2,30.4,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,54.70358,8.536802,.6931472,5.669388,1 +11,1,0,1,5,126671,0,5098.015,57.72211,1,6,1,141.7689,124.3716,0,0,0,266.1405,0,0,0,17,0,2,63.2,30.4,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,54.70358,8.536802,.6931472,5.584024,1 +1,1,0,1,1,126674,0,3711.042,24.17796,0,12,1,0,0,0,0,344.0648,344.0648,1,0,0,0,0,1,34.7,4.3,0,,150,0,0,0,0,0,1,0,0,0,0,0,78.79221,8.219337,0,5.84083,1 +1,1,0,1,2,126674,0,3711.042,25.17796,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,34.7,4.3,0,,150,0,0,0,0,0,1,0,0,0,0,0,78.79221,8.219337,0,,0 +1,1,0,1,3,126674,0,3711.042,26.17796,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,34.7,4.3,0,,150,0,0,0,0,0,1,0,0,0,0,0,78.79221,8.219337,0,,0 +1,1,0,1,4,126674,0,3711.042,27.17796,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,34.7,4.3,0,,150,0,0,0,0,0,1,0,0,0,0,0,78.79221,8.219337,0,,0 +1,1,0,1,5,126674,0,3711.042,28.17796,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,34.7,4.3,0,,150,0,0,0,0,0,1,0,0,0,0,0,78.79221,8.219337,0,,0 +4,1,100,0,1,126678,0,4242.556,11.52088,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,1,0,0,1,0,0,75.05559,8.353157,1.94591,,0 +4,1,100,0,2,126678,0,4242.556,12.52088,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,1,0,0,1,0,0,75.05559,8.353157,1.94591,,0 +4,1,100,0,3,126678,0,4242.556,13.52088,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,1,0,0,1,0,0,75.05559,8.353157,1.94591,,0 +4,1,100,0,1,126679,0,4242.556,10.59274,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,1,0,0,0,0,0,80.99117,8.353157,1.94591,,0 +4,1,100,0,2,126679,0,4242.556,11.59274,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,1,0,0,0,0,0,80.99117,8.353157,1.94591,,0 +4,1,100,0,3,126679,0,4242.556,12.59274,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,1,0,0,0,0,0,80.99117,8.353157,1.94591,,0 +4,1,100,0,1,126680,0,4242.556,2.778919,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,1,0,0,1,0,0,68.34178,8.353157,1.94591,,0 +4,1,100,0,2,126680,0,4242.556,3.778919,1,10,1,0,1.518781,0,0,0,1.518781,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,1,0,0,1,0,0,68.34178,8.353157,1.94591,.4179078,1 +4,1,100,0,3,126680,0,4242.556,4.778919,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,1,0,0,1,0,0,68.34178,8.353157,1.94591,,0 +4,1,100,0,1,126681,0,4242.556,30.5681,0,8,1,38.66746,16.00238,0,0,0,54.66984,0,0,0,4,1,7,60,13.73189,1,,1000,1000,0,0,1.94591,6.907755,1,0,0,0,1,0,59.22386,8.353157,1.94591,4.001312,1 +4,1,100,0,2,126681,0,4242.556,31.5681,0,8,1,0,0,0,0,0,0,0,0,0,0,0,7,60,13.73189,1,,1000,1000,0,0,1.94591,6.907755,1,0,0,0,1,0,59.22386,8.353157,1.94591,,0 +4,1,100,0,3,126681,0,4242.556,32.5681,0,8,1,23.29039,0,0,0,0,23.29039,0,0,0,3,0,7,60,13.73189,1,,1000,1000,0,0,1.94591,6.907755,1,0,0,0,1,0,59.22386,8.353157,1.94591,3.148041,1 +4,1,100,0,1,126682,0,4242.556,28.33402,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,72.5,13.73189,0,,1000,1000,0,0,1.94591,6.907755,1,0,0,1,0,0,69.16129,8.353157,1.94591,,0 +4,1,100,0,2,126682,0,4242.556,29.33402,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,72.5,13.73189,0,,1000,1000,0,0,1.94591,6.907755,1,0,0,1,0,0,69.16129,8.353157,1.94591,,0 +4,1,100,0,3,126682,0,4242.556,30.33402,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,72.5,13.73189,0,,1000,1000,0,0,1.94591,6.907755,1,0,0,1,0,0,69.16129,8.353157,1.94591,,0 +4,1,100,0,1,126683,0,4242.556,7.980835,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,1,0,0,1,0,0,71.32816,8.353157,1.94591,,0 +4,1,100,0,2,126683,0,4242.556,8.980835,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,1,0,0,1,0,0,71.32816,8.353157,1.94591,,0 +4,1,100,0,3,126683,0,4242.556,9.980835,0,10,1,0,1.778989,0,0,0,1.778989,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,1,0,0,1,0,0,71.32816,8.353157,1.94591,.5760453,1 +4,1,100,0,1,126684,0,4242.556,9.38809,0,10,1,5.94884,1.302796,0,0,0,7.251636,0,0,0,1,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,1,0,0,0,0,0,82.46437,8.353157,1.94591,1.981227,1 +4,1,100,0,2,126684,0,4242.556,10.38809,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,1,0,0,0,0,0,82.46437,8.353157,1.94591,,0 +4,1,100,0,3,126684,0,4242.556,11.38809,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,1,0,0,0,0,0,82.46437,8.353157,1.94591,,0 +11,1,0,1,1,126755,0,4586.849,50.34086,1,12,1,39.26234,2.492564,0,0,0,41.75491,0,0,0,4,0,3,77.8,17.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,71.87788,8.431167,1.098612,3.731817,1 +11,1,0,1,2,126755,0,4586.849,51.34086,1,12,1,50.08165,16.44529,0,0,0,66.52695,0,0,0,5,0,3,77.8,17.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,71.87788,8.431167,1.098612,4.197607,1 +11,1,0,1,3,126755,0,4586.849,52.34086,1,12,1,0,7.41328,0,0,0,7.41328,0,0,0,0,0,3,77.8,17.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,71.87788,8.431167,1.098612,2.003273,1 +11,1,0,1,4,126755,0,4586.849,53.34086,1,12,1,0,12.29004,0,0,0,12.29004,0,0,0,0,0,3,77.8,17.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,71.87788,8.431167,1.098612,2.508789,1 +11,1,0,1,5,126755,0,4586.849,54.34086,1,12,1,19.77282,22.36853,0,0,0,42.14135,0,0,0,3,0,3,77.8,17.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,71.87788,8.431167,1.098612,3.74103,1 +11,1,0,1,1,126756,0,4586.849,18.26694,1,11,1,39.26234,8.370018,0,0,342.0583,389.6907,1,0,0,4,0,3,85.3,4.3,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,69.7751,8.431167,1.098612,5.965353,1 +11,1,0,1,2,126756,0,4586.849,19.26694,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,85.3,4.3,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,69.7751,8.431167,1.098612,,0 +11,1,0,1,3,126756,0,4586.849,20.26694,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,85.3,4.3,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,69.7751,8.431167,1.098612,,0 +11,1,0,1,4,126756,0,4586.849,21.26694,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,85.3,4.3,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,69.7751,8.431167,1.098612,,0 +11,1,0,1,5,126756,0,4586.849,22.26694,1,11,1,12.62095,2.440051,0,0,0,15.061,0,0,0,2,0,3,85.3,4.3,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,69.7751,8.431167,1.098612,2.712109,1 +11,1,0,1,1,126757,0,4586.849,11.57837,1,12,1,5.94884,2.367638,0,0,0,8.316479,0,0,0,1,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,1,0,0,77.3399,8.431167,1.098612,2.118239,1 +11,1,0,1,2,126757,0,4586.849,12.57837,1,12,1,32.11758,3.102885,0,0,0,35.22047,0,0,0,1,1,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,1,0,0,77.3399,8.431167,1.098612,3.561627,1 +11,1,0,1,3,126757,0,4586.849,13.57837,1,12,1,90.82259,9.068384,0,0,0,99.89098,0,0,0,4,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,1,0,0,77.3399,8.431167,1.098612,4.604079,1 +11,1,0,1,4,126757,0,4586.849,14.57837,1,12,1,17.89812,10.67003,35.00689,0,0,63.57504,0,0,0,2,1,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,1,0,0,77.3399,8.431167,1.098612,4.152221,1 +11,1,0,1,5,126757,0,4586.849,15.57837,1,12,1,18.51073,0,0,0,0,18.51073,0,0,0,2,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,1,0,0,77.3399,8.431167,1.098612,2.91835,1 +9,1,50,0,1,126758,0,84.36725,45.90828,1,12,1,151.9435,49.29918,37.76796,0,1272.267,1511.278,1,0,0,10,0,3,76.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,70.80224,4.446962,1.098612,7.320711,1 +9,1,50,0,2,126758,0,84.36725,46.90828,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,76.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,70.80224,4.446962,1.098612,,0 +9,1,50,0,3,126758,0,84.36725,47.90828,1,12,1,25.55283,0,31.70516,0,0,57.25798,0,0,0,2,0,3,76.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,70.80224,4.446962,1.098612,4.047567,1 +9,1,50,0,4,126758,0,84.36725,48.90828,1,12,1,226.9827,0,0,0,0,226.9827,0,0,0,2,0,3,76.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,70.80224,4.446962,1.098612,5.424874,1 +9,1,50,0,5,126758,0,84.36725,49.90828,1,12,1,70.44602,18.2326,41.26719,0,0,129.9458,0,0,0,6,0,3,76.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,70.80224,4.446962,1.098612,4.867117,1 +9,1,50,0,1,126759,0,84.36725,46.73238,0,12,1,44.16961,0,31.50766,0,0,75.67727,0,0,0,2,0,3,71.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,62.74828,4.446962,1.098612,4.326478,1 +9,1,50,0,2,126759,0,84.36725,47.73238,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,71.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,62.74828,4.446962,1.098612,,0 +9,1,50,0,3,126759,0,84.36725,48.73238,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,71.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,62.74828,4.446962,1.098612,,0 +9,1,50,0,4,126759,0,84.36725,49.73238,0,12,1,12.76208,0,0,0,0,12.76208,0,0,0,1,0,3,71.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,62.74828,4.446962,1.098612,2.546478,1 +9,1,50,0,5,126759,0,84.36725,50.73238,0,12,1,18.75782,0,31.26303,0,0,50.02084,0,0,0,0,0,3,71.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,62.74828,4.446962,1.098612,3.91244,1 +10,1,50,1,1,126765,0,13699.75,43.59753,1,12,1,53.59246,39.69376,23.26266,0,0,116.5489,0,0,0,5,1,3,74.7,26.1,1,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,1,0,62.05545,9.525206,1.098612,4.758311,1 +10,1,50,1,2,126765,0,13699.75,44.59753,1,12,1,18.32884,31.47709,10.7062,0,0,60.51213,0,0,0,2,0,3,74.7,26.1,1,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,1,0,62.05545,9.525206,1.098612,4.102844,1 +10,1,50,1,3,126765,0,13699.75,45.59753,1,12,1,63.39066,35.8231,30.60934,0,0,129.8231,0,0,0,5,1,3,74.7,26.1,1,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,1,0,62.05545,9.525206,1.098612,4.866173,1 +10,1,50,1,4,126765,0,13699.75,46.59753,1,12,1,20.96627,27.52963,0,0,1209.435,1257.931,1,0,0,3,0,3,74.7,26.1,1,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,1,0,62.05545,9.525206,1.098612,7.137223,1 +10,1,50,1,5,126765,0,13699.75,47.59753,1,12,1,45.01876,12.85536,0,0,0,57.87411,0,0,0,4,0,3,74.7,26.1,1,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,1,0,62.05545,9.525206,1.098612,4.05827,1 +10,1,50,1,1,126766,0,13699.75,43.93977,0,8,1,10.60071,0,36.21908,0,0,46.81979,0,0,0,0,1,3,75.8,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,67.41241,9.525206,1.098612,3.846306,1 +10,1,50,1,2,126766,0,13699.75,44.93977,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,75.8,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,67.41241,9.525206,1.098612,,0 +10,1,50,1,3,126766,0,13699.75,45.93977,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,75.8,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,67.41241,9.525206,1.098612,,0 +10,1,50,1,4,126766,0,13699.75,46.93977,0,8,1,15.49681,0,51.44029,0,0,66.9371,0,0,0,1,1,3,75.8,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,67.41241,9.525206,1.098612,4.203753,1 +10,1,50,1,5,126766,0,13699.75,47.93977,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,75.8,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,67.41241,9.525206,1.098612,,0 +10,1,50,1,1,126767,0,13699.75,15.26352,0,12,1,167.9623,6.036513,0,0,174.3522,348.351,1,0,0,4,13,3,83.2,13,0,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,80.70143,9.525206,1.098612,5.85321,1 +10,1,50,1,2,126767,0,13699.75,16.26352,0,12,1,24.25876,5.401617,13.33154,0,0,42.99191,0,0,0,2,0,3,83.2,13,0,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,80.70143,9.525206,1.098612,3.761012,1 +10,1,50,1,3,126767,0,13699.75,17.26352,0,12,1,7.371007,0,26.7027,0,0,34.07371,0,0,0,1,0,3,83.2,13,0,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,80.70143,9.525206,1.098612,3.528526,1 +10,1,50,1,4,126767,0,13699.75,18.26352,0,12,1,15.9526,0,0,0,0,15.9526,0,0,0,2,0,3,83.2,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,80.70143,9.525206,1.098612,2.769622,1 +10,1,50,1,5,126767,0,13699.75,19.26352,0,12,1,5.835765,0,0,0,0,5.835765,0,0,0,1,0,3,83.2,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,80.70143,9.525206,1.098612,1.764005,1 +11,1,0,1,1,126783,0,4239.454,61.69199,0,9,1,129.9821,58.19155,32.95063,0,1693.105,1914.23,2,0,0,3,1,2,80,17.4,1,,0,0,0,0,.6931472,0,0,0,0,1,0,0,61.22078,8.352426,.6931472,7.557071,1 +11,1,0,1,2,126783,0,4239.454,62.69199,0,9,1,231.1922,65.24769,0,0,0,296.4398,0,0,0,6,0,2,80,17.4,1,,0,0,0,0,.6931472,0,0,0,0,1,0,0,61.22078,8.352426,.6931472,5.691844,1 +11,1,0,1,3,126783,0,4239.454,63.69199,0,9,1,29.23687,13.09713,38.32012,0,716.5065,797.1606,1,0,0,2,1,2,80,17.4,1,,0,0,0,0,.6931472,0,0,0,0,1,0,0,61.22078,8.352426,.6931472,6.681056,1 +11,1,0,1,1,126784,0,4239.454,61.80972,1,7,1,79.71445,0,32.65913,0,0,112.3736,0,0,0,2,1,2,62.1,30.4,1,,0,0,0,0,.6931472,0,0,0,0,0,1,0,52.71434,8.352426,.6931472,4.721829,1 +11,1,0,1,2,126784,0,4239.454,62.80972,1,7,1,37.56124,7.642896,0,0,0,45.20414,0,0,0,1,0,2,62.1,30.4,1,,0,0,0,0,.6931472,0,0,0,0,0,1,0,52.71434,8.352426,.6931472,3.811189,1 +11,1,0,1,3,126784,0,4239.454,63.80972,1,7,1,55.5005,43.43409,48.44896,0,1622.894,1770.277,1,0,0,5,1,2,62.1,30.4,1,,0,0,0,0,.6931472,0,0,0,0,0,1,0,52.71434,8.352426,.6931472,7.478891,1 +5,1,25,0,1,126791,1,9542.002,51.154,0,12,1,202.0612,24.46996,0,0,7511.667,7738.198,2,0,0,8,0,1,46.3,13.73189,1,,110,110,0,0,0,4.70048,0,3.258096,6.086775,0,1,0,65.7506,9.163564,0,8.953924,1 +5,1,25,0,2,126791,1,9542.002,52.154,0,12,.2240437,120.7547,8.301887,210.7817,0,3156.113,3495.951,1,0,0,5,0,1,46.3,13.73189,1,,110,110,0,0,0,4.70048,0,3.258096,6.086775,0,1,0,65.7506,9.163564,0,8.159361,1 +11,1,0,1,1,126794,1,9542.002,18.95688,1,12,1,26.1749,0,0,0,0,26.1749,0,0,0,0,0,3,93.7,4.3,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,67.68577,9.163564,1.098612,3.264801,1 +11,1,0,1,2,126794,1,9542.002,19.95688,1,12,1,23.40773,0,26.16767,0,677.6592,727.2346,1,0,0,1,1,3,93.7,4.3,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,67.68577,9.163564,1.098612,6.589249,1 +11,1,0,1,3,126794,1,9542.002,20.95688,1,12,1,19.32607,4.44004,6.729435,0,0,30.49554,0,0,0,3,0,4,93.7,4.3,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,67.68577,9.163564,1.386294,3.41758,1 +11,1,0,1,4,126794,1,9542.002,21.95688,1,12,1,9.178522,0,31.17485,0,559.8486,600.2019,1,0,0,0,1,4,93.7,4.3,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,67.68577,9.163564,1.386294,6.397266,1 +11,1,0,1,5,126794,1,9542.002,22.95688,1,12,1,12.20025,4.636096,0,0,0,16.83635,0,0,0,2,0,5,93.7,4.3,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,67.68577,9.163564,1.609438,2.82354,1 +11,1,0,1,1,126795,1,9542.002,51.71252,1,8,1,17.25164,0,43.42653,0,0,60.67817,0,0,0,2,1,3,64.2,8.7,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,61.64053,9.163564,1.098612,4.105584,1 +11,1,0,1,2,126795,1,9542.002,52.71252,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,64.2,8.7,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,61.64053,9.163564,1.098612,,0 +11,1,0,1,3,126795,1,9542.002,53.71252,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,64.2,8.7,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,61.64053,9.163564,1.386294,,0 +11,1,0,1,4,126795,1,9542.002,54.71252,1,8,1,8.26067,0,34.87838,0,0,43.13905,0,0,0,0,1,4,64.2,8.7,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,61.64053,9.163564,1.386294,3.764429,1 +11,1,0,1,5,126795,1,9542.002,55.71252,1,8,1,5.04838,0,0,0,0,5.04838,0,0,0,1,0,5,64.2,8.7,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,61.64053,9.163564,1.609438,1.619067,1 +11,1,0,1,1,126796,1,9542.002,21.71937,0,12,1,21.41582,0,0,0,0,21.41582,0,0,0,0,0,3,80,8.7,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,66.78163,9.163564,1.098612,3.06413,1 +11,1,0,1,2,126796,1,9542.002,22.71937,0,12,1,9.254219,0,0,0,0,9.254219,0,0,0,1,0,3,80,8.7,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,66.78163,9.163564,1.098612,2.22508,1 +11,1,0,1,3,126796,1,9542.002,23.71937,0,12,1,116.997,4.578791,0,0,0,121.5758,0,0,0,8,0,4,80,8.7,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,66.78163,9.163564,1.386294,4.800538,1 +11,1,0,1,4,126796,1,9542.002,24.71937,0,12,1,5.96604,0,0,0,0,5.96604,0,0,0,1,0,4,80,8.7,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,66.78163,9.163564,1.386294,1.786083,1 +11,1,0,1,5,126796,1,9542.002,25.71937,0,12,1,42.49054,.8413967,.3575936,0,0,43.68953,0,0,0,3,0,5,80,8.7,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,66.78163,9.163564,1.609438,3.777108,1 +11,1,0,0,1,126797,1,9542.002,23.11294,1,12,1,24.98513,9.571684,21.94527,0,0,56.50208,0,0,0,4,0,1,78.9,0,0,,0,72,0,0,0,4.276666,0,0,0,1,0,0,63.49755,9.163564,0,4.034277,1 +11,1,0,0,2,126797,1,9542.002,24.11294,1,12,1,617.534,13.03212,18.96026,0,0,649.5264,0,0,0,10,1,1,78.9,0,0,,0,72,0,0,0,4.276666,0,0,0,1,0,0,63.49755,9.163564,0,6.476243,1 +11,1,0,0,3,126797,1,9542.002,25.11294,1,12,1,406.5857,28.15164,0,0,29.73241,464.4698,0,0,0,8,0,1,78.9,0,0,,0,72,0,0,0,4.276666,0,0,0,1,0,0,63.49755,9.163564,0,6.140896,1 +11,1,0,0,4,126797,1,9542.002,26.11294,1,12,1,519.9404,51.39054,38.84809,0,2560.996,3171.175,1,0,0,3,1,1,78.9,0,0,,0,72,0,0,0,4.276666,0,0,0,1,0,0,63.49755,9.163564,0,8.061857,1 +11,1,0,0,5,126797,1,9542.002,27.11294,1,12,1,648.3172,59.20909,16.48717,0,0,724.0135,0,0,0,2,3,1,78.9,0,0,,0,72,0,0,0,4.276666,0,0,0,1,0,0,63.49755,9.163564,0,6.58481,1 +4,1,100,0,1,126800,1,2297.767,52.39699,1,8,1,189.4582,0,0,0,0,189.4582,0,0,0,8,0,1,35.8,21.7,0,,0,0,0,0,0,0,1,0,0,0,0,1,62.06791,7.740128,0,5.244168,1 +4,1,100,0,2,126800,1,2297.767,53.39699,1,8,1,0,0,0,0,0,0,0,0,0,0,0,1,35.8,21.7,0,,0,0,0,0,0,0,1,0,0,0,0,1,62.06791,7.740128,0,,0 +4,1,100,0,3,126800,1,2297.767,54.39699,1,8,1,0,0,0,0,0,0,0,0,0,0,0,1,35.8,21.7,0,,0,0,0,0,0,0,1,0,0,0,0,1,62.06791,7.740128,0,,0 +5,1,25,0,1,126805,1,898.263,13.59617,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,101,101,1,0,1.609438,4.61512,0,3.258096,6.001415,0,0,0,75.72706,6.801576,1.609438,,0 +5,1,25,0,2,126805,1,898.263,14.59617,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,101,101,1,0,1.609438,4.61512,0,3.258096,6.001415,0,0,0,75.72706,6.801576,1.609438,,0 +5,1,25,0,1,126806,1,898.263,11.47159,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,101,101,1,0,1.609438,4.61512,0,3.258096,6.001415,0,0,0,75.72706,6.801576,1.609438,,0 +5,1,25,0,2,126806,1,898.263,12.47159,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,101,101,1,0,1.609438,4.61512,0,3.258096,6.001415,0,0,0,75.72706,6.801576,1.609438,,0 +5,1,25,0,1,126807,1,898.263,9.409993,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,101,101,1,1,1.609438,4.61512,0,3.258096,6.001415,0,0,0,75.21308,6.801576,1.609438,,0 +5,1,25,0,2,126807,1,898.263,10.40999,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,101,101,1,1,1.609438,4.61512,0,3.258096,6.001415,0,0,0,75.21308,6.801576,1.609438,,0 +5,1,25,0,1,126808,1,898.263,14.93224,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,75.8,8.7,0,,101,101,1,1,1.609438,4.61512,0,3.258096,6.001415,0,0,0,65.00531,6.801576,1.609438,,0 +5,1,25,0,2,126808,1,898.263,15.93224,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,75.8,8.7,0,,101,101,1,1,1.609438,4.61512,0,3.258096,6.001415,0,0,0,65.00531,6.801576,1.609438,,0 +5,1,25,0,1,126809,1,898.263,32.79945,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,62.1,21.7,0,,101,101,0,0,1.609438,4.61512,0,3.258096,6.001415,0,0,0,69.38714,6.801576,1.609438,,0 +5,1,25,0,2,126809,1,898.263,33.79945,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,62.1,21.7,0,,101,101,0,0,1.609438,4.61512,0,3.258096,6.001415,0,0,0,69.38714,6.801576,1.609438,,0 +11,1,0,0,1,126815,1,3944.789,51.42231,1,6,1,307.2278,0,0,0,0,307.2278,0,0,0,2,0,1,94.7,13,0,,0,0,0,0,0,0,0,0,0,0,0,0,67.9421,8.280404,0,5.72759,1 +11,1,0,0,2,126815,1,3944.789,52.42231,1,6,1,133.914,5.307567,0,0,0,139.2216,0,0,0,5,0,1,94.7,13,0,,0,0,0,0,0,0,0,0,0,0,0,0,67.9421,8.280404,0,4.936067,1 +11,1,0,0,3,126815,1,3944.789,53.42231,1,6,1,129.2121,0,34.14272,0,0,163.3548,0,0,0,5,1,1,94.7,13,0,,0,0,0,0,0,0,0,0,0,0,0,0,67.9421,8.280404,0,5.095924,1 +11,1,0,0,4,126815,1,3944.789,54.42231,1,6,1,128.4993,0,0,0,0,128.4993,0,0,0,5,0,1,94.7,13,0,,0,0,0,0,0,0,0,0,0,0,0,0,67.9421,8.280404,0,4.855924,1 +11,1,0,0,5,126815,1,3944.789,55.42231,1,6,1,138.1994,0,46.38199,0,749.2806,933.862,1,0,0,5,0,1,94.7,13,0,,0,0,0,0,0,0,0,0,0,0,0,0,67.9421,8.280404,0,6.839329,1 +9,1,50,1,1,126822,0,14151.37,7.118412,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,81.68566,9.557637,1.791759,,0 +9,1,50,1,2,126822,0,14151.37,8.118412,1,12,1,8.259912,0,0,0,0,8.259912,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,81.68566,9.557637,1.791759,2.111414,1 +9,1,50,1,3,126822,0,14151.37,9.118412,1,12,1,2.009041,0,0,0,0,2.009041,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,81.68566,9.557637,1.791759,.6976573,1 +9,1,50,1,4,126822,0,14151.37,10.11841,1,12,1,2.318034,0,0,0,0,2.318034,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,81.68566,9.557637,1.791759,.8407196,1 +9,1,50,1,5,126822,0,14151.37,11.11841,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,81.68566,9.557637,1.791759,,0 +9,1,50,1,1,126823,0,14151.37,8.678987,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,85.92707,9.557637,1.791759,,0 +9,1,50,1,2,126823,0,14151.37,9.678987,1,12,1,46.25551,2.114537,28.19934,0,0,76.56938,0,0,0,6,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,85.92707,9.557637,1.791759,4.338197,1 +9,1,50,1,3,126823,0,14151.37,10.67899,1,12,1,24.10849,0,0,0,0,24.10849,0,0,0,5,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,85.92707,9.557637,1.791759,3.182564,1 +9,1,50,1,4,126823,0,14151.37,11.67899,1,12,1,49.95364,0,29.13305,0,0,79.08669,0,0,0,3,1,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,85.92707,9.557637,1.791759,4.370544,1 +9,1,50,1,5,126823,0,14151.37,12.67899,1,12,1,14.88728,0,11.90983,0,0,26.79711,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,85.92707,9.557637,1.791759,3.288294,1 +9,1,50,1,1,126824,0,14151.37,35.06092,1,12,1,3.015682,0,0,0,0,3.015682,0,0,0,0,0,6,72.6,0,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,69.27332,9.557637,1.791759,1.103826,1 +9,1,50,1,2,126824,0,14151.37,36.06092,1,12,1,22.57709,0,0,0,0,22.57709,0,0,0,1,0,6,72.6,0,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,69.27332,9.557637,1.791759,3.116936,1 +9,1,50,1,3,126824,0,14151.37,37.06092,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,72.6,0,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,69.27332,9.557637,1.791759,,0 +9,1,50,1,4,126824,0,14151.37,38.06092,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,72.6,0,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,69.27332,9.557637,1.791759,,0 +9,1,50,1,5,126824,0,14151.37,39.06092,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,72.6,0,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,69.27332,9.557637,1.791759,,0 +9,1,50,1,1,126825,0,14151.37,13.82615,1,12,1,4.221954,1.206273,33.40772,0,0,38.83595,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,85.92707,9.557637,1.791759,3.659346,1 +9,1,50,1,2,126825,0,14151.37,14.82615,1,12,1,13.76652,0,0,0,0,13.76652,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,85.92707,9.557637,1.791759,2.62224,1 +9,1,50,1,3,126825,0,14151.37,15.82615,1,12,1,4.018081,0,95.42944,0,0,99.44752,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,85.92707,9.557637,1.791759,4.59963,1 +9,1,50,1,4,126825,0,14151.37,16.82615,1,12,1,17.61706,0,24.22346,0,0,41.84052,0,0,0,2,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,85.92707,9.557637,1.791759,3.733865,1 +9,1,50,1,5,126825,0,14151.37,17.82615,1,12,1,2.552105,0,6.682263,0,0,9.234368,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,85.92707,9.557637,1.791759,2.222932,1 +9,1,50,1,1,126826,0,14151.37,41.97399,0,16,1,18.09409,0,0,0,0,18.09409,0,0,0,1,0,6,84.2,21.7,1,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,65.73057,9.557637,1.791759,2.895585,1 +9,1,50,1,2,126826,0,14151.37,42.97399,0,16,1,0,0,17.84141,0,0,17.84141,0,0,0,0,0,6,84.2,21.7,1,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,65.73057,9.557637,1.791759,2.881522,1 +9,1,50,1,3,126826,0,14151.37,43.97399,0,16,1,16.57458,0,0,0,0,16.57458,0,0,0,1,0,6,84.2,21.7,1,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,65.73057,9.557637,1.791759,2.80787,1 +9,1,50,1,4,126826,0,14151.37,44.97399,0,16,1,13.90821,0,47.2879,0,0,61.19611,0,0,0,1,0,6,84.2,21.7,1,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,65.73057,9.557637,1.791759,4.114084,1 +9,1,50,1,5,126826,0,14151.37,45.97399,0,16,1,11.48448,0,0,0,0,11.48448,0,0,0,2,0,6,84.2,21.7,1,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,65.73057,9.557637,1.791759,2.440996,1 +9,1,50,1,1,126827,0,14151.37,12.54483,0,12,1,3.015682,0,0,0,0,3.015682,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,86.44105,9.557637,1.791759,1.103826,1 +9,1,50,1,2,126827,0,14151.37,13.54483,0,12,1,98.01762,0,0,0,0,98.01762,0,0,0,4,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,86.44105,9.557637,1.791759,4.585147,1 +9,1,50,1,3,126827,0,14151.37,14.54483,0,12,1,2.009041,0,0,0,0,2.009041,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,86.44105,9.557637,1.791759,.6976573,1 +9,1,50,1,4,126827,0,14151.37,15.54483,0,12,1,115.9017,0,0,0,0,115.9017,0,0,0,3,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,86.44105,9.557637,1.791759,4.752743,1 +9,1,50,1,5,126827,0,14151.37,16.54483,0,12,1,298.4688,33.93024,0,0,0,332.399,0,0,0,6,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,86.44105,9.557637,1.791759,5.806336,1 +6,1,25,0,1,126835,0,12640.82,26.57084,1,8,1,14.13428,12.45583,0,0,0,26.59011,0,0,0,2,0,4,75.8,13,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,69.97394,9.444766,1.386294,3.280539,1 +6,1,25,0,2,126835,0,12640.82,27.57084,1,8,1,16.17251,7.02965,0,0,0,23.20216,0,0,0,2,0,4,75.8,13,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,69.97394,9.444766,1.386294,3.144245,1 +6,1,25,0,3,126835,0,12640.82,28.57084,1,8,1,8.845209,0,0,0,0,8.845209,0,0,0,1,0,4,75.8,13,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,69.97394,9.444766,1.386294,2.179876,1 +6,1,25,0,4,126835,0,12640.82,29.57084,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,75.8,13,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,69.97394,9.444766,1.386294,,0 +6,1,25,0,5,126835,0,12640.82,30.57084,1,8,1,42.93456,0,0,0,0,42.93456,0,0,0,4,0,4,75.8,13,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,69.97394,9.444766,1.386294,3.759677,1 +6,1,25,0,1,126836,0,12640.82,30.97604,0,12,1,14.13428,11.42521,0,0,0,25.55948,0,0,0,2,0,4,72.6,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,72.21928,9.444766,1.386294,3.241008,1 +6,1,25,0,2,126836,0,12640.82,31.97604,0,12,1,57.14286,8.533692,0,0,0,65.67655,0,0,0,9,0,4,72.6,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,72.21928,9.444766,1.386294,4.184742,1 +6,1,25,0,3,126836,0,12640.82,32.97604,0,12,1,60.93366,10.4226,.7371007,0,0,72.09337,0,0,0,4,1,4,72.6,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,72.21928,9.444766,1.386294,4.277962,1 +6,1,25,0,4,126836,0,12640.82,33.97604,0,12,1,5.925251,0,0,0,0,5.925251,0,0,0,1,0,4,72.6,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,72.21928,9.444766,1.386294,1.779223,1 +6,1,25,0,5,126836,0,12640.82,34.97604,0,12,1,50.85452,0,0,0,0,50.85452,0,0,0,2,0,4,72.6,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,72.21928,9.444766,1.386294,3.928969,1 +6,1,25,0,1,126837,0,12640.82,8.791239,0,8,1,154.1519,26.88457,0,0,0,181.0365,0,0,0,8,1,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,1,0,58.4809,9.444766,1.386294,5.198699,1 +6,1,25,0,2,126837,0,12640.82,9.791239,0,8,1,72.29111,0,0,0,0,72.29111,0,0,0,5,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,1,0,58.4809,9.444766,1.386294,4.280701,1 +6,1,25,0,3,126837,0,12640.82,10.79124,0,8,1,5.405406,3.552825,0,0,0,8.958231,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,1,0,58.4809,9.444766,1.386294,2.192573,1 +6,1,25,0,4,126837,0,12640.82,11.79124,0,8,1,41.02097,0,0,0,0,41.02097,0,0,0,4,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,1,0,58.4809,9.444766,1.386294,3.714083,1 +6,1,25,0,5,126837,0,12640.82,12.79124,0,8,1,29.28304,0,0,0,0,29.28304,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,1,0,58.4809,9.444766,1.386294,3.377008,1 +6,1,25,0,1,126838,0,12640.82,11.44695,1,8,1,16.48999,7.232038,0,0,0,23.72203,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,78.60046,9.444766,1.386294,3.166404,1 +6,1,25,0,2,126838,0,12640.82,12.44695,1,8,1,12.93801,4.819407,0,0,0,17.75741,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,78.60046,9.444766,1.386294,2.876803,1 +6,1,25,0,3,126838,0,12640.82,13.44695,1,8,1,5.896806,6.943489,0,0,0,12.84029,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,78.60046,9.444766,1.386294,2.552588,1 +6,1,25,0,4,126838,0,12640.82,14.44695,1,8,1,36.78213,0,.911577,0,0,37.69371,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,78.60046,9.444766,1.386294,3.629493,1 +6,1,25,0,5,126838,0,12640.82,15.44695,1,8,1,31.88829,0,0,0,0,31.88829,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,78.60046,9.444766,1.386294,3.462239,1 +5,1,25,0,1,126839,0,13224.14,26.36276,1,13,1,81.86102,31.21908,0,0,530.1649,643.245,1,0,0,7,0,4,71.6,13,0,,679,679,0,0,1.386294,6.520621,0,3.258096,7.906916,1,0,0,70.1928,9.489875,1.386294,6.466526,1 +5,1,25,0,2,126839,0,13224.14,27.36276,1,13,1,119.6766,33.57412,0,0,0,153.2507,0,0,0,13,0,4,71.6,13,0,,679,679,0,0,1.386294,6.520621,0,3.258096,7.906916,1,0,0,70.1928,9.489875,1.386294,5.032075,1 +5,1,25,0,3,126839,0,13224.14,28.36276,1,13,1,79.60688,13.03685,34.91892,0,0,127.5627,0,0,0,4,1,4,71.6,13,0,,679,679,0,0,1.386294,6.520621,0,3.258096,7.906916,1,0,0,70.1928,9.489875,1.386294,4.848608,1 +5,1,25,0,1,126840,0,13224.14,28.4627,0,12,1,5.300354,5.683156,0,0,0,10.98351,0,0,0,1,0,4,83.2,8.7,0,,679,679,0,0,1.386294,6.520621,0,3.258096,7.906916,1,0,0,69.02815,9.489875,1.386294,2.396395,1 +5,1,25,0,2,126840,0,13224.14,29.4627,0,12,1,4.851752,4.177897,0,0,0,9.02965,0,0,0,1,0,4,83.2,8.7,0,,679,679,0,0,1.386294,6.520621,0,3.258096,7.906916,1,0,0,69.02815,9.489875,1.386294,2.200514,1 +5,1,25,0,3,126840,0,13224.14,30.4627,0,12,1,102.8256,24.99754,0,0,0,127.8231,0,0,0,7,2,4,83.2,8.7,0,,679,679,0,0,1.386294,6.520621,0,3.258096,7.906916,1,0,0,69.02815,9.489875,1.386294,4.850647,1 +5,1,25,0,1,126841,0,13224.14,5.155373,0,13,1,26.79623,9.952886,0,0,320.3769,357.126,1,0,0,2,1,4,74.36826,13.73189,0,,679,679,1,0,1.386294,6.520621,0,3.258096,7.906916,1,0,0,73.48592,9.489875,1.386294,5.878089,1 +5,1,25,0,2,126841,0,13224.14,6.155373,0,13,1,12.93801,4.716981,0,0,0,17.65499,0,0,0,1,0,4,74.36826,13.73189,0,,679,679,1,0,1.386294,6.520621,0,3.258096,7.906916,1,0,0,73.48592,9.489875,1.386294,2.871018,1 +5,1,25,0,3,126841,0,13224.14,7.155373,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,679,679,1,0,1.386294,6.520621,0,3.258096,7.906916,1,0,0,73.48592,9.489875,1.386294,,0 +5,1,25,0,1,126842,0,13224.14,6.63655,1,13,1,1.766784,5.918728,0,0,0,7.685513,0,0,0,0,0,4,74.36826,13.73189,0,,679,679,1,1,1.386294,6.520621,0,3.258096,7.906916,1,0,0,76.40357,9.489875,1.386294,2.039337,1 +5,1,25,0,2,126842,0,13224.14,7.63655,1,13,1,5.390836,0,0,0,0,5.390836,0,0,0,1,0,4,74.36826,13.73189,0,,679,679,1,1,1.386294,6.520621,0,3.258096,7.906916,1,0,0,76.40357,9.489875,1.386294,1.6847,1 +5,1,25,0,3,126842,0,13224.14,8.63655,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,679,679,1,1,1.386294,6.520621,0,3.258096,7.906916,1,0,0,76.40357,9.489875,1.386294,,0 +1,1,0,0,1,126859,0,10039.08,30.91581,0,14,1,191.8433,11.21319,33.5689,0,0,236.6254,0,0,0,5,2,3,56.8,30.4,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,66.07695,9.21434,1.098612,5.466478,1 +1,1,0,0,2,126859,0,10039.08,31.91581,0,14,1,70.08086,1.617251,0,0,0,71.69811,0,0,0,2,0,3,56.8,30.4,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,66.07695,9.21434,1.098612,4.272464,1 +1,1,0,0,3,126859,0,10039.08,32.91581,0,14,1,0,0,0,0,0,0,0,0,0,0,0,3,56.8,30.4,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,66.07695,9.21434,1.098612,,0 +1,1,0,0,4,126859,0,10039.08,33.91581,0,14,1,34.18414,9.553328,12.13765,0,0,55.87511,0,0,0,3,1,3,56.8,30.4,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,66.07695,9.21434,1.098612,4.023119,1 +1,1,0,0,5,126859,0,10039.08,34.91581,0,14,1,36.68195,5.944143,0,0,0,42.62609,0,0,0,4,0,3,56.8,30.4,0,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,66.07695,9.21434,1.098612,3.752467,1 +1,1,0,0,1,126860,0,10039.08,26.48871,1,9,1,58.33333,32.86808,24.73498,0,1244.411,1360.347,2,0,0,2,1,3,64.2,17.4,1,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,63.57109,9.21434,1.098612,7.215496,1 +1,1,0,0,2,126860,0,10039.08,27.48871,1,9,1,21.56334,0,0,0,514.6092,536.1725,1,0,0,1,0,3,64.2,17.4,1,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,63.57109,9.21434,1.098612,6.284456,1 +1,1,0,0,3,126860,0,10039.08,28.48871,1,9,1,15.23342,4.117936,0,0,0,19.35135,0,0,0,1,0,3,64.2,17.4,1,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,63.57109,9.21434,1.098612,2.962762,1 +1,1,0,0,4,126860,0,10039.08,29.48871,1,9,1,24.15679,5.720146,29.17047,0,0,59.0474,0,0,0,1,1,3,64.2,17.4,1,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,63.57109,9.21434,1.098612,4.078341,1 +1,1,0,0,5,126860,0,10039.08,30.48871,1,9,1,100.0417,6.335973,0,0,0,106.3777,0,0,0,1,1,3,64.2,17.4,1,,450,450,0,0,1.098612,6.109248,1,0,0,1,0,0,63.57109,9.21434,1.098612,4.666996,1 +1,1,0,0,1,126861,0,10039.08,7.359343,1,9,1,58.89281,7.108363,0,0,0,66.00117,0,0,0,9,0,3,74.36826,13.73189,0,,450,450,1,1,1.098612,6.109248,1,0,0,1,0,0,72.6246,9.21434,1.098612,4.189672,1 +1,1,0,0,2,126861,0,10039.08,8.359343,1,9,1,105.6604,21.6496,24.25876,0,0,151.5687,0,0,0,10,1,3,74.36826,13.73189,0,,450,450,1,1,1.098612,6.109248,1,0,0,1,0,0,72.6246,9.21434,1.098612,5.021039,1 +1,1,0,0,3,126861,0,10039.08,9.359343,1,9,1,73.46437,13.72482,0,0,0,87.18919,0,0,0,8,0,3,74.36826,13.73189,0,,450,450,1,1,1.098612,6.109248,1,0,0,1,0,0,72.6246,9.21434,1.098612,4.468081,1 +1,1,0,0,4,126861,0,10039.08,10.35934,1,9,1,56.06199,27.39289,20.4649,0,0,103.9198,0,0,0,6,1,3,74.36826,13.73189,0,,450,450,1,1,1.098612,6.109248,1,0,0,1,0,0,72.6246,9.21434,1.098612,4.64362,1 +1,1,0,0,5,126861,0,10039.08,11.35934,1,9,1,130.471,21.85911,10.83785,0,0,163.168,0,0,0,8,1,3,74.36826,13.73189,0,,450,450,1,1,1.098612,6.109248,1,0,0,1,0,0,72.6246,9.21434,1.098612,5.09478,1 +9,1,50,1,1,126862,0,10156.33,29.44832,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,84.2,0,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,72.47523,9.22595,1.098612,,0 +9,1,50,1,2,126862,0,10156.33,30.44832,0,13,1,30.12048,16.57722,0,0,0,46.6977,0,0,0,3,0,3,84.2,0,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,72.47523,9.22595,1.098612,3.843695,1 +9,1,50,1,3,126862,0,10156.33,31.44832,0,13,1,5.985037,0,37.08229,0,0,43.06733,0,0,0,0,1,3,84.2,0,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,72.47523,9.22595,1.098612,3.762765,1 +9,1,50,1,4,126862,0,10156.33,32.44832,0,13,1,23.51314,17.75011,0,0,0,41.26326,0,0,0,2,1,3,84.2,0,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,72.47523,9.22595,1.098612,3.719972,1 +9,1,50,1,5,126862,0,10156.33,33.44832,0,13,1,40.71096,1.531951,.6347863,0,0,42.8777,0,0,0,2,0,3,84.2,0,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,72.47523,9.22595,1.098612,3.758352,1 +9,1,50,1,1,126863,0,10156.33,2.915811,1,12,1,4.796163,18.59712,0,0,0,23.39329,0,0,0,1,0,3,74.36826,13.73189,0,,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,80.70722,9.22595,1.098612,3.152449,1 +9,1,50,1,2,126863,0,10156.33,3.915811,1,12,1,0,8.849945,0,0,0,8.849945,0,0,0,0,0,3,74.36826,13.73189,0,,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,80.70722,9.22595,1.098612,2.180411,1 +9,1,50,1,3,126863,0,10156.33,4.915811,1,12,1,17.95511,1.915212,0,0,0,19.87033,0,0,0,2,0,3,74.36826,13.73189,0,,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,80.70722,9.22595,1.098612,2.989228,1 +9,1,50,1,4,126863,0,10156.33,5.915811,1,12,1,5.532504,15.67543,0,0,0,21.20793,0,0,0,1,0,3,74.36826,13.73189,0,,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,80.70722,9.22595,1.098612,3.054375,1 +9,1,50,1,5,126863,0,10156.33,6.915811,1,12,1,5.924672,12.91578,0,0,0,18.84046,0,0,0,1,0,3,74.36826,13.73189,0,,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,80.70722,9.22595,1.098612,2.936007,1 +9,1,50,1,1,126864,0,10156.33,24.84599,1,12,1,76.73861,33.05156,0,0,0,109.7902,0,0,0,4,0,3,84.2,21.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.30963,9.22595,1.098612,4.698571,1 +9,1,50,1,2,126864,0,10156.33,25.84599,1,12,1,10.9529,4.457831,0,0,0,15.41073,0,0,0,1,0,3,84.2,21.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.30963,9.22595,1.098612,2.735064,1 +9,1,50,1,3,126864,0,10156.33,26.84599,1,12,1,40.89775,20.54364,0,0,0,61.44139,0,0,0,5,0,3,84.2,21.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.30963,9.22595,1.098612,4.118084,1 +9,1,50,1,4,126864,0,10156.33,27.84599,1,12,1,43.79898,43.30567,0,0,0,87.10466,0,0,0,4,1,3,84.2,21.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.30963,9.22595,1.098612,4.46711,1 +9,1,50,1,5,126864,0,10156.33,28.84599,1,12,1,26.66102,25.26449,0,0,0,51.92552,0,0,0,3,0,3,84.2,21.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.30963,9.22595,1.098612,3.94981,1 +9,1,50,1,1,126865,0,17723.95,18.58179,0,11,1,4.759072,0,0,0,0,4.759072,0,0,0,1,0,6,65.3,8.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,68.26189,9.782728,1.791759,1.560053,1 +9,1,50,1,2,126865,0,17723.95,19.58179,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,65.3,8.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,68.26189,9.782728,1.791759,,0 +9,1,50,1,3,126865,0,17723.95,20.58179,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,65.3,8.7,0,,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,68.26189,9.782728,1.94591,,0 +9,1,50,1,1,126866,0,17723.95,15.44422,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,64.2,4.3,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,73.25742,9.782728,1.791759,,0 +9,1,50,1,2,126866,0,17723.95,16.44422,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,64.2,4.3,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,73.25742,9.782728,1.791759,,0 +9,1,50,1,3,126866,0,17723.95,17.44422,0,12,1,3.964321,0,0,0,0,3.964321,0,0,0,1,0,7,64.2,4.3,0,,1000,1000,1,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,73.25742,9.782728,1.94591,1.377335,1 +9,1,50,1,1,126867,0,17723.95,17.24025,1,12,1,19.63117,5.205235,0,0,0,24.83641,0,0,0,2,0,6,46.3,0,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,1,0,0,67.93368,9.782728,1.791759,3.212311,1 +9,1,50,1,2,126867,0,17723.95,18.24025,1,12,1,51.71475,4.148067,0,0,0,55.86282,0,0,0,2,1,6,46.3,0,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,67.93368,9.782728,1.791759,4.022899,1 +9,1,50,1,3,126867,0,17723.95,19.24025,1,12,1,29.23687,6.778989,0,0,0,36.01586,0,0,0,6,0,7,46.3,0,0,,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,67.93368,9.782728,1.94591,3.583959,1 +9,1,50,1,1,126868,0,17723.95,41.54415,0,12,1,7.733492,0,0,0,0,7.733492,0,0,0,1,0,6,73.7,21.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,69.6292,9.782728,1.791759,2.045561,1 +9,1,50,1,2,126868,0,17723.95,42.54415,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,73.7,21.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,69.6292,9.782728,1.791759,,0 +9,1,50,1,3,126868,0,17723.95,43.54415,0,12,1,12.3885,1.466799,0,0,0,13.8553,0,0,0,2,0,7,73.7,21.7,0,,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,69.6292,9.782728,1.94591,2.628668,1 +9,1,50,1,1,126869,0,17723.95,40.38877,1,12,1,21.41582,0,0,0,0,21.41582,0,0,0,0,0,6,60,30.4,1,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,71.26881,9.782728,1.791759,3.06413,1 +9,1,50,1,2,126869,0,17723.95,41.38877,1,12,1,22.86336,2.928688,0,0,0,25.79205,0,0,0,2,0,6,60,30.4,1,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,71.26881,9.782728,1.791759,3.250066,1 +9,1,50,1,3,126869,0,17723.95,42.38877,1,12,1,69.87116,11.04063,54.50941,0,1599.336,1734.757,2,0,0,6,1,7,60,30.4,1,,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,71.26881,9.782728,1.94591,7.458623,1 +9,1,50,1,1,126870,0,17723.95,10.39836,1,12,1,9.518144,1.778703,0,0,0,11.29685,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,1,0,0,79.00697,9.782728,1.791759,2.424524,1 +9,1,50,1,2,126870,0,17723.95,11.39836,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,1,0,0,79.00697,9.782728,1.791759,,0 +9,1,50,1,3,126870,0,17723.95,12.39836,1,12,1,50.54509,10.41625,0,0,0,60.96135,0,0,0,7,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,1,0,0,79.00697,9.782728,1.94591,4.11024,1 +9,1,50,1,1,126871,0,4004.963,20.87064,1,12,1,15.46698,17.07317,0,0,0,32.54015,0,0,0,2,0,1,83.2,21.7,0,,580.31,580.31,0,0,0,6.363563,0,3.931826,7.05671,1,0,0,71.42945,8.295539,0,3.482475,1 +9,1,50,1,2,126871,0,4004.963,21.87064,1,12,1,23.9521,16.66848,0,0,0,40.62058,0,0,0,2,0,1,83.2,21.7,0,,580.31,580.31,0,0,0,6.363563,0,3.931826,7.05671,1,0,0,71.42945,8.295539,0,3.704275,1 +9,1,50,1,3,126871,0,4004.963,22.87064,1,12,1,12.3885,5.133796,36.76908,0,0,54.29138,0,0,0,1,1,1,83.2,21.7,0,,580.31,580.31,0,0,0,6.363563,0,3.931826,7.05671,1,0,0,71.42945,8.295539,0,3.994365,1 +8,1,50,1,1,126894,0,8056.452,28.20808,1,13,1,41.64188,7.013682,0,0,0,48.65556,0,0,0,2,0,4,68.4,8.7,0,,525,525,0,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,79.3287,8.994352,1.386294,3.884766,1 +8,1,50,1,2,126894,0,8056.452,29.20808,1,13,1,22.72727,0,0,0,0,22.72727,0,0,0,2,0,4,68.4,8.7,0,,525,525,0,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,79.3287,8.994352,1.386294,3.123566,1 +8,1,50,1,3,126894,0,8056.452,30.20808,1,13,1,0,7.190288,0,0,0,7.190288,0,0,0,0,0,4,68.4,8.7,0,,525,525,0,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,79.3287,8.994352,1.386294,1.972731,1 +8,1,50,1,4,126894,0,8056.452,31.20808,1,13,1,18.35704,9.307021,32.13401,0,0,59.79807,0,0,0,1,1,4,68.4,8.7,0,,525,525,0,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,79.3287,8.994352,1.386294,4.090973,1 +8,1,50,1,5,126894,0,8056.452,32.20808,1,13,1,7.57257,2.086664,0,0,0,9.659234,0,0,0,1,0,4,68.4,8.7,0,,525,525,0,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,79.3287,8.994352,1.386294,2.267914,1 +8,1,50,1,1,126895,0,8056.452,8.271048,1,13,1,13.08745,7.067222,0,0,0,20.15467,0,0,0,2,0,4,74.36826,13.73189,0,,525,525,1,1,1.386294,6.263398,0,3.931826,6.956545,0,0,0,77.73626,8.994352,1.386294,3.003436,1 +8,1,50,1,2,126895,0,8056.452,9.271048,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,525,525,1,1,1.386294,6.263398,0,3.931826,6.956545,0,0,0,77.73626,8.994352,1.386294,,0 +8,1,50,1,3,126895,0,8056.452,10.27105,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,525,525,1,1,1.386294,6.263398,0,3.931826,6.956545,0,0,0,77.73626,8.994352,1.386294,,0 +8,1,50,1,4,126895,0,8056.452,11.27105,1,13,1,30.51859,0,22.54245,0,0,53.06104,0,0,0,2,1,4,74.36826,13.73189,0,,525,525,1,1,1.386294,6.263398,0,3.931826,6.956545,0,0,0,77.73626,8.994352,1.386294,3.971443,1 +8,1,50,1,5,126895,0,8056.452,12.27105,1,13,1,33.65587,0,15.38494,0,0,49.04081,0,0,0,1,1,4,74.36826,13.73189,0,,525,525,1,1,1.386294,6.263398,0,3.931826,6.956545,0,0,0,77.73626,8.994352,1.386294,3.892653,1 +8,1,50,1,1,126896,0,8056.452,5.842574,0,13,1,121.3563,8.596074,0,0,517.1624,647.1148,1,0,0,16,6,4,74.36826,13.73189,0,,525,525,1,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,83.45087,8.994352,1.386294,6.472524,1 +8,1,50,1,2,126896,0,8056.452,6.842574,0,13,1,146.9788,2.280893,31.29015,0,0,180.5498,0,0,0,16,4,4,74.36826,13.73189,0,,525,525,1,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,83.45087,8.994352,1.386294,5.196007,1 +8,1,50,1,3,126896,0,8056.452,7.842574,0,13,1,48.06739,0,37.80476,0,0,85.87215,0,0,0,7,0,4,74.36826,13.73189,0,,525,525,1,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,83.45087,8.994352,1.386294,4.452859,1 +8,1,50,1,4,126896,0,8056.452,8.842573,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,525,525,1,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,83.45087,8.994352,1.386294,,0 +8,1,50,1,5,126896,0,8056.452,9.842573,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,525,525,1,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,83.45087,8.994352,1.386294,,0 +8,1,50,1,1,126897,0,8056.452,29.61533,0,14,1,37.47769,18.91731,0,0,0,56.395,0,0,0,4,0,4,75.8,17.4,0,,525,525,0,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,78.43752,8.994352,1.386294,4.032381,1 +8,1,50,1,2,126897,0,8056.452,30.61533,0,14,1,9.798585,0,43.23353,0,0,53.03212,0,0,0,0,1,4,75.8,17.4,0,,525,525,0,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,78.43752,8.994352,1.386294,3.970898,1 +8,1,50,1,3,126897,0,8056.452,31.61533,0,14,1,18.83052,2.552032,0,0,0,21.38256,0,0,0,3,0,4,75.8,17.4,0,,525,525,0,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,78.43752,8.994352,1.386294,3.062576,1 +8,1,50,1,4,126897,0,8056.452,32.61533,0,14,1,3.212483,3.969711,0,0,0,7.182194,0,0,0,1,0,4,75.8,17.4,0,,525,525,0,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,78.43752,8.994352,1.386294,1.971605,1 +8,1,50,1,5,126897,0,8056.452,33.61533,0,14,1,9.255363,8.140513,0,0,0,17.39588,0,0,0,2,0,4,75.8,17.4,0,,525,525,0,0,1.386294,6.263398,0,3.931826,6.956545,0,0,0,78.43752,8.994352,1.386294,2.856233,1 +5,1,25,0,1,126899,1,1,6.8282,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,1,,72,72,1,1,.6931472,4.276666,0,3.258096,5.662961,0,1,0,63.00796,.6931472,.6931472,,0 +5,1,25,0,2,126899,1,1,7.8282,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,1,,72,72,1,1,.6931472,4.276666,0,3.258096,5.662961,0,1,0,63.00796,.6931472,.6931472,,0 +5,1,25,0,3,126899,1,1,8.828199,1,10,1,274.4472,29.65111,0,0,678.231,982.3292,1,0,0,29,4,2,74.36826,13.73189,1,,72,72,1,1,.6931472,4.276666,0,3.258096,5.662961,0,1,0,63.00796,.6931472,.6931472,6.889926,1 +5,1,25,0,1,126900,1,1,48.79671,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,55.8,26.1,1,,72,72,0,0,.6931472,4.276666,0,3.258096,5.662961,0,1,0,51.71064,.6931472,.6931472,,0 +5,1,25,0,2,126900,1,1,49.79671,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,55.8,26.1,1,,72,72,0,0,.6931472,4.276666,0,3.258096,5.662961,0,1,0,51.71064,.6931472,.6931472,,0 +5,1,25,0,3,126900,1,1,50.79671,1,10,1,158.4767,53.55774,0,0,0,212.0344,0,0,0,12,0,2,55.8,26.1,1,,72,72,0,0,.6931472,4.276666,0,3.258096,5.662961,0,1,0,51.71064,.6931472,.6931472,5.356749,1 +4,1,100,1,1,126916,0,13328.78,14.84736,1,18,1,52.94468,0,0,0,0,52.94468,0,0,0,3,0,4,68.4,8.7,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,75.75117,9.497756,1.386294,3.969248,1 +4,1,100,1,2,126916,0,13328.78,15.84736,1,18,1,1.633097,1.252041,0,0,0,2.885139,0,0,0,0,0,4,68.4,8.7,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,75.75117,9.497756,1.386294,1.059573,1 +4,1,100,1,3,126916,0,13328.78,16.84736,1,18,1,45.09415,12.63132,0,0,0,57.72547,0,0,0,7,0,4,68.4,8.7,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,75.75117,9.497756,1.386294,4.055698,1 +4,1,100,1,4,126916,0,13328.78,17.84736,1,18,1,14.22671,13.24002,0,0,0,27.46673,0,0,0,2,0,4,68.4,8.7,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,75.75117,9.497756,1.386294,3.312975,1 +4,1,100,1,5,126916,0,13328.78,18.84736,1,18,1,10.09676,5.889777,0,0,0,15.98654,0,0,0,1,0,4,68.4,8.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,75.75117,9.497756,1.386294,2.771747,1 +4,1,100,1,1,126917,0,13328.78,45.85352,0,15,1,67.22189,2.135633,52.8376,0,0,122.1951,0,0,0,4,0,4,54.7,4.3,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,73.31355,9.497756,1.386294,4.805619,1 +4,1,100,1,2,126917,0,13328.78,46.85352,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,54.7,4.3,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,73.31355,9.497756,1.386294,,0 +4,1,100,1,3,126917,0,13328.78,47.85352,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,54.7,4.3,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,73.31355,9.497756,1.386294,,0 +4,1,100,1,4,126917,0,13328.78,48.85352,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,54.7,4.3,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,73.31355,9.497756,1.386294,,0 +4,1,100,1,5,126917,0,13328.78,49.85352,0,15,1,12.62095,0,40.44173,0,0,53.06268,0,0,0,1,0,4,54.7,4.3,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,73.31355,9.497756,1.386294,3.971474,1 +4,1,100,1,1,126918,0,13328.78,16.09309,0,18,1,20.82094,0,0,0,0,20.82094,0,0,0,1,0,4,77.9,4.3,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,81.08788,9.497756,1.386294,3.035959,1 +4,1,100,1,2,126918,0,13328.78,17.09309,0,18,1,35.38378,2.885139,28.16004,0,0,66.42896,0,0,0,3,0,4,77.9,4.3,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,81.08788,9.497756,1.386294,4.196133,1 +4,1,100,1,3,126918,0,13328.78,18.09309,0,18,1,47.40833,0,0,0,0,47.40833,0,0,0,1,0,4,77.9,4.3,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,81.08788,9.497756,1.386294,3.858798,1 +4,1,100,1,4,126918,0,13328.78,19.09309,0,18,1,16.06241,0,16.06241,0,0,32.12483,0,0,0,0,2,4,77.9,4.3,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,81.08788,9.497756,1.386294,3.469629,1 +4,1,100,1,5,126918,0,13328.78,20.09309,0,18,1,80.77409,1.598654,0,0,0,82.37274,0,0,0,2,1,4,77.9,4.3,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,81.08788,9.497756,1.386294,4.411254,1 +4,1,100,1,1,126919,0,13328.78,51.32923,1,18,1,66.27008,0,35.69304,0,0,101.9631,0,0,0,2,1,4,58.9,26.1,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.3842,9.497756,1.386294,4.624611,1 +4,1,100,1,2,126919,0,13328.78,52.32923,1,18,1,48.44856,10.01633,0,0,0,58.46489,0,0,0,4,0,4,58.9,26.1,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.3842,9.497756,1.386294,4.068427,1 +4,1,100,1,3,126919,0,13328.78,53.32923,1,18,1,16.35283,13.95441,0,0,0,30.30724,0,0,0,1,0,4,58.9,26.1,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.3842,9.497756,1.386294,3.411386,1 +4,1,100,1,4,126919,0,13328.78,54.32923,1,18,1,80.31207,0,0,0,0,80.31207,0,0,0,4,0,4,58.9,26.1,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.3842,9.497756,1.386294,4.38592,1 +4,1,100,1,5,126919,0,13328.78,55.32923,1,18,1,44.17333,0,0,250.3155,0,44.17333,0,0,17,6,0,4,58.9,26.1,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.3842,9.497756,1.386294,3.788121,1 +4,1,100,1,1,126920,0,4392.68,1.919233,1,11,1,129.6231,0,0,0,0,129.6231,0,0,0,2,3,2,74.36826,13.73189,0,,75,75,1,1,.6931472,4.317488,1,0,0,0,0,0,75.32616,8.387922,.6931472,4.864631,1 +4,1,100,1,2,126920,0,4392.68,2.919233,1,11,1,69.54178,11.37466,0,0,0,80.91644,0,0,0,8,0,2,74.36826,13.73189,0,,75,75,1,1,.6931472,4.317488,1,0,0,0,0,0,75.32616,8.387922,.6931472,4.393417,1 +4,1,100,1,3,126920,0,4392.68,3.919233,1,11,1,45.70024,2.712531,0,0,0,48.41278,0,0,0,2,0,3,74.36826,13.73189,0,,75,75,1,1,1.098612,4.317488,1,0,0,0,0,0,75.32616,8.387922,1.098612,3.879764,1 +4,1,100,1,4,126920,0,4392.68,4.919233,1,11,1,25.75205,20.1732,0,0,0,45.92525,0,0,0,4,0,3,74.36826,13.73189,0,,75,75,1,1,1.098612,4.317488,1,0,0,0,0,0,75.32616,8.387922,1.098612,3.827015,1 +4,1,100,1,5,126920,0,4392.68,5.919233,1,11,1,63.77657,16.09421,0,0,0,79.87078,0,0,0,4,0,3,74.36826,13.73189,0,,75,75,1,1,1.098612,4.317488,1,0,0,0,0,0,75.32616,8.387922,1.098612,4.38041,1 +4,1,100,1,1,126921,0,4392.68,18.73511,1,11,1,235.4535,17.23204,0,0,0,252.6855,0,0,0,8,0,2,52.6,21.7,0,,75,75,0,0,.6931472,4.317488,1,0,0,0,0,0,73.02412,8.387922,.6931472,5.532146,1 +4,1,100,1,2,126921,0,4392.68,19.73511,1,11,1,170.0809,8.975741,0,140.1617,1719.865,1898.922,2,0,8,3,1,2,52.6,21.7,0,,75,75,0,0,.6931472,4.317488,1,0,0,0,0,0,73.02412,8.387922,.6931472,7.549042,1 +4,1,100,1,3,126921,0,4392.68,20.73511,1,11,1,361.6708,25.49386,1.474201,0,0,388.6388,0,0,0,16,16,3,52.6,21.7,0,,75,75,0,0,1.098612,4.317488,1,0,0,0,0,0,73.02412,8.387922,1.098612,5.96265,1 +4,1,100,1,4,126921,0,4392.68,21.73511,1,11,1,282.7028,34.11577,0,0,0,316.8186,0,0,0,18,9,3,52.6,21.7,0,,75,75,0,0,1.098612,4.317488,1,0,0,0,0,0,73.02412,8.387922,1.098612,5.758329,1 +4,1,100,1,5,126921,0,4392.68,22.73511,1,11,1,73.78074,13.13047,0,33.34723,211.7341,298.6453,1,0,2,8,0,3,52.6,21.7,0,,75,75,0,0,1.098612,4.317488,1,0,0,0,0,0,73.02412,8.387922,1.098612,5.699256,1 +3,1,100,0,1,126931,0,8213.399,15.79192,1,16,1,11.99041,5.065947,0,0,0,17.05635,0,0,0,1,0,3,77.5,13.73189,0,,1000,1000,1,1,1.098612,6.907755,1,0,0,0,0,0,74.30457,9.013644,1.098612,2.836523,1 +3,1,100,0,2,126931,0,8213.399,16.79192,1,16,1,5.476451,0,0,0,0,5.476451,0,0,0,1,0,3,77.5,13.73189,0,,1000,1000,1,1,1.098612,6.907755,1,0,0,0,0,0,74.30457,9.013644,1.098612,1.700457,1 +3,1,100,0,3,126931,0,8213.399,17.79192,1,16,1,20.44888,0,24.62843,0,0,45.0773,0,0,0,2,0,3,77.5,13.73189,0,,1000,1000,1,1,1.098612,6.907755,1,0,0,0,0,0,74.30457,9.013644,1.098612,3.808379,1 +3,1,100,0,4,126931,0,8213.399,18.79192,1,16,1,0,5.348087,0,0,0,5.348087,0,0,0,0,0,3,77.5,13.73189,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,74.30457,9.013644,1.098612,1.676739,1 +3,1,100,0,5,126931,0,8213.399,19.79192,1,16,1,12.69573,0,31.84088,0,0,44.53661,0,0,0,1,0,3,77.5,13.73189,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,74.30457,9.013644,1.098612,3.796311,1 +3,1,100,0,1,126932,0,8213.399,46.4011,1,16,1,25.17986,14.53837,0,0,0,39.71822,0,0,0,2,0,3,83.8,13.73189,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,74.59227,9.013644,1.098612,3.68181,1 +3,1,100,0,2,126932,0,8213.399,47.4011,1,16,1,13.69113,11.88938,44.069,0,0,69.64951,0,0,0,1,0,3,83.8,13.73189,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,74.59227,9.013644,1.098612,4.243475,1 +3,1,100,0,3,126932,0,8213.399,48.4011,1,16,1,10.97257,3.082294,0,0,0,14.05486,0,0,0,1,0,3,83.8,13.73189,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,74.59227,9.013644,1.098612,2.642968,1 +3,1,100,0,4,126932,0,8213.399,49.4011,1,16,1,36.42231,34.43061,34.20931,0,0,105.0622,0,0,0,7,0,3,83.8,13.73189,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,74.59227,9.013644,1.098612,4.654553,1 +3,1,100,0,5,126932,0,8213.399,50.4011,1,16,1,18.6204,2.873466,0,0,0,21.49386,0,0,0,2,0,3,83.8,13.73189,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,74.59227,9.013644,1.098612,3.067768,1 +3,1,100,0,1,126933,0,8213.399,47.45243,0,16,1,71.34293,68.4952,39.91607,0,0,179.7542,0,0,0,5,1,3,62.5,13.73189,1,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,1,0,59.58566,9.013644,1.098612,5.19159,1 +3,1,100,0,2,126933,0,8213.399,48.45243,0,16,1,25.73932,74.11829,9.731654,0,0,109.5893,0,0,0,1,0,3,62.5,13.73189,1,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,1,0,59.58566,9.013644,1.098612,4.696739,1 +3,1,100,0,3,126933,0,8213.399,49.45243,0,16,1,78.67831,231.1022,0,39.90025,0,309.7805,0,0,2,11,0,3,62.5,13.73189,1,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,1,0,59.58566,9.013644,1.098612,5.735864,1 +3,1,100,0,4,126933,0,8213.399,50.45243,0,16,1,73.76672,134.0295,29.87091,110.6501,746.9802,984.6473,1,0,6,8,1,3,62.5,13.73189,1,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,1,0,59.58566,9.013644,1.098612,6.892283,1 +3,1,100,0,5,126933,0,8213.399,51.45243,0,16,1,155.7342,91.84512,0,0,6111.405,6358.984,1,0,0,9,0,3,62.5,13.73189,1,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,1,0,59.58566,9.013644,1.098612,8.757624,1 +1,1,0,1,1,126935,0,16733.25,48.67077,0,12,1,226.0559,239.298,60.95776,0,0,526.3117,0,0,0,6,1,2,55.8,26.1,1,,300,80,0,0,.6931472,4.382027,1,0,0,1,0,0,61.78216,9.725213,.6931472,6.265893,1 +1,1,0,1,2,126935,0,16733.25,49.67077,0,12,1,49.53729,188.1873,37.01688,0,0,274.7414,0,0,0,2,1,2,55.8,26.1,1,,300,80,0,0,.6931472,4.382027,1,0,0,1,0,0,61.78216,9.725213,.6931472,5.61583,1 +1,1,0,1,3,126935,0,16733.25,50.67077,0,12,1,52.27948,192.8692,0,0,0,245.1487,0,0,0,4,0,2,55.8,26.1,1,,300,80,0,0,.6931472,4.382027,1,0,0,1,0,0,61.78216,9.725213,.6931472,5.501865,1 +1,1,0,1,4,126935,0,16733.25,51.67077,0,12,1,236.5764,229.7705,34.41946,0,0,500.7664,0,0,0,3,1,2,55.8,26.1,1,,300,80,0,0,.6931472,4.382027,1,0,0,1,0,0,61.78216,9.725213,.6931472,6.21614,1 +1,1,0,1,5,126935,0,16733.25,52.67077,0,12,1,185.528,152.44,35.59108,0,0,373.5591,0,0,0,6,1,2,55.8,26.1,1,,300,80,0,0,.6931472,4.382027,1,0,0,1,0,0,61.78216,9.725213,.6931472,5.923076,1 +1,1,0,1,1,126936,0,16733.25,47.9562,1,10,1,139.7977,22.96252,42.89708,0,0,205.6573,0,0,0,3,0,2,86.3,4.3,0,,300,80,0,0,.6931472,4.382027,1,0,0,0,0,0,74.56667,9.725213,.6931472,5.326211,1 +1,1,0,1,2,126936,0,16733.25,48.9562,1,10,1,57.43059,5.307567,13.65269,0,0,76.39085,0,0,0,4,0,2,86.3,4.3,0,,300,80,0,0,.6931472,4.382027,1,0,0,0,0,0,74.56667,9.725213,.6931472,4.335863,1 +1,1,0,1,3,126936,0,16733.25,49.9562,1,10,1,42.12091,0,47.86422,0,0,89.98513,0,0,0,3,1,2,86.3,4.3,0,,300,80,0,0,.6931472,4.382027,1,0,0,0,0,0,74.56667,9.725213,.6931472,4.499644,1 +1,1,0,1,4,126936,0,16733.25,50.9562,1,10,1,511.363,0,33.52455,0,0,544.8876,0,0,0,3,0,2,86.3,4.3,0,,300,80,0,0,.6931472,4.382027,1,0,0,0,0,0,74.56667,9.725213,.6931472,6.30058,1 +1,1,0,1,5,126936,0,16733.25,51.9562,1,10,1,92.55364,4.724442,36.04964,0,0,133.3277,0,0,0,5,1,2,86.3,4.3,0,,300,80,0,0,.6931472,4.382027,1,0,0,0,0,0,74.56667,9.725213,.6931472,4.89281,1 +11,1,0,1,1,126945,0,12635.86,53.18549,0,18,1,14.8721,0,19.89292,0,0,34.76502,0,0,0,1,0,5,91.6,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,73.38226,9.444373,1.609438,3.548612,1 +11,1,0,1,2,126945,0,12635.86,54.18549,0,18,1,13.60915,2.705498,0,0,0,16.31464,0,0,0,1,0,5,91.6,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,73.38226,9.444373,1.609438,2.792063,1 +11,1,0,1,3,126945,0,12635.86,55.18549,0,18,1,32.21011,2.244797,0,0,0,34.45491,0,0,0,2,0,5,91.6,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,73.38226,9.444373,1.609438,3.539651,1 +11,1,0,1,4,126945,0,12635.86,56.18549,0,18,1,48.18724,11.77145,23.50161,0,0,83.4603,0,0,0,6,0,5,91.6,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,73.38226,9.444373,1.609438,4.424371,1 +11,1,0,1,5,126945,0,12635.86,57.18549,0,18,1,139.6719,2.519983,0,0,0,142.1918,0,0,0,4,0,5,91.6,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,73.38226,9.444373,1.609438,4.957177,1 +11,1,0,1,1,126946,0,12635.86,50.19028,1,16,1,82.68887,29.81559,47.87032,0,0,160.3748,0,0,0,5,0,5,89.5,17.4,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.05634,9.444373,1.609438,5.077513,1 +11,1,0,1,2,126946,0,12635.86,51.19028,1,16,1,28.30702,.843767,0,0,0,29.15079,0,0,0,2,0,5,89.5,17.4,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.05634,9.444373,1.609438,3.372482,1 +11,1,0,1,3,126946,0,12635.86,52.19028,1,16,1,39.64321,0,55.00496,0,0,94.64816,0,0,0,4,0,5,89.5,17.4,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.05634,9.444373,1.609438,4.550167,1 +11,1,0,1,4,126946,0,12635.86,53.19028,1,16,1,264.8004,0,0,0,0,264.8004,0,0,0,3,0,5,89.5,17.4,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.05634,9.444373,1.609438,5.578976,1 +11,1,0,1,5,126946,0,12635.86,54.19028,1,16,1,130.4165,23.04165,50.9045,0,0,204.3626,0,0,0,5,0,5,89.5,17.4,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.05634,9.444373,1.609438,5.319896,1 +11,1,0,1,1,126947,0,12635.86,13.05681,1,16,1,64.84235,11.87388,0,0,0,76.71624,0,0,0,6,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,86.10995,9.444373,1.609438,4.340114,1 +11,1,0,1,2,126947,0,12635.86,14.05681,1,16,1,29.94012,2.172019,0,0,0,32.11214,0,0,0,3,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,86.10995,9.444373,1.609438,3.469234,1 +11,1,0,1,3,126947,0,12635.86,15.05681,1,16,1,61.44698,0,0,0,0,61.44698,0,0,0,8,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,86.10995,9.444373,1.609438,4.118175,1 +11,1,0,1,4,126947,0,12635.86,16.05681,1,16,1,32.58376,5.025241,23.86416,0,0,61.47315,0,0,0,5,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,86.10995,9.444373,1.609438,4.1186,1 +11,1,0,1,5,126947,0,12635.86,17.05681,1,16,1,33.65587,12.62516,14.50989,0,0,60.79091,0,0,0,3,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,86.10995,9.444373,1.609438,4.10744,1 +11,1,0,1,1,126948,0,12635.86,18.10814,0,12.32507,1,139.2029,3.723974,38.54253,0,0,181.4694,0,0,0,15,0,5,71.6,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.99447,9.444373,1.609438,5.201087,1 +11,1,0,1,2,126948,0,12635.86,19.10814,0,12.32507,1,21.23027,3.756124,32.99401,0,0,57.9804,0,0,0,4,0,5,71.6,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.99447,9.444373,1.609438,4.060105,1 +11,1,0,1,3,126948,0,12635.86,20.10814,0,12.32507,1,45.09415,1.699703,33.36472,0,0,80.15857,0,0,0,5,0,5,71.6,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.99447,9.444373,1.609438,4.384007,1 +11,1,0,1,4,126948,0,12635.86,21.10814,0,12.32507,1,25.24094,1.652134,17.2648,0,0,44.15787,0,0,0,2,0,5,71.6,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.99447,9.444373,1.609438,3.787771,1 +11,1,0,1,5,126948,0,12635.86,22.10814,0,12.32507,1,0,1.598654,0,0,0,1.598654,0,0,0,0,0,5,71.6,8.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.99447,9.444373,1.609438,.4691619,1 +11,1,0,1,1,126949,0,12635.86,14.5462,1,16,1,14.27722,4.419988,0,0,0,18.6972,0,0,0,2,0,5,67.4,4.3,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,75.66186,9.444373,1.609438,2.928374,1 +11,1,0,1,2,126949,0,12635.86,15.5462,1,16,1,67.50136,26.33097,0,0,0,93.83234,0,0,0,12,0,5,67.4,4.3,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,75.66186,9.444373,1.609438,4.54151,1 +11,1,0,1,3,126949,0,12635.86,16.5462,1,16,1,74.33102,10.46581,0,0,0,84.79683,0,0,0,9,0,5,67.4,4.3,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,75.66186,9.444373,1.609438,4.440258,1 +11,1,0,1,4,126949,0,12635.86,17.5462,1,16,1,111.0601,16.838,0,0,0,127.8981,0,0,0,4,0,5,67.4,4.3,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,75.66186,9.444373,1.609438,4.851234,1 +11,1,0,1,5,126949,0,12635.86,18.5462,1,16,1,26.504,6.327303,25.27976,0,0,58.11106,0,0,0,2,0,5,67.4,4.3,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,75.66186,9.444373,1.609438,4.062356,1 +11,1,0,0,1,126956,0,12002.48,49.6345,0,22,1,124.8528,55.88928,44.16961,0,0,224.9117,0,0,0,3,2,4,71.3,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,64.51054,9.392952,1.386294,5.415708,1 +11,1,0,0,2,126956,0,12002.48,50.6345,0,22,1,155.7952,27.52022,0,0,0,183.3154,0,0,0,5,0,4,71.3,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,64.51054,9.392952,1.386294,5.211208,1 +11,1,0,0,3,126956,0,12002.48,51.6345,0,22,1,49.14005,24.69287,0,0,0,73.83292,0,0,0,4,0,4,71.3,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,64.51054,9.392952,1.386294,4.301805,1 +11,1,0,0,4,126956,0,12002.48,52.6345,0,22,1,208.2953,19.50775,27.34731,0,0,255.1504,0,0,0,5,1,4,71.3,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,64.51054,9.392952,1.386294,5.541853,1 +11,1,0,0,5,126956,0,12002.48,53.6345,0,22,1,122.9679,10.56273,0,0,0,133.5306,0,0,0,3,0,4,71.3,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,64.51054,9.392952,1.386294,4.894331,1 +11,1,0,0,1,126957,0,12002.48,53.49213,1,12,1,140.1649,25.8245,0,0,0,165.9894,0,0,0,4,0,4,85,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,71.93534,9.392952,1.386294,5.111924,1 +11,1,0,0,2,126957,0,12002.48,54.49213,1,12,1,53.90836,13.14286,46.36119,0,0,113.4124,0,0,0,5,1,4,85,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,71.93534,9.392952,1.386294,4.731031,1 +11,1,0,0,3,126957,0,12002.48,55.49213,1,12,1,71.74447,11.59705,0,0,0,83.34152,0,0,0,6,0,4,85,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,71.93534,9.392952,1.386294,4.422947,1 +11,1,0,0,4,126957,0,12002.48,56.49213,1,12,1,113.0356,8.226983,20.30538,0,1468.728,1610.296,1,0,0,5,0,4,85,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,71.93534,9.392952,1.386294,7.384173,1 +11,1,0,0,5,126957,0,12002.48,57.49213,1,12,1,75.03127,11.84243,38.76615,0,0,125.6398,0,0,0,6,1,4,85,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,71.93534,9.392952,1.386294,4.833419,1 +11,1,0,0,1,126958,0,12002.48,17.63997,0,12,1,10.60071,0,0,0,0,10.60071,0,0,0,1,0,4,51.3,13.73189,0,,0,233,1,0,1.386294,5.451038,0,0,0,1,0,0,73.92395,9.392952,1.386294,2.360921,1 +11,1,0,0,2,126958,0,12002.48,18.63997,0,12,1,13.47709,2.695418,33.23989,0,0,49.4124,0,0,0,1,0,4,51.3,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,73.92395,9.392952,1.386294,3.900201,1 +11,1,0,0,3,126958,0,12002.48,19.63997,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,51.3,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,73.92395,9.392952,1.386294,,0 +11,1,0,0,4,126958,0,12002.48,20.63997,0,12,1,9.11577,5.036463,22.78942,0,0,36.94166,0,0,0,0,1,4,51.3,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,73.92395,9.392952,1.386294,3.60934,1 +11,1,0,0,5,126958,0,12002.48,21.63997,0,12,1,8.336807,3.626511,0,0,0,11.96332,0,0,0,1,0,4,51.3,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,73.92395,9.392952,1.386294,2.481845,1 +11,1,0,0,1,126959,0,12002.48,15.72895,0,12,1,44.75854,21.67256,0,0,0,66.4311,0,0,0,9,0,4,86.3,13.73189,0,,0,233,1,0,1.386294,5.451038,0,0,0,1,0,0,73.92395,9.392952,1.386294,4.196165,1 +11,1,0,0,2,126959,0,12002.48,16.72895,0,12,1,63.61186,13.60108,5.956873,0,0,83.16982,0,0,0,4,0,4,86.3,13.73189,0,,0,233,1,0,1.386294,5.451038,0,0,0,1,0,0,73.92395,9.392952,1.386294,4.420885,1 +11,1,0,0,3,126959,0,12002.48,17.72895,0,12,1,12.77641,7.592138,0,0,0,20.36855,0,0,0,2,0,4,86.3,13.73189,0,,0,233,1,0,1.386294,5.451038,0,0,0,1,0,0,73.92395,9.392952,1.386294,3.013992,1 +11,1,0,0,4,126959,0,12002.48,18.72895,0,12,1,15.9526,26.39016,0,0,0,42.34275,0,0,0,2,0,4,86.3,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,73.92395,9.392952,1.386294,3.745797,1 +11,1,0,0,5,126959,0,12002.48,19.72895,0,12,1,62.005,31.2797,0,0,0,93.2847,0,0,0,4,0,4,86.3,13.73189,0,,0,233,0,0,1.386294,5.451038,0,0,0,1,0,0,73.92395,9.392952,1.386294,4.535656,1 +7,1,25,1,1,126960,0,10653.9,59.69062,0,14,1,31.21319,53.12132,33.85159,0,0,118.1861,0,0,0,4,0,2,68.4,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,69.64326,9.273775,.6931472,4.772261,1 +7,1,25,1,2,126960,0,10653.9,60.69062,0,14,1,149.3261,43.71968,0,0,0,193.0458,0,0,0,5,0,2,68.4,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,69.64326,9.273775,.6931472,5.262928,1 +7,1,25,1,3,126960,0,10653.9,61.69062,0,14,1,142.9975,43.23341,0,0,0,186.231,0,0,0,6,0,2,68.4,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,69.64326,9.273775,.6931472,5.226988,1 +7,1,25,1,1,126961,0,10653.9,57.26762,1,12,1,55.35925,60.8775,0,0,0,116.2367,0,0,0,11,0,2,86.3,21.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,71.963,9.273775,.6931472,4.755629,1 +7,1,25,1,2,126961,0,10653.9,58.26762,1,12,1,121.2938,55.28302,0,0,0,176.5768,0,0,0,13,0,2,86.3,21.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,71.963,9.273775,.6931472,5.173756,1 +7,1,25,1,3,126961,0,10653.9,59.26762,1,12,1,60.44226,58.25553,33.63636,0,0,152.3342,0,0,0,9,0,2,86.3,21.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,71.963,9.273775,.6931472,5.026076,1 +2,1,100,1,1,126984,0,8362.283,49.6345,0,12,1,40.45211,0,0,0,0,40.45211,0,0,0,1,1,2,44.2,4.3,0,,699,699,0,0,.6931472,6.549651,1,0,0,0,0,0,72.58436,9.031607,.6931472,3.700119,1 +2,1,100,1,2,126984,0,8362.283,50.6345,0,12,1,132.8253,12.22101,24.65977,0,0,169.706,0,0,0,6,1,2,44.2,4.3,0,,699,699,0,0,.6931472,6.549651,1,0,0,0,0,0,72.58436,9.031607,.6931472,5.134068,1 +2,1,100,1,3,126984,0,8362.283,51.6345,0,12,1,0,7.408325,0,0,0,7.408325,0,0,0,0,0,2,44.2,4.3,0,,699,699,0,0,.6931472,6.549651,1,0,0,0,0,0,72.58436,9.031607,.6931472,2.002604,1 +2,1,100,1,4,126984,0,8362.283,52.6345,0,12,1,58.28362,18.79302,43.162,0,0,120.2386,0,0,0,6,1,2,44.2,4.3,0,,699,699,0,0,.6931472,6.549651,1,0,0,0,0,0,72.58436,9.031607,.6931472,4.789478,1 +2,1,100,1,5,126984,0,8362.283,53.6345,0,12,1,151.8721,5.456458,0,0,0,157.3286,0,0,0,5,0,2,44.2,4.3,0,,699,699,0,0,.6931472,6.549651,1,0,0,0,0,0,72.58436,9.031607,.6931472,5.058336,1 +2,1,100,1,1,126985,0,8362.283,50.57084,1,12,1,177.8703,18.67936,0,0,0,196.5497,0,0,0,22,3,2,68.4,26.1,0,,699,699,0,0,.6931472,6.549651,1,0,0,1,0,0,67.71264,9.031607,.6931472,5.280915,1 +2,1,100,1,2,126985,0,8362.283,51.57084,1,12,1,34.29505,24.49102,30.48449,0,0,89.27055,0,0,0,2,1,2,68.4,26.1,0,,699,699,0,0,.6931472,6.549651,1,0,0,1,0,0,67.71264,9.031607,.6931472,4.491672,1 +2,1,100,1,3,126985,0,8362.283,52.57084,1,12,1,0,21.56095,0,0,0,21.56095,0,0,0,0,0,2,68.4,26.1,0,,699,699,0,0,.6931472,6.549651,1,0,0,1,0,0,67.71264,9.031607,.6931472,3.070884,1 +2,1,100,1,4,126985,0,8362.283,53.57084,1,12,1,25.24094,18.40294,45.82377,0,0,89.46764,0,0,0,2,0,2,68.4,26.1,0,,699,699,0,0,.6931472,6.549651,1,0,0,1,0,0,67.71264,9.031607,.6931472,4.493877,1 +2,1,100,1,5,126985,0,8362.283,54.57084,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,68.4,26.1,0,,699,699,0,0,.6931472,6.549651,1,0,0,1,0,0,67.71264,9.031607,.6931472,,0 +1,1,0,0,1,127001,0,9542.002,2.102669,0,16,1,115.4299,22.84452,0,0,0,138.2744,0,0,0,8,2,3,74.36826,13.73189,0,,450,145,1,0,1.098612,4.976734,1,0,0,0,0,0,78.82387,9.163564,1.098612,4.92924,1 +1,1,0,0,2,127001,0,9542.002,3.102669,0,16,1,53.36927,12.67924,0,0,0,66.04852,0,0,0,7,0,4,74.36826,13.73189,0,,450,145,1,0,1.386294,4.976734,1,0,0,0,0,0,78.82387,9.163564,1.386294,4.19039,1 +1,1,0,0,3,127001,0,9542.002,4.102669,0,16,1,7.862408,1.371007,0,0,0,9.233416,0,0,0,1,0,4,74.36826,13.73189,0,,450,145,1,0,1.386294,4.976734,1,0,0,0,0,0,78.82387,9.163564,1.386294,2.222829,1 +1,1,0,0,1,127002,0,9542.002,31.37851,1,16,1,11.18964,34.65842,0,0,762.0789,807.927,1,0,0,0,0,3,67.5,13.73189,0,,450,145,0,0,1.098612,4.976734,1,0,0,1,0,0,72.19561,9.163564,1.098612,6.694472,1 +1,1,0,0,2,127002,0,9542.002,32.37851,1,16,1,156.0647,8.743936,0,0,0,164.8086,0,0,0,7,0,4,67.5,13.73189,0,,450,145,0,0,1.386294,4.976734,1,0,0,1,0,0,72.19561,9.163564,1.386294,5.104785,1 +1,1,0,0,3,127002,0,9542.002,33.37851,1,16,1,101.7199,15.31204,0,0,0,117.0319,0,0,0,6,0,4,67.5,13.73189,0,,450,145,0,0,1.386294,4.976734,1,0,0,1,0,0,72.19561,9.163564,1.386294,4.762447,1 +1,1,0,0,1,127003,0,9542.002,33.21561,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,86.3,13.73189,0,,450,145,0,0,1.098612,4.976734,1,0,0,1,0,0,68.24405,9.163564,1.098612,,0 +1,1,0,0,2,127003,0,9542.002,34.21561,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,86.3,13.73189,0,,450,145,0,0,1.386294,4.976734,1,0,0,1,0,0,68.24405,9.163564,1.386294,,0 +1,1,0,0,3,127003,0,9542.002,35.21561,0,16,1,4.914005,0,0,0,0,4.914005,0,0,0,0,0,4,86.3,13.73189,0,,450,145,0,0,1.386294,4.976734,1,0,0,1,0,0,68.24405,9.163564,1.386294,1.592089,1 +10,1,50,1,1,127053,0,14800.25,37.21834,0,16,1,11.09113,0,0,0,0,11.09113,0,0,0,1,0,3,98.9,0,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.07086,9.602467,1.098612,2.406146,1 +10,1,50,1,2,127053,0,14800.25,38.21834,0,16,1,26.28697,5.16977,0,0,0,31.45674,0,0,0,2,0,3,98.9,0,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.07086,9.602467,1.098612,3.448613,1 +10,1,50,1,3,127053,0,14800.25,39.21834,0,16,1,37.40648,0,40.399,0,0,77.80549,0,0,0,2,1,3,98.9,0,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.07086,9.602467,1.098612,4.354212,1 +10,1,50,1,1,127054,0,14800.25,7.137577,0,12,1,9.592326,4.556355,0,0,0,14.14868,0,0,0,1,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,84.53857,9.602467,1.098612,2.649621,1 +10,1,50,1,2,127054,0,14800.25,8.137577,0,12,1,7.119387,5.843373,0,0,0,12.96276,0,0,0,1,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,84.53857,9.602467,1.098612,2.562081,1 +10,1,50,1,3,127054,0,14800.25,9.137577,0,12,1,15.23691,0,0,0,0,15.23691,0,0,0,2,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,84.53857,9.602467,1.098612,2.723721,1 +10,1,50,1,1,127055,0,14800.25,40.87885,1,12,1,34.77218,4.868105,0,0,0,39.64029,0,0,0,2,0,3,70.5,21.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,77.55615,9.602467,1.098612,3.679846,1 +10,1,50,1,2,127055,0,14800.25,41.87885,1,12,1,203.4502,11.33078,40.71741,0,0,255.4984,0,0,0,5,2,3,70.5,21.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,77.55615,9.602467,1.098612,5.543216,1 +10,1,50,1,3,127055,0,14800.25,42.87885,1,12,1,31.42145,16.4788,0,0,0,47.90025,0,0,0,4,0,3,70.5,21.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,77.55615,9.602467,1.098612,3.869121,1 +10,1,50,1,1,127059,0,9848.635,34.73785,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,95.8,0,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,78.73395,9.195189,1.098612,,0 +10,1,50,1,2,127059,0,9848.635,35.73785,0,12,1,6.53239,0,0,0,0,6.53239,0,0,0,1,0,3,95.8,0,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,78.73395,9.195189,1.098612,1.876773,1 +10,1,50,1,3,127059,0,9848.635,36.73785,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,95.8,0,0,,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,0,0,0,78.73395,9.195189,0,,0 +10,1,50,1,1,127060,0,9848.635,10.09993,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,79.89645,9.195189,1.098612,,0 +10,1,50,1,2,127060,0,9848.635,11.09993,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,79.89645,9.195189,1.098612,,0 +10,1,50,1,1,127061,0,9848.635,33.32786,1,12,1,28.55443,56.45449,0,0,0,85.00893,0,0,0,4,0,3,87.4,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,66.92303,9.195189,1.098612,4.442756,1 +10,1,50,1,2,127061,0,9848.635,34.32786,1,12,1,21.77463,1.986935,0,0,0,23.76157,0,0,0,2,0,3,87.4,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,66.92303,9.195189,1.098612,3.16807,1 +10,1,50,1,1,127074,0,11740.07,22.89391,0,13,1,0,1.6247,0,0,0,1.6247,0,0,0,0,0,1,75.8,0,0,,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,1,0,0,66.68941,9.370849,0,.4853233,1 +10,1,50,1,2,127074,0,11740.07,23.89391,0,13,1,12.04819,0,0,0,0,12.04819,0,0,0,1,0,1,75.8,0,0,,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,1,0,0,66.68941,9.370849,0,2.488915,1 +10,1,50,1,3,127074,0,11740.07,24.89391,0,13,1,4.987531,0,0,0,0,4.987531,0,0,0,1,0,1,75.8,0,0,,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,1,0,0,66.68941,9.370849,0,1.606941,1 +10,1,50,1,4,127074,0,11740.07,25.89391,0,13,1,5.532504,0,0,0,0,5.532504,0,0,0,1,0,1,75.8,0,0,,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,1,0,0,66.68941,9.370849,0,1.71064,1 +10,1,50,1,5,127074,0,11740.07,26.89391,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,75.8,0,0,,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,1,0,0,66.68941,9.370849,0,,0 +4,1,100,1,1,127075,0,7539.082,.8158795,0,12,1,20.38369,1.306954,0,0,0,21.69065,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,80.7198,8.927988,1.386294,3.076881,1 +4,1,100,1,2,127075,0,7539.082,1.81588,0,12,1,20.26287,1.484118,0,0,0,21.74699,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,80.7198,8.927988,1.386294,3.079475,1 +4,1,100,1,3,127075,0,7539.082,2.81588,0,12,1,7.98005,0,0,0,0,7.98005,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,80.7198,8.927988,1.386294,2.076945,1 +4,1,100,1,4,127075,0,7539.082,3.81588,0,12,1,14.75334,0,0,0,0,14.75334,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,80.7198,8.927988,1.386294,2.69147,1 +4,1,100,1,5,127075,0,7539.082,4.815879,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,80.7198,8.927988,1.386294,,0 +4,1,100,1,1,127076,0,7539.082,25.78508,0,12,1,17.38609,0,0,0,0,17.38609,0,0,0,1,0,4,97.9,4.3,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.25877,8.927988,1.386294,2.85567,1 +4,1,100,1,2,127076,0,7539.082,26.78508,0,12,1,2.190581,0,47.27273,0,0,49.46331,0,0,0,0,0,4,97.9,4.3,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.25877,8.927988,1.386294,3.901231,1 +4,1,100,1,3,127076,0,7539.082,27.78508,0,12,1,9.476309,0,0,0,0,9.476309,0,0,0,1,0,4,97.9,4.3,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.25877,8.927988,1.386294,2.248795,1 +4,1,100,1,4,127076,0,7539.082,28.78508,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,97.9,4.3,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.25877,8.927988,1.386294,,0 +4,1,100,1,5,127076,0,7539.082,29.78508,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,97.9,4.3,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.25877,8.927988,1.386294,,0 +4,1,100,1,1,127077,0,7539.082,3.531827,0,12,1,16.18705,1.306954,0,0,0,17.49401,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,70.5428,8.927988,1.386294,2.861858,1 +4,1,100,1,2,127077,0,7539.082,4.531827,0,12,1,50.38335,15.73932,0,0,307.6396,373.7623,1,0,0,6,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,70.5428,8.927988,1.386294,5.92362,1 +4,1,100,1,3,127077,0,7539.082,5.531827,0,12,1,19.95012,1.391521,0,0,0,21.34165,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,70.5428,8.927988,1.386294,3.06066,1 +4,1,100,1,4,127077,0,7539.082,6.531827,0,12,1,18.44168,3.379437,0,0,191.9087,213.7298,1,1,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,70.5428,8.927988,1.386294,5.364713,1 +4,1,100,1,5,127077,0,7539.082,7.531827,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,70.5428,8.927988,1.386294,,0 +4,1,100,1,1,127078,0,7539.082,23.96715,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.2,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,79.14996,8.927988,1.386294,,0 +4,1,100,1,2,127078,0,7539.082,24.96715,1,12,1,42.71632,4.83023,34.33735,0,0,81.8839,0,0,0,4,1,4,83.2,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,79.14996,8.927988,1.386294,4.405303,1 +4,1,100,1,3,127078,0,7539.082,25.96715,1,12,1,34.91272,3.241895,0,0,0,38.15461,0,0,0,3,0,4,83.2,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,79.14996,8.927988,1.386294,3.641647,1 +4,1,100,1,4,127078,0,7539.082,26.96715,1,12,1,7.376671,2.434302,0,0,0,9.810973,0,0,0,1,0,4,83.2,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,79.14996,8.927988,1.386294,2.283501,1 +4,1,100,1,5,127078,0,7539.082,27.96715,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.2,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,79.14996,8.927988,1.386294,,0 +5,1,25,1,1,127097,0,8867.866,.9089665,1,16,1,110.1296,20.01178,0,0,0,130.1413,0,0,0,15,0,4,74.36826,13.73189,0,,640,640,1,1,1.386294,6.461468,0,3.258096,7.847763,1,0,0,73.34382,9.090302,1.386294,4.868621,1 +5,1,25,1,2,127097,0,8867.866,1.908966,1,16,1,21.02426,7.929919,0,0,0,28.95418,0,0,0,4,0,4,74.36826,13.73189,0,,640,640,1,1,1.386294,6.461468,0,3.258096,7.847763,1,0,0,73.34382,9.090302,1.386294,3.365715,1 +5,1,25,1,3,127097,0,8867.866,2.908967,1,16,1,52.92383,6.240786,0,0,0,59.16462,0,0,0,6,1,4,74.36826,13.73189,0,,640,640,1,1,1.386294,6.461468,0,3.258096,7.847763,1,0,0,73.34382,9.090302,1.386294,4.080324,1 +5,1,25,1,1,127098,0,8867.866,34.62286,0,16,1,125.4417,25.9364,0,0,0,151.3781,0,0,0,11,0,4,57.9,30.4,1,,640,640,0,0,1.386294,6.461468,0,3.258096,7.847763,0,1,0,63.20214,9.090302,1.386294,5.019781,1 +5,1,25,1,2,127098,0,8867.866,35.62286,0,16,1,13.47709,1.061995,0,0,0,14.53908,0,0,0,1,0,4,57.9,30.4,1,,640,640,0,0,1.386294,6.461468,0,3.258096,7.847763,0,1,0,63.20214,9.090302,1.386294,2.676841,1 +5,1,25,1,3,127098,0,8867.866,36.62286,0,16,1,133.1695,1.965602,50.84029,0,242.7568,428.7322,1,0,0,6,1,4,57.9,30.4,1,,640,640,0,0,1.386294,6.461468,0,3.258096,7.847763,0,1,0,63.20214,9.090302,1.386294,6.060833,1 +5,1,25,1,1,127099,0,8867.866,3.931554,1,16,1,44.75854,15.00589,0,0,0,59.76443,0,0,0,7,0,4,74.36826,13.73189,0,,640,640,1,1,1.386294,6.461468,0,3.258096,7.847763,1,0,0,70.0731,9.090302,1.386294,4.090411,1 +5,1,25,1,2,127099,0,8867.866,4.931554,1,16,1,32.8841,13.29919,0,0,0,46.18329,0,0,0,6,0,4,74.36826,13.73189,0,,640,640,1,1,1.386294,6.461468,0,3.258096,7.847763,1,0,0,70.0731,9.090302,1.386294,3.832618,1 +5,1,25,1,3,127099,0,8867.866,5.931554,1,16,1,26.53563,4.825553,0,0,0,31.36118,0,0,0,5,0,4,74.36826,13.73189,0,,640,640,1,1,1.386294,6.461468,0,3.258096,7.847763,1,0,0,70.0731,9.090302,1.386294,3.445571,1 +5,1,25,1,1,127100,0,8867.866,33.295,1,16,1,50.05889,18.32155,45.02356,0,0,113.404,0,0,0,2,1,4,83.2,26.1,0,,640,640,0,0,1.386294,6.461468,0,3.258096,7.847763,0,0,0,75.64986,9.090302,1.386294,4.730957,1 +5,1,25,1,2,127100,0,8867.866,34.295,1,16,1,465.6334,18.71698,0,0,0,484.3504,0,0,0,9,0,4,83.2,26.1,0,,640,640,0,0,1.386294,6.461468,0,3.258096,7.847763,0,0,0,75.64986,9.090302,1.386294,6.182808,1 +5,1,25,1,3,127100,0,8867.866,35.295,1,16,1,84.02949,13.94595,0,0,0,97.97543,0,0,0,4,0,4,83.2,26.1,0,,640,640,0,0,1.386294,6.461468,0,3.258096,7.847763,0,0,0,75.64986,9.090302,1.386294,4.584717,1 +11,1,0,0,1,127104,0,14157.57,52,1,13,1,42.56595,58.15348,34.43045,0,0,135.1499,0,0,0,4,0,2,82.5,13.73189,0,,0,166,0,0,.6931472,5.111988,0,0,0,1,0,0,67.18981,9.558075,.6931472,4.906384,1 +11,1,0,0,2,127104,0,14157.57,53,1,13,1,33.954,49.09639,0,0,0,83.05038,0,0,0,4,0,2,82.5,13.73189,0,,0,166,0,0,.6931472,5.111988,0,0,0,1,0,0,67.18981,9.558075,.6931472,4.419447,1 +11,1,0,0,3,127104,0,14157.57,54,1,13,1,47.8803,35.03741,0,0,0,82.91771,0,0,0,6,0,2,82.5,13.73189,0,,0,166,0,0,.6931472,5.111988,0,0,0,1,0,0,67.18981,9.558075,.6931472,4.417849,1 +11,1,0,0,1,127105,0,14157.57,51.43327,0,12,1,80.93525,9.106714,0,0,0,90.04197,0,0,0,2,0,2,68.8,13.73189,0,,0,166,0,0,.6931472,5.111988,0,0,0,0,0,0,70.86036,9.558075,.6931472,4.500276,1 +11,1,0,0,2,127105,0,14157.57,52.43327,0,12,1,60.24096,3.444688,0,0,0,63.68565,0,0,0,1,0,2,68.8,13.73189,0,,0,166,0,0,.6931472,5.111988,0,0,0,0,0,0,70.86036,9.558075,.6931472,4.153959,1 +11,1,0,0,3,127105,0,14157.57,53.43327,0,12,1,30.92269,7.047381,16.6783,0,0,54.64838,0,0,0,5,0,2,68.8,13.73189,0,,0,166,0,0,.6931472,5.111988,0,0,0,0,0,0,70.86036,9.558075,.6931472,4.000919,1 +11,1,0,0,1,127106,0,7895.782,22.43669,1,16,1,111.5108,12.47602,42.44005,0,0,166.4269,0,0,0,5,0,1,71.3,13.73189,0,,0,166,0,0,0,5.111988,0,0,0,0,0,0,75.76809,8.974211,0,5.114556,1 +11,1,0,0,2,127106,0,7895.782,23.43669,1,16,1,57.63965,14.15115,0,0,0,71.7908,0,0,0,5,0,1,71.3,13.73189,0,,0,166,0,0,0,5.111988,0,0,0,0,0,0,75.76809,8.974211,0,4.273757,1 +11,1,0,0,3,127106,0,7895.782,24.43669,1,16,1,73.71571,0,0,0,0,73.71571,0,0,0,3,1,1,71.3,13.73189,0,,0,166,0,0,0,5.111988,0,0,0,0,0,0,75.76809,8.974211,0,4.300216,1 +5,1,25,1,1,127107,0,8823.201,22.49966,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,80,0,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,74.03484,9.085254,1.386294,,0 +5,1,25,1,2,127107,0,8823.201,23.49966,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,80,0,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,74.03484,9.085254,1.386294,,0 +5,1,25,1,3,127107,0,8823.201,24.49966,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,80,0,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,74.03484,9.085254,1.386294,,0 +5,1,25,1,4,127107,0,8823.201,25.49966,0,11,1,0,7.155879,0,0,0,7.155879,0,0,0,0,0,4,80,0,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,74.03484,9.085254,1.386294,1.967934,1 +5,1,25,1,5,127107,0,8823.201,26.49966,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,80,0,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,74.03484,9.085254,1.386294,,0 +5,1,25,1,1,127108,0,8823.201,3.909651,0,12,1,73.52768,22.10247,0,0,0,95.63015,0,0,0,8,0,4,74.36826,13.73189,0,,500,500,1,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,80.33704,9.085254,1.386294,4.560488,1 +5,1,25,1,2,127108,0,8823.201,4.909651,0,12,1,15.63342,14.85175,0,0,783.3207,813.8059,1,0,0,3,0,4,74.36826,13.73189,0,,500,500,1,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,80.33704,9.085254,1.386294,6.701722,1 +5,1,25,1,3,127108,0,8823.201,5.909651,0,12,1,10.31941,4.186732,0,0,0,14.50614,0,0,0,2,0,4,74.36826,13.73189,0,,500,500,1,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,80.33704,9.085254,1.386294,2.674572,1 +5,1,25,1,4,127108,0,8823.201,6.909651,0,12,1,30.53783,7.848678,0,0,0,38.38651,0,0,0,4,0,4,74.36826,13.73189,0,,500,500,1,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,80.33704,9.085254,1.386294,3.647706,1 +5,1,25,1,5,127108,0,8823.201,7.909651,0,12,1,5.418924,1.763235,0,0,0,7.182159,0,0,0,1,0,4,74.36826,13.73189,0,,500,500,1,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,80.33704,9.085254,1.386294,1.9716,1 +5,1,25,1,1,127109,0,8823.201,1.629021,1,12,1,49.46996,25.78916,0,0,0,75.25912,0,0,0,10,0,4,74.36826,13.73189,0,,500,500,1,1,1.386294,6.214608,0,3.258096,7.600903,0,0,0,79.82306,9.085254,1.386294,4.320937,1 +5,1,25,1,2,127109,0,8823.201,2.629021,1,12,1,67.22372,2.867924,0,0,0,70.09164,0,0,0,6,0,4,74.36826,13.73189,0,,500,500,1,1,1.386294,6.214608,0,3.258096,7.600903,0,0,0,79.82306,9.085254,1.386294,4.249804,1 +5,1,25,1,3,127109,0,8823.201,3.629021,1,12,1,56.26536,0,0,0,0,56.26536,0,0,0,2,0,4,74.36826,13.73189,0,,500,500,1,1,1.386294,6.214608,0,3.258096,7.600903,0,0,0,79.82306,9.085254,1.386294,4.030079,1 +5,1,25,1,4,127109,0,8823.201,4.629021,1,12,1,11.50866,0,0,0,0,11.50866,0,0,0,1,0,4,74.36826,13.73189,0,,500,500,1,1,1.386294,6.214608,0,3.258096,7.600903,0,0,0,79.82306,9.085254,1.386294,2.4431,1 +5,1,25,1,5,127109,0,8823.201,5.629021,1,12,1,49.48729,2.796999,0,0,0,52.28429,0,0,0,2,0,4,74.36826,13.73189,0,,500,500,1,1,1.386294,6.214608,0,3.258096,7.600903,0,0,0,79.82306,9.085254,1.386294,3.956696,1 +5,1,25,1,1,127110,0,8823.201,21.95756,1,12,1,546.7314,14.18139,0,0,0,560.9128,0,0,0,6,0,4,70.5,26.1,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,79.01614,9.085254,1.386294,6.329566,1 +5,1,25,1,2,127110,0,8823.201,22.95756,1,12,1,16.71159,18.18868,24.22642,5.390836,0,59.12669,0,0,1,1,0,4,70.5,26.1,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,79.01614,9.085254,1.386294,4.079682,1 +5,1,25,1,3,127110,0,8823.201,23.95756,1,12,1,24.57002,4.894349,0,0,0,29.46437,0,0,0,4,0,4,70.5,26.1,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,79.01614,9.085254,1.386294,3.383182,1 +5,1,25,1,4,127110,0,8823.201,24.95756,1,12,1,13.67366,0,0,0,0,13.67366,0,0,0,1,0,4,70.5,26.1,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,79.01614,9.085254,1.386294,2.615471,1 +5,1,25,1,5,127110,0,8823.201,25.95756,1,12,1,11.25469,18.42018,0,0,0,29.67486,0,0,0,1,0,4,70.5,26.1,0,,500,500,0,0,1.386294,6.214608,0,3.258096,7.600903,0,0,0,79.01614,9.085254,1.386294,3.3903,1 +2,1,100,0,1,127133,0,7798.387,56.5065,1,12,1,0,31.35453,0,0,0,31.35453,0,0,0,0,0,2,83.2,26.1,0,,600,600,0,0,.6931472,6.39693,1,0,0,1,0,0,67.63052,8.961801,.6931472,3.445359,1 +2,1,100,0,2,127133,0,7798.387,57.5065,1,12,1,439.3046,30.83019,49.01348,0,0,519.1483,0,0,0,4,1,2,83.2,26.1,0,,600,600,0,0,.6931472,6.39693,1,0,0,1,0,0,67.63052,8.961801,.6931472,6.25219,1 +2,1,100,0,3,127133,0,7798.387,58.5065,1,12,1,17.19902,21.14496,0,0,0,38.34398,0,0,0,0,0,2,83.2,26.1,0,,600,600,0,0,.6931472,6.39693,1,0,0,1,0,0,67.63052,8.961801,.6931472,3.646598,1 +2,1,100,0,4,127133,0,7798.387,59.5065,1,12,1,11.39471,10.08204,28.10392,0,0,49.58067,0,0,0,0,1,2,83.2,26.1,0,,600,600,0,0,.6931472,6.39693,1,0,0,1,0,0,67.63052,8.961801,.6931472,3.903601,1 +2,1,100,0,5,127133,0,7798.387,60.5065,1,12,1,60.0792,25.33973,12.50521,0,0,97.92413,0,0,0,2,0,2,83.2,26.1,0,,600,600,0,0,.6931472,6.39693,1,0,0,1,0,0,67.63052,8.961801,.6931472,4.584193,1 +2,1,100,0,1,127134,0,7798.387,56.61876,0,11,1,104.5347,16.35453,0,0,0,120.8893,0,0,0,4,0,2,91.6,4.3,0,,600,600,0,0,.6931472,6.39693,1,0,0,0,0,0,73.34084,8.961801,.6931472,4.794875,1 +2,1,100,0,2,127134,0,7798.387,57.61876,0,11,1,2.695418,15.50943,0,0,0,18.20485,0,0,0,1,0,2,91.6,4.3,0,,600,600,0,0,.6931472,6.39693,1,0,0,0,0,0,73.34084,8.961801,.6931472,2.901688,1 +2,1,100,0,3,127134,0,7798.387,58.61876,0,11,1,0,20.05405,0,0,0,20.05405,0,0,0,0,0,2,91.6,4.3,0,,600,600,0,0,.6931472,6.39693,1,0,0,0,0,0,73.34084,8.961801,.6931472,2.998431,1 +2,1,100,0,4,127134,0,7798.387,59.61876,0,11,1,16.40839,.756609,0,0,0,17.165,0,0,0,1,0,2,91.6,4.3,0,,600,600,0,0,.6931472,6.39693,1,0,0,0,0,0,73.34084,8.961801,.6931472,2.842872,1 +2,1,100,0,5,127134,0,7798.387,60.61876,0,11,1,192.6928,15.47311,0,0,3459.266,3667.432,1,0,0,7,0,2,91.6,4.3,0,,600,600,0,0,.6931472,6.39693,1,0,0,0,0,0,73.34084,8.961801,.6931472,8.207247,1 +1,1,0,1,1,127135,0,10474.57,10.31348,1,11,1,11.60024,6.353361,0,0,0,17.9536,0,0,0,1,0,8,74.36826,13.73189,0,,450,0,1,1,2.079442,0,1,0,0,0,0,0,79.74134,9.256801,2.079442,2.887791,1 +1,1,0,1,2,127135,0,10474.57,11.31348,1,11,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,450,0,1,1,2.079442,0,1,0,0,0,0,0,79.74134,9.256801,2.079442,,0 +1,1,0,1,3,127135,0,10474.57,12.31348,1,11,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,450,0,1,1,2.079442,0,1,0,0,0,0,0,79.74134,9.256801,2.079442,,0 +1,1,0,1,4,127135,0,10474.57,13.31348,1,11,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,450,0,1,1,2.079442,0,1,0,0,0,0,0,79.74134,9.256801,2.079442,,0 +1,1,0,1,5,127135,0,10474.57,14.31348,1,11,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,450,0,1,1,2.079442,0,1,0,0,0,0,0,79.74134,9.256801,2.079442,,0 +1,1,0,1,1,127136,0,10474.57,39.59206,1,11,1,39.26234,32.86139,0,0,0,72.12373,0,0,0,5,0,8,36.8,17.4,0,,450,0,0,0,2.079442,0,1,0,0,1,0,0,67.32787,9.256801,2.079442,4.278383,1 +1,1,0,1,2,127136,0,10474.57,40.59206,1,11,1,73.2172,0,0,0,0,73.2172,0,0,0,3,0,8,36.8,17.4,0,,450,0,0,0,2.079442,0,1,0,0,1,0,0,67.32787,9.256801,2.079442,4.29343,1 +1,1,0,1,3,127136,0,10474.57,41.59206,1,11,1,0,18.13677,0,0,0,18.13677,0,0,0,0,0,8,36.8,17.4,0,,450,0,0,0,2.079442,0,1,0,0,1,0,0,67.32787,9.256801,2.079442,2.897941,1 +1,1,0,1,4,127136,0,10474.57,42.59206,1,11,1,147.6595,57.96237,34.4883,0,0,240.1101,0,0,0,9,2,8,36.8,17.4,0,,450,0,0,0,2.079442,0,1,0,0,1,0,0,67.32787,9.256801,2.079442,5.481098,1 +1,1,0,1,5,127136,0,10474.57,43.59206,1,11,1,138.2836,46.2053,33.30669,88.34666,0,217.7955,0,0,7,9,3,8,36.8,17.4,0,,450,0,0,0,2.079442,0,1,0,0,1,0,0,67.32787,9.256801,2.079442,5.383557,1 +1,1,0,1,1,127137,0,10474.57,18.88296,0,9,1,0,0,0,0,0,0,0,0,0,0,0,8,73.7,8.7,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,71.0389,9.256801,2.079442,,0 +1,1,0,1,2,127137,0,10474.57,19.88296,0,9,1,0,0,0,0,0,0,0,0,0,0,0,8,73.7,8.7,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,71.0389,9.256801,2.079442,,0 +1,1,0,1,3,127137,0,10474.57,20.88296,0,9,1,43.11199,.9910803,0,0,0,44.10307,0,0,0,5,0,8,73.7,8.7,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,71.0389,9.256801,2.079442,3.78653,1 +1,1,0,1,4,127137,0,10474.57,21.88296,0,9,1,14.22671,3.469481,0,0,0,17.69619,0,0,0,2,0,8,73.7,8.7,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,71.0389,9.256801,2.079442,2.873349,1 +1,1,0,1,5,127137,0,10474.57,22.88296,0,9,1,0,0,0,0,0,0,0,0,0,0,0,8,73.7,8.7,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,71.0389,9.256801,2.079442,,0 +1,1,0,1,1,127138,0,10474.57,40.93361,0,4,1,0,3.765616,0,0,0,3.765616,0,0,0,0,0,8,60,8.7,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,73.24482,9.256801,2.079442,1.325911,1 +1,1,0,1,2,127138,0,10474.57,41.93361,0,4,1,8.165487,0,44.94828,0,0,53.11377,0,0,0,0,1,8,60,8.7,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,73.24482,9.256801,2.079442,3.972436,1 +1,1,0,1,3,127138,0,10474.57,42.93361,0,4,1,11.39742,1.942517,0,0,0,13.33994,0,0,0,0,1,8,60,8.7,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,73.24482,9.256801,2.079442,2.590763,1 +1,1,0,1,4,127138,0,10474.57,43.93361,0,4,1,76.84718,12.93254,0,0,1469.986,1559.766,1,0,0,2,0,8,60,8.7,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,73.24482,9.256801,2.079442,7.352291,1 +1,1,0,1,5,127138,0,10474.57,44.93361,0,4,1,69.41523,30.73202,29.01557,0,0,129.1628,0,0,0,3,1,8,60,8.7,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,73.24482,9.256801,2.079442,4.861073,1 +1,1,0,1,1,127139,0,10474.57,16.18891,1,11,1,16.95419,3.604997,0,0,0,20.55919,0,0,0,2,0,8,43.2,13,0,,450,0,1,1,2.079442,0,1,0,0,0,0,0,67.54826,9.256801,2.079442,3.023308,1 +1,1,0,1,2,127139,0,10474.57,17.18891,1,11,1,0,0,0,0,0,0,0,0,0,0,0,8,43.2,13,0,,450,0,1,1,2.079442,0,1,0,0,0,0,0,67.54826,9.256801,2.079442,,0 +1,1,0,1,3,127139,0,10474.57,18.18891,1,11,1,0,0,0,0,0,0,0,0,0,0,0,8,43.2,13,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,67.54826,9.256801,2.079442,,0 +1,1,0,1,4,127139,0,10474.57,19.18891,1,11,1,10.09637,1.684259,35.00689,0,0,46.78752,0,0,0,0,1,8,43.2,13,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,67.54826,9.256801,2.079442,3.845616,1 +1,1,0,1,5,127139,0,10474.57,20.18891,1,11,1,21.03492,0,0,0,0,21.03492,0,0,0,3,0,8,43.2,13,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,67.54826,9.256801,2.079442,3.046184,1 +1,1,0,1,1,127140,0,10474.57,12.73922,0,11,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,450,0,1,0,2.079442,0,1,0,0,0,0,0,77.94382,9.256801,2.079442,,0 +1,1,0,1,2,127140,0,10474.57,13.73922,0,11,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,450,0,1,0,2.079442,0,1,0,0,0,0,0,77.94382,9.256801,2.079442,,0 +1,1,0,1,3,127140,0,10474.57,14.73922,0,11,1,26.26363,12.00198,0,0,0,38.26561,0,0,0,2,0,8,74.36826,13.73189,0,,450,0,1,0,2.079442,0,1,0,0,0,0,0,77.94382,9.256801,2.079442,3.644552,1 +1,1,0,1,4,127140,0,10474.57,15.73922,0,11,1,96.94814,7.88894,0,0,0,104.8371,0,0,0,6,0,8,74.36826,13.73189,0,,450,0,1,0,2.079442,0,1,0,0,0,0,0,77.94382,9.256801,2.079442,4.652408,1 +1,1,0,1,5,127140,0,10474.57,16.73922,0,11,1,9.255363,0,0,0,0,9.255363,0,0,0,1,0,8,74.36826,13.73189,0,,450,0,1,0,2.079442,0,1,0,0,0,0,0,77.94382,9.256801,2.079442,2.225203,1 +1,1,0,1,1,127141,0,10474.57,17.51951,0,11,1,8.328376,0,0,0,0,8.328376,0,0,0,1,0,8,63.2,8.7,0,,450,0,1,0,2.079442,0,1,0,0,0,0,0,72.88496,9.256801,2.079442,2.119668,1 +1,1,0,1,2,127141,0,10474.57,18.51951,0,11,1,0,0,0,0,0,0,0,0,0,0,0,8,63.2,8.7,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,72.88496,9.256801,2.079442,,0 +1,1,0,1,3,127141,0,10474.57,19.51951,0,11,1,0,0,0,0,0,0,0,0,0,0,0,8,63.2,8.7,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,72.88496,9.256801,2.079442,,0 +1,1,0,1,4,127141,0,10474.57,20.51951,0,11,1,39.59615,2.202845,0,0,0,41.79899,0,0,0,1,0,8,63.2,8.7,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,72.88496,9.256801,2.079442,3.732872,1 +1,1,0,1,5,127141,0,10474.57,21.51951,0,11,1,33.44552,0,0,0,0,33.44552,0,0,0,1,0,8,63.2,8.7,0,,450,0,0,0,2.079442,0,1,0,0,0,0,0,72.88496,9.256801,2.079442,3.509918,1 +11,1,0,1,1,127158,0,8062.035,60.58316,1,13,1,170.7317,82.06425,0,0,0,252.796,0,0,0,2,1,1,80,26.1,0,,0,0,0,0,0,0,0,0,0,1,0,0,73.09361,8.995046,0,5.532583,1 +11,1,0,1,2,127158,0,8062.035,61.58316,1,13,1,219.9238,49.15623,44.37126,0,0,313.4513,0,0,0,38,0,1,80,26.1,0,,0,0,0,0,0,0,0,0,0,1,0,0,73.09361,8.995046,0,5.747644,1 +11,1,0,1,3,127158,0,8062.035,62.58316,1,13,1,95.63924,79.23687,0,0,0,174.8761,0,0,0,22,0,1,80,26.1,0,,0,0,0,0,0,0,0,0,0,1,0,0,73.09361,8.995046,0,5.164078,1 +11,1,0,0,1,127174,0,10403.23,13.7577,1,12,1,51.82568,15.08834,0,0,0,66.91402,0,0,0,6,0,8,74.36826,13.73189,0,,0,60,1,1,2.079442,4.094345,0,0,0,0,0,0,83.22755,9.249968,2.079442,4.203408,1 +11,1,0,0,2,127174,0,10403.23,14.7577,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,83.22755,9.249968,1.94591,,0 +11,1,0,0,3,127174,0,10403.23,15.7577,1,12,1,14.25061,0,2.457002,0,0,16.70762,0,0,0,1,0,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,83.22755,9.249968,1.94591,2.815865,1 +11,1,0,0,4,127174,0,10403.23,16.7577,1,12,1,5.925251,0,0,0,0,5.925251,0,0,0,1,0,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,83.22755,9.249968,1.94591,1.779223,1 +11,1,0,0,5,127174,0,10403.23,17.7577,1,12,1,16.88203,2.755315,0,0,0,19.63735,0,0,0,1,0,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,83.22755,9.249968,1.94591,2.977433,1 +11,1,0,0,1,127175,0,10403.23,16.30938,0,12,1,34.74676,3.533569,36.9258,0,0,75.20612,0,0,0,4,1,8,80,0,0,,0,60,1,0,2.079442,4.094345,0,0,0,0,0,0,79.33826,9.249968,2.079442,4.320233,1 +11,1,0,0,2,127175,0,10403.23,17.30938,0,12,1,28.57143,9.105122,0,0,0,37.67655,0,0,0,3,0,7,80,0,0,,0,60,1,0,1.94591,4.094345,0,0,0,0,0,0,79.33826,9.249968,1.94591,3.629038,1 +11,1,0,0,3,127175,0,10403.23,18.30938,0,12,1,12.53071,3.710074,0,0,0,16.24079,0,0,0,1,0,7,80,0,0,,0,60,0,0,1.94591,4.094345,0,0,0,0,0,0,79.33826,9.249968,1.94591,2.787526,1 +11,1,0,0,4,127175,0,10403.23,19.30938,0,12,1,49.64449,3.755697,0,0,0,53.40018,0,0,0,3,0,7,80,0,0,,0,60,0,0,1.94591,4.094345,0,0,0,0,0,0,79.33826,9.249968,1.94591,3.977814,1 +11,1,0,0,5,127175,0,10403.23,20.30938,0,12,1,138.1826,3.989162,0,0,0,142.1717,0,0,0,5,0,7,80,0,0,,0,60,0,0,1.94591,4.094345,0,0,0,0,0,0,79.33826,9.249968,1.94591,4.957036,1 +11,1,0,0,1,127176,0,10403.23,17.25667,0,12,1,83.53946,4.941107,0,0,0,88.48057,0,0,0,5,1,8,92.2,0,0,,0,60,1,0,2.079442,4.094345,0,0,0,0,0,0,79.33826,9.249968,2.079442,4.482783,1 +11,1,0,0,2,127176,0,10403.23,18.25667,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,92.2,0,0,,0,60,0,0,1.94591,4.094345,0,0,0,0,0,0,79.33826,9.249968,1.94591,,0 +11,1,0,0,3,127176,0,10403.23,19.25667,0,12,1,8.353808,3.012285,0,0,0,11.36609,0,0,0,1,0,7,92.2,0,0,,0,60,0,0,1.94591,4.094345,0,0,0,0,0,0,79.33826,9.249968,1.94591,2.430635,1 +11,1,0,0,4,127176,0,10403.23,20.25667,0,12,1,5.925251,7.452142,0,0,0,13.37739,0,0,0,1,0,7,92.2,0,0,,0,60,0,0,1.94591,4.094345,0,0,0,0,0,0,79.33826,9.249968,1.94591,2.593566,1 +11,1,0,0,5,127176,0,10403.23,21.25667,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,92.2,0,0,,0,60,0,0,1.94591,4.094345,0,0,0,0,0,0,79.33826,9.249968,1.94591,,0 +11,1,0,0,1,127177,0,10403.23,41.25941,0,17,.8876712,176.119,1.766784,0,0,0,177.8857,0,0,0,6,0,8,81.1,13,0,,0,60,0,0,2.079442,4.094345,0,0,0,0,0,0,76.12859,9.249968,2.079442,5.181141,1 +11,1,0,0,1,127178,0,10403.23,6.485969,1,12,1,8.833922,0,0,0,0,8.833922,0,0,0,0,1,8,74.36826,13.73189,0,,0,60,1,1,2.079442,4.094345,0,0,0,0,0,0,83.22755,9.249968,2.079442,2.178599,1 +11,1,0,0,2,127178,0,10403.23,7.485969,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,83.22755,9.249968,1.94591,,0 +11,1,0,0,3,127178,0,10403.23,8.485969,1,12,1,8.353808,0,0,0,0,8.353808,0,0,0,0,1,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,83.22755,9.249968,1.94591,2.122718,1 +11,1,0,0,4,127178,0,10403.23,9.485969,1,12,1,20.96627,4.175023,0,0,0,25.14129,0,0,0,3,0,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,83.22755,9.249968,1.94591,3.224512,1 +11,1,0,0,5,127178,0,10403.23,10.48597,1,12,1,74.19759,8.69529,0,0,0,82.89288,0,0,0,6,1,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,83.22755,9.249968,1.94591,4.417549,1 +11,1,0,0,1,127179,0,10403.23,10.9514,1,12,1,14.7232,0,0,0,0,14.7232,0,0,0,1,1,8,74.36826,13.73189,0,,0,60,1,1,2.079442,4.094345,0,0,0,0,0,0,83.22755,9.249968,2.079442,2.689425,1 +11,1,0,0,2,127179,0,10403.23,11.9514,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,83.22755,9.249968,1.94591,,0 +11,1,0,0,3,127179,0,10403.23,12.9514,1,12,1,12.53071,0,0,0,0,12.53071,0,0,0,1,0,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,83.22755,9.249968,1.94591,2.528183,1 +11,1,0,0,4,127179,0,10403.23,13.9514,1,12,1,36.69098,4.453054,0,0,0,41.14403,0,0,0,2,0,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,83.22755,9.249968,1.94591,3.717079,1 +11,1,0,0,5,127179,0,10403.23,14.9514,1,12,1,41.89246,3.397249,0,0,0,45.2897,0,0,0,3,1,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,83.22755,9.249968,1.94591,3.81308,1 +11,1,0,0,1,127180,0,10403.23,5.045859,1,12,1,27.67962,7.579505,0,0,0,35.25913,0,0,0,2,1,8,74.36826,13.73189,0,,0,60,1,1,2.079442,4.094345,0,0,0,0,0,0,79.79594,9.249968,2.079442,3.562724,1 +11,1,0,0,2,127180,0,10403.23,6.045859,1,12,1,9.703504,6.938005,0,0,0,16.64151,0,0,0,2,0,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,79.79594,9.249968,1.94591,2.8119,1 +11,1,0,0,3,127180,0,10403.23,7.045859,1,12,1,17.19902,1.371007,0,0,0,18.57002,0,0,0,1,1,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,79.79594,9.249968,1.94591,2.921549,1 +11,1,0,0,4,127180,0,10403.23,8.045859,1,12,1,25.52416,6.540565,0,0,0,32.06472,0,0,0,4,0,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,79.79594,9.249968,1.94591,3.467756,1 +11,1,0,0,5,127180,0,10403.23,9.045859,1,12,1,13.33889,2.067528,0,0,0,15.40642,0,0,0,1,1,7,74.36826,13.73189,0,,0,60,1,1,1.94591,4.094345,0,0,0,0,0,0,79.79594,9.249968,1.94591,2.734784,1 +11,1,0,0,1,127182,0,10403.23,42.16564,1,12,1,26.50177,17.54417,24.6172,0,0,68.66313,0,0,0,1,1,8,84.2,13,0,,0,60,0,0,2.079442,4.094345,0,0,0,0,0,0,77.33669,9.249968,2.079442,4.229212,1 +11,1,0,0,2,127182,0,10403.23,43.16564,1,12,1,5.929919,9.681941,0,0,0,15.61186,0,0,0,1,0,7,84.2,13,0,,0,60,0,0,1.94591,4.094345,0,0,0,0,0,0,77.33669,9.249968,1.94591,2.748031,1 +11,1,0,0,3,127182,0,10403.23,44.16564,1,12,1,46.92875,25.14496,34.40786,0,0,106.4816,0,0,0,4,1,7,84.2,13,0,,0,60,0,0,1.94591,4.094345,0,0,0,0,0,0,77.33669,9.249968,1.94591,4.667972,1 +11,1,0,0,4,127182,0,10403.23,45.16564,1,12,1,11.8505,17.41112,0,0,0,29.26162,0,0,0,2,0,7,84.2,13,0,,0,60,0,0,1.94591,4.094345,0,0,0,0,0,0,77.33669,9.249968,1.94591,3.376277,1 +11,1,0,0,5,127182,0,10403.23,46.16564,1,12,1,77.32388,33.23885,27.44477,0,0,138.0075,0,0,0,5,1,7,84.2,13,0,,0,60,0,0,1.94591,4.094345,0,0,0,0,0,0,77.33669,9.249968,1.94591,4.927308,1 +1,1,0,1,1,127199,0,8439.206,38.84737,0,11,1,74.20495,6.478209,0,0,0,80.68316,0,0,0,14,0,2,97.9,21.7,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,68.78981,9.040762,.6931472,4.39053,1 +1,1,0,1,2,127199,0,8439.206,39.84737,0,11,1,90.97035,3.045822,0,0,0,94.01617,0,0,0,4,0,2,97.9,21.7,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,68.78981,9.040762,.6931472,4.543467,1 +1,1,0,1,3,127199,0,8439.206,40.84737,0,11,1,83.04668,13.91646,31.76904,0,637.5676,766.2997,1,0,0,11,1,2,97.9,21.7,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,68.78981,9.040762,.6931472,6.641573,1 +1,1,0,1,4,127199,0,8439.206,41.84737,0,11,1,81.77302,5.64722,0,0,13.67366,101.0939,0,0,0,13,0,2,97.9,21.7,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,68.78981,9.040762,.6931472,4.61605,1 +1,1,0,1,5,127199,0,8439.206,42.84737,0,11,1,142.7678,30.80867,0,0,0,173.5765,0,0,0,12,0,2,97.9,21.7,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,68.78981,9.040762,.6931472,5.156619,1 +1,1,0,1,1,127200,0,8439.206,42.18207,1,12,1,182.5677,30.06478,0,0,634.8233,847.4558,1,0,0,24,0,2,89.5,4.3,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,70.85607,9.040762,.6931472,6.742239,1 +1,1,0,1,2,127200,0,8439.206,43.18207,1,12,1,228.1671,29.54717,21.78437,0,0,279.4987,0,0,0,12,1,2,89.5,4.3,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,70.85607,9.040762,.6931472,5.632998,1 +1,1,0,1,3,127200,0,8439.206,44.18207,1,12,1,176.1671,53.73464,38.25553,0,1246.246,1514.403,1,0,0,18,0,2,89.5,4.3,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,70.85607,9.040762,.6931472,7.322776,1 +1,1,0,1,4,127200,0,8439.206,45.18207,1,12,1,173.1996,76.36281,0,0,2648.706,2898.268,2,0,0,19,0,2,89.5,4.3,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,70.85607,9.040762,.6931472,7.971869,1 +1,1,0,1,5,127200,0,8439.206,46.18207,1,12,1,145.6232,143.4181,44.73948,0,442.0175,775.7983,1,0,0,18,0,2,89.5,4.3,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,70.85607,9.040762,.6931472,6.653893,1 +10,1,50,0,1,127204,0,3783.499,58.65572,1,12,1,41.22497,8.892815,0,0,0,50.11779,0,0,0,5,0,1,52.6,30.4,1,,0,0,0,0,0,0,0,3.931826,0,1,0,0,65.2276,8.238668,0,3.914376,1 +10,1,50,0,2,127204,0,3783.499,59.65572,1,12,1,499.6765,33.69272,0,0,0,533.3693,0,0,0,23,0,1,52.6,30.4,1,,0,0,0,0,0,0,0,3.931826,0,1,0,0,65.2276,8.238668,0,6.279214,1 +10,1,50,0,3,127204,0,3783.499,60.65572,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,52.6,30.4,1,,0,0,0,0,0,0,0,3.931826,0,1,0,0,65.2276,8.238668,0,,0 +10,1,50,1,1,127205,0,3455.335,26.43942,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,53.7,34.8,1,,1000,0,0,0,0,0,0,3.931826,7.600903,1,0,0,66.19184,8.147964,0,,0 +10,1,50,1,2,127205,0,3455.335,27.43942,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,53.7,34.8,1,,1000,0,0,0,0,0,0,3.931826,7.600903,1,0,0,66.19184,8.147964,0,,0 +10,1,50,1,3,127205,0,3455.335,28.43942,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,53.7,34.8,1,,1000,0,0,0,0,0,0,3.931826,7.600903,1,0,0,66.19184,8.147964,0,,0 +1,1,0,0,1,127206,0,7291.563,28.61054,1,12,1,106.8905,16.87279,0,0,825.4182,949.1814,1,0,0,6,0,4,76.3,13.73189,0,,450,374,0,0,1.386294,5.924256,1,0,0,1,0,0,71.54827,8.89461,1.386294,6.8556,1 +1,1,0,0,2,127206,0,7291.563,29.61054,1,12,1,7.008086,.5390835,0,0,0,7.54717,0,0,0,1,0,4,76.3,13.73189,0,,450,374,0,0,1.386294,5.924256,1,0,0,1,0,0,71.54827,8.89461,1.386294,2.021173,1 +1,1,0,0,3,127206,0,7291.563,30.61054,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.3,13.73189,0,,450,374,0,0,1.386294,5.924256,1,0,0,1,0,0,71.54827,8.89461,1.386294,,0 +1,1,0,0,1,127207,0,7291.563,29.08419,0,16,1,0,2.267373,0,0,0,2.267373,0,0,0,0,0,4,86.3,13.73189,0,,450,374,0,0,1.386294,5.924256,1,0,0,0,0,0,78.51466,8.89461,1.386294,.8186221,1 +1,1,0,0,2,127207,0,7291.563,30.08419,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,86.3,13.73189,0,,450,374,0,0,1.386294,5.924256,1,0,0,0,0,0,78.51466,8.89461,1.386294,,0 +1,1,0,0,3,127207,0,7291.563,31.08419,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,86.3,13.73189,0,,450,374,0,0,1.386294,5.924256,1,0,0,0,0,0,78.51466,8.89461,1.386294,,0 +1,1,0,0,1,127208,0,7291.563,1.609856,0,12,1,24.14605,7.302709,0,0,0,31.44876,0,0,0,3,0,4,74.36826,13.73189,0,,450,374,1,0,1.386294,5.924256,1,0,0,0,0,0,79.29922,8.89461,1.386294,3.44836,1 +1,1,0,0,2,127208,0,7291.563,2.609856,0,12,1,29.46092,4.25876,0,0,0,33.71968,0,0,0,3,0,4,74.36826,13.73189,0,,450,374,1,0,1.386294,5.924256,1,0,0,0,0,0,79.29922,8.89461,1.386294,3.518082,1 +1,1,0,0,3,127208,0,7291.563,3.609856,0,12,1,25.06142,8.280098,0,0,0,33.34152,0,0,0,3,0,4,74.36826,13.73189,0,,450,374,1,0,1.386294,5.924256,1,0,0,0,0,0,79.29922,8.89461,1.386294,3.506804,1 +1,1,0,0,1,127209,0,7291.563,4.191649,0,12,1,22.9682,2.090695,0,0,0,25.05889,0,0,0,2,0,4,74.36826,13.73189,0,,450,374,1,0,1.386294,5.924256,1,0,0,0,0,0,78.32853,8.89461,1.386294,3.221229,1 +1,1,0,0,2,127209,0,7291.563,5.191649,0,12,1,9.16442,0,0,0,0,9.16442,0,0,0,1,0,4,74.36826,13.73189,0,,450,374,1,0,1.386294,5.924256,1,0,0,0,0,0,78.32853,8.89461,1.386294,2.215329,1 +1,1,0,0,3,127209,0,7291.563,6.191649,0,12,1,8.845209,4.864865,0,0,0,13.71007,0,0,0,1,0,4,74.36826,13.73189,0,,450,374,1,0,1.386294,5.924256,1,0,0,0,0,0,78.32853,8.89461,1.386294,2.618131,1 +11,1,0,1,1,127217,0,4460.298,56.08487,1,16,1,834.5112,125.4358,286.0718,0,1492.156,2738.174,1,0,0,1,106,1,61.1,21.7,1,,0,0,0,0,0,0,0,0,0,0,0,1,47.66432,8.403195,0,7.915047,1 +11,1,0,1,2,127217,0,4460.298,57.08487,1,16,1,430.1887,142.5067,90.66846,0,0,663.3639,0,0,0,5,38,1,61.1,21.7,1,,0,0,0,0,0,0,0,0,0,0,0,1,47.66432,8.403195,0,6.497324,1 +11,1,0,1,3,127217,0,4460.298,58.08487,1,16,1,457.4939,49.43489,467.7985,0,1704.619,2679.346,1,0,0,3,16,1,61.1,21.7,1,,0,0,0,0,0,0,0,0,0,0,0,1,47.66432,8.403195,0,7.893328,1 +11,1,0,1,4,127217,0,4460.298,59.08487,1,16,1,515.041,0,114.608,0,9089.563,9719.212,3,0,0,9,6,1,61.1,21.7,1,,0,0,0,0,0,0,0,0,0,0,0,1,47.66432,8.403195,0,9.18186,1 +11,1,0,1,5,127217,0,4460.298,60.08487,1,16,1,312.8387,0,180.5544,208.4202,6626.84,7120.233,2,0,10,4,0,1,61.1,21.7,1,,0,0,0,0,0,0,0,0,0,0,0,1,47.66432,8.403195,0,8.870696,1 +11,1,0,1,1,127219,0,5075.062,21.22108,1,13,1,96.10312,29.09472,32.57794,0,0,157.7758,0,0,0,7,0,2,70.5,13,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,65.88802,8.532291,.6931472,5.061175,1 +11,1,0,1,2,127219,0,5075.062,22.22108,1,13,1,74.75356,37.21249,0,0,0,111.966,0,0,0,9,0,2,70.5,13,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,65.88802,8.532291,.6931472,4.718196,1 +11,1,0,1,3,127219,0,5075.062,23.22108,1,13,1,33.66584,13.31671,3.566085,0,1794.175,1844.723,1,0,0,1,0,2,70.5,13,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,65.88802,8.532291,.6931472,7.520084,1 +11,1,0,1,4,127219,0,5075.062,24.22108,1,13,1,39.18856,9.930843,4.329184,0,0,53.44859,0,0,0,4,0,3,70.5,13,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,65.88802,8.532291,1.098612,3.97872,1 +11,1,0,1,5,127219,0,5075.062,25.22108,1,13,1,71.43462,27.57512,0,0,900.3851,999.3948,1,0,0,1,0,3,70.5,13,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,65.88802,8.532291,1.098612,6.90715,1 +11,1,0,1,1,127220,0,5075.062,23.34839,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,90.5,4.3,0,,0,0,0,0,.6931472,0,0,0,0,0,0,0,77.43843,8.532291,.6931472,,0 +11,1,0,1,2,127220,0,5075.062,24.34839,0,12,1,6.024096,3.012048,0,0,0,9.036144,0,0,0,1,0,2,90.5,4.3,0,,0,0,0,0,.6931472,0,0,0,0,0,0,0,77.43843,8.532291,.6931472,2.201233,1 +11,1,0,1,3,127220,0,5075.062,25.34839,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,90.5,4.3,0,,0,0,0,0,.6931472,0,0,0,0,0,0,0,77.43843,8.532291,.6931472,,0 +11,1,0,1,4,127220,0,5075.062,26.34839,0,12,1,4.61042,10.83449,0,0,0,15.44491,0,0,0,1,0,3,90.5,4.3,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.43843,8.532291,1.098612,2.737279,1 +11,1,0,1,5,127220,0,5075.062,27.34839,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,90.5,4.3,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.43843,8.532291,1.098612,,0 +3,1,100,0,1,127222,0,2485.112,56.53114,1,11,1,180.5065,83.48646,37.63251,0,1603.139,1904.764,2,0,0,13,0,1,46.3,13.73189,1,,562,562,0,0,0,6.331502,1,0,0,1,0,0,61.29097,7.818475,0,7.552114,1 +3,1,100,0,2,127222,0,2485.112,57.53114,1,11,1,0,19.6496,0,0,0,19.6496,0,0,0,0,0,1,46.3,13.73189,1,,562,562,0,0,0,6.331502,1,0,0,1,0,0,61.29097,7.818475,0,2.978057,1 +3,1,100,0,3,127222,0,2485.112,58.53114,1,11,1,235.6658,89.30713,0,0,482.5897,807.5627,1,0,0,7,1,1,46.3,13.73189,1,,562,562,0,0,0,6.331502,1,0,0,1,0,0,61.29097,7.818475,0,6.694021,1 +3,1,100,0,4,127222,0,2485.112,59.53114,1,11,1,231.8824,72.08295,202.9353,0,297.7211,804.6217,1,0,0,12,0,1,46.3,13.73189,1,,562,562,0,0,0,6.331502,1,0,0,1,0,0,61.29097,7.818475,0,6.690372,1 +3,1,100,0,5,127222,0,2485.112,60.53114,1,11,1,302.8345,81.74239,0,0,0,384.5769,0,0,0,15,7,1,46.3,13.73189,1,,562,562,0,0,0,6.331502,1,0,0,1,0,0,61.29097,7.818475,0,5.952144,1 +1,1,0,1,1,127229,0,3681.762,55.59753,1,12,1,0,4.842356,0,0,0,4.842356,0,0,0,0,0,1,55.8,13,1,,150,222,0,0,0,5.402678,1,0,0,1,0,0,65.05453,8.211418,0,1.577401,1 +1,1,0,1,2,127229,0,3681.762,56.59753,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,55.8,13,1,,150,222,0,0,0,5.402678,1,0,0,1,0,0,65.05453,8.211418,0,,0 +1,1,0,1,3,127229,0,3681.762,57.59753,1,12,1,3.964321,0,15.60951,0,0,19.57384,0,0,0,1,0,1,55.8,13,1,,150,222,0,0,0,5.402678,1,0,0,1,0,0,65.05453,8.211418,0,2.974194,1 +1,1,0,1,4,127229,0,3681.762,58.59753,1,12,1,253.6255,2.257916,0,0,0,255.8834,0,0,0,4,0,1,55.8,13,1,,150,222,0,0,0,5.402678,1,0,0,1,0,0,65.05453,8.211418,0,5.544722,1 +1,1,0,1,5,127229,0,3681.762,59.59753,1,12,1,29.44888,28.78418,26.92469,0,844.1818,929.3395,1,0,0,3,1,1,55.8,13,1,,150,222,0,0,0,5.402678,1,0,0,1,0,0,65.05453,8.211418,0,6.834474,1 +4,1,100,0,1,127230,0,5570.099,14.67488,1,12,1,13.78897,2.014389,36.33693,0,0,52.14029,0,0,0,2,0,3,85,13.73189,0,,749,749,1,1,1.098612,6.618739,1,0,0,1,0,0,68.3137,8.625348,1.098612,3.953938,1 +4,1,100,0,1,127231,0,5570.099,37.20192,1,12,1,36.57074,1.7506,37.6199,0,0,75.94125,0,0,0,3,1,3,76.3,13.73189,0,,749,749,0,0,1.098612,6.618739,1,0,0,1,0,0,71.75487,8.625348,1.098612,4.32996,1 +4,1,100,0,2,127231,0,5570.099,38.20192,1,12,1,486.2267,23.44469,13.73494,0,0,523.4064,0,0,0,11,0,2,76.3,13.73189,0,,749,749,0,0,.6931472,6.618739,1,0,0,1,0,0,71.75487,8.625348,.6931472,6.260358,1 +4,1,100,0,3,127231,0,5570.099,39.20192,1,12,1,26.18454,2.543641,23.97506,0,822.2593,874.9626,1,0,0,3,1,2,76.3,13.73189,0,,749,749,0,0,.6931472,6.618739,1,0,0,1,0,0,71.75487,8.625348,.6931472,6.774181,1 +4,1,100,0,4,127231,0,5570.099,40.20192,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,76.3,13.73189,0,,749,749,0,0,.6931472,6.618739,1,0,0,1,0,0,71.75487,8.625348,.6931472,,0 +4,1,100,0,5,127231,0,5570.099,41.20192,1,12,1,77.86712,0,3.343208,0,0,81.21033,0,0,0,4,0,2,76.3,13.73189,0,,749,749,0,0,.6931472,6.618739,1,0,0,1,0,0,71.75487,8.625348,.6931472,4.397042,1 +4,1,100,0,1,127232,0,5570.099,16.08487,1,12,1,93.89088,19.2506,36.57074,0,0,149.7122,0,0,0,8,1,3,26.3,13.73189,0,,749,749,1,1,1.098612,6.618739,1,0,0,1,0,0,68.3137,8.625348,1.098612,5.008715,1 +4,1,100,0,2,127232,0,5570.099,17.08487,1,12,1,23.00109,4.211391,0,0,599.9178,627.1303,1,0,0,1,0,2,26.3,13.73189,0,,749,749,1,1,.6931472,6.618739,1,0,0,1,0,0,68.3137,8.625348,.6931472,6.441154,1 +4,1,100,0,3,127232,0,5570.099,18.08487,1,12,1,4.987531,3.63591,0,0,0,8.623442,0,0,0,1,0,2,26.3,13.73189,0,,749,749,0,0,.6931472,6.618739,1,0,0,1,0,0,68.3137,8.625348,.6931472,2.154484,1 +4,1,100,0,4,127232,0,5570.099,19.08487,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,26.3,13.73189,0,,749,749,0,0,.6931472,6.618739,1,0,0,1,0,0,68.3137,8.625348,.6931472,,0 +4,1,100,0,5,127232,0,5570.099,20.08487,1,12,1,31.78163,0,0,0,665.912,697.6936,1,0,0,1,0,2,26.3,13.73189,0,,749,749,0,0,.6931472,6.618739,1,0,0,1,0,0,68.3137,8.625348,.6931472,6.54778,1 +8,1,50,1,1,127238,0,5155.707,51.30458,1,15,1,16.18705,0,0,0,0,16.18705,0,0,0,2,0,1,93.3,13,0,,389,389,0,0,0,5.963579,0,3.931826,6.656726,0,0,0,78.97939,8.548054,0,2.784212,1 +8,1,50,1,2,127238,0,5155.707,52.30458,1,15,1,52.30011,0,0,0,0,52.30011,0,0,0,1,0,1,93.3,13,0,,389,389,0,0,0,5.963579,0,3.931826,6.656726,0,0,0,78.97939,8.548054,0,3.956999,1 +8,1,50,1,3,127238,0,5155.707,53.30458,1,15,1,14.96259,0,36.73317,0,0,51.69576,0,0,0,1,0,1,93.3,13,0,,389,389,0,0,0,5.963579,0,3.931826,6.656726,0,0,0,78.97939,8.548054,0,3.945376,1 +11,1,0,0,1,127241,0,4911.911,23.44148,0,16,1,88.12949,0,45.67146,0,0,133.801,0,0,0,2,1,1,82.5,13.73189,0,,0,0,0,0,0,0,0,0,0,0,0,0,77.1768,8.499621,0,4.896353,1 +11,1,0,0,2,127241,0,4911.911,24.44148,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,82.5,13.73189,0,,0,0,0,0,0,0,0,0,0,0,0,0,77.1768,8.499621,0,,0 +11,1,0,0,3,127241,0,4911.911,25.44148,0,16,1,8.977556,0,37.00748,0,0,45.98504,0,0,0,0,1,1,82.5,13.73189,0,,0,0,0,0,0,0,0,0,0,0,0,0,77.1768,8.499621,0,3.828316,1 +11,1,0,1,1,127244,0,15527.12,18.00958,0,12.32507,1,28.94582,6.613663,23.02709,0,0,58.58657,0,0,0,1,2,10,70.5,8.7,0,,0,0,0,0,2.302585,0,0,0,0,0,0,0,77.83328,9.650408,2.302585,4.070506,1 +11,1,0,1,1,127245,0,15527.12,16.33402,0,12,1,70.67138,7.21437,23.11543,0,0,101.0012,0,0,0,3,3,10,80,4.3,0,,0,0,1,0,2.302585,0,0,0,0,0,0,0,80.35947,9.650408,2.302585,4.615132,1 +11,1,0,1,2,127245,0,15527.12,17.33402,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,80,4.3,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,80.35947,9.650408,2.079442,,0 +11,1,0,1,3,127245,0,15527.12,18.33402,0,12,1,28.34889,2.211302,28.24079,0,0,58.80098,0,0,0,2,1,8,80,4.3,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,80.35947,9.650408,2.079442,4.074159,1 +11,1,0,1,4,127245,0,15527.12,19.33402,0,12,1,19.59891,7.201458,0,0,0,26.80037,0,0,0,2,0,8,80,4.3,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,80.35947,9.650408,2.079442,3.288415,1 +11,1,0,1,5,127245,0,15527.12,20.33402,0,12,1,50.43768,6.71113,25.70238,0,0,82.85119,0,0,0,2,1,8,80,4.3,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,80.35947,9.650408,2.079442,4.417046,1 +11,1,0,1,1,127246,0,15527.12,14.9514,0,12,1,49.46996,60.03534,92.66785,0,0,202.1731,0,0,0,5,2,10,82.1,13,0,,0,0,1,0,2.302585,0,0,0,0,0,0,0,75.09638,9.650408,2.302585,5.309124,1 +11,1,0,1,2,127246,0,15527.12,15.9514,0,12,1,45.8221,48.95957,69.77898,0,0,164.5607,0,0,0,7,0,8,82.1,13,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,75.09638,9.650408,2.079442,5.103279,1 +11,1,0,1,3,127246,0,15527.12,16.9514,0,12,1,28.00983,50.78133,98.86978,0,0,177.6609,0,0,0,3,1,8,82.1,13,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,75.09638,9.650408,2.079442,5.179877,1 +11,1,0,1,4,127246,0,15527.12,17.9514,0,12,1,25.97995,34.50775,54.37101,0,0,114.8587,0,0,0,1,0,8,82.1,13,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,75.09638,9.650408,2.079442,4.743703,1 +11,1,0,1,5,127246,0,15527.12,18.9514,0,12,1,1684.869,69.70821,95.03543,0,8297.091,10146.7,2,0,0,14,0,8,82.1,13,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,75.09638,9.650408,2.079442,9.224904,1 +11,1,0,1,1,127247,0,15527.12,11.41136,0,12,1,22.37927,0,0,0,0,22.37927,0,0,0,0,1,10,74.36826,13.73189,0,,0,0,1,0,2.302585,0,0,0,0,0,0,0,84.97813,9.650408,2.302585,3.108135,1 +11,1,0,1,2,127247,0,15527.12,12.41136,0,12,1,7.54717,7.061995,0,0,0,14.60916,0,0,0,2,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,84.97813,9.650408,2.079442,2.681649,1 +11,1,0,1,3,127247,0,15527.12,13.41136,0,12,1,23.9312,5.724816,0,0,0,29.65602,0,0,0,3,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,84.97813,9.650408,2.079442,3.389665,1 +11,1,0,1,4,127247,0,15527.12,14.41136,0,12,1,77.25616,29.46673,0,0,0,106.7229,0,0,0,6,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,84.97813,9.650408,2.079442,4.670236,1 +11,1,0,1,5,127247,0,15527.12,15.41136,0,12,1,18.34097,3.939141,0,0,0,22.28012,0,0,0,2,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,84.97813,9.650408,2.079442,3.103695,1 +11,1,0,1,1,127248,0,15527.12,13.37988,0,12,1,8.244994,10.24735,0,0,0,18.49234,0,0,0,1,0,10,74.36826,13.73189,0,,0,0,1,0,2.302585,0,0,0,0,0,0,0,84.97813,9.650408,2.302585,2.917357,1 +11,1,0,1,2,127248,0,15527.12,14.37988,0,12,1,60.37736,21.67116,12.93801,0,0,94.98653,0,0,0,5,1,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,84.97813,9.650408,2.079442,4.553735,1 +11,1,0,1,3,127248,0,15527.12,15.37988,0,12,1,52.08845,0,0,0,0,52.08845,0,0,0,3,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,84.97813,9.650408,2.079442,3.952943,1 +11,1,0,1,4,127248,0,15527.12,16.37988,0,12,1,21.87785,13.53692,0,0,0,35.41477,0,0,0,4,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,84.97813,9.650408,2.079442,3.567129,1 +11,1,0,1,5,127248,0,15527.12,17.37988,0,12,1,31.67987,10.29596,0,0,0,41.97582,0,0,0,3,1,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,0,0,0,0,0,0,84.97813,9.650408,2.079442,3.737094,1 +11,1,0,1,1,127249,0,15527.12,43.93977,1,12,1,59.48174,2.226148,37.53828,0,0,99.24617,0,0,0,3,2,10,89.5,26.1,0,,0,0,0,0,2.302585,0,0,0,0,0,0,0,77.41725,9.650408,2.302585,4.597603,1 +11,1,0,1,2,127249,0,15527.12,44.93977,1,12,1,24.79784,2.264151,0,0,0,27.06199,0,0,0,3,0,8,89.5,26.1,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,77.41725,9.650408,2.079442,3.29813,1 +11,1,0,1,3,127249,0,15527.12,45.93977,1,12,1,76.65848,2.407862,42.32433,0,0,121.3907,0,0,0,6,1,8,89.5,26.1,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,77.41725,9.650408,2.079442,4.799014,1 +11,1,0,1,4,127249,0,15527.12,46.93977,1,12,1,75.68369,24.49863,0,0,0,100.1823,0,0,0,8,1,8,89.5,26.1,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,77.41725,9.650408,2.079442,4.606992,1 +11,1,0,1,5,127249,0,15527.12,47.93977,1,12,1,50.85452,0,41.10046,0,0,91.95498,0,0,0,5,1,8,89.5,26.1,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,77.41725,9.650408,2.079442,4.521299,1 +11,1,0,1,1,127250,0,15527.12,46.24504,0,12,1,26.50177,10.36514,28.41578,0,0,65.28268,0,0,0,1,2,10,87.4,21.7,0,,0,0,0,0,2.302585,0,0,0,0,0,0,0,76.73125,9.650408,2.302585,4.178727,1 +11,1,0,1,2,127250,0,15527.12,47.24504,0,12,1,79.24529,12.18329,0,0,0,91.42857,0,0,0,3,0,8,87.4,21.7,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,76.73125,9.650408,2.079442,4.515558,1 +11,1,0,1,3,127250,0,15527.12,48.24504,0,12,1,124.8157,51.03194,0,0,0,175.8477,0,0,0,9,0,8,87.4,21.7,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,76.73125,9.650408,2.079442,5.169618,1 +11,1,0,1,4,127250,0,15527.12,49.24504,0,12,1,31.9052,70.98906,0,0,0,102.8943,0,0,0,4,0,8,87.4,21.7,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,76.73125,9.650408,2.079442,4.633702,1 +11,1,0,1,5,127250,0,15527.12,50.24504,0,12,1,52.10505,60.40017,39.57899,0,0,152.0842,0,0,0,6,1,8,87.4,21.7,0,,0,0,0,0,2.079442,0,0,0,0,0,0,0,76.73125,9.650408,2.079442,5.024434,1 +11,1,0,1,1,127251,0,15527.12,3.915127,1,12,1,5.889281,27.53239,0,0,0,33.42167,0,0,0,1,0,10,74.36826,13.73189,0,,0,0,1,1,2.302585,0,0,0,0,0,0,0,81.03252,9.650408,2.302585,3.509205,1 +11,1,0,1,2,127251,0,15527.12,4.915127,1,12,1,17.78976,13.45014,0,0,353.0728,384.3127,1,0,0,3,0,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,81.03252,9.650408,2.079442,5.951457,1 +11,1,0,1,3,127251,0,15527.12,5.915127,1,12,1,6.879607,0,0,0,0,6.879607,0,0,0,1,0,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,81.03252,9.650408,2.079442,1.928561,1 +11,1,0,1,4,127251,0,15527.12,6.915127,1,12,1,5.925251,14.15223,0,0,0,20.07748,0,0,0,1,0,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,81.03252,9.650408,2.079442,2.999599,1 +11,1,0,1,5,127251,0,15527.12,7.915127,1,12,1,51.47978,17.15298,0,0,0,68.63277,0,0,0,6,1,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,81.03252,9.650408,2.079442,4.22877,1 +11,1,0,1,1,127252,0,15527.12,19.70157,1,13,1,20.31802,2.120141,11.69611,0,0,34.13428,0,0,0,1,2,10,84.2,13,0,,0,0,0,0,2.302585,0,0,0,0,0,0,0,78.72446,9.650408,2.302585,3.530302,1 +11,1,0,1,1,127253,0,15527.12,.881588,1,12,1,23.85159,25.17668,0,0,0,49.02827,0,0,0,3,0,10,74.36826,13.73189,0,,0,0,1,1,2.302585,0,0,0,0,0,0,0,81.03252,9.650408,2.302585,3.892397,1 +11,1,0,1,2,127253,0,15527.12,1.881588,1,12,1,27.7628,22.74933,0,0,0,50.51213,0,0,0,5,0,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,81.03252,9.650408,2.079442,3.922214,1 +11,1,0,1,3,127253,0,15527.12,2.881588,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,81.03252,9.650408,2.079442,,0 +11,1,0,1,4,127253,0,15527.12,3.881588,1,12,1,51.95989,52.66636,0,0,0,104.6263,0,0,0,10,0,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,81.03252,9.650408,2.079442,4.650394,1 +11,1,0,1,5,127253,0,15527.12,4.881588,1,12,1,254.2726,122.9054,0,0,0,377.178,0,0,0,51,1,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,0,0,0,0,0,0,81.03252,9.650408,2.079442,5.932717,1 +3,1,100,1,1,127297,0,2896.791,6.773443,0,14,1,20.02356,0,0,0,0,20.02356,0,0,0,3,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,82.37522,7.971704,1.609438,2.996909,1 +3,1,100,1,2,127297,0,2896.791,7.773443,0,14,1,44.12399,2.668464,30.98652,0,0,77.77898,0,0,0,4,2,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,82.37522,7.971704,1.609438,4.353871,1 +3,1,100,1,3,127297,0,2896.791,8.773443,0,14,1,9.82801,2.447175,15.40541,0,0,27.68059,0,0,0,0,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,82.37522,7.971704,1.609438,3.320731,1 +3,1,100,1,4,127297,0,2896.791,9.773443,0,14,1,95.71559,15.01823,0,0,0,110.7338,0,0,0,6,1,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,82.37522,7.971704,1.386294,4.707129,1 +3,1,100,1,5,127297,0,2896.791,10.77344,0,14,1,81.70071,46.26928,28.49104,0,0,156.461,0,0,0,23,1,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,82.37522,7.971704,1.386294,5.052807,1 +3,1,100,1,1,127298,0,2896.791,41.39631,0,14,1,54.77032,90.02945,0,0,0,144.7998,0,0,0,23,0,5,62.1,21.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,73.19926,7.971704,1.609438,4.975352,1 +3,1,100,1,2,127298,0,2896.791,42.39631,0,14,1,68.46362,0,0,0,0,68.46362,0,0,0,12,2,5,62.1,21.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,73.19926,7.971704,1.609438,4.226303,1 +3,1,100,1,3,127298,0,2896.791,43.39631,0,14,1,61.42506,66.82064,0,0,0,128.2457,0,0,0,17,0,5,62.1,21.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,73.19926,7.971704,1.609438,4.853948,1 +3,1,100,1,4,127298,0,2896.791,44.39631,0,14,1,72.47038,40,38.10392,0,0,150.5743,0,0,0,11,1,4,62.1,21.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,73.19926,7.971704,1.386294,5.014457,1 +3,1,100,1,5,127298,0,2896.791,45.39631,0,14,1,98.79116,68.77866,12.08837,0,0,179.6582,0,0,0,13,0,4,62.1,21.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,73.19926,7.971704,1.386294,5.191056,1 +3,1,100,1,1,127299,0,2896.791,36.58316,1,14,1,34.15783,4.652533,25.47703,0,0,64.2874,0,0,0,2,1,5,92.6,13,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,69.37424,7.971704,1.609438,4.163363,1 +3,1,100,1,2,127299,0,2896.791,37.58316,1,14,1,12.39892,0,0,0,0,12.39892,0,0,0,2,0,5,92.6,13,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,69.37424,7.971704,1.609438,2.51761,1 +3,1,100,1,3,127299,0,2896.791,38.58316,1,14,1,6.388206,0,0,0,0,6.388206,0,0,0,1,0,5,92.6,13,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,69.37424,7.971704,1.609438,1.854454,1 +3,1,100,1,4,127299,0,2896.791,39.58316,1,14,1,345.0319,0,27.62534,0,0,372.6573,0,0,0,5,1,4,92.6,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,69.37424,7.971704,1.386294,5.920659,1 +3,1,100,1,5,127299,0,2896.791,40.58316,1,14,1,16.67361,4.614423,0,0,0,21.28804,0,0,0,2,0,4,92.6,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,69.37424,7.971704,1.386294,3.058145,1 +3,1,100,1,1,127300,0,2896.791,11.66324,0,14,1,9.422851,0,0,0,0,9.422851,0,0,0,2,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,82.37522,7.971704,1.609438,2.243138,1 +3,1,100,1,2,127300,0,2896.791,12.66324,0,14,1,13.47709,0,15.21294,0,0,28.69003,0,0,0,2,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,82.37522,7.971704,1.609438,3.35655,1 +3,1,100,1,3,127300,0,2896.791,13.66324,0,14,1,64.71745,2.432432,32.86486,0,0,100.0147,0,0,0,2,2,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,82.37522,7.971704,1.609438,4.605318,1 +3,1,100,1,4,127300,0,2896.791,14.66324,0,14,1,27.34731,4.512306,0,0,0,31.85962,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,82.37522,7.971704,1.386294,3.461339,1 +3,1,100,1,5,127300,0,2896.791,15.66324,0,14,1,47.10296,9.349729,29.62068,0,0,86.07336,0,0,0,5,1,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,82.37522,7.971704,1.386294,4.4552,1 +3,1,100,1,1,127301,0,2896.791,14.59822,0,14,1,45.9364,13.69258,36.9258,0,0,96.55477,0,0,0,4,1,5,78.9,4.3,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,76.82748,7.971704,1.609438,4.57011,1 +3,1,100,1,2,127301,0,2896.791,15.59822,0,14,1,18.32884,28.93262,0,0,0,47.26146,0,0,0,3,0,5,78.9,4.3,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,76.82748,7.971704,1.609438,3.855695,1 +3,1,100,1,3,127301,0,2896.791,16.59822,0,14,1,63.88206,26.3145,31.32678,0,0,121.5233,0,0,0,5,1,5,78.9,4.3,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,76.82748,7.971704,1.609438,4.800107,1 +5,1,25,1,1,127311,0,14820.32,42.91034,0,14,1,0,71.58273,0,0,0,71.58273,0,0,0,0,0,4,73.7,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,64.57561,9.603822,1.386294,4.270854,1 +5,1,25,1,2,127311,0,14820.32,43.91034,0,14,1,13.69113,100.4107,39.32092,0,0,153.4228,0,0,0,0,1,4,73.7,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,64.57561,9.603822,1.386294,5.033197,1 +5,1,25,1,3,127311,0,14820.32,44.91034,0,14,1,94.56359,112.9077,0,0,0,207.4713,0,0,0,5,0,4,73.7,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,64.57561,9.603822,1.386294,5.334993,1 +5,1,25,1,4,127311,0,14820.32,45.91034,0,14,1,10.14292,77.39511,0,0,0,87.53803,0,0,0,1,0,4,73.7,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,64.57561,9.603822,1.386294,4.472074,1 +5,1,25,1,5,127311,0,14820.32,46.91034,0,14,1,35.97122,47.20694,0,0,0,83.17816,0,0,0,5,0,4,73.7,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,64.57561,9.603822,1.386294,4.420985,1 +5,1,25,1,1,127312,0,14820.32,17.10062,0,15,1,26.3789,1.798561,25.28177,0,0,53.45923,0,0,0,1,1,4,78.9,17.4,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.97823,9.603822,1.386294,3.978919,1 +5,1,25,1,2,127312,0,14820.32,18.10062,0,15,1,41.07338,2.190581,0,0,0,43.26397,0,0,0,5,0,4,78.9,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.97823,9.603822,1.386294,3.76732,1 +5,1,25,1,3,127312,0,14820.32,19.10062,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,78.9,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.97823,9.603822,1.386294,,0 +5,1,25,1,4,127312,0,14820.32,20.10062,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,78.9,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.97823,9.603822,1.386294,,0 +5,1,25,1,5,127312,0,14820.32,21.10062,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,78.9,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.97823,9.603822,1.386294,,0 +5,1,25,1,1,127313,0,14820.32,7.244353,1,15,1,11.99041,0,0,0,0,11.99041,0,0,0,0,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.31068,9.603822,1.386294,2.484107,1 +5,1,25,1,2,127313,0,14820.32,8.244353,1,15,1,24.09639,1.09529,31.68675,0,0,56.87842,0,0,0,2,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.31068,9.603822,1.386294,4.040916,1 +5,1,25,1,3,127313,0,14820.32,9.244353,1,15,1,7.481297,0,0,0,0,7.481297,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.31068,9.603822,1.386294,2.012406,1 +5,1,25,1,4,127313,0,14820.32,10.24435,1,15,1,25.81835,5.855233,31.51222,0,0,63.1858,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.31068,9.603822,1.386294,4.14608,1 +5,1,25,1,5,127313,0,14820.32,11.24435,1,15,1,26.23783,0,3.377063,0,0,29.6149,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.31068,9.603822,1.386294,3.388278,1 +5,1,25,1,1,127314,0,14820.32,42.61191,1,15,1,13.18945,0,0,0,0,13.18945,0,0,0,1,0,4,82.1,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.97667,9.603822,1.386294,2.579417,1 +5,1,25,1,2,127314,0,14820.32,43.61191,1,15,1,72.8368,0,36.98248,0,0,109.8193,0,0,0,4,1,4,82.1,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.97667,9.603822,1.386294,4.698836,1 +5,1,25,1,3,127314,0,14820.32,44.61191,1,15,1,128.5287,0,0,0,116.0898,244.6185,1,0,0,1,0,4,82.1,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.97667,9.603822,1.386294,5.4997,1 +5,1,25,1,4,127314,0,14820.32,45.61191,1,15,1,87.59797,5.60166,0,0,0,93.19963,0,0,0,5,0,4,82.1,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.97667,9.603822,1.386294,4.534744,1 +5,1,25,1,5,127314,0,14820.32,46.61191,1,15,1,135.8697,0,0,0,979.3737,1115.243,1,0,0,2,0,4,82.1,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.97667,9.603822,1.386294,7.016828,1 +7,1,25,0,1,127315,0,9408.188,44.71458,0,16,1,8.833922,0,36.9258,0,0,45.75972,0,0,0,0,1,5,78.8,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,66.6989,9.149442,1.609438,3.823404,1 +7,1,25,0,2,127315,0,9408.188,45.71458,0,16,1,6.469003,0,0,0,0,6.469003,0,0,0,1,0,5,78.8,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,66.6989,9.149442,1.609438,1.867022,1 +7,1,25,0,3,127315,0,9408.188,46.71458,0,16,1,0,5.356266,0,0,0,5.356266,0,0,0,0,0,5,78.8,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,66.6989,9.149442,1.609438,1.678267,1 +7,1,25,0,4,127315,0,9408.188,47.71458,0,16,1,9.11577,0,51.85506,0,0,60.97083,0,0,0,0,1,5,78.8,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,66.6989,9.149442,1.609438,4.110395,1 +7,1,25,0,5,127315,0,9408.188,48.71458,0,16,1,5.418924,2.163401,0,0,0,7.582326,0,0,0,1,0,5,78.8,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,66.6989,9.149442,1.609438,2.02582,1 +7,1,25,0,1,127316,0,9408.188,17.31143,0,12,1,24.14605,0,1.177856,0,0,25.32391,0,0,0,5,0,5,87.5,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.956,9.149442,1.609438,3.231749,1 +7,1,25,0,2,127316,0,9408.188,18.31143,0,12,1,54.44744,6.134771,0,0,0,60.58221,0,0,0,3,3,5,87.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.956,9.149442,1.609438,4.104002,1 +7,1,25,0,3,127316,0,9408.188,19.31143,0,12,1,168.7617,3.70516,0,0,0,172.4668,0,0,0,5,0,5,87.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.956,9.149442,1.609438,5.150205,1 +7,1,25,0,4,127316,0,9408.188,20.31143,0,12,1,50.59253,0,0,0,0,50.59253,0,0,0,3,0,5,87.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.956,9.149442,1.609438,3.923804,1 +7,1,25,0,5,127316,0,9408.188,21.31143,0,12,1,18.75782,.8336807,0,0,0,19.5915,0,0,0,2,0,5,87.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.956,9.149442,1.609438,2.975096,1 +7,1,25,0,1,127317,0,9408.188,15.33744,0,12,1,32.39105,0,0,0,0,32.39105,0,0,0,3,0,5,76.3,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.956,9.149442,1.609438,3.477882,1 +7,1,25,0,2,127317,0,9408.188,16.33744,0,12,1,29.11051,0,0,0,0,29.11051,0,0,0,1,2,5,76.3,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.956,9.149442,1.609438,3.371099,1 +7,1,25,0,3,127317,0,9408.188,17.33744,0,12,1,30.95823,8.643735,0,0,0,39.60197,0,0,0,5,0,5,76.3,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.956,9.149442,1.609438,3.678879,1 +7,1,25,0,4,127317,0,9408.188,18.33744,0,12,1,123.5187,2.39289,0,0,0,125.9116,0,0,0,2,13,5,76.3,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.956,9.149442,1.609438,4.83558,1 +7,1,25,0,5,127317,0,9408.188,19.33744,0,12,1,265.5273,6.335973,32.23426,0,0,304.0975,0,0,0,33,3,5,76.3,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,72.956,9.149442,1.609438,5.717349,1 +7,1,25,0,1,127318,0,9408.188,44.18617,1,12,1,24.14605,0,0,0,0,24.14605,0,0,0,3,0,5,82.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,67.91996,9.149442,1.609438,3.184121,1 +7,1,25,0,2,127318,0,9408.188,45.18617,1,12,1,339.0836,0,0,0,0,339.0836,0,0,0,5,0,5,82.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,67.91996,9.149442,1.609438,5.826247,1 +7,1,25,0,3,127318,0,9408.188,46.18617,1,12,1,16.21622,3.734644,0,0,0,19.95086,0,0,0,2,0,5,82.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,67.91996,9.149442,1.609438,2.993272,1 +7,1,25,0,4,127318,0,9408.188,47.18617,1,12,1,76.11668,9.52598,33.16773,0,0,118.8104,0,0,0,8,0,5,82.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,67.91996,9.149442,1.609438,4.777529,1 +7,1,25,0,5,127318,0,9408.188,48.18617,1,12,1,179.5248,30.37932,42.51772,0,0,252.4218,0,0,0,10,2,5,82.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,67.91996,9.149442,1.609438,5.531102,1 +7,1,25,0,1,127319,0,9408.188,14.46133,1,12,1,30.3298,10.13545,0,0,0,40.46525,0,0,0,4,0,5,62.5,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,67.63226,9.149442,1.609438,3.700444,1 +7,1,25,0,2,127319,0,9408.188,15.46133,1,12,1,361.3154,1.185984,0,0,0,362.5013,0,0,0,5,0,5,62.5,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,67.63226,9.149442,1.609438,5.893028,1 +7,1,25,0,3,127319,0,9408.188,16.46133,1,12,1,76.90417,5.710074,0,0,0,82.61425,0,0,0,5,0,5,62.5,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,67.63226,9.149442,1.609438,4.414182,1 +7,1,25,0,4,127319,0,9408.188,17.46133,1,12,1,36.46308,6.020966,0,0,667.0146,709.4987,1,0,0,5,0,5,62.5,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,67.63226,9.149442,1.609438,6.564559,1 +7,1,25,0,5,127319,0,9408.188,18.46133,1,12,1,46.18591,23.84744,0,0,0,70.03335,0,0,0,4,0,5,62.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,67.63226,9.149442,1.609438,4.248971,1 +5,1,25,0,1,127345,0,9044.045,13.45927,0,12,1,29.59364,0,0,0,0,29.59364,0,0,0,0,1,7,74.36826,13.73189,0,,515,515,1,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,77.87675,9.109972,1.94591,3.387559,1 +5,1,25,0,2,127345,0,9044.045,14.45927,0,12,1,26.95418,0,0,0,0,26.95418,0,0,0,2,0,7,74.36826,13.73189,0,,515,515,1,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,77.87675,9.109972,1.94591,3.294138,1 +5,1,25,0,3,127345,0,9044.045,15.45927,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,515,515,1,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,77.87675,9.109972,1.94591,,0 +5,1,25,0,1,127346,0,9044.045,11.54552,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,515,515,1,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,77.87675,9.109972,1.94591,,0 +5,1,25,0,2,127346,0,9044.045,12.54552,0,12,1,72.2372,0,0,0,0,72.2372,0,0,0,4,0,7,74.36826,13.73189,0,,515,515,1,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,77.87675,9.109972,1.94591,4.279955,1 +5,1,25,0,3,127346,0,9044.045,13.54552,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,515,515,1,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,77.87675,9.109972,1.94591,,0 +5,1,25,0,1,127347,0,9044.045,14.51608,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,78.8,13.73189,0,,515,515,1,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,73.47551,9.109972,1.94591,,0 +5,1,25,0,2,127347,0,9044.045,15.51608,0,12,1,13.47709,0,0,0,0,13.47709,0,0,0,1,0,7,78.8,13.73189,0,,515,515,1,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,73.47551,9.109972,1.94591,2.600991,1 +5,1,25,0,3,127347,0,9044.045,16.51608,0,12,1,17.51843,5.061425,0,0,0,22.57985,0,0,0,1,0,7,78.8,13.73189,0,,515,515,1,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,73.47551,9.109972,1.94591,3.117058,1 +5,1,25,0,1,127348,0,9044.045,6.55989,1,12,1,8.244994,0,0,0,0,8.244994,0,0,0,1,0,7,74.36826,13.73189,0,,515,515,1,1,1.94591,6.244167,0,3.258096,7.630461,1,0,0,77.36277,9.109972,1.94591,2.109606,1 +5,1,25,0,2,127348,0,9044.045,7.55989,1,12,1,3.773585,0,15.77359,0,0,19.54717,0,0,0,0,1,7,74.36826,13.73189,0,,515,515,1,1,1.94591,6.244167,0,3.258096,7.630461,1,0,0,77.36277,9.109972,1.94591,2.972831,1 +5,1,25,0,3,127348,0,9044.045,8.559891,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,515,515,1,1,1.94591,6.244167,0,3.258096,7.630461,1,0,0,77.36277,9.109972,1.94591,,0 +5,1,25,0,1,127349,0,9044.045,10.0835,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,515,515,1,1,1.94591,6.244167,0,3.258096,7.630461,1,0,0,77.36277,9.109972,1.94591,,0 +5,1,25,0,2,127349,0,9044.045,11.0835,1,12,1,5.390836,1.078167,0,0,0,6.469003,0,0,0,1,0,7,74.36826,13.73189,0,,515,515,1,1,1.94591,6.244167,0,3.258096,7.630461,1,0,0,77.36277,9.109972,1.94591,1.867022,1 +5,1,25,0,3,127349,0,9044.045,12.0835,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,515,515,1,1,1.94591,6.244167,0,3.258096,7.630461,1,0,0,77.36277,9.109972,1.94591,,0 +5,1,25,0,1,127350,0,9044.045,32.64887,1,12,1,25.32391,12.04947,0,0,0,37.37338,0,0,0,3,0,7,73.8,13.73189,0,,515,515,0,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,71.59294,9.109972,1.94591,3.620959,1 +5,1,25,0,2,127350,0,9044.045,33.64887,1,12,1,17.25067,12.02695,16.33962,16.17251,0,45.61725,0,0,2,0,1,7,73.8,13.73189,0,,515,515,0,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,71.59294,9.109972,1.94591,3.820286,1 +5,1,25,0,3,127350,0,9044.045,34.64887,1,12,1,4.914005,4.732187,0,0,0,9.646192,0,0,0,1,0,7,73.8,13.73189,0,,515,515,0,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,71.59294,9.109972,1.94591,2.266563,1 +5,1,25,0,1,127351,0,9044.045,41.00479,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,72.5,13.73189,0,,515,515,0,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,68.90664,9.109972,1.94591,,0 +5,1,25,0,2,127351,0,9044.045,42.00479,0,12,1,8.086253,3.962264,0,0,0,12.04852,0,0,0,1,0,7,72.5,13.73189,0,,515,515,0,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,68.90664,9.109972,1.94591,2.488942,1 +5,1,25,0,3,127351,0,9044.045,43.00479,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,72.5,13.73189,0,,515,515,0,0,1.94591,6.244167,0,3.258096,7.630461,1,0,0,68.90664,9.109972,1.94591,,0 +3,1,100,0,1,127361,0,9542.002,8.287475,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,0,1.791759,5.645447,1,0,0,1,0,0,73.43399,9.163564,1.791759,,0 +3,1,100,0,2,127361,0,9542.002,9.287475,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,0,1.791759,5.645447,1,0,0,1,0,0,73.43399,9.163564,1.791759,,0 +3,1,100,0,3,127361,0,9542.002,10.28747,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,0,1.791759,5.645447,1,0,0,1,0,0,73.43399,9.163564,1.791759,,0 +3,1,100,0,1,127362,0,9542.002,7.074606,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,1,1.791759,5.645447,1,0,0,1,0,0,72.92001,9.163564,1.791759,,0 +3,1,100,0,2,127362,0,9542.002,8.074607,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,1,1.791759,5.645447,1,0,0,1,0,0,72.92001,9.163564,1.791759,,0 +3,1,100,0,3,127362,0,9542.002,9.074607,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,1,1.791759,5.645447,1,0,0,1,0,0,72.92001,9.163564,1.791759,,0 +3,1,100,0,1,127363,0,9542.002,9.166325,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,1,1.791759,5.645447,1,0,0,1,0,0,69.64929,9.163564,1.791759,,0 +3,1,100,0,2,127363,0,9542.002,10.16632,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,1,1.791759,5.645447,1,0,0,1,0,0,69.64929,9.163564,1.791759,,0 +3,1,100,0,3,127363,0,9542.002,11.16632,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,1,1.791759,5.645447,1,0,0,1,0,0,69.64929,9.163564,1.791759,,0 +3,1,100,0,1,127364,0,9542.002,27.91239,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,82.1,0,0,,283,283,0,0,1.791759,5.645447,1,0,0,1,0,0,63.48573,9.163564,1.791759,,0 +3,1,100,0,2,127364,0,9542.002,28.91239,1,10,1,8.086253,6.134771,0,0,0,14.22102,0,0,0,0,0,6,82.1,0,0,,283,283,0,0,1.791759,5.645447,1,0,0,1,0,0,63.48573,9.163564,1.791759,2.654721,1 +3,1,100,0,3,127364,0,9542.002,29.91239,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,82.1,0,0,,283,283,0,0,1.791759,5.645447,1,0,0,1,0,0,63.48573,9.163564,1.791759,,0 +3,1,100,0,1,127365,0,9542.002,4.43258,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,1,1.791759,5.645447,1,0,0,1,0,0,69.4884,9.163564,1.791759,,0 +3,1,100,0,2,127365,0,9542.002,5.43258,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,1,1.791759,5.645447,1,0,0,1,0,0,69.4884,9.163564,1.791759,,0 +3,1,100,0,3,127365,0,9542.002,6.43258,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,1,1.791759,5.645447,1,0,0,1,0,0,69.4884,9.163564,1.791759,,0 +9,1,50,0,1,127368,0,9542.002,25.28131,0,15,1,46.94935,1.319199,0,0,0,48.26855,0,0,0,2,1,1,54.7,17.4,1,,550,550,0,0,0,6.309918,0,3.931826,7.003066,0,0,1,52.34806,9.163564,0,3.87678,1 +9,1,50,0,2,127368,0,9542.002,26.28131,0,15,1,72.50674,0,459.6981,0,38649.81,39182.02,2,0,0,0,0,1,54.7,17.4,1,,550,550,0,0,0,6.309918,0,3.931826,7.003066,0,0,1,52.34806,9.163564,0,10.57597,1 +9,1,50,0,1,127369,0,1524.194,22.71321,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,81.1,4.3,0,,760,760,0,0,0,6.633318,0,3.931826,7.326466,1,0,0,69.06231,7.329876,0,,0 +9,1,50,0,2,127369,0,1524.194,23.71321,0,14,1,17.25067,9.299191,0,0,0,26.54987,0,0,0,3,0,1,81.1,4.3,0,,760,760,0,0,0,6.633318,0,3.931826,7.326466,1,0,0,69.06231,7.329876,0,3.279025,1 +9,1,50,0,3,127369,0,1524.194,24.71321,0,14,1,0,3.710074,0,0,0,3.710074,0,0,0,0,0,1,81.1,4.3,0,,760,760,0,0,0,6.633318,0,3.931826,7.326466,1,0,0,69.06231,7.329876,0,1.311052,1 +9,1,50,0,4,127369,0,1524.194,25.71321,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,81.1,4.3,0,,760,760,0,0,0,6.633318,0,3.931826,7.326466,1,0,0,69.06231,7.329876,0,,0 +9,1,50,0,5,127369,0,1524.194,26.71321,0,14,1,72.94706,6.969571,0,0,0,79.91663,0,0,0,5,0,1,81.1,4.3,0,,760,760,0,0,0,6.633318,0,3.931826,7.326466,1,0,0,69.06231,7.329876,0,4.380984,1 +11,1,0,0,1,127370,0,7700.372,25.62354,1,8,1,59.71049,30.5187,31.51387,0,505.4765,627.2195,1,0,0,4,1,4,22.7,13.73189,1,,0,0,0,0,1.386294,0,0,0,0,0,0,0,75.49265,8.949154,1.386294,6.441297,1 +11,1,0,0,2,127370,0,7700.372,26.62354,1,8,1,25.88106,10.40749,0,11.01322,0,36.28855,0,0,1,3,0,4,22.7,13.73189,1,,0,0,0,0,1.386294,0,0,0,0,0,0,0,75.49265,8.949154,1.386294,3.591502,1 +11,1,0,0,3,127370,0,7700.372,27.62354,1,8,1,14.06328,1.25565,0,0,0,15.31894,0,0,0,1,0,4,22.7,13.73189,1,,0,0,0,0,1.386294,0,0,0,0,0,0,0,75.49265,8.949154,1.386294,2.72909,1 +11,1,0,0,1,127371,0,7700.372,5.587954,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,79.6293,8.949154,1.386294,,0 +11,1,0,0,2,127371,0,7700.372,6.587954,1,8,1,20.09912,2.257709,0,0,696.5253,718.8821,1,0,0,0,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,79.6293,8.949154,1.386294,6.577697,1 +11,1,0,0,3,127371,0,7700.372,7.587954,1,8,1,41.43646,14.23908,0,0,0,55.67554,0,0,0,5,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,79.6293,8.949154,1.386294,4.019541,1 +11,1,0,0,1,127372,0,7700.372,4.388775,1,8,1,13.87214,0,0,0,0,13.87214,0,0,0,1,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,76.19768,8.949154,1.386294,2.629882,1 +11,1,0,0,2,127372,0,7700.372,5.388775,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,76.19768,8.949154,1.386294,,0 +11,1,0,0,3,127372,0,7700.372,6.388775,1,8,1,28.65394,2.009041,0,0,0,30.66298,0,0,0,2,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,76.19768,8.949154,1.386294,3.423056,1 +11,1,0,0,1,127373,0,7700.372,29.94935,0,11,1,26.13993,2.050663,0,0,0,28.19059,0,0,0,1,0,4,61.3,13.73189,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,74.60146,8.949154,1.386294,3.338988,1 +11,1,0,0,2,127373,0,7700.372,30.94935,0,11,1,83.70044,0,0,0,0,83.70044,0,0,0,0,10,4,61.3,13.73189,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,74.60146,8.949154,1.386294,4.427244,1 +11,1,0,0,3,127373,0,7700.372,31.94935,0,11,1,96.93621,.5022601,0,0,0,97.43848,0,0,0,1,18,4,61.3,13.73189,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,74.60146,8.949154,1.386294,4.579221,1 +6,1,25,1,1,127378,0,3809.553,36.846,0,3,1,0,0,0,0,0,0,0,0,0,0,0,4,96.8,0,0,,700,700,0,0,1.386294,6.55108,0,3.258096,7.937375,0,0,0,74.64081,8.24553,1.386294,,0 +6,1,25,1,2,127378,0,3809.553,37.846,0,3,1,0,0,0,0,0,0,0,0,0,0,0,4,96.8,0,0,,700,700,0,0,1.386294,6.55108,0,3.258096,7.937375,0,0,0,74.64081,8.24553,1.386294,,0 +6,1,25,1,3,127378,0,3809.553,38.846,0,3,1,37.666,0,0,0,0,37.666,0,0,0,1,0,4,96.8,0,0,,700,700,0,0,1.386294,6.55108,0,3.258096,7.937375,0,0,0,74.64081,8.24553,1.386294,3.628758,1 +6,1,25,1,1,127379,0,3809.553,8.64887,0,7,1,13.68233,0,0,0,0,13.68233,0,0,0,0,1,4,74.36826,13.73189,0,,700,700,1,0,1.386294,6.55108,0,3.258096,7.937375,0,0,0,82.16232,8.24553,1.386294,2.616105,1 +6,1,25,1,2,127379,0,3809.553,9.64887,0,7,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,700,700,1,0,1.386294,6.55108,0,3.258096,7.937375,0,0,0,82.16232,8.24553,1.386294,,0 +6,1,25,1,3,127379,0,3809.553,10.64887,0,7,1,36.91774,0,0,0,0,36.91774,0,0,0,1,0,4,74.36826,13.73189,0,,700,700,1,0,1.386294,6.55108,0,3.258096,7.937375,0,0,0,82.16232,8.24553,1.386294,3.608692,1 +6,1,25,1,1,127380,0,3809.553,24.06297,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,84.2,4.3,0,,700,700,0,0,1.386294,6.55108,0,3.258096,7.937375,0,0,0,75.53199,8.24553,1.386294,,0 +6,1,25,1,2,127380,0,3809.553,25.06297,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,84.2,4.3,0,,700,700,0,0,1.386294,6.55108,0,3.258096,7.937375,0,0,0,75.53199,8.24553,1.386294,,0 +6,1,25,1,3,127380,0,3809.553,26.06297,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,84.2,4.3,0,,700,700,0,0,1.386294,6.55108,0,3.258096,7.937375,0,0,0,75.53199,8.24553,1.386294,,0 +6,1,25,1,1,127381,0,3809.553,9.500342,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,700,700,1,1,1.386294,6.55108,0,3.258096,7.937375,0,0,0,81.64835,8.24553,1.386294,,0 +6,1,25,1,2,127381,0,3809.553,10.50034,1,7,1,16.98421,6.303756,0,0,0,23.28797,0,0,0,1,0,4,74.36826,13.73189,0,,700,700,1,1,1.386294,6.55108,0,3.258096,7.937375,0,0,0,81.64835,8.24553,1.386294,3.147937,1 +6,1,25,1,3,127381,0,3809.553,11.50034,1,7,1,19.32607,0,0,0,0,19.32607,0,0,0,1,0,4,74.36826,13.73189,0,,700,700,1,1,1.386294,6.55108,0,3.258096,7.937375,0,0,0,81.64835,8.24553,1.386294,2.961455,1 +11,1,0,1,1,127385,0,9658.188,13.39357,1,12,1,16.35931,0,0,0,0,16.35931,0,0,0,1,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,83.986,9.175665,1.609438,2.794797,1 +11,1,0,1,2,127385,0,9658.188,14.39357,1,12,1,29.94012,6.614045,0,0,0,36.55416,0,0,0,4,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,83.986,9.175665,1.609438,3.598795,1 +11,1,0,1,3,127385,0,9658.188,15.39357,1,12,1,15.85728,2.006938,0,0,0,17.86422,0,0,0,2,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,83.986,9.175665,1.609438,2.8828,1 +11,1,0,1,4,127385,0,9658.188,16.39357,1,12,1,11.01423,0,0,0,0,11.01423,0,0,0,2,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,83.986,9.175665,1.609438,2.399188,1 +11,1,0,1,5,127385,0,9658.188,17.39357,1,12,1,32.94068,11.63231,0,0,0,44.57299,0,0,0,3,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,83.986,9.175665,1.609438,3.797128,1 +11,1,0,1,1,127386,0,9658.188,15.04449,1,12,1,43.18858,6.543724,0,0,0,49.7323,0,0,0,3,0,5,83.2,4.3,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,74.88091,9.175665,1.609438,3.906655,1 +11,1,0,1,2,127386,0,9658.188,16.04449,1,12,1,34.83941,13.60915,0,0,0,48.44856,0,0,0,2,0,5,83.2,4.3,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,74.88091,9.175665,1.609438,3.880503,1 +11,1,0,1,3,127386,0,9658.188,17.04449,1,12,1,24.0337,13.00793,0,0,0,37.04163,0,0,0,1,2,5,83.2,4.3,0,,0,0,1,1,1.609438,0,0,0,0,0,0,0,74.88091,9.175665,1.609438,3.612042,1 +11,1,0,1,4,127386,0,9658.188,18.04449,1,12,1,34.41946,4.841671,0,0,323.2675,362.5287,1,0,0,3,0,5,83.2,4.3,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,74.88091,9.175665,1.609438,5.893104,1 +11,1,0,1,5,127386,0,9658.188,19.04449,1,12,1,72.60413,24.63189,0,0,1328.132,1425.368,1,0,0,2,0,5,83.2,4.3,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,74.88091,9.175665,1.609438,7.262186,1 +11,1,0,1,1,127387,0,9658.188,39.80835,0,7,1,67.22189,104.4319,0,0,522.4688,694.1226,1,0,0,9,0,5,63.2,0,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,75.22207,9.175665,1.609438,6.542648,1 +11,1,0,1,2,127387,0,9658.188,40.80835,0,7,1,319.5427,70.20686,29.0147,8.165487,0,418.7643,0,0,1,17,15,5,63.2,0,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,75.22207,9.175665,1.609438,6.037308,1 +11,1,0,1,3,127387,0,9658.188,41.80835,0,7,1,109.2666,77.84936,0,22.29931,0,187.116,0,0,2,31,0,5,63.2,0,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,75.22207,9.175665,1.609438,5.231729,1 +11,1,0,1,4,127387,0,9658.188,42.80835,0,7,1,315.7412,127.3107,19.66498,0,978.4855,1441.202,1,0,0,13,1,5,63.2,0,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,75.22207,9.175665,1.609438,7.273233,1 +11,1,0,1,5,127387,0,9658.188,43.80835,0,7,1,146.8237,111.9899,0,0,0,258.8136,0,0,0,6,0,5,63.2,0,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,75.22207,9.175665,1.609438,5.556108,1 +11,1,0,1,1,127388,0,9658.188,6.220397,0,12,1,103.8251,18.35217,0,0,0,122.1773,0,0,0,8,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,84.49998,9.175665,1.609438,4.805473,1 +11,1,0,1,2,127388,0,9658.188,7.220397,0,12,1,11.97605,1.796407,0,0,0,13.77246,0,0,0,2,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,84.49998,9.175665,1.609438,2.622671,1 +11,1,0,1,3,127388,0,9658.188,8.220397,0,12,1,4.955401,4.058474,0,0,0,9.013875,0,0,0,1,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,84.49998,9.175665,1.609438,2.198765,1 +11,1,0,1,4,127388,0,9658.188,9.220397,0,12,1,39.05461,8.210188,0,0,0,47.2648,0,0,0,4,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,84.49998,9.175665,1.609438,3.855766,1 +11,1,0,1,5,127388,0,9658.188,10.2204,0,12,1,75.58266,1.867901,1.262095,0,0,78.71266,0,0,0,2,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,84.49998,9.175665,1.609438,4.365804,1 +11,1,0,1,1,127389,0,9658.188,34.05886,1,12,1,148.6496,78.35812,27.97739,0,0,254.9851,0,0,0,15,1,5,71.6,13,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.32207,9.175665,1.609438,5.541205,1 +11,1,0,1,2,127389,0,9658.188,35.05886,1,12,1,361.1486,125.9499,0,0,780.7022,1267.801,1,0,0,28,1,5,71.6,13,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.32207,9.175665,1.609438,7.145039,1 +11,1,0,1,3,127389,0,9658.188,36.05886,1,12,1,100.5947,119.108,22.78493,29.73241,397.2547,639.7423,1,0,2,10,1,5,71.6,13,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.32207,9.175665,1.609438,6.461065,1 +11,1,0,1,4,127389,0,9658.188,37.05886,1,12,1,301.3768,82.1799,12.46902,0,793.4282,1189.454,1,0,0,20,1,5,71.6,13,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.32207,9.175665,1.609438,7.08125,1 +11,1,0,1,5,127389,0,9658.188,38.05886,1,12,1,182.5831,145.4186,.1051746,0,2992.705,3320.812,2,0,0,16,0,5,71.6,13,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.32207,9.175665,1.609438,8.107965,1 +10,1,50,0,1,127395,0,2235.732,46.56263,1,10,1,18.69723,14.06514,0,0,0,32.76236,0,0,0,6,0,2,60,13.73189,0,,342,0,0,0,.6931472,0,0,3.931826,6.527958,0,0,0,74.09964,7.712771,.6931472,3.48928,1 +10,1,50,0,2,127395,0,2235.732,47.56263,1,10,1,23.67841,9.036344,0,0,0,32.71476,0,0,0,2,0,2,60,13.73189,0,,342,0,0,0,.6931472,0,0,3.931826,6.527958,0,0,0,74.09964,7.712771,.6931472,3.487826,1 +10,1,50,0,3,127395,0,2235.732,48.56263,1,10,1,13.05876,9.648417,37.2677,0,0,59.97489,0,0,0,3,1,2,60,13.73189,0,,342,0,0,0,.6931472,0,0,3.931826,6.527958,0,0,0,74.09964,7.712771,.6931472,4.093926,1 +10,1,50,0,1,127396,0,2235.732,11.92608,0,10,1,4.82509,3.618818,0,0,0,8.443909,0,0,0,1,0,2,74.36826,13.73189,0,,342,0,1,0,.6931472,0,0,3.931826,6.527958,0,0,0,81.16636,7.712771,.6931472,2.133445,1 +10,1,50,0,2,127396,0,2235.732,12.92608,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,342,0,1,0,.6931472,0,0,3.931826,6.527958,0,0,0,81.16636,7.712771,.6931472,,0 +10,1,50,0,3,127396,0,2235.732,13.92608,0,10,1,4.520341,3.013561,0,0,0,7.533903,0,0,0,1,0,2,74.36826,13.73189,0,,342,0,1,0,.6931472,0,0,3.931826,6.527958,0,0,0,81.16636,7.712771,.6931472,2.019413,1 +8,1,50,0,1,127400,0,9542.002,16.15606,0,12,1,6.478209,0,0,0,0,6.478209,0,0,0,1,0,3,70,13.73189,0,,415,415,1,0,1.098612,6.028278,0,3.931826,6.721426,0,0,0,80.34551,9.163564,1.098612,1.868444,1 +8,1,50,0,2,127400,0,9542.002,17.15606,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,70,13.73189,0,,415,415,1,0,1.098612,6.028278,0,3.931826,6.721426,0,0,0,80.34551,9.163564,1.098612,,0 +8,1,50,0,3,127400,0,9542.002,18.15606,0,12,1,41.27764,0,0,0,0,41.27764,0,0,0,2,0,3,70,13.73189,0,,415,415,0,0,1.098612,6.028278,0,3.931826,6.721426,0,0,0,80.34551,9.163564,1.098612,3.720321,1 +8,1,50,0,4,127400,0,9542.002,19.15606,0,12,1,13.67366,0,0,0,0,13.67366,0,0,0,0,1,3,70,13.73189,0,,415,415,0,0,1.098612,6.028278,0,3.931826,6.721426,0,0,0,80.34551,9.163564,1.098612,2.615471,1 +8,1,50,0,5,127400,0,9542.002,20.15606,0,12,1,8.336807,0,0,0,0,8.336807,0,0,0,0,1,3,70,13.73189,0,,415,415,0,0,1.098612,6.028278,0,3.931826,6.721426,0,0,0,80.34551,9.163564,1.098612,2.12068,1 +8,1,50,0,1,127401,0,9542.002,52.89801,0,12,1,97.76207,4.581861,0,0,0,102.3439,0,0,0,0,0,3,71.3,13.73189,0,,415,415,0,0,1.098612,6.028278,0,3.931826,6.721426,0,0,0,73.66986,9.163564,1.098612,4.628339,1 +8,1,50,0,2,127401,0,9542.002,53.89801,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,71.3,13.73189,0,,415,415,0,0,1.098612,6.028278,0,3.931826,6.721426,0,0,0,73.66986,9.163564,1.098612,,0 +8,1,50,0,3,127401,0,9542.002,54.89801,0,12,1,95.3317,6.280098,0,0,0,101.6118,0,0,0,1,0,3,71.3,13.73189,0,,415,415,0,0,1.098612,6.028278,0,3.931826,6.721426,0,0,0,73.66986,9.163564,1.098612,4.62116,1 +8,1,50,0,4,127401,0,9542.002,55.89801,0,12,1,106.6545,8.395624,55.19143,0,0,170.2416,0,0,0,1,1,3,71.3,13.73189,0,,415,415,0,0,1.098612,6.028278,0,3.931826,6.721426,0,0,0,73.66986,9.163564,1.098612,5.137218,1 +8,1,50,0,5,127401,0,9542.002,56.89801,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,71.3,13.73189,0,,415,415,0,0,1.098612,6.028278,0,3.931826,6.721426,0,0,0,73.66986,9.163564,1.098612,,0 +8,1,50,0,1,127402,0,9542.002,21.61533,1,14,1,12.95642,4.829211,0,0,0,17.78563,0,0,0,2,0,1,78.8,13.73189,0,,335,335,0,0,0,5.81413,0,3.931826,6.507277,0,0,0,79.63555,9.163564,0,2.878391,1 +8,1,50,0,2,127402,0,9542.002,22.61533,1,14,1,0,0,0,0,0,0,0,0,0,0,0,1,78.8,13.73189,0,,335,335,0,0,0,5.81413,0,3.931826,6.507277,0,0,0,79.63555,9.163564,0,,0 +8,1,50,0,3,127402,0,9542.002,23.61533,1,14,1,364.3735,4.712531,0,0,57.49386,426.5799,0,0,0,4,0,1,78.8,13.73189,0,,335,335,0,0,0,5.81413,0,3.931826,6.507277,0,0,0,79.63555,9.163564,0,6.055799,1 +8,1,50,0,4,127402,0,9542.002,24.61533,1,14,1,6.381039,12.35187,0,0,0,18.73291,0,0,0,1,0,1,78.8,13.73189,0,,335,335,0,0,0,5.81413,0,3.931826,6.507277,0,0,0,79.63555,9.163564,0,2.930282,1 +8,1,50,0,5,127402,0,9542.002,25.61533,1,14,1,7.503126,0,0,0,0,7.503126,0,0,0,1,0,1,78.8,13.73189,0,,335,335,0,0,0,5.81413,0,3.931826,6.507277,0,0,0,79.63555,9.163564,0,2.01532,1 +8,1,50,0,1,127403,0,9542.002,47.87406,1,12,1,32.39105,51.19552,0,0,0,83.58657,0,0,0,4,0,3,82.5,13.73189,0,,415,415,0,0,1.098612,6.028278,0,3.931826,6.721426,1,0,0,70.90492,9.163564,1.098612,4.425883,1 +8,1,50,0,2,127403,0,9542.002,48.87406,1,12,1,15.63342,30.26415,0,0,0,45.89758,0,0,0,1,0,3,82.5,13.73189,0,,415,415,0,0,1.098612,6.028278,0,3.931826,6.721426,1,0,0,70.90492,9.163564,1.098612,3.826412,1 +8,1,50,0,3,127403,0,9542.002,49.87406,1,12,1,28.99263,22.4226,29.27273,0,0,80.68796,0,0,0,1,1,3,82.5,13.73189,0,,415,415,0,0,1.098612,6.028278,0,3.931826,6.721426,1,0,0,70.90492,9.163564,1.098612,4.390589,1 +8,1,50,0,4,127403,0,9542.002,50.87406,1,12,1,13.67366,25.82953,0,0,0,39.50319,0,0,0,1,1,3,82.5,13.73189,0,,415,415,0,0,1.098612,6.028278,0,3.931826,6.721426,1,0,0,70.90492,9.163564,1.098612,3.676381,1 +8,1,50,0,5,127403,0,9542.002,51.87406,1,12,1,17.92414,24.4852,42.68862,0,0,85.09795,0,0,0,1,1,3,82.5,13.73189,0,,415,415,0,0,1.098612,6.028278,0,3.931826,6.721426,1,0,0,70.90492,9.163564,1.098612,4.443803,1 +11,1,0,0,1,127409,0,13933.62,6.105407,1,12,1,9.518144,4.497323,0,0,0,14.01547,0,0,0,1,0,5,74.36826,13.73189,0,,0,65,1,1,1.609438,4.174387,0,0,0,0,0,0,85.02243,9.542131,1.609438,2.640162,1 +11,1,0,0,2,127409,0,13933.62,7.105407,1,12,1,18.50844,2.874252,0,0,1257.104,1278.487,1,0,0,2,0,5,74.36826,13.73189,0,,0,65,1,1,1.609438,4.174387,0,0,0,0,0,0,85.02243,9.542131,1.609438,7.153432,1 +11,1,0,0,3,127409,0,13933.62,8.105408,1,12,1,53.51833,2.973241,0,0,0,56.49158,0,0,0,5,2,5,74.36826,13.73189,0,,0,65,1,1,1.609438,4.174387,0,0,0,0,0,0,85.02243,9.542131,1.609438,4.034091,1 +11,1,0,0,1,127410,0,13933.62,45.1143,0,21,1,81.49911,11.96907,54.08685,0,0,147.555,0,0,0,8,1,5,78.8,13.73189,0,,0,65,0,0,1.609438,4.174387,0,0,0,1,0,0,68.91296,9.542131,1.609438,4.994201,1 +11,1,0,0,2,127410,0,13933.62,46.1143,0,21,1,20.41372,6.886228,0,0,0,27.29995,0,0,0,3,0,5,78.8,13.73189,0,,0,65,0,0,1.609438,4.174387,0,0,0,1,0,0,68.91296,9.542131,1.609438,3.306885,1 +11,1,0,0,3,127410,0,13933.62,47.1143,0,21,1,29.23687,3.389495,0,0,100.7284,133.3548,1,0,0,4,1,5,78.8,13.73189,0,,0,65,0,0,1.609438,4.174387,0,0,0,1,0,0,68.91296,9.542131,1.609438,4.893013,1 +11,1,0,0,1,127411,0,13933.62,30.17112,1,12,1,65.43724,20.73171,34.81261,0,0,120.9816,0,0,0,5,1,5,78.8,13.73189,0,,0,65,0,0,1.609438,4.174387,0,0,0,0,0,0,78.83035,9.542131,1.609438,4.795638,1 +11,1,0,0,2,127411,0,13933.62,31.17112,1,12,1,81.1105,8.579206,0,0,0,89.68971,0,0,0,11,0,5,78.8,13.73189,0,,0,65,0,0,1.609438,4.174387,0,0,0,0,0,0,78.83035,9.542131,1.609438,4.496356,1 +11,1,0,0,3,127411,0,13933.62,32.17112,1,12,1,86.22398,6.526264,46.08523,0,0,138.8355,0,0,0,7,1,5,78.8,13.73189,0,,0,65,0,0,1.609438,4.174387,0,0,0,0,0,0,78.83035,9.542131,1.609438,4.93329,1 +11,1,0,0,1,127412,0,13933.62,7.148529,1,12,1,14.8721,2.629387,0,0,0,17.50149,0,0,0,1,1,5,74.36826,13.73189,0,,0,65,1,1,1.609438,4.174387,0,0,0,0,0,0,85.02243,9.542131,1.609438,2.862286,1 +11,1,0,0,2,127412,0,13933.62,8.148528,1,12,1,13.50027,1.317365,0,14.26238,0,14.81764,0,0,1,0,0,5,74.36826,13.73189,0,,0,65,1,1,1.609438,4.174387,0,0,0,0,0,0,85.02243,9.542131,1.609438,2.695818,1 +11,1,0,0,3,127412,0,13933.62,9.148528,1,12,1,10.90188,3.409316,0,0,0,14.3112,0,0,0,2,0,5,74.36826,13.73189,0,,0,65,1,1,1.609438,4.174387,0,0,0,0,0,0,85.02243,9.542131,1.609438,2.661042,1 +11,1,0,0,1,127413,0,13933.62,1.566051,1,12,1,156.4545,6.650803,0,0,0,163.1053,0,0,0,6,2,5,74.36826,13.73189,0,,0,65,1,1,1.609438,4.174387,0,0,0,0,0,0,81.59081,9.542131,1.609438,5.094396,1 +11,1,0,0,2,127413,0,13933.62,2.566051,1,12,1,133.914,7.958628,0,0,0,141.8726,0,0,0,5,0,5,74.36826,13.73189,0,,0,65,1,1,1.609438,4.174387,0,0,0,0,0,0,81.59081,9.542131,1.609438,4.95493,1 +11,1,0,0,3,127413,0,13933.62,3.566051,1,12,1,220.5154,14.75718,0,0,0,235.2726,0,0,0,12,29,5,74.36826,13.73189,0,,0,65,1,1,1.609438,4.174387,0,0,0,0,0,0,81.59081,9.542131,1.609438,5.460745,1 +11,1,0,1,1,127425,0,11437.34,17.36345,0,16,1,44.24461,9.262589,0,0,0,53.50719,0,0,0,3,0,4,86.3,4.3,0,,0,60,1,0,1.386294,4.094345,0,0,0,0,0,0,78.55583,9.344727,1.386294,3.979816,1 +11,1,0,1,2,127425,0,11437.34,18.36345,0,16,1,17.52464,8.910186,28.04491,0,0,54.47974,0,0,0,1,1,4,86.3,4.3,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,78.55583,9.344727,1.386294,3.997829,1 +11,1,0,1,3,127425,0,11437.34,19.36345,0,16,1,13.46633,0,0,0,0,13.46633,0,0,0,1,0,4,86.3,4.3,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,78.55583,9.344727,1.386294,2.600193,1 +11,1,0,1,4,127425,0,11437.34,20.36345,0,16,1,11.52605,0,26.98018,0,0,38.50623,0,0,0,0,1,4,86.3,4.3,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,78.55583,9.344727,1.386294,3.65082,1 +11,1,0,1,5,127425,0,11437.34,21.36345,0,16,1,109.0986,1.468472,0,0,0,110.5671,0,0,0,5,0,4,86.3,4.3,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,78.55583,9.344727,1.386294,4.705622,1 +11,1,0,1,1,127426,0,11437.34,12.5859,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,84.24542,9.344727,1.386294,,0 +11,1,0,1,2,127426,0,11437.34,13.5859,1,16,1,13.14348,4.819277,0,0,0,17.96276,0,0,0,2,0,4,74.36826,13.73189,0,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,84.24542,9.344727,1.386294,2.888301,1 +11,1,0,1,3,127426,0,11437.34,14.5859,1,16,1,29.42643,7.945137,0,0,0,37.37157,0,0,0,3,0,4,74.36826,13.73189,0,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,84.24542,9.344727,1.386294,3.62091,1 +11,1,0,1,4,127426,0,11437.34,15.5859,1,16,1,11.52605,0,21.15722,0,0,32.68327,0,0,0,0,1,4,74.36826,13.73189,0,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,84.24542,9.344727,1.386294,3.486863,1 +11,1,0,1,5,127426,0,11437.34,16.5859,1,16,1,12.69573,0,13.69022,0,0,26.38595,0,0,0,0,1,4,74.36826,13.73189,0,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,84.24542,9.344727,1.386294,3.272832,1 +11,1,0,1,1,127427,0,11437.34,14.5462,0,16,1,19.78417,0,30.01799,0,0,49.80216,0,0,0,1,1,4,94.4,8.7,0,,0,60,1,0,1.386294,4.094345,0,0,0,0,0,0,78.55583,9.344727,1.386294,3.908058,1 +11,1,0,1,2,127427,0,11437.34,15.5462,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,94.4,8.7,0,,0,60,1,0,1.386294,4.094345,0,0,0,0,0,0,78.55583,9.344727,1.386294,,0 +11,1,0,1,3,127427,0,11437.34,16.5462,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,94.4,8.7,0,,0,60,1,0,1.386294,4.094345,0,0,0,0,0,0,78.55583,9.344727,1.386294,,0 +11,1,0,1,4,127427,0,11437.34,17.5462,0,16,1,11.52605,0,22.12079,0,0,33.64684,0,0,0,0,1,4,94.4,8.7,0,,0,60,1,0,1.386294,4.094345,0,0,0,0,0,0,78.55583,9.344727,1.386294,3.515919,1 +11,1,0,1,5,127427,0,11437.34,18.5462,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,94.4,8.7,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,78.55583,9.344727,1.386294,,0 +11,1,0,1,1,127428,0,11437.34,40.88159,1,16,1,50.95923,115,0,0,0,165.9592,0,0,0,6,0,4,60,13,1,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.39796,9.344727,1.386294,5.111742,1 +11,1,0,1,2,127428,0,11437.34,41.88159,1,16,1,40.52574,118.3516,0,0,0,158.8773,0,0,0,3,0,4,60,13,1,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.39796,9.344727,1.386294,5.068132,1 +11,1,0,1,3,127428,0,11437.34,42.88159,1,16,1,48.8778,105.1421,23.45636,0,0,177.4763,0,0,0,4,1,4,60,13,1,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.39796,9.344727,1.386294,5.178837,1 +11,1,0,1,4,127428,0,11437.34,43.88159,1,16,1,20.74689,117.9852,0,0,0,138.7321,0,0,0,2,0,4,60,13,1,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.39796,9.344727,1.386294,4.932545,1 +11,1,0,1,5,127428,0,11437.34,44.88159,1,16,1,35.54803,117.7613,41.95514,0,0,195.2645,0,0,0,1,1,4,60,13,1,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.39796,9.344727,1.386294,5.274355,1 +7,1,25,0,1,127437,0,7905.087,57.11978,0,9,1,50.35971,44.80216,36.8825,0,0,132.0444,0,0,0,6,1,2,91.3,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,1,0,57.70329,8.975389,.6931472,4.883138,1 +7,1,25,0,2,127437,0,7905.087,58.11978,0,9,1,54.76451,55.5586,25.73932,0,0,136.0624,0,0,0,6,1,2,91.3,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,1,0,57.70329,8.975389,.6931472,4.913114,1 +7,1,25,0,3,127437,0,7905.087,59.11978,0,9,1,68.82793,84.18454,0,0,0,153.0125,0,0,0,8,0,2,91.3,13.73189,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,1,0,57.70329,8.975389,.6931472,5.030519,1 +7,1,25,0,1,127438,0,7905.087,53.74675,1,11,1,62.35012,76.32494,31.8705,0,0,170.5456,0,0,0,6,1,2,70,13.73189,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,62.17246,8.975389,.6931472,5.139002,1 +7,1,25,0,2,127438,0,7905.087,54.74675,1,11,1,40.52574,80.31216,0,0,0,120.8379,0,0,0,5,0,2,70,13.73189,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,62.17246,8.975389,.6931472,4.79445,1 +7,1,25,0,3,127438,0,7905.087,55.74675,1,11,1,38.40399,20.89775,36.93766,0,0,96.2394,0,0,0,3,1,2,70,13.73189,1,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,62.17246,8.975389,.6931472,4.566839,1 +11,1,0,1,1,127439,0,6820.72,52.74469,0,10,1,173.2005,41.15408,53.15289,0,0,267.5074,0,0,0,5,0,2,86.3,21.7,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,55.48558,8.827867,.6931472,5.589148,1 +11,1,0,1,2,127439,0,6820.72,53.74469,0,10,1,77.29994,28.0675,29.58084,0,0,134.9483,0,0,0,5,0,2,86.3,21.7,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,55.48558,8.827867,.6931472,4.904891,1 +11,1,0,1,3,127439,0,6820.72,54.74469,0,10,1,22.79485,15.14371,0,0,0,37.93855,0,0,0,3,0,2,86.3,21.7,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,55.48558,8.827867,.6931472,3.635968,1 +11,1,0,1,1,127440,0,6820.72,52.90623,1,11,1,226.3534,46.1511,50.66627,0,0,323.1707,0,0,0,2,23,2,69.5,47.8,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,52.57277,8.827867,.6931472,5.778181,1 +11,1,0,1,2,127440,0,6820.72,53.90623,1,11,1,247.1421,28.79695,0,0,0,275.939,0,0,0,1,21,2,69.5,47.8,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,52.57277,8.827867,.6931472,5.62018,1 +11,1,0,1,3,127440,0,6820.72,54.90623,1,11,1,389.1229,42.81467,0,0,81.76412,513.7017,0,0,0,4,17,2,69.5,47.8,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,52.57277,8.827867,.6931472,6.241642,1 +6,1,25,1,1,127470,0,9668.734,40.4846,0,13,1,10.79137,0,37.41007,0,0,48.20144,0,0,0,0,1,5,58.9,13,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,70.47347,9.176756,1.609438,3.875389,1 +6,1,25,1,2,127470,0,9668.734,41.4846,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,58.9,13,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,70.47347,9.176756,1.609438,,0 +6,1,25,1,3,127470,0,9668.734,42.4846,0,13,1,17.45636,7.256858,32.83292,0,0,57.54613,0,0,0,2,1,5,58.9,13,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,70.47347,9.176756,1.609438,4.052587,1 +6,1,25,1,4,127470,0,9668.734,43.4846,0,13,1,6.915629,3.457815,0,0,0,10.37344,0,0,0,1,0,5,58.9,13,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,70.47347,9.176756,1.609438,2.339249,1 +6,1,25,1,5,127470,0,9668.734,44.4846,0,13,1,25.81464,0,24.32501,0,0,50.13965,0,0,0,1,1,5,58.9,13,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,70.47347,9.176756,1.609438,3.914812,1 +6,1,25,1,1,127471,0,9668.734,7.422314,0,13,1,0,13.09352,0,0,0,13.09352,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,78.55493,9.176756,1.609438,2.572118,1 +6,1,25,1,2,127471,0,9668.734,8.422314,0,13,1,9.309967,0,0,0,0,9.309967,0,0,0,0,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,78.55493,9.176756,1.609438,2.231086,1 +6,1,25,1,3,127471,0,9668.734,9.422314,0,13,1,11.47132,1.820449,0,0,0,13.29177,0,0,0,2,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,78.55493,9.176756,1.609438,2.587145,1 +6,1,25,1,4,127471,0,9668.734,10.42231,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,78.55493,9.176756,1.609438,,0 +6,1,25,1,5,127471,0,9668.734,11.42231,0,13,1,26.66102,3.787558,0,0,0,30.44858,0,0,0,2,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,78.55493,9.176756,1.609438,3.416039,1 +6,1,25,1,1,127472,0,9668.734,12.29295,0,13,1,38.3693,13.78897,37.58993,0,0,89.7482,0,0,0,3,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,78.55493,9.176756,1.609438,4.497008,1 +6,1,25,1,2,127472,0,9668.734,13.29295,0,13,1,19.71523,6.818182,17.16867,0,0,43.70208,0,0,0,2,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,78.55493,9.176756,1.609438,3.777396,1 +6,1,25,1,3,127472,0,9668.734,14.29295,0,13,1,34.41396,2.119701,28.84289,14.96259,0,65.37656,0,0,1,3,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,78.55493,9.176756,1.609438,4.180164,1 +6,1,25,1,4,127472,0,9668.734,15.29295,0,13,1,25.35731,2.581835,0,0,0,27.93914,0,0,0,2,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,78.55493,9.176756,1.609438,3.330029,1 +6,1,25,1,5,127472,0,9668.734,16.29295,0,13,1,14.81168,0,23.7537,0,0,38.56538,0,0,0,1,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,78.55493,9.176756,1.609438,3.652355,1 +6,1,25,1,1,127473,0,9668.734,38.16564,1,13,1,31.77458,20.44365,34.27458,0,0,86.49281,0,0,0,2,1,5,58.9,26.1,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,56.59937,9.176756,1.609438,4.460061,1 +6,1,25,1,2,127473,0,9668.734,39.16564,1,13,1,101.862,40.36145,0,0,0,142.2234,0,0,0,3,0,5,58.9,26.1,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,56.59937,9.176756,1.609438,4.957399,1 +6,1,25,1,3,127473,0,9668.734,40.16564,1,13,1,49.87531,32.49377,43.78055,0,0,126.1496,0,0,0,2,1,5,58.9,26.1,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,56.59937,9.176756,1.609438,4.837469,1 +6,1,25,1,4,127473,0,9668.734,41.16564,1,13,1,47.02628,4.702628,0,0,0,51.72891,0,0,0,3,0,5,58.9,26.1,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,56.59937,9.176756,1.609438,3.946017,1 +6,1,25,1,5,127473,0,9668.734,42.16564,1,13,1,42.31908,10.77021,25.6496,0,0,78.73889,0,0,0,4,1,5,58.9,26.1,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,56.59937,9.176756,1.609438,4.366137,1 +6,1,25,1,1,127474,0,9668.734,14.28884,1,13,1,107.9137,82.73381,0,0,0,190.6475,0,0,0,34,0,5,74.7,4.3,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,68.77795,9.176756,1.609438,5.250426,1 +6,1,25,1,2,127474,0,9668.734,15.28884,1,13,1,75.02738,95.0712,0,0,0,170.0986,0,0,0,24,1,5,74.7,4.3,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,68.77795,9.176756,1.609438,5.136378,1 +6,1,25,1,3,127474,0,9668.734,16.28884,1,13,1,182.2943,45.40648,0,0,0,227.7007,0,0,0,28,1,5,74.7,4.3,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,68.77795,9.176756,1.609438,5.428032,1 +6,1,25,1,4,127474,0,9668.734,17.28884,1,13,1,108.1143,4.495159,24.09405,0,0,136.7036,0,0,0,22,1,5,74.7,4.3,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,68.77795,9.176756,1.609438,4.917815,1 +6,1,25,1,5,127474,0,9668.734,18.28884,1,13,1,94.79475,6.749894,0,0,535.1968,636.7415,1,0,0,24,0,5,74.7,4.3,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,68.77795,9.176756,1.609438,6.456364,1 +1,1,0,0,1,127486,0,10792.37,5.193703,1,12,1,7.733492,0,0,0,0,7.733492,0,0,0,1,0,5,74.36826,13.73189,0,,450,450,1,1,1.609438,6.109248,1,0,0,0,0,0,81.95454,9.286687,1.609438,2.045561,1 +1,1,0,0,2,127486,0,10792.37,6.193703,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,450,450,1,1,1.609438,6.109248,1,0,0,0,0,0,81.95454,9.286687,1.609438,,0 +1,1,0,0,3,127486,0,10792.37,7.193703,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,450,450,1,1,1.609438,6.109248,1,0,0,0,0,0,81.95454,9.286687,1.609438,,0 +1,1,0,0,1,127487,0,10792.37,18.14374,0,12.32507,1,45.21119,0,0,0,0,45.21119,0,0,0,2,0,5,81.3,13.73189,0,,450,450,0,0,1.609438,6.109248,1,0,0,0,0,0,79.01041,9.286687,1.609438,3.811345,1 +1,1,0,0,2,127487,0,10792.37,19.14374,0,12.32507,1,37.56124,0,0,0,0,37.56124,0,0,0,1,0,5,81.3,13.73189,0,,450,450,0,0,1.609438,6.109248,1,0,0,0,0,0,79.01041,9.286687,1.609438,3.625973,1 +1,1,0,0,3,127487,0,10792.37,20.14374,0,12.32507,1,0,0,0,0,0,0,0,0,0,0,0,5,81.3,13.73189,0,,450,450,0,0,1.609438,6.109248,1,0,0,0,0,0,79.01041,9.286687,1.609438,,0 +1,1,0,0,1,127488,0,10792.37,50.19849,1,12,1,33.3135,88.65556,2.379536,0,0,124.3486,0,0,0,2,0,5,55,13.73189,0,,450,450,0,0,1.609438,6.109248,1,0,0,0,0,0,77.65372,9.286687,1.609438,4.823089,1 +1,1,0,0,2,127488,0,10792.37,51.19849,1,12,1,42.46053,63.02667,20.14153,0,0,125.6287,0,0,0,2,1,5,55,13.73189,0,,450,450,0,0,1.609438,6.109248,1,0,0,0,0,0,77.65372,9.286687,1.609438,4.833331,1 +1,1,0,0,3,127488,0,10792.37,52.19849,1,12,1,20.81269,38.45887,0,0,0,59.27156,0,0,0,2,0,5,55,13.73189,0,,450,450,0,0,1.609438,6.109248,1,0,0,0,0,0,77.65372,9.286687,1.609438,4.082129,1 +1,1,0,0,1,127489,0,10792.37,24.3039,1,12,1,48.1856,20.65437,0,0,0,68.83997,0,0,0,3,0,5,66.3,13.73189,0,,450,450,0,0,1.609438,6.109248,1,0,0,0,0,0,79.64108,9.286687,1.609438,4.231785,1 +1,1,0,0,2,127489,0,10792.37,25.3039,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,66.3,13.73189,0,,450,450,0,0,1.609438,6.109248,1,0,0,0,0,0,79.64108,9.286687,1.609438,,0 +1,1,0,0,3,127489,0,10792.37,26.3039,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,66.3,13.73189,0,,450,450,0,0,1.609438,6.109248,1,0,0,0,0,0,79.64108,9.286687,1.609438,,0 +1,1,0,0,1,127490,0,10792.37,49.90281,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,68.8,13.73189,0,,450,450,0,0,1.609438,6.109248,1,0,0,0,0,0,73.81825,9.286687,1.609438,,0 +1,1,0,0,2,127490,0,10792.37,50.90281,0,10,1,8.709853,0,20.14153,0,0,28.85139,0,0,0,0,1,5,68.8,13.73189,0,,450,450,0,0,1.609438,6.109248,1,0,0,0,0,0,73.81825,9.286687,1.609438,3.362158,1 +1,1,0,0,3,127490,0,10792.37,51.90281,0,10,1,120.664,34.2666,0,0,0,154.9306,0,0,0,8,6,5,68.8,13.73189,0,,450,450,0,0,1.609438,6.109248,1,0,0,0,0,0,73.81825,9.286687,1.609438,5.042977,1 +2,1,100,0,1,127496,0,4168.734,57.92471,0,12,1,0,2.255595,0,0,0,2.255595,0,0,0,0,0,1,74.7,17.4,0,,170,170,0,0,0,5.135798,1,0,0,0,1,0,65.84276,8.335608,0,.8134137,1 +2,1,100,0,2,127496,0,4168.734,58.92471,0,12,1,57.68194,7.563342,0,0,0,65.24529,0,0,0,3,0,1,74.7,17.4,0,,170,170,0,0,0,5.135798,1,0,0,0,1,0,65.84276,8.335608,0,4.178154,1 +2,1,100,0,3,127496,0,4168.734,59.92471,0,12,1,22.85012,32.3489,0,0,0,55.19902,0,0,0,2,0,1,74.7,17.4,0,,170,170,0,0,0,5.135798,1,0,0,0,1,0,65.84276,8.335608,0,4.010945,1 +2,1,100,0,4,127496,0,4168.734,60.92471,0,12,1,0,22.1103,0,0,0,22.1103,0,0,0,0,0,1,74.7,17.4,0,,170,170,0,0,0,5.135798,1,0,0,0,1,0,65.84276,8.335608,0,3.096044,1 +2,1,100,0,5,127496,0,4168.734,61.92471,0,12,1,93.58066,67.77824,27.44477,0,1607.753,1796.557,2,0,0,4,6,1,74.7,17.4,0,,170,170,0,0,0,5.135798,1,0,0,0,1,0,65.84276,8.335608,0,7.493627,1 +5,1,25,1,1,127511,0,1191.067,53.73032,1,3,1,9.592326,0,34.77218,0,0,44.36451,0,0,0,0,1,1,71.6,30.4,1,,0,0,0,0,0,0,0,3.258096,0,0,1,0,52.28558,7.083444,0,3.79244,1 +5,1,25,1,2,127511,0,1191.067,54.73032,1,3,1,0,0,0,0,0,0,0,0,0,0,0,1,71.6,30.4,1,,0,0,0,0,0,0,0,3.258096,0,0,1,0,52.28558,7.083444,0,,0 +5,1,25,1,3,127511,0,1191.067,55.73032,1,3,1,0,0,0,0,0,0,0,0,0,0,0,1,71.6,30.4,1,,0,0,0,0,0,0,0,3.258096,0,0,1,0,52.28558,7.083444,0,,0 +1,1,0,0,1,127513,0,7029.777,3.879534,1,9,1,0,14.46643,0,0,0,14.46643,0,0,0,0,0,4,74.36826,13.73189,0,,450,0,1,1,1.386294,0,1,0,0,0,1,0,57.77286,8.858052,1.386294,2.671831,1 +1,1,0,0,2,127513,0,7029.777,4.879535,1,9,1,11.50055,8.209201,0,0,0,19.70975,0,0,0,2,0,4,74.36826,13.73189,0,,450,0,1,1,1.386294,0,1,0,0,0,1,0,57.77286,8.858052,1.386294,2.981113,1 +1,1,0,0,3,127513,0,7029.777,5.879535,1,9,1,76.30923,11.42145,0,0,0,87.73067,0,0,0,4,0,4,74.36826,13.73189,0,,450,0,1,1,1.386294,0,1,0,0,0,1,0,57.77286,8.858052,1.386294,4.474272,1 +1,1,0,0,4,127513,0,7029.777,6.879535,1,9,1,27.20148,20.72845,0,0,0,47.92992,0,0,0,4,0,4,74.36826,13.73189,0,,450,0,1,1,1.386294,0,1,0,0,0,1,0,57.77286,8.858052,1.386294,3.86974,1 +1,1,0,0,5,127513,0,7029.777,7.879535,1,9,1,83.03004,9.983072,0,0,0,93.01312,0,0,0,5,0,4,74.36826,13.73189,0,,450,0,1,1,1.386294,0,1,0,0,0,1,0,57.77286,8.858052,1.386294,4.532741,1 +1,1,0,0,1,127514,0,7029.777,27.0527,0,10,1,25.17986,27.96763,0,0,0,53.14748,0,0,0,0,2,4,73.8,13.73189,1,,450,0,0,0,1.386294,0,1,0,0,1,0,0,64.24998,8.858052,1.386294,3.973071,1 +1,1,0,0,2,127514,0,7029.777,28.0527,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,73.8,13.73189,1,,450,0,0,0,1.386294,0,1,0,0,1,0,0,64.24998,8.858052,1.386294,,0 +1,1,0,0,3,127514,0,7029.777,29.0527,0,10,1,4.488778,6.284289,0,0,0,10.77307,0,0,0,1,0,4,73.8,13.73189,1,,450,0,0,0,1.386294,0,1,0,0,1,0,0,64.24998,8.858052,1.386294,2.377049,1 +1,1,0,0,4,127514,0,7029.777,30.0527,0,10,1,4.61042,4.633471,0,0,0,9.243891,0,0,0,1,0,4,73.8,13.73189,1,,450,0,0,0,1.386294,0,1,0,0,1,0,0,64.24998,8.858052,1.386294,2.223963,1 +1,1,0,0,5,127514,0,7029.777,31.0527,0,10,1,5.924672,2.598392,0,0,0,8.523064,0,0,0,1,0,4,73.8,13.73189,1,,450,0,0,0,1.386294,0,1,0,0,1,0,0,64.24998,8.858052,1.386294,2.142776,1 +1,1,0,0,1,127515,0,7029.777,2.767967,1,9,1,4.196643,10.71343,0,0,0,14.91007,0,0,0,1,0,4,74.36826,13.73189,0,,450,0,1,1,1.386294,0,1,0,0,1,0,0,69.64755,8.858052,1.386294,2.702037,1 +1,1,0,0,2,127515,0,7029.777,3.767967,1,9,1,4.381161,8.187295,0,0,0,12.56846,0,0,0,1,0,4,74.36826,13.73189,0,,450,0,1,1,1.386294,0,1,0,0,1,0,0,69.64755,8.858052,1.386294,2.53119,1 +1,1,0,0,3,127515,0,7029.777,4.767967,1,9,1,16.45885,9.002494,0,0,0,25.46135,0,0,0,3,0,4,74.36826,13.73189,0,,450,0,1,1,1.386294,0,1,0,0,1,0,0,69.64755,8.858052,1.386294,3.237162,1 +1,1,0,0,4,127515,0,7029.777,5.767967,1,9,1,0,6.219456,0,0,0,6.219456,0,0,0,0,0,4,74.36826,13.73189,0,,450,0,1,1,1.386294,0,1,0,0,1,0,0,69.64755,8.858052,1.386294,1.827682,1 +1,1,0,0,5,127515,0,7029.777,6.767967,1,9,1,19.04359,14.78206,0,0,0,33.82565,0,0,0,3,0,4,74.36826,13.73189,0,,450,0,1,1,1.386294,0,1,0,0,1,0,0,69.64755,8.858052,1.386294,3.521219,1 +1,1,0,0,1,127516,0,7029.777,25.68652,1,9,1,16.18705,13.26739,0,0,0,29.45444,0,0,0,2,1,4,68.8,13.73189,0,,450,0,0,0,1.386294,0,1,0,0,1,0,0,65.15411,8.858052,1.386294,3.382845,1 +1,1,0,0,2,127516,0,7029.777,26.68652,1,9,1,8.762322,2.245345,0,0,0,11.00767,0,0,0,1,0,4,68.8,13.73189,0,,450,0,0,0,1.386294,0,1,0,0,1,0,0,65.15411,8.858052,1.386294,2.398592,1 +1,1,0,0,3,127516,0,7029.777,27.68652,1,9,1,18.95262,0,0,0,0,18.95262,0,0,0,3,0,4,68.8,13.73189,0,,450,0,0,0,1.386294,0,1,0,0,1,0,0,65.15411,8.858052,1.386294,2.941942,1 +1,1,0,0,4,127516,0,7029.777,28.68652,1,9,1,26.27939,19.2485,0,0,0,45.52789,0,0,0,2,0,4,68.8,13.73189,0,,450,0,0,0,1.386294,0,1,0,0,1,0,0,65.15411,8.858052,1.386294,3.818325,1 +1,1,0,0,5,127516,0,7029.777,29.68652,1,9,1,58.18874,17.43546,0,0,0,75.62421,0,0,0,2,0,4,68.8,13.73189,0,,450,0,0,0,1.386294,0,1,0,0,1,0,0,65.15411,8.858052,1.386294,4.325777,1 +6,1,25,1,1,127517,0,2530.464,20.85969,0,12,1,13.18945,3.597122,0,0,978.8969,995.6835,1,0,0,2,0,2,26.3,26.1,0,,343,343,0,0,.6931472,5.83773,0,3.258096,7.224025,1,0,0,64.05187,7.836553,.6931472,6.90343,1 +6,1,25,1,2,127517,0,2530.464,21.85969,0,12,1,0,5.531216,0,0,0,5.531216,0,0,0,0,0,1,26.3,26.1,0,,343,343,0,0,0,5.83773,0,3.258096,7.224025,1,0,0,64.05187,7.836553,0,1.710408,1 +6,1,25,1,3,127517,0,2530.464,22.85969,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,26.3,26.1,0,,343,343,0,0,0,5.83773,0,3.258096,7.224025,1,0,0,64.05187,7.836553,0,,0 +6,1,25,1,4,127517,0,2530.464,23.85969,0,12,1,88.52006,0,0,0,0,88.52006,0,0,0,2,0,1,26.3,26.1,0,,343,343,0,0,0,5.83773,0,3.258096,7.224025,1,0,0,64.05187,7.836553,0,4.483229,1 +6,1,25,1,5,127517,0,2530.464,24.85969,0,12,1,331.57,2.539145,12.69573,0,2180.301,2527.105,2,0,0,26,10,1,26.3,26.1,0,,343,343,0,0,0,5.83773,0,3.258096,7.224025,1,0,0,64.05187,7.836553,0,7.83483,1 +6,1,25,1,1,127518,0,2530.464,20.67351,1,12,1,15.28777,0,33.8729,0,456.205,505.3657,1,0,0,0,1,2,47.4,17.4,1,,343,343,0,0,.6931472,5.83773,0,3.258096,7.224025,1,0,0,64.956,7.836553,.6931472,6.225282,1 +4,1,100,0,1,127545,0,17136.48,6.485969,0,15,1,2.355713,0,0,0,0,2.355713,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,75.91927,9.749022,1.386294,.8568433,1 +4,1,100,0,2,127545,0,17136.48,7.485969,0,15,1,8.625337,0,0,0,0,8.625337,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,75.91927,9.749022,1.386294,2.154704,1 +4,1,100,0,3,127545,0,17136.48,8.485969,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,75.91927,9.749022,1.386294,,0 +4,1,100,0,1,127546,0,17136.48,35.30458,0,12,1,85.39458,60.39458,0,0,0,145.7892,0,0,0,7,0,4,83.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,77.61796,9.749022,1.386294,4.982162,1 +4,1,100,0,2,127546,0,17136.48,36.30458,0,12,1,94.87871,87.51482,0,0,0,182.3935,0,0,0,6,1,4,83.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,77.61796,9.749022,1.386294,5.206167,1 +4,1,100,0,3,127546,0,17136.48,37.30458,0,12,1,82.06388,54.50123,0,0,0,136.5651,0,0,0,8,0,4,83.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,77.61796,9.749022,1.386294,4.916801,1 +4,1,100,0,1,127547,0,17136.48,34.63929,1,15,1,69.49352,11.27797,0,0,0,80.7715,0,0,0,1,0,4,85,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.76966,9.749022,1.386294,4.391624,1 +4,1,100,0,2,127547,0,17136.48,35.63929,1,15,1,115.4986,36.28032,34.28571,0,0,186.0647,0,0,0,3,2,4,85,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.76966,9.749022,1.386294,5.226094,1 +4,1,100,0,3,127547,0,17136.48,36.63929,1,15,1,29.97543,67.48895,0,0,0,97.46437,0,0,0,1,0,4,85,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.76966,9.749022,1.386294,4.579487,1 +4,1,100,0,1,127548,0,17136.48,10.01506,1,15,1,21.20141,1.325088,0,0,0,22.5265,0,0,0,2,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,75.4053,9.749022,1.386294,3.114692,1 +4,1,100,0,2,127548,0,17136.48,11.01506,1,15,1,53.90836,21.40162,0,0,0,75.30997,0,0,0,6,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,75.4053,9.749022,1.386294,4.321612,1 +4,1,100,0,3,127548,0,17136.48,12.01506,1,15,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,75.4053,9.749022,1.386294,,0 +11,1,0,1,1,127549,0,7982.012,14.22861,1,12,1,27.95955,0,0,0,0,27.95955,0,0,0,2,0,4,85.3,4.3,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,71.7188,8.985071,1.386294,3.330759,1 +11,1,0,1,2,127549,0,7982.012,15.22861,1,12,1,32.11758,3.097441,0,0,0,35.21502,0,0,0,4,0,4,85.3,4.3,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,71.7188,8.985071,1.386294,3.561473,1 +11,1,0,1,3,127549,0,7982.012,16.22861,1,12,1,110.2577,33.3003,0,0,0,143.558,0,0,0,10,0,4,85.3,4.3,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,71.7188,8.985071,1.386294,4.966739,1 +11,1,0,1,1,127550,0,7982.012,10.66119,1,12,1,11.89768,0,0,232.0048,0,11.89768,0,0,9,1,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,84.93909,8.985071,1.386294,2.476343,1 +11,1,0,1,2,127550,0,7982.012,11.66119,1,12,1,214.3277,3.24442,0,0,0,217.5721,0,0,0,7,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,84.93909,8.985071,1.386294,5.38253,1 +11,1,0,1,3,127550,0,7982.012,12.66119,1,12,1,197.3736,0,6.214073,0,0,203.5877,0,0,0,7,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,84.93909,8.985071,1.386294,5.316097,1 +11,1,0,1,1,127551,0,7982.012,16.76386,1,12,1,154.075,12.73647,0,0,0,166.8114,0,0,0,6,1,4,83.2,13,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,71.7188,8.985071,1.386294,5.116864,1 +11,1,0,1,2,127551,0,7982.012,17.76386,1,12,1,28.85139,6.015242,0,0,0,34.86663,0,0,0,4,0,4,83.2,13,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,71.7188,8.985071,1.386294,3.55153,1 +11,1,0,1,3,127551,0,7982.012,18.76386,1,12,1,14.8662,27.9336,11.4222,0,0,54.222,0,0,0,2,0,4,83.2,13,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,71.7188,8.985071,1.386294,3.993087,1 +11,1,0,1,1,127552,0,7982.012,45.88091,1,12,1,78.52469,7.001785,32.95063,0,0,118.4771,0,0,0,4,0,4,53.7,26.1,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.9501,8.985071,1.386294,4.77472,1 +11,1,0,1,2,127552,0,7982.012,46.88091,1,12,1,95.26402,7.065868,28.85139,0,0,131.1813,0,0,0,2,0,4,53.7,26.1,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.9501,8.985071,1.386294,4.87658,1 +11,1,0,1,3,127552,0,7982.012,47.88091,1,12,1,220.5401,2.031715,51.78394,0,0,274.3558,0,0,0,5,2,4,53.7,26.1,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.9501,8.985071,1.386294,5.614426,1 +4,1,100,1,1,127566,0,7645.161,51.09925,0,7,1,84.53237,26.52278,0,0,0,111.0552,0,0,0,18,0,2,97.9,0,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,73.07475,8.941959,.6931472,4.710027,1 +4,1,100,1,2,127566,0,7645.161,52.09925,0,7,1,99.12376,20.46002,0,0,0,119.5838,0,0,0,21,0,2,97.9,0,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,73.07475,8.941959,.6931472,4.784017,1 +4,1,100,1,3,127566,0,7645.161,53.09925,0,7,1,52.1197,24.53865,0,0,0,76.65836,0,0,0,14,0,2,97.9,0,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,73.07475,8.941959,.6931472,4.339359,1 +4,1,100,1,4,127566,0,7645.161,54.09925,0,7,1,37.3444,20.74689,0,0,0,58.09129,0,0,0,10,0,2,97.9,0,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,73.07475,8.941959,.6931472,4.062016,1 +4,1,100,1,5,127566,0,7645.161,55.09925,0,7,1,48.66695,19.04359,0,0,0,67.71054,0,0,0,14,0,2,97.9,0,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,73.07475,8.941959,.6931472,4.215242,1 +4,1,100,1,1,127567,0,7645.161,46.09446,1,11,1,99.52039,83.85492,0,0,0,183.3753,0,0,0,11,0,2,64.2,17.4,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,61.68202,8.941959,.6931472,5.211535,1 +4,1,100,1,2,127567,0,7645.161,47.09446,1,11,1,54.76451,63.74589,0,0,0,118.5104,0,0,0,8,0,2,64.2,17.4,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,61.68202,8.941959,.6931472,4.775001,1 +4,1,100,1,3,127567,0,7645.161,48.09446,1,11,1,181.6708,100.788,0,0,780.0798,1062.539,1,0,0,16,0,2,64.2,17.4,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,61.68202,8.941959,.6931472,6.968416,1 +4,1,100,1,4,127567,0,7645.161,49.09446,1,11,1,18.90272,44.93315,0,0,0,63.83587,0,0,0,3,0,2,64.2,17.4,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,61.68202,8.941959,.6931472,4.156315,1 +4,1,100,1,5,127567,0,7645.161,50.09446,1,11,1,33.43208,38.23952,0,0,0,71.6716,0,0,0,4,0,2,64.2,17.4,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,61.68202,8.941959,.6931472,4.272095,1 +4,1,100,1,1,127568,0,6055.831,20.10678,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,91.6,13,0,,374,374,0,0,0,5.924256,1,0,0,0,0,0,76.94312,8.708942,0,,0 +4,1,100,1,2,127568,0,6055.831,21.10678,0,12,1,19.16758,2.201533,0,0,537.7218,559.0909,1,0,0,3,0,1,91.6,13,0,,374,374,0,0,0,5.924256,1,0,0,0,0,0,76.94312,8.708942,0,6.326312,1 +4,1,100,1,3,127568,0,6055.831,22.10678,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,91.6,13,0,,374,374,0,0,0,5.924256,1,0,0,0,0,0,76.94312,8.708942,0,,0 +4,1,100,1,4,127568,0,6055.831,23.10678,0,12,1,7.376671,0,0,0,0,7.376671,0,0,0,1,0,1,91.6,13,0,,374,374,0,0,0,5.924256,1,0,0,0,0,0,76.94312,8.708942,0,1.998322,1 +4,1,100,1,5,127568,0,6055.831,24.10678,0,12,1,0,0,0,0,666.5975,666.5975,1,0,0,0,0,2,91.6,13,0,,374,374,0,0,.6931472,5.924256,1,0,0,0,0,0,76.94312,8.708942,.6931472,6.502186,1 +11,1,0,1,1,127595,0,10902.61,2.45859,0,9,1,67.14629,29.10072,0,0,0,96.247,0,0,0,6,2,5,74.36826,13.73189,0,,0,291,1,0,1.609438,5.673323,0,0,0,1,0,0,72.88785,9.296849,1.609438,4.566918,1 +11,1,0,1,2,127595,0,10902.61,3.45859,0,9,1,32.31106,15.36145,0,0,0,47.67251,0,0,0,5,0,5,74.36826,13.73189,0,,0,291,1,0,1.609438,5.673323,0,0,0,1,0,0,72.88785,9.296849,1.609438,3.864355,1 +11,1,0,1,3,127595,0,10902.61,4.45859,0,9,1,93.46633,59.89526,0,0,0,153.3616,0,0,0,14,0,5,74.36826,13.73189,0,,0,291,1,0,1.609438,5.673323,0,0,0,1,0,0,72.88785,9.296849,1.609438,5.032799,1 +11,1,0,1,1,127596,0,10902.61,11.19507,0,9,1,24.58034,2.002398,23.80696,0,0,50.38969,0,0,0,2,1,5,74.36826,13.73189,0,,0,291,1,0,1.609438,5.673323,0,0,0,1,0,0,74.00797,9.296849,1.609438,3.919786,1 +11,1,0,1,2,127596,0,10902.61,12.19507,0,9,1,65.71741,5.750274,14.30449,0,0,85.77218,0,0,0,5,1,5,74.36826,13.73189,0,,0,291,1,0,1.609438,5.673323,0,0,0,1,0,0,74.00797,9.296849,1.609438,4.451694,1 +11,1,0,1,3,127596,0,10902.61,13.19507,0,9,1,262.2494,5.955112,24.49875,0,0,292.7032,0,0,0,5,1,5,74.36826,13.73189,0,,0,291,1,0,1.609438,5.673323,0,0,0,1,0,0,74.00797,9.296849,1.609438,5.679159,1 +11,1,0,1,1,127597,0,10902.61,32.24915,1,9,1,80.33573,17.48801,31.32494,0,0,129.1487,0,0,0,5,2,5,78.9,34.8,0,,0,291,0,0,1.609438,5.673323,0,0,0,1,0,0,65.76151,9.296849,1.609438,4.860964,1 +11,1,0,1,2,127597,0,10902.61,33.24915,1,9,1,349.0854,28.63089,0,0,0,377.7163,0,0,0,11,1,5,78.9,34.8,0,,0,291,0,0,1.609438,5.673323,0,0,0,1,0,0,65.76151,9.296849,1.609438,5.934144,1 +11,1,0,1,3,127597,0,10902.61,34.24915,1,9,1,228.7581,46.49377,36.48379,0,394.8678,706.6035,1,0,0,11,1,5,78.9,34.8,0,,0,291,0,0,1.609438,5.673323,0,0,0,1,0,0,65.76151,9.296849,1.609438,6.56047,1 +11,1,0,1,1,127598,0,10902.61,31.96441,0,12,1,74.34053,38.81894,31.32494,0,720.2338,864.7182,2,0,0,6,1,5,82.1,17.4,0,,0,291,0,0,1.609438,5.673323,0,0,0,0,0,1,53.44062,9.296849,1.609438,6.762403,1 +11,1,0,1,2,127598,0,10902.61,32.96441,0,12,1,215.2245,33.61446,38.33516,0,0,287.1742,0,0,0,11,7,5,82.1,17.4,0,,0,291,0,0,1.609438,5.673323,0,0,0,0,0,1,53.44062,9.296849,1.609438,5.660089,1 +11,1,0,1,3,127598,0,10902.61,33.96441,0,12,1,175.3865,88.24937,34.399,0,0,298.0349,0,0,0,11,1,5,82.1,17.4,0,,0,291,0,0,1.609438,5.673323,0,0,0,0,0,1,53.44062,9.296849,1.609438,5.697211,1 +11,1,0,1,1,127599,0,10902.61,10.11088,1,9,1,34.17266,0,0,0,0,34.17266,0,0,0,3,1,5,74.36826,13.73189,0,,0,291,1,1,1.609438,5.673323,0,0,0,1,0,0,75.8055,9.296849,1.609438,3.531426,1 +11,1,0,1,2,127599,0,10902.61,11.11088,1,9,1,49.28806,6.440307,30.33406,0,0,86.06243,0,0,0,6,1,5,74.36826,13.73189,0,,0,291,1,1,1.609438,5.673323,0,0,0,1,0,0,75.8055,9.296849,1.609438,4.455073,1 +11,1,0,1,3,127599,0,10902.61,12.11088,1,9,1,17.45636,4.82793,31.79551,0,0,54.0798,0,0,0,2,1,5,74.36826,13.73189,0,,0,291,1,1,1.609438,5.673323,0,0,0,1,0,0,75.8055,9.296849,1.609438,3.990461,1 +6,1,25,1,1,127600,0,7676.799,21.86995,1,15,1,23.98082,6.294964,31.95444,0,0,62.23022,0,0,0,2,0,4,84.2,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.52619,8.946088,1.386294,4.130841,1 +6,1,25,1,2,127600,0,7676.799,22.86995,1,15,1,38.8828,13.36254,0,0,0,52.24535,0,0,0,4,0,4,84.2,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.52619,8.946088,1.386294,3.955951,1 +6,1,25,1,3,127600,0,7676.799,23.86995,1,15,1,23.4414,2.319202,38.04988,0,0,63.81047,0,0,0,2,0,4,84.2,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.52619,8.946088,1.386294,4.155917,1 +6,1,25,1,1,127601,0,7676.799,17.16906,1,12,1,13.18945,11.1211,0,0,0,24.31055,0,0,0,2,0,4,78.9,0,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,74.88385,8.946088,1.386294,3.19091,1 +6,1,25,1,2,127601,0,7676.799,18.16906,1,12,1,33.954,0,31.47864,0,0,65.43264,0,0,0,3,0,4,78.9,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,74.88385,8.946088,1.386294,4.181021,1 +6,1,25,1,3,127601,0,7676.799,19.16906,1,12,1,50.87282,7.082294,0,0,0,57.95511,0,0,0,4,0,4,78.9,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,74.88385,8.946088,1.386294,4.059669,1 +6,1,25,1,1,127602,0,7676.799,53.17728,0,12,1,19.78417,49.43045,0,0,0,69.21463,0,0,0,2,0,4,85.3,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,63.87726,8.946088,1.386294,4.237212,1 +6,1,25,1,2,127602,0,7676.799,54.17728,0,12,1,57.41512,31.06791,33.19277,0,0,121.6758,0,0,0,5,0,4,85.3,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,63.87726,8.946088,1.386294,4.80136,1 +6,1,25,1,3,127602,0,7676.799,55.17728,0,12,1,75.5611,48.17955,0,0,0,123.7406,0,0,0,5,0,4,85.3,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,63.87726,8.946088,1.386294,4.818188,1 +6,1,25,1,1,127603,0,7676.799,53.577,1,12,1,68.95084,51.25899,230.8154,0,1179.568,1530.594,1,0,0,2,0,4,71.6,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,65.51687,8.946088,1.386294,7.333411,1 +6,1,25,1,2,127603,0,7676.799,54.577,1,12,1,62.43155,65.4436,42.91895,0,0,170.7941,0,0,0,5,0,4,71.6,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,65.51687,8.946088,1.386294,5.140459,1 +6,1,25,1,3,127603,0,7676.799,55.577,1,12,1,22.44389,51.94514,0,0,0,74.38903,0,0,0,2,0,4,71.6,21.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,65.51687,8.946088,1.386294,4.309309,1 +4,1,100,1,1,127611,0,11610.42,11.06639,0,13,1,113.6631,22.9682,0,0,0,136.6313,0,0,0,10,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,1,0,0,79.12157,9.359744,1.609438,4.917286,1 +4,1,100,1,2,127611,0,11610.42,12.06639,0,13,1,8.086253,0,0,0,0,8.086253,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,1,0,0,79.12157,9.359744,1.609438,2.090165,1 +4,1,100,1,3,127611,0,11610.42,13.06639,0,13,1,123.8329,13.2973,0,71.04177,1380.973,1518.103,1,0,13,13,8,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,1,0,0,79.12157,9.359744,1.609438,7.325217,1 +4,1,100,1,1,127612,0,11610.42,8.689939,0,13,1,50.05889,63.03298,0,0,887.8975,1000.989,1,0,0,5,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,1,0,0,74.88016,9.359744,1.609438,6.908744,1 +4,1,100,1,2,127612,0,11610.42,9.689939,0,13,1,105.4771,32.70081,0,182.2102,0,138.1779,0,0,21,7,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,1,0,0,74.88016,9.359744,1.609438,4.928542,1 +4,1,100,1,3,127612,0,11610.42,10.68994,0,13,1,55.03685,17.09091,0,194.5209,0,72.12776,0,0,21,4,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,1,0,0,74.88016,9.359744,1.609438,4.278439,1 +4,1,100,1,1,127613,0,11610.42,34.77618,0,12,1,106.0071,48.20966,0,0,204.9764,359.1932,1,0,0,8,1,5,53.7,17.4,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,64.79161,9.359744,1.609438,5.88386,1 +4,1,100,1,2,127613,0,11610.42,35.77618,0,12,1,30.18868,22.73854,0,75.47169,0,52.92722,0,0,4,3,0,5,53.7,17.4,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,64.79161,9.359744,1.609438,3.968918,1 +4,1,100,1,3,127613,0,11610.42,36.77618,0,12,1,74.69287,10.05405,0,171.9902,0,84.74693,0,0,7,5,1,5,53.7,17.4,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,64.79161,9.359744,1.609438,4.43967,1 +4,1,100,1,1,127614,0,11610.42,35.45517,1,13,1,148.4099,50.30035,0,0,0,198.7103,0,0,0,15,0,5,38.9,21.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,67.10754,9.359744,1.609438,5.291848,1 +4,1,100,1,2,127614,0,11610.42,36.45517,1,13,1,67.16982,43.47709,0,16.17251,0,110.6469,0,0,1,4,0,5,38.9,21.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,67.10754,9.359744,1.609438,4.706344,1 +4,1,100,1,3,127614,0,11610.42,37.45517,1,13,1,187.715,87.88698,0,243.0319,0,275.602,0,0,24,9,4,5,38.9,21.7,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,67.10754,9.359744,1.609438,5.618958,1 +4,1,100,1,1,127615,0,11610.42,12.72005,1,13,1,130.7421,41.56655,30.62426,0,0,202.9329,0,0,0,22,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,1,0,0,78.60759,9.359744,1.609438,5.312875,1 +4,1,100,1,2,127615,0,11610.42,13.72005,1,13,1,140.1617,31.34232,0,0,0,171.504,0,0,0,23,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,1,0,0,78.60759,9.359744,1.609438,5.144607,1 +4,1,100,1,3,127615,0,11610.42,14.72005,1,13,1,110.5651,15.47912,26.04423,74.72236,0,152.0885,0,0,13,13,7,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,1,0,0,78.60759,9.359744,1.609438,5.024462,1 +2,1,100,0,1,127628,0,8910.67,15.91786,0,12,1,0,4.640095,14.30101,0,0,18.94111,0,0,0,0,0,6,76.3,13.73189,0,,624,624,1,0,1.791759,6.436151,1,0,0,0,0,0,80.20427,9.095117,1.791759,2.941334,1 +2,1,100,0,2,127628,0,8910.67,16.91786,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,76.3,13.73189,0,,624,624,1,0,1.791759,6.436151,1,0,0,0,0,0,80.20427,9.095117,1.791759,,0 +2,1,100,0,3,127628,0,8910.67,17.91786,0,12,1,12.3885,0,0,0,0,12.3885,0,0,0,1,0,6,76.3,13.73189,0,,624,624,1,0,1.791759,6.436151,1,0,0,0,0,0,80.20427,9.095117,1.791759,2.516769,1 +2,1,100,0,4,127628,0,8910.67,18.91786,0,12,1,3.212483,2.349702,0,0,0,5.562184,0,0,0,1,0,6,76.3,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,0,0,0,80.20427,9.095117,1.791759,1.715991,1 +2,1,100,0,5,127628,0,8910.67,19.91786,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,76.3,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,0,0,0,80.20427,9.095117,1.791759,,0 +2,1,100,0,1,127629,0,8910.67,17.71389,0,12,1,19.54194,0,0,0,0,19.54194,0,0,0,0,0,6,92.5,13.73189,0,,624,624,1,0,1.791759,6.436151,1,0,0,0,0,0,80.20427,9.095117,1.791759,2.972563,1 +2,1,100,0,2,127629,0,8910.67,18.71389,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,92.5,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,0,0,0,80.20427,9.095117,1.791759,,0 +2,1,100,0,3,127629,0,8910.67,19.71389,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,92.5,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,0,0,0,80.20427,9.095117,1.791759,,0 +2,1,100,0,4,127629,0,8910.67,20.71389,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,92.5,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,0,0,0,80.20427,9.095117,1.791759,,0 +2,1,100,0,5,127629,0,8910.67,21.71389,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,92.5,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,0,0,0,80.20427,9.095117,1.791759,,0 +2,1,100,0,1,127630,0,8910.67,47.63039,0,12,1,10.70791,0,43.27781,0,0,53.98572,0,0,0,0,1,6,90,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,1,0,0,66.07664,9.095117,1.791759,3.98872,1 +2,1,100,0,2,127630,0,8910.67,48.63039,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,90,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,1,0,0,66.07664,9.095117,1.791759,,0 +2,1,100,0,3,127630,0,8910.67,49.63039,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,90,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,1,0,0,66.07664,9.095117,1.791759,,0 +2,1,100,0,4,127630,0,8910.67,50.63039,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,90,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,1,0,0,66.07664,9.095117,1.791759,,0 +2,1,100,0,5,127630,0,8910.67,51.63039,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,90,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,1,0,0,66.07664,9.095117,1.791759,,0 +2,1,100,0,1,127631,0,8910.67,9.270363,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,624,624,1,0,1.791759,6.436151,1,0,0,0,0,0,84.45741,9.095117,1.791759,,0 +2,1,100,0,2,127631,0,8910.67,10.27036,0,12,1,26.12956,4.082744,0,0,0,30.2123,0,0,0,1,1,6,74.36826,13.73189,0,,624,624,1,0,1.791759,6.436151,1,0,0,0,0,0,84.45741,9.095117,1.791759,3.408249,1 +2,1,100,0,3,127631,0,8910.67,11.27036,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,624,624,1,0,1.791759,6.436151,1,0,0,0,0,0,84.45741,9.095117,1.791759,,0 +2,1,100,0,4,127631,0,8910.67,12.27036,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,624,624,1,0,1.791759,6.436151,1,0,0,0,0,0,84.45741,9.095117,1.791759,,0 +2,1,100,0,5,127631,0,8910.67,13.27036,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,624,624,1,0,1.791759,6.436151,1,0,0,0,0,0,84.45741,9.095117,1.791759,,0 +2,1,100,0,1,127632,0,8910.67,47.85216,1,12,1,19.63117,0,39.78584,0,0,59.41702,0,0,0,1,1,6,82.5,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,1,0,0,70.76368,9.095117,1.791759,4.08458,1 +2,1,100,0,2,127632,0,8910.67,48.85216,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,82.5,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,1,0,0,70.76368,9.095117,1.791759,,0 +2,1,100,0,3,127632,0,8910.67,49.85216,1,12,1,29.23687,11.11497,33.45391,0,0,73.80575,0,0,0,2,1,6,82.5,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,1,0,0,70.76368,9.095117,1.791759,4.301436,1 +2,1,100,0,4,127632,0,8910.67,50.85216,1,12,1,0,11.7531,0,0,0,11.7531,0,0,0,0,0,6,82.5,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,1,0,0,70.76368,9.095117,1.791759,2.464117,1 +2,1,100,0,5,127632,0,8910.67,51.85216,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,82.5,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,1,0,0,70.76368,9.095117,1.791759,,0 +2,1,100,0,1,127633,0,8910.67,14.77071,1,12,1,41.19572,2.40928,0,0,0,43.605,0,0,0,1,1,6,85,13.73189,0,,624,624,1,1,1.791759,6.436151,1,0,0,0,0,0,74.86757,9.095117,1.791759,3.775172,1 +2,1,100,0,2,127633,0,8910.67,15.77071,1,12,1,13.06478,4.082744,26.12956,0,0,43.27708,0,0,0,0,1,6,85,13.73189,0,,624,624,1,1,1.791759,6.436151,1,0,0,0,0,0,74.86757,9.095117,1.791759,3.767623,1 +2,1,100,0,3,127633,0,8910.67,16.7707,1,12,1,3.468781,0,0,0,0,3.468781,0,0,0,1,0,6,85,13.73189,0,,624,624,1,1,1.791759,6.436151,1,0,0,0,0,0,74.86757,9.095117,1.791759,1.243803,1 +2,1,100,0,4,127633,0,8910.67,17.7707,1,12,1,22.48738,0,0,0,0,22.48738,0,0,0,3,0,6,85,13.73189,0,,624,624,1,1,1.791759,6.436151,1,0,0,0,0,0,74.86757,9.095117,1.791759,3.112954,1 +2,1,100,0,5,127633,0,8910.67,18.7707,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,85,13.73189,0,,624,624,0,0,1.791759,6.436151,1,0,0,0,0,0,74.86757,9.095117,1.791759,,0 +4,1,100,1,1,127637,0,2199.752,48.90623,1,13,1,21.10977,0,43.80579,0,0,64.91556,0,0,0,2,0,1,61.1,21.7,0,,403,403,0,0,0,5.998937,1,0,0,1,0,0,69.50401,7.696554,0,4.173087,1 +4,1,100,1,2,127637,0,2199.752,49.90623,1,13,1,0,0,0,0,0,0,0,0,0,0,0,1,61.1,21.7,0,,403,403,0,0,0,5.998937,1,0,0,1,0,0,69.50401,7.696554,0,,0 +4,1,100,1,3,127637,0,2199.752,50.90623,1,13,1,0,0,0,0,0,0,0,0,0,0,0,1,61.1,21.7,0,,403,403,0,0,0,5.998937,1,0,0,1,0,0,69.50401,7.696554,0,,0 +4,1,100,1,4,127637,0,2199.752,51.90623,1,13,1,23.18034,0,25.656,0,0,48.83635,0,0,0,3,0,1,61.1,21.7,0,,403,403,0,0,0,5.998937,1,0,0,1,0,0,69.50401,7.696554,0,3.888475,1 +4,1,100,1,5,127637,0,2199.752,52.90623,1,13,1,380.5827,0,55.08294,0,1714.241,2149.906,1,0,0,2,0,1,61.1,21.7,0,,403,403,0,0,0,5.998937,1,0,0,1,0,0,69.50401,7.696554,0,7.67318,1 +11,1,0,1,1,127641,0,9150.124,.6872005,0,12,1,101.3189,18.94484,0,0,0,120.2638,0,0,0,6,1,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,74.24259,9.121632,1.386294,4.789688,1 +11,1,0,1,2,127641,0,9150.124,1.687201,0,12,1,79.68237,23.05586,0,0,0,102.7382,0,0,0,6,1,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,74.24259,9.121632,1.386294,4.632185,1 +11,1,0,1,3,127641,0,9150.124,2.687201,0,12,1,57.4813,22.81796,0,0,236.813,317.1122,1,0,0,6,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,74.24259,9.121632,1.386294,5.759256,1 +11,1,0,1,4,127641,0,9150.124,3.687201,0,12,1,89.5574,10.23513,0,0,0,99.79253,0,0,0,8,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,74.24259,9.121632,1.386294,4.603093,1 +11,1,0,1,5,127641,0,9150.124,4.687201,0,12,1,45.70461,15.88235,0,0,0,61.58697,0,0,0,6,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,74.24259,9.121632,1.386294,4.12045,1 +11,1,0,1,1,127642,0,9150.124,25.93566,1,12,1,98.32134,53.5012,0,0,0,151.8225,0,0,0,7,0,4,42.1,21.7,1,,0,0,0,0,1.386294,0,0,0,0,1,0,0,67.19587,9.121632,1.386294,5.022712,1 +11,1,0,1,2,127642,0,9150.124,26.93566,1,12,1,63.52684,23.7678,0,0,0,87.29463,0,0,0,7,0,4,42.1,21.7,1,,0,0,0,0,1.386294,0,0,0,0,1,0,0,67.19587,9.121632,1.386294,4.469289,1 +11,1,0,1,3,127642,0,9150.124,27.93566,1,12,1,44.88778,30.44888,0,0,0,75.33665,0,0,0,6,0,4,42.1,21.7,1,,0,0,0,0,1.386294,0,0,0,0,1,0,0,67.19587,9.121632,1.386294,4.321967,1 +11,1,0,1,4,127642,0,9150.124,28.93566,1,12,1,117.1047,57.42278,0,0,0,174.5274,0,0,0,9,0,4,42.1,21.7,1,,0,0,0,0,1.386294,0,0,0,0,1,0,0,67.19587,9.121632,1.386294,5.162082,1 +11,1,0,1,5,127642,0,9150.124,29.93566,1,12,1,118.2818,46.21244,0,0,724.4604,888.9547,1,0,0,6,0,4,42.1,21.7,1,,0,0,0,0,1.386294,0,0,0,0,1,0,0,67.19587,9.121632,1.386294,6.790046,1 +11,1,0,1,1,127643,0,9150.124,4.982888,0,12,1,34.77218,1.199041,0,0,0,35.97122,0,0,0,3,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,74.24259,9.121632,1.386294,3.582719,1 +11,1,0,1,2,127643,0,9150.124,5.982888,0,12,1,83.7897,1.09529,0,0,0,84.88499,0,0,0,5,1,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,74.24259,9.121632,1.386294,4.441298,1 +11,1,0,1,3,127643,0,9150.124,6.982888,0,12,1,67.98504,0,0,0,0,67.98504,0,0,0,4,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,74.24259,9.121632,1.386294,4.219288,1 +11,1,0,1,4,127643,0,9150.124,7.982888,0,12,1,26.74043,7.076994,0,0,0,33.81743,0,0,0,3,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,74.24259,9.121632,1.386294,3.520976,1 +11,1,0,1,5,127643,0,9150.124,8.982888,0,12,1,10.57977,0,0,0,0,10.57977,0,0,0,1,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,74.24259,9.121632,1.386294,2.358944,1 +11,1,0,1,1,127644,0,9150.124,26.34908,0,14,1,57.40408,6.792566,0,0,299.7602,363.9568,1,1,0,1,0,4,70.5,8.7,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,71.81533,9.121632,1.386294,5.897035,1 +11,1,0,1,2,127644,0,9150.124,27.34908,0,14,1,107.667,2.88609,20.60241,0,0,131.1555,0,0,0,6,2,4,70.5,8.7,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,71.81533,9.121632,1.386294,4.876384,1 +11,1,0,1,3,127644,0,9150.124,28.34908,0,14,1,0,4.927681,0,0,0,4.927681,0,0,0,0,0,4,70.5,8.7,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,71.81533,9.121632,1.386294,1.594869,1 +11,1,0,1,4,127644,0,9150.124,29.34908,0,14,1,0,0,0,0,822.2914,822.2914,1,0,0,0,0,4,70.5,8.7,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,71.81533,9.121632,1.386294,6.712095,1 +11,1,0,1,5,127644,0,9150.124,30.34908,0,14,1,11.00296,0,0,0,0,11.00296,0,0,0,1,0,4,70.5,8.7,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,71.81533,9.121632,1.386294,2.398165,1 +6,1,25,0,1,127645,0,13521.71,39.54826,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,78.64024,9.512126,1.386294,,0 +6,1,25,0,2,127645,0,13521.71,40.54826,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,78.64024,9.512126,1.386294,,0 +6,1,25,0,3,127645,0,13521.71,41.54826,0,12,1,16.70762,0,0,0,0,16.70762,0,0,0,2,0,4,76.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,78.64024,9.512126,1.386294,2.815865,1 +6,1,25,0,4,127645,0,13521.71,42.54826,0,12,1,30.08204,0,0,0,0,30.08204,0,0,0,1,0,3,76.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.64024,9.512126,1.098612,3.403929,1 +6,1,25,0,5,127645,0,13521.71,43.54826,0,12,1,118.1117,3.980825,0,0,0,122.0925,0,0,0,3,0,3,76.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.64024,9.512126,1.098612,4.804779,1 +6,1,25,0,1,127646,0,13521.71,36.74469,1,12,1,35.92462,15.04711,0,0,0,50.97173,0,0,0,4,0,4,78.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.53143,9.512126,1.386294,3.931271,1 +6,1,25,0,2,127646,0,13521.71,37.74469,1,12,1,98.65229,17.70889,8.528302,0,1512.577,1637.466,1,0,0,6,0,4,78.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.53143,9.512126,1.386294,7.400906,1 +6,1,25,0,3,127646,0,13521.71,38.74469,1,12,1,41.03194,0,0,0,0,41.03194,0,0,0,1,1,4,78.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.53143,9.512126,1.386294,3.714351,1 +6,1,25,0,4,127646,0,13521.71,39.74469,1,12,1,164.0839,0,0,0,0,164.0839,0,0,0,5,0,3,78.8,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,79.53143,9.512126,1.098612,5.100378,1 +6,1,25,0,5,127646,0,13521.71,40.74469,1,12,1,51.27136,1.538141,0,0,1592.955,1645.765,2,0,0,8,0,3,78.8,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,79.53143,9.512126,1.098612,7.405961,1 +6,1,25,0,1,127647,0,13521.71,3.367557,0,12,1,34.15783,13.10365,0,0,0,47.26148,0,0,0,2,3,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.0187,9.512126,1.386294,3.855696,1 +6,1,25,0,2,127647,0,13521.71,4.367557,0,12,1,57.14286,20.96496,0,0,0,78.10782,0,0,0,9,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.0187,9.512126,1.386294,4.35809,1 +6,1,25,0,3,127647,0,13521.71,5.367557,0,12,1,75.18427,14.38329,0,0,0,89.56757,0,0,0,10,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.0187,9.512126,1.386294,4.494993,1 +6,1,25,0,4,127647,0,13521.71,6.367557,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,82.0187,9.512126,1.098612,,0 +6,1,25,0,5,127647,0,13521.71,7.367557,0,12,1,20.42518,0,0,0,0,20.42518,0,0,0,2,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,82.0187,9.512126,1.098612,3.016768,1 +6,1,25,0,1,127648,0,13521.71,14.33812,0,12,1,42.99176,9.422851,0,0,0,52.4146,0,0,0,5,0,4,76.3,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,80.4863,9.512126,1.386294,3.959185,1 +6,1,25,0,2,127648,0,13521.71,15.33812,0,12,1,99.19138,0,4.285714,0,0,103.4771,0,0,0,8,0,4,76.3,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,80.4863,9.512126,1.386294,4.63935,1 +6,1,25,0,3,127648,0,13521.71,16.33813,0,12,1,70.34398,2.088452,11.63145,0,0,84.06388,0,0,0,8,0,4,76.3,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,80.4863,9.512126,1.386294,4.431577,1 +1,1,0,1,1,127650,0,1594.661,9.355236,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,0,0,1,1,.6931472,0,1,0,0,1,0,0,73.40184,7.375044,.6931472,,0 +1,1,0,1,2,127650,0,1594.661,10.35524,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,0,0,1,1,.6931472,0,1,0,0,1,0,0,73.40184,7.375044,.6931472,,0 +1,1,0,1,3,127650,0,1594.661,11.35524,1,12,1,23.4414,0,0,0,0,23.4414,0,0,0,1,0,2,74.36826,13.73189,0,,0,0,1,1,.6931472,0,1,0,0,1,0,0,73.40184,7.375044,.6931472,3.154504,1 +1,1,0,1,4,127650,0,1594.661,12.35524,1,12,1,19.8248,0,0,0,0,19.8248,0,0,0,1,0,2,74.36826,13.73189,0,,0,0,1,1,.6931472,0,1,0,0,1,0,0,73.40184,7.375044,.6931472,2.986934,1 +1,1,0,1,5,127650,0,1594.661,13.35524,1,12,1,33.43208,0,0,0,0,33.43208,0,0,0,0,0,2,74.36826,13.73189,0,,0,0,1,1,.6931472,0,1,0,0,1,0,0,73.40184,7.375044,.6931472,3.509516,1 +1,1,0,1,1,127651,0,1594.661,35.21971,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,64.2,17.4,0,,0,0,0,0,.6931472,0,1,0,0,1,0,0,64.5417,7.375044,.6931472,,0 +1,1,0,1,2,127651,0,1594.661,36.21971,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,64.2,17.4,0,,0,0,0,0,.6931472,0,1,0,0,1,0,0,64.5417,7.375044,.6931472,,0 +1,1,0,1,3,127651,0,1594.661,37.21971,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,64.2,17.4,0,,0,0,0,0,.6931472,0,1,0,0,1,0,0,64.5417,7.375044,.6931472,,0 +1,1,0,1,4,127651,0,1594.661,38.21971,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,64.2,17.4,0,,0,0,0,0,.6931472,0,1,0,0,1,0,0,64.5417,7.375044,.6931472,,0 +1,1,0,1,5,127651,0,1594.661,39.21971,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,64.2,17.4,0,,0,0,0,0,.6931472,0,1,0,0,1,0,0,64.5417,7.375044,.6931472,,0 +5,1,25,0,1,127660,0,8630.273,28.58864,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,84.2,4.3,0,,560,560,0,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,64.77914,9.063148,1.386294,,0 +5,1,25,0,2,127660,0,8630.273,29.58864,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,84.2,4.3,0,,560,560,0,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,64.77914,9.063148,1.386294,,0 +5,1,25,0,3,127660,0,8630.273,30.58864,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,84.2,4.3,0,,560,560,0,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,64.77914,9.063148,1.386294,,0 +5,1,25,0,4,127660,0,8630.273,31.58864,0,16,1,160.2552,7.976299,0,0,0,168.2315,0,0,0,2,0,4,84.2,4.3,0,,560,560,0,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,64.77914,9.063148,1.386294,5.125341,1 +5,1,25,0,5,127660,0,8630.273,32.58864,0,16,1,263.7557,8.962068,0,0,0,272.7178,0,0,0,2,0,4,84.2,4.3,0,,560,560,0,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,64.77914,9.063148,1.386294,5.608438,1 +5,1,25,0,1,127661,0,8630.273,1.582478,0,12,1,32.39105,13.30978,0,0,0,45.70082,0,0,0,4,0,4,74.36826,13.73189,0,,560,560,1,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,74.69028,9.063148,1.386294,3.822116,1 +5,1,25,0,2,127661,0,8630.273,2.582478,0,12,1,23.98922,15.2345,0,0,0,39.22372,0,0,0,3,0,4,74.36826,13.73189,0,,560,560,1,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,74.69028,9.063148,1.386294,3.669282,1 +5,1,25,0,3,127661,0,8630.273,3.582478,0,12,1,17.19902,4.968059,0,0,0,22.16708,0,0,0,2,0,4,74.36826,13.73189,0,,560,560,1,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,74.69028,9.063148,1.386294,3.098608,1 +5,1,25,0,4,127661,0,8630.273,4.582478,0,12,1,29.17047,0,0,0,0,29.17047,0,0,0,1,1,4,74.36826,13.73189,0,,560,560,1,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,74.69028,9.063148,1.386294,3.373157,1 +5,1,25,0,5,127661,0,8630.273,5.582478,0,12,1,40.85035,2.705294,0,0,0,43.55565,0,0,0,6,0,4,74.36826,13.73189,0,,560,560,1,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,74.69028,9.063148,1.386294,3.77404,1 +5,1,25,0,1,127662,0,8630.273,27.45243,1,12,1,21.20141,15.95995,30.62426,0,0,67.78563,0,0,0,1,1,4,86.3,8.7,0,,560,560,0,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,72.61974,9.063148,1.386294,4.21635,1 +5,1,25,0,2,127662,0,8630.273,28.45243,1,12,1,31.53639,20.26415,14.55526,0,0,66.3558,0,0,0,2,1,4,86.3,8.7,0,,560,560,0,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,72.61974,9.063148,1.386294,4.195031,1 +5,1,25,0,3,127662,0,8630.273,29.45243,1,12,1,5.896806,29.30221,0,0,0,35.19902,0,0,0,1,0,4,86.3,8.7,0,,560,560,0,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,72.61974,9.063148,1.386294,3.561018,1 +5,1,25,0,4,127662,0,8630.273,30.45243,1,12,1,13.67366,0,0,0,0,13.67366,0,0,0,1,0,4,86.3,8.7,0,,560,560,0,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,72.61974,9.063148,1.386294,2.615471,1 +5,1,25,0,5,127662,0,8630.273,31.45243,1,12,1,23.7599,0,22.92622,0,0,46.68612,0,0,0,1,1,4,86.3,8.7,0,,560,560,0,0,1.386294,6.327937,0,3.258096,7.714231,1,0,0,72.61974,9.063148,1.386294,3.843447,1 +5,1,25,0,1,127663,0,8630.273,4.635181,1,12,1,20.02356,12.26737,0,0,0,32.29093,0,0,0,2,0,4,74.36826,13.73189,0,,560,560,1,1,1.386294,6.327937,0,3.258096,7.714231,1,0,0,74.1763,9.063148,1.386294,3.474787,1 +5,1,25,0,2,127663,0,8630.273,5.635181,1,12,1,63.8814,6.210243,3.180593,0,0,73.27224,0,0,0,6,0,4,74.36826,13.73189,0,,560,560,1,1,1.386294,6.327937,0,3.258096,7.714231,1,0,0,74.1763,9.063148,1.386294,4.294182,1 +5,1,25,0,3,127663,0,8630.273,6.635181,1,12,1,27.51843,8.737101,0,0,0,36.25553,0,0,0,4,0,4,74.36826,13.73189,0,,560,560,1,1,1.386294,6.327937,0,3.258096,7.714231,1,0,0,74.1763,9.063148,1.386294,3.590592,1 +5,1,25,0,4,127663,0,8630.273,7.635181,1,12,1,21.87785,0,0,0,0,21.87785,0,0,0,1,1,4,74.36826,13.73189,0,,560,560,1,1,1.386294,6.327937,0,3.258096,7.714231,1,0,0,74.1763,9.063148,1.386294,3.085475,1 +5,1,25,0,5,127663,0,8630.273,8.635181,1,12,1,14.58941,2.709462,0,0,0,17.29887,0,0,0,2,0,4,74.36826,13.73189,0,,560,560,1,1,1.386294,6.327937,0,3.258096,7.714231,1,0,0,74.1763,9.063148,1.386294,2.850641,1 +1,1,0,1,1,127686,0,15181.76,48.29295,1,12,1,93.24807,93.99762,0,0,0,187.2457,0,0,0,6,0,2,71.6,30.4,0,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,66.75724,9.627916,.6931472,5.232421,1 +1,1,0,1,2,127686,0,15181.76,49.29295,1,12,1,149.7006,82.13391,0,0,0,231.8345,0,0,0,13,0,2,71.6,30.4,0,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,66.75724,9.627916,.6931472,5.446024,1 +1,1,0,1,3,127686,0,15181.76,50.29295,1,12,1,173.9346,110.1586,47.64123,0,0,331.7344,0,0,0,19,0,2,71.6,30.4,0,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,66.75724,9.627916,.6931472,5.804335,1 +1,1,0,1,1,127688,0,15181.76,22.06708,1,15,1,82.09399,62.52231,0,0,0,144.6163,0,0,0,14,0,2,62.1,26.1,1,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,74.26819,9.627916,.6931472,4.974084,1 +1,1,0,1,2,127688,0,15181.76,23.06708,1,15,1,230.8111,111.644,0,0,0,342.4551,0,0,0,30,0,2,62.1,26.1,1,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,74.26819,9.627916,.6931472,5.836141,1 +1,1,0,1,3,127688,0,15181.76,24.06708,1,15,1,311.6947,94.99009,4.142715,0,0,410.8275,0,0,0,38,0,2,62.1,26.1,1,,300,398,0,0,.6931472,5.986452,1,0,0,1,0,0,74.26819,9.627916,.6931472,6.018174,1 +10,1,50,0,1,127696,0,7948.511,24.49008,1,13,1,68.31567,13.37456,26.79623,0,0,108.4865,0,0,0,4,1,3,80,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.86204,8.980865,1.098612,4.686625,1 +10,1,50,0,2,127696,0,7948.511,25.49008,1,13,1,33.42318,21.54178,0,0,0,54.96496,0,0,0,4,0,3,80,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.86204,8.980865,1.098612,4.006696,1 +10,1,50,0,3,127696,0,7948.511,26.49008,1,13,1,52.57985,6.216216,24.90909,0,0,83.70516,0,0,0,4,1,3,80,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.86204,8.980865,1.098612,4.4273,1 +10,1,50,0,1,127697,0,7948.511,25.50856,0,13,1,91.28387,54.00471,0,0,2267.821,2413.11,3,0,0,10,1,3,80,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,61.89945,8.980865,1.098612,7.788671,1 +10,1,50,0,2,127697,0,7948.511,26.50856,0,13,1,50.53909,28.07008,0,0,0,78.60916,0,0,0,4,0,3,80,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,61.89945,8.980865,1.098612,4.364488,1 +10,1,50,0,3,127697,0,7948.511,27.50856,0,13,1,103.1941,49.69533,14.31941,0,0,167.2088,0,0,0,9,1,3,80,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,61.89945,8.980865,1.098612,5.119244,1 +6,1,25,0,1,127717,0,4333.747,26.02875,1,13,1,222.0259,22.81508,13.93993,0,0,258.7809,0,0,0,11,0,1,83.8,13.73189,0,,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,72.50717,8.374418,0,5.555982,1 +6,1,25,0,2,127717,0,4333.747,27.02875,1,13,1,120.9704,45.28841,0,0,0,166.2588,0,0,0,18,0,1,83.8,13.73189,0,,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,72.50717,8.374418,0,5.113545,1 +6,1,25,0,3,127717,0,4333.747,28.02875,1,13,1,24.57002,9.764128,0,0,0,34.33415,0,0,0,2,0,1,83.8,13.73189,0,,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,72.50717,8.374418,0,3.53614,1 +6,1,25,0,4,127717,0,4333.747,29.02875,1,13,1,14.58523,5.989061,0,0,0,20.57429,0,0,0,2,0,1,83.8,13.73189,0,,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,72.50717,8.374418,0,3.024042,1 +6,1,25,0,5,127717,0,4333.747,30.02875,1,13,1,0,0,0,0,0,0,0,0,0,0,0,1,83.8,13.73189,0,,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,72.50717,8.374418,0,,0 +2,1,100,0,1,127737,0,9179.9,17.77413,0,12,1,23.20048,14.53302,0,0,0,37.73349,0,0,0,4,0,3,94.7,8.7,0,,632,632,1,0,1.098612,6.448889,1,0,0,0,0,0,80.22991,9.124881,1.098612,3.630548,1 +2,1,100,0,2,127737,0,9179.9,18.77413,0,12,1,6.53239,5.900926,0,0,0,12.43332,0,0,0,1,0,3,94.7,8.7,0,,632,632,0,0,1.098612,6.448889,1,0,0,0,0,0,80.22991,9.124881,1.098612,2.52038,1 +2,1,100,0,3,127737,0,9179.9,19.77413,0,12,1,14.37066,.9365709,0,0,0,15.30723,0,0,0,2,0,3,94.7,8.7,0,,632,632,0,0,1.098612,6.448889,1,0,0,0,0,0,80.22991,9.124881,1.098612,2.728326,1 +2,1,100,1,1,127738,0,9179.9,53.68378,0,13,1,24.39024,6.234384,0,0,0,30.62463,0,0,0,4,0,3,94.7,8.7,0,,632,632,0,0,1.098612,6.448889,1,0,0,0,0,0,76.86221,9.124881,1.098612,3.421804,1 +2,1,100,1,2,127738,0,9179.9,54.68378,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,94.7,8.7,0,,632,632,0,0,1.098612,6.448889,1,0,0,0,0,0,76.86221,9.124881,1.098612,,0 +2,1,100,1,3,127738,0,9179.9,55.68378,0,13,1,17.83945,0,0,0,0,17.83945,0,0,0,1,0,3,94.7,8.7,0,,632,632,0,0,1.098612,6.448889,1,0,0,0,0,0,76.86221,9.124881,1.098612,2.881412,1 +2,1,100,1,1,127739,0,9179.9,51.95893,1,12,1,19.03629,19.03034,35.43724,0,0,73.50387,0,0,0,1,1,3,95.8,17.4,0,,632,632,0,0,1.098612,6.448889,1,0,0,0,0,0,77.2877,9.124881,1.098612,4.297338,1 +2,1,100,1,2,127739,0,9179.9,52.95893,1,12,1,6.53239,0,0,0,0,6.53239,0,0,0,1,0,3,95.8,17.4,0,,632,632,0,0,1.098612,6.448889,1,0,0,0,0,0,77.2877,9.124881,1.098612,1.876773,1 +2,1,100,1,3,127739,0,9179.9,53.95893,1,12,1,656.5907,3.899901,52.03172,0,0,712.5223,0,0,0,0,5,3,95.8,17.4,0,,632,632,0,0,1.098612,6.448889,1,0,0,0,0,0,77.2877,9.124881,1.098612,6.568811,1 +1,1,0,0,1,127751,0,3132.623,22.38193,1,12,1,8.244994,0,36.9258,0,0,45.17079,0,0,0,0,1,1,68.8,13.73189,0,,150,78,0,0,0,4.356709,1,0,0,0,0,0,78.20497,8.049945,0,3.810451,1 +1,1,0,0,2,127751,0,3132.623,23.38193,1,12,1,30.18868,4.06469,19.15364,0,0,53.40701,0,0,0,4,1,1,68.8,13.73189,0,,150,78,0,0,0,4.356709,1,0,0,0,0,0,78.20497,8.049945,0,3.977942,1 +1,1,0,0,3,127751,0,3132.623,24.38193,1,12,1,57.98526,6.117936,0,0,0,64.1032,0,0,0,9,0,1,68.8,13.73189,0,,150,78,0,0,0,4.356709,1,0,0,0,0,0,78.20497,8.049945,0,4.160494,1 +1,1,0,0,4,127751,0,3132.623,25.38193,1,12,1,20.0547,0,20.96627,0,0,41.02097,0,0,0,2,1,1,68.8,13.73189,0,,150,78,0,0,0,4.356709,1,0,0,0,0,0,78.20497,8.049945,0,3.714083,1 +1,1,0,0,5,127751,0,3132.623,26.38193,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,68.8,13.73189,0,,150,78,0,0,0,4.356709,1,0,0,0,0,0,78.20497,8.049945,0,,0 +7,1,25,0,1,127759,0,10660.67,45.97673,1,12,1,43.87515,13.1331,22.46172,0,0,79.46996,0,0,0,3,1,2,84.2,21.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,73.24699,9.27441,.6931472,4.375379,1 +7,1,25,0,2,127759,0,10660.67,46.97673,1,12,1,69.54178,6.96496,27.97844,0,0,104.4852,0,0,0,3,1,2,84.2,21.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,73.24699,9.27441,.6931472,4.649045,1 +7,1,25,0,3,127759,0,10660.67,47.97673,1,12,1,623.0958,33.79853,0,0,876.4619,1533.356,1,0,0,7,0,2,84.2,21.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,73.24699,9.27441,.6931472,7.335214,1 +7,1,25,0,4,127759,0,10660.67,48.97673,1,12,1,190.9754,7.921604,40.33728,0,0,239.2343,0,0,0,2,1,2,84.2,21.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,73.24699,9.27441,.6931472,5.477443,1 +7,1,25,0,5,127759,0,10660.67,49.97673,1,12,1,10.42101,3.192997,36.15673,0,0,49.77074,0,0,0,0,1,2,84.2,21.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,73.24699,9.27441,.6931472,3.907427,1 +7,1,25,0,1,127760,0,10660.67,45.71937,0,11,1,176.6785,81.1543,44.31096,0,0,302.1437,0,0,0,15,1,2,87.4,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,73.73394,9.27441,.6931472,5.710903,1 +7,1,25,0,2,127760,0,10660.67,46.71937,0,11,1,24.25876,36.79245,0,0,0,61.05121,0,0,0,5,0,2,87.4,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,73.73394,9.27441,.6931472,4.111713,1 +7,1,25,0,3,127760,0,10660.67,47.71937,0,11,1,133.1695,84.23587,57.13022,0,3313.268,3587.803,2,0,0,16,1,2,87.4,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,73.73394,9.27441,.6931472,8.185295,1 +7,1,25,0,4,127760,0,10660.67,48.71937,0,11,1,41.02097,60.74749,0,0,0,101.7685,0,0,0,8,0,2,87.4,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,73.73394,9.27441,.6931472,4.6227,1 +7,1,25,0,5,127760,0,10660.67,49.71937,0,11,1,56.69029,78.99958,0,0,0,135.6899,0,0,0,6,1,2,87.4,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,73.73394,9.27441,.6931472,4.910372,1 +6,1,25,1,1,127764,0,14575.68,10.83915,1,14,1,1.798561,0,0,0,0,1.798561,0,0,0,1,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,0,3.258096,8.294049,0,0,0,85.55971,9.587178,1.94591,.586987,1 +6,1,25,1,2,127764,0,14575.68,11.83915,1,14,1,21.90581,3.47207,0,0,941.6429,967.0208,1,0,0,2,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,0,3.258096,8.294049,0,0,0,85.55971,9.587178,1.94591,6.87422,1 +6,1,25,1,3,127764,0,14575.68,12.83915,1,14,1,24.28928,1.630923,0,0,0,25.9202,0,0,0,1,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,0,3.258096,8.294049,0,0,0,85.55971,9.587178,1.94591,3.255023,1 +6,1,25,1,1,127765,0,14575.68,2.757016,1,14,1,39.56834,20.22782,0,0,0,59.79616,0,0,0,5,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,0,3.258096,8.294049,0,0,0,82.12809,9.587178,1.94591,4.090941,1 +6,1,25,1,2,127765,0,14575.68,3.757016,1,14,1,24.09639,12.13582,0,0,0,36.2322,0,0,0,3,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,0,3.258096,8.294049,0,0,0,82.12809,9.587178,1.94591,3.589948,1 +6,1,25,1,3,127765,0,14575.68,4.757016,1,14,1,85.78554,17.75561,0,0,0,103.5411,0,0,0,5,1,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,0,3.258096,8.294049,0,0,0,82.12809,9.587178,1.94591,4.639969,1 +6,1,25,1,1,127766,0,14575.68,6.004107,0,14,1,130.3957,1.672662,0,0,0,132.0683,0,0,0,2,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,86.07368,9.587178,1.94591,4.883319,1 +6,1,25,1,2,127766,0,14575.68,7.004107,0,14,1,15.33406,0,0,0,0,15.33406,0,0,0,1,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,86.07368,9.587178,1.94591,2.730077,1 +6,1,25,1,3,127766,0,14575.68,8.004107,0,14,1,21.44638,5.955112,0,59.85037,0,27.4015,0,0,1,3,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,86.07368,9.587178,1.94591,3.310598,1 +6,1,25,1,1,127767,0,14575.68,40.69815,0,16,1,0,0,0,0,0,0,0,0,0,0,0,7,75.8,0,0,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,77.52456,9.587178,1.94591,,0 +6,1,25,1,2,127767,0,14575.68,41.69815,0,16,1,0,0,0,0,0,0,0,0,0,0,0,7,75.8,0,0,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,77.52456,9.587178,1.94591,,0 +6,1,25,1,3,127767,0,14575.68,42.69815,0,16,1,0,1.261845,0,0,0,1.261845,0,0,0,0,0,7,75.8,0,0,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,77.52456,9.587178,1.94591,.2325752,1 +6,1,25,1,1,127768,0,14575.68,40.62149,1,14,1,22.18225,0,28.19544,0,0,50.3777,0,0,0,2,0,7,75.8,21.7,0,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,78.99319,9.587178,1.94591,3.919549,1 +6,1,25,1,2,127768,0,14575.68,41.62149,1,14,1,15.33406,0,13.73494,0,0,29.069,0,0,0,1,0,7,75.8,21.7,0,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,78.99319,9.587178,1.94591,3.369673,1 +6,1,25,1,3,127768,0,14575.68,42.62149,1,14,1,0,0,0,0,0,0,0,0,0,0,0,7,75.8,21.7,0,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,78.99319,9.587178,1.94591,,0 +6,1,25,1,1,127769,0,14575.68,9.401779,0,14,1,29.97602,5.413669,24.1247,0,0,59.51439,0,0,0,4,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,86.07368,9.587178,1.94591,4.086218,1 +6,1,25,1,2,127769,0,14575.68,10.40178,0,14,1,15.33406,0,13.73494,0,0,29.069,0,0,0,1,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,86.07368,9.587178,1.94591,3.369673,1 +6,1,25,1,3,127769,0,14575.68,11.40178,0,14,1,75.31172,0,16.6783,0,0,91.99003,0,0,0,5,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,86.07368,9.587178,1.94591,4.52168,1 +6,1,25,1,1,127770,0,14575.68,14.89938,0,14,1,16.78657,0,0,204.5863,0,16.78657,0,0,10,3,0,7,66.3,8.7,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,80.99475,9.587178,1.94591,2.820579,1 +6,1,25,1,2,127770,0,14575.68,15.89938,0,14,1,147.0427,7.984666,0,0,0,155.0274,0,0,0,2,0,7,66.3,8.7,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,80.99475,9.587178,1.94591,5.043602,1 +6,1,25,1,3,127770,0,14575.68,16.89938,0,14,1,53.36658,2.693267,0,0,0,56.05985,0,0,1,2,0,7,66.3,8.7,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,0,0,0,80.99475,9.587178,1.94591,4.02642,1 +4,1,100,0,1,127779,0,9723.945,26.0397,1,12,1,40.63604,7.067138,0,0,914.9058,962.6089,1,0,0,3,0,2,64.2,21.7,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,65.72105,9.182449,.6931472,6.869647,1 +4,1,100,0,2,127779,0,9723.945,27.0397,1,12,1,66.84636,9.622642,0,0,868.5714,945.0404,1,0,0,3,0,3,64.2,21.7,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,1,0,0,65.72105,9.182449,1.098612,6.851228,1 +4,1,100,0,3,127779,0,9723.945,28.0397,1,12,1,60.56511,17.91155,16.21622,0,0,94.69287,0,0,0,5,3,4,64.2,21.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,65.72105,9.182449,1.386294,4.550639,1 +4,1,100,0,4,127779,0,9723.945,29.0397,1,12,1,546.7867,30.42388,0,254.1021,0,577.2106,0,0,12,11,7,4,64.2,21.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,65.72105,9.182449,1.386294,6.358207,1 +4,1,100,0,5,127779,0,9723.945,30.0397,1,12,1,14.58941,3.272197,0,0,0,17.86161,0,0,0,2,0,4,64.2,21.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,65.72105,9.182449,1.386294,2.882654,1 +4,1,100,0,1,127780,0,9723.945,25.99315,0,12,1,234.9823,14.69376,0,0,0,249.6761,0,0,0,7,6,2,60,13,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,71.23127,9.182449,.6931472,5.520164,1 +4,1,100,0,2,127780,0,9723.945,26.99315,0,12,1,218.3288,0,0,0,0,218.3288,0,0,0,6,3,3,60,13,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,1,0,0,71.23127,9.182449,1.098612,5.386003,1 +4,1,100,0,3,127780,0,9723.945,27.99315,0,12,1,74.20148,2.432432,0,0,590.9484,667.5823,1,0,0,2,2,4,60,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,71.23127,9.182449,1.386294,6.503663,1 +4,1,100,0,4,127780,0,9723.945,28.99315,0,12,1,15.49681,0,0,0,0,15.49681,0,0,0,2,1,4,60,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,71.23127,9.182449,1.386294,2.740634,1 +4,1,100,0,5,127780,0,9723.945,29.99315,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,60,13,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,71.23127,9.182449,1.386294,,0 +2,1,100,1,1,127844,0,7080.025,54.13005,1,7,1,56.51398,68.73885,0,0,0,125.2528,0,0,0,5,1,2,71.6,21.7,0,,897,897,0,0,.6931472,6.799056,1,0,0,0,1,0,54.37621,8.865174,.6931472,4.830334,1 +2,1,100,1,2,127844,0,7080.025,55.13005,1,7,1,66.95699,46.81546,0,0,0,113.7725,0,0,0,8,0,2,71.6,21.7,0,,897,897,0,0,.6931472,6.799056,1,0,0,0,1,0,54.37621,8.865174,.6931472,4.7342,1 +2,1,100,1,3,127844,0,7080.025,56.13005,1,7,1,88.8008,49.57384,0,0,1069.876,1208.251,1,0,0,6,0,2,71.6,21.7,0,,897,897,0,0,.6931472,6.799056,1,0,0,0,1,0,54.37621,8.865174,.6931472,7.096929,1 +2,1,100,1,4,127844,0,7080.025,57.13005,1,7,1,256.7692,95.79623,40.28453,0,0,392.8499,0,0,0,9,0,2,71.6,21.7,0,,897,897,0,0,.6931472,6.799056,1,0,0,0,1,0,54.37621,8.865174,.6931472,5.973428,1 +2,1,100,1,5,127844,0,7080.025,58.13005,1,7,1,24.8212,97.3496,0,0,0,122.1708,0,0,0,4,0,2,71.6,21.7,0,,897,897,0,0,.6931472,6.799056,1,0,0,0,1,0,54.37621,8.865174,.6931472,4.80542,1 +2,1,100,1,1,127845,0,7080.025,59.80014,0,10,1,4.759072,0,0,0,0,4.759072,0,0,0,1,0,2,56.8,30.4,1,,897,897,0,0,.6931472,6.799056,1,0,0,0,1,0,58.17178,8.865174,.6931472,1.560053,1 +2,1,100,1,2,127845,0,7080.025,60.80014,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,56.8,30.4,1,,897,897,0,0,.6931472,6.799056,1,0,0,0,1,0,58.17178,8.865174,.6931472,,0 +2,1,100,1,3,127845,0,7080.025,61.80014,0,10,1,0,2.428147,0,0,0,2.428147,0,0,0,0,0,2,56.8,30.4,1,,897,897,0,0,.6931472,6.799056,1,0,0,0,1,0,58.17178,8.865174,.6931472,.8871282,1 +2,1,100,1,4,127845,0,7080.025,62.80014,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,56.8,30.4,1,,897,897,0,0,.6931472,6.799056,1,0,0,0,1,0,58.17178,8.865174,.6931472,,0 +2,1,100,1,5,127845,0,7080.025,63.80014,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,56.8,30.4,1,,897,897,0,0,.6931472,6.799056,1,0,0,0,1,0,58.17178,8.865174,.6931472,,0 +2,1,100,1,1,127853,0,10884.62,52.2245,1,10,1,5.94884,8.76859,0,0,0,14.71743,0,0,0,1,0,1,83.2,13,0,,678,678,0,0,0,6.519147,1,0,0,1,0,0,69.8115,9.295197,0,2.689033,1 +2,1,100,1,2,127853,0,10884.62,53.2245,1,10,1,22.86336,8.43767,31.81274,0,0,63.11377,0,0,0,1,1,1,83.2,13,0,,678,678,0,0,0,6.519147,1,0,0,1,0,0,69.8115,9.295197,0,4.144939,1 +2,1,100,1,3,127853,0,10884.62,54.2245,1,10,1,12.88404,11.52131,0,0,0,24.40535,0,0,0,0,1,1,83.2,13,0,,678,678,0,0,0,6.519147,1,0,0,1,0,0,69.8115,9.295197,0,3.194803,1 +2,1,100,1,4,127853,0,10884.62,55.2245,1,10,1,11.47315,11.15649,0,0,0,22.62965,0,0,0,1,0,1,83.2,13,0,,678,678,0,0,0,6.519147,1,0,0,1,0,0,69.8115,9.295197,0,3.119261,1 +2,1,100,1,5,127853,0,10884.62,56.2245,1,10,1,0,7.421119,0,0,0,7.421119,0,0,0,0,0,1,83.2,13,0,,678,678,0,0,0,6.519147,1,0,0,1,0,0,69.8115,9.295197,0,2.00433,1 +11,1,0,0,1,127859,0,8602.978,28.0794,0,16,1,8.833922,0,32.39105,0,0,41.22497,0,0,0,0,1,1,49.5,21.7,0,,0,247,0,0,0,5.509388,0,0,0,0,0,0,76.30257,9.059979,0,3.719044,1 +11,1,0,0,2,127859,0,8602.978,29.0794,0,16,1,5.929919,5.660378,0,0,0,11.5903,0,0,0,1,0,1,49.5,21.7,0,,0,247,0,0,0,5.509388,0,0,0,0,0,0,76.30257,9.059979,0,2.450168,1 +11,1,0,0,3,127859,0,8602.978,30.0794,0,16,1,12.77641,8.968059,0,0,0,21.74447,0,0,0,2,0,1,49.5,21.7,0,,0,247,0,0,0,5.509388,0,0,0,0,0,0,76.30257,9.059979,0,3.07936,1 +11,1,0,0,4,127859,0,8602.978,31.0794,0,16,1,15.49681,3.19052,28.91522,0,0,47.60255,0,0,0,1,1,1,49.5,21.7,0,,0,247,0,0,0,5.509388,0,0,0,0,0,0,76.30257,9.059979,0,3.862886,1 +11,1,0,0,5,127859,0,8602.978,32.0794,0,16,1,5.002084,2.396832,0,0,0,7.398916,0,0,0,1,0,1,49.5,21.7,0,,0,247,0,0,0,5.509388,0,0,0,0,0,0,76.30257,9.059979,0,2.001333,1 +10,1,50,1,1,127869,0,9542.002,22.37919,1,13,1,34.88995,19.98215,0,0,0,54.8721,0,0,0,2,0,3,73.7,8.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,73.05471,9.163564,1.098612,4.005005,1 +10,1,50,1,1,127870,0,9542.002,23.25257,0,12,1,4.759072,9.417014,0,0,0,14.17609,0,0,0,1,0,3,88.4,8.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,78.10675,9.163564,1.098612,2.651556,1 +10,1,50,1,1,127871,0,9542.002,1.650924,1,13,1,120.4878,25.66924,0,0,0,146.157,0,0,0,9,0,3,74.36826,13.73189,0,,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,76.42117,9.163564,1.098612,4.984682,1 +1,1,0,0,1,127908,1,9542.002,52.4846,0,7,1,52.62073,1.766784,0,0,0,54.38752,0,0,0,0,0,2,75.8,30.4,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,60.18914,9.163564,.6931472,3.996135,1 +1,1,0,0,2,127908,1,9542.002,53.4846,0,7,.3142076,76.79784,0,0,0,2641.412,2718.21,1,0,0,2,1,2,75.8,30.4,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,60.18914,9.163564,.6931472,7.907729,1 +1,1,0,0,1,127909,1,9542.002,46.8063,1,9,1,159.4818,586.1484,43.79859,23.55713,0,789.4287,0,0,2,13,3,2,55.8,26.1,1,,300,300,0,0,.6931472,5.703783,1,0,0,0,1,0,59.73195,9.163564,.6931472,6.671309,1 +1,1,0,0,2,127909,1,9542.002,47.8063,1,9,.5382513,130.8356,233.6765,32.51752,21.56334,1045.892,1442.922,1,0,2,12,1,2,55.8,26.1,1,,300,300,0,0,.6931472,5.703783,1,0,0,0,1,0,59.73195,9.163564,.6931472,7.274426,1 +11,1,0,1,1,127920,1,5730.991,38.30527,0,10,1,155.6092,42.2497,47.25573,0,0,245.1146,0,0,0,7,0,3,69.5,17.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,62.38857,8.653818,1.098612,5.501726,1 +11,1,0,1,2,127920,1,5730.991,39.30527,0,10,1,343.0617,60.80397,0,0,640.9141,1044.78,1,0,0,11,2,3,69.5,17.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,62.38857,8.653818,1.098612,6.951561,1 +11,1,0,1,3,127920,1,5730.991,40.30527,0,10,1,115.0176,63.27473,48.81467,0,0,227.107,0,0,0,11,0,3,69.5,17.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,62.38857,8.653818,1.098612,5.425421,1 +11,1,0,1,1,127921,1,5730.991,41.85626,1,10,1,22.31604,0,49.16767,0,0,71.48372,0,0,0,2,0,3,78.9,30.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,59.65693,8.653818,1.098612,4.26947,1 +11,1,0,1,2,127921,1,5730.991,42.85626,1,10,1,37.44493,12.47247,0,0,0,49.9174,0,0,0,2,0,3,78.9,30.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,59.65693,8.653818,1.098612,3.91037,1 +11,1,0,1,3,127921,1,5730.991,43.85626,1,10,1,30.63787,8.864892,0,0,0,39.50276,0,0,0,2,0,3,78.9,30.4,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,59.65693,8.653818,1.098612,3.676371,1 +11,1,0,1,1,127922,1,5730.991,15.37851,0,10,1,6.031363,0,0,0,0,6.031363,0,0,0,1,0,3,81.1,4.3,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,69.89707,8.653818,1.098612,1.796973,1 +11,1,0,1,2,127922,1,5730.991,16.37851,0,10,1,27.53304,3.221366,0,0,0,30.75441,0,0,0,0,1,3,81.1,4.3,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,69.89707,8.653818,1.098612,3.426033,1 +11,1,0,1,3,127922,1,5730.991,17.37851,0,10,1,53.91763,13.2898,0,0,0,67.20744,0,0,0,4,0,3,81.1,4.3,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,69.89707,8.653818,1.098612,4.207784,1 +5,1,25,1,1,127923,1,10909.43,26.94319,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,78.9,4.3,0,,399,399,0,0,0,5.988961,0,3.258096,7.375256,0,0,0,71.59248,9.297475,0,,0 +5,1,25,1,2,127923,1,10909.43,27.94319,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,78.9,4.3,0,,399,399,0,0,0,5.988961,0,3.258096,7.375256,0,0,0,71.59248,9.297475,0,,0 +5,1,25,1,3,127923,1,10909.43,28.94319,0,12,1,22.44389,0,0,0,0,22.44389,0,0,0,2,0,2,78.9,4.3,0,,399,399,0,0,.6931472,5.988961,0,3.258096,7.375256,0,0,0,71.59248,9.297475,.6931472,3.111018,1 +5,1,25,1,4,127923,1,10909.43,29.94319,0,12,1,67.31213,6.897188,37.50576,0,0,111.7151,0,0,0,1,0,2,78.9,4.3,0,,399,399,0,0,.6931472,5.988961,0,3.258096,7.375256,0,0,0,71.59248,9.297475,.6931472,4.715951,1 +5,1,25,1,5,127923,1,10909.43,30.94319,0,12,1,9.73339,7.685146,0,0,0,17.41854,0,0,0,1,0,2,78.9,4.3,0,,399,399,0,0,.6931472,5.988961,0,3.258096,7.375256,0,0,0,71.59248,9.297475,.6931472,2.857535,1 +3,1,100,0,1,127949,0,4003.102,52.83778,1,10,1,0,0,0,0,0,0,0,0,0,0,0,1,86.3,13.73189,0,,546,546,0,0,0,6.302619,1,0,0,0,1,0,54.90957,8.295074,0,,0 +3,1,100,0,2,127949,0,4003.102,53.83778,1,10,1,0,0,0,0,0,0,0,0,0,0,0,1,86.3,13.73189,0,,546,546,0,0,0,6.302619,1,0,0,0,1,0,54.90957,8.295074,0,,0 +3,1,100,0,3,127949,0,4003.102,54.83778,1,10,1,80.58968,0,0,0,0,80.58968,0,0,0,0,0,1,86.3,13.73189,0,,546,546,0,0,0,6.302619,1,0,0,0,1,0,54.90957,8.295074,0,4.38937,1 +4,1,100,0,1,127950,0,8390.819,6.863792,0,13,1,35.97122,9.148681,0,0,0,45.1199,0,0,0,6,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,82.86884,9.035012,1.609438,3.809324,1 +4,1,100,0,2,127950,0,8390.819,7.863792,0,13,1,30.66813,1.949617,0,32.85871,503.9266,536.5444,1,0,4,4,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,1,0,0,0,0,0,82.86884,9.035012,1.609438,6.285149,1 +4,1,100,0,3,127950,0,8390.819,8.863791,0,13,1,0,3.591022,0,0,0,3.591022,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,82.86884,9.035012,1.386294,1.278437,1 +4,1,100,0,4,127950,0,8390.819,9.863791,0,13,1,6.915629,2.065468,0,0,0,8.981097,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,82.86884,9.035012,1.386294,2.195122,1 +4,1,100,0,5,127950,0,8390.819,10.86379,0,13,1,13.11892,11.8832,0,0,0,25.00212,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,82.86884,9.035012,1.386294,3.218961,1 +4,1,100,0,1,127951,0,8390.819,27.94524,1,13,1,10.19185,12.1223,0,0,0,22.31415,0,0,0,1,0,5,82.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,78.51599,9.035012,1.609438,3.105221,1 +4,1,100,0,2,127951,0,8390.819,28.94524,1,13,1,100.2191,28.94852,30.31216,167.0318,0,159.4797,0,0,9,5,0,5,82.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,0,0,0,78.51599,9.035012,1.609438,5.071917,1 +4,1,100,0,3,127951,0,8390.819,29.94524,1,13,1,48.92768,17.64589,0,0,267.0075,333.5811,1,0,0,4,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.51599,9.035012,1.386294,5.809886,1 +4,1,100,0,4,127951,0,8390.819,30.94524,1,13,1,109.728,7.722453,33.88659,0,474.0526,625.3896,1,0,0,5,3,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.51599,9.035012,1.386294,6.438375,1 +4,1,100,0,5,127951,0,8390.819,31.94524,1,13,1,17.47778,17.16885,13.54211,0,746.8895,795.0783,1,0,0,1,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.51599,9.035012,1.386294,6.678441,1 +4,1,100,0,1,127952,0,8390.819,29.28405,0,12,1,40.16787,180.1559,0,17.98561,0,220.3237,0,0,3,6,0,5,57.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,64.43861,9.035012,1.609438,5.395098,1 +4,1,100,0,2,127952,0,8390.819,30.28405,0,12,.2076503,0,31.61555,0,49.28806,3129.995,3161.61,1,0,3,0,0,5,57.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,1,0,0,1,0,0,64.43861,9.035012,1.609438,8.058837,1 +4,1,100,0,1,127953,0,8390.819,8.440794,1,13,1,51.25899,9.742207,0,0,0,61.0012,0,0,0,8,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,82.35487,9.035012,1.609438,4.110894,1 +4,1,100,0,2,127953,0,8390.819,9.440794,1,13,1,24.64403,2.146769,0,0,0,26.7908,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,82.35487,9.035012,1.609438,3.288059,1 +4,1,100,0,3,127953,0,8390.819,10.44079,1,13,1,13.46633,6.408978,0,0,0,19.87531,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,82.35487,9.035012,1.386294,2.989478,1 +4,1,100,0,4,127953,0,8390.819,11.44079,1,13,1,25.81835,8.805902,0,0,0,34.62425,0,0,0,4,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,82.35487,9.035012,1.386294,3.544554,1 +4,1,100,0,5,127953,0,8390.819,12.44079,1,13,1,0,3.719848,0,0,0,3.719848,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,82.35487,9.035012,1.386294,1.313683,1 +4,1,100,0,1,127954,0,8390.819,3.290897,1,13,1,29.07674,11.39089,0,0,0,40.46762,0,0,0,5,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,78.92324,9.035012,1.609438,3.700502,1 +4,1,100,0,2,127954,0,8390.819,4.290896,1,13,1,87.62322,22.10843,0,0,295.356,405.0876,1,0,0,13,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,1,0,0,0,0,0,78.92324,9.035012,1.609438,6.004103,1 +4,1,100,0,3,127954,0,8390.819,5.290896,1,13,1,11.97007,6.32419,0,0,0,18.29426,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,78.92324,9.035012,1.386294,2.906588,1 +4,1,100,0,4,127954,0,8390.819,6.290896,1,13,1,8.298756,2.065468,0,0,349.9078,360.272,1,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,78.92324,9.035012,1.386294,5.886859,1 +4,1,100,0,5,127954,0,8390.819,7.290896,1,13,1,12.69573,0,10.15658,0,0,22.85231,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,78.92324,9.035012,1.386294,3.129052,1 +1,1,0,0,1,127955,0,2800.868,35.57837,0,12,1,7.138608,4.033313,0,0,0,11.17192,0,0,0,1,0,2,83.8,13.73189,0,,300,300,0,0,.6931472,5.703783,1,0,0,0,0,0,77.12907,7.938042,.6931472,2.413404,1 +1,1,0,0,1,127956,0,2800.868,21.32238,1,13,1,5.353956,9.69066,0,0,0,15.04462,0,0,0,1,0,2,67.5,13.73189,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,65.36804,7.938042,.6931472,2.71102,1 +1,1,0,0,2,127956,0,2800.868,22.32238,1,13,1,0,0,0,0,0,0,0,0,0,0,0,1,67.5,13.73189,0,,300,300,0,0,0,5.703783,1,0,0,1,0,0,65.36804,7.938042,0,,0 +1,1,0,0,3,127956,0,2800.868,23.32238,1,13,1,0,0,0,0,0,0,0,0,0,0,0,1,67.5,13.73189,0,,300,300,0,0,0,5.703783,1,0,0,1,0,0,65.36804,7.938042,0,,0 +11,1,0,1,1,127957,0,9542.002,4.867898,0,10,1,67.83274,5.647821,0,0,0,73.48057,0,0,0,4,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,70.7345,9.163564,1.386294,4.297021,1 +11,1,0,1,2,127957,0,9542.002,5.867898,0,10,1,114.7439,24.42048,0,0,898.6685,1037.833,2,0,0,8,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,70.7345,9.163564,1.386294,6.94489,1 +11,1,0,1,3,127957,0,9542.002,6.867898,0,10,1,35.87223,14.05405,0,0,0,49.92629,0,0,0,4,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,70.7345,9.163564,1.386294,3.910548,1 +11,1,0,1,4,127957,0,9542.002,7.867898,0,10,1,37.16955,0,0,0,0,37.16955,0,0,0,1,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,70.7345,9.163564,1.386294,3.61549,1 +11,1,0,1,5,127957,0,9542.002,8.867899,0,10,1,40.20425,3.376407,0,0,0,43.58066,0,0,0,2,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,1,0,0,70.7345,9.163564,1.386294,3.774613,1 +11,1,0,1,1,127958,0,9542.002,7.126626,1,10,1,44.16961,8.486455,0,50.05889,0,52.65607,0,0,1,5,1,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,1,0,0,78.85278,9.163564,1.386294,3.963781,1 +11,1,0,1,2,127958,0,9542.002,8.126626,1,10,1,22.10243,2.598383,0,0,478.2857,502.9865,2,0,0,2,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,1,0,0,78.85278,9.163564,1.386294,6.220563,1 +11,1,0,1,3,127958,0,9542.002,9.126626,1,10,1,60.75676,14.42752,0,0,0,75.18427,0,0,0,6,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,1,0,0,78.85278,9.163564,1.386294,4.319942,1 +11,1,0,1,4,127958,0,9542.002,10.12663,1,10,1,23.24521,5.651778,21.47676,0,0,50.37374,0,0,0,2,1,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,1,0,0,78.85278,9.163564,1.386294,3.91947,1 +11,1,0,1,5,127958,0,9542.002,11.12663,1,10,1,219.1538,14.92288,16.11922,0,0,250.1959,0,0,0,7,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,1,0,0,78.85278,9.163564,1.386294,5.522244,1 +11,1,0,1,1,127959,0,9542.002,25.80424,1,10,1,55.35925,46.18375,0,0,0,101.543,0,0,0,5,0,4,77.9,21.7,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,63.82829,9.163564,1.386294,4.620482,1 +11,1,0,1,2,127959,0,9542.002,26.80424,1,10,1,83.07278,58.10242,0,0,0,141.1752,0,0,0,5,0,4,77.9,21.7,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,63.82829,9.163564,1.386294,4.950002,1 +11,1,0,1,3,127959,0,9542.002,27.80424,1,10,1,66.83047,57.67567,0,0,0,124.5061,0,0,0,7,0,4,77.9,21.7,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,63.82829,9.163564,1.386294,4.824355,1 +11,1,0,1,4,127959,0,9542.002,28.80424,1,10,1,49.68095,56.92799,0,0,0,106.6089,0,0,0,5,0,4,77.9,21.7,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,63.82829,9.163564,1.386294,4.669168,1 +11,1,0,1,5,127959,0,9542.002,29.80424,1,10,1,106.3568,63.28887,0,0,498.2576,667.9033,1,0,0,9,0,4,77.9,21.7,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,63.82829,9.163564,1.386294,6.504143,1 +11,1,0,0,1,127960,0,9542.002,26.92402,0,10,1,26.55477,8.763251,0,0,0,35.31802,0,0,0,2,0,4,44.2,17.4,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,68.18724,9.163564,1.386294,3.564393,1 +11,1,0,0,2,127960,0,9542.002,27.92402,0,10,1,43.87062,13.4124,0,0,0,57.28302,0,0,0,3,0,4,44.2,17.4,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,68.18724,9.163564,1.386294,4.048004,1 +11,1,0,0,3,127960,0,9542.002,28.92402,0,10,1,41.52334,16.60442,0,0,0,58.12777,0,0,0,3,0,4,44.2,17.4,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,68.18724,9.163564,1.386294,4.062644,1 +11,1,0,0,4,127960,0,9542.002,29.92402,0,10,1,99.97721,6.768459,0,0,0,106.7457,0,0,0,1,3,4,44.2,17.4,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,68.18724,9.163564,1.386294,4.670449,1 +11,1,0,0,5,127960,0,9542.002,30.92402,0,10,1,143.4556,8.149229,0,0,0,151.6048,0,0,0,3,0,4,44.2,17.4,0,,0,0,0,0,1.386294,0,0,0,0,1,0,0,68.18724,9.163564,1.386294,5.021277,1 +8,1,50,0,1,127974,0,1579.404,19.08008,0,12,1,38.28033,1.766784,18.9576,0,0,59.00471,0,0,0,3,0,1,70,4.3,0,,0,90,0,0,0,4.49981,0,3.931826,0,1,0,0,64.78301,7.365436,0,4.077617,1 +8,1,50,0,2,127974,0,1579.404,20.08008,0,12,1,210.2426,2.625337,0,0,0,212.8679,0,0,0,6,0,1,70,4.3,0,,0,90,0,0,0,4.49981,0,3.931826,0,1,0,0,64.78301,7.365436,0,5.360672,1 +8,1,50,0,3,127974,0,1579.404,21.08008,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,70,4.3,0,,0,90,0,0,0,4.49981,0,3.931826,0,1,0,0,64.78301,7.365436,0,,0 +11,1,0,1,1,127986,1,8864.541,56.85968,0,5,1,130.577,36.85901,51.60024,0,1243.319,1462.356,1,0,0,13,1,2,85.3,26.1,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,66.48095,9.089928,.6931472,7.287804,1 +11,1,0,1,2,127986,1,8864.541,57.85968,0,5,1,6.53239,10.4736,0,0,0,17.00599,0,0,0,1,0,2,85.3,26.1,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,66.48095,9.089928,.6931472,2.833565,1 +11,1,0,1,3,127986,1,8864.541,58.85968,0,5,1,19.32607,11.94252,47.15064,0,0,78.41923,0,0,0,2,1,2,85.3,26.1,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,66.48095,9.089928,.6931472,4.362069,1 +11,1,0,1,1,127987,1,8864.541,50.64476,1,10,1,50.56514,165.1814,0,0,0,215.7466,0,0,0,9,0,2,57.9,43.5,1,,0,0,0,0,.6931472,0,0,0,0,0,1,0,55.03077,9.089928,.6931472,5.374104,1 +11,1,0,1,2,127987,1,8864.541,51.64476,1,10,1,58.79151,127.436,0,0,962.0033,1148.231,1,0,0,7,0,2,57.9,43.5,1,,0,0,0,0,.6931472,0,0,0,0,0,1,0,55.03077,9.089928,.6931472,7.045978,1 +11,1,0,1,3,127987,1,8864.541,52.64476,1,10,1,505.773,128.553,0,0,0,634.326,0,0,0,13,0,2,57.9,43.5,1,,0,0,0,0,.6931472,0,0,0,0,0,1,0,55.03077,9.089928,.6931472,6.452563,1 +7,1,25,0,1,128034,0,9542.002,25.62902,0,12,1,93.10954,12.96231,0,0,628.1508,734.2226,1,0,1,4,1,1,82.7,13.73189,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,1,0,69.75751,9.163564,0,6.598812,1 +7,1,25,0,2,128034,0,9542.002,26.62902,0,12,1,42.04852,12.01078,0,0,0,54.0593,0,0,0,2,0,1,82.7,13.73189,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,1,0,69.75751,9.163564,0,3.990082,1 +7,1,25,0,3,128034,0,9542.002,27.62902,0,12,1,50.9828,8.14742,0,0,1144.295,1203.425,1,0,0,3,0,1,82.7,13.73189,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,1,0,69.75751,9.163564,0,7.092927,1 +7,1,25,0,4,128034,0,9542.002,28.62902,0,12,1,88.87876,0,0,0,0,88.87876,0,0,0,2,2,1,82.7,13.73189,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,1,0,69.75751,9.163564,0,4.487273,1 +7,1,25,0,5,128034,0,9542.002,29.62902,0,12,1,185.494,13.6807,0,0,0,199.1747,0,0,0,11,1,1,82.7,13.73189,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,1,0,69.75751,9.163564,0,5.294182,1 +3,1,100,1,1,128040,0,6588.709,31.33196,1,16,1,19.72909,24.92933,0,0,880.689,925.3475,1,0,0,4,0,2,75.8,0,0,,900,900,0,0,.6931472,6.802395,1,0,0,0,0,0,79.34842,8.793264,.6931472,6.830169,1 +3,1,100,1,2,128040,0,6588.709,32.33196,1,16,1,22.64151,0,0,0,0,22.64151,0,0,0,2,0,3,75.8,0,0,,900,900,0,0,1.098612,6.802395,1,0,0,0,0,0,79.34842,8.793264,1.098612,3.119785,1 +3,1,100,1,3,128040,0,6588.709,33.33196,1,16,1,112.5307,22.2113,33.89189,0,771.5283,940.1622,1,0,0,5,1,3,75.8,0,0,,900,900,0,0,1.098612,6.802395,1,0,0,0,0,0,79.34842,8.793264,1.098612,6.846052,1 +3,1,100,1,1,128041,0,6588.709,27.48802,0,16,1,103.6514,4.475854,0,0,0,108.1272,0,0,0,5,0,2,70.5,8.7,0,,900,900,0,0,.6931472,6.802395,1,0,0,0,0,0,78.45724,8.793264,.6931472,4.683308,1 +3,1,100,1,2,128041,0,6588.709,28.48802,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,70.5,8.7,0,,900,900,0,0,1.098612,6.802395,1,0,0,0,0,0,78.45724,8.793264,1.098612,,0 +3,1,100,1,3,128041,0,6588.709,29.48802,0,16,1,7.371007,1.719902,0,0,0,9.090909,0,0,0,1,0,3,70.5,8.7,0,,900,900,0,0,1.098612,6.802395,1,0,0,0,0,0,78.45724,8.793264,1.098612,2.207275,1 +7,1,25,1,1,128051,0,5192.928,26.49966,1,16,1,85.73141,10.31175,0,0,0,96.04317,0,0,0,9,0,1,84.2,8.7,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,0,0,80.17492,8.555245,0,4.564798,1 +7,1,25,1,2,128051,0,5192.928,27.49966,1,16,1,95.29025,6.106243,24.5126,0,0,125.9091,0,0,0,8,1,1,84.2,8.7,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,0,0,80.17492,8.555245,0,4.83556,1 +7,1,25,1,3,128051,0,5192.928,28.49966,1,16,1,43.39152,6.433915,0,0,0,49.82544,0,0,0,4,0,1,84.2,8.7,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,0,0,80.17492,8.555245,0,3.908526,1 +7,1,25,1,4,128051,0,5192.928,29.49966,1,16,1,43.10742,27.85616,31.16644,0,0,102.13,0,0,0,3,1,1,84.2,8.7,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,0,0,80.17492,8.555245,0,4.626246,1 +7,1,25,1,5,128051,0,5192.928,30.49966,1,16,1,28.35379,8.760051,0,0,0,37.11384,0,0,0,1,1,1,84.2,8.7,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,0,0,80.17492,8.555245,0,3.61399,1 +7,1,25,1,1,128052,0,5367.866,28.48186,1,16,1,53.35732,8.723022,29.04077,0,0,91.1211,0,0,0,5,1,1,76.8,8.7,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,67.53278,8.588372,0,4.512189,1 +7,1,25,1,3,128052,0,5367.866,30.48186,1,16,1,9.476309,19.38653,3.102244,0,0,31.96509,0,0,0,1,0,1,76.8,8.7,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,67.53278,8.588372,0,3.464644,1 +7,1,25,1,4,128052,0,5367.866,31.48186,1,16,1,41.49377,16.48225,0,0,0,57.97602,0,0,0,4,0,1,76.8,8.7,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,67.53278,8.588372,0,4.06003,1 +7,1,25,1,5,128052,0,5367.866,32.48186,1,16,1,129.0732,4.0584,0,0,648.4977,781.6293,1,0,0,5,0,1,76.8,8.7,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,67.53278,8.588372,0,6.661381,1 +6,1,25,0,1,128057,0,6310.174,23.30185,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,87.5,13.73189,0,,873,873,0,0,.6931472,6.771935,0,3.258096,8.15823,0,0,0,78.89305,8.750077,.6931472,,0 +6,1,25,0,2,128057,0,6310.174,24.30185,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,87.5,13.73189,0,,873,873,0,0,.6931472,6.771935,0,3.258096,8.15823,0,0,0,78.89305,8.750077,.6931472,,0 +6,1,25,0,3,128057,0,6310.174,25.30185,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,87.5,13.73189,0,,873,873,0,0,.6931472,6.771935,0,3.258096,8.15823,0,0,0,78.89305,8.750077,.6931472,,0 +6,1,25,0,4,128057,0,6310.174,26.30185,1,12,1,13.83126,0,0,0,0,13.83126,0,0,0,1,0,2,87.5,13.73189,0,,873,873,0,0,.6931472,6.771935,0,3.258096,8.15823,0,0,0,78.89305,8.750077,.6931472,2.626931,1 +6,1,25,0,5,128057,0,6310.174,27.30185,1,12,1,21.79433,12.5603,0,0,0,34.35463,0,0,0,2,0,2,87.5,13.73189,0,,873,873,0,0,.6931472,6.771935,0,3.258096,8.15823,0,0,0,78.89305,8.750077,.6931472,3.536737,1 +6,1,25,0,1,128058,0,6310.174,41.29774,0,14,1,0,0,0,0,0,0,0,0,0,0,0,2,83.8,13.73189,0,,873,873,0,0,.6931472,6.771935,0,3.258096,8.15823,1,0,0,69.96889,8.750077,.6931472,,0 +6,1,25,0,2,128058,0,6310.174,42.29774,0,14,1,0,0,0,0,0,0,0,0,0,0,0,2,83.8,13.73189,0,,873,873,0,0,.6931472,6.771935,0,3.258096,8.15823,1,0,0,69.96889,8.750077,.6931472,,0 +6,1,25,0,3,128058,0,6310.174,43.29774,0,14,1,0,0,0,0,0,0,0,0,0,0,0,2,83.8,13.73189,0,,873,873,0,0,.6931472,6.771935,0,3.258096,8.15823,1,0,0,69.96889,8.750077,.6931472,,0 +6,1,25,0,4,128058,0,6310.174,44.29774,0,14,1,0,0,0,0,0,0,0,0,0,0,0,2,83.8,13.73189,0,,873,873,0,0,.6931472,6.771935,0,3.258096,8.15823,1,0,0,69.96889,8.750077,.6931472,,0 +6,1,25,0,5,128058,0,6310.174,45.29774,0,14,1,0,0,0,0,0,0,0,0,0,0,0,2,83.8,13.73189,0,,873,873,0,0,.6931472,6.771935,0,3.258096,8.15823,1,0,0,69.96889,8.750077,.6931472,,0 +11,1,0,0,1,128062,0,8689.826,30.39836,0,18,1,66.54676,15.61751,35.40168,58.45324,0,117.5659,0,0,3,2,0,2,67.5,13.73189,0,,0,0,0,0,.6931472,0,0,0,0,0,0,0,75.15482,9.070024,.6931472,4.766999,1 +11,1,0,0,2,128062,0,8689.826,31.39836,0,18,1,24.64403,30.83242,0,470.9748,0,55.47645,0,0,16,4,0,3,67.5,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,75.15482,9.070024,1.098612,4.015959,1 +11,1,0,0,3,128062,0,8689.826,32.39836,0,18,1,64.83791,20.64838,29.45137,226.9327,0,114.9377,0,0,7,4,0,3,67.5,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,75.15482,9.070024,1.098612,4.74439,1 +11,1,0,0,1,128063,0,8689.826,30.00958,1,17,1,210.4317,193.9089,8.363309,112.4101,780.0359,1192.74,1,0,6,31,0,2,73.8,13.73189,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,66.18069,9.070024,.6931472,7.084008,1 +11,1,0,0,2,128063,0,8689.826,31.00958,1,17,1,127.6013,83.72398,0,676.3417,0,211.3253,0,0,23,17,0,3,73.8,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,66.18069,9.070024,1.098612,5.353399,1 +11,1,0,0,3,128063,0,8689.826,32.00958,1,17,1,130.4239,61.48629,0,226.9327,0,191.9102,0,0,7,9,1,3,73.8,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,66.18069,9.070024,1.098612,5.257028,1 +3,1,100,0,1,128070,0,13029.78,1.667351,0,16,1,13.18945,0,0,0,0,13.18945,0,0,0,2,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,1,0,0,0,0,0,77.90071,9.475069,1.098612,2.579417,1 +3,1,100,0,2,128070,0,13029.78,2.667351,0,16,1,34.50164,2.152245,0,0,0,36.65389,0,0,0,3,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,1,0,0,0,0,0,77.90071,9.475069,1.098612,3.60152,1 +3,1,100,0,3,128070,0,13029.78,3.667351,0,16,1,6.48379,2.259352,0,0,0,8.743142,0,0,0,1,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,1,0,0,0,0,0,77.90071,9.475069,1.098612,2.16827,1 +3,1,100,0,4,128070,0,13029.78,4.667351,0,16,1,13.37022,0,0,0,0,13.37022,0,0,0,1,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,1,0,0,0,0,0,77.90071,9.475069,1.098612,2.593029,1 +3,1,100,0,5,128070,0,13029.78,5.667351,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,1,0,0,0,0,0,77.90071,9.475069,1.098612,,0 +3,1,100,0,1,128071,0,13029.78,26.96235,0,18,1,0,10.48561,0,0,0,10.48561,0,0,0,0,0,3,83.2,8.7,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,78.19019,9.475069,1.098612,2.350004,1 +3,1,100,0,2,128071,0,13029.78,27.96235,0,18,1,0,0,0,0,0,0,0,0,0,0,0,3,83.2,8.7,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,78.19019,9.475069,1.098612,,0 +3,1,100,0,3,128071,0,13029.78,28.96235,0,18,1,0,0,0,0,0,0,0,0,0,0,0,3,83.2,8.7,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,78.19019,9.475069,1.098612,,0 +3,1,100,0,4,128071,0,13029.78,29.96235,0,18,1,0,0,0,0,0,0,0,0,0,0,0,3,83.2,8.7,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,78.19019,9.475069,1.098612,,0 +3,1,100,0,5,128071,0,13029.78,30.96235,0,18,1,0,0,0,0,0,0,0,0,0,0,0,3,83.2,8.7,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,78.19019,9.475069,1.098612,,0 +3,1,100,0,1,128072,0,13029.78,29.17454,1,16,1,7.793765,7.152278,30.98321,0,797.1523,843.0815,1,0,0,0,1,3,86.3,4.3,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,79.08138,9.475069,1.098612,6.737064,1 +3,1,100,0,2,128072,0,13029.78,30.17454,1,16,1,32.85871,0,0,0,0,32.85871,0,0,0,1,0,3,86.3,4.3,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,79.08138,9.475069,1.098612,3.492217,1 +3,1,100,0,3,128072,0,13029.78,31.17454,1,16,1,7.481297,2.438903,0,0,0,9.920199,0,0,0,1,0,3,86.3,4.3,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,79.08138,9.475069,1.098612,2.294573,1 +3,1,100,0,4,128072,0,13029.78,32.17454,1,16,1,6.915629,0,0,0,0,6.915629,0,0,0,1,0,3,86.3,4.3,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,79.08138,9.475069,1.098612,1.933784,1 +3,1,100,0,5,128072,0,13029.78,33.17454,1,16,1,8.463818,0,0,0,0,8.463818,0,0,0,2,0,3,86.3,4.3,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,79.08138,9.475069,1.098612,2.1358,1 +5,1,25,0,1,128076,0,12376.42,15.24709,1,17,1,11.89768,0,30.18441,0,0,42.08209,0,0,0,0,1,4,63.8,13.73189,0,,762,762,1,1,1.386294,6.635947,0,3.258096,8.022241,0,0,0,72.40894,9.423629,1.386294,3.739622,1 +5,1,25,0,2,128076,0,12376.42,16.24709,1,17,1,21.23027,6.069679,0,0,0,27.29995,0,0,0,1,0,4,63.8,13.73189,0,,762,762,1,1,1.386294,6.635947,0,3.258096,8.022241,0,0,0,72.40894,9.423629,1.386294,3.306885,1 +5,1,25,0,3,128076,0,12376.42,17.24709,1,17,1,101.338,3.414272,0,0,9.910803,114.663,0,0,0,6,0,4,63.8,13.73189,0,,762,762,1,1,1.386294,6.635947,0,3.258096,8.022241,0,0,0,72.40894,9.423629,1.386294,4.741998,1 +5,1,25,0,1,128077,0,12376.42,42.25051,1,17,1,86.85307,101.6776,0,0,0,188.5306,0,0,0,8,0,4,78.8,13.73189,1,,762,762,0,0,1.386294,6.635947,0,3.258096,8.022241,0,0,0,75.74407,9.423629,1.386294,5.239261,1 +5,1,25,0,2,128077,0,12376.42,43.25051,1,17,1,178.6064,75.40011,0,0,0,254.0065,0,0,0,6,0,4,78.8,13.73189,1,,762,762,0,0,1.386294,6.635947,0,3.258096,8.022241,0,0,0,75.74407,9.423629,1.386294,5.53736,1 +5,1,25,0,3,128077,0,12376.42,44.25051,1,17,1,69.87116,54.74232,0,0,0,124.6135,0,0,0,8,0,4,78.8,13.73189,1,,762,762,0,0,1.386294,6.635947,0,3.258096,8.022241,0,0,0,75.74407,9.423629,1.386294,4.825217,1 +5,1,25,0,1,128078,0,12376.42,17.92197,0,17,1,88.10232,3.866746,32.69482,0,0,124.6639,0,0,0,3,1,4,82.5,13.73189,0,,762,762,1,0,1.386294,6.635947,0,3.258096,8.022241,0,0,0,77.74564,9.423629,1.386294,4.825621,1 +5,1,25,0,2,128078,0,12376.42,18.92197,0,17,1,14.15351,3.756124,0,0,0,17.90964,0,0,0,2,0,4,82.5,13.73189,0,,762,762,0,0,1.386294,6.635947,0,3.258096,8.022241,0,0,0,77.74564,9.423629,1.386294,2.885339,1 +5,1,25,0,3,128078,0,12376.42,19.92197,0,17,1,0,0,0,0,0,0,0,0,0,0,0,4,82.5,13.73189,0,,762,762,0,0,1.386294,6.635947,0,3.258096,8.022241,0,0,0,77.74564,9.423629,1.386294,,0 +5,1,25,0,1,128079,0,12376.42,19.00616,0,12,1,41.047,0,33.28971,0,0,74.33671,0,0,0,3,1,4,35,13.73189,1,,762,762,0,0,1.386294,6.635947,0,3.258096,8.022241,0,0,0,75.48103,9.423629,1.386294,4.308605,1 +5,1,25,0,2,128079,0,12376.42,20.00616,0,12,1,70.76756,8.633642,14.62167,0,0,94.02287,0,0,0,2,1,4,35,13.73189,1,,762,762,0,0,1.386294,6.635947,0,3.258096,8.022241,0,0,0,75.48103,9.423629,1.386294,4.543538,1 +5,1,25,0,3,128079,0,12376.42,21.00616,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,35,13.73189,1,,762,762,0,0,1.386294,6.635947,0,3.258096,8.022241,0,0,0,75.48103,9.423629,1.386294,,0 +11,1,0,0,1,128084,0,8041.563,4.835044,0,12,1,31.80212,5.57126,0,0,0,37.37338,0,0,0,3,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,0,0,0,78.92502,8.992503,1.386294,3.620959,1 +11,1,0,0,2,128084,0,8041.563,5.835044,0,12,1,46.36119,11.26146,0,0,0,57.62264,0,0,0,5,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,0,0,0,78.92502,8.992503,1.386294,4.053916,1 +11,1,0,0,3,128084,0,8041.563,6.835044,0,12,1,227.2727,82.0344,0,0,0,309.3071,0,0,0,23,2,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,0,0,0,78.92502,8.992503,1.386294,5.734335,1 +11,1,0,0,1,128085,0,8041.563,1.716632,0,12,1,22.9682,7.043581,0,0,0,30.01178,0,0,0,4,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,0,0,0,78.92502,8.992503,1.386294,3.40159,1 +11,1,0,0,2,128085,0,8041.563,2.716632,0,12,1,19.40701,0,0,0,0,19.40701,0,0,0,3,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,0,0,0,78.92502,8.992503,1.386294,2.965634,1 +11,1,0,0,3,128085,0,8041.563,3.716632,0,12,1,19.16462,2.815725,0,0,0,21.98034,0,0,0,2,0,4,74.36826,13.73189,0,,0,0,1,0,1.386294,0,0,0,0,0,0,0,78.92502,8.992503,1.386294,3.090149,1 +11,1,0,0,1,128086,0,8041.563,36.61602,0,9,1,88.33923,0,0,0,0,88.33923,0,0,0,1,0,4,78.8,13.73189,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,73.86172,8.992503,1.386294,4.481184,1 +11,1,0,0,2,128086,0,8041.563,37.61602,0,9,1,53.36927,0,0,0,0,53.36927,0,0,0,1,0,4,78.8,13.73189,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,73.86172,8.992503,1.386294,3.977235,1 +11,1,0,0,3,128086,0,8041.563,38.61602,0,9,1,20.63882,0,0,0,0,20.63882,0,0,0,2,1,4,78.8,13.73189,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,73.86172,8.992503,1.386294,3.027174,1 +11,1,0,0,1,128087,0,8041.563,28.39699,1,12,1,146.7903,45.18846,0,0,0,191.9788,0,0,0,5,0,4,78.8,13.73189,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,77.90237,8.992503,1.386294,5.257385,1 +11,1,0,0,2,128087,0,8041.563,29.39699,1,12,1,56.60378,7.202157,0,0,0,63.80593,0,0,0,1,0,4,78.8,13.73189,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,77.90237,8.992503,1.386294,4.155846,1 +11,1,0,0,3,128087,0,8041.563,30.39699,1,12,1,62.89926,5.110565,0,0,0,68.00983,0,0,0,4,0,4,78.8,13.73189,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,77.90237,8.992503,1.386294,4.219652,1 +11,1,0,0,1,128088,0,9542.002,27.37851,1,15,1,151.6786,141.9364,0,0,0,293.6151,0,0,0,11,0,3,28.8,13.73189,0,,0,258,0,0,1.098612,5.552959,0,0,0,1,0,0,73.3112,9.163564,1.098612,5.68227,1 +11,1,0,0,2,128088,0,9542.002,28.37851,1,15,1,116.1008,116.5663,0,0,460.1259,692.793,1,0,0,3,0,3,28.8,13.73189,0,,0,258,0,0,1.098612,5.552959,0,0,0,1,0,0,73.3112,9.163564,1.098612,6.540731,1 +11,1,0,0,3,128088,0,9542.002,29.37851,1,15,1,65.83541,142.0199,0,0,0,207.8554,0,0,0,6,0,3,28.8,13.73189,0,,0,258,0,0,1.098612,5.552959,0,0,0,1,0,0,73.3112,9.163564,1.098612,5.336843,1 +11,1,0,0,4,128088,0,9542.002,30.37851,1,15,1,75.8414,85.0023,0,0,745.0945,905.9382,1,0,0,6,0,3,28.8,13.73189,0,,0,258,0,0,1.098612,5.552959,0,0,0,1,0,0,73.3112,9.163564,1.098612,6.808971,1 +11,1,0,0,5,128088,0,9542.002,31.37851,1,15,1,410.8422,155.5438,24.41388,0,0,590.7998,0,0,0,2,1,4,28.8,13.73189,0,,0,258,0,0,1.386294,5.552959,0,0,0,1,0,0,73.3112,9.163564,1.386294,6.381477,1 +11,1,0,0,1,128089,0,9542.002,3.017112,0,15,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,0,258,1,0,1.098612,5.552959,0,0,0,1,0,0,69.03037,9.163564,1.098612,,0 +11,1,0,0,2,128089,0,9542.002,4.017112,0,15,1,9.857613,0,0,0,0,9.857613,0,0,0,1,0,3,74.36826,13.73189,0,,0,258,1,0,1.098612,5.552959,0,0,0,1,0,0,69.03037,9.163564,1.098612,2.288244,1 +11,1,0,0,3,128089,0,9542.002,5.017112,0,15,1,136.2095,15.18703,.798005,0,0,152.1945,0,0,0,5,0,3,74.36826,13.73189,0,,0,258,1,0,1.098612,5.552959,0,0,0,1,0,0,69.03037,9.163564,1.098612,5.025159,1 +11,1,0,0,4,128089,0,9542.002,6.017112,0,15,1,43.79898,18.55694,0,0,287.953,350.3089,1,0,0,6,0,3,74.36826,13.73189,0,,0,258,1,0,1.098612,5.552959,0,0,0,1,0,0,69.03037,9.163564,1.098612,5.858815,1 +11,1,0,0,5,128089,0,9542.002,7.017112,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,0,258,1,0,1.386294,5.552959,0,0,0,1,0,0,69.03037,9.163564,1.386294,,0 +11,1,0,0,1,128090,0,9542.002,5.481177,0,15,1,35.97122,11.90048,0,0,0,47.8717,0,0,0,1,0,3,74.36826,13.73189,0,,0,258,1,0,1.098612,5.552959,0,0,0,1,0,0,72.462,9.163564,1.098612,3.868525,1 +11,1,0,0,2,128090,0,9542.002,6.481177,0,15,1,21.35816,14.23877,0,0,0,35.59693,0,0,0,1,1,3,74.36826,13.73189,0,,0,258,1,0,1.098612,5.552959,0,0,0,1,0,0,72.462,9.163564,1.098612,3.572259,1 +11,1,0,0,3,128090,0,9542.002,7.481177,0,15,1,9.476309,40.52369,0,0,0,50,0,0,0,2,0,3,74.36826,13.73189,0,,0,258,1,0,1.098612,5.552959,0,0,0,1,0,0,72.462,9.163564,1.098612,3.912023,1 +11,1,0,0,4,128090,0,9542.002,8.481177,0,15,1,261.2494,57.51498,7.607192,0,0,326.3716,0,0,0,11,0,3,74.36826,13.73189,0,,0,258,1,0,1.098612,5.552959,0,0,0,1,0,0,72.462,9.163564,1.098612,5.788037,1 +11,1,0,0,5,128090,0,9542.002,9.481177,0,15,1,90.56284,34.84977,32.69996,410.4951,0,158.1126,0,0,26,5,1,4,74.36826,13.73189,0,,0,258,1,0,1.386294,5.552959,0,0,0,1,0,0,72.462,9.163564,1.386294,5.063307,1 +4,1,100,0,1,128091,0,10933.62,27.28268,1,16,1,29.7442,10.61868,0,0,0,40.36288,0,0,0,4,0,1,70,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,1,0,0,72.76367,9.299689,0,3.697911,1 +4,1,100,0,2,128091,0,10933.62,28.28268,1,16,1,50.62602,11.66032,0,0,0,62.28633,0,0,0,2,1,1,70,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,1,0,0,72.76367,9.299689,0,4.131742,1 +4,1,100,0,3,128091,0,10933.62,29.28268,1,16,1,37.66105,11.61546,14.8662,0,0,64.14272,0,0,0,3,1,1,70,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,1,0,0,72.76367,9.299689,0,4.16111,1 +4,1,100,0,4,128091,0,10933.62,30.28268,1,16,1,20.19275,22.69849,0,0,0,42.89124,0,0,0,3,0,1,70,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,1,0,0,72.76367,9.299689,0,3.758667,1 +4,1,100,0,5,128091,0,10933.62,31.28268,1,16,1,10.93816,11.76693,0,0,0,22.70509,0,0,0,2,0,1,70,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,1,0,0,72.76367,9.299689,0,3.122589,1 +4,1,100,0,1,128092,0,5406.948,27.50445,1,16,1,24.98513,76.14515,0,0,0,101.1303,0,0,0,3,0,1,76.3,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,0,0,0,76.18845,8.595625,0,4.61641,1 +4,1,100,0,2,128092,0,5406.948,28.50445,1,16,1,29.94012,37.01688,0,0,0,66.95699,0,0,0,5,0,1,76.3,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,0,0,0,76.18845,8.595625,0,4.204051,1 +4,1,100,0,3,128092,0,5406.948,29.50445,1,16,1,23.98414,40.51041,0,0,0,64.49455,0,0,0,2,2,1,76.3,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,0,0,0,76.18845,8.595625,0,4.166581,1 +4,1,100,0,4,128092,0,5406.948,30.50445,1,16,1,11.47315,29.42175,0,0,0,40.89491,0,0,0,1,0,1,76.3,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,0,0,0,76.18845,8.595625,0,3.711005,1 +4,1,100,0,5,128092,0,5406.948,31.50445,1,16,1,7.57257,0,0,0,0,7.57257,0,0,0,1,0,1,76.3,13.73189,0,,1000,1000,0,0,0,6.907755,1,0,0,0,0,0,76.18845,8.595625,0,2.024533,1 +3,1,100,0,1,128093,0,6576.303,24.33676,1,13,1,17.66784,15.23557,0,0,0,32.90342,0,0,0,2,0,2,92.5,13.73189,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,79.71188,8.79138,.6931472,3.493577,1 +3,1,100,0,2,128093,0,6576.303,25.33676,1,13,1,18.86792,16.08086,0,0,0,34.94879,0,0,0,2,0,2,92.5,13.73189,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,79.71188,8.79138,.6931472,3.553884,1 +3,1,100,0,3,128093,0,6576.303,26.33676,1,13,1,19.16462,21.88698,0,0,0,41.0516,0,0,0,2,0,2,92.5,13.73189,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,79.71188,8.79138,.6931472,3.71483,1 +3,1,100,0,1,128094,0,6576.303,37.62902,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,.12982,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,78.8207,8.79138,.6931472,,0 +3,1,100,0,2,128094,0,6576.303,38.62902,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,.12982,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,78.8207,8.79138,.6931472,,0 +3,1,100,0,3,128094,0,6576.303,39.62902,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,.12982,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,78.8207,8.79138,.6931472,,0 +6,1,25,0,1,128097,0,4321.96,26.02601,1,13,1,25.61837,18.10954,0,0,0,43.72792,0,0,0,2,0,1,65,13.73189,0,,700,700,0,0,0,6.55108,0,3.258096,7.937375,0,0,0,78.92638,8.371696,0,3.777987,1 +6,1,25,0,2,128097,0,4321.96,27.02601,1,13,1,25.33693,19.94609,0,0,0,45.28302,0,0,0,3,0,1,65,13.73189,0,,700,700,0,0,0,6.55108,0,3.258096,7.937375,0,0,0,78.92638,8.371696,0,3.812932,1 +6,1,25,0,3,128097,0,4321.96,28.02601,1,13,1,72.60442,19.31204,0,0,0,91.91646,0,0,0,3,1,1,65,13.73189,0,,700,700,0,0,0,6.55108,0,3.258096,7.937375,0,0,0,78.92638,8.371696,0,4.52088,1 +6,1,25,0,4,128097,0,4321.96,29.02601,1,13,1,16.86418,14.75387,0,0,0,31.61805,0,0,0,2,0,1,65,13.73189,0,,700,700,0,0,0,6.55108,0,3.258096,7.937375,0,0,0,78.92638,8.371696,0,3.453728,1 +6,1,25,0,5,128097,0,4321.96,30.02601,1,13,1,32.93039,0,0,0,0,32.93039,0,0,0,4,0,1,65,13.73189,0,,700,700,0,0,0,6.55108,0,3.258096,7.937375,0,0,0,78.92638,8.371696,0,3.494396,1 +2,1,100,1,1,128103,0,7545.561,10.15195,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,399,399,1,1,1.609438,5.988961,1,0,0,0,0,0,82.314,8.928847,1.609438,,0 +2,1,100,1,2,128103,0,7545.561,11.15195,1,13,1,138.0066,14.50712,29.02519,0,0,181.5389,0,0,0,6,0,5,74.36826,13.73189,0,,399,399,1,1,1.609438,5.988961,1,0,0,0,0,0,82.314,8.928847,1.609438,5.20147,1 +2,1,100,1,3,128103,0,7545.561,12.15195,1,13,1,127.4314,3.266833,11.63092,0,0,142.3292,0,0,0,6,0,5,74.36826,13.73189,0,,399,399,1,1,1.609438,5.988961,1,0,0,0,0,0,82.314,8.928847,1.609438,4.958143,1 +2,1,100,1,1,128104,0,7545.561,37.71115,0,18,1,68.94485,33.4952,0,0,0,102.44,0,0,0,3,0,5,62.1,21.7,0,,399,399,0,0,1.609438,5.988961,1,0,0,0,0,0,78.36037,8.928847,1.609438,4.629278,1 +2,1,100,1,2,128104,0,7545.561,38.71115,0,18,1,26.28697,33.16539,9.56736,0,0,69.01971,0,0,0,1,0,5,62.1,21.7,0,,399,399,0,0,1.609438,5.988961,1,0,0,0,0,0,78.36037,8.928847,1.609438,4.234392,1 +2,1,100,1,3,128104,0,7545.561,39.71115,0,18,1,89.2818,47.7606,33.46634,0,4.488778,174.9975,0,0,0,2,0,5,62.1,21.7,0,,399,399,0,0,1.609438,5.988961,1,0,0,0,0,0,78.36037,8.928847,1.609438,5.164772,1 +2,1,100,1,1,128105,0,7545.561,36.46544,1,13,1,119.3046,8.051558,0,0,0,127.3561,0,0,0,2,0,5,63.2,17.4,0,,399,399,0,0,1.609438,5.988961,1,0,0,1,0,0,72.59515,8.928847,1.609438,4.846987,1 +2,1,100,1,2,128105,0,7545.561,37.46544,1,13,1,68.45564,14.81928,0,0,229.6112,312.8861,1,0,0,2,0,5,63.2,17.4,0,,399,399,0,0,1.609438,5.988961,1,0,0,1,0,0,72.59515,8.928847,1.609438,5.745839,1 +2,1,100,1,3,128105,0,7545.561,38.46544,1,13,1,31.9202,29.04239,26.59352,0,0,87.55611,0,0,0,3,0,5,63.2,17.4,0,,399,399,0,0,1.609438,5.988961,1,0,0,1,0,0,72.59515,8.928847,1.609438,4.47228,1 +2,1,100,1,1,128106,0,7545.561,13.4757,0,13,1,86.03117,27.79976,93.04556,0,0,206.8765,0,0,0,8,1,5,74.36826,13.73189,0,,399,399,1,0,1.609438,5.988961,1,0,0,1,0,0,72.65098,8.928847,1.609438,5.332122,1 +2,1,100,1,2,128106,0,7545.561,14.4757,0,13,1,37.23987,66.91676,62.15772,0,2215.767,2382.081,2,0,0,3,0,5,74.36826,13.73189,0,,399,399,1,0,1.609438,5.988961,1,0,0,1,0,0,72.65098,8.928847,1.609438,7.77573,1 +2,1,100,1,3,128106,0,7545.561,15.4757,0,13,1,320.6384,147.2618,127.2668,0,1133.676,1728.843,3,0,0,20,0,5,74.36826,13.73189,0,,399,399,1,0,1.609438,5.988961,1,0,0,1,0,0,72.65098,8.928847,1.609438,7.455208,1 +2,1,100,1,1,128107,0,7545.561,15.72074,1,13,1,139.6882,0,19.70024,0,0,159.3885,0,0,0,7,0,5,71.6,8.7,0,,399,399,1,1,1.609438,5.988961,1,0,0,0,0,0,74.71169,8.928847,1.609438,5.071344,1 +2,1,100,1,2,128107,0,7545.561,16.72074,1,13,1,4.928806,2.749179,36.3253,0,0,44.00328,0,0,0,1,0,5,71.6,8.7,0,,399,399,1,1,1.609438,5.988961,1,0,0,0,0,0,74.71169,8.928847,1.609438,3.784264,1 +2,1,100,1,3,128107,0,7545.561,17.72074,1,13,1,75.31172,12.41895,13.74564,0,210.8778,312.3541,1,0,0,5,0,5,71.6,8.7,0,,399,399,1,1,1.609438,5.988961,1,0,0,0,0,0,74.71169,8.928847,1.609438,5.744138,1 +10,1,50,1,1,128124,0,8723.945,23.91786,1,16,1,153.777,66.43285,0,0,0,220.2098,0,0,0,15,1,1,75.8,8.7,0,,200,200,0,0,0,5.298317,0,3.931826,5.991465,1,0,0,67.59779,9.073941,0,5.394581,1 +10,1,50,1,2,128124,0,8723.945,24.91786,1,16,1,56.65389,20.18072,11.24863,0,788.3351,876.4184,1,0,0,2,1,1,75.8,8.7,0,,200,200,0,0,0,5.298317,0,3.931826,5.991465,1,0,0,67.59779,9.073941,0,6.775844,1 +10,1,50,1,3,128124,0,8723.945,25.91786,1,16,1,29.42643,13.62095,0,0,0,43.04738,0,0,0,1,2,2,75.8,8.7,0,,200,200,0,0,.6931472,5.298317,0,3.931826,5.991465,1,0,0,67.59779,9.073941,.6931472,3.762301,1 +10,1,50,1,4,128124,0,8723.945,26.91786,1,16,1,418.7736,18.03596,0,0,0,436.8096,0,0,0,4,1,2,75.8,8.7,0,,200,200,0,0,.6931472,5.298317,0,3.931826,5.991465,1,0,0,67.59779,9.073941,.6931472,6.079497,1 +10,1,50,1,5,128124,0,8723.945,27.91786,1,16,1,71.94244,49.97461,0,0,0,121.9171,0,0,0,2,1,2,75.8,8.7,0,,200,200,0,0,.6931472,5.298317,0,3.931826,5.991465,1,0,0,67.59779,9.073941,.6931472,4.803341,1 +8,1,50,1,1,128125,0,4032.878,24.02738,1,16,1,9.422851,1.766784,0,0,0,11.18964,0,0,0,2,0,1,89.5,8.7,0,,115,115,0,0,0,4.744932,0,3.931826,5.438079,1,0,0,71.18497,8.302484,0,2.414988,1 +8,1,50,1,2,128125,0,4032.878,25.02738,1,16,1,0,0,0,0,0,0,0,0,0,0,0,1,89.5,8.7,0,,115,115,0,0,0,4.744932,0,3.931826,5.438079,1,0,0,71.18497,8.302484,0,,0 +8,1,50,1,3,128125,0,4032.878,26.02738,1,16,1,0,0,0,0,0,0,0,0,0,0,0,1,89.5,8.7,0,,115,115,0,0,0,4.744932,0,3.931826,5.438079,1,0,0,71.18497,8.302484,0,,0 +8,1,50,1,4,128125,0,4032.878,27.02738,1,16,1,9.571559,1.458523,0,0,0,11.03008,0,0,0,2,0,1,89.5,8.7,0,,115,115,0,0,0,4.744932,0,3.931826,5.438079,1,0,0,71.18497,8.302484,0,2.400626,1 +8,1,50,1,5,128125,0,4032.878,28.02738,1,16,1,130.9712,6.490204,0,0,0,137.4614,0,0,0,5,0,1,89.5,8.7,0,,115,115,0,0,0,4.744932,0,3.931826,5.438079,1,0,0,71.18497,8.302484,0,4.923344,1 +9,1,50,0,1,128127,0,9204.095,31.49897,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,95,13.73189,0,,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,0,0,0,79.2669,9.127512,0,,0 +9,1,50,0,2,128127,0,9204.095,32.49897,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,95,13.73189,0,,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,0,0,0,79.2669,9.127512,0,,0 +9,1,50,0,3,128127,0,9204.095,33.49897,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,95,13.73189,0,,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,0,0,0,79.2669,9.127512,0,,0 +9,1,50,0,4,128127,0,9204.095,34.49897,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,95,13.73189,0,,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,0,0,0,79.2669,9.127512,0,,0 +9,1,50,0,5,128127,0,9204.095,35.49897,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,95,13.73189,0,,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,0,0,0,79.2669,9.127512,0,,0 +11,1,0,1,1,128129,0,11576.82,4.668036,0,12,1,26.1749,4.544914,0,0,0,30.71981,0,0,0,2,0,4,74.36826,13.73189,0,,0,291,1,0,1.386294,5.673323,0,0,0,0,0,0,82.35892,9.356847,1.386294,3.424908,1 +11,1,0,1,2,128129,0,11576.82,5.668036,0,12,1,7.621121,3.162765,0,0,0,10.78389,0,0,0,1,0,4,74.36826,13.73189,0,,0,291,1,0,1.386294,5.673323,0,0,0,0,0,0,82.35892,9.356847,1.386294,2.378053,1 +11,1,0,1,3,128129,0,11576.82,6.668036,0,12,1,90.68385,4.44004,0,0,0,95.12389,0,0,0,1,1,4,74.36826,13.73189,0,,0,291,1,0,1.386294,5.673323,0,0,0,0,0,0,82.35892,9.356847,1.386294,4.55518,1 +11,1,0,1,4,128129,0,11576.82,7.668036,0,12,1,35.33731,6.883892,0,0,0,42.2212,0,0,0,3,0,4,74.36826,13.73189,0,,0,291,1,0,1.386294,5.673323,0,0,0,0,0,0,82.35892,9.356847,1.386294,3.742923,1 +11,1,0,1,5,128129,0,11576.82,8.668036,0,12,1,12.62095,0,25.94026,0,0,38.56121,0,0,0,1,0,4,74.36826,13.73189,0,,0,291,1,0,1.386294,5.673323,0,0,0,0,0,0,82.35892,9.356847,1.386294,3.652247,1 +11,1,0,1,1,128130,0,11576.82,26.73511,1,12,1,51.75491,17.40036,44.14039,0,0,113.2957,0,0,0,6,1,4,69.5,17.4,0,,0,291,0,0,1.386294,5.673323,0,0,0,1,0,0,66.9132,9.356847,1.386294,4.730001,1 +11,1,0,1,2,128130,0,11576.82,27.73511,1,12,1,56.06968,3.511159,0,0,0,59.58084,0,0,0,3,0,4,69.5,17.4,0,,0,291,0,0,1.386294,5.673323,0,0,0,1,0,0,66.9132,9.356847,1.386294,4.087334,1 +11,1,0,1,3,128130,0,11576.82,28.73511,1,12,1,258.3251,15.58969,0,0,0,273.9148,0,0,0,7,0,4,69.5,17.4,0,,0,291,0,0,1.386294,5.673323,0,0,0,1,0,0,66.9132,9.356847,1.386294,5.612817,1 +11,1,0,1,4,128130,0,11576.82,29.73511,1,12,1,106.0119,6.810463,37.88894,0,837.9532,988.6646,1,0,0,8,1,4,69.5,17.4,0,,0,291,0,0,1.386294,5.673323,0,0,0,1,0,0,66.9132,9.356847,1.386294,6.896355,1 +11,1,0,1,5,128130,0,11576.82,30.73511,1,12,1,21.03492,4.299537,0,0,0,25.33446,0,0,0,2,0,4,69.5,17.4,0,,0,291,0,0,1.386294,5.673323,0,0,0,1,0,0,66.9132,9.356847,1.386294,3.232165,1 +11,1,0,1,1,128131,0,11576.82,9.839836,1,12,1,32.71862,6.061868,0,0,0,38.78049,0,0,0,1,2,4,74.36826,13.73189,0,,0,291,1,1,1.386294,5.673323,0,0,0,0,0,0,85.27657,9.356847,1.386294,3.657917,1 +11,1,0,1,2,128131,0,11576.82,10.83984,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,0,291,1,1,1.386294,5.673323,0,0,0,0,0,0,85.27657,9.356847,1.386294,,0 +11,1,0,1,3,128131,0,11576.82,11.83984,1,12,1,111.4965,1.655104,0,0,0,113.1516,0,0,0,3,2,4,74.36826,13.73189,0,,0,291,1,1,1.386294,5.673323,0,0,0,0,0,0,85.27657,9.356847,1.386294,4.728729,1 +11,1,0,1,4,128131,0,11576.82,12.83984,1,12,1,61.95502,5.392382,0,0,0,67.3474,0,0,0,6,0,4,74.36826,13.73189,0,,0,291,1,1,1.386294,5.673323,0,0,0,0,0,0,85.27657,9.356847,1.386294,4.209864,1 +11,1,0,1,5,128131,0,11576.82,13.83984,1,12,1,12.62095,0,0,0,0,12.62095,0,0,0,1,0,4,74.36826,13.73189,0,,0,291,1,1,1.386294,5.673323,0,0,0,0,0,0,85.27657,9.356847,1.386294,2.535358,1 +11,1,0,1,1,128132,0,11576.82,30.79261,0,12,1,12.49256,2.325996,0,0,0,14.81856,0,0,0,2,0,4,100,8.7,0,,0,291,0,0,1.386294,5.673323,0,0,0,0,0,0,78.72413,9.356847,1.386294,2.69588,1 +11,1,0,1,2,128132,0,11576.82,31.79261,0,12,1,10.88732,8.21448,0,0,143.3587,162.4605,1,0,0,2,0,4,100,8.7,0,,0,291,0,0,1.386294,5.673323,0,0,0,0,0,0,78.72413,9.356847,1.386294,5.090435,1 +11,1,0,1,3,128132,0,11576.82,32.79261,0,12,1,393.9544,9.187314,0,0,0,403.1417,0,0,0,5,4,4,100,8.7,0,,0,291,0,0,1.386294,5.673323,0,0,0,0,0,0,78.72413,9.356847,1.386294,5.999288,1 +11,1,0,1,4,128132,0,11576.82,33.79261,0,12,1,31.98715,0,43.64388,0,0,75.63102,0,0,0,3,0,4,100,8.7,0,,0,291,0,0,1.386294,5.673323,0,0,0,0,0,0,78.72413,9.356847,1.386294,4.325867,1 +11,1,0,1,5,128132,0,11576.82,34.79261,0,12,1,33.44552,2.309634,0,0,0,35.75515,0,0,0,2,0,4,100,8.7,0,,0,291,0,0,1.386294,5.673323,0,0,0,0,0,0,78.72413,9.356847,1.386294,3.576694,1 +2,1,100,0,1,128137,0,13813.28,5.229295,1,12,1,4.82509,4.282268,0,0,0,9.107358,0,0,0,1,0,4,74.36826,13.73189,0,,978,978,1,1,1.386294,6.885509,1,0,0,0,0,0,80.12564,9.533458,1.386294,2.209083,1 +2,1,100,0,2,128137,0,13813.28,6.229295,1,12,1,40.7489,0,0,0,0,40.7489,0,0,0,3,0,4,74.36826,13.73189,0,,978,978,1,1,1.386294,6.885509,1,0,0,0,0,0,80.12564,9.533458,1.386294,3.707429,1 +2,1,100,0,3,128137,0,13813.28,7.229295,1,12,1,7.533903,0,0,0,0,7.533903,0,0,0,1,0,4,74.36826,13.73189,0,,978,978,1,1,1.386294,6.885509,1,0,0,0,0,0,80.12564,9.533458,1.386294,2.019413,1 +2,1,100,0,1,128138,0,13813.28,4.262834,1,12,1,14.47527,4.101327,0,0,0,18.5766,0,0,0,2,0,4,74.36826,13.73189,0,,978,978,1,1,1.386294,6.885509,1,0,0,0,0,0,80.93543,9.533458,1.386294,2.921903,1 +2,1,100,0,2,128138,0,13813.28,5.262834,1,12,1,5.506608,0,0,0,0,5.506608,0,0,0,1,0,4,74.36826,13.73189,0,,978,978,1,1,1.386294,6.885509,1,0,0,0,0,0,80.93543,9.533458,1.386294,1.705949,1 +2,1,100,0,3,128138,0,13813.28,6.262834,1,12,1,20.09041,0,0,0,0,20.09041,0,0,0,2,0,4,74.36826,13.73189,0,,978,978,1,1,1.386294,6.885509,1,0,0,0,0,0,80.93543,9.533458,1.386294,3.000242,1 +2,1,100,0,1,128139,0,13813.28,34.96783,0,20,1,0,0,0,0,0,0,0,0,0,0,0,4,82.5,13.73189,0,,978,978,0,0,1.386294,6.885509,1,0,0,0,0,0,79.15443,9.533458,1.386294,,0 +2,1,100,0,2,128139,0,13813.28,35.96783,0,20,1,90.80396,0,.5506608,0,0,91.35462,0,0,0,3,1,4,82.5,13.73189,0,,978,978,0,0,1.386294,6.885509,1,0,0,0,0,0,79.15443,9.533458,1.386294,4.514749,1 +2,1,100,0,3,128139,0,13813.28,36.96783,0,20,1,0,0,0,0,0,0,0,0,0,0,0,4,82.5,13.73189,0,,978,978,0,0,1.386294,6.885509,1,0,0,0,0,0,79.15443,9.533458,1.386294,,0 +2,1,100,0,1,128140,0,13813.28,24.83778,1,12,1,219.3004,28.75754,0,0,0,248.0579,0,0,0,22,0,4,68.8,13.73189,0,,978,978,0,0,1.386294,6.885509,1,0,0,1,0,0,66.92496,9.533458,1.386294,5.513662,1 +2,1,100,0,2,128140,0,13813.28,25.83778,1,12,1,152.533,16.68502,36.82819,0,0,206.0462,0,0,0,19,0,4,68.8,13.73189,0,,978,978,0,0,1.386294,6.885509,1,0,0,1,0,0,66.92496,9.533458,1.386294,5.328101,1 +2,1,100,0,3,128140,0,13813.28,26.83778,1,12,1,89.40231,14.68106,0,0,0,104.0834,0,0,0,14,0,4,68.8,13.73189,0,,978,978,0,0,1.386294,6.885509,1,0,0,1,0,0,66.92496,9.533458,1.386294,4.645192,1 +2,1,100,1,1,128155,0,8172.457,16.1232,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,52.6,0,0,,0,0,1,1,1.94591,0,1,0,0,1,0,0,68.42788,9.008647,1.94591,,0 +2,1,100,1,2,128155,0,8172.457,17.1232,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,52.6,0,0,,0,0,1,1,2.079442,0,1,0,0,1,0,0,68.42788,9.008647,2.079442,,0 +2,1,100,1,3,128155,0,8172.457,18.1232,1,12,1,13.62735,8.657086,0,0,0,22.28444,0,0,0,1,0,8,52.6,0,0,,0,0,0,0,2.079442,0,1,0,0,1,0,0,68.42788,9.008647,2.079442,3.103889,1 +2,1,100,1,4,128155,0,8172.457,19.1232,1,12,1,0,6.929784,0,0,340.1331,347.0629,1,0,0,0,0,8,52.6,0,0,,0,0,0,0,2.079442,0,1,0,0,1,0,0,68.42788,9.008647,2.079442,5.849506,1 +2,1,100,1,5,128155,0,8172.457,20.1232,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,52.6,0,0,,0,0,0,0,2.197225,0,1,0,0,1,0,0,68.42788,9.008647,2.197225,,0 +2,1,100,1,1,128156,0,8172.457,10.89938,1,12,1,4.759072,0,0,0,0,4.759072,0,0,0,1,0,7,74.36826,13.73189,0,,0,0,1,1,1.94591,0,1,0,0,1,0,0,78.19813,9.008647,1.94591,1.560053,1 +2,1,100,1,2,128156,0,8172.457,11.89938,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,1,0,0,1,0,0,78.19813,9.008647,2.079442,,0 +2,1,100,1,3,128156,0,8172.457,12.89938,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,1,0,0,1,0,0,78.19813,9.008647,2.079442,,0 +2,1,100,1,4,128156,0,8172.457,13.89938,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,1,2.079442,0,1,0,0,1,0,0,78.19813,9.008647,2.079442,,0 +2,1,100,1,5,128156,0,8172.457,14.89938,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,74.36826,13.73189,0,,0,0,1,1,2.197225,0,1,0,0,1,0,0,78.19813,9.008647,2.197225,,0 +2,1,100,1,1,128157,0,8172.457,46.67214,0,9,1,9.518144,20.93992,0,0,0,30.45806,0,0,0,2,0,7,38.9,21.7,0,,0,0,0,0,1.94591,0,1,0,0,1,0,0,60.7702,9.008647,1.94591,3.416351,1 +2,1,100,1,2,128157,0,8172.457,47.67214,0,9,1,0,0,0,0,0,0,0,0,0,0,0,8,38.9,21.7,0,,0,0,0,0,2.079442,0,1,0,0,1,0,0,60.7702,9.008647,2.079442,,0 +2,1,100,1,3,128157,0,8172.457,48.67214,0,9,1,0,0,0,0,0,0,0,0,0,0,0,8,38.9,21.7,0,,0,0,0,0,2.079442,0,1,0,0,1,0,0,60.7702,9.008647,2.079442,,0 +2,1,100,1,4,128157,0,8172.457,49.67214,0,9,1,0,0,0,0,0,0,0,0,0,0,0,8,38.9,21.7,0,,0,0,0,0,2.079442,0,1,0,0,1,0,0,60.7702,9.008647,2.079442,,0 +2,1,100,1,5,128157,0,8172.457,50.67214,0,9,1,16.40724,0,0,0,350.0841,366.4914,1,0,0,1,0,9,38.9,21.7,0,,0,0,0,0,2.197225,0,1,0,0,1,0,0,60.7702,9.008647,2.197225,5.903975,1 +2,1,100,1,1,128158,0,8172.457,14.77071,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,81.1,0,0,,0,0,1,0,1.94591,0,1,0,0,1,0,0,73.75163,9.008647,1.94591,,0 +2,1,100,1,2,128158,0,8172.457,15.77071,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,81.1,0,0,,0,0,1,0,2.079442,0,1,0,0,1,0,0,73.75163,9.008647,2.079442,,0 +2,1,100,1,3,128158,0,8172.457,16.7707,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,81.1,0,0,,0,0,1,0,2.079442,0,1,0,0,1,0,0,73.75163,9.008647,2.079442,,0 +2,1,100,1,4,128158,0,8172.457,17.7707,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,81.1,0,0,,0,0,1,0,2.079442,0,1,0,0,1,0,0,73.75163,9.008647,2.079442,,0 +2,1,100,1,5,128158,0,8172.457,18.7707,0,12,1,0,0,0,0,0,0,0,0,0,0,0,9,81.1,0,0,,0,0,0,0,2.197225,0,1,0,0,1,0,0,73.75163,9.008647,2.197225,,0 +2,1,100,1,1,128159,0,8172.457,8.919918,0,12,1,4.759072,0,0,0,0,4.759072,0,0,0,1,0,7,74.36826,13.73189,0,,0,0,1,0,1.94591,0,1,0,0,1,0,0,78.7121,9.008647,1.94591,1.560053,1 +2,1,100,1,2,128159,0,8172.457,9.919918,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,1,0,0,1,0,0,78.7121,9.008647,2.079442,,0 +2,1,100,1,3,128159,0,8172.457,10.91992,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,1,0,0,1,0,0,78.7121,9.008647,2.079442,,0 +2,1,100,1,4,128159,0,8172.457,11.91992,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,1,0,0,1,0,0,78.7121,9.008647,2.079442,,0 +2,1,100,1,5,128159,0,8172.457,12.91992,0,12,1,0,0,0,0,0,0,0,0,0,0,0,9,74.36826,13.73189,0,,0,0,1,0,2.197225,0,1,0,0,1,0,0,78.7121,9.008647,2.197225,,0 +2,1,100,1,1,128160,0,8172.457,40.27652,1,12,1,198.0964,6.30577,0,0,351.398,555.8001,1,1,0,5,0,7,44.2,21.7,0,,0,0,0,0,1.94591,0,1,0,0,1,0,0,65.55928,9.008647,1.94591,6.320409,1 +2,1,100,1,2,128160,0,8172.457,41.27652,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,44.2,21.7,0,,0,0,0,0,2.079442,0,1,0,0,1,0,0,65.55928,9.008647,2.079442,,0 +2,1,100,1,3,128160,0,8172.457,42.27652,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,44.2,21.7,0,,0,0,0,0,2.079442,0,1,0,0,1,0,0,65.55928,9.008647,2.079442,,0 +2,1,100,1,4,128160,0,8172.457,43.27652,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,44.2,21.7,0,,0,0,0,0,2.079442,0,1,0,0,1,0,0,65.55928,9.008647,2.079442,,0 +2,1,100,1,5,128160,0,8172.457,44.27652,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,44.2,21.7,0,,0,0,0,0,2.197225,0,1,0,0,1,0,0,65.55928,9.008647,2.197225,,0 +2,1,100,1,1,128161,0,8172.457,12.79398,0,12,1,5.353956,0,0,0,0,5.353956,0,0,0,1,0,7,74.36826,13.73189,0,,0,0,1,0,1.94591,0,1,0,0,1,0,0,78.7121,9.008647,1.94591,1.677836,1 +2,1,100,1,2,128161,0,8172.457,13.79398,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,1,0,0,1,0,0,78.7121,9.008647,2.079442,,0 +2,1,100,1,3,128161,0,8172.457,14.79398,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,1,0,0,1,0,0,78.7121,9.008647,2.079442,,0 +2,1,100,1,4,128161,0,8172.457,15.79398,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,0,1,0,2.079442,0,1,0,0,1,0,0,78.7121,9.008647,2.079442,,0 +2,1,100,1,5,128161,0,8172.457,16.79398,0,12,1,0,0,0,0,0,0,0,0,0,0,0,9,74.36826,13.73189,0,,0,0,1,0,2.197225,0,1,0,0,1,0,0,78.7121,9.008647,2.197225,,0 +11,1,0,0,1,128190,0,13406.87,19.57837,1,13,1,61.83746,23.351,36.00118,0,0,121.1896,0,0,0,3,0,5,82.5,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,79.76627,9.503597,1.609438,4.797357,1 +11,1,0,0,2,128190,0,13406.87,20.57837,1,13,1,41.50943,20.78167,14.92722,0,0,77.21833,0,0,0,4,0,5,82.5,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,79.76627,9.503597,1.609438,4.346637,1 +11,1,0,0,3,128190,0,13406.87,21.57837,1,13,1,10.81081,12.93366,0,0,0,23.74447,0,0,0,1,0,5,82.5,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,79.76627,9.503597,1.609438,3.16735,1 +11,1,0,0,4,128190,0,13406.87,22.57837,1,13,1,59.25251,7.233364,0,0,0,66.48587,0,0,0,3,0,5,82.5,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,79.76627,9.503597,1.609438,4.19699,1 +11,1,0,0,5,128190,0,13406.87,23.57837,1,13,1,77.11546,2.667778,27.22801,0,0,107.0113,0,0,0,9,0,5,82.5,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,79.76627,9.503597,1.609438,4.672934,1 +11,1,0,0,1,128191,0,13406.87,50.16016,0,11,1,38.28033,30.21201,51.08363,0,0,119.576,0,0,0,4,0,5,96.3,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,1,0,0,66.23094,9.503597,1.609438,4.783952,1 +11,1,0,0,2,128191,0,13406.87,51.16016,0,11,1,285.4447,81.02426,0,0,448.0809,814.5499,1,0,0,11,0,5,96.3,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,1,0,0,66.23094,9.503597,1.609438,6.702636,1 +11,1,0,0,3,128191,0,13406.87,52.16016,0,11,1,80.58968,89.90172,45.44472,0,0,215.9361,0,0,0,7,0,5,96.3,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,1,0,0,66.23094,9.503597,1.609438,5.374982,1 +11,1,0,0,4,128191,0,13406.87,53.16016,0,11,1,67.50228,53.71468,0,0,331.0848,452.3017,1,0,0,6,0,5,96.3,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,1,0,0,66.23094,9.503597,1.609438,6.114349,1 +11,1,0,0,5,128191,0,13406.87,54.16016,0,11,1,33.76407,153.6765,43.1263,0,1068.424,1298.991,1,0,0,4,0,5,96.3,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,1,0,0,66.23094,9.503597,1.609438,7.169343,1 +11,1,0,0,1,128192,0,13406.87,48.0438,1,12,1,56.89046,0,27.38516,0,0,84.27562,0,0,0,2,0,5,92.5,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,77.5184,9.503597,1.609438,4.434093,1 +11,1,0,0,2,128192,0,13406.87,49.0438,1,12,1,0,8.490566,0,0,0,8.490566,0,0,0,0,0,5,92.5,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,77.5184,9.503597,1.609438,2.138956,1 +11,1,0,0,3,128192,0,13406.87,50.0438,1,12,1,54.79115,21.49877,0,0,0,76.28992,0,0,0,4,0,5,92.5,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,77.5184,9.503597,1.609438,4.334541,1 +11,1,0,0,4,128192,0,13406.87,51.0438,1,12,1,185.278,87.7165,22.38833,0,1501.436,1796.819,1,0,0,7,0,5,92.5,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,77.5184,9.503597,1.609438,7.493773,1 +11,1,0,0,5,128192,0,13406.87,52.0438,1,12,1,131.7216,32.9679,25.91913,0,0,190.6086,0,0,0,11,0,5,92.5,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,77.5184,9.503597,1.609438,5.250222,1 +11,1,0,0,1,128193,0,13406.87,17.10335,1,12,1,73.91048,22.67373,0,0,0,96.58421,0,0,0,4,1,5,78.8,13.73189,0,,0,165,1,1,1.609438,5.105946,0,0,0,0,0,0,75.12392,9.503597,1.609438,4.570415,1 +11,1,0,0,2,128193,0,13406.87,18.10335,1,12,1,106.7385,11.21294,0,0,0,117.9515,0,0,0,5,0,5,78.8,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,75.12392,9.503597,1.609438,4.770273,1 +11,1,0,0,3,128193,0,13406.87,19.10335,1,12,1,98.7715,31.27764,0,0,0,130.0491,0,0,0,7,0,5,78.8,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,75.12392,9.503597,1.609438,4.867912,1 +11,1,0,0,4,128193,0,13406.87,20.10335,1,12,1,53.64631,9.252507,5.287147,0,0,68.18596,0,0,0,4,0,5,78.8,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,75.12392,9.503597,1.609438,4.222239,1 +11,1,0,0,5,128193,0,13406.87,21.10335,1,12,1,57.10713,19.07045,0,0,0,76.17757,0,0,0,5,0,5,78.8,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,75.12392,9.503597,1.609438,4.333067,1 +11,1,0,0,1,128194,0,13406.87,14.54894,1,12,1,0,1.531213,0,0,0,1.531213,0,0,0,0,0,5,62.5,13.73189,0,,0,165,1,1,1.609438,5.105946,0,0,0,0,0,0,75.12392,9.503597,1.609438,.4260603,1 +11,1,0,0,2,128194,0,13406.87,15.54894,1,12,1,180.4367,11.67116,24.78706,0,0,216.8949,0,0,0,8,0,5,62.5,13.73189,0,,0,165,1,1,1.609438,5.105946,0,0,0,0,0,0,75.12392,9.503597,1.609438,5.379413,1 +11,1,0,0,3,128194,0,13406.87,16.54894,1,12,1,85.84766,24.64373,0,0,0,110.4914,0,0,0,4,0,5,62.5,13.73189,0,,0,165,1,1,1.609438,5.105946,0,0,0,0,0,0,75.12392,9.503597,1.609438,4.704938,1 +11,1,0,0,4,128194,0,13406.87,17.54894,1,12,1,11.8505,2.164995,0,0,0,14.0155,0,0,0,1,0,5,62.5,13.73189,0,,0,165,1,1,1.609438,5.105946,0,0,0,0,0,0,75.12392,9.503597,1.609438,2.640164,1 +11,1,0,0,5,128194,0,13406.87,18.54894,1,12,1,59.19133,7.419758,0,0,0,66.61109,0,0,0,4,0,5,62.5,13.73189,0,,0,165,0,0,1.609438,5.105946,0,0,0,0,0,0,75.12392,9.503597,1.609438,4.198871,1 +4,1,100,0,1,128204,1,476.4268,41.74401,1,10,1,41.4311,101.9965,1.277974,0,1356.243,1500.948,1,0,0,1,1,1,61.3,13.73189,1,,211,211,0,0,0,5.351858,1,0,0,0,0,1,60.9457,6.168411,0,7.313852,1 +4,1,100,0,2,128204,1,476.4268,42.74401,1,10,1,140.6199,16.84636,0,0,789.3746,946.8409,1,0,0,11,0,1,61.3,13.73189,1,,211,211,0,0,0,5.351858,1,0,0,0,0,1,60.9457,6.168411,0,6.853131,1 +4,1,100,0,3,128204,1,476.4268,43.74401,1,10,1,39.65602,1.474201,0,0,0,41.13022,0,0,0,1,1,1,61.3,13.73189,1,,211,211,0,0,0,5.351858,1,0,0,0,0,1,60.9457,6.168411,0,3.716743,1 +4,1,100,0,1,128205,1,445.4094,19.66872,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,73.8,13.73189,0,,75,75,0,0,0,4.317488,1,0,0,1,0,0,57.70424,6.101236,0,,0 +4,1,100,0,2,128205,1,445.4094,20.66872,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,73.8,13.73189,0,,75,75,0,0,0,4.317488,1,0,0,1,0,0,57.70424,6.101236,0,,0 +4,1,100,0,3,128205,1,445.4094,21.66872,0,11,1,30.46683,0,0,0,783.7444,814.2113,1,0,0,2,0,1,73.8,13.73189,0,,75,75,0,0,0,4.317488,1,0,0,1,0,0,57.70424,6.101236,0,6.70222,1 +7,1,25,1,1,128214,1,9542.002,24.85969,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,56.8,17.4,0,,169,169,0,0,.6931472,5.129899,0,3.258096,6.516193,1,0,0,64.19868,9.163564,.6931472,,0 +7,1,25,1,2,128214,1,9542.002,25.85969,1,12,1,13.60915,0,25.58519,0,0,39.19434,0,0,0,1,0,2,56.8,17.4,0,,169,169,0,0,.6931472,5.129899,0,3.258096,6.516193,1,0,0,64.19868,9.163564,.6931472,3.668532,1 +7,1,25,1,3,128214,1,9542.002,26.85969,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,56.8,17.4,0,,169,169,0,0,.6931472,5.129899,0,3.258096,6.516193,1,0,0,64.19868,9.163564,.6931472,,0 +7,1,25,1,1,128215,1,9542.002,6.078029,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,169,169,1,1,.6931472,5.129899,0,3.258096,6.516193,1,0,0,82.36971,9.163564,.6931472,,0 +7,1,25,1,2,128215,1,9542.002,7.078029,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,169,169,1,1,.6931472,5.129899,0,3.258096,6.516193,1,0,0,82.36971,9.163564,.6931472,,0 +7,1,25,1,3,128215,1,9542.002,8.078029,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,169,169,1,1,.6931472,5.129899,0,3.258096,6.516193,1,0,0,82.36971,9.163564,.6931472,,0 +3,1,100,0,1,128224,1,9542.002,4.750171,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,.0327869,,137,137,1,1,.6931472,4.919981,1,0,0,0,0,0,74.08566,9.163564,.6931472,,0 +3,1,100,0,1,128225,1,9542.002,23.82478,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,.12982,,137,137,0,0,.6931472,4.919981,1,0,0,1,0,0,62.46246,9.163564,.6931472,,0 +10,1,50,0,1,128227,1,9542.002,47.39767,1,11,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,.12982,,179,179,0,0,.6931472,5.187386,0,3.931826,5.880533,1,0,0,60.93108,9.163564,.6931472,,0 +10,1,50,0,2,128227,1,9542.002,48.39767,1,11,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,.12982,,179,179,0,0,.6931472,5.187386,0,3.931826,5.880533,1,0,0,60.93108,9.163564,.6931472,,0 +10,1,50,0,3,128227,1,9542.002,49.39767,1,11,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,.12982,,179,179,0,0,.6931472,5.187386,0,3.931826,5.880533,1,0,0,60.93108,9.163564,.6931472,,0 +10,1,50,0,1,128228,1,9542.002,18.73511,0,11,1,9.422851,0,0,0,0,9.422851,0,0,0,1,0,2,85.3,8.7,0,,179,179,0,0,.6931472,5.187386,0,3.931826,5.880533,1,0,0,60.33361,9.163564,.6931472,2.243138,1 +10,1,50,0,2,128228,1,9542.002,19.73511,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,85.3,8.7,0,,179,179,0,0,.6931472,5.187386,0,3.931826,5.880533,1,0,0,60.33361,9.163564,.6931472,,0 +10,1,50,0,3,128228,1,9542.002,20.73511,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,85.3,8.7,0,,179,179,0,0,.6931472,5.187386,0,3.931826,5.880533,1,0,0,60.33361,9.163564,.6931472,,0 +11,1,0,0,1,128239,1,1191.067,4.043806,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,0,0,1,0,.6931472,0,0,0,0,0,1,0,70.64633,7.083444,.6931472,,0 +11,1,0,0,2,128239,1,1191.067,5.043806,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,0,0,1,0,.6931472,0,0,0,0,0,1,0,70.64633,7.083444,.6931472,,0 +11,1,0,0,1,128240,1,1191.067,32.15606,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,90,13.73189,0,,0,0,0,0,.6931472,0,0,0,0,0,0,0,69.84738,7.083444,.6931472,,0 +11,1,0,0,2,128240,1,1191.067,33.15606,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,90,13.73189,0,,0,0,0,0,.6931472,0,0,0,0,0,0,0,69.84738,7.083444,.6931472,,0 +6,1,25,0,1,128248,0,14105.46,11.19507,0,12,1,77.59129,2.679623,33.54535,0,0,113.8163,0,0,0,5,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.27783,9.554388,1.386294,4.734585,1 +6,1,25,0,2,128248,0,14105.46,12.19507,0,12,1,24.79784,1.078167,35.49326,0,0,61.36927,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.27783,9.554388,1.386294,4.11691,1 +6,1,25,0,3,128248,0,14105.46,13.19507,0,12,1,61.91646,3.906634,16.68305,0,0,82.50614,0,0,0,6,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.27783,9.554388,1.386294,4.412873,1 +6,1,25,0,4,128248,0,14105.46,14.19507,0,12,1,65.63354,38.49134,0,0,0,104.1249,0,0,0,6,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.27783,9.554388,1.386294,4.645591,1 +6,1,25,0,5,128248,0,14105.46,15.19507,0,12,1,39.59983,26.2401,0,0,0,65.83994,0,0,0,7,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.27783,9.554388,1.386294,4.187227,1 +6,1,25,0,1,128249,0,14105.46,44.66804,0,17,1,79.5053,0,0,0,0,79.5053,0,0,0,2,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.57204,9.554388,1.386294,4.375823,1 +6,1,25,0,2,128249,0,14105.46,45.66804,0,17,1,120.7547,6.738544,32.95957,0,0,160.4528,0,0,0,5,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.57204,9.554388,1.386294,5.078,1 +6,1,25,0,3,128249,0,14105.46,46.66804,0,17,1,83.78378,0,28.75676,0,0,112.5405,0,0,0,4,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.57204,9.554388,1.386294,4.723313,1 +6,1,25,0,4,128249,0,14105.46,47.66804,0,17,1,91.3856,14.17502,0,0,0,105.5606,0,0,0,3,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.57204,9.554388,1.386294,4.659286,1 +6,1,25,0,5,128249,0,14105.46,48.66804,0,17,1,12.50521,7.169654,23.95998,0,0,43.63485,0,0,0,1,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.57204,9.554388,1.386294,3.775856,1 +6,1,25,0,1,128250,0,14105.46,14.05886,0,12,1,35.92462,15.34158,0,0,0,51.2662,0,0,0,5,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.23705,9.554388,1.386294,3.937032,1 +6,1,25,0,2,128250,0,14105.46,15.05886,0,12,1,88.40971,15.06739,0,0,0,103.4771,0,0,0,4,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.23705,9.554388,1.386294,4.63935,1 +6,1,25,0,3,128250,0,14105.46,16.05886,0,12,1,63.88206,18.69779,0,0,0,82.57985,0,0,0,8,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.23705,9.554388,1.386294,4.413766,1 +6,1,25,0,4,128250,0,14105.46,17.05886,0,12,1,109.2753,16.45397,0,0,0,125.7293,0,0,0,6,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.23705,9.554388,1.386294,4.834131,1 +6,1,25,0,5,128250,0,14105.46,18.05886,0,12,1,22.92622,3.480617,0,0,0,26.40684,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.23705,9.554388,1.386294,3.273623,1 +6,1,25,0,1,128251,0,14105.46,40.33675,1,12,1,107.7738,49.08716,0,0,0,156.861,0,0,0,8,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.78014,9.554388,1.386294,5.05536,1 +6,1,25,0,2,128251,0,14105.46,41.33675,1,12,1,191.1051,40.67385,0,0,0,231.779,0,0,0,11,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.78014,9.554388,1.386294,5.445784,1 +6,1,25,0,3,128251,0,14105.46,42.33675,1,12,1,206.8796,28.74693,0,0,0,235.6265,0,0,0,12,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.78014,9.554388,1.386294,5.462248,1 +6,1,25,0,4,128251,0,14105.46,43.33675,1,12,1,112.3519,91.53601,0,0,0,203.8879,0,0,0,9,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.78014,9.554388,1.386294,5.31757,1 +6,1,25,0,5,128251,0,14105.46,44.33675,1,12,1,66.27762,101.5006,24.55606,0,0,192.3343,0,0,0,8,0,4,82.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.78014,9.554388,1.386294,5.259235,1 +7,1,25,0,1,128265,0,9542.002,53.15263,0,3,1,204.9529,40.71849,290.3416,0,2527.833,3063.846,2,0,0,2,1,1,63.8,13.73189,1,,0,0,0,0,0,0,0,3.258096,0,0,1,0,54.80615,9.163564,0,8.027426,1 +7,1,25,0,2,128265,0,9542.002,54.15263,0,3,1,221.4286,32.41509,0,56.60378,640.6469,894.4905,1,0,3,2,1,1,63.8,13.73189,1,,0,0,0,0,0,0,0,3.258096,0,0,1,0,54.80615,9.163564,0,6.796254,1 +7,1,25,0,3,128265,0,9542.002,55.15263,0,3,1,128.6978,18.28993,0,0,761.2678,908.2556,1,0,0,4,0,1,63.8,13.73189,1,,0,0,0,0,0,0,0,3.258096,0,0,1,0,54.80615,9.163564,0,6.811526,1 +7,1,25,0,4,128265,0,9542.002,56.15263,0,3,1,373.6372,38.15406,0,0,1635.72,2047.511,1,0,0,4,0,1,63.8,13.73189,1,,0,0,0,0,0,0,0,3.258096,0,0,1,0,54.80615,9.163564,0,7.624381,1 +7,1,25,0,5,128265,0,9542.002,57.15263,0,3,1,307.0488,142.8095,0,0,1835.511,2285.369,3,0,0,7,0,1,63.8,13.73189,1,,0,0,0,0,0,0,0,3.258096,0,0,1,0,54.80615,9.163564,0,7.734283,1 +6,1,25,0,1,128267,1,9542.002,55.04996,1,13,1,333.3333,198.828,0,0,0,532.1614,0,0,0,20,0,1,81.3,13.73189,1,,182,259,0,0,0,5.556828,0,3.258096,6.590301,0,1,0,63.87963,9.163564,0,6.276947,1 +3,1,100,0,1,128268,0,1094.293,59.8193,1,12,1,22.9682,0,22.50883,0,0,45.47703,0,0,0,2,0,1,92.5,13.73189,0,,127,127,0,0,0,4.844187,1,0,0,1,0,0,68.38589,6.998777,0,3.817207,1 +3,1,100,0,2,128268,0,1094.293,60.8193,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,92.5,13.73189,0,,127,127,0,0,0,4.844187,1,0,0,1,0,0,68.38589,6.998777,0,,0 +2,1,100,1,1,128302,1,9276.055,35.74812,0,12,1,0,5.936942,0,0,0,5.936942,0,0,0,0,0,5,75.8,8.7,0,,650,650,0,0,1.609438,6.476973,1,0,0,0,0,0,73.78603,9.1353,1.609438,1.781194,1 +2,1,100,1,2,128302,1,9276.055,36.74812,0,12,1,87.6429,24.61622,0,0,0,112.2591,0,0,0,4,1,5,75.8,8.7,0,,650,650,0,0,1.609438,6.476973,1,0,0,0,0,0,73.78603,9.1353,1.609438,4.72081,1 +2,1,100,1,3,128302,1,9276.055,37.74812,0,12,1,4.955401,0,0,0,0,4.955401,0,0,0,1,0,5,75.8,8.7,0,,650,650,0,0,1.609438,6.476973,1,0,0,0,0,0,73.78603,9.1353,1.609438,1.600478,1 +2,1,100,1,4,128302,1,9276.055,38.74812,0,12,1,11.93208,9.325378,0,0,0,21.25746,0,0,0,2,0,5,75.8,8.7,0,,650,650,0,0,1.609438,6.476973,1,0,0,0,0,0,73.78603,9.1353,1.609438,3.056708,1 +2,1,100,1,5,128302,1,9276.055,39.74812,0,12,1,126.7985,0,0,0,0,126.7985,0,0,0,3,0,5,75.8,8.7,0,,650,650,0,0,1.609438,6.476973,1,0,0,0,0,0,73.78603,9.1353,1.609438,4.842599,1 +2,1,100,1,1,128303,1,9276.055,34.69131,1,12,1,57.10886,8.120167,0,0,0,65.22903,0,0,0,8,0,5,87.4,8.7,0,,650,650,0,0,1.609438,6.476973,1,0,0,0,0,0,73.93718,9.1353,1.609438,4.177905,1 +2,1,100,1,2,128303,1,9276.055,35.69131,1,12,1,34.29505,15.73217,0,0,0,50.02722,0,0,0,5,0,5,87.4,8.7,0,,650,650,0,0,1.609438,6.476973,1,0,0,0,0,0,73.93718,9.1353,1.609438,3.912567,1 +2,1,100,1,3,128303,1,9276.055,36.69131,1,12,1,81.88801,8.369673,0,0,0,90.25768,0,0,0,4,0,5,87.4,8.7,0,,650,650,0,0,1.609438,6.476973,1,0,0,0,0,0,73.93718,9.1353,1.609438,4.502669,1 +2,1,100,1,4,128303,1,9276.055,37.69131,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,87.4,8.7,0,,650,650,0,0,1.609438,6.476973,1,0,0,0,0,0,73.93718,9.1353,1.609438,,0 +2,1,100,1,5,128303,1,9276.055,38.69131,1,12,1,16.82793,5.982331,0,0,0,22.81026,0,0,0,2,0,5,87.4,8.7,0,,650,650,0,0,1.609438,6.476973,1,0,0,0,0,0,73.93718,9.1353,1.609438,3.127211,1 +2,1,100,1,1,128304,1,9276.055,4.062971,0,12,1,53.21237,6.20464,0,0,0,59.41702,0,0,0,3,1,5,74.36826,13.73189,0,,650,650,1,0,1.609438,6.476973,1,0,0,0,0,0,76.88281,9.1353,1.609438,4.08458,1 +2,1,100,1,2,128304,1,9276.055,5.062971,0,12,1,4.899292,0,0,0,222.4551,227.3544,1,0,0,1,0,5,74.36826,13.73189,0,,650,650,1,0,1.609438,6.476973,1,0,0,0,0,0,76.88281,9.1353,1.609438,5.42651,1 +2,1,100,1,3,128304,1,9276.055,6.062971,0,12,1,6.442022,0,0,0,0,6.442022,0,0,0,1,0,5,74.36826,13.73189,0,,650,650,1,0,1.609438,6.476973,1,0,0,0,0,0,76.88281,9.1353,1.609438,1.862842,1 +2,1,100,1,4,128304,1,9276.055,7.062971,0,12,1,0,3.822855,0,0,0,3.822855,0,0,0,0,0,5,74.36826,13.73189,0,,650,650,1,0,1.609438,6.476973,1,0,0,0,0,0,76.88281,9.1353,1.609438,1.340997,1 +2,1,100,1,5,128304,1,9276.055,8.06297,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,650,650,1,0,1.609438,6.476973,1,0,0,0,0,0,76.88281,9.1353,1.609438,,0 +2,1,100,1,1,128305,1,9276.055,11.26899,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,650,650,1,1,1.609438,6.476973,1,0,0,0,0,0,78.84123,9.1353,1.609438,,0 +2,1,100,1,2,128305,1,9276.055,12.26899,1,12,1,14.15351,3.369624,0,0,0,17.52314,0,0,0,1,0,5,74.36826,13.73189,0,,650,650,1,1,1.609438,6.476973,1,0,0,0,0,0,78.84123,9.1353,1.609438,2.863522,1 +2,1,100,1,3,128305,1,9276.055,13.26899,1,12,1,4.955401,0,0,0,0,4.955401,0,0,0,1,0,5,74.36826,13.73189,0,,650,650,1,1,1.609438,6.476973,1,0,0,0,0,0,78.84123,9.1353,1.609438,1.600478,1 +2,1,100,1,4,128305,1,9276.055,14.26899,1,12,1,41.50987,0,0,0,0,41.50987,0,0,0,2,0,5,74.36826,13.73189,0,,650,650,1,1,1.609438,6.476973,1,0,0,0,0,0,78.84123,9.1353,1.609438,3.725931,1 +2,1,100,1,5,128305,1,9276.055,15.26899,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,650,650,1,1,1.609438,6.476973,1,0,0,0,0,0,78.84123,9.1353,1.609438,,0 +2,1,100,1,1,128306,1,9276.055,8.125941,1,12,1,23.20048,0,13.68233,0,0,36.88281,0,0,0,3,0,5,74.36826,13.73189,0,,650,650,1,1,1.609438,6.476973,1,0,0,0,0,0,78.84123,9.1353,1.609438,3.607746,1 +2,1,100,1,2,128306,1,9276.055,9.125941,1,12,1,14.69788,0,32.99401,0,0,47.69189,0,0,0,2,0,5,74.36826,13.73189,0,,650,650,1,1,1.609438,6.476973,1,0,0,0,0,0,78.84123,9.1353,1.609438,3.864761,1 +2,1,100,1,3,128306,1,9276.055,10.12594,1,12,1,7.928642,0,0,0,0,7.928642,0,0,0,1,0,5,74.36826,13.73189,0,,650,650,1,1,1.609438,6.476973,1,0,0,0,0,0,78.84123,9.1353,1.609438,2.070482,1 +2,1,100,1,4,128306,1,9276.055,11.12594,1,12,1,37.76962,2.134007,28.75172,0,0,68.65535,0,0,0,4,0,5,74.36826,13.73189,0,,650,650,1,1,1.609438,6.476973,1,0,0,0,0,0,78.84123,9.1353,1.609438,4.229099,1 +2,1,100,1,5,128306,1,9276.055,12.12594,1,12,1,5.04838,.8960875,0,0,0,5.944468,0,0,0,1,0,5,74.36826,13.73189,0,,650,650,1,1,1.609438,6.476973,1,0,0,0,0,0,78.84123,9.1353,1.609438,1.782461,1 +1,1,0,1,1,128326,0,11965.26,35.28542,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,83.2,21.7,0,,450,120,0,0,1.386294,4.787492,1,0,0,0,0,0,78.30748,9.389847,1.386294,,0 +1,1,0,1,2,128326,0,11965.26,36.28542,0,16,1,13.60915,0,0,0,0,13.60915,0,0,0,1,0,4,83.2,21.7,0,,450,120,0,0,1.386294,4.787492,1,0,0,0,0,0,78.30748,9.389847,1.386294,2.610742,1 +1,1,0,1,3,128326,0,11965.26,37.28542,0,16,1,29.23687,0,0,0,0,29.23687,0,0,0,1,0,4,83.2,21.7,0,,450,120,0,0,1.386294,4.787492,1,0,0,0,0,0,78.30748,9.389847,1.386294,3.375431,1 +1,1,0,1,4,128326,0,11965.26,38.28542,0,16,1,0,0,22.00551,0,0,22.00551,0,0,0,0,0,4,83.2,21.7,0,,450,120,0,0,1.386294,4.787492,1,0,0,0,0,0,78.30748,9.389847,1.386294,3.091293,1 +1,1,0,1,5,128326,0,11965.26,39.28542,0,16,1,69.83593,5.107278,0,0,0,74.94321,0,0,0,2,0,5,83.2,21.7,0,,450,120,0,0,1.609438,4.787492,1,0,0,0,0,0,78.30748,9.389847,1.609438,4.31673,1 +1,1,0,1,1,128327,0,11965.26,33.0924,1,15,1,0,0,0,0,0,0,0,0,0,0,0,4,72.6,0,0,,450,120,0,0,1.386294,4.787492,1,0,0,0,0,0,79.98129,9.389847,1.386294,,0 +1,1,0,1,2,128327,0,11965.26,34.0924,1,15,1,0,0,0,0,0,0,0,0,0,0,0,4,72.6,0,0,,450,120,0,0,1.386294,4.787492,1,0,0,0,0,0,79.98129,9.389847,1.386294,,0 +1,1,0,1,3,128327,0,11965.26,35.0924,1,15,1,0,0,0,0,0,0,0,0,0,0,0,4,72.6,0,0,,450,120,0,0,1.386294,4.787492,1,0,0,0,0,0,79.98129,9.389847,1.386294,,0 +1,1,0,1,4,128327,0,11965.26,36.0924,1,15,1,17.66866,20.21569,0,0,1247.728,1285.613,1,0,0,0,0,4,72.6,0,0,,450,120,0,0,1.386294,4.787492,1,0,0,0,0,0,79.98129,9.389847,1.386294,7.158991,1 +1,1,0,1,5,128327,0,11965.26,37.0924,1,15,1,9.570888,3.819941,0,0,0,13.39083,0,0,0,1,0,5,72.6,0,0,,450,120,0,0,1.609438,4.787492,1,0,0,0,0,0,79.98129,9.389847,1.609438,2.59457,1 +1,1,0,1,1,128328,0,11965.26,3.115674,1,15,1,9.518144,0,0,0,0,9.518144,0,0,0,1,0,4,74.36826,13.73189,0,,450,120,1,1,1.386294,4.787492,1,0,0,0,0,0,81.84772,9.389847,1.386294,2.2532,1 +1,1,0,1,2,128328,0,11965.26,4.115674,1,15,1,9.798585,0,0,0,0,9.798585,0,0,0,1,0,4,74.36826,13.73189,0,,450,120,1,1,1.386294,4.787492,1,0,0,0,0,0,81.84772,9.389847,1.386294,2.282238,1 +1,1,0,1,3,128328,0,11965.26,5.115674,1,15,1,13.37958,0,0,0,0,13.37958,0,0,0,1,0,4,74.36826,13.73189,0,,450,120,1,1,1.386294,4.787492,1,0,0,0,0,0,81.84772,9.389847,1.386294,2.59373,1 +1,1,0,1,4,128328,0,11965.26,6.115674,1,15,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,450,120,1,1,1.386294,4.787492,1,0,0,0,0,0,81.84772,9.389847,1.386294,,0 +1,1,0,1,5,128328,0,11965.26,7.115674,1,15,1,55.88978,0,0,0,0,55.88978,0,0,0,3,0,5,74.36826,13.73189,0,,450,120,1,1,1.609438,4.787492,1,0,0,0,0,0,81.84772,9.389847,1.609438,4.023382,1 +1,1,0,1,1,128329,0,11965.26,9.319644,0,15,1,50.2677,0,0,0,0,50.2677,0,0,0,2,1,4,74.36826,13.73189,0,,450,120,1,0,1.386294,4.787492,1,0,0,0,0,0,85.79333,9.389847,1.386294,3.917363,1 +1,1,0,1,2,128329,0,11965.26,10.31964,0,15,1,14.15351,0,0,0,0,14.15351,0,0,0,1,0,4,74.36826,13.73189,0,,450,120,1,0,1.386294,4.787492,1,0,0,0,0,0,85.79333,9.389847,1.386294,2.649963,1 +1,1,0,1,3,128329,0,11965.26,11.31964,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,450,120,1,0,1.386294,4.787492,1,0,0,0,0,0,85.79333,9.389847,1.386294,,0 +1,1,0,1,4,128329,0,11965.26,12.31964,0,15,1,22.3497,0,1.032584,0,0,23.38229,0,0,0,1,0,4,74.36826,13.73189,0,,450,120,1,0,1.386294,4.787492,1,0,0,0,0,0,85.79333,9.389847,1.386294,3.151979,1 +1,1,0,1,5,128329,0,11965.26,13.31964,0,15,1,99.01556,0,3.828355,0,0,102.8439,0,0,0,4,0,5,74.36826,13.73189,0,,450,120,1,0,1.609438,4.787492,1,0,0,0,0,0,85.79333,9.389847,1.609438,4.633213,1 +5,1,25,1,1,128360,0,13322.58,33.62628,0,16,1,11.89768,0,15.27662,0,0,27.1743,0,0,0,0,1,7,89.5,4.3,0,,964,964,0,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,79.16077,9.497291,1.94591,3.302272,1 +5,1,25,1,2,128360,0,13322.58,34.62628,0,16,1,0,0,0,0,0,0,0,0,0,0,0,7,89.5,4.3,0,,964,964,0,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,79.16077,9.497291,1.94591,,0 +5,1,25,1,3,128360,0,13322.58,35.62628,0,16,1,47.57185,30.00496,0,0,0,77.57681,0,0,0,5,1,7,89.5,4.3,0,,964,964,0,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,79.16077,9.497291,1.94591,4.351268,1 +5,1,25,1,1,128361,0,13322.58,7.008898,0,16,1,22.60559,8.774539,0,0,0,31.38013,0,0,0,4,0,7,74.36826,13.73189,0,,964,964,1,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,86.65917,9.497291,1.94591,3.446175,1 +5,1,25,1,2,128361,0,13322.58,8.008898,0,16,1,9.254219,0,0,0,0,9.254219,0,0,0,2,0,7,74.36826,13.73189,0,,964,964,1,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,86.65917,9.497291,1.94591,2.22508,1 +5,1,25,1,3,128361,0,13322.58,9.008898,0,16,1,11.39742,0,0,0,0,11.39742,0,0,0,1,0,7,74.36826,13.73189,0,,964,964,1,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,86.65917,9.497291,1.94591,2.433387,1 +5,1,25,1,1,128362,0,13322.58,5.713894,0,16,1,14.8721,3.997621,0,0,0,18.86972,0,0,0,2,0,7,74.36826,13.73189,0,,964,964,1,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,86.65917,9.497291,1.94591,2.937559,1 +5,1,25,1,2,128362,0,13322.58,6.713894,0,16,1,43.0049,0,0,0,0,43.0049,0,0,0,1,4,7,74.36826,13.73189,0,,964,964,1,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,86.65917,9.497291,1.94591,3.761314,1 +5,1,25,1,3,128362,0,13322.58,7.713894,0,16,1,30.72349,3.528246,0,0,0,34.25174,0,0,0,2,3,7,74.36826,13.73189,0,,964,964,1,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,86.65917,9.497291,1.94591,3.533737,1 +5,1,25,1,1,128363,0,13322.58,4.654346,0,16,1,35.99048,5.48483,0,0,293.8132,335.2885,1,0,0,1,1,7,74.36826,13.73189,1,,964,964,1,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,83.22755,9.497291,1.94591,5.814991,1 +5,1,25,1,2,128363,0,13322.58,5.654346,0,16,1,13.06478,1.475231,0,0,0,14.54001,0,0,0,2,0,7,74.36826,13.73189,1,,964,964,1,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,83.22755,9.497291,1.94591,2.676904,1 +5,1,25,1,3,128363,0,13322.58,6.654346,0,16,1,6.442022,0,0,0,0,6.442022,0,0,0,1,0,7,74.36826,13.73189,1,,964,964,1,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,83.22755,9.497291,1.94591,1.862842,1 +5,1,25,1,1,128364,0,13322.58,30.62286,1,16,1,39.55978,5.841761,0,0,0,45.40155,0,0,0,2,0,7,87.4,13,0,,964,964,0,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,76.06387,9.497291,1.94591,3.815546,1 +5,1,25,1,2,128364,0,13322.58,31.62286,1,16,1,13.60915,0,0,0,0,13.60915,0,0,0,1,0,7,87.4,13,0,,964,964,0,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,76.06387,9.497291,1.94591,2.610742,1 +5,1,25,1,3,128364,0,13322.58,32.62286,1,16,1,12.3885,0,0,0,0,12.3885,0,0,0,1,0,7,87.4,13,0,,964,964,0,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,76.06387,9.497291,1.94591,2.516769,1 +5,1,25,1,1,128365,0,13322.58,.9117043,1,16,1,39.85723,0,0,0,0,39.85723,0,0,0,6,0,7,74.36826,13.73189,0,,964,964,1,1,1.94591,6.871091,0,3.258096,8.257385,0,0,0,82.71357,9.497291,1.94591,3.685304,1 +5,1,25,1,2,128365,0,13322.58,1.911704,1,16,1,9.254219,0,0,0,0,9.254219,0,0,0,1,0,7,74.36826,13.73189,0,,964,964,1,1,1.94591,6.871091,0,3.258096,8.257385,0,0,0,82.71357,9.497291,1.94591,2.22508,1 +5,1,25,1,3,128365,0,13322.58,2.911704,1,16,1,7.928642,0,0,0,0,7.928642,0,0,0,1,0,7,74.36826,13.73189,0,,964,964,1,1,1.94591,6.871091,0,3.258096,8.257385,0,0,0,82.71357,9.497291,1.94591,2.070482,1 +5,1,25,1,1,128366,0,13322.58,3.389459,0,16,1,116.2998,2.082094,0,0,143.0696,261.4515,1,0,0,4,1,7,74.36826,13.73189,0,,964,964,1,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,83.22755,9.497291,1.94591,5.566249,1 +5,1,25,1,2,128366,0,13322.58,4.389459,0,16,1,7.076756,0,0,0,0,7.076756,0,0,0,1,0,7,74.36826,13.73189,0,,964,964,1,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,83.22755,9.497291,1.94591,1.956816,1 +5,1,25,1,3,128366,0,13322.58,5.389459,0,16,1,8.424182,0,0,0,0,8.424182,0,0,0,1,0,7,74.36826,13.73189,0,,964,964,1,0,1.94591,6.871091,0,3.258096,8.257385,0,0,0,83.22755,9.497291,1.94591,2.131106,1 +5,1,25,0,1,128383,0,16140.09,46.6256,1,13,1,7.067138,17.55006,0,0,0,24.6172,0,0,0,1,0,3,85.3,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,67.22846,9.689123,1.098612,3.203445,1 +5,1,25,0,2,128383,0,16140.09,47.6256,1,13,1,6.469003,9.757412,0,0,0,16.22642,0,0,0,1,0,3,85.3,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,67.22846,9.689123,1.098612,2.78664,1 +5,1,25,0,3,128383,0,16140.09,48.6256,1,13,1,21.62162,15.74939,33.89189,0,0,71.2629,0,0,0,2,0,3,85.3,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,67.22846,9.689123,1.098612,4.266376,1 +5,1,25,0,1,128384,0,16140.09,18.68309,0,12,1,0,5.182568,30.59482,0,0,35.77739,0,0,0,0,0,3,73.7,17.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.88491,9.689123,1.098612,3.577316,1 +5,1,25,0,2,128384,0,16140.09,19.68309,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,73.7,17.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.88491,9.689123,1.098612,,0 +5,1,25,0,3,128384,0,16140.09,20.68309,0,12,1,22.11302,0,25.16462,0,0,47.27764,0,0,0,1,0,3,73.7,17.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.88491,9.689123,1.098612,3.856037,1 +5,1,25,0,1,128385,0,16140.09,52.03012,0,12,1,51.23675,73.16843,0,0,0,124.4052,0,0,0,4,0,3,87.4,17.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,63.23641,9.689123,1.098612,4.823544,1 +5,1,25,0,2,128385,0,16140.09,53.03012,0,12,1,45.8221,73.8814,39.40701,0,0,159.1105,0,0,0,3,0,3,87.4,17.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,63.23641,9.689123,1.098612,5.069599,1 +5,1,25,0,3,128385,0,16140.09,54.03012,0,12,1,43.24324,103.0713,22.08354,0,0,168.398,0,0,0,2,0,3,87.4,17.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,63.23641,9.689123,1.098612,5.12633,1 +11,1,0,1,1,128411,0,9645.161,10.0178,0,12,1,76.14515,9.613325,0,0,0,85.75848,0,0,0,3,1,4,74.36826,13.73189,0,,0,233,1,0,1.386294,5.451038,0,0,0,0,0,0,85.65124,9.174315,1.386294,4.451535,1 +11,1,0,1,2,128411,0,9645.161,11.0178,0,12,1,44.638,3.135547,0,0,0,47.77354,0,0,0,6,1,4,74.36826,13.73189,0,,0,233,1,0,1.386294,5.451038,0,0,0,0,0,0,85.65124,9.174315,1.386294,3.866472,1 +11,1,0,1,3,128411,0,9645.161,12.0178,0,12,1,27.75025,5.673934,0,0,0,33.42418,0,0,0,3,0,4,74.36826,13.73189,0,,0,233,1,0,1.386294,5.451038,0,0,0,0,0,0,85.65124,9.174315,1.386294,3.50928,1 +11,1,0,1,4,128411,0,9645.161,13.0178,0,12,1,56.67738,0,0,0,0,56.67738,0,0,0,4,1,4,74.36826,13.73189,0,,0,233,1,0,1.386294,5.451038,0,0,0,0,0,0,85.65124,9.174315,1.386294,4.037375,1 +11,1,0,1,5,128411,0,9645.161,14.0178,0,12,1,75.72571,12.25494,0,0,0,87.98064,0,0,0,6,0,4,74.36826,13.73189,0,,0,233,1,0,1.386294,5.451038,0,0,0,0,0,0,85.65124,9.174315,1.386294,4.477117,1 +11,1,0,1,1,128412,0,9645.161,45.86448,1,12,1,75.49078,74.17014,11.8144,0,0,161.4753,0,0,0,4,0,4,76.8,13,0,,0,233,0,0,1.386294,5.451038,0,0,0,0,0,0,77.59435,9.174315,1.386294,5.084352,1 +11,1,0,1,2,128412,0,9645.161,46.86448,1,12,1,109.4175,106.0425,31.29015,0,0,246.7501,0,0,0,10,1,4,76.8,13,0,,0,233,0,0,1.386294,5.451038,0,0,0,0,0,0,77.59435,9.174315,1.386294,5.508376,1 +11,1,0,1,3,128412,0,9645.161,47.86448,1,12,1,103.0723,32.41328,0,0,0,135.4856,0,0,0,3,0,4,76.8,13,0,,0,233,0,0,1.386294,5.451038,0,0,0,0,0,0,77.59435,9.174315,1.386294,4.908865,1 +11,1,0,1,4,128412,0,9645.161,48.86448,1,12,1,83.98348,39.02249,47.47591,0,0,170.4819,0,0,0,7,1,4,76.8,13,0,,0,233,0,0,1.386294,5.451038,0,0,0,0,0,0,77.59435,9.174315,1.386294,5.138629,1 +11,1,0,1,5,128412,0,9645.161,49.86448,1,12,1,53.84939,105.7089,0,0,414.6992,574.2574,1,0,0,5,0,4,76.8,13,0,,0,233,0,0,1.386294,5.451038,0,0,0,0,0,0,77.59435,9.174315,1.386294,6.353078,1 +11,1,0,1,1,128413,0,9645.161,8.123203,0,12,1,49.97026,49.26829,0,0,0,99.23855,0,0,0,5,0,4,74.36826,13.73189,0,,0,233,1,0,1.386294,5.451038,0,0,0,0,0,0,84.69201,9.174315,1.386294,4.597527,1 +11,1,0,1,2,128413,0,9645.161,9.123203,0,12,1,53.34785,60.31573,28.44311,0,0,142.1067,0,0,0,3,4,4,74.36826,13.73189,0,,0,233,1,0,1.386294,5.451038,0,0,0,0,0,0,84.69201,9.174315,1.386294,4.956578,1 +11,1,0,1,3,128413,0,9645.161,10.1232,0,12,1,58.47374,63.35976,0,0,0,121.8335,0,0,0,5,3,4,74.36826,13.73189,0,,0,233,1,0,1.386294,5.451038,0,0,0,0,0,0,84.69201,9.174315,1.386294,4.802655,1 +11,1,0,1,4,128413,0,9645.161,11.1232,0,12,1,21.1106,29.25195,0,0,0,50.36255,0,0,0,2,1,4,74.36826,13.73189,0,,0,233,1,0,1.386294,5.451038,0,0,0,0,0,0,84.69201,9.174315,1.386294,3.919248,1 +11,1,0,1,5,128413,0,9645.161,12.1232,0,12,1,34.91796,30.53008,0,0,0,65.44804,0,0,0,4,1,4,74.36826,13.73189,0,,0,233,1,0,1.386294,5.451038,0,0,0,0,0,0,84.69201,9.174315,1.386294,4.181257,1 +11,1,0,1,1,128414,0,9645.161,43.7755,0,16,1,137.4182,34.33076,0,0,0,171.749,0,0,0,4,0,4,94.7,4.3,0,,0,233,0,0,1.386294,5.451038,0,0,0,0,0,0,77.32689,9.174315,1.386294,5.146034,1 +11,1,0,1,2,128414,0,9645.161,44.7755,0,16,1,188.8949,33.78879,0,0,0,222.6837,0,0,0,7,0,4,94.7,4.3,0,,0,233,0,0,1.386294,5.451038,0,0,0,0,0,0,77.32689,9.174315,1.386294,5.405753,1 +11,1,0,1,3,128414,0,9645.161,45.7755,0,16,1,282.4579,30.66402,21.23389,0,0,334.3558,0,0,0,6,1,4,94.7,4.3,0,,0,233,0,0,1.386294,5.451038,0,0,0,0,0,0,77.32689,9.174315,1.386294,5.812206,1 +11,1,0,1,4,128414,0,9645.161,46.7755,0,16,1,293.2538,49.88527,0,0,0,343.1391,0,0,0,12,0,4,94.7,4.3,0,,0,233,0,0,1.386294,5.451038,0,0,0,0,0,0,77.32689,9.174315,1.386294,5.838136,1 +11,1,0,1,5,128414,0,9645.161,47.7755,0,16,1,21.87631,31.66597,0,0,0,53.54228,0,0,0,1,0,4,94.7,4.3,0,,0,233,0,0,1.386294,5.451038,0,0,0,0,0,0,77.32689,9.174315,1.386294,3.980472,1 +2,1,100,1,1,128431,0,5694.789,27.08008,1,7,1,92.92566,50.67746,32.57794,0,306.1631,482.3441,1,0,0,13,1,5,66.3,34.8,1,,594,594,0,0,1.609438,6.386879,1,0,0,0,1,0,52.32401,8.647483,1.609438,6.178658,1 +2,1,100,1,2,128431,0,5694.789,28.08008,1,7,1,117.1961,28.75137,0,0,0,145.9474,0,0,0,5,0,5,66.3,34.8,1,,594,594,0,0,1.609438,6.386879,1,0,0,0,1,0,52.32401,8.647483,1.609438,4.983246,1 +2,1,100,1,3,128431,0,5694.789,29.08008,1,7,1,17.45636,9.900249,26.58354,0,0,53.94015,0,0,0,1,1,5,66.3,34.8,1,,594,594,0,0,1.609438,6.386879,1,0,0,0,1,0,52.32401,8.647483,1.609438,3.987875,1 +2,1,100,1,1,128432,0,5694.789,7.937029,0,7,1,10.79137,7.847722,0,0,0,18.63909,0,0,0,1,0,5,74.36826,13.73189,0,,594,594,1,0,1.609438,6.386879,1,0,0,0,1,0,59.21023,8.647483,1.609438,2.925261,1 +2,1,100,1,2,128432,0,5694.789,8.93703,0,7,1,60.24096,4.156627,0,0,2155.75,2220.148,2,0,0,6,0,5,74.36826,13.73189,0,,594,594,1,0,1.609438,6.386879,1,0,0,0,1,0,59.21023,8.647483,1.609438,7.705329,1 +2,1,100,1,3,128432,0,5694.789,9.93703,0,7,1,555.3616,7.845387,0,0,2160.798,2724.005,2,0,0,7,2,5,74.36826,13.73189,0,,594,594,1,0,1.609438,6.386879,1,0,0,0,1,0,59.21023,8.647483,1.609438,7.909858,1 +2,1,100,1,1,128433,0,5694.789,10.80356,0,7,1,20.38369,1.193046,26.97842,0,0,48.55516,0,0,0,1,2,5,74.36826,13.73189,0,,594,594,1,0,1.609438,6.386879,1,0,0,0,1,0,63.0433,8.647483,1.609438,3.8827,1 +2,1,100,1,2,128433,0,5694.789,11.80356,0,7,1,50.38335,3.214677,0,0,0,53.59803,0,0,0,3,0,5,74.36826,13.73189,0,,594,594,1,0,1.609438,6.386879,1,0,0,0,1,0,63.0433,8.647483,1.609438,3.981512,1 +2,1,100,1,3,128433,0,5694.789,12.80356,0,7,1,30.1995,8.249376,0,0,358.9526,397.4015,1,0,0,2,0,5,74.36826,13.73189,0,,594,594,1,0,1.609438,6.386879,1,0,0,0,1,0,63.0433,8.647483,1.609438,5.984947,1 +2,1,100,1,1,128434,0,5694.789,4.172484,0,7,1,49.46043,12.11031,0,0,0,61.57074,0,0,0,4,1,5,74.36826,13.73189,0,,594,594,1,0,1.609438,6.386879,1,0,0,0,0,0,75.11046,8.647483,1.609438,4.120187,1 +2,1,100,1,2,128434,0,5694.789,5.172484,0,7,1,98.35706,5.219058,0,0,0,103.5761,0,0,0,6,0,5,74.36826,13.73189,0,,594,594,1,0,1.609438,6.386879,1,0,0,0,0,0,75.11046,8.647483,1.609438,4.640307,1 +2,1,100,1,3,128434,0,5694.789,6.172484,0,7,1,20.94763,7.246883,0,0,0,28.19451,0,0,0,2,0,5,74.36826,13.73189,0,,594,594,1,0,1.609438,6.386879,1,0,0,0,0,0,75.11046,8.647483,1.609438,3.339127,1 +2,1,100,1,1,128435,0,5694.789,32.46544,0,12,1,185.7014,3.219424,0,0,0,188.9209,0,0,0,2,0,5,65.3,17.4,0,,594,594,0,0,1.609438,6.386879,1,0,0,1,0,0,70.86124,8.647483,1.609438,5.241328,1 +2,1,100,1,2,128435,0,5694.789,33.46544,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,65.3,17.4,0,,594,594,0,0,1.609438,6.386879,1,0,0,1,0,0,70.86124,8.647483,1.609438,,0 +2,1,100,1,3,128435,0,5694.789,34.46544,0,12,1,18.95262,2.049875,0,0,0,21.00249,0,0,0,1,0,5,65.3,17.4,0,,594,594,0,0,1.609438,6.386879,1,0,0,1,0,0,70.86124,8.647483,1.609438,3.044641,1 +11,1,0,1,1,128438,0,14655.34,47.23614,1,12,1,89.32854,307.9616,39.47842,0,0,436.7686,0,0,0,6,1,3,46.3,13,0,,0,329,0,0,1.098612,5.796058,0,0,0,0,0,0,78.72062,9.592628,1.098612,6.079403,1 +11,1,0,1,2,128438,0,14655.34,48.23614,1,12,1,0,304.2169,0,0,0,304.2169,0,0,0,0,0,3,46.3,13,0,,0,329,0,0,1.098612,5.796058,0,0,0,0,0,0,78.72062,9.592628,1.098612,5.717741,1 +11,1,0,1,3,128438,0,14655.34,49.23614,1,12,1,14.96259,64.68828,16.6783,0,0,96.32918,0,0,0,1,1,3,46.3,13,0,,0,329,0,0,1.098612,5.796058,0,0,0,0,0,0,78.72062,9.592628,1.098612,4.567771,1 +11,1,0,1,4,128438,0,14655.34,50.23614,1,12,1,51.6367,44.92854,0,0,0,96.56524,0,0,0,3,1,3,46.3,13,0,,0,329,0,0,1.098612,5.796058,0,0,0,0,0,0,78.72062,9.592628,1.098612,4.570219,1 +11,1,0,1,5,128438,0,14655.34,51.23614,1,12,1,101.1426,62.95387,25.20525,0,451.3161,640.6179,1,0,0,2,0,3,46.3,13,0,,0,329,0,0,1.098612,5.796058,0,0,0,0,0,0,78.72062,9.592628,1.098612,6.462433,1 +11,1,0,1,1,128439,0,14655.34,18.45311,1,12,1,11.99041,0,29.73022,0,0,41.72062,0,0,0,0,1,3,65.3,4.3,0,,0,329,0,0,1.098612,5.796058,0,0,0,0,0,0,79.76731,9.592628,1.098612,3.730996,1 +11,1,0,1,2,128439,0,14655.34,19.45311,1,12,1,31.21577,5.969332,0,0,0,37.1851,0,0,0,4,0,3,65.3,4.3,0,,0,329,0,0,1.098612,5.796058,0,0,0,0,0,0,79.76731,9.592628,1.098612,3.615908,1 +11,1,0,1,3,128439,0,14655.34,20.45311,1,12,1,40.399,15.12219,24.0798,0,0,79.601,0,0,0,3,1,3,65.3,4.3,0,,0,329,0,0,1.098612,5.796058,0,0,0,0,0,0,79.76731,9.592628,1.098612,4.377027,1 +11,1,0,1,4,128439,0,14655.34,21.45311,1,12,1,22.59105,57.13232,0,0,0,79.72337,0,0,0,3,0,3,65.3,4.3,0,,0,329,0,0,1.098612,5.796058,0,0,0,0,0,0,79.76731,9.592628,1.098612,4.378563,1 +11,1,0,1,5,128439,0,14655.34,22.45311,1,12,1,28.35379,37.93906,27.08845,0,0,93.38129,0,0,0,2,1,3,65.3,4.3,0,,0,329,0,0,1.098612,5.796058,0,0,0,0,0,0,79.76731,9.592628,1.098612,4.536691,1 +11,1,0,1,1,128440,0,14655.34,52.82409,0,12,1,39.56834,67.91367,16.91846,0,0,124.4005,0,0,0,4,1,3,66.3,17.4,0,,0,329,0,0,1.098612,5.796058,0,0,0,1,0,0,64.3789,9.592628,1.098612,4.823506,1 +11,1,0,1,2,128440,0,14655.34,53.82409,0,12,1,83.24206,58.61446,0,0,3381.911,3523.768,1,0,0,11,0,3,66.3,17.4,0,,0,329,0,0,1.098612,5.796058,0,0,0,1,0,0,64.3789,9.592628,1.098612,8.167286,1 +11,1,0,1,3,128440,0,14655.34,54.82409,0,12,1,70.07481,24.01496,18.95262,0,938.4589,1051.501,1,0,0,7,1,3,66.3,17.4,0,,0,329,0,0,1.098612,5.796058,0,0,0,1,0,0,64.3789,9.592628,1.098612,6.957974,1 +11,1,0,1,4,128440,0,14655.34,55.82409,0,12,1,38.72752,27.70862,0,0,0,66.43614,0,0,0,3,0,3,66.3,17.4,0,,0,329,0,0,1.098612,5.796058,0,0,0,1,0,0,64.3789,9.592628,1.098612,4.196241,1 +11,1,0,1,5,128440,0,14655.34,56.82409,0,12,1,69.4033,34.40542,0,0,0,103.8087,0,0,0,5,1,3,66.3,17.4,0,,0,329,0,0,1.098612,5.796058,0,0,0,1,0,0,64.3789,9.592628,1.098612,4.64255,1 +2,1,100,0,1,128443,0,9138.338,3.674196,1,13,1,7.656066,0,0,0,0,7.656066,0,0,0,1,0,3,74.36826,13.73189,0,,890,890,1,1,1.098612,6.791222,1,0,0,0,0,0,78.11302,9.120343,1.098612,2.035498,1 +2,1,100,0,2,128443,0,9138.338,4.674196,1,13,1,15.63342,2.12938,0,0,0,17.7628,0,0,0,2,0,4,74.36826,13.73189,0,,890,890,1,1,1.386294,6.791222,1,0,0,0,0,0,78.11302,9.120343,1.386294,2.877107,1 +2,1,100,0,3,128443,0,9138.338,5.674196,1,13,1,13.26781,.982801,0,0,0,14.25061,0,0,0,1,0,4,74.36826,13.73189,0,,890,890,1,1,1.386294,6.791222,1,0,0,0,0,0,78.11302,9.120343,1.386294,2.6568,1 +2,1,100,0,4,128443,0,9138.338,6.674196,1,13,1,15.04102,0,0,0,0,15.04102,0,0,0,1,0,4,74.36826,13.73189,0,,890,890,1,1,1.386294,6.791222,1,0,0,0,0,0,78.11302,9.120343,1.386294,2.710781,1 +2,1,100,0,5,128443,0,9138.338,7.674196,1,13,1,22.50938,0,0,0,0,22.50938,0,0,0,3,0,4,74.36826,13.73189,0,,890,890,1,1,1.386294,6.791222,1,0,0,0,0,0,78.11302,9.120343,1.386294,3.113932,1 +2,1,100,0,1,128444,0,9138.338,28.71184,0,14,1,337.1614,5.276796,21.66667,0,0,364.1048,0,0,0,4,1,3,50.5,0,0,,890,890,0,0,1.098612,6.791222,1,0,0,0,0,0,77.94995,9.120343,1.098612,5.897442,1 +2,1,100,0,2,128444,0,9138.338,29.71184,0,14,1,41.53639,4.204852,0,0,0,45.74124,0,0,0,3,0,4,50.5,0,0,,890,890,0,0,1.386294,6.791222,1,0,0,0,0,0,77.94995,9.120343,1.386294,3.823,1 +2,1,100,0,3,128444,0,9138.338,30.71184,0,14,1,9.82801,5.174447,0,0,0,15.00246,0,0,0,2,0,4,50.5,0,0,,890,890,0,0,1.386294,6.791222,1,0,0,0,0,0,77.94995,9.120343,1.386294,2.708214,1 +2,1,100,0,4,128444,0,9138.338,31.71184,0,14,1,5.469462,0,0,0,0,5.469462,0,0,0,1,0,4,50.5,0,0,,890,890,0,0,1.386294,6.791222,1,0,0,0,0,0,77.94995,9.120343,1.386294,1.69918,1 +2,1,100,0,5,128444,0,9138.338,32.71184,0,14,1,77.2822,2.917882,0,0,0,80.20008,0,0,0,4,0,4,50.5,0,0,,890,890,0,0,1.386294,6.791222,1,0,0,0,0,0,77.94995,9.120343,1.386294,4.384524,1 +2,1,100,0,1,128445,0,9138.338,25.40452,1,13,1,85.39458,11.40754,0,0,665.3121,762.1143,1,0,0,2,0,3,84.2,8.7,0,,890,890,0,0,1.098612,6.791222,1,0,0,0,0,0,73.57805,9.120343,1.098612,6.636096,1 +2,1,100,0,2,128445,0,9138.338,26.40452,1,13,1,21.02426,6.091644,0,0,0,27.1159,0,0,0,3,0,4,84.2,8.7,0,,890,890,0,0,1.386294,6.791222,1,0,0,0,0,0,73.57805,9.120343,1.386294,3.30012,1 +2,1,100,0,3,128445,0,9138.338,27.40452,1,13,1,43.24324,3.439803,0,0,0,46.68305,0,0,0,6,0,4,84.2,8.7,0,,890,890,0,0,1.386294,6.791222,1,0,0,0,0,0,73.57805,9.120343,1.386294,3.843381,1 +2,1,100,0,4,128445,0,9138.338,28.40452,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,84.2,8.7,0,,890,890,0,0,1.386294,6.791222,1,0,0,0,0,0,73.57805,9.120343,1.386294,,0 +2,1,100,0,5,128445,0,9138.338,29.40452,1,13,1,19.17466,0,0,0,0,19.17466,0,0,0,2,0,4,84.2,8.7,0,,890,890,0,0,1.386294,6.791222,1,0,0,0,0,0,73.57805,9.120343,1.386294,2.953589,1 +11,1,0,0,1,128468,0,10325.68,19.80561,0,12,1,32.97998,9.140165,41.54299,0,0,83.66313,0,0,0,2,1,4,78.9,4.3,0,,0,195,0,0,1.386294,5.273,0,0,0,0,0,0,78.46669,9.242486,1.386294,4.426798,1 +11,1,0,0,2,128468,0,10325.68,20.80561,0,12,1,57.68194,0,0,0,0,57.68194,0,0,0,3,0,4,78.9,4.3,0,,0,195,0,0,1.386294,5.273,0,0,0,0,0,0,78.46669,9.242486,1.386294,4.054944,1 +11,1,0,0,3,128468,0,10325.68,21.80561,0,12,1,253.0713,5.479115,0,0,0,258.5504,0,0,0,1,22,4,78.9,4.3,0,,0,195,0,0,1.386294,5.273,0,0,0,0,0,0,78.46669,9.242486,1.386294,5.55509,1 +11,1,0,0,4,128468,0,10325.68,22.80561,0,12,.2684931,260.711,0,0,0,0,260.711,0,0,0,0,21,4,78.9,4.3,0,,0,195,0,0,1.386294,5.273,0,0,0,0,0,0,78.46669,9.242486,1.386294,5.563413,1 +11,1,0,0,1,128469,0,10325.68,40.51472,1,12,1,11.77856,0,0,0,0,11.77856,0,0,0,0,0,4,84.2,4.3,0,,0,195,0,0,1.386294,5.273,0,0,0,0,0,0,78.31118,9.242486,1.386294,2.466281,1 +11,1,0,0,2,128469,0,10325.68,41.51472,1,12,1,43.66577,2.156334,366.5768,0,0,412.3989,0,0,0,4,0,4,84.2,4.3,0,,0,195,0,0,1.386294,5.273,0,0,0,0,0,0,78.31118,9.242486,1.386294,6.021991,1 +11,1,0,0,3,128469,0,10325.68,42.51472,1,12,1,14.74201,0,0,0,271.9754,286.7174,1,0,0,2,0,4,84.2,4.3,0,,0,195,0,0,1.386294,5.273,0,0,0,0,0,0,78.31118,9.242486,1.386294,5.658497,1 +11,1,0,0,4,128469,0,10325.68,43.51472,1,12,1,15.9526,0,15.9526,0,0,31.9052,0,0,0,1,0,4,84.2,4.3,0,,0,195,0,0,1.386294,5.273,0,0,0,0,0,0,78.31118,9.242486,1.386294,3.462769,1 +11,1,0,0,5,128469,0,10325.68,44.51472,1,12,1,45.85244,5.814923,0,0,0,51.66736,0,0,0,2,0,3,84.2,4.3,0,,0,195,0,0,1.098612,5.273,0,0,0,0,0,0,78.31118,9.242486,1.098612,3.944826,1 +11,1,0,0,1,128470,0,10325.68,40.4627,0,11,1,98.0742,16.16608,0,0,0,114.2403,0,0,0,7,1,4,83.2,0,0,,0,195,0,0,1.386294,5.273,0,0,0,0,0,0,73.53505,9.242486,1.386294,4.738304,1 +11,1,0,0,2,128470,0,10325.68,41.4627,0,11,1,5.390836,0,0,0,0,5.390836,0,0,0,1,0,4,83.2,0,0,,0,195,0,0,1.386294,5.273,0,0,0,0,0,0,73.53505,9.242486,1.386294,1.6847,1 +11,1,0,0,3,128470,0,10325.68,42.4627,0,11,1,269.7789,1.891892,29.27273,0,0,300.9435,0,0,0,2,13,4,83.2,0,0,,0,195,0,0,1.386294,5.273,0,0,0,0,0,0,73.53505,9.242486,1.386294,5.706923,1 +11,1,0,0,4,128470,0,10325.68,43.4627,0,11,1,209.6627,0,0,0,0,209.6627,0,0,0,1,18,4,83.2,0,0,,0,195,0,0,1.386294,5.273,0,0,0,0,0,0,73.53505,9.242486,1.386294,5.3455,1 +11,1,0,0,5,128470,0,10325.68,44.4627,0,11,1,125.2188,.2084202,0,0,0,125.4273,0,0,0,4,0,3,83.2,0,0,,0,195,0,0,1.098612,5.273,0,0,0,0,0,0,73.53505,9.242486,1.098612,4.831726,1 +11,1,0,0,1,128471,0,10325.68,15.37851,0,12,1,14.13428,4.240283,0,0,0,18.37456,0,0,0,2,0,4,83.2,0,0,,0,195,1,0,1.386294,5.273,0,0,0,0,0,0,80.31274,9.242486,1.386294,2.910967,1 +11,1,0,0,2,128471,0,10325.68,16.37851,0,12,1,33.42318,2.156334,0,0,0,35.57951,0,0,0,3,0,4,83.2,0,0,,0,195,1,0,1.386294,5.273,0,0,0,0,0,0,80.31274,9.242486,1.386294,3.57177,1 +11,1,0,0,3,128471,0,10325.68,17.37851,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.2,0,0,,0,195,1,0,1.386294,5.273,0,0,0,0,0,0,80.31274,9.242486,1.386294,,0 +11,1,0,0,4,128471,0,10325.68,18.37851,0,12,1,25.06837,0,0,0,0,25.06837,0,0,0,4,0,4,83.2,0,0,,0,195,0,0,1.386294,5.273,0,0,0,0,0,0,80.31274,9.242486,1.386294,3.221607,1 +11,1,0,0,5,128471,0,10325.68,19.37851,0,12,1,31.26303,0,0,0,0,31.26303,0,0,0,1,0,3,83.2,0,0,,0,195,0,0,1.098612,5.273,0,0,0,0,0,0,80.31274,9.242486,1.098612,3.442436,1 +7,1,25,0,1,128493,0,11517.37,12.82957,1,12,1,17.07892,1.177856,0,0,0,18.25677,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,73.87948,9.351699,1.386294,2.904536,1 +7,1,25,0,2,128493,0,11517.37,13.82957,1,12,1,33.96227,0,0,0,0,33.96227,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,73.87948,9.351699,1.386294,3.52525,1 +7,1,25,0,3,128493,0,11517.37,14.82957,1,12,1,21.62162,.982801,0,0,0,22.60442,0,0,0,4,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,73.87948,9.351699,1.386294,3.118146,1 +7,1,25,0,4,128493,0,11517.37,15.82957,1,12,1,37.60255,0,32.38833,0,0,69.99088,0,0,0,4,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,73.87948,9.351699,1.386294,4.248365,1 +7,1,25,0,5,128493,0,11517.37,16.82957,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,73.87948,9.351699,1.386294,,0 +7,1,25,0,1,128494,0,11517.37,38.95414,0,10,1,50.05889,1.177856,0,0,0,51.23675,0,0,0,2,0,4,82.5,13.73189,1,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,71.52279,9.351699,1.386294,3.936457,1 +7,1,25,0,2,128494,0,11517.37,39.95414,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,82.5,13.73189,1,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,71.52279,9.351699,1.386294,,0 +7,1,25,0,3,128494,0,11517.37,40.95414,0,10,1,12.28501,0,28.99263,0,0,41.27764,0,0,0,1,0,4,82.5,13.73189,1,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,71.52279,9.351699,1.386294,3.720321,1 +7,1,25,0,4,128494,0,11517.37,41.95414,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,82.5,13.73189,1,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,71.52279,9.351699,1.386294,,0 +7,1,25,0,5,128494,0,11517.37,42.95414,0,10,1,172.5719,0,37.09879,0,0,209.6707,0,0,0,4,4,4,82.5,13.73189,1,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,71.52279,9.351699,1.386294,5.345538,1 +7,1,25,0,1,128495,0,11517.37,10.46133,1,12,1,9.422851,6.919906,0,0,0,16.34276,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,76.19097,9.351699,1.386294,2.793785,1 +7,1,25,0,2,128495,0,11517.37,11.46133,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,76.19097,9.351699,1.386294,,0 +7,1,25,0,3,128495,0,11517.37,12.46133,1,12,1,8.845209,0,0,0,0,8.845209,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,76.19097,9.351699,1.386294,2.179876,1 +7,1,25,0,4,128495,0,11517.37,13.46133,1,12,1,10.25524,0,0,0,0,10.25524,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,76.19097,9.351699,1.386294,2.327789,1 +7,1,25,0,5,128495,0,11517.37,14.46133,1,12,1,8.336807,0,0,0,0,8.336807,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,76.19097,9.351699,1.386294,2.12068,1 +7,1,25,0,1,128496,0,11517.37,34.08624,1,12,1,283.2744,67.55595,27.67962,0,0,378.51,0,0,0,19,0,4,80,13.73189,1,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,1,0,56.49276,9.351699,1.386294,5.936243,1 +7,1,25,0,2,128496,0,11517.37,35.08624,1,12,1,76.54987,32.19946,0,0,0,108.7493,0,0,0,11,0,4,80,13.73189,1,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,1,0,56.49276,9.351699,1.386294,4.689045,1 +7,1,25,0,3,128496,0,11517.37,36.08624,1,12,1,40.29484,20.93366,0,0,0,61.2285,0,0,0,8,0,4,80,13.73189,1,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,1,0,56.49276,9.351699,1.386294,4.114613,1 +7,1,25,0,4,128496,0,11517.37,37.08624,1,12,1,20.96627,0,0,0,0,20.96627,0,0,0,1,1,4,80,13.73189,1,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,1,0,56.49276,9.351699,1.386294,3.042915,1 +7,1,25,0,5,128496,0,11517.37,38.08624,1,12,1,32.51355,4.997916,26.5694,0,0,64.08086,0,0,0,3,0,4,80,13.73189,1,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,1,0,56.49276,9.351699,1.386294,4.160146,1 +10,1,50,0,1,128497,0,10301.49,7.545517,0,9,1,8.833922,0,0,0,0,8.833922,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,84.4333,9.240141,1.791759,2.178599,1 +10,1,50,0,2,128497,0,10301.49,8.545517,0,9,1,90.02695,0,0,0,173.5094,263.5364,1,0,0,2,2,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,84.4333,9.240141,1.791759,5.574192,1 +10,1,50,0,1,128498,0,10301.49,27.53183,1,9,1,30.03534,5.300354,0,0,0,35.33569,0,0,0,4,0,6,65,13.73189,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,63.61448,9.240141,1.791759,3.564893,1 +10,1,50,0,2,128498,0,10301.49,28.53183,1,9,1,14.01617,1.617251,29.6496,0,0,45.28302,0,0,0,1,0,6,65,13.73189,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,63.61448,9.240141,1.791759,3.812932,1 +10,1,50,0,1,128499,0,10301.49,10.04517,1,9,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,83.91933,9.240141,1.791759,,0 +10,1,50,0,2,128499,0,10301.49,11.04517,1,9,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,83.91933,9.240141,1.791759,,0 +10,1,50,0,1,128500,0,10301.49,11.32101,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,84.4333,9.240141,1.791759,,0 +10,1,50,0,2,128500,0,10301.49,12.32101,0,9,1,7.008086,0,0,0,0,7.008086,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,84.4333,9.240141,1.791759,1.947065,1 +10,1,50,0,1,128501,0,10301.49,4.911705,1,9,1,101.2956,0,0,0,0,101.2956,0,0,0,4,2,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,80.4877,9.240141,1.791759,4.618043,1 +10,1,50,0,2,128501,0,10301.49,5.911705,1,9,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,80.4877,9.240141,1.791759,,0 +10,1,50,0,1,128502,0,10301.49,31.90417,0,8,1,8.462897,16.66078,0,0,0,25.12367,0,0,0,0,0,6,90,13.73189,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,61.55907,9.240141,1.791759,3.223811,1 +10,1,50,0,2,128502,0,10301.49,32.90417,0,8,1,229.3801,2.32345,0,0,0,231.7035,0,0,0,2,1,6,90,13.73189,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,1,0,0,61.55907,9.240141,1.791759,5.445458,1 +11,1,0,1,1,128520,0,9861.166,15.50171,0,12,1,19.63117,0,36.68055,0,0,56.31172,0,0,0,1,1,6,98.9,13,0,,0,196,1,0,1.791759,5.278115,0,0,0,0,0,0,80.40273,9.196461,1.791759,4.030903,1 +11,1,0,1,2,128520,0,9861.166,16.50171,0,12,1,9.798585,1.633097,0,0,0,11.43168,0,0,0,2,0,6,98.9,13,0,,0,196,1,0,1.791759,5.278115,0,0,0,0,0,0,80.40273,9.196461,1.791759,2.436388,1 +11,1,0,1,3,128520,0,9861.166,17.50171,0,12,1,53.51833,14.49455,0,0,0,68.01289,0,0,0,5,0,6,98.9,13,0,,0,196,1,0,1.791759,5.278115,0,0,0,0,0,0,80.40273,9.196461,1.791759,4.219697,1 +11,1,0,1,4,128520,0,9861.166,18.50171,0,12,1,219.0225,36.85177,19.66498,0,0,275.5392,0,0,0,3,1,6,98.9,13,0,,0,196,0,0,1.791759,5.278115,0,0,0,0,0,0,80.40273,9.196461,1.791759,5.61873,1 +11,1,0,1,5,128520,0,9861.166,19.50171,0,12,1,33.65587,27.34539,0,0,0,61.00126,0,0,0,0,0,6,98.9,13,0,,0,196,0,0,1.791759,5.278115,0,0,0,0,0,0,80.40273,9.196461,1.791759,4.110895,1 +11,1,0,1,1,128521,0,9861.166,8.960985,1,12,1,27.95955,7.346817,0,0,0,35.30637,0,0,0,4,0,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,0,0,0,84.62004,9.196461,1.791759,3.564063,1 +11,1,0,1,2,128521,0,9861.166,9.960985,1,12,1,16.33097,3.701688,0,0,0,20.03266,0,0,0,3,0,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,0,0,0,84.62004,9.196461,1.791759,2.997364,1 +11,1,0,1,3,128521,0,9861.166,10.96099,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,0,0,0,84.62004,9.196461,1.791759,,0 +11,1,0,1,4,128521,0,9861.166,11.96099,1,12,1,11.93208,0,0,0,0,11.93208,0,0,0,1,1,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,0,0,0,84.62004,9.196461,1.791759,2.47923,1 +11,1,0,1,5,128521,0,9861.166,12.96099,1,12,1,18.93143,0,0,0,0,18.93143,0,0,0,2,0,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,0,0,0,84.62004,9.196461,1.791759,2.940823,1 +11,1,0,1,1,128522,0,9861.166,11.76454,1,12,1,224.0631,213.028,51.08864,0,0,488.1797,0,0,0,20,0,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,1,0,0,74.44305,9.196461,1.791759,6.190683,1 +11,1,0,1,2,128522,0,9861.166,12.76454,1,12,1,44.09363,98.44855,0,0,319.4883,462.0305,1,0,0,9,0,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,1,0,0,74.44305,9.196461,1.791759,6.135631,1 +11,1,0,1,3,128522,0,9861.166,13.76454,1,12,1,127.8494,71.67988,0,0,0,199.5292,0,0,0,26,0,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,1,0,0,74.44305,9.196461,1.791759,5.295961,1 +11,1,0,1,4,128522,0,9861.166,14.76454,1,12,1,114.5021,82.07893,.6883892,0,407.8476,605.117,1,0,0,28,1,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,1,0,0,74.44305,9.196461,1.791759,6.405422,1 +11,1,0,1,5,128522,0,9861.166,15.76454,1,12,1,225.6458,82.06563,0,0,0,307.7114,0,0,0,33,0,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,1,0,0,74.44305,9.196461,1.791759,5.729162,1 +11,1,0,1,1,128523,0,9861.166,41.42368,0,12,1,151.6954,39.64902,36.68055,0,1444.325,1672.35,2,0,0,13,1,6,100,8.7,0,,0,196,0,0,1.791759,5.278115,0,0,0,0,0,0,76.77452,9.196461,1.791759,7.421985,1 +11,1,0,1,2,128523,0,9861.166,42.42368,0,12,1,91.99783,33.043,0,0,0,125.0408,0,0,0,11,0,6,100,8.7,0,,0,196,0,0,1.791759,5.278115,0,0,0,0,0,0,76.77452,9.196461,1.791759,4.82864,1 +11,1,0,1,3,128523,0,9861.166,43.42368,0,12,1,95.14371,26.53617,0,0,0,121.6799,0,0,0,12,0,6,100,8.7,0,,0,196,0,0,1.791759,5.278115,0,0,0,0,0,0,76.77452,9.196461,1.791759,4.801394,1 +11,1,0,1,4,128523,0,9861.166,44.42368,0,12,1,55.98899,34.69481,0,0,0,90.6838,0,0,0,7,0,6,100,8.7,0,,0,196,0,0,1.791759,5.278115,0,0,0,0,0,0,76.77452,9.196461,1.791759,4.507379,1 +11,1,0,1,5,128523,0,9861.166,45.42368,0,12,1,147.1435,32.96172,36.04544,0,0,216.1506,0,0,0,16,0,6,100,8.7,0,,0,196,0,0,1.791759,5.278115,0,0,0,0,0,0,76.77452,9.196461,1.791759,5.375976,1 +11,1,0,1,1,128524,0,9861.166,39.96167,1,12,1,42.23676,22.57585,24.98513,0,0,89.79774,0,0,0,6,0,6,77.9,8.7,0,,0,196,0,0,1.791759,5.278115,0,0,0,0,0,0,79.44787,9.196461,1.791759,4.49756,1 +11,1,0,1,2,128524,0,9861.166,40.96167,1,12,1,193.5493,5.770278,21.62221,0,0,220.9418,0,0,0,3,1,6,77.9,8.7,0,,0,196,0,0,1.791759,5.278115,0,0,0,0,0,0,79.44787,9.196461,1.791759,5.397899,1 +11,1,0,1,3,128524,0,9861.166,41.96167,1,12,1,48.06739,8.671952,0,0,0,56.73935,0,0,0,6,0,6,77.9,8.7,0,,0,196,0,0,1.791759,5.278115,0,0,0,0,0,0,79.44787,9.196461,1.791759,4.038468,1 +11,1,0,1,4,128524,0,9861.166,42.96167,1,12,1,64.70858,17.37035,53.7173,0,0,135.7962,0,0,0,7,1,6,77.9,8.7,0,,0,196,0,0,1.791759,5.278115,0,0,0,0,0,0,79.44787,9.196461,1.791759,4.911156,1 +11,1,0,1,5,128524,0,9861.166,43.96167,1,12,1,251.6702,37.54733,31.15692,0,0,320.3744,0,0,0,6,0,6,77.9,8.7,0,,0,196,0,0,1.791759,5.278115,0,0,0,0,0,0,79.44787,9.196461,1.791759,5.76949,1 +11,1,0,1,1,128525,0,9861.166,10.65571,1,12,1,19.63117,1.784652,0,0,0,21.41582,0,0,0,2,0,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,0,0,0,84.62004,9.196461,1.791759,3.06413,1 +11,1,0,1,2,128525,0,9861.166,11.65571,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,0,0,0,84.62004,9.196461,1.791759,,0 +11,1,0,1,3,128525,0,9861.166,12.65571,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,0,0,0,84.62004,9.196461,1.791759,,0 +11,1,0,1,4,128525,0,9861.166,13.65571,1,12,1,35.79624,.9178522,0,0,0,36.71409,0,0,0,3,1,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,0,0,0,84.62004,9.196461,1.791759,3.603161,1 +11,1,0,1,5,128525,0,9861.166,14.65571,1,12,1,22.71771,0,0,0,0,22.71771,0,0,0,3,0,6,74.36826,13.73189,0,,0,196,1,1,1.791759,5.278115,0,0,0,0,0,0,84.62004,9.196461,1.791759,3.123145,1 +5,1,25,0,1,128550,1,5445.176,5.004791,1,14,1,100.2698,0,0,0,464.0707,564.3405,1,0,0,2,0,3,74.36826,13.73189,0,,359,359,1,1,1.098612,5.883322,0,3.258096,7.269617,1,0,0,76.07727,8.602669,1.098612,6.335658,1 +5,1,25,0,2,128550,1,5445.176,6.004791,1,14,1,13.30778,6.818182,0,0,0,20.12596,0,0,0,1,0,3,74.36826,13.73189,0,,359,359,1,1,1.098612,5.883322,0,3.258096,7.269617,1,0,0,76.07727,8.602669,1.098612,3.00201,1 +5,1,25,0,3,128550,1,5445.176,7.004791,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,359,359,1,1,1.098612,5.883322,0,3.258096,7.269617,1,0,0,76.07727,8.602669,1.098612,,0 +5,1,25,0,1,128551,1,5445.176,27.5154,1,14,1,18.58513,0,0,0,0,18.58513,0,0,0,2,0,3,80,13.73189,0,,359,359,0,0,1.098612,5.883322,0,3.258096,7.269617,1,0,0,68.25694,8.602669,1.098612,2.922362,1 +5,1,25,0,2,128551,1,5445.176,28.5154,1,14,1,378.0285,0,0,0,0,378.0285,0,0,0,3,0,3,80,13.73189,0,,359,359,0,0,1.098612,5.883322,0,3.258096,7.269617,1,0,0,68.25694,8.602669,1.098612,5.934969,1 +5,1,25,0,3,128551,1,5445.176,29.5154,1,14,1,33.41646,0,0,0,0,33.41646,0,0,0,4,0,3,80,13.73189,0,,359,359,0,0,1.098612,5.883322,0,3.258096,7.269617,1,0,0,68.25694,8.602669,1.098612,3.509048,1 +5,1,25,0,1,128552,1,5445.176,5.965777,1,14,1,22.93165,0,0,0,0,22.93165,0,0,0,1,0,3,74.36826,13.73189,0,,359,359,1,1,1.098612,5.883322,0,3.258096,7.269617,1,0,0,79.50889,8.602669,1.098612,3.132518,1 +5,1,25,0,2,128552,1,5445.176,6.965777,1,14,1,5.476451,0,0,0,0,5.476451,0,0,0,1,0,3,74.36826,13.73189,0,,359,359,1,1,1.098612,5.883322,0,3.258096,7.269617,1,0,0,79.50889,8.602669,1.098612,1.700457,1 +5,1,25,0,3,128552,1,5445.176,7.965777,1,14,1,4.987531,0,0,0,0,4.987531,0,0,0,1,0,3,74.36826,13.73189,0,,359,359,1,1,1.098612,5.883322,0,3.258096,7.269617,1,0,0,79.50889,8.602669,1.098612,1.606941,1 +1,1,0,1,1,128569,1,15095.53,24.39973,1,16,1,54.72933,0,0,0,0,54.72933,0,0,0,2,0,2,73.7,8.7,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,65.77286,9.62222,.6931472,4.0024,1 +1,1,0,1,2,128569,1,15095.53,25.39973,1,16,1,117.583,0,29.1399,0,0,146.7229,0,0,0,6,1,2,73.7,8.7,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,65.77286,9.62222,.6931472,4.988546,1 +1,1,0,1,3,128569,1,15095.53,26.39973,1,16,1,24.77701,0,0,0,865.4361,890.2131,1,0,0,1,0,2,73.7,8.7,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,65.77286,9.62222,.6931472,6.791461,1 +1,1,0,1,1,128570,1,15095.53,28.9473,0,18,1,25.25282,0,0,0,346.3712,371.624,1,0,0,0,0,2,68.4,4.3,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,67.4578,9.62222,.6931472,5.917882,1 +1,1,0,1,2,128570,1,15095.53,29.9473,0,18,1,121.3936,0,0,0,0,121.3936,0,0,0,7,0,2,68.4,4.3,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,67.4578,9.62222,.6931472,4.799038,1 +1,1,0,1,3,128570,1,15095.53,30.9473,0,18,1,601.4371,20.48067,0,0,45.09415,667.0119,0,0,0,6,1,2,68.4,4.3,0,,300,300,0,0,.6931472,5.703783,1,0,0,1,0,0,67.4578,9.62222,.6931472,6.502808,1 +7,1,25,0,1,128581,1,14949.13,36.22724,0,18,1,65.84217,38.27444,24.73498,106.0071,1154.152,1283.004,2,0,14,1,1,5,73.8,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,65.67462,9.612475,1.609438,7.156959,1 +7,1,25,0,2,128581,1,14949.13,37.22724,0,18,1,29.6496,0,0,75.47169,1867.17,1896.819,1,0,14,0,0,5,73.8,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,65.67462,9.612475,1.609438,7.547934,1 +7,1,25,0,3,128581,1,14949.13,38.22724,0,18,1,0,0,0,0,0,0,0,0,0,0,0,5,73.8,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,65.67462,9.612475,1.609438,,0 +7,1,25,0,1,128582,1,14949.13,35.23888,1,16,1,310.6596,165.689,0,0,0,476.3486,0,0,0,37,1,5,47.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,68.22718,9.612475,1.609438,6.16615,1 +7,1,25,0,2,128582,1,14949.13,36.23888,1,16,1,53.36927,164.3666,0,0,0,217.7359,0,0,0,6,0,5,47.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,68.22718,9.612475,1.609438,5.383283,1 +7,1,25,0,3,128582,1,14949.13,37.23888,1,16,1,228.6241,155.8673,0,0,0,384.4914,0,0,0,11,1,5,47.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,68.22718,9.612475,1.609438,5.951921,1 +7,1,25,0,1,128583,1,14949.13,8.536619,1,16,1,145.1708,13.39812,0,0,0,158.5689,0,0,0,6,1,5,74.36826,13.73189,1,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,88.60927,9.612475,1.609438,5.066189,1 +7,1,25,0,2,128583,1,14949.13,9.536619,1,16,1,41.50943,21.45553,0,0,0,62.96496,0,0,0,8,0,5,74.36826,13.73189,1,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,88.60927,9.612475,1.609438,4.142578,1 +7,1,25,0,3,128583,1,14949.13,10.53662,1,16,1,122.344,17.62162,0,0,403.6265,543.5922,1,0,0,5,0,5,74.36826,13.73189,1,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,88.60927,9.612475,1.609438,6.298199,1 +7,1,25,0,1,128584,1,14949.13,11.48528,1,16,1,80.38869,7.714959,20.17668,0,0,108.2803,0,0,0,4,1,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,83.93784,9.612475,1.609438,4.684723,1 +7,1,25,0,2,128584,1,14949.13,12.48528,1,16,1,0,0,28,0,0,28,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,83.93784,9.612475,1.609438,3.332205,1 +7,1,25,0,3,128584,1,14949.13,13.48528,1,16,1,14.25061,0,0,0,0,14.25061,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,83.93784,9.612475,1.609438,2.6568,1 +7,1,25,0,1,128585,1,14949.13,10.31348,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,82.66042,9.612475,1.609438,,0 +7,1,25,0,2,128585,1,14949.13,11.31348,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,82.66042,9.612475,1.609438,,0 +7,1,25,0,3,128585,1,14949.13,12.31348,0,16,1,149.8772,0,0,0,1039.926,1189.803,1,0,0,6,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,82.66042,9.612475,1.609438,7.081543,1 +5,1,25,1,1,128596,1,11635.86,39.49897,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,98.9,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,74.38396,9.361933,1.098612,,0 +5,1,25,1,2,128596,1,11635.86,40.49897,0,12,1,67.22918,4.001089,0,0,1182.967,1254.197,1,0,0,3,0,2,98.9,4.3,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,74.38396,9.361933,.6931472,7.134251,1 +5,1,25,1,3,128596,1,11635.86,41.49897,0,12,1,29.73241,0,0,0,185.8275,215.56,1,1,0,2,0,2,98.9,4.3,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,74.38396,9.361933,.6931472,5.373239,1 +5,1,25,1,1,128597,1,11635.86,4.405202,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,.0327869,,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,76.82845,9.361933,1.098612,,0 +5,1,25,1,1,128598,1,11635.86,39.54826,1,12,1,273.7359,71.98096,0,0,858.2927,1204.01,3,0,0,5,0,3,82.1,8.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,74.3345,9.361933,1.098612,7.093412,1 +5,1,25,1,2,128598,1,11635.86,40.54826,1,12,1,377.6538,10.07077,48.35057,0,0,436.0751,0,0,0,3,0,2,82.1,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,74.3345,9.361933,.6931472,6.077815,1 +5,1,25,1,3,128598,1,11635.86,41.54826,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,82.1,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,74.3345,9.361933,.6931472,,0 +11,1,0,1,1,128616,0,10317.62,42.92676,1,12,1,4.759072,2.528257,0,0,0,7.287329,0,0,0,1,0,4,92.6,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.52303,9.241705,1.386294,1.986137,1 +11,1,0,1,2,128616,0,10317.62,43.92676,1,12,1,60.42461,0,0,0,827.5177,887.9423,1,0,0,4,0,4,92.6,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.52303,9.241705,1.386294,6.788907,1 +11,1,0,1,3,128616,0,10317.62,44.92676,1,12,1,13.87512,0,37.39346,0,0,51.26858,0,0,0,1,0,4,92.6,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.52303,9.241705,1.386294,3.937078,1 +11,1,0,1,4,128616,0,10317.62,45.92676,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,92.6,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.52303,9.241705,1.386294,,0 +11,1,0,1,5,128616,0,10317.62,46.92676,1,12,1,12.62095,0,40.6647,0,0,53.28566,0,0,0,1,0,4,92.6,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.52303,9.241705,1.386294,3.975667,1 +11,1,0,1,1,128617,0,10317.62,16.9692,1,12,1,26.1749,14.03926,10.57109,0,0,50.78525,0,0,0,3,0,4,75.8,8.7,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,75.1879,9.241705,1.386294,3.927606,1 +11,1,0,1,2,128617,0,10317.62,17.9692,1,12,1,24.49646,9.145346,18.76973,0,25.91181,78.32336,1,0,0,2,0,4,75.8,8.7,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,75.1879,9.241705,1.386294,4.360846,1 +11,1,0,1,3,128617,0,10317.62,18.9692,1,12,1,57.9782,2.700694,0,0,0,60.67889,0,0,0,3,0,4,75.8,8.7,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,75.1879,9.241705,1.386294,4.105596,1 +11,1,0,1,4,128617,0,10317.62,19.9692,1,12,1,12.84993,1.376778,0,0,0,14.22671,0,0,0,1,0,4,75.8,8.7,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,75.1879,9.241705,1.386294,2.655121,1 +11,1,0,1,5,128617,0,10317.62,20.9692,1,12,1,29.44888,3.618006,0,0,0,33.06689,0,0,0,3,0,4,75.8,8.7,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,75.1879,9.241705,1.386294,3.498533,1 +11,1,0,1,1,128618,0,10317.62,14.19849,1,12,1,38.07257,17.1624,0,0,0,55.23498,0,0,0,6,0,4,77.9,8.7,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,75.1879,9.241705,1.386294,4.011596,1 +11,1,0,1,2,128618,0,10317.62,15.19849,1,12,1,47.35983,18.86228,36.40718,0,0,102.6293,0,0,0,7,0,4,77.9,8.7,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,75.1879,9.241705,1.386294,4.631124,1 +11,1,0,1,3,128618,0,10317.62,16.19849,1,12,1,87.21507,31.83845,13.9445,0,0,132.998,0,0,0,8,0,4,77.9,8.7,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,75.1879,9.241705,1.386294,4.890334,1 +11,1,0,1,4,128618,0,10317.62,17.19849,1,12,1,26.61771,6.975677,0,0,0,33.59339,0,0,0,2,0,4,77.9,8.7,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,75.1879,9.241705,1.386294,3.514329,1 +11,1,0,1,5,128618,0,10317.62,18.19849,1,12,1,20.19352,2.633572,22.22129,0,0,45.04838,0,0,0,2,0,4,77.9,8.7,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,75.1879,9.241705,1.386294,3.807737,1 +11,1,0,1,1,128619,0,10317.62,48.24641,0,18,1,33.3135,3.242118,46.00833,0,0,82.56395,0,0,0,2,0,4,89.5,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,77.31493,9.241705,1.386294,4.413573,1 +11,1,0,1,2,128619,0,10317.62,49.24641,0,18,1,0,2.776266,0,0,0,2.776266,0,0,0,0,0,4,89.5,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,77.31493,9.241705,1.386294,1.021107,1 +11,1,0,1,3,128619,0,10317.62,50.24641,0,18,1,0,0,0,0,0,0,0,0,0,0,0,4,89.5,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,77.31493,9.241705,1.386294,,0 +11,1,0,1,4,128619,0,10317.62,51.24641,0,18,1,11.01423,1.376778,0,0,0,12.39101,0,0,0,2,0,4,89.5,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,77.31493,9.241705,1.386294,2.516971,1 +11,1,0,1,5,128619,0,10317.62,52.24641,0,18,1,0,0,0,0,0,0,0,0,0,0,0,4,89.5,17.4,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,77.31493,9.241705,1.386294,,0 +1,1,0,0,1,128631,0,5385.856,60.2026,0,12,.8219178,211.6313,497.0259,50.57715,0,2080.018,2839.252,4,0,0,12,0,2,65.3,47.8,1,,0,0,0,0,.6931472,0,1,0,0,0,0,1,57.29132,8.591717,.6931472,7.951296,1 +1,1,0,0,1,128632,0,5385.856,57.78234,1,12,1,492.9329,464.0283,40.61837,0,0,997.5795,0,0,0,38,0,2,58.9,30.4,1,,0,0,0,0,.6931472,0,1,0,0,1,0,0,71.7804,8.591717,.6931472,6.905332,1 +1,1,0,0,2,128632,0,5385.856,58.78234,1,12,1,207.3585,312.6146,0,0,0,519.973,0,0,0,11,0,1,58.9,30.4,1,,0,0,0,0,0,0,1,0,0,1,0,0,71.7804,8.591717,0,6.253777,1 +1,1,0,0,3,128632,0,5385.856,59.78234,1,12,1,92.13759,361.5086,44.41769,0,0,498.0639,0,0,0,6,0,1,58.9,30.4,1,,0,0,0,0,0,0,1,0,0,1,0,0,71.7804,8.591717,0,6.210728,1 +1,1,0,0,4,128632,0,5385.856,60.78234,1,12,1,113.7192,259.6171,0,0,0,373.3364,0,0,0,9,7,1,58.9,30.4,1,,0,0,0,0,0,0,1,0,0,1,0,0,71.7804,8.591717,0,5.92248,1 +1,1,0,0,5,128632,0,5385.856,61.78234,1,12,1,73.05127,178.3243,0,0,0,251.3756,0,0,0,7,0,1,58.9,30.4,1,,0,0,0,0,0,0,1,0,0,1,0,0,71.7804,8.591717,0,5.526948,1 +8,1,50,0,1,128649,0,7208.437,58.62012,1,10,1,317.3706,70.70197,0,0,0,388.0726,0,0,0,27,0,2,72.5,13.73189,1,,607,607,0,0,.6931472,6.408529,0,3.931826,7.101676,0,0,1,38.15974,8.883146,.6931472,5.961192,1 +8,1,50,0,2,128649,0,7208.437,59.62012,1,10,1,10.88732,0,22.86336,0,0,33.75068,0,0,0,0,1,2,72.5,13.73189,1,,607,607,0,0,.6931472,6.408529,0,3.931826,7.101676,0,0,1,38.15974,8.883146,.6931472,3.519001,1 +8,1,50,0,3,128649,0,7208.437,60.62012,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,72.5,13.73189,1,,607,607,0,0,.6931472,6.408529,0,3.931826,7.101676,0,0,1,38.15974,8.883146,.6931472,,0 +8,1,50,0,1,128650,0,7208.437,56.95825,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,90,13.73189,0,,607,607,0,0,.6931472,6.408529,0,3.931826,7.101676,1,0,0,67.03755,8.883146,.6931472,,0 +8,1,50,0,2,128650,0,7208.437,57.95825,0,12,1,59.88024,20.0871,30.83832,0,0,110.8057,0,0,0,9,1,2,90,13.73189,0,,607,607,0,0,.6931472,6.408529,0,3.931826,7.101676,1,0,0,67.03755,8.883146,.6931472,4.707778,1 +8,1,50,0,3,128650,0,7208.437,58.95825,0,12,1,54.50941,19.57384,0,0,0,74.08325,0,0,0,11,0,2,90,13.73189,0,,607,607,0,0,.6931472,6.408529,0,3.931826,7.101676,1,0,0,67.03755,8.883146,.6931472,4.30519,1 +10,1,50,1,1,128652,0,10080.02,58.64476,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,93.7,4.3,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,76.83472,9.21841,.6931472,,0 +10,1,50,1,2,128652,0,10080.02,59.64476,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,93.7,4.3,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,76.83472,9.21841,.6931472,,0 +10,1,50,1,3,128652,0,10080.02,60.64476,0,12,1,8.424182,0,33.66204,0,0,42.08622,0,0,0,0,1,2,93.7,4.3,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,76.83472,9.21841,.6931472,3.73972,1 +10,1,50,1,4,128652,0,10080.02,61.64476,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,93.7,4.3,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,76.83472,9.21841,.6931472,,0 +10,1,50,1,5,128652,0,10080.02,62.64476,0,12,1,7.57257,0,35.27556,0,0,42.84813,0,0,0,0,1,2,93.7,4.3,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,76.83472,9.21841,.6931472,3.757662,1 +10,1,50,1,1,128653,0,10080.02,56.42437,1,12,1,12.49256,0,44.13445,0,0,56.62701,0,0,0,2,0,2,86.3,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,78.46137,9.21841,.6931472,4.036486,1 +10,1,50,1,2,128653,0,10080.02,57.42437,1,12,1,17.41971,6.472509,0,0,0,23.89222,0,0,0,3,0,2,86.3,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,78.46137,9.21841,.6931472,3.173553,1 +10,1,50,1,3,128653,0,10080.02,58.42437,1,12,1,20.31715,4.68781,45.56491,0,0,70.56987,0,0,0,1,2,2,86.3,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,78.46137,9.21841,.6931472,4.256603,1 +10,1,50,1,4,128653,0,10080.02,59.42437,1,12,1,7.801744,4.520422,0,0,0,12.32217,0,0,0,1,0,2,86.3,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,78.46137,9.21841,.6931472,2.5114,1 +10,1,50,1,5,128653,0,10080.02,60.42437,1,12,1,63.10476,0,38.68742,0,0,101.7922,0,0,0,1,0,2,86.3,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,78.46137,9.21841,.6931472,4.622933,1 +10,1,50,1,1,128660,0,5170.596,57.07324,1,8,1,9.518144,15.52647,0,0,0,25.04462,0,0,0,2,0,1,81.1,17.4,0,,666,666,0,0,0,6.50129,0,3.931826,7.194437,1,0,0,69.13512,8.550937,0,3.220659,1 +10,1,50,1,2,128660,0,5170.596,58.07324,1,8,1,20.6859,28.64453,0,0,0,49.33043,0,0,0,3,0,1,81.1,17.4,0,,666,666,0,0,0,6.50129,0,3.931826,7.194437,1,0,0,69.13512,8.550937,0,3.898541,1 +10,1,50,1,3,128660,0,5170.596,59.07324,1,8,1,22.29931,21.556,0,0,0,43.8553,0,0,0,2,1,1,81.1,17.4,0,,666,666,0,0,0,6.50129,0,3.931826,7.194437,1,0,0,69.13512,8.550937,0,3.780896,1 +6,1,25,1,1,128665,0,7717.122,3.863107,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,76.57796,8.951326,1.386294,,0 +6,1,25,1,2,128665,0,7717.122,4.863108,0,16,1,10.40526,0,0,0,0,10.40526,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,76.57796,8.951326,1.386294,2.342311,1 +6,1,25,1,3,128665,0,7717.122,5.863108,0,16,1,11.47132,0,0,0,0,11.47132,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,76.57796,8.951326,1.386294,2.43985,1 +6,1,25,1,4,128665,0,7717.122,6.863108,0,16,1,5.532504,0,0,0,0,5.532504,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,76.57796,8.951326,1.386294,1.71064,1 +6,1,25,1,5,128665,0,7717.122,7.863108,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,76.57796,8.951326,1.386294,,0 +6,1,25,1,1,128666,0,7717.122,32.76112,0,18,1,0,0,0,0,0,0,0,0,0,0,0,4,84.2,13,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,72.46915,8.951326,1.386294,,0 +6,1,25,1,2,128666,0,7717.122,33.76112,0,18,1,36.4184,0,0,0,0,36.4184,0,0,0,1,0,4,84.2,13,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,72.46915,8.951326,1.386294,3.595074,1 +6,1,25,1,3,128666,0,7717.122,34.76112,0,18,1,0,0,0,0,0,0,0,0,0,0,0,4,84.2,13,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,72.46915,8.951326,1.386294,,0 +6,1,25,1,4,128666,0,7717.122,35.76112,0,18,1,0,0,0,0,0,0,0,0,0,0,0,4,84.2,13,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,72.46915,8.951326,1.386294,,0 +6,1,25,1,5,128666,0,7717.122,36.76112,0,18,1,0,0,0,0,0,0,0,0,0,0,0,4,84.2,13,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,72.46915,8.951326,1.386294,,0 +6,1,25,1,1,128667,0,7717.122,31.86311,1,16,1,5.995204,4.256595,0,0,0,10.2518,0,0,0,1,0,4,85.3,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,73.37328,8.951326,1.386294,2.327453,1 +6,1,25,1,2,128667,0,7717.122,32.86311,1,16,1,9.58379,0,0,0,0,9.58379,0,0,0,1,0,4,85.3,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,73.37328,8.951326,1.386294,2.260073,1 +6,1,25,1,3,128667,0,7717.122,33.86311,1,16,1,38.65337,0,0,0,0,38.65337,0,0,0,2,0,4,85.3,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,73.37328,8.951326,1.386294,3.654634,1 +6,1,25,1,4,128667,0,7717.122,34.86311,1,16,1,9.22084,0,0,0,0,9.22084,0,0,0,1,0,4,85.3,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,73.37328,8.951326,1.386294,2.221466,1 +6,1,25,1,5,128667,0,7717.122,35.86311,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,85.3,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,73.37328,8.951326,1.386294,,0 +2,1,100,1,1,128670,0,14238.83,32.47091,0,17,1,11.3028,2.968471,21.13623,0,0,35.4075,0,0,0,1,1,2,83.2,8.7,0,,949,949,0,0,.6931472,6.855409,1,0,0,0,0,0,76.08279,9.563799,.6931472,3.566924,1 +2,1,100,1,2,128670,0,14238.83,33.47091,0,17,1,0,5.225912,0,0,0,5.225912,0,0,0,0,0,2,83.2,8.7,0,,949,949,0,0,.6931472,6.855409,1,0,0,0,0,0,76.08279,9.563799,.6931472,1.653629,1 +2,1,100,1,3,128670,0,14238.83,34.47091,0,17,1,0,0,0,0,0,0,0,0,0,0,0,2,83.2,8.7,0,,949,949,0,0,.6931472,6.855409,1,0,0,0,0,0,76.08279,9.563799,.6931472,,0 +2,1,100,1,1,128671,0,14238.83,28.13963,1,12,1,105.8894,84.21178,0,0,0,190.1011,0,0,0,13,0,2,80,30.4,0,,949,949,0,0,.6931472,6.855409,1,0,0,0,0,0,76.55543,9.563799,.6931472,5.247556,1 +2,1,100,1,2,128671,0,14238.83,29.13963,1,12,1,144.2569,68.38868,27.3816,0,0,240.0272,0,0,0,8,0,2,80,30.4,0,,949,949,0,0,.6931472,6.855409,1,0,0,0,0,0,76.55543,9.563799,.6931472,5.480752,1 +2,1,100,1,3,128671,0,14238.83,30.13963,1,12,1,129.9554,83.04757,9.737364,0,0,222.7403,0,0,0,11,0,2,80,30.4,0,,949,949,0,0,.6931472,6.855409,1,0,0,0,0,0,76.55543,9.563799,.6931472,5.406007,1 +3,1,100,1,1,128686,0,16350.5,53.42094,0,12,1,14.8721,4.312909,0,0,0,19.18501,0,0,0,1,0,2,64.2,21.7,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,64.33474,9.702075,.6931472,2.954129,1 +3,1,100,1,2,128686,0,16350.5,54.42094,0,12,1,61.78552,6.303756,0,0,0,68.08928,0,0,0,4,0,2,64.2,21.7,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,64.33474,9.702075,.6931472,4.22082,1 +3,1,100,1,3,128686,0,16350.5,55.42094,0,12,1,4.459861,0,0,0,0,4.459861,0,0,0,1,0,2,64.2,21.7,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,64.33474,9.702075,.6931472,1.495118,1 +3,1,100,1,4,128686,0,16350.5,56.42094,0,12,1,69.29784,13.24461,0,0,0,82.54245,0,0,0,2,0,2,64.2,21.7,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,64.33474,9.702075,.6931472,4.413313,1 +3,1,100,1,5,128686,0,16350.5,57.42094,0,12,1,31.13168,4.106016,0,0,0,35.23769,0,0,0,3,1,2,64.2,21.7,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,64.33474,9.702075,.6931472,3.562116,1 +3,1,100,1,1,128687,0,16350.5,51.39767,1,13,1,73.17073,95.03271,0,0,0,168.2034,0,0,0,5,0,2,51.6,30.4,1,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,1,0,55.8782,9.702075,.6931472,5.125174,1 +3,1,100,1,2,128687,0,16350.5,52.39767,1,13,1,20.6859,57.24551,31.30103,0,0,109.2324,0,0,0,2,0,2,51.6,30.4,1,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,1,0,55.8782,9.702075,.6931472,4.693478,1 +3,1,100,1,3,128687,0,16350.5,53.39767,1,13,1,36.17443,35.51041,0,0,0,71.68484,0,0,0,3,0,2,51.6,30.4,1,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,1,0,55.8782,9.702075,.6931472,4.272279,1 +3,1,100,1,4,128687,0,16350.5,54.39767,1,13,1,109.9862,111.8862,0,0,3041.831,3263.704,1,0,0,13,1,2,51.6,30.4,1,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,1,0,55.8782,9.702075,.6931472,8.090618,1 +3,1,100,1,5,128687,0,16350.5,55.39767,1,13,1,201.9352,116.3147,0,86.66386,5679.966,5998.216,3,0,5,6,0,2,51.6,30.4,1,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,1,0,55.8782,9.702075,.6931472,8.699218,1 +8,1,50,0,1,128705,0,11037.84,11.20055,0,12,1,5.94884,0,0,0,0,5.94884,0,0,0,1,0,4,74.36826,13.73189,0,,690,690,1,0,1.386294,6.536692,0,3.931826,7.229839,0,0,0,86.56511,9.309175,1.386294,1.783196,1 +8,1,50,0,2,128705,0,11037.84,12.20055,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,690,690,1,0,1.386294,6.536692,0,3.931826,7.229839,0,0,0,86.56511,9.309175,1.386294,,0 +8,1,50,0,3,128705,0,11037.84,13.20055,0,12,1,5.946482,2.948464,0,0,0,8.894945,0,0,0,1,0,4,74.36826,13.73189,0,,690,690,1,0,1.386294,6.536692,0,3.931826,7.229839,0,0,0,86.56511,9.309175,1.386294,2.185483,1 +8,1,50,0,1,128706,0,11037.84,13.28679,0,12,1,20.22606,3.271862,27.97739,0,0,51.47531,0,0,0,2,0,4,74.36826,13.73189,0,,690,690,1,0,1.386294,6.536692,0,3.931826,7.229839,0,0,0,86.56511,9.309175,1.386294,3.941102,1 +8,1,50,0,2,128706,0,11037.84,14.28679,0,12,1,10.88732,2.504083,0,0,0,13.3914,0,0,0,2,0,4,74.36826,13.73189,0,,690,690,1,0,1.386294,6.536692,0,3.931826,7.229839,0,0,0,86.56511,9.309175,1.386294,2.594613,1 +8,1,50,0,3,128706,0,11037.84,15.28679,0,12,1,26.75917,1.783944,22.29931,0,0,50.84242,0,0,0,3,0,4,74.36826,13.73189,0,,690,690,1,0,1.386294,6.536692,0,3.931826,7.229839,0,0,0,86.56511,9.309175,1.386294,3.928731,1 +8,1,50,0,1,128708,0,11037.84,36.48186,1,12,1,125.5205,122.9209,0,0,0,248.4414,0,0,0,9,0,4,57.5,13.73189,1,,690,690,0,0,1.386294,6.536692,0,3.931826,7.229839,1,0,0,69.93219,9.309175,1.386294,5.515207,1 +8,1,50,0,2,128708,0,11037.84,37.48186,1,12,1,75.12248,135.89,0,0,0,211.0125,0,0,0,7,0,4,57.5,13.73189,1,,690,690,0,0,1.386294,6.536692,0,3.931826,7.229839,1,0,0,69.93219,9.309175,1.386294,5.351917,1 +8,1,50,0,3,128708,0,11037.84,38.48186,1,12,1,74.33102,123.2656,0,0,0,197.5966,0,0,0,5,0,4,57.5,13.73189,1,,690,690,0,0,1.386294,6.536692,0,3.931826,7.229839,1,0,0,69.93219,9.309175,1.386294,5.286228,1 +8,1,50,0,1,128709,0,11037.84,12.20534,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,690,690,1,1,1.386294,6.536692,0,3.931826,7.229839,0,0,0,86.05113,9.309175,1.386294,,0 +8,1,50,0,2,128709,0,11037.84,13.20534,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,690,690,1,1,1.386294,6.536692,0,3.931826,7.229839,0,0,0,86.05113,9.309175,1.386294,,0 +8,1,50,0,3,128709,0,11037.84,14.20534,1,12,1,3.468781,2.452924,0,0,0,5.921705,0,0,0,1,0,4,74.36826,13.73189,0,,690,690,1,1,1.386294,6.536692,0,3.931826,7.229839,0,0,0,86.05113,9.309175,1.386294,1.778624,1 +10,1,50,0,1,128723,0,7967.122,37.25667,1,12,1,63.95003,4.134444,0,0,0,68.08447,0,0,0,2,0,5,81.3,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,71.8062,8.983204,1.609438,4.220749,1 +10,1,50,0,2,128723,0,7967.122,38.25667,1,12,1,12.52041,0,0,0,0,12.52041,0,0,0,1,0,5,81.3,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,71.8062,8.983204,1.609438,2.52736,1 +10,1,50,0,3,128723,0,7967.122,39.25667,1,12,1,48.56293,0,27.25471,0,0,75.81764,0,0,0,4,0,5,81.3,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,71.8062,8.983204,1.609438,4.328331,1 +10,1,50,0,1,128724,0,7967.122,41.35524,0,18,1,62.46282,6.216538,30.93397,0,0,99.61333,0,0,0,3,0,5,77.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,72.91832,8.983204,1.609438,4.601296,1 +10,1,50,0,2,128724,0,7967.122,42.35524,0,18,1,88.73163,5.715841,29.94012,0,0,124.3876,0,0,0,2,10,5,77.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,72.91832,8.983204,1.609438,4.823402,1 +10,1,50,0,3,128724,0,7967.122,43.35524,0,18,1,274.777,2.973241,38.65213,0,0,316.4024,0,0,0,6,14,5,77.5,13.73189,0,,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,72.91832,8.983204,1.609438,5.757015,1 +10,1,50,0,1,128725,0,7967.122,9.141684,1,12,1,72.57585,.892326,0,0,0,73.46817,0,0,0,2,1,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,82.71185,8.983204,1.609438,4.296852,1 +10,1,50,0,2,128725,0,7967.122,10.14168,1,12,1,1.633097,0,0,0,0,1.633097,0,0,0,1,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,82.71185,8.983204,1.609438,.4904785,1 +10,1,50,0,3,128725,0,7967.122,11.14168,1,12,1,20.81269,4.905848,0,0,0,25.71853,0,0,0,2,0,5,74.36826,13.73189,0,,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,82.71185,8.983204,1.609438,3.247212,1 +10,1,50,0,1,128726,0,7967.122,11.54552,0,12,1,34.50327,9.351577,0,0,0,43.85485,0,0,0,3,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,78.24947,8.983204,1.609438,3.780885,1 +10,1,50,0,2,128726,0,7967.122,12.54552,0,12,1,23.40773,0,0,0,0,23.40773,0,0,0,2,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,78.24947,8.983204,1.609438,3.153066,1 +10,1,50,0,3,128726,0,7967.122,13.54552,0,12,1,62.68583,1.73439,29.23687,0,0,93.65709,0,0,0,3,1,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,78.24947,8.983204,1.609438,4.53964,1 +10,1,50,0,1,128727,0,7967.122,6.004107,0,12,1,42.23676,10.79714,24.24747,0,0,77.28138,0,0,0,5,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,76.31956,8.983204,1.609438,4.347453,1 +10,1,50,0,2,128727,0,7967.122,7.004107,0,12,1,81.65487,2.150245,22.59118,0,350.92,457.3163,1,0,0,8,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,76.31956,8.983204,1.609438,6.125375,1 +10,1,50,0,3,128727,0,7967.122,8.004107,0,12,1,24.77701,6.119921,7.680872,0,0,38.5778,0,0,0,3,0,5,74.36826,13.73189,0,,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,76.31956,8.983204,1.609438,3.652677,1 +9,1,50,1,1,128757,0,11526.05,15.73443,0,12,1,23.53118,0,31.95444,0,0,55.48561,0,0,0,2,0,5,94.4,0,0,,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,80.43655,9.352452,1.609438,4.016124,1 +9,1,50,1,2,128757,0,11526.05,16.73443,0,12,1,20.81051,12.51369,0,0,0,33.32421,0,0,0,3,0,6,94.4,0,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,80.43655,9.352452,1.791759,3.506284,1 +9,1,50,1,3,128757,0,11526.05,17.73443,0,12,1,205.8105,2.917706,27.62593,0,0,236.3541,0,0,0,4,0,6,94.4,0,0,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,80.43655,9.352452,1.791759,5.465331,1 +9,1,50,1,4,128757,0,11526.05,18.73443,0,12,1,11.52605,0,12.44813,0,0,23.97418,0,0,0,0,1,6,94.4,0,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,80.43655,9.352452,1.791759,3.176977,1 +9,1,50,1,5,128757,0,11526.05,19.73443,0,12,1,7.617435,2.877698,0,0,0,10.49513,0,0,0,1,0,6,94.4,0,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,80.43655,9.352452,1.791759,2.350912,1 +9,1,50,1,1,128758,0,11526.05,17.26763,0,12,1,25.77938,0,31.95444,0,0,57.73381,0,0,0,2,0,5,66.3,8.7,0,,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,80.43655,9.352452,1.609438,4.055843,1 +9,1,50,1,2,128758,0,11526.05,18.26763,0,12,1,6.845564,0,0,0,0,6.845564,0,0,0,1,0,6,66.3,8.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,80.43655,9.352452,1.791759,1.923601,1 +9,1,50,1,3,128758,0,11526.05,19.26763,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,66.3,8.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,80.43655,9.352452,1.791759,,0 +9,1,50,1,4,128758,0,11526.05,20.26763,0,12,1,24.89627,.9220839,0,0,0,25.81835,0,0,0,1,0,6,66.3,8.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,80.43655,9.352452,1.791759,3.251086,1 +9,1,50,1,5,128758,0,11526.05,21.26763,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,66.3,8.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,80.43655,9.352452,1.791759,,0 +9,1,50,1,1,128759,0,11526.05,37.77139,1,12,1,11.99041,4.376499,27.56595,0,961.0971,1005.03,1,0,0,1,0,5,80,8.7,0,,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,78.54103,9.352452,1.609438,6.912773,1 +9,1,50,1,2,128759,0,11526.05,38.77139,1,12,1,10.9529,0,0,0,0,10.9529,0,0,0,1,0,6,80,8.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,78.54103,9.352452,1.791759,2.393605,1 +9,1,50,1,3,128759,0,11526.05,39.77139,1,12,1,18.70324,0,0,0,0,18.70324,0,0,0,2,0,6,80,8.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,78.54103,9.352452,1.791759,2.928697,1 +9,1,50,1,4,128759,0,11526.05,40.77139,1,12,1,7.837713,0,0,0,0,7.837713,0,0,0,0,0,6,80,8.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,78.54103,9.352452,1.791759,2.058947,1 +9,1,50,1,5,128759,0,11526.05,41.77139,1,12,1,194.2023,11.91282,35.01904,0,0,241.1342,0,0,0,4,9,6,80,8.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,78.54103,9.352452,1.791759,5.485353,1 +9,1,50,1,1,128760,0,11526.05,14.78713,1,12,1,35.3717,7.284173,0,0,0,42.65588,0,0,0,1,0,5,73.3,8.7,0,,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,75.09985,9.352452,1.609438,3.753165,1 +9,1,50,1,2,128760,0,11526.05,15.78713,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,73.3,8.7,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,75.09985,9.352452,1.791759,,0 +9,1,50,1,3,128760,0,11526.05,16.78713,1,12,1,38.52868,1.745636,0,0,0,40.27431,0,0,0,2,0,6,73.3,8.7,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,75.09985,9.352452,1.791759,3.695714,1 +9,1,50,1,4,128760,0,11526.05,17.78713,1,12,1,42.41586,33.3656,.9220839,0,431.3278,508.0313,1,0,0,4,0,6,73.3,8.7,0,,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,75.09985,9.352452,1.791759,6.230543,1 +9,1,50,1,5,128760,0,11526.05,18.78713,1,12,1,0,1.967837,0,0,0,1.967837,0,0,0,0,0,6,73.3,8.7,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,75.09985,9.352452,1.791759,.6769352,1 +9,1,50,1,1,128761,0,11526.05,36.88706,0,18,1,57.85372,8.033573,38.21943,0,0,104.1067,0,0,0,3,0,5,71.6,0,0,,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,79.00905,9.352452,1.609438,4.645416,1 +9,1,50,1,2,128761,0,11526.05,37.88706,0,18,1,41.07338,7.420591,0,0,0,48.49398,0,0,0,0,3,6,71.6,0,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,79.00905,9.352452,1.791759,3.88144,1 +9,1,50,1,3,128761,0,11526.05,38.88706,0,18,1,47.38155,0,0,0,257.6559,305.0374,1,0,0,2,0,6,71.6,0,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,79.00905,9.352452,1.791759,5.720435,1 +9,1,50,1,4,128761,0,11526.05,39.88706,0,18,1,0,0,0,0,0,0,0,0,0,0,0,6,71.6,0,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,79.00905,9.352452,1.791759,,0 +9,1,50,1,5,128761,0,11526.05,40.88706,0,18,1,13.11892,0,27.74016,0,0,40.85908,0,0,0,1,0,6,71.6,0,0,,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,79.00905,9.352452,1.791759,3.710129,1 +2,1,100,1,1,128767,0,9549.008,32.92539,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80,13,0,,900,900,0,0,1.386294,6.802395,1,0,0,0,0,0,77.67306,9.164297,1.386294,,0 +2,1,100,1,2,128767,0,9549.008,33.92539,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80,13,0,,900,900,0,0,1.386294,6.802395,1,0,0,0,0,0,77.67306,9.164297,1.386294,,0 +2,1,100,1,3,128767,0,9549.008,34.92539,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80,13,0,,900,900,0,0,1.386294,6.802395,1,0,0,0,0,0,77.67306,9.164297,1.386294,,0 +2,1,100,1,1,128768,0,9549.008,29.96852,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,84.2,13,0,,900,900,0,0,1.386294,6.802395,1,0,0,0,0,0,79.50489,9.164297,1.386294,,0 +2,1,100,1,2,128768,0,9549.008,30.96852,1,12,1,24.49646,0,0,0,0,24.49646,0,0,0,1,0,4,84.2,13,0,,900,900,0,0,1.386294,6.802395,1,0,0,0,0,0,79.50489,9.164297,1.386294,3.198529,1 +2,1,100,1,3,128768,0,9549.008,31.96852,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,84.2,13,0,,900,900,0,0,1.386294,6.802395,1,0,0,0,0,0,79.50489,9.164297,1.386294,,0 +2,1,100,1,1,128769,0,9549.008,9.245722,0,12,1,35.69304,6.71624,0,0,0,42.40928,0,0,0,3,0,4,74.36826,13.73189,0,,900,900,1,0,1.386294,6.802395,1,0,0,0,0,0,85.34759,9.164297,1.386294,3.747367,1 +2,1,100,1,2,128769,0,9549.008,10.24572,0,12,1,4.899292,1.061513,0,0,0,5.960806,0,0,0,1,0,4,74.36826,13.73189,0,,900,900,1,0,1.386294,6.802395,1,0,0,0,0,0,85.34759,9.164297,1.386294,1.785206,1 +2,1,100,1,3,128769,0,9549.008,11.24572,0,12,1,7.433102,4.658077,0,0,0,12.09118,0,0,0,1,0,4,74.36826,13.73189,0,,900,900,1,0,1.386294,6.802395,1,0,0,0,0,0,85.34759,9.164297,1.386294,2.492476,1 +2,1,100,1,1,128770,0,9549.008,12.4052,1,12,1,16.65675,.9518144,0,0,0,17.60857,0,0,0,1,0,4,74.36826,13.73189,0,,900,900,1,1,1.386294,6.802395,1,0,0,0,0,0,84.83361,9.164297,1.386294,2.868386,1 +2,1,100,1,2,128770,0,9549.008,13.4052,1,12,1,6.53239,0,0,0,0,6.53239,0,0,0,1,0,4,74.36826,13.73189,0,,900,900,1,1,1.386294,6.802395,1,0,0,0,0,0,84.83361,9.164297,1.386294,1.876773,1 +2,1,100,1,3,128770,0,9549.008,14.4052,1,12,1,22.29931,0,0,0,0,22.29931,0,0,0,1,0,4,74.36826,13.73189,0,,900,900,1,1,1.386294,6.802395,1,0,0,0,0,0,84.83361,9.164297,1.386294,3.104556,1 +6,1,25,1,1,128771,0,17027.92,30.54346,0,17,1,35.09816,0,34.19393,0,0,69.29209,0,0,0,2,0,3,90.5,8.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,79.23241,9.742668,1.098612,4.238331,1 +6,1,25,1,2,128771,0,17027.92,31.54346,0,17,1,6.53239,4.654328,0,0,0,11.18672,0,0,0,1,0,4,90.5,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.23241,9.742668,1.386294,2.414727,1 +6,1,25,1,3,128771,0,17027.92,32.54346,0,17,1,19.32607,8.414271,28.99901,0,0,56.73935,0,0,0,2,0,4,90.5,8.7,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.23241,9.742668,1.386294,4.038468,1 +6,1,25,1,1,128772,0,17027.92,3.126626,1,15,1,42.23676,34.17609,0,0,0,76.41285,0,0,0,5,0,3,74.36826,13.73189,0,,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,81.77524,9.742668,1.098612,4.336151,1 +6,1,25,1,2,128772,0,17027.92,4.126626,1,15,1,268.6445,10.96897,0,0,0,279.6135,0,0,0,22,41,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.77524,9.742668,1.386294,5.633408,1 +6,1,25,1,3,128772,0,17027.92,5.126626,1,15,1,280.9713,40.88206,0,0,0,321.8533,0,0,0,41,32,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.77524,9.742668,1.386294,5.774096,1 +6,1,25,1,1,128773,0,17027.92,28.36413,1,15,1,48.1856,19.36347,0,0,731.7133,799.2623,1,0,0,2,0,3,96.8,4.3,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,79.96555,9.742668,1.098612,6.683689,1 +6,1,25,1,2,128773,0,17027.92,29.36413,1,15,1,263.2009,17.17474,0,0,2118.759,2399.135,1,0,0,22,0,4,96.8,4.3,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.96555,9.742668,1.386294,7.782863,1 +6,1,25,1,3,128773,0,17027.92,30.36413,1,15,1,622.3984,220.7978,0,0,0,843.1962,0,0,0,65,0,4,96.8,4.3,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.96555,9.742668,1.386294,6.7372,1 +11,1,0,1,1,128808,0,9253.722,31.62218,0,17,1,0,29.71823,0,0,0,29.71823,0,0,0,0,0,3,55.8,8.7,0,,0,192,0,0,1.098612,5.257495,0,0,0,1,0,0,65.66811,9.132889,1.098612,3.391761,1 +11,1,0,1,2,128808,0,9253.722,32.62218,0,17,1,113.6364,6.544359,0,21.90581,1063.527,1183.708,1,0,1,2,0,3,55.8,8.7,0,,0,192,0,0,1.098612,5.257495,0,0,0,1,0,0,65.66811,9.132889,1.098612,7.076407,1 +11,1,0,1,3,128808,0,9253.722,33.62218,0,17,1,0,0,0,0,0,0,0,0,0,0,0,3,55.8,8.7,0,,0,192,0,0,1.098612,5.257495,0,0,0,1,0,0,65.66811,9.132889,1.098612,,0 +11,1,0,1,1,128809,0,9253.722,28.39425,1,12,1,40.76739,3.657074,0,0,0,44.42446,0,0,0,2,1,3,71.6,17.4,0,,0,192,0,0,1.098612,5.257495,0,0,0,1,0,0,71.41678,9.132889,1.098612,3.79379,1 +11,1,0,1,2,128809,0,9253.722,29.39425,1,12,1,127.5192,2.135816,0,0,950.0547,1079.71,1,0,0,3,1,3,71.6,17.4,0,,0,192,0,0,1.098612,5.257495,0,0,0,1,0,0,71.41678,9.132889,1.098612,6.984447,1 +11,1,0,1,3,128809,0,9253.722,30.39425,1,12,1,29.92519,0,0,0,0,29.92519,0,0,0,1,0,3,71.6,17.4,0,,0,192,0,0,1.098612,5.257495,0,0,0,1,0,0,71.41678,9.132889,1.098612,3.3987,1 +11,1,0,1,1,128810,0,9253.722,4.202601,1,12,1,44.96403,3.597122,0,0,0,48.56115,0,0,0,4,0,3,74.36826,13.73189,0,,0,192,1,1,1.098612,5.257495,0,0,0,0,0,0,79.40221,9.132889,1.098612,3.882824,1 +11,1,0,1,2,128810,0,9253.722,5.202601,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,0,192,1,1,1.098612,5.257495,0,0,0,0,0,0,79.40221,9.132889,1.098612,,0 +11,1,0,1,3,128810,0,9253.722,6.202601,1,12,1,18.95262,3.990025,0,0,0,22.94264,0,0,0,3,0,3,74.36826,13.73189,0,,0,192,1,1,1.098612,5.257495,0,0,0,0,0,0,79.40221,9.132889,1.098612,3.132997,1 +11,1,0,1,1,128812,0,13159.43,13.07598,1,12,1,20.98321,3.357314,24.43645,0,0,48.77698,0,0,0,1,1,4,74.36826,13.73189,0,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,83.29486,9.48497,1.386294,3.887259,1 +11,1,0,1,2,128812,0,13159.43,14.07598,1,12,1,33.40635,8.871851,0,0,0,42.2782,0,0,0,2,0,4,74.36826,13.73189,0,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,83.29486,9.48497,1.386294,3.744272,1 +11,1,0,1,3,128812,0,13159.43,15.07598,1,12,1,12.46883,12.06983,23.69077,0,0,48.22943,0,0,0,1,0,4,74.36826,13.73189,0,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,83.29486,9.48497,1.386294,3.875969,1 +11,1,0,1,4,128812,0,13159.43,16.07598,1,12,1,46.10419,7.100046,0,0,0,53.20424,0,0,0,4,0,4,74.36826,13.73189,0,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,83.29486,9.48497,1.386294,3.974138,1 +11,1,0,1,5,128812,0,13159.43,17.07598,1,12,1,21.37114,6.157427,26.23783,0,0,53.7664,0,0,0,2,0,4,74.36826,13.73189,0,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,83.29486,9.48497,1.386294,3.984649,1 +11,1,0,1,1,128813,0,13159.43,9.453798,0,12,1,178.0576,62.73981,23.4952,0,534.982,799.2746,1,0,0,34,0,4,74.36826,13.73189,0,,0,60,1,0,1.386294,4.094345,0,0,0,1,0,0,74.60253,9.48497,1.386294,6.683704,1 +11,1,0,1,2,128813,0,13159.43,10.4538,0,12,1,94.74261,19.27711,14.23877,0,0,128.2585,0,0,0,22,0,4,74.36826,13.73189,0,,0,60,1,0,1.386294,4.094345,0,0,0,1,0,0,74.60253,9.48497,1.386294,4.854048,1 +11,1,0,1,3,128813,0,13159.43,11.4538,0,12,1,157.8554,16.68329,14.46384,0,0,189.0025,0,0,0,31,0,4,74.36826,13.73189,0,,0,60,1,0,1.386294,4.094345,0,0,0,1,0,0,74.60253,9.48497,1.386294,5.24176,1 +11,1,0,1,4,128813,0,13159.43,12.4538,0,12,1,59.47441,5.532504,32.9645,0,0,97.97141,0,0,0,4,0,4,74.36826,13.73189,0,,0,60,1,0,1.386294,4.094345,0,0,0,1,0,0,74.60253,9.48497,1.386294,4.584676,1 +11,1,0,1,5,128813,0,13159.43,13.4538,0,12,1,116.1659,9.331359,24.65087,0,0,150.1481,0,0,0,7,0,4,74.36826,13.73189,0,,0,60,1,0,1.386294,4.094345,0,0,0,1,0,0,74.60253,9.48497,1.386294,5.011622,1 +11,1,0,1,1,128814,0,13159.43,37.65366,1,12,1,32.67386,216.0791,0,119.9041,0,248.753,0,0,5,2,0,4,36.8,17.4,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.39919,9.48497,1.386294,5.51646,1 +11,1,0,1,2,128814,0,13159.43,38.65366,1,12,1,48.19277,181.4841,30.66813,150.6024,0,260.345,0,0,6,4,0,4,36.8,17.4,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.39919,9.48497,1.386294,5.562008,1 +11,1,0,1,3,128814,0,13159.43,39.65366,1,12,1,48.37905,227.1571,38.65337,256.8578,0,314.1895,0,0,12,2,0,4,36.8,17.4,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.39919,9.48497,1.386294,5.749996,1 +11,1,0,1,4,128814,0,13159.43,40.65366,1,12,1,107.8838,207.2845,0,228.2158,2219.751,2534.919,1,0,10,10,0,4,36.8,17.4,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.39919,9.48497,1.386294,7.837917,1 +11,1,0,1,5,128814,0,13159.43,41.65366,1,12,1,178.375,130.1523,29.83496,152.3487,0,338.3622,0,0,6,12,0,4,36.8,17.4,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.39919,9.48497,1.386294,5.824117,1 +11,1,0,1,1,128815,0,13159.43,40.26831,0,16,1,189.7482,37.33213,31.17506,0,0,258.2554,0,0,0,28,0,4,66.3,13,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.36005,9.48497,1.386294,5.553949,1 +11,1,0,1,2,128815,0,13159.43,41.26831,0,16,1,47.64513,26.58817,18.07229,54.76451,0,92.30559,0,0,2,9,0,4,66.3,13,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.36005,9.48497,1.386294,4.525105,1 +11,1,0,1,3,128815,0,13159.43,42.26831,0,16,1,14.96259,7.306733,34.16459,296.7581,0,56.43391,0,0,13,1,0,4,66.3,13,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.36005,9.48497,1.386294,4.03307,1 +11,1,0,1,4,128815,0,13159.43,43.26831,0,16,1,65.00691,16.41309,23.0521,0,0,104.4721,0,0,0,9,0,4,66.3,13,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.36005,9.48497,1.386294,4.64892,1 +11,1,0,1,5,128815,0,13159.43,44.26831,0,16,1,139.5472,27.06306,45.28142,0,0,211.8917,0,0,0,24,0,4,66.3,13,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,73.36005,9.48497,1.386294,5.356075,1 +11,1,0,1,1,128840,0,4372.829,58.75154,1,16,1,46.76259,107.7998,0,0,0,154.5623,0,0,0,6,0,1,68.4,17.4,0,,0,258,0,0,0,5.552959,0,0,0,1,0,0,66.1049,8.383394,0,5.040597,1 +11,1,0,1,2,128840,0,4372.829,59.75154,1,16,1,36.14458,49.2333,52.65608,0,0,138.034,0,0,0,5,0,1,68.4,17.4,0,,0,258,0,0,0,5.552959,0,0,0,1,0,0,66.1049,8.383394,0,4.9275,1 +11,1,0,1,3,128840,0,4372.829,60.75154,1,16,1,68.82793,63.85536,0,0,0,132.6833,0,0,0,6,0,1,68.4,17.4,0,,0,258,0,0,0,5.552959,0,0,0,1,0,0,66.1049,8.383394,0,4.887965,1 +11,1,0,1,4,128840,0,4372.829,61.75154,1,16,1,95.43568,64.47672,0,0,0,159.9124,0,0,0,11,0,1,68.4,17.4,0,,0,258,0,0,0,5.552959,0,0,0,1,0,0,66.1049,8.383394,0,5.074626,1 +11,1,0,1,5,128840,0,4372.829,62.75154,1,16,1,477.8671,66.08125,4.159966,0,0,548.1083,0,0,0,10,0,1,68.4,17.4,0,,0,258,0,0,0,5.552959,0,0,0,1,0,0,66.1049,8.383394,0,6.306473,1 +11,1,0,0,1,128865,0,15260.55,36.5421,1,17,1,38.57479,40.97173,0,0,0,79.54652,0,0,0,4,0,4,57.9,13,0,,0,84,0,0,1.386294,4.430817,0,0,0,0,0,0,79.29243,9.633092,1.386294,4.376342,1 +11,1,0,0,2,128865,0,15260.55,37.5421,1,17,1,63.34232,40.48518,26.95418,0,0,130.7817,0,0,0,4,0,4,57.9,13,0,,0,84,0,0,1.386294,4.430817,0,0,0,0,0,0,79.29243,9.633092,1.386294,4.873529,1 +11,1,0,0,3,128865,0,15260.55,38.5421,1,17,1,244.5946,27.64128,12.77641,0,0,285.0123,0,0,0,5,0,4,57.9,13,0,,0,84,0,0,1.386294,4.430817,0,0,0,0,0,0,79.29243,9.633092,1.386294,5.652532,1 +11,1,0,0,4,128865,0,15260.55,39.5421,1,17,1,34.41203,18.79216,26.89152,0,0,80.09572,0,0,0,4,0,4,57.9,13,0,,0,84,0,0,1.386294,4.430817,0,0,0,0,0,0,79.29243,9.633092,1.386294,4.383223,1 +11,1,0,0,5,128865,0,15260.55,40.5421,1,17,1,142.9762,77.84493,0,0,0,220.8212,0,0,0,10,0,4,57.9,13,0,,0,84,0,0,1.386294,4.430817,0,0,0,0,0,0,79.29243,9.633092,1.386294,5.397353,1 +11,1,0,0,1,128866,0,15260.55,14.86379,0,17,1,135.8952,65.41814,30.62426,0,0,231.9376,0,0,0,16,0,4,49.5,13,0,,0,84,1,0,1.386294,4.430817,0,0,0,0,0,0,72.45129,9.633092,1.386294,5.446468,1 +11,1,0,0,2,128866,0,15260.55,15.86379,0,17,1,38.81401,54.28571,0,0,0,93.09973,0,0,0,8,0,4,49.5,13,0,,0,84,1,0,1.386294,4.430817,0,0,0,0,0,0,72.45129,9.633092,1.386294,4.533671,1 +11,1,0,0,3,128866,0,15260.55,16.86379,0,17,1,30.95823,73.34152,0,0,0,104.2998,0,0,0,7,0,4,49.5,13,0,,0,84,1,0,1.386294,4.430817,0,0,0,0,0,0,72.45129,9.633092,1.386294,4.647269,1 +11,1,0,0,4,128866,0,15260.55,17.86379,0,17,1,26.89152,36.98724,0,0,0,63.87876,0,0,0,5,0,4,49.5,13,0,,0,84,1,0,1.386294,4.430817,0,0,0,0,0,0,72.45129,9.633092,1.386294,4.156987,1 +11,1,0,0,5,128866,0,15260.55,18.86379,0,17,1,81.86327,33.38891,12.50521,0,0,127.7574,0,0,0,7,1,4,49.5,13,0,,0,84,0,0,1.386294,4.430817,0,0,0,0,0,0,72.45129,9.633092,1.386294,4.850133,1 +11,1,0,0,1,128867,0,15260.55,42.35455,0,17,1,35.48292,13.82803,0,0,0,49.31096,0,0,0,4,0,4,71.6,13,0,,0,84,0,0,1.386294,4.430817,0,0,0,0,0,0,76.61908,9.633092,1.386294,3.898146,1 +11,1,0,0,2,128867,0,15260.55,43.35455,0,17,1,13.47709,0,29.11051,0,0,42.5876,0,0,0,1,0,4,71.6,13,0,,0,84,0,0,1.386294,4.430817,0,0,0,0,0,0,76.61908,9.633092,1.386294,3.751563,1 +11,1,0,0,3,128867,0,15260.55,44.35455,0,17,1,30.58968,24.00491,0,0,0,54.59459,0,0,0,4,0,4,71.6,13,0,,0,84,0,0,1.386294,4.430817,0,0,0,0,0,0,76.61908,9.633092,1.386294,3.999935,1 +11,1,0,0,4,128867,0,15260.55,45.35455,0,17,1,55.6062,31.95078,36.00729,0,0,123.5643,0,0,0,4,0,4,71.6,13,0,,0,84,0,0,1.386294,4.430817,0,0,0,0,0,0,76.61908,9.633092,1.386294,4.816761,1 +11,1,0,0,5,128867,0,15260.55,46.35455,0,17,1,87.11964,7.23218,0,0,0,94.35181,0,0,0,2,0,4,71.6,13,0,,0,84,0,0,1.386294,4.430817,0,0,0,0,0,0,76.61908,9.633092,1.386294,4.54703,1 +11,1,0,0,1,128868,0,15260.55,11.75633,1,17,1,50.05889,5.65371,31.38987,0,0,87.10247,0,0,0,4,0,4,74.36826,13.73189,0,,0,84,1,1,1.386294,4.430817,0,0,0,1,0,0,80.09667,9.633092,1.386294,4.467085,1 +11,1,0,0,2,128868,0,15260.55,12.75633,1,17,1,71.15903,83.95148,12.93801,0,0,168.0485,0,0,0,11,0,4,74.36826,13.73189,0,,0,84,1,1,1.386294,4.430817,0,0,0,1,0,0,80.09667,9.633092,1.386294,5.124253,1 +11,1,0,0,3,128868,0,15260.55,13.75633,1,17,1,88.57494,168.7568,12.77641,0,0,270.1081,0,0,0,13,0,4,74.36826,13.73189,0,,0,84,1,1,1.386294,4.430817,0,0,0,1,0,0,80.09667,9.633092,1.386294,5.598822,1 +11,1,0,0,4,128868,0,15260.55,14.75633,1,17,1,34.82224,135.8022,0,0,0,170.6244,0,0,0,6,0,4,74.36826,13.73189,0,,0,84,1,1,1.386294,4.430817,0,0,0,1,0,0,80.09667,9.633092,1.386294,5.139465,1 +11,1,0,0,5,128868,0,15260.55,15.75633,1,17,1,57.31555,188.1617,23.34306,0,0,268.8203,0,0,0,9,0,4,74.36826,13.73189,0,,0,84,1,1,1.386294,4.430817,0,0,0,1,0,0,80.09667,9.633092,1.386294,5.594043,1 +11,1,0,0,1,128869,0,18811.16,11.55647,0,12,1,57.71496,2.944641,0,0,0,60.6596,0,0,0,5,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.46126,9.842258,1.609438,4.105278,1 +11,1,0,0,2,128869,0,18811.16,12.55647,0,12,1,37.19677,2.156334,0,0,0,39.3531,0,0,0,2,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.46126,9.842258,1.609438,3.672575,1 +11,1,0,0,3,128869,0,18811.16,13.55647,0,12,1,95.15971,15.70025,0,0,0,110.8599,0,0,0,9,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.46126,9.842258,1.609438,4.708268,1 +11,1,0,0,1,128870,0,18811.16,50.33812,1,12,1,247.3498,30.50648,0,0,0,277.8563,0,0,0,5,1,5,61.3,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,71.26979,9.842258,1.609438,5.627104,1 +11,1,0,0,2,128870,0,18811.16,51.33812,1,12,1,28.57143,28.32884,52.39353,0,0,109.2938,0,0,0,2,0,5,61.3,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,71.26979,9.842258,1.609438,4.69404,1 +11,1,0,0,3,128870,0,18811.16,52.33812,1,12,1,420.4423,83.63636,28.97789,0,0,533.0565,0,0,0,12,0,5,61.3,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,71.26979,9.842258,1.609438,6.278627,1 +11,1,0,0,1,128872,0,18811.16,16.14511,0,12,1,50.64782,14.28151,0,0,0,64.92933,0,0,0,3,0,5,66.3,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,79.76973,9.842258,1.609438,4.173299,1 +11,1,0,0,2,128872,0,18811.16,17.14511,0,12,1,53.63881,8.247978,30.42048,0,0,92.30727,0,0,0,8,0,5,66.3,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,0,0,0,79.76973,9.842258,1.609438,4.525123,1 +11,1,0,0,3,128872,0,18811.16,18.14511,0,12,1,66.09337,38.13268,12.32432,0,0,116.5504,0,0,0,18,0,5,66.3,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,79.76973,9.842258,1.609438,4.758324,1 +11,1,0,0,1,128873,0,18811.16,50.37098,0,16,1,14.7232,0,22.15548,0,0,36.87868,0,0,0,1,0,5,83.8,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,76.56006,9.842258,1.609438,3.607634,1 +11,1,0,0,2,128873,0,18811.16,51.37098,0,16,1,18.86792,2.803235,0,0,0,21.67116,0,0,0,1,0,5,83.8,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,76.56006,9.842258,1.609438,3.075982,1 +11,1,0,0,3,128873,0,18811.16,52.37098,0,16,1,228.5012,4.692875,37.32678,0,0,270.5209,0,0,0,4,0,5,83.8,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,0,0,0,76.56006,9.842258,1.609438,5.600349,1 +11,1,0,0,1,128874,0,18811.16,22.14647,0,13,1,117.7856,40.10601,38.15665,0,0,196.0483,0,0,0,6,0,5,78.8,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,71.67287,9.842258,1.609438,5.278361,1 +11,1,0,0,2,128874,0,18811.16,23.14647,0,13,1,94.87871,22.37736,0,0,0,117.2561,0,0,0,5,2,5,78.8,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,71.67287,9.842258,1.609438,4.76436,1 +11,1,0,0,3,128874,0,18811.16,24.14647,0,13,1,46.68305,45.38084,30.29976,0,0,122.3636,0,0,0,6,0,5,78.8,13.73189,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,71.67287,9.842258,1.609438,4.806997,1 +9,1,50,1,1,128875,0,12632.75,18.35729,1,11,1,40.15467,1.784652,0,0,0,41.93932,0,0,0,2,0,2,76.8,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,70.05626,9.444127,.6931472,3.736224,1 +9,1,50,1,2,128875,0,12632.75,19.35729,1,11,1,13.60915,0,27.76266,0,0,41.3718,0,0,0,0,1,2,76.8,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,70.05626,9.444127,.6931472,3.7226,1 +9,1,50,1,3,128875,0,12632.75,20.35729,1,11,1,30.72349,14.81665,3.349851,0,0,48.88999,0,0,0,4,0,2,76.8,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,70.05626,9.444127,.6931472,3.889573,1 +9,1,50,1,4,128875,0,12632.75,21.35729,1,11,1,0,0,0,0,0,0,0,0,0,0,0,2,76.8,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,70.05626,9.444127,.6931472,,0 +9,1,50,1,5,128875,0,12632.75,22.35729,1,11,1,0,0,0,0,0,0,0,0,0,0,0,2,76.8,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,70.05626,9.444127,.6931472,,0 +9,1,50,1,1,128876,0,12632.75,53.1499,1,15,1,0,0,0,0,0,0,0,0,0,0,0,2,71.6,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,72.41956,9.444127,.6931472,,0 +9,1,50,1,2,128876,0,12632.75,54.1499,1,15,1,8.165487,0,20.47904,0,0,28.64453,0,0,0,0,1,2,71.6,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,72.41956,9.444127,.6931472,3.354963,1 +9,1,50,1,3,128876,0,12632.75,55.1499,1,15,1,8.424182,0,39.14767,0,0,47.57185,0,0,0,0,1,2,71.6,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,72.41956,9.444127,.6931472,3.862241,1 +9,1,50,1,4,128876,0,12632.75,56.1499,1,15,1,8.26067,0,39.46765,0,0,47.72832,0,0,0,0,1,2,71.6,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,72.41956,9.444127,.6931472,3.865525,1 +9,1,50,1,5,128876,0,12632.75,57.1499,1,15,1,13.46235,0,14.06815,0,0,27.5305,0,0,0,1,0,2,71.6,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,72.41956,9.444127,.6931472,3.315295,1 +1,1,0,1,1,128883,0,16769.85,8.788501,1,15,1,7.194244,7.20024,0,0,0,14.39448,0,0,0,1,0,5,74.36826,13.73189,0,,450,0,1,1,1.609438,0,1,0,0,0,0,0,84.27559,9.727398,1.609438,2.666845,1 +1,1,0,1,2,128883,0,16769.85,9.788501,1,15,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,450,0,1,1,1.609438,0,1,0,0,0,0,0,84.27559,9.727398,1.609438,,0 +1,1,0,1,3,128883,0,16769.85,10.7885,1,15,1,12.96758,5.63591,0,0,0,18.60349,0,0,0,2,0,5,74.36826,13.73189,0,,450,0,1,1,1.609438,0,1,0,0,0,0,0,84.27559,9.727398,1.609438,2.923349,1 +1,1,0,1,4,128883,0,16769.85,11.7885,1,15,1,46.56524,.8068234,27.46427,0,0,74.83633,0,0,0,2,0,5,74.36826,13.73189,0,,450,0,1,1,1.609438,0,1,0,0,0,0,0,84.27559,9.727398,1.609438,4.315303,1 +1,1,0,1,5,128883,0,16769.85,12.7885,1,15,1,11.42615,0,0,0,0,11.42615,0,0,0,1,0,5,74.36826,13.73189,0,,450,0,1,1,1.609438,0,1,0,0,0,0,0,84.27559,9.727398,1.609438,2.435905,1 +1,1,0,1,1,128884,0,16769.85,31.46612,1,15,1,489.1187,13.57314,0,0,0,502.6918,0,0,0,10,0,5,81.1,30.4,1,,450,0,0,0,1.609438,0,1,0,0,1,0,0,69.4852,9.727398,1.609438,6.219977,1 +1,1,0,1,2,128884,0,16769.85,32.46612,1,15,1,38.8828,11.96605,0,0,0,50.84885,0,0,0,3,0,5,81.1,30.4,1,,450,0,0,0,1.609438,0,1,0,0,1,0,0,69.4852,9.727398,1.609438,3.928858,1 +1,1,0,1,3,128884,0,16769.85,33.46612,1,15,1,15.46135,0,0,0,0,15.46135,0,0,0,1,0,5,81.1,30.4,1,,450,0,0,0,1.609438,0,1,0,0,1,0,0,69.4852,9.727398,1.609438,2.738343,1 +1,1,0,1,4,128884,0,16769.85,34.46612,1,15,1,29.96773,4.656524,0,0,0,34.62425,0,0,0,2,0,5,81.1,30.4,1,,450,0,0,0,1.609438,0,1,0,0,1,0,0,69.4852,9.727398,1.609438,3.544554,1 +1,1,0,1,5,128884,0,16769.85,35.46612,1,15,1,0,0,0,0,0,0,0,0,0,0,0,5,81.1,30.4,1,,450,0,0,0,1.609438,0,1,0,0,1,0,0,69.4852,9.727398,1.609438,,0 +1,1,0,1,1,128885,0,16769.85,32.3039,0,20,1,86.93046,1.372902,31.17506,0,0,119.4784,0,0,0,3,0,5,85.3,0,0,,450,0,0,0,1.609438,0,1,0,0,0,0,0,78.29784,9.727398,1.609438,4.783136,1 +1,1,0,1,2,128885,0,16769.85,33.3039,0,20,1,0,0,0,0,0,0,0,0,0,0,0,5,85.3,0,0,,450,0,0,0,1.609438,0,1,0,0,0,0,0,78.29784,9.727398,1.609438,,0 +1,1,0,1,3,128885,0,16769.85,34.3039,0,20,1,0,0,0,0,0,0,0,0,0,0,0,5,85.3,0,0,,450,0,0,0,1.609438,0,1,0,0,0,0,0,78.29784,9.727398,1.609438,,0 +1,1,0,1,4,128885,0,16769.85,35.3039,0,20,1,0,.8068234,0,0,0,.8068234,0,0,0,0,0,5,85.3,0,0,,450,0,0,0,1.609438,0,1,0,0,0,0,0,78.29784,9.727398,1.609438,-.2146504,1 +1,1,0,1,5,128885,0,16769.85,36.3039,0,20,1,55.01481,0,29.62336,0,0,84.63817,0,0,0,3,0,5,85.3,0,0,,450,0,0,0,1.609438,0,1,0,0,0,0,0,78.29784,9.727398,1.609438,4.438385,1 +1,1,0,1,1,128886,0,16769.85,6.757016,0,15,1,11.39089,.9292566,0,0,0,12.32014,0,0,0,2,0,5,74.36826,13.73189,0,,450,0,1,0,1.609438,0,1,0,0,0,0,0,84.78957,9.727398,1.609438,2.511236,1 +1,1,0,1,2,128886,0,16769.85,7.757016,0,15,1,4.381161,0,0,0,0,4.381161,0,0,0,0,0,5,74.36826,13.73189,0,,450,0,1,0,1.609438,0,1,0,0,0,0,0,84.78957,9.727398,1.609438,1.477314,1 +1,1,0,1,3,128886,0,16769.85,8.757016,0,15,1,21.94514,0,.9975063,0,0,22.94264,0,0,0,2,0,5,74.36826,13.73189,0,,450,0,1,0,1.609438,0,1,0,0,0,0,0,84.78957,9.727398,1.609438,3.132997,1 +1,1,0,1,4,128886,0,16769.85,9.757016,0,15,1,9.22084,2.259106,0,0,0,11.47994,0,0,0,1,0,5,74.36826,13.73189,0,,450,0,1,0,1.609438,0,1,0,0,0,0,0,84.78957,9.727398,1.609438,2.440602,1 +1,1,0,1,5,128886,0,16769.85,10.75702,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,450,0,1,0,1.609438,0,1,0,0,0,0,0,84.78957,9.727398,1.609438,,0 +1,1,0,1,1,128887,0,16769.85,4.459959,0,15,1,55.15588,3.243405,0,0,0,58.39928,0,0,0,6,0,5,74.36826,13.73189,0,,450,0,1,0,1.609438,0,1,0,0,0,0,0,81.35795,9.727398,1.609438,4.067304,1 +1,1,0,1,2,128887,0,16769.85,5.459959,0,15,1,0,3.822563,0,0,0,3.822563,0,0,0,0,0,5,74.36826,13.73189,0,,450,0,1,0,1.609438,0,1,0,0,0,0,0,81.35795,9.727398,1.609438,1.340921,1 +1,1,0,1,3,128887,0,16769.85,6.459959,0,15,1,7.98005,5.605985,0,0,0,13.58603,0,0,0,1,0,5,74.36826,13.73189,0,,450,0,1,0,1.609438,0,1,0,0,0,0,0,81.35795,9.727398,1.609438,2.609042,1 +1,1,0,1,4,128887,0,16769.85,7.459959,0,15,1,203.8958,6.210235,0,0,0,210.106,0,0,0,4,0,5,74.36826,13.73189,0,,450,0,1,0,1.609438,0,1,0,0,0,0,0,81.35795,9.727398,1.609438,5.347612,1 +1,1,0,1,5,128887,0,16769.85,8.459959,0,15,1,12.69573,1.836648,0,0,0,14.53237,0,0,0,1,0,5,74.36826,13.73189,0,,450,0,1,0,1.609438,0,1,0,0,0,0,0,81.35795,9.727398,1.609438,2.676379,1 +8,1,50,1,1,128894,0,14080.65,2.302532,0,16,1,427.1267,24.13444,12.48662,0,0,463.7478,0,0,0,11,0,4,74.36826,13.73189,0,,999,999,1,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,72.31981,9.552628,1.386294,6.139341,1 +8,1,50,1,2,128894,0,14080.65,3.302532,0,16,1,99.07458,22.04682,24.48557,0,0,145.607,0,0,0,7,0,4,74.36826,13.73189,0,,999,999,1,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,72.31981,9.552628,1.386294,4.980911,1 +8,1,50,1,3,128894,0,14080.65,4.302533,0,16,1,84.24182,26.84836,24.64321,0,0,135.7334,0,0,0,9,0,4,74.36826,13.73189,0,,999,999,1,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,72.31981,9.552628,1.386294,4.910693,1 +8,1,50,1,4,128894,0,14080.65,5.302533,0,16,1,44.51583,28.91693,25.46122,0,0,98.89399,0,0,0,6,0,4,74.36826,13.73189,0,,999,999,1,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,72.31981,9.552628,1.386294,4.594049,1 +8,1,50,1,5,128894,0,14080.65,6.302533,0,16,1,129.1544,19.44888,27.43795,0,0,176.0412,0,0,0,4,8,4,74.36826,13.73189,0,,999,999,1,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,72.31981,9.552628,1.386294,5.170718,1 +8,1,50,1,1,128895,0,14080.65,33.29227,1,16,1,102.9149,31.21951,50.20821,0,0,184.3427,0,0,0,8,0,4,32.6,17.4,0,,999,999,0,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,67.40203,9.552628,1.386294,5.216796,1 +8,1,50,1,2,128895,0,14080.65,34.29227,1,16,1,132.5531,64.05553,10.61513,0,0,207.2237,0,0,0,6,6,4,32.6,17.4,0,,999,999,0,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,67.40203,9.552628,1.386294,5.333799,1 +8,1,50,1,3,128895,0,14080.65,35.29227,1,16,1,294.8464,48.10704,0,0,0,342.9534,0,0,0,6,5,4,32.6,17.4,0,,999,999,0,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,67.40203,9.552628,1.386294,5.837595,1 +8,1,50,1,4,128895,0,14080.65,36.29227,1,16,1,91.32629,58.972,0,0,0,150.2983,0,0,0,6,0,4,32.6,17.4,0,,999,999,0,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,67.40203,9.552628,1.386294,5.012622,1 +8,1,50,1,5,128895,0,14080.65,37.29227,1,16,1,358.8557,66.47034,0,0,0,425.326,0,0,0,12,20,4,32.6,17.4,0,,999,999,0,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,67.40203,9.552628,1.386294,6.052856,1 +8,1,50,1,1,128896,0,14080.65,4.383299,1,16,1,32.12374,24.47353,0,0,0,56.59726,0,0,0,3,0,4,74.36826,13.73189,0,,999,999,1,1,1.386294,6.906755,0,3.931826,7.599902,1,0,0,71.80583,9.552628,1.386294,4.035961,1 +8,1,50,1,2,128896,0,14080.65,5.383299,1,16,1,63.14643,21.50245,0,0,313.5547,398.2036,1,0,0,7,0,4,74.36826,13.73189,0,,999,999,1,1,1.386294,6.906755,0,3.931826,7.599902,1,0,0,71.80583,9.552628,1.386294,5.986963,1 +8,1,50,1,3,128896,0,14080.65,6.383299,1,16,1,132.3092,103.0377,0,0,0,235.3469,0,0,0,13,0,4,74.36826,13.73189,0,,999,999,1,1,1.386294,6.906755,0,3.931826,7.599902,1,0,0,71.80583,9.552628,1.386294,5.461061,1 +8,1,50,1,4,128896,0,14080.65,7.383299,1,16,1,34.41946,34.53878,10.22946,0,0,79.1877,0,0,0,10,0,4,74.36826,13.73189,0,,999,999,1,1,1.386294,6.906755,0,3.931826,7.599902,1,0,0,71.80583,9.552628,1.386294,4.371821,1 +8,1,50,1,5,128896,0,14080.65,8.383299,1,16,1,158.7085,110.5385,0,0,0,269.2469,0,0,0,2,21,4,74.36826,13.73189,0,,999,999,1,1,1.386294,6.906755,0,3.931826,7.599902,1,0,0,71.80583,9.552628,1.386294,5.595629,1 +8,1,50,1,1,128897,0,14080.65,37.89459,0,18,1,282.4212,92.15943,0,0,0,374.5806,0,0,0,2,1,4,65.3,26.1,0,,999,999,0,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,66.49789,9.552628,1.386294,5.925807,1 +8,1,50,1,2,128897,0,14080.65,38.89459,0,18,1,24.49646,122.7545,0,0,816.086,963.337,1,0,0,2,0,4,65.3,26.1,0,,999,999,0,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,66.49789,9.552628,1.386294,6.870403,1 +8,1,50,1,3,128897,0,14080.65,39.89459,0,18,1,33.69673,86.93261,0,0,0,120.6293,0,0,0,4,0,4,65.3,26.1,0,,999,999,0,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,66.49789,9.552628,1.386294,4.792723,1 +8,1,50,1,4,128897,0,14080.65,40.89459,0,18,1,61.4961,34.57549,0,0,0,96.07159,0,0,0,3,0,4,65.3,26.1,0,,999,999,0,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,66.49789,9.552628,1.386294,4.565094,1 +8,1,50,1,5,128897,0,14080.65,41.89459,0,18,1,88.76736,115.406,0,0,0,204.1733,0,0,0,4,0,4,65.3,26.1,0,,999,999,0,0,1.386294,6.906755,0,3.931826,7.599902,1,0,0,66.49789,9.552628,1.386294,5.318969,1 +11,1,0,0,1,128948,0,5863.523,60.92539,1,12,1,499.7644,19.37574,0,0,889.3993,1408.539,1,0,0,8,28,1,56.3,13.73189,1,,0,24,0,0,0,3.178054,0,0,0,1,0,0,63.60422,8.676677,0,7.250309,1 +11,1,0,0,2,128948,0,5863.523,61.92539,1,12,1,301.3477,0,42.25337,0,0,343.6011,0,0,0,1,50,1,56.3,13.73189,1,,0,24,0,0,0,3.178054,0,0,0,1,0,0,63.60422,8.676677,0,5.839481,1 +11,1,0,0,3,128948,0,5863.523,62.92539,1,12,1,153.8083,0,4.914005,0,0,158.7224,0,0,0,0,26,1,56.3,13.73189,1,,0,24,0,0,0,3.178054,0,0,0,1,0,0,63.60422,8.676677,0,5.067156,1 +8,1,50,0,1,128955,0,8527.916,19.69336,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,55.8,8.7,1,,550,550,0,0,1.098612,6.309918,0,3.931826,7.003066,1,0,0,71.63822,9.051217,1.098612,,0 +8,1,50,0,2,128955,0,8527.916,20.69336,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,55.8,8.7,1,,550,550,0,0,1.098612,6.309918,0,3.931826,7.003066,1,0,0,71.63822,9.051217,1.098612,,0 +8,1,50,0,3,128955,0,8527.916,21.69336,0,12,1,0,3.194103,0,0,0,3.194103,0,0,0,0,0,3,55.8,8.7,1,,550,550,0,0,1.098612,6.309918,0,3.931826,7.003066,1,0,0,71.63822,9.051217,1.098612,1.161306,1 +8,1,50,0,4,128955,0,8527.916,22.69336,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,55.8,8.7,1,,550,550,0,0,1.098612,6.309918,0,3.931826,7.003066,1,0,0,71.63822,9.051217,1.098612,,0 +8,1,50,0,5,128955,0,8527.916,23.69336,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,55.8,8.7,1,,550,550,0,0,.6931472,6.309918,0,3.931826,7.003066,1,0,0,71.63822,9.051217,.6931472,,0 +8,1,50,0,1,128956,0,8527.916,57.79055,0,12,1,20.02356,0,0,0,0,20.02356,0,0,0,1,0,3,81.1,8.7,0,,550,550,0,0,1.098612,6.309918,0,3.931826,7.003066,1,0,0,64.59297,9.051217,1.098612,2.996909,1 +8,1,50,0,2,128956,0,8527.916,58.79055,0,12,1,24.25876,40.97035,0,0,1705.515,1770.744,2,0,0,0,0,3,81.1,8.7,0,,550,550,0,0,1.098612,6.309918,0,3.931826,7.003066,1,0,0,64.59297,9.051217,1.098612,7.479155,1 +8,1,50,0,3,128956,0,8527.916,59.79055,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.1,8.7,0,,550,550,0,0,1.098612,6.309918,0,3.931826,7.003066,1,0,0,64.59297,9.051217,1.098612,,0 +8,1,50,0,4,128956,0,8527.916,60.79055,0,12,.5945206,33.27256,2.848678,0,0,1163.974,1200.096,1,0,0,4,0,3,81.1,8.7,0,,550,550,0,0,1.098612,6.309918,0,3.931826,7.003066,1,0,0,64.59297,9.051217,1.098612,7.090157,1 +8,1,50,0,1,128957,0,8527.916,48.32033,1,11,1,53.00353,49.60542,0,0,632.1143,734.7232,1,0,0,10,0,3,75.8,21.7,0,,550,550,0,0,1.098612,6.309918,0,3.931826,7.003066,1,0,0,68.34619,9.051217,1.098612,6.599494,1 +8,1,50,0,2,128957,0,8527.916,49.32033,1,11,1,122.911,68.54447,0,0,0,191.4555,0,0,0,22,0,3,75.8,21.7,0,,550,550,0,0,1.098612,6.309918,0,3.931826,7.003066,1,0,0,68.34619,9.051217,1.098612,5.254655,1 +8,1,50,0,3,128957,0,8527.916,50.32033,1,11,1,60.44226,40.81081,0,0,0,101.2531,0,0,0,8,0,3,75.8,21.7,0,,550,550,0,0,1.098612,6.309918,0,3.931826,7.003066,1,0,0,68.34619,9.051217,1.098612,4.617623,1 +8,1,50,0,4,128957,0,8527.916,51.32033,1,11,1,223.7922,28.4959,35.24612,0,0,287.5342,0,0,0,22,6,3,75.8,21.7,0,,550,550,0,0,1.098612,6.309918,0,3.931826,7.003066,1,0,0,68.34619,9.051217,1.098612,5.661342,1 +8,1,50,0,5,128957,0,8527.916,52.32033,1,11,1,108.7953,58.06586,0,0,1546.052,1712.914,2,0,0,18,0,2,75.8,21.7,0,,550,550,0,0,.6931472,6.309918,0,3.931826,7.003066,1,0,0,68.34619,9.051217,.6931472,7.445951,1 +2,1,100,1,1,128962,0,18413.77,15.1102,1,14,1,81.79655,6.781678,16.163,0,0,104.7412,0,0,0,7,0,5,83.2,4.3,0,,900,900,1,1,1.609438,6.802395,1,0,0,0,0,0,75.43546,9.820909,1.609438,4.651493,1 +2,1,100,1,2,128962,0,18413.77,16.1102,1,14,1,84.13174,2.286336,30.15242,0,0,116.5705,0,0,0,7,0,5,83.2,4.3,0,,900,900,1,1,1.609438,6.802395,1,0,0,0,0,0,75.43546,9.820909,1.609438,4.758496,1 +2,1,100,1,3,128962,0,18413.77,17.1102,1,14,1,26.26363,9.985134,0,0,0,36.24876,0,0,0,2,0,5,83.2,4.3,0,,900,900,1,1,1.609438,6.802395,1,0,0,0,0,0,75.43546,9.820909,1.609438,3.590405,1 +2,1,100,1,1,128963,0,18413.77,42.02601,0,9,1,16.77573,0,0,0,0,16.77573,0,0,0,0,0,5,88.4,4.3,0,,900,900,0,0,1.609438,6.802395,1,0,0,0,0,0,73.73394,9.820909,1.609438,2.819933,1 +2,1,100,1,2,128963,0,18413.77,43.02601,0,9,1,105.9336,4.708764,31.2847,0,0,141.927,0,0,0,3,0,5,88.4,4.3,0,,900,900,0,0,1.609438,6.802395,1,0,0,0,0,0,73.73394,9.820909,1.609438,4.955313,1 +2,1,100,1,3,128963,0,18413.77,44.02601,0,9,1,0,0,22.52725,0,0,22.52725,0,0,0,0,0,5,88.4,4.3,0,,900,900,0,0,1.609438,6.802395,1,0,0,0,0,0,73.73394,9.820909,1.609438,3.114726,1 +2,1,100,1,1,128964,0,18413.77,18.02601,1,12.32507,1,71.74301,37.50743,0,0,0,109.2504,0,0,0,6,0,5,64.2,0,0,,900,900,0,0,1.609438,6.802395,1,0,0,0,0,0,79.81728,9.820909,1.609438,4.693643,1 +2,1,100,1,2,128964,0,18413.77,19.02601,1,12.32507,1,45.8356,36.56505,0,0,0,82.40065,0,0,0,5,0,5,64.2,0,0,,900,900,0,0,1.609438,6.802395,1,0,0,0,0,0,79.81728,9.820909,1.609438,4.411593,1 +2,1,100,1,3,128964,0,18413.77,20.02601,1,12.32507,1,161.9425,77.03667,0,0,0,238.9792,0,0,0,7,0,5,64.2,0,0,,900,900,0,0,1.609438,6.802395,1,0,0,0,0,0,79.81728,9.820909,1.609438,5.476377,1 +2,1,100,1,1,128965,0,18413.77,40.57221,1,14,1,26.76978,0,0,0,0,26.76978,0,0,0,2,0,5,81.1,17.4,0,,900,900,0,0,1.609438,6.802395,1,0,0,0,0,0,78.77059,9.820909,1.609438,3.287274,1 +2,1,100,1,2,128965,0,18413.77,41.57221,1,14,1,157.6483,19.12357,32.92324,0,335.0027,544.6979,1,0,0,8,0,5,81.1,17.4,0,,900,900,0,0,1.609438,6.802395,1,0,0,0,0,0,78.77059,9.820909,1.609438,6.300231,1 +2,1,100,1,3,128965,0,18413.77,42.57221,1,14,1,27.25471,35.72844,0,0,0,62.98315,0,0,0,3,0,5,81.1,17.4,0,,900,900,0,0,1.609438,6.802395,1,0,0,0,0,0,78.77059,9.820909,1.609438,4.142867,1 +2,1,100,1,1,128966,0,18413.77,4.128679,0,14,1,34.74123,16.32957,0,0,0,51.07079,0,0,0,3,0,5,74.36826,13.73189,0,,900,900,1,0,1.609438,6.802395,1,0,0,0,0,0,81.65595,9.820909,1.609438,3.933213,1 +2,1,100,1,2,128966,0,18413.77,5.128679,0,14,1,35.27491,15.59608,0,0,0,50.87099,0,0,0,4,0,5,74.36826,13.73189,0,,900,900,1,0,1.609438,6.802395,1,0,0,0,0,0,81.65595,9.820909,1.609438,3.929293,1 +2,1,100,1,3,128966,0,18413.77,6.128679,0,14,1,10.40634,24.05847,0,0,0,34.46482,0,0,0,2,0,5,74.36826,13.73189,0,,900,900,1,0,1.609438,6.802395,1,0,0,0,0,0,81.65595,9.820909,1.609438,3.539939,1 +10,1,50,0,1,128967,0,10415.01,58.88843,0,13,1,68.31567,38.03298,229.5583,0,0,335.907,0,0,0,4,0,2,65.3,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,64.26467,9.2511,.6931472,5.816834,1 +10,1,50,0,2,128967,0,10415.01,59.88843,0,13,1,14.55526,34.469,42.81401,0,0,91.83827,0,0,0,2,0,2,65.3,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,64.26467,9.2511,.6931472,4.520029,1 +10,1,50,0,3,128967,0,10415.01,60.88843,0,13,1,17.69042,21.71007,2.029484,0,0,41.42997,0,0,0,1,0,2,65.3,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,64.26467,9.2511,.6931472,3.724005,1 +10,1,50,0,4,128967,0,10415.01,61.88843,0,13,1,38.74202,49.95442,0,0,0,88.69644,0,0,0,3,0,2,65.3,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,64.26467,9.2511,.6931472,4.48522,1 +10,1,50,0,5,128967,0,10415.01,62.88843,0,13,1,25.42726,35.83993,0,0,0,61.26719,0,0,0,1,0,2,65.3,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,64.26467,9.2511,.6931472,4.115244,1 +10,1,50,0,1,128968,0,10415.01,56.03559,1,12,1,56.09541,27.56184,0,0,0,83.65724,0,0,0,2,0,2,80,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,70.90685,9.2511,.6931472,4.426728,1 +10,1,50,0,2,128968,0,10415.01,57.03559,1,12,1,48.84097,4.474393,43.66577,0,0,96.98113,0,0,0,2,0,2,80,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,70.90685,9.2511,.6931472,4.574516,1 +10,1,50,0,3,128968,0,10415.01,58.03559,1,12,1,27.02703,0,0,0,0,27.02703,0,0,0,1,0,2,80,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,70.90685,9.2511,.6931472,3.296837,1 +10,1,50,0,4,128968,0,10415.01,59.03559,1,12,1,13.74202,30.19599,0,0,0,43.93801,0,0,0,1,0,2,80,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,70.90685,9.2511,.6931472,3.78278,1 +10,1,50,0,5,128968,0,10415.01,60.03559,1,12,1,39.18299,7.899125,0,0,0,47.08212,0,0,0,2,1,2,80,17.4,0,,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,70.90685,9.2511,.6931472,3.851893,1 +11,1,0,1,1,128969,0,28065.76,56.89254,1,16,1,53.88692,0,0,0,0,53.88692,0,0,0,1,0,2,85.3,13,0,,0,607,0,0,.6931472,6.408529,0,0,0,1,0,0,68.57099,10.24234,.6931472,3.986888,1 +11,1,0,1,2,128969,0,28065.76,57.89254,1,16,1,83.82749,0,0,0,0,83.82749,0,0,0,2,0,2,85.3,13,0,,0,607,0,0,.6931472,6.408529,0,0,0,1,0,0,68.57099,10.24234,.6931472,4.428761,1 +11,1,0,1,3,128969,0,28065.76,58.89254,1,16,1,48.89435,3.857494,0,0,0,52.75184,0,0,0,1,4,2,85.3,13,0,,0,607,0,0,.6931472,6.408529,0,0,0,1,0,0,68.57099,10.24234,.6931472,3.965599,1 +11,1,0,1,1,128970,0,28065.76,58.22587,0,16,1,102.768,141.4723,28.48645,0,0,272.7267,0,0,0,5,0,2,83.2,34.8,1,,0,607,0,0,.6931472,6.408529,0,0,0,1,0,0,67.87204,10.24234,.6931472,5.60847,1 +11,1,0,1,2,128970,0,28065.76,59.22587,0,16,1,194.7439,122.9326,48.51752,0,0,366.1941,0,0,0,9,0,2,83.2,34.8,1,,0,607,0,0,.6931472,6.408529,0,0,0,1,0,0,67.87204,10.24234,.6931472,5.903163,1 +11,1,0,1,3,128970,0,28065.76,60.22587,0,16,1,289.1892,117.2727,76.16708,0,646.1032,1128.732,1,0,0,11,5,2,83.2,34.8,1,,0,607,0,0,.6931472,6.408529,0,0,0,1,0,0,67.87204,10.24234,.6931472,7.02885,1 +6,1,25,1,1,128971,0,14011.17,32.66804,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.1,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,77.59959,9.547681,1.098612,,0 +6,1,25,1,2,128971,0,14011.17,33.66804,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.1,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,77.59959,9.547681,1.098612,,0 +6,1,25,1,3,128971,0,14011.17,34.66804,0,12,1,7.433102,2.96333,0,0,0,10.39643,0,0,0,1,0,3,81.1,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,77.59959,9.547681,1.098612,2.341463,1 +6,1,25,1,4,128971,0,14011.17,35.66804,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.1,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,77.59959,9.547681,1.098612,,0 +6,1,25,1,5,128971,0,14011.17,36.66804,0,12,1,10.51746,0,26.0833,0,0,36.60076,0,0,0,0,1,3,81.1,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,77.59959,9.547681,1.098612,3.600069,1 +6,1,25,1,1,128972,0,14011.17,32.12868,1,16,1,31.52885,12.19512,0,0,0,43.72397,0,0,0,3,0,3,81.1,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.90932,9.547681,1.098612,3.777896,1 +6,1,25,1,2,128972,0,14011.17,33.12868,1,16,1,26.12956,0,0,0,0,26.12956,0,0,0,1,1,3,81.1,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.90932,9.547681,1.098612,3.263067,1 +6,1,25,1,3,128972,0,14011.17,34.12868,1,16,1,26.75917,0,0,0,0,26.75917,0,0,0,2,0,3,81.1,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.90932,9.547681,1.098612,3.286877,1 +6,1,25,1,4,128972,0,14011.17,35.12868,1,16,1,31.89536,0,25.24094,0,0,57.1363,0,0,0,0,1,3,81.1,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.90932,9.547681,1.098612,4.04544,1 +6,1,25,1,5,128972,0,14011.17,36.12868,1,16,1,34.91796,0,0,0,0,34.91796,0,0,0,2,0,3,81.1,13,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.90932,9.547681,1.098612,3.553001,1 +6,1,25,1,1,128973,0,14011.17,6.009583,0,16,1,10.70791,5.710886,0,0,0,16.4188,0,0,0,2,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,84.90688,9.547681,1.098612,2.798427,1 +6,1,25,1,2,128973,0,14011.17,7.009583,0,16,1,54.98095,0,0,0,0,54.98095,0,0,0,5,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,84.90688,9.547681,1.098612,4.006987,1 +6,1,25,1,3,128973,0,14011.17,8.009583,0,16,1,9.910803,0,0,0,0,9.910803,0,0,0,1,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,84.90688,9.547681,1.098612,2.293625,1 +6,1,25,1,4,128973,0,14011.17,9.009583,0,16,1,14.34144,0,0,0,0,14.34144,0,0,0,1,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,84.90688,9.547681,1.098612,2.663153,1 +6,1,25,1,5,128973,0,14011.17,10.00958,0,16,1,1.262095,0,0,0,0,1.262095,0,0,0,1,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,84.90688,9.547681,1.098612,.2327731,1 +10,1,50,1,1,128998,0,12082.51,60.35866,1,12,1,32.42118,7.63831,38.4414,0,0,78.50089,0,0,0,1,2,1,92.6,8.7,0,,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,0,0,0,73.20397,9.399596,0,4.36311,1 +10,1,50,1,2,128998,0,12082.51,61.35866,1,12,1,13.06478,0,0,0,0,13.06478,0,0,0,1,0,1,92.6,8.7,0,,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,0,0,0,73.20397,9.399596,0,2.56992,1 +10,1,50,1,3,128998,0,12082.51,62.35866,1,12,1,87.21507,0,43.89495,0,0,131.11,0,0,0,2,1,1,92.6,8.7,0,,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,0,0,0,73.20397,9.399596,0,4.876037,1 +8,1,50,0,1,129005,0,10670.6,31.42779,1,16,1,84.80566,29.5053,21.5371,0,0,135.8481,0,0,0,5,0,4,46.3,17.4,0,,149,149,0,0,1.386294,5.003946,0,3.931826,5.697093,0,0,0,72.45773,9.275341,1.386294,4.911537,1 +8,1,50,0,2,129005,0,10670.6,32.42779,1,16,1,34.77089,19.03504,7.816711,0,0,61.62264,0,0,0,3,0,4,46.3,17.4,0,,149,149,0,0,1.386294,5.003946,0,3.931826,5.697093,0,0,0,72.45773,9.275341,1.386294,4.121029,1 +8,1,50,0,3,129005,0,10670.6,33.42779,1,16,1,44.22604,19.46437,0,0,0,63.69042,0,0,0,2,0,4,46.3,17.4,0,,149,149,0,0,1.386294,5.003946,0,3.931826,5.697093,0,0,0,72.45773,9.275341,1.386294,4.154034,1 +8,1,50,0,4,129005,0,10670.6,34.42779,1,16,1,72.69827,29.25706,0,0,0,101.9553,0,0,0,5,0,4,46.3,17.4,0,,149,149,0,0,1.386294,5.003946,0,3.931826,5.697093,0,0,0,72.45773,9.275341,1.386294,4.624535,1 +8,1,50,0,5,129005,0,10670.6,35.42779,1,16,1,47.72822,15.71488,0,0,0,63.4431,0,0,0,4,0,4,46.3,17.4,0,,149,149,0,0,1.386294,5.003946,0,3.931826,5.697093,0,0,0,72.45773,9.275341,1.386294,4.150144,1 +8,1,50,0,1,129006,0,10670.6,8.29295,1,16,1,26.79623,12.73852,0,0,0,39.53475,0,0,0,3,0,4,74.36826,13.73189,0,,149,149,1,1,1.386294,5.003946,0,3.931826,5.697093,0,0,0,81.14014,9.275341,1.386294,3.67718,1 +8,1,50,0,2,129006,0,10670.6,9.29295,1,16,1,22.91105,5.498652,6.469003,0,0,34.87871,0,0,0,2,0,4,74.36826,13.73189,0,,149,149,1,1,1.386294,5.003946,0,3.931826,5.697093,0,0,0,81.14014,9.275341,1.386294,3.551877,1 +8,1,50,0,3,129006,0,10670.6,10.29295,1,16,1,54.29976,11.4398,29.41032,0,0,95.14988,0,0,0,6,0,4,74.36826,13.73189,0,,149,149,1,1,1.386294,5.003946,0,3.931826,5.697093,0,0,0,81.14014,9.275341,1.386294,4.555453,1 +8,1,50,0,4,129006,0,10670.6,11.29295,1,16,1,44.66727,15.81586,.2051048,0,0,60.68824,0,0,0,4,0,4,74.36826,13.73189,0,,149,149,1,1,1.386294,5.003946,0,3.931826,5.697093,0,0,0,81.14014,9.275341,1.386294,4.10575,1 +8,1,50,0,5,129006,0,10670.6,12.29295,1,16,1,21.05044,23.78908,0,0,0,44.83952,0,0,0,3,0,4,74.36826,13.73189,0,,149,149,1,1,1.386294,5.003946,0,3.931826,5.697093,0,0,0,81.14014,9.275341,1.386294,3.80309,1 +8,1,50,0,1,129007,0,10670.6,6.354552,0,16,1,33.5689,10.44759,0,0,0,44.01649,0,0,0,4,0,4,74.36826,13.73189,0,,149,149,1,0,1.386294,5.003946,0,3.931826,5.697093,1,0,0,73.78861,9.275341,1.386294,3.784564,1 +8,1,50,0,2,129007,0,10670.6,7.354552,0,16,1,28.30189,2.727763,0,0,0,31.02965,0,0,0,3,0,4,74.36826,13.73189,0,,149,149,1,0,1.386294,5.003946,0,3.931826,5.697093,1,0,0,73.78861,9.275341,1.386294,3.434943,1 +8,1,50,0,3,129007,0,10670.6,8.354551,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,149,149,1,0,1.386294,5.003946,0,3.931826,5.697093,1,0,0,73.78861,9.275341,1.386294,,0 +8,1,50,0,4,129007,0,10670.6,9.354551,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,149,149,1,0,1.386294,5.003946,0,3.931826,5.697093,1,0,0,73.78861,9.275341,1.386294,,0 +8,1,50,0,5,129007,0,10670.6,10.35455,0,16,1,25.42726,2.125886,0,0,0,27.55315,0,0,0,3,0,4,74.36826,13.73189,0,,149,149,1,0,1.386294,5.003946,0,3.931826,5.697093,1,0,0,73.78861,9.275341,1.386294,3.316117,1 +8,1,50,0,1,129008,0,10670.6,3.52909,1,16,1,40.63604,24.98233,0,0,0,65.61838,0,0,0,4,0,4,74.36826,13.73189,0,,149,149,1,1,1.386294,5.003946,0,3.931826,5.697093,0,0,0,77.70851,9.275341,1.386294,4.183856,1 +8,1,50,0,2,129008,0,10670.6,4.529089,1,16,1,24.79784,3.396226,0,0,0,28.19407,0,0,0,2,0,4,74.36826,13.73189,0,,149,149,1,1,1.386294,5.003946,0,3.931826,5.697093,0,0,0,77.70851,9.275341,1.386294,3.339112,1 +8,1,50,0,3,129008,0,10670.6,5.529089,1,16,1,115.2334,27.2285,3.931204,0,0,146.3931,0,0,0,6,0,4,74.36826,13.73189,0,,149,149,1,1,1.386294,5.003946,0,3.931826,5.697093,0,0,0,77.70851,9.275341,1.386294,4.986296,1 +8,1,50,0,4,129008,0,10670.6,6.529089,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,149,149,1,1,1.386294,5.003946,0,3.931826,5.697093,0,0,0,77.70851,9.275341,1.386294,,0 +8,1,50,0,5,129008,0,10670.6,7.529089,1,16,1,144.1184,4.126719,0,0,0,148.2451,0,0,0,5,0,4,74.36826,13.73189,0,,149,149,1,1,1.386294,5.003946,0,3.931826,5.697093,0,0,0,77.70851,9.275341,1.386294,4.998867,1 +2,1,100,0,1,129011,0,9756.203,52.13963,0,12,1,145.7597,26.73734,0,0,0,172.4971,0,0,0,3,0,2,70,13.73189,0,,856,856,0,0,.6931472,6.75227,1,0,0,0,0,0,76.06852,9.185761,.6931472,5.15038,1 +2,1,100,0,2,129011,0,9756.203,53.13963,0,12,1,0,2.830189,0,0,0,2.830189,0,0,0,0,0,2,70,13.73189,0,,856,856,0,0,.6931472,6.75227,1,0,0,0,0,0,76.06852,9.185761,.6931472,1.040343,1 +2,1,100,0,3,129011,0,9756.203,54.13963,0,12,1,14.98771,2.063882,186.8747,0,0,203.9263,0,0,0,1,1,2,70,13.73189,0,,856,856,0,0,.6931472,6.75227,1,0,0,0,0,0,76.06852,9.185761,.6931472,5.317759,1 +2,1,100,0,4,129011,0,9756.203,55.13963,0,12,1,39.19781,1.203282,0,0,0,40.40109,0,0,0,2,0,2,70,13.73189,0,,856,856,0,0,.6931472,6.75227,1,0,0,0,0,0,76.06852,9.185761,.6931472,3.698857,1 +2,1,100,0,5,129011,0,9756.203,56.13963,0,12,1,7.919967,0,32.47186,0,0,40.39183,0,0,0,0,1,2,70,13.73189,0,,856,856,0,0,.6931472,6.75227,1,0,0,0,0,0,76.06852,9.185761,.6931472,3.698627,1 +2,1,100,0,1,129012,0,9756.203,49.43737,1,12,1,233.5395,11.27797,23.55713,0,0,268.3746,0,0,0,6,1,2,67.5,13.73189,0,,856,856,0,0,.6931472,6.75227,1,0,0,0,0,0,77.69517,9.185761,.6931472,5.592384,1 +2,1,100,0,2,129012,0,9756.203,50.43737,1,12,1,0,5.283019,0,0,0,5.283019,0,0,0,0,0,2,67.5,13.73189,0,,856,856,0,0,.6931472,6.75227,1,0,0,0,0,0,77.69517,9.185761,.6931472,1.664498,1 +2,1,100,0,3,129012,0,9756.203,51.43737,1,12,1,83.78378,7.542997,30.41769,0,0,121.7445,0,0,0,3,1,2,67.5,13.73189,0,,856,856,0,0,.6931472,6.75227,1,0,0,0,0,0,77.69517,9.185761,.6931472,4.801924,1 +2,1,100,0,4,129012,0,9756.203,52.43737,1,12,1,5.469462,1.326345,0,0,0,6.795807,0,0,0,1,0,2,67.5,13.73189,0,,856,856,0,0,.6931472,6.75227,1,0,0,0,0,0,77.69517,9.185761,.6931472,1.916306,1 +2,1,100,0,5,129012,0,9756.203,53.43737,1,12,1,7.503126,0,20.82117,0,0,28.3243,0,0,0,0,1,2,67.5,13.73189,0,,856,856,0,0,.6931472,6.75227,1,0,0,0,0,0,77.69517,9.185761,.6931472,3.34372,1 +3,1,100,0,1,129024,0,14846.15,31.03901,1,16,1,11.99041,3.639089,0,0,0,15.6295,0,0,0,2,0,4,73.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.97472,9.605563,1.386294,2.74916,1 +3,1,100,0,2,129024,0,14846.15,32.03901,1,16,1,462.1851,3.828039,0,0,0,466.0132,0,0,0,4,0,4,73.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.97472,9.605563,1.386294,6.144214,1 +3,1,100,0,3,129024,0,14846.15,33.03901,1,16,1,397.5561,9.750624,0,0,1006.828,1414.135,1,0,0,1,0,4,73.8,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.97472,9.605563,1.386294,7.254273,1 +3,1,100,0,1,129025,0,14846.15,28.62697,0,17,1,0,0,0,0,0,0,0,0,0,0,0,4,92.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,79.02419,9.605563,1.386294,,0 +3,1,100,0,2,129025,0,14846.15,29.62697,0,17,1,0,0,0,0,0,0,0,0,0,0,0,4,92.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,79.02419,9.605563,1.386294,,0 +3,1,100,0,3,129025,0,14846.15,30.62697,0,17,1,12.46883,0,31.27182,0,0,43.74065,0,0,0,1,0,4,92.5,13.73189,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,79.02419,9.605563,1.386294,3.778278,1 +3,1,100,0,1,129026,0,14846.15,6.718686,0,16,1,0,2.368105,0,0,0,2.368105,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,86.10872,9.605563,1.386294,.8620902,1 +3,1,100,0,2,129026,0,14846.15,7.718686,0,16,1,0,3.231106,0,0,0,3.231106,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,86.10872,9.605563,1.386294,1.172825,1 +3,1,100,0,3,129026,0,14846.15,8.718686,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,86.10872,9.605563,1.386294,,0 +3,1,100,0,1,129027,0,14846.15,1.61807,0,16,1,114.2086,14.53837,0,0,0,128.747,0,0,0,7,1,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,77.47646,9.605563,1.386294,4.857849,1 +3,1,100,0,2,129027,0,14846.15,2.61807,0,16,1,76.39649,3.285871,0,0,266.9222,346.6046,1,0,0,4,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,77.47646,9.605563,1.386294,5.848185,1 +3,1,100,0,3,129027,0,14846.15,3.61807,0,16,1,0,.7481297,0,0,0,.7481297,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,77.47646,9.605563,1.386294,-.290179,1 +8,1,50,1,1,129038,0,1081.886,12.05202,0,8,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,244,348,1,0,.6931472,5.852202,0,3.931826,6.190315,1,0,0,77.12702,6.987385,.6931472,,0 +8,1,50,1,2,129038,0,1081.886,13.05202,0,8,1,18.23626,3.783342,0,0,0,22.0196,0,0,0,0,1,2,74.36826,13.73189,0,,244,348,1,0,.6931472,5.852202,0,3.931826,6.190315,1,0,0,77.12702,6.987385,.6931472,3.091933,1 +8,1,50,1,3,129038,0,1081.886,14.05202,0,8,1,16.35283,0,0,0,0,16.35283,0,0,0,1,0,2,74.36826,13.73189,0,,244,348,1,0,.6931472,5.852202,0,3.931826,6.190315,1,0,0,77.12702,6.987385,.6931472,2.794401,1 +8,1,50,1,1,129039,0,1081.886,56.62697,1,8,1,14.27722,119.3754,0,0,0,133.6526,0,0,0,2,0,2,67.4,30.4,1,,244,348,0,0,.6931472,5.852202,0,3.931826,6.190315,0,1,0,53.3388,6.987385,.6931472,4.895244,1 +8,1,50,1,2,129039,0,1081.886,57.62697,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,67.4,30.4,1,,244,348,0,0,.6931472,5.852202,0,3.931826,6.190315,0,1,0,53.3388,6.987385,.6931472,,0 +8,1,50,1,3,129039,0,1081.886,58.62697,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,67.4,30.4,1,,244,348,0,0,.6931472,5.852202,0,3.931826,6.190315,0,1,0,53.3388,6.987385,.6931472,,0 +3,1,100,1,1,129061,1,7638.337,51.37577,0,12,1,42.21954,21.79735,81.79735,0,0,145.8142,0,0,0,4,1,2,86.3,8.7,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,59.68835,8.941066,.6931472,4.982334,1 +3,1,100,1,2,129061,1,7638.337,52.37577,0,12,1,11.56388,52.84141,42.2467,0,0,106.652,0,0,0,1,0,2,86.3,8.7,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,59.68835,8.941066,.6931472,4.669571,1 +3,1,100,1,3,129061,1,7638.337,53.37577,0,12,1,8.036162,28.71924,51.92366,0,0,88.67905,0,0,0,1,0,2,86.3,8.7,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,59.68835,8.941066,.6931472,4.485023,1 +3,1,100,1,1,129062,1,7638.337,48.92813,1,12,1,85.64536,9.589868,17.02051,0,0,112.2557,0,0,0,3,1,2,74.7,13,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,65.70995,8.941066,.6931472,4.720779,1 +3,1,100,1,2,129062,1,7638.337,49.92813,1,12,1,119.7687,2.17511,18.99229,0,0,140.9361,0,0,0,3,1,2,74.7,13,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,65.70995,8.941066,.6931472,4.948307,1 +3,1,100,1,3,129062,1,7638.337,50.92813,1,12,1,18.08137,0,0,0,0,18.08137,0,0,0,1,0,2,74.7,13,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,1,0,0,65.70995,8.941066,.6931472,2.894882,1 +11,1,0,1,1,129071,1,9542.002,18.72416,1,11,1,0,1.013189,0,0,0,1.013189,0,0,0,0,0,8,58.8,13.73189,0,,0,325,0,0,2.079442,5.783825,0,0,0,0,0,0,72.29684,9.163564,2.079442,.0131032,1 +11,1,0,1,2,129071,1,9542.002,19.72416,1,11,1,7.119387,0,34.50164,0,0,41.62103,0,0,0,0,1,8,58.8,13.73189,0,,0,325,0,0,2.079442,5.783825,0,0,0,0,0,0,72.29684,9.163564,2.079442,3.728606,1 +11,1,0,1,3,129071,1,9542.002,20.72416,1,11,1,185.0374,15.17706,0,0,1599.815,1800.03,1,0,0,3,0,9,58.8,13.73189,0,,0,325,0,0,2.197225,5.783825,0,0,0,0,0,0,72.29684,9.163564,2.197225,7.495559,1 +11,1,0,1,4,129071,1,9542.002,21.72416,1,11,1,300.5533,6.874135,0,0,0,307.4274,0,0,0,6,0,10,58.8,13.73189,0,,0,325,0,0,2.302585,5.783825,0,0,0,0,0,0,72.29684,9.163564,2.302585,5.728239,1 +11,1,0,1,5,129071,1,9542.002,22.72416,1,11,1,499.598,1.39653,0,0,2491.697,2992.691,2,0,0,5,0,10,58.8,13.73189,0,,0,325,0,0,2.302585,5.783825,0,0,0,0,0,0,72.29684,9.163564,2.302585,8.003928,1 +11,1,0,1,1,129072,1,9542.002,9.234771,1,13,1,18.58513,0,0,0,0,18.58513,0,0,0,1,1,8,74.36826,13.73189,0,,0,325,1,1,2.079442,5.783825,0,0,0,0,0,0,80.56938,9.163564,2.079442,2.922362,1 +11,1,0,1,2,129072,1,9542.002,10.23477,1,13,1,3.833516,0,0,0,0,3.833516,0,0,0,1,0,8,74.36826,13.73189,0,,0,325,1,1,2.079442,5.783825,0,0,0,0,0,0,80.56938,9.163564,2.079442,1.343782,1 +11,1,0,1,3,129072,1,9542.002,11.23477,1,13,1,47.38155,0,0,0,0,47.38155,0,0,0,4,0,9,74.36826,13.73189,0,,0,325,1,1,2.197225,5.783825,0,0,0,0,0,0,80.56938,9.163564,2.197225,3.858233,1 +11,1,0,1,4,129072,1,9542.002,12.23477,1,13,1,0,0,0,0,0,0,0,0,0,0,0,10,74.36826,13.73189,0,,0,325,1,1,2.302585,5.783825,0,0,0,0,0,0,80.56938,9.163564,2.302585,,0 +11,1,0,1,5,129072,1,9542.002,13.23477,1,13,1,5.924672,0,0,0,0,5.924672,0,0,0,1,0,10,74.36826,13.73189,0,,0,325,1,1,2.302585,5.783825,0,0,0,0,0,0,80.56938,9.163564,2.302585,1.779125,1 +11,1,0,1,1,129073,1,9542.002,35.2909,1,13,1,140.1379,24.02878,0,0,329.3525,493.5192,1,0,0,5,0,8,75.8,8.7,0,,0,325,0,0,2.079442,5.783825,0,0,0,0,0,0,75.5062,9.163564,2.079442,6.201562,1 +11,1,0,1,2,129073,1,9542.002,36.2909,1,13,1,559.874,9.884995,28.91566,0,939.9124,1538.587,1,0,0,8,0,8,75.8,8.7,0,,0,325,0,0,2.079442,5.783825,0,0,0,0,0,0,75.5062,9.163564,2.079442,7.33862,1 +11,1,0,1,3,129073,1,9542.002,37.2909,1,13,1,52.36908,10.32419,0,0,0,62.69327,0,0,0,1,0,9,75.8,8.7,0,,0,325,0,0,2.197225,5.783825,0,0,0,0,0,0,75.5062,9.163564,2.197225,4.138254,1 +11,1,0,1,4,129073,1,9542.002,38.2909,1,13,1,19.36376,0,0,0,0,19.36376,0,0,0,1,0,10,75.8,8.7,0,,0,325,0,0,2.302585,5.783825,0,0,0,0,0,0,75.5062,9.163564,2.302585,2.963403,1 +11,1,0,1,5,129073,1,9542.002,39.2909,1,13,1,0,0,0,0,0,0,0,0,0,0,0,10,75.8,8.7,0,,0,325,0,0,2.302585,5.783825,0,0,0,0,0,0,75.5062,9.163564,2.302585,,0 +11,1,0,1,1,129074,1,9542.002,10.78987,0,13,1,14.98801,0,30.70144,0,0,45.68945,0,0,0,1,0,8,74.36826,13.73189,0,,0,325,1,0,2.079442,5.783825,0,0,0,0,0,0,81.08335,9.163564,2.079442,3.821867,1 +11,1,0,1,2,129074,1,9542.002,11.78987,0,13,1,3.833516,0,0,0,0,3.833516,0,0,0,1,0,8,74.36826,13.73189,0,,0,325,1,0,2.079442,5.783825,0,0,0,0,0,0,81.08335,9.163564,2.079442,1.343782,1 +11,1,0,1,3,129074,1,9542.002,12.78987,0,13,1,24.93766,0,33.91521,0,0,58.85287,0,0,0,2,0,9,74.36826,13.73189,0,,0,325,1,0,2.197225,5.783825,0,0,0,0,0,0,81.08335,9.163564,2.197225,4.07504,1 +11,1,0,1,4,129074,1,9542.002,13.78987,0,13,1,5.993546,0,0,0,0,5.993546,0,0,0,1,0,10,74.36826,13.73189,0,,0,325,1,0,2.302585,5.783825,0,0,0,0,0,0,81.08335,9.163564,2.302585,1.790683,1 +11,1,0,1,5,129074,1,9542.002,14.78987,0,13,1,0,0,0,0,0,0,0,0,0,0,0,10,74.36826,13.73189,0,,0,325,1,0,2.302585,5.783825,0,0,0,0,0,0,81.08335,9.163564,2.302585,,0 +11,1,0,1,1,129075,1,9542.002,20.62149,1,13,1,32.97362,28.34532,0,0,0,61.31894,0,0,0,4,0,8,67.4,0,0,,0,325,0,0,2.079442,5.783825,0,0,0,0,0,0,72.91712,9.163564,2.079442,4.116089,1 +11,1,0,1,2,129075,1,9542.002,21.62149,1,13,1,37.73275,6.900329,0,0,0,44.63308,0,0,0,4,1,8,67.4,0,0,,0,325,0,0,2.079442,5.783825,0,0,0,0,0,0,72.91712,9.163564,2.079442,3.798475,1 +11,1,0,1,3,129075,1,9542.002,22.62149,1,13,1,499.7756,17.60599,0,0,0,517.3815,0,0,0,9,0,9,67.4,0,0,,0,325,0,0,2.197225,5.783825,0,0,0,0,0,0,72.91712,9.163564,2.197225,6.248781,1 +11,1,0,1,4,129075,1,9542.002,23.62149,1,13,1,151.2218,14.56893,0,0,0,165.7907,0,0,0,4,0,10,67.4,0,0,,0,325,0,0,2.302585,5.783825,0,0,0,0,0,0,72.91712,9.163564,2.302585,5.110726,1 +11,1,0,1,5,129075,1,9542.002,24.62149,1,13,1,52.05247,0,0,0,0,52.05247,0,0,0,7,0,10,67.4,0,0,,0,325,0,0,2.302585,5.783825,0,0,0,0,0,0,72.91712,9.163564,2.302585,3.952252,1 +11,1,0,1,1,129076,1,9542.002,46.31348,0,3,1,0,0,0,0,0,0,0,0,0,0,0,8,57.9,0,0,,0,325,0,0,2.079442,5.783825,0,0,0,1,0,0,60.2207,9.163564,2.079442,,0 +11,1,0,1,2,129076,1,9542.002,47.31348,0,3,1,24.91785,.8214677,49.28806,0,0,75.02738,0,0,0,2,0,8,57.9,0,0,,0,325,0,0,2.079442,5.783825,0,0,0,1,0,0,60.2207,9.163564,2.079442,4.317853,1 +11,1,0,1,3,129076,1,9542.002,48.31348,0,3,1,0,0,0,0,0,0,0,0,0,0,0,9,57.9,0,0,,0,325,0,0,2.197225,5.783825,0,0,0,1,0,0,60.2207,9.163564,2.197225,,0 +11,1,0,1,4,129076,1,9542.002,49.31348,0,3,1,55.78608,7.330567,0,0,0,63.11664,0,0,0,4,0,10,57.9,0,0,,0,325,0,0,2.302585,5.783825,0,0,0,1,0,0,60.2207,9.163564,2.302585,4.144984,1 +11,1,0,1,5,129076,1,9542.002,50.31348,0,3,1,0,0,0,0,0,0,0,0,0,0,0,10,57.9,0,0,,0,325,0,0,2.302585,5.783825,0,0,0,1,0,0,60.2207,9.163564,2.302585,,0 +11,1,0,1,1,129077,1,9542.002,9.492128,1,13,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,0,,0,325,1,1,2.079442,5.783825,0,0,0,0,0,0,80.56938,9.163564,2.079442,,0 +11,1,0,1,2,129077,1,9542.002,10.49213,1,13,1,3.833516,0,0,0,0,3.833516,0,0,0,1,0,8,74.36826,13.73189,0,,0,325,1,1,2.079442,5.783825,0,0,0,0,0,0,80.56938,9.163564,2.079442,1.343782,1 +11,1,0,1,3,129077,1,9542.002,11.49213,1,13,1,9.975062,0,0,0,0,9.975062,0,0,0,1,0,9,74.36826,13.73189,0,,0,325,1,1,2.197225,5.783825,0,0,0,0,0,0,80.56938,9.163564,2.197225,2.300088,1 +11,1,0,1,4,129077,1,9542.002,12.49213,1,13,1,0,0,0,0,0,0,0,0,0,0,0,10,74.36826,13.73189,0,,0,325,1,1,2.302585,5.783825,0,0,0,0,0,0,80.56938,9.163564,2.302585,,0 +11,1,0,1,5,129077,1,9542.002,13.49213,1,13,1,0,0,0,0,0,0,0,0,0,0,0,10,74.36826,13.73189,0,,0,325,1,1,2.302585,5.783825,0,0,0,0,0,0,80.56938,9.163564,2.302585,,0 +11,1,0,1,1,129082,1,5959.057,50.58453,1,9,1,27.95955,31.66568,0,0,0,59.62522,0,0,0,3,1,3,84.2,26.1,1,,0,313,0,0,1.098612,5.746203,0,0,0,0,0,1,52.06449,8.692836,1.098612,4.088078,1 +11,1,0,1,2,129082,1,5959.057,51.58453,1,9,1,228.0893,26.40174,0,0,0,254.491,0,0,0,7,10,3,84.2,26.1,1,,0,313,0,0,1.098612,5.746203,0,0,0,0,0,1,52.06449,8.692836,1.098612,5.539266,1 +11,1,0,1,3,129082,1,5959.057,52.58453,1,9,1,122.3984,40.05946,26.92765,0,0,189.3855,0,0,0,6,6,3,84.2,26.1,1,,0,313,0,0,1.098612,5.746203,0,0,0,0,0,1,52.06449,8.692836,1.098612,5.243785,1 +11,1,0,1,1,129083,1,5959.057,18.05613,1,12.32507,1,35.09816,.594884,0,0,0,35.69304,0,0,0,3,0,3,83.2,17.4,0,,0,313,0,0,1.098612,5.746203,0,0,0,0,1,0,62.13012,8.692836,1.098612,3.574956,1 +11,1,0,1,2,129083,1,5959.057,19.05613,1,12.32507,1,69.67883,13.62003,0,0,0,83.29886,0,0,0,8,0,3,83.2,17.4,0,,0,313,0,0,1.098612,5.746203,0,0,0,0,1,0,62.13012,8.692836,1.098612,4.422435,1 +11,1,0,1,3,129083,1,5959.057,20.05613,1,12.32507,1,0,0,0,0,0,0,0,0,0,0,0,3,83.2,17.4,0,,0,313,0,0,1.098612,5.746203,0,0,0,0,1,0,62.13012,8.692836,1.098612,,0 +11,1,0,1,1,129084,1,5959.057,56,0,2,1,131.1719,67.55502,21.76086,0,1095.604,1316.092,1,0,0,9,1,3,75.8,34.8,1,,0,313,0,0,1.098612,5.746203,0,0,0,0,0,1,60.90429,8.692836,1.098612,7.182422,1 +11,1,0,1,2,129084,1,5959.057,57,0,2,1,136.6358,50.28851,0,0,0,186.9243,0,0,0,8,6,3,75.8,34.8,1,,0,313,0,0,1.098612,5.746203,0,0,0,0,0,1,60.90429,8.692836,1.098612,5.230704,1 +11,1,0,1,3,129084,1,5959.057,58,0,2,1,66.40238,43.68186,21.74926,0,0,131.8335,0,0,0,6,3,3,75.8,34.8,1,,0,313,0,0,1.098612,5.746203,0,0,0,0,0,1,60.90429,8.692836,1.098612,4.88154,1 +11,1,0,0,1,129090,0,4912.531,49.28679,1,11,1,23.55713,55.73027,0,0,0,79.2874,0,0,0,2,0,1,87.5,13.73189,0,,0,0,0,0,0,0,0,0,0,0,0,0,75.54311,8.499748,0,4.373079,1 +11,1,0,0,2,129090,0,4912.531,50.28679,1,11,1,80.86253,58.14016,0,0,0,139.0027,0,0,0,9,0,1,87.5,13.73189,0,,0,0,0,0,0,0,0,0,0,0,0,0,75.54311,8.499748,0,4.934494,1 +11,1,0,0,3,129090,0,4912.531,51.28679,1,11,1,28.99263,28.7027,48.78624,0,0,106.4816,0,0,0,2,1,1,87.5,13.73189,0,,0,0,0,0,0,0,0,0,0,0,0,0,75.54311,8.499748,0,4.667972,1 +11,1,0,0,4,129090,0,4912.531,52.28679,1,11,1,11.8505,29.98177,0,0,0,41.83227,0,0,0,1,0,1,87.5,13.73189,0,,0,0,0,0,0,0,0,0,0,0,0,0,75.54311,8.499748,0,3.733668,1 +11,1,0,0,5,129090,0,4912.531,53.28679,1,11,1,27.09462,24.73948,45.30221,0,0,97.13631,0,0,0,4,1,1,87.5,13.73189,0,,0,0,0,0,0,0,0,0,0,0,0,0,75.54311,8.499748,0,4.576115,1 +11,1,0,0,1,129091,0,7755.583,21.3963,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,83.8,13.73189,0,,0,204,0,0,0,5.31812,0,0,0,0,0,0,69.5586,8.956297,0,,0 +11,1,0,0,2,129091,0,7755.583,22.3963,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,83.8,13.73189,0,,0,204,0,0,0,5.31812,0,0,0,0,0,0,69.5586,8.956297,0,,0 +11,1,0,0,3,129091,0,7755.583,23.3963,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,83.8,13.73189,0,,0,204,0,0,.6931472,5.31812,0,0,0,0,0,0,69.5586,8.956297,.6931472,,0 +11,1,0,0,4,129091,0,7755.583,24.3963,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,83.8,13.73189,0,,0,204,0,0,.6931472,5.31812,0,0,0,0,0,0,69.5586,8.956297,.6931472,,0 +11,1,0,0,5,129091,0,7755.583,25.3963,0,11,1,14.58941,0,0,0,0,14.58941,0,0,0,1,0,2,83.8,13.73189,0,,0,204,0,0,.6931472,5.31812,0,0,0,0,0,0,69.5586,8.956297,.6931472,2.680296,1 +7,1,25,1,1,129103,0,6910.05,5.472964,1,12,1,222.7218,12.71583,0,0,0,235.4377,0,0,0,12,1,4,74.36826,13.73189,0,,224,398,1,1,1.386294,5.986452,0,3.258096,6.79794,0,0,0,76.40307,8.840877,1.386294,5.461446,1 +7,1,25,1,2,129103,0,6910.05,6.472964,1,12,1,127.0537,4.742607,0,0,0,131.7963,0,0,0,12,1,4,74.36826,13.73189,0,,224,398,1,1,1.386294,5.986452,0,3.258096,6.79794,0,0,0,76.40307,8.840877,1.386294,4.881258,1 +7,1,25,1,3,129103,0,6910.05,7.472964,1,12,1,68.32918,14.43392,0,0,0,82.76309,0,0,0,7,1,4,74.36826,13.73189,0,,224,398,1,1,1.386294,5.986452,0,3.258096,6.79794,0,0,0,76.40307,8.840877,1.386294,4.415982,1 +7,1,25,1,1,129104,0,6910.05,38.43943,0,8,1,329.7362,135.4736,28.19544,0,0,493.4053,0,0,0,21,1,4,87.4,30.4,1,,224,398,0,0,1.386294,5.986452,0,3.258096,6.79794,0,0,1,47.57713,8.840877,1.386294,6.201331,1 +7,1,25,1,2,129104,0,6910.05,39.43943,0,8,1,134.7207,65.96385,0,0,2631.38,2832.065,1,0,0,10,0,4,87.4,30.4,1,,224,398,0,0,1.386294,5.986452,0,3.258096,6.79794,0,0,1,47.57713,8.840877,1.386294,7.948761,1 +7,1,25,1,3,129104,0,6910.05,40.43943,0,8,1,143.8903,14.93766,0,0,0,158.8279,0,0,0,12,0,4,87.4,30.4,1,,224,398,0,0,1.386294,5.986452,0,3.258096,6.79794,0,0,1,47.57713,8.840877,1.386294,5.067822,1 +7,1,25,1,1,129105,0,6910.05,33.98768,1,12,1,508.3933,79.76619,41.03717,0,0,629.1967,0,0,0,38,1,4,78.9,26.1,0,,224,398,0,0,1.386294,5.986452,0,3.258096,6.79794,1,0,0,70.62605,8.840877,1.386294,6.444444,1 +7,1,25,1,2,129105,0,6910.05,34.98768,1,12,1,277.1084,22.51369,0,0,0,299.6221,0,0,0,13,1,4,78.9,26.1,0,,224,398,0,0,1.386294,5.986452,0,3.258096,6.79794,1,0,0,70.62605,8.840877,1.386294,5.702522,1 +7,1,25,1,3,129105,0,6910.05,35.98768,1,12,1,261.3466,23.19701,34.00998,0,538.4988,857.0524,1,0,0,15,0,4,78.9,26.1,0,,224,398,0,0,1.386294,5.986452,0,3.258096,6.79794,1,0,0,70.62605,8.840877,1.386294,6.753499,1 +7,1,25,1,1,129106,0,6910.05,8.221766,0,12,1,345.024,44.55635,0,0,210.3777,599.958,1,0,0,35,3,4,74.36826,13.73189,0,,224,398,1,0,1.386294,5.986452,0,3.258096,6.79794,0,0,0,81.70934,8.840877,1.386294,6.39686,1 +7,1,25,1,2,129106,0,6910.05,9.221766,0,12,1,289.1566,50.91457,0,0,0,340.0712,0,0,0,46,0,4,74.36826,13.73189,0,,224,398,1,0,1.386294,5.986452,0,3.258096,6.79794,0,0,0,81.70934,8.840877,1.386294,5.829155,1 +7,1,25,1,3,129106,0,6910.05,10.22177,0,12,1,253.4414,20.40898,4.912718,0,0,278.7631,0,0,0,31,0,4,74.36826,13.73189,0,,224,398,1,0,1.386294,5.986452,0,3.258096,6.79794,0,0,0,81.70934,8.840877,1.386294,5.630363,1 +5,1,25,0,1,129128,0,9542.002,54.53799,1,13,1,79.13669,172.6859,0,0,0,251.8225,0,0,0,13,0,1,53.8,13.73189,1,,278,278,0,0,0,5.627621,0,3.258096,7.013916,0,0,0,71.19215,9.163564,0,5.528725,1 +11,1,0,1,1,129131,0,7450.372,20.3039,0,11,1,5.353956,0,0,0,0,5.353956,0,0,0,1,0,3,61.1,8.7,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,68.49515,8.916154,1.098612,1.677836,1 +11,1,0,1,2,129131,0,7450.372,21.3039,0,11,1,22.86336,.7185629,0,0,0,23.58193,0,0,0,2,0,3,61.1,8.7,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,68.49515,8.916154,1.098612,3.16048,1 +11,1,0,1,3,129131,0,7450.372,22.3039,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,61.1,8.7,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,68.49515,8.916154,1.098612,,0 +11,1,0,1,1,129132,0,7450.372,45.63723,0,8,1,6.543724,3.926234,0,0,0,10.46996,0,0,0,1,0,3,62.1,13,0,,0,0,0,0,1.098612,0,0,0,0,0,1,0,55.14676,8.916154,1.098612,2.34851,1 +11,1,0,1,2,129132,0,7450.372,46.63723,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,62.1,13,0,,0,0,0,0,1.098612,0,0,0,0,0,1,0,55.14676,8.916154,1.098612,,0 +11,1,0,1,3,129132,0,7450.372,47.63723,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,62.1,13,0,,0,0,0,0,1.098612,0,0,0,0,0,1,0,55.14676,8.916154,1.098612,,0 +11,1,0,1,1,129133,0,7450.372,45.59617,1,7,1,34.20583,16.38905,0,0,0,50.59488,0,0,0,1,0,3,43.2,13,0,,0,0,0,0,1.098612,0,0,0,0,0,1,0,51.12005,8.916154,1.098612,3.923851,1 +11,1,0,1,2,129133,0,7450.372,46.59617,1,7,1,5.988024,12.87969,0,0,0,18.86772,0,0,0,1,0,3,43.2,13,0,,0,0,0,0,1.098612,0,0,0,0,0,1,0,51.12005,8.916154,1.098612,2.937453,1 +11,1,0,1,3,129133,0,7450.372,47.59617,1,7,1,73.33994,22.3439,0,0,0,95.68385,0,0,0,3,0,3,43.2,13,0,,0,0,0,0,1.098612,0,0,0,0,0,1,0,51.12005,8.916154,1.098612,4.561049,1 +4,1,100,1,1,129134,0,5577.543,13.45654,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,1,0,0,0,0,0,81.31855,8.626683,1.609438,,0 +4,1,100,1,2,129134,0,5577.543,14.45654,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,1,0,0,0,0,0,81.31855,8.626683,1.609438,,0 +4,1,100,1,3,129134,0,5577.543,15.45654,0,10,1,8.478803,0,0,0,0,8.478803,0,0,0,1,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,1,0,0,0,0,0,81.31855,8.626683,1.609438,2.137569,1 +4,1,100,1,1,129135,0,5577.543,15.76728,1,10,1,8.992805,29.1247,0,0,0,38.1175,0,0,0,1,0,5,64.2,17.4,1,,0,0,1,1,1.609438,0,1,0,0,0,0,0,70.25932,8.626683,1.609438,3.640674,1 +4,1,100,1,2,129135,0,5577.543,16.76728,1,10,1,19.71523,6.369113,0,0,0,26.08434,0,0,0,3,0,5,64.2,17.4,1,,0,0,1,1,1.609438,0,1,0,0,0,0,0,70.25932,8.626683,1.609438,3.261335,1 +4,1,100,1,3,129135,0,5577.543,17.76728,1,10,1,36.90773,2.513716,0,0,0,39.42145,0,0,0,2,0,5,64.2,17.4,1,,0,0,1,1,1.609438,0,1,0,0,0,0,0,70.25932,8.626683,1.609438,3.67431,1 +4,1,100,1,1,129136,0,5577.543,10.36277,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,1,0,0,0,0,0,81.31855,8.626683,1.609438,,0 +4,1,100,1,2,129136,0,5577.543,11.36277,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,1,0,0,0,0,0,81.31855,8.626683,1.609438,,0 +4,1,100,1,3,129136,0,5577.543,12.36277,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,1,0,0,0,0,0,81.31855,8.626683,1.609438,,0 +4,1,100,1,1,129137,0,5577.543,50.59548,1,10,1,13.18945,0,0,0,0,13.18945,0,0,0,2,0,5,94.7,8.7,0,,0,0,0,0,1.609438,0,1,0,0,0,0,0,74.53511,8.626683,1.609438,2.579417,1 +4,1,100,1,2,129137,0,5577.543,51.59548,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,94.7,8.7,0,,0,0,0,0,1.609438,0,1,0,0,0,0,0,74.53511,8.626683,1.609438,,0 +4,1,100,1,3,129137,0,5577.543,52.59548,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,94.7,8.7,0,,0,0,0,0,1.609438,0,1,0,0,0,0,0,74.53511,8.626683,1.609438,,0 +4,1,100,1,1,129138,0,5577.543,49.30048,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,71.6,13,1,,0,0,0,0,1.609438,0,1,0,0,1,0,0,63.3497,8.626683,1.609438,,0 +4,1,100,1,2,129138,0,5577.543,50.30048,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,71.6,13,1,,0,0,0,0,1.609438,0,1,0,0,1,0,0,63.3497,8.626683,1.609438,,0 +4,1,100,1,3,129138,0,5577.543,51.30048,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,71.6,13,1,,0,0,0,0,1.609438,0,1,0,0,1,0,0,63.3497,8.626683,1.609438,,0 +2,1,100,0,1,129147,0,5788.461,24.89254,0,12,1,4.196643,3.477218,0,0,0,7.673861,0,0,0,0,1,1,88.8,13.73189,0,,261,261,0,0,0,5.56452,1,0,0,1,0,0,68.8223,8.663795,0,2.03782,1 +2,1,100,0,2,129147,0,5788.461,25.89254,0,12,1,218.5104,13.15991,0,0,1205.619,1437.289,1,0,0,13,0,1,88.8,13.73189,0,,261,261,0,0,0,5.56452,1,0,0,1,0,0,68.8223,8.663795,0,7.270514,1 +2,1,100,0,3,129147,0,5788.461,26.89254,0,12,1,80.54863,3.261845,0,0,0,83.81047,0,0,0,6,0,1,88.8,13.73189,0,,261,261,0,0,0,5.56452,1,0,0,1,0,0,68.8223,8.663795,0,4.428558,1 +2,1,100,0,4,129147,0,5788.461,27.89254,0,12,1,5.532504,0,0,0,0,5.532504,0,0,0,1,0,1,88.8,13.73189,0,,261,261,0,0,0,5.56452,1,0,0,1,0,0,68.8223,8.663795,0,1.71064,1 +2,1,100,0,5,129147,0,5788.461,28.89254,0,12,1,39.35675,3.385527,0,0,0,42.74228,0,0,0,4,1,1,88.8,13.73189,0,,261,261,0,0,0,5.56452,1,0,0,1,0,0,68.8223,8.663795,0,3.755188,1 +11,1,0,0,1,129179,0,3657.568,60.11225,1,12,1,48.29211,66.19553,46.77267,35.33569,0,161.2603,0,0,4,3,1,1,53.7,39.1,1,,0,259,0,0,0,5.556828,0,0,0,1,0,0,71.72364,8.204827,0,5.08302,1 +11,1,0,0,2,129179,0,3657.568,61.11225,1,12,1,71.15903,95.90836,0,32.34501,0,167.0674,0,0,4,7,0,1,53.7,39.1,1,,0,259,0,0,0,5.556828,0,0,0,1,0,0,71.72364,8.204827,0,5.118397,1 +11,1,0,0,3,129179,0,3657.568,62.11225,1,12,1,95.8231,102.113,38,44.22604,0,235.9361,0,0,6,10,2,1,53.7,39.1,1,,0,259,0,0,0,5.556828,0,0,0,1,0,0,71.72364,8.204827,0,5.463561,1 +2,1,100,1,1,129203,1,5182.125,27.6386,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,75.8,21.7,0,,149,0,0,0,.6931472,0,1,0,0,1,0,0,67.06125,8.553164,.6931472,,0 +2,1,100,1,2,129203,1,5182.125,28.6386,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,75.8,21.7,0,,149,0,0,0,.6931472,0,1,0,0,1,0,0,67.06125,8.553164,.6931472,,0 +2,1,100,1,3,129203,1,5182.125,29.6386,1,16,1,0,6.359102,0,0,0,6.359102,0,0,0,0,0,2,75.8,21.7,0,,149,0,0,0,.6931472,0,1,0,0,1,0,0,67.06125,8.553164,.6931472,1.849887,1 +2,1,100,1,1,129204,1,5182.125,2.201232,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,149,0,1,1,.6931472,0,1,0,0,1,0,0,82.66727,8.553164,.6931472,,0 +2,1,100,1,2,129204,1,5182.125,3.201232,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,149,0,1,1,.6931472,0,1,0,0,1,0,0,82.66727,8.553164,.6931472,,0 +2,1,100,1,3,129204,1,5182.125,4.201232,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,149,0,1,1,.6931472,0,1,0,0,1,0,0,82.66727,8.553164,.6931472,,0 +7,1,25,0,1,129210,0,4188.585,20.94182,1,12,1,148.9988,68.49235,0,0,529.4464,746.9376,1,0,0,9,0,1,41.1,17.4,0,,600,600,0,0,0,6.39693,0,3.258096,7.783224,1,0,0,65.09395,8.340357,0,6.615982,1 +7,1,25,0,2,129210,0,4188.585,21.94182,1,12,1,171.3208,81.22372,0,0,0,252.5445,0,0,0,15,1,1,41.1,17.4,0,,600,600,0,0,0,6.39693,0,3.258096,7.783224,1,0,0,65.09395,8.340357,0,5.531588,1 +7,1,25,0,3,129210,0,4188.585,22.94182,1,12,1,211.769,46.82555,27.02703,0,756.0393,1041.661,2,0,0,19,2,1,41.1,17.4,0,,600,600,0,0,0,6.39693,0,3.258096,7.783224,1,0,0,65.09395,8.340357,0,6.948572,1 +7,1,25,0,4,129210,0,4188.585,23.94182,1,12,1,87.4886,0,.7520511,0,836.4585,924.6992,1,0,0,2,0,1,41.1,17.4,0,,600,600,0,0,0,6.39693,0,3.258096,7.783224,1,0,0,65.09395,8.340357,0,6.829468,1 +7,1,25,0,5,129210,0,4188.585,24.94182,1,12,1,75.4481,0,0,0,0,75.4481,0,0,0,3,1,2,41.1,17.4,0,,600,600,0,0,.6931472,6.39693,0,3.258096,7.783224,1,0,0,65.09395,8.340357,.6931472,4.323445,1 +7,1,25,0,1,129211,0,246.8983,23.35113,1,12,1,159.894,34.2874,0,0,0,194.1814,0,0,0,9,1,2,53.7,30.4,0,,0,0,0,0,.6931472,0,0,3.258096,0,0,1,0,55.25999,5.513019,.6931472,5.268793,1 +7,1,25,0,2,129211,0,246.8983,24.35113,1,12,1,249.0566,109.8976,0,0,0,358.9542,0,0,0,12,2,2,53.7,30.4,0,,0,0,0,0,.6931472,0,0,3.258096,0,0,1,0,55.25999,5.513019,.6931472,5.883195,1 +7,1,25,0,3,129211,0,246.8983,25.35113,1,12,1,188.5012,94.82555,0,0,0,283.3268,0,0,0,9,2,2,53.7,30.4,0,,0,0,0,0,.6931472,0,0,3.258096,0,0,1,0,55.25999,5.513019,.6931472,5.646601,1 +7,1,25,0,4,129211,0,246.8983,26.35113,1,12,1,368.7329,112.1422,0,0,1234.48,1715.355,1,0,0,8,1,2,53.7,30.4,0,,0,0,0,0,.6931472,0,0,3.258096,0,0,1,0,55.25999,5.513019,.6931472,7.447376,1 +7,1,25,0,5,129211,0,246.8983,27.35113,1,12,1,306.1693,209.7541,0,449.1455,0,515.9233,0,0,24,12,0,3,53.7,30.4,0,,0,0,0,0,1.098612,0,0,3.258096,0,0,1,0,55.25999,5.513019,1.098612,6.245958,1 +7,1,25,0,1,129212,0,246.8983,4.741958,0,12,1,45.78917,1.914016,0,0,0,47.70318,0,0,0,2,1,2,74.36826,13.73189,0,,0,0,1,0,.6931472,0,0,3.258096,0,1,0,0,72.59683,5.513019,.6931472,3.864998,1 +7,1,25,0,2,129212,0,246.8983,5.741958,0,12,1,6.469003,1.886792,0,0,0,8.355795,0,0,0,1,0,2,74.36826,13.73189,0,,0,0,1,0,.6931472,0,0,3.258096,0,1,0,0,72.59683,5.513019,.6931472,2.122955,1 +7,1,25,0,3,129212,0,246.8983,6.741958,0,12,1,19.16462,2.211302,0,0,0,21.37592,0,0,0,2,0,2,74.36826,13.73189,0,,0,0,1,0,.6931472,0,0,3.258096,0,1,0,0,72.59683,5.513019,.6931472,3.062265,1 +7,1,25,0,4,129212,0,246.8983,7.741958,0,12,1,16.86418,5.350957,0,0,0,22.21513,0,0,0,1,1,2,74.36826,13.73189,0,,0,0,1,0,.6931472,0,0,3.258096,0,1,0,0,72.59683,5.513019,.6931472,3.100774,1 +7,1,25,0,5,129212,0,246.8983,8.741958,0,12,1,61.69237,0,0,151.1046,0,61.69237,0,0,9,2,1,3,74.36826,13.73189,0,,0,0,1,0,1.098612,0,0,3.258096,0,1,0,0,72.59683,5.513019,1.098612,4.12216,1 +7,1,25,0,1,129214,0,945.2643,19.68515,1,12,1,21.20141,27.88575,0,0,0,49.08716,0,0,0,2,0,1,58.9,8.7,0,,0,0,0,0,0,0,0,3.258096,0,1,0,0,62.32022,6.852522,0,3.893598,1 +7,1,25,0,2,129214,0,945.2643,20.68515,1,12,1,29.6496,0,31.69811,0,0,61.34771,0,0,0,2,0,1,58.9,8.7,0,,0,0,0,0,0,0,0,3.258096,0,1,0,0,62.32022,6.852522,0,4.116558,1 +7,1,25,0,3,129214,0,945.2643,21.68515,1,12,1,73.21867,24.15725,0,0,0,97.37592,0,0,0,5,0,1,58.9,8.7,0,,0,0,0,0,0,0,0,3.258096,0,1,0,0,62.32022,6.852522,0,4.578579,1 +7,1,25,0,4,129214,0,945.2643,22.68515,1,12,1,39.19781,18.03555,0,0,0,57.23336,0,0,0,4,0,1,58.9,8.7,0,,0,0,0,0,0,0,0,3.258096,0,1,0,0,62.32022,6.852522,0,4.047137,1 +7,1,25,0,5,129214,0,945.2643,23.68515,1,12,1,161.7341,4.114214,23.07211,0,0,188.9204,0,0,0,8,0,1,58.9,8.7,0,,0,0,0,0,0,0,0,3.258096,0,1,0,0,62.32022,6.852522,0,5.241326,1 +11,1,0,1,1,129223,0,8825.683,5.314168,0,10,1,123.6749,23.89281,0,0,0,147.5677,0,0,0,11,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,1,0,0,73.78497,9.085534,1.609438,4.994287,1 +11,1,0,1,2,129223,0,8825.683,6.314168,0,10,1,93.90836,13.64421,0,0,0,107.5526,0,0,0,2,1,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,1,0,0,73.78497,9.085534,1.609438,4.677979,1 +11,1,0,1,3,129223,0,8825.683,7.314168,0,10,1,16.21622,3.341523,0,0,0,19.55774,0,0,0,3,0,5,74.36826,13.73189,0,,0,0,1,0,1.609438,0,0,0,0,1,0,0,73.78497,9.085534,1.609438,2.973371,1 +11,1,0,1,1,129224,0,8825.683,6.707735,1,10,1,18.25677,15.10601,0,0,0,33.36278,0,0,0,3,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,1,0,0,76.70262,9.085534,1.609438,3.507441,1 +11,1,0,1,2,129224,0,8825.683,7.707735,1,10,1,53.18059,2.070081,0,0,0,55.25068,0,0,0,2,2,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,1,0,0,76.70262,9.085534,1.609438,4.01188,1 +11,1,0,1,3,129224,0,8825.683,8.707734,1,10,1,38.82064,5.380836,0,0,0,44.20147,0,0,0,4,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,1,0,0,76.70262,9.085534,1.609438,3.788758,1 +11,1,0,1,1,129225,0,8825.683,8.67625,1,10,1,25.91284,9.228504,0,0,0,35.14134,0,0,0,4,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,1,0,0,76.70262,9.085534,1.609438,3.559378,1 +11,1,0,1,2,129225,0,8825.683,9.67625,1,10,1,16.17251,2.695418,0,0,0,18.86792,0,0,0,3,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,1,0,0,76.70262,9.085534,1.609438,2.937463,1 +11,1,0,1,3,129225,0,8825.683,10.67625,1,10,1,42.26044,3.439803,0,0,0,45.70024,0,0,0,4,0,5,74.36826,13.73189,0,,0,0,1,1,1.609438,0,0,0,0,1,0,0,76.70262,9.085534,1.609438,3.822104,1 +11,1,0,1,1,129226,0,8825.683,24.72553,1,10,1,582.2438,26.8139,0,0,0,609.0577,0,0,0,13,0,5,76.8,26.1,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,69.42252,9.085534,1.609438,6.411913,1 +11,1,0,1,2,129226,0,8825.683,25.72553,1,10,1,221.1429,28.06469,22.2372,0,1094.771,1366.216,1,0,0,14,1,5,76.8,26.1,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,69.42252,9.085534,1.609438,7.2198,1 +11,1,0,1,3,129226,0,8825.683,26.72553,1,10,1,27.02703,9.68059,0,0,0,36.70761,0,0,0,2,0,5,76.8,26.1,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,69.42252,9.085534,1.609438,3.602984,1 +11,1,0,1,1,129227,0,8825.683,29.88912,0,10,1,122.4971,38.404,0,0,0,160.9011,0,0,0,10,0,5,86.3,13,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,63.37903,9.085534,1.609438,5.08079,1 +11,1,0,1,2,129227,0,8825.683,30.88912,0,10,1,101.8868,13.16981,0,0,0,115.0566,0,0,0,4,0,5,86.3,13,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,63.37903,9.085534,1.609438,4.745424,1 +11,1,0,1,3,129227,0,8825.683,31.88912,0,10,1,36.85504,12.35872,0,0,0,49.21376,0,0,0,3,0,5,86.3,13,0,,0,0,0,0,1.609438,0,0,0,0,1,0,0,63.37903,9.085534,1.609438,3.896173,1 +8,1,50,0,1,129232,0,1,19.39767,0,6,1,6.031363,0,33.1725,0,0,39.20386,0,0,0,0,1,2,83.8,13.73189,0,,83,0,0,0,.6931472,0,0,3.931826,5.111988,0,0,0,71.22549,.6931472,.6931472,3.668775,1 +8,1,50,0,2,129232,0,1,20.39767,0,6,1,0,0,0,0,0,0,0,0,0,0,0,2,83.8,13.73189,0,,83,0,0,0,.6931472,0,0,3.931826,5.111988,0,0,0,71.22549,.6931472,.6931472,,0 +8,1,50,0,3,129232,0,1,21.39767,0,6,1,0,0,0,0,0,0,0,0,0,0,0,2,83.8,13.73189,0,,83,0,0,0,.6931472,0,0,3.931826,5.111988,0,0,0,71.22549,.6931472,.6931472,,0 +8,1,50,0,1,129233,0,1,19.07461,1,12,1,65.24728,1.960193,0,0,0,67.20748,0,0,0,3,0,2,97.5,13.73189,0,,83,0,0,0,.6931472,0,0,3.931826,5.111988,0,0,0,75.26614,.6931472,.6931472,4.207785,1 +8,1,50,0,2,129233,0,1,20.07461,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,97.5,13.73189,0,,83,0,0,0,.6931472,0,0,3.931826,5.111988,0,0,0,75.26614,.6931472,.6931472,,0 +8,1,50,0,3,129233,0,1,21.07461,1,12,1,150.9292,26.25816,0,0,457.1371,634.3245,1,0,0,6,1,2,97.5,13.73189,0,,83,0,0,0,.6931472,0,0,3.931826,5.111988,0,0,0,75.26614,.6931472,.6931472,6.45256,1 +8,1,50,0,4,129233,0,1,22.07461,1,12,1,67.79787,12.23922,0,0,0,80.03709,0,0,0,8,0,1,97.5,13.73189,0,,83,0,0,0,0,0,0,3.931826,5.111988,0,0,0,75.26614,.6931472,0,4.38249,1 +8,1,50,0,5,129233,0,1,23.07461,1,12,1,143.3433,19.77882,0,37.2182,1318.609,1481.731,1,0,2,17,0,1,97.5,13.73189,0,,83,0,0,0,0,0,0,3.931826,5.111988,0,0,0,75.26614,.6931472,0,7.300966,1 +6,1,25,1,1,129245,0,5303.97,23.75633,1,14,1,0,49.74668,7.237636,0,1212.581,1269.566,1,0,0,0,0,2,93.7,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,79.52284,8.5764,.6931472,7.14643,1 +6,1,25,1,2,129245,0,5303.97,24.75633,1,14,1,26.43172,19.10793,18.99229,0,0,64.53194,0,0,0,2,1,3,93.7,8.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,79.52284,8.5764,1.098612,4.16716,1 +6,1,25,1,3,129245,0,5303.97,25.75633,1,14,1,22.60171,3.360121,28.34254,0,0,54.30437,0,0,0,1,1,3,93.7,8.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,79.52284,8.5764,1.098612,3.994605,1 +6,1,25,1,4,129245,0,5303.97,26.75633,1,14,1,28.28002,53.84794,0,0,0,82.12795,0,0,0,2,1,3,93.7,8.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,79.52284,8.5764,1.098612,4.408278,1 +6,1,25,1,5,129245,0,5303.97,27.75633,1,14,1,30.62527,49.87239,0,0,0,80.49766,0,0,0,3,0,3,93.7,8.7,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,79.52284,8.5764,1.098612,4.388228,1 +6,1,25,1,1,129246,0,5303.97,24.59411,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,89.5,0,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,78.37115,8.5764,.6931472,,0 +6,1,25,1,2,129246,0,5303.97,25.59411,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,89.5,0,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.37115,8.5764,1.098612,,0 +6,1,25,1,3,129246,0,5303.97,26.59411,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,89.5,0,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.37115,8.5764,1.098612,,0 +6,1,25,1,4,129246,0,5303.97,27.59411,0,12,1,7.881317,0,0,0,0,7.881317,0,0,0,1,0,3,89.5,0,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.37115,8.5764,1.098612,2.064495,1 +6,1,25,1,5,129246,0,5303.97,28.59411,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,89.5,0,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.37115,8.5764,1.098612,,0 +11,1,0,1,1,129252,1,1004.963,3.156742,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,0,1,0,77.77277,6.9137,1.098612,,0 +11,1,0,1,2,129252,1,1004.963,4.156742,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,1,0,77.77277,6.9137,1.386294,,0 +11,1,0,1,3,129252,1,1004.963,5.156742,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,1,0,77.77277,6.9137,1.386294,,0 +11,1,0,1,1,129253,1,1004.963,25.50582,1,12,1,0,0,0,0,0,0,1,1,0,0,0,3,76.8,26.1,0,,0,0,0,0,1.098612,0,0,0,0,0,1,0,63.3701,6.9137,1.098612,,0 +11,1,0,1,2,129253,1,1004.963,26.50582,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.8,26.1,0,,0,0,0,0,1.386294,0,0,0,0,0,1,0,63.3701,6.9137,1.386294,,0 +11,1,0,1,3,129253,1,1004.963,27.50582,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.8,26.1,0,,0,0,0,0,1.386294,0,0,0,0,0,1,0,63.3701,6.9137,1.386294,,0 +11,1,0,1,1,129254,1,1004.963,1.683778,1,12,1,4.796163,0,0,0,0,4.796163,0,0,0,0,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,0,1,0,77.77277,6.9137,1.098612,1.567816,1 +11,1,0,1,2,129254,1,1004.963,2.683778,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,1,0,77.77277,6.9137,1.386294,,0 +11,1,0,1,3,129254,1,1004.963,3.683778,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,1,0,77.77277,6.9137,1.386294,,0 +11,1,0,1,1,129255,0,6108.39,21.74675,0,12,1,14.98801,0,32.94365,0,0,47.93166,0,0,0,1,0,2,80,4.3,0,,0,146,0,0,.6931472,4.983607,0,0,0,0,0,0,71.70338,8.717582,.6931472,3.869776,1 +11,1,0,1,2,129255,0,6108.39,22.74675,0,12,1,46.00219,1.09529,0,0,0,47.09748,0,0,0,6,0,2,80,4.3,0,,0,146,0,0,.6931472,4.983607,0,0,0,0,0,0,71.70338,8.717582,.6931472,3.85222,1 +11,1,0,1,3,129255,0,6108.39,23.74675,0,12,1,19.45137,.9975063,0,0,0,20.44888,0,0,0,2,0,3,80,4.3,0,,0,146,0,0,1.098612,4.983607,0,0,0,0,0,0,71.70338,8.717582,1.098612,3.017928,1 +11,1,0,1,1,129256,0,6108.39,20.68446,1,12,1,167.6859,0,0,0,0,167.6859,0,0,0,9,0,2,73.7,8.7,0,,0,146,0,0,.6931472,4.983607,0,0,0,0,0,0,72.59457,8.717582,.6931472,5.122092,1 +11,1,0,1,2,129256,0,6108.39,21.68446,1,12,1,34.50164,4.107338,31.47317,0,828.5597,898.6418,1,0,0,3,0,2,73.7,8.7,0,,0,146,0,0,.6931472,4.983607,0,0,0,0,0,0,72.59457,8.717582,.6931472,6.800885,1 +11,1,0,1,3,129256,0,6108.39,22.68446,1,12,1,24.93766,0,0,0,0,24.93766,0,0,0,3,0,3,73.7,8.7,0,,0,146,0,0,1.098612,4.983607,0,0,0,0,0,0,72.59457,8.717582,1.098612,3.216379,1 +11,1,0,1,1,129270,0,12332.6,35.96714,1,12,1,59.95204,18.57914,19.76019,0,646.7866,745.0779,1,0,0,5,1,5,77.9,8.7,0,,0,195.84,0,0,1.609438,5.277298,0,0,0,1,0,0,69.12635,9.420083,1.609438,6.613489,1 +11,1,0,1,2,129270,0,12332.6,36.96714,1,12,1,20.04381,10.02191,0,0,0,30.06572,0,0,0,2,1,5,77.9,8.7,0,,0,195.84,0,0,1.609438,5.277298,0,0,0,1,0,0,69.12635,9.420083,1.609438,3.403386,1 +11,1,0,1,3,129270,0,12332.6,37.96714,1,12,1,30.52369,6.80798,0,0,0,37.33167,0,0,0,3,0,5,77.9,8.7,0,,0,195.84,0,0,1.609438,5.277298,0,0,0,1,0,0,69.12635,9.420083,1.609438,3.619842,1 +11,1,0,0,1,129271,0,12332.6,15.54825,0,12,1,27.81775,15.25779,30.54556,14.98801,1601.679,1675.3,1,0,1,2,1,5,74.36826,13.73189,.12982,,0,195.84,1,0,1.609438,5.277298,0,0,0,0,0,0,76.5796,9.420083,1.609438,7.423748,1 +11,1,0,0,2,129271,0,12332.6,16.54825,0,12,1,74.56188,15.03286,2.601314,13.69113,0,92.19606,0,0,1,6,0,5,74.36826,13.73189,.12982,,0,195.84,1,0,1.609438,5.277298,0,0,0,0,0,0,76.5796,9.420083,1.609438,4.523917,1 +11,1,0,0,3,129271,0,12332.6,17.54825,0,12,1,10.17456,6.932668,0,0,0,17.10723,0,0,0,2,0,5,74.36826,13.73189,.12982,,0,195.84,1,0,1.609438,5.277298,0,0,0,0,0,0,76.5796,9.420083,1.609438,2.839501,1 +11,1,0,1,1,129272,0,12332.6,12.54757,1,12,1,95.80336,3.776978,21.7506,0,0,121.3309,0,0,0,3,1,5,74.36826,13.73189,0,,0,195.84,1,1,1.609438,5.277298,0,0,0,0,0,0,84.30681,9.420083,1.609438,4.798522,1 +11,1,0,1,2,129272,0,12332.6,13.54757,1,12,1,28.03943,0,19.59474,0,0,47.63417,0,0,0,2,1,5,74.36826,13.73189,0,,0,195.84,1,1,1.609438,5.277298,0,0,0,0,0,0,84.30681,9.420083,1.609438,3.86355,1 +11,1,0,1,3,129272,0,12332.6,14.54757,1,12,1,59.75062,1.995013,10.97257,0,0,72.7182,0,0,0,4,1,5,74.36826,13.73189,0,,0,195.84,1,1,1.609438,5.277298,0,0,0,0,0,0,84.30681,9.420083,1.609438,4.286592,1 +11,1,0,1,1,129273,0,12332.6,9.667351,1,12,1,42.20623,5.845324,14.64628,0,0,62.69784,0,0,0,3,1,5,74.36826,13.73189,0,,0,195.84,1,1,1.609438,5.277298,0,0,0,0,0,0,85.26604,9.420083,1.609438,4.138327,1 +11,1,0,1,2,129273,0,12332.6,10.66735,1,12,1,54.70975,10.21358,9.364732,0,0,74.28806,0,0,0,5,1,5,74.36826,13.73189,0,,0,195.84,1,1,1.609438,5.277298,0,0,0,0,0,0,85.26604,9.420083,1.609438,4.30795,1 +11,1,0,1,3,129273,0,12332.6,11.66735,1,12,1,37.30673,3.915212,21.10225,0,0,62.32419,0,0,0,4,1,5,74.36826,13.73189,0,,0,195.84,1,1,1.609438,5.277298,0,0,0,0,0,0,85.26604,9.420083,1.609438,4.132349,1 +11,1,0,1,1,129274,0,12332.6,37.24846,0,13,1,127.0983,42.68585,30.04796,0,0,199.8321,0,0,0,8,2,5,69.5,21.7,0,,0,195.84,0,0,1.609438,5.277298,0,0,0,0,0,0,78.98214,9.420083,1.609438,5.297478,1 +11,1,0,1,2,129274,0,12332.6,38.24846,0,13,1,219.7152,63.19825,0,0,162.8149,445.7284,1,0,0,10,1,5,69.5,21.7,0,,0,195.84,0,0,1.609438,5.277298,0,0,0,0,0,0,78.98214,9.420083,1.609438,6.09971,1 +11,1,0,1,3,129274,0,12332.6,39.24846,0,13,1,74.71322,97.00748,24.5187,0,366.5636,562.803,1,0,0,10,1,5,69.5,21.7,0,,0,195.84,0,0,1.609438,5.277298,0,0,0,0,0,0,78.98214,9.420083,1.609438,6.33293,1 +8,1,50,1,1,129300,1,7050.248,8.64887,1,16,1,9.592326,0,0,0,0,9.592326,0,0,0,0,1,2,74.36826,13.73189,0,,399,399,1,1,.6931472,5.988961,0,3.931826,6.682108,1,0,0,87.67074,8.86096,.6931472,2.260963,1 +8,1,50,1,2,129300,1,7050.248,9.64887,1,16,1,20.28477,0,20.78313,0,0,41.06791,0,0,0,1,1,2,74.36826,13.73189,0,,399,399,1,1,.6931472,5.988961,0,3.931826,6.682108,1,0,0,87.67074,8.86096,.6931472,3.715227,1 +8,1,50,1,3,129300,1,7050.248,10.64887,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,399,399,1,1,.6931472,5.988961,0,3.931826,6.682108,1,0,0,87.67074,8.86096,.6931472,,0 +8,1,50,1,4,129300,1,7050.248,11.64887,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,74.36826,13.73189,0,,399,399,1,1,.6931472,5.988961,0,3.931826,6.682108,1,0,0,87.67074,8.86096,.6931472,,0 +8,1,50,1,5,129300,1,7050.248,12.64887,1,16,1,26.66102,0,0,0,0,26.66102,0,0,0,1,0,2,74.36826,13.73189,0,,399,399,1,1,.6931472,5.988961,0,3.931826,6.682108,1,0,0,87.67074,8.86096,.6931472,3.283203,1 +8,1,50,1,1,129301,1,7050.248,24.47912,1,16,1,113.783,12.94964,0,0,0,126.7326,0,0,0,7,1,2,73.7,8.7,0,,399,399,0,0,.6931472,5.988961,0,3.931826,6.682108,1,0,0,69.04362,8.86096,.6931472,4.84208,1 +8,1,50,1,2,129301,1,7050.248,25.47912,1,16,1,280.8488,24.04162,.5476452,0,0,305.4381,0,0,0,10,3,2,73.7,8.7,0,,399,399,0,0,.6931472,5.988961,0,3.931826,6.682108,1,0,0,69.04362,8.86096,.6931472,5.721747,1 +8,1,50,1,3,129301,1,7050.248,26.47912,1,16,1,97.75561,21.98005,0,0,0,119.7357,0,0,0,4,0,2,73.7,8.7,0,,399,399,0,0,.6931472,5.988961,0,3.931826,6.682108,1,0,0,69.04362,8.86096,.6931472,4.785286,1 +8,1,50,1,4,129301,1,7050.248,27.47912,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,73.7,8.7,0,,399,399,0,0,.6931472,5.988961,0,3.931826,6.682108,1,0,0,69.04362,8.86096,.6931472,,0 +8,1,50,1,5,129301,1,7050.248,28.47912,1,16,1,37.2408,0,0,0,0,37.2408,0,0,0,1,0,2,73.7,8.7,0,,399,399,0,0,.6931472,5.988961,0,3.931826,6.682108,1,0,0,69.04362,8.86096,.6931472,3.617405,1 +9,1,50,0,1,129302,0,4777.916,1.330595,1,12,1,90.47044,12.8468,0,0,594.7527,698.0699,1,0,0,9,0,4,74.36826,13.73189,0,,970,0,1,1,1.386294,0,0,3.931826,7.570443,0,0,0,79.16405,8.471969,1.386294,6.548319,1 +9,1,50,0,2,129302,0,4777.916,2.330595,1,12,1,66.35462,8.001101,0,0,0,74.35573,0,0,0,1,7,4,74.36826,13.73189,0,,970,0,1,1,1.386294,0,0,3.931826,7.570443,0,0,0,79.16405,8.471969,1.386294,4.308861,1 +9,1,50,0,3,129302,0,4777.916,3.330595,1,12,1,208.9402,0,0,0,0,208.9402,0,0,0,2,0,4,74.36826,13.73189,0,,970,0,1,1,1.386294,0,0,3.931826,7.570443,0,0,0,79.16405,8.471969,1.386294,5.342048,1 +9,1,50,0,4,129302,0,4777.916,4.330595,1,12,1,44.04265,0,0,0,0,44.04265,0,0,0,4,0,4,74.36826,13.73189,0,,970,0,1,1,1.386294,0,0,3.931826,7.570443,0,0,0,79.16405,8.471969,1.386294,3.785159,1 +9,1,50,0,5,129302,0,4777.916,5.330595,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,970,0,1,1,1.386294,0,0,3.931826,7.570443,0,0,0,79.16405,8.471969,1.386294,,0 +9,1,50,0,1,129303,0,4777.916,28.73922,0,13,1,5.428227,0,0,0,0,5.428227,0,0,0,1,0,4,80,13.73189,0,,970,0,0,0,1.386294,0,0,3.931826,7.570443,0,0,0,78.1277,8.471969,1.386294,1.691613,1 +9,1,50,0,2,129303,0,4777.916,29.73922,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,80,13.73189,0,,970,0,0,0,1.386294,0,0,3.931826,7.570443,0,0,0,78.1277,8.471969,1.386294,,0 +9,1,50,0,3,129303,0,4777.916,30.73922,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,80,13.73189,0,,970,0,0,0,1.386294,0,0,3.931826,7.570443,0,0,0,78.1277,8.471969,1.386294,,0 +9,1,50,0,4,129303,0,4777.916,31.73922,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,80,13.73189,0,,970,0,0,0,1.386294,0,0,3.931826,7.570443,0,0,0,78.1277,8.471969,1.386294,,0 +9,1,50,0,5,129303,0,4777.916,32.73922,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,80,13.73189,0,,970,0,0,0,1.386294,0,0,3.931826,7.570443,0,0,0,78.1277,8.471969,1.386294,,0 +9,1,50,0,1,129304,0,4777.916,25.1718,1,12,1,105.5489,0,0,0,0,105.5489,0,0,0,8,0,4,57.5,13.73189,0,,970,0,0,0,1.386294,0,0,3.931826,7.570443,1,0,0,72.25999,8.471969,1.386294,4.659174,1 +9,1,50,0,2,129304,0,4777.916,26.1718,1,12,1,31.38766,5.286344,0,0,0,36.67401,0,0,0,5,0,4,57.5,13.73189,0,,970,0,0,0,1.386294,0,0,3.931826,7.570443,1,0,0,72.25999,8.471969,1.386294,3.602068,1 +9,1,50,0,3,129304,0,4777.916,27.1718,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,57.5,13.73189,0,,970,0,0,0,1.386294,0,0,3.931826,7.570443,1,0,0,72.25999,8.471969,1.386294,,0 +9,1,50,0,4,129304,0,4777.916,28.1718,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,57.5,13.73189,0,,970,0,0,0,1.386294,0,0,3.931826,7.570443,1,0,0,72.25999,8.471969,1.386294,,0 +9,1,50,0,5,129304,0,4777.916,29.1718,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,57.5,13.73189,0,,970,0,0,0,1.386294,0,0,3.931826,7.570443,1,0,0,72.25999,8.471969,1.386294,,0 +9,1,50,0,1,129305,0,4777.916,4.134155,1,12,1,22.91918,2.237636,0,0,0,25.15681,0,0,0,3,0,4,74.36826,13.73189,0,,970,0,1,1,1.386294,0,0,3.931826,7.570443,0,0,0,79.16405,8.471969,1.386294,3.225129,1 +9,1,50,0,2,129305,0,4777.916,5.134155,1,12,1,12.6652,0,0,0,0,12.6652,0,0,0,1,2,4,74.36826,13.73189,0,,970,0,1,1,1.386294,0,0,3.931826,7.570443,0,0,0,79.16405,8.471969,1.386294,2.538858,1 +9,1,50,0,3,129305,0,4777.916,6.134155,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,970,0,1,1,1.386294,0,0,3.931826,7.570443,0,0,0,79.16405,8.471969,1.386294,,0 +9,1,50,0,4,129305,0,4777.916,7.134155,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,970,0,1,1,1.386294,0,0,3.931826,7.570443,0,0,0,79.16405,8.471969,1.386294,,0 +9,1,50,0,5,129305,0,4777.916,8.134154,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,970,0,1,1,1.386294,0,0,3.931826,7.570443,0,0,0,79.16405,8.471969,1.386294,,0 +7,1,25,0,1,129306,0,4133.375,26.90212,1,12,1,61.83746,86.71967,0,0,0,148.5571,0,0,0,9,0,1,72.6,13,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,71.01371,8.327091,0,5.000969,1 +7,1,25,0,2,129306,0,4133.375,27.90212,1,12,1,26.95418,83.71967,22.53369,0,0,133.2076,0,0,0,4,0,1,72.6,13,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,71.01371,8.327091,0,4.891909,1 +7,1,25,0,3,129306,0,4133.375,28.90212,1,12,1,68.30466,41.7199,0,0,0,110.0246,0,0,0,8,0,1,72.6,13,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,71.01371,8.327091,0,4.700704,1 +11,1,0,0,1,129307,1,1,21.62081,0,13,1,15.07841,1.718938,0,0,0,16.79735,0,0,0,1,0,2,81.3,13.73189,0,,0,0,0,0,.6931472,0,0,0,0,0,1,0,71.36481,.6931472,.6931472,2.821221,1 +11,1,0,0,2,129307,1,1,22.62081,0,13,1,63.32599,0,0,0,0,63.32599,0,0,0,3,0,3,81.3,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,1,0,71.36481,.6931472,1.098612,4.148296,1 +11,1,0,0,3,129307,1,1,23.62081,0,13,1,51.7328,0,33.06881,0,0,84.80161,0,0,0,4,2,3,81.3,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,1,0,71.36481,.6931472,1.098612,4.440314,1 +11,1,0,0,1,129308,1,1,21.13895,1,14,1,0,0,0,0,0,0,1,1,0,0,0,2,96.3,13.73189,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,64.04893,.6931472,.6931472,,0 +11,1,0,0,2,129308,1,1,22.13895,1,14,1,9.911894,0,35.10463,0,0,45.01652,0,0,0,0,1,3,96.3,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,64.04893,.6931472,1.098612,3.807029,1 +11,1,0,0,3,129308,1,1,23.13895,1,14,1,82.37067,0,0,0,0,82.37067,0,0,0,7,0,3,96.3,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,64.04893,.6931472,1.098612,4.41123,1 +1,1,0,0,1,129310,0,9542.002,21.45106,1,12,1,40.04712,15.63604,17.85041,0,0,73.53357,0,0,0,3,1,2,76.8,13,0,,300,649,0,0,.6931472,6.475433,1,0,0,0,0,0,78.30641,9.163564,.6931472,4.297742,1 +1,1,0,0,2,129310,0,9542.002,22.45106,1,12,1,53.90836,37.7089,0,0,0,91.61725,0,0,0,6,0,2,76.8,13,0,,300,649,0,0,.6931472,6.475433,1,0,0,0,0,0,78.30641,9.163564,.6931472,4.51762,1 +1,1,0,0,3,129310,0,9542.002,23.45106,1,12,1,38.82064,15.87224,0,0,0,54.69287,0,0,0,3,1,2,76.8,13,0,,300,649,0,0,.6931472,6.475433,1,0,0,0,0,0,78.30641,9.163564,.6931472,4.001733,1 +1,1,0,0,1,129311,0,9542.002,24.15058,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,74.7,0,0,,300,649,0,0,.6931472,6.475433,1,0,0,0,0,0,77.41523,9.163564,.6931472,,0 +1,1,0,0,2,129311,0,9542.002,25.15058,0,12,1,353.3154,19.86523,0,0,0,373.1806,0,0,0,9,0,2,74.7,0,0,,300,649,0,0,.6931472,6.475433,1,0,0,0,0,0,77.41523,9.163564,.6931472,5.922062,1 +1,1,0,0,3,129311,0,9542.002,26.15058,0,12,1,3.685504,2.653563,0,0,0,6.339067,0,0,0,0,0,2,74.7,0,0,,300,649,0,0,.6931472,6.475433,1,0,0,0,0,0,77.41523,9.163564,.6931472,1.846732,1 +11,1,0,1,1,129314,0,9542.002,.9390828,0,12,1,97.46761,27.73852,0,0,0,125.2061,0,0,0,5,7,2,74.36826,13.73189,0,,0,0,1,0,.6931472,0,0,0,0,0,0,0,81.70645,9.163564,.6931472,4.829961,1 +11,1,0,1,2,129314,0,9542.002,1.939083,0,12,1,73.31536,34.93261,0,0,0,108.248,0,0,0,12,0,2,74.36826,13.73189,0,,0,0,1,0,.6931472,0,0,0,0,0,0,0,81.70645,9.163564,.6931472,4.684425,1 +11,1,0,1,3,129314,0,9542.002,2.939083,0,12,1,282.5061,58.91892,0,0,0,341.425,0,0,0,44,1,2,74.36826,13.73189,0,,0,0,1,0,.6931472,0,0,0,0,0,0,0,81.70645,9.163564,.6931472,5.833128,1 +11,1,0,1,4,129314,0,9542.002,3.939083,0,12,1,292.753,91.9918,0,0,835.6199,1220.365,1,0,0,56,0,3,74.36826,13.73189,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,81.70645,9.163564,1.098612,7.106905,1 +11,1,0,1,5,129314,0,9542.002,4.939083,0,12,1,244.8729,115.6899,0,0,0,360.5627,0,0,0,38,0,3,74.36826,13.73189,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,81.70645,9.163564,1.098612,5.887666,1 +11,1,0,1,1,129316,0,9542.002,27.58932,1,12,1,149.5878,36.21908,0,0,0,185.8068,0,0,0,10,0,2,35.8,8.7,0,,0,0,0,0,.6931472,0,0,0,0,0,0,0,79.3485,9.163564,.6931472,5.224708,1 +11,1,0,1,2,129316,0,9542.002,28.58932,1,12,1,29.11051,26.76011,0,0,0,55.87062,0,0,0,4,0,2,35.8,8.7,0,,0,0,0,0,.6931472,0,0,0,0,0,0,0,79.3485,9.163564,.6931472,4.023039,1 +11,1,0,1,3,129316,0,9542.002,29.58932,1,12,1,33.90664,17.88206,0,0,1251.101,1302.889,1,0,0,4,0,2,35.8,8.7,0,,0,0,0,0,.6931472,0,0,0,0,0,0,0,79.3485,9.163564,.6931472,7.17234,1 +11,1,0,1,4,129316,0,9542.002,30.58932,1,12,1,15.04102,1.873291,0,0,0,16.91431,0,0,0,1,0,3,35.8,8.7,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,79.3485,9.163564,1.098612,2.82816,1 +11,1,0,1,5,129316,0,9542.002,31.58932,1,12,1,83.36807,0,16.25677,0,0,99.62485,0,0,0,3,2,3,35.8,8.7,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,79.3485,9.163564,1.098612,4.601412,1 +11,1,0,0,1,129337,0,8508.685,27.55373,0,17,1,8.833922,0,33.245,0,0,42.07891,0,0,0,0,1,3,86.3,13.73189,0,,0,60,0,0,1.098612,4.094345,0,0,0,0,0,0,78.16702,9.04896,1.098612,3.739547,1 +11,1,0,0,2,129337,0,8508.685,28.55373,0,17,1,66.84636,3.121294,0,0,0,69.96765,0,0,0,5,0,4,86.3,13.73189,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,78.16702,9.04896,1.386294,4.248033,1 +11,1,0,0,3,129337,0,8508.685,29.55373,0,17,1,9.82801,0,31.83784,0,0,41.66585,0,0,0,0,1,4,86.3,13.73189,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,78.16702,9.04896,1.386294,3.729682,1 +11,1,0,0,1,129338,0,8508.685,4.062971,1,15,1,43.58068,10.5477,24.00471,0,0,78.13309,0,0,0,7,1,3,74.36826,13.73189,0,,0,60,1,1,1.098612,4.094345,0,0,0,0,0,0,78.34785,9.04896,1.098612,4.358414,1 +11,1,0,0,2,129338,0,8508.685,5.062971,1,15,1,68.46362,11.22372,20.28032,0,0,99.96765,0,0,0,7,1,4,74.36826,13.73189,0,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,78.34785,9.04896,1.386294,4.604846,1 +11,1,0,0,3,129338,0,8508.685,6.062971,1,15,1,56.26536,18.88452,0,0,0,75.14988,0,0,0,9,0,4,74.36826,13.73189,0,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,78.34785,9.04896,1.386294,4.319485,1 +11,1,0,0,1,129339,0,8508.685,24.99658,1,15,1,84.21673,29.6172,0,0,679.0047,792.8386,1,0,0,3,0,3,87.5,13.73189,0,,0,60,0,0,1.098612,4.094345,0,0,0,0,0,0,75.85274,9.04896,1.098612,6.67562,1 +11,1,0,0,2,129339,0,8508.685,25.99658,1,15,1,187.0296,41.81671,0,0,0,228.8464,0,0,0,7,0,4,87.5,13.73189,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,75.85274,9.04896,1.386294,5.433051,1 +11,1,0,0,3,129339,0,8508.685,26.99658,1,15,1,48.40295,19.54791,31.32678,0,0,99.27764,0,0,0,4,1,4,87.5,13.73189,0,,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,75.85274,9.04896,1.386294,4.59792,1 +3,1,100,1,1,129357,0,9579.404,23.82478,0,17,1,5.035971,2.278177,0,0,0,7.314149,0,0,0,1,0,2,64.2,4.3,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,78.02597,9.167475,.6931472,1.989811,1 +3,1,100,1,2,129357,0,9579.404,24.82478,0,17,1,80.83242,16.92223,0,0,0,97.75465,0,0,0,5,0,2,64.2,4.3,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,78.02597,9.167475,.6931472,4.582461,1 +3,1,100,1,3,129357,0,9579.404,25.82478,0,17,1,22.59352,4.538653,0,0,0,27.13217,0,0,0,3,0,2,64.2,4.3,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,78.02597,9.167475,.6931472,3.30072,1 +3,1,100,1,1,129358,0,9579.404,23.46064,1,16,1,31.17506,8.303357,0,0,0,39.47842,0,0,0,3,0,2,68.4,8.7,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,77.9765,9.167475,.6931472,3.675754,1 +3,1,100,1,2,129358,0,9579.404,24.46064,1,16,1,55.42169,9.611172,0,0,0,65.03286,0,0,0,5,0,2,68.4,8.7,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,77.9765,9.167475,.6931472,4.174893,1 +3,1,100,1,3,129358,0,9579.404,25.46064,1,16,1,9.975062,10.84788,0,0,0,20.82294,0,0,0,1,0,2,68.4,8.7,0,,1000,1000,0,0,.6931472,6.907755,1,0,0,0,0,0,77.9765,9.167475,.6931472,3.036055,1 +4,1,100,0,1,129373,1,248.139,21.90554,0,11,1,23.98082,0,0,0,0,23.98082,0,0,0,1,0,1,93.7,0,0,,1000,0,0,0,0,0,1,0,0,0,0,0,71.14789,5.518011,0,3.177254,1 +4,1,100,0,2,129373,1,248.139,22.90554,0,11,1,29.02519,33.43373,0,0,0,62.45893,0,0,0,2,0,1,93.7,0,0,,1000,0,0,0,0,0,1,0,0,0,0,0,71.14789,5.518011,0,4.134509,1 +4,1,100,0,3,129373,1,248.139,23.90554,0,11,1,0,10.22444,0,0,0,10.22444,0,0,0,0,0,1,93.7,0,0,,1000,0,0,0,0,0,1,0,0,0,0,0,71.14789,5.518011,0,2.324781,1 +4,1,100,0,5,129373,1,248.139,25.90554,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,93.7,0,0,,1000,0,0,0,0,0,1,0,0,0,0,0,71.14789,5.518011,0,,0 +11,1,0,1,1,129383,0,14693.55,16.08761,0,12,1,118.9635,44.58186,36.51355,0,574.6407,774.6996,1,0,0,4,0,3,81.1,4.3,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,79.81767,9.595232,1.098612,6.652475,1 +11,1,0,1,2,129383,0,14693.55,17.08761,0,12,1,30.18868,27.22372,0,0,0,57.4124,0,0,0,5,0,3,81.1,4.3,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,79.81767,9.595232,1.098612,4.05026,1 +11,1,0,1,3,129383,0,14693.55,18.08761,0,12,1,44.22604,20.33907,28.75676,0,0,93.32187,0,0,0,3,1,3,81.1,4.3,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,79.81767,9.595232,1.098612,4.536055,1 +11,1,0,1,1,129384,0,14693.55,61.52772,0,12,1,107.1849,105.477,48.00353,0,0,260.6655,0,0,0,8,1,3,85.3,0,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,70.92638,9.595232,1.098612,5.563238,1 +11,1,0,1,2,129384,0,14693.55,62.52772,0,12,1,161.7251,29.73046,0,0,1735.822,1927.278,1,0,0,10,0,3,85.3,0,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,70.92638,9.595232,1.098612,7.563864,1 +11,1,0,1,3,129384,0,14693.55,63.52772,0,12,1,846.8452,26.43735,58.57985,0,0,931.8624,0,0,0,7,0,3,85.3,0,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,70.92638,9.595232,1.098612,6.837185,1 +11,1,0,0,1,129385,0,14693.55,47.38672,1,12,1,151.9435,206.6843,53.23322,0,1282.951,1694.812,1,0,0,13,0,3,58.9,39.1,1,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.81611,9.595232,1.098612,7.435327,1 +11,1,0,0,2,129385,0,14693.55,48.38672,1,12,1,119.3261,122.4528,0,0,0,241.779,0,0,0,10,1,3,58.9,39.1,1,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.81611,9.595232,1.098612,5.488024,1 +11,1,0,0,3,129385,0,14693.55,49.38672,1,12,1,726.0344,135.6658,37.83784,0,0,899.5381,0,0,0,11,1,3,58.9,39.1,1,,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.81611,9.595232,1.098612,6.801881,1 +5,1,25,1,1,129404,0,14198.51,50.51609,1,12,1,73.76562,0,35.93694,0,0,109.7026,0,0,0,5,0,2,90.5,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,78.70685,9.560963,.6931472,4.697773,1 +5,1,25,1,2,129404,0,14198.51,51.51609,1,12,1,77.29994,2.302667,65.84104,0,0,145.4437,0,0,0,3,0,2,90.5,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,78.70685,9.560963,.6931472,4.979789,1 +5,1,25,1,3,129404,0,14198.51,52.51609,1,12,1,33.20119,6.23885,49.27156,0,0,88.71159,0,0,0,2,2,2,90.5,8.7,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,78.70685,9.560963,.6931472,4.485391,1 +5,1,25,1,1,129405,0,14198.51,56.66256,0,21,1,154.6698,49.63117,47.59072,0,0,251.8917,0,0,0,13,0,2,87.4,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,68.89549,9.560963,.6931472,5.528999,1 +5,1,25,1,2,129405,0,14198.51,57.66256,0,21,1,201.4153,74.33315,0,0,0,275.7485,0,0,0,16,0,2,87.4,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,68.89549,9.560963,.6931472,5.619489,1 +5,1,25,1,3,129405,0,14198.51,58.66256,0,21,1,111.2488,70.43607,64.45986,0,0,246.1447,0,0,0,7,1,2,87.4,13,0,,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,68.89549,9.560963,.6931472,5.505919,1 +8,1,50,0,1,129412,0,8082.506,20.66256,0,12,1,28.17746,9.820144,0,0,0,37.9976,0,0,0,4,0,1,91.3,13.73189,0,,399,399,0,0,0,5.988961,0,3.931826,6.682108,1,0,0,67.90727,8.997581,0,3.637523,1 +8,1,50,0,2,129412,0,8082.506,21.66256,0,12,1,19.16758,5.312158,0,0,0,24.47974,0,0,0,3,0,1,91.3,13.73189,0,,399,399,0,0,0,5.988961,0,3.931826,6.682108,1,0,0,67.90727,8.997581,0,3.197846,1 +8,1,50,0,3,129412,0,8082.506,22.66256,0,12,1,12.46883,0,0,0,0,12.46883,0,0,0,0,1,1,91.3,13.73189,0,,399,399,0,0,0,5.988961,0,3.931826,6.682108,1,0,0,67.90727,8.997581,0,2.523232,1 +2,1,100,0,1,129417,0,5361.663,19.10198,1,11,1,0,1.193046,0,0,0,1.193046,0,0,0,0,0,3,63.2,13,0,,409,0,0,0,1.098612,0,1,0,0,0,0,0,74.09004,8.587215,1.098612,.1765094,1 +2,1,100,0,2,129417,0,5361.663,20.10198,1,11,1,13.69113,0,0,0,0,13.69113,0,0,0,0,0,3,63.2,13,0,,409,0,0,0,1.098612,0,1,0,0,0,0,0,74.09004,8.587215,1.098612,2.616748,1 +2,1,100,0,3,129417,0,5361.663,21.10198,1,11,1,20.82294,8.468828,0,0,879.4514,908.7432,3,0,0,0,0,3,63.2,13,0,,409,0,0,0,1.098612,0,1,0,0,0,0,0,74.09004,8.587215,1.098612,6.812063,1 +2,1,100,0,4,129417,0,5361.663,22.10198,1,11,1,49.51591,0,0,0,0,49.51591,0,0,0,1,0,4,63.2,13,0,,409,0,0,0,1.386294,0,1,0,0,0,0,0,74.09004,8.587215,1.386294,3.902294,1 +2,1,100,0,5,129417,0,5361.663,23.10198,1,11,1,19.04359,2.391028,0,0,614.2192,635.6538,1,0,0,1,1,4,63.2,13,0,,409,0,0,0,1.386294,0,1,0,0,0,0,0,74.09004,8.587215,1.386294,6.454654,1 +2,1,100,0,1,129418,0,5361.663,2.16564,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,409,0,1,1,1.098612,0,1,0,0,0,0,0,76.23925,8.587215,1.098612,,0 +2,1,100,0,2,129418,0,5361.663,3.16564,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,409,0,1,1,1.098612,0,1,0,0,0,0,0,76.23925,8.587215,1.098612,,0 +2,1,100,0,3,129418,0,5361.663,4.16564,1,11,1,6.48379,0,0,0,0,6.48379,0,0,0,1,0,3,74.36826,13.73189,0,,409,0,1,1,1.098612,0,1,0,0,0,0,0,76.23925,8.587215,1.098612,1.869305,1 +2,1,100,0,4,129418,0,5361.663,5.16564,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,409,0,1,1,1.386294,0,1,0,0,0,0,0,76.23925,8.587215,1.386294,,0 +2,1,100,0,5,129418,0,5361.663,6.16564,1,11,1,10.57977,0,0,0,0,10.57977,0,0,0,0,1,4,74.36826,13.73189,0,,409,0,1,1,1.386294,0,1,0,0,0,0,0,76.23925,8.587215,1.386294,2.358944,1 +2,1,100,0,1,129419,0,5361.663,20.16153,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,69.5,8.7,0,,409,0,0,0,1.098612,0,1,0,0,0,0,0,73.19886,8.587215,1.098612,,0 +2,1,100,0,2,129419,0,5361.663,21.16153,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,69.5,8.7,0,,409,0,0,0,1.098612,0,1,0,0,0,0,0,73.19886,8.587215,1.098612,,0 +2,1,100,0,3,129419,0,5361.663,22.16153,0,11,1,134.8379,4.528678,24.97257,0,0,164.3392,0,0,0,7,1,3,69.5,8.7,0,,409,0,0,0,1.098612,0,1,0,0,0,0,0,73.19886,8.587215,1.098612,5.101933,1 +2,1,100,0,4,129419,0,5361.663,23.16153,0,11,1,7.376671,0,0,0,0,7.376671,0,0,0,1,0,4,69.5,8.7,0,,409,0,0,0,1.386294,0,1,0,0,0,0,0,73.19886,8.587215,1.386294,1.998322,1 +2,1,100,0,5,129419,0,5361.663,24.16153,0,11,1,116.8007,0,30.40626,0,0,147.2069,0,0,0,3,1,4,69.5,8.7,0,,409,0,0,0,1.386294,0,1,0,0,0,0,0,73.19886,8.587215,1.386294,4.991839,1 +10,1,50,0,1,129425,0,13275.43,1.938398,0,17,1,32.97998,21.76678,0,0,0,54.74676,0,0,0,5,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.00792,9.493746,1.386294,4.002718,1 +10,1,50,0,2,129425,0,13275.43,2.938398,0,17,1,61.2938,15.55256,0,0,0,76.84636,0,0,0,8,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.00792,9.493746,1.386294,4.341808,1 +10,1,50,0,3,129425,0,13275.43,3.938398,0,17,1,78.86978,11.86732,0,0,0,90.7371,0,0,0,6,1,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.00792,9.493746,1.386294,4.507967,1 +10,1,50,0,4,129425,0,13275.43,4.938398,0,17,1,100.7293,42.83956,0,0,393.938,537.5068,1,0,0,11,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.00792,9.493746,1.386294,6.286942,1 +10,1,50,0,5,129425,0,13275.43,5.938398,0,17,1,33.76407,7.899125,0,0,0,41.66319,0,0,0,5,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.00792,9.493746,1.386294,3.729618,1 +10,1,50,0,1,129426,0,13275.43,34.79261,0,20,1,7.067138,14.25206,0,0,0,21.3192,0,0,0,1,0,4,51.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,75.16824,9.493746,1.386294,3.059608,1 +10,1,50,0,2,129426,0,13275.43,35.79261,0,20,1,11.32076,16.06469,0,0,0,27.38544,0,0,0,1,0,4,51.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,75.16824,9.493746,1.386294,3.310012,1 +10,1,50,0,3,129426,0,13275.43,36.79261,0,20,1,7.862408,6.142506,0,0,0,14.00491,0,0,0,1,0,4,51.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,75.16824,9.493746,1.386294,2.639408,1 +10,1,50,0,4,129426,0,13275.43,37.79261,0,20,1,95.03191,20.03191,0,0,0,115.0638,0,0,0,6,0,4,51.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,75.16824,9.493746,1.386294,4.745487,1 +10,1,50,0,5,129426,0,13275.43,38.79261,0,20,1,48.77032,9.866611,0,0,0,58.63693,0,0,0,3,0,4,51.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,75.16824,9.493746,1.386294,4.071365,1 +10,1,50,0,1,129427,0,13275.43,34.05339,1,17,1,230.2709,15.95995,0,0,0,246.2309,0,0,0,6,1,4,76.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,76.05943,9.493746,1.386294,5.506269,1 +10,1,50,0,2,129427,0,13275.43,35.05339,1,17,1,243.6658,7.843666,0,0,0,251.5094,0,0,0,4,3,4,76.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,76.05943,9.493746,1.386294,5.527481,1 +10,1,50,0,3,129427,0,13275.43,36.05339,1,17,1,31.94103,2.407862,16.21622,0,0,50.56511,0,0,0,2,1,4,76.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,76.05943,9.493746,1.386294,3.923262,1 +10,1,50,0,4,129427,0,13275.43,37.05339,1,17,1,59.4804,21.28532,0,0,0,80.76572,0,0,0,3,1,4,76.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,76.05943,9.493746,1.386294,4.391552,1 +10,1,50,0,5,129427,0,13275.43,38.05339,1,17,1,181.1171,16.87786,8.336807,0,0,206.3318,0,0,0,10,0,4,76.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,76.05943,9.493746,1.386294,5.329485,1 +10,1,50,0,1,129428,0,13275.43,6.009583,1,17,1,162.2497,27.67962,0,0,0,189.9293,0,0,0,30,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,85.16698,9.493746,1.386294,5.246652,1 +10,1,50,0,2,129428,0,13275.43,7.009583,1,17,1,97.57413,20.61995,0,0,0,118.1941,0,0,0,18,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,85.16698,9.493746,1.386294,4.772328,1 +10,1,50,0,3,129428,0,13275.43,8.009583,1,17,1,96.21622,12.72727,1.228501,0,0,110.172,0,0,0,18,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,85.16698,9.493746,1.386294,4.702043,1 +10,1,50,0,4,129428,0,13275.43,9.009583,1,17,1,123.0629,22.21969,0,0,0,145.2826,0,0,0,17,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,85.16698,9.493746,1.386294,4.978681,1 +10,1,50,0,5,129428,0,13275.43,10.00958,1,17,1,89.9333,14.8812,20.03752,0,0,124.852,0,0,0,14,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,85.16698,9.493746,1.386294,4.827129,1 +7,1,25,0,1,129436,0,15786.6,36.2026,0,20,1,173.7338,27.31449,43.69847,0,0,244.7468,0,0,0,19,0,7,44.2,26.1,1,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,68.73036,9.66698,1.94591,5.500224,1 +7,1,25,0,2,129436,0,15786.6,37.2026,0,20,1,167.1159,49.062,67.38544,261.4555,0,283.5634,0,0,20,23,0,7,44.2,26.1,1,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,68.73036,9.66698,1.94591,5.647436,1 +7,1,25,0,3,129436,0,15786.6,38.2026,0,20,1,223.5627,62.92875,37.06142,0,0,323.5528,0,0,0,29,0,7,44.2,26.1,1,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,68.73036,9.66698,1.94591,5.779362,1 +7,1,25,0,4,129436,0,15786.6,39.2026,0,20,1,208.5232,36.45396,1.189608,0,0,246.1668,0,0,0,27,0,7,44.2,26.1,1,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,68.73036,9.66698,1.94591,5.50601,1 +7,1,25,0,5,129436,0,15786.6,40.2026,0,20,1,127.97,55.42309,34.74364,0,0,218.1367,0,0,0,25,0,7,44.2,26.1,1,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,68.73036,9.66698,1.94591,5.385122,1 +7,1,25,0,1,129437,0,15786.6,12.64066,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,,0 +7,1,25,0,2,129437,0,15786.6,13.64066,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,,0 +7,1,25,0,3,129437,0,15786.6,14.64066,0,10,1,16.21622,.982801,0,0,0,17.19902,0,0,0,3,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,2.844852,1 +7,1,25,0,4,129437,0,15786.6,15.64066,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,,0 +7,1,25,0,5,129437,0,15786.6,16.64066,0,10,1,13.75573,2.551063,0,0,0,16.3068,0,0,0,2,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,2.791582,1 +7,1,25,0,1,129438,0,15786.6,7.772758,0,10,1,5.300354,0,0,0,0,5.300354,0,0,0,1,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,1.667773,1 +7,1,25,0,2,129438,0,15786.6,8.772758,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,,0 +7,1,25,0,3,129438,0,15786.6,9.772758,0,10,1,20.14742,2.457002,0,0,0,22.60442,0,0,0,3,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,3.118146,1 +7,1,25,0,4,129438,0,15786.6,10.77276,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,,0 +7,1,25,0,5,129438,0,15786.6,11.77276,0,10,1,17.5073,8.520217,0,0,0,26.02751,0,0,0,2,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,3.259154,1 +7,1,25,0,1,129439,0,15786.6,10.02327,0,10,1,9.422851,9.729093,0,0,0,19.15194,0,0,0,2,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,2.952404,1 +7,1,25,0,2,129439,0,15786.6,11.02327,0,10,1,43.39622,8.25876,0,0,0,51.65499,0,0,0,6,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,3.944587,1 +7,1,25,0,3,129439,0,15786.6,12.02327,0,10,1,44.22604,4.157248,0,0,0,48.38329,0,0,0,4,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,3.879155,1 +7,1,25,0,4,129439,0,15786.6,13.02327,0,10,1,101.6408,3.646308,5.528715,0,0,110.8159,0,0,0,3,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,4.70787,1 +7,1,25,0,5,129439,0,15786.6,14.02327,0,10,1,83.47228,4.172572,0,0,0,87.64485,0,0,0,7,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,4.473293,1 +7,1,25,0,1,129440,0,15786.6,13.55784,1,10,1,20.02356,1.177856,41.23675,0,0,62.43816,0,0,0,2,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.06523,9.66698,1.94591,4.134177,1 +7,1,25,0,2,129440,0,15786.6,14.55784,1,10,1,45.8221,8.334231,0,0,0,54.15633,0,0,0,4,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.06523,9.66698,1.94591,3.991875,1 +7,1,25,0,3,129440,0,15786.6,15.55784,1,10,1,33.41523,6.914005,0,0,0,40.32924,0,0,0,5,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.06523,9.66698,1.94591,3.697077,1 +7,1,25,0,4,129440,0,15786.6,16.55784,1,10,1,27.34731,1.823154,0,0,0,29.17047,0,0,0,4,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.06523,9.66698,1.94591,3.373157,1 +7,1,25,0,5,129440,0,15786.6,17.55784,1,10,1,31.88829,5.060442,0,0,0,36.94873,0,0,0,2,0,7,74.36826,13.73189,0,,1000,1000,1,1,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.06523,9.66698,1.94591,3.609531,1 +7,1,25,0,1,129441,0,15786.6,33.65914,1,10,1,99.52885,47.54417,0,0,0,147.073,0,0,0,4,0,7,24.2,21.7,0,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,63.85081,9.66698,1.94591,4.990929,1 +7,1,25,0,2,129441,0,15786.6,34.65914,1,10,1,115.903,50.22102,0,318.0593,0,166.124,0,0,23,6,0,7,24.2,21.7,0,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,63.85081,9.66698,1.94591,5.112734,1 +7,1,25,0,3,129441,0,15786.6,35.65914,1,10,1,56.01966,17.88206,0,0,0,73.90172,0,0,0,2,0,7,24.2,21.7,0,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,63.85081,9.66698,1.94591,4.302736,1 +7,1,25,0,4,129441,0,15786.6,36.65914,1,10,1,295.8067,4.922516,0,0,0,300.7292,0,0,0,1,0,7,24.2,21.7,0,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,63.85081,9.66698,1.94591,5.70621,1 +7,1,25,0,5,129441,0,15786.6,37.65914,1,10,1,75.4481,5.939975,0,0,0,81.38808,0,0,0,6,0,7,24.2,21.7,0,,1000,1000,0,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,63.85081,9.66698,1.94591,4.399229,1 +7,1,25,0,1,129442,0,15786.6,11.68515,0,10,1,41.22497,4.658422,0,0,0,45.88339,0,0,0,5,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,3.826103,1 +7,1,25,0,2,129442,0,15786.6,12.68515,0,10,1,17.25067,0,0,0,0,17.25067,0,0,0,2,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,2.847851,1 +7,1,25,0,3,129442,0,15786.6,13.68515,0,10,1,12.28501,.982801,0,0,0,13.26781,0,0,0,3,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,2.585341,1 +7,1,25,0,4,129442,0,15786.6,14.68515,0,10,1,33.52325,2.461258,0,0,641.6135,677.598,1,0,0,4,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,6.518554,1 +7,1,25,0,5,129442,0,15786.6,15.68515,0,10,1,6.252605,0,0,0,0,6.252605,0,0,0,1,0,7,74.36826,13.73189,0,,1000,1000,1,0,1.94591,6.907755,0,3.258096,8.294049,1,0,0,76.57921,9.66698,1.94591,1.832998,1 +2,1,100,0,1,129446,0,2588.71,4.533881,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,400,405.56,1,0,1.386294,6.005269,1,0,0,0,0,0,79.54541,7.859301,1.386294,,0 +2,1,100,0,2,129446,0,2588.71,5.533881,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,400,405.56,1,0,1.386294,6.005269,1,0,0,0,0,0,79.54541,7.859301,1.386294,,0 +2,1,100,0,3,129446,0,2588.71,6.533881,0,12,1,12.46883,0,31.27182,0,0,43.74065,0,0,0,0,1,4,74.36826,13.73189,0,,400,405.56,1,0,1.386294,6.005269,1,0,0,0,0,0,79.54541,7.859301,1.386294,3.778278,1 +2,1,100,0,1,129447,0,2588.71,2.469541,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,400,405.56,1,1,1.386294,6.005269,1,0,0,0,0,0,79.03143,7.859301,1.386294,,0 +2,1,100,0,2,129447,0,2588.71,3.469541,1,12,1,2.738226,4.441402,0,0,0,7.179627,0,0,0,1,0,4,74.36826,13.73189,0,,400,405.56,1,1,1.386294,6.005269,1,0,0,0,0,0,79.03143,7.859301,1.386294,1.971247,1 +2,1,100,0,3,129447,0,2588.71,4.469542,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,400,405.56,1,1,1.386294,6.005269,1,0,0,0,0,0,79.03143,7.859301,1.386294,,0 +2,1,100,0,1,129448,0,2588.71,24.95004,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,61.3,13.73189,0,,400,405.56,0,0,1.386294,6.005269,1,0,0,0,0,0,78.70184,7.859301,1.386294,,0 +2,1,100,0,2,129448,0,2588.71,25.95004,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,61.3,13.73189,0,,400,405.56,0,0,1.386294,6.005269,1,0,0,0,0,0,78.70184,7.859301,1.386294,,0 +2,1,100,0,3,129448,0,2588.71,26.95004,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,61.3,13.73189,0,,400,405.56,0,0,1.386294,6.005269,1,0,0,0,0,0,78.70184,7.859301,1.386294,,0 +2,1,100,0,1,129449,0,2588.71,27.07734,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,77.5,13.73189,0,,400,405.56,0,0,1.386294,6.005269,1,0,0,0,0,0,78.07117,7.859301,1.386294,,0 +2,1,100,0,2,129449,0,2588.71,28.07734,0,15,1,5.476451,7.738225,0,0,0,13.21468,0,0,0,0,1,4,77.5,13.73189,0,,400,405.56,0,0,1.386294,6.005269,1,0,0,0,0,0,78.07117,7.859301,1.386294,2.581328,1 +2,1,100,0,3,129449,0,2588.71,29.07734,0,15,1,7.481297,2.523691,22.06983,0,0,32.07481,0,0,0,1,0,4,77.5,13.73189,0,,400,405.56,0,0,1.386294,6.005269,1,0,0,0,0,0,78.07117,7.859301,1.386294,3.468071,1 +4,1,100,1,1,129458,0,8129.032,27.72622,0,12,1,14.98801,0,0,0,0,14.98801,0,0,0,1,0,4,76.8,8.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,77.82298,9.00332,1.386294,2.707251,1 +4,1,100,1,2,129458,0,8129.032,28.72622,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.8,8.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,77.82298,9.00332,1.386294,,0 +4,1,100,1,3,129458,0,8129.032,29.72622,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.8,8.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,77.82298,9.00332,1.386294,,0 +4,1,100,1,1,129459,0,8129.032,7.104723,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,84.02346,9.00332,1.386294,,0 +4,1,100,1,2,129459,0,8129.032,8.104723,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,84.02346,9.00332,1.386294,,0 +4,1,100,1,3,129459,0,8129.032,9.104723,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,84.02346,9.00332,1.386294,,0 +4,1,100,1,1,129460,0,8129.032,26.54894,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,78.9,8.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.97468,9.00332,1.386294,,0 +4,1,100,1,2,129460,0,8129.032,27.54894,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,78.9,8.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.97468,9.00332,1.386294,,0 +4,1,100,1,3,129460,0,8129.032,28.54894,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,78.9,8.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,0,0,0,78.97468,9.00332,1.386294,,0 +4,1,100,1,1,129461,0,8129.032,6.162902,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,84.53744,9.00332,1.386294,,0 +4,1,100,1,2,129461,0,8129.032,7.162902,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,84.53744,9.00332,1.386294,,0 +4,1,100,1,3,129461,0,8129.032,8.162902,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,84.53744,9.00332,1.386294,,0 +10,1,50,0,1,129466,0,4528.536,20.27105,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,85.3,4.3,0,,750,750,0,0,0,6.620073,0,3.931826,7.313221,0,0,0,77.9943,8.418375,0,,0 +10,1,50,0,2,129466,0,4528.536,21.27105,0,12,1,33.82749,0,0,0,0,33.82749,0,0,0,0,1,1,85.3,4.3,0,,750,750,0,0,0,6.620073,0,3.931826,7.313221,0,0,0,77.9943,8.418375,0,3.521274,1 +10,1,50,0,3,129466,0,4528.536,22.27105,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,85.3,4.3,0,,750,750,0,0,0,6.620073,0,3.931826,7.313221,0,0,0,77.9943,8.418375,0,,0 +4,1,100,1,1,129467,1,7848.96,32.72827,0,16,1,5.94884,0,0,0,0,5.94884,0,0,0,1,0,4,91.6,17.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.55058,8.968264,1.386294,1.783196,1 +4,1,100,1,2,129467,1,7848.96,33.72827,0,16,1,154.8775,1.796407,0,0,0,156.6739,0,0,0,5,0,4,91.6,17.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.55058,8.968264,1.386294,5.054167,1 +4,1,100,1,3,129467,1,7848.96,34.72827,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,91.6,17.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.55058,8.968264,1.386294,,0 +4,1,100,1,4,129467,1,7848.96,35.72827,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,91.6,17.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.55058,8.968264,1.386294,,0 +4,1,100,1,5,129467,1,7848.96,36.72827,0,16,1,96.33151,1.262095,0,0,0,97.59361,0,0,0,6,0,4,91.6,17.4,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,66.55058,8.968264,1.386294,4.580812,1 +4,1,100,1,1,129468,1,7848.96,30.68583,1,16,1,23.79536,3.569304,0,0,0,27.36466,0,0,0,3,0,4,92.6,21.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,67.45471,8.968264,1.386294,3.309253,1 +4,1,100,1,2,129468,1,7848.96,31.68583,1,16,1,90.36472,4.899292,0,0,791.3609,886.6249,2,0,0,5,0,4,92.6,21.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,67.45471,8.968264,1.386294,6.787422,1 +4,1,100,1,3,129468,1,7848.96,32.68583,1,16,1,4.955401,0,0,0,0,4.955401,0,0,0,1,0,4,92.6,21.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,67.45471,8.968264,1.386294,1.600478,1 +4,1,100,1,4,129468,1,7848.96,33.68583,1,16,1,303.1804,.9178522,0,0,0,304.0982,0,0,0,4,0,4,92.6,21.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,67.45471,8.968264,1.386294,5.71735,1 +4,1,100,1,5,129468,1,7848.96,34.68583,1,16,1,71.51872,10.53849,14.50989,0,1084.666,1181.233,1,0,0,1,1,4,92.6,21.7,0,,1000,1000,0,0,1.386294,6.907755,1,0,0,1,0,0,67.45471,8.968264,1.386294,7.074314,1 +4,1,100,1,1,129469,1,7848.96,9.437371,0,16,1,21.41582,0,0,0,0,21.41582,0,0,0,0,1,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,82.78881,8.968264,1.386294,3.06413,1 +4,1,100,1,2,129469,1,7848.96,10.43737,0,16,1,13.60915,0,0,0,0,13.60915,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,82.78881,8.968264,1.386294,2.610742,1 +4,1,100,1,3,129469,1,7848.96,11.43737,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,82.78881,8.968264,1.386294,,0 +4,1,100,1,4,129469,1,7848.96,12.43737,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,82.78881,8.968264,1.386294,,0 +4,1,100,1,5,129469,1,7848.96,13.43737,0,16,1,49.81068,0,0,0,0,49.81068,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,82.78881,8.968264,1.386294,3.90823,1 +4,1,100,1,1,129470,1,7848.96,7.318275,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,82.78881,8.968264,1.386294,,0 +4,1,100,1,2,129470,1,7848.96,8.318275,0,16,1,13.60915,0,0,0,0,13.60915,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,82.78881,8.968264,1.386294,2.610742,1 +4,1,100,1,3,129470,1,7848.96,9.318275,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,82.78881,8.968264,1.386294,,0 +4,1,100,1,4,129470,1,7848.96,10.31828,0,16,1,17.89812,0,0,0,0,17.89812,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,82.78881,8.968264,1.386294,2.884696,1 +4,1,100,1,5,129470,1,7848.96,11.31828,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,1,0,0,1,0,0,82.78881,8.968264,1.386294,,0 +6,1,25,0,1,129474,0,10085.61,1.708419,0,14,1,48.78049,6.472338,0,0,0,55.25283,0,0,0,10,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.35837,9.218964,1.386294,4.011919,1 +6,1,25,0,2,129474,0,10085.61,2.708419,0,14,1,16.33097,4.30049,0,0,0,20.63146,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.35837,9.218964,1.386294,3.026817,1 +6,1,25,0,3,129474,0,10085.61,3.708419,0,14,1,8.424182,1.367691,0,0,0,9.791873,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.35837,9.218964,1.386294,2.281553,1 +6,1,25,0,1,129475,0,10085.61,29.94114,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,86.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,74.78748,9.218964,1.386294,,0 +6,1,25,0,2,129475,0,10085.61,30.94114,0,16,1,204.1372,16.46707,0,0,0,220.6042,0,0,0,6,0,4,86.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,74.78748,9.218964,1.386294,5.39637,1 +6,1,25,0,3,129475,0,10085.61,31.94114,0,16,1,41.3776,11.12488,0,0,0,52.50248,0,0,0,3,0,4,86.3,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,74.78748,9.218964,1.386294,3.96086,1 +6,1,25,0,1,129476,0,10085.61,29.64819,1,14,1,29.7442,7.911957,0,0,0,37.65616,0,0,0,3,0,4,80,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,78.56806,9.218964,1.386294,3.628496,1 +6,1,25,0,2,129476,0,10085.61,30.64819,1,14,1,28.30702,8.628199,33.20631,0,0,70.14153,0,0,0,1,1,4,80,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,78.56806,9.218964,1.386294,4.250515,1 +6,1,25,0,3,129476,0,10085.61,31.64819,1,14,1,165.3865,13.18137,12.42815,0,0,190.996,0,0,0,8,1,4,80,13.73189,0,,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,78.56806,9.218964,1.386294,5.252253,1 +6,1,25,0,1,129477,0,10085.61,2.833676,0,14,1,45.80607,21.47531,0,0,0,67.28138,0,0,0,8,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.35837,9.218964,1.386294,4.208883,1 +6,1,25,0,2,129477,0,10085.61,3.833676,0,14,1,14.15351,55.44366,0,0,0,69.59717,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.35837,9.218964,1.386294,4.242724,1 +6,1,25,0,3,129477,0,10085.61,4.833675,0,14,1,81.26859,41.65015,0,0,0,122.9187,0,0,0,9,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,75.35837,9.218964,1.386294,4.811523,1 +11,1,0,0,1,129481,0,1518.61,24.78576,1,11,1,31.6247,18.07554,0,0,0,49.70024,1,1,0,3,0,2,97.5,13.73189,0,,0,0,0,0,.6931472,0,0,0,0,0,0,0,74.46398,7.32621,.6931472,3.90601,1 +11,1,0,0,2,129481,0,1518.61,25.78576,1,11,1,183.5433,12.49726,0,0,69.1402,265.1807,1,0,0,8,1,3,97.5,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,74.46398,7.32621,1.098612,5.580411,1 +11,1,0,0,3,129481,0,1518.61,26.78576,1,11,1,33.04239,12.74314,0,0,0,45.78554,0,0,0,0,0,3,97.5,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,74.46398,7.32621,1.098612,3.823968,1 +11,1,0,0,4,129481,0,1518.61,27.78576,1,11,1,120.2397,30.54403,0,0,633.4025,784.1863,1,0,0,1,2,3,97.5,13.73189,0,,0,0,0,0,1.098612,0,0,0,0,0,0,0,74.46398,7.32621,1.098612,6.664647,1 +11,1,0,0,5,129481,0,1518.61,28.78576,1,11,1,36.56369,18.42996,.2539145,0,712.7592,768.0068,1,0,0,2,0,4,97.5,13.73189,0,,0,0,0,0,1.386294,0,0,0,0,0,0,0,74.46398,7.32621,1.386294,6.643798,1 +11,1,0,0,1,129482,0,1518.61,3.811088,1,11,1,46.76259,7.07434,0,0,0,53.83693,0,0,0,8,0,2,74.36826,13.73189,0,,0,0,1,1,.6931472,0,0,0,0,0,0,0,76.44289,7.32621,.6931472,3.98596,1 +11,1,0,0,2,129482,0,1518.61,4.811088,1,11,1,6.571742,2.628697,0,0,0,9.200438,0,0,0,1,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,0,0,0,76.44289,7.32621,1.098612,2.219251,1 +11,1,0,0,3,129482,0,1518.61,5.811088,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,0,0,0,76.44289,7.32621,1.098612,,0 +11,1,0,0,4,129482,0,1518.61,6.811088,1,11,1,8.298756,0,0,0,0,8.298756,0,0,0,2,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,0,0,0,76.44289,7.32621,1.098612,2.116106,1 +11,1,0,0,5,129482,0,1518.61,7.811088,1,11,1,4.655099,2.010157,0,0,0,6.665256,0,0,0,1,0,4,74.36826,13.73189,0,,0,0,1,1,1.386294,0,0,0,0,0,0,0,76.44289,7.32621,1.386294,1.896908,1 +11,1,0,1,1,129489,0,7368.771,24.77207,0,14,1,14.8721,0,16.35931,0,0,31.23141,0,0,0,1,0,2,75.8,8.7,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,66.63726,8.905142,.6931472,3.441424,1 +11,1,0,1,2,129489,0,7368.771,25.77207,0,14,1,16.33097,0,0,0,0,16.33097,0,0,0,0,0,2,75.8,8.7,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,66.63726,8.905142,.6931472,2.793064,1 +11,1,0,1,3,129489,0,7368.771,26.77207,0,14,1,0,0,0,0,0,0,0,0,0,0,0,2,75.8,8.7,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,66.63726,8.905142,.6931472,,0 +11,1,0,1,1,129490,0,7368.771,24.8898,1,13,1,26.76978,0,0,0,0,26.76978,0,0,0,2,0,2,67.4,21.7,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,68.8164,8.905142,.6931472,3.287274,1 +11,1,0,1,2,129490,0,7368.771,25.8898,1,13,1,22.86336,0,0,0,0,22.86336,0,0,0,2,0,2,67.4,21.7,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,68.8164,8.905142,.6931472,3.129536,1 +11,1,0,1,3,129490,0,7368.771,26.8898,1,13,1,27.75025,0,0,0,0,27.75025,0,0,0,1,0,2,67.4,21.7,0,,0,0,0,0,.6931472,0,0,0,0,1,0,0,68.8164,8.905142,.6931472,3.323245,1 +5,1,25,0,1,129498,0,13740.69,27.41684,1,12,1,20.82094,4.521118,33.79536,0,0,59.13742,0,0,0,1,1,3,71.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,69.22522,9.52819,1.098612,4.079864,1 +5,1,25,0,2,129498,0,13740.69,28.41684,1,12,1,43.54927,1.137725,14.62167,0,0,59.30865,0,0,0,2,1,3,71.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,69.22522,9.52819,1.098612,4.082755,1 +5,1,25,0,3,129498,0,13740.69,29.41684,1,12,1,122.3984,3.409316,0,138.7512,1198.622,1324.43,1,0,8,2,2,3,71.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,69.22522,9.52819,1.098612,7.188737,1 +5,1,25,0,4,129498,0,13740.69,30.41684,1,12,1,27.53557,0,0,13.76778,0,27.53557,0,0,1,3,0,3,71.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,69.22522,9.52819,1.098612,3.315479,1 +5,1,25,0,5,129498,0,13740.69,31.41684,1,12,1,181.7417,3.878839,0,0,0,185.6205,0,0,0,6,0,3,71.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,69.22522,9.52819,1.098612,5.223704,1 +5,1,25,0,1,129499,0,13740.69,7.29911,0,12,1,15.46698,0,0,0,0,15.46698,0,0,0,1,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,77.38953,9.52819,1.098612,2.738708,1 +5,1,25,0,2,129499,0,13740.69,8.29911,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,77.38953,9.52819,1.098612,,0 +5,1,25,0,3,129499,0,13740.69,9.29911,0,12,1,51.53617,6.818632,0,0,0,58.3548,0,0,0,3,1,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,77.38953,9.52819,1.098612,4.066542,1 +5,1,25,0,4,129499,0,13740.69,10.29911,0,12,1,54.15328,4.708582,0,0,0,58.86186,0,0,0,6,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,77.38953,9.52819,1.098612,4.075193,1 +5,1,25,0,5,129499,0,13740.69,11.29911,0,12,1,17.66933,0,0,0,0,17.66933,0,0,0,2,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,77.38953,9.52819,1.098612,2.87183,1 +5,1,25,0,1,129500,0,13740.69,30.81177,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.5,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,66.10543,9.52819,1.098612,,0 +5,1,25,0,2,129500,0,13740.69,31.81177,0,12,1,139.902,11.17039,0,0,0,151.0724,0,0,0,2,0,3,77.5,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,66.10543,9.52819,1.098612,5.017759,1 +5,1,25,0,3,129500,0,13740.69,32.81177,0,12,1,22.79485,3.944499,0,0,0,26.73935,0,0,0,1,0,3,77.5,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,66.10543,9.52819,1.098612,3.286136,1 +5,1,25,0,4,129500,0,13740.69,33.81177,0,12,1,22.48738,0,0,0,0,22.48738,0,0,0,2,0,3,77.5,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,66.10543,9.52819,1.098612,3.112954,1 +5,1,25,0,5,129500,0,13740.69,34.81177,0,12,1,15.14514,5.961296,0,0,0,21.10644,0,0,0,2,0,3,77.5,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,66.10543,9.52819,1.098612,3.049578,1 +11,1,0,0,1,129521,0,10726.43,30.55441,0,19,1,121.6538,141.743,29.2207,0,0,292.6175,0,0,0,8,0,3,83.8,13.73189,1,,0,101,0,0,1.098612,4.61512,0,0,0,0,0,0,75.44648,9.280559,1.098612,5.678866,1 +11,1,0,0,2,129521,0,10726.43,31.55441,0,19,1,76.4834,78.68808,0,0,0,155.1715,0,0,0,2,0,3,83.8,13.73189,1,,0,101,0,0,1.098612,4.61512,0,0,0,0,0,0,75.44648,9.280559,1.098612,5.044531,1 +11,1,0,0,3,129521,0,10726.43,32.55442,0,19,1,77.7998,150.7929,0,0,0,228.5927,0,0,0,6,0,3,83.8,13.73189,1,,0,101,0,0,1.098612,4.61512,0,0,0,0,0,0,75.44648,9.280559,1.098612,5.431942,1 +11,1,0,0,4,129521,0,10726.43,33.55442,0,19,1,39.46765,137.6549,96.37448,0,0,273.497,0,0,0,4,0,4,83.8,13.73189,1,,0,101,0,0,1.386294,4.61512,0,0,0,0,0,0,75.44648,9.280559,1.386294,5.61129,1 +11,1,0,0,5,129521,0,10726.43,34.55442,0,19,1,62.68406,185.7804,32.5873,0,0,281.0518,0,0,0,3,0,4,83.8,13.73189,1,,0,101,0,0,1.386294,4.61512,0,0,0,0,0,0,75.44648,9.280559,1.386294,5.638539,1 +11,1,0,0,1,129522,0,10726.43,27.24162,1,13,1,201.6657,25.49673,0,0,0,227.1624,0,0,0,7,0,3,56.3,13.73189,0,,0,101,0,0,1.098612,4.61512,0,0,0,0,0,0,77.56129,9.280559,1.098612,5.425665,1 +11,1,0,0,2,129522,0,10726.43,28.24162,1,13,1,320.577,8.747958,0,0,0,329.325,0,0,0,6,3,3,56.3,13.73189,0,,0,101,0,0,1.098612,4.61512,0,0,0,0,0,0,77.56129,9.280559,1.098612,5.797045,1 +11,1,0,0,3,129522,0,10726.43,29.24162,1,13,1,40.95639,17.46779,2.973241,0,955.8077,1017.205,1,0,0,0,0,3,56.3,13.73189,0,,0,101,0,0,1.098612,4.61512,0,0,0,0,0,0,77.56129,9.280559,1.098612,6.924814,1 +11,1,0,0,4,129522,0,10726.43,30.24162,1,13,1,13.76778,6.815053,0,0,0,20.58284,0,0,0,0,0,4,56.3,13.73189,0,,0,101,0,0,1.386294,4.61512,0,0,0,0,0,0,77.56129,9.280559,1.386294,3.024457,1 +11,1,0,0,5,129522,0,10726.43,31.24162,1,13,1,426.2726,29.44888,0,0,2364.295,2820.017,2,0,0,10,0,4,56.3,13.73189,0,,0,101,0,0,1.386294,4.61512,0,0,0,0,0,0,77.56129,9.280559,1.386294,7.944498,1 +11,1,0,0,1,129523,0,10726.43,3.789186,1,13,1,58.89352,39.68471,0,0,0,98.57822,0,0,0,9,0,3,74.36826,13.73189,1,,0,101,1,1,1.098612,4.61512,0,0,0,0,0,0,80.52754,9.280559,1.098612,4.59085,1 +11,1,0,0,2,129523,0,10726.43,4.789186,1,13,1,54.70876,21.38269,0,0,0,76.09145,0,0,0,6,0,3,74.36826,13.73189,1,,0,101,1,1,1.098612,4.61512,0,0,0,0,0,0,80.52754,9.280559,1.098612,4.331936,1 +11,1,0,0,3,129523,0,10726.43,5.789186,1,13,1,110.5104,24.52924,0,0,0,135.0396,0,0,0,9,0,3,74.36826,13.73189,1,,0,101,1,1,1.098612,4.61512,0,0,0,0,0,0,80.52754,9.280559,1.098612,4.905569,1 +11,1,0,0,4,129523,0,10726.43,6.789186,1,13,1,145.0206,28.61404,0,0,0,173.6347,0,0,0,12,0,4,74.36826,13.73189,1,,0,101,1,1,1.386294,4.61512,0,0,0,0,0,0,80.52754,9.280559,1.386294,5.156954,1 +11,1,0,0,5,129523,0,10726.43,7.789186,1,13,1,4.206984,2.166597,0,0,0,6.37358,0,0,0,0,0,4,74.36826,13.73189,1,,0,101,1,1,1.386294,4.61512,0,0,0,0,0,0,80.52754,9.280559,1.386294,1.852161,1 +8,1,50,1,1,129524,0,5722.705,27.61944,1,12,1,309.7762,42.4735,0,0,0,352.2497,0,0,0,15,1,1,60,8.7,0,,400,400,0,0,0,5.991465,0,3.931826,6.684612,1,0,0,66.98128,8.652371,0,5.86434,1 +8,1,50,1,2,129524,0,5722.705,28.61944,1,12,1,316.7116,32.77628,0,0,0,349.4879,0,0,0,4,0,1,60,8.7,0,,400,400,0,0,0,5.991465,0,3.931826,6.684612,1,0,0,66.98128,8.652371,0,5.856469,1 +8,1,50,1,3,129524,0,5722.705,29.61944,1,12,1,58.23096,3.036855,0,0,0,61.26781,0,0,0,2,0,1,60,8.7,0,,400,400,0,0,0,5.991465,0,3.931826,6.684612,1,0,0,66.98128,8.652371,0,4.115255,1 +8,1,50,1,1,129525,0,4029.156,28.14237,1,10,1,46.52533,11.96113,0,0,0,58.48645,0,0,0,2,1,1,69.5,13,0,,200,219,0,0,0,5.389072,0,3.931826,5.991465,0,0,0,75.91062,8.30156,0,4.068795,1 +8,1,50,1,2,129525,0,4029.156,29.14237,1,10,1,17.52022,1.590297,0,0,0,19.11051,0,0,0,1,0,1,69.5,13,0,,200,219,0,0,0,5.389072,0,3.931826,5.991465,0,0,0,75.91062,8.30156,0,2.950238,1 +8,1,50,1,3,129525,0,4029.156,30.14237,1,10,1,12.53071,0,0,0,0,12.53071,0,0,0,1,0,1,69.5,13,0,,200,219,0,0,0,5.389072,0,3.931826,5.991465,0,0,0,75.91062,8.30156,0,2.528183,1 +11,1,0,1,1,129533,0,5911.911,25.68378,0,13,1,56.09756,24.71743,0,0,0,80.81499,0,0,0,7,2,3,67.4,0,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,68.15562,8.684894,1.098612,4.392162,1 +11,1,0,1,2,129533,0,5911.911,26.68378,0,13,1,13.3914,12.24823,0,0,0,25.63963,0,0,0,2,0,3,67.4,0,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,68.15562,8.684894,1.098612,3.244139,1 +11,1,0,1,3,129533,0,5911.911,27.68378,0,13,1,125.0743,18.45887,0,0,0,143.5332,0,0,0,4,0,3,67.4,0,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,68.15562,8.684894,1.098612,4.966567,1 +11,1,0,1,4,129533,0,5911.911,28.68378,0,13,1,2.294631,0,0,20.65167,0,2.294631,0,0,1,1,0,3,67.4,0,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,68.15562,8.684894,1.098612,.8305718,1 +11,1,0,1,5,129533,0,5911.911,29.68378,0,13,1,14.72444,4.375263,0,0,0,19.0997,0,0,0,2,0,3,67.4,0,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,68.15562,8.684894,1.098612,2.949673,1 +11,1,0,1,1,129534,0,5911.911,25.44011,1,12,1,82.80785,70.07733,0,0,0,152.8852,0,0,0,4,1,3,73.7,13,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,68.79924,8.684894,1.098612,5.029687,1 +11,1,0,1,2,129534,0,5911.911,26.44011,1,12,1,31.95427,37.39793,0,0,0,69.3522,0,0,0,4,0,3,73.7,13,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,68.79924,8.684894,1.098612,4.239198,1 +11,1,0,1,3,129534,0,5911.911,27.44011,1,12,1,74.28146,31.20912,0,0,0,105.4906,0,0,0,8,0,3,73.7,13,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,68.79924,8.684894,1.098612,4.658622,1 +11,1,0,1,4,129534,0,5911.911,28.44011,1,12,1,39.37586,40.22028,0,362.5516,0,79.59615,0,0,14,4,0,3,73.7,13,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,68.79924,8.684894,1.098612,4.376966,1 +11,1,0,1,5,129534,0,5911.911,29.44011,1,12,1,47.95961,37.48422,0,63.10476,0,85.44384,0,0,3,4,1,3,73.7,13,0,,0,0,0,0,1.098612,0,0,0,0,1,0,0,68.79924,8.684894,1.098612,4.447859,1 +11,1,0,1,1,129535,0,5911.911,.3723477,0,12,1,71.86198,32.0345,0,0,0,103.8965,0,0,0,7,3,3,74.36826,13.73189,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,81.14257,8.684894,1.098612,4.643395,1 +11,1,0,1,2,129535,0,5911.911,1.372348,0,12,1,90.36472,26.3963,0,0,0,116.761,0,0,0,9,1,3,74.36826,13.73189,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,81.14257,8.684894,1.098612,4.760129,1 +11,1,0,1,3,129535,0,5911.911,2.372348,0,12,1,105.5996,32.54212,0,0,283.5728,421.7146,1,0,0,12,0,3,74.36826,13.73189,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,81.14257,8.684894,1.098612,6.044329,1 +11,1,0,1,4,129535,0,5911.911,3.372348,0,12,1,23.68059,7.631941,0,0,0,31.31253,0,0,0,4,0,3,74.36826,13.73189,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,81.14257,8.684894,1.098612,3.444018,1 +11,1,0,1,5,129535,0,5911.911,4.372348,0,12,1,101.3883,20.63946,0,0,0,122.0278,0,0,0,9,1,3,74.36826,13.73189,0,,0,0,1,0,1.098612,0,0,0,0,0,0,0,81.14257,8.684894,1.098612,4.804249,1 +1,1,0,0,1,129541,0,10361.66,25.53046,0,16,1,16.48999,2.355713,0,0,0,18.8457,0,0,0,1,1,2,76.3,13.73189,0,,300,300,0,0,.6931472,5.703783,1,0,0,0,0,0,74.89308,9.245964,.6931472,2.936285,1 +1,1,0,0,2,129541,0,10361.66,26.53046,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,76.3,13.73189,0,,300,300,0,0,.6931472,5.703783,1,0,0,0,0,0,74.89308,9.245964,.6931472,,0 +1,1,0,0,3,129541,0,10361.66,27.53046,0,16,1,11.79361,6.742015,0,0,0,18.53563,0,0,0,2,0,2,76.3,13.73189,0,,300,300,0,0,.6931472,5.703783,1,0,0,0,0,0,74.89308,9.245964,.6931472,2.919695,1 +1,1,0,0,1,129542,0,10361.66,24.38604,1,16,1,23.55713,0,18.25677,0,0,41.8139,0,0,0,2,0,2,95,13.73189,0,,300,300,0,0,.6931472,5.703783,1,0,0,0,0,0,73.56861,9.245964,.6931472,3.733229,1 +1,1,0,0,2,129542,0,10361.66,25.38604,1,16,1,10.78167,0,33.20216,0,0,43.98383,0,0,0,1,0,2,95,13.73189,0,,300,300,0,0,.6931472,5.703783,1,0,0,0,0,0,73.56861,9.245964,.6931472,3.783822,1 +1,1,0,0,3,129542,0,10361.66,26.38604,1,16,1,83.53809,10.25553,13.26781,0,0,107.0614,0,0,0,4,1,2,95,13.73189,0,,300,300,0,0,.6931472,5.703783,1,0,0,0,0,0,73.56861,9.245964,.6931472,4.673403,1 +6,1,25,0,1,129564,1,13351.74,55.32649,0,18,1,198.9887,83.31945,49.72635,0,0,332.0345,0,0,0,3,13,1,85,13.73189,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,1,0,69.70229,9.499476,0,5.805239,1 +6,1,25,0,2,129564,1,13351.74,56.32649,0,18,1,168.6718,85.98802,0,0,0,254.6598,0,0,0,2,12,1,85,13.73189,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,1,0,69.70229,9.499476,0,5.539928,1 +6,1,25,0,3,129564,1,13351.74,57.32649,0,18,1,183.8454,82.14569,53.04757,0,0,319.0387,0,0,0,4,12,1,85,13.73189,0,,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,1,0,69.70229,9.499476,0,5.765312,1 +8,1,50,0,1,129584,0,9925.559,24.28747,1,17,1,56.5371,28.72791,0,0,0,85.26501,0,0,0,2,0,2,76.3,13.73189,0,,600,600,0,0,.6931472,6.39693,0,3.931826,7.090077,0,1,0,57.52052,9.20297,.6931472,4.445764,1 +8,1,50,0,2,129584,0,9925.559,25.28747,1,17,1,34.50135,19.36927,0,0,0,53.87062,0,0,0,5,0,2,76.3,13.73189,0,,600,600,0,0,.6931472,6.39693,0,3.931826,7.090077,0,1,0,57.52052,9.20297,.6931472,3.986585,1 +8,1,50,0,3,129584,0,9925.559,26.28747,1,17,1,35.50368,36.91892,0,0,0,72.42261,0,0,0,4,0,2,76.3,13.73189,0,,600,600,0,0,.6931472,6.39693,0,3.931826,7.090077,0,1,0,57.52052,9.20297,.6931472,4.282518,1 +8,1,50,0,1,129585,0,9925.559,25.295,0,17,1,26.50177,0,0,0,0,26.50177,0,0,0,4,0,2,77.5,13.73189,0,,600,600,0,0,.6931472,6.39693,0,3.931826,7.090077,0,0,0,77.59619,9.20297,.6931472,3.277211,1 +8,1,50,0,2,129585,0,9925.559,26.295,0,17,1,5.929919,2.145553,0,0,0,8.075472,0,0,0,1,0,2,77.5,13.73189,0,,600,600,0,0,.6931472,6.39693,0,3.931826,7.090077,0,0,0,77.59619,9.20297,.6931472,2.088831,1 +8,1,50,0,3,129585,0,9925.559,27.295,0,17,1,5.896806,0,0,0,0,5.896806,0,0,0,0,0,2,77.5,13.73189,0,,600,600,0,0,.6931472,6.39693,0,3.931826,7.090077,0,0,0,77.59619,9.20297,.6931472,1.774411,1 +11,1,0,0,1,129590,0,6960.298,2.247776,0,12,1,31.80212,31.12485,0,0,0,62.92697,0,0,0,5,0,3,74.36826,13.73189,0,,0,120,1,0,1.098612,4.787492,0,0,0,0,0,0,74.35735,8.848122,1.098612,4.141975,1 +11,1,0,0,2,129590,0,6960.298,3.247776,0,12,1,131.5364,33.14286,0,0,0,164.6792,0,0,0,11,1,3,74.36826,13.73189,0,,0,120,1,0,1.098612,4.787492,0,0,0,0,0,0,74.35735,8.848122,1.098612,5.104,1 +11,1,0,0,3,129590,0,6960.298,4.247776,0,12,1,261.8673,91.94595,0,0,0,353.8133,0,0,0,41,1,3,74.36826,13.73189,0,,0,120,1,0,1.098612,4.787492,0,0,0,0,0,0,74.35735,8.848122,1.098612,5.868769,1 +11,1,0,0,1,129591,0,6960.298,25.54689,0,12,1,20.02356,6.289752,38.15665,0,0,64.46996,0,0,0,2,1,3,67.5,13.73189,0,,0,120,0,0,1.098612,4.787492,0,0,0,0,0,0,76.87543,8.848122,1.098612,4.166199,1 +11,1,0,0,2,129591,0,6960.298,26.54689,0,12,1,28.03234,11.51482,20.28032,0,0,59.82749,0,0,0,3,1,3,67.5,13.73189,0,,0,120,0,0,1.098612,4.787492,0,0,0,0,0,0,76.87543,8.848122,1.098612,4.091465,1 +11,1,0,0,3,129591,0,6960.298,27.54689,0,12,1,27.02703,10.32924,34.11302,0,0,71.46928,0,0,0,3,1,3,67.5,13.73189,0,,0,120,0,0,1.098612,4.787492,0,0,0,0,0,0,76.87543,8.848122,1.098612,4.269268,1 +11,1,0,0,1,129592,0,6960.298,24.89254,1,12,1,104.2403,10.76561,1.766784,0,0,116.7727,0,0,0,7,1,3,73.8,13.73189,0,,0,120,0,0,1.098612,4.787492,0,0,0,1,0,0,66.00516,8.848122,1.098612,4.760229,1 +11,1,0,0,2,129592,0,6960.298,25.89254,1,12,1,86.79245,34.80323,0,0,0,121.5957,0,0,0,10,0,3,73.8,13.73189,0,,0,120,0,0,1.098612,4.787492,0,0,0,1,0,0,66.00516,8.848122,1.098612,4.800702,1 +11,1,0,0,3,129592,0,6960.298,26.89254,1,12,1,77.64128,43.24324,0,0,0,120.8845,0,0,0,10,1,3,73.8,13.73189,0,,0,120,0,0,1.098612,4.787492,0,0,0,1,0,0,66.00516,8.848122,1.098612,4.794836,1 +1,1,0,0,1,129681,0,9542.002,61.9384,1,4,1,63.01531,91.47232,41.84924,0,409.9293,606.2662,1,0,0,7,0,3,68.8,13.73189,1,,450,0,0,0,1.098612,0,1,0,0,0,0,1,40.99886,9.163564,1.098612,6.407319,1 +1,1,0,0,2,129681,0,9542.002,62.9384,1,4,1,51.21294,80.469,0,0,0,131.6819,0,0,0,6,0,3,68.8,13.73189,1,,450,0,0,0,1.098612,0,1,0,0,0,0,1,40.99886,9.163564,1.098612,4.88039,1 +1,1,0,0,3,129681,0,9542.002,63.9384,1,4,1,387.3956,172.4619,0,0,15062.12,15621.98,3,0,0,11,2,3,68.8,13.73189,1,,450,0,0,0,1.098612,0,1,0,0,0,0,1,40.99886,9.163564,1.098612,9.656434,1 +1,1,0,0,1,129682,0,9542.002,14.48597,1,4,1,71.26031,12.50294,0,0,0,83.76325,0,0,0,4,0,3,52.5,13.73189,0,,450,0,1,1,1.098612,0,1,0,0,1,0,0,63.93338,9.163564,1.098612,4.427994,1 +1,1,0,0,2,129682,0,9542.002,15.48597,1,4,1,53.47709,27.09434,29.85984,0,1364.836,1475.267,2,0,0,7,0,3,52.5,13.73189,0,,450,0,1,1,1.098612,0,1,0,0,1,0,0,63.93338,9.163564,1.098612,7.296594,1 +1,1,0,0,3,129682,0,9542.002,16.48597,1,4,1,49.45946,18.36364,0,0,0,67.8231,0,0,0,6,1,3,52.5,13.73189,0,,450,0,1,1,1.098612,0,1,0,0,1,0,0,63.93338,9.163564,1.098612,4.216903,1 +1,1,0,0,1,129683,0,9542.002,61.5332,0,4,1,19.43463,11.1543,41.84924,0,0,72.43816,0,0,0,2,0,3,35,13.73189,1,,450,0,0,0,1.098612,0,1,0,0,0,1,0,55.00333,9.163564,1.098612,4.282733,1 +1,1,0,0,2,129683,0,9542.002,62.5332,0,4,1,8.625337,13.19137,0,0,0,21.81671,0,0,0,2,0,3,35,13.73189,1,,450,0,0,0,1.098612,0,1,0,0,0,1,0,55.00333,9.163564,1.098612,3.082676,1 +1,1,0,0,3,129683,0,9542.002,63.5332,0,4,1,134.8894,23.32187,0,0,0,158.2113,0,0,0,4,0,3,35,13.73189,1,,450,0,0,0,1.098612,0,1,0,0,0,1,0,55.00333,9.163564,1.098612,5.063931,1 +10,1,50,1,1,129684,0,6771.712,4.120465,1,13,1,45.50863,3.491969,0,0,0,49.0006,0,0,0,2,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.02408,8.820657,1.386294,3.891832,1 +10,1,50,1,2,129684,0,6771.712,5.120465,1,13,1,39.7387,3.739793,0,0,0,43.4785,0,0,0,4,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.02408,8.820657,1.386294,3.772266,1 +10,1,50,1,3,129684,0,6771.712,6.120465,1,13,1,9.910803,0,23.20119,0,0,33.11199,0,0,0,0,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.02408,8.820657,1.386294,3.499896,1 +10,1,50,1,1,129685,0,6771.712,5.207392,1,13,1,22.60559,10.5235,0,0,0,33.12909,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.02408,8.820657,1.386294,3.500412,1 +10,1,50,1,2,129685,0,6771.712,6.207392,1,13,1,49.53729,1.62221,20.37017,0,0,71.52967,0,0,0,1,1,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.02408,8.820657,1.386294,4.270113,1 +10,1,50,1,3,129685,0,6771.712,7.207392,1,13,1,27.25471,2.477701,36.43211,0,0,66.16452,0,0,0,1,2,4,74.36826,13.73189,0,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.02408,8.820657,1.386294,4.192144,1 +10,1,50,1,1,129686,0,6771.712,24.282,1,13,1,39.26234,13.38489,0,0,0,52.64723,0,0,0,3,0,4,78.9,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,67.72769,8.820657,1.386294,3.963614,1 +10,1,50,1,2,129686,0,6771.712,25.282,1,13,1,95.80838,29.86391,0,0,0,125.6723,0,0,0,6,0,4,78.9,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,67.72769,8.820657,1.386294,4.833678,1 +10,1,50,1,3,129686,0,6771.712,26.282,1,13,1,164.668,36.86819,13.46383,0,0,215,0,0,0,13,0,4,78.9,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,67.72769,8.820657,1.386294,5.370638,1 +10,1,50,1,1,129687,0,6771.712,26.52704,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,76.8,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.59797,8.820657,1.386294,,0 +10,1,50,1,2,129687,0,6771.712,27.52704,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,76.8,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.59797,8.820657,1.386294,,0 +10,1,50,1,3,129687,0,6771.712,28.52704,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,76.8,0,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.59797,8.820657,1.386294,,0 +10,1,50,0,1,129693,0,4394.988,27.54552,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,78.9,4.3,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,1,0,61.37853,8.388448,1.386294,,0 +10,1,50,0,2,129693,0,4394.988,28.54552,0,10,1,5.390836,0,0,0,453.6604,459.0512,1,0,0,1,0,4,78.9,4.3,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,1,0,61.37853,8.388448,1.386294,6.129162,1 +10,1,50,0,3,129693,0,4394.988,29.54552,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,78.9,4.3,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,1,0,61.37853,8.388448,1.386294,,0 +10,1,50,0,4,129693,0,4394.988,30.54552,0,10,1,53.6691,0,6.836828,0,0,60.50592,0,0,0,2,0,4,78.9,4.3,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,1,0,61.37853,8.388448,1.386294,4.102741,1 +10,1,50,0,5,129693,0,4394.988,31.54552,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,78.9,4.3,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,1,0,61.37853,8.388448,1.386294,,0 +10,1,50,0,1,129694,0,4394.988,25.69199,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.7,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,68.15965,8.388448,1.386294,,0 +10,1,50,0,2,129694,0,4394.988,26.69199,1,11,1,0,0,7.719676,0,0,7.719676,0,0,0,0,0,4,74.7,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,68.15965,8.388448,1.386294,2.043772,1 +10,1,50,0,3,129694,0,4394.988,27.69199,1,11,1,0,5.208845,0,0,0,5.208845,0,0,0,0,0,4,74.7,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,68.15965,8.388448,1.386294,1.650358,1 +10,1,50,0,4,129694,0,4394.988,28.69199,1,11,1,68.82407,11.54512,0,0,0,80.36919,0,0,0,6,0,4,74.7,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,68.15965,8.388448,1.386294,4.386631,1 +10,1,50,0,5,129694,0,4394.988,29.69199,1,11,1,65.23551,0,0,0,0,65.23551,0,0,0,2,0,4,74.7,17.4,0,,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,68.15965,8.388448,1.386294,4.178004,1 +10,1,50,0,1,129695,0,4394.988,4.676249,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.88596,8.388448,1.386294,,0 +10,1,50,0,2,129695,0,4394.988,5.676249,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.88596,8.388448,1.386294,,0 +10,1,50,0,3,129695,0,4394.988,6.676249,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.88596,8.388448,1.386294,,0 +10,1,50,0,4,129695,0,4394.988,7.676249,0,11,1,5.925251,1.937101,0,0,0,7.862352,0,0,0,1,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.88596,8.388448,1.386294,2.062086,1 +10,1,50,0,5,129695,0,4394.988,8.67625,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.88596,8.388448,1.386294,,0 +2,1,100,0,1,129696,0,7392.06,21.99589,0,12,1,5.94884,0,0,0,0,5.94884,0,0,0,1,0,3,71.6,8.7,0,,599,599,0,0,1.098612,6.395262,1,0,0,1,0,0,68.6146,8.908297,1.098612,1.783196,1 +2,1,100,0,2,129696,0,7392.06,22.99589,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,71.6,8.7,0,,599,599,0,0,1.098612,6.395262,1,0,0,1,0,0,68.6146,8.908297,1.098612,,0 +2,1,100,0,3,129696,0,7392.06,23.99589,0,12,1,9.910803,0,0,0,0,9.910803,0,0,0,2,0,3,71.6,8.7,0,,599,599,0,0,1.098612,6.395262,1,0,0,1,0,0,68.6146,8.908297,1.098612,2.293625,1 +2,1,100,0,1,129697,0,7392.06,20.45996,1,11,1,5.94884,0,0,0,0,5.94884,0,0,0,1,0,3,31.6,17.4,1,,599,599,0,0,1.098612,6.395262,1,0,0,0,1,0,54.00756,8.908297,1.098612,1.783196,1 +2,1,100,0,2,129697,0,7392.06,21.45996,1,11,1,40.82743,11.5841,0,0,0,52.41154,0,0,0,0,0,3,31.6,17.4,1,,599,599,0,0,1.098612,6.395262,1,0,0,0,1,0,54.00756,8.908297,1.098612,3.959127,1 +2,1,100,0,3,129697,0,7392.06,22.45996,1,11,1,15.36174,15.66898,0,0,762.1853,793.2161,1,0,0,2,0,3,31.6,17.4,1,,599,599,0,0,1.098612,6.395262,1,0,0,0,1,0,54.00756,8.908297,1.098612,6.676095,1 +2,1,100,0,1,129698,0,7392.06,.991102,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,599,599,1,1,1.098612,6.395262,1,0,0,1,0,0,69.01308,8.908297,1.098612,,0 +2,1,100,0,2,129698,0,7392.06,1.991102,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,599,599,1,1,1.098612,6.395262,1,0,0,1,0,0,69.01308,8.908297,1.098612,,0 +2,1,100,0,3,129698,0,7392.06,2.991102,1,11,1,16.35283,0,0,0,0,16.35283,0,0,0,2,0,3,74.36826,13.73189,0,,599,599,1,1,1.098612,6.395262,1,0,0,1,0,0,69.01308,8.908297,1.098612,2.794401,1 +3,1,100,1,1,129699,0,4174.593,18.51061,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,73.7,17.4,0,,513,0,0,0,1.386294,0,1,0,0,1,0,0,63.95783,8.337011,1.386294,,0 +3,1,100,1,2,129699,0,4174.593,19.51061,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,73.7,17.4,0,,513,0,0,0,1.386294,0,1,0,0,1,0,0,63.95783,8.337011,1.386294,,0 +3,1,100,1,3,129699,0,4174.593,20.51061,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,73.7,17.4,0,,513,0,0,0,1.386294,0,1,0,0,1,0,0,63.95783,8.337011,1.386294,,0 +3,1,100,1,4,129699,0,4174.593,21.51061,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,73.7,17.4,0,,513,0,0,0,1.386294,0,1,0,0,1,0,0,63.95783,8.337011,1.386294,,0 +3,1,100,1,1,129700,0,4174.593,16.45448,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,61.1,8.7,0,,513,0,1,1,1.386294,0,1,0,0,1,0,0,60.48014,8.337011,1.386294,,0 +3,1,100,1,2,129700,0,4174.593,17.45448,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,61.1,8.7,0,,513,0,1,1,1.386294,0,1,0,0,1,0,0,60.48014,8.337011,1.386294,,0 +3,1,100,1,3,129700,0,4174.593,18.45448,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,61.1,8.7,0,,513,0,0,0,1.386294,0,1,0,0,1,0,0,60.48014,8.337011,1.386294,,0 +3,1,100,1,4,129700,0,4174.593,19.45448,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,61.1,8.7,0,,513,0,0,0,1.386294,0,1,0,0,1,0,0,60.48014,8.337011,1.386294,,0 +3,1,100,1,5,129700,0,4174.593,20.45448,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,61.1,8.7,0,,513,0,0,0,1.098612,0,1,0,0,1,0,0,60.48014,8.337011,1.098612,,0 +3,1,100,1,1,129701,0,4174.593,51.77823,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,42.1,34.8,0,,513,0,0,0,1.386294,0,1,0,0,0,1,0,48.03789,8.337011,1.386294,,0 +3,1,100,1,2,129701,0,4174.593,52.77823,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,42.1,34.8,0,,513,0,0,0,1.386294,0,1,0,0,0,1,0,48.03789,8.337011,1.386294,,0 +3,1,100,1,3,129701,0,4174.593,53.77823,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,42.1,34.8,0,,513,0,0,0,1.386294,0,1,0,0,0,1,0,48.03789,8.337011,1.386294,,0 +3,1,100,1,4,129701,0,4174.593,54.77823,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,42.1,34.8,0,,513,0,0,0,1.386294,0,1,0,0,0,1,0,48.03789,8.337011,1.386294,,0 +3,1,100,1,5,129701,0,4174.593,55.77823,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,42.1,34.8,0,,513,0,0,0,1.098612,0,1,0,0,0,1,0,48.03789,8.337011,1.098612,,0 +3,1,100,1,1,129702,0,4174.593,55.30732,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,96.8,4.3,0,,513,0,0,0,1.386294,0,1,0,0,0,0,0,72.67507,8.337011,1.386294,,0 +3,1,100,1,2,129702,0,4174.593,56.30732,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,96.8,4.3,0,,513,0,0,0,1.386294,0,1,0,0,0,0,0,72.67507,8.337011,1.386294,,0 +3,1,100,1,3,129702,0,4174.593,57.30732,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,96.8,4.3,0,,513,0,0,0,1.386294,0,1,0,0,0,0,0,72.67507,8.337011,1.386294,,0 +3,1,100,1,4,129702,0,4174.593,58.30732,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,96.8,4.3,0,,513,0,0,0,1.386294,0,1,0,0,0,0,0,72.67507,8.337011,1.386294,,0 +3,1,100,1,5,129702,0,4174.593,59.30732,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,96.8,4.3,0,,513,0,0,0,1.098612,0,1,0,0,0,0,0,72.67507,8.337011,1.098612,,0 +4,1,100,0,1,129703,0,9542.002,21.23751,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,87.4,13,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,72.72614,9.163564,1.098612,,0 +4,1,100,0,1,129704,0,9542.002,23.34292,0,14,1,0,0,0,0,0,0,0,0,0,0,0,3,76.8,13,0,,1000,1000,0,0,1.098612,6.907755,1,0,0,0,0,0,72.09547,9.163564,1.098612,,0 +4,1,100,0,1,129705,0,9542.002,.6652977,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,0,,1000,1000,1,1,1.098612,6.907755,1,0,0,1,0,0,69.41489,9.163564,1.098612,,0 +5,1,25,1,1,129706,0,13354.84,54.72964,1,13,1,191.8917,231.4515,71.64188,0,0,494.9851,0,0,0,7,1,3,86.3,17.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,66.29183,9.499709,1.098612,6.204528,1 +5,1,25,1,2,129706,0,13354.84,55.72964,1,13,1,313.865,226.3963,18.50844,0,0,558.7697,0,0,0,5,21,3,86.3,17.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,66.29183,9.499709,1.098612,6.325737,1 +5,1,25,1,3,129706,0,13354.84,56.72964,1,13,1,183.3499,280.3023,50.54509,0,0,514.1972,0,0,0,4,25,3,86.3,17.4,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,66.29183,9.499709,1.098612,6.242607,1 +5,1,25,1,1,129707,0,13354.84,53.22108,0,18,1,67.22189,3.099346,0,0,0,70.32124,0,0,0,2,7,3,71.6,26.1,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,76.58466,9.499709,1.098612,4.253074,1 +5,1,25,1,2,129707,0,13354.84,54.22108,0,18,1,158.9548,27.13119,22.75449,0,0,208.8405,0,0,0,2,11,3,71.6,26.1,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,76.58466,9.499709,1.098612,5.341571,1 +5,1,25,1,3,129707,0,13354.84,55.22108,0,18,1,220.2428,30.00496,34.1774,0,0,284.4252,0,0,0,15,15,3,71.6,26.1,0,,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,76.58466,9.499709,1.098612,5.65047,1 +5,1,25,1,1,129708,0,13354.84,14.42574,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,63.2,4.3,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,80.99551,9.499709,1.098612,,0 +5,1,25,1,2,129708,0,13354.84,15.42574,0,13,1,22.319,10.37017,13.08655,0,0,45.77572,0,0,0,2,1,3,63.2,4.3,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,80.99551,9.499709,1.098612,3.823754,1 +5,1,25,1,3,129708,0,13354.84,16.42574,0,13,1,15.85728,0,25.46085,0,0,41.31814,0,0,0,1,1,3,63.2,4.3,0,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,80.99551,9.499709,1.098612,3.721302,1 +3,1,100,1,1,129711,0,6417.494,20.31759,1,13,1,39.85723,7.311124,41.12433,0,0,88.29269,0,0,0,3,0,2,86.3,8.7,0,,549,549,0,0,.6931472,6.308098,1,0,0,0,0,0,74.39403,8.766939,.6931472,4.480657,1 +3,1,100,1,2,129711,0,6417.494,21.31759,1,13,1,12.52041,14.8503,12.1448,0,0,39.51551,0,0,0,1,0,2,86.3,8.7,0,,549,549,0,0,.6931472,6.308098,1,0,0,0,0,0,74.39403,8.766939,.6931472,3.676693,1 +3,1,100,1,3,129711,0,6417.494,22.31759,1,13,1,39.39544,2.106045,1.555996,0,0,43.05748,0,0,0,3,0,2,86.3,8.7,0,,549,549,0,0,.6931472,6.308098,1,0,0,0,0,0,74.39403,8.766939,.6931472,3.762536,1 +3,1,100,1,1,129712,0,6417.494,20.5859,0,12,1,33.3135,0,33.56931,0,0,66.8828,0,0,0,4,0,2,78.9,21.7,0,,549,549,0,0,.6931472,6.308098,1,0,0,0,0,0,76.28976,8.766939,.6931472,4.202942,1 +3,1,100,1,2,129712,0,6417.494,21.5859,0,12,1,14.69788,9.031029,0,0,0,23.72891,0,0,0,3,0,2,78.9,21.7,0,,549,549,0,0,.6931472,6.308098,1,0,0,0,0,0,76.28976,8.766939,.6931472,3.166694,1 +3,1,100,1,3,129712,0,6417.494,22.5859,0,12,1,0,2.725471,0,0,0,2.725471,0,0,0,0,0,2,78.9,21.7,0,,549,549,0,0,.6931472,6.308098,1,0,0,0,0,0,76.28976,8.766939,.6931472,1.002641,1 +4,1,100,0,1,129720,0,20.47146,57.06229,1,12,1,62.42638,174.9234,0,0,0,237.3498,0,0,0,7,0,1,73.7,8.7,1,,1000,1000,0,0,0,6.907755,1,0,0,0,1,0,55.02307,3.066725,0,5.469535,1 +4,1,100,0,2,129720,0,20.47146,58.06229,1,12,1,112.1294,84.61456,42.04852,0,0,238.7924,0,0,0,8,0,1,73.7,8.7,1,,1000,1000,0,0,0,6.907755,1,0,0,0,1,0,55.02307,3.066725,0,5.475595,1 +4,1,100,0,3,129720,0,20.47146,59.06229,1,12,1,69.28747,128.0393,0,0,5207.415,5404.742,3,0,0,9,0,1,73.7,8.7,1,,1000,1000,0,0,0,6.907755,1,0,0,0,1,0,55.02307,3.066725,0,8.595032,1 +4,1,100,0,4,129720,0,20.47146,60.06229,1,12,1,59.93619,105.9572,41.16226,0,0,207.0556,0,0,0,8,0,1,73.7,8.7,1,,1000,1000,0,0,0,6.907755,1,0,0,0,1,0,55.02307,3.066725,0,5.332987,1 +4,1,100,0,5,129720,0,20.47146,61.06229,1,12,1,73.3639,125.173,0,0,0,198.5369,0,0,0,7,0,1,73.7,8.7,1,,1000,1000,0,0,0,6.907755,1,0,0,0,1,0,55.02307,3.066725,0,5.290975,1 +11,1,0,0,1,129721,0,14764.89,53.44832,1,9,1,52.23082,15.77038,31.70732,0,0,99.7085,0,0,0,1,1,1,87.5,13.73189,0,,0,0,0,0,0,0,0,0,0,1,0,0,69.5894,9.600075,0,4.602251,1 +11,1,0,0,2,129721,0,14764.89,54.44832,1,9,1,281.3609,10.74034,0,0,403.3043,695.4056,1,0,0,1,0,1,87.5,13.73189,0,,0,0,0,0,0,0,0,0,0,1,0,0,69.5894,9.600075,0,6.544495,1 +11,1,0,0,3,129721,0,14764.89,55.44832,1,9,1,53.96432,51.11496,43.49851,0,0,148.5778,0,0,0,5,2,1,87.5,13.73189,0,,0,0,0,0,0,0,0,0,0,1,0,0,69.5894,9.600075,0,5.001109,1 +11,1,0,0,1,129723,0,4022.953,24.11225,1,12,1,149.4646,48.34622,0,0,0,197.8108,0,0,0,5,1,1,78.8,13.73189,0,,0,72,0,0,0,4.276666,0,0,0,0,0,0,79.25463,8.30002,0,5.287311,1 +11,1,0,0,2,129723,0,4022.953,25.11225,1,12,1,56.34186,31.72564,18.20359,0,0,106.2711,0,0,0,3,1,1,78.8,13.73189,0,,0,72,0,0,0,4.276666,0,0,0,0,0,0,79.25463,8.30002,0,4.665993,1 +11,1,0,0,3,129723,0,4022.953,26.11225,1,12,1,20.81269,47.72052,0,0,1215.03,1283.563,1,0,0,2,1,1,78.8,13.73189,0,,0,72,0,0,0,4.276666,0,0,0,0,0,0,79.25463,8.30002,0,7.157395,1 +3,1,100,0,1,129724,1,9542.002,50.97057,0,12,1,7.656066,0,35.33569,0,0,42.99176,0,0,0,0,1,1,75,13.73189,0,,0,0,0,0,0,0,1,0,0,0,1,0,69.46405,9.163564,0,3.761009,1 +3,1,100,0,2,129724,1,9542.002,51.97057,0,12,1,52.04313,0,0,0,0,52.04313,0,0,0,1,0,1,75,13.73189,0,,0,0,0,0,0,0,1,0,0,0,1,0,69.46405,9.163564,0,3.952073,1 +3,1,100,0,3,129724,1,9542.002,52.97057,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,75,13.73189,0,,0,0,0,0,0,0,1,0,0,0,1,0,69.46405,9.163564,0,,0 +3,1,100,0,4,129724,1,9542.002,53.97057,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,75,13.73189,0,,0,0,0,0,0,0,1,0,0,0,1,0,69.46405,9.163564,0,,0 +3,1,100,0,5,129724,1,9542.002,54.97057,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,75,13.73189,0,,0,0,0,0,0,0,1,0,0,0,1,0,69.46405,9.163564,0,,0 +11,1,0,0,1,129727,1,9055.211,.3367556,0,12,1,32.3741,6.90048,0,0,0,39.27458,0,0,0,1,2,8,74.36826,13.73189,1,,0,0,1,0,2.079442,0,0,0,0,0,1,0,79.11517,9.111206,2.079442,3.670578,1 +11,1,0,0,2,129727,1,9055.211,1.336756,0,12,1,4.381161,0,0,0,0,4.381161,0,0,0,1,0,8,74.36826,13.73189,1,,0,0,1,0,2.079442,0,0,0,0,0,1,0,79.11517,9.111206,2.079442,1.477314,1 +11,1,0,0,3,129727,1,9055.211,2.336756,0,12,1,16.20948,0,0,0,0,16.20948,0,0,0,1,0,8,74.36826,13.73189,1,,0,0,1,0,2.079442,0,0,0,0,0,1,0,79.11517,9.111206,2.079442,2.785596,1 +11,1,0,0,4,129727,1,9055.211,3.336756,0,12,1,82.1208,14.52743,0,0,0,96.64822,0,0,0,7,0,8,74.36826,13.73189,1,,0,0,1,0,2.079442,0,0,0,0,0,1,0,79.11517,9.111206,2.079442,4.571078,1 +11,1,0,0,5,129727,1,9055.211,4.336756,0,12,1,6.347863,2.179433,0,0,0,8.527296,0,0,0,1,0,8,74.36826,13.73189,1,,0,0,1,0,2.079442,0,0,0,0,0,1,0,79.11517,9.111206,2.079442,2.143272,1 +6,1,25,1,1,129730,0,9542.002,.5201917,0,12,1,59.33451,6.448763,0,0,0,65.78327,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,69.2646,9.163564,1.791759,4.186366,1 +6,1,25,1,2,129730,0,9542.002,1.520192,0,12,1,98.62534,2.12938,0,0,0,100.7547,0,0,0,3,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,69.2646,9.163564,1.791759,4.612689,1 +6,1,25,1,3,129730,0,9542.002,2.520192,0,12,1,50.95823,2.432432,0,0,300.5651,353.9558,1,0,0,4,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,69.2646,9.163564,1.791759,5.869172,1 +6,1,25,1,4,129730,0,9542.002,3.520192,0,12,1,14.58523,0,0,0,0,14.58523,0,0,0,1,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,69.2646,9.163564,1.791759,2.68001,1 +6,1,25,1,5,129730,0,9542.002,4.520192,0,12,1,45.85244,0,0,0,0,45.85244,0,0,0,3,0,6,74.36826,13.73189,0,,1000,1000,1,0,1.791759,6.907755,0,3.258096,8.294049,1,0,0,69.2646,9.163564,1.791759,3.825428,1 +7,1,25,1,1,129732,1,1176.179,.4079398,0,5,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,340,340,1,0,1.791759,5.828946,0,3.258096,7.21524,0,1,0,76.96879,7.070876,1.791759,,0 +7,1,25,1,2,129732,1,1176.179,1.40794,0,5,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,340,340,1,0,1.791759,5.828946,0,3.258096,7.21524,0,1,0,76.96879,7.070876,1.791759,,0 +9,1,50,0,1,129733,0,9542.002,.3477071,1,10,1,20.82094,0,0,0,0,20.82094,0,0,0,3,0,5,74.36826,13.73189,0,,799,799,1,1,1.609438,6.683361,0,3.931826,7.376508,0,0,0,78.49355,9.163564,1.609438,3.035959,1 +9,1,50,0,2,129733,0,9542.002,1.347707,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,799,799,1,1,1.609438,6.683361,0,3.931826,7.376508,0,0,0,78.49355,9.163564,1.609438,,0 +9,1,50,0,3,129733,0,9542.002,2.347707,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.36826,13.73189,0,,799,799,1,1,1.609438,6.683361,0,3.931826,7.376508,0,0,0,78.49355,9.163564,1.609438,,0 +11,1,0,0,1,129734,0,7262.407,.2628337,1,18,1,64.19317,6.990577,0,0,0,71.18375,0,0,0,8,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,0,0,0,79.03451,8.890604,1.098612,4.265265,1 +11,1,0,0,2,129734,0,7262.407,1.262834,1,18,1,80.6469,14.57682,0,0,0,95.22372,0,0,0,9,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,0,0,0,79.03451,8.890604,1.098612,4.556229,1 +11,1,0,0,3,129734,0,7262.407,2.262834,1,18,1,23.58722,14.57494,0,0,0,38.16216,0,0,0,3,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,0,0,0,79.03451,8.890604,1.098612,3.641845,1 +11,1,0,0,4,129734,0,7262.407,3.262834,1,18,1,18.68733,14.7402,0,0,0,33.42753,0,0,0,2,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,0,0,0,79.03451,8.890604,1.098612,3.50938,1 +11,1,0,0,5,129734,0,7262.407,4.262834,1,18,1,45.01876,11.32138,0,0,0,56.34014,0,0,0,6,0,3,74.36826,13.73189,0,,0,0,1,1,1.098612,0,0,0,0,0,0,0,79.03451,8.890604,1.098612,4.031407,1 +9,1,50,0,1,129736,0,84.36725,20.80493,0,12.32507,1,19.43463,0,33.23911,0,0,52.67373,0,0,0,2,0,3,86.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,78.6664,4.446962,1.098612,3.964117,1 +9,1,50,0,2,129736,0,84.36725,21.80493,0,12.32507,1,56.87331,3.22911,0,0,0,60.10242,0,0,0,4,0,3,86.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,78.6664,4.446962,1.098612,4.09605,1 +9,1,50,0,3,129736,0,84.36725,22.80493,0,12.32507,1,45.70024,.972973,30.46683,0,0,77.14005,0,0,0,3,1,3,86.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,78.6664,4.446962,1.098612,4.345623,1 +9,1,50,0,4,129736,0,84.36725,23.80493,0,12.32507,1,12.76208,0,26.67274,0,0,39.43482,0,0,0,1,0,3,86.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,78.6664,4.446962,1.098612,3.674649,1 +9,1,50,0,5,129736,0,84.36725,24.80493,0,12.32507,1,0,0,0,0,0,0,0,0,0,0,0,3,86.3,13.73189,0,,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,78.6664,4.446962,1.098612,,0 +1,1,0,1,1,129738,0,10474.57,.1451061,0,11,1,10.88638,2.314099,0,0,429.655,442.8554,1,0,0,1,0,8,74.36826,13.73189,1,,450,0,1,0,2.079442,0,1,0,0,0,0,0,79.9105,9.256801,2.079442,6.093244,1 +1,1,0,1,2,129738,0,10474.57,1.145106,0,11,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,1,,450,0,1,0,2.079442,0,1,0,0,0,0,0,79.9105,9.256801,2.079442,,0 +1,1,0,1,3,129738,0,10474.57,2.145106,0,11,1,13.37958,0,0,0,71.35778,84.73737,0,0,0,3,0,8,74.36826,13.73189,1,,450,0,1,0,2.079442,0,1,0,0,0,0,0,79.9105,9.256801,2.079442,4.439557,1 +1,1,0,1,4,129738,0,10474.57,3.145106,0,11,1,55.98899,16.12207,0,0,0,72.11106,0,0,0,9,0,8,74.36826,13.73189,1,,450,0,1,0,2.079442,0,1,0,0,0,0,0,79.9105,9.256801,2.079442,4.278207,1 +1,1,0,1,5,129738,0,10474.57,4.145106,0,11,1,7.57257,2.141355,0,0,0,9.713925,0,0,0,1,0,8,74.36826,13.73189,1,,450,0,1,0,2.079442,0,1,0,0,0,0,0,79.9105,9.256801,2.079442,2.273561,1 +3,1,100,0,1,129740,0,9542.002,.1670089,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,0,1.791759,5.645447,1,0,0,0,0,0,76.84648,9.163564,1.791759,,0 +3,1,100,0,2,129740,0,9542.002,1.167009,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,0,1.791759,5.645447,1,0,0,0,0,0,76.84648,9.163564,1.791759,,0 +3,1,100,0,3,129740,0,9542.002,2.167009,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,74.36826,13.73189,0,,283,283,1,0,1.791759,5.645447,1,0,0,0,0,0,76.84648,9.163564,1.791759,,0 +10,1,50,0,1,129741,0,7948.511,.1560575,0,13,1,97.46761,54.91755,0,0,0,152.3852,0,0,0,16,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,71.92097,8.980865,1.098612,5.026411,1 +10,1,50,0,2,129741,0,7948.511,1.156057,0,13,1,44.74393,20.91105,0,0,0,65.65498,0,0,0,6,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,71.92097,8.980865,1.098612,4.184413,1 +10,1,50,0,3,129741,0,7948.511,2.156058,0,13,1,43.73464,23.56757,0,0,271.7445,339.0467,1,0,0,9,0,3,74.36826,13.73189,0,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,71.92097,8.980865,1.098612,5.826138,1 +6,1,25,1,1,129742,0,7717.122,.2956879,0,16,1,29.97602,0,0,0,0,29.97602,0,0,0,3,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.4164,8.951326,1.386294,3.400398,1 +6,1,25,1,2,129742,0,7717.122,1.295688,0,16,1,22.45345,0,0,0,0,22.45345,0,0,0,2,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.4164,8.951326,1.386294,3.111444,1 +6,1,25,1,3,129742,0,7717.122,2.295688,0,16,1,4.987531,0,0,0,0,4.987531,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.4164,8.951326,1.386294,1.606941,1 +6,1,25,1,4,129742,0,7717.122,3.295688,0,16,1,7.376671,0,0,0,0,7.376671,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.4164,8.951326,1.386294,1.998322,1 +6,1,25,1,5,129742,0,7717.122,4.295688,0,16,1,43.90605,0,0,0,0,43.90605,0,0,0,1,0,4,74.36826,13.73189,0,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,82.4164,8.951326,1.386294,3.782052,1 +11,1,0,0,1,129743,1,9542.002,.0903491,1,13,1,135.5216,6.18705,0,0,1714.658,1856.367,3,0,0,9,6,8,74.36826,13.73189,.0327869,,0,325,1,1,2.079442,5.783825,0,0,0,0,0,0,77.93793,9.163564,2.079442,7.526377,1 +11,1,0,0,2,129743,1,9542.002,1.090349,1,13,1,174.2881,18.34611,0,0,2025.767,2218.401,2,0,0,23,1,8,74.36826,13.73189,.0327869,,0,325,1,1,2.079442,5.783825,0,0,0,0,0,0,77.93793,9.163564,2.079442,7.704542,1 +11,1,0,0,3,129743,1,9542.002,2.090349,1,13,1,183.9152,10.09975,0,0,654.5885,848.6035,1,0,0,41,0,9,74.36826,13.73189,.0327869,,0,325,1,1,2.197225,5.783825,0,0,0,0,0,0,77.93793,9.163564,2.197225,6.743592,1 +11,1,0,0,4,129743,1,9542.002,3.090349,1,13,1,81.92715,0,0,0,1009.106,1091.033,1,1,0,20,0,10,74.36826,13.73189,.0327869,,0,325,1,1,2.302585,5.783825,0,0,0,0,0,0,77.93793,9.163564,2.302585,6.99488,1 +11,1,0,0,5,129743,1,9542.002,4.090349,1,13,1,122.7888,16.29285,0,0,924.3419,1063.424,1,0,0,21,0,10,74.36826,13.73189,.0327869,,0,325,1,1,2.302585,5.783825,0,0,0,0,0,0,77.93793,9.163564,2.302585,6.969249,1 +10,1,50,0,1,129744,0,4394.988,.5475702,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.57345,8.388448,1.386294,,0 +10,1,50,0,2,129744,0,4394.988,1.54757,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.57345,8.388448,1.386294,,0 +10,1,50,0,3,129744,0,4394.988,2.54757,0,11,1,13.75921,5.208845,0,0,0,18.96806,0,0,0,1,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.57345,8.388448,1.386294,2.942756,1 +10,1,50,0,4,129744,0,4394.988,3.54757,0,11,1,38.74202,9.380128,0,0,0,48.12215,0,0,0,4,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.57345,8.388448,1.386294,3.873743,1 +10,1,50,0,5,129744,0,4394.988,4.54757,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.57345,8.388448,1.386294,,0 +11,1,0,0,2,129746,0,5583.747,.5017111,1,11,1,94.71365,33.18282,0,0,354.3447,482.2412,1,0,0,15,0,6,74.36826,13.73189,.0327869,,0,458,1,1,1.791759,6.126869,0,0,0,0,0,0,78.6601,8.627794,1.791759,6.178444,1 +11,1,0,0,3,129746,0,5583.747,1.501711,1,11,1,39.17629,6.805625,0,0,0,45.98192,0,0,0,7,0,6,74.36826,13.73189,.0327869,,0,458,1,1,1.791759,6.126869,0,0,0,0,0,0,78.6601,8.627794,1.791759,3.828248,1 +11,1,0,0,4,129746,0,5583.747,2.501711,1,11,1,23.64395,20.48679,0,0,0,44.13074,0,0,0,5,0,6,74.36826,13.73189,.0327869,,0,458,1,1,1.791759,6.126869,0,0,0,0,0,0,78.6601,8.627794,1.791759,3.787157,1 +11,1,0,0,5,129746,0,5583.747,3.501711,1,11,1,0,3.913229,0,0,0,3.913229,0,0,0,0,0,6,74.36826,13.73189,.0327869,,0,458,1,1,1.791759,6.126869,0,0,0,0,0,0,78.6601,8.627794,1.791759,1.364363,1 +1,1,0,0,2,129747,0,9542.002,.5126626,0,16,1,39.89218,2.792453,0,0,0,42.68464,0,0,0,5,0,4,74.36826,13.73189,.0327869,,450,145,1,0,1.386294,4.976734,1,0,0,0,0,0,80.89316,9.163564,1.386294,3.753839,1 +1,1,0,0,3,129747,0,9542.002,1.512663,0,16,1,60.44226,17.37101,0,0,0,77.81327,0,0,0,8,0,4,74.36826,13.73189,.0327869,,450,145,1,0,1.386294,4.976734,1,0,0,0,0,0,80.89316,9.163564,1.386294,4.354312,1 +4,1,100,0,2,129748,0,9723.945,.5017111,0,12,1,158.8679,20,0,0,0,178.8679,0,0,0,13,0,3,74.36826,13.73189,.0327869,,1000,1000,1,0,1.098612,6.907755,1,0,0,0,0,0,82.17735,9.182449,1.098612,5.186648,1 +4,1,100,0,3,129748,0,9723.945,1.501711,0,12,1,41.76904,16.69779,0,0,0,58.46683,0,0,0,7,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,82.17735,9.182449,1.386294,4.06846,1 +4,1,100,0,4,129748,0,9723.945,2.501711,0,12,1,30.99362,9.52598,0,0,0,40.5196,0,0,0,5,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,82.17735,9.182449,1.386294,3.701786,1 +4,1,100,0,5,129748,0,9723.945,3.501711,0,12,1,42.51772,14.65194,0,0,0,57.16965,0,0,0,8,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,82.17735,9.182449,1.386294,4.046023,1 +2,1,100,0,2,129750,0,8172.457,.4934976,0,12,1,38.64997,7.174741,0,0,0,45.82471,0,0,0,5,0,8,74.36826,13.73189,.0327869,,0,0,1,0,2.079442,0,1,0,0,0,0,0,81.06033,9.008647,2.079442,3.824824,1 +2,1,100,0,3,129750,0,8172.457,1.493498,0,12,1,4.955401,0,0,0,0,4.955401,0,0,0,1,0,8,74.36826,13.73189,.0327869,,0,0,1,0,2.079442,0,1,0,0,0,0,0,81.06033,9.008647,2.079442,1.600478,1 +2,1,100,0,4,129750,0,8172.457,2.493498,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,74.36826,13.73189,.0327869,,0,0,1,0,2.079442,0,1,0,0,0,0,0,81.06033,9.008647,2.079442,,0 +2,1,100,0,5,129750,0,8172.457,3.493498,0,12,1,10.93816,0,0,0,0,10.93816,0,0,0,2,0,9,74.36826,13.73189,.0327869,,0,0,1,0,2.197225,0,1,0,0,0,0,0,81.06033,9.008647,2.197225,2.392257,1 +11,1,0,0,2,129756,1,1,.8795345,0,14,1,51.56938,0,0,0,0,51.56938,0,0,0,1,0,3,74.36826,13.73189,.0327869,,0,0,1,0,1.098612,0,0,0,0,0,0,0,73.85006,.6931472,1.098612,3.942928,1 +11,1,0,0,3,129756,1,1,1.879535,0,14,1,30.13561,0,0,0,0,30.13561,0,0,0,2,0,3,74.36826,13.73189,.0327869,,0,0,1,0,1.098612,0,0,0,0,0,0,0,73.85006,.6931472,1.098612,3.405708,1 +8,1,50,0,2,129773,0,1728.908,.247091,1,11,1,106.9679,5.764834,0,2.721829,0,112.7327,0,0,1,13,0,4,74.36826,13.73189,.0327869,,163,450,1,1,1.386294,6.109248,0,3.931826,5.786897,0,0,0,78.02865,7.455823,1.386294,4.72502,1 +8,1,50,0,3,129773,0,1728.908,1.247091,1,11,1,44.59861,8.002974,0,0,0,52.60159,0,0,0,6,0,4,74.36826,13.73189,.0327869,,163,450,1,1,1.386294,6.109248,0,3.931826,5.786897,0,0,0,78.02865,7.455823,1.386294,3.962746,1 +8,1,50,0,4,129773,0,1728.908,2.247091,1,11,1,26.61771,10.94539,0,0,0,37.5631,0,0,0,3,0,4,74.36826,13.73189,.0327869,,163,450,1,1,1.386294,6.109248,0,3.931826,5.786897,0,0,0,78.02865,7.455823,1.386294,3.626022,1 +8,1,50,0,5,129773,0,1728.908,3.247091,1,11,1,10.51746,2.103492,0,0,0,12.62095,0,0,0,0,0,4,74.36826,13.73189,.0327869,,163,450,1,1,1.386294,6.109248,0,3.931826,5.786897,0,0,0,78.02865,7.455823,1.386294,2.535358,1 +7,1,25,0,3,129793,0,8393.3,.8610541,0,13,1,34.68781,5.450942,0,0,0,40.13875,0,0,0,4,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.74842,9.035308,1.386294,3.692342,1 +11,1,0,0,3,129803,1,9542.002,.9869952,1,13,1,130.4239,3.117207,0,0,2036.983,2170.524,3,0,0,13,0,9,74.36826,13.73189,.0327869,,0,325,1,1,2.197225,5.783825,0,0,0,0,0,0,77.93793,9.163564,2.197225,7.682724,1 +11,1,0,0,4,129803,1,9542.002,1.986995,1,13,1,31.44306,3.250346,0,0,0,34.69341,0,0,0,2,0,10,74.36826,13.73189,.0327869,,0,325,1,1,2.302585,5.783825,0,0,0,0,0,0,77.93793,9.163564,2.302585,3.54655,1 +11,1,0,0,5,129803,1,9542.002,2.986995,1,13,1,8.887008,0,0,0,0,8.887008,0,0,0,1,0,10,74.36826,13.73189,.0327869,,0,325,1,1,2.302585,5.783825,0,0,0,0,0,0,77.93793,9.163564,2.302585,2.18459,1 +11,1,0,0,2,129811,1,1004.963,.4880219,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.0327869,,0,0,1,1,1.386294,0,0,0,0,0,0,0,73.3017,6.9137,1.386294,,0 +11,1,0,0,3,129811,1,1004.963,1.488022,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.0327869,,0,0,1,1,1.386294,0,0,0,0,0,0,0,73.3017,6.9137,1.386294,,0 +9,1,50,0,2,129812,0,11526.05,.6769336,0,12,1,81.59912,15.03286,8.214677,0,0,104.8467,0,0,0,10,0,6,74.36826,13.73189,.0327869,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,81.83923,9.352452,1.791759,4.652499,1 +9,1,50,0,3,129812,0,11526.05,1.676934,0,12,1,63.71571,.8728179,0,0,0,64.58853,0,0,0,5,0,6,74.36826,13.73189,.0327869,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,81.83923,9.352452,1.791759,4.168037,1 +9,1,50,0,4,129812,0,11526.05,2.676934,0,12,1,16.59751,4.550484,0,0,0,21.14799,0,0,0,2,0,6,74.36826,13.73189,.0327869,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,81.83923,9.352452,1.791759,3.051545,1 +9,1,50,0,5,129812,0,11526.05,3.676934,0,12,1,17.77402,0,0,0,0,17.77402,0,0,0,2,0,6,74.36826,13.73189,.0327869,,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,81.83923,9.352452,1.791759,2.877738,1 +6,1,25,0,2,129813,0,7893.92,.8877481,0,12,1,51.47864,16.54436,0,0,0,68.023,0,0,0,8,0,3,74.36826,13.73189,.0327869,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,81.94308,8.973975,1.098612,4.219846,1 +6,1,25,0,3,129813,0,7893.92,1.887748,0,12,1,23.4414,25.13217,0,0,0,48.57357,0,0,0,4,0,3,74.36826,13.73189,.0327869,,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,81.94308,8.973975,1.098612,3.88308,1 +3,1,100,0,2,129814,0,6588.709,.8795345,1,16,1,26.41509,0,0,0,0,26.41509,0,0,0,4,0,3,74.36826,13.73189,.0327869,,900,900,1,1,1.098612,6.802395,1,0,0,0,0,0,80.37918,8.793264,1.098612,3.273936,1 +3,1,100,0,3,129814,0,6588.709,1.879535,1,16,1,14.74201,10.95823,0,0,0,25.70024,0,0,0,2,0,3,74.36826,13.73189,.0327869,,900,900,1,1,1.098612,6.802395,1,0,0,0,0,0,80.37918,8.793264,1.098612,3.2465,1 +11,1,0,0,2,129815,0,7975.186,.8384668,1,12,1,45.70485,12.27423,0,0,0,57.97908,0,0,0,6,0,5,74.36826,13.73189,.0327869,,0,323,1,1,1.609438,5.777652,0,0,0,0,0,0,80.7588,8.984216,1.609438,4.060082,1 +11,1,0,0,3,129815,0,7975.186,1.838467,1,12,1,23.10397,5.273732,0,0,0,28.3777,0,0,0,3,0,5,74.36826,13.73189,.0327869,,0,323,1,1,1.609438,5.777652,0,0,0,0,0,0,80.7588,8.984216,1.609438,3.345604,1 +11,1,0,0,4,129815,0,7975.186,2.838467,1,12,1,11.59017,2.012054,0,0,0,13.60223,0,0,0,2,0,5,74.36826,13.73189,.0327869,,0,323,1,1,1.609438,5.777652,0,0,0,0,0,0,80.7588,8.984216,1.609438,2.610233,1 +11,1,0,0,5,129815,0,7975.186,3.838467,1,12,1,49.55338,10.6678,0,0,0,60.22118,0,0,0,5,1,5,74.36826,13.73189,.0327869,,0,323,1,1,1.609438,5.777652,0,0,0,0,0,0,80.7588,8.984216,1.609438,4.098024,1 +11,1,0,0,2,129816,0,8689.826,.6632444,1,17,1,79.13472,23.78423,0,0,0,102.9189,0,0,0,9,1,3,74.36826,13.73189,.0327869,,0,0,1,1,1.098612,0,0,0,0,0,0,0,82.75417,9.070024,1.098612,4.633942,1 +11,1,0,0,3,129816,0,8689.826,1.663244,1,17,1,49.37656,5.820449,6.254364,0,0,61.45137,0,0,0,7,0,3,74.36826,13.73189,.0327869,,0,0,1,1,1.098612,0,0,0,0,0,0,0,82.75417,9.070024,1.098612,4.118246,1 +6,1,25,0,2,129817,0,17027.92,.7015743,1,15,1,77.84431,28.03484,0,0,0,105.8792,0,0,0,9,0,4,74.36826,13.73189,.0327869,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.92996,9.742668,1.386294,4.662298,1 +6,1,25,0,3,129817,0,17027.92,1.701574,1,15,1,88.70168,35.85233,0,0,0,124.554,0,0,0,22,0,4,74.36826,13.73189,.0327869,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,81.92996,9.742668,1.386294,4.824739,1 +6,1,25,0,2,129818,0,5303.97,.5756331,1,14,1,39.64758,16.16189,0,0,0,55.80947,0,0,0,5,0,3,74.36826,13.73189,.0327869,,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,80.03653,8.5764,1.098612,4.021944,1 +6,1,25,0,3,129818,0,5303.97,1.575633,1,14,1,16.07232,10.77348,0,0,0,26.84581,0,0,0,2,0,3,74.36826,13.73189,.0327869,,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,80.03653,8.5764,1.098612,3.29011,1 +6,1,25,0,4,129818,0,5303.97,2.575633,1,14,1,216.319,17.16273,0,0,0,233.4817,0,0,0,8,0,3,74.36826,13.73189,.0327869,,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,80.03653,8.5764,1.098612,5.453104,1 +6,1,25,0,5,129818,0,5303.97,3.575633,1,14,1,7.656316,8.906848,0,0,0,16.56316,0,0,0,1,0,3,74.36826,13.73189,.0327869,,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,80.03653,8.5764,1.098612,2.807181,1 +11,1,0,0,2,129819,0,8508.685,.9069131,0,15,1,20.48518,10.48518,0,0,0,30.97035,0,0,0,2,0,4,74.36826,13.73189,.0327869,,0,60,1,0,1.386294,4.094345,0,0,0,0,0,0,81.83858,9.04896,1.386294,3.43303,1 +11,1,0,0,3,129819,0,8508.685,1.906913,0,15,1,19.41032,1.174447,0,0,0,20.58477,0,0,0,3,0,4,74.36826,13.73189,.0327869,,0,60,1,0,1.386294,4.094345,0,0,0,0,0,0,81.83858,9.04896,1.386294,3.024551,1 +11,1,0,0,2,129820,0,1518.61,.9370294,1,11,1,44.35926,15.7448,0,0,0,60.10405,0,0,0,7,0,3,74.36826,13.73189,.0327869,,0,0,1,1,1.098612,0,0,0,0,0,0,0,76.39096,7.32621,1.098612,4.096077,1 +11,1,0,0,3,129820,0,1518.61,1.937029,1,11,1,11.47132,4.114713,0,0,0,15.58603,0,0,1,1,0,3,74.36826,13.73189,.0327869,,0,0,1,1,1.098612,0,0,0,0,0,0,0,76.39096,7.32621,1.098612,2.746375,1 +11,1,0,0,4,129820,0,1518.61,2.937029,1,11,1,14.2923,10.4426,0,0,0,24.7349,0,0,0,3,0,3,74.36826,13.73189,.0327869,,0,0,1,1,1.098612,0,0,0,0,0,0,0,76.39096,7.32621,1.098612,3.208215,1 +11,1,0,0,5,129820,0,1518.61,3.937029,1,11,1,11.84934,3.470165,0,0,0,15.31951,0,0,0,2,0,4,74.36826,13.73189,.0327869,,0,0,1,1,1.386294,0,0,0,0,0,0,0,76.39096,7.32621,1.386294,2.729127,1 +2,1,100,0,2,129821,0,9138.338,.8329911,0,13,1,26.95418,1.428571,0,0,0,28.38275,0,0,0,3,0,4,74.36826,13.73189,.0327869,,890,890,1,0,1.386294,6.791222,1,0,0,0,0,0,81.7118,9.120343,1.386294,3.345782,1 +2,1,100,0,3,129821,0,9138.338,1.832991,0,13,1,9.336609,.982801,0,0,0,10.31941,0,0,0,1,0,4,74.36826,13.73189,.0327869,,890,890,1,0,1.386294,6.791222,1,0,0,0,0,0,81.7118,9.120343,1.386294,2.334027,1 +2,1,100,0,4,129821,0,9138.338,2.832991,0,13,1,15.04102,4.922516,0,0,0,19.96354,0,0,0,2,0,4,74.36826,13.73189,.0327869,,890,890,1,0,1.386294,6.791222,1,0,0,0,0,0,81.7118,9.120343,1.386294,2.993907,1 +2,1,100,0,5,129821,0,9138.338,3.832991,0,13,1,325.7857,7.419758,0,0,0,333.2055,0,0,0,6,56,4,74.36826,13.73189,.0327869,,890,890,1,0,1.386294,6.791222,1,0,0,0,0,0,81.7118,9.120343,1.386294,5.808759,1 +11,1,0,0,3,129842,0,22318.24,.7296372,1,12,1,117.9551,27.73067,0,0,0,145.6858,0,0,0,13,0,9,74.36826,13.73189,.0327869,,0,0,1,1,2.197225,0,0,0,0,0,0,0,81.69742,10.0132,2.197225,4.981452,1 +9,1,50,0,3,129846,0,17723.95,.8391513,1,12,1,32.70565,6.471754,0,0,0,39.1774,0,0,0,4,0,7,74.36826,13.73189,.0327869,,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,0,0,0,82.52234,9.782728,1.94591,3.6681,1 +5,1,25,0,3,129847,1,10909.43,.7926078,0,12,1,24.93766,0,0,0,0,24.93766,0,0,0,5,0,2,74.36826,13.73189,.0327869,,399,399,1,0,.6931472,5.988961,0,3.258096,7.375256,0,0,0,77.02913,9.297475,.6931472,3.216379,1 +5,1,25,0,4,129847,1,10909.43,1.792608,0,12,1,40.91747,2.807745,0,0,0,43.72522,0,0,0,5,0,2,74.36826,13.73189,.0327869,,399,399,1,0,.6931472,5.988961,0,3.258096,7.375256,0,0,0,77.02913,9.297475,.6931472,3.777925,1 +5,1,25,0,5,129847,1,10909.43,2.792608,0,12,1,7.194244,0,0,0,0,7.194244,0,0,0,1,0,2,74.36826,13.73189,.0327869,,399,399,1,0,.6931472,5.988961,0,3.258096,7.375256,0,0,0,77.02913,9.297475,.6931472,1.973281,1 +4,1,100,0,3,129851,0,5982.63,.715948,1,13,1,15.97052,2.599509,0,0,0,18.57002,0,0,0,3,0,3,74.36826,13.73189,.0327869,,1000,1000,1,1,1.098612,6.907755,1,0,0,0,0,0,80.58455,8.696783,1.098612,2.921549,1 +4,1,100,0,4,129851,0,5982.63,1.715948,1,13,1,1.709207,9.913401,0,0,0,11.62261,0,0,0,0,0,4,74.36826,13.73189,.0327869,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,80.58455,8.696783,1.386294,2.452952,1 +4,1,100,0,5,129851,0,5982.63,2.715948,1,13,1,0,6.673614,0,0,0,6.673614,0,0,0,0,0,4,74.36826,13.73189,.0327869,,1000,1000,1,1,1.386294,6.907755,1,0,0,0,0,0,80.58455,8.696783,1.386294,1.898162,1 +11,1,0,0,3,129854,0,7755.583,.6447639,1,11,1,77.64128,8.594595,0,0,0,86.23587,0,0,0,6,0,2,74.36826,13.73189,.0327869,,0,204,1,1,.6931472,5.31812,0,0,0,0,0,0,80.04872,8.956297,.6931472,4.457086,1 +11,1,0,0,4,129854,0,7755.583,1.644764,1,11,1,23.24521,2.274385,0,0,0,25.5196,0,0,0,1,0,2,74.36826,13.73189,.0327869,,0,204,1,1,.6931472,5.31812,0,0,0,0,0,0,80.04872,8.956297,.6931472,3.239447,1 +11,1,0,0,5,129854,0,7755.583,2.644764,1,11,1,57.25302,0,0,0,0,57.25302,0,0,0,2,0,2,74.36826,13.73189,.0327869,,0,204,1,1,.6931472,5.31812,0,0,0,0,0,0,80.04872,8.956297,.6931472,4.047481,1 +11,1,0,0,3,129856,1,9542.002,.9568788,0,8,1,70.3667,7.081269,0,0,0,77.44797,0,0,0,6,0,4,74.36826,13.73189,.0327869,,0,0,1,0,1.386294,0,0,0,0,0,0,0,75.50523,9.163564,1.386294,4.349607,1 +11,1,0,0,4,129856,1,9542.002,1.956879,0,8,1,19.2749,11.00046,0,0,0,30.27536,0,0,0,4,0,4,74.36826,13.73189,.0327869,,0,0,1,0,1.386294,0,0,0,0,0,0,0,75.50523,9.163564,1.386294,3.410334,1 +11,1,0,0,5,129856,1,9542.002,2.956879,0,8,1,114.8507,10.58898,0,0,0,125.4396,0,0,0,7,0,5,74.36826,13.73189,.0327869,,0,0,1,0,1.609438,0,0,0,0,0,0,0,75.50523,9.163564,1.609438,4.831825,1 +10,1,50,0,3,129859,0,8723.945,.4339494,0,16,1,83.29177,18.89775,19.54613,0,0,121.7357,0,0,0,7,0,2,74.36826,13.73189,.0327869,,200,200,1,0,.6931472,5.298317,0,3.931826,5.991465,0,0,0,78.04851,9.073941,.6931472,4.801852,1 +10,1,50,0,4,129859,0,8723.945,1.433949,0,16,1,18.90272,21.1941,33.72983,0,0,73.82664,0,0,0,2,0,2,74.36826,13.73189,.0327869,,200,200,1,0,.6931472,5.298317,0,3.931826,5.991465,0,0,0,78.04851,9.073941,.6931472,4.30172,1 +10,1,50,0,5,129859,0,8723.945,2.433949,0,16,1,21.15954,8.556919,28.73889,0,0,58.45535,0,0,0,3,0,2,74.36826,13.73189,.0327869,,200,200,1,0,.6931472,5.298317,0,3.931826,5.991465,0,0,0,78.04851,9.073941,.6931472,4.068263,1 +9,1,50,0,3,129866,0,12300.87,.4941821,1,11,1,60.93366,7.361179,0,0,0,68.29484,0,0,0,7,0,7,74.36826,13.73189,.0327869,,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,0,0,0,81.108,9.417506,1.94591,4.223834,1 +4,1,100,0,3,129867,0,8857.32,.3983573,1,12,1,30.42394,6.503741,0,0,0,36.92768,0,0,0,4,0,6,74.36826,13.73189,.0327869,,1000,1000,1,1,1.791759,6.907755,1,0,0,0,0,0,80.58329,9.089112,1.791759,3.608961,1 +4,1,100,0,4,129867,0,8857.32,1.398357,1,12,1,29.04564,9.460581,0,0,0,38.50623,0,0,0,1,3,6,74.36826,13.73189,.0327869,,1000,1000,1,1,1.791759,6.907755,1,0,0,0,0,0,80.58329,9.089112,1.791759,3.65082,1 +4,1,100,0,5,129867,0,8857.32,2.398357,1,12,1,36.9234,6.068557,0,0,0,42.99196,0,0,0,0,6,6,74.36826,13.73189,.0327869,,1000,1000,1,1,1.791759,6.907755,1,0,0,0,0,0,80.58329,9.089112,1.791759,3.761013,1 +6,1,25,0,3,129868,0,9743.176,.4640657,1,12,1,127.1499,10.00491,0,0,0,137.1548,0,0,0,11,1,5,74.36826,13.73189,.0327869,,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,81.11051,9.184425,1.609438,4.92111,1 +11,1,0,0,3,129870,0,6108.39,.3080082,1,12,1,85.28678,5.23192,0,0,0,90.5187,0,0,0,11,0,3,74.36826,13.73189,.0327869,,0,146,1,1,1.098612,4.983607,0,0,0,0,0,0,80.16436,8.717582,1.098612,4.505557,1 +4,1,100,0,3,129871,0,4392.68,.5407255,0,11,1,8.845209,3.528255,0,0,0,12.37346,0,0,0,1,0,3,74.36826,13.73189,.0327869,,75,75,1,0,1.098612,4.317488,1,0,0,0,0,0,75.84013,8.387922,1.098612,2.515554,1 +4,1,100,0,4,129871,0,4392.68,1.540726,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,.0327869,,75,75,1,0,1.098612,4.317488,1,0,0,0,0,0,75.84013,8.387922,1.098612,,0 +4,1,100,0,5,129871,0,4392.68,2.540725,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,74.36826,13.73189,.0327869,,75,75,1,0,1.098612,4.317488,1,0,0,0,0,0,75.84013,8.387922,1.098612,,0 +4,1,100,0,3,129872,0,9723.945,.3408624,0,12,1,117.4447,22.62899,10.01474,0,0,150.0885,0,0,0,18,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,82.17735,9.182449,1.386294,5.011225,1 +4,1,100,0,4,129872,0,9723.945,1.340862,0,12,1,32.81677,1.98268,0,0,0,34.79945,0,0,0,5,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,82.17735,9.182449,1.386294,3.549602,1 +4,1,100,0,5,129872,0,9723.945,2.340863,0,12,1,18.34097,0,0,0,0,18.34097,0,0,0,2,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,82.17735,9.182449,1.386294,2.909138,1 +11,1,0,0,4,129889,0,9542.002,.779603,0,12,1,262.7165,26.75934,0,0,0,289.4758,0,0,0,12,0,3,74.36826,13.73189,.0327869,,0,0,1,0,1.098612,0,0,0,0,0,0,0,82.56407,9.163564,1.098612,5.668072,1 +11,1,0,0,5,129889,0,9542.002,1.779603,0,12,1,47.93664,0,0,0,0,47.93664,0,0,0,8,0,3,74.36826,13.73189,.0327869,,0,0,1,0,1.098612,0,0,0,0,0,0,0,82.56407,9.163564,1.098612,3.86988,1 +1,1,0,0,3,129892,0,8401.985,.3819302,1,16,1,81.57248,10.7027,0,0,930.2949,1022.57,1,0,0,8,0,4,74.36826,13.73189,.0327869,,450,450,1,1,1.386294,6.109248,1,0,0,0,0,0,80.21985,9.036343,1.386294,6.930074,1 +11,1,0,0,4,129905,0,5075.062,.4291581,0,13,1,163.4855,7.833103,0,0,0,171.3186,0,0,0,15,0,3,74.36826,13.73189,.0327869,,0,0,1,0,1.098612,0,0,0,0,0,0,0,79.02892,8.532291,1.098612,5.143525,1 +11,1,0,0,5,129905,0,5075.062,1.429158,0,13,1,30.46974,13.96107,0,0,0,44.43081,0,0,0,6,0,3,74.36826,13.73189,.0327869,,0,0,1,0,1.098612,0,0,0,0,0,0,0,79.02892,8.532291,1.098612,3.793933,1 +8,1,50,0,4,129908,0,8419.976,.8480493,1,12,1,50.25357,6.860304,0,0,0,57.11388,0,0,0,6,0,5,74.36826,13.73189,.0327869,,599,599,1,1,1.609438,6.395262,0,3.931826,7.088409,0,0,0,80.42316,9.038481,1.609438,4.045047,1 +8,1,50,0,5,129908,0,8419.976,1.848049,1,12,1,28.77698,8.451121,0,0,0,37.2281,0,0,0,6,0,5,74.36826,13.73189,.0327869,,599,599,1,1,1.609438,6.395262,0,3.931826,7.088409,0,0,0,80.42316,9.038481,1.609438,3.617064,1 +11,1,0,0,4,129910,1,9542.002,.3880903,0,13,1,59.01337,0,0,0,0,59.01337,0,0,0,4,0,10,74.36826,13.73189,.0327869,,0,325,1,0,2.302585,5.783825,0,0,0,0,0,0,78.4519,9.163564,2.302585,4.077764,1 +11,1,0,0,5,129910,1,9542.002,1.38809,0,13,1,25.81464,0,0,0,0,25.81464,0,0,0,3,0,10,74.36826,13.73189,.0327869,,0,325,1,0,2.302585,5.783825,0,0,0,0,0,0,78.4519,9.163564,2.302585,3.250942,1 +11,1,0,0,4,129914,0,6586.849,.3004791,0,12,1,66.39005,26.83725,0,0,0,93.22729,0,0,0,8,0,2,74.36826,13.73189,.0327869,,0,0,1,0,.6931472,0,0,0,0,0,0,0,79.42117,8.792982,.6931472,4.53504,1 +11,1,0,0,5,129914,0,6586.849,1.300479,0,12,1,47.04613,2.323318,0,0,0,49.36945,0,0,0,6,0,2,74.36826,13.73189,.0327869,,0,0,1,0,.6931472,0,0,0,0,0,0,0,79.42117,8.792982,.6931472,3.899332,1 +11,1,0,0,4,129932,0,10726.43,.4236824,1,13,1,269.1602,21.43185,0,0,215.1675,505.7595,1,0,0,20,0,4,74.36826,13.73189,.0327869,,0,101,1,1,1.386294,4.61512,0,0,0,0,0,0,80.68107,9.280559,1.386294,6.226061,1 +11,1,0,0,5,129932,0,10726.43,1.423682,1,13,1,179.0913,33.68953,0,0,0,212.7808,0,0,0,14,0,4,74.36826,13.73189,.0327869,,0,101,1,1,1.386294,4.61512,0,0,0,0,0,0,80.68107,9.280559,1.386294,5.360263,1 +4,1,100,0,4,129933,0,5982.63,.2046544,0,13,1,29.96809,5.542388,0,0,0,35.51048,0,0,0,2,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,81.09853,8.696783,1.386294,3.569828,1 +4,1,100,0,5,129933,0,5982.63,1.204654,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.0327869,,1000,1000,1,0,1.386294,6.907755,1,0,0,0,0,0,81.09853,8.696783,1.386294,,0 +2,1,100,0,4,129937,0,5361.663,.2758385,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.36826,13.73189,.0327869,,409,0,1,1,1.386294,0,1,0,0,0,0,0,78.56108,8.587215,1.386294,,0 +2,1,100,0,5,129937,0,5361.663,1.275838,1,11,1,85.06136,1.269573,0,0,0,86.33093,0,0,0,5,0,4,74.36826,13.73189,.0327869,,409,0,1,1,1.386294,0,1,0,0,0,0,0,78.56108,8.587215,1.386294,4.458188,1 +11,1,0,0,5,129942,0,1518.61,.8596851,1,11,1,44.01185,6.191282,0,0,0,50.20313,0,0,0,7,0,4,74.36826,13.73189,.0327869,,0,0,1,1,1.386294,0,0,0,0,0,0,0,76.39096,7.32621,1.386294,3.916077,1 +7,1,25,0,5,129946,0,246.8983,.9253936,1,12,1,77.71989,9.028762,0,0,0,86.74864,0,0,0,6,0,3,74.36826,13.73189,.0327869,,0,0,1,1,1.098612,0,0,3.258096,0,0,0,0,76.69736,5.513019,1.098612,4.463015,1 +1,1,0,0,3,129951,0,1,.45859,0,9,1,12.28501,4.422605,0,0,0,16.70762,0,0,0,2,0,2,74.36826,13.73189,.0327869,,150,0,1,0,.6931472,0,1,0,0,0,0,0,78.54263,.6931472,.6931472,2.815865,1 +11,1,0,0,5,129974,1,9542.002,.4544832,1,8,1,36.60076,5.115692,0,0,0,41.71645,0,0,0,7,0,5,74.36826,13.73189,.0327869,,0,0,1,1,1.609438,0,0,0,0,0,0,0,74.99126,9.163564,1.609438,3.730896,1 +11,1,0,0,5,129978,0,9542.002,.2217659,1,15,1,38.93356,29.64452,0,0,0,68.57808,0,0,0,5,0,4,74.36826,13.73189,.0327869,,0,258,1,1,1.386294,5.552959,0,0,0,0,0,0,80.92299,9.163564,1.386294,4.227973,1 +2,1,100,0,5,129979,0,4534.119,.3832991,1,16,1,0,2.634431,0,0,0,2.634431,0,0,0,0,0,2,74.36826,13.73189,.0327869,,345,345,1,1,.6931472,5.843544,1,0,0,0,0,0,80.91808,8.419606,.6931472,.9686673,1 +2,1,100,0,5,129984,0,8172.457,.4435318,1,12,1,11.35886,3.188894,0,0,0,14.54775,0,0,0,2,0,9,74.36826,13.73189,.0327869,,0,0,1,1,2.197225,0,1,0,0,0,0,0,80.54636,9.008647,2.197225,2.677436,1 +7,1,25,0,5,129987,0,4188.585,.2491444,1,12,1,33.76407,0,0,0,0,33.76407,0,0,0,4,0,2,74.36826,13.73189,.0327869,,600,600,1,1,.6931472,6.39693,0,3.258096,7.783224,0,0,0,78.79649,8.340357,.6931472,3.519397,1 +1,1,0,0,5,129989,0,11965.26,.0657084,1,15,1,45.85612,6.705932,0,0,0,52.56205,0,0,0,7,0,5,74.36826,13.73189,.0327869,,450,120,1,1,1.609438,4.787492,1,0,0,0,0,0,81.90672,9.389847,1.609438,3.961994,1 +4,1,100,0,5,129992,0,6055.831,.0848734,0,12,1,104.7397,0,0,0,0,104.7397,0,0,0,13,0,2,74.36826,13.73189,.0327869,,374,374,1,0,.6931472,5.924256,1,0,0,0,0,0,78.3275,8.708942,.6931472,4.651479,1 +13,2,0,0,1,225019,0,6242.815,23.78645,0,12,1,82.6833,0,36.72387,0,0,119.4072,0,0,0,2,0,2,49.5,13.8,0,59.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,59.1,8.739347,.6931472,4.782539,1 +13,2,0,0,2,225019,0,6242.815,24.78645,0,12,1,5.255614,0,0,0,0,5.255614,0,0,0,1,0,3,49.5,13.8,0,59.1,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,59.1,8.739347,1.098612,1.659297,1 +13,2,0,0,3,225019,0,6242.815,25.78645,0,12,1,19.75417,0,0,0,0,19.75417,0,0,0,0,1,3,49.5,13.8,0,59.1,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,59.1,8.739347,1.098612,2.983365,1 +15,2,95,1,1,225020,0,4848.094,25.6564,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,75,6.9,0,55.7,550,550,0,0,.6931472,6.309918,0,4.564348,6.361212,1,0,0,55.7,8.486547,.6931472,,0 +15,2,95,1,2,225020,0,4848.094,26.6564,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,75,6.9,0,55.7,550,550,0,0,.6931472,6.309918,0,4.564348,6.361212,1,0,0,55.7,8.486547,.6931472,,0 +15,2,95,1,3,225020,0,4848.094,27.6564,0,16,1,30.60072,0,0,0,0,30.60072,0,0,0,3,0,2,75,6.9,0,55.7,550,550,0,0,.6931472,6.309918,0,4.564348,6.361212,1,0,0,55.7,8.486547,.6931472,3.421024,1 +15,2,95,1,4,225020,0,4848.094,28.6564,0,16,1,127.9694,0,0,0,0,127.9694,0,0,0,3,0,2,75,6.9,0,55.7,550,550,0,0,.6931472,6.309918,0,4.564348,6.361212,1,0,0,55.7,8.486547,.6931472,4.851791,1 +15,2,95,1,5,225020,0,4848.094,29.6564,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,75,6.9,0,55.7,550,550,0,0,.6931472,6.309918,0,4.564348,6.361212,1,0,0,55.7,8.486547,.6931472,,0 +15,2,95,1,1,225021,0,4848.094,23.3347,1,16,1,19.80728,6.183084,0,0,0,25.99036,0,0,0,1,1,2,79.3,10.3,0,80.7,550,550,0,0,.6931472,6.309918,0,4.564348,6.361212,1,0,0,80.7,8.486547,.6931472,3.257726,1 +15,2,95,1,2,225021,0,4848.094,24.3347,1,16,1,41.48365,32.75744,0,0,0,74.2411,0,0,0,3,1,2,79.3,10.3,0,80.7,550,550,0,0,.6931472,6.309918,0,4.564348,6.361212,1,0,0,80.7,8.486547,.6931472,4.307318,1 +15,2,95,1,3,225021,0,4848.094,25.3347,1,16,1,6.775068,.9530262,0,0,0,7.728094,0,0,0,0,0,2,79.3,10.3,0,80.7,550,550,0,0,.6931472,6.309918,0,4.564348,6.361212,1,0,0,80.7,8.486547,.6931472,2.044862,1 +15,2,95,1,4,225021,0,4848.094,26.3347,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,79.3,10.3,0,80.7,550,550,0,0,.6931472,6.309918,0,4.564348,6.361212,1,0,0,80.7,8.486547,.6931472,,0 +15,2,95,1,5,225021,0,4848.094,27.3347,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,79.3,10.3,0,80.7,550,550,0,0,.6931472,6.309918,0,4.564348,6.361212,1,0,0,80.7,8.486547,.6931472,,0 +11,2,0,1,1,225022,0,9751.906,36.1807,0,13,1,75.57211,0,0,0,0,75.57211,0,0,0,1,6,2,85.6,10.3,0,68.2,0,179.04,0,0,.6931472,5.187609,0,0,0,1,0,0,68.2,9.185321,.6931472,4.325088,1 +11,2,0,1,2,225022,0,9751.906,37.1807,0,13,1,34.90063,0,0,0,0,34.90063,0,0,0,0,6,2,85.6,10.3,0,68.2,0,179.04,0,0,.6931472,5.187609,0,0,0,1,0,0,68.2,9.185321,.6931472,3.552505,1 +11,2,0,1,3,225022,0,9751.906,38.1807,0,13,1,104.7844,0,35.30099,0,0,140.0854,0,0,0,2,7,2,85.6,10.3,0,68.2,0,179.04,0,0,.6931472,5.187609,0,0,0,1,0,0,68.2,9.185321,.6931472,4.942252,1 +11,2,0,1,1,225023,0,9751.906,28.04381,1,12,1,101.8095,15.65194,0,0,0,117.4614,0,0,0,2,7,2,80.9,27.6,0,70.5,0,179.04,0,0,.6931472,5.187609,0,0,0,1,0,0,70.5,9.185321,.6931472,4.76611,1 +11,2,0,1,2,225023,0,9751.906,29.04381,1,12,1,104.096,0,0,0,0,104.096,0,0,0,3,4,2,80.9,27.6,0,70.5,0,179.04,0,0,.6931472,5.187609,0,0,0,1,0,0,70.5,9.185321,.6931472,4.645313,1 +11,2,0,1,3,225023,0,9751.906,30.04381,1,12,1,404.1779,17.99191,0,0,0,422.1698,0,0,0,6,13,2,80.9,27.6,0,70.5,0,179.04,0,0,.6931472,5.187609,0,0,0,1,0,0,70.5,9.185321,.6931472,6.045408,1 +13,2,0,1,1,225032,0,8263.93,7.603012,1,12,1,260.3504,18.10243,0,0,56.95418,335.407,1,0,0,3,1,5,85,11.84267,0,74.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.019776,1.609438,5.815345,1 +13,2,0,1,2,225032,0,8263.93,8.603012,1,12,1,24.32432,0,0,0,0,24.32432,0,0,0,1,1,5,85,11.84267,0,74.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.019776,1.609438,3.191477,1 +13,2,0,1,3,225032,0,8263.93,9.603012,1,12,1,33.27256,10.82954,0,0,0,44.1021,0,0,0,2,1,5,85,11.84267,0,74.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.019776,1.609438,3.786507,1 +13,2,0,1,1,225033,0,8263.93,30.30801,0,9,1,13.47709,0,31.36927,0,0,44.84636,0,0,0,0,1,5,85.6,6.9,0,72.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,72.7,9.019776,1.609438,3.803242,1 +13,2,0,1,2,225033,0,8263.93,31.30801,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,85.6,6.9,0,72.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,72.7,9.019776,1.609438,,0 +13,2,0,1,3,225033,0,8263.93,32.30801,0,9,1,85.5743,20.10483,0,0,0,105.6791,0,0,0,9,1,5,85.6,6.9,0,72.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,72.7,9.019776,1.609438,4.660408,1 +13,2,0,1,1,225034,0,8263.93,.8596851,1,12,1,157.0081,34.58221,0,0,0,191.5903,0,0,0,19,0,5,81.35272,11.84267,0,74.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.019776,1.609438,5.255359,1 +13,2,0,1,2,225034,0,8263.93,1.859685,1,12,1,69.04177,35.71008,0,0,0,104.7518,0,0,0,6,0,5,81.35272,11.84267,0,74.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.019776,1.609438,4.651594,1 +13,2,0,1,3,225034,0,8263.93,2.859685,1,12,1,70.64722,39.45305,0,0,283.2726,393.3728,1,0,0,7,0,5,81.35272,11.84267,0,74.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.019776,1.609438,5.974758,1 +13,2,0,1,1,225035,0,8263.93,9.500342,0,12,1,13.47709,0,25.83288,0,0,39.30997,0,0,0,0,1,5,85,11.84267,0,74.1,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.019776,1.609438,3.671478,1 +13,2,0,1,2,225035,0,8263.93,10.50034,0,12,1,116.4619,0,14.74201,0,0,131.2039,0,0,0,5,1,5,85,11.84267,0,74.1,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.019776,1.609438,4.876753,1 +13,2,0,1,3,225035,0,8263.93,11.50034,0,12,1,105.0592,22.79398,28.08569,0,0,155.9389,0,0,0,6,1,5,85,11.84267,0,74.1,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.019776,1.609438,5.049464,1 +13,2,0,1,1,225036,0,8263.93,31.04996,1,12,1,72.938,3.374663,34.63073,0,0,110.9434,0,0,0,4,2,5,65.4,24.1,0,43.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,43.2,9.019776,1.609438,4.70902,1 +13,2,0,1,2,225036,0,8263.93,32.04996,1,12,1,52.33415,16.69287,0,0,1866.167,1935.194,2,0,0,5,0,5,65.4,24.1,0,43.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,43.2,9.019776,1.609438,7.567963,1 +13,2,0,1,3,225036,0,8263.93,33.04996,1,12,1,39.6536,0,0,0,0,39.6536,0,0,0,2,2,5,65.4,24.1,0,43.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,43.2,9.019776,1.609438,3.680182,1 +7,2,25,1,1,225040,0,8288.563,54.02875,1,10,1,14.04056,15.39262,0,0,0,29.43318,0,0,0,2,0,2,92,20.7,0,84.1,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,84.1,9.022753,.6931472,3.382123,1 +7,2,25,1,2,225040,0,8288.563,55.02875,1,10,1,16.72241,0,35.57573,0,0,52.29814,0,0,0,0,1,2,92,20.7,0,84.1,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,84.1,9.022753,.6931472,3.956961,1 +7,2,25,1,3,225040,0,8288.563,56.02875,1,10,1,72.10272,2.589991,307.2871,0,0,381.9798,0,0,0,2,0,2,92,20.7,0,84.1,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,84.1,9.022753,.6931472,5.945368,1 +7,2,25,1,4,225040,0,8288.563,57.02875,1,10,1,12.76426,0,35.81173,0,0,48.57599,0,0,0,0,1,2,92,20.7,0,84.1,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,84.1,9.022753,.6931472,3.883129,1 +7,2,25,1,5,225040,0,8288.563,58.02875,1,10,1,18.12908,0,0,0,0,18.12908,0,0,0,2,0,2,92,20.7,0,84.1,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,84.1,9.022753,.6931472,2.897517,1 +7,2,25,1,1,225041,0,8288.563,59.32101,0,12,1,18.72075,4.550182,0,0,0,23.27093,0,0,0,1,0,2,93.1,6.9,0,81.8,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,81.8,9.022753,.6931472,3.147205,1 +7,2,25,1,2,225041,0,8288.563,60.32101,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,93.1,6.9,0,81.8,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,81.8,9.022753,.6931472,,0 +7,2,25,1,3,225041,0,8288.563,61.32101,0,12,1,13.16945,0,49.50834,0,0,62.67779,0,0,0,0,1,2,93.1,6.9,0,81.8,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,81.8,9.022753,.6931472,4.138007,1 +7,2,25,1,4,225041,0,8288.563,62.32101,0,12,1,7.179896,5.540487,0,0,0,12.72038,0,0,0,1,0,2,93.1,6.9,0,81.8,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,81.8,9.022753,.6931472,2.543206,1 +7,2,25,1,5,225041,0,8288.563,63.32101,0,12,1,85.71429,2.751994,0,0,0,88.46628,0,0,0,3,0,2,93.1,6.9,0,81.8,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,81.8,9.022753,.6931472,4.482622,1 +11,2,0,0,1,225060,0,9883.284,24.21903,0,12,1,37.64289,0,0,0,0,37.64289,0,0,0,1,0,2,73.4,6.9,0,67,0,0,0,0,.6931472,0,0,0,0,1,0,0,67,9.198701,.6931472,3.628144,1 +11,2,0,0,2,225060,0,9883.284,25.21903,0,12,1,60.20813,9.395441,0,0,0,69.60357,0,0,0,3,0,2,73.4,6.9,0,67,0,0,0,0,.6931472,0,0,0,0,1,0,0,67,9.198701,.6931472,4.242816,1 +11,2,0,0,3,225060,0,9883.284,26.21903,0,12,1,16.06241,0,42.02386,0,0,58.08628,0,0,0,0,1,3,73.4,6.9,0,67,0,0,0,0,1.098612,0,0,0,0,1,0,0,67,9.198701,1.098612,4.061929,1 +11,2,0,0,1,225061,0,9883.284,21.54141,1,12,1,128.4703,9.49374,0,0,70.76756,208.7316,1,1,0,6,3,2,71.3,6.9,0,64.8,0,0,0,0,.6931472,0,0,0,0,0,0,0,64.8,9.198701,.6931472,5.341049,1 +11,2,0,0,2,225061,0,9883.284,22.54141,1,12,1,24.0337,55.37165,2.953419,0,715.6343,797.993,1,0,0,1,0,2,71.3,6.9,0,64.8,0,0,0,0,.6931472,0,0,0,0,0,0,0,64.8,9.198701,.6931472,6.6821,1 +11,2,0,0,3,225061,0,9883.284,23.54141,1,12,1,0,15.14915,0,0,0,15.14915,0,0,0,0,0,3,71.3,6.9,0,64.8,0,0,0,0,1.098612,0,0,0,0,0,0,0,64.8,9.198701,1.098612,2.717944,1 +14,2,95,1,1,225062,0,5547.801,26.0616,0,18,1,0,0,0,0,0,0,0,0,0,0,0,2,89.9,0,0,97.7,205.1,81.93,0,0,.6931472,4.405865,0,4.564348,5.374791,0,0,0,97.7,8.621337,.6931472,,0 +14,2,95,1,2,225062,0,5547.801,27.0616,0,18,1,0,0,0,0,0,0,0,0,0,0,0,2,89.9,0,0,97.7,205.1,81.93,0,0,.6931472,4.405865,0,4.564348,5.374791,0,0,0,97.7,8.621337,.6931472,,0 +14,2,95,1,3,225062,0,5547.801,28.0616,0,18,1,0,0,0,0,0,0,0,0,0,0,0,2,89.9,0,0,97.7,205.1,81.93,0,0,.6931472,4.405865,0,4.564348,5.374791,0,0,0,97.7,8.621337,.6931472,,0 +14,2,95,1,1,225063,0,5547.801,22.34634,1,16,1,19.40701,9.865229,0,0,0,29.27224,0,0,0,1,0,2,73.4,20.7,1,46.6,205.1,81.93,0,0,.6931472,4.405865,0,4.564348,5.374791,1,0,0,46.6,8.621337,.6931472,3.37664,1 +14,2,95,1,2,225063,0,5547.801,23.34634,1,16,1,8.353808,11.58722,22.11302,0,0,42.05405,0,0,0,1,0,2,73.4,20.7,1,46.6,205.1,81.93,0,0,.6931472,4.405865,0,4.564348,5.374791,1,0,0,46.6,8.621337,.6931472,3.738956,1 +14,2,95,1,3,225063,0,5547.801,24.34634,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,73.4,20.7,1,46.6,205.1,81.93,0,0,.6931472,4.405865,0,4.564348,5.374791,1,0,0,46.6,8.621337,.6931472,,0 +11,2,0,1,1,225064,0,6253.373,24.05202,0,13,1,32.25375,0,0,0,0,32.25375,0,0,0,2,0,2,70.2,6.9,0,44.3,0,0,0,0,.6931472,0,0,0,0,1,0,0,44.3,8.741036,.6931472,3.473634,1 +11,2,0,1,2,225064,0,6253.373,25.05202,0,13,1,17.32553,1.756955,0,0,0,19.08248,0,0,0,2,0,2,70.2,6.9,0,44.3,0,0,0,0,.6931472,0,0,0,0,1,0,0,44.3,8.741036,.6931472,2.948771,1 +11,2,0,1,3,225064,0,6253.373,26.05202,0,13,1,39.29539,5.140018,0,18.06685,0,44.43541,0,0,2,4,0,2,70.2,6.9,0,44.3,0,0,0,0,.6931472,0,0,0,0,1,0,0,44.3,8.741036,.6931472,3.794037,1 +11,2,0,1,1,225065,0,6253.373,20.69815,1,12,1,151.2313,11.31692,0,0,0,162.5482,0,0,0,14,0,2,84,13.8,0,60.2,0,0,0,0,.6931472,0,0,0,0,1,0,0,60.2,8.741036,.6931472,5.090974,1 +11,2,0,1,2,225065,0,6253.373,21.69815,1,12,1,107.7355,4.636408,0,0,0,112.3719,0,0,0,10,0,2,84,13.8,0,60.2,0,0,0,0,.6931472,0,0,0,0,1,0,0,60.2,8.741036,.6931472,4.721814,1 +11,2,0,1,3,225065,0,6253.373,22.69815,1,12,1,233.9657,45.98916,0,31.61698,797.3758,1077.331,1,0,3,22,0,2,84,13.8,0,60.2,0,0,0,0,.6931472,0,0,0,0,1,0,0,60.2,8.741036,.6931472,6.982242,1 +13,2,0,1,1,225066,0,4092.669,20.21355,1,13,1,43.40921,3.54685,19.0577,0,643.7692,709.783,1,0,0,1,1,3,66.5,10.3,0,85.2,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,0,85.2,8.317197,1.098612,6.564959,1 +13,2,0,1,2,225066,0,4092.669,21.21355,1,13,1,12.54826,0,0,0,0,12.54826,0,0,0,1,0,4,66.5,10.3,0,85.2,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,85.2,8.317197,1.386294,2.529582,1 +13,2,0,1,3,225066,0,4092.669,22.21355,1,13,1,4.450378,4.650645,0,0,593.5024,602.6035,1,0,0,0,0,4,66.5,10.3,0,85.2,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,85.2,8.317197,1.386294,6.401259,1 +13,2,0,1,1,225067,0,4092.669,27.29911,0,13,1,40.23293,0,35.0397,0,0,75.27263,0,0,0,3,0,3,73.4,0,0,60.2,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,0,60.2,8.317197,1.098612,4.321116,1 +13,2,0,1,2,225067,0,4092.669,28.29911,0,13,1,22.6834,3.875483,0,0,0,26.55888,0,0,0,2,0,4,73.4,0,0,60.2,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,60.2,8.317197,1.386294,3.279364,1 +13,2,0,1,3,225067,0,4092.669,29.29911,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,73.4,0,0,60.2,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,60.2,8.317197,1.386294,,0 +15,2,95,1,1,225068,0,12639.3,27.2334,0,15,1,16.71159,0,0,0,0,16.71159,0,0,0,1,0,2,80.9,3.4,0,53.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,53.4,9.444645,.6931472,2.816103,1 +15,2,95,1,2,225068,0,12639.3,28.2334,0,15,1,86.97789,0,0,0,0,86.97789,0,0,0,3,0,2,80.9,3.4,0,53.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,53.4,9.444645,.6931472,4.465654,1 +15,2,95,1,3,225068,0,12639.3,29.2334,0,15,1,0,0,0,0,0,0,0,0,0,0,0,2,80.9,3.4,0,53.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,53.4,9.444645,.6931472,,0 +15,2,95,1,1,225069,0,12639.3,24.9473,1,14,1,33.42318,2.932615,19.40701,0,0,55.7628,0,0,0,3,0,2,72.9,13.8,0,56.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,56.8,9.444645,.6931472,4.021107,1 +15,2,95,1,2,225069,0,12639.3,25.9473,1,14,1,12.28501,0,0,0,0,12.28501,0,0,0,1,0,2,72.9,13.8,0,56.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,56.8,9.444645,.6931472,2.50838,1 +15,2,95,1,3,225069,0,12639.3,26.9473,1,14,1,9.11577,0,0,0,0,9.11577,0,0,0,1,0,2,72.9,13.8,0,56.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,56.8,9.444645,.6931472,2.210006,1 +13,2,0,0,1,225075,0,3851.026,50.31896,1,12,1,95.31169,12.39052,36.56878,0,0,144.271,0,0,0,3,0,1,64.9,10.3,0,75,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,75,8.256354,0,4.971694,1 +13,2,0,0,2,225075,0,3851.026,51.31896,1,12,1,75.99432,21.30208,0,0,0,97.2964,0,0,0,7,0,1,64.9,10.3,0,75,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,75,8.256354,0,4.577762,1 +13,2,0,0,3,225075,0,3851.026,52.31896,1,12,1,163.6324,23.03858,0,0,0,186.671,0,0,0,13,0,1,64.9,10.3,0,75,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,75,8.256354,0,5.229348,1 +11,2,0,0,1,225076,0,6874.487,57.01027,1,12,1,85.49251,33.51178,57.27516,0,0,176.2794,0,0,0,4,0,1,87.4,13.8,0,100,0,481.92,0,0,0,6.177778,0,0,0,0,0,0,100,8.835718,0,5.172071,1 +11,2,0,0,2,225076,0,6874.487,58.01027,1,12,1,125.3538,30.55149,0,0,0,155.9053,0,0,0,3,0,1,87.4,13.8,0,100,0,481.92,0,0,0,6.177778,0,0,0,0,0,0,100,8.835718,0,5.049249,1 +11,2,0,0,3,225076,0,6874.487,59.01027,1,12,1,86.72087,25.75881,14.81481,0,0,127.2945,0,0,0,3,0,1,87.4,13.8,0,100,0,481.92,0,0,0,6.177778,0,0,0,0,0,0,100,8.835718,0,4.846503,1 +11,2,0,0,4,225076,0,6874.487,60.01027,1,12,1,60.38048,63.32093,49.33002,0,0,173.0314,0,0,0,4,0,1,87.4,13.8,0,100,0,481.92,0,0,0,6.177778,0,0,0,0,0,0,100,8.835718,0,5.153473,1 +11,2,0,0,5,225076,0,6874.487,61.01027,1,12,1,290.5365,63.49106,46.68406,0,0,400.7116,0,0,0,8,0,1,87.4,13.8,0,100,0,481.92,0,0,0,6.177778,0,0,0,0,0,0,100,8.835718,0,5.993242,1 +15,2,95,1,1,225077,0,5484.751,3.964408,1,10,1,14.69788,1.769189,0,0,0,16.46707,0,0,0,2,0,5,81.35272,11.84267,0,63,552.5,396.19,1,1,1.609438,5.981894,0,4.564348,6.365746,1,0,0,63,8.609909,1.609438,2.801362,1 +15,2,95,1,2,225077,0,5484.751,4.964408,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,63,552.5,396.19,1,1,1.609438,5.981894,0,4.564348,6.365746,1,0,0,63,8.609909,1.609438,,0 +15,2,95,1,3,225077,0,5484.751,5.964408,1,10,1,12.62047,3.373107,0,0,0,15.99358,0,0,0,1,0,5,81.35272,11.84267,0,63,552.5,396.19,1,1,1.609438,5.981894,0,4.564348,6.365746,1,0,0,63,8.609909,1.609438,2.772187,1 +15,2,95,1,1,225078,0,5484.751,35.30458,0,12,1,16.33097,1.143168,0,0,0,17.47414,0,0,0,2,0,5,85.6,10.3,0,62.5,552.5,396.19,0,0,1.609438,5.981894,0,4.564348,6.365746,1,0,0,62.5,8.609909,1.609438,2.860722,1 +15,2,95,1,2,225078,0,5484.751,36.30458,0,12,1,69.37562,0,25.39148,0,0,94.7671,0,0,0,8,1,5,85.6,10.3,0,62.5,552.5,396.19,0,0,1.609438,5.981894,0,4.564348,6.365746,1,0,0,62.5,8.609909,1.609438,4.551422,1 +15,2,95,1,3,225078,0,5484.751,37.30458,0,12,1,16.98027,8.733364,0,0,0,25.71363,0,0,0,2,0,5,85.6,10.3,0,62.5,552.5,396.19,0,0,1.609438,5.981894,0,4.564348,6.365746,1,0,0,62.5,8.609909,1.609438,3.247021,1 +15,2,95,1,1,225079,0,5484.751,31.72895,1,10,1,0,7.512248,0,0,0,7.512248,0,0,0,0,0,5,70.2,27.6,1,60.2,552.5,396.19,0,0,1.609438,5.981894,0,4.564348,6.365746,1,0,0,60.2,8.609909,1.609438,2.016535,1 +15,2,95,1,2,225079,0,5484.751,32.72895,1,10,1,68.88008,0,0,0,0,68.88008,0,0,0,3,0,5,70.2,27.6,1,60.2,552.5,396.19,0,0,1.609438,5.981894,0,4.564348,6.365746,1,0,0,60.2,8.609909,1.609438,4.232367,1 +15,2,95,1,3,225079,0,5484.751,33.72895,1,10,1,132.1707,16.99403,0,0,0,149.1647,0,0,0,6,0,5,70.2,27.6,1,60.2,552.5,396.19,0,0,1.609438,5.981894,0,4.564348,6.365746,1,0,0,60.2,8.609909,1.609438,5.005052,1 +15,2,95,1,1,225080,0,5484.751,8.366872,0,10,1,31.30103,1.137725,0,0,161.8672,194.3059,1,0,0,3,0,5,60,11.84267,0,63,552.5,396.19,1,0,1.609438,5.981894,0,4.564348,6.365746,1,0,0,63,8.609909,1.609438,5.269434,1 +15,2,95,1,2,225080,0,5484.751,9.366872,0,10,1,87.33895,12.72052,0,0,0,100.0595,0,0,0,6,0,5,60,11.84267,0,63,552.5,396.19,1,0,1.609438,5.981894,0,4.564348,6.365746,1,0,0,63,8.609909,1.609438,4.605765,1 +15,2,95,1,3,225080,0,5484.751,10.36687,0,10,1,66.29188,0,0,0,0,66.29188,0,0,0,1,0,5,60,11.84267,0,63,552.5,396.19,1,0,1.609438,5.981894,0,4.564348,6.365746,1,0,0,63,8.609909,1.609438,4.194067,1 +15,2,95,1,1,225081,0,5484.751,6.893909,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,60,11.84267,0,55.6,552.5,396.19,1,1,1.609438,5.981894,0,4.564348,6.365746,1,0,0,55.6,8.609909,1.609438,,0 +15,2,95,1,2,225081,0,5484.751,7.893909,1,10,1,14.8662,2.725471,0,0,0,17.59167,0,0,0,2,0,5,60,11.84267,0,55.6,552.5,396.19,1,1,1.609438,5.981894,0,4.564348,6.365746,1,0,0,55.6,8.609909,1.609438,2.867426,1 +15,2,95,1,3,225081,0,5484.751,8.893909,1,10,1,131.62,0,0,0,0,131.62,0,0,0,3,0,5,60,11.84267,0,55.6,552.5,396.19,1,1,1.609438,5.981894,0,4.564348,6.365746,1,0,0,55.6,8.609909,1.609438,4.879919,1 +13,2,0,1,1,225099,0,13923.17,12.64613,0,17,1,0,0,0,0,0,0,0,0,0,0,0,5,93.3,11.84267,0,66.7,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,66.7,9.541381,1.609438,,0 +13,2,0,1,2,225099,0,13923.17,13.64613,0,17,1,19.38924,1.33301,20.77072,0,0,41.49297,0,0,0,1,0,5,93.3,11.84267,0,66.7,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,66.7,9.541381,1.609438,3.725524,1 +13,2,0,1,3,225099,0,13923.17,14.64613,0,17,1,30.9973,13.2345,53.43666,0,0,97.66846,0,0,0,3,0,5,93.3,11.84267,0,66.7,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,66.7,9.541381,1.609438,4.581579,1 +13,2,0,1,4,225099,0,13923.17,15.64613,0,17,1,60.73041,55.85556,1.148954,0,0,117.7349,0,0,0,8,0,5,93.3,11.84267,0,66.7,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,66.7,9.541381,1.609438,4.768435,1 +13,2,0,1,5,225099,0,13923.17,16.64613,0,17,1,16.62971,27.12491,0,0,0,43.75462,0,0,0,3,0,5,93.3,11.84267,0,66.7,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,66.7,9.541381,1.609438,3.778597,1 +13,2,0,1,1,225100,0,13923.17,7.811088,0,17,1,4.789782,0,0,0,0,4.789782,0,0,0,1,0,5,86.7,11.84267,0,63,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,63,9.541381,1.609438,1.566485,1 +13,2,0,1,2,225100,0,13923.17,8.811089,0,17,1,38.17257,6.034901,0,0,0,44.20747,0,0,0,3,0,5,86.7,11.84267,0,63,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,63,9.541381,1.609438,3.788894,1 +13,2,0,1,3,225100,0,13923.17,9.811089,0,17,1,15.27403,2.4708,0,0,0,17.74483,0,0,0,2,0,5,86.7,11.84267,0,63,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,63,9.541381,1.609438,2.876094,1 +13,2,0,1,4,225100,0,13923.17,10.81109,0,17,1,7.38613,2.872384,0,0,0,10.25851,0,0,0,1,0,5,86.7,11.84267,0,63,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,63,9.541381,1.609438,2.328108,1 +13,2,0,1,5,225100,0,13923.17,11.81109,0,17,1,24.02069,1.459719,30.14782,0,0,55.62823,0,0,0,2,0,5,86.7,11.84267,0,63,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,63,9.541381,1.609438,4.018691,1 +13,2,0,1,1,225101,0,13923.17,45.81793,0,16,1,13.30495,0,30.49494,0,0,43.79989,0,0,0,1,0,5,88.3,3.4,0,80.7,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,80.7,9.541381,1.609438,3.779631,1 +13,2,0,1,2,225101,0,13923.17,46.81793,0,16,1,37.32428,0,0,0,0,37.32428,0,0,0,1,0,5,88.3,3.4,0,80.7,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,80.7,9.541381,1.609438,3.619644,1 +13,2,0,1,3,225101,0,13923.17,47.81793,0,16,1,0,2.672956,0,0,0,2.672956,0,0,0,0,0,5,88.3,3.4,0,80.7,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,80.7,9.541381,1.609438,.983185,1 +13,2,0,1,4,225101,0,13923.17,48.81793,0,16,1,8.206812,2.769799,0,0,0,10.97661,0,0,0,1,0,5,88.3,3.4,0,80.7,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,80.7,9.541381,1.609438,2.395767,1 +13,2,0,1,5,225101,0,13923.17,49.81793,0,16,1,20.3252,0,0,0,0,20.3252,0,0,0,1,0,5,88.3,3.4,0,80.7,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,80.7,9.541381,1.609438,3.011862,1 +13,2,0,1,1,225102,0,13923.17,10.69131,0,17,1,61.17616,7.317722,0,0,0,68.49388,0,0,0,4,0,5,93.3,11.84267,0,77.8,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,77.8,9.541381,1.609438,4.226745,1 +13,2,0,1,2,225102,0,13923.17,11.69131,0,17,1,30.41687,1.33301,0,0,0,31.74988,0,0,0,2,0,5,93.3,11.84267,0,77.8,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,77.8,9.541381,1.609438,3.457889,1 +13,2,0,1,3,225102,0,13923.17,12.69131,0,17,1,33.69272,5.952381,0,0,0,39.6451,0,0,0,3,0,5,93.3,11.84267,0,77.8,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,77.8,9.541381,1.609438,3.679967,1 +13,2,0,1,4,225102,0,13923.17,13.69131,0,17,1,7.38613,0,0,0,0,7.38613,0,0,0,1,0,5,93.3,11.84267,0,77.8,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,77.8,9.541381,1.609438,1.999604,1 +13,2,0,1,5,225102,0,13923.17,14.69131,0,17,1,39.54176,2.494457,34.45307,0,0,76.48928,0,0,0,4,0,5,93.3,11.84267,0,77.8,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,77.8,9.541381,1.609438,4.337151,1 +13,2,0,1,1,225103,0,13923.17,41.29227,1,17,1,6.386376,2.261841,0,0,0,8.648217,0,0,0,1,0,5,87.2,3.4,0,77.3,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,77.3,9.541381,1.609438,2.157353,1 +13,2,0,1,2,225103,0,13923.17,42.29227,1,17,1,12.11827,0,0,0,0,12.11827,0,0,0,1,0,5,87.2,3.4,0,77.3,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,77.3,9.541381,1.609438,2.494715,1 +13,2,0,1,3,225103,0,13923.17,43.29227,1,17,1,0,2.628032,0,0,0,2.628032,0,0,0,0,0,5,87.2,3.4,0,77.3,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,77.3,9.541381,1.609438,.9662355,1 +13,2,0,1,4,225103,0,13923.17,44.29227,1,17,1,17.02913,3.631514,0,0,0,20.66065,0,0,0,1,0,5,87.2,3.4,0,77.3,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,77.3,9.541381,1.609438,3.028231,1 +13,2,0,1,5,225103,0,13923.17,45.29227,1,17,1,7.390983,1.940133,0,0,0,9.331116,0,0,0,1,0,5,87.2,3.4,0,77.3,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,0,0,0,77.3,9.541381,1.609438,2.233355,1 +7,2,25,0,1,225114,0,6836.364,5.467488,0,12,1,21.77463,4.354927,0,0,0,26.12956,0,0,0,3,0,3,93.3,11.84267,0,88.9,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,88.9,8.830157,1.098612,3.263067,1 +7,2,25,0,2,225114,0,6836.364,6.467488,0,12,1,46.58077,2.552032,0,0,0,49.1328,0,0,0,2,3,3,93.3,11.84267,0,88.9,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,88.9,8.830157,1.098612,3.894527,1 +7,2,25,0,3,225114,0,6836.364,7.467488,0,12,1,25.58513,9.798073,0,0,0,35.3832,0,0,0,1,0,3,93.3,11.84267,0,88.9,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,88.9,8.830157,1.098612,3.566237,1 +7,2,25,0,1,225115,0,6836.364,29.32512,1,12,1,51.71475,1.72564,0,0,0,53.44039,0,0,0,1,1,3,63.8,13.8,0,80.7,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,80.7,8.830157,1.098612,3.978567,1 +7,2,25,0,2,225115,0,6836.364,30.32512,1,12,1,4.955401,2.725471,0,0,0,7.680872,0,0,0,1,0,3,63.8,13.8,0,80.7,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,80.7,8.830157,1.098612,2.038733,1 +7,2,25,0,3,225115,0,6836.364,31.32512,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,63.8,13.8,0,80.7,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,80.7,8.830157,1.098612,,0 +7,2,25,0,1,225116,0,6836.364,30.00685,0,12,1,250.4083,51.82362,0,0,0,302.2319,0,0,0,8,1,3,70.7,0,0,63.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,63.6,8.830157,1.098612,5.711195,1 +7,2,25,0,2,225116,0,6836.364,31.00685,0,12,1,25.52032,5.302279,0,0,0,30.8226,0,0,0,2,0,3,70.7,0,0,63.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,63.6,8.830157,1.098612,3.428248,1 +7,2,25,0,3,225116,0,6836.364,32.00684,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,70.7,0,0,63.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,63.6,8.830157,1.098612,,0 +13,2,0,1,1,225117,0,4512.023,38.2642,1,16,1,212.0849,11.58955,9.798585,0,0,233.4731,0,0,0,12,0,1,54.8,27.6,1,70.5,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,70.5,8.414722,0,5.453067,1 +13,2,0,1,2,225117,0,4512.023,39.2642,1,16,1,5.946482,3.444004,0,0,0,9.390486,0,0,0,1,0,1,54.8,27.6,1,70.5,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,70.5,8.414722,0,2.239697,1 +13,2,0,1,3,225117,0,4512.023,40.2642,1,16,1,122.8775,16.26893,0,0,0,139.1464,0,0,0,5,0,1,54.8,27.6,1,70.5,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,70.5,8.414722,0,4.935526,1 +13,2,0,1,1,225129,0,2858.064,2.067077,0,12,1,13.30495,0,0,0,0,13.30495,0,0,0,1,0,4,81.35272,11.84267,0,63,450,600,1,0,1.386294,6.39693,1,4.564348,6.160541,0,0,0,63,7.95825,1.386294,2.588136,1 +13,2,0,1,2,225129,0,2858.064,3.067077,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,63,450,600,1,0,1.386294,6.39693,1,4.564348,6.160541,0,0,0,63,7.95825,1.386294,,0 +13,2,0,1,1,225130,0,2858.064,26.36824,0,14,1,117.6158,6.865354,0,0,0,124.4811,0,0,0,2,1,4,73.4,10.3,1,73.9,450,600,0,0,1.386294,6.39693,1,4.564348,6.160541,1,0,0,73.9,7.95825,1.386294,4.824154,1 +13,2,0,1,2,225130,0,2858.064,27.36824,0,14,1,5.332041,0,0,0,0,5.332041,0,0,0,1,0,4,73.4,10.3,1,73.9,450,600,0,0,1.386294,6.39693,1,4.564348,6.160541,1,0,0,73.9,7.95825,1.386294,1.673734,1 +13,2,0,1,1,225131,0,2858.064,21.7796,1,12,1,282.8632,14.61948,0,0,0,297.4827,0,0,0,7,0,4,53.2,34.5,1,73.9,450,600,0,0,1.386294,6.39693,1,4.564348,6.160541,0,0,0,73.9,7.95825,1.386294,5.695356,1 +13,2,0,1,2,225131,0,2858.064,22.7796,1,12,1,18.41978,17.76054,0,0,0,36.18032,0,0,0,2,0,4,53.2,34.5,1,73.9,450,600,0,0,1.386294,6.39693,1,4.564348,6.160541,0,0,0,73.9,7.95825,1.386294,3.588515,1 +11,2,0,1,1,225143,0,10517.89,38.423,0,15,1,81.1105,51.50245,41.14861,0,0,173.7616,0,0,0,9,1,4,56.9,10.3,0,72.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.7,9.260928,1.386294,5.157684,1 +11,2,0,1,2,225143,0,10517.89,39.423,0,15,1,26.06541,7.680872,0,0,0,33.74628,0,0,0,3,0,4,56.9,10.3,0,72.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.7,9.260928,1.386294,3.51887,1 +11,2,0,1,3,225143,0,10517.89,40.423,0,15,1,18.35704,30.19734,22.02845,0,0,70.58284,0,0,0,1,0,4,56.9,10.3,0,72.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.7,9.260928,1.386294,4.256787,1 +11,2,0,1,1,225144,0,10517.89,7.463381,1,14,1,6.53239,0,0,0,0,6.53239,0,0,0,1,0,4,96.7,11.84267,0,100,0,0,1,1,1.386294,0,0,0,0,0,0,0,100,9.260928,1.386294,1.876773,1 +11,2,0,1,2,225144,0,10517.89,8.463381,1,14,1,42.2448,2.1556,0,0,0,44.4004,0,0,0,1,0,4,96.7,11.84267,0,100,0,0,1,1,1.386294,0,0,0,0,0,0,0,100,9.260928,1.386294,3.793248,1 +11,2,0,1,3,225144,0,10517.89,9.463381,1,14,1,20.88114,0,0,0,0,20.88114,0,0,0,1,0,4,96.7,11.84267,0,100,0,0,1,1,1.386294,0,0,0,0,0,0,0,100,9.260928,1.386294,3.038846,1 +11,2,0,1,1,225145,0,10517.89,30.59001,1,14,1,10.88732,0,0,0,0,10.88732,0,0,0,1,0,4,73.4,6.9,0,88.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,88.6,9.260928,1.386294,2.387599,1 +11,2,0,1,2,225145,0,10517.89,31.59001,1,14,1,0,0,0,0,0,0,0,0,0,0,0,4,73.4,6.9,0,88.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,88.6,9.260928,1.386294,,0 +11,2,0,1,3,225145,0,10517.89,32.59001,1,14,1,43.94218,0,0,0,960.0184,1003.961,1,0,0,3,0,4,73.4,6.9,0,88.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,88.6,9.260928,1.386294,6.911708,1 +11,2,0,1,1,225146,0,10517.89,6.401095,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,11.84267,0,59.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,59.3,9.260928,1.386294,,0 +11,2,0,1,2,225146,0,10517.89,7.401095,0,14,1,18.83052,0,0,0,0,18.83052,0,0,0,1,0,4,86.7,11.84267,0,59.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,59.3,9.260928,1.386294,2.935479,1 +11,2,0,1,3,225146,0,10517.89,8.401095,0,14,1,18.35704,0,0,0,0,18.35704,0,0,0,1,0,4,86.7,11.84267,0,59.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,59.3,9.260928,1.386294,2.910013,1 +19,2,25,0,1,225150,0,8428.739,14.81725,1,12,1,16.87534,0,0,0,0,16.87534,0,0,0,0,2,3,86.2,6.9,0,77.3,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,77.3,9.039521,1.098612,2.825853,1 +19,2,25,0,2,225150,0,8428.739,15.81725,1,12,1,19.82161,2.675917,0,0,0,22.49752,0,0,0,2,0,3,86.2,6.9,0,77.3,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,77.3,9.039521,1.098612,3.113405,1 +19,2,25,0,3,225150,0,8428.739,16.81725,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,86.2,6.9,0,77.3,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,77.3,9.039521,1.098612,,0 +19,2,25,0,1,225151,0,8428.739,39.07734,0,12,1,38.10561,4.082744,0,0,0,42.18835,0,0,0,3,0,3,93.1,3.4,0,81.8,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,81.8,9.039521,1.098612,3.742144,1 +19,2,25,0,2,225151,0,8428.739,40.07734,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,93.1,3.4,0,81.8,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,81.8,9.039521,1.098612,,0 +19,2,25,0,3,225151,0,8428.739,41.07734,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,93.1,3.4,0,81.8,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,81.8,9.039521,1.098612,,0 +19,2,25,0,1,225152,0,8428.739,38.10267,1,12,1,19.86935,1.829069,0,0,0,21.69842,0,0,0,1,0,3,85.6,10.3,0,67,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,67,9.039521,1.098612,3.07724,1 +19,2,25,0,2,225152,0,8428.739,39.10267,1,12,1,67.889,0,0,0,0,67.889,0,0,0,3,0,3,85.6,10.3,0,67,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,67,9.039521,1.098612,4.217874,1 +19,2,25,0,3,225152,0,8428.739,40.10267,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,85.6,10.3,0,67,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,67,9.039521,1.098612,,0 +11,2,0,1,1,225170,0,7399.414,37.64271,0,15,1,70.39615,13.07816,0,319.8608,0,83.4743,0,0,18,3,0,1,75.5,3.4,0,69.3,0,113.36,0,0,0,4.730568,0,0,0,0,0,0,69.3,8.909291,0,4.424539,1 +11,2,0,1,2,225170,0,7399.414,38.64271,0,15,1,15.61737,56.89605,32.79161,700.3416,0,105.305,0,0,41,1,0,1,75.5,3.4,0,69.3,0,113.36,0,0,0,4.730568,0,0,0,0,0,0,69.3,8.909291,0,4.656861,1 +11,2,0,1,3,225170,0,7399.414,39.64271,0,15,1,2.710027,0,0,785.9078,0,2.710027,0,0,45,1,0,1,75.5,3.4,0,69.3,0,113.36,0,0,0,4.730568,0,0,0,0,0,0,69.3,8.909291,0,.9969587,1 +11,2,0,1,1,225171,0,10711.44,1.711157,1,16,1,56.06469,27.71428,0,0,0,83.77898,0,0,0,7,1,3,81.35272,11.84267,0,92.6,0,206.64,1,1,1.098612,5.330978,0,0,0,0,0,0,92.6,9.27916,1.098612,4.428182,1 +11,2,0,1,2,225171,0,10711.44,2.711157,1,16,1,52.57985,17.22359,0,0,0,69.80344,0,0,0,7,0,4,81.35272,11.84267,0,92.6,0,206.64,1,1,1.386294,5.330978,0,0,0,0,0,0,92.6,9.27916,1.386294,4.245683,1 +11,2,0,1,3,225171,0,10711.44,3.711157,1,16,1,114.4029,11.73655,0,0,0,126.1395,0,0,0,7,2,4,81.35272,11.84267,0,92.6,0,206.64,1,1,1.386294,5.330978,0,0,0,0,0,0,92.6,9.27916,1.386294,4.837388,1 +11,2,0,1,4,225171,0,10711.44,4.711157,1,16,1,185.9942,14.46436,0,0,0,200.4585,0,0,0,11,0,4,81.35272,11.84267,0,92.6,0,206.64,1,1,1.386294,5.330978,0,0,0,0,0,0,92.6,9.27916,1.386294,5.300607,1 +11,2,0,1,5,225171,0,10711.44,5.711157,1,16,1,93.86722,20.1988,0,0,0,114.066,0,0,0,6,2,4,81.35272,11.84267,0,92.6,0,206.64,1,1,1.386294,5.330978,0,0,0,0,0,0,92.6,9.27916,1.386294,4.736777,1 +11,2,0,1,1,225172,0,10711.44,31.50992,0,18,1,33.42318,0,23.18059,0,0,56.60378,0,0,0,2,1,3,83.5,0,0,79.5,0,206.64,0,0,1.098612,5.330978,0,0,0,0,0,0,79.5,9.27916,1.098612,4.036076,1 +11,2,0,1,2,225172,0,10711.44,32.50993,0,18,1,15.23342,12.62899,25.64619,0,0,53.5086,0,0,0,2,0,4,83.5,0,0,79.5,0,206.64,0,0,1.386294,5.330978,0,0,0,0,0,0,79.5,9.27916,1.386294,3.979842,1 +11,2,0,1,3,225172,0,10711.44,33.50993,0,18,1,56.40383,6.198724,0,0,0,62.60255,0,0,0,4,0,4,83.5,0,0,79.5,0,206.64,0,0,1.386294,5.330978,0,0,0,0,0,0,79.5,9.27916,1.386294,4.136806,1 +11,2,0,1,4,225172,0,10711.44,34.50993,0,18,1,13.96415,2.959567,21.7549,0,0,38.67862,0,0,0,1,0,4,83.5,0,0,79.5,0,206.64,0,0,1.386294,5.330978,0,0,0,0,0,0,79.5,9.27916,1.386294,3.655287,1 +11,2,0,1,5,225172,0,10711.44,35.50993,0,18,1,44.16729,3.694674,12.997,0,0,60.85896,0,0,0,4,0,4,83.5,0,0,79.5,0,206.64,0,0,1.386294,5.330978,0,0,0,0,0,0,79.5,9.27916,1.386294,4.108559,1 +11,2,0,1,1,225173,0,10711.44,29.97125,1,16,1,19.40701,16.14555,2.695418,0,1264.987,1303.234,1,0,0,1,0,3,88.8,3.4,0,87.5,0,206.64,0,0,1.098612,5.330978,0,0,0,0,0,0,87.5,9.27916,1.098612,7.172605,1 +11,2,0,1,2,225173,0,10711.44,30.97125,1,16,1,19.90172,21.13022,0,0,0,41.03194,0,0,0,2,0,4,88.8,3.4,0,87.5,0,206.64,0,0,1.386294,5.330978,0,0,0,0,0,0,87.5,9.27916,1.386294,3.714351,1 +11,2,0,1,3,225173,0,10711.44,31.97125,1,16,1,239.5169,35.64266,0,0,0,275.1595,0,0,0,7,1,4,88.8,3.4,0,87.5,0,206.64,0,0,1.386294,5.330978,0,0,0,0,0,0,87.5,9.27916,1.386294,5.617351,1 +11,2,0,1,4,225173,0,10711.44,32.97125,1,16,1,88.99541,45.76907,4.793664,0,0,139.5582,0,0,0,5,0,4,88.8,3.4,0,87.5,0,206.64,0,0,1.386294,5.330978,0,0,0,0,0,0,87.5,9.27916,1.386294,4.938481,1 +11,2,0,1,5,225173,0,10711.44,33.97125,1,16,1,234.9287,60.64891,0,0,0,295.5776,0,0,0,7,10,4,88.8,3.4,0,87.5,0,206.64,0,0,1.386294,5.330978,0,0,0,0,0,0,87.5,9.27916,1.386294,5.688931,1 +11,2,0,1,1,225176,0,15780.65,49.68104,1,11,1,548.9828,45.53533,0,0,0,594.5182,0,0,0,12,2,2,86.2,31,0,67,0,0,0,0,.6931472,0,0,0,0,0,0,0,67,9.666603,.6931472,6.387751,1 +11,2,0,1,2,225176,0,15780.65,50.68104,1,11,1,95.65642,24.48023,51.67887,0,0,171.8155,0,0,0,6,0,2,86.2,31,0,67,0,0,0,0,.6931472,0,0,0,0,0,0,0,67,9.666603,.6931472,5.146421,1 +11,2,0,1,3,225176,0,15780.65,51.68104,1,11,1,201.897,28.91599,0,0,0,230.813,0,0,0,7,1,2,86.2,31,0,67,0,0,0,0,.6931472,0,0,0,0,0,0,0,67,9.666603,.6931472,5.441608,1 +11,2,0,1,4,225176,0,15780.65,52.68104,1,11,1,148.5732,33.66005,.4135649,0,723.6146,906.2614,1,0,0,7,0,2,86.2,31,0,67,0,0,0,0,.6931472,0,0,0,0,0,0,0,67,9.666603,.6931472,6.809328,1 +11,2,0,1,5,225176,0,15780.65,53.68104,1,11,1,147.7273,31.16617,35.9538,0,0,214.8472,0,0,0,8,0,2,86.2,31,0,67,0,0,0,0,.6931472,0,0,0,0,0,0,0,67,9.666603,.6931472,5.369927,1 +11,2,0,1,1,225177,0,15780.65,51.67419,0,16,1,113.4904,5.883297,0,0,0,119.3737,0,0,0,7,0,2,93.6,31,1,73.9,0,0,0,0,.6931472,0,0,0,0,0,0,0,73.9,9.666603,.6931472,4.782259,1 +11,2,0,1,2,225177,0,15780.65,52.67419,0,16,1,112.4939,0,64.01659,0,0,176.5105,0,0,0,7,0,2,93.6,31,1,73.9,0,0,0,0,.6931472,0,0,0,0,0,0,0,73.9,9.666603,.6931472,5.17338,1 +11,2,0,1,3,225177,0,15780.65,53.67419,0,16,1,171.1834,24.81482,6.874435,0,0,202.8726,0,0,0,5,2,2,93.6,31,1,73.9,0,0,0,0,.6931472,0,0,0,0,0,0,0,73.9,9.666603,.6931472,5.312578,1 +11,2,0,1,4,225177,0,15780.65,54.67419,0,16,1,75.06203,12.75021,2.593052,0,0,90.4053,0,0,0,5,0,2,93.6,31,1,73.9,0,0,0,0,.6931472,0,0,0,0,0,0,0,73.9,9.666603,.6931472,4.504303,1 +11,2,0,1,5,225177,0,15780.65,55.67419,0,16,1,138.2265,20.26826,44.06855,0,0,202.5633,0,0,0,6,3,2,93.6,31,1,73.9,0,0,0,0,.6931472,0,0,0,0,0,0,0,73.9,9.666603,.6931472,5.311053,1 +11,2,0,1,1,225188,0,8269.208,27.73717,0,11,1,73.82749,6.938005,0,0,0,80.7655,0,0,0,2,0,4,57.4,3.4,0,76.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.2,9.020415,1.386294,4.39155,1 +11,2,0,1,2,225188,0,8269.208,28.73717,0,11,1,11.54791,0,0,0,0,11.54791,0,0,0,1,0,4,57.4,3.4,0,76.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.2,9.020415,1.386294,2.446505,1 +11,2,0,1,3,225188,0,8269.208,29.73717,0,11,1,82.04193,2.256153,31.34913,0,0,115.6472,0,0,0,1,1,4,57.4,3.4,0,76.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.2,9.020415,1.386294,4.750545,1 +11,2,0,1,1,225189,0,8269.208,29.2293,1,12,1,59.56873,37.60108,35.83828,0,0,133.0081,0,0,0,6,1,4,67.6,0,0,75,0,0,0,0,1.386294,0,0,0,0,0,0,0,75,9.020415,1.386294,4.89041,1 +11,2,0,1,2,225189,0,8269.208,30.2293,1,12,1,101.9656,42.18673,32.08845,0,0,176.2408,0,0,0,7,1,4,67.6,0,0,75,0,0,0,0,1.386294,0,0,0,0,0,0,0,75,9.020415,1.386294,5.171851,1 +11,2,0,1,3,225189,0,8269.208,31.2293,1,12,1,171.6044,20.21422,28.94713,0,0,220.7657,0,0,0,8,1,4,67.6,0,0,75,0,0,0,0,1.386294,0,0,0,0,0,0,0,75,9.020415,1.386294,5.397102,1 +11,2,0,1,1,225190,0,8269.208,4.328542,1,12,1,16.17251,6.285714,0,0,0,22.45822,0,0,0,3,0,4,81.35272,11.84267,0,77.8,0,0,1,1,1.386294,0,0,0,0,0,0,0,77.8,9.020415,1.386294,3.111657,1 +11,2,0,1,2,225190,0,8269.208,5.328542,1,12,1,36.16708,0,0,0,0,36.16708,0,0,0,4,0,4,81.35272,11.84267,0,77.8,0,0,1,1,1.386294,0,0,0,0,0,0,0,77.8,9.020415,1.386294,3.588149,1 +11,2,0,1,3,225190,0,8269.208,6.328542,1,12,1,19.8268,2.620784,0,0,0,22.44758,0,0,0,3,0,4,81.35272,11.84267,0,77.8,0,0,1,1,1.386294,0,0,0,0,0,0,0,77.8,9.020415,1.386294,3.111183,1 +11,2,0,1,1,225191,0,8269.208,7.485284,0,12,1,67.00809,25.531,0,0,0,92.53909,0,0,0,8,0,4,83.3,11.84267,0,74.1,0,0,1,0,1.386294,0,0,0,0,0,0,0,74.1,9.020415,1.386294,4.527631,1 +11,2,0,1,2,225191,0,8269.208,8.485284,0,12,1,37.83784,6.535626,0,0,0,44.37346,0,0,0,4,0,4,83.3,11.84267,0,74.1,0,0,1,0,1.386294,0,0,0,0,0,0,0,74.1,9.020415,1.386294,3.792642,1 +11,2,0,1,3,225191,0,8269.208,9.485284,0,12,1,74.93163,11.32634,0,0,0,86.25797,0,0,0,4,0,4,83.3,11.84267,0,74.1,0,0,1,0,1.386294,0,0,0,0,0,0,0,74.1,9.020415,1.386294,4.457343,1 +11,2,0,1,1,225223,1,12310.85,38.20123,0,18,1,0,0,0,0,0,0,0,0,0,0,0,1,68.6,6.9,0,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,9.418318,0,,0 +11,2,0,1,2,225223,1,12310.85,39.20123,0,18,1,0,0,0,0,0,0,0,0,0,0,0,1,68.6,6.9,0,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,9.418318,0,,0 +11,2,0,1,3,225223,1,12310.85,40.20123,0,18,1,0,0,0,0,0,0,0,0,0,0,0,1,68.6,6.9,0,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,9.418318,0,,0 +11,2,0,0,1,225227,0,13358.94,12.84326,1,12,1,10.30514,0,0,0,0,10.30514,0,0,0,1,0,3,80,11.84267,0,59.3,0,282,1,1,1.098612,5.641907,0,0,0,0,0,0,59.3,9.500016,1.098612,2.332643,1 +11,2,0,0,2,225227,0,13358.94,13.84326,1,12,1,125.427,18.96047,0,0,0,144.3875,0,0,0,12,0,3,80,11.84267,0,59.3,0,282,1,1,1.098612,5.641907,0,0,0,0,0,0,59.3,9.500016,1.098612,4.972501,1 +11,2,0,0,3,225227,0,13358.94,14.84326,1,12,1,128.5005,20.93496,0,0,0,149.4354,0,0,0,14,0,3,80,11.84267,0,59.3,0,282,1,1,1.098612,5.641907,0,0,0,0,0,0,59.3,9.500016,1.098612,5.006864,1 +11,2,0,0,1,225228,0,13358.94,31.46064,1,12,1,68.92398,13.35653,0,0,0,82.28052,0,0,0,3,0,3,87.2,17.2,1,67,0,282,0,0,1.098612,5.641907,0,0,0,0,0,0,67,9.500016,1.098612,4.410134,1 +11,2,0,0,2,225228,0,13358.94,32.46064,1,12,1,51.73255,15.37335,0,0,0,67.1059,0,0,0,3,0,3,87.2,17.2,1,67,0,282,0,0,1.098612,5.641907,0,0,0,0,0,0,67,9.500016,1.098612,4.206272,1 +11,2,0,0,3,225228,0,13358.94,33.46064,1,12,1,28.45528,13.70822,0,0,0,42.16351,0,0,0,2,0,3,87.2,17.2,1,67,0,282,0,0,1.098612,5.641907,0,0,0,0,0,0,67,9.500016,1.098612,3.741555,1 +11,2,0,0,1,225229,0,13358.94,28.7666,0,16,1,122.9925,0,0,0,0,122.9925,0,0,0,3,0,3,78.2,13.8,0,76.1,0,282,0,0,1.098612,5.641907,0,0,0,0,0,0,76.1,9.500016,1.098612,4.812123,1 +11,2,0,0,2,225229,0,13358.94,29.7666,0,16,1,34.65105,4.367984,0,0,0,39.01904,0,0,0,3,0,3,78.2,13.8,0,76.1,0,282,0,0,1.098612,5.641907,0,0,0,0,0,0,76.1,9.500016,1.098612,3.66405,1 +11,2,0,0,3,225229,0,13358.94,30.7666,0,16,1,14.45348,8.988256,0,0,0,23.44173,0,0,0,1,0,3,78.2,13.8,0,76.1,0,282,0,0,1.098612,5.641907,0,0,0,0,0,0,76.1,9.500016,1.098612,3.154518,1 +11,2,0,1,1,225235,0,9003.52,1.303217,0,13,1,38.00539,5.3531,0,0,0,43.35849,0,0,0,4,0,4,81.35272,11.84267,0,81.5,0,0,1,0,1.386294,0,0,0,0,0,0,0,81.5,9.105482,1.386294,3.769503,1 +11,2,0,1,2,225235,0,9003.52,2.303217,0,13,1,36.60934,10.28993,0,0,0,46.89926,0,0,0,4,0,4,81.35272,11.84267,0,81.5,0,0,1,0,1.386294,0,0,0,0,0,0,0,81.5,9.105482,1.386294,3.848002,1 +11,2,0,1,3,225235,0,9003.52,3.303217,0,13,1,39.4257,13.86964,12.01003,0,0,65.30538,0,0,0,5,0,4,81.35272,11.84267,0,81.5,0,0,1,0,1.386294,0,0,0,0,0,0,0,81.5,9.105482,1.386294,4.179074,1 +11,2,0,1,1,225236,0,9003.52,34.85284,0,14,1,13.47709,0,33.95687,0,0,47.43396,0,0,0,1,0,4,73.9,6.9,0,69.3,0,0,0,0,1.386294,0,0,0,0,0,0,0,69.3,9.105482,1.386294,3.859339,1 +11,2,0,1,2,225236,0,9003.52,35.85284,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,73.9,6.9,0,69.3,0,0,0,0,1.386294,0,0,0,0,0,0,0,69.3,9.105482,1.386294,,0 +11,2,0,1,3,225236,0,9003.52,36.85284,0,14,1,0,7.657247,0,0,0,7.657247,0,0,0,0,0,4,73.9,6.9,0,69.3,0,0,0,0,1.386294,0,0,0,0,0,0,0,69.3,9.105482,1.386294,2.035653,1 +11,2,0,1,1,225237,0,9003.52,29.54962,1,13,1,25.87601,21.4124,0,0,0,47.28841,0,0,0,1,0,4,78.2,3.4,0,97.7,0,0,0,0,1.386294,0,0,0,0,0,0,0,97.7,9.105482,1.386294,3.856265,1 +11,2,0,1,2,225237,0,9003.52,30.54962,1,13,1,25.55283,23.20885,0,0,0,48.76167,0,0,0,1,0,4,78.2,3.4,0,97.7,0,0,0,0,1.386294,0,0,0,0,0,0,0,97.7,9.105482,1.386294,3.886945,1 +11,2,0,1,3,225237,0,9003.52,31.54962,1,13,1,42.38833,39.04284,0,0,0,81.43118,0,0,0,3,0,4,78.2,3.4,0,97.7,0,0,0,0,1.386294,0,0,0,0,0,0,0,97.7,9.105482,1.386294,4.399758,1 +11,2,0,1,1,225238,0,9003.52,5.182752,1,13,1,38.81401,1.590297,12.50135,0,0,52.90566,0,0,0,3,0,4,71.7,11.84267,0,96.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,96.3,9.105482,1.386294,3.96851,1 +11,2,0,1,2,225238,0,9003.52,6.182752,1,13,1,20.63882,0,0,0,0,20.63882,0,0,0,3,0,4,71.7,11.84267,0,96.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,96.3,9.105482,1.386294,3.027174,1 +11,2,0,1,3,225238,0,9003.52,7.182752,1,13,1,44.43938,11.43118,22.4248,0,0,78.29535,0,0,0,5,0,4,71.7,11.84267,0,96.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,96.3,9.105482,1.386294,4.360488,1 +13,2,0,1,1,225242,0,8665.641,6.255989,1,12,1,86.06469,0,0,0,0,86.06469,0,0,0,4,1,4,90,11.84267,0,100,450,275.27,1,1,1.386294,5.617753,1,4.564348,6.160541,0,0,0,100,9.067237,1.386294,4.455099,1 +13,2,0,1,2,225242,0,8665.641,7.255989,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,90,11.84267,0,100,450,275.27,1,1,1.386294,5.617753,1,4.564348,6.160541,0,0,0,100,9.067237,1.386294,,0 +13,2,0,1,3,225242,0,8665.641,8.255989,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,90,11.84267,0,100,450,275.27,1,1,1.609438,5.617753,1,4.564348,6.160541,0,0,0,100,9.067237,1.609438,,0 +13,2,0,1,4,225242,0,8665.641,9.255989,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,90,11.84267,0,100,450,275.27,1,1,1.609438,5.617753,1,4.564348,6.160541,0,0,0,100,9.067237,1.609438,,0 +13,2,0,1,5,225242,0,8665.641,10.25599,1,12,1,59.1898,0,0,0,0,59.1898,0,0,0,5,0,5,90,11.84267,0,100,450,275.27,1,1,1.609438,5.617753,1,4.564348,6.160541,0,0,0,100,9.067237,1.609438,4.080749,1 +13,2,0,1,1,225243,0,8665.641,30.04791,0,16,1,267.7628,2.021563,0,0,0,269.7844,0,0,0,2,0,4,88.3,6.9,0,65.9,450,275.27,0,0,1.386294,5.617753,1,4.564348,6.160541,0,0,0,65.9,9.067237,1.386294,5.597623,1 +13,2,0,1,2,225243,0,8665.641,31.04791,0,16,1,116.5553,0,11.43489,0,0,127.9902,0,0,0,3,0,4,88.3,6.9,0,65.9,450,275.27,0,0,1.386294,5.617753,1,4.564348,6.160541,0,0,0,65.9,9.067237,1.386294,4.851954,1 +13,2,0,1,3,225243,0,8665.641,32.04791,0,16,1,27.34731,8.181404,8.204193,0,0,43.73291,0,0,0,1,0,5,88.3,6.9,0,65.9,450,275.27,0,0,1.609438,5.617753,1,4.564348,6.160541,0,0,0,65.9,9.067237,1.609438,3.778101,1 +13,2,0,1,4,225243,0,8665.641,33.04791,0,16,1,33.34723,0,52.10505,0,0,85.45227,0,0,0,2,0,5,88.3,6.9,0,65.9,450,275.27,0,0,1.609438,5.617753,1,4.564348,6.160541,0,0,0,65.9,9.067237,1.609438,4.447958,1 +13,2,0,1,5,225243,0,8665.641,34.04791,0,16,1,0,0,43.03451,0,0,43.03451,0,0,0,0,0,5,88.3,6.9,0,65.9,450,275.27,0,0,1.609438,5.617753,1,4.564348,6.160541,0,0,0,65.9,9.067237,1.609438,3.762002,1 +13,2,0,1,1,225244,0,8665.641,27.93703,1,12,1,179.8383,6.522911,33.07278,0,0,219.434,0,0,0,8,1,4,79.3,10.3,1,68.2,450,275.27,0,0,1.386294,5.617753,1,4.564348,6.160541,0,0,0,68.2,9.067237,1.386294,5.391051,1 +13,2,0,1,2,225244,0,8665.641,28.93703,1,12,1,250.4668,0,0,928.7469,776.683,1027.15,1,0,42,3,1,4,79.3,10.3,1,68.2,450,275.27,0,0,1.386294,5.617753,1,4.564348,6.160541,0,0,0,68.2,9.067237,1.386294,6.934543,1 +13,2,0,1,3,225244,0,8665.641,29.93703,1,12,1,16.45397,0,0,0,0,16.45397,0,0,0,1,0,5,79.3,10.3,1,68.2,450,275.27,0,0,1.609438,5.617753,1,4.564348,6.160541,0,0,0,68.2,9.067237,1.609438,2.800566,1 +13,2,0,1,4,225244,0,8665.641,30.93703,1,12,1,25.42726,3.705711,0,0,0,29.13297,0,0,0,1,0,5,79.3,10.3,1,68.2,450,275.27,0,0,1.609438,5.617753,1,4.564348,6.160541,0,0,0,68.2,9.067237,1.609438,3.371871,1 +13,2,0,1,5,225244,0,8665.641,31.93703,1,12,1,62.26557,9.433608,16.07652,0,0,87.7757,0,0,0,3,0,5,79.3,10.3,1,68.2,450,275.27,0,0,1.609438,5.617753,1,4.564348,6.160541,0,0,0,68.2,9.067237,1.609438,4.474785,1 +11,2,0,1,1,225266,0,13228.15,17.31964,1,12,1,27.30193,13.35653,0,0,0,40.65846,0,0,0,5,0,3,78.7,6.9,0,81.8,0,0,1,1,1.098612,0,0,0,0,0,0,0,81.8,9.490178,1.098612,3.705207,1 +11,2,0,1,2,225266,0,13228.15,18.31964,1,12,1,35.13909,27.03758,0,0,0,62.17667,0,0,0,6,0,3,78.7,6.9,0,81.8,0,0,0,0,1.098612,0,0,0,0,0,0,0,81.8,9.490178,1.098612,4.12998,1 +11,2,0,1,3,225266,0,13228.15,19.31964,1,12,1,47.99006,15.05872,0,0,0,63.04878,0,0,0,5,0,3,78.7,6.9,0,81.8,0,0,0,0,1.098612,0,0,0,0,0,0,0,81.8,9.490178,1.098612,4.143909,1 +11,2,0,1,1,225268,0,13228.15,45.7796,1,12,1,126.606,89.27731,0,13.3833,0,215.8833,0,0,2,6,0,3,61.2,17.2,0,62.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,62.5,9.490178,1.098612,5.374738,1 +11,2,0,1,2,225268,0,13228.15,46.7796,1,12,1,236.7984,144.3143,43.77257,48.80429,0,424.8853,0,0,4,27,0,3,61.2,17.2,0,62.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,62.5,9.490178,1.098612,6.051819,1 +11,2,0,1,3,225268,0,13228.15,47.7796,1,12,1,214.1373,114.6251,51.84282,65.49232,0,380.6052,0,0,5,15,0,3,61.2,17.2,0,62.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,62.5,9.490178,1.098612,5.941762,1 +11,2,0,1,1,225270,0,13228.15,46.12183,0,16,1,16.05996,0,38.394,0,0,54.45396,0,0,0,1,0,3,83,0,0,77.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.3,9.490178,1.098612,3.997356,1 +11,2,0,1,2,225270,0,13228.15,47.12183,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,83,0,0,77.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.3,9.490178,1.098612,,0 +11,2,0,1,3,225270,0,13228.15,48.12183,0,16,1,160.2303,0,40.03162,0,201.8293,402.0912,1,0,0,4,0,3,83,0,0,77.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.3,9.490178,1.098612,5.996679,1 +11,2,0,1,1,225277,0,6885.044,6.091718,0,12,1,8.165487,7.893304,0,0,0,16.05879,0,0,0,2,0,4,80,11.84267,0,81.5,0,357.36,1,0,1.386294,5.878744,0,0,0,1,0,0,81.5,8.837252,1.386294,2.776257,1 +11,2,0,1,2,225277,0,6885.044,7.091718,0,12,1,104.8067,16.08028,21.34787,0,0,142.2349,0,0,0,10,0,4,80,11.84267,0,81.5,0,357.36,1,0,1.386294,5.878744,0,0,0,1,0,0,81.5,8.837252,1.386294,4.95748,1 +11,2,0,1,3,225277,0,6885.044,8.091718,0,12,1,75.63102,16.57182,0,0,0,92.20284,0,0,0,6,0,4,80,11.84267,0,81.5,0,357.36,1,0,1.386294,5.878744,0,0,0,1,0,0,81.5,8.837252,1.386294,4.523991,1 +11,2,0,1,1,225278,0,6885.044,25.80972,1,12,1,26.12956,8.301579,0,21.50245,0,34.43114,0,0,2,3,0,4,58,13.8,0,67,0,357.36,0,0,1.386294,5.878744,0,0,0,1,0,0,67,8.837252,1.386294,3.538961,1 +11,2,0,1,2,225278,0,6885.044,26.80972,1,12,1,107.2844,19.82161,0,304.7572,0,127.106,0,0,41,7,0,4,58,13.8,0,67,0,357.36,0,0,1.386294,5.878744,0,0,0,1,0,0,67,8.837252,1.386294,4.845022,1 +11,2,0,1,3,225278,0,6885.044,27.80972,1,12,1,50.9408,6.516751,0,215.6953,0,57.45755,0,0,31,3,0,4,58,13.8,0,67,0,357.36,0,0,1.386294,5.878744,0,0,0,1,0,0,67,8.837252,1.386294,4.051046,1 +11,2,0,1,1,225279,0,6885.044,29.12252,0,12,1,10.34295,11.81274,0,37.83342,0,22.15569,0,0,3,1,0,4,64.9,6.9,0,77.3,0,357.36,0,0,1.386294,5.878744,0,0,0,1,0,0,77.3,8.837252,1.386294,3.098094,1 +11,2,0,1,2,225279,0,6885.044,30.12252,0,12,1,79.16254,2.527255,0,304.7572,0,81.68979,0,0,41,5,0,4,64.9,6.9,0,77.3,0,357.36,0,0,1.386294,5.878744,0,0,0,1,0,0,77.3,8.837252,1.386294,4.402929,1 +11,2,0,1,3,225279,0,6885.044,31.12252,0,12,1,52.89124,9.224415,0,215.6953,0,62.11565,0,0,31,5,0,4,64.9,6.9,0,77.3,0,357.36,0,0,1.386294,5.878744,0,0,0,1,0,0,77.3,8.837252,1.386294,4.128998,1 +11,2,0,1,1,225280,0,6885.044,4.569473,1,12,1,59.88024,6.096897,0,0,0,65.97713,0,0,0,9,0,4,81.35272,11.84267,0,70.4,0,357.36,1,1,1.386294,5.878744,0,0,0,1,0,0,70.4,8.837252,1.386294,4.189308,1 +11,2,0,1,2,225280,0,6885.044,5.569473,1,12,1,75.3221,4.905848,0,0,277.8494,358.0773,1,0,0,8,0,4,81.35272,11.84267,0,70.4,0,357.36,1,1,1.386294,5.878744,0,0,0,1,0,0,70.4,8.837252,1.386294,5.880749,1 +11,2,0,1,3,225280,0,6885.044,6.569473,1,12,1,22.02845,6.723268,0,0,0,28.75172,0,0,0,4,0,4,81.35272,11.84267,0,70.4,0,357.36,1,1,1.386294,5.878744,0,0,0,1,0,0,70.4,8.837252,1.386294,3.358698,1 +15,2,95,0,1,225281,0,10362.61,26.36003,0,15,1,0,0,0,0,0,0,0,0,0,0,0,2,75,0,0,73.9,984.8,697.48,0,0,.6931472,6.547474,0,4.564348,6.943732,0,0,0,73.9,9.246056,.6931472,,0 +15,2,95,0,2,225281,0,10362.61,27.36003,0,15,1,126.7692,4.119082,0,0,0,130.8882,0,0,0,3,0,2,75,0,0,73.9,984.8,697.48,0,0,.6931472,6.547474,0,4.564348,6.943732,0,0,0,73.9,9.246056,.6931472,4.874344,1 +15,2,95,0,3,225281,0,10362.61,28.36003,0,15,1,0,0,0,0,0,0,0,0,0,0,0,3,75,0,0,73.9,984.8,697.48,0,0,1.098612,6.547474,0,4.564348,6.943732,0,0,0,73.9,9.246056,1.098612,,0 +15,2,95,0,4,225281,0,10362.61,29.36003,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,75,0,0,73.9,984.8,697.48,0,0,1.386294,6.547474,0,4.564348,6.943732,0,0,0,73.9,9.246056,1.386294,,0 +15,2,95,0,5,225281,0,10362.61,30.36003,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,75,0,0,73.9,984.8,697.48,0,0,1.386294,6.547474,0,4.564348,6.943732,0,0,0,73.9,9.246056,1.386294,,0 +15,2,95,0,1,225282,0,10362.61,23.77276,1,12,1,0,3.74197,0,0,0,3.74197,0,0,0,0,0,2,54.3,17.2,0,56.8,984.8,697.48,0,0,.6931472,6.547474,0,4.564348,6.943732,0,0,0,56.8,9.246056,.6931472,1.319612,1 +15,2,95,0,2,225282,0,10362.61,24.77276,1,12,1,42.94778,6.82284,44.34358,0,656.9839,751.0981,1,0,0,2,1,2,54.3,17.2,0,56.8,984.8,697.48,0,0,.6931472,6.547474,0,4.564348,6.943732,0,0,0,56.8,9.246056,.6931472,6.621536,1 +15,2,95,0,3,225282,0,10362.61,25.77276,1,12,1,0,15.13098,0,0,614.4761,629.6071,1,0,0,0,0,3,54.3,17.2,0,56.8,984.8,697.48,0,0,1.098612,6.547474,0,4.564348,6.943732,0,0,0,56.8,9.246056,1.098612,6.445096,1 +15,2,95,0,4,225282,0,10362.61,26.77276,1,12,1,114.0199,0,2.336642,0,0,116.3565,0,0,0,4,0,4,54.3,17.2,0,56.8,984.8,697.48,0,0,1.386294,6.547474,0,4.564348,6.943732,0,0,0,56.8,9.246056,1.386294,4.756659,1 +15,2,95,0,5,225282,0,10362.61,27.77276,1,12,1,9.314456,0,0,0,0,9.314456,0,0,0,1,0,4,54.3,17.2,0,56.8,984.8,697.48,0,0,1.386294,6.547474,0,4.564348,6.943732,0,0,0,56.8,9.246056,1.386294,2.231568,1 +6,2,25,1,1,225286,0,6382.991,25.86448,1,13,1,18.38865,20.55675,0,0,596.7612,635.7067,1,0,0,1,0,2,77.7,10.3,0,63.6,902.1,902.1,0,0,.6931472,6.804725,0,3.258096,8.19102,1,0,0,63.6,8.761549,.6931472,6.454737,1 +6,2,25,1,2,225286,0,6382.991,26.86448,1,13,1,23.23084,23.51391,0,0,0,46.74475,0,0,0,1,0,3,77.7,10.3,0,63.6,902.1,902.1,0,0,1.098612,6.804725,0,3.258096,8.19102,1,0,0,63.6,8.761549,1.098612,3.844702,1 +6,2,25,1,3,225286,0,6382.991,27.86448,1,13,1,17.38934,16.80217,0,0,723.0352,757.2267,1,0,0,1,0,3,77.7,10.3,0,63.6,902.1,902.1,0,0,1.098612,6.804725,0,3.258096,8.19102,1,0,0,63.6,8.761549,1.098612,6.629663,1 +6,2,25,1,1,225287,0,6382.991,24.72827,0,16,1,34.79657,2.45182,34.04176,0,0,71.29015,0,0,0,4,0,2,88.3,6.9,0,76.1,902.1,902.1,0,0,.6931472,6.804725,0,3.258096,8.19102,0,0,0,76.1,8.761549,.6931472,4.266758,1 +6,2,25,1,2,225287,0,6382.991,25.72827,0,16,1,17.20351,1.512933,0,0,0,18.71645,0,0,0,2,0,3,88.3,6.9,0,76.1,902.1,902.1,0,0,1.098612,6.804725,0,3.258096,8.19102,0,0,0,76.1,8.761549,1.098612,2.929403,1 +6,2,25,1,3,225287,0,6382.991,26.72827,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,6.9,0,76.1,902.1,902.1,0,0,1.098612,6.804725,0,3.258096,8.19102,0,0,0,76.1,8.761549,1.098612,,0 +13,2,0,0,1,225299,0,10360.12,4,1,16,1,10.24259,0,0,0,0,10.24259,0,0,0,1,0,4,81.35272,11.84267,0,96.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.245815,1.386294,2.326554,1 +13,2,0,0,2,225299,0,10360.12,5,1,16,1,14.25061,0,0,0,0,14.25061,0,0,0,1,0,4,81.35272,11.84267,0,96.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.245815,1.386294,2.6568,1 +13,2,0,0,3,225299,0,10360.12,6,1,16,1,5.469462,0,0,0,0,5.469462,0,0,0,0,1,4,81.35272,11.84267,0,96.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.245815,1.386294,1.69918,1 +13,2,0,0,1,225300,0,10360.12,6.368241,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,80,11.84267,0,96.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.245815,1.386294,,0 +13,2,0,0,2,225300,0,10360.12,7.368241,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,80,11.84267,0,96.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.245815,1.386294,,0 +13,2,0,0,3,225300,0,10360.12,8.368241,1,16,1,23.701,1.800365,0,0,0,25.50137,0,0,0,3,1,4,80,11.84267,0,96.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.245815,1.386294,3.238732,1 +13,2,0,0,1,225301,0,10360.12,36.89528,1,16,1,369.3261,11.26146,0,0,0,380.5876,0,0,0,5,0,4,76.6,6.9,0,81.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.8,9.245815,1.386294,5.941716,1 +13,2,0,0,2,225301,0,10360.12,37.89528,1,16,1,15.72482,4.34398,0,0,0,20.0688,0,0,0,0,2,4,76.6,6.9,0,81.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.8,9.245815,1.386294,2.999166,1 +13,2,0,0,3,225301,0,10360.12,38.89528,1,16,1,25.97995,0,0,0,0,25.97995,0,0,0,1,1,4,76.6,6.9,0,81.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.8,9.245815,1.386294,3.257325,1 +13,2,0,0,1,225302,0,10360.12,34.00411,0,20,1,0,0,0,0,0,0,0,0,0,0,0,4,83,3.4,0,84.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,84.1,9.245815,1.386294,,0 +13,2,0,0,2,225302,0,10360.12,35.00411,0,20,1,65.8231,4.914005,36.85504,0,0,107.5921,0,0,0,6,0,4,83,3.4,0,84.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,84.1,9.245815,1.386294,4.678348,1 +13,2,0,0,3,225302,0,10360.12,36.00411,0,20,1,0,3.245214,0,0,0,3.245214,0,0,0,0,0,4,83,3.4,0,84.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,84.1,9.245815,1.386294,1.177181,1 +17,2,25,1,1,225309,0,4666.276,59.61944,1,12,1,57.43059,0,0,0,0,57.43059,0,0,0,1,0,1,78.7,27.6,0,81.8,200,200,0,0,0,5.298317,0,3.258096,6.684612,0,0,0,81.8,8.448331,0,4.050577,1 +17,2,25,1,2,225309,0,4666.276,60.61944,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,78.7,27.6,0,81.8,200,200,0,0,0,5.298317,0,3.258096,6.684612,0,0,0,81.8,8.448331,0,,0 +17,2,25,1,3,225309,0,4666.276,61.61944,1,12,1,272.1432,0,48.88022,0,0,321.0234,0,0,0,19,3,1,78.7,27.6,0,81.8,200,200,0,0,0,5.298317,0,3.258096,6.684612,0,0,0,81.8,8.448331,0,5.771514,1 +17,2,25,1,4,225309,0,4666.276,62.61944,1,12,1,511.3589,0,0,0,0,511.3589,0,0,0,30,0,1,78.7,27.6,0,81.8,200,200,0,0,0,5.298317,0,3.258096,6.684612,0,0,0,81.8,8.448331,0,6.237072,1 +17,2,25,1,5,225309,0,4666.276,63.61944,1,12,1,276.1617,0,0,0,0,276.1617,0,0,0,18,0,1,78.7,27.6,0,81.8,200,200,0,0,0,5.298317,0,3.258096,6.684612,0,0,0,81.8,8.448331,0,5.620986,1 +11,2,0,0,1,225316,0,4458.622,3.227926,0,10,1,28.57143,.8571429,0,0,0,29.42857,0,0,0,1,0,5,81.35272,11.84267,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,8.40282,1.609438,3.381966,1 +11,2,0,0,2,225316,0,4458.622,4.227926,0,10,1,8.353808,0,0,0,0,8.353808,0,0,0,1,0,6,81.35272,11.84267,0,100,0,0,1,0,1.791759,0,0,0,0,0,0,0,100,8.40282,1.791759,2.122718,1 +11,2,0,0,3,225316,0,4458.622,5.227926,0,10,1,17.77575,14.33455,0,71.78669,0,32.1103,0,0,5,1,0,6,81.35272,11.84267,0,100,0,0,1,0,1.791759,0,0,0,0,0,0,0,100,8.40282,1.791759,3.469177,1 +11,2,0,0,4,225316,0,4458.622,6.227926,0,10,1,6.669446,17.38224,0,68.77866,0,24.05169,0,0,4,1,0,6,81.35272,11.84267,0,100,0,0,1,0,1.791759,0,0,0,0,0,0,0,100,8.40282,1.791759,3.180205,1 +11,2,0,0,1,225317,0,4458.622,26.13826,1,10,1,511.2668,185.6658,0,0,1898.038,2594.97,4,0,0,28,1,5,76.6,17.2,1,59.1,0,0,0,0,1.609438,0,0,0,0,1,0,0,59.1,8.40282,1.609438,7.861331,1 +11,2,0,0,2,225317,0,4458.622,27.13826,1,10,1,377.6658,144.4275,31.95577,307.0909,2690.865,3244.914,2,0,37,20,1,6,76.6,17.2,1,59.1,0,0,0,0,1.791759,0,0,0,0,1,0,0,59.1,8.40282,1.791759,8.084845,1 +11,2,0,0,3,225317,0,4458.622,28.13826,1,10,1,32.47493,128.9471,0,789.6536,543.5734,704.9954,1,0,39,2,0,6,76.6,17.2,1,59.1,0,0,0,0,1.791759,0,0,0,0,1,0,0,59.1,8.40282,1.791759,6.558191,1 +11,2,0,0,4,225317,0,4458.622,29.13826,1,10,1,53.14714,75.47311,0,673.1971,0,128.6203,0,0,35,0,0,6,76.6,17.2,1,59.1,0,0,0,0,1.791759,0,0,0,0,1,0,0,59.1,8.40282,1.791759,4.856864,1 +11,2,0,0,5,225317,0,4458.622,30.13826,1,10,1,0,54.5949,0,720.1801,1144.111,1198.706,1,0,34,0,0,4,76.6,17.2,1,59.1,0,0,0,0,1.386294,0,0,0,0,1,0,0,59.1,8.40282,1.386294,7.088998,1 +11,2,0,0,1,225318,0,4458.622,26.49966,0,13,1,124.3935,13.84906,30.18868,129.3801,0,168.4313,0,0,2,4,1,5,75.5,10.3,0,69.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,69.3,8.40282,1.609438,5.126528,1 +11,2,0,0,2,225318,0,4458.622,27.49966,0,13,1,17.69042,30.41769,0,341.5577,1179.238,1227.346,1,0,39,1,0,6,75.5,10.3,0,69.3,0,0,0,0,1.791759,0,0,0,0,0,0,0,69.3,8.40282,1.791759,7.11261,1 +11,2,0,0,3,225318,0,4458.622,28.49966,0,13,1,56.74567,8.773929,27.7165,881.9507,0,93.2361,0,0,44,3,1,6,75.5,10.3,0,69.3,0,0,0,0,1.791759,0,0,0,0,0,0,0,69.3,8.40282,1.791759,4.535135,1 +11,2,0,0,4,225318,0,4458.622,29.49966,0,13,1,15.00625,1.229679,31.17132,216.757,0,47.40725,0,0,11,0,1,6,75.5,10.3,0,69.3,0,0,0,0,1.791759,0,0,0,0,0,0,0,69.3,8.40282,1.791759,3.858775,1 +11,2,0,0,5,225318,0,4458.622,30.49966,0,13,1,36.03151,5.915229,18.75469,96.58665,0,60.70142,0,0,5,2,0,4,75.5,10.3,0,69.3,0,0,0,0,1.386294,0,0,0,0,0,0,0,69.3,8.40282,1.386294,4.105967,1 +11,2,0,0,1,225319,0,4458.622,7.986311,0,10,1,6.738544,2.12938,0,0,0,8.867925,0,0,0,1,0,5,83.3,11.84267,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,8.40282,1.609438,2.182441,1 +11,2,0,0,2,225319,0,4458.622,8.986311,0,10,1,135.4889,3.882064,6.358722,0,0,145.7297,0,0,0,7,0,6,83.3,11.84267,0,100,0,0,1,0,1.791759,0,0,0,0,0,0,0,100,8.40282,1.791759,4.981754,1 +11,2,0,0,3,225319,0,4458.622,9.986311,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,83.3,11.84267,0,100,0,0,1,0,1.791759,0,0,0,0,0,0,0,100,8.40282,1.791759,,0 +11,2,0,0,4,225319,0,4458.622,10.98631,0,10,1,6.461025,0,0,22.92622,0,6.461025,0,0,1,1,0,6,83.3,11.84267,0,100,0,0,1,0,1.791759,0,0,0,0,0,0,0,100,8.40282,1.791759,1.865788,1 +11,2,0,0,5,225319,0,4458.622,11.98631,0,10,1,20.25131,0,0,0,0,20.25131,0,0,0,1,0,4,83.3,11.84267,0,100,0,0,1,0,1.386294,0,0,0,0,0,0,0,100,8.40282,1.386294,3.008219,1 +11,2,0,0,1,225320,0,4458.622,6.954141,1,10,1,0,1.28841,0,0,0,1.28841,0,0,0,0,0,5,83.3,11.84267,0,92.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,92.6,8.40282,1.609438,.2534087,1 +11,2,0,0,2,225320,0,4458.622,7.954141,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,83.3,11.84267,0,92.6,0,0,1,1,1.791759,0,0,0,0,0,0,0,92.6,8.40282,1.791759,,0 +11,2,0,0,3,225320,0,4458.622,8.954141,1,10,1,8.659982,0,0,0,0,8.659982,0,0,0,1,0,6,83.3,11.84267,0,92.6,0,0,1,1,1.791759,0,0,0,0,0,0,0,92.6,8.40282,1.791759,2.158713,1 +11,2,0,0,4,225320,0,4458.622,9.954141,1,10,1,23.13464,0,0,0,0,23.13464,0,0,0,2,0,6,83.3,11.84267,0,92.6,0,0,1,1,1.791759,0,0,0,0,0,0,0,92.6,8.40282,1.791759,3.141331,1 +13,2,0,1,1,225331,0,9689.149,61.01574,0,14,1,156.233,168.7534,0,0,0,324.9864,0,0,0,11,0,2,88.3,3.4,0,85.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,85.2,9.178865,.6931472,5.783783,1 +13,2,0,1,2,225331,0,9689.149,62.01574,0,14,1,79.41031,49.57879,0,0,0,128.9891,0,0,0,7,0,2,88.3,3.4,0,85.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,85.2,9.178865,.6931472,4.859728,1 +13,2,0,1,3,225331,0,9689.149,63.01574,0,14,1,112.7811,23.82744,43.63469,0,0,180.2432,0,0,0,7,0,2,88.3,3.4,0,85.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,85.2,9.178865,.6931472,5.194307,1 +13,2,0,1,1,225332,0,9689.149,54.63107,1,15,1,36.47251,0,43.22809,0,0,79.7006,0,0,0,3,0,2,82.4,10.3,0,65.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,65.9,9.178865,.6931472,4.378277,1 +13,2,0,1,2,225332,0,9689.149,55.63107,1,15,1,9.910803,5.896928,0,0,0,15.80773,0,0,0,1,0,2,82.4,10.3,0,65.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,65.9,9.178865,.6931472,2.760499,1 +13,2,0,1,3,225332,0,9689.149,56.63107,1,15,1,148.6921,12.39101,45.69986,0,0,206.7829,0,0,0,8,0,2,82.4,10.3,0,65.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,65.9,9.178865,.6931472,5.33167,1 +6,2,25,1,1,225333,0,5103.226,30.43121,0,17,1,57.95148,0,46.84636,0,0,104.7978,0,0,0,4,0,1,87.2,6.9,0,85.2,950,950,0,0,0,6.856462,0,3.258096,8.242756,0,0,0,85.2,8.537824,0,4.652033,1 +6,2,25,1,2,225333,0,5103.226,31.43121,0,17,1,26.04423,0,0,0,0,26.04423,0,0,0,2,0,1,87.2,6.9,0,85.2,950,950,0,0,0,6.856462,0,3.258096,8.242756,0,0,0,85.2,8.537824,0,3.259796,1 +6,2,25,1,3,225333,0,5103.226,32.43121,0,17,1,64.72197,0,0,0,0,64.72197,0,0,0,2,0,1,87.2,6.9,0,85.2,950,950,0,0,0,6.856462,0,3.258096,8.242756,0,0,0,85.2,8.537824,0,4.170101,1 +6,2,25,1,4,225333,0,5103.226,33.43121,0,17,1,28.76198,0,36.1734,0,0,64.93539,0,0,0,2,0,1,87.2,6.9,0,85.2,950,950,0,0,0,6.856462,0,3.258096,8.242756,0,0,0,85.2,8.537824,0,4.173393,1 +6,2,25,1,5,225333,0,5103.226,34.43121,0,17,1,77.08177,0,0,0,300.3526,377.4344,1,0,0,5,0,1,87.2,6.9,0,85.2,950,950,0,0,0,6.856462,0,3.258096,8.242756,0,0,0,85.2,8.537824,0,5.933397,1 +18,2,25,1,1,225341,0,9695.602,41.34702,1,12,1,19.80728,16.73983,0,0,0,36.54711,0,0,0,3,0,5,60.6,24.1,0,58,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,58,9.179531,1.609438,3.598602,1 +18,2,25,1,2,225341,0,9695.602,42.34702,1,12,1,13.6652,16.59346,0,0,0,30.25866,0,0,0,1,0,5,60.6,24.1,0,58,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,58,9.179531,1.609438,3.409783,1 +18,2,25,1,3,225341,0,9695.602,43.34702,1,12,1,0,11.42728,0,0,0,11.42728,0,0,0,0,0,5,60.6,24.1,0,58,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,58,9.179531,1.609438,2.436004,1 +18,2,25,1,1,225342,0,9695.602,5.620808,1,12,1,21.41328,2.623126,0,0,0,24.0364,0,0,0,2,0,5,73.3,11.84267,0,66.7,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,66.7,9.179531,1.609438,3.179569,1 +18,2,25,1,2,225342,0,9695.602,6.620808,1,12,1,17.0815,0,0,0,0,17.0815,0,0,0,1,0,5,73.3,11.84267,0,66.7,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,66.7,9.179531,1.609438,2.837996,1 +18,2,25,1,3,225342,0,9695.602,7.620808,1,12,1,6.775068,0,0,0,0,6.775068,0,0,0,1,0,5,73.3,11.84267,0,66.7,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,66.7,9.179531,1.609438,1.913249,1 +18,2,25,1,1,225343,0,9695.602,40.88433,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,45.2,17.2,0,46.6,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,46.6,9.179531,1.609438,,0 +18,2,25,1,2,225343,0,9695.602,41.88433,0,14,1,0,1.903368,0,0,0,1.903368,0,0,0,0,0,5,45.2,17.2,0,46.6,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,46.6,9.179531,1.609438,.6436247,1 +18,2,25,1,3,225343,0,9695.602,42.88433,0,14,1,49.23216,1.124661,28.73532,0,0,79.09214,0,0,0,2,1,5,45.2,17.2,0,46.6,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,46.6,9.179531,1.609438,4.370614,1 +18,2,25,1,1,225344,0,9695.602,8.183436,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,70,11.84267,0,70.4,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,70.4,9.179531,1.609438,,0 +18,2,25,1,2,225344,0,9695.602,9.183436,1,12,1,17.0815,0,0,0,0,17.0815,0,0,0,1,0,5,70,11.84267,0,70.4,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,70.4,9.179531,1.609438,2.837996,1 +18,2,25,1,3,225344,0,9695.602,10.18344,1,12,1,9.485095,2.66486,0,0,0,12.14995,0,0,0,1,0,5,70,11.84267,0,70.4,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,70.4,9.179531,1.609438,2.497325,1 +18,2,25,1,1,225345,0,9695.602,3.370294,0,12,1,9.635974,4.175589,0,0,0,13.81156,0,0,0,1,0,5,81.35272,11.84267,0,77.8,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,77.8,9.179531,1.609438,2.625506,1 +18,2,25,1,2,225345,0,9695.602,4.370294,0,12,1,30.25866,12.9429,0,5.856515,0,43.20156,0,0,1,5,0,5,81.35272,11.84267,0,77.8,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,77.8,9.179531,1.609438,3.765877,1 +18,2,25,1,3,225345,0,9695.602,5.370294,0,12,1,27.43902,4.042457,0,0,0,31.48148,0,0,0,2,0,5,81.35272,11.84267,0,77.8,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,77.8,9.179531,1.609438,3.449399,1 +11,2,0,0,1,225349,0,3643.402,28.30116,1,18,1,39.90899,3.752677,28.1531,0,0,71.81477,0,0,0,1,1,3,79.8,6.9,0,88.6,0,864.48,0,0,1.098612,6.762128,0,0,0,0,0,0,88.6,8.200948,1.098612,4.27409,1 +11,2,0,0,2,225349,0,3643.402,29.30116,1,18,1,38.55539,0,0,0,0,38.55539,0,0,0,2,0,3,79.8,6.9,0,88.6,0,864.48,0,0,1.098612,6.762128,0,0,0,0,0,0,88.6,8.200948,1.098612,3.652096,1 +11,2,0,0,3,225349,0,3643.402,30.30116,1,18,1,114.7245,27.63324,33.23397,0,964.2954,1139.887,2,0,0,2,0,3,79.8,6.9,0,88.6,0,864.48,0,0,1.098612,6.762128,0,0,0,0,0,0,88.6,8.200948,1.098612,7.038684,1 +11,2,0,0,1,225350,0,3643.402,29.57974,0,20,1,10.70664,0,30.29443,0,0,41.00107,0,0,0,0,1,3,70.7,0,0,92,0,864.48,0,0,1.098612,6.762128,0,0,0,0,0,0,92,8.200948,1.098612,3.713598,1 +11,2,0,0,2,225350,0,3643.402,30.57974,0,20,1,28.30649,4.367984,0,0,0,32.67448,0,0,0,2,1,3,70.7,0,0,92,0,864.48,0,0,1.098612,6.762128,0,0,0,0,0,0,92,8.200948,1.098612,3.486594,1 +11,2,0,0,3,225350,0,3643.402,31.57974,0,20,1,56.00723,0,35.04065,0,0,91.04787,0,0,0,2,0,3,70.7,0,0,92,0,864.48,0,0,1.098612,6.762128,0,0,0,0,0,0,92,8.200948,1.098612,4.511385,1 +5,2,25,1,1,225353,0,8343.108,58.00411,1,17,1,56.33423,0,32.53909,0,0,88.87331,0,0,0,3,0,1,91.5,13.8,0,93.2,333.12,333.12,0,0,0,5.808503,0,3.258096,7.194797,0,0,0,93.2,9.029311,0,4.487212,1 +5,2,25,1,2,225353,0,8343.108,59.00411,1,17,1,25.55283,2.353808,0,0,0,27.90663,0,0,0,3,0,1,91.5,13.8,0,93.2,333.12,333.12,0,0,0,5.808503,0,3.258096,7.194797,0,0,0,93.2,9.029311,0,3.328864,1 +5,2,25,1,3,225353,0,8343.108,60.00411,1,17,1,131.0392,18.0082,0,0,991.0665,1140.114,1,0,0,3,0,1,91.5,13.8,0,93.2,333.12,333.12,0,0,0,5.808503,0,3.258096,7.194797,0,0,0,93.2,9.029311,0,7.038883,1 +11,2,0,1,1,225362,0,12487.39,11.57016,1,12,1,69.32615,0,0,0,0,69.32615,0,0,0,2,0,6,93.3,11.84267,0,100,0,445.56,1,1,1.791759,6.099332,0,0,0,0,0,0,100,9.432554,1.791759,4.238822,1 +11,2,0,1,2,225362,0,12487.39,12.57016,1,12,1,14.25061,1.769042,0,0,0,16.01966,0,0,0,2,0,6,93.3,11.84267,0,100,0,445.56,1,1,1.791759,6.099332,0,0,0,0,0,0,100,9.432554,1.791759,2.773816,1 +11,2,0,1,3,225362,0,12487.39,13.57016,1,12,1,54.69462,0,0,0,0,54.69462,0,0,0,5,0,6,93.3,11.84267,0,100,0,445.56,1,1,1.791759,6.099332,0,0,0,0,0,0,100,9.432554,1.791759,4.001765,1 +11,2,0,1,1,225363,0,12487.39,12.71458,1,12,1,147.4933,6.592992,0,0,0,154.0863,0,0,0,7,0,6,88.3,11.84267,0,85.2,0,445.56,1,1,1.791759,6.099332,0,0,0,0,0,0,85.2,9.432554,1.791759,5.037513,1 +11,2,0,1,2,225363,0,12487.39,13.71458,1,12,1,102.7027,3.464373,0,0,0,106.1671,0,0,0,12,0,6,88.3,11.84267,0,85.2,0,445.56,1,1,1.791759,6.099332,0,0,0,0,0,0,85.2,9.432554,1.791759,4.665014,1 +11,2,0,1,3,225363,0,12487.39,14.71458,1,12,1,73.701,2.119416,32.16955,0,0,107.99,0,0,0,6,0,6,88.3,11.84267,0,85.2,0,445.56,1,1,1.791759,6.099332,0,0,0,0,0,0,85.2,9.432554,1.791759,4.682038,1 +11,2,0,1,1,225364,0,12487.39,9.730322,0,12,1,33.42318,6.7062,0,0,0,40.12938,0,0,0,4,0,6,80,11.84267,0,88.9,0,445.56,1,0,1.791759,6.099332,0,0,0,0,0,0,88.9,9.432554,1.791759,3.692109,1 +11,2,0,1,2,225364,0,12487.39,10.73032,0,12,1,27.51843,1.090909,0,0,0,28.60934,0,0,0,3,0,6,80,11.84267,0,88.9,0,445.56,1,0,1.791759,6.099332,0,0,0,0,0,0,88.9,9.432554,1.791759,3.353733,1 +11,2,0,1,3,225364,0,12487.39,11.73032,0,12,1,36.00729,6.736554,0,0,0,42.74385,0,0,0,4,0,6,80,11.84267,0,88.9,0,445.56,1,0,1.791759,6.099332,0,0,0,0,0,0,88.9,9.432554,1.791759,3.755225,1 +11,2,0,1,1,225365,0,12487.39,30.71595,1,12,1,175.7412,29.02426,0,0,0,204.7655,0,0,0,11,0,6,83,10.3,0,78.4,0,445.56,0,0,1.791759,6.099332,0,0,0,0,0,0,78.4,9.432554,1.791759,5.321866,1 +11,2,0,1,2,225365,0,12487.39,31.71595,1,12,1,122.8501,28.13268,34.93366,0,0,185.9165,0,0,0,9,0,6,83,10.3,0,78.4,0,445.56,0,0,1.791759,6.099332,0,0,0,0,0,0,78.4,9.432554,1.791759,5.225297,1 +11,2,0,1,3,225365,0,12487.39,32.71595,1,12,1,112.124,15.71103,0,0,0,127.835,0,0,0,5,0,6,83,10.3,0,78.4,0,445.56,0,0,1.791759,6.099332,0,0,0,0,0,0,78.4,9.432554,1.791759,4.85074,1 +11,2,0,1,1,225366,0,12487.39,3.638604,1,12,1,25.33693,0,0,0,0,25.33693,0,0,0,2,0,6,81.35272,11.84267,0,88.9,0,445.56,1,1,1.791759,6.099332,0,0,0,0,0,0,88.9,9.432554,1.791759,3.232263,1 +11,2,0,1,2,225366,0,12487.39,4.638604,1,12,1,31.44963,2.039312,0,0,0,33.48895,0,0,0,2,0,6,81.35272,11.84267,0,88.9,0,445.56,1,1,1.791759,6.099332,0,0,0,0,0,0,88.9,9.432554,1.791759,3.511215,1 +11,2,0,1,3,225366,0,12487.39,5.638604,1,12,1,21.87785,1.891522,0,0,0,23.76937,0,0,0,1,0,6,81.35272,11.84267,0,88.9,0,445.56,1,1,1.791759,6.099332,0,0,0,0,0,0,88.9,9.432554,1.791759,3.168398,1 +11,2,0,1,1,225367,0,12487.39,32.24093,0,13,1,115.5795,10.84636,32.28571,0,583.7305,742.4421,1,0,0,3,0,6,78.7,20.7,0,88.6,0,445.56,0,0,1.791759,6.099332,0,0,0,0,0,0,88.6,9.432554,1.791759,6.609945,1 +11,2,0,1,2,225367,0,12487.39,33.24093,0,13,1,126.0442,3.759214,0,0,0,129.8034,0,0,0,3,0,6,78.7,20.7,0,88.6,0,445.56,0,0,1.791759,6.099332,0,0,0,0,0,0,88.6,9.432554,1.791759,4.866021,1 +11,2,0,1,3,225367,0,12487.39,34.24093,0,13,1,249.3163,12.33364,0,0,0,261.65,0,0,0,6,0,6,78.7,20.7,0,88.6,0,445.56,0,0,1.791759,6.099332,0,0,0,0,0,0,88.6,9.432554,1.791759,5.567008,1 +11,2,0,1,1,225371,0,3402.933,61.54415,1,14,1,193.8005,150.3181,0,0,0,344.1186,0,0,0,8,0,1,87.2,41.4,1,48.9,0,293,0,0,0,5.680172,0,0,0,0,1,0,48.9,8.132687,0,5.840986,1 +11,2,0,1,2,225371,0,3402.933,62.54415,1,14,1,571.2531,183.9017,34.64865,0,0,789.8035,0,0,0,8,1,1,87.2,41.4,1,48.9,0,293,0,0,0,5.680172,0,0,0,0,1,0,48.9,8.132687,0,6.671784,1 +11,2,0,1,3,225371,0,3402.933,63.54415,1,14,1,438.9243,193.7967,23.24521,0,0,655.9662,0,0,0,13,1,1,87.2,41.4,1,48.9,0,293,0,0,0,5.680172,0,0,0,0,1,0,48.9,8.132687,0,6.486109,1 +11,2,0,1,1,225382,0,5023.46,23.34839,1,17,1,294.4326,45.63705,0,0,0,340.0696,0,0,0,31,0,1,73.9,3.4,0,87.5,0,0,0,0,0,0,0,0,0,0,0,0,87.5,8.522074,0,5.82915,1 +11,2,0,1,2,225382,0,5023.46,24.34839,1,17,1,258.1747,67.49634,0,0,0,325.6711,0,0,0,33,1,1,73.9,3.4,0,87.5,0,0,0,0,0,0,0,0,0,0,0,0,87.5,8.522074,0,5.785888,1 +11,2,0,1,3,225382,0,5023.46,25.34839,1,17,1,98.91599,73.17073,0,0,0,172.0867,0,0,0,11,0,1,73.9,3.4,0,87.5,0,0,0,0,0,0,0,0,0,0,0,0,87.5,8.522074,0,5.147998,1 +11,2,0,1,1,225383,0,2118.475,19.60301,1,12,1,65.84583,16.83619,34.04176,0,0,116.7238,0,0,0,3,0,1,66.5,3.4,0,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,7.658924,0,4.75981,1 +11,2,0,1,2,225383,0,2118.475,20.60301,1,12,1,142.7526,31.64959,0,21.96193,0,174.4021,0,0,1,11,0,1,66.5,3.4,0,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,7.658924,0,5.161364,1 +11,2,0,1,3,225383,0,2118.475,21.60301,1,12,1,44.48961,0,30.271,0,0,74.76061,0,0,0,3,0,1,66.5,3.4,0,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,7.658924,0,4.314291,1 +11,2,0,0,1,225388,0,3725.806,49.5989,1,25,1,61.51334,13.82689,0,0,0,75.34023,0,0,0,1,3,1,79.8,17.2,0,65.5,0,0,0,0,0,0,0,0,0,1,0,0,65.5,8.223307,0,4.322014,1 +11,2,0,0,2,225388,0,3725.806,50.5989,1,25,1,331.5164,12.68583,48.6224,0,0,392.8246,0,0,0,3,22,1,79.8,17.2,0,65.5,0,0,0,0,0,0,0,0,0,1,0,0,65.5,8.223307,0,5.973363,1 +11,2,0,0,3,225388,0,3725.806,51.5989,1,25,1,192.1524,7.732905,0,0,0,199.8853,0,0,0,2,24,1,79.8,17.2,0,65.5,0,0,0,0,0,0,0,0,0,1,0,0,65.5,8.223307,0,5.297743,1 +13,2,0,1,1,225389,0,8138.417,53.24025,0,12,1,73.85445,11.80593,20.91644,0,0,106.5768,0,0,0,3,0,2,80.3,13.8,0,79.5,300,400.32,0,0,.6931472,5.992264,1,4.564348,5.755076,1,0,0,79.5,9.004474,.6931472,4.668866,1 +13,2,0,1,2,225389,0,8138.417,54.24025,0,12,1,0,6.855037,0,0,0,6.855037,0,0,0,0,0,2,80.3,13.8,0,79.5,300,400.32,0,0,.6931472,5.992264,1,4.564348,5.755076,1,0,0,79.5,9.004474,.6931472,1.924984,1 +13,2,0,1,3,225389,0,8138.417,55.24025,0,12,1,100.0456,27.68004,32.36098,0,0,160.0866,0,0,0,3,0,2,80.3,13.8,0,79.5,300,400.32,0,0,.6931472,5.992264,1,4.564348,5.755076,1,0,0,79.5,9.004474,.6931472,5.075715,1 +13,2,0,1,1,225390,0,8138.417,51.93155,1,13,1,74.39353,66.53909,29.0027,0,0,169.9353,0,0,0,10,0,2,83,31,1,85.2,300,400.32,0,0,.6931472,5.992264,1,4.564348,5.755076,1,0,0,85.2,9.004474,.6931472,5.135418,1 +13,2,0,1,2,225390,0,8138.417,52.93155,1,13,1,31.94103,69.28747,0,51.59705,0,101.2285,0,0,7,3,0,2,83,31,1,85.2,300,400.32,0,0,.6931472,5.992264,1,4.564348,5.755076,1,0,0,85.2,9.004474,.6931472,4.61738,1 +13,2,0,1,3,225390,0,8138.417,53.93155,1,13,1,116.6819,95.53327,0,0,0,212.2151,0,0,0,9,0,2,83,31,1,85.2,300,400.32,0,0,.6931472,5.992264,1,4.564348,5.755076,1,0,0,85.2,9.004474,.6931472,5.357601,1 +11,2,0,1,1,225391,0,5517.889,31.5154,1,13,1,101.159,16.2372,0,0,0,117.3962,0,0,0,5,0,1,71.8,34.5,1,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,8.615932,0,4.765555,1 +11,2,0,1,2,225391,0,5517.889,32.5154,1,13,1,208.3538,21.49386,0,19.65602,0,229.8477,0,0,1,8,0,1,71.8,34.5,1,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,8.615932,0,5.437417,1 +11,2,0,1,3,225391,0,5517.889,33.5154,1,13,1,319.7357,42.14676,0,102.5524,0,361.8824,0,0,5,16,0,1,71.8,34.5,1,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,8.615932,0,5.891319,1 +14,2,95,0,1,225392,0,9703.226,53.95209,1,13,1,18.86792,2.156334,0,0,0,21.02426,0,0,0,2,0,2,70.2,13.8,1,83,598.1,598,0,0,.6931472,6.393591,0,4.564348,6.445051,1,0,0,83,9.180317,.6931472,3.045677,1 +14,2,95,0,2,225392,0,9703.226,54.95209,1,13,1,0,0,0,0,0,0,0,0,0,0,0,2,70.2,13.8,1,83,598.1,598,0,0,.6931472,6.393591,0,4.564348,6.445051,1,0,0,83,9.180317,.6931472,,0 +14,2,95,0,3,225392,0,9703.226,55.95209,1,13,1,0,0,0,0,0,0,0,0,0,0,0,2,70.2,13.8,1,83,598.1,598,0,0,.6931472,6.393591,0,4.564348,6.445051,1,0,0,83,9.180317,.6931472,,0 +14,2,95,1,1,225393,0,9703.226,18.02327,0,11,1,26.68464,4.25876,0,0,0,30.9434,0,0,0,1,0,2,79.3,10.3,0,84.1,598.1,598,0,0,.6931472,6.393591,0,4.564348,6.445051,0,0,0,84.1,9.180317,.6931472,3.43216,1 +14,2,95,1,2,225393,0,9703.226,19.02327,0,11,1,12.28501,0,0,0,0,12.28501,0,0,0,1,0,2,79.3,10.3,0,84.1,598.1,598,0,0,.6931472,6.393591,0,4.564348,6.445051,0,0,0,84.1,9.180317,.6931472,2.50838,1 +14,2,95,1,3,225393,0,9703.226,20.02327,0,11,1,75.63811,11.16682,0,0,444.7721,531.577,1,0,0,3,0,2,79.3,10.3,0,84.1,598.1,598,0,0,.6931472,6.393591,0,4.564348,6.445051,0,0,0,84.1,9.180317,.6931472,6.275848,1 +7,2,25,1,1,225394,0,8015.836,1.700205,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,88.9,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,88.9,8.989299,1.609438,,0 +7,2,25,1,2,225394,0,8015.836,2.700205,1,10,1,48.40295,0,0,0,0,48.40295,0,0,0,3,0,5,81.35272,11.84267,0,88.9,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,88.9,8.989299,1.609438,3.879561,1 +7,2,25,1,3,225394,0,8015.836,3.700205,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,88.9,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,88.9,8.989299,1.609438,,0 +7,2,25,1,1,225395,0,8015.836,26.63381,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,77.7,3.4,0,79.5,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,79.5,8.989299,1.609438,,0 +7,2,25,1,2,225395,0,8015.836,27.63381,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,77.7,3.4,0,79.5,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,79.5,8.989299,1.609438,,0 +7,2,25,1,3,225395,0,8015.836,28.63381,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,77.7,3.4,0,79.5,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,79.5,8.989299,1.609438,,0 +7,2,25,1,1,225396,0,8015.836,23.75633,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,62.2,3.4,0,60.2,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,60.2,8.989299,1.609438,,0 +7,2,25,1,2,225396,0,8015.836,24.75633,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,62.2,3.4,0,60.2,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,60.2,8.989299,1.609438,,0 +7,2,25,1,3,225396,0,8015.836,25.75633,1,10,1,65.24612,9.024612,0,0,0,74.27074,0,0,0,1,0,5,62.2,3.4,0,60.2,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,60.2,8.989299,1.609438,4.307717,1 +7,2,25,1,1,225397,0,8015.836,5.519507,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,11.84267,0,88.9,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,88.9,8.989299,1.609438,,0 +7,2,25,1,2,225397,0,8015.836,6.519507,1,10,1,20.63882,0,35.31204,0,0,55.95086,0,0,0,1,1,5,86.7,11.84267,0,88.9,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,88.9,8.989299,1.609438,4.024474,1 +7,2,25,1,3,225397,0,8015.836,7.519507,1,10,1,16.40839,11.32634,0,0,0,27.73473,0,0,0,3,0,5,86.7,11.84267,0,88.9,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,88.9,8.989299,1.609438,3.322685,1 +7,2,25,1,1,225398,0,8015.836,3.638604,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,77.8,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,77.8,8.989299,1.609438,,0 +7,2,25,1,2,225398,0,8015.836,4.638604,0,10,1,44.71745,0,0,0,0,44.71745,0,0,0,2,0,5,81.35272,11.84267,0,77.8,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,77.8,8.989299,1.609438,3.800364,1 +7,2,25,1,3,225398,0,8015.836,5.638604,0,10,1,15.9526,0,0,0,0,15.9526,0,0,0,1,0,5,81.35272,11.84267,0,77.8,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,77.8,8.989299,1.609438,2.769622,1 +13,2,0,0,1,225399,0,5174.193,23.74264,1,16,1,34.59287,4.390633,0,0,0,38.9835,0,0,0,2,0,1,87.8,0,0,84.1,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,84.1,8.551632,0,3.663139,1 +13,2,0,0,2,225399,0,5174.193,24.74264,1,16,1,58.65245,3.611246,0,0,0,62.26369,0,0,0,8,0,1,87.8,0,0,84.1,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,84.1,8.551632,0,4.131379,1 +13,2,0,0,3,225399,0,5174.193,25.74264,1,16,1,106.9182,3.360287,0,0,0,110.2785,0,0,0,2,3,1,87.8,0,0,84.1,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,84.1,8.551632,0,4.703009,1 +16,2,95,1,1,225400,0,5232.563,6.231349,1,12,1,15.52462,3.185225,0,0,0,18.70985,0,0,0,2,0,3,83.3,11.84267,0,85.2,375,375,1,1,1.098612,5.926926,0,4.564348,5.97822,0,0,0,85.2,8.562847,1.098612,2.92905,1 +16,2,95,1,2,225400,0,5232.563,7.231349,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.3,11.84267,0,85.2,375,375,1,1,1.098612,5.926926,0,4.564348,5.97822,0,0,0,85.2,8.562847,1.098612,,0 +16,2,95,1,3,225400,0,5232.563,8.231348,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.3,11.84267,0,85.2,375,375,1,1,1.098612,5.926926,0,4.564348,5.97822,0,0,0,85.2,8.562847,1.098612,,0 +16,2,95,1,4,225400,0,5232.563,9.231348,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.3,11.84267,0,85.2,375,375,1,1,1.098612,5.926926,0,4.564348,5.97822,0,0,0,85.2,8.562847,1.098612,,0 +16,2,95,1,5,225400,0,5232.563,10.23135,1,12,1,14.15797,0,0,0,0,14.15797,0,0,0,1,0,3,83.3,11.84267,0,85.2,375,375,1,1,1.098612,5.926926,0,4.564348,5.97822,0,0,0,85.2,8.562847,1.098612,2.650278,1 +16,2,95,1,1,225401,0,5232.563,4.251882,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,0,85.2,375,375,1,0,1.098612,5.926926,0,4.564348,5.97822,0,0,0,85.2,8.562847,1.098612,,0 +16,2,95,1,2,225401,0,5232.563,5.251882,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,0,85.2,375,375,1,0,1.098612,5.926926,0,4.564348,5.97822,0,0,0,85.2,8.562847,1.098612,,0 +16,2,95,1,3,225401,0,5232.563,6.251882,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,0,85.2,375,375,1,0,1.098612,5.926926,0,4.564348,5.97822,0,0,0,85.2,8.562847,1.098612,,0 +16,2,95,1,4,225401,0,5232.563,7.251882,0,12,1,0,2.229115,0,0,0,2.229115,0,0,0,0,0,3,81.35272,11.84267,0,85.2,375,375,1,0,1.098612,5.926926,0,4.564348,5.97822,0,0,0,85.2,8.562847,1.098612,.8016046,1 +16,2,95,1,5,225401,0,5232.563,8.251883,0,12,1,6.706409,0,0,0,0,6.706409,0,0,0,1,0,3,81.35272,11.84267,0,85.2,375,375,1,0,1.098612,5.926926,0,4.564348,5.97822,0,0,0,85.2,8.562847,1.098612,1.903064,1 +16,2,95,1,1,225403,0,5232.563,25.54141,1,12,1,9.635974,18.06745,0,0,0,27.70343,0,0,0,1,0,3,89.9,0,0,85.2,375,375,0,0,1.098612,5.926926,0,4.564348,5.97822,1,0,0,85.2,8.562847,1.098612,3.321556,1 +16,2,95,1,2,225403,0,5232.563,26.54141,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,89.9,0,0,85.2,375,375,0,0,1.098612,5.926926,0,4.564348,5.97822,1,0,0,85.2,8.562847,1.098612,,0 +16,2,95,1,3,225403,0,5232.563,27.54141,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,89.9,0,0,85.2,375,375,0,0,1.098612,5.926926,0,4.564348,5.97822,1,0,0,85.2,8.562847,1.098612,,0 +16,2,95,1,4,225403,0,5232.563,28.54141,1,12,1,45.07858,0,0,0,417.5972,462.6758,1,0,0,5,0,3,89.9,0,0,85.2,375,375,0,0,1.098612,5.926926,0,4.564348,5.97822,1,0,0,85.2,8.562847,1.098612,6.137026,1 +16,2,95,1,5,225403,0,5232.563,29.54141,1,12,1,28.68852,2.514903,0,0,731.1848,762.3882,1,0,0,2,1,3,89.9,0,0,85.2,375,375,0,0,1.098612,5.926926,0,4.564348,5.97822,1,0,0,85.2,8.562847,1.098612,6.636456,1 +5,2,25,1,1,225405,0,10753.08,58.67762,0,8,1,289.4609,51.72507,0,0,0,341.186,0,0,0,14,0,2,84.6,20.7,0,61.4,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,61.4,9.28304,.6931472,5.832428,1 +5,2,25,1,2,225405,0,10753.08,59.67762,0,8,1,68.79607,15.55283,0,0,0,84.34889,0,0,0,3,0,2,84.6,20.7,0,61.4,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,61.4,9.28304,.6931472,4.434962,1 +5,2,25,1,3,225405,0,10753.08,60.67762,0,8,1,141.1805,21.18049,32.64357,0,0,195.0046,0,0,0,6,1,2,84.6,20.7,0,61.4,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,61.4,9.28304,.6931472,5.273023,1 +5,2,25,1,1,225406,0,10753.08,58.07803,1,12,1,48.51752,14.25876,0,0,0,62.77628,0,0,0,2,1,2,85.1,20.7,0,65.9,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,65.9,9.28304,.6931472,4.139577,1 +5,2,25,1,2,225406,0,10753.08,59.07803,1,12,1,52.7027,13.46437,0,0,0,66.16708,0,0,0,2,0,2,85.1,20.7,0,65.9,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,65.9,9.28304,.6931472,4.192183,1 +5,2,25,1,3,225406,0,10753.08,60.07803,1,12,1,84.54877,18.76481,40.84777,0,0,144.1613,0,0,0,4,1,2,85.1,20.7,0,65.9,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,65.9,9.28304,.6931472,4.970933,1 +11,2,0,1,1,225408,0,1006.452,44.25736,0,12,1,186.1995,8.285714,0,59.29919,0,194.4852,0,0,1,5,0,2,87.8,10.3,0,70.5,0,634.8,0,0,.6931472,6.45331,0,0,0,1,0,0,70.5,6.915179,.6931472,5.270356,1 +11,2,0,1,2,225408,0,1006.452,45.25736,0,12,1,267.027,34.00491,37.53808,0,0,338.57,0,0,0,14,0,2,87.8,10.3,0,70.5,0,634.8,0,0,.6931472,6.45331,0,0,0,1,0,0,70.5,6.915179,.6931472,5.824731,1 +11,2,0,1,3,225408,0,1006.452,46.25736,0,12,1,210.9389,40.01823,0,0,0,250.9572,0,0,0,13,0,2,87.8,10.3,0,70.5,0,634.8,0,0,.6931472,6.45331,0,0,0,1,0,0,70.5,6.915179,.6931472,5.525282,1 +11,2,0,1,4,225408,0,1006.452,47.25736,0,12,1,83.57649,43.78908,0,0,1256.482,1383.847,1,0,0,9,0,2,87.8,10.3,0,70.5,0,634.8,0,0,.6931472,6.45331,0,0,0,1,0,0,70.5,6.915179,.6931472,7.232623,1 +11,2,0,1,5,225408,0,1006.452,48.25736,0,12,1,104.201,45.38634,0,0,432.6519,582.2393,1,0,0,13,0,2,87.8,10.3,0,70.5,0,634.8,0,0,.6931472,6.45331,0,0,0,1,0,0,70.5,6.915179,.6931472,6.366881,1 +11,2,0,1,1,225410,0,1006.452,31.82204,1,12,1,132.2102,3.207547,38.05391,0,475.089,648.5607,1,0,0,9,3,2,71.3,13.8,1,37.5,0,634.8,0,0,.6931472,6.45331,0,0,0,0,0,1,37.5,6.915179,.6931472,6.474756,1 +11,2,0,1,2,225410,0,1006.452,32.82204,1,12,1,98.13268,31.13022,33.85258,0,2303.907,2467.022,4,0,0,10,0,2,71.3,13.8,1,37.5,0,634.8,0,0,.6931472,6.45331,0,0,0,0,0,1,37.5,6.915179,.6931472,7.810767,1 +11,2,0,1,3,225410,0,1006.452,33.82204,1,12,1,298.5871,46.53601,33.62808,0,1944.439,2323.19,3,0,0,19,0,2,71.3,13.8,1,37.5,0,634.8,0,0,.6931472,6.45331,0,0,0,0,0,1,37.5,6.915179,.6931472,7.750697,1 +11,2,0,1,4,225410,0,1006.452,34.82204,1,12,1,117.9658,34.03502,0,0,0,152.0008,0,0,0,13,0,2,71.3,13.8,1,37.5,0,634.8,0,0,.6931472,6.45331,0,0,0,0,0,1,37.5,6.915179,.6931472,5.023886,1 +11,2,0,1,5,225410,0,1006.452,35.82204,1,12,1,172.3556,36.72168,21.41785,0,0,230.4951,0,0,0,19,0,2,71.3,13.8,1,37.5,0,634.8,0,0,.6931472,6.45331,0,0,0,0,0,1,37.5,6.915179,.6931472,5.44023,1 +13,2,0,1,1,225411,1,8665.641,3.734428,1,12,1,4.851752,0,0,0,0,4.851752,0,0,0,1,0,4,81.35272,11.84267,0,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.067237,1.386294,1.57934,1 +13,2,0,1,2,225411,1,8665.641,4.734428,1,12,1,20.63882,0,0,0,0,20.63882,0,0,0,3,0,4,81.35272,11.84267,0,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.067237,1.386294,3.027174,1 +13,2,0,1,3,225411,1,8665.641,5.734428,1,12,1,6.381039,0,0,0,0,6.381039,0,0,0,1,0,5,81.35272,11.84267,0,74.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.067237,1.609438,1.853331,1 +13,2,0,1,1,225412,1,8665.641,1.199179,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,81.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.067237,1.386294,,0 +13,2,0,1,2,225412,1,8665.641,2.199179,0,12,1,13.75921,0,0,0,0,13.75921,0,0,0,2,0,4,81.35272,11.84267,0,81.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.067237,1.386294,2.621709,1 +13,2,0,1,3,225412,1,8665.641,3.199179,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,81.5,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.067237,1.609438,,0 +13,2,0,1,1,225413,1,8665.641,31.54004,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,89.9,0,0,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83,9.067237,1.386294,,0 +13,2,0,1,2,225413,1,8665.641,32.54004,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,89.9,0,0,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83,9.067237,1.386294,,0 +13,2,0,1,3,225413,1,8665.641,33.54004,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,89.9,0,0,83,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,83,9.067237,1.609438,,0 +13,2,0,1,1,225414,1,8665.641,23.67146,1,12,1,42.85714,0,0,0,0,42.85714,0,0,0,6,0,4,62.8,24.1,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,64.8,9.067237,1.386294,3.757872,1 +13,2,0,1,2,225414,1,8665.641,24.67146,1,12,1,0,10.54054,0,0,813.0467,823.5872,1,0,0,0,0,4,62.8,24.1,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,64.8,9.067237,1.386294,6.713669,1 +13,2,0,1,3,225414,1,8665.641,25.67146,1,12,1,18.23154,0,0,0,0,18.23154,0,0,0,1,0,5,62.8,24.1,0,64.8,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,64.8,9.067237,1.609438,2.903153,1 +16,2,95,0,1,225415,0,10419.94,47.75633,1,12,1,91.50944,3.61186,32.50674,0,0,127.628,0,0,0,5,1,2,93.1,10.3,0,90.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,90.9,9.251573,.6931472,4.84912,1 +16,2,95,0,2,225415,0,10419.94,48.75633,1,12,1,51.9656,29.76904,0,0,0,81.73464,0,0,0,4,0,2,93.1,10.3,0,90.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,90.9,9.251573,.6931472,4.403478,1 +16,2,95,0,3,225415,0,10419.94,49.75633,1,12,1,97.76664,23.38195,45.47858,0,0,166.6272,0,0,0,4,2,2,93.1,10.3,0,90.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,90.9,9.251573,.6931472,5.115759,1 +16,2,95,0,1,225416,0,10419.94,60.16975,0,12,1,74.93262,22.64151,0,0,1262.421,1359.995,2,0,0,2,0,2,95.2,17.2,0,89.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,89.8,9.251573,.6931472,7.215236,1 +16,2,95,0,2,225416,0,10419.94,61.16975,0,12,1,19.65602,6.378378,0,0,0,26.0344,0,0,0,2,0,2,95.2,17.2,0,89.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,89.8,9.251573,.6931472,3.259419,1 +16,2,95,0,3,225416,0,10419.94,62.16975,0,12,1,17.77575,4.024612,33.85141,0,0,55.65178,0,0,0,1,0,2,95.2,17.2,0,89.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,89.8,9.251573,.6931472,4.019114,1 +13,2,0,0,1,225425,0,7472.141,26.17385,1,16,1,0,0,0,0,0,0,0,0,0,0,0,1,54.3,13.8,0,69.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,69.3,8.91907,0,,0 +13,2,0,0,2,225425,0,7472.141,27.17385,1,16,1,0,0,0,0,0,0,0,0,0,0,0,1,54.3,13.8,0,69.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,69.3,8.91907,0,,0 +13,2,0,0,3,225425,0,7472.141,28.17385,1,16,1,59.4804,0,0,0,0,59.4804,0,0,0,2,0,1,54.3,13.8,0,69.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,69.3,8.91907,0,4.085647,1 +13,2,0,0,4,225425,0,7472.141,29.17385,1,16,1,47.5198,0,0,0,0,47.5198,0,0,0,2,0,1,54.3,13.8,0,69.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,69.3,8.91907,0,3.861146,1 +13,2,0,0,5,225425,0,7472.141,30.17385,1,16,1,0,0,0,0,0,0,0,0,0,0,0,1,54.3,13.8,0,69.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,69.3,8.91907,0,,0 +19,2,25,1,1,225426,0,2614.076,25.48665,1,17,1,72.40065,7.550354,31.88895,0,0,111.84,0,0,0,4,0,1,63.3,24.1,0,55.7,195,195,0,0,0,5.273,0,3.258096,6.659294,1,0,0,55.7,7.869049,0,4.717069,1 +19,2,25,1,2,225426,0,2614.076,26.48665,1,17,1,24.77701,7.641229,21.65015,0,0,54.06839,0,0,0,3,1,1,63.3,24.1,0,55.7,195,195,0,0,0,5.273,0,3.258096,6.659294,1,0,0,55.7,7.869049,0,3.99025,1 +19,2,25,1,3,225426,0,2614.076,27.48665,1,17,1,301.0739,0,45.47499,0,0,346.5489,0,0,0,7,0,1,63.3,24.1,0,55.7,195,195,0,0,0,5.273,0,3.258096,6.659294,1,0,0,55.7,7.869049,0,5.848024,1 +11,2,0,1,1,225466,0,11262.76,38.6475,0,17,1,79.38005,0,0,26.95418,0,79.38005,0,0,1,4,0,1,93.6,3.4,0,84.1,0,0,0,0,0,0,0,0,0,0,0,0,84.1,9.329346,0,4.374247,1 +11,2,0,1,2,225466,0,11262.76,39.6475,0,17,1,153.1253,12.95823,0,49.14005,0,166.0835,0,0,2,5,0,1,93.6,3.4,0,84.1,0,0,0,0,0,0,0,0,0,0,0,0,84.1,9.329346,0,5.112491,1 +11,2,0,1,3,225466,0,11262.76,40.6475,0,17,1,77.73929,0,0,0,0,77.73929,0,0,0,4,0,1,93.6,3.4,0,84.1,0,0,0,0,0,0,0,0,0,0,0,0,84.1,9.329346,0,4.353361,1 +13,2,0,0,1,225473,0,6472.141,34.34086,0,16,1,169.407,57.65499,0,0,0,227.062,0,0,0,11,0,1,75,20.7,0,73.9,150,40,0,0,0,3.688879,1,4.564348,5.061929,0,0,0,73.9,8.775416,0,5.425223,1 +13,2,0,0,2,225473,0,6472.141,35.34086,0,16,1,17.19902,51.52334,0,0,0,68.72236,0,0,0,1,0,1,75,20.7,0,73.9,150,40,0,0,0,3.688879,1,4.564348,5.061929,0,0,0,73.9,8.775416,0,4.230074,1 +13,2,0,0,3,225473,0,6472.141,36.34086,0,16,1,6.836828,27.48405,40.07293,0,0,74.3938,0,0,0,1,0,1,75,20.7,0,73.9,150,40,0,0,0,3.688879,1,4.564348,5.061929,0,0,0,73.9,8.775416,0,4.309372,1 +14,2,95,1,1,225474,0,9421.701,59.30458,1,8,1,79.38005,36.59838,0,0,0,115.9784,0,0,0,2,1,2,88.8,24.1,0,62.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,62.5,9.150877,.6931472,4.753404,1 +14,2,95,1,2,225474,0,9421.701,60.30458,1,8,1,74.07862,47.76413,0,0,0,121.8428,0,0,0,4,0,2,88.8,24.1,0,62.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,62.5,9.150877,.6931472,4.802732,1 +14,2,95,1,3,225474,0,9421.701,61.30458,1,8,1,250,87.49772,11.59982,0,0,349.0975,0,0,0,13,0,2,88.8,24.1,0,62.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,62.5,9.150877,.6931472,5.855351,1 +14,2,95,1,4,225474,0,9421.701,62.30458,1,8,1,298.02,74.31013,5.060442,0,5573.372,5950.763,2,0,0,12,0,2,88.8,24.1,0,62.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,62.5,9.150877,.6931472,8.691275,1 +14,2,95,1,5,225474,0,9421.701,63.30458,1,8,1,123.2183,121.1965,5.903976,0,0,250.3188,0,0,0,4,3,2,88.8,24.1,0,62.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,62.5,9.150877,.6931472,5.522736,1 +14,2,95,1,1,225475,0,9421.701,55.65777,0,12,1,19.13747,0,0,0,0,19.13747,0,0,0,1,0,2,93.1,3.4,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,79.5,9.150877,.6931472,2.951648,1 +14,2,95,1,2,225475,0,9421.701,56.65777,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,93.1,3.4,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,79.5,9.150877,.6931472,,0 +14,2,95,1,3,225475,0,9421.701,57.65777,0,12,1,83.63719,0,35.56518,0,0,119.2024,0,0,0,1,1,2,93.1,3.4,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,79.5,9.150877,.6931472,4.780823,1 +14,2,95,1,4,225475,0,9421.701,58.65777,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,93.1,3.4,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,79.5,9.150877,.6931472,,0 +14,2,95,1,5,225475,0,9421.701,59.65777,0,12,1,17.44186,31.42911,0,0,0,48.87097,0,0,0,2,0,2,93.1,3.4,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,79.5,9.150877,.6931472,3.889184,1 +11,2,0,0,1,225493,0,9946.041,53.73032,1,12,1,62.32989,92.61295,43.54382,0,0,198.4867,0,0,0,4,0,3,63.3,31,1,54.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,54.8,9.20503,1.098612,5.290722,1 +11,2,0,0,2,225493,0,9946.041,54.73032,1,12,1,58.72151,49.52428,0,0,0,108.2458,0,0,0,1,0,3,63.3,31,1,54.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,54.8,9.20503,1.098612,4.684404,1 +11,2,0,0,3,225493,0,9946.041,55.73032,1,12,1,57.54934,21.72556,0,0,0,79.27489,0,0,0,2,0,3,63.3,31,1,54.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,54.8,9.20503,1.098612,4.372921,1 +11,2,0,0,4,225493,0,9946.041,56.73032,1,12,1,289.4994,43.50442,69.30164,0,0,402.3054,0,0,0,8,0,3,63.3,31,1,54.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,54.8,9.20503,1.098612,5.997211,1 +11,2,0,0,5,225493,0,9946.041,57.73032,1,12,1,38.00529,47.10616,0,0,0,85.11145,0,0,0,3,0,3,63.3,31,1,54.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,54.8,9.20503,1.098612,4.443962,1 +11,2,0,0,1,225494,0,9946.041,15.25804,0,12,1,34.56723,22.72727,2.776266,0,0,60.07077,0,0,0,2,0,3,72.9,3.4,0,75,0,0,1,0,1.098612,0,0,0,0,1,0,0,75,9.20503,1.098612,4.095523,1 +11,2,0,0,2,225494,0,9946.041,16.25804,0,12,1,296.9276,32.55699,7.859267,0,0,337.3439,0,0,0,11,1,3,72.9,3.4,0,75,0,0,1,0,1.098612,0,0,0,0,1,0,0,75,9.20503,1.098612,5.821103,1 +11,2,0,0,3,225494,0,9946.041,17.25804,0,12,1,35.33731,42.12942,0,0,0,77.46673,0,0,0,3,0,3,72.9,3.4,0,75,0,0,1,0,1.098612,0,0,0,0,1,0,0,75,9.20503,1.098612,4.349849,1 +11,2,0,0,4,225494,0,9946.041,18.25804,0,12,1,234.7497,40.36601,0,0,0,275.1157,0,0,0,10,1,3,72.9,3.4,0,75,0,0,0,0,1.098612,0,0,0,0,1,0,0,75,9.20503,1.098612,5.617192,1 +11,2,0,0,5,225494,0,9946.041,19.25804,0,12,1,126.9362,32.3725,0,0,0,159.3087,0,0,0,8,0,3,72.9,3.4,0,75,0,0,0,0,1.098612,0,0,0,0,1,0,0,75,9.20503,1.098612,5.070844,1 +11,2,0,0,1,225495,0,9946.041,57.96578,0,10,1,101.5787,0,0,0,0,101.5787,0,0,0,7,0,3,75,13.8,0,61.4,0,0,0,0,1.098612,0,0,0,0,0,0,0,61.4,9.20503,1.098612,4.620833,1 +11,2,0,0,2,225495,0,9946.041,58.96578,0,10,1,19.82161,2.725471,0,0,0,22.54708,0,0,0,2,0,3,75,13.8,0,61.4,0,0,0,0,1.098612,0,0,0,0,0,0,0,61.4,9.20503,1.098612,3.115605,1 +11,2,0,0,3,225495,0,9946.041,59.96578,0,10,1,231.2988,32.23038,41.30335,0,0,304.8325,0,0,0,5,1,3,75,13.8,0,61.4,0,0,0,0,1.098612,0,0,0,0,0,0,0,61.4,9.20503,1.098612,5.719762,1 +11,2,0,0,4,225495,0,9946.041,60.96578,0,10,1,208.0353,35.59529,0,0,0,243.6306,0,0,0,7,0,3,75,13.8,0,61.4,0,0,0,0,1.098612,0,0,0,0,0,0,0,61.4,9.20503,1.098612,5.495653,1 +11,2,0,0,5,225495,0,9946.041,61.96578,0,10,1,370.7404,26.16925,47.14016,0,1751.53,2195.58,1,0,0,9,4,3,75,13.8,0,61.4,0,0,0,0,1.098612,0,0,0,0,0,0,0,61.4,9.20503,1.098612,7.694201,1 +11,2,0,1,1,225500,0,15980.06,10.47502,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,95,11.84267,0,96.3,0,99.36,1,0,1.386294,4.59875,0,0,0,0,0,0,96.3,9.679159,1.386294,,0 +11,2,0,1,2,225500,0,15980.06,11.47502,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,95,11.84267,0,96.3,0,99.36,1,0,1.386294,4.59875,0,0,0,0,0,0,96.3,9.679159,1.386294,,0 +11,2,0,1,3,225500,0,15980.06,12.47502,0,16,1,11.39471,0,0,0,0,11.39471,0,0,0,1,0,4,95,11.84267,0,96.3,0,99.36,1,0,1.386294,4.59875,0,0,0,0,0,0,96.3,9.679159,1.386294,2.433149,1 +11,2,0,1,1,225501,0,15980.06,41.01848,0,14,1,228.0323,8.409703,0,0,589.6496,826.0916,1,0,0,4,0,4,85.6,3.4,0,78.4,0,99.36,0,0,1.386294,4.59875,0,0,0,0,0,0,78.4,9.679159,1.386294,6.716706,1 +11,2,0,1,2,225501,0,15980.06,42.01848,0,14,1,45.70024,0,0,0,718.7469,764.4472,1,0,0,1,0,4,85.6,3.4,0,78.4,0,99.36,0,0,1.386294,4.59875,0,0,0,0,0,0,78.4,9.679159,1.386294,6.639153,1 +11,2,0,1,3,225501,0,15980.06,43.01848,0,14,1,112.8077,0,29.95898,9.726527,0,142.7666,0,0,2,3,0,4,85.6,3.4,0,78.4,0,99.36,0,0,1.386294,4.59875,0,0,0,0,0,0,78.4,9.679159,1.386294,4.961211,1 +11,2,0,1,1,225502,0,15980.06,41.25941,1,16,1,68.46362,14.17251,35.27763,0,0,117.9137,0,0,0,5,0,4,82.4,10.3,0,92,0,99.36,0,0,1.386294,4.59875,0,0,0,0,0,0,92,9.679159,1.386294,4.769953,1 +11,2,0,1,2,225502,0,15980.06,42.25941,1,16,1,8.845209,2.948403,0,0,0,11.79361,0,0,0,1,0,4,82.4,10.3,0,92,0,99.36,0,0,1.386294,4.59875,0,0,0,0,0,0,92,9.679159,1.386294,2.467558,1 +11,2,0,1,3,225502,0,15980.06,43.25941,1,16,1,7.748405,15.2917,0,9.721969,0,23.04011,0,0,2,1,0,4,82.4,10.3,0,92,0,99.36,0,0,1.386294,4.59875,0,0,0,0,0,0,92,9.679159,1.386294,3.137237,1 +11,2,0,1,1,225503,0,15980.06,13.16906,0,16,1,8.625337,0,0,0,0,8.625337,0,0,0,1,0,4,90,11.84267,0,88.9,0,99.36,1,0,1.386294,4.59875,0,0,0,1,0,0,88.9,9.679159,1.386294,2.154704,1 +11,2,0,1,2,225503,0,15980.06,14.16906,0,16,1,10.81081,0,0,0,0,10.81081,0,0,0,1,0,4,90,11.84267,0,88.9,0,99.36,1,0,1.386294,4.59875,0,0,0,1,0,0,88.9,9.679159,1.386294,2.380547,1 +11,2,0,1,3,225503,0,15980.06,15.16906,0,16,1,12.76208,1.823154,0,140.9891,0,14.58523,0,0,11,1,0,4,90,11.84267,0,88.9,0,99.36,1,0,1.386294,4.59875,0,0,0,1,0,0,88.9,9.679159,1.386294,2.68001,1 +13,2,0,1,1,225518,0,4309.091,22.78166,1,12,1,82.47142,11.14317,0,0,0,93.61459,0,0,0,0,13,1,42.6,20.7,1,38.6,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,38.6,8.368714,0,4.539186,1 +13,2,0,1,2,225518,0,4309.091,23.78166,1,12,1,55.99604,3.612488,0,0,615.7483,675.3568,1,0,0,0,11,1,42.6,20.7,1,38.6,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,38.6,8.368714,0,6.515241,1 +13,2,0,1,3,225518,0,4309.091,24.78166,1,12,1,25.24094,3.441946,0,0,0,28.68288,0,0,0,0,5,2,42.6,20.7,1,38.6,150,0,0,0,.6931472,0,1,4.564348,5.061929,0,0,0,38.6,8.368714,.6931472,3.356301,1 +13,2,0,1,4,225518,0,4309.091,25.78166,1,12,1,12.62095,0,0,0,0,12.62095,0,0,0,1,1,2,42.6,20.7,1,38.6,150,0,0,0,.6931472,0,1,4.564348,5.061929,0,0,0,38.6,8.368714,.6931472,2.535358,1 +13,2,0,1,5,225518,0,4309.091,26.78166,1,12,1,73.6683,1.922932,0,0,0,75.59123,0,0,0,2,8,2,42.6,20.7,1,38.6,150,0,0,0,.6931472,0,1,4.564348,5.061929,0,0,0,38.6,8.368714,.6931472,4.32534,1 +13,2,0,0,1,225528,0,6106.745,3.017112,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,100,450,0,1,1,1.609438,0,1,4.564348,6.160541,0,0,0,100,8.717313,1.609438,,0 +13,2,0,0,2,225528,0,6106.745,4.017112,1,12,1,10.56511,0,0,0,0,10.56511,0,0,0,1,0,5,81.35272,11.84267,0,100,450,0,1,1,1.609438,0,1,4.564348,6.160541,0,0,0,100,8.717313,1.609438,2.357557,1 +13,2,0,0,3,225528,0,6106.745,5.017112,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,100,450,0,1,1,1.609438,0,1,4.564348,6.160541,0,0,0,100,8.717313,1.609438,,0 +13,2,0,0,1,225529,0,6106.745,30.79261,1,12,1,27.7628,1.450135,16.17251,0,0,45.38544,0,0,0,1,1,5,65.4,13.8,0,98.9,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,0,0,98.9,8.717313,1.609438,3.815192,1 +13,2,0,0,2,225529,0,6106.745,31.79261,1,12,1,17.69042,0,0,0,0,17.69042,0,0,0,2,0,5,65.4,13.8,0,98.9,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,0,0,98.9,8.717313,1.609438,2.873023,1 +13,2,0,0,3,225529,0,6106.745,32.79261,1,12,1,31.6773,0,0,0,0,31.6773,0,0,0,2,0,5,65.4,13.8,0,98.9,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,0,0,98.9,8.717313,1.609438,3.4556,1 +13,2,0,0,1,225530,0,6106.745,11.66598,0,12,1,11.05121,0,0,0,0,11.05121,0,0,0,1,0,5,98.3,11.84267,0,100,450,0,1,0,1.609438,0,1,4.564348,6.160541,0,0,0,100,8.717313,1.609438,2.40254,1 +13,2,0,0,2,225530,0,6106.745,12.66598,0,12,1,29.23833,0,0,0,0,29.23833,0,0,0,2,0,5,98.3,11.84267,0,100,450,0,1,0,1.609438,0,1,4.564348,6.160541,0,0,0,100,8.717313,1.609438,3.37548,1 +13,2,0,0,3,225530,0,6106.745,13.66598,0,12,1,45.21422,0,0,0,0,45.21422,0,0,0,2,0,5,98.3,11.84267,0,100,450,0,1,0,1.609438,0,1,4.564348,6.160541,0,0,0,100,8.717313,1.609438,3.811412,1 +13,2,0,0,1,225531,0,6106.745,6.581793,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,95,11.84267,0,100,450,0,1,1,1.609438,0,1,4.564348,6.160541,0,0,0,100,8.717313,1.609438,,0 +13,2,0,0,2,225531,0,6106.745,7.581793,1,12,1,10.56511,0,0,0,0,10.56511,0,0,0,1,0,5,95,11.84267,0,100,450,0,1,1,1.609438,0,1,4.564348,6.160541,0,0,0,100,8.717313,1.609438,2.357557,1 +13,2,0,0,3,225531,0,6106.745,8.581793,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,95,11.84267,0,100,450,0,1,1,1.609438,0,1,4.564348,6.160541,0,0,0,100,8.717313,1.609438,,0 +13,2,0,0,1,225532,0,6106.745,31.66598,0,16,1,69.81132,7.660378,31.04582,0,0,108.5175,0,0,0,1,1,5,53.2,10.3,0,79.5,450,0,0,0,1.609438,0,1,4.564348,6.160541,1,0,0,79.5,8.717313,1.609438,4.686912,1 +13,2,0,0,2,225532,0,6106.745,32.66598,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,53.2,10.3,0,79.5,450,0,0,0,1.609438,0,1,4.564348,6.160541,1,0,0,79.5,8.717313,1.609438,,0 +13,2,0,0,3,225532,0,6106.745,33.66598,0,16,1,34.32087,0,0,0,0,34.32087,0,0,0,1,0,5,53.2,10.3,0,79.5,450,0,0,0,1.609438,0,1,4.564348,6.160541,1,0,0,79.5,8.717313,1.609438,3.535754,1 +17,2,25,1,1,225533,0,14851.03,49.88091,0,12,1,151.5364,5.121294,36.43666,0,0,193.0943,0,0,0,4,11,3,77.1,0,0,85.2,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,85.2,9.605891,1.098612,5.263179,1 +17,2,25,1,2,225533,0,14851.03,50.88091,0,12,1,75.42998,3.002457,0,0,0,78.43243,0,0,0,1,0,3,77.1,0,0,85.2,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,85.2,9.605891,1.098612,4.362237,1 +17,2,25,1,3,225533,0,14851.03,51.88091,0,12,1,29.39836,5.733819,0,0,0,35.13218,0,0,0,3,0,2,77.1,0,0,85.2,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,85.2,9.605891,.6931472,3.559118,1 +17,2,25,1,1,225534,0,14851.03,44.69542,1,12,1,148.7871,0,56.60378,0,1284.302,1489.693,1,0,0,6,0,3,78.2,13.8,0,78.4,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,78.4,9.605891,1.098612,7.306325,1 +17,2,25,1,2,225534,0,14851.03,45.69542,1,12,1,0,12.51597,0,0,0,12.51597,0,0,0,0,0,3,78.2,13.8,0,78.4,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,78.4,9.605891,1.098612,2.527005,1 +17,2,25,1,3,225534,0,14851.03,46.69542,1,12,1,172.7439,25.70191,0,0,0,198.4458,0,0,0,5,0,2,78.2,13.8,0,78.4,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,78.4,9.605891,.6931472,5.290516,1 +17,2,25,1,1,225535,0,14851.03,15.50445,0,12,1,162.5337,40.31267,0,0,0,202.8464,0,0,0,35,0,3,62.8,13.8,0,51.1,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,51.1,9.605891,1.098612,5.312449,1 +17,2,25,1,2,225535,0,14851.03,16.50445,0,12,1,218.5504,43.03194,0,0,0,261.5823,0,0,0,25,0,3,62.8,13.8,0,51.1,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,51.1,9.605891,1.098612,5.566749,1 +16,2,95,1,1,225544,0,5000,3.690623,0,13,1,89.16442,13.531,0,0,0,102.6954,0,0,0,37,0,5,81.35272,11.84267,0,66.7,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,66.7,8.517393,1.609438,4.631768,1 +16,2,95,1,2,225544,0,5000,4.690623,0,13,1,96.02457,34.00983,0,0,0,130.0344,0,0,0,23,0,5,81.35272,11.84267,0,66.7,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,66.7,8.517393,1.609438,4.867799,1 +16,2,95,1,3,225544,0,5000,5.690623,0,13,1,60.61987,3.176846,0,0,0,63.79672,0,0,0,15,0,5,81.35272,11.84267,0,66.7,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,66.7,8.517393,1.609438,4.155702,1 +16,2,95,1,1,225545,0,5000,6.631074,1,13,1,1.886792,0,0,0,0,1.886792,0,0,0,0,0,5,60,11.84267,0,96.3,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,96.3,8.517393,1.609438,.6348783,1 +16,2,95,1,2,225545,0,5000,7.631074,1,13,1,6.879607,0,0,0,0,6.879607,0,0,0,0,0,5,60,11.84267,0,96.3,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,96.3,8.517393,1.609438,1.928561,1 +16,2,95,1,3,225545,0,5000,8.631075,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,60,11.84267,0,96.3,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,96.3,8.517393,1.609438,,0 +16,2,95,1,1,225546,0,5000,28.63244,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,75.5,3.4,1,78.4,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,78.4,8.517393,1.609438,,0 +16,2,95,1,2,225546,0,5000,29.63244,0,16,1,28.50123,0,27.22359,0,0,55.72482,0,0,0,1,1,5,75.5,3.4,1,78.4,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,78.4,8.517393,1.609438,4.020426,1 +16,2,95,1,3,225546,0,5000,30.63244,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,75.5,3.4,1,78.4,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,78.4,8.517393,1.609438,,0 +16,2,95,1,1,225547,0,5000,28.46817,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,63.8,17.2,0,77.3,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,77.3,8.517393,1.609438,,0 +16,2,95,1,2,225547,0,5000,29.46817,1,13,1,20.88452,0,20.7027,0,0,41.58722,0,0,0,1,1,5,63.8,17.2,0,77.3,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,77.3,8.517393,1.609438,3.727793,1 +16,2,95,1,3,225547,0,5000,30.46817,1,13,1,25.06837,0,0,0,0,25.06837,0,0,0,1,0,5,63.8,17.2,0,77.3,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,77.3,8.517393,1.609438,3.221607,1 +14,2,95,1,1,225553,0,3848.68,60.98563,0,17,1,0,16.90566,0,0,0,16.90566,0,0,0,0,0,1,92,6.9,0,79.5,800,378.6,0,0,0,5.93648,0,4.564348,6.735905,0,0,0,79.5,8.255746,0,2.827648,1 +14,2,95,1,2,225553,0,3848.68,61.98563,0,17,1,0,0,0,0,0,0,0,0,0,0,0,1,92,6.9,0,79.5,800,378.6,0,0,0,5.93648,0,4.564348,6.735905,0,0,0,79.5,8.255746,0,,0 +14,2,95,1,3,225553,0,3848.68,62.98563,0,17,1,0,0,0,0,0,0,0,0,0,0,0,1,92,6.9,0,79.5,800,378.6,0,0,0,5.93648,0,4.564348,6.735905,0,0,0,79.5,8.255746,0,,0 +6,2,25,0,1,225554,0,8512.023,56.2245,1,9,1,67.84367,62.02156,0,0,0,129.8652,0,0,0,2,0,1,92,10.3,0,80.7,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,80.7,9.049353,0,4.866497,1 +6,2,25,0,2,225554,0,8512.023,57.2245,1,9,1,159.7052,4.275184,37.40049,0,0,201.3808,0,0,0,6,0,1,92,10.3,0,80.7,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,80.7,9.049353,0,5.305198,1 +6,2,25,0,3,225554,0,8512.023,58.2245,1,9,1,0,2.853236,0,0,0,2.853236,0,0,0,0,0,1,92,10.3,0,80.7,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,80.7,9.049353,0,1.048454,1 +6,2,25,0,4,225554,0,8512.023,59.2245,1,9,1,79.19967,8.153398,43.46811,0,0,130.8212,0,0,0,4,0,1,92,10.3,0,80.7,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,80.7,9.049353,0,4.873831,1 +6,2,25,0,5,225554,0,8512.023,60.2245,1,9,1,59.67742,5.228807,0,0,0,64.90623,0,0,0,1,0,1,92,10.3,0,80.7,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,80.7,9.049353,0,4.172944,1 +13,2,0,1,1,225558,0,8664.517,1.221081,1,12,1,6.423983,5.208779,0,0,0,11.63276,0,0,0,1,0,3,81.35272,11.84267,0,74.1,450,300,1,1,1.098612,5.703783,1,4.564348,6.160541,0,0,0,74.1,9.067107,1.098612,2.453825,1 +13,2,0,1,2,225558,0,8664.517,2.221081,1,12,1,7.320644,9.350903,0,0,0,16.67155,0,0,0,1,0,3,81.35272,11.84267,0,74.1,450,300,1,1,1.098612,5.703783,1,4.564348,6.160541,0,0,0,74.1,9.067107,1.098612,2.813704,1 +13,2,0,1,3,225558,0,8664.517,3.221081,1,12,1,26.6486,2.172538,0,0,0,28.82114,0,0,0,1,0,4,81.35272,11.84267,0,74.1,450,300,1,1,1.386294,5.703783,1,4.564348,6.160541,0,0,0,74.1,9.067107,1.386294,3.361109,1 +13,2,0,1,1,225559,0,8664.517,26.97057,1,12,1,16.32762,17.76767,0,0,0,34.09529,0,0,0,0,0,3,76.1,6.9,0,72.7,450,300,0,0,1.098612,5.703783,1,4.564348,6.160541,0,0,0,72.7,9.067107,1.098612,3.529159,1 +13,2,0,1,2,225559,0,8664.517,27.97057,1,12,1,31.23475,33.66032,0,0,519.8145,584.7096,1,0,0,2,0,3,76.1,6.9,0,72.7,450,300,0,0,1.098612,5.703783,1,4.564348,6.160541,0,0,0,72.7,9.067107,1.098612,6.371115,1 +13,2,0,1,3,225559,0,8664.517,28.97057,1,12,1,18.29268,26.19241,0,0,0,44.4851,0,0,0,1,0,4,76.1,6.9,0,72.7,450,300,0,0,1.386294,5.703783,1,4.564348,6.160541,0,0,0,72.7,9.067107,1.386294,3.795154,1 +13,2,0,1,1,225560,0,8664.517,29.56058,0,14,1,6.423983,3.340471,0,0,0,9.764454,0,0,0,1,0,3,73.9,6.9,0,67,450,300,0,0,1.098612,5.703783,1,4.564348,6.160541,0,0,0,67,9.067107,1.098612,2.278749,1 +13,2,0,1,2,225560,0,8664.517,30.56058,0,14,1,44.65593,7.120547,35.89068,0,0,87.66715,0,0,0,2,0,3,73.9,6.9,0,67,450,300,0,0,1.098612,5.703783,1,4.564348,6.160541,0,0,0,67,9.067107,1.098612,4.473547,1 +13,2,0,1,3,225560,0,8664.517,31.56058,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,73.9,6.9,0,67,450,300,0,0,1.386294,5.703783,1,4.564348,6.160541,0,0,0,67,9.067107,1.386294,,0 +13,2,0,0,1,225573,0,5214.123,23.27173,1,15,1,270.0539,76.68464,0,0,0,346.7386,0,0,0,10,22,2,54.3,10.3,0,43.2,300,156.85,0,0,.6931472,5.05529,1,4.564348,5.755076,0,1,0,43.2,8.559318,.6931472,5.848571,1 +13,2,0,0,2,225573,0,5214.123,24.27173,1,15,1,62.48157,37.34644,0,0,0,99.82801,0,0,0,3,5,2,54.3,10.3,0,43.2,300,156.85,0,0,.6931472,5.05529,1,4.564348,5.755076,0,1,0,43.2,8.559318,.6931472,4.603449,1 +13,2,0,0,1,225574,0,5214.123,26.0397,0,10,1,37.87062,9.541779,0,0,0,47.4124,0,0,0,2,0,2,56.4,17.2,0,65.9,300,156.85,0,0,.6931472,5.05529,1,4.564348,5.755076,0,0,0,65.9,8.559318,.6931472,3.858884,1 +13,2,0,0,2,225574,0,5214.123,27.0397,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,56.4,17.2,0,65.9,300,156.85,0,0,.6931472,5.05529,1,4.564348,5.755076,0,0,0,65.9,8.559318,.6931472,,0 +6,2,25,0,1,225583,0,10636.36,29.02669,1,19,1,40.70081,24.39353,35.30458,0,0,100.3989,0,0,0,3,0,3,76.1,17.2,0,80.7,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,80.7,9.272128,1.098612,4.609151,1 +6,2,25,0,2,225583,0,10636.36,30.02669,1,19,1,61.05651,9.557739,0,0,0,70.61425,0,0,0,5,0,3,76.1,17.2,0,80.7,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,80.7,9.272128,1.098612,4.257232,1 +6,2,25,0,3,225583,0,10636.36,31.02669,1,19,1,40.33728,24.97721,0,0,0,65.31449,0,0,0,3,0,3,76.1,17.2,0,80.7,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,80.7,9.272128,1.098612,4.179214,1 +6,2,25,0,1,225584,0,10636.36,31.11841,0,18,1,175.0404,0,0,0,0,175.0404,0,0,0,2,0,3,70.2,6.9,0,63.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,63.6,9.272128,1.098612,5.165017,1 +6,2,25,0,2,225584,0,10636.36,32.11841,0,18,1,46.06879,0,0,0,0,46.06879,0,0,0,1,0,3,70.2,6.9,0,63.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,63.6,9.272128,1.098612,3.830136,1 +6,2,25,0,3,225584,0,10636.36,33.11841,0,18,1,164.0383,0,43.17685,0,0,207.2151,0,0,0,3,0,3,70.2,6.9,0,63.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,63.6,9.272128,1.098612,5.333757,1 +6,2,25,0,1,225585,0,10636.36,.6187543,1,19,1,128.5714,6.571429,0,0,0,135.1429,0,0,0,11,0,3,81.35272,11.84267,0,92.6,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,1,0,0,92.6,9.272128,1.098612,4.906332,1 +6,2,25,0,2,225585,0,10636.36,1.618754,1,19,1,58.47666,5.82801,0,0,0,64.30466,0,0,0,6,0,3,81.35272,11.84267,0,92.6,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,1,0,0,92.6,9.272128,1.098612,4.163632,1 +6,2,25,0,3,225585,0,10636.36,2.618754,1,19,1,15.49681,8.363719,0,0,0,23.86053,0,0,0,2,0,3,81.35272,11.84267,0,92.6,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,1,0,0,92.6,9.272128,1.098612,3.172225,1 +18,2,25,0,1,225586,0,8665.641,2.217659,0,12,1,26.95418,0,3.234501,0,0,30.18868,0,0,0,3,0,3,81.35272,11.84267,0,88.9,716.68,716.68,1,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,88.9,9.067237,1.098612,3.407467,1 +18,2,25,0,2,225586,0,8665.641,3.217659,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,0,88.9,716.68,716.68,1,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,88.9,9.067237,1.098612,,0 +18,2,25,0,3,225586,0,8665.641,4.217659,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,0,88.9,716.68,716.68,1,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,88.9,9.067237,1.098612,,0 +18,2,25,0,4,225586,0,8665.641,5.217659,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,0,88.9,716.68,716.68,1,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,88.9,9.067237,1.098612,,0 +18,2,25,0,5,225586,0,8665.641,6.217659,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,0,88.9,716.68,716.68,1,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,88.9,9.067237,1.098612,,0 +18,2,25,0,1,225587,0,8665.641,31.14031,1,12,1,99.73046,30.44744,0,0,0,130.1779,0,0,0,11,0,3,75.5,10.3,1,71.6,716.68,716.68,0,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,71.6,9.067237,1.098612,4.868902,1 +18,2,25,0,2,225587,0,8665.641,32.14032,1,12,1,6.756757,5.808354,0,0,0,12.56511,0,0,0,1,0,3,75.5,10.3,1,71.6,716.68,716.68,0,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,71.6,9.067237,1.098612,2.530924,1 +18,2,25,0,3,225587,0,8665.641,33.14032,1,12,1,0,7.155879,0,0,0,7.155879,0,0,0,0,0,3,75.5,10.3,1,71.6,716.68,716.68,0,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,71.6,9.067237,1.098612,1.967934,1 +18,2,25,0,4,225587,0,8665.641,34.14032,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,75.5,10.3,1,71.6,716.68,716.68,0,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,71.6,9.067237,1.098612,,0 +18,2,25,0,5,225587,0,8665.641,35.14032,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,75.5,10.3,1,71.6,716.68,716.68,0,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,71.6,9.067237,1.098612,,0 +18,2,25,0,1,225589,0,8665.641,4.046544,0,12,1,7.681941,0,0,0,0,7.681941,0,0,0,1,0,3,81.35272,11.84267,0,92.6,716.68,716.68,1,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,92.6,9.067237,1.098612,2.038872,1 +18,2,25,0,2,225589,0,8665.641,5.046544,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,0,92.6,716.68,716.68,1,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,92.6,9.067237,1.098612,,0 +18,2,25,0,3,225589,0,8665.641,6.046544,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,0,92.6,716.68,716.68,1,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,92.6,9.067237,1.098612,,0 +18,2,25,0,4,225589,0,8665.641,7.046544,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,0,92.6,716.68,716.68,1,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,92.6,9.067237,1.098612,,0 +18,2,25,0,5,225589,0,8665.641,8.046543,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,0,92.6,716.68,716.68,1,0,1.098612,6.574629,0,3.258096,7.960924,0,0,0,92.6,9.067237,1.098612,,0 +11,2,0,0,1,225592,0,8038.709,52.14237,1,9,1,448.787,157.8167,58,0,0,664.6038,0,0,0,24,0,2,88.3,10.3,0,64.8,0,40.32,0,0,.6931472,3.696848,0,0,0,0,1,0,64.8,8.992148,.6931472,6.499191,1 +11,2,0,0,2,225592,0,8038.709,53.14237,1,9,1,381.5725,160.4668,0,0,384.5651,926.6044,1,0,0,11,3,2,88.3,10.3,0,64.8,0,40.32,0,0,.6931472,3.696848,0,0,0,0,1,0,64.8,8.992148,.6931472,6.831527,1 +11,2,0,0,3,225592,0,8038.709,54.14237,1,9,1,82.95351,309.412,42.84412,0,0,435.2097,0,0,0,4,4,2,88.3,10.3,0,64.8,0,40.32,0,0,.6931472,3.696848,0,0,0,0,1,0,64.8,8.992148,.6931472,6.075828,1 +11,2,0,1,1,225593,0,8038.709,57.013,0,4.5,1,193.531,18.22102,47.75741,0,0,259.5094,0,0,0,6,0,2,100,13.8,0,70.5,0,40.32,0,0,.6931472,3.696848,0,0,0,0,1,0,70.5,8.992148,.6931472,5.558793,1 +11,2,0,1,2,225593,0,8038.709,58.013,0,4.5,1,117.7641,9.95086,0,0,0,127.715,0,0,0,4,2,2,100,13.8,0,70.5,0,40.32,0,0,.6931472,3.696848,0,0,0,0,1,0,70.5,8.992148,.6931472,4.849801,1 +11,2,0,1,3,225593,0,8038.709,59.013,0,4.5,1,161.4768,9.822243,53.78304,0,544.0748,769.1568,1,0,0,3,4,2,100,13.8,0,70.5,0,40.32,0,0,.6931472,3.696848,0,0,0,0,1,0,70.5,8.992148,.6931472,6.645295,1 +5,2,25,0,1,225594,0,5115.542,4.66256,1,14,1,98.38275,9.380054,0,0,0,107.7628,0,0,0,7,0,4,81.35272,11.84267,0,74.1,452.9,452.9,1,1,1.386294,6.115671,0,3.258096,7.501966,1,0,0,74.1,8.540235,1.386294,4.679933,1 +5,2,25,0,2,225594,0,5115.542,5.66256,1,14,1,66.09337,10.90909,0,0,0,77.00246,0,0,0,8,0,4,81.35272,11.84267,0,74.1,452.9,452.9,1,1,1.386294,6.115671,0,3.258096,7.501966,1,0,0,74.1,8.540235,1.386294,4.343837,1 +5,2,25,0,3,225594,0,5115.542,6.66256,1,14,1,18.23154,5.546946,0,0,0,23.77849,0,0,0,3,0,4,81.35272,11.84267,0,74.1,452.9,452.9,1,1,1.386294,6.115671,0,3.258096,7.501966,1,0,0,74.1,8.540235,1.386294,3.168781,1 +5,2,25,0,1,225595,0,5115.542,30.75428,1,14,1,24.74393,10.10782,0,0,793.7466,828.5984,1,0,0,2,0,4,50,27.6,0,42,452.9,452.9,0,0,1.386294,6.115671,0,3.258096,7.501966,1,0,0,42,8.540235,1.386294,6.719736,1 +5,2,25,0,2,225595,0,5115.542,31.75428,1,14,1,102.7027,3.316953,0,0,0,106.0197,0,0,1,3,0,4,50,27.6,0,42,452.9,452.9,0,0,1.386294,6.115671,0,3.258096,7.501966,1,0,0,42,8.540235,1.386294,4.663624,1 +5,2,25,0,3,225595,0,5115.542,32.75428,1,14,1,16.40839,2.269827,0,0,0,18.67821,0,0,0,1,0,4,50,27.6,0,42,452.9,452.9,0,0,1.386294,6.115671,0,3.258096,7.501966,1,0,0,42,8.540235,1.386294,2.927358,1 +5,2,25,0,1,225596,0,5115.542,29.79603,0,13,1,14.55526,2.830189,0,0,0,17.38544,0,0,0,2,0,4,44.7,10.3,0,72.7,452.9,452.9,0,0,1.386294,6.115671,0,3.258096,7.501966,1,0,0,72.7,8.540235,1.386294,2.855633,1 +5,2,25,0,2,225596,0,5115.542,30.79603,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,44.7,10.3,0,72.7,452.9,452.9,0,0,1.386294,6.115671,0,3.258096,7.501966,1,0,0,72.7,8.540235,1.386294,,0 +5,2,25,0,3,225596,0,5115.542,31.79603,0,13,1,16.86418,3.833181,0,0,0,20.69736,0,0,0,1,0,4,44.7,10.3,0,72.7,452.9,452.9,0,0,1.386294,6.115671,0,3.258096,7.501966,1,0,0,72.7,8.540235,1.386294,3.030006,1 +11,2,0,0,1,225609,0,9254.546,13.4538,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,75,11.84267,0,92.6,0,0,1,1,1.098612,0,0,0,0,0,0,0,92.6,9.132978,1.098612,,0 +11,2,0,0,2,225609,0,9254.546,14.4538,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,75,11.84267,0,92.6,0,0,1,1,1.098612,0,0,0,0,0,0,0,92.6,9.132978,1.098612,,0 +11,2,0,0,3,225609,0,9254.546,15.4538,1,12,1,35.33731,6.567233,0,0,0,41.90454,0,0,0,3,0,3,75,11.84267,0,92.6,0,0,1,1,1.098612,0,0,0,0,0,0,0,92.6,9.132978,1.098612,3.735394,1 +11,2,0,0,1,225610,0,9254.546,32.56673,1,12,1,26.94611,7.974959,0,0,0,34.92107,0,0,0,2,0,3,75,0,0,93.2,0,0,0,0,1.098612,0,0,0,0,0,0,0,93.2,9.132978,1.098612,3.55309,1 +11,2,0,0,2,225610,0,9254.546,33.56673,1,12,1,28.74133,0,0,0,0,28.74133,0,0,0,2,0,3,75,0,0,93.2,0,0,0,0,1.098612,0,0,0,0,0,0,0,93.2,9.132978,1.098612,3.358336,1 +11,2,0,0,3,225610,0,9254.546,34.56673,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,75,0,0,93.2,0,0,0,0,1.098612,0,0,0,0,0,0,0,93.2,9.132978,1.098612,,0 +11,2,0,0,1,225611,0,9254.546,36.06845,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,78.7,3.4,0,92,0,0,0,0,1.098612,0,0,0,0,0,0,0,92,9.132978,1.098612,,0 +11,2,0,0,2,225611,0,9254.546,37.06845,0,13,1,11.24876,0,0,0,0,11.24876,0,0,0,1,0,3,78.7,3.4,0,92,0,0,0,0,1.098612,0,0,0,0,0,0,0,92,9.132978,1.098612,2.420258,1 +11,2,0,0,3,225611,0,9254.546,38.06845,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,78.7,3.4,0,92,0,0,0,0,1.098612,0,0,0,0,0,0,0,92,9.132978,1.098612,,0 +16,2,95,1,1,225612,0,8665.641,22.10541,1,12,1,47.08764,0,0,0,0,47.08764,0,0,0,3,0,1,71.8,27.6,1,55.7,382.8,382.8,0,0,0,5.947513,0,4.564348,5.998806,0,1,0,55.7,9.067237,0,3.85201,1 +13,2,0,1,1,225613,0,8665.641,37.31964,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,73.9,6.9,0,62.5,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,62.5,9.067237,0,,0 +13,2,0,1,2,225613,0,8665.641,38.31964,0,12,1,124.8157,0,0,0,0,124.8157,0,0,0,0,10,1,73.9,6.9,0,62.5,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,62.5,9.067237,0,4.826838,1 +13,2,0,1,3,225613,0,8665.641,39.31964,0,12,1,85.7794,24.20237,0,0,432.4521,542.4339,1,0,0,3,0,1,73.9,6.9,0,62.5,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,62.5,9.067237,0,6.296066,1 +13,2,0,1,1,225619,0,9371.848,4.246407,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,92.6,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,92.6,9.145573,1.609438,,0 +13,2,0,1,2,225619,0,9371.848,5.246407,1,11,1,11.22499,0,0,0,0,11.22499,0,0,0,1,0,5,81.35272,11.84267,0,92.6,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,92.6,9.145573,1.609438,2.418142,1 +13,2,0,1,3,225619,0,9371.848,6.246407,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,92.6,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,92.6,9.145573,1.609438,,0 +13,2,0,1,1,225620,0,9371.848,30.65024,0,7,1,18.46895,0,2.67666,0,0,21.14561,0,0,0,1,0,5,77.1,6.9,0,65.9,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.145573,1.609438,3.051432,1 +13,2,0,1,2,225620,0,9371.848,31.65024,0,7,1,17.0815,0,29.09712,19.52172,982.6013,1028.78,1,0,2,1,0,5,77.1,6.9,0,65.9,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.145573,1.609438,6.936129,1 +13,2,0,1,3,225620,0,9371.848,32.65024,0,7,1,44.39928,0,0,56.68473,134.5483,178.9476,1,0,3,1,0,5,77.1,6.9,0,65.9,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.145573,1.609438,5.187093,1 +13,2,0,1,1,225621,0,9371.848,10.83368,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,98.3,11.84267,0,88.9,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,88.9,9.145573,1.609438,,0 +13,2,0,1,2,225621,0,9371.848,11.83368,0,11,1,26.84236,2.284041,33.48951,0,0,62.61591,0,0,0,2,0,5,98.3,11.84267,0,88.9,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,88.9,9.145573,1.609438,4.137019,1 +13,2,0,1,3,225621,0,9371.848,12.83368,0,11,1,45.0542,0,0,0,0,45.0542,0,0,0,2,0,5,98.3,11.84267,0,88.9,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,88.9,9.145573,1.609438,3.807866,1 +13,2,0,1,1,225622,0,9371.848,28.52019,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,64.4,17.2,0,54.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,54.5,9.145573,1.609438,,0 +13,2,0,1,2,225622,0,9371.848,29.52019,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,64.4,17.2,0,54.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,54.5,9.145573,1.609438,,0 +13,2,0,1,3,225622,0,9371.848,30.52019,1,11,1,0,0,0,112.9178,0,0,0,0,5,0,0,5,64.4,17.2,0,54.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,54.5,9.145573,1.609438,,0 +13,2,0,1,1,225623,0,9371.848,8.621492,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,100,11.84267,0,92.6,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,92.6,9.145573,1.609438,,0 +13,2,0,1,2,225623,0,9371.848,9.621492,1,11,1,5.856515,0,0,0,0,5.856515,0,0,0,1,0,5,100,11.84267,0,92.6,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,92.6,9.145573,1.609438,1.767555,1 +13,2,0,1,3,225623,0,9371.848,10.62149,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,100,11.84267,0,92.6,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,92.6,9.145573,1.609438,,0 +11,2,0,0,1,225636,0,4135.484,2.105407,1,12,1,39.19434,3.973871,0,0,0,43.16821,0,0,0,2,1,3,81.35272,11.84267,0,85.2,0,0,1,1,1.098612,0,0,0,0,0,0,0,85.2,8.327601,1.098612,3.765104,1 +11,2,0,0,2,225636,0,4135.484,3.105407,1,12,1,138.1318,41.26858,0,0,362.7602,542.1606,1,0,0,9,0,3,81.35272,11.84267,0,85.2,0,0,1,1,1.098612,0,0,0,0,0,0,0,85.2,8.327601,1.098612,6.295562,1 +11,2,0,0,3,225636,0,4135.484,4.105407,1,12,1,159.0179,38.25149,0,0,381.2988,578.5682,1,0,0,14,0,3,81.35272,11.84267,0,85.2,0,0,1,1,1.098612,0,0,0,0,0,0,0,85.2,8.327601,1.098612,6.360557,1 +11,2,0,0,1,225637,0,4135.484,25.90007,0,12,1,362.0033,19.89113,30.51715,462.7109,0,412.4115,0,0,32,9,1,3,70.7,10.3,0,55.7,0,0,0,0,1.098612,0,0,0,0,1,0,0,55.7,8.327601,1.098612,6.022022,1 +11,2,0,0,2,225637,0,4135.484,26.90007,0,12,1,158.7711,12.26957,0,676.4123,0,171.0406,0,0,30,6,1,3,70.7,10.3,0,55.7,0,0,0,0,1.098612,0,0,0,0,1,0,0,55.7,8.327601,1.098612,5.141901,1 +11,2,0,0,3,225637,0,4135.484,27.90007,0,12,1,22.94631,0,32.40936,0,0,55.35567,0,0,0,1,1,3,70.7,10.3,0,55.7,0,0,0,0,1.098612,0,0,0,0,1,0,0,55.7,8.327601,1.098612,4.013779,1 +11,2,0,0,1,225638,0,4135.484,24.74743,1,12,1,34.24061,9.199782,28.91127,1012.52,0,72.35166,0,0,47,1,1,3,75,3.4,0,88.6,0,0,0,0,1.098612,0,0,0,0,0,0,0,88.6,8.327601,1.098612,4.281538,1 +11,2,0,0,2,225638,0,4135.484,25.74743,1,12,1,374.4054,51.72943,1.48662,237.8593,0,427.6214,0,0,12,7,16,3,75,3.4,0,88.6,0,0,0,0,1.098612,0,0,0,0,0,0,0,88.6,8.327601,1.098612,6.058238,1 +11,2,0,0,3,225638,0,4135.484,26.74743,1,12,1,114.8004,44.27719,39.00872,0,0,198.0863,0,0,0,8,1,3,75,3.4,0,88.6,0,0,0,0,1.098612,0,0,0,0,0,0,0,88.6,8.327601,1.098612,5.288702,1 +13,2,0,0,1,225642,0,5781.231,22.63381,1,13,1,14.82266,5.812599,0,0,658.9465,679.5818,1,0,0,1,0,2,81.9,10.3,0,83,300,76.85,0,0,.6931472,4.341856,1,4.564348,5.755076,0,0,0,83,8.662545,.6931472,6.521478,1 +13,2,0,0,2,225642,0,5781.231,23.63381,1,13,1,9.893823,19.45946,0,0,0,29.35328,0,0,0,1,0,3,81.9,10.3,0,83,300,76.85,0,0,1.098612,4.341856,1,4.564348,5.755076,0,0,0,83,8.662545,1.098612,3.379404,1 +13,2,0,0,3,225642,0,5781.231,24.63381,1,13,1,26.25723,3.093013,0,0,332.7325,362.0828,1,0,0,2,0,3,81.9,10.3,0,83,300,76.85,0,0,1.098612,4.341856,1,4.564348,5.755076,0,0,0,83,8.662545,1.098612,5.891873,1 +13,2,0,0,1,225643,0,5781.231,26.83641,0,15,1,6.881948,23.90154,0,0,0,30.78348,0,0,0,1,0,2,84,6.9,0,72.7,300,76.85,0,0,.6931472,4.341856,1,4.564348,5.755076,1,0,0,72.7,8.662545,.6931472,3.426978,1 +13,2,0,0,2,225643,0,5781.231,27.83641,0,15,1,0,27.33591,0,0,0,27.33591,0,0,0,0,0,3,84,6.9,0,72.7,300,76.85,0,0,1.098612,4.341856,1,4.564348,5.755076,1,0,0,72.7,8.662545,1.098612,3.308201,1 +13,2,0,0,3,225643,0,5781.231,28.83641,0,15,1,0,26.45305,0,0,0,26.45305,0,0,0,0,0,3,84,6.9,0,72.7,300,76.85,0,0,1.098612,4.341856,1,4.564348,5.755076,1,0,0,72.7,8.662545,1.098612,3.275371,1 +11,2,0,0,1,225652,0,7661.583,13.82888,0,12,1,99.24529,4.770889,0,0,0,104.0162,0,0,0,5,0,7,83.6,11.84267,0,92.6,0,0,1,0,1.94591,0,0,0,0,0,0,0,92.6,8.944104,1.94591,4.644547,1 +11,2,0,0,2,225652,0,7661.583,14.82888,0,12,1,16.85504,0,0,0,0,16.85504,0,0,0,2,0,7,83.6,11.84267,0,92.6,0,0,1,0,1.94591,0,0,0,0,0,0,0,92.6,8.944104,1.94591,2.82465,1 +11,2,0,0,3,225652,0,7661.583,15.82888,0,12,1,25.06837,9.042844,0,0,0,34.11121,0,0,0,2,0,7,83.6,11.84267,0,92.6,0,0,1,0,1.94591,0,0,0,0,0,0,0,92.6,8.944104,1.94591,3.529626,1 +11,2,0,0,1,225653,0,7661.583,15.95072,1,12,1,40.97035,12.14016,35.35849,0,0,88.469,0,0,0,5,0,7,88.3,6.9,0,69.3,0,0,1,1,1.94591,0,0,0,0,0,0,0,69.3,8.944104,1.94591,4.482652,1 +11,2,0,0,2,225653,0,7661.583,16.95072,1,12,1,46.41278,15.00737,0,0,0,61.42015,0,0,0,4,0,7,88.3,6.9,0,69.3,0,0,1,1,1.94591,0,0,0,0,0,0,0,69.3,8.944104,1.94591,4.117738,1 +11,2,0,0,3,225653,0,7661.583,17.95072,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,88.3,6.9,0,69.3,0,0,1,1,1.94591,0,0,0,0,0,0,0,69.3,8.944104,1.94591,,0 +11,2,0,0,1,225654,0,7661.583,18.22313,0,11,1,40.05391,3.126685,0,0,0,43.18059,0,0,0,4,0,7,63.8,13.8,0,60.2,0,0,0,0,1.94591,0,0,0,0,0,0,0,60.2,8.944104,1.94591,3.765391,1 +11,2,0,0,2,225654,0,7661.583,19.22313,0,11,1,6.879607,0,0,0,0,6.879607,0,0,0,1,0,7,63.8,13.8,0,60.2,0,0,0,0,1.94591,0,0,0,0,0,0,0,60.2,8.944104,1.94591,1.928561,1 +11,2,0,0,3,225654,0,7661.583,20.22313,0,11,1,17.06928,0,0,0,0,17.06928,0,0,0,1,0,7,63.8,13.8,0,60.2,0,0,0,0,1.94591,0,0,0,0,0,0,0,60.2,8.944104,1.94591,2.837281,1 +11,2,0,0,1,225655,0,7661.583,40.07392,1,12,1,212.372,21.18598,4.312668,0,1328.76,1566.631,1,0,0,10,0,7,80.3,24.1,1,68.2,0,0,0,0,1.94591,0,0,0,0,1,0,0,68.2,8.944104,1.94591,7.356683,1 +11,2,0,0,2,225655,0,7661.583,41.07392,1,12,1,75.13513,25.88698,0,0,0,101.0221,0,0,0,4,2,7,80.3,24.1,1,68.2,0,0,0,0,1.94591,0,0,0,0,1,0,0,68.2,8.944104,1.94591,4.615339,1 +11,2,0,0,3,225655,0,7661.583,42.07392,1,12,1,42.95807,14.43482,0,0,0,57.39289,0,0,0,3,0,7,80.3,24.1,1,68.2,0,0,0,0,1.94591,0,0,0,0,1,0,0,68.2,8.944104,1.94591,4.049921,1 +11,2,0,0,1,225656,0,7661.583,11.9781,1,12,1,38.94879,1.051213,0,0,0,40,0,0,0,2,0,7,85,11.84267,0,63,0,0,1,1,1.94591,0,0,0,0,0,0,0,63,8.944104,1.94591,3.688879,1 +11,2,0,0,2,225656,0,7661.583,12.9781,1,12,1,23.83292,0,30.75676,0,0,54.58968,0,0,0,2,0,7,85,11.84267,0,63,0,0,1,1,1.94591,0,0,0,0,0,0,0,63,8.944104,1.94591,3.999845,1 +11,2,0,0,3,225656,0,7661.583,13.9781,1,12,1,25.06837,2.256153,15.9526,0,0,43.27712,0,0,0,1,1,7,85,11.84267,0,63,0,0,1,1,1.94591,0,0,0,0,0,0,0,63,8.944104,1.94591,3.767624,1 +11,2,0,0,1,225657,0,7661.583,42.01232,0,12,1,82.88409,8.544475,33.69272,0,0,125.1213,0,0,0,7,0,7,77.1,17.2,1,61.4,0,0,0,0,1.94591,0,0,0,0,0,1,0,61.4,8.944104,1.94591,4.829284,1 +11,2,0,0,2,225657,0,7661.583,43.01232,0,12,1,87.32187,16.27027,20.09828,0,250,373.6904,1,0,0,7,0,7,77.1,17.2,1,61.4,0,0,0,0,1.94591,0,0,0,0,0,1,0,61.4,8.944104,1.94591,5.923428,1 +11,2,0,0,3,225657,0,7661.583,44.01232,0,12,1,25.13674,0,0,0,0,25.13674,0,0,0,0,0,7,77.1,17.2,1,61.4,0,0,0,0,1.94591,0,0,0,0,0,1,0,61.4,8.944104,1.94591,3.22433,1 +11,2,0,0,1,225658,0,7661.583,5.048597,1,12,1,17.97844,5.175202,0,0,0,23.15364,0,0,0,2,0,7,85,11.84267,0,85.2,0,0,1,1,1.94591,0,0,0,0,0,0,0,85.2,8.944104,1.94591,3.142152,1 +11,2,0,0,2,225658,0,7661.583,6.048597,1,12,1,36.24079,8.083538,0,0,0,44.32433,0,0,0,2,0,7,85,11.84267,0,85.2,0,0,1,1,1.94591,0,0,0,0,0,0,0,85.2,8.944104,1.94591,3.791534,1 +11,2,0,0,3,225658,0,7661.583,7.048597,1,12,1,112.124,28.46399,0,0,0,140.588,0,0,0,1,1,7,85,11.84267,0,85.2,0,0,1,1,1.94591,0,0,0,0,0,0,0,85.2,8.944104,1.94591,4.945833,1 +13,2,0,1,1,225672,0,11346.63,.7255304,0,12,1,183.0728,50.03773,14.18868,0,0,247.2992,0,0,0,15,0,5,81.35272,11.84267,1,66.7,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.336764,1.609438,5.510599,1 +13,2,0,1,2,225672,0,11346.63,1.725531,0,12,1,258.5258,22.64865,0,0,0,281.1744,0,0,0,9,0,5,81.35272,11.84267,1,66.7,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.336764,1.609438,5.638975,1 +13,2,0,1,3,225672,0,11346.63,2.72553,0,12,1,14.81313,0,0,0,0,14.81313,0,0,0,2,0,5,81.35272,11.84267,1,66.7,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.336764,1.609438,2.695514,1 +13,2,0,1,4,225672,0,11346.63,3.72553,0,12,1,144.4352,7.044602,0,0,0,151.4798,0,0,0,5,0,5,81.35272,11.84267,1,66.7,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.336764,1.609438,5.020452,1 +13,2,0,1,5,225672,0,11346.63,4.725531,0,12,1,15.00375,1.980495,0,0,741.1215,758.1058,1,0,0,2,0,5,81.35272,11.84267,1,66.7,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.336764,1.609438,6.630823,1 +13,2,0,1,1,225673,0,11346.63,28.73648,0,13,1,114,5.784367,0,175.2022,0,119.7844,0,0,8,5,0,5,77.7,17.2,0,68.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,68.2,9.336764,1.609438,4.785693,1 +13,2,0,1,2,225673,0,11346.63,29.73648,0,13,1,24.44717,1.995086,0,0,0,26.44226,0,0,0,2,0,5,77.7,17.2,0,68.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,68.2,9.336764,1.609438,3.274964,1 +13,2,0,1,3,225673,0,11346.63,30.73648,0,13,1,131.3582,4.416591,0,0,0,135.7748,0,0,0,5,0,5,77.7,17.2,0,68.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,68.2,9.336764,1.609438,4.910998,1 +13,2,0,1,4,225673,0,11346.63,31.73648,0,13,1,111.609,19.21634,11.25469,0,0,142.08,0,0,0,6,0,5,77.7,17.2,0,68.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,68.2,9.336764,1.609438,4.95639,1 +13,2,0,1,5,225673,0,11346.63,32.73648,0,13,1,96.3991,2.205551,0,0,0,98.60465,0,0,0,4,5,5,77.7,17.2,0,68.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,68.2,9.336764,1.609438,4.591118,1 +13,2,0,1,1,225674,0,11346.63,7.66872,1,12,1,14.98652,3.401617,0,0,0,18.38814,0,0,0,1,0,5,80,11.84267,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,81.5,9.336764,1.609438,2.911706,1 +13,2,0,1,2,225674,0,11346.63,8.66872,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,80,11.84267,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,81.5,9.336764,1.609438,,0 +13,2,0,1,3,225674,0,11346.63,9.66872,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,80,11.84267,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,81.5,9.336764,1.609438,,0 +13,2,0,1,4,225674,0,11346.63,10.66872,1,12,1,23.7599,2.621926,0,0,0,26.38183,0,0,0,2,0,5,80,11.84267,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,81.5,9.336764,1.609438,3.272675,1 +13,2,0,1,5,225674,0,11346.63,11.66872,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,80,11.84267,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,81.5,9.336764,1.609438,,0 +13,2,0,1,1,225675,0,11346.63,30.09446,1,12,1,82.45283,44.70081,0,481.1321,0,127.1536,0,0,45,3,0,5,56.4,20.7,0,77.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,77.3,9.336764,1.609438,4.845396,1 +13,2,0,1,2,225675,0,11346.63,31.09446,1,12,1,8.648648,24.13268,0,0,0,32.78133,0,0,0,1,0,5,56.4,20.7,0,77.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,77.3,9.336764,1.609438,3.489859,1 +13,2,0,1,3,225675,0,11346.63,32.09446,1,12,1,25.97995,3.828624,0,0,0,29.80857,0,0,0,2,0,5,56.4,20.7,0,77.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,77.3,9.336764,1.609438,3.394796,1 +13,2,0,1,4,225675,0,11346.63,33.09446,1,12,1,44.18508,6.2401,0,0,0,50.42518,0,0,0,3,0,5,56.4,20.7,0,77.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,77.3,9.336764,1.609438,3.920491,1 +13,2,0,1,5,225675,0,11346.63,34.09446,1,12,1,48.012,16.11028,0,0,0,64.12228,0,0,0,3,0,5,56.4,20.7,0,77.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,77.3,9.336764,1.609438,4.160792,1 +13,2,0,1,1,225676,0,11346.63,10.54346,0,12,1,3.180593,0,0,0,0,3.180593,0,0,0,0,0,5,73.3,11.84267,0,92.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,92.6,9.336764,1.609438,1.157068,1 +13,2,0,1,2,225676,0,11346.63,11.54346,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,73.3,11.84267,0,92.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,92.6,9.336764,1.609438,,0 +13,2,0,1,3,225676,0,11346.63,12.54346,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,73.3,11.84267,0,92.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,92.6,9.336764,1.609438,,0 +13,2,0,1,4,225676,0,11346.63,13.54346,0,12,1,7.503126,0,0,0,0,7.503126,0,0,0,1,0,5,73.3,11.84267,0,92.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,92.6,9.336764,1.609438,2.01532,1 +13,2,0,1,5,225676,0,11346.63,14.54346,0,12,1,9.377344,0,0,0,0,9.377344,0,0,0,1,0,5,73.3,11.84267,0,92.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,92.6,9.336764,1.609438,2.238297,1 +13,2,0,1,1,225679,0,17232.26,17.91923,1,16,1,65.57816,24.49143,8.029979,0,0,98.09957,0,0,0,6,2,4,57.4,3.4,0,31.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,31.8,9.754597,1.386294,4.585983,1 +13,2,0,1,2,225679,0,17232.26,18.91923,1,16,1,8.784773,9.32162,0,0,0,18.10639,0,0,0,1,0,4,57.4,3.4,0,31.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,31.8,9.754597,1.386294,2.896265,1 +13,2,0,1,3,225679,0,17232.26,19.91923,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,57.4,3.4,0,31.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,31.8,9.754597,1.386294,,0 +13,2,0,1,1,225680,0,17232.26,22.03148,0,12,1,5.353319,0,0,0,0,5.353319,0,0,0,1,0,4,76.1,3.4,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.3,9.754597,1.386294,1.677717,1 +13,2,0,1,2,225680,0,17232.26,23.03148,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.1,3.4,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.3,9.754597,1.386294,,0 +13,2,0,1,3,225680,0,17232.26,24.03148,0,12,1,9.372177,0,0,0,0,9.372177,0,0,0,1,0,4,76.1,3.4,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.3,9.754597,1.386294,2.237746,1 +13,2,0,1,1,225682,0,17232.26,43.19507,1,16,1,28.37259,11.56852,32.97109,0,0,72.91221,0,0,0,3,0,4,80.3,13.8,1,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83,9.754597,1.386294,4.289256,1 +13,2,0,1,2,225682,0,17232.26,44.19507,1,16,1,27.3304,0,0,97.60859,0,27.3304,0,0,5,4,0,4,80.3,13.8,1,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83,9.754597,1.386294,3.308,1 +13,2,0,1,3,225682,0,17232.26,45.19507,1,16,1,8.807588,0,0,505.8717,0,8.807588,0,0,28,1,0,4,80.3,13.8,1,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83,9.754597,1.386294,2.175614,1 +13,2,0,1,1,225683,0,17232.26,47.53456,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,72.9,3.4,0,78.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,78.4,9.754597,1.386294,,0 +13,2,0,1,2,225683,0,17232.26,48.53456,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,72.9,3.4,0,78.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,78.4,9.754597,1.386294,,0 +13,2,0,1,3,225683,0,17232.26,49.53456,0,13,1,47.42548,0,0,0,0,47.42548,0,0,0,5,0,4,72.9,3.4,0,78.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,78.4,9.754597,1.386294,3.859159,1 +11,2,0,1,1,225686,0,8224.634,6.521561,1,12,1,67.90846,3.672166,0,0,0,71.58063,0,0,0,5,0,3,90,11.84267,0,77.8,0,0,1,1,1.098612,0,0,0,0,0,0,0,77.8,9.015011,1.098612,4.270824,1 +11,2,0,1,2,225686,0,8224.634,7.521561,1,12,1,131.9195,8.119244,0,0,0,140.0388,0,0,0,6,0,3,90,11.84267,0,77.8,0,0,1,1,1.098612,0,0,0,0,0,0,0,77.8,9.015011,1.098612,4.941919,1 +11,2,0,1,3,225686,0,8224.634,8.521561,1,12,1,31.89578,1.72956,0,0,0,33.62534,0,0,0,3,0,4,90,11.84267,0,77.8,0,0,1,1,1.386294,0,0,0,0,0,0,0,77.8,9.015011,1.386294,3.51528,1 +11,2,0,1,1,225687,0,8224.634,2.507871,1,12,1,29.5636,0,0,0,0,29.5636,0,0,0,2,0,3,81.35272,11.84267,0,77.8,0,0,1,1,1.098612,0,0,0,0,0,0,0,77.8,9.015011,1.098612,3.386544,1 +11,2,0,1,2,225687,0,8224.634,3.507871,1,12,1,19.14687,5.113912,0,0,0,24.26079,0,0,0,2,0,3,81.35272,11.84267,0,77.8,0,0,1,1,1.098612,0,0,0,0,0,0,0,77.8,9.015011,1.098612,3.188861,1 +11,2,0,1,3,225687,0,8224.634,4.507871,1,12,1,23.13567,0,0,0,0,23.13567,0,0,0,1,0,4,81.35272,11.84267,0,77.8,0,0,1,1,1.386294,0,0,0,0,0,0,0,77.8,9.015011,1.386294,3.141376,1 +11,2,0,1,1,225688,0,8224.634,25.8809,1,12,1,134.1671,41.93188,0,0,0,176.099,0,0,0,8,0,3,73.4,13.8,0,70.5,0,0,0,0,1.098612,0,0,0,0,0,0,0,70.5,9.015011,1.098612,5.171046,1 +11,2,0,1,2,225688,0,8224.634,26.8809,1,12,1,80.10179,58.07077,0,0,746.2191,884.3917,1,0,0,5,0,3,73.4,13.8,0,70.5,0,0,0,0,1.098612,0,0,0,0,0,0,0,70.5,9.015011,1.098612,6.7849,1 +11,2,0,1,3,225688,0,8224.634,27.8809,1,12,1,110.1752,15.04492,0,0,0,125.2201,0,0,0,3,0,4,73.4,13.8,0,70.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,70.5,9.015011,1.386294,4.830073,1 +11,2,0,1,1,225691,0,4414.076,43.50445,0,12,1,321.2017,8.189518,48.41186,0,0,377.8031,0,0,0,6,11,1,63.8,20.7,1,46.6,0,0,0,0,0,0,0,0,0,0,1,0,46.6,8.39278,0,5.934373,1 +11,2,0,1,2,225691,0,4414.076,44.50445,0,12,1,0,2.051158,0,0,0,2.051158,0,0,0,0,0,1,63.8,20.7,1,46.6,0,0,0,0,0,0,0,0,0,0,1,0,46.6,8.39278,0,.7184046,1 +11,2,0,1,3,225691,0,4414.076,45.50445,0,12,1,8.077436,0,0,0,0,8.077436,0,0,0,0,0,1,63.8,20.7,1,46.6,0,0,0,0,0,0,0,0,0,0,1,0,46.6,8.39278,0,2.089075,1 +11,2,0,1,4,225691,0,4414.076,46.50445,0,12,1,24.80683,5.673038,34.47743,0,0,64.9573,0,0,0,1,1,1,63.8,20.7,1,46.6,0,0,0,0,0,0,0,0,0,0,1,0,46.6,8.39278,0,4.17373,1 +11,2,0,1,5,225691,0,4414.076,47.50445,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,63.8,20.7,1,46.6,0,0,0,0,0,0,0,0,0,0,1,0,46.6,8.39278,0,,0 +5,2,25,1,1,225703,1,10402.35,32.52567,1,12,1,112.938,40.68464,0,0,0,153.6226,0,0,0,4,0,4,82.5,3.4,0,61.4,966.45,966.45,0,0,1.386294,6.87363,0,3.258096,8.259924,1,0,0,61.4,9.249883,1.386294,5.034499,1 +5,2,25,1,2,225703,1,10402.35,33.52567,1,12,1,0,29.42015,0,0,696.8059,726.2261,1,0,0,0,0,4,82.5,3.4,0,61.4,966.45,966.45,0,0,1.386294,6.87363,0,3.258096,8.259924,1,0,0,61.4,9.249883,1.386294,6.587862,1 +5,2,25,1,3,225703,1,10402.35,34.52567,1,12,1,116.9553,27.5752,0,0,0,144.5305,0,0,0,2,0,5,82.5,3.4,0,61.4,966.45,966.45,0,0,1.609438,6.87363,0,3.258096,8.259924,1,0,0,61.4,9.249883,1.609438,4.973491,1 +5,2,25,1,4,225703,1,10402.35,35.52567,1,12,1,60.02501,2.250938,0,0,0,62.27595,0,0,0,3,0,5,82.5,3.4,0,61.4,966.45,966.45,0,0,1.609438,6.87363,0,3.258096,8.259924,1,0,0,61.4,9.249883,1.609438,4.131575,1 +5,2,25,1,5,225703,1,10402.35,36.52567,1,12,1,132.9707,0,40.82146,0,0,173.7922,0,0,0,11,0,5,82.5,3.4,0,61.4,966.45,966.45,0,0,1.609438,6.87363,0,3.258096,8.259924,1,0,0,61.4,9.249883,1.609438,5.15786,1 +5,2,25,1,1,225704,1,10402.35,36.05476,0,12,1,18.86792,0,0,0,0,18.86792,0,0,0,1,0,4,89.4,0,0,95.5,966.45,966.45,0,0,1.386294,6.87363,0,3.258096,8.259924,0,0,0,95.5,9.249883,1.386294,2.937463,1 +5,2,25,1,2,225704,1,10402.35,37.05476,0,12,1,8.599508,7.277641,0,0,0,15.87715,0,0,0,1,0,4,89.4,0,0,95.5,966.45,966.45,0,0,1.386294,6.87363,0,3.258096,8.259924,0,0,0,95.5,9.249883,1.386294,2.764881,1 +5,2,25,1,3,225704,1,10402.35,38.05476,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,89.4,0,0,95.5,966.45,966.45,0,0,1.609438,6.87363,0,3.258096,8.259924,0,0,0,95.5,9.249883,1.609438,,0 +5,2,25,1,4,225704,1,10402.35,39.05476,0,12,1,11.67153,0,0,0,0,11.67153,0,0,0,1,0,5,89.4,0,0,95.5,966.45,966.45,0,0,1.609438,6.87363,0,3.258096,8.259924,0,0,0,95.5,9.249883,1.609438,2.457153,1 +5,2,25,1,5,225704,1,10402.35,40.05476,0,12,1,6.751688,4.354839,0,0,0,11.10653,0,0,0,1,0,5,89.4,0,0,95.5,966.45,966.45,0,0,1.609438,6.87363,0,3.258096,8.259924,0,0,0,95.5,9.249883,1.609438,2.407533,1 +5,2,25,1,1,225705,1,10402.35,10.59822,0,12,1,31.80593,0,0,0,0,31.80593,0,0,0,3,0,4,85,11.84267,0,48.1,966.45,966.45,1,0,1.386294,6.87363,0,3.258096,8.259924,0,0,0,48.1,9.249883,1.386294,3.459653,1 +5,2,25,1,2,225705,1,10402.35,11.59822,0,12,1,17.19902,0,0,0,0,17.19902,0,0,0,1,0,4,85,11.84267,0,48.1,966.45,966.45,1,0,1.386294,6.87363,0,3.258096,8.259924,0,0,0,48.1,9.249883,1.386294,2.844852,1 +5,2,25,1,3,225705,1,10402.35,12.59822,0,12,1,9.11577,0,0,0,0,9.11577,0,0,0,1,0,5,85,11.84267,0,48.1,966.45,966.45,1,0,1.609438,6.87363,0,3.258096,8.259924,0,0,0,48.1,9.249883,1.609438,2.210006,1 +5,2,25,1,4,225705,1,10402.35,13.59822,0,12,1,19.5915,0,36.88203,0,0,56.47353,0,0,0,1,0,5,85,11.84267,0,48.1,966.45,966.45,1,0,1.609438,6.87363,0,3.258096,8.259924,0,0,0,48.1,9.249883,1.609438,4.033772,1 +5,2,25,1,5,225705,1,10402.35,14.59822,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,85,11.84267,0,48.1,966.45,966.45,1,0,1.609438,6.87363,0,3.258096,8.259924,0,0,0,48.1,9.249883,1.609438,,0 +5,2,25,1,1,225706,1,10402.35,7.022587,1,12,1,83.55795,0,0,0,0,83.55795,0,0,0,3,0,4,93.3,11.84267,0,81.5,966.45,966.45,1,1,1.386294,6.87363,0,3.258096,8.259924,0,0,0,81.5,9.249883,1.386294,4.42554,1 +5,2,25,1,2,225706,1,10402.35,8.022587,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,93.3,11.84267,0,81.5,966.45,966.45,1,1,1.386294,6.87363,0,3.258096,8.259924,0,0,0,81.5,9.249883,1.386294,,0 +5,2,25,1,3,225706,1,10402.35,9.022587,1,12,1,6.836828,0,0,0,0,6.836828,0,0,0,1,0,5,93.3,11.84267,0,81.5,966.45,966.45,1,1,1.609438,6.87363,0,3.258096,8.259924,0,0,0,81.5,9.249883,1.609438,1.922324,1 +5,2,25,1,4,225706,1,10402.35,10.02259,1,12,1,15.83993,0,0,0,0,15.83993,0,0,0,1,0,5,93.3,11.84267,0,81.5,966.45,966.45,1,1,1.609438,6.87363,0,3.258096,8.259924,0,0,0,81.5,9.249883,1.609438,2.762534,1 +5,2,25,1,5,225706,1,10402.35,11.02259,1,12,1,38.25956,0,0,0,0,38.25956,0,0,0,3,0,5,93.3,11.84267,0,81.5,966.45,966.45,1,1,1.609438,6.87363,0,3.258096,8.259924,0,0,0,81.5,9.249883,1.609438,3.644393,1 +11,2,0,0,1,225707,0,10331.38,44.77481,0,12,1,0,5.432771,0,0,0,5.432771,0,0,0,0,0,1,89.9,3.4,0,78.4,0,0,0,0,0,0,0,0,0,0,0,0,78.4,9.243038,0,1.692449,1 +11,2,0,0,2,225707,0,10331.38,45.77481,0,12,1,65.65907,4.241824,0,0,0,69.90089,0,0,0,2,0,1,89.9,3.4,0,78.4,0,0,0,0,0,0,0,0,0,0,0,0,78.4,9.243038,0,4.247078,1 +11,2,0,0,3,225707,0,10331.38,46.77481,0,12,1,0,0,38.24231,0,0,38.24231,0,0,0,0,0,1,89.9,3.4,0,78.4,0,0,0,0,0,0,0,0,0,0,0,0,78.4,9.243038,0,3.643943,1 +13,2,0,0,1,225737,0,7747.214,51.85489,0,12,1,16.98113,0,0,0,0,16.98113,0,0,0,1,0,2,92,10.3,0,81.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,81.8,8.955217,.6931472,2.832103,1 +13,2,0,0,2,225737,0,7747.214,52.85489,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,92,10.3,0,81.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,81.8,8.955217,.6931472,,0 +13,2,0,0,3,225737,0,7747.214,53.85489,0,12,1,30.53783,0,40.84777,0,0,71.3856,0,0,0,1,1,2,92,10.3,0,81.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,81.8,8.955217,.6931472,4.268096,1 +13,2,0,0,4,225737,0,7747.214,54.85489,0,12,1,13.33889,0,0,0,0,13.33889,0,0,0,0,0,2,92,10.3,0,81.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,81.8,8.955217,.6931472,2.590684,1 +13,2,0,0,5,225737,0,7747.214,55.85489,0,12,1,21.1928,0,33.67592,0,0,54.86872,0,0,0,0,3,2,92,10.3,0,81.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,81.8,8.955217,.6931472,4.004943,1 +13,2,0,0,1,225738,0,7747.214,49.16906,1,12,1,9.218328,21.00809,0,0,0,30.22642,0,0,0,1,0,2,79.3,10.3,0,67,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,67,8.955217,.6931472,3.408716,1 +13,2,0,0,2,225738,0,7747.214,50.16906,1,12,1,149.0909,30.17199,0,0,0,179.2629,0,0,0,7,5,2,79.3,10.3,0,67,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,67,8.955217,.6931472,5.188853,1 +13,2,0,0,3,225738,0,7747.214,51.16906,1,12,1,32.81677,8.021878,23.701,0,0,64.53965,0,0,0,1,1,2,79.3,10.3,0,67,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,67,8.955217,.6931472,4.16728,1 +13,2,0,0,4,225738,0,7747.214,52.16906,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,79.3,10.3,0,67,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,67,8.955217,.6931472,,0 +13,2,0,0,5,225738,0,7747.214,53.16906,1,12,1,385.9715,13.84846,28.11328,0,0,427.9332,0,0,0,1,1,2,79.3,10.3,0,67,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,67,8.955217,.6931472,6.058967,1 +16,2,95,1,1,225743,0,7975.953,2.841889,1,13,1,32.66195,7.719107,0,0,0,40.38106,0,0,0,5,0,5,81.35272,11.84267,0,77.8,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,77.8,8.984312,1.609438,3.698361,1 +16,2,95,1,2,225743,0,7975.953,3.841889,1,13,1,28.24579,16.60555,0,0,0,44.85134,0,0,0,4,0,5,81.35272,11.84267,0,77.8,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,77.8,8.984312,1.609438,3.803353,1 +16,2,95,1,3,225743,0,7975.953,4.841889,1,13,1,34.41946,6.002754,0,0,0,40.42221,0,0,0,3,0,5,81.35272,11.84267,0,77.8,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,77.8,8.984312,1.609438,3.699379,1 +16,2,95,1,1,225744,0,7975.953,1.820671,0,13,1,13.06478,3.685357,0,0,0,16.75014,0,0,0,2,0,5,81.35272,11.84267,0,88.9,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.9,8.984312,1.609438,2.818406,1 +16,2,95,1,2,225744,0,7975.953,2.820671,0,13,1,30.22795,20.52527,0,0,0,50.75322,0,0,0,3,0,5,81.35272,11.84267,0,88.9,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.9,8.984312,1.609438,3.926975,1 +16,2,95,1,3,225744,0,7975.953,3.820671,0,13,1,69.52731,25.84672,0,0,0,95.37402,0,0,0,8,0,5,81.35272,11.84267,0,88.9,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.9,8.984312,1.609438,4.557806,1 +16,2,95,1,1,225745,0,7975.953,30.56263,1,13,1,83.28797,30.57703,0,0,0,113.865,0,0,0,12,0,5,78.7,13.8,0,78.4,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,78.4,8.984312,1.609438,4.735013,1 +16,2,95,1,2,225745,0,7975.953,31.56263,1,13,1,404.0387,16.2438,0,0,0,420.2825,0,0,0,6,0,5,78.7,13.8,0,78.4,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,78.4,8.984312,1.609438,6.040927,1 +16,2,95,1,3,225745,0,7975.953,32.56263,1,13,1,66.54429,8.926113,0,0,0,75.4704,0,0,0,3,0,5,78.7,13.8,0,78.4,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,78.4,8.984312,1.609438,4.32374,1 +16,2,95,1,1,225746,0,7975.953,37.03217,0,12,1,10.88732,7.583016,0,0,0,18.47033,0,0,0,1,0,5,88.3,6.9,0,72.7,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,72.7,8.984312,1.609438,2.916166,1 +16,2,95,1,2,225746,0,7975.953,38.03217,0,12,1,32.21011,10.12389,0,0,0,42.334,0,0,0,2,0,5,88.3,6.9,0,72.7,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,72.7,8.984312,1.609438,3.74559,1 +16,2,95,1,3,225746,0,7975.953,39.03217,0,12,1,0,4.176228,0,0,0,4.176228,0,0,0,0,0,5,88.3,6.9,0,72.7,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,72.7,8.984312,1.609438,1.429408,1 +16,2,95,1,1,225747,0,7975.953,5.629021,1,13,1,64.23517,14.34404,0,0,0,78.57921,0,0,0,6,0,5,83.3,11.84267,0,81.5,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,81.5,8.984312,1.609438,4.364107,1 +16,2,95,1,2,225747,0,7975.953,6.629021,1,13,1,90.68385,46.87314,0,0,312.8345,450.3915,1,0,0,7,0,5,83.3,11.84267,0,81.5,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,81.5,8.984312,1.609438,6.110117,1 +16,2,95,1,3,225747,0,7975.953,7.629021,1,13,1,67.25562,19.98164,0,0,0,87.23727,0,0,0,3,0,5,83.3,11.84267,0,81.5,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,81.5,8.984312,1.609438,4.468632,1 +16,2,95,0,1,225754,0,2260.997,26.81177,1,16,1,33.20631,18.69897,2.003266,0,0,53.90855,0,0,0,2,1,1,88.8,27.6,0,56.8,1000,0,0,0,0,0,0,4.564348,6.959049,1,0,0,56.8,7.724003,0,3.987289,1 +16,2,95,0,2,225754,0,2260.997,27.81177,1,16,1,60.4559,44.82161,1.828543,0,0,107.106,0,0,0,1,4,1,88.8,27.6,0,56.8,1000,0,0,0,0,0,0,4.564348,6.959049,1,0,0,56.8,7.724003,0,4.67382,1 +16,2,95,0,3,225754,0,2260.997,28.81177,1,16,1,60.57825,35.22258,0,0,0,95.80083,0,0,0,5,0,1,88.8,27.6,0,56.8,1000,0,0,0,0,0,0,4.564348,6.959049,1,0,0,56.8,7.724003,0,4.562271,1 +6,2,25,1,1,225792,0,14826.98,11.96167,0,12,1,31.31692,5.519272,0,0,0,36.83619,0,0,0,3,0,4,83.3,11.84267,0,85.2,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,85.2,9.604271,1.386294,3.606481,1 +6,2,25,1,2,225792,0,14826.98,12.96167,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,11.84267,0,85.2,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,85.2,9.604271,1.386294,,0 +6,2,25,1,3,225792,0,14826.98,13.96167,0,12,1,197.8772,14.25926,0,0,0,212.1364,0,0,0,11,0,4,83.3,11.84267,0,85.2,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,85.2,9.604271,1.386294,5.357229,1 +6,2,25,1,1,225793,0,14826.98,36.82135,1,12,1,52.46253,282.3233,0,0,0,334.7859,0,0,0,4,0,4,85.1,13.8,0,78.4,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,78.4,9.604271,1.386294,5.813491,1 +6,2,25,1,2,225793,0,14826.98,37.82135,1,12,1,24.89019,42.73304,0,0,0,67.62323,0,0,0,2,0,4,85.1,13.8,0,78.4,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,78.4,9.604271,1.386294,4.213952,1 +6,2,25,1,3,225793,0,14826.98,38.82135,1,12,1,36.58537,29.91418,0,0,0,66.49955,0,0,0,2,0,4,85.1,13.8,0,78.4,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,78.4,9.604271,1.386294,4.197195,1 +6,2,25,1,1,225794,0,14826.98,41.27036,0,19,1,50.05353,57.4197,0,0,828.7206,936.1938,1,0,0,3,0,4,83.5,0,0,70.5,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,70.5,9.604271,1.386294,6.841823,1 +6,2,25,1,2,225794,0,14826.98,42.27036,0,19,1,25.86628,40.40508,33.62128,0,0,99.89263,0,0,0,3,0,4,83.5,0,0,70.5,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,70.5,9.604271,1.386294,4.604096,1 +6,2,25,1,3,225794,0,14826.98,43.27036,0,19,1,32.06865,55.44264,0,0,0,87.51129,0,0,0,4,0,4,83.5,0,0,70.5,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,70.5,9.604271,1.386294,4.471768,1 +6,2,25,1,1,225795,0,14826.98,9.785079,1,12,1,206.9058,190.0964,0,0,0,397.0021,0,0,0,11,0,4,76.7,11.84267,1,38.9,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,1,0,38.9,9.604271,1.386294,5.983942,1 +6,2,25,1,2,225795,0,14826.98,10.78508,1,12,1,268.1796,116.7204,0,0,3344.676,3729.575,1,0,0,11,0,4,76.7,11.84267,1,38.9,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,1,0,38.9,9.604271,1.386294,8.22405,1 +6,2,25,1,3,225795,0,14826.98,11.78508,1,12,1,424.1192,88.64499,0,0,0,512.7642,0,0,0,11,0,4,76.7,11.84267,1,38.9,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,1,0,38.9,9.604271,1.386294,6.239816,1 +11,2,0,1,1,225803,0,22723.17,39.06366,0,12,1,80.65114,15.61673,0,0,0,96.26787,0,0,0,2,0,4,61.2,6.9,0,86.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,86.4,10.03118,1.386294,4.567134,1 +11,2,0,1,2,225803,0,22723.17,40.06366,0,12,1,56.46718,0,0,0,0,56.46718,0,0,0,0,7,4,61.2,6.9,0,86.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,86.4,10.03118,1.386294,4.033659,1 +11,2,0,1,3,225803,0,22723.17,41.06366,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,61.2,6.9,0,86.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,86.4,10.03118,1.386294,,0 +11,2,0,1,1,225804,0,22723.17,36.29843,1,12,1,211.6993,7.411329,28.17364,0,0,247.2843,0,0,0,3,22,4,67.6,17.2,0,71.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,71.6,10.03118,1.386294,5.510539,1 +11,2,0,1,2,225804,0,22723.17,37.29843,1,12,1,133.1081,3.257722,33.38321,0,0,169.749,0,0,0,3,20,4,67.6,17.2,0,71.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,71.6,10.03118,1.386294,5.134321,1 +11,2,0,1,3,225804,0,22723.17,38.29843,1,12,1,36.71562,0,0,0,0,36.71562,0,0,0,1,4,4,67.6,17.2,0,71.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,71.6,10.03118,1.386294,3.603202,1 +11,2,0,1,1,225805,0,22723.17,12.64613,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.3,11.84267,0,88.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,88.9,10.03118,1.386294,,0 +11,2,0,1,2,225805,0,22723.17,13.64613,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.3,11.84267,0,88.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,88.9,10.03118,1.386294,,0 +11,2,0,1,3,225805,0,22723.17,14.64613,0,12,1,25.81219,7.29862,0,0,0,33.11081,0,0,0,3,0,4,78.3,11.84267,0,88.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,88.9,10.03118,1.386294,3.49986,1 +11,2,0,1,1,225806,0,22723.17,17.4319,1,12,1,17.46956,9.311805,0,0,0,26.78137,0,0,0,1,1,4,58.5,6.9,0,83,0,0,1,1,1.386294,0,0,0,0,0,0,0,83,10.03118,1.386294,3.287706,1 +11,2,0,1,2,225806,0,22723.17,18.4319,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,58.5,6.9,0,83,0,0,0,0,1.386294,0,0,0,0,0,0,0,83,10.03118,1.386294,,0 +11,2,0,1,3,225806,0,22723.17,19.4319,1,12,1,77.88162,0,0,0,0,77.88162,0,0,0,3,0,4,58.5,6.9,0,83,0,0,0,0,1.386294,0,0,0,0,0,0,0,83,10.03118,1.386294,4.35519,1 +13,2,0,1,1,225807,0,10788.27,30.68583,0,16,1,23.01927,0,32.69807,0,732.2484,787.9658,1,0,0,2,1,5,83.5,10.3,0,73.9,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.286307,1.609438,6.669455,1 +13,2,0,1,2,225807,0,10788.27,31.68583,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,83.5,10.3,0,73.9,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.286307,1.609438,,0 +13,2,0,1,3,225807,0,10788.27,32.68583,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,83.5,10.3,0,73.9,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.286307,1.609438,,0 +13,2,0,1,1,225808,0,10788.27,10.97878,1,12,1,11.7773,4.416488,0,0,0,16.19379,0,0,0,1,0,5,73.3,11.84267,0,77.8,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.286307,1.609438,2.784628,1 +13,2,0,1,2,225808,0,10788.27,11.97878,1,12,1,16.10542,0,16.12982,0,0,32.23524,0,0,0,1,0,5,73.3,11.84267,0,77.8,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.286307,1.609438,3.47306,1 +13,2,0,1,3,225808,0,10788.27,12.97878,1,12,1,45.16712,4.855465,0,0,0,50.02258,0,0,0,4,0,5,73.3,11.84267,0,77.8,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.286307,1.609438,3.912475,1 +13,2,0,1,1,225809,0,10788.27,5.111567,0,12,1,20.87794,0,0,0,0,20.87794,0,0,0,2,0,5,78.3,11.84267,0,74.1,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.286307,1.609438,3.038693,1 +13,2,0,1,2,225809,0,10788.27,6.111567,0,12,1,10.73695,2.171791,0,0,0,12.90874,0,0,0,1,0,5,78.3,11.84267,0,74.1,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.286307,1.609438,2.557904,1 +13,2,0,1,3,225809,0,10788.27,7.111567,0,12,1,16.71183,3.68112,0,0,0,20.39295,0,0,0,2,0,5,78.3,11.84267,0,74.1,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.286307,1.609438,3.015189,1 +13,2,0,1,1,225810,0,10788.27,30.23409,1,12,1,87.36617,1.472163,0,0,425.4283,514.2666,1,0,0,6,0,5,79.3,10.3,0,69.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.286307,1.609438,6.242742,1 +13,2,0,1,2,225810,0,10788.27,31.23409,1,12,1,38.31137,4.807223,0,0,0,43.1186,0,0,0,2,0,5,79.3,10.3,0,69.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.286307,1.609438,3.763954,1 +13,2,0,1,3,225810,0,10788.27,32.23409,1,12,1,70.23487,5.691057,1.242096,0,0,77.16802,0,0,0,4,0,5,79.3,10.3,0,69.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.286307,1.609438,4.345985,1 +13,2,0,1,1,225811,0,10788.27,9.127995,1,12,1,19.80728,3.929336,0,0,0,23.73662,0,0,0,3,0,5,73.3,11.84267,0,70.4,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.4,9.286307,1.609438,3.167019,1 +13,2,0,1,2,225811,0,10788.27,10.12799,1,12,1,5.856515,1.898487,0,0,0,7.755002,0,0,0,1,0,5,73.3,11.84267,0,70.4,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.4,9.286307,1.609438,2.048338,1 +13,2,0,1,3,225811,0,10788.27,11.12799,1,12,1,31.61698,4.476061,0,0,0,36.09304,0,0,0,3,0,5,73.3,11.84267,0,70.4,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.4,9.286307,1.609438,3.5861,1 +13,2,0,1,1,225814,0,8665.641,60.76112,1,13,1,151.9322,100.3176,0,0,0,252.2499,0,0,0,7,0,1,31.9,24.1,0,35.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,1,0,35.2,9.067237,0,5.53042,1 +13,2,0,1,2,225814,0,8665.641,61.76112,1,13,1,265.1786,45.94595,0,0,0,311.1245,0,0,0,16,0,1,31.9,24.1,0,35.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,1,0,35.2,9.067237,0,5.740193,1 +13,2,0,1,3,225814,0,8665.641,62.76112,1,13,1,205.385,0,0,0,0,205.385,0,0,0,10,2,1,31.9,24.1,0,35.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,1,0,35.2,9.067237,0,5.324886,1 +13,2,0,1,1,225838,0,7184.751,23.92608,0,12,1,26.3438,0,0,0,0,26.3438,0,0,0,2,0,1,79.8,10.3,0,67,150,78.43,0,0,0,4.362206,1,4.564348,5.061929,1,0,0,67,8.879855,0,3.271233,1 +13,2,0,1,2,225838,0,7184.751,24.92608,0,12,1,36.79108,0,0,0,0,36.79108,0,0,0,2,0,1,79.8,10.3,0,67,150,78.43,0,0,0,4.362206,1,4.564348,5.061929,1,0,0,67,8.879855,0,3.605255,1 +13,2,0,1,3,225838,0,7184.751,25.92608,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,79.8,10.3,0,67,150,78.43,0,0,0,4.362206,1,4.564348,5.061929,1,0,0,67,8.879855,0,,0 +18,2,25,1,1,225853,0,3585.337,20.89528,1,13,1,34.26124,7.537473,0,0,0,41.79871,0,0,0,2,0,1,63.8,6.9,1,44.3,469.5,469.5,0,0,0,6.151668,0,3.258096,7.537962,0,0,0,44.3,8.184887,0,3.732866,1 +18,2,25,1,2,225853,0,3585.337,21.89528,1,13,1,17.0815,2.376769,0,0,0,19.45827,0,0,0,1,0,1,63.8,6.9,1,44.3,469.5,469.5,0,0,0,6.151668,0,3.258096,7.537962,0,0,0,44.3,8.184887,0,2.968272,1 +18,2,25,1,3,225853,0,3585.337,22.89528,1,13,1,110.8401,84.98193,0,0,0,195.822,0,0,0,12,0,1,63.8,6.9,1,44.3,469.5,469.5,0,0,0,6.151668,0,3.258096,7.537962,0,0,0,44.3,8.184887,0,5.277206,1 +18,2,25,1,4,225853,0,3585.337,23.89528,1,13,1,70.51282,98.1555,0,682.3821,295.6824,464.3507,1,0,34,3,1,1,63.8,6.9,1,44.3,469.5,469.5,0,0,0,6.151668,0,3.258096,7.537962,0,0,0,44.3,8.184887,0,6.14064,1 +18,2,25,1,5,225853,0,3585.337,24.89528,1,13,1,73.21162,5.391207,0,409.8361,0,78.60283,0,0,22,4,0,1,63.8,6.9,1,44.3,469.5,469.5,0,0,0,6.151668,0,3.258096,7.537962,0,0,0,44.3,8.184887,0,4.364408,1 +18,2,25,1,1,225854,0,3491.496,54.9076,1,12,1,36.38814,11.15903,35.68733,0,0,83.2345,0,0,0,2,1,1,83,17.2,0,79.5,472.5,472.5,0,0,0,6.158038,0,3.258096,7.544332,1,0,0,79.5,8.158372,0,4.421662,1 +18,2,25,1,2,225854,0,3491.496,55.9076,1,12,1,86.85503,12.82555,0,0,0,99.68059,0,0,0,7,0,1,83,17.2,0,79.5,472.5,472.5,0,0,0,6.158038,0,3.258096,7.544332,1,0,0,79.5,8.158372,0,4.601971,1 +18,2,25,1,3,225854,0,3491.496,56.9076,1,12,1,41.02097,12.32908,0,0,0,53.35004,0,0,0,5,0,1,83,17.2,0,79.5,472.5,472.5,0,0,0,6.158038,0,3.258096,7.544332,1,0,0,79.5,8.158372,0,3.976875,1 +18,2,25,1,4,225854,0,3491.496,57.9076,1,12,1,42.51772,8.232597,0,0,0,50.75031,0,0,0,5,0,1,83,17.2,0,79.5,472.5,472.5,0,0,0,6.158038,0,3.258096,7.544332,1,0,0,79.5,8.158372,0,3.926918,1 +18,2,25,1,5,225854,0,3491.496,58.9076,1,12,1,75.76894,8.552138,34.05101,0,0,118.3721,0,0,0,6,1,1,83,17.2,0,79.5,472.5,472.5,0,0,0,6.158038,0,3.258096,7.544332,1,0,0,79.5,8.158372,0,4.773833,1 +13,2,0,0,1,225873,0,11360.7,51.54552,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,91.5,6.9,0,90.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,90.9,9.338004,.6931472,,0 +13,2,0,0,2,225873,0,11360.7,52.54552,0,12,1,90.64469,1.20698,50.34416,0,982.4042,1124.6,1,0,0,4,1,2,91.5,6.9,0,90.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,90.9,9.338004,.6931472,7.025183,1 +13,2,0,0,3,225873,0,11360.7,53.54552,0,12,1,134.7709,0,0,0,0,134.7709,0,0,0,9,0,2,91.5,6.9,0,90.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,90.9,9.338004,.6931472,4.903576,1 +13,2,0,0,1,225874,0,11360.7,51.90417,1,12,1,137.8393,14.65673,51.19212,0,0,203.6881,0,0,0,3,14,2,89.9,6.9,1,67,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,67,9.338004,.6931472,5.31659,1 +13,2,0,0,2,225874,0,11360.7,52.90417,1,12,1,33.44644,15.3175,0,0,0,48.76394,0,0,0,1,3,2,89.9,6.9,1,67,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,67,9.338004,.6931472,3.886991,1 +13,2,0,0,3,225874,0,11360.7,53.90417,1,12,1,50.65139,0,0,0,0,50.65139,0,0,0,1,2,2,89.9,6.9,1,67,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,67,9.338004,.6931472,3.924967,1 +15,2,95,0,1,225996,0,3843.402,24.70089,0,16,1,48.61474,0,0,0,0,48.61474,0,0,0,2,1,1,76.6,17.2,1,62.5,267,267,0,0,0,5.587249,0,4.564348,5.638542,1,0,0,62.5,8.254374,0,3.883927,1 +15,2,95,0,2,225996,0,3843.402,25.70089,0,16,1,362.7583,7.568477,54.54108,36.04036,0,424.8679,0,0,3,14,0,1,76.6,17.2,1,62.5,267,267,0,0,0,5.587249,0,4.564348,5.638542,1,0,0,62.5,8.254374,0,6.051778,1 +15,2,95,0,3,225996,0,3843.402,26.70089,0,16,1,42.95154,0,0,99.11894,0,42.95154,0,0,9,2,0,1,76.6,17.2,1,62.5,267,267,0,0,0,5.587249,0,4.564348,5.638542,1,0,0,62.5,8.254374,0,3.760072,1 +11,2,0,1,1,226016,0,7989.443,59.98083,1,12,1,325.7052,65.10378,55.58808,0,0,446.397,0,0,0,0,52,1,93.1,13.8,0,78.4,0,76.91,0,0,0,4.342636,0,0,0,1,0,0,78.4,8.986001,0,6.101209,1 +11,2,0,1,2,226016,0,7989.443,60.98083,1,12,1,205.5259,77.68298,0,0,0,283.2089,0,0,0,3,27,1,93.1,13.8,0,78.4,0,76.91,0,0,0,4.342636,0,0,0,1,0,0,78.4,8.986001,0,5.646185,1 +11,2,0,1,3,226016,0,7989.443,61.98083,1,12,1,238.0952,64.83827,59.13747,0,249.1689,611.2399,1,0,0,3,29,1,93.1,13.8,0,78.4,0,76.91,0,0,0,4.342636,0,0,0,1,0,0,78.4,8.986001,0,6.41549,1 +16,2,95,0,1,226019,0,11106.75,31.05818,0,21,1,27.30551,0,0,0,0,27.30551,0,0,0,1,0,2,72.9,13.8,0,80.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,80.7,9.315398,.6931472,3.307089,1 +16,2,95,0,1,226020,0,11106.75,28.26831,1,16,1,33.48789,.7727975,0,0,0,34.26069,0,0,0,2,0,2,84.6,27.6,0,97.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,97.7,9.315398,.6931472,3.533998,1 +16,2,95,0,1,226029,0,7957.771,28.73648,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,78.2,13.8,0,77.3,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,77.3,8.98203,.6931472,,0 +16,2,95,0,2,226029,0,7957.771,29.73648,1,12,1,52.82555,3.906634,0,0,0,56.73219,0,0,0,3,0,2,78.2,13.8,0,77.3,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,77.3,8.98203,.6931472,4.038342,1 +16,2,95,0,3,226029,0,7957.771,30.73648,1,12,1,43.7557,19.16591,0,0,611.0301,673.9517,1,0,0,3,0,2,78.2,13.8,0,77.3,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,77.3,8.98203,.6931472,6.513158,1 +16,2,95,0,1,226030,0,7957.771,27.30459,0,12,1,8.086253,5.380054,0,0,0,13.46631,0,0,0,1,0,2,68.6,3.4,0,72.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,72.7,8.98203,.6931472,2.600191,1 +16,2,95,0,2,226030,0,7957.771,28.30459,0,12,1,91.74447,2.432432,0,0,0,94.1769,0,0,0,1,0,2,68.6,3.4,0,72.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,72.7,8.98203,.6931472,4.545175,1 +16,2,95,0,3,226030,0,7957.771,29.30459,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,68.6,3.4,0,72.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,72.7,8.98203,.6931472,,0 +11,2,0,0,1,226042,0,8665.641,25.70842,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,85.1,20.7,0,85.2,0,0,0,0,.6931472,0,0,0,0,1,0,0,85.2,9.067237,.6931472,,0 +11,2,0,0,2,226042,0,8665.641,26.70842,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,85.1,20.7,0,85.2,0,0,0,0,.6931472,0,0,0,0,1,0,0,85.2,9.067237,.6931472,,0 +11,2,0,0,3,226042,0,8665.641,27.70842,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,85.1,20.7,0,85.2,0,0,0,0,.6931472,0,0,0,0,1,0,0,85.2,9.067237,.6931472,,0 +11,2,0,0,4,226042,0,8665.641,28.70842,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,85.1,20.7,0,85.2,0,0,0,0,.6931472,0,0,0,0,1,0,0,85.2,9.067237,.6931472,,0 +11,2,0,0,5,226042,0,8665.641,29.70842,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,85.1,20.7,0,85.2,0,0,0,0,.6931472,0,0,0,0,1,0,0,85.2,9.067237,.6931472,,0 +11,2,0,0,1,226043,0,8665.641,24.95004,1,12,1,110.572,62.89581,0,0,0,173.4678,0,0,0,11,0,2,85.6,6.9,0,79.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,79.5,9.067237,.6931472,5.155992,1 +11,2,0,0,2,226043,0,8665.641,25.95004,1,12,1,109.9391,127.0792,0,0,0,237.0183,0,0,0,16,1,2,85.6,6.9,0,79.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,79.5,9.067237,.6931472,5.468137,1 +11,2,0,0,3,226043,0,8665.641,26.95004,1,12,1,97.59243,103.3104,0,0,0,200.9028,0,0,0,16,0,2,85.6,6.9,0,79.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,79.5,9.067237,.6931472,5.302821,1 +11,2,0,0,4,226043,0,8665.641,27.95004,1,12,1,24.42807,39.55021,0,0,0,63.97829,0,0,0,6,0,2,85.6,6.9,0,79.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,79.5,9.067237,.6931472,4.158544,1 +11,2,0,0,5,226043,0,8665.641,28.95004,1,12,1,234.4834,29.7523,0,0,0,264.2357,0,0,0,11,0,2,85.6,6.9,0,79.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,79.5,9.067237,.6931472,5.576841,1 +5,2,25,0,1,226069,0,13229.91,8.492813,1,18,1,11.5903,0,0,0,0,11.5903,0,0,0,1,0,4,88.3,11.84267,0,100,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,100,9.490312,1.386294,2.450168,1 +5,2,25,0,2,226069,0,13229.91,9.492813,1,18,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,11.84267,0,100,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,100,9.490312,1.386294,,0 +5,2,25,0,3,226069,0,13229.91,10.49281,1,18,1,24.15679,0,0,0,0,24.15679,0,0,0,2,0,4,88.3,11.84267,0,100,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,100,9.490312,1.386294,3.184566,1 +5,2,25,0,1,226070,0,13229.91,39.92608,0,18,1,198.5175,2.12938,0,0,0,200.6469,0,0,0,8,0,4,81.9,6.9,0,77.3,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.3,9.490312,1.386294,5.301547,1 +5,2,25,0,2,226070,0,13229.91,40.92608,0,18,1,102.5061,10.14742,0,88.45209,0,112.6536,0,0,4,3,9,4,81.9,6.9,0,77.3,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.3,9.490312,1.386294,4.724317,1 +5,2,25,0,3,226070,0,13229.91,41.92608,0,18,1,15.04102,0,0,0,0,15.04102,0,0,0,1,0,4,81.9,6.9,0,77.3,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.3,9.490312,1.386294,2.710781,1 +5,2,25,0,1,226071,0,13229.91,35.47433,1,18,1,45.8221,6.954178,0,0,0,52.77628,0,0,0,4,0,4,86.2,24.1,0,69.3,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,69.3,9.490312,1.386294,3.966062,1 +5,2,25,0,2,226071,0,13229.91,36.47433,1,18,1,276.7322,3.105651,0,0,0,279.8378,0,0,0,6,0,4,86.2,24.1,0,69.3,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,69.3,9.490312,1.386294,5.63421,1 +5,2,25,0,3,226071,0,13229.91,37.47433,1,18,1,73.38195,3.509572,0,0,0,76.89153,0,0,0,5,0,4,86.2,24.1,0,69.3,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,69.3,9.490312,1.386294,4.342396,1 +5,2,25,0,1,226072,0,13229.91,6.212183,1,18,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,11.84267,0,66.7,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,66.7,9.490312,1.386294,,0 +5,2,25,0,2,226072,0,13229.91,7.212183,1,18,1,12.89926,0,0,0,0,12.89926,0,0,0,1,0,4,88.3,11.84267,0,66.7,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,66.7,9.490312,1.386294,2.55717,1 +5,2,25,0,3,226072,0,13229.91,8.212183,1,18,1,15.04102,0,0,0,0,15.04102,0,0,0,1,0,4,88.3,11.84267,0,66.7,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,66.7,9.490312,1.386294,2.710781,1 +7,2,25,0,1,226087,0,13652.2,55.14305,0,14,1,32.64506,0,45.52535,0,0,78.17041,0,0,0,1,1,5,89.9,27.6,1,58,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,58,9.521729,1.609438,4.358891,1 +7,2,25,0,2,226087,0,13652.2,56.14305,0,14,1,224.6997,30.96588,0,0,0,255.6655,0,0,0,7,0,5,89.9,27.6,1,58,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,58,9.521729,1.609438,5.54387,1 +7,2,25,0,3,226087,0,13652.2,57.14305,0,14,1,71.69604,36.01762,41.7533,0,0,149.467,0,0,0,3,1,5,89.9,27.6,1,58,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,58,9.521729,1.609438,5.007075,1 +7,2,25,0,4,226087,0,13652.2,58.14305,0,14,1,11.59274,31.97581,0,0,0,43.56855,0,0,0,1,0,5,89.9,27.6,1,58,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,58,9.521729,1.609438,3.774336,1 +7,2,25,0,5,226087,0,13652.2,59.14305,0,14,1,45.17304,48.6521,33.79964,0,0,127.6248,0,0,0,1,1,5,89.9,27.6,1,58,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,58,9.521729,1.609438,4.849094,1 +7,2,25,0,1,226088,0,13652.2,13.08145,1,12,1,18.29587,0,18.29587,0,0,36.59174,0,0,0,1,0,5,93.3,11.84267,1,88.9,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,88.9,9.521729,1.609438,3.599823,1 +7,2,25,0,2,226088,0,13652.2,14.08145,1,12,1,64.99279,7.063911,3.925997,0,0,75.9827,0,0,0,3,0,5,93.3,11.84267,1,88.9,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,88.9,9.521729,1.609438,4.330506,1 +7,2,25,0,3,226088,0,13652.2,15.08145,1,12,1,42.07048,0,14.44053,0,0,56.51101,0,0,0,2,0,5,93.3,11.84267,1,88.9,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,88.9,9.521729,1.609438,4.034436,1 +7,2,25,0,4,226088,0,13652.2,16.08145,1,12,1,25,7.66129,0,0,0,32.66129,0,0,0,2,0,5,93.3,11.84267,1,88.9,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,88.9,9.521729,1.609438,3.486191,1 +7,2,25,0,5,226088,0,13652.2,17.08145,1,12,1,66.68488,8.608378,15.61384,0,0,90.9071,0,0,0,4,0,5,93.3,11.84267,1,88.9,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,0,0,0,88.9,9.521729,1.609438,4.509838,1 +7,2,25,0,1,226089,0,13652.2,48.99384,1,12,1,230.3973,112.07,58.69838,0,0,401.1657,0,0,0,9,0,5,83,31,1,63.6,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,63.6,9.521729,1.609438,5.994375,1 +7,2,25,0,2,226089,0,13652.2,49.99384,1,12,1,106.9197,105.1081,15.75204,0,0,227.7799,0,0,0,4,0,5,83,31,1,63.6,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,63.6,9.521729,1.609438,5.42838,1 +7,2,25,0,3,226089,0,13652.2,50.99384,1,12,1,39.64758,53.68723,45.59472,0,0,138.9295,0,0,0,3,0,5,83,31,1,63.6,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,63.6,9.521729,1.609438,4.933967,1 +7,2,25,0,4,226089,0,13652.2,51.99384,1,12,1,42.74194,74.81855,0,0,0,117.5605,0,0,0,2,0,5,83,31,1,63.6,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,63.6,9.521729,1.609438,4.766953,1 +7,2,25,0,5,226089,0,13652.2,52.99384,1,12,1,51.73042,89.10747,15.61384,0,0,156.4517,0,0,0,2,0,5,83,31,1,63.6,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,63.6,9.521729,1.609438,5.052748,1 +7,2,25,0,1,226090,0,13652.2,10.49692,0,12,1,40.25092,30.73706,32.97961,0,0,103.9676,0,0,0,3,0,5,88.3,11.84267,1,92.6,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,92.6,9.521729,1.609438,4.644079,1 +7,2,25,0,2,226090,0,13652.2,11.49692,0,12,1,55.74243,14.89668,0,0,0,70.63911,0,0,0,4,0,5,88.3,11.84267,1,92.6,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,92.6,9.521729,1.609438,4.257584,1 +7,2,25,0,3,226090,0,13652.2,12.49692,0,12,1,40.52863,11.06167,39.02203,0,0,90.61234,0,0,0,2,0,5,88.3,11.84267,1,92.6,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,92.6,9.521729,1.609438,4.50659,1 +7,2,25,0,4,226090,0,13652.2,13.49692,0,12,1,80.84677,45.19355,0,0,0,126.0403,0,0,0,7,0,5,88.3,11.84267,1,92.6,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,92.6,9.521729,1.609438,4.836602,1 +7,2,25,0,5,226090,0,13652.2,14.49692,0,12,1,42.98725,44.62659,33.83607,0,0,121.4499,0,0,0,3,0,5,88.3,11.84267,1,92.6,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,1,0,92.6,9.521729,1.609438,4.799502,1 +7,2,25,0,1,226091,0,13652.2,14.15469,1,12,1,25.61422,20.77888,33.24621,0,0,79.63931,0,0,0,2,0,5,88.3,13.8,1,56,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,56,9.521729,1.609438,4.377508,1 +7,2,25,0,2,226091,0,13652.2,15.15469,1,12,1,41.32629,14.36809,0,0,0,55.69438,0,0,0,2,0,5,88.3,13.8,1,56,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,56,9.521729,1.609438,4.019879,1 +7,2,25,0,3,226091,0,13652.2,16.15469,1,12,1,17.62115,12.00441,14.44053,0,0,44.06608,0,0,0,1,0,5,88.3,13.8,1,56,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,56,9.521729,1.609438,3.78569,1 +7,2,25,0,4,226091,0,13652.2,17.15469,1,12,1,18.14516,14.91935,0,0,0,33.06452,0,0,0,1,0,5,88.3,13.8,1,56,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,56,9.521729,1.609438,3.498461,1 +7,2,25,0,5,226091,0,13652.2,18.15469,1,12,1,26.95811,28.29508,29.35519,0,0,84.60838,0,0,0,3,0,5,88.3,13.8,1,56,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,56,9.521729,1.609438,4.438033,1 +18,2,25,1,1,226098,0,7165.396,36.45996,0,12,1,0,2.600104,0,0,0,2.600104,0,0,0,0,0,2,76.6,3.4,0,76.1,744,744,0,0,.6931472,6.612041,0,3.258096,7.998335,0,0,0,76.1,8.877158,.6931472,.9555515,1 +18,2,25,1,2,226098,0,7165.396,37.45996,0,12,1,89.58433,0,0,0,0,89.58433,0,0,0,2,0,2,76.6,3.4,0,76.1,744,744,0,0,.6931472,6.612041,0,3.258096,7.998335,0,0,0,76.1,8.877158,.6931472,4.495181,1 +18,2,25,1,3,226098,0,7165.396,38.45996,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,76.6,3.4,0,76.1,744,744,0,0,.6931472,6.612041,0,3.258096,7.998335,0,0,0,76.1,8.877158,.6931472,,0 +15,2,95,1,1,226099,0,4052.463,22.55989,1,12,1,13.3833,3.035332,0,0,626.0974,642.5161,1,0,0,1,0,1,83.5,17.2,1,65.9,297.5,154.88,0,0,0,5.042651,0,4.564348,5.746707,0,0,0,65.9,8.307327,0,6.465392,1 +15,2,95,1,2,226099,0,4052.463,23.55989,1,12,1,8.784773,12.25964,0,0,0,21.04441,0,0,0,1,0,1,83.5,17.2,1,65.9,297.5,154.88,0,0,0,5.042651,0,4.564348,5.746707,0,0,0,65.9,8.307327,0,3.046635,1 +15,2,95,1,3,226099,0,4052.463,24.55989,1,12,1,15.80849,0,38.74435,0,0,54.55285,0,0,0,1,1,1,83.5,17.2,1,65.9,297.5,154.88,0,0,0,5.042651,0,4.564348,5.746707,0,0,0,65.9,8.307327,0,3.99917,1 +15,2,95,1,1,226100,0,8665.641,23.18686,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,64.4,10.3,0,62.5,249.5,249.5,0,0,0,5.519459,0,4.564348,5.570752,0,0,0,62.5,9.067237,0,,0 +15,2,95,1,2,226100,0,8665.641,24.18686,0,14,1,0,0,0,0,0,0,0,0,0,0,0,2,64.4,10.3,0,62.5,249.5,249.5,0,0,.6931472,5.519459,0,4.564348,5.570752,0,0,0,62.5,9.067237,.6931472,,0 +15,2,95,1,3,226100,0,8665.641,25.18686,0,14,1,0,0,0,0,0,0,0,0,0,0,0,2,64.4,10.3,0,62.5,249.5,249.5,0,0,.6931472,5.519459,0,4.564348,5.570752,0,0,0,62.5,9.067237,.6931472,,0 +7,2,25,1,1,226121,0,6541.349,22.28611,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,78.2,6.9,0,90.9,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,90.9,8.786052,1.098612,,0 +7,2,25,1,2,226121,0,6541.349,23.28611,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.2,6.9,0,90.9,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,90.9,8.786052,1.386294,,0 +7,2,25,1,3,226121,0,6541.349,24.28611,0,12,1,30.08204,6.144029,0,0,0,36.22607,0,0,0,3,0,4,78.2,6.9,0,90.9,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,90.9,8.786052,1.386294,3.589779,1 +7,2,25,1,1,226122,0,6541.349,20.63518,1,12,1,10.24259,5.09434,0,0,584.2048,599.5418,1,0,0,0,0,3,77.7,6.9,0,79.5,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,79.5,8.786052,1.098612,6.396166,1 +7,2,25,1,2,226122,0,6541.349,21.63518,1,12,1,57.98526,16.69287,52.83047,0,0,127.5086,0,0,0,3,0,4,77.7,6.9,0,79.5,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,79.5,8.786052,1.386294,4.848184,1 +7,2,25,1,3,226122,0,6541.349,22.63518,1,12,1,53.21331,5.259799,0,0,0,58.47311,0,0,0,2,0,4,77.7,6.9,0,79.5,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,79.5,8.786052,1.386294,4.068567,1 +7,2,25,1,1,226123,0,6541.349,.678987,1,12,1,37.19677,0,0,0,0,37.19677,0,0,0,3,0,3,81.35272,11.84267,0,100,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,100,8.786052,1.098612,3.616222,1 +7,2,25,1,2,226123,0,6541.349,1.678987,1,12,1,22.60442,0,0,0,0,22.60442,0,0,0,3,0,4,81.35272,11.84267,0,100,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,100,8.786052,1.386294,3.118146,1 +7,2,25,1,3,226123,0,6541.349,2.678987,1,12,1,10.02735,0,0,0,0,10.02735,0,0,0,1,0,4,81.35272,11.84267,0,100,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,100,8.786052,1.386294,2.305316,1 +13,2,0,1,1,226128,0,6354.252,16.25188,1,14,1,74.94646,11.8576,0,0,0,86.80407,0,0,0,5,0,3,68.6,3.4,0,84.1,450,0,1,1,1.098612,0,1,4.564348,6.160541,0,0,1,84.1,8.757037,1.098612,4.463654,1 +13,2,0,1,2,226128,0,6354.252,17.25188,1,14,1,114.6901,27.19863,0,0,756.1494,898.0381,1,0,0,4,0,2,68.6,3.4,0,84.1,450,0,1,1,.6931472,0,1,4.564348,6.160541,0,0,1,84.1,8.757037,.6931472,6.800212,1 +13,2,0,1,3,226128,0,6354.252,18.25188,1,14,1,64.09214,3.477868,0,0,0,67.57001,0,0,0,3,0,2,68.6,3.4,0,84.1,450,0,0,0,.6931472,0,1,4.564348,6.160541,0,0,1,84.1,8.757037,.6931472,4.213164,1 +13,2,0,1,1,226129,0,6354.252,16.25188,0,14,1,0,0,0,0,0,0,0,0,0,0,0,3,64.9,6.9,0,75,450,0,1,0,1.098612,0,1,4.564348,6.160541,0,0,0,75,8.757037,1.098612,,0 +13,2,0,1,1,226130,0,6354.252,45.89185,1,14,1,303.8008,36.16167,0,0,0,339.9625,0,0,0,8,0,3,79.3,13.8,0,98.9,450,0,0,0,1.098612,0,1,4.564348,6.160541,1,0,0,98.9,8.757037,1.098612,5.828835,1 +13,2,0,1,2,226130,0,6354.252,46.89185,1,14,1,338.2528,35.87115,45.67594,0,0,419.7999,0,0,0,8,1,2,79.3,13.8,0,98.9,450,0,0,0,.6931472,0,1,4.564348,6.160541,1,0,0,98.9,8.757037,.6931472,6.039778,1 +13,2,0,1,3,226130,0,6354.252,47.89185,1,14,1,153.5682,52.37127,0,0,0,205.9395,0,0,0,5,0,2,79.3,13.8,0,98.9,450,0,0,0,.6931472,0,1,4.564348,6.160541,1,0,0,98.9,8.757037,.6931472,5.327582,1 +11,2,0,0,1,226189,0,8665.641,55.83025,0,16,1,221.3597,16.0439,43.01392,0,0,280.4176,0,0,0,2,11,3,74.5,17.2,1,69.3,0,649.2,0,0,1.098612,6.475741,0,0,0,1,0,0,69.3,9.067237,1.098612,5.63628,1 +11,2,0,0,2,226189,0,8665.641,56.83025,0,16,1,235.7247,41.88385,0,0,0,277.6086,0,0,0,6,0,3,74.5,17.2,1,69.3,0,649.2,0,0,1.098612,6.475741,0,0,0,1,0,0,69.3,9.067237,1.098612,5.626212,1 +11,2,0,0,3,226189,0,8665.641,57.83025,0,16,1,308.0397,173.9115,41.88347,0,0,523.8347,0,0,0,13,6,3,74.5,17.2,1,69.3,0,649.2,0,0,1.098612,6.475741,0,0,0,1,0,0,69.3,9.067237,1.098612,6.261176,1 +11,2,0,0,1,226190,0,8665.641,53.15811,1,12,1,31.58458,0,46.16702,0,0,77.75161,0,0,0,2,0,3,77.1,20.7,1,64.8,0,649.2,0,0,1.098612,6.475741,0,0,0,1,0,0,64.8,9.067237,1.098612,4.353519,1 +11,2,0,0,2,226190,0,8665.641,54.15811,1,12,1,10.73695,0,0,0,0,10.73695,0,0,0,1,0,3,77.1,20.7,1,64.8,0,649.2,0,0,1.098612,6.475741,0,0,0,1,0,0,64.8,9.067237,1.098612,2.373691,1 +11,2,0,0,3,226190,0,8665.641,55.15811,1,12,1,148.1481,14.28184,42.35772,0,0,204.7877,0,0,0,5,0,3,77.1,20.7,1,64.8,0,649.2,0,0,1.098612,6.475741,0,0,0,1,0,0,64.8,9.067237,1.098612,5.321974,1 +11,2,0,0,1,226191,0,8665.641,12.04107,1,12,1,47.64454,4.116703,0,0,0,51.76124,0,0,0,6,0,3,88.3,11.84267,0,96.3,0,649.2,1,1,1.098612,6.475741,0,0,0,0,0,0,96.3,9.067237,1.098612,3.946642,1 +11,2,0,0,2,226191,0,8665.641,13.04107,1,12,1,125.427,24.21181,0,0,0,149.6389,0,0,0,8,0,3,88.3,11.84267,0,96.3,0,649.2,1,1,1.098612,6.475741,0,0,0,0,0,0,96.3,9.067237,1.098612,5.008225,1 +11,2,0,0,3,226191,0,8665.641,14.04107,1,12,1,96.88347,7.439024,33.77597,0,0,138.0985,0,0,0,6,0,3,88.3,11.84267,0,96.3,0,649.2,1,1,1.098612,6.475741,0,0,0,0,0,0,96.3,9.067237,1.098612,4.927967,1 +11,2,0,0,1,226211,0,21330.21,45.39357,1,12,1,84.35338,185.0772,56.67376,0,0,326.1043,0,0,0,6,0,5,90.4,13.8,0,77.3,0,27,0,0,1.609438,3.295837,0,0,0,1,0,0,77.3,9.967926,1.609438,5.787217,1 +11,2,0,0,2,226211,0,21330.21,46.39357,1,12,1,83.37373,162.9859,0,0,0,246.3597,0,0,0,7,0,5,90.4,13.8,0,77.3,0,27,0,0,1.609438,3.295837,0,0,0,1,0,0,77.3,9.967926,1.609438,5.506793,1 +11,2,0,0,3,226211,0,21330.21,47.39357,1,12,1,37.96047,80.39084,0,0,0,118.3513,0,0,0,5,0,5,90.4,13.8,0,77.3,0,27,0,0,1.609438,3.295837,0,0,0,1,0,0,77.3,9.967926,1.609438,4.773657,1 +11,2,0,0,4,226211,0,21330.21,48.39357,1,12,1,91.34181,63.86951,75.59705,0,0,230.8084,0,0,0,10,0,5,90.4,13.8,0,77.3,0,27,0,0,1.609438,3.295837,0,0,0,1,0,0,77.3,9.967926,1.609438,5.441588,1 +11,2,0,0,5,226211,0,21330.21,49.39357,1,12,1,80.54324,90.13304,.9238729,0,0,171.6001,0,0,0,10,0,5,90.4,13.8,0,77.3,0,27,0,0,1.609438,3.295837,0,0,0,1,0,0,77.3,9.967926,1.609438,5.145167,1 +11,2,0,0,1,226212,0,21330.21,11.29363,0,12,1,6.120277,.798297,0,0,0,6.918574,0,0,0,1,0,5,86.7,11.84267,0,85.2,0,27,1,0,1.609438,3.295837,0,0,0,0,0,0,85.2,9.967926,1.609438,1.93421,1 +11,2,0,0,2,226212,0,21330.21,12.29363,0,12,1,6.059137,2.326709,0,0,0,8.385846,0,0,0,1,0,5,86.7,11.84267,0,85.2,0,27,1,0,1.609438,3.295837,0,0,0,0,0,0,85.2,9.967926,1.609438,2.126545,1 +11,2,0,0,3,226212,0,21330.21,13.29363,0,12,1,6.513927,0,0,0,0,6.513927,0,0,0,1,0,5,86.7,11.84267,0,85.2,0,27,1,0,1.609438,3.295837,0,0,0,0,0,0,85.2,9.967926,1.609438,1.873942,1 +11,2,0,0,4,226212,0,21330.21,14.29363,0,12,1,22.97907,4.883053,0,0,0,27.86213,0,0,0,2,0,5,86.7,11.84267,0,85.2,0,27,1,0,1.609438,3.295837,0,0,0,0,0,0,85.2,9.967926,1.609438,3.327268,1 +11,2,0,0,5,226212,0,21330.21,15.29363,0,12,1,25.49889,22.30229,0,0,0,47.80118,0,0,0,3,0,5,86.7,11.84267,0,85.2,0,27,1,0,1.609438,3.295837,0,0,0,0,0,0,85.2,9.967926,1.609438,3.86705,1 +11,2,0,0,1,226213,0,21330.21,16.53662,0,12,1,17.56253,3.991485,0,0,0,21.55402,0,0,0,1,0,5,91.5,0,0,72.7,0,27,1,0,1.609438,3.295837,0,0,0,0,0,0,72.7,9.967926,1.609438,3.070562,1 +11,2,0,0,2,226213,0,21330.21,17.53662,0,12,1,0,1.357247,0,0,0,1.357247,0,0,0,0,0,5,91.5,0,0,72.7,0,27,1,0,1.609438,3.295837,0,0,0,0,0,0,72.7,9.967926,1.609438,.3054582,1 +11,2,0,0,3,226213,0,21330.21,18.53662,0,12,1,15.94789,0,0,0,0,15.94789,0,0,0,1,0,5,91.5,0,0,72.7,0,27,0,0,1.609438,3.295837,0,0,0,0,0,0,72.7,9.967926,1.609438,2.769326,1 +11,2,0,0,4,226213,0,21330.21,19.53662,0,12,1,111.6537,4.123923,.4103406,0,0,116.1879,0,0,0,4,0,5,91.5,0,0,72.7,0,27,0,0,1.609438,3.295837,0,0,0,0,0,0,72.7,9.967926,1.609438,4.755209,1 +11,2,0,0,5,226213,0,21330.21,20.53662,0,12,1,36.95491,4.748706,.3880266,0,0,42.09165,0,0,0,4,0,5,91.5,0,0,72.7,0,27,0,0,1.609438,3.295837,0,0,0,0,0,0,72.7,9.967926,1.609438,3.739849,1 +11,2,0,0,1,226214,0,21330.21,48.30116,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,90.4,6.9,0,77.3,0,27,0,0,1.609438,3.295837,0,0,0,0,0,0,77.3,9.967926,1.609438,,0 +11,2,0,0,2,226214,0,21330.21,49.30116,0,12,1,16.96558,0,44.3238,0,0,61.28938,0,0,0,1,0,5,90.4,6.9,0,77.3,0,27,0,0,1.609438,3.295837,0,0,0,0,0,0,77.3,9.967926,1.609438,4.115607,1 +11,2,0,0,3,226214,0,21330.21,50.30116,0,12,1,14.37556,7.884097,0,0,0,22.25966,0,0,0,0,2,5,90.4,6.9,0,77.3,0,27,0,0,1.609438,3.295837,0,0,0,0,0,0,77.3,9.967926,1.609438,3.102776,1 +11,2,0,0,4,226214,0,21330.21,51.30116,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,90.4,6.9,0,77.3,0,27,0,0,1.609438,3.295837,0,0,0,0,0,0,77.3,9.967926,1.609438,,0 +11,2,0,0,5,226214,0,21330.21,52.30116,0,12,1,84.88544,11.32668,46.09386,0,0,142.306,0,0,0,5,0,5,90.4,6.9,0,77.3,0,27,0,0,1.609438,3.295837,0,0,0,0,0,0,77.3,9.967926,1.609438,4.95798,1 +11,2,0,0,1,226215,0,21330.21,20.13963,1,13,1,58.54178,27.73816,40.57478,0,0,126.8547,0,0,0,6,0,5,89.9,6.9,0,70.5,0,27,0,0,1.609438,3.295837,0,0,0,0,0,0,70.5,9.967926,1.609438,4.843042,1 +11,2,0,0,2,226215,0,21330.21,21.13963,1,13,1,226.5148,42.18614,5.681047,0,0,274.382,0,0,0,17,0,5,89.9,6.9,0,70.5,0,27,0,0,1.609438,3.295837,0,0,0,0,0,0,70.5,9.967926,1.609438,5.614521,1 +11,2,0,0,3,226215,0,21330.21,22.13963,1,13,1,118.1491,11.37916,0,67.38544,0,129.5283,0,0,3,7,0,5,89.9,6.9,0,70.5,0,27,0,0,1.609438,3.295837,0,0,0,0,0,0,70.5,9.967926,1.609438,4.863899,1 +11,2,0,0,4,226215,0,21330.21,23.13963,1,13,1,90.7263,13.91055,36.67624,0,0,141.3131,0,0,0,6,0,5,89.9,6.9,0,70.5,0,27,0,0,1.609438,3.295837,0,0,0,0,0,0,70.5,9.967926,1.609438,4.950978,1 +11,2,0,0,5,226215,0,21330.21,24.13963,1,13,1,171.7664,19.7524,28.78788,0,0,220.3067,0,0,0,7,0,5,89.9,6.9,0,70.5,0,27,0,0,1.609438,3.295837,0,0,0,0,0,0,70.5,9.967926,1.609438,5.395021,1 +14,2,95,1,1,226220,0,8665.641,32.87885,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,72.3,13.8,0,83,426,0,0,0,1.386294,0,0,4.564348,6.105732,0,0,0,83,9.067237,1.386294,,0 +14,2,95,1,2,226220,0,8665.641,33.87885,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,72.3,13.8,0,83,426,0,0,0,1.386294,0,0,4.564348,6.105732,0,0,0,83,9.067237,1.386294,,0 +14,2,95,1,3,226220,0,8665.641,34.87885,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,72.3,13.8,0,83,426,0,0,0,1.386294,0,0,4.564348,6.105732,0,0,0,83,9.067237,1.386294,,0 +14,2,95,1,4,226220,0,8665.641,35.87885,0,14,1,32.93039,0,0,0,0,32.93039,0,0,0,2,0,4,72.3,13.8,0,83,426,0,0,0,1.386294,0,0,4.564348,6.105732,0,0,0,83,9.067237,1.386294,3.494396,1 +14,2,95,1,5,226220,0,8665.641,36.87885,0,14,1,5.20255,2.483121,0,0,0,7.685671,0,0,0,0,1,4,72.3,13.8,0,83,426,0,0,0,1.386294,0,0,4.564348,6.105732,0,0,0,83,9.067237,1.386294,2.039358,1 +14,2,95,1,1,226221,0,8665.641,6.551677,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,73.3,11.84267,0,100,426,0,1,1,1.386294,0,0,4.564348,6.105732,0,0,0,100,9.067237,1.386294,,0 +14,2,95,1,2,226221,0,8665.641,7.551677,1,13,1,262.3096,0,0,0,0,262.3096,0,0,0,3,0,4,73.3,11.84267,0,100,426,0,1,1,1.386294,0,0,4.564348,6.105732,0,0,0,100,9.067237,1.386294,5.569525,1 +14,2,95,1,3,226221,0,8665.641,8.551677,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,73.3,11.84267,0,100,426,0,1,1,1.386294,0,0,4.564348,6.105732,0,0,0,100,9.067237,1.386294,,0 +14,2,95,1,4,226221,0,8665.641,9.551677,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,73.3,11.84267,0,100,426,0,1,1,1.386294,0,0,4.564348,6.105732,0,0,0,100,9.067237,1.386294,,0 +14,2,95,1,5,226221,0,8665.641,10.55168,1,13,1,7.501875,0,0,0,0,7.501875,0,0,0,1,0,4,73.3,11.84267,0,100,426,0,1,1,1.386294,0,0,4.564348,6.105732,0,0,0,100,9.067237,1.386294,2.015153,1 +14,2,95,1,1,226222,0,8665.641,4.232718,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,100,426,0,1,1,1.386294,0,0,4.564348,6.105732,0,0,0,100,9.067237,1.386294,,0 +14,2,95,1,2,226222,0,8665.641,5.232718,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,100,426,0,1,1,1.386294,0,0,4.564348,6.105732,0,0,0,100,9.067237,1.386294,,0 +14,2,95,1,3,226222,0,8665.641,6.232718,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,100,426,0,1,1,1.386294,0,0,4.564348,6.105732,0,0,0,100,9.067237,1.386294,,0 +14,2,95,1,4,226222,0,8665.641,7.232718,1,13,1,20.42518,3.167987,0,0,0,23.59316,0,0,0,2,0,4,81.35272,11.84267,0,100,426,0,1,1,1.386294,0,0,4.564348,6.105732,0,0,0,100,9.067237,1.386294,3.160957,1 +14,2,95,1,5,226222,0,8665.641,8.232718,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,100,426,0,1,1,1.386294,0,0,4.564348,6.105732,0,0,0,100,9.067237,1.386294,,0 +14,2,95,1,1,226223,0,8665.641,32.36687,1,13,1,8.894878,0,0,0,0,8.894878,0,0,0,1,0,4,84,13.8,0,75,426,0,0,0,1.386294,0,0,4.564348,6.105732,0,0,0,75,9.067237,1.386294,2.185476,1 +14,2,95,1,2,226223,0,8665.641,33.36687,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,84,13.8,0,75,426,0,0,0,1.386294,0,0,4.564348,6.105732,0,0,0,75,9.067237,1.386294,,0 +14,2,95,1,3,226223,0,8665.641,34.36687,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,84,13.8,0,75,426,0,0,0,1.386294,0,0,4.564348,6.105732,0,0,0,75,9.067237,1.386294,,0 +14,2,95,1,4,226223,0,8665.641,35.36687,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,84,13.8,0,75,426,0,0,0,1.386294,0,0,4.564348,6.105732,0,0,0,75,9.067237,1.386294,,0 +14,2,95,1,5,226223,0,8665.641,36.36687,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,84,13.8,0,75,426,0,0,0,1.386294,0,0,4.564348,6.105732,0,0,0,75,9.067237,1.386294,,0 +11,2,0,0,1,226239,0,11449.27,24.27926,1,15,1,25.43906,20.64928,0,0,0,46.08834,0,0,0,2,0,2,86.2,6.9,0,83,0,0,0,0,.6931472,0,0,0,0,1,0,0,83,9.345768,.6931472,3.83056,1 +11,2,0,0,2,226239,0,11449.27,25.27926,1,15,1,60.59137,15.11876,0,0,0,75.71013,0,0,0,1,8,2,86.2,6.9,0,83,0,0,0,0,.6931472,0,0,0,0,1,0,0,83,9.345768,.6931472,4.326912,1 +11,2,0,0,3,226239,0,11449.27,26.27926,1,15,1,200.1348,2.511231,36.60826,0,1019.16,1258.414,1,0,0,4,15,2,86.2,6.9,0,83,0,0,0,0,.6931472,0,0,0,0,1,0,0,83,9.345768,.6931472,7.137608,1 +11,2,0,0,4,226239,0,11449.27,27.27926,1,15,1,142.7985,6.877308,0,0,0,149.6758,0,0,0,3,16,3,86.2,6.9,0,83,0,0,0,0,1.098612,0,0,0,0,1,0,0,83,9.345768,1.098612,5.008472,1 +11,2,0,0,5,226239,0,11449.27,28.27926,1,15,1,76.68145,3.252033,0,0,1115.484,1195.418,1,0,0,0,9,3,86.2,6.9,0,83,0,0,0,0,1.098612,0,0,0,0,1,0,0,83,9.345768,1.098612,7.086251,1 +11,2,0,0,1,226240,0,11449.27,27.6167,0,17,1,54.81639,0,0,0,0,54.81639,0,0,0,2,0,2,79.3,3.4,0,65.9,0,0,0,0,.6931472,0,0,0,0,0,0,0,65.9,9.345768,.6931472,4.003989,1 +11,2,0,0,2,226240,0,11449.27,28.6167,0,17,1,101.3088,7.523025,0,0,0,108.8318,0,0,0,3,7,2,79.3,3.4,0,65.9,0,0,0,0,.6931472,0,0,0,0,0,0,0,65.9,9.345768,.6931472,4.689804,1 +11,2,0,0,3,226240,0,11449.27,29.6167,0,17,1,102.9874,0,0,0,0,102.9874,0,0,0,1,7,2,79.3,3.4,0,65.9,0,0,0,0,.6931472,0,0,0,0,0,0,0,65.9,9.345768,.6931472,4.634607,1 +11,2,0,0,4,226240,0,11449.27,30.6167,0,17,1,108.7403,0,0,0,0,108.7403,0,0,0,1,15,3,79.3,3.4,0,65.9,0,0,0,0,1.098612,0,0,0,0,0,0,0,65.9,9.345768,1.098612,4.688962,1 +11,2,0,0,5,226240,0,11449.27,31.6167,0,17,1,109.2018,0,0,0,0,109.2018,0,0,0,2,6,3,79.3,3.4,0,65.9,0,0,0,0,1.098612,0,0,0,0,0,0,0,65.9,9.345768,1.098612,4.693197,1 +13,2,0,1,1,226248,0,9796.48,24.50924,1,15,1,14.29328,0,0,0,0,14.29328,0,0,0,1,0,2,79.8,20.7,0,90.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,90.9,9.18988,.6931472,2.659789,1 +13,2,0,1,2,226248,0,9796.48,25.50924,1,15,1,21.23552,11.3417,35.71429,0,0,68.2915,0,0,0,1,1,2,79.8,20.7,0,90.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,90.9,9.18988,.6931472,4.223785,1 +13,2,0,1,3,226248,0,9796.48,26.50924,1,15,1,40.94348,6.987094,0,0,521.6733,569.6039,1,0,0,1,0,2,79.8,20.7,0,90.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,90.9,9.18988,.6931472,6.344941,1 +13,2,0,1,4,226248,0,9796.48,27.50924,1,15,1,15.98211,16.02277,0,0,0,32.00488,0,0,0,1,0,3,79.8,20.7,0,90.9,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,90.9,9.18988,1.098612,3.465888,1 +13,2,0,1,5,226248,0,9796.48,28.50924,1,15,1,73.68035,23.75,30.05865,0,9379.772,9507.262,2,0,0,6,1,3,79.8,20.7,0,90.9,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,90.9,9.18988,1.098612,9.159811,1 +13,2,0,1,1,226249,0,9796.48,25.51129,0,15,1,5.293806,2.038116,0,0,0,7.331922,0,0,0,1,0,2,86.7,3.4,0,70.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,70.5,9.18988,.6931472,1.992238,1 +13,2,0,1,2,226249,0,9796.48,26.51129,0,15,1,46.33205,0,0,0,0,46.33205,0,0,0,4,0,2,86.7,3.4,0,70.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,70.5,9.18988,.6931472,3.835834,1 +13,2,0,1,3,226249,0,9796.48,27.51129,0,15,1,58.96751,2.00267,0,0,0,60.97018,0,0,0,2,0,2,86.7,3.4,0,70.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,70.5,9.18988,.6931472,4.110385,1 +13,2,0,1,4,226249,0,9796.48,28.51129,0,15,1,6.10004,0,0,0,0,6.10004,0,0,0,1,0,3,86.7,3.4,0,70.5,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,70.5,9.18988,1.098612,1.808295,1 +13,2,0,1,5,226249,0,9796.48,29.51129,0,15,1,56.26833,0,0,0,0,56.26833,0,0,0,3,0,3,86.7,3.4,0,70.5,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,70.5,9.18988,1.098612,4.030132,1 +13,2,0,1,1,226261,0,5978.299,27.49897,0,12,1,13.83715,2.751464,0,0,0,16.58861,0,0,0,1,0,2,73.4,3.4,0,77.4,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,77.4,8.696058,.6931472,2.808716,1 +13,2,0,1,2,226261,0,5978.299,28.49897,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.4,3.4,0,77.4,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,77.4,8.696058,.6931472,,0 +13,2,0,1,3,226261,0,5978.299,29.49897,0,12,1,20.21563,1.334232,0,0,0,21.54987,0,0,0,1,0,2,73.4,3.4,0,77.4,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,77.4,8.696058,.6931472,3.070369,1 +13,2,0,1,1,226262,0,5978.299,27.34018,1,12,1,43.90633,15.70516,0,0,0,59.6115,0,0,0,2,0,2,78.2,17.2,0,64.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,64.8,8.696058,.6931472,4.087849,1 +13,2,0,1,2,226262,0,5978.299,28.34018,1,12,1,92.09888,3.829375,0,0,0,95.92826,0,0,0,5,0,2,78.2,17.2,0,64.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,64.8,8.696058,.6931472,4.563601,1 +13,2,0,1,3,226262,0,5978.299,29.34018,1,12,1,142.1833,0,0,0,0,142.1833,0,0,0,8,0,2,78.2,17.2,0,64.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,64.8,8.696058,.6931472,4.957117,1 +13,2,0,1,1,226281,0,11672.14,52.04928,1,12,1,81.42629,23.38478,60.42576,0,0,165.2368,0,0,0,16,0,2,81.9,3.4,0,93.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,93.2,9.365046,.6931472,5.10738,1 +13,2,0,1,2,226281,0,11672.14,53.04928,1,12,1,11.63354,5.487154,0,0,0,17.1207,0,0,0,3,0,2,81.9,3.4,0,93.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,93.2,9.365046,.6931472,2.840288,1 +13,2,0,1,3,226281,0,11672.14,54.04928,1,12,1,122.3046,3.993711,69.51033,0,0,195.8086,0,0,0,6,0,2,81.9,3.4,0,93.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,93.2,9.365046,.6931472,5.277138,1 +13,2,0,1,1,226282,0,11672.14,48.86516,0,14,1,57.74348,27.38159,0,0,0,85.12507,0,0,0,12,0,2,92.6,10.3,0,81.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,81.8,9.365046,.6931472,4.444121,1 +13,2,0,1,2,226282,0,11672.14,49.86516,0,14,1,37.80902,30.77557,0,0,0,68.58459,0,0,0,6,0,2,92.6,10.3,0,81.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,81.8,9.365046,.6931472,4.228068,1 +13,2,0,1,3,226282,0,11672.14,50.86516,0,14,1,10.78167,3.324349,0,0,0,14.10602,0,0,0,3,0,2,92.6,10.3,0,81.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,81.8,9.365046,.6931472,2.646602,1 +11,2,0,1,1,226326,0,1,3.19781,0,13,1,55.88079,32.82065,0,0,0,88.70144,0,0,0,7,0,4,81.35272,11.84267,0,63,0,0,1,0,1.386294,0,0,0,0,0,0,0,63,.6931472,1.386294,4.485276,1 +11,2,0,1,2,226326,0,1,4.19781,0,13,1,55.28357,16.81047,0,0,0,72.09404,0,0,0,5,1,5,81.35272,11.84267,0,63,0,0,1,0,1.609438,0,0,0,0,0,0,0,63,.6931472,1.609438,4.277971,1 +11,2,0,1,3,226326,0,1,5.19781,0,13,1,60.87152,4.725966,0,0,0,65.59748,0,0,0,4,1,5,81.35272,11.84267,0,63,0,0,1,0,1.609438,0,0,0,0,0,0,0,63,.6931472,1.609438,4.183537,1 +11,2,0,1,1,226327,0,1,25.16906,0,14,1,22.83129,11.90527,0,0,0,34.73656,0,0,0,3,0,4,44.7,6.9,0,63.6,0,0,0,0,1.386294,0,0,0,0,1,0,0,63.6,.6931472,1.386294,3.547793,1 +11,2,0,1,2,226327,0,1,26.16906,0,14,1,13.3301,6.325739,0,0,0,19.65584,0,0,0,2,0,5,44.7,6.9,0,63.6,0,0,0,0,1.609438,0,0,0,0,1,0,0,63.6,.6931472,1.609438,2.978374,1 +11,2,0,1,3,226327,0,1,27.16906,0,14,1,0,2.35849,0,0,0,2.35849,0,0,0,0,0,5,44.7,6.9,0,63.6,0,0,0,0,1.609438,0,0,0,0,1,0,0,63.6,.6931472,1.609438,.8580218,1 +11,2,0,1,1,226328,0,1,1.793292,1,13,1,71.84673,8.610963,0,0,0,80.45769,0,0,0,8,0,4,81.35272,11.84267,0,55.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,55.6,.6931472,1.386294,4.387732,1 +11,2,0,1,2,226328,0,1,2.793292,1,13,1,97.30975,15.10422,0,0,0,112.414,0,0,0,9,1,5,81.35272,11.84267,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,55.6,.6931472,1.609438,4.722188,1 +11,2,0,1,3,226328,0,1,3.793292,1,13,1,58.71518,9.950584,0,0,0,68.66577,0,0,0,7,1,5,81.35272,11.84267,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,55.6,.6931472,1.609438,4.229251,1 +11,2,0,1,1,226329,0,1,23.74264,1,13,1,196.8866,109.7126,15.96594,0,742.0969,1064.662,1,0,0,8,6,4,50,17.2,0,44.3,0,0,0,0,1.386294,0,0,0,0,0,0,0,44.3,.6931472,1.386294,6.970413,1 +11,2,0,1,2,226329,0,1,24.74264,1,13,1,165.681,25.54532,0,9.694619,0,191.2264,0,0,1,11,9,5,50,17.2,0,44.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,44.3,.6931472,1.609438,5.253458,1 +11,2,0,1,3,226329,0,1,25.74264,1,13,1,127.7628,54.35759,17.96945,67.38544,670.6199,870.7098,1,0,4,7,11,5,50,17.2,0,44.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,44.3,.6931472,1.609438,6.769309,1 +11,2,0,1,1,226330,0,10835.19,32.96099,1,12,1,69.35225,34.41114,0,0,0,103.7634,0,0,0,4,0,4,77.1,17.2,0,68.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,68.2,9.290647,1.386294,4.642113,1 +11,2,0,1,2,226330,0,10835.19,33.96099,1,12,1,168.7164,7.115666,0,0,0,175.8321,0,0,0,5,0,4,77.1,17.2,0,68.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,68.2,9.290647,1.386294,5.169529,1 +11,2,0,1,3,226330,0,10835.19,34.96099,1,12,1,242.1635,46.01626,0,0,0,288.1798,0,0,0,14,1,4,77.1,17.2,0,68.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,68.2,9.290647,1.386294,5.663585,1 +11,2,0,1,4,226330,0,10835.19,35.96099,1,12,1,23.5732,13.68486,0,0,0,37.25806,0,0,0,2,0,4,77.1,17.2,0,68.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,68.2,9.290647,1.386294,3.617868,1 +11,2,0,1,5,226330,0,10835.19,36.96099,1,12,1,38.37556,26.97839,0,0,0,65.35395,0,0,0,5,0,4,77.1,17.2,0,68.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,68.2,9.290647,1.386294,4.179818,1 +11,2,0,1,1,226331,0,10835.19,33.16085,0,10,1,102.7837,0,36.18308,0,525.9368,664.9036,1,0,0,8,1,4,70.7,6.9,0,76.1,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.1,9.290647,1.386294,6.499642,1 +11,2,0,1,2,226331,0,10835.19,34.16085,0,10,1,172.4012,1.70327,.9760859,0,0,175.0805,0,0,0,4,0,4,70.7,6.9,0,76.1,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.1,9.290647,1.386294,5.165246,1 +11,2,0,1,3,226331,0,10835.19,35.16085,0,10,1,54.90063,8.888889,62.58356,0,0,126.3731,0,0,0,3,2,4,70.7,6.9,0,76.1,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.1,9.290647,1.386294,4.839239,1 +11,2,0,1,4,226331,0,10835.19,36.16085,0,10,1,54.17701,0,0,0,0,54.17701,0,0,0,0,4,4,70.7,6.9,0,76.1,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.1,9.290647,1.386294,3.992257,1 +11,2,0,1,5,226331,0,10835.19,37.16085,0,10,1,181.0209,6.71386,0,0,0,187.7347,0,0,0,3,6,4,70.7,6.9,0,76.1,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.1,9.290647,1.386294,5.23503,1 +11,2,0,1,1,226332,0,10835.19,6.822724,1,12,1,47.10921,3.297645,0,0,0,50.40685,0,0,0,5,0,4,70,11.84267,0,88.9,0,0,1,1,1.386294,0,0,0,0,0,0,0,88.9,9.290647,1.386294,3.920127,1 +11,2,0,1,2,226332,0,10835.19,7.822724,1,12,1,92.97218,15.78819,0,0,0,108.7604,0,0,0,7,1,4,70,11.84267,0,88.9,0,0,1,1,1.386294,0,0,0,0,0,0,0,88.9,9.290647,1.386294,4.689147,1 +11,2,0,1,3,226332,0,10835.19,8.822724,1,12,1,42.00542,3.292683,0,0,0,45.2981,0,0,0,3,1,4,70,11.84267,0,88.9,0,0,1,1,1.386294,0,0,0,0,0,0,0,88.9,9.290647,1.386294,3.813265,1 +11,2,0,1,4,226332,0,10835.19,9.822724,1,12,1,35.77337,1.393714,0,0,0,37.16708,0,0,0,2,1,4,70,11.84267,0,88.9,0,0,1,1,1.386294,0,0,0,0,0,0,0,88.9,9.290647,1.386294,3.615423,1 +11,2,0,1,5,226332,0,10835.19,10.82272,1,12,1,30.36513,0,0,0,0,30.36513,0,0,0,4,0,4,70,11.84267,0,88.9,0,0,1,1,1.386294,0,0,0,0,0,0,0,88.9,9.290647,1.386294,3.413295,1 +11,2,0,1,1,226333,0,10835.19,3.047228,1,12,1,49.25053,4.85546,0,0,0,54.106,0,0,0,5,0,4,81.35272,11.84267,0,70.4,0,0,1,1,1.386294,0,0,0,0,1,0,0,70.4,9.290647,1.386294,3.990945,1 +11,2,0,1,2,226333,0,10835.19,4.047228,1,12,1,144.2167,5.998048,0,0,0,150.2147,0,0,0,6,0,4,81.35272,11.84267,0,70.4,0,0,1,1,1.386294,0,0,0,0,1,0,0,70.4,9.290647,1.386294,5.012066,1 +11,2,0,1,3,226333,0,10835.19,5.047228,1,12,1,149.6161,31.57633,0,0,0,181.1924,0,0,0,11,1,4,81.35272,11.84267,0,70.4,0,0,1,1,1.386294,0,0,0,0,1,0,0,70.4,9.290647,1.386294,5.19956,1 +11,2,0,1,4,226333,0,10835.19,6.047228,1,12,1,119.7271,0,30.14061,0,0,149.8677,0,0,0,5,2,4,81.35272,11.84267,0,70.4,0,0,1,1,1.386294,0,0,0,0,1,0,0,70.4,9.290647,1.386294,5.009753,1 +11,2,0,1,5,226333,0,10835.19,7.047228,1,12,1,124.6088,9.418778,0,0,0,134.0276,0,0,0,9,1,4,81.35272,11.84267,0,70.4,0,0,1,1,1.386294,0,0,0,0,1,0,0,70.4,9.290647,1.386294,4.898046,1 +13,2,0,1,1,226349,0,10812.9,54.65845,1,12,1,5.227392,5.723994,0,0,0,10.95139,0,0,0,1,0,2,74.5,13.8,0,79.5,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,79.5,9.288588,.6931472,2.393466,1 +13,2,0,1,2,226349,0,10812.9,55.65845,1,12,1,22.58529,0,0,0,0,22.58529,0,0,0,2,0,2,74.5,13.8,0,79.5,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,79.5,9.288588,.6931472,3.117299,1 +13,2,0,1,3,226349,0,10812.9,56.65845,1,12,1,0,5.264317,0,0,0,5.264317,0,0,0,0,0,2,74.5,13.8,0,79.5,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,79.5,9.288588,.6931472,1.660951,1 +13,2,0,1,1,226350,0,10812.9,54.40657,0,12,1,134.344,0,0,0,0,134.344,0,0,0,3,0,2,89.4,10.3,0,87.5,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,87.5,9.288588,.6931472,4.900403,1 +13,2,0,1,2,226350,0,10812.9,55.40657,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,89.4,10.3,0,87.5,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,87.5,9.288588,.6931472,,0 +13,2,0,1,3,226350,0,10812.9,56.40657,0,12,1,332.4229,1.85022,0,0,0,334.2731,0,0,0,3,0,2,89.4,10.3,0,87.5,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,87.5,9.288588,.6931472,5.811958,1 +19,2,25,1,1,226362,0,14273.9,31.54278,1,13,1,16.17251,0,0,0,0,16.17251,0,0,0,1,0,2,84,17.2,1,87.5,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,87.5,9.566258,.6931472,2.783313,1 +19,2,25,1,2,226362,0,14273.9,32.54278,1,13,1,18.67322,0,0,0,0,18.67322,0,0,0,2,0,2,84,17.2,1,87.5,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,87.5,9.566258,.6931472,2.92709,1 +19,2,25,1,3,226362,0,14273.9,33.54278,1,13,1,21.42206,0,193.7101,22.78942,0,215.1322,0,0,1,1,0,2,84,17.2,1,87.5,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,87.5,9.566258,.6931472,5.371253,1 +19,2,25,1,1,226363,0,14273.9,32.34223,0,13,1,66.469,4.447439,0,0,0,70.91644,0,0,0,3,0,2,91,10.3,1,76.1,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,76.1,9.566258,.6931472,4.261502,1 +19,2,25,1,2,226363,0,14273.9,33.34223,0,13,1,407.1253,0,0,0,0,407.1253,0,0,0,3,44,2,91,10.3,1,76.1,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,76.1,9.566258,.6931472,6.009121,1 +19,2,25,1,3,226363,0,14273.9,34.34223,0,13,1,120.784,0,0,0,444.371,565.155,1,0,0,15,0,2,91,10.3,1,76.1,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,76.1,9.566258,.6931472,6.3371,1 +5,2,25,1,1,226406,0,8234.604,53.5113,0,16,1,92.07709,4.443255,166.6542,0,0,263.1745,0,0,0,6,0,4,71.8,24.1,1,73.9,701.4,701.4,0,0,1.386294,6.553078,0,3.258096,7.939373,0,0,0,73.9,9.016222,1.386294,5.572817,1 +5,2,25,1,2,226406,0,8234.604,54.5113,0,16,1,23.42606,9.292337,15.50512,0,0,48.22352,0,0,0,2,0,4,71.8,24.1,1,73.9,701.4,701.4,0,0,1.386294,6.553078,0,3.258096,7.939373,0,0,0,73.9,9.016222,1.386294,3.875847,1 +5,2,25,1,3,226406,0,8234.604,55.5113,0,16,1,139.5664,19.06052,0,0,0,158.6269,0,0,0,5,0,4,71.8,24.1,1,73.9,701.4,701.4,0,0,1.386294,6.553078,0,3.258096,7.939373,0,0,0,73.9,9.016222,1.386294,5.066555,1 +5,2,25,1,1,226407,0,8234.604,50.46407,1,12,1,26.23126,30.25696,3.238758,0,0,59.72698,0,0,0,2,0,4,66,24.1,1,78.4,701.4,701.4,0,0,1.386294,6.553078,0,3.258096,7.939373,0,0,0,78.4,9.016222,1.386294,4.089784,1 +5,2,25,1,2,226407,0,8234.604,51.46407,1,12,1,37.45729,33.8897,42.9673,0,0,114.3143,0,0,0,3,0,4,66,24.1,1,78.4,701.4,701.4,0,0,1.386294,6.553078,0,3.258096,7.939373,0,0,0,78.4,9.016222,1.386294,4.738952,1 +5,2,25,1,3,226407,0,8234.604,52.46407,1,12,1,189.1373,34.19151,0,0,0,223.3288,0,0,0,5,0,4,66,24.1,1,78.4,701.4,701.4,0,0,1.386294,6.553078,0,3.258096,7.939373,0,0,0,78.4,9.016222,1.386294,5.408645,1 +5,2,25,1,1,226408,0,8234.604,11.99179,0,12,1,38.5439,0,0,0,0,38.5439,0,0,0,3,0,4,73.3,11.84267,0,77.8,701.4,701.4,1,0,1.386294,6.553078,0,3.258096,7.939373,0,0,0,77.8,9.016222,1.386294,3.651798,1 +5,2,25,1,2,226408,0,8234.604,12.99179,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,73.3,11.84267,0,77.8,701.4,701.4,1,0,1.386294,6.553078,0,3.258096,7.939373,0,0,0,77.8,9.016222,1.386294,,0 +5,2,25,1,3,226408,0,8234.604,13.99179,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,73.3,11.84267,0,77.8,701.4,701.4,1,0,1.386294,6.553078,0,3.258096,7.939373,0,0,0,77.8,9.016222,1.386294,,0 +5,2,25,1,1,226409,0,8234.604,10.53251,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.3,11.84267,0,77.8,701.4,701.4,1,0,1.386294,6.553078,0,3.258096,7.939373,0,0,0,77.8,9.016222,1.386294,,0 +5,2,25,1,2,226409,0,8234.604,11.53251,0,12,1,17.32553,1.752074,0,0,0,19.0776,0,0,0,1,0,4,78.3,11.84267,0,77.8,701.4,701.4,1,0,1.386294,6.553078,0,3.258096,7.939373,0,0,0,77.8,9.016222,1.386294,2.948515,1 +5,2,25,1,3,226409,0,8234.604,12.53251,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.3,11.84267,0,77.8,701.4,701.4,1,0,1.386294,6.553078,0,3.258096,7.939373,0,0,0,77.8,9.016222,1.386294,,0 +11,2,0,1,1,226420,0,8005.279,51.96988,1,12,1,70.51624,74.06599,49.26557,0,0,193.8478,0,0,0,5,1,2,80.3,34.5,1,70.5,0,398.64,0,0,.6931472,5.988059,0,0,0,1,0,0,70.5,8.987982,.6931472,5.267073,1 +11,2,0,1,2,226420,0,8005.279,52.96988,1,12,1,257.0528,67.14494,19.38924,0,0,343.587,0,0,0,7,6,2,80.3,34.5,1,70.5,0,398.64,0,0,.6931472,5.988059,0,0,0,1,0,0,70.5,8.987982,.6931472,5.83944,1 +11,2,0,1,3,226420,0,8005.279,53.96988,1,12,1,97.25966,75.24708,36.66667,0,0,209.1734,0,0,0,8,6,2,80.3,34.5,1,70.5,0,398.64,0,0,.6931472,5.988059,0,0,0,1,0,0,70.5,8.987982,.6931472,5.343163,1 +11,2,0,1,1,226421,0,8005.279,55.30185,0,12,1,190.3938,6.546035,38.87706,0,0,235.8169,0,0,0,5,0,2,80.9,6.9,1,60.2,0,398.64,0,0,.6931472,5.988059,0,0,0,1,0,0,60.2,8.987982,.6931472,5.463056,1 +11,2,0,1,2,226421,0,8005.279,56.30185,0,12,1,239.5783,16.15124,2.985943,0,1630.296,1889.011,2,0,0,9,1,2,80.9,6.9,1,60.2,0,398.64,0,0,.6931472,5.988059,0,0,0,1,0,0,60.2,8.987982,.6931472,7.543809,1 +11,2,0,1,3,226421,0,8005.279,57.30185,0,12,1,42.22821,11.48697,47.22372,0,0,100.9389,0,0,0,3,1,2,80.9,6.9,1,60.2,0,398.64,0,0,.6931472,5.988059,0,0,0,1,0,0,60.2,8.987982,.6931472,4.614515,1 +14,2,95,0,1,226422,0,10179.47,38.19028,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,86.2,0,0,78.4,835.7,835.7,0,0,1.609438,6.72827,0,4.564348,6.779563,0,0,0,78.4,9.228227,1.609438,,0 +14,2,95,0,2,226422,0,10179.47,39.19028,0,12,1,21.13022,0,8.457003,0,0,29.58722,0,0,0,1,1,5,86.2,0,0,78.4,835.7,835.7,0,0,1.609438,6.72827,0,4.564348,6.779563,0,0,0,78.4,9.228227,1.609438,3.387343,1 +14,2,95,0,3,226422,0,10179.47,40.19028,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,86.2,0,0,78.4,835.7,835.7,0,0,1.609438,6.72827,0,4.564348,6.779563,0,0,0,78.4,9.228227,1.609438,,0 +14,2,95,0,4,226422,0,10179.47,41.19028,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,86.2,0,0,78.4,835.7,835.7,0,0,1.791759,6.72827,0,4.564348,6.779563,0,0,0,78.4,9.228227,1.791759,,0 +14,2,95,0,5,226422,0,10179.47,42.19028,0,12,1,132.4081,0,35.10503,0,0,167.5131,0,0,0,1,19,6,86.2,0,0,78.4,835.7,835.7,0,0,1.791759,6.72827,0,4.564348,6.779563,0,0,0,78.4,9.228227,1.791759,5.121062,1 +14,2,95,0,1,226423,0,10179.47,9.848049,0,12,1,17.78976,0,0,0,0,17.78976,0,0,0,1,0,5,86.7,11.84267,0,63,835.7,835.7,1,0,1.609438,6.72827,0,4.564348,6.779563,0,0,0,63,9.228227,1.609438,2.878623,1 +14,2,95,0,2,226423,0,10179.47,10.84805,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,11.84267,0,63,835.7,835.7,1,0,1.609438,6.72827,0,4.564348,6.779563,0,0,0,63,9.228227,1.609438,,0 +14,2,95,0,3,226423,0,10179.47,11.84805,0,12,1,24.63537,0,0,0,0,24.63537,0,0,0,1,0,5,86.7,11.84267,0,63,835.7,835.7,1,0,1.609438,6.72827,0,4.564348,6.779563,0,0,0,63,9.228227,1.609438,3.204183,1 +14,2,95,0,4,226423,0,10179.47,12.84805,0,12,1,8.336807,1.621509,0,0,0,9.958316,0,0,0,1,0,6,86.7,11.84267,0,63,835.7,835.7,1,0,1.791759,6.72827,0,4.564348,6.779563,0,0,0,63,9.228227,1.791759,2.298408,1 +14,2,95,0,5,226423,0,10179.47,13.84805,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,86.7,11.84267,0,63,835.7,835.7,1,0,1.791759,6.72827,0,4.564348,6.779563,0,0,0,63,9.228227,1.791759,,0 +14,2,95,0,1,226424,0,10179.47,12.82683,1,12,1,16.17251,0,0,0,0,16.17251,0,0,0,2,0,5,68.3,11.84267,0,66.7,835.7,835.7,1,1,1.609438,6.72827,0,4.564348,6.779563,0,0,0,66.7,9.228227,1.609438,2.783313,1 +14,2,95,0,2,226424,0,10179.47,13.82683,1,12,1,69.70516,0,0,0,0,69.70516,0,0,0,3,0,5,68.3,11.84267,0,66.7,835.7,835.7,1,1,1.609438,6.72827,0,4.564348,6.779563,0,0,0,66.7,9.228227,1.609438,4.244274,1 +14,2,95,0,3,226424,0,10179.47,14.82683,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,68.3,11.84267,0,66.7,835.7,835.7,1,1,1.609438,6.72827,0,4.564348,6.779563,0,0,0,66.7,9.228227,1.609438,,0 +14,2,95,0,4,226424,0,10179.47,15.82683,1,12,1,22.50938,0,0,0,0,22.50938,0,0,0,1,0,6,68.3,11.84267,0,66.7,835.7,835.7,1,1,1.791759,6.72827,0,4.564348,6.779563,0,0,0,66.7,9.228227,1.791759,3.113932,1 +14,2,95,0,5,226424,0,10179.47,16.82683,1,12,1,67.81696,2.044261,0,0,0,69.86121,0,0,0,4,0,6,68.3,11.84267,0,66.7,835.7,835.7,1,1,1.791759,6.72827,0,4.564348,6.779563,0,0,0,66.7,9.228227,1.791759,4.246511,1 +14,2,95,0,1,226425,0,10179.47,11.04723,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,53.3,11.84267,0,59.3,835.7,835.7,1,1,1.609438,6.72827,0,4.564348,6.779563,0,0,0,59.3,9.228227,1.609438,,0 +14,2,95,0,2,226425,0,10179.47,12.04723,1,12,1,14.1769,0,0,0,0,14.1769,0,0,0,1,0,5,53.3,11.84267,0,59.3,835.7,835.7,1,1,1.609438,6.72827,0,4.564348,6.779563,0,0,0,59.3,9.228227,1.609438,2.651614,1 +14,2,95,0,3,226425,0,10179.47,13.04723,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,53.3,11.84267,0,59.3,835.7,835.7,1,1,1.609438,6.72827,0,4.564348,6.779563,0,0,0,59.3,9.228227,1.609438,,0 +14,2,95,0,4,226425,0,10179.47,14.04723,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,53.3,11.84267,0,59.3,835.7,835.7,1,1,1.791759,6.72827,0,4.564348,6.779563,0,0,0,59.3,9.228227,1.791759,,0 +14,2,95,0,5,226425,0,10179.47,15.04723,1,12,1,110.6527,0,0,0,0,110.6527,0,0,0,0,16,6,53.3,11.84267,0,59.3,835.7,835.7,1,1,1.791759,6.72827,0,4.564348,6.779563,0,0,0,59.3,9.228227,1.791759,4.706396,1 +14,2,95,0,1,226426,0,10179.47,35.66872,1,12,1,90.56604,24.92183,0,0,0,115.4879,0,0,0,6,1,5,76.1,10.3,1,63.6,835.7,835.7,0,0,1.609438,6.72827,0,4.564348,6.779563,0,0,0,63.6,9.228227,1.609438,4.749166,1 +14,2,95,0,2,226426,0,10179.47,36.66872,1,12,1,48.64865,11.5774,0,0,0,60.22604,0,0,0,2,0,5,76.1,10.3,1,63.6,835.7,835.7,0,0,1.609438,6.72827,0,4.564348,6.779563,0,0,0,63.6,9.228227,1.609438,4.098105,1 +14,2,95,0,3,226426,0,10179.47,37.66872,1,12,1,121.5816,11.35825,0,0,626.495,759.4348,1,0,0,1,0,5,76.1,10.3,1,63.6,835.7,835.7,0,0,1.609438,6.72827,0,4.564348,6.779563,0,0,0,63.6,9.228227,1.609438,6.632575,1 +14,2,95,0,4,226426,0,10179.47,38.66872,1,12,1,252.0842,15.49396,0,0,1586.094,1853.672,1,0,0,4,29,6,76.1,10.3,1,63.6,835.7,835.7,0,0,1.791759,6.72827,0,4.564348,6.779563,0,0,0,63.6,9.228227,1.791759,7.524924,1 +14,2,95,0,5,226426,0,10179.47,39.66872,1,12,1,363.3721,45.65266,.6564141,0,0,409.6812,0,0,0,8,12,6,76.1,10.3,1,63.6,835.7,835.7,0,0,1.791759,6.72827,0,4.564348,6.779563,0,0,0,63.6,9.228227,1.791759,6.015379,1 +11,2,0,1,1,226428,0,12289.74,30.61465,1,13,1,93.80054,15.23989,29.22911,0,0,138.2695,0,0,0,5,1,1,84,13.8,0,60.2,0,0,0,0,0,0,0,0,0,1,0,0,60.2,9.416601,0,4.929205,1 +11,2,0,1,2,226428,0,12289.74,31.61465,1,13,1,13.26781,9.43489,0,0,1058.305,1081.007,1,0,0,2,0,1,84,13.8,0,60.2,0,0,0,0,0,0,0,0,0,1,0,0,60.2,9.416601,0,6.985649,1 +11,2,0,1,3,226428,0,12289.74,32.61465,1,13,1,11.39471,0,35.90702,0,0,47.30173,0,0,0,0,1,1,84,13.8,0,60.2,0,0,0,0,0,0,0,0,0,1,0,0,60.2,9.416601,0,3.856547,1 +11,2,0,1,4,226428,0,12289.74,33.61465,1,13,1,113.3806,0,0,0,0,113.3806,0,0,0,5,0,1,84,13.8,0,60.2,0,0,0,0,0,0,0,0,0,1,0,0,60.2,9.416601,0,4.73075,1 +11,2,0,1,5,226428,0,12289.74,34.61465,1,13,1,145.1613,0,0,0,0,145.1613,0,0,0,2,19,1,84,13.8,0,60.2,0,0,0,0,0,0,0,0,0,1,0,0,60.2,9.416601,0,4.977846,1 +13,2,0,1,1,226432,0,13241.06,40.78302,0,12,1,134.7698,0,2.67666,0,282.3608,419.8073,1,0,0,7,0,3,79.8,6.9,0,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,67,9.491153,1.098612,6.039796,1 +13,2,0,1,2,226432,0,13241.06,41.78302,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,79.8,6.9,0,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,67,9.491153,1.098612,,0 +13,2,0,1,3,226432,0,13241.06,42.78302,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,79.8,6.9,0,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,67,9.491153,1.098612,,0 +13,2,0,1,1,226433,0,13241.06,11.5729,1,12,1,13.65096,0,0,0,0,13.65096,0,0,0,1,0,3,93.3,11.84267,0,100,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,100,9.491153,1.098612,2.61381,1 +13,2,0,1,2,226433,0,13241.06,12.5729,1,12,1,13.17716,0,0,0,0,13.17716,0,0,0,1,0,3,93.3,11.84267,0,100,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,100,9.491153,1.098612,2.578485,1 +13,2,0,1,3,226433,0,13241.06,13.5729,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,93.3,11.84267,0,100,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,100,9.491153,1.098612,,0 +13,2,0,1,1,226434,0,13241.06,39.13758,1,12,1,16.05996,0,38.27088,0,0,54.33083,0,0,0,1,0,3,87.8,3.4,0,96.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,96.6,9.491153,1.098612,3.995092,1 +13,2,0,1,2,226434,0,13241.06,40.13758,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,87.8,3.4,0,96.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,96.6,9.491153,1.098612,,0 +13,2,0,1,3,226434,0,13241.06,41.13758,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,87.8,3.4,0,96.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,96.6,9.491153,1.098612,,0 +13,2,0,1,1,226456,0,12642.23,21.99863,1,14,1,47.97844,41.94609,0,51.21294,0,89.92453,0,0,2,2,0,3,70.7,3.4,0,60.2,450,437,0,0,1.098612,6.079933,1,4.564348,6.160541,1,0,0,60.2,9.444877,1.098612,4.498971,1 +13,2,0,1,2,226456,0,12642.23,22.99863,1,14,1,51.52334,12.23096,0,0,0,63.7543,0,0,0,3,0,3,70.7,3.4,0,60.2,450,437,0,0,1.098612,6.079933,1,4.564348,6.160541,1,0,0,60.2,9.444877,1.098612,4.155036,1 +13,2,0,1,1,226457,0,12642.23,47.48528,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,93.1,6.9,0,97.7,450,437,0,0,1.098612,6.079933,1,4.564348,6.160541,0,0,0,97.7,9.444877,1.098612,,0 +13,2,0,1,2,226457,0,12642.23,48.48528,0,12,1,24.07862,0,0,0,0,24.07862,0,0,0,0,1,3,93.1,6.9,0,97.7,450,437,0,0,1.098612,6.079933,1,4.564348,6.160541,0,0,0,97.7,9.444877,1.098612,3.181324,1 +13,2,0,1,3,226457,0,12642.23,49.48528,0,12,1,24.15679,0,40.22789,0,0,64.38468,0,0,0,2,0,2,93.1,6.9,0,97.7,450,437,0,0,.6931472,6.079933,1,4.564348,6.160541,0,0,0,97.7,9.444877,.6931472,4.164876,1 +13,2,0,1,1,226458,0,12642.23,47.87406,1,13,1,12.39892,0,31.71968,0,0,44.1186,0,0,0,0,1,3,91.5,3.4,0,96.6,450,437,0,0,1.098612,6.079933,1,4.564348,6.160541,0,0,0,96.6,9.444877,1.098612,3.786881,1 +13,2,0,1,2,226458,0,12642.23,48.87406,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,91.5,3.4,0,96.6,450,437,0,0,1.098612,6.079933,1,4.564348,6.160541,0,0,0,96.6,9.444877,1.098612,,0 +13,2,0,1,3,226458,0,12642.23,49.87406,1,13,1,0,0,0,0,0,0,0,0,0,0,0,2,91.5,3.4,0,96.6,450,437,0,0,.6931472,6.079933,1,4.564348,6.160541,0,0,0,96.6,9.444877,.6931472,,0 +16,2,95,1,1,226459,0,6233.138,29.96304,1,9,1,197.6713,16.01178,0,0,539.4807,753.1638,1,0,0,4,0,2,74.3,10.3,1,85.2,796.8,796.8,0,0,.6931472,6.680604,0,4.564348,6.731897,1,0,0,85.2,8.737796,.6931472,6.624283,1 +16,2,95,1,2,226459,0,6233.138,30.96304,1,9,1,108.5407,9.297218,0,0,1767.472,1885.31,1,0,0,4,0,2,74.3,10.3,1,85.2,796.8,796.8,0,0,.6931472,6.680604,0,4.564348,6.731897,1,0,0,85.2,8.737796,.6931472,7.541848,1 +16,2,95,1,3,226459,0,6233.138,31.96304,1,9,1,0,0,0,0,0,0,0,0,0,0,0,2,74.3,10.3,1,85.2,796.8,796.8,0,0,.6931472,6.680604,0,4.564348,6.731897,1,0,0,85.2,8.737796,.6931472,,0 +16,2,95,1,1,226461,0,6233.138,12.20808,0,9,1,58.43148,3.61349,0,82.36082,0,62.04497,0,0,2,2,0,2,76.7,11.84267,0,88.9,796.8,796.8,1,0,.6931472,6.680604,0,4.564348,6.731897,0,0,0,88.9,8.737796,.6931472,4.12786,1 +16,2,95,1,2,226461,0,6233.138,13.20808,0,9,1,35.01708,5.583211,0,0,0,40.60029,0,0,0,1,0,2,76.7,11.84267,0,88.9,796.8,796.8,1,0,.6931472,6.680604,0,4.564348,6.731897,0,0,0,88.9,8.737796,.6931472,3.703775,1 +16,2,95,1,3,226461,0,6233.138,14.20808,0,9,1,22.7823,0,0,0,0,22.7823,0,0,0,1,0,2,76.7,11.84267,0,88.9,796.8,796.8,1,0,.6931472,6.680604,0,4.564348,6.731897,0,0,0,88.9,8.737796,.6931472,3.125984,1 +11,2,0,0,1,226476,0,197.654,21.94935,0,14,1,269.8518,35.8073,0,0,608.7348,914.3939,1,0,0,13,1,1,73.9,6.9,0,73.9,0,0,0,0,0,0,0,0,0,1,0,0,73.9,5.291564,0,6.818262,1 +11,2,0,0,2,226476,0,197.654,22.94935,0,14,1,55.26062,5.733591,0,0,0,60.99421,0,0,0,7,0,1,73.9,6.9,0,73.9,0,0,0,0,0,0,0,0,0,1,0,0,73.9,5.291564,0,4.110779,1 +11,2,0,0,3,226476,0,197.654,23.94935,0,14,1,86.11482,2.12283,35.3271,0,0,123.5648,0,0,0,5,1,1,73.9,6.9,0,73.9,0,0,0,0,0,0,0,0,0,1,0,0,73.9,5.291564,0,4.816765,1 +16,2,95,0,1,226520,0,10697.95,4.566735,1,13,1,31.26685,15.05121,0,0,0,46.31806,0,0,0,4,0,4,81.35272,11.84267,0,81.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.277901,1.386294,3.835532,1 +16,2,95,0,2,226520,0,10697.95,5.566735,1,13,1,61.91646,2.334152,0,0,0,64.25062,0,0,0,2,0,4,81.35272,11.84267,0,81.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.277901,1.386294,4.162791,1 +16,2,95,0,3,226520,0,10697.95,6.566735,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,81.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.277901,1.386294,,0 +16,2,95,0,1,226521,0,10697.95,36.08487,1,13,1,6.469003,6.026954,0,0,0,12.49596,0,0,0,1,0,4,91,3.4,0,83,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,83,9.277901,1.386294,2.525405,1 +16,2,95,0,2,226521,0,10697.95,37.08487,1,13,1,147.9115,27.39558,7.764128,0,0,183.0713,0,0,0,6,0,4,91,3.4,0,83,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,83,9.277901,1.386294,5.209876,1 +16,2,95,0,3,226521,0,10697.95,38.08487,1,13,1,29.85415,9.106654,0,0,0,38.9608,0,0,0,2,0,4,91,3.4,0,83,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,83,9.277901,1.386294,3.662556,1 +16,2,95,0,1,226522,0,10697.95,30.57906,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,92,6.9,0,85.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,85.2,9.277901,1.386294,,0 +16,2,95,0,2,226522,0,10697.95,31.57906,0,11,1,36.85504,12.77641,0,0,0,49.63145,0,0,0,2,0,4,92,6.9,0,85.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,85.2,9.277901,1.386294,3.904625,1 +16,2,95,0,3,226522,0,10697.95,32.57906,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,92,6.9,0,85.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,85.2,9.277901,1.386294,,0 +16,2,95,0,1,226523,0,10697.95,3.15948,1,13,1,12.85714,0,0,0,0,12.85714,0,0,0,1,0,4,81.35272,11.84267,0,81.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.277901,1.386294,2.5539,1 +16,2,95,0,2,226523,0,10697.95,4.15948,1,13,1,6.879607,1.371007,0,0,0,8.250614,0,0,0,1,0,4,81.35272,11.84267,0,81.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.277901,1.386294,2.110288,1 +16,2,95,0,3,226523,0,10697.95,5.15948,1,13,1,18.23154,4.412033,0,0,0,22.64357,0,0,0,2,0,4,81.35272,11.84267,0,81.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.277901,1.386294,3.119876,1 +14,2,95,1,1,226530,0,8665.641,1.089665,0,16,1,33.19058,1.445396,0,0,0,34.63597,0,0,0,1,0,4,81.35272,11.84267,0,81.5,999.95,216,1,0,1.386294,5.375278,0,4.564348,6.958999,0,0,0,81.5,9.067237,1.386294,3.544893,1 +14,2,95,1,2,226530,0,8665.641,2.089665,0,16,1,34.16301,0,0,0,0,34.16301,0,0,0,2,0,4,81.35272,11.84267,0,81.5,999.95,216,1,0,1.386294,5.375278,0,4.564348,6.958999,0,0,0,81.5,9.067237,1.386294,3.531143,1 +14,2,95,1,3,226530,0,8665.641,3.089665,0,16,1,9.936766,0,0,0,0,9.936766,0,0,0,1,0,4,81.35272,11.84267,0,81.5,999.95,216,1,0,1.386294,5.375278,0,4.564348,6.958999,0,0,0,81.5,9.067237,1.386294,2.296242,1 +14,2,95,1,1,226531,0,8665.641,30.43942,1,16,1,98.50107,0,0,0,0,98.50107,0,0,0,3,0,4,87.2,20.7,0,88.6,999.95,216,0,0,1.386294,5.375278,0,4.564348,6.958999,0,0,0,88.6,9.067237,1.386294,4.590067,1 +14,2,95,1,2,226531,0,8665.641,31.43942,1,16,1,3.416301,0,0,0,0,3.416301,0,0,0,0,0,4,87.2,20.7,0,88.6,999.95,216,0,0,1.386294,5.375278,0,4.564348,6.958999,0,0,0,88.6,9.067237,1.386294,1.228558,1 +14,2,95,1,3,226531,0,8665.641,32.43943,1,16,1,27.10027,0,0,0,0,27.10027,0,0,0,1,0,4,87.2,20.7,0,88.6,999.95,216,0,0,1.386294,5.375278,0,4.564348,6.958999,0,0,0,88.6,9.067237,1.386294,3.299544,1 +14,2,95,1,1,226532,0,8665.641,33.71389,0,22,1,97.4304,21.54711,3.211992,0,0,122.1895,0,0,0,6,0,4,87.2,6.9,0,68.2,999.95,216,0,0,1.386294,5.375278,0,4.564348,6.958999,0,0,0,68.2,9.067237,1.386294,4.805573,1 +14,2,95,1,2,226532,0,8665.641,34.71389,0,22,1,8.29673,0,0,0,0,8.29673,0,0,0,1,0,4,87.2,6.9,0,68.2,999.95,216,0,0,1.386294,5.375278,0,4.564348,6.958999,0,0,0,68.2,9.067237,1.386294,2.115861,1 +14,2,95,1,3,226532,0,8665.641,35.71389,0,22,1,0,0,0,0,0,0,0,0,0,0,0,4,87.2,6.9,0,68.2,999.95,216,0,0,1.386294,5.375278,0,4.564348,6.958999,0,0,0,68.2,9.067237,1.386294,,0 +14,2,95,1,1,226533,0,8665.641,5.80972,0,16,1,146.4668,3.185225,0,0,0,149.652,0,0,0,3,0,4,83.3,11.84267,0,88.9,999.95,216,1,0,1.386294,5.375278,0,4.564348,6.958999,0,0,0,88.9,9.067237,1.386294,5.008313,1 +14,2,95,1,2,226533,0,8665.641,6.80972,0,16,1,8.29673,0,0,0,0,8.29673,0,0,0,1,0,4,83.3,11.84267,0,88.9,999.95,216,1,0,1.386294,5.375278,0,4.564348,6.958999,0,0,0,88.9,9.067237,1.386294,2.115861,1 +14,2,95,1,3,226533,0,8665.641,7.80972,0,16,1,9.936766,0,0,0,0,9.936766,0,0,0,1,0,4,83.3,11.84267,0,88.9,999.95,216,1,0,1.386294,5.375278,0,4.564348,6.958999,0,0,0,88.9,9.067237,1.386294,2.296242,1 +11,2,0,0,1,226551,0,8807.625,17.23477,1,10,1,37.60948,0,31.73107,0,0,69.34055,0,0,0,4,1,4,81.9,6.9,0,61.4,0,58.2,1,1,1.386294,4.063885,0,0,0,1,0,0,61.4,9.083487,1.386294,4.23903,1 +11,2,0,0,2,226551,0,8807.625,18.23477,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,81.9,6.9,0,61.4,0,58.2,0,0,1.386294,4.063885,0,0,0,1,0,0,61.4,9.083487,1.386294,,0 +11,2,0,0,3,226551,0,8807.625,19.23477,1,10,1,82.57478,0,0,0,0,82.57478,0,0,0,4,1,4,81.9,6.9,0,61.4,0,58.2,0,0,1.386294,4.063885,0,0,0,1,0,0,61.4,9.083487,1.386294,4.413704,1 +11,2,0,0,1,226552,0,8807.625,41.84805,0,3,1,193.1994,8.799588,45.12622,0,0,247.1252,0,0,0,8,2,4,86.2,17.2,0,50,0,58.2,0,0,1.386294,4.063885,0,0,0,1,0,0,50,9.083487,1.386294,5.509895,1 +11,2,0,0,2,226552,0,8807.625,42.84805,0,3,1,13.73106,0,0,0,257.5757,271.3068,1,0,0,1,1,4,86.2,17.2,0,50,0,58.2,0,0,1.386294,4.063885,0,0,0,1,0,0,50,9.083487,1.386294,5.603251,1 +11,2,0,0,3,226552,0,8807.625,43.84805,0,3,1,55.91677,0,51.92024,0,0,107.837,0,0,0,2,1,4,86.2,17.2,0,50,0,58.2,0,0,1.386294,4.063885,0,0,0,1,0,0,50,9.083487,1.386294,4.680621,1 +11,2,0,0,1,226553,0,8807.625,35.0527,1,10,1,124.9356,25.69294,35.33746,0,0,185.966,0,0,0,10,2,4,93.1,13.8,0,83,0,58.2,0,0,1.386294,4.063885,0,0,0,1,0,0,83,9.083487,1.386294,5.225564,1 +11,2,0,0,2,226553,0,8807.625,36.0527,1,10,1,295.2178,3.101326,0,0,0,298.3191,0,0,0,7,1,4,93.1,13.8,0,83,0,58.2,0,0,1.386294,4.063885,0,0,0,1,0,0,83,9.083487,1.386294,5.698164,1 +11,2,0,0,3,226553,0,8807.625,37.0527,1,10,1,84.95882,7.498916,33.28132,0,0,125.7391,0,0,0,7,1,4,93.1,13.8,0,83,0,58.2,0,0,1.386294,4.063885,0,0,0,1,0,0,83,9.083487,1.386294,4.834209,1 +11,2,0,1,1,226554,0,13850.44,14.44216,0,10,1,32.02753,10.50291,0,0,279.6718,322.2022,1,0,0,3,0,6,72.9,6.9,0,79.5,0,935.4,1,0,1.791759,6.840974,0,0,0,0,0,0,79.5,9.536144,1.791759,5.775179,1 +11,2,0,1,2,226554,0,13850.44,15.44216,0,10,1,92.18147,0,0,0,0,92.18147,0,0,0,1,6,6,72.9,6.9,0,79.5,0,935.4,1,0,1.791759,6.840974,0,0,0,0,0,0,79.5,9.536144,1.791759,4.523759,1 +11,2,0,1,3,226554,0,13850.44,16.44216,0,10,1,261.571,11.59324,0,40.05341,0,273.1642,0,0,2,4,2,6,72.9,6.9,0,79.5,0,935.4,1,0,1.791759,6.840974,0,0,0,0,0,0,79.5,9.536144,1.791759,5.610073,1 +11,2,0,1,1,226555,0,13850.44,45.03217,1,10,1,211.2229,63.34039,0,0,0,274.5633,0,0,0,2,0,6,67,24.1,0,72.7,0,935.4,0,0,1.791759,6.840974,0,0,0,0,0,0,72.7,9.536144,1.791759,5.615182,1 +11,2,0,1,2,226555,0,13850.44,46.03217,1,10,1,30.64672,59.43533,40.63224,0,0,130.7143,0,0,0,2,0,6,67,24.1,0,72.7,0,935.4,0,0,1.791759,6.840974,0,0,0,0,0,0,72.7,9.536144,1.791759,4.873014,1 +11,2,0,1,3,226555,0,13850.44,47.03217,1,10,1,86.55986,51.40187,0,0,0,137.9617,0,0,0,3,0,6,67,24.1,0,72.7,0,935.4,0,0,1.791759,6.840974,0,0,0,0,0,0,72.7,9.536144,1.791759,4.926976,1 +11,2,0,1,1,226556,0,13850.44,12.3614,1,10,1,41.82107,1.561673,0,0,0,43.38274,0,0,0,2,0,6,71.7,11.84267,0,74.1,0,935.4,1,1,1.791759,6.840974,0,0,0,0,0,0,74.1,9.536144,1.791759,3.770062,1 +11,2,0,1,2,226556,0,13850.44,13.3614,1,10,1,58.39768,0,36.4334,0,0,94.83108,0,0,0,4,0,6,71.7,11.84267,0,74.1,0,935.4,1,1,1.791759,6.840974,0,0,0,0,0,0,74.1,9.536144,1.791759,4.552097,1 +11,2,0,1,3,226556,0,13850.44,14.3614,1,10,1,66.31064,3.18202,0,0,0,69.49266,0,0,0,4,0,6,71.7,11.84267,0,74.1,0,935.4,1,1,1.791759,6.840974,0,0,0,0,0,0,74.1,9.536144,1.791759,4.241221,1 +11,2,0,1,1,226558,0,13850.44,4.377823,0,10,1,0,1.900476,0,0,0,1.900476,0,0,0,0,0,6,81.35272,11.84267,0,96.3,0,935.4,1,0,1.791759,6.840974,0,0,0,0,0,0,96.3,9.536144,1.791759,.6421046,1 +11,2,0,1,2,226558,0,13850.44,5.377823,0,10,1,27.50965,5.067567,0,0,0,32.57722,0,0,0,3,0,6,81.35272,11.84267,0,96.3,0,935.4,1,0,1.791759,6.840974,0,0,0,0,0,0,96.3,9.536144,1.791759,3.483613,1 +11,2,0,1,3,226558,0,13850.44,6.377823,0,10,1,8.010681,0,0,0,0,8.010681,0,0,0,1,0,6,81.35272,11.84267,0,96.3,0,935.4,1,0,1.791759,6.840974,0,0,0,0,0,0,96.3,9.536144,1.791759,2.080776,1 +11,2,0,1,1,226559,0,13850.44,10.28884,0,10,1,17.46956,11.30228,0,0,0,28.77184,0,0,0,2,0,6,86.7,11.84267,0,96.3,0,935.4,1,0,1.791759,6.840974,0,0,0,0,0,0,96.3,9.536144,1.791759,3.359397,1 +11,2,0,1,2,226559,0,13850.44,11.28884,0,10,1,100.0241,0,31.18726,0,0,131.2114,0,0,0,4,0,6,86.7,11.84267,0,96.3,0,935.4,1,0,1.791759,6.840974,0,0,0,0,0,0,96.3,9.536144,1.791759,4.87681,1 +11,2,0,1,3,226559,0,13850.44,12.28884,0,10,1,14.24121,1.624388,0,0,0,15.8656,0,0,0,1,0,6,86.7,11.84267,0,96.3,0,935.4,1,0,1.791759,6.840974,0,0,0,0,0,0,96.3,9.536144,1.791759,2.764153,1 +11,2,0,1,1,226560,0,13850.44,46.20671,0,8,1,84.30386,21.32345,0,0,0,105.6273,0,0,0,2,0,6,56.9,13.8,.1981873,65.9,0,935.4,0,0,1.791759,6.840974,0,0,0,0,0,0,65.9,9.536144,1.791759,4.659917,1 +11,2,0,1,2,226560,0,13850.44,47.20671,0,8,1,54.05405,4.295367,57.76545,0,0,116.1149,0,0,0,2,0,6,56.9,13.8,.1981873,65.9,0,935.4,0,0,1.791759,6.840974,0,0,0,0,0,0,65.9,9.536144,1.791759,4.75458,1 +11,2,0,1,3,226560,0,13850.44,48.20671,0,8,1,24.47708,8.077436,0,0,0,32.55452,0,0,0,1,0,6,56.9,13.8,.1981873,65.9,0,935.4,0,0,1.791759,6.840974,0,0,0,0,0,0,65.9,9.536144,1.791759,3.482916,1 +11,2,0,1,1,226563,0,4079.179,37.61259,0,13,1,111.0814,119.4593,0,0,570.7977,801.3383,1,0,0,11,0,1,78.2,10.3,0,95.5,0,0,0,0,0,0,0,0,0,0,0,0,95.5,8.313896,0,6.686283,1 +11,2,0,1,2,226563,0,4079.179,38.61259,0,13,1,165.4466,96.19327,0,0,0,261.6398,0,0,0,9,0,1,78.2,10.3,0,95.5,0,0,0,0,0,0,0,0,0,0,0,0,95.5,8.313896,0,5.566969,1 +11,2,0,1,3,226563,0,4079.179,39.61259,0,13,1,62.7823,37.60163,1.878952,0,429.7426,532.0054,1,0,0,6,0,1,78.2,10.3,0,95.5,0,0,0,0,0,0,0,0,0,0,0,0,95.5,8.313896,0,6.276654,1 +18,2,25,0,1,226572,0,4642.815,26.31622,1,12,1,96.78801,152.8854,0,0,0,249.6734,0,0,0,7,0,1,43.1,24.1,0,51.1,715.1,715.1,0,0,0,6.572423,0,3.258096,7.958717,1,0,0,51.1,8.443292,0,5.520154,1 +18,2,25,0,2,226572,0,4642.815,27.31622,1,12,1,298.3895,158.1113,0,0,0,456.5007,0,0,0,9,0,1,43.1,24.1,0,51.1,715.1,715.1,0,0,0,6.572423,0,3.258096,7.958717,1,0,0,51.1,8.443292,0,6.12359,1 +18,2,25,0,3,226572,0,4642.815,28.31622,1,12,1,165.6052,221.0795,0,0,0,386.6847,0,0,0,9,0,1,43.1,24.1,0,51.1,715.1,715.1,0,0,0,6.572423,0,3.258096,7.958717,1,0,0,51.1,8.443292,0,5.95761,1 +13,2,0,1,1,226573,0,2107.918,19.75359,1,12,1,90.8728,5.497605,35.97126,0,0,132.3417,0,0,0,5,1,2,85.6,3.4,0,85.2,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,85.2,7.65393,.6931472,4.885387,1 +13,2,0,1,2,226573,0,2107.918,20.75359,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,85.6,3.4,0,85.2,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,85.2,7.65393,.6931472,,0 +13,2,0,1,3,226573,0,2107.918,21.75359,1,12,1,48.51752,0,38.08625,0,0,86.60378,0,0,0,3,1,2,85.6,3.4,0,85.2,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,85.2,7.65393,.6931472,4.461343,1 +13,2,0,1,1,226574,0,2107.918,23.09925,0,11,1,11.97445,0,0,0,0,11.97445,0,0,0,1,0,2,82.4,3.4,0,81.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,81.8,7.65393,.6931472,2.482776,1 +13,2,0,1,2,226574,0,2107.918,24.09925,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,82.4,3.4,0,81.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,81.8,7.65393,.6931472,,0 +13,2,0,1,3,226574,0,2107.918,25.09925,0,11,1,11.23091,0,0,0,0,11.23091,0,0,0,1,0,2,82.4,3.4,0,81.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,81.8,7.65393,.6931472,2.418669,1 +17,2,25,0,1,226575,0,2067.449,20.94182,1,12,1,28.81402,9.2938,40.56065,0,505.3154,583.9838,1,0,0,2,0,2,80.9,10.3,0,81.8,324.3,0,0,0,.6931472,0,0,3.258096,7.167964,1,0,0,81.8,7.634554,.6931472,6.369874,1 +17,2,25,0,2,226575,0,2067.449,21.94182,1,12,1,17.98526,15.62162,0,0,0,33.60688,0,0,0,3,0,3,80.9,10.3,0,81.8,324.3,0,0,0,1.098612,0,0,3.258096,7.167964,1,0,0,81.8,7.634554,1.098612,3.514731,1 +17,2,25,0,3,226575,0,2067.449,22.94182,1,12,1,39.53965,12.46582,30.94804,0,483.8149,566.7684,1,0,0,2,0,3,80.9,10.3,0,81.8,324.3,0,0,0,1.098612,0,0,3.258096,7.167964,1,0,0,81.8,7.634554,1.098612,6.339951,1 +17,2,25,0,1,226576,0,2067.449,22.02875,0,12,1,5.390836,3.202156,0,0,0,8.592992,0,0,0,1,0,2,81.9,3.4,0,85.2,324.3,0,0,0,.6931472,0,0,3.258096,7.167964,0,0,0,85.2,7.634554,.6931472,2.150947,1 +17,2,25,0,2,226576,0,2067.449,23.02875,0,12,1,26.33907,18.25553,0,0,0,44.59459,0,0,0,3,0,3,81.9,3.4,0,85.2,324.3,0,0,0,1.098612,0,0,3.258096,7.167964,0,0,0,85.2,7.634554,1.098612,3.797613,1 +17,2,25,0,3,226576,0,2067.449,24.02875,0,12,1,147.7165,5.209663,0,0,0,152.9262,0,0,0,4,0,3,81.9,3.4,0,85.2,324.3,0,0,0,1.098612,0,0,3.258096,7.167964,0,0,0,85.2,7.634554,1.098612,5.029955,1 +11,2,0,1,1,226580,0,9224.634,44.89801,0,16,1,33.71968,21.04582,0,0,167.8652,222.6307,1,0,0,3,0,4,98.4,3.4,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,85.2,9.129741,1.386294,5.405514,1 +11,2,0,1,2,226580,0,9224.634,45.89801,0,16,1,70.83538,9.390663,42.39312,0,0,122.6192,0,0,0,5,0,4,98.4,3.4,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,85.2,9.129741,1.386294,4.809083,1 +11,2,0,1,3,226580,0,9224.634,46.89801,0,16,1,10.71103,4.680948,0,0,0,15.39198,0,0,0,1,0,4,98.4,3.4,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,85.2,9.129741,1.386294,2.733846,1 +11,2,0,1,4,226580,0,9224.634,47.89801,0,16,1,55.43977,20.15423,0,0,0,75.59399,0,0,0,6,0,4,98.4,3.4,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,85.2,9.129741,1.386294,4.325377,1 +11,2,0,1,5,226580,0,9224.634,48.89801,0,16,1,185.6714,14.22731,43.61591,0,0,243.5146,0,0,0,23,0,4,98.4,3.4,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,85.2,9.129741,1.386294,5.495177,1 +11,2,0,1,1,226581,0,9224.634,13.61533,0,12,1,11.75202,0,0,0,0,11.75202,0,0,0,1,0,4,93.3,11.84267,0,77.8,0,0,1,0,1.386294,0,0,0,0,0,0,0,77.8,9.129741,1.386294,2.464025,1 +11,2,0,1,2,226581,0,9224.634,14.61533,0,12,1,26.04423,0,33.98526,0,0,60.02948,0,0,0,2,0,4,93.3,11.84267,0,77.8,0,0,1,0,1.386294,0,0,0,0,0,0,0,77.8,9.129741,1.386294,4.094836,1 +11,2,0,1,3,226581,0,9224.634,15.61533,0,12,1,54.01094,17.75752,0,0,0,71.76846,0,0,0,9,0,4,93.3,11.84267,0,77.8,0,0,1,0,1.386294,0,0,0,0,0,0,0,77.8,9.129741,1.386294,4.273445,1 +11,2,0,1,4,226581,0,9224.634,16.61533,0,12,1,85.55648,13.62234,0,0,0,99.17883,0,0,0,6,0,4,93.3,11.84267,0,77.8,0,0,1,0,1.386294,0,0,0,0,0,0,0,77.8,9.129741,1.386294,4.596924,1 +11,2,0,1,5,226581,0,9224.634,17.61533,0,12,1,30.3826,11.86047,33.67592,0,0,75.91898,0,0,0,3,0,4,93.3,11.84267,0,77.8,0,0,1,0,1.386294,0,0,0,0,0,0,0,77.8,9.129741,1.386294,4.329667,1 +11,2,0,1,1,226582,0,9224.634,9.634497,0,12,1,0,1.827493,0,0,0,1.827493,0,0,0,0,0,4,87.3,11.84267,0,92.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,92.6,9.129741,1.386294,.6029453,1 +11,2,0,1,2,226582,0,9224.634,10.6345,0,12,1,5.896806,4.732187,0,0,0,10.62899,0,0,0,1,0,4,87.3,11.84267,0,92.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,92.6,9.129741,1.386294,2.363585,1 +11,2,0,1,3,226582,0,9224.634,11.6345,0,12,1,52.87147,7.092069,0,0,0,59.96354,0,0,0,3,0,4,87.3,11.84267,0,92.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,92.6,9.129741,1.386294,4.093737,1 +11,2,0,1,4,226582,0,9224.634,12.6345,0,12,1,60.52939,5.081284,0,0,0,65.61067,0,0,0,6,0,4,87.3,11.84267,0,92.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,92.6,9.129741,1.386294,4.183738,1 +11,2,0,1,5,226582,0,9224.634,13.6345,0,12,1,111.9655,52.5919,30.30008,0,0,194.8575,0,0,0,11,0,4,87.3,11.84267,0,92.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,92.6,9.129741,1.386294,5.272268,1 +11,2,0,1,1,226583,0,9224.634,45.73854,1,12,1,104.8787,51.93531,28.7062,0,0,185.5202,0,0,0,11,0,4,97.3,20.7,0,78.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.4,9.129741,1.386294,5.223164,1 +11,2,0,1,2,226583,0,9224.634,46.73854,1,12,1,26.04423,50.04423,0,0,0,76.08846,0,0,0,2,0,4,97.3,20.7,0,78.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.4,9.129741,1.386294,4.331897,1 +11,2,0,1,3,226583,0,9224.634,47.73854,1,12,1,54.23883,34.92707,29.45305,0,0,118.619,0,0,0,4,0,4,97.3,20.7,0,78.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.4,9.129741,1.386294,4.775916,1 +11,2,0,1,4,226583,0,9224.634,48.73854,1,12,1,179.4498,45.45644,.5669029,0,0,225.4731,0,0,0,13,0,4,97.3,20.7,0,78.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.4,9.129741,1.386294,5.418201,1 +11,2,0,1,5,226583,0,9224.634,49.73854,1,12,1,124.5311,42.06676,37.05176,0,82.55814,286.2078,1,0,0,18,0,4,97.3,20.7,0,78.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.4,9.129741,1.386294,5.656718,1 +11,2,0,0,1,226589,0,3387.097,47.10472,1,9,1,105.455,16.52475,0,0,0,121.9798,0,0,0,4,1,3,67,10.3,0,59.1,0,0,0,0,1.098612,0,0,0,0,0,0,0,59.1,8.128023,1.098612,4.803855,1 +11,2,0,0,2,226589,0,3387.097,48.10472,1,9,1,64.46922,0,40.19389,0,0,104.6631,0,0,0,2,1,3,67,10.3,0,59.1,0,0,0,0,1.098612,0,0,0,0,0,0,0,59.1,8.128023,1.098612,4.650747,1 +11,2,0,0,3,226589,0,3387.097,49.10472,1,9,1,43.80054,0,23.36029,0,0,67.16083,0,0,0,1,1,3,67,10.3,0,59.1,0,0,0,0,1.098612,0,0,0,0,0,0,0,59.1,8.128023,1.098612,4.20709,1 +11,2,0,0,1,226590,0,3387.097,16.45175,0,9,1,37.78606,14.31613,0,0,0,52.10218,0,0,0,4,0,3,81.4,0,0,67,0,0,1,0,1.098612,0,0,0,0,0,1,0,67,8.128023,1.098612,3.953207,1 +11,2,0,0,2,226590,0,3387.097,17.45175,0,9,1,65.92342,7.275812,0,0,0,73.19923,0,0,0,3,0,3,81.4,0,0,67,0,0,1,0,1.098612,0,0,0,0,0,1,0,67,8.128023,1.098612,4.293185,1 +11,2,0,0,3,226590,0,3387.097,18.45175,0,9,1,77.26865,13.86792,0,0,0,91.13657,0,0,0,4,0,3,81.4,0,0,67,0,0,0,0,1.098612,0,0,0,0,0,1,0,67,8.128023,1.098612,4.512359,1 +11,2,0,0,1,226597,0,3651.613,23.3128,0,10,1,147.2326,0,0,0,0,147.2326,0,0,0,4,0,3,81.9,17.2,0,67.9,0,0,0,0,1.098612,0,0,0,0,1,0,0,67.9,8.203198,1.098612,4.992013,1 +11,2,0,0,2,226597,0,3651.613,24.3128,0,10,1,41.20213,2.787203,0,0,0,43.98933,0,0,0,2,0,4,81.9,17.2,0,67.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,67.9,8.203198,1.386294,3.783947,1 +11,2,0,0,3,226597,0,3651.613,25.3128,0,10,1,147.929,0,0,0,0,147.929,0,0,0,5,0,4,81.9,17.2,0,67.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,67.9,8.203198,1.386294,4.996733,1 +11,2,0,0,1,226598,0,3651.613,24.18617,1,12,1,18.41405,0,41.07504,0,286.5088,345.9979,1,0,0,1,0,3,76.1,10.3,0,86.4,0,0,0,0,1.098612,0,0,0,0,1,0,0,86.4,8.203198,1.098612,5.846433,1 +11,2,0,0,2,226598,0,3651.613,25.18617,1,12,1,16.96558,0,0,0,0,16.96558,0,0,0,1,0,4,76.1,10.3,0,86.4,0,0,0,0,1.386294,0,0,0,0,1,0,0,86.4,8.203198,1.386294,2.831187,1 +11,2,0,0,3,226598,0,3651.613,26.18617,1,12,1,45.59748,0,0,0,0,45.59748,0,0,0,2,0,4,76.1,10.3,0,86.4,0,0,0,0,1.386294,0,0,0,0,1,0,0,86.4,8.203198,1.386294,3.819853,1 +11,2,0,1,1,226608,0,8465.103,25.99042,0,8,1,171.4286,33.48248,33.20216,0,0,238.1132,0,0,0,8,1,4,59.6,6.9,1,43.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,43.2,9.043825,1.386294,5.472746,1 +11,2,0,1,2,226608,0,8465.103,26.99042,0,8,1,20.14742,23.10074,0,0,0,43.24816,0,0,0,3,0,4,59.6,6.9,1,43.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,43.2,9.043825,1.386294,3.766955,1 +11,2,0,1,3,226608,0,8465.103,27.99042,0,8,1,112.124,30.30994,0,0,0,142.4339,0,0,0,5,0,4,59.6,6.9,1,43.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,43.2,9.043825,1.386294,4.958878,1 +11,2,0,1,1,226609,0,8465.103,5.144422,1,11,1,30.72776,11.44474,0,0,0,42.17251,0,0,0,3,0,4,51.7,11.84267,0,40.7,0,0,1,1,1.386294,0,0,0,0,1,0,0,40.7,9.043825,1.386294,3.741769,1 +11,2,0,1,2,226609,0,8465.103,6.144422,1,11,1,72.35872,8.948403,0,0,1045.479,1126.786,1,0,0,4,0,4,51.7,11.84267,0,40.7,0,0,1,1,1.386294,0,0,0,0,1,0,0,40.7,9.043825,1.386294,7.027125,1 +11,2,0,1,3,226609,0,8465.103,7.144422,1,11,1,5.469462,0,0,0,0,5.469462,0,0,0,1,0,4,51.7,11.84267,0,40.7,0,0,1,1,1.386294,0,0,0,0,1,0,0,40.7,9.043825,1.386294,1.69918,1 +11,2,0,1,1,226610,0,8465.103,2.160164,1,11,1,135.31,27.20216,0,0,0,162.5121,0,0,0,10,0,4,81.35272,11.84267,0,3.7,0,0,1,1,1.386294,0,0,0,0,0,1,0,3.7,9.043825,1.386294,5.090753,1 +11,2,0,1,2,226610,0,8465.103,3.160164,1,11,1,64.37347,30.63391,0,0,0,95.00737,0,0,0,7,0,4,81.35272,11.84267,0,3.7,0,0,1,1,1.386294,0,0,0,0,0,1,0,3.7,9.043825,1.386294,4.553955,1 +11,2,0,1,3,226610,0,8465.103,4.160164,1,11,1,109.6171,13.55971,0,0,0,123.1768,0,0,0,6,0,4,81.35272,11.84267,0,3.7,0,0,1,1,1.386294,0,0,0,0,0,1,0,3.7,9.043825,1.386294,4.813621,1 +11,2,0,1,1,226611,0,8465.103,24.04381,1,11,1,324.1509,172.4043,43.98383,0,1084.34,1624.879,2,0,0,17,2,4,41.5,34.5,1,30.7,0,0,0,0,1.386294,0,0,0,0,0,1,0,30.7,9.043825,1.386294,7.393188,1 +11,2,0,1,2,226611,0,8465.103,25.04381,1,11,1,165.8477,230.2998,0,0,0,396.1474,0,0,0,19,0,4,41.5,34.5,1,30.7,0,0,0,0,1.386294,0,0,0,0,0,1,0,30.7,9.043825,1.386294,5.981786,1 +11,2,0,1,3,226611,0,8465.103,26.04381,1,11,1,151.9827,178.7283,0,0,0,330.711,0,0,0,13,0,4,41.5,34.5,1,30.7,0,0,0,0,1.386294,0,0,0,0,0,1,0,30.7,9.043825,1.386294,5.801245,1 +11,2,0,1,1,226634,0,12231.67,53.73854,0,16,1,134.4627,100.5294,0,37.05664,0,234.9921,0,0,2,6,8,2,83,10.3,0,55.7,0,99.4,0,0,.6931472,4.599152,0,0,0,0,0,0,55.7,9.411865,.6931472,5.459552,1 +11,2,0,1,2,226634,0,12231.67,54.73854,0,16,1,54.53668,0,58.67278,392.1332,0,113.2095,0,0,32,2,7,2,83,10.3,0,55.7,0,99.4,0,0,.6931472,4.599152,0,0,0,0,0,0,55.7,9.411865,.6931472,4.72924,1 +11,2,0,1,3,226634,0,12231.67,55.73854,0,16,1,233.6226,23.32443,0,240.3204,484.9355,741.8825,1,0,24,7,2,2,83,10.3,0,55.7,0,99.4,0,0,.6931472,4.599152,0,0,0,0,0,0,55.7,9.411865,.6931472,6.609191,1 +11,2,0,1,1,226635,0,12231.67,48.32581,1,12,1,79.4071,86.87136,54.52091,63.52568,0,220.7994,0,0,3,4,0,2,72.9,17.2,1,63.6,0,99.4,0,0,.6931472,4.599152,0,0,0,0,1,0,63.6,9.411865,.6931472,5.397254,1 +11,2,0,1,2,226635,0,12231.67,49.32581,1,12,1,114.3822,92.49517,0,361.9691,0,206.8774,0,0,30,6,0,2,72.9,17.2,1,63.6,0,99.4,0,0,.6931472,4.599152,0,0,0,0,1,0,63.6,9.411865,.6931472,5.332127,1 +11,2,0,1,3,226635,0,12231.67,50.32581,1,12,1,91.23276,39.55496,0,300.4005,0,130.7877,0,0,27,4,0,2,72.9,17.2,1,63.6,0,99.4,0,0,.6931472,4.599152,0,0,0,0,1,0,63.6,9.411865,.6931472,4.873576,1 +13,2,0,1,1,226654,0,7791.202,43.89322,1,10,1,5.32198,25.76903,0,0,0,31.09101,0,0,0,1,0,2,71.8,27.6,0,77.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,77.3,8.960878,.6931472,3.436918,1 +13,2,0,1,2,226654,0,7791.202,44.89322,1,10,1,64.46922,22.56423,49.41832,0,0,136.4518,0,0,0,8,0,2,71.8,27.6,0,77.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,77.3,8.960878,.6931472,4.915971,1 +13,2,0,1,3,226654,0,7791.202,45.89322,1,10,1,16.84636,3.063792,0,0,0,19.91015,0,0,0,2,0,2,71.8,27.6,0,77.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,77.3,8.960878,.6931472,2.99123,1 +13,2,0,1,1,226655,0,7791.202,49.58795,0,11,1,0,45.9074,0,0,0,45.9074,0,0,0,0,0,2,83,17.2,0,67,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,67,8.960878,.6931472,3.826626,1 +13,2,0,1,2,226655,0,7791.202,50.58795,0,11,1,88.4634,53.61609,0,0,0,142.0795,0,0,0,4,0,2,83,17.2,0,67,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,67,8.960878,.6931472,4.956387,1 +13,2,0,1,3,226655,0,7791.202,51.58795,0,11,1,26.05571,86.48697,47.10242,0,0,159.6451,0,0,0,3,0,2,83,17.2,0,67,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,67,8.960878,.6931472,5.072953,1 +14,2,95,1,1,226665,0,10747.8,10.54073,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,73.3,11.84267,0,77.8,725.25,452.58,1,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,77.8,9.28255,1.609438,,0 +14,2,95,1,2,226665,0,10747.8,11.54073,0,12,1,15.99612,0,37.11585,0,0,53.11197,0,0,0,1,0,5,73.3,11.84267,0,77.8,725.25,452.58,1,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,77.8,9.28255,1.609438,3.972402,1 +14,2,95,1,3,226665,0,10747.8,12.54073,0,12,1,17.07098,0,0,0,0,17.07098,0,0,0,1,0,5,73.3,11.84267,0,77.8,725.25,452.58,1,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,77.8,9.28255,1.609438,2.83738,1 +14,2,95,1,4,226665,0,10747.8,13.54073,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,73.3,11.84267,0,77.8,725.25,452.58,1,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,77.8,9.28255,1.609438,,0 +14,2,95,1,5,226665,0,10747.8,14.54073,0,12,1,14.78197,0,21.0643,0,0,35.84627,0,0,0,1,0,5,73.3,11.84267,0,77.8,725.25,452.58,1,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,77.8,9.28255,1.609438,3.579239,1 +14,2,95,1,1,226666,0,10747.8,11.95893,1,12,1,81.95849,0,16.76424,0,0,98.72272,0,0,0,13,0,5,71.7,11.84267,0,85.2,725.25,452.58,1,1,1.609438,6.114964,0,4.564348,6.63781,0,0,0,85.2,9.28255,1.609438,4.592315,1 +14,2,95,1,2,226666,0,10747.8,12.95893,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,71.7,11.84267,0,85.2,725.25,452.58,1,1,1.609438,6.114964,0,4.564348,6.63781,0,0,0,85.2,9.28255,1.609438,,0 +14,2,95,1,3,226666,0,10747.8,13.95893,1,12,1,17.07098,0,14.72597,0,0,31.79695,0,0,0,1,0,5,71.7,11.84267,0,85.2,725.25,452.58,1,1,1.609438,6.114964,0,4.564348,6.63781,0,0,0,85.2,9.28255,1.609438,3.45937,1 +14,2,95,1,4,226666,0,10747.8,14.95893,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,71.7,11.84267,0,85.2,725.25,452.58,1,1,1.609438,6.114964,0,4.564348,6.63781,0,0,0,85.2,9.28255,1.609438,,0 +14,2,95,1,5,226666,0,10747.8,15.95893,1,12,1,0,0,15.83888,0,0,15.83888,0,0,0,0,0,5,71.7,11.84267,0,85.2,725.25,452.58,1,1,1.609438,6.114964,0,4.564348,6.63781,0,0,0,85.2,9.28255,1.609438,2.762467,1 +14,2,95,1,1,226667,0,10747.8,34.52703,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,73.9,3.4,0,85.2,725.25,452.58,0,0,1.609438,6.114964,0,4.564348,6.63781,1,0,0,85.2,9.28255,1.609438,,0 +14,2,95,1,2,226667,0,10747.8,35.52703,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,73.9,3.4,0,85.2,725.25,452.58,0,0,1.609438,6.114964,0,4.564348,6.63781,1,0,0,85.2,9.28255,1.609438,,0 +14,2,95,1,3,226667,0,10747.8,36.52703,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,73.9,3.4,0,85.2,725.25,452.58,0,0,1.609438,6.114964,0,4.564348,6.63781,1,0,0,85.2,9.28255,1.609438,,0 +14,2,95,1,4,226667,0,10747.8,37.52703,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,73.9,3.4,0,85.2,725.25,452.58,0,0,1.609438,6.114964,0,4.564348,6.63781,1,0,0,85.2,9.28255,1.609438,,0 +14,2,95,1,5,226667,0,10747.8,38.52703,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,73.9,3.4,0,85.2,725.25,452.58,0,0,1.609438,6.114964,0,4.564348,6.63781,1,0,0,85.2,9.28255,1.609438,,0 +14,2,95,1,1,226668,0,10747.8,30.80082,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,60.6,10.3,0,72.7,725.25,452.58,0,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,72.7,9.28255,1.609438,,0 +14,2,95,1,2,226668,0,10747.8,31.80082,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,60.6,10.3,0,72.7,725.25,452.58,0,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,72.7,9.28255,1.609438,,0 +14,2,95,1,3,226668,0,10747.8,32.80082,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,60.6,10.3,0,72.7,725.25,452.58,0,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,72.7,9.28255,1.609438,,0 +14,2,95,1,4,226668,0,10747.8,33.80082,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,60.6,10.3,0,72.7,725.25,452.58,0,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,72.7,9.28255,1.609438,,0 +14,2,95,1,5,226668,0,10747.8,34.80082,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,60.6,10.3,0,72.7,725.25,452.58,0,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,72.7,9.28255,1.609438,,0 +14,2,95,1,1,226669,0,10747.8,13.00205,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,76.7,11.84267,0,88.9,725.25,452.58,1,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,88.9,9.28255,1.609438,,0 +14,2,95,1,2,226669,0,10747.8,14.00205,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,76.7,11.84267,0,88.9,725.25,452.58,1,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,88.9,9.28255,1.609438,,0 +14,2,95,1,3,226669,0,10747.8,15.00205,0,12,1,30.54807,0,34.39802,0,0,64.94609,0,0,0,2,0,5,76.7,11.84267,0,88.9,725.25,452.58,1,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,88.9,9.28255,1.609438,4.173558,1 +14,2,95,1,4,226669,0,10747.8,16.00205,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,76.7,11.84267,0,88.9,725.25,452.58,1,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,88.9,9.28255,1.609438,,0 +14,2,95,1,5,226669,0,10747.8,17.00205,0,12,1,16.62971,0,36.19734,0,0,52.82705,0,0,0,1,0,5,76.7,11.84267,0,88.9,725.25,452.58,1,0,1.609438,6.114964,0,4.564348,6.63781,0,0,0,88.9,9.28255,1.609438,3.967023,1 +11,2,0,1,1,226677,0,13673.9,16.39699,0,15,1,6.881948,2.964531,0,0,0,9.846479,0,0,0,1,0,5,77.1,0,0,95.5,0,96,1,0,1.609438,4.564348,0,0,0,0,0,0,95.5,9.523317,1.609438,2.287114,1 +11,2,0,1,2,226677,0,13673.9,17.39699,0,15,1,6.756757,0,0,0,0,6.756757,0,0,0,1,0,5,77.1,0,0,95.5,0,96,1,0,1.609438,4.564348,0,0,0,0,0,0,95.5,9.523317,1.609438,1.910543,1 +11,2,0,1,3,226677,0,13673.9,18.39699,0,15,1,6.675568,0,0,0,0,6.675568,0,0,0,1,0,5,77.1,0,0,95.5,0,96,0,0,1.609438,4.564348,0,0,0,0,0,0,95.5,9.523317,1.609438,1.898454,1 +11,2,0,1,4,226677,0,13673.9,19.39699,0,15,1,17.48678,0,15.1281,0,0,32.61488,0,0,0,1,0,5,77.1,0,0,95.5,0,96,0,0,1.609438,4.564348,0,0,0,0,0,0,95.5,9.523317,1.609438,3.484769,1 +11,2,0,1,5,226677,0,13673.9,20.39699,0,15,1,41.55059,0,0,0,0,41.55059,0,0,0,3,0,5,77.1,0,0,95.5,0,96,0,0,1.609438,4.564348,0,0,0,0,0,0,95.5,9.523317,1.609438,3.726912,1 +11,2,0,1,1,226678,0,13673.9,14.59001,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,60.6,0,0,72.7,0,96,1,0,1.609438,4.564348,0,0,0,0,0,0,72.7,9.523317,1.609438,,0 +11,2,0,1,2,226678,0,13673.9,15.59001,0,15,1,103.5232,0,3.378378,0,0,106.9015,0,0,0,8,0,5,60.6,0,0,72.7,0,96,1,0,1.609438,4.564348,0,0,0,0,0,0,72.7,9.523317,1.609438,4.671908,1 +11,2,0,1,3,226678,0,13673.9,16.59001,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,60.6,0,0,72.7,0,96,1,0,1.609438,4.564348,0,0,0,0,0,0,72.7,9.523317,1.609438,,0 +11,2,0,1,4,226678,0,13673.9,17.59001,0,15,1,41.78934,1.606344,0,0,0,43.39569,0,0,0,1,0,5,60.6,0,0,72.7,0,96,1,0,1.609438,4.564348,0,0,0,0,0,0,72.7,9.523317,1.609438,3.77036,1 +11,2,0,1,5,226678,0,13673.9,18.59001,0,15,1,66.8805,0,10.35557,0,0,77.23607,0,0,0,4,0,5,60.6,0,0,72.7,0,96,0,0,1.609438,4.564348,0,0,0,0,0,0,72.7,9.523317,1.609438,4.346867,1 +11,2,0,1,1,226679,0,13673.9,54.53525,0,12,1,96.45315,21.9693,48.48597,0,0,166.9084,0,0,0,10,0,5,54.3,31,1,36.4,0,96,0,0,1.609438,4.564348,0,0,0,1,0,0,36.4,9.523317,1.609438,5.117445,1 +11,2,0,1,2,226679,0,13673.9,55.53525,0,12,1,56.94981,16.38514,23.64865,0,0,96.98359,0,0,0,6,0,5,54.3,31,1,36.4,0,96,0,0,1.609438,4.564348,0,0,0,1,0,0,36.4,9.523317,1.609438,4.574542,1 +11,2,0,1,3,226679,0,13673.9,56.53525,0,12,1,20.0267,72.06943,0,0,0,92.09613,0,0,0,3,0,5,54.3,31,1,36.4,0,96,0,0,1.609438,4.564348,0,0,0,1,0,0,36.4,9.523317,1.609438,4.522833,1 +11,2,0,1,4,226679,0,13673.9,57.53525,0,12,1,34.97357,54.40016,16.99878,0,0,106.3725,0,0,0,3,0,5,54.3,31,1,36.4,0,96,0,0,1.609438,4.564348,0,0,0,1,0,0,36.4,9.523317,1.609438,4.666947,1 +11,2,0,1,5,226679,0,13673.9,58.53525,0,12,1,75.87977,83.64369,27.30938,0,0,186.8328,0,0,0,8,0,5,54.3,31,1,36.4,0,96,0,0,1.609438,4.564348,0,0,0,1,0,0,36.4,9.523317,1.609438,5.230214,1 +11,2,0,1,1,226680,0,13673.9,11.99726,1,15,1,0,0,0,0,0,0,0,0,0,0,0,5,85,11.84267,0,96.3,0,96,1,1,1.609438,4.564348,0,0,0,0,0,0,96.3,9.523317,1.609438,,0 +11,2,0,1,2,226680,0,13673.9,12.99726,1,15,1,39.57529,2.123552,0,0,0,41.69884,0,0,0,5,0,5,85,11.84267,0,96.3,0,96,1,1,1.609438,4.564348,0,0,0,0,0,0,96.3,9.523317,1.609438,3.730473,1 +11,2,0,1,3,226680,0,13673.9,13.99726,1,15,1,40.49844,2.180685,0,0,0,42.67913,0,0,0,4,0,5,85,11.84267,0,96.3,0,96,1,1,1.609438,4.564348,0,0,0,0,0,0,96.3,9.523317,1.609438,3.75371,1 +11,2,0,1,4,226680,0,13673.9,14.99726,1,15,1,53.88369,0,0,0,0,53.88369,0,0,0,6,0,5,85,11.84267,0,96.3,0,96,1,1,1.609438,4.564348,0,0,0,0,0,0,96.3,9.523317,1.609438,3.986828,1 +11,2,0,1,5,226680,0,13673.9,15.99726,1,15,1,87.97654,8.467742,0,0,0,96.44428,0,0,0,4,0,5,85,11.84267,0,96.3,0,96,1,1,1.609438,4.564348,0,0,0,0,0,0,96.3,9.523317,1.609438,4.568965,1 +11,2,0,1,1,226681,0,13673.9,47.07734,1,15,1,118.6871,47.98835,51.21228,0,0,217.8878,0,0,0,9,0,5,70.2,10.3,0,93.2,0,96,0,0,1.609438,4.564348,0,0,0,0,0,0,93.2,9.523317,1.609438,5.38398,1 +11,2,0,1,2,226681,0,13673.9,48.07734,1,15,1,0,7.504826,0,0,0,7.504826,0,0,0,0,0,5,70.2,10.3,0,93.2,0,96,0,0,1.609438,4.564348,0,0,0,0,0,0,93.2,9.523317,1.609438,2.015546,1 +11,2,0,1,3,226681,0,13673.9,49.07734,1,15,1,11.12595,0,43.96084,0,0,55.08678,0,0,0,0,1,5,70.2,10.3,0,93.2,0,96,0,0,1.609438,4.564348,0,0,0,0,0,0,93.2,9.523317,1.609438,4.00891,1 +11,2,0,1,4,226681,0,13673.9,50.07734,1,15,1,7.726718,0,0,0,0,7.726718,0,0,0,1,0,5,70.2,10.3,0,93.2,0,96,0,0,1.609438,4.564348,0,0,0,0,0,0,93.2,9.523317,1.609438,2.044684,1 +11,2,0,1,5,226681,0,13673.9,51.07734,1,15,1,21.99413,6.799853,0,0,0,28.79399,0,0,0,3,0,5,70.2,10.3,0,93.2,0,96,0,0,1.609438,4.564348,0,0,0,0,0,0,93.2,9.523317,1.609438,3.360167,1 +13,2,0,1,1,226697,0,11253.96,47.55099,0,12,1,85.09794,13.26098,38.83536,222.3399,0,137.1943,0,0,12,5,0,3,59,13.8,1,38.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,38.6,9.328564,1.098612,4.921398,1 +13,2,0,1,2,226697,0,11253.96,48.55099,0,12,1,0,9.942085,0,33.78378,0,9.942085,0,0,2,0,0,3,59,13.8,1,38.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,38.6,9.328564,1.098612,2.296777,1 +13,2,0,1,3,226697,0,11253.96,49.55099,0,12,1,159.101,0,0,0,0,159.101,0,0,0,6,0,3,59,13.8,1,38.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,38.6,9.328564,1.098612,5.06954,1 +13,2,0,1,1,226698,0,11253.96,52.63792,1,15,1,98.99418,95.84436,42.35045,1101.112,0,237.189,0,0,52,3,2,3,91.5,20.7,0,68.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.328564,1.098612,5.468857,1 +13,2,0,1,2,226698,0,11253.96,53.63792,1,15,1,194.1361,46.35618,0,926.6409,0,240.4923,0,0,47,6,2,3,91.5,20.7,0,68.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.328564,1.098612,5.482688,1 +13,2,0,1,3,226698,0,11253.96,54.63792,1,15,1,107.9217,117.4232,0,907.8772,0,225.3449,0,0,49,3,2,3,91.5,20.7,0,68.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.328564,1.098612,5.417632,1 +13,2,0,1,1,226699,0,11253.96,6.850103,0,15,1,52.6469,5.399683,0,0,0,58.04659,0,0,0,4,0,3,93.3,11.84267,0,77.8,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.328564,1.098612,4.061246,1 +13,2,0,1,2,226699,0,11253.96,7.850103,0,15,1,13.51351,2.871622,0,0,0,16.38514,0,0,0,1,0,3,93.3,11.84267,0,77.8,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.328564,1.098612,2.796375,1 +13,2,0,1,3,226699,0,11253.96,8.850102,0,15,1,28.48242,3.004005,0,0,0,31.48643,0,0,0,2,0,3,93.3,11.84267,0,77.8,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.328564,1.098612,3.449557,1 +16,2,95,0,1,226709,0,9902.053,40.31485,1,12,1,24.89293,0,0,0,0,24.89293,0,0,0,2,0,1,70.2,27.6,0,85.2,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,85.2,9.200599,0,3.214584,1 +16,2,95,0,2,226709,0,9902.053,41.31485,1,12,1,101.4153,0,0,0,0,101.4153,0,0,0,3,0,1,70.2,27.6,0,85.2,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,85.2,9.200599,0,4.619224,1 +16,2,95,0,3,226709,0,9902.053,42.31485,1,12,1,23.14815,0,0,0,0,23.14815,0,0,0,2,0,1,70.2,27.6,0,85.2,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,85.2,9.200599,0,3.141915,1 +16,2,95,0,4,226709,0,9902.053,43.31485,1,12,1,76.30273,0,0,0,0,76.30273,0,0,0,2,0,1,70.2,27.6,0,85.2,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,85.2,9.200599,0,4.334709,1 +16,2,95,0,5,226709,0,9902.053,44.31485,1,12,1,68.92697,0,0,0,0,68.92697,0,0,0,2,2,1,70.2,27.6,0,85.2,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,85.2,9.200599,0,4.233047,1 +13,2,0,1,1,226714,0,8665.641,1.0705,0,12,1,12.31263,0,0,0,0,12.31263,0,0,0,1,0,3,81.35272,11.84267,0,77.8,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.067237,1.098612,2.510626,1 +13,2,0,1,1,226715,0,8665.641,26.11088,0,14,1,0,3.329764,0,0,0,3.329764,0,0,0,0,0,3,80.3,13.8,0,70.5,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,70.5,9.067237,1.098612,1.202901,1 +13,2,0,1,1,226716,0,8665.641,22.25599,1,12,1,13.3833,0,19.05782,0,0,32.44111,0,0,0,0,1,3,59,6.9,0,84.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,84.1,9.067237,1.098612,3.479427,1 +19,2,25,1,1,226727,0,16639.88,57.39083,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,82.4,13.8,0,84.1,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,84.1,9.719618,1.609438,,0 +19,2,25,1,2,226727,0,16639.88,58.39083,1,12,1,5.332041,2.544838,0,0,0,7.876878,0,0,0,1,0,5,82.4,13.8,0,84.1,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,84.1,9.719618,1.609438,2.063932,1 +19,2,25,1,3,226727,0,16639.88,59.39083,1,12,1,20.21563,0,30.8266,0,0,51.04223,0,0,0,1,0,4,82.4,13.8,0,84.1,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,84.1,9.719618,1.386294,3.932653,1 +19,2,25,1,1,226728,0,16639.88,20.04107,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,62.2,3.4,0,77.3,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,77.3,9.719618,1.609438,,0 +19,2,25,1,2,226728,0,16639.88,21.04107,1,12,1,46.53417,0,0,0,0,46.53417,0,0,0,1,1,5,62.2,3.4,0,77.3,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,77.3,9.719618,1.609438,3.840187,1 +19,2,25,1,3,226728,0,16639.88,22.04107,1,12,1,148.4726,0,0,0,5523.145,5671.617,1,0,0,5,0,4,62.2,3.4,0,77.3,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,77.3,9.719618,1.386294,8.643229,1 +19,2,25,1,1,226729,0,16639.88,55.65229,0,13,1,199.4678,12.54391,36.2959,0,6307.914,6556.221,2,0,0,12,0,5,80.3,13.8,0,69.3,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,69.3,9.719618,1.609438,8.78817,1 +19,2,25,1,2,226729,0,16639.88,56.65229,0,13,1,989.3844,245.7925,291.6093,0,0,1526.786,0,0,0,62,0,5,80.3,13.8,0,69.3,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,69.3,9.719618,1.609438,7.33092,1 +19,2,25,1,3,226729,0,16639.88,57.65229,0,13,1,1613.073,519.4654,325.9164,0,4942.969,7401.424,1,0,0,74,3,4,80.3,13.8,0,69.3,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,69.3,9.719618,1.386294,8.909428,1 +19,2,25,0,1,226730,0,16639.88,18.30527,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,64.9,3.4,0,65.9,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,65.9,9.719618,1.609438,,0 +19,2,25,0,2,226730,0,16639.88,19.30527,0,10,1,170.7222,10.61561,0,0,0,181.3379,0,0,0,3,0,5,64.9,3.4,0,65.9,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,65.9,9.719618,1.609438,5.200362,1 +19,2,25,1,1,226731,0,16639.88,15.66051,1,12,1,27.54124,0,27.35498,0,0,54.89622,0,0,0,2,0,5,74.5,3.4,1,80.7,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,80.7,9.719618,1.609438,4.005445,1 +19,2,25,1,2,226731,0,16639.88,16.66051,1,12,1,53.87785,3.756665,0,0,0,57.63451,0,0,0,1,0,5,74.5,3.4,1,80.7,1000,1000,1,1,1.609438,6.907755,0,3.258096,8.294049,1,0,0,80.7,9.719618,1.609438,4.054121,1 +19,2,25,1,3,226731,0,16639.88,17.66051,1,12,1,92.09344,0,0,0,0,92.09344,0,0,0,3,0,4,74.5,3.4,1,80.7,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,80.7,9.719618,1.386294,4.522804,1 +16,2,95,1,1,226753,0,17438.12,31.40315,1,17,1,79.4071,52.63631,0,0,0,132.0434,0,0,0,11,1,1,85.6,6.9,0,79.5,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,79.5,9.766472,0,4.883131,1 +16,2,95,1,2,226753,0,17438.12,32.40315,1,17,1,110.1593,123.5666,0,0,726.1824,959.9083,1,0,0,16,0,1,85.6,6.9,0,79.5,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,79.5,9.766472,0,6.866838,1 +16,2,95,1,3,226753,0,17438.12,33.40315,1,17,1,146.1949,92.3053,0,0,0,238.5002,0,0,0,26,0,2,85.6,6.9,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,79.5,9.766472,.6931472,5.47437,1 +19,2,25,0,1,226778,0,6173.021,1.037645,0,13,1,75.96612,4.547379,0,0,0,80.5135,0,0,0,7,0,4,81.35272,11.84267,0,100,1000,0,1,0,1.386294,0,0,3.258096,8.294049,0,0,0,100,8.728106,1.386294,4.388425,1 +19,2,25,0,2,226778,0,6173.021,2.037645,0,13,1,50.43436,4.430502,0,0,0,54.86486,0,0,0,3,3,4,81.35272,11.84267,0,100,1000,0,1,0,1.386294,0,0,3.258096,8.294049,0,0,0,100,8.728106,1.386294,4.004873,1 +19,2,25,0,3,226778,0,6173.021,3.037645,0,13,1,79.87984,2.403204,0,0,0,82.28304,0,0,0,4,0,4,81.35272,11.84267,0,100,1000,0,1,0,1.386294,0,0,3.258096,8.294049,0,0,0,100,8.728106,1.386294,4.410165,1 +19,2,25,0,4,226778,0,6173.021,4.037645,0,13,1,4.880033,0,0,0,0,4.880033,0,0,0,1,0,4,81.35272,11.84267,0,100,1000,0,1,0,1.386294,0,0,3.258096,8.294049,0,0,0,100,8.728106,1.386294,1.585152,1 +19,2,25,0,5,226778,0,6173.021,5.037645,0,13,1,33.21481,0,0,0,0,33.21481,0,0,0,2,0,4,81.35272,11.84267,0,100,1000,0,1,0,1.386294,0,0,3.258096,8.294049,0,0,0,100,8.728106,1.386294,3.502996,1 +19,2,25,0,1,226779,0,6173.021,3.493498,0,13,1,23.29275,4.547379,0,0,0,27.84013,0,0,0,3,0,4,81.35272,11.84267,0,63,1000,0,1,0,1.386294,0,0,3.258096,8.294049,0,0,0,63,8.728106,1.386294,3.326478,1 +19,2,25,0,2,226779,0,6173.021,4.493497,0,13,1,16.89189,0,0,0,0,16.89189,0,0,0,2,0,4,81.35272,11.84267,0,63,1000,0,1,0,1.386294,0,0,3.258096,8.294049,0,0,0,63,8.728106,1.386294,2.826834,1 +19,2,25,0,3,226779,0,6173.021,5.493497,0,13,1,12.01602,0,0,0,0,12.01602,0,0,0,1,0,4,81.35272,11.84267,0,63,1000,0,1,0,1.386294,0,0,3.258096,8.294049,0,0,0,63,8.728106,1.386294,2.486241,1 +19,2,25,0,4,226779,0,6173.021,6.493497,0,13,1,25.41277,0,0,0,0,25.41277,0,0,0,2,0,4,81.35272,11.84267,0,63,1000,0,1,0,1.386294,0,0,3.258096,8.294049,0,0,0,63,8.728106,1.386294,3.235252,1 +19,2,25,0,5,226779,0,6173.021,7.493497,0,13,1,54.2522,0,2.199414,0,0,56.45161,0,0,0,4,0,4,81.35272,11.84267,0,63,1000,0,1,0,1.386294,0,0,3.258096,8.294049,0,0,0,63,8.728106,1.386294,4.033384,1 +19,2,25,0,1,226780,0,6173.021,27.05544,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,68.6,10.3,0,54.5,1000,0,0,0,1.386294,0,0,3.258096,8.294049,0,0,0,54.5,8.728106,1.386294,,0 +19,2,25,0,2,226780,0,6173.021,28.05544,0,12,1,262.3069,0,0,259.4112,0,262.3069,0,0,25,1,34,4,68.6,10.3,0,54.5,1000,0,0,0,1.386294,0,0,3.258096,8.294049,0,0,0,54.5,8.728106,1.386294,5.569515,1 +19,2,25,0,3,226780,0,6173.021,29.05544,0,12,1,87.22742,0,0,278.1487,0,87.22742,0,0,29,0,14,4,68.6,10.3,0,54.5,1000,0,0,0,1.386294,0,0,3.258096,8.294049,0,0,0,54.5,8.728106,1.386294,4.468519,1 +19,2,25,0,4,226780,0,6173.021,30.05544,0,12,1,24.40016,0,0,0,0,24.40016,0,0,0,0,4,4,68.6,10.3,0,54.5,1000,0,0,0,1.386294,0,0,3.258096,8.294049,0,0,0,54.5,8.728106,1.386294,3.19459,1 +19,2,25,0,5,226780,0,6173.021,31.05544,0,12,1,71.48094,0,0,0,0,71.48094,0,0,0,2,10,4,68.6,10.3,0,54.5,1000,0,0,0,1.386294,0,0,3.258096,8.294049,0,0,0,54.5,8.728106,1.386294,4.269431,1 +19,2,25,0,1,226781,0,6173.021,25.98768,1,13,1,28.32186,6.352568,0,0,0,34.67443,0,0,0,3,0,4,62.2,13.8,0,90.9,1000,0,0,0,1.386294,0,0,3.258096,8.294049,0,0,0,90.9,8.728106,1.386294,3.546003,1 +19,2,25,0,2,226781,0,6173.021,26.98768,1,13,1,197.3793,2.171815,33.98649,639.4788,0,233.5376,0,0,56,4,2,4,62.2,13.8,0,90.9,1000,0,0,0,1.386294,0,0,3.258096,8.294049,0,0,0,90.9,8.728106,1.386294,5.453343,1 +19,2,25,0,3,226781,0,6173.021,27.98768,1,13,1,71.53983,29.00757,0,333.7784,1728.781,1829.328,1,0,34,6,0,4,62.2,13.8,0,90.9,1000,0,0,0,1.386294,0,0,3.258096,8.294049,0,0,0,90.9,8.728106,1.386294,7.511704,1 +19,2,25,0,4,226781,0,6173.021,28.98768,1,13,1,36.49858,0,0,445.303,0,36.49858,0,0,29,1,0,4,62.2,13.8,0,90.9,1000,0,0,0,1.386294,0,0,3.258096,8.294049,0,0,0,90.9,8.728106,1.386294,3.597273,1 +19,2,25,0,5,226781,0,6173.021,29.98768,1,13,1,38.8563,8.614369,36.20968,0,0,83.68035,0,0,0,2,1,4,62.2,13.8,0,90.9,1000,0,0,0,1.386294,0,0,3.258096,8.294049,0,0,0,90.9,8.728106,1.386294,4.427004,1 +5,2,25,0,1,226782,0,3041.642,28.73922,0,12,1,195.6058,4.274571,0,0,0,199.8804,0,0,1,4,0,1,83,6.9,0,87.5,188.35,0,0,0,0,0,0,3.258096,6.624596,0,0,0,87.5,8.020482,0,5.297719,1 +5,2,25,0,2,226782,0,3041.642,29.73922,0,12,1,121.7296,1.944577,0,0,0,123.6741,0,0,0,4,0,1,83,6.9,0,87.5,188.35,0,0,0,0,0,0,3.258096,6.624596,0,0,0,87.5,8.020482,0,4.81765,1 +5,2,25,0,3,226782,0,3041.642,30.73922,0,12,1,205.4434,0,0,0,0,205.4434,0,0,0,2,11,1,83,6.9,0,87.5,188.35,0,0,0,0,0,0,3.258096,6.624596,0,0,0,87.5,8.020482,0,5.325171,1 +15,2,95,0,1,226790,0,8771.261,26.0397,0,14,1,0,0,0,0,0,0,0,0,0,0,0,2,77.7,6.9,0,81.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,81.8,9.07935,.6931472,,0 +15,2,95,0,2,226790,0,8771.261,27.0397,0,14,1,81.01513,6.573938,0,0,0,87.58907,0,0,0,11,0,3,77.7,6.9,0,81.8,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,81.8,9.07935,1.098612,4.472656,1 +15,2,95,0,3,226790,0,8771.261,28.0397,0,14,1,99.36766,0,0,0,0,99.36766,0,0,0,19,0,3,77.7,6.9,0,81.8,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,81.8,9.07935,1.098612,4.598827,1 +15,2,95,0,4,226790,0,8771.261,29.0397,0,14,1,83.12655,0,0,0,0,83.12655,0,0,0,19,0,4,77.7,6.9,0,81.8,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,81.8,9.07935,1.386294,4.420364,1 +15,2,95,0,5,226790,0,8771.261,30.0397,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,77.7,6.9,0,81.8,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,81.8,9.07935,1.386294,,0 +15,2,95,0,1,226791,0,8771.261,25.08966,1,12,1,163.2762,25.87794,0,0,460.7066,649.8608,1,0,0,8,0,2,84,10.3,0,65.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,65.9,9.07935,.6931472,6.476758,1 +15,2,95,0,2,226791,0,8771.261,26.08966,1,12,1,12.4451,19.05808,0,0,0,31.50317,0,0,0,4,0,3,84,10.3,0,65.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,65.9,9.07935,1.098612,3.450088,1 +15,2,95,0,3,226791,0,8771.261,27.08966,1,12,1,56.23306,7.289973,0,0,942.963,1006.486,1,0,0,0,0,3,84,10.3,0,65.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,65.9,9.07935,1.098612,6.91422,1 +15,2,95,0,4,226791,0,8771.261,28.08966,1,12,1,5.583127,0,0,0,0,5.583127,0,0,0,3,0,4,84,10.3,0,65.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,65.9,9.07935,1.386294,1.719749,1 +15,2,95,0,5,226791,0,8771.261,29.08966,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,84,10.3,0,65.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,65.9,9.07935,1.386294,,0 +18,2,25,1,1,226798,0,10598.83,31.01164,0,11,1,8.56531,2.189507,0,0,0,10.75482,0,0,0,1,0,5,79.8,3.4,0,67,1000,1076.54,0,0,1.609438,6.981507,0,3.258096,8.294049,1,0,0,67,9.268593,1.609438,2.375354,1 +18,2,25,1,2,226798,0,10598.83,32.01163,0,11,1,38.5798,0,0,0,0,38.5798,0,0,0,1,0,5,79.8,3.4,0,67,1000,1076.54,0,0,1.609438,6.981507,0,3.258096,8.294049,1,0,0,67,9.268593,1.609438,3.652729,1 +18,2,25,1,3,226798,0,10598.83,33.01163,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,79.8,3.4,0,67,1000,1076.54,0,0,1.609438,6.981507,0,3.258096,8.294049,1,0,0,67,9.268593,1.609438,,0 +18,2,25,1,1,226799,0,10598.83,10.32991,0,12,1,101.0439,6.466809,0,0,0,107.5107,0,0,0,4,0,5,71.7,11.84267,0,93.3,1000,1076.54,1,0,1.609438,6.981507,0,3.258096,8.294049,1,0,0,93.3,9.268593,1.609438,4.67759,1 +18,2,25,1,2,226799,0,10598.83,11.32991,0,12,1,34.65105,0,35.27086,0,0,69.92191,0,0,0,2,0,5,71.7,11.84267,0,93.3,1000,1076.54,1,0,1.609438,6.981507,0,3.258096,8.294049,1,0,0,93.3,9.268593,1.609438,4.247379,1 +18,2,25,1,3,226799,0,10598.83,12.32991,0,12,1,116.2602,0,15.33875,0,0,131.5989,0,0,0,5,0,5,71.7,11.84267,0,93.3,1000,1076.54,1,0,1.609438,6.981507,0,3.258096,8.294049,1,0,0,93.3,9.268593,1.609438,4.879759,1 +18,2,25,1,1,226800,0,10598.83,5.691992,1,12,1,31.31692,0,27.40364,0,0,58.72056,0,0,0,3,1,5,98.3,11.84267,0,92.6,1000,1076.54,1,1,1.609438,6.981507,0,3.258096,8.294049,1,0,0,92.6,9.268593,1.609438,4.07279,1 +18,2,25,1,2,226800,0,10598.83,6.691992,1,12,1,7.320644,4.519278,0,0,0,11.83992,0,0,0,1,0,5,98.3,11.84267,0,92.6,1000,1076.54,1,1,1.609438,6.981507,0,3.258096,8.294049,1,0,0,92.6,9.268593,1.609438,2.471477,1 +18,2,25,1,3,226800,0,10598.83,7.691992,1,12,1,13.55014,0,26.92864,0,0,40.47877,0,0,0,1,0,5,98.3,11.84267,0,92.6,1000,1076.54,1,1,1.609438,6.981507,0,3.258096,8.294049,1,0,0,92.6,9.268593,1.609438,3.700778,1 +18,2,25,1,1,226801,0,10598.83,7.540041,0,12,1,10.70664,0,0,0,0,10.70664,0,0,0,1,0,5,88.3,11.84267,0,96.3,1000,1076.54,1,0,1.609438,6.981507,0,3.258096,8.294049,1,0,0,96.3,9.268593,1.609438,2.370864,1 +18,2,25,1,2,226801,0,10598.83,8.540041,0,12,1,41.50805,0,0,0,0,41.50805,0,0,0,2,0,5,88.3,11.84267,0,96.3,1000,1076.54,1,0,1.609438,6.981507,0,3.258096,8.294049,1,0,0,96.3,9.268593,1.609438,3.725888,1 +18,2,25,1,3,226801,0,10598.83,9.540041,0,12,1,261.2692,0,0,0,0,261.2692,0,0,0,3,0,5,88.3,11.84267,0,96.3,1000,1076.54,1,0,1.609438,6.981507,0,3.258096,8.294049,1,0,0,96.3,9.268593,1.609438,5.565551,1 +18,2,25,1,1,226802,0,10598.83,29.10335,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,72.3,10.3,1,77.3,1000,1076.54,0,0,1.609438,6.981507,0,3.258096,8.294049,1,0,0,77.3,9.268593,1.609438,,0 +18,2,25,1,2,226802,0,10598.83,30.10335,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,72.3,10.3,1,77.3,1000,1076.54,0,0,1.609438,6.981507,0,3.258096,8.294049,1,0,0,77.3,9.268593,1.609438,,0 +18,2,25,1,3,226802,0,10598.83,31.10335,1,12,1,55.78139,0,31.44535,0,0,87.22674,0,0,0,2,0,5,72.3,10.3,1,77.3,1000,1076.54,0,0,1.609438,6.981507,0,3.258096,8.294049,1,0,0,77.3,9.268593,1.609438,4.468511,1 +11,2,0,1,1,226825,0,4219.355,58.09446,0,8,1,244.0445,8.125993,1.810482,0,1778.481,2032.462,2,0,0,10,0,1,48.9,6.9,1,73.9,0,0,0,0,0,0,0,0,0,0,0,0,73.9,8.347674,0,7.617003,1 +11,2,0,1,2,226825,0,4219.355,59.09446,0,8,1,42.51931,1.954633,591.4913,0,0,635.9653,0,0,0,4,1,1,48.9,6.9,1,73.9,0,0,0,0,0,0,0,0,0,0,0,0,73.9,8.347674,0,6.455144,1 +11,2,0,1,3,226825,0,4219.355,60.09446,0,8,1,0,17.73921,14.0721,0,0,31.8113,0,0,0,0,0,1,48.9,6.9,1,73.9,0,0,0,0,0,0,0,0,0,0,0,0,73.9,8.347674,0,3.459822,1 +6,2,25,0,1,226831,0,12080.35,25.4319,0,14,1,53.84213,0,0,0,0,53.84213,0,0,0,2,0,1,86.2,6.9,0,77.3,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,0,0,77.3,9.399418,0,3.986056,1 +6,2,25,0,2,226831,0,12080.35,26.4319,0,14,1,62.9505,5.305142,0,0,0,68.25565,0,0,0,6,0,1,86.2,6.9,0,77.3,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,0,0,77.3,9.399418,0,4.22326,1 +6,2,25,0,3,226831,0,12080.35,27.4319,0,14,1,48.23788,0,33.97357,0,0,82.21146,0,0,0,3,0,2,86.2,6.9,0,77.3,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,77.3,9.399418,.6931472,4.409295,1 +18,2,25,1,1,226834,1,222.8739,37.48939,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,62.3,17.2,0,64.8,416.4,416.4,0,0,1.609438,6.031646,0,3.258096,7.417941,0,1,0,64.8,5.411083,1.609438,,0 +18,2,25,1,2,226834,1,222.8739,38.48939,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,62.3,17.2,0,64.8,416.4,416.4,0,0,1.609438,6.031646,0,3.258096,7.417941,0,1,0,64.8,5.411083,1.609438,,0 +18,2,25,1,3,226834,1,222.8739,39.48939,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,62.3,17.2,0,64.8,416.4,416.4,0,0,1.609438,6.031646,0,3.258096,7.417941,0,1,0,64.8,5.411083,1.609438,,0 +18,2,25,1,1,226835,1,222.8739,2.069815,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,66.7,416.4,416.4,1,0,1.609438,6.031646,0,3.258096,7.417941,0,1,0,66.7,5.411083,1.609438,,0 +18,2,25,1,2,226835,1,222.8739,3.069815,0,12,1,35.81081,1.858108,0,0,0,37.66892,0,0,0,2,0,5,81.35272,11.84267,0,66.7,416.4,416.4,1,0,1.609438,6.031646,0,3.258096,7.417941,0,1,0,66.7,5.411083,1.609438,3.628835,1 +18,2,25,1,3,226835,1,222.8739,4.069815,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,66.7,416.4,416.4,1,0,1.609438,6.031646,0,3.258096,7.417941,0,1,0,66.7,5.411083,1.609438,,0 +18,2,25,1,1,226836,1,222.8739,14.22313,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,64.4,0,0,65.9,416.4,416.4,1,0,1.609438,6.031646,0,3.258096,7.417941,0,1,0,65.9,5.411083,1.609438,,0 +18,2,25,1,2,226836,1,222.8739,15.22313,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,64.4,0,0,65.9,416.4,416.4,1,0,1.609438,6.031646,0,3.258096,7.417941,0,1,0,65.9,5.411083,1.609438,,0 +18,2,25,1,3,226836,1,222.8739,16.22313,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,64.4,0,0,65.9,416.4,416.4,1,0,1.609438,6.031646,0,3.258096,7.417941,0,1,0,65.9,5.411083,1.609438,,0 +18,2,25,1,1,226837,1,222.8739,15.85216,1,12,1,30.9423,0,0,0,318.5813,349.5236,1,0,0,2,0,5,70.2,0,0,56.8,416.4,416.4,1,1,1.609438,6.031646,0,3.258096,7.417941,0,1,0,56.8,5.411083,1.609438,5.856571,1 +18,2,25,1,2,226837,1,222.8739,16.85216,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,70.2,0,0,56.8,416.4,416.4,1,1,1.609438,6.031646,0,3.258096,7.417941,0,1,0,56.8,5.411083,1.609438,,0 +18,2,25,1,3,226837,1,222.8739,17.85216,1,12,1,30.04005,0,0,0,0,30.04005,0,0,0,3,0,5,70.2,0,0,56.8,416.4,416.4,1,1,1.609438,6.031646,0,3.258096,7.417941,0,1,0,56.8,5.411083,1.609438,3.402532,1 +18,2,25,1,1,226838,1,222.8739,4.372348,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,11.84267,0,81.5,416.4,416.4,1,1,1.609438,6.031646,0,3.258096,7.417941,0,1,0,81.5,5.411083,1.609438,,0 +18,2,25,1,2,226838,1,222.8739,5.372348,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,11.84267,0,81.5,416.4,416.4,1,1,1.609438,6.031646,0,3.258096,7.417941,0,1,0,81.5,5.411083,1.609438,,0 +18,2,25,1,3,226838,1,222.8739,6.372348,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,11.84267,0,81.5,416.4,416.4,1,1,1.609438,6.031646,0,3.258096,7.417941,0,1,0,81.5,5.411083,1.609438,,0 +11,2,0,0,1,226867,0,9482.698,59.85216,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,78.2,10.3,0,55.7,0,0,0,0,0,0,0,0,0,0,1,0,55.7,9.15733,0,,0 +11,2,0,0,2,226867,0,9482.698,60.85216,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,78.2,10.3,0,55.7,0,0,0,0,0,0,0,0,0,0,1,0,55.7,9.15733,0,,0 +11,2,0,0,3,226867,0,9482.698,61.85216,0,12,1,6.738544,0,0,0,0,6.738544,0,0,0,1,0,1,78.2,10.3,0,55.7,0,0,0,0,0,0,0,0,0,0,1,0,55.7,9.15733,0,1.907844,1 +11,2,0,1,1,226868,0,6939.589,53.89185,0,12,1,43.40921,0,0,0,0,43.40921,0,0,0,1,0,2,91,6.9,0,67,0,0,0,0,.6931472,0,0,0,0,1,0,0,67,8.845142,.6931472,3.770672,1 +11,2,0,1,2,226868,0,6939.589,54.89185,0,12,1,125.9652,2.968147,44.56564,0,0,173.499,0,0,0,4,5,2,91,6.9,0,67,0,0,0,0,.6931472,0,0,0,0,1,0,0,67,8.845142,.6931472,5.156172,1 +11,2,0,1,3,226868,0,6939.589,55.89185,0,12,1,257.0093,4.080997,0,0,0,261.0903,0,0,0,4,6,2,91,6.9,0,67,0,0,0,0,.6931472,0,0,0,0,1,0,0,67,8.845142,.6931472,5.564867,1 +11,2,0,1,1,226869,0,6939.589,52.29843,1,8,1,19.58708,3.493912,0,0,0,23.081,0,0,0,1,0,2,89.4,34.5,1,58,0,0,0,0,.6931472,0,0,0,0,1,0,0,58,8.845142,.6931472,3.139009,1 +11,2,0,1,2,226869,0,6939.589,53.29843,1,8,1,0,3.006757,0,0,0,3.006757,0,0,0,0,0,2,89.4,34.5,1,58,0,0,0,0,.6931472,0,0,0,0,1,0,0,58,8.845142,.6931472,1.100862,1 +11,2,0,1,3,226869,0,6939.589,54.29843,1,8,1,257.6769,5.313752,25.81219,0,0,288.8029,0,0,0,3,7,2,89.4,34.5,1,58,0,0,0,0,.6931472,0,0,0,0,1,0,0,58,8.845142,.6931472,5.665744,1 +14,2,95,1,1,226870,0,12958.94,29.13347,0,14,1,47.90895,4.976178,0,0,0,52.88512,0,0,0,5,0,3,79.3,6.9,0,75,815,815,0,0,1.098612,6.703188,0,4.564348,6.754481,0,0,0,75,9.469619,1.098612,3.968122,1 +14,2,95,1,2,226870,0,12958.94,30.13347,0,14,1,22.92471,2.8861,0,0,0,25.81081,0,0,0,2,0,4,79.3,6.9,0,75,815,815,0,0,1.386294,6.703188,0,4.564348,6.754481,0,0,0,75,9.469619,1.386294,3.250793,1 +14,2,95,1,3,226870,0,12958.94,31.13347,0,14,1,114.8198,0,0,0,0,114.8198,0,0,0,2,0,4,79.3,6.9,0,75,815,815,0,0,1.386294,6.703188,0,4.564348,6.754481,0,0,0,75,9.469619,1.386294,4.743364,1 +14,2,95,1,1,226871,0,12958.94,2.078029,0,17,1,24.08682,2.41927,0,0,0,26.50609,0,0,0,3,0,3,81.35272,11.84267,0,85.2,815,815,1,0,1.098612,6.703188,0,4.564348,6.754481,0,0,0,85.2,9.469619,1.098612,3.277375,1 +14,2,95,1,2,226871,0,12958.94,3.078029,0,17,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,85.2,815,815,1,0,1.386294,6.703188,0,4.564348,6.754481,0,0,0,85.2,9.469619,1.386294,,0 +14,2,95,1,3,226871,0,12958.94,4.078029,0,17,1,28.08189,0,0,0,0,28.08189,0,0,0,2,0,4,81.35272,11.84267,0,85.2,815,815,1,0,1.386294,6.703188,0,4.564348,6.754481,0,0,0,85.2,9.469619,1.386294,3.335125,1 +14,2,95,1,1,226872,0,12958.94,28.282,1,17,1,93.96506,30.37586,35.6432,0,626.2043,786.1885,1,0,0,2,0,3,67.6,6.9,0,80.7,815,815,0,0,1.098612,6.703188,0,4.564348,6.754481,0,0,0,80.7,9.469619,1.098612,6.667197,1 +14,2,95,1,2,226872,0,12958.94,29.282,1,17,1,14.96139,13.5666,0,0,0,28.52799,0,0,0,1,0,4,67.6,6.9,0,80.7,815,815,0,0,1.386294,6.703188,0,4.564348,6.754481,0,0,0,80.7,9.469619,1.386294,3.350886,1 +14,2,95,1,3,226872,0,12958.94,30.282,1,17,1,51.84691,9.341344,24.47708,0,0,85.66533,0,0,0,3,0,4,67.6,6.9,0,80.7,815,815,0,0,1.386294,6.703188,0,4.564348,6.754481,0,0,0,80.7,9.469619,1.386294,4.450448,1 +15,2,95,0,1,226873,0,11890.32,7.720739,0,12,1,80.78349,2.218105,0,0,0,83.00159,0,0,0,6,0,4,78.3,11.84267,1,77.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,77.8,9.383564,1.386294,4.41886,1 +15,2,95,0,2,226873,0,11890.32,8.720739,0,12,1,0,1.761583,0,0,0,1.761583,0,0,0,0,0,4,78.3,11.84267,1,77.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,77.8,9.383564,1.386294,.5662128,1 +15,2,95,0,3,226873,0,11890.32,9.720739,0,12,1,4.450378,0,0,0,0,4.450378,0,0,0,1,0,4,78.3,11.84267,1,77.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,77.8,9.383564,1.386294,1.492989,1 +15,2,95,0,1,226874,0,11890.32,42.13826,0,12,1,33.35098,0,0,0,0,33.35098,0,0,0,3,0,4,86.2,13.8,0,88.6,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.383564,1.386294,3.507087,1 +15,2,95,0,2,226874,0,11890.32,43.13826,0,12,1,10.61776,0,0,0,0,10.61776,0,0,0,1,0,4,86.2,13.8,0,88.6,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.383564,1.386294,2.362528,1 +15,2,95,0,3,226874,0,11890.32,44.13826,0,12,1,26.70227,0,0,0,0,26.70227,0,0,0,2,0,4,86.2,13.8,0,88.6,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.383564,1.386294,3.284749,1 +15,2,95,0,1,226875,0,11890.32,41.56057,1,12,1,6.352568,30.82054,0,0,0,37.17311,0,0,0,1,0,4,60.1,20.7,0,68.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,68.2,9.383564,1.386294,3.615586,1 +15,2,95,0,2,226875,0,11890.32,42.56057,1,12,1,0,18.67278,0,0,0,18.67278,0,0,0,0,0,4,60.1,20.7,0,68.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,68.2,9.383564,1.386294,2.927067,1 +15,2,95,0,3,226875,0,11890.32,43.56057,1,12,1,6.675568,30.16021,0,0,0,36.83578,0,0,0,1,0,4,60.1,20.7,0,68.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,68.2,9.383564,1.386294,3.60647,1 +15,2,95,0,1,226876,0,11890.32,15.25804,1,12,1,248.2795,44.76443,0,0,0,293.0439,0,0,0,45,0,4,77.1,6.9,0,83,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,83,9.383564,1.386294,5.680323,1 +15,2,95,0,2,226876,0,11890.32,16.25804,1,12,1,112.9344,48.62452,0,0,0,161.5589,0,0,0,37,0,4,77.1,6.9,0,83,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,83,9.383564,1.386294,5.08487,1 +15,2,95,0,3,226876,0,11890.32,17.25804,1,12,1,24.03204,0,0,0,0,24.03204,0,0,0,2,0,4,77.1,6.9,0,83,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,83,9.383564,1.386294,3.179388,1 +14,2,95,0,1,226884,0,3374.194,14.36277,0,10,1,6.697578,6.434827,0,0,0,13.13241,0,0,0,1,0,2,81.9,6.9,0,72.7,200,200,1,0,.6931472,5.298317,0,4.564348,5.349611,1,0,0,72.7,8.124207,.6931472,2.575083,1 +14,2,95,0,2,226884,0,3374.194,15.36277,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,81.9,6.9,0,72.7,200,200,1,0,.6931472,5.298317,0,4.564348,5.349611,1,0,0,72.7,8.124207,.6931472,,0 +14,2,95,0,3,226884,0,3374.194,16.36276,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,81.9,6.9,0,72.7,200,200,1,0,.6931472,5.298317,0,4.564348,5.349611,1,0,0,72.7,8.124207,.6931472,,0 +14,2,95,0,1,226885,0,3374.194,34.39836,1,10,1,220.2473,29.25811,0,0,0,249.5054,0,0,0,4,7,2,80.9,17.2,1,19.3,200,200,0,0,.6931472,5.298317,0,4.564348,5.349611,1,0,0,19.3,8.124207,.6931472,5.519481,1 +14,2,95,0,2,226885,0,3374.194,35.39836,1,10,1,29.20455,85.98485,0,0,0,115.1894,0,0,0,2,0,2,80.9,17.2,1,19.3,200,200,0,0,.6931472,5.298317,0,4.564348,5.349611,1,0,0,19.3,8.124207,.6931472,4.746578,1 +14,2,95,0,3,226885,0,3374.194,36.39836,1,10,1,224.1873,6.311227,0,0,0,230.4985,0,0,0,4,5,2,80.9,17.2,1,19.3,200,200,0,0,.6931472,5.298317,0,4.564348,5.349611,1,0,0,19.3,8.124207,.6931472,5.440244,1 +13,2,0,0,1,226912,0,6392.962,29.05955,0,14,1,180.0054,4.737688,32.16809,107.0664,0,216.9111,0,0,5,4,2,1,82.4,6.9,0,85.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,85.2,8.763109,0,5.379488,1 +13,2,0,0,2,226912,0,6392.962,30.05955,0,14,1,106.6374,32.06442,1.220107,0,0,139.9219,0,0,0,7,0,1,82.4,6.9,0,85.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,85.2,8.763109,0,4.941084,1 +13,2,0,0,3,226912,0,6392.962,31.05955,0,14,1,93.04427,15.56459,0,0,0,108.6089,0,0,0,7,1,1,82.4,6.9,0,85.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,85.2,8.763109,0,4.687753,1 +13,2,0,0,1,226913,0,5351.32,22.2642,0,12,1,14.28571,3.773585,0,0,0,18.0593,0,0,0,1,0,1,58.5,3.4,0,79.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,79.5,8.585285,0,2.893661,1 +13,2,0,0,2,226913,0,5351.32,23.2642,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,58.5,3.4,0,79.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,79.5,8.585285,0,,0 +13,2,0,0,3,226913,0,5351.32,24.2642,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,58.5,3.4,0,79.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,79.5,8.585285,0,,0 +13,2,0,0,1,226914,0,6853.959,22.12183,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,72.3,13.8,0,68.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,68.2,8.832727,0,,0 +13,2,0,0,2,226914,0,6853.959,23.12183,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,72.3,13.8,0,68.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,68.2,8.832727,0,,0 +13,2,0,0,3,226914,0,6853.959,24.12183,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,72.3,13.8,0,68.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,68.2,8.832727,0,,0 +13,2,0,0,1,226915,0,5033.431,24.43258,0,12,1,3.640146,3.463339,0,0,0,7.103484,0,0,0,1,0,1,85.6,0,0,85.2,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,85.2,8.524055,0,1.960585,1 +13,2,0,0,2,226915,0,5033.431,25.43258,0,12,1,25.20306,0,0,0,0,25.20306,0,0,0,3,0,1,85.6,0,0,85.2,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,85.2,8.524055,0,3.226965,1 +13,2,0,0,3,226915,0,5033.431,26.43258,0,12,1,25.46093,0,0,0,0,25.46093,0,0,0,2,0,1,85.6,0,0,85.2,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,85.2,8.524055,0,3.237145,1 +13,2,0,0,1,226916,0,3809.677,33.50034,0,12,1,8.320333,2.199688,0,0,0,10.52002,0,0,0,1,0,1,65.4,3.4,0,78.4,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,78.4,8.245563,0,2.35328,1 +13,2,0,0,2,226916,0,3809.677,34.50034,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,65.4,3.4,0,78.4,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,78.4,8.245563,0,,0 +13,2,0,0,3,226916,0,3809.677,35.50034,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,65.4,3.4,0,78.4,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,78.4,8.245563,0,,0 +11,2,0,1,1,226944,0,11005.87,30.47228,1,12,1,64.92815,0,11.70836,0,0,76.63651,0,0,0,4,1,4,80.9,10.3,0,80.7,0,455,0,0,1.386294,6.120297,0,0,0,0,0,0,80.7,9.306274,1.386294,4.339074,1 +11,2,0,1,2,226944,0,11005.87,31.47228,1,12,1,86.76685,0,0,29.08386,0,86.76685,0,0,2,3,0,4,80.9,10.3,0,80.7,0,455,0,0,1.386294,6.120297,0,0,0,0,0,0,80.7,9.306274,1.386294,4.463224,1 +11,2,0,1,3,226944,0,11005.87,32.47228,1,12,1,40.31896,0,30.89847,0,0,71.21743,0,0,0,2,1,4,80.9,10.3,0,80.7,0,455,0,0,1.386294,6.120297,0,0,0,0,0,0,80.7,9.306274,1.386294,4.265738,1 +11,2,0,1,1,226945,0,11005.87,5.240246,1,12,1,42.57584,0,0,0,0,42.57584,0,0,0,4,0,4,81.7,11.84267,0,96.3,0,455,1,1,1.386294,6.120297,0,0,0,0,0,0,96.3,9.306274,1.386294,3.751287,1 +11,2,0,1,2,226945,0,11005.87,6.240246,1,12,1,16.48085,0,0,0,0,16.48085,0,0,0,1,0,4,81.7,11.84267,0,96.3,0,455,1,1,1.386294,6.120297,0,0,0,0,0,0,96.3,9.306274,1.386294,2.802199,1 +11,2,0,1,3,226945,0,11005.87,7.240246,1,12,1,17.52022,0,0,0,0,17.52022,0,0,0,2,0,4,81.7,11.84267,0,96.3,0,455,1,1,1.386294,6.120297,0,0,0,0,0,0,96.3,9.306274,1.386294,2.863355,1 +11,2,0,1,1,226946,0,11005.87,8.876112,0,12,1,90.47366,0,31.6711,0,356.86,479.0048,1,0,0,2,1,4,78.3,11.84267,0,100,0,455,1,0,1.386294,6.120297,0,0,0,0,0,0,100,9.306274,1.386294,6.17171,1 +11,2,0,1,2,226946,0,11005.87,9.876112,0,12,1,47.01891,0,0,0,0,47.01891,0,0,0,5,0,4,78.3,11.84267,0,100,0,455,1,0,1.386294,6.120297,0,0,0,0,0,0,100,9.306274,1.386294,3.85055,1 +11,2,0,1,3,226946,0,11005.87,10.87611,0,12,1,26.50494,0,15.27403,0,0,41.77898,0,0,0,2,1,4,78.3,11.84267,0,100,0,455,1,0,1.386294,6.120297,0,0,0,0,0,0,100,9.306274,1.386294,3.732393,1 +11,2,0,1,1,226947,0,11005.87,31.64408,0,16,1,75.83821,0,27.98829,0,0,103.8265,0,0,0,1,1,4,81.4,10.3,0,75,0,455,0,0,1.386294,6.120297,0,0,0,0,0,0,75,9.306274,1.386294,4.642721,1 +11,2,0,1,2,226947,0,11005.87,32.64408,0,16,1,157.2952,0,0,0,0,157.2952,0,0,0,2,14,4,81.4,10.3,0,75,0,455,0,0,1.386294,6.120297,0,0,0,0,0,0,75,9.306274,1.386294,5.058124,1 +11,2,0,1,3,226947,0,11005.87,33.64408,0,16,1,31.89578,0,30.42677,0,0,62.32255,0,0,0,1,3,4,81.4,10.3,0,75,0,455,0,0,1.386294,6.120297,0,0,0,0,0,0,75,9.306274,1.386294,4.132323,1 +11,2,0,0,1,226957,0,8312.61,32.01643,1,12,1,30.72776,23.25607,35.89758,0,0,89.8814,0,0,0,1,1,4,78.2,6.9,0,71.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,71.6,9.025649,1.386294,4.498491,1 +11,2,0,0,2,226957,0,8312.61,33.01643,1,12,1,173.3661,10.07371,31.94103,0,0,215.3808,0,0,0,2,6,4,78.2,6.9,0,71.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,71.6,9.025649,1.386294,5.372408,1 +11,2,0,0,3,226957,0,8312.61,34.01643,1,12,1,135.3692,50.50592,37.18323,0,0,223.0583,0,0,0,4,0,4,78.2,6.9,0,71.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,71.6,9.025649,1.386294,5.407434,1 +11,2,0,0,1,226958,0,8312.61,30.41205,0,15,1,30.72776,0,35.89758,0,0,66.62534,0,0,0,2,1,4,92.6,0,0,73.9,0,0,0,0,1.386294,0,0,0,0,0,0,0,73.9,9.025649,1.386294,4.199085,1 +11,2,0,0,2,226958,0,8312.61,31.41205,0,15,1,71.00737,0,18.32924,0,0,89.33661,0,0,0,2,0,4,92.6,0,0,73.9,0,0,0,0,1.386294,0,0,0,0,0,0,0,73.9,9.025649,1.386294,4.492411,1 +11,2,0,0,3,226958,0,8312.61,32.41205,0,15,1,0,4.484959,40.73838,0,0,45.22334,0,0,0,0,0,4,92.6,0,0,73.9,0,0,0,0,1.386294,0,0,0,0,0,0,0,73.9,9.025649,1.386294,3.811613,1 +11,2,0,0,1,226959,0,8312.61,3.140315,0,12,1,21.83288,1.342318,0,0,0,23.1752,0,0,0,3,0,4,81.35272,11.84267,0,77.8,0,0,1,0,1.386294,0,0,0,0,0,0,0,77.8,9.025649,1.386294,3.143083,1 +11,2,0,0,2,226959,0,8312.61,4.140315,0,12,1,126.2899,15.11548,0,0,414.4226,555.828,1,0,0,7,0,4,81.35272,11.84267,0,77.8,0,0,1,0,1.386294,0,0,0,0,0,0,0,77.8,9.025649,1.386294,6.320459,1 +11,2,0,0,3,226959,0,8312.61,5.140315,0,12,1,15.9526,0,0,0,0,15.9526,0,0,0,1,0,4,81.35272,11.84267,0,77.8,0,0,1,0,1.386294,0,0,0,0,0,0,0,77.8,9.025649,1.386294,2.769622,1 +15,2,95,1,1,226961,0,10456.12,60.88433,1,12,1,220.2223,11.5405,0,0,0,231.7628,0,0,0,7,7,2,64.4,37.9,0,64.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,64.8,9.255038,.6931472,5.445714,1 +15,2,95,1,2,226961,0,10456.12,61.88433,1,12,1,27.02703,14.02992,66.92567,0,0,107.9826,0,0,0,1,3,2,64.4,37.9,0,64.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,64.8,9.255038,.6931472,4.681971,1 +15,2,95,1,3,226961,0,10456.12,62.88433,1,12,1,48.50912,5.358255,0,0,0,53.86738,0,0,0,2,4,2,64.4,37.9,0,64.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,64.8,9.255038,.6931472,3.986525,1 +15,2,95,1,1,226962,0,10456.12,58.45585,0,7,1,75.70143,0,0,0,0,75.70143,0,0,0,2,0,2,81.9,24.1,0,53.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,53.4,9.255038,.6931472,4.326797,1 +15,2,95,1,2,226962,0,10456.12,59.45585,0,7,1,304.5125,11.80985,0,0,606.2741,922.5965,1,0,0,10,0,2,81.9,24.1,0,53.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,53.4,9.255038,.6931472,6.827192,1 +15,2,95,1,3,226962,0,10456.12,60.45585,0,7,1,323.231,12.74588,37.16511,0,0,373.142,0,0,0,5,7,2,81.9,24.1,0,53.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,53.4,9.255038,.6931472,5.921959,1 +13,2,0,1,1,226969,1,5347.801,27.73443,0,12,1,0,1.165514,0,0,0,1.165514,0,0,0,0,0,1,68.1,10.3,0,65.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,65.9,8.584628,0,.1531618,1 +13,2,0,1,2,226969,1,5347.801,28.73443,0,12,1,70.04362,7.489094,41.64324,38.77848,0,119.176,0,0,2,3,1,1,68.1,10.3,0,65.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,65.9,8.584628,0,4.780601,1 +13,2,0,1,3,226969,1,5347.801,29.73443,0,12,1,184.5238,5.287511,0,0,0,189.8113,0,0,0,4,0,1,68.1,10.3,0,65.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,65.9,8.584628,0,5.24603,1 +13,2,0,1,4,226969,1,5347.801,30.73443,0,12,1,25.44112,0,0,0,0,25.44112,0,0,0,0,2,1,68.1,10.3,0,65.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,65.9,8.584628,0,3.236367,1 +13,2,0,1,5,226969,1,5347.801,31.73443,0,12,1,49.15004,7.390983,44.81892,207.0288,0,101.3599,0,0,10,0,1,1,68.1,10.3,0,65.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,65.9,8.584628,0,4.618678,1 +16,2,95,0,1,226972,0,1605.865,54.76797,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,40.4,20.7,1,50,750,0,0,0,0,0,0,4.564348,6.671367,0,0,0,50,7.382041,0,,0 +16,2,95,0,2,226972,0,1605.865,55.76797,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,40.4,20.7,1,50,750,0,0,0,0,0,0,4.564348,6.671367,0,0,0,50,7.382041,0,,0 +16,2,95,0,3,226972,0,1605.865,56.76797,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,40.4,20.7,1,50,750,0,0,0,0,0,0,4.564348,6.671367,0,0,0,50,7.382041,0,,0 +16,2,95,0,4,226972,0,1605.865,57.76797,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,40.4,20.7,1,50,750,0,0,0,0,0,0,4.564348,6.671367,0,0,0,50,7.382041,0,,0 +16,2,95,0,5,226972,0,1605.865,58.76797,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,40.4,20.7,1,50,750,0,0,0,0,0,0,4.564348,6.671367,0,0,0,50,7.382041,0,,0 +19,2,25,1,1,226973,0,10369.5,61.31964,1,12,1,184.4892,49.51826,42.35045,0,0,276.3578,0,0,0,5,1,1,72.3,24.1,1,58,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,58,9.24672,0,5.621696,1 +19,2,25,1,2,226973,0,10369.5,62.31964,1,12,1,7.239382,60.5695,0,0,0,67.80888,0,0,0,1,0,1,72.3,24.1,1,58,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,58,9.24672,0,4.216693,1 +19,2,25,1,3,226973,0,10369.5,63.31964,1,12,1,188.0285,75.81219,51.93591,0,0,315.7766,0,0,0,5,0,1,72.3,24.1,1,58,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,58,9.24672,0,5.755035,1 +5,2,25,0,1,226980,0,11900.88,51.0089,0,9,1,58.99021,4.095827,59.19114,0,0,122.2772,0,0,0,4,1,3,87.2,3.4,0,92,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,92,9.384452,1.098612,4.806291,1 +5,2,25,0,2,226980,0,11900.88,52.0089,0,9,1,45.45454,4.640152,33.14394,0,0,83.23864,0,0,0,4,1,3,87.2,3.4,0,92,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,92,9.384452,1.098612,4.421711,1 +5,2,25,0,3,226980,0,11900.88,53.0089,0,9,1,24.70741,0,0,0,0,24.70741,0,0,0,1,0,3,87.2,3.4,0,92,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,92,9.384452,1.098612,3.207103,1 +5,2,25,0,1,226981,0,11900.88,16.70363,1,12,1,15.45595,0,0,0,0,15.45595,0,0,0,1,0,3,91.5,6.9,0,68.2,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,68.2,9.384452,1.098612,2.737994,1 +5,2,25,0,2,226981,0,11900.88,17.70363,1,12,1,14.20455,0,36.42992,0,0,50.63447,0,0,0,1,0,3,91.5,6.9,0,68.2,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,68.2,9.384452,1.098612,3.924633,1 +5,2,25,0,3,226981,0,11900.88,18.70363,1,12,1,9.969658,0,0,0,0,9.969658,0,0,0,1,0,3,91.5,6.9,0,68.2,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,68.2,9.384452,1.098612,2.299546,1 +5,2,25,0,1,226982,0,11900.88,45.77687,1,12,1,167.8259,15.37867,0,0,0,183.2045,0,0,0,4,17,3,73.4,17.2,0,67,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,67,9.384452,1.098612,5.210603,1 +5,2,25,0,2,226982,0,11900.88,46.77687,1,12,1,92.32954,13.84943,0,0,0,106.179,0,0,0,8,5,3,73.4,17.2,0,67,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,67,9.384452,1.098612,4.665126,1 +5,2,25,0,3,226982,0,11900.88,47.77687,1,12,1,185.0889,32.18465,22.61378,0,1655.878,1895.765,1,0,0,8,10,3,73.4,17.2,0,67,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,67,9.384452,1.098612,7.547378,1 +17,2,25,0,1,227002,0,8139.003,8.123203,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,93.3,11.84267,0,96.3,595,599,1,0,1.609438,6.395262,0,3.258096,7.774856,0,0,0,96.3,9.004546,1.609438,,0 +17,2,25,0,2,227002,0,8139.003,9.123203,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,93.3,11.84267,0,96.3,595,599,1,0,1.609438,6.395262,0,3.258096,7.774856,0,0,0,96.3,9.004546,1.609438,,0 +17,2,25,0,3,227002,0,8139.003,10.1232,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,93.3,11.84267,0,96.3,595,599,1,0,1.609438,6.395262,0,3.258096,7.774856,0,0,0,96.3,9.004546,1.609438,,0 +17,2,25,0,1,227003,0,8139.003,37.45927,0,17,1,0,74.75819,0,0,0,74.75819,0,0,0,0,0,5,92.6,3.4,0,85.2,595,599,0,0,1.609438,6.395262,0,3.258096,7.774856,1,0,0,85.2,9.004546,1.609438,4.314259,1 +17,2,25,0,2,227003,0,8139.003,38.45927,0,17,1,84.08982,89.93789,34.68227,0,0,208.71,0,0,0,21,0,5,92.6,3.4,0,85.2,595,599,0,0,1.609438,6.395262,0,3.258096,7.774856,1,0,0,85.2,9.004546,1.609438,5.340946,1 +17,2,25,0,3,227003,0,8139.003,39.45927,0,17,1,26.1633,97.90166,0,0,0,124.065,0,0,0,6,0,5,92.6,3.4,0,85.2,595,599,0,0,1.609438,6.395262,0,3.258096,7.774856,1,0,0,85.2,9.004546,1.609438,4.820806,1 +17,2,25,0,1,227004,0,8139.003,12.52293,0,12,1,50.44202,3.146126,0,0,0,53.58814,0,0,0,4,0,5,93.3,11.84267,0,96.3,595,599,1,0,1.609438,6.395262,0,3.258096,7.774856,0,0,0,96.3,9.004546,1.609438,3.981328,1 +17,2,25,0,2,227004,0,8139.003,13.52293,0,12,1,31.53368,0,.6306736,0,0,32.16436,0,0,0,3,0,5,93.3,11.84267,0,96.3,595,599,1,0,1.609438,6.395262,0,3.258096,7.774856,0,0,0,96.3,9.004546,1.609438,3.470859,1 +17,2,25,0,3,227004,0,8139.003,14.52293,0,12,1,97.01492,8.406497,0,0,0,105.4214,0,0,0,5,0,5,93.3,11.84267,0,96.3,595,599,1,0,1.609438,6.395262,0,3.258096,7.774856,0,0,0,96.3,9.004546,1.609438,4.657966,1 +17,2,25,0,1,227005,0,8139.003,9.946612,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,98.3,11.84267,0,100,595,599,1,1,1.609438,6.395262,0,3.258096,7.774856,0,0,0,100,9.004546,1.609438,,0 +17,2,25,0,2,227005,0,8139.003,10.94661,1,12,1,12.90014,0,0,0,0,12.90014,0,0,0,1,0,5,98.3,11.84267,0,100,595,599,1,1,1.609438,6.395262,0,3.258096,7.774856,0,0,0,100,9.004546,1.609438,2.557238,1 +17,2,25,0,3,227005,0,8139.003,11.94661,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,98.3,11.84267,0,100,595,599,1,1,1.609438,6.395262,0,3.258096,7.774856,0,0,0,100,9.004546,1.609438,,0 +17,2,25,0,1,227006,0,8139.003,36.85421,1,12,1,11.96048,0,36.18825,0,0,48.14873,0,0,0,0,1,5,76.1,3.4,0,73.9,595,599,0,0,1.609438,6.395262,0,3.258096,7.774856,1,0,0,73.9,9.004546,1.609438,3.874295,1 +17,2,25,0,2,227006,0,8139.003,37.85421,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,76.1,3.4,0,73.9,595,599,0,0,1.609438,6.395262,0,3.258096,7.774856,1,0,0,73.9,9.004546,1.609438,,0 +17,2,25,0,3,227006,0,8139.003,38.85421,1,12,1,13.16945,0,21.29061,0,0,34.46005,0,0,0,0,1,5,76.1,3.4,0,73.9,595,599,0,0,1.609438,6.395262,0,3.258096,7.774856,1,0,0,73.9,9.004546,1.609438,3.539801,1 +13,2,0,1,1,227007,0,1173.021,26.98152,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,57.4,3.4,0,51.1,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,51.1,7.06819,0,,0 +13,2,0,1,2,227007,0,1173.021,27.98152,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,57.4,3.4,0,51.1,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,51.1,7.06819,0,,0 +13,2,0,1,3,227007,0,1173.021,28.98152,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,57.4,3.4,0,51.1,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,51.1,7.06819,0,,0 +11,2,0,1,1,227008,0,15428.15,38.26694,0,18,1,97.08841,7.993648,0,0,50.82054,155.9026,1,1,0,5,1,3,77.7,6.9,0,76.1,0,354.72,0,0,1.098612,5.871329,0,0,0,1,0,0,76.1,9.644014,1.098612,5.049232,1 +11,2,0,1,2,227008,0,15428.15,39.26694,0,18,1,138.4218,3.257722,0,0,0,141.6795,0,0,0,5,0,4,77.7,6.9,0,76.1,0,354.72,0,0,1.386294,5.871329,0,0,0,1,0,0,76.1,9.644014,1.386294,4.953568,1 +11,2,0,1,3,227008,0,15428.15,40.26694,0,18,1,70.98354,9.870939,0,0,0,80.85447,0,0,0,4,0,4,77.7,6.9,0,76.1,0,354.72,0,0,1.386294,5.871329,0,0,0,1,0,0,76.1,9.644014,1.386294,4.392651,1 +11,2,0,1,1,227009,0,15428.15,31.33744,1,16,1,70.67231,24.58973,0,0,831.3923,926.6543,1,0,0,5,0,3,63.8,10.3,1,86.4,0,354.72,0,0,1.098612,5.871329,0,0,0,1,0,0,86.4,9.644014,1.098612,6.831581,1 +11,2,0,1,2,227009,0,15428.15,32.33744,1,16,1,139.7201,49.63803,0,0,0,189.3581,0,0,0,14,2,4,63.8,10.3,1,86.4,0,354.72,0,0,1.386294,5.871329,0,0,0,1,0,0,86.4,9.644014,1.386294,5.24364,1 +11,2,0,1,3,227009,0,15428.15,33.33744,1,16,1,617.0449,17.21851,0,0,804.3836,1438.647,1,0,0,6,0,4,63.8,10.3,1,86.4,0,354.72,0,0,1.386294,5.871329,0,0,0,1,0,0,86.4,9.644014,1.386294,7.271459,1 +13,2,0,1,1,227025,0,9795.895,28.69268,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,77.7,0,0,77.3,300,312,0,0,.6931472,5.743003,1,4.564348,5.755076,0,1,0,77.3,9.18982,.6931472,,0 +13,2,0,1,2,227025,0,9795.895,29.69268,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,77.7,0,0,77.3,300,312,0,0,1.098612,5.743003,1,4.564348,5.755076,0,1,0,77.3,9.18982,1.098612,,0 +13,2,0,1,3,227025,0,9795.895,30.69268,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,77.7,0,0,77.3,300,312,0,0,1.098612,5.743003,1,4.564348,5.755076,0,1,0,77.3,9.18982,1.098612,,0 +13,2,0,1,1,227027,0,9795.895,23.14579,1,12,1,55.41035,26.25196,0,0,785.1804,866.8427,1,0,0,4,0,2,25,10.3,0,37.5,300,312,0,0,.6931472,5.743003,1,4.564348,5.755076,0,1,0,37.5,9.18982,.6931472,6.764857,1 +13,2,0,1,2,227027,0,9795.895,24.14579,1,12,1,12.97453,9.673234,0,0,0,22.64777,0,0,0,2,0,3,25,10.3,0,37.5,300,312,0,0,1.098612,5.743003,1,4.564348,5.755076,0,1,0,37.5,9.18982,1.098612,3.120061,1 +13,2,0,1,3,227027,0,9795.895,25.14579,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,25,10.3,0,37.5,300,312,0,0,1.098612,5.743003,1,4.564348,5.755076,0,1,0,37.5,9.18982,1.098612,,0 +11,2,0,0,1,227032,0,11667.45,29.50856,1,16,1,133.1657,6.087877,0,0,0,139.2536,0,0,0,3,1,3,84.6,10.3,0,87.5,0,332.28,0,0,1.098612,5.805978,0,0,0,0,0,0,87.5,9.364644,1.098612,4.936296,1 +11,2,0,0,2,227032,0,11667.45,30.50856,1,16,1,189.9131,28.28185,0,0,0,218.195,0,0,0,34,0,3,84.6,10.3,0,87.5,0,332.28,0,0,1.098612,5.805978,0,0,0,0,0,0,87.5,9.364644,1.098612,5.385389,1 +11,2,0,0,3,227032,0,11667.45,31.50856,1,16,1,134.2012,6.94259,0,0,0,141.1438,0,0,0,18,1,3,84.6,10.3,0,87.5,0,332.28,0,0,1.098612,5.805978,0,0,0,0,0,0,87.5,9.364644,1.098612,4.949779,1 +11,2,0,0,1,227033,0,11667.45,33.0267,0,22,1,0,0,0,0,0,0,0,0,0,0,0,3,75,17.2,0,69.3,0,332.28,0,0,1.098612,5.805978,0,0,0,0,0,0,69.3,9.364644,1.098612,,0 +11,2,0,0,2,227033,0,11667.45,34.0267,0,22,1,164.6525,18.23842,31.37066,0,128.6631,342.9247,1,0,0,1,1,3,75,17.2,0,69.3,0,332.28,0,0,1.098612,5.805978,0,0,0,0,0,0,69.3,9.364644,1.098612,5.837511,1 +11,2,0,0,3,227033,0,11667.45,35.0267,0,22,1,187.3209,10.45394,0,0,0,197.7748,0,0,0,3,0,3,75,17.2,0,69.3,0,332.28,0,0,1.098612,5.805978,0,0,0,0,0,0,69.3,9.364644,1.098612,5.287129,1 +11,2,0,0,1,227034,0,11667.45,1.026694,1,16,1,61.14346,13.01747,0,0,0,74.16093,0,0,0,7,0,3,81.35272,11.84267,0,92.6,0,332.28,1,1,1.098612,5.805978,0,0,0,0,0,0,92.6,9.364644,1.098612,4.306238,1 +11,2,0,0,2,227034,0,11667.45,2.026694,1,16,1,7.722008,0,0,0,0,7.722008,0,0,0,1,0,3,81.35272,11.84267,0,92.6,0,332.28,1,1,1.098612,5.805978,0,0,0,0,0,0,92.6,9.364644,1.098612,2.044074,1 +11,2,0,0,3,227034,0,11667.45,3.026694,1,16,1,20.69426,0,0,0,0,20.69426,0,0,0,2,0,3,81.35272,11.84267,0,92.6,0,332.28,1,1,1.098612,5.805978,0,0,0,0,0,0,92.6,9.364644,1.098612,3.029856,1 +11,2,0,0,1,227058,0,10673.9,20.26557,0,12,1,0,1.615264,0,0,0,1.615264,0,0,0,0,0,3,73.7,13.8,0,72.7,0,246.24,0,0,1.098612,5.506307,0,0,0,1,0,0,72.7,9.275651,1.098612,.4794984,1 +11,2,0,0,2,227058,0,10673.9,21.26557,0,12,1,16.81884,3.382989,0,0,0,20.20183,0,0,0,1,0,3,73.7,13.8,0,72.7,0,246.24,0,0,1.098612,5.506307,0,0,0,1,0,0,72.7,9.275651,1.098612,3.005773,1 +11,2,0,0,3,227058,0,10673.9,22.26557,0,12,1,8.810573,0,0,0,0,8.810573,0,0,0,1,0,3,73.7,13.8,0,72.7,0,246.24,0,0,1.098612,5.506307,0,0,0,1,0,0,72.7,9.275651,1.098612,2.175952,1 +11,2,0,0,1,227059,0,10673.9,46.47502,0,12,1,234.4485,7.867224,57.28698,0,0,299.6027,0,0,0,7,1,3,73.2,3.4,0,64.3,0,246.24,0,0,1.098612,5.506307,0,0,0,1,0,0,64.3,9.275651,1.098612,5.702457,1 +11,2,0,0,2,227059,0,10673.9,47.47502,0,12,1,107.6406,0,0,0,0,107.6406,0,0,0,4,1,3,73.2,3.4,0,64.3,0,246.24,0,0,1.098612,5.506307,0,0,0,1,0,0,64.3,9.275651,1.098612,4.678798,1 +11,2,0,0,3,227059,0,10673.9,48.47502,0,12,1,163.1057,8.792952,0,0,0,171.8987,0,0,0,2,19,3,73.2,3.4,0,64.3,0,246.24,0,0,1.098612,5.506307,0,0,0,1,0,0,64.3,9.275651,1.098612,5.146905,1 +11,2,0,0,1,227060,0,10673.9,45.82341,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,89.4,17.2,0,72.7,0,246.24,0,0,1.098612,5.506307,0,0,0,1,0,0,72.7,9.275651,1.098612,,0 +11,2,0,0,2,227060,0,10673.9,46.82341,1,12,1,16.81884,8.24123,0,0,0,25.06007,0,0,0,1,1,3,89.4,17.2,0,72.7,0,246.24,0,0,1.098612,5.506307,0,0,0,1,0,0,72.7,9.275651,1.098612,3.221276,1 +11,2,0,0,3,227060,0,10673.9,47.82341,1,12,1,151.5419,16.20264,30.96916,0,0,198.7137,0,0,0,3,16,3,89.4,17.2,0,72.7,0,246.24,0,0,1.098612,5.506307,0,0,0,1,0,0,72.7,9.275651,1.098612,5.291865,1 +5,2,25,1,1,227084,0,9892.669,28.27652,1,12,1,76.63651,34.50772,0,0,0,111.1442,0,0,0,8,0,5,81.9,10.3,0,75,722.1,0,0,0,1.609438,0,0,3.258096,7.968458,0,1,0,75,9.199651,1.609438,4.710829,1 +5,2,25,1,2,227084,0,9892.669,29.27652,1,12,1,89.91759,68.4828,17.93505,0,0,176.3354,0,0,0,10,0,5,81.9,10.3,0,75,722.1,0,0,0,1.609438,0,0,3.258096,7.968458,0,1,0,75,9.199651,1.609438,5.172388,1 +5,2,25,1,3,227084,0,9892.669,30.27652,1,12,1,113.6568,96.34322,0,0,0,210,0,0,0,12,0,5,81.9,10.3,0,75,722.1,0,0,0,1.609438,0,0,3.258096,7.968458,0,1,0,75,9.199651,1.609438,5.347107,1 +5,2,25,1,1,227085,0,9892.669,6.75154,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,91.7,11.84267,0,100,722.1,0,1,0,1.609438,0,0,3.258096,7.968458,1,0,0,100,9.199651,1.609438,,0 +5,2,25,1,2,227085,0,9892.669,7.75154,0,12,1,58.03684,2.443044,0,0,0,60.47989,0,0,0,3,0,5,91.7,11.84267,0,100,722.1,0,1,0,1.609438,0,0,3.258096,7.968458,1,0,0,100,9.199651,1.609438,4.102311,1 +5,2,25,1,3,227085,0,9892.669,8.75154,0,12,1,21.11411,0,0,0,0,21.11411,0,0,0,2,0,5,91.7,11.84267,0,100,722.1,0,1,0,1.609438,0,0,3.258096,7.968458,1,0,0,100,9.199651,1.609438,3.049941,1 +5,2,25,1,1,227086,0,9892.669,9.377139,0,12,1,76.05109,3.459287,0,0,0,79.51038,0,0,0,8,0,5,91.7,11.84267,0,100,722.1,0,1,0,1.609438,0,0,3.258096,7.968458,1,0,0,100,9.199651,1.609438,4.375887,1 +5,2,25,1,2,227086,0,9892.669,10.37714,0,12,1,40.01454,11.63354,0,0,0,51.64809,0,0,0,6,0,5,91.7,11.84267,0,100,722.1,0,1,0,1.609438,0,0,3.258096,7.968458,1,0,0,100,9.199651,1.609438,3.944453,1 +5,2,25,1,3,227086,0,9892.669,11.37714,0,12,1,46.72057,7.353998,0,0,0,54.07457,0,0,0,7,0,5,91.7,11.84267,0,100,722.1,0,1,0,1.609438,0,0,3.258096,7.968458,1,0,0,100,9.199651,1.609438,3.990364,1 +5,2,25,1,1,227087,0,9892.669,31.66324,0,12,1,124.8004,24.0447,0,0,0,148.8451,0,0,0,11,0,5,72.3,10.3,1,58,722.1,0,0,0,1.609438,0,0,3.258096,7.968458,0,1,0,58,9.199651,1.609438,5.002906,1 +5,2,25,1,2,227087,0,9892.669,32.66325,0,12,1,11.87591,3.11682,0,0,0,14.99273,0,0,0,2,0,5,72.3,10.3,1,58,722.1,0,0,0,1.609438,0,0,3.258096,7.968458,0,1,0,58,9.199651,1.609438,2.707565,1 +5,2,25,1,3,227087,0,9892.669,33.66325,0,12,1,79.84726,7.237197,0,0,0,87.08446,0,0,0,7,0,5,72.3,10.3,1,58,722.1,0,0,0,1.609438,0,0,3.258096,7.968458,0,1,0,58,9.199651,1.609438,4.466878,1 +5,2,25,1,1,227088,0,9892.669,8.394251,1,12,1,79.0314,6.88132,0,0,0,85.91272,0,0,0,6,0,5,91.7,11.84267,0,100,722.1,0,1,1,1.609438,0,0,3.258096,7.968458,1,0,0,100,9.199651,1.609438,4.453332,1 +5,2,25,1,2,227088,0,9892.669,9.394251,1,12,1,22.17644,5.647116,0,0,0,27.82356,0,0,0,3,0,5,91.7,11.84267,0,100,722.1,0,1,1,1.609438,0,0,3.258096,7.968458,1,0,0,100,9.199651,1.609438,3.325883,1 +5,2,25,1,3,227088,0,9892.669,10.39425,1,12,1,57.74932,4.173405,0,0,0,61.92273,0,0,0,6,0,5,91.7,11.84267,0,100,722.1,0,1,1,1.609438,0,0,3.258096,7.968458,1,0,0,100,9.199651,1.609438,4.125887,1 +13,2,0,1,1,227098,0,8665.641,47.05818,0,9,1,68.68713,28.67655,54.83854,21.17522,0,152.2022,0,0,2,2,1,4,77.7,6.9,0,93.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,93.2,9.067237,1.386294,5.02521,1 +13,2,0,1,2,227098,0,8665.641,48.05818,0,9,1,413.972,30.57915,0,19.30502,0,444.5511,0,0,1,13,0,4,77.7,6.9,0,93.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,93.2,9.067237,1.386294,6.097065,1 +13,2,0,1,3,227098,0,8665.641,49.05818,0,9,1,108.0329,5.594125,0,0,0,113.6271,0,0,0,0,13,4,77.7,6.9,0,93.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,93.2,9.067237,1.386294,4.732922,1 +13,2,0,1,1,227099,0,8665.641,46.61739,1,8,1,167.549,10.26998,0,0,264.1186,441.9375,1,0,0,10,0,4,91.5,13.8,0,97.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,97.7,9.067237,1.386294,6.091168,1 +13,2,0,1,2,227099,0,8665.641,47.61739,1,8,1,19.78765,0,0,0,1281.559,1301.347,1,0,0,4,0,4,91.5,13.8,0,97.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,97.7,9.067237,1.386294,7.171155,1 +13,2,0,1,3,227099,0,8665.641,48.61739,1,8,1,52.51447,2.527815,32.9595,0,0,88.00178,0,0,0,3,0,4,91.5,13.8,0,97.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,97.7,9.067237,1.386294,4.477357,1 +13,2,0,1,1,227100,0,8665.641,12.96646,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,100,11.84267,0,100,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.067237,1.386294,,0 +13,2,0,1,2,227100,0,8665.641,13.96646,1,8,1,7.239382,1.737452,0,0,0,8.976834,0,0,0,1,0,4,100,11.84267,0,100,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.067237,1.386294,2.194647,1 +13,2,0,1,3,227100,0,8665.641,14.96646,1,8,1,13.79617,0,0,0,0,13.79617,0,0,0,1,0,4,100,11.84267,0,100,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.067237,1.386294,2.624391,1 +13,2,0,1,1,227101,0,8665.641,14.17933,0,8,1,7.94071,0,0,0,0,7.94071,0,0,0,1,0,4,91.5,0,1,100,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.067237,1.386294,2.072003,1 +13,2,0,1,2,227101,0,8665.641,15.17933,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,91.5,0,1,100,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.067237,1.386294,,0 +13,2,0,1,3,227101,0,8665.641,16.17933,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,91.5,0,1,100,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.067237,1.386294,,0 +11,2,0,1,1,227117,0,2940.281,36.69815,0,12,1,9.845662,0,0,0,0,9.845662,0,0,0,2,0,1,59,6.9,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,7.986601,0,2.287031,1 +11,2,0,1,2,227117,0,2940.281,37.69815,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,59,6.9,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,7.986601,0,,0 +11,2,0,1,3,227117,0,2940.281,38.69815,0,12,1,201.2579,53.4142,0,0,0,254.6721,0,0,0,7,0,1,59,6.9,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,7.986601,0,5.539977,1 +11,2,0,1,1,227170,0,8665.641,20.61875,1,11,1,189.4004,32.25375,42.80514,0,0,264.4593,0,0,0,8,1,2,62.8,17.2,1,34.1,0,0,0,0,.6931472,0,0,0,0,0,1,0,34.1,9.067237,.6931472,5.577687,1 +11,2,0,1,2,227170,0,8665.641,21.61875,1,11,1,113.47,16.6325,35.69058,0,0,165.7931,0,0,0,4,2,2,62.8,17.2,1,34.1,0,0,0,0,.6931472,0,0,0,0,0,1,0,34.1,9.067237,.6931472,5.110741,1 +11,2,0,1,3,227170,0,8665.641,22.61875,1,11,1,228.8482,4.322493,0,9.485095,0,233.1707,0,0,1,5,1,2,62.8,17.2,1,34.1,0,0,0,0,.6931472,0,0,0,0,0,1,0,34.1,9.067237,.6931472,5.451771,1 +11,2,0,1,4,227170,0,8665.641,23.61875,1,11,1,115.1778,12.30356,30.3019,0,0,157.7833,0,0,0,7,2,2,62.8,17.2,1,34.1,0,0,0,0,.6931472,0,0,0,0,0,1,0,34.1,9.067237,.6931472,5.061223,1 +11,2,0,1,5,227170,0,8665.641,24.61875,1,11,1,49.92548,7.816691,0,0,658.588,716.3301,1,0,0,3,0,2,62.8,17.2,1,34.1,0,0,0,0,.6931472,0,0,0,0,0,1,0,34.1,9.067237,.6931472,6.574141,1 +11,2,0,1,1,227171,0,8665.641,3.18412,1,11,1,38.81156,17.26445,0,0,0,56.07602,0,0,0,5,0,2,81.35272,11.84267,0,92.6,0,0,1,1,.6931472,0,0,0,0,1,0,0,92.6,9.067237,.6931472,4.026708,1 +11,2,0,1,2,227171,0,8665.641,4.184121,1,11,1,35.38311,0,0,0,201.3128,236.696,1,0,0,2,0,2,81.35272,11.84267,0,92.6,0,0,1,1,.6931472,0,0,0,0,1,0,0,92.6,9.067237,.6931472,5.466776,1 +11,2,0,1,3,227171,0,8665.641,5.184121,1,11,1,66.6215,7.673893,0,38.39205,0,74.29539,0,0,3,7,0,2,81.35272,11.84267,0,92.6,0,0,1,1,.6931472,0,0,0,0,1,0,0,92.6,9.067237,.6931472,4.308049,1 +11,2,0,1,4,227171,0,8665.641,6.184121,1,11,1,36.39371,12.29942,0,0,0,48.69313,0,0,0,5,0,2,81.35272,11.84267,0,92.6,0,0,1,1,.6931472,0,0,0,0,1,0,0,92.6,9.067237,.6931472,3.885538,1 +11,2,0,1,5,227171,0,8665.641,7.184121,1,11,1,238.0216,0,0,0,0,238.0216,0,0,0,6,0,2,81.35272,11.84267,0,92.6,0,0,1,1,.6931472,0,0,0,0,1,0,0,92.6,9.067237,.6931472,5.472362,1 +19,2,25,0,1,227172,0,2217.009,22.53799,1,12,1,105.5056,40.56644,0,7.411329,0,146.072,0,0,1,10,0,3,46.8,10.3,0,68.2,514.8,514.8,0,0,1.098612,6.243779,0,3.258096,7.630073,0,0,0,68.2,7.704365,1.098612,4.984099,1 +19,2,25,0,2,227172,0,2217.009,23.53799,1,12,1,84.26641,36.28378,0,0,0,120.5502,0,0,0,7,0,3,46.8,10.3,0,68.2,514.8,514.8,0,0,1.098612,6.243779,0,3.258096,7.630073,0,0,0,68.2,7.704365,1.098612,4.792066,1 +19,2,25,0,3,227172,0,2217.009,24.53799,1,12,1,533.6226,10.83667,0,0,293.6805,838.1398,1,0,0,7,1,3,46.8,10.3,0,68.2,514.8,514.8,0,0,1.098612,6.243779,0,3.258096,7.630073,0,0,0,68.2,7.704365,1.098612,6.731185,1 +19,2,25,0,1,227173,0,2217.009,2.069815,1,12,1,24.88089,3.05982,0,0,0,27.94071,0,0,0,3,0,3,81.35272,11.84267,0,66.7,514.8,514.8,1,1,1.098612,6.243779,0,3.258096,7.630073,0,1,0,66.7,7.704365,1.098612,3.330085,1 +19,2,25,0,2,227173,0,2217.009,3.069815,1,12,1,0,5.173745,0,0,0,5.173745,0,0,0,0,0,3,81.35272,11.84267,0,66.7,514.8,514.8,1,1,1.098612,6.243779,0,3.258096,7.630073,0,1,0,66.7,7.704365,1.098612,1.643597,1 +19,2,25,0,3,227173,0,2217.009,4.069815,1,12,1,21.91811,2.242991,0,0,0,24.1611,0,0,0,1,0,3,81.35272,11.84267,0,66.7,514.8,514.8,1,1,1.098612,6.243779,0,3.258096,7.630073,0,1,0,66.7,7.704365,1.098612,3.184744,1 +19,2,25,0,1,227174,0,2217.009,3.627652,0,12,1,39.70355,0,0,0,0,39.70355,0,0,0,3,0,3,81.35272,11.84267,0,51.9,514.8,514.8,1,0,1.098612,6.243779,0,3.258096,7.630073,0,0,0,51.9,7.704365,1.098612,3.681441,1 +19,2,25,0,2,227174,0,2217.009,4.627652,0,12,1,33.78378,4.937259,0,0,0,38.72104,0,0,0,3,0,3,81.35272,11.84267,0,51.9,514.8,514.8,1,0,1.098612,6.243779,0,3.258096,7.630073,0,0,0,51.9,7.704365,1.098612,3.656383,1 +19,2,25,0,3,227174,0,2217.009,5.627652,0,12,1,13.57365,3.377837,0,0,0,16.95149,0,0,0,1,0,3,81.35272,11.84267,0,51.9,514.8,514.8,1,0,1.098612,6.243779,0,3.258096,7.630073,0,0,0,51.9,7.704365,1.098612,2.830356,1 +11,2,0,1,1,227178,0,19315.54,22.39836,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,63.8,13.8,0,62.5,0,0,0,0,0,0,0,0,0,1,0,0,62.5,9.868717,0,,0 +11,2,0,1,2,227178,0,19315.54,23.39836,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,63.8,13.8,0,62.5,0,0,0,0,0,0,0,0,0,1,0,0,62.5,9.868717,0,,0 +11,2,0,1,3,227178,0,19315.54,24.39836,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,63.8,13.8,0,62.5,0,0,0,0,0,0,0,0,0,1,0,0,62.5,9.868717,0,,0 +11,2,0,1,4,227178,0,19315.54,25.39836,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,63.8,13.8,0,62.5,0,0,0,0,0,0,0,0,0,1,0,0,62.5,9.868717,0,,0 +11,2,0,1,5,227178,0,19315.54,26.39836,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,63.8,13.8,0,62.5,0,0,0,0,0,0,0,0,0,1,0,0,62.5,9.868717,0,,0 +13,2,0,0,1,227182,0,4913.196,53.57426,1,12,1,200.2141,49.00964,53.7152,0,993.8704,1296.809,1,0,0,19,12,2,64.9,31,1,73.9,300,500.4,0,0,.6931472,6.215408,1,4.564348,5.755076,0,0,0,73.9,8.499884,.6931472,7.167662,1 +13,2,0,0,2,227182,0,4913.196,54.57426,1,12,1,236.9449,74.97316,0,0,0,311.918,0,0,0,19,17,1,64.9,31,1,73.9,300,500.4,0,0,0,6.215408,1,4.564348,5.755076,0,0,0,73.9,8.499884,0,5.74274,1 +13,2,0,0,3,227182,0,4913.196,55.57426,1,12,1,216.1247,58.21138,0,0,0,274.336,0,0,0,12,10,1,64.9,31,1,73.9,300,500.4,0,0,0,6.215408,1,4.564348,5.755076,0,0,0,73.9,8.499884,0,5.614354,1 +13,2,0,0,1,227183,0,4913.196,18.2642,1,11,1,92.07709,7.200214,0,0,0,99.27731,0,0,0,2,14,2,68.1,3.4,0,84.1,300,500.4,0,0,.6931472,6.215408,1,4.564348,5.755076,0,0,0,84.1,8.499884,.6931472,4.597917,1 +11,2,0,1,1,227195,0,8665.641,16.58864,1,12,1,128.6395,8.17893,0,0,100,236.8184,1,0,0,5,12,4,39.9,10.3,1,46.6,0,48,1,1,1.386294,3.871201,0,0,0,0,0,0,46.6,9.067237,1.386294,5.467294,1 +11,2,0,1,2,227195,0,8665.641,17.58864,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,39.9,10.3,1,46.6,0,48,1,1,1.386294,3.871201,0,0,0,0,0,0,46.6,9.067237,1.386294,,0 +11,2,0,1,3,227195,0,8665.641,18.58864,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,39.9,10.3,1,46.6,0,48,0,0,1.386294,3.871201,0,0,0,0,0,0,46.6,9.067237,1.386294,,0 +11,2,0,1,1,227196,0,8665.641,19.38946,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,26.6,13.8,1,46.6,0,48,0,0,1.386294,3.871201,0,0,0,0,0,0,46.6,9.067237,1.386294,,0 +11,2,0,1,2,227196,0,8665.641,20.38946,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,26.6,13.8,1,46.6,0,48,0,0,1.386294,3.871201,0,0,0,0,0,0,46.6,9.067237,1.386294,,0 +11,2,0,1,3,227196,0,8665.641,21.38946,0,12,1,0,0,33.27993,0,0,33.27993,0,0,0,0,0,4,26.6,13.8,1,46.6,0,48,0,0,1.386294,3.871201,0,0,0,0,0,0,46.6,9.067237,1.386294,3.504955,1 +11,2,0,1,1,227197,0,8665.641,20.34771,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,55.9,3.4,0,70.5,0,48,0,0,1.386294,3.871201,0,0,0,0,0,0,70.5,9.067237,1.386294,,0 +11,2,0,1,2,227197,0,8665.641,21.34771,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,55.9,3.4,0,70.5,0,48,0,0,1.386294,3.871201,0,0,0,0,0,0,70.5,9.067237,1.386294,,0 +11,2,0,1,3,227197,0,8665.641,22.34771,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,55.9,3.4,0,70.5,0,48,0,0,1.386294,3.871201,0,0,0,0,0,0,70.5,9.067237,1.386294,,0 +11,2,0,1,1,227199,0,8665.641,39.69336,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,71.3,17.2,0,68.2,0,48,0,0,1.386294,3.871201,0,0,0,0,0,0,68.2,9.067237,1.386294,,0 +11,2,0,1,2,227199,0,8665.641,40.69336,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,71.3,17.2,0,68.2,0,48,0,0,1.386294,3.871201,0,0,0,0,0,0,68.2,9.067237,1.386294,,0 +11,2,0,1,3,227199,0,8665.641,41.69336,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,71.3,17.2,0,68.2,0,48,0,0,1.386294,3.871201,0,0,0,0,0,0,68.2,9.067237,1.386294,,0 +5,2,25,0,1,227226,0,7191.202,37.80424,1,14,1,81.80593,21.30997,0,0,0,103.1159,0,0,0,9,0,3,72.9,17.2,0,70.5,539.85,539.85,0,0,1.098612,6.291291,0,3.258096,7.677586,0,0,0,70.5,8.880753,1.098612,4.635854,1 +5,2,25,0,2,227226,0,7191.202,38.80424,1,14,1,60.07371,7.82801,0,0,0,67.90172,0,0,0,12,0,3,72.9,17.2,0,70.5,539.85,539.85,0,0,1.098612,6.291291,0,3.258096,7.677586,0,0,0,70.5,8.880753,1.098612,4.218061,1 +5,2,25,0,3,227226,0,7191.202,39.80424,1,14,1,57.20146,13.268,0,0,0,70.46946,0,0,0,10,0,1,72.9,17.2,0,70.5,539.85,539.85,0,0,0,6.291291,0,3.258096,7.677586,0,0,0,70.5,8.880753,0,4.255179,1 +5,2,25,0,1,227227,0,7191.202,15.55099,0,14,1,26.95418,0,0,0,0,26.95418,0,0,0,1,0,3,64.9,10.3,0,73.9,539.85,539.85,1,0,1.098612,6.291291,0,3.258096,7.677586,0,0,0,73.9,8.880753,1.098612,3.294138,1 +5,2,25,0,2,227227,0,7191.202,16.55099,0,14,1,40.29484,9.38575,0,0,0,49.68059,0,0,0,5,0,3,64.9,10.3,0,73.9,539.85,539.85,1,0,1.098612,6.291291,0,3.258096,7.677586,0,0,0,73.9,8.880753,1.098612,3.905614,1 +5,2,25,0,1,227228,0,7191.202,12.75291,0,14,1,18.32884,0,0,0,0,18.32884,0,0,0,1,0,3,66.7,11.84267,0,74.1,539.85,539.85,1,0,1.098612,6.291291,0,3.258096,7.677586,0,0,0,74.1,8.880753,1.098612,2.908476,1 +5,2,25,0,2,227228,0,7191.202,13.75291,0,14,.4684932,17.69042,7.257985,0,0,0,24.9484,0,0,0,3,0,3,66.7,11.84267,0,74.1,539.85,539.85,1,0,1.098612,6.291291,0,3.258096,7.677586,0,0,0,74.1,8.880753,1.098612,3.21681,1 +11,2,0,0,1,227231,0,3516.129,8.506502,1,12,1,0,.7494647,0,0,0,.7494647,0,0,0,0,0,6,88.3,11.84267,0,85.2,0,0,1,1,1.791759,0,0,0,0,0,0,0,85.2,8.165401,1.791759,-.2883961,1 +11,2,0,0,2,227231,0,3516.129,9.506502,1,12,1,10.00488,4.880429,0,0,0,14.88531,0,0,0,1,0,6,88.3,11.84267,0,85.2,0,0,1,1,1.791759,0,0,0,0,0,0,0,85.2,8.165401,1.791759,2.700375,1 +11,2,0,0,3,227231,0,3516.129,10.5065,1,12,1,15.58266,28.55917,0,0,0,44.14183,0,0,0,2,0,6,88.3,11.84267,0,85.2,0,0,1,1,1.791759,0,0,0,0,0,0,0,85.2,8.165401,1.791759,3.787408,1 +11,2,0,0,1,227232,0,3516.129,9.338809,1,12,1,0,.7494647,0,0,0,.7494647,0,0,0,0,0,6,85,11.84267,1,51.9,0,0,1,1,1.791759,0,0,0,0,0,1,0,51.9,8.165401,1.791759,-.2883961,1 +11,2,0,0,2,227232,0,3516.129,10.33881,1,12,1,6.100537,6.564178,0,0,0,12.66471,0,0,0,1,0,6,85,11.84267,1,51.9,0,0,1,1,1.791759,0,0,0,0,0,1,0,51.9,8.165401,1.791759,2.53882,1 +11,2,0,0,3,227232,0,3516.129,11.33881,1,12,1,44.30894,7.859078,0,0,0,52.16802,0,0,0,2,0,6,85,11.84267,1,51.9,0,0,1,1,1.791759,0,0,0,0,0,1,0,51.9,8.165401,1.791759,3.95447,1 +11,2,0,0,1,227233,0,3516.129,4.982888,1,12,1,13.3833,.7494647,0,0,0,14.13276,0,0,0,1,0,6,81.35272,11.84267,0,59.3,0,0,1,1,1.791759,0,0,0,0,0,1,0,59.3,8.165401,1.791759,2.648496,1 +11,2,0,0,2,227233,0,3516.129,5.982888,1,12,1,0,4.148365,0,0,0,4.148365,0,0,0,0,0,6,81.35272,11.84267,0,59.3,0,0,1,1,1.791759,0,0,0,0,0,1,0,59.3,8.165401,1.791759,1.422714,1 +11,2,0,0,3,227233,0,3516.129,6.982888,1,12,1,0,1.535682,0,0,0,1.535682,0,0,0,0,0,6,81.35272,11.84267,0,59.3,0,0,1,1,1.791759,0,0,0,0,0,1,0,59.3,8.165401,1.791759,.4289746,1 +11,2,0,0,1,227234,0,3516.129,27.69336,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,81.9,27.6,0,58,0,0,0,0,1.791759,0,0,0,0,1,0,0,58,8.165401,1.791759,,0 +11,2,0,0,2,227234,0,3516.129,28.69336,1,12,1,76.37872,80.8492,0,0,1139.932,1297.16,2,0,0,6,0,6,81.9,27.6,0,58,0,0,0,0,1.791759,0,0,0,0,1,0,0,58,8.165401,1.791759,7.167932,1 +11,2,0,0,3,227234,0,3516.129,29.69336,1,12,1,15.80849,33.34688,0,0,0,49.15538,0,0,0,2,0,6,81.9,27.6,0,58,0,0,0,0,1.791759,0,0,0,0,1,0,0,58,8.165401,1.791759,3.894986,1 +11,2,0,0,1,227235,0,3516.129,7.438741,0,12,1,330.1338,132.8747,0,0,0,463.0086,0,0,0,14,0,6,88.3,11.84267,1,33.3,0,0,1,0,1.791759,0,0,0,0,0,1,0,33.3,8.165401,1.791759,6.137745,1 +11,2,0,0,2,227235,0,3516.129,8.438741,0,12,1,138.9409,117.2523,0,0,0,256.1933,0,0,0,8,0,6,88.3,11.84267,1,33.3,0,0,1,0,1.791759,0,0,0,0,0,1,0,33.3,8.165401,1.791759,5.545932,1 +11,2,0,0,3,227235,0,3516.129,9.438741,0,12,1,36.01626,125.1807,0,0,0,161.1969,0,0,0,3,0,6,88.3,11.84267,1,33.3,0,0,1,0,1.791759,0,0,0,0,0,1,0,33.3,8.165401,1.791759,5.082627,1 +11,2,0,0,1,227236,0,3516.129,5.927447,1,12,1,14.1863,.7494647,0,0,0,14.93576,0,0,0,3,0,6,86.7,11.84267,0,85.2,0,0,1,1,1.791759,0,0,0,0,0,0,0,85.2,8.165401,1.791759,2.703758,1 +11,2,0,0,2,227236,0,3516.129,6.927447,1,12,1,5.856515,9.004393,0,0,0,14.86091,0,0,0,1,0,6,86.7,11.84267,0,85.2,0,0,1,1,1.791759,0,0,0,0,0,0,0,85.2,8.165401,1.791759,2.698734,1 +11,2,0,0,3,227236,0,3516.129,7.927447,1,12,1,6.775068,1.535682,0,0,0,8.31075,0,0,0,1,0,6,86.7,11.84267,0,85.2,0,0,1,1,1.791759,0,0,0,0,0,0,0,85.2,8.165401,1.791759,2.11755,1 +18,2,25,1,1,227245,0,2105.572,26.26147,1,14,1,160.6469,148.0916,21.56334,1261.725,1564.555,1894.857,1,0,47,4,0,2,42,20.7,0,71.6,320,320,0,0,.6931472,5.768321,0,3.258096,7.154615,1,0,0,71.6,7.652817,.6931472,7.546899,1 +18,2,25,1,2,227245,0,2105.572,27.26147,1,14,1,65.84766,106.1622,0,1086.978,0,172.0098,0,0,41,4,0,2,42,20.7,0,71.6,320,320,0,0,.6931472,5.768321,0,3.258096,7.154615,1,0,0,71.6,7.652817,.6931472,5.147552,1 +18,2,25,1,3,227245,0,2105.572,28.26147,1,14,1,67.22881,96.57247,0,1071.103,0,163.8013,0,0,40,7,0,2,42,20.7,0,71.6,320,320,0,0,.6931472,5.768321,0,3.258096,7.154615,1,0,0,71.6,7.652817,.6931472,5.098654,1 +18,2,25,1,1,227246,0,2105.572,6.091718,0,14,1,20.48518,0,0,0,296.9811,317.4663,1,0,0,3,0,2,88.3,11.84267,0,88.9,320,320,1,0,.6931472,5.768321,0,3.258096,7.154615,0,0,0,88.9,7.652817,.6931472,5.760372,1 +18,2,25,1,2,227246,0,2105.572,7.091718,0,14,1,20.63882,0,0,0,0,20.63882,0,0,0,3,0,2,88.3,11.84267,0,88.9,320,320,1,0,.6931472,5.768321,0,3.258096,7.154615,0,0,0,88.9,7.652817,.6931472,3.027174,1 +18,2,25,1,3,227246,0,2105.572,8.091718,0,14,1,0,0,0,0,0,0,0,0,0,0,0,2,88.3,11.84267,0,88.9,320,320,1,0,.6931472,5.768321,0,3.258096,7.154615,0,0,0,88.9,7.652817,.6931472,,0 +17,2,25,0,1,227258,0,10679.77,10.81177,1,10,1,47.55281,2.210201,0,0,0,49.76301,0,0,0,6,1,5,83.3,11.84267,0,85.2,780,780,1,1,1.609438,6.659294,0,3.258096,8.045588,0,0,0,85.2,9.276199,1.609438,3.907272,1 +17,2,25,0,2,227258,0,10679.77,11.81177,1,10,1,109.6117,0,0,0,0,109.6117,0,0,0,7,0,5,83.3,11.84267,0,85.2,780,780,1,1,1.609438,6.659294,0,3.258096,8.045588,0,0,0,85.2,9.276199,1.609438,4.696945,1 +17,2,25,0,3,227258,0,10679.77,12.81177,1,10,1,63.93585,0,0,0,0,63.93585,0,0,0,4,0,5,83.3,11.84267,0,85.2,780,780,1,1,1.609438,6.659294,0,3.258096,8.045588,0,0,0,85.2,9.276199,1.609438,4.15788,1 +17,2,25,0,1,227259,0,10679.77,31.70431,1,10,1,43.79186,4.739825,0,0,0,48.53168,0,0,0,3,0,5,74.5,17.2,0,81.8,780,780,0,0,1.609438,6.659294,0,3.258096,8.045588,1,0,0,81.8,9.276199,1.609438,3.882217,1 +17,2,25,0,2,227259,0,10679.77,32.70431,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,74.5,17.2,0,81.8,780,780,0,0,1.609438,6.659294,0,3.258096,8.045588,1,0,0,81.8,9.276199,1.609438,,0 +17,2,25,0,3,227259,0,10679.77,33.70431,1,10,1,54.65973,10.99263,30.68054,0,0,96.3329,0,0,0,3,0,5,74.5,17.2,0,81.8,780,780,0,0,1.609438,6.659294,0,3.258096,8.045588,1,0,0,81.8,9.276199,1.609438,4.56781,1 +17,2,25,0,1,227260,0,10679.77,12.67351,0,10,1,12.36476,0,0,0,0,12.36476,0,0,0,1,0,5,88.3,11.84267,0,92.6,780,780,1,0,1.609438,6.659294,0,3.258096,8.045588,0,0,0,92.6,9.276199,1.609438,2.514851,1 +17,2,25,0,2,227260,0,10679.77,13.67351,0,10,1,32.55208,0,.4734848,0,0,33.02557,0,0,0,4,0,5,88.3,11.84267,0,92.6,780,780,1,0,1.609438,6.659294,0,3.258096,8.045588,0,0,0,92.6,9.276199,1.609438,3.497282,1 +17,2,25,0,3,227260,0,10679.77,14.67351,0,10,1,16.47161,0,0,0,0,16.47161,0,0,0,1,0,5,88.3,11.84267,0,92.6,780,780,1,0,1.609438,6.659294,0,3.258096,8.045588,0,0,0,92.6,9.276199,1.609438,2.801638,1 +17,2,25,0,1,227261,0,10679.77,1.50308,0,10,1,29.35085,0,0,0,0,29.35085,0,0,0,3,0,5,81.35272,11.84267,0,92.6,780,780,1,0,1.609438,6.659294,0,3.258096,8.045588,0,0,0,92.6,9.276199,1.609438,3.379322,1 +17,2,25,0,2,227261,0,10679.77,2.50308,0,10,1,62.00284,0,0,0,0,62.00284,0,0,0,5,0,5,81.35272,11.84267,0,92.6,780,780,1,0,1.609438,6.659294,0,3.258096,8.045588,0,0,0,92.6,9.276199,1.609438,4.12718,1 +17,2,25,0,3,227261,0,10679.77,3.50308,0,10,1,35.54399,0,0,0,0,35.54399,0,0,0,3,0,5,81.35272,11.84267,0,92.6,780,780,1,0,1.609438,6.659294,0,3.258096,8.045588,0,0,0,92.6,9.276199,1.609438,3.570771,1 +17,2,25,0,1,227262,0,10679.77,29.03217,0,16,1,95.43019,0,33.27666,0,0,128.7068,0,0,0,6,0,5,70.2,0,0,79.5,780,780,0,0,1.609438,6.659294,0,3.258096,8.045588,0,0,0,79.5,9.276199,1.609438,4.857537,1 +17,2,25,0,2,227262,0,10679.77,30.03217,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,70.2,0,0,79.5,780,780,0,0,1.609438,6.659294,0,3.258096,8.045588,0,0,0,79.5,9.276199,1.609438,,0 +17,2,25,0,3,227262,0,10679.77,31.03217,0,16,1,0,4.291287,51.25271,0,0,55.54399,0,0,0,0,0,5,70.2,0,0,79.5,780,780,0,0,1.609438,6.659294,0,3.258096,8.045588,0,0,0,79.5,9.276199,1.609438,4.017175,1 +11,2,0,1,1,227275,0,29237.54,34.95688,1,14,1,300,96.7802,0,1128.26,0,396.7802,0,0,53,5,3,3,51.6,6.9,0,56.8,0,114,0,0,1.098612,4.736198,0,0,0,0,0,0,56.8,10.28324,1.098612,5.983383,1 +11,2,0,1,2,227275,0,29237.54,35.95688,1,14,1,220.1648,49.2729,0,1008.24,868.3422,1137.78,1,0,52,8,3,3,51.6,6.9,0,56.8,0,114,0,0,1.098612,4.736198,0,0,0,0,0,0,56.8,10.28324,1.098612,7.036834,1 +11,2,0,1,3,227275,0,29237.54,36.95688,1,14,1,93.44115,39.71249,0,909.7035,34.36658,167.5202,0,0,45,7,0,3,51.6,6.9,0,56.8,0,114,0,0,1.098612,4.736198,0,0,0,0,0,0,56.8,10.28324,1.098612,5.121104,1 +11,2,0,1,1,227276,0,29237.54,10.93224,0,14,1,65.99255,8.142629,0,0,0,74.13518,0,0,0,4,0,3,78.3,11.84267,0,59.3,0,114,1,0,1.098612,4.736198,0,0,0,1,0,0,59.3,10.28324,1.098612,4.30589,1 +11,2,0,1,2,227276,0,29237.54,11.93224,0,14,1,21.81289,27.72661,0,213.2816,0,49.53951,0,0,10,1,1,3,78.3,11.84267,0,59.3,0,114,1,0,1.098612,4.736198,0,0,0,1,0,0,59.3,10.28324,1.098612,3.902771,1 +11,2,0,1,3,227276,0,29237.54,12.93224,0,14,1,38.18509,8.580413,0,220.1258,0,46.7655,0,0,11,4,1,3,78.3,11.84267,0,59.3,0,114,1,0,1.098612,4.736198,0,0,0,1,0,0,59.3,10.28324,1.098612,3.845146,1 +11,2,0,1,1,227277,0,29237.54,6.220397,1,14,1,36.18946,10.11176,55.65194,0,0,101.9532,0,0,0,2,2,3,73.3,11.84267,0,81.5,0,114,1,1,1.098612,4.736198,0,0,0,1,0,0,81.5,10.28324,1.098612,4.624514,1 +11,2,0,1,2,227277,0,29237.54,7.220397,1,14,1,35.38536,0,0,0,0,35.38536,0,0,0,3,1,3,73.3,11.84267,0,81.5,0,114,1,1,1.098612,4.736198,0,0,0,1,0,0,81.5,10.28324,1.098612,3.566298,1 +11,2,0,1,3,227277,0,29237.54,8.220397,1,14,1,28.75112,0,20.84007,0,0,49.59119,0,0,0,2,1,3,73.3,11.84267,0,81.5,0,114,1,1,1.098612,4.736198,0,0,0,1,0,0,81.5,10.28324,1.098612,3.903813,1 +14,2,95,1,1,227288,0,5181.818,53.84531,1,8,1,70.39615,51.8576,37.78908,0,0,160.0428,0,0,0,8,1,1,96.8,17.2,0,75,35.78,266.4,0,0,0,5.584999,0,4.564348,3.628682,0,0,0,75,8.553104,0,5.075441,1 +14,2,95,1,2,227288,0,5181.818,54.84531,1,8,1,82.23524,25.16349,0,0,0,107.3987,0,0,0,2,0,1,96.8,17.2,0,75,35.78,266.4,0,0,0,5.584999,0,4.564348,3.628682,0,0,0,75,8.553104,0,4.676548,1 +14,2,95,1,3,227288,0,5181.818,55.84531,1,8,1,228.3198,20.2439,39.19603,0,4271.522,4559.282,2,0,0,3,1,1,96.8,17.2,0,75,35.78,266.4,0,0,0,5.584999,0,4.564348,3.628682,0,0,0,75,8.553104,0,8.42492,1 +14,2,95,1,1,227300,1,1710.85,48.85695,1,5,1,308.6456,59.50214,31.90043,0,0,400.0482,0,0,0,12,0,5,55.9,24.1,1,47.6,291.6,291.6,0,0,1.609438,5.675383,0,4.564348,5.726676,0,1,0,47.6,7.44533,1.609438,5.991585,1 +14,2,95,1,2,227300,1,1710.85,49.85695,1,5,1,49.80478,41.33724,0,0,0,91.14202,0,0,0,4,0,5,55.9,24.1,1,47.6,291.6,291.6,0,0,1.609438,5.675383,0,4.564348,5.726676,0,1,0,47.6,7.44533,1.609438,4.512419,1 +14,2,95,1,3,227300,1,1710.85,50.85695,1,5,1,653.0714,104.2457,49.90063,0,0,807.2177,0,0,0,15,0,5,55.9,24.1,1,47.6,291.6,291.6,0,0,1.609438,5.675383,0,4.564348,5.726676,0,1,0,47.6,7.44533,1.609438,6.693594,1 +14,2,95,1,1,227301,1,1710.85,15.56194,0,5,1,51.5257,0,0,0,0,51.5257,0,0,0,3,0,5,76.1,3.4,1,72.7,291.6,291.6,1,0,1.609438,5.675383,0,4.564348,5.726676,0,1,0,72.7,7.44533,1.609438,3.942081,1 +14,2,95,1,2,227301,1,1710.85,16.56194,0,5,1,9.272816,2.415812,0,0,0,11.68863,0,0,0,1,0,5,76.1,3.4,1,72.7,291.6,291.6,1,0,1.609438,5.675383,0,4.564348,5.726676,0,1,0,72.7,7.44533,1.609438,2.458616,1 +14,2,95,1,3,227301,1,1710.85,17.56194,0,5,1,68.94761,2.687443,0,0,0,71.63505,0,0,0,2,0,5,76.1,3.4,1,72.7,291.6,291.6,1,0,1.609438,5.675383,0,4.564348,5.726676,0,1,0,72.7,7.44533,1.609438,4.271585,1 +14,2,95,1,1,227302,1,1710.85,17.58795,0,5,1,0,0,0,0,0,0,0,0,0,0,0,5,79.2,6.9,0,72.7,291.6,291.6,1,0,1.609438,5.675383,0,4.564348,5.726676,0,1,0,72.7,7.44533,1.609438,,0 +14,2,95,1,2,227302,1,1710.85,18.58795,0,5,1,8.29673,0,0,0,0,8.29673,0,0,0,1,0,5,79.2,6.9,0,72.7,291.6,291.6,0,0,1.609438,5.675383,0,4.564348,5.726676,0,1,0,72.7,7.44533,1.609438,2.115861,1 +14,2,95,1,3,227302,1,1710.85,19.58795,0,5,1,16.71183,0,0,0,0,16.71183,0,0,0,1,0,5,79.2,6.9,0,72.7,291.6,291.6,0,0,1.609438,5.675383,0,4.564348,5.726676,0,1,0,72.7,7.44533,1.609438,2.816117,1 +14,2,95,1,1,227303,1,1710.85,16.67625,0,5,1,111.7077,31.3758,5.888651,0,775.4443,924.4165,1,0,0,8,0,5,76.6,0,0,72.7,291.6,291.6,1,0,1.609438,5.675383,0,4.564348,5.726676,1,0,0,72.7,7.44533,1.609438,6.829163,1 +14,2,95,1,2,227303,1,1710.85,17.67625,0,5,1,53.68472,10.78575,0,0,0,64.47047,0,0,0,5,0,5,76.6,0,0,72.7,291.6,291.6,1,0,1.609438,5.675383,0,4.564348,5.726676,1,0,0,72.7,7.44533,1.609438,4.166207,1 +14,2,95,1,3,227303,1,1710.85,18.67625,0,5,.9589041,0,1.784101,0,0,0,1.784101,0,0,0,0,0,5,76.6,0,0,72.7,291.6,291.6,0,0,1.609438,5.675383,0,4.564348,5.726676,1,0,0,72.7,7.44533,1.609438,.5789147,1 +14,2,95,1,1,227304,1,1710.85,17.58795,1,5,1,24.62527,12.95503,0,0,0,37.5803,0,0,0,2,0,5,47.3,6.9,1,52.4,291.6,291.6,1,1,1.609438,5.675383,0,4.564348,5.726676,1,0,0,52.4,7.44533,1.609438,3.62648,1 +14,2,95,1,2,227304,1,1710.85,18.58795,1,5,1,75.76867,33.94827,0,0,0,109.7169,0,0,0,5,0,5,47.3,6.9,1,52.4,291.6,291.6,0,0,1.609438,5.675383,0,4.564348,5.726676,1,0,0,52.4,7.44533,1.609438,4.697904,1 +14,2,95,1,3,227304,1,1710.85,19.58795,1,5,1,81.82024,39.37669,0,0,0,121.1969,0,0,0,5,0,5,47.3,6.9,1,52.4,291.6,291.6,0,0,1.609438,5.675383,0,4.564348,5.726676,1,0,0,52.4,7.44533,1.609438,4.797417,1 +19,2,25,1,1,227305,0,3580.645,26.71869,0,11,1,27.80734,0,0,0,0,27.80734,0,0,0,1,0,1,90.4,10.3,0,79.8,450,0,0,0,0,0,0,3.258096,7.495542,0,1,0,79.8,8.183578,0,3.3253,1 +19,2,25,1,2,227305,0,3580.645,27.71869,0,11,1,11.14881,2.399418,0,0,0,13.54823,0,0,0,1,0,1,90.4,10.3,0,79.8,450,0,0,0,0,0,0,3.258096,7.495542,0,1,0,79.8,8.183578,0,2.606256,1 +19,2,25,1,3,227305,0,3580.645,28.71869,0,11,1,44.69901,0,0,0,0,44.69901,0,0,0,1,0,1,90.4,10.3,0,79.8,450,0,0,0,0,0,0,3.258096,7.495542,0,1,0,79.8,8.183578,0,3.799951,1 +19,2,25,1,4,227305,0,3580.645,29.71869,0,11,1,12.00246,0,0,0,0,12.00246,0,0,0,1,0,1,90.4,10.3,0,79.8,450,0,0,0,0,0,0,3.258096,7.495542,0,1,0,79.8,8.183578,0,2.485112,1 +19,2,25,1,5,227305,0,3580.645,30.71869,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,90.4,10.3,0,79.8,450,0,0,0,0,0,0,3.258096,7.495542,0,1,0,79.8,8.183578,0,,0 +14,2,95,1,1,227317,0,8665.641,2.316222,1,9,1,63.79037,7.12017,0,0,0,70.91054,0,0,0,19,0,2,81.35272,11.84267,0,56.2,127.5,127.5,1,1,.6931472,4.848116,0,4.564348,4.89941,0,0,0,56.2,9.067237,.6931472,4.261419,1 +14,2,95,1,1,227318,0,8665.641,22.80356,1,9,1,5.823187,4.986765,0,0,0,10.80995,0,0,0,1,0,2,86.2,13.8,0,62.5,127.5,127.5,0,0,.6931472,4.848116,0,4.564348,4.89941,0,0,0,62.5,9.067237,.6931472,2.380467,1 +16,2,95,1,1,227329,0,12489.74,55.14032,1,8,1,300,80.01617,0,0,0,380.0162,0,0,0,15,2,2,66,20.7,1,42,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,42,9.432742,.6931472,5.940214,1 +16,2,95,1,2,227329,0,12489.74,56.14032,1,8,1,1515.577,97.49386,19.0172,0,1049.032,2681.12,2,0,0,26,0,2,66,20.7,1,42,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,42,9.432742,.6931472,7.89399,1 +16,2,95,1,3,227329,0,12489.74,57.14032,1,8,.5616438,1302.256,237.8532,1.367366,0,5012.101,6561.326,2,0,0,40,0,2,66,20.7,1,42,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,42,9.432742,.6931472,8.788948,1 +16,2,95,1,1,227330,0,12489.74,56.41341,0,12,1,17.25067,0,13.80593,0,0,31.0566,0,0,0,1,0,2,84.6,10.3,0,72.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,72.7,9.432742,.6931472,3.435812,1 +16,2,95,1,2,227330,0,12489.74,57.41341,0,12,1,11.79361,5.886978,0,0,0,17.68059,0,0,0,2,0,2,84.6,10.3,0,72.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,72.7,9.432742,.6931472,2.872468,1 +16,2,95,1,3,227330,0,12489.74,58.41341,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,84.6,10.3,0,72.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,72.7,9.432742,.6931472,,0 +11,2,0,1,1,227346,0,9813.489,53.42642,1,12,1,519.1325,69.41991,19.9042,0,6006.69,6615.146,2,0,0,10,0,1,59,17.2,1,50,0,200.72,0,0,0,5.301911,0,0,0,1,0,0,50,9.191615,0,8.797117,1 +11,2,0,1,2,227346,0,9813.489,54.42642,1,12,1,115.5356,31.82259,277.0383,0,1281.289,1705.686,2,0,0,10,0,1,59,17.2,1,50,0,200.72,0,0,0,5.301911,0,0,0,1,0,0,50,9.191615,0,7.441722,1 +11,2,0,1,3,227346,0,9813.489,55.42642,1,12,1,60.53459,12.08446,313.0099,0,275.2246,660.8536,1,0,0,3,1,1,59,17.2,1,50,0,200.72,0,0,0,5.301911,0,0,0,1,0,0,50,9.191615,0,6.493532,1 +11,2,0,1,4,227346,0,9813.489,56.42642,1,12,1,140.3734,64.40295,244.2183,0,0,448.9947,0,0,0,3,0,1,59,17.2,1,50,0,200.72,0,0,0,5.301911,0,0,0,1,0,0,50,9.191615,0,6.107011,1 +11,2,0,1,5,227346,0,9813.489,57.42642,1,12,1,6.651885,92.60902,260.1663,0,886.0273,1245.455,1,0,0,1,0,1,59,17.2,1,50,0,200.72,0,0,0,5.301911,0,0,0,1,0,0,50,9.191615,0,7.127256,1 +16,2,95,1,1,227351,.0220994,8665.641,4.071184,0,12.75671,1,0,0,0,0,0,0,0,0,0,0,0,2,81.35272,11.84267,0,55.6,675,0,1,0,.6931472,0,0,4.564348,6.566006,0,0,0,55.6,9.067237,.6931472,,0 +16,2,95,1,2,227351,.0220994,8665.641,5.071184,0,12.75671,1,0,0,0,0,0,0,0,0,0,0,0,2,81.35272,11.84267,0,55.6,675,0,1,0,.6931472,0,0,4.564348,6.566006,0,0,0,55.6,9.067237,.6931472,,0 +16,2,95,1,3,227351,.0220994,8665.641,6.071184,0,12.75671,1,0,0,0,0,0,0,0,0,0,0,0,2,81.35272,11.84267,0,55.6,675,0,1,0,.6931472,0,0,4.564348,6.566006,0,0,0,55.6,9.067237,.6931472,,0 +16,2,95,0,1,227352,0,8665.641,57.67556,0,16,1,32.38758,0,22.48394,0,0,54.87152,0,0,0,2,1,2,73.9,17.2,0,75,150,162,0,0,.6931472,5.087596,0,4.564348,5.061929,1,0,0,75,9.067237,.6931472,4.004994,1 +16,2,95,0,2,227352,0,8665.641,58.67556,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,73.9,17.2,0,75,150,162,0,0,.6931472,5.087596,0,4.564348,5.061929,1,0,0,75,9.067237,.6931472,,0 +16,2,95,0,3,227352,0,8665.641,59.67556,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,73.9,17.2,0,75,150,162,0,0,.6931472,5.087596,0,4.564348,5.061929,1,0,0,75,9.067237,.6931472,,0 +16,2,95,0,1,227353,0,8665.641,50.5024,1,16,1,179.9518,0,222.6124,0,0,402.5642,0,0,0,8,1,2,71.3,13.8,0,70.5,150,162,0,0,.6931472,5.087596,0,4.564348,5.061929,1,0,0,70.5,9.067237,.6931472,5.997855,1 +16,2,95,0,2,227353,0,8665.641,51.5024,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,71.3,13.8,0,70.5,150,162,0,0,.6931472,5.087596,0,4.564348,5.061929,1,0,0,70.5,9.067237,.6931472,,0 +16,2,95,0,3,227353,0,8665.641,52.5024,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,71.3,13.8,0,70.5,150,162,0,0,.6931472,5.087596,0,4.564348,5.061929,1,0,0,70.5,9.067237,.6931472,,0 +13,2,0,1,1,227382,0,8212.316,.9746749,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,81.35272,11.84267,0,55.6,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,55.6,9.013512,.6931472,,0 +13,2,0,1,2,227382,0,8212.316,1.974675,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,81.35272,11.84267,0,55.6,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,55.6,9.013512,.6931472,,0 +13,2,0,1,3,227382,0,8212.316,2.974675,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,81.35272,11.84267,0,55.6,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,55.6,9.013512,.6931472,,0 +13,2,0,1,1,227383,0,8212.316,31.25804,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,55.3,10.3,0,69.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,69.3,9.013512,.6931472,,0 +13,2,0,1,2,227383,0,8212.316,32.25804,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,55.3,10.3,0,69.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,69.3,9.013512,.6931472,,0 +13,2,0,1,3,227383,0,8212.316,33.25804,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,55.3,10.3,0,69.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,69.3,9.013512,.6931472,,0 +7,2,25,1,1,227425,0,12811.14,51.0527,1,13,1,285.6573,24.02874,46.80149,0,0,356.4875,0,0,0,13,1,1,67,27.6,0,72.7,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,72.7,9.458149,0,5.876299,1 +7,2,25,1,2,227425,0,12811.14,52.0527,1,13,1,436.1367,47.7557,0,0,459.0402,942.9326,1,0,0,7,32,1,67,27.6,0,72.7,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,72.7,9.458149,0,6.848995,1 +7,2,25,1,3,227425,0,12811.14,53.0527,1,13,1,594.4294,60.79964,56.54987,0,0,711.779,0,0,0,15,17,1,67,27.6,0,72.7,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,72.7,9.458149,0,6.567768,1 +13,2,0,1,1,227515,0,8665.641,56.64339,1,15,1,54.60386,0,0,0,0,54.60386,0,0,0,2,0,1,71.8,17.2,0,68.2,150,466.8,0,0,0,6.145901,1,4.564348,5.061929,0,0,0,68.2,9.067237,0,4.000104,1 +11,2,0,1,1,227521,0,5299.707,60.17522,1,13,1,44.99735,0,0,0,0,44.99735,0,0,0,2,0,1,74.5,6.9,0,95.5,0,0,0,0,0,0,0,0,0,0,0,0,95.5,8.575596,0,3.806604,1 +11,2,0,1,2,227521,0,5299.707,61.17522,1,13,1,54.77799,17.81853,0,0,0,72.59653,0,0,0,2,5,1,74.5,6.9,0,95.5,0,0,0,0,0,0,0,0,0,0,0,0,95.5,8.575596,0,4.284917,1 +11,2,0,1,3,227521,0,5299.707,62.17522,1,13,1,13.35114,0,33.37784,0,0,46.72897,0,0,0,0,1,1,74.5,6.9,0,95.5,0,0,0,0,0,0,0,0,0,0,0,0,95.5,8.575596,0,3.844364,1 +11,2,0,0,1,227526,0,5668.035,10.41752,1,17,1,17.13062,0,0,0,0,17.13062,0,0,0,1,0,3,76.7,11.84267,0,48.1,0,380.52,1,1,1.098612,5.941539,0,0,0,0,0,0,48.1,8.642775,1.098612,2.840868,1 +11,2,0,0,2,227526,0,5668.035,11.41752,1,17,1,17.0815,2.733041,0,0,0,19.81454,0,0,0,3,0,3,76.7,11.84267,0,48.1,0,380.52,1,1,1.098612,5.941539,0,0,0,0,0,0,48.1,8.642775,1.098612,2.986416,1 +11,2,0,0,3,227526,0,5668.035,12.41752,1,17,1,21.22855,0,28.73532,0,0,49.96387,0,0,0,2,0,3,76.7,11.84267,0,48.1,0,380.52,1,1,1.098612,5.941539,0,0,0,0,0,0,48.1,8.642775,1.098612,3.9113,1 +11,2,0,0,1,227527,0,5668.035,5.804244,1,17,1,31.34368,3.131692,0,0,0,34.47538,0,0,0,3,0,3,76.7,11.84267,0,77.8,0,380.52,1,1,1.098612,5.941539,0,0,0,1,0,0,77.8,8.642775,1.098612,3.540245,1 +11,2,0,0,2,227527,0,5668.035,6.804244,1,17,1,65.17814,8.369937,0,0,0,73.54807,0,0,0,7,0,3,76.7,11.84267,0,77.8,0,380.52,1,1,1.098612,5.941539,0,0,0,1,0,0,77.8,8.642775,1.098612,4.297939,1 +11,2,0,0,3,227527,0,5668.035,7.804244,1,17,1,19.87353,0,0,0,0,19.87353,0,0,0,2,0,3,76.7,11.84267,0,77.8,0,380.52,1,1,1.098612,5.941539,0,0,0,1,0,0,77.8,8.642775,1.098612,2.989389,1 +11,2,0,0,1,227528,0,5668.035,32.59959,1,17,1,50.85653,13.16916,33.61349,0,0,97.63918,0,0,0,6,0,3,47.9,34.5,0,54.5,0,380.52,0,0,1.098612,5.941539,0,0,0,0,0,0,54.5,8.642775,1.098612,4.581279,1 +11,2,0,0,2,227528,0,5668.035,33.59959,1,17,1,61.3226,29.47779,0,0,0,90.80039,0,0,0,7,0,3,47.9,34.5,0,54.5,0,380.52,0,0,1.098612,5.941539,0,0,0,0,0,0,54.5,8.642775,1.098612,4.508664,1 +11,2,0,0,3,227528,0,5668.035,34.59959,1,17,1,19.87353,9.214092,0,0,0,29.08762,0,0,0,3,0,3,47.9,34.5,0,54.5,0,380.52,0,0,1.098612,5.941539,0,0,0,0,0,0,54.5,8.642775,1.098612,3.370313,1 +11,2,0,1,1,227539,0,22434.02,32.56947,1,16,1,152.5696,5.663812,0,0,0,158.2334,0,0,0,2,5,4,39.9,17.2,1,55.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,55.7,10.01838,1.386294,5.064071,1 +11,2,0,1,2,227539,0,22434.02,33.56947,1,16,1,25.0366,22.81601,28.94095,0,0,76.79356,0,0,0,0,1,4,39.9,17.2,1,55.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,55.7,10.01838,1.386294,4.341121,1 +11,2,0,1,3,227539,0,22434.02,34.56947,1,16,1,63.23397,18.65402,30.49232,0,0,112.3803,0,0,0,4,0,4,39.9,17.2,1,55.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,55.7,10.01838,1.386294,4.721889,1 +11,2,0,1,1,227540,0,22434.02,34.56263,0,16,1,7.226981,0,0,0,0,7.226981,0,0,0,1,0,4,81.4,3.4,0,83,0,0,0,0,1.386294,0,0,0,0,0,0,0,83,10.01838,1.386294,1.977821,1 +11,2,0,1,2,227540,0,22434.02,35.56263,0,16,1,33.35773,9.136164,29.18497,0,1023.719,1095.398,1,0,0,2,0,4,81.4,3.4,0,83,0,0,0,0,1.386294,0,0,0,0,0,0,0,83,10.01838,1.386294,6.998873,1 +11,2,0,1,3,227540,0,22434.02,36.56263,0,16,1,0,0,31.44535,0,2560.176,2591.622,2,0,0,0,0,4,81.4,3.4,0,83,0,0,0,0,1.386294,0,0,0,0,0,0,0,83,10.01838,1.386294,7.860039,1 +11,2,0,1,1,227541,0,22434.02,1.382615,0,16,1,162.5535,21.10278,0,0,0,183.6563,0,0,0,8,0,4,81.35272,11.84267,0,51.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,51.9,10.01838,1.386294,5.213066,1 +11,2,0,1,2,227541,0,22434.02,2.382615,0,16,1,97.90141,3.001464,0,0,0,100.9029,0,0,0,2,0,4,81.35272,11.84267,0,51.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,51.9,10.01838,1.386294,4.614159,1 +11,2,0,1,3,227541,0,22434.02,3.382615,0,16,1,55.32972,0,0,0,0,55.32972,0,0,0,4,1,4,81.35272,11.84267,0,51.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,51.9,10.01838,1.386294,4.01331,1 +11,2,0,1,1,227549,0,10646.33,59.22245,1,14,1,112.152,86.38116,61.34368,0,0,259.8769,0,0,0,4,1,1,91.5,34.5,0,84.1,0,0,0,0,0,0,0,0,0,1,0,0,84.1,9.273065,0,5.560208,1 +11,2,0,1,2,227549,0,10646.33,60.22245,1,14,1,403.1235,78.52123,0,0,71.35188,552.9966,1,0,0,13,0,1,91.5,34.5,0,84.1,0,0,0,0,0,0,0,0,0,1,0,0,84.1,9.273065,0,6.315352,1 +11,2,0,1,3,227549,0,10646.33,61.22245,1,14,1,283.5366,125.009,0,0,0,408.5456,0,0,0,10,0,1,91.5,34.5,0,84.1,0,0,0,0,0,0,0,0,0,1,0,0,84.1,9.273065,0,6.012604,1 +11,2,0,1,1,227588,0,11380.06,.9965777,0,14,1,126.5257,12.9818,0,0,0,139.5075,0,0,0,16,0,3,81.35272,11.84267,0,92.6,0,0,1,0,1.098612,0,0,0,0,1,0,0,92.6,9.339705,1.098612,4.938118,1 +11,2,0,1,2,227588,0,11380.06,1.996578,0,14,1,75.32943,16.25183,0,0,0,91.58126,0,0,0,5,0,3,81.35272,11.84267,0,92.6,0,0,1,0,1.098612,0,0,0,0,1,0,0,92.6,9.339705,1.098612,4.517227,1 +11,2,0,1,3,227588,0,11380.06,2.996578,0,14,1,34.10117,4.471545,0,0,0,38.57272,0,0,0,2,0,3,81.35272,11.84267,0,92.6,0,0,1,0,1.098612,0,0,0,0,1,0,0,92.6,9.339705,1.098612,3.652545,1 +11,2,0,1,1,227589,0,11380.06,30.68036,1,14,1,95.12848,109.4272,0,0,0,204.5557,0,0,0,6,0,3,69.7,3.4,0,90.5,0,0,0,0,1.098612,0,0,0,0,0,0,0,90.5,9.339705,1.098612,5.32084,1 +11,2,0,1,2,227589,0,11380.06,31.68036,1,14,1,84.30942,134.6364,0,0,0,218.9458,0,0,0,6,0,3,69.7,3.4,0,90.5,0,0,0,0,1.098612,0,0,0,0,0,0,0,90.5,9.339705,1.098612,5.388824,1 +11,2,0,1,3,227589,0,11380.06,32.68036,1,14,1,108.0623,233.3966,0,0,0,341.4589,0,0,0,7,0,3,69.7,3.4,0,90.5,0,0,0,0,1.098612,0,0,0,0,0,0,0,90.5,9.339705,1.098612,5.833227,1 +11,2,0,1,1,227590,0,11380.06,33.63176,0,16,1,5.353319,4.577088,0,0,1120.905,1130.835,1,0,0,1,0,3,73.9,0,0,77.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.3,9.339705,1.098612,7.030712,1 +11,2,0,1,2,227590,0,11380.06,34.63176,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,73.9,0,0,77.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.3,9.339705,1.098612,,0 +11,2,0,1,3,227590,0,11380.06,35.63176,0,16,1,7.226739,5.465221,0,0,0,12.69196,0,0,0,1,0,3,73.9,0,0,77.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.3,9.339705,1.098612,2.540969,1 +18,2,25,0,1,227604,0,4313.196,44.86516,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,75,3.4,0,64.8,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,64.8,8.369666,1.386294,,0 +18,2,25,0,2,227604,0,4313.196,45.86516,1,16,1,98.72159,13.92519,0,337.3579,0,112.6468,0,0,22,10,0,4,75,3.4,0,64.8,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,64.8,8.369666,1.386294,4.724257,1 +18,2,25,0,3,227604,0,4313.196,46.86516,1,16,1,10.40312,0,0,0,0,10.40312,0,0,0,4,0,4,75,3.4,0,64.8,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,64.8,8.369666,1.386294,2.342106,1 +18,2,25,0,4,227604,0,4313.196,47.86516,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,75,3.4,0,64.8,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,64.8,8.369666,1.386294,,0 +18,2,25,0,5,227604,0,4313.196,48.86516,1,16,1,75.67084,0,33.91055,171.7352,0,109.5814,0,0,12,4,0,4,75,3.4,0,64.8,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,64.8,8.369666,1.386294,4.696668,1 +18,2,25,0,1,227605,0,4313.196,44.47091,0,16,1,26.50696,0,0,0,0,26.50696,0,0,0,1,0,4,68.6,10.3,1,63.6,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,63.6,8.369666,1.386294,3.277407,1 +18,2,25,0,2,227605,0,4313.196,45.47091,0,16,1,0,0,0,443.8921,0,0,0,0,27,0,0,4,68.6,10.3,1,63.6,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,63.6,8.369666,1.386294,,0 +18,2,25,0,3,227605,0,4313.196,46.47091,0,16,1,119.4192,0,0,10.83658,0,119.4192,0,0,1,5,0,4,68.6,10.3,1,63.6,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,63.6,8.369666,1.386294,4.78264,1 +18,2,25,0,4,227605,0,4313.196,47.47091,0,16,1,40.33084,0,.7089405,0,0,41.03978,0,0,0,2,0,4,68.6,10.3,1,63.6,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,63.6,8.369666,1.386294,3.714542,1 +18,2,25,0,5,227605,0,4313.196,48.47091,0,16,1,67.95349,2.715564,0,0,0,70.66905,0,0,0,4,0,4,68.6,10.3,1,63.6,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,63.6,8.369666,1.386294,4.258008,1 +18,2,25,0,1,227606,0,4313.196,15.72074,0,16,1,201.4941,12.48326,0,0,0,213.9773,0,0,0,24,0,4,86.2,10.3,0,75,48,48,1,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,75,8.369666,1.386294,5.36587,1 +18,2,25,0,2,227606,0,4313.196,16.72074,0,16,1,68.18182,32.83144,0,106.5341,8939.611,9040.625,1,0,7,16,0,4,86.2,10.3,0,75,48,48,1,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,75,8.369666,1.386294,9.109484,1 +18,2,25,0,3,227606,0,4313.196,17.72074,0,16,1,216.6667,24.39098,0,65.01951,4609.623,4850.681,1,0,6,9,0,4,86.2,10.3,0,75,48,48,1,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,75,8.369666,1.386294,8.486875,1 +18,2,25,0,4,227606,0,4313.196,18.72074,0,16,1,55.74636,98.79874,0,452.9342,3489.854,3644.399,1,0,53,4,0,4,86.2,10.3,0,75,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,75,8.369666,1.386294,8.200947,1 +18,2,25,0,5,227606,0,4313.196,19.72074,0,16,1,40.78712,10.08587,0,0,0,50.87299,0,0,0,4,0,4,86.2,10.3,0,75,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,75,8.369666,1.386294,3.929332,1 +18,2,25,0,1,227607,0,4313.196,17.78782,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,84,3.4,0,86.4,48,48,1,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,86.4,8.369666,1.386294,,0 +18,2,25,0,2,227607,0,4313.196,18.78782,0,16,1,5.681818,0,0,0,0,5.681818,0,0,0,1,0,4,84,3.4,0,86.4,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,86.4,8.369666,1.386294,1.737271,1 +18,2,25,0,3,227607,0,4313.196,19.78782,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,84,3.4,0,86.4,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,86.4,8.369666,1.386294,,0 +18,2,25,0,4,227607,0,4313.196,20.78782,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,84,3.4,0,86.4,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,86.4,8.369666,1.386294,,0 +18,2,25,0,5,227607,0,4313.196,21.78782,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,84,3.4,0,86.4,48,48,0,0,1.386294,3.871201,0,3.258096,5.257495,1,0,0,86.4,8.369666,1.386294,,0 +11,2,0,0,1,227614,0,14107.92,32.32854,1,17,1,423.7858,4.810193,31.61726,0,0,460.2132,0,0,0,10,1,2,72.9,13.8,0,70.5,0,276.6,0,0,.6931472,5.622572,0,0,0,0,0,0,70.5,9.554563,.6931472,6.13169,1 +11,2,0,0,2,227614,0,14107.92,33.32854,1,17,1,152.5323,2.718586,0,0,231.3904,386.6412,1,0,0,9,0,2,72.9,13.8,0,70.5,0,276.6,0,0,.6931472,5.622572,0,0,0,0,0,0,70.5,9.554563,.6931472,5.957497,1 +11,2,0,0,3,227614,0,14107.92,34.32854,1,17,1,16.6813,3.248464,0,0,732.7041,752.6339,1,0,0,1,0,2,72.9,13.8,0,70.5,0,276.6,0,0,.6931472,5.622572,0,0,0,0,0,0,70.5,9.554563,.6931472,6.623579,1 +11,2,0,0,1,227615,0,14107.92,30.13005,0,18,1,76.96308,0,0,0,0,76.96308,0,0,0,2,0,2,87.2,3.4,0,95.5,0,276.6,0,0,.6931472,5.622572,0,0,0,0,0,0,95.5,9.554563,.6931472,4.343326,1 +11,2,0,0,2,227615,0,14107.92,31.13005,0,18,1,46.58385,0,0,0,0,46.58385,0,0,0,3,0,2,87.2,3.4,0,95.5,0,276.6,0,0,.6931472,5.622572,0,0,0,0,0,0,95.5,9.554563,.6931472,3.841254,1 +11,2,0,0,3,227615,0,14107.92,32.13005,0,18,1,24.67076,0,0,0,0,24.67076,0,0,0,1,0,2,87.2,3.4,0,95.5,0,276.6,0,0,.6931472,5.622572,0,0,0,0,0,0,95.5,9.554563,.6931472,3.205619,1 +13,2,0,1,1,227616,0,11551.91,29.50308,1,12,1,13.06848,0,0,0,0,13.06848,0,0,0,1,0,4,80.3,0,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,90.9,9.354692,1.386294,2.570203,1 +13,2,0,1,2,227616,0,11551.91,30.50308,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80.3,0,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,90.9,9.354692,1.386294,,0 +13,2,0,1,3,227616,0,11551.91,31.50308,1,12,1,56.47577,0,0,0,322.6212,379.0969,1,0,0,2,0,4,80.3,0,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,90.9,9.354692,1.386294,5.937792,1 +13,2,0,1,1,227617,0,11551.91,5.166325,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,11.84267,0,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.354692,1.386294,,0 +13,2,0,1,2,227617,0,11551.91,6.166325,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,11.84267,0,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.354692,1.386294,,0 +13,2,0,1,3,227617,0,11551.91,7.166325,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,11.84267,0,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.354692,1.386294,,0 +13,2,0,1,1,227618,0,11551.91,30.28337,0,7,1,8.886565,0,0,0,0,8.886565,0,0,0,1,0,4,63.3,10.3,0,73.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,73.9,9.354692,1.386294,2.184541,1 +13,2,0,1,2,227618,0,11551.91,31.28337,0,7,1,0,0,0,0,0,0,0,0,0,0,0,4,63.3,10.3,0,73.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,73.9,9.354692,1.386294,,0 +13,2,0,1,3,227618,0,11551.91,32.28337,0,7,1,182.8194,0,0,0,0,182.8194,0,0,0,16,0,4,63.3,10.3,0,73.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,73.9,9.354692,1.386294,5.208498,1 +13,2,0,1,1,227619,0,11551.91,10.53251,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,11.84267,0,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.354692,1.386294,,0 +13,2,0,1,2,227619,0,11551.91,11.53251,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,11.84267,0,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.354692,1.386294,,0 +13,2,0,1,3,227619,0,11551.91,12.53251,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,11.84267,0,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.354692,1.386294,,0 +15,2,95,1,1,227620,0,9891.495,12.68994,0,16,1,20.87794,4.336188,0,0,0,25.21413,0,0,0,2,0,3,83.3,11.84267,0,88.9,545,545,1,0,1.098612,6.300786,0,4.564348,6.352079,0,0,0,88.9,9.199532,1.098612,3.227405,1 +15,2,95,1,1,227621,0,9891.495,13.94661,0,16,1,5.353319,0,0,0,0,5.353319,0,0,0,1,0,3,91.7,11.84267,0,100,545,545,1,0,1.098612,6.300786,0,4.564348,6.352079,0,0,0,100,9.199532,1.098612,1.677717,1 +15,2,95,1,1,227622,0,9891.495,33.31691,1,16,1,51.39186,46.11349,0,0,0,97.50536,0,0,0,4,0,3,58,17.2,0,95.5,545,545,0,0,1.098612,6.300786,0,4.564348,6.352079,0,0,0,95.5,9.199532,1.098612,4.579907,1 +11,2,0,1,1,227626,0,3479.179,20.82683,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,71.3,13.8,0,71.6,0,0,0,0,0,0,0,0,0,0,0,0,71.6,8.154839,0,,0 +11,2,0,1,2,227626,0,3479.179,21.82683,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,71.3,13.8,0,71.6,0,0,0,0,0,0,0,0,0,0,0,0,71.6,8.154839,0,,0 +11,2,0,1,3,227626,0,3479.179,22.82683,0,12,1,112.7621,0,0,0,0,112.7621,0,0,0,2,0,1,71.3,13.8,0,71.6,0,0,0,0,0,0,0,0,0,0,0,0,71.6,8.154839,0,4.72528,1 +16,2,95,1,1,227643,0,6992.962,35.63313,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,64.4,6.9,0,86.4,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,86.4,8.852802,0,,0 +16,2,95,1,2,227643,0,6992.962,36.63313,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,64.4,6.9,0,86.4,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,86.4,8.852802,0,,0 +16,2,95,1,3,227643,0,6992.962,37.63313,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,64.4,6.9,0,86.4,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,86.4,8.852802,0,,0 +16,2,95,0,1,227674,0,7612.317,53.56331,0,12,1,16.85393,88.48315,0,0,0,105.3371,0,0,0,2,0,5,82.4,10.3,0,68.2,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,1,0,68.2,8.937654,1.609438,4.657166,1 +16,2,95,0,2,227674,0,7612.317,54.56331,0,12,1,23.44116,109.8547,0,0,0,133.2958,0,0,0,2,0,4,82.4,10.3,0,68.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,68.2,8.937654,1.386294,4.892571,1 +16,2,95,0,3,227674,0,7612.317,55.56331,0,12,1,68.14273,123.9639,45.39123,773.8607,1028.899,1266.397,1,0,36,5,0,3,82.4,10.3,0,68.2,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,1,0,68.2,8.937654,1.098612,7.143931,1 +16,2,95,0,1,227675,0,7612.317,18.5243,0,11,1,14.30031,2.145046,0,0,0,16.44535,0,0,0,1,0,5,70.2,10.3,0,92,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,92,8.937654,1.609438,2.800043,1 +16,2,95,0,1,227676,0,7612.317,14.4011,1,12,1,18.38611,0,0,0,0,18.38611,0,0,0,2,0,5,78.7,10.3,0,63.6,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,1,0,0,63.6,8.937654,1.609438,2.911595,1 +16,2,95,0,2,227676,0,7612.317,15.4011,1,12,1,93.99906,5.110174,0,0,0,99.10924,0,0,0,6,1,4,78.7,10.3,0,63.6,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,63.6,8.937654,1.386294,4.596223,1 +16,2,95,0,1,227677,0,7612.317,12.85421,0,12,1,17.36466,5.26047,0,0,0,22.62513,0,0,0,2,0,5,90,11.84267,0,22.2,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,22.2,8.937654,1.609438,3.119061,1 +16,2,95,0,2,227677,0,7612.317,13.85421,0,12,1,23.44116,13.45523,0,0,0,36.89639,0,0,0,3,0,4,90,11.84267,0,22.2,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,22.2,8.937654,1.386294,3.608114,1 +16,2,95,0,3,227677,0,7612.317,14.85421,0,12,1,0,5.137575,0,0,0,5.137575,0,0,0,0,0,3,90,11.84267,0,22.2,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,22.2,8.937654,1.098612,1.636581,1 +16,2,95,0,1,227679,0,7612.317,50.19576,1,12,1,83.27375,153.8458,0,0,0,237.1195,0,0,0,8,0,5,76.1,37.9,1,29.5,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,1,0,29.5,8.937654,1.609438,5.468564,1 +16,2,95,0,2,227679,0,7612.317,51.19576,1,12,1,37.41209,131.3127,0,0,0,168.7248,0,0,0,5,0,4,76.1,37.9,1,29.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,29.5,8.937654,1.386294,5.128269,1 +16,2,95,0,3,227679,0,7612.317,52.19576,1,12,1,188.1685,176.5606,47.11092,0,0,411.8401,0,0,0,7,0,3,76.1,37.9,1,29.5,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,1,0,29.5,8.937654,1.098612,6.020635,1 +11,2,0,1,1,227711,0,6928.446,11.06639,0,11,1,115.3273,2.118148,32.77807,0,188.6642,338.8877,1,0,0,3,1,4,73.3,11.84267,1,85.2,0,573.3,1,0,1.386294,6.351409,0,0,0,0,0,0,85.2,8.843535,1.386294,5.825669,1 +11,2,0,1,2,227711,0,6928.446,12.06639,0,11,1,68.46825,0,0,0,0,68.46825,0,0,0,3,0,4,73.3,11.84267,1,85.2,0,573.3,1,0,1.386294,6.351409,0,0,0,0,0,0,85.2,8.843535,1.386294,4.22637,1 +11,2,0,1,3,227711,0,6928.446,13.06639,0,11,1,17.96945,0,29.02965,0,0,46.9991,0,0,0,0,1,4,73.3,11.84267,1,85.2,0,573.3,1,0,1.386294,6.351409,0,0,0,0,0,0,85.2,8.843535,1.386294,3.850128,1 +11,2,0,1,1,227712,0,6928.446,5.782341,1,11,1,88.34486,13.75732,31.18148,0,0,133.2837,0,0,0,3,1,4,88.3,11.84267,0,92.6,0,573.3,1,1,1.386294,6.351409,0,0,0,0,0,0,92.6,8.843535,1.386294,4.892479,1 +11,2,0,1,2,227712,0,6928.446,6.782341,1,11,1,31.99224,6.490548,26.03975,0,0,64.52254,0,0,0,1,1,4,88.3,11.84267,0,92.6,0,573.3,1,1,1.386294,6.351409,0,0,0,0,0,0,92.6,8.843535,1.386294,4.167015,1 +11,2,0,1,3,227712,0,6928.446,7.782341,1,11,1,30.54807,2.201258,0,0,0,32.74932,0,0,0,0,0,4,88.3,11.84267,0,92.6,0,573.3,1,1,1.386294,6.351409,0,0,0,0,0,0,92.6,8.843535,1.386294,3.488882,1 +11,2,0,1,1,227713,0,6928.446,32.44353,1,11,1,81.55934,0,36.50346,396.4875,0,118.0628,0,0,36,3,1,4,56.4,10.3,1,59.1,0,573.3,0,0,1.386294,6.351409,0,0,0,1,0,0,59.1,8.843535,1.386294,4.771217,1 +11,2,0,1,2,227713,0,6928.446,33.44353,1,11,1,68.51188,2.399418,0,36.35482,0,70.91129,0,0,3,2,0,4,56.4,10.3,1,59.1,0,573.3,0,0,1.386294,6.351409,0,0,0,1,0,0,59.1,8.843535,1.386294,4.26143,1 +11,2,0,1,3,227713,0,6928.446,34.44353,1,11,1,88.77808,12.48877,0,0,0,101.2668,0,0,0,3,0,4,56.4,10.3,1,59.1,0,573.3,0,0,1.386294,6.351409,0,0,0,1,0,0,59.1,8.843535,1.386294,4.617759,1 +11,2,0,1,1,227728,0,5501.466,58.74059,1,12,1,51.22844,1.751176,42.79665,0,0,95.77627,0,0,0,4,0,1,91,17.2,0,85.2,0,36,0,0,0,3.583519,0,0,0,1,0,0,85.2,8.612951,0,4.562015,1 +11,2,0,1,2,227728,0,5501.466,59.74059,1,12,1,17.29938,5.800096,0,0,0,23.09947,0,0,0,3,0,1,91,17.2,0,85.2,0,36,0,0,0,3.583519,0,0,0,1,0,0,85.2,8.612951,0,3.13981,1 +11,2,0,1,3,227728,0,5501.466,60.74059,1,12,1,192.4009,12.99559,51.99559,0,0,257.3921,0,0,0,9,9,1,91,17.2,0,85.2,0,36,0,0,0,3.583519,0,0,0,1,0,0,85.2,8.612951,0,5.550601,1 +11,2,0,1,1,227737,0,7643.402,31.61123,1,17,1,35.20381,21.01641,0,0,0,56.22022,0,0,0,2,0,1,84.6,20.7,1,78.4,0,0,0,0,0,0,0,0,0,0,0,0,78.4,8.941729,0,4.029276,1 +11,2,0,1,2,227737,0,7643.402,32.61123,1,17,1,107.1429,4.720077,0,0,0,111.8629,0,0,0,3,0,1,84.6,20.7,1,78.4,0,0,0,0,0,0,0,0,0,0,0,0,78.4,8.941729,0,4.717274,1 +11,2,0,1,3,227737,0,7643.402,33.61123,1,17,1,26.70227,12.22964,42.9773,0,0,81.90921,0,0,0,2,0,1,84.6,20.7,1,78.4,0,0,0,0,0,0,0,0,0,0,0,0,78.4,8.941729,0,4.405612,1 +11,2,0,1,1,227739,0,5029.912,27.93977,1,16,1,84.08728,18.58968,0,0,0,102.677,0,0,0,7,1,1,41,10.3,1,61.4,0,0,0,0,0,0,0,0,0,1,0,0,61.4,8.523356,0,4.631588,1 +11,2,0,1,2,227739,0,5029.912,28.93977,1,16,1,107.3679,61.68202,0,0,0,169.0499,0,0,0,11,0,1,41,10.3,1,61.4,0,0,0,0,0,0,0,0,0,1,0,0,61.4,8.523356,0,5.130194,1 +11,2,0,1,3,227739,0,5029.912,29.93977,1,16,1,234.389,51.67116,0,0,0,286.0602,0,0,0,4,40,1,41,10.3,1,61.4,0,0,0,0,0,0,0,0,0,1,0,0,61.4,8.523356,0,5.656202,1 +6,2,25,0,1,227752,0,1847.507,20.44353,1,12,1,197.459,65.00794,40.28057,0,0,302.7475,0,0,0,5,1,1,48.4,17.2,0,86.4,40,0,0,0,0,0,0,3.258096,5.075174,0,0,0,86.4,7.522134,0,5.712899,1 +6,2,25,0,2,227752,0,1847.507,21.44353,1,12,1,88.32047,49.48359,19.30502,212.3552,823.0116,980.1207,1,0,10,6,1,1,48.4,17.2,0,86.4,40,0,0,0,0,0,0,3.258096,5.075174,0,0,0,86.4,7.522134,0,6.887676,1 +6,2,25,0,3,227752,0,1847.507,22.44353,1,12,1,216.6444,67.41878,36.67112,111.2595,302.3587,623.093,1,0,5,13,0,2,48.4,17.2,0,86.4,40,0,0,0,.6931472,0,0,3.258096,5.075174,0,0,0,86.4,7.522134,.6931472,6.434696,1 +15,2,95,1,1,227757,0,5533.138,23.83573,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.7,3.4,0,95.5,712.1,0,0,0,1.098612,0,0,4.564348,6.619512,0,0,0,95.5,8.618691,1.098612,,0 +15,2,95,1,2,227757,0,5533.138,24.83573,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.7,3.4,0,95.5,712.1,0,0,0,1.098612,0,0,4.564348,6.619512,0,0,0,95.5,8.618691,1.098612,,0 +15,2,95,1,3,227757,0,5533.138,25.83573,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.7,3.4,0,95.5,712.1,0,0,0,1.098612,0,0,4.564348,6.619512,0,0,0,95.5,8.618691,1.098612,,0 +15,2,95,1,1,227758,0,5533.138,22.68036,1,12,1,47.56926,0,0,0,0,47.56926,0,0,0,2,0,3,24.5,3.4,0,22.7,712.1,0,0,0,1.098612,0,0,4.564348,6.619512,1,0,0,22.7,8.618691,1.098612,3.862187,1 +15,2,95,1,2,227758,0,5533.138,23.68036,1,12,1,33.63767,0,0,0,0,33.63767,0,0,0,2,0,3,24.5,3.4,0,22.7,712.1,0,0,0,1.098612,0,0,4.564348,6.619512,1,0,0,22.7,8.618691,1.098612,3.515647,1 +15,2,95,1,3,227758,0,5533.138,24.68036,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,24.5,3.4,0,22.7,712.1,0,0,0,1.098612,0,0,4.564348,6.619512,1,0,0,22.7,8.618691,1.098612,,0 +15,2,95,1,1,227759,0,5533.138,3.238878,0,12,1,20.90957,0,0,0,0,20.90957,0,0,0,0,0,3,81.35272,11.84267,0,96.3,712.1,0,1,0,1.098612,0,0,4.564348,6.619512,0,0,0,96.3,8.618691,1.098612,3.040207,1 +15,2,95,1,2,227759,0,5533.138,4.238877,0,12,1,9.610765,0,0,0,0,9.610765,0,0,0,1,0,3,81.35272,11.84267,0,96.3,712.1,0,1,0,1.098612,0,0,4.564348,6.619512,0,0,0,96.3,8.618691,1.098612,2.262884,1 +15,2,95,1,3,227759,0,5533.138,5.238877,0,12,1,11.67401,4.38326,0,0,0,16.05727,0,0,0,1,0,3,81.35272,11.84267,0,96.3,712.1,0,1,0,1.098612,0,0,4.564348,6.619512,0,0,0,96.3,8.618691,1.098612,2.776162,1 +13,2,0,1,1,227761,0,9331.965,25.55236,0,16,1,8.73478,0,34.08682,0,0,42.8216,0,0,0,0,0,1,86.2,17.2,0,80.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,80.7,9.141308,0,3.757043,1 +16,2,95,1,1,227770,0,8265.103,44.17796,0,18,1,12.3736,0,0,0,0,12.3736,0,0,0,0,0,4,58.5,27.6,1,40.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,40.9,9.019918,1.386294,2.515565,1 +16,2,95,1,2,227770,0,8265.103,45.17796,0,18,1,0,0,0,0,0,0,0,0,0,0,0,4,58.5,27.6,1,40.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,40.9,9.019918,1.386294,,0 +16,2,95,1,3,227770,0,8265.103,46.17796,0,18,1,0,0,0,0,0,0,0,0,0,0,0,4,58.5,27.6,1,40.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,40.9,9.019918,1.386294,,0 +16,2,95,1,1,227771,0,8265.103,10.90212,1,14,1,26.3438,0,0,0,0,26.3438,0,0,0,2,0,4,66.7,11.84267,0,77.8,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,77.8,9.019918,1.386294,3.271233,1 +16,2,95,1,2,227771,0,8265.103,11.90212,1,14,1,15.99612,0,0,0,0,15.99612,0,0,0,1,0,4,66.7,11.84267,0,77.8,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,77.8,9.019918,1.386294,2.772346,1 +16,2,95,1,3,227771,0,8265.103,12.90212,1,14,1,21.11411,0,0,0,0,21.11411,0,0,0,1,0,4,66.7,11.84267,0,77.8,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,77.8,9.019918,1.386294,3.049941,1 +16,2,95,1,1,227772,0,8265.103,39.7974,1,14,1,18.62693,22.32038,0,0,0,40.94731,0,0,0,1,0,4,83,31,0,75,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,75,9.019918,1.386294,3.712286,1 +16,2,95,1,2,227772,0,8265.103,40.7974,1,14,1,22.68541,15.71983,0,0,0,38.40524,0,0,0,2,0,4,83,31,0,75,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,75,9.019918,1.386294,3.648194,1 +16,2,95,1,3,227772,0,8265.103,41.7974,1,14,1,27.40341,0,0,0,0,27.40341,0,0,0,2,0,4,83,31,0,75,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,75,9.019918,1.386294,3.310668,1 +16,2,95,1,1,227773,0,8265.103,13.36345,0,14,1,18.22778,0,0,0,0,18.22778,0,0,0,1,0,4,50,11.84267,0,100,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,100,9.019918,1.386294,2.902947,1 +16,2,95,1,2,227773,0,8265.103,14.36345,0,14,1,45.51624,0,1.696558,0,0,47.2128,0,0,0,3,0,4,50,11.84267,0,100,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,100,9.019918,1.386294,3.854665,1 +16,2,95,1,3,227773,0,8265.103,15.36345,0,14,1,8.984726,0,0,0,0,8.984726,0,0,0,1,0,4,50,11.84267,0,100,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,100,9.019918,1.386294,2.195526,1 +11,2,0,0,1,227847,0,5767.155,59.65777,1,12,1,63.70255,14.76859,55.16901,0,0,133.6402,0,0,0,5,0,1,81.4,27.6,1,73.9,0,292.49,0,0,0,5.678431,0,0,0,1,0,0,73.9,8.660108,0,4.895151,1 +11,2,0,0,2,227847,0,5767.155,60.65777,1,12,1,67.20019,1.337793,0,0,0,68.53799,0,0,0,2,0,1,81.4,27.6,1,73.9,0,292.49,0,0,0,5.678431,0,0,0,1,0,0,73.9,8.660108,0,4.227388,1 +11,2,0,0,3,227847,0,5767.155,61.65777,1,12,1,49.60492,9.956101,0,0,0,59.56102,0,0,0,3,0,1,81.4,27.6,1,73.9,0,292.49,0,0,0,5.678431,0,0,0,1,0,0,73.9,8.660108,0,4.087001,1 +13,2,0,0,1,227889,0,7839.296,32.57769,1,18,1,0,3.735188,0,0,0,3.735188,0,0,0,0,0,1,54.8,17.2,1,79.5,150,340.8,0,0,0,5.831296,1,4.564348,5.061929,0,0,0,79.5,8.967031,0,1.317798,1 +13,2,0,0,2,227889,0,7839.296,33.57769,1,18,1,22.91667,1.931818,0,0,0,24.84848,0,0,0,1,0,1,54.8,17.2,1,79.5,150,340.8,0,0,0,5.831296,1,4.564348,5.061929,0,0,0,79.5,8.967031,0,3.212797,1 +13,2,0,0,3,227889,0,7839.296,34.57769,1,18,1,0,10.19506,1.603814,0,0,11.79887,0,0,0,0,0,1,54.8,17.2,1,79.5,150,340.8,0,0,0,5.831296,1,4.564348,5.061929,0,0,0,79.5,8.967031,0,2.468004,1 +13,2,0,0,1,227890,0,1700.88,26.88296,0,14,1,0,0,0,10.30397,0,0,0,0,1,0,0,1,86.7,0,0,79.5,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,79.5,7.439489,0,,0 +13,2,0,0,2,227890,0,1700.88,27.88296,0,14,1,11.36364,2.911932,0,0,0,14.27557,0,0,0,2,0,1,86.7,0,0,79.5,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,79.5,7.439489,0,2.65855,1 +13,2,0,0,3,227890,0,1700.88,28.88296,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,86.7,0,0,79.5,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,79.5,7.439489,0,,0 +13,2,0,1,1,227922,0,10902.05,4.33128,1,12,1,72.53748,9.98394,0,0,0,82.52142,0,0,0,7,0,4,81.35272,11.84267,0,66.7,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,66.7,9.296798,1.386294,4.413058,1 +13,2,0,1,2,227922,0,10902.05,5.33128,1,12,1,130.3075,26.11518,0,0,0,156.4226,0,0,0,11,3,4,81.35272,11.84267,0,66.7,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,66.7,9.296798,1.386294,5.052562,1 +13,2,0,1,3,227922,0,10902.05,6.33128,1,12,1,9.936766,3.252033,0,0,0,13.1888,0,0,0,1,1,4,81.35272,11.84267,0,66.7,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,66.7,9.296798,1.386294,2.579368,1 +13,2,0,1,1,227923,0,10902.05,27.35387,1,12,1,152.0343,44.5878,40.43897,1070.664,0,237.061,0,0,50,5,9,4,67.6,13.8,0,58,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,58,9.296798,1.386294,5.468318,1 +13,2,0,1,2,227923,0,10902.05,28.35387,1,12,1,365.0561,23.00146,33.60664,783.309,0,421.6642,0,0,40,10,16,4,67.6,13.8,0,58,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,58,9.296798,1.386294,6.044209,1 +13,2,0,1,3,227923,0,10902.05,29.35387,1,12,1,306.4137,15.83107,43.24752,307.1364,0,365.4923,0,0,17,6,11,4,67.6,13.8,0,58,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,58,9.296798,1.386294,5.901245,1 +13,2,0,1,1,227924,0,10902.05,7.181383,0,12,1,201.8201,76.52034,124.106,0,0,402.4465,0,0,0,24,5,4,70,11.84267,1,22.2,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,22.2,9.296798,1.386294,5.997562,1 +13,2,0,1,2,227924,0,10902.05,8.181382,0,12,1,355.0757,50.73206,0,0,0,405.8077,0,0,0,39,9,4,70,11.84267,1,22.2,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,22.2,9.296798,1.386294,6.005879,1 +13,2,0,1,3,227924,0,10902.05,9.181382,0,12,1,224.8193,35.85817,.6775068,0,0,261.355,0,0,0,12,7,4,70,11.84267,1,22.2,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,22.2,9.296798,1.386294,5.56588,1 +13,2,0,1,1,227925,0,10902.05,32.68172,0,12,1,166.4882,31.17238,0,0,0,197.6606,0,0,0,8,5,4,73.9,6.9,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,71.6,9.296798,1.386294,5.286551,1 +13,2,0,1,2,227925,0,10902.05,33.68172,0,12,1,79.06296,7.242558,38.54075,0,0,124.8463,0,0,0,6,1,4,73.9,6.9,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,71.6,9.296798,1.386294,4.827083,1 +13,2,0,1,3,227925,0,10902.05,34.68172,0,12,1,47.19964,2.190605,3.31075,0,0,52.70099,0,0,0,2,2,4,73.9,6.9,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,71.6,9.296798,1.386294,3.964634,1 +11,2,0,1,1,227926,0,8665.641,3.110198,1,11,1,29.53476,7.030842,0,0,0,36.56561,0,0,0,3,0,3,81.35272,11.84267,0,74.1,0,0,1,1,1.098612,0,0,0,0,0,0,0,74.1,9.067237,1.098612,3.599108,1 +11,2,0,1,1,227927,0,8665.641,23.80835,1,11,1,162.4935,34.39101,41.08207,0,520.6221,758.5886,1,0,0,4,1,3,41,20.7,1,43.2,0,0,0,0,1.098612,0,0,0,0,0,1,0,43.2,9.067237,1.098612,6.63146,1 +11,2,0,1,1,227928,0,8665.641,36.05202,0,10,1,109.2525,2.88552,0,0,0,112.138,0,0,0,5,0,3,76.6,17.2,1,14.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,14.8,9.067237,1.098612,4.71973,1 +17,2,25,0,1,227941,0,11326.69,13.54689,1,9,1,11.70836,8.461947,0,0,0,20.1703,0,0,0,2,0,3,93.3,11.84267,0,66.7,900.4,900.4,1,1,1.098612,6.802839,0,3.258096,8.189134,0,0,0,66.7,9.335005,1.098612,3.004211,1 +17,2,25,0,2,227941,0,11326.69,14.54689,1,9,1,26.10276,8.773631,0,0,0,34.87639,0,0,0,2,0,3,93.3,11.84267,0,66.7,900.4,900.4,1,1,1.098612,6.802839,0,3.258096,8.189134,0,0,0,66.7,9.335005,1.098612,3.55181,1 +17,2,25,0,3,227941,0,11326.69,15.54689,1,9,1,107.3675,27.86164,0,0,0,135.2291,0,0,0,11,0,3,93.3,11.84267,0,66.7,900.4,900.4,1,1,1.098612,6.802839,0,3.258096,8.189134,0,0,0,66.7,9.335005,1.098612,4.906971,1 +17,2,25,0,4,227941,0,11326.69,16.54689,1,9,1,180.9233,33.63972,0,0,0,214.563,0,0,0,12,0,3,93.3,11.84267,0,66.7,900.4,900.4,1,1,1.098612,6.802839,0,3.258096,8.189134,0,0,0,66.7,9.335005,1.098612,5.368603,1 +17,2,25,0,5,227941,0,11326.69,17.54689,1,9,1,66.33408,51.26756,37.98965,0,0,155.5913,0,0,0,5,1,2,93.3,11.84267,0,66.7,900.4,900.4,1,1,.6931472,6.802839,0,3.258096,8.189134,0,0,0,66.7,9.335005,.6931472,5.047233,1 +17,2,25,0,1,227942,0,11326.69,57.04038,0,12,1,18.62693,0,16.76424,0,0,35.39117,0,0,0,1,0,3,70.2,10.3,1,83,900.4,900.4,0,0,1.098612,6.802839,0,3.258096,8.189134,1,0,0,83,9.335005,1.098612,3.566462,1 +17,2,25,0,2,227942,0,11326.69,58.04038,0,12,1,109.7431,0,0,0,0,109.7431,0,0,0,4,0,3,70.2,10.3,1,83,900.4,900.4,0,0,1.098612,6.802839,0,3.258096,8.189134,1,0,0,83,9.335005,1.098612,4.698142,1 +17,2,25,0,3,227942,0,11326.69,59.04038,0,12,1,173.1357,16.32076,0,0,0,189.4564,0,0,0,5,0,3,70.2,10.3,1,83,900.4,900.4,0,0,1.098612,6.802839,0,3.258096,8.189134,1,0,0,83,9.335005,1.098612,5.244159,1 +17,2,25,0,4,227942,0,11326.69,60.04038,0,12,.6639344,2599.902,210.3898,0,0,1143.357,3953.648,2,0,0,29,1,3,70.2,10.3,1,83,900.4,900.4,0,0,1.098612,6.802839,0,3.258096,8.189134,1,0,0,83,9.335005,1.098612,8.282394,1 +17,2,25,0,1,227943,0,11326.69,55.06639,1,9,1,163.7573,63.25705,1.12826,0,445.9287,674.0713,1,0,0,11,0,3,96.8,20.7,1,51.1,900.4,900.4,0,0,1.098612,6.802839,0,3.258096,8.189134,1,0,0,51.1,9.335005,1.098612,6.513336,1 +17,2,25,0,2,227943,0,11326.69,56.06639,1,9,1,35.38536,45.73922,41.77896,0,0,122.9035,0,0,0,3,0,3,96.8,20.7,1,51.1,900.4,900.4,0,0,1.098612,6.802839,0,3.258096,8.189134,1,0,0,51.1,9.335005,1.098612,4.8114,1 +17,2,25,0,3,227943,0,11326.69,57.06639,1,9,1,273.1357,65.44923,14.28571,0,0,352.8706,0,0,0,14,0,3,96.8,20.7,1,51.1,900.4,900.4,0,0,1.098612,6.802839,0,3.258096,8.189134,1,0,0,51.1,9.335005,1.098612,5.866101,1 +17,2,25,0,4,227943,0,11326.69,58.06639,1,9,1,110.3611,85.60115,14.17727,0,0,210.1395,0,0,0,5,0,3,96.8,20.7,1,51.1,900.4,900.4,0,0,1.098612,6.802839,0,3.258096,8.189134,1,0,0,51.1,9.335005,1.098612,5.347772,1 +17,2,25,0,5,227943,0,11326.69,59.06639,1,9,1,79.12048,105.8906,0,0,0,185.0111,0,0,0,5,0,2,96.8,20.7,1,51.1,900.4,900.4,0,0,.6931472,6.802839,0,3.258096,8.189134,1,0,0,51.1,9.335005,.6931472,5.220416,1 +13,2,0,0,1,227951,0,73.31378,5.653662,1,8,1,15.19835,0,0,0,0,15.19835,0,0,0,2,0,5,88.3,11.84267,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,81.5,4.308296,1.609438,2.721187,1 +13,2,0,0,2,227951,0,73.31378,6.653662,1,8,1,6.155303,0,0,0,0,6.155303,0,0,0,1,0,5,88.3,11.84267,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,81.5,4.308296,1.609438,1.817314,1 +13,2,0,0,3,227951,0,73.31378,7.653662,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,11.84267,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,81.5,4.308296,1.609438,,0 +13,2,0,0,1,227952,0,73.31378,37.29227,1,8,1,12.36476,0,0,0,0,12.36476,0,0,0,2,0,5,59.6,3.4,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,1,60.2,4.308296,1.609438,2.514851,1 +13,2,0,0,2,227952,0,73.31378,38.29227,1,8,1,13.25758,0,0,0,0,13.25758,0,0,0,1,0,5,59.6,3.4,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,1,60.2,4.308296,1.609438,2.584569,1 +13,2,0,0,3,227952,0,73.31378,39.29227,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,59.6,3.4,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,1,60.2,4.308296,1.609438,,0 +13,2,0,0,1,227953,0,73.31378,15.56468,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,77.7,3.4,0,69.3,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,1,0,69.3,4.308296,1.609438,,0 +13,2,0,0,2,227953,0,73.31378,16.56468,1,8,1,13.73106,0,0,0,0,13.73106,0,0,0,1,0,5,77.7,3.4,0,69.3,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,1,0,69.3,4.308296,1.609438,2.61966,1 +13,2,0,0,3,227953,0,73.31378,17.56468,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,77.7,3.4,0,69.3,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,1,0,69.3,4.308296,1.609438,,0 +13,2,0,0,1,227954,0,73.31378,17.58248,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,0,0,60.2,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,60.2,4.308296,1.609438,,0 +13,2,0,0,2,227954,0,73.31378,18.58248,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,0,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,60.2,4.308296,1.609438,,0 +13,2,0,0,3,227954,0,73.31378,19.58248,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,0,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,60.2,4.308296,1.609438,,0 +13,2,0,0,1,227955,0,73.31378,14.65298,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,68.6,6.9,0,68.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,1,0,68.2,4.308296,1.609438,,0 +13,2,0,0,2,227955,0,73.31378,15.65298,1,8,1,34.56439,0,0,0,0,34.56439,0,0,0,3,0,5,68.6,6.9,0,68.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,1,0,68.2,4.308296,1.609438,3.542824,1 +13,2,0,0,3,227955,0,73.31378,16.65298,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,68.6,6.9,0,68.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,1,0,68.2,4.308296,1.609438,,0 +13,2,0,0,1,227960,0,8756.599,20.81588,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,86.7,0,0,78.4,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,78.4,9.077677,0,,0 +13,2,0,0,2,227960,0,8756.599,21.81588,1,12,1,69.31653,0,0,0,282.9375,352.254,1,0,0,2,0,1,86.7,0,0,78.4,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,78.4,9.077677,0,5.864353,1 +13,2,0,0,3,227960,0,8756.599,22.81588,1,12,1,22.91105,0,0,0,829.9191,852.8302,2,0,0,0,0,1,86.7,0,0,78.4,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,78.4,9.077677,0,6.74856,1 +18,2,25,0,1,227961,0,13146.04,36.50924,1,12,1,50.23184,7.444616,30.83462,0,0,88.51108,0,0,0,3,0,4,81.4,13.8,0,90.9,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,90.9,9.483952,1.386294,4.483128,1 +18,2,25,0,2,227961,0,13146.04,37.50924,1,12,1,20.35985,0,0,0,0,20.35985,0,0,0,1,0,4,81.4,13.8,0,90.9,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,90.9,9.483952,1.386294,3.013565,1 +18,2,25,0,3,227961,0,13146.04,38.50924,1,12,1,0,3.857824,0,0,0,3.857824,0,0,0,0,0,4,81.4,13.8,0,90.9,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,90.9,9.483952,1.386294,1.350103,1 +18,2,25,0,1,227962,0,13146.04,17.21834,1,12,1,100.3349,12.27203,14.42555,0,0,127.0325,0,0,0,9,0,4,42.6,27.6,1,42,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,1,0,0,42,9.483952,1.386294,4.844443,1 +18,2,25,0,2,227962,0,13146.04,18.21834,1,12,1,121.875,19.55966,13.25758,0,323.5511,478.2434,1,0,0,7,0,4,42.6,27.6,1,42,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,42,9.483952,1.386294,6.17012,1 +18,2,25,0,3,227962,0,13146.04,19.21834,1,12,1,306.567,43.61509,13.0039,6.501951,267.4036,630.5895,1,0,1,19,0,4,42.6,27.6,1,42,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,1,0,0,42,9.483952,1.386294,6.446655,1 +18,2,25,0,1,227963,0,13146.04,40.25188,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,61.7,17.2,1,65.9,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,65.9,9.483952,1.386294,,0 +18,2,25,0,2,227963,0,13146.04,41.25188,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,61.7,17.2,1,65.9,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,65.9,9.483952,1.386294,,0 +18,2,25,0,3,227963,0,13146.04,42.25188,0,12,1,60.25141,12.52709,.8669267,0,0,73.64542,0,0,0,4,0,4,61.7,17.2,1,65.9,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,65.9,9.483952,1.386294,4.299262,1 +18,2,25,0,1,227965,0,13146.04,15.82478,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,51.1,3.4,0,76.1,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.1,9.483952,1.386294,,0 +18,2,25,0,2,227965,0,13146.04,16.82478,0,12,1,0,6.174242,0,0,0,6.174242,0,0,0,0,0,4,51.1,3.4,0,76.1,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.1,9.483952,1.386294,1.820386,1 +18,2,25,0,3,227965,0,13146.04,17.82478,0,12,1,16.03815,4.746424,0,0,0,20.78457,0,0,0,2,0,4,51.1,3.4,0,76.1,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.1,9.483952,1.386294,3.034211,1 +11,2,0,0,1,227980,0,7794.135,37.00479,1,8,1,65.8595,11.68707,0,0,0,77.54657,0,0,0,4,0,4,77.7,13.8,1,60.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,60.2,8.961255,1.386294,4.350879,1 +11,2,0,0,2,227980,0,7794.135,38.00479,1,8,1,34.4159,25.01212,0,0,0,59.42802,0,0,0,4,0,4,77.7,13.8,1,60.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,60.2,8.961255,1.386294,4.084766,1 +11,2,0,0,3,227980,0,7794.135,39.00479,1,8,1,37.73585,13.12668,0,0,2284.712,2335.575,2,0,0,12,0,4,77.7,13.8,1,60.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,60.2,8.961255,1.386294,7.756013,1 +11,2,0,0,4,227980,0,7794.135,40.00479,1,8,1,112.8437,51.2064,0,0,1990.501,2154.551,3,0,0,8,0,4,77.7,13.8,1,60.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,60.2,8.961255,1.386294,7.675337,1 +11,2,0,0,5,227980,0,7794.135,41.00479,1,8,1,199.9261,140.3252,27.24686,0,0,367.4981,0,0,0,52,0,4,77.7,13.8,1,60.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,60.2,8.961255,1.386294,5.906718,1 +11,2,0,0,1,227981,0,7794.135,2.173854,1,8,1,31.39968,23.48058,0,0,0,54.88026,0,0,0,4,0,4,81.35272,11.84267,0,70.4,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.4,8.961255,1.386294,4.005154,1 +11,2,0,0,2,227981,0,7794.135,3.173854,1,8,1,0,7.770237,0,0,0,7.770237,0,0,0,0,0,4,81.35272,11.84267,0,70.4,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.4,8.961255,1.386294,2.050301,1 +11,2,0,0,3,227981,0,7794.135,4.173853,1,8,1,95.2381,14.08356,0,0,0,109.3217,0,0,0,11,0,4,81.35272,11.84267,0,70.4,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.4,8.961255,1.386294,4.694294,1 +11,2,0,0,4,227981,0,7794.135,5.173853,1,8,1,73.65614,13.15962,0,0,0,86.81576,0,0,0,5,0,4,81.35272,11.84267,0,70.4,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.4,8.961255,1.386294,4.463788,1 +11,2,0,0,5,227981,0,7794.135,6.173853,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,70.4,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.4,8.961255,1.386294,,0 +11,2,0,0,1,227982,0,7794.135,12.63518,1,8,1,30.86748,8.861096,0,0,0,39.72858,0,0,0,3,0,4,66.7,11.84267,0,55.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,55.6,8.961255,1.386294,3.682071,1 +11,2,0,0,2,227982,0,7794.135,13.63518,1,8,1,112.8211,11.8856,0,0,0,124.7067,0,0,0,6,0,4,66.7,11.84267,0,55.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,55.6,8.961255,1.386294,4.825965,1 +11,2,0,0,3,227982,0,7794.135,14.63518,1,8,1,211.5903,15.01797,0,0,0,226.6083,0,0,0,11,0,4,66.7,11.84267,0,55.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,55.6,8.961255,1.386294,5.423223,1 +11,2,0,0,4,227982,0,7794.135,15.63518,1,8,1,118.5064,32.8929,0,0,117.8908,269.2901,1,0,0,8,0,4,66.7,11.84267,0,55.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,55.6,8.961255,1.386294,5.595789,1 +11,2,0,0,5,227982,0,7794.135,16.63518,1,8,1,241.5743,56.00148,0,0,0,297.5757,0,0,0,8,0,4,66.7,11.84267,0,55.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,55.6,8.961255,1.386294,5.695669,1 +11,2,0,0,1,227983,0,7794.135,45.88364,0,12,1,18.62693,0,40.20224,0,0,58.82916,0,0,0,1,0,4,69.7,10.3,0,67,0,0,0,0,1.386294,0,0,0,0,0,0,0,67,8.961255,1.386294,4.074638,1 +11,2,0,0,2,227983,0,7794.135,46.88364,0,12,1,0,8.293747,18.61367,0,0,26.90742,0,0,0,0,0,4,69.7,10.3,0,67,0,0,0,0,1.386294,0,0,0,0,0,0,0,67,8.961255,1.386294,3.292402,1 +11,2,0,0,3,227983,0,7794.135,47.88364,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,69.7,10.3,0,67,0,0,0,0,1.386294,0,0,0,0,0,0,0,67,8.961255,1.386294,,0 +11,2,0,0,4,227983,0,7794.135,48.88364,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,69.7,10.3,0,67,0,0,0,0,1.386294,0,0,0,0,0,0,0,67,8.961255,1.386294,,0 +11,2,0,0,5,227983,0,7794.135,49.88364,0,12,1,1039.634,0,0,0,581.1899,1620.824,1,0,0,6,0,4,69.7,10.3,0,67,0,0,0,0,1.386294,0,0,0,0,0,0,0,67,8.961255,1.386294,7.39069,1 +11,2,0,0,1,227984,0,6380.059,59.93155,1,12,1,160.1376,92.35574,0,0,0,252.4934,0,0,0,11,0,1,83,10.3,1,70.5,0,396,0,0,0,5.981414,0,0,0,1,0,0,70.5,8.761089,0,5.531385,1 +11,2,0,0,2,227984,0,6380.059,60.93155,1,12,1,194.2568,111.5203,0,0,0,305.777,0,0,0,15,0,1,83,10.3,1,70.5,0,396,0,0,0,5.981414,0,0,0,1,0,0,70.5,8.761089,0,5.722856,1 +11,2,0,0,3,227984,0,6380.059,61.93155,1,12,1,168.6693,33.69827,51.97152,0,0,254.3391,0,0,0,13,0,1,83,10.3,1,70.5,0,396,0,0,0,5.981414,0,0,0,1,0,0,70.5,8.761089,0,5.538669,1 +11,2,0,0,4,227984,0,6380.059,62.93155,1,12,1,236.4782,64.88817,0,0,0,301.3664,0,0,0,13,0,1,83,10.3,1,70.5,0,396,0,0,0,5.981414,0,0,0,1,0,0,70.5,8.761089,0,5.708327,1 +11,2,0,0,5,227984,0,6380.059,63.93155,1,12,1,221.5909,31.97214,0,0,0,253.563,0,0,0,11,0,1,83,10.3,1,70.5,0,396,0,0,0,5.981414,0,0,0,1,0,0,70.5,8.761089,0,5.535613,1 +11,2,0,1,1,227998,0,12757,18.62012,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,66.5,3.4,0,96.6,0,180,0,0,1.386294,5.192957,0,0,0,0,0,0,96.6,9.453914,1.386294,,0 +11,2,0,1,2,227998,0,12757,19.62012,0,12,1,0,6.235521,0,0,0,6.235521,0,0,0,0,0,4,66.5,3.4,0,96.6,0,180,0,0,1.386294,5.192957,0,0,0,0,0,0,96.6,9.453914,1.386294,1.830262,1 +11,2,0,1,3,227998,0,12757,20.62012,0,12,1,2.447708,3.88073,0,0,0,6.328438,0,0,0,1,0,4,66.5,3.4,0,96.6,0,180,0,0,1.386294,5.192957,0,0,0,0,0,0,96.6,9.453914,1.386294,1.845053,1 +11,2,0,1,1,227999,0,12757,55.40589,0,11,1,67.01958,18.56538,45.26734,0,0,130.8523,0,0,0,3,0,4,70.7,6.9,0,70.5,0,180,0,0,1.386294,5.192957,0,0,0,0,0,0,70.5,9.453914,1.386294,4.874069,1 +11,2,0,1,2,227999,0,12757,56.40589,0,11,1,63.70656,35.66602,14.5029,0,0,113.8755,0,0,0,3,0,4,70.7,6.9,0,70.5,0,180,0,0,1.386294,5.192957,0,0,0,0,0,0,70.5,9.453914,1.386294,4.735106,1 +11,2,0,1,3,227999,0,12757,57.40589,0,11,1,62.75033,17.97953,0,0,0,80.72986,0,0,0,2,0,4,70.7,6.9,0,70.5,0,180,0,0,1.386294,5.192957,0,0,0,0,0,0,70.5,9.453914,1.386294,4.391109,1 +11,2,0,1,1,228000,0,12757,14.89665,0,12,1,16.94018,0,0,0,0,16.94018,0,0,0,1,0,4,80.3,0,0,72.7,0,180,1,0,1.386294,5.192957,0,0,0,0,0,0,72.7,9.453914,1.386294,2.829688,1 +11,2,0,1,2,228000,0,12757,15.89665,0,12,1,18.33977,2.84749,0,0,0,21.18726,0,0,0,2,0,4,80.3,0,0,72.7,0,180,1,0,1.386294,5.192957,0,0,0,0,0,0,72.7,9.453914,1.386294,3.0534,1 +11,2,0,1,3,228000,0,12757,16.89665,0,12,1,41.7223,2.069426,1.557632,0,0,45.34935,0,0,0,2,0,4,80.3,0,0,72.7,0,180,1,0,1.386294,5.192957,0,0,0,0,0,0,72.7,9.453914,1.386294,3.814396,1 +11,2,0,1,1,228001,0,12757,55.436,1,12,1,115.6697,28.50185,0,0,0,144.1715,0,0,0,5,0,4,81.4,13.8,1,35.2,0,180,0,0,1.386294,5.192957,0,0,0,0,0,1,35.2,9.453914,1.386294,4.971004,1 +11,2,0,1,2,228001,0,12757,56.436,1,12,1,23.40734,9.121622,0,0,0,32.52896,0,0,0,1,0,4,81.4,13.8,1,35.2,0,180,0,0,1.386294,5.192957,0,0,0,0,0,1,35.2,9.453914,1.386294,3.482131,1 +11,2,0,1,3,228001,0,12757,57.436,1,12,1,102.0472,12.87939,0,0,0,114.9266,0,0,0,3,0,4,81.4,13.8,1,35.2,0,180,0,0,1.386294,5.192957,0,0,0,0,0,1,35.2,9.453914,1.386294,4.744293,1 +14,2,95,0,1,228020,0,10168.92,43.00342,1,11,1,7.676019,3.28216,0,0,0,10.95818,0,0,0,1,0,8,82.4,17.2,0,80.7,829.6,829.6,0,0,2.079442,6.720943,0,4.564348,6.772237,1,0,0,80.7,9.227189,2.079442,2.394086,1 +14,2,95,0,2,228020,0,10168.92,44.00342,1,11,1,12.54826,0,0,0,0,12.54826,0,0,0,1,0,6,82.4,17.2,0,80.7,829.6,829.6,0,0,1.791759,6.720943,0,4.564348,6.772237,1,0,0,80.7,9.227189,1.791759,2.529582,1 +14,2,95,0,3,228020,0,10168.92,45.00342,1,11,1,203.1598,25.32265,0,0,0,228.4824,0,0,0,5,1,6,82.4,17.2,0,80.7,829.6,829.6,0,0,1.791759,6.720943,0,4.564348,6.772237,1,0,0,80.7,9.227189,1.791759,5.431459,1 +14,2,95,0,1,228021,0,10168.92,6.962355,1,11,1,37.05664,13.94918,0,0,344.1821,395.1879,1,0,0,4,0,8,83.3,11.84267,0,74.1,829.6,829.6,1,1,2.079442,6.720943,0,4.564348,6.772237,0,0,0,74.1,9.227189,2.079442,5.979362,1 +14,2,95,0,2,228021,0,10168.92,7.962355,1,11,1,32.09459,5.936294,0,0,0,38.03089,0,0,0,1,0,6,83.3,11.84267,0,74.1,829.6,829.6,1,1,1.791759,6.720943,0,4.564348,6.772237,0,0,0,74.1,9.227189,1.791759,3.638399,1 +14,2,95,0,3,228021,0,10168.92,8.962355,1,11,1,20.47174,0,0,0,0,20.47174,0,0,0,2,0,6,83.3,11.84267,0,74.1,829.6,829.6,1,1,1.791759,6.720943,0,4.564348,6.772237,0,0,0,74.1,9.227189,1.791759,3.019045,1 +14,2,95,0,1,228022,0,10168.92,15.68241,1,11,1,11.91106,3.92271,0,0,0,15.83377,0,0,0,1,0,8,59,13.8,0,48.8,829.6,829.6,1,1,2.079442,6.720943,0,4.564348,6.772237,1,0,0,48.8,9.227189,2.079442,2.762145,1 +14,2,95,0,2,228022,0,10168.92,16.68241,1,11,1,35.47297,0,0,0,0,35.47297,0,0,0,4,0,6,59,13.8,0,48.8,829.6,829.6,1,1,1.791759,6.720943,0,4.564348,6.772237,1,0,0,48.8,9.227189,1.791759,3.568771,1 +14,2,95,0,3,228022,0,10168.92,17.68241,1,11,1,11.12595,0,0,0,0,11.12595,0,0,0,0,1,6,59,13.8,0,48.8,829.6,829.6,1,1,1.791759,6.720943,0,4.564348,6.772237,1,0,0,48.8,9.227189,1.791759,2.40928,1 +14,2,95,0,1,228023,0,10168.92,1.002053,0,11,1,115.5903,12.49338,0,0,699.8571,827.9407,2,0,0,9,0,8,81.35272,11.84267,0,92.6,829.6,829.6,1,0,2.079442,6.720943,0,4.564348,6.772237,1,0,0,92.6,9.227189,2.079442,6.718942,1 +14,2,95,0,1,228024,0,10168.92,48.25736,0,13,1,7.676019,2.805717,0,0,0,10.48174,0,0,0,1,0,8,80.3,10.3,0,71.6,829.6,829.6,0,0,2.079442,6.720943,0,4.564348,6.772237,0,0,0,71.6,9.227189,2.079442,2.349634,1 +14,2,95,0,2,228024,0,10168.92,49.25736,0,13,1,7.239382,0,50.00965,0,0,57.24903,0,0,0,0,1,6,80.3,10.3,0,71.6,829.6,829.6,0,0,1.791759,6.720943,0,4.564348,6.772237,0,0,0,71.6,9.227189,1.791759,4.047411,1 +14,2,95,0,3,228024,0,10168.92,50.25736,0,13,1,12.23854,0,51.56208,0,0,63.80062,0,0,0,0,1,6,80.3,10.3,0,71.6,829.6,829.6,0,0,1.791759,6.720943,0,4.564348,6.772237,0,0,0,71.6,9.227189,1.791759,4.155763,1 +14,2,95,0,1,228025,0,10168.92,17.99863,1,11,1,27.2631,8.263632,0,0,0,35.52673,0,0,0,2,0,8,58,10.3,0,62.5,829.6,829.6,1,1,2.079442,6.720943,0,4.564348,6.772237,0,1,0,62.5,9.227189,2.079442,3.570286,1 +14,2,95,0,1,228026,0,10168.92,8.561259,0,11,1,69.61356,1.535204,0,0,0,71.14876,0,0,0,4,0,8,60,11.84267,0,40.7,829.6,829.6,1,0,2.079442,6.720943,0,4.564348,6.772237,0,1,0,40.7,9.227189,2.079442,4.264773,1 +14,2,95,0,2,228026,0,10168.92,9.561259,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,60,11.84267,0,40.7,829.6,829.6,1,0,1.791759,6.720943,0,4.564348,6.772237,0,1,0,40.7,9.227189,1.791759,,0 +14,2,95,0,3,228026,0,10168.92,10.56126,0,11,1,26.03471,0,0,0,0,26.03471,0,0,0,2,0,6,60,11.84267,0,40.7,829.6,829.6,1,0,1.791759,6.720943,0,4.564348,6.772237,0,1,0,40.7,9.227189,1.791759,3.259431,1 +14,2,95,0,1,228027,0,10168.92,13.26762,0,11,1,21.70461,0,0,0,0,21.70461,0,0,0,2,0,8,80,11.84267,0,74.1,829.6,829.6,1,0,2.079442,6.720943,0,4.564348,6.772237,0,0,0,74.1,9.227189,2.079442,3.077524,1 +14,2,95,0,2,228027,0,10168.92,14.26762,0,11,1,22.6834,0,0,0,0,22.6834,0,0,0,2,0,6,80,11.84267,0,74.1,829.6,829.6,1,0,1.791759,6.720943,0,4.564348,6.772237,0,0,0,74.1,9.227189,1.791759,3.121633,1 +14,2,95,0,3,228027,0,10168.92,15.26762,0,11,1,11.12595,0,39.9555,0,0,51.08144,0,0,0,0,1,6,80,11.84267,0,74.1,829.6,829.6,1,0,1.791759,6.720943,0,4.564348,6.772237,0,0,0,74.1,9.227189,1.791759,3.933421,1 +13,2,0,0,1,228105,0,17689.74,30.55989,0,12,1,10.92044,9.178367,0,0,0,20.0988,0,0,0,1,0,3,47.9,20.7,0,55.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,55.7,9.780796,1.098612,3.00066,1 +13,2,0,0,2,228105,0,17689.74,31.55989,0,12,1,21.50024,21.33302,0,23.88915,0,42.83325,0,0,1,3,0,3,47.9,20.7,0,55.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,55.7,9.780796,1.098612,3.757315,1 +13,2,0,0,3,228105,0,17689.74,32.55989,0,12,1,91.90079,21.90518,0,166.813,0,113.806,0,0,10,2,0,3,47.9,20.7,0,55.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,55.7,9.780796,1.098612,4.734495,1 +13,2,0,0,4,228105,0,17689.74,33.55989,0,12,1,121.6594,6.322298,0,0,0,127.9817,0,0,0,4,0,3,47.9,20.7,0,55.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,55.7,9.780796,1.098612,4.851887,1 +13,2,0,0,5,228105,0,17689.74,34.55989,0,12,1,143.1291,3.607687,0,119.6519,0,146.7368,0,0,6,8,0,3,47.9,20.7,0,55.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,55.7,9.780796,1.098612,4.98864,1 +13,2,0,0,1,228106,0,17689.74,8.991102,0,12,1,8.060323,0,0,0,0,8.060323,0,0,0,1,0,3,93.3,11.84267,0,88.9,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.780796,1.098612,2.086954,1 +13,2,0,0,2,228106,0,17689.74,9.991102,0,12,1,10.03344,0,0,0,0,10.03344,0,0,0,1,0,3,93.3,11.84267,0,88.9,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.780796,1.098612,2.305924,1 +13,2,0,0,3,228106,0,17689.74,10.9911,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,93.3,11.84267,0,88.9,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.780796,1.098612,,0 +13,2,0,0,4,228106,0,17689.74,11.9911,0,12,1,93.39848,13.76147,0,0,0,107.16,0,0,0,4,0,3,93.3,11.84267,0,88.9,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.780796,1.098612,4.674323,1 +13,2,0,0,5,228106,0,17689.74,12.9911,0,12,1,53.1182,9.408992,0,0,0,62.52719,0,0,0,6,0,3,93.3,11.84267,0,88.9,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.780796,1.098612,4.135602,1 +13,2,0,0,1,228107,0,17689.74,32.72553,1,12,1,29.9012,95.94384,39.25637,0,0,165.1014,0,0,0,2,0,3,37.8,17.2,1,28.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,28.4,9.780796,1.098612,5.10656,1 +13,2,0,0,2,228107,0,17689.74,33.72553,1,12,1,105.1123,97.72098,0,0,0,202.8333,0,0,0,9,0,3,37.8,17.2,1,28.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,28.4,9.780796,1.098612,5.312384,1 +13,2,0,0,3,228107,0,17689.74,34.72553,1,12,1,115.5619,75.26339,0,0,0,190.8253,0,0,0,6,0,3,37.8,17.2,1,28.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,28.4,9.780796,1.098612,5.251359,1 +13,2,0,0,4,228107,0,17689.74,35.72553,1,12,1,50.53849,57.47906,0,0,0,108.0175,0,0,0,5,0,3,37.8,17.2,1,28.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,28.4,9.780796,1.098612,4.682294,1 +13,2,0,0,5,228107,0,17689.74,36.72553,1,12,1,49.49239,52.01233,30.73967,0,0,132.2444,0,0,0,3,1,3,37.8,17.2,1,28.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,28.4,9.780796,1.098612,4.884652,1 +13,2,0,1,1,228112,0,6118.475,29.82615,1,13,1,118.4004,90.02614,46.8322,0,0,255.2588,0,0,0,19,1,1,61.7,31,0,48.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,48.9,8.719232,0,5.542278,1 +13,2,0,1,2,228112,0,6118.475,30.82615,1,13,1,339.6684,30.34118,44.98799,0,0,414.9976,0,0,0,32,1,1,61.7,31,0,48.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,48.9,8.719232,0,6.028273,1 +13,2,0,1,3,228112,0,6118.475,31.82615,1,13,1,188.0176,21.97797,29.95595,0,276.1234,516.0749,1,0,0,3,1,1,61.7,31,0,48.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,48.9,8.719232,0,6.246252,1 +15,2,95,0,1,228120,0,8665.641,28.53936,0,14,1,91.00364,3.406136,0,0,0,94.40977,0,0,0,3,0,3,70.7,6.9,0,78.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,78.4,9.067237,1.098612,4.547645,1 +15,2,95,0,2,228120,0,8665.641,29.53936,0,14,1,10.75012,0,0,0,0,10.75012,0,0,0,1,0,1,70.7,6.9,0,78.4,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,78.4,9.067237,0,2.374917,1 +15,2,95,0,3,228120,0,8665.641,30.53936,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,70.7,6.9,0,78.4,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,78.4,9.067237,0,,0 +16,2,95,1,1,228121,0,2739.589,22.1848,1,11,1,0,0,0,0,0,0,0,0,0,0,0,1,45.7,17.2,0,46.6,600,393.69,0,0,0,5.975564,0,4.564348,6.448223,1,0,0,46.6,7.915928,0,,0 +16,2,95,1,2,228121,0,2739.589,23.1848,1,11,1,0,0,0,0,0,0,0,0,0,0,0,1,45.7,17.2,0,46.6,600,393.69,0,0,0,5.975564,0,4.564348,6.448223,1,0,0,46.6,7.915928,0,,0 +16,2,95,1,3,228121,0,2739.589,24.1848,1,11,1,0,0,0,0,0,0,0,0,0,0,0,1,45.7,17.2,0,46.6,600,393.69,0,0,0,5.975564,0,4.564348,6.448223,1,0,0,46.6,7.915928,0,,0 +13,2,0,0,1,228122,0,12571.26,50.35455,1,12,1,112.7426,31.65475,0,0,0,144.3973,0,0,0,7,0,4,72.3,13.8,0,62.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,62.5,9.439248,1.386294,4.972569,1 +13,2,0,0,2,228122,0,12571.26,51.35455,1,12,1,77.82466,18.29348,40.66104,0,0,136.7792,0,0,0,2,0,3,72.3,13.8,0,62.5,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,62.5,9.439248,1.098612,4.918368,1 +13,2,0,0,3,228122,0,12571.26,52.35455,1,12,1,127.3861,21.90026,0,0,0,149.2863,0,0,0,10,0,3,72.3,13.8,0,62.5,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,62.5,9.439248,1.098612,5.005866,1 +13,2,0,0,1,228123,0,12571.26,52.85147,0,12,1,55.41369,1.731359,0,0,0,57.14505,0,0,0,2,0,4,92.6,20.7,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.439248,1.386294,4.045593,1 +13,2,0,0,2,228123,0,12571.26,53.85147,0,12,1,50.86732,0,0,0,0,50.86732,0,0,0,2,0,3,92.6,20.7,0,85.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.439248,1.098612,3.929221,1 +13,2,0,0,3,228123,0,12571.26,54.85147,0,12,1,201.6337,17.11522,1.573517,0,0,220.3224,0,0,0,6,9,3,92.6,20.7,0,85.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.439248,1.098612,5.395092,1 +13,2,0,0,1,228124,0,12571.26,20.44901,0,13,1,15.32176,0,21.96119,0,0,37.28294,0,0,0,1,0,4,66.5,10.3,0,70.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.5,9.439248,1.386294,3.618536,1 +13,2,0,0,1,228125,0,12571.26,16.95551,1,12,1,12.76813,0,0,0,0,12.76813,0,0,0,1,0,4,64.4,10.3,0,65.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,65.9,9.439248,1.386294,2.546952,1 +13,2,0,0,2,228125,0,12571.26,17.95551,1,12,1,14.0647,0,0,0,0,14.0647,0,0,0,1,0,3,64.4,10.3,0,65.9,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,65.9,9.439248,1.098612,2.643668,1 +13,2,0,0,3,228125,0,12571.26,18.95551,1,12,1,24.50559,0,0,0,0,24.50559,0,0,0,2,0,3,64.4,10.3,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,65.9,9.439248,1.098612,3.198901,1 +11,2,0,1,1,228136,1,2651.026,.8049281,0,12,1,56.37904,0,0,0,0,56.37904,0,0,0,7,0,4,81.35272,11.84267,0,88.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,88.9,7.88308,1.386294,4.032097,1 +11,2,0,1,2,228136,1,2651.026,1.804928,0,12,1,19.78765,2.895753,0,0,0,22.6834,0,0,0,3,0,4,81.35272,11.84267,0,88.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,88.9,7.88308,1.386294,3.121633,1 +11,2,0,1,3,228136,1,2651.026,2.804928,0,12,1,13.79617,0,0,0,0,13.79617,0,0,0,3,0,4,81.35272,11.84267,0,88.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,88.9,7.88308,1.386294,2.624391,1 +11,2,0,1,1,228137,1,2651.026,5.226557,0,12,1,52.93806,26.89254,0,0,0,79.8306,0,0,0,5,0,4,88.3,11.84267,0,73.5,0,0,1,0,1.386294,0,0,0,0,1,0,0,73.5,7.88308,1.386294,4.379907,1 +11,2,0,1,2,228137,1,2651.026,6.226557,0,12,1,5.791506,0,0,0,0,5.791506,0,0,0,1,0,4,88.3,11.84267,0,73.5,0,0,1,0,1.386294,0,0,0,0,1,0,0,73.5,7.88308,1.386294,1.756392,1 +11,2,0,1,3,228137,1,2651.026,7.226557,0,12,1,10.68091,0,0,0,0,10.68091,0,0,0,2,0,4,88.3,11.84267,0,73.5,0,0,1,0,1.386294,0,0,0,0,1,0,0,73.5,7.88308,1.386294,2.368458,1 +11,2,0,1,1,228138,1,2651.026,25.54415,1,12,1,7.411329,1.852832,0,0,0,9.264161,0,0,0,1,0,4,63.3,3.4,0,62.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,62.5,7.88308,1.386294,2.226153,1 +11,2,0,1,2,228138,1,2651.026,26.54415,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,63.3,3.4,0,62.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,62.5,7.88308,1.386294,,0 +11,2,0,1,3,228138,1,2651.026,27.54415,1,12,1,62.97285,0,0,0,0,62.97285,0,0,0,3,0,4,63.3,3.4,0,62.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,62.5,7.88308,1.386294,4.142704,1 +11,2,0,1,1,228139,1,2651.026,5.226557,0,12,1,19.58708,7.252514,0,0,0,26.8396,0,0,0,2,0,4,88.3,11.84267,0,77.8,0,0,1,0,1.386294,0,0,0,0,1,0,0,77.8,7.88308,1.386294,3.289878,1 +11,2,0,1,2,228139,1,2651.026,6.226557,0,12,1,35.71429,0,0,0,0,35.71429,0,0,0,1,1,4,88.3,11.84267,0,77.8,0,0,1,0,1.386294,0,0,0,0,1,0,0,77.8,7.88308,1.386294,3.575551,1 +11,2,0,1,3,228139,1,2651.026,7.226557,0,12,1,40.05341,0,0,22.25189,0,40.05341,0,0,1,2,0,4,88.3,11.84267,0,77.8,0,0,1,0,1.386294,0,0,0,0,1,0,0,77.8,7.88308,1.386294,3.690214,1 +13,2,0,1,1,228141,0,8630.498,56.11773,1,14,1,69.61356,19.1477,0,0,0,88.76125,0,0,0,4,0,1,70.2,27.6,0,71.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,71.6,9.063173,0,4.48595,1 +13,2,0,1,2,228141,0,8630.498,57.11773,1,14,1,12.78958,3.016409,0,0,0,15.80598,0,0,0,1,0,1,70.2,27.6,0,71.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,71.6,9.063173,0,2.760389,1 +13,2,0,1,3,228141,0,8630.498,58.11773,1,14,1,18.69159,3.87628,47.08945,0,0,69.65732,0,0,0,2,0,1,70.2,27.6,0,71.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,71.6,9.063173,0,4.243588,1 +13,2,0,1,4,228141,0,8630.498,59.11773,1,14,1,131.8625,1.297275,0,0,0,133.1598,0,0,0,3,0,1,70.2,27.6,0,71.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,71.6,9.063173,0,4.89155,1 +13,2,0,1,5,228141,0,8630.498,60.11773,1,14,1,93.65836,3.56305,43.92595,0,0,141.1474,0,0,0,3,0,1,70.2,27.6,0,71.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,71.6,9.063173,0,4.949804,1 +11,2,0,0,1,228152,0,6836.95,32.53388,1,12,1,84.75253,1.942523,0,0,0,86.69505,0,0,0,3,0,4,83.5,0,0,84.1,0,0,0,0,1.386294,0,0,0,0,1,0,0,84.1,8.830243,1.386294,4.462397,1 +11,2,0,0,2,228152,0,6836.95,33.53388,1,12,1,71.01308,0,0,0,0,71.01308,0,0,0,2,0,4,83.5,0,0,84.1,0,0,0,0,1.386294,0,0,0,0,1,0,0,84.1,8.830243,1.386294,4.262864,1 +11,2,0,0,3,228152,0,6836.95,34.53388,1,12,1,56.60378,3.818509,34.37556,0,0,94.79784,0,0,0,2,0,4,83.5,0,0,84.1,0,0,0,0,1.386294,0,0,0,0,1,0,0,84.1,8.830243,1.386294,4.551747,1 +11,2,0,0,1,228153,0,6836.95,11.40041,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,96.7,11.84267,0,96.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,96.3,8.830243,1.386294,,0 +11,2,0,0,2,228153,0,6836.95,12.40041,1,12,1,15.75376,1.454193,0,0,0,17.20795,0,0,0,2,0,4,96.7,11.84267,0,96.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,96.3,8.830243,1.386294,2.845371,1 +11,2,0,0,3,228153,0,6836.95,13.40041,1,12,1,22.86613,0,0,0,0,22.86613,0,0,0,1,0,4,96.7,11.84267,0,96.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,96.3,8.830243,1.386294,3.129657,1 +11,2,0,0,1,228154,0,6836.95,8.80219,0,12,1,0,3.352847,0,0,0,3.352847,0,0,0,0,0,4,95,11.84267,0,92.6,0,0,1,0,1.386294,0,0,0,0,1,0,0,92.6,8.830243,1.386294,1.20981,1 +11,2,0,0,2,228154,0,6836.95,9.80219,0,12,1,17.54726,1.575376,0,0,0,19.12264,0,0,0,2,0,4,95,11.84267,0,92.6,0,0,1,0,1.386294,0,0,0,0,1,0,0,92.6,8.830243,1.386294,2.950873,1 +11,2,0,0,3,228154,0,6836.95,10.80219,0,12,1,88.94878,7.277628,0,0,194.991,291.2174,1,0,0,5,0,4,95,11.84267,0,92.6,0,0,1,0,1.386294,0,0,0,0,1,0,0,92.6,8.830243,1.386294,5.67407,1 +11,2,0,0,1,228155,0,6836.95,32.19439,0,10,1,171.4742,21.04843,0,0,0,192.5226,0,0,0,7,0,4,76.6,17.2,0,64.8,0,0,0,0,1.386294,0,0,0,0,1,0,0,64.8,8.830243,1.386294,5.260214,1 +11,2,0,0,2,228155,0,6836.95,33.19439,0,10,1,41.05671,14.83762,0,0,0,55.89433,0,0,0,4,0,4,76.6,17.2,0,64.8,0,0,0,0,1.386294,0,0,0,0,1,0,0,64.8,8.830243,1.386294,4.023463,1 +11,2,0,0,3,228155,0,6836.95,34.19439,0,10,1,147.3495,5.525607,0,0,541.9138,694.7889,1,0,0,3,0,4,76.6,17.2,0,64.8,0,0,0,0,1.386294,0,0,0,0,1,0,0,64.8,8.830243,1.386294,6.543608,1 +5,2,25,0,1,228159,0,8902.64,43.04723,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,92,6.9,0,61.4,467.05,467.05,0,0,0,6.146436,0,3.258096,7.532731,1,0,0,61.4,9.094215,0,,0 +5,2,25,0,2,228159,0,8902.64,44.04723,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,92,6.9,0,61.4,467.05,467.05,0,0,0,6.146436,0,3.258096,7.532731,1,0,0,61.4,9.094215,0,,0 +5,2,25,0,3,228159,0,8902.64,45.04723,0,12,1,77.88162,0,0,0,0,77.88162,0,0,0,1,0,1,92,6.9,0,61.4,467.05,467.05,0,0,0,6.146436,0,3.258096,7.532731,1,0,0,61.4,9.094215,0,4.35519,1 +15,2,95,1,1,228160,0,11349.56,11.69336,0,16,1,6.918574,5.614689,0,0,0,12.53326,0,0,0,1,0,5,66.7,11.84267,0,88.9,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.337023,1.609438,2.528386,1 +15,2,95,1,2,228160,0,11349.56,12.69336,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,66.7,11.84267,0,88.9,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.337023,1.609438,,0 +15,2,95,1,3,228160,0,11349.56,13.69336,0,16,1,56.60378,0,0,0,0,56.60378,0,0,0,4,0,5,66.7,11.84267,0,88.9,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.337023,1.609438,4.036076,1 +15,2,95,1,4,228160,0,11349.56,14.69336,0,16,1,23.38941,1.641362,0,0,0,25.03078,0,0,0,2,0,5,66.7,11.84267,0,88.9,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.337023,1.609438,3.220106,1 +15,2,95,1,5,228160,0,11349.56,15.69336,0,16,1,10.31042,4.43459,0,0,0,14.74501,0,0,0,1,0,5,66.7,11.84267,0,88.9,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.337023,1.609438,2.690905,1 +15,2,95,1,1,228161,0,11349.56,44.90623,1,16,1,0,2.66099,0,0,0,2.66099,0,0,0,0,0,5,67.6,0,0,92,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,92,9.337023,1.609438,.9786983,1 +15,2,95,1,2,228161,0,11349.56,45.90623,1,16,1,19.87397,0,0,0,0,19.87397,0,0,0,1,0,5,67.6,0,0,92,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,92,9.337023,1.609438,2.989411,1 +15,2,95,1,3,228161,0,11349.56,46.90623,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,67.6,0,0,92,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,92,9.337023,1.609438,,0 +15,2,95,1,4,228161,0,11349.56,47.90623,1,16,1,16.41362,0,0,0,0,16.41362,0,0,0,1,0,5,67.6,0,0,92,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,92,9.337023,1.609438,2.798112,1 +15,2,95,1,5,228161,0,11349.56,48.90623,1,16,1,12.93422,0,0,0,0,12.93422,0,0,0,1,0,5,67.6,0,0,92,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,92,9.337023,1.609438,2.559876,1 +15,2,95,1,1,228162,0,11349.56,50.54073,0,16,1,15.96594,60.27142,0,0,0,76.23736,0,0,0,1,0,5,85.6,10.3,0,67,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,67,9.337023,1.609438,4.333852,1 +15,2,95,1,2,228162,0,11349.56,51.54073,0,16,1,150.509,79.71401,0,0,0,230.223,0,0,0,9,0,5,85.6,10.3,0,67,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,67,9.337023,1.609438,5.439048,1 +15,2,95,1,3,228162,0,11349.56,52.54073,0,16,1,39.75741,52.62803,0,0,0,92.38544,0,0,0,0,0,5,85.6,10.3,0,67,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,67,9.337023,1.609438,4.52597,1 +15,2,95,1,4,228162,0,11349.56,53.54073,0,16,1,16.41362,48.62536,0,0,0,65.03898,0,0,0,1,0,5,85.6,10.3,0,67,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,67,9.337023,1.609438,4.174987,1 +15,2,95,1,5,228162,0,11349.56,54.54073,0,16,1,78.99113,77.53141,0,0,0,156.5225,0,0,0,2,0,5,85.6,10.3,0,67,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,67,9.337023,1.609438,5.0532,1 +15,2,95,1,1,228163,0,11349.56,9.401779,1,16,1,23.94891,3.326237,0,0,0,27.27515,0,0,0,2,0,5,63.3,11.84267,0,70.4,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,70.4,9.337023,1.609438,3.305976,1 +15,2,95,1,2,228163,0,11349.56,10.40178,1,16,1,36.35482,9.597673,0,0,0,45.9525,0,0,0,3,0,5,63.3,11.84267,0,70.4,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,70.4,9.337023,1.609438,3.827608,1 +15,2,95,1,3,228163,0,11349.56,11.40178,1,16,1,13.02785,0,0,0,0,13.02785,0,0,0,2,0,5,63.3,11.84267,0,70.4,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,70.4,9.337023,1.609438,2.56709,1 +15,2,95,1,4,228163,0,11349.56,12.40178,1,16,1,25.85146,2.62618,0,0,0,28.47764,0,0,0,3,0,5,63.3,11.84267,0,70.4,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,70.4,9.337023,1.609438,3.349119,1 +15,2,95,1,5,228163,0,11349.56,13.40178,1,16,1,30.67258,1.773836,0,0,0,32.44641,0,0,0,2,0,5,63.3,11.84267,0,70.4,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,70.4,9.337023,1.609438,3.47959,1 +15,2,95,1,1,228164,0,11349.56,14.51882,1,16,1,41.51144,7.557211,0,0,0,49.06865,0,0,0,4,0,5,82.4,10.3,0,60.2,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,60.2,9.337023,1.609438,3.89322,1 +15,2,95,1,2,228164,0,11349.56,15.51882,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,82.4,10.3,0,60.2,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,60.2,9.337023,1.609438,,0 +15,2,95,1,3,228164,0,11349.56,16.51882,1,16,1,10.33243,2.35849,0,0,0,12.69093,0,0,0,2,0,5,82.4,10.3,0,60.2,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,60.2,9.337023,1.609438,2.540887,1 +15,2,95,1,4,228164,0,11349.56,17.51882,1,16,1,30.77554,4.329093,0,0,0,35.10464,0,0,0,2,0,5,82.4,10.3,0,60.2,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,60.2,9.337023,1.609438,3.558333,1 +15,2,95,1,5,228164,0,11349.56,18.51882,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,82.4,10.3,0,60.2,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,60.2,9.337023,1.609438,,0 +17,2,25,1,1,228173,0,5948.974,50.29979,1,12,1,450.2118,136.469,45.83907,0,1368.978,2001.498,1,0,0,34,8,2,79.8,31,1,47.7,535,535,0,0,.6931472,6.282267,0,3.258096,7.668561,0,1,0,47.7,8.691142,.6931472,7.601651,1 +17,2,25,1,1,228174,0,5948.974,53.80151,0,13,1,100.0529,12.08576,17.73425,0,0,129.873,0,0,0,13,0,2,85.6,10.3,0,70.5,535,535,0,0,.6931472,6.282267,0,3.258096,7.668561,0,1,0,70.5,8.691142,.6931472,4.866557,1 +13,2,0,0,1,228198,0,8665.641,29.45927,1,15,1,39.15508,6.414219,0,0,0,45.56929,0,0,0,2,0,4,37.8,24.1,0,68.2,450,769.56,0,0,1.386294,6.645819,1,4.564348,6.160541,1,0,0,68.2,9.067237,1.386294,3.819234,1 +13,2,0,0,2,228198,0,8665.641,30.45927,1,15,1,60.13258,5.743371,35.75284,0,0,101.6288,0,0,0,4,0,4,37.8,24.1,0,68.2,450,769.56,0,0,1.386294,6.645819,1,4.564348,6.160541,1,0,0,68.2,9.067237,1.386294,4.621327,1 +13,2,0,0,3,228198,0,8665.641,31.45927,1,15,1,22.5401,5.158214,0,0,0,27.69831,0,0,0,1,0,4,37.8,24.1,0,68.2,450,769.56,0,0,1.386294,6.645819,1,4.564348,6.160541,1,0,0,68.2,9.067237,1.386294,3.321371,1 +13,2,0,0,1,228199,0,8665.641,5.284052,0,15,1,87.58372,24.76043,0,0,0,112.3442,0,0,0,9,0,4,81.7,11.84267,0,77.8,450,769.56,1,0,1.386294,6.645819,1,4.564348,6.160541,0,0,0,77.8,9.067237,1.386294,4.721567,1 +13,2,0,0,2,228199,0,8665.641,6.284052,0,15,1,244.8674,70.68655,0,0,85.79072,401.3447,1,0,0,35,0,4,81.7,11.84267,0,77.8,450,769.56,1,0,1.386294,6.645819,1,4.564348,6.160541,0,0,0,77.8,9.067237,1.386294,5.994821,1 +13,2,0,0,3,228199,0,8665.641,7.284052,0,15,1,482.1847,196.1205,0,0,0,678.3052,0,0,0,30,0,4,81.7,11.84267,0,77.8,450,769.56,1,0,1.386294,6.645819,1,4.564348,6.160541,0,0,0,77.8,9.067237,1.386294,6.519598,1 +13,2,0,0,1,228200,0,8665.641,2.850103,1,15,1,44.82226,8.691396,0,0,0,53.51365,0,0,0,5,0,4,81.35272,11.84267,0,88.9,450,769.56,1,1,1.386294,6.645819,1,4.564348,6.160541,0,0,0,88.9,9.067237,1.386294,3.979937,1 +13,2,0,0,2,228200,0,8665.641,3.850103,1,15,1,17.51894,8.011364,0,0,0,25.5303,0,0,0,2,0,4,81.35272,11.84267,0,88.9,450,769.56,1,1,1.386294,6.645819,1,4.564348,6.160541,0,0,0,88.9,9.067237,1.386294,3.239866,1 +13,2,0,0,3,228200,0,8665.641,4.850103,1,15,1,26.15952,0,0,0,0,26.15952,0,0,0,1,0,4,81.35272,11.84267,0,88.9,450,769.56,1,1,1.386294,6.645819,1,4.564348,6.160541,0,0,0,88.9,9.067237,1.386294,3.264213,1 +13,2,0,0,1,228201,0,8665.641,29.45106,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,70.2,17.2,0,76.1,450,769.56,0,0,1.386294,6.645819,1,4.564348,6.160541,0,0,0,76.1,9.067237,1.386294,,0 +13,2,0,0,2,228201,0,8665.641,30.45106,0,15,1,25.89962,0,0,0,0,25.89962,0,0,0,1,0,4,70.2,17.2,0,76.1,450,769.56,0,0,1.386294,6.645819,1,4.564348,6.160541,0,0,0,76.1,9.067237,1.386294,3.254228,1 +13,2,0,0,3,228201,0,8665.641,31.45106,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,70.2,17.2,0,76.1,450,769.56,0,0,1.386294,6.645819,1,4.564348,6.160541,0,0,0,76.1,9.067237,1.386294,,0 +11,2,0,1,1,228222,0,17144.49,39.41957,0,12,1,99.5034,9.121799,0,0,548.1965,656.8217,2,0,0,4,0,5,83,3.4,0,77.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,77.3,9.74949,1.609438,6.487412,1 +11,2,0,1,2,228222,0,17144.49,40.41957,0,12,1,45.41086,5.550216,0,0,0,50.96107,0,0,0,3,0,5,83,3.4,0,77.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,77.3,9.74949,1.609438,3.931062,1 +11,2,0,1,3,228222,0,17144.49,41.41957,0,12,1,43.39207,10.57269,0,0,0,53.96476,0,0,0,3,0,5,83,3.4,0,77.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,77.3,9.74949,1.609438,3.988331,1 +11,2,0,1,1,228223,0,17144.49,18.82546,0,11,1,49.13748,0,0,0,0,49.13748,0,0,0,3,0,5,77.1,6.9,0,78.4,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.4,9.74949,1.609438,3.894622,1 +11,2,0,1,2,228223,0,17144.49,19.82546,0,11,1,24.98799,12.90245,29.35608,0,0,67.24651,0,0,0,4,0,5,77.1,6.9,0,78.4,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.4,9.74949,1.609438,4.208365,1 +11,2,0,1,3,228223,0,17144.49,20.82546,0,11,1,501.7621,2.268723,7.797357,0,0,511.8282,0,0,0,1,30,5,77.1,6.9,0,78.4,0,0,0,0,1.609438,0,0,0,0,0,0,0,78.4,9.74949,1.609438,6.237989,1 +11,2,0,1,1,228224,0,17144.49,15.34292,0,11,1,15.68217,0,0,0,0,15.68217,0,0,0,1,0,5,68.6,0,1,60.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,60.2,9.74949,1.609438,2.752525,1 +11,2,0,1,2,228224,0,17144.49,16.34292,0,11,1,16.81884,3.027391,0,0,0,19.84623,0,0,0,2,0,5,68.6,0,1,60.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,60.2,9.74949,1.609438,2.988014,1 +11,2,0,1,3,228224,0,17144.49,17.34292,0,11,1,77.97357,9.581498,40.37004,0,0,127.9251,0,0,0,0,2,5,68.6,0,1,60.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,60.2,9.74949,1.609438,4.851445,1 +11,2,0,1,1,228225,0,17144.49,37.38261,1,11,1,117.3549,5.541035,0,0,0,122.896,0,0,0,7,0,5,61.2,34.5,1,60.2,0,0,0,0,1.609438,0,0,0,0,1,0,0,60.2,9.74949,1.609438,4.811338,1 +11,2,0,1,2,228225,0,17144.49,38.38261,1,11,1,33.3974,6.823642,0,0,0,40.22105,0,0,0,2,0,5,61.2,34.5,1,60.2,0,0,0,0,1.609438,0,0,0,0,1,0,0,60.2,9.74949,1.609438,3.69439,1 +11,2,0,1,3,228225,0,17144.49,39.38261,1,11,1,40.30837,0,35.24229,0,0,75.55066,0,0,0,1,1,5,61.2,34.5,1,60.2,0,0,0,0,1.609438,0,0,0,0,1,0,0,60.2,9.74949,1.609438,4.324803,1 +13,2,0,1,1,228226,0,1759.531,4.985626,1,10,1,23.82213,6.537851,0,0,0,30.35998,0,0,0,2,0,2,81.35272,11.84267,0,77.8,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,1,0,0,77.8,7.473371,.6931472,3.413125,1 +13,2,0,1,2,228226,0,1759.531,5.985626,1,10,1,46.33205,0,0,0,0,46.33205,0,0,0,2,0,2,81.35272,11.84267,0,77.8,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,1,0,0,77.8,7.473371,.6931472,3.835834,1 +13,2,0,1,3,228226,0,1759.531,6.985626,1,10,1,50.40054,15.33155,0,0,0,65.73209,0,0,0,4,0,4,81.35272,11.84267,0,77.8,300,300,1,1,1.386294,5.703783,1,4.564348,5.755076,1,0,0,77.8,7.473371,1.386294,4.185587,1 +13,2,0,1,1,228227,0,1759.531,23.72348,1,10,1,48.96771,3.335098,0,0,0,52.30281,0,0,0,3,0,2,69.1,24.1,0,69.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,69.3,7.473371,.6931472,3.95705,1 +13,2,0,1,2,228227,0,1759.531,24.72348,1,10,1,64.55116,19.85521,0,0,1716.192,1800.599,1,0,0,1,0,2,69.1,24.1,0,69.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,69.3,7.473371,.6931472,7.495874,1 +13,2,0,1,3,228227,0,1759.531,25.72348,1,10,1,20.0267,26.4575,31.49978,0,0,77.98398,0,0,0,1,1,4,69.1,24.1,0,69.3,300,300,0,0,1.386294,5.703783,1,4.564348,5.755076,1,0,0,69.3,7.473371,1.386294,4.356503,1 +13,2,0,0,1,228230,0,15426.63,47.60575,1,8,1,23.29275,28.25834,0,0,1128.613,1180.164,1,0,0,5,0,2,88.8,13.8,0,62.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,62.5,9.643915,.6931472,7.073409,1 +13,2,0,0,2,228230,0,15426.63,48.60575,1,8,1,323.1178,5.859073,0,0,0,328.9768,0,0,0,11,13,2,88.8,13.8,0,62.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,62.5,9.643915,.6931472,5.795987,1 +13,2,0,0,3,228230,0,15426.63,49.60575,1,8,1,63.52915,0,53.95193,0,0,117.4811,0,0,0,1,1,2,88.8,13.8,0,62.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,62.5,9.643915,.6931472,4.766277,1 +13,2,0,0,1,228231,0,15426.63,45.24572,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,78.7,10.3,0,56.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,56.8,9.643915,.6931472,,0 +13,2,0,0,2,228231,0,15426.63,46.24572,0,12,1,24.85521,0,0,0,1238.151,1263.007,1,0,0,2,0,2,78.7,10.3,0,56.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,56.8,9.643915,.6931472,7.141251,1 +13,2,0,0,3,228231,0,15426.63,47.24572,0,12,1,64.97552,0,9.719626,0,0,74.69515,0,0,0,6,0,2,78.7,10.3,0,56.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,56.8,9.643915,.6931472,4.313415,1 +11,2,0,1,1,228232,0,4994.721,53.9165,1,14,1,261.2493,11.49285,15.62202,0,0,288.3642,0,0,0,4,20,1,79.8,10.3,0,79.5,0,64.2,0,0,0,4.162003,0,0,0,0,0,0,79.5,8.516337,0,5.664224,1 +11,2,0,1,2,228232,0,4994.721,54.9165,1,14,1,26.06178,10.05791,0,0,0,36.11969,0,0,0,1,0,1,79.8,10.3,0,79.5,0,64.2,0,0,0,4.162003,0,0,0,0,0,0,79.5,8.516337,0,3.586838,1 +11,2,0,1,3,228232,0,4994.721,55.9165,1,14,1,74.32132,10.57855,0,0,0,84.89986,0,0,0,5,0,1,79.8,10.3,0,79.5,0,64.2,0,0,0,4.162003,0,0,0,0,0,0,79.5,8.516337,0,4.441473,1 +11,2,0,1,4,228232,0,4994.721,56.9165,1,14,1,357.0964,1.285075,29.5974,0,1873.282,2261.261,2,0,0,8,0,1,79.8,10.3,0,79.5,0,64.2,0,0,0,4.162003,0,0,0,0,0,0,79.5,8.516337,0,7.723678,1 +11,2,0,1,5,228232,0,4994.721,57.9165,1,14,1,1232.863,14.22287,0,0,1636.602,2883.688,5,0,0,6,0,1,79.8,10.3,0,79.5,0,64.2,0,0,0,4.162003,0,0,0,0,0,0,79.5,8.516337,0,7.966825,1 +13,2,0,0,1,228235,0,3820.792,24.6872,0,16,1,125.5987,27.86056,38.70676,0,0,192.166,0,0,0,3,0,1,87.2,13.8,1,29.5,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,29.5,8.248475,0,5.25836,1 +13,2,0,0,2,228235,0,3820.792,25.6872,0,16,1,51.38148,19.81096,23.54823,0,0,94.74067,0,0,0,1,0,1,87.2,13.8,1,29.5,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,29.5,8.248475,0,4.551143,1 +13,2,0,0,3,228235,0,3820.792,26.6872,0,16,1,129.1554,37.12938,31.81042,0,0,198.0952,0,0,0,3,0,1,87.2,13.8,1,29.5,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,29.5,8.248475,0,5.288748,1 +13,2,0,0,4,228235,0,3820.792,27.6872,0,16,1,89.762,20.97251,50.85761,0,0,161.5921,0,0,0,2,0,1,87.2,13.8,1,29.5,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,29.5,8.248475,0,5.085075,1 +13,2,0,0,5,228235,0,3820.792,28.6872,0,16,1,85.82779,24.54545,29.97413,0,0,140.3474,0,0,0,3,0,1,87.2,13.8,1,29.5,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,29.5,8.248475,0,4.944121,1 +17,2,25,1,1,228252,0,5495.601,30.28063,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,58,6.9,0,68.2,955,493,0,0,.6931472,6.200509,0,3.258096,8.248006,0,0,0,68.2,8.611885,.6931472,,0 +17,2,25,1,2,228252,0,5495.601,31.28063,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,58,6.9,0,68.2,955,493,0,0,.6931472,6.200509,0,3.258096,8.248006,0,0,0,68.2,8.611885,.6931472,,0 +17,2,25,1,3,228252,0,5495.601,32.28063,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,58,6.9,0,68.2,955,493,0,0,.6931472,6.200509,0,3.258096,8.248006,0,0,0,68.2,8.611885,.6931472,,0 +17,2,25,1,1,228253,0,5495.601,29.45654,1,17,1,38.6827,11.33298,39.65499,0,0,89.67068,0,0,0,3,0,2,81.9,10.3,0,95.5,955,493,0,0,.6931472,6.200509,0,3.258096,8.248006,0,0,0,95.5,8.611885,.6931472,4.496144,1 +17,2,25,1,2,228253,0,5495.601,30.45654,1,17,1,33.63767,29.36569,0,0,0,63.00336,0,0,0,2,0,2,81.9,10.3,0,95.5,955,493,0,0,.6931472,6.200509,0,3.258096,8.248006,0,0,0,95.5,8.611885,.6931472,4.143188,1 +17,2,25,1,3,228253,0,5495.601,31.45654,1,17,1,272.5551,14.59031,39.55066,0,0,326.696,0,0,0,5,22,2,81.9,10.3,0,95.5,955,493,0,0,.6931472,6.200509,0,3.258096,8.248006,0,0,0,95.5,8.611885,.6931472,5.78903,1 +5,2,25,1,1,228254,0,12940.76,15.92882,0,12,1,22.88451,9.952102,0,0,0,32.83662,0,0,0,3,0,4,64.4,6.9,0,67,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,67,9.468215,1.386294,3.491544,1 +5,2,25,1,2,228254,0,12940.76,16.92882,0,12,1,6.786233,2.81144,0,0,0,9.597673,0,0,0,1,0,4,64.4,6.9,0,67,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,67,9.468215,1.386294,2.261521,1 +5,2,25,1,3,228254,0,12940.76,17.92882,0,12,1,35.48967,8.760108,0,0,743.239,787.4888,1,0,0,3,0,4,64.4,6.9,0,67,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,67,9.468215,1.386294,6.668849,1 +5,2,25,1,1,228255,0,12940.76,37.13895,1,12,1,31.93188,48.74934,34.68334,0,0,115.3646,0,0,0,2,0,4,79.3,13.8,0,80.7,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,80.7,9.468215,1.386294,4.748097,1 +5,2,25,1,2,228255,0,12940.76,38.13895,1,12,1,63.01503,15.14784,0,0,0,78.16287,0,0,0,2,0,4,79.3,13.8,0,80.7,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,80.7,9.468215,1.386294,4.358795,1 +5,2,25,1,3,228255,0,12940.76,39.13895,1,12,1,41.55436,11.47799,0,0,0,53.03234,0,0,0,3,0,4,79.3,13.8,0,80.7,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,80.7,9.468215,1.386294,3.970902,1 +5,2,25,1,1,228256,0,12940.76,38.69952,0,12,1,191.4582,0,0,0,0,191.4582,0,0,0,3,0,4,80.3,13.8,0,56.8,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,56.8,9.468215,1.386294,5.25467,1 +5,2,25,1,2,228256,0,12940.76,39.69952,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80.3,13.8,0,56.8,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,56.8,9.468215,1.386294,,0 +5,2,25,1,3,228256,0,12940.76,40.69952,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80.3,13.8,0,56.8,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,56.8,9.468215,1.386294,,0 +5,2,25,1,1,228257,0,12940.76,17.58795,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.3,6.9,0,76.1,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.1,9.468215,1.386294,,0 +5,2,25,1,2,228257,0,12940.76,18.58795,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.3,6.9,0,76.1,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.1,9.468215,1.386294,,0 +5,2,25,1,3,228257,0,12940.76,19.58795,0,12,1,17.96945,10.44025,0,0,0,28.4097,0,0,0,1,0,4,79.3,6.9,0,76.1,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.1,9.468215,1.386294,3.346731,1 +16,2,95,1,1,228278,0,7336.07,43.73443,1,12,1,98.5442,12.94336,0,0,786.1832,897.6707,2,0,0,5,0,4,26.6,13.8,1,39.8,651,0,0,0,1.386294,0,0,4.564348,6.529803,0,0,0,39.8,8.900695,1.386294,6.799803,1 +16,2,95,1,2,228278,0,7336.07,44.73443,1,12,1,181.4672,5.936294,18.38803,0,0,205.7915,0,0,0,7,0,4,26.6,13.8,1,39.8,651,0,0,0,1.386294,0,0,4.564348,6.529803,0,0,0,39.8,8.900695,1.386294,5.326864,1 +16,2,95,1,3,228278,0,7336.07,45.73443,1,12,1,145.9234,.2447708,0,0,0,146.1682,0,0,0,3,0,4,26.6,13.8,1,39.8,651,0,0,0,1.386294,0,0,4.564348,6.529803,0,0,0,39.8,8.900695,1.386294,4.984758,1 +16,2,95,1,1,228279,0,7336.07,42.86927,0,13,1,116.7284,41.4505,47.30545,0,0,205.4844,0,0,0,4,1,4,56.9,17.2,0,34.1,651,0,0,0,1.386294,0,0,4.564348,6.529803,0,0,1,34.1,8.900695,1.386294,5.32537,1 +16,2,95,1,2,228279,0,7336.07,43.86927,0,13,1,33.34942,31.62162,17.6834,0,0,82.65444,0,0,0,1,0,4,56.9,17.2,0,34.1,651,0,0,0,1.386294,0,0,4.564348,6.529803,0,0,1,34.1,8.900695,1.386294,4.414669,1 +16,2,95,1,3,228279,0,7336.07,44.86927,0,13,1,0,19.77303,5.126836,0,0,24.89987,0,0,0,0,0,4,56.9,17.2,0,34.1,651,0,0,0,1.386294,0,0,4.564348,6.529803,0,0,1,34.1,8.900695,1.386294,3.214862,1 +16,2,95,1,1,228280,0,7336.07,9.886379,0,12,1,82.00106,0,0,489.6771,0,82.00106,0,0,24,6,0,4,41.7,11.84267,1,51.9,651,0,1,0,1.386294,0,0,4.564348,6.529803,0,0,0,51.9,8.900695,1.386294,4.406732,1 +16,2,95,1,2,228280,0,7336.07,10.88638,0,12,1,17.13321,0,0,67.56757,0,17.13321,0,0,4,2,0,4,41.7,11.84267,1,51.9,651,0,1,0,1.386294,0,0,4.564348,6.529803,0,0,0,51.9,8.900695,1.386294,2.841018,1 +16,2,95,1,3,228280,0,7336.07,11.88638,0,12,1,54.51714,0,0,0,0,54.51714,0,0,0,3,0,4,41.7,11.84267,1,51.9,651,0,1,0,1.386294,0,0,4.564348,6.529803,0,0,0,51.9,8.900695,1.386294,3.998515,1 +16,2,95,1,1,228281,0,7336.07,6.045175,0,12,1,17.46956,0,0,0,0,17.46956,0,0,0,2,0,4,80,11.84267,0,70.4,651,0,1,0,1.386294,0,0,4.564348,6.529803,0,0,0,70.4,8.900695,1.386294,2.86046,1 +16,2,95,1,2,228281,0,7336.07,7.045175,0,12,1,8.204633,0,0,0,0,8.204633,0,0,0,1,0,4,80,11.84267,0,70.4,651,0,1,0,1.386294,0,0,4.564348,6.529803,0,0,0,70.4,8.900695,1.386294,2.104699,1 +16,2,95,1,3,228281,0,7336.07,8.045175,0,12,1,272.4521,0,5.117935,0,0,277.5701,0,0,0,6,0,4,80,11.84267,0,70.4,651,0,1,0,1.386294,0,0,4.564348,6.529803,0,0,0,70.4,8.900695,1.386294,5.626073,1 +11,2,0,1,1,228284,0,15661.58,28.14784,1,14,1,4.257584,26.53539,0,0,767.472,798.265,1,0,0,1,0,2,76.1,20.7,0,61.9,0,243.84,0,0,.6931472,5.496512,0,0,0,0,0,0,61.9,9.65903,.6931472,6.682441,1 +11,2,0,1,2,228284,0,15661.58,29.14784,1,14,1,54.53223,24.3238,0,0,0,78.85603,0,0,0,5,0,3,76.1,20.7,0,61.9,0,243.84,0,0,1.098612,5.496512,0,0,0,0,0,0,61.9,9.65903,1.098612,4.367624,1 +11,2,0,1,3,228284,0,15661.58,30.14784,1,14,1,9.119497,8.468104,0,0,0,17.5876,0,0,0,1,0,3,76.1,20.7,0,61.9,0,243.84,0,0,1.098612,5.496512,0,0,0,0,0,0,61.9,9.65903,1.098612,2.867194,1 +11,2,0,1,1,228285,0,15661.58,35.00616,0,14,1,22.35232,0,33.84247,0,0,56.19479,0,0,0,1,1,2,83,6.9,0,76.1,0,243.84,0,0,.6931472,5.496512,0,0,0,0,0,0,76.1,9.65903,.6931472,4.028824,1 +11,2,0,1,2,228285,0,15661.58,36.00616,0,14,1,18.29859,0,0,0,0,18.29859,0,0,0,4,0,3,83,6.9,0,76.1,0,243.84,0,0,1.098612,5.496512,0,0,0,0,0,0,76.1,9.65903,1.098612,2.906824,1 +11,2,0,1,3,228285,0,15661.58,37.00616,0,14,1,106.3567,36.44205,33.14465,0,0,175.9434,0,0,0,6,0,3,83,6.9,0,76.1,0,243.84,0,0,1.098612,5.496512,0,0,0,0,0,0,76.1,9.65903,1.098612,5.170162,1 +11,2,0,0,1,228294,0,6634.018,29.54415,0,11,1,359.4997,136.0937,30.02129,95.79564,0,525.6147,0,0,4,38,5,1,66,3.4,0,83,0,0,0,0,0,0,0,0,0,0,0,0,83,8.800117,0,6.264568,1 +11,2,0,0,2,228294,0,6634.018,30.54415,0,11,1,305.8652,136.2336,0,0,0,442.0989,0,0,0,26,19,1,66,3.4,0,83,0,0,0,0,0,0,0,0,0,0,0,0,83,8.800117,0,6.091534,1 +11,2,0,0,3,228294,0,6634.018,31.54415,0,11,1,443.3962,145.3279,38.89488,0,0,627.619,0,0,0,32,20,1,66,3.4,0,83,0,0,0,0,0,0,0,0,0,0,0,0,83,8.800117,0,6.441933,1 +15,2,95,0,1,228298,0,2996.481,51.38946,1,10,1,41.77754,36.03513,0,0,0,77.81267,0,0,0,2,2,1,75,24.1,0,79.5,815,815,0,0,0,6.703188,0,4.564348,6.754481,1,0,0,79.5,8.005527,0,4.354304,1 +15,2,95,0,2,228298,0,2996.481,52.38946,1,10,1,93.40766,51.42995,0,0,0,144.8376,0,0,0,8,1,1,75,24.1,0,79.5,815,815,0,0,0,6.703188,0,4.564348,6.754481,1,0,0,79.5,8.005527,0,4.975613,1 +15,2,95,0,3,228298,0,2996.481,53.38946,1,10,1,151.3926,57.79874,67.20126,0,0,276.3926,0,0,0,10,0,1,75,24.1,0,79.5,815,815,0,0,0,6.703188,0,4.564348,6.754481,1,0,0,79.5,8.005527,0,5.621822,1 +11,2,0,0,1,228342,0,8174.78,31.75633,0,13,1,9.579563,0,29.58488,0,0,39.16445,0,0,0,0,1,5,77.7,0,0,93.2,0,0,0,0,1.609438,0,0,0,0,0,0,0,93.2,9.008931,1.609438,3.667769,1 +11,2,0,0,2,228342,0,8174.78,32.75633,0,13,1,11.63354,5.448376,0,0,0,17.08192,0,0,0,2,0,5,77.7,0,0,93.2,0,0,0,0,1.609438,0,0,0,0,0,0,0,93.2,9.008931,1.609438,2.838021,1 +11,2,0,0,3,228342,0,8174.78,33.75633,0,13,1,17.07098,0,0,0,0,17.07098,0,0,0,1,0,5,77.7,0,0,93.2,0,0,0,0,1.609438,0,0,0,0,0,0,0,93.2,9.008931,1.609438,2.83738,1 +11,2,0,0,4,228342,0,8174.78,34.75633,0,13,1,41.85474,0,0,0,0,41.85474,0,0,0,2,3,5,77.7,0,0,93.2,0,0,0,0,1.609438,0,0,0,0,0,0,0,93.2,9.008931,1.609438,3.734205,1 +11,2,0,0,5,228342,0,8174.78,35.75633,0,13,1,72.30229,0,0,0,0,72.30229,0,0,0,3,2,5,77.7,0,0,93.2,0,0,0,0,1.609438,0,0,0,0,0,0,0,93.2,9.008931,1.609438,4.280856,1 +11,2,0,0,1,228343,0,8174.78,1.976728,0,10,1,21.28792,6.061735,0,0,0,27.34965,0,0,0,4,0,5,81.35272,11.84267,0,70.4,0,0,1,0,1.609438,0,0,0,0,1,0,0,70.4,9.008931,1.609438,3.308704,1 +11,2,0,0,2,228343,0,8174.78,2.976728,0,10,1,26.17547,0,0,0,0,26.17547,0,0,0,2,0,5,81.35272,11.84267,0,70.4,0,0,1,0,1.609438,0,0,0,0,1,0,0,70.4,9.008931,1.609438,3.264823,1 +11,2,0,0,3,228343,0,8174.78,3.976728,0,10,1,168.1491,1.527403,0,0,0,169.6765,0,0,0,8,0,5,81.35272,11.84267,0,70.4,0,0,1,0,1.609438,0,0,0,0,1,0,0,70.4,9.008931,1.609438,5.133894,1 +11,2,0,0,4,228343,0,8174.78,4.976728,0,10,1,69.34756,5.3016,0,0,550.5334,625.1826,2,0,0,4,0,5,81.35272,11.84267,0,70.4,0,0,1,0,1.609438,0,0,0,0,1,0,0,70.4,9.008931,1.609438,6.438044,1 +11,2,0,0,5,228343,0,8174.78,5.976728,0,10,1,64.96674,6.688839,0,0,0,71.65558,0,0,0,4,0,5,81.35272,11.84267,0,70.4,0,0,1,0,1.609438,0,0,0,0,1,0,0,70.4,9.008931,1.609438,4.271871,1 +11,2,0,0,1,228344,0,8174.78,4.720055,1,10,1,20.54284,0,0,0,0,20.54284,0,0,0,2,0,5,81.35272,11.84267,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,55.6,9.008931,1.609438,3.022513,1 +11,2,0,0,2,228344,0,8174.78,5.720055,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,55.6,9.008931,1.609438,,0 +11,2,0,0,3,228344,0,8174.78,6.720055,1,10,1,14.37556,0,0,0,0,14.37556,0,0,0,1,0,5,81.35272,11.84267,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,55.6,9.008931,1.609438,2.66553,1 +11,2,0,0,4,228344,0,8174.78,7.720055,1,10,1,81.16537,5.86787,0,0,361.2639,448.2971,1,0,0,6,0,5,81.35272,11.84267,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,55.6,9.008931,1.609438,6.105456,1 +11,2,0,0,5,228344,0,8174.78,8.720055,1,10,1,38.50702,4.951959,.8130081,0,0,44.27199,0,0,0,2,0,5,81.35272,11.84267,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,55.6,9.008931,1.609438,3.790352,1 +11,2,0,0,1,228345,0,8174.78,29.80972,1,10,1,27.1421,11.20277,0,0,0,38.34486,0,0,0,5,0,5,89.4,10.3,0,61.4,0,0,0,0,1.609438,0,0,0,0,1,0,0,61.4,9.008931,1.609438,3.646621,1 +11,2,0,0,2,228345,0,8174.78,30.80972,1,10,1,31.79835,21.82259,0,0,0,53.62094,0,0,0,5,0,5,89.4,10.3,0,61.4,0,0,0,0,1.609438,0,0,0,0,1,0,0,61.4,9.008931,1.609438,3.98194,1 +11,2,0,0,3,228345,0,8174.78,31.80972,1,10,1,39.53279,10.82659,23.13567,0,0,73.49506,0,0,0,4,0,5,89.4,10.3,0,61.4,0,0,0,0,1.609438,0,0,0,0,1,0,0,61.4,9.008931,1.609438,4.297218,1 +11,2,0,0,4,228345,0,8174.78,32.80972,1,10,1,22.36356,11.65367,0,0,0,34.01723,0,0,0,2,0,5,89.4,10.3,0,61.4,0,0,0,0,1.609438,0,0,0,0,1,0,0,61.4,9.008931,1.609438,3.526867,1 +11,2,0,0,5,228345,0,8174.78,33.80972,1,10,1,91.09386,16.94383,0,0,0,108.0377,0,0,0,5,0,5,89.4,10.3,0,61.4,0,0,0,0,1.609438,0,0,0,0,1,0,0,61.4,9.008931,1.609438,4.68248,1 +11,2,0,0,1,228346,0,8174.78,6.160164,0,10,1,29.27089,6.998404,0,0,0,36.26929,0,0,0,3,0,5,95,11.84267,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.008931,1.609438,3.590971,1 +11,2,0,0,2,228346,0,8174.78,7.160164,0,10,1,295.2739,14.7746,0,0,0,310.0485,0,0,0,6,0,5,95,11.84267,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.008931,1.609438,5.736729,1 +11,2,0,0,3,228346,0,8174.78,8.160164,0,10,1,41.32974,0,0,0,0,41.32974,0,0,0,4,0,5,95,11.84267,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.008931,1.609438,3.721582,1 +11,2,0,0,4,228346,0,8174.78,9.160164,0,10,1,101.149,5.231843,0,0,304.3907,410.7715,1,0,0,6,0,5,95,11.84267,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.008931,1.609438,6.018037,1 +11,2,0,0,5,228346,0,8174.78,10.16016,0,10,1,69.84479,2.40207,0,0,0,72.24686,0,0,0,4,0,5,95,11.84267,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.008931,1.609438,4.280089,1 +6,2,25,1,1,228354,0,4906.158,26.59001,0,13,1,27.52779,14.76972,42.39809,0,0,84.6956,0,0,0,3,0,1,65.4,24.1,0,64.8,445,445,0,0,0,6.098074,0,3.258096,7.484369,1,0,0,64.8,8.49845,0,4.439064,1 +6,2,25,1,2,228354,0,4906.158,27.59001,0,13,1,0,3.566602,0,0,0,3.566602,0,0,0,0,0,1,65.4,24.1,0,64.8,445,445,0,0,0,6.098074,0,3.258096,7.484369,1,0,0,64.8,8.49845,0,1.271613,1 +6,2,25,1,3,228354,0,4906.158,28.59001,0,13,1,18.69159,2.550067,41.73565,0,0,62.9773,0,0,0,1,1,1,65.4,24.1,0,64.8,445,445,0,0,0,6.098074,0,3.258096,7.484369,1,0,0,64.8,8.49845,0,4.142775,1 +13,2,0,1,1,228362,0,12263.34,61.07871,0,12,1,31.7099,16.8343,0,0,0,48.5442,0,0,0,3,0,2,80.9,17.2,0,73.9,300,348.16,0,0,.6931472,5.852662,1,4.564348,5.755076,1,0,0,73.9,9.414452,.6931472,3.882475,1 +13,2,0,1,2,228362,0,12263.34,62.07871,0,12,1,59.24228,8.098455,0,0,0,67.34074,0,0,0,1,0,2,80.9,17.2,0,73.9,300,348.16,0,0,.6931472,5.852662,1,4.564348,5.755076,1,0,0,73.9,9.414452,.6931472,4.209765,1 +13,2,0,1,3,228362,0,12263.34,63.07871,0,12,1,48.50912,13.76057,0,0,0,62.26969,0,0,0,1,0,2,80.9,17.2,0,73.9,300,348.16,0,0,.6931472,5.852662,1,4.564348,5.755076,1,0,0,73.9,9.414452,.6931472,4.131475,1 +13,2,0,1,1,228363,0,12263.34,55.13758,1,12,1,406.379,85.05559,0,0,0,491.4346,0,0,0,20,0,2,87.2,27.6,1,54.5,300,348.16,0,0,.6931472,5.852662,1,4.564348,5.755076,0,1,0,54.5,9.414452,.6931472,6.197329,1 +13,2,0,1,2,228363,0,12263.34,56.13758,1,12,1,468.6776,108.4266,39.47876,0,116.0473,732.6303,1,0,0,38,0,2,87.2,27.6,1,54.5,300,348.16,0,0,.6931472,5.852662,1,4.564348,5.755076,0,1,0,54.5,9.414452,.6931472,6.596641,1 +13,2,0,1,3,228363,0,12263.34,57.13758,1,12,1,802.2252,241.0058,0,0,82.02047,1125.251,1,0,0,26,0,2,87.2,27.6,1,54.5,300,348.16,0,0,.6931472,5.852662,1,4.564348,5.755076,0,1,0,54.5,9.414452,.6931472,7.025762,1 +7,2,25,1,1,228364,0,9759.531,30.64203,0,14,1,34.32677,2.60777,0,0,0,36.93454,0,0,0,4,0,3,79.3,10.3,0,77.3,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,77.3,9.186102,1.098612,3.609147,1 +7,2,25,1,2,228364,0,9759.531,31.64203,0,14,1,16.96558,0,33.28163,0,0,50.24721,0,0,0,1,0,4,79.3,10.3,0,77.3,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.3,9.186102,1.386294,3.916955,1 +7,2,25,1,3,228364,0,9759.531,32.64202,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,79.3,10.3,0,77.3,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,77.3,9.186102,1.386294,,0 +7,2,25,1,1,228365,0,9759.531,32.85421,1,16,1,20.75572,10.47366,35.43906,0,627.0623,693.7307,1,0,0,1,0,3,65.4,6.9,1,89.8,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,89.8,9.186102,1.098612,6.542084,1 +7,2,25,1,2,228365,0,9759.531,33.85421,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,65.4,6.9,1,89.8,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,89.8,9.186102,1.386294,,0 +7,2,25,1,3,228365,0,9759.531,34.85421,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,65.4,6.9,1,89.8,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,89.8,9.186102,1.386294,,0 +7,2,25,1,1,228366,0,9759.531,2.819986,0,16,1,15.99255,0,0,0,0,15.99255,0,0,0,1,0,3,81.35272,11.84267,0,92.6,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,92.6,9.186102,1.098612,2.772123,1 +7,2,25,1,2,228366,0,9759.531,3.819986,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,92.6,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,92.6,9.186102,1.386294,,0 +7,2,25,1,3,228366,0,9759.531,4.819986,0,16,1,20.66487,0,0,0,0,20.66487,0,0,0,1,0,4,81.35272,11.84267,0,92.6,1000,1000,1,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,92.6,9.186102,1.386294,3.028435,1 +6,2,25,0,1,228367,0,4692.082,25.94935,1,10,1,29.64532,28.69243,0,0,0,58.33775,0,0,0,2,0,5,63.3,27.6,1,47.7,360,360,0,0,1.609438,5.886104,0,3.258096,7.272398,0,0,0,47.7,8.453845,1.609438,4.066249,1 +6,2,25,0,2,228367,0,4692.082,26.94935,1,10,1,326.6168,14.55116,39.01545,0,0,380.1834,0,0,0,9,1,5,63.3,27.6,1,47.7,360,360,0,0,1.609438,5.886104,0,3.258096,7.272398,0,0,0,47.7,8.453845,1.609438,5.940654,1 +6,2,25,0,3,228367,0,4692.082,27.94935,1,10,1,233.0441,11.48643,0,0,648.0641,892.5945,1,0,0,3,0,5,63.3,27.6,1,47.7,360,360,0,0,1.609438,5.886104,0,3.258096,7.272398,0,0,0,47.7,8.453845,1.609438,6.794132,1 +6,2,25,0,4,228367,0,4692.082,28.94935,1,10,1,89.26393,16.36438,48.10085,0,419.9065,573.6356,1,0,0,6,1,5,63.3,27.6,1,47.7,360,360,0,0,1.609438,5.886104,0,3.258096,7.272398,0,0,0,47.7,8.453845,1.609438,6.351995,1 +6,2,25,0,5,228367,0,4692.082,29.94935,1,10,1,65.24927,0,0,0,0,65.24927,0,0,0,3,0,5,63.3,27.6,1,47.7,360,360,0,0,1.609438,5.886104,0,3.258096,7.272398,0,0,0,47.7,8.453845,1.609438,4.178215,1 +6,2,25,0,1,228368,0,4692.082,4.498289,0,10,1,160.9582,62.38751,0,0,0,223.3457,0,0,0,5,0,5,81.35272,11.84267,1,66.7,360,360,1,0,1.609438,5.886104,0,3.258096,7.272398,0,1,0,66.7,8.453845,1.609438,5.408721,1 +6,2,25,0,2,228368,0,4692.082,5.498289,0,10,1,350.3089,93.33977,0,0,508.2288,951.8774,1,0,0,12,0,5,81.35272,11.84267,1,66.7,360,360,1,0,1.609438,5.886104,0,3.258096,7.272398,0,1,0,66.7,8.453845,1.609438,6.858436,1 +6,2,25,0,3,228368,0,4692.082,6.498289,0,10,1,234.4014,82.55006,0,0,766.5554,1083.507,1,0,0,2,9,5,81.35272,11.84267,1,66.7,360,360,1,0,1.609438,5.886104,0,3.258096,7.272398,0,1,0,66.7,8.453845,1.609438,6.987958,1 +6,2,25,0,4,228368,0,4692.082,7.498289,0,10,1,197.133,59.5486,0,0,0,256.6816,0,0,0,2,10,5,81.35272,11.84267,1,66.7,360,360,1,0,1.609438,5.886104,0,3.258096,7.272398,0,1,0,66.7,8.453845,1.609438,5.547836,1 +6,2,25,0,5,228368,0,4692.082,8.498289,0,10,1,26.20968,10.67815,0,0,0,36.88783,0,0,0,2,0,5,81.35272,11.84267,1,66.7,360,360,1,0,1.609438,5.886104,0,3.258096,7.272398,0,1,0,66.7,8.453845,1.609438,3.607882,1 +6,2,25,0,1,228369,0,4692.082,25.05407,0,12,1,70.937,12.3081,0,0,0,83.2451,0,0,0,8,0,5,69.1,17.2,1,70.5,360,360,0,0,1.609438,5.886104,0,3.258096,7.272398,0,0,0,70.5,8.453845,1.609438,4.421789,1 +6,2,25,0,2,228369,0,4692.082,26.05407,0,12,1,309.8456,0,0,325.7722,0,309.8456,0,0,16,13,0,5,69.1,17.2,1,70.5,360,360,0,0,1.609438,5.886104,0,3.258096,7.272398,0,0,0,70.5,8.453845,1.609438,5.736074,1 +6,2,25,0,3,228369,0,4692.082,27.05407,0,12,1,114.3747,8.170895,0,440.5875,0,122.5456,0,0,22,8,0,5,69.1,17.2,1,70.5,360,360,0,0,1.609438,5.886104,0,3.258096,7.272398,0,0,0,70.5,8.453845,1.609438,4.808483,1 +6,2,25,0,4,228369,0,4692.082,28.05407,0,12,1,67.10045,0,0,0,0,67.10045,0,0,0,5,0,5,69.1,17.2,1,70.5,360,360,0,0,1.609438,5.886104,0,3.258096,7.272398,0,0,0,70.5,8.453845,1.609438,4.206191,1 +6,2,25,0,5,228369,0,4692.082,29.05407,0,12,1,17.22874,0,0,0,0,17.22874,0,0,0,1,0,5,69.1,17.2,1,70.5,360,360,0,0,1.609438,5.886104,0,3.258096,7.272398,0,0,0,70.5,8.453845,1.609438,2.846579,1 +6,2,25,0,1,228370,0,4692.082,1.577002,1,10,1,72.26045,11.22287,0,0,303.2028,386.6861,1,0,0,9,0,5,81.35272,11.84267,0,85.2,360,360,1,1,1.609438,5.886104,0,3.258096,7.272398,0,0,0,85.2,8.453845,1.609438,5.957613,1 +6,2,25,0,2,228370,0,4692.082,2.577002,1,10,1,54.29537,0,0,0,0,54.29537,0,0,0,11,0,5,81.35272,11.84267,0,85.2,360,360,1,1,1.609438,5.886104,0,3.258096,7.272398,0,0,0,85.2,8.453845,1.609438,3.994439,1 +6,2,25,0,3,228370,0,4692.082,3.577002,1,10,1,36.93814,7.089453,0,0,0,44.02759,0,0,0,5,0,5,81.35272,11.84267,0,85.2,360,360,1,1,1.609438,5.886104,0,3.258096,7.272398,0,0,0,85.2,8.453845,1.609438,3.784817,1 +6,2,25,0,4,228370,0,4692.082,4.577002,1,10,1,21.35014,2.179748,0,0,0,23.52989,0,0,0,3,0,5,81.35272,11.84267,0,85.2,360,360,1,1,1.609438,5.886104,0,3.258096,7.272398,0,0,0,85.2,8.453845,1.609438,3.158272,1 +6,2,25,0,5,228370,0,4692.082,5.577002,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,85.2,360,360,1,1,1.609438,5.886104,0,3.258096,7.272398,0,0,0,85.2,8.453845,1.609438,,0 +13,2,0,1,1,228377,0,3079.179,8.774812,0,16,1,123.8751,0,0,0,0,123.8751,0,0,0,5,1,4,80,11.84267,0,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.032743,1.386294,4.819273,1 +13,2,0,1,2,228377,0,3079.179,9.774812,0,16,1,131.7568,0,0,0,0,131.7568,0,0,1,4,1,4,80,11.84267,0,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.032743,1.386294,4.880958,1 +13,2,0,1,3,228377,0,3079.179,10.77481,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,80,11.84267,0,77.8,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.032743,1.609438,,0 +13,2,0,1,1,228378,0,3079.179,35.46886,1,16,1,328.216,16.98782,40.01588,566.4373,0,385.2197,0,0,25,9,5,4,77.7,13.8,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.3,8.032743,1.386294,5.953814,1 +13,2,0,1,2,228378,0,3079.179,36.46886,1,16,1,160.8349,18.14672,58.88031,562.2587,844.498,1082.36,1,0,33,3,5,4,77.7,13.8,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.3,8.032743,1.386294,6.986899,1 +13,2,0,1,3,228378,0,3079.179,37.46886,1,16,1,137.5167,0,31.39742,231.4197,0,168.9141,0,0,13,4,3,5,77.7,13.8,0,77.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,77.3,8.032743,1.609438,5.12939,1 +13,2,0,1,1,228379,0,3079.179,11.47159,1,16,1,166.6226,0,0,0,0,166.6226,0,0,0,7,1,4,81.7,11.84267,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,8.032743,1.386294,5.115731,1 +13,2,0,1,2,228379,0,3079.179,12.47159,1,16,1,129.4643,0,0,0,0,129.4643,0,0,1,3,0,4,81.7,11.84267,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,8.032743,1.386294,4.863405,1 +13,2,0,1,3,228379,0,3079.179,13.47159,1,16,1,27.6146,0,0,0,0,27.6146,0,0,0,2,0,5,81.7,11.84267,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,8.032743,1.609438,3.318345,1 +13,2,0,1,1,228380,0,3079.179,1.7577,1,16,1,256.4849,21.2811,0,0,0,277.766,0,0,0,9,1,4,81.35272,11.84267,0,96.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.032743,1.386294,5.626779,1 +13,2,0,1,2,228380,0,3079.179,2.7577,1,16,1,27.26834,18.09846,0,0,0,45.36679,0,0,0,1,0,4,81.35272,11.84267,0,96.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.032743,1.386294,3.81478,1 +13,2,0,1,3,228380,0,3079.179,3.7577,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,96.3,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.032743,1.609438,,0 +11,2,0,0,1,228387,0,2519.648,24.91992,1,11,1,181.5966,251.0218,0,162.3204,180.6333,613.2517,1,1,12,9,0,5,44.1,31,1,39.8,0,0,0,0,1.609438,0,0,0,0,0,1,0,39.8,7.832272,1.609438,6.418776,1 +11,2,0,0,2,228387,0,2519.648,25.91992,1,11,1,75.8604,356.316,0,0,967.1255,1399.302,1,0,0,5,0,5,44.1,31,1,39.8,0,0,0,0,1.609438,0,0,0,0,0,1,0,39.8,7.832272,1.609438,7.243729,1 +11,2,0,0,3,228387,0,2519.648,26.91992,1,11,1,203.6163,91.15454,0,0,0,294.7709,0,0,0,24,0,6,44.1,31,1,39.8,0,0,0,0,1.791759,0,0,0,0,0,1,0,39.8,7.832272,1.791759,5.686198,1 +11,2,0,0,1,228388,0,2519.648,34.81451,0,11,1,117.4827,71.60724,0,0,0,189.0899,0,0,0,6,0,5,58.5,17.2,1,53.4,0,0,0,0,1.609438,0,0,0,0,0,1,0,53.4,7.832272,1.609438,5.242223,1 +11,2,0,0,2,228388,0,2519.648,35.81451,0,11,1,26.17547,92.29278,0,0,0,118.4682,0,0,0,4,0,5,58.5,17.2,1,53.4,0,0,0,0,1.609438,0,0,0,0,0,1,0,53.4,7.832272,1.609438,4.774645,1 +11,2,0,0,3,228388,0,2519.648,36.81451,0,11,1,100.6244,31.08266,.5615454,0,357.5696,489.8383,1,0,0,2,4,6,58.5,17.2,1,53.4,0,0,0,0,1.791759,0,0,0,0,0,1,0,53.4,7.832272,1.791759,6.194075,1 +11,2,0,0,1,228389,0,2519.648,5.672827,0,11,1,6.386376,1.915913,0,0,0,8.302288,0,0,0,1,0,5,91.7,11.84267,0,77.8,0,0,1,0,1.609438,0,0,0,0,0,0,0,77.8,7.832272,1.609438,2.116531,1 +11,2,0,0,2,228389,0,2519.648,6.672827,0,11,1,7.755696,4.934561,0,0,0,12.69026,0,0,0,0,0,5,91.7,11.84267,0,77.8,0,0,1,0,1.609438,0,0,0,0,0,0,0,77.8,7.832272,1.609438,2.540834,1 +11,2,0,0,3,228389,0,2519.648,7.672827,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,91.7,11.84267,0,77.8,0,0,1,0,1.791759,0,0,0,0,0,0,0,77.8,7.832272,1.791759,,0 +11,2,0,0,1,228390,0,2519.648,6.694045,0,11,1,15.96594,2.55455,0,0,0,18.52049,0,0,0,1,0,5,91.7,11.84267,0,77.8,0,0,1,0,1.609438,0,0,0,0,0,0,0,77.8,7.832272,1.609438,2.918878,1 +11,2,0,0,2,228390,0,2519.648,7.694045,0,11,1,33.27678,0,0,0,0,33.27678,0,0,0,2,0,5,91.7,11.84267,0,77.8,0,0,1,0,1.609438,0,0,0,0,0,0,0,77.8,7.832272,1.609438,3.50486,1 +11,2,0,0,3,228390,0,2519.648,8.694045,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,91.7,11.84267,0,77.8,0,0,1,0,1.791759,0,0,0,0,0,0,0,77.8,7.832272,1.791759,,0 +11,2,0,0,1,228391,0,2519.648,3.085558,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,7.832272,1.609438,,0 +11,2,0,0,2,228391,0,2519.648,4.085558,0,11,1,5.816772,0,0,0,0,5.816772,0,0,0,1,0,5,81.35272,11.84267,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,7.832272,1.609438,1.760745,1 +11,2,0,0,3,228391,0,2519.648,5.085558,0,11,1,34.83378,0,0,0,1052.201,1087.035,1,0,0,1,0,6,81.35272,11.84267,0,85.2,0,0,1,0,1.791759,0,0,0,0,0,0,0,85.2,7.832272,1.791759,6.991209,1 +11,2,0,0,1,228415,0,8665.641,61.36345,1,12,1,15.68217,5.075797,48.0345,0,0,68.79247,0,0,0,1,0,1,55.3,24.1,0,71.6,0,0,0,0,0,0,0,0,0,0,0,0,71.6,9.067237,0,4.231094,1 +11,2,0,0,2,228415,0,8665.641,62.36345,1,12,1,59.34647,0,0,0,0,59.34647,0,0,0,2,0,1,55.3,24.1,0,71.6,0,0,0,0,0,0,0,0,0,0,0,0,71.6,9.067237,0,4.083393,1 +11,2,0,0,3,228415,0,8665.641,63.36345,1,12,1,29.73568,0,52.36564,0,0,82.10132,0,0,0,2,0,1,55.3,24.1,0,71.6,0,0,0,0,0,0,0,0,0,0,0,0,71.6,9.067237,0,4.407954,1 +16,2,95,0,1,228420,0,5025.807,25.58795,1,13,1,459.6085,43.03452,44.50798,0,1863.333,2410.484,4,0,0,10,0,1,68.1,20.7,1,50,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,1,0,50,8.52254,0,7.787583,1 +16,2,95,0,2,228420,0,5025.807,26.58795,1,13,1,83.33334,17.2964,0,0,0,100.6297,0,0,0,6,0,2,68.1,20.7,1,50,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,50,8.52254,.6931472,4.611448,1 +16,2,95,0,3,228420,0,5025.807,27.58795,1,13,1,6.068487,29.02471,0,0,150.1517,185.2449,1,0,0,1,0,2,68.1,20.7,1,50,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,50,8.52254,.6931472,5.221679,1 +13,2,0,1,1,228429,0,8926.687,23.76181,1,12,1,245.6094,0,.798297,0,469.2762,715.6839,1,0,0,2,32,3,65.4,10.3,0,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,67,9.096912,1.098612,6.573238,1 +13,2,0,1,2,228429,0,8926.687,24.76181,1,12,1,16.96558,0,0,0,0,16.96558,0,0,0,0,3,4,65.4,10.3,0,67,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,67,9.096912,1.386294,2.831187,1 +13,2,0,1,3,228429,0,8926.687,25.76181,1,12,1,11.23091,0,0,0,0,11.23091,0,0,0,2,0,4,65.4,10.3,0,67,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,67,9.096912,1.386294,2.418669,1 +13,2,0,1,1,228430,0,8926.687,26.96783,0,12,1,71.84673,0,0,0,0,71.84673,0,0,0,1,0,3,73.4,3.4,0,73.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.096912,1.098612,4.274535,1 +13,2,0,1,2,228430,0,8926.687,27.96783,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,73.4,3.4,0,73.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.096912,1.386294,,0 +13,2,0,1,3,228430,0,8926.687,28.96783,0,12,1,17.07098,0,32.69542,0,0,49.7664,0,0,0,1,0,4,73.4,3.4,0,73.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.096912,1.386294,3.90734,1 +13,2,0,1,1,228431,0,8926.687,3.359343,1,12,1,16.23204,0,0,0,0,16.23204,0,0,0,1,2,3,81.35272,11.84267,0,88.9,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.096912,1.098612,2.786987,1 +13,2,0,1,2,228431,0,8926.687,4.359343,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.096912,1.386294,,0 +13,2,0,1,3,228431,0,8926.687,5.359343,1,12,1,32.79425,0,0,0,0,32.79425,0,0,0,2,0,4,81.35272,11.84267,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.096912,1.386294,3.490253,1 +11,2,0,1,1,228470,0,2823.097,44,1,19,1,47.89782,21.66578,37.51464,745.0771,0,107.0782,0,0,35,3,0,1,20.7,17.2,0,56.8,0,0,0,0,0,0,0,0,0,1,0,0,56.8,7.945944,0,4.67356,1 +11,2,0,1,2,228470,0,2823.097,45,1,19,1,0,17.37761,0,591.3718,0,17.37761,0,0,38,0,0,1,20.7,17.2,0,56.8,0,0,0,0,0,0,0,0,0,1,0,0,56.8,7.945944,0,2.855182,1 +11,2,0,1,3,228470,0,2823.097,46,1,19,1,139.2183,5.363882,33.53998,148.248,0,178.1222,0,0,15,5,0,1,20.7,17.2,0,56.8,0,0,0,0,0,0,0,0,0,1,0,0,56.8,7.945944,0,5.18247,1 +17,2,25,1,1,228514,0,4917.889,61.26762,1,12,1,206.7433,322.4517,26.13696,0,0,555.3319,0,0,0,19,0,1,78.7,34.5,1,39.8,468.21,468.21,0,0,0,6.148917,0,3.258096,7.535211,1,0,0,39.8,8.500838,0,6.319566,1 +17,2,25,1,2,228514,0,4917.889,62.26762,1,12,1,330.8506,377.631,0,0,3561.917,4270.399,2,0,0,32,0,1,78.7,34.5,1,39.8,468.21,468.21,0,0,0,6.148917,0,3.258096,7.535211,1,0,0,39.8,8.500838,0,8.359463,1 +17,2,25,1,3,228514,0,4917.889,63.26762,1,12,1,435.4185,328.8106,38.76652,11.01322,0,802.9956,0,0,1,27,1,1,78.7,34.5,1,39.8,468.21,468.21,0,0,0,6.148917,0,3.258096,7.535211,1,0,0,39.8,8.500838,0,6.688349,1 +17,2,25,0,1,228515,0,5075.66,22.72142,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,88.3,6.9,0,81.8,105,0,0,0,0,0,0,3.258096,6.040255,1,0,0,81.8,8.532409,0,,0 +17,2,25,0,2,228515,0,5075.66,23.72142,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,88.3,6.9,0,81.8,105,0,0,0,0,0,0,3.258096,6.040255,1,0,0,81.8,8.532409,0,,0 +17,2,25,0,3,228515,0,5075.66,24.72142,0,12,1,66.28622,15.53995,0,0,0,81.82616,0,0,0,6,0,1,88.3,6.9,0,81.8,105,0,0,0,0,0,0,3.258096,6.040255,1,0,0,81.8,8.532409,0,4.404597,1 +13,2,0,0,1,228535,0,5102.053,52.60233,1,13,1,264.3006,27.93032,63.13573,192.4077,336.7135,692.0801,1,0,11,11,1,1,40.4,10.3,0,23.9,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,23.9,8.537594,0,6.539701,1 +13,2,0,0,2,228535,0,5102.053,53.60233,1,13,1,135.571,22.87626,0,0,0,158.4472,0,0,0,2,0,1,40.4,10.3,0,23.9,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,23.9,8.537594,0,5.065422,1 +13,2,0,0,3,228535,0,5102.053,54.60233,1,13,1,185.1405,14.34153,64.63126,0,0,264.1133,0,0,0,9,0,1,40.4,10.3,0,23.9,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,23.9,8.537594,0,5.576378,1 +11,2,0,0,1,228573,0,8665.641,37.45654,1,10,1,60.14941,15.43534,0,0,0,75.58475,0,0,0,3,0,9,43.1,27.6,1,56,0,0,0,0,2.197225,0,0,0,0,1,0,0,56,9.067237,2.197225,4.325254,1 +11,2,0,0,2,228573,0,8665.641,38.45654,1,10,1,25.56818,15.28409,0,0,0,40.85227,0,0,0,2,0,11,43.1,27.6,1,56,0,0,0,0,2.397895,0,0,0,0,1,0,0,56,9.067237,2.397895,3.709962,1 +11,2,0,0,3,228573,0,8665.641,39.45654,1,10,1,57.3472,3.402688,0,0,0,60.74989,0,0,0,2,0,11,43.1,27.6,1,56,0,0,0,0,2.397895,0,0,0,0,1,0,0,56,9.067237,2.397895,4.106765,1 +11,2,0,0,1,228574,0,8665.641,10.08624,0,10,1,153.7867,0,0,0,0,153.7867,0,0,0,6,0,9,83.3,11.84267,0,59.3,0,0,1,0,2.197225,0,0,0,0,1,0,0,59.3,9.067237,2.197225,5.035567,1 +11,2,0,0,2,228574,0,8665.641,11.08624,0,10,1,12.31061,0,29.17614,0,0,41.48674,0,0,0,0,1,11,83.3,11.84267,0,59.3,0,0,1,0,2.397895,0,0,0,0,1,0,0,59.3,9.067237,2.397895,3.725374,1 +11,2,0,0,3,228574,0,8665.641,12.08624,0,10,1,14.73775,0,13.87083,0,0,28.60858,0,0,0,0,1,11,83.3,11.84267,0,59.3,0,0,1,0,2.397895,0,0,0,0,1,0,0,59.3,9.067237,2.397895,3.353707,1 +11,2,0,0,1,228575,0,8665.641,13.5551,0,10,1,23.05513,0,0,0,0,23.05513,0,0,0,1,0,9,88.3,11.84267,0,55.6,0,0,1,0,2.197225,0,0,0,0,0,0,0,55.6,9.067237,2.197225,3.137888,1 +11,2,0,0,2,228575,0,8665.641,14.5551,0,10,1,0,0,0,0,0,0,0,0,0,0,0,11,88.3,11.84267,0,55.6,0,0,1,0,2.397895,0,0,0,0,0,0,0,55.6,9.067237,2.397895,,0 +11,2,0,0,1,228576,0,8665.641,15.9206,1,10,1,69.80938,23.27666,.7727975,0,582.5605,676.4194,1,0,0,5,0,9,81.9,17.2,1,58,0,0,1,1,2.197225,0,0,0,0,1,0,0,58,9.067237,2.197225,6.516813,1 +11,2,0,0,2,228576,0,8665.641,16.9206,1,10,1,56.58144,28.19129,0,0,0,84.77273,0,0,0,6,0,11,81.9,17.2,1,58,0,0,1,1,2.397895,0,0,0,0,1,0,0,58,9.067237,2.397895,4.439974,1 +11,2,0,0,3,228576,0,8665.641,17.9206,1,10,1,178.3702,69.45817,1.257044,0,0,249.0854,0,0,0,5,0,11,81.9,17.2,1,58,0,0,1,1,2.397895,0,0,0,0,1,0,0,58,9.067237,2.397895,5.517796,1 +11,2,0,0,1,228577,0,8665.641,11.24435,0,10,1,0,0,0,0,0,0,0,0,0,0,0,9,70,11.84267,0,48.1,0,0,1,0,2.197225,0,0,0,0,1,0,0,48.1,9.067237,2.197225,,0 +11,2,0,0,2,228577,0,8665.641,12.24435,0,10,1,66.99811,9.360795,29.17614,0,0,105.535,0,0,0,2,1,11,70,11.84267,0,48.1,0,0,1,0,2.397895,0,0,0,0,1,0,0,48.1,9.067237,2.397895,4.659043,1 +11,2,0,0,3,228577,0,8665.641,13.24435,0,10,1,14.73775,0,0,0,0,14.73775,0,0,0,0,1,11,70,11.84267,0,48.1,0,0,1,0,2.397895,0,0,0,0,1,0,0,48.1,9.067237,2.397895,2.690413,1 +11,2,0,0,1,228580,0,8665.641,14.46407,0,10,1,11.33436,0,0,0,0,11.33436,0,0,0,0,1,9,78.7,10.3,0,55.7,0,0,1,0,2.197225,0,0,0,0,0,0,0,55.7,9.067237,2.197225,2.427839,1 +11,2,0,0,2,228580,0,8665.641,15.46407,0,10,1,14.08617,0,0,0,0,14.08617,0,0,0,2,0,11,78.7,10.3,0,55.7,0,0,1,0,2.397895,0,0,0,0,0,0,0,55.7,9.067237,2.397895,2.645194,1 +11,2,0,0,3,228580,0,8665.641,16.46407,0,10,1,28.17512,0,34.8938,0,0,63.06892,0,0,0,1,1,11,78.7,10.3,0,55.7,0,0,1,0,2.397895,0,0,0,0,0,0,0,55.7,9.067237,2.397895,4.144228,1 +11,2,0,0,1,228581,0,8665.641,18.88296,1,12.75671,1,19.57754,3.910356,0,0,813.3436,836.8315,1,0,0,3,0,9,61.2,6.9,0,51.1,0,0,0,0,2.197225,0,0,0,0,1,0,0,51.1,9.067237,2.197225,6.729623,1 +11,2,0,0,2,228581,0,8665.641,19.88296,1,12.75671,1,20.24148,0,0,0,388.3049,408.5464,1,0,0,1,0,11,61.2,6.9,0,51.1,0,0,0,0,2.397895,0,0,0,0,1,0,0,51.1,9.067237,2.397895,6.012606,1 +11,2,0,0,3,228581,0,8665.641,20.88296,1,12.75671,1,101.1053,0,0,0,0,101.1053,0,0,0,3,0,11,61.2,6.9,0,51.1,0,0,0,0,2.397895,0,0,0,0,1,0,0,51.1,9.067237,2.397895,4.616163,1 +11,2,0,0,1,228582,0,8665.641,3.477071,1,10,1,24.72952,0,0,0,0,24.72952,0,0,0,2,0,9,81.35272,11.84267,0,85.2,0,0,1,1,2.197225,0,0,0,0,0,0,0,85.2,9.067237,2.197225,3.207998,1 +11,2,0,0,2,228582,0,8665.641,4.47707,1,10,1,59.25663,0,0,0,0,59.25663,0,0,0,3,0,11,81.35272,11.84267,0,85.2,0,0,1,1,2.397895,0,0,0,0,0,0,0,85.2,9.067237,2.397895,4.081878,1 +11,2,0,0,3,228582,0,8665.641,5.47707,1,10,1,0,0,0,0,0,0,0,0,0,0,0,11,81.35272,11.84267,0,85.2,0,0,1,1,2.397895,0,0,0,0,0,0,0,85.2,9.067237,2.397895,,0 +11,2,0,0,1,228583,0,8665.641,8.317591,1,10,1,58.47501,3.755796,0,0,0,62.23081,0,0,0,3,0,9,85,11.84267,0,92.6,0,0,1,1,2.197225,0,0,0,0,1,0,0,92.6,9.067237,2.197225,4.13085,1 +11,2,0,0,2,228583,0,8665.641,9.317591,1,10,1,25.9233,10.07102,0,0,0,35.99432,0,0,0,3,0,11,85,11.84267,0,92.6,0,0,1,1,2.397895,0,0,0,0,1,0,0,92.6,9.067237,2.397895,3.583361,1 +11,2,0,0,3,228583,0,8665.641,10.31759,1,10,1,27.13481,3.207629,0,0,0,30.34244,0,0,0,2,0,11,85,11.84267,0,92.6,0,0,1,1,2.397895,0,0,0,0,1,0,0,92.6,9.067237,2.397895,3.412547,1 +15,2,95,0,1,228587,0,13960.7,58.53525,1,15,1,300,4.981968,82.57599,0,1173.395,1560.953,1,0,0,4,13,2,78.2,37.9,0,77.3,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,77.3,9.544073,.6931472,7.353052,1 +15,2,95,0,2,228587,0,13960.7,59.53525,1,15,1,184.4223,0,0,0,1129.01,1313.433,1,0,0,3,9,2,78.2,37.9,0,77.3,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,77.3,9.544073,.6931472,7.180399,1 +15,2,95,0,3,228587,0,13960.7,60.53525,1,15,1,197.4426,9.163416,0,0,0,206.606,0,0,0,4,18,2,78.2,37.9,0,77.3,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,77.3,9.544073,.6931472,5.330813,1 +15,2,95,0,1,228588,0,13960.7,60.17796,0,16,1,22.15353,10.97373,0,0,0,33.12725,0,0,0,1,0,2,95.7,13.8,0,90.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,90.9,9.544073,.6931472,3.500356,1 +15,2,95,0,2,228588,0,13960.7,61.17796,0,16,1,0,5.288826,0,0,0,5.288826,0,0,0,0,0,2,95.7,13.8,0,90.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,90.9,9.544073,.6931472,1.665596,1 +15,2,95,0,3,228588,0,13960.7,62.17796,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,95.7,13.8,0,90.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,90.9,9.544073,.6931472,,0 +13,2,0,0,1,228617,0,12144.87,3.649555,0,12,1,381.762,89.97939,0,0,345.1056,816.847,1,0,0,38,0,4,81.35272,11.84267,0,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.404744,1.386294,6.705452,1 +13,2,0,0,2,228617,0,12144.87,4.649555,0,12,1,291.6667,8.688447,0,0,0,300.3551,0,0,0,37,0,4,81.35272,11.84267,0,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.404744,1.386294,5.704966,1 +13,2,0,0,3,228617,0,12144.87,5.649555,0,12,1,163.8492,18.15345,0,0,0,182.0026,0,0,0,16,0,4,81.35272,11.84267,0,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.404744,1.386294,5.204021,1 +13,2,0,0,1,228618,0,12144.87,9.163587,1,12,1,11.33436,0,0,0,0,11.33436,0,0,0,1,0,4,80,11.84267,0,100,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.404744,1.386294,2.427839,1 +13,2,0,0,2,228618,0,12144.87,10.16359,1,12,1,13.25758,0,0,0,0,13.25758,0,0,0,0,1,4,80,11.84267,0,100,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.404744,1.386294,2.584569,1 +13,2,0,0,3,228618,0,12144.87,11.16359,1,12,1,40.31209,0,0,0,0,40.31209,0,0,0,1,0,4,80,11.84267,0,100,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.404744,1.386294,3.696651,1 +13,2,0,0,1,228619,0,12144.87,11.29363,1,12,1,30.2679,7.614632,0,0,0,37.88253,0,0,0,2,0,4,76.7,11.84267,0,100,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.404744,1.386294,3.63449,1 +13,2,0,0,2,228619,0,12144.87,12.29363,1,12,1,13.25758,0,0,0,0,13.25758,0,0,0,0,1,4,76.7,11.84267,0,100,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.404744,1.386294,2.584569,1 +13,2,0,0,3,228619,0,12144.87,13.29363,1,12,1,27.74166,1.642826,35.82575,0,0,65.21023,0,0,0,1,1,4,76.7,11.84267,0,100,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.404744,1.386294,4.177616,1 +13,2,0,0,1,228620,0,12144.87,34.06434,1,12,1,64.91499,0,43.06543,0,0,107.9804,0,0,0,0,4,4,66.5,3.4,0,75,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,75,9.404744,1.386294,4.68195,1 +13,2,0,0,2,228620,0,12144.87,35.06434,1,12,1,19.41288,13.93466,0,0,0,33.34754,0,0,0,1,0,4,66.5,3.4,0,75,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,75,9.404744,1.386294,3.506984,1 +13,2,0,0,3,228620,0,12144.87,36.06434,1,12,1,124.0182,2.050282,37.03944,0,0,163.1079,0,0,0,1,14,4,66.5,3.4,0,75,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,75,9.404744,1.386294,5.094412,1 +18,2,25,1,1,228644,0,8665.641,10.64476,0,10,1,36.92148,1.346854,5.033802,0,0,43.30213,0,0,0,3,0,5,81.7,11.84267,0,88.9,1000,0,1,0,1.609438,0,0,3.258096,8.294049,0,0,0,88.9,9.067237,1.609438,3.768202,1 +18,2,25,1,1,228645,0,8665.641,13.86448,1,10,1,72.28289,0,1.040042,0,0,73.32293,0,0,0,3,0,5,76.7,11.84267,0,51.9,1000,0,1,1,1.609438,0,0,3.258096,8.294049,0,0,0,51.9,9.067237,1.609438,4.294873,1 +18,2,25,1,1,228646,0,8665.641,36.75838,0,10,1,30.68123,0,34.10817,0,0,64.78939,0,0,0,0,5,5,60.6,10.3,1,63.6,1000,0,0,0,1.609438,0,0,3.258096,8.294049,0,0,0,63.6,9.067237,1.609438,4.171142,1 +18,2,25,1,1,228647,0,8665.641,31.4141,1,10,1,68.90276,16.06344,43.46854,0,0,128.4347,0,0,0,4,2,5,64.9,31,1,67,1000,0,0,0,1.609438,0,0,3.258096,8.294049,0,1,0,67,9.067237,1.609438,4.855421,1 +18,2,25,1,1,228648,0,8665.641,12.39973,0,10,1,71.24285,3.374935,.7280291,0,0,75.34582,0,0,0,4,0,5,83.3,11.84267,0,88.9,1000,0,1,0,1.609438,0,0,3.258096,8.294049,0,0,0,88.9,9.067237,1.609438,4.322088,1 +11,2,0,1,1,228689,0,13626.98,15.3128,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,74.8,0,0,68.2,0,0,1,1,1.098612,0,0,0,0,0,0,0,68.2,9.51988,1.098612,,0 +11,2,0,1,2,228689,0,13626.98,16.3128,1,16,1,29.9135,0,0,0,0,29.9135,0,0,0,2,0,3,74.8,0,0,68.2,0,0,1,1,1.098612,0,0,0,0,0,0,0,68.2,9.51988,1.098612,3.39831,1 +11,2,0,1,3,228689,0,13626.98,17.3128,1,16,1,40.17621,5.709251,0,198.2379,0,45.88546,0,0,9,4,0,3,74.8,0,0,68.2,0,0,1,1,1.098612,0,0,0,0,0,0,0,68.2,9.51988,1.098612,3.826148,1 +11,2,0,1,4,228689,0,13626.98,18.3128,1,16,1,23.3871,0,0,0,0,23.3871,0,0,0,2,0,3,74.8,0,0,68.2,0,0,0,0,1.098612,0,0,0,0,0,0,0,68.2,9.51988,1.098612,3.152184,1 +11,2,0,1,5,228689,0,13626.98,19.3128,1,16,1,138.7067,1.038251,0,0,0,139.745,0,0,0,3,0,2,74.8,0,0,68.2,0,0,0,0,.6931472,0,0,0,0,0,0,0,68.2,9.51988,.6931472,4.939819,1 +11,2,0,1,1,228690,0,13626.98,52.14237,1,16,1,158.965,94.81966,66.52901,0,781.4951,1101.809,1,0,0,8,4,3,70.2,17.2,1,63.6,0,0,0,0,1.098612,0,0,0,0,0,1,0,63.6,9.51988,1.098612,7.004708,1 +11,2,0,1,2,228690,0,13626.98,53.14237,1,16,1,287.482,78.54397,0,480.5382,0,366.0259,0,0,21,8,7,3,70.2,17.2,1,63.6,0,0,0,0,1.098612,0,0,0,0,0,1,0,63.6,9.51988,1.098612,5.902704,1 +11,2,0,1,3,228690,0,13626.98,54.14237,1,16,1,1802.418,547.7181,0,352.4229,2429.485,4779.621,3,0,16,21,4,3,70.2,17.2,1,63.6,0,0,0,0,1.098612,0,0,0,0,0,1,0,63.6,9.51988,1.098612,8.472116,1 +11,2,0,1,4,228690,0,13626.98,55.14237,1,16,.2076503,136.254,87.5,0,0,2696.573,2920.327,6,0,0,2,0,3,70.2,17.2,1,63.6,0,0,0,0,1.098612,0,0,0,0,0,1,0,63.6,9.51988,1.098612,7.979451,1 +11,2,0,1,1,228691,0,13626.98,52.47912,0,12,1,146.1056,29.19498,113.1051,0,575.5724,863.978,1,0,0,11,0,3,67,20.7,0,76.1,0,0,0,0,1.098612,0,0,0,0,1,0,0,76.1,9.51988,1.098612,6.761548,1 +11,2,0,1,2,228691,0,13626.98,53.47912,0,12,1,0,12.90245,0,0,0,12.90245,0,0,0,0,0,3,67,20.7,0,76.1,0,0,0,0,1.098612,0,0,0,0,1,0,0,76.1,9.51988,1.098612,2.557417,1 +11,2,0,1,3,228691,0,13626.98,54.47912,0,12,1,39.20705,12.52863,43.07489,0,0,94.81057,0,0,0,2,0,3,67,20.7,0,76.1,0,0,0,0,1.098612,0,0,0,0,1,0,0,76.1,9.51988,1.098612,4.551881,1 +11,2,0,1,4,228691,0,13626.98,55.47912,0,12,1,147.1774,25.40322,0,0,1058.093,1230.673,1,0,0,7,0,3,67,20.7,0,76.1,0,0,0,0,1.098612,0,0,0,0,1,0,0,76.1,9.51988,1.098612,7.115317,1 +11,2,0,1,5,228691,0,13626.98,56.47912,0,12,1,37.52277,4.31694,43.45355,0,0,85.29326,0,0,0,3,0,2,67,20.7,0,76.1,0,0,0,0,.6931472,0,0,0,0,1,0,0,76.1,9.51988,.6931472,4.446095,1 +19,2,25,0,1,228722,0,8665.641,26.85284,0,12,1,0,0,0,0,386.3988,386.3988,1,0,0,0,0,1,75,3.4,0,83,450,450,0,0,0,6.109248,0,3.258096,7.495542,0,0,0,83,9.067237,0,5.95687,1 +19,2,25,0,2,228722,0,8665.641,27.85284,0,12,1,51.49148,0,0,0,1789.702,1841.193,1,0,0,1,0,1,75,3.4,0,83,450,450,0,0,0,6.109248,0,3.258096,7.495542,0,0,0,83,9.067237,0,7.518169,1 +19,2,25,0,3,228722,0,8665.641,28.85284,0,12,1,17.772,0,0,0,0,17.772,0,0,0,1,0,1,75,3.4,0,83,450,450,0,0,0,6.109248,0,3.258096,7.495542,0,0,0,83,9.067237,0,2.877624,1 +19,2,25,0,4,228722,0,8665.641,29.85284,0,12,1,63.80465,0,0,0,0,63.80465,0,0,0,2,0,1,75,3.4,0,83,450,450,0,0,0,6.109248,0,3.258096,7.495542,0,0,0,83,9.067237,0,4.155826,1 +19,2,25,0,5,228722,0,8665.641,30.85284,0,12,1,95.70662,1.449016,0,0,0,97.15563,0,0,0,4,0,1,75,3.4,0,83,450,450,0,0,0,6.109248,0,3.258096,7.495542,0,0,0,83,9.067237,0,4.576314,1 +11,2,0,0,1,228733,0,6234.604,22.33813,1,14,1,72.26045,30.82583,0,0,0,103.0863,0,0,0,5,0,1,71.3,17.2,0,73.9,0,0,0,0,0,0,0,0,0,1,0,0,73.9,8.73803,0,4.635566,1 +11,2,0,0,2,228733,0,6234.604,23.33813,1,14,1,41.98842,0,0,0,0,41.98842,0,0,0,3,0,1,71.3,17.2,0,73.9,0,0,0,0,0,0,0,0,0,1,0,0,73.9,8.73803,0,3.737394,1 +11,2,0,0,3,228733,0,6234.604,24.33813,1,14,1,121.117,1.513129,0,0,237.3476,359.9778,1,0,0,2,0,1,71.3,17.2,0,73.9,0,0,0,0,0,0,0,0,0,1,0,0,73.9,8.73803,0,5.886042,1 +13,2,0,0,1,228749,0,9087.977,27.07734,1,13,1,34.65939,2.99012,0,0,0,37.64951,0,0,0,1,3,4,61.7,13.8,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,72.7,9.114818,1.386294,3.62832,1 +13,2,0,0,2,228749,0,9087.977,28.07734,1,13,1,4.777831,0,0,0,0,4.777831,0,0,0,0,1,4,61.7,13.8,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,72.7,9.114818,1.386294,1.563987,1 +13,2,0,0,3,228749,0,9087.977,29.07734,1,13,1,55.31168,0,0,118.525,0,55.31168,0,0,6,1,3,4,61.7,13.8,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,72.7,9.114818,1.386294,4.012984,1 +13,2,0,0,1,228750,0,9087.977,33.92745,0,16,1,41.08164,0,0,0,0,41.08164,0,0,0,1,0,4,79.8,3.4,0,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83,9.114818,1.386294,3.715561,1 +13,2,0,0,2,228750,0,9087.977,34.92745,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,3.4,0,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83,9.114818,1.386294,,0 +13,2,0,0,3,228750,0,9087.977,35.92745,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,3.4,0,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83,9.114818,1.386294,,0 +13,2,0,0,1,228751,0,9087.977,5.002053,1,13,1,61.62246,0,0,0,0,61.62246,0,0,0,5,0,4,81.35272,11.84267,0,70.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,70.4,9.114818,1.386294,4.121027,1 +13,2,0,0,2,228751,0,9087.977,6.002053,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,70.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,70.4,9.114818,1.386294,,0 +13,2,0,0,3,228751,0,9087.977,7.002053,1,13,1,23.04653,0,0,0,0,23.04653,0,0,0,2,0,4,81.35272,11.84267,0,70.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,70.4,9.114818,1.386294,3.137515,1 +13,2,0,0,1,228752,0,9087.977,1.379877,0,13,1,8.320333,0,0,0,0,8.320333,0,0,0,1,0,4,81.35272,11.84267,0,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.114818,1.386294,2.118702,1 +13,2,0,0,2,228752,0,9087.977,2.379877,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.114818,1.386294,,0 +13,2,0,0,3,228752,0,9087.977,3.379877,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.114818,1.386294,,0 +16,2,95,0,1,228803,0,1849.853,19.62765,1,12,1,203.3745,53.86914,0,12.87996,0,257.2437,0,0,1,8,0,2,58,6.9,0,59.1,750.15,750.15,0,0,.6931472,6.620273,0,4.564348,6.671566,0,0,0,59.1,7.523402,.6931472,5.550024,1 +16,2,95,0,2,228803,0,1849.853,20.62765,1,12,1,123.3902,36.41098,0,158.6174,0,159.8011,0,0,14,5,0,2,58,6.9,0,59.1,750.15,750.15,0,0,.6931472,6.620273,0,4.564348,6.671566,0,0,0,59.1,7.523402,.6931472,5.07393,1 +16,2,95,0,3,228803,0,1849.853,21.62765,1,12,1,98.39619,33.14261,0,15.17122,0,131.5388,0,0,1,8,0,2,58,6.9,0,59.1,750.15,750.15,0,0,.6931472,6.620273,0,4.564348,6.671566,0,0,0,59.1,7.523402,.6931472,4.879302,1 +16,2,95,0,1,228804,0,1849.853,54.39014,1,12,1,109.4797,133.1273,41.41679,0,245.1571,529.1808,1,0,0,11,0,2,51.6,31,1,54.8,750.15,750.15,0,0,.6931472,6.620273,0,4.564348,6.671566,0,0,1,54.8,7.523402,.6931472,6.27133,1 +16,2,95,0,2,228804,0,1849.853,55.39014,1,12,1,197.3958,129.8438,0,153.8826,0,327.2396,0,0,13,10,0,2,51.6,31,1,54.8,750.15,750.15,0,0,.6931472,6.620273,0,4.564348,6.671566,0,0,1,54.8,7.523402,.6931472,5.790693,1 +16,2,95,0,3,228804,0,1849.853,56.39014,1,12,1,111.2917,175.5483,28.1101,182.0546,0,314.9502,0,0,12,7,0,2,51.6,31,1,54.8,750.15,750.15,0,0,.6931472,6.620273,0,4.564348,6.671566,0,0,1,54.8,7.523402,.6931472,5.752414,1 +11,2,0,0,1,228805,0,8621.701,39.24162,1,13,1,0,0,0,0,0,0,0,0,0,0,0,6,86.7,20.7,0,58,0,0,0,0,1.791759,0,0,0,0,1,0,0,58,9.062154,1.791759,,0 +11,2,0,0,2,228805,0,8621.701,40.24162,1,13,1,83.38068,0,0,0,0,83.38068,0,0,0,4,0,6,86.7,20.7,0,58,0,0,0,0,1.791759,0,0,0,0,1,0,0,58,9.062154,1.791759,4.423417,1 +11,2,0,0,3,228805,0,8621.701,41.24162,1,13,1,0,0,0,0,0,0,0,0,0,0,0,6,86.7,20.7,0,58,0,0,0,0,1.791759,0,0,0,0,1,0,0,58,9.062154,1.791759,,0 +11,2,0,0,1,228806,0,8621.701,7.991786,0,13,1,0,0,0,0,0,0,0,0,0,0,0,6,91.7,11.84267,0,63,0,0,1,0,1.791759,0,0,0,0,0,0,0,63,9.062154,1.791759,,0 +11,2,0,0,2,228806,0,8621.701,8.991786,0,13,1,0,0,0,0,0,0,0,0,0,0,0,6,91.7,11.84267,0,63,0,0,1,0,1.791759,0,0,0,0,0,0,0,63,9.062154,1.791759,,0 +11,2,0,0,3,228806,0,8621.701,9.991786,0,13,1,0,0,0,0,0,0,0,0,0,0,0,6,91.7,11.84267,0,63,0,0,1,0,1.791759,0,0,0,0,0,0,0,63,9.062154,1.791759,,0 +11,2,0,0,1,228807,0,8621.701,10.30801,0,13,1,30.43277,0,0,0,0,30.43277,0,0,0,1,0,6,90,11.84267,0,96.3,0,0,1,0,1.791759,0,0,0,0,0,0,0,96.3,9.062154,1.791759,3.41552,1 +11,2,0,0,2,228807,0,8621.701,11.30801,0,13,1,0,0,0,0,0,0,0,0,0,0,0,6,90,11.84267,0,96.3,0,0,1,0,1.791759,0,0,0,0,0,0,0,96.3,9.062154,1.791759,,0 +11,2,0,0,3,228807,0,8621.701,12.30801,0,13,1,0,0,0,0,0,0,0,0,0,0,0,6,90,11.84267,0,96.3,0,0,1,0,1.791759,0,0,0,0,0,0,0,96.3,9.062154,1.791759,,0 +11,2,0,0,1,228808,0,8621.701,13.1499,0,13,1,18.03194,0,0,0,0,18.03194,0,0,0,1,0,6,85,11.84267,0,100,0,0,1,0,1.791759,0,0,0,0,0,0,0,100,9.062154,1.791759,2.892145,1 +11,2,0,0,2,228808,0,8621.701,14.1499,0,13,1,17.51894,0,0,0,0,17.51894,0,0,0,1,0,6,85,11.84267,0,100,0,0,1,0,1.791759,0,0,0,0,0,0,0,100,9.062154,1.791759,2.863283,1 +11,2,0,0,3,228808,0,8621.701,15.1499,0,13,1,86.64933,0,0,0,0,86.64933,0,0,0,3,0,6,85,11.84267,0,100,0,0,1,0,1.791759,0,0,0,0,0,0,0,100,9.062154,1.791759,4.461869,1 +11,2,0,0,1,228809,0,8621.701,43.96714,0,10,1,51.8238,6.651211,0,0,0,58.47501,0,0,0,2,0,6,90.7,24.1,0,64.8,0,0,0,0,1.791759,0,0,0,0,1,0,0,64.8,9.062154,1.791759,4.0686,1 +11,2,0,0,2,228809,0,8621.701,44.96714,0,10,1,177.1828,0,0,0,0,177.1828,0,0,0,3,0,6,90.7,24.1,0,64.8,0,0,0,0,1.791759,0,0,0,0,1,0,0,64.8,9.062154,1.791759,5.177182,1 +11,2,0,0,3,228809,0,8621.701,45.96714,0,10,1,52.40572,0,0,0,0,52.40572,0,0,0,3,0,6,90.7,24.1,0,64.8,0,0,0,0,1.791759,0,0,0,0,1,0,0,64.8,9.062154,1.791759,3.959016,1 +11,2,0,0,1,228810,0,8621.701,11.45243,0,13,1,0,0,0,0,0,0,0,0,0,0,0,6,85,11.84267,0,59.3,0,0,1,0,1.791759,0,0,0,0,1,0,0,59.3,9.062154,1.791759,,0 +11,2,0,0,2,228810,0,8621.701,12.45243,0,13,1,81.12216,0,0,0,0,81.12216,0,0,0,3,0,6,85,11.84267,0,59.3,0,0,1,0,1.791759,0,0,0,0,1,0,0,59.3,9.062154,1.791759,4.395956,1 +11,2,0,0,3,228810,0,8621.701,13.45243,0,13,1,0,0,0,0,0,0,0,0,0,0,0,6,85,11.84267,0,59.3,0,0,1,0,1.791759,0,0,0,0,1,0,0,59.3,9.062154,1.791759,,0 +18,2,25,0,1,228812,0,8026.95,43.9425,1,12,1,49.66022,7.579718,0,0,0,57.23994,0,0,0,3,0,2,89.4,13.8,0,72.7,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,72.7,8.990685,.6931472,4.047252,1 +18,2,25,0,2,228812,0,8026.95,44.9425,1,12,1,16.81884,0,40.16819,0,1087.66,1144.647,1,0,0,1,1,2,89.4,13.8,0,72.7,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,72.7,8.990685,.6931472,7.042851,1 +18,2,25,0,3,228812,0,8026.95,45.9425,1,12,1,53.96476,23.70044,33.9207,0,0,111.5859,0,0,0,2,1,2,89.4,13.8,0,72.7,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,72.7,8.990685,.6931472,4.714795,1 +18,2,25,0,1,228813,0,8026.95,46.64476,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,89.9,3.4,0,67,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,67,8.990685,.6931472,,0 +18,2,25,0,2,228813,0,8026.95,47.64476,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,89.9,3.4,0,67,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,67,8.990685,.6931472,,0 +18,2,25,0,3,228813,0,8026.95,48.64476,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,89.9,3.4,0,67,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,1,0,0,67,8.990685,.6931472,,0 +11,2,0,1,1,228866,0,7696.129,29.13347,1,15,1,43.2828,16.62311,36.90016,0,0,96.80606,0,0,0,3,0,3,63.8,0,0,98.9,0,423,0,0,1.098612,6.047372,0,0,0,0,0,0,98.9,8.948603,1.098612,4.57271,1 +11,2,0,1,2,228866,0,7696.129,30.13347,1,15,1,102.8352,0,4.324844,215.7617,0,107.16,0,0,37,2,9,3,63.8,0,0,98.9,0,423,0,0,1.098612,6.047372,0,0,0,0,0,0,98.9,8.948603,1.098612,4.674323,1 +11,2,0,1,3,228866,0,7696.129,31.13347,1,15,1,16.29956,19.82379,0,39.31718,0,36.12335,0,0,7,1,0,3,63.8,0,0,98.9,0,423,0,0,1.098612,6.047372,0,0,0,0,0,0,98.9,8.948603,1.098612,3.586939,1 +11,2,0,1,1,228867,0,7696.129,29.05133,0,16,1,57.86723,0,1.045478,0,0,58.9127,0,0,0,3,0,3,73.4,0,0,81.8,0,423,0,0,1.098612,6.047372,0,0,0,0,0,0,81.8,8.948603,1.098612,4.076057,1 +11,2,0,1,2,228867,0,7696.129,30.05133,0,16,1,279.0966,3.195579,.4805382,377.2225,0,282.7727,0,0,38,7,16,3,73.4,0,0,81.8,0,423,0,0,1.098612,6.047372,0,0,0,0,0,0,81.8,8.948603,1.098612,5.644643,1 +11,2,0,1,3,228867,0,7696.129,31.05133,0,16,1,243.2159,1.54185,21.14537,460.9031,0,265.9031,0,0,37,5,19,3,73.4,0,0,81.8,0,423,0,0,1.098612,6.047372,0,0,0,0,0,0,81.8,8.948603,1.098612,5.583132,1 +11,2,0,1,1,228868,0,7696.129,3.909651,0,15,1,32.93257,0,0,0,0,32.93257,0,0,0,3,0,3,81.35272,11.84267,0,92.6,0,423,1,0,1.098612,6.047372,0,0,0,0,0,0,92.6,8.948603,1.098612,3.494462,1 +11,2,0,1,2,228868,0,7696.129,4.909651,0,15,1,56.43921,14.80058,0,0,0,71.23979,0,0,0,6,0,3,81.35272,11.84267,0,92.6,0,423,1,0,1.098612,6.047372,0,0,0,0,0,0,92.6,8.948603,1.098612,4.266052,1 +11,2,0,1,3,228868,0,7696.129,5.909651,0,15,1,27.31277,2.444934,0,0,0,29.75771,0,0,0,3,0,3,81.35272,11.84267,0,92.6,0,423,1,0,1.098612,6.047372,0,0,0,0,0,0,92.6,8.948603,1.098612,3.393088,1 +15,2,95,0,1,228882,0,12744.28,26.03148,1,13,1,42.3493,14.89438,0,0,0,57.24369,0,0,0,3,0,4,72.9,10.3,0,73.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,73.9,9.452916,1.386294,4.047318,1 +15,2,95,0,2,228882,0,12744.28,27.03148,1,13,1,25.33144,8.380682,0,0,0,33.71212,0,0,0,2,0,4,72.9,10.3,0,73.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,73.9,9.452916,1.386294,3.517857,1 +15,2,95,0,3,228882,0,12744.28,28.03148,1,13,1,47.68097,2.254009,28.46987,0,372.0069,450.4118,1,0,0,3,0,4,72.9,10.3,0,73.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,73.9,9.452916,1.386294,6.110162,1 +15,2,95,0,1,228883,0,12744.28,1.71937,1,13,1,20.60793,0,0,0,0,20.60793,0,0,0,2,0,4,81.35272,11.84267,0,55.6,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,55.6,9.452916,1.386294,3.025676,1 +15,2,95,0,2,228883,0,12744.28,2.71937,1,13,1,25,5.776515,0,0,0,30.77652,0,0,0,3,0,4,81.35272,11.84267,0,55.6,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,55.6,9.452916,1.386294,3.426752,1 +15,2,95,0,3,228883,0,12744.28,3.71937,1,13,1,51.90724,2.384048,0,0,0,54.29129,0,0,0,4,0,4,81.35272,11.84267,0,55.6,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,55.6,9.452916,1.386294,3.994364,1 +15,2,95,0,1,228884,0,12744.28,28.70363,0,12,1,52.55023,0,0,0,0,52.55023,0,0,0,1,0,4,83.5,6.9,0,68.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,68.2,9.452916,1.386294,3.96177,1 +15,2,95,0,2,228884,0,12744.28,29.70363,0,12,1,37.4053,3.480114,0,0,0,40.88542,0,0,0,3,0,4,83.5,6.9,0,68.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,68.2,9.452916,1.386294,3.710773,1 +15,2,95,0,3,228884,0,12744.28,30.70363,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.5,6.9,0,68.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,68.2,9.452916,1.386294,,0 +15,2,95,0,1,228885,0,12744.28,3.720739,1,13,1,8.243174,0,0,0,0,8.243174,0,0,0,1,0,4,81.35272,11.84267,0,66.7,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.452916,1.386294,2.109385,1 +15,2,95,0,2,228885,0,12744.28,4.720739,1,13,1,16.80871,7.305871,0,0,0,24.11458,0,0,0,1,0,4,81.35272,11.84267,0,66.7,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.452916,1.386294,3.182817,1 +15,2,95,0,3,228885,0,12744.28,5.720739,1,13,1,18.96402,3.289987,0,0,0,22.25401,0,0,0,3,0,4,81.35272,11.84267,0,66.7,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.452916,1.386294,3.102522,1 +5,2,25,0,1,228889,0,4344.868,48.30664,1,9,1,10.30397,0,0,0,0,10.30397,0,0,0,2,0,1,60.1,20.7,1,51.1,611.25,611.25,0,0,0,6.415506,0,3.258096,7.8018,0,1,0,51.1,8.376981,0,2.332529,1 +5,2,25,0,1,228890,0,3621.701,25.73853,1,12,1,89.90211,0,0,0,0,89.90211,0,0,0,1,0,1,73.4,3.4,0,83,299.05,299.05,0,0,0,5.700611,0,3.258096,7.086905,0,0,0,83,8.194975,0,4.498722,1 +5,2,25,0,2,228890,0,3621.701,26.73853,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,73.4,3.4,0,83,299.05,299.05,0,0,0,5.700611,0,3.258096,7.086905,0,0,0,83,8.194975,0,,0 +5,2,25,0,3,228890,0,3621.701,27.73853,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,73.4,3.4,0,83,299.05,299.05,0,0,0,5.700611,0,3.258096,7.086905,0,0,0,83,8.194975,0,,0 +13,2,0,0,1,228893,0,11755.42,21.72758,0,14,1,44.20177,3.884555,34.52418,0,0,82.6105,0,0,0,4,1,3,66,0,0,51.1,450,507,0,0,1.098612,6.228511,1,4.564348,6.160541,0,1,0,51.1,9.372155,1.098612,4.414137,1 +13,2,0,0,2,228893,0,11755.42,22.72758,0,14,1,7.166746,0,0,0,0,7.166746,0,0,0,1,0,3,66,0,0,51.1,450,507,0,0,1.098612,6.228511,1,4.564348,6.160541,0,1,0,51.1,9.372155,1.098612,1.969452,1 +13,2,0,0,3,228893,0,11755.42,23.72758,0,14,1,0,0,0,0,0,0,0,0,0,0,0,3,66,0,0,51.1,450,507,0,0,1.098612,6.228511,1,4.564348,6.160541,0,1,0,51.1,9.372155,1.098612,,0 +13,2,0,0,4,228893,0,11755.42,24.72758,0,14,1,0,0,0,0,0,0,0,0,0,0,0,3,66,0,0,51.1,450,507,0,0,1.098612,6.228511,1,4.564348,6.160541,0,1,0,51.1,9.372155,1.098612,,0 +13,2,0,0,1,228894,0,11755.42,48.66804,1,13,1,147.4259,8.689548,54.79459,0,1388.04,1598.95,1,0,0,10,1,3,88.3,20.7,0,77.3,450,507,0,0,1.098612,6.228511,1,4.564348,6.160541,1,0,0,77.3,9.372155,1.098612,7.377102,1 +13,2,0,0,2,228894,0,11755.42,49.66804,1,13,1,38.70043,6.741519,0,0,0,45.44195,0,0,0,5,0,3,88.3,20.7,0,77.3,450,507,0,0,1.098612,6.228511,1,4.564348,6.160541,1,0,0,77.3,9.372155,1.098612,3.816436,1 +13,2,0,0,3,228894,0,11755.42,50.66804,1,13,1,94.60052,0,45.82967,0,0,140.4302,0,0,0,2,1,3,88.3,20.7,0,77.3,450,507,0,0,1.098612,6.228511,1,4.564348,6.160541,1,0,0,77.3,9.372155,1.098612,4.944711,1 +13,2,0,0,4,228894,0,11755.42,51.66804,1,13,1,20.34304,5.480654,0,0,0,25.82369,0,0,0,3,0,3,88.3,20.7,0,77.3,450,507,0,0,1.098612,6.228511,1,4.564348,6.160541,1,0,0,77.3,9.372155,1.098612,3.251292,1 +13,2,0,0,5,228894,0,11755.42,52.66804,1,13,1,40.60914,10.22118,33.64032,0,0,84.47063,0,0,0,4,1,2,88.3,20.7,0,77.3,450,507,0,0,.6931472,6.228511,1,4.564348,6.160541,1,0,0,77.3,9.372155,.6931472,4.436404,1 +13,2,0,0,1,228895,0,11755.42,50.02875,0,11,1,100.624,35.43422,0,0,0,136.0582,0,0,0,9,0,3,79.3,6.9,0,70.5,450,507,0,0,1.098612,6.228511,1,4.564348,6.160541,0,1,0,70.5,9.372155,1.098612,4.913083,1 +13,2,0,0,2,228895,0,11755.42,51.02875,0,11,1,8.600096,12.47014,0,0,0,21.07023,0,0,0,1,0,3,79.3,6.9,0,70.5,450,507,0,0,1.098612,6.228511,1,4.564348,6.160541,0,1,0,70.5,9.372155,1.098612,3.047861,1 +13,2,0,0,3,228895,0,11755.42,52.02875,0,11,1,87.55927,0,43.07726,0,0,130.6365,0,0,0,2,1,3,79.3,6.9,0,70.5,450,507,0,0,1.098612,6.228511,1,4.564348,6.160541,0,1,0,70.5,9.372155,1.098612,4.872419,1 +13,2,0,0,4,228895,0,11755.42,53.02875,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,79.3,6.9,0,70.5,450,507,0,0,1.098612,6.228511,1,4.564348,6.160541,0,1,0,70.5,9.372155,1.098612,,0 +13,2,0,0,5,228895,0,11755.42,54.02875,0,11,1,231.5446,10.60551,43.82886,0,7978.72,8264.699,2,0,0,6,1,2,79.3,6.9,0,70.5,450,507,0,0,.6931472,6.228511,1,4.564348,6.160541,0,1,0,70.5,9.372155,.6931472,9.019749,1 +13,2,0,0,1,228898,0,2521.994,20.96099,1,12,1,299.8454,3.101494,0,0,0,302.9469,0,0,0,9,0,1,68.6,17.2,0,85.2,150,44.22,0,0,0,3.789177,1,4.564348,5.061929,0,0,0,85.2,7.833201,0,5.713558,1 +13,2,0,0,2,228898,0,2521.994,21.96099,1,12,1,11.36364,0,0,0,0,11.36364,0,0,0,1,0,1,68.6,17.2,0,85.2,150,44.22,0,0,0,3.789177,1,4.564348,5.061929,0,0,0,85.2,7.833201,0,2.430418,1 +13,2,0,0,3,228898,0,2521.994,22.96099,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,68.6,17.2,0,85.2,150,44.22,0,0,0,3.789177,1,4.564348,5.061929,0,0,0,85.2,7.833201,0,,0 +11,2,0,0,1,228932,0,8505.572,28.55852,1,13,1,112.3245,5.590224,0,0,284.6334,402.5481,1,0,0,5,0,2,88.3,10.3,0,88.6,0,211.8,0,0,.6931472,5.355642,0,0,0,0,0,0,88.6,9.048594,.6931472,5.997815,1 +11,2,0,0,2,228932,0,8505.572,29.55852,1,13,1,14.81128,17.23841,0,0,1206.756,1238.806,1,0,0,0,0,2,88.3,10.3,0,88.6,0,211.8,0,0,.6931472,5.355642,0,0,0,0,0,0,88.6,9.048594,.6931472,7.121903,1 +11,2,0,0,3,228932,0,8505.572,30.55852,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,10.3,0,88.6,0,211.8,0,0,1.098612,5.355642,0,0,0,0,0,0,88.6,9.048594,1.098612,,0 +11,2,0,0,4,228932,0,8505.572,31.55852,1,13,1,79.41763,9.79657,0,0,1381.611,1470.826,1,0,0,1,0,3,88.3,10.3,0,88.6,0,211.8,0,0,1.098612,5.355642,0,0,0,0,0,0,88.6,9.048594,1.098612,7.293579,1 +11,2,0,0,5,228932,0,8505.572,32.55852,1,13,1,9.06454,2.353154,0,106.9616,0,11.41769,0,0,9,1,0,4,88.3,10.3,0,88.6,0,211.8,0,0,1.386294,5.355642,0,0,0,0,0,0,88.6,9.048594,1.386294,2.435164,1 +11,2,0,1,1,228945,0,6363.636,23.26078,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,90.4,0,0,93.2,0,516,0,0,1.609438,6.246107,0,0,0,0,0,0,93.2,8.758512,1.609438,,0 +11,2,0,1,2,228945,0,6363.636,24.26078,0,12,1,7.208073,0,0,0,0,7.208073,0,0,0,1,0,5,90.4,0,0,93.2,0,516,0,0,1.609438,6.246107,0,0,0,0,0,0,93.2,8.758512,1.609438,1.975202,1 +11,2,0,1,3,228945,0,6363.636,25.26078,0,12,1,117.0925,12.66079,5.726872,0,0,135.4802,0,0,0,8,0,5,90.4,0,0,93.2,0,516,0,0,1.609438,6.246107,0,0,0,0,0,0,93.2,8.758512,1.609438,4.908825,1 +11,2,0,1,1,228946,0,6363.636,1.848049,1,12,1,47.83063,5.541035,0,0,0,53.37167,0,0,0,5,0,5,81.35272,11.84267,0,81.5,0,516,1,1,1.609438,6.246107,0,0,0,0,1,0,81.5,8.758512,1.609438,3.97728,1 +11,2,0,1,2,228946,0,6363.636,2.848049,1,12,1,14.05574,4.204709,0,0,224.2431,242.5036,1,0,0,2,0,5,81.35272,11.84267,0,81.5,0,516,1,1,1.609438,6.246107,0,0,0,0,1,0,81.5,8.758512,1.609438,5.491016,1 +11,2,0,1,3,228946,0,6363.636,3.848049,1,12,1,26.87225,8.973568,0,0,0,35.84581,0,0,0,4,0,5,81.35272,11.84267,0,81.5,0,516,1,1,1.609438,6.246107,0,0,0,0,1,0,81.5,8.758512,1.609438,3.579227,1 +11,2,0,1,1,228947,0,6363.636,6.324435,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,68.3,11.84267,0,85.2,0,516,1,0,1.609438,6.246107,0,0,0,0,0,0,85.2,8.758512,1.609438,,0 +11,2,0,1,2,228947,0,6363.636,7.324435,0,12,1,98.7506,1.753964,0,0,0,100.5046,0,0,0,5,0,5,68.3,11.84267,0,85.2,0,516,1,0,1.609438,6.246107,0,0,0,0,0,0,85.2,8.758512,1.609438,4.610203,1 +11,2,0,1,3,228947,0,6363.636,8.324435,0,12,1,42.95154,4.863436,0,0,0,47.81498,0,0,0,3,0,5,68.3,11.84267,0,85.2,0,516,1,0,1.609438,6.246107,0,0,0,0,0,0,85.2,8.758512,1.609438,3.867339,1 +11,2,0,1,1,228948,0,6363.636,22.96235,1,12,1,183.9519,7.239937,0,0,0,191.1918,0,0,0,2,16,5,64.9,10.3,0,68.2,0,516,0,0,1.609438,6.246107,0,0,0,1,0,0,68.2,8.758512,1.609438,5.253277,1 +11,2,0,1,2,228948,0,6363.636,23.96235,1,12,1,148.6881,16.70831,0,12.97453,271.5041,436.9005,1,0,1,7,3,5,64.9,10.3,0,68.2,0,516,0,0,1.609438,6.246107,0,0,0,1,0,0,68.2,8.758512,1.609438,6.079706,1 +11,2,0,1,3,228948,0,6363.636,24.96235,1,12,1,200.8811,10.23789,0,0,0,211.1189,0,0,0,7,0,5,64.9,10.3,0,68.2,0,516,0,0,1.609438,6.246107,0,0,0,1,0,0,68.2,8.758512,1.609438,5.352422,1 +11,2,0,0,1,228965,0,14764.22,20.3614,0,13,1,15.71355,11.695,0,0,0,27.40855,0,0,0,2,0,3,62.2,10.3,0,63.6,0,184.8,0,0,1.098612,5.219274,0,0,0,1,0,0,63.6,9.60003,1.098612,3.310855,1 +11,2,0,0,2,228965,0,14764.22,21.3614,0,13,1,16.57197,0,43.50852,0,0,60.08049,0,0,0,1,0,3,62.2,10.3,0,63.6,0,184.8,0,0,1.098612,5.219274,0,0,0,1,0,0,63.6,9.60003,1.098612,4.095685,1 +11,2,0,0,3,228965,0,14764.22,22.3614,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,62.2,10.3,0,63.6,0,184.8,0,0,1.098612,5.219274,0,0,0,1,0,0,63.6,9.60003,1.098612,,0 +11,2,0,0,1,228966,0,14764.22,53.91924,1,15,1,203.5033,7.856775,44.4204,0,223.493,479.2736,1,0,0,11,0,3,89.4,17.2,1,52.3,0,184.8,0,0,1.098612,5.219274,0,0,0,0,1,0,52.3,9.60003,1.098612,6.172272,1 +11,2,0,0,2,228966,0,14764.22,54.91924,1,15,1,359.7301,22.33902,137.8314,0,16946.08,17465.98,6,0,0,2,17,3,89.4,17.2,1,52.3,0,184.8,0,0,1.098612,5.219274,0,0,0,0,1,0,52.3,9.60003,1.098612,9.76801,1 +11,2,0,0,3,228966,0,14764.22,55.91924,1,15,1,1778.067,312.4187,165.5873,0,0,2256.073,0,0,0,1,109,3,89.4,17.2,1,52.3,0,184.8,0,0,1.098612,5.219274,0,0,0,0,1,0,52.3,9.60003,1.098612,7.721381,1 +11,2,0,0,1,228967,0,14764.22,52.77208,0,12,1,144.5131,1.545595,0,0,0,146.0587,0,0,0,1,0,3,75.5,13.8,0,60.2,0,184.8,0,0,1.098612,5.219274,0,0,0,0,1,0,60.2,9.60003,1.098612,4.984009,1 +11,2,0,0,2,228967,0,14764.22,53.77208,0,12,1,27.46212,47.96402,0,0,0,75.42614,0,0,0,0,0,3,75.5,13.8,0,60.2,0,184.8,0,0,1.098612,5.219274,0,0,0,0,1,0,60.2,9.60003,1.098612,4.323154,1 +11,2,0,0,3,228967,0,14764.22,54.77208,0,12,1,100.13,13.24231,36.66233,0,109.2328,259.2675,0,0,0,5,0,3,75.5,13.8,0,60.2,0,184.8,0,0,1.098612,5.219274,0,0,0,0,1,0,60.2,9.60003,1.098612,5.55786,1 +15,2,95,1,1,229034,0,5791.789,42.53251,0,10,1,9.360374,0,34.62819,0,0,43.98856,0,0,0,0,1,4,96.3,3.4,0,83.3,500,0,0,0,1.386294,0,0,4.564348,6.265902,0,0,0,83.3,8.66437,1.386294,3.78393,1 +15,2,95,1,2,229034,0,5791.789,43.53251,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,96.3,3.4,0,83.3,500,0,0,0,1.386294,0,0,4.564348,6.265902,0,0,0,83.3,8.66437,1.386294,,0 +15,2,95,1,3,229034,0,5791.789,44.53251,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,96.3,3.4,0,83.3,500,0,0,0,1.386294,0,0,4.564348,6.265902,0,0,0,83.3,8.66437,1.386294,,0 +15,2,95,1,1,229035,0,5791.789,9.226557,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,95,11.84267,0,96.3,500,0,1,1,1.386294,0,0,4.564348,6.265902,0,0,0,96.3,8.66437,1.386294,,0 +15,2,95,1,2,229035,0,5791.789,10.22656,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,95,11.84267,0,96.3,500,0,1,1,1.386294,0,0,4.564348,6.265902,0,0,0,96.3,8.66437,1.386294,,0 +15,2,95,1,3,229035,0,5791.789,11.22656,1,13,1,60.6892,0,0,0,0,60.6892,0,0,0,4,0,4,95,11.84267,0,96.3,500,0,1,1,1.386294,0,0,4.564348,6.265902,0,0,0,96.3,8.66437,1.386294,4.105766,1 +15,2,95,1,1,229036,0,5791.789,34.27242,1,13,1,20.80083,0,0,0,0,20.80083,0,0,0,1,0,4,94.7,10.3,0,92,500,0,0,0,1.386294,0,0,4.564348,6.265902,0,0,0,92,8.66437,1.386294,3.034993,1 +15,2,95,1,2,229036,0,5791.789,35.27242,1,13,1,17.67797,0,0,0,0,17.67797,0,0,0,1,0,4,94.7,10.3,0,92,500,0,0,0,1.386294,0,0,4.564348,6.265902,0,0,0,92,8.66437,1.386294,2.872319,1 +15,2,95,1,3,229036,0,5791.789,36.27242,1,13,1,45.2151,0,0,0,0,45.2151,0,0,0,5,0,4,94.7,10.3,0,92,500,0,0,0,1.386294,0,0,4.564348,6.265902,0,0,0,92,8.66437,1.386294,3.811431,1 +15,2,95,1,1,229037,0,5791.789,12.33676,0,13,1,61.88248,15.0806,0,0,0,76.96308,0,0,0,6,0,4,86.7,11.84267,0,96.3,500,0,1,0,1.386294,0,0,4.564348,6.265902,0,0,0,96.3,8.66437,1.386294,4.343326,1 +15,2,95,1,2,229037,0,5791.789,13.33676,0,13,1,26.75585,10.8839,0,0,0,37.63975,0,0,0,3,0,4,86.7,11.84267,0,96.3,500,0,1,0,1.386294,0,0,4.564348,6.265902,0,0,0,96.3,8.66437,1.386294,3.628061,1 +15,2,95,1,3,229037,0,5791.789,14.33676,0,13,1,18.65672,0,0,0,0,18.65672,0,0,0,2,0,4,86.7,11.84267,0,96.3,500,0,1,0,1.386294,0,0,4.564348,6.265902,0,0,0,96.3,8.66437,1.386294,2.926206,1 +13,2,0,0,1,229038,0,6634.604,49.02943,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,92.6,10.3,0,76.1,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,76.1,8.800205,.6931472,,0 +13,2,0,0,2,229038,0,6634.604,50.02943,0,12,1,36.72241,1.839465,34.21883,0,272.322,345.1027,1,0,0,1,1,2,92.6,10.3,0,76.1,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,76.1,8.800205,.6931472,5.843842,1 +13,2,0,0,3,229038,0,6634.604,51.02943,0,12,1,116.4618,78.07287,0,0,1055.004,1249.539,2,0,0,2,0,2,92.6,10.3,0,76.1,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,76.1,8.800205,.6931472,7.13053,1 +13,2,0,0,1,229039,0,6634.604,53.24572,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,75,10.3,0,62.5,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,62.5,8.800205,.6931472,,0 +13,2,0,0,2,229039,0,6634.604,54.24572,1,10,1,51.9828,0,59.54133,0,0,111.5241,0,0,0,1,1,2,75,10.3,0,62.5,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,62.5,8.800205,.6931472,4.714241,1 +13,2,0,0,3,229039,0,6634.604,55.24572,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,75,10.3,0,62.5,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,62.5,8.800205,.6931472,,0 +19,2,25,0,1,229041,0,18542.52,34.8063,1,14,1,48.17105,4.688305,0,0,1432.844,1485.703,2,0,0,4,0,1,82.4,10.3,0,75,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,75,9.827876,0,7.303644,1 +19,2,25,0,2,229041,0,18542.52,35.8063,1,14,1,15.625,1.870265,0,0,0,17.49527,0,0,0,2,0,1,82.4,10.3,0,75,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,75,9.827876,0,2.86193,1 +19,2,25,0,3,229041,0,18542.52,36.8063,1,14,1,171.7815,7.81101,0,0,0,179.5925,0,0,0,10,0,1,82.4,10.3,0,75,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,75,9.827876,0,5.190691,1 +19,2,25,0,4,229041,0,18542.52,37.8063,1,14,1,71.68176,17.99133,0,0,0,89.6731,0,0,0,3,0,1,82.4,10.3,0,75,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,75,9.827876,0,4.496171,1 +19,2,25,0,5,229041,0,18542.52,38.8063,1,14,1,28.98032,8.515205,0,0,0,37.49553,0,0,0,1,0,1,82.4,10.3,0,75,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,75,9.827876,0,3.624222,1 +17,2,25,0,1,229047,0,7324.927,26.48871,0,13,1,0,6.578263,0,0,0,6.578263,0,0,0,0,0,2,87.2,3.4,0,84.1,568.05,568.05,0,0,.6931472,6.342209,0,3.258096,7.728504,0,0,0,84.1,8.899175,.6931472,1.883771,1 +17,2,25,0,2,229047,0,7324.927,27.48871,0,13,1,5.255614,3.774486,0,0,0,9.0301,0,0,0,1,0,2,87.2,3.4,0,84.1,568.05,568.05,0,0,.6931472,6.342209,0,3.258096,7.728504,0,0,0,84.1,8.899175,.6931472,2.200563,1 +17,2,25,0,3,229047,0,7324.927,28.48871,0,13,1,7.243196,1.646181,30.28973,0,0,39.1791,0,0,0,1,0,3,87.2,3.4,0,84.1,568.05,568.05,0,0,1.098612,6.342209,0,3.258096,7.728504,0,0,0,84.1,8.899175,1.098612,3.668144,1 +17,2,25,0,1,229048,0,7324.927,20.50103,1,12,1,207.9563,62.4025,.9100364,0,0,271.2689,0,0,0,15,0,2,79.3,27.6,1,67,568.05,568.05,0,0,.6931472,6.342209,0,3.258096,7.728504,1,0,0,67,8.899175,.6931472,5.60311,1 +17,2,25,0,2,229048,0,7324.927,21.50103,1,12,1,48.25609,15.91018,0,0,707.1429,771.3091,1,0,0,6,0,2,79.3,27.6,1,67,568.05,568.05,0,0,.6931472,6.342209,0,3.258096,7.728504,1,0,0,67,8.899175,.6931472,6.648089,1 +17,2,25,0,3,229048,0,7324.927,22.50103,1,12,1,127.5241,30.07902,0,0,0,157.6032,0,0,0,12,0,3,79.3,27.6,1,67,568.05,568.05,0,0,1.098612,6.342209,0,3.258096,7.728504,1,0,0,67,8.899175,1.098612,5.06008,1 +13,2,0,0,1,229060,0,7905.572,29.50856,0,12,1,119.7836,12.90572,0,0,0,132.6893,0,0,0,6,0,5,77.1,13.8,0,78.4,450,658.44,0,0,1.609438,6.489873,1,4.564348,6.160541,0,0,0,78.4,8.97545,1.609438,4.888011,1 +13,2,0,0,2,229060,0,7905.572,30.50856,0,12,1,22.25379,0,0,0,0,22.25379,0,0,0,1,0,5,77.1,13.8,0,78.4,450,658.44,0,0,1.609438,6.489873,1,4.564348,6.160541,0,0,0,78.4,8.97545,1.609438,3.102512,1 +13,2,0,0,3,229060,0,7905.572,31.50856,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.1,13.8,0,78.4,450,658.44,0,0,1.609438,6.489873,1,4.564348,6.160541,0,0,0,78.4,8.97545,1.609438,,0 +13,2,0,0,1,229061,0,7905.572,2.447639,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,96.3,450,658.44,1,1,1.609438,6.489873,1,4.564348,6.160541,0,0,0,96.3,8.97545,1.609438,,0 +13,2,0,0,2,229061,0,7905.572,3.447639,1,11,1,16.4536,0,0,0,0,16.4536,0,0,0,1,0,5,81.35272,11.84267,0,96.3,450,658.44,1,1,1.609438,6.489873,1,4.564348,6.160541,0,0,0,96.3,8.97545,1.609438,2.800544,1 +13,2,0,0,3,229061,0,7905.572,4.447639,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,96.3,450,658.44,1,1,1.609438,6.489873,1,4.564348,6.160541,0,0,0,96.3,8.97545,1.609438,,0 +13,2,0,0,1,229062,0,7905.572,28.2026,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,63.3,24.1,0,69.3,450,658.44,0,0,1.609438,6.489873,1,4.564348,6.160541,0,0,0,69.3,8.97545,1.609438,,0 +13,2,0,0,2,229062,0,7905.572,29.2026,1,11,1,15.625,0,0,0,0,15.625,0,0,0,1,0,5,63.3,24.1,0,69.3,450,658.44,0,0,1.609438,6.489873,1,4.564348,6.160541,0,0,0,69.3,8.97545,1.609438,2.748872,1 +13,2,0,0,3,229062,0,7905.572,30.2026,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,63.3,24.1,0,69.3,450,658.44,0,0,1.609438,6.489873,1,4.564348,6.160541,0,0,0,69.3,8.97545,1.609438,,0 +13,2,0,0,1,229063,0,7905.572,10.04517,0,11,1,0,2.756311,0,0,0,2.756311,0,0,0,0,0,5,56.7,11.84267,0,96.3,450,658.44,1,0,1.609438,6.489873,1,4.564348,6.160541,0,0,0,96.3,8.97545,1.609438,1.013893,1 +13,2,0,0,2,229063,0,7905.572,11.04517,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,56.7,11.84267,0,96.3,450,658.44,1,0,1.609438,6.489873,1,4.564348,6.160541,0,0,0,96.3,8.97545,1.609438,,0 +13,2,0,0,3,229063,0,7905.572,12.04517,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,56.7,11.84267,0,96.3,450,658.44,1,0,1.609438,6.489873,1,4.564348,6.160541,0,0,0,96.3,8.97545,1.609438,,0 +13,2,0,0,1,229064,0,7905.572,8.021903,1,11,1,155.5899,53.08089,0,0,0,208.6708,0,0,0,20,0,5,71.7,11.84267,1,81.5,450,658.44,1,1,1.609438,6.489873,1,4.564348,6.160541,0,0,0,81.5,8.97545,1.609438,5.340758,1 +13,2,0,0,2,229064,0,7905.572,9.021903,1,11,1,61.6714,81.73769,0,0,0,143.4091,0,0,0,18,0,5,71.7,11.84267,1,81.5,450,658.44,1,1,1.609438,6.489873,1,4.564348,6.160541,0,0,0,81.5,8.97545,1.609438,4.965701,1 +13,2,0,0,3,229064,0,7905.572,10.0219,1,11,1,87.12614,17.33854,.9752926,0,0,105.44,0,0,0,16,0,5,71.7,11.84267,1,81.5,450,658.44,1,1,1.609438,6.489873,1,4.564348,6.160541,0,0,0,81.5,8.97545,1.609438,4.658142,1 +11,2,0,1,1,229093,0,9953.079,11.12115,1,12,1,5.227392,1.777313,0,0,0,7.004704,0,0,0,1,0,4,61.7,11.84267,0,70.4,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.4,9.205738,1.386294,1.946582,1 +11,2,0,1,2,229093,0,9953.079,12.12115,1,12,1,29.12062,0,31.93176,0,0,61.05238,0,0,0,2,1,3,61.7,11.84267,0,70.4,0,0,1,1,1.098612,0,0,0,0,0,0,0,70.4,9.205738,1.098612,4.111732,1 +11,2,0,1,3,229093,0,9953.079,13.12115,1,12,1,33.03965,6.449339,0,0,0,39.48899,0,0,0,5,0,3,61.7,11.84267,0,70.4,0,0,1,1,1.098612,0,0,0,0,0,0,0,70.4,9.205738,1.098612,3.676022,1 +11,2,0,1,4,229093,0,9953.079,14.12115,1,12,1,43.46774,2.741935,0,0,0,46.20968,0,0,0,3,0,3,61.7,11.84267,0,70.4,0,0,1,1,1.098612,0,0,0,0,0,0,0,70.4,9.205738,1.098612,3.833189,1 +11,2,0,1,5,229093,0,9953.079,15.12115,1,12,1,106.6485,13.34791,34.52823,0,0,154.5246,0,0,0,7,1,3,61.7,11.84267,0,70.4,0,0,1,1,1.098612,0,0,0,0,0,0,0,70.4,9.205738,1.098612,5.040353,1 +11,2,0,1,1,229094,0,9953.079,35.71252,1,12,1,58.28542,9.179299,0,0,0,67.46471,0,0,0,4,0,4,77.7,6.9,1,56.8,0,0,0,0,1.386294,0,0,0,0,1,0,0,56.8,9.205738,1.386294,4.211605,1 +11,2,0,1,2,229094,0,9953.079,36.71252,1,12,1,24.02691,9.634791,0,0,0,33.6617,0,0,0,5,0,3,77.7,6.9,1,56.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,56.8,9.205738,1.098612,3.516361,1 +11,2,0,1,3,229094,0,9953.079,37.71252,1,12,1,42.73128,8.440529,0,0,0,51.17181,0,0,0,6,1,3,77.7,6.9,1,56.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,56.8,9.205738,1.098612,3.935189,1 +11,2,0,1,4,229094,0,9953.079,38.71252,1,12,1,225.4032,27.64113,25.20161,0,0,278.246,0,0,0,15,1,3,77.7,6.9,1,56.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,56.8,9.205738,1.098612,5.628506,1 +11,2,0,1,5,229094,0,9953.079,39.71252,1,12,1,201.6393,22.9326,38.17122,0,0,262.7432,0,0,0,6,1,3,77.7,6.9,1,56.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,56.8,9.205738,1.098612,5.571177,1 +11,2,0,1,1,229096,0,9953.079,38.3217,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.1,13.8,0,85.7,0,0,0,0,1.386294,0,0,0,0,0,0,0,85.7,9.205738,1.386294,,0 +11,2,0,1,2,229096,0,9953.079,39.3217,0,12,1,12.01346,0,30.58626,0,0,42.59971,0,0,0,0,1,3,77.1,13.8,0,85.7,0,0,0,0,1.098612,0,0,0,0,0,0,0,85.7,9.205738,1.098612,3.751848,1 +11,2,0,1,3,229096,0,9953.079,40.3217,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.1,13.8,0,85.7,0,0,0,0,1.098612,0,0,0,0,0,0,0,85.7,9.205738,1.098612,,0 +11,2,0,1,4,229096,0,9953.079,41.3217,0,12,1,20.96774,5.233871,0,0,0,26.20161,0,0,0,1,0,3,77.1,13.8,0,85.7,0,0,0,0,1.098612,0,0,0,0,0,0,0,85.7,9.205738,1.098612,3.265821,1 +11,2,0,1,5,229096,0,9953.079,42.3217,0,12,1,21.85792,13.62477,46.49909,0,0,81.98179,0,0,0,1,1,3,77.1,13.8,0,85.7,0,0,0,0,1.098612,0,0,0,0,0,0,0,85.7,9.205738,1.098612,4.406497,1 +11,2,0,1,1,229097,0,9953.079,15.31006,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,56.4,10.3,0,29.5,0,0,1,1,1.386294,0,0,0,0,0,0,0,29.5,9.205738,1.386294,,0 +11,2,0,1,1,229105,0,6694.428,57.75496,1,12,1,6.24025,2.178887,7.654706,0,0,16.07384,0,0,0,1,0,1,86.7,44.8,0,69.3,0,0,0,0,0,0,0,0,0,0,1,0,69.3,8.80918,0,2.777193,1 +11,2,0,1,2,229105,0,6694.428,58.75496,1,12,1,93.40659,0,110.3297,0,0,203.7363,0,0,0,3,0,1,86.7,44.8,0,69.3,0,0,0,0,0,0,0,0,0,0,1,0,69.3,8.80918,0,5.316826,1 +11,2,0,1,3,229105,0,6694.428,59.75496,1,12,1,204.1001,7.295874,205.3336,0,0,416.7296,0,0,0,3,0,1,86.7,44.8,0,69.3,0,0,0,0,0,0,0,0,0,0,1,0,69.3,8.80918,0,6.032437,1 +7,2,25,0,1,229107,0,4496.188,25.12252,0,14,1,19.11076,0,0,0,0,19.11076,0,0,0,0,0,1,79.8,6.9,0,90.9,1000,0,0,0,0,0,0,3.258096,8.294049,0,0,0,90.9,8.411207,0,2.950252,1 +7,2,25,0,2,229107,0,4496.188,26.12252,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,79.8,6.9,0,90.9,1000,0,0,0,0,0,0,3.258096,8.294049,0,0,0,90.9,8.411207,0,,0 +7,2,25,0,3,229107,0,4496.188,27.12252,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,79.8,6.9,0,90.9,1000,0,0,0,0,0,0,3.258096,8.294049,0,0,0,90.9,8.411207,0,,0 +11,2,0,0,1,229151,0,3083.284,51.78097,1,9,1,141.3157,16.90068,43.26053,0,0,201.4769,0,0,0,9,0,4,60.1,20.7,1,54.8,0,0,0,0,1.386294,0,0,0,0,1,0,0,54.8,8.034075,1.386294,5.305675,1 +11,2,0,0,2,229151,0,3083.284,52.78097,1,9,1,142.6183,31.70091,30.00478,0,0,204.3239,0,0,0,18,0,4,60.1,20.7,1,54.8,0,0,0,0,1.386294,0,0,0,0,1,0,0,54.8,8.034075,1.386294,5.319707,1 +11,2,0,0,3,229151,0,3083.284,53.78097,1,9,1,30.28973,5.00439,43.27919,0,0,78.57331,0,0,0,3,0,3,60.1,20.7,1,54.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,54.8,8.034075,1.098612,4.364032,1 +11,2,0,0,4,229151,0,3083.284,54.78097,1,9,1,4.786598,2.094136,0,0,0,6.880734,0,0,0,0,1,3,60.1,20.7,1,54.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,54.8,8.034075,1.098612,1.928725,1 +11,2,0,0,5,229151,0,3083.284,55.78097,1,9,1,27.5562,0,37.81001,0,0,65.36621,0,0,0,1,1,3,60.1,20.7,1,54.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,54.8,8.034075,1.098612,4.180006,1 +11,2,0,0,1,229152,0,3083.284,13.07871,0,9,1,106.5523,10.73843,6.656266,0,0,123.947,0,0,0,9,0,4,55,11.84267,0,70.4,0,0,1,0,1.386294,0,0,0,0,1,0,0,70.4,8.034075,1.386294,4.819854,1 +11,2,0,0,2,229152,0,3083.284,14.07871,0,9,1,28.66698,0,0,17.08075,0,28.66698,0,0,1,3,0,4,55,11.84267,0,70.4,0,0,1,0,1.386294,0,0,0,0,1,0,0,70.4,8.034075,1.386294,3.355746,1 +11,2,0,0,1,229153,0,3083.284,15.46612,0,9,1,15.91264,3.380135,0,0,0,19.29277,0,0,0,2,0,4,68.1,6.9,0,59.1,0,0,1,0,1.386294,0,0,0,0,1,0,0,59.1,8.034075,1.386294,2.959731,1 +11,2,0,0,2,229153,0,3083.284,16.46612,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,68.1,6.9,0,59.1,0,0,1,0,1.386294,0,0,0,0,1,0,0,59.1,8.034075,1.386294,,0 +11,2,0,0,3,229153,0,3083.284,17.46612,0,9,1,6.584723,9.745391,0,0,0,16.33011,0,0,0,1,0,3,68.1,6.9,0,59.1,0,0,1,0,1.098612,0,0,0,0,1,0,0,59.1,8.034075,1.098612,2.793011,1 +11,2,0,0,4,229153,0,3083.284,18.46612,0,9,1,76.785,4.527324,.4188273,0,0,81.73116,0,0,0,4,0,3,68.1,6.9,0,59.1,0,0,0,0,1.098612,0,0,0,0,1,0,0,59.1,8.034075,1.098612,4.403435,1 +11,2,0,0,5,229153,0,3083.284,19.46612,0,9,1,23.98477,4.496012,0,0,0,28.48078,0,0,0,2,0,3,68.1,6.9,0,59.1,0,0,0,0,1.098612,0,0,0,0,1,0,0,59.1,8.034075,1.098612,3.34923,1 +11,2,0,0,1,229154,0,3083.284,17.85079,0,9,1,35.72543,3.900156,0,0,0,39.62558,0,0,0,4,0,4,70.7,6.9,1,58,0,0,1,0,1.386294,0,0,0,0,1,0,0,58,8.034075,1.386294,3.679475,1 +11,2,0,0,2,229154,0,3083.284,18.85079,0,9,1,17.67797,0,0,0,0,17.67797,0,0,0,2,0,4,70.7,6.9,1,58,0,0,0,0,1.386294,0,0,0,0,1,0,0,58,8.034075,1.386294,2.872319,1 +11,2,0,0,3,229154,0,3083.284,19.85079,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,70.7,6.9,1,58,0,0,0,0,1.098612,0,0,0,0,1,0,0,58,8.034075,1.098612,,0 +11,2,0,0,4,229154,0,3083.284,20.85079,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,70.7,6.9,1,58,0,0,0,0,1.098612,0,0,0,0,1,0,0,58,8.034075,1.098612,,0 +11,2,0,0,5,229154,0,3083.284,21.85079,0,9,1,0,2.628716,0,0,0,2.628716,0,0,0,0,0,3,70.7,6.9,1,58,0,0,0,0,1.098612,0,0,0,0,1,0,0,58,8.034075,1.098612,.9664957,1 +11,2,0,0,1,229163,0,12450.44,33.59069,0,19,1,0,0,0,0,0,0,0,0,0,0,0,1,68.6,6.9,1,60.2,0,141,0,0,0,4.94876,0,0,0,1,0,0,60.2,9.429591,0,,0 +11,2,0,0,2,229163,0,12450.44,34.59069,0,19,1,16.72241,0,32.00669,0,0,48.7291,0,0,0,1,0,1,68.6,6.9,1,60.2,0,141,0,0,0,4.94876,0,0,0,1,0,0,60.2,9.429591,0,3.886276,1 +11,2,0,0,3,229163,0,12450.44,35.59069,0,19,1,50.92186,0,0,0,0,50.92186,0,0,0,2,0,1,68.6,6.9,1,60.2,0,141,0,0,0,4.94876,0,0,0,1,0,0,60.2,9.429591,0,3.930292,1 +11,2,0,0,4,229163,0,12450.44,36.59069,0,19,1,0,0,0,0,0,0,0,0,0,0,0,1,68.6,6.9,1,60.2,0,141,0,0,0,4.94876,0,0,0,1,0,0,60.2,9.429591,0,,0 +11,2,0,0,5,229163,0,12450.44,37.59069,0,19,1,40.24656,0,19.5794,0,0,59.82596,0,0,0,1,1,1,68.6,6.9,1,60.2,0,141,0,0,0,4.94876,0,0,0,1,0,0,60.2,9.429591,0,4.09144,1 +11,2,0,1,1,229173,0,5309.091,28.44079,0,21,1,0,0,0,0,0,0,0,0,0,0,0,4,79.3,0,0,73.9,0,0,0,0,1.386294,0,0,0,0,0,0,0,73.9,8.577364,1.386294,,0 +11,2,0,1,2,229173,0,5309.091,29.44079,0,21,1,0,0,0,0,0,0,0,0,0,0,0,4,79.3,0,0,73.9,0,0,0,0,1.386294,0,0,0,0,0,0,0,73.9,8.577364,1.386294,,0 +11,2,0,1,3,229173,0,5309.091,30.44079,0,21,1,0,0,0,0,0,0,0,0,0,0,0,5,79.3,0,0,73.9,0,0,0,0,1.609438,0,0,0,0,0,0,0,73.9,8.577364,1.609438,,0 +11,2,0,1,1,229174,0,5309.091,2.67488,1,16,1,32.02753,6.193753,0,0,0,38.22128,0,0,0,2,0,4,81.35272,11.84267,0,63,0,0,1,1,1.386294,0,0,0,0,0,0,0,63,8.577364,1.386294,3.643393,1 +11,2,0,1,2,229174,0,5309.091,3.67488,1,16,1,8.204633,3.78861,0,0,0,11.99324,0,0,0,1,0,4,81.35272,11.84267,0,63,0,0,1,1,1.386294,0,0,0,0,0,0,0,63,8.577364,1.386294,2.484344,1 +11,2,0,1,3,229174,0,5309.091,4.67488,1,16,1,25.36716,0,0,0,0,25.36716,0,0,0,1,0,5,81.35272,11.84267,0,63,0,0,1,1,1.609438,0,0,0,0,0,0,0,63,8.577364,1.609438,3.233455,1 +11,2,0,1,1,229175,0,5309.091,4.186174,1,16,1,15.88142,0,0,0,0,15.88142,0,0,0,1,0,4,81.35272,11.84267,0,77.8,0,0,1,1,1.386294,0,0,0,0,0,0,0,77.8,8.577364,1.386294,2.76515,1 +11,2,0,1,2,229175,0,5309.091,5.186174,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,77.8,0,0,1,1,1.386294,0,0,0,0,0,0,0,77.8,8.577364,1.386294,,0 +11,2,0,1,3,229175,0,5309.091,6.186174,1,16,1,23.14197,0,0,0,0,23.14197,0,0,0,1,0,5,81.35272,11.84267,0,77.8,0,0,1,1,1.609438,0,0,0,0,0,0,0,77.8,8.577364,1.609438,3.141648,1 +11,2,0,1,1,229176,0,5309.091,30.32717,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,83,10.3,0,75,0,0,0,0,1.386294,0,0,0,0,0,0,0,75,8.577364,1.386294,,0 +11,2,0,1,2,229176,0,5309.091,31.32717,1,16,1,0,0,0,0,796.6216,796.6216,1,0,0,0,0,4,83,10.3,0,75,0,0,0,0,1.386294,0,0,0,0,0,0,0,75,8.577364,1.386294,6.68038,1 +11,2,0,1,3,229176,0,5309.091,32.32717,1,16,1,0,6.11927,0,0,0,6.11927,0,0,0,0,0,5,83,10.3,0,75,0,0,0,0,1.609438,0,0,0,0,0,0,0,75,8.577364,1.609438,1.811443,1 +11,2,0,1,1,229201,0,4706.158,45.98768,1,18,1,16.95268,0,11.96048,0,0,28.91316,0,0,0,0,1,2,67.6,17.2,0,76.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.1,8.45684,.6931472,3.364297,1 +11,2,0,1,2,229201,0,4706.158,46.98768,1,18,1,0,0,0,0,0,0,0,0,0,0,0,2,67.6,17.2,0,76.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.1,8.45684,.6931472,,0 +11,2,0,1,3,229201,0,4706.158,47.98768,1,18,1,17.8885,2.721686,22.82704,0,0,43.43723,0,0,0,1,1,2,67.6,17.2,0,76.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.1,8.45684,.6931472,3.771317,1 +11,2,0,1,4,229201,0,4706.158,48.98768,1,18,1,0,0,0,0,0,0,0,0,0,0,0,2,67.6,17.2,0,76.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.1,8.45684,.6931472,,0 +11,2,0,1,5,229201,0,4706.158,49.98768,1,18,1,42.8934,0,0,377.0848,0,42.8934,0,0,20,2,0,2,67.6,17.2,0,76.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.1,8.45684,.6931472,3.758718,1 +11,2,0,1,1,229202,0,4706.158,14.86927,1,18,1,312.1165,2.704108,0,18.20073,1199.61,1514.431,1,0,2,9,1,2,62.2,6.9,1,63.6,0,0,1,1,.6931472,0,0,0,0,1,0,0,63.6,8.45684,.6931472,7.322795,1 +11,2,0,1,2,229202,0,4706.158,15.86927,1,18,1,86.71763,16.48352,0,869.5652,0,103.2011,0,0,51,11,0,2,62.2,6.9,1,63.6,0,0,1,1,.6931472,0,0,0,0,1,0,0,63.6,8.45684,.6931472,4.63668,1 +11,2,0,1,3,229202,0,4706.158,16.86927,1,18,1,57.94557,0,32.63828,190.957,0,90.58385,0,0,7,6,0,2,62.2,6.9,1,63.6,0,0,1,1,.6931472,0,0,0,0,1,0,0,63.6,8.45684,.6931472,4.506276,1 +11,2,0,1,4,229202,0,4706.158,17.86927,1,18,1,113.6817,18.12924,0,111.6873,0,131.8109,0,0,8,10,1,2,62.2,6.9,1,63.6,0,0,1,1,.6931472,0,0,0,0,1,0,0,63.6,8.45684,.6931472,4.881369,1 +11,2,0,1,5,229202,0,4706.158,18.86927,1,18,1,34.26396,0,0,621.8274,0,34.26396,0,0,49,5,0,2,62.2,6.9,1,63.6,0,0,0,0,.6931472,0,0,0,0,1,0,0,63.6,8.45684,.6931472,3.534094,1 +13,2,0,1,1,229204,0,6144.868,32.66804,0,11,1,342.1328,40.3816,0,0,243.2305,625.7449,1,0,0,8,10,3,93.1,6.9,0,72.7,450,872.4,0,0,1.098612,6.771248,1,4.564348,6.160541,0,0,0,72.7,8.723536,1.098612,6.438943,1 +13,2,0,1,2,229204,0,6144.868,33.66804,0,11,1,89.86064,17.9481,0,0,0,107.8087,0,0,0,5,0,3,93.1,6.9,0,72.7,450,872.4,0,0,1.098612,6.771248,1,4.564348,6.160541,0,0,0,72.7,8.723536,1.098612,4.680359,1 +13,2,0,1,3,229204,0,6144.868,34.66804,0,11,1,24.6696,29.09692,0,0,0,53.76652,0,0,0,3,0,3,93.1,6.9,0,72.7,450,872.4,0,0,1.098612,6.771248,1,4.564348,6.160541,0,0,0,72.7,8.723536,1.098612,3.984651,1 +13,2,0,1,1,229205,0,6144.868,30.57632,1,12,1,79.45635,45.954,0,2.613696,0,125.4103,0,0,1,8,0,3,58.5,10.3,1,61.4,450,872.4,0,0,1.098612,6.771248,1,4.564348,6.160541,1,0,0,61.4,8.723536,1.098612,4.831591,1 +13,2,0,1,2,229205,0,6144.868,31.57632,1,12,1,43.96925,50.84575,0,0,0,94.81499,0,0,0,5,0,3,58.5,10.3,1,61.4,450,872.4,0,0,1.098612,6.771248,1,4.564348,6.160541,1,0,0,61.4,8.723536,1.098612,4.551928,1 +13,2,0,1,3,229205,0,6144.868,32.57632,1,12,1,80.79295,56.47137,0,0,0,137.2643,0,0,0,8,0,3,58.5,10.3,1,61.4,450,872.4,0,0,1.098612,6.771248,1,4.564348,6.160541,1,0,0,61.4,8.723536,1.098612,4.921908,1 +13,2,0,1,1,229206,0,6144.868,5.768651,0,12,1,6.27287,4.626242,0,0,0,10.89911,0,0,0,2,0,3,63.3,11.84267,0,85.2,450,872.4,1,0,1.098612,6.771248,1,4.564348,6.160541,0,0,0,85.2,8.723536,1.098612,2.388681,1 +13,2,0,1,2,229206,0,6144.868,6.768651,0,12,1,2.883229,5.372417,0,0,0,8.255647,0,0,0,1,0,3,63.3,11.84267,0,85.2,450,872.4,1,0,1.098612,6.771248,1,4.564348,6.160541,0,0,0,85.2,8.723536,1.098612,2.110897,1 +13,2,0,1,3,229206,0,6144.868,7.768651,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,63.3,11.84267,0,85.2,450,872.4,1,0,1.098612,6.771248,1,4.564348,6.160541,0,0,0,85.2,8.723536,1.098612,,0 +15,2,95,1,1,229221,0,12526.1,18.02601,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,78.2,0,0,76.1,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,76.1,9.43565,1.609438,,0 +15,2,95,1,2,229221,0,12526.1,19.02601,0,11,1,7.722008,0,0,0,0,7.722008,0,0,0,1,0,5,78.2,0,0,76.1,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,76.1,9.43565,1.609438,2.044074,1 +15,2,95,1,3,229221,0,12526.1,20.02601,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,78.2,0,0,76.1,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,76.1,9.43565,1.609438,,0 +15,2,95,1,4,229221,0,12526.1,21.02601,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,78.2,0,0,76.1,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,76.1,9.43565,1.609438,,0 +15,2,95,1,5,229221,0,12526.1,22.02601,0,11,1,10.26393,0,0,0,0,10.26393,0,0,0,1,0,5,78.2,0,0,76.1,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,76.1,9.43565,1.609438,2.328636,1 +15,2,95,1,1,229222,0,12526.1,43.34839,0,14,1,13.7639,0,0,0,0,13.7639,0,0,0,2,0,5,98.4,10.3,0,98.9,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,98.9,9.43565,1.609438,2.622049,1 +15,2,95,1,2,229222,0,12526.1,44.34839,0,14,1,16.40927,0,0,0,0,16.40927,0,0,0,1,0,5,98.4,10.3,0,98.9,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,98.9,9.43565,1.609438,2.797846,1 +15,2,95,1,3,229222,0,12526.1,45.34839,0,14,1,0,0,0,0,4374.909,4374.909,1,0,0,0,0,5,98.4,10.3,0,98.9,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,98.9,9.43565,1.609438,8.383641,1 +15,2,95,1,4,229222,0,12526.1,46.34839,0,14,1,47.17365,0,41.08987,0,30.5002,118.7637,0,0,0,0,1,5,98.4,10.3,0,98.9,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,98.9,9.43565,1.609438,4.777136,1 +15,2,95,1,5,229222,0,12526.1,47.34839,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,98.4,10.3,0,98.9,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,98.9,9.43565,1.609438,,0 +15,2,95,1,1,229223,0,12526.1,38.52156,1,12,1,14.02859,0,0,0,0,14.02859,0,0,0,1,0,5,90.1,6.9,0,81.8,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,81.8,9.43565,1.609438,2.641097,1 +15,2,95,1,2,229223,0,12526.1,39.52156,1,12,1,7.722008,0,0,0,0,7.722008,0,0,0,1,0,5,90.1,6.9,0,81.8,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,81.8,9.43565,1.609438,2.044074,1 +15,2,95,1,3,229223,0,12526.1,40.52156,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,90.1,6.9,0,81.8,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,81.8,9.43565,1.609438,,0 +15,2,95,1,4,229223,0,12526.1,41.52156,1,12,1,87.43391,0,34.90443,0,0,122.3383,0,0,0,2,1,5,90.1,6.9,0,81.8,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,81.8,9.43565,1.609438,4.80679,1 +15,2,95,1,5,229223,0,12526.1,42.52156,1,12,1,11.18035,0,0,0,0,11.18035,0,0,0,1,0,5,90.1,6.9,0,81.8,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,81.8,9.43565,1.609438,2.414158,1 +15,2,95,1,1,229224,0,12526.1,13.21013,0,12,1,63.18158,13.34039,0,0,0,76.52197,0,0,0,8,0,5,86.7,11.84267,0,74.1,1000,0,1,0,1.609438,0,0,4.564348,6.959049,0,0,0,74.1,9.43565,1.609438,4.337578,1 +15,2,95,1,2,229224,0,12526.1,14.21013,0,12,1,50.57915,0,0,0,0,50.57915,0,0,0,2,0,5,86.7,11.84267,0,74.1,1000,0,1,0,1.609438,0,0,4.564348,6.959049,0,0,0,74.1,9.43565,1.609438,3.923539,1 +15,2,95,1,3,229224,0,12526.1,15.21013,0,12,1,61.41522,0,.6675568,0,0,62.08278,0,0,0,4,0,5,86.7,11.84267,0,74.1,1000,0,1,0,1.609438,0,0,4.564348,6.959049,0,0,0,74.1,9.43565,1.609438,4.128469,1 +15,2,95,1,4,229224,0,12526.1,16.21013,0,12,1,70.76048,0,10.06507,0,0,80.82554,0,0,0,6,0,5,86.7,11.84267,0,74.1,1000,0,1,0,1.609438,0,0,4.564348,6.959049,0,0,0,74.1,9.43565,1.609438,4.392293,1 +15,2,95,1,5,229224,0,12526.1,17.21013,0,12,1,34.27419,0,0,0,0,34.27419,0,0,0,3,0,5,86.7,11.84267,0,74.1,1000,0,1,0,1.609438,0,0,4.564348,6.959049,0,0,0,74.1,9.43565,1.609438,3.534393,1 +15,2,95,1,1,229225,0,12526.1,15.83573,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83,0,0,69.3,1000,0,1,1,1.609438,0,0,4.564348,6.959049,0,0,0,69.3,9.43565,1.609438,,0 +15,2,95,1,2,229225,0,12526.1,16.83573,1,12,1,6.756757,1.906371,0,0,0,8.663127,0,0,0,1,0,5,83,0,0,69.3,1000,0,1,1,1.609438,0,0,4.564348,6.959049,0,0,0,69.3,9.43565,1.609438,2.159076,1 +15,2,95,1,3,229225,0,12526.1,17.83573,1,12,1,9.790833,0,0,0,0,9.790833,0,0,0,1,0,5,83,0,0,69.3,1000,0,1,1,1.609438,0,0,4.564348,6.959049,0,0,0,69.3,9.43565,1.609438,2.281446,1 +15,2,95,1,4,229225,0,12526.1,18.83573,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83,0,0,69.3,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,69.3,9.43565,1.609438,,0 +15,2,95,1,5,229225,0,12526.1,19.83573,1,12,1,16.4956,0,0,0,0,16.4956,0,0,0,1,0,5,83,0,0,69.3,1000,0,0,0,1.609438,0,0,4.564348,6.959049,0,0,0,69.3,9.43565,1.609438,2.803094,1 +7,2,25,1,1,229226,0,5918.475,27.13484,1,16,1,71.50286,2.74051,39.77639,0,0,114.0198,0,0,0,5,0,1,62.8,13.8,0,93.2,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,0,0,93.2,8.686003,0,4.736372,1 +7,2,25,1,2,229226,0,5918.475,28.13484,1,16,1,59.34066,3.10559,0,0,0,62.44625,0,0,0,5,0,1,62.8,13.8,0,93.2,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,0,0,93.2,8.686003,0,4.134306,1 +7,2,25,1,3,229226,0,5918.475,29.13484,1,16,1,84.3942,18.51185,0,0,0,102.9061,0,0,0,5,0,1,62.8,13.8,0,93.2,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,0,0,0,93.2,8.686003,0,4.633817,1 +13,2,0,1,1,229230,0,8560.704,24.22998,1,11,1,380.1352,14.31097,0,0,0,394.4462,0,0,0,10,1,2,45.7,13.8,0,50,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,50,9.055055,.6931472,5.977483,1 +13,2,0,1,2,229230,0,8560.704,25.22998,1,11,1,21.61968,18.74821,0,0,844.6727,885.0406,1,0,0,0,0,3,45.7,13.8,0,50,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,50,9.055055,1.098612,6.785634,1 +13,2,0,1,3,229230,0,8560.704,26.22998,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,45.7,13.8,0,50,300,300,0,0,1.386294,5.703783,1,4.564348,5.755076,0,0,0,50,9.055055,1.386294,,0 +13,2,0,1,1,229231,0,8560.704,27.06366,0,10,1,74.10297,0,34.36818,0,0,108.4711,0,0,0,1,1,2,61.2,10.3,1,76.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,76.1,9.055055,.6931472,4.686484,1 +13,2,0,1,2,229231,0,8560.704,28.06366,0,10,1,5.733397,0,0,0,0,5.733397,0,0,0,0,1,3,61.2,10.3,1,76.1,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,1,0,0,76.1,9.055055,1.098612,1.746308,1 +13,2,0,1,3,229231,0,8560.704,29.06366,0,10,1,39.09131,0,0,0,0,39.09131,0,0,0,1,0,4,61.2,10.3,1,76.1,300,300,0,0,1.386294,5.703783,1,4.564348,5.755076,1,0,0,76.1,9.055055,1.386294,3.6659,1 +7,2,25,1,1,229246,0,6148.974,29.84531,1,17,1,110.7729,19.53415,43.41451,0,0,173.7215,0,0,0,2,0,1,55.9,20.7,0,43.2,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,43.2,8.724203,0,5.157454,1 +7,2,25,1,2,229246,0,6148.974,30.84531,1,17,1,104.7297,11.70367,0,542.9537,0,116.4334,0,0,26,1,0,1,55.9,20.7,0,43.2,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,43.2,8.724203,0,4.757319,1 +7,2,25,1,3,229246,0,6148.974,31.84531,1,17,1,35.38051,27.17401,0,872.2742,0,62.55452,0,0,51,3,0,1,55.9,20.7,0,43.2,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,43.2,8.724203,0,4.136038,1 +5,2,25,0,1,229272,0,4540.176,53.82888,0,16,1,206.9878,0,43.19217,0,1410.386,1660.566,1,0,0,5,1,4,73.9,17.2,0,78.4,285,675.6,0,0,1.386294,6.515601,0,3.258096,7.038784,0,0,0,78.4,8.420941,1.386294,7.414914,1 +5,2,25,0,2,229272,0,4540.176,54.82888,0,16,1,84.94209,0,0,0,0,84.94209,0,0,0,1,0,4,73.9,17.2,0,78.4,285,675.6,0,0,1.386294,6.515601,0,3.258096,7.038784,0,0,0,78.4,8.420941,1.386294,4.44197,1 +5,2,25,0,3,229272,0,4540.176,55.82888,0,16,1,73.87628,6.653316,46.40855,0,0,126.9381,0,0,0,2,1,3,73.9,17.2,0,78.4,285,675.6,0,0,1.098612,6.515601,0,3.258096,7.038784,0,0,0,78.4,8.420941,1.098612,4.8437,1 +5,2,25,0,4,229272,0,4540.176,56.82888,0,16,1,49.939,0,0,0,0,49.939,0,0,0,2,0,3,73.9,17.2,0,78.4,285,675.6,0,0,1.098612,6.515601,0,3.258096,7.038784,0,0,0,78.4,8.420941,1.098612,3.910802,1 +5,2,25,0,5,229272,0,4540.176,57.82888,0,16,1,74.04692,36.6349,0,0,300.8798,411.5616,1,0,0,6,0,3,73.9,17.2,0,78.4,285,675.6,0,0,1.098612,6.515601,0,3.258096,7.038784,0,0,0,78.4,8.420941,1.098612,6.019958,1 +5,2,25,0,1,229273,0,4540.176,14.72964,1,12,1,10.58761,0,31.54579,0,0,42.1334,0,0,0,0,1,4,70.7,3.4,0,71.6,285,675.6,1,1,1.386294,6.515601,0,3.258096,7.038784,0,0,0,71.6,8.420941,1.386294,3.740841,1 +5,2,25,0,2,229273,0,4540.176,15.72964,1,12,1,26.30309,0,27.70753,0,0,54.01062,0,0,0,1,1,4,70.7,3.4,0,71.6,285,675.6,1,1,1.386294,6.515601,0,3.258096,7.038784,0,0,0,71.6,8.420941,1.386294,3.989181,1 +5,2,25,0,3,229273,0,4540.176,16.72964,1,12,1,15.57632,0,0,0,0,15.57632,0,0,0,0,1,3,70.7,3.4,0,71.6,285,675.6,1,1,1.098612,6.515601,0,3.258096,7.038784,0,0,0,71.6,8.420941,1.098612,2.745752,1 +5,2,25,0,4,229273,0,4540.176,17.72964,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,70.7,3.4,0,71.6,285,675.6,1,1,1.098612,6.515601,0,3.258096,7.038784,0,0,0,71.6,8.420941,1.098612,,0 +5,2,25,0,5,229273,0,4540.176,18.72964,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,70.7,3.4,0,71.6,285,675.6,0,0,1.098612,6.515601,0,3.258096,7.038784,0,0,0,71.6,8.420941,1.098612,,0 +5,2,25,0,1,229274,0,4540.176,50.71321,1,12,1,265.6167,61.49815,45.83907,0,488.4066,861.3605,1,0,0,11,1,4,80.9,10.3,0,54.5,285,675.6,0,0,1.386294,6.515601,0,3.258096,7.038784,0,0,0,54.5,8.420941,1.386294,6.758513,1 +5,2,25,0,2,229274,0,4540.176,51.71321,1,12,.8739726,809.9421,113.6052,14.6139,0,3745.27,4683.432,3,0,0,18,7,4,80.9,10.3,0,54.5,285,675.6,0,0,1.386294,6.515601,0,3.258096,7.038784,0,0,0,54.5,8.420941,1.386294,8.451786,1 +5,2,25,0,1,229275,0,4540.176,19.15674,0,12,1,5.293806,3.541556,0,0,0,8.835362,0,0,0,1,0,4,57.4,10.3,0,72.7,285,675.6,0,0,1.386294,6.515601,0,3.258096,7.038784,0,0,0,72.7,8.420941,1.386294,2.178762,1 +5,2,25,0,2,229275,0,4540.176,20.15674,0,12,1,102.7992,3.185328,0,0,840.3861,946.3707,1,0,0,8,0,4,57.4,10.3,0,72.7,285,675.6,0,0,1.386294,6.515601,0,3.258096,7.038784,0,0,0,72.7,8.420941,1.386294,6.852634,1 +5,2,25,0,3,229275,0,4540.176,21.15674,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,57.4,10.3,0,72.7,285,675.6,0,0,1.098612,6.515601,0,3.258096,7.038784,0,0,0,72.7,8.420941,1.098612,,0 +5,2,25,0,4,229275,0,4540.176,22.15674,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,57.4,10.3,0,72.7,285,675.6,0,0,1.098612,6.515601,0,3.258096,7.038784,0,0,0,72.7,8.420941,1.098612,,0 +5,2,25,0,5,229275,0,4540.176,23.15674,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,57.4,10.3,0,72.7,285,675.6,0,0,1.098612,6.515601,0,3.258096,7.038784,0,0,0,72.7,8.420941,1.098612,,0 +6,2,25,1,1,229302,0,7550.146,5.494866,0,11,1,13.59122,0,0,0,0,13.59122,0,0,0,1,0,5,91.7,11.84267,0,70.4,911.1,911.1,1,0,1.609438,6.814652,0,3.258096,8.200947,1,0,0,70.4,8.929455,1.609438,2.609424,1 +6,2,25,1,2,229302,0,7550.146,6.494866,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,91.7,11.84267,0,70.4,911.1,911.1,1,0,1.609438,6.814652,0,3.258096,8.200947,1,0,0,70.4,8.929455,1.609438,,0 +6,2,25,1,3,229302,0,7550.146,7.494866,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,91.7,11.84267,0,70.4,911.1,911.1,1,0,1.609438,6.814652,0,3.258096,8.200947,1,0,0,70.4,8.929455,1.609438,,0 +6,2,25,1,1,229303,0,7550.146,7.227926,1,11,1,14.6367,0,0,0,0,14.6367,0,0,0,1,0,5,86.7,11.84267,0,66.7,911.1,911.1,1,1,1.609438,6.814652,0,3.258096,8.200947,1,0,0,66.7,8.929455,1.609438,2.683532,1 +6,2,25,1,2,229303,0,7550.146,8.227926,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,11.84267,0,66.7,911.1,911.1,1,1,1.609438,6.814652,0,3.258096,8.200947,1,0,0,66.7,8.929455,1.609438,,0 +6,2,25,1,3,229303,0,7550.146,9.227926,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,11.84267,0,66.7,911.1,911.1,1,1,1.609438,6.814652,0,3.258096,8.200947,1,0,0,66.7,8.929455,1.609438,,0 +6,2,25,1,1,229304,0,7550.146,35.63586,0,8,1,69.00157,5.096707,0,0,0,74.09827,0,0,0,3,0,5,83.5,17.2,0,78.4,911.1,911.1,0,0,1.609438,6.814652,0,3.258096,8.200947,1,0,0,78.4,8.929455,1.609438,4.305392,1 +6,2,25,1,2,229304,0,7550.146,36.63586,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,83.5,17.2,0,78.4,911.1,911.1,0,0,1.609438,6.814652,0,3.258096,8.200947,1,0,0,78.4,8.929455,1.609438,,0 +6,2,25,1,3,229304,0,7550.146,37.63586,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,83.5,17.2,0,78.4,911.1,911.1,0,0,1.609438,6.814652,0,3.258096,8.200947,1,0,0,78.4,8.929455,1.609438,,0 +6,2,25,1,1,229305,0,7550.146,35.63039,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,85.1,10.3,0,72.7,911.1,911.1,0,0,1.609438,6.814652,0,3.258096,8.200947,1,0,0,72.7,8.929455,1.609438,,0 +6,2,25,1,2,229305,0,7550.146,36.63039,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,85.1,10.3,0,72.7,911.1,911.1,0,0,1.609438,6.814652,0,3.258096,8.200947,1,0,0,72.7,8.929455,1.609438,,0 +6,2,25,1,3,229305,0,7550.146,37.63039,1,11,1,11.01322,0,0,0,0,11.01322,0,0,0,0,1,5,85.1,10.3,0,72.7,911.1,911.1,0,0,1.609438,6.814652,0,3.258096,8.200947,1,0,0,72.7,8.929455,1.609438,2.399096,1 +6,2,25,1,1,229306,0,7550.146,10.13279,0,11,1,24.046,0,0,0,0,24.046,0,0,0,2,0,5,80,11.84267,0,66.7,911.1,911.1,1,0,1.609438,6.814652,0,3.258096,8.200947,1,0,0,66.7,8.929455,1.609438,3.179969,1 +6,2,25,1,2,229306,0,7550.146,11.13279,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,80,11.84267,0,66.7,911.1,911.1,1,0,1.609438,6.814652,0,3.258096,8.200947,1,0,0,66.7,8.929455,1.609438,,0 +6,2,25,1,3,229306,0,7550.146,12.13279,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,80,11.84267,0,66.7,911.1,911.1,1,0,1.609438,6.814652,0,3.258096,8.200947,1,0,0,66.7,8.929455,1.609438,,0 +5,2,25,1,1,229311,0,6978.299,27.78645,1,16,1,29.79613,7.966545,0,0,0,37.76268,0,0,0,1,0,4,73.4,13.8,0,81.8,527.5,722.16,0,0,1.386294,6.582247,0,3.258096,7.654443,1,0,0,81.8,8.850704,1.386294,3.631321,1 +5,2,25,1,2,229311,0,6978.299,28.78645,1,16,1,0,5.992311,0,0,0,5.992311,0,0,0,0,0,4,73.4,13.8,0,81.8,527.5,722.16,0,0,1.386294,6.582247,0,3.258096,7.654443,1,0,0,81.8,8.850704,1.386294,1.790477,1 +5,2,25,1,3,229311,0,6978.299,29.78645,1,16,1,27.7533,11.34802,0,0,843.0176,882.119,1,0,0,2,0,4,73.4,13.8,0,81.8,527.5,722.16,0,0,1.386294,6.582247,0,3.258096,7.654443,1,0,0,81.8,8.850704,1.386294,6.782327,1 +5,2,25,1,1,229312,0,6978.299,27.23066,0,16,1,99.58181,40.1725,0,0,481.1814,620.9357,1,0,0,8,0,4,94,0,0,76.2,527.5,722.16,0,0,1.386294,6.582247,0,3.258096,7.654443,0,0,0,76.2,8.850704,1.386294,6.431228,1 +5,2,25,1,2,229312,0,6978.299,28.23066,0,16,1,62.9505,11.19654,0,0,0,74.14704,0,0,0,4,0,4,94,0,0,76.2,527.5,722.16,0,0,1.386294,6.582247,0,3.258096,7.654443,0,0,0,76.2,8.850704,1.386294,4.30605,1 +5,2,25,1,3,229312,0,6978.299,29.23066,0,16,1,98.78854,1.762115,0,0,0,100.5507,0,0,0,4,0,4,94,0,0,76.2,527.5,722.16,0,0,1.386294,6.582247,0,3.258096,7.654443,0,0,0,76.2,8.850704,1.386294,4.610662,1 +5,2,25,1,1,229313,0,6978.299,3.912389,0,16,1,94.35442,14.30737,0,0,259.0695,367.7313,1,0,0,8,0,4,81.35272,11.84267,0,48.1,527.5,722.16,1,0,1.386294,6.582247,0,3.258096,7.654443,0,0,0,48.1,8.850704,1.386294,5.907352,1 +5,2,25,1,2,229313,0,6978.299,4.912389,0,16,1,72.56127,15.46372,0,0,0,88.02499,0,0,0,7,0,4,81.35272,11.84267,0,48.1,527.5,722.16,1,0,1.386294,6.582247,0,3.258096,7.654443,0,0,0,48.1,8.850704,1.386294,4.477621,1 +5,2,25,1,3,229313,0,6978.299,5.912389,0,16,1,147.2467,39.36123,0,0,245.7489,432.3568,1,0,0,10,0,4,81.35272,11.84267,0,48.1,527.5,722.16,1,0,1.386294,6.582247,0,3.258096,7.654443,0,0,0,48.1,8.850704,1.386294,6.069251,1 +5,2,25,1,1,229314,0,6978.299,.843258,0,16,1,155.2535,23.86304,0,5.227392,0,179.1166,0,0,1,11,0,4,81.35272,11.84267,0,51.9,527.5,722.16,1,0,1.386294,6.582247,0,3.258096,7.654443,0,0,0,51.9,8.850704,1.386294,5.188037,1 +5,2,25,1,2,229314,0,6978.299,1.843258,0,16,1,88.2989,36.21816,0,0,0,124.5171,0,0,0,10,0,4,81.35272,11.84267,0,51.9,527.5,722.16,1,0,1.386294,6.582247,0,3.258096,7.654443,0,0,0,51.9,8.850704,1.386294,4.824443,1 +5,2,25,1,3,229314,0,6978.299,2.843258,0,16,1,151.2996,31.36564,0,0,556.5198,739.185,2,0,0,7,0,4,81.35272,11.84267,0,51.9,527.5,722.16,1,0,1.386294,6.582247,0,3.258096,7.654443,0,0,0,51.9,8.850704,1.386294,6.605548,1 +14,2,95,1,1,229331,0,8818.769,39.96988,0,16,1,7.318348,0,0,0,0,7.318348,0,0,0,1,0,6,78.2,3.4,0,70.5,825.95,532.08,0,0,1.791759,6.276794,0,4.564348,6.767828,1,0,0,70.5,9.084751,1.791759,1.990385,1 +14,2,95,1,2,229331,0,8818.769,40.96988,0,16,1,7.208073,0,0,0,0,7.208073,0,0,0,1,0,6,78.2,3.4,0,70.5,825.95,532.08,0,0,1.791759,6.276794,0,4.564348,6.767828,1,0,0,70.5,9.084751,1.791759,1.975202,1 +14,2,95,1,3,229331,0,8818.769,41.96988,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,78.2,3.4,0,70.5,825.95,532.08,0,0,1.609438,6.276794,0,4.564348,6.767828,1,0,0,70.5,9.084751,1.609438,,0 +14,2,95,1,1,229332,0,8818.769,13.74401,1,12,1,7.841087,0,0,0,0,7.841087,0,0,0,1,0,6,88.3,11.84267,0,88.9,825.95,532.08,1,1,1.791759,6.276794,0,4.564348,6.767828,1,0,0,88.9,9.084751,1.791759,2.059377,1 +14,2,95,1,2,229332,0,8818.769,14.74401,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,11.84267,0,88.9,825.95,532.08,1,1,1.791759,6.276794,0,4.564348,6.767828,1,0,0,88.9,9.084751,1.791759,,0 +14,2,95,1,3,229332,0,8818.769,15.74401,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,11.84267,0,88.9,825.95,532.08,1,1,1.609438,6.276794,0,4.564348,6.767828,1,0,0,88.9,9.084751,1.609438,,0 +14,2,95,1,1,229333,0,8818.769,34.61191,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,80.3,20.7,0,75,825.95,532.08,0,0,1.791759,6.276794,0,4.564348,6.767828,1,0,0,75,9.084751,1.791759,,0 +14,2,95,1,2,229333,0,8818.769,35.61191,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,80.3,20.7,0,75,825.95,532.08,0,0,1.791759,6.276794,0,4.564348,6.767828,1,0,0,75,9.084751,1.791759,,0 +14,2,95,1,3,229333,0,8818.769,36.61191,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,80.3,20.7,0,75,825.95,532.08,0,0,1.609438,6.276794,0,4.564348,6.767828,1,0,0,75,9.084751,1.609438,,0 +14,2,95,1,1,229334,0,8818.769,16.29569,1,12,1,8.75588,0,0,0,0,8.75588,0,0,0,1,0,6,84,3.4,0,72.7,825.95,532.08,1,1,1.791759,6.276794,0,4.564348,6.767828,1,0,0,72.7,9.084751,1.791759,2.169725,1 +14,2,95,1,2,229334,0,8818.769,17.29569,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,84,3.4,0,72.7,825.95,532.08,1,1,1.791759,6.276794,0,4.564348,6.767828,1,0,0,72.7,9.084751,1.791759,,0 +14,2,95,1,1,229335,0,8818.769,10.98973,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,90,11.84267,0,88.9,825.95,532.08,1,0,1.791759,6.276794,0,4.564348,6.767828,1,0,0,88.9,9.084751,1.791759,,0 +14,2,95,1,2,229335,0,8818.769,11.98973,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,90,11.84267,0,88.9,825.95,532.08,1,0,1.791759,6.276794,0,4.564348,6.767828,1,0,0,88.9,9.084751,1.791759,,0 +14,2,95,1,3,229335,0,8818.769,12.98973,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,90,11.84267,0,88.9,825.95,532.08,1,0,1.609438,6.276794,0,4.564348,6.767828,1,0,0,88.9,9.084751,1.609438,,0 +14,2,95,1,1,229336,0,8818.769,15.18686,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,72.3,10.3,0,70.5,825.95,532.08,1,1,1.791759,6.276794,0,4.564348,6.767828,1,0,0,70.5,9.084751,1.791759,,0 +14,2,95,1,2,229336,0,8818.769,16.18686,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,72.3,10.3,0,70.5,825.95,532.08,1,1,1.791759,6.276794,0,4.564348,6.767828,1,0,0,70.5,9.084751,1.791759,,0 +14,2,95,1,3,229336,0,8818.769,17.18686,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,72.3,10.3,0,70.5,825.95,532.08,1,1,1.609438,6.276794,0,4.564348,6.767828,1,0,0,70.5,9.084751,1.609438,,0 +11,2,0,0,1,229342,0,8124.927,23.62491,1,13,1,35.36142,8.008321,36.70827,0,669.8128,749.8908,1,0,0,2,1,2,91,20.7,1,54.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,54.5,9.002815,.6931472,6.619927,1 +11,2,0,0,2,229342,0,8124.927,24.62491,1,13,1,0,4.706163,0,0,0,4.706163,0,0,0,0,0,3,91,20.7,1,54.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,54.5,9.002815,1.098612,1.548873,1 +11,2,0,0,3,229342,0,8124.927,25.62491,1,13,1,0,27.54609,0,0,0,27.54609,0,0,0,0,0,3,91,20.7,1,54.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,54.5,9.002815,1.098612,3.315861,1 +11,2,0,0,4,229342,0,8124.927,26.62491,1,13,1,76.14679,9.018747,0,0,925.5804,1010.746,1,0,0,2,0,3,91,20.7,1,54.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,54.5,9.002815,1.098612,6.918444,1 +11,2,0,0,5,229342,0,8124.927,27.62491,1,13,1,113.9413,21.14213,14.50326,0,1114.13,1263.716,1,0,0,5,1,4,91,20.7,1,54.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,54.5,9.002815,1.386294,7.141812,1 +11,2,0,0,1,229343,0,8124.927,27.51266,0,14,1,26.00104,13.20853,0,0,0,39.20957,0,0,0,4,0,2,79.8,10.3,0,73.9,0,0,0,0,.6931472,0,0,0,0,1,0,0,73.9,9.002815,.6931472,3.668921,1 +11,2,0,0,2,229343,0,8124.927,28.51266,0,14,1,41.61491,0,0,0,0,41.61491,0,0,0,2,0,3,79.8,10.3,0,73.9,0,0,0,0,1.098612,0,0,0,0,1,0,0,73.9,9.002815,1.098612,3.728458,1 +11,2,0,0,3,229343,0,8124.927,29.51266,0,14,1,0,0,0,0,0,0,0,0,0,0,0,3,79.8,10.3,0,73.9,0,0,0,0,1.098612,0,0,0,0,1,0,0,73.9,9.002815,1.098612,,0 +11,2,0,0,4,229343,0,8124.927,30.51266,0,14,1,60.78979,18.23694,0,0,0,79.02673,0,0,0,3,0,3,79.8,10.3,0,73.9,0,0,0,0,1.098612,0,0,0,0,1,0,0,73.9,9.002815,1.098612,4.369786,1 +11,2,0,0,5,229343,0,8124.927,31.51266,0,14,1,61.63887,1.337926,0,0,0,62.9768,0,0,0,4,0,4,79.8,10.3,0,73.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,73.9,9.002815,1.386294,4.142766,1 +11,2,0,1,1,229369,0,6358.944,38.07803,1,10,1,58.02405,18.75065,0,0,111.908,188.6827,1,0,0,3,0,4,78.2,13.8,0,75,0,249.6,0,0,1.386294,5.51986,0,0,0,0,0,0,75,8.757775,1.386294,5.240067,1 +11,2,0,1,2,229369,0,6358.944,39.07803,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,78.2,13.8,0,75,0,249.6,0,0,1.098612,5.51986,0,0,0,0,0,0,75,8.757775,1.098612,,0 +11,2,0,1,3,229369,0,6358.944,40.07803,1,10,1,7.488987,0,0,0,862.8458,870.3348,1,0,0,1,0,3,78.2,13.8,0,75,0,249.6,0,0,1.098612,5.51986,0,0,0,0,0,0,75,8.757775,1.098612,6.768878,1 +11,2,0,1,1,229370,0,6358.944,11.09103,0,10,1,32.93257,0,0,0,0,32.93257,0,0,0,1,0,4,81.7,11.84267,0,96.3,0,249.6,1,0,1.386294,5.51986,0,0,0,0,0,0,96.3,8.757775,1.386294,3.494462,1 +11,2,0,1,2,229370,0,6358.944,12.09103,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,81.7,11.84267,0,96.3,0,249.6,1,0,1.098612,5.51986,0,0,0,0,0,0,96.3,8.757775,1.098612,,0 +11,2,0,1,3,229370,0,6358.944,13.09103,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,81.7,11.84267,0,96.3,0,249.6,1,0,1.098612,5.51986,0,0,0,0,0,0,96.3,8.757775,1.098612,,0 +11,2,0,1,1,229371,0,6358.944,13.40452,0,10,1,139.8066,0,0,0,635.2692,775.0758,1,0,0,8,0,4,80,11.84267,0,96.3,0,249.6,1,0,1.386294,5.51986,0,0,0,1,0,0,96.3,8.757775,1.386294,6.652961,1 +11,2,0,1,2,229371,0,6358.944,14.40452,0,10,1,145.8433,0,0,0,0,145.8433,0,0,0,4,0,3,80,11.84267,0,96.3,0,249.6,1,0,1.098612,5.51986,0,0,0,1,0,0,96.3,8.757775,1.098612,4.982533,1 +11,2,0,1,3,229371,0,6358.944,15.40452,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,80,11.84267,0,96.3,0,249.6,1,0,1.098612,5.51986,0,0,0,1,0,0,96.3,8.757775,1.098612,,0 +11,2,0,1,1,229372,0,6358.944,17.87817,1,10,1,44.17146,9.492943,32.1955,0,0,85.85991,0,0,0,4,0,4,78.7,10.3,0,62.5,0,249.6,1,1,1.386294,5.51986,0,0,0,1,0,0,62.5,8.757775,1.386294,4.452717,1 +11,2,0,0,1,229373,0,1951.32,45.13621,1,10,1,154.8171,19.62906,33.48789,0,0,207.9341,0,0,0,15,1,1,85.6,6.9,0,77.3,0,0,0,0,0,0,0,0,0,1,0,0,77.3,7.576774,0,5.337221,1 +11,2,0,0,2,229373,0,1951.32,46.13621,1,10,1,21.07008,2.50947,0,0,0,23.57955,0,0,0,2,0,1,85.6,6.9,0,77.3,0,0,0,0,0,0,0,0,0,1,0,0,77.3,7.576774,0,3.16038,1 +11,2,0,0,3,229373,0,1951.32,47.13621,1,10,1,168.4005,30.59385,32.41439,0,0,231.4088,0,0,0,17,1,1,85.6,6.9,0,77.3,0,0,0,0,0,0,0,0,0,1,0,0,77.3,7.576774,0,5.444186,1 +13,2,0,0,1,229390,0,8665.641,57.57153,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,60.1,17.2,1,65.9,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.067237,.6931472,,0 +13,2,0,0,1,229391,0,8665.641,57.36345,1,12,1,33.09932,19.59958,56.68227,0,0,109.3812,0,0,0,3,0,2,72.3,13.8,0,73.9,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,1,0,73.9,9.067237,.6931472,4.694839,1 +13,2,0,1,1,229396,0,11793.55,22.00137,0,13,1,26.26105,1.74207,0,0,0,28.00312,0,0,0,1,0,2,74.5,3.4,0,88.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,88.6,9.375393,.6931472,3.332316,1 +13,2,0,1,2,229396,0,11793.55,23.00137,0,13,1,12.90014,0,0,0,0,12.90014,0,0,0,1,0,2,74.5,3.4,0,88.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,88.6,9.375393,.6931472,2.557238,1 +13,2,0,1,3,229396,0,11793.55,24.00137,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,74.5,3.4,0,88.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,88.6,9.375393,.6931472,,0 +13,2,0,1,1,229397,0,11793.55,21.80151,1,13,1,0,10.36922,0,0,0,10.36922,0,0,0,0,0,2,78.7,6.9,0,88.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,88.6,9.375393,.6931472,2.338841,1 +13,2,0,1,2,229397,0,11793.55,22.80151,1,13,1,126.1347,8.52365,0,0,0,134.6584,0,0,0,5,0,2,78.7,6.9,0,88.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,88.6,9.375393,.6931472,4.902741,1 +13,2,0,1,3,229397,0,11793.55,23.80151,1,13,1,19.0957,0,0,0,0,19.0957,0,0,0,1,0,2,78.7,6.9,0,88.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,88.6,9.375393,.6931472,2.949463,1 +13,2,0,1,1,229451,0,10422.29,41.15811,0,16,1,0,0,35.66823,0,0,35.66823,0,0,0,0,0,5,72.3,24.1,0,65.9,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,1,0,0,65.9,9.251798,1.609438,3.57426,1 +13,2,0,1,2,229451,0,10422.29,42.15811,0,16,1,117.6541,4.419494,0,0,0,122.0736,0,0,0,3,0,5,72.3,24.1,0,65.9,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,1,0,0,65.9,9.251798,1.609438,4.804624,1 +13,2,0,1,3,229451,0,10422.29,43.15811,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,72.3,24.1,0,65.9,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,1,0,0,65.9,9.251798,1.609438,,0 +13,2,0,1,1,229452,0,10422.29,11.04449,1,18,1,67.60271,58.32553,0,0,0,125.9282,0,0,0,5,0,5,63.3,11.84267,0,66.7,450,235.27,1,1,1.609438,5.460734,1,4.564348,6.160541,1,0,0,66.7,9.251798,1.609438,4.835712,1 +13,2,0,1,2,229452,0,10422.29,12.04449,1,18,1,31.0559,72.74725,0,0,0,103.8032,0,0,0,2,0,5,63.3,11.84267,0,66.7,450,235.27,1,1,1.609438,5.460734,1,4.564348,6.160541,1,0,0,66.7,9.251798,1.609438,4.642497,1 +13,2,0,1,3,229452,0,10422.29,13.04449,1,18,1,57.50658,30.10975,0,0,0,87.61633,0,0,0,2,0,5,63.3,11.84267,0,66.7,450,235.27,1,1,1.609438,5.460734,1,4.564348,6.160541,1,0,0,66.7,9.251798,1.609438,4.472968,1 +13,2,0,1,1,229453,0,10422.29,8.84052,0,18,1,94.12376,52.70411,.8580343,0,0,147.6859,0,0,0,8,0,5,41.7,11.84267,0,59.3,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,1,0,0,59.3,9.251798,1.609438,4.995088,1 +13,2,0,1,2,229453,0,10422.29,9.84052,0,18,1,32.48925,41.30435,0,0,0,73.79359,0,0,0,2,0,5,41.7,11.84267,0,59.3,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,1,0,0,59.3,9.251798,1.609438,4.301272,1 +13,2,0,1,3,229453,0,10422.29,10.84052,0,18,1,70.23705,46.55838,0,362.1598,0,116.7954,0,0,18,4,0,5,41.7,11.84267,0,59.3,450,235.27,1,0,1.609438,5.460734,1,4.564348,6.160541,1,0,0,59.3,9.251798,1.609438,4.760424,1 +13,2,0,1,1,229454,0,10422.29,38.96235,1,18,1,182.3713,38.90796,0,0,0,221.2793,0,0,0,5,0,5,56.4,20.7,0,69.3,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,1,0,0,69.3,9.251798,1.609438,5.399426,1 +13,2,0,1,2,229454,0,10422.29,39.96235,1,18,1,0,5.136168,0,0,0,5.136168,0,0,0,0,0,5,56.4,20.7,0,69.3,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,1,0,0,69.3,9.251798,1.609438,1.636307,1 +13,2,0,1,3,229454,0,10422.29,40.96235,1,18,1,104.6971,2.541703,2.080773,0,0,109.3196,0,0,0,4,1,5,56.4,20.7,0,69.3,450,235.27,0,0,1.609438,5.460734,1,4.564348,6.160541,1,0,0,69.3,9.251798,1.609438,4.694275,1 +13,2,0,1,1,229455,0,10422.29,8.117727,1,18,1,97.24389,26.78107,0,0,0,124.025,0,0,0,11,0,5,70,11.84267,0,51.9,450,235.27,1,1,1.609438,5.460734,1,4.564348,6.160541,1,0,0,51.9,9.251798,1.609438,4.820483,1 +13,2,0,1,2,229455,0,10422.29,9.117727,1,18,1,57.33397,12.43192,0,0,0,69.76588,0,0,0,5,0,5,70,11.84267,0,51.9,450,235.27,1,1,1.609438,5.460734,1,4.564348,6.160541,1,0,0,51.9,9.251798,1.609438,4.245145,1 +13,2,0,1,3,229455,0,10422.29,10.11773,1,18,1,119.842,40.96576,.9262511,0,0,161.734,0,0,0,11,0,5,70,11.84267,0,51.9,450,235.27,1,1,1.609438,5.460734,1,4.564348,6.160541,1,0,0,51.9,9.251798,1.609438,5.085953,1 +19,2,25,0,1,229478,1,11017.6,29.07871,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,83,6.9,0,61.4,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,61.4,9.30734,.6931472,,0 +19,2,25,0,2,229478,1,11017.6,30.07871,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,83,6.9,0,61.4,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,61.4,9.30734,.6931472,,0 +19,2,25,0,3,229478,1,11017.6,31.07871,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,83,6.9,0,61.4,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,61.4,9.30734,.6931472,,0 +11,2,0,1,1,229501,0,6168.329,31.5154,0,16,1,83.72335,0,0,0,0,83.72335,0,0,0,2,0,4,85.1,3.4,0,67,0,538.08,0,0,1.386294,6.288007,0,0,0,0,0,0,67,8.727345,1.386294,4.427518,1 +11,2,0,1,2,229501,0,6168.329,32.5154,0,16,1,6.450072,0,0,0,0,6.450072,0,0,0,1,0,4,85.1,3.4,0,67,0,538.08,0,0,1.386294,6.288007,0,0,0,0,0,0,67,8.727345,1.386294,1.864091,1 +11,2,0,1,3,229501,0,6168.329,33.5154,0,16,1,0,5.662862,0,0,0,5.662862,0,0,0,0,0,4,85.1,3.4,0,67,0,538.08,0,0,1.386294,6.288007,0,0,0,0,0,0,67,8.727345,1.386294,1.73393,1 +11,2,0,1,1,229502,0,6168.329,5.546885,0,14,1,68.92876,20.38482,34.07696,0,0,123.3905,0,0,0,8,0,4,93.3,11.84267,0,96.3,0,538.08,1,0,1.386294,6.288007,0,0,0,0,0,0,96.3,8.727345,1.386294,4.815354,1 +11,2,0,1,2,229502,0,6168.329,6.546885,0,14,1,88.9871,15.16961,22.21691,0,0,126.3736,0,0,0,7,0,4,93.3,11.84267,0,96.3,0,538.08,1,0,1.386294,6.288007,0,0,0,0,0,0,96.3,8.727345,1.386294,4.839243,1 +11,2,0,1,3,229502,0,6168.329,7.546885,0,14,1,13.82792,0,28.964,0,0,42.79192,0,0,0,1,0,4,93.3,11.84267,0,96.3,0,538.08,1,0,1.386294,6.288007,0,0,0,0,0,0,96.3,8.727345,1.386294,3.756349,1 +11,2,0,1,1,229503,0,6168.329,2.015058,0,14,1,52.62611,7.982319,0,0,0,60.60843,0,0,0,4,0,4,81.35272,11.84267,0,88.9,0,538.08,1,0,1.386294,6.288007,0,0,0,0,0,0,88.9,8.727345,1.386294,4.104434,1 +11,2,0,1,2,229503,0,6168.329,3.015058,0,14,1,0,2.53225,0,0,0,2.53225,0,0,0,0,0,4,81.35272,11.84267,0,88.9,0,538.08,1,0,1.386294,6.288007,0,0,0,0,0,0,88.9,8.727345,1.386294,.9291084,1 +11,2,0,1,3,229503,0,6168.329,4.015058,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,88.9,0,538.08,1,0,1.386294,6.288007,0,0,0,0,0,0,88.9,8.727345,1.386294,,0 +11,2,0,1,1,229504,0,6168.329,27.98083,1,14,1,28.91316,1.820073,0,0,0,30.73323,0,0,0,1,0,4,78.2,13.8,0,64.8,0,538.08,0,0,1.386294,6.288007,0,0,0,1,0,0,64.8,8.727345,1.386294,3.425344,1 +11,2,0,1,2,229504,0,6168.329,28.98083,1,14,1,8.361204,4.180602,0,0,0,12.54181,0,0,0,1,0,4,78.2,13.8,0,64.8,0,538.08,0,0,1.386294,6.288007,0,0,0,1,0,0,64.8,8.727345,1.386294,2.529068,1 +11,2,0,1,3,229504,0,6168.329,29.98083,1,14,1,45.43459,6.826163,0,0,0,52.26075,0,0,0,2,0,4,78.2,13.8,0,64.8,0,538.08,0,0,1.386294,6.288007,0,0,0,1,0,0,64.8,8.727345,1.386294,3.956246,1 +17,2,25,1,1,229525,0,8954.252,53.83984,1,16,1,27.96655,26.04286,0,0,0,54.00941,0,0,0,2,0,2,81.9,10.3,0,84.1,1000,520,0,0,.6931472,6.253829,0,3.258096,8.294049,1,0,0,84.1,9.099996,.6931472,3.989158,1 +17,2,25,1,2,229525,0,8954.252,54.83984,1,16,1,0,16.14128,0,0,0,16.14128,0,0,0,0,0,2,81.9,10.3,0,84.1,1000,520,0,0,.6931472,6.253829,0,3.258096,8.294049,1,0,0,84.1,9.099996,.6931472,2.78138,1 +17,2,25,1,3,229525,0,8954.252,55.83984,1,16,1,54.18502,22.55066,0,0,0,76.73568,0,0,0,3,0,2,81.9,10.3,0,84.1,1000,520,0,0,.6931472,6.253829,0,3.258096,8.294049,1,0,0,84.1,9.099996,.6931472,4.340367,1 +17,2,25,1,4,229525,0,8954.252,56.83984,1,16,1,20.96774,12.53629,0,0,0,33.50403,0,0,0,1,0,2,81.9,10.3,0,84.1,1000,520,0,0,.6931472,6.253829,0,3.258096,8.294049,1,0,0,84.1,9.099996,.6931472,3.511666,1 +17,2,25,1,5,229525,0,8954.252,57.83984,1,16,1,0,4.728598,0,0,0,4.728598,0,0,0,0,0,2,81.9,10.3,0,84.1,1000,520,0,0,.6931472,6.253829,0,3.258096,8.294049,1,0,0,84.1,9.099996,.6931472,1.553629,1 +17,2,25,1,1,229526,0,8954.252,50.86927,0,15,1,13.06848,0,26.75902,0,0,39.8275,0,0,0,0,1,2,79.3,0,0,100,1000,520,0,0,.6931472,6.253829,0,3.258096,8.294049,1,0,0,100,9.099996,.6931472,3.684557,1 +17,2,25,1,2,229526,0,8954.252,51.86927,0,15,1,116.2902,0,0,0,0,116.2902,0,0,0,5,0,2,79.3,0,0,100,1000,520,0,0,.6931472,6.253829,0,3.258096,8.294049,1,0,0,100,9.099996,.6931472,4.756089,1 +17,2,25,1,3,229526,0,8954.252,52.86927,0,15,1,0,0,35.14537,0,0,35.14537,0,0,0,0,0,2,79.3,0,0,100,1000,520,0,0,.6931472,6.253829,0,3.258096,8.294049,1,0,0,100,9.099996,.6931472,3.559493,1 +17,2,25,1,4,229526,0,8954.252,53.86927,0,15,1,19.35484,2.298387,0,0,0,21.65322,0,0,0,1,0,2,79.3,0,0,100,1000,520,0,0,.6931472,6.253829,0,3.258096,8.294049,1,0,0,100,9.099996,.6931472,3.075154,1 +17,2,25,1,5,229526,0,8954.252,54.86927,0,15,1,0,0,9.205829,0,0,9.205829,0,0,0,0,0,2,79.3,0,0,100,1000,520,0,0,.6931472,6.253829,0,3.258096,8.294049,1,0,0,100,9.099996,.6931472,2.219837,1 +11,2,0,1,1,229617,0,7644.575,35.1102,0,16,1,124.7778,3.894407,7.543126,0,737.4543,873.6696,1,0,0,6,1,3,56.4,24.1,1,40.9,0,318,0,0,1.098612,5.762052,0,0,0,0,1,0,40.9,8.941882,1.098612,6.772702,1 +11,2,0,1,2,229617,0,7644.575,36.1102,0,16,1,103.0754,4.584334,11.06199,0,0,118.7218,0,0,0,2,5,3,56.4,24.1,1,40.9,0,318,0,0,1.098612,5.762052,0,0,0,0,1,0,40.9,8.941882,1.098612,4.776783,1 +11,2,0,1,3,229617,0,7644.575,37.1102,0,16,1,140.0881,4.885463,20.27753,0,0,165.2511,0,0,0,3,5,3,56.4,24.1,1,40.9,0,318,0,0,1.098612,5.762052,0,0,0,0,1,0,40.9,8.941882,1.098612,5.107466,1 +11,2,0,1,1,229618,0,7644.575,9.776865,0,16,1,10.45478,0,28.22791,0,0,38.6827,0,0,0,0,1,3,86.7,11.84267,0,86.4,0,318,1,0,1.098612,5.762052,0,0,0,0,0,0,86.4,8.941882,1.098612,3.655392,1 +11,2,0,1,2,229618,0,7644.575,10.77687,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,11.84267,0,86.4,0,318,1,0,1.098612,5.762052,0,0,0,0,0,0,86.4,8.941882,1.098612,,0 +11,2,0,1,3,229618,0,7644.575,11.77687,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,11.84267,0,86.4,0,318,1,0,1.098612,5.762052,0,0,0,0,0,0,86.4,8.941882,1.098612,,0 +11,2,0,1,1,229619,0,7644.575,8.303902,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,11.84267,0,59.3,0,318,1,1,1.098612,5.762052,0,0,0,0,0,0,59.3,8.941882,1.098612,,0 +11,2,0,1,2,229619,0,7644.575,9.303902,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,11.84267,0,59.3,0,318,1,1,1.098612,5.762052,0,0,0,0,0,0,59.3,8.941882,1.098612,,0 +11,2,0,1,3,229619,0,7644.575,10.3039,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,11.84267,0,59.3,0,318,1,1,1.098612,5.762052,0,0,0,0,0,0,59.3,8.941882,1.098612,,0 +11,2,0,0,1,229620,0,568.915,38.70226,1,13,1,47.04652,25.77104,28.75065,0,0,101.5682,0,0,0,3,1,2,74.29414,11.84267,.1981873,,0,216,0,0,.6931472,5.375278,0,0,0,1,0,0,71.31672,6.345487,.6931472,4.62073,1 +11,2,0,0,2,229620,0,568.915,39.70226,1,13,1,171.8164,16.79,0,0,0,188.6064,0,0,0,4,0,2,74.29414,11.84267,.1981873,,0,216,0,0,.6931472,5.375278,0,0,0,1,0,0,71.31672,6.345487,.6931472,5.239663,1 +11,2,0,0,3,229620,0,568.915,40.70226,1,13,1,136.5639,3.784141,0,0,0,140.348,0,0,0,0,16,2,74.29414,11.84267,.1981873,,0,216,0,0,.6931472,5.375278,0,0,0,1,0,0,71.31672,6.345487,.6931472,4.944125,1 +11,2,0,0,1,229621,0,568.915,18.20945,1,11,1,88.99634,15.46262,0,0,0,104.459,0,0,0,6,2,2,74.29414,11.84267,.1981873,,0,216,0,0,.6931472,5.375278,0,0,0,0,1,0,71.31672,6.345487,.6931472,4.648794,1 +11,2,0,0,2,229621,0,568.915,19.20945,1,11,1,57.03989,37.89044,0,0,0,94.93032,0,0,0,6,0,2,74.29414,11.84267,.1981873,,0,216,0,0,.6931472,5.375278,0,0,0,0,1,0,71.31672,6.345487,.6931472,4.553143,1 +11,2,0,0,3,229621,0,568.915,20.20945,1,11,1,32.81938,20.79295,0,0,0,53.61234,0,0,0,1,1,2,74.29414,11.84267,.1981873,,0,216,0,0,.6931472,5.375278,0,0,0,0,1,0,71.31672,6.345487,.6931472,3.981779,1 +11,2,0,1,1,229691,0,6920.234,22.24778,1,12,1,72.52515,0,0,0,0,72.52515,0,0,0,2,1,3,68.6,3.4,0,73.9,0,325.68,0,0,1.098612,5.785915,0,0,0,1,0,0,73.9,8.842349,1.098612,4.283933,1 +11,2,0,1,2,229691,0,6920.234,23.24778,1,12,1,93.62934,35.94595,0,0,571.1149,700.6901,1,0,0,2,0,3,68.6,3.4,0,73.9,0,325.68,0,0,1.098612,5.785915,0,0,0,1,0,0,73.9,8.842349,1.098612,6.552066,1 +11,2,0,1,3,229691,0,6920.234,24.24778,1,12,1,49.3992,3.119715,0,0,0,52.51891,0,0,0,2,0,4,68.6,3.4,0,73.9,0,325.68,0,0,1.386294,5.785915,0,0,0,1,0,0,73.9,8.842349,1.386294,3.961173,1 +11,2,0,1,4,229691,0,6920.234,25.24778,1,12,1,120.9841,47.87312,0,0,0,168.8573,0,0,0,7,0,4,68.6,3.4,0,73.9,0,325.68,0,0,1.386294,5.785915,0,0,0,1,0,0,73.9,8.842349,1.386294,5.129054,1 +11,2,0,1,5,229691,0,6920.234,26.24778,1,12,1,187.2251,32.13343,0,0,880.5499,1099.908,1,0,0,5,0,4,68.6,3.4,0,73.9,0,325.68,0,0,1.386294,5.785915,0,0,0,1,0,0,73.9,8.842349,1.386294,7.002982,1 +11,2,0,1,1,229692,0,6920.234,20.28474,0,12,1,18.52832,0,0,0,0,18.52832,0,0,0,1,0,3,74.5,3.4,0,68.2,0,325.68,0,0,1.098612,5.785915,0,0,0,1,0,0,68.2,8.842349,1.098612,2.919301,1 +11,2,0,1,2,229692,0,6920.234,21.28474,0,12,1,19.30502,.719112,0,0,0,20.02413,0,0,0,2,0,3,74.5,3.4,0,68.2,0,325.68,0,0,1.098612,5.785915,0,0,0,1,0,0,68.2,8.842349,1.098612,2.996938,1 +11,2,0,1,3,229692,0,6920.234,22.28474,0,12,1,0,2.447708,0,0,0,2.447708,0,0,0,0,0,4,74.5,3.4,0,68.2,0,325.68,0,0,1.386294,5.785915,0,0,0,1,0,0,68.2,8.842349,1.386294,.8951522,1 +11,2,0,1,4,229692,0,6920.234,23.28474,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.5,3.4,0,68.2,0,325.68,0,0,1.386294,5.785915,0,0,0,1,0,0,68.2,8.842349,1.386294,,0 +11,2,0,1,5,229692,0,6920.234,24.28474,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,74.5,3.4,0,68.2,0,325.68,0,0,1.386294,5.785915,0,0,0,1,0,0,68.2,8.842349,1.386294,,0 +11,2,0,0,1,229696,0,11503.81,25.00205,0,12,1,62.54508,0,30.70067,0,0,93.24575,0,0,0,1,1,4,76.6,6.9,0,80.7,0,364.26,0,0,1.386294,5.897868,0,0,0,1,0,0,80.7,9.350521,1.386294,4.535238,1 +11,2,0,0,2,229696,0,11503.81,26.00205,0,12,1,69.36553,0,13.73106,0,0,83.09659,0,0,0,5,1,4,76.6,6.9,0,80.7,0,364.26,0,0,1.386294,5.897868,0,0,0,1,0,0,80.7,9.350521,1.386294,4.420003,1 +11,2,0,0,3,229696,0,11503.81,27.00205,0,12,1,166.4066,11.00564,34.43,0,0,211.8422,0,0,0,8,1,4,76.6,6.9,0,80.7,0,364.26,0,0,1.386294,5.897868,0,0,0,1,0,0,80.7,9.350521,1.386294,5.355842,1 +11,2,0,0,1,229697,0,11503.81,7.321013,0,11,1,39.97939,5.435343,0,0,275.3735,320.7882,1,0,0,4,0,4,58.3,11.84267,0,63,0,364.26,1,0,1.386294,5.897868,0,0,0,1,0,0,63,9.350521,1.386294,5.770781,1 +11,2,0,0,2,229697,0,11503.81,8.321013,0,11,1,12.26326,2.249053,0,0,0,14.51231,0,0,0,1,0,4,58.3,11.84267,0,63,0,364.26,1,0,1.386294,5.897868,0,0,0,1,0,0,63,9.350521,1.386294,2.674997,1 +11,2,0,0,3,229697,0,11503.81,9.321013,0,11,1,41.6775,0,0,0,0,41.6775,0,0,0,2,0,4,58.3,11.84267,0,63,0,364.26,1,0,1.386294,5.897868,0,0,0,1,0,0,63,9.350521,1.386294,3.729961,1 +11,2,0,0,1,229698,0,11503.81,4.145106,1,11,1,145.7238,22.65842,0,0,0,168.3823,0,0,0,11,0,4,81.35272,11.84267,0,70.4,0,364.26,1,1,1.386294,5.897868,0,0,0,1,0,0,70.4,9.350521,1.386294,5.126237,1 +11,2,0,0,2,229698,0,11503.81,5.145106,1,11,1,37.21591,5.326705,0,0,0,42.54261,0,0,0,3,0,4,81.35272,11.84267,0,70.4,0,364.26,1,1,1.386294,5.897868,0,0,0,1,0,0,70.4,9.350521,1.386294,3.750506,1 +11,2,0,0,3,229698,0,11503.81,6.145106,1,11,1,42.52276,1.647161,0,0,0,44.16992,0,0,0,3,0,4,81.35272,11.84267,0,70.4,0,364.26,1,1,1.386294,5.897868,0,0,0,1,0,0,70.4,9.350521,1.386294,3.788044,1 +11,2,0,0,1,229699,0,11503.81,26.00137,1,11,1,166.4451,5.255023,0,0,0,171.7001,0,0,0,6,5,4,77.6,3.4,0,81.8,0,364.26,0,0,1.386294,5.897868,0,0,0,1,0,0,81.8,9.350521,1.386294,5.14575,1 +11,2,0,0,2,229699,0,11503.81,27.00137,1,11,1,31.53409,0,0,0,0,31.53409,0,0,0,2,0,4,77.6,3.4,0,81.8,0,364.26,0,0,1.386294,5.897868,0,0,0,1,0,0,81.8,9.350521,1.386294,3.451069,1 +11,2,0,0,3,229699,0,11503.81,28.00137,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.6,3.4,0,81.8,0,364.26,0,0,1.386294,5.897868,0,0,0,1,0,0,81.8,9.350521,1.386294,,0 +11,2,0,0,1,229769,0,13434.02,54.31896,1,12,1,41.60167,87.2907,40.82683,0,0,169.7192,0,0,0,8,0,2,88.3,6.9,0,53.4,0,514.54,0,0,.6931472,6.243273,0,0,0,1,0,0,53.4,9.50562,.6931472,5.134145,1 +11,2,0,0,2,229769,0,13434.02,55.31896,1,12,1,70.23412,63.78882,34.16149,0,0,168.1844,0,0,0,4,0,2,88.3,6.9,0,53.4,0,514.54,0,0,.6931472,6.243273,0,0,0,1,0,0,53.4,9.50562,.6931472,5.125061,1 +11,2,0,0,3,229769,0,13434.02,56.31896,1,12,1,24.14399,52.41001,42.16418,0,0,118.7182,0,0,0,2,0,2,88.3,6.9,0,53.4,0,514.54,0,0,.6931472,6.243273,0,0,0,1,0,0,53.4,9.50562,.6931472,4.776752,1 +11,2,0,0,1,229770,0,13434.02,55.0089,0,14,1,122.3349,53.81695,75.59542,0,0,251.7473,0,0,0,10,0,2,93.6,10.3,0,80.7,0,514.54,0,0,.6931472,6.243273,0,0,0,1,0,0,80.7,9.50562,.6931472,5.528426,1 +11,2,0,0,2,229770,0,13434.02,56.0089,0,14,1,189.9666,57.0043,39.45533,0,0,286.4262,0,0,0,10,0,2,93.6,10.3,0,80.7,0,514.54,0,0,.6931472,6.243273,0,0,0,1,0,0,80.7,9.50562,.6931472,5.657481,1 +11,2,0,0,3,229770,0,13434.02,57.0089,0,14,1,79.12643,49.62687,66.71642,0,0,195.4697,0,0,0,4,0,2,93.6,10.3,0,80.7,0,514.54,0,0,.6931472,6.243273,0,0,0,1,0,0,80.7,9.50562,.6931472,5.275405,1 +11,2,0,1,1,229771,0,7369.501,48.01917,1,12,1,83.89964,29.03293,46.3356,0,0,159.2682,0,0,0,6,0,4,80.9,20.7,1,76.1,0,607.2,0,0,1.386294,6.408858,0,0,0,1,0,0,76.1,8.905241,1.386294,5.07059,1 +11,2,0,1,2,229771,0,7369.501,49.01917,1,12,1,71.60019,29.15425,0,0,0,100.7544,0,0,0,3,0,4,80.9,20.7,1,76.1,0,607.2,0,0,1.386294,6.408858,0,0,0,1,0,0,76.1,8.905241,1.386294,4.612686,1 +11,2,0,1,3,229771,0,7369.501,50.01917,1,12,1,94.49339,48.87225,44.44934,0,0,187.815,0,0,0,5,0,4,80.9,20.7,1,76.1,0,607.2,0,0,1.386294,6.408858,0,0,0,1,0,0,76.1,8.905241,1.386294,5.235457,1 +11,2,0,1,4,229771,0,7369.501,51.01917,1,12,1,24.79839,34.58468,0,0,0,59.38306,0,0,0,3,0,4,80.9,20.7,1,76.1,0,607.2,0,0,1.386294,6.408858,0,0,0,1,0,0,76.1,8.905241,1.386294,4.084009,1 +11,2,0,1,5,229771,0,7369.501,52.01917,1,12,1,40.25501,42.72495,32.60474,0,0,115.5847,0,0,0,3,0,4,80.9,20.7,1,76.1,0,607.2,0,0,1.386294,6.408858,0,0,0,1,0,0,76.1,8.905241,1.386294,4.750004,1 +11,2,0,1,1,229772,0,7369.501,50.09993,0,12,1,6.27287,0,0,0,0,6.27287,0,0,0,1,0,4,76.6,17.2,1,37.5,0,607.2,0,0,1.386294,6.408858,0,0,0,0,1,0,37.5,8.905241,1.386294,1.836234,1 +11,2,0,1,2,229772,0,7369.501,51.09993,0,12,1,117.2513,1.672273,46.15089,0,0,165.0745,0,0,0,2,6,4,76.6,17.2,1,37.5,0,607.2,0,0,1.386294,6.408858,0,0,0,0,1,0,37.5,8.905241,1.386294,5.106397,1 +11,2,0,1,3,229772,0,7369.501,52.09993,0,12,1,37.88546,0,0,0,0,37.88546,0,0,0,1,3,4,76.6,17.2,1,37.5,0,607.2,0,0,1.386294,6.408858,0,0,0,0,1,0,37.5,8.905241,1.386294,3.634567,1 +11,2,0,1,4,229772,0,7369.501,53.09993,0,12,1,547.0161,99.50404,0,0,0,646.5201,0,0,0,8,8,4,76.6,17.2,1,37.5,0,607.2,0,0,1.386294,6.408858,0,0,0,0,1,0,37.5,8.905241,1.386294,6.471604,1 +11,2,0,1,5,229772,0,7369.501,54.09993,0,12,1,210.1275,88.94717,24.33516,0,0,323.4099,0,0,0,4,5,4,76.6,17.2,1,37.5,0,607.2,0,0,1.386294,6.408858,0,0,0,0,1,0,37.5,8.905241,1.386294,5.77892,1 +11,2,0,1,1,229773,0,7369.501,10.38741,1,12,1,14.11396,0,0,0,0,14.11396,0,0,0,2,0,4,86.7,11.84267,0,100,0,607.2,1,1,1.386294,6.408858,0,0,0,0,0,0,100,8.905241,1.386294,2.647164,1 +11,2,0,1,2,229773,0,7369.501,11.38741,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,11.84267,0,100,0,607.2,1,1,1.386294,6.408858,0,0,0,0,0,0,100,8.905241,1.386294,,0 +11,2,0,1,3,229773,0,7369.501,12.38741,1,12,1,25.11013,2.035242,0,0,0,27.14537,0,0,0,3,0,4,86.7,11.84267,0,100,0,607.2,1,1,1.386294,6.408858,0,0,0,0,0,0,100,8.905241,1.386294,3.301207,1 +11,2,0,1,4,229773,0,7369.501,13.38741,1,12,1,15.12097,9.008064,0,0,0,24.12903,0,0,0,2,0,4,86.7,11.84267,0,100,0,607.2,1,1,1.386294,6.408858,0,0,0,0,0,0,100,8.905241,1.386294,3.183416,1 +11,2,0,1,5,229773,0,7369.501,14.38741,1,12,1,59.01639,12.28415,0,0,0,71.30054,0,0,0,6,0,4,86.7,11.84267,0,100,0,607.2,1,1,1.386294,6.408858,0,0,0,0,0,0,100,8.905241,1.386294,4.266904,1 +11,2,0,1,1,229774,0,7369.501,12.26831,0,12,1,10.45478,0,0,0,0,10.45478,0,0,0,1,0,4,83.3,11.84267,0,88.9,0,607.2,1,0,1.386294,6.408858,0,0,0,0,0,0,88.9,8.905241,1.386294,2.34706,1 +11,2,0,1,2,229774,0,7369.501,13.26831,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,11.84267,0,88.9,0,607.2,1,0,1.386294,6.408858,0,0,0,0,0,0,88.9,8.905241,1.386294,,0 +11,2,0,1,3,229774,0,7369.501,14.26831,0,12,1,6.60793,0,26.51982,0,0,33.12775,0,0,0,1,0,4,83.3,11.84267,0,88.9,0,607.2,1,0,1.386294,6.408858,0,0,0,0,0,0,88.9,8.905241,1.386294,3.500371,1 +11,2,0,1,4,229774,0,7369.501,15.26831,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,11.84267,0,88.9,0,607.2,1,0,1.386294,6.408858,0,0,0,0,0,0,88.9,8.905241,1.386294,,0 +11,2,0,1,5,229774,0,7369.501,16.26831,0,12,1,16.39344,0,0,0,0,16.39344,0,0,0,1,0,4,83.3,11.84267,0,88.9,0,607.2,1,0,1.386294,6.408858,0,0,0,0,0,0,88.9,8.905241,1.386294,2.796881,1 +13,2,0,1,1,229799,0,19802.93,1.451061,0,14,1,67.21269,18.44514,0,0,0,85.65783,0,0,0,9,0,4,81.35272,11.84267,1,66.7,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,66.7,9.893636,1.386294,4.450361,1 +13,2,0,1,2,229799,0,19802.93,2.451061,0,14,1,273.8892,14.2666,0,0,307.6684,595.8242,1,0,0,11,31,4,81.35272,11.84267,1,66.7,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,66.7,9.893636,1.386294,6.389946,1 +13,2,0,1,3,229799,0,19802.93,3.451061,0,14,1,565.8472,49.06058,0,0,0,614.9078,0,0,0,14,70,4,81.35272,11.84267,1,66.7,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,66.7,9.893636,1.386294,6.421473,1 +13,2,0,1,1,229800,0,19802.93,3.175907,1,14,1,121.8149,147.9043,32.19449,0,0,301.9137,0,0,0,14,0,4,81.35272,11.84267,0,66.7,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,66.7,9.893636,1.386294,5.710141,1 +13,2,0,1,2,229800,0,19802.93,4.175907,1,14,1,65.45628,77.77831,0,0,0,143.2346,0,0,0,8,0,4,81.35272,11.84267,0,66.7,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,66.7,9.893636,1.386294,4.964484,1 +13,2,0,1,3,229800,0,19802.93,5.175907,1,14,1,517.5593,83.55136,30.61018,0,0,631.7208,0,0,0,17,0,4,81.35272,11.84267,0,66.7,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,66.7,9.893636,1.386294,6.448448,1 +13,2,0,1,1,229801,0,19802.93,31.14031,1,14,1,29.38118,13.46334,0,0,0,42.84451,0,0,0,1,1,4,73.2,17.2,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.893636,1.386294,3.757578,1 +13,2,0,1,2,229801,0,19802.93,32.14032,1,14,1,75.48973,81.11324,0,0,206.2112,362.8141,1,0,0,5,0,4,73.2,17.2,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.893636,1.386294,5.893891,1 +13,2,0,1,3,229801,0,19802.93,33.14032,1,14,1,31.71642,21.30816,0,0,0,53.02458,0,0,0,2,0,4,73.2,17.2,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.893636,1.386294,3.970756,1 +13,2,0,1,1,229802,0,19802.93,32.65435,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,76.6,3.4,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,89.8,9.893636,1.386294,,0 +13,2,0,1,2,229802,0,19802.93,33.65435,0,16,1,40.37267,12.12136,34.73483,0,0,87.22886,0,0,0,3,0,4,76.6,3.4,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,89.8,9.893636,1.386294,4.468535,1 +13,2,0,1,3,229802,0,19802.93,34.65435,0,16,1,35.27217,41.47937,26.03161,0,0,102.7831,0,0,0,3,0,4,76.6,3.4,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,89.8,9.893636,1.386294,4.632621,1 +16,2,95,0,1,229812,0,10601.75,53.90007,0,14,1,8.243174,2.189593,0,0,0,10.43277,0,0,0,1,0,1,93.1,13.8,0,71.6,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.268869,0,2.344952,1 +16,2,95,0,2,229812,0,10601.75,54.90007,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,93.1,13.8,0,71.6,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.268869,0,,0 +16,2,95,0,3,229812,0,10601.75,55.90007,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,93.1,13.8,0,71.6,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.268869,0,,0 +16,2,95,0,4,229812,0,10601.75,56.90007,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,93.1,13.8,0,71.6,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.268869,0,,0 +16,2,95,0,5,229812,0,10601.75,57.90007,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,93.1,13.8,0,71.6,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.268869,0,,0 +6,2,25,0,1,229823,0,5543.108,27.29637,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,58,3.4,0,64.8,715.9,715.9,0,0,0,6.573541,0,3.258096,7.959835,1,0,0,64.8,8.620491,0,,0 +6,2,25,0,2,229823,0,5543.108,28.29637,0,16,1,35.35595,0,0,0,0,35.35595,0,0,0,3,1,1,58,3.4,0,64.8,715.9,715.9,0,0,0,6.573541,0,3.258096,7.959835,1,0,0,64.8,8.620491,0,3.565467,1 +6,2,25,0,3,229823,0,5543.108,29.29637,0,16,1,5.267779,0,0,0,0,5.267779,0,0,0,1,0,1,58,3.4,0,64.8,715.9,715.9,0,0,0,6.573541,0,3.258096,7.959835,1,0,0,64.8,8.620491,0,1.661609,1 +11,2,0,0,1,229826,0,17655.13,16.07666,0,10,1,12.4805,6.432657,0,0,0,18.91316,0,0,0,2,0,5,68.8,0,0,61.4,0,336.24,1,0,1.609438,5.817825,0,0,0,1,0,0,61.4,9.778838,1.609438,2.939858,1 +11,2,0,0,2,229826,0,17655.13,17.07666,0,10,1,61.63402,40.57334,0,0,0,102.2074,0,0,0,4,0,5,68.8,0,0,61.4,0,336.24,1,0,1.609438,5.817825,0,0,0,1,0,0,61.4,9.778838,1.609438,4.627004,1 +11,2,0,0,3,229826,0,17655.13,18.07666,0,10,1,61.8964,25.39508,0,0,0,87.29148,0,0,0,6,0,4,68.8,0,0,61.4,0,336.24,0,0,1.386294,5.817825,0,0,0,1,0,0,61.4,9.778838,1.386294,4.469253,1 +11,2,0,0,1,229827,0,17655.13,38.17112,1,10,1,87.6235,45.24181,33.79615,0,0,166.6615,0,0,0,10,0,5,80.3,27.6,0,65.9,0,336.24,0,0,1.609438,5.817825,0,0,0,1,0,0,65.9,9.778838,1.609438,5.115964,1 +11,2,0,0,2,229827,0,17655.13,39.17112,1,10,1,49.68944,33.41615,0,0,0,83.10559,0,0,0,8,0,5,80.3,27.6,0,65.9,0,336.24,0,0,1.609438,5.817825,0,0,0,1,0,0,65.9,9.778838,1.609438,4.420112,1 +11,2,0,0,3,229827,0,17655.13,40.17112,1,10,1,91.19842,93.3626,0,0,0,184.561,0,0,0,5,0,4,80.3,27.6,0,65.9,0,336.24,0,0,1.386294,5.817825,0,0,0,1,0,0,65.9,9.778838,1.386294,5.21798,1 +11,2,0,0,1,229828,0,17655.13,18.16564,0,11,1,65.0026,25.28861,0,0,0,90.29121,0,0,0,9,0,5,78.2,6.9,0,81.8,0,336.24,0,0,1.609438,5.817825,0,0,0,0,0,0,81.8,9.778838,1.609438,4.50304,1 +11,2,0,0,2,229828,0,17655.13,19.16564,0,11,1,26.75585,9.818442,0,0,0,36.5743,0,0,0,2,0,5,78.2,6.9,0,81.8,0,336.24,0,0,1.609438,5.817825,0,0,0,0,0,0,81.8,9.778838,1.609438,3.599346,1 +11,2,0,0,3,229828,0,17655.13,20.16564,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,78.2,6.9,0,81.8,0,336.24,0,0,1.386294,5.817825,0,0,0,0,0,0,81.8,9.778838,1.386294,,0 +11,2,0,0,1,229829,0,17655.13,19.54552,1,12,1,121.6849,41.99688,0,0,0,163.6817,0,0,0,9,0,5,73.4,3.4,0,62.5,0,336.24,0,0,1.609438,5.817825,0,0,0,0,0,0,62.5,9.778838,1.609438,5.097924,1 +11,2,0,0,2,229829,0,17655.13,20.54552,1,12,1,118.7291,31.23746,0,0,0,149.9666,0,0,0,11,0,5,73.4,3.4,0,62.5,0,336.24,0,0,1.609438,5.817825,0,0,0,0,0,0,62.5,9.778838,1.609438,5.010412,1 +11,2,0,0,1,229830,0,17655.13,30.0616,0,12,1,60.84243,0,0,0,0,60.84243,0,0,0,4,0,5,80.3,10.3,0,64.8,0,336.24,0,0,1.609438,5.817825,0,0,0,1,0,0,64.8,9.778838,1.609438,4.108287,1 +11,2,0,0,2,229830,0,17655.13,31.0616,0,12,1,14.33349,9.268991,0,0,0,23.60248,0,0,0,2,0,5,80.3,10.3,0,64.8,0,336.24,0,0,1.609438,5.817825,0,0,0,1,0,0,64.8,9.778838,1.609438,3.161352,1 +11,2,0,0,3,229830,0,17655.13,32.0616,0,12,1,9.657595,0,0,0,0,9.657595,0,0,0,1,0,4,80.3,10.3,0,64.8,0,336.24,0,0,1.386294,5.817825,0,0,0,1,0,0,64.8,9.778838,1.386294,2.267745,1 +11,2,0,0,1,229833,0,11348.97,3.381246,1,16,1,20.80083,3.884555,0,0,0,24.68539,0,0,0,3,0,5,81.35272,11.84267,0,70.4,0,0,1,1,1.609438,0,0,0,0,0,0,0,70.4,9.33697,1.609438,3.206211,1 +11,2,0,0,2,229833,0,11348.97,4.381246,1,16,1,38.70043,5.475394,0,0,0,44.17582,0,0,0,5,0,5,81.35272,11.84267,0,70.4,0,0,1,1,1.609438,0,0,0,0,0,0,0,70.4,9.33697,1.609438,3.788178,1 +11,2,0,0,3,229833,0,11348.97,5.381246,1,16,1,13.16945,0,0,0,0,13.16945,0,0,0,2,0,5,81.35272,11.84267,0,70.4,0,0,1,1,1.609438,0,0,0,0,0,0,0,70.4,9.33697,1.609438,2.577899,1 +11,2,0,0,1,229834,0,11348.97,33.05133,1,16,1,40.0416,13.48414,21.84087,0,1760.208,1835.575,2,0,0,2,2,5,77.7,10.3,0,73.9,0,0,0,0,1.609438,0,0,0,0,0,0,0,73.9,9.33697,1.609438,7.515113,1 +11,2,0,0,2,229834,0,11348.97,34.05133,1,16,1,102.2456,21.47635,0,0,0,123.7219,0,0,0,9,0,5,77.7,10.3,0,73.9,0,0,0,0,1.609438,0,0,0,0,0,0,0,73.9,9.33697,1.609438,4.818037,1 +11,2,0,0,3,229834,0,11348.97,35.05133,1,16,1,65.84724,0,17.55926,0,0,83.40649,0,0,0,3,1,5,77.7,10.3,0,73.9,0,0,0,0,1.609438,0,0,0,0,0,0,0,73.9,9.33697,1.609438,4.423726,1 +11,2,0,0,1,229835,0,11348.97,34.03422,0,16,1,15.60062,0,39.00156,0,0,54.60218,0,0,0,0,1,5,89.9,3.4,0,60.7,0,0,0,0,1.609438,0,0,0,0,0,0,0,60.7,9.33697,1.609438,4.000074,1 +11,2,0,0,2,229835,0,11348.97,35.03422,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,89.9,3.4,0,60.7,0,0,0,0,1.609438,0,0,0,0,0,0,0,60.7,9.33697,1.609438,,0 +11,2,0,0,3,229835,0,11348.97,36.03422,0,16,1,8.779632,0,26.77788,0,0,35.55751,0,0,0,0,1,5,89.9,3.4,0,60.7,0,0,0,0,1.609438,0,0,0,0,0,0,0,60.7,9.33697,1.609438,3.571151,1 +11,2,0,0,1,229836,0,11348.97,9.38809,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,78.3,11.84267,0,81.5,0,0,1,1,1.609438,0,0,0,0,0,0,0,81.5,9.33697,1.609438,,0 +11,2,0,0,2,229836,0,11348.97,10.38809,1,16,1,42.76159,0,0,0,0,42.76159,0,0,0,4,0,5,78.3,11.84267,0,81.5,0,0,1,1,1.609438,0,0,0,0,0,0,0,81.5,9.33697,1.609438,3.75564,1 +11,2,0,0,3,229836,0,11348.97,11.38809,1,16,1,34.67954,0,0,0,0,34.67954,0,0,0,4,0,5,78.3,11.84267,0,81.5,0,0,1,1,1.609438,0,0,0,0,0,0,0,81.5,9.33697,1.609438,3.54615,1 +11,2,0,0,1,229837,0,11348.97,1.587953,0,16,1,112.3245,17.60271,0,0,0,129.9272,0,0,0,12,0,5,81.35272,11.84267,0,70.4,0,0,1,0,1.609438,0,0,0,0,0,0,0,70.4,9.33697,1.609438,4.866974,1 +11,2,0,0,2,229837,0,11348.97,2.587954,0,16,1,77.87865,14.32394,7.520306,0,0,99.72289,0,0,0,12,0,5,81.35272,11.84267,0,70.4,0,0,1,0,1.609438,0,0,0,0,0,0,0,70.4,9.33697,1.609438,4.602395,1 +11,2,0,0,3,229837,0,11348.97,3.587954,0,16,1,59.70149,0,0,0,0,59.70149,0,0,0,6,0,5,81.35272,11.84267,0,70.4,0,0,1,0,1.609438,0,0,0,0,0,0,0,70.4,9.33697,1.609438,4.089357,1 +13,2,0,1,1,229838,0,4183.578,27.92882,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,72.3,3.4,0,100,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,100,8.339161,0,,0 +13,2,0,1,2,229838,0,4183.578,28.92882,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,72.3,3.4,0,100,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,100,8.339161,0,,0 +13,2,0,1,3,229838,0,4183.578,29.92882,0,16,1,17.55926,0,0,0,0,17.55926,0,0,0,1,0,1,72.3,3.4,0,100,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,100,8.339161,0,2.865582,1 +13,2,0,1,4,229838,0,4183.578,30.92882,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,72.3,3.4,0,100,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,100,8.339161,0,,0 +13,2,0,1,5,229838,0,4183.578,31.92882,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,72.3,3.4,0,100,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,100,8.339161,0,,0 +15,2,95,0,1,229845,0,10120.16,46.5681,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,95.2,3.4,0,88.6,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.222383,.6931472,,0 +15,2,95,0,2,229845,0,10120.16,47.5681,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,95.2,3.4,0,88.6,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.222383,.6931472,,0 +15,2,95,0,3,229845,0,10120.16,48.5681,0,12,1,0,0,0,0,1203.783,1203.783,1,0,0,0,0,2,95.2,3.4,0,88.6,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.222383,.6931472,7.093225,1 +15,2,95,0,4,229845,0,10120.16,49.5681,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,95.2,3.4,0,88.6,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.222383,.6931472,,0 +15,2,95,0,5,229845,0,10120.16,50.5681,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,95.2,3.4,0,88.6,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.222383,.6931472,,0 +15,2,95,0,1,229846,0,10120.16,18.31075,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,38.8,10.3,1,60.2,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,60.2,9.222383,.6931472,,0 +15,2,95,0,2,229846,0,10120.16,19.31075,0,11,1,190.3422,0,0,14.0647,0,190.3422,0,0,1,5,0,2,38.8,10.3,1,60.2,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,60.2,9.222383,.6931472,5.248824,1 +15,2,95,0,3,229846,0,10120.16,20.31075,0,11,1,12.46776,0,0,0,1391.84,1404.308,2,0,0,2,0,2,38.8,10.3,1,60.2,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,60.2,9.222383,.6931472,7.2473,1 +15,2,95,0,4,229846,0,10120.16,21.31075,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,38.8,10.3,1,60.2,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,60.2,9.222383,.6931472,,0 +15,2,95,0,5,229846,0,10120.16,22.31075,0,11,1,70.62987,0,0,0,277.6504,348.2802,1,0,0,2,0,2,38.8,10.3,1,60.2,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,60.2,9.222383,.6931472,5.853007,1 +13,2,0,0,1,229847,0,8130.792,25.57153,0,17,1,47.84192,3.957358,17.4207,0,0,69.21997,0,0,0,3,1,2,80.9,13.8,0,86.4,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,86.4,9.003536,.6931472,4.237289,1 +13,2,0,0,2,229847,0,8130.792,26.57153,0,17,1,0,0,0,0,0,0,0,0,0,0,0,2,80.9,13.8,0,86.4,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,86.4,9.003536,.6931472,,0 +13,2,0,0,3,229847,0,8130.792,27.57153,0,17,1,57.85777,0,0,0,0,57.85777,0,0,0,0,2,2,80.9,13.8,0,86.4,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,86.4,9.003536,.6931472,4.057988,1 +13,2,0,0,4,229847,0,8130.792,28.57153,0,17,1,43.07938,0,29.4296,0,0,72.50897,0,0,0,1,1,2,80.9,13.8,0,86.4,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,86.4,9.003536,.6931472,4.28371,1 +13,2,0,0,5,229847,0,8130.792,29.57153,0,17,1,29.73169,0,28.56418,0,0,58.29587,0,0,0,0,1,2,80.9,13.8,0,86.4,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,86.4,9.003536,.6931472,4.065531,1 +13,2,0,0,1,229848,0,8130.792,23.47707,1,13,1,72.5429,19.39678,32.80811,0,0,124.7478,0,0,0,4,1,2,93.6,3.4,0,93.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,93.2,9.003536,.6931472,4.826294,1 +13,2,0,0,2,229848,0,8130.792,24.47707,1,13,1,0,11.42379,0,0,0,11.42379,0,0,0,0,0,2,93.6,3.4,0,93.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,93.2,9.003536,.6931472,2.435698,1 +13,2,0,0,3,229848,0,8130.792,25.47707,1,13,1,59.37226,30.0439,30.93064,0,0,120.3468,0,0,0,4,1,2,93.6,3.4,0,93.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,93.2,9.003536,.6931472,4.790378,1 +13,2,0,0,4,229848,0,8130.792,26.47707,1,13,1,145.6522,46.00319,0,0,0,191.6554,0,0,0,44,0,2,93.6,3.4,0,93.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,93.2,9.003536,.6931472,5.255699,1 +13,2,0,0,5,229848,0,8130.792,27.47707,1,13,1,195.0689,20.18492,27.47643,0,0,242.7302,0,0,0,57,3,2,93.6,3.4,0,93.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,93.2,9.003536,.6931472,5.491951,1 +13,2,0,1,1,229878,0,15204.69,12.13689,0,16,1,50.052,0,0,0,0,50.052,0,0,0,5,0,5,83.3,11.84267,0,70.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.4,9.629425,1.609438,3.913063,1 +13,2,0,1,2,229878,0,15204.69,13.13689,0,16,1,133.3015,7.35786,24.36694,137.6015,1287.74,1452.766,2,0,31,11,0,5,83.3,11.84267,0,70.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.4,9.629425,1.609438,7.281225,1 +13,2,0,1,3,229878,0,15204.69,14.13689,0,16,1,38.19139,0,7.023705,42.14223,0,45.2151,0,0,13,3,0,5,83.3,11.84267,0,70.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.4,9.629425,1.609438,3.811431,1 +13,2,0,1,1,229879,0,15204.69,16.33949,0,16,1,18.33073,5.200208,0,0,0,23.53094,0,0,0,2,0,5,58,10.3,0,69.3,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,69.3,9.629425,1.609438,3.158316,1 +13,2,0,1,2,229879,0,15204.69,17.33949,0,16,1,16.72241,2.293359,23.88915,137.6015,0,42.90492,0,0,31,1,0,5,58,10.3,0,69.3,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,69.3,9.629425,1.609438,3.758986,1 +13,2,0,1,3,229879,0,15204.69,18.33949,0,16,1,258.5382,12.48903,31.72959,42.14223,13776.92,14079.68,2,0,13,11,0,5,58,10.3,0,69.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,69.3,9.629425,1.609438,9.552488,1 +13,2,0,1,1,229880,0,15204.69,40.49281,1,16,1,135.5434,17.5403,0,371.8149,0,153.0837,0,0,15,4,0,5,28.2,17.2,0,46.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,46.6,9.629425,1.609438,5.030985,1 +13,2,0,1,2,229880,0,15204.69,41.49281,1,16,1,44.43383,97.94553,15.28906,730.0526,0,157.6684,0,0,45,5,0,5,28.2,17.2,0,46.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,46.6,9.629425,1.609438,5.060494,1 +13,2,0,1,3,229880,0,15204.69,42.49281,1,16,1,92.62511,124.6708,25.02195,937.0325,1393.064,1635.382,2,0,62,6,0,5,28.2,17.2,0,46.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,46.6,9.629425,1.609438,7.399632,1 +13,2,0,1,1,229881,0,15204.69,44.15332,0,19,1,25.48102,9.916797,0,0,0,35.39782,0,0,0,2,0,5,80.3,17.2,0,73.9,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,73.9,9.629425,1.609438,3.56665,1 +13,2,0,1,2,229881,0,15204.69,45.15332,0,19,1,29.14477,15.48017,16.72241,137.6015,0,61.34735,0,0,31,3,0,5,80.3,17.2,0,73.9,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,73.9,9.629425,1.609438,4.116552,1 +13,2,0,1,3,229881,0,15204.69,46.15332,0,19,1,37.31343,21.35645,9.218613,548.9728,606.6945,674.5829,1,0,54,3,0,5,80.3,17.2,0,73.9,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,73.9,9.629425,1.609438,6.514095,1 +13,2,0,1,1,229882,0,15204.69,15.03354,0,16,1,7.280291,0,0,45.50182,0,7.280291,0,0,4,1,0,5,77.6,10.3,0,75,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,75,9.629425,1.609438,1.985171,1 +13,2,0,1,2,229882,0,15204.69,16.03354,0,16,1,0,0,0,137.6015,0,0,0,0,31,0,0,5,77.6,10.3,0,75,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,75,9.629425,1.609438,,0 +13,2,0,1,3,229882,0,15204.69,17.03354,0,16,1,4.389816,0,0,804.324,0,4.389816,0,0,52,0,0,5,77.6,10.3,0,75,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,75,9.629425,1.609438,1.479287,1 +13,2,0,1,1,229888,0,8812.903,8.358659,0,15,1,28.34113,16.04264,0,0,0,44.38377,0,0,0,0,0,4,93.3,11.84267,0,85.2,450,195.27,1,0,1.386294,5.274383,1,4.564348,6.160541,0,0,0,85.2,9.084085,1.386294,3.792874,1 +13,2,0,1,2,229888,0,8812.903,9.358659,0,15,1,0,16.98519,0,0,0,16.98519,0,0,0,0,0,4,93.3,11.84267,0,85.2,450,195.27,1,0,1.386294,5.274383,1,4.564348,6.160541,0,0,0,85.2,9.084085,1.386294,2.832342,1 +13,2,0,1,3,229888,0,8812.903,10.35866,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,93.3,11.84267,0,85.2,450,195.27,1,0,1.386294,5.274383,1,4.564348,6.160541,0,0,0,85.2,9.084085,1.386294,,0 +13,2,0,1,1,229889,0,8812.903,34.27242,1,15,1,81.77327,23.73895,0,0,0,105.5122,0,0,0,3,0,4,78.7,10.3,0,86.4,450,195.27,0,0,1.386294,5.274383,1,4.564348,6.160541,0,0,0,86.4,9.084085,1.386294,4.658827,1 +13,2,0,1,2,229889,0,8812.903,35.27242,1,15,1,6.21118,6.765409,0,0,0,12.97659,0,0,0,0,0,4,78.7,10.3,0,86.4,450,195.27,0,0,1.386294,5.274383,1,4.564348,6.160541,0,0,0,86.4,9.084085,1.386294,2.563147,1 +13,2,0,1,3,229889,0,8812.903,36.27242,1,15,1,0,0,0,0,0,0,0,0,0,0,0,4,78.7,10.3,0,86.4,450,195.27,0,0,1.386294,5.274383,1,4.564348,6.160541,0,0,0,86.4,9.084085,1.386294,,0 +13,2,0,1,1,229890,0,8812.903,35.154,0,20,1,23.40094,0,30.49402,0,0,53.89495,0,0,0,1,1,4,82.4,0,0,78.4,450,195.27,0,0,1.386294,5.274383,1,4.564348,6.160541,0,0,0,78.4,9.084085,1.386294,3.987037,1 +13,2,0,1,2,229890,0,8812.903,36.154,0,20,1,89.82322,8.499762,0,0,0,98.32298,0,0,0,2,0,4,82.4,0,0,78.4,450,195.27,0,0,1.386294,5.274383,1,4.564348,6.160541,0,0,0,78.4,9.084085,1.386294,4.588258,1 +13,2,0,1,3,229890,0,8812.903,37.154,0,20,1,14.81563,0,0,0,0,14.81563,0,0,0,1,0,4,82.4,0,0,78.4,450,195.27,0,0,1.386294,5.274383,1,4.564348,6.160541,0,0,0,78.4,9.084085,1.386294,2.695683,1 +13,2,0,1,1,229891,0,8812.903,6.198494,0,15,1,13.00052,3.957358,0,0,0,16.95788,0,0,0,1,0,4,93.3,11.84267,0,96.3,450,195.27,1,0,1.386294,5.274383,1,4.564348,6.160541,0,0,0,96.3,9.084085,1.386294,2.830733,1 +13,2,0,1,2,229891,0,8812.903,7.198494,0,15,1,16.00573,0,0,0,0,16.00573,0,0,0,1,0,4,93.3,11.84267,0,96.3,450,195.27,1,0,1.386294,5.274383,1,4.564348,6.160541,0,0,0,96.3,9.084085,1.386294,2.772947,1 +13,2,0,1,3,229891,0,8812.903,8.198494,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,93.3,11.84267,0,96.3,450,195.27,1,0,1.386294,5.274383,1,4.564348,6.160541,0,0,0,96.3,9.084085,1.386294,,0 +16,2,95,0,1,229907,0,4181.818,24.69815,0,12,1,12.44204,0,0,0,0,12.44204,0,0,0,1,0,1,86.7,10.3,0,59.1,848.4,848.4,0,0,0,6.743352,0,4.564348,6.794645,1,0,0,59.1,8.33874,0,2.521081,1 +16,2,95,0,2,229907,0,4181.818,25.69815,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,10.3,0,59.1,848.4,848.4,0,0,.6931472,6.743352,0,4.564348,6.794645,1,0,0,59.1,8.33874,.6931472,,0 +16,2,95,0,3,229907,0,4181.818,26.69815,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,10.3,0,59.1,848.4,848.4,0,0,.6931472,6.743352,0,4.564348,6.794645,1,0,0,59.1,8.33874,.6931472,,0 +16,2,95,0,4,229907,0,4181.818,27.69815,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,10.3,0,59.1,848.4,848.4,0,0,.6931472,6.743352,0,4.564348,6.794645,1,0,0,59.1,8.33874,.6931472,,0 +16,2,95,0,5,229907,0,4181.818,28.69815,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,10.3,0,59.1,848.4,848.4,0,0,.6931472,6.743352,0,4.564348,6.794645,1,0,0,59.1,8.33874,.6931472,,0 +11,2,0,0,1,229910,0,8665.641,17.35797,0,11,1,59.82839,0,0,0,0,59.82839,0,0,0,2,0,3,58,6.9,0,52.3,0,0,1,0,1.098612,0,0,0,0,1,0,0,52.3,9.067237,1.098612,4.09148,1 +11,2,0,0,2,229910,0,8665.641,18.35797,0,11,1,33.9226,7.095079,0,0,0,41.01768,0,0,0,2,0,3,58,6.9,0,52.3,0,0,0,0,1.098612,0,0,0,0,1,0,0,52.3,9.067237,1.098612,3.714003,1 +11,2,0,0,1,229911,0,8665.641,14.51335,0,11,1,30.94124,0,0,0,0,30.94124,0,0,0,2,0,3,53.2,10.3,0,87.5,0,0,1,0,1.098612,0,0,0,0,1,0,0,87.5,9.067237,1.098612,3.43209,1 +11,2,0,0,2,229911,0,8665.641,15.51335,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,53.2,10.3,0,87.5,0,0,1,0,1.098612,0,0,0,0,1,0,0,87.5,9.067237,1.098612,,0 +11,2,0,0,3,229911,0,8665.641,16.51335,0,11,1,23.37577,2.172959,0,0,0,25.54873,0,0,0,1,0,2,53.2,10.3,0,87.5,0,0,1,0,.6931472,0,0,0,0,1,0,0,87.5,9.067237,.6931472,3.240587,1 +11,2,0,0,1,229912,0,8665.641,35.45243,1,11,1,18.98076,11.90848,0,0,0,30.88924,0,0,0,1,0,3,43.6,27.6,1,70.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,70.5,9.067237,1.098612,3.430408,1 +11,2,0,0,2,229912,0,8665.641,36.45243,1,11,1,49.68944,12.18347,0,0,0,61.87291,0,0,0,4,0,3,43.6,27.6,1,70.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,70.5,9.067237,1.098612,4.125082,1 +11,2,0,0,3,229912,0,8665.641,37.45243,1,11,1,80.55312,19.20544,0,0,0,99.75856,0,0,0,4,0,2,43.6,27.6,1,70.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,70.5,9.067237,.6931472,4.602753,1 +5,2,25,1,1,229913,0,6803.519,2.395619,0,12,1,46.00105,13.01098,0,0,0,59.01202,0,0,0,3,0,4,81.35272,11.84267,0,81.5,304,304,1,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,81.5,8.825342,1.386294,4.077741,1 +5,2,25,1,2,229913,0,6803.519,3.395619,0,12,1,312.8544,19.06295,0,0,0,331.9174,0,0,0,33,0,4,81.35272,11.84267,0,81.5,304,304,1,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,81.5,8.825342,1.386294,5.804886,1 +5,2,25,1,3,229913,0,6803.519,4.395619,0,12,1,30.17621,0,0,0,315.3965,345.5727,1,0,0,3,0,4,81.35272,11.84267,0,81.5,304,304,1,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,81.5,8.825342,1.386294,5.845203,1 +5,2,25,1,4,229913,0,6803.519,5.395619,0,12,1,79.33064,1.915323,0,0,0,81.24596,0,0,0,6,0,4,81.35272,11.84267,0,81.5,304,304,1,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,81.5,8.825342,1.386294,4.397481,1 +5,2,25,1,5,229913,0,6803.519,6.395619,0,12,1,42.62295,19.31876,0,0,0,61.94171,0,0,0,5,0,4,81.35272,11.84267,0,81.5,304,304,1,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,81.5,8.825342,1.386294,4.126194,1 +5,2,25,1,1,229914,0,6803.519,22.62012,1,12,1,23.52326,1.641401,0,0,0,25.16466,0,0,0,3,0,4,91,3.4,0,89.8,304,304,0,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,89.8,8.825342,1.386294,3.225441,1 +5,2,25,1,2,229914,0,6803.519,23.62012,1,12,1,17.77991,4.906295,0,0,0,22.68621,0,0,0,1,0,4,91,3.4,0,89.8,304,304,0,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,89.8,8.825342,1.386294,3.121757,1 +5,2,25,1,3,229914,0,6803.519,24.62012,1,12,1,19.82379,0,0,0,0,19.82379,0,0,0,1,0,4,91,3.4,0,89.8,304,304,0,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,89.8,8.825342,1.386294,2.986883,1 +5,2,25,1,4,229914,0,6803.519,25.62012,1,12,1,4.435484,0,0,0,0,4.435484,0,0,0,1,0,4,91,3.4,0,89.8,304,304,0,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,89.8,8.825342,1.386294,1.489637,1 +5,2,25,1,5,229914,0,6803.519,26.62012,1,12,1,5.82878,9.763206,0,0,0,15.59199,0,0,0,1,0,4,91,3.4,0,89.8,304,304,0,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,89.8,8.825342,1.386294,2.746757,1 +5,2,25,1,1,229915,0,6803.519,23.40862,0,13,1,14.6367,0,0,0,0,14.6367,0,0,0,1,0,4,79.3,0,0,85.2,304,304,0,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,85.2,8.825342,1.386294,2.683532,1 +5,2,25,1,2,229915,0,6803.519,24.40862,0,13,1,7.92888,2.609323,0,0,0,10.5382,0,0,0,1,0,4,79.3,0,0,85.2,304,304,0,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,85.2,8.825342,1.386294,2.355007,1 +5,2,25,1,3,229915,0,6803.519,25.40862,0,13,1,0,1.872247,0,0,0,1.872247,0,0,0,0,0,4,79.3,0,0,85.2,304,304,0,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,85.2,8.825342,1.386294,.6271392,1 +5,2,25,1,4,229915,0,6803.519,26.40862,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,79.3,0,0,85.2,304,304,0,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,85.2,8.825342,1.386294,,0 +5,2,25,1,5,229915,0,6803.519,27.40862,0,13,1,52.64117,0,0,0,0,52.64117,0,0,0,1,4,4,79.3,0,0,85.2,304,304,0,0,1.386294,5.717028,0,3.258096,7.103322,0,0,0,85.2,8.825342,1.386294,3.963498,1 +11,2,0,0,1,229919,0,13936.07,30.1629,1,13,1,23.18393,13.41061,0,0,0,36.59454,0,0,0,2,0,4,76.1,3.4,1,80.7,0,0,0,0,1.386294,0,0,0,0,0,0,0,80.7,9.542308,1.386294,3.599899,1 +11,2,0,0,2,229919,0,13936.07,31.1629,1,13,1,15.15152,0,28.22917,0,0,43.38068,0,0,0,1,0,4,76.1,3.4,1,80.7,0,0,0,0,1.386294,0,0,0,0,0,0,0,80.7,9.542308,1.386294,3.770014,1 +11,2,0,0,3,229919,0,13936.07,32.1629,1,13,1,185.0022,11.41309,10.83658,0,0,207.2518,0,0,0,4,9,4,76.1,3.4,1,80.7,0,0,0,0,1.386294,0,0,0,0,0,0,0,80.7,9.542308,1.386294,5.333935,1 +11,2,0,0,1,229920,0,13936.07,33.48118,0,16,1,171.5611,0,12.87996,0,0,184.441,0,0,0,1,4,4,72.9,6.9,0,92,0,0,0,0,1.386294,0,0,0,0,0,0,0,92,9.542308,1.386294,5.21733,1 +11,2,0,0,2,229920,0,13936.07,34.48118,0,16,1,149.2898,8.148674,32.01704,0,0,189.4555,0,0,0,6,0,4,72.9,6.9,0,92,0,0,0,0,1.386294,0,0,0,0,0,0,0,92,9.542308,1.386294,5.244154,1 +11,2,0,0,3,229920,0,13936.07,35.48118,0,16,1,70.65453,11.10533,0,0,0,81.75986,0,0,0,3,0,4,72.9,6.9,0,92,0,0,0,0,1.386294,0,0,0,0,0,0,0,92,9.542308,1.386294,4.403787,1 +11,2,0,0,1,229921,0,13936.07,7.534565,1,13,1,18.03194,0,0,0,0,18.03194,0,0,0,1,1,4,80,11.84267,0,96.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,96.3,9.542308,1.386294,2.892145,1 +11,2,0,0,2,229921,0,13936.07,8.534565,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,80,11.84267,0,96.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,96.3,9.542308,1.386294,,0 +11,2,0,0,3,229921,0,13936.07,9.534565,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,80,11.84267,0,96.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,96.3,9.542308,1.386294,,0 +11,2,0,0,1,229922,0,13936.07,5.360712,0,13,1,47.65585,11.61772,0,0,0,59.27357,0,0,0,7,1,4,91.7,11.84267,0,55.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,55.6,9.542308,1.386294,4.082163,1 +11,2,0,0,2,229922,0,13936.07,6.360712,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,91.7,11.84267,0,55.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,55.6,9.542308,1.386294,,0 +11,2,0,0,3,229922,0,13936.07,7.360712,0,13,1,7.585609,0,0,0,0,7.585609,0,0,0,1,0,4,91.7,11.84267,0,55.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,55.6,9.542308,1.386294,2.026253,1 +16,2,95,1,1,229938,0,14281.53,37.90007,1,16,1,25.09148,19.63408,0,0,0,44.72556,0,0,0,2,0,5,94.1,13.8,0,97.7,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,97.7,9.566792,1.609438,3.800545,1 +16,2,95,1,2,229938,0,14281.53,38.90007,1,16,1,78.23162,2.397886,35.70399,0,0,116.3335,0,0,0,5,1,5,94.1,13.8,0,97.7,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,97.7,9.566792,1.609438,4.756461,1 +16,2,95,1,3,229938,0,14281.53,39.90007,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,94.1,13.8,0,97.7,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,97.7,9.566792,1.609438,,0 +16,2,95,1,4,229938,0,14281.53,40.90007,1,16,1,11.29032,3.842742,0,0,0,15.13306,0,0,0,1,0,5,94.1,13.8,0,97.7,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,97.7,9.566792,1.609438,2.716882,1 +16,2,95,1,5,229938,0,14281.53,41.90007,1,16,1,111.1111,0,46.38251,0,0,157.4936,0,0,0,5,0,5,94.1,13.8,0,97.7,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,97.7,9.566792,1.609438,5.059385,1 +16,2,95,1,1,229939,0,14281.53,37.33333,0,16,1,0,20.26137,0,0,0,20.26137,0,0,0,0,0,5,98.4,6.9,0,88.6,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.566792,1.609438,3.008716,1 +16,2,95,1,2,229939,0,14281.53,38.33333,0,16,1,0,0,27.87122,0,0,27.87122,0,0,0,0,0,5,98.4,6.9,0,88.6,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.566792,1.609438,3.327595,1 +16,2,95,1,3,229939,0,14281.53,39.33333,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,98.4,6.9,0,88.6,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.566792,1.609438,,0 +16,2,95,1,4,229939,0,14281.53,40.33333,0,16,1,60.08065,0,0,0,0,60.08065,0,0,0,5,0,5,98.4,6.9,0,88.6,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.566792,1.609438,4.095688,1 +16,2,95,1,5,229939,0,14281.53,41.33333,0,16,1,329.6903,35.12933,38.61567,0,7858.652,8262.088,2,0,0,5,0,5,98.4,6.9,0,88.6,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.566792,1.609438,9.019433,1 +16,2,95,1,1,229940,0,14281.53,13.99589,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,96.7,11.84267,0,100,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,,0 +16,2,95,1,2,229940,0,14281.53,14.99589,1,16,1,27.15041,0,28.83229,0,0,55.9827,0,0,0,2,0,5,96.7,11.84267,0,100,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,4.025043,1 +16,2,95,1,3,229940,0,14281.53,15.99589,1,16,1,30.837,0,0,0,0,30.837,0,0,0,2,0,5,96.7,11.84267,0,100,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,3.428715,1 +16,2,95,1,4,229940,0,14281.53,16.99589,1,16,1,8.064516,0,0,0,0,8.064516,0,0,0,1,0,5,96.7,11.84267,0,100,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,2.087474,1 +16,2,95,1,5,229940,0,14281.53,17.99589,1,16,1,32.05829,0,21.98907,0,0,54.04736,0,0,0,3,0,5,96.7,11.84267,0,100,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,3.989861,1 +16,2,95,1,1,229941,0,14281.53,11.00068,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,100,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,,0 +16,2,95,1,2,229941,0,14281.53,12.00068,0,16,1,18.50072,0,0,0,0,18.50072,0,0,0,2,0,5,100,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,2.91781,1 +16,2,95,1,3,229941,0,14281.53,13.00068,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,100,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,,0 +16,2,95,1,4,229941,0,14281.53,14.00068,0,16,1,0,9.866936,0,0,0,9.866936,0,0,0,0,0,5,100,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,2.289189,1 +16,2,95,1,5,229941,0,14281.53,15.00068,0,16,1,29.5082,2.892532,5.464481,0,572.4772,610.3425,1,0,0,1,0,5,100,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,6.41402,1 +16,2,95,1,1,229942,0,14281.53,6.398357,0,16,1,36.069,25.53058,0,0,0,61.59958,0,0,0,8,0,5,96.7,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,4.120655,1 +16,2,95,1,2,229942,0,14281.53,7.398357,0,16,1,55.23787,33.3061,0,0,0,88.54397,0,0,0,6,0,5,96.7,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,4.483499,1 +16,2,95,1,3,229942,0,14281.53,8.398357,0,16,1,15.85903,1.832599,0,0,0,17.69163,0,0,0,2,0,5,96.7,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,2.873092,1 +16,2,95,1,4,229942,0,14281.53,9.398357,0,16,1,39.81855,3.701613,0,0,0,43.52016,0,0,0,2,0,5,96.7,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,3.773224,1 +16,2,95,1,5,229942,0,14281.53,10.39836,0,16,1,134.0619,0,0,0,0,134.0619,0,0,0,7,0,5,96.7,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.566792,1.609438,4.898302,1 +13,2,0,0,1,229993,0,6859.824,20.54757,0,13,1,126.0175,0,9.27357,0,0,135.2911,0,0,0,1,9,2,80.9,6.9,0,77.3,300,514.54,0,0,.6931472,6.243273,1,4.564348,5.755076,0,0,0,77.3,8.833583,.6931472,4.907429,1 +13,2,0,0,2,229993,0,6859.824,21.54757,0,13,1,34.09091,0,0,0,0,34.09091,0,0,0,0,6,2,80.9,6.9,0,77.3,300,514.54,0,0,.6931472,6.243273,1,4.564348,5.755076,0,0,0,77.3,8.833583,.6931472,3.529031,1 +13,2,0,0,3,229993,0,6859.824,22.54757,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,80.9,6.9,0,77.3,300,514.54,0,0,.6931472,6.243273,1,4.564348,5.755076,0,0,0,77.3,8.833583,.6931472,,0 +13,2,0,0,1,229994,0,6859.824,54.87201,1,12,1,18.54714,8.191654,0,0,0,26.73879,0,0,0,1,0,2,86.7,10.3,0,71.6,300,514.54,0,0,.6931472,6.243273,1,4.564348,5.755076,0,0,0,71.6,8.833583,.6931472,3.286115,1 +13,2,0,0,2,229994,0,6859.824,55.87201,1,12,1,173.2955,10.02367,0,0,0,183.3191,0,0,0,19,5,2,86.7,10.3,0,71.6,300,514.54,0,0,.6931472,6.243273,1,4.564348,5.755076,0,0,0,71.6,8.833583,.6931472,5.211228,1 +13,2,0,0,3,229994,0,6859.824,56.87201,1,12,1,19.93932,5.656697,0,0,0,25.59601,0,0,0,1,0,2,86.7,10.3,0,71.6,300,514.54,0,0,.6931472,6.243273,1,4.564348,5.755076,0,0,0,71.6,8.833583,.6931472,3.242437,1 +17,2,25,0,1,230004,0,3701.466,25.3963,1,16,1,203.864,24.38434,33.53426,128.7996,0,261.7826,0,0,20,14,1,1,54.8,27.6,0,55.7,75,198.6,0,0,0,5.291293,0,3.258096,5.703783,1,0,0,55.7,8.216755,0,5.567514,1 +17,2,25,0,2,230004,0,3701.466,26.3963,1,16,1,121.9223,47.95928,13.25758,0,0,183.1392,0,0,0,11,0,1,54.8,27.6,0,55.7,75,198.6,0,0,0,5.291293,0,3.258096,5.703783,1,0,0,55.7,8.216755,0,5.210247,1 +17,2,25,0,3,230004,0,3701.466,27.3963,1,16,1,523.4504,15.1062,23.6671,0,0,562.2237,0,0,0,10,32,1,54.8,27.6,0,55.7,75,198.6,0,0,0,5.291293,0,3.258096,5.703783,1,0,0,55.7,8.216755,0,6.3319,1 +17,2,25,0,1,230006,0,8221.701,25.06229,1,16,1,65.62819,12.97242,3.013279,0,0,81.61389,0,0,0,3,1,2,69.1,3.4,0,70.5,250,250,0,0,.6931472,5.521461,0,3.258096,6.907755,0,0,0,70.5,9.014654,.6931472,4.401999,1 +17,2,25,0,2,230006,0,8221.701,26.06229,1,16,1,61.41585,20.58603,0,0,0,82.00188,0,0,0,6,0,2,69.1,3.4,0,70.5,250,250,0,0,.6931472,5.521461,0,3.258096,6.907755,0,0,0,70.5,9.014654,.6931472,4.406742,1 +17,2,25,0,3,230006,0,8221.701,27.06229,1,16,1,62.33878,43.30181,0,0,0,105.6406,0,0,0,6,0,2,69.1,3.4,0,70.5,250,250,0,0,.6931472,5.521461,0,3.258096,6.907755,0,0,0,70.5,9.014654,.6931472,4.660043,1 +14,2,95,1,1,230021,0,7490.909,11.83573,1,12,1,86.19968,0,0,0,0,86.19968,0,0,0,7,0,3,80,11.84267,0,96.3,420,420,1,1,1.098612,6.040255,0,4.564348,6.091548,0,0,0,96.3,8.921579,1.098612,4.456666,1 +14,2,95,1,2,230021,0,7490.909,12.83573,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,80,11.84267,0,96.3,420,420,1,1,1.098612,6.040255,0,4.564348,6.091548,0,0,0,96.3,8.921579,1.098612,,0 +14,2,95,1,3,230021,0,7490.909,13.83573,1,12,1,58.48018,13.85463,0,0,0,72.3348,0,0,0,6,0,3,80,11.84267,0,96.3,420,420,1,1,1.098612,6.040255,0,4.564348,6.091548,0,0,0,96.3,8.921579,1.098612,4.281305,1 +14,2,95,1,1,230022,0,7490.909,10.55168,1,12,1,64.57397,5.462624,0,0,0,70.03659,0,0,0,6,0,3,83.3,11.84267,0,96.3,420,420,1,1,1.098612,6.040255,0,4.564348,6.091548,0,0,0,96.3,8.921579,1.098612,4.249018,1 +14,2,95,1,2,230022,0,7490.909,11.55168,1,12,1,30.75444,0,.4805382,0,0,31.23498,0,0,0,2,0,3,83.3,11.84267,0,96.3,420,420,1,1,1.098612,6.040255,0,4.564348,6.091548,0,0,0,96.3,8.921579,1.098612,3.441539,1 +14,2,95,1,3,230022,0,7490.909,12.55168,1,12,1,18.5022,0,0,0,0,18.5022,0,0,0,2,0,3,83.3,11.84267,0,96.3,420,420,1,1,1.098612,6.040255,0,4.564348,6.091548,0,0,0,96.3,8.921579,1.098612,2.91789,1 +14,2,95,1,1,230023,0,7490.909,36.24641,1,12,1,31.36435,0,0,0,0,31.36435,0,0,0,2,0,3,68.1,6.9,0,86.4,420,420,0,0,1.098612,6.040255,0,4.564348,6.091548,0,0,0,86.4,8.921579,1.098612,3.445672,1 +14,2,95,1,2,230023,0,7490.909,37.24641,1,12,1,21.62422,0,0,0,0,21.62422,0,0,0,2,0,3,68.1,6.9,0,86.4,420,420,0,0,1.098612,6.040255,0,4.564348,6.091548,0,0,0,86.4,8.921579,1.098612,3.073814,1 +14,2,95,1,3,230023,0,7490.909,38.24641,1,12,1,43.8326,13.56828,0,0,0,57.40088,0,0,0,3,0,3,68.1,6.9,0,86.4,420,420,0,0,1.098612,6.040255,0,4.564348,6.091548,0,0,0,86.4,8.921579,1.098612,4.05006,1 +15,2,95,0,1,230024,0,8607.038,52.0794,1,14,1,105.6157,104.6059,0,0,0,210.2215,0,0,0,5,0,3,53.7,20.7,1,71.6,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.060452,1.098612,5.348162,1 +15,2,95,0,2,230024,0,8607.038,53.0794,1,14,1,43.08712,82.87405,0,0,0,125.9612,0,0,0,5,0,3,53.7,20.7,1,71.6,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.060452,1.098612,4.835974,1 +15,2,95,0,3,230024,0,8607.038,54.0794,1,14,1,74.77243,62.49241,0,0,0,137.2648,0,0,0,4,0,3,53.7,20.7,1,71.6,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.060452,1.098612,4.921912,1 +15,2,95,0,1,230025,0,8607.038,18.19302,0,11,1,32.97269,0,0,0,0,32.97269,0,0,0,2,0,3,80.3,6.9,0,78.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,78.4,9.060452,1.098612,3.49568,1 +15,2,95,0,2,230025,0,8607.038,19.19302,0,11,1,91.78503,1.302083,0,0,0,93.08712,0,0,0,5,0,3,80.3,6.9,0,78.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,78.4,9.060452,1.098612,4.533536,1 +15,2,95,0,3,230025,0,8607.038,20.19302,0,11,1,364.1092,1.972258,0,0,0,366.0815,0,0,0,1,0,3,80.3,6.9,0,78.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,78.4,9.060452,1.098612,5.902856,1 +15,2,95,0,1,230026,0,8607.038,22.74607,1,16,1,19.26842,58.67594,0,0,0,77.94436,0,0,0,3,0,3,61.2,17.2,1,51.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,51.1,9.060452,1.098612,4.355995,1 +15,2,95,0,2,230026,0,8607.038,23.74607,1,16,1,28.88258,34.80114,0,0,0,63.68371,0,0,0,3,0,3,61.2,17.2,1,51.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,51.1,9.060452,1.098612,4.153929,1 +15,2,95,0,3,230026,0,8607.038,24.74607,1,16,1,74.44733,47.36888,0,912.4404,0,121.8162,0,0,47,3,0,3,61.2,17.2,1,51.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,51.1,9.060452,1.098612,4.802514,1 +13,2,0,0,1,230030,0,9126.687,23.30732,1,14,1,0,4.250386,0,0,0,4.250386,0,0,0,0,0,2,81.4,6.9,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.119067,.6931472,1.44701,1 +13,2,0,0,2,230030,0,9126.687,24.30732,1,14,1,0,0,0,0,0,0,0,0,0,0,0,2,81.4,6.9,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.119067,.6931472,,0 +13,2,0,0,3,230030,0,9126.687,25.30732,1,14,1,0,0,0,0,0,0,0,0,0,0,0,2,81.4,6.9,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.119067,.6931472,,0 +13,2,0,0,4,230030,0,9126.687,26.30732,1,14,1,0,0,0,0,0,0,0,0,0,0,0,2,81.4,6.9,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.119067,.6931472,,0 +13,2,0,0,5,230030,0,9126.687,27.30732,1,14,1,0,0,0,0,0,0,0,0,0,0,0,2,81.4,6.9,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.119067,.6931472,,0 +13,2,0,0,1,230032,0,9126.687,58.57906,1,10,1,21.12313,1.803194,0,0,0,22.92633,0,0,0,1,0,2,69.7,24.1,0,58,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,58,9.119067,.6931472,3.132286,1 +13,2,0,0,2,230032,0,9126.687,59.57906,1,10,1,22.25379,5.066288,61.92235,0,0,89.24242,0,0,0,2,1,2,69.7,24.1,0,58,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,58,9.119067,.6931472,4.491356,1 +13,2,0,0,3,230032,0,9126.687,60.57906,1,10,1,6.501951,1.278717,0,0,0,7.780667,0,0,0,1,0,2,69.7,24.1,0,58,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,58,9.119067,.6931472,2.051642,1 +13,2,0,0,4,230032,0,9126.687,61.57906,1,10,1,19.69279,0,0,0,0,19.69279,0,0,0,1,0,2,69.7,24.1,0,58,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,58,9.119067,.6931472,2.980253,1 +13,2,0,0,5,230032,0,9126.687,62.57906,1,10,1,77.28086,5.191413,0,0,0,82.47227,0,0,0,5,0,2,69.7,24.1,0,58,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,58,9.119067,.6931472,4.412462,1 +16,2,95,0,1,230037,0,8665.641,55.75085,1,12,1,0,15.37867,0,0,0,15.37867,0,0,0,0,0,1,75.5,10.3,0,63.6,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,63.6,9.067237,0,2.732981,1 +16,2,95,0,2,230037,0,8665.641,56.75085,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,75.5,10.3,0,63.6,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,63.6,9.067237,0,,0 +16,2,95,0,3,230037,0,8665.641,57.75085,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,75.5,10.3,0,63.6,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,63.6,9.067237,0,,0 +16,2,95,0,4,230037,0,8665.641,58.75085,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,75.5,10.3,0,63.6,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,63.6,9.067237,0,,0 +16,2,95,0,5,230037,0,8665.641,59.75085,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,75.5,10.3,0,63.6,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,63.6,9.067237,0,,0 +13,2,0,0,1,230060,0,1290.323,22.13279,0,15,1,0,0,0,0,0,0,0,0,0,0,0,1,26.6,13.8,1,30.7,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,30.7,7.163422,0,,0 +13,2,0,0,2,230060,0,1290.323,23.13279,0,15,1,0,1.870605,0,0,0,1.870605,0,0,0,0,0,1,26.6,13.8,1,30.7,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,30.7,7.163422,0,.6262618,1 +13,2,0,0,3,230060,0,1290.323,24.13279,0,15,1,14.61737,0,0,0,0,14.61737,0,0,0,0,0,1,26.6,13.8,1,30.7,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,30.7,7.163422,0,2.68221,1 +15,2,95,0,1,230072,0,7283.285,58.60917,0,13,1,41.87947,1.292135,0,0,0,43.1716,0,0,0,3,0,4,79.8,10.3,0,67,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,67,8.893475,1.386294,3.765183,1 +15,2,95,0,1,230073,1,7283.285,20.48734,1,13,1,0,0,0,0,284.4331,284.4331,1,1,0,0,0,4,73.4,10.3,0,52.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,52.3,8.893475,1.386294,5.650498,1 +15,2,95,0,1,230074,1,7283.285,50.85558,1,11,1,62.30848,0,0,0,0,62.30848,0,0,0,1,0,4,75.5,20.7,0,73.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,73.9,8.893475,1.386294,4.132098,1 +14,2,95,0,1,230075,0,4346.627,24.75565,1,15,1,13.00052,0,42.94852,0,0,55.94904,0,0,0,0,1,1,75,17.2,0,64.8,350,350,0,0,0,5.857933,0,4.564348,5.909226,0,0,0,64.8,8.377385,0,4.024441,1 +14,2,95,0,2,230075,0,4346.627,25.75565,1,15,1,0,0,0,0,0,0,0,0,0,0,0,1,75,17.2,0,64.8,350,350,0,0,0,5.857933,0,4.564348,5.909226,0,0,0,64.8,8.377385,0,,0 +14,2,95,0,3,230075,0,4346.627,26.75565,1,15,1,0,0,0,0,0,0,0,0,0,0,0,1,75,17.2,0,64.8,350,350,0,0,0,5.857933,0,4.564348,5.909226,0,0,0,64.8,8.377385,0,,0 +14,2,95,1,1,230080,0,13221.11,29.99863,0,12,1,131.8158,19.24298,0,0,0,151.0588,0,0,0,14,0,4,79.8,17.2,0,69.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,69.3,9.489646,1.386294,5.017669,1 +14,2,95,1,2,230080,0,13221.11,30.99863,0,12,1,0,1.539575,0,0,0,1.539575,0,0,0,0,0,4,79.8,17.2,0,69.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,69.3,9.489646,1.386294,.4315066,1 +14,2,95,1,3,230080,0,13221.11,31.99863,0,12,1,49.97775,0,0,0,0,49.97775,0,0,0,4,0,4,79.8,17.2,0,69.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,69.3,9.489646,1.386294,3.911578,1 +14,2,95,1,4,230080,0,13221.11,32.99863,0,12,1,21.96015,.7726718,0,0,0,22.73282,0,0,0,1,0,4,79.8,17.2,0,69.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,69.3,9.489646,1.386294,3.12381,1 +14,2,95,1,5,230080,0,13221.11,33.99863,0,12,1,158.7243,6.840176,3.665689,0,0,169.2302,0,0,0,1,10,4,79.8,17.2,0,69.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,69.3,9.489646,1.386294,5.13126,1 +14,2,95,1,1,230081,0,13221.11,36.16427,1,13,1,361.8317,29.88354,.794071,0,0,392.5093,0,0,0,21,20,4,63.3,20.7,0,37.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,37.5,9.489646,1.386294,5.97256,1 +14,2,95,1,2,230081,0,13221.11,37.16427,1,13,1,330.8398,39.82143,86.61197,0,2627.596,3084.87,2,0,0,13,8,4,63.3,20.7,0,37.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,37.5,9.489646,1.386294,8.034265,1 +14,2,95,1,3,230081,0,13221.11,38.16427,1,13,1,470.405,41.44637,25.19804,0,876.1014,1413.151,1,0,0,20,22,4,63.3,20.7,0,37.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,37.5,9.489646,1.386294,7.253577,1 +14,2,95,1,4,230081,0,13221.11,39.16427,1,13,1,128.2229,29.09719,1.122407,0,0,158.4425,0,0,0,7,8,4,63.3,20.7,0,37.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,37.5,9.489646,1.386294,5.065392,1 +14,2,95,1,5,230081,0,13221.11,40.16427,1,13,1,118.2735,10.00733,3.152493,0,0,131.4333,0,0,0,3,6,4,63.3,20.7,0,37.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,37.5,9.489646,1.386294,4.8785,1 +14,2,95,1,1,230082,0,13221.11,14.93771,0,13,1,7.94071,0,0,0,0,7.94071,0,0,0,1,0,4,81.4,3.4,0,88.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.489646,1.386294,2.072003,1 +14,2,95,1,2,230082,0,13221.11,15.93771,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,81.4,3.4,0,88.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.489646,1.386294,,0 +14,2,95,1,3,230082,0,13221.11,16.93771,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,81.4,3.4,0,88.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.489646,1.386294,,0 +14,2,95,1,4,230082,0,13221.11,17.93771,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,81.4,3.4,0,88.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.489646,1.386294,,0 +14,2,95,1,5,230082,0,13221.11,18.93771,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,81.4,3.4,0,88.6,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.489646,1.386294,,0 +14,2,95,1,1,230083,0,13221.11,11.29911,1,13,1,156.1673,8.523028,0,0,0,164.6903,0,0,0,3,8,4,61.7,11.84267,0,48.1,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,48.1,9.489646,1.386294,5.104067,1 +14,2,95,1,2,230083,0,13221.11,12.29911,1,13,1,41.50579,3.026062,.7239382,0,273.4556,318.7114,1,0,0,2,1,4,61.7,11.84267,0,48.1,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,48.1,9.489646,1.386294,5.764286,1 +14,2,95,1,3,230083,0,13221.11,13.29911,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,61.7,11.84267,0,48.1,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,48.1,9.489646,1.386294,,0 +14,2,95,1,4,230083,0,13221.11,14.29911,1,13,1,60.59374,0,0,0,0,60.59374,0,0,0,2,3,4,61.7,11.84267,0,48.1,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,48.1,9.489646,1.386294,4.104192,1 +14,2,95,1,5,230083,0,13221.11,15.29911,1,13,1,364.2229,36.38563,0,0,0,400.6085,0,0,0,15,12,4,61.7,11.84267,0,48.1,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,48.1,9.489646,1.386294,5.992985,1 +11,2,0,1,1,230112,1,5907.332,28.59411,1,12,1,24.961,0,19.24077,0,299.61,343.8118,1,0,0,2,0,2,88.8,13.8,0,61.4,0,0,0,0,.6931472,0,0,0,0,1,0,0,61.4,8.684119,.6931472,5.840094,1 +11,2,0,1,2,230112,1,5907.332,29.59411,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,88.8,13.8,0,61.4,0,0,0,0,.6931472,0,0,0,0,1,0,0,61.4,8.684119,.6931472,,0 +11,2,0,1,3,230112,1,5907.332,30.59411,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,88.8,13.8,0,61.4,0,0,0,0,.6931472,0,0,0,0,1,0,0,61.4,8.684119,.6931472,,0 +11,2,0,1,4,230112,1,5907.332,31.59411,1,12,1,18.34862,0,0,119.6649,0,18.34862,0,0,6,1,0,2,88.8,13.8,0,61.4,0,0,0,0,.6931472,0,0,0,0,1,0,0,61.4,8.684119,.6931472,2.909554,1 +11,2,0,1,5,230112,1,5907.332,32.59411,1,12,1,37.87165,0,0,0,0,37.87165,0,0,0,1,0,2,88.8,13.8,0,61.4,0,0,0,0,.6931472,0,0,0,0,1,0,0,61.4,8.684119,.6931472,3.634203,1 +11,2,0,1,1,230113,1,5907.332,11.42505,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.3,11.84267,0,81.5,0,0,1,0,.6931472,0,0,0,0,1,0,0,81.5,8.684119,.6931472,,0 +11,2,0,1,2,230113,1,5907.332,12.42505,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.3,11.84267,0,81.5,0,0,1,0,.6931472,0,0,0,0,1,0,0,81.5,8.684119,.6931472,,0 +11,2,0,1,3,230113,1,5907.332,13.42505,0,12,1,8.230905,0,0,0,0,8.230905,0,0,0,1,0,2,73.3,11.84267,0,81.5,0,0,1,0,.6931472,0,0,0,0,1,0,0,81.5,8.684119,.6931472,2.107896,1 +11,2,0,1,4,230113,1,5907.332,14.42505,0,12,1,66.61348,0,0,79.77663,0,66.61348,0,0,2,3,1,2,73.3,11.84267,0,81.5,0,0,1,0,.6931472,0,0,0,0,1,0,0,81.5,8.684119,.6931472,4.198907,1 +11,2,0,1,5,230113,1,5907.332,15.42505,0,12,1,15.95359,0,0,0,0,15.95359,0,0,0,1,0,2,73.3,11.84267,0,81.5,0,0,1,0,.6931472,0,0,0,0,1,0,0,81.5,8.684119,.6931472,2.769684,1 +16,2,95,0,1,230120,0,14376.54,15.27721,1,14,1,0,0,0,0,0,0,0,0,0,0,0,4,83.5,10.3,0,77.3,1000,669.48,1,1,1.386294,6.506501,0,4.564348,6.959049,0,0,0,77.3,9.573422,1.386294,,0 +16,2,95,0,2,230120,0,14376.54,16.27721,1,14,1,32.01147,9.483994,0,0,0,41.49546,0,0,0,4,0,4,83.5,10.3,0,77.3,1000,669.48,1,1,1.386294,6.506501,0,4.564348,6.959049,0,0,0,77.3,9.573422,1.386294,3.725584,1 +16,2,95,0,3,230120,0,14376.54,17.27721,1,14,1,6.145742,2.61194,0,0,0,8.757682,0,0,0,1,0,4,83.5,10.3,0,77.3,1000,669.48,1,1,1.386294,6.506501,0,4.564348,6.959049,0,0,0,77.3,9.573422,1.386294,2.169931,1 +16,2,95,0,1,230121,0,14376.54,11.54278,0,14,1,114.6646,0,0,417.0827,0,114.6646,0,0,29,9,0,4,95,11.84267,1,70.4,1000,669.48,1,0,1.386294,6.506501,0,4.564348,6.959049,0,0,0,70.4,9.573422,1.386294,4.742011,1 +16,2,95,0,2,230121,0,14376.54,12.54278,0,14,1,16.00573,3.320592,0,0,0,19.32633,0,0,0,2,0,4,95,11.84267,1,70.4,1000,669.48,1,0,1.386294,6.506501,0,4.564348,6.959049,0,0,0,70.4,9.573422,1.386294,2.961468,1 +16,2,95,0,3,230121,0,14376.54,13.54278,0,14,1,28.09482,0,0,0,0,28.09482,0,0,0,4,0,4,95,11.84267,1,70.4,1000,669.48,1,0,1.386294,6.506501,0,4.564348,6.959049,0,0,0,70.4,9.573422,1.386294,3.335585,1 +16,2,95,0,1,230122,0,14376.54,44.41615,0,14,1,53.82215,0,0,32.68331,0,53.82215,0,0,5,1,0,4,72.3,17.2,0,69.3,1000,669.48,0,0,1.386294,6.506501,0,4.564348,6.959049,0,0,0,69.3,9.573422,1.386294,3.985685,1 +16,2,95,0,2,230122,0,14376.54,45.41615,0,14,1,21.97802,7.90731,8.504539,0,786.4548,824.8447,1,0,0,3,0,4,72.3,17.2,0,69.3,1000,669.48,0,0,1.386294,6.506501,0,4.564348,6.959049,0,0,0,69.3,9.573422,1.386294,6.715195,1 +16,2,95,0,3,230122,0,14376.54,46.41615,0,14,1,9.657595,0,0,0,0,9.657595,0,0,0,1,0,4,72.3,17.2,0,69.3,1000,669.48,0,0,1.386294,6.506501,0,4.564348,6.959049,0,0,0,69.3,9.573422,1.386294,2.267745,1 +16,2,95,0,1,230123,0,14376.54,39.66598,1,14,1,151.326,46.30785,0,406.9683,468.6011,666.235,1,0,33,7,0,4,66,27.6,0,84.1,1000,669.48,0,0,1.386294,6.506501,0,4.564348,6.959049,0,0,0,84.1,9.573422,1.386294,6.501643,1 +16,2,95,0,2,230123,0,14376.54,40.66598,1,14,1,246.8896,57.50119,0,102.7234,0,304.3908,0,0,8,55,19,4,66,27.6,0,84.1,1000,669.48,0,0,1.386294,6.506501,0,4.564348,6.959049,0,0,0,84.1,9.573422,1.386294,5.718313,1 +16,2,95,0,3,230123,0,14376.54,41.66598,1,14,1,25.89991,31.58472,0,0,0,57.48463,0,0,0,3,0,4,66,27.6,0,84.1,1000,669.48,0,0,1.386294,6.506501,0,4.564348,6.959049,0,0,0,84.1,9.573422,1.386294,4.051517,1 +13,2,0,0,1,230127,0,3255.132,24.11773,0,12,1,6.24025,0,0,0,0,6.24025,0,0,0,1,0,1,71.8,0,0,77.3,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,77.3,8.088295,0,1.83102,1 +13,2,0,0,1,230128,0,1755.425,20.12047,0,12,1,213.9626,3.213729,14.56058,0,0,231.7369,0,0,0,14,0,1,64.9,24.1,1,79.5,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,79.5,7.471036,0,5.445602,1 +13,2,0,0,2,230128,0,1755.425,21.12047,0,12,1,332.0354,3.798376,1.433349,0,0,337.2671,0,0,0,2,0,1,64.9,24.1,1,79.5,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,79.5,7.471036,0,5.820875,1 +13,2,0,0,3,230128,0,1755.425,22.12047,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,64.9,24.1,1,79.5,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,79.5,7.471036,0,,0 +13,2,0,1,1,230150,0,13334.31,4.150582,0,12,1,18.81861,21.61526,14.37533,0,258.6775,313.4867,1,0,0,2,0,4,81.35272,11.84267,0,100,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.498171,1.386294,5.747757,1 +13,2,0,1,2,230150,0,13334.31,5.150582,0,12,1,47.57328,0,0,0,187.0975,234.6708,1,0,0,4,0,4,81.35272,11.84267,0,100,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.498171,1.386294,5.458184,1 +13,2,0,1,3,230150,0,13334.31,6.150582,0,12,1,27.31277,0,0,0,0,27.31277,0,0,0,1,0,4,81.35272,11.84267,0,100,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.498171,1.386294,3.307354,1 +13,2,0,1,4,230150,0,13334.31,7.150582,0,12,1,30.64516,0,19.75806,0,0,50.40322,0,0,0,2,0,4,81.35272,11.84267,0,100,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.498171,1.386294,3.920055,1 +13,2,0,1,5,230150,0,13334.31,8.150581,0,12,1,16.39344,0,0,0,0,16.39344,0,0,0,1,0,4,81.35272,11.84267,0,100,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.498171,1.386294,2.796881,1 +13,2,0,1,1,230151,0,13334.31,7.088295,0,12,1,5.227392,0,0,0,0,5.227392,0,0,0,1,0,4,75,11.84267,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.498171,1.386294,1.653912,1 +13,2,0,1,2,230151,0,13334.31,8.088296,0,12,1,18.26045,0,0,0,0,18.26045,0,0,0,1,0,4,75,11.84267,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.498171,1.386294,2.904738,1 +13,2,0,1,3,230151,0,13334.31,9.088296,0,12,1,19.82379,0,0,0,0,19.82379,0,0,0,1,0,4,75,11.84267,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.498171,1.386294,2.986883,1 +13,2,0,1,4,230151,0,13334.31,10.0883,0,12,1,30.64516,0,27.71371,0,0,58.35887,0,0,0,2,0,4,75,11.84267,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.498171,1.386294,4.066611,1 +13,2,0,1,5,230151,0,13334.31,11.0883,0,12,1,237.8033,0,24.77231,0,0,262.5756,0,0,0,5,0,4,75,11.84267,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.498171,1.386294,5.570539,1 +13,2,0,1,1,230152,0,13334.31,27.40589,1,12,1,58.54678,20.59592,18.50497,0,0,97.64767,0,0,0,6,0,4,76.1,10.3,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,89.8,9.498171,1.386294,4.581366,1 +13,2,0,1,2,230152,0,13334.31,28.40589,1,12,1,129.5051,28.81307,27.87122,0,0,186.1893,0,0,0,9,0,4,76.1,10.3,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,89.8,9.498171,1.386294,5.226764,1 +13,2,0,1,3,230152,0,13334.31,29.40589,1,12,1,75.3304,20.36123,0,215.859,0,95.69163,0,0,10,5,0,4,76.1,10.3,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,89.8,9.498171,1.386294,4.561131,1 +13,2,0,1,4,230152,0,13334.31,30.40589,1,12,1,32.25806,7.16129,0,510.0807,0,39.41935,0,0,23,3,0,4,76.1,10.3,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,89.8,9.498171,1.386294,3.674257,1 +13,2,0,1,5,230152,0,13334.31,31.40589,1,12,1,101.8215,5.68306,12.75045,0,0,120.255,0,0,0,6,0,4,76.1,10.3,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,89.8,9.498171,1.386294,4.789615,1 +13,2,0,1,1,230153,0,13334.31,34.18754,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.2,3.4,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,89.8,9.498171,1.386294,,0 +13,2,0,1,2,230153,0,13334.31,35.18754,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.2,3.4,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,89.8,9.498171,1.386294,,0 +13,2,0,1,3,230153,0,13334.31,36.18754,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.2,3.4,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,89.8,9.498171,1.386294,,0 +13,2,0,1,4,230153,0,13334.31,37.18754,0,12,1,138.1048,0,0,0,0,138.1048,0,0,0,6,0,4,78.2,3.4,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,89.8,9.498171,1.386294,4.928013,1 +13,2,0,1,5,230153,0,13334.31,38.18754,0,12,1,71.03825,0,0,0,0,71.03825,0,0,0,3,0,4,78.2,3.4,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,89.8,9.498171,1.386294,4.263218,1 +16,2,95,0,1,230154,0,7921.408,11.35661,1,12,1,8.060323,0,0,0,0,8.060323,0,0,0,1,0,5,83.3,11.84267,0,88.9,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.9,8.97745,1.609438,2.086954,1 +16,2,95,0,2,230154,0,7921.408,12.35661,1,12,1,9.555662,0,0,0,0,9.555662,0,0,0,1,0,5,83.3,11.84267,0,88.9,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.9,8.97745,1.609438,2.257134,1 +16,2,95,0,3,230154,0,7921.408,13.35661,1,12,1,16.46181,0,0,0,0,16.46181,0,0,0,1,0,6,83.3,11.84267,0,88.9,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,88.9,8.97745,1.791759,2.801043,1 +16,2,95,0,4,230154,0,7921.408,14.35661,1,12,1,11.96649,2.373355,0,0,0,14.33985,0,0,0,2,0,6,83.3,11.84267,0,88.9,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,88.9,8.97745,1.791759,2.663042,1 +16,2,95,0,5,230154,0,7921.408,15.35661,1,12,1,13.05294,3.071066,0,0,0,16.124,0,0,0,2,0,6,83.3,11.84267,0,88.9,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,88.9,8.97745,1.791759,2.780309,1 +16,2,95,0,1,230155,0,7921.408,37.7796,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,79.8,6.9,0,59.1,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,59.1,8.97745,1.609438,,0 +16,2,95,0,2,230155,0,7921.408,38.7796,0,14,1,43.00048,0,0,0,0,43.00048,0,0,0,1,0,5,79.8,6.9,0,59.1,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,59.1,8.97745,1.609438,3.761211,1 +16,2,95,0,3,230155,0,7921.408,39.7796,0,14,1,0,0,0,0,0,0,0,0,0,0,0,6,79.8,6.9,0,59.1,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,59.1,8.97745,1.791759,,0 +16,2,95,0,4,230155,0,7921.408,40.7796,0,14,1,0,0,0,0,0,0,0,0,0,0,0,6,79.8,6.9,0,59.1,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,59.1,8.97745,1.791759,,0 +16,2,95,0,5,230155,0,7921.408,41.7796,0,14,1,0,0,0,0,0,0,0,0,0,0,0,6,79.8,6.9,0,59.1,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,59.1,8.97745,1.791759,,0 +16,2,95,0,1,230156,0,7921.408,35.75633,1,12,1,10.40042,0,0,0,0,10.40042,0,0,0,1,0,5,73.9,10.3,0,89.8,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,89.8,8.97745,1.609438,2.341846,1 +16,2,95,0,2,230156,0,7921.408,36.75633,1,12,1,36.31152,12.90014,0,0,616.1252,665.3369,1,0,0,2,1,5,73.9,10.3,0,89.8,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,89.8,8.97745,1.609438,6.500293,1 +16,2,95,0,3,230156,0,7921.408,37.75633,1,12,1,186.4355,5.061458,0,0,0,191.4969,0,0,0,4,0,6,73.9,10.3,0,89.8,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,89.8,8.97745,1.791759,5.254872,1 +16,2,95,0,4,230156,0,7921.408,38.75633,1,12,1,17.35142,0,0,0,0,17.35142,0,0,0,1,0,6,73.9,10.3,0,89.8,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,89.8,8.97745,1.791759,2.853674,1 +16,2,95,0,5,230156,0,7921.408,39.75633,1,12,1,20.03263,0,0,0,0,20.03263,0,0,0,1,0,6,73.9,10.3,0,89.8,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,89.8,8.97745,1.791759,2.997363,1 +16,2,95,0,1,230157,0,7921.408,8.109514,0,12,1,14.82059,0,0,0,0,14.82059,0,0,0,2,0,5,81.7,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,8.97745,1.609438,2.696018,1 +16,2,95,0,2,230157,0,7921.408,9.109514,0,12,1,9.555662,2.197802,0,0,0,11.75346,0,0,0,1,0,5,81.7,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,8.97745,1.609438,2.464148,1 +16,2,95,0,3,230157,0,7921.408,10.10951,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,81.7,11.84267,0,100,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,100,8.97745,1.791759,,0 +16,2,95,0,4,230157,0,7921.408,11.10951,0,12,1,10.37096,0,0,0,0,10.37096,0,0,0,2,0,6,81.7,11.84267,0,100,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,100,8.97745,1.791759,2.33901,1 +16,2,95,0,5,230157,0,7921.408,12.10951,0,12,1,6.88905,0,0,0,0,6.88905,0,0,0,1,0,6,81.7,11.84267,0,100,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,100,8.97745,1.791759,1.929933,1 +16,2,95,0,1,230158,0,7921.408,1.960301,0,12,1,9.360374,0,0,0,0,9.360374,0,0,0,1,0,5,81.35272,11.84267,0,63,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,63,8.97745,1.609438,2.236485,1 +16,2,95,0,2,230158,0,7921.408,2.960301,0,12,1,25.3225,2.627807,0,0,603.4401,631.3903,1,0,0,3,0,5,81.35272,11.84267,0,63,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,63,8.97745,1.609438,6.447924,1 +16,2,95,0,3,230158,0,7921.408,3.960301,0,12,1,10.09658,1.294996,0,0,0,11.39157,0,0,0,2,0,6,81.35272,11.84267,0,63,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,63,8.97745,1.791759,2.432874,1 +16,2,95,0,4,230158,0,7921.408,4.960301,0,12,1,17.94974,5.544476,0,0,0,23.49422,0,0,0,3,0,6,81.35272,11.84267,0,63,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,63,8.97745,1.791759,3.156754,1 +16,2,95,0,5,230158,0,7921.408,5.960301,0,12,1,6.163887,4.314721,0,0,0,10.47861,0,0,0,1,0,6,81.35272,11.84267,0,63,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,63,8.97745,1.791759,2.349336,1 +11,2,0,0,1,230162,0,14051.03,7.216975,1,12,1,26.53271,7.496136,0,0,0,34.02885,0,0,0,3,0,4,86.7,11.84267,0,96.3,0,535.16,1,1,1.386294,6.282566,0,0,0,0,0,0,96.3,9.550522,1.386294,3.527209,1 +11,2,0,0,2,230162,0,14051.03,8.216974,1,12,1,27.46212,0,0,0,0,27.46212,0,0,0,2,0,4,86.7,11.84267,0,96.3,0,535.16,1,1,1.386294,6.282566,0,0,0,0,0,0,96.3,9.550522,1.386294,3.312808,1 +11,2,0,0,3,230162,0,14051.03,9.216974,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,11.84267,0,96.3,0,535.16,1,1,1.386294,6.282566,0,0,0,0,0,0,96.3,9.550522,1.386294,,0 +11,2,0,0,1,230163,0,14051.03,17.04038,0,12,1,10.69037,0,0,0,0,10.69037,0,0,0,1,0,4,80.3,6.9,0,78.4,0,535.16,1,0,1.386294,6.282566,0,0,0,0,0,0,78.4,9.550522,1.386294,2.369343,1 +11,2,0,0,2,230163,0,14051.03,18.04038,0,12,1,0,6.368371,0,0,0,6.368371,0,0,0,0,0,4,80.3,6.9,0,78.4,0,535.16,0,0,1.386294,6.282566,0,0,0,0,0,0,78.4,9.550522,1.386294,1.851344,1 +11,2,0,0,3,230163,0,14051.03,19.04038,0,12,1,67.05679,1.404421,0,0,0,68.4612,0,0,0,3,0,4,80.3,6.9,0,78.4,0,535.16,0,0,1.386294,6.282566,0,0,0,0,0,0,78.4,9.550522,1.386294,4.226267,1 +11,2,0,0,1,230164,0,14051.03,42.25873,0,12,1,17.51674,0,0,0,0,17.51674,0,0,0,1,0,4,51.1,6.9,0,46.6,0,535.16,0,0,1.386294,6.282566,0,0,0,1,0,0,46.6,9.550522,1.386294,2.863157,1 +11,2,0,0,2,230164,0,14051.03,43.25873,0,12,1,0,0,9.327652,0,0,9.327652,0,0,0,0,0,4,51.1,6.9,0,46.6,0,535.16,0,0,1.386294,6.282566,0,0,0,1,0,0,46.6,9.550522,1.386294,2.232983,1 +11,2,0,0,3,230164,0,14051.03,44.25873,0,12,1,21.52146,7.758995,24.91547,0,0,54.19593,0,0,0,1,1,4,51.1,6.9,0,46.6,0,535.16,0,0,1.386294,6.282566,0,0,0,1,0,0,46.6,9.550522,1.386294,3.992606,1 +11,2,0,0,1,230165,0,14051.03,40.2601,1,12,1,86.29572,18.4441,0,0,0,104.7398,0,0,0,7,0,4,75,3.4,0,89.8,0,535.16,0,0,1.386294,6.282566,0,0,0,1,0,0,89.8,9.550522,1.386294,4.651479,1 +11,2,0,0,2,230165,0,14051.03,41.2601,1,12,1,144.9337,21.90814,0,0,0,166.8419,0,0,0,7,0,4,75,3.4,0,89.8,0,535.16,0,0,1.386294,6.282566,0,0,0,1,0,0,89.8,9.550522,1.386294,5.117046,1 +11,2,0,0,3,230165,0,14051.03,42.2601,1,12,1,33.37668,6.675336,46.71868,0,0,86.7707,0,0,0,3,0,4,75,3.4,0,89.8,0,535.16,0,0,1.386294,6.282566,0,0,0,1,0,0,89.8,9.550522,1.386294,4.463269,1 +13,2,0,0,1,230221,0,12099.12,58.49418,0,13,1,277.6919,56.54302,49.90211,0,0,384.1371,0,0,0,14,10,1,80.9,13.8,0,73.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,73.9,9.40097,0,5.950999,1 +13,2,0,0,2,230221,0,12099.12,59.49418,0,13,1,97.06439,32.24432,0,0,0,129.3087,0,0,0,7,2,1,80.9,13.8,0,73.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,73.9,9.40097,0,4.862203,1 +13,2,0,0,3,230221,0,12099.12,60.49418,0,13,1,32.07629,4.096229,46.3199,0,0,82.49242,0,0,0,3,1,1,80.9,13.8,0,73.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,73.9,9.40097,0,4.412706,1 +14,2,95,1,1,230225,0,4199.414,19.64956,1,12,1,27.39545,13.98094,0,0,0,41.37639,0,0,0,3,0,1,79.8,6.9,0,93.2,175,175,0,0,0,5.164786,0,4.564348,5.216079,0,0,0,93.2,8.342938,0,3.72271,1 +14,2,95,1,2,230225,0,4199.414,20.64956,1,12,1,42.47104,0,0,0,0,42.47104,0,0,0,5,0,1,79.8,6.9,0,93.2,175,175,0,0,0,5.164786,0,4.564348,5.216079,0,0,0,93.2,8.342938,0,3.748822,1 +14,2,95,1,3,230225,0,4199.414,21.64956,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,79.8,6.9,0,93.2,175,175,0,0,0,5.164786,0,4.564348,5.216079,0,0,0,93.2,8.342938,0,,0 +14,2,95,1,4,230225,0,4199.414,22.64956,1,12,1,12.20008,0,0,0,0,12.20008,0,0,0,1,0,1,79.8,6.9,0,93.2,175,175,0,0,0,5.164786,0,4.564348,5.216079,0,0,0,93.2,8.342938,0,2.501443,1 +14,2,95,1,5,230225,0,4199.414,23.64956,1,12,1,16.4956,0,0,0,0,16.4956,0,0,0,1,0,1,79.8,6.9,0,93.2,175,175,0,0,0,5.164786,0,4.564348,5.216079,0,0,0,93.2,8.342938,0,2.803094,1 +16,2,95,1,1,230226,0,9771.848,29.36071,0,12,1,31.10298,8.07632,0,0,0,39.1793,0,0,0,2,0,4,86.2,17.2,0,64.8,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,64.8,9.187364,1.386294,3.668149,1 +16,2,95,1,2,230226,0,9771.848,30.36071,0,12,1,76.40557,20.91302,33.45507,0,0,130.7737,0,0,0,3,0,4,86.2,17.2,0,64.8,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,64.8,9.187364,1.386294,4.873468,1 +16,2,95,1,3,230226,0,9771.848,31.36071,0,12,1,80.30837,34.18502,0,0,0,114.4934,0,0,0,5,0,4,86.2,17.2,0,64.8,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,64.8,9.187364,1.386294,4.740517,1 +16,2,95,1,1,230227,0,9771.848,24.79124,1,8,1,222.9482,8.531103,0,0,0,231.4794,0,0,0,3,3,4,94.1,6.9,0,97.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,97.7,9.187364,1.386294,5.444491,1 +16,2,95,1,2,230227,0,9771.848,25.79124,1,8,1,72.22489,27.7655,0,0,367.5637,467.554,1,0,0,2,0,4,94.1,6.9,0,97.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,97.7,9.187364,1.386294,6.147515,1 +16,2,95,1,3,230227,0,9771.848,26.79124,1,8,1,143.3921,18.03965,0,0,825.9692,987.4009,1,0,0,3,2,4,94.1,6.9,0,97.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,97.7,9.187364,1.386294,6.895076,1 +16,2,95,1,1,230228,0,9771.848,6.551677,1,8,1,48.61474,0,0,0,0,48.61474,0,0,0,3,0,4,70,11.84267,0,66.7,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.187364,1.386294,3.883927,1 +16,2,95,1,2,230228,0,9771.848,7.551677,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,70,11.84267,0,66.7,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.187364,1.386294,,0 +16,2,95,1,3,230228,0,9771.848,8.551677,1,8,1,13.43612,0,0,0,0,13.43612,0,0,0,1,0,4,70,11.84267,0,66.7,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.187364,1.386294,2.597947,1 +16,2,95,1,1,230229,0,9771.848,2.223135,1,8,1,20.38683,10.40251,0,0,0,30.78934,0,0,0,2,0,4,81.35272,11.84267,0,77.8,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,77.8,9.187364,1.386294,3.427168,1 +16,2,95,1,2,230229,0,9771.848,3.223135,1,8,1,12.97453,1.874099,0,0,0,14.84863,0,0,0,1,0,4,81.35272,11.84267,0,77.8,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,77.8,9.187364,1.386294,2.697908,1 +16,2,95,1,3,230229,0,9771.848,4.223135,1,8,1,22.90749,24.03084,0,0,0,46.93833,0,0,0,2,1,4,81.35272,11.84267,0,77.8,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,77.8,9.187364,1.386294,3.848835,1 +13,2,0,1,1,230230,0,8665.641,52.3614,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,83.5,17.2,0,76.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,76.1,9.067237,.6931472,,0 +13,2,0,1,1,230231,0,8665.641,60.39699,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,87.8,13.8,0,72.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,72.7,9.067237,.6931472,,0 +6,2,25,1,1,230232,0,10397.07,29.50582,0,13,1,0,0,0,58.50234,0,0,0,0,4,0,0,3,87.8,0,0,63.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,63.6,9.249375,1.098612,,0 +6,2,25,1,2,230232,0,10397.07,30.50582,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,87.8,0,0,63.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,63.6,9.249375,1.098612,,0 +6,2,25,1,3,230232,0,10397.07,31.50582,0,13,1,62.09394,20.29412,0,153.6435,0,82.38806,0,0,7,2,0,3,87.8,0,0,63.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,63.6,9.249375,1.098612,4.41144,1 +6,2,25,1,1,230233,0,10397.07,1.752224,1,14,1,34.84139,3.614145,0,0,0,38.45554,0,0,0,5,0,3,81.35272,11.84267,0,92.6,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,92.6,9.249375,1.098612,3.649503,1 +6,2,25,1,2,230233,0,10397.07,2.752224,1,14,1,21.02246,3.368371,0,0,0,24.39083,0,0,0,3,0,3,81.35272,11.84267,0,92.6,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,92.6,9.249375,1.098612,3.194207,1 +6,2,25,1,3,230233,0,10397.07,3.752224,1,14,1,108.1431,62.04126,0,0,0,170.1844,0,0,0,8,0,3,81.35272,11.84267,0,92.6,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,92.6,9.249375,1.098612,5.136882,1 +6,2,25,1,1,230234,0,10397.07,26.89665,1,14,1,98.17992,30.71763,0,50.70203,0,128.8976,0,0,4,9,0,3,52.1,24.1,0,72.7,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,72.7,9.249375,1.098612,4.859018,1 +6,2,25,1,2,230234,0,10397.07,27.89665,1,14,1,101.0511,32.37458,27.94076,0,0,161.3665,0,0,0,6,0,3,52.1,24.1,0,72.7,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,72.7,9.249375,1.098612,5.083678,1 +6,2,25,1,3,230234,0,10397.07,28.89665,1,14,1,201.2335,52.21247,76.82177,0,0,330.2678,0,0,0,7,4,3,52.1,24.1,0,72.7,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,1,0,0,72.7,9.249375,1.098612,5.799904,1 +6,2,25,0,1,230238,0,6097.361,42.86927,0,12,1,0,5.175117,0,0,0,5.175117,0,0,0,0,0,3,87.8,0,0,65.9,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,65.9,8.715775,1.098612,1.643862,1 +6,2,25,0,2,230238,0,6097.361,43.86927,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,87.8,0,0,65.9,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,65.9,8.715775,1.098612,,0 +6,2,25,0,3,230238,0,6097.361,44.86927,0,12,1,120.3084,8.612335,0,0,0,128.9207,0,0,0,3,0,3,87.8,0,0,65.9,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,65.9,8.715775,1.098612,4.859198,1 +6,2,25,1,1,230239,0,6097.361,42.14648,1,10,1,87.03607,4.155777,30.92002,0,0,122.1119,0,0,0,4,1,3,87.4,13.8,1,56,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,1,0,56,8.715775,1.098612,4.804937,1 +6,2,25,1,2,230239,0,6097.361,43.14648,1,10,1,4.805382,0,0,0,0,4.805382,0,0,0,1,0,3,87.4,13.8,1,56,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,1,0,56,8.715775,1.098612,1.569737,1 +6,2,25,1,3,230239,0,6097.361,44.14648,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,87.4,13.8,1,56,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,1,0,56,8.715775,1.098612,,0 +6,2,25,0,1,230240,0,6097.361,15.74812,0,10,1,45.21694,7.292211,37.10925,0,0,89.6184,0,0,0,2,1,3,80.3,10.3,0,65,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,65,8.715775,1.098612,4.495561,1 +6,2,25,0,2,230240,0,6097.361,16.74812,0,10,1,111.8933,.9610764,46.12686,0,607.8808,766.8621,1,0,0,4,0,3,80.3,10.3,0,65,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,65,8.715775,1.098612,6.642307,1 +6,2,25,0,3,230240,0,6097.361,17.74812,0,10,1,9.69163,0,0,0,0,9.69163,0,0,0,0,0,3,80.3,10.3,0,65,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,65,8.715775,1.098612,2.271263,1 +6,2,25,1,1,230241,0,8665.641,20.6653,0,10,1,24.44098,1.040042,0,0,0,25.48102,0,0,0,2,0,1,62.2,13.8,0,55.7,630,0,0,0,0,0,0,3.258096,7.832014,1,0,0,55.7,9.067237,0,3.237934,1 +6,2,25,1,2,230241,0,8665.641,21.6653,0,10,1,46.72718,0,0,0,0,46.72718,0,0,0,1,0,1,62.2,13.8,0,55.7,630,0,0,0,0,0,0,3.258096,7.832014,1,0,0,55.7,9.067237,0,3.844326,1 +6,2,25,1,3,230241,0,8665.641,22.6653,0,10,1,0,0,0,0,0,0,0,0,0,0,0,1,62.2,13.8,0,55.7,630,0,0,0,0,0,0,3.258096,7.832014,1,0,0,55.7,9.067237,0,,0 +13,2,0,0,1,230243,0,3789.748,25.74675,0,17,1,12.4805,0,0,0,0,12.4805,0,0,0,1,0,1,78.7,17.2,0,68.2,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,68.2,8.240318,0,2.524167,1 +13,2,0,0,2,230243,0,3789.748,26.74675,0,17,1,0,0,0,0,0,0,0,0,0,0,0,1,78.7,17.2,0,68.2,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,68.2,8.240318,0,,0 +13,2,0,0,3,230243,0,3789.748,27.74675,0,17,1,0,0,0,0,0,0,0,0,0,0,0,1,78.7,17.2,0,68.2,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,68.2,8.240318,0,,0 +13,2,0,0,1,230244,0,3725.806,24.20808,0,12,1,40.82163,4.576183,0,0,0,45.39782,0,0,0,0,1,1,83,6.9,0,87.5,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,87.5,8.223307,0,3.815464,1 +13,2,0,0,2,230244,0,3725.806,25.20808,0,12,1,60.77401,0,0,0,0,60.77401,0,0,0,1,0,1,83,6.9,0,87.5,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,87.5,8.223307,0,4.107162,1 +13,2,0,0,3,230244,0,3725.806,26.20808,0,12,1,10.95698,0,0,0,0,10.95698,0,0,0,1,0,1,83,6.9,0,87.5,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,87.5,8.223307,0,2.393977,1 +13,2,0,0,1,230245,0,2689.443,24.93908,0,15,1,49.30837,205.5174,0,0,0,254.8258,0,0,0,2,0,1,75.5,13.8,1,40.5,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,40.5,7.897461,0,5.54058,1 +13,2,0,0,2,230245,0,2689.443,25.93908,0,15,1,0,178.7386,0,0,0,178.7386,0,0,0,0,0,1,75.5,13.8,1,40.5,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,40.5,7.897461,0,5.185925,1 +13,2,0,0,3,230245,0,2689.443,26.93908,0,15,1,11.41352,113.5865,0,0,0,125,0,0,0,2,0,1,75.5,13.8,1,40.5,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,40.5,7.897461,0,4.828314,1 +11,2,0,0,1,230266,0,7068.035,20.70089,1,14,1,33.67135,17.17109,0,0,0,50.84243,0,0,0,3,0,3,48.9,10.3,0,72.7,0,98.2,0,0,1.098612,4.587006,0,0,0,0,0,0,72.7,8.86348,1.098612,3.928731,1 +11,2,0,0,2,230266,0,7068.035,21.70089,1,14,1,65.05017,12.96703,0,0,0,78.0172,0,0,0,3,0,3,48.9,10.3,0,72.7,0,98.2,0,0,1.098612,4.587006,0,0,0,0,0,0,72.7,8.86348,1.098612,4.356929,1 +11,2,0,0,3,230266,0,7068.035,22.70089,1,14,1,94.44688,33.7928,0,0,0,128.2397,0,0,0,6,0,3,48.9,10.3,0,72.7,0,98.2,0,0,1.098612,4.587006,0,0,0,0,0,0,72.7,8.86348,1.098612,4.853901,1 +11,2,0,0,1,230267,0,7068.035,22.65024,0,14,1,5.720229,12.24129,0,0,0,17.96152,0,0,0,1,0,3,69.1,6.9,0,64.8,0,98.2,0,0,1.098612,4.587006,0,0,0,1,0,0,64.8,8.86348,1.098612,2.888232,1 +11,2,0,0,2,230267,0,7068.035,23.65024,0,14,1,0,6.340181,0,0,0,6.340181,0,0,0,0,0,3,69.1,6.9,0,64.8,0,98.2,0,0,1.098612,4.587006,0,0,0,1,0,0,64.8,8.86348,1.098612,1.846907,1 +11,2,0,0,3,230267,0,7068.035,24.65024,0,14,1,60.22827,43.45478,0,0,0,103.6831,0,0,0,5,0,3,69.1,6.9,0,64.8,0,98.2,0,0,1.098612,4.587006,0,0,0,1,0,0,64.8,8.86348,1.098612,4.641339,1 +14,2,95,0,1,230288,0,8665.641,26.28884,0,12,1,0,7.284904,0,0,0,7.284904,0,0,0,0,0,1,89.9,17.2,1,76.1,60,0,0,0,0,0,0,4.564348,4.145638,0,0,0,76.1,9.067237,0,1.985804,1 +14,2,95,0,2,230288,0,8665.641,27.28884,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,89.9,17.2,1,76.1,60,0,0,0,0,0,0,4.564348,4.145638,0,0,0,76.1,9.067237,0,,0 +11,2,0,0,1,230314,0,11768.33,29.02122,0,16,1,98.54395,19.64639,0,0,0,118.1903,0,0,0,5,0,3,86.2,13.8,0,76.1,0,388.64,0,0,1.098612,5.962654,0,0,0,0,0,0,76.1,9.373252,1.098612,4.772296,1 +11,2,0,0,2,230314,0,11768.33,30.02122,0,16,1,41.08934,6.215958,0,0,0,47.3053,0,0,0,6,0,4,86.2,13.8,0,76.1,0,388.64,0,0,1.386294,5.962654,0,0,0,0,0,0,76.1,9.373252,1.386294,3.856622,1 +11,2,0,0,3,230314,0,11768.33,31.02122,0,16,1,21.94908,4.126427,38.09482,0,0,64.17033,0,0,0,2,0,4,86.2,13.8,0,76.1,0,388.64,0,0,1.386294,5.962654,0,0,0,0,0,0,76.1,9.373252,1.386294,4.161541,1 +11,2,0,0,1,230315,0,11768.33,1.174538,1,17,1,72.02288,10.0104,0,0,0,82.03328,0,0,0,5,0,3,81.35272,11.84267,0,59.3,0,388.64,1,1,1.098612,5.962654,0,0,0,0,0,0,59.3,9.373252,1.098612,4.407125,1 +11,2,0,0,2,230315,0,11768.33,2.174538,1,17,1,24.46249,2.150024,0,0,0,26.61252,0,0,0,1,0,4,81.35272,11.84267,0,59.3,0,388.64,1,1,1.386294,5.962654,0,0,0,0,0,0,59.3,9.373252,1.386294,3.281382,1 +11,2,0,0,3,230315,0,11768.33,3.174538,1,17,1,34.67954,17.37489,0,0,0,52.05443,0,0,0,4,0,4,81.35272,11.84267,0,59.3,0,388.64,1,1,1.386294,5.962654,0,0,0,0,0,0,59.3,9.373252,1.386294,3.95229,1 +11,2,0,0,1,230316,0,11768.33,29.31691,1,17,1,22.3609,12.16849,0,0,718.8248,753.3541,1,0,0,1,0,3,88.3,3.4,0,81.8,0,388.64,0,0,1.098612,5.962654,0,0,0,0,0,0,81.8,9.373252,1.098612,6.624536,1 +11,2,0,0,2,230316,0,11768.33,30.31691,1,17,1,23.88915,0,0,0,0,23.88915,0,0,0,3,0,4,88.3,3.4,0,81.8,0,388.64,0,0,1.386294,5.962654,0,0,0,0,0,0,81.8,9.373252,1.386294,3.173424,1 +11,2,0,0,3,230316,0,11768.33,31.31691,1,17,1,61.8964,0,28.5338,0,0,90.4302,0,0,0,4,0,4,88.3,3.4,0,81.8,0,388.64,0,0,1.386294,5.962654,0,0,0,0,0,0,81.8,9.373252,1.386294,4.504578,1 +11,2,0,1,1,230373,0,15775.37,34.9733,1,12,1,25.09148,5.959226,0,0,0,31.0507,0,0,0,4,0,2,87.2,24.1,0,72.7,0,0,0,0,.6931472,0,0,0,0,0,0,0,72.7,9.666268,.6931472,3.435622,1 +11,2,0,1,2,230373,0,15775.37,35.9733,1,12,1,76.64584,3.65209,16.81884,0,0,97.11677,0,0,0,6,1,2,87.2,24.1,0,72.7,0,0,0,0,.6931472,0,0,0,0,0,0,0,72.7,9.666268,.6931472,4.575914,1 +11,2,0,1,3,230373,0,15775.37,36.9733,1,12,1,27.7533,9.678414,28.63436,0,929.2203,995.2863,1,0,0,2,1,2,87.2,24.1,0,72.7,0,0,0,0,.6931472,0,0,0,0,0,0,0,72.7,9.666268,.6931472,6.90303,1 +11,2,0,1,1,230374,0,15775.37,31.8768,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,76.6,3.4,0,71.6,0,0,0,0,.6931472,0,0,0,0,0,0,0,71.6,9.666268,.6931472,,0 +11,2,0,1,2,230374,0,15775.37,32.8768,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,76.6,3.4,0,71.6,0,0,0,0,.6931472,0,0,0,0,0,0,0,71.6,9.666268,.6931472,,0 +11,2,0,1,3,230374,0,15775.37,33.8768,0,16,1,14.53745,0,34.34802,0,0,48.88546,0,0,0,1,0,2,76.6,3.4,0,71.6,0,0,0,0,.6931472,0,0,0,0,0,0,0,71.6,9.666268,.6931472,3.88948,1 +7,2,25,0,1,230375,0,3528.886,20.89528,1,12,1,138.0732,4.971664,35.85265,0,0,178.8975,0,0,0,3,10,1,69.7,6.9,0,83,285.75,144,0,0,0,4.969813,0,3.258096,7.041412,1,0,0,83,8.169021,0,5.186813,1 +7,2,25,0,2,230375,0,3528.886,21.89528,1,12,1,289.6544,0,17.99242,0,0,307.6468,0,0,0,6,18,1,69.7,6.9,0,83,285.75,144,0,0,0,4.969813,0,3.258096,7.041412,1,0,0,83,8.169021,0,5.728952,1 +7,2,25,0,3,230375,0,3528.886,22.89528,1,12,1,175.531,12.72215,48.66927,0,294.7681,531.6905,1,0,0,9,0,1,69.7,6.9,0,83,285.75,144,0,0,0,4.969813,0,3.258096,7.041412,1,0,0,83,8.169021,0,6.276062,1 +7,2,25,0,1,230376,0,2003.519,22.97604,0,12,1,0,2.009274,0,0,0,2.009274,0,0,0,0,0,1,67,13.8,0,72.7,180,0,0,0,0,0,0,3.258096,6.579251,0,1,0,72.7,7.603159,0,.6977732,1 +7,2,25,0,2,230376,0,2003.519,23.97604,0,12,1,11.83712,2.831439,0,0,0,14.66856,0,0,0,1,0,1,67,13.8,0,72.7,180,0,0,0,0,0,0,3.258096,6.579251,0,1,0,72.7,7.603159,0,2.685706,1 +7,2,25,0,3,230376,0,2003.519,24.97604,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,67,13.8,0,72.7,180,0,0,0,0,0,0,3.258096,6.579251,0,1,0,72.7,7.603159,0,,0 +11,2,0,1,1,230409,0,8665.641,20.62149,0,12,1,72.12811,2.408682,45.57438,0,0,120.1112,0,0,0,5,1,1,63.3,3.4,0,51.1,0,0,0,0,0,0,0,0,0,0,0,0,51.1,9.067237,0,4.788418,1 +11,2,0,1,2,230409,0,8665.641,21.62149,0,12,1,64.18919,0,30.40541,0,0,94.5946,0,0,0,4,1,1,63.3,3.4,0,51.1,0,0,0,0,0,0,0,0,0,0,0,0,51.1,9.067237,0,4.5496,1 +11,2,0,1,3,230409,0,8665.641,22.62149,0,12,1,41.38852,6.519804,0,0,0,47.90832,0,0,0,4,0,1,63.3,3.4,0,51.1,0,0,0,0,0,0,0,0,0,0,0,0,51.1,9.067237,0,3.869289,1 +11,2,0,1,1,230410,0,8665.641,19.10472,0,9,1,0,0,0,0,0,0,0,0,0,0,0,1,77.7,0,0,73.9,0,0,0,0,0,0,0,0,0,0,0,0,73.9,9.067237,0,,0 +11,2,0,1,1,230447,0,12724.34,60.48186,1,17,1,122.8437,50.28751,36.25196,0,265.9435,475.3267,1,0,0,9,0,2,66,13.8,0,72.7,0,90.84,0,0,.6931472,4.509099,0,0,0,1,0,0,72.7,9.45135,.6931472,6.164002,1 +11,2,0,1,2,230447,0,12724.34,61.48186,1,17,1,323.4743,42.19125,31.13888,0,0,396.8044,0,0,0,12,6,2,66,13.8,0,72.7,0,90.84,0,0,.6931472,4.509099,0,0,0,1,0,0,72.7,9.45135,.6931472,5.983443,1 +11,2,0,1,3,230447,0,12724.34,62.48186,1,17,1,172.511,34.33921,37.15419,0,0,244.0044,0,0,0,10,0,2,66,13.8,0,72.7,0,90.84,0,0,.6931472,4.509099,0,0,0,1,0,0,72.7,9.45135,.6931472,5.497186,1 +11,2,0,1,1,230448,0,12724.34,60.92813,0,13,1,51.64663,14.2185,42.36801,0,0,108.2331,0,0,0,4,0,2,88.3,10.3,0,69.3,0,90.84,0,0,.6931472,4.509099,0,0,0,1,0,0,69.3,9.45135,.6931472,4.684288,1 +11,2,0,1,2,230448,0,12724.34,61.92813,0,13,1,426.1653,37.12157,0,0,411.7828,875.0697,1,0,0,11,0,2,88.3,10.3,0,69.3,0,90.84,0,0,.6931472,4.509099,0,0,0,1,0,0,69.3,9.45135,.6931472,6.774303,1 +11,2,0,1,3,230448,0,12724.34,62.92813,0,13,1,98.23788,69.82379,40.5815,0,0,208.6432,0,0,0,9,0,2,88.3,10.3,0,69.3,0,90.84,0,0,.6931472,4.509099,0,0,0,1,0,0,69.3,9.45135,.6931472,5.340625,1 +6,2,25,0,1,230480,0,351.3196,20.81862,0,10,1,0,0,0,0,0,0,0,0,0,0,0,1,32.4,6.9,0,61.4,90,90,0,0,0,4.49981,0,3.258096,5.886104,0,0,0,61.4,5.864539,0,,0 +6,2,25,0,2,230480,0,351.3196,21.81862,0,10,1,9.845288,12.4707,0,0,0,22.31599,0,0,0,1,0,1,32.4,6.9,0,61.4,90,90,0,0,0,4.49981,0,3.258096,5.886104,0,0,0,61.4,5.864539,0,3.105303,1 +6,2,25,0,3,230480,0,351.3196,22.81862,0,10,1,0,0,0,0,0,0,0,0,0,0,0,1,32.4,6.9,0,61.4,90,90,0,0,0,4.49981,0,3.258096,5.886104,0,0,0,61.4,5.864539,0,,0 +13,2,0,0,1,230492,0,4783.578,15.22519,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,93.1,0,0,85.2,450,450,1,1,.6931472,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.473153,.6931472,,0 +13,2,0,0,2,230492,0,4783.578,16.22519,1,12,1,24.96417,0,0,0,0,24.96417,0,0,0,1,0,2,93.1,0,0,85.2,450,450,1,1,.6931472,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.473153,.6931472,3.217442,1 +13,2,0,0,3,230492,0,4783.578,17.22519,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,93.1,0,0,85.2,450,450,1,1,.6931472,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.473153,.6931472,,0 +13,2,0,0,4,230492,0,4783.578,18.22519,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,93.1,0,0,85.2,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.473153,.6931472,,0 +13,2,0,0,5,230492,0,4783.578,19.22519,1,12,1,26.46846,0,0,0,0,26.46846,0,0,0,1,0,2,93.1,0,0,85.2,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.473153,.6931472,3.275954,1 +13,2,0,0,1,230493,0,4783.578,38.71047,1,12,1,44.46178,23.41134,33.72335,0,0,101.5965,0,0,0,2,0,2,58.5,24.1,0,84.1,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,84.1,8.473153,.6931472,4.621009,1 +13,2,0,0,2,230493,0,4783.578,39.71047,1,12,1,148.3755,4.414716,0,0,0,152.7903,0,0,0,3,0,2,58.5,24.1,0,84.1,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,84.1,8.473153,.6931472,5.029066,1 +13,2,0,0,3,230493,0,4783.578,40.71047,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,58.5,24.1,0,84.1,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,84.1,8.473153,.6931472,,0 +13,2,0,0,4,230493,0,4783.578,41.71047,1,12,1,64.61906,4.858397,29.7487,0,0,99.22617,0,0,0,2,0,2,58.5,24.1,0,84.1,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,84.1,8.473153,.6931472,4.597402,1 +13,2,0,0,5,230493,0,4783.578,42.71047,1,12,1,32.26976,14.45613,0,0,0,46.72589,0,0,0,2,0,2,58.5,24.1,0,84.1,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,84.1,8.473153,.6931472,3.844298,1 +11,2,0,1,1,230517,0,7652.927,23.01437,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,76.1,3.4,0,86.4,0,0,0,0,0,0,0,0,0,0,0,0,86.4,8.942974,0,,0 +11,2,0,1,2,230517,0,7652.927,24.01437,0,12,1,27.50965,0,0,0,0,27.50965,0,0,0,2,0,1,76.1,3.4,0,86.4,0,0,0,0,0,0,0,0,0,0,0,0,86.4,8.942974,0,3.314537,1 +11,2,0,1,3,230517,0,7652.927,25.01437,0,12,1,24.1433,0,0,0,134.9577,159.101,1,0,0,2,0,1,76.1,3.4,0,86.4,0,0,0,0,0,0,0,0,0,0,0,0,86.4,8.942974,0,5.06954,1 +11,2,0,1,4,230517,0,7652.927,26.01437,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,76.1,3.4,0,86.4,0,0,0,0,0,0,0,0,0,0,0,0,86.4,8.942974,0,,0 +11,2,0,1,5,230517,0,7652.927,27.01437,0,12,1,7.148094,0,0,0,0,7.148094,0,0,0,1,0,1,76.1,3.4,0,86.4,0,0,0,0,0,0,0,0,0,0,0,0,86.4,8.942974,0,1.966846,1 +15,2,95,1,1,230561,0,8665.641,61.79877,1,12,1,37.96152,0,0,0,0,37.96152,0,0,0,1,0,1,81.4,13.8,0,65,452.05,0,0,0,0,0,0,4.564348,6.165086,1,0,0,65,9.067237,0,3.636573,1 +15,2,95,1,2,230561,0,8665.641,62.79877,1,12,1,257.8118,11.70569,80.77879,0,2469.613,2819.909,2,0,0,9,0,1,81.4,13.8,0,65,452.05,0,0,0,0,0,0,4.564348,6.165086,1,0,0,65,9.067237,0,7.94446,1 +15,2,95,1,3,230561,0,8665.641,63.79877,1,12,1,206.3652,155.8385,38.54258,0,1027.84,1428.586,1,0,0,11,0,1,81.4,13.8,0,65,452.05,0,0,0,0,0,0,4.564348,6.165086,1,0,0,65,9.067237,0,7.264441,1 +14,2,95,0,1,230575,0,8577.126,24.82136,0,14,1,82.74961,5.159435,0,0,0,87.90904,0,0,0,3,1,2,82.4,0,0,87.5,765,765,0,0,.6931472,6.639876,0,4.564348,6.691169,0,0,0,87.5,9.056971,.6931472,4.476303,1 +14,2,95,0,2,230575,0,8577.126,25.82136,0,14,1,13.69534,3.575204,0,0,0,17.27054,0,0,0,1,0,2,82.4,0,0,87.5,765,765,0,0,.6931472,6.639876,0,4.564348,6.691169,0,0,0,87.5,9.056971,.6931472,2.849002,1 +14,2,95,0,3,230575,0,8577.126,26.82136,0,14,1,168.8458,2.46696,0,0,0,171.3128,0,0,0,5,0,2,82.4,0,0,87.5,765,765,0,0,.6931472,6.639876,0,4.564348,6.691169,0,0,0,87.5,9.056971,.6931472,5.143491,1 +14,2,95,0,4,230575,0,8577.126,27.82136,0,14,1,32.52016,0,0,0,0,32.52016,0,0,0,2,0,2,82.4,0,0,87.5,765,765,0,0,.6931472,6.639876,0,4.564348,6.691169,0,0,0,87.5,9.056971,.6931472,3.48186,1 +14,2,95,0,5,230575,0,8577.126,28.82136,0,14,1,61.18397,0,0,0,0,61.18397,0,0,0,1,0,3,82.4,0,0,87.5,765,765,0,0,1.098612,6.639876,0,4.564348,6.691169,0,0,0,87.5,9.056971,1.098612,4.113885,1 +13,2,0,0,1,230581,0,14106.75,17.91923,0,12,1,163.2865,32.17369,18.20073,0,279.1368,492.7977,1,0,0,13,1,3,87.8,6.9,0,79.5,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.55448,1.098612,6.200099,1 +13,2,0,0,2,230581,0,14106.75,18.91923,0,12,1,21.50024,0,0,0,0,21.50024,0,0,0,2,0,3,87.8,6.9,0,79.5,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.55448,1.098612,3.068064,1 +13,2,0,0,3,230581,0,14106.75,19.91923,0,12,1,8.779632,8.981563,32.92362,0,0,50.68481,0,0,0,1,0,3,87.8,6.9,0,79.5,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.55448,1.098612,3.925626,1 +13,2,0,0,1,230582,0,14106.75,52.81041,0,12,1,152.6261,13.93136,0,0,0,166.5575,0,0,0,7,0,3,89.4,6.9,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,86.4,9.55448,1.098612,5.11534,1 +13,2,0,0,2,230582,0,14106.75,53.81041,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,89.4,6.9,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,86.4,9.55448,1.098612,,0 +13,2,0,0,3,230582,0,14106.75,54.81041,0,12,1,97.01492,0,34.24056,0,0,131.2555,0,0,0,2,0,3,89.4,6.9,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,86.4,9.55448,1.098612,4.877146,1 +13,2,0,0,1,230583,0,14106.75,51.24709,1,12,1,85.80343,59.02756,6.49506,0,0,151.326,0,0,0,7,0,3,77.7,17.2,0,75,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,75,9.55448,1.098612,5.019437,1 +13,2,0,0,2,230583,0,14106.75,52.24709,1,12,1,103.2011,20.23411,34.0086,0,0,157.4439,0,0,0,7,0,3,77.7,17.2,0,75,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,75,9.55448,1.098612,5.059069,1 +13,2,0,0,3,230583,0,14106.75,53.24709,1,12,1,67.60316,20.3863,0,0,673.9904,761.9798,1,0,0,3,0,3,77.7,17.2,0,75,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,75,9.55448,1.098612,6.63592,1 +17,2,25,1,1,230584,0,3818.182,24.45175,0,12,1,183.586,4.140094,28.37428,0,0,216.1004,0,0,0,11,0,1,93.6,3.4,0,86.4,146.8,146.8,0,0,0,4.989071,0,3.258096,6.375365,0,0,0,86.4,8.247791,0,5.375743,1 +17,2,25,1,2,230584,0,3818.182,25.45175,0,12,.3205479,0,0,0,0,0,0,0,0,0,0,0,1,93.6,3.4,0,86.4,146.8,146.8,0,0,0,4.989071,0,3.258096,6.375365,0,0,0,86.4,8.247791,0,,0 +11,2,0,0,1,230595,0,10527.27,14.85832,1,12,1,178.8872,4.664587,33.58814,0,0,217.1399,0,0,0,8,0,4,70.7,6.9,0,92,0,0,1,1,1.386294,0,0,0,0,0,0,0,92,9.26182,1.386294,5.380542,1 +11,2,0,0,2,230595,0,10527.27,15.85832,1,12,1,132.107,15.54228,0,0,0,147.6493,0,0,0,6,5,4,70.7,6.9,0,92,0,0,1,1,1.386294,0,0,0,0,0,0,0,92,9.26182,1.386294,4.99484,1 +11,2,0,0,3,230595,0,10527.27,16.85832,1,12,1,262.6207,1.975417,19.49078,0,0,284.0869,0,0,0,13,0,4,70.7,6.9,0,92,0,0,1,1,1.386294,0,0,0,0,0,0,0,92,9.26182,1.386294,5.64928,1 +11,2,0,0,1,230596,0,10527.27,42.41205,1,12,1,378.5751,3.51014,65.82943,0,0,447.9147,0,0,0,7,0,4,88.3,10.3,1,68.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,68.2,9.26182,1.386294,6.104603,1 +11,2,0,0,2,230596,0,10527.27,43.41205,1,12,1,139.3932,0,0,0,0,139.3932,0,0,0,4,5,4,88.3,10.3,1,68.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,68.2,9.26182,1.386294,4.937299,1 +11,2,0,0,3,230596,0,10527.27,44.41205,1,12,1,62.33538,0,0,0,2530.509,2592.844,1,0,0,1,0,4,88.3,10.3,1,68.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,68.2,9.26182,1.386294,7.860511,1 +11,2,0,0,1,230597,0,10527.27,17.02122,0,12,1,45.37181,0,0,0,0,45.37181,0,0,0,2,0,4,67,6.9,0,67,0,0,1,0,1.386294,0,0,0,0,0,1,0,67,9.26182,1.386294,3.814891,1 +11,2,0,0,2,230597,0,10527.27,18.02122,0,12,1,31.53368,0,0,0,0,31.53368,0,0,0,1,0,4,67,6.9,0,67,0,0,0,0,1.386294,0,0,0,0,0,1,0,67,9.26182,1.386294,3.451056,1 +11,2,0,0,3,230597,0,10527.27,19.02122,0,12,1,6.584723,0,0,0,0,6.584723,0,0,0,1,0,4,67,6.9,0,67,0,0,0,0,1.386294,0,0,0,0,0,1,0,67,9.26182,1.386294,1.884752,1 +11,2,0,0,1,230598,0,10527.27,47.28268,0,12,1,0,4.940197,0,0,0,4.940197,0,0,0,0,0,4,89.9,6.9,1,92,0,0,0,0,1.386294,0,0,0,0,0,0,0,92,9.26182,1.386294,1.597405,1 +11,2,0,0,2,230598,0,10527.27,48.28268,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,89.9,6.9,1,92,0,0,0,0,1.386294,0,0,0,0,0,0,0,92,9.26182,1.386294,,0 +11,2,0,0,3,230598,0,10527.27,49.28268,0,12,1,63.98156,0,0,0,0,63.98156,0,0,0,3,0,4,89.9,6.9,1,92,0,0,0,0,1.386294,0,0,0,0,0,0,0,92,9.26182,1.386294,4.158595,1 +17,2,25,1,1,230620,0,14321.41,38.16838,1,12,1,32.24129,0,0,0,0,32.24129,0,0,0,2,0,5,83,10.3,0,73.9,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,73.9,9.56958,1.609438,3.473248,1 +17,2,25,1,2,230620,0,14321.41,39.16838,1,12,1,41.08934,2.197802,0,0,0,43.28715,0,0,0,3,0,5,83,10.3,0,73.9,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,73.9,9.56958,1.609438,3.767856,1 +17,2,25,1,3,230620,0,14321.41,40.16838,1,12,1,101.8437,2.414399,28.92888,0,0,133.187,0,0,0,6,0,5,83,10.3,0,73.9,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,1,0,0,73.9,9.56958,1.609438,4.891754,1 +17,2,25,1,1,230621,0,14321.41,8.161533,0,12,1,11.44046,0,0,0,0,11.44046,0,0,0,1,0,5,93.3,11.84267,0,88.9,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,88.9,9.56958,1.609438,2.437156,1 +17,2,25,1,2,230621,0,14321.41,9.161533,0,12,1,10.51123,0,0,0,0,10.51123,0,0,0,1,0,5,93.3,11.84267,0,88.9,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,88.9,9.56958,1.609438,2.352444,1 +17,2,25,1,3,230621,0,14321.41,10.16153,0,12,1,19.53468,0,0,0,0,19.53468,0,0,0,2,0,5,93.3,11.84267,0,88.9,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,88.9,9.56958,1.609438,2.972191,1 +17,2,25,1,1,230622,0,14321.41,13.16632,0,12,1,14.56058,0,25.94384,0,0,40.50442,0,0,0,1,0,5,98.3,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,100,9.56958,1.609438,3.701411,1 +17,2,25,1,2,230622,0,14321.41,14.16632,0,12,1,22.93359,0,0,0,0,22.93359,0,0,0,2,0,5,98.3,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,100,9.56958,1.609438,3.132602,1 +17,2,25,1,3,230622,0,14321.41,15.16632,0,12,1,16.46181,0,.8779631,0,0,17.33977,0,0,0,2,0,5,98.3,11.84267,0,100,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,100,9.56958,1.609438,2.853003,1 +17,2,25,1,1,230623,0,14321.41,39.32101,0,17,1,21.58086,2.844514,20.80083,0,0,45.22621,0,0,0,2,0,5,88.3,17.2,0,69.3,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,69.3,9.56958,1.609438,3.811677,1 +17,2,25,1,2,230623,0,14321.41,40.32101,0,17,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,17.2,0,69.3,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,69.3,9.56958,1.609438,,0 +17,2,25,1,3,230623,0,14321.41,41.32101,0,17,1,5.487269,0,0,0,0,5.487269,0,0,0,1,0,5,88.3,17.2,0,69.3,1000,1000,0,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,69.3,9.56958,1.609438,1.702431,1 +17,2,25,1,1,230624,0,14321.41,10.04517,0,12,1,37.5715,13.28653,0,0,0,50.85804,0,0,0,3,0,5,96.7,11.84267,0,92.6,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,92.6,9.56958,1.609438,3.929038,1 +17,2,25,1,2,230624,0,14321.41,11.04517,0,12,1,10.51123,0,0,0,0,10.51123,0,0,0,1,0,5,96.7,11.84267,0,92.6,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,92.6,9.56958,1.609438,2.352444,1 +17,2,25,1,3,230624,0,14321.41,12.04517,0,12,1,23.04653,0,0,0,0,23.04653,0,0,0,2,0,5,96.7,11.84267,0,92.6,1000,1000,1,0,1.609438,6.907755,0,3.258096,8.294049,0,0,0,92.6,9.56958,1.609438,3.137515,1 +15,2,95,1,1,230625,0,537.8299,37.54415,1,17,1,12.17575,17.12546,0,0,0,29.30122,0,0,0,1,0,1,55.9,37.9,1,31.8,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,31.8,6.2894,0,3.377629,1 +15,2,95,1,2,230625,0,537.8299,38.54415,1,17,1,79.15058,23.88996,33.10328,0,0,136.1438,0,0,0,4,0,1,55.9,37.9,1,31.8,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,31.8,6.2894,0,4.913712,1 +15,2,95,1,3,230625,0,537.8299,39.54415,1,17,1,40.49844,13.90743,0,0,0,54.40588,0,0,0,1,0,1,55.9,37.9,1,31.8,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,31.8,6.2894,0,3.996472,1 +15,2,95,1,4,230625,0,537.8299,40.54415,1,17,1,77.90972,6.807645,0,0,0,84.71736,0,0,0,2,0,1,55.9,37.9,1,31.8,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,31.8,6.2894,0,4.439321,1 +15,2,95,1,5,230625,0,537.8299,41.54415,1,17,1,0,7.580645,0,0,0,7.580645,0,0,0,0,0,1,55.9,37.9,1,31.8,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,31.8,6.2894,0,2.025598,1 +11,2,0,0,1,230640,0,392.9619,26.5024,0,16,1,69.45863,0,0,0,0,69.45863,0,0,0,2,0,1,50,6.9,0,45.5,0,0,0,0,0,0,0,0,0,1,0,0,45.5,5.976254,0,4.240731,1 +11,2,0,0,2,230640,0,392.9619,27.5024,0,16,1,11.25176,5.954055,0,0,0,17.20581,0,0,0,1,0,1,50,6.9,0,45.5,0,0,0,0,0,0,0,0,0,1,0,0,45.5,5.976254,0,2.845247,1 +11,2,0,0,3,230640,0,392.9619,28.5024,0,16,1,42.13242,0,37.30869,0,0,79.4411,0,0,0,2,1,1,50,6.9,0,45.5,0,0,0,0,0,0,0,0,0,1,0,0,45.5,5.976254,0,4.375016,1 +11,2,0,0,1,230641,0,751.3196,26.56263,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,66.5,6.9,0,69.3,0,0,0,0,0,0,0,0,0,1,0,0,69.3,6.623161,0,,0 +11,2,0,0,2,230641,0,751.3196,27.56263,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,66.5,6.9,0,69.3,0,0,0,0,0,0,0,0,0,1,0,0,69.3,6.623161,0,,0 +11,2,0,0,3,230641,0,751.3196,28.56263,0,16,1,21.67317,0,1.30039,0,0,22.97356,0,0,0,1,0,1,66.5,6.9,0,69.3,0,0,0,0,0,0,0,0,0,1,0,0,69.3,6.623161,0,3.134344,1 +13,2,0,0,1,230643,0,4081.525,49.08693,1,14,1,422.8809,123.0785,23.81175,120.6448,0,569.7712,0,0,7,9,28,2,80.3,10.3,1,86.4,300,538.92,0,0,.6931472,6.289567,1,4.564348,5.755076,0,0,0,86.4,8.314471,.6931472,6.345235,1 +13,2,0,0,2,230643,0,4081.525,50.08693,1,14,1,217.6541,125.2126,30.52556,7.644529,0,373.3923,0,0,1,8,13,2,80.3,10.3,1,86.4,300,538.92,0,0,.6931472,6.289567,1,4.564348,5.755076,0,0,0,86.4,8.314471,.6931472,5.922629,1 +13,2,0,0,3,230643,0,4081.525,51.08693,1,14,1,423.683,269.5039,36.55838,0,0,729.7454,0,0,1,10,9,2,80.3,10.3,1,86.4,300,538.92,0,0,.6931472,6.289567,1,4.564348,5.755076,0,0,0,86.4,8.314471,.6931472,6.592696,1 +13,2,0,0,1,230644,0,4081.525,15.09103,1,14,1,0,0,0,0,0,0,0,0,0,0,0,2,44.7,10.3,0,55.7,300,538.92,1,1,.6931472,6.289567,1,4.564348,5.755076,0,0,0,55.7,8.314471,.6931472,,0 +13,2,0,0,2,230644,0,4081.525,16.09103,1,14,1,16.72241,0,0,0,0,16.72241,0,0,0,1,0,2,44.7,10.3,0,55.7,300,538.92,1,1,.6931472,6.289567,1,4.564348,5.755076,0,0,0,55.7,8.314471,.6931472,2.81675,1 +13,2,0,0,3,230644,0,4081.525,17.09103,1,14,1,0,0,0,0,0,0,0,0,0,0,0,2,44.7,10.3,0,55.7,300,538.92,1,1,.6931472,6.289567,1,4.564348,5.755076,0,0,0,55.7,8.314471,.6931472,,0 +11,2,0,0,1,230645,0,8129.619,28.69268,1,12,1,19.86409,1.437533,0,0,0,21.30162,0,0,0,2,0,5,74.5,24.1,0,84.1,0,383.64,0,0,1.609438,5.949705,0,0,0,0,0,0,84.1,9.003392,1.609438,3.058783,1 +11,2,0,0,2,230645,0,8129.619,29.69268,1,12,1,66.31427,0,0,0,0,66.31427,0,0,0,5,0,5,74.5,24.1,0,84.1,0,383.64,0,0,1.609438,5.949705,0,0,0,0,0,0,84.1,9.003392,1.609438,4.194405,1 +11,2,0,0,3,230645,0,8129.619,30.69268,1,12,1,60.79295,0,28.07489,0,0,88.86784,0,0,0,3,0,5,74.5,24.1,0,84.1,0,383.64,0,0,1.609438,5.949705,0,0,0,0,0,0,84.1,9.003392,1.609438,4.48715,1 +11,2,0,0,1,230646,0,8129.619,4.720055,0,12,1,18.29587,4.103502,0,0,0,22.39937,0,0,0,2,0,5,81.35272,11.84267,0,81.5,0,383.64,1,0,1.609438,5.949705,0,0,0,0,0,0,81.5,9.003392,1.609438,3.109033,1 +11,2,0,0,2,230646,0,8129.619,5.720055,0,12,1,15.13695,2.691014,0,0,0,17.82797,0,0,0,1,0,5,81.35272,11.84267,0,81.5,0,383.64,1,0,1.609438,5.949705,0,0,0,0,0,0,81.5,9.003392,1.609438,2.880768,1 +11,2,0,0,3,230646,0,8129.619,6.720055,0,12,1,50.66079,0,0,0,0,50.66079,0,0,0,4,0,5,81.35272,11.84267,0,81.5,0,383.64,1,0,1.609438,5.949705,0,0,0,0,0,0,81.5,9.003392,1.609438,3.925152,1 +11,2,0,0,1,230647,0,8129.619,3.310062,1,12,1,105.5933,12.62415,0,0,0,118.2175,0,0,0,3,0,5,81.35272,11.84267,0,81.5,0,383.64,1,1,1.609438,5.949705,0,0,0,0,0,0,81.5,9.003392,1.609438,4.772526,1 +11,2,0,0,2,230647,0,8129.619,4.310061,1,12,1,19.94234,7.063911,0,0,0,27.00625,0,0,0,2,0,5,81.35272,11.84267,0,81.5,0,383.64,1,1,1.609438,5.949705,0,0,0,0,0,0,81.5,9.003392,1.609438,3.296068,1 +11,2,0,0,3,230647,0,8129.619,5.310061,1,12,1,11.01322,0,0,0,0,11.01322,0,0,0,1,0,5,81.35272,11.84267,0,81.5,0,383.64,1,1,1.609438,5.949705,0,0,0,0,0,0,81.5,9.003392,1.609438,2.399096,1 +11,2,0,0,1,230648,0,8129.619,3.310062,1,12,1,21.17094,2.06482,0,0,0,23.23576,0,0,0,2,0,5,81.35272,11.84267,0,59.3,0,383.64,1,1,1.609438,5.949705,0,0,0,0,0,0,59.3,9.003392,1.609438,3.145692,1 +11,2,0,0,2,230648,0,8129.619,4.310061,1,12,1,12.73426,0,0,0,0,12.73426,0,0,0,1,0,5,81.35272,11.84267,0,59.3,0,383.64,1,1,1.609438,5.949705,0,0,0,0,0,0,59.3,9.003392,1.609438,2.544296,1 +11,2,0,0,3,230648,0,8129.619,5.310061,1,12,1,11.01322,0,0,0,0,11.01322,0,0,0,1,0,5,81.35272,11.84267,0,59.3,0,383.64,1,1,1.609438,5.949705,0,0,0,0,0,0,59.3,9.003392,1.609438,2.399096,1 +11,2,0,0,1,230649,0,8129.619,28.26831,0,14,1,72.66074,0,0,0,0,72.66074,0,0,0,6,0,5,76.6,10.3,0,93.2,0,383.64,0,0,1.609438,5.949705,0,0,0,0,0,0,93.2,9.003392,1.609438,4.285801,1 +11,2,0,0,2,230649,0,8129.619,29.26831,0,14,1,71.84046,0,0,0,0,71.84046,0,0,0,7,0,5,76.6,10.3,0,93.2,0,383.64,0,0,1.609438,5.949705,0,0,0,0,0,0,93.2,9.003392,1.609438,4.274448,1 +11,2,0,0,3,230649,0,8129.619,30.26831,0,14,1,103.9648,5.563877,0,0,0,109.5286,0,0,0,6,0,5,76.6,10.3,0,93.2,0,383.64,0,0,1.609438,5.949705,0,0,0,0,0,0,93.2,9.003392,1.609438,4.696186,1 +11,2,0,0,1,230668,0,15134.31,37.26215,1,12,1,469.5788,6.619865,0,0,0,476.1986,0,0,0,3,0,5,78.7,10.3,0,93.2,0,0,0,0,1.609438,0,0,0,0,1,0,0,93.2,9.624785,1.609438,6.165835,1 +11,2,0,0,2,230668,0,15134.31,38.26215,1,12,1,83.01481,0,0,0,0,83.01481,0,0,0,16,0,5,78.7,10.3,0,93.2,0,0,0,0,1.609438,0,0,0,0,1,0,0,93.2,9.624785,1.609438,4.419019,1 +11,2,0,0,3,230668,0,15134.31,39.26215,1,12,1,201.0536,3.630378,0,0,0,204.6839,0,0,0,2,25,5,78.7,10.3,0,93.2,0,0,0,0,1.609438,0,0,0,0,1,0,0,93.2,9.624785,1.609438,5.321467,1 +11,2,0,0,1,230669,0,15134.31,7.657769,1,12,1,19.89079,21.39886,0,0,0,41.28965,0,0,0,2,0,5,73.3,11.84267,0,40.7,0,0,1,1,1.609438,0,0,0,0,1,0,0,40.7,9.624785,1.609438,3.720612,1 +11,2,0,0,2,230669,0,15134.31,8.657768,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,73.3,11.84267,0,40.7,0,0,1,1,1.609438,0,0,0,0,1,0,0,40.7,9.624785,1.609438,,0 +11,2,0,0,3,230669,0,15134.31,9.657768,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,73.3,11.84267,0,40.7,0,0,1,1,1.609438,0,0,0,0,1,0,0,40.7,9.624785,1.609438,,0 +11,2,0,0,1,230670,0,15134.31,39.8768,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83,6.9,0,81.8,0,0,0,0,1.609438,0,0,0,0,1,0,0,81.8,9.624785,1.609438,,0 +11,2,0,0,2,230670,0,15134.31,40.8768,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83,6.9,0,81.8,0,0,0,0,1.609438,0,0,0,0,1,0,0,81.8,9.624785,1.609438,,0 +11,2,0,0,3,230670,0,15134.31,41.8768,0,12,1,119.0737,14.66198,0,0,0,133.7357,0,0,0,3,0,5,83,6.9,0,81.8,0,0,0,0,1.609438,0,0,0,0,1,0,0,81.8,9.624785,1.609438,4.895866,1 +11,2,0,0,1,230671,0,15134.31,18.91855,0,11,1,13.91056,6.422257,0,0,0,20.33281,0,0,0,1,0,5,63.8,10.3,0,69.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,69.3,9.624785,1.609438,3.012236,1 +11,2,0,0,2,230671,0,15134.31,19.91855,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,63.8,10.3,0,69.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,69.3,9.624785,1.609438,,0 +11,2,0,0,3,230671,0,15134.31,20.91855,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,63.8,10.3,0,69.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,69.3,9.624785,1.609438,,0 +11,2,0,0,1,230672,0,15134.31,12.43532,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,11.84267,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,9.624785,1.609438,,0 +11,2,0,0,2,230672,0,15134.31,13.43532,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,11.84267,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,9.624785,1.609438,,0 +11,2,0,0,3,230672,0,15134.31,14.43532,0,12,1,8.779632,0,0,0,0,8.779632,0,0,0,1,0,5,86.7,11.84267,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,9.624785,1.609438,2.172435,1 +7,2,25,1,1,230678,0,8665.641,23.38398,1,12,1,35.4685,0,0,0,0,35.4685,0,0,0,1,0,2,85.6,13.8,0,87.5,600,600,0,0,.6931472,6.39693,0,3.258096,7.783224,0,0,0,87.5,9.067237,.6931472,3.568645,1 +7,2,25,1,2,230678,0,8665.641,24.38398,1,12,1,74.80695,0,0,0,0,74.80695,0,0,0,3,0,2,85.6,13.8,0,87.5,600,600,0,0,.6931472,6.39693,0,3.258096,7.783224,0,0,0,87.5,9.067237,.6931472,4.314911,1 +7,2,25,1,1,230679,0,8665.641,5.234771,1,12,1,0,3.123346,0,0,0,3.123346,0,0,0,0,0,2,85,11.84267,0,100,600,600,1,1,.6931472,6.39693,0,3.258096,7.783224,0,0,0,100,9.067237,.6931472,1.138905,1 +7,2,25,1,2,230679,0,8665.641,6.234771,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,85,11.84267,0,100,600,600,1,1,.6931472,6.39693,0,3.258096,7.783224,0,0,0,100,9.067237,.6931472,,0 +7,2,25,0,1,230723,0,13557.77,14.77892,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,92.9,3.4,0,81.8,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,81.8,9.514789,1.098612,,0 +7,2,25,0,2,230723,0,13557.77,15.77892,1,12,1,16.87764,3.338022,0,0,0,20.21566,0,0,0,2,0,3,92.9,3.4,0,81.8,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,81.8,9.514789,1.098612,3.006458,1 +7,2,25,0,3,230723,0,13557.77,16.77892,1,12,1,3.439381,0,0,0,0,3.439381,0,0,0,0,0,3,92.9,3.4,0,81.8,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,81.8,9.514789,1.098612,1.235291,1 +7,2,25,0,4,230723,0,13557.77,17.77892,1,12,1,48.4684,0,0,0,0,48.4684,0,0,0,3,0,3,92.9,3.4,0,81.8,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,81.8,9.514789,1.098612,3.880912,1 +7,2,25,0,5,230723,0,13557.77,18.77892,1,12,1,5.573248,0,0,0,0,5.573248,0,0,0,1,0,3,92.9,3.4,0,81.8,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,81.8,9.514789,1.098612,1.717978,1 +7,2,25,0,1,230724,0,13557.77,36.98015,0,15,1,22.98264,2.757916,0,0,0,25.74055,0,0,0,1,0,3,89.9,6.9,0,95.5,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,95.5,9.514789,1.098612,3.248068,1 +7,2,25,0,2,230724,0,13557.77,37.98015,0,15,1,35.86498,5.344585,40.04688,0,0,81.25645,0,0,0,2,1,3,89.9,6.9,0,95.5,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,95.5,9.514789,1.098612,4.39761,1 +7,2,25,0,3,230724,0,13557.77,38.98015,0,15,1,0,0,0,0,0,0,0,0,0,0,0,3,89.9,6.9,0,95.5,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,95.5,9.514789,1.098612,,0 +7,2,25,0,4,230724,0,13557.77,39.98015,0,15,1,22.48934,2.927491,45.47499,0,0,70.89182,0,0,0,1,1,3,89.9,6.9,0,95.5,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,95.5,9.514789,1.098612,4.261155,1 +7,2,25,0,5,230724,0,13557.77,40.98015,0,15,1,45.138,2.388535,0,0,0,47.52654,0,0,0,3,0,3,89.9,6.9,0,95.5,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,95.5,9.514789,1.098612,3.861288,1 +7,2,25,0,1,230725,0,13557.77,34.78439,1,12,1,68.69254,17.23698,0,0,0,85.92952,0,0,0,2,0,3,90.4,3.4,0,88.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,88.6,9.514789,1.098612,4.453527,1 +7,2,25,0,2,230725,0,13557.77,35.78439,1,12,1,428.903,0,0,0,0,428.903,0,0,0,4,0,3,90.4,3.4,0,88.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,88.6,9.514789,1.098612,6.061231,1 +7,2,25,0,3,230725,0,13557.77,36.78439,1,12,1,51.16079,0,0,0,363.3233,414.4841,1,0,0,4,0,3,90.4,3.4,0,88.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,88.6,9.514789,1.098612,6.027035,1 +7,2,25,0,4,230725,0,13557.77,37.78439,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,90.4,3.4,0,88.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,88.6,9.514789,1.098612,,0 +7,2,25,0,5,230725,0,13557.77,38.78439,1,12,1,69.70984,8.280254,0,0,0,77.99009,0,0,0,2,0,3,90.4,3.4,0,88.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,88.6,9.514789,1.098612,4.356582,1 +13,2,0,0,1,230740,0,6634.604,32.19439,0,12,1,261.0504,30.41602,0,0,216.2767,507.7431,1,0,0,12,0,2,79.8,3.4,1,85.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,85.2,8.800205,.6931472,6.229976,1 +13,2,0,0,2,230740,0,6634.604,33.19439,0,12,1,82.65647,7.166746,0,301.0034,0,89.82322,0,0,9,3,0,2,79.8,3.4,1,85.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,85.2,8.800205,.6931472,4.497844,1 +13,2,0,0,3,230740,0,6634.604,34.19439,0,12,1,2.194908,6.584723,0,1290.606,0,8.779632,0,0,45,1,0,2,79.8,3.4,1,85.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,85.2,8.800205,.6931472,2.172435,1 +13,2,0,0,4,230740,0,6634.604,35.19439,0,12,1,31.11288,0,0,712.0064,0,31.11288,0,0,25,1,0,2,79.8,3.4,1,85.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,85.2,8.800205,.6931472,3.437622,1 +13,2,0,0,5,230740,0,6634.604,36.19439,0,12,1,126.1784,6.613488,9.06454,0,1587.353,1729.21,3,0,0,4,3,2,79.8,3.4,1,85.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,85.2,8.800205,.6931472,7.45542,1 +13,2,0,0,1,230741,0,6634.604,30.75975,1,14,1,55.51222,2.932917,0,0,0,58.44514,0,0,0,4,0,2,62.8,13.8,0,81.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,81.8,8.800205,.6931472,4.068089,1 +13,2,0,0,2,230741,0,6634.604,31.75975,1,14,1,20.54467,0,37.08552,150.5017,0,57.6302,0,0,9,1,1,2,62.8,13.8,0,81.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,81.8,8.800205,.6931472,4.054047,1 +13,2,0,0,3,230741,0,6634.604,32.75975,1,14,1,17.33977,.9657595,0,676.0316,0,18.30553,0,0,44,2,0,2,62.8,13.8,0,81.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,81.8,8.800205,.6931472,2.907203,1 +13,2,0,0,4,230741,0,6634.604,33.75975,1,14,1,29.91623,0,6.781013,656.1627,0,36.69725,0,0,47,3,0,2,62.8,13.8,0,81.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,81.8,8.800205,.6931472,3.602702,1 +13,2,0,0,5,230741,0,6634.604,34.75975,1,14,1,0,0,7.770123,0,0,7.770123,0,0,0,0,0,2,62.8,13.8,0,81.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,81.8,8.800205,.6931472,2.050286,1 +11,2,0,0,1,230771,0,13633.43,15.89322,1,11,1,9.620385,0,0,0,0,9.620385,0,0,0,1,0,6,92,0,0,98.9,0,0,1,1,1.791759,0,0,0,0,0,0,0,98.9,9.520353,1.791759,2.263884,1 +11,2,0,0,2,230771,0,13633.43,16.89322,1,11,1,17.91687,0,0,0,0,17.91687,0,0,0,0,1,5,92,0,0,98.9,0,0,1,1,1.609438,0,0,0,0,0,0,0,98.9,9.520353,1.609438,2.885742,1 +11,2,0,0,3,230771,0,13633.43,17.89322,1,11,1,12.73046,7.177349,0,0,591.2204,611.1282,1,0,0,0,0,5,92,0,0,98.9,0,0,1,1,1.609438,0,0,0,0,0,0,0,98.9,9.520353,1.609438,6.415307,1 +11,2,0,0,1,230773,0,13633.43,37.32512,1,11,1,203.9002,8.367135,3.010921,0,0,215.2782,0,0,0,8,0,6,81.9,10.3,0,75,0,0,0,0,1.791759,0,0,0,0,1,0,0,75,9.520353,1.791759,5.371931,1 +11,2,0,0,2,230773,0,13633.43,38.32512,1,11,1,53.51171,41.08934,25.39417,0,0,119.9952,0,0,0,5,0,5,81.9,10.3,0,75,0,0,0,0,1.609438,0,0,0,0,1,0,0,75,9.520353,1.609438,4.787452,1 +11,2,0,0,3,230773,0,13633.43,39.32512,1,11,1,56.62862,58.05092,64.87708,0,0,179.5566,0,0,0,4,0,5,81.9,10.3,0,75,0,0,0,0,1.609438,0,0,0,0,1,0,0,75,9.520353,1.609438,5.190491,1 +11,2,0,0,1,230774,0,13633.43,14.40931,1,11,1,47.4779,4.118565,0,0,0,51.59646,0,0,0,6,0,6,89.4,3.4,0,93.2,0,0,1,1,1.791759,0,0,0,0,0,0,0,93.2,9.520353,1.791759,3.943453,1 +11,2,0,0,2,230774,0,13633.43,15.40931,1,11,1,64.26183,4.171046,0,0,0,68.43287,0,0,0,4,1,5,89.4,3.4,0,93.2,0,0,1,1,1.609438,0,0,0,0,0,0,0,93.2,9.520353,1.609438,4.225853,1 +11,2,0,0,3,230774,0,13633.43,16.40931,1,11,1,32.48463,11.39596,0,0,0,43.8806,0,0,0,4,0,5,89.4,3.4,0,93.2,0,0,1,1,1.609438,0,0,0,0,0,0,0,93.2,9.520353,1.609438,3.781472,1 +11,2,0,0,1,230775,0,13633.43,38.75702,0,15,1,0,0,0,0,0,0,0,0,0,0,0,6,74.29414,6.9,0,96.6,0,0,0,0,1.791759,0,0,0,0,0,0,0,96.6,9.520353,1.791759,,0 +11,2,0,0,2,230775,0,13633.43,39.75702,0,15,1,12.42236,11.04634,0,0,0,23.46871,0,0,0,2,0,5,74.29414,6.9,0,96.6,0,0,0,0,1.609438,0,0,0,0,0,0,0,96.6,9.520353,1.609438,3.155668,1 +11,2,0,0,3,230775,0,13633.43,40.75702,0,15,1,10.75505,1.097454,0,0,0,11.8525,0,0,0,1,0,5,74.29414,6.9,0,96.6,0,0,0,0,1.609438,0,0,0,0,0,0,0,96.6,9.520353,1.609438,2.472539,1 +11,2,0,0,1,230776,0,13633.43,13.33881,0,11,1,21.32085,0,34.62819,0,0,55.94904,0,0,0,2,0,6,83.3,11.84267,0,77.8,0,0,1,0,1.791759,0,0,0,0,0,0,0,77.8,9.520353,1.791759,4.024441,1 +11,2,0,0,2,230776,0,13633.43,14.33881,0,11,1,32.01147,0,11.13235,0,0,43.14381,0,0,0,1,1,5,83.3,11.84267,0,77.8,0,0,1,0,1.609438,0,0,0,0,0,0,0,77.8,9.520353,1.609438,3.764539,1 +11,2,0,0,3,230776,0,13633.43,15.33881,0,11,1,14.2669,0,0,0,0,14.2669,0,0,0,1,0,5,83.3,11.84267,0,77.8,0,0,1,0,1.609438,0,0,0,0,0,0,0,77.8,9.520353,1.609438,2.657942,1 +11,2,0,0,1,230777,0,13633.43,8.536619,0,11,1,10.66043,0,191.8357,0,439.0796,641.5757,1,0,0,2,0,6,83.3,11.84267,1,55.6,0,0,1,0,1.791759,0,0,0,0,0,0,0,55.6,9.520353,1.791759,6.463927,1 +11,2,0,1,1,230778,0,2910.85,18.06981,1,8,1,153.4145,49.36474,32.07517,0,0,234.8544,0,0,0,5,1,3,46.3,24.1,0,43.2,0,234,0,0,1.098612,5.455321,0,0,0,0,1,0,43.2,7.976544,1.098612,5.458966,1 +11,2,0,1,2,230778,0,2910.85,19.06981,1,8,1,949.8069,34.96139,17.37452,0,0,1002.143,0,0,0,8,1,3,46.3,24.1,0,43.2,0,234,0,0,1.098612,5.455321,0,0,0,0,1,0,43.2,7.976544,1.098612,6.909896,1 +11,2,0,1,3,230778,0,2910.85,20.06981,1,8,1,98.48687,38.11749,0,0,0,136.6044,0,0,0,9,0,3,46.3,24.1,0,43.2,0,234,0,0,1.098612,5.455321,0,0,0,0,1,0,43.2,7.976544,1.098612,4.917089,1 +11,2,0,1,1,230779,0,2910.85,21.91102,0,9,1,310.2435,59.69296,0,0,1412.282,1782.218,2,0,0,11,1,3,35.1,20.7,1,59.1,0,234,0,0,1.098612,5.455321,0,0,0,0,0,0,59.1,7.976544,1.098612,7.485614,1 +11,2,0,1,2,230779,0,2910.85,22.91102,0,9,1,543.2432,15.34749,0,0,0,558.5908,0,0,0,9,0,3,35.1,20.7,1,59.1,0,234,0,0,1.098612,5.455321,0,0,0,0,0,0,59.1,7.976544,1.098612,6.325417,1 +11,2,0,1,3,230779,0,2910.85,23.91102,0,9,1,167.0004,0,0,0,0,167.0004,0,0,0,4,0,3,35.1,20.7,1,59.1,0,234,0,0,1.098612,5.455321,0,0,0,0,0,0,59.1,7.976544,1.098612,5.117997,1 +11,2,0,1,1,230780,0,2910.85,1.138946,0,8,1,202.0381,35.49497,0,0,308.2054,545.7385,1,0,0,6,0,3,81.35272,11.84267,0,37,0,234,1,0,1.098612,5.455321,0,0,0,0,0,0,37,7.976544,1.098612,6.30214,1 +11,2,0,1,2,230780,0,2910.85,2.138946,0,8,1,23.16602,4.416023,0,0,0,27.58205,0,0,0,2,0,3,81.35272,11.84267,0,37,0,234,1,0,1.098612,5.455321,0,0,0,0,0,0,37,7.976544,1.098612,3.317165,1 +11,2,0,1,3,230780,0,2910.85,3.138946,0,8,1,2.225189,1.869159,0,0,0,4.094348,0,0,0,1,0,3,81.35272,11.84267,0,37,0,234,1,0,1.098612,5.455321,0,0,0,0,0,0,37,7.976544,1.098612,1.409608,1 +11,2,0,1,1,230793,0,16585.92,54.94867,0,16,1,115.4446,0,30.60322,0,0,146.0478,0,0,0,4,1,2,89.9,0,0,84.1,0,589.2,0,0,.6931472,6.378766,0,0,0,0,0,0,84.1,9.71637,.6931472,4.983934,1 +11,2,0,1,2,230793,0,16585.92,55.94867,0,16,1,43.71715,0,0,0,0,43.71715,0,0,0,2,0,2,89.9,0,0,84.1,0,589.2,0,0,.6931472,6.378766,0,0,0,0,0,0,84.1,9.71637,.6931472,3.77774,1 +11,2,0,1,3,230793,0,16585.92,56.94867,0,16,1,134.1089,0,29.41176,0,0,163.5206,0,0,0,4,1,2,89.9,0,0,84.1,0,589.2,0,0,.6931472,6.378766,0,0,0,0,0,0,84.1,9.71637,.6931472,5.096939,1 +11,2,0,1,1,230794,0,16585.92,51.43053,1,12,1,63.18253,95.34582,0,0,0,158.5283,0,0,0,6,0,2,87.2,10.3,1,85.2,0,589.2,0,0,.6931472,6.378766,0,0,0,0,0,0,85.2,9.71637,.6931472,5.065933,1 +11,2,0,1,2,230794,0,16585.92,52.43053,1,12,1,54.94505,107.1046,0,0,1280.053,1442.102,1,0,0,2,2,2,87.2,10.3,1,85.2,0,589.2,0,0,.6931472,6.378766,0,0,0,0,0,0,85.2,9.71637,.6931472,7.273857,1 +11,2,0,1,3,230794,0,16585.92,53.43053,1,12,1,26.77788,155.6673,40.61457,0,0,223.0597,0,0,0,3,1,2,87.2,10.3,1,85.2,0,589.2,0,0,.6931472,6.378766,0,0,0,0,0,0,85.2,9.71637,.6931472,5.40744,1 +13,2,0,1,1,230796,0,8665.641,35.154,1,12,1,31.23366,59.27339,32.85416,0,0,123.3612,0,0,0,1,1,4,60.1,24.1,0,76.1,450,517.56,0,0,1.386294,6.249125,1,4.564348,6.160541,1,0,0,76.1,9.067237,1.386294,4.815117,1 +13,2,0,1,2,230796,0,8665.641,36.154,1,12,1,419.7501,44.86785,0,0,0,464.618,0,0,0,6,0,4,60.1,24.1,0,76.1,450,517.56,0,0,1.386294,6.249125,1,4.564348,6.160541,1,0,0,76.1,9.067237,1.386294,6.141215,1 +13,2,0,1,3,230796,0,8665.641,37.154,1,12,1,358.7004,77.4185,38.86784,0,0,474.9868,0,0,0,24,2,4,60.1,24.1,0,76.1,450,517.56,0,0,1.386294,6.249125,1,4.564348,6.160541,1,0,0,76.1,9.067237,1.386294,6.163287,1 +13,2,0,1,1,230797,0,8665.641,9.190965,1,12,1,33.19394,5.196027,26.44015,0,0,64.83011,0,0,0,2,1,4,80,11.84267,0,96.3,450,517.56,1,1,1.386294,6.249125,1,4.564348,6.160541,0,0,0,96.3,9.067237,1.386294,4.17177,1 +13,2,0,1,2,230797,0,8665.641,10.19096,1,12,1,9.25036,4.204709,0,0,0,13.45507,0,0,0,1,0,4,80,11.84267,0,96.3,450,517.56,1,1,1.386294,6.249125,1,4.564348,6.160541,0,0,0,96.3,9.067237,1.386294,2.599356,1 +13,2,0,1,3,230797,0,8665.641,11.19096,1,12,1,41.18943,5.837004,29.70485,0,0,76.73128,0,0,0,5,0,4,80,11.84267,0,96.3,450,517.56,1,1,1.386294,6.249125,1,4.564348,6.160541,0,0,0,96.3,9.067237,1.386294,4.34031,1 +13,2,0,1,1,230798,0,8665.641,33.48939,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,91,6.9,0,81.8,450,517.56,0,0,1.386294,6.249125,1,4.564348,6.160541,0,0,0,81.8,9.067237,1.386294,,0 +13,2,0,1,2,230798,0,8665.641,34.48939,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,91,6.9,0,81.8,450,517.56,0,0,1.386294,6.249125,1,4.564348,6.160541,0,0,0,81.8,9.067237,1.386294,,0 +13,2,0,1,3,230798,0,8665.641,35.48939,0,13,1,84.14097,26.34361,35.14537,0,590.9207,736.5507,1,0,0,3,0,4,91,6.9,0,81.8,450,517.56,0,0,1.386294,6.249125,1,4.564348,6.160541,0,0,0,81.8,9.067237,1.386294,6.601978,1 +13,2,0,1,1,230799,0,8665.641,7.353867,0,12,1,13.59122,0,0,0,0,13.59122,0,0,0,0,1,4,75,11.84267,0,96.3,450,517.56,1,0,1.386294,6.249125,1,4.564348,6.160541,0,0,0,96.3,9.067237,1.386294,2.609424,1 +13,2,0,1,2,230799,0,8665.641,8.353868,0,12,1,15.61749,6.621817,0,0,0,22.23931,0,0,0,2,0,4,75,11.84267,0,96.3,450,517.56,1,0,1.386294,6.249125,1,4.564348,6.160541,0,0,0,96.3,9.067237,1.386294,3.101861,1 +13,2,0,1,3,230799,0,8665.641,9.353868,0,12,1,13.87665,0,0,0,0,13.87665,0,0,0,1,0,4,75,11.84267,0,96.3,450,517.56,1,0,1.386294,6.249125,1,4.564348,6.160541,0,0,0,96.3,9.067237,1.386294,2.630208,1 +11,2,0,1,1,230803,0,7353.666,29.04312,0,12,1,40.30161,0,34.05616,0,0,74.35777,0,0,0,4,0,1,61.7,13.8,0,55.7,0,0,0,0,0,0,0,0,0,0,0,0,55.7,8.90309,0,4.308888,1 +11,2,0,1,2,230803,0,7353.666,30.04312,0,12,1,94.60105,5.059723,0,0,0,99.66077,0,0,0,4,0,1,61.7,13.8,0,55.7,0,0,0,0,0,0,0,0,0,0,0,0,55.7,8.90309,0,4.601772,1 +11,2,0,1,3,230803,0,7353.666,31.04312,0,12,1,48.50746,4.925373,27.12028,0,0,80.55312,0,0,0,3,0,1,61.7,13.8,0,55.7,0,0,0,0,0,0,0,0,0,0,0,0,55.7,8.90309,0,4.388917,1 +5,2,25,0,1,230804,0,8665.641,27.47707,1,16,1,13.00052,0,34.05616,0,568.7208,615.7774,1,0,0,1,0,3,74.5,24.1,1,69.3,548.75,623.75,0,0,1.098612,6.43575,0,3.258096,7.693937,1,0,0,69.3,9.067237,1.098612,6.422885,1 +5,2,25,0,2,230804,0,8665.641,28.47707,1,16,1,0,0,16.86574,0,0,16.86574,0,0,0,0,0,4,74.5,24.1,1,69.3,548.75,623.75,0,0,1.386294,6.43575,0,3.258096,7.693937,1,0,0,69.3,9.067237,1.386294,2.825284,1 +5,2,25,0,3,230804,0,8665.641,29.47707,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,74.5,24.1,1,69.3,548.75,623.75,0,0,1.386294,6.43575,0,3.258096,7.693937,1,0,0,69.3,9.067237,1.386294,,0 +5,2,25,0,1,230805,0,8665.641,29.16632,0,16,1,47.32189,0,2.979719,0,0,50.30161,0,0,0,2,0,3,67.6,13.8,1,47.7,548.75,623.75,0,0,1.098612,6.43575,0,3.258096,7.693937,1,0,0,47.7,9.067237,1.098612,3.918037,1 +5,2,25,0,2,230805,0,8665.641,30.16632,0,16,1,14.33349,0,0,0,0,14.33349,0,0,0,1,0,4,67.6,13.8,1,47.7,548.75,623.75,0,0,1.386294,6.43575,0,3.258096,7.693937,1,0,0,47.7,9.067237,1.386294,2.662599,1 +5,2,25,0,3,230805,0,8665.641,31.16632,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,67.6,13.8,1,47.7,548.75,623.75,0,0,1.386294,6.43575,0,3.258096,7.693937,1,0,0,47.7,9.067237,1.386294,,0 +5,2,25,0,1,230806,0,8665.641,2.01232,0,16,1,10.40042,1.606864,0,0,0,12.00728,0,0,0,1,0,3,81.35272,11.84267,0,77.8,548.75,623.75,1,0,1.098612,6.43575,0,3.258096,7.693937,0,0,0,77.8,9.067237,1.098612,2.485513,1 +5,2,25,0,2,230806,0,8665.641,3.01232,0,16,1,10.51123,0,0,0,0,10.51123,0,0,0,2,0,4,81.35272,11.84267,0,77.8,548.75,623.75,1,0,1.386294,6.43575,0,3.258096,7.693937,0,0,0,77.8,9.067237,1.386294,2.352444,1 +5,2,25,0,3,230806,0,8665.641,4.012321,0,16,1,7.023705,0,0,0,0,7.023705,0,0,0,1,0,4,81.35272,11.84267,0,77.8,548.75,623.75,1,0,1.386294,6.43575,0,3.258096,7.693937,0,0,0,77.8,9.067237,1.386294,1.949291,1 +14,2,95,0,1,230808,0,3993.548,41.71115,0,12,1,102.2881,3.010921,32.02808,0,1421.789,1559.116,1,0,0,3,0,1,87.8,13.8,0,79.5,386.2,386.2,0,0,0,5.956356,0,4.564348,6.007648,0,0,0,79.5,8.292686,0,7.351874,1 +14,2,95,0,2,230808,0,3993.548,42.71115,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,87.8,13.8,0,79.5,386.2,386.2,0,0,0,5.956356,0,4.564348,6.007648,0,0,0,79.5,8.292686,0,,0 +13,2,0,0,1,230849,0,7508.504,36.45722,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,85.1,0,0,80.7,150,38.43,0,0,0,3.648839,1,4.564348,5.061929,1,0,0,80.7,8.923924,0,,0 +13,2,0,0,2,230849,0,7508.504,37.45722,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,85.1,0,0,80.7,150,38.43,0,0,0,3.648839,1,4.564348,5.061929,1,0,0,80.7,8.923924,0,,0 +13,2,0,0,3,230849,0,7508.504,38.45722,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,85.1,0,0,80.7,150,38.43,0,0,0,3.648839,1,4.564348,5.061929,1,0,0,80.7,8.923924,0,,0 +13,2,0,0,4,230849,0,7508.504,39.45722,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,85.1,0,0,80.7,150,38.43,0,0,0,3.648839,1,4.564348,5.061929,1,0,0,80.7,8.923924,0,,0 +13,2,0,0,5,230849,0,7508.504,40.45722,0,12,1,24.5975,0,0,0,457.7639,482.3614,1,0,0,0,0,1,85.1,0,0,80.7,150,38.43,0,0,0,3.648839,1,4.564348,5.061929,1,0,0,80.7,8.923924,0,6.178694,1 +11,2,0,0,1,230877,0,1052.786,22.99247,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,78.2,24.1,0,70.5,0,189.6,0,0,0,5.244916,0,0,0,1,0,0,70.5,6.960145,0,,0 +11,2,0,0,2,230877,0,1052.786,23.99247,0,12,1,41.90341,0,0,0,0,41.90341,0,0,0,2,0,1,78.2,24.1,0,70.5,0,189.6,0,0,0,5.244916,0,0,0,1,0,0,70.5,6.960145,0,3.735367,1 +11,2,0,0,3,230877,0,1052.786,24.99247,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,78.2,24.1,0,70.5,0,189.6,0,0,0,5.244916,0,0,0,1,0,0,70.5,6.960145,0,,0 +11,2,0,0,4,230877,0,1052.786,25.99247,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,78.2,24.1,0,70.5,0,189.6,0,0,0,5.244916,0,0,0,1,0,0,70.5,6.960145,0,,0 +11,2,0,0,5,230877,0,1052.786,26.99247,0,12,1,39.78533,0,0,0,0,39.78533,0,0,0,1,0,1,78.2,24.1,0,70.5,0,189.6,0,0,0,5.244916,0,0,0,1,0,0,70.5,6.960145,0,3.683498,1 +11,2,0,0,1,230878,0,8665.641,21.65366,1,12,1,229.1087,21.71046,0,0,0,250.8192,0,0,0,6,0,1,58,17.2,0,51.2,0,133.8,0,0,0,4.896346,0,0,0,1,0,0,51.2,9.067237,0,5.524732,1 +11,2,0,0,2,230878,0,8665.641,22.65366,1,12,1,62.26326,23.48485,0,0,0,85.74811,0,0,0,2,1,1,58,17.2,0,51.2,0,133.8,0,0,0,4.896346,0,0,0,1,0,0,51.2,9.067237,0,4.451414,1 +11,2,0,0,3,230878,0,8665.641,23.65366,1,12,1,42.26268,11.09666,0,0,0,53.35934,0,0,0,1,0,1,58,17.2,0,51.2,0,133.8,0,0,0,4.896346,0,0,0,1,0,0,51.2,9.067237,0,3.977049,1 +11,2,0,0,4,230878,0,8665.641,24.65366,1,12,1,12.80031,9.275305,0,0,0,22.07562,0,0,0,1,0,1,58,17.2,0,51.2,0,133.8,0,0,0,4.896346,0,0,0,1,0,0,51.2,9.067237,0,3.094474,1 +11,2,0,0,5,230878,0,8665.641,25.65366,1,12,1,53.52415,21.43471,0,0,0,74.95885,0,0,0,3,0,1,58,17.2,0,51.2,0,133.8,0,0,0,4.896346,0,0,0,1,0,0,51.2,9.067237,0,4.316939,1 +11,2,0,0,1,230879,0,1,25.68925,0,13,1,20.80083,15.23661,33.28133,0,0,69.31877,0,0,0,0,1,1,77.1,10.3,0,68.2,0,0,0,0,0,0,0,0,0,1,0,0,68.2,.6931472,0,4.238716,1 +11,2,0,0,2,230879,0,1,26.68925,0,13,1,70.23412,1.428571,0,0,0,71.66268,0,0,0,1,2,1,77.1,10.3,0,68.2,0,0,0,0,0,0,0,0,0,1,0,0,68.2,.6931472,0,4.27197,1 +11,2,0,0,3,230879,0,1,27.68925,0,13,1,56.29939,9.76734,21.94908,0,0,88.0158,0,0,0,2,1,1,77.1,10.3,0,68.2,0,0,0,0,0,0,0,0,0,1,0,0,68.2,.6931472,0,4.477516,1 +11,2,0,0,4,230879,0,1,28.68925,0,13,1,9.872357,16.37415,0,0,0,26.24651,0,0,0,1,0,1,77.1,10.3,0,68.2,0,0,0,0,0,0,0,0,0,1,0,0,68.2,.6931472,0,3.267533,1 +11,2,0,0,5,230879,0,1,29.68925,0,13,1,14.50326,22.78825,29.28934,0,0,66.58086,0,0,0,0,1,1,77.1,10.3,0,68.2,0,0,0,0,0,0,0,0,0,1,0,0,68.2,.6931472,0,4.198417,1 +11,2,0,1,1,230880,0,400,22.72142,1,12,1,177.0256,50.00523,105.0706,0,0,332.1014,0,0,0,8,3,1,78.2,13.8,1,58.3,0,0,0,0,0,0,0,0,0,1,0,0,58.3,5.993961,0,5.80544,1 +11,2,0,1,2,230880,0,400,23.72142,1,12,1,165.7857,34.4642,0,0,0,200.2499,0,0,0,9,5,1,78.2,13.8,1,58.3,0,0,0,0,0,0,0,0,0,1,0,0,58.3,5.993961,0,5.299566,1 +11,2,0,1,3,230880,0,400,24.72142,1,12,1,193.5022,67.88546,0,0,0,261.3877,0,0,0,9,11,1,78.2,13.8,1,58.3,0,0,0,0,0,0,0,0,0,1,0,0,58.3,5.993961,0,5.566005,1 +11,2,0,1,4,230880,0,400,25.72142,1,12,1,296.2621,52.43952,17.28226,26.20968,0,365.9839,0,0,1,11,9,1,78.2,13.8,1,58.3,0,0,0,0,0,0,0,0,0,1,0,0,58.3,5.993961,0,5.902589,1 +11,2,0,1,5,230880,0,400,26.72142,1,12,1,1006.047,78.64117,36.40802,0,1270.31,2391.406,1,0,0,6,55,1,78.2,13.8,1,58.3,0,0,0,0,0,0,0,0,0,1,0,0,58.3,5.993961,0,7.779637,1 +5,2,25,0,1,230900,0,4070.381,54.91034,1,13,1,13.91056,3.120125,44.50858,0,0,61.53926,0,0,0,1,1,1,65.4,17.2,1,78.4,325,325,0,0,0,5.783825,0,3.258096,7.17012,1,0,0,78.4,8.311738,0,4.119675,1 +5,2,25,0,1,230901,0,1728.446,26.54894,1,14,1,31.46126,4.082163,0,0,0,35.54342,0,0,0,2,0,1,78.2,20.7,0,77.3,140.15,0,0,0,0,0,0,3.258096,6.329008,1,0,0,77.3,7.455556,0,3.570755,1 +5,2,25,0,2,230901,0,1728.446,27.54894,1,14,1,23.29193,0,0,0,0,23.29193,0,0,0,2,0,1,78.2,20.7,0,77.3,140.15,0,0,0,0,0,0,3.258096,6.329008,1,0,0,77.3,7.455556,0,3.148107,1 +5,2,25,0,3,230901,0,1728.446,28.54894,1,14,1,94.0518,3.050922,0,0,0,97.10272,0,0,0,5,0,1,78.2,20.7,0,77.3,140.15,0,0,0,0,0,0,3.258096,6.329008,1,0,0,77.3,7.455556,0,4.575769,1 +5,2,25,0,4,230901,0,1728.446,29.54894,1,14,1,288.0135,15.76785,0,0,0,303.7814,0,0,0,4,13,1,78.2,20.7,0,77.3,140.15,0,0,0,0,0,0,3.258096,6.329008,1,0,0,77.3,7.455556,0,5.716309,1 +5,2,25,0,5,230901,0,1728.446,30.54894,1,14,1,37.98042,2.824511,0,0,0,40.80493,0,0,0,1,4,1,78.2,20.7,0,77.3,140.15,0,0,0,0,0,0,3.258096,6.329008,1,0,0,77.3,7.455556,0,3.708803,1 +11,2,0,0,1,230923,0,2352.493,25.0486,0,15,1,45.96527,0,0,0,0,45.96527,0,0,0,2,0,1,78.2,3.4,0,71.6,0,0,0,0,0,0,0,0,0,0,0,0,71.6,7.763656,0,3.827886,1 +11,2,0,0,2,230923,0,2352.493,26.0486,0,15,1,0,0,0,0,0,0,0,0,0,0,0,1,78.2,3.4,0,71.6,0,0,0,0,0,0,0,0,0,0,0,0,71.6,7.763656,0,,0 +11,2,0,0,3,230923,0,2352.493,27.0486,0,15,1,29.01978,0,36.01892,0,0,65.0387,0,0,0,1,1,1,78.2,3.4,0,71.6,0,0,0,0,0,0,0,0,0,0,0,0,71.6,7.763656,0,4.174983,1 +13,2,0,0,1,230953,0,18432.84,15.80835,1,12,1,52.73238,11.41471,0,0,1190.347,1254.494,1,0,0,3,0,3,78.2,13.8,0,79.5,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.821943,1.098612,7.134488,1 +13,2,0,0,2,230953,0,18432.84,16.80835,1,12,1,101.7346,25.53211,33.57712,0,425.2227,586.0666,1,0,0,8,1,3,78.2,13.8,0,79.5,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.821943,1.098612,6.373434,1 +13,2,0,0,3,230953,0,18432.84,17.80835,1,12,1,59.54428,16.1006,0,0,0,75.64488,0,0,0,3,1,3,78.2,13.8,0,79.5,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.821943,1.098612,4.32605,1 +13,2,0,0,4,230953,0,18432.84,18.80835,1,12,1,171.3067,7.696782,21.3261,0,0,200.3296,0,0,0,10,0,3,78.2,13.8,0,79.5,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.821943,1.098612,5.299964,1 +13,2,0,0,5,230953,0,18432.84,19.80835,1,12,1,23.2661,0,0,0,0,23.2661,0,0,0,1,0,2,78.2,13.8,0,79.5,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.821943,.6931472,3.146997,1 +13,2,0,0,1,230956,0,8665.641,23.5373,0,12,1,32.40598,2.462648,0,0,0,34.86863,0,0,0,2,0,1,71.8,3.4,0,67.5,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,67.5,9.067237,0,3.551587,1 +13,2,0,0,2,230956,0,8665.641,24.5373,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,71.8,3.4,0,67.5,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,67.5,9.067237,0,,0 +13,2,0,0,3,230956,0,8665.641,25.5373,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,71.8,3.4,0,67.5,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,67.5,9.067237,0,,0 +13,2,0,0,4,230956,0,8665.641,26.5373,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,71.8,3.4,0,67.5,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,67.5,9.067237,0,,0 +14,2,95,0,1,230962,0,4582.405,22.13552,1,12,1,183.3504,55.21961,31.15424,0,0,269.7242,0,0,0,14,0,2,84,3.4,0,70.5,218,0,0,0,.6931472,0,0,4.564348,5.435788,0,0,0,70.5,8.430198,.6931472,5.5974,1 +14,2,95,0,2,230962,0,4582.405,23.13552,1,12,1,220.933,57.50117,34.49601,0,0,312.9301,0,0,0,9,0,2,84,3.4,0,70.5,218,0,0,0,.6931472,0,0,4.564348,5.435788,0,0,0,70.5,8.430198,.6931472,5.74598,1 +14,2,95,0,3,230962,0,4582.405,24.13552,1,12,1,574.0112,96.06621,0,0,939.7249,1609.802,1,0,0,23,0,2,84,3.4,0,70.5,218,0,0,0,.6931472,0,0,4.564348,5.435788,0,0,0,70.5,8.430198,.6931472,7.383867,1 +13,2,0,0,1,230967,0,12936.07,42.37645,1,12,1,218.9593,23.23545,33.69397,0,0,275.8887,0,0,0,7,12,5,84,10.3,0,79.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,79.5,9.467853,1.609438,5.619998,1 +13,2,0,0,2,230967,0,12936.07,43.37645,1,12,1,107.4811,24.33712,0,0,0,131.8182,0,0,0,4,4,5,84,10.3,0,79.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,79.5,9.467853,1.609438,4.881423,1 +13,2,0,0,3,230967,0,12936.07,44.37645,1,12,1,124.6207,15.42263,50.0997,0,0,190.143,0,0,0,6,1,5,84,10.3,0,79.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,79.5,9.467853,1.609438,5.247777,1 +13,2,0,0,4,230967,0,12936.07,45.37645,1,12,1,100.3939,8.60575,11.21308,0,0,120.2127,0,0,0,3,0,5,84,10.3,0,79.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,79.5,9.467853,1.609438,4.789263,1 +13,2,0,0,5,230967,0,12936.07,46.37645,1,12,1,131.7531,9.101968,37.67442,0,1362.1,1540.63,1,0,0,3,4,6,84,10.3,0,79.5,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,79.5,9.467853,1.791759,7.339946,1 +13,2,0,0,1,230968,0,12936.07,14.93498,0,12,1,59.76301,26.84184,.618238,0,0,87.22308,0,0,0,5,0,5,82.4,10.3,0,88.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,88.6,9.467853,1.609438,4.468469,1 +13,2,0,0,2,230968,0,12936.07,15.93498,0,12,1,136.8371,16.99337,0,0,0,153.8305,0,0,0,4,4,5,82.4,10.3,0,88.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,88.6,9.467853,1.609438,5.035851,1 +13,2,0,0,3,230968,0,12936.07,16.93498,0,12,1,301.0836,32.62245,4.334634,0,0,338.0407,0,0,0,9,6,5,82.4,10.3,0,88.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,88.6,9.467853,1.609438,5.823166,1 +13,2,0,0,4,230968,0,12936.07,17.93498,0,12,1,96.51437,6.100827,0,0,0,102.6152,0,0,0,4,0,5,82.4,10.3,0,88.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,88.6,9.467853,1.609438,4.630986,1 +13,2,0,0,5,230968,0,12936.07,18.93498,0,12,1,69.94633,1.413238,0,0,0,71.35957,0,0,0,5,3,6,82.4,10.3,0,88.6,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,88.6,9.467853,1.791759,4.267732,1 +13,2,0,0,1,230969,0,12936.07,49.37988,0,12,1,82.94694,7.676455,49.84544,0,0,140.4688,0,0,0,2,1,5,86.7,6.9,0,77.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.467853,1.609438,4.944985,1 +13,2,0,0,2,230969,0,12936.07,50.37988,0,12,1,102.036,13.61269,0,0,0,115.6487,0,0,0,6,0,5,86.7,6.9,0,77.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.467853,1.609438,4.750557,1 +13,2,0,0,3,230969,0,12936.07,51.37988,0,12,1,89.51019,9.687906,0,0,0,99.19809,0,0,0,3,4,5,86.7,6.9,0,77.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.467853,1.609438,4.597119,1 +13,2,0,0,4,230969,0,12936.07,52.37988,0,12,1,124.5569,13.30445,0,0,1231.489,1369.35,1,0,0,3,7,5,86.7,6.9,0,77.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.467853,1.609438,7.222092,1 +13,2,0,0,5,230969,0,12936.07,53.37988,0,12,1,91.59213,14.39356,38.56887,0,0,144.5546,0,0,0,7,5,6,86.7,6.9,0,77.3,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.467853,1.791759,4.973657,1 +13,2,0,0,1,230970,0,12936.07,18.40931,0,11,1,40.95827,12.10716,0,0,0,53.06543,0,0,0,2,0,5,79.8,3.4,0,79.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.467853,1.609438,3.971526,1 +13,2,0,0,2,230970,0,12936.07,19.40931,0,11,1,127.8409,24.05303,0,0,0,151.8939,0,0,0,13,0,5,79.8,3.4,0,79.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.467853,1.609438,5.023182,1 +13,2,0,0,3,230970,0,12936.07,20.40931,0,11,1,137.8197,41.17902,0,0,0,178.9987,0,0,0,10,0,5,79.8,3.4,0,79.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.467853,1.609438,5.187378,1 +13,2,0,0,4,230970,0,12936.07,21.40931,0,11,1,75.8527,23.63135,0,0,0,99.48405,0,0,0,6,0,5,79.8,3.4,0,79.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.467853,1.609438,4.599998,1 +13,2,0,0,5,230970,0,12936.07,22.40931,0,11,1,196.1538,42.30412,0,0,0,238.458,0,0,0,14,0,6,79.8,3.4,0,79.5,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.467853,1.791759,5.474193,1 +17,2,25,0,1,230994,0,5780.645,32.07666,0,14,1,45.96527,47.22165,0,0,0,93.18693,0,0,0,5,0,1,70.2,17.2,0,75,452.5,452.5,0,0,0,6.114788,0,3.258096,7.501082,0,0,0,75,8.662443,0,4.534607,1 +17,2,25,0,2,230994,0,5780.645,33.07666,0,14,1,191.7487,66.68073,0,140.647,11785.68,12044.11,4,0,6,12,0,1,70.2,17.2,0,75,452.5,452.5,0,0,0,6.114788,0,3.258096,7.501082,0,0,0,75,8.662443,0,9.396331,1 +17,2,25,0,3,230994,0,5780.645,34.07666,0,14,1,349.0542,29.30783,0,0,0,378.362,0,0,0,21,15,1,70.2,17.2,0,75,452.5,452.5,0,0,0,6.114788,0,3.258096,7.501082,0,0,0,75,8.662443,0,5.935852,1 +11,2,0,1,1,231014,0,5622.874,4.281999,1,14,1,10.58761,0,0,0,0,10.58761,0,0,0,0,0,3,81.35272,11.84267,0,92.6,0,66,1,1,1.098612,4.189655,0,0,0,0,0,0,92.6,8.634776,1.098612,2.359685,1 +11,2,0,1,2,231014,0,5622.874,5.281999,1,14,1,8.735521,0,0,0,0,8.735521,0,0,0,1,0,3,81.35272,11.84267,0,92.6,0,66,1,1,1.098612,4.189655,0,0,0,0,0,0,92.6,8.634776,1.098612,2.167398,1 +11,2,0,1,3,231014,0,5622.874,6.281999,1,14,1,10.82332,2.225189,0,0,0,13.04851,0,0,0,1,0,3,81.35272,11.84267,0,92.6,0,66,1,1,1.098612,4.189655,0,0,0,0,0,0,92.6,8.634776,1.098612,2.568674,1 +11,2,0,1,1,231015,0,5622.874,7.397673,1,14,1,37.05664,0,0,0,0,37.05664,0,0,0,1,0,3,78.3,11.84267,0,88.9,0,66,1,1,1.098612,4.189655,0,0,0,1,0,0,88.9,8.634776,1.098612,3.612448,1 +11,2,0,1,2,231015,0,5622.874,8.397673,1,14,1,22.2973,3.590734,36.01351,0,0,61.90154,0,0,0,2,0,3,78.3,11.84267,0,88.9,0,66,1,1,1.098612,4.189655,0,0,0,1,0,0,88.9,8.634776,1.098612,4.125545,1 +11,2,0,1,3,231015,0,5622.874,9.397673,1,14,1,67.95283,7.721406,15.57632,0,0,91.25056,0,0,0,6,0,3,78.3,11.84267,0,88.9,0,66,1,1,1.098612,4.189655,0,0,0,1,0,0,88.9,8.634776,1.098612,4.513609,1 +11,2,0,1,1,231016,0,5622.874,29.56058,1,14,1,148.756,31.82636,0,0,0,180.5823,0,0,0,5,8,3,75,13.8,0,86.4,0,66,0,0,1.098612,4.189655,0,0,0,0,0,0,86.4,8.634776,1.098612,5.196187,1 +11,2,0,1,2,231016,0,5622.874,30.56058,1,14,1,27.74131,6.669884,0,0,314.6042,349.0154,1,0,0,2,0,3,75,13.8,0,86.4,0,66,0,0,1.098612,4.189655,0,0,0,0,0,0,86.4,8.634776,1.098612,5.855116,1 +11,2,0,1,3,231016,0,5622.874,31.56058,1,14,1,54.68625,9.279038,31.87361,0,0,95.8389,0,0,0,4,1,3,75,13.8,0,86.4,0,66,0,0,1.098612,4.189655,0,0,0,0,0,0,86.4,8.634776,1.098612,4.562669,1 +13,2,0,1,1,231025,0,8052.105,7.23614,0,12,1,20.90957,1.542081,2.587559,0,0,25.03921,0,0,0,0,1,3,90,11.84267,0,88.9,450,0,1,0,1.098612,0,1,4.564348,6.160541,1,0,0,88.9,8.993814,1.098612,3.220443,1 +13,2,0,1,2,231025,0,8052.105,8.236139,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,90,11.84267,0,88.9,450,0,1,0,.6931472,0,1,4.564348,6.160541,1,0,0,88.9,8.993814,.6931472,,0 +13,2,0,1,3,231025,0,8052.105,9.236139,0,12,1,5.726872,0,3.061674,0,0,8.788547,0,0,0,1,0,2,90,11.84267,0,88.9,450,0,1,0,.6931472,0,1,4.564348,6.160541,1,0,0,88.9,8.993814,.6931472,2.173449,1 +13,2,0,1,4,231025,0,8052.105,10.23614,0,12,1,21.67339,0,0,0,0,21.67339,0,0,0,2,0,2,90,11.84267,0,88.9,450,0,1,0,.6931472,0,1,4.564348,6.160541,1,0,0,88.9,8.993814,.6931472,3.076085,1 +13,2,0,1,5,231025,0,8052.105,11.23614,0,12,1,5.82878,4.28051,0,0,0,10.10929,0,0,0,1,0,2,90,11.84267,0,88.9,450,0,1,0,.6931472,0,1,4.564348,6.160541,1,0,0,88.9,8.993814,.6931472,2.313455,1 +13,2,0,1,1,231026,0,8052.105,34.17112,1,12,1,39.885,48.90225,0,0,216.3095,305.0967,1,0,0,3,1,3,86.2,6.9,1,92,450,0,0,0,1.098612,0,1,4.564348,6.160541,1,0,0,92,8.993814,1.098612,5.720629,1 +13,2,0,1,2,231026,0,8052.105,35.17112,1,12,1,60.11533,35.1754,0,0,509.0101,604.3008,2,0,0,5,0,2,86.2,6.9,1,92,450,0,0,0,.6931472,0,1,4.564348,6.160541,1,0,0,92,8.993814,.6931472,6.404072,1 +13,2,0,1,3,231026,0,8052.105,36.17112,1,12,1,32.81938,31.10573,0,0,332.9075,396.8326,1,0,0,4,0,2,86.2,6.9,1,92,450,0,0,0,.6931472,0,1,4.564348,6.160541,1,0,0,92,8.993814,.6931472,5.983515,1 +13,2,0,1,4,231026,0,8052.105,37.17112,1,12,1,27.82258,10.60484,27.78226,0,0,66.20968,0,0,0,0,1,2,86.2,6.9,1,92,450,0,0,0,.6931472,0,1,4.564348,6.160541,1,0,0,92,8.993814,.6931472,4.192827,1 +13,2,0,1,5,231026,0,8052.105,38.17112,1,12,1,8.925319,4.298725,0,0,312.8524,326.0765,1,0,0,1,0,2,86.2,6.9,1,92,450,0,0,0,.6931472,0,1,4.564348,6.160541,1,0,0,92,8.993814,.6931472,5.787132,1 +13,2,0,1,1,231027,0,8052.105,4.914442,1,12,.3369863,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,0,37,450,0,1,1,1.098612,0,1,4.564348,6.160541,1,0,0,37,8.993814,1.098612,,0 +11,2,0,0,1,231038,.0220994,8665.641,35.87406,1,7,1,138.0655,94.24337,32.01768,36.40145,0,264.3266,0,0,2,15,1,4,36.7,20.7,1,70.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,70.5,9.067237,1.386294,5.577185,1 +11,2,0,0,2,231038,.0220994,8665.641,36.87406,1,7,1,72.14525,83.63115,0,195.8911,0,155.7764,0,0,8,9,0,4,36.7,20.7,1,70.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,70.5,9.067237,1.386294,5.048422,1 +11,2,0,0,3,231038,.0220994,8665.641,37.87406,1,7,1,112.1598,135.2897,0,232.6602,1208.402,1455.852,3,0,11,1,0,4,36.7,20.7,1,70.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,70.5,9.067237,1.386294,7.283346,1 +11,2,0,0,1,231039,.0220994,8665.641,12.91718,1,7,1,6.50026,0,33.06812,0,0,39.56838,0,0,0,0,1,4,15,11.84267,1,81.5,0,0,1,1,1.386294,0,0,0,0,0,0,0,81.5,9.067237,1.386294,3.67803,1 +11,2,0,0,2,231039,.0220994,8665.641,13.91718,1,7,1,7.166746,0,15.76684,0,0,22.93359,0,0,0,0,1,4,15,11.84267,1,81.5,0,0,1,1,1.386294,0,0,0,0,0,0,0,81.5,9.067237,1.386294,3.132602,1 +11,2,0,0,3,231039,.0220994,8665.641,14.91718,1,7,1,15.36436,0,35.89991,0,0,51.26427,0,0,0,1,0,4,15,11.84267,1,81.5,0,0,1,1,1.386294,0,0,0,0,0,0,0,81.5,9.067237,1.386294,3.936994,1 +11,2,0,0,1,231040,.0220994,8665.641,46.60643,0,16,1,8.840354,0,62.14769,0,0,70.98804,0,0,0,0,1,4,97.3,10.3,0,78.4,0,0,0,0,1.386294,0,0,0,0,0,1,0,78.4,9.067237,1.386294,4.262511,1 +11,2,0,0,2,231040,.0220994,8665.641,47.60643,0,16,1,173.4353,0,0,0,0,173.4353,0,0,0,6,0,4,97.3,10.3,0,78.4,0,0,0,0,1.386294,0,0,0,0,0,1,0,78.4,9.067237,1.386294,5.155804,1 +11,2,0,0,3,231040,.0220994,8665.641,48.60643,0,16,1,0,0,28.43723,0,0,28.43723,0,0,0,0,0,4,97.3,10.3,0,78.4,0,0,0,0,1.386294,0,0,0,0,0,1,0,78.4,9.067237,1.386294,3.347699,1 +11,2,0,0,1,231041,.0220994,8665.641,14.41205,0,7,1,6.50026,3.380135,29.12116,0,0,39.00156,0,0,0,0,1,4,61.7,3.4,0,90.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,90.9,9.067237,1.386294,3.663602,1 +11,2,0,0,2,231041,.0220994,8665.641,15.41205,0,7,1,4.777831,0,0,0,0,4.777831,0,0,0,1,0,4,61.7,3.4,0,90.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,90.9,9.067237,1.386294,1.563987,1 +11,2,0,0,3,231041,.0220994,8665.641,16.41205,0,7,1,5.267779,0,0,0,0,5.267779,0,0,0,1,0,4,61.7,3.4,0,90.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,90.9,9.067237,1.386294,1.661609,1 +11,2,0,1,1,231060,0,8690.322,23.53456,0,9,1,56.11435,13.8433,0,0,0,69.95765,0,0,0,3,0,2,77.1,6.9,0,76.2,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.2,9.070081,.6931472,4.24789,1 +11,2,0,1,2,231060,0,8690.322,24.53456,0,9,1,9.169884,1.930502,0,0,0,11.10039,0,0,0,0,0,2,77.1,6.9,0,76.2,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.2,9.070081,.6931472,2.40698,1 +11,2,0,1,3,231060,0,8690.322,25.53456,0,9,1,19.75968,5.113485,0,0,0,24.87317,0,0,0,2,0,2,77.1,6.9,0,76.2,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.2,9.070081,.6931472,3.213789,1 +11,2,0,1,1,231061,0,8690.322,20.52567,1,12,1,55.05558,14.97088,0,0,682.001,752.0275,1,0,0,4,0,2,72.3,0,0,70.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,70.5,9.070081,.6931472,6.622773,1 +11,2,0,1,2,231061,0,8690.322,21.52567,1,12,1,32.57722,7.818533,32.15251,0,0,72.54826,0,0,0,2,0,2,72.3,0,0,70.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,70.5,9.070081,.6931472,4.284252,1 +11,2,0,1,3,231061,0,8690.322,22.52567,1,12,1,56.83133,15.27815,0,0,0,72.10948,0,0,0,3,0,2,72.3,0,0,70.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,70.5,9.070081,.6931472,4.278185,1 +13,2,0,0,1,231079,0,10666.86,61.66461,0,16,1,359.8661,155.796,60.74189,0,0,576.4039,0,0,0,21,0,2,80.9,20.7,1,46.6,300,962.4,0,0,.6931472,6.86943,1,4.564348,5.755076,0,1,0,46.6,9.274991,.6931472,6.356809,1 +13,2,0,0,2,231079,0,10666.86,62.66461,0,16,1,683.0019,447.3248,0,0,0,1130.327,0,0,0,41,0,2,80.9,20.7,1,46.6,300,962.4,0,0,.6931472,6.86943,1,4.564348,5.755076,0,1,0,46.6,9.274991,.6931472,7.030262,1 +13,2,0,0,3,231079,0,10666.86,63.66461,0,16,1,438.4482,193.368,49.75293,0,7132.323,7813.893,2,0,0,25,3,2,80.9,20.7,1,46.6,300,962.4,0,0,.6931472,6.86943,1,4.564348,5.755076,0,1,0,46.6,9.274991,.6931472,8.963658,1 +13,2,0,0,1,231080,0,10666.86,58.00137,1,13,1,24.72952,23.49304,13.57548,0,0,61.79804,0,0,0,1,0,2,81.9,17.2,1,64.8,300,962.4,0,0,.6931472,6.86943,1,4.564348,5.755076,0,0,0,64.8,9.274991,.6931472,4.123872,1 +13,2,0,0,2,231080,0,10666.86,59.00137,1,13,1,11.83712,18.27652,34.75379,0,0,64.86742,0,0,0,1,0,2,81.9,17.2,1,64.8,300,962.4,0,0,.6931472,6.86943,1,4.564348,5.755076,0,0,0,64.8,9.274991,.6931472,4.172346,1 +13,2,0,0,3,231080,0,10666.86,60.00137,1,13,1,13.0039,8.972692,31.80754,0,0,53.78413,0,0,0,1,0,2,81.9,17.2,1,64.8,300,962.4,0,0,.6931472,6.86943,1,4.564348,5.755076,0,0,0,64.8,9.274991,.6931472,3.984978,1 +13,2,0,0,1,231100,0,9123.167,8.936345,1,16,1,5.823187,0,0,0,0,5.823187,0,0,0,1,0,4,85,11.84267,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.118682,1.386294,1.761848,1 +13,2,0,0,2,231100,0,9123.167,9.936345,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,85,11.84267,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.118682,1.386294,,0 +13,2,0,0,3,231100,0,9123.167,10.93635,1,16,1,8.010681,0,0,0,0,8.010681,0,0,0,1,0,4,85,11.84267,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.118682,1.386294,2.080776,1 +13,2,0,0,1,231101,0,9123.167,34.4887,0,17,1,0,0,0,0,0,0,0,0,0,0,0,4,84,0,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,72.7,9.118682,1.386294,,0 +13,2,0,0,2,231101,0,9123.167,35.4887,0,17,1,0,0,0,0,0,0,0,0,0,0,0,4,84,0,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,72.7,9.118682,1.386294,,0 +13,2,0,0,3,231101,0,9123.167,36.4887,0,17,1,22.25189,.1112595,0,0,0,22.36315,0,0,0,1,0,4,84,0,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,72.7,9.118682,1.386294,3.107414,1 +13,2,0,0,1,231102,0,9123.167,5.407255,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,93.3,11.84267,0,85.2,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.118682,1.386294,,0 +13,2,0,0,2,231102,0,9123.167,6.407255,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,93.3,11.84267,0,85.2,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.118682,1.386294,,0 +13,2,0,0,3,231102,0,9123.167,7.407255,0,16,1,57.14286,0,0,0,279.6618,336.8046,1,0,0,4,0,4,93.3,11.84267,0,85.2,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.118682,1.386294,5.819503,1 +13,2,0,0,1,231103,0,9123.167,34.34086,1,16,1,33.35098,0,21.88989,0,0,55.24087,0,0,0,1,1,4,86.7,3.4,0,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83,9.118682,1.386294,4.011703,1 +13,2,0,0,2,231103,0,9123.167,35.34086,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,3.4,0,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83,9.118682,1.386294,,0 +13,2,0,0,3,231103,0,9123.167,36.34086,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,3.4,0,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83,9.118682,1.386294,,0 +7,2,25,0,1,231121,0,14490.91,15.66598,0,16,1,0,0,25.83759,0,0,25.83759,0,0,0,0,0,3,83.5,6.9,0,72.7,1000,80,1,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,72.7,9.581346,1.098612,3.25183,1 +7,2,25,0,2,231121,0,14490.91,16.66598,0,16,1,30.66104,0,18.28411,0,0,48.94515,0,0,0,1,1,3,83.5,6.9,0,72.7,1000,80,1,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,72.7,9.581346,1.098612,3.8907,1 +7,2,25,0,3,231121,0,14490.91,17.66598,0,16,1,8.598453,0,0,0,0,8.598453,0,0,0,1,0,3,83.5,6.9,0,72.7,1000,80,1,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,72.7,9.581346,1.098612,2.151582,1 +7,2,25,0,4,231121,0,14490.91,18.66598,0,16,1,19.38736,0,12.71035,0,0,32.09771,0,0,0,0,2,3,83.5,6.9,0,72.7,1000,80,0,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,72.7,9.581346,1.098612,3.468785,1 +7,2,25,0,5,231121,0,14490.91,19.66598,0,16,1,12.385,4.437367,26.99221,0,0,43.81458,0,0,0,0,1,3,83.5,6.9,0,72.7,1000,80,0,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,72.7,9.581346,1.098612,3.779967,1 +7,2,25,0,1,231122,0,14490.91,49.69747,0,16,1,12.25741,0,37.28294,0,0,49.54035,0,0,0,0,2,3,73.9,3.4,0,69.3,1000,80,0,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,69.3,9.581346,1.098612,3.902787,1 +7,2,25,0,2,231122,0,14490.91,50.69747,0,16,1,72.19878,0,0,0,0,72.19878,0,0,0,2,0,3,73.9,3.4,0,69.3,1000,80,0,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,69.3,9.581346,1.098612,4.279423,1 +7,2,25,0,3,231122,0,14490.91,51.69747,0,16,1,164.6604,0,44.71195,0,0,209.3723,0,0,0,7,1,3,73.9,3.4,0,69.3,1000,80,0,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,69.3,9.581346,1.098612,5.344114,1 +7,2,25,0,4,231122,0,14490.91,52.69747,0,16,1,61.34161,3.606049,25.59131,0,0,90.53897,0,0,0,3,1,3,73.9,3.4,0,69.3,1000,80,0,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,69.3,9.581346,1.098612,4.50578,1 +7,2,25,0,5,231122,0,14490.91,53.69747,0,16,1,15.21585,0,23.35456,0,0,38.57042,0,0,0,0,1,3,73.9,3.4,0,69.3,1000,80,0,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,69.3,9.581346,1.098612,3.652486,1 +7,2,25,0,1,231123,0,14490.91,48.98837,1,16,1,12.76813,0,32.23187,0,0,45,0,0,0,0,1,3,80.9,17.2,0,83,1000,80,0,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,83,9.581346,1.098612,3.806663,1 +7,2,25,0,2,231123,0,14490.91,49.98837,1,16,1,37.50586,15.68214,2.808251,0,0,55.99625,0,0,0,5,0,3,80.9,17.2,0,83,1000,80,0,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,83,9.581346,1.098612,4.025285,1 +7,2,25,0,3,231123,0,14490.91,50.98837,1,16,1,458.319,62.34738,74.06277,0,0,594.7291,0,0,0,8,1,3,80.9,17.2,0,83,1000,80,0,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,83,9.581346,1.098612,6.388106,1 +7,2,25,0,4,231123,0,14490.91,51.98837,1,16,1,11.63242,20.65529,0,0,0,32.28771,0,0,0,2,0,3,80.9,17.2,0,83,1000,80,0,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,83,9.581346,1.098612,3.474687,1 +7,2,25,0,5,231123,0,14490.91,52.98837,1,16,1,18.75442,4.561217,0,0,0,23.31564,0,0,0,1,0,3,80.9,17.2,0,83,1000,80,0,0,1.098612,4.382027,0,3.258096,8.294049,0,0,0,83,9.581346,1.098612,3.149124,1 +11,2,0,0,1,231126,0,2650.44,51.57016,1,12,1,173.3642,32.84389,53.5085,0,0,259.7166,0,0,0,9,1,2,89.9,10.3,0,76.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.1,7.882858,.6931472,5.559591,1 +11,2,0,0,2,231126,0,2650.44,52.57016,1,12,1,651.9413,38.84943,14.20455,97.06439,0,704.9952,0,0,4,13,42,2,89.9,10.3,0,76.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.1,7.882858,.6931472,6.558191,1 +11,2,0,0,3,231126,0,2650.44,53.57016,1,12,1,419.5925,41.94192,87.31253,0,958.0624,1506.909,2,0,0,14,1,2,89.9,10.3,0,76.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.1,7.882858,.6931472,7.317816,1 +13,2,0,0,1,231148,0,8665.641,20.90075,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,70.2,0,0,65.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,65.9,9.067237,0,,0 +13,2,0,0,1,231149,0,1207.625,20.73922,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,76.6,10.3,0,84.1,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,84.1,7.097239,0,,0 +13,2,0,0,2,231149,0,1207.625,21.73922,1,12,1,6.450072,0,0,0,0,6.450072,0,0,0,1,0,1,76.6,10.3,0,84.1,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,84.1,7.097239,0,1.864091,1 +13,2,0,0,3,231149,0,1207.625,22.73922,1,12,1,345.5882,74.62687,35.44776,0,0,455.6629,0,0,0,10,1,1,76.6,10.3,0,84.1,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,84.1,7.097239,0,6.121753,1 +13,2,0,0,4,231149,0,1207.625,23.73922,1,12,1,84.284,85.6083,34.81452,0,0,204.7068,0,0,0,4,0,1,76.6,10.3,0,84.1,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,84.1,7.097239,0,5.321579,1 +13,2,0,0,5,231149,0,1207.625,24.73922,1,12,1,56.21827,82.16461,2.175489,0,0,140.5584,0,0,0,4,0,1,76.6,10.3,0,84.1,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,84.1,7.097239,0,4.945623,1 +11,2,0,0,1,231164,0,10620.53,54.38467,0,12,1,224.2551,17.95609,0,0,0,242.2112,0,0,0,3,0,4,79.3,20.7,0,62.5,0,0,0,0,1.386294,0,0,0,0,0,1,0,62.5,9.270638,1.386294,5.48981,1 +11,2,0,0,2,231164,0,10620.53,55.38467,0,12,1,0,0,0,0,828.2797,828.2797,1,0,0,0,0,4,79.3,20.7,0,62.5,0,0,0,0,1.386294,0,0,0,0,0,1,0,62.5,9.270638,1.386294,6.719351,1 +11,2,0,0,3,231164,0,10620.53,56.38467,0,12,1,139.0529,56.42291,0,0,1015.264,1210.74,1,0,0,8,0,4,79.3,20.7,0,62.5,0,0,0,0,1.386294,0,0,0,0,0,1,0,62.5,9.270638,1.386294,7.098987,1 +11,2,0,0,4,231164,0,10620.53,57.38467,0,12,1,104.4355,57.56855,0,0,321.6734,483.6774,1,0,0,7,0,4,79.3,20.7,0,62.5,0,0,0,0,1.386294,0,0,0,0,0,1,0,62.5,9.270638,1.386294,6.181418,1 +11,2,0,0,1,231165,0,10620.53,11.34839,1,12,1,15.15944,6.445374,0,0,0,21.60481,0,0,0,1,0,4,75,11.84267,0,100,0,0,1,1,1.386294,0,0,0,0,1,0,0,100,9.270638,1.386294,3.072916,1 +11,2,0,0,2,231165,0,10620.53,12.34839,1,12,1,0,2.162422,0,0,0,2.162422,0,0,0,0,0,4,75,11.84267,0,100,0,0,1,1,1.386294,0,0,0,0,1,0,0,100,9.270638,1.386294,.7712288,1 +11,2,0,0,3,231165,0,10620.53,13.34839,1,12,1,19.38326,0,0,0,0,19.38326,0,0,0,1,0,4,75,11.84267,0,100,0,0,1,1,1.386294,0,0,0,0,1,0,0,100,9.270638,1.386294,2.96441,1 +11,2,0,0,4,231165,0,10620.53,14.34839,1,12,1,60.08065,7.665323,1.209677,0,0,68.95564,0,0,0,5,0,4,75,11.84267,0,100,0,0,1,1,1.386294,0,0,0,0,1,0,0,100,9.270638,1.386294,4.233463,1 +11,2,0,0,5,231165,0,10620.53,15.34839,1,12,1,12.75045,0,0,0,0,12.75045,0,0,0,1,1,3,75,11.84267,0,100,0,0,1,1,1.098612,0,0,0,0,1,0,0,100,9.270638,1.098612,2.545567,1 +11,2,0,0,1,231166,0,10620.53,47.2334,1,12,1,478.6722,84.14532,9.006796,0,823.9937,1395.818,1,0,0,19,11,4,75,24.1,0,29.5,0,0,0,0,1.386294,0,0,0,0,0,0,1,29.5,9.270638,1.386294,7.241236,1 +11,2,0,0,2,231166,0,10620.53,48.2334,1,12,1,402.5949,53.08506,0,0,488.0682,943.7482,1,0,0,14,3,4,75,24.1,0,29.5,0,0,0,0,1.386294,0,0,0,0,0,0,1,29.5,9.270638,1.386294,6.849859,1 +11,2,0,0,3,231166,0,10620.53,49.2334,1,12,1,696.652,104.0881,52.14978,0,1078.194,1931.084,1,0,0,23,38,4,75,24.1,0,29.5,0,0,0,0,1.386294,0,0,0,0,0,0,1,29.5,9.270638,1.386294,7.565836,1 +11,2,0,0,4,231166,0,10620.53,50.2334,1,12,1,604.6371,96.84274,0,0,755.8468,1457.327,2,0,0,23,32,4,75,24.1,0,29.5,0,0,0,0,1.386294,0,0,0,0,0,0,1,29.5,9.270638,1.386294,7.284359,1 +11,2,0,0,5,231166,0,10620.53,51.2334,1,12,1,326.4845,114.6885,0,0,1237.297,1678.47,2,0,0,14,20,3,75,24.1,0,29.5,0,0,0,0,1.098612,0,0,0,0,0,0,1,29.5,9.270638,1.098612,7.425638,1 +11,2,0,0,1,231179,0,8857.478,16.8104,1,13,1,43.7661,4.636785,35.98661,0,0,84.38949,0,0,0,4,1,4,78.2,13.8,1,69.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,69.3,9.08913,1.386294,4.435443,1 +11,2,0,0,2,231179,0,8857.478,17.8104,1,13,1,140.696,19.24716,20.24148,0,0,180.1847,0,0,0,9,1,4,78.2,13.8,1,69.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,69.3,9.08913,1.386294,5.193982,1 +11,2,0,0,3,231179,0,8857.478,18.8104,1,13,1,442.241,22.19766,32.41439,0,990.1387,1486.992,2,0,0,6,1,4,78.2,13.8,1,69.3,0,0,0,0,1.386294,0,0,0,0,0,0,0,69.3,9.08913,1.386294,7.304511,1 +11,2,0,0,1,231180,0,8857.478,14.41205,0,13,1,75.47655,6.18238,0,0,0,81.65894,0,0,0,5,0,4,86.2,6.9,0,69.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,69.3,9.08913,1.386294,4.402551,1 +11,2,0,0,2,231180,0,8857.478,15.41205,0,13,1,85.69602,6.747159,0,0,0,92.44318,0,0,0,7,1,4,86.2,6.9,0,69.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,69.3,9.08913,1.386294,4.526594,1 +11,2,0,0,3,231180,0,8857.478,16.41205,0,13,1,123.2423,7.061118,0,0,0,130.3034,0,0,0,8,0,4,86.2,6.9,0,69.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,69.3,9.08913,1.386294,4.869866,1 +11,2,0,0,1,231181,0,8857.478,24.44079,0,12,1,16.20299,0,34.30706,0,0,50.51005,0,0,0,1,0,4,70.2,6.9,0,86.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,86.4,9.08913,1.386294,3.922172,1 +11,2,0,0,2,231181,0,8857.478,25.44079,0,12,1,16.69034,0,0,0,0,16.69034,0,0,0,2,0,4,70.2,6.9,0,86.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,86.4,9.08913,1.386294,2.81483,1 +11,2,0,0,3,231181,0,8857.478,26.44079,0,12,1,43.17295,.9796272,31.98093,0,0,76.13351,0,0,0,2,0,4,70.2,6.9,0,86.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,86.4,9.08913,1.386294,4.332489,1 +11,2,0,0,1,231182,0,8857.478,62.27515,1,13,1,0,0,57.65585,0,0,57.65585,0,0,0,0,0,4,61.7,13.8,0,78.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.4,9.08913,1.386294,4.054492,1 +11,2,0,0,2,231182,0,8857.478,63.27515,1,13,1,40.36458,2.642045,0,0,0,43.00663,0,0,0,3,0,4,61.7,13.8,0,78.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.4,9.08913,1.386294,3.761354,1 +11,2,0,0,3,231182,0,8857.478,64.27515,1,13,1,125.2709,5.309927,0,0,0,130.5808,0,0,0,3,1,4,61.7,13.8,0,78.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,78.4,9.08913,1.386294,4.871993,1 +11,2,0,0,1,231202,0,8182.405,50.66667,0,16,1,10.58761,0,0,0,0,10.58761,0,0,0,1,0,1,70.7,13.8,0,65.9,0,0,0,0,0,0,0,0,0,1,0,0,65.9,9.009864,0,2.359685,1 +11,2,0,0,2,231202,0,8182.405,51.66667,0,16,1,16.40927,0,49.0444,0,0,65.45367,0,0,0,0,1,1,70.7,13.8,0,65.9,0,0,0,0,0,0,0,0,0,1,0,0,65.9,9.009864,0,4.181343,1 +11,2,0,0,3,231202,0,8182.405,52.66667,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,70.7,13.8,0,65.9,0,0,0,0,0,0,0,0,0,1,0,0,65.9,9.009864,0,,0 +11,2,0,0,4,231202,0,8182.405,53.66667,0,16,1,80.11387,0,48.71086,0,0,128.8247,0,0,0,3,1,1,70.7,13.8,0,65.9,0,0,0,0,0,0,0,0,0,1,0,0,65.9,9.009864,0,4.858453,1 +11,2,0,0,5,231202,0,8182.405,54.66667,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,70.7,13.8,0,65.9,0,0,0,0,0,0,0,0,0,1,0,0,65.9,9.009864,0,,0 +15,2,95,0,1,231279,0,8665.641,19.27721,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,68.6,0,0,90.9,190,190,0,0,0,5.247024,0,4.564348,5.298317,0,0,0,90.9,9.067237,0,,0 +11,2,0,0,1,231284,0,8665.641,27.19233,0,16,1,58.21741,4.714065,0,0,0,62.93148,0,0,0,6,0,1,79.3,0,1,83,0,0,0,0,0,0,0,0,0,0,0,0,83,9.067237,0,4.142046,1 +11,2,0,0,2,231284,0,8665.641,28.19233,0,16,1,65.81439,19.18087,.7954546,0,0,85.79072,0,0,0,4,1,1,79.3,0,1,83,0,0,0,0,0,0,0,0,0,0,0,0,83,9.067237,0,4.451911,1 +11,2,0,0,3,231284,0,8665.641,29.19233,0,16,1,203.1209,16.93975,0,0,0,220.0607,0,0,0,9,3,1,79.3,0,1,83,0,0,0,0,0,0,0,0,0,0,0,0,83,9.067237,0,5.393903,1 +11,2,0,0,1,231286,0,4171.848,25.12252,1,14,1,33.19714,12.10929,0,0,0,45.30643,0,0,0,1,1,1,80.3,10.3,0,73.9,0,30,0,0,0,3.401197,0,0,0,0,0,0,73.9,8.336354,0,3.813449,1 +11,2,0,0,2,231286,0,4171.848,26.12252,1,14,1,62.61135,14.68823,0,0,0,77.29958,0,0,0,4,0,1,80.3,10.3,0,73.9,0,30,0,0,0,3.401197,0,0,0,0,0,0,73.9,8.336354,0,4.347689,1 +11,2,0,0,3,231286,0,4171.848,27.12252,1,14,1,23.21582,7.248495,2.265692,0,0,32.73001,0,0,0,2,0,1,80.3,10.3,0,73.9,0,30,0,0,0,3.401197,0,0,0,0,0,0,73.9,8.336354,0,3.488292,1 +18,2,25,0,1,231287,0,4421.701,55.83573,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,52.1,20.7,1,70.5,573.5,573.5,0,0,.6931472,6.351758,0,3.258096,7.738052,1,0,0,70.5,8.394506,.6931472,,0 +18,2,25,0,2,231287,0,4421.701,56.83573,1,8,1,90.10091,4.805382,34.47861,0,0,129.3849,0,0,0,6,0,2,52.1,20.7,1,70.5,573.5,573.5,0,0,.6931472,6.351758,0,3.258096,7.738052,1,0,0,70.5,8.394506,.6931472,4.862792,1 +18,2,25,0,3,231287,0,4421.701,57.83573,1,8,1,47.6652,10.26432,0,0,0,57.92952,0,0,0,4,0,2,52.1,20.7,1,70.5,573.5,573.5,0,0,.6931472,6.351758,0,3.258096,7.738052,1,0,0,70.5,8.394506,.6931472,4.059227,1 +18,2,25,0,1,231288,0,4421.701,6.321697,0,8,1,22.21641,9.283848,0,0,0,31.50026,0,0,0,2,0,2,56.7,11.84267,0,81.5,573.5,573.5,1,0,.6931472,6.351758,0,3.258096,7.738052,0,0,0,81.5,8.394506,.6931472,3.449996,1 +18,2,25,0,2,231288,0,4421.701,7.321697,0,8,1,30.27391,3.700144,0,0,0,33.97405,0,0,0,3,0,2,56.7,11.84267,0,81.5,573.5,573.5,1,0,.6931472,6.351758,0,3.258096,7.738052,0,0,0,81.5,8.394506,.6931472,3.525597,1 +18,2,25,0,3,231288,0,4421.701,8.321697,0,8,1,30.837,0,0,0,0,30.837,0,0,0,2,0,2,56.7,11.84267,0,81.5,573.5,573.5,1,0,.6931472,6.351758,0,3.258096,7.738052,0,0,0,81.5,8.394506,.6931472,3.428715,1 +11,2,0,1,1,231315,0,6947.214,28.03833,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,70.7,13.8,0,50,0,0,0,0,0,0,0,0,0,1,0,0,50,8.84624,0,,0 +11,2,0,1,2,231315,0,6947.214,29.03833,0,12,1,38.12741,3.692085,0,0,0,41.8195,0,0,0,2,0,1,70.7,13.8,0,50,0,0,0,0,0,0,0,0,0,1,0,0,50,8.84624,0,3.733363,1 +11,2,0,1,3,231315,0,6947.214,30.03833,0,12,1,16.91144,0,28.11749,0,0,45.02893,0,0,0,1,0,1,70.7,13.8,0,50,0,0,0,0,0,0,0,0,0,1,0,0,50,8.84624,0,3.807305,1 +11,2,0,1,4,231315,0,6947.214,31.03833,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,70.7,13.8,0,50,0,0,0,0,0,0,0,0,0,1,0,0,50,8.84624,0,,0 +11,2,0,1,5,231315,0,6947.214,32.03833,0,12,1,12.09677,0,0,0,0,12.09677,0,0,0,1,0,1,70.7,13.8,0,50,0,0,0,0,0,0,0,0,0,1,0,0,50,8.84624,0,2.492939,1 +19,2,25,0,1,231318,0,8665.641,25.76044,0,12,1,7.660879,2.911134,0,0,0,10.57201,0,0,0,1,0,1,42,10.3,0,62.5,1000,0,0,0,0,0,0,3.258096,8.294049,1,0,0,62.5,9.067237,0,2.35821,1 +13,2,0,0,1,231332,0,6123.754,24.39699,1,13,1,57.98232,0,0,0,0,57.98232,0,0,0,2,0,3,77.7,13.8,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,86.4,8.720094,1.098612,4.060138,1 +13,2,0,0,2,231332,0,6123.754,25.39699,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,77.7,13.8,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,86.4,8.720094,1.098612,,0 +13,2,0,0,3,231332,0,6123.754,26.39699,1,13,1,39.94732,0,0,0,705.9745,745.9219,2,1,0,4,0,3,77.7,13.8,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,86.4,8.720094,1.098612,6.614621,1 +13,2,0,0,1,231333,0,6123.754,25.35797,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,88.8,6.9,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,86.4,8.720094,1.098612,,0 +13,2,0,0,2,231333,0,6123.754,26.35797,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,88.8,6.9,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,86.4,8.720094,1.098612,,0 +13,2,0,0,3,231333,0,6123.754,27.35797,0,13,1,17.55926,0,0,0,0,17.55926,0,0,0,1,0,3,88.8,6.9,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,86.4,8.720094,1.098612,2.865582,1 +13,2,0,0,1,231334,0,6123.754,.6461328,0,13,1,44.9818,0,0,0,0,44.9818,0,0,0,5,0,3,81.35272,11.84267,0,92.6,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,92.6,8.720094,1.098612,3.806258,1 +13,2,0,0,2,231334,0,6123.754,1.646133,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,0,92.6,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,92.6,8.720094,1.098612,,0 +13,2,0,0,3,231334,0,6123.754,2.646133,0,13,1,17.55926,0,0,0,0,17.55926,0,0,0,1,0,3,81.35272,11.84267,0,92.6,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,92.6,8.720094,1.098612,2.865582,1 +11,2,0,0,1,231338,0,7339.003,14.423,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,72.3,0,0,69,0,0,1,0,1.386294,0,0,0,0,1,0,0,69,8.901094,1.386294,,0 +11,2,0,0,2,231338,0,7339.003,15.423,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,72.3,0,0,69,0,0,1,0,1.386294,0,0,0,0,1,0,0,69,8.901094,1.386294,,0 +11,2,0,0,1,231340,0,7339.003,16.99384,1,12,1,98.9696,0,0,0,0,98.9696,0,0,0,2,1,4,62.8,27.6,1,48.8,0,0,1,1,1.386294,0,0,0,0,1,0,0,48.8,8.901094,1.386294,4.594813,1 +11,2,0,0,2,231340,0,7339.003,17.99384,1,12,1,33.02557,2.192235,0,0,0,35.2178,0,0,0,0,2,4,62.8,27.6,1,48.8,0,0,1,1,1.386294,0,0,0,0,1,0,0,48.8,8.901094,1.386294,3.561552,1 +11,2,0,0,3,231340,0,7339.003,18.99384,1,12,1,29.47551,0,0,0,0,29.47551,0,0,0,0,0,3,62.8,27.6,1,48.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,48.8,8.901094,1.098612,3.38356,1 +11,2,0,0,1,231342,0,7339.003,39.17865,0,12,1,5.692942,0,0,0,0,5.692942,0,0,0,1,0,4,83,3.4,1,75,0,0,0,0,1.386294,0,0,0,0,0,0,1,75,8.901094,1.386294,1.739227,1 +11,2,0,0,2,231342,0,7339.003,40.17865,0,12,1,24.14773,0,0,0,0,24.14773,0,0,0,0,2,4,83,3.4,1,75,0,0,0,0,1.386294,0,0,0,0,0,0,1,75,8.901094,1.386294,3.18419,1 +11,2,0,0,3,231342,0,7339.003,41.17865,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83,3.4,1,75,0,0,0,0,1.098612,0,0,0,0,0,0,1,75,8.901094,1.098612,,0 +11,2,0,0,1,231344,0,7339.003,15.78645,0,12,1,15.71355,0,0,0,0,15.71355,0,0,0,1,0,4,80.9,3.4,0,59.1,0,0,1,0,1.386294,0,0,0,0,1,0,0,59.1,8.901094,1.386294,2.754523,1 +11,2,0,0,2,231344,0,7339.003,16.78645,0,12,1,31.69508,.4734848,0,0,0,32.16856,0,0,0,1,0,4,80.9,3.4,0,59.1,0,0,1,0,1.386294,0,0,0,0,1,0,0,59.1,8.901094,1.386294,3.470989,1 +11,2,0,0,3,231344,0,7339.003,17.78645,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,80.9,3.4,0,59.1,0,0,1,0,1.098612,0,0,0,0,1,0,0,59.1,8.901094,1.098612,,0 +16,2,95,1,1,231350,0,9090.322,11.58385,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,11.84267,0,70.4,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,70.4,9.115076,1.386294,,0 +16,2,95,1,2,231350,0,9090.322,12.58385,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,11.84267,0,70.4,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,70.4,9.115076,1.386294,,0 +16,2,95,1,3,231350,0,9090.322,13.58385,1,16,1,8.900757,6.497552,0,0,0,15.39831,0,0,0,1,0,4,86.7,11.84267,0,70.4,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,70.4,9.115076,1.386294,2.734258,1 +16,2,95,1,1,231351,0,9090.322,9.218344,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,90,11.84267,0,70.4,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,70.4,9.115076,1.386294,,0 +16,2,95,1,2,231351,0,9090.322,10.21834,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,90,11.84267,0,70.4,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,70.4,9.115076,1.386294,,0 +16,2,95,1,3,231351,0,9090.322,11.21834,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,90,11.84267,0,70.4,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,70.4,9.115076,1.386294,,0 +16,2,95,1,1,231352,0,9090.322,37.24846,1,16,1,8.999471,0,3.149815,0,0,12.14929,0,0,0,1,0,4,89.4,3.4,0,89.8,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,89.8,9.115076,1.386294,2.49727,1 +16,2,95,1,2,231352,0,9090.322,38.24846,1,16,1,26.06178,0,0,0,0,26.06178,0,0,0,0,4,4,89.4,3.4,0,89.8,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,89.8,9.115076,1.386294,3.26047,1 +16,2,95,1,3,231352,0,9090.322,39.24846,1,16,1,15.57632,0,0,0,0,15.57632,0,0,0,1,0,4,89.4,3.4,0,89.8,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,89.8,9.115076,1.386294,2.745752,1 +16,2,95,1,1,231353,0,9090.322,35.06366,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,90.4,10.3,0,95.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,95.5,9.115076,1.386294,,0 +16,2,95,1,2,231353,0,9090.322,36.06366,0,13,1,21.71815,3.257722,0,0,0,24.97587,0,0,0,2,0,4,90.4,10.3,0,95.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,95.5,9.115076,1.386294,3.21791,1 +16,2,95,1,3,231353,0,9090.322,37.06366,0,13,1,6.675568,2.736983,0,0,0,9.41255,0,0,0,1,0,4,90.4,10.3,0,95.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,95.5,9.115076,1.386294,2.242044,1 +14,2,95,0,1,231376,0,10604.69,31.09103,1,12,1,41.60167,6.469059,31.90328,0,359.0744,439.0484,1,0,0,3,0,5,89.9,13.8,0,88.6,769.5,769.5,0,0,1.609438,6.645741,0,4.564348,6.697034,0,0,0,88.6,9.269146,1.609438,6.08461,1 +14,2,95,0,2,231376,0,10604.69,32.09103,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,89.9,13.8,0,88.6,769.5,769.5,0,0,1.609438,6.645741,0,4.564348,6.697034,0,0,0,88.6,9.269146,1.609438,,0 +14,2,95,0,3,231376,0,10604.69,33.09103,1,12,1,3.072871,0,0,0,0,3.072871,0,0,0,0,0,5,89.9,13.8,0,88.6,769.5,769.5,0,0,1.609438,6.645741,0,4.564348,6.697034,0,0,0,88.6,9.269146,1.609438,1.122612,1 +14,2,95,0,1,231377,0,10604.69,16.44353,1,12,1,43.16173,1.128445,0,0,0,44.29017,0,0,0,3,0,5,78.2,6.9,0,75,769.5,769.5,1,1,1.609438,6.645741,0,4.564348,6.697034,0,0,0,75,9.269146,1.609438,3.790763,1 +14,2,95,0,2,231377,0,10604.69,17.44353,1,12,1,32.25036,0,0,0,0,32.25036,0,0,0,1,0,5,78.2,6.9,0,75,769.5,769.5,1,1,1.609438,6.645741,0,4.564348,6.697034,0,0,0,75,9.269146,1.609438,3.473529,1 +14,2,95,0,3,231377,0,10604.69,18.44353,1,12,1,3.072871,0,0,0,0,3.072871,0,0,0,0,0,5,78.2,6.9,0,75,769.5,769.5,0,0,1.609438,6.645741,0,4.564348,6.697034,0,0,0,75,9.269146,1.609438,1.122612,1 +14,2,95,0,1,231378,0,10604.69,38.2423,0,12,1,30.16121,2.054082,37.5767,0,0,69.79199,0,0,0,2,0,5,78.7,0,0,76.1,769.5,769.5,0,0,1.609438,6.645741,0,4.564348,6.697034,0,0,0,76.1,9.269146,1.609438,4.245519,1 +14,2,95,0,2,231378,0,10604.69,39.2423,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,78.7,0,0,76.1,769.5,769.5,0,0,1.609438,6.645741,0,4.564348,6.697034,0,0,0,76.1,9.269146,1.609438,,0 +14,2,95,0,3,231378,0,10604.69,40.2423,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,78.7,0,0,76.1,769.5,769.5,0,0,1.609438,6.645741,0,4.564348,6.697034,0,0,0,76.1,9.269146,1.609438,,0 +14,2,95,0,1,231379,0,10604.69,15.41684,1,12,1,40.56162,9.895996,0,0,311.5185,361.9761,1,0,0,3,0,5,69.7,17.2,0,50,769.5,769.5,1,1,1.609438,6.645741,0,4.564348,6.697034,0,0,0,50,9.269146,1.609438,5.891578,1 +14,2,95,0,2,231379,0,10604.69,16.41684,1,12,1,5.972289,0,0,0,0,5.972289,0,0,0,1,0,5,69.7,17.2,0,50,769.5,769.5,1,1,1.609438,6.645741,0,4.564348,6.697034,0,0,0,50,9.269146,1.609438,1.78713,1 +14,2,95,0,3,231379,0,10604.69,17.41684,1,12,1,60.57946,0,0,0,0,60.57946,0,0,0,1,0,5,69.7,17.2,0,50,769.5,769.5,1,1,1.609438,6.645741,0,4.564348,6.697034,0,0,0,50,9.269146,1.609438,4.103956,1 +14,2,95,0,1,231380,0,10604.69,13.52225,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,85,11.84267,0,96.3,769.5,769.5,1,0,1.609438,6.645741,0,4.564348,6.697034,0,0,0,96.3,9.269146,1.609438,,0 +14,2,95,0,2,231380,0,10604.69,14.52225,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,85,11.84267,0,96.3,769.5,769.5,1,0,1.609438,6.645741,0,4.564348,6.697034,0,0,0,96.3,9.269146,1.609438,,0 +14,2,95,0,3,231380,0,10604.69,15.52225,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,85,11.84267,0,96.3,769.5,769.5,1,0,1.609438,6.645741,0,4.564348,6.697034,0,0,0,96.3,9.269146,1.609438,,0 +13,2,0,1,1,231416,0,2594.721,35.70979,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,79.8,3.4,0,93.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,93.2,7.86162,0,,0 +13,2,0,1,2,231416,0,2594.721,36.70979,0,13,1,47.30053,0,0,0,0,47.30053,0,0,0,0,8,1,79.8,3.4,0,93.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,93.2,7.86162,0,3.856521,1 +13,2,0,1,3,231416,0,2594.721,37.70979,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,79.8,3.4,0,93.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,93.2,7.86162,0,,0 +16,2,95,0,1,231420,0,11916.72,21.99589,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,85.1,6.9,0,73.9,1000,0,0,0,1.386294,0,0,4.564348,6.959049,0,0,0,73.9,9.385781,1.386294,,0 +16,2,95,0,1,231421,0,11916.72,20.90075,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,50,17.2,0,72.7,1000,0,0,0,1.386294,0,0,4.564348,6.959049,0,0,0,72.7,9.385781,1.386294,,0 +16,2,95,0,1,231422,0,11916.72,19.70979,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,51.6,17.2,1,52.3,1000,0,0,0,1.386294,0,0,4.564348,6.959049,0,0,0,52.3,9.385781,1.386294,,0 +13,2,0,0,1,231440,0,8665.641,46.30253,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,73.9,10.3,0,73.9,150,258.48,0,0,0,5.554818,1,4.564348,5.061929,0,0,1,73.9,9.067237,0,,0 +13,2,0,0,2,231440,0,8665.641,47.30253,0,12,1,24.37881,1.875293,0,0,0,26.2541,0,0,0,2,0,1,73.9,10.3,0,73.9,150,258.48,0,0,0,5.554818,1,4.564348,5.061929,0,0,1,73.9,9.067237,0,3.267822,1 +13,2,0,0,3,231440,0,8665.641,48.30253,0,12,1,19.34652,9.11436,45.47721,0,986.8444,1060.782,1,0,0,1,1,1,73.9,10.3,0,73.9,150,258.48,0,0,0,5.554818,1,4.564348,5.061929,0,0,1,73.9,9.067237,0,6.966762,1 +14,2,95,0,1,231443,0,8665.641,25.79055,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,83,3.4,0,79.5,700,0,0,0,0,0,0,4.564348,6.602374,0,0,0,79.5,9.067237,0,,0 +14,2,95,0,2,231443,0,8665.641,26.79055,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,83,3.4,0,79.5,700,0,0,0,0,0,0,4.564348,6.602374,0,0,0,79.5,9.067237,0,,0 +14,2,95,0,3,231443,0,8665.641,27.79055,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,83,3.4,0,79.5,700,0,0,0,0,0,0,4.564348,6.602374,0,0,0,79.5,9.067237,0,,0 +11,2,0,0,1,231458,0,2084.458,20.58043,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,74.29414,11.84267,.1981873,,0,0,0,0,0,0,0,0,0,0,0,0,71.31672,7.642744,0,,0 +11,2,0,0,2,231458,0,2084.458,21.58043,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,74.29414,11.84267,.1981873,,0,0,0,0,0,0,0,0,0,0,0,0,71.31672,7.642744,0,,0 +11,2,0,0,3,231458,0,2084.458,22.58043,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,74.29414,11.84267,.1981873,,0,0,0,0,0,0,0,0,0,0,0,0,71.31672,7.642744,0,,0 +11,2,0,0,1,231459,0,3451.32,20.15058,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,79.8,0,1,72.7,0,0,0,0,0,0,0,0,0,0,1,0,72.7,8.146802,0,,0 +11,2,0,0,2,231459,0,3451.32,21.15058,0,13,1,7.239382,0,0,0,0,7.239382,0,0,0,0,1,1,79.8,0,1,72.7,0,0,0,0,0,0,0,0,0,0,1,0,72.7,8.146802,0,1.979536,1 +11,2,0,0,3,231459,0,3451.32,22.15058,0,13,1,107.3876,0,0,0,0,107.3876,0,0,0,0,9,1,79.8,0,1,72.7,0,0,0,0,0,0,0,0,0,0,1,0,72.7,8.146802,0,4.676445,1 +18,2,25,0,1,231504,0,1,24.46817,0,12,1,14.04056,0,10.66043,0,0,24.70099,0,0,0,0,1,1,37.2,6.9,0,83,450,0,0,0,0,0,0,3.258096,7.495542,1,0,0,83,.6931472,0,3.206843,1 +18,2,25,0,2,231504,0,1,25.46817,0,12,1,227.4247,3.449594,26.99475,0,0,257.8691,0,0,0,7,0,1,37.2,6.9,0,83,450,0,0,0,0,0,0,3.258096,7.495542,1,0,0,83,.6931472,0,5.552452,1 +18,2,25,0,3,231504,0,1,26.46817,0,12,1,32.1993,3.928885,13.93766,0,0,50.06585,0,0,0,2,0,1,37.2,6.9,0,83,450,0,0,0,0,0,0,3.258096,7.495542,1,0,0,83,.6931472,0,3.913339,1 +7,2,25,0,1,231505,0,8148.974,36.98563,0,16,1,127.9251,23.19293,0,0,0,151.118,0,0,0,5,0,1,77.1,24.1,0,75,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,75,9.00577,0,5.018061,1 +7,2,25,0,2,231505,0,8148.974,37.98563,0,16,1,113.2346,21.66746,0,0,0,134.9021,0,0,0,2,0,1,77.1,24.1,0,75,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,75,9.00577,0,4.904549,1 +7,2,25,0,3,231505,0,8148.974,38.98563,0,16,1,47.19052,15.27656,0,0,0,62.46708,0,0,0,1,0,1,77.1,24.1,0,75,1000,1000,0,0,0,6.907755,0,3.258096,8.294049,1,0,0,75,9.00577,0,4.13464,1 +14,2,95,0,1,231507,0,8665.641,19.8193,0,12,1,28.85111,0,35.46626,0,0,64.31736,0,0,0,1,3,1,65.4,6.9,0,55.7,116.25,0,0,0,0,0,0,4.564348,4.807036,1,0,0,55.7,9.067237,0,4.16383,1 +14,2,95,0,2,231507,0,8665.641,20.8193,0,12,1,301.7046,0,7.575758,0,0,309.2803,0,0,0,5,2,1,65.4,6.9,0,55.7,116.25,0,0,0,0,0,0,4.564348,4.807036,1,0,0,55.7,9.067237,0,5.734248,1 +14,2,95,0,3,231507,0,8665.641,21.8193,0,12,1,0,0,13.05158,0,0,13.05158,0,0,0,0,0,1,65.4,6.9,0,55.7,116.25,0,0,0,0,0,0,4.564348,4.807036,1,0,0,55.7,9.067237,0,2.568909,1 +18,2,25,1,1,231523,0,1642.229,34.72416,0,12,1,241.6017,6.682267,29.12116,0,724.4514,1001.856,1,0,0,7,5,1,31.4,6.9,1,56.8,476.3,0,0,0,0,0,0,3.258096,7.552342,1,0,0,56.8,7.404418,0,6.90961,1 +18,2,25,1,2,231523,0,1642.229,35.72416,0,12,1,51.95891,0,25.3225,0,0,77.28142,0,0,0,1,3,1,31.4,6.9,1,56.8,476.3,0,0,0,0,0,0,3.258096,7.552342,1,0,0,56.8,7.404418,0,4.347454,1 +18,2,25,1,3,231523,0,1642.229,36.72416,0,12,1,24.14399,7.199297,29.31519,0,0,60.65847,0,0,0,1,1,1,31.4,6.9,1,56.8,476.3,0,0,0,0,0,0,3.258096,7.552342,1,0,0,56.8,7.404418,0,4.105259,1 +14,2,95,1,1,231526,0,5577.712,18.67762,0,11,1,60.0624,15.70463,36.65627,0,0,112.4233,0,0,0,7,0,2,77.7,24.1,1,61.4,276.75,326.52,0,0,.6931472,5.788491,0,4.564348,5.674408,1,0,0,61.4,8.626714,.6931472,4.722271,1 +14,2,95,1,2,231526,0,5577.712,19.67762,0,11,1,99.97611,0,45.4754,0,0,145.4515,0,0,0,4,0,2,77.7,24.1,1,61.4,276.75,326.52,0,0,.6931472,5.788491,0,4.564348,5.674408,1,0,0,61.4,8.626714,.6931472,4.979843,1 +14,2,95,1,3,231526,0,5577.712,20.67762,0,11,1,184.3723,0,26.82177,0,0,211.194,0,0,0,3,17,2,77.7,24.1,1,61.4,276.75,326.52,0,0,.6931472,5.788491,0,4.564348,5.674408,1,0,0,61.4,8.626714,.6931472,5.352777,1 +14,2,95,1,1,231527,0,5577.712,54.02327,1,12,1,74.62299,0,45.86063,0,0,120.4836,0,0,0,2,0,2,72.7,27.6,1,55.7,276.75,326.52,0,0,.6931472,5.788491,0,4.564348,5.674408,1,0,0,55.7,8.626714,.6931472,4.791514,1 +14,2,95,1,2,231527,0,5577.712,55.02327,1,12,1,132.9431,21.04634,0,0,0,153.9895,0,0,0,6,0,2,72.7,27.6,1,55.7,276.75,326.52,0,0,.6931472,5.788491,0,4.564348,5.674408,1,0,0,55.7,8.626714,.6931472,5.036884,1 +14,2,95,1,3,231527,0,5577.712,56.02327,1,12,1,321.993,19.01229,52.86216,0,0,393.8674,0,0,0,11,16,2,72.7,27.6,1,55.7,276.75,326.52,0,0,.6931472,5.788491,0,4.564348,5.674408,1,0,0,55.7,8.626714,.6931472,5.976015,1 +11,2,0,1,1,231535,0,5601.173,20.68994,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,79.8,3.4,0,77.3,0,0,0,0,0,0,0,0,0,0,0,0,77.3,8.63091,0,,0 +11,2,0,1,2,231535,0,5601.173,21.68994,0,12,1,16.21622,0,0,0,0,16.21622,0,0,0,1,0,1,79.8,3.4,0,77.3,0,0,0,0,0,0,0,0,0,0,0,0,77.3,8.63091,0,2.786012,1 +11,2,0,1,3,231535,0,5601.173,22.68994,0,12,1,2.278943,0,0,0,0,2.278943,0,0,0,0,1,1,79.8,3.4,0,77.3,0,0,0,0,0,0,0,0,0,0,0,0,77.3,8.63091,0,.8237116,1 +13,2,0,1,1,231536,0,8665.641,.3340178,1,12,1,139.7844,10.70081,0,0,0,150.4852,0,0,0,12,0,4,81.35272,11.84267,0,88.9,450,275.27,1,1,1.386294,5.617753,1,4.564348,6.160541,0,0,0,88.9,9.067237,1.386294,5.013865,1 +13,2,0,1,2,231536,0,8665.641,1.334018,1,12,1,105.0369,1.400491,0,0,0,106.4373,0,0,0,8,0,4,81.35272,11.84267,0,88.9,450,275.27,1,1,1.386294,5.617753,1,4.564348,6.160541,0,0,0,88.9,9.067237,1.386294,4.667557,1 +13,2,0,1,3,231536,0,8665.641,2.334018,1,12,1,377.3929,5.788514,0,0,0,383.1814,0,0,0,6,0,5,81.35272,11.84267,0,88.9,450,275.27,1,1,1.609438,5.617753,1,4.564348,6.160541,0,0,0,88.9,9.067237,1.609438,5.948508,1 +13,2,0,1,4,231536,0,8665.641,3.334018,1,12,1,56.99875,0,0,0,0,56.99875,0,0,0,3,0,5,81.35272,11.84267,0,88.9,450,275.27,1,1,1.609438,5.617753,1,4.564348,6.160541,0,0,0,88.9,9.067237,1.609438,4.043029,1 +13,2,0,1,5,231536,0,8665.641,4.334018,1,12,1,34.47112,0,0,0,285.5364,320.0075,1,0,0,3,0,5,81.35272,11.84267,0,88.9,450,275.27,1,1,1.609438,5.617753,1,4.564348,6.160541,0,0,0,88.9,9.067237,1.609438,5.768344,1 +16,2,95,1,1,231537,0,5000,.3477071,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,40.7,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,40.7,8.517393,1.609438,,0 +16,2,95,1,2,231537,0,5000,1.347707,0,13,1,94.62408,8.216216,0,0,0,102.8403,0,0,0,4,0,5,81.35272,11.84267,0,40.7,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,40.7,8.517393,1.609438,4.633177,1 +16,2,95,1,3,231537,0,5000,2.347707,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,0,40.7,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,40.7,8.517393,1.609438,,0 +5,2,25,0,1,231538,0,5115.542,.3696099,1,14,1,63.8814,19.3531,0,0,0,83.2345,0,0,0,5,0,4,81.35272,11.84267,0,92.6,452.9,452.9,1,1,1.386294,6.115671,0,3.258096,7.501966,0,0,0,92.6,8.540235,1.386294,4.421662,1 +5,2,25,0,2,231538,0,5115.542,1.36961,1,14,1,42.99754,1.351351,0,0,423.145,467.4939,1,0,0,3,0,4,81.35272,11.84267,0,92.6,452.9,452.9,1,1,1.386294,6.115671,0,3.258096,7.501966,0,0,0,92.6,8.540235,1.386294,6.147386,1 +5,2,25,0,3,231538,0,5115.542,2.36961,1,14,1,84.77666,0,23.50957,0,659.4348,767.7211,1,0,0,9,0,4,81.35272,11.84267,0,92.6,452.9,452.9,1,1,1.386294,6.115671,0,3.258096,7.501966,0,0,0,92.6,8.540235,1.386294,6.643426,1 +14,2,95,0,1,231552,0,3713.783,23.68789,0,14,1,15.45595,0,28.99021,0,0,44.44616,0,0,0,1,0,1,54.8,10.3,1,78.4,132,132,0,0,0,4.882802,0,4.564348,4.934095,0,0,0,78.4,8.220076,0,3.794279,1 +14,2,95,0,2,231552,0,3713.783,24.68789,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,54.8,10.3,1,78.4,132,132,0,0,0,4.882802,0,4.564348,4.934095,0,0,0,78.4,8.220076,0,,0 +14,2,95,0,3,231552,0,3713.783,25.68789,0,14,1,43.34634,0,0,0,0,43.34634,0,0,0,0,1,1,54.8,10.3,1,78.4,132,132,0,0,0,4.882802,0,4.564348,4.934095,0,0,0,78.4,8.220076,0,3.769222,1 +16,2,95,1,1,231570,.0220994,8665.641,28.73922,1,12.75671,1,0,0,0,0,0,0,0,0,0,0,0,2,76.1,13.8,0,69,675,0,0,0,.6931472,0,0,4.564348,6.566006,0,0,0,69,9.067237,.6931472,,0 +16,2,95,1,2,231570,.0220994,8665.641,29.73922,1,12.75671,1,0,0,0,0,0,0,0,0,0,0,0,2,76.1,13.8,0,69,675,0,0,0,.6931472,0,0,4.564348,6.566006,0,0,0,69,9.067237,.6931472,,0 +16,2,95,1,3,231570,.0220994,8665.641,30.73922,1,12.75671,1,0,0,0,0,0,0,0,0,0,0,0,2,76.1,13.8,0,69,675,0,0,0,.6931472,0,0,4.564348,6.566006,0,0,0,69,9.067237,.6931472,,0 +11,2,0,0,1,231572,0,3387.097,20.71732,0,12.75671,1,84.84832,5.055881,76.15753,0,364.8483,530.91,1,0,0,4,0,3,74.29414,11.84267,.1981873,,0,0,0,0,1.098612,0,0,0,0,0,0,0,71.31672,8.128023,1.098612,6.274592,1 +11,2,0,0,2,231572,0,3387.097,21.71732,0,12.75671,1,130.1503,0,0,169.6558,1413.694,1543.844,2,0,7,4,0,3,74.29414,11.84267,.1981873,,0,0,0,0,1.098612,0,0,0,0,0,0,0,71.31672,8.128023,1.098612,7.342031,1 +11,2,0,0,3,231572,0,3387.097,22.71732,0,12.75671,1,33.46811,0,0,0,0,33.46811,0,0,0,1,0,3,74.29414,11.84267,.1981873,,0,0,0,0,1.098612,0,0,0,0,0,0,0,71.31672,8.128023,1.098612,3.510593,1 +11,2,0,0,1,231573,0,3651.613,.4982888,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,.0221239,,0,0,1,1,1.098612,0,0,0,0,0,0,0,76.97035,8.203198,1.098612,,0 +11,2,0,0,2,231573,0,3651.613,1.498289,1,12,1,36.35482,2.66602,0,0,122.8793,161.9001,1,0,0,5,0,4,81.35272,11.84267,.0221239,,0,0,1,1,1.386294,0,0,0,0,0,0,0,76.97035,8.203198,1.386294,5.08698,1 +11,2,0,0,3,231573,0,3651.613,2.498289,1,12,1,72.10242,0,0,0,0,72.10242,0,0,0,4,0,4,81.35272,11.84267,.0221239,,0,0,1,1,1.386294,0,0,0,0,0,0,0,76.97035,8.203198,1.386294,4.278088,1 +13,2,0,0,1,231574,0,2858.064,.4736482,0,12,1,11.70836,4.039382,0,0,0,15.74774,0,0,0,2,0,4,81.35272,11.84267,.0221239,,450,600,1,0,1.386294,6.39693,1,4.564348,6.160541,0,0,0,76.97035,7.95825,1.386294,2.756697,1 +13,2,0,0,2,231574,0,2858.064,1.473648,0,12,1,42.1716,0,0,0,0,42.1716,0,0,0,1,0,4,81.35272,11.84267,.0221239,,450,600,1,0,1.386294,6.39693,1,4.564348,6.160541,0,0,0,76.97035,7.95825,1.386294,3.741747,1 +11,2,0,0,1,231575,0,3643.402,.0301164,1,18,1,63.16917,0,0,0,0,63.16917,0,0,0,6,0,3,81.35272,11.84267,.0221239,,0,864.48,1,1,1.098612,6.762128,0,0,0,0,0,0,76.97035,8.200948,1.098612,4.145816,1 +11,2,0,0,2,231575,0,3643.402,1.030116,1,18,1,65.25134,3.001464,0,0,0,68.25281,0,0,0,5,0,3,81.35272,11.84267,.0221239,,0,864.48,1,1,1.098612,6.762128,0,0,0,0,0,0,76.97035,8.200948,1.098612,4.223218,1 +11,2,0,0,3,231575,0,3643.402,2.030116,1,18,1,63.4598,0,0,0,0,63.4598,0,0,0,4,0,3,81.35272,11.84267,.0221239,,0,864.48,1,1,1.098612,6.762128,0,0,0,0,0,0,76.97035,8.200948,1.098612,4.150407,1 +11,2,0,1,1,231577,0,22434.02,.2874743,1,16,1,42.82655,7.54818,0,0,0,50.37473,0,0,0,4,0,4,81.35272,11.84267,0,96.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,96.3,10.01838,1.386294,3.91949,1 +11,2,0,1,2,231577,0,22434.02,1.287474,1,16,1,14.20205,0,0,0,0,14.20205,0,0,0,1,0,4,81.35272,11.84267,0,96.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,96.3,10.01838,1.386294,2.653386,1 +11,2,0,1,3,231577,0,22434.02,2.287474,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,96.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,96.3,10.01838,1.386294,,0 +11,2,0,1,1,231578,0,6928.446,32.8898,0,12.75671,1,58.54178,23.35285,40.22884,79.8297,0,122.1235,0,0,5,3,1,4,78.2,6.9,0,85.2,0,573.3,0,0,1.386294,6.351409,0,0,0,0,0,0,85.2,8.843535,1.386294,4.805033,1 +11,2,0,1,2,231578,0,6928.446,33.8898,0,12.75671,1,131.9438,.9452254,57.05284,0,0,189.9418,0,0,0,1,9,4,78.2,6.9,0,85.2,0,573.3,0,0,1.386294,6.351409,0,0,0,0,0,0,85.2,8.843535,1.386294,5.246718,1 +11,2,0,1,3,231578,0,6928.446,34.8898,0,12.75671,1,0,0,0,0,0,0,0,0,0,0,0,4,78.2,6.9,0,85.2,0,573.3,0,0,1.386294,6.351409,0,0,0,0,0,0,85.2,8.843535,1.386294,,0 +11,2,0,1,1,231589,0,15428.15,.5995893,0,16,1,104.8174,20.26469,2.646903,0,217.226,344.955,1,0,0,7,0,3,81.35272,11.84267,0,100,0,354.72,1,0,1.098612,5.871329,0,0,0,0,0,0,100,9.644014,1.098612,5.843414,1 +11,2,0,1,2,231589,0,15428.15,1.599589,0,16,1,32.33591,6.611969,0,0,0,38.94788,0,0,0,2,0,4,81.35272,11.84267,0,100,0,354.72,1,0,1.386294,5.871329,0,0,0,0,0,0,100,9.644014,1.386294,3.662224,1 +11,2,0,1,3,231589,0,15428.15,2.599589,0,16,1,68.75835,21.76235,0,0,0,90.52069,0,0,0,6,0,4,81.35272,11.84267,0,100,0,354.72,1,0,1.386294,5.871329,0,0,0,0,0,0,100,9.644014,1.386294,4.505579,1 +13,2,0,1,1,231590,0,4092.669,.6297057,1,13,1,52.14399,0,0,0,0,52.14399,0,0,0,4,0,3,81.35272,11.84267,0,92.6,450,0,1,1,1.098612,0,1,4.564348,6.160541,0,0,0,92.6,8.317197,1.098612,3.954009,1 +13,2,0,1,2,231590,0,4092.669,1.629706,1,13,1,0,2.26834,0,0,0,2.26834,0,0,0,0,0,4,81.35272,11.84267,0,92.6,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,92.6,8.317197,1.386294,.8190482,1 +13,2,0,1,3,231590,0,4092.669,2.629706,1,13,1,127.9484,19.28349,0,0,0,147.2319,0,0,0,8,0,4,81.35272,11.84267,0,92.6,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,92.6,8.317197,1.386294,4.992009,1 +11,2,0,1,1,231591,0,6920.234,.3312799,0,12,1,96.34727,2.202223,0,0,0,98.5495,0,0,0,8,0,3,81.35272,11.84267,0,88.9,0,325.68,1,0,1.098612,5.785915,0,0,0,0,0,0,88.9,8.842349,1.098612,4.590559,1 +11,2,0,1,2,231591,0,6920.234,1.33128,0,12,1,77.94402,0,0,0,0,77.94402,0,0,0,6,0,3,81.35272,11.84267,0,88.9,0,325.68,1,0,1.098612,5.785915,0,0,0,0,0,0,88.9,8.842349,1.098612,4.355991,1 +11,2,0,1,3,231591,0,6920.234,2.33128,0,12,1,16.80018,0,0,0,0,16.80018,0,0,0,1,0,4,81.35272,11.84267,0,88.9,0,325.68,1,0,1.386294,5.785915,0,0,0,0,0,0,88.9,8.842349,1.386294,2.821389,1 +11,2,0,1,4,231591,0,6920.234,3.33128,0,12,1,232.3099,4.46523,0,0,692.0903,928.8654,1,0,0,3,0,4,81.35272,11.84267,0,88.9,0,325.68,1,0,1.386294,5.785915,0,0,0,0,0,0,88.9,8.842349,1.386294,6.833964,1 +11,2,0,1,5,231591,0,6920.234,4.33128,0,12,1,10.6305,5.674487,0,0,0,16.30499,0,0,0,2,0,4,81.35272,11.84267,0,88.9,0,325.68,1,0,1.386294,5.785915,0,0,0,0,0,0,88.9,8.842349,1.386294,2.791471,1 +17,2,25,0,2,231879,0,2067.449,.8795345,1,12,1,27.76413,8.766584,0,0,0,36.53071,0,0,0,3,0,3,81.35272,11.84267,.0221239,,324.3,0,1,1,1.098612,0,0,3.258096,7.167964,0,0,0,76.97035,7.634554,1.098612,3.598153,1 +17,2,25,0,3,231879,0,2067.449,1.879535,1,12,1,21.19417,11.16682,0,0,0,32.36098,0,0,0,2,0,3,81.35272,11.84267,.0221239,,324.3,0,1,1,1.098612,0,0,3.258096,7.167964,0,0,0,76.97035,7.634554,1.098612,3.476954,1 +11,2,0,0,1,231886,0,17144.49,19.9206,0,12.75671,1,0,0,0,0,0,0,0,0,0,0,0,5,74.29414,11.84267,.1981873,,0,0,0,0,1.609438,0,0,0,0,0,0,0,71.31672,9.74949,1.609438,,0 +11,2,0,0,2,231886,0,17144.49,20.9206,0,12.75671,1,24.02691,2.64296,0,0,0,26.66987,0,0,0,3,0,5,74.29414,11.84267,.1981873,,0,0,0,0,1.609438,0,0,0,0,0,0,0,71.31672,9.74949,1.609438,3.283535,1 +11,2,0,0,3,231886,0,17144.49,21.9206,0,12.75671,1,9.251101,0,0,0,0,9.251101,0,0,0,1,0,5,74.29414,11.84267,.1981873,,0,0,0,0,1.609438,0,0,0,0,0,0,0,71.31672,9.74949,1.609438,2.224743,1 +5,2,25,1,1,231888,0,6803.519,.6516085,1,12,1,18.81861,10.115,0,0,0,28.93361,0,0,0,3,0,4,81.35272,11.84267,0,85.2,304,304,1,1,1.386294,5.717028,0,3.258096,7.103322,0,0,0,85.2,8.825342,1.386294,3.365004,1 +5,2,25,1,2,231888,0,6803.519,1.651608,1,12,1,7.92888,4.632388,0,0,0,12.56127,0,0,0,1,0,4,81.35272,11.84267,0,85.2,304,304,1,1,1.386294,5.717028,0,3.258096,7.103322,0,0,0,85.2,8.825342,1.386294,2.530618,1 +5,2,25,1,3,231888,0,6803.519,2.651608,1,12,1,8.149779,3.651982,0,0,0,11.80176,0,0,0,1,0,4,81.35272,11.84267,0,85.2,304,304,1,1,1.386294,5.717028,0,3.258096,7.103322,0,0,0,85.2,8.825342,1.386294,2.468249,1 +5,2,25,1,4,231888,0,6803.519,3.651608,1,12,1,18.34678,0,0,0,0,18.34678,0,0,0,2,0,4,81.35272,11.84267,0,85.2,304,304,1,1,1.386294,5.717028,0,3.258096,7.103322,0,0,0,85.2,8.825342,1.386294,2.909454,1 +5,2,25,1,5,231888,0,6803.519,4.651608,1,12,1,16.39344,0,0,0,0,16.39344,0,0,0,2,0,4,81.35272,11.84267,0,85.2,304,304,1,1,1.386294,5.717028,0,3.258096,7.103322,0,0,0,85.2,8.825342,1.386294,2.796881,1 +11,2,0,1,1,231889,0,6363.636,.3477071,0,12,1,42.81234,12.10141,4.234187,0,260.4548,319.6027,1,0,0,4,0,5,81.35272,11.84267,0,74.1,0,516,1,0,1.609438,6.246107,0,0,0,0,0,0,74.1,8.758512,1.609438,5.767079,1 +11,2,0,1,2,231889,0,6363.636,1.347707,0,12,1,37.98655,6.22297,0,0,0,44.20951,0,0,0,4,0,5,81.35272,11.84267,0,74.1,0,516,1,0,1.609438,6.246107,0,0,0,0,0,0,74.1,8.758512,1.609438,3.78894,1 +11,2,0,1,3,231889,0,6363.636,2.347707,0,12,1,64.51542,3.255507,0,0,0,67.77093,0,0,0,5,0,5,81.35272,11.84267,0,74.1,0,516,1,0,1.609438,6.246107,0,0,0,0,0,0,74.1,8.758512,1.609438,4.216133,1 +14,2,95,0,1,231891,0,8577.126,21.48939,1,12.75671,1,158.1286,31.63095,39.51385,0,2213.356,2442.629,4,0,0,7,1,2,74.29414,11.84267,.1981873,,765,765,0,0,.6931472,6.639876,0,4.564348,6.691169,0,0,0,71.31672,9.056971,.6931472,7.80083,1 +14,2,95,0,2,231891,0,8577.126,22.48939,1,12.75671,1,115.4733,35.85776,0,0,302.4748,453.8059,1,0,0,8,0,2,74.29414,11.84267,.1981873,,765,765,0,0,.6931472,6.639876,0,4.564348,6.691169,0,0,0,71.31672,9.056971,.6931472,6.11767,1 +14,2,95,0,3,231891,0,8577.126,23.48939,1,12.75671,1,316.2996,12.04405,35.24229,0,0,363.5859,0,0,0,7,1,2,74.29414,11.84267,.1981873,,765,765,0,0,.6931472,6.639876,0,4.564348,6.691169,0,0,0,71.31672,9.056971,.6931472,5.896016,1 +14,2,95,0,4,231891,0,8577.126,24.48939,1,12.75671,1,184.375,0,2.822581,0,1226.452,1413.649,1,0,0,7,1,2,74.29414,11.84267,.1981873,,765,765,0,0,.6931472,6.639876,0,4.564348,6.691169,0,0,0,71.31672,9.056971,.6931472,7.25393,1 +14,2,95,0,5,231891,0,8577.126,25.48939,1,12.75671,1,502.2951,29.93443,0,0,0,532.2295,0,0,0,16,2,3,74.29414,11.84267,.1981873,,765,765,0,0,1.098612,6.639876,0,4.564348,6.691169,0,0,0,71.31672,9.056971,1.098612,6.277075,1 +11,2,0,0,1,231896,0,10620.53,14.97057,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.4,3.4,0,83.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,83.3,9.270638,1.386294,,0 +11,2,0,0,2,231896,0,10620.53,15.97057,0,12,1,13.93561,3.363767,0,0,0,17.29938,0,0,0,1,0,4,81.4,3.4,0,83.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,83.3,9.270638,1.386294,2.85067,1 +11,2,0,0,3,231896,0,10620.53,16.97057,0,12,1,33.70044,6.361234,0,0,0,40.06167,0,0,0,3,0,4,81.4,3.4,0,83.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,83.3,9.270638,1.386294,3.69042,1 +11,2,0,0,4,231896,0,10620.53,17.97057,0,12,1,88.97177,0,0,0,0,88.97177,0,0,0,5,0,4,81.4,3.4,0,83.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,83.3,9.270638,1.386294,4.488319,1 +11,2,0,0,5,231896,0,10620.53,18.97057,0,12,1,41.16576,0,0,0,0,41.16576,0,0,0,3,0,3,81.4,3.4,0,83.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,83.3,9.270638,1.098612,3.717607,1 +16,2,95,0,1,231897,0,11916.72,51.98083,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,56.9,27.6,1,53.4,1000,0,0,0,1.386294,0,0,4.564348,6.959049,0,0,0,53.4,9.385781,1.386294,,0 +17,2,25,0,1,231908,0,8665.641,3.071869,0,14,1,7.660879,0,0,0,0,7.660879,0,0,0,1,0,3,81.35272,11.84267,0,92.6,189,534.24,1,0,1.098612,6.280845,0,3.258096,6.628041,1,0,0,92.6,9.067237,1.098612,2.036127,1 +17,2,25,0,2,231908,0,8665.641,4.071868,0,14,1,54.85232,0,0,0,0,54.85232,0,0,0,4,0,3,81.35272,11.84267,0,92.6,189,534.24,1,0,1.098612,6.280845,0,3.258096,6.628041,1,0,0,92.6,9.067237,1.098612,4.004644,1 +17,2,25,0,3,231908,0,8665.641,5.071868,0,14,1,32.2442,11.50043,0,42.99226,0,43.74463,0,0,2,5,0,3,81.35272,11.84267,0,92.6,189,534.24,1,0,1.098612,6.280845,0,3.258096,6.628041,1,0,0,92.6,9.067237,1.098612,3.778369,1 +17,2,25,0,1,231909,0,8665.641,23.64408,0,12,1,93.97344,21.96119,0,0,0,115.9346,0,0,0,7,5,3,72.7,3.4,0,53.4,189,534.24,0,0,1.098612,6.280845,0,3.258096,6.628041,1,0,0,53.4,9.067237,1.098612,4.753026,1 +17,2,25,0,2,231909,0,8665.641,24.64408,0,12,1,460.9705,109.2124,0,295.3586,1172.686,1742.869,1,0,11,26,6,3,72.7,3.4,0,53.4,189,534.24,0,0,1.098612,6.280845,0,3.258096,6.628041,1,0,0,53.4,9.067237,1.098612,7.463288,1 +17,2,25,0,3,231909,0,8665.641,25.64408,0,12,1,250.7954,71.08771,0,47.29149,0,321.8831,0,0,2,11,0,3,72.7,3.4,0,53.4,189,534.24,0,0,1.098612,6.280845,0,3.258096,6.628041,1,0,0,53.4,9.067237,1.098612,5.774189,1 +6,2,25,0,1,231912,0,12931.96,7.184121,1,12,1,22.65066,0,0,0,0,22.65066,0,0,0,2,0,4,91.7,11.84267,0,100,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,100,9.467535,1.386294,3.120189,1 +6,2,25,0,2,231912,0,12931.96,8.18412,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,91.7,11.84267,0,100,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,100,9.467535,1.386294,,0 +6,2,25,0,3,231912,0,12931.96,9.18412,1,12,1,8.813414,0,0,0,0,8.813414,0,0,0,1,0,4,91.7,11.84267,0,100,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,100,9.467535,1.386294,2.176275,1 +6,2,25,0,4,231912,0,12931.96,10.18412,1,12,1,26.75456,0,0,0,0,26.75456,0,0,0,2,0,4,91.7,11.84267,0,100,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,100,9.467535,1.386294,3.286705,1 +6,2,25,0,5,231912,0,12931.96,11.18412,1,12,1,53.41472,4.539986,1.273885,0,0,59.22859,0,0,0,2,0,4,91.7,11.84267,0,100,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,100,9.467535,1.386294,4.081404,1 +6,2,25,0,1,231913,0,12931.96,36.53388,0,12,1,40.90909,9.039837,0,0,0,49.94893,0,0,0,2,0,4,94.1,3.4,0,84.1,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,84.1,9.467535,1.386294,3.911001,1 +6,2,25,0,2,231913,0,12931.96,37.53388,0,12,1,88.98265,0,0,0,0,88.98265,0,0,0,5,0,4,94.1,3.4,0,84.1,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,84.1,9.467535,1.386294,4.488441,1 +6,2,25,0,3,231913,0,12931.96,38.53388,0,12,1,16.33706,0,0,0,0,16.33706,0,0,0,1,0,4,94.1,3.4,0,84.1,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,84.1,9.467535,1.386294,2.793436,1 +6,2,25,0,4,231913,0,12931.96,39.53388,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,94.1,3.4,0,84.1,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,84.1,9.467535,1.386294,,0 +6,2,25,0,5,231913,0,12931.96,40.53388,0,12,1,0,.7678698,0,0,0,.7678698,0,0,0,0,0,4,94.1,3.4,0,84.1,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,84.1,9.467535,1.386294,-.2641351,1 +6,2,25,0,1,231914,0,12931.96,32.41889,1,12,1,0,4.075587,0,0,0,4.075587,0,0,0,0,0,4,81.9,6.9,0,79.5,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.5,9.467535,1.386294,1.405015,1 +6,2,25,0,2,231914,0,12931.96,33.41889,1,12,1,25.78528,0,0,0,0,25.78528,0,0,0,2,0,4,81.9,6.9,0,79.5,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.5,9.467535,1.386294,3.249804,1 +6,2,25,0,3,231914,0,12931.96,34.41889,1,12,1,43.63715,0,0,0,0,43.63715,0,0,0,2,0,4,81.9,6.9,0,79.5,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.5,9.467535,1.386294,3.775909,1 +6,2,25,0,4,231914,0,12931.96,35.41889,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.9,6.9,0,79.5,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.5,9.467535,1.386294,,0 +6,2,25,0,5,231914,0,12931.96,36.41889,1,12,1,0,.7714084,0,0,0,.7714084,0,0,0,0,0,4,81.9,6.9,0,79.5,1000,1000,0,0,1.386294,6.907755,0,3.258096,8.294049,0,0,0,79.5,9.467535,1.386294,-.2595374,1 +6,2,25,0,1,231915,0,12931.96,3.507187,1,12,1,11.51685,0,0,0,0,11.51685,0,0,0,1,0,4,81.35272,11.84267,0,85.2,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,85.2,9.467535,1.386294,2.443812,1 +6,2,25,0,2,231915,0,12931.96,4.507187,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,0,85.2,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,85.2,9.467535,1.386294,,0 +6,2,25,0,3,231915,0,12931.96,5.507187,1,12,1,13.75752,0,0,0,0,13.75752,0,0,0,1,0,4,81.35272,11.84267,0,85.2,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,85.2,9.467535,1.386294,2.621586,1 +6,2,25,0,4,231915,0,12931.96,6.507187,1,12,1,20.5506,0,0,0,0,20.5506,0,0,0,2,0,4,81.35272,11.84267,0,85.2,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,85.2,9.467535,1.386294,3.02289,1 +6,2,25,0,5,231915,0,12931.96,7.507187,1,12,1,22.82378,.7678698,0,0,0,23.59165,0,0,0,2,0,4,81.35272,11.84267,0,85.2,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,85.2,9.467535,1.386294,3.160893,1 +11,2,0,0,2,231922,0,4458.622,.652293,0,10,1,12.18673,0,0,0,0,12.18673,0,0,0,1,0,6,81.35272,11.84267,.0221239,,0,0,1,0,1.791759,0,0,0,0,0,0,0,76.97035,8.40282,1.791759,2.500348,1 +11,2,0,0,3,231922,0,4458.622,1.652293,0,10,1,21.87785,0,0,0,190.1413,212.0191,1,0,0,2,0,6,81.35272,11.84267,.0221239,,0,0,1,0,1.791759,0,0,0,0,0,0,0,76.97035,8.40282,1.791759,5.356677,1 +11,2,0,0,4,231922,0,4458.622,2.652293,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,81.35272,11.84267,.0221239,,0,0,1,0,1.791759,0,0,0,0,0,0,0,76.97035,8.40282,1.791759,,0 +11,2,0,0,5,231922,0,4458.622,3.652293,0,10,1,14.62866,0,0,0,0,14.62866,0,0,0,1,0,4,81.35272,11.84267,.0221239,,0,0,1,0,1.386294,0,0,0,0,0,0,0,76.97035,8.40282,1.386294,2.682982,1 +15,2,95,0,1,231925,0,8665.641,2.072553,1,11,1,49.66199,7.462298,0,0,0,57.12429,0,0,0,3,0,3,81.35272,11.84267,0,81.5,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,0,0,0,81.5,9.067237,1.098612,4.045229,1 +15,2,95,0,1,231926,0,8665.641,24.88706,1,11,1,52.00208,42.77171,0,0,741.6277,836.4014,1,0,0,2,0,3,58,20.7,1,68.2,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,68.2,9.067237,1.098612,6.729109,1 +11,2,0,0,1,231927,0,8505.572,24.22998,0,16,1,10.40042,0,0,0,0,10.40042,0,0,0,1,0,2,89.9,3.4,0,88.6,0,211.8,0,0,.6931472,5.355642,0,0,0,0,0,0,88.6,9.048594,.6931472,2.341846,1 +11,2,0,0,2,231927,0,8505.572,25.22998,0,16,1,16.72241,0,0,0,0,16.72241,0,0,0,1,0,2,89.9,3.4,0,88.6,0,211.8,0,0,.6931472,5.355642,0,0,0,0,0,0,88.6,9.048594,.6931472,2.81675,1 +11,2,0,0,3,231927,0,8505.572,26.22998,0,16,1,21.29061,0,0,0,0,21.29061,0,0,0,2,0,3,89.9,3.4,0,88.6,0,211.8,0,0,1.098612,5.355642,0,0,0,0,0,0,88.6,9.048594,1.098612,3.058266,1 +11,2,0,0,4,231927,0,8505.572,27.22998,0,16,1,124.0925,13.97686,14.77862,0,0,152.848,0,0,0,9,1,3,89.9,3.4,0,88.6,0,211.8,0,0,1.098612,5.355642,0,0,0,0,0,0,88.6,9.048594,1.098612,5.029444,1 +11,2,0,0,5,231927,0,8505.572,28.22998,0,16,1,32.63234,.6526468,0,5.438724,0,33.28499,0,0,1,3,0,4,89.9,3.4,0,88.6,0,211.8,0,0,1.386294,5.355642,0,0,0,0,0,0,88.6,9.048594,1.386294,3.505106,1 +11,2,0,0,1,231928,0,7068.035,.5886379,0,14,1,166.8227,13.31773,0,0,0,180.1404,0,0,0,15,0,3,81.35272,11.84267,0,85.2,0,98.2,1,0,1.098612,4.587006,0,0,0,0,0,0,85.2,8.86348,1.098612,5.193737,1 +11,2,0,0,2,231928,0,7068.035,1.588638,0,14,1,35.95318,6.349737,0,0,0,42.30291,0,0,0,4,0,3,81.35272,11.84267,0,85.2,0,98.2,1,0,1.098612,4.587006,0,0,0,0,0,0,85.2,8.86348,1.098612,3.744856,1 +11,2,0,0,3,231928,0,7068.035,2.588638,0,14,1,5.70676,4.192274,0,0,0,9.899035,0,0,0,1,0,3,81.35272,11.84267,0,85.2,0,98.2,1,0,1.098612,4.587006,0,0,0,0,0,0,85.2,8.86348,1.098612,2.292437,1 +13,2,0,0,1,231929,0,6242.815,22.20671,1,14,1,55.1222,0,35.94384,0,635.9334,726.9995,1,0,0,4,0,2,68.1,6.9,0,88.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,88.6,8.739347,.6931472,6.588926,1 +13,2,0,0,2,231929,0,6242.815,23.20671,1,14,1,10.03344,3.239369,0,0,0,13.27281,0,0,0,0,1,3,68.1,6.9,0,88.6,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,88.6,8.739347,1.098612,2.585718,1 +13,2,0,0,3,231929,0,6242.815,24.20671,1,14,1,55.31168,0,0,0,0,55.31168,0,0,0,5,1,3,68.1,6.9,0,88.6,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,88.6,8.739347,1.098612,4.012984,1 +18,2,25,0,1,231932,0,7165.396,.238193,0,12,1,20.80083,0,0,0,0,20.80083,0,0,0,3,0,2,81.35272,11.84267,.0221239,,744,744,1,0,.6931472,6.612041,0,3.258096,7.998335,0,0,0,76.97035,8.877158,.6931472,3.034993,1 +18,2,25,0,2,231932,0,7165.396,1.238193,0,12,1,36.31152,2.37936,0,0,0,38.69088,0,0,0,5,0,2,81.35272,11.84267,.0221239,,744,744,1,0,.6931472,6.612041,0,3.258096,7.998335,0,0,0,76.97035,8.877158,.6931472,3.655604,1 +18,2,25,0,3,231932,0,7165.396,2.238193,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,81.35272,11.84267,.0221239,,744,744,1,0,.6931472,6.612041,0,3.258096,7.998335,0,0,0,76.97035,8.877158,.6931472,,0 +13,2,0,0,1,231945,0,12936.07,20.67351,1,12,1,58.21741,16.15147,37.91345,0,0,112.2823,0,0,0,4,1,5,73.4,0,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,60.2,9.467853,1.609438,4.721016,1 +13,2,0,0,2,231945,0,12936.07,21.67351,1,12,1,35.03788,13.5464,0,0,0,48.58428,0,0,0,3,0,5,73.4,0,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,60.2,9.467853,1.609438,3.8833,1 +13,2,0,0,3,231945,0,12936.07,22.67351,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,73.4,0,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,60.2,9.467853,1.609438,,0 +13,2,0,0,4,231945,0,12936.07,23.67351,1,12,1,27.37298,0,39.81095,0,684.3836,751.5676,1,0,0,2,0,5,73.4,0,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,60.2,9.467853,1.609438,6.622161,1 +13,2,0,0,5,231945,0,12936.07,24.67351,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,73.4,0,0,60.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,60.2,9.467853,1.791759,,0 +11,2,0,0,1,231946,0,2650.44,15.17043,1,12,1,32.97269,0,35.47656,0,0,68.44925,0,0,0,1,1,2,84.6,0,0,85.2,0,0,1,1,.6931472,0,0,0,0,0,0,0,85.2,7.882858,.6931472,4.226093,1 +11,2,0,0,2,231946,0,2650.44,16.17043,1,12,1,97.77462,6.107955,0,0,0,103.8826,0,0,0,3,6,2,84.6,0,0,85.2,0,0,1,1,.6931472,0,0,0,0,0,0,0,85.2,7.882858,.6931472,4.643261,1 +11,2,0,0,3,231946,0,2650.44,17.17043,1,12,1,55.91677,0,0,0,0,55.91677,0,0,0,3,0,2,84.6,0,0,85.2,0,0,1,1,.6931472,0,0,0,0,0,0,0,85.2,7.882858,.6931472,4.023864,1 +13,2,0,0,1,231947,.0220994,703.8123,58.84189,0,12.75671,1,209.0932,5.486863,0,0,0,214.5801,0,0,0,3,0,2,75,10.3,0,62.5,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,62.5,6.557931,.6931472,5.368683,1 +13,2,0,0,2,231947,.0220994,703.8123,59.84189,0,12.75671,1,158.3807,0,258.5227,0,0,416.9034,0,0,0,4,1,2,75,10.3,0,62.5,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,62.5,6.557931,.6931472,6.032855,1 +13,2,0,0,3,231947,.0220994,703.8123,60.84189,0,12.75671,1,6.068487,0,0,0,0,6.068487,0,0,0,0,0,2,75,10.3,0,62.5,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,62.5,6.557931,.6931472,1.803109,1 +13,2,0,0,4,231947,.0220994,703.8123,61.84189,0,12.75671,1,0,0,12.23316,0,0,12.23316,0,0,0,0,0,2,75,10.3,0,62.5,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,62.5,6.557931,.6931472,2.504151,1 +13,2,0,0,5,231947,.0220994,703.8123,62.84189,0,12.75671,1,0,0,0,0,0,0,0,0,0,0,0,2,75,10.3,0,62.5,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,62.5,6.557931,.6931472,,0 +13,2,0,0,1,231948,.0220994,703.8123,55.00342,1,12.75671,1,123.6321,12.80268,4.121587,0,0,140.5564,0,0,0,5,0,2,79.3,24.1,1,80.7,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,80.7,6.557931,.6931472,4.945609,1 +13,2,0,0,2,231948,.0220994,703.8123,56.00342,1,12.75671,1,46.75663,4.019886,38.09659,0,0,88.87311,0,0,0,2,1,2,79.3,24.1,1,80.7,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,80.7,6.557931,.6931472,4.48721,1 +13,2,0,0,3,231948,.0220994,703.8123,57.00342,1,12.75671,1,120.0694,9.133073,0,0,0,129.2024,0,0,0,4,0,2,79.3,24.1,1,80.7,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,80.7,6.557931,.6931472,4.861381,1 +13,2,0,0,4,231948,.0220994,703.8123,58.00342,1,12.75671,1,18.11737,1.69358,0,0,0,19.81095,0,0,0,1,0,2,79.3,24.1,1,80.7,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,80.7,6.557931,.6931472,2.986235,1 +13,2,0,0,5,231948,.0220994,703.8123,59.00342,1,12.75671,1,149.8927,10.58676,36.46511,0,319.2021,516.1467,1,0,0,7,5,2,79.3,24.1,1,80.7,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,80.7,6.557931,.6931472,6.246391,1 +19,2,25,0,1,231949,0,1759.531,15.1896,1,11,1,14.94075,6.295724,0,0,0,21.23648,0,0,0,3,0,3,93.4,0,0,86.4,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,86.4,7.473371,1.098612,3.05572,1 +19,2,25,0,2,231949,0,1759.531,16.1896,1,11,1,8.049242,0,0,0,0,8.049242,0,0,0,1,0,3,93.4,0,0,86.4,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,86.4,7.473371,1.098612,2.085578,1 +19,2,25,0,3,231949,0,1759.531,17.1896,1,11,1,25.57434,6.246207,0,0,0,31.82055,0,0,0,4,0,3,93.4,0,0,86.4,1000,1000,1,1,1.098612,6.907755,0,3.258096,8.294049,0,0,0,86.4,7.473371,1.098612,3.460112,1 +19,2,25,0,4,231949,0,1759.531,18.1896,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,93.4,0,0,86.4,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,86.4,7.473371,1.098612,,0 +19,2,25,0,5,231949,0,1759.531,19.1896,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,93.4,0,0,86.4,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,86.4,7.473371,1.098612,,0 +19,2,25,0,1,231950,0,1759.531,9.09514,0,11,1,22.66873,7.805255,30.65945,0,0,61.13344,0,0,0,2,1,3,98.3,11.84267,0,100,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,100,7.473371,1.098612,4.113059,1 +19,2,25,0,2,231950,0,1759.531,10.09514,0,11,1,15.15152,11.33523,0,0,0,26.48674,0,0,0,3,0,3,98.3,11.84267,0,100,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,100,7.473371,1.098612,3.276644,1 +19,2,25,0,3,231950,0,1759.531,11.09514,0,11,1,13.0039,0,0,0,0,13.0039,0,0,0,1,0,3,98.3,11.84267,0,100,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,100,7.473371,1.098612,2.565249,1 +19,2,25,0,4,231950,0,1759.531,12.09514,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,98.3,11.84267,0,100,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,100,7.473371,1.098612,,0 +19,2,25,0,5,231950,0,1759.531,13.09514,0,11,1,8.944544,0,0,0,0,8.944544,0,0,0,1,0,3,98.3,11.84267,0,100,1000,1000,1,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,100,7.473371,1.098612,2.191044,1 +19,2,25,0,1,231951,0,1759.531,32.43806,1,11,1,180.4482,56.84184,4.889232,0,499.2272,741.4065,1,0,0,20,0,3,95.6,17.2,0,78.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.6,7.473371,1.098612,6.608549,1 +19,2,25,0,2,231951,0,1759.531,33.43806,1,11,1,67.47159,33.2339,0,0,0,100.7055,0,0,0,10,0,3,95.6,17.2,0,78.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.6,7.473371,1.098612,4.6122,1 +19,2,25,0,3,231951,0,1759.531,34.43806,1,11,1,211.8336,12.16732,0,0,0,224.0009,0,0,0,23,1,3,95.6,17.2,0,78.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.6,7.473371,1.098612,5.41165,1 +19,2,25,0,4,231951,0,1759.531,35.43806,1,11,1,393.3635,72.53643,0,0,3730.465,4196.365,2,0,0,12,0,3,95.6,17.2,0,78.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.6,7.473371,1.098612,8.341974,1 +19,2,25,0,5,231951,0,1759.531,36.43806,1,11,1,102.9517,11.40608,211.8605,87.01252,68.6941,394.9124,0,0,5,9,0,3,95.6,17.2,0,78.6,1000,1000,0,0,1.098612,6.907755,0,3.258096,8.294049,0,0,0,78.6,7.473371,1.098612,5.978664,1 +11,2,0,0,1,231952,0,8312.61,.0136893,0,12,1,53.09973,23.32076,0,0,0,76.42049,0,0,0,7,0,4,81.35272,11.84267,.0221239,,0,0,1,0,1.386294,0,0,0,0,0,0,0,76.97035,9.025649,1.386294,4.336251,1 +11,2,0,0,2,231952,0,8312.61,1.013689,0,12,1,47.42015,8.407863,3.685504,0,0,59.51351,0,0,0,6,0,4,81.35272,11.84267,.0221239,,0,0,1,0,1.386294,0,0,0,0,0,0,0,76.97035,9.025649,1.386294,4.086204,1 +11,2,0,0,3,231952,0,8312.61,2.013689,0,12,1,27.34731,5.802188,0,0,0,33.1495,0,0,0,3,0,4,81.35272,11.84267,.0221239,,0,0,1,0,1.386294,0,0,0,0,0,0,0,76.97035,9.025649,1.386294,3.501028,1 +14,2,95,0,1,231963,0,4582.405,22.05886,0,16,1,88.61082,4.233912,24.53013,0,0,117.3749,0,0,0,4,2,2,86.7,10.3,0,54.5,218,0,0,0,.6931472,0,0,4.564348,5.435788,0,0,0,54.5,8.430198,.6931472,4.765373,1 +14,2,95,0,2,231963,0,4582.405,23.05886,0,16,1,112.2832,4.439756,29.67651,0,0,146.3994,0,0,0,9,0,2,86.7,10.3,0,54.5,218,0,0,0,.6931472,0,0,4.564348,5.435788,0,0,0,54.5,8.430198,.6931472,4.986339,1 +14,2,95,0,3,231963,0,4582.405,24.05886,0,16,1,105.4385,8.22442,30.0086,0,0,143.6715,0,0,0,5,0,2,86.7,10.3,0,54.5,218,0,0,0,.6931472,0,0,4.564348,5.435788,0,0,0,54.5,8.430198,.6931472,4.96753,1 +17,2,25,0,1,231965,0,8665.641,26.36276,1,14,1,213.2789,40.78141,11.23596,0,741.8795,1007.176,1,0,0,10,4,3,71.3,13.8,1,79.5,189,534.24,0,0,1.098612,6.280845,0,3.258096,6.628041,0,0,0,79.5,9.067237,1.098612,6.914906,1 +17,2,25,0,2,231965,0,8665.641,27.36276,1,14,1,158.4623,49.04829,38.24191,0,0,245.7525,0,0,0,8,5,3,71.3,13.8,1,79.5,189,534.24,0,0,1.098612,6.280845,0,3.258096,6.628041,0,0,0,79.5,9.067237,1.098612,5.504325,1 +17,2,25,0,3,231965,0,8665.641,28.36276,1,14,1,83.8994,41.71539,0,21.49613,844.54,970.1548,1,0,1,7,0,3,71.3,13.8,1,79.5,189,534.24,0,0,1.098612,6.280845,0,3.258096,6.628041,0,0,0,79.5,9.067237,1.098612,6.877456,1 +11,2,0,0,1,231967,0,8807.625,15.10746,0,10,1,25.24472,1.488923,30.70067,0,0,57.43431,0,0,0,2,1,4,94.1,3.4,0,93.2,0,58.2,1,0,1.386294,4.063885,0,0,0,0,0,0,93.2,9.083487,1.386294,4.050642,1 +11,2,0,0,2,231967,0,8807.625,16.10746,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,94.1,3.4,0,93.2,0,58.2,1,0,1.386294,4.063885,0,0,0,0,0,0,93.2,9.083487,1.386294,,0 +11,2,0,0,3,231967,0,8807.625,17.10746,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,94.1,3.4,0,93.2,0,58.2,1,0,1.386294,4.063885,0,0,0,0,0,0,93.2,9.083487,1.386294,,0 +15,2,95,0,1,231970,1,7283.285,6.327173,0,11,1,19.40756,0,0,0,0,19.40756,0,0,0,1,0,4,46.7,11.84267,0,85.2,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,8.893475,1.386294,2.965663,1 +19,2,25,0,1,231973,1,11017.6,21.06776,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,81.9,3.4,0,68.2,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,68.2,9.30734,.6931472,,0 +19,2,25,0,2,231973,1,11017.6,22.06776,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,81.9,3.4,0,68.2,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,68.2,9.30734,.6931472,,0 +19,2,25,0,3,231973,1,11017.6,23.06776,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,81.9,3.4,0,68.2,1000,1000,0,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,68.2,9.30734,.6931472,,0 +18,2,25,0,1,231974,1,1,25.34976,1,11,1,61.67007,0,0,0,0,61.67007,0,0,0,1,0,2,76.6,6.9,0,81.8,333,0,0,0,.6931472,0,0,3.258096,7.194437,0,0,0,81.8,.6931472,.6931472,4.121799,1 +18,2,25,0,2,231974,1,1,26.34976,1,11,1,0,0,0,0,0,0,1,1,0,0,0,2,76.6,6.9,0,81.8,333,0,0,0,.6931472,0,0,3.258096,7.194437,0,0,0,81.8,.6931472,.6931472,,0 +18,2,25,0,3,231974,1,1,27.34976,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,76.6,6.9,0,81.8,333,0,0,0,1.098612,0,0,3.258096,7.194437,0,0,0,81.8,.6931472,1.098612,,0 +18,2,25,0,1,231975,1,1,8.85421,1,11,1,0,0,0,0,0,0,0,0,0,0,0,2,85,11.84267,0,90.7,333,0,1,1,.6931472,0,0,3.258096,7.194437,0,0,0,90.7,.6931472,.6931472,,0 +18,2,25,0,2,231975,1,1,9.85421,1,11,1,0,0,0,0,0,0,0,0,0,0,0,2,85,11.84267,0,90.7,333,0,1,1,.6931472,0,0,3.258096,7.194437,0,0,0,90.7,.6931472,.6931472,,0 +18,2,25,0,3,231975,1,1,10.85421,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,85,11.84267,0,90.7,333,0,1,1,1.098612,0,0,3.258096,7.194437,0,0,0,90.7,.6931472,1.098612,,0 +18,2,25,0,1,231976,1,144.2815,20.42984,1,12,1,0,11.1695,0,0,0,11.1695,0,0,0,0,0,1,66,3.4,0,81.8,240,0,0,0,0,0,0,3.258096,6.866933,0,0,0,81.8,4.978673,0,2.413187,1 +18,2,25,0,2,231976,1,144.2815,21.42984,1,12,1,16.57197,0,0,0,0,16.57197,0,0,0,1,0,1,66,3.4,0,81.8,240,0,0,0,0,0,0,3.258096,6.866933,0,0,0,81.8,4.978673,0,2.807713,1 +18,2,25,0,3,231976,1,144.2815,22.42984,1,12,1,18.20546,0,0,0,0,18.20546,0,0,0,1,0,1,66,3.4,0,81.8,240,0,0,0,0,0,0,3.258096,6.866933,0,0,0,81.8,4.978673,0,2.901722,1 +18,2,25,0,1,231977,1,1,35.61396,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,66.5,13.8,0,72.7,325,325,0,0,0,5.783825,0,3.258096,7.17012,0,0,0,72.7,.6931472,0,,0 +18,2,25,0,2,231977,1,1,36.61396,0,12,1,26.04167,0,0,0,0,26.04167,0,0,0,1,0,1,66.5,13.8,0,72.7,325,325,0,0,0,5.783825,0,3.258096,7.17012,0,0,0,72.7,.6931472,0,3.259698,1 +18,2,25,0,3,231977,1,1,37.61396,0,12,1,19.59254,0,0,0,0,19.59254,0,0,0,1,0,1,66.5,13.8,0,72.7,325,325,0,0,0,5.783825,0,3.258096,7.17012,0,0,0,72.7,.6931472,0,2.975149,1 +11,2,0,0,1,231980,0,7267.449,23.04175,0,12,1,78.82535,39.12931,0,0,0,117.9547,0,0,0,10,0,1,76.1,10.3,0,65.9,0,0,0,0,0,0,0,0,0,0,0,0,65.9,8.891298,0,4.7703,1 +11,2,0,0,2,231980,0,7267.449,24.04175,0,12,1,18.22917,0,0,0,0,18.22917,0,0,0,2,0,1,76.1,10.3,0,65.9,0,0,0,0,0,0,0,0,0,0,0,0,65.9,8.891298,0,2.903023,1 +11,2,0,0,3,231980,0,7267.449,25.04175,0,12,1,30.1257,1.729519,0,0,0,31.85522,0,0,0,4,0,1,76.1,10.3,0,65.9,0,0,0,0,0,0,0,0,0,0,0,0,65.9,8.891298,0,3.461201,1 +11,2,0,0,4,231980,0,7267.449,26.04175,0,12,1,5.907838,0,0,0,0,5.907838,0,0,0,1,0,2,76.1,10.3,0,65.9,0,0,0,0,.6931472,0,0,0,0,0,0,0,65.9,8.891298,.6931472,1.77628,1 +11,2,0,0,5,231980,0,7267.449,27.04175,0,12,1,65.83184,7.084079,0,0,0,72.91592,0,0,0,4,0,2,76.1,10.3,0,65.9,0,0,0,0,.6931472,0,0,0,0,0,0,0,65.9,8.891298,.6931472,4.289307,1 +17,2,25,0,1,231994,0,8221.701,30.10541,0,12.75671,1,60.01022,0,31.45557,68.94791,0,91.46578,0,0,6,1,1,2,76.6,13.8,1,69.3,250,250,0,0,.6931472,5.521461,0,3.258096,6.907755,0,0,0,69.3,9.014654,.6931472,4.515965,1 +17,2,25,0,2,231994,0,8221.701,31.10541,0,12.75671,1,69.47961,5.583685,0,14.0647,0,75.06329,0,0,1,4,0,2,76.6,13.8,1,69.3,250,250,0,0,.6931472,5.521461,0,3.258096,6.907755,0,0,0,69.3,9.014654,.6931472,4.318332,1 +17,2,25,0,3,231994,0,8221.701,32.10541,0,12.75671,1,38.69304,1.397249,37.73861,0,0,77.82889,0,0,0,2,1,2,76.6,13.8,1,69.3,250,250,0,0,.6931472,5.521461,0,3.258096,6.907755,0,0,0,69.3,9.014654,.6931472,4.354513,1 +6,2,25,0,1,232009,0,4692.082,.0136893,1,10,1,79.93648,8.073054,0,0,0,88.00953,0,0,0,11,0,5,81.35272,11.84267,.0221239,,360,360,1,1,1.609438,5.886104,0,3.258096,7.272398,0,0,0,76.97035,8.453845,1.609438,4.477445,1 +6,2,25,0,2,232009,0,4692.082,1.013689,1,10,1,82.64961,5.188224,0,0,253.668,341.5058,1,0,0,10,0,5,81.35272,11.84267,.0221239,,360,360,1,1,1.609438,5.886104,0,3.258096,7.272398,0,0,0,76.97035,8.453845,1.609438,5.833364,1 +6,2,25,0,3,232009,0,4692.082,2.013689,1,10,1,40.05341,7.098353,0,0,0,47.15176,0,0,0,7,0,5,81.35272,11.84267,.0221239,,360,360,1,1,1.609438,5.886104,0,3.258096,7.272398,0,0,0,76.97035,8.453845,1.609438,3.853371,1 +6,2,25,0,4,232009,0,4692.082,3.013689,1,10,1,30.90687,9.44693,0,0,0,40.3538,0,0,0,3,0,5,81.35272,11.84267,.0221239,,360,360,1,1,1.609438,5.886104,0,3.258096,7.272398,0,0,0,76.97035,8.453845,1.609438,3.697686,1 +6,2,25,0,5,232009,0,4692.082,4.013689,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,.0221239,,360,360,1,1,1.609438,5.886104,0,3.258096,7.272398,0,0,0,76.97035,8.453845,1.609438,,0 +13,2,0,0,2,232011,0,8926.687,.6632444,0,12,1,22.29762,0,0,0,0,22.29762,0,0,0,2,0,4,81.35272,11.84267,.0221239,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,76.97035,9.096912,1.386294,3.10448,1 +13,2,0,0,3,232011,0,8926.687,1.663244,0,12,1,7.637017,1.572327,0,0,0,9.209344,0,0,0,1,0,4,81.35272,11.84267,.0221239,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,76.97035,9.096912,1.386294,2.220219,1 +11,2,0,0,2,232013,0,8665.641,.8384668,0,10,1,61.19792,13.68371,0,0,0,74.88163,0,0,0,8,0,11,81.35272,11.84267,.0221239,,0,0,1,0,2.397895,0,0,0,0,0,0,0,76.97035,9.067237,2.397895,4.315908,1 +11,2,0,0,3,232013,0,8665.641,1.838467,0,10,1,84.3303,14.82445,0,0,388.925,488.0797,1,0,0,5,0,11,81.35272,11.84267,.0221239,,0,0,1,0,2.397895,0,0,0,0,0,0,0,76.97035,9.067237,2.397895,6.190479,1 +13,2,0,0,2,232016,0,6242.815,.8083504,0,14,1,122.7664,3.081701,0,29.86144,0,125.8481,0,0,2,7,0,3,81.35272,11.84267,.0221239,,300,300,1,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,76.97035,8.739347,1.098612,4.835075,1 +13,2,0,0,3,232016,0,6242.815,1.80835,0,14,1,14.37665,0,0,17.55926,0,14.37665,0,0,1,2,0,3,81.35272,11.84267,.0221239,,300,300,1,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,76.97035,8.739347,1.098612,2.665605,1 +15,2,95,0,2,232019,0,8665.641,.6002738,0,14,1,80.81992,0,0,0,0,80.81992,0,0,0,3,1,2,81.35272,11.84267,.0221239,,249.5,249.5,1,0,.6931472,5.519459,0,4.564348,5.570752,0,0,0,76.97035,9.067237,.6931472,4.392223,1 +15,2,95,0,3,232019,0,8665.641,1.600274,0,14,1,8.130081,3.206865,0,0,0,11.33695,0,0,0,1,0,2,81.35272,11.84267,.0221239,,249.5,249.5,1,0,.6931472,5.519459,0,4.564348,5.570752,0,0,0,76.97035,9.067237,.6931472,2.428067,1 +7,2,25,0,2,232022,0,6541.349,.3374401,1,12,1,32.18673,1.616708,0,0,0,33.80344,0,0,0,4,0,4,81.35272,11.84267,.0221239,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.97035,8.786052,1.386294,3.520563,1 +7,2,25,0,3,232022,0,6541.349,1.33744,1,12,1,104.8314,1.412944,0,0,0,106.2443,0,0,0,5,0,4,81.35272,11.84267,.0221239,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.97035,8.786052,1.386294,4.665741,1 +5,2,25,0,2,232028,0,8665.641,.7700205,0,16,1,19.11132,0,0,0,0,19.11132,0,0,0,2,0,4,81.35272,11.84267,.0221239,,548.75,623.75,1,0,1.386294,6.43575,0,3.258096,7.693937,0,0,0,76.97035,9.067237,1.386294,2.950281,1 +5,2,25,0,3,232028,0,8665.641,1.77002,0,16,1,11.41352,0,0,0,0,11.41352,0,0,0,1,0,4,81.35272,11.84267,.0221239,,548.75,623.75,1,0,1.386294,6.43575,0,3.258096,7.693937,0,0,0,76.97035,9.067237,1.386294,2.434799,1 +11,2,0,0,1,232031,0,1697.361,22.38741,0,16,1,93.84576,20.0715,0,0,0,113.9173,0,0,0,7,0,1,77.7,6.9,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,7.437419,0,4.735472,1 +11,2,0,0,2,232031,0,1697.361,23.38741,0,16,1,14.0647,0,15.00234,0,0,29.06704,0,0,0,0,1,1,77.7,6.9,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,7.437419,0,3.369605,1 +11,2,0,0,3,232031,0,1697.361,24.38741,0,16,1,10.74806,5.137575,15.04729,0,0,30.93293,0,0,0,1,0,1,77.7,6.9,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,7.437419,0,3.431821,1 +11,2,0,0,4,232031,0,1697.361,25.38741,0,16,1,11.63242,0,0,0,0,11.63242,0,0,0,1,0,1,77.7,6.9,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,7.437419,0,2.453796,1 +11,2,0,0,5,232031,0,1697.361,26.38741,0,16,1,12.73885,0,28.30856,0,0,41.04742,0,0,0,0,1,1,77.7,6.9,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,7.437419,0,3.714728,1 +11,2,0,0,2,232032,0,8124.927,.9507187,0,13,1,28.90588,2.603918,0,0,0,31.50979,0,0,0,2,1,3,81.35272,11.84267,.0221239,,0,0,1,0,1.098612,0,0,0,0,0,0,0,76.97035,9.002815,1.098612,3.450298,1 +11,2,0,0,3,232032,0,8124.927,1.950719,0,13,1,271.9666,0,0,0,0,271.9666,0,0,0,5,0,3,81.35272,11.84267,.0221239,,0,0,1,0,1.098612,0,0,0,0,0,0,0,76.97035,9.002815,1.098612,5.60568,1 +11,2,0,0,4,232032,0,8124.927,2.950719,0,13,1,22.5369,7.718389,0,0,0,30.25529,0,0,0,2,0,3,81.35272,11.84267,.0221239,,0,0,1,0,1.098612,0,0,0,0,0,0,0,76.97035,9.002815,1.098612,3.409671,1 +11,2,0,0,5,232032,0,8124.927,3.950719,0,13,1,69.97825,1.247281,0,0,0,71.22552,0,0,0,4,0,4,81.35272,11.84267,.0221239,,0,0,1,0,1.386294,0,0,0,0,0,0,0,76.97035,9.002815,1.386294,4.265851,1 +11,2,0,0,2,232034,0,3651.613,.4223135,1,12,1,32.23461,0,0,0,0,32.23461,0,0,0,3,1,4,81.35272,11.84267,.0221239,,0,0,1,1,1.386294,0,0,0,0,0,0,0,76.97035,8.203198,1.386294,3.473041,1 +11,2,0,0,3,232034,0,3651.613,1.422313,1,12,1,15.72327,0,0,0,0,15.72327,0,0,0,1,0,4,81.35272,11.84267,.0221239,,0,0,1,1,1.386294,0,0,0,0,0,0,0,76.97035,8.203198,1.386294,2.755142,1 +15,2,95,0,2,232035,0,8771.261,.3785079,1,12,1,131.4788,25.94924,0,0,0,157.428,0,0,0,15,0,3,81.35272,11.84267,.0221239,,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,0,0,0,76.97035,9.07935,1.098612,5.058968,1 +15,2,95,0,3,232035,0,8771.261,1.378508,1,12,1,329.5077,13.26107,9.936766,0,0,352.7055,0,0,0,12,0,3,81.35272,11.84267,.0221239,,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,0,0,0,76.97035,9.07935,1.098612,5.865633,1 +15,2,95,0,4,232035,0,8771.261,2.378508,1,12,1,262.0141,7.456576,0,0,0,269.4706,0,0,0,8,0,4,81.35272,11.84267,.0221239,,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,76.97035,9.07935,1.386294,5.596459,1 +15,2,95,0,5,232035,0,8771.261,3.378508,1,12,1,48.24888,8.129657,8.196721,0,0,64.57526,0,0,0,4,0,4,81.35272,11.84267,.0221239,,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,76.97035,9.07935,1.386294,4.167831,1 +11,2,0,0,2,232036,0,15428.15,.5674196,0,16,1,137.3069,23.09363,0,0,258.4652,418.8658,1,0,0,10,0,4,81.35272,11.84267,.0221239,,0,354.72,1,0,1.386294,5.871329,0,0,0,0,0,0,76.97035,9.644014,1.386294,6.037551,1 +11,2,0,0,3,232036,0,15428.15,1.56742,0,16,1,75.2114,10.85892,0,0,0,86.07031,0,0,0,6,0,4,81.35272,11.84267,.0221239,,0,354.72,1,0,1.386294,5.871329,0,0,0,0,0,0,76.97035,9.644014,1.386294,4.455164,1 +11,2,0,0,2,232041,0,10711.44,.1895962,0,16,1,72.23587,6.240786,0,0,0,78.47666,0,0,0,11,0,4,81.35272,11.84267,.0221239,,0,206.64,1,0,1.386294,5.330978,0,0,0,0,0,0,76.97035,9.27916,1.386294,4.362801,1 +11,2,0,0,3,232041,0,10711.44,1.189596,0,16,1,45.12306,26.36736,0,0,0,71.49043,0,0,0,6,0,4,81.35272,11.84267,.0221239,,0,206.64,1,0,1.386294,5.330978,0,0,0,0,0,0,76.97035,9.27916,1.386294,4.269564,1 +11,2,0,0,4,232041,0,10711.44,2.189596,0,16,1,27.71988,7.85744,0,0,0,35.57732,0,0,0,4,0,4,81.35272,11.84267,.0221239,,0,206.64,1,0,1.386294,5.330978,0,0,0,0,0,0,76.97035,9.27916,1.386294,3.571708,1 +11,2,0,0,5,232041,0,10711.44,3.189596,0,16,1,33.57089,2.993248,0,0,0,36.56414,0,0,0,3,0,4,81.35272,11.84267,.0221239,,0,206.64,1,0,1.386294,5.330978,0,0,0,0,0,0,76.97035,9.27916,1.386294,3.599068,1 +6,2,25,0,2,232042,0,6382.991,.4113621,1,13,1,78.4773,4.597364,0,0,0,83.07467,0,0,0,7,0,3,81.35272,11.84267,.0221239,,902.1,902.1,1,1,1.098612,6.804725,0,3.258096,8.19102,0,0,0,76.97035,8.761549,1.098612,4.41974,1 +6,2,25,0,3,232042,0,6382.991,1.411362,1,13,1,50.58717,0,0,0,0,50.58717,0,0,0,4,0,3,81.35272,11.84267,.0221239,,902.1,902.1,1,1,1.098612,6.804725,0,3.258096,8.19102,0,0,0,76.97035,8.761549,1.098612,3.923698,1 +13,2,0,0,1,232045,0,18432.84,45.26489,1,12,1,138.7385,14.09602,34.73953,0,0,187.5741,0,0,0,6,0,3,84.6,3.4,0,73.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.821943,1.098612,5.234174,1 +13,2,0,0,2,232045,0,18432.84,46.26489,1,12,1,68.23722,28.48101,0,0,0,96.71824,0,0,0,1,0,3,84.6,3.4,0,73.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.821943,1.098612,4.571802,1 +13,2,0,0,3,232045,0,18432.84,47.26489,1,12,1,121.4746,28.46088,.6448839,0,0,150.5804,0,0,0,5,0,3,84.6,3.4,0,73.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.821943,1.098612,5.014497,1 +13,2,0,0,4,232045,0,18432.84,48.26489,1,12,1,23.53625,16.45211,0,0,0,39.98837,0,0,0,1,0,3,84.6,3.4,0,73.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.821943,1.098612,3.688589,1 +13,2,0,0,5,232045,0,18432.84,49.26489,1,12,1,0,15.74664,0,0,0,15.74664,0,0,0,0,0,2,84.6,3.4,0,73.9,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.821943,.6931472,2.756627,1 +13,2,0,0,1,232046,0,18432.84,18.10267,0,11,1,27.14505,2.196119,0,0,0,29.34116,0,0,0,1,0,3,83,6.9,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,65.9,9.821943,1.098612,3.378991,1 +13,2,0,0,2,232046,0,18432.84,19.10267,0,11,1,13.59587,0,0,0,0,13.59587,0,0,0,1,0,3,83,6.9,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,65.9,9.821943,1.098612,2.609766,1 +13,2,0,0,3,232046,0,18432.84,20.10267,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,83,6.9,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,65.9,9.821943,1.098612,,0 +13,2,0,0,4,232046,0,18432.84,21.10267,0,11,1,32.57076,0,0,0,0,32.57076,0,0,0,2,0,3,83,6.9,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,65.9,9.821943,1.098612,3.483415,1 +11,2,0,0,2,232059,0,8665.641,.7043121,0,10,1,27.81723,0,0,0,0,27.81723,0,0,0,2,0,11,81.35272,11.84267,.0221239,,0,0,1,0,2.397895,0,0,0,0,0,0,0,76.97035,9.067237,2.397895,3.325656,1 +11,2,0,0,3,232059,0,8665.641,1.704312,0,10,1,8.669268,0,0,0,0,8.669268,0,0,0,1,0,11,81.35272,11.84267,.0221239,,0,0,1,0,2.397895,0,0,0,0,0,0,0,76.97035,9.067237,2.397895,2.159784,1 +13,2,0,0,2,232060,0,4092.669,.340178,1,13,1,42.95367,0,0,0,0,42.95367,0,0,0,4,0,4,81.35272,11.84267,.0221239,,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,76.97035,8.317197,1.386294,3.760122,1 +13,2,0,0,3,232060,0,4092.669,1.340178,1,13,1,23.92078,0,0,0,0,23.92078,0,0,0,1,0,4,81.35272,11.84267,.0221239,,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,76.97035,8.317197,1.386294,3.174748,1 +13,2,0,0,2,232065,0,9795.895,.4004107,0,12,1,48.53436,0,0,0,0,48.53436,0,0,0,3,0,3,81.35272,11.84267,.0221239,,300,312,1,0,1.098612,5.743003,1,4.564348,5.755076,0,0,0,76.97035,9.18982,1.098612,3.882272,1 +13,2,0,0,3,232065,0,9795.895,1.400411,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,.0221239,,300,312,1,0,1.098612,5.743003,1,4.564348,5.755076,0,0,0,76.97035,9.18982,1.098612,,0 +16,2,95,0,2,232075,0,5025.807,.8767967,1,13,1,44.03409,0,0,0,0,44.03409,0,0,0,4,0,2,81.35272,11.84267,.0221239,,1000,1000,1,1,.6931472,6.907755,0,4.564348,6.959049,0,0,0,76.97035,8.52254,.6931472,3.784964,1 +16,2,95,0,3,232075,0,5025.807,1.876797,1,13,1,51.36541,6.129172,0,0,0,57.49458,0,0,0,4,0,2,81.35272,11.84267,.0221239,,1000,1000,1,1,.6931472,6.907755,0,4.564348,6.959049,0,0,0,76.97035,8.52254,.6931472,4.051691,1 +14,2,95,0,2,232076,0,12958.94,.1594798,1,17,1,90.61294,14.34363,0,0,0,104.9566,0,0,0,9,0,4,81.35272,11.84267,.0221239,,815,815,1,1,1.386294,6.703188,0,4.564348,6.754481,0,0,0,76.97035,9.469619,1.386294,4.653547,1 +14,2,95,0,3,232076,0,12958.94,1.15948,1,17,1,303.2933,14.12995,0,0,0,317.4232,0,0,0,8,0,4,81.35272,11.84267,.0221239,,815,815,1,1,1.386294,6.703188,0,4.564348,6.754481,0,0,0,76.97035,9.469619,1.386294,5.760236,1 +11,2,0,0,2,232077,0,15661.58,.0253251,0,14,1,104.3626,17.13039,0,0,0,121.493,0,0,0,12,0,3,81.35272,11.84267,.0221239,,0,243.84,1,0,1.098612,5.496512,0,0,0,0,0,0,76.97035,9.65903,1.098612,4.799857,1 +11,2,0,0,3,232077,0,15661.58,1.025325,0,14,1,87.59659,14.19137,0,0,0,101.788,0,0,0,8,0,3,81.35272,11.84267,.0221239,,0,243.84,1,0,1.098612,5.496512,0,0,0,0,0,0,76.97035,9.65903,1.098612,4.622892,1 +7,2,25,0,2,232078,0,9759.531,.4852841,1,16,1,21.44935,0,0,0,0,21.44935,0,0,0,2,0,4,81.35272,11.84267,.0221239,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.97035,9.186102,1.386294,3.065694,1 +7,2,25,0,3,232078,0,9759.531,1.485284,1,16,1,13.81402,0,0,0,0,13.81402,0,0,0,1,0,4,81.35272,11.84267,.0221239,,1000,1000,1,1,1.386294,6.907755,0,3.258096,8.294049,0,0,0,76.97035,9.186102,1.386294,2.625684,1 +5,2,25,0,3,232087,1,10402.35,.9240246,0,12,1,32.81677,0,0,0,0,32.81677,0,0,0,5,0,5,81.35272,11.84267,.0221239,,966.45,966.45,1,0,1.609438,6.87363,0,3.258096,8.259924,0,0,0,76.97035,9.249883,1.609438,3.49094,1 +5,2,25,0,4,232087,1,10402.35,1.924025,0,12,1,42.7053,0,0,0,504.9395,547.6448,1,0,0,2,0,5,81.35272,11.84267,.0221239,,966.45,966.45,1,0,1.609438,6.87363,0,3.258096,8.259924,0,0,0,76.97035,9.249883,1.609438,6.305627,1 +5,2,25,0,5,232087,1,10402.35,2.924025,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.35272,11.84267,.0221239,,966.45,966.45,1,0,1.609438,6.87363,0,3.258096,8.259924,0,0,0,76.97035,9.249883,1.609438,,0 +11,2,0,0,2,232100,0,1,.0253251,1,13,1,263.4998,28.4731,0,0,0,291.9729,0,0,0,14,1,5,81.35272,11.84267,.0221239,,0,0,1,1,1.609438,0,0,0,0,0,0,0,76.97035,.6931472,1.609438,5.676661,1 +11,2,0,0,3,232100,0,1,1.025325,1,13,1,414.9596,44.43845,0,0,0,459.398,0,0,0,12,1,5,81.35272,11.84267,.0221239,,0,0,1,1,1.609438,0,0,0,0,0,0,0,76.97035,.6931472,1.609438,6.129917,1 +15,2,95,0,3,232107,0,10362.61,.9075975,0,12,1,58.15266,4.539295,0,0,0,62.69196,0,0,0,5,0,3,81.35272,11.84267,.0221239,,984.8,697.48,1,0,1.098612,6.547474,0,4.564348,6.943732,0,0,0,76.97035,9.246056,1.098612,4.138233,1 +15,2,95,0,4,232107,0,10362.61,1.907598,0,12,1,59.57403,0,0,0,0,59.57403,0,0,0,6,0,4,81.35272,11.84267,.0221239,,984.8,697.48,1,0,1.386294,6.547474,0,4.564348,6.943732,0,0,0,76.97035,9.246056,1.386294,4.08722,1 +15,2,95,0,5,232107,0,10362.61,2.907598,0,12,1,49.08718,0,0,0,0,49.08718,0,0,0,2,0,4,81.35272,11.84267,.0221239,,984.8,697.48,1,0,1.386294,6.547474,0,4.564348,6.943732,0,0,0,76.97035,9.246056,1.386294,3.893598,1 +11,2,0,0,2,232110,0,11768.33,.559206,0,17,1,37.14764,0,0,0,0,37.14764,0,0,0,4,0,4,81.35272,11.84267,.0221239,,0,388.64,1,0,1.386294,5.962654,0,0,0,0,0,0,76.97035,9.373252,1.386294,3.6149,1 +11,2,0,0,3,232110,0,11768.33,1.559206,0,17,1,22.38806,15.29851,0,0,0,37.68657,0,0,0,3,0,4,81.35272,11.84267,.0221239,,0,388.64,1,0,1.386294,5.962654,0,0,0,0,0,0,76.97035,9.373252,1.386294,3.629304,1 +13,2,0,0,3,232113,0,4309.091,.6529774,1,12,1,36.0257,4.575493,0,0,0,40.60119,0,0,0,3,0,2,81.35272,11.84267,.0221239,,150,0,1,1,.6931472,0,1,4.564348,5.061929,0,0,0,76.97035,8.368714,.6931472,3.703797,1 +13,2,0,0,4,232113,0,4309.091,1.652977,1,12,1,26.12537,0,0,0,0,26.12537,0,0,0,2,0,2,81.35272,11.84267,.0221239,,150,0,1,1,.6931472,0,1,4.564348,5.061929,0,0,0,76.97035,8.368714,.6931472,3.262907,1 +13,2,0,0,5,232113,0,4309.091,2.652977,1,12,1,29.46732,3.014734,0,0,0,32.48206,0,0,0,3,0,2,81.35272,11.84267,.0221239,,150,0,1,1,.6931472,0,1,4.564348,5.061929,0,0,0,76.97035,8.368714,.6931472,3.480688,1 +13,2,0,0,2,232116,0,5781.231,.4332649,0,13,1,20.7529,14.10714,0,0,0,34.86004,0,0,0,3,0,3,81.35272,11.84267,.0221239,,300,76.85,1,0,1.098612,4.341856,1,4.564348,5.755076,0,0,0,76.97035,8.662545,1.098612,3.551341,1 +13,2,0,0,3,232116,0,5781.231,1.433265,0,13,1,42.27859,18.51802,22.85714,0,0,83.65376,0,0,0,5,0,3,81.35272,11.84267,.0221239,,300,76.85,1,0,1.098612,4.341856,1,4.564348,5.755076,0,0,0,76.97035,8.662545,1.098612,4.426686,1 +16,2,95,0,2,232142,0,4181.818,.4031485,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,81.35272,11.84267,.0221239,,848.4,848.4,1,1,.6931472,6.743352,0,4.564348,6.794645,0,0,0,76.97035,8.33874,.6931472,,0 +16,2,95,0,3,232142,0,4181.818,1.403149,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,81.35272,11.84267,.0221239,,848.4,848.4,1,1,.6931472,6.743352,0,4.564348,6.794645,0,0,0,76.97035,8.33874,.6931472,,0 +16,2,95,0,4,232142,0,4181.818,2.403148,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,81.35272,11.84267,.0221239,,848.4,848.4,1,1,.6931472,6.743352,0,4.564348,6.794645,0,0,0,76.97035,8.33874,.6931472,,0 +16,2,95,0,5,232142,0,4181.818,3.403148,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,81.35272,11.84267,.0221239,,848.4,848.4,1,1,.6931472,6.743352,0,4.564348,6.794645,0,0,0,76.97035,8.33874,.6931472,,0 +13,2,0,0,3,232147,0,8664.517,.6748802,1,12,1,18.97019,14.08762,0,0,0,33.05782,0,0,0,3,0,4,81.35272,11.84267,.0221239,,450,300,1,1,1.386294,5.703783,1,4.564348,6.160541,0,0,0,76.97035,9.067107,1.386294,3.498258,1 +13,2,0,0,3,232159,0,8665.641,.5982204,0,12,1,13.5825,0,0,0,0,13.5825,0,0,0,2,0,5,81.35272,11.84267,.0221239,,450,275.27,1,0,1.609438,5.617753,1,4.564348,6.160541,0,0,0,76.97035,9.067237,1.609438,2.608782,1 +13,2,0,0,4,232159,0,8665.641,1.59822,0,12,1,16.67361,0,0,0,0,16.67361,0,0,0,2,0,5,81.35272,11.84267,.0221239,,450,275.27,1,0,1.609438,5.617753,1,4.564348,6.160541,0,0,0,76.97035,9.067237,1.609438,2.813828,1 +13,2,0,0,5,232159,0,8665.641,2.59822,0,12,1,24.66242,4.51988,0,0,0,29.18229,0,0,0,2,0,5,81.35272,11.84267,.0221239,,450,275.27,1,0,1.609438,5.617753,1,4.564348,6.160541,0,0,0,76.97035,9.067237,1.609438,3.373562,1 +11,2,0,0,3,232184,0,9883.284,.2806297,1,12,1,105.6677,10.70216,15.14456,0,0,131.5145,0,0,0,10,0,3,81.35272,11.84267,.0221239,,0,0,1,1,1.098612,0,0,0,0,0,0,0,76.97035,9.198701,1.098612,4.879117,1 +11,2,0,0,3,232187,0,5309.091,.6310746,0,16,1,28.92746,2.202937,0,0,0,31.1304,0,0,0,2,0,5,81.35272,11.84267,.0221239,,0,0,1,0,1.609438,0,0,0,0,0,0,0,76.97035,8.577364,1.609438,3.438185,1 +13,2,0,0,2,232188,0,8560.704,.1211499,1,11,1,43.95604,0,0,0,0,43.95604,0,0,0,7,0,3,81.35272,11.84267,.0221239,,300,300,1,1,1.098612,5.703783,1,4.564348,5.755076,0,0,0,76.97035,9.055055,1.098612,3.78319,1 +13,2,0,0,3,232188,0,8560.704,1.12115,1,11,1,7.901668,0,0,0,0,7.901668,0,0,0,1,0,4,81.35272,11.84267,.0221239,,300,300,1,1,1.386294,5.703783,1,4.564348,5.755076,0,0,0,76.97035,9.055055,1.386294,2.067074,1 +17,2,25,0,3,232195,0,7324.927,.6557153,1,12,1,116.3301,15.41264,0,0,0,131.7428,0,0,0,12,0,3,81.35272,11.84267,.0221239,,568.05,568.05,1,1,1.098612,6.342209,0,3.258096,7.728504,0,0,0,76.97035,8.899175,1.098612,4.880851,1 +13,2,0,0,3,232204,0,3079.179,.4887064,0,16,1,57.18736,0,0,0,0,57.18736,0,0,0,1,0,5,81.35272,11.84267,.0221239,,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,76.97035,8.032743,1.609438,4.046333,1 +6,2,25,0,3,232209,0,12080.35,.6721424,0,14,1,47.13656,0,0,0,0,47.13656,0,0,0,5,0,2,81.35272,11.84267,.0221239,,1000,1000,1,0,.6931472,6.907755,0,3.258096,8.294049,0,0,0,76.97035,9.399418,.6931472,3.853049,1 +16,2,95,0,3,232211,0,17438.12,.4339494,1,17,1,100.5786,1.958166,0,0,0,102.5367,0,0,0,12,1,2,81.35272,11.84267,.0221239,,1000,1000,1,1,.6931472,6.907755,0,4.564348,6.959049,0,0,0,76.97035,9.766472,.6931472,4.630221,1 +6,2,25,0,3,232230,0,1847.507,.6173853,1,12,1,64.08545,31.94927,0,0,0,96.03471,0,0,0,6,0,2,81.35272,11.84267,.0221239,,40,0,1,1,.6931472,0,0,3.258096,5.075174,0,0,0,76.97035,7.522134,.6931472,4.56471,1 +11,2,0,0,3,232232,0,2519.648,.3381246,0,11,1,35.60647,1.581312,0,0,3282.367,3319.555,1,0,0,0,0,6,81.35272,11.84267,.0221239,,0,0,1,0,1.791759,0,0,0,0,0,0,0,76.97035,7.832272,1.791759,8.107586,1 +13,2,0,0,3,232239,1,8665.641,.1136208,0,12,1,25.20966,0,0,0,0,25.20966,0,0,0,3,0,5,81.35272,11.84267,.0221239,,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,76.97035,9.067237,1.609438,3.227227,1 +18,2,25,0,3,232249,1,1,.5982204,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,81.35272,11.84267,.0221239,,333,0,1,1,1.098612,0,0,3.258096,7.194437,0,0,0,76.97035,.6931472,1.098612,,0 +16,2,95,0,3,232253,0,7921.408,.4531143,1,12,1,39.50834,4.367867,0,0,0,43.87621,0,0,0,6,0,6,81.35272,11.84267,.0221239,,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,76.97035,8.97745,1.791759,3.781372,1 +16,2,95,0,4,232253,0,7921.408,1.453114,1,12,1,8.775429,0,0,0,0,8.775429,0,0,0,1,0,6,81.35272,11.84267,.0221239,,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,76.97035,8.97745,1.791759,2.171956,1 +16,2,95,0,5,232253,0,7921.408,2.453114,1,12,1,21.02973,0,1.087745,0,0,22.11748,0,0,0,1,0,6,81.35272,11.84267,.0221239,,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,76.97035,8.97745,1.791759,3.096368,1 +11,2,0,0,3,232257,0,8224.634,.2587269,1,12,1,46.94519,10.26954,0,0,0,57.21473,0,0,0,4,0,4,81.35272,11.84267,.0221239,,0,0,1,1,1.386294,0,0,0,0,0,0,0,76.97035,9.015011,1.386294,4.046812,1 +11,2,0,0,3,232261,0,6920.234,.2258727,1,12,1,75.92345,7.948376,0,0,0,83.87183,0,0,0,7,1,4,81.35272,11.84267,.0221239,,0,325.68,1,1,1.386294,5.785915,0,0,0,0,0,0,76.97035,8.842349,1.386294,4.42929,1 +11,2,0,0,4,232261,0,6920.234,1.225873,1,12,1,132.6149,10.98821,17.98292,0,0,161.586,0,0,0,10,0,4,81.35272,11.84267,.0221239,,0,325.68,1,1,1.386294,5.785915,0,0,0,0,0,0,76.97035,8.842349,1.386294,5.085038,1 +11,2,0,0,5,232261,0,6920.234,2.225873,1,12,1,112.5916,8.955278,0,0,0,121.5469,0,0,0,6,0,4,81.35272,11.84267,.0221239,,0,325.68,1,1,1.386294,5.785915,0,0,0,0,0,0,76.97035,8.842349,1.386294,4.800301,1 +13,2,0,0,3,232279,0,8560.704,.3819302,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,81.35272,11.84267,.0221239,,300,300,1,1,1.386294,5.703783,1,4.564348,5.755076,0,0,0,76.97035,9.055055,1.386294,,0 +13,2,0,0,3,232290,0,1759.531,.0780287,1,10,1,62.3053,5.460614,0,0,0,67.76591,0,0,0,6,0,4,81.35272,11.84267,.0221239,,300,300,1,1,1.386294,5.703783,1,4.564348,5.755076,0,0,0,76.97035,7.473371,1.386294,4.216059,1 +13,2,0,0,3,232291,0,1759.531,.0780287,0,10,1,101.1348,17.74811,0,0,0,118.883,0,0,0,9,0,4,81.35272,11.84267,.0221239,,300,300,1,0,1.386294,5.703783,1,4.564348,5.755076,0,0,0,76.97035,7.473371,1.386294,4.77814,1 +11,2,0,0,3,232292,0,8505.572,.2067077,1,13,1,24.14399,0,0,0,0,24.14399,0,0,0,3,0,3,81.35272,11.84267,.0221239,,0,211.8,1,1,1.098612,5.355642,0,0,0,0,0,0,76.97035,9.048594,1.098612,3.184035,1 +11,2,0,0,4,232292,0,8505.572,1.206708,1,13,1,49.86039,0,0,0,0,49.86039,0,0,0,6,0,3,81.35272,11.84267,.0221239,,0,211.8,1,1,1.098612,5.355642,0,0,0,0,0,0,76.97035,9.048594,1.098612,3.909227,1 +11,2,0,0,5,232292,0,8505.572,2.206708,1,13,1,28.28136,4.002901,0,0,0,32.28426,0,0,0,3,0,4,81.35272,11.84267,.0221239,,0,211.8,1,1,1.386294,5.355642,0,0,0,0,0,0,76.97035,9.048594,1.386294,3.47458,1 +11,2,0,0,3,232325,0,8665.641,.1848049,0,10,1,5.20156,6.09016,0,0,0,11.29172,0,0,0,1,0,11,81.35272,11.84267,.0221239,,0,0,1,0,2.397895,0,0,0,0,0,0,0,76.97035,9.067237,2.397895,2.42407,1 +11,2,0,0,4,232339,0,11449.27,.7686516,0,15,1,126.1592,30.46779,0,0,0,156.627,0,0,0,7,15,3,81.35272,11.84267,.0221239,,0,0,1,0,1.098612,0,0,0,0,0,0,0,76.97035,9.345768,1.098612,5.053867,1 +11,2,0,0,5,232339,0,11449.27,1.768652,0,15,1,20.69475,7.22099,0,0,0,27.91574,0,0,0,2,1,3,81.35272,11.84267,.0221239,,0,0,1,0,1.098612,0,0,0,0,0,0,0,76.97035,9.345768,1.098612,3.329191,1 +15,2,95,0,4,232376,0,10362.61,.5304586,0,12,1,64.28867,0,0,0,0,64.28867,0,0,0,6,0,4,81.35272,11.84267,.0221239,,984.8,697.48,1,0,1.386294,6.547474,0,4.564348,6.943732,0,0,0,76.97035,9.246056,1.386294,4.163383,1 +15,2,95,0,5,232376,0,10362.61,1.530459,0,12,1,23.24888,0,0,0,0,23.24888,0,0,0,2,0,4,81.35272,11.84267,.0221239,,984.8,697.48,1,0,1.386294,6.547474,0,4.564348,6.943732,0,0,0,76.97035,9.246056,1.386294,3.146257,1 +14,2,95,0,4,232409,0,10179.47,.2758385,0,12,1,71.2797,15.3564,0,0,0,86.6361,0,0,0,8,0,6,81.35272,11.84267,.0221239,,835.7,835.7,1,0,1.791759,6.72827,0,4.564348,6.779563,0,0,0,76.97035,9.228227,1.791759,4.461717,1 +14,2,95,0,5,232409,0,10179.47,1.275838,0,12,1,101.0503,4.928732,0,0,0,105.979,0,0,0,6,0,6,81.35272,11.84267,.0221239,,835.7,835.7,1,0,1.791759,6.72827,0,4.564348,6.779563,0,0,0,76.97035,9.228227,1.791759,4.663241,1 +11,2,0,0,4,232412,0,7267.449,.7412731,1,12,1,80.74045,9.314691,0,0,0,90.05514,0,0,0,11,0,2,81.35272,11.84267,.0221239,,0,0,1,1,.6931472,0,0,0,0,0,0,0,76.97035,8.891298,.6931472,4.500422,1 +11,2,0,0,5,232412,0,7267.449,1.741273,1,12,1,13.59571,4.722719,0,0,0,18.31843,0,0,0,2,0,2,81.35272,11.84267,.0221239,,0,0,1,1,.6931472,0,0,0,0,0,0,0,76.97035,8.891298,.6931472,2.907907,1 +15,2,95,0,4,232421,0,8771.261,.2539357,0,12,1,21.71216,1.645988,0,0,0,23.35815,0,0,0,2,0,4,81.35272,11.84267,.0221239,,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,76.97035,9.07935,1.386294,3.150946,1 +15,2,95,0,5,232421,0,8771.261,1.253936,0,12,1,22.54098,2.600596,0,0,0,25.14158,0,0,0,2,0,4,81.35272,11.84267,.0221239,,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,76.97035,9.07935,1.386294,3.224523,1 +13,2,0,0,4,232451,0,9796.48,.2128679,0,15,1,111.3257,2.806019,0,0,0,114.1318,0,0,0,12,0,3,81.35272,11.84267,.0221239,,300,300,1,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,76.97035,9.18988,1.098612,4.737354,1 +13,2,0,0,5,232451,0,9796.48,1.212868,0,15,1,301.5579,0,0,0,0,301.5579,0,0,0,8,0,3,81.35272,11.84267,.0221239,,300,300,1,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,76.97035,9.18988,1.098612,5.708962,1 +13,2,0,0,5,232487,0,12936.07,.9993156,0,12,1,22.18247,6.862254,0,0,0,29.04472,0,0,0,3,0,6,81.35272,11.84267,.0221239,,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,76.97035,9.467853,1.791759,3.368837,1 +14,2,95,0,5,232489,0,8577.126,.8350445,1,12.75671,1,103.3515,3.041894,0,0,0,106.3934,0,0,0,8,0,3,81.35272,11.84267,.0221239,,765,765,1,1,1.098612,6.639876,0,4.564348,6.691169,0,0,0,76.97035,9.056971,1.098612,4.667144,1 +11,2,0,0,5,232504,0,8124.927,.9336071,0,13,1,59.46338,10.09065,0,0,561.3452,630.8992,1,0,0,7,0,4,81.35272,11.84267,.0221239,,0,0,1,0,1.386294,0,0,0,0,0,0,0,76.97035,9.002815,1.386294,6.447146,1 +11,2,0,0,5,232596,0,8505.572,.0958248,0,13,1,48.94851,9.60116,0,0,153.2995,211.8492,1,0,0,7,0,4,81.35272,11.84267,.0221239,,0,211.8,1,0,1.386294,5.355642,0,0,0,0,0,0,76.97035,9.048594,1.386294,5.355875,1 +6,3,25,1,1,325007,0,10339.59,39.75907,0,8,1,70.58218,15.22411,127.254,0,0,213.0603,0,0,0,6,1,5,77.1,6.9,0,59.1,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,59.1,9.243833,1.609438,5.361575,1 +6,3,25,1,2,325007,0,10339.59,40.75907,0,8,1,14.20455,2.793561,10.41667,0,0,27.41477,0,0,0,1,0,5,77.1,6.9,0,59.1,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,59.1,9.243833,1.609438,3.311082,1 +6,3,25,1,3,325007,0,10339.59,41.75907,0,8,1,34.24361,7.98873,0,0,0,42.23234,0,0,0,2,0,5,77.1,6.9,0,59.1,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,59.1,9.243833,1.609438,3.743186,1 +6,3,25,1,1,325008,0,10339.59,16.51745,1,12,1,6.18238,1.262236,0,0,0,7.444616,0,0,0,1,0,5,86.2,3.4,0,73.9,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,73.9,9.243833,1.609438,2.007491,1 +6,3,25,1,2,325008,0,10339.59,17.51745,1,12,1,78.26704,12.92614,0,0,0,91.19318,0,0,0,3,0,5,86.2,3.4,0,73.9,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,73.9,9.243833,1.609438,4.51298,1 +6,3,25,1,3,325008,0,10339.59,18.51745,1,12,1,6.935414,0,0,0,0,6.935414,0,0,0,1,0,5,86.2,3.4,0,73.9,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,73.9,9.243833,1.609438,1.936641,1 +6,3,25,1,1,325009,0,10339.59,14.02327,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,78.7,0,0,84.1,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,84.1,9.243833,1.609438,,0 +6,3,25,1,2,325009,0,10339.59,15.02327,1,12,1,30.49242,0,0,0,0,30.49242,0,0,0,2,0,5,78.7,0,0,84.1,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,84.1,9.243833,1.609438,3.417478,1 +6,3,25,1,3,325009,0,10339.59,16.02327,1,12,1,262.4621,13.13394,0,0,2120.551,2396.146,1,0,0,9,1,5,78.7,0,0,84.1,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,84.1,9.243833,1.609438,7.781617,1 +6,3,25,1,1,325010,0,10339.59,7.378508,1,12,1,22.66873,2.189593,0,0,0,24.85832,0,0,0,2,0,5,80,9.967326,0,88.9,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.9,9.243833,1.609438,3.213192,1 +6,3,25,1,2,325010,0,10339.59,8.378508,1,12,1,62.31061,3.219697,.3314394,0,0,65.86174,0,0,0,5,0,5,80,9.967326,0,88.9,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.9,9.243833,1.609438,4.187558,1 +6,3,25,1,3,325010,0,10339.59,9.378508,1,12,1,84.91547,0,.8669267,0,0,85.7824,0,0,0,1,0,5,80,9.967326,0,88.9,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.9,9.243833,1.609438,4.451814,1 +6,3,25,1,1,325011,0,10339.59,37.56057,1,12,1,468.3874,9.53117,0,0,0,477.9186,0,0,0,2,0,5,56.4,17.2,1,54.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.243833,1.609438,6.16944,1 +6,3,25,1,2,325011,0,10339.59,38.56057,1,12,1,43.08712,18.13447,0,0,0,61.22159,0,0,0,1,8,5,56.4,17.2,1,54.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.243833,1.609438,4.1145,1 +6,3,25,1,3,325011,0,10339.59,39.56057,1,12,1,35.97746,22.28002,0,0,0,58.25748,0,0,0,2,6,5,56.4,17.2,1,54.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.243833,1.609438,4.064872,1 +13,3,0,0,1,325022,0,9470.381,23.85216,0,16,1,7.727975,0,0,0,0,7.727975,0,0,0,0,1,2,87.2,0,0,77.3,300,465.96,0,0,.6931472,6.1441,1,4.564348,5.755076,0,0,0,77.3,9.15603,.6931472,2.044847,1 +13,3,0,0,2,325022,0,9470.381,24.85216,0,16,1,66.28788,8.451705,4.024621,0,0,78.76421,0,0,0,3,0,2,87.2,0,0,77.3,300,465.96,0,0,.6931472,6.1441,1,4.564348,5.755076,0,0,0,77.3,9.15603,.6931472,4.366458,1 +13,3,0,0,3,325022,0,9470.381,25.85216,0,16,1,248.5479,0,0,0,0,248.5479,0,0,0,3,9,2,87.2,0,0,77.3,300,465.96,0,0,.6931472,6.1441,1,4.564348,5.755076,0,0,0,77.3,9.15603,.6931472,5.515635,1 +13,3,0,0,1,325023,0,9470.381,23.82204,1,16,1,62.13292,5.641422,0,0,0,67.77435,0,0,0,4,1,2,85.1,10.3,0,89.8,300,465.96,0,0,.6931472,6.1441,1,4.564348,5.755076,0,0,0,89.8,9.15603,.6931472,4.216184,1 +13,3,0,0,2,325023,0,9470.381,24.82204,1,16,1,53.97727,14.34659,0,0,0,68.32386,0,0,0,6,0,2,85.1,10.3,0,89.8,300,465.96,0,0,.6931472,6.1441,1,4.564348,5.755076,0,0,0,89.8,9.15603,.6931472,4.224259,1 +13,3,0,0,3,325023,0,9470.381,25.82204,1,16,1,282.1847,25.19723,0,0,566.8618,874.2436,1,1,0,1,0,2,85.1,10.3,0,89.8,300,465.96,0,0,.6931472,6.1441,1,4.564348,5.755076,0,0,0,89.8,9.15603,.6931472,6.773359,1 +11,3,0,1,1,325042,0,3679.765,8.071184,1,13,1,88.86619,48.381,28.08989,0,0,165.3371,0,0,0,6,1,5,83.3,9.967326,0,70.4,0,1047.24,1,1,1.609438,6.953913,0,0,0,0,0,0,70.4,8.210876,1.609438,5.107986,1 +11,3,0,1,2,325042,0,3679.765,9.071184,1,13,1,20.1594,46.4557,13.94749,0,0,80.56259,0,0,0,2,0,6,83.3,9.967326,0,70.4,0,1047.24,1,1,1.791759,6.953913,0,0,0,0,0,0,70.4,8.210876,1.791759,4.389034,1 +11,3,0,1,3,325042,0,3679.765,10.07118,1,13,1,34.39381,69.88392,10.64058,0,0,114.9183,0,0,0,3,0,6,83.3,9.967326,0,70.4,0,1047.24,1,1,1.791759,6.953913,0,0,0,0,0,0,70.4,8.210876,1.791759,4.744222,1 +11,3,0,1,1,325043,0,3679.765,31.99726,1,13,1,39.32584,17.36976,28.72829,0,710.1022,795.5261,1,0,0,2,1,5,75,6.9,1,55.7,0,1047.24,0,0,1.609438,6.953913,0,0,0,0,0,0,55.7,8.210876,1.609438,6.679004,1 +11,3,0,1,2,325043,0,3679.765,32.99726,1,13,1,14.53352,17.90436,11.72058,0,0,44.15846,0,0,0,1,1,6,75,6.9,1,55.7,0,1047.24,0,0,1.791759,6.953913,0,0,0,0,0,0,55.7,8.210876,1.791759,3.787785,1 +11,3,0,1,3,325043,0,3679.765,33.99726,1,13,1,696.5047,60.77386,36.02752,25.79536,515.5245,1308.831,1,0,1,37,0,6,75,6.9,1,55.7,0,1047.24,0,0,1.791759,6.953913,0,0,0,0,0,0,55.7,8.210876,1.791759,7.176889,1 +11,3,0,1,1,325044,0,3679.765,28.58043,0,8,1,23.36568,11.36364,26.04699,0,0,60.7763,0,0,0,1,1,5,86.2,6.9,0,78.6,0,1047.24,0,0,1.609438,6.953913,0,0,0,0,0,0,78.6,8.210876,1.609438,4.1072,1 +11,3,0,1,2,325044,0,3679.765,29.58043,0,8,1,135.068,6.04782,0,0,0,141.1158,0,0,0,3,1,6,86.2,6.9,0,78.6,0,1047.24,0,0,1.791759,6.953913,0,0,0,0,0,0,78.6,8.210876,1.791759,4.949581,1 +11,3,0,1,3,325044,0,3679.765,30.58043,0,8,1,98.8822,9.677558,23.64574,0,0,132.2055,0,0,0,1,1,6,86.2,6.9,0,78.6,0,1047.24,0,0,1.791759,6.953913,0,0,0,0,0,0,78.6,8.210876,1.791759,4.884357,1 +11,3,0,1,1,325045,0,3679.765,6.951403,1,13,1,46.98672,10.98059,0,0,0,57.96731,0,0,0,6,0,5,81.7,9.967326,1,63,0,1047.24,1,1,1.609438,6.953913,0,0,0,0,0,0,63,8.210876,1.609438,4.059879,1 +11,3,0,1,2,325045,0,3679.765,7.951403,1,13,1,48.75762,17.25738,0,0,0,66.015,0,0,0,7,1,6,81.7,9.967326,1,63,0,1047.24,1,1,1.791759,6.953913,0,0,0,0,0,0,63,8.210876,1.791759,4.189882,1 +11,3,0,1,3,325045,0,3679.765,8.951404,1,13,1,229.8796,32.2012,0,0,0,262.0808,0,0,0,13,0,6,81.7,9.967326,1,63,0,1047.24,1,1,1.791759,6.953913,0,0,0,0,0,0,63,8.210876,1.791759,5.568653,1 +10,3,50,1,1,325046,0,4042.229,14.2204,0,9,1,7.727975,4.121587,0,0,0,11.84956,0,0,0,1,0,7,70.7,0,0,79.5,1000,1000,1,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,79.5,8.304799,1.94591,2.472291,1 +10,3,50,1,2,325046,0,4042.229,15.2204,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,70.7,0,0,79.5,1000,1000,1,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,79.5,8.304799,1.94591,,0 +10,3,50,1,3,325046,0,4042.229,16.2204,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,70.7,0,0,79.5,1000,1000,1,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,79.5,8.304799,1.94591,,0 +10,3,50,1,1,325047,0,4042.229,8.804928,1,9,1,2.575992,3.19423,0,0,0,5.770222,0,0,0,1,0,7,91.7,9.967326,0,74.1,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,1,0,0,74.1,8.304799,1.94591,1.75271,1 +10,3,50,1,2,325047,0,4042.229,9.804928,1,9,1,0,0,0,0,0,0,0,0,0,0,0,7,91.7,9.967326,0,74.1,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,1,0,0,74.1,8.304799,1.94591,,0 +10,3,50,1,3,325047,0,4042.229,10.80493,1,9,1,6.501951,3.5544,0,0,0,10.05635,0,0,0,1,0,7,91.7,9.967326,0,74.1,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,1,0,0,74.1,8.304799,1.94591,2.308204,1 +10,3,50,1,1,325048,0,4042.229,44.73922,1,9,1,230.0155,28.46471,35.03349,0,0,293.5136,0,0,0,4,4,7,61.2,10.3,0,76.2,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,76.2,8.304799,1.94591,5.681924,1 +10,3,50,1,2,325048,0,4042.229,45.73922,1,9,1,14.20455,31.10795,0,0,0,45.3125,0,0,0,2,0,7,61.2,10.3,0,76.2,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,76.2,8.304799,1.94591,3.813583,1 +10,3,50,1,3,325048,0,4042.229,46.73922,1,9,1,8.669268,37.06112,0,0,0,45.73038,0,0,0,1,0,7,61.2,10.3,0,76.2,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,76.2,8.304799,1.94591,3.822763,1 +10,3,50,1,1,325049,0,4042.229,46.8501,0,7,1,10.30397,4.327666,0,0,0,14.63163,0,0,0,2,0,7,92.9,6.9,0,86.4,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,0,0,0,86.4,8.304799,1.94591,2.683186,1 +10,3,50,1,2,325049,0,4042.229,47.8501,0,7,1,31.25,0,0,0,0,31.25,0,0,0,1,0,7,92.9,6.9,0,86.4,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,0,0,0,86.4,8.304799,1.94591,3.442019,1 +10,3,50,1,3,325049,0,4042.229,48.8501,0,7,1,8.669268,11.66016,0,0,0,20.32943,0,0,0,1,0,7,92.9,6.9,0,86.4,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,0,0,0,86.4,8.304799,1.94591,3.01207,1 +10,3,50,1,1,325050,0,4042.229,10.05339,0,9,1,11.33436,1.803194,0,0,0,13.13756,0,0,0,0,0,7,83.3,9.967326,0,100,1000,1000,1,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,100,8.304799,1.94591,2.575475,1 +10,3,50,1,2,325050,0,4042.229,11.05339,0,9,1,5.681818,0,0,0,0,5.681818,0,0,0,1,0,7,83.3,9.967326,0,100,1000,1000,1,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,100,8.304799,1.94591,1.737271,1 +10,3,50,1,3,325050,0,4042.229,12.05339,0,9,1,5.20156,3.259645,0,0,0,8.461205,0,0,0,1,0,7,83.3,9.967326,0,100,1000,1000,1,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,100,8.304799,1.94591,2.135492,1 +10,3,50,1,1,325051,0,4042.229,18.09446,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,83.5,3.4,0,67,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,67,8.304799,1.94591,,0 +10,3,50,1,2,325051,0,4042.229,19.09446,0,11,1,0,6.155303,0,0,0,6.155303,0,0,0,0,0,7,83.5,3.4,0,67,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,67,8.304799,1.94591,1.817314,1 +10,3,50,1,3,325051,0,4042.229,20.09446,0,11,1,78.89034,16.59731,0,0,0,95.48765,0,0,0,5,0,7,83.5,3.4,0,67,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,67,8.304799,1.94591,4.558997,1 +10,3,50,1,1,325052,0,4042.229,7.063655,1,9,1,3.09119,0,0,0,0,3.09119,0,0,0,0,0,7,95,9.967326,0,100,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,1,0,0,100,8.304799,1.94591,1.128556,1 +10,3,50,1,2,325052,0,4042.229,8.063655,1,9,1,0,0,0,0,0,0,0,0,0,0,0,7,95,9.967326,0,100,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,1,0,0,100,8.304799,1.94591,,0 +10,3,50,1,3,325052,0,4042.229,9.063655,1,9,1,0,0,0,0,0,0,0,0,0,0,0,7,95,9.967326,0,100,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,1,0,0,100,8.304799,1.94591,,0 +18,3,25,1,1,325053,0,10218.18,15.19233,1,9,1,5.720229,3.536141,0,0,0,9.256371,0,0,0,1,0,3,77.7,6.9,0,60.2,750,750,1,1,1.098612,6.620073,0,3.258096,8.006368,1,0,0,60.2,9.232021,1.098612,2.225312,1 +18,3,25,1,2,325053,0,10218.18,16.19233,1,9,1,16.72241,0,24.36694,0,0,41.08934,0,0,0,1,1,3,77.7,6.9,0,60.2,750,750,1,1,1.098612,6.620073,0,3.258096,8.006368,1,0,0,60.2,9.232021,1.098612,3.715749,1 +18,3,25,1,3,325053,0,10218.18,17.19233,1,9,1,8.999122,0,0,0,0,8.999122,0,0,0,2,0,3,77.7,6.9,0,60.2,750,750,1,1,1.098612,6.620073,0,3.258096,8.006368,1,0,0,60.2,9.232021,1.098612,2.197127,1 +18,3,25,1,4,325053,0,10218.18,18.19233,1,9,1,64.22018,3.984843,0,0,0,68.20502,0,0,0,1,0,3,77.7,6.9,0,60.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,60.2,9.232021,1.098612,4.222518,1 +18,3,25,1,5,325053,0,10218.18,19.19233,1,9,1,59.1008,2.429296,21.75489,0,0,83.28499,0,0,0,2,1,3,77.7,6.9,0,60.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,60.2,9.232021,1.098612,4.422268,1 +18,3,25,1,1,325054,0,10218.18,37.88638,0,8,1,20.80083,0,22.88091,0,0,43.68175,0,0,0,1,1,3,73.2,6.9,0,62.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,62.5,9.232021,1.098612,3.77693,1 +18,3,25,1,2,325054,0,10218.18,38.88638,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,73.2,6.9,0,62.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,62.5,9.232021,1.098612,,0 +18,3,25,1,3,325054,0,10218.18,39.88638,0,8,1,8.779632,0,0,0,0,8.779632,0,0,0,1,0,3,73.2,6.9,0,62.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,62.5,9.232021,1.098612,2.172435,1 +18,3,25,1,4,325054,0,10218.18,40.88638,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,73.2,6.9,0,62.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,62.5,9.232021,1.098612,,0 +18,3,25,1,5,325054,0,10218.18,41.88638,0,8,1,16.31617,4.350979,10.15228,0,0,30.81944,0,0,0,1,1,3,73.2,6.9,0,62.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,62.5,9.232021,1.098612,3.428145,1 +18,3,25,1,1,325055,0,10218.18,34.93224,1,9,1,40.0416,19.9688,0,0,0,60.0104,0,0,0,3,0,3,70.2,27.6,0,68.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,68.2,9.232021,1.098612,4.094518,1 +18,3,25,1,2,325055,0,10218.18,35.93224,1,9,1,20.06689,29.14477,21.97802,0,0,71.18968,0,0,0,2,1,3,70.2,27.6,0,68.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,68.2,9.232021,1.098612,4.265348,1 +18,3,25,1,3,325055,0,10218.18,36.93224,1,9,1,8.779632,19.75417,0,0,0,28.5338,0,0,0,1,0,3,70.2,27.6,0,68.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,68.2,9.232021,1.098612,3.351089,1 +18,3,25,1,4,325055,0,10218.18,37.93224,1,9,1,191.2246,10.94934,22.33746,0,0,224.5114,0,0,0,6,2,3,70.2,27.6,0,68.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,68.2,9.232021,1.098612,5.413926,1 +18,3,25,1,5,325055,0,10218.18,38.93224,1,9,1,162.7266,12.43655,15.22843,0,0,190.3916,0,0,0,5,1,3,70.2,27.6,0,68.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,68.2,9.232021,1.098612,5.249083,1 +11,3,0,1,1,325088,0,5465.103,1.10883,0,12,1,24.72952,14.32251,0,0,0,39.05204,0,0,0,1,0,4,83.39137,9.967326,0,100,0,278.4,1,0,1.386294,5.629059,0,0,0,0,0,0,100,8.606321,1.386294,3.664895,1 +11,3,0,1,2,325088,0,5465.103,2.108829,0,12,1,17.99242,1.704545,0,0,0,19.69697,0,0,0,3,0,5,83.39137,9.967326,0,100,0,278.4,1,0,1.609438,5.629059,0,0,0,0,0,0,100,8.606321,1.609438,2.980465,1 +11,3,0,1,3,325088,0,5465.103,3.108829,0,12,1,70.52449,5.504985,0,0,0,76.02947,0,0,0,5,0,5,83.39137,9.967326,0,100,0,278.4,1,0,1.609438,5.629059,0,0,0,0,0,0,100,8.606321,1.609438,4.331121,1 +11,3,0,1,4,325088,0,5465.103,4.108829,0,12,1,58.29066,3.111461,0,0,0,61.40213,0,0,0,2,0,5,83.39137,9.967326,0,100,0,278.4,1,0,1.609438,5.629059,0,0,0,0,0,0,100,8.606321,1.609438,4.117445,1 +11,3,0,1,5,325088,0,5465.103,5.108829,0,12,1,39.92844,6.923077,0,0,0,46.85152,0,0,0,4,0,5,83.39137,9.967326,0,100,0,278.4,1,0,1.609438,5.629059,0,0,0,0,0,0,100,8.606321,1.609438,3.846983,1 +11,3,0,1,1,325089,0,5465.103,5.385353,0,12,1,5.667182,2.215353,0,0,0,7.882535,0,0,0,1,0,4,85,9.967326,0,77.8,0,278.4,1,0,1.386294,5.629059,0,0,0,0,0,0,77.8,8.606321,1.386294,2.06465,1 +11,3,0,1,2,325089,0,5465.103,6.385353,0,12,1,5.681818,0,0,0,0,5.681818,0,0,0,1,0,5,85,9.967326,0,77.8,0,278.4,1,0,1.609438,5.629059,0,0,0,0,0,0,77.8,8.606321,1.609438,1.737271,1 +11,3,0,1,3,325089,0,5465.103,7.385353,0,12,1,61.89857,13.8925,0,0,0,75.79107,0,0,0,5,0,5,85,9.967326,0,77.8,0,278.4,1,0,1.609438,5.629059,0,0,0,0,0,0,77.8,8.606321,1.609438,4.327981,1 +11,3,0,1,4,325089,0,5465.103,8.385352,0,12,1,13.78496,2.756991,0,0,0,16.54195,0,0,0,2,0,5,85,9.967326,0,77.8,0,278.4,1,0,1.609438,5.629059,0,0,0,0,0,0,77.8,8.606321,1.609438,2.805899,1 +11,3,0,1,5,325089,0,5465.103,9.385352,0,12,1,3.577817,4.454383,0,0,0,8.032201,0,0,0,1,0,5,85,9.967326,0,77.8,0,278.4,1,0,1.609438,5.629059,0,0,0,0,0,0,77.8,8.606321,1.609438,2.083459,1 +11,3,0,1,1,325090,0,5465.103,27.01711,1,12,1,19.57754,9.891809,20.60793,0,544.3792,594.4565,1,0,0,1,1,4,75,13.8,1,77.3,0,278.4,0,0,1.386294,5.629059,0,0,0,0,0,0,77.3,8.606321,1.386294,6.387648,1 +11,3,0,1,2,325090,0,5465.103,28.01711,1,12,1,15.15152,2.722538,0,0,0,17.87405,0,0,0,2,0,5,75,13.8,1,77.3,0,278.4,0,0,1.609438,5.629059,0,0,0,0,0,0,77.3,8.606321,1.609438,2.88335,1 +11,3,0,1,3,325090,0,5465.103,29.01711,1,12,1,148.6779,9.046381,23.84048,0,0,181.5648,0,0,0,1,15,5,75,13.8,1,77.3,0,278.4,0,0,1.609438,5.629059,0,0,0,0,0,0,77.3,8.606321,1.609438,5.201612,1 +11,3,0,1,4,325090,0,5465.103,30.01711,1,12,1,39.0705,8.842064,0,0,0,47.91256,0,0,0,2,0,5,75,13.8,1,77.3,0,278.4,0,0,1.609438,5.629059,0,0,0,0,0,0,77.3,8.606321,1.609438,3.869378,1 +11,3,0,1,5,325090,0,5465.103,31.01711,1,12,1,11.09123,0,28.62254,0,0,39.71378,0,0,0,2,0,5,75,13.8,1,77.3,0,278.4,0,0,1.609438,5.629059,0,0,0,0,0,0,77.3,8.606321,1.609438,3.681698,1 +11,3,0,1,1,325091,0,5465.103,23.19781,0,12,1,40.70067,7.367336,0,0,0,48.068,0,0,0,2,0,4,65.4,3.4,0,88.6,0,278.4,0,0,1.386294,5.629059,0,0,0,0,0,0,88.6,8.606321,1.386294,3.872617,1 +11,3,0,1,2,325091,0,5465.103,24.19781,0,12,1,96.11742,34.83902,0,0,0,130.9564,0,0,0,6,2,5,65.4,3.4,0,88.6,0,278.4,0,0,1.609438,5.629059,0,0,0,0,0,0,88.6,8.606321,1.609438,4.874865,1 +11,3,0,1,3,325091,0,5465.103,25.19781,0,12,1,127.4382,0,0,0,0,127.4382,0,0,0,0,15,5,65.4,3.4,0,88.6,0,278.4,0,0,1.609438,5.629059,0,0,0,0,0,0,88.6,8.606321,1.609438,4.847632,1 +11,3,0,1,4,325091,0,5465.103,26.19781,0,12,1,37.02245,2.028358,0,0,0,39.05081,0,0,0,1,3,5,65.4,3.4,0,88.6,0,278.4,0,0,1.609438,5.629059,0,0,0,0,0,0,88.6,8.606321,1.609438,3.664864,1 +11,3,0,1,5,325091,0,5465.103,27.19781,0,12,1,4.293381,1.9678,0,0,0,6.261181,0,0,0,1,0,5,65.4,3.4,0,88.6,0,278.4,0,0,1.609438,5.629059,0,0,0,0,0,0,88.6,8.606321,1.609438,1.834369,1 +11,3,0,1,1,325098,0,10845.16,32.34223,0,14,1,5.720229,5.954238,0,0,0,11.67447,0,0,0,1,0,4,66.5,3.4,0,76.1,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.1,9.291567,1.386294,2.457404,1 +11,3,0,1,2,325098,0,10845.16,33.34223,0,14,1,36.31152,12.3268,27.23364,0,0,75.87196,0,0,0,4,1,4,66.5,3.4,0,76.1,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.1,9.291567,1.386294,4.329047,1 +11,3,0,1,3,325098,0,10845.16,34.34223,0,14,1,29.85075,15.84723,0,0,0,45.69798,0,0,0,5,0,4,66.5,3.4,0,76.1,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.1,9.291567,1.386294,3.822054,1 +11,3,0,1,1,325099,0,10845.16,32.72827,1,12,1,86.06345,56.83827,0,0,0,142.9017,0,0,0,5,6,4,97.9,17.2,1,93.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,93.2,9.291567,1.386294,4.962157,1 +11,3,0,1,2,325099,0,10845.16,33.72827,1,12,1,54.94505,59.50788,25.80029,0,0,140.2532,0,0,0,3,5,4,97.9,17.2,1,93.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,93.2,9.291567,1.386294,4.943449,1 +11,3,0,1,3,325099,0,10845.16,34.72827,1,12,1,54.44249,64.30202,0,0,0,118.7445,0,0,0,5,2,4,97.9,17.2,1,93.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,93.2,9.291567,1.386294,4.776974,1 +11,3,0,1,1,325100,0,10845.16,8.859685,0,12,1,29.64119,23.79095,0,0,0,53.43214,0,0,0,1,0,4,96.7,9.967326,0,74.1,0,0,1,0,1.386294,0,0,0,0,0,0,0,74.1,9.291567,1.386294,3.978412,1 +11,3,0,1,2,325100,0,10845.16,9.859685,0,12,1,11.94458,10.91734,0,0,0,22.86192,0,0,0,2,0,4,96.7,9.967326,0,74.1,0,0,1,0,1.386294,0,0,0,0,0,0,0,74.1,9.291567,1.386294,3.129473,1 +11,3,0,1,3,325100,0,10845.16,10.85968,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,96.7,9.967326,0,74.1,0,0,1,0,1.386294,0,0,0,0,0,0,0,74.1,9.291567,1.386294,,0 +11,3,0,1,1,325101,0,10845.16,11.28816,1,12,1,23.50494,0,0,0,0,23.50494,0,0,0,1,0,4,93.3,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,9.291567,1.386294,3.157211,1 +11,3,0,1,2,325101,0,10845.16,12.28816,1,12,1,6.21118,0,0,0,0,6.21118,0,0,0,1,0,4,93.3,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,9.291567,1.386294,1.826351,1 +11,3,0,1,3,325101,0,10845.16,13.28816,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,93.3,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,9.291567,1.386294,,0 +13,3,0,1,1,325104,0,7722.581,25.39357,1,14,1,23.53941,5.280783,0,0,0,28.8202,0,0,0,1,0,3,81.9,0,0,89.8,450,807.6,0,0,1.098612,6.694067,1,4.564348,6.160541,1,0,0,89.8,8.952033,1.098612,3.361076,1 +13,3,0,1,2,325104,0,7722.581,26.39357,1,14,1,21.7803,4.6875,0,0,541.714,568.1818,1,0,0,3,0,3,81.9,0,0,89.8,450,807.6,0,0,1.098612,6.694067,1,4.564348,6.160541,1,0,0,89.8,8.952033,1.098612,6.342442,1 +13,3,0,1,3,325104,0,7722.581,27.39357,1,14,1,17.772,0,25.57434,0,0,43.34634,0,0,0,2,0,4,81.9,0,0,89.8,450,807.6,0,0,1.386294,6.694067,1,4.564348,6.160541,1,0,0,89.8,8.952033,1.386294,3.769222,1 +13,3,0,1,1,325105,0,7722.581,24.85147,0,14,1,7.727975,12.93148,0,0,396.0536,416.713,1,0,0,1,0,3,62.2,24.1,0,34.1,450,807.6,0,0,1.098612,6.694067,1,4.564348,6.160541,1,0,0,34.1,8.952033,1.098612,6.032398,1 +13,3,0,1,2,325105,0,7722.581,25.85147,0,14,1,103.196,0,0,0,0,103.196,0,0,0,1,0,3,62.2,24.1,0,34.1,450,807.6,0,0,1.098612,6.694067,1,4.564348,6.160541,1,0,0,34.1,8.952033,1.098612,4.636631,1 +13,3,0,1,3,325105,0,7722.581,26.85147,0,14,1,5.635024,0,0,0,0,5.635024,0,0,0,1,0,4,62.2,24.1,0,34.1,450,807.6,0,0,1.386294,6.694067,1,4.564348,6.160541,1,0,0,34.1,8.952033,1.386294,1.729001,1 +13,3,0,1,1,325106,0,7722.581,1.853525,1,14,1,80.42246,4.662545,0,0,0,85.08501,0,0,0,5,0,3,83.39137,9.967326,0,96.3,450,807.6,1,1,1.098612,6.694067,1,4.564348,6.160541,1,0,0,96.3,8.952033,1.098612,4.443651,1 +13,3,0,1,2,325106,0,7722.581,2.853525,1,14,1,33.52273,2.367424,0,0,0,35.89015,0,0,0,4,0,3,83.39137,9.967326,0,96.3,450,807.6,1,1,1.098612,6.694067,1,4.564348,6.160541,1,0,0,96.3,8.952033,1.098612,3.580463,1 +13,3,0,1,3,325106,0,7722.581,3.853525,1,14,1,36.41092,0,0,0,0,36.41092,0,0,0,6,0,4,83.39137,9.967326,0,96.3,450,807.6,1,1,1.386294,6.694067,1,4.564348,6.160541,1,0,0,96.3,8.952033,1.386294,3.594869,1 +16,3,95,0,1,325107,1,6370.674,23.67146,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,74.5,0,0,59.1,1000,900,0,0,0,6.802395,0,4.564348,6.959049,0,0,0,59.1,8.759618,0,,0 +16,3,95,0,2,325107,1,6370.674,24.67146,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,74.5,0,0,59.1,1000,900,0,0,0,6.802395,0,4.564348,6.959049,0,0,0,59.1,8.759618,0,,0 +16,3,95,0,3,325107,1,6370.674,25.67146,0,13,1,23.51432,0,0,0,0,23.51432,0,0,0,2,0,1,74.5,0,0,59.1,1000,900,0,0,0,6.802395,0,4.564348,6.959049,0,0,0,59.1,8.759618,0,3.15761,1 +16,3,95,0,4,325107,1,6370.674,26.67146,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,74.5,0,0,59.1,1000,900,0,0,.6931472,6.802395,0,4.564348,6.959049,0,0,0,59.1,8.759618,.6931472,,0 +16,3,95,0,5,325107,1,6370.674,27.67146,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,74.5,0,0,59.1,1000,900,0,0,.6931472,6.802395,0,4.564348,6.959049,0,0,0,59.1,8.759618,.6931472,,0 +16,3,95,1,1,325110,0,7497.361,24.61602,0,16,1,25.24472,0,0,0,0,25.24472,0,0,0,1,0,4,92.6,3.4,0,94.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,94.3,8.92244,1.386294,3.228617,1 +16,3,95,1,2,325110,0,7497.361,25.61602,0,16,1,9.469697,.9375,0,0,0,10.4072,0,0,0,2,0,4,92.6,3.4,0,94.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,94.3,8.92244,1.386294,2.342498,1 +16,3,95,1,3,325110,0,7497.361,26.61602,0,16,1,63.24231,0,0,0,0,63.24231,0,0,0,4,0,4,92.6,3.4,0,94.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,94.3,8.92244,1.386294,4.146974,1 +16,3,95,1,4,325110,0,7497.361,27.61602,0,16,1,5.907838,12.17015,0,0,0,18.07798,0,0,0,1,0,5,92.6,3.4,0,94.3,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,94.3,8.92244,1.609438,2.894695,1 +16,3,95,1,5,325110,0,7497.361,28.61602,0,16,1,132.9875,0,0,0,0,132.9875,0,0,0,4,0,5,92.6,3.4,0,94.3,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,94.3,8.92244,1.609438,4.890255,1 +16,3,95,1,1,325111,0,7497.361,24.77481,1,14,1,46.88305,7.903143,26.79031,0,0,81.57651,0,0,0,3,1,4,73.9,10.3,0,75,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,75,8.92244,1.386294,4.401541,1 +16,3,95,1,2,325111,0,7497.361,25.77481,1,14,1,67.23485,18.04451,0,0,0,85.27936,0,0,0,9,0,4,73.9,10.3,0,75,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,75,8.92244,1.386294,4.445932,1 +16,3,95,1,3,325111,0,7497.361,26.77481,1,14,1,23.84048,2.72215,24.27395,0,477.6333,528.4698,1,0,0,2,1,4,73.9,10.3,0,75,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,75,8.92244,1.386294,6.269986,1 +16,3,95,1,4,325111,0,7497.361,27.77481,1,14,1,33.8716,3.513194,0,0,0,37.3848,0,0,0,2,0,5,73.9,10.3,0,75,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,75,8.92244,1.609438,3.621264,1 +16,3,95,1,5,325111,0,7497.361,28.77481,1,14,1,25.29517,9.824687,0,0,634.8265,669.9464,1,0,0,4,0,5,73.9,10.3,0,75,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,75,8.92244,1.609438,6.507198,1 +16,3,95,1,1,325112,0,7497.361,1.42642,0,14,1,47.39825,1.303452,0,0,437.5683,486.27,1,0,0,7,0,4,83.39137,9.967326,0,77.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,77.8,8.92244,1.386294,6.186764,1 +16,3,95,1,2,325112,0,7497.361,2.42642,0,14,1,86.50568,.4640152,0,0,0,86.9697,0,0,0,5,0,4,83.39137,9.967326,0,77.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,77.8,8.92244,1.386294,4.46556,1 +16,3,95,1,3,325112,0,7497.361,3.42642,0,14,1,180.6675,9.861292,0,0,0,190.5288,0,0,0,11,0,4,83.39137,9.967326,0,77.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,77.8,8.92244,1.386294,5.249804,1 +16,3,95,1,4,325112,0,7497.361,4.42642,0,14,1,17.72351,0,0,0,0,17.72351,0,0,0,2,0,5,83.39137,9.967326,0,77.8,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,77.8,8.92244,1.609438,2.874892,1 +16,3,95,1,5,325112,0,7497.361,5.42642,0,14,1,16.45796,5.288014,0,0,0,21.74598,0,0,0,2,0,5,83.39137,9.967326,0,77.8,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,77.8,8.92244,1.609438,3.079429,1 +11,3,0,1,1,325116,0,4918.006,.8131417,0,13,1,68.69475,8.705148,0,0,199.0848,276.4846,1,0,0,6,0,4,83.39137,9.967326,0,85.2,0,0,1,0,1.386294,0,0,0,0,0,0,0,85.2,8.500862,1.386294,5.622155,1 +11,3,0,1,2,325116,0,4918.006,1.813142,0,13,1,474.7253,14.46727,0,0,480.172,969.3646,2,0,0,34,0,5,83.39137,9.967326,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,8.500862,1.609438,6.876641,1 +11,3,0,1,1,325117,0,4918.006,22.89938,1,13,1,54.59698,24.11337,0,0,698.1903,776.9007,1,0,0,2,0,4,24.5,20.7,0,48.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,48.9,8.500862,1.386294,6.655313,1 +11,3,0,1,2,325117,0,4918.006,23.89938,1,13,1,153.3206,15.84807,0,0,0,169.1687,0,0,0,4,0,5,24.5,20.7,0,48.9,0,0,0,0,1.609438,0,0,0,0,1,0,0,48.9,8.500862,1.609438,5.130896,1 +11,3,0,1,3,325117,0,4918.006,24.89938,1,13,1,76.03161,14.53029,0,0,1022.542,1113.104,2,0,0,5,0,3,24.5,20.7,0,48.9,0,0,0,0,1.098612,0,0,0,0,1,0,0,48.9,8.500862,1.098612,7.014907,1 +11,3,0,1,1,325118,0,4918.006,1.629021,0,13,1,46.56786,0,0,0,0,46.56786,0,0,0,4,0,4,83.39137,9.967326,1,22.2,0,0,1,0,1.386294,0,0,0,0,0,0,0,22.2,8.500862,1.386294,3.840911,1 +11,3,0,1,2,325118,0,4918.006,2.629021,0,13,1,529.0492,14.04682,0,0,0,543.096,0,0,0,22,0,5,83.39137,9.967326,1,22.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,22.2,8.500862,1.609438,6.297286,1 +11,3,0,1,3,325118,0,4918.006,3.629021,0,13,1,403.9069,2.3705,0,0,0,406.2774,0,0,0,34,0,3,83.39137,9.967326,1,22.2,0,0,1,0,1.098612,0,0,0,0,0,0,0,22.2,8.500862,1.098612,6.007036,1 +11,3,0,1,1,325119,0,4918.006,22.39836,0,7,1,23.40094,0,0,0,0,23.40094,0,0,0,2,0,4,80.9,10.3,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,85.2,8.500862,1.386294,3.152776,1 +11,3,0,1,2,325119,0,4918.006,23.39836,0,7,1,209.0779,2.723364,0,0,0,211.8012,0,0,0,4,0,5,80.9,10.3,0,85.2,0,0,0,0,1.609438,0,0,0,0,0,0,0,85.2,8.500862,1.609438,5.355649,1 +11,3,0,1,3,325119,0,4918.006,24.39836,0,7,1,36.96225,3.424056,0,0,0,40.3863,0,0,0,3,0,3,80.9,10.3,0,85.2,0,0,0,0,1.098612,0,0,0,0,0,0,0,85.2,8.500862,1.098612,3.698491,1 +19,3,25,0,1,325120,0,5519.062,60.92813,0,11,1,54.08216,92.5377,32.24129,0,820.39,999.2512,1,0,0,5,1,2,79.8,13.8,1,61.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,61.4,8.616144,.6931472,6.907006,1 +19,3,25,0,2,325120,0,5519.062,61.92813,0,11,1,44.43383,58.02676,0,0,0,102.4606,0,0,0,5,0,2,79.8,13.8,1,61.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,61.4,8.616144,.6931472,4.629478,1 +19,3,25,0,3,325120,0,5519.062,62.92813,0,11,1,54.8727,82.85777,0,0,0,137.7305,0,0,0,4,0,2,79.8,13.8,1,61.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,61.4,8.616144,.6931472,4.925299,1 +19,3,25,0,1,325121,0,5519.062,59.00616,1,8,1,10.92044,0,37.96152,0,0,48.88195,0,0,0,0,1,2,83,6.9,0,76.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,76.1,8.616144,.6931472,3.889408,1 +19,3,25,0,2,325121,0,5519.062,60.00616,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,83,6.9,0,76.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,76.1,8.616144,.6931472,,0 +19,3,25,0,3,325121,0,5519.062,61.00616,1,8,1,32.79192,0,0,0,0,32.79192,0,0,0,1,0,2,83,6.9,0,76.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,76.1,8.616144,.6931472,3.490182,1 +11,3,0,1,1,325177,0,14874.49,17.577,1,13,1,13.66397,0,0,0,0,13.66397,0,0,0,2,0,6,76.6,3.4,0,77.3,0,580.8,1,1,1.791759,6.364407,0,0,0,0,0,0,77.3,9.60747,1.791759,2.614762,1 +11,3,0,1,2,325177,0,14874.49,18.577,1,13,1,185.0816,6.783217,6.993007,0,0,198.8578,0,0,0,1,6,6,76.6,3.4,0,77.3,0,580.8,0,0,1.791759,6.364407,0,0,0,0,0,0,77.3,9.60747,1.791759,5.29259,1 +11,3,0,1,3,325177,0,14874.49,19.577,1,13,1,77.68277,7.28944,0,0,240.4062,325.3784,1,0,0,3,0,6,76.6,3.4,0,77.3,0,580.8,0,0,1.791759,6.364407,0,0,0,0,0,0,77.3,9.60747,1.791759,5.784989,1 +11,3,0,1,4,325177,0,14874.49,20.577,1,13,1,28.82398,0,0,0,0,28.82398,0,0,0,1,0,6,76.6,3.4,0,77.3,0,580.8,0,0,1.791759,6.364407,0,0,0,0,0,0,77.3,9.60747,1.791759,3.361208,1 +11,3,0,1,5,325177,0,14874.49,21.577,1,13,1,17.56235,6.28732,0,0,0,23.84967,0,0,0,2,0,6,76.6,3.4,0,77.3,0,580.8,0,0,1.791759,6.364407,0,0,0,0,0,0,77.3,9.60747,1.791759,3.17177,1 +11,3,0,1,1,325178,0,14874.49,40.6872,0,13,1,105.1619,0,12.29757,0,0,117.4595,0,0,0,5,0,6,90.4,6.9,0,80.7,0,580.8,0,0,1.791759,6.364407,0,0,0,1,0,0,80.7,9.60747,1.791759,4.766094,1 +11,3,0,1,2,325178,0,14874.49,41.6872,0,13,1,86.24709,0,0,0,0,86.24709,0,0,0,2,7,6,90.4,6.9,0,80.7,0,580.8,0,0,1.791759,6.364407,0,0,0,1,0,0,80.7,9.60747,1.791759,4.457216,1 +11,3,0,1,3,325178,0,14874.49,42.6872,0,13,1,317.6571,3.142369,0,0,0,320.7995,0,0,0,2,4,6,90.4,6.9,0,80.7,0,580.8,0,0,1.791759,6.364407,0,0,0,1,0,0,80.7,9.60747,1.791759,5.770816,1 +11,3,0,1,4,325178,0,14874.49,43.6872,0,13,1,15.37279,1.691007,0,0,0,17.0638,0,0,0,0,0,6,90.4,6.9,0,80.7,0,580.8,0,0,1.791759,6.364407,0,0,0,1,0,0,80.7,9.60747,1.791759,2.836959,1 +11,3,0,1,5,325178,0,14874.49,44.6872,0,13,1,39.58553,4.109589,0,0,0,43.69512,0,0,0,2,1,6,90.4,6.9,0,80.7,0,580.8,0,0,1.791759,6.364407,0,0,0,1,0,0,80.7,9.60747,1.791759,3.777236,1 +11,3,0,1,1,325179,0,14874.49,15.14579,0,13,1,29.8583,0,0,0,0,29.8583,0,0,0,2,0,6,83.5,0,0,81.8,0,580.8,1,0,1.791759,6.364407,0,0,0,1,0,0,81.8,9.60747,1.791759,3.396463,1 +11,3,0,1,2,325179,0,14874.49,16.14579,0,13,1,33.10023,0,0,0,0,33.10023,0,0,0,0,0,6,83.5,0,0,81.8,0,580.8,1,0,1.791759,6.364407,0,0,0,1,0,0,81.8,9.60747,1.791759,3.49954,1 +11,3,0,1,3,325179,0,14874.49,17.14579,0,13,1,15.39119,1.154339,0,0,0,16.54553,0,0,0,3,0,6,83.5,0,0,81.8,0,580.8,1,0,1.791759,6.364407,0,0,0,1,0,0,81.8,9.60747,1.791759,2.806116,1 +11,3,0,1,4,325179,0,14874.49,18.14579,0,13,1,7.686395,0,23.82783,0,0,31.51422,0,0,0,1,0,6,83.5,0,0,81.8,0,580.8,0,0,1.791759,6.364407,0,0,0,1,0,0,81.8,9.60747,1.791759,3.450439,1 +11,3,0,1,5,325179,0,14874.49,19.14579,0,13,1,209.1359,4.741834,0,0,2571.408,2785.286,1,0,0,9,6,6,83.5,0,0,81.8,0,580.8,0,0,1.791759,6.364407,0,0,0,1,0,0,81.8,9.60747,1.791759,7.932106,1 +11,3,0,1,1,325180,0,14874.49,39.75633,1,13,1,22.9251,0,0,0,0,22.9251,0,0,0,1,0,6,79.8,6.9,0,79.5,0,580.8,0,0,1.791759,6.364407,0,0,0,1,0,0,79.5,9.60747,1.791759,3.132232,1 +11,3,0,1,2,325180,0,14874.49,40.75633,1,13,1,72.26107,3.379953,0,0,0,75.64103,0,0,0,2,0,6,79.8,6.9,0,79.5,0,580.8,0,0,1.791759,6.364407,0,0,0,1,0,0,79.5,9.60747,1.791759,4.325999,1 +11,3,0,1,3,325180,0,14874.49,41.75633,1,13,1,513.8606,0,0,0,0,513.8606,0,0,0,9,0,6,79.8,6.9,0,79.5,0,580.8,0,0,1.791759,6.364407,0,0,0,1,0,0,79.5,9.60747,1.791759,6.241952,1 +11,3,0,1,4,325180,0,14874.49,42.75633,1,13,1,26.09531,2.075327,27.67102,0,0,55.84166,0,0,0,3,0,6,79.8,6.9,0,79.5,0,580.8,0,0,1.791759,6.364407,0,0,0,1,0,0,79.5,9.60747,1.791759,4.02252,1 +11,3,0,1,5,325180,0,14874.49,43.75633,1,13,1,109.308,1.545486,0,0,0,110.8535,0,0,0,8,0,6,79.8,6.9,0,79.5,0,580.8,0,0,1.791759,6.364407,0,0,0,1,0,0,79.5,9.60747,1.791759,4.70821,1 +15,3,95,0,1,325234,0,1703.226,26.45311,1,9,1,815.7237,10.06579,3.415992,0,0,829.2054,0,0,0,11,0,2,64.4,0,0,96.6,0,0,0,0,.6931472,0,0,4.564348,0,1,0,0,96.6,7.440866,.6931472,6.720468,1 +15,3,95,0,2,325234,0,1703.226,27.45311,1,9,1,418.1911,31.9627,0,0,0,450.1538,0,0,0,6,1,2,64.4,0,0,96.6,0,0,0,0,.6931472,0,0,4.564348,0,1,0,0,96.6,7.440866,.6931472,6.10959,1 +15,3,95,0,3,325234,0,1703.226,28.45311,1,9,1,91.32108,5.173151,4.232578,0,0,100.7268,0,0,0,2,0,2,64.4,0,0,96.6,0,0,0,0,.6931472,0,0,4.564348,0,1,0,0,96.6,7.440866,.6931472,4.612412,1 +13,3,0,1,1,325249,0,6451.026,51.49076,1,12,1,21.71087,39.31357,0,0,0,61.02444,0,0,0,1,1,1,76.6,13.8,0,80.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,80.7,8.772149,0,4.111274,1 +13,3,0,1,2,325249,0,6451.026,52.49076,1,12,1,32.96703,36.88485,31.53368,0,0,101.3856,0,0,0,3,1,1,76.6,13.8,0,80.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,80.7,8.772149,0,4.618931,1 +13,3,0,1,3,325249,0,6451.026,53.49076,1,12,1,20.50044,39.99122,0,0,0,60.49166,0,0,0,2,0,1,76.6,13.8,0,80.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,80.7,8.772149,0,4.102506,1 +16,3,95,1,1,325285,0,10750.15,17.23477,0,10,1,28.85111,0,0,0,0,28.85111,0,0,0,2,0,3,67.6,0,0,78.4,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,78.4,9.282767,1.098612,3.362149,1 +16,3,95,1,2,325285,0,10750.15,18.23477,0,10,1,25.75758,0,0,0,0,25.75758,0,0,0,1,0,3,67.6,0,0,78.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,78.4,9.282767,1.098612,3.248729,1 +16,3,95,1,3,325285,0,10750.15,19.23477,0,10,1,3.467707,0,0,0,0,3.467707,0,0,0,1,0,3,67.6,0,0,78.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,78.4,9.282767,1.098612,1.243494,1 +16,3,95,1,1,325286,0,10750.15,49.27036,0,12,1,1264.379,107.5374,0,0,0,1371.917,0,0,0,52,0,3,67,13.8,0,63.6,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,63.6,9.282767,1.098612,7.223964,1 +16,3,95,1,2,325286,0,10750.15,50.27036,0,12,1,633.357,68.71212,18.93939,0,0,721.0085,0,0,0,18,1,3,67,13.8,0,63.6,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,63.6,9.282767,1.098612,6.580651,1 +16,3,95,1,3,325286,0,10750.15,51.27036,0,12,1,367.3602,0,0,0,0,367.3602,0,0,0,2,0,3,67,13.8,0,63.6,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,63.6,9.282767,1.098612,5.906343,1 +16,3,95,1,1,325287,0,10750.15,43.75359,1,10,1,12.87996,0,0,0,0,12.87996,0,0,0,2,0,3,73.4,10.3,0,78.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,78.4,9.282767,1.098612,2.555673,1 +16,3,95,1,2,325287,0,10750.15,44.75359,1,10,1,105.1136,0,21.30682,0,606.4631,732.8835,1,0,0,3,1,3,73.4,10.3,0,78.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,78.4,9.282767,1.098612,6.596987,1 +16,3,95,1,3,325287,0,10750.15,45.75359,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,73.4,10.3,0,78.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,78.4,9.282767,1.098612,,0 +11,3,0,0,1,325288,0,4713.196,32.7666,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,77.7,24.1,0,69.3,0,763.2,0,0,1.94591,6.63752,0,0,0,0,0,0,69.3,8.458334,1.94591,,0 +11,3,0,0,2,325288,0,4713.196,33.7666,1,12,1,52.03938,0,0,0,0,52.03938,0,0,0,1,2,7,77.7,24.1,0,69.3,0,763.2,0,0,1.94591,6.63752,0,0,0,0,0,0,69.3,8.458334,1.94591,3.952001,1 +11,3,0,0,3,325288,0,4713.196,34.7666,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,77.7,24.1,0,69.3,0,763.2,0,0,1.94591,6.63752,0,0,0,0,0,0,69.3,8.458334,1.94591,,0 +11,3,0,0,4,325288,0,4713.196,35.7666,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,77.7,24.1,0,69.3,0,763.2,0,0,1.94591,6.63752,0,0,0,0,0,0,69.3,8.458334,1.94591,,0 +11,3,0,0,5,325288,0,4713.196,36.7666,1,12,1,25.56617,7.342534,0,0,0,32.90871,0,0,0,2,0,7,77.7,24.1,0,69.3,0,763.2,0,0,1.94591,6.63752,0,0,0,0,0,0,69.3,8.458334,1.94591,3.493737,1 +11,3,0,0,1,325289,0,4713.196,12.91444,0,12,1,12.25741,0,0,0,0,12.25741,0,0,0,2,0,7,85,9.967326,1,81.5,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,81.5,8.458334,1.94591,2.50613,1 +11,3,0,0,2,325289,0,4713.196,13.91444,0,12,1,5.157056,0,0,0,0,5.157056,0,0,0,1,0,7,85,9.967326,1,81.5,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,81.5,8.458334,1.94591,1.640366,1 +11,3,0,0,3,325289,0,4713.196,14.91444,0,12,1,112.4678,0,0,0,0,112.4678,0,0,0,4,0,7,85,9.967326,1,81.5,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,81.5,8.458334,1.94591,4.722667,1 +11,3,0,0,4,325289,0,4713.196,15.91444,0,12,1,114.7732,0,0,0,0,114.7732,0,0,0,8,0,7,85,9.967326,1,81.5,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,81.5,8.458334,1.94591,4.742958,1 +11,3,0,0,5,325289,0,4713.196,16.91444,0,12,1,19.10828,6.620665,0,0,0,25.72894,0,0,0,3,0,7,85,9.967326,1,81.5,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,81.5,8.458334,1.94591,3.247617,1 +11,3,0,0,1,325290,0,4713.196,34.8282,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,78.7,10.3,0,70.5,0,763.2,0,0,1.94591,6.63752,0,0,0,1,0,0,70.5,8.458334,1.94591,,0 +11,3,0,0,2,325290,0,4713.196,35.8282,0,12,1,16.12752,4.664792,0,0,0,20.79231,0,0,0,1,0,7,78.7,10.3,0,70.5,0,763.2,0,0,1.94591,6.63752,0,0,0,1,0,0,70.5,8.458334,1.94591,3.034583,1 +11,3,0,0,3,325290,0,4713.196,36.8282,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,78.7,10.3,0,70.5,0,763.2,0,0,1.94591,6.63752,0,0,0,1,0,0,70.5,8.458334,1.94591,,0 +11,3,0,0,4,325290,0,4713.196,37.8282,0,12,1,0,19.23226,0,0,0,19.23226,0,0,0,0,0,7,78.7,10.3,0,70.5,0,763.2,0,0,1.94591,6.63752,0,0,0,1,0,0,70.5,8.458334,1.94591,2.956589,1 +11,3,0,0,5,325290,0,4713.196,38.8282,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,78.7,10.3,0,70.5,0,763.2,0,0,1.94591,6.63752,0,0,0,1,0,0,70.5,8.458334,1.94591,,0 +11,3,0,0,1,325291,0,4713.196,9.292266,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,83.3,9.967326,0,85.2,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,85.2,8.458334,1.94591,,0 +11,3,0,0,2,325291,0,4713.196,10.29227,0,12,1,5.157056,0,0,0,0,5.157056,0,0,0,1,0,7,83.3,9.967326,0,85.2,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,85.2,8.458334,1.94591,1.640366,1 +11,3,0,0,3,325291,0,4713.196,11.29227,0,12,1,21.79708,11.80138,0,0,330.9716,364.5701,1,0,0,2,0,7,83.3,9.967326,0,85.2,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,85.2,8.458334,1.94591,5.898719,1 +11,3,0,0,4,325291,0,4713.196,12.29227,0,12,1,0,6.746801,0,0,0,6.746801,0,0,0,0,0,7,83.3,9.967326,0,85.2,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,85.2,8.458334,1.94591,1.909068,1 +11,3,0,0,5,325291,0,4713.196,13.29227,0,12,1,0,7.430998,0,0,0,7.430998,0,0,0,0,0,7,83.3,9.967326,0,85.2,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,85.2,8.458334,1.94591,2.00566,1 +11,3,0,0,1,325292,0,4713.196,7.104723,0,12,1,6.128703,0,0,0,0,6.128703,0,0,0,1,0,7,91.7,9.967326,0,96.3,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,96.3,8.458334,1.94591,1.812983,1 +11,3,0,0,2,325292,0,4713.196,8.104723,0,12,1,5.157056,0,0,0,0,5.157056,0,0,0,1,0,7,91.7,9.967326,0,96.3,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,96.3,8.458334,1.94591,1.640366,1 +11,3,0,0,3,325292,0,4713.196,9.104723,0,12,1,0,2.042132,0,0,0,2.042132,0,0,0,0,0,7,91.7,9.967326,0,96.3,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,96.3,8.458334,1.94591,.7139946,1 +11,3,0,0,4,325292,0,4713.196,10.10472,0,12,1,5.816208,0,0,0,0,5.816208,0,0,0,1,0,7,91.7,9.967326,0,96.3,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,96.3,8.458334,1.94591,1.760648,1 +11,3,0,0,5,325292,0,4713.196,11.10472,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,91.7,9.967326,0,96.3,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,96.3,8.458334,1.94591,,0 +11,3,0,0,1,325293,0,4713.196,11.96715,0,12,1,47.26762,0,0,0,0,47.26762,0,0,0,3,0,7,86.7,9.967326,0,88.9,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,88.9,8.458334,1.94591,3.855825,1 +11,3,0,0,2,325293,0,4713.196,12.96715,0,12,1,5.157056,0,0,0,0,5.157056,0,0,0,1,0,7,86.7,9.967326,0,88.9,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,88.9,8.458334,1.94591,1.640366,1 +11,3,0,0,3,325293,0,4713.196,13.96715,0,12,1,141.0146,6.620808,0,0,0,147.6354,0,0,0,3,0,7,86.7,9.967326,0,88.9,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,88.9,8.458334,1.94591,4.994746,1 +11,3,0,0,4,325293,0,4713.196,14.96715,0,12,1,5.816208,0,0,0,0,5.816208,0,0,0,1,0,7,86.7,9.967326,0,88.9,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,88.9,8.458334,1.94591,1.760648,1 +11,3,0,0,5,325293,0,4713.196,15.96715,0,12,1,61.21727,0,0,0,0,61.21727,0,0,0,3,0,7,86.7,9.967326,0,88.9,0,763.2,1,0,1.94591,6.63752,0,0,0,0,0,0,88.9,8.458334,1.94591,4.114429,1 +11,3,0,0,1,325294,0,4713.196,2.956879,1,12,1,12.25741,8.19714,0,0,0,20.45455,0,0,0,2,0,7,83.39137,9.967326,0,100,0,763.2,1,1,1.94591,6.63752,0,0,0,0,0,0,100,8.458334,1.94591,3.018205,1 +11,3,0,0,2,325294,0,4713.196,3.956879,1,12,1,51.10173,6.071261,0,0,0,57.173,0,0,0,3,0,7,83.39137,9.967326,0,100,0,763.2,1,1,1.94591,6.63752,0,0,0,0,0,0,100,8.458334,1.94591,4.046082,1 +11,3,0,0,3,325294,0,4713.196,4.956879,1,12,1,0,1.827171,0,0,0,1.827171,0,0,0,0,0,7,83.39137,9.967326,0,100,0,763.2,1,1,1.94591,6.63752,0,0,0,0,0,0,100,8.458334,1.94591,.6027689,1 +11,3,0,0,4,325294,0,4713.196,5.956879,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,83.39137,9.967326,0,100,0,763.2,1,1,1.94591,6.63752,0,0,0,0,0,0,100,8.458334,1.94591,,0 +11,3,0,0,5,325294,0,4713.196,6.956879,1,12,1,7.077141,1.751592,0,0,0,8.828733,0,0,0,2,0,7,83.39137,9.967326,0,100,0,763.2,1,1,1.94591,6.63752,0,0,0,0,0,0,100,8.458334,1.94591,2.178012,1 +10,3,50,1,1,325320,0,6108.082,1.448323,0,12,1,44.77379,9.417577,0,0,0,54.19137,0,0,0,4,0,3,83.39137,9.967326,0,96.3,1000,520,1,0,1.098612,6.253829,0,3.931826,7.600903,0,0,0,96.3,8.717532,1.098612,3.992522,1 +10,3,50,1,2,325320,0,6108.082,2.448323,0,12,1,37.41042,.9460105,0,0,0,38.35643,0,0,0,3,0,4,83.39137,9.967326,0,96.3,1000,520,1,0,1.386294,6.253829,0,3.931826,7.600903,0,0,0,96.3,8.717532,1.386294,3.646922,1 +10,3,50,1,3,325320,0,6108.082,3.448323,0,12,1,15.36436,0,0,0,0,15.36436,0,0,0,1,1,4,83.39137,9.967326,0,96.3,1000,520,1,0,1.386294,6.253829,0,3.931826,7.600903,0,0,0,96.3,8.717532,1.386294,2.73205,1 +10,3,50,1,1,325321,0,6108.082,28.44627,0,15,1,52.65211,3.74935,0,0,0,56.40145,0,0,0,2,0,3,79.3,3.4,0,73.9,1000,520,0,0,1.098612,6.253829,0,3.931826,7.600903,0,0,0,73.9,8.717532,1.098612,4.032495,1 +10,3,50,1,2,325321,0,6108.082,29.44627,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,79.3,3.4,0,73.9,1000,520,0,0,1.386294,6.253829,0,3.931826,7.600903,0,0,0,73.9,8.717532,1.386294,,0 +10,3,50,1,3,325321,0,6108.082,30.44627,0,15,1,0,4.012291,0,0,0,4.012291,0,0,0,0,0,4,79.3,3.4,0,73.9,1000,520,0,0,1.386294,6.253829,0,3.931826,7.600903,0,0,0,73.9,8.717532,1.386294,1.389362,1 +10,3,50,1,1,325322,0,6108.082,26.17659,1,12,1,2.75611,0,0,0,532.1893,534.9454,1,0,0,0,0,3,89.9,0,0,92,1000,520,0,0,1.098612,6.253829,0,3.931826,7.600903,0,0,0,92,8.717532,1.098612,6.282165,1 +10,3,50,1,2,325322,0,6108.082,27.17659,1,12,1,10.98901,13.76493,0,0,0,24.75394,0,0,0,1,0,4,89.9,0,0,92,1000,520,0,0,1.386294,6.253829,0,3.931826,7.600903,0,0,0,92,8.717532,1.386294,3.208985,1 +10,3,50,1,3,325322,0,6108.082,28.17659,1,12,1,130.9482,6.404741,0,0,0,137.3529,0,0,0,4,1,4,89.9,0,0,92,1000,520,0,0,1.386294,6.253829,0,3.931826,7.600903,0,0,0,92,8.717532,1.386294,4.922554,1 +11,3,0,1,1,325338,0,5849.267,27.73443,1,12,1,121.0716,11.72076,25.75992,0,0,158.5523,0,0,0,2,1,3,64.9,10.3,0,72.7,0,449.04,0,0,1.098612,6.107112,0,0,0,1,0,0,72.7,8.674243,1.098612,5.066084,1 +11,3,0,1,2,325338,0,5849.267,28.73443,1,12,1,97.91666,19.05777,13.73106,0,0,130.7055,0,0,0,5,1,3,64.9,10.3,0,72.7,0,449.04,0,0,1.098612,6.107112,0,0,0,1,0,0,72.7,8.674243,1.098612,4.872947,1 +11,3,0,1,3,325338,0,5849.267,29.73443,1,12,1,140.4421,27.2215,0,0,1250.884,1418.548,1,0,0,9,0,3,64.9,10.3,0,72.7,0,449.04,0,0,1.098612,6.107112,0,0,0,1,0,0,72.7,8.674243,1.098612,7.257389,1 +11,3,0,1,1,325339,0,5849.267,2.735113,1,12,1,104.8429,14.60587,0,0,0,119.4487,0,0,0,7,1,3,83.39137,9.967326,0,66.7,0,449.04,1,1,1.098612,6.107112,0,0,0,1,0,0,66.7,8.674243,1.098612,4.782887,1 +11,3,0,1,2,325339,0,5849.267,3.735113,1,12,1,49.24242,20.24148,0,0,0,69.4839,0,0,0,3,0,3,83.39137,9.967326,0,66.7,0,449.04,1,1,1.098612,6.107112,0,0,0,1,0,0,66.7,8.674243,1.098612,4.241095,1 +11,3,0,1,3,325339,0,5849.267,4.735113,1,12,1,25.57434,9.189424,0,0,0,34.76376,0,0,0,4,0,3,83.39137,9.967326,0,66.7,0,449.04,1,1,1.098612,6.107112,0,0,0,1,0,0,66.7,8.674243,1.098612,3.548576,1 +11,3,0,1,1,325340,0,5849.267,27.00616,0,12,1,87.58372,0,29.10871,0,0,116.6924,0,0,0,1,1,3,77.1,6.9,0,67,0,449.04,0,0,1.098612,6.107112,0,0,0,1,0,0,67,8.674243,1.098612,4.759542,1 +11,3,0,1,2,325340,0,5849.267,28.00616,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.1,6.9,0,67,0,449.04,0,0,1.098612,6.107112,0,0,0,1,0,0,67,8.674243,1.098612,,0 +11,3,0,1,3,325340,0,5849.267,29.00616,0,12,1,26.0078,.9752926,27.52492,0,0,54.50802,0,0,0,1,1,3,77.1,6.9,0,67,0,449.04,0,0,1.098612,6.107112,0,0,0,1,0,0,67,8.674243,1.098612,3.998348,1 +13,3,0,1,1,325366,0,6782.991,4.95551,0,12,1,16.48635,1.416795,0,0,0,17.90314,0,0,0,2,0,4,83.39137,9.967326,0,92.6,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.822321,1.386294,2.884976,1 +13,3,0,1,2,325366,0,6782.991,5.95551,0,12,1,7.102273,0,0,0,0,7.102273,0,0,0,1,0,4,83.39137,9.967326,0,92.6,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.822321,1.386294,1.960415,1 +13,3,0,1,3,325366,0,6782.991,6.95551,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.39137,9.967326,0,92.6,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.822321,1.386294,,0 +13,3,0,1,1,325367,0,6782.991,6.841889,1,12,1,28.23287,0,0,0,0,28.23287,0,0,0,0,0,4,81.7,9.967326,0,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,74.1,8.822321,1.386294,3.340487,1 +13,3,0,1,2,325367,0,6782.991,7.841889,1,12,1,6.155303,1.529356,0,0,0,7.684659,0,0,0,1,0,4,81.7,9.967326,0,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,74.1,8.822321,1.386294,2.039226,1 +13,3,0,1,3,325367,0,6782.991,8.841889,1,12,1,37.71132,0,0,0,0,37.71132,0,0,0,0,0,4,81.7,9.967326,0,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,74.1,8.822321,1.386294,3.62996,1 +13,3,0,1,1,325368,0,6782.991,30.423,1,12,1,10.30397,0,0,0,0,10.30397,0,0,0,2,0,4,59,20.7,0,53.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,53.4,8.822321,1.386294,2.332529,1 +13,3,0,1,2,325368,0,6782.991,31.423,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,59,20.7,0,53.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,53.4,8.822321,1.386294,,0 +13,3,0,1,3,325368,0,6782.991,32.423,1,12,1,46.81404,0,0,0,0,46.81404,0,0,0,3,0,4,59,20.7,0,53.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,53.4,8.822321,1.386294,3.846183,1 +13,3,0,1,1,325369,0,6782.991,29.10335,0,12,1,44.14219,4.574961,0,0,0,48.71716,0,0,0,3,0,4,51.6,6.9,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,8.822321,1.386294,3.886031,1 +13,3,0,1,2,325369,0,6782.991,30.10335,0,12,1,50.18939,0,0,0,0,50.18939,0,0,0,2,0,4,51.6,6.9,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,8.822321,1.386294,3.915804,1 +13,3,0,1,3,325369,0,6782.991,31.10335,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,51.6,6.9,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,8.822321,1.386294,,0 +5,3,25,0,1,325393,0,14302.64,37.12252,0,9,1,13.91036,1.442555,0,0,0,15.35291,0,0,0,2,0,6,81.9,6.9,0,86.4,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.56827,1.791759,2.731305,1 +5,3,25,0,2,325393,0,14302.64,38.12252,0,9,1,0,2.225379,0,0,0,2.225379,0,0,0,0,0,6,81.9,6.9,0,86.4,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.56827,1.791759,.7999271,1 +5,3,25,0,3,325393,0,14302.64,39.12252,0,9,1,431.7902,4.291287,0,0,0,436.0815,0,0,0,1,0,6,81.9,6.9,0,86.4,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.56827,1.791759,6.077829,1 +5,3,25,0,1,325394,0,14302.64,15.41958,1,12,1,10.30397,0,0,0,0,10.30397,0,0,0,1,0,6,64.9,6.9,0,85.2,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.56827,1.791759,2.332529,1 +5,3,25,0,2,325394,0,14302.64,16.41957,1,12,1,7.102273,1.609848,0,0,0,8.712121,0,0,0,1,0,6,64.9,6.9,0,85.2,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.56827,1.791759,2.164715,1 +5,3,25,0,3,325394,0,14302.64,17.41957,1,12,1,6.501951,2.340702,0,0,0,8.842652,0,0,0,1,0,6,64.9,6.9,0,85.2,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.56827,1.791759,2.179587,1 +5,3,25,0,1,325395,0,14302.64,35.85763,1,12,1,23.18393,2.472952,28.85111,0,0,54.50798,0,0,0,3,0,6,71.8,10.3,0,86.4,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.56827,1.791759,3.998347,1 +5,3,25,0,2,325395,0,14302.64,36.85763,1,12,1,51.01799,2.272727,13.25758,0,0,66.54829,0,0,0,4,0,6,71.8,10.3,0,86.4,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.56827,1.791759,4.197928,1 +5,3,25,0,3,325395,0,14302.64,37.85763,1,12,1,65.6697,15.69137,33.15995,0,0,114.521,0,0,0,4,0,6,71.8,10.3,0,86.4,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.56827,1.791759,4.740758,1 +5,3,25,0,1,325396,0,14302.64,6.069815,0,12,1,48.42865,1.081917,0,0,0,49.51056,0,0,0,3,0,6,96.7,9.967326,0,88.9,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,88.9,9.56827,1.791759,3.902186,1 +5,3,25,0,2,325396,0,14302.64,7.069815,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,96.7,9.967326,0,88.9,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,88.9,9.56827,1.791759,,0 +5,3,25,0,3,325396,0,14302.64,8.069816,0,12,1,7.802341,4.421326,0,0,0,12.22367,0,0,0,1,0,6,96.7,9.967326,0,88.9,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,88.9,9.56827,1.791759,2.503374,1 +5,3,25,0,1,325397,0,14302.64,4.73922,0,12,1,11.84956,6.697578,0,0,0,18.54714,0,0,0,2,0,6,83.39137,9.967326,0,85.2,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.56827,1.791759,2.920316,1 +5,3,25,0,2,325397,0,14302.64,5.73922,0,12,1,171.1884,0,7.575758,0,0,178.7642,0,0,0,3,1,6,83.39137,9.967326,0,85.2,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.56827,1.791759,5.186068,1 +5,3,25,0,3,325397,0,14302.64,6.73922,0,12,1,7.802341,0,0,0,0,7.802341,0,0,0,1,0,6,83.39137,9.967326,0,85.2,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.56827,1.791759,2.054424,1 +5,3,25,0,1,325398,0,14302.64,12.62149,0,12,1,23.10149,4.430706,28.33591,0,0,55.86811,0,0,0,2,0,6,81.7,9.967326,0,63,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,63,9.56827,1.791759,4.022994,1 +5,3,25,0,2,325398,0,14302.64,13.62149,0,12,1,9.469697,0,27.46212,0,0,36.93182,0,0,0,1,0,6,81.7,9.967326,0,63,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,63,9.56827,1.791759,3.609073,1 +5,3,25,0,3,325398,0,14302.64,14.62149,0,12,1,7.802341,0,0,0,0,7.802341,0,0,0,1,0,6,81.7,9.967326,0,63,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,63,9.56827,1.791759,2.054424,1 +10,3,50,1,1,325409,0,7415.836,55.00068,0,12,1,20.28081,0,0,0,0,20.28081,0,0,0,1,0,2,87.8,3.4,0,90.9,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,90.9,8.911508,.6931472,3.009675,1 +10,3,50,1,2,325409,0,7415.836,56.00068,0,12,1,42.23602,0,0,0,0,42.23602,0,0,0,3,0,2,87.8,3.4,0,90.9,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,90.9,8.911508,.6931472,3.743273,1 +10,3,50,1,3,325409,0,7415.836,57.00068,0,12,1,29.85075,0,29.41176,0,0,59.26251,0,0,0,1,1,2,87.8,3.4,0,90.9,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,90.9,8.911508,.6931472,4.081977,1 +10,3,50,1,1,325410,0,7415.836,50.88296,1,9,1,42.12169,0,0,0,0,42.12169,0,0,0,4,0,2,52.1,31,0,63.6,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,63.6,8.911508,.6931472,3.740563,1 +10,3,50,1,2,325410,0,7415.836,51.88296,1,9,1,78.35642,0,36.31152,0,0,114.6679,0,0,0,6,1,2,52.1,31,0,63.6,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,63.6,8.911508,.6931472,4.742041,1 +10,3,50,1,3,325410,0,7415.836,52.88296,1,9,1,59.70149,0,0,0,0,59.70149,0,0,0,5,0,2,52.1,31,0,63.6,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,63.6,8.911508,.6931472,4.089357,1 +14,3,95,0,1,325411,0,1652.199,60.13142,1,6,1,51.00464,8.114374,31.9423,0,0,91.06131,0,0,0,5,1,1,85.1,13.8,0,78.4,136.85,136.85,0,0,0,4.918885,0,4.564348,4.970179,1,0,0,78.4,7.410468,0,4.511533,1 +14,3,95,0,2,325411,0,1652.199,61.13142,1,6,1,33.61742,11.31629,0,0,0,44.93371,0,0,0,4,0,1,85.1,13.8,0,78.4,136.85,136.85,0,0,0,4.918885,0,4.564348,4.970179,1,0,0,78.4,7.410468,0,3.805188,1 +14,3,95,0,3,325411,0,1652.199,62.13142,1,6,1,26.44127,2.275683,0,0,0,28.71695,0,0,0,2,0,1,85.1,13.8,0,78.4,136.85,136.85,0,0,0,4.918885,0,4.564348,4.970179,1,0,0,78.4,7.410468,0,3.357487,1 +16,3,95,1,1,325415,0,9304.985,33.94661,0,18,1,31.4271,0,0,0,0,31.4271,0,0,0,1,1,4,69.1,13.8,0,56.8,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,56.8,9.138413,1.386294,3.44767,1 +16,3,95,1,2,325415,0,9304.985,34.94661,0,18,1,8.522727,0,0,0,0,8.522727,0,0,0,1,0,4,69.1,13.8,0,56.8,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,56.8,9.138413,1.386294,2.142736,1 +16,3,95,1,3,325415,0,9304.985,35.94661,0,18,1,0,0,0,0,0,0,0,0,0,0,0,4,69.1,13.8,0,56.8,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,56.8,9.138413,1.386294,,0 +16,3,95,1,1,325416,0,9304.985,7.74538,0,16,1,6.18238,10.38125,0,0,0,16.56363,0,0,0,1,0,4,85,9.967326,0,77.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,77.8,9.138413,1.386294,2.807209,1 +16,3,95,1,2,325416,0,9304.985,8.745379,0,16,1,5.681818,13.35227,0,0,0,19.03409,0,0,0,1,0,4,85,9.967326,0,77.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,77.8,9.138413,1.386294,2.946232,1 +16,3,95,1,3,325416,0,9304.985,9.745379,0,16,1,0,1.946251,0,0,0,1.946251,0,0,0,0,0,4,85,9.967326,0,77.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,77.8,9.138413,1.386294,.6659048,1 +16,3,95,1,1,325417,0,9304.985,9.314168,0,16,1,0,4.070067,0,0,0,4.070067,0,0,0,0,0,4,85,9.967326,0,92.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.138413,1.386294,1.403659,1 +16,3,95,1,2,325417,0,9304.985,10.31417,0,16,1,26.04167,2.34375,1.515152,0,0,29.90057,0,0,0,1,0,4,85,9.967326,0,92.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.138413,1.386294,3.397877,1 +16,3,95,1,3,325417,0,9304.985,11.31417,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,85,9.967326,0,92.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.138413,1.386294,,0 +16,3,95,1,1,325418,0,9304.985,33.02943,1,16,1,125.1932,0,0,0,0,125.1932,0,0,0,6,0,4,73.4,13.8,0,68.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,68.2,9.138413,1.386294,4.829858,1 +16,3,95,1,2,325418,0,9304.985,34.02943,1,16,1,9.469697,0,0,0,0,9.469697,0,0,0,0,1,4,73.4,13.8,0,68.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,68.2,9.138413,1.386294,2.248097,1 +16,3,95,1,3,325418,0,9304.985,35.02943,1,16,1,9.536194,0,0,0,0,9.536194,0,0,0,1,0,4,73.4,13.8,0,68.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,68.2,9.138413,1.386294,2.255095,1 +11,3,0,1,1,325446,0,10994.72,27.34565,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,68.6,6.9,0,62.5,0,125.58,0,0,.6931472,4.832943,0,0,0,0,0,0,62.5,9.305262,.6931472,,0 +11,3,0,1,2,325446,0,10994.72,28.34565,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,68.6,6.9,0,62.5,0,125.58,0,0,.6931472,4.832943,0,0,0,0,0,0,62.5,9.305262,.6931472,,0 +11,3,0,1,3,325446,0,10994.72,29.34565,0,16,1,53.31599,0,28.17512,0,0,81.49111,0,0,0,1,1,3,68.6,6.9,0,62.5,0,125.58,0,0,1.098612,4.832943,0,0,0,0,0,0,62.5,9.305262,1.098612,4.400494,1 +11,3,0,1,1,325447,0,10994.72,23.24435,1,16,1,100.9789,16.43483,0,0,0,117.4137,0,0,0,7,0,2,80.3,10.3,0,70.5,0,125.58,0,0,.6931472,4.832943,0,0,0,0,0,0,70.5,9.305262,.6931472,4.765704,1 +11,3,0,1,2,325447,0,10994.72,24.24435,1,16,1,10.65341,0,0,0,814.7727,825.4261,1,0,0,1,0,2,80.3,10.3,0,70.5,0,125.58,0,0,.6931472,4.832943,0,0,0,0,0,0,70.5,9.305262,.6931472,6.7159,1 +11,3,0,1,3,325447,0,10994.72,25.24435,1,16,1,58.62592,0,0,0,0,58.62592,0,0,0,4,1,3,80.3,10.3,0,70.5,0,125.58,0,0,1.098612,4.832943,0,0,0,0,0,0,70.5,9.305262,1.098612,4.071177,1 +11,3,0,1,1,325452,0,2639.296,49.295,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,79.8,6.9,0,71.6,0,0,0,0,1.609438,0,0,0,0,0,0,0,71.6,7.878646,1.609438,,0 +11,3,0,1,2,325452,0,2639.296,50.295,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,6.9,0,71.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,71.6,7.878646,1.386294,,0 +11,3,0,1,3,325452,0,2639.296,51.295,0,12,1,10.2608,0,32.49252,0,0,42.75331,0,0,0,0,1,4,79.8,6.9,0,71.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,71.6,7.878646,1.386294,3.755447,1 +11,3,0,1,1,325453,0,2639.296,16.54757,0,12,1,46.10324,0,23.27935,0,0,69.38259,0,0,0,2,2,5,92,31,0,84.1,0,0,1,0,1.609438,0,0,0,0,1,0,0,84.1,7.878646,1.609438,4.239636,1 +11,3,0,1,2,325453,0,2639.296,17.54757,0,12,1,26.57343,1.300699,0,0,0,27.87413,0,0,0,1,0,4,92,31,0,84.1,0,0,1,0,1.386294,0,0,0,0,1,0,0,84.1,7.878646,1.386294,3.327699,1 +11,3,0,1,3,325453,0,2639.296,18.54757,0,12,1,75.75887,0,23.51432,0,0,99.27319,0,0,0,2,1,4,92,31,0,84.1,0,0,0,0,1.386294,0,0,0,0,1,0,0,84.1,7.878646,1.386294,4.597876,1 +11,3,0,1,1,325454,0,2639.296,13.16085,1,12,1,96.25506,1.012146,23.27935,0,0,120.5466,0,0,0,3,1,5,85,9.967326,0,70.4,0,0,1,1,1.609438,0,0,0,0,1,0,0,70.4,7.878646,1.609438,4.792036,1 +11,3,0,1,2,325454,0,2639.296,14.16085,1,12,1,115.1515,8.811189,5.268065,0,0,129.2308,0,0,0,7,0,4,85,9.967326,0,70.4,0,0,1,1,1.386294,0,0,0,0,1,0,0,70.4,7.878646,1.386294,4.8616,1 +11,3,0,1,3,325454,0,2639.296,15.16085,1,12,1,67.50748,15.90423,0,0,0,83.41171,0,0,0,2,0,4,85,9.967326,0,70.4,0,0,1,1,1.386294,0,0,0,0,1,0,0,70.4,7.878646,1.386294,4.423789,1 +11,3,0,1,1,325455,0,2639.296,45.4319,1,12,1,10.62753,0,39.47368,0,0,50.10122,0,0,0,0,1,5,81.4,6.9,0,85.2,0,0,0,0,1.609438,0,0,0,0,0,1,0,85.2,7.878646,1.609438,3.914045,1 +11,3,0,1,2,325455,0,2639.296,46.4319,1,12,1,72.26107,0,0,0,0,72.26107,0,0,0,2,0,4,81.4,6.9,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,1,0,85.2,7.878646,1.386294,4.280285,1 +11,3,0,1,3,325455,0,2639.296,47.4319,1,12,1,69.6879,0,34.63018,0,0,104.3181,0,0,0,0,1,4,81.4,6.9,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,1,0,85.2,7.878646,1.386294,4.647445,1 +13,3,0,0,1,325456,0,2691.496,57.40452,1,6,1,24.4204,11.97836,0,0,0,36.39876,0,0,0,1,0,1,81.9,17.2,0,78.4,150,161.4,0,0,0,5.083886,1,4.564348,5.061929,1,0,0,78.4,7.898224,0,3.594535,1 +13,3,0,0,2,325456,0,2691.496,58.40452,1,6,1,37.4053,6.155303,0,0,0,43.56061,0,0,0,2,0,1,81.9,17.2,0,78.4,150,161.4,0,0,0,5.083886,1,4.564348,5.061929,1,0,0,78.4,7.898224,0,3.774153,1 +13,3,0,0,3,325456,0,2691.496,59.40452,1,6,1,0,0,0,0,0,0,0,0,0,0,0,1,81.9,17.2,0,78.4,150,161.4,0,0,0,5.083886,1,4.564348,5.061929,1,0,0,78.4,7.898224,0,,0 +11,3,0,1,1,325457,0,11930.97,17.50582,1,9,1,96.01634,31.84372,0,0,0,127.8601,0,0,0,11,0,7,44.1,13.8,0,56.8,0,46.68,1,1,1.94591,3.843316,0,0,0,0,0,0,56.8,9.386976,1.94591,4.850936,1 +11,3,0,1,2,325457,0,11930.97,18.50582,1,9,1,424.9883,100.872,20.62822,0,1213.113,1759.601,2,0,0,20,1,7,44.1,13.8,0,56.8,0,46.68,0,0,1.94591,3.843316,0,0,0,0,0,0,56.8,9.386976,1.94591,7.472843,1 +11,3,0,1,1,325458,0,11930.97,13.48392,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,50,9.967326,1,51.9,0,46.68,1,0,1.94591,3.843316,0,0,0,1,0,0,51.9,9.386976,1.94591,,0 +11,3,0,1,2,325458,0,11930.97,14.48392,0,9,1,172.9958,25.99625,0,0,1205.279,1404.271,1,0,0,4,6,7,50,9.967326,1,51.9,0,46.68,1,0,1.94591,3.843316,0,0,0,1,0,0,51.9,9.386976,1.94591,7.247273,1 +11,3,0,1,3,325458,0,11930.97,15.48392,0,9,1,115.0903,1.504729,0,0,343.0997,459.6948,1,0,0,5,0,6,50,9.967326,1,51.9,0,46.68,1,0,1.791759,3.843316,0,0,0,1,0,0,51.9,9.386976,1.791759,6.130563,1 +11,3,0,1,1,325459,0,11930.97,43.76455,1,9,1,85.29111,0,21.45046,0,0,106.7416,0,0,0,1,13,7,69.7,3.4,1,60.2,0,46.68,0,0,1.94591,3.843316,0,0,0,1,0,0,60.2,9.386976,1.94591,4.670411,1 +11,3,0,1,2,325459,0,11930.97,44.76455,1,9,1,96.34318,3.914674,0,0,0,100.2579,0,0,0,2,14,7,69.7,3.4,1,60.2,0,46.68,0,0,1.94591,3.843316,0,0,0,1,0,0,60.2,9.386976,1.94591,4.607745,1 +11,3,0,1,3,325459,0,11930.97,45.76455,1,9,1,134.9957,22.97936,0,0,0,157.9751,0,0,0,15,17,6,69.7,3.4,1,60.2,0,46.68,0,0,1.791759,3.843316,0,0,0,1,0,0,60.2,9.386976,1.791759,5.062437,1 +11,3,0,1,1,325460,0,11930.97,18.45859,0,11,1,29.11134,2.911134,43.41164,0,0,75.43412,0,0,0,1,2,7,89.9,3.4,0,78.4,0,46.68,0,0,1.94591,3.843316,0,0,0,0,0,0,78.4,9.386976,1.94591,4.32326,1 +11,3,0,1,2,325460,0,11930.97,19.45859,0,11,1,5.625879,4.866385,0,0,0,10.49226,0,0,0,1,0,7,89.9,3.4,0,78.4,0,46.68,0,0,1.94591,3.843316,0,0,0,0,0,0,78.4,9.386976,1.94591,2.350638,1 +11,3,0,1,3,325460,0,11930.97,20.45859,0,11,1,25.79536,45.34394,0,0,0,71.1393,0,0,0,3,0,6,89.9,3.4,0,78.4,0,46.68,0,0,1.791759,3.843316,0,0,0,0,0,0,78.4,9.386976,1.791759,4.26464,1 +11,3,0,1,1,325461,0,11930.97,51.83025,0,6,1,83.24821,0,0,0,0,83.24821,0,0,0,2,7,7,53.7,13.8,0,43.2,0,46.68,0,0,1.94591,3.843316,0,0,0,1,0,0,43.2,9.386976,1.94591,4.421827,1 +11,3,0,1,2,325461,0,11930.97,52.83025,0,6,1,0,0,0,0,0,0,0,0,0,0,0,7,53.7,13.8,0,43.2,0,46.68,0,0,1.94591,3.843316,0,0,0,1,0,0,43.2,9.386976,1.94591,,0 +11,3,0,1,3,325461,0,11930.97,53.83025,0,6,1,26.22528,5.717971,0,0,0,31.94325,0,0,0,1,0,6,53.7,13.8,0,43.2,0,46.68,0,0,1.791759,3.843316,0,0,0,1,0,0,43.2,9.386976,1.791759,3.463961,1 +11,3,0,1,1,325462,0,11930.97,14.76523,0,9,1,50.2809,0,0,0,0,50.2809,0,0,0,3,0,7,78.7,6.9,1,67,0,46.68,1,0,1.94591,3.843316,0,0,0,0,0,0,67,9.386976,1.94591,3.917625,1 +11,3,0,1,2,325462,0,11930.97,15.76523,0,9,1,56.72762,7.618378,0,0,842.5316,906.8776,1,0,0,5,1,7,78.7,6.9,1,67,0,46.68,1,0,1.94591,3.843316,0,0,0,0,0,0,67,9.386976,1.94591,6.810008,1 +11,3,0,1,3,325462,0,11930.97,16.76523,0,9,1,27.94497,39.40241,0,0,0,67.34737,0,0,0,4,0,6,78.7,6.9,1,67,0,46.68,1,0,1.791759,3.843316,0,0,0,0,0,0,67,9.386976,1.791759,4.209864,1 +11,3,0,1,1,325463,0,11930.97,7.08282,0,9,1,116.4454,15.83248,0,0,0,132.2778,0,0,0,4,0,7,91.7,9.967326,0,88.9,0,46.68,1,0,1.94591,3.843316,0,0,0,0,0,0,88.9,9.386976,1.94591,4.884904,1 +11,3,0,1,2,325463,0,11930.97,8.08282,0,9,1,89.73277,21.00328,0,0,0,110.7361,0,0,0,7,0,7,91.7,9.967326,0,88.9,0,46.68,1,0,1.94591,3.843316,0,0,0,0,0,0,88.9,9.386976,1.94591,4.70715,1 +11,3,0,1,3,325463,0,11930.97,9.08282,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,91.7,9.967326,0,88.9,0,46.68,1,0,1.791759,3.843316,0,0,0,0,0,0,88.9,9.386976,1.791759,,0 +11,3,0,1,1,325498,0,5513.196,21.8809,0,9,1,101.9408,0,28.08989,0,0,130.0306,0,0,0,6,0,3,98.9,0,0,86.4,0,78,0,0,1.098612,4.356709,0,0,0,1,0,0,86.4,8.615081,1.098612,4.86777,1 +11,3,0,1,2,325498,0,5513.196,22.8809,0,9,1,28.12939,0,14.0647,0,0,42.19409,0,0,0,2,0,3,98.9,0,0,86.4,0,78,0,0,1.098612,4.356709,0,0,0,1,0,0,86.4,8.615081,1.098612,3.74228,1 +11,3,0,1,3,325498,0,5513.196,23.8809,0,9,1,60.18917,0,23.64574,0,0,83.83491,0,0,0,3,0,3,98.9,0,0,86.4,0,78,0,0,1.098612,4.356709,0,0,0,1,0,0,86.4,8.615081,1.098612,4.42885,1 +10,3,50,0,1,325501,0,6217.595,26.47228,0,14,1,5.200208,0,0,0,0,5.200208,0,0,0,1,0,3,68.1,0,0,94,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,94,8.735299,1.098612,1.648699,1 +10,3,50,0,2,325501,0,6217.595,27.47228,0,14,1,0,0,0,0,0,0,0,0,0,0,0,3,68.1,0,0,94,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,94,8.735299,1.098612,,0 +10,3,50,0,3,325501,0,6217.595,28.47228,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,68.1,0,0,94,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,94,8.735299,1.386294,,0 +10,3,50,0,1,325502,0,6217.595,2.68857,1,12,1,69.68279,1.092044,0,0,0,70.77483,0,0,0,7,0,3,83.39137,9.967326,0,96.3,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,96.3,8.735299,1.098612,4.259503,1 +10,3,50,0,2,325502,0,6217.595,3.68857,1,12,1,7.644529,0,0,0,0,7.644529,0,0,0,1,0,3,83.39137,9.967326,0,96.3,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,96.3,8.735299,1.098612,2.03399,1 +10,3,50,0,3,325502,0,6217.595,4.68857,1,12,1,67.16418,0,22.82704,0,0,89.99122,0,0,0,7,0,4,83.39137,9.967326,0,96.3,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,96.3,8.735299,1.386294,4.499712,1 +10,3,50,0,1,325503,0,6217.595,26.15195,1,12,1,31.20125,6.541862,0,0,0,37.74311,0,0,0,3,0,3,43.2,10.3,0,79.5,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.5,8.735299,1.098612,3.630803,1 +10,3,50,0,2,325503,0,6217.595,27.15195,1,12,1,33.44482,0,0,0,533.4448,566.8896,1,0,0,1,0,3,43.2,10.3,0,79.5,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.5,8.735299,1.098612,6.340165,1 +10,3,50,0,3,325503,0,6217.595,28.15195,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,43.2,10.3,0,79.5,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.5,8.735299,1.386294,,0 +11,3,0,1,1,325504,0,6409.971,24.44353,0,16,1,24.21432,6.841834,29.10871,0,0,60.16486,0,0,0,1,1,1,96.3,3.4,0,83,0,126,0,0,0,4.836282,0,0,0,0,0,0,83,8.765766,0,4.097088,1 +11,3,0,1,2,325504,0,6409.971,25.44353,0,16,1,48.29546,5.222538,11.79924,0,0,65.31724,0,0,0,2,1,1,96.3,3.4,0,83,0,126,0,0,0,4.836282,0,0,0,0,0,0,83,8.765766,0,4.179256,1 +11,3,0,1,3,325504,0,6409.971,26.44353,0,16,1,8.669268,0,28.80364,0,0,37.47291,0,0,0,0,1,1,96.3,3.4,0,83,0,126,0,0,0,4.836282,0,0,0,0,0,0,83,8.765766,0,3.623618,1 +17,3,25,0,1,325556,0,7196.79,22.69131,1,12,1,58.22268,3.064351,26.04699,0,0,87.33401,0,0,0,2,1,1,79.8,6.9,0,76.1,0,0,0,0,0,0,0,3.258096,0,1,0,0,76.1,8.881529,0,4.46974,1 +17,3,25,0,2,325556,0,7196.79,23.69131,1,12,1,62.82232,4.871074,0,0,0,67.69339,0,0,0,4,0,1,79.8,6.9,0,76.1,0,0,0,0,0,0,0,3.258096,0,1,0,0,76.1,8.881529,0,4.214989,1 +17,3,25,0,3,325556,0,7196.79,24.69131,1,12,1,17.19691,0,266.552,0,0,283.7489,0,0,0,1,1,1,79.8,6.9,0,76.1,0,0,0,0,0,0,0,3.258096,0,1,0,0,76.1,8.881529,0,5.64809,1 +11,3,0,1,1,325579,0,5499.707,24.65708,1,12,1,10.40042,0,19.76079,0,0,30.16121,0,0,0,0,1,2,73.4,3.4,0,67,0,76.7,0,0,.6931472,4.339902,0,0,0,0,0,0,67,8.612632,.6931472,3.406557,1 +11,3,0,1,2,325579,0,5499.707,25.65708,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.4,3.4,0,67,0,76.7,0,0,.6931472,4.339902,0,0,0,0,0,0,67,8.612632,.6931472,,0 +11,3,0,1,3,325579,0,5499.707,26.65708,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.4,3.4,0,67,0,76.7,0,0,.6931472,4.339902,0,0,0,0,0,0,67,8.612632,.6931472,,0 +11,3,0,1,4,325579,0,5499.707,27.65708,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.4,3.4,0,67,0,76.7,0,0,.6931472,4.339902,0,0,0,0,0,0,67,8.612632,.6931472,,0 +11,3,0,1,5,325579,0,5499.707,28.65708,1,12,1,0,1.84554,0,0,0,1.84554,0,0,0,0,0,2,73.4,3.4,0,67,0,76.7,0,0,.6931472,4.339902,0,0,0,0,0,0,67,8.612632,.6931472,.612772,1 +11,3,0,1,1,325580,0,5499.707,24.58864,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,92,3.4,0,73.9,0,76.7,0,0,.6931472,4.339902,0,0,0,0,0,0,73.9,8.612632,.6931472,,0 +11,3,0,1,2,325580,0,5499.707,25.58864,0,12,1,114.8829,2.331581,0,0,904.9785,1022.193,1,0,0,9,0,2,92,3.4,0,73.9,0,76.7,0,0,.6931472,4.339902,0,0,0,0,0,0,73.9,8.612632,.6931472,6.929706,1 +11,3,0,1,3,325580,0,5499.707,26.58864,0,12,1,6.584723,0,0,0,0,6.584723,0,0,0,1,0,2,92,3.4,0,73.9,0,76.7,0,0,.6931472,4.339902,0,0,0,0,0,0,73.9,8.612632,.6931472,1.884752,1 +11,3,0,1,4,325580,0,5499.707,27.58864,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,92,3.4,0,73.9,0,76.7,0,0,.6931472,4.339902,0,0,0,0,0,0,73.9,8.612632,.6931472,,0 +11,3,0,1,5,325580,0,5499.707,28.58864,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,92,3.4,0,73.9,0,76.7,0,0,.6931472,4.339902,0,0,0,0,0,0,73.9,8.612632,.6931472,,0 +11,3,0,1,1,325582,0,5739.003,.7282683,1,12,1,26.00104,6.890275,0,0,0,32.89132,0,0,0,4,0,3,83.39137,9.967326,0,96.3,0,156.36,1,1,1.098612,5.052161,0,0,0,1,0,0,96.3,8.655215,1.098612,3.493209,1 +11,3,0,1,2,325582,0,5739.003,1.728268,1,12,1,5.733397,.9555662,0,0,0,6.688963,0,0,0,1,0,3,83.39137,9.967326,0,96.3,0,156.36,1,1,1.098612,5.052161,0,0,0,1,0,0,96.3,8.655215,1.098612,1.900459,1 +11,3,0,1,3,325582,0,5739.003,2.728268,1,12,1,59.70149,8.669886,0,0,0,68.37138,0,0,0,6,0,3,83.39137,9.967326,0,96.3,0,156.36,1,1,1.098612,5.052161,0,0,0,1,0,0,96.3,8.655215,1.098612,4.224954,1 +11,3,0,1,4,325582,0,5739.003,3.728268,1,12,1,54.64699,5.384922,0,0,0,60.03191,0,0,0,5,0,3,83.39137,9.967326,0,96.3,0,156.36,1,1,1.098612,5.052161,0,0,0,1,0,0,96.3,8.655215,1.098612,4.094876,1 +11,3,0,1,5,325582,0,5739.003,4.728268,1,12,1,104.6773,3.226976,0,0,458.6657,566.57,1,0,0,5,3,4,83.39137,9.967326,0,96.3,0,156.36,1,1,1.386294,5.052161,0,0,0,1,0,0,96.3,8.655215,1.386294,6.339601,1 +11,3,0,1,1,325583,0,5739.003,20.82957,0,12,1,15.60062,7.072283,0,0,616.4274,639.1003,1,0,0,3,0,3,72.3,3.4,0,54.5,0,156.36,0,0,1.098612,5.052161,0,0,0,1,0,0,54.5,8.655215,1.098612,6.460062,1 +11,3,0,1,2,325583,0,5739.003,21.82957,0,12,1,41.51935,4.061156,0,0,0,45.58051,0,0,0,3,0,3,72.3,3.4,0,54.5,0,156.36,0,0,1.098612,5.052161,0,0,0,1,0,0,54.5,8.655215,1.098612,3.81948,1 +11,3,0,1,3,325583,0,5739.003,22.82957,0,12,1,8.779632,4.223002,0,0,0,13.00263,0,0,0,1,0,3,72.3,3.4,0,54.5,0,156.36,0,0,1.098612,5.052161,0,0,0,1,0,0,54.5,8.655215,1.098612,2.565152,1 +11,3,0,1,4,325583,0,5739.003,23.82957,0,12,1,119.4256,4.786598,24.73075,0,0,148.943,0,0,0,3,0,3,72.3,3.4,0,54.5,0,156.36,0,0,1.098612,5.052161,0,0,0,1,0,0,54.5,8.655215,1.098612,5.003563,1 +11,3,0,1,5,325583,0,5739.003,24.82957,0,12,1,52.68311,29.94924,0,0,0,82.63234,0,0,0,2,4,4,72.3,3.4,0,54.5,0,156.36,0,0,1.386294,5.052161,0,0,0,1,0,0,54.5,8.655215,1.386294,4.414401,1 +11,3,0,1,1,325584,0,5739.003,20.29295,1,12,1,132.2673,44.19137,30.16121,0,0,206.6199,0,0,0,4,0,3,76.1,3.4,0,83,0,156.36,0,0,1.098612,5.052161,0,0,0,1,0,0,83,8.655215,1.098612,5.330881,1 +11,3,0,1,2,325584,0,5739.003,21.29295,1,12,1,70.7119,17.27664,0,0,0,87.98853,0,0,0,3,0,3,76.1,3.4,0,83,0,156.36,0,0,1.098612,5.052161,0,0,0,1,0,0,83,8.655215,1.098612,4.477207,1 +11,3,0,1,3,325584,0,5739.003,22.29295,1,12,1,79.71906,17.51536,26.33889,0,0,123.5733,0,0,0,4,0,3,76.1,3.4,0,83,0,156.36,0,0,1.098612,5.052161,0,0,0,1,0,0,83,8.655215,1.098612,4.816834,1 +11,3,0,1,4,325584,0,5739.003,23.29295,1,12,1,159.3937,42.19785,0,0,820.1037,1021.695,1,0,0,1,0,3,76.1,3.4,0,83,0,156.36,0,0,1.098612,5.052161,0,0,0,1,0,0,83,8.655215,1.098612,6.929219,1 +11,3,0,1,5,325584,0,5739.003,24.29295,1,12,1,11.96519,3.390138,23.93038,0,0,39.28571,0,0,0,1,0,4,76.1,3.4,0,83,0,156.36,0,0,1.386294,5.052161,0,0,0,1,0,0,83,8.655215,1.386294,3.670861,1 +10,3,50,1,1,325589,0,10476.83,18.07529,0,11,1,109.4229,3.881512,0,0,0,113.3044,0,0,0,9,0,4,80.3,3.4,0,67.9,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,67.9,9.257017,1.386294,4.730078,1 +10,3,50,1,2,325589,0,10476.83,19.07529,0,11,1,301.1252,7.116737,0,0,254.0788,562.3207,1,0,0,4,0,4,80.3,3.4,0,67.9,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,67.9,9.257017,1.386294,6.332072,1 +10,3,50,1,3,325589,0,10476.83,20.07529,0,11,1,21.49613,0,0,0,0,21.49613,0,0,0,2,0,4,80.3,3.4,0,67.9,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,67.9,9.257017,1.386294,3.067873,1 +10,3,50,1,1,325590,0,10476.83,40.45174,1,15,1,9.703779,0,0,0,0,9.703779,0,0,0,1,0,4,86.2,10.3,0,71.6,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,71.6,9.257017,1.386294,2.272516,1 +10,3,50,1,2,325590,0,10476.83,41.45174,1,15,1,37.50586,9.198312,38.6451,0,0,85.34927,0,0,0,1,1,4,86.2,10.3,0,71.6,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,71.6,9.257017,1.386294,4.446752,1 +10,3,50,1,3,325590,0,10476.83,42.45174,1,15,1,46.68959,8.968185,19.77644,0,0,75.43422,0,0,0,3,1,4,86.2,10.3,0,71.6,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,71.6,9.257017,1.386294,4.323261,1 +10,3,50,1,1,325591,0,10476.83,45.1499,0,14,1,8.171603,0,0,0,0,8.171603,0,0,0,1,0,4,82.4,6.9,0,69.3,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.257017,1.386294,2.100665,1 +10,3,50,1,2,325591,0,10476.83,46.1499,0,14,1,73.55836,0,8.438819,0,0,81.99718,0,0,0,1,0,4,82.4,6.9,0,69.3,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.257017,1.386294,4.406685,1 +10,3,50,1,3,325591,0,10476.83,47.1499,0,14,1,9.028375,0,10.74806,0,0,19.77644,0,0,0,0,1,4,82.4,6.9,0,69.3,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.257017,1.386294,2.984491,1 +10,3,50,1,1,325592,0,10476.83,15.83025,0,15,1,14.30031,0,30.64351,0,0,44.94382,0,0,0,1,1,4,87.2,13.8,0,91.7,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,91.7,9.257017,1.386294,3.805413,1 +10,3,50,1,2,325592,0,10476.83,16.83025,0,15,1,15.47117,5.185185,11.72058,0,0,32.37693,0,0,0,1,1,4,87.2,13.8,0,91.7,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,91.7,9.257017,1.386294,3.477446,1 +10,3,50,1,3,325592,0,10476.83,17.83025,0,15,1,54.94411,0,6.981943,0,0,61.92605,0,0,0,2,1,4,87.2,13.8,0,91.7,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,91.7,9.257017,1.386294,4.125941,1 +6,3,25,1,1,325596,0,3937.83,16.45996,1,14,1,26.06275,0,30.36437,0,0,56.42712,0,0,0,1,0,2,82.4,6.9,0,64.8,500.4,500.4,1,1,.6931472,6.215408,0,3.258096,7.601702,1,0,0,64.8,8.278639,.6931472,4.03295,1 +6,3,25,1,2,325596,0,3937.83,17.45996,1,14,1,0,0,0,0,0,0,0,0,0,0,0,2,82.4,6.9,0,64.8,500.4,500.4,1,1,.6931472,6.215408,0,3.258096,7.601702,1,0,0,64.8,8.278639,.6931472,,0 +6,3,25,1,3,325596,0,3937.83,18.45996,1,14,1,8.550663,0,25.65199,0,0,34.20265,0,0,0,1,0,2,82.4,6.9,0,64.8,500.4,500.4,0,0,.6931472,6.215408,0,3.258096,7.601702,1,0,0,64.8,8.278639,.6931472,3.532303,1 +6,3,25,1,1,325597,0,3937.83,40.60233,1,14,1,64.5496,2.682186,32.38866,0,0,99.62045,0,0,0,3,0,2,83.5,24.1,0,71.6,500.4,500.4,0,0,.6931472,6.215408,0,3.258096,7.601702,1,0,0,71.6,8.278639,.6931472,4.601367,1 +6,3,25,1,2,325597,0,3937.83,41.60233,1,14,1,0,0,0,0,0,0,0,0,0,0,0,2,83.5,24.1,0,71.6,500.4,500.4,0,0,.6931472,6.215408,0,3.258096,7.601702,1,0,0,71.6,8.278639,.6931472,,0 +6,3,25,1,3,325597,0,3937.83,42.60233,1,14,1,15.81873,6.669517,0,0,0,22.48824,0,0,0,2,0,2,83.5,24.1,0,71.6,500.4,500.4,0,0,.6931472,6.215408,0,3.258096,7.601702,1,0,0,71.6,8.278639,.6931472,3.112993,1 +11,3,0,1,1,325601,0,5852.786,9.845311,0,10,1,0,5.255023,0,0,0,5.255023,0,0,0,0,0,4,61.7,9.967326,0,59.3,0,383.52,1,0,1.386294,5.949392,0,0,0,0,0,0,59.3,8.674844,1.386294,1.659184,1 +11,3,0,1,2,325601,0,5852.786,10.84531,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,61.7,9.967326,0,59.3,0,383.52,1,0,1.386294,5.949392,0,0,0,0,0,0,59.3,8.674844,1.386294,,0 +11,3,0,1,3,325601,0,5852.786,11.84531,0,10,1,8.669268,0,0,0,0,8.669268,0,0,0,0,1,4,61.7,9.967326,0,59.3,0,383.52,1,0,1.386294,5.949392,0,0,0,0,0,0,59.3,8.674844,1.386294,2.159784,1 +11,3,0,1,1,325602,0,5852.786,37.96304,0,9,1,25.75992,3.863988,0,0,0,29.62391,0,0,0,3,0,4,54.3,24.1,1,39.8,0,383.52,0,0,1.386294,5.949392,0,0,0,1,0,0,39.8,8.674844,1.386294,3.388582,1 +11,3,0,1,2,325602,0,5852.786,38.96304,0,9,1,0,.6770833,0,0,0,.6770833,0,0,0,0,0,4,54.3,24.1,1,39.8,0,383.52,0,0,1.386294,5.949392,0,0,0,1,0,0,39.8,8.674844,1.386294,-.3899609,1 +11,3,0,1,3,325602,0,5852.786,39.96304,0,9,1,113.5674,26.18119,29.47551,0,0,169.2241,0,0,0,4,1,4,54.3,24.1,1,39.8,0,383.52,0,0,1.386294,5.949392,0,0,0,1,0,0,39.8,8.674844,1.386294,5.131224,1 +11,3,0,1,1,325603,0,5852.786,12.29569,0,10,1,53.58063,5.280783,0,0,0,58.86141,0,0,0,3,0,4,60,9.967326,0,70.4,0,383.52,1,0,1.386294,5.949392,0,0,0,0,0,0,70.4,8.674844,1.386294,4.075186,1 +11,3,0,1,2,325603,0,5852.786,13.29569,0,10,1,0,.6770833,0,0,0,.6770833,0,0,0,0,0,4,60,9.967326,0,70.4,0,383.52,1,0,1.386294,5.949392,0,0,0,0,0,0,70.4,8.674844,1.386294,-.3899609,1 +11,3,0,1,3,325603,0,5852.786,14.29569,0,10,1,16.03815,6.025141,0,0,0,22.06329,0,0,0,2,0,4,60,9.967326,0,70.4,0,383.52,1,0,1.386294,5.949392,0,0,0,0,0,0,70.4,8.674844,1.386294,3.093915,1 +11,3,0,1,1,325604,0,5852.786,48.32581,1,10,1,30.9119,8.629572,28.33591,0,0,67.87738,0,0,0,3,1,4,70.2,20.7,1,54.5,0,383.52,0,0,1.386294,5.949392,0,0,0,1,0,0,54.5,8.674844,1.386294,4.217703,1 +11,3,0,1,2,325604,0,5852.786,49.32581,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,70.2,20.7,1,54.5,0,383.52,0,0,1.386294,5.949392,0,0,0,1,0,0,54.5,8.674844,1.386294,,0 +11,3,0,1,3,325604,0,5852.786,50.32581,1,10,1,52.44907,12.52709,29.04205,0,0,94.0182,0,0,0,3,1,4,70.2,20.7,1,54.5,0,383.52,0,0,1.386294,5.949392,0,0,0,1,0,0,54.5,8.674844,1.386294,4.543489,1 +11,3,0,0,1,325625,0,4987.683,30.57084,1,10,1,129.7804,112.0276,26.04699,0,0,267.8549,0,0,2,8,3,4,59,20.7,1,50,0,0,0,0,1.386294,0,0,0,0,1,0,0,50,8.514927,1.386294,5.590446,1 +11,3,0,0,2,325625,0,4987.683,31.57084,1,10,1,66.10408,194.3554,0,0,608.0778,868.5373,2,0,0,8,0,3,59,20.7,1,50,0,0,0,0,1.098612,0,0,0,0,1,0,0,50,8.514927,1.098612,6.76681,1 +11,3,0,0,3,325625,0,4987.683,32.57084,1,10,1,118.5684,163.7016,0,0,262.8461,545.1161,1,0,0,10,0,1,59,20.7,1,50,0,0,0,0,0,0,0,0,0,1,0,0,50,8.514927,0,6.300999,1 +11,3,0,0,4,325625,0,4987.683,33.57084,1,10,1,125.0485,169.1935,0,81.42691,0,294.2419,0,0,9,8,0,1,59,20.7,1,50,0,0,0,0,0,0,0,0,0,1,0,0,50,8.514927,0,5.684402,1 +11,3,0,0,5,325625,0,4987.683,34.57084,1,10,1,185.4919,93.08209,0,307.8556,294.4657,573.0396,1,0,26,13,0,1,59,20.7,1,50,0,0,0,0,0,0,0,0,0,1,0,0,50,8.514927,0,6.350955,1 +11,3,0,0,1,325626,0,4987.683,7.288159,0,10,1,94.84678,.1276813,0,255.3626,0,94.97446,0,0,5,5,0,4,96.7,9.967326,0,96.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,96.3,8.514927,1.386294,4.553608,1 +11,3,0,0,2,325626,0,4987.683,8.288158,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,96.7,9.967326,0,96.3,0,0,1,0,1.098612,0,0,0,0,0,0,0,96.3,8.514927,1.098612,,0 +11,3,0,0,1,325627,0,4987.683,46.66667,0,6,1,85.6333,66.5475,117.9775,122.5741,0,270.1583,0,0,8,6,1,4,62.3,10.3,1,53.4,0,0,0,0,1.386294,0,0,0,0,0,1,0,53.4,8.514927,1.386294,5.599008,1 +11,3,0,0,1,325628,0,4987.683,8.542094,0,10,1,0,16.34321,0,0,19240.6,19256.95,2,0,0,0,0,4,65,9.967326,1,70.4,0,0,1,0,1.386294,0,0,0,0,1,0,0,70.4,8.514927,1.386294,9.865627,1 +11,3,0,0,2,325628,0,4987.683,9.542094,0,10,1,39.84998,10.66573,0,0,0,50.51571,0,0,0,2,0,3,65,9.967326,1,70.4,0,0,1,0,1.098612,0,0,0,0,1,0,0,70.4,8.514927,1.098612,3.922284,1 +11,3,0,0,1,325629,0,1230.745,40.78029,1,6,1,67.72217,29.97957,38.81512,0,0,136.5169,0,0,0,3,1,1,19.1,10.3,0,44,0,0,0,0,0,0,0,0,0,0,1,0,44,7.116187,0,4.916448,1 +11,3,0,0,2,325629,0,1230.745,41.78029,1,6,1,33.98969,18.46226,21.56587,0,0,74.01781,0,0,0,3,0,1,19.1,10.3,0,44,0,0,0,0,0,0,0,0,0,0,1,0,44,7.116187,0,4.304306,1 +11,3,0,0,3,325629,0,1230.745,42.78029,1,6,1,176.6982,78.47807,0,0,0,255.1763,0,0,0,5,11,1,19.1,10.3,0,44,0,0,0,0,0,0,0,0,0,0,1,0,44,7.116187,0,5.541955,1 +11,3,0,0,4,325629,0,1230.745,43.78029,1,6,1,43.42768,74.53664,29.08104,0,0,147.0454,0,0,0,2,1,1,19.1,10.3,0,44,0,0,0,0,0,0,0,0,0,0,1,0,44,7.116187,0,4.990741,1 +11,3,0,0,5,325629,0,1230.745,44.78029,1,6,1,217.6221,78.76858,17.69285,0,0,314.0835,0,0,0,10,10,1,19.1,10.3,0,44,0,0,0,0,0,0,0,0,0,0,1,0,44,7.116187,0,5.749659,1 +13,3,0,0,1,325709,0,7961.291,34.26968,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,60.1,17.2,1,56.8,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,56.8,8.982472,1.609438,,0 +13,3,0,0,2,325709,0,7961.291,35.26968,0,12,1,20.54467,0,0,0,0,20.54467,0,0,0,1,0,5,60.1,17.2,1,56.8,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,56.8,8.982472,1.609438,3.022602,1 +13,3,0,0,3,325709,0,7961.291,36.26968,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,60.1,17.2,1,56.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,56.8,8.982472,1.386294,,0 +13,3,0,0,1,325710,0,7961.291,7.624915,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,9.967326,0,96.3,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.982472,1.609438,,0 +13,3,0,0,2,325710,0,7961.291,8.624914,1,10,1,7.644529,0,0,0,0,7.644529,0,0,0,0,0,5,86.7,9.967326,0,96.3,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.982472,1.609438,2.03399,1 +13,3,0,0,3,325710,0,7961.291,9.624914,1,10,1,53.77524,0,0,0,0,53.77524,0,0,0,2,0,4,86.7,9.967326,0,96.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.982472,1.386294,3.984813,1 +13,3,0,0,1,325711,0,7961.291,13.14168,1,10,1,0,0,0,31.20125,0,0,0,0,2,0,0,5,60,9.967326,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,8.982472,1.609438,,0 +13,3,0,0,2,325711,0,7961.291,14.14168,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,60,9.967326,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,8.982472,1.609438,,0 +13,3,0,0,1,325712,0,7961.291,10.89938,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,78.3,9.967326,0,85.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.982472,1.609438,,0 +13,3,0,0,2,325712,0,7961.291,11.89938,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,78.3,9.967326,0,85.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.982472,1.609438,,0 +13,3,0,0,3,325712,0,7961.291,12.89938,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,78.3,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.982472,1.386294,,0 +13,3,0,0,1,325713,0,7961.291,35.70979,1,10,1,5.720229,0,0,0,889.2668,894.987,1,0,0,1,0,5,81.4,17.2,0,84.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,84.1,8.982472,1.609438,6.796809,1 +13,3,0,0,2,325713,0,7961.291,36.70979,1,10,1,4.777831,0,0,0,0,4.777831,0,0,0,0,0,5,81.4,17.2,0,84.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,84.1,8.982472,1.609438,1.563987,1 +13,3,0,0,3,325713,0,7961.291,37.70979,1,10,1,1002.946,0,0,0,0,1002.946,0,0,0,10,0,4,81.4,17.2,0,84.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,84.1,8.982472,1.386294,6.910697,1 +6,3,25,0,1,325734,0,11425.81,58.52977,0,16,1,10.30397,0,21.63833,0,0,31.9423,0,0,0,0,1,2,91,6.9,0,95.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,95.5,9.343718,.6931472,3.463931,1 +6,3,25,0,2,325734,0,11425.81,59.52977,0,16,1,26.04167,0,16.57197,0,0,42.61364,0,0,0,1,1,2,91,6.9,0,95.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,95.5,9.343718,.6931472,3.752174,1 +6,3,25,0,1,325735,0,11425.81,59.37029,1,14,1,12.87996,0,30.3967,0,0,43.27666,0,0,0,1,0,2,77.7,3.4,0,77.3,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,77.3,9.343718,.6931472,3.767613,1 +6,3,25,0,2,325735,0,11425.81,60.37029,1,14,1,24.14773,0,0,0,0,24.14773,0,0,0,1,0,2,77.7,3.4,0,77.3,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,77.3,9.343718,.6931472,3.18419,1 +11,3,0,1,1,325736,0,7319.648,12.73922,1,3,1,24.51481,5.286006,0,0,0,29.80082,0,0,0,3,0,6,85,9.967326,0,92.6,0,429,1,1,1.791759,6.061457,0,0,0,0,0,0,92.6,8.898454,1.791759,3.394536,1 +11,3,0,1,2,325736,0,7319.648,13.73922,1,3,1,86.7323,0,0,0,0,86.7323,0,0,0,9,0,6,85,9.967326,0,92.6,0,429,1,1,1.791759,6.061457,0,0,0,0,0,0,92.6,8.898454,1.791759,4.462826,1 +11,3,0,1,3,325736,0,7319.648,14.73922,1,3,1,49.01118,2.66552,0,0,0,51.6767,0,0,0,5,0,6,85,9.967326,0,92.6,0,429,1,1,1.791759,6.061457,0,0,0,0,0,0,92.6,8.898454,1.791759,3.945007,1 +11,3,0,1,4,325736,0,7319.648,15.73922,1,3,1,25.20357,4.238077,0,0,0,29.44164,0,0,0,3,0,6,85,9.967326,0,92.6,0,429,1,1,1.791759,6.061457,0,0,0,0,0,0,92.6,8.898454,1.791759,3.38241,1 +11,3,0,1,5,325736,0,7319.648,16.73922,1,3,1,15.92357,82.99717,0,0,0,98.92074,0,0,0,2,0,6,85,9.967326,0,92.6,0,429,1,1,1.791759,6.061457,0,0,0,0,0,0,92.6,8.898454,1.791759,4.594319,1 +11,3,0,1,1,325737,0,7319.648,11.4141,0,3,1,33.70787,0,0,0,0,33.70787,0,0,0,2,0,6,83.3,9.967326,0,96.3,0,429,1,0,1.791759,6.061457,0,0,0,0,0,0,96.3,8.898454,1.791759,3.517731,1 +11,3,0,1,2,325737,0,7319.648,12.4141,0,3,1,10.31411,1.851852,0,0,0,12.16596,0,0,0,2,0,6,83.3,9.967326,0,96.3,0,429,1,0,1.791759,6.061457,0,0,0,0,0,0,96.3,8.898454,1.791759,2.498642,1 +11,3,0,1,3,325737,0,7319.648,13.4141,0,3,1,6.448839,0,0,0,0,6.448839,0,0,0,1,0,6,83.3,9.967326,0,96.3,0,429,1,0,1.791759,6.061457,0,0,0,0,0,0,96.3,8.898454,1.791759,1.8639,1 +11,3,0,1,4,325737,0,7319.648,14.4141,0,3,1,6.979449,1.357115,0,0,0,8.336565,0,0,0,1,0,6,83.3,9.967326,0,96.3,0,429,1,0,1.791759,6.061457,0,0,0,0,0,0,96.3,8.898454,1.791759,2.120651,1 +11,3,0,1,5,325737,0,7319.648,15.4141,0,3,1,23.60226,3.892427,0,0,0,27.49469,0,0,0,2,0,6,83.3,9.967326,0,96.3,0,429,1,0,1.791759,6.061457,0,0,0,0,0,0,96.3,8.898454,1.791759,3.313993,1 +11,3,0,1,1,325738,0,7319.648,14.45585,1,3,1,17.87538,4.085802,0,0,0,21.96119,0,0,0,3,0,6,87.2,3.4,0,90.9,0,429,1,1,1.791759,6.061457,0,0,0,0,0,0,90.9,8.898454,1.791759,3.089277,1 +11,3,0,1,2,325738,0,7319.648,15.45585,1,3,1,58.60291,3.094234,0,0,0,61.69714,0,0,0,6,0,6,87.2,3.4,0,90.9,0,429,1,1,1.791759,6.061457,0,0,0,0,0,0,90.9,8.898454,1.791759,4.122238,1 +11,3,0,1,3,325738,0,7319.648,16.45585,1,3,1,60.18917,6.964746,.2149613,0,0,67.36887,0,0,0,6,0,6,87.2,3.4,0,90.9,0,429,1,1,1.791759,6.061457,0,0,0,0,0,0,90.9,8.898454,1.791759,4.210183,1 +11,3,0,1,4,325738,0,7319.648,17.45585,1,3,1,26.75456,4.18767,0,0,0,30.94223,0,0,0,3,0,6,87.2,3.4,0,90.9,0,429,1,1,1.791759,6.061457,0,0,0,0,0,0,90.9,8.898454,1.791759,3.432122,1 +11,3,0,1,5,325738,0,7319.648,18.45585,1,3,1,8.846426,10.17339,0,0,0,19.01982,0,0,0,1,0,6,87.2,3.4,0,90.9,0,429,0,0,1.791759,6.061457,0,0,0,0,0,0,90.9,8.898454,1.791759,2.945481,1 +11,3,0,1,1,325739,0,7319.648,43.17317,0,10,1,33.19714,9.397345,22.98264,0,0,65.57712,0,0,0,4,0,6,78.2,10.3,0,73.9,0,429,0,0,1.791759,6.061457,0,0,0,1,0,0,73.9,8.898454,1.791759,4.183227,1 +11,3,0,1,2,325739,0,7319.648,44.17317,0,10,1,23.44116,1.875293,18.75293,0,0,44.06939,0,0,0,2,0,6,78.2,10.3,0,73.9,0,429,0,0,1.791759,6.061457,0,0,0,1,0,0,73.9,8.898454,1.791759,3.785765,1 +11,3,0,1,3,325739,0,7319.648,45.17317,0,10,1,8.598453,2.923474,0,0,0,11.52193,0,0,0,1,0,6,78.2,10.3,0,73.9,0,429,0,0,1.791759,6.061457,0,0,0,1,0,0,73.9,8.898454,1.791759,2.444252,1 +11,3,0,1,4,325739,0,7319.648,46.17317,0,10,1,22.87708,1.512214,2.175262,0,0,26.56456,0,0,0,2,0,6,78.2,10.3,0,73.9,0,429,0,0,1.791759,6.061457,0,0,0,1,0,0,73.9,8.898454,1.791759,3.279578,1 +11,3,0,1,5,325739,0,7319.648,47.17317,0,10,1,7.430998,0,0,0,0,7.430998,0,0,0,1,0,6,78.2,10.3,0,73.9,0,429,0,0,1.791759,6.061457,0,0,0,1,0,0,73.9,8.898454,1.791759,2.00566,1 +11,3,0,1,1,325740,0,7319.648,14.45585,1,3,1,18.89683,4.264555,0,0,0,23.16139,0,0,0,3,0,6,90.4,6.9,0,71.6,0,429,1,1,1.791759,6.061457,0,0,0,0,0,0,71.6,8.898454,1.791759,3.142487,1 +11,3,0,1,2,325740,0,7319.648,15.45585,1,3,1,58.60291,9.587436,0,0,0,68.19035,0,0,0,6,0,6,90.4,6.9,0,71.6,0,429,1,1,1.791759,6.061457,0,0,0,0,0,0,71.6,8.898454,1.791759,4.222303,1 +11,3,0,1,3,325740,0,7319.648,16.45585,1,3,1,60.18917,24.93551,0,0,0,85.12468,0,0,0,7,0,6,90.4,6.9,0,71.6,0,429,1,1,1.791759,6.061457,0,0,0,0,0,0,71.6,8.898454,1.791759,4.444117,1 +11,3,0,1,4,325740,0,7319.648,17.45585,1,3,1,0,6.16518,0,0,0,6.16518,0,0,0,0,0,6,90.4,6.9,0,71.6,0,429,1,1,1.791759,6.061457,0,0,0,0,0,0,71.6,8.898454,1.791759,1.818917,1 +11,3,0,1,5,325740,0,7319.648,18.45585,1,3,1,0,2.193914,0,0,0,2.193914,0,0,0,0,0,6,90.4,6.9,0,71.6,0,429,0,0,1.791759,6.061457,0,0,0,0,0,0,71.6,8.898454,1.791759,.785687,1 +11,3,0,1,1,325741,0,7319.648,39.57563,1,3,1,44.43309,4.249234,0,0,0,48.68233,0,0,0,3,0,6,67,3.4,0,69.3,0,429,0,0,1.791759,6.061457,0,0,0,0,0,0,69.3,8.898454,1.791759,3.885316,1 +11,3,0,1,2,325741,0,7319.648,40.57563,1,3,1,0,0,0,0,0,0,0,0,0,0,0,6,67,3.4,0,69.3,0,429,0,0,1.791759,6.061457,0,0,0,0,0,0,69.3,8.898454,1.791759,,0 +11,3,0,1,3,325741,0,7319.648,41.57563,1,3,1,0,1.504729,0,0,0,1.504729,0,0,0,0,0,6,67,3.4,0,69.3,0,429,0,0,1.791759,6.061457,0,0,0,0,0,0,69.3,8.898454,1.791759,.4086129,1 +11,3,0,1,4,325741,0,7319.648,42.57563,1,3,1,68.63126,2.13261,0,0,0,70.76386,0,0,0,2,0,6,67,3.4,0,69.3,0,429,0,0,1.791759,6.061457,0,0,0,0,0,0,69.3,8.898454,1.791759,4.259348,1 +11,3,0,1,5,325741,0,7319.648,43.57563,1,3,1,7.077141,0,21.93914,0,0,29.01628,0,0,0,1,0,6,67,3.4,0,69.3,0,429,0,0,1.791759,6.061457,0,0,0,0,0,0,69.3,8.898454,1.791759,3.367857,1 +11,3,0,1,1,325770,0,8753.666,37.21013,0,9,1,72.80291,12.22049,0,0,661.1649,746.1882,1,0,0,5,0,4,80.9,3.4,0,77.3,0,958.2,0,0,1.386294,6.865057,0,0,0,0,0,0,77.3,9.077342,1.386294,6.614978,1 +11,3,0,1,2,325770,0,8753.666,38.21013,0,9,1,5.733397,2.914477,0,0,0,8.647874,0,0,0,1,0,4,80.9,3.4,0,77.3,0,958.2,0,0,1.386294,6.865057,0,0,0,0,0,0,77.3,9.077342,1.386294,2.157314,1 +11,3,0,1,3,325770,0,8753.666,39.21013,0,9,1,107.1115,2.787533,0,0,0,109.899,0,0,0,4,0,4,80.9,3.4,0,77.3,0,958.2,0,0,1.386294,6.865057,0,0,0,0,0,0,77.3,9.077342,1.386294,4.699562,1 +11,3,0,1,1,325771,0,8753.666,30.68583,1,10,1,222.5689,8.346334,31.72127,0,0,262.6365,0,0,0,9,0,4,90.4,3.4,0,79.5,0,958.2,0,0,1.386294,6.865057,0,0,0,1,0,0,79.5,9.077342,1.386294,5.570771,1 +11,3,0,1,2,325771,0,8753.666,31.68583,1,10,1,100.8122,8.958433,0,0,0,109.7707,0,0,0,2,0,4,90.4,3.4,0,79.5,0,958.2,0,0,1.386294,6.865057,0,0,0,1,0,0,79.5,9.077342,1.386294,4.698393,1 +11,3,0,1,3,325771,0,8753.666,32.68583,1,10,1,28.09482,17.01054,0,0,0,45.10535,0,0,0,3,0,4,90.4,3.4,0,79.5,0,958.2,0,0,1.386294,6.865057,0,0,0,1,0,0,79.5,9.077342,1.386294,3.809001,1 +11,3,0,1,1,325772,0,8753.666,4.785763,0,10,1,24.44098,5.798232,0,0,0,30.23921,0,0,0,2,0,4,83.39137,9.967326,0,85.2,0,958.2,1,0,1.386294,6.865057,0,0,0,1,0,0,85.2,9.077342,1.386294,3.409139,1 +11,3,0,1,2,325772,0,8753.666,5.785763,0,10,1,5.255614,21.57191,0,0,0,26.82752,0,0,0,1,0,4,83.39137,9.967326,0,85.2,0,958.2,1,0,1.386294,6.865057,0,0,0,1,0,0,85.2,9.077342,1.386294,3.289428,1 +11,3,0,1,3,325772,0,8753.666,6.785763,0,10,1,1.316945,21.99298,0,0,0,23.30992,0,0,0,0,0,4,83.39137,9.967326,0,85.2,0,958.2,1,0,1.386294,6.865057,0,0,0,1,0,0,85.2,9.077342,1.386294,3.148879,1 +11,3,0,1,1,325773,0,8753.666,3.271732,0,10,1,20.28081,47.4519,0,0,0,67.73271,0,0,0,2,0,4,83.39137,9.967326,0,63,0,958.2,1,0,1.386294,6.865057,0,0,0,1,0,0,63,9.077342,1.386294,4.215569,1 +11,3,0,1,2,325773,0,8753.666,4.271732,0,10,1,34.16149,37.67319,0,0,0,71.83469,0,0,0,3,0,4,83.39137,9.967326,0,63,0,958.2,1,0,1.386294,6.865057,0,0,0,1,0,0,63,9.077342,1.386294,4.274367,1 +11,3,0,1,3,325773,0,8753.666,5.271732,0,10,1,65.84724,30.9921,0,0,0,96.83933,0,0,0,4,0,4,83.39137,9.967326,0,63,0,958.2,1,0,1.386294,6.865057,0,0,0,1,0,0,63,9.077342,1.386294,4.573053,1 +13,3,0,1,1,325791,0,11701.47,15.11294,0,12,1,15.45595,2.035033,0,0,0,17.49098,0,0,0,2,0,7,84.1,0,0,100,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,100,9.367555,1.94591,2.861686,1 +13,3,0,1,2,325791,0,11701.47,16.11294,0,12,1,26.13636,0,0,0,0,26.13636,0,0,0,2,0,7,84.1,0,0,100,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,100,9.367555,1.94591,3.263328,1 +13,3,0,1,3,325791,0,11701.47,17.11294,0,12,1,0,1.647161,0,0,0,1.647161,0,0,0,0,0,7,84.1,0,0,100,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,100,9.367555,1.94591,.4990531,1 +13,3,0,1,1,325792,0,11701.47,40.86516,1,12,1,27.82071,12.44204,44.02885,0,0,84.2916,0,0,0,2,1,7,59.6,13.8,1,83,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,83,9.367555,1.94591,4.434282,1 +13,3,0,1,2,325792,0,11701.47,41.86516,1,12,1,27.46212,12.12121,10.1089,0,0,49.69223,0,0,0,3,0,7,59.6,13.8,1,83,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,83,9.367555,1.94591,3.905849,1 +13,3,0,1,3,325792,0,11701.47,42.86516,1,12,1,134.3736,2.037278,33.48505,0,0,169.896,0,0,0,2,0,7,59.6,13.8,1,83,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,83,9.367555,1.94591,5.135186,1 +13,3,0,1,1,325793,0,11701.47,12.44627,0,12,1,36.06388,0,25.24472,0,0,61.30861,0,0,0,1,1,7,86.7,9.967326,0,100,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,100,9.367555,1.94591,4.11592,1 +13,3,0,1,2,325793,0,11701.47,13.44627,0,12,1,56.3447,4.285038,11.83712,0,0,72.46686,0,0,0,4,1,7,86.7,9.967326,0,100,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,100,9.367555,1.94591,4.283129,1 +13,3,0,1,3,325793,0,11701.47,14.44627,0,12,1,30.42913,0,10.83658,0,0,41.26571,0,0,0,1,1,7,86.7,9.967326,0,100,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,100,9.367555,1.94591,3.720032,1 +13,3,0,1,1,325794,0,11701.47,41.78234,0,12,1,43.14786,0,0,0,0,43.14786,0,0,0,1,0,7,61.2,20.7,1,64.8,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,64.8,9.367555,1.94591,3.764633,1 +13,3,0,1,2,325794,0,11701.47,42.78234,0,12,1,17.47159,0,0,0,0,17.47159,0,0,0,0,0,7,61.2,20.7,1,64.8,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,64.8,9.367555,1.94591,2.860576,1 +13,3,0,1,3,325794,0,11701.47,43.78234,0,12,1,33.81014,0,19.93932,0,0,53.74946,0,0,0,2,1,7,61.2,20.7,1,64.8,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,64.8,9.367555,1.94591,3.984334,1 +13,3,0,1,1,325796,0,11701.47,7.474333,1,12,1,184.9305,19.96394,0,0,0,204.8944,0,0,0,10,0,7,73.3,9.967326,0,55.6,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,55.6,9.367555,1.94591,5.322495,1 +13,3,0,1,2,325796,0,11701.47,8.474333,1,12,1,72.44318,12.92614,0,0,0,85.36932,0,0,0,5,1,7,73.3,9.967326,0,55.6,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,55.6,9.367555,1.94591,4.446987,1 +13,3,0,1,3,325796,0,11701.47,9.474333,1,12,1,314.4343,11.00997,8.669268,0,0,334.1136,0,0,0,11,6,7,73.3,9.967326,0,55.6,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,55.6,9.367555,1.94591,5.811481,1 +13,3,0,1,1,325797,0,11701.47,10.22587,0,12,1,442.3596,6.903658,12.87996,0,0,462.1432,0,0,0,10,1,7,85,9.967326,0,100,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,100,9.367555,1.94591,6.135875,1 +13,3,0,1,2,325797,0,11701.47,11.22587,0,12,1,75.28409,9.351326,21.7803,0,504.6165,611.0322,1,0,0,7,1,7,85,9.967326,0,100,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,100,9.367555,1.94591,6.41515,1 +13,3,0,1,3,325797,0,11701.47,12.22587,0,12,1,28.60858,8.495882,0,0,0,37.10447,0,0,0,4,0,7,85,9.967326,0,100,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,100,9.367555,1.94591,3.613737,1 +13,3,0,1,1,325798,0,11701.47,13.88912,1,12,1,17.77434,.7727975,0,0,0,18.54714,0,0,0,1,0,7,87.8,0,0,90.9,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,90.9,9.367555,1.94591,2.920316,1 +13,3,0,1,2,325798,0,11701.47,14.88912,1,12,1,53.0303,2.982955,0,0,0,56.01326,0,0,0,4,1,7,87.8,0,0,90.9,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,90.9,9.367555,1.94591,4.025589,1 +13,3,0,1,3,325798,0,11701.47,15.88912,1,12,1,53.31599,6.870394,21.23971,0,0,81.42609,0,0,0,3,1,7,87.8,0,0,90.9,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,90.9,9.367555,1.94591,4.399696,1 +10,3,50,1,1,325829,0,3559.531,3.937029,1,10,1,7.08502,1.012146,0,0,0,8.097166,0,0,0,1,0,2,83.39137,9.967326,0,88.9,705,705,1,1,.6931472,6.558198,0,3.931826,7.251345,0,0,0,88.9,8.177665,.6931472,2.091514,1 +10,3,50,1,2,325829,0,3559.531,4.937029,1,10,1,19.95338,1.351981,0,0,0,21.30536,0,0,0,2,0,2,83.39137,9.967326,0,88.9,705,705,1,1,.6931472,6.558198,0,3.931826,7.251345,0,0,0,88.9,8.177665,.6931472,3.058959,1 +10,3,50,1,3,325829,0,3559.531,5.937029,1,10,1,35.69902,0,23.08679,0,0,58.7858,0,0,0,1,1,2,83.39137,9.967326,0,88.9,705,705,1,1,.6931472,6.558198,0,3.931826,7.251345,0,0,0,88.9,8.177665,.6931472,4.0739,1 +10,3,50,1,1,325830,0,3559.531,21.16632,1,10,1,31.26012,7.135628,0,0,0,38.39575,0,0,0,2,1,2,55.9,6.9,0,55.7,705,705,0,0,.6931472,6.558198,0,3.931826,7.251345,1,0,0,55.7,8.177665,.6931472,3.647947,1 +10,3,50,1,2,325830,0,3559.531,22.16632,1,10,1,35.33799,0,0,0,0,35.33799,0,0,0,3,0,2,55.9,6.9,0,55.7,705,705,0,0,.6931472,6.558198,0,3.931826,7.251345,1,0,0,55.7,8.177665,.6931472,3.564959,1 +10,3,50,1,3,325830,0,3559.531,23.16632,1,10,1,87.85806,3.163745,0,0,0,91.0218,0,0,0,5,0,2,55.9,6.9,0,55.7,705,705,0,0,.6931472,6.558198,0,3.931826,7.251345,1,0,0,55.7,8.177665,.6931472,4.511099,1 +10,3,50,1,1,325831,0,3391.789,47.90691,1,10,1,102.2267,149.0891,0,0,0,251.3158,0,0,0,7,0,1,56.3,20.7,1,56.8,735,735,0,0,0,6.599871,0,3.931826,7.293018,0,1,0,56.8,8.129408,0,5.526711,1 +10,3,50,1,2,325831,0,3391.789,48.90691,1,10,1,38.41492,126.4336,0,0,0,164.8485,0,0,0,3,0,1,56.3,20.7,1,56.8,735,735,0,0,0,6.599871,0,3.931826,7.293018,0,1,0,56.8,8.129408,0,5.105027,1 +10,3,50,1,3,325831,0,3391.789,49.90691,1,10,1,29.07225,83.49722,20.94912,0,0,133.5186,0,0,0,2,1,1,56.3,20.7,1,56.8,735,735,0,0,0,6.599871,0,3.931826,7.293018,0,1,0,56.8,8.129408,0,4.894241,1 +15,3,95,1,1,325832,0,6723.167,8.985626,1,12,1,46.80187,0,29.9012,0,0,76.70307,0,0,0,4,0,5,85,9.967326,0,100,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,1,0,100,8.813463,1.609438,4.339942,1 +15,3,95,1,2,325832,0,6723.167,9.985626,1,12,1,16.24463,4.061156,18.15576,0,0,38.46154,0,0,0,2,0,5,85,9.967326,0,100,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,1,0,100,8.813463,1.609438,3.649659,1 +15,3,95,1,3,325832,0,6723.167,10.98563,1,12,1,14.04741,0,25.46093,0,0,39.50834,0,0,0,2,0,5,85,9.967326,0,100,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,1,0,100,8.813463,1.609438,3.676512,1 +15,3,95,1,1,325833,0,6723.167,32.20808,1,12,1,0,1.794072,0,0,0,1.794072,0,0,0,0,0,5,92,3.4,0,93.2,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,93.2,8.813463,1.609438,.5844878,1 +15,3,95,1,2,325833,0,6723.167,33.20808,1,12,1,10.51123,0,0,0,0,10.51123,0,0,0,1,0,5,92,3.4,0,93.2,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,93.2,8.813463,1.609438,2.352444,1 +15,3,95,1,3,325833,0,6723.167,34.20808,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,92,3.4,0,93.2,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,93.2,8.813463,1.609438,,0 +15,3,95,1,1,325834,0,6723.167,6.299795,1,12,1,5.200208,0,0,0,0,5.200208,0,0,0,1,0,5,85,9.967326,0,81.5,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,1,0,81.5,8.813463,1.609438,1.648699,1 +15,3,95,1,2,325834,0,6723.167,7.299795,1,12,1,6.688963,2.126135,0,0,0,8.815098,0,0,0,1,0,5,85,9.967326,0,81.5,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,1,0,81.5,8.813463,1.609438,2.176466,1 +15,3,95,1,3,325834,0,6723.167,8.299794,1,12,1,4.828797,0,0,0,0,4.828797,0,0,0,1,0,5,85,9.967326,0,81.5,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,1,0,81.5,8.813463,1.609438,1.574597,1 +15,3,95,1,1,325835,0,6723.167,33.36345,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,82.4,3.4,0,84.1,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,84.1,8.813463,1.609438,,0 +15,3,95,1,2,325835,0,6723.167,34.36345,0,15,1,0,0,29.86144,0,0,29.86144,0,0,0,0,0,5,82.4,3.4,0,84.1,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,84.1,8.813463,1.609438,3.396568,1 +15,3,95,1,3,325835,0,6723.167,35.36345,0,15,1,51.75593,0,0,0,0,51.75593,0,0,0,1,0,5,82.4,3.4,0,84.1,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,84.1,8.813463,1.609438,3.946539,1 +15,3,95,1,1,325836,0,6723.167,3.887748,1,12,1,5.200208,2.730109,0,0,0,7.930317,0,0,0,1,0,5,83.39137,9.967326,0,96.3,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,1,0,96.3,8.813463,1.609438,2.070693,1 +15,3,95,1,2,325836,0,6723.167,4.887748,1,12,1,7.166746,2.388916,0,0,0,9.555662,0,0,0,1,0,5,83.39137,9.967326,0,96.3,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,1,0,96.3,8.813463,1.609438,2.257134,1 +15,3,95,1,3,325836,0,6723.167,5.887748,1,12,1,17.12028,12.53292,0,0,0,29.6532,0,0,0,3,0,5,83.39137,9.967326,0,96.3,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,1,0,96.3,8.813463,1.609438,3.38957,1 +14,3,95,1,1,325845,0,7090.688,38.03422,1,18,1,0,22.51417,31.9423,803.7094,0,54.45647,0,0,39,0,0,1,77.7,20.7,0,83,600,600,0,0,0,6.39693,0,4.564348,6.448223,0,0,0,83,8.866678,0,3.997402,1 +14,3,95,1,2,325845,0,7090.688,39.03422,1,18,1,21.7803,0,26.51515,662.8788,0,48.29546,0,0,34,1,1,1,77.7,20.7,0,83,600,600,0,0,0,6.39693,0,4.564348,6.448223,0,0,0,83,8.866678,0,3.877337,1 +14,3,95,1,3,325845,0,7090.688,40.03422,1,18,1,54.18292,14.13091,15.49632,34.67707,342.4577,426.2679,1,0,2,2,1,1,77.7,20.7,0,83,600,600,0,0,0,6.39693,0,4.564348,6.448223,0,0,0,83,8.866678,0,6.055068,1 +16,3,95,1,1,325846,0,7788.27,54.42026,0,7,1,73.54443,2.328907,0,0,0,75.87334,0,0,0,5,0,2,74.46748,6.9,0,68.2,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,68.2,8.960503,.6931472,4.329065,1 +16,3,95,1,2,325846,0,7788.27,55.42026,0,7,1,0,0,0,0,0,0,0,0,0,0,0,2,74.46748,6.9,0,68.2,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,68.2,8.960503,.6931472,,0 +16,3,95,1,3,325846,0,7788.27,56.42026,0,7,1,30.73947,0,0,0,0,30.73947,0,0,0,1,0,2,74.46748,6.9,0,68.2,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,68.2,8.960503,.6931472,3.425547,1 +16,3,95,1,1,325848,0,7788.27,16.96099,1,9,1,48.56997,0,0,0,0,48.56997,0,0,0,3,0,2,61.2,6.9,0,68.2,1000,1000,1,1,.6931472,6.907755,0,4.564348,6.959049,0,0,0,68.2,8.960503,.6931472,3.883005,1 +16,3,95,1,2,325848,0,7788.27,17.96099,1,9,1,0,0,0,0,0,0,0,0,0,0,0,2,61.2,6.9,0,68.2,1000,1000,1,1,.6931472,6.907755,0,4.564348,6.959049,0,0,0,68.2,8.960503,.6931472,,0 +16,3,95,1,3,325848,0,7788.27,18.96099,1,9,1,0,0,0,0,0,0,0,0,0,0,0,2,61.2,6.9,0,68.2,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,68.2,8.960503,.6931472,,0 +15,3,95,1,1,325888,0,5282.288,7.655031,1,12,1,6.128703,28.98366,0,0,0,35.11236,0,0,0,1,0,3,91.7,9.967326,0,77.8,468,468,1,1,1.098612,6.148468,0,4.564348,6.199761,0,0,0,77.8,8.572304,1.098612,3.558553,1 +15,3,95,1,2,325888,0,5282.288,8.655031,1,12,1,9.376465,24.56634,0,0,0,33.9428,0,0,0,2,0,3,91.7,9.967326,0,77.8,468,468,1,1,1.098612,6.148468,0,4.564348,6.199761,0,0,0,77.8,8.572304,1.098612,3.524677,1 +15,3,95,1,3,325888,0,5282.288,9.655031,1,12,1,9.88822,7.274291,0,0,0,17.16251,0,0,0,2,0,3,91.7,9.967326,0,77.8,468,468,1,1,1.098612,6.148468,0,4.564348,6.199761,0,0,0,77.8,8.572304,1.098612,2.842727,1 +15,3,95,1,1,325889,0,5282.288,5.385353,0,12,1,44.12666,24.10623,0,0,0,68.23289,0,0,0,4,0,3,100,9.967326,0,92.6,468,468,1,0,1.098612,6.148468,0,4.564348,6.199761,0,0,0,92.6,8.572304,1.098612,4.222927,1 +15,3,95,1,2,325889,0,5282.288,6.385353,0,12,1,16.40881,6.990155,0,0,0,23.39897,0,0,0,2,0,3,100,9.967326,0,92.6,468,468,1,0,1.098612,6.148468,0,4.564348,6.199761,0,0,0,92.6,8.572304,1.098612,3.152692,1 +15,3,95,1,3,325889,0,5282.288,7.385353,0,12,1,28.8908,13.67154,0,0,0,42.56234,0,0,0,3,0,3,100,9.967326,0,92.6,468,468,1,0,1.098612,6.148468,0,4.564348,6.199761,0,0,0,92.6,8.572304,1.098612,3.75097,1 +15,3,95,1,1,325890,0,5282.288,41.07597,1,12,1,89.88764,46.06231,26.55771,0,0,162.5077,0,0,0,6,1,3,71.3,6.9,0,95.5,468,468,0,0,1.098612,6.148468,0,4.564348,6.199761,0,0,0,95.5,8.572304,1.098612,5.090725,1 +15,3,95,1,2,325890,0,5282.288,42.07597,1,12,1,127.7778,9.784341,14.0647,0,0,151.6268,0,0,0,2,0,3,71.3,6.9,0,95.5,468,468,0,0,1.098612,6.148468,0,4.564348,6.199761,0,0,0,95.5,8.572304,1.098612,5.021422,1 +15,3,95,1,3,325890,0,5282.288,43.07597,1,12,1,0,5.257954,0,0,0,5.257954,0,0,0,0,0,3,71.3,6.9,0,95.5,468,468,0,0,1.098612,6.148468,0,4.564348,6.199761,0,0,0,95.5,8.572304,1.098612,1.659742,1 +13,3,0,1,1,325906,1,2344.868,25.56058,0,17,1,23.40094,0,0,0,0,23.40094,0,0,0,2,0,1,93.1,3.4,0,89.8,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,89.8,7.760411,0,3.152776,1 +13,3,0,1,2,325906,1,2344.868,26.56058,0,17,1,0,0,0,0,0,0,0,0,0,0,0,1,93.1,3.4,0,89.8,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,89.8,7.760411,0,,0 +13,3,0,1,3,325906,1,2344.868,27.56058,0,17,1,0,0,0,0,0,0,0,0,0,0,0,1,93.1,3.4,0,89.8,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,89.8,7.760411,0,,0 +13,3,0,1,1,325930,0,9421.701,45.20465,0,16,1,49.45904,0,25.24472,0,0,74.70376,0,0,0,0,9,5,63.3,10.3,0,71.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,71.6,9.150877,1.609438,4.31353,1 +13,3,0,1,2,325930,0,9421.701,46.20465,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,63.3,10.3,0,71.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,71.6,9.150877,1.609438,,0 +13,3,0,1,3,325930,0,9421.701,47.20465,0,16,1,36.84439,0,26.658,0,0,63.50238,0,0,0,0,2,5,63.3,10.3,0,71.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,71.6,9.150877,1.609438,4.151077,1 +13,3,0,1,1,325931,0,9421.701,14.83368,0,12,1,521.3395,.4327666,29.93302,0,0,551.7053,0,0,0,6,1,5,72.9,0,0,88.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,88.6,9.150877,1.609438,6.313014,1 +13,3,0,1,2,325931,0,9421.701,15.83368,0,12,1,5.681818,0,0,0,0,5.681818,0,0,0,1,0,5,72.9,0,0,88.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,88.6,9.150877,1.609438,1.737271,1 +13,3,0,1,3,325931,0,9421.701,16.83368,0,12,1,8.235804,0,0,0,0,8.235804,0,0,0,2,0,5,72.9,0,0,88.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,88.6,9.150877,1.609438,2.108491,1 +13,3,0,1,1,325932,0,9421.701,17.57153,0,12,1,23.18393,0,27.30551,0,0,50.48944,0,0,0,1,1,5,78.2,3.4,0,90.9,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,90.9,9.150877,1.609438,3.921764,1 +13,3,0,1,2,325932,0,9421.701,18.57153,0,12,1,0,0,0,42.61364,0,0,0,0,3,0,0,5,78.2,3.4,0,90.9,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,90.9,9.150877,1.609438,,0 +13,3,0,1,3,325932,0,9421.701,19.57153,0,12,1,25.57434,0,23.40702,82.35804,0,48.98136,0,0,11,1,1,5,78.2,3.4,0,90.9,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,90.9,9.150877,1.609438,3.89144,1 +13,3,0,1,1,325933,0,9421.701,15.9781,0,12,1,10.30397,1.365276,27.82071,0,0,39.48995,0,0,0,0,1,5,77.7,0,0,93.2,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,93.2,9.150877,1.609438,3.676046,1 +13,3,0,1,2,325933,0,9421.701,16.9781,0,12,1,5.681818,.7102273,0,0,0,6.392045,0,0,0,1,0,5,77.7,0,0,93.2,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,93.2,9.150877,1.609438,1.855054,1 +13,3,0,1,3,325933,0,9421.701,17.9781,0,12,1,10.83658,0,24.27395,0,0,35.11053,0,0,0,0,1,5,77.7,0,0,93.2,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,93.2,9.150877,1.609438,3.558501,1 +13,3,0,1,1,325934,0,9421.701,40.44079,1,12,1,68.41834,20.71097,0,15.45595,0,89.12932,0,0,1,4,0,5,40.4,20.7,0,61.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,61.4,9.150877,1.609438,4.490088,1 +13,3,0,1,2,325934,0,9421.701,41.44079,1,12,1,53.97727,3.29072,0,0,0,57.26799,0,0,0,5,0,5,40.4,20.7,0,61.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,61.4,9.150877,1.609438,4.047742,1 +13,3,0,1,3,325934,0,9421.701,42.44079,1,12,1,315.1539,2.362375,0,0,0,317.5163,0,0,0,3,0,5,40.4,20.7,0,61.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,61.4,9.150877,1.609438,5.760529,1 +18,3,25,1,1,325935,0,9527.272,14.80082,1,12,1,11.23596,2.37998,0,0,0,13.61593,0,0,0,2,0,5,76.6,0,0,63.6,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,63.6,9.162019,1.609438,2.611241,1 +18,3,25,1,2,325935,0,9527.272,15.80082,1,12,1,1.875293,2.906704,0,0,0,4.781997,0,0,0,0,0,5,76.6,0,0,63.6,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,63.6,9.162019,1.609438,1.564858,1 +18,3,25,1,3,325935,0,9527.272,16.80082,1,12,1,139.3809,13.80052,161.221,0,3472.691,3787.094,1,0,0,6,0,5,76.6,0,0,63.6,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,63.6,9.162019,1.609438,8.239354,1 +18,3,25,1,1,325936,0,9527.272,38.77071,0,7,1,15.32176,15.18897,0,61.28703,0,30.51073,0,0,5,0,0,5,68.6,10.3,0,64.8,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,64.8,9.162019,1.609438,3.418078,1 +18,3,25,1,2,325936,0,9527.272,39.77071,0,7,1,12.65823,7.069855,0,0,0,19.72808,0,0,0,0,0,5,68.6,10.3,0,64.8,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,64.8,9.162019,1.609438,2.982043,1 +18,3,25,1,3,325936,0,9527.272,40.77071,0,7,1,0,1.569218,0,0,0,1.569218,0,0,0,0,0,5,68.6,10.3,0,64.8,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,64.8,9.162019,1.609438,.4505771,1 +18,3,25,1,1,325937,0,9527.272,11.0308,1,12,1,11.23596,1.838611,0,0,0,13.07457,0,0,0,2,0,5,90,9.967326,0,85.2,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.162019,1.609438,2.570669,1 +18,3,25,1,2,325937,0,9527.272,12.0308,1,12,1,0,.9376465,0,0,0,.9376465,0,0,0,0,0,5,90,9.967326,0,85.2,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.162019,1.609438,-.0643823,1 +18,3,25,1,3,325937,0,9527.272,13.0308,1,12,1,30.09458,2.192605,0,0,0,32.28719,0,0,0,2,0,5,90,9.967326,0,85.2,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.162019,1.609438,3.474671,1 +18,3,25,1,1,325938,0,9527.272,16.00274,0,12,1,22.98264,26.21553,28.60061,0,0,77.79877,0,0,0,2,0,5,83.5,13.8,0,70.2,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.2,9.162019,1.609438,4.354125,1 +18,3,25,1,2,325938,0,9527.272,17.00274,0,12,1,41.72527,23.32865,0,0,0,65.05392,0,0,0,2,0,5,83.5,13.8,0,70.2,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.2,9.162019,1.609438,4.175216,1 +18,3,25,1,3,325938,0,9527.272,18.00274,0,12,1,43.37919,10.64058,24.07567,0,0,78.09544,0,0,0,2,1,5,83.5,13.8,0,70.2,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.2,9.162019,1.609438,4.357932,1 +18,3,25,1,1,325939,0,9527.272,36.04654,1,12,1,33.86108,5.132789,0,0,764.1982,803.192,2,0,0,4,0,5,77.7,17.2,0,88.6,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.6,9.162019,1.609438,6.688594,1 +18,3,25,1,2,325939,0,9527.272,37.04654,1,12,1,29.06704,3.42241,0,0,0,32.48945,0,0,0,2,3,5,77.7,17.2,0,88.6,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.6,9.162019,1.609438,3.480916,1 +18,3,25,1,3,325939,0,9527.272,38.04654,1,12,1,16.16509,2.55804,0,0,0,18.72313,0,0,0,1,1,5,77.7,17.2,0,88.6,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.6,9.162019,1.609438,2.92976,1 +13,3,0,1,1,325940,0,10690.91,10.73238,0,12,1,10.2145,2.681308,11.23596,0,0,24.13177,0,0,0,0,1,4,88.3,9.967326,0,100,450,492.84,1,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,100,9.277243,1.386294,3.183529,1 +13,3,0,1,2,325940,0,10690.91,11.73238,0,12,1,19.69058,9.610877,0,0,0,29.30145,0,0,0,3,0,4,88.3,9.967326,0,100,450,492.84,1,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,100,9.277243,1.386294,3.377637,1 +13,3,0,1,3,325940,0,10690.91,12.73238,0,12,1,8.598453,6.083405,0,0,0,14.68186,0,0,0,0,1,4,88.3,9.967326,0,100,450,492.84,1,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,100,9.277243,1.386294,2.686613,1 +13,3,0,1,1,325941,0,10690.91,34.90486,1,12,1,9.193054,0,16.85393,0,0,26.04699,0,0,0,0,1,4,66.5,17.2,0,96.6,450,492.84,0,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,96.6,9.277243,1.386294,3.259902,1 +13,3,0,1,2,325941,0,10690.91,35.90486,1,12,1,62.82232,4.664792,26.2541,0,0,93.74121,0,0,0,2,1,4,66.5,17.2,0,96.6,450,492.84,0,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,96.6,9.277243,1.386294,4.540538,1 +13,3,0,1,3,325941,0,10690.91,36.90486,1,12,1,33.53396,0,0,0,0,33.53396,0,0,0,2,0,4,66.5,17.2,0,96.6,450,492.84,0,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,96.6,9.277243,1.386294,3.512559,1 +13,3,0,1,1,325942,0,10690.91,8.807666,1,12,1,8.171603,0,0,0,0,8.171603,0,0,0,1,0,4,75,9.967326,0,100,450,492.84,1,1,1.386294,6.200184,1,4.564348,6.160541,0,0,0,100,9.277243,1.386294,2.100665,1 +13,3,0,1,2,325942,0,10690.91,9.807666,1,12,1,23.90999,4.758556,0,0,0,28.66854,0,0,0,2,0,4,75,9.967326,0,100,450,492.84,1,1,1.386294,6.200184,1,4.564348,6.160541,0,0,0,100,9.277243,1.386294,3.3558,1 +13,3,0,1,3,325942,0,10690.91,10.80767,1,12,1,31.92175,0,0,0,0,31.92175,0,0,0,1,0,4,75,9.967326,0,100,450,492.84,1,1,1.386294,6.200184,1,4.564348,6.160541,0,0,0,100,9.277243,1.386294,3.463288,1 +13,3,0,1,1,325943,0,10690.91,35.11841,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,71.3,3.4,0,97.7,450,492.84,0,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,97.7,9.277243,1.386294,,0 +13,3,0,1,2,325943,0,10690.91,36.11841,0,16,1,76.41819,0,3.047351,0,0,79.46554,0,0,0,2,2,4,71.3,3.4,0,97.7,450,492.84,0,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,97.7,9.277243,1.386294,4.375323,1 +13,3,0,1,3,325943,0,10690.91,37.11841,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,71.3,3.4,0,97.7,450,492.84,0,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,97.7,9.277243,1.386294,,0 +11,3,0,0,1,325955,0,4994.135,59.55647,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,73.4,24.1,1,86.4,0,137.28,0,0,0,4.922023,0,0,0,1,0,0,86.4,8.51622,0,,0 +11,3,0,0,2,325955,0,4994.135,60.55647,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,73.4,24.1,1,86.4,0,137.28,0,0,0,4.922023,0,0,0,1,0,0,86.4,8.51622,0,,0 +11,3,0,0,3,325955,0,4994.135,61.55647,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,73.4,24.1,1,86.4,0,137.28,0,0,0,4.922023,0,0,0,1,0,0,86.4,8.51622,0,,0 +11,3,0,1,1,326015,0,563.0499,14.3217,1,9,1,160.5516,10.57692,0,0,0,171.1285,0,0,0,6,0,2,70.7,3.4,0,80.7,0,0,1,1,.6931472,0,0,0,0,0,0,0,80.7,6.335143,.6931472,5.142415,1 +11,3,0,1,2,326015,0,563.0499,15.3217,1,9,1,95.49651,20.37296,6.293706,0,0,122.1632,0,0,0,6,0,2,70.7,3.4,0,80.7,0,0,1,1,.6931472,0,0,0,0,0,0,0,80.7,6.335143,.6931472,4.805357,1 +11,3,0,1,3,326015,0,563.0499,16.3217,1,9,1,169.3886,42.47542,0,0,0,211.864,0,0,0,10,0,2,70.7,3.4,0,80.7,0,0,1,1,.6931472,0,0,0,0,0,0,0,80.7,6.335143,.6931472,5.355945,1 +11,3,0,1,1,326016,0,563.0499,44.70363,1,9,1,46.05263,78.5172,26.31579,0,0,150.8856,0,0,0,1,0,2,60.1,17.2,0,77.4,0,0,0,0,.6931472,0,0,0,0,0,0,0,77.4,6.335143,.6931472,5.016522,1 +11,3,0,1,2,326016,0,563.0499,45.70363,1,9,1,17.24942,90.65268,0,0,0,107.9021,0,0,0,2,0,2,60.1,17.2,0,77.4,0,0,0,0,.6931472,0,0,0,0,0,0,0,77.4,6.335143,.6931472,4.681224,1 +11,3,0,1,3,326016,0,563.0499,46.70363,1,9,1,32.92005,70.3634,0,0,0,103.2835,0,0,0,1,0,2,60.1,17.2,0,77.4,0,0,0,0,.6931472,0,0,0,0,0,0,0,77.4,6.335143,.6931472,4.637477,1 +11,3,0,0,1,326017,0,7196.79,14.68309,1,11,1,83.14096,19.3667,0,0,0,102.5077,0,0,0,7,0,3,84.1,6.9,0,90.9,0,232.8,1,1,1.098612,5.45018,0,0,0,0,0,0,90.9,8.881529,1.098612,4.629938,1 +11,3,0,0,2,326017,0,7196.79,15.68309,1,11,1,116.4557,28.06376,26.2541,0,0,170.7736,0,0,0,6,1,3,84.1,6.9,0,90.9,0,232.8,1,1,1.098612,5.45018,0,0,0,0,0,0,90.9,8.881529,1.098612,5.140338,1 +11,3,0,0,3,326017,0,7196.79,16.68309,1,11,1,32.45916,23.00516,12.03783,0,0,67.50215,0,0,0,3,1,3,84.1,6.9,0,90.9,0,232.8,1,1,1.098612,5.45018,0,0,0,0,0,0,90.9,8.881529,1.098612,4.21216,1 +11,3,0,0,1,326018,0,7196.79,42.00137,0,10,1,14.09602,0,11.74668,0,0,25.8427,0,0,0,1,0,3,81.4,3.4,0,92,0,232.8,0,0,1.098612,5.45018,0,0,0,0,0,0,92,8.881529,1.098612,3.252028,1 +11,3,0,0,2,326018,0,7196.79,43.00137,0,10,1,16.87764,10.34224,35.63057,0,0,62.85044,0,0,0,1,1,3,81.4,3.4,0,92,0,232.8,0,0,1.098612,5.45018,0,0,0,0,0,0,92,8.881529,1.098612,4.140758,1 +11,3,0,0,3,326018,0,7196.79,44.00137,0,10,1,61.69389,14.57438,0,0,0,76.26827,0,0,0,3,0,3,81.4,3.4,0,92,0,232.8,0,0,1.098612,5.45018,0,0,0,0,0,0,92,8.881529,1.098612,4.334257,1 +11,3,0,0,1,326019,0,7196.79,38.33812,1,11,1,85.80184,37.68131,19.83657,0,988.9377,1132.257,1,0,0,7,0,3,81.4,6.9,0,83,0,232.8,0,0,1.098612,5.45018,0,0,0,0,1,0,83,8.881529,1.098612,7.031969,1 +11,3,0,0,2,326019,0,7196.79,39.33812,1,11,1,74.5429,10.76418,0,0,1152.532,1237.839,1,0,0,4,0,3,81.4,6.9,0,83,0,232.8,0,0,1.098612,5.45018,0,0,0,0,1,0,83,8.881529,1.098612,7.121122,1 +11,3,0,0,3,326019,0,7196.79,40.33812,1,11,1,17.19691,5.717971,0,0,383.7446,406.6595,1,0,0,2,0,3,81.4,6.9,0,83,0,232.8,0,0,1.098612,5.45018,0,0,0,0,1,0,83,8.881529,1.098612,6.007976,1 +11,3,0,1,1,326027,0,6105.572,60.26283,0,7,1,46.57393,48.91808,0,0,0,95.49201,0,0,0,4,0,2,61.7,20.7,0,71.4,0,232.8,0,0,.6931472,5.45018,0,0,0,1,0,0,71.4,8.717121,.6931472,4.559042,1 +11,3,0,1,2,326027,0,6105.572,61.26283,0,7,1,214.9858,52.05019,5.776515,78.125,0,272.8125,0,0,10,9,0,2,61.7,20.7,0,71.4,0,232.8,0,0,.6931472,5.45018,0,0,0,1,0,0,71.4,8.717121,.6931472,5.608785,1 +11,3,0,1,3,326027,0,6105.572,62.26283,0,7,1,113.1339,42.50108,40.31209,65.01951,2232.094,2428.041,2,0,8,14,0,2,61.7,20.7,0,71.4,0,232.8,0,0,.6931472,5.45018,0,0,0,1,0,0,71.4,8.717121,.6931472,7.79484,1 +11,3,0,1,1,326028,0,6105.572,56.47912,1,10,1,456.7388,194.7347,39.40752,0,881.221,1572.102,1,0,0,21,0,2,41,34.5,1,30.7,0,232.8,0,0,.6931472,5.45018,0,0,0,0,0,1,30.7,8.717121,.6931472,7.360169,1 +11,3,0,1,2,326028,0,6105.572,57.47912,1,10,1,85.70076,137.5331,28.68845,63.92046,0,251.9223,0,0,9,6,0,2,41,34.5,1,30.7,0,232.8,0,0,.6931472,5.45018,0,0,0,0,0,1,30.7,8.717121,.6931472,5.529121,1 +11,3,0,1,3,326028,0,6105.572,58.47912,1,10,1,77.24317,178.9597,55.6567,130.039,296.1985,608.0581,1,0,15,6,0,2,41,34.5,1,30.7,0,232.8,0,0,.6931472,5.45018,0,0,0,0,0,1,30.7,8.717121,.6931472,6.41027,1 +16,3,95,1,1,326054,0,2777.713,19.59754,1,9,1,15.68826,3.54251,0,0,0,19.23077,0,0,0,2,0,3,59,10.3,0,44.3,915,915,0,0,1.098612,6.818924,0,4.564348,6.870217,0,1,0,44.3,7.929743,1.098612,2.956511,1 +16,3,95,1,2,326054,0,2777.713,20.59754,1,9,1,55.1282,0,0,66.43356,588.6247,643.7529,1,0,4,6,1,3,59,10.3,0,44.3,915,915,0,0,1.098612,6.818924,0,4.564348,6.870217,0,1,0,44.3,7.929743,1.098612,6.467315,1 +16,3,95,1,3,326054,0,2777.713,21.59754,1,9,1,8.550663,2.116289,0,0,0,10.66695,0,0,0,1,0,4,59,10.3,0,44.3,915,915,0,0,1.386294,6.818924,0,4.564348,6.870217,0,1,0,44.3,7.929743,1.386294,2.36715,1 +16,3,95,1,4,326054,0,2777.713,22.59754,1,9,1,18.44735,0,0,0,1178.467,1196.914,1,0,0,1,0,4,59,10.3,0,44.3,915,915,0,0,1.386294,6.818924,0,4.564348,6.870217,0,1,0,44.3,7.929743,1.386294,7.087502,1 +16,3,95,1,5,326054,0,2777.713,23.59754,1,9,1,64.27819,0,0,0,0,64.27819,0,0,0,5,0,5,59,10.3,0,44.3,915,915,0,0,1.609438,6.818924,0,4.564348,6.870217,0,1,0,44.3,7.929743,1.609438,4.16322,1 +16,3,95,1,1,326055,0,2777.713,1.149897,1,9,1,65.91599,11.69028,0,0,0,77.60628,0,0,0,7,0,3,83.39137,9.967326,0,66.7,915,915,1,1,1.098612,6.818924,0,4.564348,6.870217,1,0,0,66.7,7.929743,1.098612,4.351648,1 +16,3,95,1,2,326055,0,2777.713,2.149897,1,9,1,34.96503,3.030303,0,0,168.951,206.9464,1,0,0,4,0,3,83.39137,9.967326,0,66.7,915,915,1,1,1.098612,6.818924,0,4.564348,6.870217,1,0,0,66.7,7.929743,1.098612,5.33246,1 +16,3,95,1,3,326055,0,2777.713,3.149897,1,9,1,10.2608,0,0,0,0,10.2608,0,0,0,2,0,4,83.39137,9.967326,0,66.7,915,915,1,1,1.386294,6.818924,0,4.564348,6.870217,1,0,0,66.7,7.929743,1.386294,2.32833,1 +16,3,95,1,4,326055,0,2777.713,4.149897,1,9,1,23.25134,0,0,0,0,23.25134,0,0,0,2,0,4,83.39137,9.967326,0,66.7,915,915,1,1,1.386294,6.818924,0,4.564348,6.870217,1,0,0,66.7,7.929743,1.386294,3.146363,1 +16,3,95,1,5,326055,0,2777.713,5.149897,1,9,1,20.72357,5.827187,0,0,0,26.55075,0,0,0,3,0,5,83.39137,9.967326,0,66.7,915,915,1,1,1.609438,6.818924,0,4.564348,6.870217,1,0,0,66.7,7.929743,1.609438,3.279058,1 +16,3,95,1,1,326056,0,2777.713,20.71184,0,12,1,54.1498,3.238866,0,0,0,57.38866,0,0,0,3,0,3,55.9,3.4,0,84.1,915,915,0,0,1.098612,6.818924,0,4.564348,6.870217,0,0,0,84.1,7.929743,1.098612,4.049847,1 +16,3,95,1,2,326056,0,2777.713,21.71184,0,12,1,22.37762,0,0,0,0,22.37762,0,0,0,2,0,3,55.9,3.4,0,84.1,915,915,0,0,1.098612,6.818924,0,4.564348,6.870217,0,0,0,84.1,7.929743,1.098612,3.108062,1 +16,3,95,1,3,326056,0,2777.713,22.71184,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,55.9,3.4,0,84.1,915,915,0,0,1.386294,6.818924,0,4.564348,6.870217,0,0,0,84.1,7.929743,1.386294,,0 +16,3,95,1,4,326056,0,2777.713,23.71184,0,12,1,87.6249,0,0,0,0,87.6249,0,0,0,1,9,4,55.9,3.4,0,84.1,915,915,0,0,1.386294,6.818924,0,4.564348,6.870217,0,0,0,84.1,7.929743,1.386294,4.473065,1 +16,3,95,1,5,326056,0,2777.713,24.71184,0,12,1,75.83421,5.226554,0,0,0,81.06077,0,0,0,3,1,5,55.9,3.4,0,84.1,915,915,0,0,1.609438,6.818924,0,4.564348,6.870217,0,0,0,84.1,7.929743,1.609438,4.395199,1 +13,3,0,1,1,326060,0,1757.771,25.7796,1,16,1,45.85265,8.655333,32.4575,69.55178,10.30912,97.2746,1,1,3,3,1,1,81.4,3.4,0,94.3,150,270.56,0,0,0,5.600494,1,4.564348,5.061929,0,0,0,94.3,7.472371,0,4.577538,1 +13,3,0,1,2,326060,0,1757.771,26.7796,1,16,1,83.92519,0,0,1053.504,0,83.92519,0,0,43,4,0,1,81.4,3.4,0,94.3,150,270.56,0,0,0,5.600494,1,4.564348,5.061929,0,0,0,94.3,7.472371,0,4.429926,1 +13,3,0,1,3,326060,0,1757.771,27.7796,1,16,1,125.7044,0,23.40702,845.2536,0,149.1114,0,0,39,3,0,1,81.4,3.4,0,94.3,150,270.56,0,0,0,5.600494,1,4.564348,5.061929,0,0,0,94.3,7.472371,0,5.004694,1 +11,3,0,1,1,326066,0,3873.314,20.35044,1,12,1,224.129,122.5429,0,0,0,346.6719,0,0,0,15,0,1,60.1,27.6,1,31.8,0,0,0,0,0,0,0,0,0,0,1,0,31.8,8.262124,0,5.848379,1 +11,3,0,1,2,326066,0,3873.314,21.35044,1,12,1,155.9484,90.68801,17.20019,0,0,263.8366,0,0,0,11,1,1,60.1,27.6,1,31.8,0,0,0,0,0,0,0,0,0,0,1,0,31.8,8.262124,0,5.57533,1 +11,3,0,1,3,326066,0,3873.314,22.35044,1,12,1,111.9622,104.3986,13.16945,0,0,229.5303,0,0,0,9,1,1,60.1,27.6,1,31.8,0,0,0,0,0,0,0,0,0,0,1,0,31.8,8.262124,0,5.436035,1 +14,3,95,1,1,326079,1,10370.09,13.24846,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,9.967326,0,88.9,750,750,1,0,1.609438,6.620073,0,4.564348,6.671367,0,0,0,88.9,9.246778,1.609438,,0 +14,3,95,1,2,326079,1,10370.09,14.24846,0,13,1,24.24242,0,0,0,0,24.24242,0,0,0,2,0,5,86.7,9.967326,0,88.9,750,750,1,0,1.609438,6.620073,0,4.564348,6.671367,0,0,0,88.9,9.246778,1.609438,3.188104,1 +14,3,95,1,3,326079,1,10370.09,15.24846,0,13,1,10.2608,4.275331,0,0,0,14.53613,0,0,0,1,0,6,86.7,9.967326,0,88.9,750,750,1,0,1.791759,6.620073,0,4.564348,6.671367,0,0,0,88.9,9.246778,1.791759,2.676637,1 +14,3,95,1,1,326080,1,10370.09,8.837782,1,13,1,0,1.037449,0,0,0,1.037449,0,0,0,0,0,5,83.3,9.967326,0,70.4,750,750,1,1,1.609438,6.620073,0,4.564348,6.671367,0,0,0,70.4,9.246778,1.609438,.0367652,1 +14,3,95,1,2,326080,1,10370.09,9.837782,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,83.3,9.967326,0,70.4,750,750,1,1,1.609438,6.620073,0,4.564348,6.671367,0,0,0,70.4,9.246778,1.609438,,0 +14,3,95,1,3,326080,1,10370.09,10.83778,1,13,1,51.30397,0,0,0,0,51.30397,0,0,0,2,0,6,83.3,9.967326,0,70.4,750,750,1,1,1.791759,6.620073,0,4.564348,6.671367,0,0,0,70.4,9.246778,1.791759,3.937768,1 +14,3,95,1,1,326081,1,10370.09,33.94935,1,13,1,7.591093,4.757085,0,0,0,12.34818,0,0,0,0,0,5,75,10.3,0,84.1,750,750,0,0,1.609438,6.620073,0,4.564348,6.671367,0,0,0,84.1,9.246778,1.609438,2.513509,1 +14,3,95,1,2,326081,1,10370.09,34.94935,1,13,1,19.11422,13.68298,25.17483,0,1070.923,1128.895,1,0,0,1,0,5,75,10.3,0,84.1,750,750,0,0,1.609438,6.620073,0,4.564348,6.671367,0,0,0,84.1,9.246778,1.609438,7.028995,1 +14,3,95,1,3,326081,1,10370.09,35.94935,1,13,1,13.25353,21.01325,10.2608,0,0,44.52758,0,0,0,2,0,6,75,10.3,0,84.1,750,750,0,0,1.791759,6.620073,0,4.564348,6.671367,0,0,0,84.1,9.246778,1.791759,3.796109,1 +14,3,95,1,1,326082,1,10370.09,6.850103,1,13,1,7.591093,1.037449,20.24291,0,0,28.87146,0,0,0,0,1,5,83.3,9.967326,0,100,750,750,1,1,1.609438,6.620073,0,4.564348,6.671367,0,0,0,100,9.246778,1.609438,3.362854,1 +14,3,95,1,2,326082,1,10370.09,7.850103,1,13,1,25.17483,2.494173,0,0,0,27.669,0,0,0,1,0,5,83.3,9.967326,0,100,750,750,1,1,1.609438,6.620073,0,4.564348,6.671367,0,0,0,100,9.246778,1.609438,3.320313,1 +14,3,95,1,3,326082,1,10370.09,8.850102,1,13,1,9.405729,0,23.08679,0,0,32.49252,0,0,0,0,1,6,83.3,9.967326,0,100,750,750,1,1,1.791759,6.620073,0,4.564348,6.671367,0,0,0,100,9.246778,1.791759,3.48101,1 +19,3,25,0,1,326098,0,5413.63,3.895962,0,12,1,21.84087,4.472179,0,0,0,26.31305,0,0,0,4,0,4,83.39137,9.967326,0,85.2,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,8.59686,1.386294,3.270065,1 +19,3,25,0,2,326098,0,5413.63,4.895962,0,12,1,28.42809,11.40946,0,0,0,39.83755,0,0,0,3,0,4,83.39137,9.967326,0,85.2,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,8.59686,1.386294,3.68481,1 +19,3,25,0,3,326098,0,5413.63,5.895962,0,12,1,18.43723,11.01405,0,0,0,29.45127,0,0,0,2,0,4,83.39137,9.967326,0,85.2,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,8.59686,1.386294,3.382737,1 +19,3,25,0,4,326098,0,5413.63,6.895962,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.39137,9.967326,0,85.2,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,8.59686,1.386294,,0 +19,3,25,0,5,326098,0,5413.63,7.895962,0,12,1,14.50326,0,0,0,0,14.50326,0,0,0,2,0,4,83.39137,9.967326,0,85.2,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,8.59686,1.386294,2.674374,1 +19,3,25,0,1,326099,0,5413.63,30.26968,0,12,1,134.2954,4.290172,0,0,0,138.5855,0,0,0,3,0,4,83,3.4,0,69.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,69.3,8.59686,1.386294,4.931488,1 +19,3,25,0,2,326099,0,5413.63,31.26968,0,12,1,10.98901,5.833732,0,0,0,16.82274,0,0,0,2,0,4,83,3.4,0,69.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,69.3,8.59686,1.386294,2.822732,1 +19,3,25,0,3,326099,0,5413.63,32.26968,0,12,1,0,3.525022,0,0,0,3.525022,0,0,0,0,0,4,83,3.4,0,69.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,69.3,8.59686,1.386294,1.259887,1 +19,3,25,0,4,326099,0,5413.63,33.26968,0,12,1,13.56203,7.271639,0,0,0,20.83367,0,0,0,2,0,4,83,3.4,0,69.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,69.3,8.59686,1.386294,3.03657,1 +19,3,25,0,5,326099,0,5413.63,34.26968,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83,3.4,0,69.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,69.3,8.59686,1.386294,,0 +19,3,25,0,1,326100,0,5413.63,6.96783,0,12,1,24.44098,21.24285,0,26.00104,0,45.68383,0,0,1,4,0,4,75,9.967326,0,77.8,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.59686,1.386294,3.821744,1 +19,3,25,0,2,326100,0,5413.63,7.96783,0,12,1,75.01195,22.64214,0,21.50024,0,97.65408,0,0,1,6,0,4,75,9.967326,0,77.8,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.59686,1.386294,4.581431,1 +19,3,25,0,3,326100,0,5413.63,8.967831,0,12,1,26.44864,3.858648,0,0,0,30.30729,0,0,0,3,0,4,75,9.967326,0,77.8,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.59686,1.386294,3.411388,1 +19,3,25,0,4,326100,0,5413.63,9.967831,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,75,9.967326,0,77.8,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.59686,1.386294,,0 +19,3,25,0,5,326100,0,5413.63,10.96783,0,12,1,15.95359,5.424221,0,0,0,21.37781,0,0,0,2,0,4,75,9.967326,0,77.8,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.59686,1.386294,3.062353,1 +19,3,25,0,1,326101,0,5413.63,28.01643,1,12,1,30.31721,15.98544,0,0,0,46.30265,0,0,0,3,1,4,69.7,6.9,0,80.7,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,80.7,8.59686,1.386294,3.835199,1 +19,3,25,0,2,326101,0,5413.63,29.01643,1,12,1,13.85571,0,0,0,0,13.85571,0,0,0,1,0,4,69.7,6.9,0,80.7,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,80.7,8.59686,1.386294,2.628697,1 +19,3,25,0,3,326101,0,5413.63,30.01643,1,12,1,13.16945,0,0,0,0,13.16945,0,0,0,1,0,4,69.7,6.9,0,80.7,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,80.7,8.59686,1.386294,2.577899,1 +19,3,25,0,4,326101,0,5413.63,31.01643,1,12,1,15.15756,2.401276,0,0,0,17.55884,0,0,0,1,0,4,69.7,6.9,0,80.7,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,80.7,8.59686,1.386294,2.865557,1 +19,3,25,0,5,326101,0,5413.63,32.01643,1,12,1,19.94199,4.528644,0,0,0,24.47063,0,0,0,1,0,4,69.7,6.9,0,80.7,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,80.7,8.59686,1.386294,3.197474,1 +13,3,0,0,1,326102,0,5980.897,.9856263,0,12,1,45.24181,31.11284,0,0,183.1357,259.4904,1,0,0,7,0,3,83.39137,9.967326,0,100,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,100,8.696493,1.098612,5.55872,1 +13,3,0,0,2,326102,0,5980.897,1.985626,0,12,1,4.777831,1.194458,0,0,0,5.972289,0,0,0,1,0,4,83.39137,9.967326,0,100,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,8.696493,1.386294,1.78713,1 +13,3,0,0,3,326102,0,5980.897,2.985626,0,12,1,5.267779,0,0,0,0,5.267779,0,0,0,1,0,4,83.39137,9.967326,0,100,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,8.696493,1.386294,1.661609,1 +13,3,0,0,1,326103,0,5980.897,25.13347,1,12,1,57.61831,15.41862,34.84139,0,632.0593,739.9376,1,0,0,2,1,3,75.5,3.4,0,90.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,90.9,8.696493,1.098612,6.606566,1 +13,3,0,0,2,326103,0,5980.897,26.13347,1,12,1,13.76015,8.76732,0,0,0,22.52747,0,0,0,1,0,4,75.5,3.4,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,90.9,8.696493,1.386294,3.114736,1 +13,3,0,0,3,326103,0,5980.897,27.13347,1,12,1,13.52063,7.594381,0,0,0,21.11501,0,0,0,1,0,4,75.5,3.4,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,90.9,8.696493,1.386294,3.049984,1 +13,3,0,0,1,326104,0,5980.897,29.11157,0,17,1,80.73323,3.016121,0,0,0,83.74935,0,0,0,2,0,3,81.4,10.3,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,86.4,8.696493,1.098612,4.427828,1 +13,3,0,0,2,326104,0,5980.897,30.11157,0,17,1,6.21118,1.40946,0,0,0,7.62064,0,0,0,1,0,4,81.4,10.3,0,86.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,86.4,8.696493,1.386294,2.03086,1 +13,3,0,0,3,326104,0,5980.897,31.11157,0,17,1,56.18964,3.533802,0,0,0,59.72344,0,0,0,0,7,4,81.4,10.3,0,86.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,86.4,8.696493,1.386294,4.089725,1 +11,3,0,1,1,326105,0,4480.352,29.60712,1,11,1,39.22065,4.706478,0,0,0,43.92712,0,0,0,3,0,5,74.5,10.3,0,46.6,0,0,0,0,1.609438,0,0,0,0,1,0,0,46.6,8.407681,1.609438,3.782532,1 +11,3,0,1,2,326105,0,4480.352,30.60712,1,11,1,55.47786,23.04429,0,0,456.8765,535.3986,1,0,0,5,1,6,74.5,10.3,0,46.6,0,0,0,0,1.791759,0,0,0,0,1,0,0,46.6,8.407681,1.791759,6.283011,1 +11,3,0,1,3,326105,0,4480.352,31.60712,1,11,1,86.14793,5.728944,0,0,0,91.87687,0,0,0,3,0,6,74.5,10.3,0,46.6,0,0,0,0,1.791759,0,0,0,0,1,0,0,46.6,8.407681,1.791759,4.520449,1 +11,3,0,1,1,326106,0,4480.352,8.971937,1,11,1,13.96761,0,0,0,0,13.96761,0,0,0,1,0,5,98.3,9.967326,0,59.3,0,0,1,1,1.609438,0,0,0,0,0,0,0,59.3,8.407681,1.609438,2.636741,1 +11,3,0,1,2,326106,0,4480.352,9.971937,1,11,1,24.70862,7.412588,0,0,0,32.12121,0,0,0,2,0,6,98.3,9.967326,0,59.3,0,0,1,1,1.791759,0,0,0,0,0,0,0,59.3,8.407681,1.791759,3.469517,1 +11,3,0,1,3,326106,0,4480.352,10.97194,1,11,1,310.5601,16.54553,0,0,0,327.1056,0,0,0,4,0,6,98.3,9.967326,0,59.3,0,0,1,1,1.791759,0,0,0,0,0,0,0,59.3,8.407681,1.791759,5.790283,1 +11,3,0,1,2,326107,0,4480.352,11.20123,1,11,1,170.0699,6.037296,0,0,0,176.1072,0,0,0,10,0,6,88.3,9.967326,0,48.1,0,0,1,1,1.791759,0,0,0,0,0,1,0,48.1,8.407681,1.791759,5.171093,1 +11,3,0,1,3,326107,0,4480.352,12.20123,1,11,1,92.64643,2.757589,.8550662,0,0,96.25909,0,0,0,5,0,6,88.3,9.967326,0,48.1,0,0,1,1,1.791759,0,0,0,0,0,1,0,48.1,8.407681,1.791759,4.567043,1 +11,3,0,1,1,326108,0,4480.352,6.863792,1,11,1,13.66397,0,0,0,0,13.66397,0,0,0,2,0,5,91.7,9.967326,0,63,0,0,1,1,1.609438,0,0,0,0,1,0,0,63,8.407681,1.609438,2.614762,1 +11,3,0,1,2,326108,0,4480.352,7.863792,1,11,1,46.06061,6.037296,0,0,0,52.0979,0,0,0,4,0,6,91.7,9.967326,0,63,0,0,1,1,1.791759,0,0,0,0,1,0,0,63,8.407681,1.791759,3.953125,1 +11,3,0,1,3,326108,0,4480.352,8.863791,1,11,1,326.8662,0,0,0,0,326.8662,0,0,0,3,0,6,91.7,9.967326,0,63,0,0,1,1,1.791759,0,0,0,0,1,0,0,63,8.407681,1.791759,5.789551,1 +11,3,0,1,1,326116,0,4830.499,11.38125,0,9,1,127.7692,24.85832,0,0,0,152.6275,0,0,0,10,0,6,93.3,9.967326,0,96.3,0,0,1,0,1.791759,0,0,0,0,1,0,0,96.3,8.482912,1.791759,5.028,1 +11,3,0,1,2,326116,0,4830.499,12.38125,0,9,1,174.3608,2.722538,0,0,389.5928,566.6761,1,0,0,7,0,6,93.3,9.967326,0,96.3,0,0,1,0,1.791759,0,0,0,0,1,0,0,96.3,8.482912,1.791759,6.339788,1 +11,3,0,1,3,326116,0,4830.499,13.38125,0,9,1,35.4573,12.02861,0,0,0,47.48591,0,0,0,2,0,6,93.3,9.967326,0,96.3,0,0,1,0,1.791759,0,0,0,0,1,0,0,96.3,8.482912,1.791759,3.860433,1 +11,3,0,1,1,326117,0,4830.499,8.262834,1,9,1,27.82071,0,0,0,0,27.82071,0,0,0,3,0,6,100,9.967326,0,100,0,0,1,1,1.791759,0,0,0,0,1,0,0,100,8.482912,1.791759,3.325781,1 +11,3,0,1,2,326117,0,4830.499,9.262834,1,9,1,32.67046,0,0,0,0,32.67046,0,0,0,2,0,6,100,9.967326,0,100,0,0,1,1,1.791759,0,0,0,0,1,0,0,100,8.482912,1.791759,3.486471,1 +11,3,0,1,3,326117,0,4830.499,10.26283,1,9,1,7.368877,0,0,0,0,7.368877,0,0,0,1,0,6,100,9.967326,0,100,0,0,1,1,1.791759,0,0,0,0,1,0,0,100,8.482912,1.791759,1.997265,1 +11,3,0,1,1,326118,0,4830.499,7.214237,1,9,1,24.31736,2.96239,0,0,0,27.27975,0,0,0,2,0,6,100,9.967326,0,88.9,0,0,1,1,1.791759,0,0,0,0,1,0,0,88.9,8.482912,1.791759,3.306145,1 +11,3,0,1,2,326118,0,4830.499,8.214237,1,9,1,64.39394,31.58144,0,0,0,95.97538,0,0,0,6,0,6,100,9.967326,0,88.9,0,0,1,1,1.791759,0,0,0,0,1,0,0,88.9,8.482912,1.791759,4.564092,1 +11,3,0,1,3,326118,0,4830.499,9.214237,1,9,1,139.2284,52.62245,0,0,0,191.8509,0,0,0,38,0,6,100,9.967326,0,88.9,0,0,1,1,1.791759,0,0,0,0,1,0,0,88.9,8.482912,1.791759,5.256719,1 +11,3,0,1,1,326119,0,4830.499,9.952087,0,9,1,6.18238,0,0,0,0,6.18238,0,0,0,1,0,6,83.3,9.967326,0,74.1,0,0,1,0,1.791759,0,0,0,0,1,0,0,74.1,8.482912,1.791759,1.821703,1 +11,3,0,1,2,326119,0,4830.499,10.95209,0,9,1,15.15152,0,0,0,0,15.15152,0,0,0,2,0,6,83.3,9.967326,0,74.1,0,0,1,0,1.791759,0,0,0,0,1,0,0,74.1,8.482912,1.791759,2.718101,1 +11,3,0,1,3,326119,0,4830.499,11.95209,0,9,1,227.8544,1.473776,0,0,0,229.3281,0,0,0,1,0,6,83.3,9.967326,0,74.1,0,0,1,0,1.791759,0,0,0,0,1,0,0,74.1,8.482912,1.791759,5.435154,1 +11,3,0,1,1,326120,0,4830.499,33.24572,1,9,1,73.41576,0,0,0,0,73.41576,0,0,0,5,0,6,63.8,10.3,1,51.1,0,0,0,0,1.791759,0,0,0,0,1,0,0,51.1,8.482912,1.791759,4.296139,1 +11,3,0,1,2,326120,0,4830.499,34.24572,1,9,1,139.3939,6.841856,0,0,0,146.2358,0,0,0,3,0,6,63.8,10.3,1,51.1,0,0,0,0,1.791759,0,0,0,0,1,0,0,51.1,8.482912,1.791759,4.98522,1 +11,3,0,1,3,326120,0,4830.499,35.24572,1,9,1,16.47161,1.603814,0,0,0,18.07542,0,0,0,2,0,6,63.8,10.3,1,51.1,0,0,0,0,1.791759,0,0,0,0,1,0,0,51.1,8.482912,1.791759,2.894553,1 +11,3,0,1,1,326121,0,4830.499,33.26762,0,14,1,153.5806,3.323029,0,0,1946.27,2103.174,1,0,0,8,0,6,88.3,3.4,0,85.2,0,0,0,0,1.791759,0,0,0,0,0,0,0,85.2,8.482912,1.791759,7.651203,1 +11,3,0,1,2,326121,0,4830.499,34.26762,0,14,1,49.24242,6.628788,0,0,426.2263,482.0975,1,0,0,2,0,6,88.3,3.4,0,85.2,0,0,0,0,1.791759,0,0,0,0,0,0,0,85.2,8.482912,1.791759,6.178146,1 +11,3,0,1,3,326121,0,4830.499,35.26762,0,14,1,62.41872,0,0,0,0,62.41872,0,0,0,3,0,6,88.3,3.4,0,85.2,0,0,0,0,1.791759,0,0,0,0,0,0,0,85.2,8.482912,1.791759,4.133865,1 +11,3,0,0,1,326126,0,3175.366,7.192334,1,12,1,2.530364,7.059717,0,0,0,9.590081,0,0,0,0,0,6,85,9.967326,0,92.6,0,0,1,1,1.791759,0,0,0,0,1,0,0,92.6,8.063493,1.791759,2.260729,1 +11,3,0,0,1,326127,0,3175.366,5.489391,0,12,1,38.96761,8.19838,0,0,0,47.16599,0,0,0,3,0,6,88.3,9.967326,0,81.5,0,0,1,0,1.791759,0,0,0,0,0,0,0,81.5,8.063493,1.791759,3.853673,1 +11,3,0,0,1,326128,0,3175.366,4.580424,0,12,1,6.072875,1.771255,0,0,0,7.84413,0,0,0,1,0,6,83.39137,9.967326,0,70.4,0,0,1,0,1.791759,0,0,0,0,1,0,0,70.4,8.063493,1.791759,2.059765,1 +11,3,0,0,1,326129,0,3175.366,3.268994,1,12,1,52.88462,10.45041,0,0,0,63.33502,0,0,0,5,0,6,83.39137,9.967326,0,70.4,0,0,1,1,1.791759,0,0,0,0,1,0,0,70.4,8.063493,1.791759,4.148438,1 +11,3,0,0,1,326130,0,3175.366,1.555099,1,12,1,6.072875,7.84413,0,0,0,13.917,0,0,0,1,0,6,83.39137,9.967326,0,66.7,0,0,1,1,1.791759,0,0,0,0,1,0,0,66.7,8.063493,1.791759,2.633111,1 +11,3,0,0,1,326131,0,3175.366,30.12731,1,12,1,89.22065,13.23381,26.82186,37.95547,727.9605,857.2368,2,0,3,7,1,6,83,34.5,0,72.7,0,0,0,0,1.791759,0,0,0,0,1,0,0,72.7,8.063493,1.791759,6.753714,1 +11,3,0,0,2,326131,0,3175.366,31.12731,1,12,1,141.2121,18.9324,0,0,1570.751,1730.895,2,0,0,8,0,1,83,34.5,0,72.7,0,0,0,0,0,0,0,0,0,1,0,0,72.7,8.063493,0,7.456394,1 +11,3,0,0,3,326131,0,3175.366,32.12731,1,12,1,491.3596,46.38734,25.65199,0,0,563.3989,0,0,0,7,24,1,83,34.5,0,72.7,0,0,0,0,0,0,0,0,0,1,0,0,72.7,8.063493,0,6.333988,1 +13,3,0,0,1,326132,0,10826.39,25.63176,1,9,1,20.42901,6.639428,0,0,0,27.06844,0,0,0,2,0,2,77.7,6.9,1,67,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,67,9.289835,.6931472,3.298368,1 +13,3,0,0,2,326132,0,10826.39,26.63176,1,9,1,164.557,17.96531,16.40881,0,1710.291,1909.222,1,0,0,2,1,2,77.7,6.9,1,67,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,67,9.289835,.6931472,7.554451,1 +13,3,0,0,3,326132,0,10826.39,27.63176,1,9,1,27.08512,5.352537,0,0,0,32.43766,0,0,0,3,0,3,77.7,6.9,1,67,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,67,9.289835,1.098612,3.47932,1 +13,3,0,0,1,326133,0,10826.39,29.02396,0,12,1,6.128703,1.348315,0,0,0,7.477017,0,0,0,1,0,2,80.9,10.3,0,81.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,81.8,9.289835,.6931472,2.011834,1 +13,3,0,0,2,326133,0,10826.39,30.02396,0,12,1,11.72058,0,0,0,0,11.72058,0,0,0,1,0,2,80.9,10.3,0,81.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,81.8,9.289835,.6931472,2.461346,1 +13,3,0,0,3,326133,0,10826.39,31.02396,0,12,1,10.74806,0,28.37489,0,0,39.12296,0,0,0,0,1,3,80.9,10.3,0,81.8,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,81.8,9.289835,1.098612,3.666709,1 +11,3,0,0,1,326134,0,11897.95,34.69131,1,12,1,30.13279,0,0,0,0,30.13279,0,0,0,1,0,4,65.4,10.3,0,87.5,0,512.36,0,0,1.386294,6.239028,0,0,0,1,0,0,87.5,9.384205,1.386294,3.405614,1 +11,3,0,0,2,326134,0,11897.95,35.69131,1,12,1,15.00234,4.875762,0,0,0,19.87811,0,0,0,1,0,4,65.4,10.3,0,87.5,0,512.36,0,0,1.386294,6.239028,0,0,0,1,0,0,87.5,9.384205,1.386294,2.989619,1 +11,3,0,0,3,326134,0,11897.95,36.69131,1,12,1,26.22528,12.90198,0,0,0,39.12726,0,0,0,2,1,4,65.4,10.3,0,87.5,0,512.36,0,0,1.386294,6.239028,0,0,0,1,0,0,87.5,9.384205,1.386294,3.666819,1 +11,3,0,0,1,326135,0,11897.95,33.51677,1,12,1,257.4055,0,0,0,0,257.4055,0,0,0,6,0,4,87.2,3.4,0,60.2,0,512.36,0,0,1.386294,6.239028,0,0,0,1,0,0,60.2,9.384205,1.386294,5.550653,1 +11,3,0,0,2,326135,0,11897.95,34.51677,1,12,1,58.60291,7.548054,0,0,0,66.15096,0,0,0,2,2,4,87.2,3.4,0,60.2,0,512.36,0,0,1.386294,6.239028,0,0,0,1,0,0,60.2,9.384205,1.386294,4.191939,1 +11,3,0,0,3,326135,0,11897.95,35.51677,1,12,1,86.19949,3.108341,0,0,1637.115,1726.423,1,0,0,4,0,4,87.2,3.4,0,60.2,0,512.36,0,0,1.386294,6.239028,0,0,0,1,0,0,60.2,9.384205,1.386294,7.453807,1 +11,3,0,0,1,326136,0,11897.95,50.83915,0,14,1,54.39224,18.51379,0,0,0,72.90603,0,0,0,3,0,4,89.9,20.7,0,70.5,0,512.36,0,0,1.386294,6.239028,0,0,0,0,0,0,70.5,9.384205,1.386294,4.289171,1 +11,3,0,0,2,326136,0,11897.95,51.83915,0,14,1,35.16174,12.79887,28.12939,0,0,76.09001,0,0,0,3,1,4,89.9,20.7,0,70.5,0,512.36,0,0,1.386294,6.239028,0,0,0,0,0,0,70.5,9.384205,1.386294,4.331917,1 +11,3,0,0,3,326136,0,11897.95,52.83915,0,14,1,22.35598,16.57352,0,0,0,38.92949,0,0,0,4,0,4,89.9,20.7,0,70.5,0,512.36,0,0,1.386294,6.239028,0,0,0,0,0,0,70.5,9.384205,1.386294,3.661752,1 +11,3,0,0,1,326137,0,11897.95,56.49281,1,12,1,121.0419,104.8008,0,0,0,225.8427,0,0,0,8,0,4,83,41.4,1,53.4,0,512.36,0,0,1.386294,6.239028,0,0,0,1,0,0,53.4,9.384205,1.386294,5.419839,1 +11,3,0,0,2,326137,0,11897.95,57.49281,1,12,1,126.4416,103.9334,0,0,0,230.3751,0,0,0,7,0,4,83,41.4,1,53.4,0,512.36,0,0,1.386294,6.239028,0,0,0,1,0,0,53.4,9.384205,1.386294,5.439709,1 +11,3,0,0,3,326137,0,11897.95,58.49281,1,12,1,64.05847,80.82115,21.57352,0,0,166.4531,0,0,0,4,3,4,83,41.4,1,53.4,0,512.36,0,0,1.386294,6.239028,0,0,0,1,0,0,53.4,9.384205,1.386294,5.114714,1 +13,3,0,1,1,326146,0,3014.076,44.90075,0,11,1,29.06027,6.001021,24.51481,0,843.6926,903.2686,1,0,0,3,0,2,71.3,6.9,0,69.3,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,69.3,8.01138,.6931472,6.80602,1 +13,3,0,1,2,326146,0,3014.076,45.90075,0,11,1,111.5799,1.875293,0,0,0,113.4552,0,0,0,7,0,2,71.3,6.9,0,69.3,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,69.3,8.01138,.6931472,4.731408,1 +13,3,0,1,3,326146,0,3014.076,46.90075,0,11,1,98.40929,1.397249,0,0,1229.862,1329.669,1,0,0,6,1,2,71.3,6.9,0,69.3,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,69.3,8.01138,.6931472,7.192685,1 +13,3,0,1,4,326146,0,3014.076,47.90075,0,11,1,13.57115,0,28.96472,0,0,42.53587,0,0,0,1,0,2,71.3,6.9,0,69.3,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,69.3,8.01138,.6931472,3.750348,1 +13,3,0,1,5,326146,0,3014.076,48.90075,0,11,1,49.32767,0,0,0,0,49.32767,0,0,0,3,0,2,71.3,6.9,0,69.3,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,69.3,8.01138,.6931472,3.898485,1 +13,3,0,1,1,326147,0,3014.076,25.14716,1,9,1,76.60879,6.256384,25.53626,0,907.7273,1016.129,1,0,0,4,0,2,78.2,10.3,0,65.9,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,65.9,8.01138,.6931472,6.923755,1 +13,3,0,1,2,326147,0,3014.076,26.14716,1,9,1,113.0333,3.830286,0,0,0,116.8636,0,0,0,5,0,2,78.2,10.3,0,65.9,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,65.9,8.01138,.6931472,4.761007,1 +13,3,0,1,3,326147,0,3014.076,27.14716,1,9,1,82.07223,6.771281,27.38607,0,0,116.2296,0,0,0,5,0,2,78.2,10.3,0,65.9,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,65.9,8.01138,.6931472,4.755568,1 +13,3,0,1,4,326147,0,3014.076,28.14716,1,9,1,41.8767,6.843738,13.1834,0,0,61.90384,0,0,0,3,1,2,78.2,10.3,0,65.9,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,65.9,8.01138,.6931472,4.125582,1 +13,3,0,1,5,326147,0,3014.076,29.14716,1,9,1,0,0,0,0,0,0,0,0,0,0,0,2,78.2,10.3,0,65.9,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,65.9,8.01138,.6931472,,0 +13,3,0,1,1,326164,0,5493.255,29.5332,1,12,1,13.00052,0,0,52.00208,0,13.00052,0,0,7,2,0,4,66.5,3.4,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.611459,1.386294,2.564989,1 +13,3,0,1,2,326164,0,5493.255,30.5332,1,12,1,16.72241,3.511706,0,0,0,20.23411,0,0,0,2,0,4,66.5,3.4,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.611459,1.386294,3.00737,1 +13,3,0,1,3,326164,0,5493.255,31.5332,1,12,1,190.3863,11.12818,0,0,0,201.5145,0,0,0,9,0,4,66.5,3.4,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.611459,1.386294,5.305861,1 +13,3,0,1,4,326164,0,5493.255,32.5332,1,12,1,44.07658,9.988033,0,21.93857,0,54.06462,0,0,1,3,0,4,66.5,3.4,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.611459,1.386294,3.99018,1 +13,3,0,1,5,326164,0,5493.255,33.5332,1,12,1,764.4126,16.77302,0,30.45685,0,781.1857,0,0,7,8,0,4,66.5,3.4,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.611459,1.386294,6.660813,1 +13,3,0,1,1,326165,0,5493.255,5.546885,0,12,1,6.24025,0,0,5.200208,0,6.24025,0,0,1,1,0,4,85,9.967326,0,81.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,8.611459,1.386294,1.83102,1 +13,3,0,1,2,326165,0,5493.255,6.546885,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,85,9.967326,0,81.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,8.611459,1.386294,,0 +13,3,0,1,3,326165,0,5493.255,7.546885,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,85,9.967326,0,81.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,8.611459,1.386294,,0 +13,3,0,1,4,326165,0,5493.255,8.546885,0,12,1,6.781013,0,0,0,0,6.781013,0,0,0,1,0,4,85,9.967326,0,81.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,8.611459,1.386294,1.914127,1 +13,3,0,1,5,326165,0,5493.255,9.546885,0,12,1,39.52139,0,0,60.9137,0,39.52139,0,0,14,1,0,4,85,9.967326,0,81.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,8.611459,1.386294,3.676842,1 +13,3,0,1,1,326166,0,5493.255,33.40178,0,14,1,15.60062,0,0,83.20333,0,15.60062,0,0,10,0,0,4,77.7,3.4,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,90.9,8.611459,1.386294,2.747311,1 +13,3,0,1,2,326166,0,5493.255,34.40178,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,77.7,3.4,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,90.9,8.611459,1.386294,,0 +13,3,0,1,3,326166,0,5493.255,35.40178,0,14,1,10.97454,0,21.94908,0,0,32.92362,0,0,0,0,1,4,77.7,3.4,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,90.9,8.611459,1.386294,3.49419,1 +13,3,0,1,4,326166,0,5493.255,36.40178,0,14,1,166.8767,6.086957,2.393299,0,0,175.357,0,0,0,7,1,4,77.7,3.4,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,90.9,8.611459,1.386294,5.166824,1 +13,3,0,1,5,326166,0,5493.255,37.40178,0,14,1,62.00145,0,10.87745,30.45685,0,72.8789,0,0,7,2,0,4,77.7,3.4,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,90.9,8.611459,1.386294,4.288799,1 +13,3,0,1,1,326167,0,5493.255,4.205339,1,12,1,4.160166,0,0,0,0,4.160166,0,0,0,0,0,4,83.39137,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.611459,1.386294,1.425555,1 +13,3,0,1,2,326167,0,5493.255,5.205339,1,12,1,5.733397,2.914477,0,0,0,8.647874,0,0,0,1,0,4,83.39137,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.611459,1.386294,2.157314,1 +13,3,0,1,3,326167,0,5493.255,6.205339,1,12,1,28.5338,0,0,0,0,28.5338,0,0,0,2,0,4,83.39137,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.611459,1.386294,3.351089,1 +13,3,0,1,4,326167,0,5493.255,7.205339,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.39137,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.611459,1.386294,,0 +13,3,0,1,5,326167,0,5493.255,8.205338,1,12,1,9.06454,2.15736,0,0,0,11.2219,0,0,0,1,0,4,83.39137,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.611459,1.386294,2.417867,1 +19,3,25,1,1,326187,0,1856.305,59.51814,1,12,1,38.81512,8.784474,37.02758,0,0,84.62717,0,0,0,4,1,1,64.4,17.2,0,58,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,1,0,58,7.526882,0,4.438255,1 +19,3,25,1,2,326187,0,1856.305,60.51814,1,12,1,18.28411,3.000469,39.38115,0,0,60.66573,0,0,0,2,0,1,64.4,17.2,0,58,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,1,0,58,7.526882,0,4.105379,1 +19,3,25,1,3,326187,0,1856.305,61.51814,1,12,1,46.47464,0,30.09458,0,0,76.56921,0,0,0,3,0,1,64.4,17.2,0,58,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,1,0,58,7.526882,0,4.338195,1 +7,3,25,1,1,326237,1,2079.179,31.02259,1,7,1,196.1285,48.68421,8.805668,0,0,253.6184,0,0,0,18,0,3,60.6,17.2,0,68.2,410.4,410.4,0,0,1.098612,6.017132,0,3.258096,7.403427,0,1,0,68.2,7.640209,1.098612,5.535831,1 +7,3,25,1,2,326237,1,2079.179,32.02259,1,7,1,120.9324,98.18182,0,0,0,219.1142,0,0,0,11,0,3,60.6,17.2,0,68.2,410.4,410.4,0,0,1.098612,6.017132,0,3.258096,7.403427,0,1,0,68.2,7.640209,1.098612,5.389593,1 +7,3,25,1,3,326237,1,2079.179,33.02259,1,7,1,148.696,117.0799,0,0,0,265.776,0,0,0,9,0,3,60.6,17.2,0,68.2,410.4,410.4,0,0,1.098612,6.017132,0,3.258096,7.403427,0,1,0,68.2,7.640209,1.098612,5.582654,1 +7,3,25,1,1,326238,1,2079.179,7.737166,1,7,1,42.63664,0,0,0,0,42.63664,0,0,0,3,0,3,85,9.967326,0,81.5,410.4,410.4,1,1,1.098612,6.017132,0,3.258096,7.403427,1,0,0,81.5,7.640209,1.098612,3.752714,1 +7,3,25,1,2,326238,1,2079.179,8.737166,1,7,1,18.18182,0,0,0,0,18.18182,0,0,0,2,0,3,85,9.967326,0,81.5,410.4,410.4,1,1,1.098612,6.017132,0,3.258096,7.403427,1,0,0,81.5,7.640209,1.098612,2.900422,1 +7,3,25,1,3,326238,1,2079.179,9.737166,1,7,1,13.25353,2.565199,0,0,0,15.81873,0,0,0,2,0,3,85,9.967326,0,81.5,410.4,410.4,1,1,1.098612,6.017132,0,3.258096,7.403427,1,0,0,81.5,7.640209,1.098612,2.761194,1 +7,3,25,1,1,326239,1,2079.179,1.549623,0,7,1,112.0698,6.325911,5.050607,0,0,123.4464,0,0,0,7,0,3,83.39137,9.967326,0,90.7,410.4,410.4,1,0,1.098612,6.017132,0,3.258096,7.403427,0,0,0,90.7,7.640209,1.098612,4.815807,1 +7,3,25,1,2,326239,1,2079.179,2.549623,0,7,1,60.4662,9.34732,0,0,0,69.81352,0,0,0,7,0,3,83.39137,9.967326,0,90.7,410.4,410.4,1,0,1.098612,6.017132,0,3.258096,7.403427,0,0,0,90.7,7.640209,1.098612,4.245828,1 +7,3,25,1,3,326239,1,2079.179,3.549623,0,7,1,229.1791,2.992732,0,0,0,232.1719,0,0,0,20,0,3,83.39137,9.967326,0,90.7,410.4,410.4,1,0,1.098612,6.017132,0,3.258096,7.403427,0,0,0,90.7,7.640209,1.098612,5.447478,1 +13,3,0,0,1,326251,0,4201.173,54.94867,1,12,1,7.727975,2.833591,0,0,0,10.56157,0,0,0,1,0,1,77.7,20.7,0,73.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,73.9,8.343357,0,2.357222,1 +13,3,0,0,2,326251,0,4201.173,55.94867,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,77.7,20.7,0,73.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,73.9,8.343357,0,,0 +13,3,0,0,3,326251,0,4201.173,56.94867,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,77.7,20.7,0,73.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,73.9,8.343357,0,,0 +14,3,95,0,1,326265,0,7870.841,28.64887,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,0,0,100,485.75,485.75,0,0,.6931472,6.185694,0,4.564348,6.236988,0,0,0,100,8.971047,.6931472,,0 +14,3,95,0,2,326265,0,7870.841,29.64887,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,0,0,100,485.75,485.75,0,0,.6931472,6.185694,0,4.564348,6.236988,0,0,0,100,8.971047,.6931472,,0 +14,3,95,0,3,326265,0,7870.841,30.64887,0,12,1,8.669268,0,0,0,0,8.669268,0,0,0,1,0,2,86.7,0,0,100,485.75,485.75,0,0,.6931472,6.185694,0,4.564348,6.236988,0,0,0,100,8.971047,.6931472,2.159784,1 +14,3,95,0,4,326265,0,7870.841,31.64887,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,0,0,100,485.75,485.75,0,0,.6931472,6.185694,0,4.564348,6.236988,0,0,0,100,8.971047,.6931472,,0 +14,3,95,0,5,326265,0,7870.841,32.64887,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,0,0,100,485.75,485.75,0,0,.6931472,6.185694,0,4.564348,6.236988,0,0,0,100,8.971047,.6931472,,0 +14,3,95,0,1,326266,0,7870.841,28.62971,1,12,1,56.67182,1.519835,0,0,0,58.19165,0,0,0,1,0,2,87.8,6.9,1,54.5,485.75,485.75,0,0,.6931472,6.185694,0,4.564348,6.236988,1,0,0,54.5,8.971047,.6931472,4.063742,1 +14,3,95,0,2,326266,0,7870.841,29.62971,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,87.8,6.9,1,54.5,485.75,485.75,0,0,.6931472,6.185694,0,4.564348,6.236988,1,0,0,54.5,8.971047,.6931472,,0 +14,3,95,0,3,326266,0,7870.841,30.62971,1,12,1,8.669268,0,0,0,0,8.669268,0,0,0,1,0,2,87.8,6.9,1,54.5,485.75,485.75,0,0,.6931472,6.185694,0,4.564348,6.236988,1,0,0,54.5,8.971047,.6931472,2.159784,1 +14,3,95,0,4,326266,0,7870.841,31.62971,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,87.8,6.9,1,54.5,485.75,485.75,0,0,.6931472,6.185694,0,4.564348,6.236988,1,0,0,54.5,8.971047,.6931472,,0 +14,3,95,0,5,326266,0,7870.841,32.62971,1,12,1,25.04472,0,0,0,0,25.04472,0,0,0,3,0,2,87.8,6.9,1,54.5,485.75,485.75,0,0,.6931472,6.185694,0,4.564348,6.236988,1,0,0,54.5,8.971047,.6931472,3.220663,1 +13,3,0,1,1,326290,0,13140.18,60.5065,0,12,1,7.006698,0,16.74395,0,0,23.75064,0,0,0,0,0,4,87.8,24.1,0,73.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.483506,1.386294,3.16761,1 +13,3,0,1,2,326290,0,13140.18,61.5065,0,12,1,28.19602,3.210227,26.04167,0,0,57.44792,0,0,0,1,1,4,87.8,24.1,0,73.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.483506,1.386294,4.050879,1 +13,3,0,1,3,326290,0,13140.18,62.5065,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,87.8,24.1,0,73.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.483506,1.386294,,0 +13,3,0,1,1,326291,0,13140.18,51.22792,1,13,1,62.0814,6.579083,21.38073,0,0,90.04121,0,0,0,6,0,4,70.7,17.2,0,75,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,75,9.483506,1.386294,4.500268,1 +13,3,0,1,2,326291,0,13140.18,52.22792,1,13,1,49.69223,2.831439,25.0947,0,0,77.61837,0,0,0,2,1,4,70.7,17.2,0,75,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,75,9.483506,1.386294,4.351804,1 +13,3,0,1,3,326291,0,13140.18,53.22792,1,13,1,27.74166,0,0,0,0,27.74166,0,0,0,1,0,4,70.7,17.2,0,75,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,75,9.483506,1.386294,3.322935,1 +13,3,0,1,1,326292,0,13140.18,18.35181,1,11,1,23.95672,.6543019,6.43998,0,0,31.051,0,0,0,2,0,4,85.1,10.3,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.483506,1.386294,3.435631,1 +13,3,0,1,2,326292,0,13140.18,19.35181,1,11,1,237.893,15.14205,20.83333,0,0,273.8684,0,0,0,2,1,4,85.1,10.3,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.483506,1.386294,5.612648,1 +13,3,0,1,3,326292,0,13140.18,20.35181,1,11,1,10.83658,11.2137,12.57044,0,0,34.62072,0,0,0,2,0,4,85.1,10.3,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.483506,1.386294,3.544452,1 +13,3,0,1,1,326293,0,13140.18,17.1718,1,13,1,146.0587,27.03761,20.35033,46.36785,0,193.4467,0,0,3,5,0,4,70.7,10.3,0,58,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,58,9.483506,1.386294,5.265002,1 +13,3,0,1,2,326293,0,13140.18,18.1718,1,13,1,62.87879,26.11269,10.41667,14.20455,0,99.40814,0,0,1,3,1,4,70.7,10.3,0,58,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,58,9.483506,1.386294,4.599234,1 +13,3,0,1,3,326293,0,13140.18,19.1718,1,13,1,224.495,21.31339,0,0,0,245.8084,0,0,0,2,0,4,70.7,10.3,0,58,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,58,9.483506,1.386294,5.504552,1 +13,3,0,1,1,326294,0,5400,24.01917,0,10,1,14.42555,0,0,0,0,14.42555,0,0,0,1,0,1,70.2,6.9,0,72.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,72.6,8.594339,0,2.669001,1 +13,3,0,1,2,326294,0,5400,25.01917,0,10,1,5.681818,1.633523,0,0,0,7.315341,0,0,0,1,0,1,70.2,6.9,0,72.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,72.6,8.594339,0,1.989974,1 +13,3,0,1,3,326294,0,5400,26.01917,0,10,1,264.0746,8.326832,24.70741,0,0,297.1088,0,0,0,1,1,1,70.2,6.9,0,72.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,72.6,8.594339,0,5.694098,1 +19,3,25,1,1,326308,0,11665.1,16.64887,1,9,1,118.6741,19.4585,0,0,0,138.1326,0,0,0,11,0,6,56.4,0,0,76.1,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,1,0,0,76.1,9.364443,1.791759,4.928214,1 +19,3,25,1,2,326308,0,11665.1,17.64887,1,9,1,125.4079,.2331002,0,0,0,125.641,0,0,0,6,0,6,56.4,0,0,76.1,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,1,0,0,76.1,9.364443,1.791759,4.833429,1 +19,3,25,1,3,326308,0,11665.1,18.64887,1,9,1,172.7234,21.3339,2.351432,0,0,196.4087,0,0,0,10,0,6,56.4,0,0,76.1,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,76.1,9.364443,1.791759,5.280198,1 +19,3,25,1,4,326308,0,11665.1,19.64887,1,9,1,123.1745,33.47425,0,0,718.2321,874.8809,1,0,0,7,0,6,56.4,0,0,76.1,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,76.1,9.364443,1.791759,6.774088,1 +19,3,25,1,5,326308,0,11665.1,20.64887,1,9,1,85.70425,17.94872,0,0,0,103.653,0,0,0,5,0,6,56.4,0,0,76.1,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,76.1,9.364443,1.791759,4.641048,1 +19,3,25,1,1,326309,0,11665.1,15.72074,0,9,1,14.62551,0,0,0,0,14.62551,0,0,0,1,0,6,94.7,3.4,0,89.8,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,89.8,9.364443,1.791759,2.682767,1 +19,3,25,1,2,326309,0,11665.1,16.72074,0,9,1,16.31702,0,0,0,0,16.31702,0,0,0,1,0,6,94.7,3.4,0,89.8,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,89.8,9.364443,1.791759,2.792208,1 +19,3,25,1,3,326309,0,11665.1,17.72074,0,9,1,46.60111,2.201796,0,0,0,48.80291,0,0,0,1,0,6,94.7,3.4,0,89.8,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,89.8,9.364443,1.791759,3.88779,1 +19,3,25,1,4,326309,0,11665.1,18.72074,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,94.7,3.4,0,89.8,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,89.8,9.364443,1.791759,,0 +19,3,25,1,5,326309,0,11665.1,19.72074,0,9,1,6.761503,0,0,0,0,6.761503,0,0,0,0,0,6,94.7,3.4,0,89.8,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,89.8,9.364443,1.791759,1.911245,1 +19,3,25,1,1,326310,0,11665.1,8.711842,1,9,1,7.591093,0,20.24291,0,0,27.83401,0,0,0,0,1,6,76.7,9.967326,0,74.1,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,74.1,9.364443,1.791759,3.326259,1 +19,3,25,1,2,326310,0,11665.1,9.711842,1,9,1,32.89044,0,0,0,0,32.89044,0,0,0,2,0,6,76.7,9.967326,0,74.1,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,74.1,9.364443,1.791759,3.493182,1 +19,3,25,1,3,326310,0,11665.1,10.71184,1,9,1,25.22445,8.824284,10.2608,0,0,44.30953,0,0,0,2,1,6,76.7,9.967326,0,74.1,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,74.1,9.364443,1.791759,3.7912,1 +19,3,25,1,4,326310,0,11665.1,11.71184,1,9,1,90.17679,12.3751,13.06687,0,0,115.6188,0,0,0,6,0,6,76.7,9.967326,0,74.1,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,74.1,9.364443,1.791759,4.750298,1 +19,3,25,1,5,326310,0,11665.1,12.71184,1,9,1,57.93818,2.054795,21.42606,0,0,81.41904,0,0,0,5,1,6,76.7,9.967326,0,74.1,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,74.1,9.364443,1.791759,4.399609,1 +19,3,25,1,1,326311,0,11665.1,41.53046,0,5,1,7.591093,0,0,0,0,7.591093,0,0,0,1,0,6,78.2,6.9,0,85.2,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,85.2,9.364443,1.791759,2.026976,1 +19,3,25,1,2,326311,0,11665.1,42.53046,0,5,1,96.13054,0,4.662004,0,0,100.7925,0,0,0,3,0,6,78.2,6.9,0,85.2,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,85.2,9.364443,1.791759,4.613064,1 +19,3,25,1,3,326311,0,11665.1,43.53046,0,5,1,60.93202,0,0,0,0,60.93202,0,0,0,4,0,6,78.2,6.9,0,85.2,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,85.2,9.364443,1.791759,4.109759,1 +19,3,25,1,4,326311,0,11665.1,44.53046,0,5,1,16.33359,0,0,0,0,16.33359,0,0,0,2,0,6,78.2,6.9,0,85.2,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,85.2,9.364443,1.791759,2.793224,1 +19,3,25,1,5,326311,0,11665.1,45.53046,0,5,1,435.8834,7.235687,23.1823,0,737.0566,1203.358,1,0,0,8,1,6,78.2,6.9,0,85.2,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,85.2,9.364443,1.791759,7.092871,1 +19,3,25,1,1,326312,0,11665.1,39.3128,1,9,1,80.46558,1.3917,0,0,0,81.85728,0,0,0,7,0,6,80.9,17.2,0,93.2,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,93.2,9.364443,1.791759,4.404977,1 +19,3,25,1,2,326312,0,11665.1,40.3128,1,9,1,111.8881,8.275059,5.594406,0,0,125.7576,0,0,0,7,0,6,80.9,17.2,0,93.2,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,93.2,9.364443,1.791759,4.834356,1 +19,3,25,1,3,326312,0,11665.1,41.3128,1,9,1,59.47841,58.55066,0,0,0,118.0291,0,0,0,5,1,6,80.9,17.2,0,93.2,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,93.2,9.364443,1.791759,4.770931,1 +19,3,25,1,4,326312,0,11665.1,42.3128,1,9,1,495.196,72.92467,24.21214,0,0,592.3328,0,0,0,6,0,6,80.9,17.2,0,93.2,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,93.2,9.364443,1.791759,6.384068,1 +19,3,25,1,5,326312,0,11665.1,43.3128,1,9,1,215.929,19.74008,11.9424,0,0,247.6115,0,0,0,9,0,6,80.9,17.2,0,93.2,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,93.2,9.364443,1.791759,5.511861,1 +19,3,25,1,1,326313,0,11665.1,17.64545,0,9,1,80.5921,0,0,0,0,80.5921,0,0,0,3,0,6,79.8,6.9,0,90.9,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,90.9,9.364443,1.791759,4.3894,1 +19,3,25,1,2,326313,0,11665.1,18.64545,0,9,1,37.06294,14.63869,0,0,0,51.70163,0,0,0,4,0,6,79.8,6.9,0,90.9,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,90.9,9.364443,1.791759,3.945489,1 +19,3,25,1,3,326313,0,11665.1,19.64545,0,9,1,61.56477,20.00855,0,0,0,81.57332,0,0,0,2,7,6,79.8,6.9,0,90.9,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,90.9,9.364443,1.791759,4.401502,1 +19,3,25,1,4,326313,0,11665.1,20.64545,0,9,1,65.71868,0,0,0,0,65.71868,0,0,0,2,0,6,79.8,6.9,0,90.9,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,90.9,9.364443,1.791759,4.185383,1 +19,3,25,1,5,326313,0,11665.1,21.64545,0,9,1,73.76186,18.22972,0,0,0,91.99157,0,0,0,9,0,6,79.8,6.9,0,90.9,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,90.9,9.364443,1.791759,4.521697,1 +11,3,0,0,1,326342,0,9416.422,18.47502,1,11,1,34.00309,0,30.9119,0,0,64.91499,0,0,0,2,0,3,82.4,6.9,0,87.5,0,36.4,0,0,1.098612,3.594569,0,0,0,1,0,0,87.5,9.150316,1.098612,4.173079,1 +11,3,0,0,2,326342,0,9416.422,19.47502,1,11,1,278.9678,8.333333,15.15152,0,0,302.4526,0,0,0,3,0,3,82.4,6.9,0,87.5,0,36.4,0,0,1.098612,3.594569,0,0,0,1,0,0,87.5,9.150316,1.098612,5.711925,1 +11,3,0,0,3,326342,0,9416.422,20.47502,1,11,1,10.83658,0,0,0,0,10.83658,0,0,0,1,0,3,82.4,6.9,0,87.5,0,36.4,0,0,1.098612,3.594569,0,0,0,1,0,0,87.5,9.150316,1.098612,2.382928,1 +11,3,0,0,1,326343,0,9416.422,60.98289,0,8,1,18.54714,35.23957,0,0,0,53.78671,0,0,0,3,0,3,95.7,3.4,0,59.1,0,36.4,0,0,1.098612,3.594569,0,0,0,0,0,0,59.1,9.150316,1.098612,3.985026,1 +11,3,0,0,2,326343,0,9416.422,61.98289,0,8,1,33.14394,45.2178,0,0,0,78.36174,0,0,0,4,0,3,95.7,3.4,0,59.1,0,36.4,0,0,1.098612,3.594569,0,0,0,0,0,0,59.1,9.150316,1.098612,4.361336,1 +11,3,0,0,3,326343,0,9416.422,62.98289,0,8,1,29.47551,40.94062,0,0,0,70.41612,0,0,0,4,0,3,95.7,3.4,0,59.1,0,36.4,0,0,1.098612,3.594569,0,0,0,0,0,0,59.1,9.150316,1.098612,4.254422,1 +11,3,0,0,1,326344,0,9416.422,57.59343,1,12,1,33.48789,24.96136,35.03349,0,0,93.48274,0,0,0,1,3,3,65.4,10.3,0,70.5,0,36.4,0,0,1.098612,3.594569,0,0,0,1,0,0,70.5,9.150316,1.098612,4.537777,1 +11,3,0,0,2,326344,0,9416.422,58.59343,1,12,1,69.12878,29.21402,153.8826,0,0,252.2254,0,0,0,3,3,3,65.4,10.3,0,70.5,0,36.4,0,0,1.098612,3.594569,0,0,0,1,0,0,70.5,9.150316,1.098612,5.530323,1 +11,3,0,0,3,326344,0,9416.422,59.59343,1,12,1,21.67317,19.18075,31.85956,0,0,72.71348,0,0,0,1,2,3,65.4,10.3,0,70.5,0,36.4,0,0,1.098612,3.594569,0,0,0,1,0,0,70.5,9.150316,1.098612,4.286527,1 +13,3,0,1,1,326349,0,10212.9,5.71937,0,12,1,64.91499,7.676455,28.85111,0,0,101.4426,0,0,0,6,0,4,96.7,9.967326,0,44.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,44.4,9.231505,1.386294,4.619493,1 +13,3,0,1,2,326349,0,10212.9,6.71937,0,12,1,38.02083,6.605114,0,0,0,44.62595,0,0,0,1,0,4,96.7,9.967326,0,44.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,44.4,9.231505,1.386294,3.798316,1 +13,3,0,1,3,326349,0,10212.9,7.71937,0,12,1,123.9705,61.59515,9.536194,0,0,195.1019,0,0,0,44,0,4,96.7,9.967326,0,44.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,44.4,9.231505,1.386294,5.273522,1 +13,3,0,1,1,326350,0,10212.9,33.72758,1,12,1,0,13.29212,0,0,0,13.29212,0,0,0,0,0,4,71.8,0,0,81.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,81.8,9.231505,1.386294,2.587171,1 +13,3,0,1,2,326350,0,10212.9,34.72758,1,12,1,18.93939,0,0,0,0,18.93939,0,0,0,1,0,4,71.8,0,0,81.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,81.8,9.231505,1.386294,2.941244,1 +13,3,0,1,3,326350,0,10212.9,35.72758,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,71.8,0,0,81.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,81.8,9.231505,1.386294,,0 +13,3,0,1,1,326351,0,10212.9,16.30664,1,12,1,12.36476,0,0,0,0,12.36476,0,0,0,2,0,4,80.9,10.3,0,69.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.231505,1.386294,2.514851,1 +13,3,0,1,2,326351,0,10212.9,17.30664,1,12,1,17.99242,0,0,0,0,17.99242,0,0,0,2,0,4,80.9,10.3,0,69.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.231505,1.386294,2.889951,1 +13,3,0,1,3,326351,0,10212.9,18.30664,1,12,1,70.06935,7.433897,0,0,207.7677,285.2709,1,0,0,4,0,4,80.9,10.3,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.231505,1.386294,5.653439,1 +13,3,0,1,1,326352,0,10212.9,34.69405,0,11,1,228.2329,0,12.87996,0,0,241.1128,0,0,0,0,25,4,79.8,3.4,1,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,72.7,9.231505,1.386294,5.485265,1 +13,3,0,1,2,326352,0,10212.9,35.69405,0,11,1,18.93939,0,0,0,0,18.93939,0,0,0,1,0,4,79.8,3.4,1,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,72.7,9.231505,1.386294,2.941244,1 +13,3,0,1,3,326352,0,10212.9,36.69405,0,11,1,27.82835,9.427829,0,0,0,37.25618,0,0,0,1,0,4,79.8,3.4,1,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,72.7,9.231505,1.386294,3.617818,1 +11,3,0,1,1,326353,0,5597.654,28.46544,0,8,1,84.67825,29.69867,5.362615,0,0,119.7395,0,0,0,7,0,4,74.5,10.3,0,44.3,0,371.52,0,0,1.386294,5.917603,0,0,0,1,0,0,44.3,8.630281,1.386294,4.785319,1 +11,3,0,1,2,326353,0,5597.654,29.46544,0,8,1,326.301,7.243319,0,0,1894.28,2227.825,1,0,0,6,0,4,74.5,10.3,0,44.3,0,371.52,0,0,1.386294,5.917603,0,0,0,1,0,0,44.3,8.630281,1.386294,7.708781,1 +11,3,0,1,3,326353,0,5597.654,30.46544,0,8,1,560.0172,40.49871,0,0,1279.209,1879.725,1,0,0,10,6,4,74.5,10.3,0,44.3,0,371.52,0,0,1.386294,5.917603,0,0,0,1,0,0,44.3,8.630281,1.386294,7.538881,1 +11,3,0,1,1,326354,0,5597.654,6.291581,0,8,1,0,2.808989,0,68.94791,0,2.808989,0,0,3,0,0,4,56.7,9.967326,0,63,0,371.52,1,0,1.386294,5.917603,0,0,0,0,0,0,63,8.630281,1.386294,1.032825,1 +11,3,0,1,2,326354,0,5597.654,7.291581,0,8,1,28.12939,2.461322,0,0,0,30.59072,0,0,0,2,2,4,56.7,9.967326,0,63,0,371.52,1,0,1.386294,5.917603,0,0,0,0,0,0,63,8.630281,1.386294,3.420696,1 +11,3,0,1,3,326354,0,5597.654,8.291581,0,8,1,23.51677,10.83405,0,0,0,34.35082,0,0,0,2,0,4,56.7,9.967326,0,63,0,371.52,1,0,1.386294,5.917603,0,0,0,0,0,0,63,8.630281,1.386294,3.536626,1 +11,3,0,1,1,326355,0,5597.654,4.692676,0,8,1,17.87538,0,0,0,0,17.87538,0,0,0,1,0,4,83.39137,9.967326,0,81.5,0,371.52,1,0,1.386294,5.917603,0,0,0,0,0,0,81.5,8.630281,1.386294,2.883425,1 +11,3,0,1,2,326355,0,5597.654,5.692676,0,8,1,17.81528,9.657759,0,0,0,27.47304,0,0,0,3,0,4,83.39137,9.967326,0,81.5,0,371.52,1,0,1.386294,5.917603,0,0,0,0,0,0,81.5,8.630281,1.386294,3.313205,1 +11,3,0,1,3,326355,0,5597.654,6.692676,0,8,1,17.19691,14.91831,0,0,0,32.11522,0,0,0,2,0,4,83.39137,9.967326,0,81.5,0,371.52,1,0,1.386294,5.917603,0,0,0,0,0,0,81.5,8.630281,1.386294,3.46933,1 +11,3,0,1,1,326356,0,5597.654,25.30322,1,8,1,0,18.94791,0,0,0,18.94791,0,0,0,0,0,4,54.8,6.9,0,77.4,0,371.52,0,0,1.386294,5.917603,0,0,0,0,0,0,77.4,8.630281,1.386294,2.941694,1 +11,3,0,1,2,326356,0,5597.654,26.30322,1,8,1,25.31646,12.04876,25.78528,0,0,63.15049,0,0,0,1,1,4,54.8,6.9,0,77.4,0,371.52,0,0,1.386294,5.917603,0,0,0,0,0,0,77.4,8.630281,1.386294,4.145521,1 +11,3,0,1,3,326356,0,5597.654,27.30322,1,8,1,5.159071,49.31212,0,12.89768,0,54.4712,0,0,1,1,0,4,54.8,6.9,0,77.4,0,371.52,0,0,1.386294,5.917603,0,0,0,0,0,0,77.4,8.630281,1.386294,3.997672,1 +13,3,0,1,1,326374,0,8395.895,25.49487,1,12,1,60.10725,23.05414,0,0,1243.672,1326.833,2,0,0,4,0,3,26.1,27.6,1,21.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,21.6,9.035617,1.098612,7.19055,1 +13,3,0,1,2,326374,0,8395.895,26.49487,1,12,1,91.42053,3.375527,28.12939,79.69995,285.2086,408.1341,1,0,9,6,1,4,26.1,27.6,1,21.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,21.6,9.035617,1.386294,6.011596,1 +13,3,0,1,3,326374,0,8395.895,27.49487,1,12,1,18.83061,3.753224,0,0,0,22.58384,0,0,0,1,0,4,26.1,27.6,1,21.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,21.6,9.035617,1.386294,3.117234,1 +13,3,0,1,1,326375,0,8395.895,1.798768,1,12,1,17.87538,5.449438,0,0,0,23.32482,0,0,0,3,0,3,83.39137,9.967326,0,44.4,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,44.4,9.035617,1.098612,3.149518,1 +13,3,0,1,2,326375,0,8395.895,2.798768,1,12,1,13.50211,6.479137,0,0,0,19.98125,0,0,0,1,0,4,83.39137,9.967326,0,44.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,44.4,9.035617,1.386294,2.994794,1 +13,3,0,1,3,326375,0,8395.895,3.798768,1,12,1,23.8607,2.050731,0,0,0,25.91144,0,0,0,4,0,4,83.39137,9.967326,0,44.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,44.4,9.035617,1.386294,3.254684,1 +13,3,0,1,1,326376,0,8395.895,27.49076,0,12,1,52.27273,6.001021,0,0,0,58.27375,0,0,0,1,2,3,81.4,0,0,90.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,90.9,9.035617,1.098612,4.065152,1 +13,3,0,1,2,326376,0,8395.895,28.49076,0,12,1,94.37412,4.041256,0,0,0,98.41537,0,0,0,1,0,4,81.4,0,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,90.9,9.035617,1.386294,4.589197,1 +13,3,0,1,3,326376,0,8395.895,29.49076,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.4,0,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,90.9,9.035617,1.386294,,0 +13,3,0,1,1,326433,0,1994.135,53.70842,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,78.2,27.6,1,67.5,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,67.5,7.598467,0,,0 +13,3,0,1,2,326433,0,1994.135,54.70842,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,78.2,27.6,1,67.5,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,67.5,7.598467,0,,0 +13,3,0,1,3,326433,0,1994.135,55.70842,0,14,1,5.635024,0,0,0,0,5.635024,0,0,0,1,0,1,78.2,27.6,1,67.5,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,67.5,7.598467,0,1.729001,1 +13,3,0,1,4,326433,0,1994.135,56.70842,0,14,1,5.120126,0,0,0,0,5.120126,0,0,0,1,0,1,78.2,27.6,1,67.5,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,67.5,7.598467,0,1.633179,1 +13,3,0,1,5,326433,0,1994.135,57.70842,0,14,1,29.3381,0,0,0,0,29.3381,0,0,0,1,0,1,78.2,27.6,1,67.5,150,0,0,0,0,0,1,4.564348,5.061929,0,1,0,67.5,7.598467,0,3.378887,1 +13,3,0,0,1,326435,0,7196.79,32.0438,1,12,1,21.05263,6.958502,0,0,0,28.01113,0,0,0,2,0,4,68.6,0,1,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,71.6,8.881529,1.386294,3.332602,1 +13,3,0,0,2,326435,0,7196.79,33.0438,1,12,1,14.35897,1.258741,0,0,0,15.61772,0,0,0,1,0,4,68.6,0,1,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,71.6,8.881529,1.386294,2.748406,1 +13,3,0,0,3,326435,0,7196.79,34.0438,1,12,1,8.550663,7.73835,0,0,0,16.28901,0,0,0,1,0,4,68.6,0,1,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,71.6,8.881529,1.386294,2.790491,1 +13,3,0,0,1,326436,0,7196.79,9.111567,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,71.7,9.967326,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.881529,1.386294,,0 +13,3,0,0,2,326436,0,7196.79,10.11157,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,71.7,9.967326,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.881529,1.386294,,0 +13,3,0,0,3,326436,0,7196.79,11.11157,0,12,1,50.79094,0,0,0,0,50.79094,0,0,0,2,0,4,71.7,9.967326,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.881529,1.386294,3.927718,1 +13,3,0,0,1,326437,0,7196.79,12.2601,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,68.3,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.881529,1.386294,,0 +13,3,0,0,2,326437,0,7196.79,13.2601,1,12,1,15.38461,0,0,0,0,15.38461,0,0,0,1,0,4,68.3,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.881529,1.386294,2.733368,1 +13,3,0,0,3,326437,0,7196.79,14.2601,1,12,1,0,0,0,175.2886,0,0,0,0,9,0,0,4,68.3,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.881529,1.386294,,0 +13,3,0,0,1,326438,0,7196.79,10.423,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,61.7,9.967326,1,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.881529,1.386294,,0 +13,3,0,0,2,326438,0,7196.79,11.423,0,12,1,0,0,0,440.5594,0,0,0,0,21,0,0,4,61.7,9.967326,1,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.881529,1.386294,,0 +13,3,0,0,3,326438,0,7196.79,12.423,0,12,1,57.67422,0,.8550662,192.3899,1362.142,1420.671,1,0,10,5,0,4,61.7,9.967326,1,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.881529,1.386294,7.258885,1 +11,3,0,0,1,326450,0,6411.144,23.8987,1,12,1,104.6987,19.5097,0,0,0,124.2084,0,0,0,4,0,3,80.3,3.4,0,89.8,0,261.48,0,0,1.098612,5.566358,0,0,0,0,0,0,89.8,8.765949,1.098612,4.82196,1 +11,3,0,0,2,326450,0,6411.144,24.8987,1,12,1,11.48617,32.30192,0,133.6146,581.3455,625.1336,1,0,7,1,0,3,80.3,3.4,0,89.8,0,261.48,0,0,1.098612,5.566358,0,0,0,0,0,0,89.8,8.765949,1.098612,6.437965,1 +11,3,0,0,3,326450,0,6411.144,25.8987,1,12,1,23.64574,33.80051,0,0,0,57.44626,0,0,0,2,0,4,80.3,3.4,0,89.8,0,261.48,0,0,1.386294,5.566358,0,0,0,0,0,0,89.8,8.765949,1.386294,4.05085,1 +11,3,0,0,1,326451,0,6411.144,1.516769,1,12,1,105.2094,20.37794,27.06844,0,0,152.6558,0,0,0,10,0,3,83.39137,9.967326,1,55.6,0,261.48,1,1,1.098612,5.566358,0,0,0,0,0,0,55.6,8.765949,1.098612,5.028185,1 +11,3,0,0,2,326451,0,6411.144,2.516769,1,12,1,34.2241,14.53352,27.19175,0,0,75.94936,0,0,0,5,0,3,83.39137,9.967326,1,55.6,0,261.48,1,1,1.098612,5.566358,0,0,0,0,0,0,55.6,8.765949,1.098612,4.330067,1 +11,3,0,0,3,326451,0,6411.144,3.516769,1,12,1,29.23474,16.83147,0,0,0,46.06621,0,0,0,2,1,4,83.39137,9.967326,1,55.6,0,261.48,1,1,1.386294,5.566358,0,0,0,0,0,0,55.6,8.765949,1.386294,3.83008,1 +11,3,0,0,1,326452,0,6411.144,24.83504,0,12,1,34.72932,5.87334,0,0,0,40.60266,0,0,0,3,2,3,67.6,0,0,96.6,0,261.48,0,0,1.098612,5.566358,0,0,0,0,0,0,96.6,8.765949,1.098612,3.703834,1 +11,3,0,0,2,326452,0,6411.144,25.83504,0,12,1,23.44116,2.648851,0,314.1116,0,26.09001,0,0,6,2,0,3,67.6,0,0,96.6,0,261.48,0,0,1.098612,5.566358,0,0,0,0,0,0,96.6,8.765949,1.098612,3.261553,1 +11,3,0,0,3,326452,0,6411.144,26.83504,0,12,1,8.598453,0,24.07567,0,0,32.67412,0,0,0,0,1,4,67.6,0,0,96.6,0,261.48,0,0,1.386294,5.566358,0,0,0,0,0,0,96.6,8.765949,1.386294,3.486583,1 +11,3,0,1,1,326459,0,5290.323,26.2998,1,12,1,79.82635,29.26966,25.53626,168.5393,0,134.6323,0,0,10,4,1,3,74.5,3.4,0,79.5,0,0,0,0,1.098612,0,0,0,0,0,0,0,79.5,8.573824,1.098612,4.902547,1 +11,3,0,1,2,326459,0,5290.323,27.2998,1,12,1,197.3746,13.63338,0,703.2349,0,211.008,0,0,48,13,7,3,74.5,3.4,0,79.5,0,0,0,0,1.098612,0,0,0,0,0,0,0,79.5,8.573824,1.098612,5.351896,1 +11,3,0,1,3,326459,0,5290.323,28.2998,1,12,1,31.16939,9.931212,22.7859,610.4901,0,63.8865,0,0,45,2,1,3,74.5,3.4,0,79.5,0,0,0,0,1.098612,0,0,0,0,0,0,0,79.5,8.573824,1.098612,4.157108,1 +11,3,0,1,1,326460,0,5290.323,27.70431,0,16,1,113.7385,11.8284,26.55771,561.7977,0,152.1246,0,0,44,5,0,3,43.6,20.7,1,63.6,0,0,0,0,1.098612,0,0,0,0,1,0,0,63.6,8.573824,1.098612,5.0247,1 +11,3,0,1,2,326460,0,5290.323,28.70431,0,16,1,96.57759,6.81669,0,562.5879,0,103.3943,0,0,35,6,8,3,43.6,20.7,1,63.6,0,0,0,0,1.098612,0,0,0,0,1,0,0,63.6,8.573824,1.098612,4.63855,1 +11,3,0,1,3,326460,0,5290.323,29.70431,0,16,1,87.70422,0,23.64574,683.362,0,111.35,0,0,42,1,8,3,43.6,20.7,1,63.6,0,0,0,0,1.098612,0,0,0,0,1,0,0,63.6,8.573824,1.098612,4.712678,1 +11,3,0,1,1,326461,0,5290.323,6.704997,0,12,1,15.32176,0,0,0,0,15.32176,0,0,0,1,1,3,80,9.967326,0,74.1,0,0,1,0,1.098612,0,0,0,0,1,0,0,74.1,8.573824,1.098612,2.729274,1 +11,3,0,1,2,326461,0,5290.323,7.704997,0,12,1,22.03469,0,0,14.0647,0,22.03469,0,0,1,2,1,3,80,9.967326,0,74.1,0,0,1,0,1.098612,0,0,0,0,1,0,0,74.1,8.573824,1.098612,3.092618,1 +11,3,0,1,3,326461,0,5290.323,8.704996,0,12,1,153.3104,1.891659,0,4.299226,0,155.2021,0,0,1,5,1,3,80,9.967326,0,74.1,0,0,1,0,1.098612,0,0,0,0,1,0,0,74.1,8.573824,1.098612,5.044728,1 +11,3,0,1,1,326497,0,9709.091,25.39357,1,16,1,57.18702,6.646059,25.75992,0,0,89.59299,0,0,0,3,1,2,86.7,17.2,1,42,0,232.8,0,0,.6931472,5.45018,0,0,0,1,0,0,42,9.180921,.6931472,4.495277,1 +11,3,0,1,2,326497,0,9709.091,26.39357,1,16,1,80.49242,2.035985,2.698864,345.644,0,85.22727,0,0,18,2,8,2,86.7,17.2,1,42,0,232.8,0,0,.6931472,5.45018,0,0,0,1,0,0,42,9.180921,.6931472,4.445322,1 +11,3,0,1,3,326497,0,9709.091,27.39357,1,16,1,589.4018,7.485912,30.51582,641.5258,0,627.4036,0,0,37,6,42,2,86.7,17.2,1,42,0,232.8,0,0,.6931472,5.45018,0,0,0,1,0,0,42,9.180921,.6931472,6.44159,1 +11,3,0,1,1,326498,0,9709.091,25.78782,0,16,1,35.54869,0,26.79031,0,0,62.339,0,0,0,3,0,2,87.8,6.9,0,77.3,0,232.8,0,0,.6931472,5.45018,0,0,0,0,0,0,77.3,9.180921,.6931472,4.132587,1 +11,3,0,1,2,326498,0,9709.091,26.78782,0,16,1,10.41667,0,0,23.67424,0,10.41667,0,0,1,1,0,2,87.8,6.9,0,77.3,0,232.8,0,0,.6931472,5.45018,0,0,0,0,0,0,77.3,9.180921,.6931472,2.343407,1 +11,3,0,1,3,326498,0,9709.091,27.78782,0,16,1,436.7447,7.204161,0,0,0,443.9489,0,0,0,3,7,2,87.8,6.9,0,77.3,0,232.8,0,0,.6931472,5.45018,0,0,0,0,0,0,77.3,9.180921,.6931472,6.095709,1 +13,3,0,0,1,326499,0,7573.021,20.95277,0,12,1,25.80972,2.024292,0,0,0,27.83401,0,0,0,2,0,2,89.4,13.8,0,79.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,79.5,8.932479,.6931472,3.326259,1 +13,3,0,0,2,326499,0,7573.021,21.95277,0,12,1,4.662004,1.818182,0,0,0,6.480186,0,0,0,1,0,2,89.4,13.8,0,79.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,79.5,8.932479,.6931472,1.868749,1 +13,3,0,0,3,326499,0,7573.021,22.95277,0,12,1,18.38392,0,0,0,0,18.38392,0,0,0,0,0,2,89.4,13.8,0,79.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,79.5,8.932479,.6931472,2.911477,1 +13,3,0,0,1,326500,0,7573.021,19.67146,1,12,1,16.70041,0,24.79757,0,0,41.49797,0,0,0,1,1,2,86.2,3.4,0,60.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,60.2,8.932479,.6931472,3.725645,1 +13,3,0,0,2,326500,0,7573.021,20.67146,1,12,1,26.57343,.9277389,0,0,0,27.50117,0,0,0,1,0,2,86.2,3.4,0,60.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,60.2,8.932479,.6931472,3.314228,1 +13,3,0,0,3,326500,0,7573.021,21.67146,1,12,1,19.66652,.722531,0,0,0,20.38906,0,0,0,3,0,2,86.2,3.4,0,60.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,60.2,8.932479,.6931472,3.014998,1 +15,3,95,1,1,326563,0,7196.79,48.39425,0,8,1,84.00809,1.821862,0,0,275.6731,361.503,1,0,0,2,0,1,55.3,13.8,0,52.3,230,230,0,0,0,5.438079,0,4.564348,5.489373,0,1,0,52.3,8.881529,0,5.89027,1 +15,3,95,1,2,326563,0,7196.79,49.39425,0,8,1,0,3.356643,0,0,875.049,878.4056,1,0,0,0,0,1,55.3,13.8,0,52.3,230,230,0,0,0,5.438079,0,4.564348,5.489373,0,1,0,52.3,8.881529,0,6.778109,1 +15,3,95,1,3,326563,0,7196.79,50.39425,0,8,1,93.84352,50.55152,74.8183,0,1047.811,1267.024,2,0,0,9,0,1,55.3,13.8,0,52.3,230,230,0,0,0,5.438079,0,4.564348,5.489373,0,1,0,52.3,8.881529,0,7.144426,1 +18,3,25,0,1,326564,0,5448.68,52.79671,1,12,1,40.70067,0,37.60948,0,0,78.31015,0,0,0,1,1,4,69.7,17.2,0,80.7,707.4,707.4,0,0,1.386294,6.561596,0,3.258096,7.947891,0,0,0,80.7,8.603312,1.386294,4.360677,1 +18,3,25,0,2,326564,0,5448.68,53.79671,1,12,1,7.575758,0,0,0,0,7.575758,0,0,0,1,0,4,69.7,17.2,0,80.7,707.4,707.4,0,0,1.386294,6.561596,0,3.258096,7.947891,0,0,0,80.7,8.603312,1.386294,2.024953,1 +18,3,25,0,3,326564,0,5448.68,54.79671,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,69.7,17.2,0,80.7,707.4,707.4,0,0,1.386294,6.561596,0,3.258096,7.947891,0,0,0,80.7,8.603312,1.386294,,0 +18,3,25,0,1,326565,0,5448.68,15.19233,0,12,1,68.97475,0,0,0,0,68.97475,0,0,0,2,0,4,56.4,10.3,0,100,707.4,707.4,1,0,1.386294,6.561596,0,3.258096,7.947891,1,0,0,100,8.603312,1.386294,4.23374,1 +18,3,25,0,2,326565,0,5448.68,16.19233,0,12,1,125.4735,0,20.83333,0,0,146.3068,0,0,0,4,1,4,56.4,10.3,0,100,707.4,707.4,1,0,1.386294,6.561596,0,3.258096,7.947891,1,0,0,100,8.603312,1.386294,4.985706,1 +18,3,25,0,3,326565,0,5448.68,17.19233,0,12,1,104.2046,0,0,0,0,104.2046,0,0,0,5,0,4,56.4,10.3,0,100,707.4,707.4,1,0,1.386294,6.561596,0,3.258096,7.947891,1,0,0,100,8.603312,1.386294,4.646356,1 +18,3,25,0,1,326566,0,5448.68,12.95003,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.3,9.967326,0,85.2,707.4,707.4,1,1,1.386294,6.561596,0,3.258096,7.947891,0,0,0,85.2,8.603312,1.386294,,0 +18,3,25,0,2,326566,0,5448.68,13.95003,1,12,1,5.681818,0,0,0,0,5.681818,0,0,0,1,0,4,78.3,9.967326,0,85.2,707.4,707.4,1,1,1.386294,6.561596,0,3.258096,7.947891,0,0,0,85.2,8.603312,1.386294,1.737271,1 +18,3,25,0,3,326566,0,5448.68,14.95003,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.3,9.967326,0,85.2,707.4,707.4,1,1,1.386294,6.561596,0,3.258096,7.947891,0,0,0,85.2,8.603312,1.386294,,0 +18,3,25,0,1,326567,0,5448.68,17.87543,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,62.2,6.9,0,53.4,707.4,707.4,1,0,1.386294,6.561596,0,3.258096,7.947891,1,0,0,53.4,8.603312,1.386294,,0 +18,3,25,0,2,326567,0,5448.68,18.87543,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,62.2,6.9,0,53.4,707.4,707.4,0,0,1.386294,6.561596,0,3.258096,7.947891,1,0,0,53.4,8.603312,1.386294,,0 +18,3,25,0,3,326567,0,5448.68,19.87543,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,62.2,6.9,0,53.4,707.4,707.4,0,0,1.386294,6.561596,0,3.258096,7.947891,1,0,0,53.4,8.603312,1.386294,,0 +18,3,25,1,1,326575,0,2072.141,9.598905,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,85,9.967326,0,55.6,159,159,1,1,1.098612,5.068904,0,3.258096,6.455199,0,0,0,55.6,7.63682,1.098612,,0 +18,3,25,1,2,326575,0,2072.141,10.5989,1,10,1,12.12121,1.864802,0,0,0,13.98601,0,0,0,1,0,3,85,9.967326,0,55.6,159,159,1,1,1.098612,5.068904,0,3.258096,6.455199,0,0,0,55.6,7.63682,1.098612,2.638058,1 +18,3,25,1,3,326575,0,2072.141,11.5989,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,85,9.967326,0,55.6,159,159,1,1,1.098612,5.068904,0,3.258096,6.455199,0,0,0,55.6,7.63682,1.098612,,0 +18,3,25,1,1,326576,0,2072.141,11.87953,0,10,1,40.10627,0,0,0,0,40.10627,0,0,0,2,0,3,85,9.967326,0,77.8,159,159,1,0,1.098612,5.068904,0,3.258096,6.455199,0,0,0,77.8,7.63682,1.098612,3.691533,1 +18,3,25,1,2,326576,0,2072.141,12.87953,0,10,1,6.993007,0,0,0,0,6.993007,0,0,0,1,0,3,85,9.967326,0,77.8,159,159,1,0,1.098612,5.068904,0,3.258096,6.455199,0,0,0,77.8,7.63682,1.098612,1.944911,1 +18,3,25,1,3,326576,0,2072.141,13.87953,0,10,1,233.0911,0,3.471569,0,0,236.5626,0,0,0,6,0,3,85,9.967326,0,77.8,159,159,1,0,1.098612,5.068904,0,3.258096,6.455199,0,0,0,77.8,7.63682,1.098612,5.466213,1 +18,3,25,1,1,326577,0,2072.141,31.01437,1,10,1,111.7662,0,0,0,0,111.7662,0,0,0,4,0,3,71.3,17.2,1,39.8,159,159,0,0,1.098612,5.068904,0,3.258096,6.455199,1,0,0,39.8,7.63682,1.098612,4.716409,1 +18,3,25,1,2,326577,0,2072.141,32.01437,1,10,1,51.28205,9.86014,0,0,0,61.14219,0,0,0,5,0,3,71.3,17.2,1,39.8,159,159,0,0,1.098612,5.068904,0,3.258096,6.455199,1,0,0,39.8,7.63682,1.098612,4.113202,1 +18,3,25,1,3,326577,0,2072.141,33.01437,1,10,1,283.4117,6.819153,0,0,2864.134,3154.365,3,0,0,2,8,3,71.3,17.2,1,39.8,159,159,0,0,1.098612,5.068904,0,3.258096,6.455199,1,0,0,39.8,7.63682,1.098612,8.056542,1 +11,3,0,1,1,326592,0,2038.123,58.00684,0,12,1,48.5189,84.72932,31.66496,0,0,164.9132,0,0,0,3,2,2,67,13.8,1,60.2,0,429,0,0,.6931472,6.061457,0,0,0,0,1,0,60.2,7.620275,.6931472,5.105419,1 +11,3,0,1,2,326592,0,2038.123,59.00684,0,12,1,122.3629,101.5002,0,0,0,223.8631,0,0,0,4,0,2,67,13.8,1,60.2,0,429,0,0,.6931472,6.061457,0,0,0,0,1,0,60.2,7.620275,.6931472,5.411035,1 +11,3,0,1,3,326592,0,2038.123,60.00684,0,12,1,127.687,236.7584,0,0,1412.554,1776.999,1,0,0,4,1,2,67,13.8,1,60.2,0,429,0,0,.6931472,6.061457,0,0,0,0,1,0,60.2,7.620275,.6931472,7.482681,1 +11,3,0,1,1,326593,0,2038.123,55.96441,1,7,1,7.660879,0,0,0,0,7.660879,0,0,0,0,1,2,78.7,13.8,0,89.8,0,429,0,0,.6931472,6.061457,0,0,0,0,0,0,89.8,7.620275,.6931472,2.036127,1 +11,3,0,1,2,326593,0,2038.123,56.96441,1,7,1,30.47351,0,29.53587,0,0,60.00938,0,0,0,1,0,2,78.7,13.8,0,89.8,0,429,0,0,.6931472,6.061457,0,0,0,0,0,0,89.8,7.620275,.6931472,4.094501,1 +11,3,0,1,3,326593,0,2038.123,57.96441,1,7,1,0,0,0,0,0,0,0,0,0,0,0,2,78.7,13.8,0,89.8,0,429,0,0,.6931472,6.061457,0,0,0,0,0,0,89.8,7.620275,.6931472,,0 +11,3,0,0,1,326594,0,8339.003,41.95209,0,12,1,51.72591,0,0,0,0,51.72591,0,0,0,1,0,7,77.1,6.9,0,83,0,1246.56,0,0,1.94591,7.128143,0,0,0,0,0,0,83,9.028819,1.94591,3.945959,1 +11,3,0,0,2,326594,0,8339.003,42.95209,0,12,1,30.77652,0,19.88636,0,0,50.66288,0,0,0,1,1,7,77.1,6.9,0,83,0,1246.56,0,0,1.94591,7.128143,0,0,0,0,0,0,83,9.028819,1.94591,3.925194,1 +11,3,0,0,3,326594,0,8339.003,43.95209,0,12,1,20.37278,0,0,0,0,20.37278,0,0,0,1,0,7,77.1,6.9,0,83,0,1246.56,0,0,1.94591,7.128143,0,0,0,0,0,0,83,9.028819,1.94591,3.014199,1 +11,3,0,0,1,326595,0,8339.003,16.68994,0,12,1,12.87996,0,0,0,0,12.87996,0,0,0,2,0,7,84.6,0,0,86.4,0,1246.56,1,0,1.94591,7.128143,0,0,0,0,0,0,86.4,9.028819,1.94591,2.555673,1 +11,3,0,0,2,326595,0,8339.003,17.68994,0,12,1,41.66667,4.450758,0,0,765.6155,811.733,1,0,0,5,0,7,84.6,0,0,86.4,0,1246.56,1,0,1.94591,7.128143,0,0,0,0,0,0,86.4,9.028819,1.94591,6.699172,1 +11,3,0,0,3,326595,0,8339.003,18.68994,0,12,1,14.08756,4.616385,0,0,0,18.70395,0,0,0,1,0,7,84.6,0,0,86.4,0,1246.56,0,0,1.94591,7.128143,0,0,0,0,0,0,86.4,9.028819,1.94591,2.928735,1 +11,3,0,0,1,326596,0,8339.003,14.84463,0,12,1,5.151984,0,0,0,0,5.151984,0,0,0,1,0,7,66.5,0,0,72.7,0,1246.56,1,0,1.94591,7.128143,0,0,0,0,0,0,72.7,9.028819,1.94591,1.639382,1 +11,3,0,0,2,326596,0,8339.003,15.84463,0,12,1,86.64773,27.67519,0,0,0,114.3229,0,0,0,9,0,7,66.5,0,0,72.7,0,1246.56,1,0,1.94591,7.128143,0,0,0,0,0,0,72.7,9.028819,1.94591,4.739027,1 +11,3,0,0,3,326596,0,8339.003,16.84463,0,12,1,21.67317,15.60468,0,0,0,37.27785,0,0,0,2,0,7,66.5,0,0,72.7,0,1246.56,1,0,1.94591,7.128143,0,0,0,0,0,0,72.7,9.028819,1.94591,3.618399,1 +11,3,0,0,1,326597,0,8339.003,12.79398,0,12,1,5.151984,0,0,0,0,5.151984,0,0,0,1,0,7,93.3,9.967326,0,96.3,0,1246.56,1,0,1.94591,7.128143,0,0,0,0,0,0,96.3,9.028819,1.94591,1.639382,1 +11,3,0,0,2,326597,0,8339.003,13.79398,0,12,1,10.41667,0,0,0,0,10.41667,0,0,0,2,0,7,93.3,9.967326,0,96.3,0,1246.56,1,0,1.94591,7.128143,0,0,0,0,0,0,96.3,9.028819,1.94591,2.343407,1 +11,3,0,0,3,326597,0,8339.003,14.79398,0,12,1,6.068487,0,0,0,0,6.068487,0,0,0,1,0,7,93.3,9.967326,0,96.3,0,1246.56,1,0,1.94591,7.128143,0,0,0,0,0,0,96.3,9.028819,1.94591,1.803109,1 +11,3,0,0,1,326598,0,8339.003,38.59274,1,12,1,22.15353,0,25.75992,0,0,47.91345,0,0,0,1,1,7,81.9,17.2,0,90.9,0,1246.56,0,0,1.94591,7.128143,0,0,0,0,0,0,90.9,9.028819,1.94591,3.869396,1 +11,3,0,0,2,326598,0,8339.003,39.59274,1,12,1,31.72348,0,0,0,0,31.72348,0,0,0,2,0,7,81.9,17.2,0,90.9,0,1246.56,0,0,1.94591,7.128143,0,0,0,0,0,0,90.9,9.028819,1.94591,3.457057,1 +11,3,0,0,3,326598,0,8339.003,40.59274,1,12,1,53.74946,7.498916,0,0,0,61.24837,0,0,0,4,0,7,81.9,17.2,0,90.9,0,1246.56,0,0,1.94591,7.128143,0,0,0,0,0,0,90.9,9.028819,1.94591,4.114937,1 +11,3,0,0,1,326599,0,8339.003,8.238193,1,12,1,114.1164,6.93457,0,0,0,121.051,0,0,0,2,2,7,95,9.967326,1,96.3,0,1246.56,1,1,1.94591,7.128143,0,0,0,0,0,0,96.3,9.028819,1.94591,4.796212,1 +11,3,0,0,2,326599,0,8339.003,9.238193,1,12,1,144.8864,7.552083,1009.47,0,0,1161.908,0,0,0,6,3,7,95,9.967326,1,96.3,0,1246.56,1,1,1.94591,7.128143,0,0,0,0,0,0,96.3,9.028819,1.94591,7.057819,1 +11,3,0,0,3,326599,0,8339.003,10.23819,1,12,1,206.5453,13.58908,8.235804,0,0,228.3702,0,0,0,4,4,7,95,9.967326,1,96.3,0,1246.56,1,1,1.94591,7.128143,0,0,0,0,0,0,96.3,9.028819,1.94591,5.430968,1 +11,3,0,0,1,326600,0,8339.003,9.700206,0,12,1,10.30397,4.301906,0,0,0,14.60587,0,0,0,1,0,7,91.7,9.967326,0,96.3,0,1246.56,1,0,1.94591,7.128143,0,0,0,0,0,0,96.3,9.028819,1.94591,2.681424,1 +11,3,0,0,2,326600,0,8339.003,10.70021,0,12,1,10.41667,0,0,0,0,10.41667,0,0,0,2,0,7,91.7,9.967326,0,96.3,0,1246.56,1,0,1.94591,7.128143,0,0,0,0,0,0,96.3,9.028819,1.94591,2.343407,1 +11,3,0,0,3,326600,0,8339.003,11.70021,0,12,1,66.26354,2.557434,0,0,0,68.82098,0,0,0,4,1,7,91.7,9.967326,0,96.3,0,1246.56,1,0,1.94591,7.128143,0,0,0,0,0,0,96.3,9.028819,1.94591,4.231509,1 +11,3,0,1,1,326601,0,11000,4.774812,0,11,1,14.30031,10.11236,0,0,0,24.41267,0,0,0,3,0,6,83.39137,9.967326,0,92.6,0,0,1,0,1.791759,0,0,0,0,0,0,0,92.6,9.305741,1.791759,3.195102,1 +11,3,0,1,2,326601,0,11000,5.774812,0,11,1,0,2.930145,0,0,0,2.930145,0,0,0,0,0,6,83.39137,9.967326,0,92.6,0,0,1,0,1.791759,0,0,0,0,0,0,0,92.6,9.305741,1.791759,1.075052,1 +11,3,0,1,3,326601,0,11000,6.774812,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,83.39137,9.967326,0,92.6,0,0,1,0,1.791759,0,0,0,0,0,0,0,92.6,9.305741,1.791759,,0 +11,3,0,1,1,326602,0,11000,33.26762,1,11,1,15.93463,0,0,0,0,15.93463,0,0,0,1,0,6,75,6.9,0,79.5,0,0,0,0,1.791759,0,0,0,0,0,0,0,79.5,9.305741,1.791759,2.768495,1 +11,3,0,1,2,326602,0,11000,34.26762,1,11,1,78.27004,0,0,0,0,78.27004,0,0,0,3,0,6,75,6.9,0,79.5,0,0,0,0,1.791759,0,0,0,0,0,0,0,79.5,9.305741,1.791759,4.360165,1 +11,3,0,1,3,326602,0,11000,35.26762,1,11,1,55.88994,0,0,0,0,55.88994,0,0,0,5,0,6,75,6.9,0,79.5,0,0,0,0,1.791759,0,0,0,0,0,0,0,79.5,9.305741,1.791759,4.023385,1 +11,3,0,1,1,326603,0,11000,37.59069,0,8,1,28.08989,0,0,0,0,28.08989,0,0,0,0,0,6,78.7,17.2,1,68.2,0,0,0,0,1.791759,0,0,0,0,0,1,0,68.2,9.305741,1.791759,3.33541,1 +11,3,0,1,2,326603,0,11000,38.59069,0,8,1,19.69058,0,0,0,0,19.69058,0,0,0,1,0,6,78.7,17.2,1,68.2,0,0,0,0,1.791759,0,0,0,0,0,1,0,68.2,9.305741,1.791759,2.98014,1 +11,3,0,1,3,326603,0,11000,39.59069,0,8,1,22.7859,0,0,0,742.0551,764.8409,1,0,0,2,0,6,78.7,17.2,1,68.2,0,0,0,0,1.791759,0,0,0,0,0,1,0,68.2,9.305741,1.791759,6.639668,1 +11,3,0,1,1,326605,0,11000,4.774812,1,11,1,7.660879,1.659857,0,0,0,9.320735,0,0,0,1,0,6,83.39137,9.967326,0,77.8,0,0,1,1,1.791759,0,0,0,0,1,0,0,77.8,9.305741,1.791759,2.232241,1 +11,3,0,1,2,326605,0,11000,5.774812,1,11,1,24.37881,0,0,0,0,24.37881,0,0,0,3,0,6,83.39137,9.967326,0,77.8,0,0,1,1,1.791759,0,0,0,0,1,0,0,77.8,9.305741,1.791759,3.193714,1 +11,3,0,1,3,326605,0,11000,6.774812,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,83.39137,9.967326,0,77.8,0,0,1,1,1.791759,0,0,0,0,1,0,0,77.8,9.305741,1.791759,,0 +11,3,0,1,1,326606,0,11000,12.25736,1,11,1,25.53626,2.93667,0,0,0,28.47293,0,0,0,2,0,6,78.3,9.967326,0,92.6,0,0,1,1,1.791759,0,0,0,0,0,0,0,92.6,9.305741,1.791759,3.348954,1 +11,3,0,1,2,326606,0,11000,13.25736,1,11,1,257.0933,1.523676,0,0,0,258.617,0,0,0,0,0,6,78.3,9.967326,0,92.6,0,0,1,1,1.791759,0,0,0,0,0,0,0,92.6,9.305741,1.791759,5.555348,1 +11,3,0,1,3,326606,0,11000,14.25736,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,78.3,9.967326,0,92.6,0,0,1,1,1.791759,0,0,0,0,0,0,0,92.6,9.305741,1.791759,,0 +11,3,0,1,1,326607,0,11000,12.25736,0,11,1,52.34933,0,0,0,0,52.34933,0,0,0,2,0,6,88.3,9.967326,0,81.5,0,0,1,0,1.791759,0,0,0,0,0,1,0,81.5,9.305741,1.791759,3.957939,1 +11,3,0,1,2,326607,0,11000,13.25736,0,11,1,138.3029,0,0,0,0,138.3029,0,0,0,4,0,6,88.3,9.967326,0,81.5,0,0,1,0,1.791759,0,0,0,0,0,1,0,81.5,9.305741,1.791759,4.929446,1 +11,3,0,1,3,326607,0,11000,14.25736,0,11,1,12.46776,0,0,0,0,12.46776,0,0,0,2,0,6,88.3,9.967326,0,81.5,0,0,1,0,1.791759,0,0,0,0,0,1,0,81.5,9.305741,1.791759,2.523146,1 +13,3,0,1,1,326639,0,7196.79,33.22929,1,11.38739,1,150.4302,73.40587,0,0,452.9706,676.8067,1,0,0,17,0,3,71.8,13.8,0,88.6,450,873.84,0,0,1.098612,6.772897,1,4.564348,6.160541,1,0,0,88.6,8.881529,1.098612,6.517385,1 +13,3,0,1,2,326639,0,7196.79,34.22929,1,11.38739,1,332.7273,66.46154,0,0,1751.296,2150.485,1,0,0,16,0,3,71.8,13.8,0,88.6,450,873.84,0,0,1.098612,6.772897,1,4.564348,6.160541,1,0,0,88.6,8.881529,1.098612,7.673449,1 +13,3,0,1,3,326639,0,7196.79,35.22929,1,11.38739,1,131.2527,42.66781,0,0,0,173.9205,0,0,0,10,1,3,71.8,13.8,0,88.6,450,873.84,0,0,1.098612,6.772897,1,4.564348,6.160541,1,0,0,88.6,8.881529,1.098612,5.158598,1 +13,3,0,1,1,326640,0,7196.79,.9089665,1,11.38739,1,7.591093,21.35628,0,0,0,28.94737,0,0,0,0,0,3,83.39137,9.967326,0,100,450,873.84,1,1,1.098612,6.772897,1,4.564348,6.160541,0,0,0,100,8.881529,1.098612,3.365479,1 +13,3,0,1,2,326640,0,7196.79,1.908966,1,11.38739,1,11.65501,16.18648,0,0,0,27.84149,0,0,0,2,0,3,83.39137,9.967326,0,100,450,873.84,1,1,1.098612,6.772897,1,4.564348,6.160541,0,0,0,100,8.881529,1.098612,3.326527,1 +13,3,0,1,3,326640,0,7196.79,2.908967,1,11.38739,1,40.18811,10.47456,0,0,0,50.66268,0,0,0,2,0,3,83.39137,9.967326,0,100,450,873.84,1,1,1.098612,6.772897,1,4.564348,6.160541,0,0,0,100,8.881529,1.098612,3.925189,1 +13,3,0,1,1,326641,0,7196.79,35.96714,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,90.4,0,0,89.8,450,873.84,0,0,1.098612,6.772897,1,4.564348,6.160541,1,0,0,89.8,8.881529,1.098612,,0 +13,3,0,1,2,326641,0,7196.79,36.96714,0,12,1,15.85082,3.426574,0,0,0,19.27739,0,0,0,1,0,3,90.4,0,0,89.8,450,873.84,0,0,1.098612,6.772897,1,4.564348,6.160541,1,0,0,89.8,8.881529,1.098612,2.958933,1 +13,3,0,1,3,326641,0,7196.79,37.96714,0,12,1,73.96323,0,0,0,0,73.96323,0,0,0,3,0,3,90.4,0,0,89.8,450,873.84,0,0,1.098612,6.772897,1,4.564348,6.160541,1,0,0,89.8,8.881529,1.098612,4.303568,1 +10,3,50,1,1,326668,1,7196.79,40.17249,1,1,1,126.6358,16.44513,24.72952,38.63988,0,167.8104,0,0,5,10,0,1,74.46748,9.967326,.1572505,,457.5,0,0,0,0,0,0,3.931826,6.818924,0,0,1,72.06626,8.881529,0,5.122835,1 +13,3,0,1,1,326700,0,8140.411,11.46338,1,8,1,94.07558,1.726251,11.74668,0,0,107.5485,0,0,0,6,0,4,41.7,9.967326,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.004719,1.386294,4.677942,1 +13,3,0,1,2,326700,0,8140.411,12.46338,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,41.7,9.967326,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.004719,1.386294,,0 +13,3,0,1,3,326700,0,8140.411,13.46338,1,8,1,19.34652,1.88736,0,0,0,21.23388,0,0,0,2,0,4,41.7,9.967326,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.004719,1.386294,3.055598,1 +13,3,0,1,4,326700,0,8140.411,14.46338,1,8,1,98.10004,1.512214,0,0,0,99.61225,0,0,0,4,0,4,41.7,9.967326,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.004719,1.386294,4.601285,1 +13,3,0,1,5,326700,0,8140.411,15.46338,1,8,1,41.29512,4.918613,0,0,0,46.21373,0,0,0,2,2,4,41.7,9.967326,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.004719,1.386294,3.833277,1 +13,3,0,1,1,326701,0,8140.411,9.678303,0,8,1,21.24617,4.060266,0,0,0,25.30643,0,0,0,2,0,4,88.3,9.967326,0,81.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.004719,1.386294,3.231059,1 +13,3,0,1,2,326701,0,8140.411,10.6783,0,8,1,9.376465,0,0,0,0,9.376465,0,0,0,1,0,4,88.3,9.967326,0,81.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.004719,1.386294,2.238203,1 +13,3,0,1,3,326701,0,8140.411,11.6783,0,8,1,32.67412,0,0,0,0,32.67412,0,0,0,2,0,4,88.3,9.967326,0,81.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.004719,1.386294,3.486583,1 +13,3,0,1,4,326701,0,8140.411,12.6783,0,8,1,11.63242,0,0,0,0,11.63242,0,0,0,1,0,4,88.3,9.967326,0,81.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.004719,1.386294,2.453796,1 +13,3,0,1,5,326701,0,8140.411,13.6783,0,8,1,11.67728,0,0,0,0,11.67728,0,0,0,1,0,4,88.3,9.967326,0,81.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.004719,1.386294,2.457645,1 +13,3,0,1,1,326702,0,8140.411,40.55031,1,8,1,12.76813,0,25.53626,0,0,38.30439,0,0,0,1,0,4,78.2,0,0,80.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.004719,1.386294,3.645565,1 +13,3,0,1,2,326702,0,8140.411,41.55031,1,8,1,389.2639,3.516174,0,0,0,392.7801,0,0,0,7,5,4,78.2,0,0,80.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.004719,1.386294,5.97325,1 +13,3,0,1,3,326702,0,8140.411,42.55031,1,8,1,102.3216,19.56148,0,0,0,121.8831,0,0,0,4,0,4,78.2,0,0,80.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.004719,1.386294,4.803062,1 +13,3,0,1,4,326702,0,8140.411,43.55031,1,8,1,124.0791,5.040713,13.9589,0,0,143.0787,0,0,0,3,13,4,78.2,0,0,80.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.004719,1.386294,4.963395,1 +13,3,0,1,5,326702,0,8140.411,44.55031,1,8,1,39.27813,14.50814,23.35456,0,0,77.14084,0,0,0,3,0,4,78.2,0,0,80.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.004719,1.386294,4.345633,1 +13,3,0,1,1,326703,0,8140.411,43.01985,0,7,1,77.11951,35.92441,25.02554,0,0,138.0695,0,0,0,7,0,4,75,6.9,0,65.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,65.9,9.004719,1.386294,4.927757,1 +13,3,0,1,2,326703,0,8140.411,44.01985,0,7,1,35.16174,42.48008,0,0,0,77.64182,0,0,0,4,0,4,75,6.9,0,65.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,65.9,9.004719,1.386294,4.352106,1 +13,3,0,1,3,326703,0,8140.411,45.01985,0,7,1,33.53396,70.12038,10.31814,0,0,113.9725,0,0,0,5,0,4,75,6.9,0,65.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,65.9,9.004719,1.386294,4.735957,1 +13,3,0,1,4,326703,0,8140.411,46.01985,0,7,1,111.71,66.01784,0,0,0,177.7278,0,0,0,6,0,4,75,6.9,0,65.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,65.9,9.004719,1.386294,5.180253,1 +13,3,0,1,5,326703,0,8140.411,47.01985,0,7,1,35.3857,61.3942,0,0,0,96.7799,0,0,0,3,0,4,75,6.9,0,65.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,65.9,9.004719,1.386294,4.572439,1 +11,3,0,1,1,326705,0,4692.082,22.18754,0,12,1,69.03658,3.09119,0,0,0,72.12777,0,0,0,7,0,1,88.8,13.8,0,92,0,65.04,0,0,0,4.175003,0,0,0,0,0,0,92,8.453845,0,4.278439,1 +11,3,0,1,2,326705,0,4692.082,23.18754,0,12,1,17.75568,1.889205,0,0,0,19.64489,0,0,0,2,0,1,88.8,13.8,0,92,0,65.04,0,0,0,4.175003,0,0,0,0,0,0,92,8.453845,0,2.977817,1 +11,3,0,1,3,326705,0,4692.082,24.18754,0,12,1,54.50802,6.475943,0,0,812.8522,873.8361,1,0,0,4,0,1,88.8,13.8,0,92,0,65.04,0,0,0,4.175003,0,0,0,0,0,0,92,8.453845,0,6.772893,1 +15,3,95,1,1,326734,0,6617.009,24.12868,1,15,1,7.591093,0,0,0,0,7.591093,0,0,0,1,0,3,82.4,17.2,0,76.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,76.1,8.79755,1.098612,2.026976,1 +15,3,95,1,2,326734,0,6617.009,25.12868,1,15,1,0,0,0,0,0,0,0,0,0,0,0,3,82.4,17.2,0,76.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,76.1,8.79755,1.098612,,0 +15,3,95,1,3,326734,0,6617.009,26.12868,1,15,1,0,0,0,0,1121.552,1121.552,1,0,0,0,0,3,82.4,17.2,0,76.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,76.1,8.79755,1.098612,7.022469,1 +15,3,95,1,1,326735,0,6617.009,24.12047,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,96.3,6.9,0,86.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,86.4,8.79755,1.098612,,0 +15,3,95,1,2,326735,0,6617.009,25.12047,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,96.3,6.9,0,86.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,86.4,8.79755,1.098612,,0 +15,3,95,1,3,326735,0,6617.009,26.12047,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,96.3,6.9,0,86.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,86.4,8.79755,1.098612,,0 +14,3,95,1,1,326741,0,9609.384,9.284052,1,10,1,6.128703,0,0,0,0,6.128703,0,0,0,1,0,5,80,9.967326,0,74.1,582.6,582.6,1,1,1.609438,6.367501,0,4.564348,6.418794,0,0,0,74.1,9.170599,1.609438,1.812983,1 +14,3,95,1,2,326741,0,9609.384,10.28405,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,80,9.967326,0,74.1,582.6,582.6,1,1,1.609438,6.367501,0,4.564348,6.418794,0,0,0,74.1,9.170599,1.609438,,0 +14,3,95,1,3,326741,0,9609.384,11.28405,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,80,9.967326,0,74.1,582.6,582.6,1,1,1.609438,6.367501,0,4.564348,6.418794,0,0,0,74.1,9.170599,1.609438,,0 +14,3,95,1,1,326742,0,9609.384,3.156742,1,10,1,19.40756,10.31665,0,0,0,29.72421,0,0,0,2,0,5,83.39137,9.967326,0,51.9,582.6,582.6,1,1,1.609438,6.367501,0,4.564348,6.418794,1,0,0,51.9,9.170599,1.609438,3.391962,1 +14,3,95,1,2,326742,0,9609.384,4.156742,1,10,1,0,2.109705,0,0,0,2.109705,0,0,0,0,0,5,83.39137,9.967326,0,51.9,582.6,582.6,1,1,1.609438,6.367501,0,4.564348,6.418794,1,0,0,51.9,9.170599,1.609438,.746548,1 +14,3,95,1,3,326742,0,9609.384,5.156742,1,10,1,15.90714,0,0,0,0,15.90714,0,0,0,1,0,5,83.39137,9.967326,0,51.9,582.6,582.6,1,1,1.609438,6.367501,0,4.564348,6.418794,1,0,0,51.9,9.170599,1.609438,2.766768,1 +14,3,95,1,1,326743,0,9609.384,31.60027,1,10,1,5.107252,37.35955,0,0,0,42.4668,0,0,0,1,0,5,53.7,27.6,0,46.6,582.6,582.6,0,0,1.609438,6.367501,0,4.564348,6.418794,1,0,0,46.6,9.170599,1.609438,3.748723,1 +14,3,95,1,2,326743,0,9609.384,32.60027,1,10,1,41.02203,18.95921,0,0,0,59.98125,0,0,0,4,0,5,53.7,27.6,0,46.6,582.6,582.6,0,0,1.609438,6.367501,0,4.564348,6.418794,1,0,0,46.6,9.170599,1.609438,4.094032,1 +14,3,95,1,3,326743,0,9609.384,33.60027,1,10,1,16.33706,1.973345,0,0,372.6139,390.9243,1,0,0,2,0,5,53.7,27.6,0,46.6,582.6,582.6,0,0,1.609438,6.367501,0,4.564348,6.418794,1,0,0,46.6,9.170599,1.609438,5.968514,1 +14,3,95,1,1,326744,0,9609.384,30.2204,0,12,1,30.43922,19.86721,0,0,0,50.30643,0,0,0,2,0,5,83,10.3,0,70.5,582.6,582.6,0,0,1.609438,6.367501,0,4.564348,6.418794,1,0,0,70.5,9.170599,1.609438,3.918133,1 +14,3,95,1,2,326744,0,9609.384,31.2204,0,12,1,7.032349,17.97937,0,0,0,25.01172,0,0,0,1,0,5,83,10.3,0,70.5,582.6,582.6,0,0,1.609438,6.367501,0,4.564348,6.418794,1,0,0,70.5,9.170599,1.609438,3.219345,1 +14,3,95,1,3,326744,0,9609.384,32.2204,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83,10.3,0,70.5,582.6,582.6,0,0,1.609438,6.367501,0,4.564348,6.418794,1,0,0,70.5,9.170599,1.609438,,0 +14,3,95,1,1,326745,0,9609.384,6.417522,0,10,1,6.128703,0,0,0,0,6.128703,0,0,0,1,0,5,83.3,9.967326,0,66.7,582.6,582.6,1,0,1.609438,6.367501,0,4.564348,6.418794,1,0,0,66.7,9.170599,1.609438,1.812983,1 +14,3,95,1,2,326745,0,9609.384,7.417522,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,83.3,9.967326,0,66.7,582.6,582.6,1,0,1.609438,6.367501,0,4.564348,6.418794,1,0,0,66.7,9.170599,1.609438,,0 +14,3,95,1,3,326745,0,9609.384,8.417522,0,10,1,28.80482,0,0,0,0,28.80482,0,0,0,2,0,5,83.3,9.967326,0,66.7,582.6,582.6,1,0,1.609438,6.367501,0,4.564348,6.418794,1,0,0,66.7,9.170599,1.609438,3.360543,1 +10,3,50,1,1,326766,0,14914.37,9.629022,0,11.38739,1,12.76813,0,0,0,0,12.76813,0,0,0,2,0,5,71.7,9.967326,0,85.2,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,85.2,9.610147,1.609438,2.546952,1 +10,3,50,1,2,326766,0,14914.37,10.62902,0,11.38739,1,0,2.180028,0,0,0,2.180028,0,0,0,0,0,5,71.7,9.967326,0,85.2,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,85.2,9.610147,1.609438,.7793378,1 +10,3,50,1,3,326766,0,14914.37,11.62902,0,11.38739,1,52.10662,.9673259,24.72055,0,1982.33,2060.125,2,0,0,4,1,5,71.7,9.967326,0,85.2,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,85.2,9.610147,1.609438,7.630522,1 +10,3,50,1,1,326767,0,14914.37,43.87954,0,18,1,55.00511,0,33.70787,0,0,88.71297,0,0,0,4,1,5,92,6.9,0,61.4,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,61.4,9.610147,1.609438,4.485406,1 +10,3,50,1,2,326767,0,14914.37,44.87954,0,18,1,50.16409,.8907642,0,0,0,51.05485,0,0,0,1,2,5,92,6.9,0,61.4,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,61.4,9.610147,1.609438,3.932901,1 +10,3,50,1,3,326767,0,14914.37,45.87954,0,18,1,15.04729,3.288908,35.68358,0,0,54.01978,0,0,0,1,0,5,92,6.9,0,61.4,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,61.4,9.610147,1.609438,3.98935,1 +10,3,50,1,1,326768,0,14914.37,38.87201,1,11.38739,1,145.1992,18.45761,27.06844,0,0,190.7252,0,0,0,4,1,5,89.9,10.3,0,87.5,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,87.5,9.610147,1.609438,5.250834,1 +10,3,50,1,2,326768,0,14914.37,39.87201,1,11.38739,1,0,19.18425,0,0,0,19.18425,0,0,0,0,0,5,89.9,10.3,0,87.5,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,87.5,9.610147,1.609438,2.95409,1 +10,3,50,1,3,326768,0,14914.37,40.87201,1,11.38739,1,31.6423,31.6724,11.17799,0,0,74.49269,0,0,0,2,1,5,89.9,10.3,0,87.5,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,87.5,9.610147,1.609438,4.310701,1 +10,3,50,1,1,326769,0,14914.37,12.74743,1,11.38739,1,17.87538,0,21.45046,0,0,39.32584,0,0,0,1,1,5,100,9.967326,0,96.3,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,96.3,9.610147,1.609438,3.671882,1 +10,3,50,1,2,326769,0,14914.37,13.74743,1,11.38739,1,4.688232,1.61744,0,0,0,6.305673,0,0,0,1,0,5,100,9.967326,0,96.3,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,96.3,9.610147,1.609438,1.84145,1 +10,3,50,1,3,326769,0,14914.37,14.74743,1,11.38739,1,83.83491,14.4454,20.63629,0,0,118.9166,0,0,0,3,1,5,100,9.967326,0,96.3,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,96.3,9.610147,1.609438,4.778422,1 +10,3,50,1,1,326770,0,14914.37,13.92471,0,11.38739,1,7.660879,0,0,0,287.1042,294.7651,1,0,0,1,0,5,81.7,9.967326,0,55.6,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,55.6,9.610147,1.609438,5.686179,1 +10,3,50,1,2,326770,0,14914.37,14.92471,0,11.38739,1,43.45992,6.610408,0,0,0,50.07032,0,0,0,2,0,5,81.7,9.967326,0,55.6,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,55.6,9.610147,1.609438,3.913429,1 +10,3,50,1,3,326770,0,14914.37,15.92471,0,11.38739,1,7.308684,3.181427,0,0,0,10.49011,0,0,0,2,0,5,81.7,9.967326,0,55.6,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,55.6,9.610147,1.609438,2.350433,1 +5,3,25,1,1,326780,0,6466.276,44.97741,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,79.8,6.9,0,70.5,562.6,562.6,0,0,0,6.332569,0,3.258096,7.718863,0,0,0,70.5,8.77451,0,,0 +5,3,25,1,2,326780,0,6466.276,45.97741,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,79.8,6.9,0,70.5,562.6,562.6,0,0,0,6.332569,0,3.258096,7.718863,0,0,0,70.5,8.77451,0,,0 +5,3,25,1,3,326780,0,6466.276,46.97741,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,79.8,6.9,0,70.5,562.6,562.6,0,0,0,6.332569,0,3.258096,7.718863,0,0,0,70.5,8.77451,0,,0 +11,3,0,0,1,326920,.0322129,10066.86,53.07324,1,11.38739,1,91.93054,.6741573,0,0,0,92.6047,0,0,0,2,6,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,4.52834,1 +11,3,0,0,2,326920,.0322129,10066.86,54.07324,1,11.38739,1,381.8097,0,0,0,0,381.8097,0,0,0,2,75,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,5.944922,1 +11,3,0,0,3,326920,.0322129,10066.86,55.07324,1,11.38739,1,640.0258,1.698194,0,0,4650.787,5292.511,1,0,0,9,3,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,8.574048,1 +11,3,0,0,4,326920,.0322129,10066.86,56.07324,1,11.38739,1,124.4669,3.606049,31.01978,0,1565.839,1724.932,1,0,0,9,2,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,7.452943,1 +11,3,0,0,5,326920,.0322129,10066.86,57.07324,1,11.38739,1,165.1628,8.266101,0,0,0,173.4289,0,0,0,7,2,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,5.155767,1 +11,3,0,1,1,326921,0,2570.088,22.46407,0,11.38739,1,5.107252,0,0,0,0,5.107252,0,0,0,1,0,1,78.7,3.4,0,81.8,0,227.4,0,0,0,5.426711,0,0,0,0,0,0,81.8,7.852084,0,1.630661,1 +11,3,0,1,2,326921,0,2570.088,23.46407,0,11.38739,1,27.09798,0,0,0,0,27.09798,0,0,1,0,1,1,78.7,3.4,0,81.8,0,227.4,0,0,0,5.426711,0,0,0,0,0,0,81.8,7.852084,0,3.299459,1 +11,3,0,1,3,326921,0,2570.088,24.46407,0,11.38739,1,297.6268,1.977644,0,0,0,299.6045,0,0,0,3,0,1,78.7,3.4,0,81.8,0,227.4,0,0,0,5.426711,0,0,0,0,0,0,81.8,7.852084,0,5.702463,1 +11,3,0,1,4,326921,0,2570.088,25.46407,0,11.38739,1,0,0,0,0,0,0,0,0,0,0,0,1,78.7,3.4,0,81.8,0,227.4,0,0,0,5.426711,0,0,0,0,0,0,81.8,7.852084,0,,0 +11,3,0,1,5,326921,0,2570.088,26.46407,0,11.38739,1,8.846426,0,23.35456,0,0,32.20099,0,0,0,0,1,2,78.7,3.4,0,81.8,0,227.4,0,0,.6931472,5.426711,0,0,0,0,0,0,81.8,7.852084,.6931472,3.471997,1 +11,3,0,0,1,326922,.0322129,10066.86,14.00958,0,11.38739,1,97.24208,5.311543,0,0,0,102.5536,0,0,0,8,1,3,74.46748,9.967326,.1572505,,0,0,1,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,4.630386,1 +11,3,0,0,2,326922,.0322129,10066.86,15.00958,0,11.38739,1,50.63291,0,0,0,0,50.63291,0,0,0,1,9,3,74.46748,9.967326,.1572505,,0,0,1,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,3.924602,1 +11,3,0,0,3,326922,.0322129,10066.86,16.00958,0,11.38739,1,14.18745,4.363715,0,0,0,18.55116,0,0,0,2,0,3,74.46748,9.967326,.1572505,,0,0,1,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,2.920532,1 +11,3,0,0,4,326922,.0322129,10066.86,17.00958,0,11.38739,1,26.75456,0,0,0,0,26.75456,0,0,0,1,0,3,74.46748,9.967326,.1572505,,0,0,1,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,3.286705,1 +11,3,0,0,5,326922,.0322129,10066.86,18.00958,0,11.38739,1,8.846426,0,0,0,0,8.846426,0,0,0,1,0,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,2.180013,1 +11,3,0,0,1,326923,.0322129,10066.86,53.02122,0,11.38739,1,16.34321,.6792645,0,0,0,17.02247,0,0,0,1,1,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,2.834534,1 +11,3,0,0,2,326923,.0322129,10066.86,54.02122,0,11.38739,1,88.6076,4.664792,44.53821,0,0,137.8106,0,0,0,4,1,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,4.92588,1 +11,3,0,0,3,326923,.0322129,10066.86,55.02122,0,11.38739,1,0,0,0,0,0,0,0,0,0,0,0,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,,0 +11,3,0,0,4,326923,.0322129,10066.86,56.02122,0,11.38739,1,6.203955,0,0,0,0,6.203955,0,0,0,1,0,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,1.825187,1 +11,3,0,0,5,326923,.0322129,10066.86,57.02122,0,11.38739,1,30.39632,15.07431,36.09342,0,0,81.56405,0,0,0,2,1,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.217104,1.098612,4.401389,1 +11,3,0,1,1,326975,0,4611.144,51.33196,1,6,1,23.69912,2.009274,30.9119,0,0,56.6203,0,0,0,3,0,3,73.4,13.8,0,75,0,369.12,0,0,1.098612,5.911122,0,0,0,1,0,0,75,8.436448,1.098612,4.036367,1 +11,3,0,1,2,326975,0,4611.144,52.33196,1,6,1,11.83712,0,0,0,0,11.83712,0,0,0,1,0,3,73.4,13.8,0,75,0,369.12,0,0,1.098612,5.911122,0,0,0,1,0,0,75,8.436448,1.098612,2.471241,1 +11,3,0,1,3,326975,0,4611.144,53.33196,1,6,1,52.44907,9.185089,25.35761,0,0,86.99177,0,0,0,2,5,3,73.4,13.8,0,75,0,369.12,0,0,1.098612,5.911122,0,0,0,1,0,0,75,8.436448,1.098612,4.465814,1 +11,3,0,1,4,326975,0,4611.144,54.33196,1,6,1,33.04451,19.6731,0,0,0,52.71761,0,0,0,2,0,3,73.4,13.8,0,75,0,369.12,0,0,1.098612,5.911122,0,0,0,1,0,0,75,8.436448,1.098612,3.964949,1 +11,3,0,1,5,326975,0,4611.144,55.33196,1,6,1,62.14669,22.75492,28.62254,0,0,113.5241,0,0,0,2,0,3,73.4,13.8,0,75,0,369.12,0,0,1.098612,5.911122,0,0,0,1,0,0,75,8.436448,1.098612,4.732016,1 +11,3,0,1,1,326976,0,4611.144,15.60301,1,6,1,26.79031,19.00051,0,0,0,45.79083,0,0,0,1,0,3,87.8,6.9,0,90.9,0,369.12,1,1,1.098612,5.911122,0,0,0,1,0,0,90.9,8.436448,1.098612,3.824084,1 +11,3,0,1,2,326976,0,4611.144,16.60301,1,6,1,0,18.50852,0,0,0,18.50852,0,0,0,0,0,3,87.8,6.9,0,90.9,0,369.12,1,1,1.098612,5.911122,0,0,0,1,0,0,90.9,8.436448,1.098612,2.918231,1 +11,3,0,1,3,326976,0,4611.144,17.60301,1,6,1,32.94321,18.48721,28.17512,0,0,79.60555,0,0,0,3,1,3,87.8,6.9,0,90.9,0,369.12,1,1,1.098612,5.911122,0,0,0,1,0,0,90.9,8.436448,1.098612,4.377084,1 +11,3,0,1,4,326976,0,4611.144,18.60301,1,6,1,74.83261,20.01182,27.17605,0,0,122.0205,0,0,0,8,1,3,87.8,6.9,0,90.9,0,369.12,0,0,1.098612,5.911122,0,0,0,1,0,0,90.9,8.436448,1.098612,4.804189,1 +11,3,0,1,5,326976,0,4611.144,19.60301,1,6,1,44.90161,6.440072,0,0,0,51.34168,0,0,0,3,0,3,87.8,6.9,0,90.9,0,369.12,0,0,1.098612,5.911122,0,0,0,1,0,0,90.9,8.436448,1.098612,3.938503,1 +11,3,0,1,1,326977,0,4611.144,14.29706,0,6,1,0,0,22.66873,0,0,22.66873,0,0,0,0,0,3,88.3,0,0,80.7,0,369.12,1,0,1.098612,5.911122,0,0,0,1,0,0,80.7,8.436448,1.098612,3.120986,1 +11,3,0,1,2,326977,0,4611.144,15.29706,0,6,1,5.681818,0,0,0,0,5.681818,0,0,0,1,0,3,88.3,0,0,80.7,0,369.12,1,0,1.098612,5.911122,0,0,0,1,0,0,80.7,8.436448,1.098612,1.737271,1 +11,3,0,1,3,326977,0,4611.144,16.29706,0,6,1,20.80624,3.654096,25.14087,0,0,49.60122,0,0,0,2,0,3,88.3,0,0,80.7,0,369.12,1,0,1.098612,5.911122,0,0,0,1,0,0,80.7,8.436448,1.098612,3.904015,1 +11,3,0,1,4,326977,0,4611.144,17.29706,0,6,1,40.88224,3.292635,0,0,265.833,310.0079,1,0,0,2,0,3,88.3,0,0,80.7,0,369.12,1,0,1.098612,5.911122,0,0,0,1,0,0,80.7,8.436448,1.098612,5.736598,1 +11,3,0,1,5,326977,0,4611.144,18.29706,0,6,1,20.75134,0,0,0,0,20.75134,0,0,0,2,0,3,88.3,0,0,80.7,0,369.12,0,0,1.098612,5.911122,0,0,0,1,0,0,80.7,8.436448,1.098612,3.032611,1 +11,3,0,1,1,327011,0,9034.604,3.460643,1,14,1,46.47599,13.89173,0,0,0,60.36772,0,0,0,7,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,9.108928,1.386294,4.100454,1 +11,3,0,1,2,327011,0,9034.604,4.460643,1,14,1,26.2541,13.23019,0,0,0,39.48429,0,0,0,4,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,9.108928,1.386294,3.675903,1 +11,3,0,1,3,327011,0,9034.604,5.460643,1,14,1,0,0,0,0,0,0,0,0,0,0,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,9.108928,1.386294,,0 +11,3,0,1,4,327011,0,9034.604,6.460643,1,14,1,50.40714,2.113222,0,0,0,52.52036,0,0,0,1,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,9.108928,1.386294,3.961201,1 +11,3,0,1,5,327011,0,9034.604,7.460643,1,14,1,8.846426,13.49965,0,0,0,22.34607,0,0,0,1,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,9.108928,1.386294,3.106651,1 +11,3,0,1,1,327012,0,9034.604,27.57563,1,14,1,15.85802,.8120531,0,0,0,16.67007,0,0,0,1,0,4,78.7,24.1,1,75,0,0,0,0,1.386294,0,0,0,0,1,0,0,75,9.108928,1.386294,2.813615,1 +11,3,0,1,2,327012,0,9034.604,28.57563,1,14,1,22.73793,8.954524,0,0,0,31.69245,0,0,0,1,0,4,78.7,24.1,1,75,0,0,0,0,1.386294,0,0,0,0,1,0,0,75,9.108928,1.386294,3.456079,1 +11,3,0,1,3,327012,0,9034.604,29.57563,1,14,1,0,1.934652,0,0,0,1.934652,0,0,0,0,0,4,78.7,24.1,1,75,0,0,0,0,1.386294,0,0,0,0,1,0,0,75,9.108928,1.386294,.6599273,1 +11,3,0,1,4,327012,0,9034.604,30.57563,1,14,1,50.40714,2.155874,0,0,0,52.56301,0,0,0,1,0,4,78.7,24.1,1,75,0,0,0,0,1.386294,0,0,0,0,1,0,0,75,9.108928,1.386294,3.962013,1 +11,3,0,1,5,327012,0,9034.604,31.57563,1,14,1,7.077141,20.12031,0,0,0,27.19745,0,0,0,1,0,4,78.7,24.1,1,75,0,0,0,0,1.386294,0,0,0,0,1,0,0,75,9.108928,1.386294,3.303123,1 +11,3,0,1,1,327013,0,9034.604,7.23614,1,14,1,61.79775,10.63841,0,0,0,72.43616,0,0,0,8,0,4,87.3,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,9.108928,1.386294,4.282706,1 +11,3,0,1,2,327013,0,9034.604,8.236139,1,14,1,10.31411,3.375527,0,0,0,13.68964,0,0,0,1,0,4,87.3,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,9.108928,1.386294,2.616639,1 +11,3,0,1,3,327013,0,9034.604,9.236139,1,14,1,0,0,0,0,0,0,0,0,0,0,0,4,87.3,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,9.108928,1.386294,,0 +11,3,0,1,4,327013,0,9034.604,10.23614,1,14,1,0,0,0,0,0,0,0,0,0,0,0,4,87.3,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,9.108928,1.386294,,0 +11,3,0,1,5,327013,0,9034.604,11.23614,1,14,1,10.61571,1.167728,0,0,0,11.78344,0,0,0,1,0,4,87.3,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,9.108928,1.386294,2.466695,1 +11,3,0,1,1,327014,0,9034.604,30.6475,0,14,1,18.38611,22.57405,0,0,0,40.96016,0,0,0,3,0,4,83.5,6.9,0,62.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,62.5,9.108928,1.386294,3.7126,1 +11,3,0,1,2,327014,0,9034.604,31.6475,0,14,1,24.84763,15.61181,0,0,0,40.45945,0,0,0,3,0,4,83.5,6.9,0,62.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,62.5,9.108928,1.386294,3.7003,1 +11,3,0,1,3,327014,0,9034.604,32.6475,0,14,1,0,13.54256,0,0,0,13.54256,0,0,0,0,0,4,83.5,6.9,0,62.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,62.5,9.108928,1.386294,2.605838,1 +11,3,0,1,4,327014,0,9034.604,33.6475,0,14,1,8.142691,21.40364,0,0,0,29.54634,0,0,0,1,0,4,83.5,6.9,0,62.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,62.5,9.108928,1.386294,3.38596,1 +11,3,0,1,5,327014,0,9034.604,34.6475,0,14,1,55.73248,12.66808,0,0,0,68.40057,0,0,0,2,2,4,83.5,6.9,0,62.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,62.5,9.108928,1.386294,4.225381,1 +11,3,0,1,1,327084,0,1534.311,10.04244,1,2,1,6.072875,5.617409,7.591093,0,0,19.28138,0,0,0,1,0,2,83.39137,9.967326,.0431267,,0,0,1,1,.6931472,0,0,0,0,0,1,0,81.16254,7.336488,.6931472,2.95914,1 +11,3,0,1,2,327084,0,1534.311,11.04244,1,2,1,21.91142,1.188811,11.18881,0,0,34.28904,0,0,0,2,1,2,83.39137,9.967326,.0431267,,0,0,1,1,.6931472,0,0,0,0,0,1,0,81.16254,7.336488,.6931472,3.534826,1 +11,3,0,1,3,327084,0,1534.311,12.04244,1,2,1,77.05002,13.2749,0,0,0,90.32493,0,0,0,3,0,2,83.39137,9.967326,.0431267,,0,0,1,1,.6931472,0,0,0,0,0,1,0,81.16254,7.336488,.6931472,4.503414,1 +11,3,0,1,1,327085,0,1534.311,32.54483,1,2,1,66.04251,3.643725,10.12146,0,0,79.80769,0,0,0,2,1,2,57.4,20.7,1,42,0,0,0,0,.6931472,0,0,0,0,0,1,0,42,7.336488,.6931472,4.37962,1 +11,3,0,1,2,327085,0,1534.311,33.54483,1,2,1,785.4453,49.39394,0,0,1506.615,2341.455,1,0,0,11,0,2,57.4,20.7,1,42,0,0,0,0,.6931472,0,0,0,0,0,1,0,42,7.336488,.6931472,7.758528,1 +11,3,0,1,3,327085,0,1534.311,34.54483,1,2,1,111.4579,12.61223,0,0,0,124.0701,0,0,0,4,2,2,57.4,20.7,1,42,0,0,0,0,.6931472,0,0,0,0,0,1,0,42,7.336488,.6931472,4.820847,1 +7,3,25,0,1,327098,0,9333.725,30.12731,1,12,1,138.7385,36.87436,0,0,514.2186,689.8315,1,0,0,9,0,2,87.2,3.4,0,69.3,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,69.3,9.141497,.6931472,6.536448,1 +7,3,25,0,2,327098,0,9333.725,31.12731,1,12,1,71.72996,19.22175,0,0,0,90.95171,0,0,0,1,1,2,87.2,3.4,0,69.3,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,69.3,9.141497,.6931472,4.510329,1 +7,3,25,0,3,327098,0,9333.725,32.12731,1,12,1,50.12897,11.93035,0,0,0,62.05933,0,0,0,2,0,2,87.2,3.4,0,69.3,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,69.3,9.141497,.6931472,4.128091,1 +7,3,25,0,1,327099,0,9333.725,32.83778,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,80.9,3.4,0,80.7,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,80.7,9.141497,.6931472,,0 +7,3,25,0,2,327099,0,9333.725,33.83778,0,10,1,9.376465,0,27.19175,0,0,36.56821,0,0,0,0,1,2,80.9,3.4,0,80.7,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,80.7,9.141497,.6931472,3.59918,1 +7,3,25,0,3,327099,0,9333.725,34.83778,0,10,1,10.74806,0,0,0,0,10.74806,0,0,0,0,0,2,80.9,3.4,0,80.7,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,80.7,9.141497,.6931472,2.374726,1 +13,3,0,0,1,327249,0,7389.443,33.04038,1,12,1,506.373,1.931994,0,0,0,508.305,0,0,0,8,1,4,83.5,17.2,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,71.6,8.907943,1.386294,6.231081,1 +13,3,0,0,2,327249,0,7389.443,34.04038,1,12,1,10.41667,2.618371,0,0,0,13.03504,0,0,0,1,0,4,83.5,17.2,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,71.6,8.907943,1.386294,2.567641,1 +13,3,0,0,3,327249,0,7389.443,35.04038,1,12,1,74.5557,2.6658,0,0,0,77.2215,0,0,0,1,0,4,83.5,17.2,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,71.6,8.907943,1.386294,4.346678,1 +13,3,0,0,1,327250,0,7389.443,31.89049,0,12,1,59.76301,0,0,0,0,59.76301,0,0,0,2,3,4,83.5,3.4,0,78.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.907943,1.386294,4.090387,1 +13,3,0,0,2,327250,0,7389.443,32.89049,0,12,1,4.734848,3.787879,0,0,0,8.522727,0,0,0,1,0,4,83.5,3.4,0,78.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.907943,1.386294,2.142736,1 +13,3,0,0,3,327250,0,7389.443,33.89049,0,12,1,0,3.250975,0,0,0,3.250975,0,0,0,0,0,4,83.5,3.4,0,78.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.907943,1.386294,1.178955,1 +13,3,0,0,1,327251,0,7389.443,6.069815,0,12,1,17.51674,10.76765,0,0,0,28.28439,0,0,0,2,0,4,88.3,9.967326,0,88.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.907943,1.386294,3.34231,1 +13,3,0,0,2,327251,0,7389.443,7.069815,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,9.967326,0,88.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.907943,1.386294,,0 +13,3,0,0,3,327251,0,7389.443,8.069816,0,12,1,19.50585,0,0,0,0,19.50585,0,0,0,1,1,4,88.3,9.967326,0,88.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.907943,1.386294,2.970715,1 +13,3,0,0,1,327252,0,7389.443,9.798768,0,12,1,5.151984,2.189593,0,0,0,7.341577,0,0,0,1,0,4,90,9.967326,0,85.2,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.907943,1.386294,1.993554,1 +13,3,0,0,2,327252,0,7389.443,10.79877,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,90,9.967326,0,85.2,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.907943,1.386294,,0 +13,3,0,0,3,327252,0,7389.443,11.79877,0,12,1,70.09103,0,0,0,0,70.09103,0,0,0,2,0,4,90,9.967326,0,85.2,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.907943,1.386294,4.249795,1 +17,3,25,1,1,327259,0,1818.182,21.18275,0,10,1,0,0,0,0,0,0,0,0,0,0,0,1,86.2,3.4,0,81.8,400,400,0,0,0,5.991465,0,3.258096,7.377759,0,0,0,81.8,7.506142,0,,0 +18,3,25,1,1,327280,0,7048.68,33.61807,0,12,1,16.85393,0,0,0,0,16.85393,0,0,0,0,0,1,93.6,0,0,68.2,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,68.2,8.860738,0,2.824584,1 +18,3,25,1,2,327280,0,7048.68,34.61807,0,12,1,14.0647,10.68917,0,0,0,24.75387,0,0,0,1,0,1,93.6,0,0,68.2,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,68.2,8.860738,0,3.208982,1 +18,3,25,1,3,327280,0,7048.68,35.61807,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,93.6,0,0,68.2,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,68.2,8.860738,0,,0 +14,3,95,1,1,327332,0,9102.64,52.34497,0,11,1,22.26721,36.43725,0,0,0,58.70445,0,0,0,3,0,3,76.1,17.2,0,69.3,498.2,473.2,0,0,1.098612,6.159518,0,4.564348,6.262295,0,1,0,69.3,9.116429,1.098612,4.072515,1 +14,3,95,1,2,327332,0,9102.64,53.34497,0,11,1,14.91842,55.94406,0,0,0,70.86247,0,0,0,2,0,3,76.1,17.2,0,69.3,498.2,473.2,0,0,1.098612,6.159518,0,4.564348,6.262295,0,1,0,69.3,9.116429,1.098612,4.260741,1 +14,3,95,1,3,327332,0,9102.64,54.34497,0,11,1,32.49252,57.07567,46.17358,0,0,135.7418,0,0,0,3,1,3,76.1,17.2,0,69.3,498.2,473.2,0,0,1.098612,6.159518,0,4.564348,6.262295,0,1,0,69.3,9.116429,1.098612,4.910754,1 +14,3,95,1,4,327332,0,9102.64,55.34497,0,11,1,13.83551,54.88086,0,0,0,68.71637,0,0,0,2,0,3,76.1,17.2,0,69.3,498.2,473.2,0,0,1.098612,6.159518,0,4.564348,6.262295,0,1,0,69.3,9.116429,1.098612,4.229988,1 +14,3,95,1,5,327332,0,9102.64,56.34497,0,11,1,13.34738,52.07938,0,0,0,65.42677,0,0,0,2,0,3,76.1,17.2,0,69.3,498.2,473.2,0,0,1.098612,6.159518,0,4.564348,6.262295,0,1,0,69.3,9.116429,1.098612,4.180932,1 +14,3,95,1,1,327333,0,9102.64,56.01917,1,12,1,73.15283,1.467611,0,0,0,74.62045,0,0,0,2,0,3,68.6,3.4,0,72.7,498.2,473.2,0,0,1.098612,6.159518,0,4.564348,6.262295,1,0,0,72.7,9.116429,1.098612,4.312415,1 +14,3,95,1,2,327333,0,9102.64,57.01917,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,68.6,3.4,0,72.7,498.2,473.2,0,0,1.098612,6.159518,0,4.564348,6.262295,1,0,0,72.7,9.116429,1.098612,,0 +14,3,95,1,3,327333,0,9102.64,58.01917,1,12,1,5.985464,0,0,0,0,5.985464,0,0,0,1,0,3,68.6,3.4,0,72.7,498.2,473.2,0,0,1.098612,6.159518,0,4.564348,6.262295,1,0,0,72.7,9.116429,1.098612,1.789334,1 +14,3,95,1,4,327333,0,9102.64,59.01917,1,12,1,11.10684,.4765565,0,0,0,11.5834,0,0,0,1,0,3,68.6,3.4,0,72.7,498.2,473.2,0,0,1.098612,6.159518,0,4.564348,6.262295,1,0,0,72.7,9.116429,1.098612,2.449573,1 +14,3,95,1,5,327333,0,9102.64,60.01917,1,12,1,7.024939,0,28.451,0,0,35.47594,0,0,0,1,0,3,68.6,3.4,0,72.7,498.2,473.2,0,0,1.098612,6.159518,0,4.564348,6.262295,1,0,0,72.7,9.116429,1.098612,3.568855,1 +14,3,95,1,1,327334,0,9102.64,16.91444,1,12,1,8.097166,0,0,0,0,8.097166,0,0,0,1,0,3,75,3.4,0,64.8,498.2,473.2,1,1,1.098612,6.159518,0,4.564348,6.262295,0,0,0,64.8,9.116429,1.098612,2.091514,1 +14,3,95,1,2,327334,0,9102.64,17.91444,1,12,1,9.324009,0,5.594406,0,0,14.91842,0,0,0,0,1,3,75,3.4,0,64.8,498.2,473.2,1,1,1.098612,6.159518,0,4.564348,6.262295,0,0,0,64.8,9.116429,1.098612,2.702596,1 +14,3,95,1,3,327334,0,9102.64,18.91444,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,75,3.4,0,64.8,498.2,473.2,0,0,1.098612,6.159518,0,4.564348,6.262295,0,0,0,64.8,9.116429,1.098612,,0 +14,3,95,1,4,327334,0,9102.64,19.91444,1,12,1,9.607994,0,21.52191,0,0,31.1299,0,0,0,0,1,3,75,3.4,0,64.8,498.2,473.2,0,0,1.098612,6.159518,0,4.564348,6.262295,0,0,0,64.8,9.116429,1.098612,3.438169,1 +14,3,95,1,5,327334,0,9102.64,20.91444,1,12,1,0,0,10.53741,0,0,10.53741,0,0,0,0,0,3,75,3.4,0,64.8,498.2,473.2,0,0,1.098612,6.159518,0,4.564348,6.262295,0,0,0,64.8,9.116429,1.098612,2.354932,1 +11,3,0,1,1,327400,0,9506.158,25.24025,0,14,1,51.75167,0,0,0,0,51.75167,0,0,0,3,0,2,87.8,3.4,0,90.9,0,329.14,0,0,.6931472,5.796483,0,0,0,0,0,0,90.9,9.159801,.6931472,3.946457,1 +11,3,0,1,2,327400,0,9506.158,26.24025,0,14,1,14.58333,8.120265,28.88258,0,0,51.58617,0,0,0,1,0,2,87.8,3.4,0,90.9,0,329.14,0,0,.6931472,5.796483,0,0,0,0,0,0,90.9,9.159801,.6931472,3.943254,1 +11,3,0,1,3,327400,0,9506.158,27.24025,0,14,1,8.669268,0,15.17122,0,0,23.84048,0,0,0,0,1,3,87.8,3.4,0,90.9,0,329.14,0,0,1.098612,5.796483,0,0,0,0,0,0,90.9,9.159801,1.098612,3.171385,1 +11,3,0,1,4,327400,0,9506.158,28.24025,0,14,1,14.96652,0,27.56991,0,0,42.53643,0,0,0,1,1,3,87.8,3.4,0,90.9,0,329.14,0,0,1.098612,5.796483,0,0,0,0,0,0,90.9,9.159801,1.098612,3.750361,1 +11,3,0,1,5,327400,0,9506.158,29.24025,0,14,1,0,0,0,0,0,0,0,0,0,0,0,3,87.8,3.4,0,90.9,0,329.14,0,0,1.098612,5.796483,0,0,0,0,0,0,90.9,9.159801,1.098612,,0 +11,3,0,1,1,327401,0,9506.158,23.55647,1,14,1,42.93663,14.25039,34.00309,0,0,91.19011,0,0,0,4,0,2,61.2,6.9,0,55.7,0,329.14,0,0,.6931472,5.796483,0,0,0,0,0,0,55.7,9.159801,.6931472,4.512947,1 +11,3,0,1,2,327401,0,9506.158,24.55647,1,14,1,69.12878,27.46686,0,0,582.5284,679.124,1,0,0,6,0,2,61.2,6.9,0,55.7,0,329.14,0,0,.6931472,5.796483,0,0,0,0,0,0,55.7,9.159801,.6931472,6.520804,1 +11,3,0,1,3,327401,0,9506.158,25.55647,1,14,1,173.342,26.43693,0,0,657.616,857.3949,1,0,0,7,0,3,61.2,6.9,0,55.7,0,329.14,0,0,1.098612,5.796483,0,0,0,0,0,0,55.7,9.159801,1.098612,6.753899,1 +11,3,0,1,4,327401,0,9506.158,26.55647,1,14,1,40.88224,19.6219,21.66207,0,0,82.16621,0,0,0,1,1,3,61.2,6.9,0,55.7,0,329.14,0,0,1.098612,5.796483,0,0,0,0,0,0,55.7,9.159801,1.098612,4.408744,1 +11,3,0,1,5,327401,0,9506.158,27.55647,1,14,1,66.01073,33.96064,9.660108,0,679.5206,789.152,1,0,0,4,1,3,61.2,6.9,0,55.7,0,329.14,0,0,1.098612,5.796483,0,0,0,0,0,0,55.7,9.159801,1.098612,6.670959,1 +17,3,25,1,1,327421,0,4105.572,9.667351,1,9,1,15.45595,5.151984,0,0,0,20.60793,0,0,0,1,0,6,93.3,9.967326,0,81.5,583.75,0,1,1,1.791759,0,0,3.258096,7.755767,0,0,0,81.5,8.320344,1.791759,3.025676,1 +17,3,25,1,2,327421,0,4105.572,10.66735,1,9,1,0,0,0,0,0,0,0,0,0,0,0,6,93.3,9.967326,0,81.5,583.75,0,1,1,1.791759,0,0,3.258096,7.755767,0,0,0,81.5,8.320344,1.791759,,0 +17,3,25,1,3,327421,0,4105.572,11.66735,1,9,1,0,0,0,0,0,0,0,0,0,0,0,6,93.3,9.967326,0,81.5,583.75,0,1,1,1.791759,0,0,3.258096,7.755767,0,0,0,81.5,8.320344,1.791759,,0 +17,3,25,1,1,327422,0,4105.572,2.360027,1,9,1,0,0,0,0,0,0,0,0,0,0,0,6,83.39137,9.967326,0,96.3,583.75,0,1,1,1.791759,0,0,3.258096,7.755767,0,0,0,96.3,8.320344,1.791759,,0 +17,3,25,1,2,327422,0,4105.572,3.360027,1,9,1,0,0,0,0,0,0,0,0,0,0,0,6,83.39137,9.967326,0,96.3,583.75,0,1,1,1.791759,0,0,3.258096,7.755767,0,0,0,96.3,8.320344,1.791759,,0 +17,3,25,1,3,327422,0,4105.572,4.360027,1,9,1,0,0,0,0,0,0,0,0,0,0,0,6,83.39137,9.967326,0,96.3,583.75,0,1,1,1.791759,0,0,3.258096,7.755767,0,0,0,96.3,8.320344,1.791759,,0 +17,3,25,1,1,327423,0,4105.572,7.742642,1,9,1,0,0,0,0,0,0,0,0,0,0,0,6,95,9.967326,0,85.2,583.75,0,1,1,1.791759,0,0,3.258096,7.755767,0,0,0,85.2,8.320344,1.791759,,0 +17,3,25,1,2,327423,0,4105.572,8.742642,1,9,1,4.734848,1.136364,0,0,0,5.871212,0,0,0,1,0,6,95,9.967326,0,85.2,583.75,0,1,1,1.791759,0,0,3.258096,7.755767,0,0,0,85.2,8.320344,1.791759,1.770061,1 +17,3,25,1,3,327423,0,4105.572,9.742642,1,9,1,32.37971,2.895535,0,0,0,35.27525,0,0,0,1,0,6,95,9.967326,0,85.2,583.75,0,1,1,1.791759,0,0,3.258096,7.755767,0,0,0,85.2,8.320344,1.791759,3.563182,1 +17,3,25,1,1,327424,0,4105.572,30.37646,1,9,1,350.948,0,24.72952,0,0,375.6775,0,0,0,12,0,6,77.7,6.9,0,71.6,583.75,0,0,0,1.791759,0,0,3.258096,7.755767,0,0,0,71.6,8.320344,1.791759,5.928731,1 +17,3,25,1,2,327424,0,4105.572,31.37646,1,9,1,0,0,0,0,0,0,0,0,0,0,0,6,77.7,6.9,0,71.6,583.75,0,0,0,1.791759,0,0,3.258096,7.755767,0,0,0,71.6,8.320344,1.791759,,0 +17,3,25,1,3,327424,0,4105.572,32.37645,1,9,1,41.61248,0,0,0,403.9662,445.5787,1,0,0,4,0,6,77.7,6.9,0,71.6,583.75,0,0,0,1.791759,0,0,3.258096,7.755767,0,0,0,71.6,8.320344,1.791759,6.099374,1 +17,3,25,1,1,327425,0,4105.572,5.924709,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,90,9.967326,0,92.6,583.75,0,1,0,1.791759,0,0,3.258096,7.755767,0,0,0,92.6,8.320344,1.791759,,0 +17,3,25,1,2,327425,0,4105.572,6.924709,0,9,1,4.734848,2.698864,0,0,0,7.433712,0,0,0,1,0,6,90,9.967326,0,92.6,583.75,0,1,0,1.791759,0,0,3.258096,7.755767,0,0,0,92.6,8.320344,1.791759,2.006025,1 +17,3,25,1,3,327425,0,4105.572,7.924709,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,90,9.967326,0,92.6,583.75,0,1,0,1.791759,0,0,3.258096,7.755767,0,0,0,92.6,8.320344,1.791759,,0 +17,3,25,1,1,327426,0,4105.572,34.66393,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,70.7,3.4,0,64.8,583.75,0,0,0,1.791759,0,0,3.258096,7.755767,0,1,0,64.8,8.320344,1.791759,,0 +17,3,25,1,2,327426,0,4105.572,35.66393,0,9,1,0,0,0,0,1341.619,1341.619,1,0,0,0,0,6,70.7,3.4,0,64.8,583.75,0,0,0,1.791759,0,0,3.258096,7.755767,0,1,0,64.8,8.320344,1.791759,7.201632,1 +17,3,25,1,3,327426,0,4105.572,36.66393,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,70.7,3.4,0,64.8,583.75,0,0,0,1.791759,0,0,3.258096,7.755767,0,1,0,64.8,8.320344,1.791759,,0 +13,3,0,1,1,327436,0,3424.047,55.04175,1,7,1,5.151984,0,0,0,0,5.151984,0,0,0,1,0,1,76.1,24.1,0,75,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,75,8.13887,0,1.639382,1 +13,3,0,1,2,327436,0,3424.047,56.04175,1,7,1,0,0,0,0,0,0,0,0,0,0,0,1,76.1,24.1,0,75,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,75,8.13887,0,,0 +13,3,0,1,3,327436,0,3424.047,57.04175,1,7,1,0,0,0,0,0,0,0,0,0,0,0,1,76.1,24.1,0,75,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,75,8.13887,0,,0 +13,3,0,1,1,327440,0,8989.442,44.01369,0,12,1,56.67182,75.14168,0,0,0,131.8135,0,0,0,7,0,2,88.8,13.8,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.103917,.6931472,4.881388,1 +13,3,0,1,2,327440,0,8989.442,45.01369,0,12,1,127.8409,84.55966,7.102273,0,0,219.5028,0,0,0,14,0,2,88.8,13.8,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.103917,.6931472,5.391365,1 +13,3,0,1,3,327440,0,8989.442,46.01369,0,12,1,630.8193,75.05418,25.79107,0,1126.983,1858.648,1,0,0,23,0,2,88.8,13.8,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.103917,.6931472,7.527605,1 +13,3,0,1,4,327440,0,8989.442,47.01369,0,12,1,150.4529,86.07719,32.49311,0,0,269.0232,0,0,0,14,0,2,88.8,13.8,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.103917,.6931472,5.594798,1 +13,3,0,1,5,327440,0,8989.442,48.01369,0,12,1,291.449,129.8032,15.02683,0,2198.379,2634.658,2,0,0,16,2,2,88.8,13.8,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.103917,.6931472,7.876509,1 +13,3,0,1,1,327441,0,8989.442,45.03217,1,8,1,317.8516,181.2725,1.813498,0,2420.819,2921.757,1,0,0,21,0,2,79.8,20.7,0,64.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,64.8,9.103917,.6931472,7.97994,1 +13,3,0,1,2,327441,0,8989.442,46.03217,1,8,1,179.8295,116.714,0,0,0,296.5435,0,0,0,7,0,2,79.8,20.7,0,64.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,64.8,9.103917,.6931472,5.692194,1 +13,3,0,1,3,327441,0,8989.442,47.03217,1,8,1,134.3736,128.8036,0,0,0,263.1773,0,0,0,5,0,2,79.8,20.7,0,64.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,64.8,9.103917,.6931472,5.572828,1 +13,3,0,1,4,327441,0,8989.442,48.03217,1,8,1,284.3639,142.6585,22.43009,0,0,449.4525,0,0,0,15,1,2,79.8,20.7,0,64.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,64.8,9.103917,.6931472,6.10803,1 +13,3,0,1,5,327441,0,8989.442,49.03217,1,8,1,145.5277,111.7889,15.38461,0,0,272.7013,0,0,0,5,1,2,79.8,20.7,0,64.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,64.8,9.103917,.6931472,5.608377,1 +15,3,95,0,1,327480,0,5263.93,27.06366,1,16,1,34.93361,19.22881,0,0,0,54.16241,0,0,0,4,0,1,62.8,17.2,0,64.3,750,750,0,0,0,6.620073,0,4.564348,6.671367,1,0,0,64.3,8.568823,0,3.991987,1 +15,3,95,0,2,327480,0,5263.93,28.06366,1,16,1,44.21003,3.797468,0,0,0,48.0075,0,0,0,4,0,1,62.8,17.2,0,64.3,750,750,0,0,0,6.620073,0,4.564348,6.671367,1,0,0,64.3,8.568823,0,3.871357,1 +15,3,95,0,3,327480,0,5263.93,29.06366,1,16,1,196.2382,21.84437,29.4712,0,705.6406,953.1943,1,0,0,3,1,1,62.8,17.2,0,64.3,750,750,0,0,0,6.620073,0,4.564348,6.671367,1,0,0,64.3,8.568823,0,6.859819,1 +13,3,0,1,1,327496,0,2164.223,32.45996,0,11,1,232.7119,13.02349,18.38611,0,7562.615,7826.736,1,0,0,4,18,3,92.6,0,0,84.1,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,0,84.1,7.680279,1.098612,8.965301,1 +13,3,0,1,2,327496,0,2164.223,33.45996,0,11,1,24.84763,22.73793,0,0,0,47.58556,0,0,0,2,0,3,92.6,0,0,84.1,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,0,84.1,7.680279,1.098612,3.862529,1 +13,3,0,1,3,327496,0,2164.223,34.45996,0,11,1,0,9.802236,0,0,0,9.802236,0,0,0,0,0,3,92.6,0,0,84.1,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,0,84.1,7.680279,1.098612,2.28261,1 +13,3,0,1,1,327497,0,2164.223,32.18617,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.5,0,0,80.7,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,0,80.7,7.680279,1.098612,,0 +13,3,0,1,2,327497,0,2164.223,33.18617,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.5,0,0,80.7,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,0,80.7,7.680279,1.098612,,0 +13,3,0,1,3,327497,0,2164.223,34.18617,1,12,1,0,0,0,0,655.2236,655.2236,1,0,0,0,0,3,83.5,0,0,80.7,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,0,80.7,7.680279,1.098612,6.484976,1 +13,3,0,1,1,327498,0,2164.223,3.041752,0,12,1,6.128703,1.838611,0,0,0,7.967314,0,0,0,1,0,3,83.39137,9.967326,0,88.9,450,0,1,0,1.098612,0,1,4.564348,6.160541,0,0,0,88.9,7.680279,1.098612,2.075347,1 +13,3,0,1,2,327498,0,2164.223,4.041752,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.39137,9.967326,0,88.9,450,0,1,0,1.098612,0,1,4.564348,6.160541,0,0,0,88.9,7.680279,1.098612,,0 +13,3,0,1,3,327498,0,2164.223,5.041752,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.39137,9.967326,0,88.9,450,0,1,0,1.098612,0,1,4.564348,6.160541,0,0,0,88.9,7.680279,1.098612,,0 +13,3,0,0,1,327504,0,5948.387,29.18823,0,16,1,65.11747,2.808989,35.34219,0,0,103.2686,0,0,0,5,2,1,92,20.7,0,81.8,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,81.8,8.691044,0,4.637334,1 +13,3,0,0,2,327504,0,5948.387,30.18823,0,16,1,226.9105,0,21.56587,0,0,248.4763,0,0,0,1,25,1,92,20.7,0,81.8,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,81.8,8.691044,0,5.515347,1 +13,3,0,0,3,327504,0,5948.387,31.18823,0,16,1,164.6604,0,17.01634,0,0,181.6767,0,0,0,6,14,1,92,20.7,0,81.8,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,81.8,8.691044,0,5.202229,1 +15,3,95,1,1,327625,0,12675.07,13.83984,0,12,1,15.45595,0,27.82071,0,0,43.27666,0,0,0,2,0,4,93.3,9.967326,0,96.3,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.447472,1.386294,3.767613,1 +15,3,95,1,2,327625,0,12675.07,14.83984,0,12,1,16.57197,2.035985,13.25758,0,0,31.86553,0,0,0,1,1,4,93.3,9.967326,0,96.3,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.447472,1.386294,3.461525,1 +15,3,95,1,3,327625,0,12675.07,15.83984,0,12,1,8.669268,0,28.17512,0,0,36.84439,0,0,0,0,1,4,93.3,9.967326,0,96.3,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.447472,1.386294,3.606703,1 +15,3,95,1,4,327625,0,12675.07,16.83984,0,12,1,9.846396,0,11.02796,0,0,20.87436,0,0,0,0,1,4,93.3,9.967326,0,96.3,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.447472,1.386294,3.038522,1 +15,3,95,1,5,327625,0,12675.07,17.83984,0,12,1,25.76029,0,0,0,0,25.76029,0,0,0,2,1,4,93.3,9.967326,0,96.3,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.447472,1.386294,3.248834,1 +15,3,95,1,1,327626,0,12675.07,34.32991,0,8,1,16.48635,.9015971,31.9423,0,0,49.33024,0,0,0,3,0,4,83.5,0,0,80.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,80.7,9.447472,1.386294,3.898537,1 +15,3,95,1,2,327626,0,12675.07,35.32991,0,8,1,107.3627,.2367424,45.54924,0,546.5909,699.7396,1,0,0,3,1,4,83.5,0,0,80.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,80.7,9.447472,1.386294,6.550708,1 +15,3,95,1,3,327626,0,12675.07,36.32991,0,8,1,93.19463,5.74339,25.57434,0,0,124.5124,0,0,0,1,1,4,83.5,0,0,80.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,80.7,9.447472,1.386294,4.824405,1 +15,3,95,1,4,327626,0,12675.07,37.32991,0,8,1,16.14809,0,0,0,0,16.14809,0,0,0,2,0,4,83.5,0,0,80.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,80.7,9.447472,1.386294,2.781802,1 +15,3,95,1,5,327626,0,12675.07,38.32991,0,8,1,31.48479,7.602862,20.75134,0,0,59.839,0,0,0,3,1,4,83.5,0,0,80.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,80.7,9.447472,1.386294,4.091658,1 +15,3,95,1,1,327627,0,12675.07,12.77481,0,12,1,110.1236,0,0,0,0,110.1236,0,0,0,5,0,4,80,9.967326,0,92.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,92.6,9.447472,1.386294,4.701604,1 +15,3,95,1,2,327627,0,12675.07,13.77481,0,12,1,56.81818,0,.9469697,0,0,57.76515,0,0,0,2,0,4,80,9.967326,0,92.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,92.6,9.447472,1.386294,4.056386,1 +15,3,95,1,3,327627,0,12675.07,14.77481,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80,9.967326,0,92.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,92.6,9.447472,1.386294,,0 +15,3,95,1,4,327627,0,12675.07,15.77481,0,12,1,14.17881,0,0,0,0,14.17881,0,0,0,2,0,4,80,9.967326,0,92.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,92.6,9.447472,1.386294,2.651749,1 +15,3,95,1,5,327627,0,12675.07,16.77481,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80,9.967326,0,92.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,92.6,9.447472,1.386294,,0 +15,3,95,1,1,327628,0,12675.07,33.35524,1,12,1,9.42813,0,0,0,0,9.42813,0,0,0,1,0,4,80.3,6.9,0,100,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,100,9.447472,1.386294,2.243698,1 +15,3,95,1,2,327628,0,12675.07,34.35524,1,12,1,21.7803,2.95928,0,0,0,24.73958,0,0,0,1,0,4,80.3,6.9,0,100,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,100,9.447472,1.386294,3.208405,1 +15,3,95,1,3,327628,0,12675.07,35.35524,1,12,1,40.74556,0,0,0,0,40.74556,0,0,0,2,0,4,80.3,6.9,0,100,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,100,9.447472,1.386294,3.707347,1 +15,3,95,1,4,327628,0,12675.07,36.35524,1,12,1,7.483261,0,0,0,0,7.483261,0,0,0,1,0,4,80.3,6.9,0,100,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,100,9.447472,1.386294,2.012669,1 +15,3,95,1,5,327628,0,12675.07,37.35524,1,12,1,17.17352,0,20.75134,0,0,37.92487,0,0,0,1,1,4,80.3,6.9,0,100,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,100,9.447472,1.386294,3.635607,1 +15,3,95,0,1,327629,0,8899.12,26.45038,1,12,1,12.87996,0,0,0,0,12.87996,0,0,0,1,0,2,52.1,13.8,0,56.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,56.8,9.09382,.6931472,2.555673,1 +15,3,95,0,2,327629,0,8899.12,27.45038,1,12,1,106.5341,0,0,0,0,106.5341,0,0,0,3,0,2,52.1,13.8,0,56.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,56.8,9.09382,.6931472,4.668465,1 +15,3,95,0,3,327629,0,8899.12,28.45038,1,12,1,7.802341,0,0,0,0,7.802341,0,0,0,1,0,2,52.1,13.8,0,56.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,56.8,9.09382,.6931472,2.054424,1 +15,3,95,0,4,327629,0,8899.12,29.45038,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,52.1,13.8,0,56.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,56.8,9.09382,.6931472,,0 +15,3,95,0,5,327629,0,8899.12,30.45038,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,52.1,13.8,0,56.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,56.8,9.09382,.6931472,,0 +15,3,95,0,1,327630,0,8899.12,29.64545,0,12,1,12.87996,0,0,0,0,12.87996,0,0,0,2,0,2,62.2,6.9,0,55.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,55.7,9.09382,.6931472,2.555673,1 +15,3,95,0,2,327630,0,8899.12,30.64545,0,12,1,66.99811,0,0,0,0,66.99811,0,0,0,3,0,2,62.2,6.9,0,55.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,55.7,9.09382,.6931472,4.204664,1 +15,3,95,0,3,327630,0,8899.12,31.64545,0,12,1,10.83658,0,0,0,0,10.83658,0,0,0,0,0,2,62.2,6.9,0,55.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,55.7,9.09382,.6931472,2.382928,1 +15,3,95,0,4,327630,0,8899.12,32.64545,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,62.2,6.9,0,55.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,55.7,9.09382,.6931472,,0 +15,3,95,0,5,327630,0,8899.12,33.64545,0,12,1,48.15742,0,1.023256,0,0,49.18068,0,0,0,5,0,2,62.2,6.9,0,55.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,55.7,9.09382,.6931472,3.895501,1 +13,3,0,1,1,327650,0,10620.53,25.12526,1,12,1,47.49745,6.613892,0,0,0,54.11134,0,0,0,3,0,2,72.9,3.4,0,79.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,79.5,9.270638,.6931472,3.991044,1 +13,3,0,1,2,327650,0,10620.53,26.12526,1,12,1,18.75293,1.851852,0,0,0,20.60478,0,0,0,1,0,2,72.9,3.4,0,79.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,79.5,9.270638,.6931472,3.025523,1 +13,3,0,1,3,327650,0,10620.53,27.12526,1,12,1,60.18917,72.8074,0,0,337.3603,470.3568,1,0,0,1,0,2,72.9,3.4,0,79.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,79.5,9.270638,.6931472,6.153491,1 +13,3,0,1,1,327651,0,10620.53,26.71595,0,15,1,2.553626,4.581205,0,0,0,7.134831,0,0,0,0,0,2,80.9,3.4,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.270638,.6931472,1.964989,1 +13,3,0,1,2,327651,0,10620.53,27.71595,0,15,1,0,5.607126,0,0,0,5.607126,0,0,0,0,0,2,80.9,3.4,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.270638,.6931472,1.724038,1 +13,3,0,1,3,327651,0,10620.53,28.71595,0,15,1,140.9716,16.62511,0,0,0,157.5967,0,0,0,5,0,2,80.9,3.4,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.270638,.6931472,5.06004,1 +13,3,0,0,1,327660,0,2375.953,28.55852,0,17,1,7.727975,0,29.8815,0,0,37.60948,0,0,0,0,1,1,77.1,6.9,0,71.6,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,71.6,7.773575,0,3.627256,1 +13,3,0,0,2,327660,0,2375.953,29.55852,0,17,1,14.20455,0,0,0,0,14.20455,0,0,0,1,0,1,77.1,6.9,0,71.6,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,71.6,7.773575,0,2.653562,1 +13,3,0,0,3,327660,0,2375.953,30.55852,0,17,1,0,0,0,0,0,0,0,0,0,0,0,1,77.1,6.9,0,71.6,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,71.6,7.773575,0,,0 +11,3,0,0,3,327677,0,9925.514,44.60369,1,,1,62.01634,3.482373,48.15133,0,0,113.65,0,0,0,1,1,1,78.2,6.9,0,78.4,,,0,0,0,0,0,0,0,0,0,0,78.4,9.202965,0,4.733124,1 +13,3,0,1,1,327685,0,6282.698,54.13552,1,12,1,27.57916,1.404494,0,0,0,28.98366,0,0,0,3,0,2,58.5,17.2,1,47.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,47.7,8.745714,.6931472,3.366732,1 +13,3,0,1,2,327685,0,6282.698,55.13552,1,12,1,10.78294,4.664792,18.75293,0,0,34.20066,0,0,0,0,1,2,58.5,17.2,1,47.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,47.7,8.745714,.6931472,3.532245,1 +13,3,0,1,3,327685,0,6282.698,56.13552,1,12,1,13.3276,.988822,0,0,0,14.31642,0,0,0,2,0,2,58.5,17.2,1,47.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,47.7,8.745714,.6931472,2.661407,1 +13,3,0,1,1,327686,0,6282.698,57.21834,0,12,1,15.32176,14.01941,22.47191,0,0,51.81308,0,0,0,1,1,2,83.5,13.8,0,63.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,63.1,8.745714,.6931472,3.947643,1 +13,3,0,1,2,327686,0,6282.698,58.21834,0,12,1,0,13.97093,0,0,0,13.97093,0,0,0,0,0,2,83.5,13.8,0,63.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,63.1,8.745714,.6931472,2.636979,1 +13,3,0,1,3,327686,0,6282.698,59.21834,0,12,1,14.18745,0,4.299226,0,0,18.48667,0,0,0,1,1,2,83.5,13.8,0,63.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,63.1,8.745714,.6931472,2.91705,1 +13,3,0,1,1,327687,0,5677.419,30.46954,1,12,1,44.53441,0,23.27935,0,0,67.81377,0,0,0,2,1,1,64.4,10.3,1,38.6,150,246.3,0,0,0,5.50655,1,4.564348,5.061929,1,0,0,38.6,8.644428,0,4.216765,1 +13,3,0,1,2,327687,0,5677.419,31.46954,1,12,1,161.3054,8.251748,0,76.92308,0,169.5571,0,0,6,4,0,1,64.4,10.3,1,38.6,150,246.3,0,0,0,5.50655,1,4.564348,5.061929,1,0,0,38.6,8.644428,0,5.13319,1 +13,3,0,1,3,327687,0,5677.419,32.46954,1,12,1,232.6208,8.721676,41.15006,0,0,282.4925,0,0,0,11,0,1,64.4,10.3,1,38.6,150,246.3,0,0,0,5.50655,1,4.564348,5.061929,1,0,0,38.6,8.644428,0,5.643652,1 +10,3,50,0,1,327705,0,11738.42,31.87132,1,14,1,186.2236,23.44152,0,0,940.2834,1149.948,1,0,0,11,0,4,86.7,10.3,0,81.8,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,81.8,9.370708,1.386294,7.047472,1 +10,3,50,0,2,327705,0,11738.42,32.87132,1,14,1,38.82576,0,0,0,0,38.82576,0,0,0,2,0,4,86.7,10.3,0,81.8,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,81.8,9.370708,1.386294,3.659084,1 +10,3,50,0,3,327705,0,11738.42,33.87132,1,14,1,58.51756,6.285219,6.935414,0,0,71.73819,0,0,0,3,0,4,86.7,10.3,0,81.8,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,81.8,9.370708,1.386294,4.273023,1 +10,3,50,0,1,327706,0,11738.42,34.08898,0,12,1,15.45595,2.112313,0,0,0,17.56826,0,0,0,1,0,4,94.1,6.9,0,84.1,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,84.1,9.370708,1.386294,2.866094,1 +10,3,50,0,2,327706,0,11738.42,35.08898,0,12,1,19.88636,0,26.98864,0,0,46.875,0,0,0,1,0,4,94.1,6.9,0,84.1,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,84.1,9.370708,1.386294,3.847485,1 +10,3,50,0,3,327706,0,11738.42,36.08898,0,12,1,59.81794,5.062852,0,0,0,64.8808,0,0,0,3,0,4,94.1,6.9,0,84.1,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,84.1,9.370708,1.386294,4.172552,1 +10,3,50,0,1,327707,0,11738.42,7.761807,1,14,1,7.727975,0,0,0,0,7.727975,0,0,0,1,0,4,100,9.967326,0,100,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,100,9.370708,1.386294,2.044847,1 +10,3,50,0,2,327707,0,11738.42,8.761807,1,14,1,32.38636,2.746212,0,0,0,35.13258,0,0,0,1,0,4,100,9.967326,0,100,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,100,9.370708,1.386294,3.559129,1 +10,3,50,0,3,327707,0,11738.42,9.761807,1,14,1,16.03815,7.93238,0,0,0,23.97052,0,0,0,3,0,4,100,9.967326,0,100,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,100,9.370708,1.386294,3.176825,1 +10,3,50,0,1,327708,0,11738.42,9.14716,0,14,1,29.36631,16.95003,27.82071,0,0,74.13704,0,0,0,3,0,4,96.7,9.967326,0,96.3,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,96.3,9.370708,1.386294,4.305915,1 +10,3,50,0,2,327708,0,11738.42,10.14716,0,14,1,55.39773,8.001894,13.25758,0,0,76.6572,0,0,0,5,0,4,96.7,9.967326,0,96.3,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,96.3,9.370708,1.386294,4.339344,1 +10,3,50,0,3,327708,0,11738.42,11.14716,0,14,1,148.8036,0,18.22713,0,0,167.0308,0,0,0,5,0,4,96.7,9.967326,0,96.3,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,96.3,9.370708,1.386294,5.118178,1 +17,3,25,0,1,327714,0,9551.906,36.55578,1,12,1,34.21859,25.85802,0,0,0,60.07661,0,0,0,2,1,4,59,27.6,1,43.2,558,558,0,0,1.386294,6.324359,0,3.258096,7.710653,0,0,0,43.2,9.1646,1.386294,4.095621,1 +17,3,25,0,2,327714,0,9551.906,37.55578,1,12,1,112.4707,6.057197,25.78528,0,0,144.3132,0,0,0,6,1,4,59,27.6,1,43.2,558,558,0,0,1.386294,6.324359,0,3.258096,7.710653,0,0,0,43.2,9.1646,1.386294,4.971986,1 +17,3,25,0,3,327714,0,9551.906,38.55578,1,12,1,116.509,4.50129,0,0,0,121.0103,0,0,0,6,0,4,59,27.6,1,43.2,558,558,0,0,1.386294,6.324359,0,3.258096,7.710653,0,0,0,43.2,9.1646,1.386294,4.795876,1 +17,3,25,0,4,327714,0,9551.906,39.55578,1,12,1,95.77355,2.582396,0,0,0,98.35595,0,0,0,6,1,4,59,27.6,1,43.2,558,558,0,0,1.386294,6.324359,0,3.258096,7.710653,0,0,0,43.2,9.1646,1.386294,4.588593,1 +17,3,25,0,5,327714,0,9551.906,40.55578,1,12,1,210.0142,5.980184,19.46214,0,0,235.4565,0,0,0,9,1,4,59,27.6,1,43.2,558,558,0,0,1.386294,6.324359,0,3.258096,7.710653,0,0,0,43.2,9.1646,1.386294,5.461526,1 +17,3,25,0,1,327715,0,9551.906,15.21697,1,12,1,15.32176,0,12.76813,0,0,28.08989,0,0,0,1,1,4,94.7,3.4,0,93.2,558,558,1,1,1.386294,6.324359,0,3.258096,7.710653,0,0,0,93.2,9.1646,1.386294,3.33541,1 +17,3,25,0,2,327715,0,9551.906,16.21697,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,94.7,3.4,0,93.2,558,558,1,1,1.386294,6.324359,0,3.258096,7.710653,0,0,0,93.2,9.1646,1.386294,,0 +17,3,25,0,3,327715,0,9551.906,17.21697,1,12,1,10.31814,0,0,0,0,10.31814,0,0,0,1,0,4,94.7,3.4,0,93.2,558,558,1,1,1.386294,6.324359,0,3.258096,7.710653,0,0,0,93.2,9.1646,1.386294,2.333904,1 +17,3,25,0,4,327715,0,9551.906,18.21697,1,12,1,32.95851,0,25.97906,0,0,58.93757,0,0,0,2,1,4,94.7,3.4,0,93.2,558,558,0,0,1.386294,6.324359,0,3.258096,7.710653,0,0,0,93.2,9.1646,1.386294,4.076479,1 +17,3,25,0,5,327715,0,9551.906,19.21697,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,94.7,3.4,0,93.2,558,558,0,0,1.386294,6.324359,0,3.258096,7.710653,0,0,0,93.2,9.1646,1.386294,,0 +17,3,25,0,1,327716,0,9551.906,47.52635,0,12,1,57.12462,0,0,0,0,57.12462,0,0,0,2,1,4,79.8,6.9,0,64.8,558,558,0,0,1.386294,6.324359,0,3.258096,7.710653,0,0,0,64.8,9.1646,1.386294,4.045235,1 +17,3,25,0,2,327716,0,9551.906,48.52635,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,6.9,0,64.8,558,558,0,0,1.386294,6.324359,0,3.258096,7.710653,0,0,0,64.8,9.1646,1.386294,,0 +17,3,25,0,3,327716,0,9551.906,49.52635,0,12,1,43.20722,0,10.74806,0,0,53.95529,0,0,0,2,1,4,79.8,6.9,0,64.8,558,558,0,0,1.386294,6.324359,0,3.258096,7.710653,0,0,0,64.8,9.1646,1.386294,3.988156,1 +17,3,25,0,4,327716,0,9551.906,50.52635,0,12,1,15.12214,0,0,0,0,15.12214,0,0,0,2,0,4,79.8,6.9,0,64.8,558,558,0,0,1.386294,6.324359,0,3.258096,7.710653,0,0,0,64.8,9.1646,1.386294,2.71616,1 +17,3,25,0,5,327716,0,9551.906,51.52635,0,12,1,8.846426,0,17.33899,21.23142,0,26.18542,0,0,1,0,1,4,79.8,6.9,0,64.8,558,558,0,0,1.386294,6.324359,0,3.258096,7.710653,0,0,0,64.8,9.1646,1.386294,3.265203,1 +17,3,25,0,1,327717,0,9551.906,6.529774,1,12,1,6.128703,0,0,0,0,6.128703,0,0,0,1,0,4,90,9.967326,0,92.6,558,558,1,1,1.386294,6.324359,0,3.258096,7.710653,0,0,0,92.6,9.1646,1.386294,1.812983,1 +17,3,25,0,2,327717,0,9551.906,7.529774,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,90,9.967326,0,92.6,558,558,1,1,1.386294,6.324359,0,3.258096,7.710653,0,0,0,92.6,9.1646,1.386294,,0 +17,3,25,0,3,327717,0,9551.906,8.529774,1,12,1,5.588994,7.003439,0,0,0,12.59243,0,0,0,1,0,4,90,9.967326,0,92.6,558,558,1,1,1.386294,6.324359,0,3.258096,7.710653,0,0,0,92.6,9.1646,1.386294,2.533096,1 +17,3,25,0,4,327717,0,9551.906,9.529774,1,12,1,5.816208,0,0,0,0,5.816208,0,0,0,1,0,4,90,9.967326,0,92.6,558,558,1,1,1.386294,6.324359,0,3.258096,7.710653,0,0,0,92.6,9.1646,1.386294,1.760648,1 +17,3,25,0,5,327717,0,9551.906,10.52977,1,12,1,23.35456,3.956122,0,0,0,27.31069,0,0,0,2,0,4,90,9.967326,0,92.6,558,558,1,1,1.386294,6.324359,0,3.258096,7.710653,0,0,0,92.6,9.1646,1.386294,3.307278,1 +6,3,25,1,1,327718,0,15862.76,12.10404,1,16,1,105.7445,0,0,0,0,105.7445,0,0,0,3,1,4,80,9.967326,0,100,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.671792,1.386294,4.661026,1 +6,3,25,1,2,327718,0,15862.76,13.10404,1,16,1,59.91951,5.610795,.3598485,0,0,65.89015,0,0,0,7,0,4,80,9.967326,0,100,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.671792,1.386294,4.187989,1 +6,3,25,1,3,327718,0,15862.76,14.10404,1,16,1,120.0694,7.893368,0,0,0,127.9627,0,0,0,8,0,4,80,9.967326,0,100,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.671792,1.386294,4.851739,1 +6,3,25,1,4,327718,0,15862.76,15.10404,1,16,1,70.97676,4.07247,0,0,0,75.04923,0,0,0,7,0,4,80,9.967326,0,100,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.671792,1.386294,4.318144,1 +6,3,25,1,5,327718,0,15862.76,16.10404,1,16,1,193.8998,37.10197,0,0,0,231.0018,0,0,0,12,1,4,80,9.967326,0,100,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.671792,1.386294,5.442425,1 +6,3,25,1,1,327719,0,15862.76,40.31759,1,16,1,30.03606,17.46522,39.15508,162.2875,0,86.65636,0,0,12,2,1,4,53.7,17.2,1,68.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,68.2,9.671792,1.386294,4.46195,1 +6,3,25,1,2,327719,0,15862.76,41.31759,1,16,1,4.938447,3.598485,0,234.1619,0,8.536932,0,0,18,1,0,4,53.7,17.2,1,68.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,68.2,9.671792,1.386294,2.144402,1 +6,3,25,1,3,327719,0,15862.76,42.31759,1,16,1,18.68661,2.384048,31.49545,0,0,52.5661,0,0,0,1,1,4,53.7,17.2,1,68.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,68.2,9.671792,1.386294,3.962071,1 +6,3,25,1,4,327719,0,15862.76,43.31759,1,16,1,45.06499,15.21465,4.340292,0,0,64.61993,0,0,0,4,0,4,53.7,17.2,1,68.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,68.2,9.671792,1.386294,4.168523,1 +6,3,25,1,5,327719,0,15862.76,44.31759,1,16,1,136.8587,2.937388,35.29159,0,0,175.0877,0,0,0,2,18,4,53.7,17.2,1,68.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,68.2,9.671792,1.386294,5.165287,1 +6,3,25,1,1,327720,0,15862.76,40.62971,0,19,1,20.09274,0,23.69912,54.09583,0,43.79186,0,0,5,1,1,4,82.4,3.4,1,85.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.671792,1.386294,3.779448,1 +6,3,25,1,2,327720,0,15862.76,41.62971,0,19,1,30.18466,0,13.25758,269.8864,0,43.44223,0,0,19,1,0,4,82.4,3.4,1,85.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.671792,1.386294,3.771432,1 +6,3,25,1,3,327720,0,15862.76,42.62971,0,19,1,48.5479,0,0,0,0,48.5479,0,0,0,3,0,4,82.4,3.4,1,85.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.671792,1.386294,3.882551,1 +6,3,25,1,4,327720,0,15862.76,43.62971,0,19,1,17.72351,0,0,0,0,17.72351,0,0,0,1,0,4,82.4,3.4,1,85.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.671792,1.386294,2.874892,1 +6,3,25,1,5,327720,0,15862.76,44.62971,0,19,1,83.36315,10.48301,19.678,0,0,113.5241,0,0,0,6,0,4,82.4,3.4,1,85.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.671792,1.386294,4.732016,1 +6,3,25,1,1,327721,0,15862.76,14.35181,0,16,1,83.59093,0,0,0,0,83.59093,0,0,0,2,1,4,89.9,6.9,0,89.8,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,89.8,9.671792,1.386294,4.425935,1 +6,3,25,1,2,327721,0,15862.76,15.35181,0,16,1,6.155303,0,0,0,0,6.155303,0,0,0,1,0,4,89.9,6.9,0,89.8,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,89.8,9.671792,1.386294,1.817314,1 +6,3,25,1,3,327721,0,15862.76,16.35181,0,16,1,15.17122,0,0,0,0,15.17122,0,0,0,2,0,4,89.9,6.9,0,89.8,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,89.8,9.671792,1.386294,2.7194,1 +6,3,25,1,4,327721,0,15862.76,17.35181,0,16,1,37.90863,49.73218,0,0,0,87.6408,0,0,0,4,0,4,89.9,6.9,0,89.8,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,89.8,9.671792,1.386294,4.473247,1 +6,3,25,1,5,327721,0,15862.76,18.35181,0,16,1,39.35599,75.82468,0,0,0,115.1807,0,0,0,4,0,4,89.9,6.9,0,89.8,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,89.8,9.671792,1.386294,4.746502,1 +11,3,0,0,1,327724,0,8698.534,26.72416,0,14,1,110.7124,6.807072,0,0,392.8393,510.3588,1,0,0,6,0,2,71.8,6.9,0,77.4,0,100,0,0,.6931472,4.60517,0,0,0,0,0,0,77.4,9.071025,.6931472,6.235114,1 +11,3,0,0,2,327724,0,8698.534,27.72416,0,14,1,399.4744,12.13091,21.97802,0,0,433.5834,0,0,0,10,10,2,71.8,6.9,0,77.4,0,100,0,0,.6931472,4.60517,0,0,0,0,0,0,77.4,9.071025,.6931472,6.072084,1 +11,3,0,0,3,327724,0,8698.534,28.72416,0,14,1,68.48112,0,0,171.2028,861.7647,930.2458,1,0,21,5,0,2,71.8,6.9,0,77.4,0,100,0,0,.6931472,4.60517,0,0,0,0,0,0,77.4,9.071025,.6931472,6.835449,1 +11,3,0,0,1,327725,0,8698.534,20.56947,1,12,1,515.2106,27.69111,5.283412,23.40094,0,548.1851,0,0,3,13,1,2,68.1,13.8,0,54.5,0,100,0,0,.6931472,4.60517,0,0,0,1,0,0,54.5,9.071025,.6931472,6.306613,1 +11,3,0,0,2,327725,0,8698.534,21.56947,1,12,1,125.8003,9.665552,6.989966,0,0,142.4558,0,0,0,1,9,2,68.1,13.8,0,54.5,0,100,0,0,.6931472,4.60517,0,0,0,1,0,0,54.5,9.071025,.6931472,4.959032,1 +11,3,0,0,3,327725,0,8698.534,22.56947,1,12,1,30.28973,1.755926,24.14399,21.94908,0,56.18964,0,0,3,1,1,2,68.1,13.8,0,54.5,0,100,0,0,.6931472,4.60517,0,0,0,1,0,0,54.5,9.071025,.6931472,4.028732,1 +7,3,25,1,1,327728,0,4713.196,30.32991,0,12,1,18.89683,0,0,0,0,18.89683,0,0,0,2,0,4,57.4,0,0,75,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,75,8.458334,1.386294,2.938994,1 +7,3,25,1,2,327728,0,4713.196,31.32991,0,12,1,177.4496,0,0,0,0,177.4496,0,0,0,2,0,4,57.4,0,0,75,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,75,8.458334,1.386294,5.178687,1 +7,3,25,1,3,327728,0,4713.196,32.32991,0,12,1,144.54,4.170249,1.71969,0,0,150.4299,0,0,0,5,1,4,57.4,0,0,75,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,75,8.458334,1.386294,5.013497,1 +7,3,25,1,4,327728,0,4713.196,33.32991,0,12,1,19.38736,3.586662,0,0,0,22.97402,0,0,0,2,0,4,57.4,0,0,75,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,75,8.458334,1.386294,3.134364,1 +7,3,25,1,5,327728,0,4713.196,34.32991,0,12,1,7.430998,0,0,84.92569,0,7.430998,0,0,4,1,0,4,57.4,0,0,75,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,75,8.458334,1.386294,2.00566,1 +7,3,25,1,1,327729,0,4713.196,29.76865,1,12,1,614.2237,5.46476,0,0,0,619.6885,0,0,0,10,0,4,72.9,10.3,0,79.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,79.5,8.458334,1.386294,6.429217,1 +7,3,25,1,2,327729,0,4713.196,30.76865,1,12,1,5.625879,11.9925,0,0,0,17.61838,0,0,0,1,0,4,72.9,10.3,0,79.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,79.5,8.458334,1.386294,2.868942,1 +7,3,25,1,3,327729,0,4713.196,31.76865,1,12,1,1015.537,31.74549,3.439381,0,287.5064,1338.229,1,0,0,15,4,4,72.9,10.3,0,79.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,79.5,8.458334,1.386294,7.199102,1 +7,3,25,1,4,327729,0,4713.196,32.76865,1,12,1,93.44707,33.60217,0,0,0,127.0492,0,0,0,11,4,4,72.9,10.3,0,79.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,79.5,8.458334,1.386294,4.844575,1 +7,3,25,1,5,327729,0,4713.196,33.76865,1,12,1,55.90941,313.6023,0,0,0,369.5117,0,0,0,7,0,4,72.9,10.3,0,79.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,79.5,8.458334,1.386294,5.912182,1 +7,3,25,1,1,327730,0,4713.196,5.108829,0,12,1,41.36874,13.381,0,15.32176,0,54.74974,0,0,1,4,0,4,83.39137,9.967326,0,92.6,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,92.6,8.458334,1.386294,4.002773,1 +7,3,25,1,2,327730,0,4713.196,6.108829,0,12,1,6.094702,62.27848,0,28.12939,0,68.37318,0,0,2,1,0,4,83.39137,9.967326,0,92.6,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,92.6,8.458334,1.386294,4.224981,1 +7,3,25,1,3,327730,0,4713.196,7.108829,0,12,1,0,75.5675,0,0,0,75.5675,0,0,0,0,0,4,83.39137,9.967326,0,92.6,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,92.6,8.458334,1.386294,4.325026,1 +7,3,25,1,4,327730,0,4713.196,8.108829,0,12,1,12.40791,73.19504,0,85.30438,0,85.60294,0,0,4,2,0,4,83.39137,9.967326,0,92.6,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,92.6,8.458334,1.386294,4.44972,1 +7,3,25,1,5,327730,0,4713.196,9.108829,0,12,1,10.96957,101.3128,0,136.235,0,112.2824,0,0,7,2,0,4,83.39137,9.967326,0,92.6,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,92.6,8.458334,1.386294,4.721017,1 +7,3,25,1,1,327731,0,4713.196,5.842574,0,12,1,56.63943,59.60163,0,112.3596,0,116.2411,0,0,5,7,0,4,80,9.967326,0,88.9,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.458334,1.386294,4.755666,1 +7,3,25,1,2,327731,0,4713.196,6.842574,0,12,1,85.32583,74.28973,0,14.0647,0,159.6156,0,0,1,3,0,4,80,9.967326,0,88.9,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.458334,1.386294,5.072768,1 +7,3,25,1,3,327731,0,4713.196,7.842574,0,12,1,6.018917,132.9192,0,0,0,138.9381,0,0,0,1,0,4,80,9.967326,0,88.9,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.458334,1.386294,4.934029,1 +7,3,25,1,4,327731,0,4713.196,8.842573,0,12,1,94.3544,123.7262,0,85.30438,0,218.0807,0,0,4,7,0,4,80,9.967326,0,88.9,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.458334,1.386294,5.384865,1 +7,3,25,1,5,327731,0,4713.196,9.842573,0,12,1,32.37792,109.7594,1.610049,221.1606,0,143.7473,0,0,11,3,0,4,80,9.967326,0,88.9,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.458334,1.386294,4.968057,1 +11,3,0,0,1,327739,0,14627.57,43.52635,1,14,1,93.51379,27.01736,22.98264,0,0,143.5138,0,0,0,3,1,5,68.6,48.3,1,25,0,521.28,0,0,1.609438,6.256287,0,0,0,0,1,0,25,9.590732,1.609438,4.966431,1 +11,3,0,0,2,327739,0,14627.57,44.52635,1,14,1,0,13.36146,0,0,0,13.36146,0,0,0,0,0,5,68.6,48.3,1,25,0,521.28,0,0,1.609438,6.256287,0,0,0,0,1,0,25,9.590732,1.609438,2.592375,1 +11,3,0,0,3,327739,0,14627.57,45.52635,1,14,1,91.44454,20.48581,20.63629,0,0,132.5666,0,0,0,2,1,5,68.6,48.3,1,25,0,521.28,0,0,1.609438,6.256287,0,0,0,0,1,0,25,9.590732,1.609438,4.887085,1 +11,3,0,0,1,327740,0,14627.57,48.74743,0,20,1,124.9234,27.37487,42.39019,0,535.143,729.8315,1,0,0,7,1,5,47.9,20.7,1,56.8,0,521.28,0,0,1.609438,6.256287,0,0,0,1,0,0,56.8,9.590732,1.609438,6.592813,1 +11,3,0,0,2,327740,0,14627.57,49.74743,0,20,1,79.98125,0,10.78294,0,0,90.76418,0,0,0,4,1,5,47.9,20.7,1,56.8,0,521.28,0,0,1.609438,6.256287,0,0,0,1,0,0,56.8,9.590732,1.609438,4.508265,1 +11,3,0,0,3,327740,0,14627.57,50.74743,0,20,1,207.6311,22.7859,3.22442,0,0,233.6414,0,0,0,4,0,5,47.9,20.7,1,56.8,0,521.28,0,0,1.609438,6.256287,0,0,0,1,0,0,56.8,9.590732,1.609438,5.453788,1 +11,3,0,0,1,327741,0,14627.57,14.88022,0,14,1,104.188,0,26.55771,0,0,130.7457,0,0,0,4,1,5,67.2,13.8,0,53.4,0,521.28,1,0,1.609438,6.256287,0,0,0,1,0,0,53.4,9.590732,1.609438,4.873254,1 +11,3,0,0,2,327741,0,14627.57,15.88022,0,14,1,37.97468,0,0,0,0,37.97468,0,0,0,3,0,5,67.2,13.8,0,53.4,0,521.28,1,0,1.609438,6.256287,0,0,0,1,0,0,53.4,9.590732,1.609438,3.63692,1 +11,3,0,0,3,327741,0,14627.57,16.88022,0,14,1,18.48667,5.803955,23.64574,0,0,47.93637,0,0,0,1,1,5,67.2,13.8,0,53.4,0,521.28,1,0,1.609438,6.256287,0,0,0,1,0,0,53.4,9.590732,1.609438,3.869874,1 +11,3,0,0,1,327742,0,14627.57,12.96099,1,14,1,0,0,0,0,0,0,0,0,0,0,0,5,70,9.967326,0,18.5,0,521.28,1,1,1.609438,6.256287,0,0,0,0,1,0,18.5,9.590732,1.609438,,0 +11,3,0,0,2,327742,0,14627.57,13.96099,1,14,1,0,0,0,0,0,0,0,0,0,0,0,5,70,9.967326,0,18.5,0,521.28,1,1,1.609438,6.256287,0,0,0,0,1,0,18.5,9.590732,1.609438,,0 +11,3,0,0,3,327742,0,14627.57,14.96099,1,14,1,37.40327,24.07567,0,0,0,61.47894,0,0,0,4,0,5,70,9.967326,0,18.5,0,521.28,1,1,1.609438,6.256287,0,0,0,0,1,0,18.5,9.590732,1.609438,4.118695,1 +11,3,0,0,1,327743,0,14627.57,11.87406,0,14,1,33.70787,0,0,0,0,33.70787,0,0,0,2,0,5,48.3,9.967326,0,63,0,521.28,1,0,1.609438,6.256287,0,0,0,1,0,0,63,9.590732,1.609438,3.517731,1 +11,3,0,0,2,327743,0,14627.57,12.87406,0,14,1,10.78294,0,0,0,0,10.78294,0,0,0,2,0,5,48.3,9.967326,0,63,0,521.28,1,0,1.609438,6.256287,0,0,0,1,0,0,63,9.590732,1.609438,2.377965,1 +11,3,0,0,3,327743,0,14627.57,13.87406,0,14,1,236.9046,29.77214,0,0,0,266.6767,0,0,0,5,0,5,48.3,9.967326,0,63,0,521.28,1,0,1.609438,6.256287,0,0,0,1,0,0,63,9.590732,1.609438,5.586037,1 +13,3,0,0,1,327890,0,9591.202,17.6345,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,31.4,6.9,0,47.7,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,47.7,9.168706,1.386294,,0 +13,3,0,0,1,327891,0,9591.202,13.94387,0,11,1,79.05719,0,0,0,0,79.05719,0,0,0,2,0,4,64.4,0,0,56.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,56.8,9.168706,1.386294,4.370172,1 +13,3,0,0,2,327891,0,9591.202,14.94387,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,64.4,0,0,56.8,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,56.8,9.168706,1.098612,,0 +13,3,0,0,3,327891,0,9591.202,15.94387,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,64.4,0,0,56.8,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,56.8,9.168706,1.098612,,0 +13,3,0,0,1,327892,0,9591.202,12.05202,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,9.967326,0,85.2,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.168706,1.386294,,0 +13,3,0,0,2,327892,0,9591.202,13.05202,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,9.967326,0,85.2,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.168706,1.098612,,0 +13,3,0,0,3,327892,0,9591.202,14.05202,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,9.967326,0,85.2,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.168706,1.098612,,0 +13,3,0,0,1,327893,0,9591.202,48.91171,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,81.4,0,0,86.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,86.4,9.168706,1.386294,,0 +13,3,0,0,2,327893,0,9591.202,49.91171,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,81.4,0,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,86.4,9.168706,1.098612,,0 +13,3,0,0,3,327893,0,9591.202,50.91171,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,81.4,0,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,86.4,9.168706,1.098612,,0 +15,3,95,0,1,327894,0,9768.328,30.08898,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,64.9,10.3,0,63.6,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,63.6,9.187003,1.609438,,0 +15,3,95,0,2,327894,0,9768.328,31.08898,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,64.9,10.3,0,63.6,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,63.6,9.187003,1.609438,,0 +15,3,95,0,3,327894,0,9768.328,32.08898,1,12,1,6.501951,0,0,0,0,6.501951,0,0,0,1,0,5,64.9,10.3,0,63.6,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,63.6,9.187003,1.609438,1.872102,1 +15,3,95,0,1,327895,0,9768.328,8.060233,1,12,1,8.243174,2.035033,0,0,0,10.27821,0,0,0,1,0,5,90,9.967326,0,88.9,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.187003,1.609438,2.330026,1 +15,3,95,0,2,327895,0,9768.328,9.060233,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,90,9.967326,0,88.9,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.187003,1.609438,,0 +15,3,95,0,3,327895,0,9768.328,10.06023,1,12,1,8.669268,0,0,0,0,8.669268,0,0,0,1,0,5,90,9.967326,0,88.9,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.187003,1.609438,2.159784,1 +15,3,95,0,1,327896,0,9768.328,31.03628,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,60.6,0,0,71.6,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.187003,1.609438,,0 +15,3,95,0,2,327896,0,9768.328,32.03628,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,60.6,0,0,71.6,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.187003,1.609438,,0 +15,3,95,0,3,327896,0,9768.328,33.03628,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,60.6,0,0,71.6,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.187003,1.609438,,0 +15,3,95,0,1,327897,0,9768.328,6.746064,0,12,1,18.54714,0,0,0,0,18.54714,0,0,0,1,1,5,71.7,9.967326,0,74.1,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,74.1,9.187003,1.609438,2.920316,1 +15,3,95,0,2,327897,0,9768.328,7.746064,0,12,1,24.62121,4.573864,0,0,0,29.19508,0,0,0,2,1,5,71.7,9.967326,0,74.1,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,74.1,9.187003,1.609438,3.374,1 +15,3,95,0,3,327897,0,9768.328,8.746064,0,12,1,8.669268,0,19.07239,0,0,27.74166,0,0,0,1,0,5,71.7,9.967326,0,74.1,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,74.1,9.187003,1.609438,3.322935,1 +15,3,95,0,1,327898,0,9768.328,5.103354,0,12,1,13.91036,0,0,0,0,13.91036,0,0,0,1,0,5,95,9.967326,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.187003,1.609438,2.632634,1 +15,3,95,0,2,327898,0,9768.328,6.103354,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,95,9.967326,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.187003,1.609438,,0 +15,3,95,0,3,327898,0,9768.328,7.103354,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,95,9.967326,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,9.187003,1.609438,,0 +15,3,95,1,1,327899,0,6324.34,2.373717,1,13,1,19.4745,7.027306,0,0,0,26.5018,0,0,0,2,0,4,83.39137,9.967326,0,81.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,81.5,8.752319,1.386294,3.277213,1 +15,3,95,1,2,327899,0,6324.34,3.373717,1,13,1,10.41667,3.499053,0,0,0,13.91572,0,0,0,2,0,4,83.39137,9.967326,0,81.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,81.5,8.752319,1.386294,2.633019,1 +15,3,95,1,3,327899,0,6324.34,4.373717,1,13,1,26.0078,2.717815,0,43.34634,0,28.72562,0,0,1,1,1,4,83.39137,9.967326,0,81.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,81.5,8.752319,1.386294,3.357789,1 +15,3,95,1,1,327900,0,6324.34,26.17933,1,13,1,16.22875,17.8001,0,0,0,34.02885,0,0,0,1,0,4,81.4,10.3,0,85.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,8.752319,1.386294,3.527209,1 +15,3,95,1,2,327900,0,6324.34,27.17933,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,81.4,10.3,0,85.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,8.752319,1.386294,,0 +15,3,95,1,3,327900,0,6324.34,28.17933,1,13,1,543.7625,11.7772,0,0,534.7637,1090.303,1,0,0,4,1,4,81.4,10.3,0,85.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,8.752319,1.386294,6.994211,1 +15,3,95,1,1,327901,0,6324.34,27.81383,0,12,1,38.63988,0,27.30551,0,0,65.94539,0,0,0,3,1,4,84.6,3.4,0,73.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,73.9,8.752319,1.386294,4.188827,1 +15,3,95,1,2,327901,0,6324.34,28.81383,0,12,1,30.77652,0,0,0,0,30.77652,0,0,0,3,0,4,84.6,3.4,0,73.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,73.9,8.752319,1.386294,3.426752,1 +15,3,95,1,3,327901,0,6324.34,29.81383,0,12,1,10.83658,0,0,0,0,10.83658,0,0,0,1,0,4,84.6,3.4,0,73.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,73.9,8.752319,1.386294,2.382928,1 +15,3,95,1,1,327902,0,6324.34,2.373717,1,13,1,10.30397,8.325605,0,0,0,18.62957,0,0,0,2,0,4,83.39137,9.967326,0,66.7,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,66.7,8.752319,1.386294,2.92475,1 +15,3,95,1,2,327902,0,6324.34,3.373717,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,83.39137,9.967326,0,66.7,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,66.7,8.752319,1.386294,,0 +15,3,95,1,3,327902,0,6324.34,4.373717,1,13,1,31.20936,2.336368,0,43.34634,0,33.54573,0,0,1,2,1,4,83.39137,9.967326,0,66.7,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,66.7,8.752319,1.386294,3.51291,1 +11,3,0,1,1,327933,0,8811.144,33.35798,1,12,1,80.37094,39.31994,12.87996,0,635.0541,767.6249,1,0,0,7,1,5,67,17.2,0,73.9,0,0,0,0,1.609438,0,0,0,0,0,0,0,73.9,9.083886,1.609438,6.643301,1 +11,3,0,1,2,327933,0,8811.144,34.35798,1,12,1,22.72727,15.37405,0,0,473.7926,511.894,1,0,0,3,0,5,67,17.2,0,73.9,0,0,0,0,1.609438,0,0,0,0,0,0,0,73.9,9.083886,1.609438,6.238118,1 +11,3,0,1,3,327933,0,8811.144,35.35798,1,12,1,35.37061,9.718248,21.23971,0,0,66.32857,0,0,0,3,1,5,67,17.2,0,73.9,0,0,0,0,1.609438,0,0,0,0,0,0,0,73.9,9.083886,1.609438,4.194621,1 +11,3,0,1,4,327933,0,8811.144,36.35798,1,12,1,28.12131,8.011028,0,0,0,36.13234,0,0,0,2,0,5,67,17.2,0,73.9,0,0,0,0,1.609438,0,0,0,0,0,0,0,73.9,9.083886,1.609438,3.587188,1 +11,3,0,1,5,327933,0,8811.144,37.35798,1,12,1,220.4293,16.1288,23.23792,0,0,259.7961,0,0,0,4,3,5,67,17.2,0,73.9,0,0,0,0,1.609438,0,0,0,0,0,0,0,73.9,9.083886,1.609438,5.559897,1 +11,3,0,1,1,327934,0,8811.144,34.55715,0,9,1,73.87944,14.70376,0,0,0,88.58321,0,0,0,6,1,5,76.1,3.4,0,53.4,0,0,0,0,1.609438,0,0,0,0,1,0,0,53.4,9.083886,1.609438,4.483943,1 +11,3,0,1,2,327934,0,8811.144,35.55715,0,9,1,17.99242,28.02083,0,0,0,46.01326,0,0,0,6,0,5,76.1,3.4,0,53.4,0,0,0,0,1.609438,0,0,0,0,1,0,0,53.4,9.083886,1.609438,3.828929,1 +11,3,0,1,3,327934,0,8811.144,36.55715,0,9,1,13.87083,4.117902,0,0,0,17.98873,0,0,0,1,0,5,76.1,3.4,0,53.4,0,0,0,0,1.609438,0,0,0,0,1,0,0,53.4,9.083886,1.609438,2.889745,1 +11,3,0,1,4,327934,0,8811.144,37.55715,0,9,1,74.24183,16.31745,0,0,980.5869,1071.146,1,0,0,2,0,5,76.1,3.4,0,53.4,0,0,0,0,1.609438,0,0,0,0,1,0,0,53.4,9.083886,1.609438,6.976484,1 +11,3,0,1,5,327934,0,8811.144,38.55715,0,9,1,26.47585,27.74955,23.25581,0,0,77.48122,0,0,0,3,1,5,76.1,3.4,0,53.4,0,0,0,0,1.609438,0,0,0,0,1,0,0,53.4,9.083886,1.609438,4.350036,1 +11,3,0,1,1,327935,0,8811.144,11.82478,0,12,1,25.55384,14.69861,0,0,0,40.25245,0,0,0,3,0,5,91.7,9.967326,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.083886,1.609438,3.695171,1 +11,3,0,1,2,327935,0,8811.144,12.82478,0,12,1,66.95076,0,.9469697,0,0,67.89773,0,0,0,3,0,5,91.7,9.967326,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.083886,1.609438,4.218003,1 +11,3,0,1,3,327935,0,8811.144,13.82478,0,12,1,259.6012,16.19853,0,0,383.3116,659.1114,1,0,0,13,1,5,91.7,9.967326,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.083886,1.609438,6.490892,1 +11,3,0,1,4,327935,0,8811.144,14.82478,0,12,1,74.75384,0,.7877117,0,0,75.54155,0,0,0,4,1,5,91.7,9.967326,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.083886,1.609438,4.324683,1 +11,3,0,1,5,327935,0,8811.144,15.82478,0,12,1,39.57066,17.27012,0,0,0,56.84079,0,0,0,6,0,5,91.7,9.967326,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.083886,1.609438,4.040254,1 +11,3,0,1,1,327936,0,8811.144,9.924709,1,12,1,17.00154,0,26.27512,0,0,43.27666,0,0,0,0,1,5,86.7,9.967326,0,77.8,0,0,1,1,1.609438,0,0,0,0,0,0,0,77.8,9.083886,1.609438,3.767613,1 +11,3,0,1,2,327936,0,8811.144,10.92471,1,12,1,31.1553,10.26515,0,0,729.91,771.3305,1,0,0,2,0,5,86.7,9.967326,0,77.8,0,0,1,1,1.609438,0,0,0,0,0,0,0,77.8,9.083886,1.609438,6.648117,1 +11,3,0,1,3,327936,0,8811.144,11.92471,1,12,1,79.3238,12.07195,23.84048,0,420.3338,535.57,1,0,0,6,1,5,86.7,9.967326,0,77.8,0,0,1,1,1.609438,0,0,0,0,0,0,0,77.8,9.083886,1.609438,6.283331,1 +11,3,0,1,4,327936,0,8811.144,12.92471,1,12,1,163.9228,0,.7877117,189.0508,0,164.7105,0,0,8,8,0,5,86.7,9.967326,0,77.8,0,0,1,1,1.609438,0,0,0,0,0,0,0,77.8,9.083886,1.609438,5.104189,1 +11,3,0,1,5,327936,0,8811.144,13.92471,1,12,1,433.8462,16.50447,22.71199,0,758.0179,1231.08,2,0,0,14,1,5,86.7,9.967326,0,77.8,0,0,1,1,1.609438,0,0,0,0,0,0,0,77.8,9.083886,1.609438,7.115647,1 +11,3,0,1,1,327937,0,8811.144,13.73306,0,12,1,13.91036,.7727975,0,0,0,14.68315,0,0,0,2,0,5,73.3,9.967326,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.083886,1.609438,2.686701,1 +11,3,0,1,2,327937,0,8811.144,14.73306,0,12,1,4.734848,2.840909,0,0,0,7.575758,0,0,0,1,0,5,73.3,9.967326,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.083886,1.609438,2.024953,1 +11,3,0,1,3,327937,0,8811.144,15.73306,0,12,1,119.3325,8.105765,0,0,438.6216,566.0598,1,0,0,9,1,5,73.3,9.967326,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.083886,1.609438,6.3387,1 +11,3,0,1,4,327937,0,8811.144,16.73306,0,12,1,337.4675,13.60772,0,459.8543,3016.766,3367.842,1,0,16,8,18,5,73.3,9.967326,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.083886,1.609438,8.122027,1 +11,3,0,1,5,327937,0,8811.144,17.73306,0,12,1,122.8623,2.075134,17.35242,150.2683,0,142.2898,0,0,7,6,1,5,73.3,9.967326,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.083886,1.609438,4.957866,1 +13,3,0,1,1,327939,0,7542.522,42.20123,0,9,1,12.36476,19.50026,0,0,400.1133,431.9784,1,0,0,2,0,4,72.9,3.4,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,71.6,8.928445,1.386294,6.068376,1 +13,3,0,1,2,327939,0,7542.522,43.20123,0,9,1,10.89015,0,25.0947,0,0,35.98485,0,0,0,0,1,4,72.9,3.4,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,71.6,8.928445,1.386294,3.583098,1 +13,3,0,1,3,327939,0,7542.522,44.20123,0,9,1,99.52319,0,0,0,0,99.52319,0,0,0,1,0,4,72.9,3.4,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,71.6,8.928445,1.386294,4.600391,1 +13,3,0,1,4,327939,0,7542.522,45.20123,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,72.9,3.4,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,71.6,8.928445,1.386294,,0 +13,3,0,1,5,327939,0,7542.522,46.20123,0,9,1,23.25581,1.592129,0,0,0,24.84794,0,0,0,2,0,4,72.9,3.4,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,71.6,8.928445,1.386294,3.212775,1 +13,3,0,1,1,327940,0,7542.522,37.71389,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,70.2,3.4,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,72.7,8.928445,1.386294,,0 +13,3,0,1,2,327940,0,7542.522,38.71389,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,70.2,3.4,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,72.7,8.928445,1.386294,,0 +13,3,0,1,3,327940,0,7542.522,39.71389,1,10,1,91.28738,0,0,0,0,91.28738,0,0,0,4,0,4,70.2,3.4,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,72.7,8.928445,1.386294,4.514013,1 +13,3,0,1,4,327940,0,7542.522,40.71389,1,10,1,0,2.993304,0,0,0,2.993304,0,0,0,0,0,4,70.2,3.4,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,72.7,8.928445,1.386294,1.096378,1 +13,3,0,1,5,327940,0,7542.522,41.71389,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,70.2,3.4,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,72.7,8.928445,1.386294,,0 +13,3,0,1,1,327941,0,7542.522,15.52361,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,76.1,3.4,0,77.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,8.928445,1.386294,,0 +13,3,0,1,2,327941,0,7542.522,16.52361,0,10,1,28.83523,2.556818,25.0947,0,0,56.48674,0,0,0,2,1,4,76.1,3.4,0,77.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,8.928445,1.386294,4.034006,1 +13,3,0,1,3,327941,0,7542.522,17.52361,0,10,1,16.12484,0,0,0,0,16.12484,0,0,0,1,0,4,76.1,3.4,0,77.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,8.928445,1.386294,2.780361,1 +13,3,0,1,4,327941,0,7542.522,18.52361,0,10,1,48.87751,2.028358,0,0,0,50.90587,0,0,0,1,0,4,76.1,3.4,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,8.928445,1.386294,3.929978,1 +13,3,0,1,5,327941,0,7542.522,19.52361,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,76.1,3.4,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,8.928445,1.386294,,0 +13,3,0,1,1,327942,0,7542.522,9.89733,1,10,1,5.151984,2.575992,0,0,0,7.727975,0,0,0,1,0,4,80,9.967326,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,1,0,92.6,8.928445,1.386294,2.044847,1 +13,3,0,1,2,327942,0,7542.522,10.89733,1,10,1,5.681818,0,0,0,0,5.681818,0,0,0,1,0,4,80,9.967326,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,1,0,92.6,8.928445,1.386294,1.737271,1 +13,3,0,1,3,327942,0,7542.522,11.89733,1,10,1,13.0039,5.158214,0,0,0,18.16212,0,0,0,3,0,4,80,9.967326,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,1,0,92.6,8.928445,1.386294,2.899338,1 +13,3,0,1,4,327942,0,7542.522,12.89733,1,10,1,7.877117,.9846396,0,0,0,8.861756,0,0,0,1,0,4,80,9.967326,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,1,0,92.6,8.928445,1.386294,2.181745,1 +13,3,0,1,5,327942,0,7542.522,13.89733,1,10,1,57.45975,1.663685,7.298748,0,0,66.42218,0,0,0,3,0,4,80,9.967326,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,1,0,92.6,8.928445,1.386294,4.196031,1 +10,3,50,1,1,328003,0,7545.455,37.56331,1,12,1,133.9632,11.56793,0,0,396.1645,541.6956,1,0,0,6,0,4,86.7,20.7,0,92,1000,0,0,0,1.386294,0,0,3.931826,7.600903,0,0,0,92,8.928833,1.386294,6.294704,1 +10,3,50,1,2,328003,0,7545.455,38.56331,1,12,1,26.2541,2.798875,0,14.0647,0,29.05298,0,0,1,1,0,4,86.7,20.7,0,92,1000,0,0,0,1.386294,0,0,3.931826,7.600903,0,0,0,92,8.928833,1.386294,3.369121,1 +10,3,50,1,3,328003,0,7545.455,39.56331,1,12,1,42.82029,1.878762,0,0,0,44.69905,0,0,0,4,0,4,86.7,20.7,0,92,1000,0,0,0,1.386294,0,0,3.931826,7.600903,0,0,0,92,8.928833,1.386294,3.799952,1 +10,3,50,1,4,328003,0,7545.455,40.56331,1,12,1,220.822,12.64056,0,0,0,233.4626,0,0,0,5,0,4,86.7,20.7,0,92,1000,0,0,0,1.386294,0,0,3.931826,7.600903,0,0,0,92,8.928833,1.386294,5.453022,1 +10,3,50,1,5,328003,0,7545.455,41.56331,1,12,1,34.67799,10.16277,35.03185,0,0,79.87261,0,0,0,4,1,4,86.7,20.7,0,92,1000,0,0,0,1.386294,0,0,3.931826,7.600903,0,0,0,92,8.928833,1.386294,4.380433,1 +10,3,50,1,1,328004,0,7545.455,14.98152,0,12,1,2.042901,0,0,0,0,2.042901,0,0,0,0,0,4,84.6,3.4,0,90.9,1000,0,1,0,1.386294,0,0,3.931826,7.600903,0,0,0,90.9,8.928833,1.386294,.7143708,1 +10,3,50,1,2,328004,0,7545.455,15.98152,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,84.6,3.4,0,90.9,1000,0,1,0,1.386294,0,0,3.931826,7.600903,0,0,0,90.9,8.928833,1.386294,,0 +10,3,50,1,3,328004,0,7545.455,16.98152,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,84.6,3.4,0,90.9,1000,0,1,0,1.386294,0,0,3.931826,7.600903,0,0,0,90.9,8.928833,1.386294,,0 +10,3,50,1,4,328004,0,7545.455,17.98152,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,84.6,3.4,0,90.9,1000,0,1,0,1.386294,0,0,3.931826,7.600903,0,0,0,90.9,8.928833,1.386294,,0 +10,3,50,1,5,328004,0,7545.455,18.98152,0,12,1,8.846426,0,0,0,0,8.846426,0,0,0,1,0,4,84.6,3.4,0,90.9,1000,0,0,0,1.386294,0,0,3.931826,7.600903,0,0,0,90.9,8.928833,1.386294,2.180013,1 +10,3,50,1,1,328005,0,7545.455,13.06229,1,12,1,87.84474,10.02043,0,0,0,97.86517,0,0,0,10,0,4,95,9.967326,0,100,1000,0,1,1,1.386294,0,0,3.931826,7.600903,0,0,0,100,8.928833,1.386294,4.583591,1 +10,3,50,1,2,328005,0,7545.455,14.06229,1,12,1,118.6123,0,25.78528,0,140.7173,285.1149,1,0,0,11,1,4,95,9.967326,0,100,1000,0,1,1,1.386294,0,0,3.931826,7.600903,0,0,0,100,8.928833,1.386294,5.652892,1 +10,3,50,1,3,328005,0,7545.455,15.06229,1,12,1,52.88048,.9845228,0,0,0,53.86501,0,0,0,6,0,4,95,9.967326,0,100,1000,0,1,1,1.386294,0,0,3.931826,7.600903,0,0,0,100,8.928833,1.386294,3.986481,1 +10,3,50,1,4,328005,0,7545.455,16.06229,1,12,1,35.67274,8.801861,27.1423,0,0,71.61691,0,0,0,2,1,4,95,9.967326,0,100,1000,0,1,1,1.386294,0,0,3.931826,7.600903,0,0,0,100,8.928833,1.386294,4.271331,1 +10,3,50,1,5,328005,0,7545.455,17.06229,1,12,1,45.64756,7.00637,0,0,0,52.65393,0,0,0,2,0,4,95,9.967326,0,100,1000,0,1,1,1.386294,0,0,3.931826,7.600903,0,0,0,100,8.928833,1.386294,3.963741,1 +10,3,50,1,1,328006,0,7545.455,41.63176,0,12,1,24.51481,0,0,0,0,24.51481,0,0,0,0,5,4,83,6.9,0,97.7,1000,0,0,0,1.386294,0,0,3.931826,7.600903,0,0,0,97.7,8.928833,1.386294,3.199277,1 +10,3,50,1,2,328006,0,7545.455,42.63176,0,12,1,34.69292,4.050633,.4688233,0,0,39.21238,0,0,0,2,0,4,83,6.9,0,97.7,1000,0,0,0,1.386294,0,0,3.931826,7.600903,0,0,0,97.7,8.928833,1.386294,3.668993,1 +10,3,50,1,3,328006,0,7545.455,43.63176,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83,6.9,0,97.7,1000,0,0,0,1.386294,0,0,3.931826,7.600903,0,0,0,97.7,8.928833,1.386294,,0 +10,3,50,1,4,328006,0,7545.455,44.63176,0,12,1,108.1815,0,0,0,0,108.1815,0,0,0,2,0,4,83,6.9,0,97.7,1000,0,0,0,1.386294,0,0,3.931826,7.600903,0,0,0,97.7,8.928833,1.386294,4.68381,1 +10,3,50,1,5,328006,0,7545.455,45.63176,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83,6.9,0,97.7,1000,0,0,0,1.386294,0,0,3.931826,7.600903,0,0,0,97.7,8.928833,1.386294,,0 +13,3,0,1,1,328029,0,6579.355,9.880903,0,12,1,15.97115,0,0,0,0,15.97115,0,0,0,1,0,4,75,9.967326,0,81.5,450,0,1,0,1.386294,0,1,4.564348,6.160541,0,0,0,81.5,8.791844,1.386294,2.770784,1 +13,3,0,1,2,328029,0,6579.355,10.8809,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,75,9.967326,0,81.5,450,0,1,0,1.386294,0,1,4.564348,6.160541,0,0,0,81.5,8.791844,1.386294,,0 +13,3,0,1,3,328029,0,6579.355,11.8809,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,75,9.967326,0,81.5,450,0,1,0,1.386294,0,1,4.564348,6.160541,0,0,0,81.5,8.791844,1.386294,,0 +13,3,0,1,1,328030,0,6579.355,34.00137,1,12,1,7.727975,0,0,0,0,7.727975,0,0,0,1,0,4,76.1,10.3,0,85.2,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,85.2,8.791844,1.386294,2.044847,1 +13,3,0,1,2,328030,0,6579.355,35.00137,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.1,10.3,0,85.2,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,85.2,8.791844,1.386294,,0 +13,3,0,1,3,328030,0,6579.355,36.00137,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.1,10.3,0,85.2,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,85.2,8.791844,1.386294,,0 +13,3,0,1,1,328031,0,6579.355,11.66324,0,12,1,37.55796,0,0,0,0,37.55796,0,0,0,2,0,4,90,9.967326,0,96.3,450,0,1,0,1.386294,0,1,4.564348,6.160541,0,0,0,96.3,8.791844,1.386294,3.625885,1 +13,3,0,1,2,328031,0,6579.355,12.66324,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,90,9.967326,0,96.3,450,0,1,0,1.386294,0,1,4.564348,6.160541,0,0,0,96.3,8.791844,1.386294,,0 +13,3,0,1,3,328031,0,6579.355,13.66324,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,90,9.967326,0,96.3,450,0,1,0,1.386294,0,1,4.564348,6.160541,0,0,0,96.3,8.791844,1.386294,,0 +13,3,0,1,1,328032,0,6579.355,34.34086,0,12,1,15.14683,0,0,0,0,15.14683,0,0,0,1,0,4,79.8,6.9,0,45.5,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,45.5,8.791844,1.386294,2.717791,1 +13,3,0,1,2,328032,0,6579.355,35.34086,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,6.9,0,45.5,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,45.5,8.791844,1.386294,,0 +13,3,0,1,3,328032,0,6579.355,36.34086,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,6.9,0,45.5,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,45.5,8.791844,1.386294,,0 +11,3,0,1,1,328077,0,9701.466,.7939767,0,12,1,59.86605,10.69552,0,0,0,70.56157,0,0,0,5,0,3,83.39137,9.967326,0,100,0,78,1,0,1.098612,4.356709,0,0,0,0,0,0,100,9.180136,1.098612,4.256485,1 +11,3,0,1,2,328077,0,9701.466,1.793977,0,12,1,5.681818,0,0,0,0,5.681818,0,0,0,1,0,3,83.39137,9.967326,0,100,0,78,1,0,1.098612,4.356709,0,0,0,0,0,0,100,9.180136,1.098612,1.737271,1 +11,3,0,1,3,328077,0,9701.466,2.793977,0,12,1,24.27395,2.709146,0,0,0,26.9831,0,0,0,3,0,3,83.39137,9.967326,0,100,0,78,1,0,1.098612,4.356709,0,0,0,0,0,0,100,9.180136,1.098612,3.295211,1 +11,3,0,1,1,328078,0,9701.466,31.58658,0,12,1,98.91808,6.666667,0,0,0,105.5847,0,0,0,3,4,3,79.8,6.9,0,76.1,0,78,0,0,1.098612,4.356709,0,0,0,0,0,0,76.1,9.180136,1.098612,4.659514,1 +11,3,0,1,2,328078,0,9701.466,32.58659,0,12,1,0,0,8.996212,0,0,8.996212,0,0,0,0,0,3,79.8,6.9,0,76.1,0,78,0,0,1.098612,4.356709,0,0,0,0,0,0,76.1,9.180136,1.098612,2.196804,1 +11,3,0,1,3,328078,0,9701.466,33.58659,0,12,1,13.87083,3.337668,0,0,0,17.2085,0,0,0,2,0,3,79.8,6.9,0,76.1,0,78,0,0,1.098612,4.356709,0,0,0,0,0,0,76.1,9.180136,1.098612,2.845403,1 +11,3,0,1,1,328079,0,9701.466,23.50445,1,12,1,19.57754,0,0,0,0,19.57754,0,0,0,2,0,3,88.8,6.9,0,71.6,0,78,0,0,1.098612,4.356709,0,0,0,0,0,0,71.6,9.180136,1.098612,2.974383,1 +11,3,0,1,2,328079,0,9701.466,24.50445,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,88.8,6.9,0,71.6,0,78,0,0,1.098612,4.356709,0,0,0,0,0,0,71.6,9.180136,1.098612,,0 +11,3,0,1,3,328079,0,9701.466,25.50445,1,12,1,0,.9059384,25.03251,0,0,25.93845,0,0,0,0,0,3,88.8,6.9,0,71.6,0,78,0,0,1.098612,4.356709,0,0,0,0,0,0,71.6,9.180136,1.098612,3.255726,1 +11,3,0,0,1,328097,0,5879.179,48.5421,1,14,1,77.07368,142.5554,26.79031,0,0,246.4194,0,0,0,6,1,2,85.6,24.1,1,73.9,0,765.6,0,0,.6931472,6.64066,0,0,0,1,0,0,73.9,8.679342,.6931472,5.507035,1 +11,3,0,0,2,328097,0,5879.179,49.5421,1,14,1,60.13258,102.0597,10.89015,0,1940.151,2113.234,2,0,0,4,1,2,85.6,24.1,1,73.9,0,765.6,0,0,.6931472,6.64066,0,0,0,1,0,0,73.9,8.679342,.6931472,7.655975,1 +11,3,0,0,3,328097,0,5879.179,50.5421,1,14,1,119.3325,110.6849,35.7694,0,0,265.7867,0,0,0,7,1,2,85.6,24.1,1,73.9,0,765.6,0,0,.6931472,6.64066,0,0,0,1,0,0,73.9,8.679342,.6931472,5.582694,1 +11,3,0,0,1,328098,0,5879.179,49.22656,0,12,1,14.42555,0,0,0,0,14.42555,0,0,0,0,0,2,86.2,0,0,85.2,0,765.6,0,0,.6931472,6.64066,0,0,0,0,0,0,85.2,8.679342,.6931472,2.669001,1 +11,3,0,0,2,328098,0,5879.179,50.22656,0,12,1,64.39394,61.10322,24.62121,0,0,150.1184,0,0,0,10,1,2,86.2,0,0,85.2,0,765.6,0,0,.6931472,6.64066,0,0,0,0,0,0,85.2,8.679342,.6931472,5.011424,1 +11,3,0,0,3,328098,0,5879.179,51.22656,0,12,1,67.18682,87.92805,10.83658,0,0,165.9514,0,0,0,11,1,2,86.2,0,0,85.2,0,765.6,0,0,.6931472,6.64066,0,0,0,0,0,0,85.2,8.679342,.6931472,5.111695,1 +11,3,0,1,1,328163,0,10906.75,56.86516,0,11,1,30.3967,14.72952,35.54869,0,0,80.67491,0,0,0,3,1,2,81.4,13.8,0,68.2,0,0,0,0,.6931472,0,0,0,0,1,0,0,68.2,9.297229,.6931472,4.390428,1 +11,3,0,1,2,328163,0,10906.75,57.86516,0,11,1,76.23106,13.70739,0,0,0,89.93845,0,0,0,4,0,2,81.4,13.8,0,68.2,0,0,0,0,.6931472,0,0,0,0,1,0,0,68.2,9.297229,.6931472,4.499125,1 +11,3,0,1,3,328163,0,10906.75,58.86516,0,11,1,59.29779,16.88773,30.34244,0,0,106.528,0,0,0,4,1,2,81.4,13.8,0,68.2,0,0,0,0,.6931472,0,0,0,0,1,0,0,68.2,9.297229,.6931472,4.668407,1 +11,3,0,1,1,328164,0,10906.75,17.51403,1,11,1,10.30397,2.833591,0,0,0,13.13756,0,0,0,1,0,2,55.9,3.4,0,81.8,0,0,1,1,.6931472,0,0,0,0,0,0,0,81.8,9.297229,.6931472,2.575475,1 +11,3,0,1,2,328164,0,10906.75,18.51403,1,11,1,0,0,0,0,0,0,0,0,0,0,0,2,55.9,3.4,0,81.8,0,0,0,0,.6931472,0,0,0,0,0,0,0,81.8,9.297229,.6931472,,0 +11,3,0,1,3,328164,0,10906.75,19.51403,1,11,1,275.6393,8.39185,0,0,0,284.0312,0,0,0,5,0,2,55.9,3.4,0,81.8,0,0,0,0,.6931472,0,0,0,0,0,0,0,81.8,9.297229,.6931472,5.649084,1 +16,3,95,0,1,328270,0,5283.871,13.01027,0,9,1,5.107252,0,0,0,0,5.107252,0,0,0,1,0,3,70,9.967326,0,66.7,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,66.7,8.572603,1.098612,1.630661,1 +16,3,95,0,2,328270,0,5283.871,14.01027,0,9,1,4.688232,0,0,0,0,4.688232,0,0,0,1,0,3,70,9.967326,0,66.7,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,66.7,8.572603,1.098612,1.545056,1 +16,3,95,0,3,328270,0,5283.871,15.01027,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,70,9.967326,0,66.7,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,66.7,8.572603,1.098612,,0 +16,3,95,0,1,328271,0,5283.871,15.03354,1,9,1,92.21144,12.1144,0,0,0,104.3258,0,0,0,6,0,3,65.4,6.9,1,42,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,1,0,0,42,8.572603,1.098612,4.647519,1 +16,3,95,0,2,328271,0,5283.871,16.03354,1,9,1,66.10408,2.33474,0,0,0,68.43882,0,0,0,4,0,3,65.4,6.9,1,42,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,1,0,0,42,8.572603,1.098612,4.22594,1 +16,3,95,0,3,328271,0,5283.871,17.03354,1,9,1,96.21668,3.396389,0,0,0,99.61307,0,0,0,2,0,3,65.4,6.9,1,42,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,1,0,0,42,8.572603,1.098612,4.601294,1 +16,3,95,0,1,328272,0,5283.871,41.99863,1,9,1,158.8355,30.87334,0,20.42901,1112.84,1302.548,1,0,4,10,17,3,73.4,24.1,0,56.8,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,1,0,56.8,8.572603,1.098612,7.172078,1 +16,3,95,0,2,328272,0,5283.871,42.99863,1,9,1,35.63057,48.12471,0,0,0,83.75527,0,0,0,2,0,3,73.4,24.1,0,56.8,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,1,0,56.8,8.572603,1.098612,4.427899,1 +16,3,95,0,3,328272,0,5283.871,43.99863,1,9,1,231.5133,60.5761,0,0,1079.359,1371.449,2,0,0,11,5,3,73.4,24.1,0,56.8,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,1,0,56.8,8.572603,1.098612,7.223623,1 +16,3,95,0,1,328273,0,7437.22,22.14921,1,12,1,11.23596,30.2094,0,0,0,41.44535,0,0,0,2,0,1,69.7,6.9,0,69.3,780,780,0,0,0,6.659294,0,4.564348,6.710587,0,0,0,69.3,8.914387,0,3.724376,1 +16,3,95,0,2,328273,0,7437.22,23.14921,1,12,1,79.23113,23.65213,0,0,0,102.8833,0,0,0,6,1,1,69.7,6.9,0,69.3,780,780,0,0,0,6.659294,0,4.564348,6.710587,0,0,0,69.3,8.914387,0,4.633595,1 +16,3,95,0,3,328273,0,7437.22,24.14921,1,12,1,21.49613,36.75838,0,0,0,58.25451,0,0,0,2,1,1,69.7,6.9,0,69.3,780,780,0,0,0,6.659294,0,4.564348,6.710587,0,0,0,69.3,8.914387,0,4.064822,1 +16,3,95,0,1,328274,0,4300.88,19.8193,0,10,1,44.43309,3.064351,0,0,1261.655,1309.152,2,0,0,5,0,1,77.7,6.9,0,71.6,840,0,0,0,0,0,0,4.564348,6.784695,0,0,0,71.6,8.366807,0,7.177135,1 +16,3,95,0,2,328274,0,4300.88,20.8193,0,10,1,86.7323,8.148149,0,0,545.2602,640.1406,1,0,0,12,0,1,77.7,6.9,0,71.6,840,0,0,0,0,0,0,4.564348,6.784695,0,0,0,71.6,8.366807,0,6.461688,1 +16,3,95,0,3,328274,0,4300.88,21.8193,0,10,1,45.14188,2.579536,0,0,0,47.72141,0,0,0,2,0,1,77.7,6.9,0,71.6,840,0,0,0,0,0,0,4.564348,6.784695,0,0,0,71.6,8.366807,0,3.86538,1 +13,3,0,1,1,328291,0,1436.95,19.46064,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,63.8,3.4,0,77.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,77.3,7.270974,0,,0 +13,3,0,1,2,328291,0,1436.95,20.46064,1,12,1,0,1.40647,0,0,0,1.40647,0,0,0,0,0,1,63.8,3.4,0,77.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,77.3,7.270974,0,.3410828,1 +13,3,0,1,1,328293,0,6015.249,24.69268,0,12,1,21.34831,0,0,0,0,21.34831,0,0,0,1,0,1,58,3.4,0,90.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,90.9,8.702219,0,3.060973,1 +13,3,0,1,2,328293,0,6015.249,25.69268,0,12,1,0,.5860291,0,0,0,.5860291,0,0,0,0,0,1,58,3.4,0,90.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,90.9,8.702219,0,-.5343859,1 +13,3,0,1,3,328293,0,6015.249,26.69268,0,12,1,30.48151,0,0,0,0,30.48151,0,0,0,2,0,1,58,3.4,0,90.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,90.9,8.702219,0,3.41712,1 +13,3,0,1,4,328293,0,6015.249,27.69268,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,58,3.4,0,90.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,90.9,8.702219,0,,0 +13,3,0,1,5,328293,0,6015.249,28.69268,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,58,3.4,0,90.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,90.9,8.702219,0,,0 +13,3,0,0,1,328298,0,5843.402,61.85079,1,8,1,22.77328,.8856275,0,0,0,23.65891,0,0,0,2,0,1,74.46748,9.967326,.1572505,,150,211.2,0,0,0,5.352806,1,4.564348,5.061929,1,0,0,72.06626,8.67324,0,3.16374,1 +13,3,0,0,2,328298,0,5843.402,62.85079,1,8,1,50.34965,1.445221,0,0,0,51.79487,0,0,0,3,0,1,74.46748,9.967326,.1572505,,150,211.2,0,0,0,5.352806,1,4.564348,5.061929,1,0,0,72.06626,8.67324,0,3.947291,1 +13,3,0,0,3,328298,0,5843.402,63.85079,1,8,1,93.33048,13.83925,0,0,0,107.1697,0,0,0,7,0,1,74.46748,9.967326,.1572505,,150,211.2,0,0,0,5.352806,1,4.564348,5.061929,1,0,0,72.06626,8.67324,0,4.674414,1 +11,3,0,1,1,328311,0,6919.648,55.82751,0,12,1,17.51674,0,44.30706,0,0,61.8238,0,0,0,1,1,2,85.1,6.9,0,78.4,0,249.6,0,0,.6931472,5.51986,0,0,0,1,0,0,78.4,8.842265,.6931472,4.124289,1 +11,3,0,1,2,328311,0,6919.648,56.82751,0,12,1,41.19318,2.414773,21.7803,0,558.3096,623.6979,1,0,0,3,1,2,85.1,6.9,0,78.4,0,249.6,0,0,.6931472,5.51986,0,0,0,1,0,0,78.4,8.842265,.6931472,6.435666,1 +11,3,0,1,3,328311,0,6919.648,57.82751,0,12,1,9.102731,0,33.81014,0,0,42.91287,0,0,0,0,1,2,85.1,6.9,0,78.4,0,249.6,0,0,.6931472,5.51986,0,0,0,1,0,0,78.4,8.842265,.6931472,3.759172,1 +11,3,0,1,1,328312,0,6919.648,51.24709,1,14,1,113.3952,22.72025,42.76146,0,0,178.8769,0,0,0,4,1,2,78.2,13.8,1,37.5,0,249.6,0,0,.6931472,5.51986,0,0,0,0,0,1,37.5,8.842265,.6931472,5.186697,1 +11,3,0,1,2,328312,0,6919.648,52.24709,1,14,1,199.4792,15.19886,0,0,780.1089,994.7869,1,0,0,7,0,2,78.2,13.8,1,37.5,0,249.6,0,0,.6931472,5.51986,0,0,0,0,0,1,37.5,8.842265,.6931472,6.902529,1 +11,3,0,1,3,328312,0,6919.648,53.24709,1,14,1,229.0854,36.84439,40.09536,0,418.1318,724.1569,1,0,0,10,1,2,78.2,13.8,1,37.5,0,249.6,0,0,.6931472,5.51986,0,0,0,0,0,1,37.5,8.842265,.6931472,6.585008,1 +11,3,0,1,1,328313,0,3194.757,13.76044,1,12,1,16.11336,5.288462,0,0,0,21.40182,0,0,0,1,0,4,68.3,9.967326,0,63,0,0,1,1,1.386294,0,0,0,0,0,0,0,63,8.069579,1.386294,3.063476,1 +11,3,0,1,2,328313,0,3194.757,14.76044,1,12,1,9.324009,4.615385,0,0,0,13.93939,0,0,0,0,1,4,68.3,9.967326,0,63,0,0,1,1,1.386294,0,0,0,0,0,0,0,63,8.069579,1.386294,2.634719,1 +11,3,0,1,3,328313,0,3194.757,15.76044,1,12,1,53.44164,7.229585,0,0,0,60.67123,0,0,0,1,9,4,68.3,9.967326,0,63,0,0,1,1,1.386294,0,0,0,0,0,0,0,63,8.069579,1.386294,4.10547,1 +11,3,0,1,4,328313,0,3194.757,16.76044,1,12,1,18.83167,0,19.21599,0,0,38.04766,0,0,0,0,3,4,68.3,9.967326,0,63,0,0,1,1,1.386294,0,0,0,0,0,0,0,63,8.069579,1.386294,3.638839,1 +11,3,0,1,5,328313,0,3194.757,17.76044,1,12,1,288.0927,6.638567,0,0,0,294.7313,0,0,0,2,3,4,68.3,9.967326,0,63,0,0,1,1,1.386294,0,0,0,0,0,0,0,63,8.069579,1.386294,5.686064,1 +11,3,0,1,1,328314,0,3194.757,12.00548,1,12,1,10.12146,2.505061,0,0,0,12.62652,0,0,0,0,1,4,70,9.967326,0,70.4,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.4,8.069579,1.386294,2.535799,1 +11,3,0,1,2,328314,0,3194.757,13.00548,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,70,9.967326,0,70.4,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.4,8.069579,1.386294,,0 +11,3,0,1,3,328314,0,3194.757,14.00548,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,70,9.967326,0,70.4,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.4,8.069579,1.386294,,0 +11,3,0,1,4,328314,0,3194.757,15.00548,1,12,1,9.607994,8.85857,0,0,0,18.46656,0,0,0,1,0,4,70,9.967326,0,70.4,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.4,8.069579,1.386294,2.915962,1 +11,3,0,1,5,328314,0,3194.757,16.00548,1,12,1,102.7397,68.12434,22.83105,0,1142.167,1335.862,1,0,0,3,8,4,70,9.967326,0,70.4,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.4,8.069579,1.386294,7.197332,1 +11,3,0,1,1,328315,0,3194.757,31.67967,1,12,1,36.81174,0,0,0,0,36.81174,0,0,0,1,1,4,74.5,10.3,0,70.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,70.5,8.069579,1.386294,3.605817,1 +11,3,0,1,2,328315,0,3194.757,32.67967,1,12,1,133.7995,21.56177,0,0,0,155.3613,0,0,0,6,0,4,74.5,10.3,0,70.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,70.5,8.069579,1.386294,5.045753,1 +11,3,0,1,3,328315,0,3194.757,33.67967,1,12,1,37.19538,35.33561,0,0,0,72.531,0,0,0,4,0,4,74.5,10.3,0,70.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,70.5,8.069579,1.386294,4.284014,1 +11,3,0,1,4,328315,0,3194.757,34.67967,1,12,1,213.4666,5.726364,6.533436,0,0,225.7264,0,0,0,7,17,4,74.5,10.3,0,70.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,70.5,8.069579,1.386294,5.419323,1 +11,3,0,1,5,328315,0,3194.757,35.67967,1,12,1,135.0544,4.137689,0,0,0,139.1921,0,0,0,5,9,4,74.5,10.3,0,70.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,70.5,8.069579,1.386294,4.935855,1 +11,3,0,1,1,328316,0,3194.757,7.112936,0,12,1,150.8097,46.10324,0,0,349.8229,546.7358,1,0,0,7,0,4,80,9.967326,0,40.7,0,0,1,0,1.386294,0,0,0,0,1,0,0,40.7,8.069579,1.386294,6.303966,1 +11,3,0,1,2,328316,0,3194.757,8.112936,0,12,1,91.84149,22.72727,0,0,0,114.5688,0,0,0,6,0,4,80,9.967326,0,40.7,0,0,1,0,1.386294,0,0,0,0,1,0,0,40.7,8.069579,1.386294,4.741175,1 +11,3,0,1,3,328316,0,3194.757,9.112936,0,12,1,155.9213,32.9628,0,0,0,188.8841,0,0,0,31,2,4,80,9.967326,0,40.7,0,0,1,0,1.386294,0,0,0,0,1,0,0,40.7,8.069579,1.386294,5.241134,1 +11,3,0,1,4,328316,0,3194.757,10.11294,0,12,1,1.921599,0,0,0,0,1.921599,0,0,0,0,0,4,80,9.967326,0,40.7,0,0,1,0,1.386294,0,0,0,0,1,0,0,40.7,8.069579,1.386294,.6531575,1 +11,3,0,1,5,328316,0,3194.757,11.11294,0,12,1,36.19248,0,18.96733,0,0,55.15982,0,0,0,1,1,4,80,9.967326,0,40.7,0,0,1,0,1.386294,0,0,0,0,1,0,0,40.7,8.069579,1.386294,4.010235,1 +13,3,0,1,1,328333,1,9795.895,24.94182,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,69.1,3.4,0,58,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,58,9.18982,1.098612,,0 +13,3,0,1,2,328333,1,9795.895,25.94182,0,12,1,28.67133,2.097902,0,0,0,30.76923,0,0,0,2,0,3,69.1,3.4,0,58,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,58,9.18982,1.098612,3.426515,1 +13,3,0,1,3,328333,1,9795.895,26.94182,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,69.1,3.4,0,58,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,58,9.18982,1.098612,,0 +13,3,0,1,1,328334,1,9795.895,3.868583,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.39137,9.967326,0,55.6,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,55.6,9.18982,1.098612,,0 +13,3,0,1,2,328334,1,9795.895,4.868583,1,12,1,13.98601,.2331002,0,0,0,14.21911,0,0,0,1,0,3,83.39137,9.967326,0,55.6,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,55.6,9.18982,1.098612,2.654587,1 +13,3,0,1,3,328334,1,9795.895,5.868583,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.39137,9.967326,0,55.6,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,55.6,9.18982,1.098612,,0 +13,3,0,1,1,328335,1,9795.895,19.31828,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,71.3,0,0,73.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,73.8,9.18982,1.098612,,0 +13,3,0,1,2,328335,1,9795.895,20.31828,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,71.3,0,0,73.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,73.8,9.18982,1.098612,,0 +13,3,0,1,3,328335,1,9795.895,21.31828,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,71.3,0,0,73.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,73.8,9.18982,1.098612,,0 +11,3,0,1,1,328336,0,5317.302,50.72142,1,11,1,31.52834,1.3917,37.70243,0,0,70.62247,0,0,0,3,1,1,71.8,13.8,0,73.9,0,0,0,0,0,0,0,0,0,1,0,0,73.9,8.57891,0,4.257349,1 +11,3,0,1,2,328336,0,5317.302,51.72142,1,11,1,153.986,4.289044,0,0,0,158.2751,0,0,0,6,0,1,71.8,13.8,0,73.9,0,0,0,0,0,0,0,0,0,1,0,0,73.9,8.57891,0,5.064334,1 +11,3,0,1,3,328336,0,5317.302,52.72142,1,11,1,47.49893,3.933305,33.34758,0,0,84.77982,0,0,0,5,0,1,71.8,13.8,0,73.9,0,0,0,0,0,0,0,0,0,1,0,0,73.9,8.57891,0,4.440058,1 +11,3,0,1,1,328337,0,1365.396,23.74264,0,14,1,28.34008,0,26.31579,0,0,54.65587,0,0,0,2,1,1,62.8,10.3,0,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,7.219932,0,4.001057,1 +11,3,0,1,2,328337,0,1365.396,24.74264,0,14,1,25.64103,0,0,0,0,25.64103,0,0,0,1,0,1,62.8,10.3,0,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,7.219932,0,3.244194,1 +11,3,0,1,3,328337,0,1365.396,25.74264,0,14,1,23.51432,0,23.51432,0,0,47.02864,0,0,0,2,1,1,62.8,10.3,0,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,7.219932,0,3.850757,1 +11,3,0,1,1,328338,0,2696.774,22.61191,0,13,1,11.1336,1.3917,0,0,0,12.5253,0,0,0,2,0,1,60.6,3.4,0,81.8,0,154.56,0,0,0,5.040582,0,0,0,0,0,0,81.8,7.900182,0,2.527751,1 +11,3,0,1,2,328338,0,2696.774,23.61191,0,13,1,37.669,2.284382,0,0,0,39.95338,0,0,0,2,0,1,60.6,3.4,0,81.8,0,154.56,0,0,0,5.040582,0,0,0,0,0,0,81.8,7.900182,0,3.687713,1 +11,3,0,1,3,328338,0,2696.774,24.61191,0,13,1,1003.403,12.22745,0,0,9326.302,10341.93,1,0,0,8,32,1,60.6,3.4,0,81.8,0,154.56,0,0,0,5.040582,0,0,0,0,0,0,81.8,7.900182,0,9.243962,1 +11,3,0,1,1,328342,0,10842.23,2.8282,0,12,1,13.78958,0,0,0,0,13.78958,0,0,0,1,0,5,83.39137,9.967326,0,25.9,0,232.8,1,0,1.609438,5.45018,0,0,0,1,0,0,25.9,9.291296,1.609438,2.623913,1 +11,3,0,1,2,328342,0,10842.23,3.8282,0,12,1,17.81528,0,0,0,0,17.81528,0,0,0,2,0,5,83.39137,9.967326,0,25.9,0,232.8,1,0,1.609438,5.45018,0,0,0,1,0,0,25.9,9.291296,1.609438,2.880057,1 +11,3,0,1,3,328342,0,10842.23,4.8282,0,12,1,18.70163,0,0,0,0,18.70163,0,0,0,2,0,5,83.39137,9.967326,0,25.9,0,232.8,1,0,1.609438,5.45018,0,0,0,1,0,0,25.9,9.291296,1.609438,2.928611,1 +11,3,0,1,4,328342,0,10842.23,5.8282,0,12,1,22.48934,0,0,0,0,22.48934,0,0,0,2,0,5,83.39137,9.967326,0,25.9,0,232.8,1,0,1.609438,5.45018,0,0,0,1,0,0,25.9,9.291296,1.609438,3.113041,1 +11,3,0,1,5,328342,0,10842.23,6.8282,0,12,1,23.35456,0,0,0,0,23.35456,0,0,0,3,0,5,83.39137,9.967326,0,25.9,0,232.8,1,0,1.609438,5.45018,0,0,0,1,0,0,25.9,9.291296,1.609438,3.150792,1 +11,3,0,1,1,328343,0,10842.23,7.186858,1,12,1,6.128703,0,0,0,0,6.128703,0,0,0,1,0,5,78.3,9.967326,0,66.7,0,232.8,1,1,1.609438,5.45018,0,0,0,1,0,0,66.7,9.291296,1.609438,1.812983,1 +11,3,0,1,2,328343,0,10842.23,8.186858,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,78.3,9.967326,0,66.7,0,232.8,1,1,1.609438,5.45018,0,0,0,1,0,0,66.7,9.291296,1.609438,,0 +11,3,0,1,3,328343,0,10842.23,9.186858,1,12,1,5.588994,0,0,0,0,5.588994,0,0,0,1,0,5,78.3,9.967326,0,66.7,0,232.8,1,1,1.609438,5.45018,0,0,0,1,0,0,66.7,9.291296,1.609438,1.720799,1 +11,3,0,1,4,328343,0,10842.23,10.18686,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,78.3,9.967326,0,66.7,0,232.8,1,1,1.609438,5.45018,0,0,0,1,0,0,66.7,9.291296,1.609438,,0 +11,3,0,1,5,328343,0,10842.23,11.18686,1,12,1,18.04671,0,0,0,0,18.04671,0,0,0,2,0,5,78.3,9.967326,0,66.7,0,232.8,1,1,1.609438,5.45018,0,0,0,1,0,0,66.7,9.291296,1.609438,2.892963,1 +11,3,0,1,1,328344,0,10842.23,11.47433,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,73.3,9.967326,0,81.5,0,232.8,1,1,1.609438,5.45018,0,0,0,0,0,0,81.5,9.291296,1.609438,,0 +11,3,0,1,2,328344,0,10842.23,12.47433,1,12,1,6.094702,0,0,0,0,6.094702,0,0,0,1,0,5,73.3,9.967326,0,81.5,0,232.8,1,1,1.609438,5.45018,0,0,0,0,0,0,81.5,9.291296,1.609438,1.80742,1 +11,3,0,1,3,328344,0,10842.23,13.47433,1,12,1,0,1.543422,0,0,0,1.543422,0,0,0,0,0,5,73.3,9.967326,0,81.5,0,232.8,1,1,1.609438,5.45018,0,0,0,0,0,0,81.5,9.291296,1.609438,.4340022,1 +11,3,0,1,4,328344,0,10842.23,14.47433,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,73.3,9.967326,0,81.5,0,232.8,1,1,1.609438,5.45018,0,0,0,0,0,0,81.5,9.291296,1.609438,,0 +11,3,0,1,5,328344,0,10842.23,15.47433,1,12,1,25.47771,0,0,0,0,25.47771,0,0,0,2,1,5,73.3,9.967326,0,81.5,0,232.8,1,1,1.609438,5.45018,0,0,0,0,0,0,81.5,9.291296,1.609438,3.237804,1 +11,3,0,1,1,328345,0,10842.23,32.47639,1,12,1,248.4934,38.91726,9.228805,0,952.5996,1249.239,1,0,0,5,22,5,67,6.9,0,71.6,0,232.8,0,0,1.609438,5.45018,0,0,0,1,0,0,71.6,9.291296,1.609438,7.13029,1 +11,3,0,1,2,328345,0,10842.23,33.47639,1,12,1,27.19175,14.43976,0,248.4763,0,41.6315,0,0,23,1,0,5,67,6.9,0,71.6,0,232.8,0,0,1.609438,5.45018,0,0,0,1,0,0,71.6,9.291296,1.609438,3.728857,1 +11,3,0,1,3,328345,0,10842.23,34.47639,1,12,1,42.13242,8.022356,0,0,671.1307,721.2855,1,0,0,3,0,5,67,6.9,0,71.6,0,232.8,0,0,1.609438,5.45018,0,0,0,1,0,0,71.6,9.291296,1.609438,6.581035,1 +11,3,0,1,4,328345,0,10842.23,35.47639,1,12,1,176.076,11.63242,0,0,0,187.7084,0,0,0,7,0,5,67,6.9,0,71.6,0,232.8,0,0,1.609438,5.45018,0,0,0,1,0,0,71.6,9.291296,1.609438,5.23489,1 +11,3,0,1,5,328345,0,10842.23,36.47639,1,12,1,20.77141,0,0,0,0,20.77141,0,0,0,1,1,5,67,6.9,0,71.6,0,232.8,0,0,1.609438,5.45018,0,0,0,1,0,0,71.6,9.291296,1.609438,3.033577,1 +11,3,0,1,1,328346,0,10842.23,33.57974,0,13,1,22.98264,15.32176,0,0,0,38.30439,0,0,0,3,0,5,77.1,3.4,0,72.7,0,232.8,0,0,1.609438,5.45018,0,0,0,1,0,0,72.7,9.291296,1.609438,3.645565,1 +11,3,0,1,2,328346,0,10842.23,34.57974,0,13,1,1.40647,0,0,0,0,1.40647,0,0,0,0,0,5,77.1,3.4,0,72.7,0,232.8,0,0,1.609438,5.45018,0,0,0,1,0,0,72.7,9.291296,1.609438,.3410828,1 +11,3,0,1,3,328346,0,10842.23,35.57974,0,13,1,15.99312,0,0,0,0,15.99312,0,0,0,1,0,5,77.1,3.4,0,72.7,0,232.8,0,0,1.609438,5.45018,0,0,0,1,0,0,72.7,9.291296,1.609438,2.772159,1 +11,3,0,1,4,328346,0,10842.23,36.57974,0,13,1,274.6026,0,0,0,0,274.6026,0,0,0,3,0,5,77.1,3.4,0,72.7,0,232.8,0,0,1.609438,5.45018,0,0,0,1,0,0,72.7,9.291296,1.609438,5.615325,1 +11,3,0,1,5,328346,0,10842.23,37.57974,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,77.1,3.4,0,72.7,0,232.8,0,0,1.609438,5.45018,0,0,0,1,0,0,72.7,9.291296,1.609438,,0 +10,3,50,0,1,328371,0,8086.217,10.07803,1,6,1,0,0,0,0,0,0,0,0,0,0,0,5,95,9.967326,0,100,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,,0 +10,3,50,0,2,328371,0,8086.217,11.07803,1,6,1,147.2105,7.712142,0,0,0,154.9226,0,0,0,5,0,5,95,9.967326,0,100,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,5.042926,1 +10,3,50,0,3,328371,0,8086.217,12.07803,1,6,1,10.31814,7.953568,0,0,0,18.27171,0,0,0,2,0,5,95,9.967326,0,100,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,2.905354,1 +10,3,50,0,4,328371,0,8086.217,13.07803,1,6,1,0,2.985653,0,0,0,2.985653,0,0,0,0,0,5,95,9.967326,0,100,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,1.093819,1 +10,3,50,0,5,328371,0,8086.217,14.07803,1,6,1,58.9172,16.18542,.5803255,0,0,75.68295,0,0,0,4,0,5,95,9.967326,0,100,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,4.326553,1 +10,3,50,0,1,328372,0,8086.217,7.789186,0,6,1,27.06844,0,0,0,0,27.06844,0,0,0,2,0,5,100,9.967326,0,100,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,3.298368,1 +10,3,50,0,2,328372,0,8086.217,8.789186,0,6,1,0,0,0,0,0,0,0,0,0,0,0,5,100,9.967326,0,100,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,,0 +10,3,50,0,3,328372,0,8086.217,9.789186,0,6,1,58.3405,0,0,0,0,58.3405,0,0,0,1,0,5,100,9.967326,0,100,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,4.066297,1 +10,3,50,0,4,328372,0,8086.217,10.78919,0,6,1,0,0,0,0,0,0,0,0,0,0,0,5,100,9.967326,0,100,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,,0 +10,3,50,0,5,328372,0,8086.217,11.78919,0,6,1,0,0,0,0,0,0,0,0,0,0,0,5,100,9.967326,0,100,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,,0 +10,3,50,0,1,328373,0,8086.217,11.44695,0,6,1,0,0,0,0,0,0,0,0,0,0,0,5,100,9.967326,0,100,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,,0 +10,3,50,0,2,328373,0,8086.217,12.44695,0,6,1,0,0,0,0,0,0,0,0,0,0,0,5,100,9.967326,0,100,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,,0 +10,3,50,0,3,328373,0,8086.217,13.44695,0,6,1,14.61737,3.095443,0,0,0,17.71281,0,0,0,1,0,5,100,9.967326,0,100,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,2.874288,1 +10,3,50,0,4,328373,0,8086.217,14.44695,0,6,1,0,0,0,0,0,0,0,0,0,0,0,5,100,9.967326,0,100,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,,0 +10,3,50,0,5,328373,0,8086.217,15.44695,0,6,1,29.90092,0,.9483369,0,0,30.84926,0,0,0,1,0,5,100,9.967326,0,100,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,100,8.99804,1.609438,3.429113,1 +10,3,50,0,1,328374,0,8086.217,48.21082,1,6,1,187.2829,13.68744,33.19714,0,0,234.1675,0,0,0,6,1,5,83.5,3.4,0,84.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,84.1,8.99804,1.609438,5.456037,1 +10,3,50,0,2,328374,0,8086.217,49.21082,1,6,1,0,0,0,0,0,0,0,0,0,0,0,5,83.5,3.4,0,84.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,84.1,8.99804,1.609438,,0 +10,3,50,0,3,328374,0,8086.217,50.21082,1,6,1,14.61737,2.622528,0,0,0,17.2399,0,0,0,1,0,5,83.5,3.4,0,84.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,84.1,8.99804,1.609438,2.847226,1 +10,3,50,0,4,328374,0,8086.217,51.21082,1,6,1,173.6409,6.397829,0,0,0,180.0388,0,0,0,6,1,5,83.5,3.4,0,84.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,84.1,8.99804,1.609438,5.193172,1 +10,3,50,0,5,328374,0,8086.217,52.21082,1,6,1,9.907997,11.07219,0,0,0,20.98018,0,0,0,1,0,5,83.5,3.4,0,84.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,84.1,8.99804,1.609438,3.043578,1 +10,3,50,0,1,328375,0,8086.217,49.25667,0,12,1,15.32176,0,0,0,0,15.32176,0,0,0,1,0,5,91.5,3.4,0,90.9,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,90.9,8.99804,1.609438,2.729274,1 +10,3,50,0,2,328375,0,8086.217,50.25667,0,12,1,11.72058,0,16.40881,0,0,28.12939,0,0,0,0,1,5,91.5,3.4,0,90.9,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,90.9,8.99804,1.609438,3.336815,1 +10,3,50,0,3,328375,0,8086.217,51.25667,0,12,1,24.93551,2.923474,0,0,0,27.85899,0,0,0,1,0,5,91.5,3.4,0,90.9,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,90.9,8.99804,1.609438,3.327156,1 +10,3,50,0,4,328375,0,8086.217,52.25667,0,12,1,42.45832,8.918185,0,0,0,51.3765,0,0,0,2,0,5,91.5,3.4,0,90.9,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,90.9,8.99804,1.609438,3.939181,1 +10,3,50,0,5,328375,0,8086.217,53.25667,0,12,1,26.89314,49.74522,10.04246,0,0,86.68082,0,0,0,2,1,5,91.5,3.4,0,90.9,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,90.9,8.99804,1.609438,4.462233,1 +10,3,50,0,1,328376,0,3478.006,22.85284,1,13,1,44.94382,6.179775,25.53626,0,0,76.65986,0,0,0,2,1,1,56.9,0,0,89.8,825,725,0,0,0,6.586172,0,3.931826,7.408531,0,0,0,89.8,8.154502,0,4.339378,1 +10,3,50,0,2,328376,0,3478.006,23.85284,1,13,1,113.924,1.781528,0,0,0,115.7056,0,0,0,6,0,1,56.9,0,0,89.8,825,725,0,0,0,6.586172,0,3.931826,7.408531,0,0,0,89.8,8.154502,0,4.751049,1 +10,3,50,0,3,328376,0,3478.006,24.85284,1,13,1,156.9991,4.849527,19.34652,0,2405.258,2586.453,1,0,0,6,0,1,56.9,0,0,89.8,825,725,0,0,0,6.586172,0,3.931826,7.408531,0,0,0,89.8,8.154502,0,7.858043,1 +10,3,50,0,4,328376,0,3478.006,25.85284,1,13,1,326.8709,26.32028,0,0,0,353.1912,0,0,0,6,0,1,56.9,0,0,89.8,825,725,0,0,0,6.586172,0,3.931826,7.408531,0,0,0,89.8,8.154502,0,5.86701,1 +10,3,50,0,5,328376,0,3478.006,26.85284,1,13,1,24.85846,9.076433,0,0,0,33.93489,0,0,0,1,0,1,56.9,0,0,89.8,825,725,0,0,0,6.586172,0,3.931826,7.408531,0,0,0,89.8,8.154502,0,3.524444,1 +15,3,95,1,1,328410,0,2860.411,23.4935,1,16,1,10.12146,0,22.77328,0,0,32.89474,0,0,0,0,1,1,74.5,17.2,0,83,190,190,0,0,0,5.247024,0,4.564348,5.298317,0,0,0,83,7.95907,0,3.493313,1 +14,3,95,1,1,328416,0,7196.79,37.29227,0,12,1,9.27357,24.52344,0,0,0,33.79701,0,0,0,2,0,6,69.1,20.7,1,77.3,725.15,725.15,0,0,1.791759,6.586379,0,4.564348,6.637672,0,0,0,77.3,8.881529,1.791759,3.520372,1 +14,3,95,1,2,328416,0,7196.79,38.29227,0,12,1,0,9.943182,0,0,0,9.943182,0,0,0,0,0,6,69.1,20.7,1,77.3,725.15,725.15,0,0,1.791759,6.586379,0,4.564348,6.637672,0,0,0,77.3,8.881529,1.791759,2.296887,1 +14,3,95,1,3,328416,0,7196.79,39.29227,0,12,1,0,11.29172,0,25.57434,0,11.29172,0,0,4,0,0,6,69.1,20.7,1,77.3,725.15,725.15,0,0,1.791759,6.586379,0,4.564348,6.637672,0,0,0,77.3,8.881529,1.791759,2.42407,1 +14,3,95,1,1,328417,0,7196.79,14.59548,1,12,1,2.575992,0,0,0,0,2.575992,0,0,0,0,0,6,47.9,6.9,0,72.7,725.15,725.15,1,1,1.791759,6.586379,0,4.564348,6.637672,0,0,0,72.7,8.881529,1.791759,.9462346,1 +14,3,95,1,2,328417,0,7196.79,15.59548,1,12,1,85.70076,4.214015,11.83712,0,0,101.7519,0,0,0,3,1,6,47.9,6.9,0,72.7,725.15,725.15,1,1,1.791759,6.586379,0,4.564348,6.637672,0,0,0,72.7,8.881529,1.791759,4.622538,1 +14,3,95,1,3,328417,0,7196.79,16.59548,1,12,1,0,3.034244,20.78457,0,0,23.81881,0,0,0,0,0,6,47.9,6.9,0,72.7,725.15,725.15,1,1,1.791759,6.586379,0,4.564348,6.637672,0,0,0,72.7,8.881529,1.791759,3.170476,1 +14,3,95,1,1,328418,0,7196.79,8.826831,1,12,1,1.545595,0,0,0,0,1.545595,0,0,0,0,0,6,81.7,9.967326,0,66.7,725.15,725.15,1,1,1.791759,6.586379,0,4.564348,6.637672,1,0,0,66.7,8.881529,1.791759,.435409,1 +14,3,95,1,2,328418,0,7196.79,9.826831,1,12,1,0,1.302083,0,0,0,1.302083,0,0,0,0,0,6,81.7,9.967326,0,66.7,725.15,725.15,1,1,1.791759,6.586379,0,4.564348,6.637672,1,0,0,66.7,8.881529,1.791759,.2639656,1 +14,3,95,1,3,328418,0,7196.79,10.82683,1,12,1,19.93932,0,0,0,0,19.93932,0,0,0,2,1,6,81.7,9.967326,0,66.7,725.15,725.15,1,1,1.791759,6.586379,0,4.564348,6.637672,1,0,0,66.7,8.881529,1.791759,2.992693,1 +14,3,95,1,1,328419,0,7196.79,12.73101,1,12,1,10.30397,0,23.69912,0,0,34.00309,0,0,0,0,1,6,88.3,9.967326,0,96.3,725.15,725.15,1,1,1.791759,6.586379,0,4.564348,6.637672,0,0,0,96.3,8.881529,1.791759,3.526451,1 +14,3,95,1,2,328419,0,7196.79,13.73101,1,12,1,62.5947,1.515152,10.89015,0,0,75,0,0,0,4,1,6,88.3,9.967326,0,96.3,725.15,725.15,1,1,1.791759,6.586379,0,4.564348,6.637672,0,0,0,96.3,8.881529,1.791759,4.317488,1 +14,3,95,1,3,328419,0,7196.79,14.73101,1,12,1,17.33854,0,0,74.98917,0,17.33854,0,0,6,1,1,6,88.3,9.967326,0,96.3,725.15,725.15,1,1,1.791759,6.586379,0,4.564348,6.637672,0,0,0,96.3,8.881529,1.791759,2.852931,1 +14,3,95,1,1,328420,0,7196.79,33.46201,1,12,1,0,5.358063,0,0,0,5.358063,0,0,0,0,0,6,72.9,3.4,0,80.7,725.15,725.15,0,0,1.791759,6.586379,0,4.564348,6.637672,0,0,0,80.7,8.881529,1.791759,1.678602,1 +14,3,95,1,2,328420,0,7196.79,34.46201,1,12,1,99.47916,4.711174,0,0,0,104.1903,0,0,0,5,0,6,72.9,3.4,0,80.7,725.15,725.15,0,0,1.791759,6.586379,0,4.564348,6.637672,0,0,0,80.7,8.881529,1.791759,4.646219,1 +14,3,95,1,3,328420,0,7196.79,35.46201,1,12,1,12.83052,2.904205,0,25.14087,0,15.73472,0,0,4,1,0,6,72.9,3.4,0,80.7,725.15,725.15,0,0,1.791759,6.586379,0,4.564348,6.637672,0,0,0,80.7,8.881529,1.791759,2.75587,1 +14,3,95,1,1,328421,0,7196.79,7.088295,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,81.7,9.967326,0,66.7,725.15,725.15,1,0,1.791759,6.586379,0,4.564348,6.637672,0,0,0,66.7,8.881529,1.791759,,0 +14,3,95,1,2,328421,0,7196.79,8.088296,0,12,1,10.89015,1.870265,0,0,0,12.76042,0,0,0,3,0,6,81.7,9.967326,0,66.7,725.15,725.15,1,0,1.791759,6.586379,0,4.564348,6.637672,0,0,0,66.7,8.881529,1.791759,2.546348,1 +14,3,95,1,3,328421,0,7196.79,9.088296,0,12,1,2.384048,1.885566,0,0,0,4.269614,0,0,0,0,0,6,81.7,9.967326,0,66.7,725.15,725.15,1,0,1.791759,6.586379,0,4.564348,6.637672,0,0,0,66.7,8.881529,1.791759,1.451523,1 +11,3,0,0,1,328457,0,8923.167,49.11157,1,12,1,261.3892,1.659857,44.43309,0,0,307.4821,0,0,0,2,1,2,87.2,3.4,0,78.4,0,290.64,0,0,.6931472,5.672085,0,0,0,0,0,0,78.4,9.096519,.6931472,5.728417,1 +11,3,0,0,2,328457,0,8923.167,50.11157,1,12,1,432.9958,0,0,0,0,432.9958,0,0,0,3,0,2,87.2,3.4,0,78.4,0,290.64,0,0,.6931472,5.672085,0,0,0,0,0,0,78.4,9.096519,.6931472,6.070728,1 +11,3,0,0,3,328457,0,8923.167,51.11157,1,12,1,27.81599,10.23216,30.09458,0,0,68.14273,0,0,0,1,1,2,87.2,3.4,0,78.4,0,290.64,0,0,.6931472,5.672085,0,0,0,0,0,0,78.4,9.096519,.6931472,4.221604,1 +11,3,0,0,1,328458,0,8923.167,49.19644,0,12,1,85.54648,6.869254,43.41164,0,0,135.8274,0,0,0,2,8,2,92,3.4,0,78.4,0,290.64,0,0,.6931472,5.672085,0,0,0,0,0,0,78.4,9.096519,.6931472,4.911385,1 +11,3,0,0,2,328458,0,8923.167,50.19644,0,12,1,0,3.984998,0,0,0,3.984998,0,0,0,0,0,2,92,3.4,0,78.4,0,290.64,0,0,.6931472,5.672085,0,0,0,0,0,0,78.4,9.096519,.6931472,1.382537,1 +11,3,0,0,3,328458,0,8923.167,51.19644,0,12,1,15.04729,5.782459,37.40327,0,566.9604,625.1935,1,0,0,1,1,2,92,3.4,0,78.4,0,290.64,0,0,.6931472,5.672085,0,0,0,0,0,0,78.4,9.096519,.6931472,6.438061,1 +18,3,25,1,1,328466,0,5432.258,11.04449,1,13,1,14.17004,1.67004,23.27935,0,0,39.11943,0,0,0,1,1,4,88.3,9.967326,0,77.8,460,460,1,1,1.386294,6.131227,0,3.258096,7.517521,0,0,0,77.8,8.600294,1.386294,3.666619,1 +18,3,25,1,2,328466,0,5432.258,12.04449,1,13,1,35.89743,1.818182,11.65501,0,0,49.37063,0,0,0,4,1,4,88.3,9.967326,0,77.8,460,460,1,1,1.386294,6.131227,0,3.258096,7.517521,0,0,0,77.8,8.600294,1.386294,3.899356,1 +18,3,25,1,3,328466,0,5432.258,13.04449,1,13,1,28.30269,10.21804,0,0,0,38.52074,0,0,0,1,0,4,88.3,9.967326,0,77.8,460,460,1,1,1.386294,6.131227,0,3.258096,7.517521,0,0,0,77.8,8.600294,1.386294,3.651197,1 +18,3,25,1,4,328466,0,5432.258,14.04449,1,13,1,32.28286,5.918524,0,0,515.7802,553.9816,1,0,0,3,1,4,88.3,9.967326,0,77.8,460,460,1,1,1.386294,6.131227,0,3.258096,7.517521,0,0,0,77.8,8.600294,1.386294,6.317132,1 +18,3,25,1,5,328466,0,5432.258,15.04449,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,9.967326,0,77.8,460,460,1,1,1.386294,6.131227,0,3.258096,7.517521,0,0,0,77.8,8.600294,1.386294,,0 +18,3,25,1,1,328467,0,5432.258,29.37166,1,13,1,31.62955,5.050607,30.36437,0,0,67.04453,0,0,0,1,1,4,87.2,37.9,0,64.8,460,460,0,0,1.386294,6.131227,0,3.258096,7.517521,1,0,0,64.8,8.600294,1.386294,4.205357,1 +18,3,25,1,2,328467,0,5432.258,30.37166,1,13,1,131.7016,1.445221,0,0,682.387,815.5338,1,0,0,6,0,4,87.2,37.9,0,64.8,460,460,0,0,1.386294,6.131227,0,3.258096,7.517521,1,0,0,64.8,8.600294,1.386294,6.703843,1 +18,3,25,1,3,328467,0,5432.258,31.37166,1,13,1,20.94912,.748183,24.36939,0,0,46.0667,0,0,0,1,1,4,87.2,37.9,0,64.8,460,460,0,0,1.386294,6.131227,0,3.258096,7.517521,1,0,0,64.8,8.600294,1.386294,3.83009,1 +18,3,25,1,4,328467,0,5432.258,32.37166,1,13,1,149.1161,4.907763,12.92852,0,0,166.9523,0,0,0,6,1,4,87.2,37.9,0,64.8,460,460,0,0,1.386294,6.131227,0,3.258096,7.517521,1,0,0,64.8,8.600294,1.386294,5.117708,1 +18,3,25,1,5,328467,0,5432.258,33.37166,1,13,1,16.50861,0,0,0,0,16.50861,0,0,0,2,0,4,87.2,37.9,0,64.8,460,460,0,0,1.386294,6.131227,0,3.258096,7.517521,1,0,0,64.8,8.600294,1.386294,2.803882,1 +18,3,25,1,1,328468,0,5432.258,10.06434,1,13,1,9.109312,0,24.79757,0,0,33.90688,0,0,0,0,1,4,95,9.967326,0,22.2,460,460,1,1,1.386294,6.131227,0,3.258096,7.517521,0,0,0,22.2,8.600294,1.386294,3.523618,1 +18,3,25,1,2,328468,0,5432.258,11.06434,1,13,1,27.03963,1.818182,0,0,0,28.85781,0,0,0,4,0,4,95,9.967326,0,22.2,460,460,1,1,1.386294,6.131227,0,3.258096,7.517521,0,0,0,22.2,8.600294,1.386294,3.362381,1 +18,3,25,1,3,328468,0,5432.258,12.06434,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,95,9.967326,0,22.2,460,460,1,1,1.386294,6.131227,0,3.258096,7.517521,0,0,0,22.2,8.600294,1.386294,,0 +18,3,25,1,4,328468,0,5432.258,13.06434,1,13,1,9.223674,0,14.98847,0,0,24.21214,0,0,0,0,1,4,95,9.967326,0,22.2,460,460,1,1,1.386294,6.131227,0,3.258096,7.517521,0,0,0,22.2,8.600294,1.386294,3.186854,1 +18,3,25,1,5,328468,0,5432.258,14.06434,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,95,9.967326,0,22.2,460,460,1,1,1.386294,6.131227,0,3.258096,7.517521,0,0,0,22.2,8.600294,1.386294,,0 +18,3,25,1,1,328469,0,5432.258,41.06503,0,8,1,56.57895,19.67611,24.79757,0,0,101.0526,0,0,0,1,1,4,93.1,6.9,0,71.6,460,460,0,0,1.386294,6.131227,0,3.258096,7.517521,1,0,0,71.6,8.600294,1.386294,4.615642,1 +18,3,25,1,2,328469,0,5432.258,42.06503,0,8,1,22.84382,.941725,0,0,782.3264,806.1119,2,0,0,2,0,4,93.1,6.9,0,71.6,460,460,0,0,1.386294,6.131227,0,3.258096,7.517521,1,0,0,71.6,8.600294,1.386294,6.692223,1 +18,3,25,1,3,328469,0,5432.258,43.06503,0,8,1,0,5.989739,0,0,2105.81,2111.8,5,0,0,0,0,4,93.1,6.9,0,71.6,460,460,0,0,1.386294,6.131227,0,3.258096,7.517521,1,0,0,71.6,8.600294,1.386294,7.655296,1 +18,3,25,1,4,328469,0,5432.258,44.06503,0,8,1,0,1.6103,0,0,3115.68,3117.291,5,0,0,0,0,4,93.1,6.9,0,71.6,460,460,0,0,1.386294,6.131227,0,3.258096,7.517521,1,0,0,71.6,8.600294,1.386294,8.04472,1 +18,3,25,1,5,328469,0,5432.258,45.06503,0,8,1,0,0,0,0,1179.459,1179.459,1,0,0,0,0,4,93.1,6.9,0,71.6,460,460,0,0,1.386294,6.131227,0,3.258096,7.517521,1,0,0,71.6,8.600294,1.386294,7.072811,1 +11,3,0,1,3,328471,0,11356.01,56.98973,1,,1,15.17122,1.885566,32.94321,0,0,50,0,0,0,2,0,1,89.9,20.7,0,68.2,,,0,0,0,0,0,0,0,0,0,0,68.2,9.33759,0,3.912023,1 +14,3,95,1,1,328475,0,3659.238,49.84258,1,8,1,10.12146,0,34.41296,0,0,44.53441,0,0,0,1,0,2,83.5,3.4,0,72.7,175,175,0,0,.6931472,5.164786,0,4.564348,5.216079,0,0,0,72.7,8.205283,.6931472,3.796262,1 +14,3,95,1,2,328475,0,3659.238,50.84258,1,8,1,193.007,18.67133,.4662005,0,689.5571,901.7017,2,0,0,10,0,2,83.5,3.4,0,72.7,175,175,0,0,.6931472,5.164786,0,4.564348,5.216079,0,0,0,72.7,8.205283,.6931472,6.804284,1 +14,3,95,1,3,328475,0,3659.238,51.84258,1,8,1,11.97093,3.805045,0,0,0,15.77597,0,0,0,2,0,2,83.5,3.4,0,72.7,175,175,0,0,.6931472,5.164786,0,4.564348,5.216079,0,0,0,72.7,8.205283,.6931472,2.758488,1 +14,3,95,1,1,328476,0,3659.238,52.15058,0,8,1,37.44939,28.99798,34.41296,0,469.499,570.3593,1,0,0,4,0,2,78.2,3.4,0,59.1,175,175,0,0,.6931472,5.164786,0,4.564348,5.216079,0,0,0,59.1,8.205283,.6931472,6.346267,1 +14,3,95,1,2,328476,0,3659.238,53.15058,0,8,1,0,0,0,0,0,0,0,0,0,0,0,2,78.2,3.4,0,59.1,175,175,0,0,.6931472,5.164786,0,4.564348,5.216079,0,0,0,59.1,8.205283,.6931472,,0 +14,3,95,1,3,328476,0,3659.238,54.15058,0,8,1,0,0,0,0,0,0,0,0,0,0,0,2,78.2,3.4,0,59.1,175,175,0,0,.6931472,5.164786,0,4.564348,5.216079,0,0,0,59.1,8.205283,.6931472,,0 +13,3,0,0,1,328480,0,7196.79,26.0835,0,14,1,20.93973,3.804903,0,0,0,24.74464,0,0,0,1,0,1,85.6,3.4,0,80.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,80.7,8.881529,0,3.208609,1 +13,3,0,0,2,328480,0,7196.79,27.0835,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,85.6,3.4,0,80.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,80.7,8.881529,0,,0 +13,3,0,0,3,328480,0,7196.79,28.0835,0,14,1,25.15047,0,0,0,0,25.15047,0,0,0,3,0,1,85.6,3.4,0,80.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,80.7,8.881529,0,3.224877,1 +13,3,0,1,1,328481,0,4406.452,26.23956,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,75,10.3,0,73.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,73.9,8.391052,0,,0 +13,3,0,1,2,328481,0,4406.452,27.23956,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,75,10.3,0,73.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,73.9,8.391052,0,,0 +13,3,0,1,3,328481,0,4406.452,28.23956,0,13,1,1.289768,0,0,0,0,1.289768,0,0,0,0,0,1,75,10.3,0,73.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,73.9,8.391052,0,.2544622,1 +11,3,0,1,1,328504,0,2729.032,52.32307,0,6,1,25.24472,60.84492,35.03349,0,0,121.1231,0,0,0,4,0,1,48.4,13.8,0,61.4,0,142.32,0,0,0,4.958078,0,0,0,1,0,0,61.4,7.912069,0,4.796808,1 +11,3,0,1,2,328504,0,2729.032,53.32307,0,6,1,9.469697,74.78693,0,0,0,84.25663,0,0,0,1,0,1,48.4,13.8,0,61.4,0,142.32,0,0,0,4.958078,0,0,0,1,0,0,61.4,7.912069,0,4.433867,1 +11,3,0,1,3,328504,0,2729.032,54.32307,0,6,1,19.50585,106.1248,0,0,0,125.6307,0,0,0,2,0,1,48.4,13.8,0,61.4,0,142.32,0,0,0,4.958078,0,0,0,1,0,0,61.4,7.912069,0,4.833346,1 +17,3,25,1,1,328534,0,11951.32,60.64613,0,16,1,37.79367,24.1573,38.81512,0,0,100.7661,0,0,0,3,1,2,92,13.8,0,85.2,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,85.2,9.38868,.6931472,4.612802,1 +17,3,25,1,2,328534,0,11951.32,61.64613,0,16,1,18.28411,21.63619,0,0,0,39.9203,0,0,0,2,0,2,92,13.8,0,85.2,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,85.2,9.38868,.6931472,3.686885,1 +17,3,25,1,3,328534,0,11951.32,62.64613,0,16,1,54.38521,21.1092,32.2442,0,0,107.7386,0,0,0,2,1,2,92,13.8,0,85.2,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,85.2,9.38868,.6931472,4.679708,1 +17,3,25,1,1,328535,0,11951.32,54.8501,1,12,1,16.34321,0,45.45454,0,0,61.79775,0,0,0,1,1,2,92,6.9,0,97.7,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,97.7,9.38868,.6931472,4.123867,1 +17,3,25,1,2,328535,0,11951.32,55.8501,1,12,1,15.00234,0,18.75293,0,0,33.75528,0,0,0,1,1,2,92,6.9,0,97.7,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,97.7,9.38868,.6931472,3.519137,1 +17,3,25,1,3,328535,0,11951.32,56.8501,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,92,6.9,0,97.7,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,97.7,9.38868,.6931472,,0 +14,3,95,1,1,328536,0,7856.892,29.49487,1,16,1,281.9203,4.928498,0,0,0,286.8488,0,0,0,1,51,5,86.7,17.2,0,81.8,660,660,0,0,1.609438,6.49224,0,4.564348,6.543533,1,0,0,81.8,8.969274,1.609438,5.658955,1 +14,3,95,1,2,328536,0,7856.892,30.49487,1,16,1,142.9911,54.80544,0,0,0,197.7965,0,0,0,5,14,5,86.7,17.2,0,81.8,660,660,0,0,1.609438,6.49224,0,4.564348,6.543533,1,0,0,81.8,8.969274,1.609438,5.287239,1 +14,3,95,1,3,328536,0,7856.892,31.49487,1,16,1,52.02064,10.33964,1.698194,0,800.2451,864.3035,2,0,0,2,5,5,86.7,17.2,0,81.8,660,660,0,0,1.609438,6.49224,0,4.564348,6.543533,1,0,0,81.8,8.969274,1.609438,6.761924,1 +14,3,95,1,1,328537,0,7856.892,6.436687,1,16,1,64.40245,3.243105,0,0,0,67.64555,0,0,0,8,0,5,91.7,9.967326,0,66.7,660,660,1,1,1.609438,6.49224,0,4.564348,6.543533,0,0,0,66.7,8.969274,1.609438,4.214282,1 +14,3,95,1,2,328537,0,7856.892,7.436687,1,16,1,36.56821,4.969526,0,0,0,41.53774,0,0,0,4,1,5,91.7,9.967326,0,66.7,660,660,1,1,1.609438,6.49224,0,4.564348,6.543533,0,0,0,66.7,8.969274,1.609438,3.726602,1 +14,3,95,1,3,328537,0,7856.892,8.436687,1,16,1,70.24935,7.738607,0,0,0,77.98796,0,0,0,3,1,5,91.7,9.967326,0,66.7,660,660,1,1,1.609438,6.49224,0,4.564348,6.543533,0,0,0,66.7,8.969274,1.609438,4.356555,1 +14,3,95,1,1,328538,0,7856.892,9.837098,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,9.967326,0,100,660,660,1,1,1.609438,6.49224,0,4.564348,6.543533,0,0,0,100,8.969274,1.609438,,0 +14,3,95,1,2,328538,0,7856.892,10.8371,1,16,1,11.72058,0,0,0,0,11.72058,0,0,0,2,0,5,88.3,9.967326,0,100,660,660,1,1,1.609438,6.49224,0,4.564348,6.543533,0,0,0,100,8.969274,1.609438,2.461346,1 +14,3,95,1,3,328538,0,7856.892,11.8371,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,9.967326,0,100,660,660,1,1,1.609438,6.49224,0,4.564348,6.543533,0,0,0,100,8.969274,1.609438,,0 +14,3,95,1,1,328539,0,7856.892,30.43121,0,18,1,164.0705,0,0,0,0,164.0705,0,0,0,1,24,5,81.4,6.9,0,71.6,660,660,0,0,1.609438,6.49224,0,4.564348,6.543533,0,0,0,71.6,8.969274,1.609438,5.100296,1 +14,3,95,1,2,328539,0,7856.892,31.43121,0,18,1,151.6643,2.836381,0,0,0,154.5007,0,0,0,7,0,5,81.4,6.9,0,71.6,660,660,0,0,1.609438,6.49224,0,4.564348,6.543533,0,0,0,71.6,8.969274,1.609438,5.040199,1 +14,3,95,1,3,328539,0,7856.892,32.43121,0,18,1,1.504729,4.987103,0,0,0,6.491831,0,0,0,0,0,5,81.4,6.9,0,71.6,660,660,0,0,1.609438,6.49224,0,4.564348,6.543533,0,0,0,71.6,8.969274,1.609438,1.870545,1 +14,3,95,1,1,328540,0,7856.892,3.252567,0,16,1,77.63023,8.222676,0,0,0,85.85291,0,0,0,6,0,5,83.39137,9.967326,0,66.7,660,660,1,0,1.609438,6.49224,0,4.564348,6.543533,0,0,0,66.7,8.969274,1.609438,4.452635,1 +14,3,95,1,2,328540,0,7856.892,4.252567,0,16,1,30.94234,5.954055,0,0,0,36.89639,0,0,0,5,0,5,83.39137,9.967326,0,66.7,660,660,1,0,1.609438,6.49224,0,4.564348,6.543533,0,0,0,66.7,8.969274,1.609438,3.608114,1 +14,3,95,1,3,328540,0,7856.892,5.252567,0,16,1,0,3.095443,0,0,0,3.095443,0,0,0,0,0,5,83.39137,9.967326,0,66.7,660,660,1,0,1.609438,6.49224,0,4.564348,6.543533,0,0,0,66.7,8.969274,1.609438,1.129931,1 +10,3,50,1,1,328545,0,8077.419,3.731691,1,12,1,98.19681,9.119011,0,0,0,107.3158,0,0,0,4,0,5,83.39137,9.967326,0,88.9,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,88.9,8.996951,1.609438,4.675776,1 +10,3,50,1,2,328545,0,8077.419,4.73169,1,12,1,12.31061,0,0,0,0,12.31061,0,0,0,2,0,5,83.39137,9.967326,0,88.9,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,88.9,8.996951,1.609438,2.510461,1 +10,3,50,1,3,328545,0,8077.419,5.73169,1,12,1,90.13871,0,0,0,1412.722,1502.861,1,0,0,8,8,5,83.39137,9.967326,0,88.9,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,88.9,8.996951,1.609438,7.315126,1 +10,3,50,1,4,328545,0,8077.419,6.73169,1,12,1,14.57267,1.851122,15.75423,0,0,32.17802,0,0,0,1,1,5,83.39137,9.967326,0,88.9,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,88.9,8.996951,1.609438,3.471284,1 +10,3,50,1,5,328545,0,8077.419,7.73169,1,12,1,8.944544,3.520572,7.155635,0,0,19.62075,0,0,0,0,1,5,83.39137,9.967326,0,88.9,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,88.9,8.996951,1.609438,2.976588,1 +10,3,50,1,1,328546,0,8077.419,31.46064,0,12,1,13.39516,6.826378,28.79959,0,0,49.02112,0,0,0,1,1,5,79.3,3.4,0,76.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,76.1,8.996951,1.609438,3.892251,1 +10,3,50,1,2,328546,0,8077.419,32.46064,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,79.3,3.4,0,76.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,76.1,8.996951,1.609438,,0 +10,3,50,1,3,328546,0,8077.419,33.46064,0,12,1,114.7811,0,30.34244,0,0,145.1235,0,0,0,5,1,5,79.3,3.4,0,76.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,76.1,8.996951,1.609438,4.977585,1 +10,3,50,1,4,328546,0,8077.419,34.46064,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,79.3,3.4,0,76.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,76.1,8.996951,1.609438,,0 +10,3,50,1,5,328546,0,8077.419,35.46064,0,12,1,8.944544,0,26.83363,0,0,35.77818,0,0,0,0,1,5,79.3,3.4,0,76.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,76.1,8.996951,1.609438,3.577338,1 +10,3,50,1,1,328547,0,8077.419,8.77755,0,12,1,5.151984,1.262236,0,0,0,6.414219,0,0,0,1,0,5,75,9.967326,0,85.2,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,85.2,8.996951,1.609438,1.858517,1 +10,3,50,1,2,328547,0,8077.419,9.77755,0,12,1,13.25758,0,0,0,0,13.25758,0,0,0,1,0,5,75,9.967326,0,85.2,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,85.2,8.996951,1.609438,2.584569,1 +10,3,50,1,3,328547,0,8077.419,10.77755,0,12,1,44.21326,0,19.50585,0,0,63.71912,0,0,0,5,1,5,75,9.967326,0,85.2,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,85.2,8.996951,1.609438,4.154485,1 +10,3,50,1,4,328547,0,8077.419,11.77755,0,12,1,29.53919,3.938559,0,0,417.6447,451.1225,1,0,0,3,0,5,75,9.967326,0,85.2,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,85.2,8.996951,1.609438,6.111739,1 +10,3,50,1,5,328547,0,8077.419,12.77755,0,12,1,59.74955,0,7.155635,0,0,66.90519,0,0,0,2,1,5,75,9.967326,0,85.2,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,85.2,8.996951,1.609438,4.203277,1 +10,3,50,1,1,328548,0,8077.419,28.72279,1,12,1,30.9119,7.372488,23.18393,0,0,61.46832,0,0,0,2,1,5,52.7,13.8,0,63.6,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,63.6,8.996951,1.609438,4.118522,1 +10,3,50,1,2,328548,0,8077.419,29.72279,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,52.7,13.8,0,63.6,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,63.6,8.996951,1.609438,,0 +10,3,50,1,3,328548,0,8077.419,30.72279,1,12,1,16.90507,5.808409,7.802341,0,0,30.51582,0,0,0,1,1,5,52.7,13.8,0,63.6,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,63.6,8.996951,1.609438,3.418245,1 +10,3,50,1,4,328548,0,8077.419,31.72279,1,12,1,5.120126,2.441906,0,0,0,7.562032,0,0,0,1,0,5,52.7,13.8,0,63.6,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,63.6,8.996951,1.609438,2.02314,1 +10,3,50,1,5,328548,0,8077.419,32.72279,1,12,1,8.944544,0,25.04472,0,0,33.98927,0,0,0,0,1,5,52.7,13.8,0,63.6,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,63.6,8.996951,1.609438,3.526045,1 +10,3,50,1,1,328549,0,8077.419,1.883641,1,12,1,24.21432,1.159196,0,0,0,25.37352,0,0,0,3,0,5,83.39137,9.967326,0,70.4,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,70.4,8.996951,1.609438,3.233706,1 +10,3,50,1,2,328549,0,8077.419,2.883641,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83.39137,9.967326,0,70.4,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,70.4,8.996951,1.609438,,0 +10,3,50,1,3,328549,0,8077.419,3.883641,1,12,1,15.60468,0,0,0,0,15.60468,0,0,0,3,0,5,83.39137,9.967326,0,70.4,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,70.4,8.996951,1.609438,2.747571,1 +10,3,50,1,4,328549,0,8077.419,4.883641,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83.39137,9.967326,0,70.4,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,70.4,8.996951,1.609438,,0 +10,3,50,1,5,328549,0,8077.419,5.883641,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83.39137,9.967326,0,70.4,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,70.4,8.996951,1.609438,,0 +19,3,25,0,1,328592,0,8017.009,59.14579,1,12,1,84.26966,8.682329,28.60061,0,0,121.5526,0,0,0,8,0,2,78.2,24.1,1,43.2,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,43.2,8.989446,.6931472,4.800347,1 +19,3,25,0,2,328592,0,8017.009,60.14579,1,12,1,191.7018,11.65026,0,0,0,203.3521,0,0,0,3,2,2,78.2,24.1,1,43.2,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,43.2,8.989446,.6931472,5.314939,1 +19,3,25,0,3,328592,0,8017.009,61.14579,1,12,1,15.47721,76.89166,0,0,0,92.36887,0,0,0,2,0,2,78.2,24.1,1,43.2,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,43.2,8.989446,.6931472,4.52579,1 +19,3,25,0,1,328593,0,8017.009,55.67967,0,12,1,10.2145,0,34.72932,0,0,44.94382,0,0,0,1,0,2,76.6,20.7,1,64.8,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,64.8,8.989446,.6931472,3.805413,1 +19,3,25,0,2,328593,0,8017.009,56.67967,0,12,1,61.41585,8.556025,0,0,658.7389,728.7108,1,0,0,2,4,2,76.6,20.7,1,64.8,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,64.8,8.989446,.6931472,6.591277,1 +19,3,25,0,3,328593,0,8017.009,57.67967,0,12,1,72.26999,8.16853,17.19691,0,0,97.63543,0,0,0,5,3,2,76.6,20.7,1,64.8,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,64.8,8.989446,.6931472,4.581241,1 +11,3,0,1,1,328614,0,9646.334,6.633812,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,100,9.967326,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,9.174437,1.609438,,0 +11,3,0,1,2,328614,0,9646.334,7.633812,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,100,9.967326,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,9.174437,1.609438,,0 +11,3,0,1,3,328614,0,9646.334,8.633813,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,100,9.967326,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,9.174437,1.609438,,0 +11,3,0,1,1,328615,0,9646.334,37.79603,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,78.7,24.1,0,77.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,77.3,9.174437,1.609438,,0 +11,3,0,1,2,328615,0,9646.334,38.79603,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,78.7,24.1,0,77.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,77.3,9.174437,1.609438,,0 +11,3,0,1,3,328615,0,9646.334,39.79603,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,78.7,24.1,0,77.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,77.3,9.174437,1.609438,,0 +11,3,0,1,1,328616,0,9646.334,1.604381,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,83.39137,9.967326,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,9.174437,1.609438,,0 +11,3,0,1,2,328616,0,9646.334,2.604381,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,83.39137,9.967326,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,9.174437,1.609438,,0 +11,3,0,1,3,328616,0,9646.334,3.604381,0,15,1,0,0,0,0,0,0,0,0,0,0,0,5,83.39137,9.967326,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,9.174437,1.609438,,0 +11,3,0,1,1,328617,0,9646.334,11.5154,1,15,1,36.77222,0,0,0,0,36.77222,0,0,0,3,0,5,96.7,9.967326,0,100,0,0,1,1,1.609438,0,0,0,0,0,0,0,100,9.174437,1.609438,3.604743,1 +11,3,0,1,2,328617,0,9646.334,12.5154,1,15,1,0,0,0,0,0,0,0,0,0,0,0,5,96.7,9.967326,0,100,0,0,1,1,1.609438,0,0,0,0,0,0,0,100,9.174437,1.609438,,0 +11,3,0,1,3,328617,0,9646.334,13.5154,1,15,1,0,0,0,0,0,0,0,0,0,0,0,5,96.7,9.967326,0,100,0,0,1,1,1.609438,0,0,0,0,0,0,0,100,9.174437,1.609438,,0 +11,3,0,1,1,328618,0,9646.334,37.04586,1,15,1,22.98264,0,0,0,0,22.98264,0,0,0,2,0,5,71.3,17.2,0,85.2,0,0,0,0,1.609438,0,0,0,0,0,0,0,85.2,9.174437,1.609438,3.134739,1 +11,3,0,1,2,328618,0,9646.334,38.04586,1,15,1,0,0,0,0,0,0,0,0,0,0,0,5,71.3,17.2,0,85.2,0,0,0,0,1.609438,0,0,0,0,0,0,0,85.2,9.174437,1.609438,,0 +11,3,0,1,3,328618,0,9646.334,39.04586,1,15,1,0,0,0,0,0,0,0,0,0,0,0,5,71.3,17.2,0,85.2,0,0,0,0,1.609438,0,0,0,0,0,0,0,85.2,9.174437,1.609438,,0 +17,3,25,0,1,328639,0,5876.246,22.59822,0,12,1,15.32176,0,0,0,0,15.32176,0,0,0,1,0,2,75,10.3,0,43.2,650,650,0,0,.6931472,6.476973,0,3.258096,7.863267,1,0,0,43.2,8.678843,.6931472,2.729274,1 +17,3,25,0,2,328639,0,5876.246,23.59822,0,12,1,35.84154,0,0,0,0,35.84154,0,0,0,2,0,2,75,10.3,0,43.2,650,650,0,0,.6931472,6.476973,0,3.258096,7.863267,1,0,0,43.2,8.678843,.6931472,3.579108,1 +17,3,25,0,3,328639,0,5876.246,24.59822,0,12,1,23.98968,0,26.44024,0,0,50.42992,0,0,0,1,1,2,75,10.3,0,43.2,650,650,0,0,.6931472,6.476973,0,3.258096,7.863267,1,0,0,43.2,8.678843,.6931472,3.920585,1 +17,3,25,0,1,328640,0,5876.246,21.98494,1,10,1,33.19714,7.17569,18.38611,0,0,58.75894,0,0,0,3,1,2,61.7,10.3,0,78.4,650,650,0,0,.6931472,6.476973,0,3.258096,7.863267,0,0,0,78.4,8.678843,.6931472,4.073443,1 +17,3,25,0,2,328640,0,5876.246,22.98494,1,10,1,41.72527,13.80684,0,0,0,55.53212,0,0,0,3,0,2,61.7,10.3,0,78.4,650,650,0,0,.6931472,6.476973,0,3.258096,7.863267,0,0,0,78.4,8.678843,.6931472,4.016962,1 +17,3,25,0,3,328640,0,5876.246,23.98494,1,10,1,98.8822,8.55546,23.64574,0,1238.543,1369.626,1,0,0,3,3,2,61.7,10.3,0,78.4,650,650,0,0,.6931472,6.476973,0,3.258096,7.863267,0,0,0,78.4,8.678843,.6931472,7.222293,1 +10,3,50,0,1,328678,0,2069.208,30.51608,1,12,1,12.65182,3.33502,0,0,0,15.98684,0,0,0,1,0,3,91,6.9,0,78.4,225,225,0,0,1.098612,5.416101,0,3.931826,6.109248,1,0,0,78.4,7.635405,1.098612,2.771766,1 +10,3,50,0,2,328678,0,2069.208,31.51608,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,91,6.9,0,78.4,225,225,0,0,1.098612,5.416101,0,3.931826,6.109248,1,0,0,78.4,7.635405,1.098612,,0 +10,3,50,0,3,328678,0,2069.208,32.51609,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,91,6.9,0,78.4,225,225,0,0,1.098612,5.416101,0,3.931826,6.109248,1,0,0,78.4,7.635405,1.098612,,0 +10,3,50,0,1,328679,0,2069.208,9.078713,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.3,9.967326,0,85.2,225,225,1,1,1.098612,5.416101,0,3.931826,6.109248,0,0,0,85.2,7.635405,1.098612,,0 +10,3,50,0,2,328679,0,2069.208,10.07871,1,12,1,6.993007,0,0,0,0,6.993007,0,0,0,1,0,3,83.3,9.967326,0,85.2,225,225,1,1,1.098612,5.416101,0,3.931826,6.109248,0,0,0,85.2,7.635405,1.098612,1.944911,1 +10,3,50,0,3,328679,0,2069.208,11.07871,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.3,9.967326,0,85.2,225,225,1,1,1.098612,5.416101,0,3.931826,6.109248,0,0,0,85.2,7.635405,1.098612,,0 +11,3,0,1,1,328742,0,2953.079,34.18207,1,12,1,222.6762,0,0,0,0,222.6762,0,0,0,6,0,4,81.9,0,0,90.9,0,1058.98,0,0,1.386294,6.965062,0,0,0,0,0,0,90.9,7.990942,1.386294,5.405719,1 +11,3,0,1,2,328742,0,2953.079,35.18207,1,12,1,198.5466,0,0,0,0,198.5466,0,0,0,1,16,4,81.9,0,0,90.9,0,1058.98,0,0,1.386294,6.965062,0,0,0,0,0,0,90.9,7.990942,1.386294,5.291024,1 +11,3,0,1,3,328742,0,2953.079,36.18207,1,12,1,43.42218,0,0,0,0,43.42218,0,0,0,0,7,4,81.9,0,0,90.9,0,1058.98,0,0,1.386294,6.965062,0,0,0,0,0,0,90.9,7.990942,1.386294,3.77097,1 +11,3,0,1,1,328743,0,2953.079,8.180698,0,12,1,5.617978,0,0,0,0,5.617978,0,0,0,1,0,4,70,9.967326,0,92.6,0,1058.98,1,0,1.386294,6.965062,0,0,0,0,0,0,92.6,7.990942,1.386294,1.725972,1 +11,3,0,1,2,328743,0,2953.079,9.180698,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,70,9.967326,0,92.6,0,1058.98,1,0,1.386294,6.965062,0,0,0,0,0,0,92.6,7.990942,1.386294,,0 +11,3,0,1,3,328743,0,2953.079,10.1807,0,12,1,26.6552,0,0,0,0,26.6552,0,0,0,1,3,4,70,9.967326,0,92.6,0,1058.98,1,0,1.386294,6.965062,0,0,0,0,0,0,92.6,7.990942,1.386294,3.282984,1 +11,3,0,1,1,328744,0,2953.079,38.27242,0,11,1,63.32993,4.698672,34.72932,0,0,102.7579,0,0,0,1,0,4,71.8,10.3,0,88.6,0,1058.98,0,0,1.386294,6.965062,0,0,0,0,0,0,88.6,7.990942,1.386294,4.632376,1 +11,3,0,1,2,328744,0,2953.079,39.27242,0,11,1,140.0609,0,7.759025,0,0,147.82,0,0,0,5,2,4,71.8,10.3,0,88.6,0,1058.98,0,0,1.386294,6.965062,0,0,0,0,0,0,88.6,7.990942,1.386294,4.995995,1 +11,3,0,1,3,328744,0,2953.079,40.27242,0,11,1,50.30095,0,26.54772,0,0,76.84867,0,0,0,1,4,4,71.8,10.3,0,88.6,0,1058.98,0,0,1.386294,6.965062,0,0,0,0,0,0,88.6,7.990942,1.386294,4.341838,1 +11,3,0,1,1,328745,0,2953.079,11.28542,0,12,1,5.617978,1.838611,0,0,0,7.456588,0,0,0,1,0,4,76.7,9.967326,0,88.9,0,1058.98,1,0,1.386294,6.965062,0,0,0,0,0,0,88.9,7.990942,1.386294,2.009098,1 +11,3,0,1,2,328745,0,2953.079,12.28542,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.7,9.967326,0,88.9,0,1058.98,1,0,1.386294,6.965062,0,0,0,0,0,0,88.9,7.990942,1.386294,,0 +11,3,0,1,3,328745,0,2953.079,13.28542,0,12,1,121.2382,2.128117,12.05933,0,0,135.4256,0,0,0,5,4,4,76.7,9.967326,0,88.9,0,1058.98,1,0,1.386294,6.965062,0,0,0,0,0,0,88.9,7.990942,1.386294,4.908422,1 +10,3,50,0,1,328767,0,5167.742,56.67899,0,12,1,289.7855,132.8396,25.53626,0,490.4903,938.6517,1,0,0,7,1,2,80.9,20.7,0,75,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,1,0,75,8.550385,.6931472,6.844444,1 +10,3,50,0,2,328767,0,5167.742,57.67899,0,12,1,45.00703,105.6306,0,0,0,150.6376,0,0,0,4,0,2,80.9,20.7,0,75,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,1,0,75,8.550385,.6931472,5.014877,1 +10,3,50,0,3,328767,0,5167.742,58.67899,0,12,1,109.2003,157.8719,25.79536,0,0,292.8676,0,0,0,6,6,2,80.9,20.7,0,75,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,1,0,75,8.550385,.6931472,5.67972,1 +10,3,50,0,1,328768,0,5167.742,57.98494,1,9,1,162.9213,14.98979,0,0,0,177.9111,0,0,0,6,0,2,66.5,13.8,0,76.2,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,1,0,76.2,8.550385,.6931472,5.181284,1 +10,3,50,0,2,328768,0,5167.742,58.98494,1,9,1,302.5692,64.11158,20.62822,0,0,387.309,0,0,0,13,1,2,66.5,13.8,0,76.2,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,1,0,76.2,8.550385,.6931472,5.959223,1 +10,3,50,0,3,328768,0,5167.742,59.98494,1,9,1,55.03009,31.01892,19.34652,0,0,105.3955,0,0,0,5,1,2,66.5,13.8,0,76.2,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,1,0,76.2,8.550385,.6931472,4.65772,1 +13,3,0,1,1,328789,0,2171.261,5.774127,0,10,1,49.59514,0,0,0,359.8178,409.413,1,0,0,2,0,2,63.3,9.967326,0,55.6,300,300,1,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,55.6,7.683524,.6931472,6.014724,1 +13,3,0,1,2,328789,0,2171.261,6.774127,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,63.3,9.967326,0,55.6,300,300,1,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,55.6,7.683524,.6931472,,0 +13,3,0,1,3,328789,0,2171.261,7.774127,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,63.3,9.967326,0,55.6,300,300,1,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,55.6,7.683524,.6931472,,0 +13,3,0,1,1,328790,0,2171.261,23.8987,1,10,1,16.70041,6.933198,0,0,0,23.6336,0,0,0,1,0,2,56.4,10.3,0,40.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,40.9,7.683524,.6931472,3.16267,1 +13,3,0,1,2,328790,0,2171.261,24.8987,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,56.4,10.3,0,40.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,40.9,7.683524,.6931472,,0 +13,3,0,1,3,328790,0,2171.261,25.8987,1,10,1,26.50705,3.463018,0,0,0,29.97007,0,0,0,2,0,2,56.4,10.3,0,40.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,40.9,7.683524,.6931472,3.400199,1 +13,3,0,1,1,328800,0,7196.79,35.86584,1,11.38739,1,35.90587,0,21.25506,0,469.1397,526.3006,1,0,0,2,1,7,89.4,6.9,0,72.7,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,72.7,8.881529,1.94591,6.265872,1 +13,3,0,1,2,328800,0,7196.79,36.86584,1,11.38739,1,309.0909,0,0,0,0,309.0909,0,0,0,6,0,7,89.4,6.9,0,72.7,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,72.7,8.881529,1.94591,5.733635,1 +13,3,0,1,3,328800,0,7196.79,37.86584,1,11.38739,1,56.26336,1.881146,0,0,0,58.1445,0,0,0,2,0,7,89.4,6.9,0,72.7,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,72.7,8.881529,1.94591,4.062932,1 +13,3,0,1,1,328801,0,7196.79,11.32923,1,11.38739,1,53.01114,0,0,0,0,53.01114,0,0,0,1,0,7,96.7,9.967326,0,81.5,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,81.5,8.881529,1.94591,3.970502,1 +13,3,0,1,2,328801,0,7196.79,12.32923,1,11.38739,1,25.36131,0,0,0,0,25.36131,0,0,0,1,0,7,96.7,9.967326,0,81.5,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,81.5,8.881529,1.94591,3.233225,1 +13,3,0,1,3,328801,0,7196.79,13.32923,1,11.38739,1,0,0,0,0,0,0,0,0,0,0,0,7,96.7,9.967326,0,81.5,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,81.5,8.881529,1.94591,,0 +13,3,0,1,1,328802,0,7196.79,12.98836,1,11.38739,1,10.12146,0,21.25506,0,0,31.37652,0,0,0,0,1,7,100,9.967326,0,85.2,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,85.2,8.881529,1.94591,3.44606,1 +13,3,0,1,2,328802,0,7196.79,13.98836,1,11.38739,1,14.35897,1.818182,0,0,0,16.17716,0,0,0,1,0,7,100,9.967326,0,85.2,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,85.2,8.881529,1.94591,2.7836,1 +13,3,0,1,3,328802,0,7196.79,14.98836,1,11.38739,1,0,0,0,0,0,0,0,0,0,0,0,7,100,9.967326,0,85.2,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,85.2,8.881529,1.94591,,0 +13,3,0,1,1,328803,0,7196.79,14.17385,1,11.38739,1,28.34008,0,21.25506,0,0,49.59514,0,0,0,2,1,7,68.1,3.4,0,72.7,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,72.7,8.881529,1.94591,3.903893,1 +13,3,0,1,2,328803,0,7196.79,15.17385,1,11.38739,1,84.47552,0,0,0,0,84.47552,0,0,0,4,0,7,68.1,3.4,0,72.7,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,72.7,8.881529,1.94591,4.436462,1 +13,3,0,1,3,328803,0,7196.79,16.17385,1,11.38739,1,19.9658,0,0,0,0,19.9658,0,0,0,1,0,7,68.1,3.4,0,72.7,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,72.7,8.881529,1.94591,2.994021,1 +13,3,0,1,1,328804,0,7196.79,29.295,0,9,1,10.12146,1.361336,21.25506,0,344.2358,376.9737,1,0,0,0,1,7,94.1,6.9,0,55,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,1,0,0,55,8.881529,1.94591,5.932176,1 +13,3,0,1,2,328804,0,7196.79,30.295,0,9,1,482.4243,.2331002,0,0,0,482.6573,0,0,0,18,0,7,94.1,6.9,0,55,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,1,0,0,55,8.881529,1.94591,6.179307,1 +13,3,0,1,3,328804,0,7196.79,31.295,0,9,1,169.1749,2.907225,0,0,0,172.0821,0,0,0,11,0,7,94.1,6.9,0,55,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,1,0,0,55,8.881529,1.94591,5.147972,1 +13,3,0,1,1,328805,0,7196.79,7.838467,1,11.38739,1,25.30364,0,0,0,0,25.30364,0,0,0,1,0,7,100,9.967326,0,85.2,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,85.2,8.881529,1.94591,3.230948,1 +13,3,0,1,2,328805,0,7196.79,8.838467,1,11.38739,1,0,0,0,0,0,0,0,0,0,0,0,7,100,9.967326,0,85.2,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,85.2,8.881529,1.94591,,0 +13,3,0,1,3,328805,0,7196.79,9.838467,1,11.38739,1,206.9688,3.441642,0,0,0,210.4104,0,0,0,8,0,7,100,9.967326,0,85.2,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,85.2,8.881529,1.94591,5.34906,1 +18,3,25,0,1,328807,0,7196.79,54.25873,0,7,1,159.7549,117.7732,30.64351,0,698.0235,1006.195,1,0,0,11,1,2,87.2,10.3,0,69,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,69,8.881529,.6931472,6.913931,1 +18,3,25,0,2,328807,0,7196.79,55.25873,0,7,1,67.08861,124.6835,0,0,0,191.7722,0,0,0,5,0,2,87.2,10.3,0,69,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,69,8.881529,.6931472,5.256308,1 +18,3,25,0,3,328807,0,7196.79,56.25873,0,7,1,56.6638,117.2614,.8598452,0,0,174.785,0,0,0,6,0,2,87.2,10.3,0,69,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,69,8.881529,.6931472,5.163557,1 +18,3,25,0,4,328807,0,7196.79,57.25873,0,7,1,569.2711,131.8844,143.0787,0,1202.098,2046.332,1,0,0,14,1,2,87.2,10.3,0,69,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,69,8.881529,.6931472,7.623804,1 +18,3,25,0,5,328807,0,7196.79,58.25873,0,7,1,178.1387,128.7438,25.12385,0,3441.883,3773.889,3,0,0,10,2,2,87.2,10.3,0,69,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,69,8.881529,.6931472,8.235861,1 +18,3,25,0,1,328808,0,7196.79,51.62492,1,7,1,81.71603,3.54954,34.21859,0,0,119.4842,0,0,0,1,1,2,87.2,10.3,0,81.8,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,81.8,8.881529,.6931472,4.783184,1 +18,3,25,0,2,328808,0,7196.79,52.62492,1,7,1,34.2241,11.15799,0,0,0,45.38209,0,0,0,3,1,2,87.2,10.3,0,81.8,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,81.8,8.881529,.6931472,3.815118,1 +18,3,25,0,3,328808,0,7196.79,53.62492,1,7,1,9.88822,0,36.97334,0,0,46.86156,0,0,0,0,1,2,87.2,10.3,0,81.8,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,81.8,8.881529,.6931472,3.847198,1 +18,3,25,0,4,328808,0,7196.79,54.62492,1,7,1,18.99961,11.03916,25.59131,0,0,55.63009,0,0,0,1,1,2,87.2,10.3,0,81.8,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,81.8,8.881529,.6931472,4.018724,1 +18,3,25,0,5,328808,0,7196.79,55.62492,1,7,1,21.47912,16.38358,23.35456,0,0,61.21727,0,0,0,1,1,2,87.2,10.3,0,81.8,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,81.8,8.881529,.6931472,4.114429,1 +13,3,0,0,1,328865,0,3283.871,42.22861,0,10,1,29.35223,8.669028,0,0,0,38.02126,0,0,0,1,0,5,53.2,20.7,1,45.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,45.5,8.097083,1.609438,3.638145,1 +13,3,0,0,2,328865,0,3283.871,43.22861,0,10,1,0,5.752914,0,0,0,5.752914,0,0,0,0,0,5,53.2,20.7,1,45.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,45.5,8.097083,1.609438,1.749707,1 +13,3,0,0,3,328865,0,3283.871,44.22861,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,53.2,20.7,1,45.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,45.5,8.097083,1.609438,,0 +13,3,0,0,1,328866,0,3283.871,16.67625,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,94.1,0,0,78.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,78.4,8.097083,1.609438,,0 +13,3,0,0,2,328866,0,3283.871,17.67625,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,94.1,0,0,78.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,78.4,8.097083,1.609438,,0 +13,3,0,0,3,328866,0,3283.871,18.67625,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,94.1,0,0,78.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,78.4,8.097083,1.609438,,0 +13,3,0,0,1,328867,0,3283.871,36.13416,1,8,1,47.06478,30.81478,0,0,0,77.87955,0,0,0,0,0,5,85.6,17.2,0,59.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,59.1,8.097083,1.609438,4.355164,1 +13,3,0,0,2,328867,0,3283.871,37.13416,1,8,1,9.324009,0,0,0,0,9.324009,0,0,0,1,0,5,85.6,17.2,0,59.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,59.1,8.097083,1.609438,2.232593,1 +13,3,0,0,3,328867,0,3283.871,38.13416,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,85.6,17.2,0,59.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,59.1,8.097083,1.609438,,0 +13,3,0,1,1,328868,0,746.6276,18.46407,0,9,1,52.04959,1.578947,0,0,518.6285,572.2571,1,0,0,4,0,1,67.6,6.9,0,67,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,67,6.616905,0,6.349588,1 +13,3,0,1,2,328868,0,746.6276,19.46407,0,9,1,6.060606,6.713287,0,0,0,12.77389,0,0,0,1,0,1,67.6,6.9,0,67,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,67,6.616905,0,2.547403,1 +13,3,0,1,3,328868,0,746.6276,20.46407,0,9,1,0,0,0,0,0,0,0,0,0,0,0,1,67.6,6.9,0,67,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,67,6.616905,0,,0 +13,3,0,0,1,328869,0,3283.871,6.253251,0,8,1,7.591093,0,0,0,0,7.591093,0,0,0,1,0,5,85,9.967326,0,51.9,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,51.9,8.097083,1.609438,2.026976,1 +13,3,0,0,2,328869,0,3283.871,7.253251,0,8,1,39.0676,1.473194,22.84382,0,0,63.38462,0,0,0,1,1,5,85,9.967326,0,51.9,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,51.9,8.097083,1.609438,4.149221,1 +13,3,0,0,3,328869,0,3283.871,8.253251,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,85,9.967326,0,51.9,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,51.9,8.097083,1.609438,,0 +13,3,0,0,1,328870,0,3283.871,11.7974,0,8,1,344.8735,2.494939,0,0,0,347.3684,0,0,0,5,0,5,90,9.967326,0,70.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,70.4,8.097083,1.609438,5.850386,1 +13,3,0,0,2,328870,0,3283.871,12.7974,0,8,1,9.79021,0,25.64103,0,0,35.43124,0,0,0,0,1,5,90,9.967326,0,70.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,70.4,8.097083,1.609438,3.567594,1 +13,3,0,0,3,328870,0,3283.871,13.7974,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,90,9.967326,0,70.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,70.4,8.097083,1.609438,,0 +19,3,25,0,1,329007,0,9106.158,41.05955,0,17,1,0,0,0,0,0,0,0,0,0,0,0,5,71.3,10.3,1,70.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.5,9.116816,1.609438,,0 +19,3,25,0,2,329007,0,9106.158,42.05955,0,17,1,0,0,0,0,0,0,0,0,0,0,0,5,71.3,10.3,1,70.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.5,9.116816,1.609438,,0 +19,3,25,0,3,329007,0,9106.158,43.05955,0,17,1,33.10404,1.99914,0,0,0,35.10318,0,0,0,2,0,4,71.3,10.3,1,70.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.5,9.116816,1.386294,3.558292,1 +19,3,25,0,1,329008,0,9106.158,14.94593,0,16,1,6.128703,0,0,0,0,6.128703,0,0,0,1,0,5,70.7,0,0,88.6,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.6,9.116816,1.609438,1.812983,1 +19,3,25,0,2,329008,0,9106.158,15.94593,0,16,1,4.688232,1.875293,0,0,0,6.563526,0,0,0,1,0,5,70.7,0,0,88.6,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.6,9.116816,1.609438,1.881528,1 +19,3,25,0,3,329008,0,9106.158,16.94593,0,16,1,171.3672,5.911436,3.490972,0,0,180.7696,0,0,0,6,0,4,70.7,0,0,88.6,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.6,9.116816,1.386294,5.197223,1 +19,3,25,0,1,329009,0,9106.158,38.65298,1,16,1,51.22574,0,0,0,0,51.22574,0,0,0,5,0,5,76.6,13.8,0,80.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,80.7,9.116816,1.609438,3.936242,1 +19,3,25,0,2,329009,0,9106.158,39.65298,1,16,1,14.53352,2.953587,0,0,0,17.48711,0,0,0,1,0,5,76.6,13.8,0,80.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,80.7,9.116816,1.609438,2.861464,1 +19,3,25,0,3,329009,0,9106.158,40.65298,1,16,1,10.14617,0,0,0,0,10.14617,0,0,0,1,0,4,76.6,13.8,0,80.7,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,80.7,9.116816,1.386294,2.317097,1 +19,3,25,0,1,329010,0,9106.158,13.06502,0,16,1,21.1951,4.060266,0,0,0,25.25536,0,0,0,2,0,5,75,9.967326,1,85.2,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.116816,1.609438,3.229038,1 +19,3,25,0,2,329010,0,9106.158,14.06502,0,16,1,20.1594,0,0,0,0,20.1594,0,0,0,0,0,5,75,9.967326,1,85.2,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.116816,1.609438,3.003671,1 +19,3,25,0,3,329010,0,9106.158,15.06502,0,16,1,23.21582,3.417885,7.515047,0,0,34.14875,0,0,0,2,0,4,75,9.967326,1,85.2,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.116816,1.386294,3.530726,1 +19,3,25,0,1,329011,0,9106.158,16.1807,0,16,1,26.73647,0,0,0,0,26.73647,0,0,0,1,0,5,85.1,3.4,0,80.7,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,80.7,9.116816,1.609438,3.286028,1 +19,3,25,0,2,329011,0,9106.158,17.1807,0,16,1,16.40881,4.992968,1.40647,0,0,22.80825,0,0,0,3,0,5,85.1,3.4,0,80.7,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,80.7,9.116816,1.609438,3.127122,1 +19,3,25,1,1,329024,0,5159.531,25.5332,0,13,1,45.96527,0,0,0,0,45.96527,0,0,0,4,0,4,82.4,6.9,0,85.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,8.548795,1.386294,3.827886,1 +19,3,25,1,2,329024,0,5159.531,26.5332,0,13,1,21.09705,2.320675,0,0,0,23.41772,0,0,0,1,1,4,82.4,6.9,0,85.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,8.548795,1.386294,3.153493,1 +19,3,25,1,3,329024,0,5159.531,27.5332,0,13,1,4.299226,0,0,0,0,4.299226,0,0,0,0,1,4,82.4,6.9,0,85.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,8.548795,1.386294,1.458435,1 +19,3,25,1,1,329025,0,5159.531,2.53525,1,15,1,29.62206,5.720122,0,0,0,35.34219,0,0,0,3,0,4,83.39137,9.967326,0,74.1,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,74.1,8.548795,1.386294,3.565077,1 +19,3,25,1,2,329025,0,5159.531,3.53525,1,15,1,102.9536,2.789498,0,0,0,105.7431,0,0,0,1,0,4,83.39137,9.967326,0,74.1,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,74.1,8.548795,1.386294,4.661013,1 +19,3,25,1,3,329025,0,5159.531,4.53525,1,15,1,53.26741,6.018917,0,0,0,59.28633,0,0,0,4,1,4,83.39137,9.967326,0,74.1,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,74.1,8.548795,1.386294,4.082379,1 +19,3,25,1,1,329026,0,5159.531,1.185489,1,15,1,6.128703,7.660879,0,0,0,13.78958,0,0,0,1,0,4,83.39137,9.967326,0,51.9,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,51.9,8.548795,1.386294,2.623913,1 +19,3,25,1,2,329026,0,5159.531,2.185489,1,15,1,12.1894,4.43038,0,0,0,16.61978,0,0,0,2,0,4,83.39137,9.967326,0,51.9,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,51.9,8.548795,1.386294,2.810594,1 +19,3,25,1,3,329026,0,5159.531,3.185489,1,15,1,16.33706,10.51161,0,0,0,26.84867,0,0,0,2,0,4,83.39137,9.967326,0,51.9,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,51.9,8.548795,1.386294,3.290216,1 +19,3,25,1,1,329027,0,5159.531,24.66256,1,15,1,0,27.96221,0,0,0,27.96221,0,0,0,0,0,4,68.1,10.3,0,76.1,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,76.1,8.548795,1.386294,3.330854,1 +19,3,25,1,2,329027,0,5159.531,25.66256,1,15,1,32.3488,0,25.78528,0,0,58.13408,0,0,0,1,5,4,68.1,10.3,0,76.1,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,76.1,8.548795,1.386294,4.062752,1 +19,3,25,1,3,329027,0,5159.531,26.66256,1,15,1,57.17971,4.27773,11.17799,0,0,72.63543,0,0,0,0,11,4,68.1,10.3,0,76.1,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,76.1,8.548795,1.386294,4.285453,1 +14,3,95,1,1,329184,0,648.6804,30.97878,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,72.9,0,0,89.8,260,0,0,0,0,0,0,4.564348,5.611975,0,0,0,89.8,6.47648,0,,0 +14,3,95,1,2,329184,0,648.6804,31.97878,0,12,1,44.77262,4.571027,0,0,0,49.34365,0,0,0,3,0,1,72.9,0,0,89.8,260,0,0,0,0,0,0,4.564348,5.611975,0,0,0,89.8,6.47648,0,3.898809,1 +14,3,95,1,3,329184,0,648.6804,32.97878,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,72.9,0,0,89.8,260,0,0,0,0,0,0,4.564348,5.611975,0,0,0,89.8,6.47648,0,,0 +14,3,95,1,1,329185,0,3155.015,23.56194,1,13,1,0,0,0,0,0,0,0,0,0,0,0,1,70.2,13.8,0,87.5,400,375,0,0,0,5.926926,0,4.564348,6.042758,0,0,0,87.5,8.057065,0,,0 +14,3,95,1,2,329185,0,3155.015,24.56194,1,13,1,12.65823,0,0,0,0,12.65823,0,0,0,1,0,1,70.2,13.8,0,87.5,400,375,0,0,0,5.926926,0,4.564348,6.042758,0,0,0,87.5,8.057065,0,2.538307,1 +14,3,95,1,3,329185,0,3155.015,25.56194,1,13,1,7.308684,0,0,0,0,7.308684,0,0,0,1,0,1,70.2,13.8,0,87.5,400,375,0,0,0,5.926926,0,4.564348,6.042758,0,0,0,87.5,8.057065,0,1.989063,1 +11,3,0,1,1,329191,0,8130.792,16.4052,0,12,1,5.107252,0,0,0,0,5.107252,0,0,0,1,0,6,93.1,0,0,100,0,591.72,1,0,1.791759,6.383034,0,0,0,0,1,0,100,9.003536,1.791759,1.630661,1 +11,3,0,1,2,329191,0,8130.792,17.4052,0,12,1,45.47586,0,0,0,0,45.47586,0,0,0,2,0,6,93.1,0,0,100,0,591.72,1,0,1.791759,6.383034,0,0,0,0,1,0,100,9.003536,1.791759,3.817182,1 +11,3,0,1,3,329191,0,8130.792,18.4052,0,12,1,42.13242,1.504729,1.375752,0,0,45.0129,0,0,0,1,0,6,93.1,0,0,100,0,591.72,0,0,1.791759,6.383034,0,0,0,0,1,0,100,9.003536,1.791759,3.806949,1 +11,3,0,1,1,329192,0,8130.792,18.47228,0,11,1,15.83248,5.337079,.5617977,0,0,21.73136,0,0,0,0,0,6,83.5,3.4,0,89.8,0,591.72,0,0,1.791759,6.383034,0,0,0,0,1,0,89.8,9.003536,1.791759,3.078756,1 +11,3,0,1,2,329192,0,8130.792,19.47228,0,11,1,300.4079,13.61932,0,0,0,314.0272,0,0,0,3,1,6,83.5,3.4,0,89.8,0,591.72,0,0,1.791759,6.383034,0,0,0,0,1,0,89.8,9.003536,1.791759,5.74948,1 +11,3,0,1,3,329192,0,8130.792,20.47228,0,11,1,76.09631,2.343078,0,0,0,78.43938,0,0,0,3,0,6,83.5,3.4,0,89.8,0,591.72,0,0,1.791759,6.383034,0,0,0,0,1,0,89.8,9.003536,1.791759,4.362326,1 +11,3,0,1,1,329193,0,8130.792,10.82546,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,9.967326,0,100,0,591.72,1,0,1.791759,6.383034,0,0,0,0,0,0,100,9.003536,1.791759,,0 +11,3,0,1,2,329193,0,8130.792,11.82546,0,12,1,25.08204,2.22691,0,0,0,27.30895,0,0,0,1,0,6,88.3,9.967326,0,100,0,591.72,1,0,1.791759,6.383034,0,0,0,0,0,0,100,9.003536,1.791759,3.307215,1 +11,3,0,1,3,329193,0,8130.792,12.82546,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,9.967326,0,100,0,591.72,1,0,1.791759,6.383034,0,0,0,0,0,0,100,9.003536,1.791759,,0 +11,3,0,1,1,329194,0,8130.792,37.11704,1,12,1,552.0531,226.0368,84.41267,0,6845.592,7708.095,2,0,0,23,0,6,67,20.7,1,51.1,0,591.72,0,0,1.791759,6.383034,0,0,0,0,0,1,51.1,9.003536,1.791759,8.950027,1 +11,3,0,1,2,329194,0,8130.792,38.11704,1,12,1,1480.975,113.8537,77.97937,0,9120.244,10793.05,6,0,0,72,1,6,67,20.7,1,51.1,0,591.72,0,0,1.791759,6.383034,0,0,0,0,0,1,51.1,9.003536,1.791759,9.286658,1 +11,3,0,1,3,329194,0,8130.792,39.11704,1,12,1,285.4471,211.3757,115.4213,0,6888.856,7501.101,8,0,0,18,0,6,67,20.7,1,51.1,0,591.72,0,0,1.791759,6.383034,0,0,0,0,0,1,51.1,9.003536,1.791759,8.922805,1 +11,3,0,1,1,329195,0,8130.792,12.81314,0,12,1,55.92441,0,0,0,0,55.92441,0,0,0,3,1,6,90,9.967326,0,100,0,591.72,1,0,1.791759,6.383034,0,0,0,1,0,0,100,9.003536,1.791759,4.024001,1 +11,3,0,1,2,329195,0,8130.792,13.81314,0,12,1,25.78528,2.320675,0,0,0,28.10595,0,0,0,1,0,6,90,9.967326,0,100,0,591.72,1,0,1.791759,6.383034,0,0,0,1,0,0,100,9.003536,1.791759,3.335981,1 +11,3,0,1,3,329195,0,8130.792,14.81314,0,12,1,90.90714,0,0,0,0,90.90714,0,0,0,3,0,6,90,9.967326,0,100,0,591.72,1,0,1.791759,6.383034,0,0,0,1,0,0,100,9.003536,1.791759,4.509839,1 +11,3,0,1,1,329196,0,8130.792,40.5284,0,9,1,76.60879,28.19203,0,0,0,104.8008,0,0,0,3,1,6,63.3,0,1,39.8,0,591.72,0,0,1.791759,6.383034,0,0,0,0,0,1,39.8,9.003536,1.791759,4.652061,1 +11,3,0,1,2,329196,0,8130.792,41.5284,0,9,1,390.6235,80.98453,1.875293,0,1556.357,2029.841,1,0,0,8,8,6,63.3,0,1,39.8,0,591.72,0,0,1.791759,6.383034,0,0,0,0,0,1,39.8,9.003536,1.791759,7.615713,1 +11,3,0,1,3,329196,0,8130.792,42.5284,0,9,1,61.04901,49.13156,0,0,0,110.1806,0,0,0,4,0,6,63.3,0,1,39.8,0,591.72,0,0,1.791759,6.383034,0,0,0,0,0,1,39.8,9.003536,1.791759,4.70212,1 +13,3,0,1,1,329225,0,2116.716,.7583846,0,12,1,6.128703,2.73238,0,0,0,8.861083,0,0,0,1,0,2,83.39137,9.967326,0,63,300,300,1,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,63,7.658093,.6931472,2.181669,1 +13,3,0,1,2,329225,0,2116.716,1.758385,0,12,1,5.625879,0,0,0,0,5.625879,0,0,0,1,0,2,83.39137,9.967326,0,63,300,300,1,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,63,7.658093,.6931472,1.727377,1 +13,3,0,1,3,329225,0,2116.716,2.758385,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,83.39137,9.967326,0,63,300,300,1,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,63,7.658093,.6931472,,0 +13,3,0,1,1,329226,0,2116.716,22.01232,1,12,1,22.98264,15.04086,0,0,436.43,474.4535,1,0,0,3,0,2,44.7,31,1,73.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,73.9,7.658093,.6931472,6.162164,1 +13,3,0,1,2,329226,0,2116.716,23.01232,1,12,1,11.72058,0,23.44116,0,0,35.16174,0,0,0,1,0,2,44.7,31,1,73.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,73.9,7.658093,.6931472,3.559959,1 +13,3,0,1,3,329226,0,2116.716,24.01232,1,12,1,28.14273,0,0,0,0,28.14273,0,0,0,1,1,2,44.7,31,1,73.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,73.9,7.658093,.6931472,3.337289,1 +13,3,0,1,1,329227,0,1,28.35044,0,10,1,66.67518,0,0,0,960.7252,1027.4,1,0,0,5,0,1,39.9,10.3,1,27.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,1,0,27.3,.6931472,0,6.934787,1 +13,3,0,1,3,329227,0,1,30.35044,0,10,1,20.74377,29.10146,0,0,0,49.84523,0,0,0,2,0,1,39.9,10.3,1,27.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,1,0,27.3,.6931472,0,3.908923,1 +13,3,0,1,1,329502,0,10546.04,24.23819,1,16,1,19.73684,4.200405,18.7247,0,0,42.66194,0,0,0,1,1,2,80.9,10.3,0,65.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,65.9,9.2636,.6931472,3.753307,1 +13,3,0,1,2,329502,0,10546.04,25.23819,1,16,1,48.48485,11.74825,15.85082,0,0,76.08392,0,0,0,2,1,2,80.9,10.3,0,65.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,65.9,9.2636,.6931472,4.331837,1 +13,3,0,1,3,329502,0,10546.04,26.23819,1,16,1,134.3309,0,0,0,663.7025,798.0333,1,0,0,3,0,2,80.9,10.3,0,65.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,65.9,9.2636,.6931472,6.68215,1 +13,3,0,1,1,329503,0,10546.04,26.16564,0,16,1,13.96761,0,0,0,0,13.96761,0,0,0,1,0,2,70.2,0,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,75,9.2636,.6931472,2.636741,1 +13,3,0,1,2,329503,0,10546.04,27.16564,0,16,1,23.31002,0,27.50583,0,0,50.81585,0,0,0,1,1,2,70.2,0,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,75,9.2636,.6931472,3.928208,1 +13,3,0,1,3,329503,0,10546.04,28.16564,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,70.2,0,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,75,9.2636,.6931472,,0 +11,3,0,0,1,329514,0,2930.205,1.136208,0,10,1,55.15833,11.87436,0,0,0,67.03268,0,0,0,3,0,3,83.39137,9.967326,0,81.5,0,780.92,1,0,1.098612,6.660473,0,0,0,0,0,0,81.5,7.983169,1.098612,4.20518,1 +11,3,0,0,2,329514,0,2930.205,2.136208,0,10,1,7.735584,2.789498,0,0,0,10.52508,0,0,0,1,0,3,83.39137,9.967326,0,81.5,0,780.92,1,0,1.098612,6.660473,0,0,0,0,0,0,81.5,7.983169,1.098612,2.353761,1 +11,3,0,0,3,329514,0,2930.205,3.136208,0,10,1,26.44024,10.5503,0,0,0,36.99054,0,0,0,6,0,4,83.39137,9.967326,0,81.5,0,780.92,1,0,1.386294,6.660473,0,0,0,0,0,0,81.5,7.983169,1.386294,3.610662,1 +11,3,0,0,1,329515,0,2930.205,29.82067,1,10,1,108.9377,8.350357,33.19714,0,0,150.4852,0,0,0,2,14,3,75.5,3.4,1,90.9,0,780.92,0,0,1.098612,6.660473,0,0,0,0,0,0,90.9,7.983169,1.098612,5.013865,1 +11,3,0,0,2,329515,0,2930.205,30.82067,1,10,1,255.5087,16.63385,0,0,661.8378,933.9803,1,0,0,0,28,3,75.5,3.4,1,90.9,0,780.92,0,0,1.098612,6.660473,0,0,0,0,0,0,90.9,7.983169,1.098612,6.839455,1 +11,3,0,0,3,329515,0,2930.205,31.82067,1,10,1,140.8427,17.88048,47.91488,0,0,206.638,0,0,0,3,15,4,75.5,3.4,1,90.9,0,780.92,0,0,1.386294,6.660473,0,0,0,0,0,0,90.9,7.983169,1.386294,5.330968,1 +11,3,0,0,1,329516,0,2930.205,32.03559,0,9,1,5.107252,0,0,0,0,5.107252,0,0,0,1,0,3,88.3,10.3,0,84.1,0,780.92,0,0,1.098612,6.660473,0,0,0,1,0,0,84.1,7.983169,1.098612,1.630661,1 +11,3,0,0,2,329516,0,2930.205,33.03559,0,9,1,3.281763,2.01594,0,0,0,5.297703,0,0,0,1,0,3,88.3,10.3,0,84.1,0,780.92,0,0,1.098612,6.660473,0,0,0,1,0,0,84.1,7.983169,1.098612,1.667273,1 +11,3,0,0,3,329516,0,2930.205,34.03559,0,9,1,133.104,1.375752,0,0,0,134.4798,0,0,0,2,4,4,88.3,10.3,0,84.1,0,780.92,0,0,1.386294,6.660473,0,0,0,1,0,0,84.1,7.983169,1.386294,4.901414,1 +5,3,25,1,1,329526,0,8387.097,23.11841,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,88.3,3.4,0,83,612.8,612.8,0,0,.6931472,6.418039,0,3.258096,7.804333,0,0,0,83,9.034569,.6931472,,0 +5,3,25,1,2,329526,0,8387.097,24.11841,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,88.3,3.4,0,83,612.8,612.8,0,0,.6931472,6.418039,0,3.258096,7.804333,0,0,0,83,9.034569,.6931472,,0 +5,3,25,1,3,329526,0,8387.097,25.11841,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,88.3,3.4,0,83,612.8,612.8,0,0,.6931472,6.418039,0,3.258096,7.804333,0,0,0,83,9.034569,.6931472,,0 +5,3,25,1,1,329527,0,8387.097,23.2334,1,14,1,11.63968,13.55769,0,0,0,25.19737,0,0,0,1,0,2,87.2,3.4,0,85.2,612.8,612.8,0,0,.6931472,6.418039,0,3.258096,7.804333,0,0,0,85.2,9.034569,.6931472,3.22674,1 +5,3,25,1,2,329527,0,8387.097,24.2334,1,14,1,23.54312,0,0,0,0,23.54312,0,0,0,1,1,2,87.2,3.4,0,85.2,612.8,612.8,0,0,.6931472,6.418039,0,3.258096,7.804333,0,0,0,85.2,9.034569,.6931472,3.158834,1 +5,3,25,1,3,329527,0,8387.097,25.2334,1,14,1,12.82599,0,0,0,0,12.82599,0,0,0,2,0,2,87.2,3.4,0,85.2,612.8,612.8,0,0,.6931472,6.418039,0,3.258096,7.804333,0,0,0,85.2,9.034569,.6931472,2.551474,1 +11,3,0,0,1,329528,0,2849.267,50.38741,1,12,1,107.763,18.08478,29.62206,0,0,155.4699,0,0,0,4,1,1,79.8,13.8,0,62.5,0,311.64,0,0,0,5.741848,0,0,0,1,0,0,62.5,7.955168,0,5.046452,1 +11,3,0,0,2,329528,0,2849.267,51.38741,1,12,1,29.53587,21.01735,0,0,0,50.55321,0,0,0,2,0,1,79.8,13.8,0,62.5,0,311.64,0,0,0,5.741848,0,0,0,1,0,0,62.5,7.955168,0,3.923027,1 +11,3,0,0,3,329528,0,2849.267,52.38741,1,12,1,74.59158,25.92003,21.06621,0,0,121.5778,0,0,0,2,1,1,79.8,13.8,0,62.5,0,311.64,0,0,0,5.741848,0,0,0,1,0,0,62.5,7.955168,0,4.800554,1 +13,3,0,1,2,329565,0,8114.956,57.94456,1,,1,14.20455,1.941288,17.99242,0,0,34.13826,0,0,0,1,1,1,92.6,10.3,0,83,,,0,0,0,0,1,4.564348,0,0,0,0,83,9.001587,0,3.530419,1 +11,3,0,0,1,329577,0,2584.164,60.87337,1,10,1,196.0639,100.4637,59.78877,0,406.5894,762.9057,1,0,0,9,4,1,83.5,10.3,1,33,0,311.64,0,0,0,5.741848,0,0,0,0,0,1,33,7.857544,0,6.637135,1 +11,3,0,0,2,329577,0,2584.164,61.87337,1,10,1,161.0795,98.41856,63.45644,0,0,322.9546,0,0,0,7,1,1,83.5,10.3,1,33,0,311.64,0,0,0,5.741848,0,0,0,0,0,1,33,7.857544,0,5.777512,1 +11,3,0,0,3,329577,0,2584.164,62.87337,1,10,1,501.4521,102.2063,87.47724,0,0,691.1357,0,0,0,15,24,1,83.5,10.3,1,33,0,311.64,0,0,0,5.741848,0,0,0,0,0,1,33,7.857544,0,6.538336,1 +14,3,95,1,1,329608,0,703.8123,11.91513,1,7,1,73.38057,0,0,0,0,73.38057,0,0,0,5,0,2,100,9.967326,0,66.7,152.1,152.1,1,1,.6931472,5.024538,0,4.564348,5.075831,0,0,0,66.7,6.557931,.6931472,4.295659,1 +14,3,95,1,2,329608,0,703.8123,12.91513,1,7,1,37.29604,2.750583,0,0,0,40.04662,0,0,0,4,0,2,100,9.967326,0,66.7,152.1,152.1,1,1,.6931472,5.024538,0,4.564348,5.075831,0,0,0,66.7,6.557931,.6931472,3.690044,1 +14,3,95,1,3,329608,0,703.8123,13.91513,1,7,1,6.84053,0,0,0,0,6.84053,0,0,0,1,0,2,100,9.967326,0,66.7,152.1,152.1,1,1,.6931472,5.024538,0,4.564348,5.075831,0,0,0,66.7,6.557931,.6931472,1.922865,1 +14,3,95,1,1,329609,0,703.8123,30.89938,1,7,1,76.74595,8.223684,20.24291,0,836.7156,941.9282,1,0,0,3,0,2,92.6,20.7,1,48.9,152.1,152.1,0,0,.6931472,5.024538,0,4.564348,5.075831,0,1,0,48.9,6.557931,.6931472,6.847929,1 +14,3,95,1,2,329609,0,703.8123,31.89938,1,7,1,11.65501,0,23.31002,0,0,34.96503,0,0,0,1,0,2,92.6,20.7,1,48.9,152.1,152.1,0,0,.6931472,5.024538,0,4.564348,5.075831,0,1,0,48.9,6.557931,.6931472,3.554348,1 +14,3,95,1,3,329609,0,703.8123,32.89938,1,7,1,21.37666,0,21.37666,0,0,42.75331,0,0,0,2,0,2,92.6,20.7,1,48.9,152.1,152.1,0,0,.6931472,5.024538,0,4.564348,5.075831,0,1,0,48.9,6.557931,.6931472,3.755447,1 +13,3,0,0,1,329631,0,5764.223,13.42094,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,90,9.967326,0,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,77.8,8.659599,1.386294,,0 +13,3,0,0,2,329631,0,5764.223,14.42094,0,8,1,32.81763,1.781528,.9376465,0,0,35.5368,0,0,0,3,0,4,90,9.967326,0,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,77.8,8.659599,1.386294,3.570569,1 +13,3,0,0,3,329631,0,5764.223,15.42094,0,8,1,57.17971,2.042132,29.66466,0,0,88.8865,0,0,0,2,0,4,90,9.967326,0,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,77.8,8.659599,1.386294,4.48736,1 +13,3,0,0,1,329632,0,5764.223,44.72827,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,70.2,3.4,1,76.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,76.1,8.659599,1.386294,,0 +13,3,0,0,2,329632,0,5764.223,45.72827,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,70.2,3.4,1,76.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,76.1,8.659599,1.386294,,0 +13,3,0,0,3,329632,0,5764.223,46.72827,0,8,1,6.448839,3.525365,0,0,449.9097,459.8839,1,0,0,1,0,4,70.2,3.4,1,76.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,76.1,8.659599,1.386294,6.130974,1 +13,3,0,0,1,329633,0,5764.223,12.54757,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,95,9.967326,0,96.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.659599,1.386294,,0 +13,3,0,0,2,329633,0,5764.223,13.54757,1,8,1,5.157056,0,0,0,0,5.157056,0,0,0,1,0,4,95,9.967326,0,96.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.659599,1.386294,1.640366,1 +13,3,0,0,3,329633,0,5764.223,14.54757,1,8,1,8.598453,0,33.08255,0,0,41.681,0,0,0,1,0,4,95,9.967326,0,96.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.659599,1.386294,3.730045,1 +13,3,0,0,1,329634,0,5764.223,11.01164,0,8,1,7.660879,0,0,0,0,7.660879,0,0,0,1,0,4,98.3,9.967326,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.659599,1.386294,2.036127,1 +13,3,0,0,2,329634,0,5764.223,12.01164,0,8,1,33.75528,4.875762,1.875293,0,0,40.50633,0,0,0,3,0,4,98.3,9.967326,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.659599,1.386294,3.701458,1 +13,3,0,0,3,329634,0,5764.223,13.01164,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,98.3,9.967326,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.659599,1.386294,,0 +13,3,0,0,1,329635,0,1501.466,58.26146,1,6,1,12.76813,103.7794,0,0,0,116.5475,0,0,0,2,0,1,54.8,10.3,1,59.1,150,198.24,0,0,0,5.289478,1,4.564348,5.061929,0,1,0,59.1,7.314863,0,4.758299,1 +13,3,0,0,2,329635,0,1501.466,59.26146,1,6,1,30.47351,102.0628,32.81763,0,0,165.354,0,0,0,2,2,1,54.8,10.3,1,59.1,150,198.24,0,0,0,5.289478,1,4.564348,5.061929,0,1,0,59.1,7.314863,0,5.108088,1 +13,3,0,0,3,329635,0,1501.466,60.26146,1,6,1,18.48667,181.6638,0,0,0,200.1505,0,0,0,1,0,1,54.8,10.3,1,59.1,150,198.24,0,0,0,5.289478,1,4.564348,5.061929,0,1,0,59.1,7.314863,0,5.299069,1 +11,3,0,1,1,329668,0,7196.79,37.7358,0,12,1,43.6373,1.494075,0,0,0,45.13137,0,0,0,2,0,1,68.1,10.3,0,79.5,0,0,0,0,0,0,0,0,0,0,0,0,79.5,8.881529,0,3.809578,1 +11,3,0,1,2,329668,0,7196.79,38.7358,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,68.1,10.3,0,79.5,0,0,0,0,0,0,0,0,0,0,0,0,79.5,8.881529,0,,0 +11,3,0,1,3,329668,0,7196.79,39.7358,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,68.1,10.3,0,79.5,0,0,0,0,0,0,0,0,0,0,0,0,79.5,8.881529,0,,0 +11,3,0,1,4,329668,0,7196.79,40.7358,0,12,1,22.92241,0,0,0,0,22.92241,0,0,0,1,0,1,68.1,10.3,0,79.5,0,0,0,0,0,0,0,0,0,0,0,0,79.5,8.881529,0,3.132115,1 +11,3,0,1,5,329668,0,7196.79,41.7358,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,68.1,10.3,0,79.5,0,0,0,0,0,0,0,0,0,0,0,0,79.5,8.881529,0,,0 +14,3,95,1,1,329695,0,6648.094,47.12663,0,12,1,196.8058,33.35909,39.15508,0,1262.772,1532.092,2,0,0,9,6,1,62.2,13.8,0,56.8,606.25,606.25,0,0,0,6.407292,0,4.564348,6.458586,0,0,0,56.8,8.802236,0,7.334389,1 +14,3,95,1,2,329695,0,6648.094,48.12663,0,12,1,195.0758,62.61837,0,0,897.1733,1154.867,1,0,0,7,8,1,62.2,13.8,0,56.8,606.25,606.25,0,0,0,6.407292,0,4.564348,6.458586,0,0,0,56.8,8.802236,0,7.051741,1 +14,3,95,1,3,329695,0,6648.094,49.12663,0,12,1,112.8305,88.4482,37.27785,0,338.0581,576.6146,1,0,0,5,6,1,62.2,13.8,0,56.8,606.25,606.25,0,0,0,6.407292,0,4.564348,6.458586,0,0,0,56.8,8.802236,0,6.357174,1 +11,3,0,1,1,329712,0,16875.07,49.01848,0,11,1,65.37283,56.46067,41.36874,0,0,163.2022,0,0,0,4,0,5,91,6.9,1,67,0,488.16,0,0,1.609438,6.190643,0,0,0,1,0,0,67,9.733652,1.609438,5.09499,1 +11,3,0,1,2,329712,0,16875.07,50.01848,0,11,1,64.69761,41.54243,7.501172,0,0,113.7412,0,0,0,3,0,5,91,6.9,1,67,0,488.16,0,0,1.609438,6.190643,0,0,0,1,0,0,67,9.733652,1.609438,4.733926,1 +11,3,0,1,3,329712,0,16875.07,51.01848,0,11,1,156.0619,64.50989,29.66466,0,0,250.2365,0,0,0,4,1,5,91,6.9,1,67,0,488.16,0,0,1.609438,6.190643,0,0,0,1,0,0,67,9.733652,1.609438,5.522406,1 +11,3,0,1,1,329713,0,16875.07,48.32033,1,12,1,220.1992,7.553626,37.28294,0,0,265.0357,0,0,0,3,0,5,60.1,6.9,0,75,0,488.16,0,0,1.609438,6.190643,0,0,0,1,0,0,75,9.733652,1.609438,5.579865,1 +11,3,0,1,2,329713,0,16875.07,49.32033,1,12,1,180.2625,43.20675,30.47351,0,0,253.9428,0,0,0,34,0,5,60.1,6.9,0,75,0,488.16,0,0,1.609438,6.190643,0,0,0,1,0,0,75,9.733652,1.609438,5.537109,1 +11,3,0,1,3,329713,0,16875.07,50.32033,1,12,1,171.1092,40.71367,27.51505,0,0,239.3379,0,0,0,46,1,5,60.1,6.9,0,75,0,488.16,0,0,1.609438,6.190643,0,0,0,1,0,0,75,9.733652,1.609438,5.477877,1 +11,3,0,1,1,329714,0,16875.07,16.1232,1,12,1,56.84372,11.89479,0,0,0,68.73851,0,0,0,7,0,5,56.4,13.8,1,25,0,488.16,1,1,1.609438,6.190643,0,0,0,0,0,0,25,9.733652,1.609438,4.230309,1 +11,3,0,1,2,329714,0,16875.07,17.1232,1,12,1,77.35583,30.66104,13.12705,0,461.2049,582.3488,1,0,0,5,0,5,56.4,13.8,1,25,0,488.16,1,1,1.609438,6.190643,0,0,0,0,0,0,25,9.733652,1.609438,6.36707,1 +11,3,0,1,3,329714,0,16875.07,18.1232,1,12,1,66.63801,3.826311,18.48667,0,0,88.95099,0,0,0,2,1,5,56.4,13.8,1,25,0,488.16,0,0,1.609438,6.190643,0,0,0,0,0,0,25,9.733652,1.609438,4.488086,1 +11,3,0,1,1,329715,0,16875.07,14.41205,0,12,1,352.9265,8.758938,0,0,0,361.6854,0,0,0,14,0,5,80.3,3.4,0,70.5,0,488.16,1,0,1.609438,6.190643,0,0,0,0,0,0,70.5,9.733652,1.609438,5.890775,1 +11,3,0,1,2,329715,0,16875.07,15.41205,0,12,1,68.91702,0,0,0,0,68.91702,0,0,0,4,0,5,80.3,3.4,0,70.5,0,488.16,1,0,1.609438,6.190643,0,0,0,0,0,0,70.5,9.733652,1.609438,4.232903,1 +11,3,0,1,3,329715,0,16875.07,16.41205,0,12,1,8.598453,2.652622,0,0,0,11.25107,0,0,0,1,0,5,80.3,3.4,0,70.5,0,488.16,1,0,1.609438,6.190643,0,0,0,0,0,0,70.5,9.733652,1.609438,2.420464,1 +11,3,0,1,1,329716,0,16875.07,20.17522,0,13,1,133.0439,2.93667,0,0,0,135.9806,0,0,0,4,0,5,75,0,0,76.1,0,488.16,0,0,1.609438,6.190643,0,0,0,0,0,0,76.1,9.733652,1.609438,4.912512,1 +11,3,0,1,2,329716,0,16875.07,21.17522,0,13,1,14.0647,5.860291,0,0,0,19.92499,0,0,0,2,0,5,75,0,0,76.1,0,488.16,0,0,1.609438,6.190643,0,0,0,0,0,0,76.1,9.733652,1.609438,2.991975,1 +11,3,0,1,3,329716,0,16875.07,22.17522,0,13,1,16.76698,0,12.89768,0,0,29.66466,0,0,0,1,1,5,75,0,0,76.1,0,488.16,0,0,1.609438,6.190643,0,0,0,0,0,0,76.1,9.733652,1.609438,3.389956,1 +11,3,0,1,1,329746,0,1643.988,28.09035,1,11,1,201.6854,9.096016,0,0,0,210.7814,0,0,0,9,0,4,52.1,27.6,0,53.4,0,0,0,0,1.386294,0,0,0,0,1,0,0,53.4,7.405488,1.386294,5.350821,1 +11,3,0,1,2,329746,0,1643.988,29.09035,1,11,1,91.04548,13.12236,0,0,0,104.1678,0,0,0,5,0,4,52.1,27.6,0,53.4,0,0,0,0,1.386294,0,0,0,0,1,0,0,53.4,7.405488,1.386294,4.646003,1 +11,3,0,1,3,329746,0,1643.988,30.09035,1,11,1,206.9218,6.857265,0,0,0,213.779,0,0,0,6,8,4,52.1,27.6,0,53.4,0,0,0,0,1.386294,0,0,0,0,1,0,0,53.4,7.405488,1.386294,5.364943,1 +11,3,0,1,1,329747,0,1643.988,5.237509,1,11,1,18.38611,2.288049,0,0,0,20.67416,0,0,0,3,0,4,76.7,9.967326,0,40.7,0,0,1,1,1.386294,0,0,0,0,0,0,0,40.7,7.405488,1.386294,3.028884,1 +11,3,0,1,2,329747,0,1643.988,6.237509,1,11,1,51.28926,12.48945,0,0,0,63.77872,0,0,0,5,0,4,76.7,9.967326,0,40.7,0,0,1,1,1.386294,0,0,0,0,0,0,0,40.7,7.405488,1.386294,4.155419,1 +11,3,0,1,3,329747,0,1643.988,7.237509,1,11,1,55.46002,7.49785,0,0,0,62.95787,0,0,0,6,0,4,76.7,9.967326,0,40.7,0,0,1,1,1.386294,0,0,0,0,0,0,0,40.7,7.405488,1.386294,4.142466,1 +11,3,0,1,1,329748,0,1643.988,1.054072,0,11,1,18.38611,9.264556,0,0,0,27.65066,0,0,0,3,0,4,83.39137,9.967326,0,77.8,0,0,1,0,1.386294,0,0,0,0,0,0,0,77.8,7.405488,1.386294,3.31965,1 +11,3,0,1,2,329748,0,1643.988,2.054073,0,11,1,62.54102,12.07689,0,0,459.2452,533.8631,2,0,0,5,0,4,83.39137,9.967326,0,77.8,0,0,1,0,1.386294,0,0,0,0,0,0,0,77.8,7.405488,1.386294,6.280139,1 +11,3,0,1,3,329748,0,1643.988,3.054073,0,11,1,42.13242,10.88134,0,0,0,53.01376,0,0,0,6,0,4,83.39137,9.967326,0,77.8,0,0,1,0,1.386294,0,0,0,0,0,0,0,77.8,7.405488,1.386294,3.970551,1 +11,3,0,1,1,329749,0,1643.988,32.01095,0,12,1,89.37691,10.80184,0,20.42901,1449.29,1549.469,2,0,1,10,0,4,83,3.4,0,81.8,0,0,0,0,1.386294,0,0,0,0,1,0,0,81.8,7.405488,1.386294,7.345667,1 +11,3,0,1,2,329749,0,1643.988,33.01095,0,12,1,0,0,0,0,1921.608,1921.608,3,0,0,0,0,4,83,3.4,0,81.8,0,0,0,0,1.386294,0,0,0,0,1,0,0,81.8,7.405488,1.386294,7.560918,1 +11,3,0,1,3,329749,0,1643.988,34.01095,0,12,1,8.598453,3.116939,0,0,4671.896,4683.611,7,0,0,1,0,4,83,3.4,0,81.8,0,0,0,0,1.386294,0,0,0,0,1,0,0,81.8,7.405488,1.386294,8.451825,1 +15,3,95,1,1,329751,0,3077.419,59.81383,1,12,1,77.42915,119.6609,423.583,0,3042.991,3663.664,3,0,0,8,1,1,60.6,24.1,1,25,361.64,425.04,0,0,0,6.052183,0,4.564348,5.941943,0,1,0,25,8.032171,0,8.206219,1 +15,3,95,1,2,329751,0,3077.419,60.81383,1,12,1,87.64569,264.042,288.1119,0,0,639.7996,0,0,0,8,1,1,60.6,24.1,1,25,361.64,425.04,0,0,0,6.052183,0,4.564348,5.941943,0,1,0,25,8.032171,0,6.461155,1 +15,3,95,1,3,329751,0,3077.419,61.81383,1,12,1,39.76058,297.1569,230.8679,0,0,567.7854,0,0,0,5,1,1,60.6,24.1,1,25,361.64,425.04,0,0,0,6.052183,0,4.564348,5.941943,0,1,0,25,8.032171,0,6.341743,1 +15,3,95,1,4,329751,0,3077.419,62.81383,1,12,1,334.3889,303.3705,208.3013,0,12574.92,13420.98,4,0,0,12,1,1,60.6,24.1,1,25,361.64,425.04,0,0,0,6.052183,0,4.564348,5.941943,0,1,0,25,8.032171,0,9.504574,1 +15,3,95,1,5,329751,0,3077.419,63.81383,1,12,1,595.3635,421.5666,280.9975,0,6734.71,8032.638,4,0,0,11,1,1,60.6,24.1,1,25,361.64,425.04,0,0,0,6.052183,0,4.564348,5.941943,0,1,0,25,8.032171,0,8.991268,1 +13,3,0,0,1,329752,1,3171.261,38.84737,1,12,1,37.43616,19.8621,0,0,0,57.29826,0,0,0,6,0,4,55.3,17.2,0,26.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,26.1,8.0622,1.386294,4.04827,1 +13,3,0,0,2,329752,1,3171.261,39.84737,1,12,1,222.8317,21.71589,31.35959,0,0,275.9072,0,0,0,13,0,3,55.3,17.2,0,26.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,26.1,8.0622,1.098612,5.620064,1 +13,3,0,0,3,329752,1,3171.261,40.84737,1,12,1,21.32416,25.27085,0,0,0,46.59501,0,0,0,3,0,2,55.3,17.2,0,26.1,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,1,0,26.1,8.0622,.6931472,3.841494,1 +13,3,0,0,4,329752,1,3171.261,41.84737,1,12,1,105.0795,73.48585,24.04033,0,0,202.6057,0,0,0,8,14,2,55.3,17.2,0,26.1,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,1,0,26.1,8.0622,.6931472,5.311262,1 +13,3,0,0,5,329752,1,3171.261,42.84737,1,12,1,55.09554,58.86412,0,0,0,113.9597,0,0,0,6,0,2,55.3,17.2,0,26.1,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,1,0,26.1,8.0622,.6931472,4.735845,1 +13,3,0,0,1,329753,1,3171.261,16.26557,1,12,1,76.5475,11.36364,5.107252,0,0,93.01839,0,0,0,5,1,4,63.3,17.2,0,71.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,71.6,8.0622,1.386294,4.532797,1 +13,3,0,0,2,329753,1,3171.261,17.26557,1,12,1,35.48992,6.558837,0,0,1493.39,1535.438,1,0,0,2,0,3,63.3,17.2,0,71.6,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,1,0,0,71.6,8.0622,1.098612,7.336571,1 +13,3,0,0,1,329754,1,3171.261,8.262834,0,12,1,6.128703,11.41982,0,0,0,17.54852,0,0,0,1,0,4,86.7,9.967326,0,51.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,51.9,8.0622,1.386294,2.864969,1 +13,3,0,0,2,329754,1,3171.261,9.262834,0,12,1,20.06564,0,0,0,0,20.06564,0,0,0,2,0,3,86.7,9.967326,0,51.9,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,51.9,8.0622,1.098612,2.999009,1 +13,3,0,0,3,329754,1,3171.261,10.26283,0,12,1,5.159071,3.525365,0,0,0,8.684437,0,0,0,1,0,2,86.7,9.967326,0,51.9,450,450,1,0,.6931472,6.109248,1,4.564348,6.160541,1,0,0,51.9,8.0622,.6931472,2.161533,1 +13,3,0,0,4,329754,1,3171.261,11.26283,0,12,1,11.63242,3.935634,0,0,0,15.56805,0,0,0,2,0,2,86.7,9.967326,0,51.9,450,450,1,0,.6931472,6.109248,1,4.564348,6.160541,1,0,0,51.9,8.0622,.6931472,2.745221,1 +13,3,0,0,5,329754,1,3171.261,12.26283,0,12,1,22.64685,3.927813,0,0,0,26.57466,0,0,0,3,0,2,86.7,9.967326,0,51.9,450,450,1,0,.6931472,6.109248,1,4.564348,6.160541,1,0,0,51.9,8.0622,.6931472,3.279958,1 +13,3,0,0,1,329755,1,3171.261,17.48939,0,12,1,38.30439,4.417773,0,0,0,42.72216,0,0,0,3,0,4,97.9,3.4,0,94,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,94,8.0622,1.386294,3.754718,1 +6,3,25,1,1,329775,0,6272.727,4.013689,1,12,1,41.73107,27.01185,0,0,0,68.74291,0,0,0,8,0,4,83.39137,9.967326,0,92.6,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,92.6,8.744126,1.386294,4.230374,1 +6,3,25,1,2,329775,0,6272.727,5.013689,1,12,1,104.6402,30.20833,0,0,0,134.8485,0,0,0,9,0,4,83.39137,9.967326,0,92.6,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,92.6,8.744126,1.386294,4.904152,1 +6,3,25,1,3,329775,0,6272.727,6.013689,1,12,1,14.73775,2.427395,22.97356,0,0,40.13871,0,0,0,1,1,4,83.39137,9.967326,0,92.6,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,92.6,8.744126,1.386294,3.692341,1 +6,3,25,1,1,329776,0,6272.727,32.28474,0,12,1,6.697578,0,0,0,0,6.697578,0,0,0,1,0,4,60.1,0,0,52.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,52.3,8.744126,1.386294,1.901746,1 +6,3,25,1,2,329776,0,6272.727,33.28474,0,12,1,88.30492,0,0,0,0,88.30492,0,0,0,1,0,4,60.1,0,0,52.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,52.3,8.744126,1.386294,4.480796,1 +6,3,25,1,3,329776,0,6272.727,34.28474,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,60.1,0,0,52.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,52.3,8.744126,1.386294,,0 +6,3,25,1,1,329777,0,6272.727,1.404517,1,12,1,69.03658,15.82689,0,0,0,84.86347,0,0,0,9,0,4,83.39137,9.967326,0,96.3,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,8.744126,1.386294,4.441044,1 +6,3,25,1,2,329777,0,6272.727,2.404517,1,12,1,39.29924,4.142992,0,0,0,43.44223,0,0,0,4,0,4,83.39137,9.967326,0,96.3,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,8.744126,1.386294,3.771432,1 +6,3,25,1,3,329777,0,6272.727,3.404517,1,12,1,5.635024,1.950585,0,0,0,7.585609,0,0,0,1,0,4,83.39137,9.967326,0,96.3,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,8.744126,1.386294,2.026253,1 +6,3,25,1,1,329778,0,6272.727,29.47844,1,12,1,22.15353,0,29.36631,0,0,51.51984,0,0,0,1,1,4,79.3,6.9,0,83,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,83,8.744126,1.386294,3.941967,1 +6,3,25,1,2,329778,0,6272.727,30.47844,1,12,1,0,3.432765,21.7803,0,0,25.21307,0,0,0,0,0,4,79.3,6.9,0,83,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,83,8.744126,1.386294,3.227362,1 +6,3,25,1,3,329778,0,6272.727,31.47844,1,12,1,6.501951,0,0,0,0,6.501951,0,0,0,1,0,4,79.3,6.9,0,83,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,83,8.744126,1.386294,1.872102,1 +11,3,0,1,1,329806,0,2791.789,21.9165,0,12,1,374.7753,12.09908,29.62206,35.75077,0,416.4964,0,0,2,7,3,1,61.7,17.2,1,78.4,0,211.2,0,0,0,5.352806,0,0,0,0,0,0,78.4,7.934796,0,6.031878,1 +11,3,0,1,2,329806,0,2791.789,22.9165,0,12,1,211.2049,0,19.45617,60.94702,0,230.661,0,0,3,6,14,1,61.7,17.2,1,78.4,0,211.2,0,0,0,5.352806,0,0,0,0,0,0,78.4,7.934796,0,5.440949,1 +11,3,0,1,3,329806,0,2791.789,23.9165,0,12,1,46.86156,0,23.00086,0,0,69.86243,0,0,0,2,6,1,61.7,17.2,1,78.4,0,211.2,0,0,0,5.352806,0,0,0,0,0,0,78.4,7.934796,0,4.246528,1 +11,3,0,1,1,329807,0,2365.982,23.00342,1,12,1,97.24208,41.16446,0,0,0,138.4065,0,0,0,7,0,1,70.2,3.4,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,7.769371,0,4.930195,1 +11,3,0,1,2,329807,0,2365.982,24.00342,1,12,1,84.38818,21.594,3.398969,0,0,109.3812,0,0,0,5,3,1,70.2,3.4,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,7.769371,0,4.694839,1 +11,3,0,1,3,329807,0,2365.982,25.00342,1,12,1,13.28461,0,0,0,0,13.28461,0,0,0,1,0,1,70.2,3.4,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,7.769371,0,2.586606,1 +16,3,95,1,1,329825,0,9685.044,11.52909,0,12,1,21.25506,0,0,0,0,21.25506,0,0,0,0,0,4,91.7,9.967326,0,85.2,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.178441,1.386294,3.056595,1 +16,3,95,1,2,329825,0,9685.044,12.52909,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,91.7,9.967326,0,85.2,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.178441,1.386294,,0 +16,3,95,1,3,329825,0,9685.044,13.52909,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,91.7,9.967326,0,85.2,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.178441,1.386294,,0 +16,3,95,1,1,329826,0,9685.044,40.282,0,7,1,10.12146,2.656883,0,0,0,12.77834,0,0,0,1,0,4,83,3.4,0,83,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,83,9.178441,1.386294,2.547752,1 +16,3,95,1,2,329826,0,9685.044,41.282,0,7,1,0,0,0,0,0,0,0,0,0,0,0,4,83,3.4,0,83,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,83,9.178441,1.386294,,0 +16,3,95,1,3,329826,0,9685.044,42.282,0,7,1,0,0,0,0,0,0,0,0,0,0,0,4,83,3.4,0,83,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,83,9.178441,1.386294,,0 +16,3,95,1,1,329827,0,9685.044,35.95893,1,12,1,5.060729,4.352227,0,0,0,9.412955,0,0,0,1,0,4,92,24.1,1,29.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,29.5,9.178441,1.386294,2.242087,1 +16,3,95,1,2,329827,0,9685.044,36.95893,1,12,1,72.72727,0,0,0,0,72.72727,0,0,0,1,0,4,92,24.1,1,29.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,29.5,9.178441,1.386294,4.286716,1 +16,3,95,1,3,329827,0,9685.044,37.95893,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,92,24.1,1,29.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,29.5,9.178441,1.386294,,0 +16,3,95,1,1,329828,0,9685.044,7.419576,0,12,1,0,4.605263,0,0,0,4.605263,0,0,0,0,0,4,83.3,9.967326,0,92.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,92.6,9.178441,1.386294,1.5272,1 +16,3,95,1,2,329828,0,9685.044,8.419576,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,9.967326,0,92.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,92.6,9.178441,1.386294,,0 +16,3,95,1,3,329828,0,9685.044,9.419576,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,9.967326,0,92.6,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,92.6,9.178441,1.386294,,0 +13,3,0,1,1,329858,0,7188.27,4.317591,0,9,1,3.036437,0,0,0,0,3.036437,0,0,0,2,0,7,83.39137,9.967326,0,88.9,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.880345,1.94591,1.110685,1 +13,3,0,1,2,329858,0,7188.27,5.317591,0,9,1,5.594406,0,0,0,0,5.594406,0,0,0,1,0,7,83.39137,9.967326,0,88.9,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.880345,1.94591,1.721767,1 +13,3,0,1,3,329858,0,7188.27,6.317591,0,9,1,49.55109,0,0,0,0,49.55109,0,0,0,4,1,7,83.39137,9.967326,0,88.9,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.880345,1.94591,3.903004,1 +13,3,0,1,1,329859,0,7188.27,13.77413,1,9,1,16.70041,17.99089,11.1336,0,0,45.8249,0,0,0,2,1,7,80,9.967326,0,29.6,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,29.6,8.880345,1.94591,3.824828,1 +13,3,0,1,2,329859,0,7188.27,14.77413,1,9,1,23.31002,21.56177,28.90443,0,0,73.77622,0,0,0,3,1,7,80,9.967326,0,29.6,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,29.6,8.880345,1.94591,4.301036,1 +13,3,0,1,3,329859,0,7188.27,15.77413,1,9,1,16.67379,8.978196,0,0,0,25.65199,0,0,0,3,0,7,80,9.967326,0,29.6,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,29.6,8.880345,1.94591,3.244621,1 +13,3,0,1,1,329860,0,7188.27,14.69678,1,9,1,20.24291,0,0,0,0,20.24291,0,0,0,3,0,7,61.7,10.3,0,78.6,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,78.6,8.880345,1.94591,3.007805,1 +13,3,0,1,2,329860,0,7188.27,15.69678,1,9,1,7.925408,0,0,0,0,7.925408,0,0,0,1,0,7,61.7,10.3,0,78.6,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,78.6,8.880345,1.94591,2.070074,1 +13,3,0,1,3,329860,0,7188.27,16.69678,1,9,1,51.73151,0,0,0,0,51.73151,0,0,0,2,0,7,61.7,10.3,0,78.6,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,1,0,0,78.6,8.880345,1.94591,3.946067,1 +13,3,0,1,1,329861,0,7188.27,31.57563,1,9,1,27.32794,25.25304,26.31579,0,0,78.89676,0,0,0,1,1,7,75,6.9,0,69.3,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,69.3,8.880345,1.94591,4.36814,1 +13,3,0,1,2,329861,0,7188.27,32.57563,1,9,1,96.50349,22.68065,0,0,0,119.1842,0,0,0,4,0,7,75,6.9,0,69.3,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,69.3,8.880345,1.94591,4.78067,1 +13,3,0,1,3,329861,0,7188.27,33.57563,1,9,1,31.20992,12.16332,20.94912,0,529.1064,593.4288,1,0,0,3,1,7,75,6.9,0,69.3,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,69.3,8.880345,1.94591,6.385917,1 +13,3,0,1,1,329862,0,7188.27,12.75565,1,9,1,5.060729,0,0,0,0,5.060729,0,0,0,1,0,7,78.3,9.967326,1,100,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,100,8.880345,1.94591,1.621511,1 +13,3,0,1,2,329862,0,7188.27,13.75565,1,9,1,11.65501,0,0,0,0,11.65501,0,0,0,2,0,7,78.3,9.967326,1,100,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,100,8.880345,1.94591,2.455736,1 +13,3,0,1,3,329862,0,7188.27,14.75565,1,9,1,5.985464,0,0,0,0,5.985464,0,0,0,1,0,7,78.3,9.967326,1,100,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,100,8.880345,1.94591,1.789334,1 +13,3,0,1,1,329863,0,7188.27,34.4887,0,7,1,30.36437,10.12146,0,0,0,40.48583,0,0,0,0,3,7,79.8,0,0,84.1,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,84.1,8.880345,1.94591,3.700952,1 +13,3,0,1,2,329863,0,7188.27,35.4887,0,7,1,13.98601,0,0,0,0,13.98601,0,0,0,0,3,7,79.8,0,0,84.1,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,84.1,8.880345,1.94591,2.638058,1 +13,3,0,1,3,329863,0,7188.27,36.4887,0,7,1,70.07268,5.921334,0,0,0,75.99401,0,0,0,4,2,7,79.8,0,0,84.1,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,84.1,8.880345,1.94591,4.330655,1 +13,3,0,1,1,329864,0,7188.27,11.11567,1,9,1,42.51012,2.530364,0,0,345.1771,390.2176,1,0,0,3,0,7,75,9.967326,0,92.6,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,1,0,92.6,8.880345,1.94591,5.966704,1 +13,3,0,1,2,329864,0,7188.27,12.11567,1,9,1,111.4219,197.4592,0,0,857.0862,1165.967,1,0,0,10,0,7,75,9.967326,0,92.6,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,1,0,92.6,8.880345,1.94591,7.061306,1 +13,3,0,1,3,329864,0,7188.27,13.11567,1,9,1,75.71612,107.1612,0,0,375.9,558.7773,1,0,0,8,6,7,75,9.967326,0,92.6,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,1,0,92.6,8.880345,1.94591,6.325751,1 +10,3,50,1,1,329921,0,4194.721,14.19849,0,12,1,36.94332,0,0,0,0,36.94332,0,0,0,4,0,4,61.2,3.4,0,72.7,930,930,1,0,1.386294,6.835185,0,3.931826,7.528332,0,0,0,72.7,8.341821,1.386294,3.609385,1 +10,3,50,1,2,329921,0,4194.721,15.19849,0,12,1,19.34732,1.818182,24.70862,0,0,45.87413,0,0,0,1,1,4,61.2,3.4,0,72.7,930,930,1,0,1.386294,6.835185,0,3.931826,7.528332,0,0,0,72.7,8.341821,1.386294,3.825901,1 +10,3,50,1,3,329921,0,4194.721,16.19849,0,12,1,5.130398,1.923899,0,0,0,7.054296,0,0,0,1,0,4,61.2,3.4,0,72.7,930,930,1,0,1.386294,6.835185,0,3.931826,7.528332,0,0,0,72.7,8.341821,1.386294,1.953637,1 +10,3,50,1,1,329922,0,4194.721,35.154,1,12,1,7.591093,1.265182,0,0,0,8.856276,0,0,0,1,0,4,58,27.6,0,51.1,930,930,0,0,1.386294,6.835185,0,3.931826,7.528332,1,0,0,51.1,8.341821,1.386294,2.181126,1 +10,3,50,1,2,329922,0,4194.721,36.154,1,12,1,41.49184,1.375291,24.24242,0,0,67.10956,0,0,0,2,1,4,58,27.6,0,51.1,930,930,0,0,1.386294,6.835185,0,3.931826,7.528332,1,0,0,51.1,8.341821,1.386294,4.206326,1 +10,3,50,1,3,329922,0,4194.721,37.154,1,12,1,179.1364,14.83967,0,0,0,193.9761,0,0,0,23,0,4,58,27.6,0,51.1,930,930,0,0,1.386294,6.835185,0,3.931826,7.528332,1,0,0,51.1,8.341821,1.386294,5.267735,1 +10,3,50,1,1,329923,0,4194.721,8.260096,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,75,9.967326,0,22.2,930,930,1,1,1.386294,6.835185,0,3.931826,7.528332,0,1,0,22.2,8.341821,1.386294,,0 +10,3,50,1,2,329923,0,4194.721,9.260096,1,12,1,95.66434,.8111888,0,0,395.2634,491.7389,1,0,0,1,0,4,75,9.967326,0,22.2,930,930,1,1,1.386294,6.835185,0,3.931826,7.528332,0,1,0,22.2,8.341821,1.386294,6.197948,1 +10,3,50,1,3,329923,0,4194.721,10.2601,1,12,1,153.0569,6.89611,0,0,572.8089,732.7618,2,0,0,5,0,4,75,9.967326,0,22.2,930,930,1,1,1.386294,6.835185,0,3.931826,7.528332,0,1,0,22.2,8.341821,1.386294,6.596821,1 +10,3,50,1,1,329924,0,4194.721,15.27721,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,69.1,3.4,0,76.1,930,930,1,0,1.386294,6.835185,0,3.931826,7.528332,1,0,0,76.1,8.341821,1.386294,,0 +10,3,50,1,2,329924,0,4194.721,16.27721,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,69.1,3.4,0,76.1,930,930,1,0,1.386294,6.835185,0,3.931826,7.528332,1,0,0,76.1,8.341821,1.386294,,0 +10,3,50,1,3,329924,0,4194.721,17.27721,0,12,1,48.73878,4.608807,0,0,1037.79,1091.137,2,0,0,5,1,4,69.1,3.4,0,76.1,930,930,1,0,1.386294,6.835185,0,3.931826,7.528332,1,0,0,76.1,8.341821,1.386294,6.994976,1 +15,3,95,1,1,329942,0,7025.22,60.39151,1,14,1,45.04049,14.82794,11.63968,0,0,71.50809,0,0,0,6,0,1,79.8,10.3,0,94,491.68,492.84,0,0,0,6.200184,0,4.564348,6.249121,1,0,0,94,8.857404,0,4.269811,1 +15,3,95,1,2,329942,0,7025.22,61.39151,1,14,1,18.64802,15.85082,0,0,0,34.49883,0,0,0,2,0,1,79.8,10.3,0,94,491.68,492.84,0,0,0,6.200184,0,4.564348,6.249121,1,0,0,94,8.857404,0,3.540926,1 +15,3,95,1,3,329942,0,7025.22,62.39151,1,14,1,93.62975,12.01368,31.20992,0,0,136.8534,0,0,0,6,1,1,79.8,10.3,0,94,491.68,492.84,0,0,0,6.200184,0,4.564348,6.249121,1,0,0,94,8.857404,0,4.91891,1 +17,3,25,1,1,329954,0,6176.54,1.117043,0,13,1,80.66801,10.24798,0,0,0,90.91599,0,0,0,7,0,4,83.39137,9.967326,0,88.9,560,560,1,0,1.386294,6.327937,0,3.258096,7.714231,0,0,0,88.9,8.728675,1.386294,4.509936,1 +17,3,25,1,2,329954,0,6176.54,2.117043,0,13,1,16.78322,6.759907,0,0,0,23.54312,0,0,0,3,0,4,83.39137,9.967326,0,88.9,560,560,1,0,1.386294,6.327937,0,3.258096,7.714231,0,0,0,88.9,8.728675,1.386294,3.158834,1 +17,3,25,1,3,329954,0,6176.54,3.117043,0,13,1,39.76058,28.0248,0,0,0,67.78538,0,0,0,5,0,5,83.39137,9.967326,0,88.9,560,560,1,0,1.609438,6.327937,0,3.258096,7.714231,0,0,0,88.9,8.728675,1.609438,4.216346,1 +17,3,25,1,1,329955,0,6176.54,25.30869,0,12,1,117.9909,7.287449,34.41296,0,301.67,461.3613,1,0,0,3,1,4,58,3.4,0,62.5,560,560,0,0,1.386294,6.327937,0,3.258096,7.714231,0,0,0,62.5,8.728675,1.386294,6.134181,1 +17,3,25,1,2,329955,0,6176.54,26.30869,0,12,1,158.042,18.50816,0,0,0,176.5501,0,0,0,5,0,4,58,3.4,0,62.5,560,560,0,0,1.386294,6.327937,0,3.258096,7.714231,0,0,0,62.5,8.728675,1.386294,5.173605,1 +17,3,25,1,3,329955,0,6176.54,27.30869,0,12,1,59.85464,13.51005,0,0,0,73.36469,0,0,0,2,0,5,58,3.4,0,62.5,560,560,0,0,1.609438,6.327937,0,3.258096,7.714231,0,0,0,62.5,8.728675,1.609438,4.295443,1 +17,3,25,1,1,329956,0,6176.54,1.117043,0,13,1,47.57085,5.263158,0,0,0,52.83401,0,0,0,5,0,4,83.39137,9.967326,0,85.2,560,560,1,0,1.386294,6.327937,0,3.258096,7.714231,0,0,0,85.2,8.728675,1.386294,3.967155,1 +17,3,25,1,2,329956,0,6176.54,2.117043,0,13,1,49.41725,0,0,0,0,49.41725,0,0,0,5,0,4,83.39137,9.967326,0,85.2,560,560,1,0,1.386294,6.327937,0,3.258096,7.714231,0,0,0,85.2,8.728675,1.386294,3.9003,1 +17,3,25,1,3,329956,0,6176.54,3.117043,0,13,1,19.66652,6.45575,0,0,0,26.12227,0,0,0,3,0,5,83.39137,9.967326,0,85.2,560,560,1,0,1.609438,6.327937,0,3.258096,7.714231,0,0,0,85.2,8.728675,1.609438,3.262788,1 +17,3,25,1,1,329957,0,6176.54,23.62491,1,13,1,46.5587,17.81376,20.1164,0,0,84.48887,0,0,0,3,1,4,80.9,10.3,0,72.7,560,560,0,0,1.386294,6.327937,0,3.258096,7.714231,0,0,0,72.7,8.728675,1.386294,4.43662,1 +17,3,25,1,2,329957,0,6176.54,24.62491,1,13,1,0,0,0,0,637.9348,637.9348,1,0,0,0,0,4,80.9,10.3,0,72.7,560,560,0,0,1.386294,6.327937,0,3.258096,7.714231,0,0,0,72.7,8.728675,1.386294,6.458236,1 +17,3,25,1,3,329957,0,6176.54,25.62491,1,13,1,25.01069,2.308679,34.20265,0,0,61.52202,0,0,0,2,0,5,80.9,10.3,0,72.7,560,560,0,0,1.609438,6.327937,0,3.258096,7.714231,0,0,0,72.7,8.728675,1.609438,4.119395,1 +13,3,0,0,1,329977,0,4826.979,59.82204,1,12,1,22.66873,0,36.06388,0,0,58.73261,0,0,0,2,1,1,69.7,10.3,0,69.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,69.3,8.482183,0,4.072995,1 +13,3,0,0,2,329977,0,4826.979,60.82204,1,12,1,10.89015,5.023674,0,0,0,15.91383,0,0,0,1,0,1,69.7,10.3,0,69.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,69.3,8.482183,0,2.767188,1 +13,3,0,0,3,329977,0,4826.979,61.82204,1,12,1,22.10663,0,26.87473,0,0,48.98136,0,0,0,2,1,1,69.7,10.3,0,69.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,69.3,8.482183,0,3.89144,1 +13,3,0,1,1,329984,0,3399.414,44.34223,1,12,1,98.05924,1.716037,0,0,0,99.77528,0,0,0,5,1,1,75.5,20.7,0,47.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,47.7,8.131652,0,4.602921,1 +13,3,0,1,2,329984,0,3399.414,45.34223,1,12,1,229.5359,11.41116,0,0,735.1617,976.1088,2,0,0,14,0,1,75.5,20.7,0,47.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,47.7,8.131652,0,6.883574,1 +13,3,0,1,3,329984,0,3399.414,46.34223,1,12,1,6.448839,0,0,0,0,6.448839,0,0,0,1,0,1,75.5,20.7,0,47.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,47.7,8.131652,0,1.8639,1 +19,3,25,1,1,330004,0,10370.67,14.34908,1,8,1,68.31984,2.024292,0,0,1991.037,2061.382,2,0,0,8,0,4,61.2,6.9,0,53.4,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,53.4,9.246834,1.386294,7.631132,1 +19,3,25,1,2,330004,0,10370.67,15.34908,1,8,1,467.4312,13.31468,0,0,1461.296,1942.042,2,0,0,8,0,4,61.2,6.9,0,53.4,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,53.4,9.246834,1.386294,7.571495,1 +19,3,25,1,3,330004,0,10370.67,16.34908,1,8,1,125.4382,7.48183,0,0,0,132.92,0,0,0,13,0,4,61.2,6.9,0,53.4,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,53.4,9.246834,1.386294,4.889748,1 +19,3,25,1,1,330005,0,10370.67,46.61739,1,8,1,122.4696,12.85425,26.82186,37.95547,0,162.1458,0,0,5,5,1,4,68.1,44.8,1,95.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,95.5,9.246834,1.386294,5.088496,1 +19,3,25,1,2,330005,0,10370.67,47.61739,1,8,1,97.9021,5.734266,20.51282,0,0,124.1492,0,0,0,4,7,4,68.1,44.8,1,95.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,95.5,9.246834,1.386294,4.821484,1 +19,3,25,1,3,330005,0,10370.67,48.61739,1,8,1,34.20265,0,32.49252,0,0,66.69517,0,0,0,1,1,4,68.1,44.8,1,95.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,95.5,9.246834,1.386294,4.200132,1 +19,3,25,1,1,330006,0,10370.67,44.86242,0,12,1,76.29049,16.97874,24.79757,37.95547,0,118.0668,0,0,5,5,1,4,28.7,10.3,1,50,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,50,9.246834,1.386294,4.771251,1 +19,3,25,1,2,330006,0,10370.67,45.86242,0,12,1,14.45221,.9324009,20.51282,0,0,35.89743,0,0,0,1,1,4,28.7,10.3,1,50,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,50,9.246834,1.386294,3.580666,1 +19,3,25,1,3,330006,0,10370.67,46.86242,0,12,1,50.19239,6.797777,3.787944,0,0,60.77811,0,0,0,2,0,4,28.7,10.3,1,50,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,50,9.246834,1.386294,4.10723,1 +19,3,25,1,1,330007,0,10370.67,17.50034,1,8,1,127.7328,3.785425,27.83401,182.1862,0,159.3522,0,0,12,4,1,4,65.4,10.3,0,71.6,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,71.6,9.246834,1.386294,5.071117,1 +19,3,25,1,2,330007,0,10370.67,18.50034,1,8,1,120.6993,18.50816,0,0,0,139.2075,0,0,0,9,0,4,65.4,10.3,0,71.6,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,71.6,9.246834,1.386294,4.935966,1 +19,3,25,1,3,330007,0,10370.67,19.50034,1,8,1,33.34758,2.436939,20.09406,0,0,55.87858,0,0,0,2,1,4,65.4,10.3,0,71.6,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,71.6,9.246834,1.386294,4.023181,1 +19,3,25,1,1,330008,0,4975.367,20.46817,0,12,1,58.80567,1.821862,0,0,0,60.62753,0,0,0,4,0,1,71.8,0,0,75,432.6,432.6,0,0,0,6.069814,0,3.258096,7.456108,1,0,0,75,8.512455,0,4.104749,1 +19,3,25,1,2,330008,0,4975.367,21.46817,0,12,1,84.80186,0,0,0,0,84.80186,0,0,0,5,0,1,71.8,0,0,75,432.6,432.6,0,0,0,6.069814,0,3.258096,7.456108,1,0,0,75,8.512455,0,4.440318,1 +19,3,25,1,3,330008,0,4975.367,22.46817,0,12,1,63.46729,2.693459,0,0,755.4895,821.6503,1,0,0,3,0,1,71.8,0,0,75,432.6,432.6,0,0,0,6.069814,0,3.258096,7.456108,1,0,0,75,8.512455,0,6.711315,1 +19,3,25,1,1,330009,0,7995.308,19.17591,1,12,1,33.40081,13.1579,0,0,886.3917,932.9504,2,0,0,0,0,1,68.6,3.4,0,67,390,390,0,0,0,5.966147,0,3.258096,7.352441,1,0,0,67,8.986735,0,6.838352,1 +19,3,25,1,2,330009,0,7995.308,20.17591,1,12,1,11.18881,14.10256,0,0,0,25.29138,0,0,0,1,0,2,68.6,3.4,0,67,390,390,0,0,.6931472,5.966147,0,3.258096,7.352441,1,0,0,67,8.986735,.6931472,3.230464,1 +19,3,25,1,3,330009,0,7995.308,21.17591,1,12,1,26.93459,8.550663,0,0,648.0462,683.5314,1,0,0,1,0,2,68.6,3.4,0,67,390,390,0,0,.6931472,5.966147,0,3.258096,7.352441,1,0,0,67,8.986735,.6931472,6.527273,1 +13,3,0,1,1,330012,0,7196.79,32.21903,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,81.4,6.9,0,96.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,96.6,8.881529,1.609438,,0 +13,3,0,1,1,330013,0,7196.79,11.01985,0,8,1,10.12146,0,25.80972,0,0,35.93118,0,0,0,0,1,5,70,9.967326,1,37,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,37,8.881529,1.609438,3.581605,1 +13,3,0,1,1,330014,0,7196.79,28.98836,1,8,1,41.49797,9.868421,0,0,456.9585,508.3249,1,0,0,5,0,5,57.4,34.5,1,38.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,38.6,8.881529,1.609438,6.231121,1 +13,3,0,1,1,330015,0,7196.79,8.145106,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,9.967326,0,77.8,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.881529,1.609438,,0 +13,3,0,1,1,330016,0,7196.79,12.38604,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,83.3,9.967326,0,63,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,63,8.881529,1.609438,,0 +13,3,0,1,1,330021,0,6943.695,42.27515,1,16,1,87.79858,34.46356,0,53.13765,0,122.2621,0,0,5,6,0,3,67,10.3,0,78.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,78.4,8.845734,1.098612,4.806168,1 +13,3,0,1,2,330021,0,6943.695,43.27515,1,16,1,311.4219,17.99534,0,0,0,329.4172,0,0,0,7,0,3,67,10.3,0,78.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,78.4,8.845734,1.098612,5.797325,1 +13,3,0,1,3,330021,0,6943.695,44.27515,1,16,1,219.5383,14.36511,31.63745,0,0,265.5408,0,0,0,1,0,3,67,10.3,0,78.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,78.4,8.845734,1.098612,5.581769,1 +13,3,0,1,1,330022,0,6943.695,11.71253,1,16,1,26.82186,1.998988,0,0,0,28.82085,0,0,0,3,0,3,83.3,9.967326,0,96.3,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.845734,1.098612,3.361099,1 +13,3,0,1,2,330022,0,6943.695,12.71253,1,16,1,41.02564,6.247086,0,0,0,47.27273,0,0,0,3,0,3,83.3,9.967326,0,96.3,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.845734,1.098612,3.855934,1 +13,3,0,1,3,330022,0,6943.695,13.71253,1,16,1,55.96409,2.778965,0,0,0,58.74305,0,0,0,5,0,3,83.3,9.967326,0,96.3,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.845734,1.098612,4.073173,1 +13,3,0,1,1,330049,0,4754.839,8.167009,0,12,1,27.37487,3.447395,0,0,0,30.82227,0,0,0,2,0,3,73.3,9.967326,0,96.3,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,96.3,8.467129,1.098612,3.428237,1 +13,3,0,1,2,330049,0,4754.839,9.167009,0,12,1,24.84763,0,0,0,0,24.84763,0,0,0,2,0,3,73.3,9.967326,0,96.3,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,96.3,8.467129,1.098612,3.212763,1 +13,3,0,1,3,330049,0,4754.839,10.16701,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,73.3,9.967326,0,96.3,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,96.3,8.467129,1.098612,,0 +13,3,0,1,1,330050,0,4754.839,5.913758,0,12,1,6.639428,5.132789,0,0,0,11.77222,0,0,0,1,0,3,81.7,9.967326,0,96.3,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,96.3,8.467129,1.098612,2.465742,1 +13,3,0,1,2,330050,0,4754.839,6.913758,0,12,1,20.62822,0,0,0,0,20.62822,0,0,0,2,0,3,81.7,9.967326,0,96.3,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,96.3,8.467129,1.098612,3.02666,1 +13,3,0,1,3,330050,0,4754.839,7.913758,0,12,1,4.729149,0,0,0,0,4.729149,0,0,0,1,0,3,81.7,9.967326,0,96.3,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,96.3,8.467129,1.098612,1.553745,1 +13,3,0,1,1,330051,0,4754.839,29.27036,1,12,1,56.43514,20.37794,0,0,0,76.81307,0,0,0,7,0,3,39.4,13.8,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,65.9,8.467129,1.098612,4.341375,1 +13,3,0,1,2,330051,0,4754.839,30.27036,1,12,1,49.69527,5.508673,0,0,0,55.20394,0,0,0,4,0,3,39.4,13.8,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,65.9,8.467129,1.098612,4.011034,1 +13,3,0,1,3,330051,0,4754.839,31.27036,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,39.4,13.8,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,65.9,8.467129,1.098612,,0 +7,3,25,1,1,330053,0,6499.707,60.59138,0,12,1,17.71255,1.275304,39.47368,0,0,58.46154,0,0,0,1,1,2,96.8,3.4,1,69.3,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,69.3,8.779666,.6931472,4.068369,1 +7,3,25,1,2,330053,0,6499.707,61.59138,0,12,1,11.65501,0,0,0,0,11.65501,0,0,0,2,0,2,96.8,3.4,1,69.3,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,69.3,8.779666,.6931472,2.455736,1 +7,3,25,1,3,330053,0,6499.707,62.59138,0,12,1,20.52159,1.620351,0,0,0,22.14194,0,0,0,3,0,2,96.8,3.4,1,69.3,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,69.3,8.779666,.6931472,3.097474,1 +7,3,25,1,1,330054,0,6499.707,59.11294,1,12,1,171.6245,215.2783,43.01619,0,0,429.919,0,0,0,12,1,2,65.4,20.7,1,27.3,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,27.3,8.779666,.6931472,6.063597,1 +7,3,25,1,2,330054,0,6499.707,60.11294,1,12,1,71.32867,193.3194,0,0,0,264.648,0,0,0,5,2,2,65.4,20.7,1,27.3,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,27.3,8.779666,.6931472,5.578401,1 +7,3,25,1,3,330054,0,6499.707,61.11294,1,12,1,186.49,107.4177,83.04831,0,7576.323,7953.279,2,0,0,8,7,2,65.4,20.7,1,27.3,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,27.3,8.779666,.6931472,8.981339,1 +11,3,0,0,1,330103,0,8704.985,45.88091,0,10,1,26.31579,0,22.26721,0,0,48.583,0,0,0,4,1,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.071766,1.098612,3.883274,1 +11,3,0,0,2,330103,0,8704.985,46.88091,0,10,1,68.06527,136.62,18.64802,228.4382,0,223.3333,0,0,9,3,1,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.071766,1.098612,5.408665,1 +11,3,0,0,3,330103,0,8704.985,47.88091,0,10,1,68.14878,153.5784,0,136.8106,3858.358,4080.085,1,0,6,0,0,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.071766,1.098612,8.313873,1 +11,3,0,0,4,330103,0,8704.985,48.88091,0,10,1,99.8847,105.4304,29.97694,922.3674,9346.172,9581.464,2,0,40,5,1,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.071766,1.098612,9.167585,1 +11,3,0,0,5,330103,0,8704.985,49.88091,0,10,1,46.78609,75.18792,0,770.987,0,121.974,0,0,37,2,0,2,74.46748,9.967326,.1572505,,0,0,0,0,.6931472,0,0,0,0,0,0,0,72.06626,9.071766,.6931472,4.803808,1 +11,3,0,0,1,330104,0,8704.985,44.13689,1,9,1,34.0587,8.729757,31.37652,0,0,74.16498,0,0,0,3,1,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.071766,1.098612,4.306292,1 +11,3,0,0,2,330104,0,8704.985,45.13689,1,9,1,26.10723,46.34033,41.95804,48.95105,0,114.4056,0,0,2,2,1,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.071766,1.098612,4.73975,1 +11,3,0,0,3,330104,0,8704.985,46.13689,1,9,1,28.47371,18.08893,51.30397,0,0,97.86661,0,0,0,1,1,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.071766,1.098612,4.583605,1 +11,3,0,0,4,330104,0,8704.985,47.13689,1,9,1,49.92314,13.72021,0,484.2429,0,63.64335,0,0,21,2,0,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.071766,1.098612,4.153295,1 +11,3,0,0,5,330104,0,8704.985,48.13689,1,9,1,28.5915,18.78469,29.85599,979.9789,0,77.23218,0,0,46,1,1,2,74.46748,9.967326,.1572505,,0,0,0,0,.6931472,0,0,0,0,0,0,0,72.06626,9.071766,.6931472,4.346816,1 +11,3,0,0,1,330106,0,8704.985,15.88775,1,9,1,253.9575,24.3168,37.55567,0,0,315.83,0,0,0,3,1,3,74.46748,9.967326,.1572505,,0,0,1,1,1.098612,0,0,0,0,0,0,0,72.06626,9.071766,1.098612,5.755204,1 +11,3,0,0,2,330106,0,8704.985,16.88775,1,9,1,9.324009,7.132867,20.49883,0,0,36.95571,0,0,0,0,1,3,74.46748,9.967326,.1572505,,0,0,1,1,1.098612,0,0,0,0,0,0,0,72.06626,9.071766,1.098612,3.60972,1 +11,3,0,0,3,330106,0,8704.985,17.88775,1,9,1,22.06071,8.208636,22.65926,0,0,52.9286,0,0,0,1,1,3,74.46748,9.967326,.1572505,,0,0,1,1,1.098612,0,0,0,0,0,0,0,72.06626,9.071766,1.098612,3.968944,1 +11,3,0,0,4,330106,0,8704.985,18.88775,1,9,1,21.13759,1.306687,18.44735,0,0,40.89162,0,0,0,2,1,3,74.46748,9.967326,.1572505,,0,0,0,0,1.098612,0,0,0,0,0,0,0,72.06626,9.071766,1.098612,3.710925,1 +18,3,25,1,1,330173,0,6519.062,42.39014,0,7,1,501.999,82.31275,0,0,0,584.3118,0,0,0,6,5,6,58.5,17.2,1,36.4,660,660,0,0,1.791759,6.49224,0,3.258096,7.878534,0,1,0,36.4,8.78264,1.791759,6.370435,1 +18,3,25,1,2,330173,0,6519.062,43.39014,0,7,1,95.66434,77.69231,37.29604,0,0,210.6527,0,0,0,6,1,6,58.5,17.2,1,36.4,660,660,0,0,1.791759,6.49224,0,3.258096,7.878534,0,1,0,36.4,8.78264,1.791759,5.350211,1 +18,3,25,1,3,330173,0,6519.062,44.39014,0,7,1,177.811,77.53313,0,0,0,255.3442,0,0,0,4,0,7,58.5,17.2,1,36.4,660,660,0,0,1.94591,6.49224,0,3.258096,7.878534,0,1,0,36.4,8.78264,1.94591,5.542612,1 +18,3,25,1,4,330173,0,6519.062,45.39014,0,7,1,43.04381,61.52959,36.51038,0,0,141.0838,0,0,0,1,1,8,58.5,17.2,1,36.4,660,660,0,0,2.079442,6.49224,0,3.258096,7.878534,0,1,0,36.4,8.78264,2.079442,4.949354,1 +18,3,25,1,5,330173,0,6519.062,46.39014,0,7,1,273.797,115.5954,34.21145,0,571.7492,995.353,1,0,0,8,1,8,58.5,17.2,1,36.4,660,660,0,0,2.079442,6.49224,0,3.258096,7.878534,0,1,0,36.4,8.78264,2.079442,6.903098,1 +18,3,25,1,1,330174,0,6519.062,14.65298,0,7,1,202.9352,14.95445,0,0,1097.166,1315.056,2,0,0,6,3,6,68.6,13.8,0,55.7,660,660,1,0,1.791759,6.49224,0,3.258096,7.878534,1,0,0,55.7,8.78264,1.791759,7.181634,1 +18,3,25,1,2,330174,0,6519.062,15.65298,0,7,1,54.73193,1.398601,0,0,0,56.13054,0,0,0,2,1,6,68.6,13.8,0,55.7,660,660,1,0,1.791759,6.49224,0,3.258096,7.878534,1,0,0,55.7,8.78264,1.791759,4.02768,1 +18,3,25,1,3,330174,0,6519.062,16.65298,0,7,1,98.76015,4.061565,0,0,0,102.8217,0,0,0,4,0,7,68.6,13.8,0,55.7,660,660,1,0,1.94591,6.49224,0,3.258096,7.878534,1,0,0,55.7,8.78264,1.94591,4.632997,1 +18,3,25,1,4,330174,0,6519.062,17.65298,0,7,1,182.9746,8.551114,0,0,0,191.5258,0,0,0,5,0,8,68.6,13.8,0,55.7,660,660,1,0,2.079442,6.49224,0,3.258096,7.878534,1,0,0,55.7,8.78264,2.079442,5.255023,1 +18,3,25,1,5,330174,0,6519.062,18.65298,0,7,1,171.0924,17.22866,0,0,0,188.321,0,0,0,8,1,8,68.6,13.8,0,55.7,660,660,0,0,2.079442,6.49224,0,3.258096,7.878534,1,0,0,55.7,8.78264,2.079442,5.238148,1 +18,3,25,1,1,330175,0,6519.062,11.56194,1,7,1,202.0749,12.42409,28.34008,0,0,242.8391,0,0,0,5,4,6,70,9.967326,1,40.7,660,660,1,1,1.791759,6.49224,0,3.258096,7.878534,1,0,0,40.7,8.78264,1.791759,5.492399,1 +18,3,25,1,2,330175,0,6519.062,12.56194,1,7,1,337.4359,7.575758,1.864802,0,872.2844,1219.161,2,0,0,2,10,6,70,9.967326,1,40.7,660,660,1,1,1.791759,6.49224,0,3.258096,7.878534,1,0,0,40.7,8.78264,1.791759,7.105918,1 +18,3,25,1,3,330175,0,6519.062,13.56194,1,7,1,186.1052,14.42924,28.21719,0,0,228.7516,0,0,0,7,1,7,70,9.967326,1,40.7,660,660,1,1,1.94591,6.49224,0,3.258096,7.878534,1,0,0,40.7,8.78264,1.94591,5.432637,1 +18,3,25,1,4,330175,0,6519.062,14.56194,1,7,1,194.2352,6.072252,0,0,438.0323,638.3397,1,0,0,6,0,8,70,9.967326,1,40.7,660,660,1,1,2.079442,6.49224,0,3.258096,7.878534,1,0,0,40.7,8.78264,2.079442,6.45887,1 +18,3,25,1,5,330175,0,6519.062,15.56194,1,7,1,157.745,6.181946,25.28978,0,507.4359,696.6526,1,0,0,6,6,8,70,9.967326,1,40.7,660,660,1,1,2.079442,6.49224,0,3.258096,7.878534,1,0,0,40.7,8.78264,2.079442,6.546287,1 +18,3,25,1,1,330176,0,6519.062,12.85695,1,7,1,49.59514,8.274291,0,0,0,57.86943,0,0,0,6,0,6,66.7,9.967326,0,63,660,660,1,1,1.791759,6.49224,0,3.258096,7.878534,1,0,0,63,8.78264,1.791759,4.058189,1 +18,3,25,1,2,330176,0,6519.062,13.85695,1,7,1,99.7669,12.23776,52.21445,0,0,164.2191,0,0,0,5,4,6,66.7,9.967326,0,63,660,660,1,1,1.791759,6.49224,0,3.258096,7.878534,1,0,0,63,8.78264,1.791759,5.101202,1 +18,3,25,1,3,330176,0,6519.062,14.85695,1,7,1,94.48483,16.41727,0,0,0,110.9021,0,0,0,8,0,7,66.7,9.967326,0,63,660,660,1,1,1.94591,6.49224,0,3.258096,7.878534,1,0,0,63,8.78264,1.94591,4.708648,1 +18,3,25,1,4,330176,0,6519.062,15.85695,1,7,1,132.1676,25.1153,0,76.86395,0,157.2829,0,0,5,4,0,8,66.7,9.967326,0,63,660,660,1,1,2.079442,6.49224,0,3.258096,7.878534,1,0,0,63,8.78264,2.079442,5.058046,1 +18,3,25,1,5,330176,0,6519.062,16.85695,1,7,1,35.65156,11.0994,21.07482,0,0,67.82578,0,0,0,2,1,8,66.7,9.967326,0,63,660,660,1,1,2.079442,6.49224,0,3.258096,7.878534,1,0,0,63,8.78264,2.079442,4.216942,1 +18,3,25,1,1,330177,0,6519.062,37.55784,1,7,1,329.2004,19.86336,31.88259,0,3663.669,4044.615,2,0,0,16,1,6,59.6,13.8,1,54.5,660,660,0,0,1.791759,6.49224,0,3.258096,7.878534,1,0,0,54.5,8.78264,1.791759,8.305141,1 +18,3,25,1,2,330177,0,6519.062,38.55784,1,7,1,148.6247,22.21445,6.993007,0,609.3566,787.1888,1,0,0,2,4,6,59.6,13.8,1,54.5,660,660,0,0,1.791759,6.49224,0,3.258096,7.878534,1,0,0,54.5,8.78264,1.791759,6.668468,1 +18,3,25,1,3,330177,0,6519.062,39.55784,1,7,1,174.7328,9.683625,0,0,944.8782,1129.295,1,0,0,12,1,7,59.6,13.8,1,54.5,660,660,0,0,1.94591,6.49224,0,3.258096,7.878534,1,0,0,54.5,8.78264,1.94591,7.029348,1 +18,3,25,1,4,330177,0,6519.062,40.55784,1,7,1,241.6603,35.10761,0,0,0,276.7679,0,0,0,5,0,8,59.6,13.8,1,54.5,660,660,0,0,2.079442,6.49224,0,3.258096,7.878534,1,0,0,54.5,8.78264,2.079442,5.623179,1 +18,3,25,1,5,330177,0,6519.062,41.55784,1,7,1,542.3604,105.7534,36.17843,0,388.3597,1072.652,1,0,0,14,14,8,59.6,13.8,1,54.5,660,660,0,0,2.079442,6.49224,0,3.258096,7.878534,1,0,0,54.5,8.78264,2.079442,6.977889,1 +18,3,25,1,1,330178,0,6519.062,17.26215,1,7,1,174.8482,66.85223,15.18219,0,0,256.8826,0,0,0,4,1,6,62.8,20.7,0,42,660,660,1,1,1.791759,6.49224,0,3.258096,7.878534,1,0,0,42,8.78264,1.791759,5.548619,1 +18,3,25,1,2,330178,0,6519.062,18.26215,1,7,1,160.6527,100.5594,15.38461,0,0,276.5967,0,0,0,4,2,6,62.8,20.7,0,42,660,660,0,0,1.791759,6.49224,0,3.258096,7.878534,1,0,0,42,8.78264,1.791759,5.622561,1 +18,3,25,1,3,330178,0,6519.062,19.26215,1,7,1,328.773,37.23814,0,0,1597.525,1963.536,1,0,0,2,6,7,62.8,20.7,0,42,660,660,0,0,1.94591,6.49224,0,3.258096,7.878534,1,0,0,42,8.78264,1.94591,7.582502,1 +18,3,25,1,4,330178,0,6519.062,20.26215,1,7,1,353.3436,45.36895,21.52191,0,0,420.2344,0,0,0,4,5,8,62.8,20.7,0,42,660,660,0,0,2.079442,6.49224,0,3.258096,7.878534,1,0,0,42,8.78264,2.079442,6.040813,1 +18,3,25,1,5,330178,0,6519.062,21.26215,1,7,1,167.2287,62.11802,0,0,0,229.3467,0,0,0,5,0,8,62.8,20.7,0,42,660,660,0,0,2.079442,6.49224,0,3.258096,7.878534,1,0,0,42,8.78264,2.079442,5.435235,1 +18,3,25,1,1,330179,0,4618.769,19.19233,0,12,1,10.12146,9.109312,26.31579,0,0,45.54656,0,0,0,0,1,1,67,10.3,0,71.4,300,300,0,0,0,5.703783,0,3.258096,7.090077,1,0,0,71.4,8.4381,0,3.818735,1 +18,3,25,1,2,330179,0,4618.769,20.19233,0,12,1,57.80886,8.065269,5.361305,0,0,71.23543,0,0,0,2,0,1,67,10.3,0,71.4,300,300,0,0,0,5.703783,0,3.258096,7.090077,1,0,0,71.4,8.4381,0,4.26599,1 +18,3,25,1,3,330179,0,4618.769,21.19233,0,12,1,8.12313,4.908081,0,0,0,13.03121,0,0,0,1,0,1,67,10.3,0,71.4,300,300,0,0,0,5.703783,0,3.258096,7.090077,1,0,0,71.4,8.4381,0,2.567347,1 +18,3,25,1,4,330179,0,4618.769,22.19233,0,12,1,17.29439,19.36971,21.13759,0,0,57.80169,0,0,0,1,1,1,67,10.3,0,71.4,300,300,0,0,0,5.703783,0,3.258096,7.090077,1,0,0,71.4,8.4381,0,4.057018,1 +18,3,25,1,5,330179,0,4618.769,23.19233,0,12,1,26.94064,1.053741,14.75237,0,0,42.74675,0,0,0,1,1,1,67,10.3,0,71.4,300,300,0,0,0,5.703783,0,3.258096,7.090077,1,0,0,71.4,8.4381,0,3.755293,1 +13,3,0,1,1,330180,0,8399.413,13.63176,0,14,1,70.34413,1.67004,0,0,0,72.01417,0,0,0,3,0,6,76.7,9.967326,0,85.2,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.036036,1.791759,4.276863,1 +13,3,0,1,2,330180,0,8399.413,14.63176,0,14,1,141.4918,0,0,0,0,141.4918,0,0,0,6,0,6,76.7,9.967326,0,85.2,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.036036,1.791759,4.952242,1 +13,3,0,1,3,330180,0,8399.413,15.63176,0,14,1,1.282599,0,0,0,0,1.282599,0,0,0,1,0,5,76.7,9.967326,0,85.2,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.036036,1.609438,.2488888,1 +13,3,0,1,1,330181,0,8399.413,16.31485,0,14,1,17.71255,0,0,0,0,17.71255,0,0,0,2,0,6,82.4,0,0,75,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,75,9.036036,1.791759,2.874274,1 +13,3,0,1,2,330181,0,8399.413,17.31485,0,14,1,27.45921,0,26.10723,0,0,53.56643,0,0,0,1,0,6,82.4,0,0,75,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,75,9.036036,1.791759,3.980923,1 +13,3,0,1,3,330181,0,8399.413,18.31485,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,82.4,0,0,75,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,75,9.036036,1.609438,,0 +13,3,0,1,1,330182,0,8399.413,49.71937,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,79.8,31,1,45.5,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,45.5,9.036036,1.791759,,0 +13,3,0,1,2,330182,0,8399.413,50.71937,0,12,1,11.18881,0,0,0,1036.69,1047.879,1,0,0,0,0,6,79.8,31,1,45.5,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,45.5,9.036036,1.791759,6.954523,1 +13,3,0,1,3,330182,0,8399.413,51.71937,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,79.8,31,1,45.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,45.5,9.036036,1.609438,,0 +13,3,0,1,1,330183,0,8399.413,49.39083,1,14,1,169.0283,3.922065,0,0,0,172.9504,0,0,0,4,0,6,80.3,24.1,1,67,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,67,9.036036,1.791759,5.153005,1 +13,3,0,1,2,330183,0,8399.413,50.39083,1,14,.2876712,1072,99.25408,0,0,3138.601,4309.855,3,0,0,10,0,6,80.3,24.1,1,67,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,67,9.036036,1.791759,8.36866,1 +13,3,0,1,1,330184,0,8399.413,11.30459,0,14,1,27.32794,0,0,0,0,27.32794,0,0,0,1,0,6,81.7,9.967326,0,85.2,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,85.2,9.036036,1.791759,3.307909,1 +13,3,0,1,2,330184,0,8399.413,12.30459,0,14,1,16.31702,9.65035,0,0,0,25.96737,0,0,0,2,0,6,81.7,9.967326,0,85.2,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,85.2,9.036036,1.791759,3.25684,1 +13,3,0,1,3,330184,0,8399.413,13.30459,0,14,1,8.764429,0,0,0,0,8.764429,0,0,0,1,0,5,81.7,9.967326,0,85.2,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,85.2,9.036036,1.609438,2.170701,1 +13,3,0,1,1,330185,0,8399.413,17.65914,1,14,1,0,0,0,0,0,0,0,0,0,0,0,6,82.4,3.4,0,53.6,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,1,0,0,53.6,9.036036,1.791759,,0 +13,3,0,1,2,330185,0,8399.413,18.65914,1,14,1,0,0,0,0,0,0,0,0,0,0,0,6,82.4,3.4,0,53.6,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,53.6,9.036036,1.791759,,0 +13,3,0,1,3,330185,0,8399.413,19.65914,1,14,1,0,0,0,0,0,0,0,0,0,0,0,5,82.4,3.4,0,53.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,53.6,9.036036,1.609438,,0 +11,3,0,1,1,330186,0,5353.666,15.01985,1,12,1,16.34321,2.451481,39.32584,0,0,58.12053,0,0,0,1,1,2,71.8,3.4,0,64.3,0,72,1,1,.6931472,4.276666,0,0,0,0,0,0,64.3,8.585724,.6931472,4.062519,1 +11,3,0,1,2,330186,0,5353.666,16.01985,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,71.8,3.4,0,64.3,0,72,1,1,.6931472,4.276666,0,0,0,0,0,0,64.3,8.585724,.6931472,,0 +11,3,0,1,3,330186,0,5353.666,17.01985,1,12,1,9.88822,0,34.39381,0,0,44.28203,0,0,0,0,1,2,71.8,3.4,0,64.3,0,72,1,1,.6931472,4.276666,0,0,0,0,0,0,64.3,8.585724,.6931472,3.790579,1 +11,3,0,1,1,330187,0,5353.666,57.63997,1,12,1,335.3932,0,115.9346,0,0,451.3279,0,0,0,12,3,2,60.1,20.7,1,56.8,0,72,0,0,.6931472,4.276666,0,0,0,0,0,0,56.8,8.585724,.6931472,6.112194,1 +11,3,0,1,2,330187,0,5353.666,58.63997,1,12,1,105.0164,0,79.93436,0,0,184.9508,0,0,0,4,1,2,60.1,20.7,1,56.8,0,72,0,0,.6931472,4.276666,0,0,0,0,0,0,56.8,8.585724,.6931472,5.22009,1 +11,3,0,1,3,330187,0,5353.666,59.63997,1,12,1,58.46947,28.11694,69.00258,0,0,155.589,0,0,0,5,1,2,60.1,20.7,1,56.8,0,72,0,0,.6931472,4.276666,0,0,0,0,0,0,56.8,8.585724,.6931472,5.047218,1 +11,3,0,1,1,330226,0,12014.66,59.53183,0,10,1,28.08989,5.474975,0,0,0,33.56486,0,0,0,1,0,2,88.3,10.3,0,65.9,0,0,0,0,.6931472,0,0,0,0,1,0,0,65.9,9.393967,.6931472,3.51348,1 +11,3,0,1,2,330226,0,12014.66,60.53183,0,10,1,85.79465,16.0572,46.4135,0,0,148.2654,0,0,0,5,1,2,88.3,10.3,0,65.9,0,0,0,0,.6931472,0,0,0,0,1,0,0,65.9,9.393967,.6931472,4.999003,1 +11,3,0,1,3,330226,0,12014.66,61.53183,0,10,1,38.69304,54.39381,0,0,0,93.08685,0,0,0,3,0,2,88.3,10.3,0,65.9,0,0,0,0,.6931472,0,0,0,0,1,0,0,65.9,9.393967,.6931472,4.533533,1 +11,3,0,1,4,330226,0,12014.66,62.53183,0,10,1,59.71307,67.96432,0,0,0,127.6774,0,0,0,4,0,2,88.3,10.3,0,65.9,0,0,0,0,.6931472,0,0,0,0,1,0,0,65.9,9.393967,.6931472,4.849507,1 +11,3,0,1,5,330226,0,12014.66,63.53183,0,10,1,37.50885,57.03822,35.3857,0,0,129.9328,0,0,0,4,1,2,88.3,10.3,0,65.9,0,0,0,0,.6931472,0,0,0,0,1,0,0,65.9,9.393967,.6931472,4.867017,1 +11,3,0,1,1,330227,0,12014.66,56.17522,1,8,1,12.76813,11.82329,0,0,380.7916,405.3831,1,0,0,1,0,2,84,24.1,0,72.7,0,0,0,0,.6931472,0,0,0,0,1,0,0,72.7,9.393967,.6931472,6.004832,1 +11,3,0,1,2,330227,0,12014.66,57.17522,1,8,1,10.78294,14.85701,0,0,0,25.63994,0,0,0,1,0,2,84,24.1,0,72.7,0,0,0,0,.6931472,0,0,0,0,1,0,0,72.7,9.393967,.6931472,3.244151,1 +11,3,0,1,3,330227,0,12014.66,58.17522,1,8,1,20.89424,13.85641,0,0,0,34.75064,0,0,0,1,1,2,84,24.1,0,72.7,0,0,0,0,.6931472,0,0,0,0,1,0,0,72.7,9.393967,.6931472,3.548198,1 +11,3,0,1,4,330227,0,12014.66,59.17522,1,8,1,25.94029,0,0,0,0,25.94029,0,0,0,2,0,2,84,24.1,0,72.7,0,0,0,0,.6931472,0,0,0,0,1,0,0,72.7,9.393967,.6931472,3.255797,1 +11,3,0,1,5,330227,0,12014.66,60.17522,1,8,1,121.4437,19.5966,13.95966,0,0,155,0,0,0,6,0,2,84,24.1,0,72.7,0,0,0,0,.6931472,0,0,0,0,1,0,0,72.7,9.393967,.6931472,5.043425,1 +16,3,95,1,1,330232,0,222.8739,57.73854,1,7,1,16.44737,6.629555,0,0,0,23.07692,0,0,0,1,0,1,60.1,13.8,0,72.7,360,311.64,0,0,0,5.741848,0,4.564348,5.937397,0,0,0,72.7,5.411083,0,3.138833,1 +16,3,95,1,2,330232,0,222.8739,58.73854,1,7,1,19.58042,11.95804,0,0,0,31.53846,0,0,0,2,0,1,60.1,13.8,0,72.7,360,311.64,0,0,0,5.741848,0,4.564348,5.937397,0,0,0,72.7,5.411083,0,3.451208,1 +16,3,95,1,3,330232,0,222.8739,59.73854,1,7,1,185.2501,16.24626,0,0,1180.218,1381.714,1,0,0,5,0,1,60.1,13.8,0,72.7,360,311.64,0,0,0,5.741848,0,4.564348,5.937397,0,0,0,72.7,5.411083,0,7.231081,1 +16,3,95,1,1,330233,0,7347.801,31.24983,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,74.5,10.3,0,65.5,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,65.5,8.902292,0,,0 +16,3,95,1,2,330233,0,7347.801,32.24983,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,74.5,10.3,0,65.5,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,65.5,8.902292,0,,0 +16,3,95,1,3,330233,0,7347.801,33.24983,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,74.5,10.3,0,65.5,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,65.5,8.902292,0,,0 +13,3,0,1,1,330237,0,1754.839,54.10815,1,14,1,197.7017,37.5383,102.145,0,1128.943,1466.328,1,0,0,14,1,1,66.6,24.1,1,52.3,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,52.3,7.470702,0,7.290516,1 +13,3,0,1,2,330237,0,1754.839,55.10815,1,14,1,114.8617,31.15331,70.32349,0,1109.489,1325.828,1,0,0,13,0,1,66.6,24.1,1,52.3,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,52.3,7.470702,0,7.189792,1 +13,3,0,1,3,330237,0,1754.839,56.10815,1,14,1,51.59071,65.51591,0,0,411.7369,528.8435,1,0,0,7,0,1,66.6,24.1,1,52.3,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,52.3,7.470702,0,6.270692,1 +13,3,0,1,1,330238,0,6097.947,61.47844,0,12,1,45.45454,15.19408,25.53626,0,0,86.18488,0,0,0,4,1,1,59.6,24.1,0,46.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,46.6,8.715872,0,4.456495,1 +13,3,0,1,2,330238,0,6097.947,62.47844,0,12,1,110.5485,104.5429,0,0,1079.048,1294.14,1,0,0,11,0,1,59.6,24.1,0,46.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,46.6,8.715872,0,7.165601,1 +13,3,0,1,3,330238,0,6097.947,63.47844,0,12,1,217.6268,103.7446,0,0,0,321.3715,0,0,0,11,1,1,59.6,24.1,0,46.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,46.6,8.715872,0,5.772598,1 +17,3,25,1,1,330293,0,5886.804,16.53936,1,12,1,8.097166,0,0,0,0,8.097166,0,0,0,0,0,6,55.9,3.4,0,39.8,454.8,454.8,1,1,1.791759,6.119858,0,3.258096,7.506152,1,0,0,39.8,8.680638,1.791759,2.091514,1 +17,3,25,1,2,330293,0,5886.804,17.53936,1,12,1,7.459208,0,0,0,0,7.459208,0,0,0,1,0,6,55.9,3.4,0,39.8,454.8,454.8,1,1,1.791759,6.119858,0,3.258096,7.506152,1,0,0,39.8,8.680638,1.791759,2.009449,1 +17,3,25,1,3,330293,0,5886.804,18.53936,1,12,1,0,0,0,0,245.1048,245.1048,1,0,0,0,0,6,55.9,3.4,0,39.8,454.8,454.8,0,0,1.791759,6.119858,0,3.258096,7.506152,1,0,0,39.8,8.680638,1.791759,5.501686,1 +17,3,25,1,1,330294,0,5886.804,14.07803,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,83.3,9.967326,0,88.9,454.8,454.8,1,0,1.791759,6.119858,0,3.258096,7.506152,0,0,0,88.9,8.680638,1.791759,,0 +17,3,25,1,2,330294,0,5886.804,15.07803,0,12,1,6.060606,0,0,0,0,6.060606,0,0,0,1,0,6,83.3,9.967326,0,88.9,454.8,454.8,1,0,1.791759,6.119858,0,3.258096,7.506152,0,0,0,88.9,8.680638,1.791759,1.80181,1 +17,3,25,1,3,330294,0,5886.804,16.07803,0,12,1,38.94827,8.294143,.8721676,0,0,48.11458,0,0,0,2,0,6,83.3,9.967326,0,88.9,454.8,454.8,1,0,1.791759,6.119858,0,3.258096,7.506152,0,0,0,88.9,8.680638,1.791759,3.873585,1 +17,3,25,1,1,330295,0,5886.804,46.11909,1,12,1,14.17004,0,15.18219,0,0,29.35223,0,0,0,0,2,6,44.7,3.4,0,85.2,454.8,454.8,0,0,1.791759,6.119858,0,3.258096,7.506152,0,0,0,85.2,8.680638,1.791759,3.379368,1 +17,3,25,1,2,330295,0,5886.804,47.11909,1,12,1,13.51981,0,0,0,0,13.51981,0,0,0,0,0,6,44.7,3.4,0,85.2,454.8,454.8,0,0,1.791759,6.119858,0,3.258096,7.506152,0,0,0,85.2,8.680638,1.791759,2.604156,1 +17,3,25,1,3,330295,0,5886.804,48.11909,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,44.7,3.4,0,85.2,454.8,454.8,0,0,1.791759,6.119858,0,3.258096,7.506152,0,0,0,85.2,8.680638,1.791759,,0 +17,3,25,1,1,330296,0,5886.804,12.32307,1,12,1,89.44838,1.745951,0,0,0,91.19433,0,0,0,2,0,6,78.3,9.967326,0,92.6,454.8,454.8,1,1,1.791759,6.119858,0,3.258096,7.506152,0,0,0,92.6,8.680638,1.791759,4.512993,1 +17,3,25,1,2,330296,0,5886.804,13.32307,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,78.3,9.967326,0,92.6,454.8,454.8,1,1,1.791759,6.119858,0,3.258096,7.506152,0,0,0,92.6,8.680638,1.791759,,0 +17,3,25,1,3,330296,0,5886.804,14.32307,1,12,1,5.985464,9.320222,0,0,0,15.30569,0,0,0,1,0,6,78.3,9.967326,0,92.6,454.8,454.8,1,1,1.791759,6.119858,0,3.258096,7.506152,0,0,0,92.6,8.680638,1.791759,2.728224,1 +17,3,25,1,1,330297,0,5886.804,48.62971,0,12,1,27.83401,3.26417,1.133603,0,0,32.23178,0,0,0,2,0,6,78.2,6.9,0,80.7,454.8,454.8,0,0,1.791759,6.119858,0,3.258096,7.506152,0,0,0,80.7,8.680638,1.791759,3.472953,1 +17,3,25,1,2,330297,0,5886.804,49.62971,0,12,1,25.36131,0,0,0,0,25.36131,0,0,0,1,0,6,78.2,6.9,0,80.7,454.8,454.8,0,0,1.791759,6.119858,0,3.258096,7.506152,0,0,0,80.7,8.680638,1.791759,3.233225,1 +17,3,25,1,3,330297,0,5886.804,50.62971,0,12,1,188.5421,3.454468,0,0,195.0406,387.0372,1,0,0,5,0,6,78.2,6.9,0,80.7,454.8,454.8,0,0,1.791759,6.119858,0,3.258096,7.506152,0,0,0,80.7,8.680638,1.791759,5.958521,1 +17,3,25,1,1,330298,0,5886.804,18.59822,1,11,1,19.23077,0,0,0,0,19.23077,0,0,0,1,1,6,79.3,3.4,0,96.4,454.8,454.8,0,0,1.791759,6.119858,0,3.258096,7.506152,0,0,0,96.4,8.680638,1.791759,2.956511,1 +17,3,25,1,2,330298,0,5886.804,19.59822,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,79.3,3.4,0,96.4,454.8,454.8,0,0,1.791759,6.119858,0,3.258096,7.506152,0,0,0,96.4,8.680638,1.791759,,0 +17,3,25,1,3,330298,0,5886.804,20.59822,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,79.3,3.4,0,96.4,454.8,454.8,0,0,1.791759,6.119858,0,3.258096,7.506152,0,0,0,96.4,8.680638,1.791759,,0 +17,3,25,1,1,330299,0,3338.417,20.37509,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,82.4,6.9,0,71.6,244.15,244.15,0,0,0,5.497783,0,3.258096,6.884077,0,0,0,71.6,8.113551,0,,0 +17,3,25,1,2,330299,0,3338.417,21.37509,0,12,1,2.812939,0,0,0,0,2.812939,0,0,0,0,0,1,82.4,6.9,0,71.6,244.15,244.15,0,0,0,5.497783,0,3.258096,6.884077,0,0,0,71.6,8.113551,0,1.03423,1 +17,3,25,1,3,330299,0,3338.417,22.37509,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,82.4,6.9,0,71.6,244.15,244.15,0,0,0,5.497783,0,3.258096,6.884077,0,0,0,71.6,8.113551,0,,0 +13,3,0,0,1,330358,0,1210.557,43.07187,1,6,.8219178,68.14272,0,0,0,1281.184,1349.327,1,0,0,1,0,1,58.5,3.4,1,60.2,150,211.2,0,0,0,5.352806,1,4.564348,5.061929,1,0,0,60.2,7.099662,0,7.207361,1 +13,3,0,0,1,330380,0,14150.73,44.60506,1,12,1,74.20837,0,0,0,0,74.20837,0,0,0,1,0,3,80.3,13.8,0,76.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,76.1,9.557592,1.098612,4.306877,1 +13,3,0,0,2,330380,0,14150.73,45.60506,1,12,1,96.57759,0,25.31646,0,0,121.894,0,0,0,1,1,3,80.3,13.8,0,76.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,76.1,9.557592,1.098612,4.803152,1 +13,3,0,0,3,330380,0,14150.73,46.60506,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,80.3,13.8,0,76.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,76.1,9.557592,1.098612,,0 +13,3,0,0,1,330381,0,14150.73,17.66461,0,12,1,0,0,30.13279,0,0,30.13279,0,0,0,0,0,3,62.2,6.9,0,65.9,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.557592,1.098612,3.405614,1 +13,3,0,0,2,330381,0,14150.73,18.66461,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,62.2,6.9,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.557592,1.098612,,0 +13,3,0,0,3,330381,0,14150.73,19.66461,0,12,1,23.98968,0,24.93551,0,0,48.92519,0,0,0,1,1,3,62.2,6.9,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.557592,1.098612,3.890292,1 +13,3,0,0,1,330382,0,14150.73,44.59685,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,64.4,3.4,1,53.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,53.4,9.557592,1.098612,,0 +13,3,0,0,2,330382,0,14150.73,45.59685,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,64.4,3.4,1,53.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,53.4,9.557592,1.098612,,0 +13,3,0,0,3,330382,0,14150.73,46.59685,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,64.4,3.4,1,53.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,53.4,9.557592,1.098612,,0 +13,3,0,1,1,330394,0,5472.727,19.75086,1,12,1,18.47166,4.09919,0,0,759.2409,781.8118,1,0,0,0,0,3,51.6,3.4,0,85.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.607715,1.098612,6.661614,1 +13,3,0,1,2,330394,0,5472.727,20.75086,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,51.6,3.4,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.607715,1.386294,,0 +13,3,0,1,3,330394,0,5472.727,21.75086,1,12,1,6.412997,0,0,0,0,6.412997,0,0,0,1,0,4,51.6,3.4,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.607715,1.386294,1.858327,1 +13,3,0,1,4,330394,0,5472.727,22.75086,1,12,1,10.76095,0,0,0,0,10.76095,0,0,0,1,0,2,51.6,3.4,0,85.2,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.607715,.6931472,2.375924,1 +13,3,0,1,5,330394,0,5472.727,23.75086,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,51.6,3.4,0,85.2,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.607715,.6931472,,0 +13,3,0,1,1,330395,0,5472.727,47.93977,0,9,1,7.591093,64.97976,28.84615,0,0,101.417,0,0,0,0,1,3,65.4,13.8,0,61.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,61.4,8.607715,1.098612,4.619241,1 +13,3,0,1,2,330395,0,5472.727,48.93977,0,9,1,0,46.24709,17.71562,0,18578.02,18641.98,1,0,0,0,0,4,65.4,13.8,0,61.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,61.4,8.607715,1.386294,9.833171,1 +13,3,0,1,3,330395,0,5472.727,49.93977,0,9,.0958904,0,0,0,0,272.9799,272.9799,0,0,0,0,0,4,65.4,13.8,0,61.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,61.4,8.607715,1.386294,5.609398,1 +13,3,0,1,1,330396,0,5472.727,51.07734,1,7,1,0,0,0,0,0,0,0,0,0,0,0,3,36.7,13.8,0,48.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,48.9,8.607715,1.098612,,0 +13,3,0,1,2,330396,0,5472.727,52.07734,1,7,1,92.96037,24.06993,0,0,0,117.0303,0,0,0,1,0,4,36.7,13.8,0,48.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,48.9,8.607715,1.386294,4.762433,1 +13,3,0,1,3,330396,0,5472.727,53.07734,1,7,1,205.2159,90.59427,14.42924,0,4150.039,4460.278,3,0,0,1,10,4,36.7,13.8,0,48.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,48.9,8.607715,1.386294,8.402966,1 +11,3,0,1,1,330399,.0322129,1,4.717317,0,14,1,19.1522,15.83248,0,0,0,34.98468,0,0,0,2,0,4,83.39137,9.967326,0,92.6,0,0,1,0,1.386294,0,0,0,0,1,0,0,92.6,.6931472,1.386294,3.55491,1 +11,3,0,1,2,330399,.0322129,1,5.717317,0,14,1,11.25176,15.30708,0,0,0,26.55884,0,0,0,2,0,4,83.39137,9.967326,0,92.6,0,0,1,0,1.386294,0,0,0,0,1,0,0,92.6,.6931472,1.386294,3.279363,1 +11,3,0,1,3,330399,.0322129,1,6.717317,0,14,1,28.37489,21.43164,0,0,0,49.80653,0,0,0,4,0,4,83.39137,9.967326,0,92.6,0,0,1,0,1.386294,0,0,0,0,1,0,0,92.6,.6931472,1.386294,3.908146,1 +11,3,0,1,1,330400,.0322129,1,1.705681,1,14,1,49.02962,10.44433,0,0,0,59.47395,0,0,0,8,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,.6931472,1.386294,4.085538,1 +11,3,0,1,2,330400,.0322129,1,2.705681,1,14,1,63.75996,25.3774,0,0,0,89.13737,0,0,0,9,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,.6931472,1.386294,4.490179,1 +11,3,0,1,3,330400,.0322129,1,3.705681,1,14,1,36.54342,26.04471,0,0,0,62.58813,0,0,0,4,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,.6931472,1.386294,4.136576,1 +11,3,0,1,1,330401,.0322129,1,32.64887,0,12,1,15.32176,2.451481,0,0,0,17.77324,0,0,0,2,0,4,62.2,17.2,0,76.1,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.1,.6931472,1.386294,2.877694,1 +11,3,0,1,2,330401,.0322129,1,33.64887,0,12,1,11.25176,0,0,0,0,11.25176,0,0,0,1,0,4,62.2,17.2,0,76.1,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.1,.6931472,1.386294,2.420524,1 +11,3,0,1,3,330401,.0322129,1,34.64887,0,12,1,22.35598,3.250215,0,0,0,25.60619,0,0,0,1,0,4,62.2,17.2,0,76.1,0,0,0,0,1.386294,0,0,0,0,0,0,0,76.1,.6931472,1.386294,3.242834,1 +11,3,0,1,1,330402,.0322129,1,30.12731,1,14,1,51.07252,23.04392,34.72932,0,0,108.8458,0,0,0,2,0,4,72.3,13.8,0,89.8,0,0,0,0,1.386294,0,0,0,0,0,0,0,89.8,.6931472,1.386294,4.689932,1 +11,3,0,1,2,330402,.0322129,1,31.12731,1,14,1,22.50352,29.92968,0,0,0,52.43319,0,0,0,3,0,4,72.3,13.8,0,89.8,0,0,0,0,1.386294,0,0,0,0,0,0,0,89.8,.6931472,1.386294,3.95954,1 +11,3,0,1,3,330402,.0322129,1,32.12731,1,14,1,44.92691,44.19175,31.81427,0,0,120.9329,0,0,0,5,0,4,72.3,13.8,0,89.8,0,0,0,0,1.386294,0,0,0,0,0,0,0,89.8,.6931472,1.386294,4.795236,1 +15,3,95,1,1,330468,0,7494.428,39.0308,1,10,1,41.49797,1.821862,0,0,0,43.31984,0,0,0,2,0,2,83.5,24.1,0,79.5,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,79.5,8.922049,.6931472,3.768611,1 +15,3,95,1,2,330468,0,7494.428,40.0308,1,10,1,5.594406,0,0,0,0,5.594406,0,0,0,1,0,2,83.5,24.1,0,79.5,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,79.5,8.922049,.6931472,1.721767,1 +15,3,95,1,3,330468,0,7494.428,41.0308,1,10,1,0,4.172723,0,0,0,4.172723,0,0,0,0,0,2,83.5,24.1,0,79.5,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,79.5,8.922049,.6931472,1.428569,1 +13,3,0,1,1,330535,0,3287.537,22.20671,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,85.1,17.2,0,75,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,75,8.098198,1.098612,,0 +13,3,0,1,2,330535,0,3287.537,23.20671,1,9,1,224.7086,4.708625,0,0,149.1608,378.5781,1,0,0,2,0,2,85.1,17.2,0,75,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,75,8.098198,.6931472,5.936422,1 +13,3,0,1,1,330536,0,3287.537,2.937714,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,83.39137,9.967326,0,77.8,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.098198,1.098612,,0 +13,3,0,1,2,330536,0,3287.537,3.937714,1,9,1,5.594406,0,0,0,0,5.594406,0,0,0,1,0,2,83.39137,9.967326,0,77.8,450,450,1,1,.6931472,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.098198,.6931472,1.721767,1 +16,3,95,1,1,330554,0,7139.589,42.37372,1,16,1,25.96154,0,24.79757,0,0,50.75911,0,0,0,5,0,3,91.5,6.9,0,94.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,94.3,8.87355,1.098612,3.927091,1 +16,3,95,1,2,330554,0,7139.589,43.37372,1,16,1,4.662004,0,0,0,0,4.662004,0,0,0,1,0,3,91.5,6.9,0,94.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,94.3,8.87355,1.098612,1.539446,1 +16,3,95,1,3,330554,0,7139.589,44.37372,1,16,1,252.1163,0,40.61565,0,1645.981,1938.713,2,0,0,9,0,3,91.5,6.9,0,94.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,94.3,8.87355,1.098612,7.56978,1 +16,3,95,1,4,330554,0,7139.589,45.37372,1,16,1,36.35665,9.185242,0,0,0,45.54189,0,0,0,4,0,3,91.5,6.9,0,94.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,94.3,8.87355,1.098612,3.818633,1 +16,3,95,1,5,330554,0,7139.589,46.37372,1,16,1,20.61819,10.01054,0,0,0,30.62873,0,0,0,3,0,3,91.5,6.9,0,94.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,94.3,8.87355,1.098612,3.421939,1 +16,3,95,1,1,330555,0,7139.589,11.47159,0,16,1,20.1417,0,0,0,0,20.1417,0,0,0,2,0,3,91.7,9.967326,0,92.6,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,92.6,8.87355,1.098612,3.002792,1 +16,3,95,1,2,330555,0,7139.589,12.47159,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,91.7,9.967326,0,92.6,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,92.6,8.87355,1.098612,,0 +16,3,95,1,3,330555,0,7139.589,13.47159,0,16,1,158.3155,0,0,0,0,158.3155,0,0,0,5,0,3,91.7,9.967326,0,92.6,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,92.6,8.87355,1.098612,5.06459,1 +16,3,95,1,4,330555,0,7139.589,14.47159,0,16,1,11.91391,0,0,0,0,11.91391,0,0,0,2,0,3,91.7,9.967326,0,92.6,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,92.6,8.87355,1.098612,2.477707,1 +16,3,95,1,5,330555,0,7139.589,15.47159,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,91.7,9.967326,0,92.6,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,92.6,8.87355,1.098612,,0 +16,3,95,1,1,330556,0,7139.589,16.26557,1,16,1,2.024292,2.656883,0,0,0,4.681174,0,0,0,2,0,3,82.4,3.4,0,81.8,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,0,0,0,81.8,8.87355,1.098612,1.543549,1 +16,3,95,1,2,330556,0,7139.589,17.26557,1,16,1,28.90443,6.941725,0,0,0,35.84615,0,0,0,3,0,3,82.4,3.4,0,81.8,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,0,0,0,81.8,8.87355,1.098612,3.579236,1 +16,3,95,1,3,330556,0,7139.589,18.26557,1,16,1,54.55323,0,0,0,0,54.55323,0,0,0,3,3,3,82.4,3.4,0,81.8,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,81.8,8.87355,1.098612,3.999177,1 +16,3,95,1,4,330556,0,7139.589,19.26557,1,16,1,5.380476,0,0,0,0,5.380476,0,0,0,1,0,3,82.4,3.4,0,81.8,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,81.8,8.87355,1.098612,1.682777,1 +16,3,95,1,5,330556,0,7139.589,20.26557,1,16,1,79.62768,0,0,0,0,79.62768,0,0,0,1,9,3,82.4,3.4,0,81.8,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,81.8,8.87355,1.098612,4.377362,1 +13,3,0,1,1,330567,0,9611.144,28.90075,0,12,1,53.62615,0,23.49336,0,0,77.11951,0,0,0,1,8,1,86.2,10.3,1,72.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,72.7,9.170782,0,4.345356,1 +13,3,0,1,2,330567,0,9611.144,29.90075,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,86.2,10.3,1,72.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,72.7,9.170782,0,,0 +13,3,0,1,3,330567,0,9611.144,30.90075,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,86.2,10.3,1,72.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,72.7,9.170782,0,,0 +13,3,0,1,4,330567,0,9611.144,31.90075,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,86.2,10.3,1,72.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,72.7,9.170782,0,,0 +13,3,0,1,5,330567,0,9611.144,32.90075,0,12,1,26.53928,1.11465,19.72753,0,0,47.38146,0,0,0,2,0,1,86.2,10.3,1,72.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,72.7,9.170782,0,3.858231,1 +13,3,0,1,1,330610,0,8951.319,29.6345,1,12,1,15.32176,0,0,0,0,15.32176,0,0,0,1,0,4,82.4,10.3,0,76.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,76.1,9.099668,1.386294,2.729274,1 +13,3,0,1,2,330610,0,8951.319,30.6345,1,12,1,10.78294,0,31.87998,0,0,42.66291,0,0,0,0,1,4,82.4,10.3,0,76.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,76.1,9.099668,1.386294,3.75333,1 +13,3,0,1,3,330610,0,8951.319,31.6345,1,12,1,58.8994,46.84007,10.74806,0,0,116.4875,0,0,0,4,1,4,82.4,10.3,0,76.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,76.1,9.099668,1.386294,4.757784,1 +13,3,0,1,1,330611,0,8951.319,5.322382,1,12,1,22.47191,6.996936,0,0,0,29.46885,0,0,0,4,0,4,83.3,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.099668,1.386294,3.383334,1 +13,3,0,1,2,330611,0,8951.319,6.322382,1,12,1,17.81528,4.64135,24.37881,0,0,46.83544,0,0,0,2,1,4,83.3,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.099668,1.386294,3.84664,1 +13,3,0,1,3,330611,0,8951.319,7.322382,1,12,1,29.66466,8.985383,11.60791,0,0,50.25795,0,0,0,3,1,4,83.3,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.099668,1.386294,3.917169,1 +13,3,0,1,1,330612,0,8951.319,28.91992,0,12,1,33.04392,3.064351,0,0,0,36.10827,0,0,0,1,0,4,76.6,0,0,62.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,62.5,9.099668,1.386294,3.586522,1 +13,3,0,1,2,330612,0,8951.319,29.91992,0,12,1,50.63291,3.961556,24.84763,0,0,79.4421,0,0,0,4,1,4,76.6,0,0,62.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,62.5,9.099668,1.386294,4.375029,1 +13,3,0,1,3,330612,0,8951.319,30.91992,0,12,1,24.93551,0,12.89768,0,0,37.83319,0,0,0,1,1,4,76.6,0,0,62.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,62.5,9.099668,1.386294,3.633187,1 +13,3,0,1,1,330613,0,8951.319,6.732375,1,12,1,17.87538,3.038815,0,0,0,20.9142,0,0,0,2,0,4,75,9.967326,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.099668,1.386294,3.040428,1 +13,3,0,1,2,330613,0,8951.319,7.732375,1,12,1,40.3188,9.446789,0,0,0,49.76559,0,0,0,3,0,4,75,9.967326,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.099668,1.386294,3.907324,1 +13,3,0,1,3,330613,0,8951.319,8.732375,1,12,1,27.51505,14.05847,0,0,0,41.57352,0,0,0,4,1,4,75,9.967326,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.099668,1.386294,3.727463,1 +14,3,95,1,1,330679,0,586.5103,48.87611,1,12,1,7.591093,0,0,0,0,7.591093,0,0,0,1,0,3,88.8,10.3,0,82.1,738.85,738.85,0,0,1.098612,6.605095,0,4.564348,6.656388,1,0,0,82.1,6.375894,1.098612,2.026976,1 +14,3,95,1,2,330679,0,586.5103,49.87611,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,88.8,10.3,0,82.1,738.85,738.85,0,0,1.098612,6.605095,0,4.564348,6.656388,1,0,0,82.1,6.375894,1.098612,,0 +14,3,95,1,3,330679,0,586.5103,50.87611,1,12,1,10.68833,0,23.51432,0,0,34.20265,0,0,0,0,1,3,88.8,10.3,0,82.1,738.85,738.85,0,0,1.098612,6.605095,0,4.564348,6.656388,1,0,0,82.1,6.375894,1.098612,3.532303,1 +14,3,95,1,1,330680,0,586.5103,48.91718,0,12,1,30.36437,0,36.94332,0,0,67.30769,0,0,0,1,1,3,97.3,3.4,0,86.4,738.85,738.85,0,0,1.098612,6.605095,0,4.564348,6.656388,0,0,0,86.4,6.375894,1.098612,4.209275,1 +14,3,95,1,2,330680,0,586.5103,49.91718,0,12,1,18.64802,0,0,0,0,18.64802,0,0,0,1,0,3,97.3,3.4,0,86.4,738.85,738.85,0,0,1.098612,6.605095,0,4.564348,6.656388,0,0,0,86.4,6.375894,1.098612,2.92574,1 +14,3,95,1,3,330680,0,586.5103,50.91718,0,12,1,17.10133,0,0,0,0,17.10133,0,0,0,1,0,3,97.3,3.4,0,86.4,738.85,738.85,0,0,1.098612,6.605095,0,4.564348,6.656388,0,0,0,86.4,6.375894,1.098612,2.839156,1 +14,3,95,1,1,330682,0,586.5103,20.23545,1,13.5,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,6.9,0,72.7,738.85,738.85,0,0,1.098612,6.605095,0,4.564348,6.656388,0,0,0,72.7,6.375894,1.098612,,0 +14,3,95,1,2,330682,0,586.5103,21.23545,1,13.5,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,6.9,0,72.7,738.85,738.85,0,0,1.098612,6.605095,0,4.564348,6.656388,0,0,0,72.7,6.375894,1.098612,,0 +14,3,95,1,3,330682,0,586.5103,22.23545,1,13.5,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,6.9,0,72.7,738.85,738.85,0,0,1.098612,6.605095,0,4.564348,6.656388,0,0,0,72.7,6.375894,1.098612,,0 +11,3,0,1,1,330698,0,12595.31,30.73785,0,14,1,50.05107,5.05618,25.02554,0,0,80.13279,0,0,0,1,1,1,83,10.3,0,84.1,0,16.8,0,0,0,2.821379,0,0,0,0,0,0,84.1,9.441159,0,4.383685,1 +11,3,0,1,2,330698,0,12595.31,31.73785,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,83,10.3,0,84.1,0,16.8,0,0,0,2.821379,0,0,0,0,0,0,84.1,9.441159,0,,0 +11,3,0,1,3,330698,0,12595.31,32.73785,0,14,1,79.10576,6.865864,30.09458,419.1746,0,116.0662,0,0,18,4,1,2,83,10.3,0,84.1,0,16.8,0,0,.6931472,2.821379,0,0,0,0,0,0,84.1,9.441159,.6931472,4.754161,1 +11,3,0,1,1,330801,0,1015.249,4.13963,0,7,1,37.44939,0,0,0,0,37.44939,0,0,0,3,1,5,80,9.967326,0,96.3,0,0,1,0,1.609438,0,0,0,0,0,0,0,96.3,6.923874,1.609438,3.622991,1 +11,3,0,1,2,330801,0,1015.249,5.13963,0,7,1,6.993007,0,0,0,0,6.993007,0,0,0,1,0,5,80,9.967326,0,96.3,0,0,1,0,1.609438,0,0,0,0,0,0,0,96.3,6.923874,1.609438,1.944911,1 +11,3,0,1,3,330801,0,1015.249,6.13963,0,7,1,5.985464,0,0,0,0,5.985464,0,0,0,1,0,4,80,9.967326,0,96.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,96.3,6.923874,1.386294,1.789334,1 +11,3,0,1,1,330802,0,1015.249,15.14305,1,7,1,22.26721,0,21.25506,0,0,43.52227,0,0,0,1,1,5,87.2,0,0,84.1,0,0,1,1,1.609438,0,0,0,0,0,0,0,84.1,6.923874,1.609438,3.773273,1 +11,3,0,1,2,330802,0,1015.249,16.14305,1,7,1,5.594406,0,0,0,0,5.594406,0,0,0,1,0,5,87.2,0,0,84.1,0,0,1,1,1.609438,0,0,0,0,0,0,0,84.1,6.923874,1.609438,1.721767,1 +11,3,0,1,3,330802,0,1015.249,17.14305,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,87.2,0,0,84.1,0,0,1,1,1.386294,0,0,0,0,0,0,0,84.1,6.923874,1.386294,,0 +11,3,0,1,1,330803,0,1015.249,33.02122,1,7,1,20.39474,11.19939,0,0,0,31.59413,0,0,0,1,1,5,83,3.4,0,85.2,0,0,0,0,1.609438,0,0,0,0,0,0,0,85.2,6.923874,1.609438,3.452971,1 +11,3,0,1,2,330803,0,1015.249,34.02122,1,7,1,27.50583,2.694639,0,97.9021,0,30.20047,0,0,7,2,0,5,83,3.4,0,85.2,0,0,0,0,1.609438,0,0,0,0,0,0,0,85.2,6.923874,1.609438,3.407857,1 +11,3,0,1,3,330803,0,1015.249,35.02122,1,7,1,19.88029,30.3463,0,339.8889,401.3211,451.5477,1,0,27,2,0,4,83,3.4,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,85.2,6.923874,1.386294,6.112681,1 +11,3,0,1,1,330804,0,1015.249,9.705681,0,7,1,10.62753,0,0,0,0,10.62753,0,0,0,0,1,5,81.7,9.967326,0,96.3,0,0,1,0,1.609438,0,0,0,0,0,0,0,96.3,6.923874,1.609438,2.363448,1 +11,3,0,1,2,330804,0,1015.249,10.70568,0,7,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,9.967326,0,96.3,0,0,1,0,1.609438,0,0,0,0,0,0,0,96.3,6.923874,1.609438,,0 +11,3,0,1,1,330806,0,1015.249,13.34429,1,7,1,10.62753,0,0,0,0,10.62753,0,0,0,0,1,5,95,9.967326,0,96.3,0,0,1,1,1.609438,0,0,0,0,0,0,0,96.3,6.923874,1.609438,2.363448,1 +11,3,0,1,2,330806,0,1015.249,14.34429,1,7,1,71.51515,8.741259,0,0,0,80.25641,0,0,0,1,0,5,95,9.967326,0,96.3,0,0,1,1,1.609438,0,0,0,0,0,0,0,96.3,6.923874,1.609438,4.385227,1 +11,3,0,1,3,330806,0,1015.249,15.34429,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,95,9.967326,0,96.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,96.3,6.923874,1.386294,,0 +11,3,0,1,1,330815,0,1591.789,54.04244,1,2,1,20.93973,42.84985,30.26047,0,0,94.05005,0,0,0,1,1,1,55.3,17.2,0,68.2,0,211.2,0,0,0,5.352806,0,0,0,0,1,0,68.2,7.373242,0,4.543827,1 +11,3,0,1,2,330815,0,1591.789,55.04244,1,2,1,37.50586,63.51617,1.64557,0,0,102.6676,0,0,0,3,0,1,55.3,17.2,0,68.2,0,211.2,0,0,0,5.352806,0,0,0,0,1,0,68.2,7.373242,0,4.631496,1 +11,3,0,1,3,330815,0,1591.789,56.04244,1,2,1,27.94497,37.40327,19.37231,0,0,84.72055,0,0,0,2,1,1,55.3,17.2,0,68.2,0,211.2,0,0,0,5.352806,0,0,0,0,1,0,68.2,7.373242,0,4.439358,1 +11,3,0,1,1,330861,0,3679.765,.4079398,0,13,1,64.09602,9.652707,0,0,0,73.74873,0,0,0,6,0,5,83.39137,9.967326,0,77.8,0,1047.24,1,0,1.609438,6.953913,0,0,0,0,0,0,77.8,8.210876,1.609438,4.300664,1 +11,3,0,1,2,330861,0,3679.765,1.40794,0,13,1,57.19644,8.134084,0,0,0,65.33052,0,0,0,7,0,6,83.39137,9.967326,0,77.8,0,1047.24,1,0,1.791759,6.953913,0,0,0,0,0,0,77.8,8.210876,1.791759,4.179459,1 +11,3,0,1,3,330861,0,3679.765,2.40794,0,13,1,20.63629,15.64918,0,0,0,36.28547,0,0,0,4,0,6,83.39137,9.967326,0,77.8,0,1047.24,1,0,1.791759,6.953913,0,0,0,0,0,0,77.8,8.210876,1.791759,3.591417,1 +11,3,0,1,1,330862,0,5513.196,4.205339,0,10,1,268.1052,0,0,0,0,268.1052,0,0,0,6,0,3,83.39137,9.967326,0,7.4,0,78,1,0,1.098612,4.356709,0,0,0,0,0,0,7.4,8.615081,1.098612,5.59138,1 +11,3,0,1,2,330862,0,5513.196,5.205339,0,10,1,402.7192,0,0,0,414.5101,817.2292,1,0,0,16,0,3,83.39137,9.967326,0,7.4,0,78,1,0,1.098612,4.356709,0,0,0,0,0,0,7.4,8.615081,1.098612,6.70592,1 +11,3,0,1,3,330862,0,5513.196,6.205339,0,10,1,14.61737,0,0,0,0,14.61737,0,0,0,2,0,3,83.39137,9.967326,0,7.4,0,78,1,0,1.098612,4.356709,0,0,0,0,0,0,7.4,8.615081,1.098612,2.68221,1 +11,3,0,1,1,330863,0,5513.196,20.83504,1,10,1,43.82022,2.037794,0,0,0,45.85802,0,0,0,5,0,3,72.9,6.9,1,38.6,0,78,0,0,1.098612,4.356709,0,0,0,0,0,0,38.6,8.615081,1.098612,3.82555,1 +11,3,0,1,2,330863,0,5513.196,21.83504,1,10,1,160.4313,0,35.63057,0,0,196.0619,0,0,0,5,0,3,72.9,6.9,1,38.6,0,78,0,0,1.098612,4.356709,0,0,0,0,0,0,38.6,8.615081,1.098612,5.27843,1 +11,3,0,1,3,330863,0,5513.196,22.83504,1,10,1,137.4033,0,0,0,1303.641,1441.045,1,0,0,5,0,3,72.9,6.9,1,38.6,0,78,0,0,1.098612,4.356709,0,0,0,0,0,0,38.6,8.615081,1.098612,7.273124,1 +16,3,95,0,1,330868,0,7497.361,.0684463,0,14,1,51.51984,6.161772,0,0,0,57.68161,0,0,0,8,0,4,83.39137,9.967326,.0268456,,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,79.22147,8.92244,1.386294,4.054938,1 +16,3,95,0,2,330868,0,7497.361,1.068446,0,14,1,61.93182,10.80019,0,0,0,72.73201,0,0,0,9,0,4,83.39137,9.967326,.0268456,,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,79.22147,8.92244,1.386294,4.286782,1 +16,3,95,0,3,330868,0,7497.361,2.068446,0,14,1,18.20546,2.06762,0,0,0,20.27308,0,0,0,3,0,4,83.39137,9.967326,.0268456,,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,79.22147,8.92244,1.386294,3.009294,1 +16,3,95,0,4,330868,0,7497.361,3.068446,0,14,1,27.41237,2.343442,0,0,0,29.75581,0,0,0,3,0,5,83.39137,9.967326,.0268456,,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,79.22147,8.92244,1.609438,3.393024,1 +16,3,95,0,5,330868,0,7497.361,4.068446,0,14,1,31.12701,1.670841,0,0,0,32.79785,0,0,0,4,0,5,83.39137,9.967326,.0268456,,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,79.22147,8.92244,1.609438,3.490363,1 +11,3,0,1,1,330871,0,14874.49,19.00068,0,13,1,61.23482,1.11336,0,0,0,62.34818,0,0,0,1,0,6,47.9,0,1,61.4,0,580.8,0,0,1.791759,6.364407,0,0,0,0,0,0,61.4,9.60747,1.791759,4.132734,1 +11,3,0,1,2,330871,0,14874.49,20.00068,0,13,1,2.564103,0,0,0,0,2.564103,0,0,0,0,0,6,47.9,0,1,61.4,0,580.8,0,0,1.791759,6.364407,0,0,0,0,0,0,61.4,9.60747,1.791759,.9416085,1 +11,3,0,1,3,330871,0,14874.49,21.00068,0,13,1,39.76058,0,0,0,0,39.76058,0,0,0,2,0,6,47.9,0,1,61.4,0,580.8,0,0,1.791759,6.364407,0,0,0,0,0,0,61.4,9.60747,1.791759,3.682876,1 +11,3,0,1,4,330871,0,14874.49,22.00068,0,13,1,0,0,0,0,0,0,0,0,0,0,0,6,47.9,0,1,61.4,0,580.8,0,0,1.791759,6.364407,0,0,0,0,0,0,61.4,9.60747,1.791759,,0 +11,3,0,1,5,330871,0,14874.49,23.00068,0,13,1,5.268704,2.142606,0,0,0,7.41131,0,0,0,1,0,6,47.9,0,1,61.4,0,580.8,0,0,1.791759,6.364407,0,0,0,0,0,0,61.4,9.60747,1.791759,2.003007,1 +11,3,0,1,1,330872,0,14874.49,20.22998,1,14,1,42.53542,10.67814,0,0,279.7976,333.0111,1,0,0,4,0,6,83.5,3.4,0,65.9,0,580.8,0,0,1.791759,6.364407,0,0,0,0,0,0,65.9,9.60747,1.791759,5.808176,1 +11,3,0,1,2,330872,0,14874.49,21.22998,1,14,1,40.55944,8.717949,0,0,0,49.27739,0,0,0,2,0,6,83.5,3.4,0,65.9,0,580.8,0,0,1.791759,6.364407,0,0,0,0,0,0,65.9,9.60747,1.791759,3.897465,1 +11,3,0,1,3,330872,0,14874.49,22.22998,1,14,1,45.1475,7.524583,0,79.09363,0,52.67208,0,0,4,4,0,6,83.5,3.4,0,65.9,0,580.8,0,0,1.791759,6.364407,0,0,0,0,0,0,65.9,9.60747,1.791759,3.964086,1 +11,3,0,1,4,330872,0,14874.49,23.22998,1,14,1,7.302075,2.924673,0,338.2014,0,10.22675,0,0,22,1,0,6,83.5,3.4,0,65.9,0,580.8,0,0,1.791759,6.364407,0,0,0,0,0,0,65.9,9.60747,1.791759,2.325007,1 +11,3,0,1,5,330872,0,14874.49,24.22998,1,14,1,141.7106,11.99508,0,14.04988,0,153.7057,0,0,1,2,0,6,83.5,3.4,0,65.9,0,580.8,0,0,1.791759,6.364407,0,0,0,0,0,0,65.9,9.60747,1.791759,5.035039,1 +15,3,95,0,1,330873,0,1703.226,.0465435,0,9,1,88.30972,2.884615,0,0,0,91.19433,0,0,0,5,0,2,83.39137,9.967326,.0268456,,0,0,1,0,.6931472,0,0,4.564348,0,0,0,0,79.22147,7.440866,.6931472,4.512993,1 +15,3,95,0,2,330873,0,1703.226,1.046543,0,9,1,0,2.097902,0,0,0,2.097902,0,0,0,0,0,2,83.39137,9.967326,.0268456,,0,0,1,0,.6931472,0,0,4.564348,0,0,0,0,79.22147,7.440866,.6931472,.7409378,1 +15,3,95,0,3,330873,0,1703.226,2.046543,0,9,1,19.66652,2.073536,0,0,0,21.74006,0,0,0,2,0,2,83.39137,9.967326,.0268456,,0,0,1,0,.6931472,0,0,4.564348,0,0,0,0,79.22147,7.440866,.6931472,3.079157,1 +11,3,0,1,1,330874,0,2639.296,21.9822,0,9,1,14.42308,6.022267,23.27935,0,0,43.7247,0,0,0,0,1,5,89.4,3.4,0,80.7,0,0,0,0,1.609438,0,0,0,0,0,0,0,80.7,7.878646,1.609438,3.777913,1 +14,3,95,1,1,330876,1,10370.09,35.00068,0,11.38739,1,24.89878,0,0,0,0,24.89878,0,0,0,1,0,5,66,6.9,0,67,750,750,0,0,1.609438,6.620073,0,4.564348,6.671367,0,0,0,67,9.246778,1.609438,3.214819,1 +14,3,95,1,2,330876,1,10370.09,36.00068,0,11.38739,1,49.84615,0,0,0,0,49.84615,0,0,0,3,0,5,66,6.9,0,67,750,750,0,0,1.609438,6.620073,0,4.564348,6.671367,0,0,0,67,9.246778,1.609438,3.908941,1 +14,3,95,1,3,330876,1,10370.09,37.00068,0,11.38739,1,0,11.05173,0,0,0,11.05173,0,0,0,0,0,6,66,6.9,0,67,750,750,0,0,1.791759,6.620073,0,4.564348,6.671367,0,0,0,67,9.246778,1.791759,2.402587,1 +15,3,95,0,1,330877,0,6617.009,.1122519,0,15,1,6.072875,0,0,0,0,6.072875,0,0,0,1,0,3,83.39137,9.967326,.0268456,,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,79.22147,8.79755,1.098612,1.803832,1 +15,3,95,0,2,330877,0,6617.009,1.112252,0,15,1,0,0,0,0,0,0,0,0,0,0,0,3,83.39137,9.967326,.0268456,,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,79.22147,8.79755,1.098612,,0 +15,3,95,0,3,330877,0,6617.009,2.112252,0,15,1,0,0,0,0,0,0,0,0,0,0,0,3,83.39137,9.967326,.0268456,,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,79.22147,8.79755,1.098612,,0 +10,3,50,0,1,330878,0,2069.208,.5913758,1,12,1,10.12146,1.558704,0,0,0,11.68016,0,0,0,1,0,3,83.39137,9.967326,1,88.9,225,225,1,1,1.098612,5.416101,0,3.931826,6.109248,0,0,0,88.9,7.635405,1.098612,2.457892,1 +10,3,50,0,2,330878,0,2069.208,1.591376,1,12,1,31.70163,3.207459,0,0,0,34.90909,0,0,0,2,0,3,83.39137,9.967326,1,88.9,225,225,1,1,1.098612,5.416101,0,3.931826,6.109248,0,0,0,88.9,7.635405,1.098612,3.552747,1 +10,3,50,0,3,330878,0,2069.208,2.591376,1,12,1,38.39248,0,.8550662,0,0,39.24754,0,0,0,1,0,3,83.39137,9.967326,1,88.9,225,225,1,1,1.098612,5.416101,0,3.931826,6.109248,0,0,0,88.9,7.635405,1.098612,3.669889,1 +11,3,0,1,3,330880,0,10515.54,21.90417,1,,1,31.20992,1.710132,25.65199,0,0,58.57204,0,0,0,2,1,1,73.4,6.9,0,91.7,,,0,0,0,0,0,0,0,0,0,0,91.7,9.260705,0,4.070258,1 +13,3,0,1,1,330881,0,7196.79,.1396304,0,11.38739,1,75.91093,0,0,0,0,75.91093,0,0,0,9,0,7,83.39137,9.967326,0,85.2,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.881529,1.94591,4.329561,1 +13,3,0,1,2,330881,0,7196.79,1.13963,0,11.38739,1,384.7552,55.26807,7.692307,0,1586.42,2034.135,6,0,0,11,13,7,83.39137,9.967326,0,85.2,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.881529,1.94591,7.617826,1 +13,3,0,1,3,330881,0,7196.79,2.13963,0,11.38739,1,628.8799,84.66866,0,0,202.0735,915.6221,1,0,0,17,25,7,83.39137,9.967326,0,85.2,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.881529,1.94591,6.819604,1 +13,3,0,1,1,330882,0,6943.695,12.80219,0,16,1,27.83401,0,0,619.9393,0,27.83401,0,0,35,0,1,3,56.7,9.967326,0,96.3,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.845734,1.098612,3.326259,1 +13,3,0,1,2,330882,0,6943.695,13.80219,0,16,1,0,0,0,587.4126,0,0,0,0,36,0,0,3,56.7,9.967326,0,96.3,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.845734,1.098612,,0 +13,3,0,1,3,330882,0,6943.695,14.80219,0,16,1,120.1368,0,0,74.8183,0,120.1368,0,0,5,1,2,3,56.7,9.967326,0,96.3,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.845734,1.098612,4.788631,1 +13,3,0,1,1,330883,0,3287.537,25.22382,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,76.1,3.4,0,88.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,88.6,8.098198,1.098612,,0 +15,3,95,1,1,330886,.0322129,7920.821,54.93224,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,91.5,0,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,79.5,8.977376,.6931472,,0 +15,3,95,1,2,330886,.0322129,7920.821,55.93224,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,91.5,0,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,79.5,8.977376,.6931472,,0 +15,3,95,1,3,330886,.0322129,7920.821,56.93224,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,91.5,0,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,79.5,8.977376,.6931472,,0 +15,3,95,1,4,330886,.0322129,7920.821,57.93224,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,91.5,0,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,79.5,8.977376,.6931472,,0 +15,3,95,1,5,330886,.0322129,7920.821,58.93224,0,12,1,12.99614,0,0,0,0,12.99614,0,0,0,1,0,2,91.5,0,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,79.5,8.977376,.6931472,2.564652,1 +15,3,95,1,1,330887,.0322129,7920.821,50.30253,1,12,1,12.65182,0,27.32794,0,0,39.97976,0,0,0,1,0,2,75,6.9,0,78.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,78.4,8.977376,.6931472,3.688373,1 +15,3,95,1,2,330887,.0322129,7920.821,51.30253,1,12,1,11.65501,0,0,0,0,11.65501,0,0,0,1,0,2,75,6.9,0,78.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,78.4,8.977376,.6931472,2.455736,1 +15,3,95,1,3,330887,.0322129,7920.821,52.30253,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,75,6.9,0,78.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,78.4,8.977376,.6931472,,0 +15,3,95,1,4,330887,.0322129,7920.821,53.30253,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,75,6.9,0,78.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,78.4,8.977376,.6931472,,0 +15,3,95,1,5,330887,.0322129,7920.821,54.30253,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,75,6.9,0,78.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,78.4,8.977376,.6931472,,0 +11,3,0,1,1,330888,0,3702.639,22.79808,1,13,1,77.45148,6.154239,22.98264,0,0,106.5884,0,0,0,2,0,1,77.1,13.8,0,72.7,0,440.4,0,0,0,6.087683,0,0,0,0,0,0,72.7,8.217072,0,4.668974,1 +11,3,0,1,2,330888,0,3702.639,23.79808,1,13,1,36.56821,2.006563,0,0,0,38.57478,0,0,0,2,0,1,77.1,13.8,0,72.7,0,440.4,0,0,0,6.087683,0,0,0,0,0,0,72.7,8.217072,0,3.652599,1 +11,3,0,1,3,330888,0,3702.639,24.79808,1,13,1,66.20808,26.1178,0,0,0,92.32588,0,0,0,9,0,1,77.1,13.8,0,72.7,0,440.4,0,0,0,6.087683,0,0,0,0,0,0,72.7,8.217072,0,4.525324,1 +11,3,0,1,1,330889,0,4480.352,18.16564,0,11,1,28.34008,2.246964,0,0,0,30.58704,0,0,0,3,0,5,97.3,3.4,0,53.4,0,0,0,0,1.609438,0,0,0,0,0,0,0,53.4,8.407681,1.609438,3.420577,1 +11,3,0,1,2,330889,0,4480.352,19.16564,0,11,1,15.38461,4.871795,0,0,0,20.25641,0,0,0,1,0,6,97.3,3.4,0,53.4,0,0,0,0,1.791759,0,0,0,0,0,0,0,53.4,8.407681,1.791759,3.008471,1 +11,3,0,1,3,330889,0,4480.352,20.16564,0,11,1,15.90423,0,0,0,0,15.90423,0,0,0,1,0,6,97.3,3.4,0,53.4,0,0,0,0,1.791759,0,0,0,0,0,0,0,53.4,8.407681,1.791759,2.766585,1 +11,3,0,1,1,330890,0,4480.352,29.36345,0,9,1,37.44939,12.60121,0,0,541.2045,591.2551,1,0,0,7,0,5,47.9,0,0,52.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,52.3,8.407681,1.609438,6.382247,1 +11,3,0,1,2,330890,0,4480.352,30.36345,0,9,1,22.37762,9.65035,0,0,0,32.02797,0,0,0,3,0,6,47.9,0,0,52.3,0,0,0,0,1.791759,0,0,0,0,0,0,0,52.3,8.407681,1.791759,3.46661,1 +11,3,0,1,3,330890,0,4480.352,31.36345,0,9,1,66.69517,12.29158,0,0,475.0235,554.0103,1,0,0,6,0,6,47.9,0,0,52.3,0,0,0,0,1.791759,0,0,0,0,0,0,0,52.3,8.407681,1.791759,6.317183,1 +15,3,95,1,1,330891,0,7494.428,45.45106,0,10,1,33.40081,4.453441,25.30364,0,0,63.15789,0,0,0,1,1,2,85.1,6.9,0,87.5,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,87.5,8.922049,.6931472,4.145638,1 +15,3,95,1,2,330891,0,7494.428,46.45106,0,10,1,49.41725,9.603729,0,0,0,59.02098,0,0,0,2,0,2,85.1,6.9,0,87.5,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,87.5,8.922049,.6931472,4.077893,1 +15,3,95,1,3,330891,0,7494.428,47.45106,0,10,1,48.31124,0,0,0,0,48.31124,0,0,0,2,0,2,85.1,6.9,0,87.5,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,87.5,8.922049,.6931472,3.877664,1 +11,3,0,0,2,330899,0,5465.103,.6960986,1,12,1,26.98864,5.776515,0,0,514.304,547.0692,1,0,0,4,0,5,83.39137,9.967326,.0268456,,0,278.4,1,1,1.609438,5.629059,0,0,0,0,0,0,79.22147,8.606321,1.609438,6.304575,1 +11,3,0,0,3,330899,0,5465.103,1.696099,1,12,1,8.669268,0,0,0,0,8.669268,0,0,0,1,0,5,83.39137,9.967326,.0268456,,0,278.4,1,1,1.609438,5.629059,0,0,0,0,0,0,79.22147,8.606321,1.609438,2.159784,1 +11,3,0,0,4,330899,0,5465.103,2.696099,1,12,1,27.17605,14.11973,0,0,0,41.29578,0,0,0,2,0,5,83.39137,9.967326,.0268456,,0,278.4,1,1,1.609438,5.629059,0,0,0,0,0,0,79.22147,8.606321,1.609438,3.72076,1 +11,3,0,0,5,330899,0,5465.103,3.696099,1,12,1,16.99463,0,0,0,0,16.99463,0,0,0,2,0,5,83.39137,9.967326,.0268456,,0,278.4,1,1,1.609438,5.629059,0,0,0,0,0,0,79.22147,8.606321,1.609438,2.832898,1 +10,3,50,0,2,330900,0,6108.082,.6933607,0,12,1,25.80029,1.863354,0,0,0,27.66364,0,0,0,5,0,4,83.39137,9.967326,.0268456,,1000,520,1,0,1.386294,6.253829,0,3.931826,7.600903,0,0,0,79.22147,8.717532,1.386294,3.320119,1 +10,3,50,0,3,330900,0,6108.082,1.693361,0,12,1,8.34065,0,0,0,0,8.34065,0,0,0,1,0,4,83.39137,9.967326,.0268456,,1000,520,1,0,1.386294,6.253829,0,3.931826,7.600903,0,0,0,79.22147,8.717532,1.386294,2.121141,1 +13,3,0,0,2,330920,0,5980.897,.3730322,1,12,1,100.4778,10.77401,0,0,0,111.2518,0,0,0,7,0,4,83.39137,9.967326,.0268456,,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,79.22147,8.696493,1.386294,4.711796,1 +13,3,0,0,3,330920,0,5980.897,1.373032,1,12,1,5.267779,3.446005,0,0,0,8.713784,0,0,0,1,0,4,83.39137,9.967326,.0268456,,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,79.22147,8.696493,1.386294,2.164906,1 +11,3,0,0,2,330925,0,3679.765,.37577,1,13,1,92.12377,23.95687,0,0,0,116.0806,0,0,0,13,0,6,83.39137,9.967326,.0268456,,0,1047.24,1,1,1.791759,6.953913,0,0,0,0,0,0,79.22147,8.210876,1.791759,4.754285,1 +11,3,0,0,3,330925,0,3679.765,1.37577,1,13,1,103.1814,24.76784,22.06793,0,0,150.0172,0,0,0,14,0,6,83.39137,9.967326,.0268456,,0,1047.24,1,1,1.791759,6.953913,0,0,0,0,0,0,79.22147,8.210876,1.791759,5.01075,1 +11,3,0,0,2,330934,0,4918.006,.156742,1,13,1,28.66698,0,0,0,0,28.66698,0,0,0,5,0,5,83.39137,9.967326,.0268456,,0,0,1,1,1.609438,0,0,0,0,0,0,0,79.22147,8.500862,1.609438,3.355746,1 +13,3,0,0,2,330936,0,5472.727,.4223135,0,7,1,11.18881,4.918415,0,0,0,16.10723,0,0,0,2,0,4,83.39137,9.967326,.0268456,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,79.22147,8.607715,1.386294,2.779268,1 +13,3,0,0,3,330936,0,5472.727,1.422313,0,7,1,13.25353,3.330483,0,0,0,16.58401,0,0,0,3,0,4,83.39137,9.967326,.0268456,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,79.22147,8.607715,1.386294,2.808439,1 +13,3,0,0,4,330936,0,5472.727,2.422313,0,7,1,12.68255,5.046118,0,0,0,17.72867,0,0,0,2,0,2,83.39137,9.967326,.0268456,,450,450,1,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,79.22147,8.607715,.6931472,2.875183,1 +13,3,0,0,5,330936,0,5472.727,3.422313,0,7,1,45.39867,2.058307,0,0,0,47.45697,0,0,0,4,0,2,83.39137,9.967326,.0268456,,450,450,1,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,79.22147,8.607715,.6931472,3.859823,1 +10,3,50,0,3,330944,0,6217.595,.9431896,0,12,1,4.389816,0,0,0,0,4.389816,0,0,0,1,0,4,83.39137,9.967326,.0268456,,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.22147,8.735299,1.386294,1.479287,1 +13,3,0,0,2,330956,0,8395.895,.0882957,0,12,1,41.72527,7.435537,.3703704,0,250.2813,299.8125,1,0,0,7,0,4,83.39137,9.967326,.0268456,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,79.22147,9.035617,1.386294,5.703157,1 +13,3,0,0,3,330956,0,8395.895,1.088296,0,12,1,29.23474,2.884781,0,0,463.5855,495.7051,1,0,0,6,0,4,83.39137,9.967326,.0268456,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,79.22147,9.035617,1.386294,6.205981,1 +19,3,25,0,2,330957,0,7995.308,.1047228,0,12,1,61.42191,2.797203,0,0,0,64.21912,0,0,0,9,0,2,83.39137,9.967326,.0268456,,390,390,1,0,.6931472,5.966147,0,3.258096,7.352441,0,0,0,79.22147,8.986735,.6931472,4.162301,1 +19,3,25,0,3,330957,0,7995.308,1.104723,0,12,1,51.73151,0,0,0,0,51.73151,0,0,0,5,0,2,83.39137,9.967326,.0268456,,390,390,1,0,.6931472,5.966147,0,3.258096,7.352441,0,0,0,79.22147,8.986735,.6931472,3.946067,1 +13,3,0,0,3,330960,0,7722.581,.9678302,0,14,1,13.0039,0,0,0,0,13.0039,0,0,0,1,0,4,83.39137,9.967326,.0268456,,450,807.6,1,0,1.386294,6.694067,1,4.564348,6.160541,0,0,0,79.22147,8.952033,1.386294,2.565249,1 +11,3,0,0,3,330963,0,9506.158,.9760438,0,14,1,24.70741,11.74686,0,0,0,36.45427,0,0,0,4,0,3,83.39137,9.967326,.0268456,,0,329.14,1,0,1.098612,5.796483,0,0,0,0,0,0,79.22147,9.159801,1.098612,3.596059,1 +11,3,0,0,4,330963,0,9506.158,1.976044,0,14,1,37.21938,2.315872,0,0,0,39.53525,0,0,0,5,0,3,83.39137,9.967326,.0268456,,0,329.14,1,0,1.098612,5.796483,0,0,0,0,0,0,79.22147,9.159801,1.098612,3.677193,1 +11,3,0,0,5,330963,0,9506.158,2.976044,0,14,1,36.85152,20.52952,0,0,119.8175,177.1986,1,0,0,6,0,3,83.39137,9.967326,.0268456,,0,329.14,1,0,1.098612,5.796483,0,0,0,0,0,0,79.22147,9.159801,1.098612,5.177271,1 +18,3,25,0,3,330965,0,6519.062,.9678302,0,7,1,90.80804,11.60752,0,0,0,102.4156,0,0,0,8,0,7,83.39137,9.967326,.0268456,,660,660,1,0,1.94591,6.49224,0,3.258096,7.878534,0,0,0,79.22147,8.78264,1.94591,4.629039,1 +18,3,25,0,4,330965,0,6519.062,1.96783,0,7,1,144.8117,7.033051,0,0,0,151.8447,0,0,0,5,3,8,83.39137,9.967326,.0268456,,660,660,1,0,2.079442,6.49224,0,3.258096,7.878534,0,0,0,79.22147,8.78264,2.079442,5.022859,1 +18,3,25,0,5,330965,0,6519.062,2.96783,0,7,1,72.35686,6.845803,0,0,0,79.20267,0,0,0,5,0,8,83.39137,9.967326,.0268456,,660,660,1,0,2.079442,6.49224,0,3.258096,7.878534,0,0,0,79.22147,8.78264,2.079442,4.37201,1 +11,3,0,0,3,330981,0,6411.144,.7378508,0,12,1,78.24592,12.01634,0,0,0,90.26225,0,0,0,7,0,4,83.39137,9.967326,.0268456,,0,261.48,1,0,1.386294,5.566358,0,0,0,0,0,0,79.22147,8.765949,1.386294,4.502719,1 +11,3,0,0,3,330988,0,2930.205,.6146475,0,10,1,172.6569,36.681,0,0,1144.639,1353.977,2,0,0,12,0,4,83.39137,9.967326,.0268456,,0,780.92,1,0,1.386294,6.660473,0,0,0,0,0,0,79.22147,7.983169,1.386294,7.210801,1 +11,3,0,0,3,330989,0,10994.72,.5927447,0,16,1,79.75726,15.40962,0,0,0,95.16689,0,0,0,8,0,3,83.39137,9.967326,.0268456,,0,125.58,1,0,1.098612,4.832943,0,0,0,0,0,0,79.22147,9.305262,1.098612,4.555632,1 +13,3,0,0,3,331005,0,10826.39,.4065709,0,9,1,22.7859,1.242476,0,0,0,24.02838,0,0,0,4,0,3,83.39137,9.967326,.0268456,,300,300,1,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,79.22147,9.289835,1.098612,3.179235,1 +16,3,95,0,3,331007,0,2777.713,.4722793,0,9,1,54.23258,1.923899,0,0,0,56.15648,0,0,0,6,0,4,83.39137,9.967326,.0268456,,915,915,1,0,1.386294,6.818924,0,4.564348,6.870217,0,0,0,79.22147,7.929743,1.386294,4.028142,1 +16,3,95,0,4,331007,0,2777.713,1.472279,0,9,1,366.1184,0,0,0,0,366.1184,0,0,0,7,0,4,83.39137,9.967326,.0268456,,915,915,1,0,1.386294,6.818924,0,4.564348,6.870217,0,0,0,79.22147,7.929743,1.386294,5.902956,1 +16,3,95,0,5,331007,0,2777.713,2.472279,0,9,1,115.3846,8.5634,0,0,0,123.948,0,0,0,12,0,5,83.39137,9.967326,.0268456,,915,915,1,0,1.609438,6.818924,0,4.564348,6.870217,0,0,0,79.22147,7.929743,1.609438,4.819862,1 +14,3,95,0,3,331010,1,10370.09,.4859685,0,13,1,93.92903,13.53142,0,0,286.7379,394.1984,1,0,0,9,0,6,83.39137,9.967326,.0268456,,750,750,1,0,1.791759,6.620073,0,4.564348,6.671367,0,0,0,79.22147,9.246778,1.791759,5.976854,1 +16,3,95,0,4,331039,0,7497.361,.9767283,1,14,1,16.14809,0,0,0,0,16.14809,0,0,0,3,0,5,83.39137,9.967326,.0268456,,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,79.22147,8.92244,1.609438,2.781802,1 +16,3,95,0,5,331039,0,7497.361,1.976728,1,14,1,30.41145,1.642218,0,0,0,32.05367,0,0,0,4,0,5,83.39137,9.967326,.0268456,,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,79.22147,8.92244,1.609438,3.467412,1 +17,3,25,0,3,331042,0,6176.54,.0999316,1,13,1,30.35485,1.795639,0,0,0,32.15049,0,0,0,5,0,5,83.39137,9.967326,.0268456,,560,560,1,1,1.609438,6.327937,0,3.258096,7.714231,0,0,0,79.22147,8.728675,1.609438,3.470428,1 +11,3,0,0,3,331044,0,12595.31,.0670773,0,14,1,94.23904,3.177128,0,0,0,97.41617,0,0,0,9,0,2,83.39137,9.967326,.0268456,,0,16.8,1,0,.6931472,2.821379,0,0,0,0,0,0,79.22147,9.441159,.6931472,4.578992,1 +16,3,95,0,4,331098,1,6370.674,.4592745,0,13,1,47.07917,0,0,0,0,47.07917,0,0,0,1,0,2,83.39137,9.967326,.0268456,,1000,900,1,0,.6931472,6.802395,0,4.564348,6.959049,0,0,0,79.22147,8.759618,.6931472,3.851831,1 +16,3,95,0,5,331098,1,6370.674,1.459274,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,83.39137,9.967326,.0268456,,1000,900,1,0,.6931472,6.802395,0,4.564348,6.959049,0,0,0,79.22147,8.759618,.6931472,,0 +18,3,25,0,4,331125,0,6519.062,.1800137,0,7,1,24.21214,10.08839,0,0,115.638,149.9385,1,0,0,3,0,8,83.39137,9.967326,.0268456,,660,660,1,0,2.079442,6.49224,0,3.258096,7.878534,0,0,0,79.22147,8.78264,2.079442,5.010225,1 +18,3,25,0,5,331125,0,6519.062,1.180014,0,7,1,94.4503,7.024939,0,0,0,101.4752,0,0,0,5,1,8,83.39137,9.967326,.0268456,,660,660,1,0,2.079442,6.49224,0,3.258096,7.878534,0,0,0,79.22147,8.78264,2.079442,4.619815,1 +11,3,0,0,5,331134,0,2570.088,.7748117,0,11.38739,1,54.03397,4.918613,0,0,0,58.95258,0,0,0,6,0,2,83.39137,9.967326,.0268456,,0,227.4,1,0,.6931472,5.426711,0,0,0,0,0,0,79.22147,7.852084,.6931472,4.076734,1 +11,3,0,0,5,331167,0,5739.003,.2135524,0,12,1,47.49819,13.01668,0,0,0,60.51487,0,0,0,7,0,4,83.39137,9.967326,.0268456,,0,156.36,1,0,1.386294,5.052161,0,0,0,0,0,0,79.22147,8.655215,1.386294,4.102889,1 +16,3,95,0,5,331278,0,2777.713,.1177276,0,9,1,107.6572,16.61749,0,0,0,124.2747,0,0,0,17,0,5,83.39137,9.967326,.0268456,,915,915,1,0,1.609438,6.818924,0,4.564348,6.870217,0,0,0,79.22147,7.929743,1.609438,4.822494,1 +15,4,95,0,1,425075,0,11089.74,18.04791,1,10,1,19.91828,0,0,0,0,19.91828,0,0,0,3,0,6,77.1,6.9,0,73.9,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,73.9,9.313866,1.791759,2.991638,1 +15,4,95,0,2,425075,0,11089.74,19.04791,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,77.1,6.9,0,73.9,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,73.9,9.313866,1.791759,,0 +15,4,95,0,3,425075,0,11089.74,20.04791,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,77.1,6.9,0,73.9,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,73.9,9.313866,1.791759,,0 +15,4,95,0,1,425209,0,7910.823,30.63107,0,8,1,56.38664,.1821862,0,0,0,56.56882,0,0,0,2,0,4,47.9,10.3,1,63.6,700,700,0,0,1.386294,6.55108,0,4.564348,6.602374,1,0,0,63.6,8.976113,1.386294,4.035458,1 +15,4,95,0,2,425209,0,7910.823,31.63107,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,47.9,10.3,1,63.6,700,700,0,0,1.386294,6.55108,0,4.564348,6.602374,1,0,0,63.6,8.976113,1.386294,,0 +15,4,95,0,3,425209,0,7910.823,32.63107,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,47.9,10.3,1,63.6,700,700,0,0,1.386294,6.55108,0,4.564348,6.602374,1,0,0,63.6,8.976113,1.386294,,0 +15,4,95,1,1,425210,0,7910.823,6.349076,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,96.7,9.967326,0,88.9,700,700,1,1,1.386294,6.55108,0,4.564348,6.602374,1,0,0,88.9,8.976113,1.386294,,0 +15,4,95,1,2,425210,0,7910.823,7.349076,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,96.7,9.967326,0,88.9,700,700,1,1,1.386294,6.55108,0,4.564348,6.602374,1,0,0,88.9,8.976113,1.386294,,0 +15,4,95,1,3,425210,0,7910.823,8.349076,1,9,1,6.412997,0,0,0,0,6.412997,0,0,0,1,0,4,96.7,9.967326,0,88.9,700,700,1,1,1.386294,6.55108,0,4.564348,6.602374,1,0,0,88.9,8.976113,1.386294,1.858327,1 +15,4,95,1,1,425211,0,7910.823,26.4449,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,65.4,0,0,80.7,700,700,0,0,1.386294,6.55108,0,4.564348,6.602374,1,0,0,80.7,8.976113,1.386294,,0 +15,4,95,1,2,425211,0,7910.823,27.4449,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,65.4,0,0,80.7,700,700,0,0,1.386294,6.55108,0,4.564348,6.602374,1,0,0,80.7,8.976113,1.386294,,0 +15,4,95,1,3,425211,0,7910.823,28.4449,1,9,1,188.7559,0,0,0,0,188.7559,0,0,0,8,0,4,65.4,0,0,80.7,700,700,0,0,1.386294,6.55108,0,4.564348,6.602374,1,0,0,80.7,8.976113,1.386294,5.240455,1 +15,4,95,1,1,425212,0,7910.823,5.349761,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,9.967326,0,88.9,700,700,1,0,1.386294,6.55108,0,4.564348,6.602374,1,0,0,88.9,8.976113,1.386294,,0 +15,4,95,1,2,425212,0,7910.823,6.349761,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,9.967326,0,88.9,700,700,1,0,1.386294,6.55108,0,4.564348,6.602374,1,0,0,88.9,8.976113,1.386294,,0 +15,4,95,1,3,425212,0,7910.823,7.349761,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,9.967326,0,88.9,700,700,1,0,1.386294,6.55108,0,4.564348,6.602374,1,0,0,88.9,8.976113,1.386294,,0 +18,4,25,0,1,425220,0,5625.807,27.96715,1,12,1,31.1236,4.698672,0,0,0,35.82227,0,0,0,2,0,4,88.8,6.9,0,86.4,750,725,0,0,1.386294,6.586172,0,3.258096,8.006368,0,0,0,86.4,8.635298,1.386294,3.57857,1 +18,4,25,0,2,425220,0,5625.807,28.96715,1,12,1,49.92968,1.851852,28.59822,0,0,80.37975,0,0,0,3,0,4,88.8,6.9,0,86.4,750,725,0,0,1.386294,6.586172,0,3.258096,8.006368,0,0,0,86.4,8.635298,1.386294,4.386762,1 +18,4,25,0,3,425220,0,5625.807,29.96715,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.8,6.9,0,86.4,750,725,0,0,1.386294,6.586172,0,3.258096,8.006368,0,0,0,86.4,8.635298,1.386294,,0 +18,4,25,0,1,425221,0,5625.807,6.360027,1,12,1,54.39224,15.35751,0,0,0,69.74975,0,0,0,4,0,4,76.7,9.967326,0,96.3,750,725,1,1,1.386294,6.586172,0,3.258096,8.006368,0,0,0,96.3,8.635298,1.386294,4.244914,1 +18,4,25,0,2,425221,0,5625.807,7.360027,1,12,1,37.03704,9.329583,0,0,0,46.36662,0,0,0,6,0,4,76.7,9.967326,0,96.3,750,725,1,1,1.386294,6.586172,0,3.258096,8.006368,0,0,0,96.3,8.635298,1.386294,3.83658,1 +18,4,25,0,3,425221,0,5625.807,8.360027,1,12,1,24.07567,7.308684,0,0,0,31.38435,0,0,0,3,0,4,76.7,9.967326,0,96.3,750,725,1,1,1.386294,6.586172,0,3.258096,8.006368,0,0,0,96.3,8.635298,1.386294,3.446309,1 +18,4,25,0,1,425222,0,5625.807,3.96167,0,12,1,13.78958,3.447395,0,0,0,17.23698,0,0,0,2,0,4,83.39137,9.967326,0,96.3,750,725,1,0,1.386294,6.586172,0,3.258096,8.006368,1,0,0,96.3,8.635298,1.386294,2.847057,1 +18,4,25,0,2,425222,0,5625.807,4.96167,0,12,1,5.625879,11.46273,0,0,0,17.08861,0,0,0,1,0,4,83.39137,9.967326,0,96.3,750,725,1,0,1.386294,6.586172,0,3.258096,8.006368,1,0,0,96.3,8.635298,1.386294,2.838412,1 +18,4,25,0,3,425222,0,5625.807,5.96167,0,12,1,18.48667,4.256234,0,0,0,22.74291,0,0,0,3,0,4,83.39137,9.967326,0,96.3,750,725,1,0,1.386294,6.586172,0,3.258096,8.006368,1,0,0,96.3,8.635298,1.386294,3.124253,1 +18,4,25,0,1,425223,0,5625.807,29.04038,0,12,1,0,1.787538,0,0,0,1.787538,0,0,0,0,0,4,77.7,13.8,0,76.1,750,725,0,0,1.386294,6.586172,0,3.258096,8.006368,0,0,0,76.1,8.635298,1.386294,.5808394,1 +18,4,25,0,2,425223,0,5625.807,30.04038,0,12,1,57.19644,15.80872,0,0,0,73.00516,0,0,0,2,0,4,77.7,13.8,0,76.1,750,725,0,0,1.386294,6.586172,0,3.258096,8.006368,0,0,0,76.1,8.635298,1.386294,4.29053,1 +18,4,25,0,3,425223,0,5625.807,31.04038,0,12,1,1.977644,7.678418,0,0,0,9.656062,0,0,0,0,0,4,77.7,13.8,0,76.1,750,725,0,0,1.386294,6.586172,0,3.258096,8.006368,0,0,0,76.1,8.635298,1.386294,2.267586,1 +11,4,0,1,1,425267,0,4166.569,4.295688,0,16,1,35.54869,4.121587,0,0,0,39.67027,0,0,0,4,0,4,83.39137,9.967326,0,96.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,96.3,8.335088,1.386294,3.680602,1 +11,4,0,1,2,425267,0,4166.569,5.295688,0,16,1,42.61364,1.216856,0,28.40909,0,43.83049,0,0,2,0,0,4,83.39137,9.967326,0,96.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,96.3,8.335088,1.386294,3.78033,1 +11,4,0,1,3,425267,0,4166.569,6.295688,0,16,1,10.83658,0,0,0,0,10.83658,0,0,0,0,1,4,83.39137,9.967326,0,96.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,96.3,8.335088,1.386294,2.382928,1 +11,4,0,1,1,425268,0,4166.569,29.12526,1,16,1,46.36785,12.36476,27.56311,0,0,86.29572,0,0,0,4,0,4,76.1,13.8,0,86.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,86.4,8.335088,1.386294,4.45778,1 +11,4,0,1,2,425268,0,4166.569,30.12526,1,16,1,2.367424,5.776515,0,0,0,8.143939,0,0,0,0,0,4,76.1,13.8,0,86.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,86.4,8.335088,1.386294,2.097274,1 +11,4,0,1,3,425268,0,4166.569,31.12526,1,16,1,17.33854,5.205895,29.04205,0,0,51.58648,0,0,0,1,0,4,76.1,13.8,0,86.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,86.4,8.335088,1.386294,3.943259,1 +11,4,0,1,1,425269,0,4166.569,30.80356,0,15,1,9.27357,5.151984,0,0,0,14.42555,0,0,0,1,0,4,70.7,10.3,0,69.3,0,0,0,0,1.386294,0,0,0,0,1,0,0,69.3,8.335088,1.386294,2.669001,1 +11,4,0,1,2,425269,0,4166.569,31.80356,0,15,1,41.19318,2.462121,0,0,0,43.6553,0,0,0,2,0,4,70.7,10.3,0,69.3,0,0,0,0,1.386294,0,0,0,0,1,0,0,69.3,8.335088,1.386294,3.776325,1 +11,4,0,1,3,425269,0,4166.569,32.80356,0,15,1,50.06502,0,0,0,0,50.06502,0,0,0,1,1,4,70.7,10.3,0,69.3,0,0,0,0,1.386294,0,0,0,0,1,0,0,69.3,8.335088,1.386294,3.913322,1 +11,4,0,1,1,425270,0,4166.569,5.475702,1,16,1,21.12313,12.44204,0,0,0,33.56517,0,0,0,2,0,4,91.7,9.967326,0,85.2,0,0,1,1,1.386294,0,0,0,0,0,0,0,85.2,8.335088,1.386294,3.513489,1 +11,4,0,1,2,425270,0,4166.569,6.475702,1,16,1,5.681818,17.65152,0,0,0,23.33333,0,0,0,1,0,4,91.7,9.967326,0,85.2,0,0,1,1,1.386294,0,0,0,0,0,0,0,85.2,8.335088,1.386294,3.149883,1 +11,4,0,1,3,425270,0,4166.569,7.475702,1,16,1,35.37061,31.36107,0,0,328.0017,394.7334,1,0,0,4,0,4,91.7,9.967326,0,85.2,0,0,1,1,1.386294,0,0,0,0,0,0,0,85.2,8.335088,1.386294,5.97821,1 +13,4,0,0,1,425275,0,2355.425,26.51882,0,12,1,68.12273,4.420177,11.56006,0,0,84.10297,0,0,0,3,0,1,85.1,6.9,0,59.1,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,59.1,7.764901,0,4.432042,1 +13,4,0,0,2,425275,0,2355.425,27.51882,0,12,1,294.6393,12.63736,0,0,0,307.2766,0,0,0,2,0,1,85.1,6.9,0,59.1,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,59.1,7.764901,0,5.727748,1 +13,4,0,0,3,425275,0,2355.425,28.51882,0,12,1,42.25198,0,0,0,0,42.25198,0,0,0,1,0,1,85.1,6.9,0,59.1,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,59.1,7.764901,0,3.743651,1 +11,4,0,1,1,425400,0,7910.823,61.08145,1,12,1,19.23077,0,0,0,0,19.23077,0,0,0,1,0,1,78.2,10.3,0,79.5,0,221.4,0,0,0,5.399971,0,0,0,1,0,0,79.5,8.976113,0,2.956511,1 +11,4,0,1,2,425400,0,7910.823,62.08145,1,12,1,38.11189,6.993007,0,0,0,45.1049,0,0,0,1,0,1,78.2,10.3,0,79.5,0,221.4,0,0,0,5.399971,0,0,0,1,0,0,79.5,8.976113,0,3.808991,1 +11,4,0,1,3,425400,0,7910.823,63.08145,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,78.2,10.3,0,79.5,0,221.4,0,0,0,5.399971,0,0,0,1,0,0,79.5,8.976113,0,,0 +11,4,0,1,1,425401,0,2620.528,29.25393,1,12,1,305.9248,6.3627,4.095827,0,0,316.3833,0,0,0,5,26,4,83,10.3,1,53.4,0,0,0,0,1.386294,0,0,0,0,1,0,0,53.4,7.871512,1.386294,5.756955,1 +11,4,0,1,2,425401,0,2620.528,30.25393,1,12,1,239.4129,3.148674,4.734848,0,0,247.2964,0,0,0,3,12,4,83,10.3,1,53.4,0,0,0,0,1.386294,0,0,0,0,1,0,0,53.4,7.871512,1.386294,5.510588,1 +11,4,0,1,3,425401,0,2620.528,31.25393,1,12,1,194.7768,1.690507,0,0,0,196.4673,0,0,0,2,12,4,83,10.3,1,53.4,0,0,0,0,1.386294,0,0,0,0,1,0,0,53.4,7.871512,1.386294,5.280496,1 +11,4,0,1,1,425402,0,2620.528,29.20192,0,12,1,61.8238,0,0,0,0,61.8238,0,0,0,1,3,4,73.4,0,1,65.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,65.9,7.871512,1.386294,4.124289,1 +11,4,0,1,2,425402,0,2620.528,30.20192,0,12,1,13.25758,0,0,0,0,13.25758,0,0,0,1,0,4,73.4,0,1,65.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,65.9,7.871512,1.386294,2.584569,1 +11,4,0,1,3,425402,0,2620.528,31.20192,0,12,1,16.03815,0,0,0,0,16.03815,0,0,0,1,2,4,73.4,0,1,65.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,65.9,7.871512,1.386294,2.77497,1 +11,4,0,1,1,425403,0,2620.528,5.820671,0,12,1,36.06388,19.00567,0,0,0,55.06955,0,0,0,7,0,4,81.7,9.967326,0,51.9,0,0,1,0,1.386294,0,0,0,0,0,1,0,51.9,7.871512,1.386294,4.008597,1 +11,4,0,1,2,425403,0,2620.528,6.820671,0,12,1,28.88258,4.52178,0,0,0,33.40436,0,0,0,3,1,4,81.7,9.967326,0,51.9,0,0,1,0,1.386294,0,0,0,0,0,1,0,51.9,7.871512,1.386294,3.508686,1 +11,4,0,1,3,425403,0,2620.528,7.820671,0,12,1,164.5904,20.5505,5.20156,0,0,190.3424,0,0,0,8,2,4,81.7,9.967326,0,51.9,0,0,1,0,1.386294,0,0,0,0,0,1,0,51.9,7.871512,1.386294,5.248825,1 +11,4,0,1,1,425404,0,2620.528,2.595483,0,12,1,47.39825,20.39155,0,0,0,67.7898,0,0,0,8,0,4,83.39137,9.967326,0,63,0,0,1,0,1.386294,0,0,0,0,1,0,0,63,7.871512,1.386294,4.216412,1 +11,4,0,1,2,425404,0,2620.528,3.595483,0,12,1,24.62121,11.10322,0,0,0,35.72443,0,0,0,4,0,4,83.39137,9.967326,0,63,0,0,1,0,1.386294,0,0,0,0,1,0,0,63,7.871512,1.386294,3.575835,1 +11,4,0,1,3,425404,0,2620.528,4.595482,0,12,1,39.35414,3.879497,0,0,0,43.23363,0,0,0,4,1,4,83.39137,9.967326,0,63,0,0,1,0,1.386294,0,0,0,0,1,0,0,63,7.871512,1.386294,3.766619,1 +11,4,0,1,1,425405,0,4686.804,6.234086,1,16,1,12.87996,8.475013,0,0,0,21.35497,0,0,0,2,0,2,83.3,9.967326,0,96.3,0,0,1,1,.6931472,0,0,0,0,0,0,0,96.3,8.45272,.6931472,3.061285,1 +11,4,0,1,2,425405,0,4686.804,7.234086,1,16,1,24.85795,9.114583,0,0,0,33.97254,0,0,0,2,0,2,83.3,9.967326,0,96.3,0,0,1,1,.6931472,0,0,0,0,0,0,0,96.3,8.45272,.6931472,3.525553,1 +11,4,0,1,3,425405,0,4686.804,8.234086,1,16,1,9.536194,4.61205,0,0,0,14.14824,0,0,0,2,0,2,83.3,9.967326,0,96.3,0,0,1,1,.6931472,0,0,0,0,0,0,0,96.3,8.45272,.6931472,2.64959,1 +11,4,0,1,4,425405,0,4686.804,9.234086,1,16,1,18.90508,1.949587,0,0,0,20.85467,0,0,0,2,0,2,83.3,9.967326,0,96.3,0,0,1,1,.6931472,0,0,0,0,0,0,0,96.3,8.45272,.6931472,3.037578,1 +11,4,0,1,5,425405,0,4686.804,10.23409,1,16,1,26.11807,0,0,0,0,26.11807,0,0,0,3,0,2,83.3,9.967326,0,96.3,0,0,1,1,.6931472,0,0,0,0,0,0,0,96.3,8.45272,.6931472,3.262627,1 +11,4,0,1,1,425406,0,4686.804,33.93566,1,16,1,18.03194,1.803194,0,0,0,19.83514,0,0,0,1,0,2,62.2,17.2,0,89.8,0,0,0,0,.6931472,0,0,0,0,0,0,0,89.8,8.45272,.6931472,2.987455,1 +11,4,0,1,2,425406,0,4686.804,34.93566,1,16,1,7.102273,2.575758,0,0,0,9.67803,0,0,0,1,0,2,62.2,17.2,0,89.8,0,0,0,0,.6931472,0,0,0,0,0,0,0,89.8,8.45272,.6931472,2.269858,1 +11,4,0,1,3,425406,0,4686.804,35.93566,1,16,1,81.72952,0,28.17512,0,0,109.9046,0,0,0,2,1,2,62.2,17.2,0,89.8,0,0,0,0,.6931472,0,0,0,0,0,0,0,89.8,8.45272,.6931472,4.699613,1 +11,4,0,1,4,425406,0,4686.804,36.93566,1,16,1,141.2564,0,0,0,0,141.2564,0,0,0,8,0,2,62.2,17.2,0,89.8,0,0,0,0,.6931472,0,0,0,0,0,0,0,89.8,8.45272,.6931472,4.950577,1 +11,4,0,1,5,425406,0,4686.804,37.93566,1,16,1,49.0161,0,0,0,0,49.0161,0,0,0,4,0,2,62.2,17.2,0,89.8,0,0,0,0,.6931472,0,0,0,0,0,0,0,89.8,8.45272,.6931472,3.892149,1 +13,4,0,0,1,425412,0,5167.155,29.4319,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,85.6,10.3,0,63.6,450,505.92,0,0,1.098612,6.226378,1,4.564348,6.160541,0,0,0,63.6,8.550271,1.098612,,0 +13,4,0,0,2,425412,0,5167.155,30.4319,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,85.6,10.3,0,63.6,450,505.92,0,0,1.098612,6.226378,1,4.564348,6.160541,0,0,0,63.6,8.550271,1.098612,,0 +13,4,0,0,3,425412,0,5167.155,31.4319,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,85.6,10.3,0,63.6,450,505.92,0,0,1.098612,6.226378,1,4.564348,6.160541,0,0,0,63.6,8.550271,1.098612,,0 +13,4,0,0,1,425413,0,5167.155,25.09514,1,12,1,72.00928,6.594539,0,0,391.6744,470.2782,1,0,0,4,0,3,83.5,6.9,0,67,450,505.92,0,0,1.098612,6.226378,1,4.564348,6.160541,1,0,0,67,8.550271,1.098612,6.153325,1 +13,4,0,0,2,425413,0,5167.155,26.09514,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.5,6.9,0,67,450,505.92,0,0,1.098612,6.226378,1,4.564348,6.160541,1,0,0,67,8.550271,1.098612,,0 +13,4,0,0,3,425413,0,5167.155,27.09514,1,12,1,33.59341,0,0,0,729.987,763.5804,1,0,0,0,0,3,83.5,6.9,0,67,450,505.92,0,0,1.098612,6.226378,1,4.564348,6.160541,1,0,0,67,8.550271,1.098612,6.638019,1 +13,4,0,0,1,425414,0,5167.155,4.246407,1,12,1,8.243174,0,0,0,0,8.243174,0,0,0,1,0,3,83.39137,9.967326,0,81.5,450,505.92,1,1,1.098612,6.226378,1,4.564348,6.160541,0,0,0,81.5,8.550271,1.098612,2.109385,1 +13,4,0,0,2,425414,0,5167.155,5.246407,1,12,1,5.681818,2.471591,0,0,0,8.153409,0,0,0,1,0,3,83.39137,9.967326,0,81.5,450,505.92,1,1,1.098612,6.226378,1,4.564348,6.160541,0,0,0,81.5,8.550271,1.098612,2.098436,1 +13,4,0,0,3,425414,0,5167.155,6.246407,1,12,1,6.328565,0,0,0,0,6.328565,0,0,0,1,0,3,83.39137,9.967326,0,81.5,450,505.92,1,1,1.098612,6.226378,1,4.564348,6.160541,0,0,0,81.5,8.550271,1.098612,1.845074,1 +11,4,0,1,1,425490,0,7910.823,59.24983,0,10,1,78.56775,2.575992,34.00309,0,0,115.1468,0,0,0,5,1,1,92,6.9,0,77.3,0,0,0,0,0,0,0,0,0,1,0,0,77.3,8.976113,0,4.746208,1 +11,4,0,1,2,425490,0,7910.823,60.24983,0,10,1,0,0,0,0,0,0,0,0,0,0,0,1,92,6.9,0,77.3,0,0,0,0,0,0,0,0,0,1,0,0,77.3,8.976113,0,,0 +11,4,0,1,3,425490,0,7910.823,61.24983,0,10,1,0,0,0,0,0,0,0,0,0,0,0,1,92,6.9,0,77.3,0,0,0,0,0,0,0,0,0,1,0,0,77.3,8.976113,0,,0 +11,4,0,0,1,425491,0,1271.554,1.478439,1,9,1,0,1.998988,0,0,0,1.998988,0,0,0,0,0,3,83.39137,9.967326,0,70.4,0,0,1,1,1.098612,0,0,0,0,1,0,0,70.4,7.148781,1.098612,.692641,1 +11,4,0,0,2,425491,0,1271.554,2.478439,1,9,1,14.91842,1.981352,0,0,0,16.89977,0,0,0,3,0,3,83.39137,9.967326,0,70.4,0,0,1,1,1.098612,0,0,0,0,1,0,0,70.4,7.148781,1.098612,2.8273,1 +11,4,0,0,3,425491,0,1271.554,3.478439,1,9,1,2.565199,0,0,0,0,2.565199,0,0,0,1,0,4,83.39137,9.967326,0,70.4,0,0,1,1,1.386294,0,0,0,0,1,0,0,70.4,7.148781,1.386294,.942036,1 +11,4,0,0,1,425492,0,1271.554,16.63518,1,9,1,49.0587,1.492915,0,0,0,50.55162,0,0,0,2,0,3,61.7,3.4,0,71.6,0,0,1,1,1.098612,0,0,0,0,1,0,0,71.6,7.148781,1.098612,3.922995,1 +11,4,0,0,2,425492,0,1271.554,17.63518,1,9,1,30.53613,11.6317,0,0,641.6317,683.7996,1,0,0,0,0,3,61.7,3.4,0,71.6,0,0,1,1,1.098612,0,0,0,0,1,0,0,71.6,7.148781,1.098612,6.527665,1 +11,4,0,0,3,425492,0,1271.554,18.63518,1,9,1,69.0466,24.62591,25.65199,0,0,119.3245,0,0,0,5,1,4,61.7,3.4,0,71.6,0,0,0,0,1.386294,0,0,0,0,1,0,0,71.6,7.148781,1.386294,4.781847,1 +11,4,0,0,1,425493,0,1271.554,21.83984,0,8,1,31.09818,0,0,0,523.1528,554.251,1,0,0,1,0,3,83.5,3.4,0,79.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,79.8,7.148781,1.098612,6.317618,1 +11,4,0,0,2,425493,0,1271.554,22.83984,0,8,1,105.8555,0,1.165501,0,0,107.021,0,0,0,4,0,3,83.5,3.4,0,79.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,79.8,7.148781,1.098612,4.673025,1 +11,4,0,0,3,425493,0,1271.554,23.83984,0,8,1,38.47798,8.529286,0,0,1347.862,1394.87,1,0,0,3,0,4,83.5,3.4,0,79.8,0,0,0,0,1.386294,0,0,0,0,1,0,0,79.8,7.148781,1.386294,7.240556,1 +11,4,0,1,1,425513,0,1906.158,34.45311,0,12,1,95.52126,19.76215,21.25506,0,422.7834,559.3218,1,0,0,5,0,6,77.7,3.4,1,42,0,291.84,0,0,1.791759,5.676206,0,0,0,1,0,0,42,7.55337,1.791759,6.326725,1 +11,4,0,1,2,425513,0,1906.158,35.45311,0,12,1,2.331002,34.75525,25.17483,0,0,62.26107,0,0,0,1,0,6,77.7,3.4,1,42,0,291.84,0,0,1.791759,5.676206,0,0,0,1,0,0,42,7.55337,1.791759,4.131336,1 +11,4,0,1,3,425513,0,1906.158,36.45311,0,12,1,6.412997,50.83369,0,0,843.3732,900.6199,1,0,0,1,0,6,77.7,3.4,1,42,0,291.84,0,0,1.791759,5.676206,0,0,0,1,0,0,42,7.55337,1.791759,6.803083,1 +11,4,0,1,4,425513,0,1906.158,37.45311,0,12,1,46.31053,44.58109,22.29055,12.80553,0,113.1822,0,0,4,4,0,6,77.7,3.4,1,42,0,291.84,0,0,1.791759,5.676206,0,0,0,1,0,0,42,7.55337,1.791759,4.728999,1 +11,4,0,1,5,425513,0,1906.158,38.45311,0,12,1,29.1535,45.76748,0,0,0,74.92097,0,0,0,2,0,6,77.7,3.4,1,42,0,291.84,0,0,1.791759,5.676206,0,0,0,1,0,0,42,7.55337,1.791759,4.316434,1 +11,4,0,1,1,425514,0,1906.158,9.916495,0,12,1,13.48178,1.912956,0,0,0,15.39474,0,0,0,1,0,6,80,9.967326,1,74.1,0,291.84,1,0,1.791759,5.676206,0,0,0,0,1,0,74.1,7.55337,1.791759,2.734026,1 +11,4,0,1,2,425514,0,1906.158,10.9165,0,12,1,115.3846,7.762238,23.31002,0,0,146.4569,0,0,0,2,0,6,80,9.967326,1,74.1,0,291.84,1,0,1.791759,5.676206,0,0,0,0,1,0,74.1,7.55337,1.791759,4.986731,1 +11,4,0,1,3,425514,0,1906.158,11.9165,0,12,1,8.550663,2.565199,10.2608,0,0,21.37666,0,0,0,1,0,6,80,9.967326,1,74.1,0,291.84,1,0,1.791759,5.676206,0,0,0,0,1,0,74.1,7.55337,1.791759,3.062299,1 +11,4,0,1,4,425514,0,1906.158,12.9165,0,12,1,221.6372,8.18601,0,12.80553,0,229.8232,0,0,4,8,0,6,80,9.967326,1,74.1,0,291.84,1,0,1.791759,5.676206,0,0,0,0,1,0,74.1,7.55337,1.791759,5.43731,1 +11,4,0,1,5,425514,0,1906.158,13.9165,0,12,1,38.63716,9.167544,0,0,0,47.80471,0,0,0,5,0,6,80,9.967326,1,74.1,0,291.84,1,0,1.791759,5.676206,0,0,0,0,1,0,74.1,7.55337,1.791759,3.867124,1 +11,4,0,1,1,425515,0,1906.158,5.445585,1,12,1,51.05263,17.90992,0,0,248.2794,317.2419,1,0,0,7,0,6,76.7,9.967326,0,25.9,0,291.84,1,1,1.791759,5.676206,0,0,0,0,1,0,25.9,7.55337,1.791759,5.759665,1 +11,4,0,1,2,425515,0,1906.158,6.445585,1,12,1,101.6317,17.9021,0,0,0,119.5338,0,0,0,5,0,6,76.7,9.967326,0,25.9,0,291.84,1,1,1.791759,5.676206,0,0,0,0,1,0,25.9,7.55337,1.791759,4.783599,1 +11,4,0,1,3,425515,0,1906.158,7.445585,1,12,1,0,2.052159,0,0,0,2.052159,0,0,0,0,0,6,76.7,9.967326,0,25.9,0,291.84,1,1,1.791759,5.676206,0,0,0,0,1,0,25.9,7.55337,1.791759,.7188925,1 +11,4,0,1,4,425515,0,1906.158,8.445585,1,12,1,0,5.169101,0,12.80553,0,5.169101,0,0,4,0,0,6,76.7,9.967326,0,25.9,0,291.84,1,1,1.791759,5.676206,0,0,0,0,1,0,25.9,7.55337,1.791759,1.642699,1 +11,4,0,1,5,425515,0,1906.158,9.445585,1,12,1,7.024939,1.791359,0,0,0,8.816298,0,0,0,1,0,6,76.7,9.967326,0,25.9,0,291.84,1,1,1.791759,5.676206,0,0,0,0,1,0,25.9,7.55337,1.791759,2.176602,1 +11,4,0,1,1,425516,0,1906.158,11.36756,1,12,1,35.68826,0,0,0,0,35.68826,0,0,0,2,0,6,58.3,9.967326,0,81.5,0,291.84,1,1,1.791759,5.676206,0,0,0,1,0,0,81.5,7.55337,1.791759,3.574822,1 +11,4,0,1,2,425516,0,1906.158,12.36756,1,12,1,37.29604,1.631702,22.37762,0,0,61.30536,0,0,0,2,0,6,58.3,9.967326,0,81.5,0,291.84,1,1,1.791759,5.676206,0,0,0,1,0,0,81.5,7.55337,1.791759,4.115867,1 +11,4,0,1,3,425516,0,1906.158,13.36756,1,12,1,20.62847,2.351432,0,0,0,22.97991,0,0,0,2,0,6,58.3,9.967326,0,81.5,0,291.84,1,1,1.791759,5.676206,0,0,0,1,0,0,81.5,7.55337,1.791759,3.13462,1 +11,4,0,1,4,425516,0,1906.158,14.36756,1,12,1,58.4166,13.87394,24.59646,12.80553,0,96.88701,0,0,4,5,2,6,58.3,9.967326,0,81.5,0,291.84,1,1,1.791759,5.676206,0,0,0,1,0,0,81.5,7.55337,1.791759,4.573545,1 +11,4,0,1,5,425516,0,1906.158,15.36756,1,12,1,107.2533,10.39691,0,0,0,117.6502,0,0,0,7,0,6,58.3,9.967326,0,81.5,0,291.84,1,1,1.791759,5.676206,0,0,0,1,0,0,81.5,7.55337,1.791759,4.767715,1 +11,4,0,1,1,425517,0,1906.158,31.61123,1,12,1,222.166,14.13968,5.313765,0,636.6093,878.2288,2,0,0,11,0,6,70.2,17.2,0,76.1,0,291.84,0,0,1.791759,5.676206,0,0,0,1,0,0,76.1,7.55337,1.791759,6.777907,1 +11,4,0,1,2,425517,0,1906.158,32.61123,1,12,1,52.21445,9.813519,6.993007,0,0,69.02098,0,0,0,4,0,6,70.2,17.2,0,76.1,0,291.84,0,0,1.791759,5.676206,0,0,0,1,0,0,76.1,7.55337,1.791759,4.234411,1 +11,4,0,1,3,425517,0,1906.158,33.61123,1,12,1,140.8294,65.34844,0,0,531.6204,737.7982,1,0,0,11,0,6,70.2,17.2,0,76.1,0,291.84,0,0,1.791759,5.676206,0,0,0,1,0,0,76.1,7.55337,1.791759,6.603671,1 +11,4,0,1,4,425517,0,1906.158,34.61123,1,12,1,162.8939,34.28132,21.13759,12.82091,0,218.3128,0,0,4,9,3,6,70.2,17.2,0,76.1,0,291.84,0,0,1.791759,5.676206,0,0,0,1,0,0,76.1,7.55337,1.791759,5.385929,1 +11,4,0,1,5,425517,0,1906.158,35.61123,1,12,1,136.0204,42.04426,0,0,0,178.0646,0,0,0,8,0,6,70.2,17.2,0,76.1,0,291.84,0,0,1.791759,5.676206,0,0,0,1,0,0,76.1,7.55337,1.791759,5.182147,1 +11,4,0,1,1,425518,0,1906.158,6.61191,0,12,1,78.82085,1.518219,22.26721,0,0,102.6063,0,0,0,6,0,6,58.3,9.967326,0,77.8,0,291.84,1,0,1.791759,5.676206,0,0,0,0,1,0,77.8,7.55337,1.791759,4.630899,1 +11,4,0,1,2,425518,0,1906.158,7.61191,0,12,1,115.9674,1.678322,0,0,0,117.6457,0,0,0,9,0,6,58.3,9.967326,0,77.8,0,291.84,1,0,1.791759,5.676206,0,0,0,0,1,0,77.8,7.55337,1.791759,4.767677,1 +11,4,0,1,3,425518,0,1906.158,8.61191,0,12,1,81.12441,7.887986,0,0,0,89.0124,0,0,0,6,0,6,58.3,9.967326,0,77.8,0,291.84,1,0,1.791759,5.676206,0,0,0,0,1,0,77.8,7.55337,1.791759,4.488776,1 +11,4,0,1,4,425518,0,1906.158,9.61191,0,12,1,132.206,10.97233,0,12.82091,0,143.1783,0,0,4,10,0,6,58.3,9.967326,0,77.8,0,291.84,1,0,1.791759,5.676206,0,0,0,0,1,0,77.8,7.55337,1.791759,4.964091,1 +11,4,0,1,5,425518,0,1906.158,10.61191,0,12,1,134.1658,4.56621,0,0,0,138.732,0,0,0,5,0,6,58.3,9.967326,0,77.8,0,291.84,1,0,1.791759,5.676206,0,0,0,0,1,0,77.8,7.55337,1.791759,4.932544,1 +13,4,0,1,1,425519,0,5113.783,45.93566,1,12,1,20.42901,0,0,0,0,20.42901,0,0,0,2,0,1,81.4,6.9,0,95.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,95.5,8.53989,0,3.016956,1 +13,4,0,1,2,425519,0,5113.783,46.93566,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,81.4,6.9,0,95.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,95.5,8.53989,0,,0 +13,4,0,1,3,425519,0,5113.783,47.93566,1,12,1,112.5322,0,0,0,0,112.5322,0,0,0,0,0,1,81.4,6.9,0,95.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,95.5,8.53989,0,4.72324,1 +13,4,0,1,1,425557,0,7910.823,52.25188,1,12,1,17.71255,0,48.07692,0,0,65.78947,0,0,0,2,0,1,87.2,6.9,0,87.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,87.5,8.976113,0,4.18646,1 +13,4,0,1,2,425557,0,7910.823,53.25188,1,12,1,5.594406,0,0,0,0,5.594406,0,0,0,1,0,1,87.2,6.9,0,87.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,87.5,8.976113,0,1.721767,1 +13,4,0,1,3,425557,0,7910.823,54.25188,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,87.2,6.9,0,87.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,87.5,8.976113,0,,0 +13,4,0,1,1,425585,0,6996.481,41.36071,0,19,1,40.56162,6.24025,0,0,0,46.80187,0,0,0,3,0,3,83,3.4,0,84.1,450,447.84,0,0,1.098612,6.104436,1,4.564348,6.160541,0,0,0,84.1,8.853306,1.098612,3.845923,1 +13,4,0,1,2,425585,0,6996.481,42.36071,0,19,1,0,0,0,0,0,0,0,0,0,0,0,3,83,3.4,0,84.1,450,447.84,0,0,1.098612,6.104436,1,4.564348,6.160541,0,0,0,84.1,8.853306,1.098612,,0 +13,4,0,1,3,425585,0,6996.481,43.36071,0,19,1,8.779632,0,0,0,0,8.779632,0,0,0,1,0,3,83,3.4,0,84.1,450,447.84,0,0,1.098612,6.104436,1,4.564348,6.160541,0,0,0,84.1,8.853306,1.098612,2.172435,1 +13,4,0,1,1,425586,0,6996.481,34.65298,1,19,1,101.7733,7.618305,0,0,0,109.3916,0,0,0,5,0,3,89.4,24.1,0,40.9,450,447.84,0,0,1.098612,6.104436,1,4.564348,6.160541,1,0,0,40.9,8.853306,1.098612,4.694934,1 +13,4,0,1,2,425586,0,6996.481,35.65298,1,19,1,40.61156,23.88438,0,0,0,64.49594,0,0,0,3,0,3,89.4,24.1,0,40.9,450,447.84,0,0,1.098612,6.104436,1,4.564348,6.160541,1,0,0,40.9,8.853306,1.098612,4.166602,1 +13,4,0,1,3,425586,0,6996.481,36.65298,1,19,1,33.58209,7.787533,0,0,540.0571,581.4267,1,0,0,1,0,3,89.4,24.1,0,40.9,450,447.84,0,0,1.098612,6.104436,1,4.564348,6.160541,1,0,0,40.9,8.853306,1.098612,6.365485,1 +13,4,0,1,1,425587,0,6996.481,3.014374,0,19,1,65.21061,7.25429,0,0,0,72.4649,0,0,0,8,0,3,83.39137,9.967326,0,85.2,450,447.84,1,0,1.098612,6.104436,1,4.564348,6.160541,1,0,0,85.2,8.853306,1.098612,4.283102,1 +13,4,0,1,2,425587,0,6996.481,4.014374,0,19,1,10.63067,7.262303,0,0,0,17.89298,0,0,0,2,0,3,83.39137,9.967326,0,85.2,450,447.84,1,0,1.098612,6.104436,1,4.564348,6.160541,1,0,0,85.2,8.853306,1.098612,2.884408,1 +13,4,0,1,3,425587,0,6996.481,5.014374,0,19,1,13.16945,2.589991,0,0,0,15.75944,0,0,0,2,0,3,83.39137,9.967326,0,85.2,450,447.84,1,0,1.098612,6.104436,1,4.564348,6.160541,1,0,0,85.2,8.853306,1.098612,2.757439,1 +19,4,25,1,1,425605,0,9041.643,13.92745,1,16,1,52.55023,1.555899,0,0,0,54.10613,0,0,0,3,0,7,80,9.967326,0,81.5,750,725,1,1,1.94591,6.586172,0,3.258096,8.006368,0,0,0,81.5,9.109707,1.94591,3.990947,1 +19,4,25,1,2,425605,0,9041.643,14.92745,1,16,1,70.07576,8.854167,29.00095,0,656.8182,764.749,1,0,0,7,0,7,80,9.967326,0,81.5,750,725,1,1,1.94591,6.586172,0,3.258096,8.006368,0,0,0,81.5,9.109707,1.94591,6.639548,1 +19,4,25,1,3,425605,0,9041.643,15.92745,1,16,1,48.37451,12.56177,0,0,0,60.93628,0,0,0,4,0,7,80,9.967326,0,81.5,750,725,1,1,1.94591,6.586172,0,3.258096,8.006368,0,0,0,81.5,9.109707,1.94591,4.109829,1 +19,4,25,1,4,425605,0,9041.643,16.92745,1,16,1,0,4.052777,0,0,0,4.052777,0,0,0,0,0,7,80,9.967326,0,81.5,750,725,1,1,1.94591,6.586172,0,3.258096,8.006368,0,0,0,81.5,9.109707,1.94591,1.399402,1 +19,4,25,1,5,425605,0,9041.643,17.92745,1,16,1,0,0,0,0,0,0,0,0,0,0,0,7,80,9.967326,0,81.5,750,725,1,1,1.94591,6.586172,0,3.258096,8.006368,0,0,0,81.5,9.109707,1.94591,,0 +19,4,25,1,1,425606,0,9041.643,8.167009,0,16,1,0,.4739825,0,0,0,.4739825,0,0,0,0,0,7,78.3,9.967326,0,70.4,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,70.4,9.109707,1.94591,-.7465849,1 +19,4,25,1,2,425606,0,9041.643,9.167009,0,16,1,23.20076,3.432765,0,0,0,26.63352,0,0,0,3,0,7,78.3,9.967326,0,70.4,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,70.4,9.109707,1.94591,3.282171,1 +19,4,25,1,3,425606,0,9041.643,10.16701,0,16,1,0,2.31036,0,0,0,2.31036,0,0,0,0,0,7,78.3,9.967326,0,70.4,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,70.4,9.109707,1.94591,.8374032,1 +19,4,25,1,4,425606,0,9041.643,11.16701,0,16,1,5.907838,.9216227,0,0,0,6.829461,0,0,0,1,0,7,78.3,9.967326,0,70.4,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,70.4,9.109707,1.94591,1.921246,1 +19,4,25,1,5,425606,0,9041.643,12.16701,0,16,1,41.1449,0,28.62254,0,0,69.76744,0,0,0,1,3,7,78.3,9.967326,0,70.4,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,70.4,9.109707,1.94591,4.245167,1 +19,4,25,1,1,425607,0,9041.643,15.12936,0,16,1,7.727975,.4739825,0,0,0,8.201958,0,0,0,1,0,7,73.4,0,0,75,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,75,9.109707,1.94591,2.104373,1 +19,4,25,1,2,425607,0,9041.643,16.12936,0,16,1,0,1.751894,0,0,0,1.751894,0,0,0,0,0,7,73.4,0,0,75,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,75,9.109707,1.94591,.5606975,1 +19,4,25,1,3,425607,0,9041.643,17.12936,0,16,1,0,2.31036,0,0,0,2.31036,0,0,0,0,0,7,73.4,0,0,75,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,75,9.109707,1.94591,.8374032,1 +19,4,25,1,4,425607,0,9041.643,18.12936,0,16,1,11.81568,.9216227,0,0,0,12.7373,0,0,0,1,0,7,73.4,0,0,75,750,725,0,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,75,9.109707,1.94591,2.544534,1 +19,4,25,1,5,425607,0,9041.643,19.12936,0,16,1,0,0,0,0,0,0,0,0,0,0,0,7,73.4,0,0,75,750,725,0,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,75,9.109707,1.94591,,0 +19,4,25,1,1,425608,0,9041.643,43.8768,0,18,1,7.727975,5.538382,35.54869,0,0,48.81504,0,0,0,0,1,7,71.8,3.4,0,81.8,750,725,0,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,81.8,9.109707,1.94591,3.888039,1 +19,4,25,1,2,425608,0,9041.643,44.8768,0,18,1,11.83712,8.59375,0,0,0,20.43087,0,0,0,2,0,7,71.8,3.4,0,81.8,750,725,0,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,81.8,9.109707,1.94591,3.017047,1 +19,4,25,1,3,425608,0,9041.643,45.8768,0,18,1,0,0,0,0,0,0,0,0,0,0,0,7,71.8,3.4,0,81.8,750,725,0,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,81.8,9.109707,1.94591,,0 +19,4,25,1,4,425608,0,9041.643,46.8768,0,18,1,15.75423,0,33.08389,0,0,48.83813,0,0,0,1,1,7,71.8,3.4,0,81.8,750,725,0,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,81.8,9.109707,1.94591,3.888511,1 +19,4,25,1,5,425608,0,9041.643,47.8768,0,18,1,14.31127,0,15.02683,0,0,29.3381,0,0,0,1,1,7,71.8,3.4,0,81.8,750,725,0,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,81.8,9.109707,1.94591,3.378887,1 +19,4,25,1,1,425609,0,9041.643,12.2601,0,16,1,6.697578,3.153014,0,0,0,9.850593,0,0,0,1,0,7,78.3,9.967326,0,92.6,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,92.6,9.109707,1.94591,2.287532,1 +19,4,25,1,2,425609,0,9041.643,13.2601,0,16,1,30.77652,5.018939,28.40909,0,0,64.20454,0,0,0,3,0,7,78.3,9.967326,0,92.6,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,92.6,9.109707,1.94591,4.162074,1 +19,4,25,1,3,425609,0,9041.643,14.2601,0,16,1,0,2.31036,0,0,0,2.31036,0,0,0,0,0,7,78.3,9.967326,0,92.6,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,92.6,9.109707,1.94591,.8374032,1 +19,4,25,1,4,425609,0,9041.643,15.2601,0,16,1,7.483261,5.746357,0,0,0,13.22962,0,0,0,1,0,7,78.3,9.967326,0,92.6,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,92.6,9.109707,1.94591,2.582458,1 +19,4,25,1,5,425609,0,9041.643,16.2601,0,16,1,14.31127,0,21.46691,0,0,35.77818,0,0,0,1,1,7,78.3,9.967326,0,92.6,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,92.6,9.109707,1.94591,3.577338,1 +19,4,25,1,1,425610,0,9041.643,10.11636,0,16,1,0,4.750129,0,0,0,4.750129,0,0,0,0,0,7,85,9.967326,0,85.2,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,85.2,9.109707,1.94591,1.558172,1 +19,4,25,1,2,425610,0,9041.643,11.11636,0,16,1,38.82576,5.681818,0,0,0,44.50758,0,0,0,4,0,7,85,9.967326,0,85.2,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,85.2,9.109707,1.94591,3.795659,1 +19,4,25,1,3,425610,0,9041.643,12.11636,0,16,1,6.501951,2.31036,0,0,0,8.81231,0,0,0,1,0,7,85,9.967326,0,85.2,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,85.2,9.109707,1.94591,2.17615,1 +19,4,25,1,4,425610,0,9041.643,13.11636,0,16,1,7.877117,3.737692,0,0,0,11.61481,0,0,0,1,0,7,85,9.967326,0,85.2,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,85.2,9.109707,1.94591,2.452281,1 +19,4,25,1,5,425610,0,9041.643,14.11636,0,16,1,5.366726,0,0,0,0,5.366726,0,0,0,1,0,7,85,9.967326,0,85.2,750,725,1,0,1.94591,6.586172,0,3.258096,8.006368,0,0,0,85.2,9.109707,1.94591,1.680218,1 +19,4,25,1,1,425611,0,9041.643,42.91855,1,16,1,12.87996,7.779495,22.15353,0,0,42.81298,0,0,0,1,0,7,79.8,10.3,1,76.1,750,725,0,0,1.94591,6.586172,0,3.258096,8.006368,1,0,0,76.1,9.109707,1.94591,3.756841,1 +19,4,25,1,2,425611,0,9041.643,43.91855,1,16,1,28.40909,0,49.71591,0,0,78.125,0,0,0,2,0,7,79.8,10.3,1,76.1,750,725,0,0,1.94591,6.586172,0,3.258096,8.006368,1,0,0,76.1,9.109707,1.94591,4.35831,1 +19,4,25,1,3,425611,0,9041.643,44.91855,1,16,1,42.80451,2.860858,12.13697,0,0,57.80234,0,0,0,3,0,7,79.8,10.3,1,76.1,750,725,0,0,1.94591,6.586172,0,3.258096,8.006368,1,0,0,76.1,9.109707,1.94591,4.057029,1 +19,4,25,1,4,425611,0,9041.643,45.91855,1,16,1,63.80465,0,38.99173,0,0,102.7964,0,0,0,3,0,7,79.8,10.3,1,76.1,750,725,0,0,1.94591,6.586172,0,3.258096,8.006368,1,0,0,76.1,9.109707,1.94591,4.63275,1 +19,4,25,1,5,425611,0,9041.643,46.91855,1,16,1,8.944544,2.146691,26.83363,0,0,37.92487,0,0,0,1,0,7,79.8,10.3,1,76.1,750,725,0,0,1.94591,6.586172,0,3.258096,8.006368,1,0,0,76.1,9.109707,1.94591,3.635607,1 +11,4,0,1,1,425624,0,3304.399,55.72895,0,16,1,45.39782,0,43.94176,0,0,89.33958,0,0,0,2,0,1,72.3,13.8,0,72.7,0,393.4,0,0,0,5.974827,0,0,0,0,0,0,72.7,8.103312,0,4.492445,1 +11,4,0,1,2,425624,0,3304.399,56.72895,0,16,1,64.02293,4.992833,32.48925,0,0,101.505,0,0,0,4,0,1,72.3,13.8,0,72.7,0,393.4,0,0,0,5.974827,0,0,0,0,0,0,72.7,8.103312,0,4.620108,1 +11,4,0,1,3,425624,0,3304.399,57.72895,0,16,1,22.38806,0,41.70325,0,0,64.09131,0,0,0,2,0,1,72.3,13.8,0,72.7,0,393.4,0,0,0,5.974827,0,0,0,0,0,0,72.7,8.103312,0,4.160309,1 +13,4,0,1,1,425630,0,5885.63,60.81314,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,88.3,10.3,0,79.5,150,405.6,0,0,0,6.005367,1,4.564348,5.061929,0,0,1,79.5,8.680439,0,,0 +13,4,0,1,2,425630,0,5885.63,61.81314,0,12,1,34.09091,9.422348,112.9735,0,0,156.4867,0,0,0,1,0,1,88.3,10.3,0,79.5,150,405.6,0,0,0,6.005367,1,4.564348,5.061929,0,0,1,79.5,8.680439,0,5.052971,1 +13,4,0,1,3,425630,0,5885.63,62.81314,0,12,1,0,17.90204,0,0,0,17.90204,0,0,0,0,0,1,88.3,10.3,0,79.5,150,405.6,0,0,0,6.005367,1,4.564348,5.061929,0,0,1,79.5,8.680439,0,2.884914,1 +6,4,25,0,1,425636,0,4418.182,28.87337,0,17,1,10.30397,0,0,0,0,10.30397,0,0,0,1,0,1,69.1,13.8,0,83,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,83,8.39371,0,2.332529,1 +6,4,25,0,2,425636,0,4418.182,29.87337,0,17,1,11.83712,0,39.29924,0,0,51.13636,0,0,0,1,0,1,69.1,13.8,0,83,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,83,8.39371,0,3.934496,1 +6,4,25,0,3,425636,0,4418.182,30.87337,0,17,1,61.8769,26.15952,0,0,0,88.03641,0,0,0,1,0,1,69.1,13.8,0,83,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,83,8.39371,0,4.47775,1 +11,4,0,1,1,425656,0,6866.276,57.80698,1,10,1,28.33591,4.636785,31.9423,0,0,64.91499,0,0,0,1,1,2,89.4,17.2,0,68.2,0,229.92,0,0,.6931472,5.437731,0,0,0,1,0,0,68.2,8.834523,.6931472,4.173079,1 +11,4,0,1,2,425656,0,6866.276,58.80698,1,10,1,63.58902,4.000947,26.04167,0,0,93.63163,0,0,0,5,0,2,89.4,17.2,0,68.2,0,229.92,0,0,.6931472,5.437731,0,0,0,1,0,0,68.2,8.834523,.6931472,4.539368,1 +11,4,0,1,3,425656,0,6866.276,59.80698,1,10,1,138.0581,0,33.15995,0,0,171.218,0,0,0,2,4,2,89.4,17.2,0,68.2,0,229.92,0,0,.6931472,5.437731,0,0,0,1,0,0,68.2,8.834523,.6931472,5.142938,1 +11,4,0,1,1,425657,0,6866.276,60.95551,0,10,1,15.8372,3.06543,0,0,0,18.90263,0,0,0,2,0,2,94.7,10.3,0,80.7,0,229.92,0,0,.6931472,5.437731,0,0,0,0,0,0,80.7,8.834523,.6931472,2.939301,1 +11,4,0,1,2,425657,0,6866.276,61.95551,0,10,1,49.85796,5.208333,27.46212,0,0,82.52841,0,0,0,3,1,2,94.7,10.3,0,80.7,0,229.92,0,0,.6931472,5.437731,0,0,0,0,0,0,80.7,8.834523,.6931472,4.413143,1 +11,4,0,1,3,425657,0,6866.276,62.95551,0,10,1,26.87473,0,18.20546,0,0,45.08019,0,0,0,1,1,2,94.7,10.3,0,80.7,0,229.92,0,0,.6931472,5.437731,0,0,0,0,0,0,80.7,8.834523,.6931472,3.808443,1 +13,4,0,1,1,425658,0,8589.442,60.63792,0,12,1,42.70479,51.31376,0,0,0,94.01855,0,0,0,4,0,2,83,13.8,1,50,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,50,9.058406,.6931472,4.543492,1 +13,4,0,1,2,425658,0,8589.442,61.63792,0,12,1,16.5625,39.48864,0,0,0,56.05114,0,0,0,1,0,2,83,13.8,1,50,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,50,9.058406,.6931472,4.026264,1 +13,4,0,1,3,425658,0,8589.442,62.63792,0,12,1,32.35804,50.36844,0,0,0,82.72649,0,0,0,3,0,2,83,13.8,1,50,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,50,9.058406,.6931472,4.41554,1 +13,4,0,1,1,425659,0,8589.442,56.93361,1,12,1,38.12468,4.070067,0,0,0,42.19474,0,0,0,2,0,2,88.8,20.7,0,76.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,76.1,9.058406,.6931472,3.742296,1 +13,4,0,1,2,425659,0,8589.442,57.93361,1,12,1,5.681818,0,0,0,0,5.681818,0,0,0,1,0,2,88.8,20.7,0,76.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,76.1,9.058406,.6931472,1.737271,1 +13,4,0,1,3,425659,0,8589.442,58.93361,1,12,1,41.07066,3.229302,0,0,0,44.29996,0,0,0,3,0,2,88.8,20.7,0,76.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,76.1,9.058406,.6931472,3.790984,1 +13,4,0,1,1,425703,0,9546.628,11.38672,0,16,1,19.31994,0,0,0,0,19.31994,0,0,0,0,0,4,83.3,9.967326,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.164048,1.386294,2.961138,1 +13,4,0,1,2,425703,0,9546.628,12.38672,0,16,1,11.83712,0,18.93939,0,0,30.77652,0,0,0,1,0,4,83.3,9.967326,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.164048,1.386294,3.426752,1 +13,4,0,1,3,425703,0,9546.628,13.38672,0,16,1,42.91287,0,0,0,0,42.91287,0,0,0,1,2,4,83.3,9.967326,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.164048,1.386294,3.759172,1 +13,4,0,1,4,425703,0,9546.628,14.38672,0,16,1,8.664828,0,0,0,0,8.664828,0,0,0,2,0,4,83.3,9.967326,0,96.3,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.164048,1.386294,2.159272,1 +13,4,0,1,5,425703,0,9546.628,15.38672,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,83.3,9.967326,0,96.3,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.164048,1.098612,,0 +13,4,0,1,1,425704,0,9546.628,12.49281,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,63.6,9.967326,0,70.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,9.164048,1.386294,,0 +13,4,0,1,2,425704,0,9546.628,13.49281,1,16,1,14.20455,0,0,0,0,14.20455,0,0,0,2,0,4,63.6,9.967326,0,70.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,9.164048,1.386294,2.653562,1 +13,4,0,1,3,425704,0,9546.628,14.49281,1,16,1,7.368877,0,0,0,0,7.368877,0,0,0,2,0,4,63.6,9.967326,0,70.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,9.164048,1.386294,1.997265,1 +13,4,0,1,4,425704,0,9546.628,15.49281,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,63.6,9.967326,0,70.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,9.164048,1.386294,,0 +13,4,0,1,1,425705,0,9546.628,32.84326,1,16,1,12.87996,0,0,0,0,12.87996,0,0,0,2,0,4,77.7,6.9,0,83.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83.7,9.164048,1.386294,2.555673,1 +13,4,0,1,2,425705,0,9546.628,33.84326,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,77.7,6.9,0,83.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83.7,9.164048,1.386294,,0 +13,4,0,1,3,425705,0,9546.628,34.84326,1,16,1,303.498,0,23.84048,0,0,327.3385,0,0,0,4,0,4,77.7,6.9,0,83.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83.7,9.164048,1.386294,5.790995,1 +13,4,0,1,4,425705,0,9546.628,35.84326,1,16,1,43.718,0,0,0,0,43.718,0,0,0,3,2,4,77.7,6.9,0,83.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,83.7,9.164048,1.386294,3.77776,1 +13,4,0,1,5,425705,0,9546.628,36.84326,1,16,1,57.33453,0,0,0,0,57.33453,0,0,0,2,0,3,77.7,6.9,0,83.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,83.7,9.164048,1.098612,4.048903,1 +13,4,0,1,1,425706,0,9546.628,36.03012,0,18,1,54.09583,0,0,0,0,54.09583,0,0,0,1,0,4,92,3.4,0,94.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,94.3,9.164048,1.386294,3.990757,1 +13,4,0,1,2,425706,0,9546.628,37.03012,0,18,1,21.30682,1.647727,0,0,0,22.95455,0,0,0,2,0,4,92,3.4,0,94.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,94.3,9.164048,1.386294,3.133516,1 +13,4,0,1,3,425706,0,9546.628,38.03012,0,18,1,13.35067,0,28.17512,0,0,41.52579,0,0,0,1,0,4,92,3.4,0,94.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,94.3,9.164048,1.386294,3.726315,1 +13,4,0,1,4,425706,0,9546.628,39.03012,0,18,1,9.846396,0,0,0,0,9.846396,0,0,0,2,0,4,92,3.4,0,94.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,94.3,9.164048,1.386294,2.287106,1 +13,4,0,1,5,425706,0,9546.628,40.03012,0,18,1,17.7102,0,0,0,0,17.7102,0,0,0,1,0,3,92,3.4,0,94.3,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,94.3,9.164048,1.098612,2.874141,1 +17,4,25,0,1,425742,0,8029.326,57.18549,0,11,1,18.65679,0,0,0,0,18.65679,0,0,0,1,0,2,89.4,10.3,0,78.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,78.4,8.99098,.6931472,2.92621,1 +17,4,25,0,2,425742,0,8029.326,58.18549,0,11,1,80.07501,2.006563,40.43132,0,1555.391,1677.904,1,0,0,6,1,2,89.4,10.3,0,78.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,78.4,8.99098,.6931472,7.425301,1 +17,4,25,0,3,425742,0,8029.326,59.18549,0,11,1,6.448839,0,0,0,0,6.448839,0,0,0,1,0,2,89.4,10.3,0,78.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,78.4,8.99098,.6931472,1.8639,1 +17,4,25,0,1,425743,0,8029.326,60.25736,1,12,1,10.2145,0,0,0,0,10.2145,0,0,0,1,0,2,94.1,13.8,0,79.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,79.5,8.99098,.6931472,2.323809,1 +17,4,25,0,2,425743,0,8029.326,61.25736,1,12,1,61.39241,30.26254,31.41116,0,0,123.0661,0,0,0,3,1,2,94.1,13.8,0,79.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,79.5,8.99098,.6931472,4.812722,1 +17,4,25,0,3,425743,0,8029.326,62.25736,1,12,1,5.159071,36.92175,0,0,0,42.08083,0,0,0,1,0,2,94.1,13.8,0,79.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,79.5,8.99098,.6931472,3.739592,1 +11,4,0,1,1,425820,0,5639.296,37.62628,0,6,1,44.05005,13.78958,20.42901,0,0,78.26864,0,0,0,5,0,5,84.6,17.2,1,86.4,0,225.6,0,0,1.609438,5.418764,0,0,0,1,0,0,86.4,8.637691,1.609438,4.360147,1 +11,4,0,1,2,425820,0,5639.296,38.62628,0,6,1,148.1481,7.501172,0,0,0,155.6493,0,0,0,5,0,5,84.6,17.2,1,86.4,0,225.6,0,0,1.609438,5.418764,0,0,0,1,0,0,86.4,8.637691,1.609438,5.047606,1 +11,4,0,1,3,425820,0,5639.296,39.62628,0,6,1,41.59501,14.74635,26.6552,0,0,82.99656,0,0,0,3,1,5,84.6,17.2,1,86.4,0,225.6,0,0,1.609438,5.418764,0,0,0,1,0,0,86.4,8.637691,1.609438,4.418799,1 +11,4,0,1,1,425821,0,5639.296,8.271048,1,11,1,25.53626,8.171603,0,0,0,33.70787,0,0,0,3,0,5,81.7,9.967326,0,88.9,0,225.6,1,1,1.609438,5.418764,0,0,0,0,0,0,88.9,8.637691,1.609438,3.517731,1 +11,4,0,1,2,425821,0,5639.296,9.271048,1,11,1,2.812939,0,0,0,0,2.812939,0,0,0,1,0,5,81.7,9.967326,0,88.9,0,225.6,1,1,1.609438,5.418764,0,0,0,0,0,0,88.9,8.637691,1.609438,1.03423,1 +11,4,0,1,3,425821,0,5639.296,10.27105,1,11,1,22.18401,2.149613,0,0,0,24.33362,0,0,0,2,1,5,81.7,9.967326,0,88.9,0,225.6,1,1,1.609438,5.418764,0,0,0,0,0,0,88.9,8.637691,1.609438,3.191859,1 +11,4,0,1,1,425822,0,5639.296,6.551677,1,11,1,38.4474,1.02145,0,0,0,39.46885,0,0,0,5,0,5,81.7,9.967326,0,88.9,0,225.6,1,1,1.609438,5.418764,0,0,0,0,0,0,88.9,8.637691,1.609438,3.675512,1 +11,4,0,1,2,425822,0,5639.296,7.551677,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,9.967326,0,88.9,0,225.6,1,1,1.609438,5.418764,0,0,0,0,0,0,88.9,8.637691,1.609438,,0 +11,4,0,1,3,425822,0,5639.296,8.551677,1,11,1,10.74806,.7523646,0,0,0,11.50043,0,0,0,0,1,5,81.7,9.967326,0,88.9,0,225.6,1,1,1.609438,5.418764,0,0,0,0,0,0,88.9,8.637691,1.609438,2.442384,1 +11,4,0,1,1,425823,0,5639.296,27.60849,1,11,1,45.45454,3.830439,22.98264,0,0,72.26762,0,0,0,5,0,5,87.2,20.7,0,93.2,0,225.6,0,0,1.609438,5.418764,0,0,0,0,0,0,93.2,8.637691,1.609438,4.280376,1 +11,4,0,1,2,425823,0,5639.296,28.60849,1,11,1,61.65026,16.1744,12.1894,0,0,90.01406,0,0,0,4,1,5,87.2,20.7,0,93.2,0,225.6,0,0,1.609438,5.418764,0,0,0,0,0,0,93.2,8.637691,1.609438,4.499966,1 +11,4,0,1,3,425823,0,5639.296,29.60849,1,11,1,353.4007,22.82889,0,0,0,376.2296,0,0,0,7,0,5,87.2,20.7,0,93.2,0,225.6,0,0,1.609438,5.418764,0,0,0,0,0,0,93.2,8.637691,1.609438,5.9302,1 +11,4,0,1,1,425867,0,5469.795,31.7974,0,18,1,56.6905,1.225741,0,0,0,57.91624,0,0,0,2,0,1,76.6,6.9,0,78.4,0,0,0,0,0,0,0,0,0,0,0,0,78.4,8.60718,0,4.058998,1 +11,4,0,1,2,425867,0,5469.795,32.7974,0,18,1,27.19175,0,0,0,286.7276,313.9194,1,0,0,1,0,1,76.6,6.9,0,78.4,0,0,0,0,0,0,0,0,0,0,0,0,78.4,8.60718,0,5.749136,1 +11,4,0,1,3,425867,0,5469.795,33.7974,0,18,1,186.8444,4.858126,0,0,0,191.7025,0,0,0,2,0,2,76.6,6.9,0,78.4,0,0,0,0,.6931472,0,0,0,0,0,0,0,78.4,8.60718,.6931472,5.255945,1 +15,4,95,0,1,425893,0,9829.912,53.37714,1,13,1,26.79031,2.035033,40.70067,0,0,69.52602,0,0,0,2,1,2,93.6,24.1,1,72.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,72.7,9.193287,.6931472,4.241701,1 +15,4,95,0,2,425893,0,9829.912,54.37714,1,13,1,18.93939,0,0,0,0,18.93939,0,0,0,2,0,2,93.6,24.1,1,72.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,72.7,9.193287,.6931472,2.941244,1 +15,4,95,0,3,425893,0,9829.912,55.37714,1,13,1,9.536194,1.71218,0,0,0,11.24837,0,0,0,0,1,2,93.6,24.1,1,72.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,72.7,9.193287,.6931472,2.420224,1 +15,4,95,0,4,425893,0,9829.912,56.37714,1,13,1,0,0,0,0,0,0,0,0,0,0,0,2,93.6,24.1,1,72.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,72.7,9.193287,.6931472,,0 +15,4,95,0,5,425893,0,9829.912,57.37714,1,13,1,8.944544,0,26.83363,0,0,35.77818,0,0,0,0,1,2,93.6,24.1,1,72.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,72.7,9.193287,.6931472,3.577338,1 +15,4,95,0,1,425894,0,9829.912,54.6694,0,12,1,73.44668,0,28.33591,0,0,101.7826,0,0,0,3,0,2,80.9,20.7,0,71.6,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.193287,.6931472,4.622839,1 +15,4,95,0,2,425894,0,9829.912,55.6694,0,12,1,161.4583,1.870265,0,0,0,163.3286,0,0,0,5,1,2,80.9,20.7,0,71.6,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.193287,.6931472,5.095764,1 +15,4,95,0,3,425894,0,9829.912,56.6694,0,12,1,123.407,6.827048,23.84048,0,0,154.0746,0,0,0,6,1,2,80.9,20.7,0,71.6,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.193287,.6931472,5.037436,1 +15,4,95,0,4,425894,0,9829.912,57.6694,0,12,1,33.69437,12.11107,0,0,0,45.80544,0,0,0,2,0,2,80.9,20.7,0,71.6,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.193287,.6931472,3.824403,1 +15,4,95,0,5,425894,0,9829.912,58.6694,0,12,1,146.4293,45.48479,0,0,837.2236,1029.138,1,0,0,8,1,2,80.9,20.7,0,71.6,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,71.6,9.193287,.6931472,6.936477,1 +11,4,0,1,1,425896,0,8465.689,29.16085,1,16,1,41.42207,1.158907,0,0,0,42.58097,0,0,0,4,0,4,83.5,13.8,0,72.7,0,570.48,0,0,1.386294,6.346478,0,0,0,0,0,0,72.7,9.043895,1.386294,3.751407,1 +11,4,0,1,2,425896,0,8465.689,30.16085,1,16,1,67.21678,5.757576,0,0,0,72.97436,0,0,0,1,0,4,83.5,13.8,0,72.7,0,570.48,0,0,1.386294,6.346478,0,0,0,0,0,0,72.7,9.043895,1.386294,4.290108,1 +11,4,0,1,3,425896,0,8465.689,31.16085,1,16,1,125.9085,0,3.505772,26.72082,235.1432,364.5575,1,1,2,10,0,4,83.5,13.8,0,72.7,0,570.48,0,0,1.386294,6.346478,0,0,0,0,0,0,72.7,9.043895,1.386294,5.898685,1 +11,4,0,1,1,425897,0,8465.689,4.030117,0,16,1,32.89474,4.170041,0,0,0,37.06478,0,0,0,3,1,4,83.39137,9.967326,0,100,0,570.48,1,0,1.386294,6.346478,0,0,0,0,0,0,100,9.043895,1.386294,3.612667,1 +11,4,0,1,2,425897,0,8465.689,5.030117,0,16,1,19.11422,0,0,0,0,19.11422,0,0,0,1,1,4,83.39137,9.967326,0,100,0,570.48,1,0,1.386294,6.346478,0,0,0,0,0,0,100,9.043895,1.386294,2.950433,1 +11,4,0,1,3,425897,0,8465.689,6.030117,0,16,1,9.405729,0,30.44464,0,0,39.85036,0,0,0,2,0,4,83.39137,9.967326,0,100,0,570.48,1,0,1.386294,6.346478,0,0,0,0,0,0,100,9.043895,1.386294,3.685132,1 +11,4,0,1,1,425898,0,8465.689,6.078029,0,16,1,200.9109,14.03846,0,0,0,214.9494,0,0,0,13,11,4,66.7,9.967326,0,100,0,570.48,1,0,1.386294,6.346478,0,0,0,0,0,0,100,9.043895,1.386294,5.370403,1 +11,4,0,1,2,425898,0,8465.689,7.078029,0,16,1,24.70862,4.275058,27.29138,0,0,56.27506,0,0,0,4,1,4,66.7,9.967326,0,100,0,570.48,1,0,1.386294,6.346478,0,0,0,0,0,0,100,9.043895,1.386294,4.030252,1 +11,4,0,1,3,425898,0,8465.689,8.078029,0,16,1,97.95212,1.624626,0,0,0,99.57674,0,0,0,5,0,4,66.7,9.967326,0,100,0,570.48,1,0,1.386294,6.346478,0,0,0,0,0,0,100,9.043895,1.386294,4.600929,1 +13,4,0,1,1,425904,0,7374.193,29.47023,0,13,1,31.66496,4.519918,0,0,0,36.18488,0,0,0,3,0,2,83,3.4,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,80.7,8.905877,.6931472,3.588641,1 +13,4,0,1,2,425904,0,7374.193,30.47023,0,13,1,56.25879,2.344116,0,0,0,58.60291,0,0,0,3,0,2,83,3.4,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,80.7,8.905877,.6931472,4.070784,1 +13,4,0,1,3,425904,0,7374.193,31.47023,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,83,3.4,0,80.7,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,1,0,0,80.7,8.905877,1.098612,,0 +13,4,0,1,4,425904,0,7374.193,32.47023,0,13,1,0,0,0,31.01978,0,0,0,0,1,0,0,3,83,3.4,0,80.7,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,1,0,0,80.7,8.905877,1.098612,,0 +13,4,0,1,5,425904,0,7374.193,33.47023,0,13,1,2.830856,0,0,0,0,2.830856,0,0,0,1,0,3,83,3.4,0,80.7,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,1,0,0,80.7,8.905877,1.098612,1.040579,1 +13,4,0,1,1,425905,0,7374.193,27.4935,1,16,1,58.4474,4.519918,26.55771,0,0,89.52502,0,0,0,5,0,2,76.6,10.3,0,73.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,73.9,8.905877,.6931472,4.494518,1 +13,4,0,1,2,425905,0,7374.193,28.4935,1,16,1,31.87998,0,0,0,717.9325,749.8125,1,0,0,5,0,2,76.6,10.3,0,73.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,73.9,8.905877,.6931472,6.619823,1 +13,4,0,1,3,425905,0,7374.193,29.4935,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,76.6,10.3,0,73.9,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,1,0,0,73.9,8.905877,1.098612,,0 +13,4,0,1,4,425905,0,7374.193,30.4935,1,16,1,21.71384,22.97014,0,286.9329,0,44.68399,0,0,28,3,0,3,76.6,10.3,0,73.9,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,1,0,0,73.9,8.905877,1.098612,3.799615,1 +13,4,0,1,5,425905,0,7374.193,31.4935,1,16,1,57.6787,17.80609,23.35456,26.53928,251.7339,350.5732,1,0,3,5,0,3,76.6,10.3,0,73.9,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,1,0,0,73.9,8.905877,1.098612,5.85957,1 +11,4,0,0,1,425917,0,11310.85,15.32375,0,9,1,81.91653,0,0,0,0,81.91653,0,0,0,4,0,4,92,0,0,65.5,0,0,1,0,1.386294,0,0,0,0,1,0,0,65.5,9.333606,1.386294,4.405701,1 +11,4,0,0,2,425917,0,11310.85,16.32375,0,9,1,48.31913,4.640152,0,0,447.3958,500.3551,1,0,0,5,0,3,92,0,0,65.5,0,0,1,0,1.098612,0,0,0,0,1,0,0,65.5,9.333606,1.098612,6.215318,1 +11,4,0,0,1,425918,0,11310.85,43.15948,1,9,1,18.03194,0,0,0,0,18.03194,0,0,0,1,0,4,81.4,3.4,0,76.1,0,0,0,0,1.386294,0,0,0,0,1,0,0,76.1,9.333606,1.386294,2.892145,1 +11,4,0,0,2,425918,0,11310.85,44.15948,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,81.4,3.4,0,76.1,0,0,0,0,1.098612,0,0,0,0,1,0,0,76.1,9.333606,1.098612,,0 +11,4,0,0,3,425918,0,11310.85,45.15948,1,9,1,19.50585,0,0,0,0,19.50585,0,0,0,1,0,2,81.4,3.4,0,76.1,0,0,0,0,.6931472,0,0,0,0,1,0,0,76.1,9.333606,.6931472,2.970715,1 +11,4,0,0,1,425919,0,11310.85,18.99247,0,10,1,119.2427,4.90984,0,0,0,124.1525,0,0,0,5,0,4,92,3.4,0,84.1,0,0,0,0,1.386294,0,0,0,0,1,0,0,84.1,9.333606,1.386294,4.821511,1 +11,4,0,0,1,425920,0,11310.85,46.24778,0,12,1,193.22,30.1391,154.5595,0,0,377.9186,0,0,0,4,8,4,87.2,10.3,0,64.8,0,0,0,0,1.386294,0,0,0,0,1,0,0,64.8,9.333606,1.386294,5.934679,1 +11,4,0,0,2,425920,0,11310.85,47.24778,0,12,1,118.7263,91.50095,40.24621,0,0,250.4735,0,0,0,5,0,3,87.2,10.3,0,64.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,64.8,9.333606,1.098612,5.523353,1 +11,4,0,0,3,425920,0,11310.85,48.24778,0,12,1,89.94365,72.60512,0,0,0,162.5488,0,0,0,5,0,2,87.2,10.3,0,64.8,0,0,0,0,.6931472,0,0,0,0,1,0,0,64.8,9.333606,.6931472,5.090978,1 +11,4,0,1,1,425925,0,10809.97,58.72964,1,12,1,116.4348,94.2813,54.84286,0,0,265.559,0,0,0,7,0,1,81.9,27.6,1,58,0,293.28,0,0,0,5.681128,0,0,0,1,0,0,58,9.288317,0,5.581837,1 +11,4,0,1,2,425925,0,10809.97,59.72964,1,12,1,17.51894,69.69697,0,0,0,87.21591,0,0,0,2,0,1,81.9,27.6,1,58,0,293.28,0,0,0,5.681128,0,0,0,1,0,0,58,9.288317,0,4.468387,1 +11,4,0,1,1,425966,0,7978.886,11.86858,0,12,1,0,.4276146,0,0,0,.4276146,0,0,0,0,0,6,90,9.967326,0,63,0,291.84,1,0,1.791759,5.676206,0,0,0,0,0,0,63,8.984679,1.791759,-.8495329,1 +11,4,0,1,2,425966,0,7978.886,12.86858,0,12,1,23.91098,0,0,0,0,23.91098,0,0,0,1,0,6,90,9.967326,0,63,0,291.84,1,0,1.791759,5.676206,0,0,0,0,0,0,63,8.984679,1.791759,3.174338,1 +11,4,0,1,3,425966,0,7978.886,13.86858,0,12,1,30.66753,0,0,0,0,30.66753,0,0,0,1,0,6,90,9.967326,0,63,0,291.84,1,0,1.791759,5.676206,0,0,0,0,0,0,63,8.984679,1.791759,3.423205,1 +11,4,0,1,1,425967,0,7978.886,8.566735,0,12,1,65.34261,12.86965,0,0,0,78.21227,0,0,0,4,0,6,91.7,9.967326,0,70.4,0,291.84,1,0,1.791759,5.676206,0,0,0,0,0,0,70.4,8.984679,1.791759,4.359426,1 +11,4,0,1,2,425967,0,7978.886,9.566735,0,12,1,9.469697,2.95928,0,0,0,12.42898,0,0,0,1,0,6,91.7,9.967326,0,70.4,0,291.84,1,0,1.791759,5.676206,0,0,0,0,0,0,70.4,8.984679,1.791759,2.52003,1 +11,4,0,1,3,425967,0,7978.886,10.56674,0,12,1,4.334634,2.362375,0,0,0,6.697009,0,0,0,1,0,6,91.7,9.967326,0,70.4,0,291.84,1,0,1.791759,5.676206,0,0,0,0,0,0,70.4,8.984679,1.791759,1.901661,1 +11,4,0,1,1,425968,0,7978.886,34.52156,1,12,1,20.60793,0,37.60948,0,0,58.21741,0,0,0,2,1,6,88.8,13.8,0,85.2,0,291.84,0,0,1.791759,5.676206,0,0,0,0,0,0,85.2,8.984679,1.791759,4.064185,1 +11,4,0,1,2,425968,0,7978.886,35.52156,1,12,1,9.469697,0,0,0,0,9.469697,0,0,0,1,0,6,88.8,13.8,0,85.2,0,291.84,0,0,1.791759,5.676206,0,0,0,0,0,0,85.2,8.984679,1.791759,2.248097,1 +11,4,0,1,3,425968,0,7978.886,36.52156,1,12,1,39.87863,3.120936,0,0,0,42.99957,0,0,0,4,0,6,88.8,13.8,0,85.2,0,291.84,0,0,1.791759,5.676206,0,0,0,0,0,0,85.2,8.984679,1.791759,3.76119,1 +11,4,0,1,1,425969,0,7978.886,35.38124,0,13,1,51.51984,0,0,0,0,51.51984,0,0,0,0,4,6,58.5,24.1,1,54.8,0,291.84,0,0,1.791759,5.676206,0,0,0,0,0,0,54.8,8.984679,1.791759,3.941967,1 +11,4,0,1,2,425969,0,7978.886,36.38124,0,13,1,7.102273,0,0,0,0,7.102273,0,0,0,0,1,6,58.5,24.1,1,54.8,0,291.84,0,0,1.791759,5.676206,0,0,0,0,0,0,54.8,8.984679,1.791759,1.960415,1 +11,4,0,1,3,425969,0,7978.886,37.38124,0,13,1,61.5518,1.733853,0,0,0,63.28565,0,0,0,3,0,6,58.5,24.1,1,54.8,0,291.84,0,0,1.791759,5.676206,0,0,0,0,0,0,54.8,8.984679,1.791759,4.147659,1 +11,4,0,1,1,425970,0,7978.886,3.279945,0,12,1,7.727975,12.64812,0,0,0,20.37609,0,0,0,1,0,6,83.39137,9.967326,0,74.1,0,291.84,1,0,1.791759,5.676206,0,0,0,0,0,0,74.1,8.984679,1.791759,3.014362,1 +11,4,0,1,2,425970,0,7978.886,4.279945,0,12,1,9.232955,2.485795,0,0,0,11.71875,0,0,0,1,0,6,83.39137,9.967326,0,74.1,0,291.84,1,0,1.791759,5.676206,0,0,0,0,0,0,74.1,8.984679,1.791759,2.46119,1 +11,4,0,1,3,425970,0,7978.886,5.279945,0,12,1,188.8903,1.842219,0,0,0,190.7326,0,0,0,4,0,6,83.39137,9.967326,0,74.1,0,291.84,1,0,1.791759,5.676206,0,0,0,0,0,0,74.1,8.984679,1.791759,5.250872,1 +11,4,0,1,1,425971,0,7978.886,14.07255,0,12,1,56.85214,13.31273,0,0,0,70.16486,0,0,0,4,0,6,87.4,3.4,0,75,0,291.84,1,0,1.791759,5.676206,0,0,0,0,0,0,75,8.984679,1.791759,4.250848,1 +11,4,0,1,2,425971,0,7978.886,15.07255,0,12,1,0,1.183712,0,0,0,1.183712,0,0,0,0,0,6,87.4,3.4,0,75,0,291.84,1,0,1.791759,5.676206,0,0,0,0,0,0,75,8.984679,1.791759,.1686554,1 +11,4,0,1,3,425971,0,7978.886,16.07255,0,12,1,8.669268,0,0,0,0,8.669268,0,0,0,1,0,6,87.4,3.4,0,75,0,291.84,1,0,1.791759,5.676206,0,0,0,0,0,0,75,8.984679,1.791759,2.159784,1 +11,4,0,1,1,425972,0,2313.783,5.845312,1,10,1,10.12146,0,0,0,0,10.12146,0,0,0,2,0,3,81.7,9.967326,0,51.9,0,0,1,1,1.098612,0,0,0,0,1,0,0,51.9,7.747071,1.098612,2.314658,1 +11,4,0,1,2,425972,0,2313.783,6.845312,1,10,1,18.64802,0,0,0,0,18.64802,0,0,0,1,0,3,81.7,9.967326,0,51.9,0,0,1,1,1.098612,0,0,0,0,1,0,0,51.9,7.747071,1.098612,2.92574,1 +11,4,0,1,3,425972,0,2313.783,7.845312,1,10,1,33.2407,0,0,0,0,33.2407,0,0,0,2,0,3,81.7,9.967326,0,51.9,0,0,1,1,1.098612,0,0,0,0,1,0,0,51.9,7.747071,1.098612,3.503775,1 +11,4,0,1,4,425972,0,2313.783,8.845311,1,10,1,34.20446,0,0,0,0,34.20446,0,0,0,5,0,3,81.7,9.967326,0,51.9,0,0,1,1,1.098612,0,0,0,0,1,0,0,51.9,7.747071,1.098612,3.532356,1 +11,4,0,1,5,425972,0,2313.783,9.845311,1,10,1,43.90586,0,5.261679,0,0,49.16755,0,0,0,1,0,3,81.7,9.967326,0,51.9,0,0,1,1,1.098612,0,0,0,0,1,0,0,51.9,7.747071,1.098612,3.895234,1 +11,4,0,1,1,425973,0,2313.783,4.358658,0,10,1,8.097166,7.373482,0,0,0,15.47065,0,0,0,2,0,3,83.39137,9.967326,0,25.9,0,0,1,0,1.098612,0,0,0,0,1,0,0,25.9,7.747071,1.098612,2.738945,1 +11,4,0,1,2,425973,0,2313.783,5.358658,0,10,1,7.342658,0,0,0,0,7.342658,0,0,0,0,0,3,83.39137,9.967326,0,25.9,0,0,1,0,1.098612,0,0,0,0,1,0,0,25.9,7.747071,1.098612,1.993701,1 +11,4,0,1,3,425973,0,2313.783,6.358658,0,10,1,9.362976,0,0,0,0,9.362976,0,0,0,1,0,3,83.39137,9.967326,0,25.9,0,0,1,0,1.098612,0,0,0,0,1,0,0,25.9,7.747071,1.098612,2.236763,1 +11,4,0,1,4,425973,0,2313.783,7.358658,0,10,1,15.94927,0,0,0,0,15.94927,0,0,0,2,0,3,83.39137,9.967326,0,25.9,0,0,1,0,1.098612,0,0,0,0,1,0,0,25.9,7.747071,1.098612,2.769413,1 +11,4,0,1,5,425973,0,2313.783,8.358659,0,10,1,109.8525,0,0,0,420.1967,530.0492,1,0,0,2,0,3,83.39137,9.967326,0,25.9,0,0,1,0,1.098612,0,0,0,0,1,0,0,25.9,7.747071,1.098612,6.27297,1 +11,4,0,1,1,425974,0,2313.783,23.8193,1,10,1,45.04049,13.13259,33.37551,0,0,91.54858,0,0,0,5,0,3,51.6,37.9,1,53.4,0,0,0,0,1.098612,0,0,0,0,0,1,0,53.4,7.747071,1.098612,4.51687,1 +11,4,0,1,2,425974,0,2313.783,24.8193,1,10,1,383.4499,0,0,0,318.718,702.1678,1,0,0,7,0,3,51.6,37.9,1,53.4,0,0,0,0,1.098612,0,0,0,0,0,1,0,53.4,7.747071,1.098612,6.554173,1 +11,4,0,1,3,425974,0,2313.783,25.8193,1,10,1,44.35656,0,31.20992,0,0,75.56648,0,0,0,1,1,3,51.6,37.9,1,53.4,0,0,0,0,1.098612,0,0,0,0,0,1,0,53.4,7.747071,1.098612,4.325013,1 +11,4,0,1,4,425974,0,2313.783,26.8193,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,51.6,37.9,1,53.4,0,0,0,0,1.098612,0,0,0,0,0,1,0,53.4,7.747071,1.098612,,0 +11,4,0,1,5,425974,0,2313.783,27.8193,1,10,1,58.65824,0,0,0,0,58.65824,0,0,0,2,0,3,51.6,37.9,1,53.4,0,0,0,0,1.098612,0,0,0,0,0,1,0,53.4,7.747071,1.098612,4.071728,1 +16,4,95,0,1,425987,0,10982.99,46.8501,1,12,1,92.04018,29.8815,0,0,0,121.9217,0,0,0,8,0,3,79.8,6.9,0,77.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,77.3,9.304194,1.098612,4.803379,1 +16,4,95,0,2,425987,0,10982.99,47.8501,1,12,1,39.77273,5.681818,0,0,0,45.45454,0,0,0,7,0,3,79.8,6.9,0,77.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,77.3,9.304194,1.098612,3.816713,1 +16,4,95,0,3,425987,0,10982.99,48.8501,1,12,1,81.94625,0,0,0,0,81.94625,0,0,0,8,0,3,79.8,6.9,0,77.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,77.3,9.304194,1.098612,4.406064,1 +16,4,95,0,4,425987,0,10982.99,49.8501,1,12,1,35.44703,12.58369,0,0,224.616,272.6467,1,1,0,6,0,3,79.8,6.9,0,77.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,77.3,9.304194,1.098612,5.608177,1 +16,4,95,0,5,425987,0,10982.99,50.8501,1,12,1,33.2737,0,0,0,0,33.2737,0,0,0,6,0,3,79.8,6.9,0,77.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,77.3,9.304194,1.098612,3.504767,1 +16,4,95,0,1,425988,0,10982.99,48.55578,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,89.4,0,0,85.2,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.304194,1.098612,,0 +16,4,95,0,2,425988,0,10982.99,49.55578,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,89.4,0,0,85.2,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.304194,1.098612,,0 +16,4,95,0,3,425988,0,10982.99,50.55578,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,89.4,0,0,85.2,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.304194,1.098612,,0 +16,4,95,0,4,425988,0,10982.99,51.55578,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,89.4,0,0,85.2,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.304194,1.098612,,0 +16,4,95,0,5,425988,0,10982.99,52.55578,0,13,1,12.52236,0,28.26476,0,0,40.78712,0,0,0,2,0,3,89.4,0,0,85.2,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.304194,1.098612,3.708366,1 +16,4,95,0,1,425989,0,10982.99,19.09103,0,12,1,41.12828,0,0,0,0,41.12828,0,0,0,1,0,3,49.5,3.4,0,65.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,65.9,9.304194,1.098612,3.716696,1 +16,4,95,0,2,425989,0,10982.99,20.09103,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,49.5,3.4,0,65.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,65.9,9.304194,1.098612,,0 +16,4,95,0,3,425989,0,10982.99,21.09103,0,12,1,33.51105,5.457304,0,0,0,38.96836,0,0,0,1,0,3,49.5,3.4,0,65.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,65.9,9.304194,1.098612,3.66275,1 +16,4,95,0,4,425989,0,10982.99,22.09103,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,49.5,3.4,0,65.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,65.9,9.304194,1.098612,,0 +16,4,95,0,5,425989,0,10982.99,23.09103,0,12,1,26.11807,0,0,0,0,26.11807,0,0,0,0,0,3,49.5,3.4,0,65.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,65.9,9.304194,1.098612,3.262627,1 +13,4,0,1,1,426020,0,9170.675,32.67077,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,80.9,3.4,0,89.8,450,505.44,0,0,1.609438,6.22543,1,4.564348,6.160541,0,0,0,89.8,9.123876,1.609438,,0 +13,4,0,1,2,426020,0,9170.675,33.67077,0,12,1,11.72058,5.977497,0,0,0,17.69808,0,0,0,1,0,5,80.9,3.4,0,89.8,450,505.44,0,0,1.609438,6.22543,1,4.564348,6.160541,0,0,0,89.8,9.123876,1.609438,2.873456,1 +13,4,0,1,3,426020,0,9170.675,34.67077,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,80.9,3.4,0,89.8,450,505.44,0,0,1.609438,6.22543,1,4.564348,6.160541,0,0,0,89.8,9.123876,1.609438,,0 +13,4,0,1,1,426021,0,9170.675,11.63313,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,9.967326,0,92.6,450,505.44,1,1,1.609438,6.22543,1,4.564348,6.160541,0,0,0,92.6,9.123876,1.609438,,0 +13,4,0,1,2,426021,0,9170.675,12.63313,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,9.967326,0,92.6,450,505.44,1,1,1.609438,6.22543,1,4.564348,6.160541,0,0,0,92.6,9.123876,1.609438,,0 +13,4,0,1,3,426021,0,9170.675,13.63313,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,9.967326,0,92.6,450,505.44,1,1,1.609438,6.22543,1,4.564348,6.160541,0,0,0,92.6,9.123876,1.609438,,0 +13,4,0,1,1,426022,0,9170.675,10.65298,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,91.7,9.967326,0,100,450,505.44,1,1,1.609438,6.22543,1,4.564348,6.160541,0,0,0,100,9.123876,1.609438,,0 +13,4,0,1,2,426022,0,9170.675,11.65298,1,12,1,11.72058,0,0,0,0,11.72058,0,0,0,1,0,5,91.7,9.967326,0,100,450,505.44,1,1,1.609438,6.22543,1,4.564348,6.160541,0,0,0,100,9.123876,1.609438,2.461346,1 +13,4,0,1,3,426022,0,9170.675,12.65298,1,12,1,33.23302,0,0,0,0,33.23302,0,0,0,1,0,5,91.7,9.967326,0,100,450,505.44,1,1,1.609438,6.22543,1,4.564348,6.160541,0,0,0,100,9.123876,1.609438,3.503544,1 +13,4,0,1,1,426023,0,9170.675,9.396304,0,12,1,41.07763,2.170582,0,0,0,43.24821,0,0,0,4,0,5,88.3,9.967326,0,96.3,450,505.44,1,0,1.609438,6.22543,1,4.564348,6.160541,0,0,0,96.3,9.123876,1.609438,3.766956,1 +13,4,0,1,2,426023,0,9170.675,10.3963,0,12,1,74.89452,.726676,0,0,0,75.62119,0,0,0,3,0,5,88.3,9.967326,0,96.3,450,505.44,1,0,1.609438,6.22543,1,4.564348,6.160541,0,0,0,96.3,9.123876,1.609438,4.325737,1 +13,4,0,1,3,426023,0,9170.675,11.3963,0,12,1,137.1797,0,0,0,0,137.1797,0,0,0,4,0,5,88.3,9.967326,0,96.3,450,505.44,1,0,1.609438,6.22543,1,4.564348,6.160541,0,0,0,96.3,9.123876,1.609438,4.921292,1 +13,4,0,1,1,426024,0,9170.675,31.2115,1,12,1,108.7845,0,0,0,854.1471,962.9316,1,0,0,8,0,5,73.4,6.9,0,87.5,450,505.44,0,0,1.609438,6.22543,1,4.564348,6.160541,0,0,0,87.5,9.123876,1.609438,6.869982,1 +13,4,0,1,2,426024,0,9170.675,32.2115,1,12,1,19.69058,0,0,0,0,19.69058,0,0,0,2,0,5,73.4,6.9,0,87.5,450,505.44,0,0,1.609438,6.22543,1,4.564348,6.160541,0,0,0,87.5,9.123876,1.609438,2.98014,1 +13,4,0,1,3,426024,0,9170.675,33.2115,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,73.4,6.9,0,87.5,450,505.44,0,0,1.609438,6.22543,1,4.564348,6.160541,0,0,0,87.5,9.123876,1.609438,,0 +11,4,0,1,1,426038,0,8415.249,3.682409,1,17,1,7.800312,0,0,0,0,7.800312,0,0,0,1,0,4,83.39137,9.967326,0,77.8,0,443.28,1,1,1.386294,6.094202,0,0,0,0,0,0,77.8,9.03792,1.386294,2.054164,1 +11,4,0,1,2,426038,0,8415.249,4.682409,1,17,1,29.14477,7.286192,0,0,0,36.43096,0,0,0,3,1,4,83.39137,9.967326,0,77.8,0,443.28,1,1,1.386294,6.094202,0,0,0,0,0,0,77.8,9.03792,1.386294,3.595419,1 +11,4,0,1,3,426038,0,8415.249,5.682409,1,17,1,36.43547,0,0,0,0,36.43547,0,0,0,3,0,4,83.39137,9.967326,0,77.8,0,443.28,1,1,1.386294,6.094202,0,0,0,0,0,0,77.8,9.03792,1.386294,3.595543,1 +11,4,0,1,1,426039,0,8415.249,29.36345,0,17,1,10.40042,0,28.08112,0,0,38.48154,0,0,0,0,1,4,74.5,3.4,0,87.5,0,443.28,0,0,1.386294,6.094202,0,0,0,0,0,0,87.5,9.03792,1.386294,3.650179,1 +11,4,0,1,2,426039,0,8415.249,30.36345,0,17,1,0,0,0,0,0,0,0,0,0,0,0,4,74.5,3.4,0,87.5,0,443.28,0,0,1.386294,6.094202,0,0,0,0,0,0,87.5,9.03792,1.386294,,0 +11,4,0,1,3,426039,0,8415.249,31.36345,0,17,1,0,0,13.16945,0,0,13.16945,0,0,0,0,0,4,74.5,3.4,0,87.5,0,443.28,0,0,1.386294,6.094202,0,0,0,0,0,0,87.5,9.03792,1.386294,2.577899,1 +11,4,0,1,1,426040,0,8415.249,1.434634,0,17,1,13.00052,1.534061,0,0,0,14.53458,0,0,0,2,0,4,83.39137,9.967326,0,85.2,0,443.28,1,0,1.386294,6.094202,0,0,0,0,0,0,85.2,9.03792,1.386294,2.676531,1 +11,4,0,1,2,426040,0,8415.249,2.434634,0,17,1,38.70043,8.528428,0,0,0,47.22886,0,0,0,4,0,4,83.39137,9.967326,0,85.2,0,443.28,1,0,1.386294,6.094202,0,0,0,0,0,0,85.2,9.03792,1.386294,3.855005,1 +11,4,0,1,3,426040,0,8415.249,3.434634,0,17,1,34.24056,0,0,0,0,34.24056,0,0,0,2,0,4,83.39137,9.967326,0,85.2,0,443.28,1,0,1.386294,6.094202,0,0,0,0,0,0,85.2,9.03792,1.386294,3.533411,1 +11,4,0,1,1,426041,0,8415.249,28.91171,1,17,1,10.40042,2.574103,35.61102,0,0,48.58554,0,0,0,1,0,4,81.9,10.3,0,83,0,443.28,0,0,1.386294,6.094202,0,0,0,0,0,0,83,9.03792,1.386294,3.883326,1 +11,4,0,1,2,426041,0,8415.249,29.91171,1,17,1,17.67797,2.150024,10.47778,0,0,30.30578,0,0,0,2,0,4,81.9,10.3,0,83,0,443.28,0,0,1.386294,6.094202,0,0,0,0,0,0,83,9.03792,1.386294,3.411339,1 +11,4,0,1,3,426041,0,8415.249,30.91171,1,17,1,14.15716,0,0,0,0,14.15716,0,0,0,1,0,4,81.9,10.3,0,83,0,443.28,0,0,1.386294,6.094202,0,0,0,0,0,0,83,9.03792,1.386294,2.65022,1 +16,4,95,1,1,426049,0,4265.689,50.37098,1,13,1,0,0,0,0,0,0,0,0,0,0,0,1,66.5,24.1,0,93.2,975,975,0,0,0,6.882438,0,4.564348,6.933731,0,0,0,93.2,8.358593,0,,0 +16,4,95,1,2,426049,0,4265.689,51.37098,1,13,1,146.3901,3.811533,0,0,0,150.2016,0,0,0,2,0,1,66.5,24.1,0,93.2,975,975,0,0,0,6.882438,0,4.564348,6.933731,0,0,0,93.2,8.358593,0,5.011978,1 +16,4,95,1,3,426049,0,4265.689,52.37098,1,13,1,0,0,51.37575,0,0,51.37575,0,0,0,0,0,1,66.5,24.1,0,93.2,975,975,0,0,0,6.882438,0,4.564348,6.933731,0,0,0,93.2,8.358593,0,3.939166,1 +11,4,0,0,1,426087,0,10549.56,56.49829,1,14,1,44.80082,24.92339,38.81512,0,0,108.5393,0,0,0,2,1,1,80.9,17.2,0,51.1,0,203.06,0,0,0,5.313501,0,0,0,1,0,0,51.1,9.263934,0,4.687113,1 +11,4,0,0,2,426087,0,10549.56,57.49829,1,14,1,25.43366,24.28504,0,0,0,49.7187,0,0,0,1,0,1,80.9,17.2,0,51.1,0,203.06,0,0,0,5.313501,0,0,0,1,0,0,51.1,9.263934,0,3.906381,1 +11,4,0,0,3,426087,0,10549.56,58.49829,1,14,1,101.5692,51.46174,39.9828,0,0,193.0138,0,0,0,3,1,1,80.9,17.2,0,51.1,0,203.06,0,0,0,5.313501,0,0,0,1,0,0,51.1,9.263934,0,5.262762,1 +11,4,0,1,1,426089,0,4377.712,24.87064,1,16,1,31.4271,31.53014,0,0,0,62.95724,0,0,0,3,0,1,80.3,0,0,69.3,0,131.76,0,0,0,4.880982,0,0,0,1,0,0,69.3,8.38451,0,4.142456,1 +11,4,0,1,2,426089,0,4377.712,25.87064,1,16,1,324.1714,51.54356,0,0,0,375.715,0,0,0,5,0,1,80.3,0,0,69.3,0,131.76,0,0,0,4.880982,0,0,0,1,0,0,69.3,8.38451,0,5.928831,1 +11,4,0,1,3,426089,0,4377.712,26.87064,1,16,1,117.6853,55.3446,0,0,0,173.0299,0,0,0,7,0,1,80.3,0,0,69.3,0,131.76,0,0,0,4.880982,0,0,0,1,0,0,69.3,8.38451,0,5.153464,1 +13,4,0,0,1,426109,0,9419.208,30.13826,0,11,1,149.0726,0,42.24627,0,0,191.3189,0,0,0,4,0,4,68.6,10.3,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,72.7,9.150613,1.386294,5.253942,1 +13,4,0,0,2,426109,0,9419.208,31.13826,0,11,1,0,0,0,23.67424,0,0,0,0,2,0,0,4,68.6,10.3,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,72.7,9.150613,1.386294,,0 +13,4,0,0,3,426109,0,9419.208,32.13826,0,11,1,77.93238,10.54616,10.40312,54.18292,0,98.88167,0,0,5,4,0,4,68.6,10.3,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,72.7,9.150613,1.386294,4.593924,1 +13,4,0,0,1,426110,0,9419.208,27.83573,1,12,1,39.67027,38.58836,0,396.7027,0,78.25863,0,0,22,6,0,4,45.7,13.8,0,73.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,73.9,9.150613,1.386294,4.360019,1 +13,4,0,0,2,426110,0,9419.208,28.83573,1,12,1,38.82576,19.50758,0,179.9242,0,58.33333,0,0,9,3,2,4,45.7,13.8,0,73.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,73.9,9.150613,1.386294,4.066174,1 +13,4,0,0,3,426110,0,9419.208,29.83573,1,12,1,184.8721,7.451235,0,463.8058,0,192.3234,0,0,26,9,3,4,45.7,13.8,0,73.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,73.9,9.150613,1.386294,5.259178,1 +13,4,0,0,1,426111,0,9419.208,5.223819,1,12,1,61.30861,21.20041,7.727975,0,316.5636,406.8006,1,0,0,7,0,4,90,9.967326,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,1,0,81.5,9.150613,1.386294,6.008323,1 +13,4,0,0,2,426111,0,9419.208,6.223819,1,12,1,169.1051,20.57292,0,0,0,189.678,0,0,0,12,0,4,90,9.967326,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,1,0,81.5,9.150613,1.386294,5.245328,1 +13,4,0,0,3,426111,0,9419.208,7.223819,1,12,1,225.7911,14.88513,29.74426,0,0,270.4205,0,0,0,11,1,4,90,9.967326,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,1,0,81.5,9.150613,1.386294,5.599978,1 +13,4,0,0,1,426112,0,9419.208,8.238193,1,12,1,227.3313,5.615662,0,0,0,232.9469,0,0,0,10,0,4,83.3,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,85.2,9.150613,1.386294,5.45081,1 +13,4,0,0,2,426112,0,9419.208,9.238193,1,12,1,90.90909,6.723485,27.46212,0,0,125.0947,0,0,0,4,1,4,83.3,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,85.2,9.150613,1.386294,4.829071,1 +13,4,0,0,3,426112,0,9419.208,10.23819,1,12,1,131.7078,.6892068,24.05722,0,0,156.4543,0,0,0,6,1,4,83.3,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,85.2,9.150613,1.386294,5.052764,1 +11,4,0,1,1,426148,0,7872.141,1.514032,1,13,1,27.04108,10.85283,0,0,0,37.89392,0,0,0,5,0,3,83.39137,9.967326,0,92.6,0,0,1,1,1.098612,0,0,0,0,0,0,0,92.6,8.971212,1.098612,3.634791,1 +11,4,0,1,2,426148,0,7872.141,2.514031,1,13,1,5.733397,7.009078,0,0,0,12.74247,0,0,0,1,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,8.971212,1.386294,2.544941,1 +11,4,0,1,3,426148,0,7872.141,3.514031,1,13,1,40.82529,5.763828,0,0,0,46.58912,0,0,0,5,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,8.971212,1.386294,3.841367,1 +11,4,0,1,1,426149,0,7872.141,28.77207,1,13,1,6.24025,20.56162,0,0,710.4004,737.2023,1,0,0,0,0,3,51.6,17.2,0,58,0,0,0,0,1.098612,0,0,0,0,0,0,0,58,8.971212,1.098612,6.602862,1 +11,4,0,1,2,426149,0,7872.141,29.77207,1,13,1,17.20019,4.610607,3.272814,0,0,25.08361,0,0,0,2,0,4,51.6,17.2,0,58,0,0,0,0,1.386294,0,0,0,0,0,0,0,58,8.971212,1.386294,3.222215,1 +11,4,0,1,3,426149,0,7872.141,30.77207,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,51.6,17.2,0,58,0,0,0,0,1.386294,0,0,0,0,0,0,0,58,8.971212,1.386294,,0 +11,4,0,1,1,426150,0,7872.141,33.25941,0,15,1,34.84139,4.75819,0,0,0,39.59958,0,0,0,3,0,3,77.7,10.3,0,59.1,0,0,0,0,1.098612,0,0,0,0,1,0,0,59.1,8.971212,1.098612,3.678818,1 +11,4,0,1,2,426150,0,7872.141,34.25941,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,77.7,10.3,0,59.1,0,0,0,0,1.386294,0,0,0,0,1,0,0,59.1,8.971212,1.386294,,0 +11,4,0,1,3,426150,0,7872.141,35.25941,0,15,1,13.16945,0,30.28973,0,0,43.45918,0,0,0,1,0,4,77.7,10.3,0,59.1,0,0,0,0,1.386294,0,0,0,0,1,0,0,59.1,8.971212,1.386294,3.771822,1 +19,4,25,1,1,426170,0,1555.425,20.8679,1,12,1,0,14.95445,0,0,0,14.95445,0,0,0,0,0,2,84,3.4,0,88.6,300,300,0,0,.6931472,5.703783,0,3.258096,7.090077,0,0,0,88.6,7.350147,.6931472,2.705009,1 +19,4,25,1,2,426170,0,1555.425,21.8679,1,12,1,3.193473,0,0,0,0,3.193473,0,0,0,0,0,2,84,3.4,0,88.6,300,300,0,0,.6931472,5.703783,0,3.258096,7.090077,0,0,0,88.6,7.350147,.6931472,1.161109,1 +19,4,25,1,3,426170,0,1555.425,22.8679,1,12,1,2.992732,0,0,0,285.1646,288.1573,1,0,0,1,0,2,84,3.4,0,88.6,300,300,0,0,.6931472,5.703783,0,3.258096,7.090077,0,0,0,88.6,7.350147,.6931472,5.663507,1 +19,4,25,1,4,426170,0,1555.425,23.8679,1,12,1,6.149116,0,0,0,0,6.149116,0,0,0,1,0,3,84,3.4,0,88.6,300,300,0,0,1.098612,5.703783,0,3.258096,7.090077,0,0,0,88.6,7.350147,1.098612,1.816308,1 +19,4,25,1,5,426170,0,1555.425,24.8679,1,12,1,27.74851,11.55602,0,0,0,39.30453,0,0,0,1,0,3,84,3.4,0,88.6,300,300,0,0,1.098612,5.703783,0,3.258096,7.090077,0,0,0,88.6,7.350147,1.098612,3.67134,1 +19,4,25,1,1,426171,0,1555.425,1.533196,1,12,1,35.55162,0,0,0,0,35.55162,0,0,0,2,0,2,83.39137,9.967326,0,92.6,300,300,1,1,.6931472,5.703783,0,3.258096,7.090077,0,0,0,92.6,7.350147,.6931472,3.570986,1 +19,4,25,1,2,426171,0,1555.425,2.533196,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,83.39137,9.967326,0,92.6,300,300,1,1,.6931472,5.703783,0,3.258096,7.090077,0,0,0,92.6,7.350147,.6931472,,0 +19,4,25,1,3,426171,0,1555.425,3.533196,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,83.39137,9.967326,0,92.6,300,300,1,1,.6931472,5.703783,0,3.258096,7.090077,0,0,0,92.6,7.350147,.6931472,,0 +19,4,25,1,4,426171,0,1555.425,4.533196,1,12,1,8.839355,0,0,0,0,8.839355,0,0,0,2,0,3,83.39137,9.967326,0,92.6,300,300,1,1,1.098612,5.703783,0,3.258096,7.090077,0,0,0,92.6,7.350147,1.098612,2.179214,1 +19,4,25,1,5,426171,0,1555.425,5.533196,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.39137,9.967326,0,92.6,300,300,1,1,1.098612,5.703783,0,3.258096,7.090077,0,0,0,92.6,7.350147,1.098612,,0 +5,4,25,1,1,426174,0,3863.93,3.742642,1,14,1,8.320333,0,0,0,0,8.320333,0,0,0,1,0,2,83.39137,9.967326,0,92.6,195,0,1,1,.6931472,0,0,3.258096,6.659294,0,0,0,92.6,8.259699,.6931472,2.118702,1 +5,4,25,1,2,426174,0,3863.93,4.742642,1,14,1,13.85571,0,0,0,0,13.85571,0,0,0,2,0,2,83.39137,9.967326,0,92.6,195,0,1,1,.6931472,0,0,3.258096,6.659294,0,0,0,92.6,8.259699,.6931472,2.628697,1 +5,4,25,1,3,426174,0,3863.93,5.742642,1,14,1,0,0,0,0,0,0,0,0,0,0,0,2,83.39137,9.967326,0,92.6,195,0,1,1,.6931472,0,0,3.258096,6.659294,0,0,0,92.6,8.259699,.6931472,,0 +5,4,25,1,1,426175,0,3863.93,24.76112,1,14,1,16.41186,0,0,0,0,16.41186,0,0,0,2,0,2,83,3.4,0,80.7,195,0,0,0,.6931472,0,0,3.258096,6.659294,0,0,0,80.7,8.259699,.6931472,2.798004,1 +5,4,25,1,2,426175,0,3863.93,25.76112,1,14,1,11.94458,0,25.80029,0,0,37.74487,0,0,0,1,0,2,83,3.4,0,80.7,195,0,0,0,.6931472,0,0,3.258096,6.659294,0,0,0,80.7,8.259699,.6931472,3.630849,1 +5,4,25,1,3,426175,0,3863.93,26.76112,1,14,1,328.424,4.653204,0,0,0,333.0773,0,0,0,2,0,2,83,3.4,0,80.7,195,0,0,0,.6931472,0,0,3.258096,6.659294,0,0,0,80.7,8.259699,.6931472,5.808374,1 +5,4,25,1,1,426176,0,3017.009,26.10267,0,12,1,10.30397,0,27.82071,0,0,38.12468,0,0,0,1,0,1,92,3.4,0,88.6,445,445,0,0,0,6.098074,0,3.258096,7.484369,0,0,0,88.6,8.012353,0,3.640862,1 +5,4,25,1,2,426176,0,3017.009,27.10267,0,12,1,183.4138,0,0,0,0,183.4138,0,0,0,1,0,1,92,3.4,0,88.6,445,445,0,0,0,6.098074,0,3.258096,7.484369,0,0,0,88.6,8.012353,0,5.211745,1 +5,4,25,1,3,426176,0,3017.009,28.10267,0,12,1,4.334634,2.405722,0,0,0,6.740355,0,0,0,1,0,1,92,3.4,0,88.6,445,445,0,0,0,6.098074,0,3.258096,7.484369,0,0,0,88.6,8.012353,0,1.908113,1 +18,4,25,1,1,426193,0,14513.2,56.49829,1,13,1,115.662,54.27615,38.63988,0,0,208.578,0,0,0,3,2,2,65.4,20.7,0,67,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,67,9.582883,.6931472,5.340313,1 +18,4,25,1,2,426193,0,14513.2,57.49829,1,13,1,16.57197,23.1108,0,0,0,39.68277,0,0,0,2,0,2,65.4,20.7,0,67,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,67,9.582883,.6931472,3.680917,1 +18,4,25,1,3,426193,0,14513.2,58.49829,1,13,1,7.368877,12.73515,0,0,0,20.10403,0,0,0,1,0,2,65.4,20.7,0,67,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,67,9.582883,.6931472,3.00092,1 +18,4,25,1,1,426194,0,14513.2,58.11362,0,18,1,61.66924,2.679031,0,0,0,64.34827,0,0,0,3,0,2,89.4,20.7,0,86.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.582883,.6931472,4.16431,1 +18,4,25,1,2,426194,0,14513.2,59.11362,0,18,1,81.79451,0,0,0,0,81.79451,0,0,0,4,0,2,89.4,20.7,0,86.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.582883,.6931472,4.40421,1 +18,4,25,1,3,426194,0,14513.2,60.11362,0,18,1,80.51582,0,0,0,0,80.51582,0,0,0,1,0,2,89.4,20.7,0,86.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.582883,.6931472,4.388454,1 +11,4,0,1,1,426195,0,7910.823,12.70637,0,13,1,67.28805,2.451481,0,0,0,69.73953,0,0,0,2,2,4,35,9.967326,0,92.6,0,443.28,1,0,1.386294,6.094202,0,0,0,0,0,0,92.6,8.976113,1.386294,4.244767,1 +11,4,0,1,2,426195,0,7910.823,13.70637,0,13,1,63.15049,2.977028,27.50586,0,0,93.63338,0,0,0,3,0,4,35,9.967326,0,92.6,0,443.28,1,0,1.386294,6.094202,0,0,0,0,0,0,92.6,8.976113,1.386294,4.539387,1 +11,4,0,1,3,426195,0,7910.823,14.70637,0,13,1,9.458298,1.504729,0,0,0,10.96303,0,0,0,0,1,4,35,9.967326,0,92.6,0,443.28,1,0,1.386294,6.094202,0,0,0,0,0,0,92.6,8.976113,1.386294,2.394528,1 +11,4,0,1,1,426196,0,7910.823,4.569473,0,13,1,47.77835,32.55873,0,0,0,80.33708,0,0,0,4,2,4,83.39137,9.967326,0,66.7,0,443.28,1,0,1.386294,6.094202,0,0,0,1,0,0,66.7,8.976113,1.386294,4.386231,1 +11,4,0,1,2,426196,0,7910.823,5.569473,0,13,1,7.501172,8.602907,0,0,0,16.10408,0,0,0,1,1,4,83.39137,9.967326,0,66.7,0,443.28,1,0,1.386294,6.094202,0,0,0,1,0,0,66.7,8.976113,1.386294,2.779073,1 +11,4,0,1,3,426196,0,7910.823,6.569473,0,13,1,39.12296,0,0,90.28375,0,39.12296,0,0,7,3,1,4,83.39137,9.967326,0,66.7,0,443.28,1,0,1.386294,6.094202,0,0,0,1,0,0,66.7,8.976113,1.386294,3.666709,1 +11,4,0,1,1,426197,0,7910.823,31.98631,0,17,1,162.7937,8.324821,0,0,0,171.1185,0,0,0,7,0,4,61.2,10.3,0,50,0,443.28,0,0,1.386294,6.094202,0,0,0,1,0,0,50,8.976113,1.386294,5.142356,1 +11,4,0,1,2,426197,0,7910.823,32.98631,0,17,1,144.3976,25.94937,0,0,0,170.3469,0,0,0,18,0,4,61.2,10.3,0,50,0,443.28,0,0,1.386294,6.094202,0,0,0,1,0,0,50,8.976113,1.386294,5.137837,1 +11,4,0,1,3,426197,0,7910.823,33.98631,0,17,1,222.9149,38.28461,0,0,0,261.1995,0,0,2,9,0,4,61.2,10.3,0,50,0,443.28,0,0,1.386294,6.094202,0,0,0,1,0,0,50,8.976113,1.386294,5.565284,1 +11,4,0,1,1,426198,0,7910.823,30.9514,1,13,1,136.1083,196.3739,0,0,0,332.4821,0,0,0,7,0,4,29.3,20.7,0,46.6,0,443.28,0,0,1.386294,6.094202,0,0,0,1,0,0,46.6,8.976113,1.386294,5.806586,1 +11,4,0,1,2,426198,0,7910.823,31.9514,1,13,1,1020.206,250.5392,0,0,2181.505,3452.25,1,0,0,34,0,4,29.3,20.7,0,46.6,0,443.28,0,0,1.386294,6.094202,0,0,0,1,0,0,46.6,8.976113,1.386294,8.146782,1 +11,4,0,1,3,426198,0,7910.823,32.9514,1,13,1,1244.132,230.804,0,0,0,1474.936,0,0,2,16,0,4,29.3,20.7,0,46.6,0,443.28,0,0,1.386294,6.094202,0,0,0,1,0,0,46.6,8.976113,1.386294,7.29637,1 +5,4,25,0,1,426199,.0068104,6513.196,29.30595,1,14,1,32.5013,2.938118,0,0,0,35.43942,0,0,0,0,0,4,88.3,13.8,0,79.5,497.95,497.95,0,0,1.386294,6.2105,0,3.258096,7.596794,0,0,0,79.5,8.781739,1.386294,3.567825,1 +5,4,25,0,2,426199,.0068104,6513.196,30.30595,1,14,1,15.76684,0,24.36694,0,0,40.13378,0,0,0,2,0,4,88.3,13.8,0,79.5,497.95,497.95,0,0,1.386294,6.2105,0,3.258096,7.596794,0,0,0,79.5,8.781739,1.386294,3.692218,1 +5,4,25,0,3,426199,.0068104,6513.196,31.30595,1,14,1,55.20193,0,0,0,0,55.20193,0,0,0,2,0,4,88.3,13.8,0,79.5,497.95,497.95,0,0,1.386294,6.2105,0,3.258096,7.596794,0,0,0,79.5,8.781739,1.386294,4.010998,1 +5,4,25,0,1,426200,.0068104,6513.196,4.156057,1,14,1,23.40094,5.902236,0,0,0,29.30317,0,0,0,4,0,4,83.39137,9.967326,0,77.8,497.95,497.95,1,1,1.386294,6.2105,0,3.258096,7.596794,0,0,0,77.8,8.781739,1.386294,3.377696,1 +5,4,25,0,2,426200,.0068104,6513.196,5.156057,1,14,1,8.600096,12.1118,0,0,0,20.7119,0,0,0,2,0,4,83.39137,9.967326,0,77.8,497.95,497.95,1,1,1.386294,6.2105,0,3.258096,7.596794,0,0,0,77.8,8.781739,1.386294,3.030708,1 +5,4,25,0,3,426200,.0068104,6513.196,6.156057,1,14,1,3.950834,1.733977,0,0,0,5.684811,0,0,0,1,0,4,83.39137,9.967326,0,77.8,497.95,497.95,1,1,1.386294,6.2105,0,3.258096,7.596794,0,0,0,77.8,8.781739,1.386294,1.737798,1 +5,4,25,0,1,426201,0,6513.196,30.00685,0,16,1,412.5793,5.044202,0,0,0,417.6235,0,0,0,11,0,4,86.2,3.4,0,68.2,497.95,497.95,0,0,1.386294,6.2105,0,3.258096,7.596794,0,0,0,68.2,8.781739,1.386294,6.03458,1 +5,4,25,0,2,426201,0,6513.196,31.00685,0,16,1,108.0841,0,7.166746,0,0,115.2508,0,0,0,3,0,4,86.2,3.4,0,68.2,497.95,497.95,0,0,1.386294,6.2105,0,3.258096,7.596794,0,0,0,68.2,8.781739,1.386294,4.747111,1 +5,4,25,0,3,426201,0,6513.196,32.00684,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,86.2,3.4,0,68.2,497.95,497.95,0,0,1.386294,6.2105,0,3.258096,7.596794,0,0,0,68.2,8.781739,1.386294,,0 +5,4,25,0,1,426202,.0068104,6513.196,1.185489,1,14,1,26.52106,0,0,0,0,26.52106,0,0,0,4,0,4,83.39137,9.967326,0,81.5,497.95,497.95,1,1,1.386294,6.2105,0,3.258096,7.596794,0,0,0,81.5,8.781739,1.386294,3.277939,1 +5,4,25,0,2,426202,.0068104,6513.196,2.185489,1,14,1,7.644529,2.365026,0,0,0,10.00956,0,0,0,2,0,4,83.39137,9.967326,0,81.5,497.95,497.95,1,1,1.386294,6.2105,0,3.258096,7.596794,0,0,0,81.5,8.781739,1.386294,2.30354,1 +5,4,25,0,3,426202,.0068104,6513.196,3.185489,1,14,1,11.8525,6.321334,0,0,0,18.17384,0,0,0,2,0,4,83.39137,9.967326,0,81.5,497.95,497.95,1,1,1.386294,6.2105,0,3.258096,7.596794,0,0,0,81.5,8.781739,1.386294,2.899983,1 +14,4,95,1,1,426212,0,3284.458,13.0486,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,9.967326,0,63,221,221,1,1,1.609438,5.398163,0,4.564348,5.449456,0,0,0,63,8.097261,1.609438,,0 +14,4,95,1,2,426212,0,3284.458,14.0486,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,9.967326,0,63,221,221,1,1,1.609438,5.398163,0,4.564348,5.449456,0,0,0,63,8.097261,1.609438,,0 +14,4,95,1,1,426213,0,3284.458,15.98357,1,12,1,101.2146,0,0,0,0,101.2146,0,0,0,2,0,5,71.3,3.4,0,67,221,221,1,1,1.609438,5.398163,0,4.564348,5.449456,0,0,0,67,8.097261,1.609438,4.617243,1 +14,4,95,1,2,426213,0,3284.458,16.98357,1,12,1,13.05361,4.195804,0,0,360.3077,377.5571,1,0,0,2,0,5,71.3,3.4,0,67,221,221,1,1,1.609438,5.398163,0,4.564348,5.449456,0,0,0,67,8.097261,1.609438,5.933722,1 +14,4,95,1,3,426213,0,3284.458,17.98357,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,71.3,3.4,0,67,221,221,1,1,1.386294,5.398163,0,4.564348,5.449456,0,0,0,67,8.097261,1.386294,,0 +14,4,95,1,1,426214,0,3284.458,34.63929,1,12,1,5.060729,20.49595,0,0,0,25.55668,0,0,0,1,0,5,61.2,24.1,1,56.8,221,221,0,0,1.609438,5.398163,0,4.564348,5.449456,1,0,0,56.8,8.097261,1.609438,3.240899,1 +14,4,95,1,2,426214,0,3284.458,35.63929,1,12,1,37.99534,6.592074,0,0,0,44.58741,0,0,0,1,0,5,61.2,24.1,1,56.8,221,221,0,0,1.609438,5.398163,0,4.564348,5.449456,1,0,0,56.8,8.097261,1.609438,3.797452,1 +14,4,95,1,3,426214,0,3284.458,36.63929,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,61.2,24.1,1,56.8,221,221,0,0,1.386294,5.398163,0,4.564348,5.449456,1,0,0,56.8,8.097261,1.386294,,0 +14,4,95,1,1,426215,0,3284.458,8.353183,0,12,1,6.072875,6.52834,0,0,0,12.60121,0,0,0,1,0,5,70,9.967326,0,63,221,221,1,0,1.609438,5.398163,0,4.564348,5.449456,0,0,0,63,8.097261,1.609438,2.533793,1 +14,4,95,1,2,426215,0,3284.458,9.353183,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,70,9.967326,0,63,221,221,1,0,1.609438,5.398163,0,4.564348,5.449456,0,0,0,63,8.097261,1.609438,,0 +14,4,95,1,3,426215,0,3284.458,10.35318,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,70,9.967326,0,63,221,221,1,0,1.386294,5.398163,0,4.564348,5.449456,0,0,0,63,8.097261,1.386294,,0 +14,4,95,1,1,426216,0,3284.458,10.40931,1,12,1,27.32794,0,0,0,0,27.32794,0,0,0,2,0,5,80,9.967326,0,85.2,221,221,1,1,1.609438,5.398163,0,4.564348,5.449456,0,0,0,85.2,8.097261,1.609438,3.307909,1 +14,4,95,1,2,426216,0,3284.458,11.40931,1,12,1,0,5.337996,0,0,0,5.337996,0,0,0,0,0,5,80,9.967326,0,85.2,221,221,1,1,1.609438,5.398163,0,4.564348,5.449456,0,0,0,85.2,8.097261,1.609438,1.67485,1 +14,4,95,1,3,426216,0,3284.458,12.40931,1,12,1,27.14835,0,0,0,0,27.14835,0,0,0,2,0,4,80,9.967326,0,85.2,221,221,1,1,1.386294,5.398163,0,4.564348,5.449456,0,0,0,85.2,8.097261,1.386294,3.301316,1 +13,4,0,1,1,426220,0,5279.179,50.99795,1,16,1,16.64067,3.421737,52.78211,0,0,72.84451,0,0,0,1,1,3,86.7,20.7,0,94.3,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,94.3,8.571715,1.098612,4.288327,1 +13,4,0,1,2,426220,0,5279.179,51.99795,1,16,1,21.73913,7.534639,0,0,0,29.27377,0,0,0,2,0,3,86.7,20.7,0,94.3,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,94.3,8.571715,1.098612,3.376692,1 +13,4,0,1,3,426220,0,5279.179,52.99795,1,16,1,88.34504,0,43.67867,0,230.4653,362.489,1,1,0,3,1,3,86.7,20.7,0,94.3,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,94.3,8.571715,1.098612,5.892994,1 +13,4,0,1,1,426221,0,5279.179,11.27995,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,85,9.967326,0,92.6,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.571715,1.098612,,0 +13,4,0,1,2,426221,0,5279.179,12.27995,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,85,9.967326,0,92.6,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.571715,1.098612,,0 +13,4,0,1,3,426221,0,5279.179,13.27995,1,16,1,136.194,0,0,0,597.1027,733.2968,1,0,0,11,1,3,85,9.967326,0,92.6,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.571715,1.098612,6.59755,1 +13,4,0,1,1,426222,0,5279.179,15.18412,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,85.6,6.9,0,76.1,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,76.1,8.571715,1.098612,,0 +13,4,0,1,2,426222,0,5279.179,16.18412,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,85.6,6.9,0,76.1,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,76.1,8.571715,1.098612,,0 +13,4,0,1,3,426222,0,5279.179,17.18412,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,85.6,6.9,0,76.1,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,76.1,8.571715,1.098612,,0 +11,4,0,1,1,426223,0,1859.824,5.451061,0,12,1,31.88259,3.036437,0,0,0,34.91903,0,0,0,5,0,2,100,9.967326,0,100,0,0,1,0,.6931472,0,0,0,0,0,0,0,100,7.528775,.6931472,3.553032,1 +11,4,0,1,2,426223,0,1859.824,6.451061,0,12,1,6.993007,5.594406,0,0,0,12.58741,0,0,0,1,0,2,100,9.967326,0,100,0,0,1,0,.6931472,0,0,0,0,0,0,0,100,7.528775,.6931472,2.532697,1 +11,4,0,1,3,426223,0,1859.824,7.451061,0,12,1,13.25353,0,0,0,0,13.25353,0,0,0,3,0,2,100,9.967326,0,100,0,0,1,0,.6931472,0,0,0,0,0,0,0,100,7.528775,.6931472,2.584264,1 +11,4,0,1,4,426223,0,1859.824,8.451061,0,12,1,48.61645,1.725596,0,0,0,50.34204,0,0,1,1,2,2,100,9.967326,0,100,0,0,1,0,.6931472,0,0,0,0,0,0,0,100,7.528775,.6931472,3.918841,1 +11,4,0,1,5,426223,0,1859.824,9.451061,0,12,1,40.27748,0,0,63.22445,0,40.27748,0,0,4,3,0,2,100,9.967326,0,100,0,0,1,0,.6931472,0,0,0,0,0,0,0,100,7.528775,.6931472,3.695793,1 +11,4,0,1,1,426224,0,1859.824,25.36893,1,12,1,28.84615,13.58806,27.58097,0,0,70.01518,0,0,0,3,0,2,57.4,3.4,0,84.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,84.1,7.528775,.6931472,4.248712,1 +11,4,0,1,2,426224,0,1859.824,26.36893,1,12,1,9.324009,4.638695,0,0,0,13.9627,0,0,0,1,0,2,57.4,3.4,0,84.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,84.1,7.528775,.6931472,2.63639,1 +11,4,0,1,3,426224,0,1859.824,27.36893,1,12,1,32.92005,12.09919,25.22445,0,0,70.24369,0,0,0,4,0,2,57.4,3.4,0,84.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,84.1,7.528775,.6931472,4.25197,1 +11,4,0,1,4,426224,0,1859.824,28.36893,1,12,1,65.33436,29.09301,0,51.88317,0,94.42736,0,0,5,3,0,2,57.4,3.4,0,84.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,84.1,7.528775,.6931472,4.547831,1 +11,4,0,1,5,426224,0,1859.824,29.36893,1,12,1,17.56235,13.90938,0,94.83667,0,31.47173,0,0,6,1,1,2,57.4,3.4,0,84.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,84.1,7.528775,.6931472,3.44909,1 +7,4,25,1,1,426228,0,9224.047,35.74538,1,15,1,435.6826,7.135497,33.48789,0,0,476.306,0,0,0,5,0,5,92.6,20.7,0,87.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,87.5,9.129678,1.609438,6.16606,1 +7,4,25,1,2,426228,0,9224.047,36.74538,1,15,1,23.67424,11.10322,0,0,37.87879,72.65625,1,1,0,3,0,5,92.6,20.7,0,87.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,87.5,9.129678,1.609438,4.285739,1 +7,4,25,1,3,426228,0,9224.047,37.74538,1,15,1,32.07629,5.587343,26.0078,0,0,63.67144,0,0,0,4,0,5,92.6,20.7,0,87.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,87.5,9.129678,1.609438,4.153736,1 +7,4,25,1,1,426229,0,9224.047,.733744,1,15,1,12.36476,2.184441,0,0,0,14.5492,0,0,0,2,0,5,83.39137,9.967326,0,85.2,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.129678,1.609438,2.677536,1 +7,4,25,1,2,426229,0,9224.047,1.733744,1,15,1,5.681818,5.160985,0,0,0,10.8428,0,0,0,1,0,5,83.39137,9.967326,0,85.2,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.129678,1.609438,2.383502,1 +7,4,25,1,3,426229,0,9224.047,2.733744,1,15,1,5.20156,4.508019,0,0,0,9.709579,0,0,0,1,0,5,83.39137,9.967326,0,85.2,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.129678,1.609438,2.273113,1 +7,4,25,1,1,426230,0,9224.047,8.142368,0,15,1,14.56981,2.339,0,0,0,16.90881,0,0,0,2,0,5,88.3,9.967326,0,92.6,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.129678,1.609438,2.827835,1 +7,4,25,1,2,426230,0,9224.047,9.142368,0,15,1,18.59848,5.492424,0,0,0,24.09091,0,0,0,3,0,5,88.3,9.967326,0,92.6,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.129678,1.609438,3.181835,1 +7,4,25,1,3,426230,0,9224.047,10.14237,0,15,1,6.501951,3.48938,0,0,0,9.991331,0,0,0,1,0,5,88.3,9.967326,0,92.6,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.129678,1.609438,2.301718,1 +7,4,25,1,1,426231,0,9224.047,9.560575,1,15,1,0,0,0,0,0,0,0,0,0,0,0,5,91.7,9.967326,0,85.2,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.129678,1.609438,,0 +7,4,25,1,2,426231,0,9224.047,10.56057,1,15,1,0,0,0,0,0,0,0,0,0,0,0,5,91.7,9.967326,0,85.2,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.129678,1.609438,,0 +7,4,25,1,3,426231,0,9224.047,11.56057,1,15,1,0,3.250975,0,0,0,3.250975,0,0,0,0,0,5,91.7,9.967326,0,85.2,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.129678,1.609438,1.178955,1 +7,4,25,1,1,426232,0,9224.047,35.36482,0,16,1,5.151984,0,0,0,0,5.151984,0,0,0,1,0,5,86.2,3.4,0,72.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,72.7,9.129678,1.609438,1.639382,1 +7,4,25,1,2,426232,0,9224.047,36.36482,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,86.2,3.4,0,72.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,72.7,9.129678,1.609438,,0 +7,4,25,1,3,426232,0,9224.047,37.36482,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,86.2,3.4,0,72.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,72.7,9.129678,1.609438,,0 +13,4,0,1,1,426252,0,12809.38,57.39357,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,84.6,13.8,0,79.5,300,919.44,0,0,.6931472,6.823765,1,4.564348,5.755076,0,0,0,79.5,9.458012,.6931472,,0 +13,4,0,1,2,426252,0,12809.38,58.39357,1,16,1,9.469697,0,0,0,0,9.469697,0,0,0,1,0,2,84.6,13.8,0,79.5,300,919.44,0,0,.6931472,6.823765,1,4.564348,5.755076,0,0,0,79.5,9.458012,.6931472,2.248097,1 +13,4,0,1,3,426252,0,12809.38,59.39357,1,16,1,134.8071,0,0,0,0,134.8071,0,0,0,7,0,2,84.6,13.8,0,79.5,300,919.44,0,0,.6931472,6.823765,1,4.564348,5.755076,0,0,0,79.5,9.458012,.6931472,4.903845,1 +13,4,0,1,1,426253,0,12809.38,58.65298,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,91.5,3.4,0,71.6,300,919.44,0,0,.6931472,6.823765,1,4.564348,5.755076,0,0,0,71.6,9.458012,.6931472,,0 +13,4,0,1,2,426253,0,12809.38,59.65298,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,91.5,3.4,0,71.6,300,919.44,0,0,.6931472,6.823765,1,4.564348,5.755076,0,0,0,71.6,9.458012,.6931472,,0 +13,4,0,1,3,426253,0,12809.38,60.65298,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,91.5,3.4,0,71.6,300,919.44,0,0,.6931472,6.823765,1,4.564348,5.755076,0,0,0,71.6,9.458012,.6931472,,0 +18,4,25,0,1,426258,0,5095.015,2.652977,1,18,1,46.28185,21.86687,0,0,0,68.14873,0,0,0,8,0,4,83.39137,9.967326,0,85.2,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,8.536214,1.386294,4.221693,1 +18,4,25,0,2,426258,0,5095.015,3.652977,1,18,1,13.37793,4.730052,0,0,0,18.10798,0,0,0,2,0,4,83.39137,9.967326,0,85.2,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,8.536214,1.386294,2.896353,1 +18,4,25,0,3,426258,0,5095.015,4.652977,1,18,1,13.53819,4.609306,0,0,0,18.1475,0,0,0,1,0,4,83.39137,9.967326,0,85.2,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,85.2,8.536214,1.386294,2.898533,1 +18,4,25,0,1,426259,0,5095.015,32.04654,0,16,1,42.5221,3.094124,0,0,0,45.61623,0,0,0,1,0,4,50,13.8,1,70.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.5,8.536214,1.386294,3.820263,1 +18,4,25,0,2,426259,0,5095.015,33.04654,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,50,13.8,1,70.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.5,8.536214,1.386294,,0 +18,4,25,0,3,426259,0,5095.015,34.04654,0,16,1,52.62072,1.865672,0,0,0,54.48639,0,0,0,2,0,4,50,13.8,1,70.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.5,8.536214,1.386294,3.997951,1 +18,4,25,0,1,426260,0,5095.015,32.22177,1,18,1,58.34633,6.110244,21.84087,0,0,86.29745,0,0,0,5,0,4,71.8,13.8,0,76.1,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,76.1,8.536214,1.386294,4.4578,1 +18,4,25,0,2,426260,0,5095.015,33.22177,1,18,1,0,8.241758,0,0,626.8896,635.1314,1,0,0,0,0,4,71.8,13.8,0,76.1,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,76.1,8.536214,1.386294,6.453832,1 +18,4,25,0,3,426260,0,5095.015,34.22177,1,18,1,22.82704,0,13.16945,0,0,35.99649,0,0,0,2,0,4,71.8,13.8,0,76.1,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,76.1,8.536214,1.386294,3.583421,1 +18,4,25,0,1,426261,0,5095.015,5.256673,0,18,1,6.760271,4.914196,0,0,0,11.67447,0,0,0,1,0,4,83.3,9.967326,0,88.9,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.536214,1.386294,2.457404,1 +18,4,25,0,2,426261,0,5095.015,6.256673,0,18,1,0,5.685619,0,0,0,5.685619,0,0,0,0,0,4,83.3,9.967326,0,88.9,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.536214,1.386294,1.73794,1 +18,4,25,0,3,426261,0,5095.015,7.256673,0,18,1,24.36348,0,0,0,0,24.36348,0,0,0,2,0,4,83.3,9.967326,0,88.9,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.536214,1.386294,3.193085,1 +10,4,50,1,1,426282,0,2951.32,33.10883,1,16,1,20.60793,5.074704,0,0,0,25.68264,0,0,0,2,0,1,72.9,13.8,0,83,765,765,0,0,0,6.639876,0,3.931826,7.333023,1,0,0,83,7.990346,0,3.245815,1 +10,4,50,1,2,426282,0,2951.32,34.10883,1,16,1,24.62121,19.17614,0,0,0,43.79735,0,0,0,3,0,1,72.9,13.8,0,83,765,765,0,0,0,6.639876,0,3.931826,7.333023,1,0,0,83,7.990346,0,3.779573,1 +10,4,50,1,3,426282,0,2951.32,35.10883,1,16,1,8.669268,21.71651,0,0,0,30.38578,0,0,0,1,0,1,72.9,13.8,0,83,765,765,0,0,0,6.639876,0,3.931826,7.333023,1,0,0,83,7.990346,0,3.413975,1 +14,4,95,1,1,426357,0,7591.789,52.86242,1,14,1,10.30397,11.84956,0,0,0,22.15353,0,0,0,1,0,2,47.9,17.2,1,76.1,687.5,687.5,0,0,.6931472,6.533062,0,4.564348,6.584355,0,0,0,76.1,8.934955,.6931472,3.097997,1 +14,4,95,1,2,426357,0,7591.789,53.86242,1,14,1,5.681818,0,0,0,0,5.681818,0,0,0,1,0,2,47.9,17.2,1,76.1,687.5,687.5,0,0,.6931472,6.533062,0,4.564348,6.584355,0,0,0,76.1,8.934955,.6931472,1.737271,1 +14,4,95,1,3,426357,0,7591.789,54.86242,1,14,1,138.4915,15.73472,0,0,0,154.2263,0,0,0,8,0,2,47.9,17.2,1,76.1,687.5,687.5,0,0,.6931472,6.533062,0,4.564348,6.584355,0,0,0,76.1,8.934955,.6931472,5.038421,1 +14,4,95,1,4,426357,0,7591.789,55.86242,1,14,1,99.25167,48.68846,12.99724,0,0,160.9374,0,0,0,10,1,2,47.9,17.2,1,76.1,687.5,687.5,0,0,.6931472,6.533062,0,4.564348,6.584355,0,0,0,76.1,8.934955,.6931472,5.081015,1 +14,4,95,1,5,426357,0,7591.789,56.86242,1,14,1,20.03578,55.22719,0,0,0,75.26297,0,0,0,3,2,2,47.9,17.2,1,76.1,687.5,687.5,0,0,.6931472,6.533062,0,4.564348,6.584355,0,0,0,76.1,8.934955,.6931472,4.320988,1 +14,4,95,1,1,426358,0,7591.789,51.59206,0,16,1,58.73261,34.13189,0,0,0,92.8645,0,0,0,3,0,2,51.6,20.7,1,60.2,687.5,687.5,0,0,.6931472,6.533062,0,4.564348,6.584355,1,0,0,60.2,8.934955,.6931472,4.531141,1 +14,4,95,1,2,426358,0,7591.789,52.59206,0,16,1,9.469697,2.012311,0,0,0,11.48201,0,0,0,1,0,2,51.6,20.7,1,60.2,687.5,687.5,0,0,.6931472,6.533062,0,4.564348,6.584355,1,0,0,60.2,8.934955,.6931472,2.440781,1 +14,4,95,1,3,426358,0,7591.789,53.59206,0,16,1,49.63156,0,0,0,0,49.63156,0,0,0,1,0,2,51.6,20.7,1,60.2,687.5,687.5,0,0,.6931472,6.533062,0,4.564348,6.584355,1,0,0,60.2,8.934955,.6931472,3.904627,1 +14,4,95,1,4,426358,0,7591.789,54.59206,0,16,1,54.62781,4.805041,18.51122,0,0,77.94407,0,0,0,3,1,2,51.6,20.7,1,60.2,687.5,687.5,0,0,.6931472,6.533062,0,4.564348,6.584355,1,0,0,60.2,8.934955,.6931472,4.355991,1 +14,4,95,1,5,426358,0,7591.789,55.59206,0,16,1,2.862254,2.826476,0,0,0,5.68873,0,0,0,1,0,2,51.6,20.7,1,60.2,687.5,687.5,0,0,.6931472,6.533062,0,4.564348,6.584355,1,0,0,60.2,8.934955,.6931472,1.738487,1 +11,4,0,1,1,426359,0,10963.64,48.84052,0,17,1,75.39262,0,0,0,0,75.39262,0,0,0,4,0,3,83.5,6.9,0,92,0,443.28,0,0,1.098612,6.094202,0,0,0,0,0,0,92,9.30243,1.098612,4.32271,1 +11,4,0,1,2,426359,0,10963.64,49.84052,0,17,1,9.555662,0,37.26708,0,0,46.82274,0,0,0,0,1,3,83.5,6.9,0,92,0,443.28,0,0,1.098612,6.094202,0,0,0,0,0,0,92,9.30243,1.098612,3.846369,1 +11,4,0,1,3,426359,0,10963.64,50.84052,0,17,1,0,0,0,0,0,0,0,0,0,0,0,3,83.5,6.9,0,92,0,443.28,0,0,1.098612,6.094202,0,0,0,0,0,0,92,9.30243,1.098612,,0 +11,4,0,1,1,426360,0,10963.64,50.19849,1,16,1,167.8887,0,31.20125,0,0,199.09,0,0,0,2,0,3,74.5,27.6,0,71.6,0,443.28,0,0,1.098612,6.094202,0,0,0,0,0,0,71.6,9.30243,1.098612,5.293757,1 +11,4,0,1,2,426360,0,10963.64,51.19849,1,16,1,62.70903,0,0,0,0,62.70903,0,0,0,3,0,3,74.5,27.6,0,71.6,0,443.28,0,0,1.098612,6.094202,0,0,0,0,0,0,71.6,9.30243,1.098612,4.138505,1 +11,4,0,1,3,426360,0,10963.64,52.19849,1,16,1,129.2801,41.18086,32.92362,0,645.2239,848.6084,1,0,0,13,1,3,74.5,27.6,0,71.6,0,443.28,0,0,1.098612,6.094202,0,0,0,0,0,0,71.6,9.30243,1.098612,6.743598,1 +11,4,0,1,1,426361,0,10963.64,16.29569,0,16,1,0,1.976079,0,0,0,1.976079,0,0,0,0,0,3,78.7,6.9,0,79.5,0,443.28,1,0,1.098612,6.094202,0,0,0,0,0,0,79.5,9.30243,1.098612,.6811146,1 +11,4,0,1,2,426361,0,10963.64,17.29569,0,16,1,9.555662,0,0,0,0,9.555662,0,0,0,0,1,3,78.7,6.9,0,79.5,0,443.28,1,0,1.098612,6.094202,0,0,0,0,0,0,79.5,9.30243,1.098612,2.257134,1 +11,4,0,1,3,426361,0,10963.64,18.29569,0,16,1,9.218613,0,0,0,0,9.218613,0,0,0,1,0,3,78.7,6.9,0,79.5,0,443.28,0,0,1.098612,6.094202,0,0,0,0,0,0,79.5,9.30243,1.098612,2.221225,1 +10,4,50,1,1,426362,0,11704.4,35.89322,0,12,1,10.30397,0,0,0,0,10.30397,0,0,0,0,2,5,100,6.9,0,88.6,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,88.6,9.367805,1.609438,2.332529,1 +10,4,50,1,2,426362,0,11704.4,36.89322,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,100,6.9,0,88.6,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,88.6,9.367805,1.609438,,0 +10,4,50,1,3,426362,0,11704.4,37.89322,0,12,1,10.40312,6.415258,0,0,0,16.81838,0,0,0,0,2,5,100,6.9,0,88.6,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,88.6,9.367805,1.609438,2.822472,1 +10,4,50,1,1,426363,0,11704.4,10.65571,0,12,1,5.151984,2.575992,0,0,0,7.727975,0,0,0,1,0,5,91.7,9.967326,0,77.8,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,77.8,9.367805,1.609438,2.044847,1 +10,4,50,1,2,426363,0,11704.4,11.65571,0,12,1,26.04167,0,0,0,0,26.04167,0,0,0,1,0,5,91.7,9.967326,0,77.8,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,77.8,9.367805,1.609438,3.259698,1 +10,4,50,1,3,426363,0,11704.4,12.65571,0,12,1,10.40312,3.420026,0,0,0,13.82315,0,0,0,2,0,5,91.7,9.967326,0,77.8,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,77.8,9.367805,1.609438,2.626344,1 +10,4,50,1,1,426364,0,11704.4,9.357974,1,12,1,6.18238,0,0,0,0,6.18238,0,0,0,1,0,5,83.3,9.967326,0,92.6,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.367805,1.609438,1.821703,1 +10,4,50,1,2,426364,0,11704.4,10.35797,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83.3,9.967326,0,92.6,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.367805,1.609438,,0 +10,4,50,1,3,426364,0,11704.4,11.35797,1,12,1,360.0173,73.355,0,0,329.1157,762.4881,2,0,0,28,0,5,83.3,9.967326,0,92.6,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.367805,1.609438,6.636587,1 +10,4,50,1,1,426365,0,11704.4,30.73785,1,12,1,0,.643998,0,0,0,.643998,0,0,0,0,0,5,90.4,6.9,0,77.3,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,77.3,9.367805,1.609438,-.4400597,1 +10,4,50,1,2,426365,0,11704.4,31.73785,1,12,1,33.73579,0,0,0,0,33.73579,0,0,0,1,0,5,90.4,6.9,0,77.3,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,77.3,9.367805,1.609438,3.518559,1 +10,4,50,1,3,426365,0,11704.4,32.73785,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,90.4,6.9,0,77.3,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,77.3,9.367805,1.609438,,0 +10,4,50,1,1,426366,0,11704.4,3.77002,0,12,1,12.36476,3.967027,0,0,0,16.33179,0,0,0,2,0,5,83.39137,9.967326,0,92.6,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.367805,1.609438,2.793113,1 +10,4,50,1,2,426366,0,11704.4,4.77002,0,12,1,19.88636,0,0,0,0,19.88636,0,0,0,3,0,5,83.39137,9.967326,0,92.6,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.367805,1.609438,2.990034,1 +10,4,50,1,3,426366,0,11704.4,5.77002,0,12,1,5.20156,0,0,0,0,5.20156,0,0,0,1,0,5,83.39137,9.967326,0,92.6,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.367805,1.609438,1.648959,1 +13,4,0,1,1,426405,0,12723.75,37.37714,0,12,1,15.97115,0,44.30706,0,0,60.27821,0,0,0,0,1,4,90.4,10.3,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.451304,1.386294,4.09897,1 +13,4,0,1,2,426405,0,12723.75,38.37714,0,12,1,95.17046,16.99811,0,0,0,112.1686,0,0,0,3,0,4,90.4,10.3,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.451304,1.386294,4.720003,1 +13,4,0,1,3,426405,0,12723.75,39.37714,0,12,1,65.77807,4.594712,39.87863,140.8756,0,110.2514,0,0,8,4,1,4,90.4,10.3,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.451304,1.386294,4.702763,1 +13,4,0,1,4,426405,0,12723.75,40.37714,0,12,1,13.78496,1.543915,35.44703,0,0,50.77589,0,0,0,1,0,4,90.4,10.3,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.451304,1.386294,3.927422,1 +13,4,0,1,5,426405,0,12723.75,41.37714,0,12,1,61.44902,2.640429,40.07156,0,0,104.161,0,0,0,3,1,4,90.4,10.3,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.451304,1.386294,4.645938,1 +13,4,0,1,1,426406,0,12723.75,35.9425,1,13,1,36.68212,58.83565,0,0,0,95.51778,0,0,0,6,0,4,75.5,17.2,0,61.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,61.4,9.451304,1.386294,4.559312,1 +13,4,0,1,2,426406,0,12723.75,36.9425,1,13,1,28.88258,43.46591,0,0,0,72.34849,0,0,0,4,0,4,75.5,17.2,0,61.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,61.4,9.451304,1.386294,4.281495,1 +13,4,0,1,3,426406,0,12723.75,37.9425,1,13,1,43.56307,39.33247,25.57434,21.67317,0,108.4699,0,0,2,4,1,4,75.5,17.2,0,61.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,61.4,9.451304,1.386294,4.686472,1 +13,4,0,1,4,426406,0,12723.75,38.9425,1,13,1,69.98818,26.79795,7.081528,35.44703,0,103.8677,0,0,2,4,0,4,75.5,17.2,0,61.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,61.4,9.451304,1.386294,4.643118,1 +13,4,0,1,5,426406,0,12723.75,39.9425,1,13,1,50.80501,17.54562,11.44902,0,1260.59,1340.39,1,0,0,4,0,4,75.5,17.2,0,61.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,61.4,9.451304,1.386294,7.200716,1 +13,4,0,1,1,426407,0,12723.75,15.90144,1,13,1,20.50489,0,18.26378,0,0,38.76868,0,0,0,0,1,4,71.8,6.9,0,73.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.451304,1.386294,3.657613,1 +13,4,0,1,2,426407,0,12723.75,16.90144,1,13,1,9.469697,0,41.66667,0,0,51.13636,0,0,0,0,1,4,71.8,6.9,0,73.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.451304,1.386294,3.934496,1 +13,4,0,1,3,426407,0,12723.75,17.90144,1,13,1,21.67317,0,17.772,0,0,39.44517,0,0,0,1,1,4,71.8,6.9,0,73.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.451304,1.386294,3.674911,1 +13,4,0,1,4,426407,0,12723.75,18.90144,1,13,1,6.301693,6.478929,0,0,0,12.78062,0,0,0,1,0,4,71.8,6.9,0,73.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.451304,1.386294,2.54793,1 +13,4,0,1,5,426407,0,12723.75,19.90144,1,13,1,28.98032,37.92487,248.6583,0,0,315.5635,0,0,0,1,1,4,71.8,6.9,0,73.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.451304,1.386294,5.75436,1 +13,4,0,1,1,426408,0,12723.75,12.62697,1,13,1,5.151984,6.852138,0,0,0,12.00412,0,0,0,1,0,4,70,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.451304,1.386294,2.48525,1 +13,4,0,1,2,426408,0,12723.75,13.62697,1,13,1,7.102273,0,5.681818,0,0,12.78409,0,0,0,0,1,4,70,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.451304,1.386294,2.548202,1 +13,4,0,1,3,426408,0,12723.75,14.62697,1,13,1,8.669268,0,25.57434,0,0,34.24361,0,0,0,0,1,4,70,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.451304,1.386294,3.5335,1 +13,4,0,1,4,426408,0,12723.75,15.62697,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,70,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.451304,1.386294,,0 +13,4,0,1,5,426408,0,12723.75,16.62697,1,13,1,59.39177,13.50626,21.46691,0,0,94.36494,0,0,0,5,1,4,70,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.451304,1.386294,4.54717,1 +11,4,0,1,1,426418,0,1344.868,24.56947,0,12,1,62.01248,4.368175,40.0416,0,0,106.4223,0,0,0,2,3,1,82.4,10.3,0,59.1,0,0,0,0,0,0,0,0,0,1,0,0,59.1,7.204794,0,4.667415,1 +11,4,0,1,2,426418,0,1344.868,25.56947,0,12,1,55.90062,0,0,0,275.5614,331.462,1,0,0,3,1,1,82.4,10.3,0,59.1,0,0,0,0,0,0,0,0,0,1,0,0,59.1,7.204794,0,5.803513,1 +11,4,0,1,3,426418,0,1344.868,26.56947,0,12,1,123.7928,18.59087,30.28973,0,0,172.6734,0,0,0,6,1,1,82.4,10.3,0,59.1,0,0,0,0,0,0,0,0,0,1,0,0,59.1,7.204794,0,5.151402,1 +13,4,0,0,1,426420,0,16754.25,34.62286,1,12,1,460.3967,9.27357,0,0,0,469.6703,0,0,0,6,0,2,80.9,17.2,0,67,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,67,9.726467,.6931472,6.152031,1 +13,4,0,0,2,426420,0,16754.25,35.62286,1,12,1,105.9612,0,0,0,0,105.9612,0,0,0,3,0,2,80.9,17.2,0,67,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,67,9.726467,.6931472,4.663073,1 +13,4,0,0,3,426420,0,16754.25,36.62286,1,12,1,39.48851,11.24837,0,0,0,50.73689,0,0,0,0,0,2,80.9,17.2,0,67,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,67,9.726467,.6931472,3.926653,1 +13,4,0,0,1,426421,0,16754.25,37.51951,0,13,1,64.3998,4.765585,0,0,0,69.16538,0,0,0,2,0,2,80.9,6.9,0,84.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,84.1,9.726467,.6931472,4.2365,1 +13,4,0,0,2,426421,0,16754.25,38.51951,0,13,1,0,3.669508,0,0,0,3.669508,0,0,0,0,0,2,80.9,6.9,0,84.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,84.1,9.726467,.6931472,1.300057,1 +13,4,0,0,3,426421,0,16754.25,39.51951,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,80.9,6.9,0,84.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,84.1,9.726467,.6931472,,0 +11,4,0,1,1,426440,0,8393.549,60.94182,1,14,1,113.0551,215.5332,0,260.1752,428.6708,757.2592,1,0,20,4,0,1,66,17.2,1,39.8,0,126,0,0,0,4.836282,0,0,0,1,0,0,39.8,9.035337,0,6.629705,1 +11,4,0,1,2,426440,0,8393.549,61.94182,1,14,1,198.982,187.8267,41.66667,227.2727,0,428.4754,0,0,19,7,1,1,66,17.2,1,39.8,0,126,0,0,0,4.836282,0,0,0,1,0,0,39.8,9.035337,0,6.060233,1 +11,4,0,1,3,426440,0,8393.549,62.94182,1,14,1,130.039,149.1461,26.0078,171.218,0,305.1929,0,0,14,6,1,1,66,17.2,1,39.8,0,126,0,0,0,4.836282,0,0,0,1,0,0,39.8,9.035337,0,5.720944,1 +11,4,0,1,1,426441,0,8025.807,6.858316,0,16,1,38.71458,0,0,0,0,38.71458,0,0,0,2,0,5,100,9.967326,0,88.9,0,0,1,0,1.609438,0,0,0,0,1,0,0,88.9,8.990542,1.609438,3.656216,1 +11,4,0,1,2,426441,0,8025.807,7.858316,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,100,9.967326,0,88.9,0,0,1,0,1.609438,0,0,0,0,1,0,0,88.9,8.990542,1.609438,,0 +11,4,0,1,3,426441,0,8025.807,8.858316,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,100,9.967326,0,88.9,0,0,1,0,1.609438,0,0,0,0,1,0,0,88.9,8.990542,1.609438,,0 +11,4,0,1,4,426441,0,8025.807,9.858316,0,16,1,3.843198,.9607994,0,0,0,4.803997,0,0,0,1,0,5,100,9.967326,0,88.9,0,0,1,0,1.609438,0,0,0,0,1,0,0,88.9,8.990542,1.609438,1.569448,1 +11,4,0,1,5,426441,0,8025.807,10.85832,0,16,1,44.60836,3.477345,4.783983,0,0,52.86969,0,0,0,6,0,5,100,9.967326,0,88.9,0,0,1,0,1.609438,0,0,0,0,1,0,0,88.9,8.990542,1.609438,3.96783,1 +11,4,0,1,1,426442,0,8025.807,15.17865,1,16,1,140.9413,24.55466,12.14575,0,0,177.6417,0,0,0,11,1,5,91,6.9,0,65.9,0,0,1,1,1.609438,0,0,0,0,1,0,0,65.9,8.990542,1.609438,5.179769,1 +11,4,0,1,2,426442,0,8025.807,16.17864,1,16,1,56.87646,44.80653,0,0,0,101.683,0,0,0,10,0,5,91,6.9,0,65.9,0,0,1,1,1.609438,0,0,0,0,1,0,0,65.9,8.990542,1.609438,4.62186,1 +11,4,0,1,3,426442,0,8025.807,17.17864,1,16,1,97.32792,37.83668,25.22445,0,0,160.3891,0,0,0,10,1,5,91,6.9,0,65.9,0,0,1,1,1.609438,0,0,0,0,1,0,0,65.9,8.990542,1.609438,5.077602,1 +11,4,0,1,4,426442,0,8025.807,18.17864,1,16,1,49.30822,48.83936,0,0,0,98.14758,0,0,0,5,0,5,91,6.9,0,65.9,0,0,0,0,1.609438,0,0,0,0,1,0,0,65.9,8.990542,1.609438,4.586472,1 +11,4,0,1,5,426442,0,8025.807,19.17864,1,16,1,75.34247,65.1844,5.261679,0,0,145.7885,0,0,0,4,0,5,91,6.9,0,65.9,0,0,0,0,1.609438,0,0,0,0,1,0,0,65.9,8.990542,1.609438,4.982157,1 +11,4,0,1,1,426443,0,8025.807,39.42779,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,89.4,6.9,0,75,0,0,0,0,1.609438,0,0,0,0,0,0,0,75,8.990542,1.609438,,0 +11,4,0,1,2,426443,0,8025.807,40.42779,1,16,1,11.18881,2.540792,0,0,0,13.7296,0,0,0,2,0,5,89.4,6.9,0,75,0,0,0,0,1.609438,0,0,0,0,0,0,0,75,8.990542,1.609438,2.619554,1 +11,4,0,1,3,426443,0,8025.807,41.42779,1,16,1,6.412997,0,0,0,0,6.412997,0,0,0,1,0,5,89.4,6.9,0,75,0,0,0,0,1.609438,0,0,0,0,0,0,0,75,8.990542,1.609438,1.858327,1 +11,4,0,1,4,426443,0,8025.807,42.42779,1,16,1,14.21983,0,21.13759,0,0,35.35742,0,0,0,2,0,5,89.4,6.9,0,75,0,0,0,0,1.609438,0,0,0,0,0,0,0,75,8.990542,1.609438,3.565508,1 +11,4,0,1,5,426443,0,8025.807,43.42779,1,16,1,11.01159,2.103969,0,0,0,13.11556,0,0,0,0,0,5,89.4,6.9,0,75,0,0,0,0,1.609438,0,0,0,0,0,0,0,75,8.990542,1.609438,2.573799,1 +11,4,0,1,1,426444,0,8025.807,41.12799,0,15,1,66.15385,0,21.25506,0,0,87.40891,0,0,0,2,1,5,91,3.4,0,90.9,0,0,0,0,1.609438,0,0,0,0,1,0,0,90.9,8.990542,1.609438,4.470597,1 +11,4,0,1,2,426444,0,8025.807,42.12799,0,15,1,46.85315,0,0,0,0,46.85315,0,0,0,2,0,5,91,3.4,0,90.9,0,0,0,0,1.609438,0,0,0,0,1,0,0,90.9,8.990542,1.609438,3.847018,1 +11,4,0,1,3,426444,0,8025.807,43.12799,0,15,1,47.86234,6.361693,25.22445,0,0,79.44848,0,0,0,3,1,5,91,3.4,0,90.9,0,0,0,0,1.609438,0,0,0,0,1,0,0,90.9,8.990542,1.609438,4.375109,1 +11,4,0,1,4,426444,0,8025.807,44.12799,0,15,1,9.607994,0,21.13759,0,2462.087,2492.833,1,0,0,0,1,5,91,3.4,0,90.9,0,0,0,0,1.609438,0,0,0,0,1,0,0,90.9,8.990542,1.609438,7.821175,1 +11,4,0,1,5,426444,0,8025.807,45.12799,0,15,1,100.8079,0,5.261679,0,0,106.0695,0,0,0,6,0,5,91,3.4,0,90.9,0,0,0,0,1.609438,0,0,0,0,1,0,0,90.9,8.990542,1.609438,4.664095,1 +11,4,0,1,1,426445,0,8025.807,13.70842,1,16,1,48.20344,1.821862,0,0,0,50.0253,0,0,0,3,0,5,96.7,9.967326,0,95.1,0,0,1,1,1.609438,0,0,0,0,1,0,0,95.1,8.990542,1.609438,3.912529,1 +11,4,0,1,2,426445,0,8025.807,14.70842,1,16,1,77.50583,0,1.864802,0,0,79.37063,0,0,0,3,0,5,96.7,9.967326,0,95.1,0,0,1,1,1.609438,0,0,0,0,1,0,0,95.1,8.990542,1.609438,4.374128,1 +11,4,0,1,3,426445,0,8025.807,15.70842,1,16,1,69.6879,40.50877,0,0,0,110.1967,0,0,0,10,0,5,96.7,9.967326,0,95.1,0,0,1,1,1.609438,0,0,0,0,1,0,0,95.1,8.990542,1.609438,4.702267,1 +11,4,0,1,4,426445,0,8025.807,16.70842,1,16,1,69.42736,19.21599,0,0,0,88.64335,0,0,0,6,0,5,96.7,9.967326,0,95.1,0,0,1,1,1.609438,0,0,0,0,1,0,0,95.1,8.990542,1.609438,4.484621,1 +11,4,0,1,5,426445,0,8025.807,17.70842,1,16,1,121.8827,68.96382,0,0,0,190.8465,0,0,0,10,1,5,96.7,9.967326,0,95.1,0,0,1,1,1.609438,0,0,0,0,1,0,0,95.1,8.990542,1.609438,5.25147,1 +13,4,0,1,1,426473,0,9412.316,1.629021,1,13,1,29.35223,0,0,0,0,29.35223,0,0,0,1,4,4,83.39137,9.967326,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,81.5,9.14988,1.386294,3.379368,1 +13,4,0,1,2,426473,0,9412.316,2.629021,1,13,1,54.62471,4.214452,0,0,0,58.83916,0,0,0,4,2,4,83.39137,9.967326,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,81.5,9.14988,1.386294,4.074808,1 +13,4,0,1,3,426473,0,9412.316,3.629021,1,13,1,14.96366,2.116289,10.68833,0,0,27.76828,0,0,0,0,3,4,83.39137,9.967326,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,81.5,9.14988,1.386294,3.323894,1 +13,4,0,1,1,426474,0,9412.316,7.526352,1,13,1,28.34008,18.42105,0,0,0,46.76114,0,0,0,6,0,4,81.7,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.14988,1.386294,3.845052,1 +13,4,0,1,2,426474,0,9412.316,8.526352,1,13,1,11.65501,2.358974,26.10723,0,0,40.12121,0,0,0,1,0,4,81.7,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.14988,1.386294,3.691905,1 +13,4,0,1,3,426474,0,9412.316,9.526352,1,13,1,5.130398,2.885849,0,0,0,8.016246,0,0,0,1,0,4,81.7,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.14988,1.386294,2.08147,1 +13,4,0,1,1,426475,0,9412.316,27.52088,0,12,1,39.47368,24.48887,0,0,0,63.96255,0,0,0,4,0,4,86.7,3.4,0,86.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,86.4,9.14988,1.386294,4.158298,1 +13,4,0,1,2,426475,0,9412.316,28.52088,0,12,1,45.17949,3.310023,3.496504,0,0,51.98602,0,0,0,4,0,4,86.7,3.4,0,86.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,86.4,9.14988,1.386294,3.950975,1 +13,4,0,1,3,426475,0,9412.316,29.52088,0,12,1,12.61223,6.348867,0,0,0,18.96109,0,0,0,1,0,4,86.7,3.4,0,86.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,86.4,9.14988,1.386294,2.942389,1 +13,4,0,1,1,426476,0,9412.316,27.4935,1,13,1,23.6083,17.49494,0,0,0,41.10324,0,0,0,1,0,4,69.1,3.4,0,79.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.14988,1.386294,3.716087,1 +13,4,0,1,2,426476,0,9412.316,28.4935,1,13,1,23.31002,20.52214,29.37063,0,0,73.2028,0,0,0,2,1,4,69.1,3.4,0,79.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.14988,1.386294,4.293233,1 +13,4,0,1,3,426476,0,9412.316,29.4935,1,13,1,130.9064,41.54767,0,0,1347.978,1520.432,1,0,0,7,1,4,69.1,3.4,0,79.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,79.5,9.14988,1.386294,7.32675,1 +11,4,0,1,1,426479,0,11625.81,30.59548,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,72.9,10.3,1,56.8,0,126,0,0,.6931472,4.836282,0,0,0,0,0,0,56.8,9.361069,.6931472,,0 +11,4,0,1,2,426479,0,11625.81,31.59548,0,16,1,9.555662,0,0,0,0,9.555662,0,0,0,0,1,2,72.9,10.3,1,56.8,0,126,0,0,.6931472,4.836282,0,0,0,0,0,0,56.8,9.361069,.6931472,2.257134,1 +11,4,0,1,3,426479,0,11625.81,32.59548,0,16,1,10.97454,0,30.72871,0,0,41.70325,0,0,0,0,1,2,72.9,10.3,1,56.8,0,126,0,0,.6931472,4.836282,0,0,0,0,0,0,56.8,9.361069,.6931472,3.730579,1 +11,4,0,1,4,426479,0,11625.81,33.59548,0,16,1,100.347,3.570004,0,0,0,103.917,0,0,0,2,0,2,72.9,10.3,1,56.8,0,126,0,0,.6931472,4.836282,0,0,0,0,0,0,56.8,9.361069,.6931472,4.643593,1 +11,4,0,1,5,426479,0,11625.81,34.59548,0,16,1,226.9761,0,22.11748,0,0,249.0936,0,0,0,4,1,2,72.9,10.3,1,56.8,0,126,0,0,.6931472,4.836282,0,0,0,0,0,0,56.8,9.361069,.6931472,5.517828,1 +11,4,0,1,1,426480,0,11625.81,28.14784,1,14,1,43.88976,15.31461,20.80083,0,0,80.0052,0,0,0,1,0,2,64.9,13.8,0,81.8,0,126,0,0,.6931472,4.836282,0,0,0,0,0,0,81.8,9.361069,.6931472,4.382092,1 +11,4,0,1,2,426480,0,11625.81,29.14784,1,14,1,9.555662,0,31.53368,0,0,41.08934,0,0,0,0,1,2,64.9,13.8,0,81.8,0,126,0,0,.6931472,4.836282,0,0,0,0,0,0,81.8,9.361069,.6931472,3.715749,1 +11,4,0,1,3,426480,0,11625.81,30.14784,1,14,1,26.77788,3.599649,0,856.014,0,30.37752,0,0,39,1,0,2,64.9,13.8,0,81.8,0,126,0,0,.6931472,4.836282,0,0,0,0,0,0,81.8,9.361069,.6931472,3.413703,1 +11,4,0,1,4,426480,0,11625.81,31.14784,1,14,1,68.20901,0,5.584364,566.4141,0,73.79338,0,0,29,1,1,2,64.9,13.8,0,81.8,0,126,0,0,.6931472,4.836282,0,0,0,0,0,0,81.8,9.361069,.6931472,4.301269,1 +11,4,0,1,5,426480,0,11625.81,32.14784,1,14,1,46.29441,5.989848,0,0,0,52.28426,0,0,0,1,0,2,64.9,13.8,0,81.8,0,126,0,0,.6931472,4.836282,0,0,0,0,0,0,81.8,9.361069,.6931472,3.956696,1 +11,4,0,1,1,426492,0,4175.953,54.42574,1,9,1,88.10922,81.5662,43.64245,0,495.7238,709.0417,1,0,0,8,0,1,71.3,13.8,0,60.2,0,0,0,0,0,0,0,0,0,1,0,0,60.2,8.337337,0,6.563914,1 +11,4,0,1,2,426492,0,4175.953,55.42574,1,9,1,80.49242,103.8684,103.4612,0,0,287.822,0,0,0,6,1,1,71.3,13.8,0,60.2,0,0,0,0,0,0,0,0,0,1,0,0,60.2,8.337337,0,5.662342,1 +11,4,0,1,3,426492,0,4175.953,56.42574,1,9,1,173.9705,128.3962,54.75509,0,0,357.1218,0,0,0,17,1,1,71.3,13.8,0,60.2,0,0,0,0,0,0,0,0,0,1,0,0,60.2,8.337337,0,5.878077,1 +10,4,50,0,1,426493,0,15394.13,48.13689,0,19,1,11.84956,6.903658,17.51674,0,0,36.26996,0,0,0,0,0,4,80.9,10.3,0,63.6,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,63.6,9.641807,1.386294,3.59099,1 +10,4,50,0,2,426493,0,15394.13,49.13689,0,19,1,82.51421,0,0,0,596.1411,678.6553,1,0,0,4,0,4,80.9,10.3,0,63.6,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,63.6,9.641807,1.386294,6.520113,1 +10,4,50,0,3,426493,0,15394.13,50.13689,0,19,1,78.13177,0,0,0,0,78.13177,0,0,0,3,0,4,80.9,10.3,0,63.6,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,63.6,9.641807,1.386294,4.358397,1 +10,4,50,0,1,426494,0,15394.13,42.55168,1,16,1,75.14684,4.770737,35.03349,0,0,114.9511,0,0,0,8,0,4,63.3,10.3,1,48.9,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,48.9,9.641807,1.386294,4.744506,1 +10,4,50,0,2,426494,0,15394.13,43.55168,1,16,1,55.85227,20.43561,0,0,0,76.28788,0,0,0,4,0,4,63.3,10.3,1,48.9,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,48.9,9.641807,1.386294,4.334514,1 +10,4,50,0,3,426494,0,15394.13,44.55168,1,16,1,73.81881,31.96792,0,0,0,105.7867,0,0,0,4,0,4,63.3,10.3,1,48.9,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,48.9,9.641807,1.386294,4.661425,1 +10,4,50,0,1,426495,0,15394.13,7.00616,0,16,1,6.841834,2.833591,0,0,0,9.675425,0,0,0,1,0,4,71.7,9.967326,0,77.8,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,77.8,9.641807,1.386294,2.269589,1 +10,4,50,0,2,426495,0,15394.13,8.00616,0,16,1,91.14584,0,0,0,0,91.14584,0,0,0,3,1,4,71.7,9.967326,0,77.8,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,77.8,9.641807,1.386294,4.512461,1 +10,4,50,0,3,426495,0,15394.13,9.00616,0,16,1,7.195492,3.359341,0,0,0,10.55483,0,0,0,1,0,4,71.7,9.967326,0,77.8,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,77.8,9.641807,1.386294,2.356584,1 +10,4,50,0,1,426496,0,15394.13,16.81862,0,16,1,65.68779,6.620299,55.64142,0,0,127.9495,0,0,0,2,0,4,81.4,10.3,0,54.8,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,54.8,9.641807,1.386294,4.851636,1 +10,4,50,0,2,426496,0,15394.13,17.81862,0,16,1,8.285985,3.551136,0,0,30.77652,42.61364,1,0,0,0,0,4,81.4,10.3,0,54.8,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,54.8,9.641807,1.386294,3.752174,1 +10,4,50,0,3,426496,0,15394.13,18.81862,0,16,1,0,1.798873,0,0,0,1.798873,0,0,0,0,0,4,81.4,10.3,0,54.8,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,54.8,9.641807,1.386294,.5871603,1 +11,4,0,1,1,426516,0,1509.091,23.03901,1,14,1,18.20073,0,0,0,0,18.20073,0,0,0,1,0,1,93.1,3.4,0,72.7,0,0,0,0,0,0,0,0,0,0,0,0,72.7,7.319925,0,2.901462,1 +11,4,0,1,2,426516,0,1509.091,24.03901,1,14,1,46.10607,11.9398,0,0,0,58.04587,0,0,0,3,0,1,93.1,3.4,0,72.7,0,0,0,0,0,0,0,0,0,0,0,0,72.7,7.319925,0,4.061234,1 +11,4,0,1,3,426516,0,1509.091,25.03901,1,14,1,16.24232,14.3547,0,0,631.7823,662.3793,1,0,0,0,0,1,93.1,3.4,0,72.7,0,0,0,0,0,0,0,0,0,0,0,0,72.7,7.319925,0,6.495838,1 +13,4,0,0,1,426519,0,12406.45,28.69541,0,18,1,158.8355,0,0,14.04494,0,158.8355,0,0,1,1,1,2,72.3,10.3,0,87.5,300,647.16,0,0,.6931472,6.472594,1,4.564348,5.755076,0,0,0,87.5,9.426052,.6931472,5.067869,1 +13,4,0,0,2,426519,0,12406.45,29.69541,0,18,1,0,0,0,0,0,0,0,0,0,0,0,2,72.3,10.3,0,87.5,300,647.16,0,0,.6931472,6.472594,1,4.564348,5.755076,0,0,0,87.5,9.426052,.6931472,,0 +13,4,0,0,3,426519,0,12406.45,30.69541,0,18,1,119.4755,0,0,481.5133,0,119.4755,0,0,30,2,0,2,72.3,10.3,0,87.5,300,647.16,0,0,.6931472,6.472594,1,4.564348,5.755076,0,0,0,87.5,9.426052,.6931472,4.783111,1 +13,4,0,0,1,426520,0,12406.45,25.08693,1,16,1,30.64351,2.93667,0,14.04494,0,33.58018,0,0,1,4,0,2,55.3,0,0,81.8,300,647.16,0,0,.6931472,6.472594,1,4.564348,5.755076,0,0,0,81.8,9.426052,.6931472,3.513936,1 +13,4,0,0,2,426520,0,12406.45,26.08693,1,16,1,51.57056,4.946085,4.453821,1340.834,0,60.97046,0,0,52,4,0,2,55.3,0,0,81.8,300,647.16,0,0,.6931472,6.472594,1,4.564348,5.755076,0,0,0,81.8,9.426052,.6931472,4.11039,1 +13,4,0,0,3,426520,0,12406.45,27.08693,1,16,1,90.71367,8.516767,2.527945,309.5443,0,101.7584,0,0,20,2,0,2,55.3,0,0,81.8,300,647.16,0,0,.6931472,6.472594,1,4.564348,5.755076,0,0,0,81.8,9.426052,.6931472,4.622601,1 +13,4,0,1,1,426541,0,8790.029,27.03901,1,16,1,21.45046,0,0,418.7947,0,21.45046,0,0,19,1,0,1,79.8,6.9,0,80.7,150,160.08,0,0,0,5.075674,1,4.564348,5.061929,0,0,0,80.7,9.081487,0,3.065746,1 +13,4,0,1,2,426541,0,8790.029,28.03901,1,16,1,123.3005,0,0,633.6146,0,123.3005,0,0,24,7,0,1,79.8,6.9,0,80.7,150,160.08,0,0,0,5.075674,1,4.564348,5.061929,0,0,0,80.7,9.081487,0,4.814625,1 +13,4,0,1,3,426541,0,8790.029,29.03901,1,16,1,100.172,9.312124,24.93551,625.5374,379.6689,514.0886,1,1,25,6,1,1,79.8,6.9,0,80.7,150,160.08,0,0,0,5.075674,1,4.564348,5.061929,0,0,0,80.7,9.081487,0,6.242395,1 +11,4,0,1,1,426553,0,2404.692,22.34634,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,77.1,3.4,0,63.6,0,0,0,0,.6931472,0,0,0,0,0,0,0,63.6,7.785593,.6931472,,0 +11,4,0,1,2,426553,0,2404.692,23.34634,0,12,1,32.62311,0,0,0,0,32.62311,0,0,0,1,0,4,77.1,3.4,0,63.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,63.6,7.785593,1.386294,3.485021,1 +11,4,0,1,3,426553,0,2404.692,24.34634,0,12,1,159.0811,7.108799,0,0,0,166.1898,0,0,0,3,21,4,77.1,3.4,0,63.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,63.6,7.785593,1.386294,5.113131,1 +11,4,0,1,1,426554,0,2404.692,24.39425,1,12,1,75.47655,0,31.18496,0,1095.93,1202.591,1,0,0,1,7,2,62.2,6.9,1,47.7,0,0,0,0,.6931472,0,0,0,0,0,1,0,47.7,7.785593,.6931472,7.092234,1 +11,4,0,1,2,426554,0,2404.692,25.39425,1,12,1,11.60038,0,0,0,0,11.60038,0,0,0,1,0,4,62.2,6.9,1,47.7,0,0,0,0,1.386294,0,0,0,0,0,1,0,47.7,7.785593,1.386294,2.451038,1 +11,4,0,1,3,426554,0,2404.692,26.39425,1,12,1,71.52145,7.173819,28.89467,0,0,107.5899,0,0,0,5,2,4,62.2,6.9,1,47.7,0,0,0,0,1.386294,0,0,0,0,0,1,0,47.7,7.785593,1.386294,4.678327,1 +13,4,0,1,1,426583,0,7910.823,2.655715,1,12,1,6.18238,0,0,0,0,6.18238,0,0,0,1,0,4,83.39137,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.976113,1.386294,1.821703,1 +13,4,0,1,2,426583,0,7910.823,3.655715,1,12,1,21.30682,6.72822,0,0,0,28.03504,0,0,0,2,0,4,83.39137,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.976113,1.386294,3.333455,1 +13,4,0,1,3,426583,0,7910.823,4.655715,1,12,1,5.20156,2.384048,0,0,0,7.585609,0,0,0,1,0,4,83.39137,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.976113,1.386294,2.026253,1 +13,4,0,1,4,426583,0,7910.823,5.655715,1,12,1,3.938559,2.658527,0,0,0,6.597085,0,0,0,1,0,4,83.39137,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.976113,1.386294,1.886628,1 +13,4,0,1,5,426583,0,7910.823,6.655715,1,12,1,34.19678,0,0,0,0,34.19678,0,0,0,2,0,4,83.39137,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.976113,1.386294,3.532131,1 +13,4,0,1,1,426584,0,7910.823,29.06502,0,11,1,73.72488,6.3627,0,0,0,80.08759,0,0,0,4,0,4,71.8,17.2,1,44.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,44.3,8.976113,1.386294,4.383121,1 +13,4,0,1,2,426584,0,7910.823,30.06502,0,11,1,33.14394,19.375,28.40909,0,507.6941,588.6221,1,0,0,2,0,4,71.8,17.2,1,44.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,44.3,8.976113,1.386294,6.377784,1 +13,4,0,1,3,426584,0,7910.823,31.06502,0,11,1,0,3.96619,0,0,0,3.96619,0,0,0,0,0,4,71.8,17.2,1,44.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,44.3,8.976113,1.386294,1.377806,1 +13,4,0,1,4,426584,0,7910.823,32.06503,0,11,1,118.1568,2.146514,23.63135,0,0,143.9346,0,0,0,3,0,4,71.8,17.2,1,44.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,44.3,8.976113,1.386294,4.969359,1 +13,4,0,1,5,426584,0,7910.823,33.06503,0,11,1,39.98211,2.325581,0,0,0,42.30769,0,0,0,1,0,4,71.8,17.2,1,44.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,44.3,8.976113,1.386294,3.744969,1 +13,4,0,1,1,426585,0,7910.823,28.03833,1,12,1,19.06234,0,0,0,0,19.06234,0,0,0,1,0,4,85.1,10.3,0,80.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,80.7,8.976113,1.386294,2.947715,1 +13,4,0,1,2,426585,0,7910.823,29.03833,1,12,1,77.41477,22.52367,24.62121,0,0,124.5597,0,0,0,6,0,4,85.1,10.3,0,80.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,80.7,8.976113,1.386294,4.824785,1 +13,4,0,1,3,426585,0,7910.823,30.03833,1,12,1,90.81058,25.01084,0,0,0,115.8214,0,0,0,5,0,4,85.1,10.3,0,80.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,80.7,8.976113,1.386294,4.752049,1 +13,4,0,1,4,426585,0,7910.823,31.03833,1,12,1,6.301693,27.56991,21.26822,0,0,55.13982,0,0,0,1,0,4,85.1,10.3,0,80.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,80.7,8.976113,1.386294,4.009872,1 +13,4,0,1,5,426585,0,7910.823,32.03833,1,12,1,39.12344,1.252236,0,0,0,40.37567,0,0,0,3,0,4,85.1,10.3,0,80.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,80.7,8.976113,1.386294,3.698227,1 +13,4,0,1,1,426586,0,7910.823,8.928131,0,12,1,48.72231,0,.1803194,0,0,48.90263,0,0,0,3,0,4,73.3,9.967326,0,92.6,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.976113,1.386294,3.889831,1 +13,4,0,1,2,426586,0,7910.823,9.928131,0,12,1,70.19413,3.835227,18.93939,0,0,92.96875,0,0,0,4,0,4,73.3,9.967326,0,92.6,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.976113,1.386294,4.532263,1 +13,4,0,1,3,426586,0,7910.823,10.92813,0,12,1,59.77026,0,0,0,0,59.77026,0,0,0,3,0,4,73.3,9.967326,0,92.6,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.976113,1.386294,4.090508,1 +13,4,0,1,4,426586,0,7910.823,11.92813,0,12,1,151.3785,7.581725,21.26822,0,0,180.2284,0,0,0,8,1,4,73.3,9.967326,0,92.6,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.976113,1.386294,5.194225,1 +13,4,0,1,5,426586,0,7910.823,12.92813,0,12,1,53.88193,.8050089,0,0,0,54.68694,0,0,0,3,0,4,73.3,9.967326,0,92.6,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.976113,1.386294,4.001625,1 +11,4,0,1,1,426660,0,7910.823,29.61533,0,12,1,0,98.67395,0,0,0,98.67395,0,0,0,0,0,1,69.7,24.1,0,50,0,0,0,0,0,0,0,0,0,1,0,0,50,8.976113,0,4.591821,1 +11,4,0,1,2,426660,0,7910.823,30.61533,0,12,1,0,93.93215,0,0,0,93.93215,0,0,0,0,0,1,69.7,24.1,0,50,0,0,0,0,0,0,0,0,0,1,0,0,50,8.976113,0,4.542572,1 +11,4,0,1,3,426660,0,7910.823,31.61533,0,12,1,20.08341,76.38279,0,0,0,96.4662,0,0,0,1,0,1,69.7,24.1,0,50,0,0,0,0,0,0,0,0,0,1,0,0,50,8.976113,0,4.569193,1 +11,4,0,0,1,426711,0,7333.138,15.52361,0,12,1,18.03194,0,0,0,0,18.03194,0,0,0,2,0,3,85.6,3.4,0,88.6,0,0,1,0,1.098612,0,0,0,0,0,0,0,88.6,8.900295,1.098612,2.892145,1 +11,4,0,0,2,426711,0,7333.138,16.52361,0,12,1,41.57197,3.314394,0,213.0682,0,44.88636,0,0,23,3,0,3,85.6,3.4,0,88.6,0,0,1,0,1.098612,0,0,0,0,0,0,0,88.6,8.900295,1.098612,3.804134,1 +11,4,0,0,3,426711,0,7333.138,17.52361,0,12,1,0,0,0,234.0702,0,0,0,0,27,0,0,3,85.6,3.4,0,88.6,0,0,1,0,1.098612,0,0,0,0,0,0,0,88.6,8.900295,1.098612,,0 +11,4,0,0,1,426712,0,7333.138,12.92539,1,12,1,92.7357,48.89232,40.18547,0,0,181.8135,0,0,0,10,0,3,86.7,9.967326,0,85.2,0,0,1,1,1.098612,0,0,0,0,0,0,0,85.2,8.900295,1.098612,5.202981,1 +11,4,0,0,2,426712,0,7333.138,13.92539,1,12,1,111.0322,29.97159,0,0,0,141.0038,0,0,0,9,0,3,86.7,9.967326,0,85.2,0,0,1,1,1.098612,0,0,0,0,0,0,0,85.2,8.900295,1.098612,4.948787,1 +11,4,0,0,3,426712,0,7333.138,14.92539,1,12,1,55.48331,19.8743,0,0,0,75.3576,0,0,0,5,0,3,86.7,9.967326,0,85.2,0,0,1,1,1.098612,0,0,0,0,0,0,0,85.2,8.900295,1.098612,4.322245,1 +11,4,0,0,1,426713,0,7333.138,38.45859,1,12,1,470.1803,0,27.82071,0,0,498.001,0,0,0,4,1,3,90.4,10.3,0,77.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.3,8.900295,1.098612,6.210602,1 +11,4,0,0,2,426713,0,7333.138,39.45859,1,12,1,21.61458,0,0,0,0,21.61458,0,0,0,1,0,3,90.4,10.3,0,77.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.3,8.900295,1.098612,3.073368,1 +11,4,0,0,3,426713,0,7333.138,40.45859,1,12,1,10.83658,0,0,0,0,10.83658,0,0,0,0,1,3,90.4,10.3,0,77.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,77.3,8.900295,1.098612,2.382928,1 +11,4,0,1,1,426739,0,8882.698,45.42368,1,12,1,88.35546,25.89377,0,0,0,114.2492,0,0,0,4,0,2,92,3.4,0,77.3,0,291.84,0,0,.6931472,5.676206,0,0,0,0,0,0,77.3,9.091973,.6931472,4.738382,1 +11,4,0,1,2,426739,0,8882.698,46.42368,1,12,1,62.35349,96.56821,37.97468,0,0,196.8964,0,0,0,3,1,2,92,3.4,0,77.3,0,291.84,0,0,.6931472,5.676206,0,0,0,0,0,0,77.3,9.091973,.6931472,5.282678,1 +11,4,0,1,3,426739,0,8882.698,47.42368,1,12,1,77.38607,127.6612,12.54084,0,0,217.5881,0,0,0,6,0,2,92,3.4,0,77.3,0,291.84,0,0,.6931472,5.676206,0,0,0,0,0,0,77.3,9.091973,.6931472,5.382604,1 +11,4,0,1,4,426739,0,8882.698,48.42368,1,12,1,75.90151,77.90229,32.95851,0,0,186.7623,0,0,0,6,1,2,92,3.4,0,77.3,0,291.84,0,0,.6931472,5.676206,0,0,0,0,0,0,77.3,9.091973,.6931472,5.229837,1 +11,4,0,1,5,426739,0,8882.698,49.42368,1,12,1,51.66313,76.85067,0,0,0,128.5138,0,0,0,5,0,2,92,3.4,0,77.3,0,291.84,0,0,.6931472,5.676206,0,0,0,0,0,0,77.3,9.091973,.6931472,4.856036,1 +11,4,0,1,1,426740,0,8882.698,50.39562,0,12,1,44.43309,1.659857,25.02554,0,0,71.11848,0,0,0,2,1,2,89.9,3.4,0,71.6,0,291.84,0,0,.6931472,5.676206,0,0,0,0,0,0,71.6,9.091973,.6931472,4.264347,1 +11,4,0,1,2,426740,0,8882.698,51.39562,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,89.9,3.4,0,71.6,0,291.84,0,0,.6931472,5.676206,0,0,0,0,0,0,71.6,9.091973,.6931472,,0 +11,4,0,1,3,426740,0,8882.698,52.39562,0,12,1,100.8169,.855546,36.54342,0,0,138.2158,0,0,0,5,1,2,89.9,3.4,0,71.6,0,291.84,0,0,.6931472,5.676206,0,0,0,0,0,0,71.6,9.091973,.6931472,4.928816,1 +11,4,0,1,4,426740,0,8882.698,53.39562,0,12,1,50.01939,0,0,0,0,50.01939,0,0,0,3,0,2,89.9,3.4,0,71.6,0,291.84,0,0,.6931472,5.676206,0,0,0,0,0,0,71.6,9.091973,.6931472,3.912411,1 +11,4,0,1,5,426740,0,8882.698,54.39562,0,12,1,61.92498,8.619958,31.84713,0,0,102.3921,0,0,0,7,1,2,89.9,3.4,0,71.6,0,291.84,0,0,.6931472,5.676206,0,0,0,0,0,0,71.6,9.091973,.6931472,4.628809,1 +14,4,95,0,1,426793,0,11716.72,13.60164,0,12,1,50.48944,3.21999,27.82071,0,0,81.53014,0,0,0,3,1,8,50,9.967326,0,77.8,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,77.8,9.368857,2.079442,4.400973,1 +14,4,95,0,2,426793,0,11716.72,14.60164,0,12,1,38.11553,0,0,0,0,38.11553,0,0,0,2,0,8,50,9.967326,0,77.8,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,77.8,9.368857,2.079442,3.640622,1 +14,4,95,0,3,426793,0,11716.72,15.60164,0,12,1,10.83658,0,25.57434,0,0,36.41092,0,0,0,0,1,8,50,9.967326,0,77.8,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,77.8,9.368857,2.079442,3.594869,1 +14,4,95,0,1,426794,0,11716.72,40.47912,0,8,1,0,0,0,0,0,0,0,0,0,0,0,8,87.8,3.4,0,84.1,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.368857,2.079442,,0 +14,4,95,0,2,426794,0,11716.72,41.47912,0,8,1,9.469697,0,38.35227,0,0,47.82197,0,0,0,0,1,8,87.8,3.4,0,84.1,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.368857,2.079442,3.867485,1 +14,4,95,0,3,426794,0,11716.72,42.47912,0,8,1,0,0,0,0,0,0,0,0,0,0,0,8,87.8,3.4,0,84.1,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.368857,2.079442,,0 +14,4,95,0,1,426795,0,11716.72,31.62491,1,12,1,75.21896,4.739825,29.36631,0,1314.338,1423.663,2,0,0,7,1,8,60.1,13.8,0,80.7,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,80.7,9.368857,2.079442,7.260988,1 +14,4,95,0,2,426795,0,11716.72,32.62492,1,12,1,41.19318,4.6875,0,0,0,45.88068,0,0,0,3,0,8,60.1,13.8,0,80.7,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,80.7,9.368857,2.079442,3.826044,1 +14,4,95,0,3,426795,0,11716.72,33.62492,1,12,1,23.84048,0,29.90897,0,0,53.74946,0,0,0,1,1,8,60.1,13.8,0,80.7,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,80.7,9.368857,2.079442,3.984334,1 +14,4,95,0,1,426796,0,11716.72,10.30801,0,12,1,51.932,0,0,0,0,51.932,0,0,0,4,0,8,86.7,9.967326,0,66.7,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.368857,2.079442,3.949935,1 +14,4,95,0,2,426796,0,11716.72,11.30801,0,12,1,2.367424,0,0,0,0,2.367424,0,0,0,1,0,8,86.7,9.967326,0,66.7,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.368857,2.079442,.8618026,1 +14,4,95,0,3,426796,0,11716.72,12.30801,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,86.7,9.967326,0,66.7,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.368857,2.079442,,0 +14,4,95,0,1,426797,0,11716.72,14.6475,0,12,1,2.575992,0,0,0,0,2.575992,0,0,0,1,0,8,77.1,3.4,0,92,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,92,9.368857,2.079442,.9462346,1 +14,4,95,0,2,426797,0,11716.72,15.6475,0,12,1,31.83239,1.183712,0,0,0,33.0161,0,0,0,2,0,8,77.1,3.4,0,92,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,92,9.368857,2.079442,3.496995,1 +14,4,95,0,3,426797,0,11716.72,16.6475,0,12,1,73.15995,0,0,0,0,73.15995,0,0,0,3,0,8,77.1,3.4,0,92,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,92,9.368857,2.079442,4.292648,1 +14,4,95,0,1,426798,0,11716.72,8.588638,1,12,1,12.87996,0,0,0,0,12.87996,0,0,0,1,0,8,90,9.967326,0,96.3,1000,1000,1,1,2.079442,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.368857,2.079442,2.555673,1 +14,4,95,0,2,426798,0,11716.72,9.588638,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,90,9.967326,0,96.3,1000,1000,1,1,2.079442,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.368857,2.079442,,0 +14,4,95,0,3,426798,0,11716.72,10.58864,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,90,9.967326,0,96.3,1000,1000,1,1,2.079442,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.368857,2.079442,,0 +14,4,95,0,1,426799,0,11716.72,16.46817,1,12,1,10.30397,0,0,0,0,10.30397,0,0,0,0,1,8,67,3.4,0,56.8,1000,1000,1,1,2.079442,6.907755,0,4.564348,6.959049,0,0,0,56.8,9.368857,2.079442,2.332529,1 +14,4,95,0,2,426799,0,11716.72,17.46817,1,12,1,104.285,9.682765,7.102273,0,0,121.0701,0,0,0,1,4,8,67,3.4,0,56.8,1000,1000,1,1,2.079442,6.907755,0,4.564348,6.959049,0,0,0,56.8,9.368857,2.079442,4.79637,1 +14,4,95,0,3,426799,0,11716.72,18.46817,1,12,1,34.52536,8.409189,0,0,0,42.93455,0,0,0,2,0,8,67,3.4,0,56.8,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,56.8,9.368857,2.079442,3.759677,1 +14,4,95,0,1,426800,0,11716.72,4.202601,0,12,1,5.151984,0,0,0,0,5.151984,0,0,0,1,0,8,83.39137,9.967326,0,81.5,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,81.5,9.368857,2.079442,1.639382,1 +14,4,95,0,2,426800,0,11716.72,5.202601,0,12,1,13.25758,8.049242,0,0,0,21.30682,0,0,0,2,0,8,83.39137,9.967326,0,81.5,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,81.5,9.368857,2.079442,3.059027,1 +14,4,95,0,3,426800,0,11716.72,6.202601,0,12,1,21.67317,11.70351,29.47551,0,0,62.85219,0,0,0,2,1,8,83.39137,9.967326,0,81.5,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,81.5,9.368857,2.079442,4.140786,1 +13,4,0,1,1,426809,0,8914.956,12.2245,0,17,1,0,2.318393,0,0,0,2.318393,0,0,0,0,0,4,81.7,9.967326,0,100,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.095598,1.386294,.8408741,1 +13,4,0,1,2,426809,0,8914.956,13.2245,0,17,1,11.83712,2.130682,28.40909,0,0,42.37689,0,0,0,1,0,4,81.7,9.967326,0,100,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.095598,1.386294,3.746603,1 +13,4,0,1,3,426809,0,8914.956,14.2245,0,17,1,19.15908,3.250975,0,0,0,22.41006,0,0,0,3,0,4,81.7,9.967326,0,100,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.095598,1.386294,3.10951,1 +13,4,0,1,1,426810,0,8914.956,6.893909,0,17,1,19.72179,0,27.30551,0,0,47.02731,0,0,0,2,0,4,91.7,9.967326,0,88.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.095598,1.386294,3.850729,1 +13,4,0,1,2,426810,0,8914.956,7.893909,0,17,1,4.734848,3.787879,0,0,0,8.522727,0,0,0,1,0,4,91.7,9.967326,0,88.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.095598,1.386294,2.142736,1 +13,4,0,1,3,426810,0,8914.956,8.893909,0,17,1,0,0,0,0,0,0,0,0,0,0,0,4,91.7,9.967326,0,88.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.095598,1.386294,,0 +13,4,0,1,1,426811,0,8914.956,51.02259,0,11,1,76.91911,60.92221,0,0,0,137.8413,0,0,0,5,0,4,66.1,3.4,1,33,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,33,9.095598,1.386294,4.926103,1 +13,4,0,1,2,426811,0,8914.956,52.02259,0,11,1,48.5322,8.285985,24.62121,0,0,81.43939,0,0,0,2,0,4,66.1,3.4,1,33,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,33,9.095598,1.386294,4.399859,1 +13,4,0,1,3,426811,0,8914.956,53.02259,0,11,1,98.39619,9.752926,10.40312,0,0,118.5522,0,0,0,3,4,4,66.1,3.4,1,33,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,33,9.095598,1.386294,4.775353,1 +13,4,0,1,1,426812,0,8914.956,39.0308,1,17,1,26.90366,0,6.18238,0,0,33.08604,0,0,0,1,0,4,84,6.9,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.095598,1.386294,3.499111,1 +13,4,0,1,2,426812,0,8914.956,40.0308,1,17,1,16.57197,0,0,0,0,16.57197,0,0,0,1,0,4,84,6.9,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.095598,1.386294,2.807713,1 +13,4,0,1,3,426812,0,8914.956,41.0308,1,17,1,37.92804,1.30039,0,0,0,39.22844,0,0,0,3,0,4,84,6.9,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.095598,1.386294,3.669402,1 +13,4,0,1,1,426824,0,8197.067,27.84394,0,12,1,85.41988,1.056157,0,0,0,86.47604,0,0,0,4,0,2,79.3,3.4,0,70.5,300,402.84,0,0,.6931472,5.998539,1,4.564348,5.755076,1,0,0,70.5,9.011654,.6931472,4.459867,1 +13,4,0,1,2,426824,0,8197.067,28.84394,0,12,1,9.469697,0,17.99242,0,0,27.46212,0,0,0,0,1,2,79.3,3.4,0,70.5,300,402.84,0,0,.6931472,5.998539,1,4.564348,5.755076,1,0,0,70.5,9.011654,.6931472,3.312808,1 +13,4,0,1,3,426824,0,8197.067,29.84394,0,12,1,6.935414,1.733853,0,0,0,8.669268,0,0,0,1,0,2,79.3,3.4,0,70.5,300,402.84,0,0,.6931472,5.998539,1,4.564348,5.755076,1,0,0,70.5,9.011654,.6931472,2.159784,1 +13,4,0,1,1,426825,0,8197.067,27.28816,1,12,1,19.57754,0,0,0,0,19.57754,0,0,0,1,1,2,70.2,10.3,0,78.4,300,402.84,0,0,.6931472,5.998539,1,4.564348,5.755076,0,0,0,78.4,9.011654,.6931472,2.974383,1 +13,4,0,1,2,426825,0,8197.067,28.28816,1,12,1,45.45454,0,31.72348,0,0,77.17803,0,0,0,1,0,2,70.2,10.3,0,78.4,300,402.84,0,0,.6931472,5.998539,1,4.564348,5.755076,0,0,0,78.4,9.011654,.6931472,4.346115,1 +13,4,0,1,3,426825,0,8197.067,29.28816,1,12,1,19.61855,0,0,0,0,19.61855,0,0,0,0,0,2,70.2,10.3,0,78.4,300,402.84,0,0,.6931472,5.998539,1,4.564348,5.755076,0,0,0,78.4,9.011654,.6931472,2.976476,1 +11,4,0,0,1,426830,0,10873.9,9.467488,0,12,1,14.81103,1.91522,0,0,0,16.72625,0,0,0,3,0,4,85,9.967326,0,96.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,96.3,9.294212,1.386294,2.816979,1 +11,4,0,0,2,426830,0,10873.9,10.46749,0,12,1,8.67323,6.962025,0,0,0,15.63526,0,0,0,1,0,4,85,9.967326,0,96.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,96.3,9.294212,1.386294,2.749528,1 +11,4,0,0,3,426830,0,10873.9,11.46749,0,12,1,12.57524,7.093723,0,0,0,19.66896,0,0,0,1,0,4,85,9.967326,0,96.3,0,0,1,0,1.386294,0,0,0,0,0,0,0,96.3,9.294212,1.386294,2.979042,1 +11,4,0,0,1,426831,0,10873.9,33.9165,1,12,1,18.43718,2.681308,0,0,0,21.11849,0,0,0,2,0,4,79.8,13.8,0,67,0,0,0,0,1.386294,0,0,0,0,0,0,0,67,9.294212,1.386294,3.050149,1 +11,4,0,0,2,426831,0,10873.9,34.9165,1,12,1,24.84763,1.172058,25.31646,0,0,51.33615,0,0,0,1,0,4,79.8,13.8,0,67,0,0,0,0,1.386294,0,0,0,0,0,0,0,67,9.294212,1.386294,3.938395,1 +11,4,0,0,3,426831,0,10873.9,35.9165,1,12,1,47.82889,0,8.383491,0,0,56.21238,0,0,0,3,0,4,79.8,13.8,0,67,0,0,0,0,1.386294,0,0,0,0,0,0,0,67,9.294212,1.386294,4.029137,1 +11,4,0,0,1,426832,0,10873.9,33.21287,0,16,1,5.107252,0,34.72932,0,0,39.83657,0,0,0,1,0,4,79.3,0,0,60.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,60.2,9.294212,1.386294,3.684785,1 +11,4,0,0,2,426832,0,10873.9,34.21287,0,16,1,107.1261,5.133615,0,0,0,112.2597,0,0,0,1,0,4,79.3,0,0,60.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,60.2,9.294212,1.386294,4.720815,1 +11,4,0,0,3,426832,0,10873.9,35.21287,0,16,1,65.02579,0,33.96389,0,0,98.98969,0,0,0,3,0,4,79.3,0,0,60.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,60.2,9.294212,1.386294,4.595016,1 +11,4,0,0,1,426833,0,10873.9,6.702259,1,12,1,8.682329,1.91522,0,0,0,10.59755,0,0,0,2,0,4,85,9.967326,0,100,0,0,1,1,1.386294,0,0,0,0,0,0,0,100,9.294212,1.386294,2.360623,1 +11,4,0,0,2,426833,0,10873.9,7.702259,1,12,1,5.625879,0,0,0,0,5.625879,0,0,0,1,0,4,85,9.967326,0,100,0,0,1,1,1.386294,0,0,0,0,0,0,0,100,9.294212,1.386294,1.727377,1 +11,4,0,0,3,426833,0,10873.9,8.702259,1,12,1,26.46174,0,0,0,0,26.46174,0,0,0,2,0,4,85,9.967326,0,100,0,0,1,1,1.386294,0,0,0,0,0,0,0,100,9.294212,1.386294,3.2757,1 +13,4,0,1,1,426845,0,16171.85,34.19028,0,21,1,19.06234,3.348789,26.79031,0,0,49.20144,0,0,0,1,1,1,55.9,10.3,0,69.3,150,291.84,0,0,0,5.676206,1,4.564348,5.061929,0,0,0,69.3,9.691089,0,3.895923,1 +13,4,0,1,2,426845,0,16171.85,35.19028,0,21,1,28.71686,7.19697,14.20455,0,0,50.11837,0,0,0,3,0,1,55.9,10.3,0,69.3,150,291.84,0,0,0,5.676206,1,4.564348,5.061929,0,0,0,69.3,9.691089,0,3.914388,1 +13,4,0,1,3,426845,0,16171.85,36.19028,0,21,1,132.6398,7.585609,26.87473,0,953.8318,1120.932,2,0,0,6,1,1,55.9,10.3,0,69.3,150,291.84,0,0,0,5.676206,1,4.564348,5.061929,0,0,0,69.3,9.691089,0,7.021916,1 +14,4,95,1,1,426846,0,3354.252,26.39288,0,14,1,31.62955,3.689271,0,0,0,35.31882,0,0,0,3,0,1,55.3,0,0,68.2,150,0,0,0,0,0,0,4.564348,5.061929,0,0,0,68.2,8.118282,0,3.564416,1 +14,4,95,1,2,426846,0,3354.252,27.39288,0,14,1,17.94872,0,0,0,0,17.94872,0,0,0,1,0,1,55.3,0,0,68.2,150,0,0,0,0,0,0,4.564348,5.061929,0,0,0,68.2,8.118282,0,2.887519,1 +14,4,95,1,3,426846,0,3354.252,28.39288,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,55.3,0,0,68.2,150,0,0,0,0,0,0,4.564348,5.061929,0,0,0,68.2,8.118282,0,,0 +14,4,95,0,1,426847,0,1534.897,26.23135,1,12,1,25.30364,0,0,0,0,25.30364,0,0,0,2,0,1,46.3,6.9,0,78.4,210,210,0,0,0,5.347107,0,4.564348,5.398401,0,0,0,78.4,7.33687,0,3.230948,1 +14,4,95,0,2,426847,0,1534.897,27.23135,1,12,1,26.34033,6.083916,0,0,0,32.42424,0,0,0,2,0,1,46.3,6.9,0,78.4,210,210,0,0,0,5.347107,0,4.564348,5.398401,0,0,0,78.4,7.33687,0,3.478906,1 +14,4,95,0,3,426847,0,1534.897,28.23135,1,12,1,161.2313,.9448482,0,0,0,162.1761,0,0,0,7,0,1,46.3,6.9,0,78.4,210,210,0,0,0,5.347107,0,4.564348,5.398401,0,0,0,78.4,7.33687,0,5.088683,1 +16,4,95,1,1,426849,0,11582.99,33.6345,0,16,1,0,2.298264,0,0,0,2.298264,0,0,0,0,0,5,79.3,6.9,0,76.1,1000,975,0,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,76.1,9.357379,1.609438,.8321539,1 +16,4,95,1,2,426849,0,11582.99,34.6345,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,79.3,6.9,0,76.1,1000,975,0,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,76.1,9.357379,1.609438,,0 +16,4,95,1,3,426849,0,11582.99,35.6345,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,79.3,6.9,0,76.1,1000,975,0,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,76.1,9.357379,1.609438,,0 +16,4,95,1,4,426849,0,11582.99,36.6345,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,79.3,6.9,0,76.1,1000,975,0,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,76.1,9.357379,1.609438,,0 +16,4,95,1,5,426849,0,11582.99,37.6345,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,79.3,6.9,0,76.1,1000,975,0,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,76.1,9.357379,1.609438,,0 +16,4,95,1,1,426850,0,11582.99,5.456537,0,13,1,17.36466,3.830439,0,0,0,21.1951,0,0,0,3,0,5,91.7,9.967326,0,88.9,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,88.9,9.357379,1.609438,3.05377,1 +16,4,95,1,2,426850,0,11582.99,6.456537,0,13,1,16.87764,0,0,0,0,16.87764,0,0,0,2,0,5,91.7,9.967326,0,88.9,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,88.9,9.357379,1.609438,2.825989,1 +16,4,95,1,3,426850,0,11582.99,7.456537,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,91.7,9.967326,0,88.9,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,88.9,9.357379,1.609438,,0 +16,4,95,1,4,426850,0,11582.99,8.456536,0,13,1,7.367197,0,0,0,0,7.367197,0,0,0,1,0,5,91.7,9.967326,0,88.9,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,88.9,9.357379,1.609438,1.997037,1 +16,4,95,1,5,426850,0,11582.99,9.456536,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,91.7,9.967326,0,88.9,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,88.9,9.357379,1.609438,,0 +16,4,95,1,1,426851,0,11582.99,8.944558,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,95,9.967326,0,96.3,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,96.3,9.357379,1.609438,,0 +16,4,95,1,2,426851,0,11582.99,9.944558,0,13,1,8.907641,2.578528,0,0,0,11.48617,0,0,0,2,0,5,95,9.967326,0,96.3,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,96.3,9.357379,1.609438,2.441144,1 +16,4,95,1,3,426851,0,11582.99,10.94456,0,13,1,6.448839,0,0,0,0,6.448839,0,0,0,1,0,5,95,9.967326,0,96.3,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,96.3,9.357379,1.609438,1.8639,1 +16,4,95,1,4,426851,0,11582.99,11.94456,0,13,1,25.97906,2.617294,0,0,0,28.59636,0,0,0,3,0,5,95,9.967326,0,96.3,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,96.3,9.357379,1.609438,3.353279,1 +16,4,95,1,5,426851,0,11582.99,12.94456,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,95,9.967326,0,96.3,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,96.3,9.357379,1.609438,,0 +16,4,95,1,1,426852,0,11582.99,32.27926,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,56.9,10.3,0,63.6,1000,975,0,0,1.609438,6.882438,0,4.564348,6.959049,1,0,0,63.6,9.357379,1.609438,,0 +16,4,95,1,2,426852,0,11582.99,33.27926,1,13,1,337.2949,0,0,0,0,337.2949,0,0,0,7,0,5,56.9,10.3,0,63.6,1000,975,0,0,1.609438,6.882438,0,4.564348,6.959049,1,0,0,63.6,9.357379,1.609438,5.820958,1 +16,4,95,1,3,426852,0,11582.99,34.27926,1,13,1,6.878762,7.201204,0,171.969,0,14.07997,0,0,10,0,0,5,56.9,10.3,0,63.6,1000,975,0,0,1.609438,6.882438,0,4.564348,6.959049,1,0,0,63.6,9.357379,1.609438,2.644753,1 +16,4,95,1,4,426852,0,11582.99,35.27926,1,13,1,62.03955,7.076386,0,0,461.8263,530.9422,1,0,0,2,0,5,56.9,10.3,0,63.6,1000,975,0,0,1.609438,6.882438,0,4.564348,6.959049,1,0,0,63.6,9.357379,1.609438,6.274653,1 +16,4,95,1,5,426852,0,11582.99,36.27926,1,13,1,0,3.007785,0,0,0,3.007785,0,0,0,0,0,5,56.9,10.3,0,63.6,1000,975,0,0,1.609438,6.882438,0,4.564348,6.959049,1,0,0,63.6,9.357379,1.609438,1.101204,1 +16,4,95,1,1,426853,0,11582.99,6.989733,0,13,1,7.150153,4.085802,0,0,0,11.23596,0,0,0,1,0,5,85,9.967326,0,92.6,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,92.6,9.357379,1.609438,2.419119,1 +16,4,95,1,2,426853,0,11582.99,7.989733,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,85,9.967326,0,92.6,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,92.6,9.357379,1.609438,,0 +16,4,95,1,3,426853,0,11582.99,8.989733,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,85,9.967326,0,92.6,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,92.6,9.357379,1.609438,,0 +16,4,95,1,4,426853,0,11582.99,9.989733,0,13,1,7.367197,0,0,0,0,7.367197,0,0,0,1,0,5,85,9.967326,0,92.6,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,92.6,9.357379,1.609438,1.997037,1 +16,4,95,1,5,426853,0,11582.99,10.98973,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,85,9.967326,0,92.6,1000,975,1,0,1.609438,6.882438,0,4.564348,6.959049,0,0,0,92.6,9.357379,1.609438,,0 +11,4,0,0,1,426860,0,11008.21,29.15264,1,12,1,37.60948,3.709428,26.17208,0,0,67.49098,0,0,0,3,0,3,89.9,13.8,0,77.3,0,372,0,0,1.098612,5.918894,0,0,0,0,0,0,77.3,9.306487,1.098612,4.211994,1 +11,4,0,0,2,426860,0,11008.21,30.15264,1,12,1,0,20.47822,0,0,0,20.47822,0,0,0,0,0,3,89.9,13.8,0,77.3,0,372,0,0,1.098612,5.918894,0,0,0,0,0,0,77.3,9.306487,1.098612,3.019362,1 +11,4,0,0,3,426860,0,11008.21,31.15264,1,12,1,13.0039,0,13.0039,0,922.384,948.3918,1,0,0,0,1,3,89.9,13.8,0,77.3,0,372,0,0,1.098612,5.918894,0,0,0,0,0,0,77.3,9.306487,1.098612,6.854768,1 +11,4,0,0,1,426861,0,11008.21,5.568789,1,12,1,149.1499,76.04843,0,0,0,225.1983,0,0,0,16,0,3,91.7,9.967326,0,77.8,0,372,1,1,1.098612,5.918894,0,0,0,0,0,0,77.8,9.306487,1.098612,5.416982,1 +11,4,0,0,2,426861,0,11008.21,6.568789,1,12,1,96.59091,29.26136,0,0,0,125.8523,0,0,0,40,0,3,91.7,9.967326,0,77.8,0,372,1,1,1.098612,5.918894,0,0,0,0,0,0,77.8,9.306487,1.098612,4.835109,1 +11,4,0,0,3,426861,0,11008.21,7.568789,1,12,1,56.7837,42.63112,0,0,0,99.41483,0,0,0,19,0,3,91.7,9.967326,0,77.8,0,372,1,1,1.098612,5.918894,0,0,0,0,0,0,77.8,9.306487,1.098612,4.599301,1 +11,4,0,0,1,426862,0,11008.21,35.08829,0,12,1,76.67697,23.61154,42.76146,0,0,143.05,0,0,0,7,0,3,88.3,17.2,0,62.5,0,372,0,0,1.098612,5.918894,0,0,0,0,0,1,62.5,9.306487,1.098612,4.963194,1 +11,4,0,0,2,426862,0,11008.21,36.08829,0,12,1,162.4053,34.84848,8.522727,0,0,205.7765,0,0,0,5,0,3,88.3,17.2,0,62.5,0,372,0,0,1.098612,5.918894,0,0,0,0,0,1,62.5,9.306487,1.098612,5.326791,1 +11,4,0,0,3,426862,0,11008.21,37.08829,0,12,1,9.969658,37.92804,0,0,0,47.8977,0,0,0,0,0,3,88.3,17.2,0,62.5,0,372,0,0,1.098612,5.918894,0,0,0,0,0,1,62.5,9.306487,1.098612,3.869067,1 +13,4,0,0,1,426889,0,12329.03,27.90417,0,17,1,23.18393,1.725914,0,0,0,24.90984,0,0,0,1,1,2,84.6,3.4,0,76.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,76.1,9.419793,.6931472,3.215263,1 +13,4,0,0,2,426889,0,12329.03,28.90417,0,17,1,0,0,0,587.1212,0,0,0,0,31,0,0,2,84.6,3.4,0,76.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,76.1,9.419793,.6931472,,0 +13,4,0,0,3,426889,0,12329.03,29.90417,0,17,1,85.39228,0,24.27395,381.4478,0,109.6662,0,0,20,7,0,2,84.6,3.4,0,76.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,76.1,9.419793,.6931472,4.697442,1 +13,4,0,0,1,426890,0,12329.03,27.36756,1,17,1,21.12313,2.575992,0,0,0,23.69912,0,0,0,3,0,2,84,6.9,0,82.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,82.1,9.419793,.6931472,3.165438,1 +13,4,0,0,2,426890,0,12329.03,28.36756,1,17,1,7.102273,0,0,0,0,7.102273,0,0,0,1,0,2,84,6.9,0,82.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,82.1,9.419793,.6931472,1.960415,1 +13,4,0,0,3,426890,0,12329.03,29.36756,1,17,1,9.969658,0,0,0,0,9.969658,0,0,0,1,0,2,84,6.9,0,82.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,82.1,9.419793,.6931472,2.299546,1 +11,4,0,1,1,426891,0,6521.408,38.25325,1,20,1,34.51829,44.80165,32.97269,0,0,112.2926,0,0,0,3,0,4,72.3,6.9,1,84.1,0,338.4,0,0,1.386294,5.824229,0,0,0,0,0,0,84.1,8.782999,1.386294,4.721108,1 +11,4,0,1,2,426891,0,6521.408,39.25325,1,20,1,11.83712,27.60417,0,0,0,39.44129,0,0,0,1,0,4,72.3,6.9,1,84.1,0,338.4,0,0,1.386294,5.824229,0,0,0,0,0,0,84.1,8.782999,1.386294,3.674813,1 +11,4,0,1,3,426891,0,6521.408,40.25325,1,20,1,44.21326,31.38708,30.55917,0,0,106.1595,0,0,0,2,2,4,72.3,6.9,1,84.1,0,338.4,0,0,1.386294,5.824229,0,0,0,0,0,0,84.1,8.782999,1.386294,4.664943,1 +11,4,0,1,1,426892,0,6521.408,1.815195,1,20,1,6.18238,0,0,0,0,6.18238,0,0,0,1,0,4,83.39137,9.967326,0,81.5,0,338.4,1,1,1.386294,5.824229,0,0,0,0,0,0,81.5,8.782999,1.386294,1.821703,1 +11,4,0,1,2,426892,0,6521.408,2.815195,1,20,1,5.681818,3.716856,0,0,0,9.398674,0,0,0,1,0,4,83.39137,9.967326,0,81.5,0,338.4,1,1,1.386294,5.824229,0,0,0,0,0,0,81.5,8.782999,1.386294,2.240569,1 +11,4,0,1,3,426892,0,6521.408,3.815195,1,20,1,12.57044,7.195492,0,0,0,19.76593,0,0,0,2,0,4,83.39137,9.967326,0,81.5,0,338.4,1,1,1.386294,5.824229,0,0,0,0,0,0,81.5,8.782999,1.386294,2.98396,1 +11,4,0,1,1,426893,0,6521.408,31.46886,0,16,1,64.86347,3.348789,25.75992,0,0,93.97218,0,0,0,3,1,4,64.4,3.4,0,58,0,338.4,0,0,1.386294,5.824229,0,0,0,0,0,0,58,8.782999,1.386294,4.542999,1 +11,4,0,1,2,426893,0,6521.408,32.46886,0,16,1,5.681818,0,0,0,0,5.681818,0,0,0,1,0,4,64.4,3.4,0,58,0,338.4,0,0,1.386294,5.824229,0,0,0,0,0,0,58,8.782999,1.386294,1.737271,1 +11,4,0,1,3,426893,0,6521.408,33.46886,0,16,1,8.669268,0,30.1257,0,0,38.79497,0,0,0,0,1,4,64.4,3.4,0,58,0,338.4,0,0,1.386294,5.824229,0,0,0,0,0,0,58,8.782999,1.386294,3.658291,1 +11,4,0,1,1,426894,0,6521.408,3.154004,0,20,1,10.30397,8.990211,0,0,0,19.29418,0,0,0,2,0,4,83.39137,9.967326,0,96.3,0,338.4,1,0,1.386294,5.824229,0,0,0,0,0,0,96.3,8.782999,1.386294,2.959803,1 +11,4,0,1,2,426894,0,6521.408,4.154004,0,20,1,5.681818,3.716856,0,0,0,9.398674,0,0,0,1,0,4,83.39137,9.967326,0,96.3,0,338.4,1,0,1.386294,5.824229,0,0,0,0,0,0,96.3,8.782999,1.386294,2.240569,1 +11,4,0,1,3,426894,0,6521.408,5.154004,0,20,1,18.20546,8.582575,0,0,0,26.78804,0,0,0,3,0,4,83.39137,9.967326,0,96.3,0,338.4,1,0,1.386294,5.824229,0,0,0,0,0,0,96.3,8.782999,1.386294,3.287955,1 +11,4,0,1,1,426909,0,6446.334,26.98973,0,12,1,6.128703,8.656793,0,0,0,14.7855,0,0,0,1,0,1,78.2,10.3,0,90.9,0,252.84,0,0,0,5.532757,0,0,0,1,0,0,90.9,8.771422,0,2.693647,1 +11,4,0,1,2,426909,0,6446.334,27.98973,0,12,1,16.59634,2.691046,0,0,0,19.28739,0,0,0,2,0,1,78.2,10.3,0,90.9,0,252.84,0,0,0,5.532757,0,0,0,1,0,0,90.9,8.771422,0,2.959451,1 +11,4,0,1,3,426909,0,6446.334,28.98973,0,12,1,10.74806,0,0,0,0,10.74806,0,0,0,1,0,1,78.2,10.3,0,90.9,0,252.84,0,0,0,5.532757,0,0,0,1,0,0,90.9,8.771422,0,2.374726,1 +11,4,0,1,4,426909,0,6446.334,29.98973,0,12,1,48.4684,4.040326,0,0,0,52.50872,0,0,0,2,2,1,78.2,10.3,0,90.9,0,252.84,0,0,0,5.532757,0,0,0,1,0,0,90.9,8.771422,0,3.960979,1 +11,4,0,1,5,426909,0,6446.334,30.98973,0,12,1,21.58528,3.839349,0,0,0,25.42463,0,0,0,3,0,1,78.2,10.3,0,90.9,0,252.84,0,0,0,5.532757,0,0,0,1,0,0,90.9,8.771422,0,3.235718,1 +13,4,0,1,1,426940,0,6321.408,59.65229,1,12,1,12.87996,0,0,0,0,12.87996,0,0,0,2,0,1,79.3,10.3,0,92,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,92,8.751856,0,2.555673,1 +13,4,0,1,2,426940,0,6321.408,60.65229,1,12,1,14.20455,0,0,0,0,14.20455,0,0,0,1,0,1,79.3,10.3,0,92,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,92,8.751856,0,2.653562,1 +13,4,0,1,3,426940,0,6321.408,61.65229,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,79.3,10.3,0,92,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,92,8.751856,0,,0 +11,4,0,1,1,426943,0,11520.23,17.66735,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,68.1,0,0,81.8,0,0,1,0,1.94591,0,0,0,0,1,0,0,81.8,9.351947,1.94591,,0 +11,4,0,1,2,426943,0,11520.23,18.66735,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,68.1,0,0,81.8,0,0,0,0,1.94591,0,0,0,0,1,0,0,81.8,9.351947,1.94591,,0 +11,4,0,1,3,426943,0,11520.23,19.66735,0,12,1,24.16558,0,0,0,0,24.16558,0,0,0,1,0,7,68.1,0,0,81.8,0,0,0,0,1.94591,0,0,0,0,1,0,0,81.8,9.351947,1.94591,3.184929,1 +11,4,0,1,1,426944,0,11520.23,7.564682,1,12,1,34.26069,7.058218,31.9423,0,0,73.26121,0,0,0,2,1,7,88.3,9.967326,0,74.1,0,0,1,1,1.94591,0,0,0,0,1,0,0,74.1,9.351947,1.94591,4.294031,1 +11,4,0,1,2,426944,0,11520.23,8.564682,1,12,1,9.469697,0,16.09848,0,0,25.56818,0,0,0,0,1,7,88.3,9.967326,0,74.1,0,0,1,1,1.94591,0,0,0,0,1,0,0,74.1,9.351947,1.94591,3.241349,1 +11,4,0,1,3,426944,0,11520.23,9.564682,1,12,1,10.83658,0,23.40702,0,0,34.24361,0,0,0,0,1,7,88.3,9.967326,0,74.1,0,0,1,1,1.94591,0,0,0,0,1,0,0,74.1,9.351947,1.94591,3.5335,1 +11,4,0,1,1,426945,0,11520.23,39.79192,0,8,1,0,0,0,0,0,0,0,0,0,0,0,7,79.8,0,0,91.2,0,0,0,0,1.94591,0,0,0,0,1,0,0,91.2,9.351947,1.94591,,0 +11,4,0,1,2,426945,0,11520.23,40.79192,0,8,1,0,0,0,0,0,0,0,0,0,0,0,7,79.8,0,0,91.2,0,0,0,0,1.94591,0,0,0,0,1,0,0,91.2,9.351947,1.94591,,0 +11,4,0,1,3,426945,0,11520.23,41.79192,0,8,1,0,0,0,0,0,0,0,0,0,0,0,7,79.8,0,0,91.2,0,0,0,0,1.94591,0,0,0,0,1,0,0,91.2,9.351947,1.94591,,0 +11,4,0,1,1,426946,0,11520.23,16.24641,0,12,1,12.87996,0,31.4271,0,0,44.30706,0,0,0,1,0,7,65.4,10.3,0,80.7,0,0,1,0,1.94591,0,0,0,0,1,0,0,80.7,9.351947,1.94591,3.791144,1 +11,4,0,1,2,426946,0,11520.23,17.24641,0,12,1,5.681818,0,0,0,0,5.681818,0,0,0,1,0,7,65.4,10.3,0,80.7,0,0,1,0,1.94591,0,0,0,0,1,0,0,80.7,9.351947,1.94591,1.737271,1 +11,4,0,1,3,426946,0,11520.23,18.24641,0,12,1,24.49068,1.170351,32.72649,0,0,58.38752,0,0,0,2,0,7,65.4,10.3,0,80.7,0,0,0,0,1.94591,0,0,0,0,1,0,0,80.7,9.351947,1.94591,4.067102,1 +11,4,0,1,1,426947,0,11520.23,9.672827,1,12,1,43.48274,0,0,0,0,43.48274,0,0,0,2,0,7,90,9.967326,0,74.1,0,0,1,1,1.94591,0,0,0,0,1,0,0,74.1,9.351947,1.94591,3.772364,1 +11,4,0,1,2,426947,0,11520.23,10.67283,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,90,9.967326,0,74.1,0,0,1,1,1.94591,0,0,0,0,1,0,0,74.1,9.351947,1.94591,,0 +11,4,0,1,3,426947,0,11520.23,11.67283,1,12,1,7.802341,0,0,0,0,7.802341,0,0,0,1,0,7,90,9.967326,0,74.1,0,0,1,1,1.94591,0,0,0,0,1,0,0,74.1,9.351947,1.94591,2.054424,1 +11,4,0,1,1,426948,0,11520.23,13.26762,1,12,1,12.87996,0,28.33591,0,0,41.21587,0,0,0,1,0,7,91.7,9.967326,0,74.1,0,0,1,1,1.94591,0,0,0,0,1,0,0,74.1,9.351947,1.94591,3.718823,1 +11,4,0,1,2,426948,0,11520.23,14.26762,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,91.7,9.967326,0,74.1,0,0,1,1,1.94591,0,0,0,0,1,0,0,74.1,9.351947,1.94591,,0 +11,4,0,1,3,426948,0,11520.23,15.26762,1,12,1,18.63893,0,24.27395,0,0,42.91287,0,0,0,2,0,7,91.7,9.967326,0,74.1,0,0,1,1,1.94591,0,0,0,0,1,0,0,74.1,9.351947,1.94591,3.759172,1 +11,4,0,1,1,426949,0,11520.23,41.15811,1,12,1,6.18238,0,0,0,0,6.18238,0,0,0,1,0,7,91.5,6.9,0,88.6,0,0,0,0,1.94591,0,0,0,0,1,0,0,88.6,9.351947,1.94591,1.821703,1 +11,4,0,1,2,426949,0,11520.23,42.15811,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,91.5,6.9,0,88.6,0,0,0,0,1.94591,0,0,0,0,1,0,0,88.6,9.351947,1.94591,,0 +11,4,0,1,3,426949,0,11520.23,43.15811,1,12,1,55.59168,0,0,0,0,55.59168,0,0,0,3,0,7,91.5,6.9,0,88.6,0,0,0,0,1.94591,0,0,0,0,1,0,0,88.6,9.351947,1.94591,4.018034,1 +13,4,0,1,1,426952,0,9656.305,55.63313,1,11,1,45.70991,12.64045,43.41164,0,0,101.762,0,0,0,3,0,2,80.3,10.3,0,78.4,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,78.4,9.175469,.6931472,4.622637,1 +13,4,0,1,2,426952,0,9656.305,56.63313,1,11,1,0,30.83451,0,0,0,30.83451,0,0,0,0,0,2,80.3,10.3,0,78.4,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,78.4,9.175469,.6931472,3.428634,1 +13,4,0,1,3,426952,0,9656.305,57.63313,1,11,1,39.59587,36.34996,36.54342,137.5752,0,112.4893,0,0,8,4,0,1,80.3,10.3,0,78.4,300,300,0,0,0,5.703783,1,4.564348,5.755076,0,0,0,78.4,9.175469,0,4.722857,1 +13,4,0,1,1,426953,0,9656.305,53.10336,0,12,1,998.9836,28.01328,0,0,5551.42,6578.417,1,0,0,12,0,2,72.9,6.9,0,60.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,60.2,9.175469,.6931472,8.79155,1 +13,4,0,1,2,426953,0,9656.305,54.10336,0,12,.7945206,215.4337,121.4721,0,0,4352.213,4689.119,8,0,0,5,0,2,72.9,6.9,0,60.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,60.2,9.175469,.6931472,8.453,1 +14,4,95,0,1,426970,0,7910.823,34.16564,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,93.1,6.9,0,88.6,618.9,618.9,0,0,1.609438,6.427944,0,4.564348,6.479237,0,0,0,88.6,8.976113,1.609438,,0 +14,4,95,0,1,426971,0,7910.823,7.603012,1,12,1,12.36476,0,0,0,0,12.36476,0,0,0,2,0,5,85,9.967326,0,63,618.9,618.9,1,1,1.609438,6.427944,0,4.564348,6.479237,0,0,0,63,8.976113,1.609438,2.514851,1 +14,4,95,0,1,426972,0,7910.823,9.987679,0,12,1,6.18238,0,0,0,0,6.18238,0,0,0,1,0,5,78.3,9.967326,0,88.9,618.9,618.9,1,0,1.609438,6.427944,0,4.564348,6.479237,0,0,0,88.9,8.976113,1.609438,1.821703,1 +14,4,95,0,1,426973,0,7910.823,12.44353,1,12,1,31.9423,0,0,0,0,31.9423,0,0,0,2,0,5,81.8,9.967326,0,92.6,618.9,618.9,1,1,1.609438,6.427944,0,4.564348,6.479237,0,0,0,92.6,8.976113,1.609438,3.463931,1 +14,4,95,0,1,426974,0,7910.823,33.33333,1,12,1,20.60793,0,0,0,0,20.60793,0,0,0,0,4,5,77.7,13.8,0,73.9,618.9,618.9,0,0,1.609438,6.427944,0,4.564348,6.479237,0,0,0,73.9,8.976113,1.609438,3.025676,1 +13,4,0,1,1,426989,0,11579.47,38.5243,0,14,1,10.30397,28.26893,38.91293,428.9026,0,77.48583,0,0,19,0,1,6,53.2,6.9,1,48.9,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,48.9,9.357076,1.791759,4.350095,1 +13,4,0,1,2,426989,0,11579.47,39.5243,0,14,1,142.4242,33.10606,15.30303,925.374,0,190.8333,0,0,50,8,0,6,53.2,6.9,1,48.9,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,48.9,9.357076,1.791759,5.2514,1 +13,4,0,1,3,426989,0,11579.47,40.5243,0,14,1,334.2003,22.08929,17.63762,180.7542,0,373.9272,0,0,18,16,0,6,53.2,6.9,1,48.9,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,48.9,9.357076,1.791759,5.924061,1 +13,4,0,1,4,426989,0,11579.47,41.5243,0,14,1,184.3245,27.30997,25.58881,455.8882,0,237.2233,0,0,54,16,1,6,53.2,6.9,1,48.9,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,48.9,9.357076,1.791759,5.469002,1 +13,4,0,1,5,426989,0,11579.47,42.5243,0,14,1,109.3023,25.79249,3.109123,169.9463,0,138.2039,0,0,19,4,0,6,53.2,6.9,1,48.9,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,48.9,9.357076,1.791759,4.92873,1 +13,4,0,1,1,426990,0,11579.47,8.224504,0,12,1,9.27357,0,0,0,0,9.27357,0,0,0,1,0,6,60,9.967326,1,48.1,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,48.1,9.357076,1.791759,2.227168,1 +13,4,0,1,2,426990,0,11579.47,9.224504,0,12,1,28.64583,0,0,35.51136,0,28.64583,0,0,1,2,0,6,60,9.967326,1,48.1,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,48.1,9.357076,1.791759,3.355008,1 +13,4,0,1,3,426990,0,11579.47,10.2245,0,12,1,3.987863,1.30039,0,0,0,5.288253,0,0,0,0,0,6,60,9.967326,1,48.1,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,48.1,9.357076,1.791759,1.665488,1 +13,4,0,1,4,426990,0,11579.47,11.2245,0,12,1,10.24025,0,0,39.38559,0,10.24025,0,0,7,1,0,6,60,9.967326,1,48.1,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,48.1,9.357076,1.791759,2.326326,1 +13,4,0,1,5,426990,0,11579.47,12.2245,0,12,1,15.7424,.7155635,0,0,0,16.45796,0,0,0,1,0,6,60,9.967326,1,48.1,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,48.1,9.357076,1.791759,2.800809,1 +13,4,0,1,1,426991,0,11579.47,33.50582,1,12,1,5.151984,13.91036,0,409.5827,0,19.06234,0,0,20,0,0,6,46.8,20.7,0,53.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,1,0,53.4,9.357076,1.791759,2.947715,1 +13,4,0,1,2,426991,0,11579.47,34.50582,1,12,1,17.04545,30.5303,0,577.3532,0,47.57576,0,0,28,1,0,6,46.8,20.7,0,53.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,1,0,53.4,9.357076,1.791759,3.862323,1 +13,4,0,1,3,426991,0,11579.47,35.50582,1,12,1,10.6632,8.452536,0,122.2367,0,19.11573,0,0,14,1,0,6,46.8,20.7,0,53.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,1,0,53.4,9.357076,1.791759,2.950512,1 +13,4,0,1,4,426991,0,11579.47,36.50582,1,12,1,0,0,0,323.9464,0,0,0,0,34,0,0,6,46.8,20.7,0,53.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,1,0,53.4,9.357076,1.791759,,0 +13,4,0,1,5,426991,0,11579.47,37.50582,1,12,1,17.17352,0,0,0,0,17.17352,0,0,0,1,0,6,46.8,20.7,0,53.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,1,0,53.4,9.357076,1.791759,2.843369,1 +13,4,0,1,1,426992,0,11579.47,12.80219,0,12,1,47.65585,5.409583,0,0,0,53.06543,0,0,0,4,0,6,41.7,9.967326,0,70.4,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,70.4,9.357076,1.791759,3.971526,1 +13,4,0,1,2,426992,0,11579.47,13.80219,0,12,1,36.93182,9.043561,0,147.9593,0,45.97538,0,0,16,3,0,6,41.7,9.967326,0,70.4,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,70.4,9.357076,1.791759,3.828106,1 +13,4,0,1,3,426992,0,11579.47,14.80219,0,12,1,0,0,0,34.67707,97.52926,97.52926,1,0,4,0,0,6,41.7,9.967326,0,70.4,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,70.4,9.357076,1.791759,4.580153,1 +13,4,0,1,4,426992,0,11579.47,15.80219,0,12,1,24.41906,5.71091,0,246.1599,337.6014,367.7314,2,0,29,4,0,6,41.7,9.967326,0,70.4,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,70.4,9.357076,1.791759,5.907353,1 +13,4,0,1,5,426992,0,11579.47,16.80219,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,41.7,9.967326,0,70.4,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,70.4,9.357076,1.791759,,0 +13,4,0,1,1,426993,0,11579.47,10.05065,1,12,1,25.50232,4.636785,0,0,0,30.1391,0,0,0,3,0,6,81.7,9.967326,0,66.7,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.357076,1.791759,3.405823,1 +13,4,0,1,2,426993,0,11579.47,11.05065,1,12,1,26.04167,1.704545,1.40625,0,0,29.15246,0,0,0,2,0,6,81.7,9.967326,0,66.7,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.357076,1.791759,3.372539,1 +13,4,0,1,3,426993,0,11579.47,12.05065,1,12,1,39.3368,8.885999,0,0,0,48.2228,0,0,0,4,0,6,81.7,9.967326,0,66.7,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.357076,1.791759,3.875832,1 +13,4,0,1,4,426993,0,11579.47,13.05065,1,12,1,0,2.953919,0,39.38559,0,2.953919,0,0,7,0,0,6,81.7,9.967326,0,66.7,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.357076,1.791759,1.083133,1 +13,4,0,1,5,426993,0,11579.47,14.05065,1,12,1,13.59571,4.293381,0,0,717.3596,735.2487,1,0,0,2,0,6,81.7,9.967326,0,66.7,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.357076,1.791759,6.600209,1 +13,4,0,1,1,426994,0,11579.47,5.859001,1,12,1,45.99691,5.512622,0,0,0,51.50953,0,0,0,3,0,6,80,9.967326,0,55.6,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,1,0,0,55.6,9.357076,1.791759,3.941767,1 +13,4,0,1,2,426994,0,11579.47,6.859001,1,12,1,13.73106,3.787879,0,0,0,17.51894,0,0,0,1,1,6,80,9.967326,0,55.6,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,1,0,0,55.6,9.357076,1.791759,2.863283,1 +13,4,0,1,3,426994,0,11579.47,7.859001,1,12,1,16.47161,5.093194,0,0,0,21.5648,0,0,0,2,0,6,80,9.967326,0,55.6,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,1,0,0,55.6,9.357076,1.791759,3.071063,1 +13,4,0,1,4,426994,0,11579.47,8.859001,1,12,1,25.60063,1.772351,0,68.92477,0,27.37298,0,0,9,1,0,6,80,9.967326,0,55.6,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,1,0,0,55.6,9.357076,1.791759,3.309556,1 +13,4,0,1,5,426994,0,11579.47,9.859001,1,12,1,6.440072,0,0,0,0,6.440072,0,0,0,0,0,6,80,9.967326,0,55.6,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,1,0,0,55.6,9.357076,1.791759,1.86254,1 +13,4,0,0,1,426995,0,3864.809,47.27173,1,13,1,469.8672,298.9836,54.13688,0,1554.188,2377.176,1,0,0,18,0,2,62.2,41.4,1,46.6,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,1,0,46.6,8.259927,.6931472,7.773668,1 +13,4,0,0,2,426995,0,3864.809,48.27173,1,13,1,667.0183,432.2082,0,0,0,1099.226,0,0,0,11,1,2,62.2,41.4,1,46.6,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,1,0,46.6,8.259927,.6931472,7.002362,1 +13,4,0,0,3,426995,0,3864.809,49.27173,1,13,1,114.5744,392.9063,0,0,3856.87,4364.351,3,0,0,3,2,2,62.2,41.4,1,46.6,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,1,0,46.6,8.259927,.6931472,8.381225,1 +13,4,0,0,4,426995,0,3864.809,50.27173,1,13,.3852459,43.4083,127.879,0,0,0,171.2873,0,0,0,2,0,2,62.2,41.4,1,46.6,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,1,0,46.6,8.259927,.6931472,5.143342,1 +13,4,0,0,1,426997,0,3864.809,49.76044,0,13,1,20.42901,0,0,0,0,20.42901,0,0,0,1,0,2,82.4,13.8,0,84.1,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,84.1,8.259927,.6931472,3.016956,1 +13,4,0,0,2,426997,0,3864.809,50.76044,0,13,1,60.59541,0,0,0,0,60.59541,0,0,0,1,0,2,82.4,13.8,0,84.1,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,84.1,8.259927,.6931472,4.104219,1 +13,4,0,0,3,426997,0,3864.809,51.76044,0,13,1,127.3646,6.233878,3.847807,0,1027.18,1164.626,2,0,0,6,0,2,82.4,13.8,0,84.1,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,84.1,8.259927,.6931472,7.060155,1 +13,4,0,0,4,426997,0,3864.809,52.76044,0,13,1,78.13106,9.790617,19.38736,0,0,107.309,0,0,0,4,1,2,82.4,13.8,0,84.1,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,84.1,8.259927,.6931472,4.675713,1 +13,4,0,0,5,426997,0,3864.809,53.76044,0,13,1,5.661713,0,0,0,0,5.661713,0,0,0,1,0,1,82.4,13.8,0,84.1,300,0,0,0,0,0,1,4.564348,5.755076,0,0,0,84.1,8.259927,0,1.733726,1 +13,4,0,1,1,427008,0,11258.06,51.86858,1,12,1,32.68641,8.81001,38.30439,0,0,79.80082,0,0,0,3,1,2,89.4,17.2,0,65.9,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,1,0,0,65.9,9.328929,.6931472,4.379534,1 +13,4,0,1,2,427008,0,11258.06,52.86858,1,12,1,15.00234,6.118144,0,0,0,21.12049,0,0,0,2,0,2,89.4,17.2,0,65.9,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,1,0,0,65.9,9.328929,.6931472,3.050244,1 +13,4,0,1,3,427008,0,11258.06,53.86858,1,12,1,15.90714,0,0,0,0,15.90714,0,0,0,2,0,2,89.4,17.2,0,65.9,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,1,0,0,65.9,9.328929,.6931472,2.766768,1 +13,4,0,1,1,427009,0,11258.06,59.85216,0,12,1,55.66905,0,38.30439,0,0,93.97344,0,0,0,2,1,2,100,17.2,0,90.9,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,1,0,0,90.9,9.328929,.6931472,4.543012,1 +13,4,0,1,2,427009,0,11258.06,60.85216,0,12,1,20.62822,0,0,0,0,20.62822,0,0,0,0,0,2,100,17.2,0,90.9,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,1,0,0,90.9,9.328929,.6931472,3.02666,1 +13,4,0,1,3,427009,0,11258.06,61.85216,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,100,17.2,0,90.9,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,1,0,0,90.9,9.328929,.6931472,,0 +18,4,25,1,1,427019,0,6007.038,60.19986,1,10,1,41.99897,100.4637,35.54869,0,0,178.0113,0,0,0,3,0,1,74.46748,9.967326,.1572505,,602.73,602.73,0,0,0,6.401469,0,3.258096,7.787764,1,0,0,72.06626,8.700853,0,5.181847,1 +18,4,25,1,2,427019,0,6007.038,61.19986,1,10,1,39.77273,71.61459,0,0,0,111.3873,0,0,0,1,8,1,74.46748,9.967326,.1572505,,602.73,602.73,0,0,0,6.401469,0,3.258096,7.787764,1,0,0,72.06626,8.700853,0,4.713014,1 +18,4,25,1,3,427019,0,6007.038,62.19986,1,10,1,49.39315,84.15258,41.61248,0,0,175.1582,0,0,0,3,1,1,74.46748,9.967326,.1572505,,602.73,602.73,0,0,0,6.401469,0,3.258096,7.787764,1,0,0,72.06626,8.700853,0,5.165689,1 +13,4,0,0,1,427021,0,7767.742,38.32991,1,10,1,114.8892,0,0,0,912.406,1027.295,1,0,0,4,0,3,75.5,0,0,92,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,92,8.957864,1.098612,6.934685,1 +13,4,0,0,2,427021,0,7767.742,39.32991,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,75.5,0,0,92,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,92,8.957864,1.098612,,0 +13,4,0,0,3,427021,0,7767.742,40.32991,1,10,1,4.551365,0,0,0,0,4.551365,0,0,0,0,0,3,75.5,0,0,92,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,92,8.957864,1.098612,1.515427,1 +13,4,0,0,1,427022,0,7767.742,14.40931,0,10,1,18.93354,0,0,0,0,18.93354,0,0,0,1,0,3,68.6,3.4,0,78.4,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.957864,1.098612,2.940935,1 +13,4,0,0,2,427022,0,7767.742,15.40931,0,10,1,32.14962,0,0,56.81818,0,32.14962,0,0,4,2,0,3,68.6,3.4,0,78.4,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.957864,1.098612,3.470401,1 +13,4,0,0,3,427022,0,7767.742,16.40931,0,10,1,56.56697,0,0,0,0,56.56697,0,0,0,2,0,3,68.6,3.4,0,78.4,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.957864,1.098612,4.035425,1 +13,4,0,0,1,427023,0,7767.742,42.04517,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,96.8,0,0,78.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.957864,1.098612,,0 +13,4,0,0,2,427023,0,7767.742,43.04517,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,96.8,0,0,78.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.957864,1.098612,,0 +13,4,0,0,3,427023,0,7767.742,44.04517,0,8,1,5.418292,0,0,0,0,5.418292,0,0,0,0,0,3,96.8,0,0,78.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.957864,1.098612,1.689781,1 +6,4,25,1,1,427067,0,6321.408,56.0438,0,12,1,56.15662,14.78619,40.70067,0,0,111.6435,0,0,0,4,0,2,78.2,3.4,0,67,750,725,0,0,.6931472,6.586172,0,3.258096,8.006368,1,0,0,67,8.751856,.6931472,4.715311,1 +6,4,25,1,2,427067,0,6321.408,57.0438,0,12,1,0,8.243371,0,0,0,8.243371,0,0,0,0,0,2,78.2,3.4,0,67,750,725,0,0,.6931472,6.586172,0,3.258096,8.006368,1,0,0,67,8.751856,.6931472,2.109409,1 +6,4,25,1,3,427067,0,6321.408,58.0438,0,12,1,84.02688,9.874295,13.0039,0,0,106.9051,0,0,0,4,0,2,78.2,3.4,0,67,750,725,0,0,.6931472,6.586172,0,3.258096,8.006368,1,0,0,67,8.751856,.6931472,4.671941,1 +6,4,25,1,1,427068,0,6321.408,55.9206,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,71.3,20.7,0,68.2,750,725,0,0,.6931472,6.586172,0,3.258096,8.006368,1,0,0,68.2,8.751856,.6931472,,0 +6,4,25,1,2,427068,0,6321.408,56.9206,1,12,1,54.45076,4.848485,.9469697,0,0,60.24621,0,0,0,4,0,2,71.3,20.7,0,68.2,750,725,0,0,.6931472,6.586172,0,3.258096,8.006368,1,0,0,68.2,8.751856,.6931472,4.09844,1 +6,4,25,1,3,427068,0,6321.408,57.9206,1,12,1,30.34244,0,0,0,0,30.34244,0,0,0,4,0,2,71.3,20.7,0,68.2,750,725,0,0,.6931472,6.586172,0,3.258096,8.006368,1,0,0,68.2,8.751856,.6931472,3.412547,1 +11,4,0,0,1,427069,0,8868.035,24.73648,1,13,1,11.57303,3.263534,0,0,0,14.83657,0,0,0,1,0,4,70.7,6.9,0,79.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,79.5,9.090322,1.386294,2.697095,1 +11,4,0,0,2,427069,0,8868.035,25.73648,1,13,1,1.078293,0,0,0,0,1.078293,0,0,0,0,0,4,70.7,6.9,0,79.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,79.5,9.090322,1.386294,.0753796,1 +11,4,0,0,3,427069,0,8868.035,26.73648,1,13,1,12.89768,0,29.23474,0,0,42.13242,0,0,0,1,0,4,70.7,6.9,0,79.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,79.5,9.090322,1.386294,3.740817,1 +11,4,0,0,1,427070,0,8868.035,31.15401,0,13,1,35.69969,5.755873,0,0,0,41.45557,0,0,0,3,0,4,79.8,0,0,71.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,71.6,9.090322,1.386294,3.724622,1 +11,4,0,0,2,427070,0,8868.035,32.154,0,13,1,16.87764,0,0,0,0,16.87764,0,0,0,1,0,4,79.8,0,0,71.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,71.6,9.090322,1.386294,2.825989,1 +11,4,0,0,3,427070,0,8868.035,33.154,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,0,0,71.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,71.6,9.090322,1.386294,,0 +11,4,0,0,1,427071,0,8868.035,4.328542,0,13,1,7.660879,11.25638,0,0,0,18.91726,0,0,0,1,0,4,83.39137,9.967326,0,70.4,0,0,1,0,1.386294,0,0,0,0,1,0,0,70.4,9.090322,1.386294,2.940075,1 +11,4,0,0,2,427071,0,8868.035,5.328542,0,13,1,5.625879,5.180497,0,0,0,10.80638,0,0,0,1,0,4,83.39137,9.967326,0,70.4,0,0,1,0,1.386294,0,0,0,0,1,0,0,70.4,9.090322,1.386294,2.380136,1 +11,4,0,0,3,427071,0,8868.035,6.328542,0,13,1,15.90714,6.010318,22.35598,0,0,44.27343,0,0,0,2,0,4,83.39137,9.967326,0,70.4,0,0,1,0,1.386294,0,0,0,0,1,0,0,70.4,9.090322,1.386294,3.790385,1 +11,4,0,0,1,427072,0,8868.035,1.226557,0,13,1,15.32176,12.31869,0,0,0,27.64045,0,0,0,3,0,4,83.39137,9.967326,0,63,0,0,1,0,1.386294,0,0,0,0,1,0,0,63,9.090322,1.386294,3.31928,1 +11,4,0,0,2,427072,0,8868.035,2.226557,0,13,1,34.59916,5.930614,0,0,0,40.52977,0,0,0,3,0,4,83.39137,9.967326,0,63,0,0,1,0,1.386294,0,0,0,0,1,0,0,63,9.090322,1.386294,3.702037,1 +11,4,0,0,3,427072,0,8868.035,3.226557,0,13,1,15.90714,2.575237,0,0,0,18.48237,0,0,0,2,0,4,83.39137,9.967326,0,63,0,0,1,0,1.386294,0,0,0,0,1,0,0,63,9.090322,1.386294,2.916817,1 +13,4,0,1,1,427081,0,3463.93,3.767283,1,12,1,48.07692,0,0,0,0,48.07692,0,0,0,3,0,3,83.39137,9.967326,0,48.1,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,48.1,8.150448,1.098612,3.872802,1 +13,4,0,1,2,427081,0,3463.93,4.767282,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.39137,9.967326,0,48.1,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,48.1,8.150448,1.098612,,0 +13,4,0,1,3,427081,0,3463.93,5.767282,1,12,1,25.65199,9.593843,0,0,0,35.24583,0,0,0,4,0,3,83.39137,9.967326,0,48.1,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,48.1,8.150448,1.098612,3.562347,1 +13,4,0,1,1,427082,0,3463.93,22.8501,0,14,1,10.12146,0,0,0,0,10.12146,0,0,0,0,1,3,59,3.4,0,63.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,63.6,8.150448,1.098612,2.314658,1 +13,4,0,1,2,427082,0,3463.93,23.8501,0,14,1,0,1.734266,0,0,0,1.734266,0,0,0,0,0,3,59,3.4,0,63.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,63.6,8.150448,1.098612,.5505841,1 +13,4,0,1,3,427082,0,3463.93,24.8501,0,14,1,63.78794,7.785378,0,0,0,71.57332,0,0,0,2,0,3,59,3.4,0,63.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,63.6,8.150448,1.098612,4.270722,1 +13,4,0,1,1,427083,0,3463.93,22.23682,1,12,1,96.40688,60.46053,13.66397,0,0,170.5314,0,0,0,7,1,3,44.7,24.1,1,56.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,56.8,8.150448,1.098612,5.138919,1 +13,4,0,1,2,427083,0,3463.93,23.23682,1,12,1,65.85081,32.2331,0,0,0,98.08392,0,0,0,8,0,3,44.7,24.1,1,56.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,56.8,8.150448,1.098612,4.585824,1 +13,4,0,1,3,427083,0,3463.93,24.23682,1,12,1,111.0517,30.51304,0,51.30397,0,141.5648,0,0,3,5,0,3,44.7,24.1,1,56.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,56.8,8.150448,1.098612,4.952757,1 +13,4,0,0,1,427086,0,10390.62,8.290213,0,14,1,23.627,7.135497,0,0,0,30.76249,0,0,0,2,0,5,86.7,9.967326,0,100,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,100,9.248755,1.609438,3.426296,1 +13,4,0,0,2,427086,0,10390.62,9.290213,0,14,1,45.54924,4.782197,0,0,0,50.33144,0,0,0,4,0,5,86.7,9.967326,0,100,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,100,9.248755,1.609438,3.91863,1 +13,4,0,0,3,427086,0,10390.62,10.29021,0,14,1,78.56524,7.498916,0,0,0,86.06416,0,0,0,7,0,5,86.7,9.967326,0,100,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,100,9.248755,1.609438,4.455093,1 +13,4,0,0,1,427087,0,10390.62,34.19849,0,12,1,160.5307,5.023184,0,0,0,165.5538,0,0,0,5,0,5,76.1,3.4,0,54.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,54.5,9.248755,1.609438,5.109296,1 +13,4,0,0,2,427087,0,10390.62,35.19849,0,12,1,101.089,5.847538,35.40246,0,0,142.339,0,0,0,6,0,5,76.1,3.4,0,54.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,54.5,9.248755,1.609438,4.958212,1 +13,4,0,0,3,427087,0,10390.62,36.19849,0,12,1,79.6489,2.492414,0,0,0,82.14131,0,0,0,4,6,5,76.1,3.4,0,54.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,54.5,9.248755,1.609438,4.408441,1 +13,4,0,0,1,427088,0,10390.62,5.801506,1,14,1,37.48068,8.964452,0,0,0,46.44513,0,0,0,4,0,5,83.3,9.967326,0,48.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,1,0,48.1,9.248755,1.609438,3.838272,1 +13,4,0,0,2,427088,0,10390.62,6.801506,1,14,1,163.7074,11.24527,0,0,0,174.9527,0,0,0,5,0,5,83.3,9.967326,0,48.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,1,0,48.1,9.248755,1.609438,5.164515,1 +13,4,0,0,3,427088,0,10390.62,7.801506,1,14,1,26.87473,10.25141,0,0,376.788,413.9142,1,0,0,3,0,5,83.3,9.967326,0,48.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,1,0,48.1,9.248755,1.609438,6.025659,1 +13,4,0,0,1,427089,0,10390.62,4.572211,0,14,1,46.88305,7.393096,0,0,0,54.27615,0,0,0,5,0,5,86.7,9.967326,0,66.7,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.248755,1.609438,3.994085,1 +13,4,0,0,2,427089,0,10390.62,5.572211,0,14,1,5.681818,7.220644,0,0,0,12.90246,0,0,0,1,0,5,86.7,9.967326,0,66.7,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.248755,1.609438,2.557418,1 +13,4,0,0,3,427089,0,10390.62,6.572211,0,14,1,30.34244,7.954053,0,0,149.7833,188.0798,1,0,0,5,0,5,86.7,9.967326,0,66.7,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.248755,1.609438,5.236866,1 +13,4,0,0,1,427090,0,10390.62,28.81862,1,14,1,23.69912,4.636785,0,0,0,28.33591,0,0,0,2,0,5,60.1,27.6,0,35.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,1,35.2,9.248755,1.609438,3.34413,1 +13,4,0,0,2,427090,0,10390.62,29.81862,1,14,1,198.5653,15.28883,0,0,956.0511,1169.905,1,0,0,9,0,5,60.1,27.6,0,35.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,1,35.2,9.248755,1.609438,7.064678,1 +13,4,0,0,3,427090,0,10390.62,30.81862,1,14,1,318.1708,5.439965,29.04205,0,0,352.6528,0,0,0,4,1,5,60.1,27.6,0,35.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,1,35.2,9.248755,1.609438,5.865484,1 +16,4,95,1,1,427097,0,4985.337,41.38535,0,17,1,23.18393,0,0,0,0,23.18393,0,0,0,4,0,1,78.7,10.3,1,69.3,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,69.3,8.514457,0,3.143459,1 +16,4,95,1,2,427097,0,4985.337,42.38535,0,17,1,7.102273,0,0,0,0,7.102273,0,0,0,1,0,1,78.7,10.3,1,69.3,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,69.3,8.514457,0,1.960415,1 +16,4,95,1,3,427097,0,4985.337,43.38535,0,17,1,19.50585,0,0,0,0,19.50585,0,0,0,1,0,1,78.7,10.3,1,69.3,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,69.3,8.514457,0,2.970715,1 +11,4,0,0,1,427100,0,8992.375,36.46544,1,15,1,10.30397,21.63833,0,0,0,31.9423,0,0,0,2,0,6,92.6,6.9,0,93.2,0,186.48,0,0,1.791759,5.228324,0,0,0,1,0,0,93.2,9.104243,1.791759,3.463931,1 +11,4,0,0,2,427100,0,8992.375,37.46544,1,15,1,188.267,0,0,0,0,188.267,0,0,0,1,0,6,92.6,6.9,0,93.2,0,186.48,0,0,1.791759,5.228324,0,0,0,1,0,0,93.2,9.104243,1.791759,5.237862,1 +11,4,0,0,3,427100,0,8992.375,38.46544,1,15,1,37.27785,32.94321,21.67317,0,0,91.89423,0,0,0,5,0,6,92.6,6.9,0,93.2,0,186.48,0,0,1.791759,5.228324,0,0,0,1,0,0,93.2,9.104243,1.791759,4.520638,1 +11,4,0,1,1,427101,0,8992.375,15.92882,0,15,1,60.83462,0,0,0,0,60.83462,0,0,0,3,0,6,47.9,6.9,0,70.5,0,186.48,1,0,1.791759,5.228324,0,0,0,1,0,0,70.5,9.104243,1.791759,4.108159,1 +11,4,0,1,2,427101,0,8992.375,16.92882,0,15,1,78.48485,.9469697,34.09091,0,0,113.5227,0,0,0,3,0,6,47.9,6.9,0,70.5,0,186.48,1,0,1.791759,5.228324,0,0,0,1,0,0,70.5,9.104243,1.791759,4.732003,1 +11,4,0,1,3,427101,0,8992.375,17.92882,0,15,1,17.772,0,19.07239,0,0,36.84439,0,0,0,3,0,6,47.9,6.9,0,70.5,0,186.48,1,0,1.791759,5.228324,0,0,0,1,0,0,70.5,9.104243,1.791759,3.606703,1 +11,4,0,1,1,427102,0,8992.375,14.05065,0,15,1,12.87996,0,29.8815,0,0,42.76146,0,0,0,1,0,6,81.9,3.4,0,80.7,0,186.48,1,0,1.791759,5.228324,0,0,0,0,0,0,80.7,9.104243,1.791759,3.755637,1 +11,4,0,1,2,427102,0,8992.375,15.05065,0,15,1,18.93939,0,14.20455,0,0,33.14394,0,0,0,2,0,6,81.9,3.4,0,80.7,0,186.48,1,0,1.791759,5.228324,0,0,0,0,0,0,80.7,9.104243,1.791759,3.50086,1 +11,4,0,1,3,427102,0,8992.375,16.05065,0,15,1,6.501951,0,0,0,0,6.501951,0,0,0,1,0,6,81.9,3.4,0,80.7,0,186.48,1,0,1.791759,5.228324,0,0,0,0,0,0,80.7,9.104243,1.791759,1.872102,1 +11,4,0,1,1,427103,0,8992.375,10.75975,0,15,1,43.88975,0,0,0,0,43.88975,0,0,0,2,0,6,86.7,9.967326,0,92.6,0,186.48,1,0,1.791759,5.228324,0,0,0,0,0,0,92.6,9.104243,1.791759,3.781681,1 +11,4,0,1,2,427103,0,8992.375,11.75975,0,15,1,17.51894,1.657197,23.67424,0,0,42.85038,0,0,0,2,0,6,86.7,9.967326,0,92.6,0,186.48,1,0,1.791759,5.228324,0,0,0,0,0,0,92.6,9.104243,1.791759,3.757715,1 +11,4,0,1,3,427103,0,8992.375,12.75975,0,15,1,17.33854,0,10.83658,0,0,28.17512,0,0,0,2,0,6,86.7,9.967326,0,92.6,0,186.48,1,0,1.791759,5.228324,0,0,0,0,0,0,92.6,9.104243,1.791759,3.338439,1 +11,4,0,1,1,427104,0,8992.375,40.282,0,16,1,0,0,0,0,0,0,0,0,0,0,0,6,86.7,3.4,0,93.2,0,186.48,0,0,1.791759,5.228324,0,0,0,1,0,0,93.2,9.104243,1.791759,,0 +11,4,0,1,2,427104,0,8992.375,41.282,0,16,1,32.67046,0,29.35606,0,0,62.02652,0,0,0,2,0,6,86.7,3.4,0,93.2,0,186.48,0,0,1.791759,5.228324,0,0,0,1,0,0,93.2,9.104243,1.791759,4.127562,1 +11,4,0,1,3,427104,0,8992.375,42.282,0,16,1,21.67317,2.080624,18.20546,0,0,41.95926,0,0,0,1,0,6,86.7,3.4,0,93.2,0,186.48,0,0,1.791759,5.228324,0,0,0,1,0,0,93.2,9.104243,1.791759,3.736699,1 +11,4,0,1,1,427105,0,8992.375,6.269678,0,15,1,0,2.060793,0,0,0,2.060793,0,0,0,0,0,6,90,9.967326,0,96.3,0,186.48,1,0,1.791759,5.228324,0,0,0,0,0,0,96.3,9.104243,1.791759,.7230911,1 +11,4,0,1,2,427105,0,8992.375,7.269678,0,15,1,0,8.049242,0,0,0,8.049242,0,0,0,0,0,6,90,9.967326,0,96.3,0,186.48,1,0,1.791759,5.228324,0,0,0,0,0,0,96.3,9.104243,1.791759,2.085578,1 +11,4,0,1,3,427105,0,8992.375,8.269678,0,15,1,16.03815,9.861292,24.27395,0,0,50.17339,0,0,0,2,0,6,90,9.967326,0,96.3,0,186.48,1,0,1.791759,5.228324,0,0,0,0,0,0,96.3,9.104243,1.791759,3.915485,1 +18,4,25,1,1,427114,0,10536.07,31.29911,1,12,1,28.08989,4.136874,33.70787,0,0,65.93462,0,0,0,4,0,5,77.1,27.6,1,51.1,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,51.1,9.262655,1.609438,4.188663,1 +18,4,25,1,2,427114,0,10536.07,32.29911,1,12,1,140.3188,0,7.501172,0,0,147.82,0,0,0,3,0,5,77.1,27.6,1,51.1,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,51.1,9.262655,1.609438,4.995995,1 +18,4,25,1,3,427114,0,10536.07,33.29911,1,12,1,125.1075,0,31.59931,0,0,156.7068,0,0,0,2,4,5,77.1,27.6,1,51.1,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,51.1,9.262655,1.609438,5.054377,1 +18,4,25,1,1,427115,0,10536.07,8.312115,0,12,1,7.660879,0,0,0,0,7.660879,0,0,0,1,0,5,93.3,9.967326,0,88.9,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.9,9.262655,1.609438,2.036127,1 +18,4,25,1,2,427115,0,10536.07,9.312115,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,93.3,9.967326,0,88.9,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.9,9.262655,1.609438,,0 +18,4,25,1,3,427115,0,10536.07,10.31211,0,12,1,32.52365,0,0,0,0,32.52365,0,0,0,2,0,5,93.3,9.967326,0,88.9,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.9,9.262655,1.609438,3.481967,1 +18,4,25,1,1,427116,0,10536.07,9.582478,1,12,1,175.5567,14.81103,18.8713,0,74.32584,283.5648,1,0,0,7,0,5,71.7,9.967326,0,44.4,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,1,0,0,44.4,9.262655,1.609438,5.647441,1 +18,4,25,1,2,427116,0,10536.07,10.58248,1,12,1,31.64557,5.391468,25.78528,0,425.9728,488.7951,1,0,0,3,0,5,71.7,9.967326,0,44.4,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,1,0,0,44.4,9.262655,1.609438,6.191944,1 +18,4,25,1,3,427116,0,10536.07,11.58248,1,12,1,5.159071,0,27.51505,0,0,32.67412,0,0,0,1,0,5,71.7,9.967326,0,44.4,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,1,0,0,44.4,9.262655,1.609438,3.486583,1 +18,4,25,1,1,427117,0,10536.07,11.2553,1,12,1,76.43003,0,0,0,0,76.43003,0,0,0,4,0,5,75,9.967326,0,96.3,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.262655,1.609438,4.336376,1 +18,4,25,1,2,427117,0,10536.07,12.2553,1,12,1,54.96953,0,1.172058,0,0,56.14159,0,0,0,2,0,5,75,9.967326,0,96.3,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.262655,1.609438,4.027877,1 +18,4,25,1,3,427117,0,10536.07,13.2553,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,75,9.967326,0,96.3,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.262655,1.609438,,0 +18,4,25,1,1,427118,0,10536.07,33.42368,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,80.9,10.3,0,56.8,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,56.8,9.262655,1.609438,,0 +18,4,25,1,2,427118,0,10536.07,34.42368,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,80.9,10.3,0,56.8,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,56.8,9.262655,1.609438,,0 +18,4,25,1,3,427118,0,10536.07,35.42368,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,80.9,10.3,0,56.8,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,56.8,9.262655,1.609438,,0 +16,4,95,1,1,427119,0,11610.56,10.02601,1,14,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,9.967326,0,96.3,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.359756,1.609438,,0 +16,4,95,1,2,427119,0,11610.56,11.02601,1,14,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,9.967326,0,96.3,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.359756,1.609438,,0 +16,4,95,1,3,427119,0,11610.56,12.02601,1,14,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,9.967326,0,96.3,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.359756,1.609438,,0 +16,4,95,1,1,427120,0,11610.56,33.61259,1,14,1,0,1.940756,0,0,0,1.940756,0,0,0,0,0,5,80.9,20.7,1,92,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,92,9.359756,1.609438,.6630775,1 +16,4,95,1,2,427120,0,11610.56,34.61259,1,14,1,0,2.766057,10.31411,0,0,13.08017,0,0,0,0,0,5,80.9,20.7,1,92,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,92,9.359756,1.609438,2.571097,1 +16,4,95,1,3,427120,0,11610.56,35.61259,1,14,1,0,5.932932,0,0,0,5.932932,0,0,0,0,0,5,80.9,20.7,1,92,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,92,9.359756,1.609438,1.780519,1 +16,4,95,1,1,427121,0,11610.56,36,0,16,1,20.42901,0,0,0,0,20.42901,0,0,0,1,0,5,78.2,3.4,1,83,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,83,9.359756,1.609438,3.016956,1 +16,4,95,1,2,427121,0,11610.56,37,0,16,1,16.40881,0,0,0,0,16.40881,0,0,0,1,0,5,78.2,3.4,1,83,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,83,9.359756,1.609438,2.797819,1 +16,4,95,1,3,427121,0,11610.56,38,0,16,1,28.80482,0,0,0,0,28.80482,0,0,0,1,0,5,78.2,3.4,1,83,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,83,9.359756,1.609438,3.360543,1 +16,4,95,1,1,427122,0,11610.56,7.345654,1,14,1,0,3.013279,0,0,0,3.013279,0,0,0,0,0,5,80,9.967326,0,85.2,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.359756,1.609438,1.103029,1 +16,4,95,1,2,427122,0,11610.56,8.345654,1,14,1,0,0,0,0,0,0,0,0,0,0,0,5,80,9.967326,0,85.2,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.359756,1.609438,,0 +16,4,95,1,3,427122,0,11610.56,9.345654,1,14,1,6.448839,3.22442,0,0,0,9.673259,0,0,0,1,0,5,80,9.967326,0,85.2,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.359756,1.609438,2.269365,1 +16,4,95,1,1,427123,0,11610.56,4.602327,0,14,1,17.36466,6.026558,0,0,0,23.39122,0,0,0,2,0,5,83.39137,9.967326,0,81.5,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,81.5,9.359756,1.609438,3.152361,1 +16,4,95,1,2,427123,0,11610.56,5.602327,0,14,1,0,11.95499,0,0,0,11.95499,0,0,0,0,0,5,83.39137,9.967326,0,81.5,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,81.5,9.359756,1.609438,2.481149,1 +16,4,95,1,3,427123,0,11610.56,6.602327,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,83.39137,9.967326,0,81.5,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,81.5,9.359756,1.609438,,0 +11,4,0,1,1,427133,0,7635.19,26.5681,0,16,1,24.961,2.730109,32.76131,0,0,60.45242,0,0,0,2,1,4,61.2,6.9,0,65.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,65.9,8.940654,1.386294,4.101857,1 +11,4,0,1,2,427133,0,7635.19,27.5681,0,16,1,41.68657,0,0,0,0,41.68657,0,0,0,3,1,4,61.2,6.9,0,65.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,65.9,8.940654,1.386294,3.730179,1 +11,4,0,1,3,427133,0,7635.19,28.5681,0,16,1,30.72871,0,0,0,0,30.72871,0,0,0,1,0,4,61.2,6.9,0,65.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,65.9,8.940654,1.386294,3.425197,1 +11,4,0,1,4,427133,0,7635.19,29.5681,0,16,1,141.4838,0,0,0,0,141.4838,0,0,0,5,1,4,61.2,6.9,0,65.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,65.9,8.940654,1.386294,4.952186,1 +11,4,0,1,5,427133,0,7635.19,30.5681,0,16,1,176.8129,6.555475,0,0,0,183.3684,0,0,0,4,0,4,61.2,6.9,0,65.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,65.9,8.940654,1.386294,5.211497,1 +11,4,0,1,1,427134,0,7635.19,23.87953,1,14,1,18.20073,0,33.54134,0,0,51.74207,0,0,0,1,1,4,55.9,13.8,0,72.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.7,8.940654,1.386294,3.946271,1 +11,4,0,1,2,427134,0,7635.19,24.87953,1,14,1,19.11132,0,0,0,0,19.11132,0,0,0,1,1,4,55.9,13.8,0,72.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.7,8.940654,1.386294,2.950281,1 +11,4,0,1,3,427134,0,7635.19,25.87953,1,14,1,28.5338,0,0,0,0,28.5338,0,0,0,1,0,4,55.9,13.8,0,72.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.7,8.940654,1.386294,3.351089,1 +11,4,0,1,4,427134,0,7635.19,26.87953,1,14,1,26.32629,0,0,0,0,26.32629,0,0,0,2,0,4,55.9,13.8,0,72.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.7,8.940654,1.386294,3.270568,1 +11,4,0,1,5,427134,0,7635.19,27.87953,1,14,1,35.62364,3.440899,34.80783,0,0,73.87237,0,0,0,2,1,4,55.9,13.8,0,72.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.7,8.940654,1.386294,4.302339,1 +11,4,0,1,1,427135,0,7635.19,2.934976,0,14,1,190.0676,9.786792,0,0,258.0759,457.9303,1,0,0,5,0,4,83.39137,9.967326,0,100,0,0,1,0,1.386294,0,0,0,0,0,0,0,100,8.940654,1.386294,6.126717,1 +11,4,0,1,2,427135,0,7635.19,3.934976,0,14,1,30.81701,1.385571,0,20.30578,0,32.20258,0,0,1,2,0,4,83.39137,9.967326,0,100,0,0,1,0,1.386294,0,0,0,0,0,0,0,100,8.940654,1.386294,3.472047,1 +11,4,0,1,3,427135,0,7635.19,4.934976,0,14,1,10.97454,2.528534,0,0,0,13.50307,0,0,0,2,0,4,83.39137,9.967326,0,100,0,0,1,0,1.386294,0,0,0,0,0,0,0,100,8.940654,1.386294,2.602917,1 +11,4,0,1,4,427135,0,7635.19,5.934976,0,14,1,48.26486,0,0,0,0,48.26486,0,0,0,4,0,4,83.39137,9.967326,0,100,0,0,1,0,1.386294,0,0,0,0,0,0,0,100,8.940654,1.386294,3.876704,1 +11,4,0,1,5,427135,0,7635.19,6.934976,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,83.39137,9.967326,0,100,0,0,1,0,1.386294,0,0,0,0,0,0,0,100,8.940654,1.386294,,0 +11,4,0,1,1,427136,0,7635.19,.7748117,1,14,1,23.92096,5.24181,0,0,0,29.16277,0,0,0,4,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,1,0,0,92.6,8.940654,1.386294,3.372893,1 +11,4,0,1,2,427136,0,7635.19,1.774812,1,14,1,21.26135,0,0,0,0,21.26135,0,0,0,2,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,1,0,0,92.6,8.940654,1.386294,3.056891,1 +11,4,0,1,3,427136,0,7635.19,2.774812,1,14,1,28.31431,0,4.828797,0,0,33.14311,0,0,0,2,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,1,0,0,92.6,8.940654,1.386294,3.500835,1 +11,4,0,1,4,427136,0,7635.19,3.774812,1,14,1,8.775429,2.325489,0,0,0,11.10092,0,0,0,2,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,1,0,0,92.6,8.940654,1.386294,2.407028,1 +11,4,0,1,5,427136,0,7635.19,4.774812,1,14,1,6.526468,0,0,0,0,6.526468,0,0,0,1,0,4,83.39137,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,1,0,0,92.6,8.940654,1.386294,1.875866,1 +5,4,25,1,1,427152,0,2744.281,11.718,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,63.3,9.967326,0,77.8,150,150,1,0,.6931472,5.010635,0,3.258096,6.39693,0,0,0,77.8,7.917639,.6931472,,0 +5,4,25,1,2,427152,0,2744.281,12.718,0,12,1,89.51049,0,26.80653,0,0,116.317,0,0,0,9,0,2,63.3,9.967326,0,77.8,150,150,1,0,.6931472,5.010635,0,3.258096,6.39693,0,0,0,77.8,7.917639,.6931472,4.75632,1 +5,4,25,1,3,427152,0,2744.281,13.718,0,12,1,6.412997,0,0,0,0,6.412997,0,0,0,1,0,2,63.3,9.967326,0,77.8,150,150,1,0,.6931472,5.010635,0,3.258096,6.39693,0,0,0,77.8,7.917639,.6931472,1.858327,1 +5,4,25,1,1,427153,0,2744.281,33.21561,1,12,1,10.12146,0,0,0,0,10.12146,0,0,0,1,0,2,58,10.3,0,72.6,150,150,0,0,.6931472,5.010635,0,3.258096,6.39693,1,0,0,72.6,7.917639,.6931472,2.314658,1 +5,4,25,1,2,427153,0,2744.281,34.21561,1,12,1,11.18881,0,0,0,0,11.18881,0,0,0,2,0,2,58,10.3,0,72.6,150,150,0,0,.6931472,5.010635,0,3.258096,6.39693,1,0,0,72.6,7.917639,.6931472,2.414914,1 +5,4,25,1,3,427153,0,2744.281,35.21561,1,12,1,281.8213,0,0,0,0,281.8213,0,0,0,6,0,2,58,10.3,0,72.6,150,150,0,0,.6931472,5.010635,0,3.258096,6.39693,1,0,0,72.6,7.917639,.6931472,5.641273,1 +17,4,25,1,1,427161,0,3519.062,8.577686,0,9,1,33.65385,0,0,0,0,33.65385,0,0,0,1,0,7,90,9.967326,0,100,294,294,1,0,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,3.516127,1 +17,4,25,1,2,427161,0,3519.062,9.577686,0,9,1,11.65501,0,0,0,0,11.65501,0,0,0,1,0,7,90,9.967326,0,100,294,294,1,0,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,2.455736,1 +17,4,25,1,3,427161,0,3519.062,10.57769,0,9,1,2.137666,0,22.87302,0,0,25.01069,0,0,0,1,0,7,90,9.967326,0,100,294,294,1,0,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,3.219303,1 +17,4,25,1,4,427161,0,3519.062,11.57769,0,9,1,10.99154,0,0,0,0,10.99154,0,0,0,1,0,6,90,9.967326,0,100,294,294,1,0,1.791759,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.791759,2.397126,1 +17,4,25,1,5,427161,0,3519.062,12.57769,0,9,1,96.32947,0,25.07201,0,0,121.4015,0,0,0,5,0,5,90,9.967326,0,100,294,294,1,0,1.609438,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.609438,4.799103,1 +17,4,25,1,1,427162,0,3519.062,37.57974,1,9,1,115.6174,74.72672,32.38866,0,0,222.7328,0,0,0,7,1,7,45.7,13.8,1,33,294,294,0,0,1.94591,5.68358,0,3.258096,7.069874,1,0,0,33,8.166234,1.94591,5.405973,1 +17,4,25,1,2,427162,0,3519.062,38.57974,1,9,1,36.36364,54.98368,0,0,0,91.34732,0,0,0,2,0,7,45.7,13.8,1,33,294,294,0,0,1.94591,5.68358,0,3.258096,7.069874,1,0,0,33,8.166234,1.94591,4.514669,1 +17,4,25,1,3,427162,0,3519.062,39.57974,1,9,1,0,0,0,0,0,0,0,0,0,0,0,7,45.7,13.8,1,33,294,294,0,0,1.94591,5.68358,0,3.258096,7.069874,1,0,0,33,8.166234,1.94591,,0 +17,4,25,1,4,427162,0,3519.062,40.57974,1,9,1,147.9631,18.15142,0,0,0,166.1145,0,0,0,12,2,6,45.7,13.8,1,33,294,294,0,0,1.791759,5.68358,0,3.258096,7.069874,1,0,0,33,8.166234,1.791759,5.112678,1 +17,4,25,1,5,427162,0,3519.062,41.57974,1,9,1,138.1876,0,35.51106,0,0,173.6986,0,0,0,11,0,5,45.7,13.8,1,33,294,294,0,0,1.609438,5.68358,0,3.258096,7.069874,1,0,0,33,8.166234,1.609438,5.157322,1 +17,4,25,1,1,427163,0,3519.062,14.14647,1,9,1,14.17004,1.341093,0,0,0,15.51113,0,0,0,2,0,7,79.8,17.2,0,72.7,294,294,1,1,1.94591,5.68358,0,3.258096,7.069874,0,0,0,72.7,8.166234,1.94591,2.741558,1 +17,4,25,1,2,427163,0,3519.062,15.14647,1,9,1,67.94872,5.846154,0,0,0,73.79487,0,0,0,9,0,7,79.8,17.2,0,72.7,294,294,1,1,1.94591,5.68358,0,3.258096,7.069874,0,0,0,72.7,8.166234,1.94591,4.301289,1 +17,4,25,1,3,427163,0,3519.062,16.14647,1,9,1,10.68833,0,0,0,0,10.68833,0,0,0,1,0,7,79.8,17.2,0,72.7,294,294,1,1,1.94591,5.68358,0,3.258096,7.069874,0,0,0,72.7,8.166234,1.94591,2.369152,1 +17,4,25,1,1,427165,0,3519.062,6.877481,1,9,1,22.26721,0,3.54251,0,0,25.80972,0,0,0,1,0,7,88.3,9.967326,0,100,294,294,1,1,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,3.250751,1 +17,4,25,1,2,427165,0,3519.062,7.877481,1,9,1,0,0,0,0,0,0,0,0,0,0,0,7,88.3,9.967326,0,100,294,294,1,1,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,,0 +17,4,25,1,3,427165,0,3519.062,8.877481,1,9,1,1.710132,0,0,0,0,1.710132,0,0,0,1,0,7,88.3,9.967326,0,100,294,294,1,1,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,.5365708,1 +17,4,25,1,4,427165,0,3519.062,9.877481,1,9,1,14.98847,0,0,0,0,14.98847,0,0,0,2,0,6,88.3,9.967326,0,100,294,294,1,1,1.791759,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.791759,2.707281,1 +17,4,25,1,5,427165,0,3519.062,10.87748,1,9,1,66.5648,0,0,0,0,66.5648,0,0,0,5,0,5,88.3,9.967326,0,100,294,294,1,1,1.609438,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.609438,4.198176,1 +17,4,25,1,1,427166,0,3519.062,12.59959,0,9,1,45.43522,7.6417,0,0,392.1913,445.2682,1,0,0,7,0,7,90,9.967326,0,100,294,294,1,0,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,6.098677,1 +17,4,25,1,2,427166,0,3519.062,13.59959,0,9,1,62.63403,0,0,0,0,62.63403,0,0,0,4,0,7,90,9.967326,0,100,294,294,1,0,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,4.137309,1 +17,4,25,1,3,427166,0,3519.062,14.59959,0,9,1,4.275331,2.642155,0,0,0,6.917486,0,0,0,1,0,7,90,9.967326,0,100,294,294,1,0,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,1.934052,1 +17,4,25,1,4,427166,0,3519.062,15.59959,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,90,9.967326,0,100,294,294,1,0,1.791759,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.791759,,0 +17,4,25,1,1,427167,0,3519.062,11.72622,1,9,1,15.18219,0,0,0,0,15.18219,0,0,0,2,0,7,90,9.967326,0,100,294,294,1,1,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,2.720123,1 +17,4,25,1,2,427167,0,3519.062,12.72622,1,9,1,11.65501,0,0,0,0,11.65501,0,0,0,1,0,7,90,9.967326,0,100,294,294,1,1,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,2.455736,1 +17,4,25,1,3,427167,0,3519.062,13.72622,1,9,1,0,0,0,0,0,0,0,0,0,0,0,7,90,9.967326,0,100,294,294,1,1,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,,0 +17,4,25,1,4,427167,0,3519.062,14.72622,1,9,1,6.917756,0,0,0,0,6.917756,0,0,0,1,0,6,90,9.967326,0,100,294,294,1,1,1.791759,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.791759,1.934091,1 +17,4,25,1,5,427167,0,3519.062,15.72622,1,9,1,29.43449,0,25.07201,0,0,54.5065,0,0,0,3,0,5,90,9.967326,0,100,294,294,1,1,1.609438,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.609438,3.99832,1 +17,4,25,1,1,427168,0,3519.062,9.752225,1,9,1,0,0,0,0,0,0,0,0,0,0,0,7,91.7,9.967326,0,100,294,294,1,1,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,,0 +17,4,25,1,2,427168,0,3519.062,10.75222,1,9,1,0,0,0,0,0,0,0,0,0,0,0,7,91.7,9.967326,0,100,294,294,1,1,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,,0 +17,4,25,1,3,427168,0,3519.062,11.75222,1,9,1,.8550662,0,0,0,0,.8550662,0,0,0,1,0,7,91.7,9.967326,0,100,294,294,1,1,1.94591,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.94591,-.1565763,1 +17,4,25,1,4,427168,0,3519.062,12.75222,1,9,1,24.98078,1.840892,0,0,0,26.82168,0,0,0,3,0,6,91.7,9.967326,0,100,294,294,1,1,1.791759,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.791759,3.28921,1 +17,4,25,1,5,427168,0,3519.062,13.75222,1,9,1,5.268704,0,0,0,0,5.268704,0,0,0,1,0,5,91.7,9.967326,0,100,294,294,1,1,1.609438,5.68358,0,3.258096,7.069874,0,0,0,100,8.166234,1.609438,1.661784,1 +16,4,95,1,1,427180,0,10312.61,36.72827,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.7,10.3,0,73.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,73.9,9.24122,1.386294,,0 +16,4,95,1,2,427180,0,10312.61,37.72827,0,12,1,27.07454,0,0,0,0,27.07454,0,0,0,3,0,4,77.7,10.3,0,73.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,73.9,9.24122,1.386294,3.298594,1 +16,4,95,1,3,427180,0,10312.61,38.72827,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.7,10.3,0,73.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,73.9,9.24122,1.386294,,0 +16,4,95,1,1,427181,0,10312.61,37.91376,1,12,1,31.15424,9.039837,0,0,0,40.19408,0,0,0,4,0,4,84.6,3.4,1,75,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,75,9.24122,1.386294,3.69372,1 +16,4,95,1,2,427181,0,10312.61,38.91376,1,12,1,45.59306,3.258322,31.41116,0,0,80.26254,0,0,0,5,0,4,84.6,3.4,1,75,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,75,9.24122,1.386294,4.385303,1 +16,4,95,1,3,427181,0,10312.61,39.91376,1,12,1,59.32932,17.7773,.9028375,0,0,78.00946,0,0,0,3,0,4,84.6,3.4,1,75,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,75,9.24122,1.386294,4.35683,1 +16,4,95,1,1,427182,0,10312.61,12.83778,1,12,1,135.332,20.53115,5.107252,0,0,160.9704,0,0,0,5,0,4,93.3,9.967326,0,85.2,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.24122,1.386294,5.081221,1 +16,4,95,1,2,427182,0,10312.61,13.83778,1,12,1,37.97468,13.22082,0,0,0,51.1955,0,0,0,5,0,4,93.3,9.967326,0,85.2,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.24122,1.386294,3.935652,1 +16,4,95,1,3,427182,0,10312.61,14.83778,1,12,1,6.018917,15.47721,0,0,0,21.49613,0,0,0,1,0,4,93.3,9.967326,0,85.2,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.24122,1.386294,3.067873,1 +16,4,95,1,1,427183,0,10312.61,10.90212,0,12,1,9.193054,1.91522,0,0,0,11.10827,0,0,0,2,0,4,70,9.967326,0,96.3,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.24122,1.386294,2.40769,1 +16,4,95,1,2,427183,0,10312.61,11.90212,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,70,9.967326,0,96.3,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.24122,1.386294,,0 +16,4,95,1,3,427183,0,10312.61,12.90212,0,12,1,85.76956,0,0,0,0,85.76956,0,0,0,4,0,4,70,9.967326,0,96.3,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.24122,1.386294,4.451664,1 +13,4,0,1,1,427195,0,12450.44,5.226557,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,83.3,9.967326,0,96.3,300,291.84,1,1,1.098612,5.676206,1,4.564348,5.755076,0,0,0,96.3,9.429591,1.098612,,0 +13,4,0,1,2,427195,0,12450.44,6.226557,1,16,1,27.97203,0,0,0,0,27.97203,0,0,0,2,0,3,83.3,9.967326,0,96.3,300,291.84,1,1,1.098612,5.676206,1,4.564348,5.755076,0,0,0,96.3,9.429591,1.098612,3.331205,1 +13,4,0,1,3,427195,0,12450.44,7.226557,1,16,1,44.46345,0,0,0,0,44.46345,0,0,0,5,0,3,83.3,9.967326,0,96.3,300,291.84,1,1,1.098612,5.676206,1,4.564348,5.755076,0,0,0,96.3,9.429591,1.098612,3.794667,1 +13,4,0,1,1,427196,0,12450.44,32.74743,1,16,1,104.8583,7.995952,0,37.95547,0,112.8542,0,0,3,6,0,3,50,13.8,0,72.7,300,291.84,0,0,1.098612,5.676206,1,4.564348,5.755076,0,0,0,72.7,9.429591,1.098612,4.726097,1 +13,4,0,1,2,427196,0,12450.44,33.74743,1,16,1,50.81585,0,0,0,0,50.81585,0,0,0,5,0,3,50,13.8,0,72.7,300,291.84,0,0,1.098612,5.676206,1,4.564348,5.755076,0,0,0,72.7,9.429591,1.098612,3.928208,1 +13,4,0,1,3,427196,0,12450.44,34.74743,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,50,13.8,0,72.7,300,291.84,0,0,1.098612,5.676206,1,4.564348,5.755076,0,0,0,72.7,9.429591,1.098612,,0 +13,4,0,1,1,427197,0,12450.44,1.809719,0,16,1,55.66801,7.667004,0,0,238.7348,302.0698,1,0,0,6,0,3,83.39137,9.967326,0,96.3,300,291.84,1,0,1.098612,5.676206,1,4.564348,5.755076,0,0,0,96.3,9.429591,1.098612,5.710658,1 +13,4,0,1,2,427197,0,12450.44,2.809719,0,16,1,18.64802,1.328671,0,0,9.324009,29.3007,0,0,0,3,0,3,83.39137,9.967326,0,96.3,300,291.84,1,0,1.098612,5.676206,1,4.564348,5.755076,0,0,0,96.3,9.429591,1.098612,3.377611,1 +13,4,0,1,3,427197,0,12450.44,3.809719,0,16,1,23.08679,0,0,0,0,23.08679,0,0,0,1,0,3,83.39137,9.967326,0,96.3,300,291.84,1,0,1.098612,5.676206,1,4.564348,5.755076,0,0,0,96.3,9.429591,1.098612,3.139261,1 +7,4,25,0,1,427204,0,7910.823,1.24846,0,10,1,7.727975,0,0,0,0,7.727975,0,0,0,1,0,4,83.39137,9.967326,0,81.5,750,749.8,1,0,1.386294,6.619806,0,3.258096,8.006368,1,0,0,81.5,8.976113,1.386294,2.044847,1 +7,4,25,0,2,427204,0,7910.823,2.24846,0,10,1,5.681818,0,0,0,0,5.681818,0,0,0,1,0,4,83.39137,9.967326,0,81.5,750,749.8,1,0,1.386294,6.619806,0,3.258096,8.006368,1,0,0,81.5,8.976113,1.386294,1.737271,1 +7,4,25,0,3,427204,0,7910.823,3.24846,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.39137,9.967326,0,81.5,750,749.8,1,0,1.386294,6.619806,0,3.258096,8.006368,1,0,0,81.5,8.976113,1.386294,,0 +7,4,25,0,4,427204,0,7910.823,4.24846,0,10,1,6.301693,0,0,0,0,6.301693,0,0,0,1,0,5,83.39137,9.967326,0,81.5,750,749.8,1,0,1.609438,6.619806,0,3.258096,8.006368,1,0,0,81.5,8.976113,1.609438,1.840818,1 +7,4,25,0,5,427204,0,7910.823,5.24846,0,10,1,6.440072,0,0,0,0,6.440072,0,0,0,1,0,5,83.39137,9.967326,0,81.5,750,749.8,1,0,1.609438,6.619806,0,3.258096,8.006368,1,0,0,81.5,8.976113,1.609438,1.86254,1 +7,4,25,0,1,427205,0,7910.823,3.000684,1,10,1,22.66873,0,0,0,0,22.66873,0,0,0,2,0,4,83.39137,9.967326,0,51.9,750,749.8,1,1,1.386294,6.619806,0,3.258096,8.006368,1,0,0,51.9,8.976113,1.386294,3.120986,1 +7,4,25,0,2,427205,0,7910.823,4.000684,1,10,1,13.73106,3.077652,0,0,0,16.80871,0,0,0,2,0,4,83.39137,9.967326,0,51.9,750,749.8,1,1,1.386294,6.619806,0,3.258096,8.006368,1,0,0,51.9,8.976113,1.386294,2.821897,1 +7,4,25,0,3,427205,0,7910.823,5.000684,1,10,1,6.501951,.8625921,0,0,0,7.364542,0,0,0,1,0,4,83.39137,9.967326,0,51.9,750,749.8,1,1,1.386294,6.619806,0,3.258096,8.006368,1,0,0,51.9,8.976113,1.386294,1.996677,1 +7,4,25,0,4,427205,0,7910.823,6.000684,1,10,1,37.81016,6.278062,0,0,0,44.08822,0,0,0,8,0,5,83.39137,9.967326,0,51.9,750,749.8,1,1,1.609438,6.619806,0,3.258096,8.006368,1,0,0,51.9,8.976113,1.609438,3.786193,1 +7,4,25,0,5,427205,0,7910.823,7.000684,1,10,1,26.47585,5.745975,22.18247,0,0,54.40429,0,0,0,4,1,5,83.39137,9.967326,0,51.9,750,749.8,1,1,1.609438,6.619806,0,3.258096,8.006368,1,0,0,51.9,8.976113,1.609438,3.996443,1 +7,4,25,0,1,427206,0,7910.823,32.37235,0,10,1,5.151984,3.086038,0,0,301.5765,309.8145,1,0,0,1,0,4,77.7,10.3,0,73.9,750,749.8,0,0,1.386294,6.619806,0,3.258096,8.006368,0,0,0,73.9,8.976113,1.386294,5.735974,1 +7,4,25,0,2,427206,0,7910.823,33.37235,0,10,1,13.25758,2.585227,0,0,0,15.8428,0,0,0,2,0,4,77.7,10.3,0,73.9,750,749.8,0,0,1.386294,6.619806,0,3.258096,8.006368,0,0,0,73.9,8.976113,1.386294,2.762715,1 +7,4,25,0,3,427206,0,7910.823,34.37235,0,10,1,60.9016,4.312961,0,0,0,65.21456,0,0,0,7,0,4,77.7,10.3,0,73.9,750,749.8,0,0,1.386294,6.619806,0,3.258096,8.006368,0,0,0,73.9,8.976113,1.386294,4.177683,1 +7,4,25,0,4,427206,0,7910.823,35.37235,0,10,1,15.75423,6.262308,25.20677,0,0,47.22332,0,0,0,1,1,5,77.7,10.3,0,73.9,750,749.8,0,0,1.609438,6.619806,0,3.258096,8.006368,0,0,0,73.9,8.976113,1.609438,3.854888,1 +7,4,25,0,5,427206,0,7910.823,36.37235,0,10,1,10.73345,19.47048,0,0,0,30.20394,0,0,0,2,0,5,77.7,10.3,0,73.9,750,749.8,0,0,1.609438,6.619806,0,3.258096,8.006368,0,0,0,73.9,8.976113,1.609438,3.407972,1 +7,4,25,0,1,427207,0,7910.823,28.60233,1,10,1,12.62236,0,0,0,0,12.62236,0,0,0,1,0,4,85.1,0,0,83,750,749.8,0,0,1.386294,6.619806,0,3.258096,8.006368,0,0,0,83,8.976113,1.386294,2.53547,1 +7,4,25,0,2,427207,0,7910.823,29.60233,1,10,1,102.7794,0,2.840909,0,464.9621,570.5824,1,0,0,3,0,4,85.1,0,0,83,750,749.8,0,0,1.386294,6.619806,0,3.258096,8.006368,0,0,0,83,8.976113,1.386294,6.346658,1 +7,4,25,0,3,427207,0,7910.823,30.60233,1,10,1,19.50585,0,0,0,1578.561,1598.067,2,0,0,3,0,4,85.1,0,0,83,750,749.8,0,0,1.386294,6.619806,0,3.258096,8.006368,0,0,0,83,8.976113,1.386294,7.37655,1 +7,4,25,0,4,427207,0,7910.823,31.60233,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,85.1,0,0,83,750,749.8,0,0,1.609438,6.619806,0,3.258096,8.006368,0,0,0,83,8.976113,1.609438,,0 +7,4,25,0,5,427207,0,7910.823,32.60233,1,10,1,14.31127,0,0,0,0,14.31127,0,0,0,2,0,5,85.1,0,0,83,750,749.8,0,0,1.609438,6.619806,0,3.258096,8.006368,0,0,0,83,8.976113,1.609438,2.661047,1 +11,4,0,1,1,427208,0,1713.783,1.0705,1,12,1,7.591093,0,0,0,0,7.591093,0,0,0,1,0,2,83.39137,9.967326,0,85.2,0,0,1,1,.6931472,0,0,0,0,1,0,0,85.2,7.447042,.6931472,2.026976,1 +11,4,0,1,2,427208,0,1713.783,2.0705,1,12,1,70.62937,12.70396,0,0,0,83.33334,0,0,0,6,0,2,83.39137,9.967326,0,85.2,0,0,1,1,.6931472,0,0,0,0,1,0,0,85.2,7.447042,.6931472,4.422849,1 +11,4,0,1,3,427208,0,1713.783,3.0705,1,12,1,6.84053,3.569902,0,0,0,10.41043,0,0,0,1,0,2,83.39137,9.967326,0,85.2,0,0,1,1,.6931472,0,0,0,0,1,0,0,85.2,7.447042,.6931472,2.342808,1 +11,4,0,1,1,427209,0,1713.783,21.78782,1,12,1,26.06275,8.790485,22.26721,0,0,57.12045,0,0,0,3,0,2,75,0,0,79.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,79.5,7.447042,.6931472,4.045162,1 +11,4,0,1,2,427209,0,1713.783,22.78782,1,12,1,71.79487,20.67599,6.130536,0,0,98.6014,0,0,0,4,0,2,75,0,0,79.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,79.5,7.447042,.6931472,4.591085,1 +11,4,0,1,3,427209,0,1713.783,23.78782,1,12,1,30.56862,4.788371,0,0,0,35.35699,0,0,0,3,0,2,75,0,0,79.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,79.5,7.447042,.6931472,3.565496,1 +6,4,25,1,1,427210,0,11720.23,13.18823,0,13,1,25.67926,1.016343,0,0,0,26.69561,0,0,0,3,0,4,98.3,9.967326,0,100,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.369158,1.386294,3.284499,1 +6,4,25,1,2,427210,0,11720.23,14.18823,0,13,1,20.62822,0,0,0,0,20.62822,0,0,0,2,0,4,98.3,9.967326,0,100,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.369158,1.386294,3.02666,1 +6,4,25,1,3,427210,0,11720.23,15.18823,0,13,1,18.9166,2.687016,0,0,0,21.60361,0,0,0,3,0,4,98.3,9.967326,0,100,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.369158,1.386294,3.07286,1 +6,4,25,1,1,427211,0,11720.23,11.62218,1,13,1,35.82227,1.016343,30.64351,0,0,67.48212,0,0,0,2,0,4,98.3,9.967326,0,100,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.369158,1.386294,4.211863,1 +6,4,25,1,2,427211,0,11720.23,12.62218,1,13,1,28.12939,2.639475,0,0,0,30.76887,0,0,0,4,0,4,98.3,9.967326,0,100,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.369158,1.386294,3.426503,1 +6,4,25,1,3,427211,0,11720.23,13.62218,1,13,1,102.7515,0,25.02579,0,0,127.7773,0,0,0,8,0,4,98.3,9.967326,0,100,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.369158,1.386294,4.850289,1 +6,4,25,1,1,427212,0,11720.23,35.64956,1,13,1,12.76813,4.468846,0,0,0,17.23698,0,0,0,1,0,4,98.4,0,1,94.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,94.3,9.369158,1.386294,2.847057,1 +6,4,25,1,2,427212,0,11720.23,36.64956,1,13,1,11.72058,0,0,0,0,11.72058,0,0,0,1,0,4,98.4,0,1,94.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,94.3,9.369158,1.386294,2.461346,1 +6,4,25,1,3,427212,0,11720.23,37.64956,1,13,1,49.01118,0,27.15391,0,384.5873,460.7523,1,0,0,5,0,4,98.4,0,1,94.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,94.3,9.369158,1.386294,6.132861,1 +6,4,25,1,1,427213,0,11720.23,39.78918,0,16,1,59.37181,14.55567,3.575077,0,0,77.50256,0,0,0,5,0,4,89.4,13.8,0,81.8,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,81.8,9.369158,1.386294,4.350311,1 +6,4,25,1,2,427213,0,11720.23,40.78918,0,16,1,139.5921,4.992968,0,0,0,144.5851,0,0,0,2,0,4,89.4,13.8,0,81.8,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,81.8,9.369158,1.386294,4.973868,1 +6,4,25,1,3,427213,0,11720.23,41.78918,0,16,1,56.74979,21.38865,0,0,0,78.13844,0,0,0,3,0,4,89.4,13.8,0,81.8,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,81.8,9.369158,1.386294,4.358482,1 +11,4,0,1,1,427219,0,10515.54,42.59274,1,12,1,121.5334,31.62955,0,0,0,153.1629,0,0,0,6,0,6,22.9,37.9,0,35.2,0,30,0,0,1.791759,3.401197,0,0,0,1,0,0,35.2,9.260705,1.791759,5.031502,1 +11,4,0,1,2,427219,0,10515.54,43.59274,1,12,1,60.45221,33.79953,26.80653,0,0,121.0583,0,0,0,3,0,6,22.9,37.9,0,35.2,0,30,0,0,1.791759,3.401197,0,0,0,1,0,0,35.2,9.260705,1.791759,4.796272,1 +11,4,0,1,3,427219,0,10515.54,44.59274,1,12,1,0,26.7422,0,0,0,26.7422,0,0,0,0,0,4,22.9,37.9,0,35.2,0,30,0,0,1.386294,3.401197,0,0,0,1,0,0,35.2,9.260705,1.386294,3.286243,1 +11,4,0,1,4,427219,0,10515.54,45.59274,1,12,1,73.78939,35.49193,0,0,0,109.2813,0,0,0,3,0,5,22.9,37.9,0,35.2,0,30,0,0,1.609438,3.401197,0,0,0,1,0,0,35.2,9.260705,1.609438,4.693925,1 +11,4,0,1,5,427219,0,10515.54,46.59274,1,12,1,68.31753,25.39515,29.85599,0,0,123.5687,0,0,0,5,0,5,22.9,37.9,0,35.2,0,30,0,0,1.609438,3.401197,0,0,0,1,0,0,35.2,9.260705,1.609438,4.816797,1 +11,4,0,1,1,427220,0,10515.54,4.722793,0,12,1,38.46154,5.668016,0,0,0,44.12955,0,0,0,3,0,6,83.39137,9.967326,0,74.1,0,30,1,0,1.791759,3.401197,0,0,0,0,0,0,74.1,9.260705,1.791759,3.78713,1 +11,4,0,1,2,427220,0,10515.54,5.722793,0,12,1,53.14685,4.662004,0,0,0,57.80886,0,0,0,4,0,6,83.39137,9.967326,0,74.1,0,30,1,0,1.791759,3.401197,0,0,0,0,0,0,74.1,9.260705,1.791759,4.057142,1 +11,4,0,1,3,427220,0,10515.54,6.722793,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.39137,9.967326,0,74.1,0,30,1,0,1.386294,3.401197,0,0,0,0,0,0,74.1,9.260705,1.386294,,0 +11,4,0,1,4,427220,0,10515.54,7.722793,0,12,1,5.380476,0,0,0,0,5.380476,0,0,0,1,0,5,83.39137,9.967326,0,74.1,0,30,1,0,1.609438,3.401197,0,0,0,0,0,0,74.1,9.260705,1.609438,1.682777,1 +11,4,0,1,5,427220,0,10515.54,8.722793,0,12,1,5.268704,0,0,0,0,5.268704,0,0,0,1,0,5,83.39137,9.967326,0,74.1,0,30,1,0,1.609438,3.401197,0,0,0,0,0,0,74.1,9.260705,1.609438,1.661784,1 +11,4,0,1,1,427221,0,10515.54,6.075291,1,12,1,14.82794,0,0,0,0,14.82794,0,0,0,1,0,6,70,9.967326,0,70.4,0,30,1,1,1.791759,3.401197,0,0,0,0,0,0,70.4,9.260705,1.791759,2.696513,1 +11,4,0,1,2,427221,0,10515.54,7.075291,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,70,9.967326,0,70.4,0,30,1,1,1.791759,3.401197,0,0,0,0,0,0,70.4,9.260705,1.791759,,0 +11,4,0,1,3,427221,0,10515.54,8.075291,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,70,9.967326,0,70.4,0,30,1,1,1.386294,3.401197,0,0,0,0,0,0,70.4,9.260705,1.386294,,0 +11,4,0,1,4,427221,0,10515.54,9.075291,1,12,1,5.380476,0,0,0,0,5.380476,0,0,0,1,0,5,70,9.967326,0,70.4,0,30,1,1,1.609438,3.401197,0,0,0,0,0,0,70.4,9.260705,1.609438,1.682777,1 +11,4,0,1,5,427221,0,10515.54,10.07529,1,12,1,6.322445,0,0,0,0,6.322445,0,0,0,1,0,5,70,9.967326,0,70.4,0,30,1,1,1.609438,3.401197,0,0,0,0,0,0,70.4,9.260705,1.609438,1.844106,1 +11,4,0,1,1,427222,0,10515.54,16.07118,1,12,1,49.27126,.8248988,0,0,389.6255,439.7216,1,0,0,1,0,6,79.8,0,0,86.4,0,30,1,1,1.791759,3.401197,0,0,0,0,0,0,86.4,9.260705,1.791759,6.086142,1 +11,4,0,1,2,427222,0,10515.54,17.07118,1,12,1,92.54079,2.097902,0,0,0,94.63869,0,0,0,1,1,6,79.8,0,0,86.4,0,30,1,1,1.791759,3.401197,0,0,0,0,0,0,86.4,9.260705,1.791759,4.550066,1 +11,4,0,1,1,427223,0,10515.54,52.08761,0,12,1,168.9372,11.8168,59.6913,0,0,240.4453,0,0,0,6,0,6,83.5,6.9,0,77.3,0,30,0,0,1.791759,3.401197,0,0,0,1,0,0,77.3,9.260705,1.791759,5.482493,1 +11,4,0,1,2,427223,0,10515.54,53.08761,0,12,1,18.99767,6.969697,0,0,0,25.96737,0,0,0,1,0,6,83.5,6.9,0,77.3,0,30,0,0,1.791759,3.401197,0,0,0,1,0,0,77.3,9.260705,1.791759,3.25684,1 +11,4,0,1,3,427223,0,10515.54,54.08761,0,12,1,125.2672,6.39162,10.68833,0,0,142.3472,0,0,0,1,20,4,83.5,6.9,0,77.3,0,30,0,0,1.386294,3.401197,0,0,0,1,0,0,77.3,9.260705,1.386294,4.958269,1 +11,4,0,1,4,427223,0,10515.54,55.08761,0,12,1,50.73021,0,46.11837,0,0,96.84858,0,0,0,0,8,5,83.5,6.9,0,77.3,0,30,0,0,1.609438,3.401197,0,0,0,1,0,0,77.3,9.260705,1.609438,4.573149,1 +11,4,0,1,5,427223,0,10515.54,56.08761,0,12,1,101.5982,5.953635,0,0,0,107.5518,0,0,0,4,8,5,83.5,6.9,0,77.3,0,30,0,0,1.609438,3.401197,0,0,0,1,0,0,77.3,9.260705,1.609438,4.677973,1 +11,4,0,1,1,427224,0,7910.823,21.02669,0,13,1,12.76813,0,0,0,0,12.76813,0,0,0,1,0,1,39.9,20.7,0,71.6,0,348,0,0,0,5.852202,0,0,0,1,0,0,71.6,8.976113,0,2.546952,1 +11,4,0,1,2,427224,0,7910.823,22.02669,0,13,1,33.78341,0,0,0,0,33.78341,0,0,0,1,0,1,39.9,20.7,0,71.6,0,348,0,0,0,5.852202,0,0,0,1,0,0,71.6,8.976113,0,3.51997,1 +11,4,0,1,3,427224,0,7910.823,23.02669,0,13,1,36.71109,.8598452,22.7859,0,0,60.35683,0,0,0,4,0,1,39.9,20.7,0,71.6,0,348,0,0,0,5.852202,0,0,0,1,0,0,71.6,8.976113,0,4.100274,1 +11,4,0,1,4,427224,0,7910.823,24.02669,0,13,1,63.25708,1.938736,0,0,0,65.19582,0,0,0,3,0,1,39.9,20.7,0,71.6,0,348,0,0,0,5.852202,0,0,0,1,0,0,71.6,8.976113,0,4.177395,1 +11,4,0,1,5,427224,0,7910.823,25.02669,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,39.9,20.7,0,71.6,0,348,0,0,0,5.852202,0,0,0,1,0,0,71.6,8.976113,0,,0 +11,4,0,1,1,427262,0,3559.531,32.1013,1,12,1,5.151984,1.854714,0,0,0,7.006698,0,0,0,1,0,3,85.1,6.9,0,70.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,70.5,8.177665,1.098612,1.946867,1 +11,4,0,1,2,427262,0,3559.531,33.1013,1,12,1,11.83712,0,0,0,0,11.83712,0,0,0,1,0,3,85.1,6.9,0,70.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,70.5,8.177665,1.098612,2.471241,1 +11,4,0,1,3,427262,0,3559.531,34.1013,1,12,1,18.85566,13.15128,0,0,0,32.00694,0,0,0,2,0,3,85.1,6.9,0,70.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,70.5,8.177665,1.098612,3.465953,1 +11,4,0,1,1,427263,0,3559.531,34.31896,0,13,1,22.28233,0,0,0,0,22.28233,0,0,0,1,0,3,76.6,10.3,0,76.1,0,0,0,0,1.098612,0,0,0,0,1,0,0,76.1,8.177665,1.098612,3.103794,1 +11,4,0,1,2,427263,0,3559.531,35.31896,0,13,1,125.8996,0,0,0,0,125.8996,0,0,0,5,0,3,76.6,10.3,0,76.1,0,0,0,0,1.098612,0,0,0,0,1,0,0,76.1,8.177665,1.098612,4.835485,1 +11,4,0,1,3,427263,0,3559.531,36.31896,0,13,1,84.78544,7.147811,0,0,0,91.93325,0,0,0,5,1,3,76.6,10.3,0,76.1,0,0,0,0,1.098612,0,0,0,0,1,0,0,76.1,8.177665,1.098612,4.521063,1 +11,4,0,1,1,427264,0,3559.531,8.50924,0,12,1,28.99021,13.6373,0,0,0,42.62751,0,0,0,3,0,3,66.7,9.967326,0,66.7,0,0,1,0,1.098612,0,0,0,0,1,0,0,66.7,8.177665,1.098612,3.7525,1 +11,4,0,1,2,427264,0,3559.531,9.50924,0,12,1,15.86174,9.758523,0,0,0,25.62027,0,0,0,2,0,3,66.7,9.967326,0,66.7,0,0,1,0,1.098612,0,0,0,0,1,0,0,66.7,8.177665,1.098612,3.243384,1 +11,4,0,1,3,427264,0,3559.531,10.50924,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,66.7,9.967326,0,66.7,0,0,1,0,1.098612,0,0,0,0,1,0,0,66.7,8.177665,1.098612,,0 +11,4,0,1,1,427281,0,3134.956,6.53525,0,12,1,11.23596,0,0,0,0,11.23596,0,0,0,2,0,4,91.7,9.967326,0,96.3,0,204.6,1,0,1.386294,5.321057,0,0,0,0,0,0,96.3,8.05069,1.386294,2.419119,1 +11,4,0,1,2,427281,0,3134.956,7.53525,0,12,1,12.1894,5.977497,0,0,0,18.1669,0,0,0,2,0,4,91.7,9.967326,0,96.3,0,204.6,1,0,1.386294,5.321057,0,0,0,0,0,0,96.3,8.05069,1.386294,2.899601,1 +11,4,0,1,3,427281,0,3134.956,8.53525,0,12,1,6.018917,5.481514,0,0,0,11.50043,0,0,0,1,0,5,91.7,9.967326,0,96.3,0,204.6,1,0,1.609438,5.321057,0,0,0,0,0,0,96.3,8.05069,1.609438,2.442384,1 +11,4,0,1,1,427282,0,3134.956,2.176591,0,12,1,17.87538,0,0,0,0,17.87538,0,0,0,3,0,4,83.39137,9.967326,0,96.3,0,204.6,1,0,1.386294,5.321057,0,0,0,0,0,0,96.3,8.05069,1.386294,2.883425,1 +11,4,0,1,2,427282,0,3134.956,3.176591,0,12,1,15.93999,1.064229,0,0,0,17.00422,0,0,0,3,0,4,83.39137,9.967326,0,96.3,0,204.6,1,0,1.386294,5.321057,0,0,0,0,0,0,96.3,8.05069,1.386294,2.833462,1 +11,4,0,1,3,427282,0,3134.956,4.176591,0,12,1,29.23474,6.964746,0,0,0,36.19949,0,0,0,3,2,5,83.39137,9.967326,0,96.3,0,204.6,1,0,1.609438,5.321057,0,0,0,0,0,0,96.3,8.05069,1.609438,3.589045,1 +11,4,0,1,1,427283,0,3134.956,26.60096,1,12,1,112.5741,4.826354,0,0,0,117.4004,0,0,0,4,3,4,88.3,3.4,0,77.3,0,204.6,0,0,1.386294,5.321057,0,0,0,0,0,0,77.3,8.05069,1.386294,4.76559,1 +11,4,0,1,2,427283,0,3134.956,27.60096,1,12,1,62.00188,0,0,0,555.4478,617.4496,1,0,0,0,7,4,88.3,3.4,0,77.3,0,204.6,0,0,1.386294,5.321057,0,0,0,0,0,0,77.3,8.05069,1.386294,6.425597,1 +11,4,0,1,3,427283,0,3134.956,28.60096,1,12,1,670.4342,0,0,0,0,670.4342,0,0,0,7,0,5,88.3,3.4,0,77.3,0,204.6,0,0,1.609438,5.321057,0,0,0,0,0,0,77.3,8.05069,1.609438,6.507926,1 +11,4,0,1,1,427284,0,3134.956,29.00753,0,14,1,54.90296,0,0,0,0,54.90296,0,0,0,3,0,4,83,3.4,0,88.6,0,204.6,0,0,1.386294,5.321057,0,0,0,0,0,0,88.6,8.05069,1.386294,4.005567,1 +11,4,0,1,2,427284,0,3134.956,30.00753,0,14,1,241.2564,0,70.32349,0,0,311.5799,0,0,0,1,1,4,83,3.4,0,88.6,0,204.6,0,0,1.386294,5.321057,0,0,0,0,0,0,88.6,8.05069,1.386294,5.741656,1 +11,4,0,1,3,427284,0,3134.956,31.00753,0,14,1,37.29579,8.361995,12.89768,0,0,58.55546,0,0,0,2,3,5,83,3.4,0,88.6,0,204.6,0,0,1.609438,5.321057,0,0,0,0,0,0,88.6,8.05069,1.609438,4.069974,1 +13,4,0,1,1,427285,0,527.8593,12.17248,1,13,1,91.16445,5.87334,0,0,0,97.0378,0,0,0,3,0,2,91.7,9.967326,0,88.9,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,1,0,0,88.9,6.270722,.6931472,4.5751,1 +13,4,0,1,2,427285,0,527.8593,13.17248,1,13,1,83.45054,0,0,0,0,83.45054,0,0,0,5,0,2,91.7,9.967326,0,88.9,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,1,0,0,88.9,6.270722,.6931472,4.424254,1 +13,4,0,1,3,427285,0,527.8593,14.17248,1,13,1,111.8874,2.55804,0,25.79536,0,114.4454,0,0,3,8,0,2,91.7,9.967326,0,88.9,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,1,0,0,88.9,6.270722,.6931472,4.740098,1 +13,4,0,1,1,427286,0,527.8593,45.41821,1,13,1,6.128703,7.660879,0,0,0,13.78958,0,0,0,1,0,2,85.6,17.2,0,89.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,89.8,6.270722,.6931472,2.623913,1 +13,4,0,1,2,427286,0,527.8593,46.41821,1,13,1,33.52086,0,0,0,0,33.52086,0,0,0,2,0,2,85.6,17.2,0,89.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,89.8,6.270722,.6931472,3.512168,1 +13,4,0,1,3,427286,0,527.8593,47.41821,1,13,1,0,0,0,17.19691,0,0,0,0,2,0,0,2,85.6,17.2,0,89.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,89.8,6.270722,.6931472,,0 +15,4,95,1,1,427304,0,2381.818,4.750171,1,10,1,60.50101,44.77733,0,0,0,105.2783,0,0,0,4,0,3,83.39137,9.967326,0,29.6,322,322,1,1,1.098612,5.774551,0,4.564348,5.825845,0,0,1,29.6,7.776039,1.098612,4.656608,1 +15,4,95,1,2,427304,0,2381.818,5.750171,1,10,1,62.37762,66.63869,7.925408,0,226.3869,363.3287,1,0,0,7,0,3,83.39137,9.967326,0,29.6,322,322,1,1,1.098612,5.774551,0,4.564348,5.825845,0,0,1,29.6,7.776039,1.098612,5.895308,1 +15,4,95,1,3,427304,0,2381.818,6.750171,1,10,1,270.0257,58.58487,0,0,0,328.6105,0,0,0,5,0,3,83.39137,9.967326,0,29.6,322,322,1,1,1.098612,5.774551,0,4.564348,5.825845,0,0,1,29.6,7.776039,1.098612,5.794873,1 +15,4,95,1,1,427305,0,2381.818,23.22793,1,10,1,0,7.312753,0,0,0,7.312753,0,0,0,0,0,3,70.7,10.3,0,85.2,322,322,0,0,1.098612,5.774551,0,4.564348,5.825845,0,0,0,85.2,7.776039,1.098612,1.98962,1 +15,4,95,1,2,427305,0,2381.818,24.22793,1,10,1,30.30303,8.195805,0,0,0,38.49883,0,0,0,4,0,3,70.7,10.3,0,85.2,322,322,0,0,1.098612,5.774551,0,4.564348,5.825845,0,0,0,85.2,7.776039,1.098612,3.650628,1 +15,4,95,1,3,427305,0,2381.818,25.22793,1,10,1,37.10987,7.058572,0,0,0,44.16845,0,0,0,4,0,3,70.7,10.3,0,85.2,322,322,0,0,1.098612,5.774551,0,4.564348,5.825845,0,0,0,85.2,7.776039,1.098612,3.788011,1 +15,4,95,1,1,427306,0,2381.818,2.034223,1,10,1,5.060729,8.603239,0,0,0,13.66397,0,0,0,1,0,3,83.39137,9.967326,0,25.9,322,322,1,1,1.098612,5.774551,0,4.564348,5.825845,1,0,0,25.9,7.776039,1.098612,2.614762,1 +15,4,95,1,2,427306,0,2381.818,3.034223,1,10,1,28.32168,9.160839,0,0,0,37.48252,0,0,0,3,0,3,83.39137,9.967326,0,25.9,322,322,1,1,1.098612,5.774551,0,4.564348,5.825845,1,0,0,25.9,7.776039,1.098612,3.623875,1 +15,4,95,1,3,427306,0,2381.818,4.034223,1,10,1,11.97093,4.360838,0,0,0,16.33177,0,0,0,2,0,3,83.39137,9.967326,0,25.9,322,322,1,1,1.098612,5.774551,0,4.564348,5.825845,1,0,0,25.9,7.776039,1.098612,2.793112,1 +11,4,0,1,1,427317,0,2731.378,12.87885,0,12,1,18.21862,3.997976,0,0,0,22.2166,0,0,0,3,0,5,78.3,9.967326,1,55.6,0,0,1,0,1.609438,0,0,0,0,0,0,0,55.6,7.912928,1.609438,3.10084,1 +11,4,0,1,2,427317,0,2731.378,13.87885,0,12,1,108.8578,3.030303,.9324009,0,0,112.8205,0,0,0,8,0,5,78.3,9.967326,1,55.6,0,0,1,0,1.609438,0,0,0,0,0,0,0,55.6,7.912928,1.609438,4.725798,1 +11,4,0,1,3,427317,0,2731.378,14.87885,0,12,1,27.469,3.398888,0,0,0,30.86789,0,0,0,4,0,5,78.3,9.967326,1,55.6,0,0,1,0,1.609438,0,0,0,0,0,0,0,55.6,7.912928,1.609438,3.429717,1 +11,4,0,1,1,427318,0,2731.378,11.77823,1,12,1,41.49797,3.036437,31.5081,0,0,76.04251,0,0,0,6,0,5,80,9.967326,0,88.9,0,0,1,1,1.609438,0,0,0,0,0,0,0,88.9,7.912928,1.609438,4.331293,1 +11,4,0,1,2,427318,0,2731.378,12.77823,1,12,1,62.12121,13.61305,60.54079,0,0,136.2751,0,0,0,6,0,5,80,9.967326,0,88.9,0,0,1,1,1.609438,0,0,0,0,0,0,0,88.9,7.912928,1.609438,4.914675,1 +11,4,0,1,3,427318,0,2731.378,13.77823,1,12,1,39.11928,7.054296,12.06071,0,0,58.23429,0,0,0,4,0,5,80,9.967326,0,88.9,0,0,1,1,1.609438,0,0,0,0,0,0,0,88.9,7.912928,1.609438,4.064474,1 +11,4,0,1,1,427319,0,2731.378,34.99521,1,12,1,67.37854,23.96255,0,0,0,91.34109,0,0,0,3,0,5,78.2,31,0,73.9,0,0,0,0,1.609438,0,0,0,0,1,0,0,73.9,7.912928,1.609438,4.514601,1 +11,4,0,1,2,427319,0,2731.378,35.99521,1,12,1,56.36364,15.61772,0,0,441.5664,513.5478,1,0,0,3,0,5,78.2,31,0,73.9,0,0,0,0,1.609438,0,0,0,0,1,0,0,73.9,7.912928,1.609438,6.241343,1 +11,4,0,1,3,427319,0,2731.378,36.99521,1,12,1,46.51561,20.50021,0,136.8106,0,67.01582,0,0,8,3,0,5,78.2,31,0,73.9,0,0,0,0,1.609438,0,0,0,0,1,0,0,73.9,7.912928,1.609438,4.204929,1 +11,4,0,1,1,427320,0,2731.378,10.68583,0,12,1,27.32794,24.79757,0,0,0,52.12551,0,0,0,7,0,5,61.7,9.967326,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,7.912928,1.609438,3.953655,1 +11,4,0,1,2,427320,0,2731.378,11.68583,0,12,1,61.53846,24.07925,31.56643,130.5361,0,117.1842,0,0,7,8,0,5,61.7,9.967326,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,7.912928,1.609438,4.763747,1 +11,4,0,1,3,427320,0,2731.378,12.68583,0,12,1,65.45532,3.420265,0,684.053,0,68.87559,0,0,40,5,0,5,61.7,9.967326,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,7.912928,1.609438,4.232302,1 +11,4,0,1,1,427321,0,2731.378,2.195756,0,12,1,40.63259,12.67713,0,0,0,53.30972,0,0,0,4,0,5,83.39137,9.967326,0,66.7,0,0,1,0,1.609438,0,0,0,0,0,0,0,66.7,7.912928,1.609438,3.976119,1 +11,4,0,1,2,427321,0,2731.378,3.195756,0,12,1,67.85548,10.72261,0,0,0,78.57809,0,0,0,7,0,5,83.39137,9.967326,0,66.7,0,0,1,0,1.609438,0,0,0,0,0,0,0,66.7,7.912928,1.609438,4.364093,1 +11,4,0,1,3,427321,0,2731.378,4.195756,0,12,1,13.33903,6.263361,0,0,0,19.60239,0,0,0,2,0,5,83.39137,9.967326,0,66.7,0,0,1,0,1.609438,0,0,0,0,0,0,0,66.7,7.912928,1.609438,2.975652,1 +11,4,0,0,1,427338,0,8252.786,60.37235,1,12,1,36.06388,14.43586,35.03349,0,0,85.53323,0,0,0,3,1,1,91.5,24.1,1,44.3,0,0,0,0,0,0,0,0,0,0,1,0,44.3,9.018427,0,4.448905,1 +11,4,0,0,2,427338,0,8252.786,61.37235,1,12,1,136.6004,39.77273,4.971591,0,6370.99,6552.334,1,0,0,7,10,1,91.5,24.1,1,44.3,0,0,0,0,0,0,0,0,0,0,1,0,44.3,9.018427,0,8.787577,1 +11,4,0,0,3,427338,0,8252.786,62.37235,1,12,.5561644,588.3832,38.88166,20.78457,0,1548.57,2196.619,1,0,0,30,1,1,91.5,24.1,1,44.3,0,0,0,0,0,0,0,0,0,0,1,0,44.3,9.018427,0,7.694674,1 +17,4,25,1,1,427346,0,6868.035,8.054757,0,12,1,14.53013,0,0,0,0,14.53013,0,0,0,2,0,4,86.7,9.967326,0,70.4,553.25,528.25,1,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,70.4,8.834779,1.386294,2.676225,1 +17,4,25,1,2,427346,0,6868.035,9.054757,0,12,1,24.84763,1.101735,0,0,0,25.94937,0,0,0,4,0,4,86.7,9.967326,0,70.4,553.25,528.25,1,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,70.4,8.834779,1.386294,3.256147,1 +17,4,25,1,3,427346,0,6868.035,10.05476,0,12,1,14.29493,2.730009,0,0,0,17.02493,0,0,0,2,0,4,86.7,9.967326,0,70.4,553.25,528.25,1,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,70.4,8.834779,1.386294,2.834679,1 +17,4,25,1,4,427346,0,6868.035,11.05476,0,12,1,15.12214,0,0,0,0,15.12214,0,0,0,3,0,4,86.7,9.967326,0,70.4,553.25,528.25,1,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,70.4,8.834779,1.386294,2.71616,1 +17,4,25,1,5,427346,0,6868.035,12.05476,0,12,1,435.3574,0,0,0,441.0049,876.3624,1,0,0,9,0,4,86.7,9.967326,0,70.4,553.25,528.25,1,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,70.4,8.834779,1.386294,6.77578,1 +17,4,25,1,1,427347,0,6868.035,3.830253,1,12,1,12.76813,0,0,0,0,12.76813,0,0,0,2,0,4,83.39137,9.967326,0,63,553.25,528.25,1,1,1.386294,6.26957,0,3.258096,7.702105,1,0,0,63,8.834779,1.386294,2.546952,1 +17,4,25,1,2,427347,0,6868.035,4.830253,1,12,1,21.09705,2.508204,0,0,0,23.60525,0,0,0,4,0,4,83.39137,9.967326,0,63,553.25,528.25,1,1,1.386294,6.26957,0,3.258096,7.702105,1,0,0,63,8.834779,1.386294,3.161469,1 +17,4,25,1,3,427347,0,6868.035,5.830253,1,12,1,13.22012,0,0,0,0,13.22012,0,0,0,2,0,4,83.39137,9.967326,0,63,553.25,528.25,1,1,1.386294,6.26957,0,3.258096,7.702105,1,0,0,63,8.834779,1.386294,2.58174,1 +17,4,25,1,4,427347,0,6868.035,6.830253,1,12,1,19.62001,0,0,0,0,19.62001,0,0,0,1,0,4,83.39137,9.967326,0,63,553.25,528.25,1,1,1.386294,6.26957,0,3.258096,7.702105,1,0,0,63,8.834779,1.386294,2.97655,1 +17,4,25,1,5,427347,0,6868.035,7.830253,1,12,1,5.307856,0,0,0,0,5.307856,0,0,0,1,0,4,83.39137,9.967326,0,63,553.25,528.25,1,1,1.386294,6.26957,0,3.258096,7.702105,1,0,0,63,8.834779,1.386294,1.669188,1 +17,4,25,1,1,427348,0,6868.035,32.19986,1,12,1,34.72932,4.581205,0,0,0,39.31052,0,0,0,1,1,4,76.6,13.8,1,50,553.25,528.25,0,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,50,8.834779,1.386294,3.671492,1 +17,4,25,1,2,427348,0,6868.035,33.19986,1,12,1,16.87764,9.446789,0,0,0,26.32442,0,0,0,2,0,4,76.6,13.8,1,50,553.25,528.25,0,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,50,8.834779,1.386294,3.270497,1 +17,4,25,1,3,427348,0,6868.035,34.19986,1,12,1,315.0645,10.16767,4.299226,0,0,329.5314,0,0,0,6,4,4,76.6,13.8,1,50,553.25,528.25,0,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,50,8.834779,1.386294,5.797672,1 +17,4,25,1,4,427348,0,6868.035,35.19986,1,12,1,43.42768,1.667313,0,0,0,45.095,0,0,0,1,5,4,76.6,13.8,1,50,553.25,528.25,0,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,50,8.834779,1.386294,3.808771,1 +17,4,25,1,5,427348,0,6868.035,36.19986,1,12,1,184.0057,0,0,0,578.5775,762.5831,1,0,0,5,0,4,76.6,13.8,1,50,553.25,528.25,0,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,50,8.834779,1.386294,6.636712,1 +17,4,25,1,1,427349,0,6868.035,42.88296,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,71.3,0,0,55.7,553.25,528.25,0,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,55.7,8.834779,1.386294,,0 +17,4,25,1,2,427349,0,6868.035,43.88296,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,71.3,0,0,55.7,553.25,528.25,0,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,55.7,8.834779,1.386294,,0 +17,4,25,1,3,427349,0,6868.035,44.88296,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,71.3,0,0,55.7,553.25,528.25,0,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,55.7,8.834779,1.386294,,0 +17,4,25,1,4,427349,0,6868.035,45.88296,0,12,1,10.46917,0,21.71384,0,0,32.18302,0,0,0,0,1,4,71.3,0,0,55.7,553.25,528.25,0,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,55.7,8.834779,1.386294,3.471439,1 +17,4,25,1,5,427349,0,6868.035,46.88296,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,71.3,0,0,55.7,553.25,528.25,0,0,1.386294,6.26957,0,3.258096,7.702105,1,0,0,55.7,8.834779,1.386294,,0 +16,4,95,0,1,427350,0,5992.962,50.26694,1,9,1,124.285,129.9272,36.92148,0,1615.299,1906.433,2,0,0,16,0,2,71.3,24.1,1,51.1,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,51.1,8.698508,.6931472,7.552989,1 +16,4,95,0,2,427350,0,5992.962,51.26694,1,9,1,62.82848,76.8753,34.87817,0,0,174.5819,0,0,0,5,0,2,71.3,24.1,1,51.1,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,51.1,8.698508,.6931472,5.162394,1 +16,4,95,0,3,427350,0,5992.962,52.26694,1,9,1,190.6277,67.12028,0,0,0,257.748,0,0,0,9,4,2,71.3,24.1,1,51.1,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,51.1,8.698508,.6931472,5.551982,1 +16,4,95,0,1,427351,0,5992.962,52.846,0,5,1,10.40042,22.10088,19.24077,0,0,51.74207,0,0,0,1,0,2,66,37.9,0,63.6,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,63.6,8.698508,.6931472,3.946271,1 +16,4,95,0,2,427351,0,5992.962,53.846,0,5,1,65.33684,48.70998,26.75585,0,0,140.8027,0,0,0,6,0,2,66,37.9,0,63.6,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,63.6,8.698508,.6931472,4.94736,1 +16,4,95,0,3,427351,0,5992.962,54.846,0,5,1,10.97454,32.59438,0,0,0,43.56892,0,0,0,1,0,2,66,37.9,0,63.6,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,63.6,8.698508,.6931472,3.774344,1 +18,4,25,1,1,427368,0,6746.627,35.60027,0,16,1,79.34055,4.430706,0,0,0,83.77126,0,0,0,4,5,1,86.7,0,0,89.8,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,89.8,8.816946,0,4.42809,1 +18,4,25,1,2,427368,0,6746.627,36.60027,0,16,1,32.67046,0,14.20455,0,0,46.875,0,0,0,2,0,1,86.7,0,0,89.8,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,89.8,8.816946,0,3.847485,1 +18,4,25,1,3,427368,0,6746.627,37.60027,0,16,1,8.669268,0,23.40702,0,0,32.07629,0,0,0,1,0,1,86.7,0,0,89.8,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,89.8,8.816946,0,3.468117,1 +11,4,0,1,1,427372,0,11126.1,31.27721,1,10,1,30.64351,0,5.107252,0,0,35.75077,0,0,0,0,4,5,38.8,6.9,0,46.6,0,240,0,0,1.609438,5.480639,0,0,0,0,0,0,46.6,9.317139,1.609438,3.576572,1 +11,4,0,1,2,427372,0,11126.1,32.27721,1,10,1,45.47586,0,0,0,0,45.47586,0,0,0,0,8,5,38.8,6.9,0,46.6,0,240,0,0,1.609438,5.480639,0,0,0,0,0,0,46.6,9.317139,1.609438,3.817182,1 +11,4,0,1,3,427372,0,11126.1,33.27721,1,10,1,25.79536,0,0,0,0,25.79536,0,0,0,0,5,5,38.8,6.9,0,46.6,0,240,0,0,1.609438,5.480639,0,0,0,0,0,0,46.6,9.317139,1.609438,3.250195,1 +11,4,0,1,1,427373,0,11126.1,14.423,0,10,1,40.21961,4.392237,37.12972,0,0,81.74157,0,0,0,3,0,5,79.3,3.4,0,73.9,0,240,1,0,1.609438,5.480639,0,0,0,0,0,0,73.9,9.317139,1.609438,4.403563,1 +11,4,0,1,2,427373,0,11126.1,15.423,0,10,1,9.376465,8.274731,0,0,0,17.6512,0,0,0,1,0,5,79.3,3.4,0,73.9,0,240,1,0,1.609438,5.480639,0,0,0,0,0,0,73.9,9.317139,1.609438,2.870804,1 +11,4,0,1,3,427373,0,11126.1,16.423,0,10,1,128.2674,0,9.243336,0,0,137.5107,0,0,0,9,0,5,79.3,3.4,0,73.9,0,240,1,0,1.609438,5.480639,0,0,0,0,0,0,73.9,9.317139,1.609438,4.923702,1 +11,4,0,1,1,427374,0,11126.1,42.95962,0,10,1,18.38611,0,334.6578,0,0,353.0439,0,0,0,2,0,5,82.4,13.8,0,80.7,0,240,0,0,1.609438,5.480639,0,0,0,0,0,0,80.7,9.317139,1.609438,5.866592,1 +11,4,0,1,2,427374,0,11126.1,43.95962,0,10,1,15.00234,0,0,0,0,15.00234,0,0,0,0,3,5,82.4,13.8,0,80.7,0,240,0,0,1.609438,5.480639,0,0,0,0,0,0,80.7,9.317139,1.609438,2.708206,1 +11,4,0,1,3,427374,0,11126.1,44.95962,0,10,1,55.88994,0,0,0,0,55.88994,0,0,0,1,8,5,82.4,13.8,0,80.7,0,240,0,0,1.609438,5.480639,0,0,0,0,0,0,80.7,9.317139,1.609438,4.023385,1 +11,4,0,1,1,427375,0,11126.1,13.01301,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,76.7,9.967326,0,81.5,0,240,1,1,1.609438,5.480639,0,0,0,0,0,0,81.5,9.317139,1.609438,,0 +11,4,0,1,2,427375,0,11126.1,14.01301,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,76.7,9.967326,0,81.5,0,240,1,1,1.609438,5.480639,0,0,0,0,0,0,81.5,9.317139,1.609438,,0 +11,4,0,1,3,427375,0,11126.1,15.01301,1,10,1,10.74806,0,29.14875,0,0,39.89682,0,0,0,1,0,5,76.7,9.967326,0,81.5,0,240,1,1,1.609438,5.480639,0,0,0,0,0,0,81.5,9.317139,1.609438,3.686297,1 +11,4,0,1,1,427376,0,11126.1,18.63107,0,11,1,14.30031,0,3.064351,0,1323.406,1340.771,1,0,0,2,0,5,80.3,6.9,0,81.8,0,240,0,0,1.609438,5.480639,0,0,0,0,0,0,81.8,9.317139,1.609438,7.201,1 +11,4,0,1,2,427376,0,11126.1,19.63107,0,11,1,24.61322,2.133146,0,0,0,26.74637,0,0,0,1,0,5,80.3,6.9,0,81.8,0,240,0,0,1.609438,5.480639,0,0,0,0,0,0,81.8,9.317139,1.609438,3.286399,1 +11,4,0,1,3,427376,0,11126.1,20.63107,0,11,1,0,2.257094,0,0,0,2.257094,0,0,0,0,0,5,80.3,6.9,0,81.8,0,240,0,0,1.609438,5.480639,0,0,0,0,0,0,81.8,9.317139,1.609438,.814078,1 +6,4,25,1,1,427397,0,16539.59,7.334702,0,17,1,24.78104,0,0,69.55178,0,24.78104,0,0,3,2,0,3,96.7,9.967326,0,100,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,100,9.713573,1.098612,3.210079,1 +6,4,25,1,2,427397,0,16539.59,8.334702,0,17,1,5.160985,0,0,0,0,5.160985,0,0,0,1,0,3,96.7,9.967326,0,100,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,100,9.713573,1.098612,1.641127,1 +6,4,25,1,3,427397,0,16539.59,9.334702,0,17,1,5.20156,0,0,0,0,5.20156,0,0,0,1,0,3,96.7,9.967326,0,100,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,100,9.713573,1.098612,1.648959,1 +6,4,25,1,1,427398,0,16539.59,32,0,18,1,29.06749,2.833591,0,226.6873,0,31.90108,0,0,11,0,0,3,85.6,24.1,0,85.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.713573,1.098612,3.46264,1 +6,4,25,1,2,427398,0,16539.59,33,0,18,1,66.70454,29.11932,0,227.2727,0,95.82386,0,0,12,3,0,3,85.6,24.1,0,85.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.713573,1.098612,4.562512,1 +6,4,25,1,3,427398,0,16539.59,34,0,18,1,9.969658,10.83658,0,69.35414,0,20.80624,0,0,4,0,0,3,85.6,24.1,0,85.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.713573,1.098612,3.035253,1 +6,4,25,1,1,427399,0,16539.59,31.60301,1,17,1,110.1236,0,0,203.5033,0,110.1236,0,0,9,3,0,3,83,17.2,0,79.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,79.5,9.713573,1.098612,4.701604,1 +6,4,25,1,2,427399,0,16539.59,32.60301,1,17,1,35.51136,9.943182,0,162.8788,0,45.45454,0,0,8,2,0,3,83,17.2,0,79.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,79.5,9.713573,1.098612,3.816713,1 +6,4,25,1,3,427399,0,16539.59,33.60301,1,17,1,50.17339,1.71218,0,200.2601,0,51.88557,0,0,11,2,0,3,83,17.2,0,79.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,79.5,9.713573,1.098612,3.949041,1 +13,4,0,1,1,427405,0,13503.23,9.891855,1,14,1,6.128703,0,0,0,0,6.128703,0,0,0,1,0,6,80,9.967326,0,77.8,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.510757,1.791759,1.812983,1 +13,4,0,1,2,427405,0,13503.23,10.89186,1,14,1,5.625879,0,0,0,0,5.625879,0,0,0,1,0,6,80,9.967326,0,77.8,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.510757,1.791759,1.727377,1 +13,4,0,1,3,427405,0,13503.23,11.89186,1,14,1,6.448839,1.371453,0,0,0,7.820292,0,0,0,1,0,6,80,9.967326,0,77.8,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.510757,1.791759,2.056722,1 +13,4,0,1,1,427406,0,13503.23,11.02806,1,14,1,37.76302,0,0,0,0,37.76302,0,0,0,4,0,6,86.7,9.967326,0,96.3,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.510757,1.791759,3.63133,1 +13,4,0,1,2,427406,0,13503.23,12.02806,1,14,1,10.31411,2.33474,0,0,0,12.64885,0,0,0,2,0,6,86.7,9.967326,0,96.3,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.510757,1.791759,2.537566,1 +13,4,0,1,3,427406,0,13503.23,13.02806,1,14,1,6.448839,0,0,0,0,6.448839,0,0,0,1,0,6,86.7,9.967326,0,96.3,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.510757,1.791759,1.8639,1 +13,4,0,1,1,427407,0,13503.23,14.00137,0,14,1,79.16241,0,0,0,0,79.16241,0,0,0,4,0,6,88.3,24.1,0,58,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,58,9.510757,1.791759,4.371501,1 +13,4,0,1,2,427407,0,13503.23,15.00137,0,14,1,7.969995,0,0,0,0,7.969995,0,0,0,1,0,6,88.3,24.1,0,58,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,58,9.510757,1.791759,2.075684,1 +13,4,0,1,3,427407,0,13503.23,16.00137,0,14,1,6.448839,1.77558,0,0,0,8.22442,0,0,0,1,0,6,88.3,24.1,0,58,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,58,9.510757,1.791759,2.107108,1 +13,4,0,1,1,427408,0,13503.23,13.08693,0,14,1,6.128703,0,0,0,0,6.128703,0,0,0,1,0,6,85,9.967326,0,74.1,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.510757,1.791759,1.812983,1 +13,4,0,1,2,427408,0,13503.23,14.08693,0,14,1,7.032349,0,0,0,0,7.032349,0,0,0,1,0,6,85,9.967326,0,74.1,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.510757,1.791759,1.950521,1 +13,4,0,1,3,427408,0,13503.23,15.08693,0,14,1,31.77128,.6405847,0,0,0,32.41187,0,0,0,2,0,6,85,9.967326,0,74.1,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.510757,1.791759,3.478525,1 +13,4,0,1,1,427409,0,13503.23,42.28885,0,17,1,10.2145,87.43105,45.96527,0,0,143.6108,0,0,0,1,0,6,84,20.7,0,35.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,35.2,9.510757,1.791759,4.967107,1 +13,4,0,1,2,427409,0,13503.23,43.28885,0,17,1,49.83591,136.7557,0,0,759.939,946.5307,1,0,0,2,0,6,84,20.7,0,35.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,35.2,9.510757,1.791759,6.852803,1 +13,4,0,1,3,427409,0,13503.23,44.28885,0,17,1,238.908,155.4858,59.96561,0,499.7592,954.1187,1,0,0,8,0,6,84,20.7,0,35.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,35.2,9.510757,1.791759,6.860788,1 +13,4,0,1,1,427410,0,13503.23,38.0616,1,14,1,132.3085,28.53933,0,0,0,160.8478,0,0,0,1,0,6,86.2,3.4,0,69.3,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,69.3,9.510757,1.791759,5.080459,1 +13,4,0,1,2,427410,0,13503.23,39.0616,1,14,1,9.376465,35.07735,0,0,0,44.45382,0,0,0,1,0,6,86.2,3.4,0,69.3,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,69.3,9.510757,1.791759,3.794451,1 +13,4,0,1,3,427410,0,13503.23,40.0616,1,14,1,104.4282,35.58899,0,0,0,140.0172,0,0,0,1,0,6,86.2,3.4,0,69.3,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,69.3,9.510757,1.791759,4.941765,1 +13,4,0,0,1,427431,0,8501.466,6.954141,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,93.3,9.967326,0,85.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.048112,1.609438,,0 +13,4,0,0,2,427431,0,8501.466,7.954141,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,93.3,9.967326,0,85.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.048112,1.609438,,0 +13,4,0,0,3,427431,0,8501.466,8.954141,1,13,1,200.0434,0,0,0,1418.704,1618.747,2,1,0,1,0,5,93.3,9.967326,0,85.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.048112,1.609438,7.389408,1 +13,4,0,0,4,427431,0,8501.466,9.954141,1,13,1,26.32926,0,0,0,0,26.32926,0,0,0,1,0,5,93.3,9.967326,0,85.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.048112,1.609438,3.270681,1 +13,4,0,0,5,427431,0,8501.466,10.95414,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,93.3,9.967326,0,85.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.048112,1.609438,,0 +13,4,0,0,1,427432,0,8501.466,32.81862,1,13,1,12.36476,0,0,0,0,12.36476,0,0,0,2,0,5,81.9,13.8,1,76.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,76.1,9.048112,1.609438,2.514851,1 +13,4,0,0,2,427432,0,8501.466,33.81862,1,13,1,149.858,0,0,0,699.2424,849.1004,1,0,0,3,0,5,81.9,13.8,1,76.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,76.1,9.048112,1.609438,6.744177,1 +13,4,0,0,3,427432,0,8501.466,34.81862,1,13,1,38.14478,0,0,0,0,38.14478,0,0,0,2,0,5,81.9,13.8,1,76.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,76.1,9.048112,1.609438,3.641389,1 +13,4,0,0,4,427432,0,8501.466,35.81862,1,13,1,13.78496,0,0,0,0,13.78496,0,0,0,0,0,5,81.9,13.8,1,76.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,76.1,9.048112,1.609438,2.623578,1 +13,4,0,0,5,427432,0,8501.466,36.81862,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,81.9,13.8,1,76.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,76.1,9.048112,1.609438,,0 +13,4,0,0,1,427433,0,8501.466,11.37577,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,9.967326,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.048112,1.609438,,0 +13,4,0,0,2,427433,0,8501.466,12.37577,1,13,1,48.76894,0,.7102273,0,0,49.47917,0,0,0,1,0,5,81.7,9.967326,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.048112,1.609438,3.901552,1 +13,4,0,0,3,427433,0,8501.466,13.37577,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,9.967326,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.048112,1.609438,,0 +13,4,0,0,4,427433,0,8501.466,14.37577,1,13,1,0,0,21.66207,0,0,21.66207,0,0,0,0,0,5,81.7,9.967326,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.048112,1.609438,3.075563,1 +13,4,0,0,5,427433,0,8501.466,15.37577,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,9.967326,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.048112,1.609438,,0 +13,4,0,0,1,427434,0,8501.466,35.22245,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,64.9,27.6,0,67,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,67,9.048112,1.609438,,0 +13,4,0,0,2,427434,0,8501.466,36.22245,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,64.9,27.6,0,67,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,67,9.048112,1.609438,,0 +13,4,0,0,3,427434,0,8501.466,37.22245,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,64.9,27.6,0,67,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,67,9.048112,1.609438,,0 +13,4,0,0,4,427434,0,8501.466,38.22245,0,14,1,77.56991,0,0,0,0,77.56991,0,0,0,2,0,5,64.9,27.6,0,67,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,67,9.048112,1.609438,4.35118,1 +13,4,0,0,5,427434,0,8501.466,39.22245,0,14,1,0,0,0,0,348.4794,348.4794,1,0,0,0,0,5,64.9,27.6,0,67,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,67,9.048112,1.609438,5.853579,1 +13,4,0,0,1,427435,0,8501.466,5.264887,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,9.967326,1,25.9,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,25.9,9.048112,1.609438,,0 +13,4,0,0,2,427435,0,8501.466,6.264887,0,13,1,42.61364,0,0,0,0,42.61364,0,0,0,2,0,5,88.3,9.967326,1,25.9,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,25.9,9.048112,1.609438,3.752174,1 +13,4,0,0,3,427435,0,8501.466,7.264887,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,9.967326,1,25.9,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,25.9,9.048112,1.609438,,0 +13,4,0,0,4,427435,0,8501.466,8.264887,0,13,1,35.05317,0,0,0,0,35.05317,0,0,0,3,0,5,88.3,9.967326,1,25.9,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,25.9,9.048112,1.609438,3.556866,1 +13,4,0,0,5,427435,0,8501.466,9.264887,0,13,1,10.01789,0,0,0,0,10.01789,0,0,0,1,0,5,88.3,9.967326,1,25.9,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,25.9,9.048112,1.609438,2.304372,1 +11,4,0,1,1,427437,0,10862.17,51.83847,0,12,1,43.99794,1.391036,58.45956,0,0,103.8485,0,0,0,2,0,3,64.9,0,0,62.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,62.5,9.293134,1.098612,4.642933,1 +11,4,0,1,2,427437,0,10862.17,52.83847,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,64.9,0,0,62.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,62.5,9.293134,1.098612,,0 +11,4,0,1,3,427437,0,10862.17,53.83847,0,12,1,40.52882,3.662766,0,0,0,44.19159,0,0,0,2,0,3,64.9,0,0,62.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,62.5,9.293134,1.098612,3.788534,1 +11,4,0,1,4,427437,0,10862.17,54.83847,0,12,1,41.35486,7.778653,0,0,0,49.13352,0,0,0,5,0,3,64.9,0,0,62.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,62.5,9.293134,1.098612,3.894542,1 +11,4,0,1,5,427437,0,10862.17,55.83847,0,12,1,35.50984,0,41.50268,0,0,77.01252,0,0,0,3,0,3,64.9,0,0,62.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,62.5,9.293134,1.098612,4.343968,1 +11,4,0,1,1,427438,0,10862.17,17.42094,1,12,1,16.48635,29.8815,33.28181,0,0,79.64967,0,0,0,2,0,3,77.1,13.8,0,94.3,0,0,1,1,1.098612,0,0,0,0,0,0,0,94.3,9.293134,1.098612,4.377638,1 +11,4,0,1,2,427438,0,10862.17,18.42094,1,12,1,5.681818,64.34659,0,0,0,70.02841,0,0,0,1,0,3,77.1,13.8,0,94.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,94.3,9.293134,1.098612,4.248901,1 +11,4,0,1,3,427438,0,10862.17,19.42094,1,12,1,0,44.03988,0,0,0,44.03988,0,0,0,0,0,3,77.1,13.8,0,94.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,94.3,9.293134,1.098612,3.785095,1 +11,4,0,1,4,427438,0,10862.17,20.42094,1,12,1,25.60063,54.68689,26.93974,0,0,107.2273,0,0,0,4,0,3,77.1,13.8,0,94.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,94.3,9.293134,1.098612,4.674951,1 +11,4,0,1,5,427438,0,10862.17,21.42094,1,12,1,50.10733,56.29696,0,0,0,106.4043,0,0,0,3,0,3,77.1,13.8,0,94.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,94.3,9.293134,1.098612,4.667246,1 +11,4,0,1,1,427439,0,10862.17,50.45037,1,12,1,465.8629,32.94693,52.96239,0,1224.132,1775.904,1,0,0,19,0,3,64.4,24.1,0,67,0,0,0,0,1.098612,0,0,0,0,1,0,0,67,9.293134,1.098612,7.482065,1 +11,4,0,1,2,427439,0,10862.17,51.45037,1,12,1,152.6989,88.49432,0,0,429.8579,671.0511,1,0,0,14,0,3,64.4,24.1,0,67,0,0,0,0,1.098612,0,0,0,0,1,0,0,67,9.293134,1.098612,6.508845,1 +11,4,0,1,3,427439,0,10862.17,52.45037,1,12,1,55.15821,137.9497,0,0,0,193.1079,0,0,0,4,0,3,64.4,24.1,0,67,0,0,0,0,1.098612,0,0,0,0,1,0,0,67,9.293134,1.098612,5.263249,1 +11,4,0,1,4,427439,0,10862.17,53.45037,1,12,1,380.3978,141.2761,65.577,0,0,587.2509,0,0,0,8,0,3,64.4,24.1,0,67,0,0,0,0,1.098612,0,0,0,0,1,0,0,67,9.293134,1.098612,6.375452,1 +11,4,0,1,5,427439,0,10862.17,54.45037,1,12,1,102.5045,100.5009,0,0,0,203.0054,0,0,0,6,0,3,64.4,24.1,0,67,0,0,0,0,1.098612,0,0,0,0,1,0,0,67,9.293134,1.098612,5.313232,1 +13,4,0,0,1,427443,0,13233.43,42.15742,0,12,1,28.1001,0,0,0,0,28.1001,0,0,0,2,0,4,88.3,6.9,0,76.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,76.1,9.490577,1.386294,3.335773,1 +13,4,0,0,2,427443,0,13233.43,43.15742,0,12,1,9.376465,0,20.62822,0,0,30.00469,0,0,0,1,0,4,88.3,6.9,0,76.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,76.1,9.490577,1.386294,3.401354,1 +13,4,0,0,3,427443,0,13233.43,44.15742,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,6.9,0,76.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,76.1,9.490577,1.386294,,0 +13,4,0,0,4,427443,0,13233.43,45.15742,0,12,1,9.69368,0,18.22412,0,0,27.9178,0,0,0,1,0,4,88.3,6.9,0,76.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,76.1,9.490577,1.386294,3.329264,1 +13,4,0,0,5,427443,0,13233.43,46.15742,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,6.9,0,76.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,76.1,9.490577,1.386294,,0 +13,4,0,0,1,427444,0,13233.43,12.35592,1,12,1,22.98264,0,27.57916,0,0,50.5618,0,0,0,2,0,4,88.3,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.490577,1.386294,3.923196,1 +13,4,0,0,2,427444,0,13233.43,13.35592,1,12,1,0,0,0,0,177.4262,177.4262,1,0,0,0,0,4,88.3,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.490577,1.386294,5.178555,1 +13,4,0,0,3,427444,0,13233.43,14.35592,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.490577,1.386294,,0 +13,4,0,0,4,427444,0,13233.43,15.35592,1,12,1,16.67313,0,20.93835,0,0,37.61148,0,0,0,2,0,4,88.3,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.490577,1.386294,3.627309,1 +13,4,0,0,5,427444,0,13233.43,16.35592,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.490577,1.386294,,0 +13,4,0,0,1,427445,0,13233.43,36.84052,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,3.4,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,69.3,9.490577,1.386294,,0 +13,4,0,0,2,427445,0,13233.43,37.84052,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,3.4,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,69.3,9.490577,1.386294,,0 +13,4,0,0,3,427445,0,13233.43,38.84052,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,3.4,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,69.3,9.490577,1.386294,,0 +13,4,0,0,4,427445,0,13233.43,39.84052,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,3.4,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,69.3,9.490577,1.386294,,0 +13,4,0,0,5,427445,0,13233.43,40.84052,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,3.4,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,69.3,9.490577,1.386294,,0 +13,4,0,0,1,427446,0,13233.43,14.2642,0,12,1,7.660879,0,27.57916,0,0,35.24004,0,0,0,1,0,4,81.9,3.4,0,73.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.490577,1.386294,3.562183,1 +13,4,0,0,2,427446,0,13233.43,15.2642,0,12,1,9.376465,0,24.37881,0,0,33.75528,0,0,0,1,0,4,81.9,3.4,0,73.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.490577,1.386294,3.519137,1 +13,4,0,0,3,427446,0,13233.43,16.2642,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.9,3.4,0,73.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.490577,1.386294,,0 +13,4,0,0,4,427446,0,13233.43,17.2642,0,12,1,244.242,0,21.3261,0,0,265.5681,0,0,0,3,0,4,81.9,3.4,0,73.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.490577,1.386294,5.581871,1 +13,4,0,0,5,427446,0,13233.43,18.2642,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.9,3.4,0,73.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.490577,1.386294,,0 +5,4,25,1,1,427459,0,3817.009,60.92266,1,13,1,47.91345,19.16538,0,0,0,67.07883,0,0,0,4,0,1,91.5,3.4,1,88.1,350.26,350.26,0,0,0,5.858676,0,3.258096,7.24497,0,0,0,88.1,8.247484,0,4.205868,1 +5,4,25,1,2,427459,0,3817.009,61.92266,1,13,1,76.49148,18.86837,0,0,0,95.35985,0,0,0,5,0,1,91.5,3.4,1,88.1,350.26,350.26,0,0,0,5.858676,0,3.258096,7.24497,0,0,0,88.1,8.247484,0,4.557658,1 +5,4,25,1,3,427459,0,3817.009,62.92266,1,13,1,35.54399,19.41916,28.17512,0,0,83.13828,0,0,0,4,0,1,91.5,3.4,1,88.1,350.26,350.26,0,0,0,5.858676,0,3.258096,7.24497,0,0,0,88.1,8.247484,0,4.420505,1 +10,4,50,1,1,427470,0,9409.971,33.89185,0,12,1,0,4.807693,0,0,0,4.807693,0,0,0,0,0,4,85.1,13.8,0,81.8,1000,1000.18,0,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,81.8,9.149632,1.386294,1.570217,1 +10,4,50,1,2,427470,0,9409.971,34.89185,0,12,1,72.26107,0,0,0,0,72.26107,0,0,0,3,0,4,85.1,13.8,0,81.8,1000,1000.18,0,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,81.8,9.149632,1.386294,4.280285,1 +10,4,50,1,3,427470,0,9409.971,35.89185,0,12,1,6.412997,12.82172,0,0,0,19.23472,0,0,0,1,0,4,85.1,13.8,0,81.8,1000,1000.18,0,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,81.8,9.149632,1.386294,2.956717,1 +10,4,50,1,4,427470,0,9409.971,36.89185,0,12,1,62.95158,15.08455,0,0,0,78.03613,0,0,0,4,0,4,85.1,13.8,0,81.8,1000,1000.18,0,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,81.8,9.149632,1.386294,4.357172,1 +10,4,50,1,5,427470,0,9409.971,37.89185,0,12,1,19.31858,0,0,0,0,19.31858,0,0,0,2,0,4,85.1,13.8,0,81.8,1000,1000.18,0,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,81.8,9.149632,1.386294,2.961067,1 +10,4,50,1,1,427471,0,9409.971,2.006845,0,17,1,16.19433,3.517206,0,0,0,19.71154,0,0,0,3,0,4,83.39137,9.967326,0,96.3,1000,1000.18,1,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,96.3,9.149632,1.386294,2.981204,1 +10,4,50,1,2,427471,0,9409.971,3.006845,0,17,1,5.594406,0,0,0,0,5.594406,0,0,0,1,0,4,83.39137,9.967326,0,96.3,1000,1000.18,1,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,96.3,9.149632,1.386294,1.721767,1 +10,4,50,1,3,427471,0,9409.971,4.006845,0,17,1,35.74177,5.664814,0,0,0,41.40659,0,0,0,6,0,4,83.39137,9.967326,0,96.3,1000,1000.18,1,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,96.3,9.149632,1.386294,3.72344,1 +10,4,50,1,4,427471,0,9409.971,5.006845,0,17,1,48.23213,4.381245,24.78862,0,0,77.402,0,0,0,3,0,4,83.39137,9.967326,0,96.3,1000,1000.18,1,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,96.3,9.149632,1.386294,4.349013,1 +10,4,50,1,5,427471,0,9409.971,6.006845,0,17,1,28.80225,0,0,0,0,28.80225,0,0,0,4,0,4,83.39137,9.967326,0,96.3,1000,1000.18,1,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,96.3,9.149632,1.386294,3.360453,1 +10,4,50,1,1,427472,0,9409.971,4.610541,0,17,1,115.3897,24.67105,0,0,6.072875,146.1336,1,1,0,6,0,4,83.39137,9.967326,0,51.9,1000,1000.18,1,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,51.9,9.149632,1.386294,4.984521,1 +10,4,50,1,2,427472,0,9409.971,5.610541,0,17,1,29.18415,28.32168,0,0,0,57.50583,0,0,0,3,0,4,83.39137,9.967326,0,51.9,1000,1000.18,1,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,51.9,9.149632,1.386294,4.051886,1 +10,4,50,1,3,427472,0,9409.971,6.610541,0,17,1,16.50278,25.99401,0,0,0,42.49679,0,0,0,3,0,4,83.39137,9.967326,0,51.9,1000,1000.18,1,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,51.9,9.149632,1.386294,3.749429,1 +10,4,50,1,4,427472,0,9409.971,7.610541,0,17,1,72.30976,37.79785,0,0,0,110.1076,0,0,0,6,0,4,83.39137,9.967326,0,51.9,1000,1000.18,1,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,51.9,9.149632,1.386294,4.701458,1 +10,4,50,1,5,427472,0,9409.971,8.61054,0,17,1,23.15068,40.24587,0,0,0,63.39656,0,0,0,1,0,4,83.39137,9.967326,0,51.9,1000,1000.18,1,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,51.9,9.149632,1.386294,4.14941,1 +10,4,50,1,1,427473,0,9409.971,33.08693,1,17,1,60.72874,8.223684,22.77328,0,0,91.72571,0,0,0,2,8,4,83.5,3.4,0,79.5,1000,1000.18,0,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,79.5,9.149632,1.386294,4.518803,1 +10,4,50,1,2,427473,0,9409.971,34.08693,1,17,1,76.92308,5.314685,0,0,452.2378,534.4755,1,0,0,5,4,4,83.5,3.4,0,79.5,1000,1000.18,0,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,79.5,9.149632,1.386294,6.281286,1 +10,4,50,1,3,427473,0,9409.971,35.08693,1,17,1,30.78238,1.688756,0,0,0,32.47114,0,0,0,2,0,4,83.5,3.4,0,79.5,1000,1000.18,0,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,79.5,9.149632,1.386294,3.480352,1 +10,4,50,1,4,427473,0,9409.971,36.08693,1,17,1,109.5311,0,0,0,0,109.5311,0,0,0,5,0,4,83.5,3.4,0,79.5,1000,1000.18,0,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,79.5,9.149632,1.386294,4.696209,1 +10,4,50,1,5,427473,0,9409.971,37.08693,1,17,1,49.35019,0,24.93853,0,0,74.28873,0,0,0,3,0,4,83.5,3.4,0,79.5,1000,1000.18,0,0,1.386294,6.907935,0,3.931826,7.600903,0,0,0,79.5,9.149632,1.386294,4.307959,1 +19,4,25,0,1,427481,0,9880.352,49.17728,1,12,1,33.70787,0,0,0,0,33.70787,0,0,0,3,0,2,64.9,17.2,0,75,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,75,9.198404,.6931472,3.517731,1 +19,4,25,0,2,427481,0,9880.352,50.17728,1,12,1,35.16174,3.089545,44.53821,0,0,82.7895,0,0,0,2,1,2,64.9,17.2,0,75,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,75,9.198404,.6931472,4.416301,1 +19,4,25,0,3,427481,0,9880.352,51.17728,1,12,1,33.42648,3.843508,1.074807,0,0,38.3448,0,0,0,2,0,2,64.9,17.2,0,75,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,75,9.198404,.6931472,3.646619,1 +19,4,25,0,1,427482,0,9880.352,55.48255,0,12,1,0,7.022472,0,0,0,7.022472,0,0,0,0,0,2,78.2,10.3,0,54.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.198404,.6931472,1.949115,1 +19,4,25,0,2,427482,0,9880.352,56.48255,0,12,1,15.00234,10.60947,23.90999,0,0,49.5218,0,0,0,1,1,2,78.2,10.3,0,54.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.198404,.6931472,3.902413,1 +19,4,25,0,3,427482,0,9880.352,57.48255,0,12,1,26.22528,0,6.018917,0,0,32.2442,0,0,0,1,0,2,78.2,10.3,0,54.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.198404,.6931472,3.473338,1 +17,4,25,1,1,427483,0,3394.135,52.65982,1,12,1,28.08989,49.40245,38.30439,0,0,115.7967,0,0,0,4,0,2,88.8,27.6,0,76.1,320.75,199.2,0,0,.6931472,5.294309,0,3.258096,7.156956,1,0,0,76.1,8.130098,.6931472,4.751836,1 +17,4,25,1,2,427483,0,3394.135,53.65982,1,12,1,15.00234,37.74027,0,0,0,52.74261,0,0,0,2,0,2,88.8,27.6,0,76.1,320.75,199.2,0,0,.6931472,5.294309,0,3.258096,7.156956,1,0,0,76.1,8.130098,.6931472,3.965424,1 +17,4,25,1,3,427483,0,3394.135,54.65982,1,12,1,26.6552,30.41273,25.79536,0,0,82.86328,0,0,0,3,0,2,88.8,27.6,0,76.1,320.75,199.2,0,0,.6931472,5.294309,0,3.258096,7.156956,1,0,0,76.1,8.130098,.6931472,4.417192,1 +17,4,25,1,1,427484,0,3394.135,15.35113,1,12,1,26.74157,1.225741,0,0,0,27.96731,0,0,0,3,0,2,89.9,10.3,0,78.4,320.75,199.2,1,1,.6931472,5.294309,0,3.258096,7.156956,0,0,0,78.4,8.130098,.6931472,3.331037,1 +17,4,25,1,2,427484,0,3394.135,16.35113,1,12,1,12.1894,10.08439,0,0,0,22.27379,0,0,0,3,0,2,89.9,10.3,0,78.4,320.75,199.2,1,1,.6931472,5.294309,0,3.258096,7.156956,0,0,0,78.4,8.130098,.6931472,3.103411,1 +17,4,25,1,3,427484,0,3394.135,17.35113,1,12,1,85.72657,6.659501,0,0,0,92.38607,0,0,0,5,0,2,89.9,10.3,0,78.4,320.75,199.2,1,1,.6931472,5.294309,0,3.258096,7.156956,0,0,0,78.4,8.130098,.6931472,4.525976,1 +16,4,95,1,1,427516,0,8591.789,1.771389,1,12,1,30.9119,1.442555,0,0,0,32.35446,0,0,0,2,0,3,83.39137,9.967326,0,63,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,1,0,0,63,9.058679,1.098612,3.476752,1 +16,4,95,1,2,427516,0,8591.789,2.771389,1,12,1,4.734848,0,0,0,0,4.734848,0,0,0,1,0,3,83.39137,9.967326,0,63,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,1,0,0,63,9.058679,1.098612,1.55495,1 +16,4,95,1,3,427516,0,8591.789,3.771389,1,12,1,13.0039,0,0,0,0,13.0039,0,0,0,2,0,4,83.39137,9.967326,0,63,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,63,9.058679,1.386294,2.565249,1 +16,4,95,1,1,427517,0,8591.789,24.29295,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,64.9,3.4,0,54.5,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,54.5,9.058679,1.098612,,0 +16,4,95,1,2,427517,0,8591.789,25.29295,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,64.9,3.4,0,54.5,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,54.5,9.058679,1.098612,,0 +16,4,95,1,3,427517,0,8591.789,26.29295,0,13,1,114.0009,0,0,0,201.2657,315.2666,1,1,0,1,0,4,64.9,3.4,0,54.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,54.5,9.058679,1.386294,5.753418,1 +16,4,95,1,1,427518,0,8591.789,22.36824,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.9,10.3,0,67,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,67,9.058679,1.098612,,0 +16,4,95,1,2,427518,0,8591.789,23.36824,1,12,1,159.768,0,0,0,764.8674,924.6354,1,0,0,6,0,3,81.9,10.3,0,67,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,67,9.058679,1.098612,6.8294,1 +16,4,95,1,3,427518,0,8591.789,24.36824,1,12,1,14.30429,0,0,0,0,14.30429,0,0,0,2,0,4,81.9,10.3,0,67,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,67,9.058679,1.386294,2.66056,1 +11,4,0,1,1,427525,0,5378.886,32.70089,0,14,1,131.8186,51.15919,172.7872,0,1496.605,1852.37,1,0,0,13,5,2,87.8,13.8,1,77.3,0,399.12,0,0,.6931472,5.989262,0,0,0,1,0,0,77.3,8.590423,.6931472,7.524221,1 +11,4,0,1,2,427525,0,5378.886,33.70089,0,14,1,98.60322,25.15152,26.59091,0,0,150.3456,0,0,0,5,6,2,87.8,13.8,1,77.3,0,399.12,0,0,.6931472,5.989262,0,0,0,1,0,0,77.3,8.590423,.6931472,5.012937,1 +11,4,0,1,3,427525,0,5378.886,34.70089,0,14,1,69.46251,23.26831,30.34244,0,0,123.0733,0,0,0,2,2,2,87.8,13.8,1,77.3,0,399.12,0,0,.6931472,5.989262,0,0,0,1,0,0,77.3,8.590423,.6931472,4.81278,1 +11,4,0,1,1,427526,0,5378.886,28.74196,1,15,1,51.62288,9.685729,0,0,0,61.30861,0,0,0,4,0,2,74.5,6.9,0,59.1,0,399.12,0,0,.6931472,5.989262,0,0,0,1,0,0,59.1,8.590423,.6931472,4.11592,1 +11,4,0,1,2,427526,0,5378.886,29.74196,1,15,1,0,10.65341,30.30303,0,0,40.95644,0,0,0,0,0,2,74.5,6.9,0,59.1,0,399.12,0,0,.6931472,5.989262,0,0,0,1,0,0,59.1,8.590423,.6931472,3.712509,1 +11,4,0,1,3,427526,0,5378.886,30.74196,1,15,1,41.89423,22.80017,0,0,0,64.6944,0,0,0,2,0,2,74.5,6.9,0,59.1,0,399.12,0,0,.6931472,5.989262,0,0,0,1,0,0,59.1,8.590423,.6931472,4.169675,1 +11,4,0,0,1,427540,0,7910.823,59.99453,0,12,1,195.3735,32.3493,25.24472,0,0,252.9675,0,0,0,10,8,2,76.6,17.2,1,67,0,0,0,0,.6931472,0,0,0,0,1,0,0,67,8.976113,.6931472,5.533261,1 +11,4,0,0,2,427540,0,7910.823,60.99453,0,12,1,140.4119,46.49148,38.35227,0,0,225.2557,0,0,0,4,1,2,76.6,17.2,1,67,0,0,0,0,.6931472,0,0,0,0,1,0,0,67,8.976113,.6931472,5.417236,1 +11,4,0,0,3,427540,0,7910.823,61.99453,0,12,1,28.39185,43.53706,0,0,0,71.92891,0,0,0,1,0,2,76.6,17.2,1,67,0,0,0,0,.6931472,0,0,0,0,1,0,0,67,8.976113,.6931472,4.275678,1 +11,4,0,0,1,427541,0,7910.823,57.42916,1,16,1,92.04533,3.585781,27.82071,0,0,123.4518,0,0,0,5,2,2,89.4,13.8,0,79.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,79.5,8.976113,.6931472,4.815851,1 +11,4,0,0,2,427541,0,7910.823,58.42916,1,16,1,51.84659,5.426136,20.83333,0,0,78.10606,0,0,0,2,3,2,89.4,13.8,0,79.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,79.5,8.976113,.6931472,4.358068,1 +11,4,0,0,3,427541,0,7910.823,59.42916,1,16,1,30.34244,0,23.84048,0,0,54.18292,0,0,0,1,2,2,89.4,13.8,0,79.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,79.5,8.976113,.6931472,3.992366,1 +11,4,0,1,1,427558,0,11719.65,12.40246,0,10,1,32.85935,0,0,0,0,32.85935,0,0,0,2,0,6,98.3,9.967326,0,96.3,0,0,1,0,1.791759,0,0,0,0,0,0,0,96.3,9.369107,1.791759,3.492236,1 +11,4,0,1,2,427558,0,11719.65,13.40246,0,10,1,4.734848,0,0,0,0,4.734848,0,0,0,1,0,6,98.3,9.967326,0,96.3,0,0,1,0,1.791759,0,0,0,0,0,0,0,96.3,9.369107,1.791759,1.55495,1 +11,4,0,1,3,427558,0,11719.65,14.40246,0,10,1,13.0039,0,0,0,0,13.0039,0,0,0,1,0,7,98.3,9.967326,0,96.3,0,0,1,0,1.94591,0,0,0,0,0,0,0,96.3,9.369107,1.94591,2.565249,1 +11,4,0,1,1,427559,0,11719.65,34.04517,1,10,1,293.8279,6.43998,0,0,1205.296,1505.564,1,0,0,7,0,6,56.9,6.9,0,90.9,0,0,0,0,1.791759,0,0,0,0,0,0,0,90.9,9.369107,1.791759,7.316923,1 +11,4,0,1,2,427559,0,11719.65,35.04517,1,10,1,56.10796,17.54261,0,0,0,73.65057,0,0,0,4,0,6,56.9,6.9,0,90.9,0,0,0,0,1.791759,0,0,0,0,0,0,0,90.9,9.369107,1.791759,4.299332,1 +11,4,0,1,3,427559,0,11719.65,36.04517,1,10,1,26.87473,19.38448,0,0,0,46.25921,0,0,0,4,0,7,56.9,6.9,0,90.9,0,0,0,0,1.94591,0,0,0,0,0,0,0,90.9,9.369107,1.94591,3.834261,1 +11,4,0,1,1,427560,0,11719.65,16.6653,0,10,1,206.7233,33.07573,0,0,0,239.7991,0,0,0,13,0,6,62.8,6.9,0,86.4,0,0,1,0,1.791759,0,0,0,0,0,0,0,86.4,9.369107,1.791759,5.479801,1 +11,4,0,1,2,427560,0,11719.65,17.6653,0,10,1,34.80114,12.97348,0,0,0,47.77462,0,0,0,3,0,6,62.8,6.9,0,86.4,0,0,1,0,1.791759,0,0,0,0,0,0,0,86.4,9.369107,1.791759,3.866495,1 +11,4,0,1,3,427560,0,11719.65,18.6653,0,10,1,14.95449,6.935414,0,0,0,21.8899,0,0,0,1,0,7,62.8,6.9,0,86.4,0,0,0,0,1.94591,0,0,0,0,0,0,0,86.4,9.369107,1.94591,3.086025,1 +11,4,0,1,1,427561,0,11719.65,37.66735,0,14,1,146.8624,11.97836,0,0,0,158.8408,0,0,0,6,0,6,75,6.9,0,85.2,0,0,0,0,1.791759,0,0,0,0,0,0,0,85.2,9.369107,1.791759,5.067903,1 +11,4,0,1,2,427561,0,11719.65,38.66735,0,14,1,0,0,0,0,0,0,0,0,0,0,0,6,75,6.9,0,85.2,0,0,0,0,1.791759,0,0,0,0,0,0,0,85.2,9.369107,1.791759,,0 +11,4,0,1,3,427561,0,11719.65,39.66735,0,14,1,64.62505,6.025141,0,0,0,70.65019,0,0,0,4,0,7,75,6.9,0,85.2,0,0,0,0,1.94591,0,0,0,0,0,0,0,85.2,9.369107,1.94591,4.257741,1 +11,4,0,1,1,427562,0,11719.65,13.30595,1,10,1,16.48635,2.93663,0,0,0,19.42298,0,0,0,2,0,6,93.3,9.967326,0,70.4,0,0,1,1,1.791759,0,0,0,0,0,0,0,70.4,9.369107,1.791759,2.966457,1 +11,4,0,1,2,427562,0,11719.65,14.30595,1,10,1,10.41667,4.85322,0,0,0,15.26989,0,0,0,2,0,6,93.3,9.967326,0,70.4,0,0,1,1,1.791759,0,0,0,0,0,0,0,70.4,9.369107,1.791759,2.725883,1 +11,4,0,1,3,427562,0,11719.65,15.30595,1,10,1,101.9289,0,0,0,0,101.9289,0,0,0,4,0,7,93.3,9.967326,0,70.4,0,0,1,1,1.94591,0,0,0,0,0,0,0,70.4,9.369107,1.94591,4.624276,1 +11,4,0,1,1,427563,0,11719.65,10.59822,1,10,1,111.4426,0,26.79031,0,0,138.2329,0,0,0,5,0,6,80,9.967326,0,88.9,0,0,1,1,1.791759,0,0,0,0,0,0,0,88.9,9.369107,1.791759,4.92894,1 +11,4,0,1,2,427563,0,11719.65,11.59822,1,10,1,83.33334,0,1.183712,14.20455,0,84.51704,0,0,1,6,0,6,80,9.967326,0,88.9,0,0,1,1,1.791759,0,0,0,0,0,0,0,88.9,9.369107,1.791759,4.436953,1 +11,4,0,1,3,427563,0,11719.65,12.59822,1,10,1,8.669268,0,27.30819,0,0,35.97746,0,0,0,1,0,7,80,9.967326,0,88.9,0,0,1,1,1.94591,0,0,0,0,0,0,0,88.9,9.369107,1.94591,3.582893,1 +14,4,95,1,1,427568,0,7712.61,28.47639,0,15,1,117.5528,0,40.18547,0,0,157.7383,0,0,0,2,0,4,65.4,3.4,0,67,585.8,585.8,0,0,1.386294,6.372978,0,4.564348,6.424272,1,0,0,67,8.950742,1.386294,5.060937,1 +14,4,95,1,2,427568,0,7712.61,29.47639,0,15,1,22.72727,0,0,0,0,22.72727,0,0,0,1,0,4,65.4,3.4,0,67,585.8,585.8,0,0,1.386294,6.372978,0,4.564348,6.424272,1,0,0,67,8.950742,1.386294,3.123566,1 +14,4,95,1,3,427568,0,7712.61,30.47639,0,15,1,0,1.209363,0,0,0,1.209363,0,0,0,0,0,4,65.4,3.4,0,67,585.8,585.8,0,0,1.386294,6.372978,0,4.564348,6.424272,1,0,0,67,8.950742,1.386294,.1900937,1 +14,4,95,1,4,427568,0,7712.61,31.47639,0,15,1,41.55179,0,24.41906,0,0,65.97086,0,0,0,1,0,4,65.4,3.4,0,67,585.8,585.8,0,0,1.386294,6.372978,0,4.564348,6.424272,1,0,0,67,8.950742,1.386294,4.189213,1 +14,4,95,1,5,427568,0,7712.61,32.47639,0,15,1,13.7746,0,0,0,0,13.7746,0,0,0,1,0,4,65.4,3.4,0,67,585.8,585.8,0,0,1.386294,6.372978,0,4.564348,6.424272,1,0,0,67,8.950742,1.386294,2.622826,1 +14,4,95,1,1,427569,0,7712.61,28.30664,1,16,1,18.13498,24.9253,37.09428,0,0,80.15456,0,0,0,2,0,4,71.8,17.2,0,71.6,585.8,585.8,0,0,1.386294,6.372978,0,4.564348,6.424272,1,0,0,71.6,8.950742,1.386294,4.383957,1 +14,4,95,1,2,427569,0,7712.61,29.30664,1,16,1,31.41098,14.51705,0,0,0,45.92803,0,0,0,2,0,4,71.8,17.2,0,71.6,585.8,585.8,0,0,1.386294,6.372978,0,4.564348,6.424272,1,0,0,71.6,8.950742,1.386294,3.827076,1 +14,4,95,1,3,427569,0,7712.61,30.30664,1,16,1,11.70351,11.23537,0,0,181.8249,204.7638,1,0,0,1,0,4,71.8,17.2,0,71.6,585.8,585.8,0,0,1.386294,6.372978,0,4.564348,6.424272,1,0,0,71.6,8.950742,1.386294,5.321857,1 +14,4,95,1,4,427569,0,7712.61,31.30664,1,16,1,25.99449,4.899567,25.20677,0,0,56.10083,0,0,0,1,0,4,71.8,17.2,0,71.6,585.8,585.8,0,0,1.386294,6.372978,0,4.564348,6.424272,1,0,0,71.6,8.950742,1.386294,4.027151,1 +14,4,95,1,5,427569,0,7712.61,32.30664,1,16,1,6.08229,4.157424,0,0,0,10.23971,0,0,0,1,0,4,71.8,17.2,0,71.6,585.8,585.8,0,0,1.386294,6.372978,0,4.564348,6.424272,1,0,0,71.6,8.950742,1.386294,2.326274,1 +14,4,95,1,1,427570,0,7712.61,2.30527,0,16,1,15.45595,30.1391,0,0,0,45.59505,0,0,0,3,0,4,83.39137,9.967326,0,70.4,585.8,585.8,1,0,1.386294,6.372978,0,4.564348,6.424272,0,0,0,70.4,8.950742,1.386294,3.819799,1 +14,4,95,1,2,427570,0,7712.61,3.30527,0,16,1,11.36364,15.61553,0,0,0,26.97917,0,0,0,2,0,4,83.39137,9.967326,0,70.4,585.8,585.8,1,0,1.386294,6.372978,0,4.564348,6.424272,0,0,0,70.4,8.950742,1.386294,3.295065,1 +14,4,95,1,3,427570,0,7712.61,4.30527,0,16,1,18.63893,26.25054,0,0,0,44.88947,0,0,0,3,0,4,83.39137,9.967326,0,70.4,585.8,585.8,1,0,1.386294,6.372978,0,4.564348,6.424272,0,0,0,70.4,8.950742,1.386294,3.804203,1 +14,4,95,1,4,427570,0,7712.61,5.30527,0,16,1,32.59157,35.69516,0,0,0,68.28673,0,0,0,4,0,4,83.39137,9.967326,0,70.4,585.8,585.8,1,0,1.386294,6.372978,0,4.564348,6.424272,0,0,0,70.4,8.950742,1.386294,4.223715,1 +14,4,95,1,5,427570,0,7712.61,6.30527,0,16,1,10.73345,19.12343,0,0,0,29.85689,0,0,0,2,0,4,83.39137,9.967326,0,70.4,585.8,585.8,1,0,1.386294,6.372978,0,4.564348,6.424272,0,0,0,70.4,8.950742,1.386294,3.396415,1 +10,4,50,1,1,427573,0,1852.199,20.44079,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,91,6.9,0,92.9,115.5,249.36,0,0,0,5.518898,0,3.931826,5.442418,0,0,0,92.9,7.524669,0,,0 +10,4,50,1,2,427573,0,1852.199,21.44079,1,12,1,22.72727,0,0,0,0,22.72727,0,0,0,0,0,1,91,6.9,0,92.9,115.5,249.36,0,0,0,5.518898,0,3.931826,5.442418,0,0,0,92.9,7.524669,0,3.123566,1 +10,4,50,1,3,427573,0,1852.199,22.44079,1,12,1,11.70351,0,0,0,540.5071,552.2107,1,0,0,1,0,1,91,6.9,0,92.9,115.5,249.36,0,0,0,5.518898,0,3.931826,5.442418,0,0,0,92.9,7.524669,0,6.31393,1 +13,4,0,0,1,427576,0,1546.041,19.60849,1,12,1,151.4683,7.496136,14.94075,329.727,1061.51,1235.415,2,0,16,2,14,1,46.3,20.7,0,56.8,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,56.8,7.3441,0,7.119162,1 +13,4,0,0,2,427576,0,1546.041,20.60849,1,12,1,30.77652,2.438447,5.681818,0,0,38.89678,0,0,0,3,0,1,46.3,20.7,0,56.8,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,56.8,7.3441,0,3.660912,1 +13,4,0,0,3,427576,0,1546.041,21.60849,1,12,1,221.3524,0,0,0,0,221.3524,0,0,0,0,0,1,46.3,20.7,0,56.8,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,56.8,7.3441,0,5.399756,1 +14,4,95,0,1,427597,0,11187.1,26.46954,1,15,1,72.23698,.8937691,0,0,0,73.13074,0,0,0,3,0,2,86.2,0,0,84.1,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.322606,.6931472,4.292249,1 +14,4,95,0,1,427598,0,11187.1,26.29706,0,16,1,12.76813,0,0,0,0,12.76813,0,0,0,1,0,2,78.7,3.4,0,81.8,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,81.8,9.322606,.6931472,2.546952,1 +11,4,0,1,1,427610,0,14587.68,54.52977,0,12,1,7.660879,0,0,0,0,7.660879,0,0,0,1,0,5,96.3,0,0,62.5,0,0,0,0,1.609438,0,0,0,0,0,0,0,62.5,9.588001,1.609438,2.036127,1 +11,4,0,1,2,427610,0,14587.68,55.52977,0,12,1,11.72058,4.219409,0,0,0,15.93999,0,0,0,1,0,5,96.3,0,0,62.5,0,0,0,0,1.609438,0,0,0,0,0,0,0,62.5,9.588001,1.609438,2.768831,1 +11,4,0,1,3,427610,0,14587.68,56.52977,0,12,1,151.5477,34.29063,29.66466,0,0,215.503,0,0,0,8,0,5,96.3,0,0,62.5,0,0,0,0,1.609438,0,0,0,0,0,0,0,62.5,9.588001,1.609438,5.372975,1 +11,4,0,1,1,427611,0,14587.68,19.57563,1,12,1,25.79162,0,0,0,0,25.79162,0,0,0,2,0,5,82.4,6.9,0,72.7,0,0,0,0,1.609438,0,0,0,0,1,0,0,72.7,9.588001,1.609438,3.25005,1 +11,4,0,1,2,427611,0,14587.68,20.57563,1,12,1,34.2241,0,0,0,0,34.2241,0,0,0,2,0,5,82.4,6.9,0,72.7,0,0,0,0,1.609438,0,0,0,0,1,0,0,72.7,9.588001,1.609438,3.53293,1 +11,4,0,1,3,427611,0,14587.68,21.57563,1,12,1,11.60791,17.02493,0,0,0,28.63285,0,0,0,1,0,5,82.4,6.9,0,72.7,0,0,0,0,1.609438,0,0,0,0,1,0,0,72.7,9.588001,1.609438,3.354555,1 +11,4,0,1,1,427612,0,14587.68,10.49144,1,12,1,13.02349,0,0,0,0,13.02349,0,0,0,1,0,5,85,9.967326,0,88.9,0,0,1,1,1.609438,0,0,0,0,1,0,0,88.9,9.588001,1.609438,2.566755,1 +11,4,0,1,2,427612,0,14587.68,11.49144,1,12,1,18.75293,5.743085,0,0,0,24.49602,0,0,0,2,0,5,85,9.967326,0,88.9,0,0,1,1,1.609438,0,0,0,0,1,0,0,88.9,9.588001,1.609438,3.19851,1 +11,4,0,1,3,427612,0,14587.68,12.49144,1,12,1,50.30095,14.07997,0,0,0,64.38091,0,0,0,4,0,5,85,9.967326,0,88.9,0,0,1,1,1.609438,0,0,0,0,1,0,0,88.9,9.588001,1.609438,4.164817,1 +11,4,0,1,1,427613,0,14587.68,51.31006,1,12,1,84.52502,14.57099,0,0,0,99.09602,0,0,0,4,0,5,71.8,24.1,1,63.6,0,0,0,0,1.609438,0,0,0,0,1,0,0,63.6,9.588001,1.609438,4.596089,1 +11,4,0,1,2,427613,0,14587.68,52.31006,1,12,1,39.0061,5.64932,0,0,0,44.65541,0,0,0,3,0,5,71.8,24.1,1,63.6,0,0,0,0,1.609438,0,0,0,0,1,0,0,63.6,9.588001,1.609438,3.798975,1 +11,4,0,1,3,427613,0,14587.68,53.31006,1,12,1,112.4248,10.81255,55.88994,0,0,179.1273,0,0,0,7,0,5,71.8,24.1,1,63.6,0,0,0,0,1.609438,0,0,0,0,1,0,0,63.6,9.588001,1.609438,5.188097,1 +11,4,0,1,1,427614,0,14587.68,14.14647,1,12,1,30.64351,4.290092,35.24004,0,0,70.17365,0,0,0,4,0,5,80.3,3.4,0,75,0,0,1,1,1.609438,0,0,0,0,1,0,0,75,9.588001,1.609438,4.250973,1 +11,4,0,1,2,427614,0,14587.68,15.14647,1,12,1,15.47117,3.000469,0,0,0,18.47164,0,0,0,1,0,5,80.3,3.4,0,75,0,0,1,1,1.609438,0,0,0,0,1,0,0,75,9.588001,1.609438,2.916236,1 +11,4,0,1,3,427614,0,14587.68,16.14647,1,12,1,79.75065,14.91831,0,0,0,94.66896,0,0,0,8,0,5,80.3,3.4,0,75,0,0,1,1,1.609438,0,0,0,0,1,0,0,75,9.588001,1.609438,4.550386,1 +16,4,95,1,1,427617,0,4496.774,47.76455,1,10,1,63.83308,0,79.85574,0,0,143.6888,0,0,0,2,0,2,73.9,27.6,0,71.6,931.35,931.35,0,0,.6931472,6.836635,0,4.564348,6.887928,1,0,0,71.6,8.411338,.6931472,4.96765,1 +16,4,95,1,2,427617,0,4496.774,48.76455,1,10,1,5.681818,0,0,0,0,5.681818,0,0,0,0,0,2,73.9,27.6,0,71.6,931.35,931.35,0,0,.6931472,6.836635,0,4.564348,6.887928,1,0,0,71.6,8.411338,.6931472,1.737271,1 +16,4,95,1,1,427618,0,4496.774,15.91239,1,10,1,43.53426,1.262236,25.75992,216.3833,0,70.55641,0,0,14,4,0,2,72.9,6.9,0,83,931.35,931.35,1,1,.6931472,6.836635,0,4.564348,6.887928,1,0,0,83,8.411338,.6931472,4.256413,1 +16,4,95,1,2,427618,0,4496.774,16.91239,1,10,1,16.09848,0,0,56.81818,0,16.09848,0,0,4,3,0,2,72.9,6.9,0,83,931.35,931.35,1,1,.6931472,6.836635,0,4.564348,6.887928,1,0,0,83,8.411338,.6931472,2.778725,1 +16,4,95,1,1,427619,0,3929.032,26.08624,1,12,1,0,4.044307,0,0,0,4.044307,0,0,0,0,0,1,70.2,10.3,0,73.9,900,900,0,0,0,6.802395,0,4.564348,6.853688,0,0,0,73.9,8.276402,0,1.39731,1 +16,4,95,1,2,427619,0,3929.032,27.08624,1,12,1,19.64962,0,0,0,0,19.64962,0,0,0,1,0,1,70.2,10.3,0,73.9,900,900,0,0,0,6.802395,0,4.564348,6.853688,0,0,0,73.9,8.276402,0,2.978058,1 +16,4,95,1,3,427619,0,3929.032,28.08624,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,70.2,10.3,0,73.9,900,900,0,0,0,6.802395,0,4.564348,6.853688,0,0,0,73.9,8.276402,0,,0 +16,4,95,1,4,427619,0,3929.032,29.08624,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,70.2,10.3,0,73.9,900,900,0,0,0,6.802395,0,4.564348,6.853688,0,0,0,73.9,8.276402,0,,0 +16,4,95,1,5,427619,0,3929.032,30.08624,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,70.2,10.3,0,73.9,900,900,0,0,0,6.802395,0,4.564348,6.853688,0,0,0,73.9,8.276402,0,,0 +13,4,0,1,1,427631,0,11010.56,36.95004,1,12,1,27.25399,5.641422,0,0,0,32.89542,0,0,0,2,0,5,80.3,6.9,0,83,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,83,9.306701,1.609438,3.493333,1 +13,4,0,1,2,427631,0,11010.56,37.95004,1,12,1,38.35227,24.22348,0,0,0,62.57576,0,0,0,5,0,5,80.3,6.9,0,83,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,83,9.306701,1.609438,4.136378,1 +13,4,0,1,3,427631,0,11010.56,38.95004,1,12,1,154.7898,2.522757,21.67317,0,0,178.9857,0,0,0,5,0,5,80.3,6.9,0,83,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,83,9.306701,1.609438,5.187306,1 +13,4,0,1,1,427632,0,11010.56,5.048597,1,12,1,15.45595,12.91602,20.60793,0,0,48.97991,0,0,0,2,0,5,95,9.967326,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.306701,1.609438,3.89141,1 +13,4,0,1,2,427632,0,11010.56,6.048597,1,12,1,35.58239,15.08523,0,0,0,50.66761,0,0,0,2,0,5,95,9.967326,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.306701,1.609438,3.925287,1 +13,4,0,1,3,427632,0,11010.56,7.048597,1,12,1,26.44127,12.97356,18.63893,0,0,58.05375,0,0,0,3,0,5,95,9.967326,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.306701,1.609438,4.061369,1 +13,4,0,1,1,427633,0,11010.56,2.600958,0,12,1,5.151984,12.85935,0,0,0,18.01133,0,0,0,1,0,5,83.39137,9.967326,0,96.3,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.306701,1.609438,2.891001,1 +13,4,0,1,2,427633,0,11010.56,3.600958,0,12,1,7.102273,12.93561,0,0,0,20.03788,0,0,0,1,0,5,83.39137,9.967326,0,96.3,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.306701,1.609438,2.997624,1 +13,4,0,1,3,427633,0,11010.56,4.600958,0,12,1,26.44127,11.77287,0,0,0,38.21413,0,0,0,3,0,5,83.39137,9.967326,0,96.3,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.306701,1.609438,3.643205,1 +13,4,0,1,1,427634,0,11010.56,9.015742,1,12,1,6.697578,12.85935,0,0,0,19.55693,0,0,0,1,0,5,95,9.967326,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.306701,1.609438,2.97333,1 +13,4,0,1,2,427634,0,11010.56,10.01574,1,12,1,16.57197,13.25284,17.99242,0,0,47.81723,0,0,0,2,0,5,95,9.967326,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.306701,1.609438,3.867386,1 +13,4,0,1,3,427634,0,11010.56,11.01574,1,12,1,24.27395,14.46034,11.27005,0,0,50.00433,0,0,0,3,0,5,95,9.967326,0,81.5,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.306701,1.609438,3.91211,1 +13,4,0,1,1,427635,0,11010.56,40.1807,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83,6.9,0,80.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.306701,1.609438,,0 +13,4,0,1,2,427635,0,11010.56,41.1807,0,12,1,9.469697,0,27.46212,0,0,36.93182,0,0,0,1,0,5,83,6.9,0,80.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.306701,1.609438,3.609073,1 +13,4,0,1,3,427635,0,11010.56,42.1807,0,12,1,0,0,19.50585,0,0,19.50585,0,0,0,0,0,5,83,6.9,0,80.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.306701,1.609438,2.970715,1 +14,4,95,1,1,427656,0,6695.015,5.218344,0,12,1,5.151984,0,0,0,0,5.151984,0,0,0,1,0,4,88.3,9.967326,0,51.9,581.3,581.3,1,0,1.386294,6.365267,0,4.564348,6.41656,0,1,0,51.9,8.809268,1.386294,1.639382,1 +14,4,95,1,2,427656,0,6695.015,6.218344,0,12,1,25.0947,0,0,0,0,25.0947,0,0,0,1,0,4,88.3,9.967326,0,51.9,581.3,581.3,1,0,1.386294,6.365267,0,4.564348,6.41656,0,1,0,51.9,8.809268,1.386294,3.222656,1 +14,4,95,1,3,427656,0,6695.015,7.218344,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,9.967326,0,51.9,581.3,581.3,1,0,1.386294,6.365267,0,4.564348,6.41656,0,1,0,51.9,8.809268,1.386294,,0 +14,4,95,1,1,427657,0,6695.015,29.32512,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,96.8,3.4,0,67,581.3,581.3,0,0,1.386294,6.365267,0,4.564348,6.41656,1,0,0,67,8.809268,1.386294,,0 +14,4,95,1,2,427657,0,6695.015,30.32512,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,96.8,3.4,0,67,581.3,581.3,0,0,1.386294,6.365267,0,4.564348,6.41656,1,0,0,67,8.809268,1.386294,,0 +14,4,95,1,3,427657,0,6695.015,31.32512,0,12,1,28.73429,0,0,0,0,28.73429,0,0,0,1,0,4,96.8,3.4,0,67,581.3,581.3,0,0,1.386294,6.365267,0,4.564348,6.41656,1,0,0,67,8.809268,1.386294,3.358091,1 +14,4,95,1,1,427658,0,6695.015,7.296372,0,12,1,20.2473,0,0,0,0,20.2473,0,0,0,0,0,4,76.7,9.967326,0,88.9,581.3,581.3,1,0,1.386294,6.365267,0,4.564348,6.41656,1,0,0,88.9,8.809268,1.386294,3.008021,1 +14,4,95,1,2,427658,0,6695.015,8.296372,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.7,9.967326,0,88.9,581.3,581.3,1,0,1.386294,6.365267,0,4.564348,6.41656,1,0,0,88.9,8.809268,1.386294,,0 +14,4,95,1,3,427658,0,6695.015,9.296372,0,12,1,7.585609,0,0,0,0,7.585609,0,0,0,0,0,4,76.7,9.967326,0,88.9,581.3,581.3,1,0,1.386294,6.365267,0,4.564348,6.41656,1,0,0,88.9,8.809268,1.386294,2.026253,1 +14,4,95,1,1,427659,0,6695.015,29.56058,1,12,1,18.03194,0,0,0,0,18.03194,0,0,0,2,0,4,82.4,3.4,0,86.4,581.3,581.3,0,0,1.386294,6.365267,0,4.564348,6.41656,0,0,0,86.4,8.809268,1.386294,2.892145,1 +14,4,95,1,2,427659,0,6695.015,30.56058,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,82.4,3.4,0,86.4,581.3,581.3,0,0,1.386294,6.365267,0,4.564348,6.41656,0,0,0,86.4,8.809268,1.386294,,0 +14,4,95,1,3,427659,0,6695.015,31.56058,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,82.4,3.4,0,86.4,581.3,581.3,0,0,1.386294,6.365267,0,4.564348,6.41656,0,0,0,86.4,8.809268,1.386294,,0 +18,4,25,1,1,427661,0,9322.581,21.88364,1,12,1,110.8274,18.00307,21.96119,0,0,150.7916,0,0,0,4,1,3,43.1,3.4,0,79.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,79.5,9.140302,1.098612,5.015899,1 +18,4,25,1,2,427661,0,9322.581,22.88364,1,12,1,54.3835,26.16034,23.44116,0,0,103.985,0,0,0,3,1,3,43.1,3.4,0,79.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,79.5,9.140302,1.098612,4.644247,1 +18,4,25,1,3,427661,0,9322.581,23.88364,1,12,1,73.94669,12.25279,0,0,614.6174,700.8168,1,0,0,4,0,3,43.1,3.4,0,79.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,79.5,9.140302,1.098612,6.552247,1 +18,4,25,1,4,427661,0,9322.581,24.88364,1,12,1,58.45289,27.06475,0,0,0,85.51764,0,0,0,6,0,3,43.1,3.4,0,79.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,79.5,9.140302,1.098612,4.448723,1 +18,4,25,1,5,427661,0,9322.581,25.88364,1,12,1,7.077141,43.95966,0,0,0,51.0368,0,0,0,1,0,3,43.1,3.4,0,79.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,79.5,9.140302,1.098612,3.932547,1 +18,4,25,1,1,427662,0,9322.581,25.93292,0,12,1,43.89684,.8937691,0,0,675.046,719.8365,1,0,0,6,0,3,78.7,13.8,0,70.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,70.5,9.140302,1.098612,6.579024,1 +18,4,25,1,2,427662,0,9322.581,26.93292,0,12,1,9.376465,1.593999,33.28645,0,0,44.25692,0,0,0,0,1,3,78.7,13.8,0,70.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,70.5,9.140302,1.098612,3.790012,1 +18,4,25,1,3,427662,0,9322.581,27.93292,0,12,1,6.448839,0,0,0,0,6.448839,0,0,0,1,0,3,78.7,13.8,0,70.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,70.5,9.140302,1.098612,1.8639,1 +18,4,25,1,4,427662,0,9322.581,28.93292,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,78.7,13.8,0,70.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,70.5,9.140302,1.098612,,0 +18,4,25,1,5,427662,0,9322.581,29.93292,0,12,1,72.18684,0,0,0,0,72.18684,0,0,0,4,0,3,78.7,13.8,0,70.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,70.5,9.140302,1.098612,4.279258,1 +17,4,25,1,1,427673,0,1241.642,24.96372,1,16,1,64.50283,2.761463,0,0,0,67.2643,0,0,0,4,0,1,69.1,0,0,89.8,242.5,0,0,0,0,0,0,3.258096,6.877296,0,0,0,89.8,7.124995,0,4.20863,1 +17,4,25,1,2,427673,0,1241.642,25.96372,1,16,1,93.27651,5.336174,3.787879,0,0,102.4006,0,0,0,9,0,1,69.1,0,0,89.8,242.5,0,0,0,0,0,0,3.258096,6.877296,0,0,0,89.8,7.124995,0,4.628892,1 +17,4,25,1,3,427673,0,1241.642,26.96372,1,16,1,37.27785,19.72258,0,0,0,57.00043,0,0,0,8,1,1,69.1,0,0,89.8,242.5,0,0,0,0,0,0,3.258096,6.877296,0,0,0,89.8,7.124995,0,4.043059,1 +11,4,0,0,1,427674,0,9925.514,15.12663,1,12,1,15.32176,0,32.17569,0,0,47.49745,0,0,0,1,1,5,87.8,3.4,0,71.6,0,173.16,1,1,1.609438,5.154216,0,0,0,0,0,0,71.6,9.202965,1.609438,3.860676,1 +11,4,0,0,2,427674,0,9925.514,16.12663,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,87.8,3.4,0,71.6,0,173.16,1,1,1.609438,5.154216,0,0,0,0,0,0,71.6,9.202965,1.609438,,0 +11,4,0,0,3,427674,0,9925.514,17.12663,1,12,1,21.49613,2.063628,36.54342,0,0,60.10318,0,0,0,2,1,3,87.8,3.4,0,71.6,0,173.16,1,1,1.098612,5.154216,0,0,0,0,0,0,71.6,9.202965,1.098612,4.096063,1 +11,4,0,0,1,427675,0,9925.514,45.61807,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,85.6,3.4,0,71.6,0,173.16,0,0,1.609438,5.154216,0,0,0,0,0,0,71.6,9.202965,1.609438,,0 +11,4,0,0,2,427675,0,9925.514,46.61807,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,85.6,3.4,0,71.6,0,173.16,0,0,1.609438,5.154216,0,0,0,0,0,0,71.6,9.202965,1.609438,,0 +11,4,0,0,3,427675,0,9925.514,47.61807,0,12,1,10.74806,6.878762,55.88994,0,0,73.51677,0,0,0,0,1,3,85.6,3.4,0,71.6,0,173.16,0,0,1.098612,5.154216,0,0,0,0,0,0,71.6,9.202965,1.098612,4.297513,1 +11,4,0,0,1,427676,0,9925.514,16.38604,1,12,1,33.99387,20.92441,0,0,0,54.91829,0,0,0,5,0,5,78.7,3.4,0,76.1,0,173.16,1,1,1.609438,5.154216,0,0,0,0,0,0,76.1,9.202965,1.609438,4.005847,1 +11,4,0,0,2,427676,0,9925.514,17.38604,1,12,1,30.47351,21.63619,30.94234,0,0,83.05204,0,0,0,4,1,5,78.7,3.4,0,76.1,0,173.16,1,1,1.609438,5.154216,0,0,0,0,0,0,76.1,9.202965,1.609438,4.419467,1 +11,4,0,0,1,427677,0,9925.514,42.60369,1,12,1,69.66292,0,0,0,0,69.66292,0,0,0,2,0,5,78.2,6.9,0,78.4,0,173.16,0,0,1.609438,5.154216,0,0,0,0,0,0,78.4,9.202965,1.609438,4.243668,1 +11,4,0,0,2,427677,0,9925.514,43.60369,1,12,1,9.376465,0,59.07173,0,0,68.4482,0,0,0,0,1,5,78.2,6.9,0,78.4,0,173.16,0,0,1.609438,5.154216,0,0,0,0,0,0,78.4,9.202965,1.609438,4.226077,1 +11,4,0,0,1,427678,0,9925.514,6.986995,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,9.967326,0,81.5,0,173.16,1,1,1.609438,5.154216,0,0,0,0,0,0,81.5,9.202965,1.609438,,0 +11,4,0,0,2,427678,0,9925.514,7.986995,1,12,1,9.376465,0,25.78528,0,0,35.16174,0,0,0,0,1,5,88.3,9.967326,0,81.5,0,173.16,1,1,1.609438,5.154216,0,0,0,0,0,0,81.5,9.202965,1.609438,3.559959,1 +11,4,0,0,3,427678,0,9925.514,8.986995,1,12,1,14.61737,1.526225,22.35598,0,0,38.49957,0,0,0,1,1,3,88.3,9.967326,0,81.5,0,173.16,1,1,1.098612,5.154216,0,0,0,0,0,0,81.5,9.202965,1.098612,3.650647,1 +7,4,25,1,1,427757,0,7777.126,54.37372,0,12,1,15.45595,0,0,0,0,15.45595,0,0,0,2,0,2,77.1,10.3,0,68.2,750,725,0,0,.6931472,6.586172,0,3.258096,8.006368,0,0,0,68.2,8.959071,.6931472,2.737994,1 +7,4,25,1,2,427757,0,7777.126,55.37372,0,12,1,515.1515,2.059659,22.25379,0,0,539.465,0,0,0,10,25,2,77.1,10.3,0,68.2,750,725,0,0,.6931472,6.586172,0,3.258096,8.006368,0,0,0,68.2,8.959071,.6931472,6.290578,1 +7,4,25,1,3,427757,0,7777.126,56.37372,0,12,1,47.68097,0,26.0078,0,0,73.68877,0,0,0,1,10,1,77.1,10.3,0,68.2,750,725,0,0,0,6.586172,0,3.258096,8.006368,0,0,0,68.2,8.959071,0,4.29985,1 +7,4,25,1,1,427758,0,7777.126,47.16496,1,11,1,18.54714,24.10613,0,0,0,42.65327,0,0,0,3,0,2,69.7,13.8,0,62.5,750,725,0,0,.6931472,6.586172,0,3.258096,8.006368,1,0,0,62.5,8.959071,.6931472,3.753104,1 +7,4,25,1,2,427758,0,7777.126,48.16496,1,11,.0767123,0,0,0,0,0,0,0,0,0,0,0,2,69.7,13.8,0,62.5,750,725,0,0,.6931472,6.586172,0,3.258096,8.006368,1,0,0,62.5,8.959071,.6931472,,0 +13,4,0,1,1,427763,0,10902.05,12.44627,0,12,1,36.77222,71.4096,0,0,0,108.1818,0,0,0,7,0,3,88.3,9.967326,0,63,450,919.44,1,0,1.098612,6.823765,1,4.564348,6.160541,0,0,0,63,9.296798,1.098612,4.683813,1 +13,4,0,1,2,427763,0,10902.05,13.44627,0,12,1,15.93999,62.37225,0,0,0,78.31223,0,0,0,3,0,3,88.3,9.967326,0,63,450,919.44,1,0,1.098612,6.823765,1,4.564348,6.160541,0,0,0,63,9.296798,1.098612,4.360704,1 +13,4,0,1,3,427763,0,10902.05,14.44627,0,12,1,24.61307,21.99484,0,0,0,46.60791,0,0,0,3,0,3,88.3,9.967326,0,63,450,919.44,1,0,1.098612,6.823765,1,4.564348,6.160541,0,0,0,63,9.296798,1.098612,3.84177,1 +13,4,0,1,1,427764,0,10902.05,45.15263,1,12,1,57.48723,140.5056,0,0,0,197.9928,0,0,0,4,0,3,83,24.1,1,48.9,450,919.44,0,0,1.098612,6.823765,1,4.564348,6.160541,1,0,0,48.9,9.296798,1.098612,5.288231,1 +13,4,0,1,2,427764,0,10902.05,46.15263,1,12,1,72.6676,104.3647,195.9681,0,674.0131,1047.014,1,0,0,7,1,3,83,24.1,1,48.9,450,919.44,0,0,1.098612,6.823765,1,4.564348,6.160541,1,0,0,48.9,9.296798,1.098612,6.953697,1 +13,4,0,1,3,427764,0,10902.05,47.15263,1,12,1,49.52708,125.4815,0,0,0,175.0086,0,0,0,4,0,3,83,24.1,1,48.9,450,919.44,0,0,1.098612,6.823765,1,4.564348,6.160541,1,0,0,48.9,9.296798,1.098612,5.164835,1 +13,4,0,1,1,427765,0,10902.05,45.84531,0,12,1,62.56384,74.50459,43.15628,0,0,180.2247,0,0,0,2,1,3,80.9,13.8,0,84.1,450,919.44,0,0,1.098612,6.823765,1,4.564348,6.160541,0,0,0,84.1,9.296798,1.098612,5.194204,1 +13,4,0,1,2,427765,0,10902.05,46.84531,0,12,1,4.688232,23.77403,0,0,0,28.46226,0,0,0,1,0,3,80.9,13.8,0,84.1,450,919.44,0,0,1.098612,6.823765,1,4.564348,6.160541,0,0,0,84.1,9.296798,1.098612,3.348579,1 +13,4,0,1,3,427765,0,10902.05,47.84531,0,12,1,10.74806,2.145314,45.14188,0,0,58.03526,0,0,0,0,1,3,80.9,13.8,0,84.1,450,919.44,0,0,1.098612,6.823765,1,4.564348,6.160541,0,0,0,84.1,9.296798,1.098612,4.061051,1 +11,4,0,0,1,427780,0,5984.246,22.69952,1,12,1,16.48635,3.060278,32.1999,0,0,51.74652,0,0,0,2,0,2,83.6,10.3,0,92.9,0,501.8,0,0,.6931472,6.218202,0,0,0,0,0,0,92.9,8.697053,.6931472,3.946357,1 +11,4,0,0,2,427780,0,5984.246,23.69952,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,83.6,10.3,0,92.9,0,501.8,0,0,.6931472,6.218202,0,0,0,0,0,0,92.9,8.697053,.6931472,,0 +11,4,0,0,3,427780,0,5984.246,24.69952,1,12,1,54.72475,.9969658,0,0,0,55.72172,0,0,0,1,3,2,83.6,10.3,0,92.9,0,501.8,0,0,.6931472,6.218202,0,0,0,0,0,0,92.9,8.697053,.6931472,4.02037,1 +11,4,0,0,1,427781,0,5984.246,31.64682,0,12,1,62.7254,1.669243,0,0,1048.207,1112.602,2,0,0,3,0,2,55.3,6.9,0,44.3,0,501.8,0,0,.6931472,6.218202,0,0,0,1,0,0,44.3,8.697053,.6931472,7.014457,1 +11,4,0,0,2,427781,0,5984.246,32.64682,0,12,1,70.3125,14.7822,0,18.93939,967.3058,1052.401,1,0,2,5,0,2,55.3,6.9,0,44.3,0,501.8,0,0,.6931472,6.218202,0,0,0,1,0,0,44.3,8.697053,.6931472,6.958829,1 +11,4,0,0,3,427781,0,5984.246,33.64682,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,55.3,6.9,0,44.3,0,501.8,0,0,.6931472,6.218202,0,0,0,1,0,0,44.3,8.697053,.6931472,,0 +10,4,50,1,1,427795,0,6861.583,2.61191,0,12,1,35.36142,0,0,0,81.67447,117.0359,1,0,0,2,0,6,83.39137,9.967326,0,55.6,1000,0,1,0,1.791759,0,0,3.931826,7.600903,1,0,0,55.6,8.833839,1.791759,4.762481,1 +10,4,50,1,2,427795,0,6861.583,3.61191,0,12,1,7.644529,5.685619,0,0,0,13.33015,0,0,0,1,0,6,83.39137,9.967326,0,55.6,1000,0,1,0,1.791759,0,0,3.931826,7.600903,1,0,0,55.6,8.833839,1.791759,2.590028,1 +10,4,50,1,3,427795,0,6861.583,4.61191,0,12,1,29.741,2.107111,0,0,0,31.84811,0,0,0,4,0,6,83.39137,9.967326,0,55.6,1000,0,1,0,1.791759,0,0,3.931826,7.600903,1,0,0,55.6,8.833839,1.791759,3.460978,1 +10,4,50,1,4,427795,0,6861.583,5.61191,0,12,1,12.36538,7.618668,0,0,0,19.98405,0,0,0,1,0,6,83.39137,9.967326,0,55.6,1000,0,1,0,1.791759,0,0,3.931826,7.600903,1,0,0,55.6,8.833839,1.791759,2.994934,1 +10,4,50,1,5,427795,0,6861.583,6.61191,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83.39137,9.967326,0,55.6,1000,0,1,0,1.609438,0,0,3.931826,7.600903,1,0,0,55.6,8.833839,1.609438,,0 +10,4,50,1,1,427796,0,6861.583,7.82204,0,12,1,5.200208,0,0,0,0,5.200208,0,0,0,1,0,6,75,9.967326,0,40.7,1000,0,1,0,1.791759,0,0,3.931826,7.600903,1,0,0,40.7,8.833839,1.791759,1.648699,1 +10,4,50,1,2,427796,0,6861.583,8.82204,0,12,1,7.166746,3.798376,0,0,0,10.96512,0,0,0,1,0,6,75,9.967326,0,40.7,1000,0,1,0,1.791759,0,0,3.931826,7.600903,1,0,0,40.7,8.833839,1.791759,2.39472,1 +10,4,50,1,3,427796,0,6861.583,9.82204,0,12,1,5.267779,0,0,0,0,5.267779,0,0,0,1,0,6,75,9.967326,0,40.7,1000,0,1,0,1.791759,0,0,3.931826,7.600903,1,0,0,40.7,8.833839,1.791759,1.661609,1 +10,4,50,1,4,427796,0,6861.583,10.82204,0,12,1,7.977663,5.185481,0,0,0,13.16314,0,0,0,2,0,6,75,9.967326,0,40.7,1000,0,1,0,1.791759,0,0,3.931826,7.600903,1,0,0,40.7,8.833839,1.791759,2.577421,1 +10,4,50,1,5,427796,0,6861.583,11.82204,0,12,1,5.438724,0,0,0,0,5.438724,0,0,0,1,0,5,75,9.967326,0,40.7,1000,0,1,0,1.609438,0,0,3.931826,7.600903,1,0,0,40.7,8.833839,1.609438,1.693544,1 +10,4,50,1,1,427797,0,6861.583,36.64613,1,12,1,58.76235,208.9392,0,0,0,267.7015,0,0,0,14,0,6,55.9,10.3,0,55.7,1000,0,0,0,1.791759,0,0,3.931826,7.600903,0,1,0,55.7,8.833839,1.791759,5.589872,1 +10,4,50,1,2,427797,0,6861.583,37.64613,1,12,1,61.63402,75.91496,0,0,531.3426,668.8915,1,0,0,15,0,6,55.9,10.3,0,55.7,1000,0,0,0,1.791759,0,0,3.931826,7.600903,0,1,0,55.7,8.833839,1.791759,6.505622,1 +10,4,50,1,3,427797,0,6861.583,38.64613,1,12,1,57.0676,108.8235,0,0,0,165.8911,0,0,0,16,0,6,55.9,10.3,0,55.7,1000,0,0,0,1.791759,0,0,3.931826,7.600903,0,1,0,55.7,8.833839,1.791759,5.111332,1 +10,4,50,1,4,427797,0,6861.583,39.64613,1,12,.9453552,1267.012,48.20502,0,0,6702.912,8018.129,4,0,0,41,4,6,55.9,10.3,0,55.7,1000,0,0,0,1.791759,0,0,3.931826,7.600903,0,1,0,55.7,8.833839,1.791759,8.98946,1 +10,4,50,1,1,427798,0,6861.583,14.78987,0,12,1,97.24389,5.980239,28.86115,0,0,132.0853,0,0,0,7,0,6,61.2,6.9,0,63.6,1000,0,1,0,1.791759,0,0,3.931826,7.600903,1,0,0,63.6,8.833839,1.791759,4.883448,1 +10,4,50,1,2,427798,0,6861.583,15.78987,0,12,1,39.65599,1.600573,0,0,0,41.25657,0,0,0,4,0,6,61.2,6.9,0,63.6,1000,0,1,0,1.791759,0,0,3.931826,7.600903,1,0,0,63.6,8.833839,1.791759,3.71981,1 +10,4,50,1,3,427798,0,6861.583,16.78987,0,12,1,1.755926,3.292362,0,0,0,5.048288,0,0,0,0,0,6,61.2,6.9,0,63.6,1000,0,1,0,1.791759,0,0,3.931826,7.600903,1,0,0,63.6,8.833839,1.791759,1.619049,1 +10,4,50,1,4,427798,0,6861.583,17.78987,0,12,1,323.6019,1.515756,9.972078,0,1457.419,1792.509,1,0,0,5,1,6,61.2,6.9,0,63.6,1000,0,1,0,1.791759,0,0,3.931826,7.600903,1,0,0,63.6,8.833839,1.791759,7.491372,1 +10,4,50,1,5,427798,0,6861.583,18.78987,0,12,1,44.59753,0,0,0,0,44.59753,0,0,0,4,0,5,61.2,6.9,0,63.6,1000,0,0,0,1.609438,0,0,3.931826,7.600903,1,0,0,63.6,8.833839,1.609438,3.797678,1 +10,4,50,1,1,427799,0,6861.583,5.522245,1,12,1,13.81175,3.094124,0,0,0,16.90588,0,0,0,2,0,6,71.7,9.967326,0,37,1000,0,1,1,1.791759,0,0,3.931826,7.600903,1,0,0,37,8.833839,1.791759,2.827661,1 +10,4,50,1,2,427799,0,6861.583,6.522245,1,12,1,6.688963,3.39226,0,0,0,10.08122,0,0,0,1,0,6,71.7,9.967326,0,37,1000,0,1,1,1.791759,0,0,3.931826,7.600903,1,0,0,37,8.833839,1.791759,2.310675,1 +10,4,50,1,3,427799,0,6861.583,7.522245,1,12,1,18.87621,3.819139,18.43723,0,0,41.13257,0,0,0,2,0,6,71.7,9.967326,0,37,1000,0,1,1,1.791759,0,0,3.931826,7.600903,1,0,0,37,8.833839,1.791759,3.7168,1 +10,4,50,1,4,427799,0,6861.583,8.522245,1,12,1,10.37096,1.515756,0,0,0,11.88672,0,0,0,1,0,6,71.7,9.967326,0,37,1000,0,1,1,1.791759,0,0,3.931826,7.600903,1,0,0,37,8.833839,1.791759,2.475421,1 +10,4,50,1,5,427799,0,6861.583,9.522245,1,12,1,51.61349,0,0,0,0,51.61349,0,0,0,5,0,5,71.7,9.967326,0,37,1000,0,1,1,1.609438,0,0,3.931826,7.600903,1,0,0,37,8.833839,1.609438,3.943783,1 +10,4,50,1,1,427800,0,6861.583,38.42574,0,12,1,11.96048,0,0,0,0,11.96048,0,0,0,1,0,6,78.2,3.4,0,58,1000,0,0,0,1.791759,0,0,3.931826,7.600903,1,0,0,58,8.833839,1.791759,2.481608,1 +10,4,50,1,2,427800,0,6861.583,39.42574,0,12,1,25.08361,0,0,0,0,25.08361,0,0,0,2,0,6,78.2,3.4,0,58,1000,0,0,0,1.791759,0,0,3.931826,7.600903,1,0,0,58,8.833839,1.791759,3.222215,1 +10,4,50,1,3,427800,0,6861.583,40.42574,0,12,1,25.02195,0,0,0,0,25.02195,0,0,0,2,0,6,78.2,3.4,0,58,1000,0,0,0,1.791759,0,0,3.931826,7.600903,1,0,0,58,8.833839,1.791759,3.219754,1 +10,4,50,1,4,427800,0,6861.583,41.42574,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,78.2,3.4,0,58,1000,0,0,0,1.791759,0,0,3.931826,7.600903,1,0,0,58,8.833839,1.791759,,0 +10,4,50,1,5,427800,0,6861.583,42.42574,0,12,1,9.06454,0,27.5562,0,0,36.62074,0,0,0,1,0,5,78.2,3.4,0,58,1000,0,0,0,1.609438,0,0,3.931826,7.600903,1,0,0,58,8.833839,1.609438,3.600615,1 +11,4,0,0,1,427803,0,11563.64,5.281314,0,13,1,22.98264,1.378958,0,0,0,24.36159,0,0,0,0,1,6,93.3,9.967326,0,70.4,0,492.84,1,0,1.791759,6.200184,0,0,0,0,0,0,70.4,9.355707,1.791759,3.193008,1 +11,4,0,0,2,427803,0,11563.64,6.281314,0,13,1,311.0408,26.98078,0,0,0,338.0216,0,0,0,4,2,6,93.3,9.967326,0,70.4,0,492.84,1,0,1.791759,6.200184,0,0,0,0,0,0,70.4,9.355707,1.791759,5.82311,1 +11,4,0,0,3,427803,0,11563.64,7.281314,0,13,1,0,2.901978,0,0,0,2.901978,0,0,0,0,0,6,93.3,9.967326,0,70.4,0,492.84,1,0,1.791759,6.200184,0,0,0,0,0,0,70.4,9.355707,1.791759,1.065392,1 +11,4,0,0,4,427803,0,11563.64,8.281314,0,13,1,40.75223,4.203179,0,0,0,44.95541,0,0,0,4,0,6,93.3,9.967326,0,70.4,0,492.84,1,0,1.791759,6.200184,0,0,0,0,0,0,70.4,9.355707,1.791759,3.805671,1 +11,4,0,0,5,427803,0,11563.64,9.281314,0,13,1,6.01557,6.369427,0,0,0,12.385,0,0,0,1,0,6,93.3,9.967326,0,70.4,0,492.84,1,0,1.791759,6.200184,0,0,0,0,0,0,70.4,9.355707,1.791759,2.516486,1 +11,4,0,0,1,427804,0,11563.64,11.31006,1,13,1,104.8264,0,21.96119,0,0,126.7875,0,0,0,4,1,6,85,9.967326,0,85.2,0,492.84,1,1,1.791759,6.200184,0,0,0,0,0,0,85.2,9.355707,1.791759,4.842513,1 +11,4,0,0,2,427804,0,11563.64,12.31006,1,13,1,29.06704,5.789967,0,0,0,34.85701,0,0,0,3,2,6,85,9.967326,0,85.2,0,492.84,1,1,1.791759,6.200184,0,0,0,0,0,0,85.2,9.355707,1.791759,3.551254,1 +11,4,0,0,3,427804,0,11563.64,13.31006,1,13,1,15.79966,3.8908,0,0,0,19.69046,0,0,0,2,0,6,85,9.967326,0,85.2,0,492.84,1,1,1.791759,6.200184,0,0,0,0,0,0,85.2,9.355707,1.791759,2.980134,1 +11,4,0,0,4,427804,0,11563.64,14.31006,1,13,1,31.40752,6.010081,0,0,0,37.4176,0,0,0,3,0,6,85,9.967326,0,85.2,0,492.84,1,1,1.791759,6.200184,0,0,0,0,0,0,85.2,9.355707,1.791759,3.622141,1 +11,4,0,0,5,427804,0,11563.64,15.31006,1,13,1,7.077141,0,0,0,0,7.077141,0,0,0,0,1,6,85,9.967326,0,85.2,0,492.84,1,1,1.791759,6.200184,0,0,0,0,0,0,85.2,9.355707,1.791759,1.95687,1 +11,4,0,0,1,427805,0,11563.64,9.415469,1,13,1,14.8621,3.983657,0,0,0,18.84576,0,0,0,1,0,6,70,9.967326,0,77.8,0,492.84,1,1,1.791759,6.200184,0,0,0,0,0,0,77.8,9.355707,1.791759,2.936288,1 +11,4,0,0,2,427805,0,11563.64,10.41547,1,13,1,62.00188,25.15237,0,0,0,87.15424,0,0,0,8,0,6,70,9.967326,0,77.8,0,492.84,1,1,1.791759,6.200184,0,0,0,0,0,0,77.8,9.355707,1.791759,4.46768,1 +11,4,0,0,3,427805,0,11563.64,11.41547,1,13,1,4.987103,5.803955,0,0,0,10.79106,0,0,0,2,0,6,70,9.967326,0,77.8,0,492.84,1,1,1.791759,6.200184,0,0,0,0,0,0,77.8,9.355707,1.791759,2.378718,1 +11,4,0,0,4,427805,0,11563.64,12.41547,1,13,1,0,0,0,0,0,0,0,0,0,0,0,6,70,9.967326,0,77.8,0,492.84,1,1,1.791759,6.200184,0,0,0,0,0,0,77.8,9.355707,1.791759,,0 +11,4,0,0,5,427805,0,11563.64,13.41547,1,13,1,124.5577,.8032555,0,0,0,125.3609,0,0,0,4,0,6,70,9.967326,0,77.8,0,492.84,1,1,1.791759,6.200184,0,0,0,0,0,0,77.8,9.355707,1.791759,4.831197,1 +11,4,0,0,1,427806,0,11563.64,32.85421,1,13,1,35.4954,13.20225,34.21859,0,0,82.91624,0,0,0,2,0,6,81.9,10.3,0,70.5,0,492.84,0,0,1.791759,6.200184,0,0,0,0,1,0,70.5,9.355707,1.791759,4.417831,1 +11,4,0,0,2,427806,0,11563.64,33.85421,1,13,1,495.4524,24.00375,0,0,0,519.4562,0,0,0,7,0,6,81.9,10.3,0,70.5,0,492.84,0,0,1.791759,6.200184,0,0,0,0,1,0,70.5,9.355707,1.791759,6.252782,1 +11,4,0,0,3,427806,0,11563.64,34.85421,1,13,1,38.15563,5.266552,0,0,0,43.42218,0,0,0,2,0,6,81.9,10.3,0,70.5,0,492.84,0,0,1.791759,6.200184,0,0,0,0,1,0,70.5,9.355707,1.791759,3.77097,1 +11,4,0,0,4,427806,0,11563.64,35.85421,1,13,1,13.57115,.7754944,0,0,0,14.34665,0,0,0,1,1,6,81.9,10.3,0,70.5,0,492.84,0,0,1.791759,6.200184,0,0,0,0,1,0,70.5,9.355707,1.791759,2.663516,1 +11,4,0,0,5,427806,0,11563.64,36.85421,1,13,1,23.53149,1.751592,24.06228,0,0,49.34536,0,0,0,3,0,6,81.9,10.3,0,70.5,0,492.84,0,0,1.791759,6.200184,0,0,0,0,1,0,70.5,9.355707,1.791759,3.898844,1 +11,4,0,0,1,427807,0,11563.64,36.57221,0,12,1,52.86006,1.71093,0,0,0,54.57099,0,0,0,4,0,6,83,6.9,1,70.2,0,492.84,0,0,1.791759,6.200184,0,0,0,0,0,0,70.2,9.355707,1.791759,3.999502,1 +11,4,0,0,2,427807,0,11563.64,37.57221,0,12,1,42.19409,5.157056,31.64557,0,0,78.99672,0,0,0,0,6,6,83,6.9,1,70.2,0,492.84,0,0,1.791759,6.200184,0,0,0,0,0,0,70.2,9.355707,1.791759,4.369406,1 +11,4,0,0,3,427807,0,11563.64,38.57221,0,12,1,43.63715,0,0,0,0,43.63715,0,0,0,1,4,6,83,6.9,1,70.2,0,492.84,0,0,1.791759,6.200184,0,0,0,0,0,0,70.2,9.355707,1.791759,3.775909,1 +11,4,0,0,4,427807,0,11563.64,39.57221,0,12,1,17.44862,3.664211,0,0,0,21.11283,0,0,0,1,1,6,83,6.9,1,70.2,0,492.84,0,0,1.791759,6.200184,0,0,0,0,0,0,70.2,9.355707,1.791759,3.049881,1 +11,4,0,0,5,427807,0,11563.64,40.57221,0,12,1,491.0651,3.78627,18.40057,0,0,513.252,0,0,0,6,0,6,83,6.9,1,70.2,0,492.84,0,0,1.791759,6.200184,0,0,0,0,0,0,70.2,9.355707,1.791759,6.240767,1 +11,4,0,0,1,427831,0,7646.334,24.68172,1,16,1,28.33591,21.32921,0,0,0,49.66512,0,0,0,2,0,2,73.4,6.9,0,62.5,0,180.96,0,0,.6931472,5.198276,0,0,0,0,0,0,62.5,8.942112,.6931472,3.905303,1 +11,4,0,0,2,427831,0,7646.334,25.68172,1,16,1,296.9934,20.77178,0,0,0,317.7651,0,0,0,6,0,2,73.4,6.9,0,62.5,0,180.96,0,0,.6931472,5.198276,0,0,0,0,0,0,62.5,8.942112,.6931472,5.761312,1 +11,4,0,0,3,427831,0,7646.334,26.68172,1,16,1,67.51192,20.74122,0,0,0,88.25314,0,0,0,3,1,2,73.4,6.9,0,62.5,0,180.96,0,0,.6931472,5.198276,0,0,0,0,0,0,62.5,8.942112,.6931472,4.480209,1 +11,4,0,0,4,427831,0,7646.334,27.68172,1,16,1,26.38834,26.91611,0,0,0,53.30445,0,0,0,2,1,2,73.4,6.9,0,62.5,0,180.96,0,0,.6931472,5.198276,0,0,0,0,0,0,62.5,8.942112,.6931472,3.97602,1 +11,4,0,0,5,427831,0,7646.334,28.68172,1,16,1,97.58498,14.2576,0,0,1258.537,1370.379,3,0,0,2,0,2,73.4,6.9,0,62.5,0,180.96,0,0,.6931472,5.198276,0,0,0,0,0,0,62.5,8.942112,.6931472,7.222843,1 +11,4,0,0,1,427832,0,7646.334,23.81383,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,81.9,13.8,0,75,0,180.96,0,0,.6931472,5.198276,0,0,0,0,0,0,75,8.942112,.6931472,,0 +11,4,0,0,2,427832,0,7646.334,24.81383,0,16,1,0,5.970644,0,0,0,5.970644,0,0,0,0,0,2,81.9,13.8,0,75,0,180.96,0,0,.6931472,5.198276,0,0,0,0,0,0,75,8.942112,.6931472,1.786855,1 +11,4,0,0,3,427832,0,7646.334,25.81383,0,16,1,32.07629,20.39012,23.40702,0,0,75.87343,0,0,0,4,0,2,81.9,13.8,0,75,0,180.96,0,0,.6931472,5.198276,0,0,0,0,0,0,75,8.942112,.6931472,4.329067,1 +11,4,0,0,4,427832,0,7646.334,26.81383,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,81.9,13.8,0,75,0,180.96,0,0,.6931472,5.198276,0,0,0,0,0,0,75,8.942112,.6931472,,0 +11,4,0,0,5,427832,0,7646.334,27.81383,0,16,1,11.44902,7.298748,18.24687,0,0,36.99463,0,0,0,1,1,2,81.9,13.8,0,75,0,180.96,0,0,.6931472,5.198276,0,0,0,0,0,0,75,8.942112,.6931472,3.610773,1 +11,4,0,1,1,427833,0,8444.575,5.902806,0,12,1,120.5408,3.770151,24.961,0,0,149.272,0,0,0,24,1,4,83.3,9.967326,0,100,0,400.08,1,0,1.386294,5.991664,0,0,0,0,0,0,100,9.041398,1.386294,5.00577,1 +11,4,0,1,2,427833,0,8444.575,6.902806,0,12,1,44.88772,5.996178,22.93359,0,0,73.81749,0,0,0,6,1,4,83.3,9.967326,0,100,0,400.08,1,0,1.386294,5.991664,0,0,0,0,0,0,100,9.041398,1.386294,4.301596,1 +11,4,0,1,3,427833,0,8444.575,7.902806,0,12,1,84.37225,3.204566,24.83758,65.84724,0,112.4144,0,0,5,5,0,4,83.3,9.967326,0,100,0,400.08,1,0,1.386294,5.991664,0,0,0,0,0,0,100,9.041398,1.386294,4.722192,1 +11,4,0,1,4,427833,0,8444.575,8.902806,0,12,1,55.2852,0,0,0,0,55.2852,0,0,0,5,0,4,83.3,9.967326,0,100,0,400.08,1,0,1.386294,5.991664,0,0,0,0,0,0,100,9.041398,1.386294,4.012505,1 +11,4,0,1,5,427833,0,8444.575,9.902806,0,12,1,57.14286,3.172589,29.00653,0,0,89.32198,0,0,0,7,0,4,83.3,9.967326,0,100,0,400.08,1,0,1.386294,5.991664,0,0,0,0,0,0,100,9.041398,1.386294,4.492248,1 +11,4,0,1,1,427834,0,8444.575,27.0527,0,8,1,10.40042,0,31.98128,0,0,42.38169,0,0,0,0,1,4,80.3,6.9,0,81.8,0,400.08,0,0,1.386294,5.991664,0,0,0,0,0,0,81.8,9.041398,1.386294,3.746716,1 +11,4,0,1,2,427834,0,8444.575,28.0527,0,8,1,9.555662,0,14.81128,0,0,24.36694,0,0,0,0,1,4,80.3,6.9,0,81.8,0,400.08,0,0,1.386294,5.991664,0,0,0,0,0,0,81.8,9.041398,1.386294,3.193227,1 +11,4,0,1,3,427834,0,8444.575,29.0527,0,8,1,8.779632,0,28.5338,0,0,37.31343,0,0,0,0,1,4,80.3,6.9,0,81.8,0,400.08,0,0,1.386294,5.991664,0,0,0,0,0,0,81.8,9.041398,1.386294,3.619354,1 +11,4,0,1,4,427834,0,8444.575,30.0527,0,8,1,9.972078,0,16.75309,0,0,26.72517,0,0,0,1,0,4,80.3,6.9,0,81.8,0,400.08,0,0,1.386294,5.991664,0,0,0,0,0,0,81.8,9.041398,1.386294,3.285606,1 +11,4,0,1,5,427834,0,8444.575,31.0527,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,80.3,6.9,0,81.8,0,400.08,0,0,1.386294,5.991664,0,0,0,0,0,0,81.8,9.041398,1.386294,,0 +11,4,0,1,1,427835,0,8444.575,7.323751,1,12,1,16.64067,1.950078,0,0,0,18.59074,0,0,0,3,0,4,81.7,9.967326,0,100,0,400.08,1,1,1.386294,5.991664,0,0,0,0,0,0,100,9.041398,1.386294,2.922664,1 +11,4,0,1,2,427835,0,8444.575,8.32375,1,12,1,5.733397,0,0,0,0,5.733397,0,0,0,1,0,4,81.7,9.967326,0,100,0,400.08,1,1,1.386294,5.991664,0,0,0,0,0,0,100,9.041398,1.386294,1.746308,1 +11,4,0,1,3,427835,0,8444.575,9.32375,1,12,1,59.04302,0,0,0,0,59.04302,0,0,0,5,0,4,81.7,9.967326,0,100,0,400.08,1,1,1.386294,5.991664,0,0,0,0,0,0,100,9.041398,1.386294,4.078266,1 +11,4,0,1,4,427835,0,8444.575,10.32375,1,12,1,27.52294,1.814918,0,0,0,29.33785,0,0,0,2,0,4,81.7,9.967326,0,100,0,400.08,1,1,1.386294,5.991664,0,0,0,0,0,0,100,9.041398,1.386294,3.378879,1 +11,4,0,1,5,427835,0,8444.575,11.32375,1,12,1,4.350979,0,0,0,0,4.350979,0,0,0,1,0,4,81.7,9.967326,0,100,0,400.08,1,1,1.386294,5.991664,0,0,0,0,0,0,100,9.041398,1.386294,1.470401,1 +11,4,0,1,1,427836,0,8444.575,26.33813,1,12,1,102.9641,11.70047,0,62.4025,0,114.6646,0,0,3,8,1,4,48.4,27.6,0,62.5,0,400.08,0,0,1.386294,5.991664,0,0,0,0,0,0,62.5,9.041398,1.386294,4.742011,1 +11,4,0,1,2,427836,0,8444.575,27.33813,1,12,1,37.74487,33.06259,0,0,0,70.80746,0,0,0,5,0,4,48.4,27.6,0,62.5,0,400.08,0,0,1.386294,5.991664,0,0,0,0,0,0,62.5,9.041398,1.386294,4.259964,1 +11,4,0,1,3,427836,0,8444.575,28.33813,1,12,1,140.6277,36.43547,0,0,0,177.0632,0,0,0,4,17,4,48.4,27.6,0,62.5,0,400.08,0,0,1.386294,5.991664,0,0,0,0,0,0,62.5,9.041398,1.386294,5.176507,1 +11,4,0,1,4,427836,0,8444.575,29.33813,1,12,1,51.05704,5.444755,0,277.2238,0,56.5018,0,0,30,3,5,4,48.4,27.6,0,62.5,0,400.08,0,0,1.386294,5.991664,0,0,0,0,0,0,62.5,9.041398,1.386294,4.034273,1 +11,4,0,1,5,427836,0,8444.575,30.33813,1,12,1,28.64395,1.53372,0,353.517,0,30.17767,0,0,39,4,0,4,48.4,27.6,0,62.5,0,400.08,0,0,1.386294,5.991664,0,0,0,0,0,0,62.5,9.041398,1.386294,3.407102,1 +16,4,95,1,1,427845,0,730.2053,20.10404,1,12,1,17.71255,0,24.2915,0,0,42.00405,0,0,0,0,1,1,58.5,6.9,0,89.8,34.5,0,0,0,0,0,0,4.564348,3.592253,0,0,0,89.8,6.594694,0,3.737766,1 +16,4,95,1,2,427845,0,730.2053,21.10404,1,12,1,6.713287,13.68298,0,0,646.0606,666.4568,1,0,0,0,0,1,58.5,6.9,0,89.8,34.5,0,0,0,0,0,0,4.564348,3.592253,0,0,0,89.8,6.594694,0,6.501976,1 +16,4,95,1,3,427845,0,730.2053,22.10404,1,12,1,23.8991,2.201796,24.79692,0,0,50.89782,0,0,0,1,1,2,58.5,6.9,0,89.8,34.5,0,0,0,.6931472,0,0,4.564348,3.592253,0,0,0,89.8,6.594694,.6931472,3.92982,1 +10,4,50,1,1,427858,0,2071.554,24.5859,0,12,1,7.660879,0,0,0,343.1103,350.7712,1,0,0,0,1,1,80.3,0,0,81.8,660,0,0,0,0,0,0,3.931826,7.185387,0,0,0,81.8,7.636537,0,5.860134,1 +10,4,50,1,2,427858,0,2071.554,25.5859,0,12,1,27.54337,2.967651,0,0,0,30.51102,0,0,0,2,0,1,80.3,0,0,81.8,660,0,0,0,0,0,0,3.931826,7.185387,0,0,0,81.8,7.636537,0,3.418088,1 +10,4,50,1,3,427858,0,2071.554,26.5859,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,80.3,0,0,81.8,660,0,0,0,0,0,0,3.931826,7.185387,0,0,0,81.8,7.636537,0,,0 +10,4,50,1,1,427859,0,4283.285,25.64819,0,12,1,0,0,28.33591,0,0,28.33591,0,0,0,0,0,1,73.9,6.9,0,92,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,0,0,0,92,8.362709,0,3.34413,1 +10,4,50,1,2,427859,0,4283.285,26.64819,0,12,1,11.83712,0,0,0,552.2017,564.0388,1,0,0,1,0,1,73.9,6.9,0,92,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,0,0,0,92,8.362709,0,6.335123,1 +10,4,50,1,3,427859,0,4283.285,27.64819,0,12,1,0,4.226268,0,0,0,4.226268,0,0,0,0,0,1,73.9,6.9,0,92,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,0,0,0,92,8.362709,0,1.441319,1 +15,4,95,1,1,427860,0,10733.72,26.48323,1,16,1,0,7.470376,0,0,0,7.470376,0,0,0,0,0,4,85.6,6.9,0,84.1,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.28124,1.386294,2.010945,1 +15,4,95,1,2,427860,0,10733.72,27.48323,1,16,1,9.469697,0,0,0,0,9.469697,0,0,0,1,0,4,85.6,6.9,0,84.1,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.28124,1.386294,2.248097,1 +15,4,95,1,3,427860,0,10733.72,28.48323,1,16,1,4.161248,0,0,0,0,4.161248,0,0,0,0,0,4,85.6,6.9,0,84.1,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.28124,1.386294,1.425815,1 +15,4,95,1,1,427861,0,10733.72,1.338809,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,83.39137,9.967326,0,96.3,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.28124,1.386294,,0 +15,4,95,1,2,427861,0,10733.72,2.338809,0,16,1,23.91098,0,0,0,0,23.91098,0,0,0,1,0,4,83.39137,9.967326,0,96.3,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.28124,1.386294,3.174338,1 +15,4,95,1,3,427861,0,10733.72,3.338809,0,16,1,14.52102,0,0,0,0,14.52102,0,0,0,0,0,4,83.39137,9.967326,0,96.3,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,96.3,9.28124,1.386294,2.675597,1 +15,4,95,1,1,427862,0,10733.72,28.75017,0,16,1,1.545595,4.276146,0,0,0,5.821742,0,0,0,1,0,4,85.6,10.3,0,70.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,70.5,9.28124,1.386294,1.761599,1 +15,4,95,1,2,427862,0,10733.72,29.75017,0,16,1,9.469697,0,0,0,0,9.469697,0,0,0,1,0,4,85.6,10.3,0,70.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,70.5,9.28124,1.386294,2.248097,1 +15,4,95,1,3,427862,0,10733.72,30.75017,0,16,1,13.0039,0,0,0,0,13.0039,0,0,0,1,0,4,85.6,10.3,0,70.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,70.5,9.28124,1.386294,2.565249,1 +15,4,95,1,1,427863,0,10733.72,5.437372,0,16,1,41.98867,7.50644,0,0,0,49.49511,0,0,0,6,0,4,95,9.967326,0,85.2,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.28124,1.386294,3.901874,1 +15,4,95,1,2,427863,0,10733.72,6.437372,0,16,1,4.734848,0,0,0,0,4.734848,0,0,0,1,0,4,95,9.967326,0,85.2,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.28124,1.386294,1.55495,1 +15,4,95,1,3,427863,0,10733.72,7.437372,0,16,1,17.27352,0,0,0,0,17.27352,0,0,0,0,0,4,95,9.967326,0,85.2,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.28124,1.386294,2.849174,1 +15,4,95,1,1,427868,0,6888.563,26.6037,0,16,1,21.76113,2.378542,0,0,0,24.13968,0,0,0,2,0,2,70.2,6.9,0,90.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,90.9,8.837763,.6931472,3.183857,1 +15,4,95,1,2,427868,0,6888.563,27.6037,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,70.2,6.9,0,90.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,90.9,8.837763,.6931472,,0 +15,4,95,1,3,427868,0,6888.563,28.6037,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,70.2,6.9,0,90.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,90.9,8.837763,.6931472,,0 +15,4,95,1,4,427868,0,6888.563,29.6037,0,16,1,11.91391,0,0,0,0,11.91391,0,0,0,1,1,2,70.2,6.9,0,90.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,90.9,8.837763,.6931472,2.477707,1 +15,4,95,1,5,427868,0,6888.563,30.6037,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,70.2,6.9,0,90.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,90.9,8.837763,.6931472,,0 +15,4,95,1,1,427869,0,6888.563,26.27515,1,16,1,38.96761,2.909919,0,0,0,41.87753,0,0,0,3,0,2,78.2,13.8,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,79.5,8.837763,.6931472,3.734749,1 +15,4,95,1,2,427869,0,6888.563,27.27515,1,16,1,34.96503,0,0,111.8881,0,34.96503,0,0,9,1,0,2,78.2,13.8,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,79.5,8.837763,.6931472,3.554348,1 +15,4,95,1,3,427869,0,6888.563,28.27515,1,16,1,25.22445,0,0,0,0,25.22445,0,0,0,2,0,2,78.2,13.8,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,79.5,8.837763,.6931472,3.227814,1 +15,4,95,1,4,427869,0,6888.563,29.27515,1,16,1,19.21599,7.647963,0,0,0,26.86395,0,0,0,2,0,2,78.2,13.8,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,79.5,8.837763,.6931472,3.290785,1 +15,4,95,1,5,427869,0,6888.563,30.27515,1,16,1,22.83105,0,0,94.83667,0,22.83105,0,0,6,2,0,2,78.2,13.8,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,79.5,8.837763,.6931472,3.128121,1 +11,4,0,1,1,427870,0,7400,4.517454,0,12,1,13.78958,14.70889,0,0,0,28.49847,0,0,0,2,0,4,83.39137,9.967326,0,70.4,0,251.52,1,0,1.386294,5.527523,0,0,0,0,0,0,70.4,8.90937,1.386294,3.34985,1 +11,4,0,1,2,427870,0,7400,5.517454,0,12,1,5.625879,7.032349,0,0,0,12.65823,0,0,0,1,0,4,83.39137,9.967326,0,70.4,0,251.52,1,0,1.386294,5.527523,0,0,0,0,0,0,70.4,8.90937,1.386294,2.538307,1 +11,4,0,1,3,427870,0,7400,6.517454,0,12,1,1.289768,2.579536,0,0,0,3.869303,0,0,0,1,0,4,83.39137,9.967326,0,70.4,0,251.52,1,0,1.386294,5.527523,0,0,0,0,0,0,70.4,8.90937,1.386294,1.353075,1 +11,4,0,1,1,427871,0,7400,26.54346,1,12,1,20.42901,16.08784,0,0,0,36.51685,0,0,0,2,0,4,75,6.9,0,71.6,0,251.52,0,0,1.386294,5.527523,0,0,0,1,0,0,71.6,8.90937,1.386294,3.597774,1 +11,4,0,1,2,427871,0,7400,27.54346,1,12,1,17.34646,21.72996,0,0,0,39.07642,0,0,0,2,0,4,75,6.9,0,71.6,0,251.52,0,0,1.386294,5.527523,0,0,0,1,0,0,71.6,8.90937,1.386294,3.665519,1 +11,4,0,1,3,427871,0,7400,28.54346,1,12,1,18.05675,8.490972,0,0,0,26.54772,0,0,0,2,0,4,75,6.9,0,71.6,0,251.52,0,0,1.386294,5.527523,0,0,0,1,0,0,71.6,8.90937,1.386294,3.278944,1 +11,4,0,1,1,427872,0,7400,2.124572,0,12,1,249.6425,38.90194,0,0,0,288.5444,0,0,0,22,0,4,83.39137,9.967326,0,51.9,0,251.52,1,0,1.386294,5.527523,0,0,0,0,1,0,51.9,8.90937,1.386294,5.664849,1 +11,4,0,1,2,427872,0,7400,3.124572,0,12,1,142.4051,64.58041,0,0,601.3784,808.3638,1,0,0,25,0,4,83.39137,9.967326,0,51.9,0,251.52,1,0,1.386294,5.527523,0,0,0,0,1,0,51.9,8.90937,1.386294,6.695012,1 +11,4,0,1,3,427872,0,7400,4.124572,0,12,1,215.7137,35.21066,.9028375,0,0,251.8272,0,0,0,30,0,4,83.39137,9.967326,0,51.9,0,251.52,1,0,1.386294,5.527523,0,0,0,0,1,0,51.9,8.90937,1.386294,5.528743,1 +11,4,0,1,1,427873,0,7400,29.1499,0,14,1,33.58018,2.298264,34.21859,0,0,70.09704,0,0,0,2,0,4,66.5,10.3,0,56.8,0,251.52,0,0,1.386294,5.527523,0,0,0,1,0,0,56.8,8.90937,1.386294,4.24988,1 +11,4,0,1,2,427873,0,7400,30.1499,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,66.5,10.3,0,56.8,0,251.52,0,0,1.386294,5.527523,0,0,0,1,0,0,56.8,8.90937,1.386294,,0 +11,4,0,1,3,427873,0,7400,31.1499,0,14,1,492.9149,2.622528,0,0,0,495.5374,0,0,0,4,3,4,66.5,10.3,0,56.8,0,251.52,0,0,1.386294,5.527523,0,0,0,1,0,0,56.8,8.90937,1.386294,6.205643,1 +16,4,95,0,1,427903,0,5041.642,36.62423,0,18,1,85.33197,0,0,0,0,85.33197,0,0,0,3,0,1,75,6.9,0,67,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,67,8.525685,0,4.446549,1 +16,4,95,0,2,427903,0,5041.642,37.62423,0,18,1,0,0,0,0,0,0,0,0,0,0,0,1,75,6.9,0,67,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,67,8.525685,0,,0 +16,4,95,0,3,427903,0,5041.642,38.62423,0,18,1,10.31814,3.761823,42.13242,0,0,56.21238,0,0,0,1,0,1,75,6.9,0,67,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,67,8.525685,0,4.029137,1 +16,4,95,0,1,427904,0,4147.214,31.51814,1,16,1,19.88764,7.37998,0,0,0,27.26762,0,0,0,1,0,1,77.1,17.2,0,60.2,990,965,0,0,0,6.872128,0,4.564348,6.948998,1,0,0,60.2,8.330433,0,3.3057,1 +16,4,95,0,2,427904,0,4147.214,32.51814,1,16,1,25.31646,0,0,0,0,25.31646,0,0,0,2,0,1,77.1,17.2,0,60.2,990,965,0,0,0,6.872128,0,4.564348,6.948998,1,0,0,60.2,8.330433,0,3.231455,1 +16,4,95,0,3,427904,0,4147.214,33.51814,1,16,1,41.46604,0,0,0,0,41.46604,0,0,0,3,0,1,77.1,17.2,0,60.2,990,965,0,0,0,6.872128,0,4.564348,6.948998,1,0,0,60.2,8.330433,0,3.724875,1 +10,4,50,1,1,427905,0,7624.633,17.62628,1,13,1,10.30397,5.409583,0,0,0,15.71355,0,0,0,2,0,3,80.9,3.4,0,100,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,100,8.939271,1.098612,2.754523,1 +10,4,50,1,2,427905,0,7624.633,18.62628,1,13,1,58.73579,0,0,0,0,58.73579,0,0,0,2,0,3,80.9,3.4,0,100,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,100,8.939271,1.098612,4.07305,1 +10,4,50,1,3,427905,0,7624.633,19.62628,1,13,1,16.03815,0,0,0,0,16.03815,0,0,0,1,0,3,80.9,3.4,0,100,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,100,8.939271,1.098612,2.77497,1 +10,4,50,1,1,427906,0,7624.633,57.2731,1,13,1,7.181865,0,0,0,0,7.181865,0,0,0,0,0,3,89.9,10.3,0,84.1,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,84.1,8.939271,1.098612,1.971559,1 +10,4,50,1,2,427906,0,7624.633,58.2731,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,89.9,10.3,0,84.1,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,84.1,8.939271,1.098612,,0 +10,4,50,1,3,427906,0,7624.633,59.2731,1,13,1,35.32727,0,34.24361,0,0,69.57087,0,0,0,2,0,3,89.9,10.3,0,84.1,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,84.1,8.939271,1.098612,4.242346,1 +10,4,50,1,1,427907,0,7624.633,60.77755,0,8,1,44.82226,36.0948,0,0,365.188,446.1051,1,0,0,6,0,3,91.5,17.2,0,73.9,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,73.9,8.939271,1.098612,6.100554,1 +10,4,50,1,2,427907,0,7624.633,61.77755,0,8,1,22.72727,62.36269,0,0,0,85.08997,0,0,0,4,0,3,91.5,17.2,0,73.9,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,73.9,8.939271,1.098612,4.443709,1 +10,4,50,1,3,427907,0,7624.633,62.77755,0,8,1,29.90897,74.46901,33.81014,0,0,138.1881,0,0,0,4,0,3,91.5,17.2,0,73.9,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,73.9,8.939271,1.098612,4.928616,1 +6,4,25,1,1,427938,0,1407.625,37.07324,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,65.4,10.3,0,56.8,187.2,0,0,0,0,0,0,3.258096,6.618472,1,0,0,56.8,7.250369,0,,0 +6,4,25,1,2,427938,0,1407.625,38.07324,0,14,1,7.102273,0,0,0,0,7.102273,0,0,0,1,0,1,65.4,10.3,0,56.8,187.2,0,0,0,0,0,0,3.258096,6.618472,1,0,0,56.8,7.250369,0,1.960415,1 +11,4,0,1,1,427966,0,12213.49,58.41752,1,12,1,110.1721,2.489879,0,0,0,112.6619,0,0,0,7,0,1,80.9,3.4,0,79.5,0,0,0,0,0,0,0,0,0,0,0,0,79.5,9.410378,0,4.724391,1 +11,4,0,1,2,427966,0,12213.49,59.41752,1,12,1,16.31702,1.771562,40.09324,0,0,58.18182,0,0,0,2,0,1,80.9,3.4,0,79.5,0,0,0,0,0,0,0,0,0,0,0,0,79.5,9.410378,0,4.063573,1 +11,4,0,1,3,427966,0,12213.49,60.41752,1,12,1,21.37666,8.332621,0,0,0,29.70928,0,0,0,2,0,1,80.9,3.4,0,79.5,0,0,0,0,0,0,0,0,0,0,0,0,79.5,9.410378,0,3.391459,1 +11,4,0,1,4,427966,0,12213.49,61.41752,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,80.9,3.4,0,79.5,0,0,0,0,0,0,0,0,0,0,0,0,79.5,9.410378,0,,0 +11,4,0,1,5,427966,0,12213.49,62.41752,1,12,1,8.781173,0,0,0,0,8.781173,0,0,0,1,0,1,80.9,3.4,0,79.5,0,0,0,0,0,0,0,0,0,0,0,0,79.5,9.410378,0,2.17261,1 +11,4,0,1,1,427986,0,2545.455,23.24983,1,16,1,31.45286,3.606389,26.79031,0,0,61.84956,0,0,0,2,0,1,67.2,13.8,0,51.1,0,166.08,0,0,0,5.11247,0,0,0,0,0,0,51.1,7.842457,0,4.124705,1 +11,4,0,1,2,427986,0,2545.455,24.24983,1,16,1,65.93276,3.716856,0,0,0,69.64962,0,0,0,6,0,1,67.2,13.8,0,51.1,0,166.08,0,0,0,5.11247,0,0,0,0,0,0,51.1,7.842457,0,4.243477,1 +11,4,0,1,3,427986,0,2545.455,25.24983,1,16,1,81.49111,4.993498,30.25574,0,0,116.7404,0,0,0,3,3,1,67.2,13.8,0,51.1,0,166.08,0,0,0,5.11247,0,0,0,0,0,0,51.1,7.842457,0,4.759952,1 +10,4,50,0,1,428026,0,8135.484,26.03422,1,14,1,17.51674,0,0,0,0,17.51674,0,0,0,1,0,3,72.9,0,0,79.5,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.5,9.004113,1.098612,2.863157,1 +10,4,50,0,2,428026,0,8135.484,27.03422,1,14,1,40.89489,10.32197,0,0,0,51.21686,0,0,0,3,0,3,72.9,0,0,79.5,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.5,9.004113,1.098612,3.936069,1 +10,4,50,0,3,428026,0,8135.484,28.03422,1,14,1,30.34244,7.910707,0,0,0,38.25314,0,0,0,4,0,3,72.9,0,0,79.5,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.5,9.004113,1.098612,3.644226,1 +10,4,50,0,4,428026,0,8135.484,29.03422,1,14,1,63.41079,11.38243,0,0,0,74.79323,0,0,0,8,0,3,72.9,0,0,79.5,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.5,9.004113,1.098612,4.314727,1 +10,4,50,0,5,428026,0,8135.484,30.03422,1,14,1,79.24866,16.0644,13.95349,35.77818,0,109.2665,0,0,3,6,0,3,72.9,0,0,79.5,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,79.5,9.004113,1.098612,4.69379,1 +10,4,50,0,1,428027,0,8135.484,26.2423,0,15,1,0,0,0,0,0,0,0,0,0,0,0,3,70.7,3.4,0,96.6,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,96.6,9.004113,1.098612,,0 +10,4,50,0,2,428027,0,8135.484,27.2423,0,15,1,0,0,0,0,0,0,0,0,0,0,0,3,70.7,3.4,0,96.6,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,96.6,9.004113,1.098612,,0 +10,4,50,0,3,428027,0,8135.484,28.2423,0,15,1,0,0,0,0,0,0,0,0,0,0,0,3,70.7,3.4,0,96.6,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,96.6,9.004113,1.098612,,0 +10,4,50,0,4,428027,0,8135.484,29.2423,0,15,1,14.57267,0,0,0,0,14.57267,0,0,0,1,0,3,70.7,3.4,0,96.6,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,96.6,9.004113,1.098612,2.679147,1 +10,4,50,0,5,428027,0,8135.484,30.2423,0,15,1,0,0,0,0,0,0,0,0,0,0,0,3,70.7,3.4,0,96.6,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,96.6,9.004113,1.098612,,0 +10,4,50,0,1,428028,0,8135.484,2.822724,0,14,1,23.18393,0,0,0,0,23.18393,0,0,0,2,0,3,83.39137,9.967326,0,92.6,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.004113,1.098612,3.143459,1 +10,4,50,0,2,428028,0,8135.484,3.822724,0,14,1,10.41667,2.130682,0,0,0,12.54735,0,0,0,2,0,3,83.39137,9.967326,0,92.6,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.004113,1.098612,2.529509,1 +10,4,50,0,3,428028,0,8135.484,4.822724,0,14,1,6.501951,4.031209,0,0,0,10.53316,0,0,0,1,0,3,83.39137,9.967326,0,92.6,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.004113,1.098612,2.354528,1 +10,4,50,0,4,428028,0,8135.484,5.822724,0,14,1,16.54195,14.86806,0,0,0,31.41,0,0,0,3,0,3,83.39137,9.967326,0,92.6,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.004113,1.098612,3.447126,1 +10,4,50,0,5,428028,0,8135.484,6.822724,0,14,1,6.08229,11.21646,0,0,0,17.29875,0,0,0,1,0,3,83.39137,9.967326,0,92.6,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.004113,1.098612,2.850634,1 +13,4,0,1,1,428033,0,3439.296,25.10883,1,12,1,15.32176,0,2.553626,0,0,17.87538,0,0,0,1,0,2,70.7,17.2,0,69.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,69.3,8.143312,.6931472,2.883425,1 +13,4,0,1,2,428033,0,3439.296,26.10883,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,70.7,17.2,0,69.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,69.3,8.143312,.6931472,,0 +13,4,0,1,3,428033,0,3439.296,27.10883,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,70.7,17.2,0,69.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,69.3,8.143312,.6931472,,0 +13,4,0,1,1,428034,0,3439.296,5.253936,1,12,1,228.5495,0,0,0,0,228.5495,0,0,0,7,0,2,96.7,9.967326,0,92.6,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,92.6,8.143312,.6931472,5.431753,1 +13,4,0,1,2,428034,0,3439.296,6.253936,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,96.7,9.967326,0,92.6,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,92.6,8.143312,.6931472,,0 +13,4,0,1,3,428034,0,3439.296,7.253936,1,12,1,33.10404,1.289768,0,0,0,34.39381,0,0,0,3,0,2,96.7,9.967326,0,92.6,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,92.6,8.143312,.6931472,3.537877,1 +13,4,0,1,1,428063,0,3515.542,35.39767,0,12,1,43.92237,0,0,0,0,43.92237,0,0,0,5,0,1,66.5,27.6,0,51.1,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,51.1,8.165234,0,3.782424,1 +13,4,0,1,2,428063,0,3515.542,36.39767,0,12,1,11.72058,0,30.00469,0,0,41.72527,0,0,0,0,1,1,66.5,27.6,0,51.1,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,51.1,8.165234,0,3.731107,1 +13,4,0,1,3,428063,0,3515.542,37.39767,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,66.5,27.6,0,51.1,150,150,0,0,.6931472,5.010635,1,4.564348,5.061929,1,0,0,51.1,8.165234,.6931472,,0 +13,4,0,1,4,428063,0,3515.542,38.39767,0,12,1,13.9589,0,0,0,0,13.9589,0,0,0,1,0,2,66.5,27.6,0,51.1,150,150,0,0,.6931472,5.010635,1,4.564348,5.061929,1,0,0,51.1,8.165234,.6931472,2.636117,1 +13,4,0,1,5,428063,0,3515.542,39.39767,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,66.5,27.6,0,51.1,150,150,0,0,.6931472,5.010635,1,4.564348,5.061929,1,0,0,51.1,8.165234,.6931472,,0 +11,4,0,1,1,428075,0,6167.155,54.22861,1,14,1,291.5404,0,0,0,1091.35,1382.89,1,0,0,7,0,1,79.3,6.9,1,77.3,0,0,0,0,0,0,0,0,0,1,0,0,77.3,8.727155,0,7.231931,1 +11,4,0,1,2,428075,0,6167.155,55.22861,1,14,1,37.64204,0,0,0,0,37.64204,0,0,0,1,0,1,79.3,6.9,1,77.3,0,0,0,0,0,0,0,0,0,1,0,0,77.3,8.727155,0,3.628122,1 +11,4,0,1,3,428075,0,6167.155,56.22861,1,14,1,40.31209,11.61682,0,0,1292.046,1343.975,1,0,0,4,0,1,79.3,6.9,1,77.3,0,0,0,0,0,0,0,0,0,1,0,0,77.3,8.727155,0,7.203387,1 +15,4,95,1,1,428080,0,9492.082,55.2909,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,71.3,13.8,0,85.2,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.158319,.6931472,,0 +15,4,95,1,2,428080,0,9492.082,56.2909,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,71.3,13.8,0,85.2,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.158319,.6931472,,0 +15,4,95,1,3,428080,0,9492.082,57.2909,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,71.3,13.8,0,85.2,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.158319,.6931472,,0 +15,4,95,1,1,428081,0,9492.082,53.58522,1,12,1,6.18238,0,0,0,0,6.18238,0,0,0,1,0,2,65.4,10.3,0,78.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,78.4,9.158319,.6931472,1.821703,1 +15,4,95,1,2,428081,0,9492.082,54.58522,1,12,1,56.22633,0,23.67424,0,0,79.90057,0,0,0,5,1,2,65.4,10.3,0,78.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,78.4,9.158319,.6931472,4.380783,1 +15,4,95,1,3,428081,0,9492.082,55.58522,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,65.4,10.3,0,78.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,78.4,9.158319,.6931472,,0 +13,4,0,1,1,428088,0,7954.839,2.926763,0,12,1,23.27935,0,0,0,0,23.27935,0,0,0,3,0,4,83.39137,9.967326,0,81.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,8.981662,1.386294,3.147567,1 +13,4,0,1,2,428088,0,7954.839,3.926763,0,12,1,17.24942,0,0,0,0,17.24942,0,0,0,2,0,4,83.39137,9.967326,0,81.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,8.981662,1.386294,2.847778,1 +13,4,0,1,3,428088,0,7954.839,4.926763,0,12,1,12.39846,0,0,0,0,12.39846,0,0,0,1,0,5,83.39137,9.967326,0,81.5,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.5,8.981662,1.609438,2.517572,1 +13,4,0,1,1,428089,0,7954.839,25.93019,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,61.2,10.3,0,61.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,61.4,8.981662,1.386294,,0 +13,4,0,1,2,428089,0,7954.839,26.93019,0,16,1,163.1702,0,23.31002,0,0,186.4802,0,0,0,4,1,4,61.2,10.3,0,61.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,61.4,8.981662,1.386294,5.228325,1 +13,4,0,1,3,428089,0,7954.839,27.93019,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,61.2,10.3,0,61.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,61.4,8.981662,1.609438,,0 +13,4,0,1,1,428090,0,7954.839,.7802874,0,12,1,22.26721,0,0,0,0,22.26721,0,0,0,2,0,4,83.39137,9.967326,0,70.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.981662,1.386294,3.103115,1 +13,4,0,1,2,428090,0,7954.839,1.780288,0,12,1,13.51981,2.307692,0,0,0,15.82751,0,0,0,1,0,4,83.39137,9.967326,0,70.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.981662,1.386294,2.761749,1 +13,4,0,1,3,428090,0,7954.839,2.780288,0,12,1,7.695596,0,0,0,0,7.695596,0,0,0,1,0,5,83.39137,9.967326,0,70.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.981662,1.609438,2.040648,1 +13,4,0,1,1,428091,0,7954.839,23.6167,1,12,1,44.75708,0,0,0,0,44.75708,0,0,0,1,0,4,77.7,3.4,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,69.3,8.981662,1.386294,3.80125,1 +13,4,0,1,2,428091,0,7954.839,24.6167,1,12,1,77.80886,17.59907,28.33566,0,676.5455,800.2891,1,0,0,5,1,4,77.7,3.4,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,69.3,8.981662,1.386294,6.684973,1 +13,4,0,1,3,428091,0,7954.839,25.6167,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.7,3.4,0,69.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,69.3,8.981662,1.609438,,0 +11,4,0,1,1,428095,0,879.7654,22.88296,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,79.3,6.9,0,76.1,0,0,0,0,0,0,0,0,0,1,0,0,76.1,6.780791,0,,0 +11,4,0,1,2,428095,0,879.7654,23.88296,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,79.3,6.9,0,76.1,0,0,0,0,0,0,0,0,0,1,0,0,76.1,6.780791,0,,0 +11,4,0,1,3,428095,0,879.7654,24.88296,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,79.3,6.9,0,76.1,0,0,0,0,0,0,0,0,0,1,0,0,76.1,6.780791,0,,0 +11,4,0,0,1,428096,0,3841.056,30.42026,1,15,1,6.128703,20.68437,0,0,0,26.81307,0,0,0,1,0,1,67.6,10.3,0,71.6,0,126,0,0,0,4.836282,0,0,0,1,0,0,71.6,8.253763,0,3.28889,1 +11,4,0,0,2,428096,0,3841.056,31.42026,1,15,1,9.376465,22.03469,0,84.38818,0,31.41116,0,0,6,1,0,1,67.6,10.3,0,71.6,0,126,0,0,0,4.836282,0,0,0,1,0,0,71.6,8.253763,0,3.447163,1 +11,4,0,0,3,428096,0,3841.056,32.42026,1,15,1,22.35598,25.77386,30.95443,0,0,79.08427,0,0,0,2,1,1,67.6,10.3,0,71.6,0,126,0,0,0,4.836282,0,0,0,1,0,0,71.6,8.253763,0,4.370514,1 +15,4,95,1,1,428113,0,9858.064,33.46749,1,12,1,6.18238,4.528594,0,0,0,10.71097,0,0,0,1,0,4,66.5,6.9,0,80.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,80.7,9.196147,1.386294,2.371269,1 +15,4,95,1,2,428113,0,9858.064,34.46749,1,12,1,9.469697,0,0,0,0,9.469697,0,0,0,1,0,4,66.5,6.9,0,80.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,80.7,9.196147,1.386294,2.248097,1 +15,4,95,1,3,428113,0,9858.064,35.46749,1,12,1,63.52406,1.517122,0,0,0,65.04118,0,0,0,3,0,4,66.5,6.9,0,80.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,80.7,9.196147,1.386294,4.175021,1 +15,4,95,1,1,428114,0,9858.064,31.81383,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80.9,17.2,0,65.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,65.9,9.196147,1.386294,,0 +15,4,95,1,2,428114,0,9858.064,32.81383,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80.9,17.2,0,65.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,65.9,9.196147,1.386294,,0 +15,4,95,1,3,428114,0,9858.064,33.81383,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80.9,17.2,0,65.9,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,65.9,9.196147,1.386294,,0 +15,4,95,1,1,428115,0,9858.064,7.195072,1,12,1,5.151984,0,0,0,0,5.151984,0,0,0,1,0,4,86.7,9.967326,0,85.2,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.196147,1.386294,1.639382,1 +15,4,95,1,2,428115,0,9858.064,8.195072,1,12,1,5.681818,0,0,0,0,5.681818,0,0,0,1,0,4,86.7,9.967326,0,85.2,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.196147,1.386294,1.737271,1 +15,4,95,1,3,428115,0,9858.064,9.195072,1,12,1,5.20156,0,0,0,0,5.20156,0,0,0,1,0,4,86.7,9.967326,0,85.2,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.196147,1.386294,1.648959,1 +15,4,95,1,1,428116,0,9858.064,11.2909,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,75,9.967326,0,88.9,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.196147,1.386294,,0 +15,4,95,1,2,428116,0,9858.064,12.2909,1,12,1,119.6733,0,22.72727,0,0,142.4006,0,0,0,24,1,4,75,9.967326,0,88.9,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.196147,1.386294,4.958644,1 +15,4,95,1,3,428116,0,9858.064,13.2909,1,12,1,94.71175,0,24.70741,0,0,119.4192,0,0,0,33,1,4,75,9.967326,0,88.9,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.196147,1.386294,4.78264,1 +11,4,0,1,1,428117,0,8719.648,10.92129,1,11,1,0,6.661515,0,0,0,6.661515,0,0,0,0,0,6,96.7,9.967326,0,92.6,0,0,1,1,1.791759,0,0,0,0,0,0,0,92.6,9.073449,1.791759,1.896347,1 +11,4,0,1,2,428117,0,8719.648,11.92129,1,11,1,7.102273,2.930871,24.62121,0,0,34.65436,0,0,0,0,1,6,96.7,9.967326,0,92.6,0,0,1,1,1.791759,0,0,0,0,0,0,0,92.6,9.073449,1.791759,3.545424,1 +11,4,0,1,3,428117,0,8719.648,12.92129,1,11,1,12.57044,5.674036,10.40312,0,0,28.64759,0,0,0,1,1,6,96.7,9.967326,0,92.6,0,0,1,1,1.791759,0,0,0,0,0,0,0,92.6,9.073449,1.791759,3.355069,1 +11,4,0,1,4,428117,0,8719.648,13.92129,1,11,1,7.877117,2.304057,21.26822,0,0,31.44939,0,0,0,1,1,6,96.7,9.967326,0,92.6,0,0,1,1,1.791759,0,0,0,0,0,0,0,92.6,9.073449,1.791759,3.44838,1 +11,4,0,1,5,428117,0,8719.648,14.92129,1,11,1,14.31127,0,10.73345,0,0,25.04472,0,0,0,1,1,7,96.7,9.967326,0,92.6,0,0,1,1,1.94591,0,0,0,0,0,0,0,92.6,9.073449,1.94591,3.220663,1 +11,4,0,1,1,428118,0,8719.648,6.105407,1,11,1,189.9021,7.588871,6.18238,0,0,203.6734,0,0,0,9,0,6,98.3,9.967326,0,85.2,0,0,1,1,1.791759,0,0,0,0,0,0,0,85.2,9.073449,1.791759,5.316517,1 +11,4,0,1,2,428118,0,8719.648,7.105407,1,11,1,11.36364,8.016098,0,0,0,19.37973,0,0,0,1,0,6,98.3,9.967326,0,85.2,0,0,1,1,1.791759,0,0,0,0,0,0,0,85.2,9.073449,1.791759,2.964228,1 +11,4,0,1,3,428118,0,8719.648,8.105408,1,11,1,0,1.083658,0,0,0,1.083658,0,0,0,0,0,6,98.3,9.967326,0,85.2,0,0,1,1,1.791759,0,0,0,0,0,0,0,85.2,9.073449,1.791759,.0803428,1 +11,4,0,1,4,428118,0,8719.648,9.105408,1,11,1,5.513982,0,0,0,0,5.513982,0,0,0,1,0,6,98.3,9.967326,0,85.2,0,0,1,1,1.791759,0,0,0,0,0,0,0,85.2,9.073449,1.791759,1.707287,1 +11,4,0,1,5,428118,0,8719.648,10.10541,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,98.3,9.967326,0,85.2,0,0,1,1,1.94591,0,0,0,0,0,0,0,85.2,9.073449,1.94591,,0 +11,4,0,1,1,428119,0,8719.648,9.637235,1,11,1,11.33436,6.816074,0,0,0,18.15044,0,0,0,2,0,6,91.7,9.967326,0,88.9,0,0,1,1,1.791759,0,0,0,0,0,0,0,88.9,9.073449,1.791759,2.898695,1 +11,4,0,1,2,428119,0,8719.648,10.63723,1,11,1,0,3.285985,0,0,0,3.285985,0,0,0,0,0,6,91.7,9.967326,0,88.9,0,0,1,1,1.791759,0,0,0,0,0,0,0,88.9,9.073449,1.791759,1.189666,1 +11,4,0,1,3,428119,0,8719.648,11.63723,1,11,1,0,3.571738,0,0,0,3.571738,0,0,0,0,0,6,91.7,9.967326,0,88.9,0,0,1,1,1.791759,0,0,0,0,0,0,0,88.9,9.073449,1.791759,1.273052,1 +11,4,0,1,4,428119,0,8719.648,12.63723,1,11,1,5.907838,4.686884,0,0,0,10.59472,0,0,0,1,0,6,91.7,9.967326,0,88.9,0,0,1,1,1.791759,0,0,0,0,0,0,0,88.9,9.073449,1.791759,2.360356,1 +11,4,0,1,5,428119,0,8719.648,13.63723,1,11,1,110.5367,3.001789,0,0,0,113.5385,0,0,0,5,1,7,91.7,9.967326,0,88.9,0,0,1,1,1.94591,0,0,0,0,0,0,0,88.9,9.073449,1.94591,4.732141,1 +11,4,0,1,1,428120,0,8719.648,34.17933,0,13,1,168.2638,51.61772,0,0,0,219.8815,0,0,0,12,0,6,94,3.4,0,97.7,0,0,0,0,1.791759,0,0,0,0,0,0,0,97.7,9.073449,1.791759,5.393089,1 +11,4,0,1,2,428120,0,8719.648,35.17933,0,13,1,26.98864,2.651515,0,0,0,29.64015,0,0,0,3,0,6,94,3.4,0,97.7,0,0,0,0,1.791759,0,0,0,0,0,0,0,97.7,9.073449,1.791759,3.38913,1 +11,4,0,1,3,428120,0,8719.648,36.17933,0,13,1,255.2449,45.81274,0,0,2346.584,2647.642,3,0,0,13,0,6,94,3.4,0,97.7,0,0,0,0,1.791759,0,0,0,0,0,0,0,97.7,9.073449,1.791759,7.881424,1 +11,4,0,1,4,428120,0,8719.648,37.17933,0,13,1,40.56715,29.78338,0,0,0,70.35053,0,0,0,5,0,6,94,3.4,0,97.7,0,0,0,0,1.791759,0,0,0,0,0,0,0,97.7,9.073449,1.791759,4.25349,1 +11,4,0,1,5,428120,0,8719.648,38.17933,0,13,1,43.47048,38.0322,0,0,0,81.50269,0,0,0,5,0,7,94,3.4,0,97.7,0,0,0,0,1.94591,0,0,0,0,0,0,0,97.7,9.073449,1.94591,4.400636,1 +11,4,0,1,1,428121,0,8719.648,31.76728,1,11,1,12.87996,0,0,0,0,12.87996,0,0,0,1,0,6,86.2,13.8,0,76.1,0,0,0,0,1.791759,0,0,0,0,0,0,0,76.1,9.073449,1.791759,2.555673,1 +11,4,0,1,2,428121,0,8719.648,32.76728,1,11,1,22.25379,4.829545,0,0,0,27.08333,0,0,0,2,0,6,86.2,13.8,0,76.1,0,0,0,0,1.791759,0,0,0,0,0,0,0,76.1,9.073449,1.791759,3.298918,1 +11,4,0,1,3,428121,0,8719.648,33.76728,1,11,1,100.2818,15.7694,23.40702,0,233.3983,372.8565,1,0,0,11,1,6,86.2,13.8,0,76.1,0,0,0,0,1.791759,0,0,0,0,0,0,0,76.1,9.073449,1.791759,5.921194,1 +11,4,0,1,4,428121,0,8719.648,34.76728,1,11,1,70.16542,6.498621,23.43442,0,664.2654,764.364,1,0,0,5,0,6,86.2,13.8,0,76.1,0,0,0,0,1.791759,0,0,0,0,0,0,0,76.1,9.073449,1.791759,6.639044,1 +11,4,0,1,5,428121,0,8719.648,35.76728,1,11,1,38.28265,1.860465,0,0,348.8193,388.9624,1,0,0,3,1,7,86.2,13.8,0,76.1,0,0,0,0,1.94591,0,0,0,0,0,0,0,76.1,9.073449,1.94591,5.963483,1 +11,4,0,1,1,428122,0,8719.648,7.438741,1,11,1,0,4.111283,0,0,0,4.111283,0,0,0,0,0,6,85,9.967326,0,59.3,0,0,1,1,1.791759,0,0,0,0,0,0,0,59.3,9.073449,1.791759,1.413735,1 +11,4,0,1,2,428122,0,8719.648,8.438741,1,11,1,0,3.285985,0,0,0,3.285985,0,0,0,0,0,6,85,9.967326,0,59.3,0,0,1,1,1.791759,0,0,0,0,0,0,0,59.3,9.073449,1.791759,1.189666,1 +11,4,0,1,3,428122,0,8719.648,9.438741,1,11,1,5.20156,1.083658,0,0,0,6.285219,0,0,0,1,0,6,85,9.967326,0,59.3,0,0,1,1,1.791759,0,0,0,0,0,0,0,59.3,9.073449,1.791759,1.838201,1 +11,4,0,1,4,428122,0,8719.648,10.43874,1,11,1,3.938559,5.884206,0,0,0,9.822764,0,0,0,1,0,6,85,9.967326,0,59.3,0,0,1,1,1.791759,0,0,0,0,0,0,0,59.3,9.073449,1.791759,2.284703,1 +11,4,0,1,5,428122,0,8719.648,11.43874,1,11,1,0,2.325581,0,0,0,2.325581,0,0,0,0,0,7,85,9.967326,0,59.3,0,0,1,1,1.94591,0,0,0,0,0,0,0,59.3,9.073449,1.94591,.8439701,1 +11,4,0,1,1,428127,0,8849.267,25.1718,0,13,1,24.61696,0,0,0,0,24.61696,0,0,0,2,0,2,47.9,17.2,0,39.8,0,0,0,0,.6931472,0,0,0,0,1,0,0,39.8,9.088202,.6931472,3.203435,1 +11,4,0,1,2,428127,0,8849.267,26.1718,0,13,1,34.13033,0,43.63807,0,0,77.7684,0,0,0,2,0,2,47.9,17.2,0,39.8,0,0,0,0,.6931472,0,0,0,0,1,0,0,39.8,9.088202,.6931472,4.353735,1 +11,4,0,1,3,428127,0,8849.267,27.1718,0,13,1,81.36285,7.7816,0,0,0,89.14445,0,0,0,6,1,2,47.9,17.2,0,39.8,0,0,0,0,.6931472,0,0,0,0,1,0,0,39.8,9.088202,.6931472,4.490258,1 +11,4,0,1,1,428128,0,8849.267,22.93498,1,13,1,18.1716,2.349336,0,0,0,20.52094,0,0,0,1,0,2,40.4,10.3,0,76.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.1,9.088202,.6931472,3.021446,1 +11,4,0,1,2,428128,0,8849.267,23.93498,1,13,1,9.376465,0,0,0,0,9.376465,0,0,0,1,0,2,40.4,10.3,0,76.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.1,9.088202,.6931472,2.238203,1 +11,4,0,1,3,428128,0,8849.267,24.93498,1,13,1,0,0,0,0,0,0,0,0,0,0,0,2,40.4,10.3,0,76.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.1,9.088202,.6931472,,0 +15,4,95,0,1,428144,0,1867.449,22.81725,1,14,1,49.97424,5.074704,0,0,0,55.04894,0,0,0,6,0,1,84.6,0,0,84.1,92,0,0,0,0,0,0,4.564348,4.573082,0,0,0,84.1,7.532864,0,4.008223,1 +15,4,95,0,2,428144,0,1867.449,23.81725,1,14,1,62.5,8.89678,23.20076,0,0,94.59753,0,0,0,3,1,1,84.6,0,0,84.1,92,0,0,0,0,0,0,4.564348,4.573082,0,0,0,84.1,7.532864,0,4.549632,1 +15,4,95,0,3,428144,0,1867.449,24.81725,1,14,1,0,0,0,0,0,0,0,0,0,0,0,1,84.6,0,0,84.1,92,0,0,0,0,0,0,4.564348,4.573082,0,0,0,84.1,7.532864,0,,0 +15,4,95,0,1,428145,0,2485.161,20.83778,1,13,1,26.04699,0,0,0,0,26.04699,0,0,0,1,0,1,51.6,10.3,0,53.4,202.5,0,0,0,0,0,0,4.564348,5.362033,1,0,0,53.4,7.818495,0,3.259902,1 +15,4,95,0,2,428145,0,2485.161,21.83778,1,13,1,45.24144,9.282701,0,0,0,54.52414,0,0,0,1,0,1,51.6,10.3,0,53.4,202.5,0,0,0,0,0,0,4.564348,5.362033,1,0,0,53.4,7.818495,0,3.998644,1 +15,4,95,0,3,428145,0,2485.161,22.83778,1,13,1,15.04729,5.33104,0,0,1140.026,1160.404,1,0,0,2,0,1,51.6,10.3,0,53.4,202.5,0,0,0,0,0,0,4.564348,5.362033,1,0,0,53.4,7.818495,0,7.056524,1 +11,4,0,1,1,428191,0,14173.61,41.03765,0,16,1,15.32176,0,7.660879,84.26966,0,22.98264,0,0,5,1,0,5,78.2,3.4,0,54.5,0,215.4,0,0,1.609438,5.372497,0,0,0,0,0,0,54.5,9.559207,1.609438,3.134739,1 +11,4,0,1,2,428191,0,14173.61,42.03765,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,78.2,3.4,0,54.5,0,215.4,0,0,1.609438,5.372497,0,0,0,0,0,0,54.5,9.559207,1.609438,,0 +11,4,0,1,3,428191,0,14173.61,43.03765,0,16,1,159.8237,0,0,0,0,159.8237,0,0,0,5,0,5,78.2,3.4,0,54.5,0,215.4,0,0,1.609438,5.372497,0,0,0,0,0,0,54.5,9.559207,1.609438,5.074071,1 +11,4,0,1,1,428192,0,14173.61,9.393566,1,16,1,24.51481,0,0,342.1859,3014.229,3038.744,1,0,14,9,0,5,88.3,9.967326,0,92.6,0,215.4,1,1,1.609438,5.372497,0,0,0,0,0,0,92.6,9.559207,1.609438,8.019199,1 +11,4,0,1,2,428192,0,14173.61,10.39357,1,16,1,11.72058,1.781528,0,23.44116,0,13.50211,0,0,1,1,0,5,88.3,9.967326,0,92.6,0,215.4,1,1,1.609438,5.372497,0,0,0,0,0,0,92.6,9.559207,1.609438,2.602846,1 +11,4,0,1,3,428192,0,14173.61,11.39357,1,16,1,9.458298,0,0,0,0,9.458298,0,0,0,2,0,5,88.3,9.967326,0,92.6,0,215.4,1,1,1.609438,5.372497,0,0,0,0,0,0,92.6,9.559207,1.609438,2.246892,1 +11,4,0,1,1,428193,0,14173.61,11.33744,0,16,1,20.42901,18.03371,18.89683,0,0,57.35955,0,0,0,2,0,5,85,9.967326,1,88.9,0,215.4,1,0,1.609438,5.372497,0,0,0,0,0,0,88.9,9.559207,1.609438,4.049339,1 +11,4,0,1,2,428193,0,14173.61,12.33744,0,16,1,0,14.90858,0,0,0,14.90858,0,0,0,0,0,5,85,9.967326,1,88.9,0,215.4,1,0,1.609438,5.372497,0,0,0,0,0,0,88.9,9.559207,1.609438,2.701937,1 +11,4,0,1,3,428193,0,14173.61,13.33744,0,16,1,26.6552,17.36457,42.99226,0,0,87.01204,0,0,0,3,0,5,85,9.967326,1,88.9,0,215.4,1,0,1.609438,5.372497,0,0,0,0,0,0,88.9,9.559207,1.609438,4.466046,1 +11,4,0,1,1,428194,0,14173.61,38.0178,1,16,1,35.47498,0,0,263.0235,0,35.47498,0,0,12,1,0,5,79.8,13.8,0,67,0,215.4,0,0,1.609438,5.372497,0,0,0,0,0,0,67,9.559207,1.609438,3.568828,1 +11,4,0,1,2,428194,0,14173.61,39.0178,1,16,1,11.72058,0,0,23.44116,0,11.72058,0,0,1,1,0,5,79.8,13.8,0,67,0,215.4,0,0,1.609438,5.372497,0,0,0,0,0,0,67,9.559207,1.609438,2.461346,1 +11,4,0,1,3,428194,0,14173.61,40.0178,1,16,1,31.16939,3.198624,0,0,0,34.36802,0,0,0,2,0,5,79.8,13.8,0,67,0,215.4,0,0,1.609438,5.372497,0,0,0,0,0,0,67,9.559207,1.609438,3.537126,1 +11,4,0,1,1,428195,0,14173.61,3.742642,1,16,1,13.524,4.417773,0,0,0,17.94178,0,0,0,1,0,5,83.39137,9.967326,0,85.2,0,215.4,1,1,1.609438,5.372497,0,0,0,0,0,0,85.2,9.559207,1.609438,2.887132,1 +11,4,0,1,2,428195,0,14173.61,4.742642,1,16,1,7.735584,13.6662,0,0,0,21.40178,0,0,0,0,0,5,83.39137,9.967326,0,85.2,0,215.4,1,1,1.609438,5.372497,0,0,0,0,0,0,85.2,9.559207,1.609438,3.063474,1 +11,4,0,1,3,428195,0,14173.61,5.742642,1,16,1,37.40327,4.230439,0,0,0,41.63371,0,0,0,3,0,5,83.39137,9.967326,0,85.2,0,215.4,1,1,1.609438,5.372497,0,0,0,0,0,0,85.2,9.559207,1.609438,3.72891,1 +13,4,0,0,1,428204,0,7910.823,7.939767,0,12,1,37.28805,2.221655,0,0,0,39.5097,0,0,0,2,0,4,90,9.967326,0,85.2,450,492.84,1,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,85.2,8.976113,1.386294,3.676546,1 +13,4,0,0,2,428204,0,7910.823,8.939767,0,12,1,9.376465,0,0,0,0,9.376465,0,0,0,1,0,4,90,9.967326,0,85.2,450,492.84,1,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,85.2,8.976113,1.386294,2.238203,1 +13,4,0,0,3,428204,0,7910.823,9.939767,0,12,1,191.724,0,.9028375,0,0,192.6268,0,0,0,6,0,4,90,9.967326,0,85.2,450,492.84,1,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,85.2,8.976113,1.386294,5.260755,1 +13,4,0,0,1,428205,0,7910.823,30.41752,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,3.4,0,84.1,450,492.84,0,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,84.1,8.976113,1.386294,,0 +13,4,0,0,2,428205,0,7910.823,31.41752,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,3.4,0,84.1,450,492.84,0,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,84.1,8.976113,1.386294,,0 +13,4,0,0,3,428205,0,7910.823,32.41752,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,3.4,0,84.1,450,492.84,0,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,84.1,8.976113,1.386294,,0 +13,4,0,0,1,428206,0,7910.823,30.9514,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.1,0,0,85.2,450,492.84,0,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,85.2,8.976113,1.386294,,0 +13,4,0,0,2,428206,0,7910.823,31.9514,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.1,0,0,85.2,450,492.84,0,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,85.2,8.976113,1.386294,,0 +13,4,0,0,3,428206,0,7910.823,32.9514,0,12,1,59.11436,0,0,0,0,59.11436,0,0,0,2,0,4,76.1,0,0,85.2,450,492.84,0,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,85.2,8.976113,1.386294,4.079474,1 +13,4,0,0,1,428207,0,7910.823,6.518823,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,90,9.967326,0,85.2,450,492.84,1,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,85.2,8.976113,1.386294,,0 +13,4,0,0,2,428207,0,7910.823,7.518823,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,90,9.967326,0,85.2,450,492.84,1,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,85.2,8.976113,1.386294,,0 +13,4,0,0,3,428207,0,7910.823,8.518823,0,12,1,80.07309,0,.9028375,0,0,80.97592,0,0,0,1,0,4,90,9.967326,0,85.2,450,492.84,1,0,1.386294,6.200184,1,4.564348,6.160541,0,0,0,85.2,8.976113,1.386294,4.394152,1 +11,4,0,1,1,428222,0,10872.73,14.19028,1,11,1,40.48583,18.57287,0,0,490.0101,549.0688,1,0,0,5,0,3,64.4,6.9,1,83,0,0,1,1,1.098612,0,0,0,0,0,0,0,83,9.294105,1.098612,6.308224,1 +11,4,0,1,2,428222,0,10872.73,15.19028,1,11,1,71.93007,5.757576,0,0,0,77.68764,0,0,0,4,0,3,64.4,6.9,1,83,0,0,1,1,1.098612,0,0,0,0,0,0,0,83,9.294105,1.098612,4.352696,1 +11,4,0,1,3,428222,0,10872.73,16.19028,1,11,1,66.26764,27.04147,0,0,0,93.3091,0,0,0,7,0,3,64.4,6.9,1,83,0,0,1,1,1.098612,0,0,0,0,0,0,0,83,9.294105,1.098612,4.535918,1 +11,4,0,1,1,428223,0,10872.73,37.7577,1,11,1,125.3694,0,37.95547,0,0,163.3249,0,0,0,3,0,3,72.3,17.2,0,56.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,56.8,9.294105,1.098612,5.095741,1 +11,4,0,1,2,428223,0,10872.73,38.7577,1,11,1,28.82517,5.664336,0,0,0,34.48951,0,0,0,3,0,3,72.3,17.2,0,56.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,56.8,9.294105,1.098612,3.540655,1 +11,4,0,1,3,428223,0,10872.73,39.7577,1,11,1,14.96366,3.035485,0,0,0,17.99915,0,0,0,1,0,3,72.3,17.2,0,56.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,56.8,9.294105,1.098612,2.890324,1 +19,4,25,1,1,428233,0,6419.941,17.91102,1,14,1,30.36437,1.907895,33.19332,0,0,65.46558,0,0,0,3,0,5,38.3,3.4,0,77.3,120,120,1,1,1.609438,4.787492,0,3.258096,6.173786,1,0,0,77.3,8.76732,1.609438,4.181525,1 +19,4,25,1,2,428233,0,6419.941,18.91102,1,14,1,275.2681,4.223776,20.8718,0,0,300.3636,0,0,0,7,0,5,38.3,3.4,0,77.3,120,120,0,0,1.609438,4.787492,0,3.258096,6.173786,1,0,0,77.3,8.76732,1.609438,5.704994,1 +19,4,25,1,3,428233,0,6419.941,19.91102,1,14,1,64.34373,30.04275,0,0,0,94.38649,0,0,0,10,0,5,38.3,3.4,0,77.3,120,120,0,0,1.609438,4.787492,0,3.258096,6.173786,1,0,0,77.3,8.76732,1.609438,4.547398,1 +19,4,25,1,1,428234,0,6419.941,39.38124,1,14,1,598.1124,138.7146,0,0,1251.994,1988.821,1,0,0,23,0,5,44.1,31,1,69.3,120,120,0,0,1.609438,4.787492,0,3.258096,6.173786,0,1,0,69.3,8.76732,1.609438,7.595297,1 +19,4,25,1,2,428234,0,6419.941,40.38124,1,14,1,156.6434,161.9301,0,0,0,318.5734,0,0,0,18,0,5,44.1,31,1,69.3,120,120,0,0,1.609438,4.787492,0,3.258096,6.173786,0,1,0,69.3,8.76732,1.609438,5.763853,1 +19,4,25,1,3,428234,0,6419.941,41.38124,1,14,1,99.29457,13.03549,27.00299,0,0,139.3331,0,0,0,4,4,5,44.1,31,1,69.3,120,120,0,0,1.609438,4.787492,0,3.258096,6.173786,0,1,0,69.3,8.76732,1.609438,4.936867,1 +19,4,25,1,1,428235,0,6419.941,16.06571,1,14,1,264.418,5.086032,0,0,0,269.5041,0,0,0,7,0,5,59.6,3.4,0,65.9,120,120,1,1,1.609438,4.787492,0,3.258096,6.173786,0,0,0,65.9,8.76732,1.609438,5.596583,1 +19,4,25,1,2,428235,0,6419.941,17.06571,1,14,1,78.90443,3.300699,37.41725,0,0,119.6224,0,0,0,5,2,5,59.6,3.4,0,65.9,120,120,1,1,1.609438,4.787492,0,3.258096,6.173786,0,0,0,65.9,8.76732,1.609438,4.78434,1 +19,4,25,1,3,428235,0,6419.941,18.06571,1,14,1,8.550663,0,0,0,0,8.550663,0,0,0,1,0,5,59.6,3.4,0,65.9,120,120,0,0,1.609438,4.787492,0,3.258096,6.173786,0,0,0,65.9,8.76732,1.609438,2.146009,1 +19,4,25,1,1,428237,0,6419.941,12,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,78.3,9.967326,0,92.6,120,120,1,0,1.609438,4.787492,0,3.258096,6.173786,0,0,0,92.6,8.76732,1.609438,,0 +19,4,25,1,2,428237,0,6419.941,13,0,14,1,199.1841,14.55478,7.459208,0,0,221.1981,0,0,0,12,0,5,78.3,9.967326,0,92.6,120,120,1,0,1.609438,4.787492,0,3.258096,6.173786,0,0,0,92.6,8.76732,1.609438,5.399059,1 +19,4,25,1,3,428237,0,6419.941,14,0,14,1,39.6537,0,0,0,0,39.6537,0,0,0,3,0,5,78.3,9.967326,0,92.6,120,120,1,0,1.609438,4.787492,0,3.258096,6.173786,0,0,0,92.6,8.76732,1.609438,3.680184,1 +19,4,25,1,1,428238,0,6419.941,19.45243,0,12,1,10.12146,0,38.2085,0,0,48.32996,0,0,0,1,0,5,85.8,13.8,0,95.5,120,120,0,0,1.609438,4.787492,0,3.258096,6.173786,0,0,0,95.5,8.76732,1.609438,3.878052,1 +19,4,25,1,2,428238,0,6419.941,20.45243,0,12,1,27.97203,0,34.73193,0,0,62.70396,0,0,0,2,0,5,85.8,13.8,0,95.5,120,120,0,0,1.609438,4.787492,0,3.258096,6.173786,0,0,0,95.5,8.76732,1.609438,4.138425,1 +19,4,25,1,3,428238,0,6419.941,21.45243,0,12,1,190.2522,.6412997,0,0,0,190.8935,0,0,0,5,11,5,85.8,13.8,0,95.5,120,120,0,0,1.609438,4.787492,0,3.258096,6.173786,0,0,0,95.5,8.76732,1.609438,5.251716,1 +14,4,95,1,1,428251,0,4939.003,29.28679,0,14,1,0,0,0,20.60793,488.0629,488.0629,1,0,2,0,0,1,77.1,13.8,0,70.5,464.55,464.55,0,0,0,6.141069,0,4.564348,6.192362,1,0,0,70.5,8.505121,0,6.190444,1 +14,4,95,1,2,428251,0,4939.003,30.28679,0,14,1,0,1.657197,0,0,0,1.657197,0,0,0,0,0,1,77.1,13.8,0,70.5,464.55,464.55,0,0,0,6.141069,0,4.564348,6.192362,1,0,0,70.5,8.505121,0,.5051276,1 +14,4,95,1,3,428251,0,4939.003,31.28679,0,14,1,117.7937,9.16775,26.22453,0,2042.241,2195.427,3,0,0,4,5,1,77.1,13.8,0,70.5,464.55,464.55,0,0,0,6.141069,0,4.564348,6.192362,1,0,0,70.5,8.505121,0,7.694132,1 +11,4,0,0,1,428258,.0068104,7910.823,21.16085,1,11,1,135.2783,41.3664,35.67814,0,814.4889,1026.812,3,0,0,7,2,2,74.46748,9.967326,.1572505,,0,0,0,0,.6931472,0,0,0,0,0,1,0,72.06626,8.976113,.6931472,6.934214,1 +11,4,0,0,2,428258,.0068104,7910.823,22.16085,1,11,1,39.62704,23.86946,0,0,131.4312,194.9277,1,0,0,2,1,2,74.46748,9.967326,.1572505,,0,0,0,0,.6931472,0,0,0,0,0,1,0,72.06626,8.976113,.6931472,5.272629,1 +11,4,0,0,3,428258,.0068104,7910.823,23.16085,1,11,1,131.817,26.63531,0,0,0,158.4523,0,0,0,5,1,2,74.46748,9.967326,.1572505,,0,0,0,0,.6931472,0,0,0,0,0,1,0,72.06626,8.976113,.6931472,5.065454,1 +11,4,0,0,1,428259,0,5371.261,45.76865,1,13,1,100.6984,71.47773,33.90688,0,0,206.083,0,0,0,4,1,4,74.46748,9.967326,.1572505,,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.06626,8.589005,1.386294,5.328279,1 +11,4,0,0,2,428259,0,5371.261,46.76865,1,13,1,139.1841,63.7296,0,0,0,202.9138,0,0,0,6,0,4,74.46748,9.967326,.1572505,,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.06626,8.589005,1.386294,5.312781,1 +11,4,0,0,3,428259,0,5371.261,47.76865,1,13,1,106.1779,67.45618,30.78238,0,0,204.4164,0,0,0,3,1,4,74.46748,9.967326,.1572505,,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.06626,8.589005,1.386294,5.320159,1 +11,4,0,0,1,428260,0,5371.261,18.23682,0,10,1,157.9808,6.351214,2.140688,0,0,166.4727,0,0,0,7,0,4,74.46748,9.967326,.1572505,,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.06626,8.589005,1.386294,5.114831,1 +11,4,0,0,2,428260,0,5371.261,19.23682,0,10,1,15.44988,.9090909,0,0,0,16.35897,0,0,0,1,0,4,74.46748,9.967326,.1572505,,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.06626,8.589005,1.386294,2.794777,1 +11,4,0,0,3,428260,0,5371.261,20.23682,0,10,1,43.99316,0,0,0,0,43.99316,0,0,0,2,0,4,74.46748,9.967326,.1572505,,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.06626,8.589005,1.386294,3.784034,1 +11,4,0,0,1,428261,0,5371.261,16.30116,1,13,1,207.1154,39.80263,0,0,0,246.918,0,0,0,8,0,4,74.46748,9.967326,.1572505,,0,0,1,1,1.386294,0,0,0,0,1,0,0,72.06626,8.589005,1.386294,5.509057,1 +11,4,0,0,2,428261,0,5371.261,17.30116,1,13,1,36.36364,31.32867,23.77622,0,0,91.46853,0,0,0,2,1,4,74.46748,9.967326,.1572505,,0,0,1,1,1.386294,0,0,0,0,1,0,0,72.06626,8.589005,1.386294,4.515995,1 +11,4,0,0,3,428261,0,5371.261,18.30116,1,13,1,7.268063,25.50235,23.08679,0,841.0432,896.9004,1,0,0,0,1,4,74.46748,9.967326,.1572505,,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.06626,8.589005,1.386294,6.798945,1 +11,4,0,0,1,428262,0,5371.261,17.15537,1,13,1,12.65182,8.628543,0,0,0,21.28036,0,0,0,2,0,4,74.46748,9.967326,.1572505,,0,0,1,1,1.386294,0,0,0,0,1,0,0,72.06626,8.589005,1.386294,3.057785,1 +11,4,0,0,2,428262,0,5371.261,18.15537,1,13,1,60.13986,9.160839,0,0,0,69.3007,0,0,0,2,0,4,74.46748,9.967326,.1572505,,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.06626,8.589005,1.386294,4.238455,1 +11,4,0,0,3,428262,0,5371.261,19.15537,1,13,1,98.78153,22.68063,0,0,1169.222,1290.684,2,0,0,3,0,4,74.46748,9.967326,.1572505,,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.06626,8.589005,1.386294,7.162928,1 +13,4,0,0,1,428266,0,1,39.91787,0,12,1,115.3728,0,49.54035,0,0,164.9132,0,0,0,2,8,1,85.1,6.9,0,73.9,150,42,0,0,0,3.73767,1,4.564348,5.061929,1,0,0,73.9,.6931472,0,5.105419,1 +13,4,0,0,2,428266,0,1,40.91787,0,12,1,71.02673,0,0,0,0,71.02673,0,0,0,1,5,1,85.1,6.9,0,73.9,150,42,0,0,0,3.73767,1,4.564348,5.061929,1,0,0,73.9,.6931472,0,4.263056,1 +13,4,0,0,3,428266,0,1,41.91787,0,12,1,5.159071,6.663801,0,0,0,11.82287,0,0,0,1,0,1,85.1,6.9,0,73.9,150,42,0,0,0,3.73767,1,4.564348,5.061929,1,0,0,73.9,.6931472,0,2.470036,1 +13,4,0,0,4,428266,0,1,42.91787,0,12,1,84.33501,0,37.14618,0,0,121.4812,0,0,0,1,4,1,85.1,6.9,0,73.9,150,42,0,0,0,3.73767,1,4.564348,5.061929,1,0,0,73.9,.6931472,0,4.799759,1 +13,4,0,0,5,428266,0,1,43.91787,0,12,1,40.3397,10.25478,0,0,0,50.59448,0,0,0,5,1,1,85.1,6.9,0,73.9,150,42,0,0,0,3.73767,1,4.564348,5.061929,1,0,0,73.9,.6931472,0,3.923842,1 +13,4,0,0,1,428267,0,995.3079,26.60643,0,12,1,10.2145,2.808989,0,0,0,13.02349,0,0,0,2,0,3,79.3,10.3,0,70.5,300,313.94,0,0,1.098612,5.749202,1,4.564348,5.755076,1,0,0,70.5,6.904057,1.098612,2.566755,1 +13,4,0,0,2,428267,0,995.3079,27.60643,0,12,1,22.62072,0,0,0,0,22.62072,0,0,0,1,2,3,79.3,10.3,0,70.5,300,313.94,0,0,1.098612,5.749202,1,4.564348,5.755076,1,0,0,70.5,6.904057,1.098612,3.118866,1 +13,4,0,0,3,428267,0,995.3079,28.60643,0,12,1,111.4359,0,0,0,0,111.4359,0,0,0,3,0,4,79.3,10.3,0,70.5,300,313.94,0,0,1.386294,5.749202,1,4.564348,5.755076,1,0,0,70.5,6.904057,1.386294,4.71345,1 +13,4,0,0,4,428267,0,995.3079,29.60643,0,12,1,4.905002,1.709965,0,0,0,6.614967,0,0,0,0,0,5,79.3,10.3,0,70.5,300,313.94,0,0,1.609438,5.749202,1,4.564348,5.755076,1,0,0,70.5,6.904057,1.609438,1.889335,1 +13,4,0,0,5,428267,0,995.3079,30.60643,0,12,1,15.92357,1.415428,24.76999,0,0,42.10899,0,0,0,1,1,5,79.3,10.3,0,70.5,300,313.94,0,0,1.609438,5.749202,1,4.564348,5.755076,1,0,0,70.5,6.904057,1.609438,3.740261,1 +13,4,0,0,1,428268,0,17.59531,4.021903,0,12,1,27.19612,0,0,0,0,27.19612,0,0,0,1,0,2,83.39137,9.967326,0,77.8,300,358.52,1,0,.6931472,5.881984,1,4.564348,5.755076,1,0,0,77.8,2.922909,.6931472,3.303074,1 +13,4,0,0,3,428268,0,17.59531,6.021903,0,12,1,13.75752,0,0,0,0,13.75752,0,0,0,2,0,2,83.39137,9.967326,0,77.8,300,358.52,1,0,.6931472,5.881984,1,4.564348,5.755076,1,0,0,77.8,2.922909,.6931472,2.621586,1 +13,4,0,0,4,428268,0,17.59531,7.021903,0,12,1,13.57115,5.032959,0,0,0,18.60411,0,0,0,1,0,3,83.39137,9.967326,0,77.8,300,358.52,1,0,1.098612,5.881984,1,4.564348,5.755076,1,0,0,77.8,2.922909,1.098612,2.923383,1 +13,4,0,0,5,428268,0,17.59531,8.021903,0,12,1,25.12385,0,0,0,0,25.12385,0,0,0,1,0,3,83.39137,9.967326,0,77.8,300,358.52,1,0,1.098612,5.881984,1,4.564348,5.755076,1,0,0,77.8,2.922909,1.098612,3.223818,1 +13,4,0,0,1,428269,0,17.59531,22.27789,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,55.3,17.2,0,65.9,300,358.52,0,0,.6931472,5.881984,1,4.564348,5.755076,1,0,0,65.9,2.922909,.6931472,,0 +13,4,0,0,3,428269,0,17.59531,24.27789,1,12,1,61.47894,10.5417,0,0,420.8083,492.8289,1,0,0,3,0,2,55.3,17.2,0,65.9,300,358.52,0,0,.6931472,5.881984,1,4.564348,5.755076,1,0,0,65.9,2.922909,.6931472,6.200162,1 +13,4,0,0,4,428269,0,17.59531,25.27789,1,12,1,22.87708,6.320279,26.56068,0,0,55.75805,0,0,0,2,1,3,55.3,17.2,0,65.9,300,358.52,0,0,1.098612,5.881984,1,4.564348,5.755076,1,0,0,65.9,2.922909,1.098612,4.021022,1 +13,4,0,0,5,428269,0,17.59531,26.27789,1,12,1,20.52371,0,0,0,0,20.52371,0,0,0,2,0,3,55.3,17.2,0,65.9,300,358.52,0,0,1.098612,5.881984,1,4.564348,5.755076,1,0,0,65.9,2.922909,1.098612,3.021581,1 +11,4,0,0,1,428275,0,2834.604,21.98768,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,71.3,3.4,0,75,0,0,0,0,0,0,0,0,0,1,0,0,75,7.95001,0,,0 +11,4,0,0,2,428275,0,2834.604,22.98768,0,12,1,23.90999,0,1.054852,0,0,24.96484,0,0,0,0,0,1,71.3,3.4,0,75,0,0,0,0,0,0,0,0,0,1,0,0,75,7.95001,0,3.217468,1 +11,4,0,0,3,428275,0,2834.604,23.98768,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,71.3,3.4,0,75,0,0,0,0,0,0,0,0,0,1,0,0,75,7.95001,0,,0 +17,4,25,1,1,428330,0,7960.117,12.79945,1,18,1,53.11543,5.107252,24.66803,0,0,82.8907,0,0,0,4,1,3,50,9.967326,0,96.3,650,650,1,1,1.098612,6.476973,0,3.258096,7.863267,0,0,0,96.3,8.982325,1.098612,4.417523,1 +17,4,25,1,2,428330,0,7960.117,13.79945,1,18,1,28.78575,0,0,0,0,28.78575,0,0,0,2,0,3,50,9.967326,0,96.3,650,650,1,1,1.098612,6.476973,0,3.258096,7.863267,0,0,0,96.3,8.982325,1.098612,3.35988,1 +17,4,25,1,3,428330,0,7960.117,14.79945,1,18,1,27.08512,0,0,0,0,27.08512,0,0,0,2,0,3,50,9.967326,0,96.3,650,650,1,1,1.098612,6.476973,0,3.258096,7.863267,0,0,0,96.3,8.982325,1.098612,3.298985,1 +17,4,25,1,1,428331,0,7960.117,8.966461,1,18,1,23.49336,0,0,0,0,23.49336,0,0,0,1,1,3,71.7,9.967326,0,96.3,650,650,1,1,1.098612,6.476973,0,3.258096,7.863267,0,0,0,96.3,8.982325,1.098612,3.156718,1 +17,4,25,1,2,428331,0,7960.117,9.966461,1,18,1,4.219409,0,0,0,0,4.219409,0,0,0,1,0,3,71.7,9.967326,0,96.3,650,650,1,1,1.098612,6.476973,0,3.258096,7.863267,0,0,0,96.3,8.982325,1.098612,1.439695,1 +17,4,25,1,3,428331,0,7960.117,10.96646,1,18,1,8.16853,0,0,0,0,8.16853,0,0,0,1,0,3,71.7,9.967326,0,96.3,650,650,1,1,1.098612,6.476973,0,3.258096,7.863267,0,0,0,96.3,8.982325,1.098612,2.100289,1 +17,4,25,1,1,428332,0,7960.117,37.92471,1,18,1,15.32176,0,0,0,0,15.32176,0,0,0,0,1,3,67,6.9,0,92,650,650,0,0,1.098612,6.476973,0,3.258096,7.863267,0,0,0,92,8.982325,1.098612,2.729274,1 +17,4,25,1,2,428332,0,7960.117,38.92471,1,18,1,0,0,0,0,0,0,0,0,0,0,0,3,67,6.9,0,92,650,650,0,0,1.098612,6.476973,0,3.258096,7.863267,0,0,0,92,8.982325,1.098612,,0 +17,4,25,1,3,428332,0,7960.117,39.92471,1,18,1,52.88048,0,28.00946,0,0,80.88994,0,0,0,1,0,3,67,6.9,0,92,650,650,0,0,1.098612,6.476973,0,3.258096,7.863267,0,0,0,92,8.982325,1.098612,4.393089,1 +11,4,0,0,1,428347,0,14318.47,36.91992,1,17,1,0,0,0,0,0,0,0,0,0,0,0,4,59.6,17.2,0,73.9,0,366,0,0,1.386294,5.902633,0,0,0,0,0,0,73.9,9.569376,1.386294,,0 +11,4,0,0,2,428347,0,14318.47,37.91992,1,17,1,11.83712,3.669508,0,0,0,15.50663,0,0,0,1,0,4,59.6,17.2,0,73.9,0,366,0,0,1.386294,5.902633,0,0,0,0,0,0,73.9,9.569376,1.386294,2.741268,1 +11,4,0,0,3,428347,0,14318.47,38.91992,1,17,1,68.13611,0,0,0,0,68.13611,0,0,0,4,0,4,59.6,17.2,0,73.9,0,366,0,0,1.386294,5.902633,0,0,0,0,0,0,73.9,9.569376,1.386294,4.221507,1 +11,4,0,0,1,428348,0,14318.47,4.610541,0,17,1,8.243174,2.833591,0,0,0,11.07676,0,0,0,1,0,4,83.39137,9.967326,0,81.5,0,366,1,0,1.386294,5.902633,0,0,0,0,0,0,81.5,9.569376,1.386294,2.40485,1 +11,4,0,0,2,428348,0,14318.47,5.610541,0,17,1,0,3.077652,0,0,0,3.077652,0,0,0,0,0,4,83.39137,9.967326,0,81.5,0,366,1,0,1.386294,5.902633,0,0,0,0,0,0,81.5,9.569376,1.386294,1.124167,1 +11,4,0,0,3,428348,0,14318.47,6.610541,0,17,1,23.86649,1.950585,0,0,0,25.81708,0,0,0,1,0,4,83.39137,9.967326,0,81.5,0,366,1,0,1.386294,5.902633,0,0,0,0,0,0,81.5,9.569376,1.386294,3.251036,1 +11,4,0,0,1,428349,0,14318.47,7.750855,1,17,1,11.46316,0,0,0,0,11.46316,0,0,0,1,0,4,73.3,9.967326,0,96.3,0,366,1,1,1.386294,5.902633,0,0,0,0,0,0,96.3,9.569376,1.386294,2.439139,1 +11,4,0,0,2,428349,0,14318.47,8.750855,1,17,1,244.2614,0,24.85795,0,0,269.1193,0,0,0,2,0,4,73.3,9.967326,0,96.3,0,366,1,1,1.386294,5.902633,0,0,0,0,0,0,96.3,9.569376,1.386294,5.595155,1 +11,4,0,0,3,428349,0,14318.47,9.750855,1,17,1,6.328565,0,0,0,0,6.328565,0,0,0,1,0,4,73.3,9.967326,0,96.3,0,366,1,1,1.386294,5.902633,0,0,0,0,0,0,96.3,9.569376,1.386294,1.845074,1 +11,4,0,0,1,428350,0,14318.47,34.96783,0,15,1,0,3.735188,0,41.21587,604.8428,608.5781,1,0,4,0,0,4,82.4,6.9,0,87.5,0,366,0,0,1.386294,5.902633,0,0,0,0,0,0,87.5,9.569376,1.386294,6.411125,1 +11,4,0,0,2,428350,0,14318.47,35.96783,0,15,1,0,0,0,80.49242,5800.109,5800.109,3,0,6,0,0,4,82.4,6.9,0,87.5,0,366,0,0,1.386294,5.902633,0,0,0,0,0,0,87.5,9.569376,1.386294,8.665632,1 +11,4,0,0,3,428350,0,14318.47,36.96783,0,15,1,10.83658,0,31.20936,0,1358.483,1400.529,2,0,0,0,1,4,82.4,6.9,0,87.5,0,366,0,0,1.386294,5.902633,0,0,0,0,0,0,87.5,9.569376,1.386294,7.244605,1 +13,4,0,0,1,428388,0,8142.522,4.17796,0,10,1,251.1747,0,0,0,0,251.1747,0,0,0,52,0,5,83.39137,9.967326,0,100,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,100,9.004978,1.609438,5.526149,1 +13,4,0,0,2,428388,0,8142.522,5.17796,0,10,1,34.57571,0,0,0,0,34.57571,0,0,0,5,0,5,83.39137,9.967326,0,100,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,100,9.004978,1.609438,3.543152,1 +13,4,0,0,3,428388,0,8142.522,6.17796,0,10,1,6.448839,0,0,255.804,0,6.448839,0,0,17,1,0,5,83.39137,9.967326,0,100,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,100,9.004978,1.609438,1.8639,1 +13,4,0,0,1,428389,0,8142.522,29.32786,1,10,1,66.13892,48.00817,0,0,2091.599,2205.746,4,1,0,8,0,5,83.5,13.8,0,84.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,84.1,9.004978,1.609438,7.698821,1 +13,4,0,0,2,428389,0,8142.522,30.32786,1,10,1,11.25176,10.78294,0,0,0,22.03469,0,0,0,2,0,5,83.5,13.8,0,84.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,84.1,9.004978,1.609438,3.092618,1 +13,4,0,0,3,428389,0,8142.522,31.32786,1,10,1,283.7575,0,0,0,0,283.7575,0,0,0,7,0,5,83.5,13.8,0,84.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,1,0,84.1,9.004978,1.609438,5.64812,1 +13,4,0,0,1,428390,0,8142.522,30.24504,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,79.3,6.9,0,100,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,100,9.004978,1.609438,,0 +13,4,0,0,2,428390,0,8142.522,31.24504,0,12,1,12.65823,12.00187,0,0,0,24.6601,0,0,0,1,0,5,79.3,6.9,0,100,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,100,9.004978,1.609438,3.205187,1 +13,4,0,0,3,428390,0,8142.522,32.24504,0,12,1,4.299226,0,0,0,0,4.299226,0,0,0,1,0,5,79.3,6.9,0,100,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,100,9.004978,1.609438,1.458435,1 +13,4,0,0,1,428391,0,8142.522,7.693361,1,10,1,27.3238,0,0,0,0,27.3238,0,0,0,2,0,5,85,9.967326,0,74.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.004978,1.609438,3.307758,1 +13,4,0,0,2,428391,0,8142.522,8.69336,1,10,1,11.72058,0,0,0,0,11.72058,0,0,0,1,0,5,85,9.967326,0,74.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.004978,1.609438,2.461346,1 +13,4,0,0,3,428391,0,8142.522,9.69336,1,10,1,61.04041,0,0,0,1476.251,1537.292,3,0,0,5,0,5,85,9.967326,0,74.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.004978,1.609438,7.337778,1 +13,4,0,0,1,428392,0,8142.522,3.657769,0,10,1,134.3718,0,22.47191,0,644.8723,801.7161,1,0,0,17,0,5,83.39137,9.967326,0,100,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,100,9.004978,1.609438,6.686755,1 +13,4,0,0,2,428392,0,8142.522,4.657769,0,10,1,67.93249,2.109705,16.87764,0,576.962,663.8818,1,0,0,11,0,5,83.39137,9.967326,0,100,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,100,9.004978,1.609438,6.498104,1 +13,4,0,0,3,428392,0,8142.522,5.657769,0,10,1,414.5959,0,16.1221,0,0,430.718,0,0,0,44,0,5,83.39137,9.967326,0,100,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,100,9.004978,1.609438,6.065454,1 +11,4,0,1,1,428470,0,11356.01,56.91444,0,13,1,10.30397,0,0,0,0,10.30397,0,0,0,2,0,2,87.8,6.9,0,71.6,0,112,0,0,.6931472,4.718499,0,0,0,1,0,0,71.6,9.33759,.6931472,2.332529,1 +11,4,0,1,2,428470,0,11356.01,57.91444,0,13,1,55.39773,10.53504,0,0,0,65.93276,0,0,0,7,0,2,87.8,6.9,0,71.6,0,112,0,0,.6931472,4.718499,0,0,0,1,0,0,71.6,9.33759,.6931472,4.188635,1 +11,4,0,1,3,428470,0,11356.01,58.91444,0,13,1,21.23971,0,45.51365,0,0,66.75336,0,0,0,3,0,1,87.8,6.9,0,71.6,0,112,0,0,0,4.718499,0,0,0,1,0,0,71.6,9.33759,0,4.201005,1 +11,4,0,1,1,428471,0,11356.01,54.98973,1,12,1,41.21587,4.817105,57.18702,0,0,103.22,0,0,0,7,0,2,89.9,20.7,0,68.2,0,112,0,0,.6931472,4.718499,0,0,0,1,0,0,68.2,9.33759,.6931472,4.636862,1 +11,4,0,1,2,428471,0,11356.01,55.98973,1,12,1,58.12027,2.727273,46.875,0,0,107.7225,0,0,0,5,0,2,89.9,20.7,0,68.2,0,112,0,0,.6931472,4.718499,0,0,0,1,0,0,68.2,9.33759,.6931472,4.679559,1 +13,4,0,1,1,428485,0,6165.396,16.4846,0,12,1,5.107252,0,0,0,0,5.107252,0,0,0,1,0,5,60.6,3.4,0,71.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,71.6,8.72687,1.609438,1.630661,1 +13,4,0,1,2,428485,0,6165.396,17.4846,0,12,1,7.032349,0,0,0,161.7862,168.8186,1,0,0,1,0,5,60.6,3.4,0,71.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,71.6,8.72687,1.609438,5.128825,1 +13,4,0,1,3,428485,0,6165.396,18.4846,0,12,1,0,.6448839,0,0,0,.6448839,0,0,0,0,0,5,60.6,3.4,0,71.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,71.6,8.72687,1.609438,-.4386849,1 +13,4,0,1,4,428485,0,6165.396,19.4846,0,12,1,207.4874,0,0,0,0,207.4874,0,0,0,1,0,5,60.6,3.4,0,71.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,71.6,8.72687,1.609438,5.335071,1 +13,4,0,1,1,428486,0,6165.396,19.25257,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,70.7,6.9,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,60.2,8.72687,1.609438,,0 +13,4,0,1,2,428486,0,6165.396,20.25257,0,11,1,145.1946,13.2677,0,0,0,158.4623,0,0,0,10,0,5,70.7,6.9,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,60.2,8.72687,1.609438,5.065516,1 +13,4,0,1,3,428486,0,6165.396,21.25257,0,11,1,0,7.60963,0,0,0,7.60963,0,0,0,0,0,5,70.7,6.9,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,60.2,8.72687,1.609438,2.029415,1 +13,4,0,1,4,428486,0,6165.396,22.25257,0,11,1,0,1.163242,0,0,0,1.163242,0,0,0,0,0,5,70.7,6.9,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,60.2,8.72687,1.609438,.1512106,1 +13,4,0,1,5,428486,0,6165.396,23.25257,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,70.7,6.9,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,60.2,8.72687,1.609438,,0 +13,4,0,1,1,428487,0,6165.396,43.54826,1,12,1,5.107252,4.034729,0,0,0,9.141982,0,0,0,1,0,5,69.1,13.8,0,63.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,63.6,8.72687,1.609438,2.212877,1 +13,4,0,1,2,428487,0,6165.396,44.54826,1,12,1,132.8645,13.10361,0,0,0,145.9681,0,0,0,0,5,5,69.1,13.8,0,63.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,63.6,8.72687,1.609438,4.983388,1 +13,4,0,1,3,428487,0,6165.396,45.54826,1,12,1,0,3.095443,0,0,0,3.095443,0,0,0,0,0,5,69.1,13.8,0,63.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,63.6,8.72687,1.609438,1.129931,1 +13,4,0,1,4,428487,0,6165.396,46.54826,1,12,1,76.50252,21.90772,37.61148,0,0,136.0217,0,0,0,3,0,5,69.1,13.8,0,63.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,63.6,8.72687,1.609438,4.912815,1 +13,4,0,1,5,428487,0,6165.396,47.54826,1,12,1,0,4.854918,0,0,0,4.854918,0,0,0,0,0,5,69.1,13.8,0,63.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,63.6,8.72687,1.609438,1.579992,1 +13,4,0,1,1,428488,0,6165.396,43.22245,0,11,1,57.02247,7.686415,70.22472,0,544.9898,679.9234,1,0,0,4,0,5,63.3,6.9,0,37.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,37.5,8.72687,1.609438,6.52198,1 +13,4,0,1,2,428488,0,6165.396,44.22245,0,11,1,66.80731,1.40647,0,0,0,68.21378,0,0,0,3,0,5,63.3,6.9,0,37.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,37.5,8.72687,1.609438,4.222647,1 +13,4,0,1,3,428488,0,6165.396,45.22245,0,11,1,32.99656,30.30954,0,0,0,63.30611,0,0,0,1,0,5,63.3,6.9,0,37.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,37.5,8.72687,1.609438,4.147982,1 +13,4,0,1,4,428488,0,6165.396,46.22245,0,11,1,5.816208,14.44358,0,0,344.4824,364.7422,1,0,0,1,0,5,63.3,6.9,0,37.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,37.5,8.72687,1.609438,5.899191,1 +13,4,0,1,5,428488,0,6165.396,47.22245,0,11,1,17.69285,8.934891,0,0,0,26.62774,0,0,0,1,0,5,63.3,6.9,0,37.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,37.5,8.72687,1.609438,3.281954,1 +13,4,0,1,1,428489,0,6165.396,15.54825,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,49.5,3.4,0,67,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,67,8.72687,1.609438,,0 +13,4,0,1,2,428489,0,6165.396,16.54825,1,12,1,50.3985,.4688233,0,0,0,50.86732,0,0,0,1,0,5,49.5,3.4,0,67,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,67,8.72687,1.609438,3.929221,1 +13,4,0,1,3,428489,0,6165.396,17.54825,1,12,1,73.83921,.7523646,0,0,339.7506,414.3422,1,0,0,2,0,5,49.5,3.4,0,67,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,67,8.72687,1.609438,6.026692,1 +13,4,0,1,4,428489,0,6165.396,18.54825,1,12,1,31.01978,0,0,0,135.7115,166.7313,1,1,0,4,0,5,49.5,3.4,0,67,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,67,8.72687,1.609438,5.116384,1 +13,4,0,1,5,428489,0,6165.396,19.54825,1,12,1,31.14296,0,0,0,0,31.14296,0,0,0,1,0,5,49.5,3.4,0,67,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,67,8.72687,1.609438,3.438588,1 +14,4,95,1,1,428495,1,8390.616,16.43532,1,10,1,7.660879,2.451481,0,0,0,10.11236,0,0,0,2,0,6,64.4,6.9,0,64.8,421.66,421.66,1,1,1.791759,6.044199,0,4.564348,6.095492,0,0,0,64.8,9.034988,1.791759,2.313758,1 +14,4,95,1,2,428495,1,8390.616,17.43532,1,10,1,36.68542,11.33615,0,0,0,48.02156,0,0,0,4,0,6,64.4,6.9,0,64.8,421.66,421.66,1,1,1.791759,6.044199,0,4.564348,6.095492,0,0,0,64.8,9.034988,1.791759,3.87165,1 +14,4,95,1,3,428495,1,8390.616,18.43532,1,10,1,75.71797,2.987962,0,0,0,78.70593,0,0,0,3,0,6,64.4,6.9,0,64.8,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,0,0,0,64.8,9.034988,1.791759,4.365718,1 +14,4,95,1,4,428495,1,8390.616,19.43532,1,10,1,43.05933,7.347809,0,0,0,50.40714,0,0,0,3,0,6,64.4,6.9,0,64.8,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,0,0,0,64.8,9.034988,1.791759,3.920133,1 +14,4,95,1,5,428495,1,8390.616,20.43532,1,10,1,76.78698,4.511677,0,0,698.5315,779.8301,1,0,0,2,0,6,64.4,6.9,0,64.8,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,0,0,0,64.8,9.034988,1.791759,6.659076,1 +14,4,95,1,1,428496,1,8390.616,17.84257,1,10,1,33.19714,55.45454,31.66496,0,366.1696,486.4862,1,0,0,7,1,6,56.9,20.7,0,68.2,421.66,421.66,1,1,1.791759,6.044199,0,4.564348,6.095492,0,0,0,68.2,9.034988,1.791759,6.187209,1 +14,4,95,1,2,428496,1,8390.616,18.84257,1,10,1,46.4135,58.87014,14.0647,0,0,119.3483,0,0,0,10,1,6,56.9,20.7,0,68.2,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,0,0,0,68.2,9.034988,1.791759,4.782046,1 +14,4,95,1,3,428496,1,8390.616,19.84257,1,10,1,16.76698,57.87618,0,0,0,74.64317,0,0,0,2,1,6,56.9,20.7,0,68.2,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,0,0,0,68.2,9.034988,1.791759,4.312719,1 +14,4,95,1,4,428496,1,8390.616,20.84257,1,10,1,12.79566,61.38038,0,0,0,74.17604,0,0,0,1,1,6,56.9,20.7,0,68.2,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,0,0,0,68.2,9.034988,1.791759,4.306441,1 +14,4,95,1,5,428496,1,8390.616,21.84257,1,10,1,33.1741,15.12739,14.15428,0,0,62.45577,0,0,0,4,1,6,56.9,20.7,0,68.2,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,0,0,0,68.2,9.034988,1.791759,4.134459,1 +14,4,95,1,1,428497,1,8390.616,37.39631,0,12,1,145.7508,17.16548,0,0,4216.098,4379.014,4,0,0,2,0,6,80.9,3.4,1,53.4,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,1,0,0,53.4,9.034988,1.791759,8.384579,1 +14,4,95,1,2,428497,1,8390.616,38.39631,0,12,1,681.4158,34.75856,0,0,1462.546,2178.72,1,0,0,6,81,6,80.9,3.4,1,53.4,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,1,0,0,53.4,9.034988,1.791759,7.686493,1 +14,4,95,1,3,428497,1,8390.616,39.39631,0,12,1,112.9837,37.15821,0,0,0,150.1419,0,0,0,2,13,6,80.9,3.4,1,53.4,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,1,0,0,53.4,9.034988,1.791759,5.01158,1 +14,4,95,1,4,428497,1,8390.616,40.39631,0,12,1,29.85653,32.08608,0,0,0,61.94261,0,0,0,2,0,6,80.9,3.4,1,53.4,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,1,0,0,53.4,9.034988,1.791759,4.126208,1 +14,4,95,1,5,428497,1,8390.616,41.39631,0,12,1,0,39.23567,0,0,0,39.23567,0,0,0,0,0,6,80.9,3.4,1,53.4,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,1,0,0,53.4,9.034988,1.791759,3.669586,1 +14,4,95,1,1,428498,1,8390.616,38.91855,1,10,1,62.40041,135.8069,31.15424,0,0,229.3616,0,0,0,8,1,6,87.2,0,0,71.6,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,1,0,0,71.6,9.034988,1.791759,5.4353,1 +14,4,95,1,2,428498,1,8390.616,39.91855,1,10,1,99.10924,90.67979,30.94234,0,473.7928,694.5242,1,0,0,4,1,6,87.2,0,0,71.6,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,1,0,0,71.6,9.034988,1.791759,6.543227,1 +14,4,95,1,3,428498,1,8390.616,40.91855,1,10,1,18.9166,54.40241,0,0,0,73.319,0,0,0,2,1,6,87.2,0,0,71.6,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,1,0,0,71.6,9.034988,1.791759,4.29482,1 +14,4,95,1,4,428498,1,8390.616,41.91855,1,10,1,211.361,182.2606,0,0,203.292,596.9135,1,1,0,19,1,6,87.2,0,0,71.6,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,1,0,0,71.6,9.034988,1.791759,6.391772,1 +14,4,95,1,5,428498,1,8390.616,42.91855,1,10,1,98.79688,135.5414,0,0,0,234.3383,0,0,0,8,1,6,87.2,0,0,71.6,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,1,0,0,71.6,9.034988,1.791759,5.456766,1 +14,4,95,1,1,428499,1,8390.616,15.34839,1,10,1,63.18692,1.470889,0,0,396.3177,460.9755,1,0,0,5,0,6,67,3.4,0,64.8,421.66,421.66,1,1,1.791759,6.044199,0,4.564348,6.095492,0,0,0,64.8,9.034988,1.791759,6.133345,1 +14,4,95,1,2,428499,1,8390.616,16.34839,1,10,1,51.10173,24.72574,0,0,0,75.82748,0,0,0,5,0,6,67,3.4,0,64.8,421.66,421.66,1,1,1.791759,6.044199,0,4.564348,6.095492,0,0,0,64.8,9.034988,1.791759,4.328461,1 +14,4,95,1,3,428499,1,8390.616,17.34839,1,10,1,27.51505,7.093723,0,0,0,34.60877,0,0,0,5,0,6,67,3.4,0,64.8,421.66,421.66,1,1,1.791759,6.044199,0,4.564348,6.095492,0,0,0,64.8,9.034988,1.791759,3.544107,1 +14,4,95,1,4,428499,1,8390.616,18.34839,1,10,1,102.3459,36.16906,0,0,416.0139,554.5289,1,0,0,12,0,6,67,3.4,0,64.8,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,0,0,0,64.8,9.034988,1.791759,6.318119,1 +14,4,95,1,5,428499,1,8390.616,19.34839,1,10,1,63.25195,6.192498,0,0,188.995,258.4395,1,1,0,2,0,6,67,3.4,0,64.8,421.66,421.66,0,0,1.791759,6.044199,0,4.564348,6.095492,0,0,0,64.8,9.034988,1.791759,5.554662,1 +14,4,95,1,1,428500,1,8390.616,7.682409,0,10,1,69.02962,26.15935,0,0,0,95.18896,0,0,0,6,0,6,100,9.967326,0,74.1,421.66,421.66,1,0,1.791759,6.044199,0,4.564348,6.095492,0,0,0,74.1,9.034988,1.791759,4.555864,1 +14,4,95,1,2,428500,1,8390.616,8.682409,0,10,1,158.345,10.22035,0,0,0,168.5654,0,0,0,2,0,6,100,9.967326,0,74.1,421.66,421.66,1,0,1.791759,6.044199,0,4.564348,6.095492,0,0,0,74.1,9.034988,1.791759,5.127324,1 +14,4,95,1,3,428500,1,8390.616,9.682409,0,10,1,60.10318,9.582975,26.6552,0,0,96.34136,0,0,0,6,0,6,100,9.967326,0,74.1,421.66,421.66,1,0,1.791759,6.044199,0,4.564348,6.095492,0,0,0,74.1,9.034988,1.791759,4.567898,1 +14,4,95,1,4,428500,1,8390.616,10.68241,0,10,1,17.25475,10.77549,3.431563,0,0,31.46181,0,0,0,0,0,6,100,9.967326,0,74.1,421.66,421.66,1,0,1.791759,6.044199,0,4.564348,6.095492,0,0,0,74.1,9.034988,1.791759,3.448774,1 +14,4,95,1,5,428500,1,8390.616,11.68241,0,10,1,149.3454,16.76575,0,0,330.683,496.7941,1,0,0,7,0,6,100,9.967326,0,74.1,421.66,421.66,1,0,1.791759,6.044199,0,4.564348,6.095492,0,0,0,74.1,9.034988,1.791759,6.208176,1 +18,4,25,1,1,428559,0,4529.032,15.46886,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,67.6,3.4,0,80.7,750,725,1,0,.6931472,6.586172,0,3.258096,8.006368,0,0,0,80.7,8.418485,.6931472,,0 +18,4,25,1,2,428559,0,4529.032,16.46886,0,12,1,50.81585,9.79021,3.114219,0,0,63.72028,0,0,0,3,0,2,67.6,3.4,0,80.7,750,725,1,0,.6931472,6.586172,0,3.258096,8.006368,0,0,0,80.7,8.418485,.6931472,4.154503,1 +18,4,25,1,3,428559,0,4529.032,17.46886,0,12,1,36.87473,0,0,0,0,36.87473,0,0,0,1,0,2,67.6,3.4,0,80.7,750,725,1,0,.6931472,6.586172,0,3.258096,8.006368,0,0,0,80.7,8.418485,.6931472,3.607527,1 +18,4,25,1,1,428560,0,4529.032,37.48939,1,12,1,26.31579,4.175101,0,0,0,30.49089,0,0,0,2,0,2,55.3,10.3,1,63.6,750,725,0,0,.6931472,6.586172,0,3.258096,8.006368,1,0,0,63.6,8.418485,.6931472,3.417428,1 +18,4,25,1,2,428560,0,4529.032,38.48939,1,12,1,33.56643,3.916084,0,0,0,37.48252,0,0,0,3,0,2,55.3,10.3,1,63.6,750,725,0,0,.6931472,6.586172,0,3.258096,8.006368,1,0,0,63.6,8.418485,.6931472,3.623875,1 +18,4,25,1,3,428560,0,4529.032,39.48939,1,12,1,15.81873,0,0,0,0,15.81873,0,0,0,2,0,2,55.3,10.3,1,63.6,750,725,0,0,.6931472,6.586172,0,3.258096,8.006368,1,0,0,63.6,8.418485,.6931472,2.761194,1 +18,4,25,1,1,428561,0,7910.823,18.73785,0,12,1,27.57916,7.967314,0,0,0,35.54647,0,0,0,2,0,1,70.7,10.3,0,60.2,584.9,584.9,0,0,0,6.371441,0,3.258096,7.757735,1,0,0,60.2,8.976113,0,3.570841,1 +18,4,25,1,2,428561,0,7910.823,19.73785,0,12,1,15.00234,0,0,0,0,15.00234,0,0,0,2,0,1,70.7,10.3,0,60.2,584.9,584.9,0,0,0,6.371441,0,3.258096,7.757735,1,0,0,60.2,8.976113,0,2.708206,1 +18,4,25,1,3,428561,0,7910.823,20.73785,0,12,1,5.588994,1.805675,0,0,0,7.394669,0,0,0,1,0,1,70.7,10.3,0,60.2,584.9,584.9,0,0,0,6.371441,0,3.258096,7.757735,1,0,0,60.2,8.976113,0,2.000759,1 +11,4,0,1,1,428588,0,9498.534,47.22792,0,14,1,94.73953,33.63126,0,0,0,128.3708,0,0,0,9,0,4,93.1,20.7,0,83,0,0,0,0,1.386294,0,0,0,0,1,0,0,83,9.158998,1.386294,4.854923,1 +11,4,0,1,2,428588,0,9498.534,48.22792,0,14,1,211.0455,46.50727,22.3113,0,1017.121,1296.985,2,0,0,11,0,4,93.1,20.7,0,83,0,0,0,0,1.386294,0,0,0,0,1,0,0,83,9.158998,1.386294,7.167798,1 +11,4,0,1,3,428588,0,9498.534,49.22792,0,14,1,284.4368,69.69045,30.09458,0,4380.271,4764.493,4,0,0,6,18,4,93.1,20.7,0,83,0,0,0,0,1.386294,0,0,0,0,1,0,0,83,9.158998,1.386294,8.468946,1 +11,4,0,1,1,428589,0,9498.534,8.85421,0,16,1,30.28601,5.617978,0,0,0,35.90398,0,0,0,3,0,4,88.3,9.967326,0,92.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,92.6,9.158998,1.386294,3.580848,1 +11,4,0,1,2,428589,0,9498.534,9.85421,0,16,1,11.25176,0,0,0,0,11.25176,0,0,0,2,0,4,88.3,9.967326,0,92.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,92.6,9.158998,1.386294,2.420524,1 +11,4,0,1,3,428589,0,9498.534,10.85421,0,16,1,17.19691,0,23.21582,0,0,40.41273,0,0,0,2,0,4,88.3,9.967326,0,92.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,92.6,9.158998,1.386294,3.699145,1 +11,4,0,1,1,428590,0,9498.534,33.45106,1,16,1,11.23596,0,0,0,0,11.23596,0,0,0,1,0,4,94.1,10.3,0,90.9,0,0,0,0,1.386294,0,0,0,0,0,0,0,90.9,9.158998,1.386294,2.419119,1 +11,4,0,1,2,428590,0,9498.534,34.45106,1,16,1,63.65213,2.344116,0,0,0,65.99625,0,0,0,2,0,4,94.1,10.3,0,90.9,0,0,0,0,1.386294,0,0,0,0,0,0,0,90.9,9.158998,1.386294,4.189598,1 +11,4,0,1,3,428590,0,9498.534,35.45106,1,16,1,33.10404,5.717971,18.05675,0,0,56.87876,0,0,0,3,0,4,94.1,10.3,0,90.9,0,0,0,0,1.386294,0,0,0,0,0,0,0,90.9,9.158998,1.386294,4.040922,1 +11,4,0,1,1,428591,0,9498.534,10.22587,0,16,1,32.68641,0,0,0,0,32.68641,0,0,0,4,0,4,95,9.967326,0,92.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,92.6,9.158998,1.386294,3.486959,1 +11,4,0,1,2,428591,0,9498.534,11.22587,0,16,1,43.02391,0,0,0,0,43.02391,0,0,0,3,0,4,95,9.967326,0,92.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,92.6,9.158998,1.386294,3.761756,1 +11,4,0,1,3,428591,0,9498.534,12.22587,0,16,1,17.19691,0,0,0,0,17.19691,0,0,0,2,0,4,95,9.967326,0,92.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,92.6,9.158998,1.386294,2.844729,1 +15,4,95,0,1,428599,0,11089.74,12.42437,1,12,1,14.04494,0,0,0,0,14.04494,0,0,0,2,0,6,80,9.967326,0,88.9,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,1,0,0,88.9,9.313866,1.791759,2.642262,1 +15,4,95,0,2,428599,0,11089.74,13.42437,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,80,9.967326,0,88.9,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,1,0,0,88.9,9.313866,1.791759,,0 +15,4,95,0,3,428599,0,11089.74,14.42437,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,80,9.967326,0,88.9,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,1,0,0,88.9,9.313866,1.791759,,0 +15,4,95,0,1,428600,0,11089.74,16.59138,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,75.5,3.4,0,83,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,83,9.313866,1.791759,,0 +15,4,95,0,2,428600,0,11089.74,17.59138,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,75.5,3.4,0,83,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,83,9.313866,1.791759,,0 +15,4,95,0,3,428600,0,11089.74,18.59138,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,75.5,3.4,0,83,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,83,9.313866,1.791759,,0 +15,4,95,0,1,428601,0,11089.74,15.19507,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,62.2,6.9,0,73.9,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,1,0,0,73.9,9.313866,1.791759,,0 +15,4,95,0,2,428601,0,11089.74,16.19507,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,62.2,6.9,0,73.9,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,1,0,0,73.9,9.313866,1.791759,,0 +15,4,95,0,3,428601,0,11089.74,17.19507,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,62.2,6.9,0,73.9,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,1,0,0,73.9,9.313866,1.791759,,0 +15,4,95,0,1,428602,0,11089.74,41.1718,0,12,1,51.96629,0,0,0,0,51.96629,0,0,0,3,0,6,87.8,13.8,0,89.8,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,89.8,9.313866,1.791759,3.950595,1 +15,4,95,0,2,428602,0,11089.74,42.1718,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,87.8,13.8,0,89.8,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,89.8,9.313866,1.791759,,0 +15,4,95,0,3,428602,0,11089.74,43.1718,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,87.8,13.8,0,89.8,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,89.8,9.313866,1.791759,,0 +15,4,95,0,1,428604,0,11089.74,41.51951,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,0,0,84.1,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,84.1,9.313866,1.791759,,0 +15,4,95,0,2,428604,0,11089.74,42.51951,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,0,0,84.1,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,84.1,9.313866,1.791759,,0 +15,4,95,0,3,428604,0,11089.74,43.51951,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,0,0,84.1,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,84.1,9.313866,1.791759,,0 +13,4,0,1,1,428635,0,5923.754,3.19781,1,12,1,6.128703,0,0,0,0,6.128703,0,0,0,1,0,4,83.39137,9.967326,0,92.6,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,92.6,8.686894,1.386294,1.812983,1 +13,4,0,1,2,428635,0,5923.754,4.19781,1,12,1,7.032349,0,0,0,0,7.032349,0,0,0,1,0,4,83.39137,9.967326,0,92.6,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,92.6,8.686894,1.386294,1.950521,1 +13,4,0,1,3,428635,0,5923.754,5.19781,1,12,1,15.47721,0,0,0,0,15.47721,0,0,0,3,0,4,83.39137,9.967326,0,92.6,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,92.6,8.686894,1.386294,2.739369,1 +13,4,0,1,1,428636,0,5923.754,1.826146,1,12,1,137.1757,0,0,0,0,137.1757,0,0,0,5,0,4,83.39137,9.967326,0,77.8,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,77.8,8.686894,1.386294,4.921263,1 +13,4,0,1,2,428636,0,5923.754,2.826146,1,12,1,92.59259,8.907641,20.62822,0,0,122.1285,0,0,0,5,0,4,83.39137,9.967326,0,77.8,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,77.8,8.686894,1.386294,4.805073,1 +13,4,0,1,3,428636,0,5923.754,3.826146,1,12,1,20.20636,.8598452,9.535684,0,0,30.60189,0,0,0,2,0,4,83.39137,9.967326,0,77.8,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,77.8,8.686894,1.386294,3.421062,1 +13,4,0,1,1,428637,0,5923.754,27.04175,0,12,1,28.08989,0,0,0,0,28.08989,0,0,0,2,0,4,80.9,0,0,76.1,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,76.1,8.686894,1.386294,3.33541,1 +13,4,0,1,2,428637,0,5923.754,28.04175,0,12,1,50.797,0,0,0,0,50.797,0,0,0,3,0,4,80.9,0,0,76.1,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,76.1,8.686894,1.386294,3.927837,1 +13,4,0,1,3,428637,0,5923.754,29.04175,0,12,1,10.74806,0,0,0,0,10.74806,0,0,0,1,0,4,80.9,0,0,76.1,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,76.1,8.686894,1.386294,2.374726,1 +13,4,0,1,1,428638,0,5923.754,25.16906,1,12,1,10.2145,0,0,0,0,10.2145,0,0,0,1,0,4,77.1,3.4,0,90.9,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,90.9,8.686894,1.386294,2.323809,1 +13,4,0,1,2,428638,0,5923.754,26.16906,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.1,3.4,0,90.9,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,90.9,8.686894,1.386294,,0 +13,4,0,1,3,428638,0,5923.754,27.16906,1,12,1,45.89424,0,0,0,0,45.89424,0,0,0,3,0,4,77.1,3.4,0,90.9,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,90.9,8.686894,1.386294,3.826339,1 +17,4,25,0,1,428683,0,8848.094,32.49281,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,77.1,0,0,83.3,663.25,663.25,0,0,1.098612,6.497152,0,3.258096,7.883446,0,0,0,83.3,9.08807,1.098612,,0 +17,4,25,0,2,428683,0,8848.094,33.49281,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,77.1,0,0,83.3,663.25,663.25,0,0,1.098612,6.497152,0,3.258096,7.883446,0,0,0,83.3,9.08807,1.098612,,0 +17,4,25,0,3,428683,0,8848.094,34.49281,0,16,1,19.34652,13.19862,0,0,227.0937,259.6389,1,0,0,3,0,3,77.1,0,0,83.3,663.25,663.25,0,0,1.098612,6.497152,0,3.258096,7.883446,0,0,0,83.3,9.08807,1.098612,5.559292,1 +17,4,25,0,1,428684,0,8848.094,28.77481,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,86.2,6.9,0,82.1,663.25,663.25,0,0,1.098612,6.497152,0,3.258096,7.883446,1,0,0,82.1,9.08807,1.098612,,0 +17,4,25,0,2,428684,0,8848.094,29.77481,1,16,1,55.90717,0,0,0,0,55.90717,0,0,0,2,0,3,86.2,6.9,0,82.1,663.25,663.25,0,0,1.098612,6.497152,0,3.258096,7.883446,1,0,0,82.1,9.08807,1.098612,4.023693,1 +17,4,25,0,3,428684,0,8848.094,30.77481,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,86.2,6.9,0,82.1,663.25,663.25,0,0,1.098612,6.497152,0,3.258096,7.883446,1,0,0,82.1,9.08807,1.098612,,0 +17,4,25,0,1,428685,0,8848.094,3.84668,1,16,1,11.23596,2.477017,0,0,0,13.71297,0,0,0,2,0,3,83.39137,9.967326,0,70.4,663.25,663.25,1,1,1.098612,6.497152,0,3.258096,7.883446,0,0,0,70.4,9.08807,1.098612,2.618342,1 +17,4,25,0,2,428685,0,8848.094,4.84668,1,16,1,59.77496,1.40647,0,0,0,61.18143,0,0,0,3,0,3,83.39137,9.967326,0,70.4,663.25,663.25,1,1,1.098612,6.497152,0,3.258096,7.883446,0,0,0,70.4,9.08807,1.098612,4.113844,1 +17,4,25,0,3,428685,0,8848.094,5.84668,1,16,1,14.18745,0,0,0,0,14.18745,0,0,0,2,0,3,83.39137,9.967326,0,70.4,663.25,663.25,1,1,1.098612,6.497152,0,3.258096,7.883446,0,0,0,70.4,9.08807,1.098612,2.652358,1 +13,4,0,1,1,428695,0,19.35484,22.55168,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,84,3.4,0,94.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,94.3,3.013319,0,,0 +13,4,0,1,2,428695,0,19.35484,23.55168,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,84,3.4,0,94.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,94.3,3.013319,0,,0 +13,4,0,1,3,428695,0,19.35484,24.55168,1,12,1,61.33507,0,24.27395,0,335.4313,421.0403,1,0,0,1,2,1,84,3.4,0,94.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,94.3,3.013319,0,6.042728,1 +10,4,50,1,1,428728,0,6175.953,.8459959,0,14,1,14.81103,3.983657,0,0,0,18.79469,0,0,0,2,0,3,83.39137,9.967326,0,92.6,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,92.6,8.72858,1.098612,2.933574,1 +10,4,50,1,2,428728,0,6175.953,1.845996,0,14,1,5.625879,3.891233,0,0,0,9.517112,0,0,0,1,0,4,83.39137,9.967326,0,92.6,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,92.6,8.72858,1.386294,2.253091,1 +10,4,50,1,3,428728,0,6175.953,2.845996,0,14,1,5.159071,0,0,0,0,5.159071,0,0,0,1,0,4,83.39137,9.967326,0,92.6,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,92.6,8.72858,1.386294,1.640757,1 +10,4,50,1,1,428729,0,6175.953,25.7002,1,14,1,79.10112,12.38509,0,0,17642.7,17734.18,1,0,0,7,0,3,80.3,0,0,64.8,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,64.8,8.72858,1.098612,9.783249,1 +10,4,50,1,2,428729,0,6175.953,26.7002,1,14,1,15.00234,4.289733,29.6015,0,0,48.89358,0,0,0,1,1,4,80.3,0,0,64.8,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,64.8,8.72858,1.386294,3.889646,1 +10,4,50,1,3,428729,0,6175.953,27.7002,1,14,1,0,0,0,0,0,0,0,0,0,0,0,4,80.3,0,0,64.8,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,64.8,8.72858,1.386294,,0 +10,4,50,1,1,428730,0,6175.953,27.07461,0,16,1,63.42186,12.17569,7.150153,0,415.0511,497.7988,1,0,0,7,0,3,88.8,3.4,0,83,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,83,8.72858,1.098612,6.210196,1 +10,4,50,1,2,428730,0,6175.953,28.07461,0,16,1,73.48804,3.131739,34.2241,0,0,110.8439,0,0,0,3,1,4,88.8,3.4,0,83,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,83,8.72858,1.386294,4.708123,1 +10,4,50,1,3,428730,0,6175.953,29.07461,0,16,1,29.87962,1.096303,0,0,0,30.97592,0,0,0,1,0,4,88.8,3.4,0,83,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,83,8.72858,1.386294,3.43321,1 +6,4,25,1,1,428739,0,3407.038,26.29158,1,12,1,29.11134,0,27.57916,0,0,56.6905,0,0,0,2,0,3,62.2,24.1,1,51.1,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,51.1,8.133892,1.098612,4.037607,1 +6,4,25,1,2,428739,0,3407.038,27.29158,1,12,1,7.969995,6.549461,0,0,0,14.51946,0,0,0,1,0,3,62.2,24.1,1,51.1,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,51.1,8.133892,1.098612,2.675489,1 +6,4,25,1,3,428739,0,3407.038,28.29158,1,12,1,122.313,0,28.37489,0,0,150.6879,0,0,0,2,15,3,62.2,24.1,1,51.1,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,51.1,8.133892,1.098612,5.015211,1 +6,4,25,1,1,428740,0,3407.038,26.3217,0,7,1,181.9408,0,27.57916,0,0,209.5199,0,0,0,8,0,3,47.3,17.2,0,79.5,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,79.5,8.133892,1.098612,5.344819,1 +6,4,25,1,2,428740,0,3407.038,27.3217,0,7,1,104.4679,15.63526,0,0,0,120.1031,0,0,0,3,0,3,47.3,17.2,0,79.5,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,79.5,8.133892,1.098612,4.788351,1 +6,4,25,1,3,428740,0,3407.038,28.3217,0,7,1,265.4342,13.12554,0,51.59071,0,278.5598,0,0,4,6,6,3,47.3,17.2,0,79.5,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,79.5,8.133892,1.098612,5.629632,1 +6,4,25,1,1,428741,0,3407.038,3.474333,1,12,1,30.38815,3.166497,0,0,0,33.55465,0,0,0,2,0,3,83.39137,9.967326,0,88.9,700,700,1,1,1.098612,6.55108,0,3.258096,7.937375,0,0,0,88.9,8.133892,1.098612,3.513175,1 +6,4,25,1,2,428741,0,3407.038,4.474333,1,12,1,8.438819,0,0,0,0,8.438819,0,0,0,1,0,3,83.39137,9.967326,0,88.9,700,700,1,1,1.098612,6.55108,0,3.258096,7.937375,0,0,0,88.9,8.133892,1.098612,2.132842,1 +6,4,25,1,3,428741,0,3407.038,5.474333,1,12,1,26.87016,2.570937,0,0,0,29.4411,0,0,0,3,0,3,83.39137,9.967326,0,88.9,700,700,1,1,1.098612,6.55108,0,3.258096,7.937375,0,0,0,88.9,8.133892,1.098612,3.382392,1 +10,4,50,1,1,428758,0,3773.021,10.99521,1,11,1,18.34514,0,0,0,0,18.34514,0,0,0,1,0,4,86.7,9.967326,0,66.7,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,66.7,8.235896,1.386294,2.909365,1 +10,4,50,1,2,428758,0,3773.021,11.99521,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,9.967326,0,66.7,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,66.7,8.235896,1.386294,,0 +10,4,50,1,3,428758,0,3773.021,12.99521,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,9.967326,0,66.7,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,66.7,8.235896,1.386294,,0 +10,4,50,1,1,428759,0,3773.021,36.56126,1,11,1,10.12146,0,0,0,0,10.12146,0,0,0,1,0,4,87.2,10.3,1,76.1,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,76.1,8.235896,1.386294,2.314658,1 +10,4,50,1,2,428759,0,3773.021,37.56126,1,11,1,28.90443,0,0,0,0,28.90443,0,0,0,0,10,4,87.2,10.3,1,76.1,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,76.1,8.235896,1.386294,3.363995,1 +10,4,50,1,3,428759,0,3773.021,38.56126,1,11,1,76.95596,0,0,0,0,76.95596,0,0,0,0,22,4,87.2,10.3,1,76.1,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,76.1,8.235896,1.386294,4.343234,1 +10,4,50,1,1,428760,0,3773.021,13.62628,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,9.967326,0,81.5,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,81.5,8.235896,1.386294,,0 +10,4,50,1,2,428760,0,3773.021,14.62628,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,9.967326,0,81.5,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,81.5,8.235896,1.386294,,0 +10,4,50,1,3,428760,0,3773.021,15.62628,0,11,1,118.2086,0,0,0,0,118.2086,0,0,0,2,0,4,81.7,9.967326,0,81.5,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,81.5,8.235896,1.386294,4.772451,1 +10,4,50,1,1,428761,0,3773.021,15.72348,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,80.9,3.4,0,75,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,75,8.235896,1.386294,,0 +10,4,50,1,2,428761,0,3773.021,16.72348,1,11,1,8.391608,4.662004,0,0,0,13.05361,0,0,0,1,0,4,80.9,3.4,0,75,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,75,8.235896,1.386294,2.569065,1 +10,4,50,1,3,428761,0,3773.021,17.72348,1,11,1,16.24626,0,25.94699,0,0,42.19324,0,0,0,2,0,4,80.9,3.4,0,75,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,75,8.235896,1.386294,3.74226,1 +11,4,0,0,1,428773,0,4588.856,18.51061,1,11,1,25.75992,0,0,0,0,25.75992,0,0,0,4,0,3,81.9,0,0,83,0,0,0,0,1.098612,0,0,0,0,0,0,0,83,8.431604,1.098612,3.24882,1 +11,4,0,0,2,428773,0,4588.856,19.51061,1,11,1,86.52936,18.98201,0,0,589.9195,695.4308,1,0,0,5,0,3,81.9,0,0,83,0,0,0,0,1.098612,0,0,0,0,0,0,0,83,8.431604,1.098612,6.544531,1 +11,4,0,0,3,428773,0,4588.856,20.51061,1,11,1,34.02687,34.91547,22.10663,0,0,91.04898,0,0,0,1,1,4,81.9,0,0,83,0,0,0,0,1.386294,0,0,0,0,0,0,0,83,8.431604,1.386294,4.511398,1 +11,4,0,0,1,428774,0,4588.856,47.75907,0,12,1,407.5528,32.97269,0,0,926.2391,1366.765,1,0,0,21,6,3,83.5,13.8,1,67,0,0,0,0,1.098612,0,0,0,0,0,0,0,67,8.431604,1.098612,7.220201,1 +11,4,0,0,2,428774,0,4588.856,48.75907,0,12,1,317.2349,24.10038,0,0,0,341.3352,0,0,0,23,15,3,83.5,13.8,1,67,0,0,0,0,1.098612,0,0,0,0,0,0,0,67,8.431604,1.098612,5.832865,1 +11,4,0,0,3,428774,0,4588.856,49.75907,0,12,1,204.9198,60.01734,45.51365,0,0,310.4508,0,0,0,15,16,4,83.5,13.8,1,67,0,0,0,0,1.386294,0,0,0,0,0,0,0,67,8.431604,1.386294,5.738026,1 +11,4,0,0,1,428775,0,4588.856,16.34771,0,12,1,12.94693,0,0,0,0,12.94693,0,0,0,2,0,3,63.8,3.4,0,80.7,0,0,1,0,1.098612,0,0,0,0,0,0,0,80.7,8.431604,1.098612,2.560859,1 +11,4,0,0,2,428775,0,4588.856,17.34771,0,12,1,35.15625,0,0,0,0,35.15625,0,0,0,2,0,3,63.8,3.4,0,80.7,0,0,1,0,1.098612,0,0,0,0,0,0,0,80.7,8.431604,1.098612,3.559802,1 +11,4,0,0,3,428775,0,4588.856,18.34771,0,12,1,45.53533,1.30039,0,0,0,46.83572,0,0,0,2,0,4,63.8,3.4,0,80.7,0,0,0,0,1.386294,0,0,0,0,0,0,0,80.7,8.431604,1.386294,3.846646,1 +14,4,95,1,1,428779,0,2247.548,29.27036,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,49.5,0,0,69.3,350.75,385.84,0,0,0,5.955423,0,4.564348,5.911367,0,0,0,69.3,7.71804,0,,0 +14,4,95,1,2,428779,0,2247.548,30.27036,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,49.5,0,0,69.3,350.75,385.84,0,0,0,5.955423,0,4.564348,5.911367,0,0,0,69.3,7.71804,0,,0 +14,4,95,1,3,428779,0,2247.548,31.27036,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,49.5,0,0,69.3,350.75,385.84,0,0,0,5.955423,0,4.564348,5.911367,0,0,0,69.3,7.71804,0,,0 +15,4,95,1,1,428794,0,11196.48,42.99521,0,12,1,9.193054,0,0,0,0,9.193054,0,0,0,2,0,3,65.4,17.2,0,85.2,1000,975,0,0,1.098612,6.882438,0,4.564348,6.959049,1,0,0,85.2,9.323444,1.098612,2.218448,1 +15,4,95,1,2,428794,0,11196.48,43.99521,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,65.4,17.2,0,85.2,1000,975,0,0,1.098612,6.882438,0,4.564348,6.959049,1,0,0,85.2,9.323444,1.098612,,0 +15,4,95,1,3,428794,0,11196.48,44.99521,0,12,1,123.4953,5.528805,37.40327,232.1582,656.0146,822.442,1,0,15,4,5,3,65.4,17.2,0,85.2,1000,975,0,0,1.098612,6.882438,0,4.564348,6.959049,1,0,0,85.2,9.323444,1.098612,6.712278,1 +15,4,95,1,4,428794,0,11196.48,45.99521,0,12,1,0,1.256301,0,0,0,1.256301,0,0,0,0,0,3,65.4,17.2,0,85.2,1000,975,0,0,1.098612,6.882438,0,4.564348,6.959049,1,0,0,85.2,9.323444,1.098612,.2281716,1 +15,4,95,1,5,428794,0,11196.48,46.99521,0,12,1,475.7714,27.87686,22.64685,0,0,526.2951,0,0,0,5,5,3,65.4,17.2,0,85.2,1000,975,0,0,1.098612,6.882438,0,4.564348,6.959049,1,0,0,85.2,9.323444,1.098612,6.265862,1 +15,4,95,1,1,428795,0,11196.48,41.14442,1,12,1,78.58529,27.43616,37.79367,0,0,143.8151,0,0,0,5,2,3,42,34.5,1,46.6,1000,975,0,0,1.098612,6.882438,0,4.564348,6.959049,1,0,0,46.6,9.323444,1.098612,4.968529,1 +15,4,95,1,2,428795,0,11196.48,42.14442,1,12,1,73.83966,12.48476,0,0,0,86.32442,0,0,0,4,0,3,42,34.5,1,46.6,1000,975,0,0,1.098612,6.882438,0,4.564348,6.959049,1,0,0,46.6,9.323444,1.098612,4.458113,1 +15,4,95,1,3,428795,0,11196.48,43.14442,1,12,1,64.31642,17.2485,42.56234,404.1273,0,124.1273,0,0,25,5,1,3,42,34.5,1,46.6,1000,975,0,0,1.098612,6.882438,0,4.564348,6.959049,1,0,0,46.6,9.323444,1.098612,4.821307,1 +15,4,95,1,4,428795,0,11196.48,44.14442,1,12,1,104.3622,11.34548,.829779,46.52966,0,116.5374,0,0,3,4,0,3,42,34.5,1,46.6,1000,975,0,0,1.098612,6.882438,0,4.564348,6.959049,1,0,0,46.6,9.323444,1.098612,4.758213,1 +15,4,95,1,5,428795,0,11196.48,45.14442,1,12,1,399.1118,37.661,38.21656,226.4685,0,474.9894,0,0,16,11,1,3,42,34.5,1,46.6,1000,975,0,0,1.098612,6.882438,0,4.564348,6.959049,1,0,0,46.6,9.323444,1.098612,6.163292,1 +15,4,95,1,1,428797,0,11196.48,6.428473,1,12,1,7.660879,10.11236,0,0,0,17.77324,0,0,0,1,0,3,61.7,9.967326,0,92.6,1000,975,1,1,1.098612,6.882438,0,4.564348,6.959049,1,0,0,92.6,9.323444,1.098612,2.877694,1 +15,4,95,1,2,428797,0,11196.48,7.428473,1,12,1,17.34646,16.80263,0,0,0,34.14909,0,0,0,3,0,3,61.7,9.967326,0,92.6,1000,975,1,1,1.098612,6.882438,0,4.564348,6.959049,1,0,0,92.6,9.323444,1.098612,3.530736,1 +15,4,95,1,3,428797,0,11196.48,8.428473,1,12,1,43.42218,12.7773,0,60.18917,0,56.19949,0,0,4,4,1,3,61.7,9.967326,0,92.6,1000,975,1,1,1.098612,6.882438,0,4.564348,6.959049,1,0,0,92.6,9.323444,1.098612,4.028908,1 +15,4,95,1,4,428797,0,11196.48,9.428473,1,12,1,27.9178,23.07483,0,155.0989,0,50.99263,0,0,10,4,0,3,61.7,9.967326,0,92.6,1000,975,1,1,1.098612,6.882438,0,4.564348,6.959049,1,0,0,92.6,9.323444,1.098612,3.931681,1 +15,4,95,1,5,428797,0,11196.48,10.42847,1,12,1,14.862,10.35386,21.23142,297.2399,0,46.44728,0,0,21,1,1,3,61.7,9.967326,0,92.6,1000,975,1,1,1.098612,6.882438,0,4.564348,6.959049,1,0,0,92.6,9.323444,1.098612,3.838318,1 +18,4,25,1,1,428841,0,10476.25,10.423,0,18,1,44.51314,4.951056,0,0,0,49.4642,0,0,0,2,0,4,76.7,9.967326,1,63,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,63,9.256961,1.386294,3.901249,1 +18,4,25,1,2,428841,0,10476.25,11.423,0,18,1,34.68277,16.1553,0,0,0,50.83807,0,0,0,5,0,4,76.7,9.967326,1,63,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,63,9.256961,1.386294,3.928645,1 +18,4,25,1,3,428841,0,10476.25,12.423,0,18,1,114.4777,15.29259,0,0,0,129.7703,0,0,0,3,0,4,76.7,9.967326,1,63,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,63,9.256961,1.386294,4.865766,1 +18,4,25,1,4,428841,0,10476.25,13.423,0,18,1,5.907838,7.215439,0,0,0,13.12328,0,0,0,1,0,4,76.7,9.967326,1,63,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,63,9.256961,1.386294,2.574388,1 +18,4,25,1,5,428841,0,10476.25,14.423,0,18,1,0,2.729875,0,0,0,2.729875,0,0,0,0,0,4,76.7,9.967326,1,63,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,63,9.256961,1.386294,1.004256,1 +18,4,25,1,1,428842,0,10476.25,36.78576,0,12,1,9.27357,2.905719,0,0,309.3302,321.5095,1,0,0,2,0,4,94.7,0,0,71.6,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,71.6,9.256961,1.386294,5.773027,1 +18,4,25,1,2,428842,0,10476.25,37.78576,0,12,1,11.07955,0,0,0,0,11.07955,0,0,0,1,0,4,94.7,0,0,71.6,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,71.6,9.256961,1.386294,2.405101,1 +18,4,25,1,3,428842,0,10476.25,38.78576,0,12,1,15.17122,0,0,0,0,15.17122,0,0,0,1,0,4,94.7,0,0,71.6,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,71.6,9.256961,1.386294,2.7194,1 +18,4,25,1,4,428842,0,10476.25,39.78576,0,12,1,19.49586,0,0,0,0,19.49586,0,0,0,1,0,4,94.7,0,0,71.6,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,71.6,9.256961,1.386294,2.970202,1 +18,4,25,1,5,428842,0,10476.25,40.78576,0,12,1,42.21825,0,0,0,0,42.21825,0,0,0,2,0,4,94.7,0,0,71.6,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,71.6,9.256961,1.386294,3.742852,1 +18,4,25,1,1,428843,0,10476.25,33.79877,1,18,1,10.30397,4.229778,0,0,0,14.53375,0,0,0,2,0,4,87.4,17.2,0,86.4,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.256961,1.386294,2.676473,1 +18,4,25,1,2,428843,0,10476.25,34.79877,1,18,1,9.469697,2.064394,0,0,0,11.53409,0,0,0,1,0,4,87.4,17.2,0,86.4,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.256961,1.386294,2.445307,1 +18,4,25,1,3,428843,0,10476.25,35.79877,1,18,1,0,0,0,0,0,0,0,0,0,0,0,4,87.4,17.2,0,86.4,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.256961,1.386294,,0 +18,4,25,1,4,428843,0,10476.25,36.79877,1,18,1,5.907838,1.847184,14.57267,0,0,22.32769,0,0,0,1,0,4,87.4,17.2,0,86.4,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.256961,1.386294,3.105828,1 +18,4,25,1,5,428843,0,10476.25,37.79877,1,18,1,8.944544,0,13.95349,0,0,22.89803,0,0,0,1,0,4,87.4,17.2,0,86.4,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.256961,1.386294,3.131051,1 +18,4,25,1,1,428844,0,10476.25,8.741958,1,18,1,10.30397,0,0,0,0,10.30397,0,0,0,2,0,4,91.7,9.967326,0,96.3,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.256961,1.386294,2.332529,1 +18,4,25,1,2,428844,0,10476.25,9.741958,1,18,1,7.575758,1.794508,0,0,0,9.370265,0,0,0,1,0,4,91.7,9.967326,0,96.3,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.256961,1.386294,2.237541,1 +18,4,25,1,3,428844,0,10476.25,10.74196,1,18,1,13.87083,2.436064,32.94321,0,0,49.25011,0,0,0,2,0,4,91.7,9.967326,0,96.3,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.256961,1.386294,3.896912,1 +18,4,25,1,4,428844,0,10476.25,11.74196,1,18,1,11.81568,11.89839,0,0,0,23.71406,0,0,0,2,0,4,91.7,9.967326,0,96.3,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.256961,1.386294,3.166068,1 +18,4,25,1,5,428844,0,10476.25,12.74196,1,18,1,32.11091,0,0,0,0,32.11091,0,0,0,2,0,4,91.7,9.967326,0,96.3,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.256961,1.386294,3.469196,1 +5,4,25,0,1,428852,0,12791.2,33.89733,0,12,1,15.32176,5.020429,0,0,0,20.34219,0,0,0,1,0,4,69.7,13.8,0,77.3,750,937.08,0,0,1.386294,6.842769,0,3.258096,8.006368,1,0,0,77.3,9.456591,1.386294,3.012697,1 +5,4,25,0,2,428852,0,12791.2,34.89733,0,12,1,51.10173,16.71355,34.59916,0,0,102.4144,0,0,0,2,1,4,69.7,13.8,0,77.3,750,937.08,0,0,1.386294,6.842769,0,3.258096,8.006368,1,0,0,77.3,9.456591,1.386294,4.629028,1 +5,4,25,0,3,428852,0,12791.2,35.89733,0,12,1,12.89768,3.869303,0,0,0,16.76698,0,0,0,2,0,4,69.7,13.8,0,77.3,750,937.08,0,0,1.386294,6.842769,0,3.258096,8.006368,1,0,0,77.3,9.456591,1.386294,2.819412,1 +5,4,25,0,1,428853,0,12791.2,5.21013,0,16,1,48.26353,0,0,0,0,48.26353,0,0,0,2,0,4,96.7,9.967326,0,66.7,750,937.08,1,0,1.386294,6.842769,0,3.258096,8.006368,0,0,0,66.7,9.456591,1.386294,3.876676,1 +5,4,25,0,2,428853,0,12791.2,6.21013,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,96.7,9.967326,0,66.7,750,937.08,1,0,1.386294,6.842769,0,3.258096,8.006368,0,0,0,66.7,9.456591,1.386294,,0 +5,4,25,0,3,428853,0,12791.2,7.21013,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,96.7,9.967326,0,66.7,750,937.08,1,0,1.386294,6.842769,0,3.258096,8.006368,0,0,0,66.7,9.456591,1.386294,,0 +5,4,25,0,1,428854,0,12791.2,7.268994,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,85,9.967326,0,100,750,937.08,1,1,1.386294,6.842769,0,3.258096,8.006368,0,0,0,100,9.456591,1.386294,,0 +5,4,25,0,2,428854,0,12791.2,8.268993,1,16,1,242.8739,0,0,0,0,242.8739,0,0,0,2,0,4,85,9.967326,0,100,750,937.08,1,1,1.386294,6.842769,0,3.258096,8.006368,0,0,0,100,9.456591,1.386294,5.492542,1 +5,4,25,0,3,428854,0,12791.2,9.268993,1,16,1,21.49613,0,25.66638,0,0,47.16251,0,0,0,2,0,4,85,9.967326,0,100,750,937.08,1,1,1.386294,6.842769,0,3.258096,8.006368,0,0,0,100,9.456591,1.386294,3.853599,1 +5,4,25,0,1,428855,0,12791.2,33.67009,1,16,1,0,10.63841,0,0,0,10.63841,0,0,0,0,0,4,77.1,0,0,80.7,750,937.08,0,0,1.386294,6.842769,0,3.258096,8.006368,0,0,0,80.7,9.456591,1.386294,2.364471,1 +5,4,25,0,2,428855,0,12791.2,34.67009,1,16,1,59.42335,13.65213,25.31646,0,0,98.39194,0,0,0,2,1,4,77.1,0,0,80.7,750,937.08,0,0,1.386294,6.842769,0,3.258096,8.006368,0,0,0,80.7,9.456591,1.386294,4.588959,1 +5,4,25,0,3,428855,0,12791.2,35.67009,1,16,1,17.19691,0,0,0,0,17.19691,0,0,0,2,0,4,77.1,0,0,80.7,750,937.08,0,0,1.386294,6.842769,0,3.258096,8.006368,0,0,0,80.7,9.456591,1.386294,2.844729,1 +11,4,0,1,1,428859,0,3143.695,26.29706,1,14,1,37.38509,13.15117,2.757916,0,0,53.29418,0,0,0,4,0,2,74.5,31,1,54.5,0,0,0,0,.6931472,0,0,0,0,0,1,0,54.5,8.053473,.6931472,3.975827,1 +11,4,0,1,2,428859,0,3143.695,27.29706,1,14,1,31.76278,17.04641,0,457.1027,0,48.80919,0,0,39,2,0,2,74.5,31,1,54.5,0,0,0,0,.6931472,0,0,0,0,0,1,0,54.5,8.053473,.6931472,3.887918,1 +11,4,0,1,3,428859,0,3143.695,28.29706,1,14,1,108.9209,11.53052,3.495271,64.4884,0,123.9467,0,0,6,3,0,2,74.5,31,1,54.5,0,0,0,0,.6931472,0,0,0,0,0,1,0,54.5,8.053473,.6931472,4.819851,1 +11,4,0,1,1,428860,0,3143.695,27.17317,0,12,1,235.5975,2.860061,9.193054,0,0,247.6507,0,0,0,6,0,2,68.1,20.7,1,56.8,0,0,0,0,.6931472,0,0,0,0,0,1,0,56.8,8.053473,.6931472,5.512019,1 +11,4,0,1,2,428860,0,3143.695,28.17317,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,68.1,20.7,1,56.8,0,0,0,0,.6931472,0,0,0,0,0,1,0,56.8,8.053473,.6931472,,0 +11,4,0,1,3,428860,0,3143.695,29.17317,0,12,1,108.3405,0,0,0,0,108.3405,0,0,0,2,0,2,68.1,20.7,1,56.8,0,0,0,0,.6931472,0,0,0,0,0,1,0,56.8,8.053473,.6931472,4.685279,1 +16,4,95,1,1,428876,0,12817.01,14.5681,1,13,1,34.21859,3.830439,0,0,0,38.04903,0,0,0,1,0,6,40.4,13.8,1,48.9,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,48.9,9.458607,1.791759,3.638875,1 +16,4,95,1,2,428876,0,12817.01,15.5681,1,13,1,16.31505,0,0,0,0,16.31505,0,0,0,1,0,6,40.4,13.8,1,48.9,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,48.9,9.458607,1.791759,2.792088,1 +16,4,95,1,3,428876,0,12817.01,16.5681,1,13,1,33.21152,10.48151,0,94.04557,0,43.69304,0,0,7,3,0,6,40.4,13.8,1,48.9,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,48.9,9.458607,1.791759,3.777189,1 +16,4,95,1,1,428877,0,12817.01,9.445585,1,13,1,0,0,0,0,0,0,0,0,0,0,0,6,81.7,9.967326,0,59.3,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,59.3,9.458607,1.791759,,0 +16,4,95,1,2,428877,0,12817.01,10.44559,1,13,1,14.0647,0,0,0,0,14.0647,0,0,0,2,0,6,81.7,9.967326,0,59.3,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,59.3,9.458607,1.791759,2.643668,1 +16,4,95,1,3,428877,0,12817.01,11.44559,1,13,1,40.19777,2.768702,0,0,0,42.96646,0,0,0,1,0,6,81.7,9.967326,0,59.3,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,59.3,9.458607,1.791759,3.76042,1 +16,4,95,1,1,428878,0,12817.01,38.54346,0,18,1,0,0,0,0,0,0,0,0,0,0,0,6,73.4,3.4,0,81.8,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,81.8,9.458607,1.791759,,0 +16,4,95,1,2,428878,0,12817.01,39.54346,0,18,1,13.59587,0,0,24.61322,0,13.59587,0,0,3,1,0,6,73.4,3.4,0,81.8,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,81.8,9.458607,1.791759,2.609766,1 +16,4,95,1,3,428878,0,12817.01,40.54346,0,18,1,20.20636,2.274291,0,0,0,22.48065,0,0,0,2,0,6,73.4,3.4,0,81.8,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,81.8,9.458607,1.791759,3.112655,1 +16,4,95,1,1,428879,0,12817.01,11.42231,1,13,1,8.059244,0,0,0,0,8.059244,0,0,0,1,0,6,80,9.967326,0,77.8,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,77.8,9.458607,1.791759,2.08682,1 +16,4,95,1,2,428879,0,12817.01,12.42231,1,13,1,348.5935,5.011721,2.320675,0,0,355.9259,0,0,0,9,21,6,80,9.967326,0,77.8,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,77.8,9.458607,1.791759,5.874722,1 +16,4,95,1,3,428879,0,12817.01,13.42231,1,13,1,350.1978,3.710232,0,0,0,353.908,0,0,0,9,0,6,80,9.967326,0,77.8,1000,1000,1,1,1.791759,6.907755,0,4.564348,6.959049,0,0,0,77.8,9.458607,1.791759,5.869037,1 +16,4,95,1,1,428880,0,12817.01,37.21013,1,13,1,6.128703,74.05005,0,0,0,80.17876,0,0,0,1,0,6,56.9,10.3,1,68.2,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,68.2,9.458607,1.791759,4.384259,1 +16,4,95,1,2,428880,0,12817.01,38.21013,1,13,1,9.282701,68.31693,152.3676,24.61322,0,229.9672,0,0,3,0,0,6,56.9,10.3,1,68.2,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,68.2,9.458607,1.791759,5.437937,1 +16,4,95,1,3,428880,0,12817.01,39.21013,1,13,1,31.47034,49.75064,0,15.04729,0,81.22098,0,0,1,2,0,6,56.9,10.3,1,68.2,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,1,0,0,68.2,9.458607,1.791759,4.397173,1 +16,4,95,1,1,428881,0,12817.01,15.87406,0,13,1,146.4351,39.29009,0,0,0,185.7252,0,0,0,8,0,6,71.3,27.6,1,51.1,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,51.1,9.458607,1.791759,5.224268,1 +16,4,95,1,2,428881,0,12817.01,16.87406,0,13,1,96.92921,14.16315,0,0,0,111.0924,0,0,0,5,0,6,71.3,27.6,1,51.1,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,51.1,9.458607,1.791759,4.710362,1 +16,4,95,1,3,428881,0,12817.01,17.87406,0,13,1,11.60791,12.08083,0,0,0,23.68874,0,0,0,2,0,6,71.3,27.6,1,51.1,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,51.1,9.458607,1.791759,3.165,1 +16,4,95,1,1,428887,0,11250.44,43.26899,1,16,1,28.84615,1.518219,0,0,0,30.36437,0,0,0,3,0,2,65.4,3.4,1,60.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,60.7,9.328251,.6931472,3.41327,1 +16,4,95,1,2,428887,0,11250.44,44.26899,1,16,1,320.8811,0,0,0,0,320.8811,0,0,0,5,0,2,65.4,3.4,1,60.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,60.7,9.328251,.6931472,5.771071,1 +16,4,95,1,3,428887,0,11250.44,45.26899,1,16,1,9.405729,0,0,0,0,9.405729,0,0,0,1,0,2,65.4,3.4,1,60.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,60.7,9.328251,.6931472,2.241319,1 +16,4,95,1,4,428887,0,11250.44,46.26899,1,16,1,28.82398,0,0,0,0,28.82398,0,0,0,4,0,2,65.4,3.4,1,60.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,60.7,9.328251,.6931472,3.361208,1 +16,4,95,1,5,428887,0,11250.44,47.26899,1,16,1,22.83105,21.59817,0,0,0,44.42922,0,0,0,3,0,2,65.4,3.4,1,60.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,60.7,9.328251,.6931472,3.793897,1 +16,4,95,1,1,428888,0,11250.44,57.79055,0,12,1,15.18219,0,0,0,0,15.18219,0,0,0,1,0,2,62.8,10.3,1,55.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,55.7,9.328251,.6931472,2.720123,1 +16,4,95,1,2,428888,0,11250.44,58.79055,0,12,1,22.37762,5.869464,0,0,0,28.24709,0,0,0,2,0,2,62.8,10.3,1,55.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,55.7,9.328251,.6931472,3.34099,1 +16,4,95,1,3,428888,0,11250.44,59.79055,0,12,1,0,5.981189,0,0,0,5.981189,0,0,0,0,0,2,62.8,10.3,1,55.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,55.7,9.328251,.6931472,1.788619,1 +16,4,95,1,4,428888,0,11250.44,60.79055,0,12,1,23.05919,0,0,0,0,23.05919,0,0,0,1,0,2,62.8,10.3,1,55.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,55.7,9.328251,.6931472,3.138064,1 +16,4,95,1,5,428888,0,11250.44,61.79055,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,62.8,10.3,1,55.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,55.7,9.328251,.6931472,,0 +13,4,0,0,1,428897,0,7910.823,4.799452,0,13,1,5.107252,1.430031,0,0,0,6.537283,0,0,0,1,0,5,85,9.967326,0,66.7,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.976113,1.609438,1.877522,1 +13,4,0,0,2,428897,0,7910.823,5.799452,0,13,1,8.570089,1.69714,0,0,0,10.26723,0,0,0,1,0,5,85,9.967326,0,66.7,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.976113,1.609438,2.328957,1 +13,4,0,0,3,428897,0,7910.823,6.799452,0,13,1,5.159071,0,0,0,0,5.159071,0,0,0,1,0,5,85,9.967326,0,66.7,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.976113,1.609438,1.640757,1 +13,4,0,0,4,428897,0,7910.823,7.799452,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,85,9.967326,0,66.7,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.976113,1.609438,,0 +13,4,0,0,5,428897,0,7910.823,8.799453,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,85,9.967326,0,66.7,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.976113,1.609438,,0 +13,4,0,0,1,428898,0,7910.823,28.87064,0,12,1,103.9326,30.4903,0,0,0,134.4229,0,0,0,18,0,5,66,17.2,0,47.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,47.7,8.976113,1.609438,4.90099,1 +13,4,0,0,2,428898,0,7910.823,29.87064,0,12,1,88.37318,8.940459,0,0,384.9039,482.2175,1,0,0,13,0,5,66,17.2,0,47.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,47.7,8.976113,1.609438,6.178395,1 +13,4,0,0,3,428898,0,7910.823,30.87064,0,12,1,18.05675,0,0,27.94497,0,18.05675,0,0,5,4,0,5,66,17.2,0,47.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,47.7,8.976113,1.609438,2.89352,1 +13,4,0,0,4,428898,0,7910.823,31.87064,0,12,1,5.816208,11.24855,0,0,0,17.06475,0,0,0,1,0,5,66,17.2,0,47.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,47.7,8.976113,1.609438,2.837015,1 +13,4,0,0,5,428898,0,7910.823,32.87064,0,12,1,47.2753,0,0,0,0,47.2753,0,0,0,2,0,5,66,17.2,0,47.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,47.7,8.976113,1.609438,3.855988,1 +13,4,0,0,1,428899,0,7910.823,6.658453,0,13,1,12.25741,15.143,0,45.96527,775.8121,803.2125,1,0,3,2,0,5,75,9.967326,0,59.3,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,59.3,8.976113,1.609438,6.688619,1 +13,4,0,0,2,428899,0,7910.823,7.658453,0,13,1,0,4.805439,0,56.25879,0,4.805439,0,0,5,0,0,5,75,9.967326,0,59.3,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,59.3,8.976113,1.609438,1.569748,1 +13,4,0,0,3,428899,0,7910.823,8.658453,0,13,1,5.159071,0,0,453.5684,0,5.159071,0,0,33,1,0,5,75,9.967326,0,59.3,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,59.3,8.976113,1.609438,1.640757,1 +13,4,0,0,4,428899,0,7910.823,9.658453,0,13,1,326.8476,2.074447,0,0,0,328.9221,0,0,0,7,0,5,75,9.967326,0,59.3,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,59.3,8.976113,1.609438,5.795821,1 +13,4,0,0,5,428899,0,7910.823,10.65845,0,13,1,5.307856,0,0,0,0,5.307856,0,0,0,1,0,5,75,9.967326,0,59.3,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,59.3,8.976113,1.609438,1.669188,1 +13,4,0,0,1,428900,0,7910.823,.8514716,1,13,1,11.23596,8.743616,0,0,0,19.97957,0,0,0,2,0,5,83.39137,9.967326,0,92.6,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.976113,1.609438,2.99471,1 +13,4,0,0,2,428900,0,7910.823,1.851472,1,13,1,0,3.10361,0,0,0,3.10361,0,0,0,0,0,5,83.39137,9.967326,0,92.6,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.976113,1.609438,1.132566,1 +13,4,0,0,3,428900,0,7910.823,2.851472,1,13,1,5.159071,0,0,0,0,5.159071,0,0,0,1,0,5,83.39137,9.967326,0,92.6,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.976113,1.609438,1.640757,1 +13,4,0,0,4,428900,0,7910.823,3.851472,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,83.39137,9.967326,0,92.6,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.976113,1.609438,,0 +13,4,0,0,5,428900,0,7910.823,4.851471,1,13,1,5.307856,0,0,0,0,5.307856,0,0,0,1,0,5,83.39137,9.967326,0,92.6,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.976113,1.609438,1.669188,1 +13,4,0,0,1,428901,0,7910.823,28.00274,1,13,1,16.34321,4.019408,0,15.32176,0,20.36262,0,0,1,2,0,5,45.2,41.4,0,53.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,53.4,8.976113,1.609438,3.013701,1 +13,4,0,0,2,428901,0,7910.823,29.00274,1,13,1,235.1617,3.187998,0,0,0,238.3497,0,0,0,3,0,5,45.2,41.4,0,53.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,53.4,8.976113,1.609438,5.473739,1 +13,4,0,0,3,428901,0,7910.823,30.00274,1,13,1,0,6.006019,0,40.84265,0,6.006019,0,0,7,0,0,5,45.2,41.4,0,53.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,53.4,8.976113,1.609438,1.792762,1 +13,4,0,0,4,428901,0,7910.823,31.00274,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,45.2,41.4,0,53.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,53.4,8.976113,1.609438,,0 +13,4,0,0,5,428901,0,7910.823,32.00274,1,13,1,12.385,0,0,0,0,12.385,0,0,0,1,0,5,45.2,41.4,0,53.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,53.4,8.976113,1.609438,2.516486,1 +13,4,0,1,1,428950,0,9677.419,34.39014,0,14,1,119.1113,20.27069,0,10.72523,380.5261,519.9081,1,0,1,8,0,3,72.3,10.3,0,55.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,55.7,9.177654,1.098612,6.253652,1 +13,4,0,1,2,428950,0,9677.419,35.39014,0,14,1,25.78528,10.07032,0,0,0,35.8556,0,0,0,3,0,3,72.3,10.3,0,55.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,55.7,9.177654,1.098612,3.5795,1 +13,4,0,1,3,428950,0,9677.419,36.39014,0,14,1,195.3998,0,0,0,0,195.3998,0,0,0,4,0,3,72.3,10.3,0,55.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,55.7,9.177654,1.098612,5.275048,1 +13,4,0,1,1,428951,0,9677.419,7.534565,1,16,1,3.064351,0,0,0,0,3.064351,0,0,0,1,0,3,85,9.967326,0,96.3,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.177654,1.098612,1.119836,1 +13,4,0,1,2,428951,0,9677.419,8.534565,1,16,1,0,1.870605,0,0,0,1.870605,0,0,0,0,0,3,85,9.967326,0,96.3,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.177654,1.098612,.6262618,1 +13,4,0,1,3,428951,0,9677.419,9.534565,1,16,1,8.598453,0,0,0,0,8.598453,0,0,0,1,0,3,85,9.967326,0,96.3,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,96.3,9.177654,1.098612,2.151582,1 +13,4,0,1,1,428952,0,9677.419,33.00479,1,16,1,65.29111,112.666,0,32.17569,0,177.9571,0,0,3,2,1,3,51.1,10.3,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,64.8,9.177654,1.098612,5.181542,1 +13,4,0,1,2,428952,0,9677.419,34.00479,1,16,1,46.88232,68.21378,0,21.56587,0,115.0961,0,0,2,2,0,3,51.1,10.3,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,64.8,9.177654,1.098612,4.745768,1 +13,4,0,1,3,428952,0,9677.419,35.00479,1,16,1,72.87188,92.06792,0,20.63629,0,164.9398,0,0,2,2,0,3,51.1,10.3,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,64.8,9.177654,1.098612,5.105581,1 +7,4,25,1,1,428968,0,8657.478,44.20534,1,12,1,94.20837,82.05312,33.19714,0,0,209.4586,0,0,0,7,1,3,71.8,20.7,0,62.5,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,1,0,0,62.5,9.066294,1.098612,5.344526,1 +7,4,25,1,2,428968,0,8657.478,45.20534,1,12,1,51.45335,66.79794,20.62822,0,0,138.8795,0,0,0,3,1,3,71.8,20.7,0,62.5,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,1,0,0,62.5,9.066294,1.098612,4.933607,1 +7,4,25,1,3,428968,0,8657.478,46.20534,1,12,1,46.21668,38.83491,41.27257,0,0,126.3242,0,0,0,4,1,3,71.8,20.7,0,62.5,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,1,0,0,62.5,9.066294,1.098612,4.838851,1 +7,4,25,1,1,428969,0,8657.478,19.07187,1,12,1,20.42901,9.305413,0,0,0,29.73442,0,0,0,1,1,3,73.4,3.4,0,60.2,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,1,0,0,60.2,9.066294,1.098612,3.392305,1 +7,4,25,1,2,428969,0,8657.478,20.07187,1,12,1,18.75293,10.2391,15.00234,0,0,43.99437,0,0,0,1,1,3,73.4,3.4,0,60.2,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,1,0,0,60.2,9.066294,1.098612,3.784062,1 +7,4,25,1,3,428969,0,8657.478,21.07187,1,12,1,27.08512,0,0,0,0,27.08512,0,0,0,1,0,3,73.4,3.4,0,60.2,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,1,0,0,60.2,9.066294,1.098612,3.298985,1 +7,4,25,1,1,428970,0,8657.478,56.71184,0,8,1,75.74055,0,0,0,0,75.74055,0,0,0,3,7,3,75.5,13.8,0,80.7,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,1,0,0,80.7,9.066294,1.098612,4.327314,1 +7,4,25,1,2,428970,0,8657.478,57.71184,0,8,1,148.7576,14.45851,42.19409,0,0,205.4102,0,0,0,3,12,3,75.5,13.8,0,80.7,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,1,0,0,80.7,9.066294,1.098612,5.325009,1 +7,4,25,1,3,428970,0,8657.478,58.71184,0,8,1,465.2321,33.55116,26.6552,0,792.3345,1317.773,1,0,0,14,1,3,75.5,13.8,0,80.7,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,1,0,0,80.7,9.066294,1.098612,7.183699,1 +18,4,25,0,1,428990,0,11971.26,15.00068,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,84.6,3.4,0,72.7,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,72.7,9.390347,1.386294,,0 +18,4,25,0,2,428990,0,11971.26,16.00068,1,13,1,5.594406,0,0,0,0,5.594406,0,0,0,1,0,4,84.6,3.4,0,72.7,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,72.7,9.390347,1.386294,1.721767,1 +18,4,25,0,3,428990,0,11971.26,17.00068,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,84.6,3.4,0,72.7,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,72.7,9.390347,1.386294,,0 +18,4,25,0,1,428991,0,11971.26,44.94182,0,13,1,88.10728,48.81579,0,0,0,136.9231,0,0,0,6,0,4,62.2,0,0,54.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.390347,1.386294,4.919419,1 +18,4,25,0,2,428991,0,11971.26,45.94182,0,13,1,13.98601,17.17016,2.331002,0,0,33.48718,0,0,0,1,0,4,62.2,0,0,54.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.390347,1.386294,3.511163,1 +18,4,25,0,3,428991,0,11971.26,46.94182,0,13,1,80.07696,42.13339,25.22445,0,0,147.4348,0,0,0,4,1,4,62.2,0,0,54.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.390347,1.386294,4.993386,1 +18,4,25,0,1,428992,0,11971.26,19.44969,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,76.6,3.4,0,75,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,75,9.390347,1.386294,,0 +18,4,25,0,2,428992,0,11971.26,20.44969,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,76.6,3.4,0,75,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,75,9.390347,1.386294,,0 +18,4,25,0,3,428992,0,11971.26,21.44969,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,76.6,3.4,0,75,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,75,9.390347,1.386294,,0 +18,4,25,0,1,428994,0,11971.26,44.0575,1,13,1,10.12146,0,0,0,0,10.12146,0,0,0,1,0,4,85.6,6.9,0,73.9,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,73.9,9.390347,1.386294,2.314658,1 +18,4,25,0,2,428994,0,11971.26,45.0575,1,13,1,11.65501,0,43.82285,0,0,55.47786,0,0,0,0,1,4,85.6,6.9,0,73.9,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,73.9,9.390347,1.386294,4.015984,1 +18,4,25,0,3,428994,0,11971.26,46.0575,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,85.6,6.9,0,73.9,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,73.9,9.390347,1.386294,,0 +11,4,0,1,1,428995,0,6840.469,9.538672,0,16,1,48.26353,0,5.107252,0,0,53.37078,0,0,0,3,0,4,96.7,9.967326,0,100,0,0,1,0,1.386294,0,0,0,0,0,0,0,100,8.830758,1.386294,3.977263,1 +11,4,0,1,2,428995,0,6840.469,10.53867,0,16,1,22.97234,1.945616,0,0,0,24.91796,0,0,0,3,0,4,96.7,9.967326,0,100,0,0,1,0,1.386294,0,0,0,0,0,0,0,100,8.830758,1.386294,3.215589,1 +11,4,0,1,3,428995,0,6840.469,11.53867,0,16,1,84.37231,0,0,0,0,84.37231,0,0,0,6,0,4,96.7,9.967326,0,100,0,0,1,0,1.386294,0,0,0,0,0,0,0,100,8.830758,1.386294,4.435239,1 +11,4,0,1,1,428996,0,6840.469,5.270363,1,16,1,14.30031,2.298264,0,0,0,16.59857,0,0,0,3,0,4,93.3,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,8.830758,1.386294,2.809317,1 +11,4,0,1,2,428996,0,6840.469,6.270363,1,16,1,44.06939,0,21.33146,0,0,65.40084,0,0,0,3,2,4,93.3,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,8.830758,1.386294,4.180535,1 +11,4,0,1,3,428996,0,6840.469,7.270363,1,16,1,20.46432,2.063628,0,0,0,22.52794,0,0,0,3,0,4,93.3,9.967326,0,92.6,0,0,1,1,1.386294,0,0,0,0,0,0,0,92.6,8.830758,1.386294,3.114757,1 +11,4,0,1,1,428997,0,6840.469,37.07871,1,16,1,18.89683,0,0,0,0,18.89683,0,0,0,2,0,4,90.4,3.4,0,89.8,0,0,0,0,1.386294,0,0,0,0,0,0,0,89.8,8.830758,1.386294,2.938994,1 +11,4,0,1,2,428997,0,6840.469,38.07871,1,16,1,11.72058,0,26.95734,0,0,38.67792,0,0,0,1,0,4,90.4,3.4,0,89.8,0,0,0,0,1.386294,0,0,0,0,0,0,0,89.8,8.830758,1.386294,3.655269,1 +11,4,0,1,3,428997,0,6840.469,39.07871,1,16,1,114.4884,0,0,0,0,114.4884,0,0,0,4,0,4,90.4,3.4,0,89.8,0,0,0,0,1.386294,0,0,0,0,0,0,0,89.8,8.830758,1.386294,4.740473,1 +11,4,0,1,1,428998,0,6840.469,38.89938,0,16,1,31.66496,0,27.57916,0,0,59.24413,0,0,0,2,1,4,92,0,0,96.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,96.6,8.830758,1.386294,4.081666,1 +11,4,0,1,2,428998,0,6840.469,39.89938,0,16,1,135.1383,2.62541,0,0,1641.843,1779.606,1,0,0,5,0,4,92,0,0,96.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,96.6,8.830758,1.386294,7.484148,1 +11,4,0,1,3,428998,0,6840.469,40.89938,0,16,1,185.5116,0,0,0,0,185.5116,0,0,0,4,0,4,92,0,0,96.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,96.6,8.830758,1.386294,5.223117,1 +11,4,0,1,1,429004,0,3774.194,5.24846,0,14,1,8.171603,9.065372,0,0,0,17.23698,0,0,0,2,0,3,83.3,9.967326,0,77.8,0,0,1,0,1.098612,0,0,0,0,0,0,0,77.8,8.236207,1.098612,2.847057,1 +11,4,0,1,2,429004,0,3774.194,6.24846,0,14,1,52.62541,4.336615,0,0,0,56.96202,0,0,0,1,0,3,83.3,9.967326,0,77.8,0,0,1,0,1.098612,0,0,0,0,0,0,0,77.8,8.236207,1.098612,4.042385,1 +11,4,0,1,3,429004,0,3774.194,7.24846,0,14,1,0,6.233878,0,0,0,6.233878,0,0,0,0,0,3,83.3,9.967326,0,77.8,0,0,1,0,1.098612,0,0,0,0,0,0,0,77.8,8.236207,1.098612,1.829999,1 +11,4,0,1,1,429005,0,3774.194,38.75702,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,87.2,3.4,0,69.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,69.3,8.236207,1.098612,,0 +11,4,0,1,2,429005,0,3774.194,39.75702,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,87.2,3.4,0,69.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,69.3,8.236207,1.098612,,0 +11,4,0,1,3,429005,0,3774.194,40.75702,0,16,1,31.16939,1.074807,23.64574,0,0,55.88994,0,0,0,1,1,3,87.2,3.4,0,69.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,69.3,8.236207,1.098612,4.023385,1 +11,4,0,1,1,429006,0,3774.194,32.70636,1,14,1,18.13074,1.225741,0,0,0,19.35649,0,0,0,1,0,3,84,6.9,0,70.5,0,0,0,0,1.098612,0,0,0,0,0,0,0,70.5,8.236207,1.098612,2.963027,1 +11,4,0,1,2,429006,0,3774.194,33.70636,1,14,1,18.75293,0,0,0,0,18.75293,0,0,0,1,0,3,84,6.9,0,70.5,0,0,0,0,1.098612,0,0,0,0,0,0,0,70.5,8.236207,1.098612,2.93135,1 +11,4,0,1,3,429006,0,3774.194,34.70636,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,84,6.9,0,70.5,0,0,0,0,1.098612,0,0,0,0,0,0,0,70.5,8.236207,1.098612,,0 +5,4,25,1,1,429013,0,11728.45,30.36824,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,76.6,3.4,0,84.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,84.1,9.369858,.6931472,,0 +5,4,25,1,2,429013,0,11728.45,31.36824,0,12,1,9.324009,2.610723,25.40792,0,0,37.34266,0,0,0,1,0,2,76.6,3.4,0,84.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,84.1,9.369858,.6931472,3.620136,1 +5,4,25,1,3,429013,0,11728.45,32.36824,0,12,1,437.3407,3.279179,0,0,0,440.6199,0,0,0,5,0,2,76.6,3.4,0,84.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,84.1,9.369858,.6931472,6.088182,1 +5,4,25,1,1,429014,0,11728.45,26.65298,1,12,1,161.8573,5.865385,0,0,0,167.7227,0,0,0,2,0,2,86.2,6.9,0,77.3,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,77.3,9.369858,.6931472,5.122312,1 +5,4,25,1,2,429014,0,11728.45,27.65298,1,12,1,310.6713,4.424242,0,0,0,315.0956,0,0,0,4,0,2,86.2,6.9,0,77.3,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,77.3,9.369858,.6931472,5.752876,1 +5,4,25,1,3,429014,0,11728.45,28.65298,1,12,1,82.53527,5.515177,0,0,0,88.05045,0,0,0,1,0,2,86.2,6.9,0,77.3,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,77.3,9.369858,.6931472,4.47791,1 +11,4,0,1,1,429015,0,913.783,27.10746,1,16,1,422.4626,56.13086,81.26739,141.6796,0,559.8609,0,0,11,5,62,1,83.6,34.5,1,53.4,0,0,0,0,0,0,0,0,0,1,0,0,53.4,6.818687,0,6.327688,1 +11,4,0,1,2,429015,0,913.783,28.10746,1,16,1,354.6401,6.387311,13.35701,0,0,374.3845,0,0,0,9,45,1,83.6,34.5,1,53.4,0,0,0,0,0,0,0,0,0,1,0,0,53.4,6.818687,0,5.925283,1 +11,4,0,1,3,429015,0,913.783,29.10746,1,16,1,855.0065,0,34.52536,0,0,889.5319,0,0,0,44,59,1,83.6,34.5,1,53.4,0,0,0,0,0,0,0,0,0,1,0,0,53.4,6.818687,0,6.790695,1 +11,4,0,1,4,429015,0,913.783,30.10746,1,16,1,1303.111,103.0248,16.4041,384.0095,2033.367,3455.908,1,0,18,76,68,1,83.6,34.5,1,53.4,0,0,0,0,0,0,0,0,0,1,0,0,53.4,6.818687,0,8.14784,1 +11,4,0,1,5,429015,0,913.783,31.10746,1,16,1,1209.589,48.20751,39.93202,844.3649,0,1297.728,0,0,54,77,42,1,83.6,34.5,1,53.4,0,0,0,0,0,0,0,0,0,1,0,0,53.4,6.818687,0,7.16837,1 +11,4,0,1,1,429016,0,469.2082,26.99795,0,16,1,19.19114,13.06028,34.13704,0,0,66.38846,0,0,0,1,1,1,83.5,17.2,1,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,6.153176,0,4.195523,1 +11,4,0,1,2,429016,0,469.2082,27.99795,0,16,1,17.75568,0,16.07955,0,0,33.83523,0,0,0,1,0,1,83.5,17.2,1,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,6.153176,0,3.521502,1 +11,4,0,1,3,429016,0,469.2082,28.99795,0,16,1,386.4326,80.84525,27.30819,0,455.6784,950.2644,1,0,0,8,45,1,83.5,17.2,1,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,6.153176,0,6.85674,1 +11,4,0,1,4,429016,0,469.2082,29.99795,0,16,1,393.8558,41.63844,0,0,0,435.4943,0,0,0,25,17,1,83.5,17.2,1,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,6.153176,0,6.076482,1 +11,4,0,1,5,429016,0,469.2082,30.99795,0,16,1,130.5903,46.74061,26.61896,0,0,203.9499,0,0,0,12,0,1,83.5,17.2,1,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,6.153176,0,5.317874,1 +19,4,25,1,1,429032,0,5390.029,37.2512,0,12,1,10.2145,0,22.47191,0,0,32.68641,0,0,0,1,0,5,64.4,10.3,0,83,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,83,8.592491,1.609438,3.486959,1 +19,4,25,1,2,429032,0,5390.029,38.2512,0,12,1,59.42335,10.79231,0,0,0,70.21566,0,0,0,5,0,5,64.4,10.3,0,83,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,83,8.592491,1.609438,4.251571,1 +19,4,25,1,3,429032,0,5390.029,39.2512,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,64.4,10.3,0,83,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,83,8.592491,1.609438,,0 +19,4,25,1,1,429033,0,5390.029,11.54004,0,12,1,229.7804,0,0,0,0,229.7804,0,0,0,4,0,5,85,9.967326,0,55.6,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,55.6,8.592491,1.609438,5.437124,1 +19,4,25,1,2,429033,0,5390.029,12.54004,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,85,9.967326,0,55.6,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,55.6,8.592491,1.609438,,0 +19,4,25,1,3,429033,0,5390.029,13.54004,0,12,1,36.15649,1.564918,0,0,0,37.72141,0,0,0,4,0,5,85,9.967326,0,55.6,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,55.6,8.592491,1.609438,3.630228,1 +19,4,25,1,1,429034,0,5390.029,3.542779,0,12,1,0,1.261491,0,0,0,1.261491,0,0,0,0,0,5,83.39137,9.967326,0,96.3,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.592491,1.609438,.2322946,1 +19,4,25,1,2,429034,0,5390.029,4.542779,0,12,1,13.12705,0,0,0,0,13.12705,0,0,0,2,0,5,83.39137,9.967326,0,96.3,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.592491,1.609438,2.574675,1 +19,4,25,1,3,429034,0,5390.029,5.542779,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83.39137,9.967326,0,96.3,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.592491,1.609438,,0 +19,4,25,1,1,429035,0,5390.029,33.58522,1,12,1,20.42901,2.911134,34.21859,0,0,57.55873,0,0,0,1,1,5,85.6,6.9,0,81,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,81,8.592491,1.609438,4.052806,1 +19,4,25,1,2,429035,0,5390.029,34.58522,1,12,1,39.09986,4.739803,0,0,0,43.83966,0,0,0,3,1,5,85.6,6.9,0,81,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,81,8.592491,1.609438,3.780539,1 +19,4,25,1,3,429035,0,5390.029,35.58522,1,12,1,29.9871,0,0,0,0,29.9871,0,0,0,2,0,5,85.6,6.9,0,81,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,81,8.592491,1.609438,3.400767,1 +19,4,25,1,1,429036,0,5390.029,8.799453,0,12,1,17.87538,2.206333,0,0,0,20.08172,0,0,0,2,0,5,80,9.967326,0,70.4,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,70.4,8.592491,1.609438,2.99981,1 +19,4,25,1,2,429036,0,5390.029,9.799453,0,12,1,13.12705,2.906704,0,0,0,16.03375,0,0,0,1,0,5,80,9.967326,0,70.4,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,70.4,8.592491,1.609438,2.774696,1 +19,4,25,1,3,429036,0,5390.029,10.79945,0,12,1,160.6836,2.575237,7.953568,0,0,171.2124,0,0,0,5,1,5,80,9.967326,0,70.4,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,70.4,8.592491,1.609438,5.142905,1 +11,4,0,0,1,429037,0,2692.669,50.02053,1,11,1,12.76813,107.5843,43.41164,102.145,0,163.764,0,0,5,2,0,1,87.8,13.8,0,69.3,0,0,0,0,0,0,0,0,0,1,0,0,69.3,7.898659,0,5.098427,1 +11,4,0,0,2,429037,0,2692.669,51.02053,1,11,1,16.29161,86.376,0,86.7323,1184.06,1286.728,1,0,5,0,0,1,87.8,13.8,0,69.3,0,0,0,0,0,0,0,0,0,1,0,0,69.3,7.898659,0,7.159858,1 +11,4,0,0,3,429037,0,2692.669,52.02053,1,11,1,18.59415,79.15735,42.56234,174.1187,881.8788,1022.193,1,0,11,3,0,1,87.8,13.8,0,69.3,0,0,0,0,0,0,0,0,0,1,0,0,69.3,7.898659,0,6.929705,1 +11,4,0,0,4,429037,0,2692.669,53.02053,1,11,1,0,142.9314,0,164.7926,0,142.9314,0,0,9,0,0,1,87.8,13.8,0,69.3,0,0,0,0,0,0,0,0,0,1,0,0,69.3,7.898659,0,4.962365,1 +11,4,0,0,5,429037,0,2692.669,54.02053,1,11,1,52.7247,119.2074,0,123.85,0,171.9321,0,0,7,5,0,1,87.8,13.8,0,69.3,0,0,0,0,0,0,0,0,0,1,0,0,69.3,7.898659,0,5.147099,1 +7,4,25,1,1,429051,0,6239.296,28.94182,0,16,1,67.92645,4.759959,0,0,0,72.68642,0,0,0,3,0,1,75,6.9,0,81.8,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,81.8,8.738783,0,4.286155,1 +7,4,25,1,2,429051,0,6239.296,29.94182,0,16,1,146.4557,1.561181,0,0,0,148.0169,0,0,0,10,0,1,75,6.9,0,81.8,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,81.8,8.738783,0,4.997326,1 +7,4,25,1,3,429051,0,6239.296,30.94182,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,75,6.9,0,81.8,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,81.8,8.738783,0,,0 +7,4,25,1,1,429052,0,4645.161,24.70637,0,12,1,72.36842,0,3.669028,0,0,76.03745,0,0,0,18,0,1,63.8,27.6,0,76.1,900,900,0,0,0,6.802395,0,3.258096,8.188689,0,0,0,76.1,8.443796,0,4.331226,1 +7,4,25,1,2,429052,0,4645.161,25.70637,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,63.8,27.6,0,76.1,900,900,0,0,0,6.802395,0,3.258096,8.188689,0,0,0,76.1,8.443796,0,,0 +7,4,25,1,3,429052,0,4645.161,26.70637,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,63.8,27.6,0,76.1,900,900,0,0,0,6.802395,0,3.258096,8.188689,0,0,0,76.1,8.443796,0,,0 +11,4,0,1,1,429053,0,7886.804,5.423682,0,12,1,36.31256,.9959142,0,0,0,37.30848,0,0,0,1,0,3,85,9.967326,0,96.3,0,0,1,0,1.098612,0,0,0,0,0,0,0,96.3,8.973073,1.098612,3.619221,1 +11,4,0,1,2,429053,0,7886.804,6.423682,0,12,1,6.563526,4.195968,0,0,0,10.75949,0,0,0,1,0,3,85,9.967326,0,96.3,0,0,1,0,1.098612,0,0,0,0,0,0,0,96.3,8.973073,1.098612,2.375788,1 +11,4,0,1,3,429053,0,7886.804,7.423682,0,12,1,18.27171,0,0,0,0,18.27171,0,0,0,2,0,3,85,9.967326,0,96.3,0,0,1,0,1.098612,0,0,0,0,0,0,0,96.3,8.973073,1.098612,2.905354,1 +11,4,0,1,4,429053,0,7886.804,8.423682,0,12,1,10.46917,4.245831,0,0,502.5979,517.3129,1,0,0,2,0,3,85,9.967326,0,96.3,0,0,1,0,1.098612,0,0,0,0,0,0,0,96.3,8.973073,1.098612,6.248648,1 +11,4,0,1,5,429053,0,7886.804,9.423682,0,12,1,15.56971,0,0,0,0,15.56971,0,0,0,3,0,3,85,9.967326,0,96.3,0,0,1,0,1.098612,0,0,0,0,0,0,0,96.3,8.973073,1.098612,2.745327,1 +11,4,0,1,1,429054,0,7886.804,24.84873,1,12,1,22.98264,0,32.68641,0,0,55.66905,0,0,0,2,0,3,84.6,13.8,0,92,0,0,0,0,1.098612,0,0,0,0,1,0,0,92,8.973073,1.098612,4.019424,1 +11,4,0,1,2,429054,0,7886.804,25.84873,1,12,1,60.59541,0,0,0,0,60.59541,0,0,0,1,0,3,84.6,13.8,0,92,0,0,0,0,1.098612,0,0,0,0,1,0,0,92,8.973073,1.098612,4.104219,1 +11,4,0,1,3,429054,0,7886.804,26.84873,1,12,1,30.09458,0,22.35598,0,0,52.45056,0,0,0,3,0,3,84.6,13.8,0,92,0,0,0,0,1.098612,0,0,0,0,1,0,0,92,8.973073,1.098612,3.959871,1 +11,4,0,1,4,429054,0,7886.804,27.84873,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,84.6,13.8,0,92,0,0,0,0,1.098612,0,0,0,0,1,0,0,92,8.973073,1.098612,,0 +11,4,0,1,5,429054,0,7886.804,28.84873,1,12,1,25.47771,0,24.7523,0,0,50.23001,0,0,0,2,0,3,84.6,13.8,0,92,0,0,0,0,1.098612,0,0,0,0,1,0,0,92,8.973073,1.098612,3.916613,1 +11,4,0,1,1,429055,0,7886.804,27.09925,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,98.4,6.9,0,95.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,95.5,8.973073,1.098612,,0 +11,4,0,1,2,429055,0,7886.804,28.09925,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,98.4,6.9,0,95.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,95.5,8.973073,1.098612,,0 +11,4,0,1,3,429055,0,7886.804,29.09925,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,98.4,6.9,0,95.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,95.5,8.973073,1.098612,,0 +11,4,0,1,4,429055,0,7886.804,30.09925,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,98.4,6.9,0,95.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,95.5,8.973073,1.098612,,0 +11,4,0,1,5,429055,0,7886.804,31.09925,0,12,1,59.97877,2.919321,0,0,0,62.89809,0,0,0,1,6,3,98.4,6.9,0,95.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,95.5,8.973073,1.098612,4.141516,1 +13,4,0,1,1,429081,0,2585.924,24.86516,0,16,1,32.68641,3.702758,0,0,0,36.38917,0,0,0,4,0,1,73.4,6.9,0,61.4,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,61.4,7.858225,0,3.594271,1 +13,4,0,1,2,429081,0,2585.924,25.86516,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,73.4,6.9,0,61.4,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,61.4,7.858225,0,,0 +13,4,0,1,3,429081,0,2585.924,26.86516,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,73.4,6.9,0,61.4,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,61.4,7.858225,0,,0 +13,4,0,1,4,429081,0,2585.924,27.86516,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,73.4,6.9,0,61.4,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,61.4,7.858225,0,,0 +13,4,0,1,5,429081,0,2585.924,28.86516,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,73.4,6.9,0,61.4,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,61.4,7.858225,0,,0 +13,4,0,1,1,429107,0,9110.264,31.06366,0,13,1,3.575077,6.511747,0,0,0,10.08682,0,0,0,1,0,4,81.9,6.9,0,67,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,67,9.117267,1.386294,2.31123,1 +13,4,0,1,2,429107,0,9110.264,32.06366,0,13,1,4.688232,8.321612,0,0,0,13.00985,0,0,0,1,0,4,81.9,6.9,0,67,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,67,9.117267,1.386294,2.565706,1 +13,4,0,1,3,429107,0,9110.264,33.06366,0,13,1,11.17799,12.89768,0,0,0,24.07567,0,0,0,2,0,4,81.9,6.9,0,67,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,67,9.117267,1.386294,3.181202,1 +13,4,0,1,1,429108,0,9110.264,2.190281,1,12,1,2.553626,11.36364,0,0,0,13.91726,0,0,0,1,0,4,83.39137,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.117267,1.386294,2.63313,1 +13,4,0,1,2,429108,0,9110.264,3.190281,1,12,1,3.750586,2.812939,0,0,0,6.563526,0,0,0,1,0,4,83.39137,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.117267,1.386294,1.881528,1 +13,4,0,1,3,429108,0,9110.264,4.19028,1,12,1,19.77644,6.878762,0,0,0,26.6552,0,0,0,3,0,4,83.39137,9.967326,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.8,9.117267,1.386294,3.282984,1 +13,4,0,1,1,429109,0,9110.264,25.91923,1,12,1,19.91828,20.68437,0,0,0,40.60266,0,0,0,5,0,4,45.7,24.1,0,47.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,47.7,9.117267,1.386294,3.703834,1 +13,4,0,1,2,429109,0,9110.264,26.91923,1,12,1,120.9564,25.55087,28.12939,0,0,174.6367,0,0,0,7,1,4,45.7,24.1,0,47.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,47.7,9.117267,1.386294,5.162708,1 +13,4,0,1,3,429109,0,9110.264,27.91923,1,12,1,16.76698,0,4.707653,0,0,21.47463,0,0,0,1,0,4,45.7,24.1,0,47.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,47.7,9.117267,1.386294,3.066872,1 +13,4,0,1,1,429110,0,9110.264,6.310746,0,12,1,13.78958,2.808989,0,0,0,16.59857,0,0,0,2,0,4,75,9.967326,0,37,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,37,9.117267,1.386294,2.809317,1 +13,4,0,1,2,429110,0,9110.264,7.310746,0,12,1,9.376465,5.625879,0,0,0,15.00234,0,0,0,2,0,4,75,9.967326,0,37,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,37,9.117267,1.386294,2.708206,1 +13,4,0,1,3,429110,0,9110.264,8.310746,0,12,1,4.299226,3.009458,0,0,0,7.308684,0,0,0,1,0,4,75,9.967326,0,37,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,37,9.117267,1.386294,1.989063,1 +10,4,50,1,1,429174,0,11900.29,12.79945,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,9.967326,0,55.6,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,55.6,9.384402,1.609438,,0 +10,4,50,1,2,429174,0,11900.29,13.79945,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,9.967326,0,55.6,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,55.6,9.384402,1.609438,,0 +10,4,50,1,3,429174,0,11900.29,14.79945,1,12,1,6.412997,1.633177,0,11.75716,0,8.046174,0,0,5,1,0,5,81.7,9.967326,0,55.6,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,55.6,9.384402,1.609438,2.085197,1 +10,4,50,1,1,429175,0,11900.29,17.57153,1,12,1,50.10122,0,32.38866,0,0,82.48988,0,0,0,5,0,5,54.8,17.2,0,65.9,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,65.9,9.384402,1.609438,4.412675,1 +10,4,50,1,2,429175,0,11900.29,18.57153,1,12,1,5.594406,0,0,0,0,5.594406,0,0,0,1,0,5,54.8,17.2,0,65.9,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,65.9,9.384402,1.609438,1.721767,1 +10,4,50,1,3,429175,0,11900.29,19.57153,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,54.8,17.2,0,65.9,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,65.9,9.384402,1.609438,,0 +10,4,50,1,1,429176,0,11900.29,18.44216,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,79.8,3.4,0,59.5,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,59.5,9.384402,1.609438,,0 +10,4,50,1,2,429176,0,11900.29,19.44216,0,11,1,5.594406,0,0,0,0,5.594406,0,0,0,1,0,5,79.8,3.4,0,59.5,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,59.5,9.384402,1.609438,1.721767,1 +10,4,50,1,3,429176,0,11900.29,20.44216,0,11,1,17.63574,0,0,0,0,17.63574,0,0,0,0,0,5,79.8,3.4,0,59.5,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,59.5,9.384402,1.609438,2.869928,1 +10,4,50,1,1,429177,0,11900.29,42.67214,1,12,1,39.98988,13.01113,0,0,0,53.00101,0,0,0,3,0,5,73.9,20.7,1,43.2,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,43.2,9.384402,1.609438,3.970311,1 +10,4,50,1,2,429177,0,11900.29,43.67214,1,12,1,26.57343,15.92075,24.24242,0,0,66.7366,0,0,0,3,1,5,73.9,20.7,1,43.2,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,43.2,9.384402,1.609438,4.200754,1 +10,4,50,1,3,429177,0,11900.29,44.67214,1,12,1,266.9944,67.0201,0,11.75716,370.3506,704.3651,1,0,5,9,0,5,73.9,20.7,1,43.2,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,43.2,9.384402,1.609438,6.557297,1 +10,4,50,1,1,429178,0,11900.29,46.39014,0,12,1,10.12146,0,47.57085,0,0,57.69231,0,0,0,1,0,5,62.3,6.9,0,77.3,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,77.3,9.384402,1.609438,4.055124,1 +10,4,50,1,2,429178,0,11900.29,47.39014,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,62.3,6.9,0,77.3,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,77.3,9.384402,1.609438,,0 +10,4,50,1,3,429178,0,11900.29,48.39014,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,62.3,6.9,0,77.3,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,77.3,9.384402,1.609438,,0 +10,4,50,1,1,429253,0,12486.22,32.31211,0,12,1,38.81512,6.537283,0,0,0,45.3524,0,0,0,3,0,4,73.9,6.9,1,72.7,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,72.7,9.432461,1.386294,3.814463,1 +10,4,50,1,2,429253,0,12486.22,33.31211,0,12,1,0,12.23629,0,0,0,12.23629,0,0,0,0,0,4,73.9,6.9,1,72.7,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,72.7,9.432461,1.386294,2.504406,1 +10,4,50,1,3,429253,0,12486.22,34.31211,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,73.9,6.9,1,72.7,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,72.7,9.432461,1.386294,,0 +10,4,50,1,4,429253,0,12486.22,35.31211,0,12,1,5.816208,2.481582,0,0,0,8.29779,0,0,0,1,0,4,73.9,6.9,1,72.7,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,72.7,9.432461,1.386294,2.115989,1 +10,4,50,1,5,429253,0,12486.22,36.31211,0,12,1,62.6327,1.2385,0,0,0,63.8712,0,0,0,2,0,4,73.9,6.9,1,72.7,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,72.7,9.432461,1.386294,4.156868,1 +10,4,50,1,1,429254,0,12486.22,7.307324,0,15,1,12.25741,16.5475,0,0,0,28.8049,0,0,0,2,0,4,81.7,9.967326,0,88.9,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,88.9,9.432461,1.386294,3.360546,1 +10,4,50,1,2,429254,0,12486.22,8.307323,0,15,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,9.967326,0,88.9,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,88.9,9.432461,1.386294,,0 +10,4,50,1,3,429254,0,12486.22,9.307323,0,15,1,18.9166,0,0,0,0,18.9166,0,0,0,2,0,4,81.7,9.967326,0,88.9,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,88.9,9.432461,1.386294,2.94004,1 +10,4,50,1,4,429254,0,12486.22,10.30732,0,15,1,164.715,10.11245,7.754944,0,0,182.5824,0,0,0,13,0,4,81.7,9.967326,0,88.9,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,88.9,9.432461,1.386294,5.207201,1 +10,4,50,1,5,429254,0,12486.22,11.30732,0,15,1,39.45506,0,0,0,0,39.45506,0,0,0,4,0,4,81.7,9.967326,0,88.9,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,88.9,9.432461,1.386294,3.675162,1 +10,4,50,1,1,429255,0,12486.22,36.564,1,15,1,52.98774,3.064351,0,0,0,56.05209,0,0,0,1,0,4,76.1,13.8,0,78.4,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.4,9.432461,1.386294,4.026281,1 +10,4,50,1,2,429255,0,12486.22,37.564,1,15,1,0,2.742616,0,0,0,2.742616,0,0,0,0,0,4,76.1,13.8,0,78.4,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.4,9.432461,1.386294,1.008912,1 +10,4,50,1,3,429255,0,12486.22,38.564,1,15,1,12.89768,0,0,0,0,12.89768,0,0,0,1,0,4,76.1,13.8,0,78.4,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.4,9.432461,1.386294,2.557047,1 +10,4,50,1,4,429255,0,12486.22,39.564,1,15,1,85.69213,11.62466,0,341.2175,0,97.31679,0,0,16,5,0,4,76.1,13.8,0,78.4,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.4,9.432461,1.386294,4.577971,1 +10,4,50,1,5,429255,0,12486.22,40.564,1,15,1,81.20665,0,0,921.7976,0,81.20665,0,0,45,3,0,4,76.1,13.8,0,78.4,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.4,9.432461,1.386294,4.396997,1 +10,4,50,1,1,429256,0,12486.22,9.722108,0,15,1,49.02962,0,0,0,0,49.02962,0,0,0,1,0,4,80,9.967326,0,88.9,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,88.9,9.432461,1.386294,3.892425,1 +10,4,50,1,2,429256,0,12486.22,10.72211,0,15,1,3.281763,6.28692,0,0,0,9.568683,0,0,0,1,0,4,80,9.967326,0,88.9,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,88.9,9.432461,1.386294,2.258496,1 +10,4,50,1,3,429256,0,12486.22,11.72211,0,15,1,23.64574,0,0,0,0,23.64574,0,0,0,3,0,4,80,9.967326,0,88.9,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,88.9,9.432461,1.386294,3.163183,1 +10,4,50,1,4,429256,0,12486.22,12.72211,0,15,1,4.556029,9.747964,0,0,0,14.30399,0,0,0,1,0,4,80,9.967326,0,88.9,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,88.9,9.432461,1.386294,2.660539,1 +10,4,50,1,5,429256,0,12486.22,13.72211,0,15,1,39.27813,0,0,0,0,39.27813,0,0,0,3,0,4,80,9.967326,0,88.9,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,88.9,9.432461,1.386294,3.670668,1 +13,4,0,1,1,429282,0,7910.823,37.01848,1,12,1,35.8502,5.161943,23.27935,0,0,64.2915,0,0,0,1,0,4,85.1,13.8,0,88.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.6,8.976113,1.386294,4.163427,1 +13,4,0,1,2,429282,0,7910.823,38.01848,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,85.1,13.8,0,88.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.6,8.976113,1.386294,,0 +13,4,0,1,3,429282,0,7910.823,39.01848,1,12,1,21.37666,0,24.79692,0,0,46.17358,0,0,0,2,1,4,85.1,13.8,0,88.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.6,8.976113,1.386294,3.832408,1 +13,4,0,1,1,429283,0,7910.823,17.1718,1,12,1,73.88664,7.57085,0,0,0,81.45749,0,0,0,3,0,4,66.5,6.9,0,79.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,79.5,8.976113,1.386294,4.400081,1 +13,4,0,1,2,429283,0,7910.823,18.1718,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,66.5,6.9,0,79.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,79.5,8.976113,1.386294,,0 +13,4,0,1,3,429283,0,7910.823,19.1718,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,66.5,6.9,0,79.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,79.5,8.976113,1.386294,,0 +13,4,0,1,1,429284,0,7910.823,6.809035,0,12,1,19.84818,0,0,0,0,19.84818,0,0,0,2,0,4,98.3,9.967326,0,70.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.976113,1.386294,2.988112,1 +13,4,0,1,2,429284,0,7910.823,7.809035,0,12,1,4.662004,0,0,0,0,4.662004,0,0,0,1,0,4,98.3,9.967326,0,70.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.976113,1.386294,1.539446,1 +13,4,0,1,3,429284,0,7910.823,8.809035,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,98.3,9.967326,0,70.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.976113,1.386294,,0 +13,4,0,1,1,429285,0,7910.823,14.60096,1,12,1,29.35223,1.007085,0,0,0,30.35931,0,0,0,6,0,4,67.6,6.9,0,52.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,52.3,8.976113,1.386294,3.413103,1 +13,4,0,1,2,429285,0,7910.823,15.60096,1,12,1,18.18182,0,0,0,0,18.18182,0,0,0,3,0,4,67.6,6.9,0,52.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,52.3,8.976113,1.386294,2.900422,1 +13,4,0,1,3,429285,0,7910.823,16.60096,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,67.6,6.9,0,52.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,52.3,8.976113,1.386294,,0 +13,4,0,0,1,429286,0,2817.009,25.03765,1,14,1,0,0,0,0,0,0,0,0,0,0,0,1,61.7,10.3,0,85.2,150,302.2,0,0,0,5.711089,1,4.564348,5.061929,1,0,0,85.2,7.943786,0,,0 +13,4,0,0,2,429286,0,2817.009,26.03765,1,14,1,0,0,0,0,0,0,0,0,0,0,0,1,61.7,10.3,0,85.2,150,302.2,0,0,0,5.711089,1,4.564348,5.061929,1,0,0,85.2,7.943786,0,,0 +13,4,0,0,3,429286,0,2817.009,27.03765,1,14,1,10.68833,0,0,0,0,10.68833,0,0,0,2,0,1,61.7,10.3,0,85.2,150,302.2,0,0,0,5.711089,1,4.564348,5.061929,1,0,0,85.2,7.943786,0,2.369152,1 +11,4,0,0,1,429291,0,1722.581,52.73648,1,18,1,87.43616,37.30848,0,0,0,124.7446,0,0,0,8,0,1,54.3,31,1,58,0,0,0,0,0,0,0,0,0,1,0,0,58,7.452159,0,4.826269,1 +11,4,0,0,2,429291,0,1722.581,53.73648,1,18,1,109.1186,74.46789,37.97468,0,0,221.5612,0,0,0,4,1,1,54.3,31,1,58,0,0,0,0,0,0,0,0,0,1,0,0,58,7.452159,0,5.400699,1 +11,4,0,0,3,429291,0,1722.581,54.73648,1,18,1,46.86156,81.74979,0,0,0,128.6113,0,0,0,4,0,1,54.3,31,1,58,0,0,0,0,0,0,0,0,0,1,0,0,58,7.452159,0,4.856795,1 +11,4,0,0,1,429292,0,4792.375,21.34155,0,12,1,56.94586,0,0,0,0,56.94586,0,0,0,2,0,1,58,13.8,0,84.5,0,150.8,0,0,0,5.015954,0,0,0,0,0,0,84.5,8.47499,0,4.042101,1 +11,4,0,0,2,429292,0,4792.375,22.34155,0,12,1,0,2.695734,0,0,532.5832,535.2789,1,0,0,0,0,1,58,13.8,0,84.5,0,150.8,0,0,0,5.015954,0,0,0,0,0,0,84.5,8.47499,0,6.282788,1 +11,4,0,0,3,429292,0,4792.375,23.34155,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,58,13.8,0,84.5,0,150.8,0,0,0,5.015954,0,0,0,0,0,0,84.5,8.47499,0,,0 +13,4,0,1,1,429293,0,8915.543,28.38056,1,16,1,148.6134,9.008097,0,0,0,157.6215,0,0,0,8,0,2,67,17.2,1,25,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,25,9.095664,.6931472,5.060196,1 +13,4,0,1,2,429293,0,8915.543,29.38056,1,16,1,183.4965,64.21912,11.18881,0,629.8602,888.7646,1,0,0,10,0,2,67,17.2,1,25,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,25,9.095664,.6931472,6.789833,1 +13,4,0,1,3,429293,0,8915.543,30.38056,1,16,1,57.28944,89.61095,15.81873,0,0,162.7191,0,0,0,7,0,2,67,17.2,1,25,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,25,9.095664,.6931472,5.092025,1 +13,4,0,1,4,429293,0,8915.543,31.38056,1,16,1,198.5204,84.72329,0,0,0,283.2437,0,0,0,9,0,2,67,17.2,1,25,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,25,9.095664,.6931472,5.646307,1 +13,4,0,1,5,429293,0,8915.543,32.38056,1,16,1,134.3519,85.37057,29.1535,0,0,248.876,0,0,0,9,0,2,67,17.2,1,25,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,25,9.095664,.6931472,5.516955,1 +13,4,0,1,1,429294,0,8915.543,28.43806,0,16,1,3.036437,3.289474,0,0,0,6.325911,0,0,0,1,0,2,67.6,24.1,1,65.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,65.5,9.095664,.6931472,1.844654,1 +13,4,0,1,2,429294,0,8915.543,29.43806,0,16,1,92.65734,5.547786,5.594406,0,0,103.7995,0,0,0,7,0,2,67.6,24.1,1,65.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,65.5,9.095664,.6931472,4.642461,1 +13,4,0,1,3,429294,0,8915.543,30.43806,0,16,1,34.41642,4.852501,0,0,0,39.26892,0,0,0,4,0,2,67.6,24.1,1,65.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,65.5,9.095664,.6931472,3.670433,1 +13,4,0,1,4,429294,0,8915.543,31.43806,0,16,1,23.4435,4.727133,0,0,0,28.17064,0,0,0,4,0,2,67.6,24.1,1,65.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,65.5,9.095664,.6931472,3.33828,1 +13,4,0,1,5,429294,0,8915.543,32.43806,0,16,1,131.3663,5.619951,22.83105,42.14963,0,159.8174,0,0,3,5,0,2,67.6,24.1,1,65.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,65.5,9.095664,.6931472,5.074032,1 +13,4,0,1,1,429307,0,10139.59,43.61396,1,12,1,31.15424,64.81104,49.49949,0,0,145.4648,0,0,0,3,0,4,92.6,6.9,0,80.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,80.7,9.224301,1.386294,4.979934,1 +13,4,0,1,2,429307,0,10139.59,44.61396,1,12,1,85.32583,62.44726,33.84435,0,0,181.6174,0,0,0,2,0,4,92.6,6.9,0,80.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,80.7,9.224301,1.386294,5.201902,1 +13,4,0,1,3,429307,0,10139.59,45.61396,1,12,1,94.04557,67.43336,44.64746,120.3783,0,206.1264,0,0,7,6,0,4,92.6,6.9,0,80.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,80.7,9.224301,1.386294,5.32849,1 +13,4,0,1,1,429308,0,10139.59,44.05476,0,12,1,101.6445,6.358529,0,0,0,108.0031,0,0,0,2,0,4,62.8,3.4,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,72.7,9.224301,1.386294,4.682159,1 +13,4,0,1,2,429308,0,10139.59,45.05476,0,12,1,9.376465,0,28.44819,0,0,37.82466,0,0,0,1,0,4,62.8,3.4,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,72.7,9.224301,1.386294,3.632961,1 +13,4,0,1,3,429308,0,10139.59,46.05476,0,12,1,37.40327,0,31.74978,0,0,69.15305,0,0,0,4,0,4,62.8,3.4,0,72.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,72.7,9.224301,1.386294,4.236322,1 +13,4,0,1,1,429309,0,10139.59,12.49008,0,12,1,76.60879,5.87334,0,0,0,82.48212,0,0,0,3,0,4,93.3,9.967326,0,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.224301,1.386294,4.412581,1 +13,4,0,1,2,429309,0,10139.59,13.49008,0,12,1,9.376465,6.25879,0,0,0,15.63526,0,0,0,1,0,4,93.3,9.967326,0,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.224301,1.386294,2.749528,1 +13,4,0,1,3,429309,0,10139.59,14.49008,0,12,1,242.9106,6.423044,0,0,0,249.3336,0,0,0,2,0,4,93.3,9.967326,0,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.224301,1.386294,5.518792,1 +13,4,0,1,1,429310,0,10139.59,20.53662,1,13,1,24.00409,0,30.13279,0,0,54.13688,0,0,0,2,0,4,87.8,3.4,0,88.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.6,9.224301,1.386294,3.991516,1 +13,4,0,1,2,429310,0,10139.59,21.53662,1,13,1,132.4426,5.391468,30.94234,0,0,168.7764,0,0,0,7,0,4,87.8,3.4,0,88.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.6,9.224301,1.386294,5.128574,1 +13,4,0,1,3,429310,0,10139.59,22.53662,1,13,1,64.4239,23.78332,20.06879,0,0,108.276,0,0,0,6,0,4,87.8,3.4,0,88.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.6,9.224301,1.386294,4.684684,1 +13,4,0,1,1,429311,0,2022.874,21.9603,1,14,1,58.98877,24.46374,15.32176,0,0,98.77426,0,0,0,5,1,1,91,3.4,0,90.9,150,349.32,0,0,0,5.855989,1,4.564348,5.061929,0,0,0,90.9,7.612769,0,4.592837,1 +13,4,0,1,2,429311,0,2022.874,22.9603,1,14,1,68.87013,25.15237,23.44116,0,0,117.4637,0,0,0,9,0,1,91,3.4,0,90.9,150,349.32,0,0,0,5.855989,1,4.564348,5.061929,0,0,0,90.9,7.612769,0,4.766129,1 +13,4,0,1,3,429311,0,2022.874,23.9603,1,14,1,109.2003,11.6595,4.94411,0,570.0559,695.8599,1,0,0,11,0,1,91,3.4,0,90.9,150,349.32,0,0,0,5.855989,1,4.564348,5.061929,0,0,0,90.9,7.612769,0,6.545148,1 +6,4,25,1,1,429317,0,8195.308,13.9384,1,10,1,36.51685,14.27477,0,0,0,50.79163,0,0,0,4,0,5,81.7,9.967326,0,66.7,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,1,0,0,66.7,9.011439,1.609438,3.927732,1 +6,4,25,1,2,429317,0,8195.308,14.9384,1,10,1,74.19128,29.89217,29.53587,395.6868,0,133.6193,0,0,46,3,3,5,81.7,9.967326,0,66.7,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,1,0,0,66.7,9.011439,1.609438,4.894995,1 +6,4,25,1,3,429317,0,8195.308,15.9384,1,10,1,298.1728,2.626827,19.77644,319.8624,0,320.5761,0,0,56,7,1,5,81.7,9.967326,0,66.7,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,1,0,0,66.7,9.011439,1.609438,5.77012,1 +6,4,25,1,1,429318,0,8195.308,34.19302,0,12,1,25.53626,23.27886,0,0,1456.369,1505.184,1,0,0,3,0,5,78.7,6.9,0,80.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,80.7,9.011439,1.609438,7.31667,1 +6,4,25,1,2,429318,0,8195.308,35.19302,0,12,1,51.57056,37.61369,32.81763,450.0703,279.0905,401.0923,1,0,50,4,0,5,78.7,6.9,0,80.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,80.7,9.011439,1.609438,5.994192,1 +6,4,25,1,3,429318,0,8195.308,36.19302,0,12,1,393.2502,67.85468,0,150.4729,585.4901,1046.595,2,0,23,17,0,5,78.7,6.9,0,80.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,80.7,9.011439,1.609438,6.953297,1 +6,4,25,1,1,429319,0,8195.308,11.42779,1,10,1,5.107252,9.065372,0,0,0,14.17263,0,0,0,1,0,5,71.7,9.967326,0,96.3,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,1,0,0,96.3,9.011439,1.609438,2.651312,1 +6,4,25,1,2,429319,0,8195.308,12.42779,1,10,1,9.376465,0,0,0,0,9.376465,0,0,0,1,0,5,71.7,9.967326,0,96.3,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,1,0,0,96.3,9.011439,1.609438,2.238203,1 +6,4,25,1,3,429319,0,8195.308,13.42779,1,10,1,67.60533,0,5.210662,0,0,72.81599,0,0,0,5,0,5,71.7,9.967326,0,96.3,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,1,0,0,96.3,9.011439,1.609438,4.287936,1 +6,4,25,1,1,429320,0,8195.308,30.48871,1,10,1,39.83657,5.812053,0,0,559.9438,605.5925,1,0,0,6,0,5,87.2,17.2,0,72.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,72.7,9.011439,1.609438,6.406207,1 +6,4,25,1,2,429320,0,8195.308,31.48871,1,10,1,25.78528,0,33.28645,0,0,59.07173,0,0,0,2,0,5,87.2,17.2,0,72.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,72.7,9.011439,1.609438,4.078753,1 +6,4,25,1,3,429320,0,8195.308,32.4887,1,10,1,73.94669,6.534824,17.17541,36.54342,0,97.65692,0,0,6,6,0,5,87.2,17.2,0,72.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,72.7,9.011439,1.609438,4.58146,1 +6,4,25,1,1,429321,0,8195.308,12.45175,0,10,1,10.2145,0,0,0,0,10.2145,0,0,0,1,0,5,73.3,9.967326,0,51.9,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,51.9,9.011439,1.609438,2.323809,1 +6,4,25,1,2,429321,0,8195.308,13.45175,0,10,1,20.04219,0,0,0,0,20.04219,0,0,0,2,0,5,73.3,9.967326,0,51.9,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,51.9,9.011439,1.609438,2.99784,1 +6,4,25,1,3,429321,0,8195.308,14.45175,0,10,1,10.74806,0,28.37489,0,0,39.12296,0,0,0,1,0,5,73.3,9.967326,0,51.9,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,51.9,9.011439,1.609438,3.666709,1 +14,4,95,1,1,429322,0,2469.208,4.544832,1,13,1,18.7247,4.554656,0,0,0,23.27935,0,0,0,3,0,2,83.39137,9.967326,0,48.1,18,18,1,1,.6931472,2.890372,0,4.564348,2.941665,0,0,0,48.1,7.812058,.6931472,3.147567,1 +14,4,95,1,2,429322,0,2469.208,5.544832,1,13,1,0,0,0,0,0,0,0,0,0,0,0,2,83.39137,9.967326,0,48.1,18,18,1,1,.6931472,2.890372,0,4.564348,2.941665,0,0,0,48.1,7.812058,.6931472,,0 +14,4,95,1,3,429322,0,2469.208,6.544832,1,13,1,5.130398,4.467721,0,0,0,9.598119,0,0,0,1,0,2,83.39137,9.967326,0,48.1,18,18,1,1,.6931472,2.890372,0,4.564348,2.941665,0,0,0,48.1,7.812058,.6931472,2.261567,1 +14,4,95,1,1,429323,0,2469.208,27.09103,1,13,1,76.05264,14.14474,0,0,0,90.19736,0,0,0,6,0,2,58.5,20.7,0,70.5,18,18,0,0,.6931472,2.890372,0,4.564348,2.941665,1,0,0,70.5,7.812058,.6931472,4.502,1 +14,4,95,1,2,429323,0,2469.208,28.09103,1,13,1,12.12121,9.90676,0,0,0,22.02797,0,0,0,2,0,2,58.5,20.7,0,70.5,18,18,0,0,.6931472,2.890372,0,4.564348,2.941665,1,0,0,70.5,7.812058,.6931472,3.092313,1 +14,4,95,1,3,429323,0,2469.208,29.09103,1,13,1,24.36939,11.07311,0,0,0,35.4425,0,0,0,1,1,2,58.5,20.7,0,70.5,18,18,0,0,.6931472,2.890372,0,4.564348,2.941665,1,0,0,70.5,7.812058,.6931472,3.567912,1 +17,4,25,1,1,429336,0,8654.546,4.120465,0,12,1,30.87045,17.00911,0,0,0,47.87955,0,0,0,4,0,3,83.39137,9.967326,0,66.7,700,700,1,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,66.7,9.065955,1.098612,3.868689,1 +17,4,25,1,2,429336,0,8654.546,5.120465,0,12,1,16.78322,16.39627,0,0,0,33.17949,0,0,0,3,0,3,83.39137,9.967326,0,66.7,700,700,1,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,66.7,9.065955,1.098612,3.501932,1 +17,4,25,1,3,429336,0,8654.546,6.120465,0,12,1,9.405729,10.97905,0,0,0,20.38478,0,0,0,2,0,3,83.39137,9.967326,0,66.7,700,700,1,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,66.7,9.065955,1.098612,3.014788,1 +17,4,25,1,4,429336,0,8654.546,7.120465,0,12,1,0,6.102998,0,0,0,6.102998,0,0,0,0,0,3,83.39137,9.967326,0,66.7,700,700,1,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,66.7,9.065955,1.098612,1.80878,1 +17,4,25,1,5,429336,0,8654.546,8.120465,0,12,1,6.322445,6.25922,0,0,0,12.58167,0,0,0,1,0,3,83.39137,9.967326,0,66.7,700,700,1,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,66.7,9.065955,1.098612,2.532241,1 +17,4,25,1,1,429337,0,8654.546,32.81862,1,12,1,265.1822,104.2966,28.34008,0,0,397.8188,0,0,0,14,1,3,59.6,24.1,0,54.5,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,54.5,9.065955,1.098612,5.985997,1 +17,4,25,1,2,429337,0,8654.546,33.81862,1,12,1,238.6946,69.23077,0,0,0,307.9254,0,0,0,13,0,3,59.6,24.1,0,54.5,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,54.5,9.065955,1.098612,5.729857,1 +17,4,25,1,3,429337,0,8654.546,34.81862,1,12,1,89.14066,35.823,0,0,0,124.9637,0,0,0,4,1,3,59.6,24.1,0,54.5,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,54.5,9.065955,1.098612,4.828023,1 +17,4,25,1,4,429337,0,8654.546,35.81862,1,12,1,25.3651,39.79631,0,0,0,65.16142,0,0,0,1,1,3,59.6,24.1,0,54.5,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,54.5,9.065955,1.098612,4.176867,1 +17,4,25,1,5,429337,0,8654.546,36.81862,1,12,1,14.75237,25.7745,24.23604,0,0,64.76291,0,0,0,1,1,3,59.6,24.1,0,54.5,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,0,1,0,54.5,9.065955,1.098612,4.170733,1 +17,4,25,1,1,429338,0,8654.546,36.49829,0,13,1,27.83401,0,28.84615,0,0,56.68016,0,0,0,1,1,3,73.9,6.9,0,72.7,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,1,0,0,72.7,9.065955,1.098612,4.037424,1 +17,4,25,1,2,429338,0,8654.546,37.49829,0,13,1,13.98601,9.431235,0,0,0,23.41725,0,0,0,2,0,3,73.9,6.9,0,72.7,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,1,0,0,72.7,9.065955,1.098612,3.153473,1 +17,4,25,1,3,429338,0,8654.546,38.49829,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,73.9,6.9,0,72.7,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,1,0,0,72.7,9.065955,1.098612,,0 +17,4,25,1,4,429338,0,8654.546,39.49829,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,73.9,6.9,0,72.7,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,1,0,0,72.7,9.065955,1.098612,,0 +17,4,25,1,5,429338,0,8654.546,40.49829,0,13,1,24.58728,0,0,0,0,24.58728,0,0,0,1,0,3,73.9,6.9,0,72.7,700,700,0,0,1.098612,6.55108,0,3.258096,7.937375,1,0,0,72.7,9.065955,1.098612,3.202229,1 +14,4,95,1,1,429339,0,12450.44,31.63587,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,97.3,0,0,92,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,92,9.429591,1.609438,,0 +14,4,95,1,2,429339,0,12450.44,32.63586,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,97.3,0,0,92,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,92,9.429591,1.609438,,0 +14,4,95,1,3,429339,0,12450.44,33.63586,0,13,1,29.92732,0,8.550663,0,0,38.47798,0,0,0,0,2,5,97.3,0,0,92,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,92,9.429591,1.609438,3.650086,1 +14,4,95,1,1,429340,0,12450.44,31.28816,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,88.8,0,0,94.3,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,94.3,9.429591,1.609438,,0 +14,4,95,1,2,429340,0,12450.44,32.28816,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,88.8,0,0,94.3,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,94.3,9.429591,1.609438,,0 +14,4,95,1,3,429340,0,12450.44,33.28816,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,88.8,0,0,94.3,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,94.3,9.429591,1.609438,,0 +14,4,95,1,1,429341,0,12450.44,4.503765,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,83.39137,9.967326,0,85.2,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.429591,1.609438,,0 +14,4,95,1,2,429341,0,12450.44,5.503765,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,83.39137,9.967326,0,85.2,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.429591,1.609438,,0 +14,4,95,1,3,429341,0,12450.44,6.503765,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,83.39137,9.967326,0,85.2,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.429591,1.609438,,0 +14,4,95,1,1,429342,0,12450.44,6.49692,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,90,9.967326,0,74.1,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,74.1,9.429591,1.609438,,0 +14,4,95,1,2,429342,0,12450.44,7.49692,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,90,9.967326,0,74.1,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,74.1,9.429591,1.609438,,0 +14,4,95,1,3,429342,0,12450.44,8.49692,0,16,1,4.275331,2.090637,0,0,0,6.365968,0,0,0,1,0,5,90,9.967326,0,74.1,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,74.1,9.429591,1.609438,1.850966,1 +14,4,95,1,1,429343,0,12450.44,9.738535,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,95,9.967326,0,66.7,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.429591,1.609438,,0 +14,4,95,1,2,429343,0,12450.44,10.73853,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,95,9.967326,0,66.7,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.429591,1.609438,,0 +14,4,95,1,3,429343,0,12450.44,11.73853,0,16,1,5.985464,0,0,0,0,5.985464,0,0,0,1,0,5,95,9.967326,0,66.7,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.429591,1.609438,1.789334,1 +16,4,95,1,1,429344,0,234.6041,23.63039,1,12,1,36.1083,3.441296,0,0,0,39.54959,0,0,0,3,0,1,67.6,10.3,0,81.8,300,0,0,0,0,0,0,4.564348,5.755076,0,0,0,81.8,5.462153,0,3.677556,1 +16,4,95,1,2,429344,0,234.6041,24.63039,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,67.6,10.3,0,81.8,300,0,0,0,0,0,0,4.564348,5.755076,0,0,0,81.8,5.462153,0,,0 +13,4,0,1,1,429353,0,8326.687,34.10267,0,12,1,13.66397,44.28138,0,0,0,57.94534,0,0,0,2,0,4,77.1,3.4,0,75,450,425,0,0,1.386294,6.052089,1,4.564348,6.160541,1,0,0,75,9.027341,1.386294,4.0595,1 +13,4,0,1,2,429353,0,8326.687,35.10267,0,12,1,41.02564,60.09324,0,0,0,101.1189,0,0,0,2,0,4,77.1,3.4,0,75,450,425,0,0,1.386294,6.052089,1,4.564348,6.160541,1,0,0,75,9.027341,1.386294,4.616297,1 +13,4,0,1,3,429353,0,8326.687,36.10267,0,12,1,131.1672,65.04916,0,0,0,196.2163,0,0,0,2,0,4,77.1,3.4,0,75,450,425,0,0,1.386294,6.052089,1,4.564348,6.160541,1,0,0,75,9.027341,1.386294,5.279218,1 +13,4,0,1,1,429354,0,8326.687,9.702943,0,12,1,20.74899,0,0,0,0,20.74899,0,0,0,2,0,4,63.3,9.967326,0,100,450,425,1,0,1.386294,6.052089,1,4.564348,6.160541,0,0,0,100,9.027341,1.386294,3.032497,1 +13,4,0,1,2,429354,0,8326.687,10.70294,0,12,1,5.594406,0,0,0,0,5.594406,0,0,0,1,0,4,63.3,9.967326,0,100,450,425,1,0,1.386294,6.052089,1,4.564348,6.160541,0,0,0,100,9.027341,1.386294,1.721767,1 +13,4,0,1,3,429354,0,8326.687,11.70294,0,12,1,6.412997,0,1.710132,0,0,8.12313,0,0,0,1,0,4,63.3,9.967326,0,100,450,425,1,0,1.386294,6.052089,1,4.564348,6.160541,0,0,0,100,9.027341,1.386294,2.094716,1 +13,4,0,1,1,429355,0,8326.687,34.37372,1,12,1,36.77126,17.66194,0,0,0,54.4332,0,0,0,2,0,4,67.6,13.8,0,90.9,450,425,0,0,1.386294,6.052089,1,4.564348,6.160541,0,0,0,90.9,9.027341,1.386294,3.996974,1 +13,4,0,1,2,429355,0,8326.687,35.37372,1,12,1,19.58042,24.70862,25.64103,0,0,69.93007,0,0,0,2,0,4,67.6,13.8,0,90.9,450,425,0,0,1.386294,6.052089,1,4.564348,6.160541,0,0,0,90.9,9.027341,1.386294,4.247496,1 +13,4,0,1,3,429355,0,8326.687,36.37372,1,12,1,12.82599,23.51432,0,0,0,36.34032,0,0,0,1,0,4,67.6,13.8,0,90.9,450,425,0,0,1.386294,6.052089,1,4.564348,6.160541,0,0,0,90.9,9.027341,1.386294,3.592928,1 +13,4,0,1,1,429356,0,8326.687,6.954141,1,12,1,8.097166,0,0,0,0,8.097166,0,0,0,1,0,4,81.7,9.967326,0,100,450,425,1,1,1.386294,6.052089,1,4.564348,6.160541,0,0,0,100,9.027341,1.386294,2.091514,1 +13,4,0,1,2,429356,0,8326.687,7.954141,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,9.967326,0,100,450,425,1,1,1.386294,6.052089,1,4.564348,6.160541,0,0,0,100,9.027341,1.386294,,0 +13,4,0,1,3,429356,0,8326.687,8.954141,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,9.967326,0,100,450,425,1,1,1.386294,6.052089,1,4.564348,6.160541,0,0,0,100,9.027341,1.386294,,0 +13,4,0,1,1,429396,0,8216.422,15.69062,1,9,1,34.1573,6.332993,0,0,0,40.4903,0,0,0,3,0,3,70.7,3.4,0,53.4,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,1,0,0,53.4,9.014011,1.098612,3.701062,1 +13,4,0,1,2,429396,0,8216.422,16.69062,1,9,1,20.39381,1.80497,0,0,0,22.19878,0,0,0,1,0,3,70.7,3.4,0,53.4,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,1,0,0,53.4,9.014011,1.098612,3.100037,1 +13,4,0,1,3,429396,0,8216.422,17.69062,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,70.7,3.4,0,53.4,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,1,0,0,53.4,9.014011,1.098612,,0 +13,4,0,1,1,429397,0,8216.422,53.02122,1,9,1,167.4668,136.6701,43.92237,20.42901,0,348.0592,0,0,1,6,7,3,71.8,6.9,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,86.4,9.014011,1.098612,5.852373,1 +13,4,0,1,2,429397,0,8216.422,54.02122,1,9,1,98.45288,31.80497,0,0,0,130.2579,0,0,0,0,17,3,71.8,6.9,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,86.4,9.014011,1.098612,4.869516,1 +13,4,0,1,3,429397,0,8216.422,55.02122,1,9,1,32.99656,45.51161,0,0,0,78.50817,0,0,0,1,1,3,71.8,6.9,0,86.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,86.4,9.014011,1.098612,4.363203,1 +13,4,0,1,1,429398,0,8216.422,54.99247,0,9,1,35.24004,49.33606,0,0,0,84.5761,0,0,0,6,0,3,79.3,24.1,0,43.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,43.2,9.014011,1.098612,4.437652,1 +13,4,0,1,2,429398,0,8216.422,55.99247,0,9,1,7.032349,31.17675,0,0,0,38.2091,0,0,0,1,0,3,79.3,24.1,0,43.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,43.2,9.014011,1.098612,3.643074,1 +13,4,0,1,3,429398,0,8216.422,56.99247,0,9,1,23.64574,49.49699,29.23474,0,0,102.3775,0,0,0,1,1,3,79.3,24.1,0,43.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,43.2,9.014011,1.098612,4.628667,1 +13,4,0,1,1,429401,0,2856.892,59.66325,1,12,1,37.44939,35.32389,39.97976,0,0,112.753,0,0,0,6,0,1,62.8,31,0,53.4,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,53.4,7.957839,0,4.7252,1 +13,4,0,1,2,429401,0,2856.892,60.66325,1,12,1,11.18881,11.04895,0,0,0,22.23776,0,0,0,2,0,1,62.8,31,0,53.4,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,53.4,7.957839,0,3.101792,1 +13,4,0,1,3,429401,0,2856.892,61.66325,1,12,1,80.91064,10.66268,40.61565,0,0,132.189,0,0,0,6,0,1,62.8,31,0,53.4,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,53.4,7.957839,0,4.884233,1 +11,4,0,1,1,429463,0,4336.07,5.355236,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,9.967326,0,92.6,0,0,1,0,1.098612,0,0,0,0,0,0,0,92.6,8.374954,1.098612,,0 +11,4,0,1,2,429463,0,4336.07,6.355236,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,9.967326,0,92.6,0,0,1,0,1.098612,0,0,0,0,0,0,0,92.6,8.374954,1.098612,,0 +11,4,0,1,3,429463,0,4336.07,7.355236,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,9.967326,0,92.6,0,0,1,0,1.386294,0,0,0,0,0,0,0,92.6,8.374954,1.386294,,0 +11,4,0,1,1,429464,0,4336.07,7.876797,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,85,9.967326,0,66.7,0,0,1,1,1.098612,0,0,0,0,0,0,0,66.7,8.374954,1.098612,,0 +11,4,0,1,2,429464,0,4336.07,8.876797,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,85,9.967326,0,66.7,0,0,1,1,1.098612,0,0,0,0,0,0,0,66.7,8.374954,1.098612,,0 +11,4,0,1,3,429464,0,4336.07,9.876797,1,12,1,5.803955,0,0,0,0,5.803955,0,0,0,2,0,4,85,9.967326,0,66.7,0,0,1,1,1.386294,0,0,0,0,0,0,0,66.7,8.374954,1.386294,1.75854,1 +11,4,0,1,1,429465,0,4336.07,27.17591,1,12,1,15.32176,0,0,0,0,15.32176,0,0,0,1,0,3,78.7,0,0,84.1,0,0,0,0,1.098612,0,0,0,0,0,0,0,84.1,8.374954,1.098612,2.729274,1 +11,4,0,1,2,429465,0,4336.07,28.17591,1,12,1,0,0,0,0,7.032349,7.032349,1,1,0,0,0,3,78.7,0,0,84.1,0,0,0,0,1.098612,0,0,0,0,0,0,0,84.1,8.374954,1.098612,1.950521,1 +11,4,0,1,3,429465,0,4336.07,29.17591,1,12,1,36.04901,7.115219,0,0,0,43.16423,0,0,0,2,0,4,78.7,0,0,84.1,0,0,0,0,1.386294,0,0,0,0,0,0,0,84.1,8.374954,1.386294,3.765012,1 +11,4,0,1,1,429466,0,1759.531,23.84668,0,11,1,61.21587,0,0,0,0,61.21587,0,0,0,3,0,1,81.9,0,0,88.6,0,0,0,0,0,0,0,0,0,0,0,0,88.6,7.473371,0,4.114407,1 +11,4,0,1,2,429466,0,1759.531,24.84668,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,81.9,0,0,88.6,0,0,0,0,0,0,0,0,0,0,0,0,88.6,7.473371,0,,0 +11,4,0,1,3,429466,0,1759.531,25.84668,0,11,1,34.78543,6.337234,0,0,0,41.12267,0,0,0,5,0,1,81.9,0,0,88.6,0,0,0,0,0,0,0,0,0,0,0,0,88.6,7.473371,0,3.71656,1 +11,4,0,1,1,429534,0,4631.085,17.41821,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,78.7,0,0,92,0,492.84,1,0,2.079442,6.200184,0,0,0,0,0,0,92,8.440763,2.079442,,0 +11,4,0,1,2,429534,0,4631.085,18.41821,0,12,1,37.74027,40.3188,0,0,0,78.05907,0,0,0,4,0,8,78.7,0,0,92,0,492.84,0,0,2.079442,6.200184,0,0,0,0,0,0,92,8.440763,2.079442,4.357466,1 +11,4,0,1,3,429534,0,4631.085,19.41821,0,12,1,21.49613,52.38607,0,0,0,73.8822,0,0,0,5,0,7,78.7,0,0,92,0,492.84,0,0,1.94591,6.200184,0,0,0,0,0,0,92,8.440763,1.94591,4.302472,1 +11,4,0,1,1,429535,0,4631.085,43.73717,0,12,1,10.2145,0,12.76813,0,0,22.98264,0,0,0,0,1,8,86.7,6.9,0,64.8,0,492.84,0,0,2.079442,6.200184,0,0,0,1,0,0,64.8,8.440763,2.079442,3.134739,1 +11,4,0,1,2,429535,0,4631.085,44.73717,0,12,1,0,0,0,11.72058,0,0,0,0,1,0,0,8,86.7,6.9,0,64.8,0,492.84,0,0,2.079442,6.200184,0,0,0,1,0,0,64.8,8.440763,2.079442,,0 +11,4,0,1,3,429535,0,4631.085,45.73717,0,12,1,9.458298,0,0,21.49613,0,9.458298,0,0,2,0,1,7,86.7,6.9,0,64.8,0,492.84,0,0,1.94591,6.200184,0,0,0,1,0,0,64.8,8.440763,1.94591,2.246892,1 +11,4,0,1,1,429536,0,4631.085,16.07666,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,92,0,0,94.3,0,492.84,1,0,2.079442,6.200184,0,0,0,0,0,0,94.3,8.440763,2.079442,,0 +11,4,0,1,2,429536,0,4631.085,17.07666,0,12,1,4.688232,10.0797,0,0,0,14.76793,0,0,0,1,0,8,92,0,0,94.3,0,492.84,1,0,2.079442,6.200184,0,0,0,0,0,0,94.3,8.440763,2.079442,2.692458,1 +11,4,0,1,1,429537,0,4631.085,39.65777,1,12,1,10.2145,0,25.02554,0,0,35.24004,0,0,0,0,1,8,73.4,13.8,0,63.6,0,492.84,0,0,2.079442,6.200184,0,0,0,1,0,0,63.6,8.440763,2.079442,3.562183,1 +11,4,0,1,2,429537,0,4631.085,40.65777,1,12,1,24.37881,3.867792,0,82.04407,0,28.2466,0,0,4,2,0,8,73.4,13.8,0,63.6,0,492.84,0,0,2.079442,6.200184,0,0,0,1,0,0,63.6,8.440763,2.079442,3.340973,1 +11,4,0,1,3,429537,0,4631.085,41.65777,1,12,1,36.1135,19.62597,23.8607,214.9613,0,79.60017,0,0,11,3,1,7,73.4,13.8,0,63.6,0,492.84,0,0,1.94591,6.200184,0,0,0,1,0,0,63.6,8.440763,1.94591,4.377016,1 +11,4,0,1,1,429538,0,4631.085,10.98152,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,91.7,9.967326,0,70.4,0,492.84,1,0,2.079442,6.200184,0,0,0,0,0,0,70.4,8.440763,2.079442,,0 +11,4,0,1,2,429538,0,4631.085,11.98152,0,12,1,14.0647,1.851852,0,117.2058,0,15.91655,0,0,5,2,0,8,91.7,9.967326,0,70.4,0,492.84,1,0,2.079442,6.200184,0,0,0,0,0,0,70.4,8.440763,2.079442,2.767359,1 +11,4,0,1,3,429538,0,4631.085,12.98152,0,12,1,0,0,0,967.3259,0,0,0,0,41,0,0,7,91.7,9.967326,0,70.4,0,492.84,1,0,1.94591,6.200184,0,0,0,0,0,0,70.4,8.440763,1.94591,,0 +11,4,0,1,1,429539,0,4631.085,6.721424,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,93.3,9.967326,0,59.3,0,492.84,1,1,2.079442,6.200184,0,0,0,0,0,0,59.3,8.440763,2.079442,,0 +11,4,0,1,2,429539,0,4631.085,7.721424,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,93.3,9.967326,0,59.3,0,492.84,1,1,2.079442,6.200184,0,0,0,0,0,0,59.3,8.440763,2.079442,,0 +11,4,0,1,3,429539,0,4631.085,8.721424,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,93.3,9.967326,0,59.3,0,492.84,1,1,1.94591,6.200184,0,0,0,0,0,0,59.3,8.440763,1.94591,,0 +11,4,0,1,1,429540,0,4631.085,4.405202,1,12,1,8.682329,0,0,0,0,8.682329,0,0,0,1,0,8,83.39137,9.967326,0,70.4,0,492.84,1,1,2.079442,6.200184,0,0,0,0,0,0,70.4,8.440763,2.079442,2.16129,1 +11,4,0,1,2,429540,0,4631.085,5.405202,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,83.39137,9.967326,0,70.4,0,492.84,1,1,2.079442,6.200184,0,0,0,0,0,0,70.4,8.440763,2.079442,,0 +11,4,0,1,3,429540,0,4631.085,6.405202,1,12,1,4.299226,.9673259,0,0,0,5.266552,0,0,0,1,0,7,83.39137,9.967326,0,70.4,0,492.84,1,1,1.94591,6.200184,0,0,0,0,0,0,70.4,8.440763,1.94591,1.661376,1 +11,4,0,1,1,429541,0,4631.085,18.45859,1,11,1,12.76813,2.52809,28.60061,0,0,43.89684,0,0,0,1,1,8,81.9,6.9,0,76.1,0,492.84,0,0,2.079442,6.200184,0,0,0,0,0,0,76.1,8.440763,2.079442,3.781842,1 +11,4,0,1,2,429541,0,4631.085,19.45859,1,11,1,7.969995,0,15.93999,0,0,23.90999,0,0,0,0,1,8,81.9,6.9,0,76.1,0,492.84,0,0,2.079442,6.200184,0,0,0,0,0,0,76.1,8.440763,2.079442,3.174296,1 +11,4,0,1,3,429541,0,4631.085,20.45859,1,11,1,7.308684,0,0,0,0,7.308684,0,0,0,0,1,7,81.9,6.9,0,76.1,0,492.84,0,0,1.94591,6.200184,0,0,0,0,0,0,76.1,8.440763,1.94591,1.989063,1 +13,4,0,1,1,429565,0,8114.956,56.94456,1,12,1,51.46832,0,0,0,0,51.46832,0,0,0,3,0,1,92.6,10.3,0,83,150,211.2,0,0,0,5.352806,1,4.564348,5.061929,0,0,0,83,9.001587,0,3.940966,1 +13,4,0,1,3,429565,0,8114.956,58.94456,1,12,1,8.669268,0,32.72649,0,0,41.39575,0,0,0,0,1,1,92.6,10.3,0,83,150,211.2,0,0,0,5.352806,1,4.564348,5.061929,0,0,0,83,9.001587,0,3.723178,1 +16,4,95,1,1,429566,0,13372.43,3.310062,0,9,1,36.00613,13.20225,0,0,0,49.20837,0,0,0,4,0,6,83.39137,9.967326,0,100,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,100,9.501025,1.791759,3.896064,1 +16,4,95,1,2,429566,0,13372.43,4.310061,0,9,1,53.91467,0,0,0,0,53.91467,0,0,0,1,0,6,83.39137,9.967326,0,100,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,100,9.501025,1.791759,3.987403,1 +16,4,95,1,3,429566,0,13372.43,5.310061,0,9,1,7.738607,0,0,0,0,7.738607,0,0,0,1,0,6,83.39137,9.967326,0,100,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,100,9.501025,1.791759,2.046222,1 +16,4,95,1,1,429567,0,13372.43,15.66598,0,9,1,75.68948,5.720122,0,0,0,81.4096,0,0,0,3,0,6,74.5,3.4,0,68.2,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,68.2,9.501025,1.791759,4.399493,1 +16,4,95,1,2,429567,0,13372.43,16.66598,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,74.5,3.4,0,68.2,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,68.2,9.501025,1.791759,,0 +16,4,95,1,3,429567,0,13372.43,17.66598,0,9,1,16.01462,0,0,0,0,16.01462,0,0,0,1,0,6,74.5,3.4,0,68.2,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,68.2,9.501025,1.791759,2.773502,1 +16,4,95,1,1,429568,0,13372.43,13.27036,0,9,1,55.15833,4.468846,0,0,0,59.62717,0,0,0,25,0,6,91.7,9.967326,0,66.7,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.501025,1.791759,4.088111,1 +16,4,95,1,2,429568,0,13372.43,14.27036,0,9,1,30.12189,0,0,0,0,30.12189,0,0,0,10,0,6,91.7,9.967326,0,66.7,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.501025,1.791759,3.405252,1 +16,4,95,1,3,429568,0,13372.43,15.27036,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,91.7,9.967326,0,66.7,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.501025,1.791759,,0 +16,4,95,1,1,429569,0,13372.43,37.24846,0,12,1,5.107252,3.038815,0,0,0,8.146068,0,0,0,1,0,6,68.6,0,0,70.5,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,70.5,9.501025,1.791759,2.097535,1 +16,4,95,1,2,429569,0,13372.43,38.24846,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,68.6,0,0,70.5,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,70.5,9.501025,1.791759,,0 +16,4,95,1,3,429569,0,13372.43,39.24846,0,12,1,13.54256,1.139295,0,0,0,14.68186,0,0,0,1,0,6,68.6,0,0,70.5,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,70.5,9.501025,1.791759,2.686613,1 +16,4,95,1,1,429570,0,13372.43,14.77618,0,9,1,38.02349,7.354443,0,0,0,45.37794,0,0,0,3,0,6,76.6,0,0,88.6,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.501025,1.791759,3.815026,1 +16,4,95,1,2,429570,0,13372.43,15.77618,0,9,1,36.91983,0,0,0,0,36.91983,0,0,0,2,0,6,76.6,0,0,88.6,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.501025,1.791759,3.608749,1 +16,4,95,1,3,429570,0,13372.43,16.77618,0,9,1,0,0,0,0,179.7506,179.7506,1,1,0,0,0,6,76.6,0,0,88.6,1000,1000,1,0,1.791759,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.501025,1.791759,5.191571,1 +16,4,95,1,1,429571,0,13372.43,33.97399,1,9,1,51.2002,8.094995,0,0,0,59.2952,0,0,0,2,0,6,76.6,31,0,92,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,1,0,92,9.501025,1.791759,4.082529,1 +16,4,95,1,2,429571,0,13372.43,34.97399,1,9,1,33.75528,19.05298,0,0,0,52.80825,0,0,0,3,0,6,76.6,31,0,92,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,1,0,92,9.501025,1.791759,3.966667,1 +16,4,95,1,3,429571,0,13372.43,35.97399,1,9,1,13.56406,1.074807,0,0,0,14.63887,0,0,0,1,0,6,76.6,31,0,92,1000,1000,0,0,1.791759,6.907755,0,4.564348,6.959049,0,1,0,92,9.501025,1.791759,2.68368,1 +11,4,0,0,1,429603,0,7317.889,2.045175,1,18,1,24.00409,6.261491,0,0,0,30.26558,0,0,0,4,0,3,83.39137,9.967326,0,92.6,0,173.16,1,1,1.098612,5.154216,0,0,0,0,0,0,92.6,8.898213,1.098612,3.410011,1 +11,4,0,0,2,429603,0,7317.889,3.045175,1,18,1,132.5598,15.33052,0,0,0,147.8903,0,0,0,7,0,3,83.39137,9.967326,0,92.6,0,173.16,1,1,1.098612,5.154216,0,0,0,0,0,0,92.6,8.898213,1.098612,4.996471,1 +11,4,0,0,3,429603,0,7317.889,4.045175,1,18,1,35.25365,2.824592,0,0,0,38.07825,0,0,0,4,0,3,83.39137,9.967326,0,92.6,0,173.16,1,1,1.098612,5.154216,0,0,0,0,0,0,92.6,8.898213,1.098612,3.639643,1 +11,4,0,0,1,429604,0,7317.889,25.13073,1,18,1,88.20225,6.889683,4.724208,0,164.7855,264.6016,1,0,0,7,0,3,60.1,17.2,0,67,0,173.16,0,0,1.098612,5.154216,0,0,0,1,0,0,67,8.898213,1.098612,5.578226,1 +11,4,0,0,2,429604,0,7317.889,26.13073,1,18,1,176.3244,32.30192,0,0,0,208.6263,0,0,0,19,0,3,60.1,17.2,0,67,0,173.16,0,0,1.098612,5.154216,0,0,0,1,0,0,67,8.898213,1.098612,5.340545,1 +11,4,0,0,3,429604,0,7317.889,27.13073,1,18,1,37.37317,20.97592,0,0,1650.555,1708.904,1,0,0,6,0,3,60.1,17.2,0,67,0,173.16,0,0,1.098612,5.154216,0,0,0,1,0,0,67,8.898213,1.098612,7.443607,1 +11,4,0,0,1,429605,0,7317.889,27.4579,0,16,1,12.76813,0,17.36466,0,0,30.13279,0,0,0,0,1,3,79.8,3.4,0,83,0,173.16,0,0,1.098612,5.154216,0,0,0,0,0,0,83,8.898213,1.098612,3.405614,1 +11,4,0,0,2,429605,0,7317.889,28.4579,0,16,1,0,0,9.728083,0,0,9.728083,0,0,0,0,0,3,79.8,3.4,0,83,0,173.16,0,0,1.098612,5.154216,0,0,0,0,0,0,83,8.898213,1.098612,2.275017,1 +11,4,0,0,3,429605,0,7317.889,29.4579,0,16,1,75.23646,0,0,0,0,75.23646,0,0,0,1,0,3,79.8,3.4,0,83,0,173.16,0,0,1.098612,5.154216,0,0,0,0,0,0,83,8.898213,1.098612,4.320636,1 +18,4,25,1,1,429612,0,7114.37,55.98083,1,15,1,5.107252,10.36772,0,0,0,15.47497,0,0,0,1,0,1,68.8,10.3,0,73.9,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,73.9,8.870012,0,2.739224,1 +18,4,25,1,2,429612,0,7114.37,56.98083,1,15,1,16.40881,.9376465,0,0,1545.19,1562.536,1,0,0,2,0,1,68.8,10.3,0,73.9,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,73.9,8.870012,0,7.354066,1 +18,4,25,1,3,429612,0,7114.37,57.98083,1,15,1,20.74377,0,0,0,0,20.74377,0,0,0,2,0,1,68.8,10.3,0,73.9,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,73.9,8.870012,0,3.032246,1 +18,4,25,1,1,429613,0,5557.771,24.65435,0,12,1,132.1609,0,0,0,0,132.1609,0,0,0,3,0,1,42,10.3,1,53.4,750,450,0,0,0,6.109248,0,3.258096,8.006368,0,0,0,53.4,8.623133,0,4.88402,1 +18,4,25,1,2,429613,0,5557.771,25.65435,0,12,1,121.4872,.9324009,0,0,0,122.4196,0,0,0,8,0,1,42,10.3,1,53.4,750,450,0,0,0,6.109248,0,3.258096,8.006368,0,0,0,53.4,8.623133,0,4.807454,1 +18,4,25,1,3,429613,0,5557.771,26.65435,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,42,10.3,1,53.4,750,450,0,0,0,6.109248,0,3.258096,8.006368,0,0,0,53.4,8.623133,0,,0 +15,4,95,1,1,429614,0,2877.419,16.68446,0,9,1,138.2743,0,0,0,0,138.2743,0,0,0,3,0,5,48.9,3.4,0,72.7,800,800,1,0,1.609438,6.684612,0,4.564348,6.735905,0,0,0,72.7,7.964997,1.609438,4.929239,1 +15,4,95,1,2,429614,0,2877.419,17.68446,0,9,1,26.92308,3.706294,0,0,0,30.62937,0,0,0,3,0,5,48.9,3.4,0,72.7,800,800,1,0,1.609438,6.684612,0,4.564348,6.735905,0,0,0,72.7,7.964997,1.609438,3.421959,1 +15,4,95,1,1,429615,0,2877.419,13.40178,0,9,1,447.5506,14.34717,0,0,0,461.8978,0,0,0,9,1,5,68.3,9.967326,0,81.5,800,800,1,0,1.609438,6.684612,0,4.564348,6.735905,0,1,0,81.5,7.964997,1.609438,6.135344,1 +15,4,95,1,2,429615,0,2877.419,14.40178,0,9,1,16.31702,19.20746,0,0,0,35.52448,0,0,0,2,0,5,68.3,9.967326,0,81.5,800,800,1,0,1.609438,6.684612,0,4.564348,6.735905,0,1,0,81.5,7.964997,1.609438,3.570222,1 +15,4,95,1,3,429615,0,2877.419,15.40178,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,68.3,9.967326,0,81.5,800,800,1,0,1.386294,6.684612,0,4.564348,6.735905,0,1,0,81.5,7.964997,1.386294,,0 +15,4,95,1,1,429616,0,2877.419,36.60506,1,9,1,24.84818,1.644737,0,0,0,26.49291,0,0,0,2,0,5,44.7,17.2,0,77.3,800,800,0,0,1.609438,6.684612,0,4.564348,6.735905,0,0,0,77.3,7.964997,1.609438,3.276877,1 +15,4,95,1,2,429616,0,2877.419,37.60506,1,9,1,11.65501,5.104895,0,0,0,16.75991,0,0,0,1,0,5,44.7,17.2,0,77.3,800,800,0,0,1.609438,6.684612,0,4.564348,6.735905,0,0,0,77.3,7.964997,1.609438,2.81899,1 +15,4,95,1,3,429616,0,2877.419,38.60506,1,9,1,9.405729,0,0,0,0,9.405729,0,0,0,1,0,4,44.7,17.2,0,77.3,800,800,0,0,1.386294,6.684612,0,4.564348,6.735905,0,0,0,77.3,7.964997,1.386294,2.241319,1 +15,4,95,1,1,429617,0,2877.419,12.0794,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,78.3,9.967326,0,63,800,800,1,1,1.609438,6.684612,0,4.564348,6.735905,0,0,0,63,7.964997,1.609438,,0 +15,4,95,1,2,429617,0,2877.419,13.0794,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,78.3,9.967326,0,63,800,800,1,1,1.609438,6.684612,0,4.564348,6.735905,0,0,0,63,7.964997,1.609438,,0 +15,4,95,1,3,429617,0,2877.419,14.0794,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,78.3,9.967326,0,63,800,800,1,1,1.386294,6.684612,0,4.564348,6.735905,0,0,0,63,7.964997,1.386294,,0 +15,4,95,1,1,429618,0,2877.419,15.17043,0,9,1,59.36741,0,.5212551,0,0,59.88866,0,0,0,3,0,5,70.7,13.8,0,40.9,800,800,1,0,1.609438,6.684612,0,4.564348,6.735905,0,0,0,40.9,7.964997,1.609438,4.092487,1 +15,4,95,1,2,429618,0,2877.419,16.17043,0,9,1,67.48252,0,0,0,0,67.48252,0,0,0,2,0,5,70.7,13.8,0,40.9,800,800,1,0,1.609438,6.684612,0,4.564348,6.735905,0,0,0,40.9,7.964997,1.609438,4.211869,1 +15,4,95,1,3,429618,0,2877.419,17.17043,0,9,1,46.80205,0,0,0,0,46.80205,0,0,0,1,1,4,70.7,13.8,0,40.9,800,800,1,0,1.386294,6.684612,0,4.564348,6.735905,0,0,0,40.9,7.964997,1.386294,3.845927,1 +15,4,95,1,1,429619,0,2331.378,20.33128,0,12,1,49.39271,8.324899,0,0,0,57.71761,0,0,0,2,0,1,92,0,0,69.3,250,250,0,0,0,5.521461,0,4.564348,5.572754,0,0,0,69.3,7.754644,0,4.055562,1 +15,4,95,1,2,429619,0,2331.378,21.33128,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,92,0,0,69.3,250,250,0,0,0,5.521461,0,4.564348,5.572754,0,0,0,69.3,7.754644,0,,0 +15,4,95,1,3,429619,0,2331.378,22.33128,0,12,1,5.130398,0,0,0,0,5.130398,0,0,0,0,1,2,92,0,0,69.3,250,250,0,0,.6931472,5.521461,0,4.564348,5.572754,0,0,0,69.3,7.754644,.6931472,1.635183,1 +5,4,25,1,1,429685,0,7967.742,9.48939,0,12,1,12.76813,4.657814,0,0,0,17.42595,0,0,0,2,0,3,100,9.967326,0,92.6,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,92.6,8.983282,1.098612,2.85796,1 +5,4,25,1,2,429685,0,7967.742,10.48939,0,12,1,25.78528,1.050164,0,0,0,26.83544,0,0,0,3,0,3,100,9.967326,0,92.6,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,92.6,8.983282,1.098612,3.289724,1 +5,4,25,1,3,429685,0,7967.742,11.48939,0,12,1,71.79707,.6405847,0,0,0,72.43766,0,0,1,5,1,3,100,9.967326,0,92.6,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,92.6,8.983282,1.098612,4.282726,1 +5,4,25,1,1,429686,0,7967.742,51.82478,0,12,1,18.33504,8.411645,22.72727,0,0,49.47395,0,0,0,1,0,3,68.6,6.9,0,65.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,65.5,8.983282,1.098612,3.901446,1 +5,4,25,1,2,429686,0,7967.742,52.82478,0,12,1,27.19175,10.57665,22.03469,0,0,59.80309,0,0,0,2,1,3,68.6,6.9,0,65.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,65.5,8.983282,1.098612,4.091057,1 +5,4,25,1,3,429686,0,7967.742,53.82478,0,12,1,100.5589,15.10318,0,0,0,115.6621,0,0,0,2,0,3,68.6,6.9,0,65.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,65.5,8.983282,1.098612,4.750673,1 +5,4,25,1,1,429687,0,7967.742,38.16564,1,12,1,52.62513,164.525,0,0,0,217.1501,0,0,0,6,0,3,90.4,24.1,1,62.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,62.5,8.983282,1.098612,5.380589,1 +5,4,25,1,2,429687,0,7967.742,39.16564,1,12,1,95.76653,116.7933,0,0,0,212.5598,0,0,0,9,0,3,90.4,24.1,1,62.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,62.5,8.983282,1.098612,5.359223,1 +5,4,25,1,3,429687,0,7967.742,40.16564,1,12,1,82.2012,127.5838,.4299226,0,0,210.215,0,0,0,5,0,3,90.4,24.1,1,62.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,62.5,8.983282,1.098612,5.348131,1 +10,4,50,1,1,429688,0,1716.716,31.05544,1,17,1,29.80082,3.268641,2.757916,0,0,35.82737,0,0,0,2,0,1,75.5,6.9,0,86.9,750,750,0,0,0,6.620073,0,3.931826,7.313221,0,0,0,86.9,7.44875,0,3.578712,1 +10,4,50,1,2,429688,0,1716.716,32.05544,1,17,1,21.09705,0,0,0,18.75293,39.84998,1,0,0,1,0,1,75.5,6.9,0,86.9,750,750,0,0,0,6.620073,0,3.931826,7.313221,0,0,0,86.9,7.44875,0,3.685122,1 +10,4,50,1,3,429688,0,1716.716,33.05544,1,17,1,40.41273,10.76956,0,889.9398,0,51.18229,0,0,40,3,0,1,75.5,6.9,0,86.9,750,750,0,0,0,6.620073,0,3.931826,7.313221,0,0,0,86.9,7.44875,0,3.935394,1 +10,4,50,1,4,429688,0,1716.716,34.05544,1,17,1,22.10159,0,0,891.8185,0,22.10159,0,0,36,1,0,1,75.5,6.9,0,86.9,750,750,0,0,0,6.620073,0,3.931826,7.313221,0,0,0,86.9,7.44875,0,3.095649,1 +10,4,50,1,5,429688,0,1716.716,35.05544,1,17,1,61.04034,3.66242,0,100.8493,0,64.70276,0,0,18,3,2,1,75.5,6.9,0,86.9,750,750,0,0,0,6.620073,0,3.931826,7.313221,0,0,0,86.9,7.44875,0,4.169804,1 +11,4,0,1,1,429696,0,2322.581,27.72348,1,10,1,53.54954,0,39.83657,0,0,93.38611,0,0,0,4,0,4,61.2,10.3,0,79.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,79.5,7.750865,1.386294,4.536743,1 +11,4,0,1,2,429696,0,2322.581,28.72348,1,10,1,18.75293,0,0,0,0,18.75293,0,0,0,1,0,4,61.2,10.3,0,79.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,79.5,7.750865,1.386294,2.93135,1 +11,4,0,1,3,429696,0,2322.581,29.72348,1,10,1,14.61737,0,0,0,0,14.61737,0,0,0,1,0,4,61.2,10.3,0,79.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,79.5,7.750865,1.386294,2.68221,1 +11,4,0,1,4,429696,0,2322.581,30.72348,1,10,1,63.20279,0,34.5095,0,0,97.71229,0,0,0,4,0,4,61.2,10.3,0,79.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,79.5,7.750865,1.386294,4.582027,1 +11,4,0,1,5,429696,0,2322.581,31.72348,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,61.2,10.3,0,79.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,79.5,7.750865,1.386294,,0 +11,4,0,1,1,429697,0,2322.581,9.182752,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,9.967326,0,81.5,0,0,1,0,1.386294,0,0,0,0,0,0,0,81.5,7.750865,1.386294,,0 +11,4,0,1,2,429697,0,2322.581,10.18275,0,10,1,39.33427,2.273793,0,0,0,41.60806,0,0,0,4,0,4,88.3,9.967326,0,81.5,0,0,1,0,1.386294,0,0,0,0,0,0,0,81.5,7.750865,1.386294,3.728294,1 +11,4,0,1,3,429697,0,2322.581,11.18275,0,10,1,23.64574,0,0,0,0,23.64574,0,0,0,3,0,4,88.3,9.967326,0,81.5,0,0,1,0,1.386294,0,0,0,0,0,0,0,81.5,7.750865,1.386294,3.163183,1 +11,4,0,1,4,429697,0,2322.581,12.18275,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,9.967326,0,81.5,0,0,1,0,1.386294,0,0,0,0,0,0,0,81.5,7.750865,1.386294,,0 +11,4,0,1,5,429697,0,2322.581,13.18275,0,10,1,13.72965,0,0,0,0,13.72965,0,0,0,1,0,4,88.3,9.967326,0,81.5,0,0,1,0,1.386294,0,0,0,0,0,0,0,81.5,7.750865,1.386294,2.619558,1 +11,4,0,1,1,429698,0,2322.581,3.474333,0,10,1,6.128703,0,0,0,0,6.128703,0,0,0,1,0,4,83.39137,9.967326,0,66.7,0,0,1,0,1.386294,0,0,0,0,1,0,0,66.7,7.750865,1.386294,1.812983,1 +11,4,0,1,2,429698,0,2322.581,4.474333,0,10,1,33.61463,2.766057,0,0,0,36.38068,0,0,0,3,0,4,83.39137,9.967326,0,66.7,0,0,1,0,1.386294,0,0,0,0,1,0,0,66.7,7.750865,1.386294,3.594038,1 +11,4,0,1,3,429698,0,2322.581,5.474333,0,10,1,41.27257,0,0,0,0,41.27257,0,0,0,5,0,4,83.39137,9.967326,0,66.7,0,0,1,0,1.386294,0,0,0,0,1,0,0,66.7,7.750865,1.386294,3.720198,1 +11,4,0,1,4,429698,0,2322.581,6.474333,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.39137,9.967326,0,66.7,0,0,1,0,1.386294,0,0,0,0,1,0,0,66.7,7.750865,1.386294,,0 +11,4,0,1,5,429698,0,2322.581,7.474333,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.39137,9.967326,0,66.7,0,0,1,0,1.386294,0,0,0,0,1,0,0,66.7,7.750865,1.386294,,0 +11,4,0,1,1,429699,0,2322.581,6.677618,0,10,1,25.53626,2.196119,26.04699,0,2253.074,2306.854,1,0,0,3,0,4,70,9.967326,0,63,0,0,1,0,1.386294,0,0,0,0,1,0,0,63,7.750865,1.386294,7.74364,1 +11,4,0,1,2,429699,0,2322.581,7.677618,0,10,1,98.17159,0,0,0,0,98.17159,0,0,0,3,5,4,70,9.967326,0,63,0,0,1,0,1.386294,0,0,0,0,1,0,0,63,7.750865,1.386294,4.586717,1 +11,4,0,1,3,429699,0,2322.581,8.677618,0,10,1,12.89768,0,0,0,0,12.89768,0,0,0,2,0,4,70,9.967326,0,63,0,0,1,0,1.386294,0,0,0,0,1,0,0,63,7.750865,1.386294,2.557047,1 +11,4,0,1,4,429699,0,2322.581,9.677618,0,10,1,23.26483,0,0,0,0,23.26483,0,0,0,1,0,4,70,9.967326,0,63,0,0,1,0,1.386294,0,0,0,0,1,0,0,63,7.750865,1.386294,3.146943,1 +11,4,0,1,5,429699,0,2322.581,10.67762,0,10,1,3.53857,7.165605,0,0,0,10.70418,0,0,0,1,0,4,70,9.967326,0,63,0,0,1,0,1.386294,0,0,0,0,1,0,0,63,7.750865,1.386294,2.370634,1 +13,4,0,1,1,429730,0,4550.733,26.16838,0,16,1,187.7784,1.506639,0,0,0,189.285,0,0,0,4,18,1,69.1,0,1,54.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,54.5,8.423264,0,5.243254,1 +13,4,0,1,2,429730,0,4550.733,27.16838,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,69.1,0,1,54.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,54.5,8.423264,0,,0 +13,4,0,1,3,429730,0,4550.733,28.16838,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,69.1,0,1,54.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,54.5,8.423264,0,,0 +13,4,0,1,1,429731,0,2974.78,26.72142,0,17,1,12.65182,0,27.83401,0,0,40.48583,0,0,0,0,1,1,87.8,10.3,1,58,150,211.2,0,0,0,5.352806,1,4.564348,5.061929,0,0,0,58,7.998261,0,3.700952,1 +13,4,0,1,2,429731,0,2974.78,27.72142,0,17,1,32.63403,19.93007,27.97203,0,0,80.53613,0,0,0,1,1,1,87.8,10.3,1,58,150,211.2,0,0,0,5.352806,1,4.564348,5.061929,0,0,0,58,7.998261,0,4.388706,1 +13,4,0,1,3,429731,0,2974.78,28.72142,0,17,1,0,0,0,0,0,0,0,0,0,0,0,1,87.8,10.3,1,58,150,211.2,0,0,0,5.352806,1,4.564348,5.061929,0,0,0,58,7.998261,0,,0 +13,4,0,1,1,429739,0,7419.941,7.263518,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,76.7,9.967326,0,70.4,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,70.4,8.912061,.6931472,,0 +13,4,0,1,2,429739,0,7419.941,8.263518,1,16,1,10.31411,0,0,0,0,10.31411,0,0,0,2,0,2,76.7,9.967326,0,70.4,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,70.4,8.912061,.6931472,2.333513,1 +13,4,0,1,3,429739,0,7419.941,9.263518,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,76.7,9.967326,0,70.4,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,70.4,8.912061,.6931472,,0 +13,4,0,1,1,429740,0,7419.941,50.47502,1,16,1,58.63126,1.966292,0,0,119.571,180.1685,1,0,0,3,0,2,76.6,34.5,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,75,8.912061,.6931472,5.193892,1 +13,4,0,1,2,429740,0,7419.941,51.47502,1,16,1,15.00234,0,45.60244,0,0,60.60478,0,0,0,2,0,2,76.6,34.5,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,75,8.912061,.6931472,4.104374,1 +13,4,0,1,3,429740,0,7419.941,52.47502,1,16,1,0,0,37.99226,0,0,37.99226,0,0,0,0,0,2,76.6,34.5,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,75,8.912061,.6931472,3.637383,1 +11,4,0,1,1,429756,0,2982.405,9.278576,0,12,1,5.107252,5.469867,0,0,0,10.57712,0,0,0,1,0,5,91.7,9.967326,0,96.3,0,644.76,1,0,1.609438,6.468878,0,0,0,0,0,0,96.3,8.00082,1.609438,2.358693,1 +11,4,0,1,2,429756,0,2982.405,10.27858,0,12,1,5.625879,6.638537,0,0,0,12.26442,0,0,0,1,0,5,91.7,9.967326,0,96.3,0,644.76,1,0,1.609438,6.468878,0,0,0,0,0,0,96.3,8.00082,1.609438,2.506702,1 +11,4,0,1,3,429756,0,2982.405,11.27858,0,12,1,281.2769,3.697335,0,0,0,284.9742,0,0,0,2,5,5,91.7,9.967326,0,96.3,0,644.76,1,0,1.609438,6.468878,0,0,0,0,0,0,96.3,8.00082,1.609438,5.652399,1 +11,4,0,1,4,429756,0,2982.405,12.27858,0,12,1,5.816208,1.845677,0,0,0,7.661884,0,0,0,1,0,5,91.7,9.967326,0,96.3,0,644.76,1,0,1.609438,6.468878,0,0,0,0,0,0,96.3,8.00082,1.609438,2.036258,1 +11,4,0,1,5,429756,0,2982.405,13.27858,0,12,1,38.92427,0,0,0,0,38.92427,0,0,0,1,5,5,91.7,9.967326,0,96.3,0,644.76,1,0,1.609438,6.468878,0,0,0,0,0,0,96.3,8.00082,1.609438,3.661618,1 +11,4,0,1,1,429757,0,2982.405,11.44695,1,12,1,6.128703,2.543412,0,0,0,8.672114,0,0,0,1,0,5,85,9.967326,0,92.6,0,644.76,1,1,1.609438,6.468878,0,0,0,0,0,0,92.6,8.00082,1.609438,2.160113,1 +11,4,0,1,2,429757,0,2982.405,12.44695,1,12,1,17.34646,12.23629,0,0,0,29.58275,0,0,0,2,0,5,85,9.967326,0,92.6,0,644.76,1,1,1.609438,6.468878,0,0,0,0,0,0,92.6,8.00082,1.609438,3.387191,1 +11,4,0,1,3,429757,0,2982.405,13.44695,1,12,1,90.5417,3.688736,0,0,0,94.23044,0,0,0,1,12,5,85,9.967326,0,92.6,0,644.76,1,1,1.609438,6.468878,0,0,0,0,0,0,92.6,8.00082,1.609438,4.545743,1 +11,4,0,1,4,429757,0,2982.405,14.44695,1,12,1,281.6247,5.994572,0,0,0,287.6192,0,0,0,3,0,5,85,9.967326,0,92.6,0,644.76,1,1,1.609438,6.468878,0,0,0,0,0,0,92.6,8.00082,1.609438,5.661637,1 +11,4,0,1,5,429757,0,2982.405,15.44695,1,12,1,12.385,1.581741,0,0,0,13.96674,0,0,0,1,0,5,85,9.967326,0,92.6,0,644.76,1,1,1.609438,6.468878,0,0,0,0,0,0,92.6,8.00082,1.609438,2.636679,1 +11,4,0,1,1,429758,0,2982.405,6.182067,1,12,1,8.171603,2.543412,0,0,0,10.71502,0,0,0,1,0,5,86.7,9.967326,0,88.9,0,644.76,1,1,1.609438,6.468878,0,0,0,0,0,0,88.9,8.00082,1.609438,2.371646,1 +11,4,0,1,2,429758,0,2982.405,7.182067,1,12,1,5.625879,2.958275,0,0,0,8.584154,0,0,0,1,0,5,86.7,9.967326,0,88.9,0,644.76,1,1,1.609438,6.468878,0,0,0,0,0,0,88.9,8.00082,1.609438,2.149918,1 +11,4,0,1,3,429758,0,2982.405,8.182067,1,12,1,54.60017,5.39123,0,0,0,59.9914,0,0,0,3,6,5,86.7,9.967326,0,88.9,0,644.76,1,1,1.609438,6.468878,0,0,0,0,0,0,88.9,8.00082,1.609438,4.094201,1 +11,4,0,1,4,429758,0,2982.405,9.182067,1,12,1,18.22412,5.238464,0,0,0,23.46258,0,0,0,1,2,5,86.7,9.967326,0,88.9,0,644.76,1,1,1.609438,6.468878,0,0,0,0,0,0,88.9,8.00082,1.609438,3.155407,1 +11,4,0,1,5,429758,0,2982.405,10.18207,1,12,1,5.307856,2.735315,0,0,0,8.043171,0,0,0,0,1,5,86.7,9.967326,0,88.9,0,644.76,1,1,1.609438,6.468878,0,0,0,0,0,0,88.9,8.00082,1.609438,2.084823,1 +11,4,0,1,1,429759,0,2982.405,33.65366,1,12,1,29.3667,4.765067,0,0,0,34.13177,0,0,0,2,0,5,46.3,17.2,0,69.3,0,644.76,0,0,1.609438,6.468878,0,0,0,1,0,0,69.3,8.00082,1.609438,3.530229,1 +11,4,0,1,2,429759,0,2982.405,34.65366,1,12,1,36.09939,0,0,0,0,36.09939,0,0,0,3,0,5,46.3,17.2,0,69.3,0,644.76,0,0,1.609438,6.468878,0,0,0,1,0,0,69.3,8.00082,1.609438,3.586276,1 +11,4,0,1,3,429759,0,2982.405,35.65366,1,12,1,151.7627,0,0,0,0,151.7627,0,0,0,1,24,5,46.3,17.2,0,69.3,0,644.76,0,0,1.609438,6.468878,0,0,0,1,0,0,69.3,8.00082,1.609438,5.022318,1 +11,4,0,1,4,429759,0,2982.405,36.65366,1,12,1,63.41605,3.598294,0,162.8538,0,67.01434,0,0,7,1,5,5,46.3,17.2,0,69.3,0,644.76,0,0,1.609438,6.468878,0,0,0,1,0,0,69.3,8.00082,1.609438,4.204906,1 +11,4,0,1,5,429759,0,2982.405,37.65366,1,12,1,17.69285,14.98938,30.43171,467.0913,0,63.11394,0,0,22,1,1,5,46.3,17.2,0,69.3,0,644.76,0,0,1.609438,6.468878,0,0,0,1,0,0,69.3,8.00082,1.609438,4.144942,1 +11,4,0,1,1,429760,0,2982.405,37.24298,0,12,1,52.09398,0,0,0,0,52.09398,0,0,0,1,2,5,51.6,17.2,0,75,0,644.76,0,0,1.609438,6.468878,0,0,0,0,0,0,75,8.00082,1.609438,3.953049,1 +11,4,0,1,2,429760,0,2982.405,38.24298,0,12,1,298.7576,33.97562,0,0,0,332.7332,0,0,0,6,6,5,51.6,17.2,0,75,0,644.76,0,0,1.609438,6.468878,0,0,0,0,0,0,75,8.00082,1.609438,5.807341,1 +11,4,0,1,3,429760,0,2982.405,39.24298,0,12,1,284.4798,11.07911,0,0,383.6414,679.2003,1,0,0,5,50,5,51.6,17.2,0,75,0,644.76,0,0,1.609438,6.468878,0,0,0,0,0,0,75,8.00082,1.609438,6.520916,1 +11,4,0,1,4,429760,0,2982.405,40.24298,0,12,1,100.0388,3.640946,0,139.589,0,103.6797,0,0,6,5,10,5,51.6,17.2,0,75,0,644.76,0,0,1.609438,6.468878,0,0,0,0,0,0,75,8.00082,1.609438,4.641306,1 +11,4,0,1,5,429760,0,2982.405,41.24298,0,12,1,113.5881,21.24558,0,0,0,134.8337,0,0,0,1,18,5,51.6,17.2,0,75,0,644.76,0,0,1.609438,6.468878,0,0,0,0,0,0,75,8.00082,1.609438,4.904042,1 +13,4,0,1,1,429846,0,8800.587,48.5284,0,14,1,6.128703,0,0,0,0,6.128703,0,0,0,1,0,2,88.3,6.9,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.082687,.6931472,1.812983,1 +13,4,0,1,2,429846,0,8800.587,49.5284,0,14,1,15.00234,2.812939,10.31411,0,0,28.12939,0,0,0,1,1,2,88.3,6.9,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.082687,.6931472,3.336815,1 +13,4,0,1,3,429846,0,8800.587,50.5284,0,14,1,9.458298,0,27.08512,0,0,36.54342,0,0,0,0,1,2,88.3,6.9,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,9.082687,.6931472,3.598501,1 +13,4,0,1,1,429847,0,8800.587,45.13895,1,12,1,44.43309,0,0,0,0,44.43309,0,0,0,3,0,2,87.2,6.9,0,71.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,71.6,9.082687,.6931472,3.793985,1 +13,4,0,1,2,429847,0,8800.587,46.13895,1,12,1,11.72058,0,16.40881,0,0,28.12939,0,0,0,0,2,2,87.2,6.9,0,71.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,71.6,9.082687,.6931472,3.336815,1 +13,4,0,1,3,429847,0,8800.587,47.13895,1,12,1,26.6552,0,24.50559,0,0,51.16079,0,0,0,2,1,2,87.2,6.9,0,71.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,71.6,9.082687,.6931472,3.934973,1 +13,4,0,1,1,429848,0,3642.815,56.98563,1,12,1,53.11543,42.15015,38.30439,0,0,133.57,0,0,0,4,6,1,75.5,13.8,0,65.9,150,245.88,0,0,0,5.504844,1,4.564348,5.061929,1,0,0,65.9,8.200787,0,4.894626,1 +13,4,0,1,2,429848,0,3642.815,57.98563,1,12,1,39.02954,30.33286,0,0,0,69.3624,0,0,0,3,1,1,75.5,13.8,0,65.9,150,245.88,0,0,0,5.504844,1,4.564348,5.061929,1,0,0,65.9,8.200787,0,4.239345,1 +13,4,0,1,3,429848,0,3642.815,58.98563,1,12,1,19.34652,24.11866,33.96389,0,0,77.42906,0,0,0,1,2,1,75.5,13.8,0,65.9,150,245.88,0,0,0,5.504844,1,4.564348,5.061929,1,0,0,65.9,8.200787,0,4.349362,1 +13,4,0,0,1,429891,0,4353.666,13.48665,0,10,1,173.583,18.85628,59.21053,0,471.0223,722.6721,1,0,0,18,0,4,83.39137,9.967326,.0431267,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.16254,8.379004,1.386294,6.582955,1 +13,4,0,0,2,429891,0,4353.666,14.48665,0,10,1,145.2587,5.137529,0,0,409.035,559.4312,1,1,0,6,0,4,83.39137,9.967326,.0431267,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.16254,8.379004,1.386294,6.326921,1 +13,4,0,0,3,429891,0,4353.666,15.48665,0,10,1,148.4267,0,38.47798,0,0,186.9047,0,0,0,4,0,4,83.39137,9.967326,.0431267,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.16254,8.379004,1.386294,5.230598,1 +13,4,0,0,1,429892,0,4353.666,51.94798,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.46748,9.967326,.1572505,,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,72.06626,8.379004,1.386294,,0 +13,4,0,0,2,429892,0,4353.666,52.94798,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.46748,9.967326,.1572505,,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,72.06626,8.379004,1.386294,,0 +13,4,0,0,3,429892,0,4353.666,53.94798,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,74.46748,9.967326,.1572505,,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,72.06626,8.379004,1.386294,,0 +13,4,0,0,1,429893,0,4353.666,50.03696,1,10,1,7.591093,0,10.12146,0,0,17.71255,0,0,0,1,0,4,74.46748,9.967326,.1572505,,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,72.06626,8.379004,1.386294,2.874274,1 +13,4,0,0,2,429893,0,4353.666,51.03696,1,10,1,74.94173,0,0,0,0,74.94173,0,0,0,4,0,4,74.46748,9.967326,.1572505,,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,72.06626,8.379004,1.386294,4.316711,1 +13,4,0,0,3,429893,0,4353.666,52.03696,1,10,1,29.07225,13.31338,0,0,0,42.38564,0,0,0,2,0,4,74.46748,9.967326,.1572505,,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,72.06626,8.379004,1.386294,3.746809,1 +13,4,0,1,1,429894,.0068104,2935.484,21.24025,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,82.4,0,0,72.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,72.7,7.984968,0,,0 +13,4,0,1,2,429894,.0068104,2935.484,22.24025,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,82.4,0,0,72.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,72.7,7.984968,0,,0 +13,4,0,1,3,429894,.0068104,2935.484,23.24025,0,12,1,0,0,23.94186,0,0,23.94186,0,0,0,0,0,1,82.4,0,0,72.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,72.7,7.984968,0,3.175628,1 +13,4,0,0,1,429895,0,4353.666,11.0883,0,10,1,5.060729,5.146761,0,0,0,10.20749,0,0,0,1,0,4,83.39137,9.967326,.0431267,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.16254,8.379004,1.386294,2.323122,1 +13,4,0,0,2,429895,0,4353.666,12.0883,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.39137,9.967326,.0431267,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.16254,8.379004,1.386294,,0 +13,4,0,0,3,429895,0,4353.666,13.0883,0,10,1,6.412997,2.342882,0,0,0,8.755878,0,0,0,1,0,4,83.39137,9.967326,.0431267,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.16254,8.379004,1.386294,2.169725,1 +13,4,0,1,1,429896,.0068104,3197.654,22.86927,1,12,1,143.8512,.8502024,12.14575,0,0,156.8472,0,0,0,7,0,1,82.4,6.9,0,72.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,72.6,8.070485,0,5.055272,1 +13,4,0,1,2,429896,.0068104,3197.654,23.86927,1,12,1,82.13986,0,0,0,0,82.13986,0,0,0,4,0,1,82.4,6.9,0,72.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,72.6,8.070485,0,4.408423,1 +13,4,0,1,3,429896,.0068104,3197.654,24.86927,1,12,1,20.09406,0,0,0,0,20.09406,0,0,0,2,0,1,82.4,6.9,0,72.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,72.6,8.070485,0,3.000424,1 +7,4,25,0,1,429897,0,2007.038,56.79398,1,12,1,34.79251,0,0,0,0,34.79251,0,0,0,2,0,1,74.46748,9.967326,.1572505,,525,525,0,0,0,6.263398,0,3.258096,7.649693,1,0,0,72.06626,7.604913,0,3.549402,1 +7,4,25,0,2,429897,0,2007.038,57.79398,1,12,1,41.95804,0,4.662004,0,0,46.62005,0,0,0,0,6,1,74.46748,9.967326,.1572505,,525,525,0,0,0,6.263398,0,3.258096,7.649693,1,0,0,72.06626,7.604913,0,3.842031,1 +7,4,25,0,3,429897,0,2007.038,58.79398,1,12,1,241.2356,0,0,0,481.6588,722.8944,1,0,0,8,8,1,74.46748,9.967326,.1572505,,525,525,0,0,0,6.263398,0,3.258096,7.649693,1,0,0,72.06626,7.604913,0,6.583263,1 +7,4,25,0,4,429897,0,2007.038,59.79398,1,12,1,203.3051,0,0,0,474.1929,677.4981,1,0,0,4,19,1,74.46748,9.967326,.1572505,,525,525,0,0,0,6.263398,0,3.258096,7.649693,1,0,0,72.06626,7.604913,0,6.518407,1 +7,4,25,0,5,429897,0,2007.038,60.79398,1,12,1,36.88093,13.43519,26.34352,0,1080.067,1156.726,1,0,0,3,0,1,74.46748,9.967326,.1572505,,525,525,0,0,0,6.263398,0,3.258096,7.649693,1,0,0,72.06626,7.604913,0,7.053349,1 +13,4,0,1,1,429899,0,9339.003,29.72758,1,17,1,53.5955,34.49949,0,0,687.1348,775.2298,1,0,0,2,0,4,89.4,3.4,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.142062,1.386294,6.65316,1 +13,4,0,1,2,429899,0,9339.003,30.72758,1,17,1,56.72762,11.93155,17.69808,0,0,86.35725,0,0,0,4,1,5,89.4,3.4,0,68.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.142062,1.609438,4.458493,1 +13,4,0,1,3,429899,0,9339.003,31.72758,1,17,1,414.5529,24.82803,5.116079,0,0,444.497,0,0,0,10,27,5,89.4,3.4,0,68.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.142062,1.609438,6.096943,1 +13,4,0,1,1,429900,0,9339.003,2.225873,1,17,1,78.62104,47.13994,0,0,0,125.761,0,0,0,10,0,4,83.39137,9.967326,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.142062,1.386294,4.834383,1 +13,4,0,1,2,429900,0,9339.003,3.225873,1,17,1,606.751,100.3751,4.688232,0,2737.965,3449.78,2,0,0,12,0,5,83.39137,9.967326,0,85.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.142062,1.609438,8.146066,1 +13,4,0,1,3,429900,0,9339.003,4.225873,1,17,1,206.3199,5.795357,0,0,0,212.1152,0,0,0,6,0,5,83.39137,9.967326,0,85.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.142062,1.609438,5.35713,1 +13,4,0,1,1,429901,0,9339.003,32.95825,0,22,1,235.6078,24.64249,42.39019,0,0,302.6404,0,0,0,8,0,4,87.2,13.8,0,80.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.142062,1.386294,5.712545,1 +13,4,0,1,2,429901,0,9339.003,33.95825,0,22,1,42.54571,15.58837,0,0,0,58.13408,0,0,0,1,0,5,87.2,13.8,0,80.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.142062,1.609438,4.062752,1 +13,4,0,1,3,429901,0,9339.003,34.95825,0,22,1,94.411,12.42476,38.26311,0,0,145.0989,0,0,0,7,0,5,87.2,13.8,0,80.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.142062,1.609438,4.977416,1 +13,4,0,1,1,429902,0,9339.003,5.650924,1,17,1,21.45046,6.128703,0,0,0,27.57916,0,0,0,3,0,4,83.3,9.967326,0,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.142062,1.386294,3.31706,1 +13,4,0,1,2,429902,0,9339.003,6.650924,1,17,1,143.6474,5.344585,0,0,98.45288,247.4449,1,0,0,8,1,5,83.3,9.967326,0,74.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.142062,1.609438,5.511188,1 +13,4,0,1,3,429902,0,9339.003,7.650924,1,17,1,84.41531,2.407567,0,0,0,86.82287,0,0,0,7,0,5,83.3,9.967326,0,74.1,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.142062,1.609438,4.46387,1 +15,4,95,0,1,429934,0,11394.13,50.0616,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,74.46748,9.967326,.1572505,,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,72.06626,9.340941,1.098612,,0 +15,4,95,0,2,429934,0,11394.13,51.0616,0,9,1,34.40559,.2703963,39.62704,0,0,74.30303,0,0,0,3,0,3,74.46748,9.967326,.1572505,,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,72.06626,9.340941,1.098612,4.308152,1 +15,4,95,0,3,429934,0,11394.13,52.0616,0,9,1,33.34758,0,0,0,541.0859,574.4335,1,0,0,6,0,3,74.46748,9.967326,.1572505,,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,72.06626,9.340941,1.098612,6.353384,1 +15,4,95,0,1,429935,0,11394.13,50.51882,1,12,1,33.90688,0,35.67814,0,0,69.58502,0,0,0,5,0,3,74.46748,9.967326,.1572505,,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,72.06626,9.340941,1.098612,4.242549,1 +15,4,95,0,2,429935,0,11394.13,51.51882,1,12,1,0,5.869464,0,0,0,5.869464,0,0,0,0,0,3,74.46748,9.967326,.1572505,,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,72.06626,9.340941,1.098612,1.769763,1 +15,4,95,0,3,429935,0,11394.13,52.51882,1,12,1,36.98162,2.2531,0,0,0,39.23471,0,0,0,4,0,3,74.46748,9.967326,.1572505,,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,72.06626,9.340941,1.098612,3.669562,1 +15,4,95,1,1,429936,0,6920.234,22.59822,1,15,1,72.8745,27.53036,7.591093,0,877.8947,985.8907,2,0,0,12,0,1,89.4,0,0,89.8,0,0,0,0,0,0,0,4.564348,0,0,0,0,89.8,8.842349,0,6.893546,1 +15,4,95,1,2,429936,0,6920.234,23.59822,1,15,1,106.8531,1.468531,0,31.23543,0,108.3217,0,0,3,5,0,1,89.4,0,0,89.8,0,0,0,0,0,0,0,4.564348,0,0,0,0,89.8,8.842349,0,4.685105,1 +15,4,95,1,3,429936,0,6920.234,24.59822,1,15,1,67.764,6.271911,8.336896,0,484.9508,567.3237,1,0,0,5,0,1,89.4,0,0,89.8,0,0,0,0,0,0,0,4.564348,0,0,0,0,89.8,8.842349,0,6.34093,1 +15,4,95,0,1,429937,0,11394.13,17.55236,1,12,1,23.78543,0,0,0,0,23.78543,0,0,0,2,0,3,74.46748,9.967326,.1572505,,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,0,0,0,72.06626,9.340941,1.098612,3.169073,1 +15,4,95,0,2,429937,0,11394.13,18.55236,1,12,1,17.24942,1.794872,0,0,0,19.04429,0,0,0,2,0,3,74.46748,9.967326,.1572505,,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,72.06626,9.340941,1.098612,2.946767,1 +15,4,95,0,3,429937,0,11394.13,19.55236,1,12,1,13.57418,0,0,0,0,13.57418,0,0,0,2,0,3,74.46748,9.967326,.1572505,,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,72.06626,9.340941,1.098612,2.608169,1 +11,4,0,1,1,429961,0,3005.865,60.83778,0,6,1,30.64351,7.318693,0,0,0,37.96221,0,0,0,3,0,2,87.2,17.2,0,78.4,0,923.88,0,0,.6931472,6.828582,0,0,0,0,0,0,78.4,8.008654,.6931472,3.636591,1 +11,4,0,1,2,429961,0,3005.865,61.83778,0,6,1,11.72058,3.558368,0,0,0,15.27895,0,0,0,2,0,2,87.2,17.2,0,78.4,0,923.88,0,0,.6931472,6.828582,0,0,0,0,0,0,78.4,8.008654,.6931472,2.726476,1 +11,4,0,1,3,429961,0,3005.865,62.83778,0,6,1,30.95443,34.94841,0,0,0,65.90284,0,0,0,4,0,2,87.2,17.2,0,78.4,0,923.88,0,0,.6931472,6.828582,0,0,0,0,0,0,78.4,8.008654,.6931472,4.188181,1 +11,4,0,1,1,429962,0,3005.865,60.04928,1,12,1,59.84678,52.3238,0,0,0,112.1706,0,0,0,5,0,2,84.6,6.9,0,60.2,0,923.88,0,0,.6931472,6.828582,0,0,0,0,0,0,60.2,8.008654,.6931472,4.720021,1 +11,4,0,1,2,429962,0,3005.865,61.04928,1,12,1,111.5799,36.58228,0,0,678.345,826.5073,1,0,0,9,5,2,84.6,6.9,0,60.2,0,923.88,0,0,.6931472,6.828582,0,0,0,0,0,0,60.2,8.008654,.6931472,6.717209,1 +11,4,0,1,3,429962,0,3005.865,62.04928,1,12,1,66.16079,27.82459,0,0,0,93.98538,0,0,0,7,0,2,84.6,6.9,0,60.2,0,923.88,0,0,.6931472,6.828582,0,0,0,0,0,0,60.2,8.008654,.6931472,4.543139,1 +14,4,95,1,1,429978,0,7543.108,37.83984,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,66.5,10.3,0,62.5,650,650,0,0,1.386294,6.476973,0,4.564348,6.528265,1,0,0,62.5,8.928522,1.386294,,0 +14,4,95,1,2,429978,0,7543.108,38.83984,1,13,1,11.65501,0,0,0,0,11.65501,0,0,0,1,0,4,66.5,10.3,0,62.5,650,650,0,0,1.386294,6.476973,0,4.564348,6.528265,1,0,0,62.5,8.928522,1.386294,2.455736,1 +14,4,95,1,3,429978,0,7543.108,39.83984,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,66.5,10.3,0,62.5,650,650,0,0,1.386294,6.476973,0,4.564348,6.528265,1,0,0,62.5,8.928522,1.386294,,0 +14,4,95,1,1,429979,0,7543.108,9.908282,1,13,1,30.87045,6.199393,53.13765,0,0,90.20749,0,0,0,3,0,4,78.3,9.967326,0,59.3,650,650,1,1,1.386294,6.476973,0,4.564348,6.528265,0,0,0,59.3,8.928522,1.386294,4.502112,1 +14,4,95,1,2,429979,0,7543.108,10.90828,1,13,1,16.31702,4.531468,0,0,0,20.84848,0,0,0,2,0,4,78.3,9.967326,0,59.3,650,650,1,1,1.386294,6.476973,0,4.564348,6.528265,0,0,0,59.3,8.928522,1.386294,3.037281,1 +14,4,95,1,3,429979,0,7543.108,11.90828,1,13,1,21.37666,0,0,0,0,21.37666,0,0,0,3,0,4,78.3,9.967326,0,59.3,650,650,1,1,1.386294,6.476973,0,4.564348,6.528265,0,0,0,59.3,8.928522,1.386294,3.062299,1 +14,4,95,1,1,429980,0,7543.108,3.37577,0,13,1,17.30769,0,0,0,0,17.30769,0,0,0,1,0,4,83.39137,9.967326,0,77.8,650,650,1,0,1.386294,6.476973,0,4.564348,6.528265,0,0,0,77.8,8.928522,1.386294,2.851151,1 +14,4,95,1,2,429980,0,7543.108,4.37577,0,13,1,121.2121,2.773893,0,0,0,123.986,0,0,0,8,0,4,83.39137,9.967326,0,77.8,650,650,1,0,1.386294,6.476973,0,4.564348,6.528265,0,0,0,77.8,8.928522,1.386294,4.820169,1 +14,4,95,1,3,429980,0,7543.108,5.37577,0,13,1,39.54681,0,0,0,0,39.54681,0,0,0,5,0,4,83.39137,9.967326,0,77.8,650,650,1,0,1.386294,6.476973,0,4.564348,6.528265,0,0,0,77.8,8.928522,1.386294,3.677485,1 +14,4,95,1,1,429981,0,7543.108,38.30801,0,19,1,83.65385,22.25202,0,0,0,105.9059,0,0,0,4,0,4,81.4,0,0,58,650,650,0,0,1.386294,6.476973,0,4.564348,6.528265,1,0,0,58,8.928522,1.386294,4.66255,1 +14,4,95,1,2,429981,0,7543.108,39.30801,0,19,1,15.61772,0,0,0,0,15.61772,0,0,0,1,0,4,81.4,0,0,58,650,650,0,0,1.386294,6.476973,0,4.564348,6.528265,1,0,0,58,8.928522,1.386294,2.748406,1 +14,4,95,1,3,429981,0,7543.108,40.30801,0,19,1,74.49765,0,23.08679,0,0,97.58443,0,0,0,3,1,4,81.4,0,0,58,650,650,0,0,1.386294,6.476973,0,4.564348,6.528265,1,0,0,58,8.928522,1.386294,4.580718,1 +16,4,95,1,1,429993,0,11044.58,32.8898,1,12,1,57.29757,0,28.08704,0,0,85.38461,0,0,0,2,0,4,80.3,13.8,0,80.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,80.7,9.309785,1.386294,4.447166,1 +16,4,95,1,2,429993,0,11044.58,33.8898,1,12,1,11.65501,5.212121,0,0,0,16.86713,0,0,0,1,0,4,80.3,13.8,0,80.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,80.7,9.309785,1.386294,2.825367,1 +16,4,95,1,3,429993,0,11044.58,34.8898,1,12,1,28.00342,11.86404,12.39846,0,0,52.26593,0,0,0,3,0,4,80.3,13.8,0,80.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,80.7,9.309785,1.386294,3.956345,1 +16,4,95,1,4,429993,0,11044.58,35.8898,1,12,1,14.70023,14.14297,21.50269,0,0,50.34589,0,0,0,2,0,4,80.3,13.8,0,80.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,80.7,9.309785,1.386294,3.918917,1 +16,4,95,1,5,429993,0,11044.58,36.8898,1,12,1,137.6888,16.54022,0,0,0,154.229,0,0,0,4,0,4,80.3,13.8,0,80.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,80.7,9.309785,1.386294,5.038439,1 +16,4,95,1,1,429994,0,11044.58,34.74059,0,12,1,79.96964,11.60425,0,0,0,91.57388,0,0,0,7,0,4,85.1,3.4,0,84.1,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.309785,1.386294,4.517146,1 +16,4,95,1,2,429994,0,11044.58,35.74059,0,12,1,5.594406,4.195804,0,0,0,9.79021,0,0,0,1,0,4,85.1,3.4,0,84.1,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.309785,1.386294,2.281383,1 +16,4,95,1,3,429994,0,11044.58,36.74059,0,12,1,10.2608,2.778965,0,0,0,13.03976,0,0,0,2,0,4,85.1,3.4,0,84.1,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.309785,1.386294,2.568003,1 +16,4,95,1,4,429994,0,11044.58,37.74059,0,12,1,753.8394,13.47041,0,0,0,767.3098,0,0,0,4,0,4,85.1,3.4,0,84.1,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.309785,1.386294,6.64289,1 +16,4,95,1,5,429994,0,11044.58,38.74059,0,12,1,40.60415,5.918511,0,0,0,46.52266,0,0,0,5,0,4,85.1,3.4,0,84.1,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.309785,1.386294,3.839939,1 +16,4,95,1,1,429995,0,11044.58,9.563313,0,12,1,20.72368,.9868421,0,0,0,21.71053,0,0,0,2,0,4,85,9.967326,0,77.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,77.8,9.309785,1.386294,3.077797,1 +16,4,95,1,2,429995,0,11044.58,10.56331,0,12,1,25.17483,5.748252,0,0,0,30.92308,0,0,0,5,0,4,85,9.967326,0,77.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,77.8,9.309785,1.386294,3.431503,1 +16,4,95,1,3,429995,0,11044.58,11.56331,0,12,1,0,2.727661,0,0,0,2.727661,0,0,0,0,0,4,85,9.967326,0,77.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,77.8,9.309785,1.386294,1.003445,1 +16,4,95,1,4,429995,0,11044.58,12.56331,0,12,1,5.764796,0,0,0,0,5.764796,0,0,0,1,0,4,85,9.967326,0,77.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,77.8,9.309785,1.386294,1.75177,1 +16,4,95,1,5,429995,0,11044.58,13.56331,0,12,1,46.36459,4.179839,0,0,0,50.54443,0,0,0,2,0,4,85,9.967326,0,77.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,77.8,9.309785,1.386294,3.922853,1 +11,4,0,1,1,430023,0,7910.823,60.51198,1,14,1,40.34729,0,0,0,0,40.34729,0,0,0,3,0,1,69.7,17.2,0,67,0,179.4,0,0,0,5.189618,0,0,0,1,0,0,67,8.976113,0,3.697524,1 +11,4,0,1,2,430023,0,7910.823,61.51198,1,14,1,96.44164,0,0,0,0,96.44164,0,0,0,5,0,1,69.7,17.2,0,67,0,179.4,0,0,0,5.189618,0,0,0,1,0,0,67,8.976113,0,4.568938,1 +11,4,0,1,3,430023,0,7910.823,62.51198,1,14,1,37.2098,0,21.49613,0,0,58.70593,0,0,0,1,1,1,69.7,17.2,0,67,0,179.4,0,0,0,5.189618,0,0,0,1,0,0,67,8.976113,0,4.072541,1 +13,4,0,1,1,430074,0,3774.78,31.60301,0,10,1,62.51277,0,2.002043,0,0,64.51481,0,0,0,4,0,2,89.4,0,0,78.4,300,362.64,0,0,.6931472,5.893411,1,4.564348,5.755076,0,0,0,78.4,8.236362,.6931472,4.166895,1 +13,4,0,1,2,430074,0,3774.78,32.60301,0,10,1,7.032349,0,38.91233,0,0,45.94468,0,0,0,0,1,2,89.4,0,0,78.4,300,362.64,0,0,.6931472,5.893411,1,4.564348,5.755076,0,0,0,78.4,8.236362,.6931472,3.827438,1 +13,4,0,1,3,430074,0,3774.78,33.60301,0,10,1,19.88392,0,0,0,0,19.88392,0,0,0,1,0,3,89.4,0,0,78.4,300,362.64,0,0,1.098612,5.893411,1,4.564348,5.755076,0,0,0,78.4,8.236362,1.098612,2.989911,1 +13,4,0,1,1,430075,0,3774.78,31.42231,1,12,1,56.93565,3.268641,0,0,0,60.20429,0,0,0,3,2,2,83.5,3.4,0,76.1,300,362.64,0,0,.6931472,5.893411,1,4.564348,5.755076,0,0,0,76.1,8.236362,.6931472,4.097744,1 +13,4,0,1,2,430075,0,3774.78,32.42231,1,12,1,271.2143,20.41257,32.81763,0,0,324.4445,0,0,0,2,12,2,83.5,3.4,0,76.1,300,362.64,0,0,.6931472,5.893411,1,4.564348,5.755076,0,0,0,76.1,8.236362,.6931472,5.782115,1 +13,4,0,1,3,430075,0,3774.78,33.42231,1,12,1,251.5047,10.70507,0,0,0,262.2098,0,0,0,2,12,3,83.5,3.4,0,76.1,300,362.64,0,0,1.098612,5.893411,1,4.564348,5.755076,0,0,0,76.1,8.236362,1.098612,5.569145,1 +11,4,0,1,1,430084,0,7640.469,2.097194,0,14,1,7.660879,6.894791,0,0,0,14.55567,0,0,0,1,0,4,83.39137,9.967326,0,100,0,0,1,0,1.386294,0,0,0,0,0,0,0,100,8.941345,1.386294,2.67798,1 +11,4,0,1,2,430084,0,7640.469,3.097194,0,14,1,5.625879,11.16737,0,0,0,16.79325,0,0,0,1,0,5,83.39137,9.967326,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,8.941345,1.609438,2.820977,1 +11,4,0,1,3,430084,0,7640.469,4.097194,0,14,1,24.50559,7.631126,0,0,0,32.13671,0,0,0,3,0,5,83.39137,9.967326,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,8.941345,1.609438,3.469999,1 +11,4,0,1,4,430084,0,7640.469,5.097194,0,14,1,7.754944,13.8038,0,0,0,21.55874,0,0,0,1,0,5,83.39137,9.967326,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,8.941345,1.609438,3.070781,1 +11,4,0,1,5,430084,0,7640.469,6.097194,0,14,1,13.09271,9.907997,0,0,0,23.00071,0,0,0,2,0,5,83.39137,9.967326,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,8.941345,1.609438,3.135525,1 +11,4,0,1,1,430085,0,7640.469,7.318275,0,14,1,0,16.06231,0,0,0,16.06231,0,0,0,0,0,4,80,9.967326,0,100,0,0,1,0,1.386294,0,0,0,0,0,0,0,100,8.941345,1.386294,2.776475,1 +11,4,0,1,2,430085,0,7640.469,8.318275,0,14,1,11.72058,1.209564,24.84763,0,0,37.77778,0,0,0,1,0,5,80,9.967326,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,8.941345,1.609438,3.631721,1 +11,4,0,1,3,430085,0,7640.469,9.318275,0,14,1,7.738607,0,0,0,0,7.738607,0,0,0,1,0,5,80,9.967326,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,8.941345,1.609438,2.046222,1 +11,4,0,1,4,430085,0,7640.469,10.31828,0,14,1,29.85653,4.071345,21.71384,0,0,55.64172,0,0,0,4,0,5,80,9.967326,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,8.941345,1.609438,4.018933,1 +11,4,0,1,5,430085,0,7640.469,11.31828,0,14,1,44.76292,1.769285,13.80042,0,0,60.33263,0,0,0,5,0,5,80,9.967326,0,100,0,0,1,0,1.609438,0,0,0,0,0,0,0,100,8.941345,1.609438,4.099873,1 +11,4,0,1,1,430086,0,7640.469,31.13484,0,12,1,20.68437,4.264555,31.4096,0,0,56.35853,0,0,0,0,1,4,70.2,13.8,0,63.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,63.6,8.941345,1.386294,4.031734,1 +11,4,0,1,2,430086,0,7640.469,32.13484,0,12,1,14.0647,0,0,0,0,14.0647,0,0,0,1,0,5,70.2,13.8,0,63.6,0,0,0,0,1.609438,0,0,0,0,0,0,0,63.6,8.941345,1.609438,2.643668,1 +11,4,0,1,3,430086,0,7640.469,33.13484,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,70.2,13.8,0,63.6,0,0,0,0,1.609438,0,0,0,0,0,0,0,63.6,8.941345,1.609438,,0 +11,4,0,1,4,430086,0,7640.469,34.13484,0,12,1,9.69368,0,29.46879,0,0,39.16247,0,0,0,1,0,5,70.2,13.8,0,63.6,0,0,0,0,1.609438,0,0,0,0,0,0,0,63.6,8.941345,1.609438,3.667719,1 +11,4,0,1,5,430086,0,7640.469,35.13484,0,12,1,28.30856,0,16.27742,0,0,44.58599,0,0,0,2,0,5,70.2,13.8,0,63.6,0,0,0,0,1.609438,0,0,0,0,0,0,0,63.6,8.941345,1.609438,3.79742,1 +11,4,0,1,1,430087,0,7640.469,29.46749,1,14,1,62.35955,13.81512,26.04699,0,1276.839,1379.06,1,0,0,7,1,4,85.1,6.9,1,87.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,87.5,8.941345,1.386294,7.229157,1 +11,4,0,1,2,430087,0,7640.469,30.46749,1,14,1,14.0647,0,0,0,0,14.0647,0,0,0,1,0,5,85.1,6.9,1,87.5,0,0,0,0,1.609438,0,0,0,0,0,0,0,87.5,8.941345,1.609438,2.643668,1 +11,4,0,1,3,430087,0,7640.469,31.46749,1,14,1,10.74806,0,21.49613,0,0,32.2442,0,0,0,1,0,5,85.1,6.9,1,87.5,0,0,0,0,1.609438,0,0,0,0,0,0,0,87.5,8.941345,1.609438,3.473338,1 +11,4,0,1,4,430087,0,7640.469,32.46749,1,14,1,25.59131,0,0,0,0,25.59131,0,0,0,2,0,5,85.1,6.9,1,87.5,0,0,0,0,1.609438,0,0,0,0,0,0,0,87.5,8.941345,1.609438,3.242253,1 +11,4,0,1,5,430087,0,7640.469,33.46749,1,14,1,76.78698,0,25.12385,0,0,101.9108,0,0,0,2,0,5,85.1,6.9,1,87.5,0,0,0,0,1.609438,0,0,0,0,0,0,0,87.5,8.941345,1.609438,4.624098,1 +19,4,25,1,1,430128,0,7333.138,34.88843,1,8,1,58.2085,10.72874,27.32794,0,0,96.26518,0,0,0,5,1,3,88.8,0,0,81.8,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,0,0,0,81.8,8.900295,1.098612,4.567107,1 +19,4,25,1,2,430128,0,7333.138,35.88843,1,8,1,190.3263,27.58974,13.51981,0,0,231.4359,0,0,0,8,1,3,88.8,0,0,81.8,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,0,0,0,81.8,8.900295,1.098612,5.444303,1 +19,4,25,1,3,430128,0,7333.138,36.88843,1,8,1,86.14793,24.79692,0,0,0,110.9448,0,0,0,6,1,3,88.8,0,0,81.8,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,0,0,0,81.8,8.900295,1.098612,4.709033,1 +19,4,25,1,1,430129,0,7333.138,6.631074,0,8,1,17.71255,4.908907,0,0,0,22.62146,0,0,0,2,0,3,90,9.967326,0,100,750,725,1,0,1.098612,6.586172,0,3.258096,8.006368,0,0,0,100,8.900295,1.098612,3.118899,1 +19,4,25,1,2,430129,0,7333.138,7.631074,0,8,1,103.4965,9.79021,0,0,0,113.2867,0,0,0,10,0,3,90,9.967326,0,100,750,725,1,0,1.098612,6.586172,0,3.258096,8.006368,0,0,0,100,8.900295,1.098612,4.729922,1 +19,4,25,1,3,430129,0,7333.138,8.631075,0,8,1,22.23172,0,0,0,0,22.23172,0,0,0,4,0,3,90,9.967326,0,100,750,725,1,0,1.098612,6.586172,0,3.258096,8.006368,0,0,0,100,8.900295,1.098612,3.10152,1 +19,4,25,1,1,430130,0,7333.138,36.58864,0,13,1,118.335,1.007085,0,0,0,119.3421,0,0,0,5,0,3,75.5,3.4,0,86.4,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,0,0,0,86.4,8.900295,1.098612,4.781994,1 +19,4,25,1,2,430130,0,7333.138,37.58864,0,13,1,17.24942,0,0,0,0,17.24942,0,0,0,2,0,3,75.5,3.4,0,86.4,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,0,0,0,86.4,8.900295,1.098612,2.847778,1 +19,4,25,1,3,430130,0,7333.138,38.58864,0,13,1,22.44549,0,0,0,0,22.44549,0,0,0,2,0,3,75.5,3.4,0,86.4,750,725,0,0,1.098612,6.586172,0,3.258096,8.006368,0,0,0,86.4,8.900295,1.098612,3.11109,1 +10,4,50,1,1,430135,0,9883.871,59.67146,1,13,1,29.91828,0,0,0,0,29.91828,0,0,0,0,0,2,82.4,20.7,0,88.6,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,88.6,9.198761,.6931472,3.39847,1 +10,4,50,1,2,430135,0,9883.871,60.67146,1,13,1,119.0811,5.330521,0,0,0,124.4116,0,0,0,6,0,2,82.4,20.7,0,88.6,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,88.6,9.198761,.6931472,4.823596,1 +10,4,50,1,3,430135,0,9883.871,61.67146,1,13,1,51.24678,4.531384,36.54342,0,0,92.32158,0,0,0,2,1,2,82.4,20.7,0,88.6,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,88.6,9.198761,.6931472,4.525278,1 +10,4,50,1,1,430136,0,9883.871,60.59959,0,12,1,30.16343,18.56486,47.75281,0,0,96.4811,0,0,0,1,1,2,86.7,10.3,1,78.4,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,78.4,9.198761,.6931472,4.569347,1 +10,4,50,1,2,430136,0,9883.871,61.59959,0,12,1,51.10173,75.26958,0,0,0,126.3713,0,0,0,5,0,2,86.7,10.3,1,78.4,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,78.4,9.198761,.6931472,4.839224,1 +10,4,50,1,3,430136,0,9883.871,62.59959,0,12,1,57.05073,41.50043,29.23474,0,0,127.7859,0,0,0,2,0,2,86.7,10.3,1,78.4,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,78.4,9.198761,.6931472,4.850356,1 +18,4,25,1,1,430150,0,3311.437,45.26762,1,13,1,262.419,7.970648,0,0,0,270.3897,0,0,0,13,0,2,66,0,0,58,386.8,743.28,0,0,.6931472,6.611073,0,3.258096,7.344202,1,0,0,58,8.105439,.6931472,5.599864,1 +18,4,25,1,2,430150,0,3311.437,46.26762,1,13,1,0,0,23.31002,0,0,23.31002,0,0,0,0,0,2,66,0,0,58,386.8,743.28,0,0,.6931472,6.611073,0,3.258096,7.344202,1,0,0,58,8.105439,.6931472,3.148884,1 +18,4,25,1,3,430150,0,3311.437,47.26762,1,13,1,40.50877,0,26.21633,0,0,66.7251,0,0,0,3,0,2,66,0,0,58,386.8,743.28,0,0,.6931472,6.611073,0,3.258096,7.344202,1,0,0,58,8.105439,.6931472,4.200581,1 +18,4,25,1,1,430151,0,3311.437,9.303217,1,13,1,15.68826,5.541498,0,0,0,21.22976,0,0,0,3,0,2,75,9.967326,0,63,386.8,743.28,1,1,.6931472,6.611073,0,3.258096,7.344202,1,0,0,63,8.105439,.6931472,3.055404,1 +18,4,25,1,2,430151,0,3311.437,10.30322,1,13,1,16.31702,6.969697,0,0,0,23.28671,0,0,0,2,0,2,75,9.967326,0,63,386.8,743.28,1,1,.6931472,6.611073,0,3.258096,7.344202,1,0,0,63,8.105439,.6931472,3.147883,1 +18,4,25,1,3,430151,0,3311.437,11.30322,1,13,1,16.67379,2.244549,0,0,0,18.91834,0,0,0,3,0,2,75,9.967326,0,63,386.8,743.28,1,1,.6931472,6.611073,0,3.258096,7.344202,1,0,0,63,8.105439,.6931472,2.940132,1 +13,4,0,1,1,430161,0,5556.012,29.92471,0,14,1,0,32.92117,0,0,0,32.92117,0,0,0,0,0,3,69.7,3.4,1,59.1,450,743.28,0,0,1.098612,6.611073,1,4.564348,6.160541,1,0,0,59.1,8.622816,1.098612,3.494116,1 +13,4,0,1,2,430161,0,5556.012,30.92471,0,14,1,51.13636,22.11174,0,14.20455,0,73.24811,0,0,1,6,0,2,69.7,3.4,1,59.1,450,743.28,0,0,.6931472,6.611073,1,4.564348,6.160541,1,0,0,59.1,8.622816,.6931472,4.293852,1 +13,4,0,1,3,430161,0,5556.012,31.92471,0,14,1,103.0559,24.46901,0,0,0,127.5249,0,0,0,5,7,2,69.7,3.4,1,59.1,450,743.28,0,0,.6931472,6.611073,1,4.564348,6.160541,1,0,0,59.1,8.622816,.6931472,4.848312,1 +13,4,0,1,1,430162,0,5556.012,1.451061,1,12,.1506849,82.14838,2.060793,0,0,1304.858,1389.068,1,0,0,1,0,3,83.39137,9.967326,0,100,450,743.28,1,1,1.098612,6.611073,1,4.564348,6.160541,1,0,0,100,8.622816,1.098612,7.236388,1 +13,4,0,1,1,430163,0,5556.012,21.85626,1,12,1,78.31015,5.512622,0,0,375.4044,459.2272,1,0,0,4,0,3,53.7,17.2,0,69.3,450,743.28,0,0,1.098612,6.611073,1,4.564348,6.160541,1,0,0,69.3,8.622816,1.098612,6.129545,1 +13,4,0,1,2,430163,0,5556.012,22.85626,1,12,1,109.5881,8.106061,0,0,0,117.6941,0,0,0,5,0,2,53.7,17.2,0,69.3,450,743.28,0,0,.6931472,6.611073,1,4.564348,6.160541,1,0,0,69.3,8.622816,.6931472,4.768089,1 +13,4,0,1,3,430163,0,5556.012,23.85626,1,12,1,24.27395,2.232336,0,0,597.2995,623.8058,1,0,0,2,0,2,53.7,17.2,0,69.3,450,743.28,0,0,.6931472,6.611073,1,4.564348,6.160541,1,0,0,69.3,8.622816,.6931472,6.435839,1 +11,4,0,1,1,430167,0,16622.29,50.5243,0,10,1,18.89683,0,43.62104,0,0,62.51788,0,0,0,2,0,3,77.1,10.3,0,60.2,0,0,0,0,1.098612,0,0,0,0,1,0,0,60.2,9.71856,1.098612,4.135453,1 +11,4,0,1,2,430167,0,16622.29,51.5243,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,77.1,10.3,0,60.2,0,0,0,0,1.098612,0,0,0,0,1,0,0,60.2,9.71856,1.098612,,0 +11,4,0,1,3,430167,0,16622.29,52.5243,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,77.1,10.3,0,60.2,0,0,0,0,1.098612,0,0,0,0,1,0,0,60.2,9.71856,1.098612,,0 +11,4,0,1,1,430168,0,16622.29,21.2731,1,13,1,0,3.651685,0,0,0,3.651685,0,0,0,0,0,3,77.1,0,0,78.4,0,0,0,0,1.098612,0,0,0,0,1,0,0,78.4,9.71856,1.098612,1.295189,1 +11,4,0,1,2,430168,0,16622.29,22.2731,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,77.1,0,0,78.4,0,0,0,0,1.098612,0,0,0,0,1,0,0,78.4,9.71856,1.098612,,0 +11,4,0,1,3,430168,0,16622.29,23.2731,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,77.1,0,0,78.4,0,0,0,0,1.098612,0,0,0,0,1,0,0,78.4,9.71856,1.098612,,0 +11,4,0,1,1,430169,0,16622.29,48.5859,1,12,1,17.87538,8.171603,0,0,0,26.04699,0,0,0,2,0,3,73.9,10.3,0,75,0,0,0,0,1.098612,0,0,0,0,1,0,0,75,9.71856,1.098612,3.259902,1 +11,4,0,1,2,430169,0,16622.29,49.5859,1,12,1,0,0,45.54149,0,0,45.54149,0,0,0,0,0,3,73.9,10.3,0,75,0,0,0,0,1.098612,0,0,0,0,1,0,0,75,9.71856,1.098612,3.818624,1 +11,4,0,1,3,430169,0,16622.29,50.5859,1,12,1,53.61135,0,0,0,0,53.61135,0,0,0,1,0,3,73.9,10.3,0,75,0,0,0,0,1.098612,0,0,0,0,1,0,0,75,9.71856,1.098612,3.981761,1 +19,4,25,1,1,430199,0,7685.044,5.226557,1,12,1,71.27769,21.61257,0,0,0,92.89027,0,0,0,26,0,6,90,9.967326,0,77.8,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.947162,1.791759,4.531419,1 +19,4,25,1,2,430199,0,7685.044,6.226557,1,12,1,37.4053,7.362689,5.392992,0,0,50.16098,0,0,0,14,0,6,90,9.967326,0,77.8,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.947162,1.791759,3.915237,1 +19,4,25,1,3,430199,0,7685.044,7.226557,1,12,1,41.61248,12.6788,0,0,0,54.29129,0,0,0,11,0,6,90,9.967326,0,77.8,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.947162,1.791759,3.994364,1 +19,4,25,1,1,430200,0,7685.044,8.996577,1,12,1,0,1.030397,0,0,0,1.030397,0,0,0,0,0,6,90,9.967326,0,77.8,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.947162,1.791759,.0299439,1 +19,4,25,1,2,430200,0,7685.044,9.996577,1,12,1,23.67424,8.570076,0,0,0,32.24432,0,0,0,3,0,6,90,9.967326,0,77.8,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.947162,1.791759,3.473342,1 +19,4,25,1,3,430200,0,7685.044,10.99658,1,12,1,18.63893,0,0,0,0,18.63893,0,0,0,2,0,6,90,9.967326,0,77.8,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.947162,1.791759,2.925252,1 +19,4,25,1,1,430201,0,7685.044,7.868583,0,12,1,7.727975,1.030397,0,0,0,8.758372,0,0,0,1,0,6,90,9.967326,0,77.8,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.947162,1.791759,2.17001,1 +19,4,25,1,2,430201,0,7685.044,8.868583,0,12,1,18.93939,2.556818,0,0,0,21.49621,0,0,0,2,0,6,90,9.967326,0,77.8,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.947162,1.791759,3.067877,1 +19,4,25,1,3,430201,0,7685.044,9.868583,0,12,1,18.63893,2.340702,0,0,0,20.97963,0,0,0,2,0,6,90,9.967326,0,77.8,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.947162,1.791759,3.043552,1 +19,4,25,1,1,430202,0,7685.044,36.83504,1,12,1,30.9119,7.805255,30.58217,0,0,69.29933,0,0,0,3,0,6,71.8,17.2,0,86.4,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,86.4,8.947162,1.791759,4.238435,1 +19,4,25,1,2,430202,0,7685.044,37.83504,1,12,1,35.51136,17.40057,0,0,0,52.91193,0,0,0,3,0,6,71.8,17.2,0,86.4,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,86.4,8.947162,1.791759,3.968629,1 +19,4,25,1,3,430202,0,7685.044,38.83504,1,12,1,71.84656,19.5492,27.01344,0,0,118.4092,0,0,0,4,0,6,71.8,17.2,0,86.4,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,86.4,8.947162,1.791759,4.774146,1 +19,4,25,1,1,430203,0,7685.044,39.01163,0,8,1,10.30397,0,34.82741,0,0,45.13137,0,0,0,1,0,6,84,10.3,0,83,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,83,8.947162,1.791759,3.809578,1 +19,4,25,1,2,430203,0,7685.044,40.01163,0,8,1,9.469697,6.912879,0,0,0,16.38258,0,0,0,1,0,6,84,10.3,0,83,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,83,8.947162,1.791759,2.796218,1 +19,4,25,1,3,430203,0,7685.044,41.01163,0,8,1,0,6.415258,28.91201,0,0,35.32727,0,0,0,0,0,6,84,10.3,0,83,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,83,8.947162,1.791759,3.564655,1 +19,4,25,1,1,430204,0,7685.044,10.89938,0,12,1,27.04791,3.369397,0,0,0,30.41731,0,0,0,2,0,6,88.3,9.967326,0,77.8,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.947162,1.791759,3.415012,1 +19,4,25,1,2,430204,0,7685.044,11.89938,0,12,1,33.61742,5.776515,0,0,0,39.39394,0,0,0,3,0,6,88.3,9.967326,0,77.8,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.947162,1.791759,3.673612,1 +19,4,25,1,3,430204,0,7685.044,12.89938,0,12,1,16.47161,2.340702,26.0078,0,0,44.82011,0,0,0,1,1,6,88.3,9.967326,0,77.8,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.947162,1.791759,3.802657,1 +15,4,95,1,1,430228,0,6648.094,3.86037,0,14,1,16.70041,0,0,0,0,16.70041,0,0,0,2,0,3,83.39137,9.967326,0,70.4,1000,999.8,1,0,1.098612,6.907555,0,4.564348,6.959049,1,0,0,70.4,8.802236,1.098612,2.815433,1 +15,4,95,1,2,430228,0,6648.094,4.86037,0,14,1,29.37063,0,0,0,0,29.37063,0,0,0,2,0,4,83.39137,9.967326,0,70.4,1000,999.8,1,0,1.386294,6.907555,0,4.564348,6.959049,1,0,0,70.4,8.802236,1.386294,3.379995,1 +15,4,95,1,3,430228,0,6648.094,5.86037,0,14,1,5.130398,0,0,0,0,5.130398,0,0,0,1,0,4,83.39137,9.967326,0,70.4,1000,999.8,1,0,1.386294,6.907555,0,4.564348,6.959049,1,0,0,70.4,8.802236,1.386294,1.635183,1 +15,4,95,1,1,430229,0,6648.094,27.36482,1,14,1,51.11336,4.529352,26.06275,0,1127.576,1209.281,1,0,0,3,0,3,77.1,6.9,0,73.9,1000,999.8,0,0,1.098612,6.907555,0,4.564348,6.959049,1,0,0,73.9,8.802236,1.098612,7.097782,1 +15,4,95,1,2,430229,0,6648.094,28.36482,1,14,1,88.11189,0,0,0,0,88.11189,0,0,0,2,0,4,77.1,6.9,0,73.9,1000,999.8,0,0,1.386294,6.907555,0,4.564348,6.959049,1,0,0,73.9,8.802236,1.386294,4.478608,1 +15,4,95,1,3,430229,0,6648.094,29.36482,1,14,1,10.68833,0,32.49252,0,1249.85,1293.031,1,0,0,1,0,4,77.1,6.9,0,73.9,1000,999.8,0,0,1.386294,6.907555,0,4.564348,6.959049,1,0,0,73.9,8.802236,1.386294,7.164744,1 +15,4,95,1,1,430230,0,6648.094,25.57153,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,93.6,3.4,0,84.1,1000,999.8,0,0,1.098612,6.907555,0,4.564348,6.959049,1,0,0,84.1,8.802236,1.098612,,0 +15,4,95,1,2,430230,0,6648.094,26.57153,0,16,1,58.90443,0,0,0,0,58.90443,0,0,0,3,0,4,93.6,3.4,0,84.1,1000,999.8,0,0,1.386294,6.907555,0,4.564348,6.959049,1,0,0,84.1,8.802236,1.386294,4.075916,1 +15,4,95,1,3,430230,0,6648.094,27.57153,0,16,1,79.41428,.9790509,29.49979,0,0,109.8931,0,0,0,5,0,4,93.6,3.4,0,84.1,1000,999.8,0,0,1.386294,6.907555,0,4.564348,6.959049,1,0,0,84.1,8.802236,1.386294,4.699508,1 +15,4,95,1,1,430290,0,3540.762,28.60233,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,70.7,13.8,0,70.5,859.9,859.9,0,0,1.098612,6.756816,0,4.564348,6.808109,0,1,0,70.5,8.172379,1.098612,,0 +15,4,95,1,2,430290,0,3540.762,29.60233,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,70.7,13.8,0,70.5,859.9,859.9,0,0,1.098612,6.756816,0,4.564348,6.808109,0,1,0,70.5,8.172379,1.098612,,0 +15,4,95,1,1,430291,0,3540.762,7.047228,1,14,1,9.193054,0,0,0,0,9.193054,0,0,0,1,0,3,71.7,9.967326,0,74.1,859.9,859.9,1,1,1.098612,6.756816,0,4.564348,6.808109,0,0,0,74.1,8.172379,1.098612,2.218448,1 +15,4,95,1,2,430291,0,3540.762,8.047228,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,71.7,9.967326,0,74.1,859.9,859.9,1,1,1.098612,6.756816,0,4.564348,6.808109,0,0,0,74.1,8.172379,1.098612,,0 +15,4,95,1,1,430292,0,3540.762,28.52019,1,14,1,21.24106,0,0,0,0,21.24106,0,0,0,0,0,3,65.4,6.9,0,70.5,859.9,859.9,0,0,1.098612,6.756816,0,4.564348,6.808109,0,0,1,70.5,8.172379,1.098612,3.055936,1 +15,4,95,1,2,430292,0,3540.762,29.52019,1,14,1,39.53587,0,27.66057,0,0,67.19643,0,0,0,1,1,3,65.4,6.9,0,70.5,859.9,859.9,0,0,1.098612,6.756816,0,4.564348,6.808109,0,0,1,70.5,8.172379,1.098612,4.20762,1 +11,4,0,1,1,430309,0,7242.229,40.47365,0,12,1,119.3054,15.09704,28.96833,0,0,163.3708,0,0,0,7,1,1,72.3,37.9,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,8.887822,0,5.096023,1 +11,4,0,1,2,430309,0,7242.229,41.47365,0,12,1,176.7464,120.9564,1.636193,0,0,299.339,0,0,0,6,0,1,72.3,37.9,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,8.887822,0,5.701577,1 +11,4,0,1,3,430309,0,7242.229,42.47365,0,12,1,80.93293,96.38435,12.89768,0,0,190.215,0,0,0,4,1,1,72.3,37.9,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,8.887822,0,5.248155,1 +11,4,0,1,1,430336,0,8990.029,14.24504,0,13,1,21.76113,0,0,0,0,21.76113,0,0,0,3,0,5,72.9,0,0,75,0,0,1,0,1.609438,0,0,0,0,1,0,0,75,9.103983,1.609438,3.080126,1 +11,4,0,1,2,430336,0,8990.029,15.24504,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,72.9,0,0,75,0,0,1,0,1.609438,0,0,0,0,1,0,0,75,9.103983,1.609438,,0 +11,4,0,1,3,430336,0,8990.029,16.24504,0,13,1,5.771698,0,0,452.6507,0,5.771698,0,0,31,1,0,5,72.9,0,0,75,0,0,1,0,1.609438,0,0,0,0,1,0,0,75,9.103983,1.609438,1.752966,1 +11,4,0,1,1,430337,0,8990.029,18.79261,1,11,1,27.83401,18.11741,45.44534,0,0,91.39676,0,0,0,4,0,5,70.5,13.8,0,75,0,0,0,0,1.609438,0,0,0,0,0,0,0,75,9.103983,1.609438,4.51521,1 +11,4,0,1,2,430337,0,8990.029,19.79261,1,11,1,16.78322,1.841492,29.13753,0,0,47.76224,0,0,0,2,0,5,70.5,13.8,0,75,0,0,0,0,1.609438,0,0,0,0,0,0,0,75,9.103983,1.609438,3.866235,1 +11,4,0,1,3,430337,0,8990.029,20.79261,1,11,1,12.82599,1.838392,16.97307,0,0,31.63745,0,0,0,1,0,5,70.5,13.8,0,75,0,0,0,0,1.609438,0,0,0,0,0,0,0,75,9.103983,1.609438,3.454342,1 +11,4,0,1,1,430338,0,8990.029,47.81383,1,13,1,84.13461,36.28542,44.88866,0,0,165.3087,0,0,0,6,0,5,53.2,17.2,1,55.7,0,0,0,0,1.609438,0,0,0,0,1,0,0,55.7,9.103983,1.609438,5.107815,1 +11,4,0,1,2,430338,0,8990.029,48.81383,1,13,1,93.2401,30.47086,12.82051,16.31702,0,136.5315,0,0,1,8,0,5,53.2,17.2,1,55.7,0,0,0,0,1.609438,0,0,0,0,1,0,0,55.7,9.103983,1.609438,4.916555,1 +11,4,0,1,3,430338,0,8990.029,49.81383,1,13,1,20.09406,8.871312,28.68747,198.2685,0,57.65284,0,0,14,2,0,5,53.2,17.2,1,55.7,0,0,0,0,1.609438,0,0,0,0,1,0,0,55.7,9.103983,1.609438,4.05444,1 +11,4,0,1,1,430339,0,8990.029,48.31485,0,11,1,84.89372,10.70344,40.23279,0,432.92,568.75,1,0,0,8,0,5,77.7,6.9,0,83,0,0,0,0,1.609438,0,0,0,0,0,0,0,83,9.103983,1.609438,6.343441,1 +11,4,0,1,2,430339,0,8990.029,49.31485,0,11,1,18.88112,0,22.84382,0,0,41.72494,0,0,0,2,0,5,77.7,6.9,0,83,0,0,0,0,1.609438,0,0,0,0,0,0,0,83,9.103983,1.609438,3.731099,1 +11,4,0,1,3,430339,0,8990.029,50.31485,0,11,1,30.78238,4.959384,23.51432,3.740915,0,59.25609,0,0,1,2,1,5,77.7,6.9,0,83,0,0,0,0,1.609438,0,0,0,0,0,0,0,83,9.103983,1.609438,4.081869,1 +11,4,0,1,1,430340,0,8990.029,10.5243,0,13,1,44.54959,7.059717,0,0,0,51.60931,0,0,0,4,0,5,80,9.967326,0,88.9,0,0,1,0,1.609438,0,0,0,0,0,0,0,88.9,9.103983,1.609438,3.943702,1 +11,4,0,1,2,430340,0,8990.029,11.5243,0,13,1,7.692307,0,0,0,0,7.692307,0,0,0,1,0,5,80,9.967326,0,88.9,0,0,1,0,1.609438,0,0,0,0,0,0,0,88.9,9.103983,1.609438,2.040221,1 +11,4,0,1,3,430340,0,8990.029,12.5243,0,13,1,6.51988,0,0,3.740915,0,6.51988,0,0,1,1,0,5,80,9.967326,0,88.9,0,0,1,0,1.609438,0,0,0,0,0,0,0,88.9,9.103983,1.609438,1.874856,1 +11,4,0,0,1,430346,0,8516.716,29.16906,0,12,1,134.9438,0,0,0,0,134.9438,0,0,0,2,0,4,83.5,3.4,0,77.3,0,0,0,0,1.386294,0,0,0,0,0,0,0,77.3,9.049904,1.386294,4.904859,1 +11,4,0,0,2,430346,0,8516.716,30.16906,0,12,1,84.72574,1.964369,0,0,0,86.69011,0,0,0,8,0,5,83.5,3.4,0,77.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,77.3,9.049904,1.609438,4.46234,1 +11,4,0,0,3,430346,0,8516.716,31.16906,0,12,1,85.12468,5.872743,0,0,0,90.99742,0,0,0,0,11,5,83.5,3.4,0,77.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,77.3,9.049904,1.609438,4.510831,1 +11,4,0,0,4,430346,0,8516.716,32.16906,0,12,1,57.77433,1.046917,0,54.28461,0,58.82125,0,0,3,2,0,5,83.5,3.4,0,77.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,77.3,9.049904,1.609438,4.074503,1 +11,4,0,0,5,430346,0,8516.716,33.16906,0,12,1,4.246284,2.770701,0,0,0,7.016985,0,0,0,1,0,5,83.5,3.4,0,77.3,0,0,0,0,1.609438,0,0,0,0,0,0,0,77.3,9.049904,1.609438,1.948334,1 +11,4,0,0,1,430347,0,8516.716,25.96578,1,12,1,48.83554,30.89888,0,0,708.6619,788.3963,1,0,0,1,0,4,72.3,10.3,0,20.5,0,0,0,0,1.386294,0,0,0,0,0,1,0,20.5,9.049904,1.386294,6.670001,1 +11,4,0,0,2,430347,0,8516.716,26.96578,1,12,1,23.44116,13.92874,0,0,0,37.3699,0,0,0,2,0,5,72.3,10.3,0,20.5,0,0,0,0,1.609438,0,0,0,0,0,1,0,20.5,9.049904,1.609438,3.620866,1 +11,4,0,0,3,430347,0,8516.716,27.96578,1,12,1,80.39553,62.61823,0,0,0,143.0138,0,0,0,9,0,5,72.3,10.3,0,20.5,0,0,0,0,1.609438,0,0,0,0,0,1,0,20.5,9.049904,1.609438,4.962941,1 +11,4,0,0,4,430347,0,8516.716,28.96578,1,12,1,49.63164,113.3967,0,19.38736,2124.839,2287.867,1,0,1,8,0,5,72.3,10.3,0,20.5,0,0,0,0,1.609438,0,0,0,0,0,1,0,20.5,9.049904,1.609438,7.735375,1 +11,4,0,0,5,430347,0,8516.716,29.96578,1,12,1,65.03893,83.4678,0,42.46284,0,148.5067,0,0,5,4,0,5,72.3,10.3,0,20.5,0,0,0,0,1.609438,0,0,0,0,0,1,0,20.5,9.049904,1.609438,5.00063,1 +11,4,0,0,1,430348,0,8516.716,5.292265,0,12,1,135.572,15.44433,0,0,0,151.0163,0,0,0,9,0,4,83.3,9.967326,0,77.8,0,0,1,0,1.386294,0,0,0,0,0,0,0,77.8,9.049904,1.386294,5.017388,1 +11,4,0,0,2,430348,0,8516.716,6.292265,0,12,1,177.4543,5.80872,9.376465,0,0,192.6395,0,0,0,10,0,5,83.3,9.967326,0,77.8,0,0,1,0,1.609438,0,0,0,0,0,0,0,77.8,9.049904,1.609438,5.26082,1 +11,4,0,0,3,430348,0,8516.716,7.292265,0,12,1,77.773,10.46002,0,0,0,88.23302,0,0,0,9,0,5,83.3,9.967326,0,77.8,0,0,1,0,1.609438,0,0,0,0,0,0,0,77.8,9.049904,1.609438,4.479981,1 +11,4,0,0,4,430348,0,8516.716,8.292266,0,12,1,44.20318,5.998449,0,0,0,50.20163,0,0,0,6,0,5,83.3,9.967326,0,77.8,0,0,1,0,1.609438,0,0,0,0,0,0,0,77.8,9.049904,1.609438,3.916048,1 +11,4,0,0,5,430348,0,8516.716,9.292266,0,12,1,23.00071,1.302194,0,0,0,24.3029,0,0,0,3,0,5,83.3,9.967326,0,77.8,0,0,1,0,1.609438,0,0,0,0,0,0,0,77.8,9.049904,1.609438,3.190596,1 +11,4,0,0,1,430349,0,8516.716,3.019849,0,12,1,171.3228,23.62104,14.49949,0,0,209.4433,0,0,0,11,0,4,83.39137,9.967326,1,74.1,0,0,1,0,1.386294,0,0,0,0,1,0,0,74.1,9.049904,1.386294,5.344453,1 +11,4,0,0,2,430349,0,8516.716,4.019849,0,12,1,175.3446,20.35631,7.032349,0,0,202.7332,0,0,0,11,0,5,83.39137,9.967326,1,74.1,0,0,1,0,1.609438,0,0,0,0,1,0,0,74.1,9.049904,1.609438,5.311891,1 +11,4,0,0,3,430349,0,8516.716,5.019849,0,12,1,83.40498,23.04815,0,0,0,106.4531,0,0,0,14,0,5,83.39137,9.967326,1,74.1,0,0,1,0,1.609438,0,0,0,0,1,0,0,74.1,9.049904,1.609438,4.667705,1 +11,4,0,0,4,430349,0,8516.716,6.019849,0,12,1,89.95734,18.47228,7.754944,0,611.6635,727.848,2,0,0,9,0,5,83.39137,9.967326,1,74.1,0,0,1,0,1.609438,0,0,0,0,1,0,0,74.1,9.049904,1.609438,6.590092,1 +11,4,0,0,5,430349,0,8516.716,7.019849,0,12,1,95.18755,15.36093,0,0,0,110.5485,0,0,0,11,0,5,83.39137,9.967326,1,74.1,0,0,1,0,1.609438,0,0,0,0,1,0,0,74.1,9.049904,1.609438,4.705454,1 +15,4,95,1,1,430359,0,7910.823,34.6256,0,20,1,0,0,0,0,0,0,0,0,0,0,0,1,91.5,6.9,0,75,1000,975,0,0,0,6.882438,0,4.564348,6.959049,0,0,0,75,8.976113,0,,0 +15,4,95,1,3,430359,0,7910.823,36.6256,0,20,1,0,0,0,0,0,0,0,0,0,0,0,1,91.5,6.9,0,75,1000,975,0,0,0,6.882438,0,4.564348,6.959049,0,0,0,75,8.976113,0,,0 +15,4,95,1,1,430360,0,4771.848,31.52909,1,16,1,15.32176,0,0,0,0,15.32176,0,0,0,1,0,1,87.8,10.3,0,81.8,868,868,0,0,0,6.766191,0,4.564348,6.817485,0,0,0,81.8,8.470698,0,2.729274,1 +15,4,95,1,2,430360,0,4771.848,32.52909,1,16,1,0,0,0,0,0,0,0,0,0,0,0,1,87.8,10.3,0,81.8,868,868,0,0,0,6.766191,0,4.564348,6.817485,0,0,0,81.8,8.470698,0,,0 +15,4,95,1,3,430360,0,4771.848,33.52909,1,16,1,0,0,0,0,0,0,0,0,0,0,0,1,87.8,10.3,0,81.8,868,868,0,0,0,6.766191,0,4.564348,6.817485,0,0,0,81.8,8.470698,0,,0 +13,4,0,1,1,430449,0,7910.823,43.32649,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,67,6.9,0,58,450,425,0,0,1.609438,6.052089,1,4.564348,6.160541,1,0,0,58,8.976113,1.609438,,0 +13,4,0,1,2,430449,0,7910.823,44.32649,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,67,6.9,0,58,450,425,0,0,1.609438,6.052089,1,4.564348,6.160541,1,0,0,58,8.976113,1.609438,,0 +13,4,0,1,3,430449,0,7910.823,45.32649,0,14,1,8.669268,0,0,0,0,8.669268,0,0,0,1,0,5,67,6.9,0,58,450,425,0,0,1.609438,6.052089,1,4.564348,6.160541,1,0,0,58,8.976113,1.609438,2.159784,1 +13,4,0,1,1,430450,0,7910.823,11.74812,0,16,1,0,1.674395,0,0,0,1.674395,0,0,0,0,0,5,51.7,9.967326,0,81.5,450,425,1,0,1.609438,6.052089,1,4.564348,6.160541,0,0,0,81.5,8.976113,1.609438,.5154517,1 +13,4,0,1,2,430450,0,7910.823,12.74812,0,16,1,14.20455,0,0,0,0,14.20455,0,0,0,3,0,5,51.7,9.967326,0,81.5,450,425,1,0,1.609438,6.052089,1,4.564348,6.160541,0,0,0,81.5,8.976113,1.609438,2.653562,1 +13,4,0,1,3,430450,0,7910.823,13.74812,0,16,1,6.501951,0,0,0,0,6.501951,0,0,0,1,0,5,51.7,9.967326,0,81.5,450,425,1,0,1.609438,6.052089,1,4.564348,6.160541,0,0,0,81.5,8.976113,1.609438,1.872102,1 +13,4,0,1,1,430451,0,7910.823,10.57358,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,80,9.967326,0,85.2,450,425,1,0,1.609438,6.052089,1,4.564348,6.160541,0,0,0,85.2,8.976113,1.609438,,0 +13,4,0,1,2,430451,0,7910.823,11.57358,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,80,9.967326,0,85.2,450,425,1,0,1.609438,6.052089,1,4.564348,6.160541,0,0,0,85.2,8.976113,1.609438,,0 +13,4,0,1,3,430451,0,7910.823,12.57358,0,16,1,23.84048,0,23.40702,0,0,47.24751,0,0,0,4,0,5,80,9.967326,0,85.2,450,425,1,0,1.609438,6.052089,1,4.564348,6.160541,0,0,0,85.2,8.976113,1.609438,3.8554,1 +13,4,0,1,1,430452,0,7910.823,37.27036,1,16,1,41.34467,0,0,61.8238,277.6043,318.949,1,0,3,3,0,5,72.9,13.8,0,77.3,450,425,0,0,1.609438,6.052089,1,4.564348,6.160541,0,0,0,77.3,8.976113,1.609438,5.765031,1 +13,4,0,1,2,430452,0,7910.823,38.27036,1,16,1,0,0,0,215.4356,0,0,0,0,13,0,0,5,72.9,13.8,0,77.3,450,425,0,0,1.609438,6.052089,1,4.564348,6.160541,0,0,0,77.3,8.976113,1.609438,,0 +13,4,0,1,3,430452,0,7910.823,39.27036,1,16,1,59.70958,0,0,0,0,59.70958,0,0,0,4,0,5,72.9,13.8,0,77.3,450,425,0,0,1.609438,6.052089,1,4.564348,6.160541,0,0,0,77.3,8.976113,1.609438,4.089492,1 +13,4,0,1,1,430453,0,7910.823,8.695415,0,16,1,31.57136,0,25.75992,0,0,57.33127,0,0,0,1,0,5,86.7,9.967326,0,74.1,450,425,1,0,1.609438,6.052089,1,4.564348,6.160541,0,0,0,74.1,8.976113,1.609438,4.048846,1 +13,4,0,1,2,430453,0,7910.823,9.695415,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,9.967326,0,74.1,450,425,1,0,1.609438,6.052089,1,4.564348,6.160541,0,0,0,74.1,8.976113,1.609438,,0 +13,4,0,1,3,430453,0,7910.823,10.69541,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,9.967326,0,74.1,450,425,1,0,1.609438,6.052089,1,4.564348,6.160541,0,0,0,74.1,8.976113,1.609438,,0 +11,4,0,1,1,430455,0,7629.912,61.70294,1,12,1,88.22268,4.596527,52.98774,0,0,145.8069,0,0,0,4,0,1,83.5,10.3,0,71.6,0,126,0,0,0,4.836282,0,0,0,1,0,0,71.6,8.939962,0,4.982284,1 +11,4,0,1,2,430455,0,7629.912,62.70294,1,12,1,493.2021,17.08861,0,0,3230.849,3741.139,2,0,0,8,11,1,83.5,10.3,0,71.6,0,126,0,0,0,4.836282,0,0,0,1,0,0,71.6,8.939962,0,8.227145,1 +11,4,0,1,3,430455,0,7629.912,63.70294,1,12,.2410959,218.8521,10.10318,0,0,1080.688,1309.643,1,0,0,10,0,1,83.5,10.3,0,71.6,0,126,0,0,0,4.836282,0,0,0,1,0,0,71.6,8.939962,0,7.17751,1 +10,4,50,1,1,430460,0,9882.698,16.36687,0,12,1,164.7166,7.059717,0,0,0,171.7763,0,0,0,9,0,7,88.3,3.4,0,73.9,1000,1000,1,0,1.94591,6.907755,0,3.931826,7.600903,0,0,0,73.9,9.198642,1.94591,5.146193,1 +10,4,50,1,2,430460,0,9882.698,17.36687,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,3.4,0,73.9,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,73.9,9.198642,1.791759,,0 +10,4,50,1,3,430460,0,9882.698,18.36687,0,12,1,5.130398,2.244549,0,0,0,7.374947,0,0,0,1,0,6,88.3,3.4,0,73.9,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,73.9,9.198642,1.791759,1.998089,1 +10,4,50,1,4,430460,0,9882.698,19.36687,0,12,1,47.65565,0,0,0,0,47.65565,0,0,0,0,5,6,88.3,3.4,0,73.9,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,73.9,9.198642,1.791759,3.864001,1 +10,4,50,1,5,430460,0,9882.698,20.36687,0,12,1,95.89041,5.795574,0,0,0,101.686,0,0,0,2,7,6,88.3,3.4,0,73.9,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,73.9,9.198642,1.791759,4.62189,1 +10,4,50,1,1,430461,0,9882.698,16.36687,0,12,1,37.55567,0,32.38866,0,0,69.94433,0,0,0,1,0,7,73.4,6.9,0,78.4,1000,1000,1,0,1.94591,6.907755,0,3.931826,7.600903,0,0,0,78.4,9.198642,1.94591,4.2477,1 +10,4,50,1,2,430461,0,9882.698,17.36687,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,73.4,6.9,0,78.4,1000,1000,1,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,78.4,9.198642,1.791759,,0 +10,4,50,1,3,430461,0,9882.698,18.36687,0,12,1,29.49979,13.87345,29.49979,0,0,72.87302,0,0,0,4,0,6,73.4,6.9,0,78.4,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,78.4,9.198642,1.791759,4.288719,1 +10,4,50,1,4,430461,0,9882.698,19.36687,0,12,1,22.29055,4.304381,0,0,0,26.59493,0,0,0,2,0,6,73.4,6.9,0,78.4,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,78.4,9.198642,1.791759,3.28072,1 +10,4,50,1,5,430461,0,9882.698,20.36687,0,12,1,220.1791,6.041447,30.20724,0,585.8483,842.2761,1,0,0,6,0,6,73.4,6.9,0,78.4,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,78.4,9.198642,1.791759,6.736108,1 +10,4,50,1,1,430462,0,9882.698,45.62081,1,12,1,450.2277,95.77429,45.15688,0,0,591.1589,0,0,0,8,0,7,67,6.9,1,37.5,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,0,0,1,37.5,9.198642,1.94591,6.382085,1 +10,4,50,1,2,430462,0,9882.698,46.62081,1,12,1,385.8089,56.45687,47.08625,0,0,489.352,0,0,0,8,0,6,67,6.9,1,37.5,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,1,37.5,9.198642,1.791759,6.193082,1 +10,4,50,1,3,430462,0,9882.698,47.62081,1,12,1,157.0543,63.08252,32.92005,0,795.1005,1048.157,2,0,0,5,0,6,67,6.9,1,37.5,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,1,37.5,9.198642,1.791759,6.954789,1 +10,4,50,1,4,430462,0,9882.698,48.62081,1,12,1,150.1729,82.20599,0,0,0,232.3789,0,0,0,4,0,6,67,6.9,1,37.5,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,1,37.5,9.198642,1.791759,5.44837,1 +10,4,50,1,5,430462,0,9882.698,49.62081,1,12,1,165.1528,69.70496,33.01721,0,0,267.875,0,0,0,8,0,6,67,6.9,1,37.5,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,1,37.5,9.198642,1.791759,5.59052,1 +10,4,50,1,1,430463,0,9882.698,4.985626,1,12,1,217.419,0,0,0,0,217.419,0,0,0,7,0,7,83.39137,9.967326,0,92.6,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.198642,1.94591,5.381826,1 +10,4,50,1,2,430463,0,9882.698,5.985626,1,12,1,242.8904,11.25874,0,0,0,254.1492,0,0,0,8,0,6,83.39137,9.967326,0,92.6,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.198642,1.791759,5.537921,1 +10,4,50,1,3,430463,0,9882.698,6.985626,1,12,1,29.92732,1.346729,7.695596,0,0,38.96965,0,0,0,5,0,6,83.39137,9.967326,0,92.6,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.198642,1.791759,3.662783,1 +10,4,50,1,4,430463,0,9882.698,7.985626,1,12,1,44.96541,6.51422,0,0,547.9746,599.4543,1,0,0,7,0,6,83.39137,9.967326,0,92.6,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.198642,1.791759,6.39602,1 +10,4,50,1,5,430463,0,9882.698,8.985626,1,12,1,239.7541,1.931858,0,0,0,241.686,0,0,0,7,1,6,83.39137,9.967326,0,92.6,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.198642,1.791759,5.487639,1 +10,4,50,1,1,430464,0,9882.698,45.46475,0,12,1,10.12146,0,0,0,0,10.12146,0,0,0,1,0,7,64.9,27.6,0,69.3,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.198642,1.94591,2.314658,1 +10,4,50,1,2,430464,0,9882.698,46.46475,0,12,1,141.6317,3.379953,0,0,0,145.0117,0,0,0,4,0,6,64.9,27.6,0,69.3,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.198642,1.791759,4.976814,1 +10,4,50,1,3,430464,0,9882.698,47.46475,0,12,1,43.60838,9.298845,40.18811,0,554.72,647.8153,1,0,0,6,0,6,64.9,27.6,0,69.3,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.198642,1.791759,6.473606,1 +10,4,50,1,4,430464,0,9882.698,48.46475,0,12,1,289.1622,14.39277,0,0,0,303.555,0,0,0,10,0,6,64.9,27.6,0,69.3,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.198642,1.791759,5.715563,1 +10,4,50,1,5,430464,0,9882.698,49.46475,0,12,1,34.77345,2.01967,0,0,0,36.79311,0,0,0,5,0,6,64.9,27.6,0,69.3,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.198642,1.791759,3.605311,1 +10,4,50,1,1,430465,0,9882.698,14.40657,1,12,1,5.060729,0,0,0,0,5.060729,0,0,0,1,0,7,76.1,3.4,0,69.3,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.198642,1.94591,1.621511,1 +10,4,50,1,2,430465,0,9882.698,15.40657,1,12,1,51.46853,3.030303,0,0,0,54.49883,0,0,0,1,0,6,76.1,3.4,0,69.3,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.198642,1.791759,3.998179,1 +10,4,50,1,3,430465,0,9882.698,16.40657,1,12,1,75.16032,14.96366,0,0,0,90.12399,0,0,0,7,0,6,76.1,3.4,0,69.3,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.198642,1.791759,4.501186,1 +10,4,50,1,4,430465,0,9882.698,17.40657,1,12,1,163.7202,44.86933,20.75327,0,0,229.3428,0,0,0,16,2,6,76.1,3.4,0,69.3,1000,1000,1,1,1.791759,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.198642,1.791759,5.435218,1 +10,4,50,1,5,430465,0,9882.698,18.40657,1,12,1,18.96733,8.90411,0,0,754.0815,781.9529,1,0,0,1,0,6,76.1,3.4,0,69.3,1000,1000,0,0,1.791759,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.198642,1.791759,6.661795,1 +10,4,50,1,1,430466,0,9882.698,17.59891,0,12,1,2.530364,0,0,0,0,2.530364,0,0,0,0,0,7,56.9,0,0,68.2,1000,1000,1,0,1.94591,6.907755,0,3.931826,7.600903,0,0,0,68.2,9.198642,1.94591,.9283633,1 +13,4,0,1,1,430519,0,4653.373,40.40794,1,14,1,35.4954,0,0,0,0,35.4954,0,0,0,1,0,2,83,3.4,0,88.6,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,0,0,0,88.6,8.445562,.6931472,3.569403,1 +13,4,0,1,2,430519,0,4653.373,41.40794,1,14,1,11.72058,0,0,168.7764,0,11.72058,0,0,9,1,0,2,83,3.4,0,88.6,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,0,0,0,88.6,8.445562,.6931472,2.461346,1 +13,4,0,1,3,430519,0,4653.373,42.40794,1,14,1,23.64574,0,28.37489,103.1814,0,52.02064,0,0,6,2,0,2,83,3.4,0,88.6,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,0,0,0,88.6,8.445562,.6931472,3.951641,1 +13,4,0,1,4,430519,0,4653.373,43.40794,1,14,1,0,0,0,0,0,0,0,0,0,0,0,2,83,3.4,0,88.6,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,0,0,0,88.6,8.445562,.6931472,,0 +13,4,0,1,5,430519,0,4653.373,44.40794,1,14,1,47.7707,11.67728,26.37296,0,0,85.82095,0,0,0,5,0,2,83,3.4,0,88.6,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,0,0,0,88.6,8.445562,.6931472,4.452263,1 +13,4,0,1,1,430520,0,4653.373,43.35387,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.9,0,0,72.7,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,0,0,0,72.7,8.445562,.6931472,,0 +13,4,0,1,2,430520,0,4653.373,44.35387,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.9,0,0,72.7,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,0,0,0,72.7,8.445562,.6931472,,0 +13,4,0,1,3,430520,0,4653.373,45.35387,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.9,0,0,72.7,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,0,0,0,72.7,8.445562,.6931472,,0 +13,4,0,1,4,430520,0,4653.373,46.35387,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.9,0,0,72.7,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,0,0,0,72.7,8.445562,.6931472,,0 +13,4,0,1,5,430520,0,4653.373,47.35387,0,12,1,12.385,0,25.25832,0,0,37.64331,0,0,0,1,0,2,73.9,0,0,72.7,300,1239.16,0,0,.6931472,7.122189,1,4.564348,5.755076,0,0,0,72.7,8.445562,.6931472,3.628155,1 +13,4,0,1,1,430521,0,3342.522,20.2026,1,12,1,84.37181,0,0,0,0,84.37181,0,0,0,6,0,1,57.4,3.4,0,77.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,77.3,8.11478,0,4.435233,1 +13,4,0,1,2,430521,0,3342.522,21.2026,1,12,1,54.61791,0,0,168.7764,0,54.61791,0,0,9,3,0,1,57.4,3.4,0,77.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,77.3,8.11478,0,4.000362,1 +13,4,0,1,3,430521,0,3342.522,22.2026,1,12,1,55.88994,16.98194,32.89768,137.5752,596.0232,701.7928,1,0,8,5,1,1,57.4,3.4,0,77.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,77.3,8.11478,0,6.553638,1 +13,4,0,1,4,430521,0,3342.522,23.2026,1,12,1,63.59054,11.72935,0,0,0,75.31989,0,0,0,6,0,1,57.4,3.4,0,77.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,77.3,8.11478,0,4.321744,1 +13,4,0,1,5,430521,0,3342.522,24.2026,1,12,1,133.581,4.511677,25.12385,0,0,163.2166,0,0,0,2,7,1,57.4,3.4,0,77.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,77.3,8.11478,0,5.095078,1 +16,4,95,1,1,430574,0,8758.357,18.96509,0,11,1,39.5812,0,0,0,0,39.5812,0,0,0,1,0,3,78.2,10.3,0,100,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,100,9.077878,1.098612,3.678354,1 +16,4,95,1,2,430574,0,8758.357,19.96509,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,78.2,10.3,0,100,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,100,9.077878,1.098612,,0 +16,4,95,1,3,430574,0,8758.357,20.96509,0,11,1,0,4.488392,0,0,0,4.488392,0,0,0,0,0,3,78.2,10.3,0,100,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,100,9.077878,1.098612,1.501495,1 +16,4,95,1,1,430575,0,8758.357,59.06092,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,89.4,10.3,0,73.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,73.9,9.077878,1.098612,,0 +16,4,95,1,2,430575,0,8758.357,60.06092,1,12,1,9.376465,0,39.84998,0,0,49.22644,0,0,0,1,0,3,89.4,10.3,0,73.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,73.9,9.077878,1.098612,3.896431,1 +16,4,95,1,3,430575,0,8758.357,61.06092,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,89.4,10.3,0,73.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,73.9,9.077878,1.098612,,0 +16,4,95,1,1,430576,0,8758.357,60.9473,0,12,1,10.2145,0,0,0,0,10.2145,0,0,0,1,0,3,62.8,10.3,1,59.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,59.1,9.077878,1.098612,2.323809,1 +16,4,95,1,2,430576,0,8758.357,61.9473,0,12,1,70.32349,0,39.84998,0,0,110.1735,0,0,0,5,0,3,62.8,10.3,1,59.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,59.1,9.077878,1.098612,4.702056,1 +16,4,95,1,3,430576,0,8758.357,62.9473,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,62.8,10.3,1,59.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,59.1,9.077878,1.098612,,0 +13,4,0,0,1,430587,.0068104,1632.258,18.47775,1,11,1,262.2976,0,0,0,0,262.2976,0,0,0,5,0,1,69.7,6.9,0,65.9,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,65.9,7.398332,0,5.569479,1 +13,4,0,0,2,430587,.0068104,1632.258,19.47775,1,11,1,0,0,0,0,0,0,0,0,0,0,0,1,69.7,6.9,0,65.9,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,65.9,7.398332,0,,0 +13,4,0,0,3,430587,.0068104,1632.258,20.47775,1,11,1,26.07952,0,0,179.5639,1183.198,1209.277,1,0,14,4,0,1,69.7,6.9,0,65.9,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,65.9,7.398332,0,7.097778,1 +11,4,0,1,1,430597,0,13873.9,48.64066,1,15,1,20.74899,28.64372,35.4251,0,0,84.81781,0,0,0,3,0,4,89.4,37.9,1,60.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,60.2,9.537837,1.386294,4.440506,1 +11,4,0,1,2,430597,0,13873.9,49.64066,1,15,1,53.33333,23.07692,0,0,0,76.41026,0,0,0,1,0,4,89.4,37.9,1,60.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,60.2,9.537837,1.386294,4.336117,1 +11,4,0,1,1,430598,0,13873.9,20.29295,1,13,1,16.70041,0,0,0,0,16.70041,0,0,0,2,0,4,70.7,3.4,0,87.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,87.5,9.537837,1.386294,2.815433,1 +11,4,0,1,2,430598,0,13873.9,21.29295,1,13,1,55.94406,0,0,0,0,55.94406,0,0,0,3,0,4,70.7,3.4,0,87.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,87.5,9.537837,1.386294,4.024352,1 +11,4,0,1,3,430598,0,13873.9,22.29295,1,13,1,66.26764,4.617358,0,0,0,70.88499,0,0,0,3,0,2,70.7,3.4,0,87.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,87.5,9.537837,.6931472,4.261059,1 +11,4,0,1,1,430599,0,13873.9,18.04517,1,12,1,80.84514,0,0,0,0,80.84514,0,0,0,6,0,4,67.6,3.4,0,92,0,0,0,0,1.386294,0,0,0,0,0,1,0,92,9.537837,1.386294,4.392536,1 +11,4,0,1,2,430599,0,13873.9,19.04517,1,12,1,224.9184,0,0,0,0,224.9184,0,0,0,2,2,4,67.6,3.4,0,92,0,0,0,0,1.386294,0,0,0,0,0,1,0,92,9.537837,1.386294,5.415738,1 +11,4,0,1,3,430599,0,13873.9,20.04517,1,12,1,72.24455,0,0,0,0,72.24455,0,0,0,6,0,2,67.6,3.4,0,92,0,0,0,0,.6931472,0,0,0,0,0,1,0,92,9.537837,.6931472,4.280057,1 +6,4,25,1,1,430635,0,5668.622,57.78508,1,15,1,6.072875,.7338057,0,0,0,6.80668,0,0,0,1,0,1,80.9,10.3,0,63.6,744.68,744.68,0,0,0,6.612955,0,3.258096,7.999249,1,0,0,63.6,8.642878,0,1.917904,1 +6,4,25,1,2,430635,0,5668.622,58.78508,1,15,1,27.03963,6.410256,0,0,0,33.44988,0,0,0,2,1,1,80.9,10.3,0,63.6,744.68,744.68,0,0,0,6.612955,0,3.258096,7.999249,1,0,0,63.6,8.642878,0,3.510048,1 +6,4,25,1,3,430635,0,5668.622,59.78508,1,15,1,212.484,5.365541,0,0,0,217.8495,0,0,0,3,0,1,80.9,10.3,0,63.6,744.68,744.68,0,0,0,6.612955,0,3.258096,7.999249,1,0,0,63.6,8.642878,0,5.383804,1 +6,4,25,1,4,430635,0,5668.622,60.78508,1,15,1,23.4435,5.015373,0,0,0,28.45888,0,0,0,2,0,1,80.9,10.3,0,63.6,744.68,744.68,0,0,0,6.612955,0,3.258096,7.999249,1,0,0,63.6,8.642878,0,3.34846,1 +6,4,25,1,5,430635,0,5668.622,61.78508,1,15,1,0,0,0,0,0,0,0,0,0,0,0,1,80.9,10.3,0,63.6,744.68,744.68,0,0,0,6.612955,0,3.258096,7.999249,1,0,0,63.6,8.642878,0,,0 +6,4,25,1,1,430637,0,6642.229,28.8898,1,14,1,46.5587,1.290486,0,0,591.6599,639.5091,1,0,0,4,1,3,52.7,6.9,1,54.5,300,300,0,0,1.098612,5.703783,0,3.258096,7.090077,0,0,0,54.5,8.801353,1.098612,6.460701,1 +6,4,25,1,2,430637,0,6642.229,29.8898,1,14,1,20.97902,0,5.594406,0,0,26.57343,0,0,0,2,0,4,52.7,6.9,1,54.5,300,300,0,0,1.386294,5.703783,0,3.258096,7.090077,0,0,0,54.5,8.801353,1.386294,3.279912,1 +6,4,25,1,3,430637,0,6642.229,30.8898,1,14,1,8.12313,4.467721,17.10133,0,0,29.69218,0,0,0,1,0,4,52.7,6.9,1,54.5,300,300,0,0,1.386294,5.703783,0,3.258096,7.090077,0,0,0,54.5,8.801353,1.386294,3.390884,1 +6,4,25,1,4,430637,0,6642.229,31.8898,1,14,1,9.992313,0,0,0,0,9.992313,0,0,0,1,0,4,52.7,6.9,1,54.5,300,300,0,0,1.386294,5.703783,0,3.258096,7.090077,0,0,0,54.5,8.801353,1.386294,2.301816,1 +6,4,25,1,5,430637,0,6642.229,32.8898,1,14,1,5.268704,0,17.2111,0,0,22.4798,0,0,0,1,0,4,52.7,6.9,1,54.5,300,300,0,0,1.386294,5.703783,0,3.258096,7.090077,0,0,0,54.5,8.801353,1.386294,3.112617,1 +6,4,25,1,1,430638,0,6642.229,29.63724,0,12,1,21.25506,102.7328,0,0,0,123.9879,0,0,0,3,0,3,54.3,10.3,0,43.2,300,300,0,0,1.098612,5.703783,0,3.258096,7.090077,1,0,0,43.2,8.801353,1.098612,4.820184,1 +6,4,25,1,2,430638,0,6642.229,30.63724,0,12,1,54.54546,137.8881,0,0,0,192.4336,0,0,0,6,0,4,54.3,10.3,0,43.2,300,300,0,0,1.386294,5.703783,0,3.258096,7.090077,1,0,0,43.2,8.801353,1.386294,5.259751,1 +6,4,25,1,3,430638,0,6642.229,31.63724,0,12,1,126.9773,155.4895,0,0,0,282.4669,0,0,0,7,0,4,54.3,10.3,0,43.2,300,300,0,0,1.386294,5.703783,0,3.258096,7.090077,1,0,0,43.2,8.801353,1.386294,5.643561,1 +6,4,25,1,4,430638,0,6642.229,32.63723,0,12,1,26.90238,155.073,0,0,0,181.9754,0,0,0,3,0,4,54.3,10.3,0,43.2,300,300,0,0,1.386294,5.703783,0,3.258096,7.090077,1,0,0,43.2,8.801353,1.386294,5.203872,1 +6,4,25,1,5,430638,0,6642.229,33.63723,0,12,1,220.8465,153.9972,3.512469,0,977.5096,1355.866,1,0,0,14,5,4,54.3,10.3,0,43.2,300,300,0,0,1.386294,5.703783,0,3.258096,7.090077,1,0,0,43.2,8.801353,1.386294,7.212195,1 +6,4,25,1,1,430639,0,6642.229,2.902122,1,14,1,6.072875,7.22166,0,0,0,13.29453,0,0,0,1,0,3,83.39137,9.967326,0,88.9,300,300,1,1,1.098612,5.703783,0,3.258096,7.090077,0,0,0,88.9,8.801353,1.098612,2.587353,1 +6,4,25,1,2,430639,0,6642.229,3.902122,1,14,1,6.993007,4.559441,0,0,0,11.55245,0,0,0,1,0,4,83.39137,9.967326,0,88.9,300,300,1,1,1.386294,5.703783,0,3.258096,7.090077,0,0,0,88.9,8.801353,1.386294,2.446897,1 +6,4,25,1,3,430639,0,6642.229,4.902122,1,14,1,12.82599,6.853356,0,0,0,19.67935,0,0,0,2,0,4,83.39137,9.967326,0,88.9,300,300,1,1,1.386294,5.703783,0,3.258096,7.090077,0,0,0,88.9,8.801353,1.386294,2.97957,1 +6,4,25,1,4,430639,0,6642.229,5.902122,1,14,1,11.52959,6.437356,0,0,0,17.96695,0,0,0,2,0,4,83.39137,9.967326,0,88.9,300,300,1,1,1.386294,5.703783,0,3.258096,7.090077,0,0,0,88.9,8.801353,1.386294,2.888534,1 +6,4,25,1,5,430639,0,6642.229,6.902122,1,14,1,14.40112,5.721812,0,0,0,20.12294,0,0,0,2,0,4,83.39137,9.967326,0,88.9,300,300,1,1,1.386294,5.703783,0,3.258096,7.090077,0,0,0,88.9,8.801353,1.386294,3.00186,1 +14,4,95,1,1,430646,0,6730.792,20.282,1,11,1,16.44737,0,0,0,0,16.44737,0,0,0,1,0,4,69.7,3.4,0,58,456.5,456.5,0,0,1.386294,6.123589,0,4.564348,6.174882,1,0,0,58,8.814597,1.386294,2.800165,1 +14,4,95,1,2,430646,0,6730.792,21.282,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,69.7,3.4,0,58,456.5,456.5,0,0,1.386294,6.123589,0,4.564348,6.174882,1,0,0,58,8.814597,1.386294,,0 +14,4,95,1,3,430646,0,6730.792,22.282,1,11,1,23.51432,0,0,0,0,23.51432,0,0,0,2,1,4,69.7,3.4,0,58,456.5,456.5,0,0,1.386294,6.123589,0,4.564348,6.174882,1,0,0,58,8.814597,1.386294,3.15761,1 +14,4,95,1,1,430647,0,6730.792,39.21424,1,10,1,10.37449,0,0,0,0,10.37449,0,0,0,0,0,4,53.2,24.1,0,61.4,456.5,456.5,0,0,1.386294,6.123589,0,4.564348,6.174882,1,0,0,61.4,8.814597,1.386294,2.33935,1 +14,4,95,1,2,430647,0,6730.792,40.21424,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,53.2,24.1,0,61.4,456.5,456.5,0,0,1.386294,6.123589,0,4.564348,6.174882,1,0,0,61.4,8.814597,1.386294,,0 +14,4,95,1,3,430647,0,6730.792,41.21424,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,53.2,24.1,0,61.4,456.5,456.5,0,0,1.386294,6.123589,0,4.564348,6.174882,1,0,0,61.4,8.814597,1.386294,,0 +14,4,95,1,1,430648,0,6730.792,45.94661,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,56.4,13.8,0,59.2,456.5,456.5,0,0,1.386294,6.123589,0,4.564348,6.174882,1,0,0,59.2,8.814597,1.386294,,0 +14,4,95,1,2,430648,0,6730.792,46.94661,0,9,1,11.65501,0,0,0,0,11.65501,0,0,0,0,2,4,56.4,13.8,0,59.2,456.5,456.5,0,0,1.386294,6.123589,0,4.564348,6.174882,1,0,0,59.2,8.814597,1.386294,2.455736,1 +14,4,95,1,3,430648,0,6730.792,47.94661,0,9,1,3.420265,5.079093,0,0,0,8.499359,0,0,0,0,0,4,56.4,13.8,0,59.2,456.5,456.5,0,0,1.386294,6.123589,0,4.564348,6.174882,1,0,0,59.2,8.814597,1.386294,2.139991,1 +14,4,95,1,1,430649,0,6730.792,17.3525,0,10,1,21.76113,8.830972,0,0,0,30.59211,0,0,0,3,0,4,83.5,3.4,0,70.5,456.5,456.5,1,0,1.386294,6.123589,0,4.564348,6.174882,1,0,0,70.5,8.814597,1.386294,3.420742,1 +14,4,95,1,2,430649,0,6730.792,18.3525,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.5,3.4,0,70.5,456.5,456.5,0,0,1.386294,6.123589,0,4.564348,6.174882,1,0,0,70.5,8.814597,1.386294,,0 +14,4,95,1,3,430649,0,6730.792,19.3525,0,10,1,302.1804,10.51304,1.710132,0,0,314.4036,0,0,0,4,3,4,83.5,3.4,0,70.5,456.5,456.5,0,0,1.386294,6.123589,0,4.564348,6.174882,1,0,0,70.5,8.814597,1.386294,5.750678,1 +14,4,95,1,1,430650,0,7910.823,60.45722,1,11,1,0,0,0,0,0,0,0,0,0,0,0,1,97.9,6.9,0,76.1,225,225,0,0,0,5.416101,0,4.564348,5.467394,1,0,0,76.1,8.976113,0,,0 +14,4,95,1,2,430650,0,7910.823,61.45722,1,11,1,0,0,0,0,0,0,0,0,0,0,0,1,97.9,6.9,0,76.1,225,225,0,0,0,5.416101,0,4.564348,5.467394,1,0,0,76.1,8.976113,0,,0 +14,4,95,1,3,430650,0,7910.823,62.45722,1,11,1,0,0,0,0,0,0,0,0,0,0,0,1,97.9,6.9,0,76.1,225,225,0,0,0,5.416101,0,4.564348,5.467394,1,0,0,76.1,8.976113,0,,0 +14,4,95,1,1,430666,0,10612.9,27.02259,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,81.9,3.4,0,89.8,900,900,0,0,.6931472,6.802395,0,4.564348,6.853688,0,0,0,89.8,9.26992,.6931472,,0 +14,4,95,1,2,430666,0,10612.9,28.02259,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,81.9,3.4,0,89.8,900,900,0,0,.6931472,6.802395,0,4.564348,6.853688,0,0,0,89.8,9.26992,.6931472,,0 +14,4,95,1,3,430666,0,10612.9,29.02259,0,12,1,64.94228,2.330055,30.14109,0,0,97.41342,0,0,0,3,0,2,81.9,3.4,0,89.8,900,900,0,0,.6931472,6.802395,0,4.564348,6.853688,0,0,0,89.8,9.26992,.6931472,4.578964,1 +14,4,95,1,1,430667,0,10612.9,24.33949,1,15,1,0,6.508097,0,0,0,6.508097,0,0,0,0,0,2,81.9,10.3,1,92,900,900,0,0,.6931472,6.802395,0,4.564348,6.853688,0,0,0,92,9.26992,.6931472,1.873047,1 +14,4,95,1,2,430667,0,10612.9,25.33949,1,15,1,84.26573,9.090909,0,0,0,93.35664,0,0,0,5,0,2,81.9,10.3,1,92,900,900,0,0,.6931472,6.802395,0,4.564348,6.853688,0,0,0,92,9.26992,.6931472,4.536427,1 +14,4,95,1,3,430667,0,10612.9,26.33949,1,15,1,121.8469,28.96109,31.25267,0,716.6952,898.7559,1,0,0,8,1,2,81.9,10.3,1,92,900,900,0,0,.6931472,6.802395,0,4.564348,6.853688,0,0,0,92,9.26992,.6931472,6.801012,1 +6,4,25,1,1,430686,0,9087.39,20.47912,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,85.1,0,0,96.6,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,96.6,9.114753,.6931472,,0 +6,4,25,1,2,430686,0,9087.39,21.47912,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,85.1,0,0,96.6,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,96.6,9.114753,.6931472,,0 +6,4,25,1,3,430686,0,9087.39,22.47912,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,85.1,0,0,96.6,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,96.6,9.114753,.6931472,,0 +10,4,50,1,1,430717,0,10822.87,50.65024,0,12,1,12.76813,27.57916,0,0,0,40.34729,0,0,0,2,0,2,79.8,6.9,0,73.9,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,73.9,9.28951,.6931472,3.697524,1 +10,4,50,1,2,430717,0,10822.87,51.65024,0,12,.9534246,429.278,35.18518,0,0,4233.727,4698.19,2,0,0,14,0,2,79.8,6.9,0,73.9,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,73.9,9.28951,.6931472,8.454933,1 +10,4,50,1,1,430718,0,10822.87,45.76044,1,12,1,68.94791,0,47.59959,0,544.0347,660.5822,1,0,0,6,0,2,85.6,6.9,0,96.6,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,96.6,9.28951,.6931472,6.493122,1 +10,4,50,1,2,430718,0,10822.87,46.76044,1,12,1,23.44116,0,0,0,0,23.44116,0,0,0,2,0,2,85.6,6.9,0,96.6,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,96.6,9.28951,.6931472,3.154494,1 +10,4,50,1,3,430718,0,10822.87,47.76044,1,12,1,145.6492,10.38263,0,0,0,156.0318,0,0,0,7,0,1,85.6,6.9,0,96.6,1000,1000,0,0,0,6.907755,0,3.931826,7.600903,0,0,0,96.6,9.28951,0,5.05006,1 +10,4,50,1,1,430719,0,2957.185,19.99726,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,75,0,0,79.5,45,311.64,0,0,0,5.741848,0,3.931826,4.49981,0,0,0,79.5,7.992331,0,,0 +10,4,50,1,2,430719,0,2957.185,20.99726,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,75,0,0,79.5,45,311.64,0,0,0,5.741848,0,3.931826,4.49981,0,0,0,79.5,7.992331,0,,0 +10,4,50,1,3,430719,0,2957.185,21.99726,0,12,1,2.137666,0,0,0,0,2.137666,0,0,0,0,0,1,75,0,0,79.5,45,311.64,0,0,0,5.741848,0,3.931826,4.49981,0,0,0,79.5,7.992331,0,.7597145,1 +11,4,0,1,1,430747,0,7230.499,61.16085,0,12,1,124.7875,38.50708,46.05263,0,0,209.3472,0,0,0,8,2,1,78.7,10.3,0,67,0,311.64,0,0,0,5.741848,0,0,0,0,1,0,67,8.886202,0,5.343994,1 +11,4,0,1,2,430747,0,7230.499,62.16085,0,12,1,147.3194,23.56177,0,0,0,170.8811,0,0,0,11,0,1,78.7,10.3,0,67,0,311.64,0,0,0,5.741848,0,0,0,0,1,0,67,8.886202,0,5.140968,1 +11,4,0,1,3,430747,0,7230.499,63.16085,0,12,1,88.82001,45.04489,30.78238,0,0,164.6473,0,0,0,11,0,1,78.7,10.3,0,67,0,311.64,0,0,0,5.741848,0,0,0,0,1,0,67,8.886202,0,5.103806,1 +11,4,0,1,1,430748,0,4414.663,33.80698,0,12,1,20.42901,10.7048,0,0,163.5444,194.6782,1,0,0,3,0,1,71.8,6.9,0,79.5,0,126,0,0,0,4.836282,0,0,0,1,0,0,79.5,8.392913,0,5.271348,1 +11,4,0,1,2,430748,0,4414.663,34.80698,0,12,1,126.8636,6.361931,0,0,631.2236,764.4492,1,0,0,11,0,1,71.8,6.9,0,79.5,0,126,0,0,0,4.836282,0,0,0,1,0,0,79.5,8.392913,0,6.639155,1 +11,4,0,1,3,430748,0,4414.663,35.80698,0,12,1,90.06879,0,0,0,0,90.06879,0,0,0,8,0,1,71.8,6.9,0,79.5,0,126,0,0,0,4.836282,0,0,0,1,0,0,79.5,8.392913,0,4.500574,1 +13,4,0,1,1,430778,0,15019.35,53.03217,0,8,1,12.76813,0,0,0,0,12.76813,0,0,0,1,0,2,77.1,13.8,0,61.4,300,369.98,0,0,.6931472,5.913449,1,4.564348,5.755076,0,0,0,61.4,9.617162,.6931472,2.546952,1 +13,4,0,1,2,430778,0,15019.35,54.03217,0,8,1,10.31411,0,0,0,0,10.31411,0,0,0,0,1,2,77.1,13.8,0,61.4,300,369.98,0,0,.6931472,5.913449,1,4.564348,5.755076,0,0,0,61.4,9.617162,.6931472,2.333513,1 +13,4,0,1,3,430778,0,15019.35,55.03217,0,8,1,14.38091,0,0,0,0,14.38091,0,0,0,1,0,2,77.1,13.8,0,61.4,300,369.98,0,0,.6931472,5.913449,1,4.564348,5.755076,0,0,0,61.4,9.617162,.6931472,2.665902,1 +13,4,0,1,4,430778,0,15019.35,56.03217,0,8,1,49.86429,0,29.08104,0,0,78.94533,0,0,0,2,1,2,77.1,13.8,0,61.4,300,369.98,0,0,.6931472,5.913449,1,4.564348,5.755076,0,0,0,61.4,9.617162,.6931472,4.368755,1 +13,4,0,1,5,430778,0,15019.35,57.03217,0,8,1,0,0,0,0,0,0,0,0,0,0,0,2,77.1,13.8,0,61.4,300,369.98,0,0,.6931472,5.913449,1,4.564348,5.755076,0,0,0,61.4,9.617162,.6931472,,0 +13,4,0,1,1,430779,0,15019.35,53.65366,1,12,1,17.87538,1.736466,0,0,0,19.61185,0,0,0,2,0,2,78.7,10.3,0,67,300,369.98,0,0,.6931472,5.913449,1,4.564348,5.755076,1,0,0,67,9.617162,.6931472,2.976134,1 +13,4,0,1,2,430779,0,15019.35,54.65366,1,12,1,23.44116,10.03282,28.12939,0,0,61.60337,0,0,0,2,0,2,78.7,10.3,0,67,300,369.98,0,0,.6931472,5.913449,1,4.564348,5.755076,1,0,0,67,9.617162,.6931472,4.120717,1 +13,4,0,1,3,430779,0,15019.35,55.65366,1,12,1,15.04729,0,0,0,0,15.04729,0,0,0,1,0,2,78.7,10.3,0,67,300,369.98,0,0,.6931472,5.913449,1,4.564348,5.755076,1,0,0,67,9.617162,.6931472,2.711198,1 +13,4,0,1,4,430779,0,15019.35,56.65366,1,12,1,39.55021,13.2532,17.44862,0,0,70.25204,0,0,0,4,1,2,78.7,10.3,0,67,300,369.98,0,0,.6931472,5.913449,1,4.564348,5.755076,1,0,0,67,9.617162,.6931472,4.25209,1 +13,4,0,1,5,430779,0,15019.35,57.65366,1,12,1,19.46214,2.034678,8.492569,0,0,29.98938,0,0,0,1,0,2,78.7,10.3,0,67,300,369.98,0,0,.6931472,5.913449,1,4.564348,5.755076,1,0,0,67,9.617162,.6931472,3.400843,1 +11,4,0,1,1,430791,0,7631.085,49.28953,1,17,1,31.66496,2.808989,40.34729,265.5771,0,74.82124,0,0,13,2,1,1,75.5,6.9,0,77.3,0,0,0,0,0,0,0,0,0,1,0,0,77.3,8.940116,0,4.315102,1 +11,4,0,1,2,430791,0,7631.085,50.28953,1,17,1,841.7253,19.99531,0,18.75293,1302.883,2164.604,1,0,1,10,1,1,75.5,6.9,0,77.3,0,0,0,0,0,0,0,0,0,1,0,0,77.3,8.940116,0,7.679993,1 +11,4,0,1,3,430791,0,7631.085,51.28953,1,17,1,570.8082,147.6784,0,171.969,0,718.4867,0,0,10,12,47,1,75.5,6.9,0,77.3,0,0,0,0,0,0,0,0,0,1,0,0,77.3,8.940116,0,6.577147,1 +11,4,0,1,4,430791,0,7631.085,52.28953,1,17,1,145.3083,66.34354,29.58899,114.3854,6332.481,6573.722,4,0,7,11,0,1,75.5,6.9,0,77.3,0,0,0,0,0,0,0,0,0,1,0,0,77.3,8.940116,0,8.790835,1 +11,4,0,1,5,430791,0,7631.085,53.28953,1,17,1,50.07077,42.09129,43.17056,81.38712,0,135.3326,0,0,5,4,1,1,75.5,6.9,0,77.3,0,0,0,0,0,0,0,0,0,1,0,0,77.3,8.940116,0,4.907736,1 +11,4,0,1,1,430864,0,5639.296,.2600958,0,11,1,49.03984,14.35138,0,0,69.23902,132.6302,1,0,0,7,0,5,83.39137,9.967326,0,85.2,0,225.6,1,0,1.609438,5.418764,0,0,0,0,0,0,85.2,8.637691,1.609438,4.887565,1 +11,4,0,1,2,430864,0,5639.296,1.260096,0,11,1,15.00234,0,0,0,0,15.00234,0,0,0,3,0,5,83.39137,9.967326,0,85.2,0,225.6,1,0,1.609438,5.418764,0,0,0,0,0,0,85.2,8.637691,1.609438,2.708206,1 +11,4,0,1,3,430864,0,5639.296,2.260096,0,11,1,0,3.22442,0,0,0,3.22442,0,0,0,0,0,5,83.39137,9.967326,0,85.2,0,225.6,1,0,1.609438,5.418764,0,0,0,0,0,0,85.2,8.637691,1.609438,1.170753,1 +18,4,25,1,1,430866,0,9322.581,.2299795,0,12,1,37.79367,10.79673,0,0,0,48.5904,0,0,0,5,0,3,83.39137,9.967326,0,92.6,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.140302,1.098612,3.883426,1 +18,4,25,1,2,430866,0,9322.581,1.22998,0,12,1,37.03704,10.73605,0,0,441.022,488.7951,1,0,0,7,0,3,83.39137,9.967326,0,92.6,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.140302,1.098612,6.191944,1 +18,4,25,1,3,430866,0,9322.581,2.22998,0,12,1,25.79536,3.379192,0,0,0,29.17455,0,0,0,5,0,3,83.39137,9.967326,0,92.6,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.140302,1.098612,3.373297,1 +18,4,25,1,4,430866,0,9322.581,3.22998,0,12,1,21.71384,1.613028,0,0,0,23.32687,0,0,0,2,0,3,83.39137,9.967326,0,92.6,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.140302,1.098612,3.149606,1 +18,4,25,1,5,430866,0,9322.581,4.22998,0,12,1,3.53857,0,0,0,0,3.53857,0,0,0,1,0,3,83.39137,9.967326,0,92.6,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.140302,1.098612,1.263723,1 +13,4,0,0,1,430867,0,995.3079,20.81588,1,12,1,5.107252,8.273748,0,0,0,13.381,0,0,0,1,0,3,50,10.3,0,39.8,300,313.94,0,0,1.098612,5.749202,1,4.564348,5.755076,0,0,0,39.8,6.904057,1.098612,2.593836,1 +13,4,0,0,2,430867,0,995.3079,21.81588,1,12,1,25.08204,23.09423,0,0,626.0197,674.196,1,0,0,0,0,3,50,10.3,0,39.8,300,313.94,0,0,1.098612,5.749202,1,4.564348,5.755076,0,0,0,39.8,6.904057,1.098612,6.513521,1 +13,4,0,0,3,430867,0,995.3079,22.81588,1,12,1,28.15993,2.575237,0,0,652.73,683.4651,1,0,0,1,0,4,50,10.3,0,39.8,300,313.94,0,0,1.386294,5.749202,1,4.564348,5.755076,0,0,0,39.8,6.904057,1.386294,6.527176,1 +13,4,0,0,4,430867,0,995.3079,23.81588,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,50,10.3,0,39.8,300,313.94,0,0,1.609438,5.749202,1,4.564348,5.755076,0,0,0,39.8,6.904057,1.609438,,0 +13,4,0,0,5,430867,0,995.3079,24.81588,1,12,1,39.54353,4.830149,24.06228,0,0,68.43595,0,0,0,2,1,5,50,10.3,0,39.8,300,313.94,0,0,1.609438,5.749202,1,4.564348,5.755076,0,0,0,39.8,6.904057,1.609438,4.225898,1 +14,4,95,0,1,430870,0,7712.61,.128679,1,16,1,42.90572,8.820196,0,0,0,51.72591,0,0,0,6,0,4,83.39137,9.967326,.0268456,,585.8,585.8,1,1,1.386294,6.372978,0,4.564348,6.424272,0,0,0,79.22147,8.950742,1.386294,3.945959,1 +14,4,95,0,2,430870,0,7712.61,1.128679,1,16,1,42.49527,18.63163,0,0,0,61.12689,0,0,0,3,0,4,83.39137,9.967326,.0268456,,585.8,585.8,1,1,1.386294,6.372978,0,4.564348,6.424272,0,0,0,79.22147,8.950742,1.386294,4.112952,1 +14,4,95,0,3,430870,0,7712.61,2.128679,1,16,1,27.56827,4.408322,0,0,0,31.97659,0,0,0,2,0,4,83.39137,9.967326,.0268456,,585.8,585.8,1,1,1.386294,6.372978,0,4.564348,6.424272,0,0,0,79.22147,8.950742,1.386294,3.465004,1 +14,4,95,0,4,430870,0,7712.61,3.128679,1,16,1,21.66207,0,0,0,0,21.66207,0,0,0,3,0,4,83.39137,9.967326,.0268456,,585.8,585.8,1,1,1.386294,6.372978,0,4.564348,6.424272,0,0,0,79.22147,8.950742,1.386294,3.075563,1 +14,4,95,0,5,430870,0,7712.61,4.128679,1,16,1,15.7424,0,0,0,0,15.7424,0,0,0,2,0,4,83.39137,9.967326,.0268456,,585.8,585.8,1,1,1.386294,6.372978,0,4.564348,6.424272,0,0,0,79.22147,8.950742,1.386294,2.756357,1 +11,4,0,1,1,430875,0,8465.689,27.28542,0,16,1,12.90486,2.297571,0,121.4575,0,15.20243,0,0,12,1,0,4,87.8,0,0,92,0,570.48,0,0,1.386294,6.346478,0,0,0,0,0,0,92,9.043895,1.386294,2.721455,1 +11,4,0,1,2,430875,0,8465.689,28.28542,0,16,1,41.79487,6.573427,0,0,0,48.3683,0,0,0,2,0,4,87.8,0,0,92,0,570.48,0,0,1.386294,6.346478,0,0,0,0,0,0,92,9.043895,1.386294,3.878844,1 +11,4,0,1,3,430875,0,8465.689,29.28542,0,16,1,36.23343,4.061565,0,26.72082,0,40.295,0,0,2,1,0,4,87.8,0,0,92,0,570.48,0,0,1.386294,6.346478,0,0,0,0,0,0,92,9.043895,1.386294,3.696227,1 +16,4,95,1,1,430879,0,11044.58,.4298426,0,12,1,29.49393,7.869433,0,0,0,37.36336,0,0,0,5,0,4,83.39137,9.967326,0,85.2,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.309785,1.386294,3.620691,1 +16,4,95,1,2,430879,0,11044.58,1.429843,0,12,1,21.91142,12.64336,0,0,0,34.55478,0,0,0,4,0,4,83.39137,9.967326,0,85.2,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.309785,1.386294,3.542546,1 +16,4,95,1,3,430879,0,11044.58,2.429842,0,12,1,5.130398,8.063275,0,0,0,13.19367,0,0,0,1,0,4,83.39137,9.967326,0,85.2,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.309785,1.386294,2.579737,1 +16,4,95,1,4,430879,0,11044.58,3.429842,0,12,1,8.070715,2.152191,0,0,0,10.22291,0,0,0,2,0,4,83.39137,9.967326,0,85.2,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.309785,1.386294,2.324631,1 +16,4,95,1,5,430879,0,11044.58,4.429842,0,12,1,14.75237,7.007376,0,0,0,21.75975,0,0,0,2,0,4,83.39137,9.967326,0,85.2,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,85.2,9.309785,1.386294,3.080062,1 +11,4,0,1,1,430880,0,10515.54,19.90417,1,14,1,10.12146,0,31.88259,0,0,42.00405,0,0,0,0,1,6,73.4,6.9,0,91.7,0,30,0,0,1.791759,3.401197,0,0,0,0,0,0,91.7,9.260705,1.791759,3.737766,1 +11,4,0,1,2,430880,0,10515.54,20.90417,1,14,1,0,0,0,0,0,0,0,0,0,0,0,6,73.4,6.9,0,91.7,0,30,0,0,1.791759,3.401197,0,0,0,0,0,0,91.7,9.260705,1.791759,,0 +11,4,0,1,4,430880,0,10515.54,22.90417,1,14,1,45.54189,5.956956,0,0,0,51.49885,0,0,0,1,1,5,73.4,6.9,0,91.7,0,30,0,0,1.609438,3.401197,0,0,0,0,0,0,91.7,9.260705,1.609438,3.94156,1 +11,4,0,1,5,430880,0,10515.54,23.90417,1,14,1,78.43344,4.03934,23.1823,0,0,105.6551,0,0,0,4,5,5,73.4,6.9,0,91.7,0,30,0,0,1.609438,3.401197,0,0,0,0,0,0,91.7,9.260705,1.609438,4.66018,1 +11,4,0,1,1,430884,0,13873.9,22.74607,0,14,1,444.4737,95.41498,0,0,1739.524,2279.413,1,0,0,5,0,4,84.6,10.3,1,,0,0,0,0,1.386294,0,0,0,0,0,0,0,72.06626,9.537837,1.386294,7.731673,1 +11,4,0,1,2,430884,0,13873.9,23.74607,0,14,.3424658,169.5245,82.26107,310.7692,0,3200.07,3762.625,2,0,0,2,0,4,84.6,10.3,1,,0,0,0,0,1.386294,0,0,0,0,0,0,0,72.06626,9.537837,1.386294,8.232872,1 +11,4,0,1,1,430885,0,10872.73,40.17796,0,14,1,200.4757,.9868421,27.32794,0,0,228.7905,0,0,0,3,0,3,55.3,10.3,0,59.1,0,0,0,0,1.098612,0,0,0,0,0,0,0,59.1,9.294105,1.098612,5.432806,1 +11,4,0,1,2,430885,0,10872.73,41.17796,0,14,1,95.85081,1.048951,6.993007,0,0,103.8928,0,0,0,5,0,3,55.3,10.3,0,59.1,0,0,0,0,1.098612,0,0,0,0,0,0,0,59.1,9.294105,1.098612,4.643359,1 +11,4,0,1,3,430885,0,10872.73,42.17796,0,14,1,118.5336,9.598119,0,0,0,128.1317,0,0,0,5,7,3,55.3,10.3,0,59.1,0,0,0,0,1.098612,0,0,0,0,0,0,0,59.1,9.294105,1.098612,4.853058,1 +6,4,25,1,1,430892,0,9087.39,53.05955,1,12,1,94.25607,18.31984,48.07692,0,0,160.6528,0,0,0,5,0,2,62.2,37.9,1,42,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,42,9.114753,.6931472,5.079246,1 +6,4,25,1,2,430892,0,9087.39,54.05955,1,12,1,61.53846,37.31469,0,0,0,98.85315,0,0,0,6,0,2,62.2,37.9,1,42,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,42,9.114753,.6931472,4.593636,1 +6,4,25,1,3,430892,0,9087.39,55.05955,1,12,1,30.35485,34.63446,40.61565,0,0,105.605,0,0,0,3,0,2,62.2,37.9,1,42,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,42,9.114753,.6931472,4.659705,1 +13,4,0,0,1,430894,0,995.3079,.1533196,0,12,1,12.76813,5.280899,0,0,0,18.04903,0,0,0,2,0,3,83.39137,9.967326,.0268456,,300,313.94,1,0,1.098612,5.749202,1,4.564348,5.755076,0,0,0,79.22147,6.904057,1.098612,2.893092,1 +13,4,0,0,2,430894,0,995.3079,1.15332,0,12,1,22.97234,3.745898,0,0,0,26.71824,0,0,0,3,0,3,83.39137,9.967326,.0268456,,300,313.94,1,0,1.098612,5.749202,1,4.564348,5.755076,0,0,0,79.22147,6.904057,1.098612,3.285346,1 +13,4,0,0,3,430894,0,995.3079,2.15332,0,12,1,13.11264,3.030954,0,0,0,16.14359,0,0,0,1,0,4,83.39137,9.967326,.0268456,,300,313.94,1,0,1.386294,5.749202,1,4.564348,5.755076,0,0,0,79.22147,6.904057,1.386294,2.781523,1 +13,4,0,0,4,430894,0,995.3079,3.15332,0,12,1,28.11167,2.02404,0,0,0,30.13571,0,0,0,3,0,5,83.39137,9.967326,.0268456,,300,313.94,1,0,1.609438,5.749202,1,4.564348,5.755076,0,0,0,79.22147,6.904057,1.609438,3.405711,1 +13,4,0,0,5,430894,0,995.3079,4.15332,0,12,1,86.16419,0,5.300778,0,0,91.46497,0,0,0,7,0,5,83.39137,9.967326,.0268456,,300,313.94,1,0,1.609438,5.749202,1,4.564348,5.755076,0,0,0,79.22147,6.904057,1.609438,4.515956,1 +11,4,0,0,1,430896,.0068104,7910.823,20.67351,0,12.875,1,10.12146,0,30.36437,0,0,40.48583,0,0,0,0,1,2,74.46748,9.967326,.1572505,,0,0,0,0,.6931472,0,0,0,0,0,0,0,72.06626,8.976113,.6931472,3.700952,1 +11,4,0,0,2,430897,0,2404.692,.652293,1,12,1,46.16477,8.380682,0,0,0,54.54546,0,0,0,7,0,4,83.39137,9.967326,.0268456,,0,0,1,1,1.386294,0,0,0,0,0,0,0,79.22147,7.785593,1.386294,3.999034,1 +11,4,0,0,3,430897,0,2404.692,1.652293,1,12,1,22.10663,3.315995,0,0,0,25.42263,0,0,0,4,0,4,83.39137,9.967326,.0268456,,0,0,1,1,1.386294,0,0,0,0,0,0,0,79.22147,7.785593,1.386294,3.23564,1 +11,4,0,0,2,430898,0,2404.692,.652293,1,12,1,40.24621,9.067235,0,0,0,49.31345,0,0,0,7,0,4,83.39137,9.967326,.0268456,,0,0,1,1,1.386294,0,0,0,0,0,0,0,79.22147,7.785593,1.386294,3.898197,1 +11,4,0,0,3,430898,0,2404.692,1.652293,1,12,1,25.63936,0,0,0,0,25.63936,0,0,0,2,0,4,83.39137,9.967326,.0268456,,0,0,1,1,1.386294,0,0,0,0,0,0,0,79.22147,7.785593,1.386294,3.244129,1 +11,4,0,0,1,430906,0,11563.64,.0574949,0,13,1,203.9428,1.276813,0,0,0,205.2196,0,0,0,13,0,6,83.39137,9.967326,.0268456,,0,492.84,1,0,1.791759,6.200184,0,0,0,0,0,0,79.22147,9.355707,1.791759,5.32408,1 +11,4,0,0,2,430906,0,11563.64,1.057495,0,13,1,22.50352,20.67511,0,0,0,43.17862,0,0,0,4,0,6,83.39137,9.967326,.0268456,,0,492.84,1,0,1.791759,6.200184,0,0,0,0,0,0,79.22147,9.355707,1.791759,3.765346,1 +11,4,0,0,3,430906,0,11563.64,2.057495,0,13,1,6.018917,2.901978,0,0,0,8.920895,0,0,0,1,0,6,83.39137,9.967326,.0268456,,0,492.84,1,0,1.791759,6.200184,0,0,0,0,0,0,79.22147,9.355707,1.791759,2.188396,1 +11,4,0,0,4,430906,0,11563.64,3.057495,0,13,1,81.83405,0,0,0,0,81.83405,0,0,0,5,0,6,83.39137,9.967326,.0268456,,0,492.84,1,0,1.791759,6.200184,0,0,0,0,0,0,79.22147,9.355707,1.791759,4.404693,1 +11,4,0,0,5,430906,0,11563.64,4.057495,0,13,1,29.37013,2.707006,0,0,0,32.07714,0,0,0,5,0,6,83.39137,9.967326,.0268456,,0,492.84,1,0,1.791759,6.200184,0,0,0,0,0,0,79.22147,9.355707,1.791759,3.468144,1 +10,4,50,0,2,430910,0,6175.953,.6221766,1,14,1,88.13877,64.0647,135.9587,0,2625.082,2913.244,5,0,0,12,1,4,83.39137,9.967326,.0268456,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.22147,8.72858,1.386294,7.977023,1 +10,4,50,0,3,430910,0,6175.953,1.622177,1,14,1,34.71625,9.88822,0,0,0,44.60447,0,0,0,4,0,4,83.39137,9.967326,.0268456,,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,79.22147,8.72858,1.386294,3.797834,1 +11,4,0,0,2,430913,.0068104,7910.823,.7097878,1,11,1,43.35664,6.993007,0,0,0,50.34965,0,0,0,6,0,2,83.39137,9.967326,.0268456,,0,0,1,1,.6931472,0,0,0,0,0,0,0,79.22147,8.976113,.6931472,3.918992,1 +11,4,0,0,3,430913,.0068104,7910.823,1.709788,1,11,1,102.5053,3.185122,0,0,0,105.6905,0,0,0,7,0,2,83.39137,9.967326,.0268456,,0,0,1,1,.6931472,0,0,0,0,0,0,0,79.22147,8.976113,.6931472,4.660515,1 +6,4,25,0,2,430922,0,6642.229,.5893224,1,14,1,13.05361,9.655012,0,0,0,22.70862,0,0,0,2,0,4,83.39137,9.967326,.0268456,,300,300,1,1,1.386294,5.703783,0,3.258096,7.090077,0,0,0,79.22147,8.801353,1.386294,3.122745,1 +6,4,25,0,3,430922,0,6642.229,1.589322,1,14,1,13.25353,4.809748,0,0,0,18.06327,0,0,0,2,0,4,83.39137,9.967326,.0268456,,300,300,1,1,1.386294,5.703783,0,3.258096,7.090077,0,0,0,79.22147,8.801353,1.386294,2.893881,1 +6,4,25,0,4,430922,0,6642.229,2.589322,1,14,1,29.2083,5.049962,0,0,0,34.25826,0,0,0,5,0,4,83.39137,9.967326,.0268456,,300,300,1,1,1.386294,5.703783,0,3.258096,7.090077,0,0,0,79.22147,8.801353,1.386294,3.533928,1 +6,4,25,0,5,430922,0,6642.229,3.589322,1,14,1,11.2399,1.752722,0,0,0,12.99262,0,0,0,2,0,4,83.39137,9.967326,.0268456,,300,300,1,1,1.386294,5.703783,0,3.258096,7.090077,0,0,0,79.22147,8.801353,1.386294,2.564382,1 +11,4,0,0,2,430928,0,7872.141,.1786448,0,13,1,21.02246,13.34448,0,0,0,34.36694,0,0,0,4,0,4,83.39137,9.967326,.0268456,,0,0,1,0,1.386294,0,0,0,0,0,0,0,79.22147,8.971212,1.386294,3.537095,1 +11,4,0,0,3,430928,0,7872.141,1.178645,0,13,1,16.24232,6.786655,0,0,0,23.02897,0,0,0,3,0,4,83.39137,9.967326,.0268456,,0,0,1,0,1.386294,0,0,0,0,0,0,0,79.22147,8.971212,1.386294,3.136753,1 +13,4,0,0,2,430938,0,9339.003,.2087611,1,17,1,129.3952,68.72949,0,0,0,198.1247,0,0,0,18,0,5,83.39137,9.967326,.0268456,,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,79.22147,9.142062,1.609438,5.288897,1 +13,4,0,0,3,430938,0,9339.003,1.208761,1,17,1,55.46002,16.72399,0,0,0,72.18401,0,0,0,13,0,5,83.39137,9.967326,.0268456,,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,79.22147,9.142062,1.609438,4.279219,1 +11,4,0,0,2,430939,0,8516.716,.1841205,0,12,1,59.77496,16.92452,0,0,0,76.69949,0,0,0,9,0,5,83.39137,9.967326,.0268456,,0,0,1,0,1.609438,0,0,0,0,0,0,0,79.22147,9.049904,1.609438,4.339895,1 +11,4,0,0,3,430939,0,8516.716,1.18412,0,12,1,58.46947,15.08169,0,0,0,73.55116,0,0,0,10,0,5,83.39137,9.967326,.0268456,,0,0,1,0,1.609438,0,0,0,0,0,0,0,79.22147,9.049904,1.609438,4.297981,1 +11,4,0,0,4,430939,0,8516.716,2.18412,0,12,1,50.01939,6.048856,0,0,0,56.06824,0,0,0,7,0,5,83.39137,9.967326,.0268456,,0,0,1,0,1.609438,0,0,0,0,0,0,0,79.22147,9.049904,1.609438,4.02657,1 +11,4,0,0,5,430939,0,8516.716,3.18412,0,12,1,65.81741,9.844303,0,0,0,75.66171,0,0,0,7,0,5,83.39137,9.967326,.0268456,,0,0,1,0,1.609438,0,0,0,0,0,0,0,79.22147,9.049904,1.609438,4.326272,1 +11,4,0,0,2,430945,0,7640.469,.1074606,1,14,1,37.97468,17.6512,0,0,0,55.62588,0,0,0,5,0,5,83.39137,9.967326,.0268456,,0,0,1,1,1.609438,0,0,0,0,0,0,0,79.22147,8.941345,1.609438,4.018649,1 +11,4,0,0,3,430945,0,7640.469,1.107461,1,14,1,24.50559,11.34996,0,0,0,35.85555,0,0,0,4,0,5,83.39137,9.967326,.0268456,,0,0,1,1,1.609438,0,0,0,0,0,0,0,79.22147,8.941345,1.609438,3.579498,1 +11,4,0,0,4,430945,0,7640.469,2.107461,1,14,1,13.9589,1.919349,0,0,0,15.87825,0,0,0,2,0,5,83.39137,9.967326,.0268456,,0,0,1,1,1.609438,0,0,0,0,0,0,0,79.22147,8.941345,1.609438,2.76495,1 +11,4,0,0,5,430945,0,7640.469,3.107461,1,14,1,44.23213,5.94126,0,0,0,50.17339,0,0,0,4,0,5,83.39137,9.967326,.0268456,,0,0,1,1,1.609438,0,0,0,0,0,0,0,79.22147,8.941345,1.609438,3.915485,1 +15,4,95,0,2,430949,0,6648.094,.3264887,1,14,1,30.76923,1.981352,0,0,0,32.75058,0,0,0,6,0,4,83.39137,9.967326,.0268456,,1000,999.8,1,1,1.386294,6.907555,0,4.564348,6.959049,0,0,0,79.22147,8.802236,1.386294,3.488921,1 +15,4,95,0,3,430949,0,6648.094,1.326489,1,14,1,13.68106,0,0,0,0,13.68106,0,0,0,2,0,4,83.39137,9.967326,.0268456,,1000,999.8,1,1,1.386294,6.907555,0,4.564348,6.959049,0,0,0,79.22147,8.802236,1.386294,2.616012,1 +11,4,0,0,3,430975,0,3134.956,.8774812,1,12,1,24.93551,9.952708,0,0,0,34.88822,0,0,0,4,0,5,83.39137,9.967326,.0268456,,0,204.6,1,1,1.609438,5.321057,0,0,0,0,0,0,79.22147,8.05069,1.609438,3.552149,1 +13,4,0,0,3,430979,0,7954.839,.8145106,0,12,1,22.23172,0,0,0,0,22.23172,0,0,0,3,0,5,83.39137,9.967326,.0268456,,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,79.22147,8.981662,1.609438,3.10152,1 +11,4,0,0,3,430991,0,4336.07,.5708419,0,12,1,12.03783,0,0,0,0,12.03783,0,0,0,3,0,4,83.39137,9.967326,.0268456,,0,0,1,0,1.386294,0,0,0,0,0,0,0,79.22147,8.374954,1.386294,2.488055,1 +11,4,0,0,3,430999,0,1271.554,.6776181,1,9,1,23.08679,7.73835,0,0,0,30.82514,0,0,0,5,0,4,83.39137,9.967326,.0268456,,0,0,1,1,1.386294,0,0,0,0,0,0,0,79.22147,7.148781,1.386294,3.42833,1 +13,4,0,0,3,431002,0,7374.193,.568104,0,16,1,15.47721,0,0,0,0,15.47721,0,0,0,3,0,3,83.39137,9.967326,.0268456,,300,300,1,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,79.22147,8.905877,1.098612,2.739369,1 +13,4,0,0,4,431002,0,7374.193,1.568104,0,16,1,11.24467,1.547111,0,0,0,12.79178,0,0,0,2,0,3,83.39137,9.967326,.0268456,,300,300,1,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,79.22147,8.905877,1.098612,2.548803,1 +13,4,0,0,5,431002,0,7374.193,2.568104,0,16,1,5.307856,1.058033,0,0,0,6.365888,0,0,0,1,0,3,83.39137,9.967326,.0268456,,300,300,1,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,79.22147,8.905877,1.098612,1.850954,1 +11,4,0,0,3,431011,0,5469.795,.3216975,0,18,1,581.0619,0,0,0,1533.125,2114.188,2,0,0,20,0,2,83.39137,9.967326,.0268456,,0,0,1,0,.6931472,0,0,0,0,0,0,0,79.22147,8.60718,.6931472,7.656426,1 +16,4,95,0,3,431012,0,8591.789,.3052704,0,12,1,34.67707,0,0,0,0,34.67707,0,0,0,6,0,4,83.39137,9.967326,.0268456,,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,79.22147,9.058679,1.386294,3.546079,1 +11,4,0,0,3,431014,0,11719.65,.2724161,0,10,1,13.6541,0,0,0,0,13.6541,0,0,0,1,0,7,83.39137,9.967326,.0268456,,0,0,1,0,1.94591,0,0,0,0,0,0,0,79.22147,9.369107,1.94591,2.61404,1 +13,4,0,0,3,431020,0,3774.78,.2313484,0,12,1,269.9828,12.38177,0,0,0,282.3646,0,0,0,11,0,3,83.39137,9.967326,.0268456,,300,362.64,1,0,1.098612,5.893411,1,4.564348,5.755076,0,0,0,79.22147,8.236362,1.098612,5.643199,1 +16,4,95,0,3,431021,0,730.2053,.2778918,0,12,1,53.01411,15.60496,0,0,0,68.61906,0,0,0,7,0,2,83.39137,9.967326,.0268456,,34.5,0,1,0,.6931472,0,0,4.564348,3.592253,0,0,0,79.22147,6.594694,.6931472,4.22857,1 +13,4,0,0,3,431025,0,3515.542,.4859685,1,12,1,11.17799,0,0,0,0,11.17799,0,0,0,2,0,2,83.39137,9.967326,.0268456,,150,150,1,1,.6931472,5.010635,1,4.564348,5.061929,0,0,0,79.22147,8.165234,.6931472,2.413946,1 +13,4,0,0,4,431025,0,3515.542,1.485968,1,12,1,29.08104,0,0,0,0,29.08104,0,0,0,3,0,2,83.39137,9.967326,.0268456,,150,150,1,1,.6931472,5.010635,1,4.564348,5.061929,0,0,0,79.22147,8.165234,.6931472,3.370086,1 +13,4,0,0,5,431025,0,3515.542,2.485969,1,12,1,31.97806,0,0,0,0,31.97806,0,0,0,1,0,2,83.39137,9.967326,.0268456,,150,150,1,1,.6931472,5.010635,1,4.564348,5.061929,0,0,0,79.22147,8.165234,.6931472,3.46505,1 +13,4,0,0,3,431029,0,995.3079,.2067077,1,12,1,50.51591,4.290627,0,0,0,54.80653,0,0,0,7,0,4,83.39137,9.967326,.0268456,,300,313.94,1,1,1.386294,5.749202,1,4.564348,5.755076,0,0,0,79.22147,6.904057,1.386294,4.003809,1 +13,4,0,0,4,431029,0,995.3079,1.206708,1,12,1,11.24467,2.307096,0,0,0,13.55176,0,0,0,2,0,5,83.39137,9.967326,.0268456,,300,313.94,1,1,1.609438,5.749202,1,4.564348,5.755076,0,0,0,79.22147,6.904057,1.609438,2.606517,1 +13,4,0,0,5,431029,0,995.3079,2.206708,1,12,1,5.307856,0,0,0,0,5.307856,0,0,0,1,0,5,83.39137,9.967326,.0268456,,300,313.94,1,1,1.609438,5.749202,1,4.564348,5.755076,0,0,0,79.22147,6.904057,1.609438,1.669188,1 +15,4,95,0,3,431050,0,2331.378,.0150582,1,12,1,0,0,0,0,55.57931,55.57931,1,0,0,0,0,2,83.39137,9.967326,.0268456,,250,250,1,1,.6931472,5.521461,0,4.564348,5.572754,0,0,0,79.22147,7.754644,.6931472,4.017811,1 +11,4,0,0,3,431058,0,4588.856,.0260096,1,12,1,69.78761,16.40659,0,0,0,86.19419,0,0,0,8,0,4,83.39137,9.967326,.0268456,,0,0,1,1,1.386294,0,0,0,0,0,0,0,79.22147,8.431604,1.386294,4.456603,1 +7,4,25,0,4,431080,0,7910.823,.705681,1,10,1,12.20953,0,0,0,0,12.20953,0,0,0,3,0,5,83.39137,9.967326,.0268456,,750,749.8,1,1,1.609438,6.619806,0,3.258096,8.006368,0,0,0,79.22147,8.976113,1.609438,2.502217,1 +7,4,25,0,5,431080,0,7910.823,1.705681,1,10,1,34.34705,5.577817,0,0,0,39.92487,0,0,0,7,0,5,83.39137,9.967326,.0268456,,750,749.8,1,1,1.609438,6.619806,0,3.258096,8.006368,0,0,0,79.22147,8.976113,1.609438,3.686999,1 +19,4,25,0,4,431088,0,1555.425,.7686516,0,12,1,26.13374,0,0,0,0,26.13374,0,0,0,7,0,3,83.39137,9.967326,.0268456,,300,300,1,0,1.098612,5.703783,0,3.258096,7.090077,0,0,0,79.22147,7.350147,1.098612,3.263227,1 +19,4,25,0,5,431088,0,1555.425,1.768652,0,12,1,4.56621,0,0,0,0,4.56621,0,0,0,2,0,3,83.39137,9.967326,.0268456,,300,300,1,0,1.098612,5.703783,0,3.258096,7.090077,0,0,0,79.22147,7.350147,1.098612,1.518684,1 +13,4,0,0,4,431111,0,17.59531,.2950034,0,12,1,41.1012,0,0,0,0,41.1012,0,0,0,4,0,3,83.39137,9.967326,.0268456,,300,358.52,1,0,1.098612,5.881984,1,4.564348,5.755076,0,0,0,79.22147,2.922909,1.098612,3.716038,1 +13,4,0,0,5,431111,0,17.59531,1.295003,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,83.39137,9.967326,.0268456,,300,358.52,1,0,1.098612,5.881984,1,4.564348,5.755076,0,0,0,79.22147,2.922909,1.098612,,0 +13,4,0,0,4,431131,0,995.3079,.0568104,1,12,1,31.79527,8.406359,0,0,0,40.20163,0,0,0,6,0,5,83.39137,9.967326,.0268456,,300,313.94,1,1,1.609438,5.749202,1,4.564348,5.755076,0,0,0,79.22147,6.904057,1.609438,3.693907,1 +13,4,0,0,5,431131,0,995.3079,1.05681,1,12,1,10.61571,0,0,0,0,10.61571,0,0,0,2,0,5,83.39137,9.967326,.0268456,,300,313.94,1,1,1.609438,5.749202,1,4.564348,5.755076,0,0,0,79.22147,6.904057,1.609438,2.362335,1 +13,4,0,0,5,431166,0,6165.396,.4353183,0,12,1,56.61713,6.811748,0,0,0,63.42887,0,0,0,7,0,5,83.39137,9.967326,.0268456,,,,1,0,1.609438,0,1,4.564348,0,0,0,0,79.22147,8.72687,1.609438,4.149919,1 +11,4,0,0,5,431168,0,8719.648,.2436687,0,11,1,37.56709,19.99642,0,0,0,57.56351,0,0,0,6,0,7,83.39137,9.967326,.0268456,,0,0,1,0,1.94591,0,0,0,0,0,0,0,79.22147,9.073449,1.94591,4.052889,1 +19,5,25,1,1,525011,0,12647.21,36.53114,1,14,1,215.0896,33.74739,0,145.8941,300.9587,549.7958,1,0,21,8,0,2,76.6,17.2,0,79.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,79.5,9.445271,.6931472,6.309547,1 +19,5,25,1,2,525011,0,12647.21,37.53114,1,14,1,58.13953,35.18005,0,33.75844,0,93.31958,0,0,6,7,1,2,76.6,17.2,0,79.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,79.5,9.445271,.6931472,4.53603,1 +19,5,25,1,3,525011,0,12647.21,38.53114,1,14,1,114.682,53.80244,0,0,0,168.4844,0,0,0,9,0,2,76.6,17.2,0,79.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,79.5,9.445271,.6931472,5.126843,1 +11,5,0,1,1,525027,0,9173.067,26.9295,1,12,1,29.77456,5.801786,0,0,0,35.57635,0,0,0,2,0,4,79.8,6.9,0,93.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,93.2,9.124136,1.386294,3.571681,1 +11,5,0,1,2,525027,0,9173.067,27.9295,1,12,1,13.35878,0,28.62595,0,0,41.98473,0,0,0,1,0,4,79.8,6.9,0,93.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,93.2,9.124136,1.386294,3.737306,1 +11,5,0,1,3,525027,0,9173.067,28.9295,1,12,1,28.91986,2.090592,0,0,457.8397,488.8502,1,0,0,2,0,4,79.8,6.9,0,93.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,93.2,9.124136,1.386294,6.192056,1 +11,5,0,1,1,525028,0,9173.067,3.802875,1,12,1,17.01404,14.7937,0,0,0,31.80774,0,0,0,3,0,4,77.40034,10.57626,0,100,0,0,1,1,1.386294,0,0,0,0,0,0,0,100,9.124136,1.386294,3.45971,1 +11,5,0,1,2,525028,0,9173.067,4.802875,1,12,1,22.13741,4.767176,0,0,0,26.90458,0,0,0,4,0,4,77.40034,10.57626,0,100,0,0,1,1,1.386294,0,0,0,0,0,0,0,100,9.124136,1.386294,3.292297,1 +11,5,0,1,3,525028,0,9173.067,5.802875,1,12,1,32.05575,.6585366,0,0,0,32.71429,0,0,0,4,0,4,77.40034,10.57626,0,100,0,0,1,1,1.386294,0,0,0,0,0,0,0,100,9.124136,1.386294,3.487812,1 +11,5,0,1,1,525029,0,9173.067,6.568104,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80,10.57626,0,88.9,0,0,1,1,1.386294,0,0,0,0,0,1,0,88.9,9.124136,1.386294,,0 +11,5,0,1,2,525029,0,9173.067,7.568104,1,12,1,11.45038,3.835878,0,0,0,15.28626,0,0,0,2,0,4,80,10.57626,0,88.9,0,0,1,1,1.386294,0,0,0,0,0,1,0,88.9,9.124136,1.386294,2.726954,1 +11,5,0,1,3,525029,0,9173.067,8.568104,1,12,1,13.24042,3.759582,0,0,386.1324,403.1324,1,0,0,2,0,4,80,10.57626,0,88.9,0,0,1,1,1.386294,0,0,0,0,0,1,0,88.9,9.124136,1.386294,5.999265,1 +11,5,0,1,1,525030,0,9173.067,27.70979,0,12,1,0,8.490005,0,0,0,8.490005,0,0,0,0,0,4,89.4,0,0,67,0,0,0,0,1.386294,0,0,0,0,0,0,0,67,9.124136,1.386294,2.13889,1 +11,5,0,1,2,525030,0,9173.067,28.70979,0,12,1,0,2.206107,0,0,0,2.206107,0,0,0,0,0,4,89.4,0,0,67,0,0,0,0,1.386294,0,0,0,0,0,0,0,67,9.124136,1.386294,.7912294,1 +11,5,0,1,3,525030,0,9173.067,29.70979,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,89.4,0,0,67,0,0,0,0,1.386294,0,0,0,0,0,0,0,67,9.124136,1.386294,,0 +13,5,0,0,1,525055,0,2807.038,56.49281,1,11,1,18.08137,25.07283,0,0,0,43.15419,0,0,0,1,0,2,41.5,13.8,1,56.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,1,0,56.8,7.940241,.6931472,3.76478,1 +13,5,0,0,2,525055,0,2807.038,57.49281,1,11,1,39.17478,15.91562,15.42884,0,0,70.51924,0,0,0,3,0,2,41.5,13.8,1,56.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,1,0,56.8,7.940241,.6931472,4.255886,1 +13,5,0,0,3,525055,0,2807.038,58.49281,1,11,1,0,6.452573,0,0,0,6.452573,0,0,0,0,0,2,41.5,13.8,1,56.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,1,0,56.8,7.940241,.6931472,1.864479,1 +13,5,0,0,4,525055,0,2807.038,59.49281,1,11,1,0,4.064886,0,0,0,4.064886,0,0,0,0,0,2,41.5,13.8,1,56.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,1,0,56.8,7.940241,.6931472,1.402386,1 +13,5,0,0,5,525055,0,2807.038,60.49281,1,11,1,42.50871,20.10801,36.68293,0,0,99.29965,0,0,0,2,0,2,41.5,13.8,1,56.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,1,0,56.8,7.940241,.6931472,4.598142,1 +13,5,0,0,1,525056,0,2807.038,55.17317,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,92.3,6.9,0,78.4,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,78.4,7.940241,.6931472,,0 +13,5,0,0,2,525056,0,2807.038,56.17317,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,92.3,6.9,0,78.4,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,78.4,7.940241,.6931472,,0 +13,5,0,0,3,525056,0,2807.038,57.17317,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,92.3,6.9,0,78.4,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,78.4,7.940241,.6931472,,0 +13,5,0,0,4,525056,0,2807.038,58.17317,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,92.3,6.9,0,78.4,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,78.4,7.940241,.6931472,,0 +13,5,0,0,5,525056,0,2807.038,59.17317,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,92.3,6.9,0,78.4,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,0,78.4,7.940241,.6931472,,0 +11,5,0,0,1,525079,0,4926.1,19.48255,1,10,1,21.94514,20.29925,0,0,0,42.24439,0,0,0,3,0,2,33.5,20.7,0,52.3,0,0,0,0,.6931472,0,0,0,0,0,0,0,52.3,8.502506,.6931472,3.743472,1 +11,5,0,0,2,525079,0,4926.1,20.48255,1,10,1,488.2434,6.804979,0,0,0,495.0484,0,0,0,1,0,2,33.5,20.7,0,52.3,0,0,0,0,.6931472,0,0,0,0,0,0,0,52.3,8.502506,.6931472,6.204656,1 +11,5,0,0,3,525079,0,4926.1,21.48255,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,33.5,20.7,0,52.3,0,0,0,0,.6931472,0,0,0,0,0,0,0,52.3,8.502506,.6931472,,0 +11,5,0,0,1,525080,0,4926.1,21.56879,0,12,1,4.488778,4.992519,0,0,0,9.481297,0,0,0,1,0,2,73.9,3.4,0,76.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.1,8.502506,.6931472,2.249321,1 +11,5,0,0,2,525080,0,4926.1,22.56879,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.9,3.4,0,76.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.1,8.502506,.6931472,,0 +11,5,0,0,3,525080,0,4926.1,23.56879,0,12,1,12.48413,0,0,0,0,12.48413,0,0,0,1,0,2,73.9,3.4,0,76.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,76.1,8.502506,.6931472,2.524458,1 +11,5,0,0,4,525080,0,4926.1,24.56879,0,12,1,62.54745,0,0,0,0,62.54745,0,0,0,3,0,1,73.9,3.4,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,8.502506,0,4.135926,1 +11,5,0,0,5,525080,0,4926.1,25.56879,0,12,1,64.70588,2.159169,0,0,0,66.86505,0,0,0,2,0,1,73.9,3.4,0,76.1,0,0,0,0,0,0,0,0,0,0,0,0,76.1,8.502506,0,4.202676,1 +11,5,0,1,1,525095,0,2554.839,55.30732,0,2,1,14.8662,13.81566,0,0,471.3826,500.0644,1,0,0,2,0,2,69.7,31,0,67,0,0,0,0,.6931472,0,0,0,0,0,1,0,67,7.846136,.6931472,6.214737,1 +11,5,0,1,2,525095,0,2554.839,56.30732,0,2,1,20.65167,82.38641,31.97797,0,0,135.0161,0,0,0,2,0,2,69.7,31,0,67,0,0,0,0,.6931472,0,0,0,0,0,1,0,67,7.846136,.6931472,4.905394,1 +11,5,0,1,3,525095,0,2554.839,57.30732,0,2,1,12.62095,46.04964,0,0,0,58.67059,0,0,0,2,0,2,69.7,31,0,67,0,0,0,0,.6931472,0,0,0,0,0,1,0,67,7.846136,.6931472,4.071939,1 +11,5,0,1,4,525095,0,2554.839,58.30732,0,2,1,6.800151,17.45372,0,0,0,24.25387,0,0,0,1,0,2,69.7,31,0,67,0,0,0,0,.6931472,0,0,0,0,0,1,0,67,7.846136,.6931472,3.188576,1 +11,5,0,1,5,525095,0,2554.839,59.30732,0,2,1,60.37736,75.14236,33.1801,0,921.4408,1090.141,1,0,0,7,0,2,69.7,31,0,67,0,0,0,0,.6931472,0,0,0,0,0,1,0,67,7.846136,.6931472,6.994062,1 +11,5,0,1,1,525096,0,2554.839,48.09309,1,5,1,61.94252,51.13974,34.10307,0,0,147.1853,0,0,0,3,0,2,89.4,27.6,1,62.5,0,0,0,0,.6931472,0,0,0,0,0,0,1,62.5,7.846136,.6931472,4.991693,1 +11,5,0,1,2,525096,0,2554.839,49.09309,1,5,1,38.54979,103.0289,49.83937,0,0,191.4181,0,0,0,5,0,2,89.4,27.6,1,62.5,0,0,0,0,.6931472,0,0,0,0,0,0,1,62.5,7.846136,.6931472,5.25446,1 +11,5,0,1,3,525096,0,2554.839,50.09309,1,5,1,33.23517,80.2987,35.1199,0,0,148.6538,0,0,0,4,0,2,89.4,27.6,1,62.5,0,0,0,0,.6931472,0,0,0,0,0,0,1,62.5,7.846136,.6931472,5.00162,1 +11,5,0,1,4,525096,0,2554.839,51.09309,1,5,1,119.3804,120.7291,75.33057,0,0,315.4401,0,0,0,8,0,2,89.4,27.6,1,62.5,0,0,0,0,.6931472,0,0,0,0,0,0,1,62.5,7.846136,.6931472,5.753969,1 +11,5,0,1,5,525096,0,2554.839,52.09309,1,5,1,299.1424,107.1835,45.21784,0,0,451.5437,0,0,0,9,0,2,89.4,27.6,1,62.5,0,0,0,0,.6931472,0,0,0,0,0,0,1,62.5,7.846136,.6931472,6.112672,1 +11,5,0,1,1,525097,0,2633.431,22.53251,0,9,1,94.01496,7.650873,0,0,300,401.6658,1,0,0,9,0,1,43.6,3.4,0,50,0,0,0,0,0,0,0,0,0,1,0,0,50,7.876422,0,5.99562,1 +11,5,0,1,2,525097,0,2633.431,23.53251,0,9,1,46.79576,0,0,0,0,46.79576,0,0,0,5,0,1,43.6,3.4,0,50,0,0,0,0,0,0,0,0,0,1,0,0,50,7.876422,0,3.845793,1 +11,5,0,1,3,525097,0,2633.431,24.53251,0,9,1,0,0,0,0,0,0,0,0,0,0,0,1,43.6,3.4,0,50,0,0,0,0,0,0,0,0,0,1,0,0,50,7.876422,0,,0 +11,5,0,1,4,525097,0,2633.431,25.53251,0,9,1,56.56796,4.707669,0,0,0,61.27563,0,0,0,2,0,1,43.6,3.4,0,50,0,0,0,0,0,0,0,0,0,1,0,0,50,7.876422,0,4.115382,1 +11,5,0,1,5,525097,0,2633.431,26.53251,0,9,1,134.6021,11.36678,0,0,611.4187,757.3876,1,0,0,8,0,1,43.6,3.4,0,50,0,0,0,0,0,0,0,0,0,1,0,0,50,7.876422,0,6.629875,1 +5,5,25,1,1,525104,0,7458.781,57.79877,0,13,1,49.93652,46.68218,2.522218,0,0,99.14092,0,0,0,3,0,1,85.1,24.1,1,62.5,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,1,0,62.5,8.917281,0,4.596542,1 +5,5,25,1,2,525104,0,7458.781,58.79877,0,13,1,74.22172,67.36143,2.277904,0,349.2787,493.1397,1,0,0,7,0,1,85.1,24.1,1,62.5,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,1,0,62.5,8.917281,0,6.200792,1 +5,5,25,1,3,525104,0,7458.781,59.79877,0,13,1,198.7889,50.08305,49.02768,0,1325.952,1623.851,1,0,0,6,1,1,85.1,24.1,1,62.5,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,1,0,62.5,8.917281,0,7.392556,1 +15,5,95,0,1,525107,0,9990.783,27.74264,1,12,1,33.85527,0,11.84934,0,0,45.70461,0,0,0,2,1,3,73.4,10.3,0,90.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,90.9,9.209518,1.098612,3.822199,1 +15,5,95,0,2,525107,0,9990.783,28.74264,1,12,1,26.9552,3.644647,0,0,0,30.59985,0,0,0,3,0,3,73.4,10.3,0,90.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,90.9,9.209518,1.098612,3.420995,1 +15,5,95,0,3,525107,0,9990.783,29.74264,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,73.4,10.3,0,90.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,90.9,9.209518,1.098612,,0 +15,5,95,0,1,525108,0,9990.783,30.39014,0,16,1,152.7719,12.39526,11.42615,0,0,176.5933,0,0,0,5,2,3,84.6,10.3,0,76.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,76.1,9.209518,1.098612,5.17385,1 +15,5,95,0,2,525108,0,9990.783,31.39014,0,16,1,6.454062,1.537585,0,0,0,7.991648,0,0,0,1,0,3,84.6,10.3,0,76.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,76.1,9.209518,1.098612,2.078397,1 +15,5,95,0,3,525108,0,9990.783,32.39014,0,16,1,14.53287,0,0,0,0,14.53287,0,0,0,1,1,3,84.6,10.3,0,76.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,76.1,9.209518,1.098612,2.676413,1 +17,5,25,0,1,525134,1,6674.895,53.38809,1,7,1,0,0,0,0,0,0,0,0,0,0,0,1,56.4,3.4,0,56.8,240,0,0,0,0,0,0,3.258096,6.866933,1,0,0,56.8,8.806258,0,,0 +17,5,25,0,2,525134,1,6674.895,54.38809,1,7,1,0,1.860289,0,0,0,1.860289,0,0,0,0,0,1,56.4,3.4,0,56.8,240,0,0,0,0,0,0,3.258096,6.866933,1,0,0,56.8,8.806258,0,.6207316,1 +17,5,25,0,3,525134,1,6674.895,55.38809,1,7,1,19.03114,2.733564,32.02768,0,0,53.79239,0,0,0,2,0,1,56.4,3.4,0,56.8,240,0,0,0,0,0,0,3.258096,6.866933,1,0,0,56.8,8.806258,0,3.985132,1 +13,5,0,1,1,525141,0,4639.529,57.62355,1,13,1,6.347863,3.626746,0,0,0,9.974608,0,0,0,1,0,1,70.2,20.7,0,50,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,50,8.442584,0,2.300043,1 +13,5,0,1,2,525141,0,4639.529,58.62355,1,13,1,35.68717,3.386484,0,0,0,39.07365,0,0,0,3,0,1,70.2,20.7,0,50,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,50,8.442584,0,3.665448,1 +13,5,0,1,3,525141,0,4639.529,59.62355,1,13,1,8.650519,0,0,0,0,8.650519,0,0,0,1,0,1,70.2,20.7,0,50,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,50,8.442584,0,2.157619,1 +11,5,0,0,1,525159,1,0,49.85626,1,11,1,7.835258,0,32.38573,0,0,40.22099,0,0,0,0,1,3,49.5,27.6,1,47.7,0,0,0,0,1.098612,0,0,0,0,0,0,1,47.7,0,1.098612,3.694389,1 +11,5,0,0,2,525159,1,0,50.85626,1,11,1,48.95689,0,1.159017,0,0,50.1159,0,0,0,0,0,3,49.5,27.6,1,47.7,0,0,0,0,1.098612,0,0,0,0,0,0,1,47.7,0,1.098612,3.914338,1 +11,5,0,0,3,525159,1,0,51.85626,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,49.5,27.6,1,47.7,0,0,0,0,1.098612,0,0,0,0,0,0,1,47.7,0,1.098612,,0 +11,5,0,0,4,525159,1,0,52.85626,1,11,1,25.9542,0,31.75573,0,0,57.70992,0,0,0,2,1,4,49.5,27.6,1,47.7,0,0,0,0,1.386294,0,0,0,0,0,0,1,47.7,0,1.386294,4.055429,1 +11,5,0,0,5,525159,1,0,53.85626,1,11,1,10.45296,0,32.24739,0,0,42.70035,0,0,0,0,1,4,49.5,27.6,1,47.7,0,0,0,0,1.386294,0,0,0,0,0,0,1,47.7,0,1.386294,3.754207,1 +11,5,0,0,1,525160,1,0,19.08829,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,42,6.9,0,54.5,0,0,0,0,1.098612,0,0,0,0,0,0,0,54.5,0,1.098612,,0 +11,5,0,0,2,525160,1,0,20.08829,1,9,1,26.61103,9.619843,0,0,0,36.23088,0,0,0,0,0,3,42,6.9,0,54.5,0,0,0,0,1.098612,0,0,0,0,0,0,0,54.5,0,1.098612,3.589912,1 +11,5,0,0,3,525160,1,0,21.08829,1,9,1,0,14.86601,0,0,1389.196,1404.062,1,1,0,0,0,3,42,6.9,0,54.5,0,0,0,0,1.098612,0,0,0,0,0,0,0,54.5,0,1.098612,7.247125,1 +11,5,0,0,4,525160,1,0,22.08829,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,42,6.9,0,54.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,54.5,0,1.386294,,0 +11,5,0,0,5,525160,1,0,23.08829,1,9,1,20.55749,0,0,0,0,20.55749,0,0,0,0,1,4,42,6.9,0,54.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,54.5,0,1.386294,3.023225,1 +11,5,0,0,1,525161,1,0,3.208761,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,70.4,0,0,1,0,1.098612,0,0,0,0,0,0,0,70.4,0,1.098612,,0 +11,5,0,0,2,525161,1,0,4.208761,0,11,1,6.954103,0,0,0,0,6.954103,0,0,0,1,0,3,77.40034,10.57626,0,70.4,0,0,1,0,1.098612,0,0,0,0,0,0,0,70.4,0,1.098612,1.939332,1 +11,5,0,0,3,525161,1,0,5.208761,0,11,1,12.76053,2.530838,0,0,0,15.29137,0,0,0,2,0,3,77.40034,10.57626,0,70.4,0,0,1,0,1.098612,0,0,0,0,0,0,0,70.4,0,1.098612,2.727288,1 +11,5,0,0,4,525161,1,0,6.208761,0,11,1,52.29008,8.187023,0,0,0,60.4771,0,0,0,0,0,4,77.40034,10.57626,0,70.4,0,0,1,0,1.386294,0,0,0,0,0,0,0,70.4,0,1.386294,4.102265,1 +11,5,0,0,5,525161,1,0,7.208761,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,70.4,0,0,1,0,1.386294,0,0,0,0,0,0,0,70.4,0,1.386294,,0 +11,5,0,0,1,525192,0,5363.636,25.40726,1,16,1,20.94763,6.573566,0,14.96259,0,27.5212,0,0,3,2,0,1,61.7,17.2,0,77.3,0,12,0,0,0,2.484907,0,0,0,0,0,0,77.3,8.587584,0,3.314956,1 +11,5,0,0,2,525192,0,5363.636,26.40726,1,16,1,55.78608,0,0,0,0,55.78608,0,0,0,1,0,1,61.7,17.2,0,77.3,0,12,0,0,0,2.484907,0,0,0,0,0,0,77.3,8.587584,0,4.021524,1 +11,5,0,0,3,525192,0,5363.636,27.40726,1,16,1,283.5379,7.054592,26.07702,0,0,316.6695,0,0,0,8,2,1,61.7,17.2,0,77.3,0,12,0,0,0,2.484907,0,0,0,0,0,0,77.3,8.587584,0,5.757859,1 +11,5,0,0,4,525192,0,5363.636,28.40726,1,16,1,89.21792,22.53227,11.05543,0,394.0775,516.8831,1,0,0,4,0,1,61.7,17.2,0,77.3,0,12,0,0,0,2.484907,0,0,0,0,0,0,77.3,8.587584,0,6.247817,1 +11,5,0,0,5,525192,0,5363.636,29.40726,1,16,1,91.34948,19.0173,0,0,0,110.3668,0,0,0,3,0,1,61.7,17.2,0,77.3,0,12,0,0,0,2.484907,0,0,0,0,0,0,77.3,8.587584,0,4.703809,1 +13,5,0,1,1,525204,0,17808.5,25.78234,1,12,1,77.83922,2.977456,0,0,0,80.81667,0,0,0,4,0,5,72.3,10.3,0,76.1,450,864,0,0,1.609438,6.761573,1,4.564348,6.160541,0,1,0,76.1,9.787487,1.609438,4.392183,1 +13,5,0,1,2,525204,0,17808.5,26.78234,1,12,1,5.725191,0,0,0,0,5.725191,0,0,0,1,0,5,72.3,10.3,0,76.1,450,864,0,0,1.609438,6.761573,1,4.564348,6.160541,0,1,0,76.1,9.787487,1.609438,1.744876,1 +13,5,0,1,1,525205,0,17808.5,8.449008,0,12,1,10.63377,0,17.86474,0,0,28.49851,0,0,0,0,1,5,93.3,10.57626,0,100,450,864,1,0,1.609438,6.761573,1,4.564348,6.160541,0,0,0,100,9.787487,1.609438,3.349852,1 +13,5,0,1,2,525205,0,17808.5,9.449008,0,12,1,8.015267,0,0,0,0,8.015267,0,0,0,1,0,5,93.3,10.57626,0,100,450,864,1,0,1.609438,6.761573,1,4.564348,6.160541,0,0,0,100,9.787487,1.609438,2.081348,1 +13,5,0,1,1,525206,0,17808.5,8.449008,0,12,1,32.32667,0,0,0,0,32.32667,0,0,0,2,0,5,90,10.57626,0,96.3,450,864,1,0,1.609438,6.761573,1,4.564348,6.160541,0,0,0,96.3,9.787487,1.609438,3.475893,1 +13,5,0,1,2,525206,0,17808.5,9.449008,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,90,10.57626,0,96.3,450,864,1,0,1.609438,6.761573,1,4.564348,6.160541,0,0,0,96.3,9.787487,1.609438,,0 +13,5,0,0,1,525207,0,17808.5,26.99795,0,12,1,182.9009,10.77414,0,0,679.2854,872.9604,2,0,0,6,1,5,61.2,6.9,1,65.9,450,864,0,0,1.609438,6.761573,1,4.564348,6.160541,0,1,0,65.9,9.787487,1.609438,6.77189,1 +13,5,0,0,2,525207,0,17808.5,27.99795,0,12,1,0,8.790076,0,0,0,8.790076,0,0,0,0,0,5,61.2,6.9,1,65.9,450,864,0,0,1.609438,6.761573,1,4.564348,6.160541,0,1,0,65.9,9.787487,1.609438,2.173623,1 +13,5,0,1,1,525215,1,295.955,12.14237,0,7,1,25.73,0,0,0,0,25.73,0,0,0,0,0,3,90,10.57626,0,85.2,450,0,1,0,1.098612,0,1,4.564348,6.160541,1,0,0,85.2,5.693581,1.098612,3.247658,1 +13,5,0,1,2,525215,1,295.955,13.14237,0,7,1,0,0,0,0,0,0,0,0,0,0,0,2,90,10.57626,0,85.2,450,0,1,0,.6931472,0,1,4.564348,6.160541,1,0,0,85.2,5.693581,.6931472,,0 +13,5,0,1,3,525215,1,295.955,14.14237,0,7,1,22.14533,0,0,0,0,22.14533,0,0,0,0,0,2,90,10.57626,0,85.2,450,0,1,0,.6931472,0,1,4.564348,6.160541,1,0,0,85.2,5.693581,.6931472,3.097627,1 +13,5,0,1,1,525216,1,295.955,14.56537,1,7,1,0,0,0,0,0,0,0,0,0,0,0,3,92.6,3.4,0,80.7,450,0,1,1,1.098612,0,1,4.564348,6.160541,1,0,0,80.7,5.693581,1.098612,,0 +13,5,0,1,2,525216,1,295.955,15.56537,1,7,1,0,0,0,0,0,0,0,0,0,0,0,2,92.6,3.4,0,80.7,450,0,1,1,.6931472,0,1,4.564348,6.160541,1,0,0,80.7,5.693581,.6931472,,0 +13,5,0,1,3,525216,1,295.955,16.56537,1,7,1,0,0,0,0,0,0,0,0,0,0,0,2,92.6,3.4,0,80.7,450,0,1,1,.6931472,0,1,4.564348,6.160541,1,0,0,80.7,5.693581,.6931472,,0 +13,5,0,1,1,525218,1,295.955,17.16085,1,7,1,0,0,0,0,0,0,0,0,0,0,0,3,91,6.9,0,61.4,450,0,1,1,1.098612,0,1,4.564348,6.160541,1,0,0,61.4,5.693581,1.098612,,0 +13,5,0,1,1,525219,0,9755.425,34.46954,1,14,1,184.788,0,34.40898,0,0,219.197,0,0,0,13,0,3,76.6,6.9,0,62.5,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,62.5,9.185681,1.098612,5.389971,1 +13,5,0,1,2,525219,0,9755.425,35.46954,1,14,1,22.82158,14.2462,3.360996,0,568.0037,608.4324,1,0,0,1,0,3,76.6,6.9,0,62.5,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,62.5,9.185681,1.098612,6.410886,1 +13,5,0,1,3,525219,0,9755.425,36.46954,1,14,1,54.59162,19.99154,2.666102,0,0,77.24926,0,0,0,2,0,4,76.6,6.9,0,62.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,62.5,9.185681,1.386294,4.347037,1 +13,5,0,1,4,525219,0,9755.425,37.46954,1,14,1,24.39256,0,.8390281,0,0,25.23159,0,0,0,1,0,4,76.6,6.9,0,62.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,62.5,9.185681,1.386294,3.228097,1 +13,5,0,1,5,525219,0,9755.425,38.46954,1,14,1,90.65744,11.48789,31.12803,0,0,133.2734,0,0,0,5,1,4,76.6,6.9,0,62.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,62.5,9.185681,1.386294,4.892402,1 +13,5,0,1,1,525220,0,9755.425,7.70705,1,14,1,17.95511,4.852868,0,0,0,22.80798,0,0,0,2,0,3,86.7,10.57626,0,74.1,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.185681,1.098612,3.12711,1 +13,5,0,1,2,525220,0,9755.425,8.70705,1,14,1,11.06501,6.085754,0,0,0,17.15076,0,0,0,2,0,3,86.7,10.57626,0,74.1,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.185681,1.098612,2.842042,1 +13,5,0,1,3,525220,0,9755.425,9.70705,1,14,1,35.54803,3.893356,0,0,0,39.44139,0,0,0,5,0,4,86.7,10.57626,0,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.185681,1.386294,3.674816,1 +13,5,0,1,4,525220,0,9755.425,10.70705,1,14,1,13.28778,0,0,0,0,13.28778,0,0,0,1,0,4,86.7,10.57626,0,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.185681,1.386294,2.586844,1 +13,5,0,1,5,525220,0,9755.425,11.70705,1,14,1,10.38062,0,0,0,0,10.38062,0,0,0,2,0,4,86.7,10.57626,0,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,74.1,9.185681,1.386294,2.339941,1 +13,5,0,1,1,525221,0,9755.425,34.1629,0,12,1,81.54613,55.31671,10.31421,0,0,147.1771,0,0,0,5,0,3,70.7,20.7,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,64.8,9.185681,1.098612,4.991636,1 +13,5,0,1,2,525221,0,9755.425,35.1629,0,12,1,25.81835,40.35039,0,0,0,66.16874,0,0,0,3,0,3,70.7,20.7,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,64.8,9.185681,1.098612,4.192208,1 +13,5,0,1,3,525221,0,9755.425,36.1629,0,12,1,34.70165,33.44477,0,0,0,68.14642,0,0,0,4,0,4,70.7,20.7,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,64.8,9.185681,1.386294,4.221659,1 +13,5,0,1,4,525221,0,9755.425,37.1629,0,12,1,72.89294,36.79195,0,0,0,109.6849,0,0,0,6,0,4,70.7,20.7,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,64.8,9.185681,1.386294,4.697612,1 +13,5,0,1,5,525221,0,9755.425,38.1629,0,12,1,24.22145,67.69896,0,0,0,91.92042,0,0,0,3,0,4,70.7,20.7,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,64.8,9.185681,1.386294,4.520923,1 +15,5,95,1,1,525262,1,2432.428,31.18138,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,81.4,6.9,0,94.3,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,1,0,94.3,7.797056,.6931472,,0 +15,5,95,1,2,525262,1,2432.428,32.18138,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,81.4,6.9,0,94.3,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,1,0,94.3,7.797056,.6931472,,0 +15,5,95,1,3,525262,1,2432.428,33.18138,1,10,1,38.34931,0,0,0,0,38.34931,0,0,0,0,0,2,81.4,6.9,0,94.3,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,1,0,94.3,7.797056,.6931472,3.646737,1 +15,5,95,1,1,525263,1,2432.428,11.24983,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,96.7,10.57626,0,100,400,400,1,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,100,7.797056,.6931472,,0 +15,5,95,1,2,525263,1,2432.428,12.24983,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,96.7,10.57626,0,100,400,400,1,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,100,7.797056,.6931472,,0 +15,5,95,1,3,525263,1,2432.428,13.24983,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,96.7,10.57626,0,100,400,400,1,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,100,7.797056,.6931472,,0 +13,5,0,1,1,525267,0,5955.425,22.49692,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,58,17.2,0,59.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,59.1,8.692225,1.098612,,0 +13,5,0,1,2,525267,0,5955.425,23.49692,0,9,1,19.8248,18.21116,0,0,0,38.03596,0,0,0,3,0,3,58,17.2,0,59.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,59.1,8.692225,1.098612,3.638532,1 +13,5,0,1,3,525267,0,5955.425,24.49692,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,58,17.2,0,59.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,59.1,8.692225,1.098612,,0 +13,5,0,1,4,525267,0,5955.425,25.49692,0,9,1,0,2.277904,0,0,0,2.277904,0,0,0,0,0,3,58,17.2,0,59.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,59.1,8.692225,1.098612,.8232558,1 +13,5,0,1,5,525267,0,5955.425,26.49692,0,9,1,59.68858,0,0,0,0,59.68858,0,0,0,2,0,3,58,17.2,0,59.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,59.1,8.692225,1.098612,4.089141,1 +13,5,0,1,1,525268,0,5955.425,18.54346,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,58,3.4,0,60.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,60.2,8.692225,1.098612,,0 +13,5,0,1,2,525268,0,5955.425,19.54346,1,9,1,18.44168,11.96865,0,0,0,30.41033,0,0,0,2,0,3,58,3.4,0,60.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,60.2,8.692225,1.098612,3.414782,1 +13,5,0,1,3,525268,0,5955.425,20.54346,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,58,3.4,0,60.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,60.2,8.692225,1.098612,,0 +13,5,0,1,4,525268,0,5955.425,21.54346,1,9,1,52.69552,0,0,0,0,52.69552,0,0,0,4,0,3,58,3.4,0,60.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,60.2,8.692225,1.098612,3.96453,1 +13,5,0,1,5,525268,0,5955.425,22.54346,1,9,1,14.18685,1.089965,0,0,849.827,865.1038,1,0,0,0,0,3,58,3.4,0,60.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,60.2,8.692225,1.098612,6.762849,1 +13,5,0,1,1,525269,0,5955.425,2.565366,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,59.3,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,1,0,0,59.3,8.692225,1.098612,,0 +13,5,0,1,2,525269,0,5955.425,3.565366,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,59.3,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,1,0,0,59.3,8.692225,1.098612,,0 +13,5,0,1,3,525269,0,5955.425,4.565366,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,59.3,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,1,0,0,59.3,8.692225,1.098612,,0 +13,5,0,1,4,525269,0,5955.425,5.565366,1,9,1,5.31511,0,0,0,0,5.31511,0,0,0,1,0,3,77.40034,10.57626,0,59.3,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,1,0,0,59.3,8.692225,1.098612,1.670554,1 +13,5,0,1,5,525269,0,5955.425,6.565366,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,59.3,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,1,0,0,59.3,8.692225,1.098612,,0 +13,5,0,1,1,525291,0,6674.895,24,1,13,1,68.78418,0,0,0,0,68.78418,0,0,0,4,0,1,87.2,10.3,0,72.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,72.7,8.806258,0,4.230974,1 +13,5,0,1,2,525291,0,6674.895,25,1,13,1,18.88931,0,0,0,0,18.88931,0,0,0,2,0,1,87.2,10.3,0,72.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,72.7,8.806258,0,2.938596,1 +13,5,0,1,3,525291,0,6674.895,26,1,13,1,62.6072,7.732419,0,0,0,70.33962,0,0,0,5,0,1,87.2,10.3,0,72.7,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,72.7,8.806258,0,4.253335,1 +11,5,0,1,1,525332,0,155.4252,5.070499,0,4,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,77.8,0,0,1,0,1.386294,0,0,0,0,1,0,0,77.8,5.052578,1.386294,,0 +11,5,0,1,2,525332,0,155.4252,6.070499,0,4,1,57.86076,3.112033,0,0,0,60.9728,0,0,0,1,0,4,85,10.57626,0,77.8,0,0,1,0,1.386294,0,0,0,0,1,0,0,77.8,5.052578,1.386294,4.110428,1 +11,5,0,1,3,525332,0,155.4252,7.070499,0,4,1,6.347863,1.015658,0,0,0,7.363521,0,0,0,1,0,4,85,10.57626,0,77.8,0,0,1,0,1.386294,0,0,0,0,1,0,0,77.8,5.052578,1.386294,1.996538,1 +11,5,0,1,4,525332,0,155.4252,8.070499,0,4,1,23.44343,1.886864,0,0,0,25.3303,0,0,0,1,0,4,85,10.57626,0,77.8,0,0,1,0,1.386294,0,0,0,0,1,0,0,77.8,5.052578,1.386294,3.232001,1 +11,5,0,1,5,525332,0,155.4252,9.070499,0,4,1,8.650519,0,23.87543,0,0,32.52595,0,0,0,0,1,4,85,10.57626,0,77.8,0,0,1,0,1.386294,0,0,0,0,1,0,0,77.8,5.052578,1.386294,3.482038,1 +11,5,0,1,1,525333,0,155.4252,17.0705,1,4,1,0,0,0,0,0,0,0,0,0,0,0,4,77.1,3.4,0,71.6,0,0,1,1,1.386294,0,0,0,0,1,0,0,71.6,5.052578,1.386294,,0 +11,5,0,1,2,525333,0,155.4252,18.0705,1,4,1,25.56478,0,0,0,0,25.56478,0,0,0,0,0,4,77.1,3.4,0,71.6,0,0,0,0,1.386294,0,0,0,0,1,0,0,71.6,5.052578,1.386294,3.241215,1 +11,5,0,1,3,525333,0,155.4252,19.0705,1,4,1,35.86543,4.528142,0,0,0,40.39357,0,0,0,0,1,4,77.1,3.4,0,71.6,0,0,0,0,1.386294,0,0,0,0,1,0,0,71.6,5.052578,1.386294,3.698671,1 +11,5,0,1,4,525333,0,155.4252,20.0705,1,4,1,66.05923,10.51632,0,0,0,76.57555,0,0,0,6,0,4,77.1,3.4,0,71.6,0,0,0,0,1.386294,0,0,0,0,1,0,0,71.6,5.052578,1.386294,4.338278,1 +11,5,0,1,5,525333,0,155.4252,21.0705,1,4,1,0,0,0,0,0,0,0,0,0,0,0,4,77.1,3.4,0,71.6,0,0,0,0,1.386294,0,0,0,0,1,0,0,71.6,5.052578,1.386294,,0 +11,5,0,1,1,525334,0,155.4252,7.734428,0,4,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,10.57626,0,88.9,0,0,1,0,1.386294,0,0,0,0,1,0,0,88.9,5.052578,1.386294,,0 +11,5,0,1,2,525334,0,155.4252,8.734428,0,4,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,10.57626,0,88.9,0,0,1,0,1.386294,0,0,0,0,1,0,0,88.9,5.052578,1.386294,,0 +11,5,0,1,3,525334,0,155.4252,9.734428,0,4,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,10.57626,0,88.9,0,0,1,0,1.386294,0,0,0,0,1,0,0,88.9,5.052578,1.386294,,0 +11,5,0,1,4,525334,0,155.4252,10.73443,0,4,1,25.24677,3.018223,0,0,0,28.265,0,0,0,3,0,4,88.3,10.57626,0,88.9,0,0,1,0,1.386294,0,0,0,0,1,0,0,88.9,5.052578,1.386294,3.341624,1 +11,5,0,1,5,525334,0,155.4252,11.73443,0,4,1,19.03114,5.17301,23.87543,0,0,48.07959,0,0,0,0,1,4,88.3,10.57626,0,88.9,0,0,1,0,1.386294,0,0,0,0,1,0,0,88.9,5.052578,1.386294,3.872858,1 +11,5,0,1,1,525335,0,155.4252,38.59822,1,4,1,0,0,37.86534,0,0,37.86534,0,0,0,0,0,4,64.9,24.1,0,62.5,0,0,0,0,1.386294,0,0,0,0,0,1,0,62.5,5.052578,1.386294,3.634036,1 +11,5,0,1,2,525335,0,155.4252,39.59822,1,4,1,69.00876,37.2107,29.05947,0,0,135.2789,0,0,0,2,4,4,64.9,24.1,0,62.5,0,0,0,0,1.386294,0,0,0,0,0,1,0,62.5,5.052578,1.386294,4.907339,1 +11,5,0,1,3,525335,0,155.4252,40.59822,1,4,1,105.0783,47.19001,13.05967,0,0,165.328,0,0,0,8,4,4,64.9,24.1,0,62.5,0,0,0,0,1.386294,0,0,0,0,0,1,0,62.5,5.052578,1.386294,5.107931,1 +11,5,0,1,4,525335,0,155.4252,41.59822,1,4,1,258.656,50.44799,41.65528,0,0,350.7593,0,0,0,12,0,4,64.9,24.1,0,62.5,0,0,0,0,1.386294,0,0,0,0,0,1,0,62.5,5.052578,1.386294,5.8601,1 +11,5,0,1,5,525335,0,155.4252,42.59822,1,4,1,215.5709,141.8166,59.29412,0,448.7889,865.4706,1,0,0,16,0,4,64.9,24.1,0,62.5,0,0,0,0,1.386294,0,0,0,0,0,1,0,62.5,5.052578,1.386294,6.763273,1 +11,5,0,1,1,525336,1,1399.413,1.938398,1,10,1,26.05985,0,0,0,0,26.05985,0,0,0,0,0,2,77.40034,10.57626,0,85.2,0,0,1,1,.6931472,0,0,0,0,0,0,0,85.2,7.244523,.6931472,3.260396,1 +11,5,0,1,2,525336,1,1399.413,2.938398,1,10,1,48.01752,4.61042,0,0,0,52.62794,0,0,0,0,2,2,77.40034,10.57626,0,85.2,0,0,1,1,.6931472,0,0,0,0,0,0,0,85.2,7.244523,.6931472,3.963247,1 +11,5,0,1,3,525336,1,1399.413,3.938398,1,10,1,65.55226,8.26915,0,0,0,73.82141,0,0,0,3,4,2,77.40034,10.57626,0,85.2,0,0,1,1,.6931472,0,0,0,0,0,0,0,85.2,7.244523,.6931472,4.301649,1 +11,5,0,1,4,525336,1,1399.413,4.938398,1,10,1,48.21564,6.833713,0,0,0,55.04935,0,0,0,3,0,2,77.40034,10.57626,0,85.2,0,0,1,1,.6931472,0,0,0,0,0,0,0,85.2,7.244523,.6931472,4.00823,1 +11,5,0,1,5,525336,1,1399.413,5.938398,1,10,1,13.14879,4.134948,0,0,0,17.28374,0,0,0,1,1,2,77.40034,10.57626,0,85.2,0,0,1,1,.6931472,0,0,0,0,0,0,0,85.2,7.244523,.6931472,2.849766,1 +11,5,0,1,1,525337,1,1399.413,22.2998,1,10,1,0,12.50873,0,0,0,12.50873,0,0,0,0,0,2,58,10.3,0,62.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,62.5,7.244523,.6931472,2.526427,1 +11,5,0,1,2,525337,1,1399.413,23.2998,1,10,1,56.70816,30.24896,23.97418,0,0,110.9313,0,0,0,2,2,2,58,10.3,0,62.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,62.5,7.244523,.6931472,4.708911,1 +11,5,0,1,3,525337,1,1399.413,24.2998,1,10,1,17.45662,11.78587,0,0,0,29.24249,0,0,0,1,0,2,58,10.3,0,62.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,62.5,7.244523,.6931472,3.375623,1 +11,5,0,1,4,525337,1,1399.413,25.2998,1,10,1,57.9347,33.44723,26.1959,0,0,117.5778,0,0,0,3,1,2,58,10.3,0,62.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,62.5,7.244523,.6931472,4.7671,1 +11,5,0,1,5,525337,1,1399.413,26.2998,1,10,1,114.0138,19.15225,14.53287,0,0,147.699,0,0,0,7,1,2,58,10.3,0,62.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,62.5,7.244523,.6931472,4.995176,1 +11,5,0,1,1,525352,1,1829.912,52.0219,1,7,1,0,0,0,0,0,0,0,0,0,0,0,1,86.7,13.8,0,73.9,0,0,0,0,0,0,0,0,0,1,0,0,73.9,7.512569,0,,0 +11,5,0,1,2,525352,1,1829.912,53.0219,1,7,1,0,0,0,0,0,0,0,0,0,0,0,1,86.7,13.8,0,73.9,0,0,0,0,0,0,0,0,0,1,0,0,73.9,7.512569,0,,0 +11,5,0,1,3,525352,1,1829.912,54.0219,1,7,1,27.34539,0,30.71098,0,0,58.05637,0,0,0,0,3,1,86.7,13.8,0,73.9,0,0,0,0,0,0,0,0,0,1,0,0,73.9,7.512569,0,4.061415,1 +11,5,0,1,4,525352,1,1829.912,55.0219,1,7,1,7.555724,0,0,0,0,7.555724,0,0,0,0,1,1,86.7,13.8,0,73.9,0,0,0,0,0,0,0,0,0,1,0,0,73.9,7.512569,0,2.022305,1 +11,5,0,1,5,525352,1,1829.912,56.0219,1,7,1,0,0,0,0,0,0,0,0,0,0,0,1,86.7,13.8,0,73.9,0,0,0,0,0,0,0,0,0,1,0,0,73.9,7.512569,0,,0 +11,5,0,1,1,525374,1,8918.475,21.7796,1,12,1,0,1.977205,0,0,0,1.977205,0,0,0,0,0,5,86.2,3.4,0,94.3,0,391.56,0,0,1.609438,5.970139,0,0,0,0,0,0,94.3,9.095992,1.609438,.6816843,1 +11,5,0,1,2,525374,1,8918.475,22.7796,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,86.2,3.4,0,94.3,0,391.56,0,0,1.609438,5.970139,0,0,0,0,0,0,94.3,9.095992,1.609438,,0 +11,5,0,1,3,525374,1,8918.475,23.7796,1,12,1,8.834665,4.627682,0,0,0,13.46235,0,0,0,1,0,5,86.2,3.4,0,94.3,0,391.56,0,0,1.609438,5.970139,0,0,0,0,0,0,94.3,9.095992,1.609438,2.599897,1 +11,5,0,1,4,525374,1,8918.475,24.7796,1,12,1,11.33358,0,0,0,0,11.33358,0,0,0,1,0,5,86.2,3.4,0,94.3,0,391.56,0,0,1.609438,5.970139,0,0,0,0,0,0,94.3,9.095992,1.609438,2.42777,1 +11,5,0,1,5,525374,1,8918.475,25.7796,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,86.2,3.4,0,94.3,0,391.56,0,0,1.609438,5.970139,0,0,0,0,0,0,94.3,9.095992,1.609438,,0 +11,5,0,1,1,525375,1,8918.475,30.59274,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,58,0,0,54.5,0,391.56,0,0,1.609438,5.970139,0,0,0,1,0,0,54.5,9.095992,1.609438,,0 +11,5,0,1,2,525375,1,8918.475,31.59274,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,58,0,0,54.5,0,391.56,0,0,1.609438,5.970139,0,0,0,1,0,0,54.5,9.095992,1.609438,,0 +11,5,0,1,3,525375,1,8918.475,32.59274,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,58,0,0,54.5,0,391.56,0,0,1.609438,5.970139,0,0,0,1,0,0,54.5,9.095992,1.609438,,0 +11,5,0,1,4,525375,1,8918.475,33.59274,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,58,0,0,54.5,0,391.56,0,0,1.609438,5.970139,0,0,0,1,0,0,54.5,9.095992,1.609438,,0 +11,5,0,1,5,525375,1,8918.475,34.59274,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,58,0,0,54.5,0,391.56,0,0,1.609438,5.970139,0,0,0,1,0,0,54.5,9.095992,1.609438,,0 +11,5,0,1,1,525376,1,8918.475,2.800821,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,70.4,0,391.56,1,1,1.609438,5.970139,0,0,0,0,0,0,70.4,9.095992,1.609438,,0 +11,5,0,1,2,525376,1,8918.475,3.800821,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,70.4,0,391.56,1,1,1.609438,5.970139,0,0,0,0,0,0,70.4,9.095992,1.609438,,0 +11,5,0,1,3,525376,1,8918.475,4.800821,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,70.4,0,391.56,1,1,1.609438,5.970139,0,0,0,0,0,0,70.4,9.095992,1.609438,,0 +11,5,0,1,4,525376,1,8918.475,5.800821,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,70.4,0,391.56,1,1,1.609438,5.970139,0,0,0,0,0,0,70.4,9.095992,1.609438,,0 +11,5,0,1,5,525376,1,8918.475,6.800821,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,70.4,0,391.56,1,1,1.609438,5.970139,0,0,0,0,0,0,70.4,9.095992,1.609438,,0 +11,5,0,1,1,525377,1,8918.475,7.167693,1,12,1,9.415262,0,0,0,0,9.415262,0,0,0,1,0,5,83.3,10.57626,0,85.2,0,391.56,1,1,1.609438,5.970139,0,0,0,1,0,0,85.2,9.095992,1.609438,2.242332,1 +11,5,0,1,2,525377,1,8918.475,8.167693,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83.3,10.57626,0,85.2,0,391.56,1,1,1.609438,5.970139,0,0,0,1,0,0,85.2,9.095992,1.609438,,0 +11,5,0,1,3,525377,1,8918.475,9.167693,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83.3,10.57626,0,85.2,0,391.56,1,1,1.609438,5.970139,0,0,0,1,0,0,85.2,9.095992,1.609438,,0 +11,5,0,1,4,525377,1,8918.475,10.16769,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83.3,10.57626,0,85.2,0,391.56,1,1,1.609438,5.970139,0,0,0,1,0,0,85.2,9.095992,1.609438,,0 +11,5,0,1,5,525377,1,8918.475,11.16769,1,12,1,8.576329,2.003431,23.10806,0,0,33.68782,0,0,0,0,1,5,83.3,10.57626,0,85.2,0,391.56,1,1,1.609438,5.970139,0,0,0,1,0,0,85.2,9.095992,1.609438,3.517136,1 +11,5,0,1,1,525378,1,8918.475,5.998631,0,12,1,30.62438,0,0,0,0,30.62438,0,0,0,0,0,5,95,10.57626,0,85.2,0,391.56,1,0,1.609438,5.970139,0,0,0,1,0,0,85.2,9.095992,1.609438,3.421796,1 +11,5,0,1,2,525378,1,8918.475,6.998631,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,95,10.57626,0,85.2,0,391.56,1,0,1.609438,5.970139,0,0,0,1,0,0,85.2,9.095992,1.609438,,0 +11,5,0,1,3,525378,1,8918.475,7.998631,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,95,10.57626,0,85.2,0,391.56,1,0,1.609438,5.970139,0,0,0,1,0,0,85.2,9.095992,1.609438,,0 +11,5,0,1,4,525378,1,8918.475,8.998631,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,95,10.57626,0,85.2,0,391.56,1,0,1.609438,5.970139,0,0,0,1,0,0,85.2,9.095992,1.609438,,0 +11,5,0,1,5,525378,1,8918.475,9.998631,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,95,10.57626,0,85.2,0,391.56,1,0,1.609438,5.970139,0,0,0,1,0,0,85.2,9.095992,1.609438,,0 +13,5,0,0,1,525380,0,9984.639,54.51609,1,16,1,65.59458,13.92298,41.81126,0,0,121.3288,0,0,0,5,0,2,75.5,20.7,0,73.9,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.208903,.6931472,4.798504,1 +13,5,0,0,2,525380,0,9984.639,55.51609,1,16,1,20.88079,0,0,0,0,20.88079,0,0,0,3,0,2,75.5,20.7,0,73.9,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.208903,.6931472,3.03883,1 +13,5,0,0,3,525380,0,9984.639,56.51609,1,16,1,36.6782,14.70588,0,0,0,51.38408,0,0,0,3,0,2,75.5,20.7,0,73.9,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,73.9,9.208903,.6931472,3.939328,1 +13,5,0,0,1,525382,0,9984.639,52.30664,0,12,1,97.54549,0,40.4909,0,0,138.0364,0,0,0,4,0,2,93.1,13.8,0,96.6,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,96.6,9.208903,.6931472,4.927517,1 +13,5,0,0,2,525382,0,9984.639,53.30664,0,12,1,52.3918,0,0,0,0,52.3918,0,0,0,1,0,2,93.1,13.8,0,96.6,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,96.6,9.208903,.6931472,3.95875,1 +13,5,0,0,3,525382,0,9984.639,54.30664,0,12,1,51.90311,0,45.69896,0,0,97.60207,0,0,0,4,0,2,93.1,13.8,0,96.6,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,0,0,96.6,9.208903,.6931472,4.580899,1 +11,5,0,1,1,525384,0,7808.798,30.84736,1,12,1,52.03172,28.05748,25.76809,0,0,105.8573,0,0,0,5,1,4,78.2,3.4,0,72.7,0,513.24,0,0,1.386294,6.240744,0,0,0,1,0,0,72.7,8.963135,1.386294,4.662092,1 +11,5,0,1,2,525384,0,7808.798,31.84736,1,12,1,57.36576,30.52777,0,0,0,87.89353,0,0,0,7,1,4,78.2,3.4,0,72.7,0,513.24,0,0,1.386294,6.240744,0,0,0,1,0,0,72.7,8.963135,1.386294,4.476126,1 +11,5,0,1,3,525384,0,7808.798,32.84737,1,12,1,57.21498,5.098864,25.6626,0,0,87.97644,0,0,0,4,1,4,78.2,3.4,0,72.7,0,513.24,0,0,1.386294,6.240744,0,0,0,1,0,0,72.7,8.963135,1.386294,4.477069,1 +11,5,0,1,4,525384,0,7808.798,33.84737,1,12,1,5.666792,0,0,0,0,5.666792,0,0,0,1,0,4,78.2,3.4,0,72.7,0,513.24,0,0,1.386294,6.240744,0,0,0,1,0,0,72.7,8.963135,1.386294,1.734623,1 +11,5,0,1,5,525384,0,7808.798,34.84737,1,12,1,19.55403,0,22.98456,0,0,42.53859,0,0,0,1,1,4,78.2,3.4,0,72.7,0,513.24,0,0,1.386294,6.240744,0,0,0,1,0,0,72.7,8.963135,1.386294,3.750412,1 +11,5,0,1,1,525385,0,7808.798,5.262149,1,12,1,75.3221,14.59366,0,0,0,89.91576,0,0,0,11,1,4,98.3,10.57626,0,92.6,0,513.24,1,1,1.386294,6.240744,0,0,0,1,0,0,92.6,8.963135,1.386294,4.498873,1 +11,5,0,1,2,525385,0,7808.798,6.262149,1,12,1,98.21019,29.91739,22.94631,0,0,151.0739,0,0,0,15,1,4,98.3,10.57626,0,92.6,0,513.24,1,1,1.386294,6.240744,0,0,0,1,0,0,92.6,8.963135,1.386294,5.017769,1 +11,5,0,1,3,525385,0,7808.798,7.262149,1,12,1,49.64241,12.51578,10.93816,0,0,73.09634,0,0,0,6,1,4,98.3,10.57626,0,92.6,0,513.24,1,1,1.386294,6.240744,0,0,0,1,0,0,92.6,8.963135,1.386294,4.291778,1 +11,5,0,1,4,525385,0,7808.798,8.262149,1,12,1,28.71175,2.11938,0,0,0,30.83113,0,0,0,2,1,4,98.3,10.57626,0,92.6,0,513.24,1,1,1.386294,6.240744,0,0,0,1,0,0,92.6,8.963135,1.386294,3.428525,1 +11,5,0,1,5,525385,0,7808.798,9.262149,1,12,1,29.15952,0,19.89708,0,0,49.0566,0,0,0,2,1,4,98.3,10.57626,0,92.6,0,513.24,1,1,1.386294,6.240744,0,0,0,1,0,0,92.6,8.963135,1.386294,3.892975,1 +11,5,0,1,1,525386,0,7808.798,8.424367,1,12,1,187.8097,20.62934,36.66997,0,0,245.109,0,0,0,13,1,4,53.3,10.57626,0,37,0,513.24,1,1,1.386294,6.240744,0,0,0,1,0,0,37,8.963135,1.386294,5.501703,1 +11,5,0,1,2,525386,0,7808.798,9.424367,1,12,1,109.2244,19.34373,0,0,0,128.5681,0,0,0,17,1,4,53.3,10.57626,0,37,0,513.24,1,1,1.386294,6.240744,0,0,0,1,0,0,37,8.963135,1.386294,4.856459,1 +11,5,0,1,3,525386,0,7808.798,10.42437,1,12,1,92.97433,24.29533,36.60076,0,0,153.8704,0,0,0,10,2,4,53.3,10.57626,0,37,0,513.24,1,1,1.386294,6.240744,0,0,0,1,0,0,37,8.963135,1.386294,5.036111,1 +11,5,0,1,4,525386,0,7808.798,11.42437,1,12,1,125.0472,77.26483,10.57801,0,0,212.8901,0,0,0,13,1,4,53.3,10.57626,0,37,0,513.24,1,1,1.386294,6.240744,0,0,0,1,0,0,37,8.963135,1.386294,5.360776,1 +11,5,0,1,5,525386,0,7808.798,12.42437,1,12,1,72.72727,70.1681,23.32762,0,0,166.223,0,0,0,11,1,4,53.3,10.57626,0,37,0,513.24,1,1,1.386294,6.240744,0,0,0,1,0,0,37,8.963135,1.386294,5.11333,1 +11,5,0,1,1,525387,0,7808.798,36.11773,0,12,1,49.55401,32.21011,0,0,0,81.76412,0,0,0,5,1,4,66,3.4,0,61.4,0,513.24,0,0,1.386294,6.240744,0,0,0,1,0,0,61.4,8.963135,1.386294,4.403839,1 +11,5,0,1,2,525387,0,7808.798,37.11773,0,12,1,58.28362,52.46443,0,0,0,110.748,0,0,0,7,1,4,66,3.4,0,61.4,0,513.24,0,0,1.386294,6.240744,0,0,0,1,0,0,61.4,8.963135,1.386294,4.707258,1 +11,5,0,1,3,525387,0,7808.798,38.11773,0,12,1,46.69752,70.03365,31.97308,0,0,148.7043,0,0,0,5,1,4,66,3.4,0,61.4,0,513.24,0,0,1.386294,6.240744,0,0,0,1,0,0,61.4,8.963135,1.386294,5.001959,1 +11,5,0,1,4,525387,0,7808.798,39.11773,0,12,1,34.00076,120.6611,0,0,0,154.6619,0,0,0,4,0,4,66,3.4,0,61.4,0,513.24,0,0,1.386294,6.240744,0,0,0,1,0,0,61.4,8.963135,1.386294,5.041241,1 +11,5,0,1,5,525387,0,7808.798,40.11773,0,12,1,19.89708,122.4185,0,0,0,142.3156,0,0,0,3,0,4,66,3.4,0,61.4,0,513.24,0,0,1.386294,6.240744,0,0,0,1,0,0,61.4,8.963135,1.386294,4.958047,1 +13,5,0,0,1,525392,0,4632.873,59.6167,1,4,1,83.15701,47.00804,39.77994,0,1119.975,1289.92,1,0,0,7,1,2,73.4,13.8,0,58,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,58,8.441148,.6931472,7.162335,1 +13,5,0,0,2,525392,0,4632.873,60.6167,1,4,1,157.5551,84.62035,24.29765,0,666.287,932.7601,1,0,0,9,1,2,73.4,13.8,0,58,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,58,8.441148,.6931472,6.838148,1 +13,5,0,0,3,525392,0,4632.873,61.6167,1,4,1,350.0865,68.03114,36.33218,0,0,454.4498,0,0,0,11,3,2,73.4,13.8,0,58,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,58,8.441148,.6931472,6.119088,1 +13,5,0,0,1,525394,0,4632.873,61.36619,0,1,1,23.2755,5.450698,30.89293,0,0,59.61913,0,0,0,1,1,2,84.6,3.4,0,54.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,54.5,8.441148,.6931472,4.087976,1 +13,5,0,0,2,525394,0,4632.873,62.36619,0,1,1,51.25285,19.33941,0,0,0,70.59225,0,0,0,2,0,2,84.6,3.4,0,54.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,54.5,8.441148,.6931472,4.25692,1 +13,5,0,0,3,525394,0,4632.873,63.36619,0,1,1,0,0,0,0,0,0,0,0,0,0,0,2,84.6,3.4,0,54.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,54.5,8.441148,.6931472,,0 +13,5,0,0,1,525400,1,460.8295,52.43258,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,86.7,3.4,0,72.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,72.6,6.135196,0,,0 +13,5,0,0,2,525400,1,460.8295,53.43258,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,86.7,3.4,0,72.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,72.6,6.135196,0,,0 +13,5,0,0,3,525400,1,460.8295,54.43258,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,86.7,3.4,0,72.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,72.6,6.135196,0,,0 +5,5,25,0,1,525405,1,5774.706,3.578371,1,12,1,58.3157,0,0,0,808.7177,867.0334,1,0,0,0,0,5,77.40034,10.57626,0,88.9,80.25,646.36,1,1,1.609438,6.471356,0,3.258096,5.771441,1,0,0,88.9,8.661416,1.609438,6.765078,1 +5,5,25,0,2,525405,1,5774.706,4.578371,1,12,1,7.593014,0,0,0,0,7.593014,0,0,0,0,0,5,77.40034,10.57626,0,88.9,80.25,646.36,1,1,1.609438,6.471356,0,3.258096,5.771441,1,0,0,88.9,8.661416,1.609438,2.027229,1 +5,5,25,0,3,525405,1,5774.706,5.578371,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,88.9,80.25,646.36,1,1,1.609438,6.471356,0,3.258096,5.771441,1,0,0,88.9,8.661416,1.609438,,0 +5,5,25,0,1,525406,1,5774.706,28.00548,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.4,0,0,81.8,80.25,646.36,0,0,1.609438,6.471356,0,3.258096,5.771441,0,1,0,81.8,8.661416,1.609438,,0 +5,5,25,0,2,525406,1,5774.706,29.00548,0,12,1,3.796507,0,0,0,0,3.796507,0,0,0,1,0,5,81.4,0,0,81.8,80.25,646.36,0,0,1.609438,6.471356,0,3.258096,5.771441,0,1,0,81.8,8.661416,1.609438,1.334081,1 +5,5,25,0,3,525406,1,5774.706,30.00548,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.4,0,0,81.8,80.25,646.36,0,0,1.609438,6.471356,0,3.258096,5.771441,0,1,0,81.8,8.661416,1.609438,,0 +5,5,25,0,1,525407,1,5774.706,25.17728,1,12,1,11.00296,3.554803,0,0,0,14.55777,0,0,0,0,0,5,77.7,3.4,0,69.3,80.25,646.36,0,0,1.609438,6.471356,0,3.258096,5.771441,1,0,0,69.3,8.661416,1.609438,2.678125,1 +5,5,25,0,2,525407,1,5774.706,26.17728,1,12,1,0,0,0,0,326.4996,326.4996,1,0,0,0,0,5,77.7,3.4,0,69.3,80.25,646.36,0,0,1.609438,6.471356,0,3.258096,5.771441,1,0,0,69.3,8.661416,1.609438,5.788429,1 +5,5,25,0,3,525407,1,5774.706,27.17728,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.7,3.4,0,69.3,80.25,646.36,0,0,1.609438,6.471356,0,3.258096,5.771441,1,0,0,69.3,8.661416,1.609438,,0 +5,5,25,0,1,525408,1,5774.706,5.812457,1,12,1,15.42531,0,0,0,0,15.42531,0,0,0,0,0,5,86.7,10.57626,0,88.9,80.25,646.36,1,1,1.609438,6.471356,0,3.258096,5.771441,1,0,0,88.9,8.661416,1.609438,2.73601,1 +5,5,25,0,2,525408,1,5774.706,6.812457,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,10.57626,0,88.9,80.25,646.36,1,1,1.609438,6.471356,0,3.258096,5.771441,1,0,0,88.9,8.661416,1.609438,,0 +5,5,25,0,3,525408,1,5774.706,7.812457,1,12,1,13.84083,0,0,0,0,13.84083,0,0,0,0,0,5,86.7,10.57626,0,88.9,80.25,646.36,1,1,1.609438,6.471356,0,3.258096,5.771441,1,0,0,88.9,8.661416,1.609438,2.627623,1 +13,5,0,0,1,525423,1,9648.745,16.99384,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,82.4,0,0,81.8,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,81.8,9.174686,1.791759,,0 +13,5,0,0,2,525423,1,9648.745,17.99384,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,82.4,0,0,81.8,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.8,9.174686,1.609438,,0 +13,5,0,0,3,525423,1,9648.745,18.99384,0,12,1,0,1.35506,0,0,0,1.35506,0,0,0,0,0,5,82.4,0,0,81.8,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.8,9.174686,1.609438,.3038457,1 +13,5,0,0,1,525424,1,9648.745,20.0794,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,93.1,3.4,0,76.1,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,76.1,9.174686,1.791759,,0 +13,5,0,0,2,525424,1,9648.745,21.0794,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,93.1,3.4,0,76.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,76.1,9.174686,1.609438,,0 +13,5,0,0,3,525424,1,9648.745,22.0794,1,10,1,0,7.025729,0,0,0,7.025729,0,0,0,0,0,5,93.1,3.4,0,76.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,76.1,9.174686,1.609438,1.949579,1 +13,5,0,0,1,525425,1,9648.745,13.80972,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,96.7,10.57626,.1442925,88.9,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.174686,1.791759,,0 +13,5,0,0,1,525426,1,9648.745,36.27926,1,12,1,6.310475,0,0,0,0,6.310475,0,0,0,0,0,6,77.40034,10.57626,.1442925,,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.174686,1.791759,1.842211,1 +13,5,0,0,2,525426,1,9648.745,37.27926,1,12,1,3.777862,1.511145,0,0,812.9958,818.2849,1,0,0,1,0,5,77.40034,10.57626,.1442925,,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.174686,1.609438,6.707211,1 +13,5,0,0,3,525426,1,9648.745,38.27926,1,12,1,0,4.082333,0,0,0,4.082333,0,0,0,0,0,5,77.40034,10.57626,.1442925,,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.174686,1.609438,1.406669,1 +13,5,0,0,1,525427,1,9648.745,18.3436,0,10.96978,1,0,0,0,0,0,0,0,0,0,0,0,6,90.4,0,0,80.7,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.174686,1.791759,,0 +13,5,0,0,2,525427,1,9648.745,19.3436,0,10.96978,1,0,0,0,0,0,0,0,0,0,0,0,5,90.4,0,0,80.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.174686,1.609438,,0 +13,5,0,0,3,525427,1,9648.745,20.3436,0,10.96978,1,0,0,0,0,0,0,0,0,0,0,0,5,90.4,0,0,80.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.174686,1.609438,,0 +13,5,0,0,1,525428,1,9648.745,43.84121,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,94.1,6.9,0,80.7,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.174686,1.791759,,0 +13,5,0,0,2,525428,1,9648.745,44.84121,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,94.1,6.9,0,80.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.174686,1.609438,,0 +13,5,0,0,3,525428,1,9648.745,45.84121,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,94.1,6.9,0,80.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.174686,1.609438,,0 +13,5,0,0,1,525438,0,7237.583,30.45038,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,97.9,3.4,0,71.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,71.6,8.88718,1.098612,,0 +13,5,0,0,2,525438,0,7237.583,31.45038,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,97.9,3.4,0,71.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,71.6,8.88718,1.098612,,0 +13,5,0,0,3,525438,0,7237.583,32.45037,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,97.9,3.4,0,71.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,71.6,8.88718,1.098612,,0 +13,5,0,1,1,525439,0,7237.583,11.00616,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,100,10.57626,0,92.6,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.88718,1.098612,,0 +13,5,0,1,2,525439,0,7237.583,12.00616,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,100,10.57626,0,92.6,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.88718,1.098612,,0 +13,5,0,1,3,525439,0,7237.583,13.00616,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,100,10.57626,0,92.6,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.88718,1.098612,,0 +13,5,0,1,1,525440,0,7237.583,29.96852,1,9,1,0,5.469079,0,0,0,5.469079,0,0,0,0,0,3,96.3,3.4,0,77.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,77.4,8.88718,1.098612,1.69911,1 +13,5,0,1,2,525440,0,7237.583,30.96852,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,96.3,3.4,0,77.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,77.4,8.88718,1.098612,,0 +13,5,0,1,3,525440,0,7237.583,31.96852,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,96.3,3.4,0,77.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,77.4,8.88718,1.098612,,0 +11,5,0,1,1,525450,1,2597.03,55.11841,0,5,1,79.54062,24.18971,24.77244,0,0,128.5028,0,0,0,5,1,1,75.5,3.4,0,59.1,0,0,0,0,0,0,0,0,0,1,0,0,59.1,7.862509,0,4.85595,1 +11,5,0,1,2,525450,1,2597.03,56.11841,0,5,1,0,5.240458,30.96183,0,0,36.20229,0,0,0,0,0,1,75.5,3.4,0,59.1,0,0,0,0,0,0,0,0,0,1,0,0,59.1,7.862509,0,3.589122,1 +11,5,0,1,3,525450,1,2597.03,57.11841,0,5,1,64.80836,59.49477,35.8885,0,1167.944,1328.136,1,0,0,4,1,1,75.5,3.4,0,59.1,0,0,0,0,0,0,0,0,0,1,0,0,59.1,7.862509,0,7.191532,1 +14,5,95,1,1,525456,0,11896.19,7.411362,1,12,1,15.85728,2.913776,0,0,0,18.77106,0,0,0,1,1,4,86.7,10.57626,0,92.6,753.2,1173,1,1,1.386294,7.06732,0,4.564348,6.675624,0,0,0,92.6,9.384057,1.386294,2.932316,1 +14,5,95,1,2,525456,0,11896.19,8.411362,1,12,1,5.507113,0,0,0,0,5.507113,0,0,0,1,0,4,86.7,10.57626,0,92.6,753.2,1173,1,1,1.386294,7.06732,0,4.564348,6.675624,0,0,0,92.6,9.384057,1.386294,1.706041,1 +14,5,95,1,3,525456,0,11896.19,9.411362,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,10.57626,0,92.6,753.2,1173,1,1,1.386294,7.06732,0,4.564348,6.675624,0,0,0,92.6,9.384057,1.386294,,0 +14,5,95,1,4,525456,0,11896.19,10.41136,1,12,1,44.95655,16.87193,0,0,0,61.82848,0,0,0,5,0,5,86.7,10.57626,0,92.6,753.2,1173,1,1,1.609438,7.06732,0,4.564348,6.675624,0,0,0,92.6,9.384057,1.609438,4.124364,1 +14,5,95,1,5,525456,0,11896.19,11.41136,1,12,1,63.46484,30.64151,0,0,0,94.10635,0,0,0,8,0,5,86.7,10.57626,0,92.6,753.2,1173,1,1,1.609438,7.06732,0,4.564348,6.675624,0,0,0,92.6,9.384057,1.609438,4.544425,1 +14,5,95,1,1,525457,0,11896.19,29.6564,1,12,1,56.98712,23.15659,59.21704,0,0,139.3607,0,0,0,5,1,4,81.9,13.8,0,86.4,753.2,1173,0,0,1.386294,7.06732,0,4.564348,6.675624,0,0,0,86.4,9.384057,1.386294,4.937066,1 +14,5,95,1,2,525457,0,11896.19,30.6564,1,12,1,50.9408,50.13309,0,0,2255.14,2356.214,1,0,0,4,0,4,81.9,13.8,0,86.4,753.2,1173,0,0,1.386294,7.06732,0,4.564348,6.675624,0,0,0,86.4,9.384057,1.386294,7.764812,1 +14,5,95,1,3,525457,0,11896.19,31.6564,1,12,1,30.29028,36.41986,0,0,0,66.71014,0,0,0,4,0,4,81.9,13.8,0,86.4,753.2,1173,0,0,1.386294,7.06732,0,4.564348,6.675624,0,0,0,86.4,9.384057,1.386294,4.200357,1 +14,5,95,1,4,525457,0,11896.19,32.6564,1,12,1,114.0914,58.59086,41.06913,0,0,213.7514,0,0,0,6,0,5,81.9,13.8,0,86.4,753.2,1173,0,0,1.609438,7.06732,0,4.564348,6.675624,0,0,0,86.4,9.384057,1.609438,5.364814,1 +14,5,95,1,5,525457,0,11896.19,33.6564,1,12,1,41.16638,25.75986,0,0,0,66.92625,0,0,0,4,0,5,81.9,13.8,0,86.4,753.2,1173,0,0,1.609438,7.06732,0,4.564348,6.675624,0,0,0,86.4,9.384057,1.609438,4.203591,1 +14,5,95,1,1,525458,0,11896.19,33.04586,0,12,1,29.73241,6.243806,35.67889,0,0,71.65511,0,0,0,2,1,4,79.8,3.4,0,78.4,753.2,1173,0,0,1.386294,7.06732,0,4.564348,6.675624,0,0,0,78.4,9.384057,1.386294,4.271864,1 +14,5,95,1,2,525458,0,11896.19,34.04586,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,3.4,0,78.4,753.2,1173,0,0,1.386294,7.06732,0,4.564348,6.675624,0,0,0,78.4,9.384057,1.386294,,0 +14,5,95,1,3,525458,0,11896.19,35.04586,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,3.4,0,78.4,753.2,1173,0,0,1.386294,7.06732,0,4.564348,6.675624,0,0,0,78.4,9.384057,1.386294,,0 +14,5,95,1,4,525458,0,11896.19,36.04586,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,79.8,3.4,0,78.4,753.2,1173,0,0,1.609438,7.06732,0,4.564348,6.675624,0,0,0,78.4,9.384057,1.609438,,0 +14,5,95,1,5,525458,0,11896.19,37.04586,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,79.8,3.4,0,78.4,753.2,1173,0,0,1.609438,7.06732,0,4.564348,6.675624,0,0,0,78.4,9.384057,1.609438,,0 +14,5,95,1,1,525459,0,11896.19,.9965777,0,12,1,57.48265,21.98216,25.77304,0,0,105.2379,0,0,0,5,4,4,77.40034,10.57626,1,100,753.2,1173,1,0,1.386294,7.06732,0,4.564348,6.675624,0,0,0,100,9.384057,1.386294,4.656223,1 +14,5,95,1,2,525459,0,11896.19,1.996578,0,12,1,53.23543,18.80679,13.12529,0,0,85.16751,0,0,0,9,0,4,77.40034,10.57626,1,100,753.2,1173,1,0,1.386294,7.06732,0,4.564348,6.675624,0,0,0,100,9.384057,1.386294,4.44462,1 +14,5,95,1,3,525459,0,11896.19,2.996578,0,12,1,21.03492,13.64325,0,0,0,34.67817,0,0,0,3,0,4,77.40034,10.57626,1,100,753.2,1173,1,0,1.386294,7.06732,0,4.564348,6.675624,0,0,0,100,9.384057,1.386294,3.54611,1 +14,5,95,1,4,525459,0,11896.19,3.996578,0,12,1,39.28976,25.86324,0,0,287.3064,352.4594,1,0,0,4,0,5,77.40034,10.57626,1,100,753.2,1173,1,0,1.609438,7.06732,0,4.564348,6.675624,0,0,0,100,9.384057,1.609438,5.864935,1 +14,5,95,1,5,525459,0,11896.19,4.996578,0,12,1,20.24014,23.63979,0,0,0,43.87993,0,0,0,4,0,5,77.40034,10.57626,1,100,753.2,1173,1,0,1.609438,7.06732,0,4.564348,6.675624,0,0,0,100,9.384057,1.609438,3.781457,1 +10,5,50,1,1,525465,0,10283.87,25.1937,1,12,1,31.71457,25.51536,1.922696,0,1248.34,1307.493,2,0,0,1,0,2,89.9,3.4,0,93.2,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,93.2,9.238429,.6931472,7.175867,1 +10,5,50,1,2,525465,0,10283.87,26.1937,1,12,1,2.753557,17.4805,1.629188,0,1220.285,1242.148,1,0,0,0,0,2,89.9,3.4,0,93.2,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,93.2,9.238429,.6931472,7.124597,1 +10,5,50,1,3,525465,0,10283.87,27.1937,1,12,1,13.04165,15.80143,0,0,0,28.84308,0,0,0,1,0,3,89.9,3.4,0,93.2,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,93.2,9.238429,1.098612,3.36187,1 +10,5,50,1,4,525465,0,10283.87,28.1937,1,12,1,253.8723,10.68002,0,0,0,264.5523,0,0,0,5,0,3,89.9,3.4,0,93.2,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,93.2,9.238429,1.098612,5.578039,1 +10,5,50,1,5,525465,0,10283.87,29.1937,1,12,1,133.7736,11.24185,15.09434,0,0,160.1098,0,0,0,5,0,3,89.9,3.4,0,93.2,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,93.2,9.238429,1.098612,5.07586,1 +11,5,0,1,1,525477,0,7760.881,26.95688,1,13,1,8.463818,8.823529,0,0,0,17.28735,0,0,0,1,0,2,79.8,0,0,79.5,0,149.88,0,0,.6931472,5.009835,0,0,0,1,0,0,79.5,8.95698,.6931472,2.849975,1 +11,5,0,1,2,525477,0,7760.881,27.95688,1,13,1,17.08428,0,0,0,0,17.08428,0,0,0,2,0,2,79.8,0,0,79.5,0,149.88,0,0,.6931472,5.009835,0,0,0,1,0,0,79.5,8.95698,.6931472,2.838159,1 +11,5,0,1,3,525477,0,7760.881,28.95688,1,13,1,0,0,0,0,0,0,0,0,0,0,0,2,79.8,0,0,79.5,0,149.88,0,0,.6931472,5.009835,0,0,0,1,0,0,79.5,8.95698,.6931472,,0 +11,5,0,1,1,525478,0,7760.881,33.72758,0,12,1,0,0,0,84.63817,0,0,0,0,10,0,0,2,71.3,6.9,0,65.9,0,149.88,0,0,.6931472,5.009835,0,0,0,0,0,0,65.9,8.95698,.6931472,,0 +11,5,0,1,2,525478,0,7760.881,34.72758,0,12,1,0,0,0,119.9696,0,0,0,0,23,0,0,2,71.3,6.9,0,65.9,0,149.88,0,0,.6931472,5.009835,0,0,0,0,0,0,65.9,8.95698,.6931472,,0 +11,5,0,1,3,525478,0,7760.881,35.72758,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,71.3,6.9,0,65.9,0,149.88,0,0,.6931472,5.009835,0,0,0,0,0,0,65.9,8.95698,.6931472,,0 +11,5,0,1,1,525481,0,11275.99,11.16496,1,12,1,22.42912,.5755396,0,0,0,23.00466,0,0,0,2,0,5,90,10.57626,0,92.6,0,30,1,1,1.609438,3.401197,0,0,0,0,0,0,92.6,9.33052,1.609438,3.135697,1 +11,5,0,1,2,525481,0,11275.99,12.16496,1,12,1,22.01974,5.159453,0,0,0,27.1792,0,0,0,4,0,5,90,10.57626,0,92.6,0,30,1,1,1.609438,3.401197,0,0,0,0,0,0,92.6,9.33052,1.609438,3.302452,1 +11,5,0,1,3,525481,0,11275.99,13.16496,1,12,1,15.57093,5.577855,0,0,0,21.14879,0,0,0,2,0,5,90,10.57626,0,92.6,0,30,1,1,1.609438,3.401197,0,0,0,0,0,0,92.6,9.33052,1.609438,3.051583,1 +11,5,0,1,1,525482,0,11275.99,35.19233,1,12,1,66.44096,16.40288,0,0,0,82.84384,0,0,0,7,0,5,89.4,17.2,0,45.5,0,30,0,0,1.609438,3.401197,0,0,0,1,0,0,45.5,9.33052,1.609438,4.416957,1 +11,5,0,1,2,525482,0,11275.99,36.19233,1,12,1,25.4366,12.25133,0,0,0,37.68793,0,0,0,3,0,5,89.4,17.2,0,45.5,0,30,0,0,1.609438,3.401197,0,0,0,1,0,0,45.5,9.33052,1.609438,3.62934,1 +11,5,0,1,3,525482,0,11275.99,37.19233,1,12,1,15.57093,2.937716,0,0,0,18.50865,0,0,0,2,1,5,89.4,17.2,0,45.5,0,30,0,0,1.609438,3.401197,0,0,0,1,0,0,45.5,9.33052,1.609438,2.918238,1 +11,5,0,1,1,525483,0,11275.99,7.036276,1,12,1,35.54803,44.15574,0,0,0,79.70377,0,0,0,11,0,5,85,10.57626,0,51.9,0,30,1,1,1.609438,3.401197,0,0,0,1,0,0,51.9,9.33052,1.609438,4.378317,1 +11,5,0,1,2,525483,0,11275.99,8.036277,1,12,1,29.99241,26.32498,0,0,0,56.31739,0,0,0,14,0,5,85,10.57626,0,51.9,0,30,1,1,1.609438,3.401197,0,0,0,1,0,0,51.9,9.33052,1.609438,4.031003,1 +11,5,0,1,3,525483,0,11275.99,9.036277,1,12,1,9.688581,41.19031,0,0,0,50.87889,0,0,0,14,0,5,85,10.57626,0,51.9,0,30,1,1,1.609438,3.401197,0,0,0,1,0,0,51.9,9.33052,1.609438,3.929448,1 +11,5,0,1,1,525484,0,11275.99,36.50924,0,16,1,0,.5755396,0,0,0,.5755396,0,0,0,0,0,5,85.1,13.8,0,68.2,0,30,0,0,1.609438,3.401197,0,0,0,1,0,0,68.2,9.33052,1.609438,-.5524473,1 +11,5,0,1,2,525484,0,11275.99,37.50924,0,16,1,0,6.788155,0,0,0,6.788155,0,0,0,0,0,5,85.1,13.8,0,68.2,0,30,0,0,1.609438,3.401197,0,0,0,1,0,0,68.2,9.33052,1.609438,1.915179,1 +11,5,0,1,3,525484,0,11275.99,38.50924,0,16,1,12.45675,0,0,0,0,12.45675,0,0,0,1,0,5,85.1,13.8,0,68.2,0,30,0,0,1.609438,3.401197,0,0,0,1,0,0,68.2,9.33052,1.609438,2.522262,1 +11,5,0,1,1,525485,0,11275.99,15.68789,1,12,1,12.27254,3.072366,0,0,0,15.3449,0,0,0,2,0,5,43.1,3.4,0,78.4,0,30,1,1,1.609438,3.401197,0,0,0,0,0,0,78.4,9.33052,1.609438,2.730783,1 +11,5,0,1,2,525485,0,11275.99,16.68789,1,12,1,5.694761,1.890661,0,0,0,7.585422,0,0,0,1,0,5,43.1,3.4,0,78.4,0,30,1,1,1.609438,3.401197,0,0,0,0,0,0,78.4,9.33052,1.609438,2.026228,1 +11,5,0,1,3,525485,0,11275.99,17.68789,1,12,1,21.90311,2.404844,0,0,0,24.30796,0,0,0,2,0,5,43.1,3.4,0,78.4,0,30,1,1,1.609438,3.401197,0,0,0,0,0,0,78.4,9.33052,1.609438,3.190804,1 +16,5,95,0,1,525495,0,4410.138,60.14237,1,10,1,211.3838,23.88912,29.04782,0,1003.809,1268.13,2,0,0,13,0,1,86.2,24.1,0,88.6,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,88.6,8.391888,0,7.145298,1 +16,5,95,0,2,525495,0,4410.138,61.14237,1,10,1,435.4594,24.99241,0,0,0,460.4518,0,0,0,3,3,1,86.2,24.1,0,88.6,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,88.6,8.391888,0,6.132208,1 +16,5,95,0,3,525495,0,4410.138,62.14237,1,10,1,112.8028,46.06228,0,0,0,158.8651,0,0,0,9,0,1,86.2,24.1,0,88.6,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,0,0,0,88.6,8.391888,0,5.068055,1 +7,5,25,1,1,525500,0,17662.06,47.89596,0,14,1,48.16996,9.911654,12.95751,0,0,71.03912,0,0,0,4,0,3,66,17.2,0,67,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,67,9.779231,1.098612,4.263231,1 +7,5,25,1,2,525500,0,17662.06,48.89596,0,14,1,46.4677,16.35436,20.81602,0,0,83.63808,0,0,0,4,0,3,66,17.2,0,67,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,67,9.779231,1.098612,4.426499,1 +7,5,25,1,3,525500,0,17662.06,49.89596,0,14,1,96.39794,87.37907,0,0,0,183.777,0,0,0,8,0,3,66,17.2,0,67,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,67,9.779231,1.098612,5.213723,1 +7,5,25,1,1,525501,0,17662.06,47.70431,1,13,1,23.97981,1.750105,0,0,0,25.72991,0,0,0,2,0,3,89.9,27.6,1,69.3,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,69.3,9.779231,1.098612,3.247654,1 +7,5,25,1,2,525501,0,17662.06,48.70431,1,13,1,47.97884,0,42.21761,0,0,90.19645,0,0,0,3,0,3,89.9,27.6,1,69.3,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,69.3,9.779231,1.098612,4.50199,1 +7,5,25,1,3,525501,0,17662.06,49.70431,1,13,1,18.86792,0,58.18182,0,0,77.04974,0,0,0,2,0,3,89.9,27.6,1,69.3,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,69.3,9.779231,1.098612,4.344451,1 +7,5,25,0,1,525503,0,17662.06,20.78029,1,13,1,12.62095,0,33.252,0,0,45.87295,0,0,0,1,0,3,76.1,13.8,0,59.1,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,59.1,9.779231,1.098612,3.825876,1 +7,5,25,0,2,525503,0,17662.06,21.78029,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,76.1,13.8,0,59.1,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,59.1,9.779231,1.098612,,0 +7,5,25,0,3,525503,0,17662.06,22.78029,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,76.1,13.8,0,59.1,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,59.1,9.779231,1.098612,,0 +13,5,0,0,1,525510,0,7991.295,2.841889,1,16,1,111.0166,12.0587,0,0,0,123.0753,0,0,0,5,1,3,77.40034,10.57626,0,96.3,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.986234,1.098612,4.812796,1 +13,5,0,0,2,525510,0,7991.295,3.841889,1,16,1,22.13741,10.5458,0,0,0,32.6832,0,0,0,2,0,4,77.40034,10.57626,0,96.3,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.986234,1.386294,3.486861,1 +13,5,0,0,1,525511,0,7991.295,30.32444,1,16,1,70.39558,48.63462,34.87878,0,742.8583,896.7673,1,0,0,5,1,3,90.4,17.2,0,78.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.986234,1.098612,6.798797,1 +13,5,0,0,2,525511,0,7991.295,31.32444,1,16,1,12.59542,2.19084,0,0,0,14.78626,0,0,0,1,0,4,90.4,17.2,0,78.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.986234,1.386294,2.693698,1 +13,5,0,0,1,525512,0,7991.295,29.44011,0,14,1,104.1684,4.483199,0,0,0,108.6516,0,0,0,2,0,3,73.9,6.9,0,97.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,97.6,8.986234,1.098612,4.688147,1 +13,5,0,0,2,525512,0,7991.295,30.44011,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,73.9,6.9,0,97.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,97.6,8.986234,1.386294,,0 +14,5,95,1,1,525520,0,6674.895,13.06502,0,13,1,22.29701,0,26.6891,0,0,48.98612,0,0,0,1,0,5,68.3,10.57626,0,70.4,508.35,690.76,1,0,1.609438,6.537792,0,4.564348,6.282464,1,0,0,70.4,8.806258,1.609438,3.891537,1 +14,5,95,1,1,525521,0,6674.895,19.34292,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,66,10.3,1,59.1,508.35,690.76,0,0,1.609438,6.537792,0,4.564348,6.282464,1,0,0,59.1,8.806258,1.609438,,0 +14,5,95,1,1,525522,0,6674.895,42.76249,0,8,1,0,21.54396,0,0,0,21.54396,0,0,0,0,0,5,58.5,10.3,1,69.3,508.35,690.76,0,0,1.609438,6.537792,0,4.564348,6.282464,1,0,0,69.3,8.806258,1.609438,3.070096,1 +14,5,95,1,1,525523,0,6674.895,17.51403,1,13,1,0,0,0,0,0,0,0,0,0,0,0,5,59.6,10.3,0,67,508.35,690.76,1,1,1.609438,6.537792,0,4.564348,6.282464,1,0,0,67,8.806258,1.609438,,0 +14,5,95,1,2,525523,0,6674.895,18.51403,1,13,1,0,0,0,0,0,0,0,0,0,0,0,1,59.6,10.3,0,67,508.35,690.76,0,0,0,6.537792,0,4.564348,6.282464,1,0,0,67,8.806258,0,,0 +14,5,95,1,1,525524,0,6674.895,43.14305,1,13,1,0,6.90366,0,0,0,6.90366,0,0,0,0,0,5,43.6,10.3,1,54.5,508.35,690.76,0,0,1.609438,6.537792,0,4.564348,6.282464,1,0,0,54.5,8.806258,1.609438,1.932052,1 +18,5,25,0,1,525529,0,6674.895,39.48802,1,11,1,10.47382,0,0,0,0,10.47382,0,0,0,1,0,3,90.4,10.3,0,96.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,96.6,8.806258,1.098612,2.348878,1 +18,5,25,0,2,525529,0,6674.895,40.48802,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,90.4,10.3,0,96.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,96.6,8.806258,1.098612,,0 +18,5,25,0,3,525529,0,6674.895,41.48802,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,90.4,10.3,0,96.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,96.6,8.806258,1.098612,,0 +18,5,25,0,1,525531,0,6674.895,40.53114,0,10,1,41.39651,0,0,0,0,41.39651,0,0,0,0,2,3,85.1,17.2,0,60.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,60.2,8.806258,1.098612,3.723197,1 +18,5,25,0,2,525531,0,6674.895,41.53114,0,10,1,146.1503,0,0,0,0,146.1503,0,0,0,4,0,3,85.1,17.2,0,60.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,60.2,8.806258,1.098612,4.984635,1 +18,5,25,0,3,525531,0,6674.895,42.53114,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,85.1,17.2,0,60.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,60.2,8.806258,1.098612,,0 +18,5,25,0,1,525532,0,6674.895,16.89528,0,11,1,45.88529,0,0,0,0,45.88529,0,0,0,2,3,3,55.9,3.4,0,61.4,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,61.4,8.806258,1.098612,3.826144,1 +18,5,25,0,2,525532,0,6674.895,17.89528,0,11,1,9.22084,0,0,0,0,9.22084,0,0,0,1,0,3,55.9,3.4,0,61.4,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,61.4,8.806258,1.098612,2.221466,1 +18,5,25,0,3,525532,0,6674.895,18.89528,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,55.9,3.4,0,61.4,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,61.4,8.806258,1.098612,,0 +16,5,95,1,1,525533,1,1451.101,7.63039,0,11,1,8.463818,0,0,0,0,8.463818,0,0,0,1,0,5,98.3,10.57626,0,81.5,510.6,510.6,1,0,1.609438,6.235587,0,4.564348,6.28688,0,0,0,81.5,7.280766,1.609438,2.1358,1 +16,5,95,1,2,525533,1,1451.101,8.63039,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,98.3,10.57626,0,81.5,510.6,510.6,1,0,1.609438,6.235587,0,4.564348,6.28688,0,0,0,81.5,7.280766,1.609438,,0 +16,5,95,1,3,525533,1,1451.101,9.63039,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,98.3,10.57626,0,81.5,510.6,510.6,1,0,1.609438,6.235587,0,4.564348,6.28688,0,0,0,81.5,7.280766,1.609438,,0 +16,5,95,1,1,525534,1,1451.101,9.607119,0,11,1,0,0,0,0,702.0736,702.0736,1,0,0,0,0,5,98.3,10.57626,0,81.5,510.6,510.6,1,0,1.609438,6.235587,0,4.564348,6.28688,0,0,0,81.5,7.280766,1.609438,6.554038,1 +16,5,95,1,2,525534,1,1451.101,10.60712,0,11,1,0,0,0,0,258.1625,258.1625,1,1,0,0,0,5,98.3,10.57626,0,81.5,510.6,510.6,1,0,1.609438,6.235587,0,4.564348,6.28688,0,0,0,81.5,7.280766,1.609438,5.553589,1 +16,5,95,1,3,525534,1,1451.101,11.60712,0,11,1,93.07958,41.19723,0,0,996.8858,1131.163,1,0,0,6,0,5,98.3,10.57626,0,81.5,510.6,510.6,1,0,1.609438,6.235587,0,4.564348,6.28688,0,0,0,81.5,7.280766,1.609438,7.031001,1 +16,5,95,1,1,525535,1,1451.101,18.88022,1,10.96978,1,0,0,0,0,0,0,0,0,0,0,0,5,70.2,0,0,61.4,510.6,510.6,0,0,1.609438,6.235587,0,4.564348,6.28688,0,0,0,61.4,7.280766,1.609438,,0 +16,5,95,1,2,525535,1,1451.101,19.88022,1,10.96978,1,8.352316,0,0,0,0,8.352316,0,0,0,1,0,5,70.2,0,0,61.4,510.6,510.6,0,0,1.609438,6.235587,0,4.564348,6.28688,0,0,0,61.4,7.280766,1.609438,2.122539,1 +16,5,95,1,3,525535,1,1451.101,20.88022,1,10.96978,1,117.9931,11.6955,0,0,0,129.6886,0,0,0,3,0,5,70.2,0,0,61.4,510.6,510.6,0,0,1.609438,6.235587,0,4.564348,6.28688,0,0,0,61.4,7.280766,1.609438,4.865136,1 +16,5,95,1,1,525536,1,1451.101,25.97673,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,81.4,6.9,0,61.4,510.6,510.6,0,0,1.609438,6.235587,0,4.564348,6.28688,1,0,0,61.4,7.280766,1.609438,,0 +16,5,95,1,2,525536,1,1451.101,26.97673,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,81.4,6.9,0,61.4,510.6,510.6,0,0,1.609438,6.235587,0,4.564348,6.28688,1,0,0,61.4,7.280766,1.609438,,0 +16,5,95,1,3,525536,1,1451.101,27.97673,1,11,1,15.57093,2.595156,0,0,0,18.16609,0,0,0,1,0,5,81.4,6.9,0,61.4,510.6,510.6,0,0,1.609438,6.235587,0,4.564348,6.28688,1,0,0,61.4,7.280766,1.609438,2.899557,1 +16,5,95,1,1,525537,1,1451.101,9.607119,0,11,1,9.627592,0,0,0,0,9.627592,0,0,0,0,0,5,98.3,10.57626,0,81.5,510.6,510.6,1,0,1.609438,6.235587,0,4.564348,6.28688,0,0,0,81.5,7.280766,1.609438,2.264633,1 +16,5,95,1,2,525537,1,1451.101,10.60712,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,98.3,10.57626,0,81.5,510.6,510.6,1,0,1.609438,6.235587,0,4.564348,6.28688,0,0,0,81.5,7.280766,1.609438,,0 +16,5,95,1,3,525537,1,1451.101,11.60712,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,98.3,10.57626,0,81.5,510.6,510.6,1,0,1.609438,6.235587,0,4.564348,6.28688,0,0,0,81.5,7.280766,1.609438,,0 +15,5,95,1,1,525540,0,10324.34,47.21971,0,12,1,99.75063,0,0,0,0,99.75063,0,0,0,1,0,4,71.8,3.4,0,69.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,69.3,9.242356,1.386294,4.602674,1 +15,5,95,1,2,525540,0,10324.34,48.21971,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,71.8,3.4,0,69.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,69.3,9.242356,1.386294,,0 +15,5,95,1,3,525540,0,10324.34,49.21971,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,71.8,3.4,0,69.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,69.3,9.242356,1.386294,,0 +15,5,95,1,4,525540,0,10324.34,50.21971,0,12,1,10.44039,3.416857,0,0,0,13.85725,0,0,0,0,0,3,71.8,3.4,0,69.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,69.3,9.242356,1.098612,2.628809,1 +15,5,95,1,5,525540,0,10324.34,51.21971,0,12,1,10.38062,0,41.86851,0,0,52.24913,0,0,0,0,1,3,71.8,3.4,0,69.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,69.3,9.242356,1.098612,3.956023,1 +15,5,95,1,1,525541,0,10324.34,18.39836,0,10.96978,1,14.96259,3.990025,0,0,0,18.95262,0,0,0,1,0,4,84.6,0,0,92,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,92,9.242356,1.386294,2.941942,1 +15,5,95,1,2,525541,0,10324.34,19.39836,0,10.96978,1,0,0,0,0,0,0,0,0,0,0,0,4,84.6,0,0,92,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,92,9.242356,1.386294,,0 +15,5,95,1,3,525541,0,10324.34,20.39836,0,10.96978,1,0,0,0,0,0,0,0,0,0,0,0,4,84.6,0,0,92,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,92,9.242356,1.386294,,0 +15,5,95,1,1,525542,0,10324.34,14.17933,0,12,1,7.481297,4.413965,0,0,0,11.89526,0,0,0,1,0,4,84,3.4,0,84.1,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.242356,1.386294,2.47614,1 +15,5,95,1,2,525542,0,10324.34,15.17933,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,84,3.4,0,84.1,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.242356,1.386294,,0 +15,5,95,1,3,525542,0,10324.34,16.17933,0,12,1,17.35082,0,0,0,0,17.35082,0,0,0,2,0,4,84,3.4,0,84.1,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.242356,1.386294,2.85364,1 +15,5,95,1,4,525542,0,10324.34,17.17933,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,84,3.4,0,84.1,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.242356,1.098612,,0 +15,5,95,1,5,525542,0,10324.34,18.17933,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,84,3.4,0,84.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,84.1,9.242356,1.098612,,0 +15,5,95,1,1,525543,0,10324.34,39.64956,1,12,1,88.77805,86.34913,36.40898,0,0,211.5362,0,0,0,6,1,4,48.4,20.7,1,51.1,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,51.1,9.242356,1.386294,5.354396,1 +15,5,95,1,2,525543,0,10324.34,40.64956,1,12,1,21.43845,67.89765,0,0,0,89.3361,0,0,0,2,0,4,48.4,20.7,1,51.1,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,51.1,9.242356,1.386294,4.492405,1 +15,5,95,1,3,525543,0,10324.34,41.64956,1,12,1,8.040627,58.60347,0,0,0,66.6441,0,0,0,1,0,4,48.4,20.7,1,51.1,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,51.1,9.242356,1.386294,4.199367,1 +15,5,95,1,4,525543,0,10324.34,42.64956,1,12,1,103.4548,65.12149,0,0,585.4214,753.9977,1,0,0,7,0,3,48.4,20.7,1,51.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,51.1,9.242356,1.098612,6.62539,1 +15,5,95,1,5,525543,0,10324.34,43.64956,1,12,1,182.699,77.71626,0,0,0,260.4152,0,0,0,15,0,3,48.4,20.7,1,51.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,51.1,9.242356,1.098612,5.562277,1 +15,5,95,1,1,525544,1,1874.04,59.6961,1,5,1,14.45197,0,0,0,0,14.45197,0,0,0,2,0,2,67,13.8,1,51.1,288,0,0,0,.6931472,0,0,4.564348,5.714254,1,0,0,51.1,7.536385,.6931472,2.670831,1 +15,5,95,1,2,525544,1,1874.04,60.6961,1,5,1,6.833713,0,0,0,0,6.833713,0,0,0,1,0,2,67,13.8,1,51.1,288,0,0,0,.6931472,0,0,4.564348,5.714254,1,0,0,51.1,7.536385,.6931472,1.921868,1 +15,5,95,1,3,525544,1,1874.04,61.6961,1,5,1,50.17301,0,0,0,0,50.17301,0,0,0,4,0,2,67,13.8,1,51.1,288,0,0,0,.6931472,0,0,4.564348,5.714254,1,0,0,51.1,7.536385,.6931472,3.915477,1 +14,5,95,1,1,525553,1,3421.403,27.36756,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,26.1,6.9,1,34.1,142.55,142.55,0,0,1.098612,4.959693,0,4.564348,5.010986,1,0,0,34.1,8.138098,1.098612,,0 +14,5,95,1,2,525553,1,3421.403,28.36756,1,12,1,0,4.652672,0,0,0,4.652672,0,0,0,0,0,3,26.1,6.9,1,34.1,142.55,142.55,0,0,1.098612,4.959693,0,4.564348,5.010986,1,0,0,34.1,8.138098,1.098612,1.537442,1 +14,5,95,1,3,525553,1,3421.403,29.36756,1,12,1,0,0,0,0,453.6585,453.6585,1,0,0,0,0,3,26.1,6.9,1,34.1,142.55,142.55,0,0,1.098612,4.959693,0,4.564348,5.010986,1,0,0,34.1,8.138098,1.098612,6.117345,1 +14,5,95,1,1,525554,1,3421.403,26.67488,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,63.8,13.8,1,52.3,142.55,142.55,0,0,1.098612,4.959693,0,4.564348,5.010986,0,0,0,52.3,8.138098,1.098612,,0 +14,5,95,1,2,525554,1,3421.403,27.67488,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,63.8,13.8,1,52.3,142.55,142.55,0,0,1.098612,4.959693,0,4.564348,5.010986,0,0,0,52.3,8.138098,1.098612,,0 +14,5,95,1,3,525554,1,3421.403,28.67488,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,63.8,13.8,1,52.3,142.55,142.55,0,0,1.098612,4.959693,0,4.564348,5.010986,0,0,0,52.3,8.138098,1.098612,,0 +11,5,0,1,1,525555,1,769.5853,33.47844,1,12,1,8.081667,0,0,0,0,8.081667,0,0,0,0,0,6,63.3,10.3,0,83,0,0,0,0,1.791759,0,0,0,0,0,0,0,83,6.647151,1.791759,2.089598,1 +11,5,0,1,2,525555,1,769.5853,34.47844,1,12,1,15.64886,.9770992,0,0,0,16.62595,0,0,0,2,0,6,63.3,10.3,0,83,0,0,0,0,1.791759,0,0,0,0,0,0,0,83,6.647151,1.791759,2.810965,1 +11,5,0,1,3,525555,1,769.5853,35.47844,1,12,1,54.3554,10.79094,0,0,0,65.14634,0,0,0,4,0,6,63.3,10.3,0,83,0,0,0,0,1.791759,0,0,0,0,0,0,0,83,6.647151,1.791759,4.176636,1 +11,5,0,1,1,525556,1,769.5853,12.44353,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,75,10.57626,0,77.8,0,0,1,0,1.791759,0,0,0,0,0,0,0,77.8,6.647151,1.791759,,0 +11,5,0,1,2,525556,1,769.5853,13.44353,0,12,1,3.816794,0,0,0,0,3.816794,0,0,0,1,0,6,75,10.57626,0,77.8,0,0,1,0,1.791759,0,0,0,0,0,0,0,77.8,6.647151,1.791759,1.339411,1 +11,5,0,1,3,525556,1,769.5853,14.44353,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,75,10.57626,0,77.8,0,0,1,0,1.791759,0,0,0,0,0,0,0,77.8,6.647151,1.791759,,0 +11,5,0,1,1,525557,1,769.5853,9.215606,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,76.7,10.57626,0,81.5,0,0,1,0,1.791759,0,0,0,0,1,0,0,81.5,6.647151,1.791759,,0 +11,5,0,1,2,525557,1,769.5853,10.21561,0,12,1,6.870229,0,0,0,0,6.870229,0,0,0,1,0,6,76.7,10.57626,0,81.5,0,0,1,0,1.791759,0,0,0,0,1,0,0,81.5,6.647151,1.791759,1.927197,1 +11,5,0,1,3,525557,1,769.5853,11.21561,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,76.7,10.57626,0,81.5,0,0,1,0,1.791759,0,0,0,0,1,0,0,81.5,6.647151,1.791759,,0 +11,5,0,1,1,525558,1,769.5853,7.726215,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,73.3,10.57626,0,55.6,0,0,1,0,1.791759,0,0,0,0,0,1,0,55.6,6.647151,1.791759,,0 +11,5,0,1,2,525558,1,769.5853,8.726215,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,73.3,10.57626,0,55.6,0,0,1,0,1.791759,0,0,0,0,0,1,0,55.6,6.647151,1.791759,,0 +11,5,0,1,3,525558,1,769.5853,9.726215,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,73.3,10.57626,0,55.6,0,0,1,0,1.791759,0,0,0,0,0,1,0,55.6,6.647151,1.791759,,0 +11,5,0,0,1,525586,0,4301.075,8.147844,0,8,1,7.993269,0,0,0,0,7.993269,0,0,0,0,0,4,85,10.57626,.1442925,74.1,0,147.36,1,0,1.386294,4.992878,0,0,0,0,0,0,74.1,8.366853,1.386294,2.0786,1 +11,5,0,0,2,525586,0,4301.075,9.147844,0,8,1,11.33358,0,0,0,0,11.33358,0,0,0,0,1,4,85,10.57626,.1442925,74.1,0,147.36,1,0,1.386294,4.992878,0,0,0,0,0,0,74.1,8.366853,1.386294,2.42777,1 +11,5,0,0,3,525586,0,4301.075,10.14784,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,.1442925,74.1,0,147.36,1,0,1.386294,4.992878,0,0,0,0,0,0,74.1,8.366853,1.386294,,0 +11,5,0,0,1,525587,0,4301.075,40.20534,0,13,1,0,8.93984,0,0,0,8.93984,0,0,0,0,0,4,64.9,6.9,1,60.2,0,147.36,0,0,1.386294,4.992878,0,0,0,1,0,0,60.2,8.366853,1.386294,2.190518,1 +11,5,0,0,2,525587,0,4301.075,41.20534,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,64.9,6.9,1,60.2,0,147.36,0,0,1.386294,4.992878,0,0,0,1,0,0,60.2,8.366853,1.386294,,0 +11,5,0,0,3,525587,0,4301.075,42.20534,0,13,1,0,6.768439,0,0,0,6.768439,0,0,0,0,0,4,64.9,6.9,1,60.2,0,147.36,0,0,1.386294,4.992878,0,0,0,1,0,0,60.2,8.366853,1.386294,1.912271,1 +11,5,0,0,1,525588,0,4301.075,6.836413,1,8,1,7.993269,0,0,0,0,7.993269,0,0,0,0,0,4,91.7,10.57626,.1442925,81.5,0,147.36,1,1,1.386294,4.992878,0,0,0,0,0,0,81.5,8.366853,1.386294,2.0786,1 +11,5,0,0,2,525588,0,4301.075,7.836413,1,8,1,45.82546,0,0,0,0,45.82546,0,0,0,4,1,4,91.7,10.57626,.1442925,81.5,0,147.36,1,1,1.386294,4.992878,0,0,0,0,0,0,81.5,8.366853,1.386294,3.82484,1 +11,5,0,0,3,525588,0,4301.075,8.836413,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,91.7,10.57626,.1442925,81.5,0,147.36,1,1,1.386294,4.992878,0,0,0,0,0,0,81.5,8.366853,1.386294,,0 +11,5,0,0,1,525589,0,4301.075,25.8809,1,8,1,68.06899,2.776609,0,0,0,70.8456,0,0,0,0,0,4,78.7,13.8,0,63.1,0,147.36,0,0,1.386294,4.992878,0,0,0,1,0,0,63.1,8.366853,1.386294,4.260503,1 +11,5,0,0,2,525589,0,4301.075,26.8809,1,8,1,11.33358,0,0,0,0,11.33358,0,0,0,0,1,4,78.7,13.8,0,63.1,0,147.36,0,0,1.386294,4.992878,0,0,0,1,0,0,63.1,8.366853,1.386294,2.42777,1 +11,5,0,0,3,525589,0,4301.075,27.8809,1,8,1,42.88165,9.73928,0,0,0,52.62093,0,0,0,0,0,4,78.7,13.8,0,63.1,0,147.36,0,0,1.386294,4.992878,0,0,0,1,0,0,63.1,8.366853,1.386294,3.963114,1 +16,5,95,0,1,525593,1,6674.895,36.65435,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,63.3,10.3,0,76.1,176.4,176.4,0,0,1.098612,5.172754,0,4.564348,5.224048,1,0,0,76.1,8.806258,1.098612,,0 +16,5,95,0,2,525593,1,6674.895,37.65435,1,9,1,11.62791,0,0,0,0,11.62791,0,0,0,0,0,3,63.3,10.3,0,76.1,176.4,176.4,0,0,1.098612,5.172754,0,4.564348,5.224048,1,0,0,76.1,8.806258,1.098612,2.453408,1 +16,5,95,0,3,525593,1,6674.895,38.65435,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,63.3,10.3,0,76.1,176.4,176.4,0,0,1.098612,5.172754,0,4.564348,5.224048,1,0,0,76.1,8.806258,1.098612,,0 +16,5,95,0,1,525595,1,6674.895,14.87748,0,9,1,7.919967,0,0,0,0,7.919967,0,0,0,0,0,3,77.40034,10.57626,.1442925,,176.4,176.4,1,0,1.098612,5.172754,0,4.564348,5.224048,1,0,0,70.68995,8.806258,1.098612,2.069387,1 +16,5,95,0,2,525595,1,6674.895,15.87748,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,176.4,176.4,1,0,1.098612,5.172754,0,4.564348,5.224048,1,0,0,70.68995,8.806258,1.098612,,0 +16,5,95,0,3,525595,1,6674.895,16.87748,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,176.4,176.4,1,0,1.098612,5.172754,0,4.564348,5.224048,1,0,0,70.68995,8.806258,1.098612,,0 +16,5,95,0,1,525596,1,6674.895,6.913073,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,10.57626,.1442925,85.2,176.4,176.4,1,0,1.098612,5.172754,0,4.564348,5.224048,0,0,0,85.2,8.806258,1.098612,,0 +16,5,95,0,2,525596,1,6674.895,7.913073,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,10.57626,.1442925,85.2,176.4,176.4,1,0,1.098612,5.172754,0,4.564348,5.224048,0,0,0,85.2,8.806258,1.098612,,0 +16,5,95,0,3,525596,1,6674.895,8.913074,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,10.57626,.1442925,85.2,176.4,176.4,1,0,1.098612,5.172754,0,4.564348,5.224048,0,0,0,85.2,8.806258,1.098612,,0 +11,5,0,1,1,525617,1,1426.523,12.2026,0,7,1,10.57977,0,23.69869,0,0,34.27846,0,0,0,0,1,7,90,10.57626,0,96.3,0,0,1,0,1.94591,0,0,0,0,1,0,0,96.3,7.263696,1.94591,3.534517,1 +11,5,0,1,2,525617,1,1426.523,13.2026,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,90,10.57626,0,96.3,0,0,1,0,1.94591,0,0,0,0,1,0,0,96.3,7.263696,1.94591,,0 +11,5,0,1,3,525617,1,1426.523,14.2026,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,90,10.57626,0,96.3,0,0,1,0,1.94591,0,0,0,0,1,0,0,96.3,7.263696,1.94591,,0 +11,5,0,1,1,525618,1,1426.523,11.28542,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,95,10.57626,0,96.3,0,0,1,0,1.94591,0,0,0,0,0,0,0,96.3,7.263696,1.94591,,0 +11,5,0,1,2,525618,1,1426.523,12.28542,0,7,1,13.09795,0,0,0,0,13.09795,0,0,0,0,0,7,95,10.57626,0,96.3,0,0,1,0,1.94591,0,0,0,0,0,0,0,96.3,7.263696,1.94591,2.572456,1 +11,5,0,1,3,525618,1,1426.523,13.28542,0,7,1,62.28374,3.442907,23.87543,0,267.8201,357.4221,1,1,0,3,1,7,95,10.57626,0,96.3,0,0,1,0,1.94591,0,0,0,0,0,0,0,96.3,7.263696,1.94591,5.878918,1 +11,5,0,1,1,525619,1,1426.523,20.0794,1,10,1,28.24799,1.815489,23.69869,0,0,53.76217,0,0,0,0,1,7,51.6,6.9,0,71.6,0,0,0,0,1.94591,0,0,0,0,0,0,0,71.6,7.263696,1.94591,3.98457,1 +11,5,0,1,2,525619,1,1426.523,21.0794,1,10,1,7.213364,43.92559,0,0,2274.108,2325.247,1,0,0,0,0,7,51.6,6.9,0,71.6,0,0,0,0,1.94591,0,0,0,0,0,0,0,71.6,7.263696,1.94591,7.751582,1 +11,5,0,1,3,525619,1,1426.523,22.0794,1,10,1,20.41522,10.34602,21.79931,0,0,52.56055,0,0,0,1,1,7,51.6,6.9,0,71.6,0,0,0,0,1.94591,0,0,0,0,0,0,0,71.6,7.263696,1.94591,3.961966,1 +11,5,0,1,1,525620,1,1426.523,35.14305,1,7,1,10.57977,0,23.69869,0,0,34.27846,0,0,0,0,1,7,85.1,6.9,0,81.8,0,0,0,0,1.94591,0,0,0,0,1,0,0,81.8,7.263696,1.94591,3.534517,1 +11,5,0,1,2,525620,1,1426.523,36.14305,1,7,1,0,0,0,0,0,0,0,0,0,0,0,7,85.1,6.9,0,81.8,0,0,0,0,1.94591,0,0,0,0,1,0,0,81.8,7.263696,1.94591,,0 +11,5,0,1,3,525620,1,1426.523,37.14305,1,7,1,8.650519,0,22.14533,0,0,30.79585,0,0,0,0,1,7,85.1,6.9,0,81.8,0,0,0,0,1.94591,0,0,0,0,1,0,0,81.8,7.263696,1.94591,3.42738,1 +11,5,0,1,1,525621,1,1426.523,14.09719,1,7,1,10.57977,0,23.69869,0,0,34.27846,0,0,0,0,1,7,100,10.57626,0,96.3,0,0,1,1,1.94591,0,0,0,0,1,0,0,96.3,7.263696,1.94591,3.534517,1 +11,5,0,1,2,525621,1,1426.523,15.09719,1,7,1,0,0,0,0,0,0,0,0,0,0,0,7,100,10.57626,0,96.3,0,0,1,1,1.94591,0,0,0,0,1,0,0,96.3,7.263696,1.94591,,0 +11,5,0,1,3,525621,1,1426.523,16.09719,1,7,1,14.87889,8.079585,20.41522,0,0,43.3737,0,0,0,1,1,7,100,10.57626,0,96.3,0,0,1,1,1.94591,0,0,0,0,1,0,0,96.3,7.263696,1.94591,3.769853,1 +11,5,0,1,1,525622,1,1426.523,15.154,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,97.3,0,0,96.6,0,0,1,0,1.94591,0,0,0,0,1,0,0,96.6,7.263696,1.94591,,0 +11,5,0,1,2,525622,1,1426.523,16.15401,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,97.3,0,0,96.6,0,0,1,0,1.94591,0,0,0,0,1,0,0,96.6,7.263696,1.94591,,0 +11,5,0,1,1,525624,1,1426.523,14.09719,1,7,1,0,0,0,0,0,0,0,0,0,0,0,7,85,10.57626,0,96.3,0,0,1,1,1.94591,0,0,0,0,1,0,0,96.3,7.263696,1.94591,,0 +11,5,0,1,2,525624,1,1426.523,15.09719,1,7,1,0,0,0,0,0,0,0,0,0,0,0,7,85,10.57626,0,96.3,0,0,1,1,1.94591,0,0,0,0,1,0,0,96.3,7.263696,1.94591,,0 +11,5,0,1,3,525624,1,1426.523,16.09719,1,7,1,0,0,0,0,0,0,0,0,0,0,0,7,85,10.57626,0,96.3,0,0,1,1,1.94591,0,0,0,0,1,0,0,96.3,7.263696,1.94591,,0 +11,5,0,1,1,525628,0,8880.185,34.78166,0,12,1,150.6559,39.1113,1.481168,0,0,191.2484,0,0,0,12,0,5,89.4,3.4,0,75,0,646.36,0,0,1.609438,6.471356,0,0,0,0,0,0,75,9.09169,1.609438,5.253573,1 +11,5,0,1,2,525628,0,8880.185,35.78166,0,12,1,157.5551,22.35004,0,0,0,179.9051,0,0,0,10,0,5,89.4,3.4,0,75,0,646.36,0,0,1.609438,6.471356,0,0,0,0,0,0,75,9.09169,1.609438,5.19243,1 +11,5,0,1,3,525628,0,8880.185,36.78166,0,12,1,87.88927,30.34256,0,0,0,118.2318,0,0,0,10,0,5,89.4,3.4,0,75,0,646.36,0,0,1.609438,6.471356,0,0,0,0,0,0,75,9.09169,1.609438,4.772647,1 +11,5,0,1,1,525629,0,8880.185,31.92882,1,12,1,79.55988,48.15912,0,0,872.6196,1000.339,1,0,0,8,0,5,75.5,10.3,1,73.7,0,646.36,0,0,1.609438,6.471356,0,0,0,0,0,0,73.7,9.09169,1.609438,6.908094,1 +11,5,0,1,2,525629,0,8880.185,32.92882,1,12,1,17.46393,17.73348,0,0,1247.912,1283.109,2,1,0,2,0,5,75.5,10.3,1,73.7,0,646.36,0,0,1.609438,6.471356,0,0,0,0,0,0,73.7,9.09169,1.609438,7.157042,1 +11,5,0,1,3,525629,0,8880.185,33.92882,1,12,1,134.6021,21.53287,0,0,0,156.1349,0,0,0,7,0,5,75.5,10.3,1,73.7,0,646.36,0,0,1.609438,6.471356,0,0,0,0,0,0,73.7,9.09169,1.609438,5.050721,1 +11,5,0,1,1,525630,0,8880.185,10.05339,1,12,1,0,2.06094,0,0,0,2.06094,0,0,0,0,0,5,93.3,10.57626,0,92.6,0,646.36,1,1,1.609438,6.471356,0,0,0,0,0,0,92.6,9.09169,1.609438,.723162,1 +11,5,0,1,2,525630,0,8880.185,11.05339,1,12,1,5.694761,6.545178,0,0,0,12.23994,0,0,0,1,0,5,93.3,10.57626,0,92.6,0,646.36,1,1,1.609438,6.471356,0,0,0,0,0,0,92.6,9.09169,1.609438,2.504704,1 +11,5,0,1,3,525630,0,8880.185,12.05339,1,12,1,32.17993,1.346021,0,0,0,33.52595,0,0,0,1,0,5,93.3,10.57626,0,92.6,0,646.36,1,1,1.609438,6.471356,0,0,0,0,0,0,92.6,9.09169,1.609438,3.51232,1 +11,5,0,1,1,525631,0,8880.185,5.377139,0,12,1,19.46678,16.35209,0,0,0,35.81887,0,0,0,4,0,5,83.3,10.57626,0,51.9,0,646.36,1,0,1.609438,6.471356,0,0,0,0,0,0,51.9,9.09169,1.609438,3.578475,1 +11,5,0,1,2,525631,0,8880.185,6.377139,0,12,1,11.38952,18.95976,0,0,0,30.34928,0,0,0,2,0,5,83.3,10.57626,0,51.9,0,646.36,1,0,1.609438,6.471356,0,0,0,0,0,0,51.9,9.09169,1.609438,3.412773,1 +11,5,0,1,3,525631,0,8880.185,7.377139,0,12,1,25.95156,21.89619,0,0,0,47.84775,0,0,0,5,0,5,83.3,10.57626,0,51.9,0,646.36,1,0,1.609438,6.471356,0,0,0,0,0,0,51.9,9.09169,1.609438,3.868024,1 +11,5,0,1,1,525632,0,8880.185,2.882957,0,12,1,60.51629,10.44012,0,0,0,70.95641,0,0,0,8,0,5,77.40034,10.57626,0,59.3,0,646.36,1,0,1.609438,6.471356,0,0,0,0,0,0,59.3,9.09169,1.609438,4.262066,1 +11,5,0,1,2,525632,0,8880.185,3.882957,0,12,1,57.70691,3.02202,0,0,0,60.72893,0,0,0,3,0,5,77.40034,10.57626,0,59.3,0,646.36,1,0,1.609438,6.471356,0,0,0,0,0,0,59.3,9.09169,1.609438,4.10642,1 +11,5,0,1,3,525632,0,8880.185,4.882957,0,12,1,23.18339,2.885813,0,0,537.7162,563.7855,1,0,0,2,0,5,77.40034,10.57626,0,59.3,0,646.36,1,0,1.609438,6.471356,0,0,0,0,0,0,59.3,9.09169,1.609438,6.334674,1 +5,5,25,0,1,525656,1,0,39.29911,0,5,1,0,0,0,0,0,0,0,0,0,0,0,8,62.2,0,0,76.1,333.75,333.75,0,0,2.079442,5.810392,0,3.258096,7.196687,0,0,0,76.1,0,2.079442,,0 +5,5,25,0,2,525656,1,0,40.29911,0,5,1,0,0,0,0,0,0,0,0,0,0,0,9,62.2,0,0,76.1,333.75,333.75,0,0,2.197225,5.810392,0,3.258096,7.196687,0,0,0,76.1,0,2.197225,,0 +5,5,25,0,3,525656,1,0,41.29911,0,5,1,0,0,0,0,0,0,0,0,0,0,0,9,62.2,0,0,76.1,333.75,333.75,0,0,2.197225,5.810392,0,3.258096,7.196687,0,0,0,76.1,0,2.197225,,0 +5,5,25,0,4,525656,1,0,42.29911,0,5,1,0,0,0,0,0,0,0,0,0,0,0,9,62.2,0,0,76.1,333.75,333.75,0,0,2.197225,5.810392,0,3.258096,7.196687,0,0,0,76.1,0,2.197225,,0 +5,5,25,0,5,525656,1,0,43.29911,0,5,1,10.14885,0,0,0,0,10.14885,0,0,0,0,0,9,62.2,0,0,76.1,333.75,333.75,0,0,2.197225,5.810392,0,3.258096,7.196687,0,0,0,76.1,0,2.197225,2.31736,1 +5,5,25,1,1,525657,1,0,10.00958,1,6,1,0,0,0,0,0,0,0,0,0,0,0,8,83.3,10.57626,0,63,333.75,333.75,1,1,2.079442,5.810392,0,3.258096,7.196687,0,1,0,63,0,2.079442,,0 +5,5,25,1,2,525657,1,0,11.00958,1,6,1,0,0,0,0,0,0,0,0,0,0,0,9,83.3,10.57626,0,63,333.75,333.75,1,1,2.197225,5.810392,0,3.258096,7.196687,0,1,0,63,0,2.197225,,0 +5,5,25,1,3,525657,1,0,12.00958,1,6,1,0,0,0,0,0,0,0,0,0,0,0,9,83.3,10.57626,0,63,333.75,333.75,1,1,2.197225,5.810392,0,3.258096,7.196687,0,1,0,63,0,2.197225,,0 +5,5,25,1,4,525657,1,0,13.00958,1,6,1,0,0,0,0,0,0,0,0,0,0,0,9,83.3,10.57626,0,63,333.75,333.75,1,1,2.197225,5.810392,0,3.258096,7.196687,0,1,0,63,0,2.197225,,0 +5,5,25,1,5,525657,1,0,14.00958,1,6,1,0,0,0,0,0,0,0,0,0,0,0,9,83.3,10.57626,0,63,333.75,333.75,1,1,2.197225,5.810392,0,3.258096,7.196687,0,1,0,63,0,2.197225,,0 +5,5,25,1,1,525658,1,0,44.6872,1,6,1,8.599508,0,0,0,0,8.599508,0,0,0,0,0,8,63.3,6.9,0,50,333.75,333.75,0,0,2.079442,5.810392,0,3.258096,7.196687,0,1,0,50,0,2.079442,2.151705,1 +5,5,25,1,2,525658,1,0,45.6872,1,6,1,0,0,0,0,0,0,0,0,0,0,0,9,63.3,6.9,0,50,333.75,333.75,0,0,2.197225,5.810392,0,3.258096,7.196687,0,1,0,50,0,2.197225,,0 +5,5,25,1,3,525658,1,0,46.6872,1,6,1,17.5073,0,0,0,0,17.5073,0,0,0,0,0,9,63.3,6.9,0,50,333.75,333.75,0,0,2.197225,5.810392,0,3.258096,7.196687,0,1,0,50,0,2.197225,2.862618,1 +5,5,25,1,4,525658,1,0,47.6872,1,6,1,0,0,0,0,0,0,0,0,0,0,0,9,63.3,6.9,0,50,333.75,333.75,0,0,2.197225,5.810392,0,3.258096,7.196687,0,1,0,50,0,2.197225,,0 +5,5,25,1,5,525658,1,0,48.6872,1,6,1,44.99323,3.697564,35.53112,0,0,84.22192,0,0,0,0,2,9,63.3,6.9,0,50,333.75,333.75,0,0,2.197225,5.810392,0,3.258096,7.196687,0,1,0,50,0,2.197225,4.433455,1 +5,5,25,1,1,525659,1,0,13.4757,0,6,1,8.599508,0,0,0,0,8.599508,0,0,0,0,0,8,98.3,10.57626,0,59.3,333.75,333.75,1,0,2.079442,5.810392,0,3.258096,7.196687,1,0,0,59.3,0,2.079442,2.151705,1 +5,5,25,1,2,525659,1,0,14.4757,0,6,1,0,0,0,0,0,0,0,0,0,0,0,9,98.3,10.57626,0,59.3,333.75,333.75,1,0,2.197225,5.810392,0,3.258096,7.196687,1,0,0,59.3,0,2.197225,,0 +5,5,25,1,3,525659,1,0,15.4757,0,6,1,0,0,0,0,0,0,0,0,0,0,0,9,98.3,10.57626,0,59.3,333.75,333.75,1,0,2.197225,5.810392,0,3.258096,7.196687,1,0,0,59.3,0,2.197225,,0 +5,5,25,1,4,525659,1,0,16.4757,0,6,1,316.2978,0,0,0,0,316.2978,0,0,0,2,0,9,98.3,10.57626,0,59.3,333.75,333.75,1,0,2.197225,5.810392,0,3.258096,7.196687,1,0,0,59.3,0,2.197225,5.756684,1 +5,5,25,1,5,525659,1,0,17.4757,0,6,1,0,0,0,0,0,0,0,0,0,0,0,9,98.3,10.57626,0,59.3,333.75,333.75,1,0,2.197225,5.810392,0,3.258096,7.196687,1,0,0,59.3,0,2.197225,,0 +5,5,25,1,1,525660,1,0,11.77002,0,6,1,0,0,0,0,0,0,0,0,0,0,0,8,80,10.57626,0,77.8,333.75,333.75,1,0,2.079442,5.810392,0,3.258096,7.196687,1,0,0,77.8,0,2.079442,,0 +5,5,25,1,2,525660,1,0,12.77002,0,6,1,0,0,0,0,0,0,0,0,0,0,0,9,80,10.57626,0,77.8,333.75,333.75,1,0,2.197225,5.810392,0,3.258096,7.196687,1,0,0,77.8,0,2.197225,,0 +5,5,25,1,3,525660,1,0,13.77002,0,6,1,0,0,0,0,0,0,0,0,0,0,0,9,80,10.57626,0,77.8,333.75,333.75,1,0,2.197225,5.810392,0,3.258096,7.196687,1,0,0,77.8,0,2.197225,,0 +5,5,25,1,4,525660,1,0,14.77002,0,6,1,0,0,0,0,0,0,0,0,0,0,0,9,80,10.57626,0,77.8,333.75,333.75,1,0,2.197225,5.810392,0,3.258096,7.196687,1,0,0,77.8,0,2.197225,,0 +5,5,25,1,5,525660,1,0,15.77002,0,6,1,10.14885,2.405277,0,0,0,12.55413,0,0,0,0,0,9,80,10.57626,0,77.8,333.75,333.75,1,0,2.197225,5.810392,0,3.258096,7.196687,1,0,0,77.8,0,2.197225,2.530049,1 +5,5,25,1,1,525661,1,0,16.75565,1,6,1,0,0,0,0,0,0,1,1,0,0,0,8,54.8,3.4,0,54.5,333.75,333.75,1,1,2.079442,5.810392,0,3.258096,7.196687,0,1,0,54.5,0,2.079442,,0 +5,5,25,1,2,525661,1,0,17.75565,1,6,1,0,1.244303,0,0,0,1.244303,0,0,0,0,0,9,54.8,3.4,0,54.5,333.75,333.75,1,1,2.197225,5.810392,0,3.258096,7.196687,0,1,0,54.5,0,2.197225,.2185752,1 +5,5,25,1,3,525661,1,0,18.75565,1,6,1,0,0,0,0,0,0,0,0,0,0,0,9,54.8,3.4,0,54.5,333.75,333.75,0,0,2.197225,5.810392,0,3.258096,7.196687,0,1,0,54.5,0,2.197225,,0 +5,5,25,1,4,525661,1,0,19.75565,1,6,1,0,0,0,0,0,0,0,0,0,0,0,9,54.8,3.4,0,54.5,333.75,333.75,0,0,2.197225,5.810392,0,3.258096,7.196687,0,1,0,54.5,0,2.197225,,0 +5,5,25,1,5,525661,1,0,20.75565,1,6,1,27.74019,1.589986,0,0,0,29.33018,0,0,0,1,0,9,54.8,3.4,0,54.5,333.75,333.75,0,0,2.197225,5.810392,0,3.258096,7.196687,0,1,0,54.5,0,2.197225,3.378617,1 +5,5,25,0,1,525662,1,0,15.77002,0,6,1,0,0,0,0,0,0,0,0,0,0,0,8,58.5,0,0,76.1,333.75,333.75,1,0,2.079442,5.810392,0,3.258096,7.196687,0,1,0,76.1,0,2.079442,,0 +5,5,25,0,2,525662,1,0,16.77002,0,6,1,6.836828,0,0,0,0,6.836828,0,0,0,1,0,9,58.5,0,0,76.1,333.75,333.75,1,0,2.197225,5.810392,0,3.258096,7.196687,0,1,0,76.1,0,2.197225,1.922324,1 +5,5,25,0,3,525662,1,0,17.77002,0,6,1,0,0,0,0,0,0,0,0,0,0,0,9,58.5,0,0,76.1,333.75,333.75,1,0,2.197225,5.810392,0,3.258096,7.196687,0,1,0,76.1,0,2.197225,,0 +5,5,25,0,4,525662,1,0,18.77002,0,6,1,0,0,0,0,0,0,0,0,0,0,0,9,58.5,0,0,76.1,333.75,333.75,0,0,2.197225,5.810392,0,3.258096,7.196687,0,1,0,76.1,0,2.197225,,0 +5,5,25,0,5,525662,1,0,19.77002,0,6,1,0,0,0,0,0,0,0,0,0,0,0,9,58.5,0,0,76.1,333.75,333.75,0,0,2.197225,5.810392,0,3.258096,7.196687,0,1,0,76.1,0,2.197225,,0 +5,5,25,0,1,525663,1,0,14.61465,1,6,1,0,0,0,0,0,0,0,0,0,0,0,8,60.1,3.4,0,59.1,333.75,333.75,1,1,2.079442,5.810392,0,3.258096,7.196687,1,0,0,59.1,0,2.079442,,0 +5,5,25,0,2,525663,1,0,15.61465,1,6,1,0,0,0,0,0,0,0,0,0,0,0,9,60.1,3.4,0,59.1,333.75,333.75,1,1,2.197225,5.810392,0,3.258096,7.196687,1,0,0,59.1,0,2.197225,,0 +5,5,25,0,3,525663,1,0,16.61465,1,6,1,0,0,0,0,0,0,0,0,0,0,0,9,60.1,3.4,0,59.1,333.75,333.75,1,1,2.197225,5.810392,0,3.258096,7.196687,1,0,0,59.1,0,2.197225,,0 +5,5,25,0,4,525663,1,0,17.61465,1,6,1,0,0,0,0,0,0,0,0,0,0,0,9,60.1,3.4,0,59.1,333.75,333.75,1,1,2.197225,5.810392,0,3.258096,7.196687,1,0,0,59.1,0,2.197225,,0 +5,5,25,0,5,525663,1,0,18.61465,1,6,1,0,0,0,0,0,0,0,0,0,0,0,9,60.1,3.4,0,59.1,333.75,333.75,0,0,2.197225,5.810392,0,3.258096,7.196687,1,0,0,59.1,0,2.197225,,0 +11,5,0,1,1,525705,0,12350.23,36.18344,0,9,1,0,0,0,0,0,0,0,0,0,0,0,2,78.2,0,0,84.1,0,308.42,0,0,.6931472,5.731462,0,0,0,0,0,0,84.1,9.421511,.6931472,,0 +11,5,0,1,2,525705,0,12350.23,37.18344,0,9,1,7.972665,8.363706,0,0,0,16.33637,0,0,0,1,0,2,78.2,0,0,84.1,0,308.42,0,0,.6931472,5.731462,0,0,0,0,0,0,84.1,9.421511,.6931472,2.793394,1 +11,5,0,1,3,525705,0,12350.23,38.18344,0,9,1,366.436,37.78547,0,0,309.6886,713.91,1,0,0,4,0,2,78.2,0,0,84.1,0,308.42,0,0,.6931472,5.731462,0,0,0,0,0,0,84.1,9.421511,.6931472,6.570757,1 +11,5,0,1,1,525706,0,12350.23,36.99384,1,12,1,19.46678,3.440542,0,0,0,22.90732,0,0,0,1,0,2,84,13.8,0,83,0,308.42,0,0,.6931472,5.731462,0,0,0,0,1,0,83,9.421511,.6931472,3.131457,1 +11,5,0,1,2,525706,0,12350.23,37.99384,1,12,1,9.491268,8.986333,0,0,0,18.4776,0,0,0,1,0,2,84,13.8,0,83,0,308.42,0,0,.6931472,5.731462,0,0,0,0,1,0,83,9.421511,.6931472,2.916559,1 +11,5,0,1,3,525706,0,12350.23,38.99384,1,12,1,36.33218,2.730104,0,0,0,39.06228,0,0,0,2,0,2,84,13.8,0,83,0,308.42,0,0,.6931472,5.731462,0,0,0,0,1,0,83,9.421511,.6931472,3.665157,1 +11,5,0,0,1,525715,0,8507.937,45.06503,1,9,1,14.58941,0,47.93664,0,0,62.52605,0,0,0,0,1,5,75.5,10.3,0,67.9,0,1189.12,0,0,1.609438,7.080969,0,0,0,1,0,0,67.9,9.048872,1.609438,4.135583,1 +11,5,0,0,2,525715,0,8507.937,46.06503,1,9,1,7.501875,2.985746,0,0,0,10.48762,0,0,0,1,0,5,75.5,10.3,0,67.9,0,1189.12,0,0,1.609438,7.080969,0,0,0,1,0,0,67.9,9.048872,1.609438,2.350196,1 +11,5,0,0,3,525715,0,8507.937,47.06503,1,9,1,88.97158,0,0,0,0,88.97158,0,0,0,4,0,5,75.5,10.3,0,67.9,0,1189.12,0,0,1.609438,7.080969,0,0,0,1,0,0,67.9,9.048872,1.609438,4.488317,1 +11,5,0,0,1,525716,0,8507.937,12.05476,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,91.7,10.57626,.1442925,96.3,0,1189.12,1,0,1.609438,7.080969,0,0,0,1,0,0,96.3,9.048872,1.609438,,0 +11,5,0,0,2,525716,0,8507.937,13.05476,0,9,1,23.44336,0,0,0,0,23.44336,0,0,0,1,0,5,91.7,10.57626,.1442925,96.3,0,1189.12,1,0,1.609438,7.080969,0,0,0,1,0,0,96.3,9.048872,1.609438,3.154587,1 +11,5,0,0,3,525716,0,8507.937,14.05476,0,9,1,48.71448,4.803789,0,0,0,53.51827,0,0,0,1,0,5,91.7,10.57626,.1442925,96.3,0,1189.12,1,0,1.609438,7.080969,0,0,0,1,0,0,96.3,9.048872,1.609438,3.980023,1 +11,5,0,0,1,525717,0,8507.937,44.58043,0,3,1,0,0,0,0,0,0,0,0,0,0,0,5,70.2,0,0,67,0,1189.12,0,0,1.609438,7.080969,0,0,0,1,0,0,67,9.048872,1.609438,,0 +11,5,0,0,2,525717,0,8507.937,45.58043,0,3,1,31.88297,0,0,0,0,31.88297,0,0,0,1,0,5,70.2,0,0,67,0,1189.12,0,0,1.609438,7.080969,0,0,0,1,0,0,67,9.048872,1.609438,3.462072,1 +11,5,0,0,3,525717,0,8507.937,46.58043,0,3,1,0,0,0,0,0,0,0,0,0,0,0,5,70.2,0,0,67,0,1189.12,0,0,1.609438,7.080969,0,0,0,1,0,0,67,9.048872,1.609438,,0 +11,5,0,0,1,525718,0,8507.937,16.09856,1,9,1,50.22926,9.983326,47.93664,0,513.1305,621.2797,1,0,0,4,1,5,88.3,3.4,0,84.1,0,1189.12,1,1,1.609438,7.080969,0,0,0,1,0,0,84.1,9.048872,1.609438,6.431781,1 +11,5,0,0,2,525718,0,8507.937,17.09856,1,9,1,18.75469,.900225,0,0,0,19.65491,0,0,0,2,0,5,88.3,3.4,0,84.1,0,1189.12,1,1,1.609438,7.080969,0,0,0,1,0,0,84.1,9.048872,1.609438,2.978327,1 +11,5,0,0,3,525718,0,8507.937,18.09856,1,9,1,21.98917,0,0,0,0,21.98917,0,0,0,3,0,5,88.3,3.4,0,84.1,0,1189.12,0,0,1.609438,7.080969,0,0,0,1,0,0,84.1,9.048872,1.609438,3.09055,1 +7,5,25,1,1,525736,1,1656.305,56.15879,1,8,1,0,0,0,0,0,0,0,0,0,0,0,1,62.8,27.6,1,58,750,0,0,0,0,0,0,3.258096,8.006368,0,1,0,58,7.412948,0,,0 +7,5,25,1,2,525736,1,1656.305,57.15879,1,8,1,0,0,0,0,0,0,0,0,0,0,0,1,62.8,27.6,1,58,750,0,0,0,0,0,0,3.258096,8.006368,0,1,0,58,7.412948,0,,0 +7,5,25,1,3,525736,1,1656.305,58.15879,1,8,1,6.252605,0,0,0,0,6.252605,0,0,0,0,0,1,62.8,27.6,1,58,750,0,0,0,0,0,0,3.258096,8.006368,0,1,0,58,7.412948,0,1.832998,1 +7,5,25,1,4,525736,1,1656.305,59.15879,1,8,1,74.00975,2.554389,33.54839,0,0,110.1125,0,0,0,4,0,1,62.8,27.6,1,58,750,0,0,0,0,0,0,3.258096,8.006368,0,1,0,58,7.412948,0,4.701503,1 +7,5,25,1,5,525736,1,1656.305,60.15879,1,8,1,36.87415,0,0,0,0,36.87415,0,0,0,1,0,1,62.8,27.6,1,58,750,0,0,0,0,0,0,3.258096,8.006368,0,1,0,58,7.412948,0,3.607511,1 +15,5,95,0,1,525738,0,10903.74,46.48323,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,94.7,3.4,0,78.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,78.4,9.296952,1.098612,,0 +15,5,95,0,2,525738,0,10903.74,47.48323,1,9,1,70.61504,11.0896,21.64009,0,1041.496,1144.841,1,0,0,4,1,3,94.7,3.4,0,78.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,78.4,9.296952,1.098612,7.043021,1 +15,5,95,0,3,525738,0,10903.74,48.48323,1,9,1,463.4948,38.55363,37.24567,0,1732.872,2272.166,1,0,0,13,0,3,94.7,3.4,0,78.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,78.4,9.296952,1.098612,7.728489,1 +15,5,95,0,1,525739,0,10903.74,18.30253,0,10.96978,1,0,0,0,0,0,0,0,0,0,0,0,3,96.8,0,0,89.8,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,89.8,9.296952,1.098612,,0 +15,5,95,0,2,525739,0,10903.74,19.30253,0,10.96978,1,0,3.151101,0,0,0,3.151101,0,0,0,0,0,3,96.8,0,0,89.8,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,89.8,9.296952,1.098612,1.147752,1 +15,5,95,0,3,525739,0,10903.74,20.30253,0,10.96978,1,0,0,0,0,0,0,0,0,0,0,0,3,96.8,0,0,89.8,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,89.8,9.296952,1.098612,,0 +15,5,95,0,1,525740,0,10903.74,46.48323,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,95.7,6.9,1,67,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,67,9.296952,1.098612,,0 +15,5,95,0,2,525740,0,10903.74,47.48323,0,10,1,20.50114,6.324981,45.17844,0,0,72.00455,0,0,0,2,1,3,95.7,6.9,1,67,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,67,9.296952,1.098612,4.27673,1 +15,5,95,0,3,525740,0,10903.74,48.48323,0,10,1,27.33564,0,0,0,0,27.33564,0,0,0,1,0,3,95.7,6.9,1,67,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,67,9.296952,1.098612,3.308191,1 +11,5,0,1,1,525768,0,10955.42,28.04654,0,20,1,0,0,0,0,0,0,0,0,0,0,0,2,64.4,10.3,0,67.9,0,45.12,0,0,.6931472,3.809326,0,0,0,0,0,0,67.9,9.301682,.6931472,,0 +11,5,0,1,2,525768,0,10955.42,29.04654,0,20,1,0,0,0,0,0,0,0,0,0,0,0,2,64.4,10.3,0,67.9,0,45.12,0,0,.6931472,3.809326,0,0,0,0,0,0,67.9,9.301682,.6931472,,0 +11,5,0,1,3,525768,0,10955.42,30.04654,0,20,1,0,0,0,0,0,0,0,0,0,0,0,2,64.4,10.3,0,67.9,0,45.12,0,0,.6931472,3.809326,0,0,0,0,0,0,67.9,9.301682,.6931472,,0 +11,5,0,1,4,525768,0,10955.42,31.04654,0,20,1,0,3.348519,0,0,0,3.348519,0,0,0,0,0,2,64.4,10.3,0,67.9,0,45.12,0,0,.6931472,3.809326,0,0,0,0,0,0,67.9,9.301682,.6931472,1.208518,1 +11,5,0,1,5,525768,0,10955.42,32.04654,0,20,1,13.84083,3.916955,0,0,0,17.75779,0,0,0,1,0,2,64.4,10.3,0,67.9,0,45.12,0,0,.6931472,3.809326,0,0,0,0,0,0,67.9,9.301682,.6931472,2.876824,1 +11,5,0,1,1,525769,0,10955.42,35.30185,1,10.96978,1,41.39651,5.985037,0,0,0,47.38155,0,0,0,1,0,2,76.6,6.9,0,89.8,0,45.12,0,0,.6931472,3.809326,0,0,0,0,0,0,89.8,9.301682,.6931472,3.858233,1 +11,5,0,1,2,525769,0,10955.42,36.30185,1,10.96978,1,16.13647,0,27.81005,0,0,43.94652,0,0,0,1,0,2,76.6,6.9,0,89.8,0,45.12,0,0,.6931472,3.809326,0,0,0,0,0,0,89.8,9.301682,.6931472,3.782973,1 +11,5,0,1,3,525769,0,10955.42,37.30185,1,10.96978,1,2.962336,0,0,0,0,2.962336,0,0,0,0,0,2,76.6,6.9,0,89.8,0,45.12,0,0,.6931472,3.809326,0,0,0,0,0,0,89.8,9.301682,.6931472,1.085978,1 +11,5,0,1,4,525769,0,10955.42,38.30185,1,10.96978,1,0,0,0,0,0,0,0,0,0,0,0,2,76.6,6.9,0,89.8,0,45.12,0,0,.6931472,3.809326,0,0,0,0,0,0,89.8,9.301682,.6931472,,0 +11,5,0,1,5,525769,0,10955.42,39.30185,1,10.96978,1,25.95156,4.615917,25.19031,0,0,55.75779,0,0,0,2,0,2,76.6,6.9,0,89.8,0,45.12,0,0,.6931472,3.809326,0,0,0,0,0,0,89.8,9.301682,.6931472,4.021017,1 +11,5,0,1,1,525789,1,6674.895,26.74059,0,11,1,14.81168,2.839611,0,0,0,17.65129,0,0,0,1,0,2,80.3,6.9,0,66.7,0,0,0,0,.6931472,0,0,0,0,0,0,0,66.7,8.806258,.6931472,2.870809,1 +11,5,0,1,2,525789,1,6674.895,27.74059,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,80.3,6.9,0,66.7,0,0,0,0,.6931472,0,0,0,0,0,0,0,66.7,8.806258,.6931472,,0 +11,5,0,1,3,525789,1,6674.895,28.74059,0,11,1,42.56055,0,0,0,0,42.56055,0,0,0,1,0,2,80.3,6.9,0,66.7,0,0,0,0,.6931472,0,0,0,0,0,0,0,66.7,8.806258,.6931472,3.750928,1 +11,5,0,0,1,525790,1,6674.895,24.71458,0,9,1,23.2755,0,0,0,2083.072,2106.348,1,0,0,2,0,2,83,3.4,0,69,0,0,0,0,.6931472,0,0,0,0,0,0,0,69,8.806258,.6931472,7.652711,1 +11,5,0,0,2,525790,1,6674.895,25.71458,0,9,1,0,0,0,0,0,0,0,0,0,0,0,2,83,3.4,0,69,0,0,0,0,.6931472,0,0,0,0,0,0,0,69,8.806258,.6931472,,0 +11,5,0,0,3,525790,1,6674.895,26.71458,0,9,1,0,0,0,0,0,0,0,0,0,0,0,2,83,3.4,0,69,0,0,0,0,.6931472,0,0,0,0,0,0,0,69,8.806258,.6931472,,0 +11,5,0,1,1,525791,1,2181.26,35.29911,1,12,1,21.66737,0,0,0,0,21.66737,0,0,0,0,0,1,71.3,10.3,0,61.4,0,0,0,0,0,0,0,0,0,0,0,0,61.4,7.688116,0,3.075808,1 +11,5,0,1,2,525791,1,2181.26,36.29911,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,71.3,10.3,0,61.4,0,0,0,0,0,0,0,0,0,0,0,0,61.4,7.688116,0,,0 +11,5,0,1,3,525791,1,2181.26,37.29911,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,71.3,10.3,0,61.4,0,0,0,0,0,0,0,0,0,0,0,0,61.4,7.688116,0,,0 +16,5,95,1,1,525795,1,8781.362,3.750856,1,14,1,0,0,0,0,0,0,0,0,0,0,0,10,77.40034,10.57626,0,81.5,1000,1000,1,1,2.302585,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.080501,2.302585,,0 +16,5,95,1,2,525795,1,8781.362,4.750855,1,14,1,14.27481,0,0,0,0,14.27481,0,0,0,0,0,12,77.40034,10.57626,0,81.5,1000,1000,1,1,2.484907,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.080501,2.484907,2.658496,1 +16,5,95,1,3,525795,1,8781.362,5.750855,1,14,1,6.271777,0,0,0,0,6.271777,0,0,0,1,0,12,77.40034,10.57626,0,81.5,1000,1000,1,1,2.484907,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.080501,2.484907,1.83606,1 +16,5,95,1,1,525796,1,8781.362,45.56605,0,15,1,3.402807,3.513399,0,0,0,6.916206,0,0,0,0,1,10,82.6,3.4,0,77.3,1000,1000,0,0,2.302585,6.907755,0,4.564348,6.959049,1,0,0,77.3,9.080501,2.302585,1.933867,1 +16,5,95,1,2,525796,1,8781.362,46.56605,0,15,1,19.46565,0,0,0,0,19.46565,0,0,0,0,1,12,82.6,3.4,0,77.3,1000,1000,0,0,2.484907,6.907755,0,4.564348,6.959049,1,0,0,77.3,9.080501,2.484907,2.968651,1 +16,5,95,1,3,525796,1,8781.362,47.56605,0,15,1,15.67944,0,32.73519,0,0,48.41463,0,0,0,2,0,12,82.6,3.4,0,77.3,1000,1000,0,0,2.484907,6.907755,0,4.564348,6.959049,1,0,0,77.3,9.080501,2.484907,3.879802,1 +16,5,95,1,1,525797,1,8781.362,7.931554,1,14,1,16.37601,8.63037,0,0,1629.945,1654.951,2,1,0,0,0,10,98.3,10.57626,0,92.6,1000,1000,1,1,2.302585,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.080501,2.302585,7.411527,1 +16,5,95,1,2,525797,1,8781.362,8.931554,1,14,1,18.70229,4.919847,0,0,0,23.62214,0,0,0,2,0,12,98.3,10.57626,0,92.6,1000,1000,1,1,2.484907,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.080501,2.484907,3.162184,1 +16,5,95,1,3,525797,1,8781.362,9.931554,1,14,1,10.45296,0,0,0,0,10.45296,0,0,0,1,0,12,98.3,10.57626,0,92.6,1000,1000,1,1,2.484907,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.080501,2.484907,2.346885,1 +16,5,95,1,1,525798,1,8781.362,3.750856,1,14,1,175.2446,2.41174,0,0,0,177.6563,0,0,0,3,0,10,77.40034,10.57626,0,88.9,1000,1000,1,1,2.302585,6.907755,0,4.564348,6.959049,1,0,0,88.9,9.080501,2.302585,5.179851,1 +16,5,95,1,2,525798,1,8781.362,4.750855,1,14,1,0,0,0,0,0,0,0,0,0,0,0,12,77.40034,10.57626,0,88.9,1000,1000,1,1,2.484907,6.907755,0,4.564348,6.959049,1,0,0,88.9,9.080501,2.484907,,0 +16,5,95,1,3,525798,1,8781.362,5.750855,1,14,1,4.878049,0,0,0,0,4.878049,0,0,0,1,0,12,77.40034,10.57626,0,88.9,1000,1000,1,1,2.484907,6.907755,0,4.564348,6.959049,1,0,0,88.9,9.080501,2.484907,1.584745,1 +16,5,95,1,1,525799,1,8781.362,13.62902,0,14,1,0,0,0,0,0,0,0,0,0,0,0,10,96.7,10.57626,0,92.6,1000,1000,1,0,2.302585,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.080501,2.302585,,0 +16,5,95,1,2,525799,1,8781.362,14.62902,0,14,1,0,0,0,0,0,0,0,0,0,0,0,12,96.7,10.57626,0,92.6,1000,1000,1,0,2.484907,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.080501,2.484907,,0 +16,5,95,1,3,525799,1,8781.362,15.62902,0,14,1,0,0,0,0,0,0,0,0,0,0,0,12,96.7,10.57626,0,92.6,1000,1000,1,0,2.484907,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.080501,2.484907,,0 +16,5,95,1,1,525800,1,8781.362,12.29569,1,14,1,0,0,0,0,0,0,0,0,0,0,0,10,95,10.57626,0,92.6,1000,1000,1,1,2.302585,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.080501,2.302585,,0 +16,5,95,1,2,525800,1,8781.362,13.29569,1,14,1,0,0,0,0,0,0,0,0,0,0,0,12,95,10.57626,0,92.6,1000,1000,1,1,2.484907,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.080501,2.484907,,0 +16,5,95,1,3,525800,1,8781.362,14.29569,1,14,1,10.45296,0,25,0,0,35.45296,0,0,0,1,0,12,95,10.57626,0,92.6,1000,1000,1,1,2.484907,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.080501,2.484907,3.568207,1 +16,5,95,1,1,525801,1,8781.362,37.54415,1,14,1,24.67035,4.079115,0,0,626.5419,655.2914,1,0,0,0,0,10,85.6,10.3,1,64.3,1000,1000,0,0,2.302585,6.907755,0,4.564348,6.959049,1,0,0,64.3,9.080501,2.302585,6.48508,1 +16,5,95,1,2,525801,1,8781.362,38.54415,1,14,1,35.1145,0,0,0,0,35.1145,0,0,0,0,0,12,85.6,10.3,1,64.3,1000,1000,0,0,2.484907,6.907755,0,4.564348,6.959049,1,0,0,64.3,9.080501,2.484907,3.558614,1 +16,5,95,1,3,525801,1,8781.362,39.54415,1,14,1,12.89199,5.205575,0,0,1611.498,1629.596,2,1,0,2,0,12,85.6,10.3,1,64.3,1000,1000,0,0,2.484907,6.907755,0,4.564348,6.959049,1,0,0,64.3,9.080501,2.484907,7.396087,1 +16,5,95,1,1,525802,1,8781.362,10.18207,0,14,1,0,0,0,0,0,0,0,0,0,0,0,10,91.7,10.57626,0,88.9,1000,1000,1,0,2.302585,6.907755,0,4.564348,6.959049,1,0,0,88.9,9.080501,2.302585,,0 +16,5,95,1,2,525802,1,8781.362,11.18207,0,14,1,0,0,0,0,0,0,0,0,0,0,0,12,91.7,10.57626,0,88.9,1000,1000,1,0,2.484907,6.907755,0,4.564348,6.959049,1,0,0,88.9,9.080501,2.484907,,0 +16,5,95,1,3,525802,1,8781.362,12.18207,0,14,1,0,0,0,0,0,0,0,0,0,0,0,12,91.7,10.57626,0,88.9,1000,1000,1,0,2.484907,6.907755,0,4.564348,6.959049,1,0,0,88.9,9.080501,2.484907,,0 +17,5,25,1,1,525812,1,10108.5,37.70842,1,18,1,20.81269,0,0,0,370.6393,391.4519,1,0,0,3,0,2,87.2,10.3,0,59.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,59.1,9.221231,.6931472,5.969863,1 +17,5,25,1,2,525812,1,10108.5,38.70842,1,18,1,57.36576,33.66682,0,0,0,91.03259,0,0,0,6,0,2,87.2,10.3,0,59.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,59.1,9.221231,.6931472,4.511218,1 +17,5,25,1,3,525812,1,10108.5,39.70842,1,18,1,0,0,0,0,0,0,0,0,0,0,0,2,87.2,10.3,0,59.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,59.1,9.221231,.6931472,,0 +17,5,25,1,4,525812,1,10108.5,40.70842,1,18,1,24.5561,1.824707,0,0,0,26.38081,0,0,0,1,0,2,87.2,10.3,0,59.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,59.1,9.221231,.6931472,3.272637,1 +17,5,25,1,5,525812,1,10108.5,41.70842,1,18,1,0,0,0,0,0,0,0,0,0,0,0,2,87.2,10.3,0,59.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,59.1,9.221231,.6931472,,0 +17,5,25,1,1,525813,1,10108.5,37.04038,0,14,1,106.2934,17.31913,0,0,0,123.6125,0,0,0,5,0,2,68.1,13.8,0,63.6,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,63.6,9.221231,.6931472,4.817152,1 +17,5,25,1,2,525813,1,10108.5,38.04038,0,14,1,6.883892,3.487839,0,0,0,10.37173,0,0,0,1,0,2,68.1,13.8,0,63.6,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,63.6,9.221231,.6931472,2.339084,1 +17,5,25,1,3,525813,1,10108.5,39.04038,0,14,1,91.92259,81.22844,0,0,396.2979,569.4489,1,0,0,4,0,2,68.1,13.8,0,63.6,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,63.6,9.221231,.6931472,6.344669,1 +17,5,25,1,4,525813,1,10108.5,40.04038,0,14,1,84.05743,14.54855,0,0,886.2864,984.8923,1,0,0,5,0,2,68.1,13.8,0,63.6,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,63.6,9.221231,.6931472,6.892532,1 +17,5,25,1,5,525813,1,10108.5,41.04038,0,14,1,0,0,0,0,0,0,0,0,0,0,0,2,68.1,13.8,0,63.6,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,63.6,9.221231,.6931472,,0 +10,5,50,0,1,525816,0,6674.895,56.43258,1,7,1,0,0,0,0,0,0,0,0,0,0,0,3,68.1,20.7,1,56,1000,0,0,0,1.098612,0,0,3.931826,7.600903,0,1,0,56,8.806258,1.098612,,0 +10,5,50,0,2,525816,0,6674.895,57.43258,1,7,1,0,0,0,0,0,0,0,0,0,0,0,3,68.1,20.7,1,56,1000,0,0,0,1.098612,0,0,3.931826,7.600903,0,1,0,56,8.806258,1.098612,,0 +10,5,50,0,3,525816,0,6674.895,58.43258,1,7,1,0,0,0,0,0,0,0,0,0,0,0,3,68.1,20.7,1,56,1000,0,0,0,1.098612,0,0,3.931826,7.600903,0,1,0,56,8.806258,1.098612,,0 +10,5,50,0,1,525817,0,6674.895,17.58522,0,7,1,0,0,0,0,0,0,0,0,0,0,0,3,80.3,3.4,0,64.8,1000,0,1,0,1.098612,0,0,3.931826,7.600903,0,0,0,64.8,8.806258,1.098612,,0 +10,5,50,0,2,525817,0,6674.895,18.58522,0,7,1,0,0,0,0,0,0,0,0,0,0,0,3,80.3,3.4,0,64.8,1000,0,0,0,1.098612,0,0,3.931826,7.600903,0,0,0,64.8,8.806258,1.098612,,0 +10,5,50,0,3,525817,0,6674.895,19.58522,0,7,1,0,0,0,0,0,0,0,0,0,0,0,3,80.3,3.4,0,64.8,1000,0,0,0,1.098612,0,0,3.931826,7.600903,0,0,0,64.8,8.806258,1.098612,,0 +10,5,50,0,1,525818,0,6674.895,57.9165,0,6,1,15.52531,2.007656,0,0,0,17.53296,0,0,0,1,0,3,81.9,13.8,0,61.4,1000,0,0,0,1.098612,0,0,3.931826,7.600903,1,0,0,61.4,8.806258,1.098612,2.864083,1 +10,5,50,0,2,525818,0,6674.895,58.9165,0,6,1,8.015267,0,0,0,0,8.015267,0,0,0,1,0,3,81.9,13.8,0,61.4,1000,0,0,0,1.098612,0,0,3.931826,7.600903,1,0,0,61.4,8.806258,1.098612,2.081348,1 +10,5,50,0,3,525818,0,6674.895,59.9165,0,6,1,0,0,0,0,0,0,0,0,0,0,0,3,81.9,13.8,0,61.4,1000,0,0,0,1.098612,0,0,3.931826,7.600903,1,0,0,61.4,8.806258,1.098612,,0 +13,5,0,1,1,525820,1,4072.727,14.91581,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,41.5,6.9,0,48.9,450,0,1,1,1.386294,0,1,4.564348,6.160541,1,0,0,48.9,8.312314,1.386294,,0 +13,5,0,1,2,525820,1,4072.727,15.91581,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,41.5,6.9,0,48.9,450,0,1,1,1.386294,0,1,4.564348,6.160541,1,0,0,48.9,8.312314,1.386294,,0 +13,5,0,1,3,525820,1,4072.727,16.91581,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,41.5,6.9,0,48.9,450,0,1,1,1.386294,0,1,4.564348,6.160541,1,0,0,48.9,8.312314,1.386294,,0 +13,5,0,1,4,525820,1,4072.727,17.91581,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,41.5,6.9,0,48.9,450,0,1,1,1.386294,0,1,4.564348,6.160541,1,0,0,48.9,8.312314,1.386294,,0 +13,5,0,1,5,525820,1,4072.727,18.91581,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,41.5,6.9,0,48.9,450,0,0,0,1.386294,0,1,4.564348,6.160541,1,0,0,48.9,8.312314,1.386294,,0 +13,5,0,1,1,525821,1,4072.727,37.25941,1,7,1,8.72818,0,0,0,0,8.72818,0,0,0,1,0,4,39.4,20.7,1,54.5,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,1,54.5,8.312314,1.386294,2.166557,1 +13,5,0,1,2,525821,1,4072.727,38.25941,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,39.4,20.7,1,54.5,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,1,54.5,8.312314,1.386294,,0 +13,5,0,1,3,525821,1,4072.727,39.25941,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,39.4,20.7,1,54.5,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,1,54.5,8.312314,1.386294,,0 +13,5,0,1,4,525821,1,4072.727,40.25941,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,39.4,20.7,1,54.5,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,1,54.5,8.312314,1.386294,,0 +13,5,0,1,5,525821,1,4072.727,41.25941,1,7,1,38.06228,1.67474,0,0,0,39.73702,0,0,0,0,1,4,39.4,20.7,1,54.5,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,1,54.5,8.312314,1.386294,3.682283,1 +13,5,0,1,1,525822,1,4072.727,7.526352,1,7,1,8.72818,0,0,0,0,8.72818,0,0,0,0,0,4,77.8,10.57626,0,51.9,450,0,1,1,1.386294,0,1,4.564348,6.160541,1,0,0,51.9,8.312314,1.386294,2.166557,1 +13,5,0,1,2,525822,1,4072.727,8.526352,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,77.8,10.57626,0,51.9,450,0,1,1,1.386294,0,1,4.564348,6.160541,1,0,0,51.9,8.312314,1.386294,,0 +13,5,0,1,3,525822,1,4072.727,9.526352,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,77.8,10.57626,0,51.9,450,0,1,1,1.386294,0,1,4.564348,6.160541,1,0,0,51.9,8.312314,1.386294,,0 +13,5,0,1,4,525822,1,4072.727,10.52635,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,77.8,10.57626,0,51.9,450,0,1,1,1.386294,0,1,4.564348,6.160541,1,0,0,51.9,8.312314,1.386294,,0 +13,5,0,1,5,525822,1,4072.727,11.52635,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,77.8,10.57626,0,51.9,450,0,1,1,1.386294,0,1,4.564348,6.160541,1,0,0,51.9,8.312314,1.386294,,0 +13,5,0,1,1,525823,1,4072.727,13.92471,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,58.3,10.57626,0,77.8,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,77.8,8.312314,1.386294,,0 +13,5,0,1,2,525823,1,4072.727,14.92471,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,58.3,10.57626,0,77.8,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,77.8,8.312314,1.386294,,0 +13,5,0,1,3,525823,1,4072.727,15.92471,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,58.3,10.57626,0,77.8,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,77.8,8.312314,1.386294,,0 +13,5,0,1,4,525823,1,4072.727,16.92471,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,58.3,10.57626,0,77.8,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,77.8,8.312314,1.386294,,0 +13,5,0,1,5,525823,1,4072.727,17.92471,1,7,1,0,0,0,0,501.9031,501.9031,1,0,0,0,0,4,58.3,10.57626,0,77.8,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,77.8,8.312314,1.386294,6.218407,1 +11,5,0,1,1,525832,1,5341.014,6.833675,1,13,1,8.413967,2.099285,0,0,0,10.51325,0,0,0,0,1,4,90,10.57626,0,70.4,0,592.32,1,1,1.386294,6.384047,0,0,0,0,0,0,70.4,8.583358,1.386294,2.352637,1 +11,5,0,1,2,525832,1,5341.014,7.833675,1,13,1,42.68984,5.379675,0,0,0,48.06951,0,0,0,3,0,4,90,10.57626,0,70.4,0,592.32,1,1,1.386294,6.384047,0,0,0,0,0,0,70.4,8.583358,1.386294,3.872648,1 +11,5,0,1,3,525832,1,5341.014,8.833675,1,13,1,15.43739,6.490566,0,0,0,21.92796,0,0,0,1,0,4,90,10.57626,0,70.4,0,592.32,1,1,1.386294,6.384047,0,0,0,0,0,0,70.4,8.583358,1.386294,3.087763,1 +11,5,0,1,1,525833,1,5341.014,27.35113,0,12,1,19.35213,23.44973,0,0,0,42.80185,0,0,0,1,0,4,80.9,0,0,72.7,0,592.32,0,0,1.386294,6.384047,0,0,0,1,0,0,72.7,8.583358,1.386294,3.756581,1 +11,5,0,1,2,525833,1,5341.014,28.35113,0,12,1,47.60106,6.210804,0,0,0,53.81186,0,0,0,2,0,4,80.9,0,0,72.7,0,592.32,0,0,1.386294,6.384047,0,0,0,1,0,0,72.7,8.583358,1.386294,3.985494,1 +11,5,0,1,3,525833,1,5341.014,29.35113,0,12,1,8.576329,6.133791,0,0,0,14.71012,0,0,0,1,0,4,80.9,0,0,72.7,0,592.32,0,0,1.386294,6.384047,0,0,0,1,0,0,72.7,8.583358,1.386294,2.688536,1 +11,5,0,1,1,525834,1,5341.014,28.93087,1,13,1,18.93143,14.92638,33.496,0,0,67.35381,0,0,0,1,1,4,75.5,13.8,0,53.4,0,592.32,0,0,1.386294,6.384047,0,0,0,1,0,0,53.4,8.583358,1.386294,4.20996,1 +11,5,0,1,2,525834,1,5341.014,29.93087,1,13,1,42.29316,9.180204,0,0,367.9637,419.4371,1,0,0,4,0,4,75.5,13.8,0,53.4,0,592.32,0,0,1.386294,6.384047,0,0,0,1,0,0,53.4,8.583358,1.386294,6.038914,1 +11,5,0,1,3,525834,1,5341.014,30.93087,1,13,1,60.72041,21.64322,23.54717,0,1147.17,1253.081,2,0,0,1,1,4,75.5,13.8,0,53.4,0,592.32,0,0,1.386294,6.384047,0,0,0,1,0,0,53.4,8.583358,1.386294,7.13336,1 +16,5,95,1,1,525840,0,10012.9,24.71184,1,12,1,9.975062,0,0,0,517.4065,527.3815,1,0,0,1,0,1,88.3,6.9,0,73.9,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,73.9,9.21173,0,6.267924,1 +16,5,95,1,2,525840,0,10012.9,25.71184,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,88.3,6.9,0,73.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,73.9,9.21173,.6931472,,0 +16,5,95,1,3,525840,0,10012.9,26.71184,1,12,1,5.07829,0,0,0,0,5.07829,0,0,0,1,0,2,88.3,6.9,0,73.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,73.9,9.21173,.6931472,1.624975,1 +16,5,95,1,4,525840,0,10012.9,27.71184,1,12,1,0,3.834472,0,0,0,3.834472,0,0,0,0,0,2,88.3,6.9,0,73.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,73.9,9.21173,.6931472,1.344032,1 +16,5,95,1,5,525840,0,10012.9,28.71184,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,88.3,6.9,0,73.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,73.9,9.21173,.6931472,,0 +11,5,0,1,1,525846,.4758801,3645.161,21.71937,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,83.5,3.4,0,52.3,0,0,0,0,0,0,0,0,0,0,1,0,52.3,8.20143,0,,0 +11,5,0,1,2,525846,.4758801,3645.161,22.71937,0,12,1,19.83377,0,0,0,0,19.83377,0,0,0,1,0,1,83.5,3.4,0,52.3,0,0,0,0,0,0,0,0,0,0,1,0,52.3,8.20143,0,2.987386,1 +11,5,0,1,3,525846,.4758801,3645.161,23.71937,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,83.5,3.4,0,52.3,0,0,0,0,0,0,0,0,0,0,1,0,52.3,8.20143,0,,0 +11,5,0,1,1,525857,1,7213.006,38.59274,1,7,1,50.02084,16.69862,31.26303,0,0,97.98249,0,0,0,7,1,3,36.2,37.9,1,23.9,0,624.78,0,0,1.098612,6.437399,0,0,0,0,1,0,23.9,8.88378,1.098612,4.584789,1 +11,5,0,1,2,525857,1,7213.006,39.59274,1,7,1,31.50788,27.06301,0,0,0,58.57089,0,0,0,5,0,2,36.2,37.9,1,23.9,0,624.78,0,0,.6931472,6.437399,0,0,0,0,1,0,23.9,8.88378,.6931472,4.070238,1 +11,5,0,1,3,525857,1,7213.006,40.59274,1,7,1,35.85927,20.86265,25.37212,0,0,82.09405,0,0,0,6,1,2,36.2,37.9,1,23.9,0,624.78,0,0,.6931472,6.437399,0,0,0,0,1,0,23.9,8.88378,.6931472,4.407866,1 +11,5,0,1,1,525858,.4758801,1475.166,19.08829,1,9,1,0,4.827011,0,0,0,4.827011,0,0,0,0,0,1,80.9,3.4,0,72.7,0,0,0,0,0,0,0,0,0,0,0,0,72.7,7.297204,0,1.574227,1 +11,5,0,1,2,525858,.4758801,1475.166,20.08829,1,9,1,0,2.171793,0,0,625.2813,627.4531,1,1,0,0,0,1,80.9,3.4,0,72.7,0,0,0,0,0,0,0,0,0,0,0,0,72.7,7.297204,0,6.441669,1 +11,5,0,1,3,525858,.4758801,1475.166,21.08829,1,9,1,0,2.026387,0,0,0,2.026387,0,0,0,0,0,2,80.9,3.4,0,72.7,0,0,0,0,.6931472,0,0,0,0,0,0,0,72.7,7.297204,.6931472,.7062544,1 +11,5,0,1,1,525859,.4758801,6674.895,3.518138,1,6,1,39.18299,7.386411,0,0,0,46.5694,0,0,0,4,0,2,77.40034,10.57626,0,85.2,0,0,1,1,.6931472,0,0,0,0,1,0,0,85.2,8.806258,.6931472,3.840944,1 +11,5,0,1,2,525859,.4758801,6674.895,4.518138,1,6,1,14.25356,7.108027,0,0,0,21.36159,0,0,0,3,0,2,77.40034,10.57626,0,85.2,0,0,1,1,.6931472,0,0,0,0,1,0,0,85.2,8.806258,.6931472,3.061594,1 +11,5,0,1,3,525859,.4758801,6674.895,5.518138,1,6,1,31.79973,18.62652,0,0,0,50.42625,0,0,0,5,0,2,77.40034,10.57626,0,85.2,0,0,1,1,.6931472,0,0,0,0,1,0,0,85.2,8.806258,.6931472,3.920512,1 +11,5,0,1,1,525860,1,7213.006,42.76249,0,7,1,107.4614,31.55482,65.98582,0,438.0992,643.1013,1,0,0,9,1,3,86.7,17.2,0,61.4,0,624.78,0,0,1.098612,6.437399,0,0,0,1,0,0,61.4,8.88378,1.098612,6.466302,1 +11,5,0,1,2,525860,1,7213.006,43.76249,0,7,1,16.50413,22.54314,25.54389,0,0,64.59115,0,0,0,3,0,2,86.7,17.2,0,61.4,0,624.78,0,0,.6931472,6.437399,0,0,0,1,0,0,61.4,8.88378,.6931472,4.168077,1 +11,5,0,1,3,525860,1,7213.006,44.76249,0,7,1,51.08254,21.83694,67.91272,0,0,140.8322,0,0,0,5,1,2,86.7,17.2,0,61.4,0,624.78,0,0,.6931472,6.437399,0,0,0,1,0,0,61.4,8.88378,.6931472,4.947569,1 +11,5,0,1,1,525861,.4758801,6674.895,20.45175,1,6,1,18.75782,9.470613,0,0,0,28.22843,0,0,0,2,0,2,55.4,13.8,1,55.7,0,0,0,0,.6931472,0,0,0,0,1,0,0,55.7,8.806258,.6931472,3.34033,1 +11,5,0,1,2,525861,.4758801,6674.895,21.45175,1,6,1,22.50563,15.05251,0,0,0,37.55814,0,0,0,2,0,2,55.4,13.8,1,55.7,0,0,0,0,.6931472,0,0,0,0,1,0,0,55.7,8.806258,.6931472,3.62589,1 +11,5,0,1,3,525861,.4758801,6674.895,22.45175,1,6,1,54.1272,17.74357,25.37212,0,0,97.2429,0,0,0,1,1,2,55.4,13.8,1,55.7,0,0,0,0,.6931472,0,0,0,0,1,0,0,55.7,8.806258,.6931472,4.577212,1 +11,5,0,1,1,525862,1,7213.006,16.13416,0,7,1,53.48062,1.875782,31.47145,0,0,86.82784,0,0,0,2,1,3,83,0,0,76.1,0,624.78,1,0,1.098612,6.437399,0,0,0,0,1,0,76.1,8.88378,1.098612,4.463927,1 +13,5,0,1,1,525863,0,9026.113,43.22519,1,12,1,32.11399,1.829009,0,0,0,33.943,0,0,0,2,0,6,87.8,10.3,1,68.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.107988,1.791759,3.524683,1 +13,5,0,1,2,525863,0,9026.113,44.22519,1,12,1,80.34351,1.992366,0,0,0,82.33588,0,0,0,2,0,7,87.8,10.3,1,68.2,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.107988,1.94591,4.410807,1 +13,5,0,1,3,525863,0,9026.113,45.22519,1,12,1,115.5052,32.63066,24.73868,0,932.0557,1104.93,1,0,0,6,1,7,87.8,10.3,1,68.2,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.107988,1.94591,7.007537,1 +13,5,0,1,1,525864,0,9026.113,5.538672,0,12,1,60.39983,11.08465,17.01404,0,0,88.49851,0,0,0,5,2,6,88.3,10.57626,0,92.6,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.107988,1.791759,4.482986,1 +13,5,0,1,2,525864,0,9026.113,6.538672,0,12,1,27.48092,12.03435,0,0,0,39.51527,0,0,0,3,1,7,88.3,10.57626,0,92.6,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.107988,1.94591,3.676687,1 +13,5,0,1,3,525864,0,9026.113,7.538672,0,12,1,60.27874,2.522648,28.57143,0,0,91.37283,0,0,0,4,4,7,88.3,10.57626,0,92.6,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.107988,1.94591,4.514948,1 +13,5,0,1,1,525865,0,9026.113,16.19439,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.8,0,1,85.2,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.107988,1.791759,,0 +13,5,0,1,2,525865,0,9026.113,17.19439,1,12,1,28.62595,0,0,0,0,28.62595,0,0,0,3,0,7,88.8,0,1,85.2,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.107988,1.94591,3.354314,1 +13,5,0,1,3,525865,0,9026.113,18.19439,1,12,1,0,2.010453,0,0,0,2.010453,0,0,0,0,0,7,88.8,0,1,85.2,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.107988,1.94591,.6983601,1 +13,5,0,1,1,525866,0,9026.113,43.78645,0,13,1,101.2335,23.46661,27.64781,0,0,152.3479,0,0,0,4,1,6,89.4,10.3,0,96.6,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,96.6,9.107988,1.791759,5.026167,1 +13,5,0,1,2,525866,0,9026.113,44.78645,0,13,1,0,2.698473,0,0,0,2.698473,0,0,0,0,0,7,89.4,10.3,0,96.6,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,96.6,9.107988,1.94591,.9926862,1 +13,5,0,1,3,525866,0,9026.113,45.78645,0,13,1,21.25435,2.623693,0,0,0,23.87805,0,0,0,2,0,7,89.4,10.3,0,96.6,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,96.6,9.107988,1.94591,3.17296,1 +13,5,0,1,1,525867,0,9026.113,13.42094,0,12,1,5.954913,26.8439,0,8.507018,0,32.79881,0,0,1,1,0,6,85,10.57626,0,85.2,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.107988,1.791759,3.490392,1 +13,5,0,1,2,525867,0,9026.113,14.42094,0,12,1,17.55725,38.82443,0,0,0,56.38168,0,0,0,2,0,7,85,10.57626,0,85.2,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.107988,1.94591,4.032144,1 +13,5,0,1,3,525867,0,9026.113,15.42094,0,12,1,8.36237,33.81882,0,0,0,42.18118,0,0,0,1,0,7,85,10.57626,0,85.2,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.107988,1.94591,3.741974,1 +13,5,0,1,1,525868,0,9026.113,17.28131,1,12,1,93.78988,15.02339,0,0,739.6852,848.4985,1,0,0,6,0,6,48.4,3.4,0,50,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,50,9.107988,1.791759,6.743468,1 +13,5,0,1,2,525868,0,9026.113,18.28131,1,12,1,121.6603,7.21374,3.156489,0,0,132.0305,0,0,0,3,0,7,48.4,3.4,0,50,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,50,9.107988,1.94591,4.883033,1 +13,5,0,1,3,525868,0,9026.113,19.28131,1,12,1,141.6202,67.01045,28.09408,0,0,236.7247,0,0,0,8,1,7,48.4,3.4,0,50,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,50,9.107988,1.94591,5.466898,1 +11,5,0,0,1,525869,0,5852.786,37.96578,1,5,1,252.6683,144.3741,28.42893,0,0,425.4713,0,0,0,9,0,4,35.1,58.6,1,34.5,0,468,0,0,1.386294,6.148468,0,0,0,0,0,1,34.5,8.674844,1.386294,6.053197,1 +11,5,0,0,2,525869,0,5852.786,38.96578,1,5,1,5.532504,221.1849,0,0,0,226.7174,0,0,0,1,0,4,35.1,58.6,1,34.5,0,468,0,0,1.386294,6.148468,0,0,0,0,0,1,34.5,8.674844,1.386294,5.423704,1 +11,5,0,0,3,525869,0,5852.786,39.96578,1,5,1,90.13966,173.5506,46.55099,0,2108.76,2419.001,1,0,0,7,1,4,35.1,58.6,1,34.5,0,468,0,0,1.386294,6.148468,0,0,0,0,0,1,34.5,8.674844,1.386294,7.79111,1 +11,5,0,0,4,525869,0,5852.786,40.96578,1,5,1,212.9841,579.0623,0,0,0,792.0463,0,0,0,19,0,4,35.1,58.6,1,34.5,0,468,0,0,1.386294,6.148468,0,0,0,0,0,1,34.5,8.674844,1.386294,6.67462,1 +11,5,0,0,5,525869,0,5852.786,41.96578,1,5,1,496.0208,706.3979,38.14533,0,0,1240.564,0,0,0,21,1,3,35.1,58.6,1,34.5,0,468,0,0,1.098612,6.148468,0,0,0,0,0,1,34.5,8.674844,1.098612,7.123322,1 +11,5,0,0,1,525870,0,5852.786,15.43874,0,5,1,19.95012,0,0,0,0,19.95012,0,0,0,1,0,4,68.1,10.3,0,65.9,0,468,1,0,1.386294,6.148468,0,0,0,0,1,0,65.9,8.674844,1.386294,2.993235,1 +11,5,0,0,2,525870,0,5852.786,16.43874,0,5,1,0,0,0,0,0,0,0,0,0,0,0,4,68.1,10.3,0,65.9,0,468,1,0,1.386294,6.148468,0,0,0,0,1,0,65.9,8.674844,1.386294,,0 +11,5,0,0,3,525870,0,5852.786,17.43874,0,5,1,5.07829,13.64791,0,0,0,18.7262,0,0,0,1,0,4,68.1,10.3,0,65.9,0,468,1,0,1.386294,6.148468,0,0,0,0,1,0,65.9,8.674844,1.386294,2.929923,1 +11,5,0,0,4,525870,0,5852.786,18.43874,0,5,.1065574,0,0,0,0,0,0,0,0,0,0,0,4,68.1,10.3,0,65.9,0,468,0,0,1.386294,6.148468,0,0,0,0,1,0,65.9,8.674844,1.386294,,0 +11,5,0,0,1,525871,0,5852.786,17.21834,0,5,1,37.90524,55.24189,0,112.2195,0,93.14713,0,0,5,2,0,4,77.7,6.9,0,58.7,0,468,1,0,1.386294,6.148468,0,0,0,0,0,1,58.7,8.674844,1.386294,4.53418,1 +11,5,0,0,2,525871,0,5852.786,18.21834,0,5,1,0,57.14615,0,41.49377,0,57.14615,0,0,2,0,0,4,77.7,6.9,0,58.7,0,468,0,0,1.386294,6.148468,0,0,0,0,0,1,58.7,8.674844,1.386294,4.045612,1 +11,5,0,0,3,525871,0,5852.786,19.21834,0,5,1,12.69573,0,36.39441,0,0,49.09014,0,0,0,0,1,4,77.7,6.9,0,58.7,0,468,0,0,1.386294,6.148468,0,0,0,0,0,1,58.7,8.674844,1.386294,3.893658,1 +11,5,0,0,4,525871,0,5852.786,20.21834,0,5,1,81.62491,35.66819,22.39939,0,1021.26,1160.953,1,0,0,4,1,4,77.7,6.9,0,58.7,0,468,0,0,1.386294,6.148468,0,0,0,0,0,1,58.7,8.674844,1.386294,7.056996,1 +11,5,0,0,5,525871,0,5852.786,21.21834,0,5,1,253.9792,188.6125,39.66436,0,0,482.256,0,0,0,7,3,3,77.7,6.9,0,58.7,0,468,0,0,1.098612,6.148468,0,0,0,0,0,1,58.7,8.674844,1.098612,6.178475,1 +11,5,0,0,1,525872,0,5852.786,40.84326,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,61.2,3.4,0,62.5,0,468,0,0,1.386294,6.148468,0,0,0,0,0,0,62.5,8.674844,1.386294,,0 +11,5,0,0,2,525872,0,5852.786,41.84326,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,61.2,3.4,0,62.5,0,468,0,0,1.386294,6.148468,0,0,0,0,0,0,62.5,8.674844,1.386294,,0 +11,5,0,0,3,525872,0,5852.786,42.84326,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,61.2,3.4,0,62.5,0,468,0,0,1.386294,6.148468,0,0,0,0,0,0,62.5,8.674844,1.386294,,0 +11,5,0,0,4,525872,0,5852.786,43.84326,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,61.2,3.4,0,62.5,0,468,0,0,1.386294,6.148468,0,0,0,0,0,0,62.5,8.674844,1.386294,,0 +11,5,0,0,5,525872,0,5852.786,44.84326,0,9,1,27.68166,2.159169,0,0,0,29.84083,0,0,0,1,0,3,61.2,3.4,0,62.5,0,468,0,0,1.098612,6.148468,0,0,0,0,0,0,62.5,8.674844,1.098612,3.395878,1 +11,5,0,0,1,525929,0,4952.893,29.2731,0,10,1,0,.8844689,0,0,0,.8844689,0,0,0,0,0,1,43.6,0,1,47.7,0,56.4,0,0,0,4.032469,0,0,0,0,0,0,47.7,8.507929,0,-.1227679,1 +11,5,0,0,2,525929,0,4952.893,30.2731,0,10,1,151.8603,0,0,0,0,151.8603,0,0,0,0,14,1,43.6,0,1,47.7,0,56.4,0,0,0,4.032469,0,0,0,0,0,0,47.7,8.507929,0,5.022961,1 +11,5,0,0,3,525929,0,4952.893,31.2731,0,10,1,276.8166,0,0,0,0,276.8166,0,0,0,0,31,1,43.6,0,1,47.7,0,56.4,0,0,0,4.032469,0,0,0,0,0,0,47.7,8.507929,0,5.623355,1 +11,5,0,1,1,525939,0,6264.516,21.45106,1,13,1,45.13716,14.68828,0,0,0,59.82544,0,0,0,3,1,2,56.9,13.8,0,70.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,70.5,8.742816,.6931472,4.091431,1 +11,5,0,1,2,525939,0,6264.516,22.45106,1,13,1,22.13001,23.0521,0,0,0,45.18211,0,0,0,3,0,2,56.9,13.8,0,70.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,70.5,8.742816,.6931472,3.810701,1 +11,5,0,1,3,525939,0,6264.516,23.45106,1,13,1,26.66102,68.47228,0,0,0,95.13331,0,0,0,2,0,2,56.9,13.8,0,70.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,70.5,8.742816,.6931472,4.555279,1 +11,5,0,1,4,525939,0,6264.516,24.45106,1,13,1,70.61504,23.97494,0,33.21944,0,94.58997,0,0,3,2,0,2,56.9,13.8,0,70.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,70.5,8.742816,.6931472,4.549551,1 +11,5,0,1,5,525939,0,6264.516,25.45106,1,13,1,18.3391,68.27682,0,19.03114,0,86.61591,0,0,1,2,0,1,56.9,13.8,0,70.5,0,0,0,0,0,0,0,0,0,0,0,0,70.5,8.742816,0,4.461483,1 +11,5,0,1,1,525940,0,6264.516,22.15469,0,12,1,16.45885,0,27.49127,0,0,43.95012,0,0,0,1,1,2,72.9,20.7,0,63.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,63.1,8.742816,.6931472,3.783055,1 +11,5,0,1,2,525940,0,6264.516,23.15469,0,12,1,113.4163,0,0,0,0,113.4163,0,0,0,3,0,2,72.9,20.7,0,63.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,63.1,8.742816,.6931472,4.731065,1 +11,5,0,1,3,525940,0,6264.516,24.15469,0,12,1,8.463818,4.291155,29.92806,0,0,42.68303,0,0,0,1,0,2,72.9,20.7,0,63.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,63.1,8.742816,.6931472,3.753801,1 +11,5,0,1,4,525940,0,6264.516,25.15469,0,12,1,9.491268,0,0,0,0,9.491268,0,0,0,1,0,2,72.9,20.7,0,63.1,0,0,0,0,.6931472,0,0,0,0,0,0,0,63.1,8.742816,.6931472,2.250372,1 +17,5,25,1,1,525942,0,4114.695,38.65572,1,12,1,18.29009,6.210124,0,0,0,24.50021,0,0,0,2,0,3,76.6,3.4,0,86.4,283.35,283.35,0,0,1.098612,5.646683,0,3.258096,7.032977,0,0,0,86.4,8.322563,1.098612,3.198682,1 +17,5,25,1,2,525942,0,4114.695,39.65572,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,76.6,3.4,0,86.4,283.35,283.35,0,0,1.098612,5.646683,0,3.258096,7.032977,0,0,0,86.4,8.322563,1.098612,,0 +17,5,25,1,3,525942,0,4114.695,40.65572,1,12,1,441.4634,6.665505,43.20557,0,0,491.3345,0,0,0,4,1,3,76.6,3.4,0,86.4,283.35,283.35,0,0,1.098612,5.646683,0,3.258096,7.032977,0,0,0,86.4,8.322563,1.098612,6.197125,1 +17,5,25,1,1,525943,0,4114.695,13.98768,1,12,1,71.20374,0,0,0,0,71.20374,0,0,0,2,0,3,78.3,10.57626,0,88.9,283.35,283.35,1,1,1.098612,5.646683,0,3.258096,7.032977,0,0,0,88.9,8.322563,1.098612,4.265545,1 +17,5,25,1,2,525943,0,4114.695,14.98768,1,12,1,16.79389,0,0,0,0,16.79389,0,0,0,2,0,3,78.3,10.57626,0,88.9,283.35,283.35,1,1,1.098612,5.646683,0,3.258096,7.032977,0,0,0,88.9,8.322563,1.098612,2.821015,1 +17,5,25,1,3,525943,0,4114.695,15.98768,1,12,1,214.8084,59.1568,29.96516,0,1765.157,2069.087,2,0,0,12,1,3,78.3,10.57626,0,88.9,283.35,283.35,1,1,1.098612,5.646683,0,3.258096,7.032977,0,0,0,88.9,8.322563,1.098612,7.634863,1 +17,5,25,1,1,525944,0,4114.695,17.78508,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,71.8,3.4,0,88.6,283.35,283.35,1,1,1.098612,5.646683,0,3.258096,7.032977,0,0,0,88.6,8.322563,1.098612,,0 +17,5,25,1,2,525944,0,4114.695,18.78508,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,71.8,3.4,0,88.6,283.35,283.35,0,0,1.098612,5.646683,0,3.258096,7.032977,0,0,0,88.6,8.322563,1.098612,,0 +17,5,25,1,3,525944,0,4114.695,19.78508,1,12,1,19.86063,7.094077,0,0,0,26.9547,0,0,0,2,0,3,71.8,3.4,0,88.6,283.35,283.35,0,0,1.098612,5.646683,0,3.258096,7.032977,0,0,0,88.6,8.322563,1.098612,3.294158,1 +11,5,0,0,1,526012,0,6637.537,25.08966,1,9,1,43.35976,15.10406,0,0,499.5045,557.9683,1,0,0,3,0,3,81.9,6.9,0,53.4,0,357.64,0,0,1.098612,5.879527,0,0,0,1,0,0,53.4,8.800647,1.098612,6.324302,1 +11,5,0,0,2,526012,0,6637.537,26.08966,1,9,1,36.71409,15.83295,0,0,0,52.54704,0,0,0,4,0,4,81.9,6.9,0,53.4,0,357.64,0,0,1.386294,5.879527,0,0,0,1,0,0,53.4,8.800647,1.386294,3.961709,1 +11,5,0,0,3,526012,0,6637.537,27.08966,1,9,1,7.57257,0,0,0,0,7.57257,0,0,0,1,0,4,81.9,6.9,0,53.4,0,357.64,0,0,1.386294,5.879527,0,0,0,1,0,0,53.4,8.800647,1.386294,2.024533,1 +11,5,0,0,4,526012,0,6637.537,28.08966,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,81.9,6.9,0,53.4,0,357.64,0,0,1.386294,5.879527,0,0,0,1,0,0,53.4,8.800647,1.386294,,0 +11,5,0,0,5,526012,0,6637.537,29.08966,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,81.9,6.9,0,53.4,0,357.64,0,0,1.386294,5.879527,0,0,0,1,0,0,53.4,8.800647,1.386294,,0 +11,5,0,0,1,526013,0,6637.537,27.01437,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,77.1,10.3,0,55.7,0,357.64,0,0,1.098612,5.879527,0,0,0,1,0,0,55.7,8.800647,1.098612,,0 +11,5,0,0,2,526013,0,6637.537,28.01437,0,10,1,97.75126,16.13584,0,0,0,113.8871,0,0,0,3,0,4,77.1,10.3,0,55.7,0,357.64,0,0,1.386294,5.879527,0,0,0,1,0,0,55.7,8.800647,1.386294,4.735208,1 +11,5,0,0,3,526013,0,6637.537,29.01437,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,77.1,10.3,0,55.7,0,357.64,0,0,1.386294,5.879527,0,0,0,1,0,0,55.7,8.800647,1.386294,,0 +11,5,0,0,4,526013,0,6637.537,30.01437,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,77.1,10.3,0,55.7,0,357.64,0,0,1.386294,5.879527,0,0,0,1,0,0,55.7,8.800647,1.386294,,0 +11,5,0,0,5,526013,0,6637.537,31.01437,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,77.1,10.3,0,55.7,0,357.64,0,0,1.386294,5.879527,0,0,0,1,0,0,55.7,8.800647,1.386294,,0 +11,5,0,0,1,526014,0,6637.537,4.257358,0,9,1,14.8662,0,0,0,0,14.8662,0,0,0,2,0,3,77.40034,10.57626,0,74.1,0,357.64,1,0,1.098612,5.879527,0,0,0,0,0,0,74.1,8.800647,1.098612,2.69909,1 +11,5,0,0,2,526014,0,6637.537,5.257358,0,9,1,60.69757,2.776503,0,0,481.5971,545.0711,1,0,0,4,0,4,77.40034,10.57626,0,74.1,0,357.64,1,0,1.386294,5.879527,0,0,0,0,0,0,74.1,8.800647,1.386294,6.300916,1 +11,5,0,0,3,526014,0,6637.537,6.257358,0,9,1,97.2865,3.247791,0,0,0,100.5343,0,0,0,3,0,4,77.40034,10.57626,0,74.1,0,357.64,1,0,1.386294,5.879527,0,0,0,0,0,0,74.1,8.800647,1.386294,4.610499,1 +11,5,0,0,4,526014,0,6637.537,7.257358,0,9,1,30.22289,13.22629,0,0,0,43.44919,0,0,0,5,0,4,77.40034,10.57626,0,74.1,0,357.64,1,0,1.386294,5.879527,0,0,0,0,0,0,74.1,8.800647,1.386294,3.771592,1 +11,5,0,0,5,526014,0,6637.537,8.257358,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,74.1,0,357.64,1,0,1.386294,5.879527,0,0,0,0,0,0,74.1,8.800647,1.386294,,0 +11,5,0,0,1,526024,1,855.0947,54.22587,1,11,1,21.15954,0,43.58866,0,0,64.7482,0,0,0,1,1,1,56.4,17.2,0,46.6,0,0,0,0,0,0,0,0,0,1,0,0,46.6,6.752381,0,4.170506,1 +11,5,0,0,2,526024,1,855.0947,55.22587,1,11,1,71.37434,131.3705,0,0,0,202.7449,0,0,0,5,0,1,56.4,17.2,0,46.6,0,0,0,0,0,0,0,0,0,1,0,0,46.6,6.752381,0,5.311948,1 +11,5,0,0,3,526024,1,855.0947,56.22587,1,11,1,0,120.474,0,0,0,120.474,0,0,0,0,0,1,56.4,17.2,0,46.6,0,0,0,0,0,0,0,0,0,1,0,0,46.6,6.752381,0,4.791434,1 +18,5,25,1,1,526025,1,10821.3,36.66804,0,12,1,49.72493,0,0,0,0,49.72493,0,0,0,1,0,1,87.2,3.4,0,84.1,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,84.1,9.289364,0,3.906506,1 +18,5,25,1,2,526025,1,10821.3,37.66804,0,12,1,9.111617,0,0,0,0,9.111617,0,0,0,1,0,1,87.2,3.4,0,84.1,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,84.1,9.289364,0,2.20955,1 +18,5,25,1,3,526025,1,10821.3,38.66804,0,12,1,23.3564,0,0,0,0,23.3564,0,0,0,3,0,1,87.2,3.4,0,84.1,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,84.1,9.289364,0,3.150871,1 +11,5,0,0,1,526028,1,6674.895,29.86721,0,6,1,0,0,0,0,0,0,0,0,0,0,0,1,74.5,10.3,0,70.5,0,0,0,0,0,0,0,0,0,0,1,0,70.5,8.806258,0,,0 +11,5,0,0,2,526028,1,6674.895,30.86721,0,6,1,11.38952,0,0,0,0,11.38952,0,0,0,0,0,1,74.5,10.3,0,70.5,0,0,0,0,0,0,0,0,0,0,1,0,70.5,8.806258,0,2.432694,1 +11,5,0,0,3,526028,1,6674.895,31.86721,0,6,1,42.90657,0,0,0,0,42.90657,0,0,0,0,0,1,74.5,10.3,0,70.5,0,0,0,0,0,0,0,0,0,0,1,0,70.5,8.806258,0,3.759025,1 +11,5,0,1,1,526041,0,10967.16,30.03422,1,16,1,37.16551,77.23984,0,287.4133,0,114.4053,0,0,14,2,0,2,56.4,10.3,0,25,0,0,0,0,.6931472,0,0,0,0,0,1,0,25,9.302752,.6931472,4.739748,1 +11,5,0,1,2,526041,0,10967.16,31.03422,1,16,1,44.51583,48.64617,0,206.5168,1284.534,1377.696,1,0,10,3,0,2,56.4,10.3,0,25,0,0,0,0,.6931472,0,0,0,0,0,1,0,25,9.302752,.6931472,7.228168,1 +11,5,0,1,3,526041,0,10967.16,32.03422,1,16,1,18.09003,55.28397,0,0,0,73.374,0,0,0,3,0,2,56.4,10.3,0,25,0,0,0,0,.6931472,0,0,0,0,0,1,0,25,9.302752,.6931472,4.295569,1 +11,5,0,1,4,526041,0,10967.16,33.03422,1,16,1,66.86816,93.29807,13.22252,0,0,173.3887,0,0,0,3,1,2,56.4,10.3,0,25,0,0,0,0,.6931472,0,0,0,0,0,1,0,25,9.302752,.6931472,5.155536,1 +11,5,0,1,5,526041,0,10967.16,34.03422,1,16,1,14.06518,69.28302,0,0,0,83.3482,0,0,0,1,0,2,56.4,10.3,0,25,0,0,0,0,.6931472,0,0,0,0,0,1,0,25,9.302752,.6931472,4.423027,1 +11,5,0,1,1,526042,0,10967.16,33.41547,0,20,1,0,0,0,0,0,0,0,0,0,0,0,2,63.8,3.4,1,64.8,0,0,0,0,.6931472,0,0,0,0,1,0,0,64.8,9.302752,.6931472,,0 +11,5,0,1,2,526042,0,10967.16,34.41547,0,20,1,181.2758,44.97476,0,454.3369,0,226.2506,0,0,25,4,0,2,63.8,3.4,1,64.8,0,0,0,0,.6931472,0,0,0,0,1,0,0,64.8,9.302752,.6931472,5.421643,1 +11,5,0,1,3,526042,0,10967.16,35.41547,0,20,1,10.51746,36.3273,0,189.3143,0,46.84476,0,0,9,1,0,2,63.8,3.4,1,64.8,0,0,0,0,.6931472,0,0,0,0,1,0,0,64.8,9.302752,.6931472,3.846839,1 +11,5,0,1,4,526042,0,10967.16,36.41547,0,20,1,22.66717,98.92331,0,198.3377,301.8512,423.4416,1,0,10,1,0,2,63.8,3.4,1,64.8,0,0,0,0,.6931472,0,0,0,0,1,0,0,64.8,9.302752,.6931472,6.048416,1 +11,5,0,1,5,526042,0,10967.16,37.41547,0,20,1,60.37736,118.0618,25.72899,301.8868,0,204.1681,0,0,16,3,2,2,63.8,3.4,1,64.8,0,0,0,0,.6931472,0,0,0,0,1,0,0,64.8,9.302752,.6931472,5.318944,1 +11,5,0,1,1,526049,0,5206.349,25.51403,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,67,6.9,0,50,0,0,0,0,.6931472,0,0,0,0,1,0,0,50,8.557826,.6931472,,0 +11,5,0,1,2,526049,0,5206.349,26.51403,1,10,1,33.02961,0,0,0,0,33.02961,0,0,0,3,0,2,67,6.9,0,50,0,0,0,0,.6931472,0,0,0,0,1,0,0,50,8.557826,.6931472,3.497405,1 +11,5,0,1,3,526049,0,5206.349,27.51403,1,10,1,8.650519,0,0,0,0,8.650519,0,0,0,1,0,2,67,6.9,0,50,0,0,0,0,.6931472,0,0,0,0,1,0,0,50,8.557826,.6931472,2.157619,1 +11,5,0,1,1,526050,0,5206.349,29.77687,0,12,1,12.69573,0,34.27846,0,0,46.97419,0,0,0,0,1,2,89.9,0,0,76.1,0,0,0,0,.6931472,0,0,0,0,1,0,0,76.1,8.557826,.6931472,3.849598,1 +11,5,0,1,2,526050,0,5206.349,30.77687,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,89.9,0,0,76.1,0,0,0,0,.6931472,0,0,0,0,1,0,0,76.1,8.557826,.6931472,,0 +11,5,0,1,3,526050,0,5206.349,31.77687,0,12,1,10.38062,0,30.3218,0,0,40.70242,0,0,0,0,1,2,89.9,0,0,76.1,0,0,0,0,.6931472,0,0,0,0,1,0,0,76.1,8.557826,.6931472,3.706288,1 +11,5,0,1,1,526062,1,6674.895,21.60438,0,12,1,55.18409,8.019466,0,0,0,63.20356,0,0,0,2,0,1,61.8,17.2,0,54.5,0,0,0,0,0,0,0,0,0,0,0,0,54.5,8.806258,0,4.14636,1 +11,5,0,1,2,526062,1,6674.895,22.60438,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,61.8,17.2,0,54.5,0,0,0,0,0,0,0,0,0,0,0,0,54.5,8.806258,0,,0 +11,5,0,1,3,526062,1,6674.895,23.60438,0,12,1,11.76471,3.788927,0,0,0,15.55363,0,0,0,0,0,1,61.8,17.2,0,54.5,0,0,0,0,0,0,0,0,0,0,0,0,54.5,8.806258,0,2.744294,1 +11,5,0,1,1,526064,1,6674.895,52.34497,1,9,1,103.6818,1.946678,29.62336,0,0,135.2518,0,0,0,3,2,1,62.8,6.9,0,72.7,0,0,0,0,0,0,0,0,0,0,0,1,72.7,8.806258,0,4.907138,1 +11,5,0,1,2,526064,1,6674.895,53.34497,1,9,1,6.833713,0,0,0,0,6.833713,0,0,0,1,0,1,62.8,6.9,0,72.7,0,0,0,0,0,0,0,0,0,0,0,1,72.7,8.806258,0,1.921868,1 +11,5,0,1,3,526064,1,6674.895,54.34497,1,9,1,116.782,20.18339,27.68166,0,0,164.6471,0,0,0,5,1,1,62.8,6.9,0,72.7,0,0,0,0,0,0,0,0,0,0,0,1,72.7,8.806258,0,5.103804,1 +13,5,0,0,1,526065,1,18474.65,42.19849,0,9,1,0,0,0,0,0,0,0,0,0,0,0,8,70.7,13.8,0,45.2,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,45.2,9.824209,2.079442,,0 +13,5,0,0,2,526065,1,18474.65,43.19849,0,9,1,34.37854,0,0,0,632.7919,667.1704,1,0,0,4,0,8,70.7,13.8,0,45.2,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,45.2,9.824209,2.079442,6.503046,1 +13,5,0,0,3,526065,1,18474.65,44.19849,0,9,1,0,0,0,0,0,0,0,0,0,0,0,8,70.7,13.8,0,45.2,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,45.2,9.824209,2.079442,,0 +13,5,0,0,1,526066,1,18474.65,4.366872,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,0,47.5,450,450,1,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,47.5,9.824209,2.079442,,0 +13,5,0,0,2,526066,1,18474.65,5.366872,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,0,47.5,450,450,1,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,47.5,9.824209,2.079442,,0 +13,5,0,0,3,526066,1,18474.65,6.366872,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,0,47.5,450,450,1,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,47.5,9.824209,2.079442,,0 +13,5,0,0,1,526067,1,18474.65,13.20465,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,51.7,10.57626,0,44.4,450,450,1,1,2.079442,6.109248,1,4.564348,6.160541,1,0,0,44.4,9.824209,2.079442,,0 +13,5,0,0,2,526067,1,18474.65,14.20465,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,51.7,10.57626,0,44.4,450,450,1,1,2.079442,6.109248,1,4.564348,6.160541,1,0,0,44.4,9.824209,2.079442,,0 +13,5,0,0,3,526067,1,18474.65,15.20465,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,51.7,10.57626,0,44.4,450,450,1,1,2.079442,6.109248,1,4.564348,6.160541,1,0,0,44.4,9.824209,2.079442,,0 +13,5,0,0,1,526068,1,18474.65,9.497604,0,12,1,5.889777,0,0,0,0,5.889777,0,0,0,1,0,8,61.7,10.57626,0,70.4,450,450,1,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,70.4,9.824209,2.079442,1.773218,1 +13,5,0,0,2,526068,1,18474.65,10.4976,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,61.7,10.57626,0,70.4,450,450,1,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,70.4,9.824209,2.079442,,0 +13,5,0,0,3,526068,1,18474.65,11.4976,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,61.7,10.57626,0,70.4,450,450,1,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,70.4,9.824209,2.079442,,0 +13,5,0,0,1,526069,1,18474.65,6.976044,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,83.3,10.57626,.1442925,55.6,450,450,1,1,2.079442,6.109248,1,4.564348,6.160541,1,0,0,55.6,9.824209,2.079442,,0 +13,5,0,0,2,526069,1,18474.65,7.976044,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,83.3,10.57626,.1442925,55.6,450,450,1,1,2.079442,6.109248,1,4.564348,6.160541,1,0,0,55.6,9.824209,2.079442,,0 +13,5,0,0,3,526069,1,18474.65,8.976044,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,83.3,10.57626,.1442925,55.6,450,450,1,1,2.079442,6.109248,1,4.564348,6.160541,1,0,0,55.6,9.824209,2.079442,,0 +13,5,0,0,1,526070,1,18474.65,11.89049,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,51.7,10.57626,0,48.1,450,450,1,1,2.079442,6.109248,1,4.564348,6.160541,1,0,0,48.1,9.824209,2.079442,,0 +13,5,0,0,2,526070,1,18474.65,12.89049,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,51.7,10.57626,0,48.1,450,450,1,1,2.079442,6.109248,1,4.564348,6.160541,1,0,0,48.1,9.824209,2.079442,,0 +13,5,0,0,3,526070,1,18474.65,13.89049,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,51.7,10.57626,0,48.1,450,450,1,1,2.079442,6.109248,1,4.564348,6.160541,1,0,0,48.1,9.824209,2.079442,,0 +13,5,0,0,1,526071,1,18474.65,36.73648,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,63.3,17.2,1,61.9,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,61.9,9.824209,2.079442,,0 +13,5,0,0,2,526071,1,18474.65,37.73648,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,63.3,17.2,1,61.9,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,61.9,9.824209,2.079442,,0 +13,5,0,0,3,526071,1,18474.65,38.73648,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,63.3,17.2,1,61.9,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,61.9,9.824209,2.079442,,0 +13,5,0,1,1,526090,0,4489.503,56.81588,1,10,1,57.13077,6.931866,32.56877,0,0,96.6314,0,0,0,2,0,2,96.3,10.3,0,59.5,300,583.32,0,0,.6931472,6.368736,1,4.564348,5.755076,1,0,0,59.5,8.40972,.6931472,4.570904,1 +13,5,0,1,2,526090,0,4489.503,57.81588,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,96.3,10.3,0,59.5,300,583.32,0,0,.6931472,6.368736,1,4.564348,5.755076,1,0,0,59.5,8.40972,.6931472,,0 +13,5,0,1,3,526090,0,4489.503,58.81588,1,10,1,69.20415,0,0,0,0,69.20415,0,0,0,3,0,2,96.3,10.3,0,59.5,300,583.32,0,0,.6931472,6.368736,1,4.564348,5.755076,1,0,0,59.5,8.40972,.6931472,4.237061,1 +13,5,0,1,1,526091,0,4489.503,56.71732,0,7,1,14.81168,0,42.25138,0,0,57.06306,0,0,0,1,0,2,96.3,6.9,0,68.2,300,583.32,0,0,.6931472,6.368736,1,4.564348,5.755076,0,0,0,68.2,8.40972,.6931472,4.044157,1 +13,5,0,1,2,526091,0,4489.503,57.71732,0,7,1,0,0,0,0,0,0,0,0,0,0,0,2,96.3,6.9,0,68.2,300,583.32,0,0,.6931472,6.368736,1,4.564348,5.755076,0,0,0,68.2,8.40972,.6931472,,0 +13,5,0,1,3,526091,0,4489.503,58.71732,0,7,1,20.76125,0,0,0,693.4256,714.1868,1,0,0,2,0,2,96.3,6.9,0,68.2,300,583.32,0,0,.6931472,6.368736,1,4.564348,5.755076,0,0,0,68.2,8.40972,.6931472,6.571145,1 +13,5,0,1,1,526103,0,6771.261,35.6167,0,10,1,9.82801,0,0,0,0,9.82801,0,0,0,1,0,2,58.5,13.8,0,53.4,300,774,0,0,.6931472,6.651572,1,4.564348,5.755076,0,0,0,53.4,8.82059,.6931472,2.285236,1 +13,5,0,1,2,526103,0,6771.261,36.6167,0,10,1,201.9143,0,0,27.34731,0,201.9143,0,0,1,1,30,2,58.5,13.8,0,53.4,300,774,0,0,.6931472,6.651572,1,4.564348,5.755076,0,0,0,53.4,8.82059,.6931472,5.307843,1 +13,5,0,1,3,526103,0,6771.261,37.6167,0,10,1,50.85452,0,0,0,0,50.85452,0,0,0,5,0,2,58.5,13.8,0,53.4,300,774,0,0,.6931472,6.651572,1,4.564348,5.755076,0,0,0,53.4,8.82059,.6931472,3.928969,1 +13,5,0,1,4,526103,0,6771.261,38.6167,0,10,1,13.12828,7.32183,0,0,0,20.45011,0,0,0,2,0,2,58.5,13.8,0,53.4,300,774,0,0,.6931472,6.651572,1,4.564348,5.755076,0,0,0,53.4,8.82059,.6931472,3.017988,1 +13,5,0,1,5,526103,0,6771.261,39.6167,0,10,1,25.37212,40.40595,18.64682,0,0,84.4249,0,0,0,4,0,2,58.5,13.8,0,53.4,300,774,0,0,.6931472,6.651572,1,4.564348,5.755076,0,0,0,53.4,8.82059,.6931472,4.435863,1 +13,5,0,1,1,526106,0,6771.261,7.975359,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,78.3,10.57626,0,85.2,300,774,1,0,.6931472,6.651572,1,4.564348,5.755076,0,0,0,85.2,8.82059,.6931472,,0 +13,5,0,1,2,526106,0,6771.261,8.975359,0,10,1,56.88241,0,0,0,362.3519,419.2343,1,0,0,3,0,2,78.3,10.57626,0,85.2,300,774,1,0,.6931472,6.651572,1,4.564348,5.755076,0,0,0,85.2,8.82059,.6931472,6.03843,1 +13,5,0,1,3,526106,0,6771.261,9.975359,0,10,1,63.98499,0,0,0,0,63.98499,0,0,0,4,0,2,78.3,10.57626,0,85.2,300,774,1,0,.6931472,6.651572,1,4.564348,5.755076,0,0,0,85.2,8.82059,.6931472,4.158648,1 +13,5,0,1,4,526106,0,6771.261,10.97536,0,10,1,12.003,7.516879,0,0,0,19.51988,0,0,0,2,0,2,78.3,10.57626,0,85.2,300,774,1,0,.6931472,6.651572,1,4.564348,5.755076,0,0,0,85.2,8.82059,.6931472,2.971433,1 +13,5,0,1,5,526106,0,6771.261,11.97536,0,10,1,11.16373,6.167118,0,0,0,17.33085,0,0,0,1,0,2,78.3,10.57626,0,85.2,300,774,1,0,.6931472,6.651572,1,4.564348,5.755076,0,0,0,85.2,8.82059,.6931472,2.852488,1 +17,5,25,1,1,526133,1,125.5132,3.556468,0,8,1,9.82801,0,24.57002,0,0,34.39803,0,0,0,0,1,7,77.40034,10.57626,0,70.4,700,700,1,0,1.94591,6.55108,0,3.258096,7.937375,0,0,0,70.4,4.840347,1.94591,3.537999,1 +17,5,25,1,2,526133,1,125.5132,4.556468,0,8,1,9.11577,0,11.8505,0,0,20.96627,0,0,0,0,1,7,77.40034,10.57626,0,70.4,700,700,1,0,1.94591,6.55108,0,3.258096,7.937375,0,0,0,70.4,4.840347,1.94591,3.042915,1 +17,5,25,1,1,526134,1,125.5132,16.47912,1,8,1,8.845209,0,0,0,0,8.845209,0,0,0,0,1,7,71.8,3.4,0,62.5,700,700,1,1,1.94591,6.55108,0,3.258096,7.937375,0,0,0,62.5,4.840347,1.94591,2.179876,1 +17,5,25,1,2,526134,1,125.5132,17.47912,1,8,1,6.836828,0,0,0,0,6.836828,0,0,0,1,0,7,71.8,3.4,0,62.5,700,700,1,1,1.94591,6.55108,0,3.258096,7.937375,0,0,0,62.5,4.840347,1.94591,1.922324,1 +17,5,25,1,1,526135,1,125.5132,10.05339,1,8,1,9.82801,0,0,0,0,9.82801,0,0,0,0,1,7,76.7,10.57626,0,63,700,700,1,1,1.94591,6.55108,0,3.258096,7.937375,0,0,0,63,4.840347,1.94591,2.285236,1 +17,5,25,1,2,526135,1,125.5132,11.05339,1,8,1,21.42206,0,0,0,0,21.42206,0,0,0,2,0,7,76.7,10.57626,0,63,700,700,1,1,1.94591,6.55108,0,3.258096,7.937375,0,0,0,63,4.840347,1.94591,3.064421,1 +17,5,25,1,3,526135,1,125.5132,12.05339,1,8,1,10.42101,0,0,0,0,10.42101,0,0,0,1,0,5,76.7,10.57626,0,63,700,700,1,1,1.609438,6.55108,0,3.258096,7.937375,0,0,0,63,4.840347,1.609438,2.343824,1 +17,5,25,1,4,526135,1,125.5132,13.05339,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,76.7,10.57626,0,63,700,700,1,1,1.609438,6.55108,0,3.258096,7.937375,0,0,0,63,4.840347,1.609438,,0 +17,5,25,1,1,526136,1,125.5132,14.07529,1,8,1,24.57002,0,24.57002,0,0,49.14005,0,0,0,2,1,7,66.7,10.57626,0,74.1,700,700,1,1,1.94591,6.55108,0,3.258096,7.937375,0,0,0,74.1,4.840347,1.94591,3.894674,1 +17,5,25,1,2,526136,1,125.5132,15.07529,1,8,1,6.836828,0,0,0,0,6.836828,0,0,0,1,0,7,66.7,10.57626,0,74.1,700,700,1,1,1.94591,6.55108,0,3.258096,7.937375,0,0,0,74.1,4.840347,1.94591,1.922324,1 +17,5,25,1,3,526136,1,125.5132,16.07529,1,8,1,31.67987,0,0,0,0,31.67987,0,0,0,3,0,5,66.7,10.57626,0,74.1,700,700,1,1,1.609438,6.55108,0,3.258096,7.937375,0,0,0,74.1,4.840347,1.609438,3.455681,1 +17,5,25,1,4,526136,1,125.5132,17.07529,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,66.7,10.57626,0,74.1,700,700,1,1,1.609438,6.55108,0,3.258096,7.937375,0,0,0,74.1,4.840347,1.609438,,0 +17,5,25,1,1,526138,1,125.5132,12.3833,0,8,1,9.82801,0,0,0,0,9.82801,0,0,0,0,1,7,78.3,10.57626,0,74.1,700,700,1,0,1.94591,6.55108,0,3.258096,7.937375,0,0,0,74.1,4.840347,1.94591,2.285236,1 +17,5,25,1,2,526138,1,125.5132,13.3833,0,8,1,57.20146,0,0,0,0,57.20146,0,0,0,0,0,7,78.3,10.57626,0,74.1,700,700,1,0,1.94591,6.55108,0,3.258096,7.937375,0,0,0,74.1,4.840347,1.94591,4.046579,1 +17,5,25,1,3,526138,1,125.5132,14.3833,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,78.3,10.57626,0,74.1,700,700,1,0,1.609438,6.55108,0,3.258096,7.937375,0,0,0,74.1,4.840347,1.609438,,0 +17,5,25,1,4,526138,1,125.5132,15.3833,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,78.3,10.57626,0,74.1,700,700,1,0,1.609438,6.55108,0,3.258096,7.937375,0,0,0,74.1,4.840347,1.609438,,0 +17,5,25,1,1,526139,1,125.5132,51.436,1,8,1,9.82801,0,0,0,0,9.82801,0,0,0,1,0,7,68.6,17.2,1,64.8,700,700,0,0,1.94591,6.55108,0,3.258096,7.937375,0,1,0,64.8,4.840347,1.94591,2.285236,1 +17,5,25,1,2,526139,1,125.5132,52.436,1,8,1,56.06199,0,28.25889,0,0,84.32088,0,0,0,2,1,7,68.6,17.2,1,64.8,700,700,0,0,1.94591,6.55108,0,3.258096,7.937375,0,1,0,64.8,4.840347,1.94591,4.434629,1 +17,5,25,1,3,526139,1,125.5132,53.436,1,8,1,13.33889,0,0,0,0,13.33889,0,0,0,2,0,5,68.6,17.2,1,64.8,700,700,0,0,1.609438,6.55108,0,3.258096,7.937375,0,1,0,64.8,4.840347,1.609438,2.590684,1 +17,5,25,1,4,526139,1,125.5132,54.436,1,8,1,37.13428,5.982746,0,0,0,43.11703,0,0,0,3,0,5,68.6,17.2,1,64.8,700,700,0,0,1.609438,6.55108,0,3.258096,7.937375,0,1,0,64.8,4.840347,1.609438,3.763918,1 +17,5,25,1,1,526140,1,125.5132,17.97673,1,8,1,47.17445,1.990172,25.55283,0,0,74.71745,0,0,0,3,1,7,90.4,10.3,0,65.9,700,700,1,1,1.94591,6.55108,0,3.258096,7.937375,0,0,0,65.9,4.840347,1.94591,4.313714,1 +17,5,25,1,2,526140,1,125.5132,18.97673,1,8,1,35.5515,0,0,0,0,35.5515,0,0,0,2,0,7,90.4,10.3,0,65.9,700,700,0,0,1.94591,6.55108,0,3.258096,7.937375,0,0,0,65.9,4.840347,1.94591,3.570982,1 +17,5,25,1,3,526140,1,125.5132,19.97673,1,8,1,16.67361,0,0,0,0,16.67361,0,0,0,1,0,5,90.4,10.3,0,65.9,700,700,0,0,1.609438,6.55108,0,3.258096,7.937375,0,0,0,65.9,4.840347,1.609438,2.813828,1 +17,5,25,1,4,526140,1,125.5132,20.97673,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,90.4,10.3,0,65.9,700,700,0,0,1.609438,6.55108,0,3.258096,7.937375,0,0,0,65.9,4.840347,1.609438,,0 +11,5,0,0,1,526147,0,10997.44,47.63313,1,12,1,77.11546,16.9654,4.276782,0,0,98.35765,0,0,0,5,0,2,77.40034,10.57626,.1442925,,0,416.52,0,0,.6931472,6.031934,0,0,0,0,0,0,70.68995,9.305509,.6931472,4.58861,1 +11,5,0,0,2,526147,0,10997.44,48.63313,1,12,1,84.021,23.07577,0,0,0,107.0968,0,0,0,2,0,2,77.40034,10.57626,.1442925,,0,416.52,0,0,.6931472,6.031934,0,0,0,0,0,0,70.68995,9.305509,.6931472,4.673733,1 +11,5,0,0,3,526147,0,10997.44,49.63313,1,12,1,71.38024,34.78349,22.51691,0,0,128.6806,0,0,0,4,0,2,77.40034,10.57626,.1442925,,0,416.52,0,0,.6931472,6.031934,0,0,0,0,0,0,70.68995,9.305509,.6931472,4.857334,1 +11,5,0,0,1,526148,0,10997.44,50.57358,0,11,1,66.69446,0,47.68653,0,0,114.381,0,0,0,2,0,2,77.40034,10.57626,.1442925,,0,416.52,0,0,.6931472,6.031934,0,0,0,0,0,0,70.68995,9.305509,.6931472,4.739535,1 +11,5,0,0,2,526148,0,10997.44,51.57358,0,11,1,42.76069,0,10.53263,0,0,53.29332,0,0,0,1,0,2,77.40034,10.57626,.1442925,,0,416.52,0,0,.6931472,6.031934,0,0,0,0,0,0,70.68995,9.305509,.6931472,3.975811,1 +11,5,0,0,3,526148,0,10997.44,52.57358,0,11,1,50.40595,0,39.75304,0,0,90.159,0,0,0,2,0,2,77.40034,10.57626,.1442925,,0,416.52,0,0,.6931472,6.031934,0,0,0,0,0,0,70.68995,9.305509,.6931472,4.501575,1 +13,5,0,1,1,526154,0,7724.014,16.2245,0,16,1,162.0821,10.36818,0,0,0,172.4503,0,0,0,5,0,3,92.6,3.4,0,79.5,450,484.77,1,0,1.098612,6.183674,1,4.564348,6.160541,0,0,0,79.5,8.952219,1.098612,5.150109,1 +13,5,0,1,2,526154,0,7724.014,17.2245,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,92.6,3.4,0,79.5,450,484.77,1,0,1.098612,6.183674,1,4.564348,6.160541,0,0,0,79.5,8.952219,1.098612,,0 +13,5,0,1,3,526154,0,7724.014,18.2245,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,92.6,3.4,0,79.5,450,484.77,0,0,1.098612,6.183674,1,4.564348,6.160541,0,0,0,79.5,8.952219,1.098612,,0 +13,5,0,1,1,526156,0,7724.014,47.04449,0,20,1,46.55099,49.13246,23.2755,0,0,118.959,0,0,0,5,0,3,91.5,3.4,0,73.9,450,484.77,0,0,1.098612,6.183674,1,4.564348,6.160541,0,0,0,73.9,8.952219,1.098612,4.778779,1 +13,5,0,1,2,526156,0,7724.014,48.04449,0,20,1,4.176158,37.7183,0,0,0,41.89446,0,0,0,0,0,3,91.5,3.4,0,73.9,450,484.77,0,0,1.098612,6.183674,1,4.564348,6.160541,0,0,0,73.9,8.952219,1.098612,3.735154,1 +13,5,0,1,3,526156,0,7724.014,49.04449,0,20,1,0,0,0,0,0,0,0,0,0,0,0,3,91.5,3.4,0,73.9,450,484.77,0,0,1.098612,6.183674,1,4.564348,6.160541,0,0,0,73.9,8.952219,1.098612,,0 +13,5,0,1,1,526157,0,7724.014,43.24162,1,16,1,158.485,142.2725,33.00889,0,0,333.7664,0,0,0,8,0,3,84,10.3,0,59.1,450,484.77,0,0,1.098612,6.183674,1,4.564348,6.160541,1,0,0,59.1,8.952219,1.098612,5.810441,1 +13,5,0,1,2,526157,0,7724.014,44.24162,1,16,1,5.694761,15.8656,0,0,0,21.56036,0,0,0,1,0,3,84,10.3,0,59.1,450,484.77,0,0,1.098612,6.183674,1,4.564348,6.160541,1,0,0,59.1,8.952219,1.098612,3.070857,1 +13,5,0,1,3,526157,0,7724.014,45.24162,1,16,1,98.96194,42.18685,0,0,0,141.1488,0,0,0,4,0,3,84,10.3,0,59.1,450,484.77,0,0,1.098612,6.183674,1,4.564348,6.160541,1,0,0,59.1,8.952219,1.098612,4.949815,1 +7,5,25,1,1,526183,0,15450.08,41.71389,0,18,1,20.19352,0,0,0,0,20.19352,0,0,0,2,0,5,67.6,6.9,0,25,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,25,9.645434,1.609438,3.005362,1 +7,5,25,1,2,526183,0,15450.08,42.71389,0,18,1,13.22252,0,34.36343,0,0,47.58595,0,0,0,1,0,5,67.6,6.9,0,25,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,25,9.645434,1.609438,3.862537,1 +7,5,25,1,3,526183,0,15450.08,43.71389,0,18,1,0,0,0,0,0,0,0,0,0,0,0,5,67.6,6.9,0,25,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,25,9.645434,1.609438,,0 +7,5,25,1,1,526184,0,15450.08,14.10814,0,12,1,90.02945,0,0,0,0,90.02945,0,0,0,3,0,5,59,0,0,51.1,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,51.1,9.645434,1.609438,4.500137,1 +7,5,25,1,2,526184,0,15450.08,15.10814,0,12,1,9.82244,0,0,0,0,9.82244,0,0,0,1,0,5,59,0,0,51.1,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,51.1,9.645434,1.609438,2.28467,1 +7,5,25,1,3,526184,0,15450.08,16.10814,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,59,0,0,51.1,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,51.1,9.645434,1.609438,,0 +7,5,25,1,1,526185,0,15450.08,17.87269,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,64.9,3.4,0,68.2,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,68.2,9.645434,1.609438,,0 +7,5,25,1,2,526185,0,15450.08,18.87269,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,64.9,3.4,0,68.2,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,68.2,9.645434,1.609438,,0 +7,5,25,1,3,526185,0,15450.08,19.87269,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,64.9,3.4,0,68.2,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,68.2,9.645434,1.609438,,0 +7,5,25,1,1,526186,0,15450.08,41.69747,1,12,1,12.62095,0,36.86159,0,0,49.48254,0,0,0,0,1,5,67,6.9,1,54.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.645434,1.609438,3.90162,1 +7,5,25,1,2,526186,0,15450.08,42.69747,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,67,6.9,1,54.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.645434,1.609438,,0 +7,5,25,1,3,526186,0,15450.08,43.69747,1,12,1,10.2916,0,17.15266,0,0,27.44425,0,0,0,0,1,5,67,6.9,1,54.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.645434,1.609438,3.312157,1 +7,5,25,1,1,526187,0,15450.08,16.21082,0,12,1,0,0,0,334.4552,0,0,0,0,32,0,0,5,41.5,3.4,0,72.5,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,72.5,9.645434,1.609438,,0 +7,5,25,1,2,526187,0,15450.08,17.21082,0,12,1,3.777862,0,0,28.33396,0,3.777862,0,0,3,1,0,5,41.5,3.4,0,72.5,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,72.5,9.645434,1.609438,1.329158,1 +7,5,25,1,3,526187,0,15450.08,18.21082,0,12,1,66.89537,0,0,0,0,66.89537,0,0,0,1,0,5,41.5,3.4,0,72.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,72.5,9.645434,1.609438,4.20313,1 +11,5,0,1,1,526188,0,11392.73,34.33265,0,12,1,122.408,35.48032,0,0,177.7402,335.6284,1,0,0,5,0,4,75,20.7,0,60.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,60.2,9.340818,1.386294,5.816005,1 +11,5,0,1,2,526188,0,11392.73,35.33265,0,12,1,30.75171,9.335611,0,0,0,40.08732,0,0,0,1,1,4,75,20.7,0,60.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,60.2,9.340818,1.386294,3.69106,1 +11,5,0,1,3,526188,0,11392.73,36.33265,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,75,20.7,0,60.2,0,0,0,0,1.386294,0,0,0,0,1,0,0,60.2,9.340818,1.386294,,0 +11,5,0,1,1,526189,0,11392.73,10.00411,1,12,1,32.16251,1.692763,28.61617,0,0,62.47144,0,0,0,2,1,4,83.3,10.57626,0,63,0,0,1,1,1.386294,0,0,0,0,1,0,0,63,9.340818,1.386294,4.134709,1 +11,5,0,1,2,526189,0,11392.73,11.00411,1,12,1,74.03189,16.54518,0,0,0,90.57707,0,0,0,3,0,4,83.3,10.57626,0,63,0,0,1,1,1.386294,0,0,0,0,1,0,0,63,9.340818,1.386294,4.506201,1 +11,5,0,1,3,526189,0,11392.73,12.00411,1,12,1,16.26298,8.927336,22.83737,0,0,48.02768,0,0,0,1,1,4,83.3,10.57626,0,63,0,0,1,1,1.386294,0,0,0,0,1,0,0,63,9.340818,1.386294,3.871778,1 +11,5,0,1,1,526190,0,11392.73,31.30185,1,12,1,63.90182,26.3267,55.01481,0,0,145.2433,0,0,0,5,1,4,71.8,13.8,0,58,0,0,0,0,1.386294,0,0,0,0,0,0,0,58,9.340818,1.386294,4.978411,1 +11,5,0,1,2,526190,0,11392.73,32.30185,1,12,1,5.694761,11.69704,0,0,0,17.3918,0,0,0,1,0,4,71.8,13.8,0,58,0,0,0,0,1.386294,0,0,0,0,0,0,0,58,9.340818,1.386294,2.855999,1 +11,5,0,1,3,526190,0,11392.73,33.30185,1,12,1,274.7405,21.25952,0,0,0,296,0,0,0,13,2,4,71.8,13.8,0,58,0,0,0,0,1.386294,0,0,0,0,0,0,0,58,9.340818,1.386294,5.69036,1 +11,5,0,1,1,526234,0,10963.64,27.54004,0,15,1,25.43641,25.86035,30.92269,0,0,82.21945,0,0,0,2,1,4,87.2,13.8,1,47.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,47.7,9.30243,1.386294,4.409392,1 +11,5,0,1,2,526234,0,10963.64,28.54004,0,15,1,23.0521,24.31996,0,0,0,47.37206,0,0,0,3,0,4,87.2,13.8,1,47.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,47.7,9.30243,1.386294,3.858033,1 +11,5,0,1,3,526234,0,10963.64,29.54004,0,15,1,6.347863,5.713077,0,0,0,12.06094,0,0,0,1,0,4,87.2,13.8,1,47.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,47.7,9.30243,1.386294,2.489972,1 +11,5,0,1,4,526234,0,10963.64,30.54004,0,15,1,22.01974,70.23538,0,0,0,92.25513,0,0,0,2,0,4,87.2,13.8,1,47.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,47.7,9.30243,1.386294,4.524558,1 +11,5,0,1,5,526234,0,10963.64,31.54004,0,15,1,103.8062,19.72318,27.20761,0,628.0277,778.7647,1,0,0,5,1,5,87.2,13.8,1,47.7,0,0,0,0,1.609438,0,0,0,0,1,0,0,47.7,9.30243,1.609438,6.657709,1 +16,5,95,0,1,526235,1,4387.609,13.25667,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,71.7,10.57626,0,77.8,857.1,0,1,1,1.609438,0,0,4.564348,6.804848,1,0,0,77.8,8.386767,1.609438,,0 +16,5,95,0,2,526235,1,4387.609,14.25667,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,71.7,10.57626,0,77.8,857.1,0,1,1,1.609438,0,0,4.564348,6.804848,1,0,0,77.8,8.386767,1.609438,,0 +16,5,95,0,3,526235,1,4387.609,15.25667,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,71.7,10.57626,0,77.8,857.1,0,1,1,1.609438,0,0,4.564348,6.804848,1,0,0,77.8,8.386767,1.609438,,0 +16,5,95,0,1,526236,1,4387.609,13.25667,1,8,1,8.081667,0,0,0,0,8.081667,0,0,0,0,0,5,71.7,10.57626,0,77.8,857.1,0,1,1,1.609438,0,0,4.564348,6.804848,1,0,0,77.8,8.386767,1.609438,2.089598,1 +16,5,95,0,2,526236,1,4387.609,14.25667,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,71.7,10.57626,0,77.8,857.1,0,1,1,1.609438,0,0,4.564348,6.804848,1,0,0,77.8,8.386767,1.609438,,0 +16,5,95,0,3,526236,1,4387.609,15.25667,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,71.7,10.57626,0,77.8,857.1,0,1,1,1.609438,0,0,4.564348,6.804848,1,0,0,77.8,8.386767,1.609438,,0 +16,5,95,0,1,526237,1,4387.609,11.09103,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,71.7,10.57626,0,77.8,857.1,0,1,0,1.609438,0,0,4.564348,6.804848,1,0,0,77.8,8.386767,1.609438,,0 +16,5,95,0,2,526237,1,4387.609,12.09103,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,71.7,10.57626,0,77.8,857.1,0,1,0,1.609438,0,0,4.564348,6.804848,1,0,0,77.8,8.386767,1.609438,,0 +16,5,95,0,3,526237,1,4387.609,13.09103,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,71.7,10.57626,0,77.8,857.1,0,1,0,1.609438,0,0,4.564348,6.804848,1,0,0,77.8,8.386767,1.609438,,0 +16,5,95,0,1,526238,1,4387.609,32.10404,0,7,1,0,0,0,0,0,0,0,0,0,0,0,5,70.7,10.3,0,69.3,857.1,0,0,0,1.609438,0,0,4.564348,6.804848,0,0,0,69.3,8.386767,1.609438,,0 +16,5,95,0,2,526238,1,4387.609,33.10404,0,7,1,0,0,0,0,0,0,0,0,0,0,0,5,70.7,10.3,0,69.3,857.1,0,0,0,1.609438,0,0,4.564348,6.804848,0,0,0,69.3,8.386767,1.609438,,0 +16,5,95,0,3,526238,1,4387.609,34.10404,0,7,1,0,0,0,0,0,0,0,0,0,0,0,5,70.7,10.3,0,69.3,857.1,0,0,0,1.609438,0,0,4.564348,6.804848,0,0,0,69.3,8.386767,1.609438,,0 +16,5,95,0,1,526239,1,4387.609,28.63518,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,67,3.4,0,67,857.1,0,0,0,1.609438,0,0,4.564348,6.804848,1,0,0,67,8.386767,1.609438,,0 +16,5,95,0,2,526239,1,4387.609,29.63518,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,67,3.4,0,67,857.1,0,0,0,1.609438,0,0,4.564348,6.804848,1,0,0,67,8.386767,1.609438,,0 +16,5,95,0,3,526239,1,4387.609,30.63518,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,67,3.4,0,67,857.1,0,0,0,1.609438,0,0,4.564348,6.804848,1,0,0,67,8.386767,1.609438,,0 +11,5,0,0,1,526244,1,3942.652,23.18138,0,8,1,10.63377,7.022543,31.90132,0,0,49.55764,0,0,0,0,1,4,77.1,0,0,75,0,0,0,0,1.386294,0,0,0,0,0,0,0,75,8.279862,1.386294,3.903136,1 +11,5,0,0,2,526244,1,3942.652,24.18138,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,77.1,0,0,75,0,0,0,0,1.609438,0,0,0,0,0,0,0,75,8.279862,1.609438,,0 +11,5,0,0,3,526244,1,3942.652,25.18138,0,8,1,21.95122,1.30662,29.61672,0,0,52.87457,0,0,0,2,1,6,77.1,0,0,75,0,0,0,0,1.791759,0,0,0,0,0,0,0,75,8.279862,1.791759,3.967922,1 +11,5,0,0,1,526245,1,3942.652,21.49487,1,13,1,35.68694,12.85836,27.64781,0,384.9426,461.1357,1,0,0,8,1,4,72.3,20.7,0,80.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,80.7,8.279862,1.386294,6.133692,1 +11,5,0,0,2,526245,1,3942.652,22.49487,1,13,1,27.09924,18.31679,0,0,1227.481,1272.897,1,0,0,1,0,5,72.3,20.7,0,80.7,0,0,0,0,1.609438,0,0,0,0,1,0,0,80.7,8.279862,1.609438,7.149051,1 +11,5,0,0,3,526245,1,3942.652,23.49487,1,13,1,43.90244,2.264808,31.35888,0,0,77.52613,0,0,0,3,1,6,72.3,20.7,0,80.7,0,0,0,0,1.791759,0,0,0,0,1,0,0,80.7,8.279862,1.791759,4.350615,1 +16,5,95,1,1,526252,0,9756.012,13.90281,0,9,1,161.2983,17.43806,0,0,0,178.7364,0,0,0,16,1,4,68.3,10.57626,1,14.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,1,14.8,9.185741,1.386294,5.185912,1 +16,5,95,1,2,526252,0,9756.012,14.90281,0,9,1,213.6301,33.57045,0,0,657.1822,904.3828,1,0,0,19,1,4,68.3,10.57626,1,14.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,1,14.8,9.185741,1.386294,6.807253,1 +16,5,95,1,3,526252,0,9756.012,15.90281,0,9,1,42.49054,20.45856,0,0,0,62.9491,0,0,0,14,0,4,68.3,10.57626,1,14.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,1,14.8,9.185741,1.386294,4.142326,1 +16,5,95,1,4,526252,0,9756.012,16.90281,0,9,1,100.4911,20.09067,0,0,0,120.5818,0,0,0,17,1,4,68.3,10.57626,1,14.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,1,14.8,9.185741,1.386294,4.792328,1 +16,5,95,1,5,526252,0,9756.012,17.90281,0,9,1,58.14751,11.76672,0,0,0,69.91424,0,0,0,7,0,4,68.3,10.57626,1,14.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,1,14.8,9.185741,1.386294,4.247269,1 +16,5,95,1,1,526253,0,9756.012,15.00342,0,9,1,46.08523,4.672944,27.75025,0,0,78.50842,0,0,0,4,1,4,87.2,3.4,1,64.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,64.8,9.185741,1.386294,4.363206,1 +16,5,95,1,2,526253,0,9756.012,16.00342,0,9,1,74.34603,28.66452,0,0,0,103.0106,0,0,0,9,1,4,87.2,3.4,1,64.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,64.8,9.185741,1.386294,4.634831,1 +16,5,95,1,3,526253,0,9756.012,17.00342,0,9,1,55.11148,5.919226,0,0,0,61.03071,0,0,0,3,1,4,87.2,3.4,1,64.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,64.8,9.185741,1.386294,4.111377,1 +16,5,95,1,4,526253,0,9756.012,18.00342,0,9,1,18.13374,6.229694,0,0,0,24.36343,0,0,0,2,0,4,87.2,3.4,1,64.8,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,64.8,9.185741,1.386294,3.193083,1 +16,5,95,1,5,526253,0,9756.012,19.00342,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,87.2,3.4,1,64.8,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,64.8,9.185741,1.386294,,0 +16,5,95,1,1,526254,0,9756.012,38.89117,0,5,1,107.0367,39.90585,32.70565,0,0,179.6482,0,0,0,9,1,4,62.2,24.1,1,38.6,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,38.6,9.185741,1.386294,5.191,1 +16,5,95,1,2,526254,0,9756.012,39.89117,0,5,1,19.73382,44.94722,0,0,0,64.68105,0,0,0,3,0,4,62.2,24.1,1,38.6,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,38.6,9.185741,1.386294,4.169468,1 +16,5,95,1,3,526254,0,9756.012,40.89117,0,5,1,26.0833,34.3963,0,0,0,60.4796,0,0,0,2,1,4,62.2,24.1,1,38.6,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,38.6,9.185741,1.386294,4.102306,1 +16,5,95,1,4,526254,0,9756.012,41.89117,0,5,1,97.09105,32.50472,27.57839,0,132.603,289.7771,1,0,0,3,1,4,62.2,24.1,1,38.6,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,38.6,9.185741,1.386294,5.669112,1 +16,5,95,1,5,526254,0,9756.012,42.89117,0,5,1,56.26072,89.7187,0,0,0,145.9794,0,0,0,7,1,4,62.2,24.1,1,38.6,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,38.6,9.185741,1.386294,4.983466,1 +16,5,95,1,1,526255,0,9756.012,31.74812,1,9,1,217.5421,252.111,31.71457,0,296.333,797.7007,1,0,0,21,2,4,64.4,27.6,1,28.4,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,1,28.4,9.185741,1.386294,6.681734,1 +16,5,95,1,2,526255,0,9756.012,32.74812,1,9,1,226.2506,222.9371,30.74805,0,1849.931,2329.867,1,0,0,23,1,4,64.4,27.6,1,28.4,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,1,28.4,9.185741,1.386294,7.753566,1 +16,5,95,1,3,526255,0,9756.012,33.74812,1,9,1,198.1489,207.2444,29.44888,0,0,434.8422,0,0,0,21,1,4,64.4,27.6,1,28.4,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,1,28.4,9.185741,1.386294,6.074983,1 +16,5,95,1,4,526255,0,9756.012,34.74812,1,9,1,216.8493,245.5799,22.66717,0,893.4643,1378.561,2,0,0,27,1,4,64.4,27.6,1,28.4,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,1,28.4,9.185741,1.386294,7.228795,1 +16,5,95,1,5,526255,0,9756.012,35.74812,1,9,1,271.3551,287.7015,45.28302,0,1209.262,1813.602,1,0,0,29,1,4,64.4,27.6,1,28.4,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,1,28.4,9.185741,1.386294,7.50307,1 +15,5,95,1,1,526256,0,10335.89,34.38741,1,13,1,108.76,16.17012,0,0,0,124.9302,0,0,0,12,0,4,55.9,31,1,5.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,5.7,9.243475,1.386294,4.827755,1 +15,5,95,1,2,526256,0,10335.89,35.38741,1,13,1,24.6773,2.961276,0,0,0,27.63857,0,0,0,5,0,4,55.9,31,1,5.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,5.7,9.243475,1.386294,3.319212,1 +15,5,95,1,3,526256,0,10335.89,36.38741,1,13,1,63.66782,6.49827,0,0,0,70.16609,0,0,0,8,0,4,55.9,31,1,5.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,5.7,9.243475,1.386294,4.250865,1 +15,5,95,1,1,526257,0,10335.89,9.952087,1,13,1,30.04655,10.97757,14.25307,0,0,55.27719,0,0,0,4,0,4,73.3,10.57626,0,22.2,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,1,0,22.2,9.243475,1.386294,4.012361,1 +15,5,95,1,2,526257,0,10335.89,10.95209,1,13,1,34.54821,.7403189,9.870919,0,0,45.15945,0,0,0,4,0,4,73.3,10.57626,0,22.2,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,1,0,22.2,9.243475,1.386294,3.8102,1 +15,5,95,1,3,526257,0,10335.89,11.95209,1,13,1,20.41522,3.439446,11.01384,0,0,34.86851,0,0,0,2,0,4,73.3,10.57626,0,22.2,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,1,0,22.2,9.243475,1.386294,3.551584,1 +15,5,95,1,1,526258,0,10335.89,35.44695,0,12,1,45.70461,1.248413,0,0,0,46.95303,0,0,0,2,0,4,79.3,0,0,87.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,87.5,9.243475,1.386294,3.849148,1 +15,5,95,1,2,526258,0,10335.89,36.44695,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.3,0,0,87.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,87.5,9.243475,1.386294,,0 +15,5,95,1,3,526258,0,10335.89,37.44695,0,12,1,17.30104,2.595156,0,0,0,19.89619,0,0,0,1,0,4,79.3,0,0,87.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,87.5,9.243475,1.386294,2.990529,1 +15,5,95,1,1,526259,0,10335.89,9.040383,0,13,1,30.04655,12.61109,0,0,0,42.65764,0,0,0,5,0,4,75,10.57626,0,14.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,14.8,9.243475,1.386294,3.753206,1 +15,5,95,1,2,526259,0,10335.89,10.04038,0,13,1,33.02961,1.42369,0,0,0,34.4533,0,0,0,4,0,4,75,10.57626,0,14.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,14.8,9.243475,1.386294,3.539605,1 +15,5,95,1,3,526259,0,10335.89,11.04038,0,13,1,26.98962,6.768166,10.391,0,0,44.14879,0,0,0,3,0,4,75,10.57626,0,14.8,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,14.8,9.243475,1.386294,3.787565,1 +11,5,0,1,1,526260,0,13109.68,9.470226,0,11,1,14.8662,9.435084,0,0,0,24.30129,0,0,0,3,0,4,93.3,10.57626,0,85.2,0,520.26,1,0,1.386294,6.254329,0,0,0,0,0,0,85.2,9.481182,1.386294,3.190529,1 +11,5,0,1,2,526260,0,13109.68,10.47023,0,11,1,5.507113,1.032584,0,0,0,6.539697,0,0,0,1,0,4,93.3,10.57626,0,85.2,0,520.26,1,0,1.386294,6.254329,0,0,0,0,0,0,85.2,9.481182,1.386294,1.877891,1 +11,5,0,1,3,526260,0,13109.68,11.47023,0,11,1,43.33193,7.328566,0,0,0,50.6605,0,0,0,5,0,4,93.3,10.57626,0,85.2,0,520.26,1,0,1.386294,6.254329,0,0,0,0,0,0,85.2,9.481182,1.386294,3.925146,1 +11,5,0,1,4,526260,0,13109.68,12.47023,0,11,1,116.3581,13.22252,0,0,0,129.5807,0,0,0,7,0,4,93.3,10.57626,0,85.2,0,520.26,1,0,1.386294,6.254329,0,0,0,0,0,0,85.2,9.481182,1.386294,4.864304,1 +11,5,0,1,5,526260,0,13109.68,13.47023,0,11,1,44.59691,6.758148,0,0,0,51.35506,0,0,0,4,0,4,93.3,10.57626,0,85.2,0,520.26,1,0,1.386294,6.254329,0,0,0,0,0,0,85.2,9.481182,1.386294,3.938763,1 +11,5,0,1,1,526261,0,13109.68,17.88912,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,85.1,0,0,62.5,0,520.26,1,1,1.386294,6.254329,0,0,0,0,0,0,62.5,9.481182,1.386294,,0 +11,5,0,1,2,526261,0,13109.68,18.88912,1,11,1,55.07113,14.8279,0,0,0,69.89903,0,0,0,5,1,4,85.1,0,0,62.5,0,520.26,0,0,1.386294,6.254329,0,0,0,0,0,0,62.5,9.481182,1.386294,4.247052,1 +11,5,0,1,3,526261,0,13109.68,19.88912,1,11,1,0,1.787968,0,0,0,1.787968,0,0,0,0,0,4,85.1,0,0,62.5,0,520.26,0,0,1.386294,6.254329,0,0,0,0,0,0,62.5,9.481182,1.386294,.5810798,1 +11,5,0,1,4,526261,0,13109.68,20.88912,1,11,1,21.53381,8.745749,0,0,0,30.27956,0,0,0,3,0,4,85.1,0,0,62.5,0,520.26,0,0,1.386294,6.254329,0,0,0,0,0,0,62.5,9.481182,1.386294,3.410473,1 +11,5,0,1,5,526261,0,13109.68,21.88912,1,11,1,191.7667,57.80789,0,0,688.1647,937.7393,1,0,0,10,0,4,85.1,0,0,62.5,0,520.26,0,0,1.386294,6.254329,0,0,0,0,0,0,62.5,9.481182,1.386294,6.843472,1 +11,5,0,1,1,526262,0,13109.68,52.63244,0,14,1,111.7443,25.91675,0,0,0,137.6611,0,0,0,9,0,4,57.4,34.5,0,48.9,0,520.26,0,0,1.386294,6.254329,0,0,0,1,0,0,48.9,9.481182,1.386294,4.924795,1 +11,5,0,1,2,526262,0,13109.68,53.63244,0,14,1,336.8518,55.63561,0,0,0,392.4874,0,0,0,13,0,4,57.4,34.5,0,48.9,0,520.26,0,0,1.386294,6.254329,0,0,0,1,0,0,48.9,9.481182,1.386294,5.972504,1 +11,5,0,1,3,526262,0,13109.68,54.63244,0,14,1,116.5334,40.05048,31.97308,0,320.1515,508.7085,1,0,0,22,0,4,57.4,34.5,0,48.9,0,520.26,0,0,1.386294,6.254329,0,0,0,1,0,0,48.9,9.481182,1.386294,6.231875,1 +11,5,0,1,4,526262,0,13109.68,55.63244,0,14,1,47.97884,52.21761,17.37816,62.33472,3042.312,3159.887,3,0,4,14,0,4,57.4,34.5,0,48.9,0,520.26,0,0,1.386294,6.254329,0,0,0,1,0,0,48.9,9.481182,1.386294,8.058291,1 +11,5,0,1,5,526262,0,13109.68,56.63244,0,14,1,86.10635,57.33105,0,0,0,143.4374,0,0,0,17,0,4,57.4,34.5,0,48.9,0,520.26,0,0,1.386294,6.254329,0,0,0,1,0,0,48.9,9.481182,1.386294,4.965899,1 +11,5,0,1,1,526263,0,13109.68,46.33812,1,11,1,61.94252,0,34.98513,0,0,96.92765,0,0,0,2,0,4,71.8,10.3,0,78.4,0,520.26,0,0,1.386294,6.254329,0,0,0,0,0,0,78.4,9.481182,1.386294,4.573965,1 +11,5,0,1,2,526263,0,13109.68,47.33812,1,11,1,13.76778,0,41.30335,0,0,55.07113,0,0,0,1,0,4,71.8,10.3,0,78.4,0,520.26,0,0,1.386294,6.254329,0,0,0,0,0,0,78.4,9.481182,1.386294,4.008626,1 +11,5,0,1,3,526263,0,13109.68,48.33812,1,11,1,14.72444,1.851073,25.20404,0,0,41.77955,0,0,0,1,0,4,71.8,10.3,0,78.4,0,520.26,0,0,1.386294,6.254329,0,0,0,0,0,0,78.4,9.481182,1.386294,3.732407,1 +11,5,0,1,4,526263,0,13109.68,49.33812,1,11,1,18.88931,0,0,0,0,18.88931,0,0,0,1,0,4,71.8,10.3,0,78.4,0,520.26,0,0,1.386294,6.254329,0,0,0,0,0,0,78.4,9.481182,1.386294,2.938596,1 +11,5,0,1,5,526263,0,13109.68,50.33812,1,11,1,45.45454,18.83705,27.1012,0,1542.367,1633.76,1,0,0,5,1,4,71.8,10.3,0,78.4,0,520.26,0,0,1.386294,6.254329,0,0,0,0,0,0,78.4,9.481182,1.386294,7.398639,1 +6,5,25,0,1,526264,0,10649.26,39.02259,1,16,1,25.8441,24.19758,0,0,0,50.04168,0,0,0,2,0,1,81.9,10.3,0,86.4,700,700,0,0,0,6.55108,0,3.258096,7.937375,0,0,0,86.4,9.273339,0,3.912856,1 +6,5,25,0,2,526264,0,10649.26,40.02259,1,16,1,0,12.01425,0,0,0,12.01425,0,0,0,0,0,1,81.9,10.3,0,86.4,700,700,0,0,0,6.55108,0,3.258096,7.937375,0,0,0,86.4,9.273339,0,2.486094,1 +6,5,25,0,3,526264,0,10649.26,41.02259,1,16,1,100.1353,17.79093,38.34574,0,0,156.272,0,0,0,8,0,1,81.9,10.3,0,86.4,700,700,0,0,0,6.55108,0,3.258096,7.937375,0,0,0,86.4,9.273339,0,5.051598,1 +17,5,25,1,1,526283,0,11462.76,32.33128,1,8,1,60.08424,5.257681,42.12091,0,1013.801,1121.264,1,0,0,3,1,3,58.5,20.7,1,46.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,46.6,9.346946,1.098612,7.022212,1 +17,5,25,1,2,526283,0,11462.76,33.33128,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,58.5,20.7,1,46.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,46.6,9.346946,1.098612,,0 +17,5,25,1,3,526283,0,11462.76,34.33128,1,8,1,49.64241,0,0,0,0,49.64241,0,0,0,1,0,3,58.5,20.7,1,46.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,46.6,9.346946,1.098612,3.904845,1 +17,5,25,1,4,526283,0,11462.76,35.33128,1,8,1,0,0,0,0,364.1859,364.1859,1,0,0,0,0,3,58.5,20.7,1,46.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,46.6,9.346946,1.098612,5.897665,1 +17,5,25,1,5,526283,0,11462.76,36.33128,1,8,1,48.71355,0,0,0,0,48.71355,0,0,0,1,0,3,58.5,20.7,1,46.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,46.6,9.346946,1.098612,3.885957,1 +17,5,25,1,1,526284,0,11462.76,13.24298,1,8,1,9.910803,0,32.21011,0,0,42.12091,0,0,0,0,1,3,86.7,10.57626,0,63,750,750,1,1,1.098612,6.620073,0,3.258096,8.006368,0,1,0,63,9.346946,1.098612,3.740544,1 +17,5,25,1,2,526284,0,11462.76,14.24298,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,10.57626,0,63,750,750,1,1,1.098612,6.620073,0,3.258096,8.006368,0,1,0,63,9.346946,1.098612,,0 +17,5,25,1,3,526284,0,11462.76,15.24298,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,10.57626,0,63,750,750,1,1,1.098612,6.620073,0,3.258096,8.006368,0,1,0,63,9.346946,1.098612,,0 +17,5,25,1,4,526284,0,11462.76,16.24298,1,8,1,18.88931,0,0,0,0,18.88931,0,0,0,1,0,3,86.7,10.57626,0,63,750,750,1,1,1.098612,6.620073,0,3.258096,8.006368,0,1,0,63,9.346946,1.098612,2.938596,1 +17,5,25,1,5,526284,0,11462.76,17.24298,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,10.57626,0,63,750,750,1,1,1.098612,6.620073,0,3.258096,8.006368,0,1,0,63,9.346946,1.098612,,0 +17,5,25,1,1,526285,0,11462.76,12.32033,0,8,1,12.3885,0,29.73241,0,0,42.12091,0,0,0,0,1,3,88.3,10.57626,1,66.7,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,1,0,66.7,9.346946,1.098612,3.740544,1 +17,5,25,1,2,526285,0,11462.76,13.32033,0,8,1,31.09225,0,0,0,0,31.09225,0,0,0,1,0,3,88.3,10.57626,1,66.7,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,1,0,66.7,9.346946,1.098612,3.436959,1 +17,5,25,1,3,526285,0,11462.76,14.32033,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,10.57626,1,66.7,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,1,0,66.7,9.346946,1.098612,,0 +17,5,25,1,4,526285,0,11462.76,15.32033,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,10.57626,1,66.7,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,1,0,66.7,9.346946,1.098612,,0 +17,5,25,1,5,526285,0,11462.76,16.32033,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,10.57626,1,66.7,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,1,0,66.7,9.346946,1.098612,,0 +19,5,25,1,1,526289,0,5337.583,22.68309,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,85.6,6.9,0,76.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,76.1,8.582716,.6931472,,0 +19,5,25,1,2,526289,0,5337.583,23.68309,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,85.6,6.9,0,76.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,76.1,8.582716,.6931472,,0 +19,5,25,1,3,526289,0,5337.583,24.68309,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,85.6,6.9,0,76.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,76.1,8.582716,.6931472,,0 +19,5,25,1,4,526289,0,5337.583,25.68309,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,85.6,6.9,0,76.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,76.1,8.582716,.6931472,,0 +19,5,25,1,5,526289,0,5337.583,26.68309,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,85.6,6.9,0,76.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,76.1,8.582716,.6931472,,0 +19,5,25,1,1,526290,0,5337.583,21.60164,1,13,1,0,0,0,0,0,0,0,0,0,0,0,2,91,6.9,0,85.2,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,85.2,8.582716,.6931472,,0 +19,5,25,1,2,526290,0,5337.583,22.60164,1,13,1,0,0,0,0,0,0,0,0,0,0,0,2,91,6.9,0,85.2,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,85.2,8.582716,.6931472,,0 +19,5,25,1,3,526290,0,5337.583,23.60164,1,13,1,28.60749,0,0,0,0,28.60749,0,0,0,1,0,2,91,6.9,0,85.2,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,85.2,8.582716,.6931472,3.353668,1 +19,5,25,1,4,526290,0,5337.583,24.60164,1,13,1,0,0,0,0,0,0,0,0,0,0,0,2,91,6.9,0,85.2,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,85.2,8.582716,.6931472,,0 +19,5,25,1,5,526290,0,5337.583,25.60164,1,13,1,0,0,0,0,0,0,0,0,0,0,0,2,91,6.9,0,85.2,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,85.2,8.582716,.6931472,,0 +14,5,95,0,1,526297,1,51.71531,18.83368,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,79.3,10.3,0,64.3,140.6,140.6,0,0,1.609438,4.945919,0,4.564348,4.997212,1,0,0,64.3,3.964906,1.609438,,0 +14,5,95,0,2,526297,1,51.71531,19.83368,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,79.3,10.3,0,64.3,140.6,140.6,0,0,1.791759,4.945919,0,4.564348,4.997212,1,0,0,64.3,3.964906,1.791759,,0 +14,5,95,0,3,526297,1,51.71531,20.83368,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,79.3,10.3,0,64.3,140.6,140.6,0,0,1.791759,4.945919,0,4.564348,4.997212,1,0,0,64.3,3.964906,1.791759,,0 +14,5,95,1,1,526298,1,51.71531,13.48392,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,53.3,10.57626,0,81.5,140.6,140.6,1,1,1.609438,4.945919,0,4.564348,4.997212,0,1,0,81.5,3.964906,1.609438,,0 +14,5,95,1,2,526298,1,51.71531,14.48392,1,8,1,0,0,0,0,0,0,0,0,0,0,0,6,53.3,10.57626,0,81.5,140.6,140.6,1,1,1.791759,4.945919,0,4.564348,4.997212,0,1,0,81.5,3.964906,1.791759,,0 +14,5,95,1,3,526298,1,51.71531,15.48392,1,8,1,0,0,0,0,0,0,0,0,0,0,0,6,53.3,10.57626,0,81.5,140.6,140.6,1,1,1.791759,4.945919,0,4.564348,4.997212,0,1,0,81.5,3.964906,1.791759,,0 +14,5,95,1,1,526299,1,51.71531,17.859,1,8,1,0,0,0,0,0,0,1,1,0,0,0,5,49.5,0,1,50,140.6,140.6,1,1,1.609438,4.945919,0,4.564348,4.997212,1,0,0,50,3.964906,1.609438,,0 +14,5,95,1,2,526299,1,51.71531,18.859,1,8,1,58.39028,0,0,0,0,58.39028,0,0,0,3,0,6,49.5,0,1,50,140.6,140.6,0,0,1.791759,4.945919,0,4.564348,4.997212,1,0,0,50,3.964906,1.791759,4.06715,1 +14,5,95,1,3,526299,1,51.71531,19.859,1,8,1,44.9827,0,2.768166,0,1270.588,1318.339,1,1,0,3,0,6,49.5,0,1,50,140.6,140.6,0,0,1.791759,4.945919,0,4.564348,4.997212,1,0,0,50,3.964906,1.791759,7.184128,1 +14,5,95,1,1,526300,1,51.71531,37.13073,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,53.7,10.3,1,64.8,140.6,140.6,0,0,1.609438,4.945919,0,4.564348,4.997212,0,0,1,64.8,3.964906,1.609438,,0 +14,5,95,1,2,526300,1,51.71531,38.13073,1,8,1,22.85497,0,0,0,0,22.85497,0,0,0,0,0,6,53.7,10.3,1,64.8,140.6,140.6,0,0,1.791759,4.945919,0,4.564348,4.997212,0,0,1,64.8,3.964906,1.791759,3.129169,1 +14,5,95,1,3,526300,1,51.71531,39.13073,1,8,1,24.42907,0,0,0,0,24.42907,0,0,0,1,0,6,53.7,10.3,1,64.8,140.6,140.6,0,0,1.791759,4.945919,0,4.564348,4.997212,0,0,1,64.8,3.964906,1.791759,3.195774,1 +14,5,95,1,1,526301,1,51.71531,16.3833,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,82.4,0,0,79.5,140.6,140.6,1,0,1.609438,4.945919,0,4.564348,4.997212,0,1,0,79.5,3.964906,1.609438,,0 +14,5,95,1,2,526301,1,51.71531,17.3833,0,8,1,0,0,0,0,0,0,0,0,0,0,0,6,82.4,0,0,79.5,140.6,140.6,1,0,1.791759,4.945919,0,4.564348,4.997212,0,1,0,79.5,3.964906,1.791759,,0 +14,5,95,1,3,526301,1,51.71531,18.3833,0,8,1,34.9481,0,0,0,0,34.9481,0,0,0,1,0,6,82.4,0,0,79.5,140.6,140.6,0,0,1.791759,4.945919,0,4.564348,4.997212,0,1,0,79.5,3.964906,1.791759,3.553864,1 +13,5,0,1,1,526305,0,6592.962,25.18275,0,12,1,29.23687,3.384539,34.19227,0,0,66.81367,0,0,0,0,1,3,68.6,27.6,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,64.8,8.79391,1.098612,4.201908,1 +13,5,0,1,2,526305,0,6592.962,26.18275,0,12,1,12.84993,6.998623,0,0,0,19.84855,0,0,0,2,0,3,68.6,27.6,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,64.8,8.79391,1.098612,2.988131,1 +13,5,0,1,3,526305,0,6592.962,27.18275,0,12,1,6.310475,4.354228,0,0,0,10.6647,0,0,0,1,0,3,68.6,27.6,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,64.8,8.79391,1.098612,2.36694,1 +13,5,0,1,4,526305,0,6592.962,28.18275,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,68.6,27.6,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,64.8,8.79391,1.098612,,0 +13,5,0,1,5,526305,0,6592.962,29.18275,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,68.6,27.6,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,64.8,8.79391,1.098612,,0 +13,5,0,1,1,526306,0,6592.962,22.56537,1,12,1,21.30823,4.048563,31.71457,0,0,57.07136,0,0,0,0,1,3,64.4,10.3,0,55.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,55.7,8.79391,1.098612,4.044302,1 +13,5,0,1,2,526306,0,6592.962,23.56537,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,64.4,10.3,0,55.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,55.7,8.79391,1.098612,,0 +13,5,0,1,3,526306,0,6592.962,24.56537,1,12,1,14.72444,0,28.18679,0,0,42.91123,0,0,0,0,1,3,64.4,10.3,0,55.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,55.7,8.79391,1.098612,3.759134,1 +13,5,0,1,4,526306,0,6592.962,25.56537,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,64.4,10.3,0,55.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,55.7,8.79391,1.098612,,0 +13,5,0,1,5,526306,0,6592.962,26.56537,1,12,1,42.53859,9.48199,0,0,0,52.02058,0,0,0,2,0,3,64.4,10.3,0,55.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,55.7,8.79391,1.098612,3.951639,1 +13,5,0,1,1,526307,0,6592.962,4.010952,1,12,1,30.22795,0,0,0,0,30.22795,0,0,0,4,0,3,77.40034,10.57626,0,51.9,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,51.9,8.79391,1.098612,3.408767,1 +13,5,0,1,2,526307,0,6592.962,5.010952,1,12,1,6.883892,1.468564,0,0,322.6251,330.9775,1,0,0,1,0,3,77.40034,10.57626,0,51.9,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,51.9,8.79391,1.098612,5.802051,1 +13,5,0,1,3,526307,0,6592.962,6.010952,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,51.9,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,51.9,8.79391,1.098612,,0 +13,5,0,1,4,526307,0,6592.962,7.010952,1,12,1,21.15602,0,0,0,0,21.15602,0,0,0,1,0,3,77.40034,10.57626,0,51.9,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,51.9,8.79391,1.098612,3.051925,1 +13,5,0,1,5,526307,0,6592.962,8.010951,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,51.9,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,51.9,8.79391,1.098612,,0 +15,5,95,0,1,526308,1,4047.619,3.08282,1,9,1,7.993269,0,0,0,0,7.993269,0,0,0,0,0,5,77.40034,10.57626,0,63,19.3,19.3,1,1,1.609438,2.960105,0,4.564348,3.011398,1,0,0,63,8.306131,1.609438,2.0786,1 +15,5,95,0,2,526308,1,4047.619,4.08282,1,9,1,31.73404,0,0,0,0,31.73404,0,0,0,1,0,5,77.40034,10.57626,0,63,19.3,19.3,1,1,1.609438,2.960105,0,4.564348,3.011398,1,0,0,63,8.306131,1.609438,3.45739,1 +15,5,95,0,3,526308,1,4047.619,5.08282,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,63,19.3,19.3,1,1,1.386294,2.960105,0,4.564348,3.011398,1,0,0,63,8.306131,1.386294,,0 +15,5,95,0,1,526309,1,4047.619,32.11499,1,9,1,26.0833,0,0,0,0,26.0833,0,0,0,2,0,5,51.6,13.8,0,56.8,19.3,19.3,0,0,1.609438,2.960105,0,4.564348,3.011398,1,0,0,56.8,8.306131,1.609438,3.261295,1 +15,5,95,0,2,526309,1,4047.619,33.11499,1,9,1,102.9845,23.75519,0,0,352.0967,478.8364,1,0,0,4,0,5,51.6,13.8,0,56.8,19.3,19.3,0,0,1.609438,2.960105,0,4.564348,3.011398,1,0,0,56.8,8.306131,1.609438,6.171359,1 +15,5,95,0,3,526309,1,4047.619,34.11499,1,9,1,12.00686,0,0,0,0,12.00686,0,0,0,1,0,4,51.6,13.8,0,56.8,19.3,19.3,0,0,1.386294,2.960105,0,4.564348,3.011398,1,0,0,56.8,8.306131,1.386294,2.485478,1 +15,5,95,0,1,526310,1,4047.619,15.26078,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,63.3,0,0,68.2,19.3,19.3,1,0,1.609438,2.960105,0,4.564348,3.011398,1,0,0,68.2,8.306131,1.609438,,0 +15,5,95,0,2,526310,1,4047.619,16.26078,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,63.3,0,0,68.2,19.3,19.3,1,0,1.609438,2.960105,0,4.564348,3.011398,1,0,0,68.2,8.306131,1.609438,,0 +15,5,95,0,1,526311,1,4047.619,9.201917,0,9,1,53.93353,0,0,0,0,53.93353,0,0,0,1,0,5,98.3,10.57626,0,74.1,19.3,19.3,1,0,1.609438,2.960105,0,4.564348,3.011398,1,0,0,74.1,8.306131,1.609438,3.987752,1 +15,5,95,0,2,526311,1,4047.619,10.20192,0,9,1,7.555724,0,0,0,0,7.555724,0,0,0,0,0,5,98.3,10.57626,0,74.1,19.3,19.3,1,0,1.609438,2.960105,0,4.564348,3.011398,1,0,0,74.1,8.306131,1.609438,2.022305,1 +15,5,95,0,3,526311,1,4047.619,11.20192,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,98.3,10.57626,0,74.1,19.3,19.3,1,0,1.386294,2.960105,0,4.564348,3.011398,1,0,0,74.1,8.306131,1.386294,,0 +15,5,95,0,1,526312,1,4047.619,13.82067,0,9,1,23.64325,0,0,0,0,23.64325,0,0,0,0,0,5,86.7,10.57626,0,88.9,19.3,19.3,1,0,1.609438,2.960105,0,4.564348,3.011398,1,0,0,88.9,8.306131,1.609438,3.163078,1 +15,5,95,0,2,526312,1,4047.619,14.82067,0,9,1,10.67246,0,0,0,0,10.67246,0,0,0,0,0,5,86.7,10.57626,0,88.9,19.3,19.3,1,0,1.609438,2.960105,0,4.564348,3.011398,1,0,0,88.9,8.306131,1.609438,2.367666,1 +15,5,95,0,3,526312,1,4047.619,15.82067,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,10.57626,0,88.9,19.3,19.3,1,0,1.386294,2.960105,0,4.564348,3.011398,1,0,0,88.9,8.306131,1.386294,,0 +10,5,50,1,1,526318,0,8942.652,28.79945,1,12,1,0,12.44151,0,0,0,12.44151,0,0,0,0,0,3,80.3,13.8,0,83,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,83,9.0987,1.098612,2.521039,1 +10,5,50,1,2,526318,0,8942.652,29.79945,1,12,1,59.35115,0,27.48092,0,0,86.83206,0,0,0,1,1,3,80.3,13.8,0,83,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,83,9.0987,1.098612,4.463976,1 +10,5,50,1,3,526318,0,8942.652,30.79945,1,12,1,20.55749,0,0,0,0,20.55749,0,0,0,1,0,3,80.3,13.8,0,83,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,83,9.0987,1.098612,3.023225,1 +10,5,50,1,1,526319,0,8942.652,3.698836,1,12,1,74.01106,23.60698,0,0,0,97.61803,0,0,0,8,0,3,77.40034,10.57626,0,40.7,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,40.7,9.0987,1.098612,4.581062,1 +10,5,50,1,2,526319,0,8942.652,4.698836,1,12,1,373.2824,95.62977,27.09924,0,0,496.0114,0,0,0,16,1,3,77.40034,10.57626,0,40.7,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,40.7,9.0987,1.098612,6.206599,1 +10,5,50,1,3,526319,0,8942.652,5.698836,1,12,1,70.7317,20.38328,0,0,0,91.11498,0,0,0,5,0,3,77.40034,10.57626,0,40.7,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,40.7,9.0987,1.098612,4.512122,1 +10,5,50,1,1,526320,0,8942.652,23.69062,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,78.2,0,0,72.7,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,72.7,9.0987,1.098612,,0 +10,5,50,1,2,526320,0,8942.652,24.69062,0,12,1,13.35878,19.27481,27.48092,0,0,60.1145,0,0,0,0,1,3,78.2,0,0,72.7,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,72.7,9.0987,1.098612,4.096251,1 +10,5,50,1,3,526320,0,8942.652,25.69062,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,78.2,0,0,72.7,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,72.7,9.0987,1.098612,,0 +11,5,0,1,1,526334,1,5952.381,22.87474,1,12,1,61.99746,8.298773,0,0,0,70.29623,0,0,0,1,0,3,85.2,0,0,83,0,199.2,0,0,1.098612,5.294309,0,0,0,0,0,0,83,8.691714,1.098612,4.252718,1 +11,5,0,1,2,526334,1,5952.381,23.87474,1,12,1,52.58162,10.7631,0,0,869.7798,933.1245,1,0,0,4,0,3,85.2,0,0,83,0,199.2,0,0,1.098612,5.294309,0,0,0,0,0,0,83,8.691714,1.098612,6.838539,1 +11,5,0,1,3,526334,1,5952.381,24.87474,1,12,1,13.14879,24.46713,0,0,0,37.61592,0,0,0,2,0,4,85.2,0,0,83,0,199.2,0,0,1.386294,5.294309,0,0,0,0,0,0,83,8.691714,1.386294,3.627427,1 +11,5,0,1,1,526335,1,5952.381,5.598905,0,12,1,18.6204,0,0,0,0,18.6204,0,0,0,2,0,3,93.3,10.57626,0,81.5,0,199.2,1,0,1.098612,5.294309,0,0,0,0,0,0,81.5,8.691714,1.098612,2.924258,1 +11,5,0,1,2,526335,1,5952.381,6.598905,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,93.3,10.57626,0,81.5,0,199.2,1,0,1.098612,5.294309,0,0,0,0,0,0,81.5,8.691714,1.098612,,0 +11,5,0,1,3,526335,1,5952.381,7.598905,0,12,1,7.311419,0,0,0,0,7.311419,0,0,0,1,0,4,93.3,10.57626,0,81.5,0,199.2,1,0,1.386294,5.294309,0,0,0,0,0,0,81.5,8.691714,1.386294,1.989437,1 +11,5,0,1,1,526336,1,5952.381,26.30253,0,11,1,44.43504,0,0,0,0,44.43504,0,0,0,1,0,3,93.6,0,0,97.7,0,199.2,0,0,1.098612,5.294309,0,0,0,0,0,0,97.7,8.691714,1.098612,3.794028,1 +11,5,0,1,2,526336,1,5952.381,27.30253,0,11,1,11.38952,0,0,0,0,11.38952,0,0,0,2,0,3,93.6,0,0,97.7,0,199.2,0,0,1.098612,5.294309,0,0,0,0,0,0,97.7,8.691714,1.098612,2.432694,1 +11,5,0,1,3,526336,1,5952.381,28.30253,0,11,1,39.10035,0,0,0,0,39.10035,0,0,0,4,0,4,93.6,0,0,97.7,0,199.2,0,0,1.386294,5.294309,0,0,0,0,0,0,97.7,8.691714,1.386294,3.666131,1 +11,5,0,1,1,526350,1,5138.249,26.87748,1,16,1,12.62095,14.5772,34.86748,0,0,62.06563,0,0,0,1,0,2,78.2,20.7,0,68.2,0,147.36,0,0,.6931472,4.992878,0,0,0,0,0,0,68.2,8.544662,.6931472,4.128192,1 +11,5,0,1,2,526350,1,5138.249,27.87748,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,78.2,20.7,0,68.2,0,147.36,0,0,.6931472,4.992878,0,0,0,0,0,0,68.2,8.544662,.6931472,,0 +11,5,0,1,1,526351,1,5138.249,5.598905,0,16,1,99.70551,14.03029,0,0,0,113.7358,0,0,0,3,0,2,83.3,10.57626,0,33.3,0,147.36,1,0,.6931472,4.992878,0,0,0,0,0,0,33.3,8.544662,.6931472,4.733878,1 +11,5,0,1,2,526351,1,5138.249,6.598905,0,16,1,41.17869,11.40914,0,0,0,52.58783,0,0,0,5,0,2,83.3,10.57626,0,33.3,0,147.36,1,0,.6931472,4.992878,0,0,0,0,0,0,33.3,8.544662,.6931472,3.962485,1 +7,5,25,1,1,526353,0,11349.56,28.5859,1,16,1,52.52726,11.49158,1.23885,0,0,65.25768,0,0,0,4,0,4,79.3,13.8,1,65.9,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,65.9,9.337023,1.386294,4.178344,1 +7,5,25,1,2,526353,0,11349.56,29.5859,1,16,1,21.1106,9.403396,0,0,0,30.514,0,0,0,2,0,4,79.3,13.8,1,65.9,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,65.9,9.337023,1.386294,3.418185,1 +7,5,25,1,3,526353,0,11349.56,30.5859,1,16,1,36.18006,21.5692,0,0,0,57.74926,0,0,0,4,0,4,79.3,13.8,1,65.9,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,65.9,9.337023,1.386294,4.05611,1 +7,5,25,1,4,526353,0,11349.56,31.5859,1,16,1,34.37854,2.077824,0,0,0,36.45637,0,0,0,3,0,4,79.3,13.8,1,65.9,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,65.9,9.337023,1.386294,3.596116,1 +7,5,25,1,5,526353,0,11349.56,32.5859,1,16,1,34.64837,4.686106,0,0,0,39.33448,0,0,0,4,0,4,79.3,13.8,1,65.9,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,65.9,9.337023,1.386294,3.672101,1 +7,5,25,1,1,526354,0,11349.56,2.422998,0,16,1,14.8662,3.592666,0,0,0,18.45887,0,0,0,2,0,4,77.40034,10.57626,0,100,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.337023,1.386294,2.915545,1 +7,5,25,1,2,526354,0,11349.56,3.422998,0,16,1,5.507113,9.449288,0,0,0,14.9564,0,0,0,1,0,4,77.40034,10.57626,0,100,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.337023,1.386294,2.705139,1 +7,5,25,1,3,526354,0,11349.56,4.422998,0,16,1,31.13168,11.07699,0,0,0,42.20867,0,0,0,4,0,4,77.40034,10.57626,0,100,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.337023,1.386294,3.742626,1 +7,5,25,1,4,526354,0,11349.56,5.422998,0,16,1,38.1564,2.595391,0,0,0,40.75179,0,0,0,3,0,4,77.40034,10.57626,0,100,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.337023,1.386294,3.7075,1 +7,5,25,1,5,526354,0,11349.56,6.422998,0,16,1,184.5626,5.526587,0,0,0,190.0892,0,0,0,10,0,4,77.40034,10.57626,0,100,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.337023,1.386294,5.247493,1 +7,5,25,1,1,526355,0,11349.56,5.549623,1,16,1,18.83052,0,0,0,0,18.83052,0,0,0,1,0,4,90,10.57626,0,92.6,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,92.6,9.337023,1.386294,2.935479,1 +7,5,25,1,2,526355,0,11349.56,6.549623,1,16,1,32.12483,0,0,0,0,32.12483,0,0,0,1,0,4,90,10.57626,0,92.6,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,92.6,9.337023,1.386294,3.469629,1 +7,5,25,1,3,526355,0,11349.56,7.549623,1,16,1,106.016,0,0,0,0,106.016,0,0,0,1,0,4,90,10.57626,0,92.6,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,92.6,9.337023,1.386294,4.66359,1 +7,5,25,1,4,526355,0,11349.56,8.549623,1,16,1,26.82282,0,19.64488,0,0,46.4677,0,0,0,2,0,4,90,10.57626,0,92.6,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,92.6,9.337023,1.386294,3.838758,1 +7,5,25,1,5,526355,0,11349.56,9.549623,1,16,1,18.18182,0,0,0,0,18.18182,0,0,0,2,0,4,90,10.57626,0,92.6,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,92.6,9.337023,1.386294,2.900422,1 +7,5,25,1,1,526356,0,11349.56,29.28131,0,13,1,157.0862,9.00892,0,0,0,166.0951,0,0,0,10,0,4,83.5,3.4,0,62.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,62.5,9.337023,1.386294,5.112561,1 +7,5,25,1,2,526356,0,11349.56,30.28131,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,83.5,3.4,0,62.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,62.5,9.337023,1.386294,,0 +7,5,25,1,3,526356,0,11349.56,31.28131,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,83.5,3.4,0,62.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,62.5,9.337023,1.386294,,0 +7,5,25,1,4,526356,0,11349.56,32.28131,0,13,1,64.03476,0,0,0,0,64.03476,0,0,0,3,0,4,83.5,3.4,0,62.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,62.5,9.337023,1.386294,4.159426,1 +7,5,25,1,5,526356,0,11349.56,33.28131,0,13,1,110.4631,10.96398,0,114.9228,614.9949,736.4219,1,0,9,3,0,4,83.5,3.4,0,62.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,62.5,9.337023,1.386294,6.601803,1 +13,5,0,1,1,526393,1,4862.775,8.533881,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,96.7,10.57626,0,66.7,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,66.7,8.489571,1.098612,,0 +13,5,0,1,2,526393,1,4862.775,9.533881,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,96.7,10.57626,0,66.7,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,66.7,8.489571,1.098612,,0 +13,5,0,1,3,526393,1,4862.775,10.53388,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,96.7,10.57626,0,66.7,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,66.7,8.489571,1.098612,,0 +13,5,0,1,1,526394,1,4862.775,14.61191,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,68.1,3.4,0,61.4,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,61.4,8.489571,1.098612,,0 +13,5,0,1,2,526394,1,4862.775,15.61191,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,68.1,3.4,0,61.4,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,61.4,8.489571,1.098612,,0 +13,5,0,1,3,526394,1,4862.775,16.61191,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,68.1,3.4,0,61.4,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,61.4,8.489571,1.098612,,0 +13,5,0,1,1,526395,1,4862.775,32.07118,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,72.9,10.3,0,78.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,78.4,8.489571,1.098612,,0 +13,5,0,1,2,526395,1,4862.775,33.07118,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,72.9,10.3,0,78.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,78.4,8.489571,1.098612,,0 +13,5,0,1,3,526395,1,4862.775,34.07118,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,72.9,10.3,0,78.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,78.4,8.489571,1.098612,,0 +16,5,95,0,1,526397,1,2311.179,7.655031,0,11,1,0,1.745636,0,0,0,1.745636,0,0,0,0,0,4,83.3,10.57626,0,96.3,210.6,210.6,1,0,1.386294,5.349961,0,4.564348,5.401254,0,0,0,96.3,7.745945,1.386294,.5571189,1 +16,5,95,0,2,526397,1,2311.179,8.655031,0,11,1,50.39188,3.204242,0,0,0,53.59613,0,0,0,0,0,4,83.3,10.57626,0,96.3,210.6,210.6,1,0,1.386294,5.349961,0,4.564348,5.401254,0,0,0,96.3,7.745945,1.386294,3.981477,1 +16,5,95,0,3,526397,1,2311.179,9.655031,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,0,96.3,210.6,210.6,1,0,1.386294,5.349961,0,4.564348,5.401254,0,0,0,96.3,7.745945,1.386294,,0 +16,5,95,0,4,526397,1,2311.179,10.65503,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,0,96.3,210.6,210.6,1,0,1.386294,5.349961,0,4.564348,5.401254,0,0,0,96.3,7.745945,1.386294,,0 +16,5,95,0,5,526397,1,2311.179,11.65503,0,11,1,12.80277,0,0,0,0,12.80277,0,0,0,1,0,4,83.3,10.57626,0,96.3,210.6,210.6,1,0,1.386294,5.349961,0,4.564348,5.401254,0,0,0,96.3,7.745945,1.386294,2.549661,1 +16,5,95,0,1,526398,1,2311.179,6.162902,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,100,10.57626,0,88.9,210.6,210.6,1,1,1.386294,5.349961,0,4.564348,5.401254,0,0,0,88.9,7.745945,1.386294,,0 +16,5,95,0,2,526398,1,2311.179,7.162902,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,100,10.57626,0,88.9,210.6,210.6,1,1,1.386294,5.349961,0,4.564348,5.401254,0,0,0,88.9,7.745945,1.386294,,0 +16,5,95,0,3,526398,1,2311.179,8.162902,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,100,10.57626,0,88.9,210.6,210.6,1,1,1.386294,5.349961,0,4.564348,5.401254,0,0,0,88.9,7.745945,1.386294,,0 +16,5,95,0,4,526398,1,2311.179,9.162902,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,100,10.57626,0,88.9,210.6,210.6,1,1,1.386294,5.349961,0,4.564348,5.401254,0,0,0,88.9,7.745945,1.386294,,0 +16,5,95,0,5,526398,1,2311.179,10.1629,1,11,1,12.80277,0,0,0,0,12.80277,0,0,0,1,0,4,100,10.57626,0,88.9,210.6,210.6,1,1,1.386294,5.349961,0,4.564348,5.401254,0,0,0,88.9,7.745945,1.386294,2.549661,1 +16,5,95,0,1,526399,1,2311.179,21.68652,1,11,1,8.72818,0,0,0,0,8.72818,0,0,0,0,0,4,67,24.1,0,46.2,210.6,210.6,0,0,1.386294,5.349961,0,4.564348,5.401254,0,0,0,46.2,7.745945,1.386294,2.166557,1 +16,5,95,0,2,526399,1,2311.179,22.68652,1,11,1,11.52605,0,25.81835,0,0,37.3444,0,0,0,0,1,4,67,24.1,0,46.2,210.6,210.6,0,0,1.386294,5.349961,0,4.564348,5.401254,0,0,0,46.2,7.745945,1.386294,3.620183,1 +16,5,95,0,3,526399,1,2311.179,23.68652,1,11,1,30.57554,0,0,0,144.7313,175.3068,1,0,0,2,0,4,67,24.1,0,46.2,210.6,210.6,0,0,1.386294,5.349961,0,4.564348,5.401254,0,0,0,46.2,7.745945,1.386294,5.166538,1 +16,5,95,0,4,526399,1,2311.179,24.68652,1,11,1,47.45634,1.628702,0,0,0,49.08504,0,0,0,1,0,4,67,24.1,0,46.2,210.6,210.6,0,0,1.386294,5.349961,0,4.564348,5.401254,0,0,0,46.2,7.745945,1.386294,3.893554,1 +16,5,95,0,5,526399,1,2311.179,25.68652,1,11,1,17.30104,5.948097,0,0,0,23.24913,0,0,0,2,0,4,67,24.1,0,46.2,210.6,210.6,0,0,1.386294,5.349961,0,4.564348,5.401254,0,0,0,46.2,7.745945,1.386294,3.146268,1 +16,5,95,0,1,526400,1,2311.179,1.097878,1,11,1,17.45636,1.142145,0,0,0,18.5985,0,0,0,0,0,4,77.40034,10.57626,0,59.3,210.6,210.6,1,1,1.386294,5.349961,0,4.564348,5.401254,0,0,0,59.3,7.745945,1.386294,2.923081,1 +16,5,95,0,2,526400,1,2311.179,2.097878,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,59.3,210.6,210.6,1,1,1.386294,5.349961,0,4.564348,5.401254,0,0,0,59.3,7.745945,1.386294,,0 +16,5,95,0,3,526400,1,2311.179,3.097878,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,59.3,210.6,210.6,1,1,1.386294,5.349961,0,4.564348,5.401254,0,0,0,59.3,7.745945,1.386294,,0 +16,5,95,0,4,526400,1,2311.179,4.097878,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,59.3,210.6,210.6,1,1,1.386294,5.349961,0,4.564348,5.401254,0,0,0,59.3,7.745945,1.386294,,0 +16,5,95,0,5,526400,1,2311.179,5.097878,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,59.3,210.6,210.6,1,1,1.386294,5.349961,0,4.564348,5.401254,0,0,0,59.3,7.745945,1.386294,,0 +6,5,25,1,1,526401,0,9282.13,58.13279,1,15,1,46.57592,0,0,0,0,46.57592,0,0,0,2,0,2,39.9,24.1,0,84.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,84.1,9.135954,.6931472,3.841084,1 +6,5,25,1,2,526401,0,9282.13,59.13279,1,15,1,31.48855,9.38168,34.90076,0,0,75.771,0,0,0,2,0,2,39.9,24.1,0,84.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,84.1,9.135954,.6931472,4.327715,1 +6,5,25,1,3,526401,0,9282.13,60.13279,1,15,1,74.21603,2.418118,19.56794,0,0,96.20209,0,0,0,3,0,2,39.9,24.1,0,84.1,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,84.1,9.135954,.6931472,4.566451,1 +6,5,25,1,1,526402,0,9282.13,59.75359,0,15,1,0,0,0,0,0,0,0,0,0,0,0,2,90.4,10.3,0,90.9,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,90.9,9.135954,.6931472,,0 +6,5,25,1,2,526402,0,9282.13,60.75359,0,15,1,22.90076,0,0,0,0,22.90076,0,0,0,1,0,2,90.4,10.3,0,90.9,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,90.9,9.135954,.6931472,3.13117,1 +6,5,25,1,3,526402,0,9282.13,61.75359,0,15,1,27.87457,1.714286,0,0,0,29.58885,0,0,0,2,0,2,90.4,10.3,0,90.9,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,90.9,9.135954,.6931472,3.387398,1 +19,5,25,0,1,526404,0,6674.895,8.005476,0,8,1,18.50277,0,0,0,0,18.50277,0,0,0,1,0,5,96.7,10.57626,0,85.2,750,0,1,0,1.609438,0,0,3.258096,8.006368,1,0,0,85.2,8.806258,1.609438,2.91792,1 +19,5,25,0,2,526404,0,6674.895,9.005476,0,8,1,11.45038,0,29.00763,0,0,40.45802,0,0,0,0,1,5,96.7,10.57626,0,85.2,750,0,1,0,1.609438,0,0,3.258096,8.006368,1,0,0,85.2,8.806258,1.609438,3.700265,1 +19,5,25,0,3,526404,0,6674.895,10.00548,0,8,1,20.90592,0,15.67944,0,0,36.58537,0,0,0,0,1,5,96.7,10.57626,0,85.2,750,0,1,0,1.609438,0,0,3.258096,8.006368,1,0,0,85.2,8.806258,1.609438,3.599648,1 +19,5,25,0,1,526405,0,6674.895,11.67967,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,80,10.57626,0,70.4,750,0,1,1,1.609438,0,0,3.258096,8.006368,0,1,0,70.4,8.806258,1.609438,,0 +19,5,25,0,2,526405,0,6674.895,12.67967,1,8,1,31.5458,0,27.09924,0,0,58.64504,0,0,0,0,1,5,80,10.57626,0,70.4,750,0,1,1,1.609438,0,0,3.258096,8.006368,0,1,0,70.4,8.806258,1.609438,4.071503,1 +19,5,25,0,3,526405,0,6674.895,13.67967,1,8,1,14.63415,0,0,0,0,14.63415,0,0,0,1,0,5,80,10.57626,0,70.4,750,0,1,1,1.609438,0,0,3.258096,8.006368,0,1,0,70.4,8.806258,1.609438,2.683358,1 +19,5,25,0,1,526406,0,6674.895,31.45243,0,7,1,29.56189,4.389621,0,0,0,33.95151,0,0,0,3,0,5,55.9,6.9,0,48.9,750,0,0,0,1.609438,0,0,3.258096,8.006368,1,0,0,48.9,8.806258,1.609438,3.524933,1 +19,5,25,0,2,526406,0,6674.895,32.45243,0,7,1,11.45038,67.21374,29.00763,0,0,107.6718,0,0,0,0,1,5,55.9,6.9,0,48.9,750,0,0,0,1.609438,0,0,3.258096,8.006368,1,0,0,48.9,8.806258,1.609438,4.679087,1 +19,5,25,0,3,526406,0,6674.895,33.45243,0,7,1,27.52613,0,0,0,0,27.52613,0,0,0,1,0,5,55.9,6.9,0,48.9,750,0,0,0,1.609438,0,0,3.258096,8.006368,1,0,0,48.9,8.806258,1.609438,3.315136,1 +19,5,25,0,1,526407,0,6674.895,27.93155,1,8,1,40.85495,0,0,0,0,40.85495,0,0,0,4,0,5,59.6,27.6,0,61.4,750,0,0,0,1.609438,0,0,3.258096,8.006368,1,0,0,61.4,8.806258,1.609438,3.710028,1 +19,5,25,0,2,526407,0,6674.895,28.93155,1,8,1,9.541985,4.48855,0,0,0,14.03053,0,0,0,1,0,5,59.6,27.6,0,61.4,750,0,0,0,1.609438,0,0,3.258096,8.006368,1,0,0,61.4,8.806258,1.609438,2.641236,1 +19,5,25,0,3,526407,0,6674.895,29.93155,1,8,1,32.75261,0,0,0,0,32.75261,0,0,0,2,0,5,59.6,27.6,0,61.4,750,0,0,0,1.609438,0,0,3.258096,8.006368,1,0,0,61.4,8.806258,1.609438,3.488983,1 +19,5,25,0,1,526408,0,6674.895,4.848734,0,8,1,31.26329,0,0,0,0,31.26329,0,0,0,2,0,5,77.40034,10.57626,0,85.2,750,0,1,0,1.609438,0,0,3.258096,8.006368,1,0,0,85.2,8.806258,1.609438,3.442445,1 +19,5,25,0,2,526408,0,6674.895,5.848734,0,8,1,7.633588,1.70229,0,0,0,9.335877,0,0,0,0,0,5,77.40034,10.57626,0,85.2,750,0,1,0,1.609438,0,0,3.258096,8.006368,1,0,0,85.2,8.806258,1.609438,2.233865,1 +19,5,25,0,3,526408,0,6674.895,6.848734,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,85.2,750,0,1,0,1.609438,0,0,3.258096,8.006368,1,0,0,85.2,8.806258,1.609438,,0 +13,5,0,0,1,526409,0,5878.648,56.69815,1,2,1,48.66695,25.99661,29.75878,0,0,104.4223,0,0,0,6,0,2,78.2,17.2,1,23.9,300,669.84,0,0,.6931472,6.507039,1,4.564348,5.755076,0,1,0,23.9,8.679253,.6931472,4.648444,1 +13,5,0,0,2,526409,0,5878.648,57.69815,1,2,1,45.55809,15.63402,21.64009,0,0,82.83219,0,0,0,5,1,2,78.2,17.2,1,23.9,300,669.84,0,0,.6931472,6.507039,1,4.564348,5.755076,0,1,0,23.9,8.679253,.6931472,4.416817,1 +13,5,0,0,3,526409,0,5878.648,58.69815,1,2,1,66.78201,34.67474,30.58824,0,0,132.045,0,0,0,7,0,2,78.2,17.2,1,23.9,300,669.84,0,0,.6931472,6.507039,1,4.564348,5.755076,0,1,0,23.9,8.679253,.6931472,4.883142,1 +13,5,0,0,1,526410,.4758801,3640.553,25.68378,0,12,1,80.40627,0,0,0,0,80.40627,0,0,0,3,0,2,78.7,3.4,0,59.1,300,375.44,0,0,.6931472,5.928099,1,4.564348,5.755076,1,0,0,59.1,8.200166,.6931472,4.387092,1 +13,5,0,0,2,526410,.4758801,3640.553,26.68378,0,12,1,45.55809,3.451025,0,0,0,49.00911,0,0,0,0,0,2,78.7,3.4,0,59.1,300,375.44,0,0,.6931472,5.928099,1,4.564348,5.755076,1,0,0,59.1,8.200166,.6931472,3.892006,1 +13,5,0,0,3,526410,.4758801,3640.553,27.68378,0,12,1,0,0,0,0,965.0519,965.0519,1,0,0,0,0,2,78.7,3.4,0,59.1,300,375.44,0,0,.6931472,5.928099,1,4.564348,5.755076,1,0,0,59.1,8.200166,.6931472,6.872182,1 +13,5,0,0,1,526411,0,5878.648,51.02533,0,9,1,10.57977,0,0,0,0,10.57977,0,0,0,2,0,2,76.6,10.3,0,61.4,300,669.84,0,0,.6931472,6.507039,1,4.564348,5.755076,1,0,0,61.4,8.679253,.6931472,2.358944,1 +13,5,0,0,2,526411,0,5878.648,52.02533,0,9,1,25.4366,6.43508,29.61276,0,0,61.48444,0,0,0,2,1,2,76.6,10.3,0,61.4,300,669.84,0,0,.6931472,6.507039,1,4.564348,5.755076,1,0,0,61.4,8.679253,.6931472,4.118784,1 +13,5,0,0,3,526411,0,5878.648,53.02533,0,9,1,85.81315,38.02422,0,0,1458.131,1581.969,1,0,0,4,0,2,76.6,10.3,0,61.4,300,669.84,0,0,.6931472,6.507039,1,4.564348,5.755076,1,0,0,61.4,8.679253,.6931472,7.366426,1 +7,5,25,1,1,526413,1,6674.895,18.81177,0,9,1,10.51746,0,24.40051,0,0,34.91796,0,0,0,0,1,4,85.6,6.9,0,73.9,750,0,0,0,1.386294,0,0,3.258096,8.006368,0,0,0,73.9,8.806258,1.386294,3.553001,1 +7,5,25,1,2,526413,1,6674.895,19.81177,0,9,1,11.33358,0,0,0,0,11.33358,0,0,0,0,0,4,85.6,6.9,0,73.9,750,0,0,0,1.386294,0,0,3.258096,8.006368,0,0,0,73.9,8.806258,1.386294,2.42777,1 +7,5,25,1,3,526413,1,6674.895,20.81177,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,85.6,6.9,0,73.9,750,0,0,0,1.386294,0,0,3.258096,8.006368,0,0,0,73.9,8.806258,1.386294,,0 +7,5,25,1,1,526414,1,6674.895,17.53867,0,7,1,18.51073,0,22.71771,0,0,41.22844,0,0,0,0,1,4,29.3,10.3,1,43.2,750,0,1,0,1.386294,0,0,3.258096,8.006368,0,0,0,43.2,8.806258,1.386294,3.719128,1 +7,5,25,1,2,526414,1,6674.895,18.53867,0,7,1,0,0,0,0,0,0,0,0,0,0,0,4,29.3,10.3,1,43.2,750,0,0,0,1.386294,0,0,3.258096,8.006368,0,0,0,43.2,8.806258,1.386294,,0 +7,5,25,1,3,526414,1,6674.895,19.53867,0,7,1,8.576329,0,22.64151,0,0,31.21784,0,0,0,0,1,4,29.3,10.3,1,43.2,750,0,0,0,1.386294,0,0,3.258096,8.006368,0,0,0,43.2,8.806258,1.386294,3.44099,1 +7,5,25,1,1,526415,1,6674.895,14.00137,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,75,10.57626,1,70.4,750,0,1,1,1.386294,0,0,3.258096,8.006368,0,0,0,70.4,8.806258,1.386294,,0 +7,5,25,1,2,526415,1,6674.895,15.00137,1,7,1,7.555724,0,0,0,0,7.555724,0,0,0,0,0,4,75,10.57626,1,70.4,750,0,1,1,1.386294,0,0,3.258096,8.006368,0,0,0,70.4,8.806258,1.386294,2.022305,1 +7,5,25,1,3,526415,1,6674.895,16.00137,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,75,10.57626,1,70.4,750,0,1,1,1.386294,0,0,3.258096,8.006368,0,0,0,70.4,8.806258,1.386294,,0 +7,5,25,1,1,526417,1,6674.895,51.34839,1,7,1,36.22213,0,35.0021,0,0,71.22424,0,0,0,0,0,4,68.6,13.8,0,71.6,750,0,0,0,1.386294,0,0,3.258096,8.006368,1,0,0,71.6,8.806258,1.386294,4.265833,1 +7,5,25,1,2,526417,1,6674.895,52.34839,1,7,1,7.555724,0,0,0,0,7.555724,0,0,0,0,0,4,68.6,13.8,0,71.6,750,0,0,0,1.386294,0,0,3.258096,8.006368,1,0,0,71.6,8.806258,1.386294,2.022305,1 +7,5,25,1,3,526417,1,6674.895,53.34839,1,7,1,31.21784,3.749571,0,0,0,34.96741,0,0,0,1,0,4,68.6,13.8,0,71.6,750,0,0,0,1.386294,0,0,3.258096,8.006368,1,0,0,71.6,8.806258,1.386294,3.554416,1 +13,5,0,1,1,526424,1,6326.1,16.77481,0,11,1,8.977556,0,0,0,0,8.977556,0,0,0,1,0,4,80.3,0,0,78.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.752597,1.386294,2.194728,1 +13,5,0,1,2,526424,1,6326.1,17.77481,0,11,1,10.25818,5.758414,0,0,0,16.0166,0,0,0,0,0,4,80.3,0,0,78.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.752597,1.386294,2.773626,1 +13,5,0,1,1,526425,1,6326.1,36.42437,0,12,1,132.1696,60.48878,0,0,0,192.6584,0,0,0,5,0,4,72.9,6.9,0,51.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,51.1,8.752597,1.386294,5.260919,1 +13,5,0,1,2,526425,1,6326.1,37.42437,0,12,1,169.6634,31.42923,0,0,0,201.0927,0,0,0,11,0,4,72.9,6.9,0,51.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,51.1,8.752597,1.386294,5.303766,1 +13,5,0,1,3,526425,1,6326.1,38.42437,0,12,1,31.73932,2.094795,0,0,0,33.83411,0,0,0,1,0,4,72.9,6.9,0,51.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,51.1,8.752597,1.386294,3.521469,1 +13,5,0,1,4,526425,1,6326.1,39.42437,0,12,1,12.14882,6.27183,0,0,287.0159,305.4366,1,0,0,2,0,3,72.9,6.9,0,51.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,51.1,8.752597,1.098612,5.721742,1 +13,5,0,1,5,526425,1,6326.1,40.42437,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,72.9,6.9,0,51.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,51.1,8.752597,1.098612,,0 +13,5,0,1,1,526426,1,6326.1,14.38193,0,11,1,99.62594,0,0,0,0,99.62594,0,0,0,4,0,4,85.1,0,0,64.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,64.8,8.752597,1.386294,4.601423,1 +13,5,0,1,2,526426,1,6326.1,15.38193,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,85.1,0,0,64.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,64.8,8.752597,1.386294,,0 +13,5,0,1,3,526426,1,6326.1,16.38193,0,11,1,10.68557,0,0,0,0,10.68557,0,0,0,0,0,4,85.1,0,0,64.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,64.8,8.752597,1.386294,2.368894,1 +13,5,0,1,1,526427,1,6326.1,33.21561,1,11,1,12.46883,4.738154,0,0,0,17.20698,0,0,0,1,0,4,45.7,13.8,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,8.752597,1.386294,2.845315,1 +13,5,0,1,2,526427,1,6326.1,34.21561,1,11,1,103.0429,13.32872,0,0,581.835,698.2065,1,0,0,2,0,4,45.7,13.8,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,8.752597,1.386294,6.548515,1 +13,5,0,1,3,526427,1,6326.1,35.21561,1,11,1,0,0,3.762167,0,0,3.762167,0,0,0,0,0,4,45.7,13.8,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,8.752597,1.386294,1.324995,1 +13,5,0,1,4,526427,1,6326.1,36.21561,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,45.7,13.8,0,68.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,68.2,8.752597,1.098612,,0 +13,5,0,1,5,526427,1,6326.1,37.21561,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,45.7,13.8,0,68.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,68.2,8.752597,1.098612,,0 +11,5,0,0,1,526448,1,1998.976,14.09993,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,63.3,10.3,0,67,0,0,1,1,1.609438,0,0,0,0,0,0,0,67,7.600891,1.609438,,0 +11,5,0,0,2,526448,1,1998.976,15.09993,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,63.3,10.3,0,67,0,0,1,1,1.609438,0,0,0,0,0,0,0,67,7.600891,1.609438,,0 +11,5,0,0,3,526448,1,1998.976,16.09993,1,11,1,0,0,0,0,0,0,1,1,0,0,0,6,63.3,10.3,0,67,0,0,1,1,1.791759,0,0,0,0,0,0,0,67,7.600891,1.791759,,0 +11,5,0,0,1,526449,1,1998.976,17.57153,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,66.5,3.4,0,55.7,0,0,1,0,1.609438,0,0,0,0,0,0,0,55.7,7.600891,1.609438,,0 +11,5,0,0,2,526449,1,1998.976,18.57153,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,66.5,3.4,0,55.7,0,0,0,0,1.609438,0,0,0,0,0,0,0,55.7,7.600891,1.609438,,0 +11,5,0,0,3,526449,1,1998.976,19.57153,0,11,1,10.38062,0,0,0,0,10.38062,0,0,0,0,0,6,66.5,3.4,0,55.7,0,0,0,0,1.791759,0,0,0,0,0,0,0,55.7,7.600891,1.791759,2.339941,1 +11,5,0,0,1,526450,1,1998.976,16.53114,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,73.4,3.4,0,81.8,0,0,1,1,1.609438,0,0,0,0,0,0,0,81.8,7.600891,1.609438,,0 +11,5,0,0,2,526450,1,1998.976,17.53114,1,11,1,0,0,0,0,0,0,1,1,0,0,0,5,73.4,3.4,0,81.8,0,0,1,1,1.609438,0,0,0,0,0,0,0,81.8,7.600891,1.609438,,0 +11,5,0,0,3,526450,1,1998.976,18.53114,1,11,1,92.04152,0,0,0,0,92.04152,0,0,0,5,0,6,73.4,3.4,0,81.8,0,0,0,0,1.791759,0,0,0,0,0,0,0,81.8,7.600891,1.791759,4.52224,1 +11,5,0,0,1,526451,1,1998.976,45.02943,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,95.2,6.9,0,87.5,0,0,0,0,1.609438,0,0,0,0,0,0,0,87.5,7.600891,1.609438,,0 +11,5,0,0,2,526451,1,1998.976,46.02943,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,95.2,6.9,0,87.5,0,0,0,0,1.609438,0,0,0,0,0,0,0,87.5,7.600891,1.609438,,0 +11,5,0,0,3,526451,1,1998.976,47.02943,0,10,1,11.07266,0,0,0,0,11.07266,0,0,0,0,0,6,95.2,6.9,0,87.5,0,0,0,0,1.791759,0,0,0,0,0,0,0,87.5,7.600891,1.791759,2.40448,1 +11,5,0,0,1,526452,1,1998.976,42.10267,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,80.3,13.8,0,72.7,0,0,0,0,1.609438,0,0,0,0,0,0,0,72.7,7.600891,1.609438,,0 +11,5,0,0,2,526452,1,1998.976,43.10267,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,80.3,13.8,0,72.7,0,0,0,0,1.609438,0,0,0,0,0,0,0,72.7,7.600891,1.609438,,0 +11,5,0,0,3,526452,1,1998.976,44.10267,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,80.3,13.8,0,72.7,0,0,0,0,1.791759,0,0,0,0,0,0,0,72.7,7.600891,1.791759,,0 +6,5,25,0,1,526457,1,1484.895,48.95551,1,6,1,0,0,0,0,0,0,0,0,0,0,0,2,64.4,10.57626,1,62.5,190.4,0,0,0,.6931472,0,0,3.258096,6.635421,0,1,0,62.5,7.303772,.6931472,,0 +6,5,25,0,2,526457,1,1484.895,49.95551,1,6,1,15.18603,0,0,0,0,15.18603,0,0,0,0,0,2,64.4,10.57626,1,62.5,190.4,0,0,0,.6931472,0,0,3.258096,6.635421,0,1,0,62.5,7.303772,.6931472,2.720376,1 +6,5,25,0,3,526457,1,1484.895,50.95551,1,6,1,0,0,0,0,0,0,0,0,0,0,0,1,64.4,10.57626,1,62.5,190.4,0,0,0,0,0,0,3.258096,6.635421,0,1,0,62.5,7.303772,0,,0 +10,5,50,0,1,526458,1,4537.243,40.77481,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,75.5,10.3,0,63.1,540,0,0,0,1.098612,0,0,3.931826,6.984716,1,0,0,63.1,8.420296,1.098612,,0 +10,5,50,0,2,526458,1,4537.243,41.77481,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,75.5,10.3,0,63.1,540,0,0,0,1.098612,0,0,3.931826,6.984716,1,0,0,63.1,8.420296,1.098612,,0 +10,5,50,0,3,526458,1,4537.243,42.77481,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,75.5,10.3,0,63.1,540,0,0,0,1.098612,0,0,3.931826,6.984716,1,0,0,63.1,8.420296,1.098612,,0 +10,5,50,0,4,526458,1,4537.243,43.77481,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,75.5,10.3,0,63.1,540,0,0,0,1.098612,0,0,3.931826,6.984716,1,0,0,63.1,8.420296,1.098612,,0 +10,5,50,0,5,526458,1,4537.243,44.77481,1,10,1,66.64411,0,0,0,2310.217,2376.861,1,0,0,1,0,3,75.5,10.3,0,63.1,540,0,0,0,1.098612,0,0,3.931826,6.984716,1,0,0,63.1,8.420296,1.098612,7.773536,1 +10,5,50,0,1,526459,1,4537.243,13.32786,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,78.3,10.57626,0,74.1,540,0,1,0,1.098612,0,0,3.931826,6.984716,1,0,0,74.1,8.420296,1.098612,,0 +10,5,50,0,2,526459,1,4537.243,14.32786,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,78.3,10.57626,0,74.1,540,0,1,0,1.098612,0,0,3.931826,6.984716,1,0,0,74.1,8.420296,1.098612,,0 +10,5,50,0,3,526459,1,4537.243,15.32786,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,78.3,10.57626,0,74.1,540,0,1,0,1.098612,0,0,3.931826,6.984716,1,0,0,74.1,8.420296,1.098612,,0 +10,5,50,0,4,526459,1,4537.243,16.32786,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,78.3,10.57626,0,74.1,540,0,1,0,1.098612,0,0,3.931826,6.984716,1,0,0,74.1,8.420296,1.098612,,0 +10,5,50,0,5,526459,1,4537.243,17.32786,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,78.3,10.57626,0,74.1,540,0,1,0,1.098612,0,0,3.931826,6.984716,1,0,0,74.1,8.420296,1.098612,,0 +10,5,50,0,1,526460,1,4537.243,11.78097,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,76.7,10.57626,0,88.9,540,0,1,1,1.098612,0,0,3.931826,6.984716,1,0,0,88.9,8.420296,1.098612,,0 +10,5,50,0,2,526460,1,4537.243,12.78097,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,76.7,10.57626,0,88.9,540,0,1,1,1.098612,0,0,3.931826,6.984716,1,0,0,88.9,8.420296,1.098612,,0 +10,5,50,0,3,526460,1,4537.243,13.78097,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,76.7,10.57626,0,88.9,540,0,1,1,1.098612,0,0,3.931826,6.984716,1,0,0,88.9,8.420296,1.098612,,0 +10,5,50,0,4,526460,1,4537.243,14.78097,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,76.7,10.57626,0,88.9,540,0,1,1,1.098612,0,0,3.931826,6.984716,1,0,0,88.9,8.420296,1.098612,,0 +10,5,50,0,5,526460,1,4537.243,15.78097,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,76.7,10.57626,0,88.9,540,0,1,1,1.098612,0,0,3.931826,6.984716,1,0,0,88.9,8.420296,1.098612,,0 +13,5,0,0,1,526462,1,1185.868,14.36277,1,8,1,0,0,0,0,0,0,0,0,0,0,0,9,78.2,0,0,75,450,450,1,1,2.197225,6.109248,1,4.564348,6.160541,1,0,0,75,7.079073,2.197225,,0 +13,5,0,0,2,526462,1,1185.868,15.36277,1,8,1,0,0,0,0,0,0,0,0,0,0,0,6,78.2,0,0,75,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,1,0,0,75,7.079073,1.791759,,0 +13,5,0,0,3,526462,1,1185.868,16.36276,1,8,1,0,0,0,0,0,0,0,0,0,0,0,6,78.2,0,0,75,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,1,0,0,75,7.079073,1.791759,,0 +13,5,0,0,1,526463,1,1185.868,40.42163,1,8,1,0,0,0,0,0,0,0,0,0,0,0,9,80.3,17.2,1,38.6,450,450,0,0,2.197225,6.109248,1,4.564348,6.160541,1,0,0,38.6,7.079073,2.197225,,0 +13,5,0,0,2,526463,1,1185.868,41.42163,1,8,1,0,0,0,0,0,0,0,0,0,0,0,6,80.3,17.2,1,38.6,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,38.6,7.079073,1.791759,,0 +13,5,0,0,3,526463,1,1185.868,42.42163,1,8,1,0,0,0,0,0,0,0,0,0,0,0,6,80.3,17.2,1,38.6,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,38.6,7.079073,1.791759,,0 +13,5,0,0,1,526464,1,1185.868,9.995893,0,8,1,0,0,0,0,0,0,0,0,0,0,0,9,66.7,10.57626,0,70.4,450,450,1,0,2.197225,6.109248,1,4.564348,6.160541,1,0,0,70.4,7.079073,2.197225,,0 +13,5,0,0,2,526464,1,1185.868,10.99589,0,8,1,0,0,0,0,0,0,0,0,0,0,0,6,66.7,10.57626,0,70.4,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,70.4,7.079073,1.791759,,0 +13,5,0,0,3,526464,1,1185.868,11.99589,0,8,1,0,0,0,0,0,0,0,0,0,0,0,6,66.7,10.57626,0,70.4,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,70.4,7.079073,1.791759,,0 +13,5,0,0,1,526465,1,1185.868,18.98973,1,9,1,0,0,0,0,0,0,0,0,0,0,0,9,61.7,6.9,0,63.6,450,450,0,0,2.197225,6.109248,1,4.564348,6.160541,1,0,0,63.6,7.079073,2.197225,,0 +13,5,0,0,1,526466,1,1185.868,11.0883,1,8,1,0,0,0,0,0,0,0,0,0,0,0,9,85,10.57626,0,85.2,450,450,1,1,2.197225,6.109248,1,4.564348,6.160541,1,0,0,85.2,7.079073,2.197225,,0 +13,5,0,0,2,526466,1,1185.868,12.0883,1,8,1,0,0,0,0,0,0,0,0,0,0,0,6,85,10.57626,0,85.2,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,1,0,0,85.2,7.079073,1.791759,,0 +13,5,0,0,3,526466,1,1185.868,13.0883,1,8,1,0,0,0,0,0,0,0,0,0,0,0,6,85,10.57626,0,85.2,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,1,0,0,85.2,7.079073,1.791759,,0 +13,5,0,0,1,526467,1,1185.868,15.44969,0,8,1,0,0,0,0,0,0,0,0,0,0,0,9,83,3.4,0,68.2,450,450,1,0,2.197225,6.109248,1,4.564348,6.160541,1,0,0,68.2,7.079073,2.197225,,0 +13,5,0,0,2,526467,1,1185.868,16.44969,0,8,1,0,0,0,0,0,0,0,0,0,0,0,6,83,3.4,0,68.2,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,68.2,7.079073,1.791759,,0 +13,5,0,0,3,526467,1,1185.868,17.44969,0,8,1,0,0,0,0,0,0,0,0,0,0,0,6,83,3.4,0,68.2,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,68.2,7.079073,1.791759,,0 +13,5,0,0,1,526468,1,1185.868,12.8679,1,8,1,0,0,0,0,0,0,0,0,0,0,0,9,63.3,10.57626,0,81.5,450,450,1,1,2.197225,6.109248,1,4.564348,6.160541,1,0,0,81.5,7.079073,2.197225,,0 +13,5,0,0,2,526468,1,1185.868,13.8679,1,8,1,2.250563,0,0,0,0,2.250563,0,0,0,1,0,6,63.3,10.57626,0,81.5,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,1,0,0,81.5,7.079073,1.791759,.8111802,1 +13,5,0,0,3,526468,1,1185.868,14.8679,1,8,1,0,0,0,0,0,0,0,0,0,0,0,6,63.3,10.57626,0,81.5,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,1,0,0,81.5,7.079073,1.791759,,0 +13,5,0,0,1,526469,1,1185.868,17.78234,1,8,1,0,0,0,0,0,0,0,0,0,0,0,9,59,3.4,0,43.8,450,450,1,1,2.197225,6.109248,1,4.564348,6.160541,1,0,0,43.8,7.079073,2.197225,,0 +10,5,50,1,1,526470,1,4288.563,10.60643,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,1,59.3,960.6,960.6,1,1,1.386294,6.867558,0,3.931826,7.560705,0,0,0,59.3,8.36394,1.386294,,0 +10,5,50,1,2,526470,1,4288.563,11.60643,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,1,59.3,960.6,960.6,1,1,1.386294,6.867558,0,3.931826,7.560705,0,0,0,59.3,8.36394,1.386294,,0 +10,5,50,1,3,526470,1,4288.563,12.60643,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,1,59.3,960.6,960.6,1,1,1.386294,6.867558,0,3.931826,7.560705,0,0,0,59.3,8.36394,1.386294,,0 +10,5,50,1,4,526470,1,4288.563,13.60643,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,1,59.3,960.6,960.6,1,1,1.386294,6.867558,0,3.931826,7.560705,0,0,0,59.3,8.36394,1.386294,,0 +10,5,50,1,5,526470,1,4288.563,14.60643,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,1,59.3,960.6,960.6,1,1,1.386294,6.867558,0,3.931826,7.560705,0,0,0,59.3,8.36394,1.386294,,0 +10,5,50,1,1,526472,1,4288.563,8.013689,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,0,70.4,960.6,960.6,1,0,1.386294,6.867558,0,3.931826,7.560705,0,0,0,70.4,8.36394,1.386294,,0 +10,5,50,1,2,526472,1,4288.563,9.013689,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,0,70.4,960.6,960.6,1,0,1.386294,6.867558,0,3.931826,7.560705,0,0,0,70.4,8.36394,1.386294,,0 +10,5,50,1,3,526472,1,4288.563,10.01369,0,10,1,11.42615,0,0,0,0,11.42615,0,0,0,0,0,4,83.3,10.57626,0,70.4,960.6,960.6,1,0,1.386294,6.867558,0,3.931826,7.560705,0,0,0,70.4,8.36394,1.386294,2.435905,1 +10,5,50,1,4,526472,1,4288.563,11.01369,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,0,70.4,960.6,960.6,1,0,1.386294,6.867558,0,3.931826,7.560705,0,0,0,70.4,8.36394,1.386294,,0 +10,5,50,1,5,526472,1,4288.563,12.01369,0,10,1,21.28028,0,0,0,0,21.28028,0,0,0,0,0,4,83.3,10.57626,0,70.4,960.6,960.6,1,0,1.386294,6.867558,0,3.931826,7.560705,0,0,0,70.4,8.36394,1.386294,3.057781,1 +10,5,50,1,1,526473,1,4288.563,9.442847,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,73.3,10.57626,0,66.7,960.6,960.6,1,1,1.386294,6.867558,0,3.931826,7.560705,0,0,0,66.7,8.36394,1.386294,,0 +10,5,50,1,2,526473,1,4288.563,10.44285,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,73.3,10.57626,0,66.7,960.6,960.6,1,1,1.386294,6.867558,0,3.931826,7.560705,0,0,0,66.7,8.36394,1.386294,,0 +10,5,50,1,3,526473,1,4288.563,11.44285,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,73.3,10.57626,0,66.7,960.6,960.6,1,1,1.386294,6.867558,0,3.931826,7.560705,0,0,0,66.7,8.36394,1.386294,,0 +10,5,50,1,4,526473,1,4288.563,12.44285,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,73.3,10.57626,0,66.7,960.6,960.6,1,1,1.386294,6.867558,0,3.931826,7.560705,0,0,0,66.7,8.36394,1.386294,,0 +10,5,50,1,5,526473,1,4288.563,13.44285,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,73.3,10.57626,0,66.7,960.6,960.6,1,1,1.386294,6.867558,0,3.931826,7.560705,0,0,0,66.7,8.36394,1.386294,,0 +10,5,50,1,1,526474,1,4288.563,30.08077,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,56.4,3.4,0,62.5,960.6,960.6,0,0,1.386294,6.867558,0,3.931826,7.560705,0,1,0,62.5,8.36394,1.386294,,0 +10,5,50,1,2,526474,1,4288.563,31.08077,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,56.4,3.4,0,62.5,960.6,960.6,0,0,1.386294,6.867558,0,3.931826,7.560705,0,1,0,62.5,8.36394,1.386294,,0 +10,5,50,1,3,526474,1,4288.563,32.08076,1,10,1,23.2755,0,0,0,0,23.2755,0,0,0,1,0,4,56.4,3.4,0,62.5,960.6,960.6,0,0,1.386294,6.867558,0,3.931826,7.560705,0,1,0,62.5,8.36394,1.386294,3.147401,1 +10,5,50,1,4,526474,1,4288.563,33.08076,1,10,1,19.36219,0,0,0,0,19.36219,0,0,0,1,0,4,56.4,3.4,0,62.5,960.6,960.6,0,0,1.386294,6.867558,0,3.931826,7.560705,0,1,0,62.5,8.36394,1.386294,2.963322,1 +10,5,50,1,5,526474,1,4288.563,34.08076,1,10,1,10.38062,0,0,0,0,10.38062,0,0,0,0,0,4,56.4,3.4,0,62.5,960.6,960.6,0,0,1.386294,6.867558,0,3.931826,7.560705,0,1,0,62.5,8.36394,1.386294,2.339941,1 +11,5,0,1,1,526482,1,9806.964,59.19781,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,64.4,13.8,0,88.1,0,777.6,0,0,1.098612,6.656212,0,0,0,0,1,0,88.1,9.19095,1.098612,,0 +11,5,0,1,2,526482,1,9806.964,60.19781,0,9,1,66.41222,0,0,0,0,66.41222,0,0,0,0,0,3,64.4,13.8,0,88.1,0,777.6,0,0,1.098612,6.656212,0,0,0,0,1,0,88.1,9.19095,1.098612,4.195881,1 +11,5,0,1,3,526482,1,9806.964,61.19781,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,64.4,13.8,0,88.1,0,777.6,0,0,1.098612,6.656212,0,0,0,0,1,0,88.1,9.19095,1.098612,,0 +11,5,0,0,1,526483,1,9806.964,32.15879,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,77.7,3.4,0,62.5,0,777.6,0,0,1.098612,6.656212,0,0,0,0,0,0,62.5,9.19095,1.098612,,0 +11,5,0,0,2,526483,1,9806.964,33.15879,1,11,1,22.13741,6.240458,0,0,0,28.37786,0,0,0,3,0,3,77.7,3.4,0,62.5,0,777.6,0,0,1.098612,6.656212,0,0,0,0,0,0,62.5,9.19095,1.098612,3.345609,1 +11,5,0,0,3,526483,1,9806.964,34.15879,1,11,1,26.82927,21.28223,0,0,0,48.1115,0,0,0,2,1,3,77.7,3.4,0,62.5,0,777.6,0,0,1.098612,6.656212,0,0,0,0,0,0,62.5,9.19095,1.098612,3.873521,1 +11,5,0,0,1,526484,1,9806.964,50.9514,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,79.1,20.7,0,70.2,0,777.6,0,0,1.098612,6.656212,0,0,0,0,1,0,70.2,9.19095,1.098612,,0 +11,5,0,0,2,526484,1,9806.964,51.9514,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,79.1,20.7,0,70.2,0,777.6,0,0,1.098612,6.656212,0,0,0,0,1,0,70.2,9.19095,1.098612,,0 +11,5,0,0,3,526484,1,9806.964,52.9514,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,79.1,20.7,0,70.2,0,777.6,0,0,1.098612,6.656212,0,0,0,0,1,0,70.2,9.19095,1.098612,,0 +13,5,0,1,1,526485,1,3130.205,18.55989,1,9,1,0,0,0,0,306.7393,306.7393,1,1,0,0,0,4,82.4,0,1,72.7,450,0,0,0,1.386294,0,1,4.564348,6.160541,1,0,0,72.7,8.049173,1.386294,5.725998,1 +13,5,0,1,2,526485,1,3130.205,19.55989,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,82.4,0,1,72.7,450,0,0,0,1.609438,0,1,4.564348,6.160541,1,0,0,72.7,8.049173,1.609438,,0 +13,5,0,1,3,526485,1,3130.205,20.55989,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,82.4,0,1,72.7,450,0,0,0,1.609438,0,1,4.564348,6.160541,1,0,0,72.7,8.049173,1.609438,,0 +13,5,0,1,4,526485,1,3130.205,21.55989,1,9,1,10.9558,7.457499,0,0,208.538,226.9513,1,1,0,2,0,5,82.4,0,1,72.7,450,0,0,0,1.609438,0,1,4.564348,6.160541,1,0,0,72.7,8.049173,1.609438,5.424735,1 +13,5,0,1,5,526485,1,3130.205,22.55989,1,9,1,167.6844,1.876501,0,0,855.9177,1025.479,1,0,0,7,0,7,82.4,0,1,72.7,450,0,0,0,1.94591,0,1,4.564348,6.160541,1,0,0,72.7,8.049173,1.94591,6.932915,1 +13,5,0,1,1,526486,1,3130.205,48.23272,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.5,13.8,0,84.1,450,0,0,0,1.386294,0,1,4.564348,6.160541,1,0,0,84.1,8.049173,1.386294,,0 +13,5,0,1,2,526486,1,3130.205,49.23272,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,83.5,13.8,0,84.1,450,0,0,0,1.609438,0,1,4.564348,6.160541,1,0,0,84.1,8.049173,1.609438,,0 +13,5,0,1,3,526486,1,3130.205,50.23272,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,83.5,13.8,0,84.1,450,0,0,0,1.609438,0,1,4.564348,6.160541,1,0,0,84.1,8.049173,1.609438,,0 +13,5,0,1,4,526486,1,3130.205,51.23272,1,10,1,11.33358,0,0,0,0,11.33358,0,0,0,1,0,5,83.5,13.8,0,84.1,450,0,0,0,1.609438,0,1,4.564348,6.160541,1,0,0,84.1,8.049173,1.609438,2.42777,1 +13,5,0,1,5,526486,1,3130.205,52.23272,1,10,1,8.576329,0,25.68782,0,0,34.26415,0,0,0,1,0,7,83.5,13.8,0,84.1,450,0,0,0,1.94591,0,1,4.564348,6.160541,1,0,0,84.1,8.049173,1.94591,3.5341,1 +13,5,0,1,1,526487,1,3130.205,22.91034,1,14,1,8.671952,0,0,0,0,8.671952,0,0,0,0,0,4,63.8,0,0,72.7,450,0,0,0,1.386294,0,1,4.564348,6.160541,1,0,0,72.7,8.049173,1.386294,2.160094,1 +13,5,0,1,2,526487,1,3130.205,23.91034,1,14,1,0,0,0,0,0,0,0,0,0,0,0,5,63.8,0,0,72.7,450,0,0,0,1.609438,0,1,4.564348,6.160541,1,0,0,72.7,8.049173,1.609438,,0 +13,5,0,1,3,526487,1,3130.205,24.91034,1,14,1,30.10097,9.785444,0,0,0,39.88641,0,0,0,3,1,5,63.8,0,0,72.7,450,0,0,0,1.609438,0,1,4.564348,6.160541,1,0,0,72.7,8.049173,1.609438,3.686036,1 +13,5,0,1,4,526487,1,3130.205,25.91034,1,14,1,55.91235,0,0,0,630.5251,686.4375,1,0,0,3,0,5,63.8,0,0,72.7,450,0,0,0,1.609438,0,1,4.564348,6.160541,1,0,0,72.7,8.049173,1.609438,6.531515,1 +13,5,0,1,5,526487,1,3130.205,26.91034,1,14,1,13.20755,0,0,0,0,13.20755,0,0,0,2,0,7,63.8,0,0,72.7,450,0,0,0,1.94591,0,1,4.564348,6.160541,1,0,0,72.7,8.049173,1.94591,2.580788,1 +13,5,0,1,1,526488,1,3130.205,3.154004,0,10,1,3.964321,0,0,0,0,3.964321,0,0,0,1,0,4,77.40034,10.57626,0,81.5,450,0,1,0,1.386294,0,1,4.564348,6.160541,1,0,0,81.5,8.049173,1.386294,1.377335,1 +13,5,0,1,2,526488,1,3130.205,4.154004,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,81.5,450,0,1,0,1.609438,0,1,4.564348,6.160541,1,0,0,81.5,8.049173,1.609438,,0 +13,5,0,1,3,526488,1,3130.205,5.154004,0,10,1,56.45772,3.496003,0,0,0,59.95372,0,0,0,3,1,5,77.40034,10.57626,0,81.5,450,0,1,0,1.609438,0,1,4.564348,6.160541,1,0,0,81.5,8.049173,1.609438,4.093573,1 +13,5,0,1,4,526488,1,3130.205,6.154004,0,10,1,19.0782,0,0,0,0,19.0782,0,0,0,1,0,5,77.40034,10.57626,0,81.5,450,0,1,0,1.609438,0,1,4.564348,6.160541,1,0,0,81.5,8.049173,1.609438,2.948546,1 +13,5,0,1,5,526488,1,3130.205,7.154004,0,10,1,65.1801,0,0,0,0,65.1801,0,0,0,2,1,7,77.40034,10.57626,0,81.5,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,81.5,8.049173,1.94591,4.177154,1 +16,5,95,1,1,526489,1,8746.032,25.44285,1,12,1,35.77201,.8379413,0,0,0,36.60995,0,0,0,0,0,3,56.4,17.2,1,53.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,53.4,9.076469,1.098612,3.60032,1 +16,5,95,1,2,526489,1,8746.032,26.44285,1,12,1,30.53435,3.843511,0,0,461.8321,496.2099,1,0,0,3,0,3,56.4,17.2,1,53.4,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,53.4,9.076469,1.098612,6.206999,1 +16,5,95,1,3,526489,1,8746.032,27.44285,1,12,1,318.4669,18.19164,0,0,0,336.6585,0,0,0,7,0,4,56.4,17.2,1,53.4,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,53.4,9.076469,1.386294,5.819069,1 +16,5,95,1,1,526490,1,8746.032,2.732375,1,12,1,56.4228,1.650362,0,0,0,58.07316,0,0,0,1,0,3,77.40034,10.57626,0,85.2,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,1,0,0,85.2,9.076469,1.098612,4.061704,1 +16,5,95,1,2,526490,1,8746.032,3.732375,1,12,1,0,2.167939,0,0,0,2.167939,0,0,0,0,0,3,77.40034,10.57626,0,85.2,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,1,0,0,85.2,9.076469,1.098612,.7737769,1 +16,5,95,1,3,526490,1,8746.032,4.732375,1,12,1,15.67944,3.376307,0,0,0,19.05575,0,0,0,2,0,4,77.40034,10.57626,0,85.2,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,85.2,9.076469,1.386294,2.947369,1 +16,5,95,1,1,526491,1,8746.032,27.93429,0,12,1,14.03658,6.358996,0,0,0,20.39558,0,0,0,3,0,3,57.4,13.8,0,54.5,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,54.5,9.076469,1.098612,3.015318,1 +16,5,95,1,2,526491,1,8746.032,28.93429,0,12,1,35.49618,8.053435,0,0,0,43.54962,0,0,0,4,0,3,57.4,13.8,0,54.5,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,54.5,9.076469,1.098612,3.773901,1 +16,5,95,1,3,526491,1,8746.032,29.93429,0,12,1,25.08711,5.979094,0,0,0,31.0662,0,0,0,3,0,4,57.4,13.8,0,54.5,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,54.5,9.076469,1.386294,3.436121,1 +11,5,0,1,1,526508,0,4352.791,60.84873,0,6,1,14.88728,0,0,0,0,14.88728,0,0,0,1,0,2,80.9,10.3,0,73.9,0,565.28,0,0,.6931472,6.337321,0,0,0,1,0,0,73.9,8.378802,.6931472,2.700507,1 +11,5,0,1,2,526508,0,4352.791,61.84873,0,6,1,77.48092,4.770992,33.74046,0,0,115.9924,0,0,0,3,0,2,80.9,10.3,0,73.9,0,565.28,0,0,.6931472,6.337321,0,0,0,1,0,0,73.9,8.378802,.6931472,4.753524,1 +11,5,0,1,3,526508,0,4352.791,62.84873,0,6,1,54.3554,16.09756,0,0,0,70.45296,0,0,0,4,0,2,80.9,10.3,0,73.9,0,565.28,0,0,.6931472,6.337321,0,0,0,1,0,0,73.9,8.378802,.6931472,4.254945,1 +11,5,0,1,1,526509,0,4352.791,59.82204,1,12,1,46.7886,147.6478,0,0,0,194.4364,0,0,0,5,0,2,85.1,10.3,0,59.1,0,565.28,0,0,.6931472,6.337321,0,0,0,1,0,0,59.1,8.378802,.6931472,5.270105,1 +11,5,0,1,2,526509,0,4352.791,60.82204,1,12,1,173.2824,197.3664,55.57252,0,0,426.2214,0,0,0,6,0,2,85.1,10.3,0,59.1,0,565.28,0,0,.6931472,6.337321,0,0,0,1,0,0,59.1,8.378802,.6931472,6.054959,1 +11,5,0,1,3,526509,0,4352.791,61.82204,1,12,1,54.3554,282.9024,0,0,0,337.2578,0,0,0,8,0,2,85.1,10.3,0,59.1,0,565.28,0,0,.6931472,6.337321,0,0,0,1,0,0,59.1,8.378802,.6931472,5.820848,1 +14,5,95,1,1,526511,1,7497.361,57.16632,1,10,1,47.07631,91.32805,0,0,0,138.4044,0,0,0,5,0,2,94.7,10.3,0,64.8,650,650,0,0,.6931472,6.476973,0,4.564348,6.528265,0,1,0,64.8,8.92244,.6931472,4.93018,1 +14,5,95,1,2,526511,1,7497.361,58.16632,1,10,1,32.12483,112.4782,0,0,0,144.603,0,0,0,4,0,2,94.7,10.3,0,64.8,650,650,0,0,.6931472,6.476973,0,4.564348,6.528265,0,1,0,64.8,8.92244,.6931472,4.973992,1 +14,5,95,1,3,526511,1,7497.361,59.16632,1,10,1,27.34539,97.33277,0,0,0,124.6782,0,0,0,4,0,2,94.7,10.3,0,64.8,650,650,0,0,.6931472,6.476973,0,4.564348,6.528265,0,1,0,64.8,8.92244,.6931472,4.825736,1 +14,5,95,1,4,526511,1,7497.361,60.16632,1,10,1,30.22289,70.09822,0,0,0,100.3211,0,0,0,4,0,2,94.7,10.3,0,64.8,650,650,0,0,.6931472,6.476973,0,4.564348,6.528265,0,1,0,64.8,8.92244,.6931472,4.608376,1 +14,5,95,1,5,526511,1,7497.361,61.16632,1,10,1,37.73585,102.0583,0,0,0,139.7942,0,0,0,5,0,2,94.7,10.3,0,64.8,650,650,0,0,.6931472,6.476973,0,4.564348,6.528265,0,1,0,64.8,8.92244,.6931472,4.940171,1 +14,5,95,1,1,526512,1,7497.361,58.91307,0,9,1,0,0,0,0,0,0,0,0,0,0,0,2,87.4,10.3,0,69,650,650,0,0,.6931472,6.476973,0,4.564348,6.528265,0,1,0,69,8.92244,.6931472,,0 +14,5,95,1,2,526512,1,7497.361,59.91307,0,9,1,0,0,0,0,0,0,0,0,0,0,0,2,87.4,10.3,0,69,650,650,0,0,.6931472,6.476973,0,4.564348,6.528265,0,1,0,69,8.92244,.6931472,,0 +14,5,95,1,3,526512,1,7497.361,60.91307,0,9,1,0,0,0,0,0,0,0,0,0,0,0,2,87.4,10.3,0,69,650,650,0,0,.6931472,6.476973,0,4.564348,6.528265,0,1,0,69,8.92244,.6931472,,0 +14,5,95,1,4,526512,1,7497.361,61.91307,0,9,1,0,0,0,0,0,0,0,0,0,0,0,2,87.4,10.3,0,69,650,650,0,0,.6931472,6.476973,0,4.564348,6.528265,0,1,0,69,8.92244,.6931472,,0 +14,5,95,1,5,526512,1,7497.361,62.91307,0,9,1,8.576329,0,0,0,0,8.576329,0,0,0,1,0,2,87.4,10.3,0,69,650,650,0,0,.6931472,6.476973,0,4.564348,6.528265,0,1,0,69,8.92244,.6931472,2.149006,1 +13,5,0,1,1,526513,0,13789.04,32.14237,0,20,1,134.2028,40.80354,0,0,0,175.0063,0,0,0,9,0,3,86.2,20.7,0,53.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,53.4,9.531702,1.098612,5.164822,1 +13,5,0,1,2,526513,0,13789.04,33.14237,0,20,1,54.02342,42.31583,102.0023,0,0,198.3415,0,0,0,5,1,3,86.2,20.7,0,53.4,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,53.4,9.531702,1.098612,5.28999,1 +13,5,0,1,3,526513,0,13789.04,34.14237,0,20,1,43.2247,36.31561,111.4923,0,0,191.0326,0,0,0,4,2,4,86.2,20.7,0,53.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,53.4,9.531702,1.386294,5.252444,1 +16,5,95,0,1,526517,0,7100.871,33.68378,0,15,1,0,0,0,0,0,0,0,0,0,0,0,3,97.3,0,0,90.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,90.9,8.868114,1.098612,,0 +16,5,95,0,2,526517,0,7100.871,34.68378,0,15,1,28.71175,10.26445,0,0,0,38.9762,0,0,0,3,1,3,97.3,0,0,90.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,90.9,8.868114,1.098612,3.662951,1 +16,5,95,0,3,526517,0,7100.871,35.68378,0,15,1,24.35678,1.766724,0,0,0,26.1235,0,0,0,2,0,3,97.3,0,0,90.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,90.9,8.868114,1.098612,3.262835,1 +16,5,95,0,1,526518,0,7100.871,30.53525,1,15,1,0,0,0,0,0,0,0,0,0,0,0,3,99.5,3.4,0,98.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,98.9,8.868114,1.098612,,0 +16,5,95,0,2,526518,0,7100.871,31.53525,1,15,1,159.8036,0,7.555724,0,0,167.3593,0,0,0,1,6,3,99.5,3.4,0,98.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,98.9,8.868114,1.098612,5.120143,1 +16,5,95,0,3,526518,0,7100.871,32.53525,1,15,1,506.3465,0,0,0,0,506.3465,0,0,0,0,55,3,99.5,3.4,0,98.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,98.9,8.868114,1.098612,6.227221,1 +13,5,0,1,1,526519,0,7826.421,57.17728,1,11,1,98.68141,7.179924,32.02042,0,0,137.8818,0,0,0,2,0,2,84,10.3,0,68.2,300,646.44,0,0,.6931472,6.47148,1,4.564348,5.755076,0,0,0,68.2,8.965388,.6931472,4.926396,1 +13,5,0,1,2,526519,0,7826.421,58.17728,1,11,1,150,3.496183,23.0229,0,0,176.5191,0,0,0,8,0,2,84,10.3,0,68.2,300,646.44,0,0,.6931472,6.47148,1,4.564348,5.755076,0,0,0,68.2,8.965388,.6931472,5.173429,1 +13,5,0,1,3,526519,0,7826.421,59.17728,1,11,1,81.88153,9.331011,0,0,0,91.21255,0,0,0,2,0,2,84,10.3,0,68.2,300,646.44,0,0,.6931472,6.47148,1,4.564348,5.755076,0,0,0,68.2,8.965388,.6931472,4.513193,1 +13,5,0,1,1,526520,0,7826.421,57.28405,0,11,1,78.26456,144.4789,23.15185,0,0,245.8954,0,0,0,3,0,2,79.3,27.6,1,39.8,300,646.44,0,0,.6931472,6.47148,1,4.564348,5.755076,0,0,0,39.8,8.965388,.6931472,5.504906,1 +13,5,0,1,2,526520,0,7826.421,58.28405,0,11,1,76.71756,134.3359,6.729008,0,0,217.7824,0,0,0,2,0,2,79.3,27.6,1,39.8,300,646.44,0,0,.6931472,6.47148,1,4.564348,5.755076,0,0,0,39.8,8.965388,.6931472,5.383497,1 +13,5,0,1,3,526520,0,7826.421,59.28405,0,11,1,146.6899,159.8606,47.10104,0,0,353.6516,0,0,0,4,0,2,79.3,27.6,1,39.8,300,646.44,0,0,.6931472,6.47148,1,4.564348,5.755076,0,0,0,39.8,8.965388,.6931472,5.868312,1 +13,5,0,1,1,526546,0,5216.078,31.41957,0,17,1,31.90132,1.807741,31.59507,133.9855,0,65.30412,0,0,7,3,0,1,66.5,13.8,0,75,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,75,8.559692,0,4.179055,1 +13,5,0,1,2,526546,0,5216.078,32.41957,0,17,1,29.00763,0,7.541985,171.7557,0,36.54962,0,0,9,2,0,1,66.5,13.8,0,75,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,75,8.559692,0,3.598671,1 +13,5,0,1,3,526546,0,5216.078,33.41957,0,17,1,49.82578,0,24.64112,216.0279,0,74.4669,0,0,12,4,1,1,66.5,13.8,0,75,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,75,8.559692,0,4.310355,1 +7,5,25,0,1,526549,1,4071.685,11.81383,1,14,1,0,0,0,0,0,0,0,0,0,0,0,6,95,10.57626,.1442925,63,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,63,8.312057,1.791759,,0 +7,5,25,0,2,526549,1,4071.685,12.81383,1,14,1,0,0,0,0,0,0,0,0,0,0,0,6,95,10.57626,.1442925,63,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,63,8.312057,1.791759,,0 +7,5,25,0,3,526549,1,4071.685,13.81383,1,14,1,41.34948,3.847751,0,0,0,45.19723,0,0,0,3,0,6,95,10.57626,.1442925,63,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,63,8.312057,1.791759,3.811036,1 +7,5,25,0,1,526550,1,4071.685,17.24025,1,14,1,0,0,0,0,0,0,0,0,0,0,0,6,67.6,17.2,0,73.9,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,1,0,0,73.9,8.312057,1.791759,,0 +7,5,25,0,2,526550,1,4071.685,18.24025,1,14,1,9.491268,0,32.27031,0,0,41.76158,0,0,0,0,1,6,67.6,17.2,0,73.9,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,73.9,8.312057,1.791759,3.731977,1 +7,5,25,0,3,526550,1,4071.685,19.24025,1,14,1,19.37716,8.702422,0,0,0,28.07958,0,0,0,1,0,6,67.6,17.2,0,73.9,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,73.9,8.312057,1.791759,3.335043,1 +7,5,25,0,1,526551,1,4071.685,47.46064,1,14,1,89.29327,28.58654,0,0,0,117.8798,0,0,0,7,0,6,55.9,20.7,1,30.7,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,1,0,30.7,8.312057,1.791759,4.769666,1 +7,5,25,0,2,526551,1,4071.685,48.46064,1,14,1,109.9089,58.8041,32.27031,0,0,200.9833,0,0,0,6,1,6,55.9,20.7,1,30.7,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,1,0,30.7,8.312057,1.791759,5.303222,1 +7,5,25,0,3,526551,1,4071.685,49.46064,1,14,1,271.1073,66.73357,0,0,0,337.8408,0,0,0,9,14,6,55.9,20.7,1,30.7,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,1,0,30.7,8.312057,1.791759,5.822575,1 +7,5,25,0,1,526552,1,4071.685,10.05339,1,14,1,0,0,0,0,0,0,0,0,0,0,0,6,86.7,10.57626,.1442925,40.7,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,1,0,40.7,8.312057,1.791759,,0 +7,5,25,0,2,526552,1,4071.685,11.05339,1,14,1,0,0,0,0,904.328,904.328,1,0,0,0,0,6,86.7,10.57626,.1442925,40.7,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,1,0,40.7,8.312057,1.791759,6.807192,1 +7,5,25,0,3,526552,1,4071.685,12.05339,1,14,1,145.6747,23.9308,0,0,389.2733,558.8789,1,1,0,7,0,6,86.7,10.57626,.1442925,40.7,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,1,0,40.7,8.312057,1.791759,6.325933,1 +7,5,25,0,1,526553,1,4071.685,48.6653,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,93.1,13.8,0,85.2,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,85.2,8.312057,1.791759,,0 +7,5,25,0,2,526553,1,4071.685,49.6653,0,10,1,9.491268,0,32.27031,0,0,41.76158,0,0,0,0,1,6,93.1,13.8,0,85.2,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,85.2,8.312057,1.791759,3.731977,1 +7,5,25,0,3,526553,1,4071.685,50.6653,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,93.1,13.8,0,85.2,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,85.2,8.312057,1.791759,,0 +7,5,25,0,1,526554,1,4071.685,14.63655,0,14,1,0,0,0,0,0,0,0,0,0,0,0,6,84,3.4,0,69.3,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,69.3,8.312057,1.791759,,0 +7,5,25,0,2,526554,1,4071.685,15.63655,0,14,1,0,0,0,0,0,0,0,0,0,0,0,6,84,3.4,0,69.3,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,69.3,8.312057,1.791759,,0 +7,5,25,0,3,526554,1,4071.685,16.63655,0,14,1,0,0,0,0,0,0,0,0,0,0,0,6,84,3.4,0,69.3,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,69.3,8.312057,1.791759,,0 +11,5,0,0,1,526592,0,3431.644,19.34292,0,8,1,90.45435,2.76782,26.67778,0,0,119.9,0,0,0,3,1,2,77.7,20.7,0,54.5,0,92.4,0,0,.6931472,4.526127,0,0,0,0,0,1,54.5,8.141086,.6931472,4.786658,1 +11,5,0,0,2,526592,0,3431.644,20.34292,0,8,1,73.51838,10.76519,0,0,0,84.28357,0,0,0,5,1,2,77.7,20.7,0,54.5,0,92.4,0,0,.6931472,4.526127,0,0,0,0,0,1,54.5,8.141086,.6931472,4.434187,1 +11,5,0,0,3,526592,0,3431.644,21.34292,0,8,1,348.1901,47.09066,30.44655,0,0,425.7273,0,0,0,15,1,2,77.7,20.7,0,54.5,0,92.4,0,0,.6931472,4.526127,0,0,0,0,0,1,54.5,8.141086,.6931472,6.053799,1 +11,5,0,0,1,526593,0,3431.644,53.72211,1,7,1,209.0454,31.70488,34.18091,0,0,274.9312,0,0,0,14,1,2,84.6,24.1,0,67,0,92.4,0,0,.6931472,4.526127,0,0,0,0,1,0,67,8.141086,.6931472,5.616521,1 +11,5,0,0,2,526593,0,3431.644,54.72211,1,7,1,50.63766,18.89347,0,0,427.2318,496.7629,1,0,0,4,0,2,84.6,24.1,0,67,0,92.4,0,0,.6931472,4.526127,0,0,0,0,1,0,67,8.141086,.6931472,6.208113,1 +11,5,0,0,3,526593,0,3431.644,55.72211,1,7,1,319.0122,23.73816,30.44655,0,0,373.1969,0,0,0,7,2,2,84.6,24.1,0,67,0,92.4,0,0,.6931472,4.526127,0,0,0,0,1,0,67,8.141086,.6931472,5.922106,1 +17,5,25,1,1,526599,1,1638.505,43.96714,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,46.8,13.8,1,71.6,47.35,0,0,0,.6931472,0,0,3.258096,5.243861,1,0,0,71.6,7.40215,.6931472,,0 +17,5,25,1,2,526599,1,1638.505,44.96714,1,12,1,33.96947,3.622137,0,0,0,37.5916,0,0,0,7,0,2,46.8,13.8,1,71.6,47.35,0,0,0,.6931472,0,0,3.258096,5.243861,1,0,0,71.6,7.40215,.6931472,3.626781,1 +17,5,25,1,3,526599,1,1638.505,45.96714,1,12,1,24.39024,6.365854,0,0,0,30.7561,0,0,0,3,0,2,46.8,13.8,1,71.6,47.35,0,0,0,.6931472,0,0,3.258096,5.243861,1,0,0,71.6,7.40215,.6931472,3.426088,1 +17,5,25,1,1,526600,1,1638.505,15.25257,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,0,0,76.1,47.35,0,1,1,.6931472,0,0,3.258096,5.243861,0,0,0,76.1,7.40215,.6931472,,0 +17,5,25,1,2,526600,1,1638.505,16.25257,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,0,0,76.1,47.35,0,1,1,.6931472,0,0,3.258096,5.243861,0,0,0,76.1,7.40215,.6931472,,0 +17,5,25,1,3,526600,1,1638.505,17.25257,1,12,1,26.1324,0,0,0,0,26.1324,0,0,0,2,0,2,86.7,0,0,76.1,47.35,0,1,1,.6931472,0,0,3.258096,5.243861,0,0,0,76.1,7.40215,.6931472,3.263176,1 +16,5,95,1,1,526608,1,4859.824,4.440794,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,100,900,900,1,0,1.791759,6.802395,0,4.564348,6.853688,1,0,0,100,8.488963,1.791759,,0 +16,5,95,1,2,526608,1,4859.824,5.440794,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,100,900,900,1,0,1.791759,6.802395,0,4.564348,6.853688,1,0,0,100,8.488963,1.791759,,0 +16,5,95,1,3,526608,1,4859.824,6.440794,0,11,1,14.5772,1.99411,0,0,0,16.57131,0,0,0,2,0,6,77.40034,10.57626,0,100,900,900,1,0,1.791759,6.802395,0,4.564348,6.853688,1,0,0,100,8.488963,1.791759,2.807673,1 +16,5,95,1,4,526608,1,4859.824,7.440794,0,11,1,40.04533,3.456743,0,18.88931,0,43.50208,0,0,1,0,0,6,77.40034,10.57626,0,100,900,900,1,0,1.791759,6.802395,0,4.564348,6.853688,1,0,0,100,8.488963,1.791759,3.772809,1 +16,5,95,1,5,526608,1,4859.824,8.440794,0,11,1,33.27616,6.26072,0,0,0,39.53688,0,0,0,0,0,5,77.40034,10.57626,0,100,900,900,1,0,1.609438,6.802395,0,4.564348,6.853688,1,0,0,100,8.488963,1.609438,3.677234,1 +16,5,95,1,1,526609,1,4859.824,34.84189,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,62.3,20.7,0,66.7,900,900,0,0,1.791759,6.802395,0,4.564348,6.853688,0,1,0,66.7,8.488963,1.791759,,0 +16,5,95,1,2,526609,1,4859.824,35.84189,1,11,1,15.83295,5.323543,0,0,0,21.15649,0,0,0,2,0,6,62.3,20.7,0,66.7,900,900,0,0,1.791759,6.802395,0,4.564348,6.853688,0,1,0,66.7,8.488963,1.791759,3.051947,1 +16,5,95,1,3,526609,1,4859.824,36.84189,1,11,1,25.19983,8.169962,0,0,0,33.36979,0,0,0,4,0,6,62.3,20.7,0,66.7,900,900,0,0,1.791759,6.802395,0,4.564348,6.853688,0,1,0,66.7,8.488963,1.791759,3.507651,1 +16,5,95,1,4,526609,1,4859.824,37.84189,1,11,1,298.8289,71.5527,61.44692,0,1670.193,2102.021,2,0,0,12,0,6,62.3,20.7,0,66.7,900,900,0,0,1.791759,6.802395,0,4.564348,6.853688,0,1,0,66.7,8.488963,1.791759,7.650655,1 +16,5,95,1,5,526609,1,4859.824,38.84189,1,11,1,116.4666,40.55575,0,0,0,157.0223,0,0,0,5,0,5,62.3,20.7,0,66.7,900,900,0,0,1.609438,6.802395,0,4.564348,6.853688,0,1,0,66.7,8.488963,1.609438,5.056388,1 +16,5,95,1,1,526610,1,4859.824,40.32854,0,6,1,25.27255,7.408325,0,0,0,32.68087,0,0,0,0,0,6,61.2,0,0,54.8,900,900,0,0,1.791759,6.802395,0,4.564348,6.853688,0,1,0,54.8,8.488963,1.791759,3.48679,1 +16,5,95,1,2,526610,1,4859.824,41.32854,0,6,1,0,0,0,0,0,0,0,0,0,0,0,6,61.2,0,0,54.8,900,900,0,0,1.791759,6.802395,0,4.564348,6.853688,0,1,0,54.8,8.488963,1.791759,,0 +16,5,95,1,3,526610,1,4859.824,42.32854,0,6,1,0,8.350863,0,0,0,8.350863,0,0,0,0,0,6,61.2,0,0,54.8,900,900,0,0,1.791759,6.802395,0,4.564348,6.853688,0,1,0,54.8,8.488963,1.791759,2.122365,1 +16,5,95,1,4,526610,1,4859.824,43.32854,0,6,.8169399,0,0,0,0,0,0,0,0,0,0,0,6,61.2,0,0,54.8,900,900,0,0,1.791759,6.802395,0,4.564348,6.853688,0,1,0,54.8,8.488963,1.791759,,0 +16,5,95,1,1,526611,1,4859.824,10.34086,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,83.3,10.57626,0,88.9,900,900,1,1,1.791759,6.802395,0,4.564348,6.853688,1,0,0,88.9,8.488963,1.791759,,0 +16,5,95,1,2,526611,1,4859.824,11.34086,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,83.3,10.57626,0,88.9,900,900,1,1,1.791759,6.802395,0,4.564348,6.853688,1,0,0,88.9,8.488963,1.791759,,0 +16,5,95,1,3,526611,1,4859.824,12.34086,1,11,1,6.310475,1.001262,0,0,0,7.311738,0,0,0,1,0,6,83.3,10.57626,0,88.9,900,900,1,1,1.791759,6.802395,0,4.564348,6.853688,1,0,0,88.9,8.488963,1.791759,1.989481,1 +16,5,95,1,4,526611,1,4859.824,13.34086,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,83.3,10.57626,0,88.9,900,900,1,1,1.791759,6.802395,0,4.564348,6.853688,1,0,0,88.9,8.488963,1.791759,,0 +16,5,95,1,5,526611,1,4859.824,14.34086,1,11,1,35.16295,0,0,0,0,35.16295,0,0,0,2,0,5,83.3,10.57626,0,88.9,900,900,1,1,1.609438,6.802395,0,4.564348,6.853688,1,0,0,88.9,8.488963,1.609438,3.559993,1 +16,5,95,1,1,526612,1,4859.824,15.8193,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,91,3.4,0,80.7,900,900,1,1,1.791759,6.802395,0,4.564348,6.853688,1,0,0,80.7,8.488963,1.791759,,0 +16,5,95,1,2,526612,1,4859.824,16.8193,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,91,3.4,0,80.7,900,900,1,1,1.791759,6.802395,0,4.564348,6.853688,1,0,0,80.7,8.488963,1.791759,,0 +16,5,95,1,3,526612,1,4859.824,17.8193,1,11,1,8.687421,0,0,0,0,8.687421,0,0,0,1,0,6,91,3.4,0,80.7,900,900,1,1,1.791759,6.802395,0,4.564348,6.853688,1,0,0,80.7,8.488963,1.791759,2.161876,1 +16,5,95,1,4,526612,1,4859.824,18.8193,1,11,1,4.533434,4.760106,0,0,0,9.29354,0,0,0,1,0,6,91,3.4,0,80.7,900,900,0,0,1.791759,6.802395,0,4.564348,6.853688,1,0,0,80.7,8.488963,1.791759,2.22932,1 +16,5,95,1,5,526612,1,4859.824,19.8193,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,91,3.4,0,80.7,900,900,0,0,1.609438,6.802395,0,4.564348,6.853688,1,0,0,80.7,8.488963,1.609438,,0 +16,5,95,1,1,526613,1,4859.824,11.8193,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,78.3,10.57626,0,88.9,900,900,1,0,1.791759,6.802395,0,4.564348,6.853688,1,0,0,88.9,8.488963,1.791759,,0 +16,5,95,1,2,526613,1,4859.824,12.8193,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,78.3,10.57626,0,88.9,900,900,1,0,1.791759,6.802395,0,4.564348,6.853688,1,0,0,88.9,8.488963,1.791759,,0 +16,5,95,1,3,526613,1,4859.824,13.8193,0,11,1,16.40724,0,0,0,0,16.40724,0,0,0,0,0,6,78.3,10.57626,0,88.9,900,900,1,0,1.791759,6.802395,0,4.564348,6.853688,1,0,0,88.9,8.488963,1.791759,2.797723,1 +16,5,95,1,4,526613,1,4859.824,14.8193,0,11,1,102.3801,12.41028,0,0,0,114.7903,0,0,0,6,0,6,78.3,10.57626,0,88.9,900,900,1,0,1.791759,6.802395,0,4.564348,6.853688,1,0,0,88.9,8.488963,1.791759,4.743107,1 +16,5,95,1,5,526613,1,4859.824,15.8193,0,11,1,30.87479,0,0,0,0,30.87479,0,0,0,3,0,5,78.3,10.57626,0,88.9,900,900,1,0,1.609438,6.802395,0,4.564348,6.853688,1,0,0,88.9,8.488963,1.609438,3.42994,1 +13,5,0,1,1,526655,0,6674.895,51.12115,1,12,1,186.204,326.2378,22.00592,0,0,534.4478,0,0,0,9,0,3,74.5,24.1,0,28.4,450,646.36,0,0,1.098612,6.471356,1,4.564348,6.160541,0,0,1,28.4,8.806258,1.098612,6.281234,1 +13,5,0,1,2,526655,0,6674.895,52.12115,1,12,1,198.7471,386.6932,0,0,0,585.4404,0,0,0,10,0,3,74.5,24.1,0,28.4,450,646.36,0,0,1.098612,6.471356,1,4.564348,6.160541,0,0,1,28.4,8.806258,1.098612,6.372365,1 +13,5,0,1,3,526655,0,6674.895,53.12115,1,12,1,257.4395,508.4429,23.87543,0,0,789.7578,0,0,0,12,0,3,74.5,24.1,0,28.4,450,646.36,0,0,1.098612,6.471356,1,4.564348,6.160541,0,0,1,28.4,8.806258,1.098612,6.671726,1 +13,5,0,1,1,526656,0,6674.895,18.0397,1,10.96978,1,94.79475,82.39526,14.60008,0,355.6919,547.482,1,0,0,18,0,3,81.4,10.3,0,52.3,450,646.36,0,0,1.098612,6.471356,1,4.564348,6.160541,0,0,0,52.3,8.806258,1.098612,6.30533,1 +13,5,0,1,2,526656,0,6674.895,19.0397,1,10.96978,1,197.2285,33.94077,0,0,0,231.1693,0,0,0,13,0,3,81.4,10.3,0,52.3,450,646.36,0,0,1.098612,6.471356,1,4.564348,6.160541,0,0,0,52.3,8.806258,1.098612,5.443151,1 +13,5,0,1,3,526656,0,6674.895,20.0397,1,10.96978,1,285.8131,174.9481,0,0,3334.948,3795.709,2,0,0,11,5,3,81.4,10.3,0,52.3,450,646.36,0,0,1.098612,6.471356,1,4.564348,6.160541,0,0,0,52.3,8.806258,1.098612,8.241627,1 +13,5,0,1,1,526657,0,6674.895,55.40589,0,12,1,168.6839,35.52687,48.85315,0,842.9962,1096.06,1,0,0,6,0,3,81.4,10.3,1,48.9,450,646.36,0,0,1.098612,6.471356,1,4.564348,6.160541,0,1,0,48.9,8.806258,1.098612,6.999477,1 +13,5,0,1,2,526657,0,6674.895,56.40589,0,12,1,24.6773,24.25968,0,0,550.8732,599.8102,1,0,0,4,0,3,81.4,10.3,1,48.9,450,646.36,0,0,1.098612,6.471356,1,4.564348,6.160541,0,1,0,48.9,8.806258,1.098612,6.396613,1 +13,5,0,1,3,526657,0,6674.895,57.40589,0,12,1,131.8339,37.24913,18.3391,0,0,187.4221,0,0,0,5,0,3,81.4,10.3,1,48.9,450,646.36,0,0,1.098612,6.471356,1,4.564348,6.160541,0,1,0,48.9,8.806258,1.098612,5.233364,1 +11,5,0,1,1,526658,0,6100.871,25.79603,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,67,0,0,79.5,0,290.42,0,0,0,5.671328,0,0,0,0,0,0,79.5,8.716351,0,,0 +11,5,0,1,2,526658,0,6100.871,26.79603,0,14,1,57.70691,9.035687,0,0,62.64237,129.385,1,1,0,4,0,1,67,0,0,79.5,0,290.42,0,0,0,5.671328,0,0,0,0,0,0,79.5,8.716351,0,4.862792,1 +11,5,0,1,3,526658,0,6100.871,27.79603,0,14,1,130.4498,0,0,0,0,130.4498,0,0,0,3,0,1,67,0,0,79.5,0,290.42,0,0,0,5.671328,0,0,0,0,0,0,79.5,8.716351,0,4.870989,1 +14,5,95,1,1,526671,0,6674.895,29.11431,0,7,1,26.23783,0,0,0,0,26.23783,0,0,0,1,0,3,89.4,10.3,0,73.9,313.5,396.24,0,0,1.098612,5.98202,0,4.564348,5.799093,1,0,0,73.9,8.806258,1.098612,3.267202,1 +14,5,95,1,2,526671,0,6674.895,30.11431,0,7,1,0,0,0,0,0,0,0,0,0,0,0,3,89.4,10.3,0,73.9,313.5,396.24,0,0,1.098612,5.98202,0,4.564348,5.799093,1,0,0,73.9,8.806258,1.098612,,0 +14,5,95,1,3,526671,0,6674.895,31.11431,0,7,1,0,0,0,0,0,0,0,0,0,0,0,3,89.4,10.3,0,73.9,313.5,396.24,0,0,1.098612,5.98202,0,4.564348,5.799093,1,0,0,73.9,8.806258,1.098612,,0 +14,5,95,1,1,526672,0,6674.895,29.87269,1,8,1,66.0601,0,0,0,0,66.0601,0,0,0,3,0,3,43.6,20.7,0,45.5,313.5,396.24,0,0,1.098612,5.98202,0,4.564348,5.799093,1,0,0,45.5,8.806258,1.098612,4.190565,1 +14,5,95,1,2,526672,0,6674.895,30.87269,1,8,1,105.391,33.37889,0,0,0,138.7699,0,0,0,5,0,3,43.6,20.7,0,45.5,313.5,396.24,0,0,1.098612,5.98202,0,4.564348,5.799093,1,0,0,45.5,8.806258,1.098612,4.932817,1 +14,5,95,1,3,526672,0,6674.895,31.87269,1,8,1,89.61938,17.49135,34.25605,0,0,141.3668,0,0,0,2,1,3,43.6,20.7,0,45.5,313.5,396.24,0,0,1.098612,5.98202,0,4.564348,5.799093,1,0,0,45.5,8.806258,1.098612,4.951358,1 +11,5,0,1,1,526699,0,9155.146,30.56263,0,16,1,111.2992,38.88277,18.48498,0,0,168.6669,0,0,0,6,3,3,67,6.9,0,60.2,0,915.72,0,0,1.098612,6.819711,0,0,0,0,0,0,60.2,9.122181,1.098612,5.127926,1 +11,5,0,1,2,526699,0,9155.146,31.56263,0,16,1,58.84586,10.5391,46.78056,0,0,116.1655,0,0,0,7,0,4,67,6.9,0,60.2,0,915.72,0,0,1.386294,6.819711,0,0,0,0,0,0,60.2,9.122181,1.386294,4.755016,1 +11,5,0,1,3,526699,0,9155.146,32.56263,0,16,1,25.95156,27.12111,15.11419,0,0,68.18685,0,0,0,1,0,4,67,6.9,0,60.2,0,915.72,0,0,1.386294,6.819711,0,0,0,0,0,0,60.2,9.122181,1.386294,4.222252,1 +11,5,0,1,1,526700,0,9155.146,29.30595,1,16,1,24.54507,19.79687,0,0,883.6225,927.9645,1,0,0,1,0,3,86.7,10.3,0,81.8,0,915.72,0,0,1.098612,6.819711,0,0,0,1,0,0,81.8,9.122181,1.098612,6.832994,1 +11,5,0,1,2,526700,0,9155.146,30.30595,1,16,1,43.65983,8.686408,3.037206,0,0,55.38345,0,0,0,3,0,4,86.7,10.3,0,81.8,0,915.72,0,0,1.386294,6.819711,0,0,0,1,0,0,81.8,9.122181,1.386294,4.014281,1 +11,5,0,1,3,526700,0,9155.146,31.30595,1,16,1,0,1.6609,0,0,0,1.6609,0,0,0,0,0,4,86.7,10.3,0,81.8,0,915.72,0,0,1.386294,6.819711,0,0,0,1,0,0,81.8,9.122181,1.386294,.5073594,1 +13,5,0,0,1,526708,0,1901.178,23.40315,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,66.5,10.3,0,67,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,67,7.550755,0,,0 +13,5,0,0,2,526708,0,1901.178,24.40315,0,12,1,88.83827,0,0,0,0,88.83827,0,0,0,4,0,1,66.5,10.3,0,67,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,67,7.550755,0,4.486817,1 +13,5,0,0,3,526708,0,1901.178,25.40315,0,12,1,6.401384,4.910035,0,0,0,11.31142,0,0,0,0,0,1,66.5,10.3,0,67,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,67,7.550755,0,2.425813,1 +11,5,0,1,1,526733,1,6674.895,19.26899,1,10,1,0,0,0,0,0,0,0,0,0,0,0,3,71.8,10.3,0,61.4,0,0,0,0,1.098612,0,0,0,0,1,0,0,61.4,8.806258,1.098612,,0 +11,5,0,1,2,526733,1,6674.895,20.26899,1,10,1,6.870229,0,0,0,391.4122,398.2824,1,0,0,1,0,3,71.8,10.3,0,61.4,0,0,0,0,1.098612,0,0,0,0,1,0,0,61.4,8.806258,1.098612,5.987162,1 +11,5,0,1,3,526733,1,6674.895,21.26899,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,71.8,10.3,0,61.4,0,0,0,0,1.386294,0,0,0,0,1,0,0,61.4,8.806258,1.386294,,0 +11,5,0,1,1,526734,1,6674.895,38.83368,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,77.7,0,0,79.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,79.8,8.806258,1.098612,,0 +11,5,0,1,2,526734,1,6674.895,39.83368,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,77.7,0,0,79.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,79.8,8.806258,1.098612,,0 +11,5,0,1,3,526734,1,6674.895,40.83368,1,9,1,468.9895,15.45296,0,0,2681.882,3166.324,1,0,0,10,0,4,77.7,0,0,79.8,0,0,0,0,1.386294,0,0,0,0,1,0,0,79.8,8.806258,1.386294,8.060327,1 +6,5,25,1,1,526810,0,6674.895,12.87885,0,5,1,21.80377,1.154608,0,0,370.1685,393.1269,1,0,0,3,0,3,95,10.57626,0,92.6,498.11,498.11,1,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,92.6,8.806258,1.098612,5.974133,1 +6,5,25,1,2,526810,0,6674.895,13.87885,0,5,1,5.507113,4.584672,0,0,0,10.09179,0,0,0,1,0,3,95,10.57626,0,92.6,498.11,498.11,1,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,92.6,8.806258,1.098612,2.311722,1 +6,5,25,1,3,526810,0,6674.895,14.87885,0,5,1,0,0,0,0,0,0,0,0,0,0,0,3,95,10.57626,0,92.6,498.11,498.11,1,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,92.6,8.806258,1.098612,,0 +6,5,25,1,4,526810,0,6674.895,15.87885,0,5,1,74.80166,0,0,0,0,74.80166,0,0,0,3,0,3,95,10.57626,0,92.6,498.11,498.11,1,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,92.6,8.806258,1.098612,4.31484,1 +6,5,25,1,5,526810,0,6674.895,16.87885,0,5,1,0,0,0,0,0,0,0,0,0,0,0,3,95,10.57626,0,92.6,498.11,498.11,1,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,92.6,8.806258,1.098612,,0 +6,5,25,1,1,526811,0,6674.895,19.5373,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,10.3,0,51.1,498.11,498.11,0,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,51.1,8.806258,1.098612,,0 +6,5,25,1,2,526811,0,6674.895,20.5373,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,10.3,0,51.1,498.11,498.11,0,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,51.1,8.806258,1.098612,,0 +6,5,25,1,3,526811,0,6674.895,21.5373,0,8,1,33.65587,0,0,0,370.3576,404.0135,1,0,0,1,0,3,86.7,10.3,0,51.1,498.11,498.11,0,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,51.1,8.806258,1.098612,6.001448,1 +6,5,25,1,4,526811,0,6674.895,22.5373,0,8,1,0,2.942954,0,0,444.6543,447.5973,1,0,0,0,0,3,86.7,10.3,0,51.1,498.11,498.11,0,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,51.1,8.806258,1.098612,6.103894,1 +6,5,25,1,5,526811,0,6674.895,23.5373,0,8,1,0,0,0,0,365.3516,365.3516,1,0,0,0,0,3,86.7,10.3,0,51.1,498.11,498.11,0,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,51.1,8.806258,1.098612,5.90086,1 +6,5,25,1,1,526813,0,6674.895,54.36003,1,5,1,19.32607,0,19.82161,0,0,39.14767,0,0,0,1,1,3,72.3,6.9,0,46.6,498.11,498.11,0,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,46.6,8.806258,1.098612,3.667341,1 +6,5,25,1,2,526813,0,6674.895,55.36003,1,5,1,0,0,0,0,0,0,0,0,0,0,0,3,72.3,6.9,0,46.6,498.11,498.11,0,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,46.6,8.806258,1.098612,,0 +6,5,25,1,3,526813,0,6674.895,56.36003,1,5,1,0,0,0,0,0,0,0,0,0,0,0,3,72.3,6.9,0,46.6,498.11,498.11,0,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,46.6,8.806258,1.098612,,0 +6,5,25,1,4,526813,0,6674.895,57.36003,1,5,1,0,0,0,0,0,0,0,0,0,0,0,3,72.3,6.9,0,46.6,498.11,498.11,0,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,46.6,8.806258,1.098612,,0 +6,5,25,1,5,526813,0,6674.895,58.36003,1,5,1,6.174957,6.243568,0,0,0,12.41852,0,0,0,1,0,3,72.3,6.9,0,46.6,498.11,498.11,0,0,1.098612,6.210821,0,3.258096,7.597116,0,0,0,46.6,8.806258,1.098612,2.519189,1 +13,5,0,1,1,526817,0,4175.115,25.25667,1,14,1,31.73932,7.816335,26.44943,0,0,66.00508,0,0,0,2,0,2,91,3.4,0,86.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,86.9,8.337136,.6931472,4.189732,1 +13,5,0,1,2,526817,0,4175.115,26.25667,1,14,1,0,4.927866,0,0,0,4.927866,0,0,0,0,0,2,91,3.4,0,86.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,86.9,8.337136,.6931472,1.594906,1 +13,5,0,1,3,526817,0,4175.115,27.25667,1,14,1,0,0,0,0,0,0,0,0,0,0,0,2,91,3.4,0,86.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,86.9,8.337136,.6931472,,0 +13,5,0,1,1,526818,0,4175.115,7.86037,1,14,1,0,0,0,0,0,0,0,0,0,0,0,2,96.7,10.57626,0,85.2,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,1,0,0,85.2,8.337136,.6931472,,0 +13,5,0,1,2,526818,0,4175.115,8.86037,1,14,1,23.08276,0,0,0,0,23.08276,0,0,0,0,0,2,96.7,10.57626,0,85.2,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,1,0,0,85.2,8.337136,.6931472,3.139086,1 +13,5,0,1,3,526818,0,4175.115,9.86037,1,14,1,0,0,0,0,0,0,0,0,0,0,0,2,96.7,10.57626,0,85.2,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,1,0,0,85.2,8.337136,.6931472,,0 +11,5,0,1,1,526872,0,6674.895,26.84463,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,84,3.4,0,75,0,91,0,0,1.386294,4.510859,0,0,0,1,0,0,75,8.806258,1.386294,,0 +11,5,0,1,2,526872,0,6674.895,27.84463,0,12,1,188.232,0,0,0,0,188.232,0,0,0,2,15,4,84,3.4,0,75,0,91,0,0,1.386294,4.510859,0,0,0,1,0,0,75,8.806258,1.386294,5.237675,1 +11,5,0,1,3,526872,0,6674.895,28.84463,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,84,3.4,0,75,0,91,0,0,0,4.510859,0,0,0,1,0,0,75,8.806258,0,,0 +11,5,0,1,1,526873,0,6674.895,24.49829,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,48.4,13.8,0,40.9,0,91,0,0,1.386294,4.510859,0,0,0,1,0,0,40.9,8.806258,1.386294,,0 +11,5,0,1,2,526873,0,6674.895,25.49829,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,48.4,13.8,0,40.9,0,91,0,0,1.386294,4.510859,0,0,0,1,0,0,40.9,8.806258,1.386294,,0 +11,5,0,1,1,526874,0,6674.895,5.71937,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,81.5,0,91,1,1,1.386294,4.510859,0,0,0,1,0,0,81.5,8.806258,1.386294,,0 +11,5,0,1,2,526874,0,6674.895,6.71937,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,81.5,0,91,1,1,1.386294,4.510859,0,0,0,1,0,0,81.5,8.806258,1.386294,,0 +11,5,0,1,1,526905,0,12254.48,23.39494,1,12,1,60.02501,16.44018,0,0,1457.795,1534.26,1,0,0,4,0,2,93.1,13.8,0,85.2,0,624.78,0,0,.6931472,6.437399,0,0,0,0,0,0,85.2,9.413729,.6931472,7.335804,1 +7,5,25,0,1,526920,0,7929.339,57.2512,0,12,1,72.36012,0,0,0,0,72.36012,0,0,0,4,0,2,90.4,13.8,0,89.8,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,89.8,8.978451,.6931472,4.281655,1 +7,5,25,0,2,526920,0,7929.339,58.2512,0,12,1,32.11182,0,0,0,0,32.11182,0,0,0,3,0,2,90.4,13.8,0,89.8,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,89.8,8.978451,.6931472,3.469224,1 +7,5,25,0,3,526920,0,7929.339,59.2512,0,12,1,173.2419,0,0,0,0,173.2419,0,0,0,3,0,2,90.4,13.8,0,89.8,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,89.8,8.978451,.6931472,5.154689,1 +7,5,25,0,1,526921,0,7929.339,59.70431,1,10,1,24.40051,5.039966,0,0,0,29.44047,0,0,0,2,0,2,83,6.9,0,71.6,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,71.6,8.978451,.6931472,3.38237,1 +7,5,25,0,2,526921,0,7929.339,60.70431,1,10,1,28.71175,0,0,0,0,28.71175,0,0,0,1,0,2,83,6.9,0,71.6,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,71.6,8.978451,.6931472,3.357306,1 +7,5,25,0,3,526921,0,7929.339,61.70431,1,10,1,19.89708,0,0,0,0,19.89708,0,0,0,1,0,2,83,6.9,0,71.6,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,71.6,8.978451,.6931472,2.990573,1 +13,5,0,0,1,527049,1,166.4106,50.94045,1,12,1,15.23487,35.67499,0,0,0,50.90986,0,0,0,2,0,1,65.4,6.9,0,85.2,150,290.42,0,0,0,5.671328,1,4.564348,5.061929,0,0,0,85.2,5.12045,0,3.930057,1 +13,5,0,0,2,527049,1,166.4106,51.94045,1,12,1,7.593014,13.09415,0,0,0,20.68717,0,0,0,1,0,1,65.4,6.9,0,85.2,150,290.42,0,0,0,5.671328,1,4.564348,5.061929,0,0,0,85.2,5.12045,0,3.029514,1 +13,5,0,0,3,527049,1,166.4106,52.94045,1,12,1,13.84083,5.989619,0,0,0,19.83045,0,0,0,2,0,1,65.4,6.9,0,85.2,150,290.42,0,0,0,5.671328,1,4.564348,5.061929,0,0,0,85.2,5.12045,0,2.987219,1 +19,5,25,1,1,527069,1,6352.791,35.62765,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,68.6,0,0,63.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,63.6,8.756806,1.098612,,0 +19,5,25,1,2,527069,1,6352.791,36.62765,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,68.6,0,0,63.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,63.6,8.756806,1.098612,,0 +19,5,25,1,3,527069,1,6352.791,37.62765,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,68.6,0,0,63.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,63.6,8.756806,1.098612,,0 +19,5,25,1,1,527070,1,6352.791,9.081451,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,10.57626,0,96.3,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.756806,1.098612,,0 +19,5,25,1,2,527070,1,6352.791,10.08145,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,10.57626,0,96.3,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.756806,1.098612,,0 +19,5,25,1,3,527070,1,6352.791,11.08145,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,10.57626,0,96.3,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.756806,1.098612,,0 +19,5,25,1,1,527071,1,6352.791,31.10746,1,12,1,124.8413,0,0,0,0,124.8413,0,0,0,7,0,3,89.4,3.4,0,71.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,71.6,8.756806,1.098612,4.827044,1 +19,5,25,1,2,527071,1,6352.791,32.10746,1,12,1,11.38952,0,0,0,0,11.38952,0,0,0,2,0,3,89.4,3.4,0,71.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,71.6,8.756806,1.098612,2.432694,1 +19,5,25,1,3,527071,1,6352.791,33.10746,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,89.4,3.4,0,71.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,71.6,8.756806,1.098612,,0 +16,5,95,1,1,527076,1,5160.266,12.86516,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,1,74.1,315.15,315.15,1,1,1.386294,5.753049,0,4.564348,5.804342,1,0,0,74.1,8.548937,1.386294,,0 +16,5,95,1,2,527076,1,5160.266,13.86516,1,10,1,72.13364,0,29.21792,0,0,101.3516,0,0,0,9,1,4,85,10.57626,1,74.1,315.15,315.15,1,1,1.386294,5.753049,0,4.564348,5.804342,1,0,0,74.1,8.548937,1.386294,4.618595,1 +16,5,95,1,3,527076,1,5160.266,14.86516,1,10,1,92.38754,0,26.62976,0,0,119.0173,0,0,0,0,1,5,85,10.57626,1,74.1,315.15,315.15,1,1,1.609438,5.753049,0,4.564348,5.804342,1,0,0,74.1,8.548937,1.609438,4.779269,1 +16,5,95,1,1,527077,1,5160.266,11.89596,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,1,74.1,315.15,315.15,1,0,1.386294,5.753049,0,4.564348,5.804342,1,0,0,74.1,8.548937,1.386294,,0 +16,5,95,1,2,527077,1,5160.266,12.89596,0,10,1,20.88079,0,28.42825,0,0,49.30904,0,0,0,1,1,4,85,10.57626,1,74.1,315.15,315.15,1,0,1.386294,5.753049,0,4.564348,5.804342,1,0,0,74.1,8.548937,1.386294,3.898107,1 +16,5,95,1,3,527077,1,5160.266,13.89596,0,10,1,133.564,0,27.34948,0,193.4256,354.3391,1,0,0,1,1,5,85,10.57626,1,74.1,315.15,315.15,1,0,1.609438,5.753049,0,4.564348,5.804342,1,0,0,74.1,8.548937,1.609438,5.870255,1 +16,5,95,1,1,527078,1,5160.266,30.40109,1,10,1,8.040627,2.094795,0,0,0,10.13542,0,0,0,0,0,4,74.5,13.8,0,69,315.15,315.15,0,0,1.386294,5.753049,0,4.564348,5.804342,0,0,0,69,8.548937,1.386294,2.316036,1 +16,5,95,1,2,527078,1,5160.266,31.40109,1,10,1,11.38952,0,28.67122,0,496.2035,536.2642,1,0,0,0,1,4,74.5,13.8,0,69,315.15,315.15,0,0,1.386294,5.753049,0,4.564348,5.804342,0,0,0,69,8.548937,1.386294,6.284627,1 +16,5,95,1,3,527078,1,5160.266,32.4011,1,10,1,241.8685,0,28.42561,0,0,270.2941,0,0,0,6,1,5,74.5,13.8,0,69,315.15,315.15,0,0,1.609438,5.753049,0,4.564348,5.804342,0,0,0,69,8.548937,1.609438,5.599511,1 +11,5,0,1,1,527083,0,5990.271,53.71937,0,12,1,115.5311,129.052,29.92806,0,1062.992,1337.503,1,0,0,15,0,3,81.9,17.2,1,40.9,0,512.72,0,0,1.098612,6.23973,0,0,0,0,0,1,40.9,8.698059,1.098612,7.19856,1 +11,5,0,1,2,527083,0,5990.271,54.71937,0,12,1,24.6773,155.6264,0,0,0,180.3037,0,0,0,4,0,3,81.9,17.2,1,40.9,0,512.72,0,0,1.098612,6.23973,0,0,0,0,0,1,40.9,8.698059,1.098612,5.194643,1 +11,5,0,1,3,527083,0,5990.271,55.71937,0,12,1,138.0623,239.2388,33.10727,0,0,410.4083,0,0,0,12,0,3,81.9,17.2,1,40.9,0,512.72,0,0,1.098612,6.23973,0,0,0,0,0,1,40.9,8.698059,1.098612,6.017152,1 +11,5,0,1,1,527084,0,5990.271,53.84531,1,12,1,276.9784,173.0004,0,0,0,449.9789,0,0,0,14,0,3,81.4,24.1,1,44.3,0,512.72,0,0,1.098612,6.23973,0,0,0,0,1,0,44.3,8.698059,1.098612,6.1092,1 +11,5,0,1,2,527084,0,5990.271,54.84531,1,12,1,119.59,111.5034,0,0,0,231.0934,0,0,0,16,0,3,81.4,24.1,1,44.3,0,512.72,0,0,1.098612,6.23973,0,0,0,0,1,0,44.3,8.698059,1.098612,5.442822,1 +11,5,0,1,3,527084,0,5990.271,55.84531,1,12,1,125.0865,233.9239,32.24913,0,0,391.2595,0,0,0,14,0,3,81.4,24.1,1,44.3,0,512.72,0,0,1.098612,6.23973,0,0,0,0,1,0,44.3,8.698059,1.098612,5.969371,1 +11,5,0,1,1,527085,0,5990.271,14.32991,1,12,1,62.20906,53.96953,29.92806,0,0,146.1066,0,0,0,8,0,3,85.6,3.4,0,89.3,0,512.72,1,1,1.098612,6.23973,0,0,0,0,0,0,89.3,8.698059,1.098612,4.984337,1 +11,5,0,1,2,527085,0,5990.271,15.32991,1,12,1,33.40926,33.65604,0,0,0,67.0653,0,0,0,4,0,3,85.6,3.4,0,89.3,0,512.72,1,1,1.098612,6.23973,0,0,0,0,0,0,89.3,8.698059,1.098612,4.205667,1 +11,5,0,1,3,527085,0,5990.271,16.32991,1,12,1,71.28027,31.6263,27.34602,0,0,130.2526,0,0,0,10,0,3,85.6,3.4,0,89.3,0,512.72,1,1,1.098612,6.23973,0,0,0,0,0,0,89.3,8.698059,1.098612,4.869475,1 +13,5,0,1,1,527088,1,3327.189,17.26215,1,7,1,0,0,28.18679,0,0,28.18679,0,0,0,0,0,2,86.7,0,0,92,450,450,1,1,.6931472,6.109248,1,4.564348,6.160541,0,1,0,92,8.110184,.6931472,3.338853,1 +13,5,0,1,2,527088,1,3327.189,18.26215,1,7,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,0,0,92,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,1,0,92,8.110184,.6931472,,0 +13,5,0,1,3,527088,1,3327.189,19.26215,1,7,1,99.14236,2.415094,0,0,0,101.5575,0,0,0,1,3,2,86.7,0,0,92,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,1,0,92,8.110184,.6931472,4.620625,1 +13,5,0,1,1,527089,1,3327.189,49.9603,1,7,1,33.65587,28.06058,0,0,0,61.71645,0,0,0,4,0,2,80.3,24.1,0,52.3,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,1,0,52.3,8.110184,.6931472,4.12255,1 +13,5,0,1,2,527089,1,3327.189,50.9603,1,7,1,85.37968,22.00227,0,0,0,107.3819,0,0,0,7,0,2,80.3,24.1,0,52.3,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,1,0,52.3,8.110184,.6931472,4.676392,1 +13,5,0,1,3,527089,1,3327.189,51.9603,1,7,1,337.5643,100.4185,32.247,0,0,470.2299,0,0,0,11,3,2,80.3,24.1,0,52.3,450,450,0,0,.6931472,6.109248,1,4.564348,6.160541,0,1,0,52.3,8.110184,.6931472,6.153222,1 +11,5,0,0,1,527119,0,8663.343,26.45311,1,14,1,152.6185,43.22195,27.49127,0,560.9227,784.2544,1,0,0,6,1,4,84.6,17.2,0,81.8,0,911.56,0,0,1.386294,6.815157,0,0,0,1,0,0,81.8,9.066972,1.386294,6.664733,1 +11,5,0,0,2,527119,0,8663.343,27.45311,1,14,1,63.62379,43.83126,0,0,0,107.455,0,0,0,5,0,4,84.6,17.2,0,81.8,0,911.56,0,0,1.386294,6.815157,0,0,0,1,0,0,81.8,9.066972,1.386294,4.677073,1 +11,5,0,0,3,527119,0,8663.343,28.45311,1,14,1,97.54549,33.71561,0,0,0,131.2611,0,0,0,3,1,4,84.6,17.2,0,81.8,0,911.56,0,0,1.386294,6.815157,0,0,0,1,0,0,81.8,9.066972,1.386294,4.877189,1 +11,5,0,0,4,527119,0,8663.343,29.45311,1,14,1,54.29005,6.51101,29.61276,0,0,90.41382,0,0,0,2,1,4,84.6,17.2,0,81.8,0,911.56,0,0,1.386294,6.815157,0,0,0,1,0,0,81.8,9.066972,1.386294,4.504397,1 +11,5,0,0,5,527119,0,8663.343,30.45311,1,14,1,30.41522,18.76125,23.59862,0,616.263,689.0381,1,0,0,0,1,4,84.6,17.2,0,81.8,0,911.56,0,0,1.386294,6.815157,0,0,0,1,0,0,81.8,9.066972,1.386294,6.535296,1 +11,5,0,0,1,527120,0,8663.343,26.81725,0,16,1,126.6833,7.127182,5.680798,0,0,139.4913,0,0,0,5,0,4,85.1,0,0,73.9,0,911.56,0,0,1.386294,6.815157,0,0,0,1,0,0,73.9,9.066972,1.386294,4.938002,1 +11,5,0,0,2,527120,0,8663.343,27.81725,0,16,1,6.915629,0,0,0,0,6.915629,0,0,0,1,0,4,85.1,0,0,73.9,0,911.56,0,0,1.386294,6.815157,0,0,0,1,0,0,73.9,9.066972,1.386294,1.933784,1 +11,5,0,0,3,527120,0,8663.343,28.81725,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,85.1,0,0,73.9,0,911.56,0,0,1.386294,6.815157,0,0,0,1,0,0,73.9,9.066972,1.386294,,0 +11,5,0,0,4,527120,0,8663.343,29.81725,0,16,1,43.28018,4.605163,0,0,0,47.88535,0,0,0,2,0,4,85.1,0,0,73.9,0,911.56,0,0,1.386294,6.815157,0,0,0,1,0,0,73.9,9.066972,1.386294,3.868809,1 +11,5,0,0,5,527120,0,8663.343,30.81725,0,16,1,20.76125,2.352941,0,0,0,23.11419,0,0,0,2,0,4,85.1,0,0,73.9,0,911.56,0,0,1.386294,6.815157,0,0,0,1,0,0,73.9,9.066972,1.386294,3.140447,1 +11,5,0,0,1,527121,0,8663.343,2.861054,1,14,1,20.44888,8.309227,0,0,0,28.7581,0,0,0,2,0,4,77.40034,10.57626,0,66.7,0,911.56,1,1,1.386294,6.815157,0,0,0,1,0,0,66.7,9.066972,1.386294,3.35892,1 +11,5,0,0,2,527121,0,8663.343,3.861054,1,14,1,0,.9589673,0,0,0,.9589673,0,0,0,0,0,4,77.40034,10.57626,0,66.7,0,911.56,1,1,1.386294,6.815157,0,0,0,1,0,0,66.7,9.066972,1.386294,-.0418983,1 +11,5,0,0,3,527121,0,8663.343,4.861054,1,14,1,65.17139,3.829877,0,0,0,69.00127,0,0,0,5,0,4,77.40034,10.57626,0,66.7,0,911.56,1,1,1.386294,6.815157,0,0,0,1,0,0,66.7,9.066972,1.386294,4.234125,1 +11,5,0,0,4,527121,0,8663.343,5.861054,1,14,1,12.14882,5.307517,0,0,0,17.45634,0,0,0,1,0,4,77.40034,10.57626,0,66.7,0,911.56,1,1,1.386294,6.815157,0,0,0,1,0,0,66.7,9.066972,1.386294,2.859703,1 +11,5,0,0,5,527121,0,8663.343,6.861054,1,14,1,25.95156,11.00346,0,0,0,36.95502,0,0,0,2,0,4,77.40034,10.57626,0,66.7,0,911.56,1,1,1.386294,6.815157,0,0,0,1,0,0,66.7,9.066972,1.386294,3.609701,1 +13,5,0,1,1,527125,0,199.4135,19.53456,1,12,1,58.96806,11.94103,0,0,795.8428,866.7518,1,0,0,2,0,1,59.6,0,0,69.3,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,69.3,5.300383,0,6.764753,1 +13,5,0,1,2,527125,0,199.4135,20.53456,1,12,1,22.78942,3.19052,0,0,0,25.97995,0,0,0,2,0,2,59.6,0,0,69.3,150,150,0,0,.6931472,5.010635,1,4.564348,5.061929,0,0,0,69.3,5.300383,.6931472,3.257325,1 +13,5,0,1,3,527125,0,199.4135,21.53456,1,12,1,34.59775,0,0,0,0,34.59775,0,0,0,0,0,2,59.6,0,0,69.3,150,150,0,0,.6931472,5.010635,1,4.564348,5.061929,0,0,0,69.3,5.300383,.6931472,3.543789,1 +13,5,0,1,4,527125,0,199.4135,22.53456,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,59.6,0,0,69.3,150,150,0,0,.6931472,5.010635,1,4.564348,5.061929,0,0,0,69.3,5.300383,.6931472,,0 +13,5,0,1,5,527125,0,199.4135,23.53456,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,59.6,0,0,69.3,150,150,0,0,.6931472,5.010635,1,4.564348,5.061929,0,0,0,69.3,5.300383,.6931472,,0 +7,5,25,0,1,527131,0,5484.383,15.68515,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,88.3,10.3,0,79.5,459.15,459.15,1,0,.6931472,6.129377,0,3.258096,7.515671,0,0,0,79.5,8.609842,.6931472,,0 +7,5,25,0,1,527133,0,5484.383,38.89664,1,12,1,104.6269,0,0,0,866.6111,971.238,1,0,0,9,0,2,68.1,6.9,0,56.8,459.15,459.15,0,0,.6931472,6.129377,0,3.258096,7.515671,1,0,0,56.8,8.609842,.6931472,6.878572,1 +13,5,0,1,1,527139,1,7584.229,57.83984,0,16,1,49.22171,0,0,0,0,49.22171,0,0,0,1,0,2,78.2,27.6,0,56.8,300,309.6,0,0,.6931472,5.735281,1,4.564348,5.755076,1,0,0,56.8,8.933958,.6931472,3.896335,1 +13,5,0,1,2,527139,1,7584.229,58.83984,0,16,.6065574,57.04571,90.07178,0,0,6083.491,6230.608,2,0,0,3,0,2,78.2,27.6,0,56.8,300,309.6,0,0,.6931472,5.735281,1,4.564348,5.755076,1,0,0,56.8,8.933958,.6931472,8.737229,1 +13,5,0,1,1,527140,1,7584.229,53.19096,1,15,1,46.69752,0,0,0,0,46.69752,0,0,0,3,0,2,78.7,34.5,1,40.5,300,309.6,0,0,.6931472,5.735281,1,4.564348,5.755076,0,1,0,40.5,8.933958,.6931472,3.843691,1 +13,5,0,1,2,527140,1,7584.229,54.19096,1,15,1,25.68946,10.82735,0,0,0,36.51681,0,0,0,1,0,2,78.7,34.5,1,40.5,300,309.6,0,0,.6931472,5.735281,1,4.564348,5.755076,0,1,0,40.5,8.933958,.6931472,3.597773,1 +13,5,0,1,3,527140,1,7584.229,55.19096,1,15,1,100.1715,20.50086,0,0,0,120.6724,0,0,0,2,0,1,78.7,34.5,1,40.5,300,309.6,0,0,0,5.735281,1,4.564348,5.755076,0,1,0,40.5,8.933958,0,4.793079,1 +5,5,25,1,1,527171,0,3406.452,24.65708,0,9,1,0,0,0,0,0,0,0,0,0,0,0,2,66.5,3.4,0,87.5,283.9,321.6,0,0,.6931472,5.773309,0,3.258096,7.034916,0,0,0,87.5,8.13372,.6931472,,0 +5,5,25,1,2,527171,0,3406.452,25.65708,0,9,1,0,0,0,0,0,0,0,0,0,0,0,2,66.5,3.4,0,87.5,283.9,321.6,0,0,.6931472,5.773309,0,3.258096,7.034916,0,0,0,87.5,8.13372,.6931472,,0 +5,5,25,1,3,527171,0,3406.452,26.65708,0,9,1,32.81447,0,34.68237,0,0,67.49684,0,0,0,1,1,2,66.5,3.4,0,87.5,283.9,321.6,0,0,.6931472,5.773309,0,3.258096,7.034916,0,0,0,87.5,8.13372,.6931472,4.212081,1 +5,5,25,1,4,527171,0,3406.452,27.65708,0,9,1,0,.6800151,0,0,0,.6800151,0,0,0,0,0,2,66.5,3.4,0,87.5,283.9,321.6,0,0,.6931472,5.773309,0,3.258096,7.034916,0,0,0,87.5,8.13372,.6931472,-.3856403,1 +5,5,25,1,5,527171,0,3406.452,28.65708,0,9,1,0,0,0,0,0,0,0,0,0,0,0,2,66.5,3.4,0,87.5,283.9,321.6,0,0,.6931472,5.773309,0,3.258096,7.034916,0,0,0,87.5,8.13372,.6931472,,0 +5,5,25,1,1,527172,0,3406.452,19.98083,1,12,1,27.75025,19.36075,0,0,0,47.111,0,0,0,1,1,2,55.3,17.2,0,84.1,283.9,321.6,0,0,.6931472,5.773309,0,3.258096,7.034916,0,0,0,84.1,8.13372,.6931472,3.852507,1 +5,5,25,1,2,527172,0,3406.452,20.98083,1,12,1,14.45617,11.07389,0,0,0,25.53006,0,0,0,1,0,2,55.3,17.2,0,84.1,283.9,321.6,0,0,.6931472,5.773309,0,3.258096,7.034916,0,0,0,84.1,8.13372,.6931472,3.239856,1 +5,5,25,1,3,527172,0,3406.452,21.98083,1,12,1,12.4106,18.81363,0,0,0,31.22423,0,0,0,1,0,2,55.3,17.2,0,84.1,283.9,321.6,0,0,.6931472,5.773309,0,3.258096,7.034916,0,0,0,84.1,8.13372,.6931472,3.441195,1 +5,5,25,1,4,527172,0,3406.452,22.98083,1,12,1,13.22252,10.88024,0,0,0,24.10276,0,0,0,1,0,2,55.3,17.2,0,84.1,283.9,321.6,0,0,.6931472,5.773309,0,3.258096,7.034916,0,0,0,84.1,8.13372,.6931472,3.182326,1 +5,5,25,1,5,527172,0,3406.452,23.98083,1,12,1,18.86792,17.06347,0,0,0,35.93139,0,0,0,2,0,2,55.3,17.2,0,84.1,283.9,321.6,0,0,.6931472,5.773309,0,3.258096,7.034916,0,0,0,84.1,8.13372,.6931472,3.581611,1 +14,5,95,0,1,527196,0,6674.895,28.53936,0,16,1,0,0,0,0,0,0,0,0,0,0,0,1,77.40034,10.57626,.1442925,,788.3,0,0,0,0,0,0,4.564348,6.721172,1,0,0,70.68995,8.806258,0,,0 +14,5,95,0,2,527196,0,6674.895,29.53936,0,16,1,12.003,5.258815,0,0,0,17.26182,0,0,0,2,0,1,77.40034,10.57626,.1442925,,788.3,0,0,0,0,0,0,4.564348,6.721172,1,0,0,70.68995,8.806258,0,2.848497,1 +14,5,95,0,3,527196,0,6674.895,30.53936,0,16,1,26.7253,0,0,0,0,26.7253,0,0,0,2,0,1,77.40034,10.57626,.1442925,,788.3,0,0,0,0,0,0,4.564348,6.721172,1,0,0,70.68995,8.806258,0,3.285611,1 +11,5,0,1,1,527211,0,7333.845,31.05544,1,18,1,0,0,0,0,0,0,0,0,0,0,0,1,42,0,0,78.4,0,18,0,0,0,2.890372,0,0,0,0,0,0,78.4,8.900392,0,,0 +11,5,0,1,2,527211,0,7333.845,32.05544,1,18,1,55.72519,1.125954,26.71756,0,0,83.5687,0,0,0,3,0,1,42,0,0,78.4,0,18,0,0,0,2.890372,0,0,0,0,0,0,78.4,8.900392,0,4.425669,1 +11,5,0,1,3,527211,0,7333.845,33.05544,1,18,1,64.98258,26.95122,0,196.8641,0,91.9338,0,0,16,3,0,1,42,0,0,78.4,0,18,0,0,0,2.890372,0,0,0,0,0,0,78.4,8.900392,0,4.521069,1 +13,5,0,1,1,527238,0,6674.895,29.34428,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,72.7,6.9,0,84.1,150,162.24,0,0,0,5.089077,1,4.564348,5.061929,0,0,0,84.1,8.806258,0,,0 +13,5,0,1,2,527238,0,6674.895,30.34428,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,72.7,6.9,0,84.1,150,162.24,0,0,0,5.089077,1,4.564348,5.061929,0,0,0,84.1,8.806258,0,,0 +13,5,0,1,3,527238,0,6674.895,31.34428,0,14,1,60.55363,0,0,0,0,60.55363,0,0,0,4,0,1,72.7,6.9,0,84.1,150,162.24,0,0,0,5.089077,1,4.564348,5.061929,0,0,0,84.1,8.806258,0,4.103529,1 +15,5,95,1,1,527280,1,7000.512,8.396988,0,14,1,0,0,0,0,0,0,0,0,0,0,0,3,78.3,10.57626,0,85.2,473.7,473.7,1,0,1.098612,6.160574,0,4.564348,6.211867,1,0,0,85.2,8.853882,1.098612,,0 +15,5,95,1,2,527280,1,7000.512,9.396988,0,14,1,11.81545,0,0,0,0,11.81545,0,0,0,1,0,4,78.3,10.57626,0,85.2,473.7,473.7,1,0,1.386294,6.160574,0,4.564348,6.211867,1,0,0,85.2,8.853882,1.386294,2.469408,1 +15,5,95,1,3,527280,1,7000.512,10.39699,0,14,1,2.368065,0,0,0,0,2.368065,0,0,0,1,0,4,78.3,10.57626,0,85.2,473.7,473.7,1,0,1.386294,6.160574,0,4.564348,6.211867,1,0,0,85.2,8.853882,1.386294,.8620731,1 +15,5,95,1,1,527281,1,7000.512,33.16906,1,14,1,0,0,0,0,288.2451,288.2451,1,1,0,0,0,3,61.2,20.7,0,64.8,473.7,473.7,0,0,1.098612,6.160574,0,4.564348,6.211867,0,1,0,64.8,8.853882,1.098612,5.663811,1 +15,5,95,1,2,527281,1,7000.512,34.16906,1,14,1,32.82071,1.099025,0,0,0,33.91973,0,0,0,1,0,4,61.2,20.7,0,64.8,473.7,473.7,0,0,1.386294,6.160574,0,4.564348,6.211867,0,1,0,64.8,8.853882,1.386294,3.523997,1 +15,5,95,1,3,527281,1,7000.512,35.16906,1,14,1,172.8687,0,0,0,1452.3,1625.169,1,0,0,5,0,4,61.2,20.7,0,64.8,473.7,473.7,0,0,1.386294,6.160574,0,4.564348,6.211867,0,1,0,64.8,8.853882,1.386294,7.393367,1 +15,5,95,1,1,527282,1,7000.512,3.485284,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,70.4,473.7,473.7,1,1,1.098612,6.160574,0,4.564348,6.211867,0,0,0,70.4,8.853882,1.098612,,0 +15,5,95,1,2,527282,1,7000.512,4.485284,1,14,1,26.44411,2.363091,0,0,0,28.8072,0,0,0,2,0,4,77.40034,10.57626,0,70.4,473.7,473.7,1,1,1.386294,6.160574,0,4.564348,6.211867,0,0,0,70.4,8.853882,1.386294,3.360626,1 +15,5,95,1,3,527282,1,7000.512,5.485284,1,14,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,70.4,473.7,473.7,1,1,1.386294,6.160574,0,4.564348,6.211867,0,0,0,70.4,8.853882,1.386294,,0 +11,5,0,1,1,527307,1,602.3461,26.21218,1,12,1,29.58375,3.840436,0,0,0,33.42418,0,0,0,1,0,5,72.9,6.9,0,58.3,0,0,0,0,1.609438,0,0,0,0,1,0,0,58.3,6.402491,1.609438,3.50928,1 +11,5,0,1,2,527307,1,602.3461,27.21218,1,12,1,0,0,0,0,888.7104,888.7104,2,0,0,0,0,5,72.9,6.9,0,58.3,0,0,0,0,1.609438,0,0,0,0,1,0,0,58.3,6.402491,1.609438,6.789772,1 +11,5,0,1,3,527307,1,602.3461,28.21218,1,12,1,10.51746,0,24.40051,0,0,34.91796,0,0,0,0,1,6,72.9,6.9,0,58.3,0,0,0,0,1.791759,0,0,0,0,1,0,0,58.3,6.402491,1.791759,3.553001,1 +11,5,0,1,4,527307,1,602.3461,29.21218,1,12,1,7.555724,0,0,0,0,7.555724,0,0,0,0,0,6,72.9,6.9,0,58.3,0,0,0,0,1.791759,0,0,0,0,1,0,0,58.3,6.402491,1.791759,2.022305,1 +11,5,0,1,5,527307,1,602.3461,30.21218,1,12,1,20.58319,0,0,0,0,20.58319,0,0,0,0,0,6,72.9,6.9,0,58.3,0,0,0,0,1.791759,0,0,0,0,1,0,0,58.3,6.402491,1.791759,3.024475,1 +11,5,0,1,1,527308,1,602.3461,30.10267,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.9,3.4,0,65.9,0,0,0,0,1.609438,0,0,0,0,1,0,0,65.9,6.402491,1.609438,,0 +11,5,0,1,2,527308,1,602.3461,31.10267,0,12,1,9.178522,0,34.41946,0,0,43.59798,0,0,0,0,1,5,81.9,3.4,0,65.9,0,0,0,0,1.609438,0,0,0,0,1,0,0,65.9,6.402491,1.609438,3.775011,1 +11,5,0,1,3,527308,1,602.3461,32.10267,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,81.9,3.4,0,65.9,0,0,0,0,1.791759,0,0,0,0,1,0,0,65.9,6.402491,1.791759,,0 +11,5,0,1,4,527308,1,602.3461,33.10267,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,81.9,3.4,0,65.9,0,0,0,0,1.791759,0,0,0,0,1,0,0,65.9,6.402491,1.791759,,0 +11,5,0,1,5,527308,1,602.3461,34.10267,0,12,1,8.576329,0,23.67067,0,0,32.247,0,0,0,0,1,6,81.9,3.4,0,65.9,0,0,0,0,1.791759,0,0,0,0,1,0,0,65.9,6.402491,1.791759,3.473425,1 +11,5,0,1,1,527309,1,602.3461,3.838467,0,12,1,17.3439,1.650149,0,0,0,18.99405,0,0,0,2,0,5,77.40034,10.57626,0,70.4,0,0,1,0,1.609438,0,0,0,0,1,0,0,70.4,6.402491,1.609438,2.944126,1 +11,5,0,1,2,527309,1,602.3461,4.838467,0,12,1,9.06379,0,0,0,0,9.06379,0,0,0,0,0,5,77.40034,10.57626,0,70.4,0,0,1,0,1.609438,0,0,0,0,1,0,0,70.4,6.402491,1.609438,2.204287,1 +11,5,0,1,3,527309,1,602.3461,5.838467,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,70.4,0,0,1,0,1.791759,0,0,0,0,1,0,0,70.4,6.402491,1.791759,,0 +11,5,0,1,4,527309,1,602.3461,6.838467,0,12,1,7.555724,0,0,0,0,7.555724,0,0,0,0,0,6,77.40034,10.57626,0,70.4,0,0,1,0,1.791759,0,0,0,0,1,0,0,70.4,6.402491,1.791759,2.022305,1 +11,5,0,1,5,527309,1,602.3461,7.838467,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,70.4,0,0,1,0,1.791759,0,0,0,0,1,0,0,70.4,6.402491,1.791759,,0 +11,5,0,1,1,527310,1,602.3461,5.927447,0,12,1,14.12289,2.368682,0,0,0,16.49158,0,0,0,0,0,5,88.3,10.57626,0,74.1,0,0,1,0,1.609438,0,0,0,0,1,0,0,74.1,6.402491,1.609438,2.80285,1 +11,5,0,1,2,527310,1,602.3461,6.927447,0,12,1,118.8619,0,0,0,0,118.8619,0,0,0,1,0,5,88.3,10.57626,0,74.1,0,0,1,0,1.609438,0,0,0,0,1,0,0,74.1,6.402491,1.609438,4.777962,1 +11,5,0,1,3,527310,1,602.3461,7.927447,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,74.1,0,0,1,0,1.791759,0,0,0,0,1,0,0,74.1,6.402491,1.791759,,0 +11,5,0,1,4,527310,1,602.3461,8.927447,0,12,1,11.33358,0,0,0,0,11.33358,0,0,0,0,0,6,88.3,10.57626,0,74.1,0,0,1,0,1.791759,0,0,0,0,1,0,0,74.1,6.402491,1.791759,2.42777,1 +11,5,0,1,5,527310,1,602.3461,9.927447,0,12,1,11.57804,0,0,0,0,11.57804,0,0,0,1,0,6,88.3,10.57626,0,74.1,0,0,1,0,1.791759,0,0,0,0,1,0,0,74.1,6.402491,1.791759,2.449111,1 +11,5,0,1,1,527311,1,1029.186,55.12115,1,11,1,57.13077,3.432078,54.13457,0,0,114.6974,0,0,0,1,2,2,75,10.3,0,71.6,0,0,0,0,.6931472,0,0,0,0,0,1,0,71.6,6.937495,.6931472,4.742298,1 +11,5,0,1,2,527311,1,1029.186,56.12115,1,11,1,10.63022,18.51177,0,0,0,29.14199,0,0,0,2,0,2,75,10.3,0,71.6,0,0,0,0,.6931472,0,0,0,0,0,1,0,71.6,6.937495,.6931472,3.37218,1 +11,5,0,1,3,527311,1,1029.186,57.12115,1,11,1,80.27682,21.61938,0,0,0,101.8962,0,0,0,6,0,2,75,10.3,0,71.6,0,0,0,0,.6931472,0,0,0,0,0,1,0,71.6,6.937495,.6931472,4.623955,1 +11,5,0,1,1,527313,1,1029.186,17.67556,1,11,1,0,0,0,0,0,0,0,0,0,0,0,2,85.6,0,0,81,0,0,1,1,.6931472,0,0,0,0,0,0,0,81,6.937495,.6931472,,0 +11,5,0,1,2,527313,1,1029.186,18.67556,1,11,1,48.59529,0,29.4609,0,0,78.05619,0,0,0,3,0,2,85.6,0,0,81,0,0,0,0,.6931472,0,0,0,0,0,0,0,81,6.937495,.6931472,4.357429,1 +11,5,0,1,3,527313,1,1029.186,19.67556,1,11,1,25.08651,2.83737,.6920415,0,0,28.61592,0,0,0,3,0,2,85.6,0,0,81,0,0,0,0,.6931472,0,0,0,0,0,0,0,81,6.937495,.6931472,3.353963,1 +15,5,95,1,1,527315,0,7402.458,13.61259,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,10.57626,0,55.6,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,55.6,8.909702,1.609438,,0 +15,5,95,1,2,527315,0,7402.458,14.61259,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,10.57626,0,55.6,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,55.6,8.909702,1.609438,,0 +15,5,95,1,1,527316,0,7402.458,16.79398,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,91.5,0,0,95,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,95,8.909702,1.609438,,0 +15,5,95,1,2,527316,0,7402.458,17.79398,0,10,1,10.20992,0,0,0,0,10.20992,0,0,0,0,0,5,91.5,0,0,95,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,95,8.909702,1.609438,2.32336,1 +15,5,95,1,1,527317,0,7402.458,18.91034,0,7,1,0,0,0,0,0,0,0,0,0,0,0,5,84.6,10.3,1,86.4,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,86.4,8.909702,1.609438,,0 +15,5,95,1,2,527317,0,7402.458,19.91034,0,7,1,29.77099,0,0,0,0,29.77099,0,0,0,1,0,5,84.6,10.3,1,86.4,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,86.4,8.909702,1.609438,3.393534,1 +15,5,95,1,1,527318,0,7402.458,40.3833,0,11,1,10.20842,0,0,0,0,10.20842,0,0,0,0,0,5,71.3,6.9,1,63.6,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,63.6,8.909702,1.609438,2.323213,1 +15,5,95,1,2,527318,0,7402.458,41.3833,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,71.3,6.9,1,63.6,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,63.6,8.909702,1.609438,,0 +15,5,95,1,1,527320,0,7402.458,38.7488,1,10,1,24.67035,0,0,0,0,24.67035,0,0,0,0,0,5,58,27.6,1,67,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,67,8.909702,1.609438,3.205602,1 +15,5,95,1,2,527320,0,7402.458,39.7488,1,10,1,27.48092,0,0,0,0,27.48092,0,0,0,0,0,5,58,27.6,1,67,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,67,8.909702,1.609438,3.313492,1 +11,5,0,1,1,527325,0,136.7128,38.41478,1,11,1,8.081667,0,0,0,0,8.081667,0,0,0,0,0,1,39.4,17.2,0,31.8,0,0,0,0,0,0,0,0,0,1,0,0,31.8,4.92517,0,2.089598,1 +11,5,0,1,2,527325,0,136.7128,39.41478,1,11,1,19.84733,0,0,0,0,19.84733,0,0,0,2,0,1,39.4,17.2,0,31.8,0,0,0,0,0,0,0,0,0,1,0,0,31.8,4.92517,0,2.988069,1 +11,5,0,1,3,527325,0,136.7128,40.41478,1,11,1,0,0,0,0,0,0,0,0,0,0,0,1,39.4,17.2,0,31.8,0,0,0,0,0,0,0,0,0,1,0,0,31.8,4.92517,0,,0 +10,5,50,0,1,527356,0,3452.125,24.15879,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,78.7,3.4,0,81.8,600,600,0,0,.6931472,6.39693,0,3.931826,7.090077,1,0,0,81.8,8.147035,.6931472,,0 +10,5,50,0,2,527356,0,3452.125,25.15879,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,78.7,3.4,0,81.8,600,600,0,0,.6931472,6.39693,0,3.931826,7.090077,1,0,0,81.8,8.147035,.6931472,,0 +10,5,50,0,3,527356,0,3452.125,26.15879,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,78.7,3.4,0,81.8,600,600,0,0,.6931472,6.39693,0,3.931826,7.090077,1,0,0,81.8,8.147035,.6931472,,0 +10,5,50,0,1,527357,0,3452.125,5.620808,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.3,10.57626,.1442925,85.2,600,600,1,0,.6931472,6.39693,0,3.931826,7.090077,0,1,0,85.2,8.147035,.6931472,,0 +10,5,50,0,2,527357,0,3452.125,6.620808,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.3,10.57626,.1442925,85.2,600,600,1,0,.6931472,6.39693,0,3.931826,7.090077,0,1,0,85.2,8.147035,.6931472,,0 +10,5,50,0,3,527357,0,3452.125,7.620808,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.3,10.57626,.1442925,85.2,600,600,1,0,.6931472,6.39693,0,3.931826,7.090077,0,1,0,85.2,8.147035,.6931472,,0 +11,5,0,1,1,527392,1,4545.977,49.71937,1,17,1,24.93766,34.27431,36.30923,0,0,95.52119,0,0,0,4,0,3,83,37.9,1,48.9,0,124.32,0,0,1.098612,4.822859,0,0,0,1,0,0,48.9,8.422217,1.098612,4.559348,1 +11,5,0,1,2,527392,1,4545.977,50.71937,1,17,1,88.05901,29.23006,20.13831,0,0,137.4274,0,0,0,7,0,3,83,37.9,1,48.9,0,124.32,0,0,1.098612,4.822859,0,0,0,1,0,0,48.9,8.422217,1.098612,4.923096,1 +11,5,0,1,3,527392,1,4545.977,51.71937,1,17,1,157.6386,13.18239,52.81422,0,1048.244,1271.879,1,0,0,7,0,3,83,37.9,1,48.9,0,124.32,0,0,1.098612,4.822859,0,0,0,1,0,0,48.9,8.422217,1.098612,7.148251,1 +11,5,0,1,4,527392,1,4545.977,52.71937,1,17,1,29.2331,14.2369,0,0,0,43.47001,0,0,0,2,0,3,83,37.9,1,48.9,0,124.32,0,0,1.098612,4.822859,0,0,0,1,0,0,48.9,8.422217,1.098612,3.772071,1 +11,5,0,1,5,527392,1,4545.977,53.71937,1,17,1,94.46367,32.76471,33.10727,0,0,160.3356,0,0,0,2,2,3,83,37.9,1,48.9,0,124.32,0,0,1.098612,4.822859,0,0,0,1,0,0,48.9,8.422217,1.098612,5.07727,1 +11,5,0,1,1,527393,1,4545.977,6.579055,0,17,1,7.481297,5.236908,0,0,0,12.7182,0,0,0,1,0,3,98.3,10.57626,0,85.2,0,124.32,1,0,1.098612,4.822859,0,0,0,0,0,0,85.2,8.422217,1.098612,2.543034,1 +11,5,0,1,2,527393,1,4545.977,7.579055,0,17,1,20.74689,0,0,0,586.9064,607.6533,1,0,0,2,0,3,98.3,10.57626,0,85.2,0,124.32,1,0,1.098612,4.822859,0,0,0,0,0,0,85.2,8.422217,1.098612,6.409605,1 +11,5,0,1,3,527393,1,4545.977,8.579056,0,17,1,0,0,0,0,0,0,0,0,0,0,0,3,98.3,10.57626,0,85.2,0,124.32,1,0,1.098612,4.822859,0,0,0,0,0,0,85.2,8.422217,1.098612,,0 +11,5,0,1,4,527393,1,4545.977,9.579056,0,17,1,7.593014,0,0,0,0,7.593014,0,0,0,1,0,3,98.3,10.57626,0,85.2,0,124.32,1,0,1.098612,4.822859,0,0,0,0,0,0,85.2,8.422217,1.098612,2.027229,1 +11,5,0,1,5,527393,1,4545.977,10.57906,0,17,1,41.86851,0,0,0,0,41.86851,0,0,0,0,0,3,98.3,10.57626,0,85.2,0,124.32,1,0,1.098612,4.822859,0,0,0,0,0,0,85.2,8.422217,1.098612,3.734534,1 +11,5,0,1,1,527394,1,4545.977,14.68857,1,17,1,5.985037,0,0,0,0,5.985037,0,0,0,1,0,3,67.6,10.3,0,85.2,0,124.32,1,1,1.098612,4.822859,0,0,0,0,0,0,85.2,8.422217,1.098612,1.789263,1 +11,5,0,1,2,527394,1,4545.977,15.68857,1,17,1,6.915629,0,0,0,0,6.915629,0,0,0,1,0,3,67.6,10.3,0,85.2,0,124.32,1,1,1.098612,4.822859,0,0,0,0,0,0,85.2,8.422217,1.098612,1.933784,1 +11,5,0,1,3,527394,1,4545.977,16.68857,1,17,1,6.771054,0,0,0,0,6.771054,0,0,0,1,0,3,67.6,10.3,0,85.2,0,124.32,1,1,1.098612,4.822859,0,0,0,0,0,0,85.2,8.422217,1.098612,1.912657,1 +11,5,0,1,4,527394,1,4545.977,17.68857,1,17,1,66.05923,0,0,0,0,66.05923,0,0,0,1,0,3,67.6,10.3,0,85.2,0,124.32,1,1,1.098612,4.822859,0,0,0,0,0,0,85.2,8.422217,1.098612,4.190552,1 +11,5,0,1,5,527394,1,4545.977,18.68857,1,17,1,0,0,0,0,0,0,0,0,0,0,0,3,67.6,10.3,0,85.2,0,124.32,0,0,1.098612,4.822859,0,0,0,0,0,0,85.2,8.422217,1.098612,,0 +16,5,95,1,1,527442,0,10665.13,28.55031,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,72.3,20.7,1,36.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,36.4,9.274829,.6931472,,0 +16,5,95,1,2,527442,0,10665.13,29.55031,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,72.3,20.7,1,36.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,36.4,9.274829,.6931472,,0 +16,5,95,1,3,527442,0,10665.13,30.55031,1,16,1,134.8199,56.76844,0,0,0,191.5883,0,0,0,26,0,2,72.3,20.7,1,36.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,36.4,9.274829,.6931472,5.255349,1 +16,5,95,1,1,527443,0,10665.13,31.21697,0,16,1,6.310475,5.763567,0,0,0,12.07404,0,0,0,1,0,2,79.8,13.8,0,73.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,73.9,9.274829,.6931472,2.491058,1 +16,5,95,1,2,527443,0,10665.13,32.21698,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,79.8,13.8,0,73.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,73.9,9.274829,.6931472,,0 +16,5,95,1,3,527443,0,10665.13,33.21698,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,79.8,13.8,0,73.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,73.9,9.274829,.6931472,,0 +18,5,25,0,1,527452,0,2046.595,49.54141,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,77.7,10.3,0,62.5,570.86,570.86,0,0,0,6.347144,0,3.258096,7.733438,1,0,0,62.5,7.624421,0,,0 +18,5,25,0,2,527452,0,2046.595,50.54141,1,12,1,7.555724,5.761239,0,0,0,13.31696,0,0,0,1,0,1,77.7,10.3,0,62.5,570.86,570.86,0,0,0,6.347144,0,3.258096,7.733438,1,0,0,62.5,7.624421,0,2.589039,1 +18,5,25,0,3,527452,0,2046.595,51.54141,1,12,1,120.0686,8.161235,0,0,0,128.2298,0,0,0,3,0,1,77.7,10.3,0,62.5,570.86,570.86,0,0,0,6.347144,0,3.258096,7.733438,1,0,0,62.5,7.624421,0,4.853824,1 +5,5,25,0,1,527467,0,5640.553,32.60506,0,13,1,12.62095,0,42.06984,0,0,54.69079,0,0,0,0,1,4,91.5,6.9,0,85.2,172.49,226,0,0,1.386294,5.420535,0,3.258096,6.536633,0,0,0,85.2,8.637915,1.386294,4.001695,1 +5,5,25,0,2,527467,0,5640.553,33.60506,0,13,1,4.533434,6.120136,0,0,0,10.65357,0,0,0,1,0,4,91.5,6.9,0,85.2,172.49,226,0,0,1.386294,5.420535,0,3.258096,6.536633,0,0,0,85.2,8.637915,1.386294,2.365895,1 +5,5,25,0,3,527467,0,5640.553,34.60506,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,91.5,6.9,0,85.2,172.49,226,0,0,1.386294,5.420535,0,3.258096,6.536633,0,0,0,85.2,8.637915,1.386294,,0 +5,5,25,0,1,527468,0,5640.553,28.1232,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,80.3,3.4,0,63.6,172.49,226,0,0,1.386294,5.420535,0,3.258096,6.536633,0,0,0,63.6,8.637915,1.386294,,0 +5,5,25,0,2,527468,0,5640.553,29.1232,1,9,1,5.666792,0,0,0,0,5.666792,0,0,0,1,0,4,80.3,3.4,0,63.6,172.49,226,0,0,1.386294,5.420535,0,3.258096,6.536633,0,0,0,63.6,8.637915,1.386294,1.734623,1 +5,5,25,0,3,527468,0,5640.553,30.1232,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,80.3,3.4,0,63.6,172.49,226,0,0,1.386294,5.420535,0,3.258096,6.536633,0,0,0,63.6,8.637915,1.386294,,0 +5,5,25,0,1,527469,0,5640.553,10.09172,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,96.7,10.57626,.1442925,96.3,172.49,226,1,0,1.386294,5.420535,0,3.258096,6.536633,0,0,0,96.3,8.637915,1.386294,,0 +5,5,25,0,2,527469,0,5640.553,11.09172,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,96.7,10.57626,.1442925,96.3,172.49,226,1,0,1.386294,5.420535,0,3.258096,6.536633,0,0,0,96.3,8.637915,1.386294,,0 +5,5,25,0,3,527469,0,5640.553,12.09172,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,96.7,10.57626,.1442925,96.3,172.49,226,1,0,1.386294,5.420535,0,3.258096,6.536633,0,0,0,96.3,8.637915,1.386294,,0 +5,5,25,0,1,527470,0,5640.553,7.359343,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,10.57626,.1442925,74.1,172.49,226,1,1,1.386294,5.420535,0,3.258096,6.536633,0,0,0,74.1,8.637915,1.386294,,0 +5,5,25,0,2,527470,0,5640.553,8.359343,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,10.57626,.1442925,74.1,172.49,226,1,1,1.386294,5.420535,0,3.258096,6.536633,0,0,0,74.1,8.637915,1.386294,,0 +5,5,25,0,3,527470,0,5640.553,9.359343,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,10.57626,.1442925,74.1,172.49,226,1,1,1.386294,5.420535,0,3.258096,6.536633,0,0,0,74.1,8.637915,1.386294,,0 +13,5,0,0,1,527540,1,5890.323,30.16838,0,12,1,47.62141,0,0,0,0,47.62141,0,0,0,0,0,4,86.2,6.9,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,64.8,8.681236,1.386294,3.863282,1 +13,5,0,0,2,527540,1,5890.323,31.16838,0,12,1,31.6659,0,0,0,517.2097,548.8756,1,0,0,0,0,4,86.2,6.9,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,64.8,8.681236,1.386294,6.307872,1 +13,5,0,0,3,527540,1,5890.323,32.16838,0,12,1,17.24863,0,0,0,0,17.24863,0,0,0,1,0,4,86.2,6.9,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,64.8,8.681236,1.386294,2.847733,1 +13,5,0,0,4,527540,1,5890.323,33.16838,0,12,1,52.13449,23.10162,.6233472,0,4577.635,4653.495,2,0,0,6,0,4,86.2,6.9,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,64.8,8.681236,1.386294,8.445374,1 +13,5,0,0,5,527540,1,5890.323,34.16838,0,12,1,143.3962,3.667238,0,0,1972.213,2119.276,1,0,0,3,0,4,86.2,6.9,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,64.8,8.681236,1.386294,7.65883,1 +13,5,0,0,1,527541,1,5890.323,6.444901,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.681236,1.386294,,0 +13,5,0,0,2,527541,1,5890.323,7.444901,1,12,1,24.41487,0,0,0,0,24.41487,0,0,0,0,0,4,85,10.57626,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.681236,1.386294,3.195192,1 +13,5,0,0,3,527541,1,5890.323,8.444901,1,12,1,7.993269,0,0,0,0,7.993269,0,0,0,0,0,4,85,10.57626,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.681236,1.386294,2.0786,1 +13,5,0,0,4,527541,1,5890.323,9.444901,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.681236,1.386294,,0 +13,5,0,0,5,527541,1,5890.323,10.4449,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.681236,1.386294,,0 +13,5,0,0,1,527542,1,5890.323,31.92334,1,12,1,24.28147,9.132805,0,0,0,33.41427,0,0,0,1,0,4,66.5,6.9,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,64.8,8.681236,1.386294,3.508983,1 +13,5,0,0,2,527542,1,5890.323,32.92334,1,12,1,11.47315,0,0,0,1408.444,1419.917,1,0,0,2,0,4,66.5,6.9,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,64.8,8.681236,1.386294,7.258354,1 +13,5,0,0,3,527542,1,5890.323,33.92334,1,12,1,8.413967,0,0,0,0,8.413967,0,0,0,0,0,4,66.5,6.9,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,64.8,8.681236,1.386294,2.129893,1 +13,5,0,0,4,527542,1,5890.323,34.92334,1,12,1,20.02267,0,0,0,0,20.02267,0,0,0,3,0,4,66.5,6.9,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,64.8,8.681236,1.386294,2.996865,1 +13,5,0,0,5,527542,1,5890.323,35.92334,1,12,1,96.05489,0,0,0,4772.556,4868.611,1,0,0,2,0,4,66.5,6.9,0,64.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,64.8,8.681236,1.386294,8.490564,1 +13,5,0,0,1,527543,1,5890.323,10.12183,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.3,10.57626,0,88.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.9,8.681236,1.386294,,0 +13,5,0,0,2,527543,1,5890.323,11.12183,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.3,10.57626,0,88.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.9,8.681236,1.386294,,0 +13,5,0,0,3,527543,1,5890.323,12.12183,0,12,1,41.64914,0,0,0,0,41.64914,0,0,0,2,0,4,78.3,10.57626,0,88.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.9,8.681236,1.386294,3.729281,1 +13,5,0,0,4,527543,1,5890.323,13.12183,0,12,1,7.555724,0,0,0,0,7.555724,0,0,0,1,0,4,78.3,10.57626,0,88.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.9,8.681236,1.386294,2.022305,1 +13,5,0,0,5,527543,1,5890.323,14.12183,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.3,10.57626,0,88.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.9,8.681236,1.386294,,0 +14,5,95,0,1,527550,1,3455.709,26.55168,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,3.4,.1442925,72.7,325,325,0,0,1.386294,5.783825,0,4.564348,5.835118,1,0,0,72.7,8.148072,1.386294,,0 +14,5,95,0,2,527550,1,3455.709,27.55168,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,3.4,.1442925,72.7,325,325,0,0,1.386294,5.783825,0,4.564348,5.835118,1,0,0,72.7,8.148072,1.386294,,0 +14,5,95,0,3,527550,1,3455.709,28.55168,0,12,1,13.84083,0,0,0,0,13.84083,0,0,0,0,0,5,77.40034,3.4,.1442925,72.7,325,325,0,0,1.609438,5.783825,0,4.564348,5.835118,1,0,0,72.7,8.148072,1.609438,2.627623,1 +14,5,95,0,1,527551,1,3455.709,26.16564,1,14,1,49.14515,0,0,0,0,49.14515,0,0,0,0,0,4,85.1,6.9,0,76.1,325,325,0,0,1.386294,5.783825,0,4.564348,5.835118,1,0,0,76.1,8.148072,1.386294,3.894778,1 +14,5,95,0,2,527551,1,3455.709,27.16564,1,14,1,0,2.566439,0,0,1035.307,1037.874,1,0,0,0,0,4,85.1,6.9,0,76.1,325,325,0,0,1.386294,5.783825,0,4.564348,5.835118,1,0,0,76.1,8.148072,1.386294,6.94493,1 +14,5,95,0,3,527551,1,3455.709,28.16564,1,14,1,0,0,0,0,0,0,0,0,0,0,0,5,85.1,6.9,0,76.1,325,325,0,0,1.609438,5.783825,0,4.564348,5.835118,1,0,0,76.1,8.148072,1.609438,,0 +14,5,95,0,1,527552,1,3455.709,6.603696,1,14,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,.1442925,85.2,325,325,1,1,1.386294,5.783825,0,4.564348,5.835118,0,0,0,85.2,8.148072,1.386294,,0 +14,5,95,0,2,527552,1,3455.709,7.603696,1,14,1,18.60289,7.285497,0,0,0,25.88838,0,0,0,4,0,4,85,10.57626,.1442925,85.2,325,325,1,1,1.386294,5.783825,0,4.564348,5.835118,0,0,0,85.2,8.148072,1.386294,3.253794,1 +14,5,95,0,3,527552,1,3455.709,8.603696,1,14,1,0,0,0,0,0,0,0,0,0,0,0,5,85,10.57626,.1442925,85.2,325,325,1,1,1.609438,5.783825,0,4.564348,5.835118,0,0,0,85.2,8.148072,1.609438,,0 +11,5,0,0,1,527557,0,6674.895,3.928816,0,12,1,30.46974,15.59458,0,0,584.6382,630.7025,1,0,0,6,0,3,77.40034,10.57626,0,88.9,0,496.2,1,0,1.098612,6.206979,0,0,0,0,0,0,88.9,8.806258,1.098612,6.446834,1 +11,5,0,0,2,527557,0,6674.895,4.928816,0,12,1,25.81625,6.305998,0,0,0,32.12225,0,0,0,4,0,3,77.40034,10.57626,0,88.9,0,496.2,1,0,1.098612,6.206979,0,0,0,0,0,0,88.9,8.806258,1.098612,3.469549,1 +11,5,0,0,3,527557,0,6674.895,5.928816,0,12,1,45.15571,0,0,0,0,45.15571,0,0,0,4,0,4,77.40034,10.57626,0,88.9,0,496.2,1,0,1.386294,6.206979,0,0,0,0,0,0,88.9,8.806258,1.386294,3.810117,1 +11,5,0,0,1,527558,0,6674.895,24.30116,0,11,1,78.29031,0,0,0,0,78.29031,0,0,0,2,0,3,76.1,6.9,0,64.8,0,496.2,0,0,1.098612,6.206979,0,0,0,1,0,0,64.8,8.806258,1.098612,4.360424,1 +11,5,0,0,2,527558,0,6674.895,25.30116,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,76.1,6.9,0,64.8,0,496.2,0,0,1.098612,6.206979,0,0,0,1,0,0,64.8,8.806258,1.098612,,0 +11,5,0,0,3,527558,0,6674.895,26.30116,0,11,1,20.76125,4.307959,0,0,0,25.0692,0,0,0,2,0,4,76.1,6.9,0,64.8,0,496.2,0,0,1.386294,6.206979,0,0,0,1,0,0,64.8,8.806258,1.386294,3.22164,1 +11,5,0,0,1,527559,0,6674.895,23.75086,1,12,1,8.463818,4.502751,0,0,0,12.96657,0,0,0,1,0,3,73.4,3.4,0,73.9,0,496.2,0,0,1.098612,6.206979,0,0,0,1,0,0,73.9,8.806258,1.098612,2.562374,1 +11,5,0,0,2,527559,0,6674.895,24.75086,1,12,1,28.09415,12.61959,0,0,676.5376,717.2513,1,0,0,1,0,3,73.4,3.4,0,73.9,0,496.2,0,0,1.098612,6.206979,0,0,0,1,0,0,73.9,8.806258,1.098612,6.575426,1 +11,5,0,0,3,527559,0,6674.895,25.75086,1,12,1,30.44983,0,0,0,827.6816,858.1315,1,0,0,2,0,4,73.4,3.4,0,73.9,0,496.2,0,0,1.386294,6.206979,0,0,0,1,0,0,73.9,8.806258,1.386294,6.754757,1 +13,5,0,1,1,527637,0,6175.115,34.22313,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,66,13.8,0,79.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,79.5,8.728445,0,,0 +13,5,0,1,2,527637,0,6175.115,35.22313,0,12,1,51.52672,0,0,0,0,51.52672,0,0,0,1,0,1,66,13.8,0,79.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,79.5,8.728445,0,3.942101,1 +13,5,0,1,3,527637,0,6175.115,36.22313,0,12,1,9.756098,0,0,0,0,9.756098,0,0,0,1,0,1,66,13.8,0,79.5,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,79.5,8.728445,0,2.277893,1 +11,5,0,1,1,527651,1,0,4.4846,0,8,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,0,74.1,0,0,1,0,.6931472,0,0,0,0,0,1,0,74.1,0,.6931472,,0 +11,5,0,1,2,527651,1,0,5.4846,0,8,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,0,74.1,0,0,1,0,.6931472,0,0,0,0,0,1,0,74.1,0,.6931472,,0 +11,5,0,1,3,527651,1,0,6.4846,0,8,1,10.38062,0,0,0,0,10.38062,0,0,0,0,0,2,77.40034,10.57626,0,74.1,0,0,1,0,.6931472,0,0,0,0,0,1,0,74.1,0,.6931472,2.339941,1 +11,5,0,1,1,527652,1,0,24.98289,1,8,1,10.57977,0,0,0,0,10.57977,0,0,0,1,0,2,61.7,6.9,1,70.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,70.5,0,.6931472,2.358944,1 +11,5,0,1,2,527652,1,0,25.98289,1,8,1,19.74184,0,0,0,0,19.74184,0,0,0,2,0,2,61.7,6.9,1,70.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,70.5,0,.6931472,2.98274,1 +11,5,0,1,3,527652,1,0,26.98289,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,61.7,6.9,1,70.5,0,0,0,0,.6931472,0,0,0,0,1,0,0,70.5,0,.6931472,,0 +11,5,0,1,1,527674,1,10589.86,17.37988,1,8,1,10.63377,0,22.96895,0,0,33.60272,0,0,0,0,1,4,70.7,6.9,1,63.6,0,787.6,1,1,1.386294,6.66899,0,0,0,0,1,0,63.6,9.267747,1.386294,3.514607,1 +11,5,0,1,2,527674,1,10589.86,18.37988,1,8,1,0,0,23.66412,0,0,23.66412,0,0,0,0,0,4,70.7,6.9,1,63.6,0,787.6,0,0,1.386294,6.66899,0,0,0,0,1,0,63.6,9.267747,1.386294,3.16396,1 +11,5,0,1,3,527674,1,10589.86,19.37988,1,8,1,68.29269,6.620209,22.29965,0,0,97.21255,0,0,0,2,1,4,70.7,6.9,1,63.6,0,787.6,0,0,1.386294,6.66899,0,0,0,0,1,0,63.6,9.267747,1.386294,4.5769,1 +11,5,0,1,1,527675,1,10589.86,41.34155,1,8,1,10.63377,0,23.81965,0,0,34.45342,0,0,0,0,1,4,62.3,10.3,0,56.8,0,787.6,0,0,1.386294,6.66899,0,0,0,0,1,0,56.8,9.267747,1.386294,3.539608,1 +11,5,0,1,2,527675,1,10589.86,42.34155,1,8,1,9.541985,0,38.50382,0,0,48.0458,0,0,0,0,1,4,62.3,10.3,0,56.8,0,787.6,0,0,1.386294,6.66899,0,0,0,0,1,0,56.8,9.267747,1.386294,3.872155,1 +11,5,0,1,3,527675,1,10589.86,43.34155,1,8,1,8.710801,0,19.29617,0,0,28.00697,0,0,0,0,1,4,62.3,10.3,0,56.8,0,787.6,0,0,1.386294,6.66899,0,0,0,0,1,0,56.8,9.267747,1.386294,3.332453,1 +11,5,0,1,1,527676,1,10589.86,20.09583,1,10,1,10.63377,0,22.96895,0,0,33.60272,0,0,0,0,1,4,62.2,13.8,0,63.6,0,787.6,0,0,1.386294,6.66899,0,0,0,0,1,0,63.6,9.267747,1.386294,3.514607,1 +11,5,0,1,2,527676,1,10589.86,21.09583,1,10,1,9.541985,1.431298,27.48092,0,0,38.4542,0,0,0,0,1,4,62.2,13.8,0,63.6,0,787.6,0,0,1.386294,6.66899,0,0,0,0,1,0,63.6,9.267747,1.386294,3.649468,1 +11,5,0,1,3,527676,1,10589.86,22.09583,1,10,1,8.710801,0,24.04181,0,0,32.75261,0,0,0,0,1,4,62.2,13.8,0,63.6,0,787.6,0,0,1.386294,6.66899,0,0,0,0,1,0,63.6,9.267747,1.386294,3.488983,1 +11,5,0,1,1,527677,1,10589.86,43.64682,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,80.3,0,0,60.2,0,787.6,0,0,1.386294,6.66899,0,0,0,0,1,0,60.2,9.267747,1.386294,,0 +11,5,0,1,2,527677,1,10589.86,44.64682,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,80.3,0,0,60.2,0,787.6,0,0,1.386294,6.66899,0,0,0,0,1,0,60.2,9.267747,1.386294,,0 +11,5,0,1,3,527677,1,10589.86,45.64682,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,80.3,0,0,60.2,0,787.6,0,0,1.386294,6.66899,0,0,0,0,1,0,60.2,9.267747,1.386294,,0 +18,5,25,0,1,527705,1,0,41.81519,1,10,1,0,0,0,0,0,0,0,0,0,0,0,1,67.6,3.4,0,55.7,466.8,0,0,0,0,0,0,3.258096,7.532195,0,0,1,55.7,0,0,,0 +18,5,25,0,2,527705,1,0,42.81519,1,10,1,22.77904,0,0,0,0,22.77904,0,0,0,1,1,1,67.6,3.4,0,55.7,466.8,0,0,0,0,0,0,3.258096,7.532195,0,0,1,55.7,0,0,3.125841,1 +18,5,25,0,3,527705,1,0,43.81519,1,10,1,0,0,0,0,0,0,0,0,0,0,0,1,67.6,3.4,0,55.7,466.8,0,0,0,0,0,0,3.258096,7.532195,0,0,1,55.7,0,0,,0 +13,5,0,0,1,527710,1,0,22.80903,1,11,1,43.66227,0,24.67035,0,0,68.33263,0,0,0,2,1,1,59,13.8,0,55.7,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,55.7,0,0,4.224387,1 +13,5,0,0,2,527710,1,0,23.80903,1,11,1,56.79389,0,11.45038,0,0,68.24428,0,0,0,0,1,1,59,13.8,0,55.7,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,55.7,0,0,4.223094,1 +13,5,0,0,3,527710,1,0,24.80903,1,11,1,90.59233,5.905923,0,0,0,96.49826,0,0,0,1,0,1,59,13.8,0,55.7,150,0,0,0,0,0,1,4.564348,5.061929,1,0,0,55.7,0,0,4.569525,1 +18,5,25,0,1,527737,0,9861.239,29.69473,0,16,1,10.83785,0,0,0,0,10.83785,0,0,0,1,0,4,90.4,3.4,0,88.6,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.6,9.196468,1.386294,2.383044,1 +18,5,25,0,2,527737,0,9861.239,30.69473,0,16,1,46.88672,0,14.82371,0,769.6924,831.4028,1,0,0,3,0,5,90.4,3.4,0,88.6,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.6,9.196468,1.609438,6.723114,1 +18,5,25,0,3,527737,0,9861.239,31.69473,0,16,1,319.6888,3.592693,0,0,0,323.2815,0,0,0,5,0,5,90.4,3.4,0,88.6,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.6,9.196468,1.609438,5.778523,1 +18,5,25,0,1,527738,0,9861.239,30.07803,1,16,1,12.29679,11.33806,0,0,785.3272,808.9621,1,0,0,0,0,4,85.6,6.9,0,87.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,87.5,9.196468,1.386294,6.695752,1 +18,5,25,0,2,527738,0,9861.239,31.07803,1,16,1,15.00375,2.621906,17.55439,0,0,35.18005,0,0,0,1,0,5,85.6,6.9,0,87.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,87.5,9.196468,1.609438,3.560479,1 +18,5,25,0,3,527738,0,9861.239,32.07803,1,16,1,10.14885,6.681326,0,0,0,16.83018,0,0,0,1,0,5,85.6,6.9,0,87.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,87.5,9.196468,1.609438,2.823174,1 +18,5,25,0,1,527739,0,9861.239,8.569473,1,16,1,23.96832,17.31138,0,0,0,41.2797,0,0,0,2,0,4,88.3,10.57626,.1442925,96.3,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.196468,1.386294,3.720371,1 +18,5,25,0,2,527739,0,9861.239,9.569473,1,16,1,0,11.41785,0,0,0,11.41785,0,0,0,0,0,5,88.3,10.57626,.1442925,96.3,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.196468,1.609438,2.435178,1 +18,5,25,0,3,527739,0,9861.239,10.56947,1,16,1,11.84032,2.182003,0,0,0,14.02233,0,0,0,1,0,5,88.3,10.57626,.1442925,96.3,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.196468,1.609438,2.640651,1 +18,5,25,0,1,527740,0,9861.239,4.722793,0,16,1,0,20.15006,0,0,0,20.15006,0,0,0,0,0,4,77.40034,10.57626,0,100,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,100,9.196468,1.386294,3.003207,1 +18,5,25,0,2,527740,0,9861.239,5.722793,0,16,1,0,3.619655,0,0,0,3.619655,0,0,0,0,0,5,77.40034,10.57626,0,100,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,100,9.196468,1.609438,1.286379,1 +18,5,25,0,3,527740,0,9861.239,6.722793,0,16,1,18.60622,12.28349,0,0,0,30.88972,0,0,0,2,0,5,77.40034,10.57626,0,100,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,100,9.196468,1.609438,3.430423,1 +11,5,0,0,1,527791,1,0,8.481862,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,88.3,10.57626,0,100,0,0,1,1,.6931472,0,0,0,0,0,0,0,100,0,.6931472,,0 +11,5,0,0,1,527792,1,0,41.88091,1,12,1,0,0,36.16273,0,0,36.16273,0,0,0,0,0,2,74.5,3.4,1,81.8,0,0,0,0,.6931472,0,0,0,0,0,1,0,81.8,0,.6931472,3.588029,1 +11,5,0,0,2,527792,1,0,42.88091,1,12,1,24.80297,4.376449,0,0,0,29.17942,0,0,0,0,0,1,74.5,3.4,1,81.8,0,0,0,0,0,0,0,0,0,0,1,0,81.8,0,0,3.373464,1 +11,5,0,0,3,527792,1,0,43.88091,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,74.5,3.4,1,81.8,0,0,0,0,0,0,0,0,0,0,1,0,81.8,0,0,,0 +11,5,0,0,4,527792,1,0,44.88091,1,12,1,40.17176,0,0,0,0,40.17176,0,0,0,0,0,1,74.5,3.4,1,81.8,0,0,0,0,0,0,0,0,0,0,1,0,81.8,0,0,3.693164,1 +11,5,0,0,5,527792,1,0,45.88091,1,12,1,5.226481,0,0,0,1706.969,1712.195,1,0,0,1,0,1,74.5,3.4,1,81.8,0,0,0,0,0,0,0,0,0,0,1,0,81.8,0,0,7.445531,1 +16,5,95,0,1,527795,1,6674.895,4.15332,0,10,1,5.896806,0,0,0,0,5.896806,0,0,0,1,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,1.774411,1 +16,5,95,0,2,527795,1,6674.895,5.15332,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,3,527795,1,6674.895,6.15332,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,4,527795,1,6674.895,7.15332,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,5,527795,1,6674.895,8.153319,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,1,527796,1,3062.17,37.47844,0,12,1,0,0,0,0,55.8968,55.8968,1,0,0,0,0,1,35.6,13.8,0,42,869.1,0,0,0,0,0,0,4.564348,6.818751,1,0,0,42,8.027205,0,4.023507,1 +16,5,95,0,2,527796,1,3062.17,38.47844,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,35.6,13.8,0,42,869.1,0,0,0,0,0,0,4.564348,6.818751,1,0,0,42,8.027205,0,,0 +16,5,95,0,3,527796,1,3062.17,39.47844,0,12,1,0,0,0,0,11025.43,11025.43,2,0,0,0,0,1,35.6,13.8,0,42,869.1,0,0,0,0,0,0,4.564348,6.818751,1,0,0,42,8.027205,0,9.30796,1 +16,5,95,0,4,527796,1,3062.17,40.47844,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,35.6,13.8,0,42,869.1,0,0,0,0,0,0,4.564348,6.818751,1,0,0,42,8.027205,0,,0 +16,5,95,0,5,527796,1,3062.17,41.47844,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,35.6,13.8,0,42,869.1,0,0,0,0,0,0,4.564348,6.818751,1,0,0,42,8.027205,0,,0 +16,5,95,0,1,527797,1,6674.895,7.263518,1,10,1,5.896806,0,0,0,0,5.896806,0,0,0,1,0,7,77.40034,10.57626,.1442925,,869.1,0,1,1,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,1.774411,1 +16,5,95,0,2,527797,1,6674.895,8.263518,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,1,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,3,527797,1,6674.895,9.263518,1,10,1,10.42101,0,0,0,0,10.42101,0,0,0,1,0,7,77.40034,10.57626,.1442925,,869.1,0,1,1,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,2.343824,1 +16,5,95,0,4,527797,1,6674.895,10.26352,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,1,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,5,527797,1,6674.895,11.26352,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,1,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,1,527798,1,6674.895,6.193018,0,10,1,5.896806,0,0,0,0,5.896806,0,0,0,1,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,1.774411,1 +16,5,95,0,2,527798,1,6674.895,7.193018,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,3,527798,1,6674.895,8.193019,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,4,527798,1,6674.895,9.193019,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,5,527798,1,6674.895,10.19302,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,1,527799,1,6674.895,35.35934,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,0,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,2,527799,1,6674.895,36.35934,1,10,1,8.659982,0,0,0,0,8.659982,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,0,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,2.158713,1 +16,5,95,0,3,527799,1,6674.895,37.35934,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,0,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,4,527799,1,6674.895,38.35934,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,0,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,5,527799,1,6674.895,39.35934,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,0,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,1,527800,1,6674.895,14.63929,0,10,1,35.38084,0,0,0,691.4005,726.7813,1,0,0,2,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,6.588625,1 +16,5,95,0,2,527800,1,6674.895,15.63929,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,3,527800,1,6674.895,16.63929,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,4,527800,1,6674.895,17.63929,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,5,527800,1,6674.895,18.63929,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,0,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,1,527801,1,6674.895,8.695415,0,10,1,5.896806,0,0,0,0,5.896806,0,0,0,1,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,1.774411,1 +16,5,95,0,2,527801,1,6674.895,9.695415,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,3,527801,1,6674.895,10.69541,0,10,1,68.23676,0,0,0,0,68.23676,0,0,0,1,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,4.222983,1 +16,5,95,0,4,527801,1,6674.895,11.69541,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,5,527801,1,6674.895,12.69541,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,1,527802,1,6674.895,10.95414,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +16,5,95,0,2,527802,1,6674.895,11.95414,0,10,1,36.46308,0,0,0,0,36.46308,0,0,0,1,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,3.5963,1 +16,5,95,0,3,527802,1,6674.895,12.95414,0,10,1,14.58941,0,0,0,0,14.58941,0,0,0,1,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,2.680296,1 +16,5,95,0,4,527802,1,6674.895,13.95414,0,10,1,8.064516,0,0,0,0,8.064516,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,2.087474,1 +16,5,95,0,5,527802,1,6674.895,14.95414,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,869.1,0,1,0,1.94591,0,0,4.564348,6.818751,1,0,0,70.68995,8.806258,1.94591,,0 +5,5,25,0,1,527876,1,1556.068,48.24367,0,12,1,33.86622,52.54102,0,0,0,86.40723,0,0,0,7,0,1,75,6.9,0,60.2,33.05,0,0,0,0,0,0,3.258096,4.884316,1,0,0,60.2,7.35056,0,4.459072,1 +5,5,25,0,2,527876,1,1556.068,49.24367,0,12,1,37.58973,92.67473,0,0,0,130.2645,0,0,0,4,0,1,75,6.9,0,60.2,33.05,0,0,0,0,0,0,3.258096,4.884316,1,0,0,60.2,7.35056,0,4.869566,1 +5,5,25,0,3,527876,1,1556.068,50.24367,0,12,1,54.2024,48.78559,0,0,0,102.988,0,0,0,2,0,1,75,6.9,0,60.2,33.05,0,0,0,0,0,0,3.258096,4.884316,1,0,0,60.2,7.35056,0,4.634613,1 +13,5,0,1,1,527895,0,1524.322,35.24983,0,17,1,25.01042,0,34.76448,0,0,59.77491,0,0,0,2,0,1,60.6,13.8,0,80.7,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,80.7,7.32996,0,4.090586,1 +13,5,0,1,2,527895,0,1524.322,36.24983,0,17,1,237.8094,1.425356,14.82371,0,0,254.0585,0,0,0,5,0,1,60.6,13.8,0,80.7,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,80.7,7.32996,0,5.537565,1 +13,5,0,1,3,527895,0,1524.322,37.24983,0,17,1,128.5521,0,29.19824,0,0,157.7503,0,0,0,6,0,1,60.6,13.8,0,80.7,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,80.7,7.32996,0,5.061014,1 +11,5,0,0,1,527903,1,6674.895,37.7577,1,11,1,10.57977,0,23.69869,0,0,34.27846,0,0,0,0,1,3,58.5,37.9,0,60.2,0,0,0,0,1.098612,0,0,0,0,1,0,0,60.2,8.806258,1.098612,3.534517,1 +11,5,0,0,2,527903,1,6674.895,38.7577,1,11,1,185.877,0,26.1959,0,946.8489,1158.922,1,0,0,3,1,3,58.5,37.9,0,60.2,0,0,0,0,1.098612,0,0,0,0,1,0,0,60.2,8.806258,1.098612,7.055245,1 +11,5,0,0,3,527903,1,6674.895,39.7577,1,11,1,41.52249,6.089965,13.84083,0,0,61.45329,0,0,0,4,1,2,58.5,37.9,0,60.2,0,0,0,0,.6931472,0,0,0,0,1,0,0,60.2,8.806258,.6931472,4.118278,1 +11,5,0,0,1,527904,1,6674.895,5.051335,1,11,1,10.57977,0,22.85231,0,0,33.43208,0,0,0,0,1,3,77.40034,10.57626,.1442925,55.6,0,0,1,1,1.098612,0,0,0,0,1,0,0,55.6,8.806258,1.098612,3.509516,1 +11,5,0,0,2,527904,1,6674.895,6.051335,1,11,1,9.491268,0,22.01974,0,0,31.51101,0,0,0,0,1,3,77.40034,10.57626,.1442925,55.6,0,0,1,1,1.098612,0,0,0,0,1,0,0,55.6,8.806258,1.098612,3.450337,1 +11,5,0,0,1,527906,1,6674.895,9.826146,0,11,1,23.2755,0,22.85231,0,0,46.1278,0,0,0,1,1,3,95,10.57626,.1442925,55.6,0,0,1,0,1.098612,0,0,0,0,1,0,0,55.6,8.806258,1.098612,3.831416,1 +11,5,0,0,2,527906,1,6674.895,10.82615,0,11,1,17.08428,0,0,0,0,17.08428,0,0,0,1,0,3,95,10.57626,.1442925,55.6,0,0,1,0,1.098612,0,0,0,0,1,0,0,55.6,8.806258,1.098612,2.838159,1 +11,5,0,0,3,527906,1,6674.895,11.82615,0,11,1,26.98962,0,20.41522,0,0,47.40485,0,0,0,1,1,2,95,10.57626,.1442925,55.6,0,0,1,0,.6931472,0,0,0,0,1,0,0,55.6,8.806258,.6931472,3.858724,1 +11,5,0,0,1,527964,1,7592.934,54.61465,0,7,1,29.62336,0,51.05375,0,0,80.67711,0,0,0,1,0,5,82.4,10.3,0,75,0,0,0,0,1.609438,0,0,0,0,1,0,0,75,8.935105,1.609438,4.390455,1 +11,5,0,0,2,527964,1,7592.934,55.61465,0,7,1,0,3.481397,0,0,0,3.481397,0,0,0,0,0,5,82.4,10.3,0,75,0,0,0,0,1.609438,0,0,0,0,1,0,0,75,8.935105,1.609438,1.247434,1 +11,5,0,0,3,527964,1,7592.934,56.61465,0,7,1,13.84083,2.692042,31.3045,0,0,47.83737,0,0,0,1,1,5,82.4,10.3,0,75,0,0,0,0,1.609438,0,0,0,0,1,0,0,75,8.935105,1.609438,3.867807,1 +11,5,0,0,1,527965,1,7592.934,51.75907,1,5,1,0,16.79645,0,0,0,16.79645,0,0,0,0,0,5,86.5,20.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,1,55.7,8.935105,1.609438,2.821167,1 +11,5,0,0,2,527965,1,7592.934,52.75907,1,5,1,25.81625,15.85801,21.71602,0,0,63.39028,0,0,0,3,0,5,86.5,20.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,1,55.7,8.935105,1.609438,4.149311,1 +11,5,0,0,3,527965,1,7592.934,53.75907,1,5,1,76.47059,21.34602,0,0,0,97.81661,0,0,0,6,0,5,86.5,20.7,0,,0,0,0,0,1.609438,0,0,0,0,0,0,1,55.7,8.935105,1.609438,4.583095,1 +11,5,0,0,1,527966,1,7592.934,8.895277,1,5,1,0,0,0,0,0,0,0,0,0,0,0,5,100,10.57626,0,88.9,0,0,1,1,1.609438,0,0,0,0,0,0,0,88.9,8.935105,1.609438,,0 +11,5,0,0,2,527966,1,7592.934,9.895277,1,5,1,0,0,0,0,0,0,0,0,0,0,0,5,100,10.57626,0,88.9,0,0,1,1,1.609438,0,0,0,0,0,0,0,88.9,8.935105,1.609438,,0 +11,5,0,0,3,527966,1,7592.934,10.89528,1,5,1,8.650519,0,0,0,0,8.650519,0,0,0,0,1,5,100,10.57626,0,88.9,0,0,1,1,1.609438,0,0,0,0,0,0,0,88.9,8.935105,1.609438,2.157619,1 +11,5,0,0,1,527967,1,7592.934,14.68309,1,5,1,10.57977,0,0,0,0,10.57977,0,0,0,0,1,5,88.3,3.4,0,72.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,72.6,8.935105,1.609438,2.358944,1 +11,5,0,0,2,527967,1,7592.934,15.68309,1,5,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,3.4,0,72.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,72.6,8.935105,1.609438,,0 +11,5,0,0,3,527967,1,7592.934,16.68309,1,5,1,8.650519,0,28.42561,0,0,37.07613,0,0,0,0,1,5,88.3,3.4,0,72.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,72.6,8.935105,1.609438,3.612973,1 +11,5,0,0,1,527968,1,6674.895,5.226557,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,100,10.57626,0,70.4,0,0,1,1,0,0,0,0,0,0,0,0,70.4,8.806258,0,,0 +11,5,0,0,2,527968,1,6674.895,6.226557,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,100,10.57626,0,70.4,0,0,1,1,0,0,0,0,0,0,0,0,70.4,8.806258,0,,0 +11,5,0,0,3,527968,1,6674.895,7.226557,1,12,1,11.07266,0,0,0,0,11.07266,0,0,0,2,0,1,100,10.57626,0,70.4,0,0,1,1,0,0,0,0,0,0,0,0,70.4,8.806258,0,2.40448,1 +11,5,0,0,1,527969,1,7592.934,27.74264,1,10,1,42.69996,0,0,0,0,42.69996,0,0,0,0,0,5,93.4,6.9,0,70.2,0,0,0,0,1.609438,0,0,0,0,0,0,1,70.2,8.935105,1.609438,3.754198,1 +11,5,0,0,2,527969,1,7592.934,28.74264,1,10,1,118.47,0,0,0,0,118.47,0,0,0,1,0,5,93.4,6.9,0,70.2,0,0,0,0,1.609438,0,0,0,0,0,0,1,70.2,8.935105,1.609438,4.77466,1 +11,5,0,0,3,527969,1,7592.934,29.74264,1,10,1,85.53633,0,0,0,0,85.53633,0,0,0,1,0,5,93.4,6.9,0,70.2,0,0,0,0,1.609438,0,0,0,0,0,0,1,70.2,8.935105,1.609438,4.448941,1 +11,5,0,1,1,527970,1,6878.648,13.72211,1,8,1,30.89293,0,32.16251,0,0,63.05544,0,0,0,2,1,5,100,10.57626,0,96.3,0,416,1,1,1.609438,6.030685,0,0,0,1,0,0,96.3,8.836323,1.609438,4.144014,1 +11,5,0,1,2,527970,1,6878.648,14.72211,1,8,1,24.6773,3.382688,15.18603,0,0,43.24601,0,0,0,3,1,5,100,10.57626,0,96.3,0,416,1,1,1.609438,6.030685,0,0,0,1,0,0,96.3,8.836323,1.609438,3.766905,1 +11,5,0,1,3,527970,1,6878.648,15.72211,1,8,1,115.917,0,30.3218,0,0,146.2388,0,0,0,5,1,5,100,10.57626,0,96.3,0,416,1,1,1.609438,6.030685,0,0,0,1,0,0,96.3,8.836323,1.609438,4.98524,1 +11,5,0,1,1,527972,1,6878.648,50.10267,0,8,1,14.81168,0,42.31908,0,0,57.13077,0,0,0,0,1,5,64.4,10.3,1,70,0,416,0,0,1.609438,6.030685,0,0,0,0,1,0,70,8.836323,1.609438,4.045343,1 +11,5,0,1,2,527972,1,6878.648,51.10267,0,8,1,18.98254,3.109339,24.6773,0,0,46.76917,0,0,0,1,1,5,64.4,10.3,1,70,0,416,0,0,1.609438,6.030685,0,0,0,0,1,0,70,8.836323,1.609438,3.845224,1 +11,5,0,1,3,527972,1,6878.648,52.10267,0,8,1,16.95502,0,16.609,0,0,33.56401,0,0,0,1,1,5,64.4,10.3,1,70,0,416,0,0,1.609438,6.030685,0,0,0,0,1,0,70,8.836323,1.609438,3.513454,1 +11,5,0,1,1,527973,1,6878.648,40.71458,1,8,1,30.68134,4.879391,0,0,0,35.56073,0,0,0,1,0,5,95.2,6.9,0,83,0,416,0,0,1.609438,6.030685,0,0,0,0,0,0,83,8.836323,1.609438,3.571242,1 +11,5,0,1,2,527973,1,6878.648,41.71458,1,8,1,6.833713,0,0,0,857.631,864.4647,1,0,0,1,0,5,95.2,6.9,0,83,0,416,0,0,1.609438,6.030685,0,0,0,0,0,0,83,8.836323,1.609438,6.762111,1 +11,5,0,1,3,527973,1,6878.648,42.71458,1,8,1,48.44291,0,40.83045,0,796.8858,886.1592,1,0,0,2,1,5,95.2,6.9,0,83,0,416,0,0,1.609438,6.030685,0,0,0,0,0,0,83,8.836323,1.609438,6.786897,1 +11,5,0,1,1,527974,1,6878.648,11.55647,0,8,1,7.617435,2.264071,0,0,0,9.881507,0,0,0,1,0,5,78.3,10.57626,0,85.2,0,416,1,0,1.609438,6.030685,0,0,0,1,0,0,85.2,8.836323,1.609438,2.290665,1 +11,5,0,1,2,527974,1,6878.648,12.55647,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,78.3,10.57626,0,85.2,0,416,1,0,1.609438,6.030685,0,0,0,1,0,0,85.2,8.836323,1.609438,,0 +11,5,0,1,3,527974,1,6878.648,13.55647,0,8,1,20.76125,0,29.06574,0,0,49.82699,0,0,0,0,2,5,78.3,10.57626,0,85.2,0,416,1,0,1.609438,6.030685,0,0,0,1,0,0,85.2,8.836323,1.609438,3.908557,1 +11,5,0,1,1,527975,.4758801,502.3041,19.5154,1,10,1,10.51746,0,0,0,0,10.51746,0,0,0,2,0,1,58,0,0,69.3,0,18,0,0,0,2.890372,0,0,0,1,0,0,69.3,6.221195,0,2.353037,1 +11,5,0,1,2,527975,.4758801,502.3041,20.5154,1,10,1,75.93502,5.515678,0,0,0,81.4507,0,0,0,3,0,1,58,0,0,69.3,0,18,0,0,0,2.890372,0,0,0,1,0,0,69.3,6.221195,0,4.399998,1 +11,5,0,1,3,527975,.4758801,502.3041,21.5154,1,10,1,110.1201,16.13722,37.73585,0,0,163.9931,0,0,0,7,1,1,58,0,0,69.3,0,18,0,0,0,2.890372,0,0,0,1,0,0,69.3,6.221195,0,5.099824,1 +11,5,0,1,1,527976,1,6878.648,9.010267,1,8,1,12.69573,0,28.77698,0,0,41.47271,0,0,0,0,1,5,83.3,10.57626,0,70.4,0,416,1,1,1.609438,6.030685,0,0,0,1,0,0,70.4,8.836323,1.609438,3.725035,1 +11,5,0,1,2,527976,1,6878.648,10.01027,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,83.3,10.57626,0,70.4,0,416,1,1,1.609438,6.030685,0,0,0,1,0,0,70.4,8.836323,1.609438,,0 +11,5,0,1,3,527976,1,6878.648,11.01027,1,8,1,10.38062,0,38.75433,0,0,49.13495,0,0,0,0,1,5,83.3,10.57626,0,70.4,0,416,1,1,1.609438,6.030685,0,0,0,1,0,0,70.4,8.836323,1.609438,3.894571,1 +13,5,0,1,1,527994,1,6674.895,12.34771,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,66.7,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.806258,1.386294,,0 +13,5,0,1,2,527994,1,6674.895,13.34771,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,66.7,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.806258,1.386294,,0 +13,5,0,1,3,527994,1,6674.895,14.34771,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,66.7,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.806258,1.386294,,0 +13,5,0,1,1,527995,1,6674.895,32.46817,1,12,1,15.23487,4.418113,0,0,0,19.65298,0,0,0,2,0,4,58,20.7,0,81.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,81.8,8.806258,1.386294,2.978229,1 +13,5,0,1,2,527995,1,6674.895,33.46817,1,12,1,59.22551,0,0,0,0,59.22551,0,0,0,2,0,4,58,20.7,0,81.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,81.8,8.806258,1.386294,4.081352,1 +13,5,0,1,3,527995,1,6674.895,34.46817,1,12,1,19.37716,7.916955,0,0,506.2284,533.5225,1,0,0,2,0,4,58,20.7,0,81.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,81.8,8.806258,1.386294,6.279501,1 +13,5,0,1,1,527996,1,6674.895,34.73785,0,7,1,234.4477,8.539991,0,0,0,242.9877,0,0,0,4,18,4,78.7,10.3,0,47.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,47.7,8.806258,1.386294,5.493011,1 +13,5,0,1,2,527996,1,6674.895,35.73785,0,7,1,0,0,0,0,0,0,0,0,0,0,0,4,78.7,10.3,0,47.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,47.7,8.806258,1.386294,,0 +13,5,0,1,3,527996,1,6674.895,36.73785,0,7,1,284.4291,24.57093,0,0,0,309,0,0,0,10,0,4,78.7,10.3,0,47.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,47.7,8.806258,1.386294,5.733341,1 +13,5,0,1,1,527997,1,6674.895,11.00342,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80,10.57626,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.806258,1.386294,,0 +13,5,0,1,2,527997,1,6674.895,12.00342,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80,10.57626,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.806258,1.386294,,0 +13,5,0,1,3,527997,1,6674.895,13.00342,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80,10.57626,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.806258,1.386294,,0 +18,5,25,1,1,528013,1,7266.257,17.69747,1,10,1,8.081667,0,0,0,0,8.081667,0,0,0,0,0,4,76.6,6.9,0,57.5,362.31,362.31,1,1,1.386294,5.8925,0,3.258096,7.278795,1,0,0,57.5,8.891134,1.386294,2.089598,1 +18,5,25,1,2,528013,1,7266.257,18.69747,1,10,1,0,0,9.923664,0,0,9.923664,0,0,0,0,0,4,76.6,6.9,0,57.5,362.31,362.31,0,0,1.386294,5.8925,0,3.258096,7.278795,1,0,0,57.5,8.891134,1.386294,2.294922,1 +18,5,25,1,3,528013,1,7266.257,19.69747,1,10,1,19.16376,4.857143,0,0,0,24.02091,0,0,0,0,1,4,76.6,6.9,0,57.5,362.31,362.31,0,0,1.386294,5.8925,0,3.258096,7.278795,1,0,0,57.5,8.891134,1.386294,3.178925,1 +18,5,25,1,1,528014,1,7266.257,16.3258,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,92,3.4,0,64.8,362.31,362.31,1,0,1.386294,5.8925,0,3.258096,7.278795,1,0,0,64.8,8.891134,1.386294,,0 +18,5,25,1,2,528014,1,7266.257,17.3258,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,92,3.4,0,64.8,362.31,362.31,1,0,1.386294,5.8925,0,3.258096,7.278795,1,0,0,64.8,8.891134,1.386294,,0 +18,5,25,1,3,528014,1,7266.257,18.3258,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,92,3.4,0,64.8,362.31,362.31,0,0,1.386294,5.8925,0,3.258096,7.278795,1,0,0,64.8,8.891134,1.386294,,0 +18,5,25,1,1,528015,1,7266.257,41.12526,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,73.4,10.3,1,47.7,362.31,362.31,0,0,1.386294,5.8925,0,3.258096,7.278795,0,1,0,47.7,8.891134,1.386294,,0 +18,5,25,1,2,528015,1,7266.257,42.12526,1,10,1,34.35115,45.17176,0,0,0,79.5229,0,0,0,0,0,4,73.4,10.3,1,47.7,362.31,362.31,0,0,1.386294,5.8925,0,3.258096,7.278795,0,1,0,47.7,8.891134,1.386294,4.376045,1 +18,5,25,1,3,528015,1,7266.257,43.12526,1,10,1,0,8.170732,0,0,0,8.170732,0,0,0,0,0,4,73.4,10.3,1,47.7,362.31,362.31,0,0,1.386294,5.8925,0,3.258096,7.278795,0,1,0,47.7,8.891134,1.386294,2.100559,1 +18,5,25,1,1,528018,1,7266.257,10.8282,1,10,1,8.081667,0,0,0,0,8.081667,0,0,0,0,0,4,83.3,10.57626,0,63,362.31,362.31,1,1,1.386294,5.8925,0,3.258096,7.278795,1,0,0,63,8.891134,1.386294,2.089598,1 +18,5,25,1,2,528018,1,7266.257,11.8282,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,0,63,362.31,362.31,1,1,1.386294,5.8925,0,3.258096,7.278795,1,0,0,63,8.891134,1.386294,,0 +18,5,25,1,3,528018,1,7266.257,12.8282,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,0,63,362.31,362.31,1,1,1.386294,5.8925,0,3.258096,7.278795,1,0,0,63,8.891134,1.386294,,0 +13,5,0,1,1,528054,1,4384.537,31.98083,1,16,1,25.52106,6.444067,0,0,0,31.96512,0,0,0,3,0,1,64.9,3.4,0,60.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,60.2,8.386067,0,3.464645,1 +13,5,0,1,2,528054,1,4384.537,32.98083,1,16,1,20.99237,0,0,0,0,20.99237,0,0,0,4,0,1,64.9,3.4,0,60.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,60.2,8.386067,0,3.044159,1 +13,5,0,1,3,528054,1,4384.537,33.98083,1,16,1,12.19512,0,0,0,0,12.19512,0,0,0,2,0,1,64.9,3.4,0,60.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,60.2,8.386067,0,2.501036,1 +14,5,95,1,1,528069,0,8094.214,48.80219,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,81.4,6.9,0,77.3,749.95,749.95,0,0,.6931472,6.620007,0,4.564348,6.6713,1,0,0,77.3,8.999028,.6931472,,0 +14,5,95,1,2,528069,0,8094.214,49.80219,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,81.4,6.9,0,77.3,749.95,749.95,0,0,.6931472,6.620007,0,4.564348,6.6713,1,0,0,77.3,8.999028,.6931472,,0 +14,5,95,1,3,528069,0,8094.214,50.80219,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,81.4,6.9,0,77.3,749.95,749.95,0,0,.6931472,6.620007,0,4.564348,6.6713,1,0,0,77.3,8.999028,.6931472,,0 +14,5,95,1,1,528073,0,8094.214,57.21834,0,6,1,38.70693,26.13356,0,0,0,64.84049,0,0,0,5,0,2,64.4,20.7,0,53.4,749.95,749.95,0,0,.6931472,6.620007,0,4.564348,6.6713,1,0,0,53.4,8.999028,.6931472,4.17193,1 +14,5,95,1,2,528073,0,8094.214,58.21834,0,6,1,11.45038,8.870229,0,0,0,20.32061,0,0,0,2,0,2,64.4,20.7,0,53.4,749.95,749.95,0,0,.6931472,6.620007,0,4.564348,6.6713,1,0,0,53.4,8.999028,.6931472,3.011636,1 +14,5,95,1,3,528073,0,8094.214,59.21834,0,6,1,4.181185,4.132404,0,0,0,8.313589,0,0,0,1,0,2,64.4,20.7,0,53.4,749.95,749.95,0,0,.6931472,6.620007,0,4.564348,6.6713,1,0,0,53.4,8.999028,.6931472,2.117891,1 +13,5,0,0,1,528125,1,4133.128,26.92402,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,77.7,0,0,79.5,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,79.5,8.327032,1.098612,,0 +13,5,0,0,2,528125,1,4133.128,27.92402,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,77.7,0,0,79.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,79.5,8.327032,1.386294,,0 +13,5,0,0,3,528125,1,4133.128,28.92402,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,77.7,0,0,79.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,79.5,8.327032,1.386294,,0 +13,5,0,0,1,528126,1,4133.128,24.65982,1,11,1,140.2878,0,0,0,349.5557,489.8434,1,1,0,12,0,3,82.4,10.3,0,88.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,88.6,8.327032,1.098612,6.194086,1 +13,5,0,0,2,528126,1,4133.128,25.65982,1,11,1,32.27031,0,0,0,0,32.27031,0,0,0,2,0,4,82.4,10.3,0,88.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.6,8.327032,1.386294,3.474148,1 +13,5,0,0,3,528126,1,4133.128,26.65982,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,82.4,10.3,0,88.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.6,8.327032,1.386294,,0 +13,5,0,0,1,528127,1,4133.128,6.872005,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,83.3,10.57626,0,88.9,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,1,0,0,88.9,8.327032,1.098612,,0 +13,5,0,0,2,528127,1,4133.128,7.872005,1,11,1,11.38952,0,0,0,0,11.38952,0,0,0,1,0,4,83.3,10.57626,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.9,8.327032,1.386294,2.432694,1 +13,5,0,0,3,528127,1,4133.128,8.872005,1,11,1,8.650519,0,21.5917,0,0,30.24221,0,0,0,1,0,4,83.3,10.57626,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.9,8.327032,1.386294,3.409239,1 +13,5,0,1,1,528160,0,4416.794,22.37098,1,11,1,0,6.03047,0,0,0,6.03047,0,0,0,0,0,4,80.9,13.8,0,93.2,450,0,0,0,1.386294,0,1,4.564348,6.160541,1,0,0,93.2,8.393395,1.386294,1.796825,1 +13,5,0,1,2,528160,0,4416.794,23.37098,1,11,1,38.72437,0,0,0,389.142,427.8664,1,0,0,1,0,4,80.9,13.8,0,93.2,450,0,0,0,1.386294,0,1,4.564348,6.160541,1,0,0,93.2,8.393395,1.386294,6.058811,1 +13,5,0,1,3,528160,0,4416.794,24.37098,1,11,1,0,0,0,0,2020.363,2020.363,1,0,0,0,0,4,80.9,13.8,0,93.2,450,0,0,0,1.386294,0,1,4.564348,6.160541,1,0,0,93.2,8.393395,1.386294,7.611032,1 +13,5,0,1,1,528161,0,4416.794,23.39494,0,7,1,0,0,0,0,0,0,0,0,0,0,0,4,94.1,10.3,0,92,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,1,0,92,8.393395,1.386294,,0 +13,5,0,1,2,528161,0,4416.794,24.39494,0,7,1,0,3.796507,0,0,213.7434,217.5399,1,0,0,0,0,4,94.1,10.3,0,92,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,1,0,92,8.393395,1.386294,5.382382,1 +13,5,0,1,3,528161,0,4416.794,25.39494,0,7,1,19.03114,0,0,0,0,19.03114,0,0,0,1,0,4,94.1,10.3,0,92,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,1,0,92,8.393395,1.386294,2.946077,1 +13,5,0,0,1,528162,0,4416.794,3.129364,1,11,1,6.347863,0,0,0,0,6.347863,0,0,0,0,0,4,77.40034,10.57626,0,85.2,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,1,0,85.2,8.393395,1.386294,1.848118,1 +13,5,0,0,2,528162,0,4416.794,4.129364,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,85.2,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,1,0,85.2,8.393395,1.386294,,0 +13,5,0,0,3,528162,0,4416.794,5.129364,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,85.2,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,1,0,85.2,8.393395,1.386294,,0 +11,5,0,0,1,528185,1,1028.162,52.23819,1,4,1,33.60272,0,0,0,0,33.60272,0,0,0,1,0,1,51.1,20.7,1,60.2,0,71.4,0,0,0,4.268298,0,0,0,1,0,0,60.2,6.9365,0,3.514607,1 +11,5,0,0,2,528185,1,1028.162,53.23819,1,4,1,11.45038,0,0,0,0,11.45038,0,0,0,1,0,1,51.1,20.7,1,60.2,0,71.4,0,0,0,4.268298,0,0,0,1,0,0,60.2,6.9365,0,2.438023,1 +11,5,0,0,3,528185,1,1028.162,54.23819,1,4,1,32.40418,0,29.26829,0,0,61.67247,0,0,0,0,1,1,51.1,20.7,1,60.2,0,71.4,0,0,0,4.268298,0,0,0,1,0,0,60.2,6.9365,0,4.121838,1 +11,5,0,1,1,528195,1,6674.895,39.41136,0,10,1,0,0,0,0,0,0,0,0,0,0,0,1,62.8,6.9,0,46.6,0,96,0,0,0,4.564348,0,0,0,1,0,0,46.6,8.806258,0,,0 +11,5,0,1,2,528195,1,6674.895,40.41136,0,10,1,0,0,0,0,0,0,0,0,0,0,0,1,62.8,6.9,0,46.6,0,96,0,0,0,4.564348,0,0,0,1,0,0,46.6,8.806258,0,,0 +11,5,0,1,3,528195,1,6674.895,41.41136,0,10,1,0,0,0,0,0,0,0,0,0,0,0,1,62.8,6.9,0,46.6,0,96,0,0,0,4.564348,0,0,0,1,0,0,46.6,8.806258,0,,0 +13,5,0,0,1,528263,1,3371.224,53.2731,1,11,1,68.77866,3.309712,0,0,0,72.08837,0,0,0,5,0,1,69.7,10.3,0,61.4,150,268.84,0,0,0,5.594116,1,4.564348,5.061929,1,0,0,61.4,8.123327,0,4.277893,1 +13,5,0,0,2,528263,1,3371.224,54.2731,1,11,1,0,34.83871,0,0,0,34.83871,0,0,0,0,0,1,69.7,10.3,0,61.4,150,268.84,0,0,0,5.594116,1,4.564348,5.061929,1,0,0,61.4,8.123327,0,3.550729,1 +13,5,0,0,3,528263,1,3371.224,55.2731,1,11,1,44.65494,17.49323,0,0,0,62.14817,0,0,0,4,0,1,69.7,10.3,0,61.4,150,268.84,0,0,0,5.594116,1,4.564348,5.061929,1,0,0,61.4,8.123327,0,4.129521,1 +11,5,0,1,1,528326,0,10274.49,49.20739,1,16,1,86.96729,39.20713,38.65213,0,0,164.8266,0,0,0,11,0,4,92,6.9,0,85.2,0,354.12,0,0,1.386294,5.869636,0,0,0,0,0,0,85.2,9.237516,1.386294,5.104894,1 +11,5,0,1,2,528326,0,10274.49,50.20739,1,16,1,76.87012,33.50161,0,0,0,110.3717,0,0,0,9,0,4,92,6.9,0,85.2,0,354.12,0,0,1.386294,5.869636,0,0,0,0,0,0,85.2,9.237516,1.386294,4.703854,1 +11,5,0,1,3,528326,0,10274.49,51.20739,1,16,1,203.1973,53.47497,68.2541,0,0,324.9264,0,0,0,19,1,4,92,6.9,0,85.2,0,354.12,0,0,1.386294,5.869636,0,0,0,0,0,0,85.2,9.237516,1.386294,5.783599,1 +11,5,0,1,4,528326,0,10274.49,52.20739,1,16,1,1351.53,35.63657,0,0,3167.737,4554.904,3,0,0,30,0,4,92,6.9,0,85.2,0,354.12,0,0,1.386294,5.869636,0,0,0,0,0,0,85.2,9.237516,1.386294,8.42396,1 +11,5,0,1,5,528326,0,10274.49,53.20739,1,16,1,360.5489,42.4048,25.72899,0,844.7341,1273.417,1,0,0,27,0,4,92,6.9,0,85.2,0,354.12,0,0,1.386294,5.869636,0,0,0,0,0,0,85.2,9.237516,1.386294,7.149459,1 +11,5,0,1,1,528327,0,10274.49,17.11431,0,16,1,54.50941,16.31814,0,0,0,70.82755,0,0,0,8,0,4,96.8,3.4,0,92,0,354.12,1,0,1.386294,5.869636,0,0,0,0,0,0,92,9.237516,1.386294,4.260248,1 +11,5,0,1,2,528327,0,10274.49,18.11431,0,16,1,71.13354,14.10739,0,0,0,85.24094,0,0,0,9,0,4,96.8,3.4,0,92,0,354.12,0,0,1.386294,5.869636,0,0,0,0,0,0,92,9.237516,1.386294,4.445482,1 +11,5,0,1,3,528327,0,10274.49,19.11431,0,16,1,45.85612,16.3273,.8413967,0,0,63.02482,0,0,0,6,0,4,96.8,3.4,0,92,0,354.12,0,0,1.386294,5.869636,0,0,0,0,0,0,92,9.237516,1.386294,4.143528,1 +11,5,0,1,4,528327,0,10274.49,20.11431,0,16,1,19.2671,4.91122,29.07442,0,0,53.25274,0,0,0,2,0,4,96.8,3.4,0,92,0,354.12,0,0,1.386294,5.869636,0,0,0,0,0,0,92,9.237516,1.386294,3.975049,1 +11,5,0,1,5,528327,0,10274.49,21.11431,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,96.8,3.4,0,92,0,354.12,0,0,1.386294,5.869636,0,0,0,0,0,0,92,9.237516,1.386294,,0 +11,5,0,1,1,528328,0,10274.49,46.98152,0,16,1,14.8662,0,40.19822,0,0,55.06442,0,0,0,1,0,4,77.7,6.9,0,62.5,0,354.12,0,0,1.386294,5.869636,0,0,0,0,0,0,62.5,9.237516,1.386294,4.008504,1 +11,5,0,1,2,528328,0,10274.49,47.98152,0,16,1,42.68013,.8673704,0,0,0,43.5475,0,0,0,1,0,4,77.7,6.9,0,62.5,0,354.12,0,0,1.386294,5.869636,0,0,0,0,0,0,62.5,9.237516,1.386294,3.773852,1 +11,5,0,1,3,528328,0,10274.49,48.98152,0,16,1,65.20824,4.530921,38.50232,0,0,108.2415,0,0,0,2,0,4,77.7,6.9,0,62.5,0,354.12,0,0,1.386294,5.869636,0,0,0,0,0,0,62.5,9.237516,1.386294,4.684365,1 +11,5,0,1,4,528328,0,10274.49,49.98152,0,16,1,45.14545,6.241027,0,0,0,51.38647,0,0,0,1,0,4,77.7,6.9,0,62.5,0,354.12,0,0,1.386294,5.869636,0,0,0,0,0,0,62.5,9.237516,1.386294,3.939375,1 +11,5,0,1,5,528328,0,10274.49,50.98152,0,16,1,79.61235,14.55918,36.74443,0,0,130.916,0,0,0,8,0,4,77.7,6.9,0,62.5,0,354.12,0,0,1.386294,5.869636,0,0,0,0,0,0,62.5,9.237516,1.386294,4.874556,1 +11,5,0,1,1,528330,0,10274.49,13.67556,0,16,1,63.42914,.7680872,27.82953,0,0,92.02676,0,0,0,6,0,4,86.7,10.57626,0,88.9,0,354.12,1,0,1.386294,5.869636,0,0,0,0,0,0,88.9,9.237516,1.386294,4.522079,1 +11,5,0,1,2,528330,0,10274.49,14.67556,0,16,1,10.09637,0,0,0,0,10.09637,0,0,0,1,0,4,86.7,10.57626,0,88.9,0,354.12,1,0,1.386294,5.869636,0,0,0,0,0,0,88.9,9.237516,1.386294,2.312176,1 +11,5,0,1,3,528330,0,10274.49,15.67556,0,16,1,61.84266,8.872528,27.2276,0,0,97.94279,0,0,0,8,0,4,86.7,10.57626,0,88.9,0,354.12,1,0,1.386294,5.869636,0,0,0,0,0,0,88.9,9.237516,1.386294,4.584383,1 +11,5,0,1,4,528330,0,10274.49,16.67556,0,16,1,64.60143,29.38799,0,75.55724,0,93.98943,0,0,4,9,0,4,86.7,10.57626,0,88.9,0,354.12,1,0,1.386294,5.869636,0,0,0,0,0,0,88.9,9.237516,1.386294,4.543182,1 +11,5,0,1,5,528330,0,10274.49,17.67556,0,16,1,57.63293,66.23328,25.72899,377.3585,0,149.5952,0,0,22,7,0,4,86.7,10.57626,0,88.9,0,354.12,1,0,1.386294,5.869636,0,0,0,0,0,0,88.9,9.237516,1.386294,5.007933,1 +14,5,95,0,1,528359,0,11026.98,24.29295,1,16,1,19.65602,17.02703,0,0,0,36.68305,0,0,0,2,0,2,60.1,27.6,0,72.6,850,850,0,0,.6931472,6.745236,0,4.564348,6.79653,1,0,0,72.6,9.308191,.6931472,3.602315,1 +14,5,95,0,2,528359,0,11026.98,25.29295,1,16,1,8.204193,0,0,0,157.247,165.4512,1,0,0,1,0,2,60.1,27.6,0,72.6,850,850,0,0,.6931472,6.745236,0,4.564348,6.79653,1,0,0,72.6,9.308191,.6931472,5.108676,1 +11,5,0,1,1,528553,0,14946.04,6.099932,0,16,1,44.10307,3.587711,0,0,0,47.69078,0,0,0,2,0,3,68.3,10.57626,0,74.1,0,469.68,1,0,1.098612,6.152051,0,0,0,1,0,0,74.1,9.612268,1.098612,3.864738,1 +11,5,0,1,2,528553,0,14946.04,7.099932,0,16,1,35.79624,33.64846,0,0,0,69.4447,0,0,0,4,0,4,68.3,10.57626,0,74.1,0,469.68,1,0,1.386294,6.152051,0,0,0,1,0,0,74.1,9.612268,1.386294,4.240531,1 +11,5,0,1,3,528553,0,14946.04,8.099932,0,16,1,14.72444,11.15271,0,0,0,25.87716,0,0,0,2,0,4,68.3,10.57626,0,74.1,0,469.68,1,0,1.386294,6.152051,0,0,0,1,0,0,74.1,9.612268,1.386294,3.253361,1 +11,5,0,1,4,528553,0,14946.04,9.099932,0,16,1,148.47,18.26596,0,0,0,166.7359,0,0,0,7,0,4,68.3,10.57626,0,74.1,0,469.68,1,0,1.386294,6.152051,0,0,0,1,0,0,74.1,9.612268,1.386294,5.116411,1 +11,5,0,1,5,528553,0,14946.04,10.09993,0,16,1,20.92624,20.50429,0,0,0,41.43053,0,0,0,2,0,4,68.3,10.57626,0,74.1,0,469.68,1,0,1.386294,6.152051,0,0,0,1,0,0,74.1,9.612268,1.386294,3.724018,1 +11,5,0,1,1,528554,0,14946.04,35.95072,0,18,1,19.82161,0,0,0,0,19.82161,0,0,0,1,0,3,86.2,6.9,0,86.4,0,469.68,0,0,1.098612,6.152051,0,0,0,1,0,0,86.4,9.612268,1.098612,2.986773,1 +11,5,0,1,2,528554,0,14946.04,36.95072,0,18,1,13.76778,0,24.81872,0,0,38.58651,0,0,0,1,0,4,86.2,6.9,0,86.4,0,469.68,0,0,1.386294,6.152051,0,0,0,1,0,0,86.4,9.612268,1.386294,3.652903,1 +11,5,0,1,3,528554,0,14946.04,37.95072,0,18,1,0,0,0,0,0,0,0,0,0,0,0,4,86.2,6.9,0,86.4,0,469.68,0,0,1.386294,6.152051,0,0,0,1,0,0,86.4,9.612268,1.386294,,0 +11,5,0,1,4,528554,0,14946.04,38.95072,0,18,1,18.13374,2.859841,0,0,0,20.99358,0,0,0,3,0,4,86.2,6.9,0,86.4,0,469.68,0,0,1.386294,6.152051,0,0,0,1,0,0,86.4,9.612268,1.386294,3.044217,1 +11,5,0,1,5,528554,0,14946.04,39.95072,0,18,1,13.72213,0,30.67924,0,0,44.40137,0,0,0,1,0,4,86.2,6.9,0,86.4,0,469.68,0,0,1.386294,6.152051,0,0,0,1,0,0,86.4,9.612268,1.386294,3.79327,1 +11,5,0,1,1,528555,0,14946.04,36.3614,1,16,1,11.89296,12.05154,0,0,545.2428,569.1873,1,0,0,2,0,3,63.8,24.1,0,96.6,0,469.68,0,0,1.098612,6.152051,0,0,0,1,0,0,96.6,9.612268,1.098612,6.34421,1 +11,5,0,1,2,528555,0,14946.04,37.3614,1,16,1,56.44791,34.51124,29.59156,0,0,120.5507,0,0,0,8,0,4,63.8,24.1,0,96.6,0,469.68,0,0,1.386294,6.152051,0,0,0,1,0,0,96.6,9.612268,1.386294,4.79207,1 +11,5,0,1,3,528555,0,14946.04,38.3614,1,16,1,82.45688,0,0,0,373.5801,456.037,1,0,0,2,8,4,63.8,24.1,0,96.6,0,469.68,0,0,1.386294,6.152051,0,0,0,1,0,0,96.6,9.612268,1.386294,6.122574,1 +11,5,0,1,4,528555,0,14946.04,39.3614,1,16,1,30.60068,1.938043,0,0,0,32.53872,0,0,0,2,0,4,63.8,24.1,0,96.6,0,469.68,0,0,1.386294,6.152051,0,0,0,1,0,0,96.6,9.612268,1.386294,3.482431,1 +11,5,0,1,5,528555,0,14946.04,40.3614,1,16,1,42.19554,6.542024,2.401372,0,0,51.13894,0,0,0,5,0,4,63.8,24.1,0,96.6,0,469.68,0,0,1.386294,6.152051,0,0,0,1,0,0,96.6,9.612268,1.386294,3.934546,1 +14,5,95,0,1,528562,.4758801,798.7711,19.01711,1,9,1,0,0,0,0,0,0,0,0,0,0,0,1,71.8,3.4,0,71.6,0,0,0,0,0,0,0,4.564348,0,1,0,0,71.6,6.684326,0,,0 +14,5,95,0,2,528562,.4758801,798.7711,20.01711,1,9,1,0,0,0,0,0,0,0,0,0,0,0,1,71.8,3.4,0,71.6,0,0,0,0,0,0,0,4.564348,0,1,0,0,71.6,6.684326,0,,0 +14,5,95,0,3,528562,.4758801,798.7711,21.01711,1,9,1,0,0,0,0,0,0,0,0,0,0,0,1,71.8,3.4,0,71.6,0,0,0,0,0,0,0,4.564348,0,1,0,0,71.6,6.684326,0,,0 +11,5,0,1,1,528589,1,6674.895,35.70979,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,75.5,10.3,0,54.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,54.5,8.806258,1.386294,,0 +11,5,0,1,2,528589,1,6674.895,36.70979,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,75.5,10.3,0,54.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,54.5,8.806258,1.386294,,0 +11,5,0,1,3,528589,1,6674.895,37.70979,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,75.5,10.3,0,54.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,54.5,8.806258,1.386294,,0 +11,5,0,1,1,528590,1,6674.895,46.38193,1,12,1,10.51746,0,0,0,846.8658,857.3832,1,0,0,2,0,4,80.3,10.3,0,73.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,73.9,8.806258,1.386294,6.753885,1 +11,5,0,1,2,528590,1,6674.895,47.38193,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80.3,10.3,0,73.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,73.9,8.806258,1.386294,,0 +11,5,0,1,3,528590,1,6674.895,48.38193,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80.3,10.3,0,73.9,0,0,0,0,1.386294,0,0,0,0,1,0,0,73.9,8.806258,1.386294,,0 +11,5,0,1,1,528591,1,6674.895,8.060233,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,75,10.57626,0,66.7,0,0,1,0,1.386294,0,0,0,0,0,0,0,66.7,8.806258,1.386294,,0 +11,5,0,1,2,528591,1,6674.895,9.060233,0,12,1,19.2671,0,0,0,0,19.2671,0,0,0,0,0,4,75,10.57626,0,66.7,0,0,1,0,1.386294,0,0,0,0,0,0,0,66.7,8.806258,1.386294,2.958399,1 +11,5,0,1,3,528591,1,6674.895,10.06023,0,12,1,10.2916,0,0,0,0,10.2916,0,0,0,0,0,4,75,10.57626,0,66.7,0,0,1,0,1.386294,0,0,0,0,0,0,0,66.7,8.806258,1.386294,2.331328,1 +11,5,0,1,1,528601,0,13216.59,59.91513,0,12,1,0,4.738409,0,0,0,4.738409,0,0,0,0,0,2,98.4,6.9,0,93.2,0,303,0,0,.6931472,5.713733,0,0,0,0,0,0,93.2,9.489304,.6931472,1.555701,1 +11,5,0,1,2,528601,0,13216.59,60.91513,0,12,1,83.11069,23.56107,31.60305,0,0,138.2748,0,0,0,4,0,2,98.4,6.9,0,93.2,0,303,0,0,.6931472,5.713733,0,0,0,0,0,0,93.2,9.489304,.6931472,4.929243,1 +11,5,0,1,3,528601,0,13216.59,61.91513,0,12,1,43.37979,88.1115,0,0,0,131.4913,0,0,0,2,0,2,98.4,6.9,0,93.2,0,303,0,0,.6931472,5.713733,0,0,0,0,0,0,93.2,9.489304,.6931472,4.878941,1 +11,5,0,1,1,528602,0,13216.59,60.69542,1,10,1,214.3769,17.33305,0,0,0,231.7099,0,0,0,4,1,2,99.5,17.2,0,81.8,0,303,0,0,.6931472,5.713733,0,0,0,0,1,0,81.8,9.489304,.6931472,5.445486,1 +11,5,0,1,2,528602,0,13216.59,61.69542,1,10,1,66.12595,29.17939,31.35878,0,497.7099,624.374,1,0,0,3,0,2,99.5,17.2,0,81.8,0,303,0,0,.6931472,5.713733,0,0,0,0,1,0,81.8,9.489304,.6931472,6.436749,1 +11,5,0,1,3,528602,0,13216.59,62.69542,1,10,1,6.968641,10.1777,0,0,0,17.14634,0,0,0,1,0,2,99.5,17.2,0,81.8,0,303,0,0,.6931472,5.713733,0,0,0,0,1,0,81.8,9.489304,.6931472,2.841785,1 +18,5,25,0,1,528603,1,4663.93,25.97947,0,12,1,14.8662,12.33399,27.39346,0,0,54.59366,0,0,0,1,0,1,64.9,13.8,0,59.1,748,748,0,0,0,6.617403,0,3.258096,8.003697,1,0,0,59.1,8.447828,0,3.999918,1 +18,5,25,0,1,528611,1,6674.895,27.25804,0,13,1,330.4738,4.862843,30.92269,0,986.3591,1352.618,1,0,0,2,7,1,88.3,20.7,0,51.1,80,0,0,0,0,0,0,3.258096,5.768321,1,0,0,51.1,8.806258,0,7.209797,1 +18,5,25,0,2,528611,1,6674.895,28.25804,0,13,1,212.5864,0,27.20148,0,0,239.7879,0,0,0,1,5,1,88.3,20.7,0,51.1,80,0,0,0,0,0,0,3.258096,5.768321,1,0,0,51.1,8.806258,0,5.479755,1 +18,5,25,0,3,528611,1,6674.895,29.25804,0,13,1,168.7897,0,12.69573,0,598.8997,780.3851,1,0,0,5,2,1,88.3,20.7,0,51.1,80,0,0,0,0,0,0,3.258096,5.768321,1,0,0,51.1,8.806258,0,6.659788,1 +18,5,25,0,4,528611,1,6674.895,30.25804,0,13,1,64.54062,0,0,0,1393.888,1458.428,1,0,0,1,3,1,88.3,20.7,0,51.1,80,0,0,0,0,0,0,3.258096,5.768321,1,0,0,51.1,8.806258,0,7.285115,1 +18,5,25,0,5,528611,1,6674.895,31.25804,0,13,1,0,0,0,62.28374,11821.64,11821.64,2,0,27,0,0,1,88.3,20.7,0,51.1,80,0,0,0,0,0,0,3.258096,5.768321,1,0,0,51.1,8.806258,0,9.377687,1 +13,5,0,0,1,528619,1,86.53354,6.551677,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,98.3,10.57626,0,63,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,63,4.472022,1.791759,,0 +13,5,0,0,2,528619,1,86.53354,7.551677,0,12,1,18.03341,2.129841,0,0,0,20.16325,0,0,0,0,0,6,98.3,10.57626,0,63,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,63,4.472022,1.791759,3.003862,1 +13,5,0,0,3,528619,1,86.53354,8.551677,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,98.3,10.57626,0,63,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,63,4.472022,1.791759,,0 +13,5,0,0,1,528620,1,86.53354,11.9425,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,66.7,10.57626,0,55.6,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,1,55.6,4.472022,1.791759,,0 +13,5,0,0,2,528620,1,86.53354,12.9425,0,12,1,5.694761,0,0,0,0,5.694761,0,0,0,2,0,6,66.7,10.57626,0,55.6,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,1,55.6,4.472022,1.791759,1.739547,1 +13,5,0,0,3,528620,1,86.53354,13.9425,0,12,1,129.7751,0,0,0,886.1592,1015.934,1,0,0,1,0,6,66.7,10.57626,0,55.6,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,1,55.6,4.472022,1.791759,6.923564,1 +13,5,0,0,1,528621,1,86.53354,4,0,12,1,14.38849,0,0,0,0,14.38849,0,0,0,1,0,6,77.40034,10.57626,0,70.4,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,70.4,4.472022,1.791759,2.666429,1 +13,5,0,0,2,528621,1,86.53354,5,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,70.4,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,70.4,4.472022,1.791759,,0 +13,5,0,0,3,528621,1,86.53354,6,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,70.4,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,70.4,4.472022,1.791759,,0 +13,5,0,0,1,528622,1,86.53354,30.14921,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,85.1,6.9,0,78.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,78.4,4.472022,1.791759,,0 +13,5,0,0,2,528622,1,86.53354,31.14921,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,85.1,6.9,0,78.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,78.4,4.472022,1.791759,,0 +13,5,0,0,3,528622,1,86.53354,32.14921,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,85.1,6.9,0,78.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,78.4,4.472022,1.791759,,0 +13,5,0,0,1,528623,1,86.53354,9.722108,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,90,10.57626,0,74.1,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,74.1,4.472022,1.791759,,0 +13,5,0,0,2,528623,1,86.53354,10.72211,1,12,1,1.898254,0,0,0,0,1.898254,0,0,0,0,0,6,90,10.57626,0,74.1,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,74.1,4.472022,1.791759,.6409343,1 +13,5,0,0,3,528623,1,86.53354,11.72211,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,90,10.57626,0,74.1,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,74.1,4.472022,1.791759,,0 +13,5,0,0,1,528624,1,86.53354,11.1102,0,12,1,0,1.671604,0,0,0,1.671604,0,0,0,0,0,6,78.3,10.57626,0,74.1,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,74.1,4.472022,1.791759,.5137836,1 +13,5,0,0,2,528624,1,86.53354,12.1102,0,12,1,4.176158,0,0,0,0,4.176158,0,0,0,1,0,6,78.3,10.57626,0,74.1,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,74.1,4.472022,1.791759,1.429392,1 +13,5,0,0,3,528624,1,86.53354,13.1102,0,12,1,82.00692,0,0,0,0,82.00692,0,0,0,4,0,6,78.3,10.57626,0,74.1,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,74.1,4.472022,1.791759,4.406804,1 +16,5,95,1,1,528705,1,3779.314,51.37303,1,11,1,87.08456,128.8809,0,0,0,215.9655,0,0,0,5,0,1,86.7,6.9,0,50,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,50,8.237562,0,5.375119,1 +16,5,95,1,2,528705,1,3779.314,52.37303,1,11,1,57.04571,159.8036,37.77862,0,0,254.6279,0,0,0,3,1,1,86.7,6.9,0,50,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,50,8.237562,0,5.539803,1 +16,5,95,1,3,528705,1,3779.314,53.37303,1,11,1,17.15266,189.1595,0,0,0,206.3122,0,0,0,3,0,1,86.7,6.9,0,50,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,50,8.237562,0,5.329391,1 +11,5,0,0,1,528709,0,3533.538,16.11225,0,12,1,28.34514,0,0,0,0,28.34514,0,0,0,1,1,3,71.8,6.9,0,67,0,216.96,1,0,1.098612,5.379713,0,0,0,0,0,0,67,8.170338,1.098612,3.344456,1 +11,5,0,0,2,528709,0,3533.538,17.11225,0,12,1,23.63091,0,0,0,0,23.63091,0,0,0,2,0,3,71.8,6.9,0,67,0,216.96,1,0,1.098612,5.379713,0,0,0,0,0,0,67,8.170338,1.098612,3.162555,1 +11,5,0,0,3,528709,0,3533.538,18.11225,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,71.8,6.9,0,67,0,216.96,0,0,1.098612,5.379713,0,0,0,0,0,0,67,8.170338,1.098612,,0 +11,5,0,0,1,528710,0,3533.538,49.01574,1,12,1,56.69029,69.31638,13.33889,0,0,139.3456,0,0,0,5,1,3,68.1,13.8,0,75,0,216.96,0,0,1.098612,5.379713,0,0,0,0,0,1,75,8.170338,1.098612,4.936957,1 +11,5,0,0,2,528710,0,3533.538,50.01574,1,12,1,29.63241,26.55289,56.26406,0,0,112.4494,0,0,0,2,2,3,68.1,13.8,0,75,0,216.96,0,0,1.098612,5.379713,0,0,0,0,0,1,75,8.170338,1.098612,4.722503,1 +11,5,0,0,3,528710,0,3533.538,51.01574,1,12,1,25.03383,22.83829,0,0,0,47.87212,0,0,0,3,0,3,68.1,13.8,0,75,0,216.96,0,0,1.098612,5.379713,0,0,0,0,0,1,75,8.170338,1.098612,3.868533,1 +11,5,0,0,1,528711,0,3533.538,53.71937,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,95.7,0,0,92,0,216.96,0,0,1.098612,5.379713,0,0,0,0,0,0,92,8.170338,1.098612,,0 +11,5,0,0,2,528711,0,3533.538,54.71937,0,12,1,58.13953,0,30.0075,0,0,88.14703,0,0,0,1,1,3,95.7,0,0,92,0,216.96,0,0,1.098612,5.379713,0,0,0,0,0,0,92,8.170338,1.098612,4.479006,1 +11,5,0,0,3,528711,0,3533.538,55.71937,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,95.7,0,0,92,0,216.96,0,0,1.098612,5.379713,0,0,0,0,0,0,92,8.170338,1.098612,,0 +13,5,0,0,1,528723,0,6674.895,50.23682,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,1,0,0,70.68995,8.806258,1.386294,,0 +13,5,0,0,1,528724,0,6674.895,16.10678,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,450,150,1,0,1.386294,5.010635,1,4.564348,6.160541,0,0,0,70.68995,8.806258,1.386294,,0 +13,5,0,0,1,528725,0,6674.895,40.0219,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,1,0,0,70.68995,8.806258,1.386294,,0 +13,5,0,0,1,528726,0,6674.895,12.08214,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,450,150,1,0,1.386294,5.010635,1,4.564348,6.160541,0,0,0,70.68995,8.806258,1.386294,,0 +18,5,25,1,1,528734,1,14212.32,12.00548,0,12,1,12.96758,0,0,0,0,12.96758,0,0,0,1,0,5,81.7,10.57626,0,96.3,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.561934,1.609438,2.562453,1 +18,5,25,1,2,528734,1,14212.32,13.00548,0,12,1,38.72752,4.098663,0,0,0,42.82619,0,0,0,6,0,5,81.7,10.57626,0,96.3,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.561934,1.609438,3.75715,1 +18,5,25,1,3,528734,1,14212.32,14.00548,0,12,1,20.73635,0,0,0,0,20.73635,0,0,0,2,0,5,81.7,10.57626,0,96.3,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.561934,1.609438,3.031888,1 +18,5,25,1,4,528734,1,14212.32,15.00548,0,12,1,19.36219,0,0,0,0,19.36219,0,0,0,3,0,5,81.7,10.57626,0,96.3,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.561934,1.609438,2.963322,1 +18,5,25,1,5,528734,1,14212.32,16.00548,0,12,1,24.22145,0,0,0,0,24.22145,0,0,0,2,0,5,81.7,10.57626,0,96.3,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.561934,1.609438,3.187239,1 +18,5,25,1,1,528735,1,14212.32,6.403833,0,12,1,13.46633,1.586035,0,0,0,15.05237,0,0,0,1,0,5,90,10.57626,0,96.3,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.561934,1.609438,2.711535,1 +18,5,25,1,2,528735,1,14212.32,7.403833,0,12,1,5.532504,0,0,0,0,5.532504,0,0,0,1,0,5,90,10.57626,0,96.3,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.561934,1.609438,1.71064,1 +18,5,25,1,3,528735,1,14212.32,8.403833,0,12,1,14.81168,0,0,0,0,14.81168,0,0,0,1,0,5,90,10.57626,0,96.3,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.561934,1.609438,2.695416,1 +18,5,25,1,4,528735,1,14212.32,9.403833,0,12,1,23.53835,0,0,0,0,23.53835,0,0,0,3,0,5,90,10.57626,0,96.3,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.561934,1.609438,3.158631,1 +18,5,25,1,5,528735,1,14212.32,10.40383,0,12,1,26.6436,0,0,0,0,26.6436,0,0,0,2,0,5,90,10.57626,0,96.3,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.561934,1.609438,3.282549,1 +18,5,25,1,1,528736,1,14212.32,11.27721,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,85,10.57626,0,74.1,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,74.1,9.561934,1.609438,,0 +18,5,25,1,2,528736,1,14212.32,12.27721,1,12,1,13.83126,1.304749,26.85108,0,0,41.98709,0,0,0,1,0,5,85,10.57626,0,74.1,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,74.1,9.561934,1.609438,3.737362,1 +18,5,25,1,3,528736,1,14212.32,13.27721,1,12,1,34.27846,4.672027,16.7245,0,0,55.67499,0,0,0,5,0,5,85,10.57626,0,74.1,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,74.1,9.561934,1.609438,4.019531,1 +18,5,25,1,4,528736,1,14212.32,14.27721,1,12,1,17.84358,6.685649,0,0,0,24.52923,0,0,0,3,0,5,85,10.57626,0,74.1,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,74.1,9.561934,1.609438,3.199866,1 +18,5,25,1,5,528736,1,14212.32,15.27721,1,12,1,12.11073,4.096886,0,0,0,16.20761,0,0,0,1,0,5,85,10.57626,0,74.1,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,74.1,9.561934,1.609438,2.785481,1 +18,5,25,1,1,528737,1,14212.32,31.13758,0,13,1,23.4414,0,29.42643,0,0,52.86783,0,0,0,2,1,5,92.6,3.4,0,83,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,83,9.561934,1.609438,3.967795,1 +18,5,25,1,2,528737,1,14212.32,32.13758,0,13,1,47.02628,8.091287,0,0,0,55.11757,0,0,0,2,0,5,92.6,3.4,0,83,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,83,9.561934,1.609438,4.009469,1 +18,5,25,1,3,528737,1,14212.32,33.13758,0,13,1,41.47271,18.51883,29.92806,0,0,89.91959,0,0,0,5,0,5,92.6,3.4,0,83,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,83,9.561934,1.609438,4.498916,1 +18,5,25,1,4,528737,1,14212.32,34.13758,0,13,1,159.0737,58.53835,0,0,0,217.612,0,0,0,7,0,5,92.6,3.4,0,83,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,83,9.561934,1.609438,5.382714,1 +18,5,25,1,5,528737,1,14212.32,35.13758,0,13,1,20.76125,6.138408,0,0,0,26.89965,0,0,0,2,0,5,92.6,3.4,0,83,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,83,9.561934,1.609438,3.292114,1 +18,5,25,1,1,528738,1,14212.32,30.62012,1,12,1,194.7132,1.236908,0,0,567.5811,763.5312,1,1,0,5,0,5,81.4,20.7,0,65.9,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,65.9,9.561934,1.609438,6.637954,1 +18,5,25,1,2,528738,1,14212.32,31.62012,1,12,1,60.62702,0,0,0,0,60.62702,0,0,0,4,0,5,81.4,20.7,0,65.9,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,65.9,9.561934,1.609438,4.104741,1 +18,5,25,1,3,528738,1,14212.32,32.62012,1,12,1,24.54507,0,0,0,0,24.54507,0,0,0,1,0,5,81.4,20.7,0,65.9,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,65.9,9.561934,1.609438,3.200511,1 +18,5,25,1,4,528738,1,14212.32,33.62012,1,12,1,89.59757,4.631739,0,0,528.9559,623.1852,1,0,0,3,0,5,81.4,20.7,0,65.9,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,65.9,9.561934,1.609438,6.434844,1 +18,5,25,1,5,528738,1,14212.32,34.62012,1,12,1,13.84083,0,25.32872,0,0,39.16955,0,0,0,1,0,5,81.4,20.7,0,65.9,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,65.9,9.561934,1.609438,3.6679,1 +15,5,95,1,1,528827,1,6674.895,19.47433,0,8,1,4.206984,0,0,0,0,4.206984,0,0,0,1,0,3,85.2,3.4,0,81.8,772.5,772.5,0,0,1.098612,6.649632,0,4.564348,6.700925,1,0,0,81.8,8.806258,1.098612,1.436746,1 +15,5,95,1,2,528827,1,6674.895,20.47433,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,85.2,3.4,0,81.8,772.5,772.5,0,0,1.098612,6.649632,0,4.564348,6.700925,1,0,0,81.8,8.806258,1.098612,,0 +15,5,95,1,3,528827,1,6674.895,21.47433,0,8,1,134.8199,0,24.01372,0,0,158.8336,0,0,0,1,1,3,85.2,3.4,0,81.8,772.5,772.5,0,0,1.098612,6.649632,0,4.564348,6.700925,1,0,0,81.8,8.806258,1.098612,5.067857,1 +15,5,95,1,1,528828,1,6674.895,18.12457,1,10.96978,1,0,0,0,0,0,0,0,0,0,0,0,3,53.2,10.3,0,56,772.5,772.5,0,0,1.098612,6.649632,0,4.564348,6.700925,0,0,0,56,8.806258,1.098612,,0 +15,5,95,1,2,528828,1,6674.895,19.12457,1,10.96978,1,11.33358,0,35.5119,0,0,46.84549,0,0,0,0,1,3,53.2,10.3,0,56,772.5,772.5,0,0,1.098612,6.649632,0,4.564348,6.700925,0,0,0,56,8.806258,1.098612,3.846855,1 +15,5,95,1,3,528828,1,6674.895,20.12457,1,10.96978,1,9.433962,22.4048,0,0,0,31.83876,0,0,0,1,0,3,53.2,10.3,0,56,772.5,772.5,0,0,1.098612,6.649632,0,4.564348,6.700925,0,0,0,56,8.806258,1.098612,3.460685,1 +15,5,95,1,1,528829,1,6674.895,42.63929,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,80.3,3.4,0,75,772.5,772.5,0,0,1.098612,6.649632,0,4.564348,6.700925,1,0,0,75,8.806258,1.098612,,0 +15,5,95,1,2,528829,1,6674.895,43.63929,0,12,.7704918,15.48923,0,0,0,0,15.48923,0,0,0,0,0,3,80.3,3.4,0,75,772.5,772.5,0,0,1.098612,6.649632,0,4.564348,6.700925,1,0,0,75,8.806258,1.098612,2.740145,1 +13,5,0,0,1,528869,0,10214.08,26.14374,1,17,1,34.15233,12.2801,25.04177,0,0,71.47421,0,0,0,4,0,2,75.5,3.4,0,73.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,73.9,9.23162,.6931472,4.269337,1 +13,5,0,0,2,528869,0,10214.08,27.14374,1,17,1,9.11577,2.269827,0,0,0,11.3856,0,0,0,1,0,2,75.5,3.4,0,73.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,73.9,9.23162,.6931472,2.432349,1 +13,5,0,0,3,528869,0,10214.08,28.14374,1,17,1,80.65861,25.5148,0,0,392.2468,498.4202,1,0,0,3,0,2,75.5,3.4,0,73.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,73.9,9.23162,.6931472,6.211443,1 +13,5,0,0,4,528869,0,10214.08,29.14374,1,17,1,36.009,21.03901,0,0,0,57.04801,0,0,0,1,0,2,75.5,3.4,0,73.9,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,73.9,9.23162,.6931472,4.043893,1 +13,5,0,0,5,528869,0,10214.08,30.14374,1,17,1,28.75507,3.991881,4.573748,0,458.0514,495.3721,1,0,0,3,0,3,75.5,3.4,0,73.9,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,1,0,0,73.9,9.23162,1.098612,6.205309,1 +13,5,0,0,1,528870,0,10214.08,26.27242,0,19,1,29.48403,4.933661,0,0,0,34.41769,0,0,0,2,0,2,64.9,10.3,0,51.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,51.1,9.23162,.6931472,3.538571,1 +13,5,0,0,2,528870,0,10214.08,27.27242,0,19,1,20.51048,5.911577,0,0,0,26.42206,0,0,0,1,0,2,64.9,10.3,0,51.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,51.1,9.23162,.6931472,3.274199,1 +13,5,0,0,3,528870,0,10214.08,28.27242,0,19,1,8.336807,5.581492,0,0,0,13.9183,0,0,0,1,0,2,64.9,10.3,0,51.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,51.1,9.23162,.6931472,2.633204,1 +13,5,0,0,4,528870,0,10214.08,29.27242,0,19,1,65.26632,11.56414,0,0,0,76.83046,0,0,0,4,0,2,64.9,10.3,0,51.1,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,51.1,9.23162,.6931472,4.341601,1 +13,5,0,0,5,528870,0,10214.08,30.27242,0,19,1,7.780785,2.87889,0,0,0,10.65968,0,0,0,1,0,3,64.9,10.3,0,51.1,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,1,0,0,51.1,9.23162,1.098612,2.366468,1 +11,5,0,0,1,528871,0,6674.895,47.9562,1,16,1,48.77032,32.58024,185.6107,0,0,266.9612,0,0,0,5,0,3,92.6,17.2,1,75,0,356.04,0,0,1.098612,5.875043,0,0,0,1,0,0,75,8.806258,1.098612,5.587103,1 +11,5,0,0,2,528871,0,6674.895,48.9562,1,16,1,42.76069,22.003,27.69692,0,0,92.46062,0,0,0,3,0,3,92.6,17.2,1,75,0,356.04,0,0,1.098612,5.875043,0,0,0,1,0,0,75,8.806258,1.098612,4.526783,1 +11,5,0,0,3,528871,0,6674.895,49.9562,1,16,1,17.92963,17.26996,33.80244,0,0,69.00203,0,0,0,2,0,3,92.6,17.2,1,75,0,356.04,0,0,1.098612,5.875043,0,0,0,1,0,0,75,8.806258,1.098612,4.234136,1 +11,5,0,0,1,528873,0,6674.895,13.44832,1,16,1,56.06503,0,3.584827,0,0,59.64985,0,0,0,5,0,3,100,10.57626,.1442925,100,0,356.04,1,1,1.098612,5.875043,0,0,0,0,0,0,100,8.806258,1.098612,4.088492,1 +11,5,0,0,2,528873,0,6674.895,14.44832,1,16,1,10.12753,0,0,0,0,10.12753,0,0,0,1,0,3,100,10.57626,.1442925,100,0,356.04,1,1,1.098612,5.875043,0,0,0,0,0,0,100,8.806258,1.098612,2.315258,1 +11,5,0,0,3,528873,0,6674.895,15.44832,1,16,1,37.21245,0,22.86536,0,0,60.07781,0,0,0,3,0,3,100,10.57626,.1442925,100,0,356.04,1,1,1.098612,5.875043,0,0,0,0,0,0,100,8.806258,1.098612,4.095641,1 +11,5,0,0,1,528874,0,6674.895,10.53799,0,16,1,10.00417,0,21.6757,0,0,31.67987,0,0,0,1,0,3,98.3,10.57626,.1442925,85.2,0,356.04,1,0,1.098612,5.875043,0,0,0,0,0,0,85.2,8.806258,1.098612,3.455681,1 +11,5,0,0,2,528874,0,6674.895,11.53799,0,16,1,23.25581,0,0,0,0,23.25581,0,0,0,2,0,3,98.3,10.57626,.1442925,85.2,0,356.04,1,0,1.098612,5.875043,0,0,0,0,0,0,85.2,8.806258,1.098612,3.146555,1 +11,5,0,0,3,528874,0,6674.895,12.53799,0,16,1,38.90392,0,0,0,0,38.90392,0,0,0,2,0,3,98.3,10.57626,.1442925,85.2,0,356.04,1,0,1.098612,5.875043,0,0,0,0,0,0,85.2,8.806258,1.098612,3.661095,1 +11,5,0,1,1,528940,1,6674.895,40.98563,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,96.3,0,0,98.9,0,214.8,0,0,1.386294,5.369708,0,0,0,0,0,0,98.9,8.806258,1.386294,,0 +11,5,0,1,2,528940,1,6674.895,41.98563,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,96.3,0,0,98.9,0,214.8,0,0,1.386294,5.369708,0,0,0,0,0,0,98.9,8.806258,1.386294,,0 +11,5,0,1,3,528940,1,6674.895,42.98563,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,96.3,0,0,98.9,0,214.8,0,0,1.098612,5.369708,0,0,0,0,0,0,98.9,8.806258,1.098612,,0 +11,5,0,1,1,528941,1,6674.895,3.378508,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,77.8,0,214.8,1,0,1.386294,5.369708,0,0,0,0,1,0,77.8,8.806258,1.386294,,0 +11,5,0,1,2,528941,1,6674.895,4.378508,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,77.8,0,214.8,1,0,1.386294,5.369708,0,0,0,0,1,0,77.8,8.806258,1.386294,,0 +11,5,0,1,3,528941,1,6674.895,5.378508,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,77.8,0,214.8,1,0,1.098612,5.369708,0,0,0,0,1,0,77.8,8.806258,1.098612,,0 +11,5,0,1,1,528943,1,6674.895,16.68172,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.1,13.8,0,70.5,0,214.8,1,1,1.386294,5.369708,0,0,0,1,0,0,70.5,8.806258,1.386294,,0 +11,5,0,1,2,528943,1,6674.895,17.68172,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.1,13.8,0,70.5,0,214.8,1,1,1.386294,5.369708,0,0,0,1,0,0,70.5,8.806258,1.386294,,0 +11,5,0,1,1,528944,1,6674.895,17.93019,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,61.7,3.4,0,79.5,0,214.8,1,0,1.386294,5.369708,0,0,0,0,0,0,79.5,8.806258,1.386294,,0 +11,5,0,1,2,528944,1,6674.895,18.93019,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,61.7,3.4,0,79.5,0,214.8,0,0,1.386294,5.369708,0,0,0,0,0,0,79.5,8.806258,1.386294,,0 +11,5,0,1,3,528944,1,6674.895,19.93019,0,12,1,9.407665,0,0,0,0,9.407665,0,0,0,2,0,3,61.7,3.4,0,79.5,0,214.8,0,0,1.098612,5.369708,0,0,0,0,0,0,79.5,8.806258,1.098612,2.241525,1 +13,5,0,1,1,529000,1,2422.939,23.86037,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,72.3,10.3,0,73.9,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,0,73.9,7.793149,1.098612,,0 +13,5,0,1,2,529000,1,2422.939,24.86037,1,12,1,0,0,0,0,529.771,529.771,1,0,0,0,0,3,72.3,10.3,0,73.9,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,0,73.9,7.793149,1.098612,6.272445,1 +13,5,0,1,3,529000,1,2422.939,25.86037,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,72.3,10.3,0,73.9,450,0,0,0,1.386294,0,1,4.564348,6.160541,0,0,0,73.9,7.793149,1.386294,,0 +13,5,0,1,1,529001,1,2422.939,52.19439,1,8,1,0,9.302424,12.26712,0,0,21.56955,0,0,0,0,0,3,87.8,10.3,1,80.7,450,0,0,0,1.098612,0,1,4.564348,6.160541,1,0,0,80.7,7.793149,1.098612,3.071282,1 +13,5,0,1,2,529001,1,2422.939,53.19439,1,8,1,15.26718,1.755725,4.48855,0,0,21.51145,0,0,0,1,0,3,87.8,10.3,1,80.7,450,0,0,0,1.098612,0,1,4.564348,6.160541,1,0,0,80.7,7.793149,1.098612,3.068585,1 +13,5,0,1,3,529001,1,2422.939,54.19439,1,8,1,109.4425,3.449477,0,0,0,112.892,0,0,0,4,0,4,87.8,10.3,1,80.7,450,0,0,0,1.386294,0,1,4.564348,6.160541,1,0,0,80.7,7.793149,1.386294,4.726431,1 +16,5,95,0,1,529006,0,5763.441,45.86174,1,9,1,7.617435,0,0,0,0,7.617435,0,0,0,1,0,3,72.9,27.6,0,72.7,873.9,873.9,0,0,1.098612,6.772966,0,4.564348,6.824259,1,0,0,72.7,8.659464,1.098612,2.03044,1 +16,5,95,0,2,529006,0,5763.441,46.86174,1,9,1,45.55809,0,0,0,0,45.55809,0,0,0,1,0,3,72.9,27.6,0,72.7,873.9,873.9,0,0,1.098612,6.772966,0,4.564348,6.824259,1,0,0,72.7,8.659464,1.098612,3.818988,1 +16,5,95,0,3,529006,0,5763.441,47.86174,1,9,1,1056.332,27.40484,0,0,4047.405,5131.142,2,0,0,6,0,3,72.9,27.6,0,72.7,873.9,873.9,0,0,1.098612,6.772966,0,4.564348,6.824259,1,0,0,72.7,8.659464,1.098612,8.543083,1 +16,5,95,0,1,529007,0,5763.441,7.986311,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,85,10.57626,0,92.6,873.9,873.9,1,1,1.098612,6.772966,0,4.564348,6.824259,0,0,0,92.6,8.659464,1.098612,,0 +16,5,95,0,2,529007,0,5763.441,8.986311,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,85,10.57626,0,92.6,873.9,873.9,1,1,1.098612,6.772966,0,4.564348,6.824259,0,0,0,92.6,8.659464,1.098612,,0 +16,5,95,0,3,529007,0,5763.441,9.986311,1,9,1,17.30104,0,0,0,0,17.30104,0,0,0,2,0,3,85,10.57626,0,92.6,873.9,873.9,1,1,1.098612,6.772966,0,4.564348,6.824259,0,0,0,92.6,8.659464,1.098612,2.850767,1 +16,5,95,0,1,529008,0,5763.441,21.39083,0,10,1,6.347863,0,0,0,0,6.347863,0,0,0,1,0,3,73.4,6.9,0,86.4,873.9,873.9,0,0,1.098612,6.772966,0,4.564348,6.824259,1,0,0,86.4,8.659464,1.098612,1.848118,1 +16,5,95,0,2,529008,0,5763.441,22.39083,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,73.4,6.9,0,86.4,873.9,873.9,0,0,1.098612,6.772966,0,4.564348,6.824259,1,0,0,86.4,8.659464,1.098612,,0 +16,5,95,0,3,529008,0,5763.441,23.39083,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,73.4,6.9,0,86.4,873.9,873.9,0,0,1.098612,6.772966,0,4.564348,6.824259,1,0,0,86.4,8.659464,1.098612,,0 +15,5,95,0,1,529014,1,0,4.323066,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,0,99.4,490.1,490.1,1,0,.6931472,6.19461,0,4.564348,6.245903,1,0,0,99.4,0,.6931472,,0 +15,5,95,0,2,529014,1,0,5.323066,0,10,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,0,99.4,490.1,490.1,1,0,.6931472,6.19461,0,4.564348,6.245903,1,0,0,99.4,0,.6931472,,0 +15,5,95,0,3,529014,1,0,6.323066,0,10,1,23.71331,0,0,0,0,23.71331,0,0,0,1,0,2,77.40034,10.57626,0,99.4,490.1,490.1,1,0,.6931472,6.19461,0,4.564348,6.245903,1,0,0,99.4,0,.6931472,3.166037,1 +15,5,95,0,4,529014,1,0,7.323066,0,10,1,24.80916,0,0,0,0,24.80916,0,0,0,1,1,2,77.40034,10.57626,0,99.4,490.1,490.1,1,0,.6931472,6.19461,0,4.564348,6.245903,1,0,0,99.4,0,.6931472,3.211213,1 +15,5,95,0,5,529014,1,0,8.323067,0,10,1,71.42857,0,0,0,0,71.42857,0,0,0,3,0,2,77.40034,10.57626,0,99.4,490.1,490.1,1,0,.6931472,6.19461,0,4.564348,6.245903,1,0,0,99.4,0,.6931472,4.268698,1 +15,5,95,0,1,529015,1,0,20.79398,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,66.5,10.3,0,84.1,490.1,490.1,0,0,.6931472,6.19461,0,4.564348,6.245903,1,0,0,84.1,0,.6931472,,0 +15,5,95,0,2,529015,1,0,21.79398,1,10,1,83.50951,0,0,0,0,83.50951,0,0,0,1,0,2,66.5,10.3,0,84.1,490.1,490.1,0,0,.6931472,6.19461,0,4.564348,6.245903,1,0,0,84.1,0,.6931472,4.424961,1 +15,5,95,0,3,529015,1,0,22.79398,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,66.5,10.3,0,84.1,490.1,490.1,0,0,.6931472,6.19461,0,4.564348,6.245903,1,0,0,84.1,0,.6931472,,0 +15,5,95,0,4,529015,1,0,23.79398,1,10,1,94.8855,0,26.33588,0,0,121.2214,0,0,0,3,1,2,66.5,10.3,0,84.1,490.1,490.1,0,0,.6931472,6.19461,0,4.564348,6.245903,1,0,0,84.1,0,.6931472,4.797618,1 +15,5,95,0,5,529015,1,0,24.79398,1,10,1,79.2683,0,0,0,0,79.2683,0,0,0,4,0,2,66.5,10.3,0,84.1,490.1,490.1,0,0,.6931472,6.19461,0,4.564348,6.245903,1,0,0,84.1,0,.6931472,4.372838,1 +11,5,0,0,1,529017,0,6149.001,46.3436,1,10,1,313.5844,164.4139,0,0,0,477.9983,0,0,0,12,0,2,66,20.7,1,50,0,1027.2,0,0,.6931472,6.934592,0,0,0,0,1,0,50,8.724208,.6931472,6.169607,1 +11,5,0,0,2,529017,0,6149.001,47.3436,1,10,1,111.6173,0,0,0,3307.137,3418.755,1,0,0,8,0,2,66,20.7,1,50,0,1027.2,0,0,.6931472,6.934592,0,0,0,0,1,0,50,8.724208,.6931472,8.137032,1 +11,5,0,0,3,529017,0,6149.001,48.3436,1,10,1,61.88235,.6920415,0,0,0,62.57439,0,0,0,4,0,2,66,20.7,1,50,0,1027.2,0,0,.6931472,6.934592,0,0,0,0,1,0,50,8.724208,.6931472,4.136356,1 +11,5,0,0,1,529018,0,6149.001,48.1807,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,85.6,10.3,0,73.9,0,1027.2,0,0,.6931472,6.934592,0,0,0,1,0,0,73.9,8.724208,.6931472,,0 +11,5,0,0,2,529018,0,6149.001,49.1807,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,85.6,10.3,0,73.9,0,1027.2,0,0,.6931472,6.934592,0,0,0,1,0,0,73.9,8.724208,.6931472,,0 +11,5,0,0,3,529018,0,6149.001,50.1807,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,85.6,10.3,0,73.9,0,1027.2,0,0,.6931472,6.934592,0,0,0,1,0,0,73.9,8.724208,.6931472,,0 +14,5,95,1,1,529047,0,1347.158,61.42368,1,7,1,161.846,65.04041,48.49001,0,0,275.3764,0,0,0,7,0,1,50.5,24.1,0,64.8,147.7,392.56,0,0,0,5.97269,0,4.564348,5.046476,0,1,0,64.8,7.206495,0,5.618139,1 +14,5,95,1,2,529047,0,1347.158,62.42368,1,7,1,276.9084,110.729,0,0,0,387.6374,0,0,0,13,0,1,50.5,24.1,0,64.8,147.7,392.56,0,0,0,5.97269,0,4.564348,5.046476,0,1,0,64.8,7.206495,0,5.96007,1 +14,5,95,1,3,529047,0,1347.158,63.42368,1,7,1,142.5087,106.0767,0,0,0,248.5854,0,0,0,5,0,1,50.5,24.1,0,64.8,147.7,392.56,0,0,0,5.97269,0,4.564348,5.046476,0,1,0,64.8,7.206495,0,5.515786,1 +13,5,0,0,1,529077,1,380.4403,27.16222,1,12,1,7.194244,0,0,0,0,7.194244,0,0,0,1,0,2,84.6,6.9,0,76.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,76.2,5.943954,.6931472,1.973281,1 +13,5,0,0,2,529077,1,380.4403,28.16222,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,84.6,6.9,0,76.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,76.2,5.943954,.6931472,,0 +13,5,0,0,3,529077,1,380.4403,29.16222,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,84.6,6.9,0,76.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,76.2,5.943954,.6931472,,0 +13,5,0,0,1,529078,1,380.4403,9.21013,1,12,1,12.90732,0,0,0,0,12.90732,0,0,0,1,0,2,91.7,10.57626,0,81.5,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,1,0,0,81.5,5.943954,.6931472,2.557795,1 +13,5,0,0,2,529078,1,380.4403,10.21013,1,12,1,10.25057,0,0,0,0,10.25057,0,0,0,1,0,2,91.7,10.57626,0,81.5,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,1,0,0,81.5,5.943954,.6931472,2.327333,1 +13,5,0,0,3,529078,1,380.4403,11.21013,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,91.7,10.57626,0,81.5,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,1,0,0,81.5,5.943954,.6931472,,0 +10,5,50,1,1,529123,0,9816.692,55.64134,1,12,1,243.7579,60.14812,3.173931,48.66695,0,307.08,0,0,3,11,5,2,30.9,41.4,0,71.6,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,71.6,9.191941,.6931472,5.727108,1 +10,5,50,1,2,529123,0,9816.692,56.64134,1,12,1,99.84814,39.57859,0,0,0,139.4267,0,0,0,4,0,2,30.9,41.4,0,71.6,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,71.6,9.191941,.6931472,4.937539,1 +10,5,50,1,3,529123,0,9816.692,57.64134,1,12,1,155.0173,67.9481,28.78893,166.09,0,251.7543,0,0,8,8,2,2,30.9,41.4,0,71.6,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,71.6,9.191941,.6931472,5.528454,1 +10,5,50,1,1,529124,0,9816.692,60.29021,0,12,1,35.97122,14.93017,42.74228,40.20313,0,93.64368,0,0,3,2,1,2,60.6,17.2,0,62.5,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,62.5,9.191941,.6931472,4.539497,1 +10,5,50,1,2,529124,0,9816.692,61.29021,0,12,1,0,12.53227,0,0,0,12.53227,0,0,0,0,0,2,60.6,17.2,0,62.5,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,62.5,9.191941,.6931472,2.528307,1 +10,5,50,1,3,529124,0,9816.692,62.29021,0,12,1,53.63322,8.00346,40.70242,0,0,102.3391,0,0,0,3,0,2,60.6,17.2,0,62.5,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,1,0,0,62.5,9.191941,.6931472,4.628292,1 +17,5,25,0,1,529162,1,0,31.69336,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,85.6,0,0,69.3,300.35,0,0,0,0,0,0,3.258096,7.091243,1,0,0,69.3,0,0,,0 +17,5,25,0,2,529162,1,0,32.69336,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,85.6,0,0,69.3,300.35,0,0,0,0,0,0,3.258096,7.091243,1,0,0,69.3,0,0,,0 +17,5,25,0,3,529162,1,0,33.69336,0,14,1,8.710801,0,23.19164,0,0,31.90244,0,0,0,0,1,1,85.6,0,0,69.3,300.35,0,0,0,0,0,0,3.258096,7.091243,1,0,0,69.3,0,0,3.462682,1 +17,5,25,0,1,529164,1,3291.859,24.72827,0,9,1,0,0,0,0,0,0,0,0,0,0,0,1,54.3,0,0,53.4,315,315,0,0,0,5.752573,0,3.258096,7.138867,0,1,0,53.4,8.099511,0,,0 +17,5,25,0,2,529164,1,3291.859,25.72827,0,9,1,0,0,0,0,0,0,0,0,0,0,0,2,54.3,0,0,53.4,315,315,0,0,.6931472,5.752573,0,3.258096,7.138867,0,1,0,53.4,8.099511,.6931472,,0 +17,5,25,0,3,529164,1,3291.859,26.72827,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,54.3,0,0,53.4,315,315,0,0,1.098612,5.752573,0,3.258096,7.138867,0,1,0,53.4,8.099511,1.098612,,0 +13,5,0,1,1,529286,0,13305.17,19.86858,1,10,1,105.2522,20.40434,32.94706,0,0,158.6036,0,0,0,7,0,5,87.2,6.9,0,77.3,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,1,0,0,77.3,9.495983,1.609438,5.066408,1 +13,5,0,1,2,529286,0,13305.17,20.86858,1,10,1,13.12828,0,0,0,688.6722,701.8005,1,0,0,2,0,5,87.2,6.9,0,77.3,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,1,0,0,77.3,9.495983,1.609438,6.553649,1 +13,5,0,1,3,529286,0,13305.17,21.86858,1,10,1,37.55074,11.37686,0,0,0,48.9276,0,0,0,4,0,5,87.2,6.9,0,77.3,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,1,0,0,77.3,9.495983,1.609438,3.890342,1 +13,5,0,1,1,529287,0,13305.17,18.34634,0,10.96978,1,49.18716,11.0421,0,0,607.3364,667.5657,1,0,0,3,0,5,87.8,13.8,0,87.5,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,1,0,0,87.5,9.495983,1.609438,6.503638,1 +13,5,0,1,2,529287,0,13305.17,19.34634,0,10.96978,1,120.7802,35.12378,0,0,318.4546,474.3586,1,0,0,10,0,5,87.8,13.8,0,87.5,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,1,0,0,87.5,9.495983,1.609438,6.161963,1 +13,5,0,1,3,529287,0,13305.17,20.34634,0,10.96978,1,259.4959,24.57713,0,0,0,284.0731,0,0,0,16,0,5,87.8,13.8,0,87.5,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,1,0,0,87.5,9.495983,1.609438,5.649231,1 +13,5,0,1,1,529288,0,13305.17,22.35455,0,10,1,6.252605,7.057107,0,45.85244,507.2947,520.6044,1,0,2,1,0,5,50.5,24.1,1,13.6,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,0,1,0,13.6,9.495983,1.609438,6.254991,1 +13,5,0,1,2,529288,0,13305.17,23.35455,0,10,1,17.62941,0,0,0,0,17.62941,0,0,0,2,0,5,50.5,24.1,1,13.6,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,0,1,0,13.6,9.495983,1.609438,2.869568,1 +13,5,0,1,3,529288,0,13305.17,24.35455,0,10,1,95.39919,16.18403,0,0,813.9377,925.521,1,0,0,2,0,5,50.5,24.1,1,13.6,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,0,1,0,13.6,9.495983,1.609438,6.830357,1 +13,5,0,1,1,529289,0,13305.17,49.73032,1,9,1,210.2543,31.07545,47.68653,0,0,289.0163,0,0,0,5,0,5,73.9,20.7,0,69.3,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,0,1,0,69.3,9.495983,1.609438,5.666483,1 +13,5,0,1,2,529289,0,13305.17,50.73032,1,9,1,16.87922,72.26182,0,0,0,89.14104,0,0,0,3,0,5,73.9,20.7,0,69.3,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,0,1,0,69.3,9.495983,1.609438,4.49022,1 +13,5,0,1,3,529289,0,13305.17,51.73032,1,9,1,51.42084,153.3018,26.38701,0,1691.475,1922.585,2,1,0,6,0,5,73.9,20.7,0,69.3,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,0,1,0,69.3,9.495983,1.609438,7.561426,1 +13,5,0,1,1,529290,0,13305.17,43.36208,0,12,1,61.69237,59.68737,45.51897,0,0,166.8987,0,0,0,2,0,5,77.7,20.7,1,51.1,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,1,0,0,51.1,9.495983,1.609438,5.117387,1 +13,5,0,1,2,529290,0,13305.17,44.36208,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.7,20.7,1,51.1,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,1,0,0,51.1,9.495983,1.609438,,0 +13,5,0,1,3,529290,0,13305.17,45.36208,0,12,1,41.44114,17.68606,41.52571,0,985.4533,1086.106,1,0,0,2,0,5,77.7,20.7,1,51.1,450,300,0,0,1.609438,5.703783,1,4.564348,6.160541,1,0,0,51.1,9.495983,1.609438,6.990354,1 +19,5,25,0,1,529350,1,7578.085,9.716633,0,8,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,88.9,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,88.9,8.933147,1.791759,,0 +19,5,25,0,2,529350,1,7578.085,10.71663,0,8,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,88.9,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,88.9,8.933147,1.791759,,0 +19,5,25,0,3,529350,1,7578.085,11.71663,0,8,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,88.9,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,88.9,8.933147,1.791759,,0 +19,5,25,0,1,529351,1,7578.085,31.13484,0,12,1,11.84934,1.523487,0,0,0,13.37283,0,0,0,1,0,6,86.2,3.4,0,64.8,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,64.8,8.933147,1.791759,2.593225,1 +19,5,25,0,2,529351,1,7578.085,32.13484,0,12,1,56.56796,0,0,0,0,56.56796,0,0,0,4,0,6,86.2,3.4,0,64.8,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,64.8,8.933147,1.791759,4.035443,1 +19,5,25,0,3,529351,1,7578.085,33.13484,0,12,1,56.05536,5.927336,0,0,0,61.9827,0,0,0,8,0,6,86.2,3.4,0,64.8,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,64.8,8.933147,1.791759,4.126855,1 +19,5,25,0,1,529352,1,7578.085,27.96715,1,8,1,22.00592,8.366484,0,0,0,30.37241,0,0,0,2,0,6,86.2,6.9,0,64.8,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,64.8,8.933147,1.791759,3.413535,1 +19,5,25,0,2,529352,1,7578.085,28.96715,1,8,1,40.05315,2.972665,0,0,0,43.02582,0,0,0,4,0,6,86.2,6.9,0,64.8,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,64.8,8.933147,1.791759,3.7618,1 +19,5,25,0,3,529352,1,7578.085,29.96715,1,8,1,24.6782,5.913495,0,0,0,30.5917,0,0,0,5,0,6,86.2,6.9,0,64.8,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,64.8,8.933147,1.791759,3.420729,1 +19,5,25,0,1,529353,1,7578.085,5.760438,1,8,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,92.6,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,1,0,0,92.6,8.933147,1.791759,,0 +19,5,25,0,2,529353,1,7578.085,6.760438,1,8,1,5.694761,1.442673,0,0,0,7.137434,0,0,0,1,0,6,77.40034,10.57626,0,92.6,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,1,0,0,92.6,8.933147,1.791759,1.965353,1 +19,5,25,0,3,529353,1,7578.085,7.760438,1,8,1,15.57093,4.051903,0,0,0,19.62284,0,0,0,3,0,6,77.40034,10.57626,0,92.6,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,1,0,0,92.6,8.933147,1.791759,2.976694,1 +19,5,25,0,1,529354,1,7578.085,8.684463,0,8,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,88.9,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,88.9,8.933147,1.791759,,0 +19,5,25,0,2,529354,1,7578.085,9.684463,0,8,1,11.38952,0,0,0,0,11.38952,0,0,0,0,0,6,88.3,10.57626,0,88.9,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,88.9,8.933147,1.791759,2.432694,1 +19,5,25,0,3,529354,1,7578.085,10.68446,0,8,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,88.9,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,88.9,8.933147,1.791759,,0 +13,5,0,0,1,529360,0,9569.381,29.3306,0,16,1,94.44678,0,0,0,0,94.44678,0,0,0,1,0,4,73.9,0,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,90.9,9.166429,1.386294,4.548037,1 +13,5,0,0,2,529360,0,9569.381,30.3306,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,73.9,0,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,90.9,9.166429,1.386294,,0 +13,5,0,0,3,529360,0,9569.381,31.3306,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,73.9,0,0,90.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,90.9,9.166429,1.386294,,0 +13,5,0,0,1,529361,0,9569.381,26.49418,1,12,1,12.62095,0,12.62095,0,0,25.2419,0,0,0,0,1,4,76.1,13.8,0,65.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.166429,1.386294,3.228505,1 +13,5,0,0,2,529361,0,9569.381,27.49418,1,12,1,15.11145,11.96827,0,0,0,27.07971,0,0,0,3,0,4,76.1,13.8,0,65.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.166429,1.386294,3.298785,1 +13,5,0,0,3,529361,0,9569.381,28.49418,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,76.1,13.8,0,65.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.166429,1.386294,,0 +13,5,0,0,1,529362,0,9569.381,4.068446,1,12,1,10.09676,0,0,0,0,10.09676,0,0,0,1,0,4,77.40034,10.57626,0,100,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.166429,1.386294,2.312215,1 +13,5,0,0,2,529362,0,9569.381,5.068446,1,12,1,5.289006,0,0,0,0,5.289006,0,0,0,1,0,4,77.40034,10.57626,0,100,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.166429,1.386294,1.66563,1 +13,5,0,0,3,529362,0,9569.381,6.068446,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,100,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,100,9.166429,1.386294,,0 +6,5,25,0,1,529428,0,5291.496,23.04723,1,12,1,78.30424,7.321696,31.12219,0,0,116.7481,0,0,0,3,0,4,78.2,13.8,0,65.9,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,65.9,8.574045,1.386294,4.760019,1 +6,5,25,0,2,529428,0,5291.496,24.04723,1,12,1,0,1.129553,0,0,0,1.129553,0,0,0,0,0,4,78.2,13.8,0,65.9,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,65.9,8.574045,1.386294,.1218218,1 +6,5,25,0,3,529428,0,5291.496,25.04723,1,12,1,20.31316,0,0,0,0,20.31316,0,0,0,2,0,4,78.2,13.8,0,65.9,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,65.9,8.574045,1.386294,3.011269,1 +6,5,25,0,4,529428,0,5291.496,26.04723,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.2,13.8,0,65.9,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,65.9,8.574045,1.386294,,0 +6,5,25,0,5,529428,0,5291.496,27.04723,1,12,1,44.9827,9.875433,23.91696,0,0,78.77509,0,0,0,3,1,4,78.2,13.8,0,65.9,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,65.9,8.574045,1.386294,4.366597,1 +6,5,25,0,1,529429,0,5291.496,.7967146,0,12,1,26.93267,9.895262,0,0,0,36.82793,0,0,0,3,0,4,77.40034,10.57626,0,70.4,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.4,8.574045,1.386294,3.606256,1 +6,5,25,0,2,529429,0,5291.496,1.796715,0,12,1,34.1171,0,0,0,0,34.1171,0,0,0,2,0,4,77.40034,10.57626,0,70.4,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.4,8.574045,1.386294,3.529799,1 +6,5,25,0,3,529429,0,5291.496,2.796715,0,12,1,5.07829,0,0,0,0,5.07829,0,0,0,1,0,4,77.40034,10.57626,0,70.4,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.4,8.574045,1.386294,1.624975,1 +6,5,25,0,4,529429,0,5291.496,3.796715,0,12,1,41.38193,4.552012,0,0,0,45.93394,0,0,0,3,0,4,77.40034,10.57626,0,70.4,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.4,8.574045,1.386294,3.827204,1 +6,5,25,0,5,529429,0,5291.496,4.796715,0,12,1,11.07266,4.543252,0,0,0,15.61592,0,0,0,1,0,4,77.40034,10.57626,0,70.4,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.4,8.574045,1.386294,2.748291,1 +6,5,25,0,1,529430,0,5291.496,4.898015,0,12,1,21.44638,7.371571,0,0,0,28.81796,0,0,0,3,0,4,77.40034,10.57626,0,77.8,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.574045,1.386294,3.360999,1 +6,5,25,0,2,529430,0,5291.496,5.898015,0,12,1,13.83126,0,0,0,0,13.83126,0,0,0,1,0,4,77.40034,10.57626,0,77.8,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.574045,1.386294,2.626931,1 +6,5,25,0,3,529430,0,5291.496,6.898015,0,12,1,12.69573,0,29.62336,0,0,42.31908,0,0,0,0,1,4,77.40034,10.57626,0,77.8,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.574045,1.386294,3.745238,1 +6,5,25,0,4,529430,0,5291.496,7.898015,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,77.8,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.574045,1.386294,,0 +6,5,25,0,5,529430,0,5291.496,8.898015,0,12,1,9.688581,7.688581,0,0,0,17.37716,0,0,0,2,0,4,77.40034,10.57626,0,77.8,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,77.8,8.574045,1.386294,2.855157,1 +6,5,25,0,1,529431,0,5291.496,24.65708,0,13,1,19.95012,0,33.19701,0,0,53.14713,0,0,0,2,0,4,73.9,3.4,0,76.1,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,76.1,8.574045,1.386294,3.973064,1 +6,5,25,0,2,529431,0,5291.496,25.65708,0,13,1,46.33472,2.720148,15.34348,0,0,64.39834,0,0,0,2,0,4,73.9,3.4,0,76.1,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,76.1,8.574045,1.386294,4.165088,1 +6,5,25,0,3,529431,0,5291.496,26.65708,0,13,1,8.463818,0,37.85019,0,0,46.31401,0,0,0,1,0,4,73.9,3.4,0,76.1,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,76.1,8.574045,1.386294,3.835444,1 +6,5,25,0,4,529431,0,5291.496,27.65708,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,73.9,3.4,0,76.1,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,76.1,8.574045,1.386294,,0 +6,5,25,0,5,529431,0,5291.496,28.65708,0,13,1,11.5917,0,27.52941,0,0,39.12111,0,0,0,0,0,4,73.9,3.4,0,76.1,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,76.1,8.574045,1.386294,3.666662,1 +11,5,0,1,1,529434,1,5832.565,6.554415,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,10.57626,0,66.7,0,0,1,1,1.098612,0,0,0,0,0,0,0,66.7,8.671384,1.098612,,0 +11,5,0,1,2,529434,1,5832.565,7.554415,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,10.57626,0,66.7,0,0,1,1,1.098612,0,0,0,0,0,0,0,66.7,8.671384,1.098612,,0 +11,5,0,1,3,529434,1,5832.565,8.554415,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,10.57626,0,66.7,0,0,1,1,1.098612,0,0,0,0,0,0,0,66.7,8.671384,1.098612,,0 +11,5,0,1,1,529435,1,5832.565,31.89322,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,60.6,13.8,0,89.8,0,0,0,0,1.098612,0,0,0,0,0,1,0,89.8,8.671384,1.098612,,0 +11,5,0,1,2,529435,1,5832.565,32.89322,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,60.6,13.8,0,89.8,0,0,0,0,1.098612,0,0,0,0,0,1,0,89.8,8.671384,1.098612,,0 +11,5,0,1,3,529435,1,5832.565,33.89322,1,14,1,0,0,0,0,925.2595,925.2595,1,0,0,0,0,3,60.6,13.8,0,89.8,0,0,0,0,1.098612,0,0,0,0,0,1,0,89.8,8.671384,1.098612,6.830074,1 +11,5,0,1,1,529436,1,5832.565,8.380561,0,14,1,0,0,0,0,0,0,0,0,0,0,0,3,56.7,10.57626,0,77.8,0,0,1,0,1.098612,0,0,0,0,0,0,0,77.8,8.671384,1.098612,,0 +11,5,0,1,2,529436,1,5832.565,9.380561,0,14,1,0,0,0,0,0,0,0,0,0,0,0,3,56.7,10.57626,0,77.8,0,0,1,0,1.098612,0,0,0,0,0,0,0,77.8,8.671384,1.098612,,0 +11,5,0,1,3,529436,1,5832.565,10.38056,0,14,1,0,0,0,0,0,0,0,0,0,0,0,3,56.7,10.57626,0,77.8,0,0,1,0,1.098612,0,0,0,0,0,0,0,77.8,8.671384,1.098612,,0 +13,5,0,0,1,529478,0,13794.16,32.19439,1,13,1,63.90182,0,0,0,0,63.90182,0,0,0,6,0,4,75.5,10.3,0,75,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,75,9.532073,1.386294,4.157348,1 +13,5,0,0,2,529478,0,13794.16,33.19439,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,75.5,10.3,0,75,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,75,9.532073,1.386294,,0 +13,5,0,0,3,529478,0,13794.16,34.19439,1,13,1,3.460208,0,0,0,0,3.460208,0,0,0,0,0,4,75.5,10.3,0,75,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,75,9.532073,1.386294,1.241329,1 +13,5,0,0,1,529479,0,13794.16,9.848049,1,13,1,12.69573,0,0,0,0,12.69573,0,0,0,2,0,4,96.7,10.57626,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,85.2,9.532073,1.386294,2.541265,1 +13,5,0,0,2,529479,0,13794.16,10.84805,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,96.7,10.57626,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,85.2,9.532073,1.386294,,0 +13,5,0,0,3,529479,0,13794.16,11.84805,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,96.7,10.57626,0,85.2,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,85.2,9.532073,1.386294,,0 +13,5,0,0,1,529480,0,13794.16,12.50376,0,13,1,10.57977,0,0,0,0,10.57977,0,0,0,1,0,4,81.7,10.57626,0,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.532073,1.386294,2.358944,1 +13,5,0,0,2,529480,0,13794.16,13.50376,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,10.57626,0,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.532073,1.386294,,0 +13,5,0,0,3,529480,0,13794.16,14.50376,0,13,1,6.920415,0,0,0,978.5294,985.4498,1,0,0,0,0,4,81.7,10.57626,0,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.532073,1.386294,6.893098,1 +13,5,0,0,1,529498,0,5562.212,31.73443,1,13,1,147.6936,18.38341,0,0,1706.094,1872.171,1,0,0,10,0,4,67,6.9,0,52.3,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,1,0,0,52.3,8.623931,1.386294,7.534854,1 +13,5,0,0,2,529498,0,5562.212,32.73443,1,13,1,50.49355,0,0,0,1763.098,1813.592,1,0,0,5,0,4,67,6.9,0,52.3,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,1,0,0,52.3,8.623931,1.386294,7.503065,1 +13,5,0,0,3,529498,0,5562.212,33.73443,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,67,6.9,0,52.3,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,1,0,0,52.3,8.623931,1.386294,,0 +13,5,0,0,1,529499,0,5562.212,6.19028,1,13,1,17.77402,1.95091,0,0,0,19.72493,0,0,0,3,0,4,86.7,10.57626,0,70.4,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,1,0,0,70.4,8.623931,1.386294,2.981883,1 +13,5,0,0,2,529499,0,5562.212,7.19028,1,13,1,5.694761,0,0,0,0,5.694761,0,0,0,1,0,4,86.7,10.57626,0,70.4,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,1,0,0,70.4,8.623931,1.386294,1.739547,1 +13,5,0,0,3,529499,0,5562.212,8.190281,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,10.57626,0,70.4,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,1,0,0,70.4,8.623931,1.386294,,0 +13,5,0,0,1,529500,0,5562.212,30.75975,0,12,1,13.54211,0,0,0,0,13.54211,0,0,0,2,0,4,76.1,17.2,1,68.2,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,1,0,0,68.2,8.623931,1.386294,2.605804,1 +13,5,0,0,2,529500,0,5562.212,31.75975,0,12,1,15.94533,0,0,0,0,15.94533,0,0,0,1,0,4,76.1,17.2,1,68.2,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,1,0,0,68.2,8.623931,1.386294,2.769166,1 +13,5,0,0,3,529500,0,5562.212,32.75975,0,12,1,36.50519,0,24.91349,0,0,61.41869,0,0,0,2,1,4,76.1,17.2,1,68.2,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,1,0,0,68.2,8.623931,1.386294,4.117714,1 +11,5,0,0,1,529586,0,6674.895,31.13758,1,5,1,9.255363,9.150189,0,0,915.0189,933.4245,3,0,0,0,0,4,45.2,34.5,1,27.3,0,416,0,0,1.386294,6.030685,0,0,0,0,0,1,27.3,8.806258,1.386294,6.83886,1 +11,5,0,0,2,529586,0,6674.895,32.13758,1,5,1,77.82395,8.828863,32.48961,0,839.4409,958.5833,1,0,0,3,1,5,45.2,34.5,1,27.3,0,416,0,0,1.609438,6.030685,0,0,0,0,0,1,27.3,8.806258,1.609438,6.865457,1 +11,5,0,0,3,529586,0,6674.895,33.13758,1,5,1,231.3894,66.10635,0,0,1683.053,1980.549,2,0,0,10,0,6,45.2,34.5,1,27.3,0,416,0,0,1.791759,6.030685,0,0,0,0,0,1,27.3,8.806258,1.791759,7.591129,1 +11,5,0,0,1,529587,0,6674.895,16.29295,1,5,1,9.255363,0,0,0,0,9.255363,0,0,0,1,0,4,61.2,6.9,0,54.5,0,416,1,1,1.386294,6.030685,0,0,0,0,1,0,54.5,8.806258,1.386294,2.225203,1 +11,5,0,0,2,529587,0,6674.895,17.29295,1,5,1,223.1772,52.3385,0,0,904.0423,1179.558,2,0,0,10,0,5,61.2,6.9,0,54.5,0,416,1,1,1.609438,6.030685,0,0,0,0,1,0,54.5,8.806258,1.609438,7.072895,1 +11,5,0,0,3,529587,0,6674.895,18.29295,1,5,1,226.2436,57.66724,0,0,1072.041,1355.952,2,0,0,12,2,6,61.2,6.9,0,54.5,0,416,0,0,1.791759,6.030685,0,0,0,0,1,0,54.5,8.806258,1.791759,7.212259,1 +11,5,0,0,1,529588,0,6674.895,15.3128,1,5,1,0,0,0,0,0,0,0,0,0,0,0,4,64.9,0,0,68.2,0,416,1,1,1.386294,6.030685,0,0,0,1,0,0,68.2,8.806258,1.386294,,0 +11,5,0,0,2,529588,0,6674.895,16.3128,1,5,1,5.666792,.9444655,0,0,0,6.611258,0,0,0,0,0,5,64.9,0,0,68.2,0,416,1,1,1.609438,6.030685,0,0,0,1,0,0,68.2,8.806258,1.609438,1.888774,1 +11,5,0,0,3,529588,0,6674.895,17.3128,1,5,1,84.39108,6.765008,0,0,0,91.15609,0,0,0,2,0,6,64.9,0,0,68.2,0,416,1,1,1.791759,6.030685,0,0,0,1,0,0,68.2,8.806258,1.791759,4.512573,1 +11,5,0,0,1,529589,0,6674.895,39.82478,0,5,1,14.0934,0,0,0,0,14.0934,0,0,0,1,0,4,61.7,17.2,0,50,0,416,0,0,1.386294,6.030685,0,0,0,1,0,0,50,8.806258,1.386294,2.645706,1 +11,5,0,0,2,529589,0,6674.895,40.82478,0,5,1,13.22252,0,35.5119,0,0,48.73442,0,0,0,0,1,5,61.7,17.2,0,50,0,416,0,0,1.609438,6.030685,0,0,0,1,0,0,50,8.806258,1.609438,3.886385,1 +11,5,0,0,3,529589,0,6674.895,41.82478,0,5,1,104.2882,13.55403,0,0,692.0583,809.9005,1,0,0,4,0,6,61.7,17.2,0,50,0,416,0,0,1.791759,6.030685,0,0,0,1,0,0,50,8.806258,1.791759,6.696911,1 +13,5,0,1,1,529627,0,11451.1,38.14921,0,12,1,52.47567,8.929327,0,0,0,61.40499,0,0,0,1,0,2,87.2,10.3,0,77.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,77.3,9.345928,.6931472,4.117491,1 +13,5,0,1,2,529627,0,11451.1,39.14921,0,12,1,93.96355,9.757024,0,0,0,103.7206,0,0,0,3,0,2,87.2,10.3,0,77.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,77.3,9.345928,.6931472,4.6417,1 +13,5,0,1,3,529627,0,11451.1,40.14921,0,12,1,66.43599,0,17.99308,0,0,84.42907,0,0,0,2,0,2,87.2,10.3,0,77.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,77.3,9.345928,.6931472,4.435912,1 +13,5,0,1,1,529628,0,11451.1,34.0835,1,12,1,219.2129,134.0034,0,0,0,353.2162,0,0,0,11,0,2,61.7,13.8,1,55.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,55.7,9.345928,.6931472,5.867081,1 +13,5,0,1,2,529628,0,11451.1,35.0835,1,12,1,54.6697,91.64768,0,62.64237,0,146.3174,0,0,3,1,0,2,61.7,13.8,1,55.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,55.7,9.345928,.6931472,4.985778,1 +13,5,0,1,3,529628,0,11451.1,36.0835,1,12,1,123.8754,96.83391,0,152.2491,0,220.7093,0,0,8,4,0,2,61.7,13.8,1,55.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,55.7,9.345928,.6931472,5.396847,1 +19,5,25,1,1,529663,1,1564.223,58.25325,1,5,1,0,0,0,0,0,0,0,0,0,0,0,1,56.4,31,1,46.6,405.6,0,0,0,0,0,0,3.258096,7.391662,0,1,0,46.6,7.355783,0,,0 +19,5,25,1,2,529663,1,1564.223,59.25325,1,5,1,0,2.937127,0,0,414.8692,417.8063,1,0,0,0,0,1,56.4,31,1,46.6,405.6,0,0,0,0,0,0,3.258096,7.391662,0,1,0,46.6,7.355783,0,6.035018,1 +19,5,25,1,3,529663,1,1564.223,60.25325,1,5,1,53.84939,7.421119,0,0,0,61.27051,0,0,0,3,0,1,56.4,31,1,46.6,405.6,0,0,0,0,0,0,3.258096,7.391662,0,1,0,46.6,7.355783,0,4.115299,1 +19,5,25,1,4,529663,1,1564.223,61.25325,1,5,1,165.2814,14.46165,0,0,663.7703,843.5134,1,0,0,10,0,1,56.4,31,1,46.6,405.6,0,0,0,0,0,0,3.258096,7.391662,0,1,0,46.6,7.355783,0,6.737576,1 +19,5,25,1,5,529663,1,1564.223,62.25325,1,5,1,401.7153,3.403087,0,0,0,405.1183,0,0,0,22,0,1,56.4,31,1,46.6,405.6,0,0,0,0,0,0,3.258096,7.391662,0,1,0,46.6,7.355783,0,6.004179,1 +13,5,0,1,1,529706,1,8124.936,53.3744,0,12,1,19.04359,10.34702,27.08422,0,0,56.47482,0,0,0,2,1,6,84,13.8,0,55.7,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,55.7,9.002816,1.791759,4.033795,1 +13,5,0,1,2,529706,1,8124.936,54.3744,0,12,1,133.6371,29.89749,0,0,1121.488,1285.023,1,0,0,5,0,5,84,13.8,0,55.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,55.7,9.002816,1.609438,7.158532,1 +13,5,0,1,3,529706,1,8124.936,55.3744,0,12,1,54.32526,41.34948,25.60554,0,0,121.2803,0,0,0,6,1,5,84,13.8,0,55.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,55.7,9.002816,1.609438,4.798104,1 +13,5,0,1,1,529707,1,8124.936,18.92676,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,69.7,0,0,61.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,61.4,9.002816,1.791759,,0 +13,5,0,1,1,529708,1,8124.936,15.81383,1,7,1,0,0,0,0,0,0,0,0,0,0,0,6,72.3,0,0,83.7,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,83.7,9.002816,1.791759,,0 +13,5,0,1,2,529708,1,8124.936,16.81383,1,7,1,0,0,0,0,0,0,0,0,0,0,0,5,72.3,0,0,83.7,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,83.7,9.002816,1.609438,,0 +13,5,0,1,3,529708,1,8124.936,17.81383,1,7,1,0,0,0,0,0,0,0,0,0,0,0,5,72.3,0,0,83.7,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,83.7,9.002816,1.609438,,0 +13,5,0,1,1,529709,1,8124.936,50.11636,1,7,1,116.2717,5.696149,30.89293,0,0,152.8608,0,0,0,4,1,6,74.5,6.9,0,76.1,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,76.1,9.002816,1.791759,5.029528,1 +13,5,0,1,2,529709,1,8124.936,51.11636,1,7,1,92.0653,6.643888,0,0,0,98.70919,0,0,0,3,0,5,74.5,6.9,0,76.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,76.1,9.002816,1.609438,4.592178,1 +13,5,0,1,3,529709,1,8124.936,52.11636,1,7,1,48.44291,30.25952,27.68166,0,0,106.3841,0,0,0,4,1,5,74.5,6.9,0,76.1,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,76.1,9.002816,1.609438,4.667056,1 +13,5,0,1,1,529710,1,8124.936,20.53114,1,10,1,8.040627,4.274228,0,0,0,12.31485,0,0,0,0,0,6,69.1,0,0,80.7,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.002816,1.791759,2.510806,1 +13,5,0,1,2,529710,1,8124.936,21.53114,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,69.1,0,0,80.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.002816,1.609438,,0 +13,5,0,1,3,529710,1,8124.936,22.53114,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,69.1,0,0,80.7,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,80.7,9.002816,1.609438,,0 +13,5,0,1,1,529711,1,8124.936,17.31691,1,7,1,64.57893,2.285231,0,0,0,66.86416,0,0,0,4,0,6,73.9,0,0,78.4,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,78.4,9.002816,1.791759,4.202663,1 +13,5,0,1,2,529711,1,8124.936,18.31691,1,7,1,95.52012,0,0,0,0,95.52012,0,0,0,1,0,5,73.9,0,0,78.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,78.4,9.002816,1.609438,4.559337,1 +13,5,0,1,3,529711,1,8124.936,19.31691,1,7,1,0,0,0,0,0,0,0,0,0,0,0,5,73.9,0,0,78.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,78.4,9.002816,1.609438,,0 +5,5,25,1,1,529844,0,9597.542,40.59685,1,12,1,90.17439,20.94428,0,0,0,111.1187,0,0,0,4,0,4,62.8,13.8,0,75,728.15,1103.76,0,0,1.386294,7.006478,0,3.258096,7.976801,0,0,0,75,9.169367,1.386294,4.710599,1 +5,5,25,1,2,529844,0,9597.542,41.59685,1,12,1,8.015267,16.24427,0,0,0,24.25954,0,0,0,1,0,4,62.8,13.8,0,75,728.15,1103.76,0,0,1.386294,7.006478,0,3.258096,7.976801,0,0,0,75,9.169367,1.386294,3.18881,1 +5,5,25,1,3,529844,0,9597.542,42.59685,1,12,1,6.271777,16.20209,0,0,0,22.47387,0,0,0,1,0,4,62.8,13.8,0,75,728.15,1103.76,0,0,1.386294,7.006478,0,3.258096,7.976801,0,0,0,75,9.169367,1.386294,3.112353,1 +5,5,25,1,1,529845,0,9597.542,3.022587,1,12,1,17.01404,5.776266,0,0,0,22.7903,0,0,0,2,0,4,77.40034,10.57626,0,96.3,728.15,1103.76,1,1,1.386294,7.006478,0,3.258096,7.976801,0,0,0,96.3,9.169367,1.386294,3.126335,1 +5,5,25,1,2,529845,0,9597.542,4.022587,1,12,1,12.21374,2.099237,0,0,0,14.31298,0,0,0,2,0,4,77.40034,10.57626,0,96.3,728.15,1103.76,1,1,1.386294,7.006478,0,3.258096,7.976801,0,0,0,96.3,9.169367,1.386294,2.661167,1 +5,5,25,1,3,529845,0,9597.542,5.022587,1,12,1,13.24042,1.557491,0,0,0,14.79791,0,0,0,2,0,4,77.40034,10.57626,0,96.3,728.15,1103.76,1,1,1.386294,7.006478,0,3.258096,7.976801,0,0,0,96.3,9.169367,1.386294,2.694486,1 +5,5,25,1,1,529847,0,9597.542,37.40178,0,13,1,7.656316,3.998299,0,0,0,11.65462,0,0,0,1,0,4,89.9,10.3,0,79.5,728.15,1103.76,0,0,1.386294,7.006478,0,3.258096,7.976801,0,0,0,79.5,9.169367,1.386294,2.455702,1 +5,5,25,1,2,529847,0,9597.542,38.40178,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,89.9,10.3,0,79.5,728.15,1103.76,0,0,1.386294,7.006478,0,3.258096,7.976801,0,0,0,79.5,9.169367,1.386294,,0 +5,5,25,1,3,529847,0,9597.542,39.40178,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,89.9,10.3,0,79.5,728.15,1103.76,0,0,1.386294,7.006478,0,3.258096,7.976801,0,0,0,79.5,9.169367,1.386294,,0 +5,5,25,1,1,529848,0,9597.542,6.160164,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,10.57626,0,66.7,728.15,1103.76,1,0,1.386294,7.006478,0,3.258096,7.976801,0,0,0,66.7,9.169367,1.386294,,0 +5,5,25,1,2,529848,0,9597.542,7.160164,0,12,1,15.64886,4.71374,0,0,302.2901,322.6527,1,0,0,2,0,4,88.3,10.57626,0,66.7,728.15,1103.76,1,0,1.386294,7.006478,0,3.258096,7.976801,0,0,0,66.7,9.169367,1.386294,5.776577,1 +5,5,25,1,3,529848,0,9597.542,8.160164,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,10.57626,0,66.7,728.15,1103.76,1,0,1.386294,7.006478,0,3.258096,7.976801,0,0,0,66.7,9.169367,1.386294,,0 +11,5,0,0,1,529882,1,8878.136,46.38193,0,18,1,12.69573,3.085061,32.16251,0,0,47.94329,0,0,0,0,1,1,91,0,0,96.6,0,0,0,0,0,0,0,0,0,0,0,0,96.6,9.091459,0,3.870019,1 +11,5,0,0,2,529882,1,8878.136,47.38193,0,18,1,57.32726,0,0,0,0,57.32726,0,0,0,4,0,1,91,0,0,96.6,0,0,0,0,0,0,0,0,0,0,0,0,96.6,9.091459,0,4.048776,1 +11,5,0,0,3,529882,1,8878.136,48.38193,0,18,1,6.920415,0,0,0,0,6.920415,0,0,0,1,0,1,91,0,0,96.6,0,0,0,0,0,0,0,0,0,0,0,0,96.6,9.091459,0,1.934476,1 +17,5,25,1,1,529940,0,8997.439,50.37098,1,12,1,56.37358,41.52713,0,0,2500.21,2598.111,2,0,0,8,0,3,41,31,1,42,672,672,0,0,1.098612,6.510258,0,3.258096,7.896553,1,0,0,42,9.104807,1.098612,7.86254,1 +17,5,25,1,2,529940,0,8997.439,51.37098,1,12,1,30.22289,0,29.46732,0,0,59.69022,0,0,0,3,0,3,41,31,1,42,672,672,0,0,1.098612,6.510258,0,3.258096,7.896553,1,0,0,42,9.104807,1.098612,4.089168,1 +17,5,25,1,3,529940,0,8997.439,52.37098,1,12,1,134.8199,53.45454,0,0,2031.715,2219.99,1,0,0,7,0,3,41,31,1,42,672,672,0,0,1.098612,6.510258,0,3.258096,7.896553,1,0,0,42,9.104807,1.098612,7.705258,1 +17,5,25,1,1,529942,0,8997.439,14.19302,0,12,1,14.0934,1.093816,0,0,0,15.18721,0,0,0,1,0,3,93.6,6.9,0,89.8,672,672,1,0,1.098612,6.510258,0,3.258096,7.896553,0,0,0,89.8,9.104807,1.098612,2.720454,1 +17,5,25,1,2,529942,0,8997.439,15.19302,0,12,1,7.93351,0,0,0,0,7.93351,0,0,0,2,0,3,93.6,6.9,0,89.8,672,672,1,0,1.098612,6.510258,0,3.258096,7.896553,0,0,0,89.8,9.104807,1.098612,2.071095,1 +17,5,25,1,3,529942,0,8997.439,16.19302,0,12,1,16.46655,0,0,0,0,16.46655,0,0,0,2,0,3,93.6,6.9,0,89.8,672,672,1,0,1.098612,6.510258,0,3.258096,7.896553,0,0,0,89.8,9.104807,1.098612,2.801331,1 +17,5,25,1,1,529943,0,8997.439,11.65229,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,10.57626,0,96.3,672,672,1,1,1.098612,6.510258,0,3.258096,7.896553,0,0,0,96.3,9.104807,1.098612,,0 +17,5,25,1,2,529943,0,8997.439,12.65229,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,10.57626,0,96.3,672,672,1,1,1.098612,6.510258,0,3.258096,7.896553,0,0,0,96.3,9.104807,1.098612,,0 +17,5,25,1,3,529943,0,8997.439,13.65229,1,12,1,105.3173,0,0,0,0,105.3173,0,0,0,1,0,3,86.7,10.57626,0,96.3,672,672,1,1,1.098612,6.510258,0,3.258096,7.896553,0,0,0,96.3,9.104807,1.098612,4.656978,1 +13,5,0,1,1,529981,1,6674.895,25.99315,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,83,10.3,0,68.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,68.2,8.806258,0,,0 +13,5,0,1,2,529981,1,6674.895,26.99315,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,83,10.3,0,68.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,68.2,8.806258,0,,0 +13,5,0,1,3,529981,1,6674.895,27.99315,0,13,1,0,0,0,0,0,0,0,0,0,0,0,1,83,10.3,0,68.2,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,68.2,8.806258,0,,0 +18,5,25,1,1,530141,0,9047.619,13.69747,0,10,1,38.29877,2.175201,29.04782,0,0,69.5218,0,0,0,3,0,5,66.7,10.57626,1,37,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,37,9.110368,1.609438,4.241641,1 +18,5,25,1,2,530141,0,9047.619,14.69747,0,10,1,64.54062,1.355353,0,0,0,65.89597,0,0,0,2,0,5,66.7,10.57626,1,37,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,37,9.110368,1.609438,4.188077,1 +18,5,25,1,3,530141,0,9047.619,15.69747,0,10,1,20.76125,0,17.99308,0,0,38.75433,0,0,0,2,0,5,66.7,10.57626,1,37,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,37,9.110368,1.609438,3.657242,1 +18,5,25,0,1,530142,0,9047.619,34.84189,0,8,1,49.93652,18.5019,35.37876,0,0,103.8172,0,0,0,4,0,5,54.3,27.6,1,56.8,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,56.8,9.110368,1.609438,4.642632,1 +18,5,25,0,2,530142,0,9047.619,35.84189,0,8,1,4.93546,8.921792,0,0,0,13.85725,0,0,0,1,0,5,54.3,27.6,1,56.8,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,56.8,9.110368,1.609438,2.628809,1 +18,5,25,0,3,530142,0,9047.619,36.84189,0,8,1,121.2803,20.99654,0,0,6394.585,6536.862,2,0,0,5,0,5,54.3,27.6,1,56.8,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,56.8,9.110368,1.609438,8.785213,1 +18,5,25,1,1,530143,0,9047.619,12.35318,1,10,1,14.81168,0,24.64664,0,0,39.45832,0,0,0,1,0,5,70,10.57626,0,92.6,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.110368,1.609438,3.675245,1 +18,5,25,1,2,530143,0,9047.619,13.35318,1,10,1,21.26044,7.042521,0,0,0,28.30296,0,0,0,2,0,5,70,10.57626,0,92.6,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.110368,1.609438,3.342967,1 +18,5,25,1,3,530143,0,9047.619,14.35318,1,10,1,23.87543,9.972319,10.38408,0,0,44.23183,0,0,0,3,0,5,70,10.57626,0,92.6,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.110368,1.609438,3.789445,1 +18,5,25,1,1,530144,0,9047.619,32.15058,1,10,1,39.35675,51.47271,0,0,0,90.82945,0,0,0,4,0,5,18.6,37.9,1,18.2,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,1,18.2,9.110368,1.609438,4.508984,1 +18,5,25,1,2,530144,0,9047.619,33.15058,1,10,1,68.1473,32.79043,31.58694,0,0,132.5247,0,0,0,5,0,5,18.6,37.9,1,18.2,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,1,18.2,9.110368,1.609438,4.886769,1 +18,5,25,1,3,530144,0,9047.619,34.15058,1,10,1,34.25605,44.58823,7.612457,0,0,86.45675,0,0,0,5,0,5,18.6,37.9,1,18.2,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,1,18.2,9.110368,1.609438,4.459644,1 +18,5,25,1,1,530145,0,9047.619,6.266941,0,10,1,42.53068,19.79264,0,0,370.1523,432.4757,2,0,0,6,0,5,86.7,10.57626,0,51.9,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,51.9,9.110368,1.609438,6.069526,1 +18,5,25,1,2,530145,0,9047.619,7.266941,0,10,1,6.454062,8.09795,0,0,0,14.55201,0,0,0,1,0,5,86.7,10.57626,0,51.9,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,51.9,9.110368,1.609438,2.677729,1 +18,5,25,1,3,530145,0,9047.619,8.26694,0,10,1,11.07266,5.99308,0,0,0,17.06574,0,0,0,2,0,5,86.7,10.57626,0,51.9,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,51.9,9.110368,1.609438,2.837073,1 +11,5,0,1,1,530283,0,12511.44,47.3347,1,12,1,88.20615,14.42517,0,0,0,102.6313,0,0,0,6,0,3,86.2,17.2,0,72.7,0,299.52,0,0,1.098612,5.702181,0,0,0,0,0,0,72.7,9.434479,1.098612,4.631143,1 +11,5,0,1,2,530283,0,12511.44,48.3347,1,12,1,73.88711,15.86967,0,0,484.626,574.3828,1,0,0,3,0,3,86.2,17.2,0,72.7,0,299.52,0,0,1.098612,5.702181,0,0,0,0,0,0,72.7,9.434479,1.098612,6.353296,1 +11,5,0,1,3,530283,0,12511.44,49.3347,1,12,1,35.75936,11.56921,0,0,0,47.32856,0,0,0,3,0,3,86.2,17.2,0,72.7,0,299.52,0,0,1.098612,5.702181,0,0,0,0,0,0,72.7,9.434479,1.098612,3.857114,1 +11,5,0,1,4,530283,0,12511.44,50.3347,1,12,1,64.22365,19.12354,34.57499,0,0,117.9222,0,0,0,5,0,3,86.2,17.2,0,72.7,0,299.52,0,0,1.098612,5.702181,0,0,0,0,0,0,72.7,9.434479,1.098612,4.770025,1 +11,5,0,1,5,530283,0,12511.44,51.3347,1,12,1,26.41509,9.756433,0,0,0,36.17153,0,0,0,2,0,4,86.2,17.2,0,72.7,0,299.52,0,0,1.386294,5.702181,0,0,0,0,0,0,72.7,9.434479,1.386294,3.588272,1 +11,5,0,1,1,530284,0,12511.44,56.99658,0,12,1,152.1308,14.09812,50.90188,0,356.2934,573.4242,1,0,0,9,0,3,91,13.8,0,62.5,0,299.52,0,0,1.098612,5.702181,0,0,0,0,0,0,62.5,9.434479,1.098612,6.351626,1 +11,5,0,1,2,530284,0,12511.44,57.99658,0,12,1,45.89261,0,17.18219,0,0,63.07481,0,0,0,0,0,3,91,13.8,0,62.5,0,299.52,0,0,1.098612,5.702181,0,0,0,0,0,0,62.5,9.434479,1.098612,4.144321,1 +11,5,0,1,3,530284,0,12511.44,58.99658,0,12,1,27.34539,35.09887,41.96466,0,1047.539,1151.948,1,0,0,2,0,3,91,13.8,0,62.5,0,299.52,0,0,1.098612,5.702181,0,0,0,0,0,0,62.5,9.434479,1.098612,7.04921,1 +11,5,0,1,4,530284,0,12511.44,59.99658,0,12,1,64.60143,5.772573,23.57386,0,0,93.94787,0,0,0,4,0,3,91,13.8,0,62.5,0,299.52,0,0,1.098612,5.702181,0,0,0,0,0,0,62.5,9.434479,1.098612,4.54274,1 +11,5,0,1,5,530284,0,12511.44,60.99658,0,12,1,72.04117,16.12007,130.4151,0,1752.316,1970.892,2,0,0,7,0,4,91,13.8,0,62.5,0,299.52,0,0,1.386294,5.702181,0,0,0,0,0,0,62.5,9.434479,1.386294,7.586242,1 +11,5,0,1,1,530285,0,12511.44,17.88638,0,12,1,86.47176,16.17939,0,0,0,102.6511,0,0,0,9,0,3,55.9,3.4,0,39.8,0,299.52,1,0,1.098612,5.702181,0,0,0,1,0,0,39.8,9.434479,1.098612,4.631336,1 +11,5,0,1,2,530285,0,12511.44,18.88638,0,12,1,6.883892,0,0,0,0,6.883892,0,0,0,1,0,3,55.9,3.4,0,39.8,0,299.52,0,0,1.098612,5.702181,0,0,0,1,0,0,39.8,9.434479,1.098612,1.929184,1 +11,5,0,1,3,530285,0,12511.44,19.88638,0,12,1,15.98654,.9171224,0,0,0,16.90366,0,0,0,2,0,3,55.9,3.4,0,39.8,0,299.52,0,0,1.098612,5.702181,0,0,0,1,0,0,39.8,9.434479,1.098612,2.82753,1 +11,5,0,1,4,530285,0,12511.44,20.88638,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,55.9,3.4,0,39.8,0,299.52,0,0,1.098612,5.702181,0,0,0,1,0,0,39.8,9.434479,1.098612,,0 +11,5,0,1,5,530285,0,12511.44,21.88638,0,12,1,18.86792,0,0,0,0,18.86792,0,0,0,3,0,4,55.9,3.4,0,39.8,0,299.52,0,0,1.386294,5.702181,0,0,0,1,0,0,39.8,9.434479,1.386294,2.937463,1 +6,5,25,1,1,530320,0,13530.98,13.97399,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,93.3,10.57626,0,100,750,750,1,1,1.098612,6.620073,0,3.258096,8.006368,0,0,0,100,9.512811,1.098612,,0 +6,5,25,1,2,530320,0,13530.98,14.97399,1,12,1,17.00038,0,0,0,0,17.00038,0,0,0,1,0,3,93.3,10.57626,0,100,750,750,1,1,1.098612,6.620073,0,3.258096,8.006368,0,0,0,100,9.512811,1.098612,2.833236,1 +6,5,25,1,3,530320,0,13530.98,15.97399,1,12,1,6.174957,8.209263,0,0,0,14.38422,0,0,0,1,0,3,93.3,10.57626,0,100,750,750,1,1,1.098612,6.620073,0,3.258096,8.006368,0,0,0,100,9.512811,1.098612,2.666132,1 +6,5,25,1,1,530321,0,13530.98,34.19576,1,12,1,16.82793,0,0,0,0,16.82793,0,0,0,2,0,3,91,6.9,0,90.9,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,90.9,9.512811,1.098612,2.82304,1 +6,5,25,1,2,530321,0,13530.98,35.19576,1,12,1,48.35663,0,0,0,0,48.35663,0,0,0,2,0,3,91,6.9,0,90.9,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,90.9,9.512811,1.098612,3.878603,1 +6,5,25,1,3,530321,0,13530.98,36.19576,1,12,1,9.605489,0,0,0,0,9.605489,0,0,0,1,0,3,91,6.9,0,90.9,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,90.9,9.512811,1.098612,2.262335,1 +6,5,25,1,1,530322,0,13530.98,34.5024,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,91.5,6.9,0,89.8,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,89.8,9.512811,1.098612,,0 +6,5,25,1,2,530322,0,13530.98,35.5024,0,10,1,32.30072,0,0,0,0,32.30072,0,0,0,1,0,3,91.5,6.9,0,89.8,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,89.8,9.512811,1.098612,3.475089,1 +6,5,25,1,3,530322,0,13530.98,36.5024,0,10,1,9.262436,0,0,0,0,9.262436,0,0,0,2,0,3,91.5,6.9,0,89.8,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,89.8,9.512811,1.098612,2.225967,1 +19,5,25,1,1,530367,0,5839.734,57.26215,1,12,1,34.91796,8.645351,0,0,0,43.56332,0,0,0,2,0,1,80.9,20.7,1,60.2,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,60.2,8.672612,0,3.774215,1 +19,5,25,1,2,530367,0,5839.734,58.26215,1,12,1,6.800151,19.966,0,0,0,26.76615,0,0,0,1,0,1,80.9,20.7,1,60.2,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,60.2,8.672612,0,3.287138,1 +19,5,25,1,3,530367,0,5839.734,59.26215,1,12,1,0,19.12521,0,0,0,19.12521,0,0,0,0,0,1,80.9,20.7,1,60.2,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,60.2,8.672612,0,2.951008,1 +11,5,0,0,1,530487,0,7363.031,16.93908,0,12,1,12.62095,0,33.65587,0,0,46.27682,0,0,0,0,1,4,94.1,6.9,0,68.2,0,0,1,0,1.386294,0,0,0,0,0,0,0,68.2,8.904363,1.386294,3.834641,1 +11,5,0,0,2,530487,0,7363.031,17.93908,0,12,1,34.00076,0,17.00038,0,0,51.00113,0,0,0,1,1,4,94.1,6.9,0,68.2,0,0,1,0,1.386294,0,0,0,0,0,0,0,68.2,8.904363,1.386294,3.931848,1 +11,5,0,0,3,530487,0,7363.031,18.93908,0,12,1,12.00686,0,26.07204,0,0,38.0789,0,0,0,0,1,4,94.1,6.9,0,68.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,68.2,8.904363,1.386294,3.63966,1 +11,5,0,0,1,530489,0,7363.031,14.44216,0,12,1,7.57257,1.661759,0,0,0,9.234329,0,0,0,1,0,4,85.6,0,0,76.1,0,0,1,0,1.386294,0,0,0,0,0,0,0,76.1,8.904363,1.386294,2.222928,1 +11,5,0,0,2,530489,0,7363.031,15.44216,0,12,1,28.33396,0,0,0,0,28.33396,0,0,0,2,0,4,85.6,0,0,76.1,0,0,1,0,1.386294,0,0,0,0,0,0,0,76.1,8.904363,1.386294,3.344061,1 +11,5,0,0,3,530489,0,7363.031,16.44216,0,12,1,607.2041,2.469983,0,0,0,609.6741,0,0,0,2,0,4,85.6,0,0,76.1,0,0,1,0,1.386294,0,0,0,0,0,0,0,76.1,8.904363,1.386294,6.412924,1 +11,5,0,0,1,530491,0,7363.031,40.91171,0,11,1,14.72444,0,30.29028,0,0,45.01472,0,0,0,0,1,4,91.5,3.4,0,75,0,0,0,0,1.386294,0,0,0,0,0,0,0,75,8.904363,1.386294,3.80699,1 +11,5,0,0,2,530491,0,7363.031,41.91171,0,11,1,13.22252,0,29.46732,0,0,42.68984,0,0,0,0,1,4,91.5,3.4,0,75,0,0,0,0,1.386294,0,0,0,0,0,0,0,75,8.904363,1.386294,3.753961,1 +11,5,0,0,3,530491,0,7363.031,42.91171,0,11,1,12.00686,3.392796,41.3825,0,0,56.78216,0,0,0,0,1,4,91.5,3.4,0,75,0,0,0,0,1.386294,0,0,0,0,0,0,0,75,8.904363,1.386294,4.039222,1 +11,5,0,0,1,530492,0,7363.031,39.43874,1,12,1,53.42869,21.67438,34.91796,0,592.9744,702.9954,1,0,0,4,1,4,72.9,13.8,1,60.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,60.2,8.904363,1.386294,6.55535,1 +11,5,0,0,2,530492,0,7363.031,40.43874,1,12,1,29.84511,0,0,0,0,29.84511,0,0,0,5,0,4,72.9,13.8,1,60.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,60.2,8.904363,1.386294,3.396021,1 +11,5,0,0,3,530492,0,7363.031,41.43874,1,12,1,18.86792,5.938251,38.0789,0,0,62.88508,0,0,0,1,1,4,72.9,13.8,1,60.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,60.2,8.904363,1.386294,4.141309,1 +17,5,25,0,1,530493,0,8637.993,25.9822,0,14,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,3.4,0,88.6,576.75,576.75,0,0,.6931472,6.357409,0,3.258096,7.743703,1,0,0,88.6,9.064041,.6931472,,0 +17,5,25,0,2,530493,0,8637.993,26.9822,0,14,1,0,1.305326,0,0,0,1.305326,0,0,0,0,0,2,86.7,3.4,0,88.6,576.75,576.75,0,0,.6931472,6.357409,0,3.258096,7.743703,1,0,0,88.6,9.064041,.6931472,.2664531,1 +17,5,25,0,3,530493,0,8637.993,27.9822,0,14,1,6.08931,8.108931,0,0,0,14.19824,0,0,0,1,0,3,86.7,3.4,0,88.6,576.75,576.75,0,0,1.098612,6.357409,0,3.258096,7.743703,1,0,0,88.6,9.064041,1.098612,2.653118,1 +17,5,25,0,1,530494,0,8637.993,24.91171,1,12,1,16.04835,0,0,0,0,16.04835,0,0,0,0,0,2,83,0,0,73.9,576.75,576.75,0,0,.6931472,6.357409,0,3.258096,7.743703,1,0,0,73.9,9.064041,.6931472,2.775606,1 +17,5,25,0,2,530494,0,8637.993,25.91171,1,12,1,175.5439,6.665416,.3750938,0,1373.593,1556.178,2,0,0,7,2,2,83,0,0,73.9,576.75,576.75,0,0,.6931472,6.357409,0,3.258096,7.743703,1,0,0,73.9,9.064041,.6931472,7.349988,1 +17,5,25,0,3,530494,0,8637.993,26.91171,1,12,1,30.6157,3.616374,0,0,0,34.23207,0,0,0,1,0,3,83,0,0,73.9,576.75,576.75,0,0,1.098612,6.357409,0,3.258096,7.743703,1,0,0,73.9,9.064041,1.098612,3.533163,1 +18,5,25,1,1,530495,1,2794.675,35.68789,1,12,1,0,0,0,0,965.9235,965.9235,1,0,0,0,0,3,67,27.6,1,58,504.3,504.3,0,0,1.098612,6.223171,0,3.258096,7.609466,1,0,0,58,7.935829,1.098612,6.873085,1 +18,5,25,1,2,530495,1,2794.675,36.68789,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,67,27.6,1,58,504.3,504.3,0,0,1.098612,6.223171,0,3.258096,7.609466,1,0,0,58,7.935829,1.098612,,0 +18,5,25,1,3,530495,1,2794.675,37.68789,1,12,1,17.15266,0,17.45455,0,0,34.6072,0,0,0,1,0,3,67,27.6,1,58,504.3,504.3,0,0,1.098612,6.223171,0,3.258096,7.609466,1,0,0,58,7.935829,1.098612,3.544062,1 +18,5,25,1,1,530496,1,2794.675,11.99726,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,68.3,10.57626,0,74.1,504.3,504.3,1,0,1.098612,6.223171,0,3.258096,7.609466,0,0,0,74.1,7.935829,1.098612,,0 +18,5,25,1,2,530496,1,2794.675,12.99726,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,68.3,10.57626,0,74.1,504.3,504.3,1,0,1.098612,6.223171,0,3.258096,7.609466,0,0,0,74.1,7.935829,1.098612,,0 +18,5,25,1,3,530496,1,2794.675,13.99726,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,68.3,10.57626,0,74.1,504.3,504.3,1,0,1.098612,6.223171,0,3.258096,7.609466,0,0,0,74.1,7.935829,1.098612,,0 +18,5,25,1,1,530497,1,2794.675,14.59548,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,72.3,10.3,0,52.3,504.3,504.3,1,0,1.098612,6.223171,0,3.258096,7.609466,0,0,0,52.3,7.935829,1.098612,,0 +18,5,25,1,2,530497,1,2794.675,15.59548,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,72.3,10.3,0,52.3,504.3,504.3,1,0,1.098612,6.223171,0,3.258096,7.609466,0,0,0,52.3,7.935829,1.098612,,0 +18,5,25,1,3,530497,1,2794.675,16.59548,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,72.3,10.3,0,52.3,504.3,504.3,1,0,1.098612,6.223171,0,3.258096,7.609466,0,0,0,52.3,7.935829,1.098612,,0 +10,5,50,0,1,530512,0,4944.701,35.86584,1,12,1,40.85035,0,29.59566,0,0,70.44602,0,0,0,1,1,3,96.3,6.9,0,94.3,1000,0,0,0,1.098612,0,0,3.931826,7.600903,1,0,0,94.3,8.506274,1.098612,4.254847,1 +10,5,50,0,2,530512,0,4944.701,36.86584,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,96.3,6.9,0,94.3,1000,0,0,0,1.098612,0,0,3.931826,7.600903,1,0,0,94.3,8.506274,1.098612,,0 +10,5,50,0,3,530512,0,4944.701,37.86584,1,12,1,58.52503,0,0,0,0,58.52503,0,0,0,2,1,3,96.3,6.9,0,94.3,1000,0,0,0,1.098612,0,0,3.931826,7.600903,1,0,0,94.3,8.506274,1.098612,4.069455,1 +10,5,50,0,1,530513,0,4944.701,13.97399,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,95,10.57626,0,100,1000,0,1,0,1.098612,0,0,3.931826,7.600903,0,0,0,100,8.506274,1.098612,,0 +10,5,50,0,2,530513,0,4944.701,14.97399,0,12,1,47.63691,0,0,0,0,47.63691,0,0,0,2,0,3,95,10.57626,0,100,1000,0,1,0,1.098612,0,0,3.931826,7.600903,0,0,0,100,8.506274,1.098612,3.863608,1 +10,5,50,0,3,530513,0,4944.701,15.97399,0,12,1,36.87415,0,0,0,0,36.87415,0,0,0,4,0,3,95,10.57626,0,100,1000,0,1,0,1.098612,0,0,3.931826,7.600903,0,0,0,100,8.506274,1.098612,3.607511,1 +10,5,50,0,1,530514,0,4944.701,9.533196,1,12,1,14.58941,0,0,0,0,14.58941,0,0,0,0,1,3,85,10.57626,0,85.2,1000,0,1,1,1.098612,0,0,3.931826,7.600903,0,0,0,85.2,8.506274,1.098612,2.680296,1 +10,5,50,0,2,530514,0,4944.701,10.5332,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,85,10.57626,0,85.2,1000,0,1,1,1.098612,0,0,3.931826,7.600903,0,0,0,85.2,8.506274,1.098612,,0 +10,5,50,0,3,530514,0,4944.701,11.5332,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,85,10.57626,0,85.2,1000,0,1,1,1.098612,0,0,3.931826,7.600903,0,0,0,85.2,8.506274,1.098612,,0 +11,5,0,0,1,530594,1,6674.895,9.83436,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,96.7,10.57626,.1442925,92.6,0,18,1,0,1.386294,2.890372,0,0,0,0,0,0,92.6,8.806258,1.386294,,0 +11,5,0,0,2,530594,1,6674.895,10.83436,0,14,1,15.11145,0,0,0,0,15.11145,0,0,0,2,0,4,96.7,10.57626,.1442925,92.6,0,18,1,0,1.386294,2.890372,0,0,0,0,0,0,92.6,8.806258,1.386294,2.715453,1 +11,5,0,0,3,530594,1,6674.895,11.83436,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,96.7,10.57626,.1442925,92.6,0,18,1,0,1.386294,2.890372,0,0,0,0,0,0,92.6,8.806258,1.386294,,0 +11,5,0,0,1,530595,1,6674.895,32.98015,1,14,1,264.1986,10.97602,0,0,1844.342,2119.516,1,0,0,3,0,4,90.4,17.2,0,27.3,0,18,0,0,1.386294,2.890372,0,0,0,1,0,0,27.3,8.806258,1.386294,7.658943,1 +11,5,0,0,2,530595,1,6674.895,33.98015,1,14,1,72.53494,7.287495,28.33396,0,0,108.1564,0,0,0,3,1,4,90.4,17.2,0,27.3,0,18,0,0,1.386294,2.890372,0,0,0,1,0,0,27.3,8.806258,1.386294,4.683578,1 +11,5,0,0,3,530595,1,6674.895,34.98015,1,14,1,73.75643,4.305317,0,0,0,78.06175,0,0,0,4,0,4,90.4,17.2,0,27.3,0,18,0,0,1.386294,2.890372,0,0,0,1,0,0,27.3,8.806258,1.386294,4.3575,1 +11,5,0,0,1,530596,1,6674.895,34.73511,0,13,1,21.45562,3.151031,0,0,316.7859,341.3925,1,0,0,2,0,4,93.1,6.9,0,92,0,18,0,0,1.386294,2.890372,0,0,0,0,0,0,92,8.806258,1.386294,5.833033,1 +11,5,0,0,2,530596,1,6674.895,35.73511,0,13,1,13.22252,4.533434,29.07442,0,0,46.83038,0,0,0,1,0,4,93.1,6.9,0,92,0,18,0,0,1.386294,2.890372,0,0,0,0,0,0,92,8.806258,1.386294,3.846532,1 +11,5,0,0,3,530596,1,6674.895,36.73511,0,13,1,107.0326,5.008576,0,0,0,112.0412,0,0,0,3,0,4,93.1,6.9,0,92,0,18,0,0,1.386294,2.890372,0,0,0,0,0,0,92,8.806258,1.386294,4.718866,1 +13,5,0,0,1,530717,0,5423.963,29.94114,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,59,6.9,0,88.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,88.6,8.598766,0,,0 +13,5,0,0,2,530717,0,5423.963,30.94114,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,59,6.9,0,88.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,88.6,8.598766,0,,0 +13,5,0,0,3,530717,0,5423.963,31.94114,0,14,1,0,0,0,0,0,0,0,0,0,0,0,1,59,6.9,0,88.6,150,150,0,0,0,5.010635,1,4.564348,5.061929,0,0,0,88.6,8.598766,0,,0 +11,5,0,1,1,530789,0,8797.235,33.98494,1,4,1,93.37224,19.0371,25.57732,300.1251,0,137.9867,0,0,17,10,0,5,23.4,24.1,0,40.9,0,195,0,0,1.609438,5.273,0,0,0,1,0,0,40.9,9.082307,1.609438,4.927157,1 +11,5,0,1,2,530789,0,8797.235,34.98494,1,4,1,45.85521,0,0,0,0,45.85521,0,0,0,2,0,5,23.4,24.1,0,40.9,0,195,0,0,1.609438,5.273,0,0,0,1,0,0,40.9,9.082307,1.609438,3.825489,1 +11,5,0,1,3,530789,0,8797.235,35.98494,1,4,1,6.08931,0,0,0,0,6.08931,0,0,0,1,0,5,23.4,24.1,0,40.9,0,195,0,0,1.609438,5.273,0,0,0,1,0,0,40.9,9.082307,1.609438,1.806535,1 +11,5,0,1,1,530790,0,8797.235,9.092402,0,4,1,10.83785,0,0,0,0,10.83785,0,0,0,2,0,5,85,10.57626,0,37,0,195,1,0,1.609438,5.273,0,0,0,1,0,0,37,9.082307,1.609438,2.383044,1 +11,5,0,1,2,530790,0,8797.235,10.0924,0,4,1,0,0,0,0,0,0,0,0,0,0,0,5,85,10.57626,0,37,0,195,1,0,1.609438,5.273,0,0,0,1,0,0,37,9.082307,1.609438,,0 +11,5,0,1,3,530790,0,8797.235,11.0924,0,4,1,10.14885,0,0,0,0,10.14885,0,0,0,1,0,5,85,10.57626,0,37,0,195,1,0,1.609438,5.273,0,0,0,1,0,0,37,9.082307,1.609438,2.31736,1 +11,5,0,1,1,530791,0,8797.235,14.77344,0,4,1,30.0125,0,0,0,0,30.0125,0,0,0,4,0,5,77.7,3.4,0,70.5,0,195,1,0,1.609438,5.273,0,0,0,1,0,0,70.5,9.082307,1.609438,3.401614,1 +11,5,0,1,2,530791,0,8797.235,15.77344,0,4,1,32.53939,0,0,0,0,32.53939,0,0,0,2,0,5,77.7,3.4,0,70.5,0,195,1,0,1.609438,5.273,0,0,0,1,0,0,70.5,9.082307,1.609438,3.482451,1 +11,5,0,1,3,530791,0,8797.235,16.77344,0,4,1,7.104195,0,0,0,0,7.104195,0,0,0,1,0,5,77.7,3.4,0,70.5,0,195,1,0,1.609438,5.273,0,0,0,1,0,0,70.5,9.082307,1.609438,1.960685,1 +11,5,0,1,1,530792,0,8797.235,13.07324,0,4,1,0,0,0,0,0,0,0,0,0,0,0,5,100,10.57626,0,81.5,0,195,1,0,1.609438,5.273,0,0,0,1,0,0,81.5,9.082307,1.609438,,0 +11,5,0,1,2,530792,0,8797.235,14.07324,0,4,1,72.3931,0,0,0,885.9715,958.3646,1,0,0,7,0,5,100,10.57626,0,81.5,0,195,1,0,1.609438,5.273,0,0,0,1,0,0,81.5,9.082307,1.609438,6.865228,1 +11,5,0,1,3,530792,0,8797.235,15.07324,0,4,1,28.75507,0,0,0,910.6901,939.4452,1,0,0,3,0,5,100,10.57626,0,81.5,0,195,1,0,1.609438,5.273,0,0,0,1,0,0,81.5,9.082307,1.609438,6.84529,1 +11,5,0,1,1,530793,0,8797.235,38.87748,0,5,1,0,0,0,0,0,0,0,0,0,0,0,5,74.5,6.9,0,62.5,0,195,0,0,1.609438,5.273,0,0,0,0,1,0,62.5,9.082307,1.609438,,0 +11,5,0,1,2,530793,0,8797.235,39.87748,0,5,1,0,0,0,0,0,0,0,0,0,0,0,5,74.5,6.9,0,62.5,0,195,0,0,1.609438,5.273,0,0,0,0,1,0,62.5,9.082307,1.609438,,0 +11,5,0,1,3,530793,0,8797.235,40.87748,0,5,1,0,0,0,0,0,0,0,0,0,0,0,5,74.5,6.9,0,62.5,0,195,0,0,1.609438,5.273,0,0,0,0,1,0,62.5,9.082307,1.609438,,0 +16,5,95,0,1,530876,0,9033.794,48.28474,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,42,24.1,0,50,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,50,9.108838,.6931472,,0 +16,5,95,0,2,530876,0,9033.794,49.28474,0,12,1,13.28778,0,31.51101,0,0,44.79879,0,0,0,0,1,2,42,24.1,0,50,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,50,9.108838,.6931472,3.802181,1 +16,5,95,0,3,530876,0,9033.794,50.28474,0,12,1,154.3253,0,0,0,0,154.3253,0,0,0,2,0,2,42,24.1,0,50,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,50,9.108838,.6931472,5.039063,1 +16,5,95,0,1,530877,0,9033.794,16.63792,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,46.8,6.9,0,65.9,1000,1000,1,1,.6931472,6.907755,0,4.564348,6.959049,0,1,0,65.9,9.108838,.6931472,,0 +16,5,95,0,2,530877,0,9033.794,17.63792,1,12,1,0,.6795748,0,0,0,.6795748,0,0,0,0,0,2,46.8,6.9,0,65.9,1000,1000,1,1,.6931472,6.907755,0,4.564348,6.959049,0,1,0,65.9,9.108838,.6931472,-.386288,1 +16,5,95,0,3,530877,0,9033.794,18.63792,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,46.8,6.9,0,65.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,65.9,9.108838,.6931472,,0 +14,5,95,1,1,530994,0,6387.609,24.47091,1,14,1,27.09462,0,21.6757,0,0,48.77032,0,0,0,1,1,2,73.9,17.2,0,71.6,592,592,0,0,.6931472,6.383507,0,4.564348,6.4348,0,0,0,71.6,8.762272,.6931472,3.887122,1 +14,5,95,1,2,530994,0,6387.609,25.47091,1,14,1,41.26031,0,39.24606,0,0,80.50638,0,0,0,3,1,2,73.9,17.2,0,71.6,592,592,0,0,.6931472,6.383507,0,4.564348,6.4348,0,0,0,71.6,8.762272,.6931472,4.388336,1 +14,5,95,1,3,530994,0,6387.609,26.47091,1,14,1,0,17.26319,0,0,0,17.26319,0,0,0,0,0,2,73.9,17.2,0,71.6,592,592,0,0,.6931472,6.383507,0,4.564348,6.4348,0,0,0,71.6,8.762272,.6931472,2.848577,1 +14,5,95,1,1,530995,0,6387.609,24.94182,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,85.1,0,0,92,592,592,0,0,.6931472,6.383507,0,4.564348,6.4348,0,0,0,92,8.762272,.6931472,,0 +14,5,95,1,2,530995,0,6387.609,25.94182,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,85.1,0,0,92,592,592,0,0,.6931472,6.383507,0,4.564348,6.4348,0,0,0,92,8.762272,.6931472,,0 +14,5,95,1,3,530995,0,6387.609,26.94182,0,13,1,0,1.075778,0,0,0,1.075778,0,0,0,0,0,2,85.1,0,0,92,592,592,0,0,.6931472,6.383507,0,4.564348,6.4348,0,0,0,92,8.762272,.6931472,.0730442,1 +11,5,0,0,1,531476,0,10963.64,7.597536,1,10.96978,1,4.987531,6.354115,0,0,0,11.34165,0,0,0,1,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,9.30243,1.386294,2.428481,1 +11,5,0,0,2,531476,0,10963.64,8.597536,1,10.96978,1,101.8903,28.93038,0,0,0,130.8206,0,0,0,3,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,9.30243,1.386294,4.873827,1 +11,5,0,0,3,531476,0,10963.64,9.597536,1,10.96978,1,21.15954,12.16674,0,0,0,33.32628,0,0,0,3,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,9.30243,1.386294,3.506346,1 +11,5,0,0,4,531476,0,10963.64,10.59754,1,10.96978,1,102.8853,3.701595,0,0,0,106.5869,0,0,0,3,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,9.30243,1.386294,4.668961,1 +11,5,0,0,5,531476,0,10963.64,11.59754,1,10.96978,1,0,2.681661,0,0,0,2.681661,0,0,0,0,0,5,77.40034,10.57626,.1442925,,0,0,1,1,1.609438,0,0,0,0,0,0,0,70.68995,9.30243,1.609438,.9864364,1 +11,5,0,0,1,531477,0,10963.64,27.06366,1,10.96978,1,92.76808,25.94015,0,0,0,118.7082,0,0,0,3,0,4,77.40034,10.57626,.1442925,,0,0,0,0,1.386294,0,0,0,0,0,0,0,70.68995,9.30243,1.386294,4.776669,1 +11,5,0,0,2,531477,0,10963.64,28.06366,1,10.96978,1,51.40618,14.63808,33.56385,0,0,99.60812,0,0,0,3,0,4,77.40034,10.57626,.1442925,,0,0,0,0,1.386294,0,0,0,0,0,0,0,70.68995,9.30243,1.386294,4.601243,1 +11,5,0,0,3,531477,0,10963.64,29.06366,1,10.96978,1,40.20313,31.10453,0,0,0,71.30766,0,0,0,5,0,4,77.40034,10.57626,.1442925,,0,0,0,0,1.386294,0,0,0,0,0,0,0,70.68995,9.30243,1.386294,4.267004,1 +11,5,0,0,4,531477,0,10963.64,30.06366,1,10.96978,1,21.82992,11.1997,0,0,549.3546,582.3842,1,0,0,2,0,4,77.40034,10.57626,.1442925,,0,0,0,0,1.386294,0,0,0,0,0,0,0,70.68995,9.30243,1.386294,6.36713,1 +11,5,0,0,5,531477,0,10963.64,31.06366,1,10.96978,1,297.7509,26.6436,0,0,0,324.3945,0,0,0,4,0,5,77.40034,10.57626,.1442925,,0,0,0,0,1.609438,0,0,0,0,0,0,0,70.68995,9.30243,1.609438,5.78196,1 +11,5,0,0,1,531478,0,10963.64,6.310746,1,10.96978,1,55.3616,9.276808,0,0,0,64.6384,0,0,0,2,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,9.30243,1.386294,4.168809,1 +11,5,0,0,2,531478,0,10963.64,7.310746,1,10.96978,1,0,9.681881,0,0,0,9.681881,0,0,0,0,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,9.30243,1.386294,2.270256,1 +11,5,0,0,3,531478,0,10963.64,8.310746,1,10.96978,1,25.39145,23.46593,0,0,0,48.85738,0,0,0,4,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,9.30243,1.386294,3.888906,1 +11,5,0,0,4,531478,0,10963.64,9.310746,1,10.96978,1,11.38952,16.23007,0,0,0,27.61959,0,0,0,1,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,9.30243,1.386294,3.318525,1 +11,5,0,0,5,531478,0,10963.64,10.31075,1,10.96978,1,30.10381,8.391004,0,0,773.7024,812.1972,1,0,0,1,0,5,77.40034,10.57626,.1442925,,0,0,1,1,1.609438,0,0,0,0,0,0,0,70.68995,9.30243,1.609438,6.699743,1 +11,5,0,0,1,531479,0,8663.343,.1916496,0,14,1,97.75561,21.76559,0,0,0,119.5212,0,0,0,14,0,4,77.40034,10.57626,0,85.2,0,911.56,1,0,1.386294,6.815157,0,0,0,0,0,0,85.2,9.066972,1.386294,4.783494,1 +11,5,0,0,2,531479,0,8663.343,1.19165,0,14,1,71.00046,14.08022,0,0,0,85.08068,0,0,0,12,0,4,77.40034,10.57626,0,85.2,0,911.56,1,0,1.386294,6.815157,0,0,0,0,0,0,85.2,9.066972,1.386294,4.4436,1 +11,5,0,0,3,531479,0,8663.343,2.191649,0,14,1,90.13966,8.573847,0,0,0,98.7135,0,0,0,10,0,4,77.40034,10.57626,0,85.2,0,911.56,1,0,1.386294,6.815157,0,0,0,0,0,0,85.2,9.066972,1.386294,4.592222,1 +11,5,0,0,4,531479,0,8663.343,3.191649,0,14,1,34.92787,17.58542,13.26879,0,0,65.78208,0,0,0,5,0,4,77.40034,10.57626,0,85.2,0,911.56,1,0,1.386294,6.815157,0,0,0,0,0,0,85.2,9.066972,1.386294,4.186347,1 +11,5,0,0,5,531479,0,8663.343,4.191649,0,14,1,23.87543,10.07266,0,0,0,33.9481,0,0,0,3,0,4,77.40034,10.57626,0,85.2,0,911.56,1,0,1.386294,6.815157,0,0,0,0,0,0,85.2,9.066972,1.386294,3.524833,1 +11,5,0,1,1,531480,0,3374.194,19.28542,1,12,1,107.7307,50.96259,7.481297,0,1157.257,1323.431,2,0,0,6,0,2,69.1,6.9,1,60.2,0,0,0,0,.6931472,0,0,0,0,0,0,0,60.2,8.124207,.6931472,7.187983,1 +11,5,0,1,2,531480,0,3374.194,20.28542,1,12,1,223.1443,90.4426,0,0,0,313.5869,0,0,0,18,0,3,69.1,6.9,1,60.2,0,0,0,0,1.098612,0,0,0,0,0,0,0,60.2,8.124207,1.098612,5.748076,1 +11,5,0,1,3,531480,0,3374.194,21.28542,1,12,1,109.1832,121.7055,3.597122,44.43504,0,234.4858,0,0,3,11,0,3,69.1,6.9,1,60.2,0,0,0,0,1.098612,0,0,0,0,0,0,0,60.2,8.124207,1.098612,5.457395,1 +11,5,0,1,4,531480,0,3374.194,22.28542,1,12,1,80.48595,34.1306,4.024298,526.3857,211.8451,330.486,1,0,37,7,0,3,69.1,6.9,1,60.2,0,0,0,0,1.098612,0,0,0,0,0,0,0,60.2,8.124207,1.098612,5.800564,1 +11,5,0,1,5,531480,0,3374.194,23.28542,1,12,1,57.43945,10.58477,3.66782,84.77509,1602.699,1674.391,2,0,6,4,0,3,69.1,6.9,1,60.2,0,0,0,0,1.098612,0,0,0,0,0,0,0,60.2,8.124207,1.098612,7.423205,1 +11,5,0,1,1,531481,0,3374.194,22.74607,0,12,1,19.95012,6.758105,0,0,917.207,943.9152,1,0,0,0,4,2,55.9,10.3,0,52.3,0,0,0,0,.6931472,0,0,0,0,0,0,0,52.3,8.124207,.6931472,6.850036,1 +11,5,0,1,2,531481,0,3374.194,23.74607,0,12,1,165.2835,18.4094,0,0,0,183.6929,0,0,0,7,0,3,55.9,10.3,0,52.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,52.3,8.124207,1.098612,5.213265,1 +11,5,0,1,3,531481,0,3374.194,24.74607,0,12,1,38.93356,6.271688,30.04655,29.62336,0,75.2518,0,0,2,5,0,3,55.9,10.3,0,52.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,52.3,8.124207,1.098612,4.32084,1 +11,5,0,1,4,531481,0,3374.194,25.74607,0,12,1,129.8405,5.846621,0,86.37054,0,135.6872,0,0,7,2,0,3,55.9,10.3,0,52.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,52.3,8.124207,1.098612,4.910352,1 +11,5,0,1,5,531481,0,3374.194,26.74607,0,12,1,13.84083,0,21.71626,0,0,35.55709,0,0,0,1,0,3,55.9,10.3,0,52.3,0,0,0,0,1.098612,0,0,0,0,0,0,0,52.3,8.124207,1.098612,3.57114,1 +15,5,95,1,1,531486,1,1874.04,14.91581,0,5,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,3.4,0,78.4,288,0,1,0,.6931472,0,0,4.564348,5.714254,0,0,0,78.4,7.536385,.6931472,,0 +15,5,95,1,2,531486,1,1874.04,15.91581,0,5,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,3.4,0,78.4,288,0,1,0,.6931472,0,0,4.564348,5.714254,0,0,0,78.4,7.536385,.6931472,,0 +15,5,95,1,3,531486,1,1874.04,16.91581,0,5,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,3.4,0,78.4,288,0,1,0,.6931472,0,0,4.564348,5.714254,0,0,0,78.4,7.536385,.6931472,,0 +10,5,50,1,1,531491,0,10283.87,25.00479,0,14,1,30.72349,1.838454,32.98315,0,0,65.5451,0,0,0,1,0,2,81.4,20.7,0,60.2,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,60.2,9.238429,.6931472,4.182738,1 +10,5,50,1,2,531491,0,10283.87,26.00479,0,14,1,9.178522,0,0,0,0,9.178522,0,0,0,1,0,2,81.4,20.7,0,60.2,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,0,60.2,9.238429,.6931472,2.216866,1 +10,5,50,1,3,531491,0,10283.87,27.00479,0,14,1,0,5.061001,34.56458,0,0,39.62558,0,0,0,0,0,3,81.4,20.7,0,60.2,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,60.2,9.238429,1.098612,3.679475,1 +10,5,50,1,4,531491,0,10283.87,28.00479,0,14,1,7.555724,2.474499,13.75142,0,0,23.78164,0,0,0,1,0,3,81.4,20.7,0,60.2,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,60.2,9.238429,1.098612,3.168914,1 +10,5,50,1,5,531491,0,10283.87,29.00479,0,14,1,10.2916,0,30.06175,0,0,40.35334,0,0,0,0,1,3,81.4,20.7,0,60.2,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,60.2,9.238429,1.098612,3.697674,1 +11,5,0,1,1,531496,1,602.3461,.3312799,0,12,1,9.910803,5.193261,0,0,0,15.10406,0,0,0,2,0,5,77.40034,10.57626,0,77.8,0,0,1,0,1.609438,0,0,0,0,0,0,0,77.8,6.402491,1.609438,2.714964,1 +11,5,0,1,2,531496,1,602.3461,1.33128,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,77.8,0,0,1,0,1.609438,0,0,0,0,0,0,0,77.8,6.402491,1.609438,,0 +11,5,0,1,3,531496,1,602.3461,2.33128,0,12,1,0,0,0,0,352.9659,352.9659,1,0,0,0,0,6,77.40034,10.57626,0,77.8,0,0,1,0,1.791759,0,0,0,0,0,0,0,77.8,6.402491,1.791759,5.866372,1 +11,5,0,1,4,531496,1,602.3461,3.33128,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,77.8,0,0,1,0,1.791759,0,0,0,0,0,0,0,77.8,6.402491,1.791759,,0 +11,5,0,1,5,531496,1,602.3461,4.33128,0,12,1,450.4288,0,0,0,0,450.4288,0,0,0,3,0,6,77.40034,10.57626,0,77.8,0,0,1,0,1.791759,0,0,0,0,0,0,0,77.8,6.402491,1.791759,6.1102,1 +13,5,0,1,1,531520,1,2422.939,8.81588,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,95,10.57626,0,66.7,450,0,1,1,1.098612,0,1,4.564348,6.160541,0,0,0,66.7,7.793149,1.098612,,0 +13,5,0,1,2,531520,1,2422.939,9.81588,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,95,10.57626,0,66.7,450,0,1,1,1.098612,0,1,4.564348,6.160541,0,0,0,66.7,7.793149,1.098612,,0 +13,5,0,1,3,531520,1,2422.939,10.81588,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,95,10.57626,0,66.7,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,66.7,7.793149,1.386294,,0 +13,5,0,0,1,531524,0,13794.16,27.98083,0,10.96978,1,11.42615,0,0,0,0,11.42615,0,0,0,1,0,4,74.5,3.4,0,87.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,87.5,9.532073,1.386294,2.435905,1 +13,5,0,0,2,531524,0,13794.16,28.98083,0,10.96978,1,0,0,0,0,0,0,0,0,0,0,0,4,74.5,3.4,0,87.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,87.5,9.532073,1.386294,,0 +13,5,0,0,3,531524,0,13794.16,29.98083,0,10.96978,1,5.190311,0,0,0,0,5.190311,0,0,0,1,0,4,74.5,3.4,0,87.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,87.5,9.532073,1.386294,1.646794,1 +13,5,0,0,1,531542,0,4835.125,32.31759,1,13,1,30.89293,0,0,0,0,30.89293,0,0,0,2,0,2,84,17.2,0,73.9,300,394.56,0,0,.6931472,5.977771,1,4.564348,5.755076,1,0,0,73.9,8.48387,.6931472,3.430527,1 +13,5,0,0,2,531542,0,4835.125,33.31759,1,13,1,75.55049,0,0,38.72437,0,75.55049,0,0,6,5,0,2,84,17.2,0,73.9,300,394.56,0,0,.6931472,5.977771,1,4.564348,5.755076,1,0,0,73.9,8.48387,.6931472,4.324801,1 +13,5,0,0,3,531542,0,4835.125,34.31759,1,13,1,156.0554,0,0,0,444.6367,600.692,1,0,0,2,0,2,84,17.2,0,73.9,300,394.56,0,0,.6931472,5.977771,1,4.564348,5.755076,1,0,0,73.9,8.48387,.6931472,6.398082,1 +13,5,0,0,1,531543,0,4835.125,28.23545,0,14,1,0,0,0,0,0,0,0,0,0,0,0,2,78.7,3.4,1,76.1,300,394.56,0,0,.6931472,5.977771,1,4.564348,5.755076,1,0,0,76.1,8.48387,.6931472,,0 +13,5,0,0,2,531543,0,4835.125,29.23545,0,14,1,11.38952,0,25.05695,0,0,36.44647,0,0,0,0,1,2,78.7,3.4,1,76.1,300,394.56,0,0,.6931472,5.977771,1,4.564348,5.755076,1,0,0,76.1,8.48387,.6931472,3.595845,1 +13,5,0,0,3,531543,0,4835.125,30.23545,0,14,1,13.14879,0,0,0,0,13.14879,0,0,0,0,0,2,78.7,3.4,1,76.1,300,394.56,0,0,.6931472,5.977771,1,4.564348,5.755076,1,0,0,76.1,8.48387,.6931472,2.57633,1 +11,5,0,0,1,531544,0,14134.67,13.8371,1,12,1,16.82793,0,22.75137,0,0,39.5793,0,0,0,2,0,5,90,10.57626,0,85.2,0,0,1,1,1.609438,0,0,0,0,0,0,0,85.2,9.556457,1.609438,3.678306,1 +11,5,0,0,2,531544,0,14134.67,14.8371,1,12,1,23.42274,0,5.500566,0,0,28.92331,0,0,0,2,0,5,90,10.57626,0,85.2,0,0,1,1,1.609438,0,0,0,0,0,0,0,85.2,9.556457,1.609438,3.364648,1 +11,5,0,0,3,531544,0,14134.67,15.8371,1,12,1,13.72213,0,9.989708,0,0,23.71184,0,0,0,1,0,5,90,10.57626,0,85.2,0,0,1,1,1.609438,0,0,0,0,0,0,0,85.2,9.556457,1.609438,3.165974,1 +11,5,0,0,1,531545,0,14134.67,49.14442,0,18,1,16.82793,0,24.939,0,0,41.76693,0,0,0,1,0,5,70.7,3.4,0,71.6,0,0,0,0,1.609438,0,0,0,0,0,0,0,71.6,9.556457,1.609438,3.732105,1 +11,5,0,0,2,531545,0,14134.67,50.14442,0,18,1,0,0,0,0,0,0,0,0,0,0,0,5,70.7,3.4,0,71.6,0,0,0,0,1.609438,0,0,0,0,0,0,0,71.6,9.556457,1.609438,,0 +11,5,0,0,3,531545,0,14134.67,51.14442,0,18,1,0,0,0,0,0,0,0,0,0,0,0,5,70.7,3.4,0,71.6,0,0,0,0,1.609438,0,0,0,0,0,0,0,71.6,9.556457,1.609438,,0 +11,5,0,0,1,531546,0,14134.67,9.182752,0,12,1,5.679428,0,0,0,0,5.679428,0,0,0,1,0,5,83.3,10.57626,0,92.6,0,0,1,0,1.609438,0,0,0,0,0,0,0,92.6,9.556457,1.609438,1.736851,1 +11,5,0,0,2,531546,0,14134.67,10.18275,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,83.3,10.57626,0,92.6,0,0,1,0,1.609438,0,0,0,0,0,0,0,92.6,9.556457,1.609438,,0 +11,5,0,0,3,531546,0,14134.67,11.18275,0,12,1,13.72213,3.204117,0,0,0,16.92624,0,0,0,1,0,5,83.3,10.57626,0,92.6,0,0,1,0,1.609438,0,0,0,0,0,0,0,92.6,9.556457,1.609438,2.828865,1 +11,5,0,0,1,531547,0,14134.67,10.39014,1,12,1,11.14851,0,0,0,0,11.14851,0,0,0,2,0,5,91.7,10.57626,0,88.9,0,0,1,1,1.609438,0,0,0,0,0,0,0,88.9,9.556457,1.609438,2.411305,1 +11,5,0,0,2,531547,0,14134.67,11.39014,1,12,1,9.82244,2.334718,0,0,0,12.15716,0,0,0,2,0,5,91.7,10.57626,0,88.9,0,0,1,1,1.609438,0,0,0,0,0,0,0,88.9,9.556457,1.609438,2.497918,1 +11,5,0,0,3,531547,0,14134.67,12.39014,1,12,1,27.44425,10.69983,0,0,0,38.14408,0,0,0,2,0,5,91.7,10.57626,0,88.9,0,0,1,1,1.609438,0,0,0,0,0,0,0,88.9,9.556457,1.609438,3.641371,1 +11,5,0,0,1,531548,0,14134.67,39.36208,1,12,1,25.45225,3.920909,0,0,0,29.37316,0,0,0,2,0,5,91,20.7,0,54.5,0,0,0,0,1.609438,0,0,0,0,1,0,0,54.5,9.556457,1.609438,3.380081,1 +11,5,0,0,2,531548,0,14134.67,40.36208,1,12,1,11.71137,0,23.94787,0,0,35.65924,0,0,0,3,0,5,91,20.7,0,54.5,0,0,0,0,1.609438,0,0,0,0,1,0,0,54.5,9.556457,1.609438,3.574008,1 +11,5,0,0,3,531548,0,14134.67,41.36208,1,12,1,56.26072,5.15952,17.09091,0,0,78.51115,0,0,0,7,0,5,91,20.7,0,54.5,0,0,0,0,1.609438,0,0,0,0,1,0,0,54.5,9.556457,1.609438,4.363241,1 +18,5,25,0,1,531553,0,10407.07,4.25462,1,16,1,18.93143,10.26504,0,0,0,29.19647,0,0,0,3,0,4,77.40034,10.57626,0,92.6,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.250337,1.386294,3.374048,1 +18,5,25,0,2,531553,0,10407.07,5.25462,1,16,1,65.73479,26.5017,0,0,0,92.2365,0,0,0,10,0,4,77.40034,10.57626,0,92.6,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.250337,1.386294,4.524356,1 +18,5,25,0,3,531553,0,10407.07,6.25462,1,16,1,53.17324,4.504288,2.360206,0,0,60.03773,0,0,0,4,0,4,77.40034,10.57626,0,92.6,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.250337,1.386294,4.094973,1 +18,5,25,0,1,531554,0,10407.07,2.527036,1,16,1,87.50526,30.14304,0,0,236.4325,354.0808,1,0,0,10,0,4,77.40034,10.57626,0,81.5,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,81.5,9.250337,1.386294,5.869525,1 +18,5,25,0,2,531554,0,10407.07,3.527036,1,16,1,11.33358,5.640347,0,0,0,16.97393,0,0,0,2,0,4,77.40034,10.57626,0,81.5,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,81.5,9.250337,1.386294,2.831679,1 +18,5,25,0,3,531554,0,10407.07,4.527036,1,16,1,12.34991,1.385935,0,0,0,13.73585,0,0,0,2,0,4,77.40034,10.57626,0,81.5,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,81.5,9.250337,1.386294,2.620009,1 +18,5,25,0,1,531555,0,10407.07,29.14168,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,83.5,6.9,0,86.4,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.250337,1.386294,,0 +18,5,25,0,2,531555,0,10407.07,30.14168,1,16,1,27.57839,13.05251,0,0,0,40.6309,0,0,0,3,0,4,83.5,6.9,0,86.4,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.250337,1.386294,3.704529,1 +18,5,25,0,3,531555,0,10407.07,31.14168,1,16,1,43.56775,14.10292,0,0,0,57.67067,0,0,0,4,0,4,83.5,6.9,0,86.4,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,86.4,9.250337,1.386294,4.054749,1 +18,5,25,0,1,531556,0,10407.07,28.47365,0,14,1,6.310475,5.023139,0,0,0,11.33361,0,0,0,1,0,4,78.2,10.3,0,77.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,77.3,9.250337,1.386294,2.427773,1 +18,5,25,0,2,531556,0,10407.07,29.47365,0,14,1,55.91235,3.891198,24.5561,0,0,84.35965,0,0,0,4,1,4,78.2,10.3,0,77.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,77.3,9.250337,1.386294,4.435089,1 +18,5,25,0,3,531556,0,10407.07,30.47365,0,14,1,17.15266,1.629503,0,0,0,18.78216,0,0,0,0,1,4,78.2,10.3,0,77.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,77.3,9.250337,1.386294,2.932908,1 +10,5,50,0,1,531557,0,9566.82,31.2553,1,12,1,15.90812,0,0,0,0,15.90812,0,0,0,0,0,4,87.8,24.1,0,69.3,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.166161,1.386294,2.76683,1 +10,5,50,0,2,531557,0,9566.82,32.25531,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,87.8,24.1,0,69.3,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.166161,1.386294,,0 +10,5,50,0,3,531557,0,9566.82,33.25531,1,12,1,69.68641,0,0,0,0,69.68641,0,0,0,1,0,4,87.8,24.1,0,69.3,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,69.3,9.166161,1.386294,4.244005,1 +10,5,50,0,1,531558,0,9566.82,11.82204,1,12,1,25.94641,0,0,0,0,25.94641,0,0,0,1,0,4,56.7,10.57626,0,74.1,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,74.1,9.166161,1.386294,3.256033,1 +10,5,50,0,2,531558,0,9566.82,12.82204,1,12,1,48.0916,0,0,0,0,48.0916,0,0,0,2,0,4,56.7,10.57626,0,74.1,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,74.1,9.166161,1.386294,3.873108,1 +10,5,50,0,3,531558,0,9566.82,13.82204,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,56.7,10.57626,0,74.1,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,0,0,74.1,9.166161,1.386294,,0 +10,5,50,0,1,531559,0,9566.82,37.28679,0,7,1,57.42237,23.81965,0,0,0,81.24203,0,0,0,2,0,4,65.4,13.8,0,78.4,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.4,9.166161,1.386294,4.397433,1 +10,5,50,0,2,531559,0,9566.82,38.28679,0,7,1,38.54962,6.744275,0,0,0,45.29389,0,0,0,5,0,4,65.4,13.8,0,78.4,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.4,9.166161,1.386294,3.813172,1 +10,5,50,0,3,531559,0,9566.82,39.28679,0,7,1,26.91638,0,0,0,0,26.91638,0,0,0,1,0,4,65.4,13.8,0,78.4,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,78.4,9.166161,1.386294,3.292735,1 +10,5,50,0,1,531560,0,9566.82,9.174538,0,12,1,36.96299,3.441089,4.155678,0,0,44.55976,0,0,0,1,0,4,73.3,10.57626,1,77.8,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,77.8,9.166161,1.386294,3.796831,1 +10,5,50,0,2,531560,0,9566.82,10.17454,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,73.3,10.57626,1,77.8,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,77.8,9.166161,1.386294,,0 +10,5,50,0,3,531560,0,9566.82,11.17454,0,12,1,0,0,0,0,940.1742,940.1742,1,0,0,0,0,4,73.3,10.57626,1,77.8,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,77.8,9.166161,1.386294,6.846065,1 +11,5,0,1,1,531578,0,9454.173,13.04312,0,12,1,6.310475,2.806058,0,0,0,9.116533,0,0,0,1,0,7,86.7,10.57626,0,77.8,0,537.86,1,0,1.94591,6.287598,0,0,0,0,0,0,77.8,9.154317,1.94591,2.21009,1 +11,5,0,1,2,531578,0,9454.173,14.04312,0,12,1,123.1583,11.90782,0,0,0,135.0661,0,0,0,7,1,7,86.7,10.57626,0,77.8,0,537.86,1,0,1.94591,6.287598,0,0,0,0,0,0,77.8,9.154317,1.94591,4.905765,1 +11,5,0,1,3,531578,0,9454.173,15.04312,0,12,1,81.98971,83.53345,0,0,0,165.5232,0,0,0,7,1,7,86.7,10.57626,0,77.8,0,537.86,1,0,1.94591,6.287598,0,0,0,0,0,0,77.8,9.154317,1.94591,5.109111,1 +11,5,0,1,1,531579,0,9454.173,12.01917,0,12,1,97.18132,0,24.8212,0,0,122.0025,0,0,0,1,1,7,80,10.57626,0,51.9,0,537.86,1,0,1.94591,6.287598,0,0,0,0,1,0,51.9,9.154317,1.94591,4.804042,1 +11,5,0,1,2,531579,0,9454.173,13.01917,0,12,1,51.75671,9.255761,13.22252,0,0,74.23499,0,0,0,3,1,7,80,10.57626,0,51.9,0,537.86,1,0,1.94591,6.287598,0,0,0,0,1,0,51.9,9.154317,1.94591,4.307236,1 +11,5,0,1,3,531579,0,9454.173,14.01917,0,12,1,168.4391,3.087479,0,0,0,171.5266,0,0,0,7,0,7,80,10.57626,0,51.9,0,537.86,1,0,1.94591,6.287598,0,0,0,0,1,0,51.9,9.154317,1.94591,5.144738,1 +11,5,0,1,1,531580,0,9454.173,10.85284,0,12,1,25.2419,1.615482,0,0,0,26.85738,0,0,0,1,1,7,88.3,10.57626,0,74.1,0,537.86,1,0,1.94591,6.287598,0,0,0,0,1,0,74.1,9.154317,1.94591,3.290541,1 +11,5,0,1,2,531580,0,9454.173,11.85284,0,12,1,94.82433,17.75595,0,0,0,112.5803,0,0,0,8,0,7,88.3,10.57626,0,74.1,0,537.86,1,0,1.94591,6.287598,0,0,0,0,1,0,74.1,9.154317,1.94591,4.723667,1 +11,5,0,1,3,531580,0,9454.173,12.85284,0,12,1,42.53859,27.18696,0,0,0,69.72556,0,0,0,5,1,7,88.3,10.57626,0,74.1,0,537.86,1,0,1.94591,6.287598,0,0,0,0,1,0,74.1,9.154317,1.94591,4.244567,1 +11,5,0,1,1,531581,0,9454.173,38.72416,0,13,1,21.98149,2.267564,0,0,0,24.24905,0,0,0,1,0,7,92,6.9,0,77.3,0,537.86,0,0,1.94591,6.287598,0,0,0,0,0,0,77.3,9.154317,1.94591,3.188378,1 +11,5,0,1,2,531581,0,9454.173,39.72416,0,13,1,43.44541,26.72837,35.13411,0,0,105.3079,0,0,0,2,1,7,92,6.9,0,77.3,0,537.86,0,0,1.94591,6.287598,0,0,0,0,0,0,77.3,9.154317,1.94591,4.656888,1 +11,5,0,1,3,531581,0,9454.173,40.72416,0,13,1,51.11492,28.98799,22.29846,0,0,102.4014,0,0,0,5,1,7,92,6.9,0,77.3,0,537.86,0,0,1.94591,6.287598,0,0,0,0,0,0,77.3,9.154317,1.94591,4.6289,1 +11,5,0,1,1,531590,0,9454.173,33.11704,1,12,1,4.206984,9.402608,0,0,0,13.60959,0,0,0,1,0,7,56.4,10.3,0,72.7,0,537.86,0,0,1.94591,6.287598,0,0,0,0,1,0,72.7,9.154317,1.94591,2.610775,1 +11,5,0,1,2,531590,0,9454.173,34.11704,1,12,1,103.2301,14.22743,0,0,0,117.4575,0,0,0,7,0,7,56.4,10.3,0,72.7,0,537.86,0,0,1.94591,6.287598,0,0,0,0,1,0,72.7,9.154317,1.94591,4.766077,1 +11,5,0,1,3,531590,0,9454.173,35.11704,1,12,1,98.79932,64.06518,4.288165,0,2347.856,2515.009,1,0,0,9,1,7,56.4,10.3,0,72.7,0,537.86,0,0,1.94591,6.287598,0,0,0,0,1,0,72.7,9.154317,1.94591,7.830031,1 +11,5,0,1,1,531591,0,9454.173,9.004791,0,12,1,40.28187,5.212453,0,0,0,45.49432,0,0,0,2,0,7,88.3,10.57626,0,92.6,0,537.86,1,0,1.94591,6.287598,0,0,0,0,0,0,92.6,9.154317,1.94591,3.817587,1 +11,5,0,1,2,531591,0,9454.173,10.00479,0,12,1,67.62373,8.783528,0,0,0,76.40726,0,0,0,3,0,7,88.3,10.57626,0,92.6,0,537.86,1,0,1.94591,6.287598,0,0,0,0,0,0,92.6,9.154317,1.94591,4.336078,1 +11,5,0,1,3,531591,0,9454.173,11.00479,0,12,1,41.50943,6.861063,0,0,0,48.3705,0,0,0,3,0,7,88.3,10.57626,0,92.6,0,537.86,1,0,1.94591,6.287598,0,0,0,0,0,0,92.6,9.154317,1.94591,3.87889,1 +11,5,0,1,1,531592,0,9454.173,14.32717,0,12,1,110.223,5.363904,284.3921,0,2814.893,3214.872,1,0,0,6,0,7,92,3.4,0,85.2,0,537.86,1,0,1.94591,6.287598,0,0,0,0,0,0,85.2,9.154317,1.94591,8.075542,1 +11,5,0,1,2,531592,0,9454.173,15.32717,0,12,1,220.2493,1.794484,9.369097,0,1444.061,1675.474,1,0,0,6,28,7,92,3.4,0,85.2,0,537.86,1,0,1.94591,6.287598,0,0,0,0,0,0,85.2,9.154317,1.94591,7.423851,1 +11,5,0,1,3,531592,0,9454.173,16.32717,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,92,3.4,0,85.2,0,537.86,1,0,1.94591,6.287598,0,0,0,0,0,0,85.2,9.154317,1.94591,,0 +11,5,0,1,1,531596,1,6674.895,2.491444,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,96.3,0,0,1,1,1.098612,0,0,0,0,0,0,0,96.3,8.806258,1.098612,,0 +11,5,0,1,2,531596,1,6674.895,3.491444,1,9,1,10.68702,1.48855,0,0,0,12.17557,0,0,0,1,0,3,77.40034,10.57626,0,96.3,0,0,1,1,1.098612,0,0,0,0,0,0,0,96.3,8.806258,1.098612,2.499432,1 +11,5,0,1,3,531596,1,6674.895,4.491444,1,9,1,67.59582,12.14286,0,0,0,79.73868,0,0,0,3,0,4,77.40034,10.57626,0,96.3,0,0,1,1,1.386294,0,0,0,0,0,0,0,96.3,8.806258,1.386294,4.378755,1 +11,5,0,1,1,531597,0,12254.48,32.75565,0,14,1,6.252605,0,0,0,0,6.252605,0,0,0,1,0,2,88.3,6.9,0,95.5,0,624.78,0,0,.6931472,6.437399,0,0,0,0,0,0,95.5,9.413729,.6931472,1.832998,1 +14,5,95,0,1,531605,0,11026.98,43.30185,0,20,1,17.19902,0,0,0,0,17.19902,0,0,0,2,0,2,86.7,13.8,0,87.5,850,850,0,0,.6931472,6.745236,0,4.564348,6.79653,0,0,0,87.5,9.308191,.6931472,2.844852,1 +14,5,95,0,2,531605,0,11026.98,44.30185,0,20,1,11.39471,0,15.49681,0,0,26.89152,0,0,0,1,0,2,86.7,13.8,0,87.5,850,850,0,0,.6931472,6.745236,0,4.564348,6.79653,0,0,0,87.5,9.308191,.6931472,3.291811,1 +11,5,0,1,1,531619,0,2306.708,21.54415,1,9,1,15.73798,1.38239,0,0,0,17.12037,0,0,0,1,0,1,59.6,3.4,0,59.1,0,0,0,0,0,0,0,0,0,0,0,0,59.1,7.74401,0,2.840269,1 +11,5,0,1,2,531619,0,2306.708,22.54415,1,9,1,11.45038,5.568702,0,0,0,17.01908,0,0,0,1,0,1,59.6,3.4,0,59.1,0,0,0,0,0,0,0,0,0,0,0,0,59.1,7.74401,0,2.834335,1 +11,5,0,1,3,531619,0,2306.708,23.54415,1,9,1,0,0,0,0,0,0,0,0,0,0,0,1,59.6,3.4,0,59.1,0,0,0,0,0,0,0,0,0,0,0,0,59.1,7.74401,0,,0 +11,5,0,0,1,531634,1,5341.014,2.116359,1,13,1,7.993269,0,0,0,0,7.993269,0,0,0,0,0,4,77.40034,10.57626,0,59.3,0,592.32,1,1,1.386294,6.384047,0,0,0,0,0,0,59.3,8.583358,1.386294,2.0786,1 +11,5,0,0,2,531634,1,5341.014,3.116359,1,13,1,33.62297,1.983377,0,0,0,35.60635,0,0,0,2,0,4,77.40034,10.57626,0,59.3,0,592.32,1,1,1.386294,6.384047,0,0,0,0,0,0,59.3,8.583358,1.386294,3.572524,1 +11,5,0,0,3,531634,1,5341.014,4.116359,1,13,1,34.30532,0,0,0,0,34.30532,0,0,0,1,1,4,77.40034,10.57626,0,59.3,0,592.32,1,1,1.386294,6.384047,0,0,0,0,0,0,59.3,8.583358,1.386294,3.5353,1 +11,5,0,0,2,531637,0,6637.537,.6605065,0,9,1,70.2157,24.13492,0,0,0,94.35062,0,0,0,10,0,4,77.40034,10.57626,.1442925,,0,357.64,1,0,1.386294,5.879527,0,0,0,0,0,0,70.68995,8.800647,1.386294,4.547018,1 +11,5,0,0,3,531637,0,6637.537,1.660506,0,9,1,59.31847,2.393774,0,0,447.8334,509.5457,1,0,0,7,0,4,77.40034,10.57626,.1442925,,0,357.64,1,0,1.386294,5.879527,0,0,0,0,0,0,70.68995,8.800647,1.386294,6.23352,1 +11,5,0,0,4,531637,0,6637.537,2.660506,0,9,1,13.22252,1.016245,0,0,0,14.23876,0,0,0,1,0,4,77.40034,10.57626,.1442925,,0,357.64,1,0,1.386294,5.879527,0,0,0,0,0,0,70.68995,8.800647,1.386294,2.655968,1 +11,5,0,0,5,531637,0,6637.537,3.660506,0,9,1,9.605489,1.588336,0,0,0,11.19382,0,0,0,1,0,4,77.40034,10.57626,.1442925,,0,357.64,1,0,1.386294,5.879527,0,0,0,0,0,0,70.68995,8.800647,1.386294,2.415362,1 +19,5,25,0,1,531648,0,12647.21,34.38467,0,16,1,37.51563,0,0,0,0,37.51563,0,0,0,4,0,2,80.3,3.4,0,79.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,79.5,9.445271,.6931472,3.624758,1 +19,5,25,0,2,531648,0,12647.21,35.38467,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,80.3,3.4,0,79.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,79.5,9.445271,.6931472,,0 +19,5,25,0,3,531648,0,12647.21,36.38467,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,80.3,3.4,0,79.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,79.5,9.445271,.6931472,,0 +14,5,95,0,1,531650,1,3421.403,2.001369,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,55.6,142.55,142.55,1,1,1.098612,4.959693,0,4.564348,5.010986,0,0,0,55.6,8.138098,1.098612,,0 +14,5,95,0,2,531650,1,3421.403,3.001369,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,55.6,142.55,142.55,1,1,1.098612,4.959693,0,4.564348,5.010986,0,0,0,55.6,8.138098,1.098612,,0 +14,5,95,0,3,531650,1,3421.403,4.001369,1,12,1,31.35888,0,0,0,0,31.35888,0,0,0,0,0,3,77.40034,10.57626,0,55.6,142.55,142.55,1,1,1.098612,4.959693,0,4.564348,5.010986,0,0,0,55.6,8.138098,1.098612,3.445498,1 +11,5,0,0,1,531653,1,3942.652,1.94935,0,13,1,30.41259,0,0,0,0,30.41259,0,0,0,4,0,4,77.40034,10.57626,0,85.2,0,0,1,0,1.386294,0,0,0,0,0,0,0,85.2,8.279862,1.386294,3.414857,1 +11,5,0,0,2,531653,1,3942.652,2.94935,0,13,1,0,1.133588,0,0,0,1.133588,0,0,0,0,0,5,77.40034,10.57626,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,8.279862,1.609438,.1253877,1 +11,5,0,0,3,531653,1,3942.652,3.94935,0,13,1,10.45296,0,0,0,0,10.45296,0,0,0,0,1,6,77.40034,10.57626,0,85.2,0,0,1,0,1.791759,0,0,0,0,0,0,0,85.2,8.279862,1.791759,2.346885,1 +13,5,0,0,1,531654,.4758801,13789.04,34.83915,1,10.96978,1,45.01472,36.5671,0,0,0,81.58183,0,0,0,3,0,3,77.1,6.9,1,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,67,9.531702,1.098612,4.401607,1 +13,5,0,0,2,531654,.4758801,13789.04,35.83915,1,10.96978,1,60.44579,7.370608,0,0,626.7473,694.5637,1,0,0,5,0,3,77.1,6.9,1,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,67,9.531702,1.098612,6.543284,1 +13,5,0,0,3,531654,.4758801,13789.04,36.83915,1,10.96978,1,529.6569,32.53516,0,0,579.0737,1141.266,1,0,0,8,0,4,77.1,6.9,1,67,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,67,9.531702,1.386294,7.039893,1 +13,5,0,0,2,531663,0,199.4135,.6386037,0,12,1,98.90611,20.07748,0,0,0,118.9836,0,0,0,11,0,2,77.40034,10.57626,.1442925,,150,150,1,0,.6931472,5.010635,1,4.564348,5.061929,0,0,0,70.68995,5.300383,.6931472,4.778986,1 +13,5,0,0,3,531663,0,199.4135,1.638604,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,.1442925,,150,150,1,0,.6931472,5.010635,1,4.564348,5.061929,0,0,0,70.68995,5.300383,.6931472,,0 +13,5,0,0,4,531663,0,199.4135,2.638604,0,12,1,5.626407,0,0,0,0,5.626407,0,0,0,1,0,2,77.40034,10.57626,.1442925,,150,150,1,0,.6931472,5.010635,1,4.564348,5.061929,0,0,0,70.68995,5.300383,.6931472,1.727471,1 +13,5,0,0,5,531663,0,199.4135,3.638604,0,12,1,16.32273,0,0,0,0,16.32273,0,0,0,0,0,2,77.40034,10.57626,.1442925,,150,150,1,0,.6931472,5.010635,1,4.564348,5.061929,0,0,0,70.68995,5.300383,.6931472,2.792559,1 +14,5,95,0,1,531667,0,6674.895,1.804244,0,8,1,18.83199,0,0,0,0,18.83199,0,0,0,1,0,3,77.40034,10.57626,.1442925,,313.5,396.24,1,0,1.098612,5.98202,0,4.564348,5.799093,0,0,0,70.68995,8.806258,1.098612,2.935557,1 +14,5,95,0,2,531667,0,6674.895,2.804244,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,313.5,396.24,1,0,1.098612,5.98202,0,4.564348,5.799093,0,0,0,70.68995,8.806258,1.098612,,0 +14,5,95,0,3,531667,0,6674.895,3.804244,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,313.5,396.24,1,0,1.098612,5.98202,0,4.564348,5.799093,0,0,0,70.68995,8.806258,1.098612,,0 +16,5,95,0,1,531673,0,7100.871,1.568789,0,15,1,62.26336,0,0,0,0,62.26336,0,0,0,5,0,3,77.40034,10.57626,0,92.6,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,92.6,8.868114,1.098612,4.131373,1 +16,5,95,0,2,531673,0,7100.871,2.568789,0,15,1,85.37968,24.62788,0,0,258.7835,368.7911,1,0,0,12,0,3,77.40034,10.57626,0,92.6,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,92.6,8.868114,1.098612,5.91023,1 +16,5,95,0,3,531673,0,7100.871,3.568789,0,15,1,238.422,5.516295,0,0,0,243.9382,0,0,0,3,17,3,77.40034,10.57626,0,92.6,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,92.6,8.868114,1.098612,5.496915,1 +11,5,0,0,2,531682,0,14946.04,.4469541,0,16,1,86.27811,27.51262,0,0,0,113.7907,0,0,0,11,0,4,77.40034,10.57626,.1442925,,0,469.68,1,0,1.386294,6.152051,0,0,0,0,0,0,70.68995,9.612268,1.386294,4.734361,1 +11,5,0,0,3,531682,0,14946.04,1.446954,0,16,1,128.7337,29.84855,0,0,0,158.5822,0,0,0,12,0,4,77.40034,10.57626,.1442925,,0,469.68,1,0,1.386294,6.152051,0,0,0,0,0,0,70.68995,9.612268,1.386294,5.066273,1 +11,5,0,0,4,531682,0,14946.04,2.446954,0,16,1,214.2048,9.217982,0,0,0,223.4227,0,0,0,5,14,4,77.40034,10.57626,.1442925,,0,469.68,1,0,1.386294,6.152051,0,0,0,0,0,0,70.68995,9.612268,1.386294,5.409066,1 +11,5,0,0,5,531682,0,14946.04,3.446954,0,16,1,393.825,11.01887,0,0,0,404.8439,0,0,0,4,34,4,77.40034,10.57626,.1442925,,0,469.68,1,0,1.386294,6.152051,0,0,0,0,0,0,70.68995,9.612268,1.386294,6.003501,1 +11,5,0,0,2,531683,0,3374.194,.3292266,0,12,1,242.1392,62.98294,11.503,0,0,316.6252,0,0,0,28,0,3,77.40034,10.57626,.1442925,,0,0,1,0,1.098612,0,0,0,0,0,0,0,70.68995,8.124207,1.098612,5.757719,1 +11,5,0,0,3,531683,0,3374.194,1.329227,0,12,1,78.29031,40.28354,16.15319,0,0,134.727,0,0,0,11,0,3,77.40034,10.57626,.1442925,,0,0,1,0,1.098612,0,0,0,0,0,0,0,70.68995,8.124207,1.098612,4.903251,1 +11,5,0,0,4,531683,0,3374.194,2.329226,0,12,1,39.10402,12.25513,13.42065,0,0,64.7798,0,0,0,5,0,3,77.40034,10.57626,.1442925,,0,0,1,0,1.098612,0,0,0,0,0,0,0,70.68995,8.124207,1.098612,4.170994,1 +11,5,0,0,5,531683,0,3374.194,3.329226,0,12,1,9.688581,0,0,0,0,9.688581,0,0,0,1,0,3,77.40034,10.57626,.1442925,,0,0,1,0,1.098612,0,0,0,0,0,0,0,70.68995,8.124207,1.098612,2.270948,1 +5,5,25,0,2,531688,1,0,.8083504,0,6,1,1.823154,0,0,0,0,1.823154,0,0,0,0,1,9,77.40034,10.57626,.1442925,,333.75,333.75,1,0,2.197225,5.810392,0,3.258096,7.196687,0,0,0,70.68995,0,2.197225,.600568,1 +5,5,25,0,3,531688,1,0,1.80835,0,6,1,9.587328,0,0,0,0,9.587328,0,0,0,1,0,9,77.40034,10.57626,.1442925,,333.75,333.75,1,0,2.197225,5.810392,0,3.258096,7.196687,0,0,0,70.68995,0,2.197225,2.260442,1 +5,5,25,0,4,531688,1,0,2.808351,0,6,1,11.25281,0,0,0,0,11.25281,0,0,0,0,0,9,77.40034,10.57626,.1442925,,333.75,333.75,1,0,2.197225,5.810392,0,3.258096,7.196687,0,0,0,70.68995,0,2.197225,2.420618,1 +5,5,25,0,5,531688,1,0,3.808351,0,6,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,333.75,333.75,1,0,2.197225,5.810392,0,3.258096,7.196687,0,0,0,70.68995,0,2.197225,,0 +16,5,95,0,2,531689,0,10012.9,.2498289,0,12,1,39.18856,0,0,0,0,39.18856,0,0,0,5,0,2,77.40034,10.57626,.1442925,,1000,1000,1,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.21173,.6931472,3.668385,1 +16,5,95,0,3,531689,0,10012.9,1.249829,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,.1442925,,1000,1000,1,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.21173,.6931472,,0 +16,5,95,0,4,531689,0,10012.9,2.249829,0,12,1,5.31511,0,0,0,0,5.31511,0,0,0,1,0,2,77.40034,10.57626,.1442925,,1000,1000,1,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.21173,.6931472,1.670554,1 +16,5,95,0,5,531689,0,10012.9,3.249829,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,.1442925,,1000,1000,1,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.21173,.6931472,,0 +13,5,0,0,1,531691,.4758801,13789.04,1.253936,1,10.96978,1,29.02819,16.13378,0,0,0,45.16197,0,0,0,5,0,3,77.40034,10.57626,0,88.9,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.531702,1.098612,3.810255,1 +13,5,0,0,2,531691,.4758801,13789.04,2.253936,1,10.96978,1,15.86702,10.19267,0,0,0,26.05969,0,0,0,3,0,3,77.40034,10.57626,0,88.9,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.531702,1.098612,3.26039,1 +13,5,0,0,3,531691,.4758801,13789.04,3.253936,1,10.96978,1,20.24014,16.07547,0,0,0,36.31561,0,0,0,4,0,4,77.40034,10.57626,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.531702,1.386294,3.592248,1 +13,5,0,0,2,531692,1,3130.205,.2799453,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,.1442925,,450,0,1,1,1.609438,0,1,4.564348,6.160541,0,0,0,70.68995,8.049173,1.609438,,0 +13,5,0,0,3,531692,1,3130.205,1.279945,1,10,1,6.310475,2.52419,0,0,0,8.834665,0,0,0,0,1,5,77.40034,10.57626,.1442925,,450,0,1,1,1.609438,0,1,4.564348,6.160541,0,0,0,70.68995,8.049173,1.609438,2.178683,1 +13,5,0,0,4,531692,1,3130.205,2.279945,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,.1442925,,450,0,1,1,1.609438,0,1,4.564348,6.160541,0,0,0,70.68995,8.049173,1.609438,,0 +13,5,0,0,5,531692,1,3130.205,3.279945,1,10,1,12.34991,13.94511,0,0,0,26.29502,0,0,0,2,0,7,77.40034,10.57626,.1442925,,450,0,1,1,1.94591,0,1,4.564348,6.160541,0,0,0,70.68995,8.049173,1.94591,3.26938,1 +13,5,0,0,1,531695,0,9569.381,1.399042,0,12,1,105.5953,17.45898,0,0,0,123.0543,0,0,0,15,0,4,77.40034,10.57626,0,48.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,48.1,9.166429,1.386294,4.812625,1 +13,5,0,0,2,531695,0,9569.381,2.399042,0,12,1,13.97809,6.845486,0,0,0,20.82357,0,0,0,2,0,4,77.40034,10.57626,0,48.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,48.1,9.166429,1.386294,3.036086,1 +13,5,0,0,3,531695,0,9569.381,3.399042,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,48.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,48.1,9.166429,1.386294,,0 +11,5,0,0,1,531696,0,9155.146,1.180014,0,16,1,49.09014,31.81972,0,0,0,80.90986,0,0,0,8,0,3,77.40034,10.57626,0,88.9,0,915.72,1,0,1.098612,6.819711,0,0,0,0,0,0,88.9,9.122181,1.098612,4.393336,1 +11,5,0,0,2,531696,0,9155.146,2.180014,0,16,1,107.2513,32.61959,11.8451,0,0,151.716,0,0,0,11,0,4,77.40034,10.57626,0,88.9,0,915.72,1,0,1.386294,6.819711,0,0,0,0,0,0,88.9,9.122181,1.386294,5.02201,1 +11,5,0,0,3,531696,0,9155.146,3.180014,0,16,1,57.09343,10.9135,0,0,0,68.00692,0,0,0,9,0,4,77.40034,10.57626,0,88.9,0,915.72,1,0,1.386294,6.819711,0,0,0,0,0,0,88.9,9.122181,1.386294,4.219609,1 +16,5,95,0,1,531698,1,8781.362,2.009583,0,14,1,13.61123,2.177797,0,0,0,15.78903,0,0,0,2,0,10,77.40034,10.57626,0,88.9,1000,1000,1,0,2.302585,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.080501,2.302585,2.759315,1 +16,5,95,0,2,531698,1,8781.362,3.009583,0,14,1,22.51908,0,0,0,0,22.51908,0,0,0,0,0,12,77.40034,10.57626,0,88.9,1000,1000,1,0,2.484907,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.080501,2.484907,3.114363,1 +16,5,95,0,3,531698,1,8781.362,4.009583,0,14,1,6.271777,0,0,0,0,6.271777,0,0,0,1,0,12,77.40034,10.57626,0,88.9,1000,1000,1,0,2.484907,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.080501,2.484907,1.83606,1 +16,5,95,0,1,531707,1,5160.266,21.90007,0,12,1,5.353364,0,0,0,0,5.353364,0,0,0,0,1,4,73.4,13.8,0,71.6,315.15,315.15,0,0,1.386294,5.753049,0,4.564348,5.804342,0,0,0,71.6,8.548937,1.386294,1.677725,1 +16,5,95,0,2,531707,1,5160.266,22.90007,0,12,1,9.491268,0,24.29765,0,0,33.78891,0,0,0,0,1,4,73.4,13.8,0,71.6,315.15,315.15,0,0,1.386294,5.753049,0,4.564348,5.804342,0,0,0,71.6,8.548937,1.386294,3.520133,1 +16,5,95,0,3,531707,1,5160.266,23.90007,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,73.4,13.8,0,71.6,315.15,315.15,0,0,1.609438,5.753049,0,4.564348,5.804342,0,0,0,71.6,8.548937,1.609438,,0 +11,5,0,0,1,531715,1,769.5853,4.873374,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,74.1,0,0,1,1,1.791759,0,0,0,0,0,0,0,74.1,6.647151,1.791759,,0 +11,5,0,0,2,531715,1,769.5853,5.873374,1,12,1,6.870229,0,0,0,0,6.870229,0,0,0,1,0,6,77.40034,10.57626,0,74.1,0,0,1,1,1.791759,0,0,0,0,0,0,0,74.1,6.647151,1.791759,1.927197,1 +11,5,0,0,3,531715,1,769.5853,6.873374,1,12,1,20.90592,0,0,0,0,20.90592,0,0,0,1,0,6,77.40034,10.57626,0,74.1,0,0,1,1,1.791759,0,0,0,0,0,0,0,74.1,6.647151,1.791759,3.040033,1 +11,5,0,0,1,531716,1,769.5853,5.79603,1,12,1,0,0,22.33943,0,0,22.33943,0,0,0,0,0,6,68.3,10.57626,.1442925,74.1,0,0,1,1,1.791759,0,0,0,0,0,0,0,74.1,6.647151,1.791759,3.106353,1 +11,5,0,0,2,531716,1,769.5853,6.79603,1,12,1,60.66794,3.664122,11.9084,0,0,76.24046,0,0,0,6,0,6,68.3,10.57626,.1442925,74.1,0,0,1,1,1.791759,0,0,0,0,0,0,0,74.1,6.647151,1.791759,4.333892,1 +11,5,0,0,3,531716,1,769.5853,7.79603,1,12,1,0,4.463415,18.11847,0,0,22.58188,0,0,0,0,0,6,68.3,10.57626,.1442925,74.1,0,0,1,1,1.791759,0,0,0,0,0,0,0,74.1,6.647151,1.791759,3.117148,1 +16,5,95,0,1,531718,1,8781.362,.9445585,0,14,1,0,0,0,0,0,0,0,0,0,0,0,10,77.40034,10.57626,0,88.9,1000,1000,1,0,2.302585,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.080501,2.302585,,0 +16,5,95,0,2,531718,1,8781.362,1.944559,0,14,1,0,0,0,0,0,0,0,0,0,0,0,12,77.40034,10.57626,0,88.9,1000,1000,1,0,2.484907,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.080501,2.484907,,0 +16,5,95,0,3,531718,1,8781.362,2.944559,0,14,1,10.45296,0,0,0,0,10.45296,0,0,0,0,0,12,77.40034,10.57626,0,88.9,1000,1000,1,0,2.484907,6.907755,0,4.564348,6.959049,0,0,0,88.9,9.080501,2.484907,2.346885,1 +13,5,0,0,1,531723,.4758801,3640.553,19.70705,1,9,1,77.86712,3.046974,0,0,0,80.91409,0,0,0,6,0,2,89.4,10.3,0,79.5,300,375.44,0,0,.6931472,5.928099,1,4.564348,5.755076,0,0,0,79.5,8.200166,.6931472,4.393388,1 +13,5,0,0,2,531723,.4758801,3640.553,20.70705,1,9,1,0,3.048595,0,0,0,3.048595,0,0,0,0,0,2,89.4,10.3,0,79.5,300,375.44,0,0,.6931472,5.928099,1,4.564348,5.755076,0,0,0,79.5,8.200166,.6931472,1.114681,1 +13,5,0,0,3,531723,.4758801,3640.553,21.70705,1,9,1,63.14879,21.59516,0,0,0,84.74394,0,0,0,3,0,2,89.4,10.3,0,79.5,300,375.44,0,0,.6931472,5.928099,1,4.564348,5.755076,0,0,0,79.5,8.200166,.6931472,4.439634,1 +11,5,0,0,1,531728,.4758801,5534.05,1.979466,1,10.96978,1,5.04838,7.618847,0,0,0,12.66723,0,0,0,1,0,2,77.40034,10.57626,0,77.8,0,687.18,1,1,.6931472,6.532596,0,0,0,0,0,0,77.8,8.618855,.6931472,2.539018,1 +11,5,0,0,2,531728,.4758801,5534.05,2.979466,1,10.96978,1,20.02267,2.976955,0,0,0,22.99962,0,0,0,2,0,2,77.40034,10.57626,0,77.8,0,687.18,1,1,.6931472,6.532596,0,0,0,0,0,0,77.8,8.618855,.6931472,3.135478,1 +11,5,0,0,3,531728,.4758801,5534.05,3.979466,1,10.96978,1,12.69297,0,0,0,0,12.69297,0,0,0,1,0,2,77.40034,10.57626,0,77.8,0,687.18,1,1,.6931472,6.532596,0,0,0,0,0,0,77.8,8.618855,.6931472,2.541048,1 +11,5,0,0,1,531729,.4758801,5534.05,33.75222,1,10.96978,1,40.38704,0,28.18679,0,0,68.57383,0,0,0,2,1,2,80.9,17.2,0,79.5,0,687.18,0,0,.6931472,6.532596,0,0,0,0,0,0,79.5,8.618855,.6931472,4.227911,1 +11,5,0,0,2,531729,.4758801,5534.05,34.75222,1,10.96978,1,134.303,19.31621,18.13374,0,0,171.7529,0,0,0,10,1,2,80.9,17.2,0,79.5,0,687.18,0,0,.6931472,6.532596,0,0,0,0,0,0,79.5,8.618855,.6931472,5.146057,1 +11,5,0,0,3,531729,.4758801,5534.05,35.75222,1,10.96978,1,111.4923,5.571184,27.1012,0,0,144.1647,0,0,0,7,1,2,80.9,17.2,0,79.5,0,687.18,0,0,.6931472,6.532596,0,0,0,0,0,0,79.5,8.618855,.6931472,4.970956,1 +11,5,0,0,3,531731,1,602.3461,.9568788,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,.1442925,,0,0,1,1,1.791759,0,0,0,0,0,0,0,70.68995,6.402491,1.791759,,0 +11,5,0,0,4,531731,1,602.3461,1.956879,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,.1442925,,0,0,1,1,1.791759,0,0,0,0,0,0,0,70.68995,6.402491,1.791759,,0 +11,5,0,0,5,531731,1,602.3461,2.956879,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,.1442925,,0,0,1,1,1.791759,0,0,0,0,0,0,0,70.68995,6.402491,1.791759,,0 +14,5,95,0,1,531752,1,3455.709,2.206708,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,88.9,325,325,1,0,1.386294,5.783825,0,4.564348,5.835118,0,0,0,88.9,8.148072,1.386294,,0 +14,5,95,0,2,531752,1,3455.709,3.206708,0,14,1,13.66743,0,0,0,0,13.66743,0,0,0,2,0,4,77.40034,10.57626,0,88.9,325,325,1,0,1.386294,5.783825,0,4.564348,5.835118,0,0,0,88.9,8.148072,1.386294,2.615015,1 +14,5,95,0,3,531752,1,3455.709,4.206708,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,88.9,325,325,1,0,1.609438,5.783825,0,4.564348,5.835118,0,0,0,88.9,8.148072,1.609438,,0 +13,5,0,0,1,531789,0,17808.5,.6926762,0,12,1,36.15483,5.23607,0,0,0,41.3909,0,0,0,4,0,5,77.40034,10.57626,0,100,450,864,1,0,1.609438,6.761573,1,4.564348,6.160541,0,0,0,100,9.787487,1.609438,3.723061,1 +13,5,0,0,2,531789,0,17808.5,1.692676,0,12,1,7.633588,0,0,0,0,7.633588,0,0,0,1,0,5,77.40034,10.57626,0,100,450,864,1,0,1.609438,6.761573,1,4.564348,6.160541,0,0,0,100,9.787487,1.609438,2.032558,1 +19,5,25,0,1,531794,1,7578.085,.9774128,0,8,1,111.2992,1.671604,0,0,0,112.9708,0,0,0,2,0,6,77.40034,10.57626,0,88.9,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.933147,1.791759,4.727129,1 +19,5,25,0,2,531794,1,7578.085,1.977413,0,8,1,27.7145,6.605923,0,0,0,34.32043,0,0,0,5,0,6,77.40034,10.57626,0,88.9,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.933147,1.791759,3.535741,1 +19,5,25,0,3,531794,1,7578.085,2.977413,0,8,1,21.6263,1.740484,0,0,0,23.36678,0,0,0,4,0,6,77.40034,10.57626,0,88.9,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.933147,1.791759,3.151315,1 +5,5,25,0,1,531808,1,5774.706,.6570842,1,12,1,0,1.726619,0,0,0,1.726619,0,0,0,0,0,5,77.40034,10.57626,0,92.6,80.25,646.36,1,1,1.609438,6.471356,0,3.258096,5.771441,0,0,0,92.6,8.661416,1.609438,.5461649,1 +5,5,25,0,2,531808,1,5774.706,1.657084,1,12,1,13.51557,0,0,0,0,13.51557,0,0,0,0,0,5,77.40034,10.57626,0,92.6,80.25,646.36,1,1,1.609438,6.471356,0,3.258096,5.771441,0,0,0,92.6,8.661416,1.609438,2.603842,1 +5,5,25,0,3,531808,1,5774.706,2.657084,1,12,1,37.71626,0,0,0,0,37.71626,0,0,0,0,0,5,77.40034,10.57626,0,92.6,80.25,646.36,1,1,1.609438,6.471356,0,3.258096,5.771441,0,0,0,92.6,8.661416,1.609438,3.630091,1 +10,5,50,0,3,531809,0,10283.87,.5626283,0,12,1,74.04291,7.021456,0,0,0,81.06437,0,0,0,8,0,3,77.40034,10.57626,.1442925,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,70.68995,9.238429,1.098612,4.395244,1 +10,5,50,0,4,531809,0,10283.87,1.562628,0,12,1,31.35625,17.44239,0,0,0,48.79864,0,0,0,4,0,3,77.40034,10.57626,.1442925,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,70.68995,9.238429,1.098612,3.887702,1 +10,5,50,0,5,531809,0,10283.87,2.562628,0,12,1,17.49571,0,0,0,0,17.49571,0,0,0,2,0,3,77.40034,10.57626,.1442925,,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,70.68995,9.238429,1.098612,2.861956,1 +13,5,0,0,3,531816,0,9755.425,.3052704,0,14,1,75.32797,17.15616,0,0,0,92.48413,0,0,0,10,0,4,77.40034,10.57626,.1442925,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.185681,1.386294,4.527037,1 +13,5,0,0,4,531816,0,9755.425,1.30527,0,14,1,24.29765,7.437357,0,0,0,31.735,0,0,0,3,0,4,77.40034,10.57626,.1442925,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.185681,1.386294,3.45742,1 +13,5,0,0,5,531816,0,9755.425,2.30527,0,14,1,20.76125,0,0,0,0,20.76125,0,0,0,3,0,4,77.40034,10.57626,.1442925,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.185681,1.386294,3.033088,1 +6,5,25,0,1,531821,1,1484.895,5.91102,1,6,1,0,0,0,0,0,0,0,0,0,0,0,2,80,10.57626,.1442925,88.9,190.4,0,1,1,.6931472,0,0,3.258096,6.635421,0,0,0,88.9,7.303772,.6931472,,0 +6,5,25,0,2,531821,1,1484.895,6.91102,1,6,1,0,0,0,0,0,0,0,0,0,0,0,2,80,10.57626,.1442925,88.9,190.4,0,1,1,.6931472,0,0,3.258096,6.635421,0,0,0,88.9,7.303772,.6931472,,0 +11,5,0,0,1,531822,1,3942.652,15.3128,1,13,1,27.00978,0,27.64781,0,0,54.65759,0,0,0,1,1,4,51.6,10.3,0,60,0,0,1,1,1.386294,0,0,0,0,0,0,0,60,8.279862,1.386294,4.001088,1 +11,5,0,0,2,531822,1,3942.652,16.3128,1,13,1,18.12977,0,0,0,0,18.12977,0,0,0,2,0,5,51.6,10.3,0,60,0,0,1,1,1.609438,0,0,0,0,0,0,0,60,8.279862,1.609438,2.897555,1 +11,5,0,0,3,531822,1,3942.652,17.3128,1,13,1,18.43902,0,23.91638,0,0,42.3554,0,0,0,2,1,6,51.6,10.3,0,60,0,0,1,1,1.791759,0,0,0,0,0,0,0,60,8.279862,1.791759,3.746096,1 +13,5,0,0,1,531836,0,4416.794,.2080767,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,81.5,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,81.5,8.393395,1.386294,,0 +13,5,0,0,2,531836,0,4416.794,1.208077,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,81.5,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,81.5,8.393395,1.386294,,0 +13,5,0,0,3,531836,0,4416.794,2.208077,1,11,1,42.56055,0,0,0,0,42.56055,0,0,0,2,0,4,77.40034,10.57626,0,81.5,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,81.5,8.393395,1.386294,3.750928,1 +13,5,0,0,1,531841,0,5562.212,.2847365,1,13,1,9.310199,5.83157,.6347863,0,0,15.77656,0,0,0,4,0,4,77.40034,10.57626,0,96.3,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,0,0,0,96.3,8.623931,1.386294,2.758525,1 +13,5,0,0,2,531841,0,5562.212,1.284737,1,13,1,5.694761,0,0,0,0,5.694761,0,0,0,1,0,4,77.40034,10.57626,0,96.3,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,0,0,0,96.3,8.623931,1.386294,1.739547,1 +13,5,0,0,3,531841,0,5562.212,2.284736,1,13,1,35.58131,0,0,0,0,35.58131,0,0,0,4,0,4,77.40034,10.57626,0,96.3,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,0,0,0,96.3,8.623931,1.386294,3.57182,1 +11,5,0,0,1,531844,0,11392.73,1.185489,0,12,1,52.89886,30.75751,0,0,0,83.65637,0,0,0,8,0,4,77.40034,10.57626,0,63,0,0,1,0,1.386294,0,0,0,0,0,0,0,63,9.340818,1.386294,4.426718,1 +11,5,0,0,2,531844,0,11392.73,2.185489,0,12,1,51.6325,17.97646,0,0,0,69.60896,0,0,0,7,0,4,77.40034,10.57626,0,63,0,0,1,0,1.386294,0,0,0,0,0,0,0,63,9.340818,1.386294,4.242893,1 +11,5,0,0,3,531844,0,11392.73,3.185489,0,12,1,44.29066,20.11419,0,0,0,64.40485,0,0,0,8,0,4,77.40034,10.57626,0,63,0,0,1,0,1.386294,0,0,0,0,0,0,0,63,9.340818,1.386294,4.165189,1 +13,5,0,0,3,531853,1,6326.1,.1382615,0,11,1,69.4033,10.80829,0,0,0,80.21159,0,0,0,11,0,4,77.40034,10.57626,.1442925,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.752597,1.386294,4.384668,1 +13,5,0,0,4,531853,1,6326.1,1.138261,0,11,1,61.88307,0,0,0,134.0167,195.8998,1,0,0,9,0,3,77.40034,10.57626,.1442925,,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.752597,1.098612,5.277603,1 +13,5,0,0,5,531853,1,6326.1,2.138262,0,11,1,42.90657,0,0,0,0,42.90657,0,0,0,2,0,3,77.40034,10.57626,.1442925,,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.752597,1.098612,3.759025,1 +11,5,0,0,1,531854,0,6674.895,.2190281,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,0,91,1,0,1.386294,4.510859,0,0,0,0,0,0,70.68995,8.806258,1.386294,,0 +11,5,0,0,2,531854,0,6674.895,1.219028,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,0,91,1,0,1.386294,4.510859,0,0,0,0,0,0,70.68995,8.806258,1.386294,,0 +11,5,0,0,1,531860,1,6674.895,59.06092,0,6,1,42.06984,4.122844,0,0,0,46.19268,0,0,0,1,0,4,78.2,0,1,68.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,68.2,8.806258,1.386294,3.832821,1 +11,5,0,0,2,531860,1,6674.895,60.06092,0,6,1,0,0,0,0,1106.158,1106.158,1,0,0,0,0,4,78.2,0,1,68.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,68.2,8.806258,1.386294,7.008648,1 +11,5,0,0,3,531860,1,6674.895,61.06092,0,6,1,0,0,0,0,0,0,0,0,0,0,0,4,78.2,0,1,68.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,68.2,8.806258,1.386294,,0 +13,5,0,0,1,531866,1,18474.65,.2765229,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,1,66.7,450,450,1,1,2.079442,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.824209,2.079442,,0 +13,5,0,0,2,531866,1,18474.65,1.276523,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,1,66.7,450,450,1,1,2.079442,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.824209,2.079442,,0 +13,5,0,0,3,531866,1,18474.65,2.276523,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,1,66.7,450,450,1,1,2.079442,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.824209,2.079442,,0 +11,5,0,0,1,531881,1,6674.895,.2628337,0,14,1,33.65587,2.368532,0,0,0,36.0244,0,0,0,4,0,4,77.40034,10.57626,0,100,0,18,1,0,1.386294,2.890372,0,0,0,0,0,0,100,8.806258,1.386294,3.584197,1 +11,5,0,0,2,531881,1,6674.895,1.262834,0,14,1,24.5561,3.796751,0,0,0,28.35285,0,0,0,3,0,4,77.40034,10.57626,0,100,0,18,1,0,1.386294,2.890372,0,0,0,0,0,0,100,8.806258,1.386294,3.344728,1 +11,5,0,0,3,531881,1,6674.895,2.262834,0,14,1,20.92624,6.569468,0,0,0,27.49571,0,0,0,3,0,4,77.40034,10.57626,0,100,0,18,1,0,1.386294,2.890372,0,0,0,0,0,0,100,8.806258,1.386294,3.31403,1 +13,5,0,0,1,531882,1,1185.868,.238193,1,8,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,0,66.7,450,450,1,1,2.197225,6.109248,1,4.564348,6.160541,0,0,0,66.7,7.079073,2.197225,,0 +11,5,0,0,2,531891,1,3942.652,.9863107,0,13,1,22.13741,0,0,0,0,22.13741,0,0,0,3,0,5,77.40034,10.57626,.1442925,,0,0,1,0,1.609438,0,0,0,0,0,0,0,70.68995,8.279862,1.609438,3.097269,1 +11,5,0,0,3,531891,1,3942.652,1.986311,0,13,1,8.710801,1.515679,0,0,0,10.22648,0,0,0,1,0,6,77.40034,10.57626,.1442925,,0,0,1,0,1.791759,0,0,0,0,0,0,0,70.68995,8.279862,1.791759,2.32498,1 +11,5,0,0,1,531894,0,8507.937,24.52019,0,9,1,0,.8753647,0,0,0,.8753647,0,0,0,0,0,5,91.5,0,0,84.1,0,1189.12,0,0,1.609438,7.080969,0,0,0,0,0,0,84.1,9.048872,1.609438,-.1331147,1 +11,5,0,0,2,531894,0,8507.937,25.52019,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,91.5,0,0,84.1,0,1189.12,0,0,1.609438,7.080969,0,0,0,0,0,0,84.1,9.048872,1.609438,,0 +11,5,0,0,3,531894,0,8507.937,26.52019,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,91.5,0,0,84.1,0,1189.12,0,0,1.609438,7.080969,0,0,0,0,0,0,84.1,9.048872,1.609438,,0 +11,5,0,0,4,531902,1,0,.7905544,0,11,1,71.45038,9.103053,0,0,0,80.55344,0,0,0,1,0,4,77.40034,10.57626,.1442925,,0,0,1,0,1.386294,0,0,0,0,0,0,0,70.68995,0,1.386294,4.388921,1 +11,5,0,0,5,531902,1,0,1.790554,0,11,1,0,3.466899,0,0,0,3.466899,0,0,0,0,0,4,77.40034,10.57626,.1442925,,0,0,1,0,1.386294,0,0,0,0,0,0,0,70.68995,0,1.386294,1.243261,1 +15,5,95,0,1,531923,0,9990.783,.0328542,0,12,1,93.10199,6.40711,0,0,0,99.5091,0,0,0,14,0,3,77.40034,10.57626,.1442925,,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.209518,1.098612,4.600249,1 +15,5,95,0,2,531923,0,9990.783,1.032854,0,12,1,86.18072,16.46165,1.26044,0,0,103.9028,0,0,0,8,0,3,77.40034,10.57626,.1442925,,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.209518,1.098612,4.643456,1 +15,5,95,0,3,531923,0,9990.783,2.032854,0,12,1,11.41868,1.626298,0,0,0,13.04498,0,0,0,2,0,3,77.40034,10.57626,.1442925,,1000,1000,1,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.209518,1.098612,2.568404,1 +16,5,95,0,2,531930,1,8781.362,.4414784,1,14,1,0,0,0,0,0,0,0,0,0,0,0,12,77.40034,10.57626,.1442925,,1000,1000,1,1,2.484907,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.080501,2.484907,,0 +16,5,95,0,3,531930,1,8781.362,1.441478,1,14,1,0,0,0,0,0,0,0,0,0,0,0,12,77.40034,10.57626,.1442925,,1000,1000,1,1,2.484907,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.080501,2.484907,,0 +16,5,95,0,2,531931,1,8781.362,.4414784,0,14,1,0,0,0,0,0,0,0,0,0,0,0,12,77.40034,10.57626,.1442925,,1000,1000,1,0,2.484907,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.080501,2.484907,,0 +16,5,95,0,3,531931,1,8781.362,1.441478,0,14,1,0,0,0,0,0,0,0,0,0,0,0,12,77.40034,10.57626,.1442925,,1000,1000,1,0,2.484907,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.080501,2.484907,,0 +14,5,95,0,2,531946,1,51.71531,.523614,0,8,1,44.41914,0,0,0,0,44.41914,0,0,0,6,0,6,77.40034,10.57626,.1442925,,140.6,140.6,1,0,1.791759,4.945919,0,4.564348,4.997212,0,0,0,70.68995,3.964906,1.791759,3.79367,1 +14,5,95,0,3,531946,1,51.71531,1.523614,0,8,1,6.228374,0,0,0,0,6.228374,0,0,0,1,0,6,77.40034,10.57626,.1442925,,140.6,140.6,1,0,1.791759,4.945919,0,4.564348,4.997212,0,0,0,70.68995,3.964906,1.791759,1.829115,1 +11,5,0,0,2,531956,0,6674.895,.4387406,0,5,1,168.1149,32.38383,0,0,0,200.4987,0,0,0,17,0,5,77.40034,10.57626,.1442925,,0,416,1,0,1.609438,6.030685,0,0,0,0,0,0,70.68995,8.806258,1.609438,5.300807,1 +11,5,0,0,3,531956,0,6674.895,1.438741,0,5,1,81.98971,12.247,0,0,0,94.23671,0,0,0,12,0,6,77.40034,10.57626,.1442925,,0,416,1,0,1.791759,6.030685,0,0,0,0,0,0,70.68995,8.806258,1.791759,4.54581,1 +18,5,25,0,2,531961,0,9861.239,.4934976,1,16,1,5.626407,12.62941,0,0,0,18.25581,0,0,0,1,0,5,77.40034,10.57626,.1442925,,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.68995,9.196468,1.609438,2.904484,1 +18,5,25,0,3,531961,0,9861.239,1.493498,1,16,1,0,22.66576,0,0,0,22.66576,0,0,0,0,0,5,77.40034,10.57626,.1442925,,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.68995,9.196468,1.609438,3.120856,1 +17,5,25,0,2,531962,1,3291.859,.2580424,0,9,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,.1442925,,315,315,1,0,.6931472,5.752573,0,3.258096,7.138867,0,0,0,70.68995,8.099511,.6931472,,0 +17,5,25,0,3,531962,1,3291.859,1.258042,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,315,315,1,0,1.098612,5.752573,0,3.258096,7.138867,0,0,0,70.68995,8.099511,1.098612,,0 +13,5,0,0,2,531966,0,7991.295,.0499658,0,16,1,77.09924,16.5229,0,0,0,93.62214,0,0,0,11,0,4,77.40034,10.57626,.1442925,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.986234,1.386294,4.539267,1 +13,5,0,0,2,531967,0,9026.113,.0308008,0,12,1,90.45802,18.25954,0,0,0,108.7176,0,0,0,10,0,7,77.40034,10.57626,.1442925,,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.107988,1.94591,4.688753,1 +13,5,0,0,3,531967,0,9026.113,1.030801,0,12,1,47.38676,16.18467,0,0,0,63.57143,0,0,0,6,0,7,77.40034,10.57626,.1442925,,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.107988,1.94591,4.152164,1 +11,5,0,0,2,531977,0,9155.146,.0472279,0,16,1,95.29233,16.07821,0,0,0,111.3705,0,0,0,13,0,4,77.40034,10.57626,.1442925,,0,915.72,1,0,1.386294,6.819711,0,0,0,0,0,0,70.68995,9.122181,1.386294,4.712863,1 +11,5,0,0,3,531977,0,9155.146,1.047228,0,16,1,47.75087,22.9654,0,0,0,70.71626,0,0,0,8,0,4,77.40034,10.57626,.1442925,,0,915.72,1,0,1.386294,6.819711,0,0,0,0,0,0,70.68995,9.122181,1.386294,4.258676,1 +16,5,95,0,3,531978,1,8746.032,.9185489,1,12,1,51.21951,1.087108,0,0,0,52.30662,0,0,0,2,0,4,77.40034,10.57626,.1442925,,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.076469,1.386294,3.957123,1 +13,5,0,0,3,531979,.4758801,13789.04,.9760438,1,10.96978,1,49.39966,10.98799,0,0,0,60.38765,0,0,0,7,0,4,77.40034,10.57626,.1442925,,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.531702,1.386294,4.100785,1 +11,5,0,0,3,531982,1,5952.381,.9267625,1,12,1,20.48443,0,0,0,0,20.48443,0,0,0,3,0,4,77.40034,10.57626,.1442925,,0,199.2,1,1,1.386294,5.294309,0,0,0,0,0,0,70.68995,8.691714,1.386294,3.019665,1 +13,5,0,0,2,531983,1,4133.128,.321013,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.327032,1.386294,,0 +13,5,0,0,3,531983,1,4133.128,1.321013,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.327032,1.386294,,0 +14,5,95,0,4,531984,0,11896.19,.2402464,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,.1442925,,753.2,1173,1,0,1.609438,7.06732,0,4.564348,6.675624,0,0,0,70.68995,9.384057,1.609438,,0 +14,5,95,0,5,531984,0,11896.19,1.240246,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,.1442925,,753.2,1173,1,0,1.609438,7.06732,0,4.564348,6.675624,0,0,0,70.68995,9.384057,1.609438,,0 +13,5,0,0,5,531989,1,3130.205,.971937,0,10,1,23.49914,7.54717,0,0,0,31.04631,0,0,0,2,0,7,77.40034,10.57626,.1442925,,450,0,1,0,1.94591,0,1,4.564348,6.160541,0,0,0,70.68995,8.049173,1.94591,3.43548,1 +14,5,95,0,3,531990,1,3455.709,.8199863,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,.1442925,,325,325,1,0,1.609438,5.783825,0,4.564348,5.835118,0,0,0,70.68995,8.148072,1.609438,,0 +17,5,25,0,3,531999,0,8637.993,.9869952,1,12,1,43.97835,5.855886,0,0,0,49.83424,0,0,0,6,0,3,77.40034,10.57626,.1442925,,576.75,576.75,1,1,1.098612,6.357409,0,3.258096,7.743703,0,0,0,70.68995,9.064041,1.098612,3.908702,1 +15,5,95,0,2,532003,1,7000.512,.0965092,0,14,1,37.13428,2.363091,0,0,0,39.49738,0,0,0,0,0,4,77.40034,10.57626,.1442925,,473.7,473.7,1,0,1.386294,6.160574,0,4.564348,6.211867,0,0,0,70.68995,8.853882,1.386294,3.676234,1 +15,5,95,0,3,532003,1,7000.512,1.096509,0,14,1,5.074425,0,0,0,0,5.074425,0,0,0,1,0,4,77.40034,10.57626,.1442925,,473.7,473.7,1,0,1.386294,6.160574,0,4.564348,6.211867,0,0,0,70.68995,8.853882,1.386294,1.624213,1 +13,5,0,0,3,532025,1,2422.939,.5626283,1,8,1,10.45296,0,0,0,0,10.45296,0,0,0,0,0,4,77.40034,10.57626,.1442925,,450,0,1,1,1.386294,0,1,4.564348,6.160541,0,0,0,70.68995,7.793149,1.386294,2.346885,1 +11,5,0,0,3,532028,1,6674.895,.8227242,1,9,1,109.5819,5.888502,0,0,0,115.4704,0,0,0,5,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,8.806258,1.386294,4.749014,1 +16,5,95,0,3,532029,1,5160.266,.6584531,1,10,1,78.89273,0,0,0,0,78.89273,0,0,0,6,0,5,77.40034,10.57626,.1442925,,315.15,315.15,1,1,1.609438,5.753049,0,4.564348,5.804342,0,0,0,70.68995,8.548937,1.609438,4.368089,1 +11,5,0,0,3,532035,.4758801,1475.166,.6830938,1,9,1,68.67388,28.38972,0,0,0,97.0636,0,0,0,5,0,2,77.40034,10.57626,.1442925,,0,0,1,1,.6931472,0,0,0,0,0,0,0,70.68995,7.297204,.6931472,4.575366,1 +11,5,0,0,3,532040,1,1426.523,.3080082,1,7,1,85.29412,30.3045,0,0,0,115.5986,0,0,0,6,0,7,77.40034,10.57626,.1442925,,0,0,1,1,1.94591,0,0,0,0,0,0,0,70.68995,7.263696,1.94591,4.750124,1 +11,5,0,0,5,532041,0,10963.64,.3258042,0,10.96978,1,258.8235,31.25952,8.99654,0,0,299.0796,0,0,0,18,0,5,77.40034,10.57626,.1442925,,0,0,1,0,1.609438,0,0,0,0,0,0,0,70.68995,9.30243,1.609438,5.70071,1 +11,5,0,0,3,532042,1,3942.652,.2231348,1,13,1,72.8223,1.602787,0,0,0,74.42509,0,0,0,5,0,6,77.40034,10.57626,.1442925,,0,0,1,1,1.791759,0,0,0,0,0,0,0,70.68995,8.279862,1.791759,4.309793,1 +11,5,0,0,3,532043,1,1998.976,.3874059,0,11,1,138.2353,0,0,0,0,138.2353,0,0,0,8,0,6,77.40034,10.57626,.1442925,,0,0,1,0,1.791759,0,0,0,0,0,0,0,70.68995,7.600891,1.791759,4.928957,1 +11,5,0,0,3,532046,0,6674.895,.3189596,1,12,1,75.0865,6.314879,0,0,0,81.40138,0,0,0,11,0,4,77.40034,10.57626,.1442925,,0,496.2,1,1,1.386294,6.206979,0,0,0,0,0,0,70.68995,8.806258,1.386294,4.399392,1 +11,5,0,0,5,532048,0,12511.44,.2902122,1,12,1,35.33448,0,0,0,0,35.33448,0,0,0,5,0,4,77.40034,10.57626,.1442925,,0,299.52,1,1,1.386294,5.702181,0,0,0,0,0,0,70.68995,9.434479,1.386294,3.564859,1 +13,5,0,0,5,532165,1,3130.205,.3285421,1,10,1,55.74614,0,0,0,0,55.74614,0,0,0,6,0,7,77.40034,10.57626,.1442925,,450,0,1,1,1.94591,0,1,4.564348,6.160541,0,0,0,70.68995,8.049173,1.94591,4.020808,1 +15,5,95,0,3,532175,1,6674.895,.7679672,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,772.5,772.5,1,1,1.098612,6.649632,0,4.564348,6.700925,0,0,0,70.68995,8.806258,1.098612,,0 +11,5,0,0,3,532185,0,6674.895,.1300479,0,5,1,79.58833,19.09091,0,0,0,98.67924,0,0,0,11,0,6,77.40034,10.57626,.1442925,,0,416,1,0,1.791759,6.030685,0,0,0,0,0,0,70.68995,8.806258,1.791759,4.591875,1 +13,5,0,0,5,532189,0,10214.08,0,1,17,1,68.67388,19.30988,0,0,0,87.98376,0,0,0,10,0,3,77.40034,10.57626,.1442925,,300,300,1,1,1.098612,5.703783,1,4.564348,5.755076,0,0,0,70.68995,9.23162,1.098612,4.477152,1 +17,5,25,0,3,532206,1,3291.859,.2422998,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,315,315,1,0,1.098612,5.752573,0,3.258096,7.138867,0,0,0,70.68995,8.099511,1.098612,,0 +14,6,95,0,1,625875,1,4305.684,46.2204,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,64.4,10.3,0,53.4,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,53.4,8.367924,.6931472,,0 +14,6,95,0,2,625875,1,4305.684,47.2204,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,64.4,10.3,0,53.4,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,53.4,8.367924,.6931472,,0 +14,6,95,0,3,625875,1,4305.684,48.2204,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,64.4,10.3,0,53.4,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,53.4,8.367924,.6931472,,0 +14,6,95,0,1,625877,1,4305.684,45.21834,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,68.1,6.9,0,69.3,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,69.3,8.367924,.6931472,,0 +14,6,95,0,2,625877,1,4305.684,46.21834,1,10,1,19.2671,41.63581,13.5323,0,288.6286,363.0638,1,0,0,2,0,2,68.1,6.9,0,69.3,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,69.3,8.367924,.6931472,5.894578,1 +14,6,95,0,3,625877,1,4305.684,47.21834,1,10,1,22.64151,43.72556,13.82504,0,0,80.19211,0,0,0,2,0,2,68.1,6.9,0,69.3,400,400,0,0,.6931472,5.991465,0,4.564348,6.042758,0,0,0,69.3,8.367924,.6931472,4.384425,1 +14,6,95,1,1,625878,0,10709.17,52.13963,1,12,1,10.57977,24.57469,47.65976,0,0,82.81422,0,0,0,0,1,2,77.1,10.3,0,65.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,65.9,9.278949,.6931472,4.4166,1 +14,6,95,1,2,625878,0,10709.17,53.13963,1,12,1,0,32.42976,0,0,0,32.42976,0,0,0,0,0,2,77.1,10.3,0,65.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,65.9,9.278949,.6931472,3.479077,1 +14,6,95,1,3,625878,0,10709.17,54.13963,1,12,1,17.64706,32.61592,43.25259,0,0,93.51557,0,0,0,1,1,2,77.1,10.3,0,65.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,65.9,9.278949,.6931472,4.538128,1 +14,6,95,1,1,625879,0,10709.17,55.29637,0,8,1,24.96826,3.068134,0,0,0,28.03639,0,0,0,1,1,2,93.1,3.4,0,94.3,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,94.3,9.278949,.6931472,3.333503,1 +14,6,95,1,2,625879,0,10709.17,56.29637,0,8,1,5.31511,5.516325,0,0,174.2597,185.0911,1,0,0,1,0,2,93.1,3.4,0,94.3,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,94.3,9.278949,.6931472,5.220848,1 +14,6,95,1,3,625879,0,10709.17,57.29637,0,8,1,15.57093,1.775087,42.43253,0,0,59.77855,0,0,0,1,1,2,93.1,3.4,0,94.3,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,94.3,9.278949,.6931472,4.090647,1 +17,6,25,1,1,625884,1,3120.84,9.801506,0,12,1,40.20313,3.808718,0,0,0,44.01185,0,0,0,2,0,2,100,10.57626,0,85.2,265,550.72,1,0,.6931472,6.311226,0,3.258096,6.966024,0,0,0,85.2,8.046178,.6931472,3.784459,1 +17,6,25,1,2,625884,1,3120.84,10.80151,0,12,1,16.70463,0,0,0,0,16.70463,0,0,0,3,0,2,100,10.57626,0,85.2,265,550.72,1,0,.6931472,6.311226,0,3.258096,6.966024,0,0,0,85.2,8.046178,.6931472,2.815686,1 +17,6,25,1,3,625884,1,3120.84,11.80151,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,100,10.57626,0,85.2,265,550.72,1,0,.6931472,6.311226,0,3.258096,6.966024,0,0,0,85.2,8.046178,.6931472,,0 +17,6,25,1,1,625885,1,3120.84,31.46612,1,12,1,65.59458,14.17689,0,0,0,79.77148,0,0,0,4,0,2,92,6.9,0,77.3,265,550.72,0,0,.6931472,6.311226,0,3.258096,6.966024,0,0,0,77.3,8.046178,.6931472,4.379166,1 +17,6,25,1,2,625885,1,3120.84,32.46612,1,12,1,202.3538,1.765376,0,0,0,204.1192,0,0,0,5,0,2,92,6.9,0,77.3,265,550.72,0,0,.6931472,6.311226,0,3.258096,6.966024,0,0,0,77.3,8.046178,.6931472,5.318704,1 +17,6,25,1,3,625885,1,3120.84,33.46612,1,12,1,15.57093,1.99654,32.87197,0,0,50.43945,0,0,0,1,1,2,92,6.9,0,77.3,265,550.72,0,0,.6931472,6.311226,0,3.258096,6.966024,0,0,0,77.3,8.046178,.6931472,3.920774,1 +11,6,0,1,1,625900,0,10571.85,13.25394,0,12,1,27.93017,1.870324,0,0,0,29.8005,0,0,0,1,0,4,85,10.57626,0,81.5,0,280.04,1,0,1.386294,5.634933,0,0,0,1,0,0,81.5,9.266045,1.386294,3.394525,1 +11,6,0,1,2,625900,0,10571.85,14.25394,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,81.5,0,280.04,1,0,1.386294,5.634933,0,0,0,1,0,0,81.5,9.266045,1.386294,,0 +11,6,0,1,3,625900,0,10571.85,15.25394,0,12,1,121.2442,6.771054,.740584,0,0,128.7558,0,0,0,2,0,4,85,10.57626,0,81.5,0,280.04,1,0,1.386294,5.634933,0,0,0,1,0,0,81.5,9.266045,1.386294,4.857918,1 +11,6,0,1,4,625900,0,10571.85,16.25393,0,12,1,82.38421,0,0,0,0,82.38421,0,0,0,3,0,4,85,10.57626,0,81.5,0,280.04,1,0,1.386294,5.634933,0,0,0,1,0,0,81.5,9.266045,1.386294,4.411394,1 +11,6,0,1,5,625900,0,10571.85,17.25393,0,12,1,11.41868,0,0,0,0,11.41868,0,0,0,1,0,4,85,10.57626,0,81.5,0,280.04,1,0,1.386294,5.634933,0,0,0,1,0,0,81.5,9.266045,1.386294,2.435251,1 +11,6,0,1,1,625901,0,10571.85,39.48802,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,87.8,0,0,86.4,0,280.04,0,0,1.386294,5.634933,0,0,0,0,0,0,86.4,9.266045,1.386294,,0 +11,6,0,1,2,625901,0,10571.85,40.48802,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,87.8,0,0,86.4,0,280.04,0,0,1.386294,5.634933,0,0,0,0,0,0,86.4,9.266045,1.386294,,0 +11,6,0,1,3,625901,0,10571.85,41.48802,0,10,1,12.27254,5.933136,0,0,0,18.20567,0,0,0,2,0,4,87.8,0,0,86.4,0,280.04,0,0,1.386294,5.634933,0,0,0,0,0,0,86.4,9.266045,1.386294,2.901733,1 +11,6,0,1,4,625901,0,10571.85,42.48802,0,10,1,124.9051,24.03569,0,0,560.3644,709.3052,1,0,0,5,0,4,87.8,0,0,86.4,0,280.04,0,0,1.386294,5.634933,0,0,0,0,0,0,86.4,9.266045,1.386294,6.564286,1 +11,6,0,1,5,625901,0,10571.85,43.48802,0,10,1,230.1038,2.422145,36.20415,0,0,268.7301,0,0,0,1,21,4,87.8,0,0,86.4,0,280.04,0,0,1.386294,5.634933,0,0,0,0,0,0,86.4,9.266045,1.386294,5.593708,1 +11,6,0,1,1,625902,0,10571.85,41.38261,1,12,1,318.7032,91.33665,34.91272,0,0,444.9526,0,0,0,18,0,4,62.8,17.2,0,53.4,0,280.04,0,0,1.386294,5.634933,0,0,0,0,0,1,53.4,9.266045,1.386294,6.097968,1 +11,6,0,1,2,625902,0,10571.85,42.38261,1,12,1,110.189,60.74228,0,0,0,170.9313,0,0,0,4,0,4,62.8,17.2,0,53.4,0,280.04,0,0,1.386294,5.634933,0,0,0,0,0,1,53.4,9.266045,1.386294,5.141262,1 +11,6,0,1,3,625902,0,10571.85,43.38261,1,12,1,83.79179,51.84088,0,0,0,135.6327,0,0,0,9,0,4,62.8,17.2,0,53.4,0,280.04,0,0,1.386294,5.634933,0,0,0,0,0,1,53.4,9.266045,1.386294,4.90995,1 +11,6,0,1,4,625902,0,10571.85,44.38261,1,12,1,62.26272,139.2483,0,0,1414.958,1616.469,2,0,0,4,0,4,62.8,17.2,0,53.4,0,280.04,0,0,1.386294,5.634933,0,0,0,0,0,1,53.4,9.266045,1.386294,7.388,1 +11,6,0,1,5,625902,0,10571.85,45.38261,1,12,1,313.1488,97.0346,36.20415,0,0,446.3875,0,0,0,3,23,4,62.8,17.2,0,53.4,0,280.04,0,0,1.386294,5.634933,0,0,0,0,0,1,53.4,9.266045,1.386294,6.101188,1 +11,6,0,1,1,625903,0,10571.85,16.39973,0,12,1,97.75561,2.493766,0,0,0,100.2494,0,0,0,1,0,4,91,6.9,0,63.6,0,280.04,1,0,1.386294,5.634933,0,0,0,1,0,0,63.6,9.266045,1.386294,4.607661,1 +11,6,0,1,2,625903,0,10571.85,17.39973,0,12,1,91.74735,3.918857,0,0,0,95.66621,0,0,0,9,0,4,91,6.9,0,63.6,0,280.04,1,0,1.386294,5.634933,0,0,0,1,0,0,63.6,9.266045,1.386294,4.560865,1 +11,6,0,1,3,625903,0,10571.85,18.39973,0,12,1,16.08125,6.45366,0,0,0,22.53491,0,0,0,1,0,4,91,6.9,0,63.6,0,280.04,0,0,1.386294,5.634933,0,0,0,1,0,0,63.6,9.266045,1.386294,3.115066,1 +11,6,0,1,4,625903,0,10571.85,19.39973,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,91,6.9,0,63.6,0,280.04,0,0,1.386294,5.634933,0,0,0,1,0,0,63.6,9.266045,1.386294,,0 +11,6,0,1,5,625903,0,10571.85,20.39973,0,12,1,14.18685,7.269896,0,0,127.3356,148.7924,1,0,0,0,0,4,91,6.9,0,63.6,0,280.04,0,0,1.386294,5.634933,0,0,0,1,0,0,63.6,9.266045,1.386294,5.002552,1 +11,6,0,1,1,625904,0,7864.516,18.97604,1,11,1,22.29931,40.22795,0,0,0,62.52726,0,0,0,2,0,4,76.6,10.3,0,76.1,0,525.76,0,0,1.386294,6.264845,0,0,0,0,0,0,76.1,8.970243,1.386294,4.135602,1 +11,6,0,1,2,625904,0,7864.516,19.97604,1,11,1,48.18724,27.77421,32.14318,0,0,108.1046,0,0,0,5,0,4,76.6,10.3,0,76.1,0,525.76,0,0,1.386294,6.264845,0,0,0,0,0,0,76.1,8.970243,1.386294,4.6831,1 +11,6,0,1,3,625904,0,7864.516,20.97604,1,11,1,44.17333,38.59487,16.40724,0,0,99.17543,0,0,0,3,0,4,76.6,10.3,0,76.1,0,525.76,0,0,1.386294,6.264845,0,0,0,0,0,0,76.1,8.970243,1.386294,4.59689,1 +11,6,0,1,4,625904,0,7864.516,21.97604,1,11,1,30.97847,10.21156,0,0,0,41.19003,0,0,0,2,0,5,76.6,10.3,0,76.1,0,525.76,0,0,1.609438,6.264845,0,0,0,0,0,0,76.1,8.970243,1.609438,3.718196,1 +11,6,0,1,5,625904,0,7864.516,22.97604,1,11,1,79.24529,17.44425,21.56775,0,0,118.2573,0,0,0,2,0,5,76.6,10.3,0,76.1,0,525.76,0,0,1.609438,6.264845,0,0,0,0,0,0,76.1,8.970243,1.609438,4.772862,1 +11,6,0,1,1,625905,0,7864.516,40.32033,0,12,1,13.87512,0,39.68285,0,0,53.55798,0,0,0,2,0,4,88.8,0,1,96.6,0,525.76,0,0,1.386294,6.264845,0,0,0,0,0,0,96.6,8.970243,1.386294,3.980765,1 +11,6,0,1,2,625905,0,7864.516,41.32033,0,12,1,13.76778,0,13.36393,0,0,27.13171,0,0,0,1,0,4,88.8,0,1,96.6,0,525.76,0,0,1.386294,6.264845,0,0,0,0,0,0,96.6,8.970243,1.386294,3.300703,1 +11,6,0,1,3,625905,0,7864.516,42.32033,0,12,1,8.834665,0,21.03492,0,0,29.86958,0,0,0,1,0,4,88.8,0,1,96.6,0,525.76,0,0,1.386294,6.264845,0,0,0,0,0,0,96.6,8.970243,1.386294,3.396841,1 +11,6,0,1,4,625905,0,7864.516,43.32033,0,12,1,28.33396,0,0,0,0,28.33396,0,0,0,1,0,5,88.8,0,1,96.6,0,525.76,0,0,1.609438,6.264845,0,0,0,0,0,0,96.6,8.970243,1.609438,3.344061,1 +11,6,0,1,5,625905,0,7864.516,44.32033,0,12,1,13.72213,0,33.49228,0,0,47.21441,0,0,0,1,0,5,88.8,0,1,96.6,0,525.76,0,0,1.609438,6.264845,0,0,0,0,0,0,96.6,8.970243,1.609438,3.854699,1 +11,6,0,1,1,625906,0,7864.516,16.12868,1,12,1,34.68781,4.876115,25.76809,0,0,65.33201,0,0,0,3,0,4,81.4,3.4,0,71.6,0,525.76,1,1,1.386294,6.264845,0,0,0,0,0,0,71.6,8.970243,1.386294,4.179482,1 +11,6,0,1,2,625906,0,7864.516,17.12868,1,12,1,26.38825,3.946764,18.13676,0,322.8545,371.3263,1,0,0,3,0,4,81.4,3.4,0,71.6,0,525.76,1,1,1.386294,6.264845,0,0,0,0,0,0,71.6,8.970243,1.386294,5.917081,1 +11,6,0,1,3,625906,0,7864.516,18.12868,1,12,1,22.29701,18.93143,0,0,1142.617,1183.845,1,0,0,1,0,4,81.4,3.4,0,71.6,0,525.76,0,0,1.386294,6.264845,0,0,0,0,0,0,71.6,8.970243,1.386294,7.076523,1 +11,6,0,1,4,625906,0,7864.516,19.12868,1,12,1,35.13411,38.25463,24.93389,0,0,98.32263,0,0,0,3,0,5,81.4,3.4,0,71.6,0,525.76,0,0,1.609438,6.264845,0,0,0,0,0,0,71.6,8.970243,1.609438,4.588254,1 +11,6,0,1,5,625906,0,7864.516,20.12868,1,12,1,36.19211,57.46141,0,0,0,93.65352,0,0,0,3,0,5,81.4,3.4,0,71.6,0,525.76,0,0,1.609438,6.264845,0,0,0,0,0,0,71.6,8.970243,1.609438,4.539602,1 +11,6,0,1,1,625907,0,7864.516,37.28679,1,12,1,22.29931,31.29336,0,0,0,53.59267,0,0,0,2,0,4,93.1,10.3,0,71.6,0,525.76,0,0,1.386294,6.264845,0,0,0,0,0,0,71.6,8.970243,1.386294,3.981412,1 +11,6,0,1,2,625907,0,7864.516,38.28679,1,12,1,31.6659,33.79991,0,0,0,65.46581,0,0,0,1,0,4,93.1,10.3,0,71.6,0,525.76,0,0,1.386294,6.264845,0,0,0,0,0,0,71.6,8.970243,1.386294,4.181528,1 +11,6,0,1,3,625907,0,7864.516,39.28679,1,12,1,100.9676,31.43879,0,0,0,132.4064,0,0,0,4,0,4,93.1,10.3,0,71.6,0,525.76,0,0,1.386294,6.264845,0,0,0,0,0,0,71.6,8.970243,1.386294,4.885876,1 +11,6,0,1,4,625907,0,7864.516,40.28679,1,12,1,24.5561,33.0034,0,0,0,57.5595,0,0,0,3,0,5,93.1,10.3,0,71.6,0,525.76,0,0,1.609438,6.264845,0,0,0,0,0,0,71.6,8.970243,1.609438,4.052819,1 +11,6,0,1,5,625907,0,7864.516,41.28679,1,12,1,27.78731,88.95026,0,0,0,116.7376,0,0,0,2,0,5,93.1,10.3,0,71.6,0,525.76,0,0,1.609438,6.264845,0,0,0,0,0,0,71.6,8.970243,1.609438,4.759928,1 +14,6,95,0,1,625912,1,3400.922,50.4011,1,7,1,0,1.248413,0,0,0,1.248413,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,0,0,2.197225,3.883624,0,4.564348,3.934917,1,0,0,70.68995,8.132095,2.197225,.2218732,1 +14,6,95,0,2,625912,1,3400.922,51.4011,1,7,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,0,0,2.197225,3.883624,0,4.564348,3.934917,1,0,0,70.68995,8.132095,2.197225,,0 +14,6,95,0,3,625912,1,3400.922,52.4011,1,7,1,0,0,0,0,0,0,0,0,0,0,0,10,77.40034,10.57626,.1442925,,48.6,48.6,0,0,2.302585,3.883624,0,4.564348,3.934917,1,0,0,70.68995,8.132095,2.302585,,0 +14,6,95,0,1,625913,1,3400.922,16.56126,0,7,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,1,0,2.197225,3.883624,0,4.564348,3.934917,1,0,0,70.68995,8.132095,2.197225,,0 +14,6,95,0,2,625913,1,3400.922,17.56126,0,7,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,1,0,2.197225,3.883624,0,4.564348,3.934917,1,0,0,70.68995,8.132095,2.197225,,0 +14,6,95,0,1,625914,1,3400.922,11.93977,0,7,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,1,0,2.197225,3.883624,0,4.564348,3.934917,1,0,0,70.68995,8.132095,2.197225,,0 +14,6,95,0,2,625914,1,3400.922,12.93977,0,7,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,1,0,2.197225,3.883624,0,4.564348,3.934917,1,0,0,70.68995,8.132095,2.197225,,0 +14,6,95,0,3,625914,1,3400.922,13.93977,0,7,1,0,0,0,0,0,0,0,0,0,0,0,10,77.40034,10.57626,.1442925,,48.6,48.6,1,0,2.302585,3.883624,0,4.564348,3.934917,1,0,0,70.68995,8.132095,2.302585,,0 +14,6,95,0,1,625915,1,3400.922,15.44969,1,7,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,1,1,2.197225,3.883624,0,4.564348,3.934917,1,0,0,70.68995,8.132095,2.197225,,0 +14,6,95,0,2,625915,1,3400.922,16.44969,1,7,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,1,1,2.197225,3.883624,0,4.564348,3.934917,1,0,0,70.68995,8.132095,2.197225,,0 +14,6,95,0,3,625915,1,3400.922,17.44969,1,7,1,0,4.757785,0,0,0,4.757785,0,0,0,0,0,10,77.40034,10.57626,.1442925,,48.6,48.6,1,1,2.302585,3.883624,0,4.564348,3.934917,1,0,0,70.68995,8.132095,2.302585,1.559782,1 +14,6,95,0,1,625916,1,3400.922,18.24504,1,7,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,0,0,2.197225,3.883624,0,4.564348,3.934917,1,0,0,70.68995,8.132095,2.197225,,0 +14,6,95,0,2,625916,1,3400.922,19.24504,1,7,1,8.352316,13.11693,0,0,277.5247,298.9939,1,0,0,1,0,9,77.40034,10.57626,.1442925,,48.6,48.6,0,0,2.197225,3.883624,0,4.564348,3.934917,1,0,0,70.68995,8.132095,2.197225,5.700423,1 +14,6,95,0,3,625916,1,3400.922,20.24504,1,7,1,13.49481,4.259516,0,0,0,17.75433,0,0,0,1,0,10,77.40034,10.57626,.1442925,,48.6,48.6,0,0,2.302585,3.883624,0,4.564348,3.934917,1,0,0,70.68995,8.132095,2.302585,2.876629,1 +15,6,95,1,1,625924,0,20927.29,43.40315,1,9,1,17.92414,14.79783,0,0,0,32.72197,0,0,0,3,0,2,60.6,17.2,0,61.4,700,1032.64,0,0,.6931472,6.939874,0,4.564348,6.602374,1,0,0,61.4,9.948857,.6931472,3.488047,1 +15,6,95,1,1,625925,0,20927.29,47.86584,0,4,1,0,0,0,0,0,0,0,0,0,0,0,2,80.3,10.3,1,60.2,700,1032.64,0,0,.6931472,6.939874,0,4.564348,6.602374,1,0,0,60.2,9.948857,.6931472,,0 +14,6,95,1,1,625949,1,3984.164,33.82067,1,11,1,22.29931,33.1219,0,0,0,55.42121,0,0,0,2,2,4,69.1,3.4,1,68.1,294,409.6,0,0,1.386294,6.015181,0,4.564348,5.734873,0,1,0,68.1,8.290334,1.386294,4.014962,1 +14,6,95,1,2,625949,1,3984.164,34.82067,1,11,1,6.883892,10.5553,0,0,0,17.43919,0,0,0,1,0,5,69.1,3.4,1,68.1,294,409.6,0,0,1.609438,6.015181,0,4.564348,5.734873,0,1,0,68.1,8.290334,1.609438,2.85872,1 +14,6,95,1,3,625949,1,3984.164,35.82067,1,11,1,14.72444,9.852756,0,0,0,24.5772,0,0,0,1,0,6,69.1,3.4,1,68.1,294,409.6,0,0,1.791759,6.015181,0,4.564348,5.734873,0,1,0,68.1,8.290334,1.791759,3.201819,1 +14,6,95,1,4,625949,1,3984.164,36.82067,1,11,1,75.55724,16.81149,40.04533,0,0,132.414,0,0,0,9,1,6,69.1,3.4,1,68.1,294,409.6,0,0,1.791759,6.015181,0,4.564348,5.734873,0,1,0,68.1,8.290334,1.791759,4.885934,1 +14,6,95,1,5,625949,1,3984.164,37.82067,1,11,1,25.72899,47.18696,0,0,0,72.91595,0,0,0,3,0,6,69.1,3.4,1,68.1,294,409.6,0,0,1.791759,6.015181,0,4.564348,5.734873,0,1,0,68.1,8.290334,1.791759,4.289308,1 +14,6,95,1,1,625950,1,3984.164,17.84257,1,11,1,23.78593,13.13181,0,0,315.6591,352.5768,1,0,0,2,0,4,80.9,3.4,1,61.4,294,409.6,1,1,1.386294,6.015181,0,4.564348,5.734873,1,0,0,61.4,8.290334,1.386294,5.865269,1 +14,6,95,1,2,625950,1,3984.164,18.84257,1,11,1,4.589261,8.031207,0,0,302.8912,315.5117,1,0,0,0,0,5,80.9,3.4,1,61.4,294,409.6,0,0,1.609438,6.015181,0,4.564348,5.734873,1,0,0,61.4,8.290334,1.609438,5.754196,1 +14,6,95,1,3,625950,1,3984.164,19.84257,1,11,1,26.92469,4.101809,0,0,0,31.0265,0,0,0,2,0,6,80.9,3.4,1,61.4,294,409.6,0,0,1.791759,6.015181,0,4.564348,5.734873,1,0,0,61.4,8.290334,1.791759,3.434842,1 +14,6,95,1,4,625950,1,3984.164,20.84257,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,80.9,3.4,1,61.4,294,409.6,0,0,1.791759,6.015181,0,4.564348,5.734873,1,0,0,61.4,8.290334,1.791759,,0 +14,6,95,1,5,625950,1,3984.164,21.84257,1,11,1,38.76501,7.375643,0,0,0,46.14065,0,0,0,3,0,6,80.9,3.4,1,61.4,294,409.6,0,0,1.791759,6.015181,0,4.564348,5.734873,1,0,0,61.4,8.290334,1.791759,3.831694,1 +14,6,95,1,1,625951,1,3984.164,47.89049,0,9,1,33.69673,54.29633,0,0,0,87.99306,0,0,0,7,0,4,72.3,13.8,1,58,294,409.6,0,0,1.386294,6.015181,0,4.564348,5.734873,1,0,0,58,8.290334,1.386294,4.477258,1 +14,6,95,1,2,625951,1,3984.164,48.89049,0,9,1,123.4511,92.81781,0,0,0,216.2689,0,0,0,13,0,5,72.3,13.8,1,58,294,409.6,0,0,1.609438,6.015181,0,4.564348,5.734873,1,0,0,58,8.290334,1.609438,5.376523,1 +14,6,95,1,3,625951,1,3984.164,49.89049,0,9,1,93.81573,112.3223,0,0,0,206.138,0,0,0,7,0,6,72.3,13.8,1,58,294,409.6,0,0,1.791759,6.015181,0,4.564348,5.734873,1,0,0,58,8.290334,1.791759,5.328546,1 +14,6,95,1,4,625951,1,3984.164,50.89049,0,9,1,140.5365,128.7873,0,0,0,269.3238,0,0,0,17,0,6,72.3,13.8,1,58,294,409.6,0,0,1.791759,6.015181,0,4.564348,5.734873,1,0,0,58,8.290334,1.791759,5.595914,1 +14,6,95,1,5,625951,1,3984.164,51.89049,0,9,1,34.30532,130.0206,0,0,0,164.3259,0,0,0,10,0,6,72.3,13.8,1,58,294,409.6,0,0,1.791759,6.015181,0,4.564348,5.734873,1,0,0,58,8.290334,1.791759,5.101851,1 +14,6,95,1,1,625952,1,3984.164,13.02669,0,11,1,4.955401,4.088206,0,0,0,9.043608,0,0,0,1,0,4,80,10.57626,1,63,294,409.6,1,0,1.386294,6.015181,0,4.564348,5.734873,1,0,0,63,8.290334,1.386294,2.202058,1 +14,6,95,1,2,625952,1,3984.164,14.02669,0,11,1,49.56402,12.7352,0,0,0,62.29922,0,0,0,1,0,5,80,10.57626,1,63,294,409.6,1,0,1.609438,6.015181,0,4.564348,5.734873,1,0,0,63,8.290334,1.609438,4.131949,1 +14,6,95,1,3,625952,1,3984.164,15.02669,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,80,10.57626,1,63,294,409.6,1,0,1.791759,6.015181,0,4.564348,5.734873,1,0,0,63,8.290334,1.791759,,0 +14,6,95,1,4,625952,1,3984.164,16.02669,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,80,10.57626,1,63,294,409.6,1,0,1.791759,6.015181,0,4.564348,5.734873,1,0,0,63,8.290334,1.791759,,0 +14,6,95,1,5,625952,1,3984.164,17.02669,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,80,10.57626,1,63,294,409.6,1,0,1.791759,6.015181,0,4.564348,5.734873,1,0,0,63,8.290334,1.791759,,0 +6,6,25,1,1,625956,1,1024.066,53.83984,1,9,1,14.81168,0,0,0,0,14.81168,0,0,0,2,0,1,70.7,17.2,1,50,250,0,0,0,0,0,0,3.258096,6.907755,1,0,0,50,6.932512,0,2.695416,1 +6,6,25,1,2,625956,1,1024.066,54.83984,1,9,1,5.694761,11.18071,0,0,0,16.87547,0,0,0,1,0,1,70.7,17.2,1,50,250,0,0,0,0,0,0,3.258096,6.907755,1,0,0,50,6.932512,0,2.825861,1 +6,6,25,1,3,625956,1,1024.066,55.83984,1,9,1,12.80277,0,0,0,0,12.80277,0,0,0,1,0,1,70.7,17.2,1,50,250,0,0,0,0,0,0,3.258096,6.907755,1,0,0,50,6.932512,0,2.549661,1 +11,6,0,0,1,625958,0,8844.342,39.54004,1,12,1,0,21.51872,0,0,0,21.51872,0,0,0,0,0,3,71.8,31,1,63.6,0,0,0,0,1.098612,0,0,0,0,1,0,0,63.6,9.087646,1.098612,3.068923,1 +11,6,0,0,2,625958,0,8844.342,40.54004,1,12,1,30.60068,26.38836,31.73404,0,0,88.72308,0,0,0,2,0,3,71.8,31,1,63.6,0,0,0,0,1.098612,0,0,0,0,1,0,0,63.6,9.087646,1.098612,4.48552,1 +11,6,0,0,3,625958,0,8844.342,41.54004,1,12,1,25.04288,109.7702,0,0,0,134.813,0,0,0,2,0,3,71.8,31,1,63.6,0,0,0,0,1.098612,0,0,0,0,1,0,0,63.6,9.087646,1.098612,4.903889,1 +11,6,0,0,1,625959,0,8844.342,18.05339,0,10.62774,1,47.95961,6.352545,0,0,0,54.31216,0,0,0,4,0,3,78.2,10.3,0,72.7,0,0,0,0,1.098612,0,0,0,0,1,0,0,72.7,9.087646,1.098612,3.994748,1 +11,6,0,0,2,625959,0,8844.342,19.05339,0,10.62774,1,17.00038,5.421232,0,0,0,22.42161,0,0,0,3,0,3,78.2,10.3,0,72.7,0,0,0,0,1.098612,0,0,0,0,1,0,0,72.7,9.087646,1.098612,3.110025,1 +11,6,0,0,3,625959,0,8844.342,20.05339,0,10.62774,1,0,5.166381,0,0,0,5.166381,0,0,0,0,0,3,78.2,10.3,0,72.7,0,0,0,0,1.098612,0,0,0,0,1,0,0,72.7,9.087646,1.098612,1.642172,1 +11,6,0,0,1,625960,0,8844.342,43.37029,0,12,1,0,6.895246,0,0,0,6.895246,0,0,0,0,0,3,83,20.7,0,73.9,0,0,0,0,1.098612,0,0,0,0,1,0,0,73.9,9.087646,1.098612,1.930832,1 +11,6,0,0,2,625960,0,8844.342,44.37029,0,12,1,260.6725,1.122025,0,0,0,261.7945,0,0,0,1,22,3,83,20.7,0,73.9,0,0,0,0,1.098612,0,0,0,0,1,0,0,73.9,9.087646,1.098612,5.56756,1 +11,6,0,0,3,625960,0,8844.342,45.37029,0,12,1,123.4991,6.542024,42.06861,0,0,172.1098,0,0,0,1,9,3,83,20.7,0,73.9,0,0,0,0,1.098612,0,0,0,0,1,0,0,73.9,9.087646,1.098612,5.148132,1 +15,6,95,1,1,625967,1,3530.792,21.40452,1,9,1,30.46683,13.41523,0,0,0,43.88206,0,0,0,2,0,2,75.5,13.8,1,52.3,499.2,509.08,0,0,.6931472,6.232605,0,4.564348,6.2643,1,0,0,52.3,8.16956,.6931472,3.781506,1 +15,6,95,1,2,625967,1,3530.792,22.40452,1,9,1,12.76208,0,0,0,237.01,249.7721,1,1,0,0,0,2,75.5,13.8,1,52.3,499.2,509.08,0,0,.6931472,6.232605,0,4.564348,6.2643,1,0,0,52.3,8.16956,.6931472,5.520549,1 +15,6,95,1,3,625967,1,3530.792,23.40452,1,9,1,0,0,0,0,0,0,0,0,0,0,0,2,75.5,13.8,1,52.3,499.2,509.08,0,0,.6931472,6.232605,0,4.564348,6.2643,1,0,0,52.3,8.16956,.6931472,,0 +15,6,95,1,4,625967,1,3530.792,24.40452,1,9,1,23.25581,7.464366,0,0,0,30.72018,0,0,0,0,0,2,75.5,13.8,1,52.3,499.2,509.08,0,0,.6931472,6.232605,0,4.564348,6.2643,1,0,0,52.3,8.16956,.6931472,3.42492,1 +15,6,95,1,5,625967,1,3530.792,25.40452,1,9,1,0,0,0,0,0,0,0,0,0,0,0,2,75.5,13.8,1,52.3,499.2,509.08,0,0,.6931472,6.232605,0,4.564348,6.2643,1,0,0,52.3,8.16956,.6931472,,0 +15,6,95,1,1,625968,1,3530.792,27.2334,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,76.1,10.3,1,56.8,499.2,509.08,0,0,.6931472,6.232605,0,4.564348,6.2643,1,0,0,56.8,8.16956,.6931472,,0 +15,6,95,1,2,625968,1,3530.792,28.2334,0,12,.8109589,0,0,0,0,0,0,0,0,0,0,0,2,76.1,10.3,1,56.8,499.2,509.08,0,0,.6931472,6.232605,0,4.564348,6.2643,1,0,0,56.8,8.16956,.6931472,,0 +11,6,0,0,1,625976,0,3890.425,29.86174,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,60.6,10.3,0,90.9,0,366.48,0,0,.6931472,5.903944,0,0,0,1,0,0,90.9,8.266531,.6931472,,0 +11,6,0,0,2,625976,0,3890.425,30.86174,1,12,1,125.9542,0,7.633588,0,0,133.5878,0,0,0,1,15,2,60.6,10.3,0,90.9,0,366.48,0,0,.6931472,5.903944,0,0,0,1,0,0,90.9,8.266531,.6931472,4.894759,1 +11,6,0,0,3,625976,0,3890.425,31.86174,1,12,1,22.64808,0,0,0,0,22.64808,0,0,0,2,0,2,60.6,10.3,0,90.9,0,366.48,0,0,.6931472,5.903944,0,0,0,1,0,0,90.9,8.266531,.6931472,3.120075,1 +11,6,0,0,1,625977,0,3890.425,9.32512,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,68.3,10.57626,0,88.9,0,366.48,1,0,.6931472,5.903944,0,0,0,0,1,0,88.9,8.266531,.6931472,,0 +11,6,0,0,2,625977,0,3890.425,10.32512,0,12,1,7.633588,0,0,0,0,7.633588,0,0,0,2,0,2,68.3,10.57626,0,88.9,0,366.48,1,0,.6931472,5.903944,0,0,0,0,1,0,88.9,8.266531,.6931472,2.032558,1 +11,6,0,0,3,625977,0,3890.425,11.32512,0,12,1,13.24042,0,0,0,0,13.24042,0,0,0,2,0,2,68.3,10.57626,0,88.9,0,366.48,1,0,.6931472,5.903944,0,0,0,0,1,0,88.9,8.266531,.6931472,2.583274,1 +11,6,0,1,1,625993,0,11349.56,23.33196,1,15,1,9.415262,15.9663,33.69673,0,517.9633,577.0416,1,0,0,1,0,2,76.1,6.9,1,85.2,0,60,0,0,.6931472,4.094345,0,0,0,1,0,0,85.2,9.337023,.6931472,6.357914,1 +11,6,0,1,2,625993,0,11349.56,24.33196,1,15,1,39.92657,10.95916,0,0,0,50.88573,0,0,0,3,0,3,76.1,6.9,1,85.2,0,60,0,0,1.098612,4.094345,0,0,0,1,0,0,85.2,9.337023,1.098612,3.929582,1 +11,6,0,1,3,625993,0,11349.56,25.33196,1,15,1,73.62222,2.801851,0,0,0,76.42406,0,0,0,4,0,3,76.1,6.9,1,85.2,0,60,0,0,1.098612,4.094345,0,0,0,1,0,0,85.2,9.337023,1.098612,4.336298,1 +11,6,0,1,4,625993,0,11349.56,26.33196,1,15,1,51.75671,17.90329,0,0,0,69.66,0,0,0,4,0,3,76.1,6.9,1,85.2,0,60,0,0,1.098612,4.094345,0,0,0,1,0,0,85.2,9.337023,1.098612,4.243626,1 +11,6,0,1,5,625993,0,11349.56,27.33196,1,15,1,23.32762,4.991424,2.744425,0,706.9811,738.0446,1,0,0,2,0,3,76.1,6.9,1,85.2,0,60,0,0,1.098612,4.094345,0,0,0,1,0,0,85.2,9.337023,1.098612,6.604004,1 +11,6,0,1,1,625994,0,11349.56,24.81862,0,16,1,43.11199,0,37.50248,0,0,80.61447,0,0,0,4,0,2,76.6,10.3,0,56.8,0,60,0,0,.6931472,4.094345,0,0,0,1,0,0,56.8,9.337023,.6931472,4.389678,1 +11,6,0,1,2,625994,0,11349.56,25.81862,0,16,1,686.0945,0,2.294631,0,2794.86,3483.249,1,0,0,14,15,3,76.6,10.3,0,56.8,0,60,0,0,1.098612,4.094345,0,0,0,1,0,0,56.8,9.337023,1.098612,8.155721,1 +11,6,0,1,3,625994,0,11349.56,26.81862,0,16,1,274.2953,41.71645,22.08666,0,0,338.0984,0,0,0,13,4,3,76.6,10.3,0,56.8,0,60,0,0,1.098612,4.094345,0,0,0,1,0,0,56.8,9.337023,1.098612,5.823337,1 +11,6,0,1,4,625994,0,11349.56,27.81862,0,16,1,53.64564,39.1122,20.28712,0,0,113.045,0,0,0,7,0,3,76.6,10.3,0,56.8,0,60,0,0,1.098612,4.094345,0,0,0,1,0,0,56.8,9.337023,1.098612,4.727786,1 +11,6,0,1,5,625994,0,11349.56,28.81862,0,16,1,5.488851,25.48885,28.34648,0,0,59.32418,0,0,0,1,0,3,76.6,10.3,0,56.8,0,60,0,0,1.098612,4.094345,0,0,0,1,0,0,56.8,9.337023,1.098612,4.083017,1 +13,6,0,1,1,626008,0,7417.307,28.91718,0,17,1,0,9.627592,0,0,0,9.627592,0,0,0,0,0,2,82.4,0,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,75,8.911706,.6931472,2.264633,1 +13,6,0,1,2,626008,0,7417.307,29.91718,0,17,1,11.38952,0,26.57555,0,0,37.96507,0,0,0,0,1,2,82.4,0,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,75,8.911706,.6931472,3.636667,1 +13,6,0,1,3,626008,0,7417.307,30.91718,0,17,1,325.2595,0,41.52249,0,0,366.782,0,0,0,1,29,2,82.4,0,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,75,8.911706,.6931472,5.904768,1 +13,6,0,1,1,626009,0,7417.307,27.46338,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,90.4,13.8,0,78.4,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,78.4,8.911706,.6931472,,0 +13,6,0,1,2,626009,0,7417.307,28.46338,1,12,1,14.42673,0,0,0,0,14.42673,0,0,0,1,0,2,90.4,13.8,0,78.4,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,78.4,8.911706,.6931472,2.669083,1 +13,6,0,1,3,626009,0,7417.307,29.46338,1,12,1,25.95156,0,32.87197,0,0,58.82353,0,0,0,1,1,2,90.4,13.8,0,78.4,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,78.4,8.911706,.6931472,4.074542,1 +11,6,0,0,1,626533,0,6219.941,29.51951,1,12,1,33.20119,0,29.73241,0,0,62.9336,0,0,0,2,1,4,97.9,6.9,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,85.2,8.735677,1.386294,4.14208,1 +11,6,0,0,2,626533,0,6219.941,30.51951,1,12,1,59.20147,20.65167,0,0,0,79.85314,0,0,0,2,0,4,97.9,6.9,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,85.2,8.735677,1.386294,4.380189,1 +11,6,0,0,3,626533,0,6219.941,31.51951,1,12,1,47.95961,21.1443,0,21.03492,0,69.10391,0,0,1,5,0,4,97.9,6.9,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,85.2,8.735677,1.386294,4.235611,1 +11,6,0,0,4,626533,0,6219.941,32.51951,1,12,1,26.06725,28.70797,0,66.11258,0,54.77522,0,0,3,3,0,4,97.9,6.9,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,85.2,8.735677,1.386294,4.003238,1 +11,6,0,0,5,626533,0,6219.941,33.51951,1,12,1,134.4768,16.29502,0,18.86792,0,150.7719,0,0,1,5,0,4,97.9,6.9,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,85.2,8.735677,1.386294,5.015768,1 +11,6,0,0,1,626534,0,6219.941,6.55989,0,12,1,4.955401,7.056491,0,0,0,12.01189,0,0,0,1,0,4,98.3,10.57626,0,88.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,88.9,8.735677,1.386294,2.485897,1 +11,6,0,0,2,626534,0,6219.941,7.55989,0,12,1,0,4.589261,0,0,0,4.589261,0,0,0,0,0,4,98.3,10.57626,0,88.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,88.9,8.735677,1.386294,1.523719,1 +11,6,0,0,3,626534,0,6219.941,8.559891,0,12,1,0,5.153555,0,0,0,5.153555,0,0,0,0,0,4,98.3,10.57626,0,88.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,88.9,8.735677,1.386294,1.639687,1 +11,6,0,0,4,626534,0,6219.941,9.559891,0,12,1,0,6.120136,0,0,0,6.120136,0,0,0,0,0,4,98.3,10.57626,0,88.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,88.9,8.735677,1.386294,1.811584,1 +11,6,0,0,5,626534,0,6219.941,10.55989,0,12,1,5.831904,1.457976,0,0,0,7.28988,0,0,0,1,0,4,98.3,10.57626,0,88.9,0,0,1,0,1.386294,0,0,0,0,0,0,0,88.9,8.735677,1.386294,1.986487,1 +11,6,0,0,1,626535,0,6219.941,28.79398,0,12,1,9.910803,4.088206,38.15659,0,0,52.1556,0,0,0,0,1,4,96.3,3.4,0,86.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,86.4,8.735677,1.386294,3.954232,1 +11,6,0,0,2,626535,0,6219.941,29.79398,0,12,1,0,4.589261,0,0,0,4.589261,0,0,0,0,0,4,96.3,3.4,0,86.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,86.4,8.735677,1.386294,1.523719,1 +11,6,0,0,3,626535,0,6219.941,30.79398,0,12,1,6.310475,0,27.34539,147.2444,0,33.65587,0,0,8,1,0,4,96.3,3.4,0,86.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,86.4,8.735677,1.386294,3.516187,1 +11,6,0,0,4,626535,0,6219.941,31.79398,0,12,1,0,12.65584,0,0,0,12.65584,0,0,0,0,0,4,96.3,3.4,0,86.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,86.4,8.735677,1.386294,2.538119,1 +11,6,0,0,5,626535,0,6219.941,32.79398,0,12,1,0,6.7753,28.34648,0,0,35.12178,0,0,0,0,0,4,96.3,3.4,0,86.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,86.4,8.735677,1.386294,3.558822,1 +10,6,50,0,1,626540,0,10082.44,20.76386,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,72.3,17.2,0,62.5,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,62.5,9.21865,1.098612,,0 +10,6,50,0,2,626540,0,10082.44,21.76386,0,10,1,0,0,0,0,0,0,0,0,0,0,0,3,72.3,17.2,0,62.5,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,62.5,9.21865,1.098612,,0 +10,6,50,0,3,626540,0,10082.44,22.76386,0,10,1,15.43739,0,28.34648,0,0,43.78388,0,0,0,1,0,3,72.3,17.2,0,62.5,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,62.5,9.21865,1.098612,3.779266,1 +10,6,50,1,1,626541,0,10082.44,61.84531,0,10,1,35.75936,13.04165,0,0,0,48.80101,0,0,0,5,0,3,58,20.7,0,48.9,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,1,0,48.9,9.21865,1.098612,3.887751,1 +10,6,50,1,2,626541,0,10082.44,62.84531,0,10,1,73.29052,17.8504,136.003,0,641.4809,868.6249,1,0,0,5,0,3,58,20.7,0,48.9,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,1,0,48.9,9.21865,1.098612,6.766912,1 +10,6,50,1,3,626541,0,10082.44,63.84531,0,10,1,0,2.144082,0,0,0,2.144082,0,0,0,0,0,3,58,20.7,0,48.9,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,1,0,48.9,9.21865,1.098612,.7627116,1 +10,6,50,1,1,626542,0,10082.44,61.49487,1,11,1,0,19.66765,0,0,0,19.66765,0,0,0,0,0,3,73.9,6.9,0,75,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,75,9.21865,1.098612,2.978975,1 +10,6,50,1,2,626542,0,10082.44,62.49487,1,11,1,15.11145,0,37.02304,0,0,52.13449,0,0,0,1,0,3,73.9,6.9,0,75,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,75,9.21865,1.098612,3.953827,1 +10,6,50,1,3,626542,0,10082.44,63.49487,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,73.9,6.9,0,75,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,75,9.21865,1.098612,,0 +11,6,0,0,1,626597,0,0,25.34155,0,12,1,8.463818,3.135844,0,0,0,11.59966,0,0,0,2,0,1,74.5,0,0,75,0,154.44,0,0,0,5.039806,0,0,0,0,1,0,75,0,0,2.450976,1 +11,6,0,0,2,626597,0,0,26.34155,0,12,1,33.02961,9.350798,0,0,0,42.38041,0,0,0,3,0,1,74.5,0,0,75,0,154.44,0,0,0,5.039806,0,0,0,0,1,0,75,0,0,3.746686,1 +11,6,0,0,3,626597,0,0,27.34155,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,74.5,0,0,75,0,154.44,0,0,0,5.039806,0,0,0,0,1,0,75,0,0,,0 +11,6,0,0,1,626598,0,1011.777,25.34155,0,13,1,33.43208,3.508252,0,0,0,36.94033,0,0,0,4,0,1,61.7,10.3,0,81.8,0,154.44,0,0,0,5.039806,0,0,0,0,1,0,81.8,6.920451,0,3.609304,1 +11,6,0,0,2,626598,0,1011.777,26.34155,0,13,1,3.796507,17.1792,0,0,0,20.9757,0,0,0,1,0,1,61.7,10.3,0,81.8,0,154.44,0,0,0,5.039806,0,0,0,0,1,0,81.8,6.920451,0,3.043365,1 +11,6,0,0,3,626598,0,1011.777,27.34155,0,13,1,10.38062,4.792387,0,0,0,15.17301,0,0,0,3,0,1,61.7,10.3,0,81.8,0,154.44,0,0,0,5.039806,0,0,0,0,1,0,81.8,6.920451,0,2.719518,1 +11,6,0,0,1,626740,1,5123.912,57.1499,0,8,1,0,0,0,0,0,0,0,0,0,0,0,2,66.1,13.8,0,60.2,0,192.48,0,0,.6931472,5.259992,0,0,0,1,0,0,60.2,8.541868,.6931472,,0 +11,6,0,0,2,626740,1,5123.912,58.1499,0,8,1,13.66743,0,0,0,0,13.66743,0,0,0,2,0,2,66.1,13.8,0,60.2,0,192.48,0,0,.6931472,5.259992,0,0,0,1,0,0,60.2,8.541868,.6931472,2.615015,1 +11,6,0,0,3,626740,1,5123.912,59.1499,0,8,1,9.342561,0,0,0,0,9.342561,0,0,0,1,0,3,66.1,13.8,0,60.2,0,192.48,0,0,1.098612,5.259992,0,0,0,1,0,0,60.2,8.541868,1.098612,2.23458,1 +11,6,0,0,1,626741,1,5123.912,37.53867,1,12,1,84.21498,19.17055,0,0,0,103.3855,0,0,0,6,0,2,67,17.2,0,62.5,0,192.48,0,0,.6931472,5.259992,0,0,0,0,1,0,62.5,8.541868,.6931472,4.638465,1 +11,6,0,0,2,626741,1,5123.912,38.53867,1,12,1,216.0213,10.20121,0,0,2616.173,2842.396,2,0,0,10,0,2,67,17.2,0,62.5,0,192.48,0,0,.6931472,5.259992,0,0,0,0,1,0,62.5,8.541868,.6931472,7.952403,1 +11,6,0,0,3,626741,1,5123.912,39.53867,1,12,1,49.82699,0,31.14187,0,0,80.96886,0,0,0,3,0,3,67,17.2,0,62.5,0,192.48,0,0,1.098612,5.259992,0,0,0,0,1,0,62.5,8.541868,1.098612,4.394064,1 +16,6,95,1,1,626754,1,0,41.87269,1,6,1,23.78593,67.6115,0,0,0,91.39742,0,0,0,2,0,1,81.9,6.9,1,69.3,315.15,315.05,0,0,0,5.752731,0,4.564348,5.804342,0,1,0,69.3,0,0,4.515217,1 +16,6,95,1,2,626754,1,0,42.87269,1,6,1,11.47315,4.589261,0,0,0,16.06241,0,0,0,1,0,1,81.9,6.9,1,69.3,315.15,315.05,0,0,0,5.752731,0,4.564348,5.804342,0,1,0,69.3,0,0,2.776482,1 +16,6,95,1,3,626754,1,0,43.87269,1,6,1,34.49726,25.87295,2.734539,0,0,63.10476,0,0,0,3,0,1,81.9,6.9,1,69.3,315.15,315.05,0,0,0,5.752731,0,4.564348,5.804342,0,1,0,69.3,0,0,4.144796,1 +16,6,95,1,4,626754,1,0,44.87269,1,6,1,47.22327,37.84284,0,0,0,85.06612,0,0,0,4,0,1,81.9,6.9,1,69.3,315.15,315.05,0,0,0,5.752731,0,4.564348,5.804342,0,1,0,69.3,0,0,4.443429,1 +16,6,95,1,5,626754,1,0,45.87269,1,6,1,37.04974,38.21269,35.67753,0,0,110.94,0,0,0,4,0,1,81.9,6.9,1,69.3,315.15,315.05,0,0,0,5.752731,0,4.564348,5.804342,0,1,0,69.3,0,0,4.708989,1 +13,6,0,1,1,626798,1,6735.316,30.06434,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,52.1,3.4,0,59.1,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,59.1,8.815269,0,,0 +13,6,0,1,2,626798,1,6735.316,31.06434,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,52.1,3.4,0,59.1,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,59.1,8.815269,0,,0 +13,6,0,1,3,626798,1,6735.316,32.06434,0,12,1,19.03114,0,38.97232,0,0,58.00346,0,0,0,1,0,1,52.1,3.4,0,59.1,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,59.1,8.815269,0,4.060503,1 +6,6,25,1,1,626875,1,1656.426,61.48118,1,2,1,72.78883,36.16166,38.08718,0,0,147.0377,0,0,0,7,1,2,83,24.1,1,52.3,318,318,0,0,.6931472,5.762052,0,3.258096,7.148346,0,1,0,52.3,7.413021,.6931472,4.990689,1 +6,6,25,1,2,626875,1,1656.426,62.48118,1,2,1,120.3493,123.8041,0,0,0,244.1534,0,0,0,19,0,2,83,24.1,1,52.3,318,318,0,0,.6931472,5.762052,0,3.258096,7.148346,0,1,0,52.3,7.413021,.6931472,5.497797,1 +6,6,25,1,3,626875,1,1656.426,63.48118,1,2,1,46.02076,58.73356,0,0,0,104.7543,0,0,0,6,0,2,83,24.1,1,52.3,318,318,0,0,.6931472,5.762052,0,3.258096,7.148346,0,1,0,52.3,7.413021,.6931472,4.651618,1 +6,6,25,1,1,626876,.5112414,6735.316,18.987,1,10.5,1,0,0,0,0,0,0,0,0,0,0,0,2,49.5,3.4,0,58,100,0,0,0,.6931472,0,0,3.258096,5.991465,0,0,0,58,8.815269,.6931472,,0 +6,6,25,1,2,626876,.5112414,6735.316,19.987,1,10.5,1,0,0,0,0,0,0,0,0,0,0,0,2,49.5,3.4,0,58,100,0,0,0,.6931472,0,0,3.258096,5.991465,0,0,0,58,8.815269,.6931472,,0 +6,6,25,1,3,626876,.5112414,6735.316,20.987,1,10.5,1,32.17993,9.038062,0,0,0,41.21799,0,0,0,3,0,2,49.5,3.4,0,58,100,0,0,0,.6931472,0,0,3.258096,5.991465,0,0,0,58,8.815269,.6931472,3.718875,1 +6,6,25,1,1,626877,1,1656.426,13.69199,0,2,1,6.347863,2.433347,0,0,0,8.78121,0,0,0,1,0,2,90,10.57626,0,92.6,318,318,1,0,.6931472,5.762052,0,3.258096,7.148346,0,0,0,92.6,7.413021,.6931472,2.172614,1 +6,6,25,1,2,626877,1,1656.426,14.69199,0,2,1,14.80638,0,0,0,0,14.80638,0,0,0,2,0,2,90,10.57626,0,92.6,318,318,1,0,.6931472,5.762052,0,3.258096,7.148346,0,0,0,92.6,7.413021,.6931472,2.695058,1 +6,6,25,1,3,626877,1,1656.426,15.69199,0,2,1,26.98962,2.477509,0,0,0,29.46713,0,0,0,3,0,2,90,10.57626,0,92.6,318,318,1,0,.6931472,5.762052,0,3.258096,7.148346,0,0,0,92.6,7.413021,.6931472,3.383275,1 +13,6,0,1,1,626878,1,1982.991,51.36482,0,12,1,0,0,0,0,113.217,113.217,1,1,0,0,0,2,52.1,34.5,1,22.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,22.7,7.592866,.6931472,4.729306,1 +13,6,0,1,2,626878,1,1982.991,52.36482,0,12,1,9.22084,0,32.27294,0,0,41.49377,0,0,0,0,1,2,52.1,34.5,1,22.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,22.7,7.592866,.6931472,3.725543,1 +13,6,0,1,3,626878,1,1982.991,53.36482,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,52.1,34.5,1,22.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,22.7,7.592866,.6931472,,0 +13,6,0,1,4,626878,1,1982.991,54.36482,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,52.1,34.5,1,22.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,22.7,7.592866,.6931472,,0 +13,6,0,1,5,626878,1,1982.991,55.36482,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,52.1,34.5,1,22.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,22.7,7.592866,.6931472,,0 +13,6,0,1,1,626879,1,1982.991,55.26625,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,53.7,10.3,1,30.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,30.7,7.592866,.6931472,,0 +13,6,0,1,2,626879,1,1982.991,56.26625,1,8,1,9.22084,0,32.27294,0,0,41.49377,0,0,0,0,1,2,53.7,10.3,1,30.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,30.7,7.592866,.6931472,3.725543,1 +13,6,0,1,3,626879,1,1982.991,57.26625,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,53.7,10.3,1,30.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,30.7,7.592866,.6931472,,0 +13,6,0,1,4,626879,1,1982.991,58.26625,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,53.7,10.3,1,30.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,30.7,7.592866,.6931472,,0 +13,6,0,1,5,626879,1,1982.991,59.26625,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,53.7,10.3,1,30.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,30.7,7.592866,.6931472,,0 +13,6,0,1,1,626927,0,6735.316,36.38604,1,17,1,0,0,0,0,0,0,0,0,0,0,0,5,81.9,3.4,0,63.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,63.6,8.815269,1.609438,,0 +13,6,0,1,2,626927,0,6735.316,37.38604,1,17,1,5.343512,0,0,0,0,5.343512,0,0,0,1,0,5,81.9,3.4,0,63.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,63.6,8.815269,1.609438,1.675883,1 +13,6,0,1,3,626927,0,6735.316,38.38604,1,17,1,0,0,0,0,0,0,0,0,0,0,0,5,81.9,3.4,0,63.6,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,63.6,8.815269,1.609438,,0 +13,6,0,1,1,626928,0,6735.316,37.39357,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,89.9,13.8,0,78.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.815269,1.609438,,0 +13,6,0,1,2,626928,0,6735.316,38.39357,0,16,1,5.343512,0,0,0,0,5.343512,0,0,0,1,0,5,89.9,13.8,0,78.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.815269,1.609438,1.675883,1 +13,6,0,1,3,626928,0,6735.316,39.39357,0,16,1,0,0,0,0,0,0,0,0,0,0,0,5,89.9,13.8,0,78.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.815269,1.609438,,0 +13,6,0,1,1,626929,0,6735.316,9.932922,1,17,1,0,0,0,0,0,0,0,0,0,0,0,5,76.7,10.57626,0,85.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.815269,1.609438,,0 +13,6,0,1,2,626929,0,6735.316,10.93292,1,17,1,0,0,0,0,0,0,0,0,0,0,0,5,76.7,10.57626,0,85.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.815269,1.609438,,0 +13,6,0,1,3,626929,0,6735.316,11.93292,1,17,1,0,0,0,0,0,0,0,0,0,0,0,5,76.7,10.57626,0,85.2,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.815269,1.609438,,0 +13,6,0,1,1,626930,0,6735.316,14.20397,0,17,1,0,0,0,0,0,0,0,0,0,0,0,5,86.2,3.4,0,81.8,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.8,8.815269,1.609438,,0 +13,6,0,1,2,626930,0,6735.316,15.20397,0,17,1,43.12977,0,28.62595,0,0,71.75572,0,0,0,1,1,5,86.2,3.4,0,81.8,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.8,8.815269,1.609438,4.273268,1 +13,6,0,1,3,626930,0,6735.316,16.20397,0,17,1,0,0,0,0,0,0,0,0,0,0,0,5,86.2,3.4,0,81.8,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,81.8,8.815269,1.609438,,0 +13,6,0,1,1,626931,0,6735.316,7.824778,0,17,1,0,0,0,0,0,0,0,0,0,0,0,5,83.3,10.57626,0,85.2,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,85.2,8.815269,1.609438,,0 +13,6,0,1,2,626931,0,6735.316,8.824778,0,17,1,2.671756,0,0,0,0,2.671756,0,0,0,1,0,5,83.3,10.57626,0,85.2,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,85.2,8.815269,1.609438,.9827359,1 +13,6,0,1,3,626931,0,6735.316,9.824778,0,17,1,0,0,0,0,0,0,0,0,0,0,0,5,83.3,10.57626,0,85.2,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,85.2,8.815269,1.609438,,0 +19,6,25,1,1,626942,1,13454.69,38.62286,0,16,1,7.57257,0,0,0,0,7.57257,0,0,0,0,0,3,79.8,3.4,0,96.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,96.6,9.507157,1.098612,2.024533,1 +19,6,25,1,2,626942,1,13454.69,39.62286,0,16,1,40.80091,0,0,0,0,40.80091,0,0,0,6,0,3,79.8,3.4,0,96.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,96.6,9.507157,1.098612,3.708704,1 +19,6,25,1,3,626942,1,13454.69,40.62286,0,16,1,17.15266,4.596912,0,0,0,21.74957,0,0,0,1,0,3,79.8,3.4,0,96.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,96.6,9.507157,1.098612,3.079594,1 +19,6,25,1,1,626943,1,13454.69,37.86995,1,18,1,22.71771,5.258729,0,0,0,27.97644,0,0,0,2,0,3,88.8,10.3,0,63.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,63.6,9.507157,1.098612,3.331363,1 +19,6,25,1,2,626943,1,13454.69,38.86995,1,18,1,28.71175,13.54741,0,0,0,42.25916,0,0,0,4,0,3,88.8,10.3,0,63.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,63.6,9.507157,1.098612,3.743821,1 +19,6,25,1,3,626943,1,13454.69,39.86995,1,18,1,36.02058,8.147512,32.82333,0,0,76.99142,0,0,0,4,0,3,88.8,10.3,0,63.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,63.6,9.507157,1.098612,4.343694,1 +19,6,25,1,1,626944,1,13454.69,11.46064,0,18,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,10.57626,0,92.6,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.507157,1.098612,,0 +19,6,25,1,2,626944,1,13454.69,12.46064,0,18,1,216.4715,0,0,0,0,216.4715,0,0,0,1,0,3,88.3,10.57626,0,92.6,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.507157,1.098612,5.377459,1 +19,6,25,1,3,626944,1,13454.69,13.46064,0,18,1,19.55403,0,33.89022,0,0,53.44425,0,0,0,2,0,3,88.3,10.57626,0,92.6,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.507157,1.098612,3.978639,1 +13,6,0,0,1,626945,0,8023.042,35.23888,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,87.8,10.3,0,86.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,86.4,8.990197,1.609438,,0 +13,6,0,0,2,626945,0,8023.042,36.23888,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,87.8,10.3,0,86.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,86.4,8.990197,1.609438,,0 +13,6,0,0,3,626945,0,8023.042,37.23888,1,12,1,13.72213,0,0,0,0,13.72213,0,0,0,1,0,5,87.8,10.3,0,86.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,86.4,8.990197,1.609438,2.61901,1 +13,6,0,0,1,626946,0,8023.042,14.35181,1,12,1,14.72444,0,17.66933,0,0,32.39377,0,0,0,1,0,5,92.6,6.9,0,80.7,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,80.7,8.990197,1.609438,3.477966,1 +13,6,0,0,2,626946,0,8023.042,15.35181,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,92.6,6.9,0,80.7,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,80.7,8.990197,1.609438,,0 +13,6,0,0,3,626946,0,8023.042,16.35181,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,92.6,6.9,0,80.7,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,80.7,8.990197,1.609438,,0 +13,6,0,0,1,626947,0,8023.042,8.966461,0,12,1,5.469079,6.411443,0,0,0,11.88052,0,0,0,1,0,5,95,10.57626,0,70.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,70.4,8.990197,1.609438,2.4749,1 +13,6,0,0,2,626947,0,8023.042,9.966461,0,12,1,0,5.232338,0,0,0,5.232338,0,0,0,0,0,5,95,10.57626,0,70.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,70.4,8.990197,1.609438,1.654858,1 +13,6,0,0,3,626947,0,8023.042,10.96646,0,12,1,19.89708,6.00343,0,0,0,25.90051,0,0,0,1,1,5,95,10.57626,0,70.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,70.4,8.990197,1.609438,3.254263,1 +13,6,0,0,1,626948,0,8023.042,35.68789,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,84.6,6.9,0,78.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.990197,1.609438,,0 +13,6,0,0,2,626948,0,8023.042,36.68789,0,12,1,0,4.684548,0,0,0,4.684548,0,0,0,0,0,5,84.6,6.9,0,78.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.990197,1.609438,1.54427,1 +13,6,0,0,3,626948,0,8023.042,37.68789,0,12,1,27.44425,5.022298,0,0,0,32.46655,0,0,0,3,0,5,84.6,6.9,0,78.4,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,78.4,8.990197,1.609438,3.48021,1 +13,6,0,0,1,626967,0,10599.08,58.29979,1,11,1,72.94706,178.1409,33.34723,0,0,284.4352,0,0,0,5,1,1,85.1,34.5,1,50,150,209.04,0,0,0,5.342525,1,4.564348,5.061929,0,1,0,50,9.268617,0,5.650506,1 +13,6,0,0,2,626967,0,10599.08,59.29979,1,11,1,63.39085,185.5326,0,0,555.1388,804.0623,1,0,0,6,0,1,85.1,34.5,1,50,150,209.04,0,0,0,5.342525,1,4.564348,5.061929,0,1,0,50,9.268617,0,6.689677,1 +13,6,0,0,3,626967,0,10599.08,60.29979,1,11,1,62.58458,156.3227,0,0,345.0609,563.9682,1,0,0,5,0,1,85.1,34.5,1,50,150,209.04,0,0,0,5.342525,1,4.564348,5.061929,0,1,0,50,9.268617,0,6.334998,1 +13,6,0,0,1,626978,0,4300.051,25.38261,0,7,1,0,0,0,0,0,0,0,0,0,0,0,3,62.2,6.9,0,85.2,450,0,0,0,1.098612,0,1,4.564348,6.160541,1,0,0,85.2,8.366614,1.098612,,0 +13,6,0,0,2,626978,0,4300.051,26.38261,0,7,1,0,0,0,0,0,0,0,0,0,0,0,3,62.2,6.9,0,85.2,450,0,0,0,1.098612,0,1,4.564348,6.160541,1,0,0,85.2,8.366614,1.098612,,0 +13,6,0,0,3,626978,0,4300.051,27.38261,0,7,1,0,0,0,0,0,0,0,0,0,0,0,3,62.2,6.9,0,85.2,450,0,0,0,1.098612,0,1,4.564348,6.160541,1,0,0,85.2,8.366614,1.098612,,0 +13,6,0,0,1,626979,0,4300.051,22.20397,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,92,3.4,0,85.2,450,0,0,0,1.098612,0,1,4.564348,6.160541,1,0,0,85.2,8.366614,1.098612,,0 +13,6,0,0,2,626979,0,4300.051,23.20397,1,8,1,48.21564,42.50949,0,0,539.4837,630.2088,1,0,0,3,0,3,92,3.4,0,85.2,450,0,0,0,1.098612,0,1,4.564348,6.160541,1,0,0,85.2,8.366614,1.098612,6.446051,1 +13,6,0,0,3,626979,0,4300.051,24.20397,1,8,1,15.57093,51.06574,0,0,0,66.63668,0,0,0,2,0,3,92,3.4,0,85.2,450,0,0,0,1.098612,0,1,4.564348,6.160541,1,0,0,85.2,8.366614,1.098612,4.199255,1 +13,6,0,0,1,626980,0,4300.051,6.491444,0,8,1,13.54211,0,0,0,0,13.54211,0,0,0,0,0,3,88.3,10.57626,.1442925,100,450,0,1,0,1.098612,0,1,4.564348,6.160541,1,0,0,100,8.366614,1.098612,2.605804,1 +13,6,0,0,2,626980,0,4300.051,7.491444,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,10.57626,.1442925,100,450,0,1,0,1.098612,0,1,4.564348,6.160541,1,0,0,100,8.366614,1.098612,,0 +13,6,0,0,3,626980,0,4300.051,8.491445,0,8,1,29.06574,.8442907,0,0,0,29.91003,0,0,0,0,0,3,88.3,10.57626,.1442925,100,450,0,1,0,1.098612,0,1,4.564348,6.160541,1,0,0,100,8.366614,1.098612,3.398194,1 +17,6,25,1,1,626995,0,7335.381,27.64956,1,6,1,12.76053,0,0,0,0,12.76053,0,0,0,1,0,3,79.8,20.7,0,37.5,692.3,692.3,0,0,1.098612,6.54002,0,3.258096,7.926314,1,0,0,37.5,8.900601,1.098612,2.546357,1 +17,6,25,1,2,626995,0,7335.381,28.64956,1,6,1,185.8779,0,0,0,0,185.8779,0,0,0,4,0,3,79.8,20.7,0,37.5,692.3,692.3,0,0,1.098612,6.54002,0,3.258096,7.926314,1,0,0,37.5,8.900601,1.098612,5.22509,1 +17,6,25,1,3,626995,0,7335.381,29.64956,1,6,1,18.11847,0,0,0,0,18.11847,0,0,0,1,0,3,79.8,20.7,0,37.5,692.3,692.3,0,0,1.098612,6.54002,0,3.258096,7.926314,1,0,0,37.5,8.900601,1.098612,2.896932,1 +17,6,25,1,1,626996,0,7335.381,8.29295,1,6,1,0,2.020417,0,0,0,2.020417,0,0,0,0,0,3,86.7,10.57626,0,70.4,692.3,692.3,1,1,1.098612,6.54002,0,3.258096,7.926314,0,0,0,70.4,8.900601,1.098612,.7033038,1 +17,6,25,1,2,626996,0,7335.381,9.29295,1,6,1,29.00763,0,0,0,0,29.00763,0,0,0,0,0,3,86.7,10.57626,0,70.4,692.3,692.3,1,1,1.098612,6.54002,0,3.258096,7.926314,0,0,0,70.4,8.900601,1.098612,3.367559,1 +17,6,25,1,3,626996,0,7335.381,10.29295,1,6,1,14.98258,0,0,0,0,14.98258,0,0,0,0,0,3,86.7,10.57626,0,70.4,692.3,692.3,1,1,1.098612,6.54002,0,3.258096,7.926314,0,0,0,70.4,8.900601,1.098612,2.706888,1 +17,6,25,1,1,626997,0,7335.381,44.35044,0,6,1,0,0,0,0,0,0,0,0,0,0,0,3,79.8,10.3,0,69.3,692.3,692.3,0,0,1.098612,6.54002,0,3.258096,7.926314,1,0,0,69.3,8.900601,1.098612,,0 +17,6,25,1,2,626997,0,7335.381,45.35044,0,6,1,0,0,0,0,0,0,0,0,0,0,0,3,79.8,10.3,0,69.3,692.3,692.3,0,0,1.098612,6.54002,0,3.258096,7.926314,1,0,0,69.3,8.900601,1.098612,,0 +17,6,25,1,3,626997,0,7335.381,46.35044,0,6,1,0,0,0,0,0,0,0,0,0,0,0,3,79.8,10.3,0,69.3,692.3,692.3,0,0,1.098612,6.54002,0,3.258096,7.926314,1,0,0,69.3,8.900601,1.098612,,0 +13,6,0,1,1,627004,1,6735.316,25.40452,1,11,1,48.66695,0,0,0,0,48.66695,0,0,0,0,0,4,70.7,6.9,0,88.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,88.6,8.815269,1.386294,3.885,1 +13,6,0,1,2,627004,1,6735.316,26.40452,1,11,1,27.7145,6.59833,0,0,0,34.31283,0,0,0,2,0,4,70.7,6.9,0,88.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,88.6,8.815269,1.386294,3.535519,1 +13,6,0,1,3,627004,1,6735.316,27.40452,1,11,1,12.45675,0,0,0,0,12.45675,0,0,0,0,0,4,70.7,6.9,0,88.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,88.6,8.815269,1.386294,2.522262,1 +13,6,0,1,1,627005,1,6735.316,3.214237,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,70.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,70.4,8.815269,1.386294,,0 +13,6,0,1,2,627005,1,6735.316,4.214237,0,11,1,11.00987,0,0,0,0,11.00987,0,0,0,0,0,4,77.40034,10.57626,0,70.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,70.4,8.815269,1.386294,2.398792,1 +13,6,0,1,3,627005,1,6735.316,5.214237,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,70.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,70.4,8.815269,1.386294,,0 +13,6,0,1,1,627006,1,6735.316,8.079397,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,76.7,10.57626,1,48.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,48.1,8.815269,1.386294,,0 +13,6,0,1,2,627006,1,6735.316,9.079397,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,76.7,10.57626,1,48.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,48.1,8.815269,1.386294,,0 +13,6,0,1,3,627006,1,6735.316,10.0794,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,76.7,10.57626,1,48.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,48.1,8.815269,1.386294,,0 +13,6,0,1,1,627007,1,6735.316,4.939083,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,60,10.57626,0,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,77.8,8.815269,1.386294,,0 +13,6,0,1,2,627007,1,6735.316,5.939083,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,60,10.57626,0,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,77.8,8.815269,1.386294,,0 +13,6,0,1,3,627007,1,6735.316,6.939083,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,60,10.57626,0,77.8,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,77.8,8.815269,1.386294,,0 +16,6,95,0,1,627010,1,289.2985,4.815879,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,70.4,99,286,1,1,1.791759,5.655992,0,4.564348,4.646413,0,0,0,70.4,5.67091,1.791759,,0 +16,6,95,0,2,627010,1,289.2985,5.815879,1,12,1,18.88931,0,0,0,0,18.88931,0,0,0,2,0,6,77.40034,10.57626,0,70.4,99,286,1,1,1.791759,5.655992,0,4.564348,4.646413,0,0,0,70.4,5.67091,1.791759,2.938596,1 +16,6,95,0,3,627010,1,289.2985,6.815879,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,70.4,99,286,1,1,1.791759,5.655992,0,4.564348,4.646413,0,0,0,70.4,5.67091,1.791759,,0 +16,6,95,0,1,627011,1,289.2985,12.59138,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,95,10.57626,.1442925,51.9,99,286,1,0,1.791759,5.655992,0,4.564348,4.646413,0,0,0,51.9,5.67091,1.791759,,0 +16,6,95,0,2,627011,1,289.2985,13.59138,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,95,10.57626,.1442925,51.9,99,286,1,0,1.791759,5.655992,0,4.564348,4.646413,0,0,0,51.9,5.67091,1.791759,,0 +16,6,95,0,3,627011,1,289.2985,14.59138,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,95,10.57626,.1442925,51.9,99,286,1,0,1.791759,5.655992,0,4.564348,4.646413,0,0,0,51.9,5.67091,1.791759,,0 +16,6,95,0,1,627012,1,289.2985,19.85216,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,94.7,0,0,72.6,99,286,0,0,1.791759,5.655992,0,4.564348,4.646413,0,0,0,72.6,5.67091,1.791759,,0 +16,6,95,0,2,627012,1,289.2985,20.85216,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,94.7,0,0,72.6,99,286,0,0,1.791759,5.655992,0,4.564348,4.646413,0,0,0,72.6,5.67091,1.791759,,0 +16,6,95,0,3,627012,1,289.2985,21.85216,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,94.7,0,0,72.6,99,286,0,0,1.791759,5.655992,0,4.564348,4.646413,0,0,0,72.6,5.67091,1.791759,,0 +16,6,95,0,1,627013,1,289.2985,22.71869,1,12,1,11.35886,0,0,0,0,11.35886,0,0,0,1,0,6,54.8,34.5,0,56.8,99,286,0,0,1.791759,5.655992,0,4.564348,4.646413,0,0,0,56.8,5.67091,1.791759,2.429998,1 +16,6,95,0,2,627013,1,289.2985,23.71869,1,12,1,56.66793,2.077824,0,0,386.4753,445.221,1,0,0,5,0,6,54.8,34.5,0,56.8,99,286,0,0,1.791759,5.655992,0,4.564348,4.646413,0,0,0,56.8,5.67091,1.791759,6.098571,1 +16,6,95,0,3,627013,1,289.2985,24.71869,1,12,1,27.78731,6.106347,0,0,0,33.89365,0,0,0,0,0,6,54.8,34.5,0,56.8,99,286,0,0,1.791759,5.655992,0,4.564348,4.646413,0,0,0,56.8,5.67091,1.791759,3.523228,1 +16,6,95,0,1,627014,1,289.2985,45.08693,1,12,1,36.60076,42.23811,0,0,0,78.83887,0,0,0,4,0,6,62.2,27.6,1,54.5,99,286,0,0,1.791759,5.655992,0,4.564348,4.646413,1,0,0,54.5,5.67091,1.791759,4.367406,1 +16,6,95,0,2,627014,1,289.2985,46.08693,1,12,1,26.44503,59.23687,24.93389,0,0,110.6158,0,0,0,2,0,6,62.2,27.6,1,54.5,99,286,0,0,1.791759,5.655992,0,4.564348,4.646413,1,0,0,54.5,5.67091,1.791759,4.706063,1 +16,6,95,0,3,627014,1,289.2985,47.08693,1,12,1,0,20.01715,0,0,0,20.01715,0,0,0,0,0,6,62.2,27.6,1,54.5,99,286,0,0,1.791759,5.655992,0,4.564348,4.646413,1,0,0,54.5,5.67091,1.791759,2.99659,1 +16,6,95,0,1,627015,1,289.2985,10.7269,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,96.7,10.57626,.1442925,70.4,99,286,1,1,1.791759,5.655992,0,4.564348,4.646413,0,0,0,70.4,5.67091,1.791759,,0 +16,6,95,0,2,627015,1,289.2985,11.7269,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,96.7,10.57626,.1442925,70.4,99,286,1,1,1.791759,5.655992,0,4.564348,4.646413,0,0,0,70.4,5.67091,1.791759,,0 +16,6,95,0,3,627015,1,289.2985,12.7269,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,96.7,10.57626,.1442925,70.4,99,286,1,1,1.791759,5.655992,0,4.564348,4.646413,0,0,0,70.4,5.67091,1.791759,,0 +13,6,0,1,1,627016,1,6735.316,11.39767,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,77.8,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.815269,1.791759,,0 +13,6,0,1,2,627016,1,6735.316,12.39767,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,77.8,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.815269,1.791759,,0 +13,6,0,1,3,627016,1,6735.316,13.39767,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,77.8,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.815269,1.791759,,0 +13,6,0,1,4,627016,1,6735.316,14.39767,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,77.8,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.815269,1.791759,,0 +13,6,0,1,5,627016,1,6735.316,15.39767,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,88.3,10.57626,0,77.8,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.815269,1.94591,,0 +13,6,0,1,1,627017,1,6735.316,35.0527,1,11,1,5.985037,3.890274,0,0,0,9.875312,0,0,0,1,0,6,55.3,3.4,0,56.8,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,56.8,8.815269,1.791759,2.290038,1 +13,6,0,1,2,627017,1,6735.316,36.0527,1,11,1,61.77962,0,0,0,0,61.77962,0,0,0,3,0,6,55.3,3.4,0,56.8,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,56.8,8.815269,1.791759,4.123574,1 +13,6,0,1,3,627017,1,6735.316,37.0527,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,55.3,3.4,0,56.8,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,56.8,8.815269,1.791759,,0 +13,6,0,1,4,627017,1,6735.316,38.0527,1,11,1,16.32498,0,0,0,1152.999,1169.324,1,0,0,2,0,6,55.3,3.4,0,56.8,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,56.8,8.815269,1.791759,7.064181,1 +13,6,0,1,5,627017,1,6735.316,39.0527,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,55.3,3.4,0,56.8,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,1,0,0,56.8,8.815269,1.94591,,0 +13,6,0,1,1,627018,1,6735.316,34.51609,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,72.2,3.4,0,68.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,68.2,8.815269,1.791759,,0 +13,6,0,1,2,627018,1,6735.316,35.51609,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,72.2,3.4,0,68.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,68.2,8.815269,1.791759,,0 +13,6,0,1,3,627018,1,6735.316,36.51609,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,72.2,3.4,0,68.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,68.2,8.815269,1.791759,,0 +13,6,0,1,4,627018,1,6735.316,37.51609,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,72.2,3.4,0,68.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,68.2,8.815269,1.791759,,0 +13,6,0,1,5,627018,1,6735.316,38.51609,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,72.2,3.4,0,68.2,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,1,0,0,68.2,8.815269,1.94591,,0 +13,6,0,1,1,627019,1,6735.316,1.998631,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,70.4,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.815269,1.791759,,0 +13,6,0,1,2,627019,1,6735.316,2.998631,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,70.4,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.815269,1.791759,,0 +13,6,0,1,3,627019,1,6735.316,3.998631,0,11,1,16.92764,4.020313,0,0,0,20.94795,0,0,0,1,0,6,77.40034,10.57626,0,70.4,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.815269,1.791759,3.042041,1 +13,6,0,1,4,627019,1,6735.316,4.998631,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,70.4,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.815269,1.791759,,0 +13,6,0,1,5,627019,1,6735.316,5.998631,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,70.4,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.815269,1.94591,,0 +13,6,0,1,1,627020,1,6735.316,13.54962,1,11,1,9.975062,0,0,0,0,9.975062,0,0,0,0,1,6,91.7,10.57626,0,74.1,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,74.1,8.815269,1.791759,2.300088,1 +13,6,0,1,2,627020,1,6735.316,14.54962,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,91.7,10.57626,0,74.1,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,74.1,8.815269,1.791759,,0 +13,6,0,1,3,627020,1,6735.316,15.54962,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,91.7,10.57626,0,74.1,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,74.1,8.815269,1.791759,,0 +13,6,0,1,4,627020,1,6735.316,16.54962,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,91.7,10.57626,0,74.1,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,74.1,8.815269,1.791759,,0 +13,6,0,1,5,627020,1,6735.316,17.54962,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,91.7,10.57626,0,74.1,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,74.1,8.815269,1.94591,,0 +13,6,0,1,1,627021,1,6735.316,14.77071,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,70.7,3.4,0,59.5,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,59.5,8.815269,1.791759,,0 +13,6,0,1,2,627021,1,6735.316,15.77071,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,70.7,3.4,0,59.5,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,59.5,8.815269,1.791759,,0 +13,6,0,1,3,627021,1,6735.316,16.7707,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,70.7,3.4,0,59.5,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,59.5,8.815269,1.791759,,0 +13,6,0,1,4,627021,1,6735.316,17.7707,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,70.7,3.4,0,59.5,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,59.5,8.815269,1.791759,,0 +13,6,0,1,5,627021,1,6735.316,18.7707,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,70.7,3.4,0,59.5,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,59.5,8.815269,1.94591,,0 +13,6,0,0,1,627045,0,2840.246,51.80288,0,6,1,23.97981,10.09676,0,0,0,34.07657,0,0,0,0,0,3,84.6,34.5,1,25,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,1,25,7.951998,1.098612,3.52861,1 +13,6,0,0,2,627045,0,2840.246,52.80288,0,6,1,61.57915,0,0,0,0,61.57915,0,0,0,0,0,3,84.6,34.5,1,25,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,1,25,7.951998,1.098612,4.120323,1 +13,6,0,0,3,627045,0,2840.246,53.80288,0,6,1,52.14408,13.60206,31.21784,0,544.7684,641.7324,1,1,0,1,0,3,84.6,34.5,1,25,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,1,25,7.951998,1.098612,6.464171,1 +13,6,0,0,1,627046,0,2840.246,18.74333,0,8,1,11.35886,5.027345,0,0,0,16.3862,0,0,0,0,0,3,58.5,3.4,0,70.5,450,0,0,0,1.098612,0,1,4.564348,6.160541,1,0,0,70.5,7.951998,1.098612,2.79644,1 +13,6,0,0,2,627046,0,2840.246,19.74333,0,8,1,66.49036,0,0,0,0,66.49036,0,0,1,0,0,3,58.5,3.4,0,70.5,450,0,0,0,1.098612,0,1,4.564348,6.160541,1,0,0,70.5,7.951998,1.098612,4.197057,1 +13,6,0,0,3,627046,0,2840.246,20.74333,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,58.5,3.4,0,70.5,450,0,0,0,1.098612,0,1,4.564348,6.160541,1,0,0,70.5,7.951998,1.098612,,0 +13,6,0,0,1,627047,0,2840.246,42.21766,1,6,1,14.72444,26.39462,0,0,0,41.11906,0,0,0,1,0,3,72.3,6.9,1,31.8,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,1,31.8,7.951998,1.098612,3.716472,1 +13,6,0,0,2,627047,0,2840.246,43.21766,1,6,1,11.33358,31.14847,0,0,843.2188,885.7008,2,0,0,2,0,3,72.3,6.9,1,31.8,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,1,31.8,7.951998,1.098612,6.786379,1 +13,6,0,0,3,627047,0,2840.246,44.21766,1,6,1,64.494,8.384219,35.67753,0,672.3842,780.9399,2,1,0,1,0,3,72.3,6.9,1,31.8,450,0,0,0,1.098612,0,1,4.564348,6.160541,0,0,1,31.8,7.951998,1.098612,6.660498,1 +16,6,95,0,1,627109,0,3156.17,22.32444,1,13,1,43.58866,0,0,0,0,43.58866,0,0,0,5,0,1,69.7,6.9,0,76.1,639.6,639.6,0,0,0,6.460843,0,4.564348,6.512136,1,0,0,76.1,8.057431,0,3.774797,1 +16,6,95,0,2,627109,0,3156.17,23.32444,1,13,1,0,0,0,0,0,0,0,0,0,0,0,1,69.7,6.9,0,76.1,639.6,639.6,0,0,0,6.460843,0,4.564348,6.512136,1,0,0,76.1,8.057431,0,,0 +16,6,95,0,3,627109,0,3156.17,24.32444,1,13,1,0,0,0,0,0,0,0,0,0,0,0,1,69.7,6.9,0,76.1,639.6,639.6,0,0,0,6.460843,0,4.564348,6.512136,1,0,0,76.1,8.057431,0,,0 +10,6,50,0,1,627110,0,1026.626,24.6078,1,14,1,0,0,0,0,0,0,0,0,0,0,0,1,79.8,3.4,0,84.1,640.5,640.5,0,0,0,6.462249,0,3.931826,7.155396,0,0,0,84.1,6.935006,0,,0 +10,6,50,0,2,627110,0,1026.626,25.6078,1,14,1,6.800151,6.346807,0,0,0,13.14696,0,0,0,1,0,1,79.8,3.4,0,84.1,640.5,640.5,0,0,0,6.462249,0,3.931826,7.155396,0,0,0,84.1,6.935006,0,2.57619,1 +10,6,50,0,3,627110,0,1026.626,26.6078,1,14,1,0,0,0,0,0,0,0,0,0,0,0,1,79.8,3.4,0,84.1,640.5,640.5,0,0,0,6.462249,0,3.931826,7.155396,0,0,0,84.1,6.935006,0,,0 +11,6,0,1,1,627145,0,4485.044,51.93155,1,11,1,405.8474,139.5292,45.58969,0,0,590.9663,0,0,0,40,1,2,77.1,17.2,0,67,0,203.44,0,0,.6931472,5.315371,0,0,0,1,0,0,67,8.408727,.6931472,6.381759,1 +11,6,0,1,2,627145,0,4485.044,52.93155,1,11,1,150.0688,241.7393,0,0,0,391.8082,0,0,0,12,0,2,77.1,17.2,0,67,0,203.44,0,0,.6931472,5.315371,0,0,0,1,0,0,67,8.408727,.6931472,5.970772,1 +11,6,0,1,3,627145,0,4485.044,53.93155,1,11,1,117.7955,215.7636,40.38704,0,0,373.9461,0,0,0,9,1,2,77.1,17.2,0,67,0,203.44,0,0,.6931472,5.315371,0,0,0,1,0,0,67,8.408727,.6931472,5.924112,1 +11,6,0,1,4,627145,0,4485.044,54.93155,1,11,1,436.7208,118.1035,0,0,0,554.8243,0,0,0,9,48,2,77.1,17.2,0,67,0,203.44,0,0,.6931472,5.315371,0,0,0,1,0,0,67,8.408727,.6931472,6.318652,1 +11,6,0,1,5,627145,0,4485.044,55.93155,1,11,1,132.7616,237.6089,42.06861,0,0,412.4391,0,0,0,3,10,2,77.1,17.2,0,67,0,203.44,0,0,.6931472,5.315371,0,0,0,1,0,0,67,8.408727,.6931472,6.022089,1 +11,6,0,1,1,627146,0,4485.044,18.33539,0,5,1,23.29039,0,0,0,0,23.29039,0,0,0,3,0,2,84.6,6.9,0,88.1,0,203.44,0,0,.6931472,5.315371,0,0,0,0,0,0,88.1,8.408727,.6931472,3.148041,1 +11,6,0,1,2,627146,0,4485.044,19.33539,0,5,1,0,0,0,0,0,0,0,0,0,0,0,2,84.6,6.9,0,88.1,0,203.44,0,0,.6931472,5.315371,0,0,0,0,0,0,88.1,8.408727,.6931472,,0 +11,6,0,1,3,627146,0,4485.044,20.33539,0,5,1,0,2.419016,0,0,0,2.419016,0,0,0,0,0,2,84.6,6.9,0,88.1,0,203.44,0,0,.6931472,5.315371,0,0,0,0,0,0,88.1,8.408727,.6931472,.8833607,1 +11,6,0,1,4,627146,0,4485.044,21.33539,0,5,1,162.0703,6.460144,7.555724,0,0,176.0861,0,0,0,3,8,2,84.6,6.9,0,88.1,0,203.44,0,0,.6931472,5.315371,0,0,0,0,0,0,88.1,8.408727,.6931472,5.170973,1 +11,6,0,1,5,627146,0,4485.044,22.33539,0,5,1,220.5832,15.46484,0,0,616.1235,852.1715,2,0,0,6,0,2,84.6,6.9,0,88.1,0,203.44,0,0,.6931472,5.315371,0,0,0,0,0,0,88.1,8.408727,.6931472,6.747788,1 +11,6,0,1,1,627151,0,5334.311,17.52225,0,10,1,18.67322,8.152334,0,0,0,26.82555,0,0,0,3,0,6,66,10.3,0,65.9,0,446.16,1,0,1.791759,6.100677,0,0,0,1,0,0,65.9,8.582103,1.791759,3.289355,1 +11,6,0,1,2,627151,0,5334.311,18.52225,0,10,1,69.73564,18.29991,115.3145,0,2309.48,2512.831,1,0,0,2,0,6,66,10.3,0,65.9,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,65.9,8.582103,1.791759,7.829165,1 +11,6,0,1,3,627151,0,5334.311,19.52225,0,10,1,8.336807,19.23718,0,0,0,27.57399,0,0,0,1,0,6,66,10.3,0,65.9,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,65.9,8.582103,1.791759,3.316873,1 +11,6,0,1,4,627151,0,5334.311,20.52225,0,10,1,62.64066,21.66166,0,0,0,84.30232,0,0,0,1,0,6,66,10.3,0,65.9,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,65.9,8.582103,1.791759,4.43441,1 +11,6,0,1,5,627151,0,5334.311,21.52225,0,10,1,0,8.778755,0,0,0,8.778755,0,0,0,0,0,6,66,10.3,0,65.9,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,65.9,8.582103,1.791759,2.172335,1 +11,6,0,0,1,627152,0,5334.311,19.23614,0,8,1,34.39803,8.511057,0,0,0,42.90909,0,0,0,2,0,6,55.9,6.9,0,58,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,58,8.582103,1.791759,3.759084,1 +11,6,0,0,2,627152,0,5334.311,20.23614,0,8,1,11.39471,5.355515,0,0,0,16.75023,0,0,0,0,0,6,55.9,6.9,0,58,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,58,8.582103,1.791759,2.818412,1 +11,6,0,0,3,627152,0,5334.311,21.23614,0,8,1,14.17257,3.334723,0,0,0,17.5073,0,0,0,0,0,6,55.9,6.9,0,58,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,58,8.582103,1.791759,2.862618,1 +11,6,0,0,4,627152,0,5334.311,22.23614,0,8,1,0,0,0,0,0,0,0,0,0,0,0,6,55.9,6.9,0,58,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,58,8.582103,1.791759,,0 +11,6,0,0,5,627152,0,5334.311,23.23614,0,8,1,26.04871,2.317321,0,0,0,28.36604,0,0,0,1,0,6,55.9,6.9,0,58,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,58,8.582103,1.791759,3.345192,1 +11,6,0,1,1,627153,0,5334.311,13.00753,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,60,10.57626,0,55.6,0,446.16,1,1,1.791759,6.100677,0,0,0,1,0,0,55.6,8.582103,1.791759,,0 +11,6,0,1,2,627153,0,5334.311,14.00753,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,60,10.57626,0,55.6,0,446.16,1,1,1.791759,6.100677,0,0,0,1,0,0,55.6,8.582103,1.791759,,0 +11,6,0,1,3,627153,0,5334.311,15.00753,1,10,1,5.002084,2.501042,0,0,0,7.503126,0,0,0,1,0,6,60,10.57626,0,55.6,0,446.16,1,1,1.791759,6.100677,0,0,0,1,0,0,55.6,8.582103,1.791759,2.01532,1 +11,6,0,1,4,627153,0,5334.311,16.00753,1,10,1,10.87772,4.444861,0,0,0,15.32258,0,0,0,0,0,6,60,10.57626,0,55.6,0,446.16,1,1,1.791759,6.100677,0,0,0,1,0,0,55.6,8.582103,1.791759,2.729328,1 +11,6,0,1,5,627153,0,5334.311,17.00753,1,10,1,27.0636,0,0,0,0,27.0636,0,0,0,2,0,6,60,10.57626,0,55.6,0,446.16,1,1,1.791759,6.100677,0,0,0,1,0,0,55.6,8.582103,1.791759,3.29819,1 +11,6,0,1,1,627154,0,5334.311,40.23272,1,10,1,20.63882,0,45.20885,0,0,65.84766,0,0,0,1,1,6,63.8,17.2,0,53.4,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,53.4,8.582103,1.791759,4.187344,1 +11,6,0,1,2,627154,0,5334.311,41.23272,1,10,1,40.56518,38.96992,0,0,0,79.5351,0,0,0,5,0,6,63.8,17.2,0,53.4,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,53.4,8.582103,1.791759,4.376198,1 +11,6,0,1,3,627154,0,5334.311,42.23272,1,10,1,6.252605,55.23135,0,0,0,61.48395,0,0,0,1,0,6,63.8,17.2,0,53.4,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,53.4,8.582103,1.791759,4.118776,1 +11,6,0,1,4,627154,0,5334.311,43.23272,1,10,1,39.75994,26.25657,0,0,0,66.0165,0,0,0,1,0,6,63.8,17.2,0,53.4,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,53.4,8.582103,1.791759,4.189905,1 +11,6,0,1,5,627154,0,5334.311,44.23272,1,10,1,28.75507,63.21042,25.37212,0,406.9689,524.3065,1,0,0,2,0,6,63.8,17.2,0,53.4,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,53.4,8.582103,1.791759,6.262076,1 +11,6,0,1,1,627155,0,5334.311,41.21834,0,8,1,9.82801,0,45.20885,0,0,55.03685,0,0,0,0,1,6,64.4,20.7,0,47.7,0,446.16,0,0,1.791759,6.100677,0,0,0,0,1,0,47.7,8.582103,1.791759,4.008003,1 +11,6,0,1,2,627155,0,5334.311,42.21834,0,8,1,27.8031,60.02735,0,0,0,87.83044,0,0,0,5,0,6,64.4,20.7,0,47.7,0,446.16,0,0,1.791759,6.100677,0,0,0,0,1,0,47.7,8.582103,1.791759,4.475408,1 +11,6,0,1,3,627155,0,5334.311,43.21834,0,8,1,6.252605,56.33597,0,0,0,62.58858,0,0,0,1,0,6,64.4,20.7,0,47.7,0,446.16,0,0,1.791759,6.100677,0,0,0,0,1,0,47.7,8.582103,1.791759,4.136583,1 +11,6,0,1,4,627155,0,5334.311,44.21834,0,8,1,25.13128,33.02701,39.75994,0,0,97.91823,0,0,0,1,0,6,64.4,20.7,0,47.7,0,446.16,0,0,1.791759,6.100677,0,0,0,0,1,0,47.7,8.582103,1.791759,4.584133,1 +11,6,0,1,5,627155,0,5334.311,45.21834,0,8,1,8.11908,27.33424,0,0,0,35.45332,0,0,0,1,0,6,64.4,20.7,0,47.7,0,446.16,0,0,1.791759,6.100677,0,0,0,0,1,0,47.7,8.582103,1.791759,3.568217,1 +11,6,0,1,1,627156,0,5334.311,15.97262,1,10,1,28.00983,5.847666,31.94103,0,0,65.79852,0,0,0,2,1,6,80.9,6.9,0,69.3,0,446.16,1,1,1.791759,6.100677,0,0,0,1,0,0,69.3,8.582103,1.791759,4.186597,1 +11,6,0,1,2,627156,0,5334.311,16.97262,1,10,1,36.46308,16.18049,0,0,0,52.64357,0,0,0,2,0,6,80.9,6.9,0,69.3,0,446.16,1,1,1.791759,6.100677,0,0,0,1,0,0,69.3,8.582103,1.791759,3.963544,1 +11,6,0,1,3,627156,0,5334.311,17.97262,1,10,1,71.69654,30.42935,0,0,0,102.1259,0,0,0,5,0,6,80.9,6.9,0,69.3,0,446.16,1,1,1.791759,6.100677,0,0,0,1,0,0,69.3,8.582103,1.791759,4.626206,1 +11,6,0,1,4,627156,0,5334.311,18.97262,1,10,1,16.50413,27.64441,24.006,0,0,68.15454,0,0,0,2,0,6,80.9,6.9,0,69.3,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,69.3,8.582103,1.791759,4.221778,1 +11,6,0,1,5,627156,0,5334.311,19.97262,1,10,1,95.73748,66.1705,0,0,0,161.908,0,0,0,4,0,6,80.9,6.9,0,69.3,0,446.16,0,0,1.791759,6.100677,0,0,0,1,0,0,69.3,8.582103,1.791759,5.087028,1 +5,6,25,0,1,627207,0,8730.671,29.94114,0,10,1,24.8212,0,0,0,0,24.8212,0,0,0,2,0,4,82.4,6.9,0,71.6,670,670,0,0,1.386294,6.507277,0,3.258096,7.893572,0,1,0,71.6,9.074712,1.386294,3.211698,1 +5,6,25,0,2,627207,0,8730.671,30.94114,0,10,1,127.3139,0,0,0,0,127.3139,0,0,0,1,0,4,82.4,6.9,0,71.6,670,670,0,0,1.386294,6.507277,0,3.258096,7.893572,0,1,0,71.6,9.074712,1.386294,4.846656,1 +5,6,25,0,3,627207,0,8730.671,31.94114,0,10,1,13.37907,0,0,0,0,13.37907,0,0,0,0,0,5,82.4,6.9,0,71.6,670,670,0,0,1.609438,6.507277,0,3.258096,7.893572,0,1,0,71.6,9.074712,1.609438,2.593692,1 +5,6,25,0,1,627208,0,8730.671,7.394935,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,95,10.57626,.1442925,77.8,670,670,1,0,1.386294,6.507277,0,3.258096,7.893572,1,0,0,77.8,9.074712,1.386294,,0 +5,6,25,0,2,627208,0,8730.671,8.394935,0,8,1,44.95655,0,0,0,0,44.95655,0,0,0,2,0,4,95,10.57626,.1442925,77.8,670,670,1,0,1.386294,6.507277,0,3.258096,7.893572,1,0,0,77.8,9.074712,1.386294,3.805696,1 +5,6,25,0,3,627208,0,8730.671,9.394935,0,8,1,59.3482,0,0,0,0,59.3482,0,0,0,3,0,5,95,10.57626,.1442925,77.8,670,670,1,0,1.609438,6.507277,0,3.258096,7.893572,1,0,0,77.8,9.074712,1.609438,4.083422,1 +5,6,25,0,1,627209,0,8730.671,9.886379,1,8,1,14.72444,0,0,0,0,14.72444,0,0,0,1,0,4,93.3,10.57626,.1442925,88.9,670,670,1,1,1.386294,6.507277,0,3.258096,7.893572,1,0,0,88.9,9.074712,1.386294,2.689509,1 +5,6,25,0,2,627209,0,8730.671,10.88638,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,93.3,10.57626,.1442925,88.9,670,670,1,1,1.386294,6.507277,0,3.258096,7.893572,1,0,0,88.9,9.074712,1.386294,,0 +5,6,25,0,3,627209,0,8730.671,11.88638,1,8,1,9.948542,4.459691,0,0,0,14.40823,0,0,0,2,0,5,93.3,10.57626,.1442925,88.9,670,670,1,1,1.609438,6.507277,0,3.258096,7.893572,1,0,0,88.9,9.074712,1.609438,2.6678,1 +5,6,25,0,1,627210,0,8730.671,27.21424,1,8,1,61.00126,5.04838,0,0,0,66.04964,0,0,0,2,0,4,86.7,10.3,0,73.9,670,670,0,0,1.386294,6.507277,0,3.258096,7.893572,0,1,0,73.9,9.074712,1.386294,4.190407,1 +5,6,25,0,2,627210,0,8730.671,28.21424,1,8,1,10.57801,3.966755,0,0,750.6611,765.2059,2,0,0,0,0,4,86.7,10.3,0,73.9,670,670,0,0,1.386294,6.507277,0,3.258096,7.893572,0,1,0,73.9,9.074712,1.386294,6.640145,1 +5,6,25,0,3,627210,0,8730.671,29.21424,1,8,1,20.24014,1.715266,0,0,381.8525,403.8079,1,0,0,1,0,5,86.7,10.3,0,73.9,670,670,0,0,1.609438,6.507277,0,3.258096,7.893572,0,1,0,73.9,9.074712,1.609438,6.000939,1 +18,6,25,1,1,627224,0,1896.569,19.70705,1,10,1,72.36564,46.48328,31.31612,0,0,150.165,0,0,0,9,0,5,67,3.4,0,64.8,173.5,173.5,0,0,1.609438,5.156178,0,3.258096,6.542472,1,0,0,64.8,7.548329,1.609438,5.011735,1 +18,6,25,1,2,627224,0,1896.569,20.70705,1,10,1,59.98481,56.92103,0,0,0,116.9058,0,0,0,5,0,5,67,3.4,0,64.8,173.5,173.5,0,0,1.609438,5.156178,0,3.258096,6.542472,1,0,0,64.8,7.548329,1.609438,4.761369,1 +18,6,25,1,3,627224,0,1896.569,21.70705,1,10,1,43.94464,52.23529,12.45675,0,750.519,859.1557,1,0,0,4,0,6,67,3.4,0,64.8,173.5,173.5,0,0,1.791759,5.156178,0,3.258096,6.542472,1,0,0,64.8,7.548329,1.791759,6.75595,1 +18,6,25,1,1,627226,0,1896.569,17.02122,0,12,1,39.35675,2.115954,0,0,0,41.47271,0,0,0,0,0,5,77.7,6.9,0,97.7,173.5,173.5,1,0,1.609438,5.156178,0,3.258096,6.542472,0,0,0,97.7,7.548329,1.609438,3.725035,1 +18,6,25,1,2,627226,0,1896.569,18.02122,0,12,1,43.65983,4.396355,0,0,0,48.05619,0,0,0,0,0,5,77.7,6.9,0,97.7,173.5,173.5,0,0,1.609438,5.156178,0,3.258096,6.542472,0,0,0,97.7,7.548329,1.609438,3.872371,1 +18,6,25,1,3,627226,0,1896.569,19.02122,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.7,6.9,0,97.7,173.5,173.5,0,0,1.791759,5.156178,0,3.258096,6.542472,0,0,0,97.7,7.548329,1.791759,,0 +18,6,25,1,1,627227,0,1896.569,44.51745,1,12,1,24.12188,84.68049,0,0,0,108.8024,0,0,0,3,0,5,45.2,24.1,1,47.7,173.5,173.5,0,0,1.609438,5.156178,0,3.258096,6.542472,0,1,0,47.7,7.548329,1.609438,4.689533,1 +18,6,25,1,2,627227,0,1896.569,45.51745,1,12,1,28.4738,110.5277,0,0,0,139.0015,0,0,0,4,0,5,45.2,24.1,1,47.7,173.5,173.5,0,0,1.609438,5.156178,0,3.258096,6.542472,0,1,0,47.7,7.548329,1.609438,4.934485,1 +18,6,25,1,3,627227,0,1896.569,46.51745,1,12,1,53.2872,60.91003,35.29412,0,498.9619,648.4533,1,0,0,5,0,6,45.2,24.1,1,47.7,173.5,173.5,0,0,1.791759,5.156178,0,3.258096,6.542472,0,1,0,47.7,7.548329,1.791759,6.47459,1 +18,6,25,1,1,627228,0,1896.569,18.42574,1,9,1,37.66399,39.91536,0,0,0,77.57935,0,0,0,4,0,5,31.9,6.9,0,73.9,173.5,173.5,0,0,1.609438,5.156178,0,3.258096,6.542472,1,0,0,73.9,7.548329,1.609438,4.351301,1 +18,6,25,1,2,627228,0,1896.569,19.42574,1,9,1,18.98254,10.44039,0,0,609.0699,638.4928,1,0,0,0,0,5,31.9,6.9,0,73.9,173.5,173.5,0,0,1.609438,5.156178,0,3.258096,6.542472,1,0,0,73.9,7.548329,1.609438,6.45911,1 +18,6,25,1,3,627228,0,1896.569,20.42574,1,9,1,6.228374,22.97578,0,0,0,29.20415,0,0,0,1,0,6,31.9,6.9,0,73.9,173.5,173.5,0,0,1.791759,5.156178,0,3.258096,6.542472,1,0,0,73.9,7.548329,1.791759,3.374311,1 +18,6,25,1,1,627229,0,1896.569,50.48323,0,16,1,9.310199,137.7148,0,0,0,147.025,0,0,0,1,0,5,91,17.2,1,75,173.5,173.5,0,0,1.609438,5.156178,0,3.258096,6.542472,0,0,0,75,7.548329,1.609438,4.990602,1 +18,6,25,1,2,627229,0,1896.569,51.48323,0,16,1,5.31511,133.6447,0,0,0,138.9598,0,0,0,1,0,5,91,17.2,1,75,173.5,173.5,0,0,1.609438,5.156178,0,3.258096,6.542472,0,0,0,75,7.548329,1.609438,4.934185,1 +18,6,25,1,3,627229,0,1896.569,52.48323,0,16,1,21.79931,143.474,39.66436,0,0,204.9377,0,0,0,2,0,6,91,17.2,1,75,173.5,173.5,0,0,1.791759,5.156178,0,3.258096,6.542472,0,0,0,75,7.548329,1.791759,5.322706,1 +16,6,95,0,1,627239,1,1725.55,26.29706,0,5,1,0,0,0,0,0,0,0,0,0,0,0,3,54.3,6.9,0,57.5,756,0,0,0,1.098612,0,0,4.564348,6.679335,1,0,0,57.5,7.453881,1.098612,,0 +16,6,95,0,2,627239,1,1725.55,27.29706,0,5,1,0,0,0,0,0,0,0,0,0,0,0,4,54.3,6.9,0,57.5,756,0,0,0,1.386294,0,0,4.564348,6.679335,1,0,0,57.5,7.453881,1.386294,,0 +16,6,95,0,3,627239,1,1725.55,28.29706,0,5,1,0,0,0,0,0,0,0,0,0,0,0,4,54.3,6.9,0,57.5,756,0,0,0,1.386294,0,0,4.564348,6.679335,1,0,0,57.5,7.453881,1.386294,,0 +16,6,95,0,1,627240,1,1725.55,24.30664,1,12,1,0,0,0,0,295.3872,295.3872,1,0,0,0,0,3,38.8,17.2,0,59.1,756,0,0,0,1.098612,0,0,4.564348,6.679335,0,1,0,59.1,7.453881,1.098612,5.688287,1 +16,6,95,0,2,627240,1,1725.55,25.30664,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,38.8,17.2,0,59.1,756,0,0,0,1.386294,0,0,4.564348,6.679335,0,1,0,59.1,7.453881,1.386294,,0 +16,6,95,0,3,627240,1,1725.55,26.30664,1,12,1,0,1.449827,0,0,0,1.449827,0,0,0,0,0,4,38.8,17.2,0,59.1,756,0,0,0,1.386294,0,0,4.564348,6.679335,0,1,0,59.1,7.453881,1.386294,.3714442,1 +16,6,95,0,1,627241,1,1725.55,3.195072,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,64.8,756,0,1,1,1.098612,0,0,4.564348,6.679335,0,0,0,64.8,7.453881,1.098612,,0 +16,6,95,0,2,627241,1,1725.55,4.195072,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,64.8,756,0,1,1,1.386294,0,0,4.564348,6.679335,0,0,0,64.8,7.453881,1.386294,,0 +16,6,95,0,3,627241,1,1725.55,5.195072,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,64.8,756,0,1,1,1.386294,0,0,4.564348,6.679335,0,0,0,64.8,7.453881,1.386294,,0 +15,6,95,1,1,627247,1,9989.247,34.69405,0,12,1,222.4585,4.147171,0,0,0,226.6057,0,0,0,2,28,4,65.4,3.4,0,90.9,350,350,0,0,1.386294,5.857933,0,4.564348,5.909226,1,0,0,90.9,9.209365,1.386294,5.423212,1 +15,6,95,1,1,627248,1,9989.247,11.75086,1,12,1,9.783071,0,0,0,0,9.783071,0,0,0,1,0,4,68.3,10.57626,1,51.9,350,350,1,1,1.386294,5.857933,0,4.564348,5.909226,1,0,0,51.9,9.209365,1.386294,2.280653,1 +15,6,95,1,1,627249,1,9989.247,3.986311,0,12,1,12.76053,6.061251,0,0,0,18.82178,0,0,0,2,0,4,77.40034,10.57626,0,70.4,350,350,1,0,1.386294,5.857933,0,4.564348,5.909226,1,0,0,70.4,9.209365,1.386294,2.935014,1 +15,6,95,1,1,627250,1,9989.247,33.21287,1,12,1,45.51255,8.430455,0,0,0,53.943,0,0,0,3,0,4,64.9,10.3,1,69.3,350,350,0,0,1.386294,5.857933,0,4.564348,5.909226,1,0,0,69.3,9.209365,1.386294,3.987928,1 +13,6,0,0,1,627265,1,6735.316,22.54073,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,70.2,0,0,95.5,450,150,0,0,1.098612,5.010635,1,4.564348,6.160541,0,0,0,95.5,8.815269,1.098612,,0 +13,6,0,0,2,627265,1,6735.316,23.54073,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,70.2,0,0,95.5,450,150,0,0,1.098612,5.010635,1,4.564348,6.160541,0,0,0,95.5,8.815269,1.098612,,0 +13,6,0,0,3,627265,1,6735.316,24.54073,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,70.2,0,0,95.5,450,150,0,0,1.098612,5.010635,1,4.564348,6.160541,0,0,0,95.5,8.815269,1.098612,,0 +13,6,0,0,1,627266,1,213.5177,16.33402,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,78.2,0,0,82.1,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,82.1,5.368392,1.94591,,0 +13,6,0,0,2,627266,1,213.5177,17.33402,0,10,1,0,0,0,0,0,0,0,0,0,0,0,8,78.2,0,0,82.1,450,450,1,0,2.079442,6.109248,1,4.564348,6.160541,0,0,0,82.1,5.368392,2.079442,,0 +13,6,0,0,3,627266,1,213.5177,18.33402,0,10,1,0,0,0,0,0,0,0,0,0,0,0,8,78.2,0,0,82.1,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,0,0,0,82.1,5.368392,2.079442,,0 +13,6,0,0,1,627267,1,213.5177,43.57837,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,89.9,10.3,0,84.1,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,1,0,0,84.1,5.368392,1.94591,,0 +13,6,0,0,2,627267,1,213.5177,44.57837,0,10,1,0,0,0,0,0,0,0,0,0,0,0,8,89.9,10.3,0,84.1,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,84.1,5.368392,2.079442,,0 +13,6,0,0,3,627267,1,213.5177,45.57837,0,10,1,0,0,0,0,0,0,0,0,0,0,0,8,89.9,10.3,0,84.1,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,84.1,5.368392,2.079442,,0 +13,6,0,0,1,627268,1,213.5177,41.78234,1,10,1,19.46678,0,30.89293,0,0,50.35971,0,0,0,1,1,7,88.3,6.9,0,,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,1,0,0,86.4,5.368392,1.94591,3.919191,1 +13,6,0,0,2,627268,1,213.5177,42.78234,1,10,1,7.213364,0,0,0,0,7.213364,0,0,0,0,0,8,88.3,6.9,0,,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,86.4,5.368392,2.079442,1.975935,1 +13,6,0,0,3,627268,1,213.5177,43.78234,1,10,1,8.650519,0,32.87197,0,0,41.52249,0,0,0,0,1,8,88.3,6.9,0,,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,1,0,0,86.4,5.368392,2.079442,3.726235,1 +13,6,0,0,1,627269,1,213.5177,14.69678,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,100,10.57626,0,81.5,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,81.5,5.368392,1.94591,,0 +13,6,0,0,2,627269,1,213.5177,15.69678,0,10,1,0,0,0,0,0,0,0,0,0,0,0,8,100,10.57626,0,81.5,450,450,1,0,2.079442,6.109248,1,4.564348,6.160541,0,0,0,81.5,5.368392,2.079442,,0 +13,6,0,0,3,627269,1,213.5177,16.69678,0,10,1,0,0,0,0,0,0,0,0,0,0,0,8,100,10.57626,0,81.5,450,450,1,0,2.079442,6.109248,1,4.564348,6.160541,0,0,0,81.5,5.368392,2.079442,,0 +13,6,0,0,1,627270,1,213.5177,13.14168,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,86.7,10.57626,0,51.9,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,51.9,5.368392,1.94591,,0 +13,6,0,0,2,627270,1,213.5177,14.14168,1,10,1,0,0,0,0,0,0,0,0,0,0,0,8,86.7,10.57626,0,51.9,450,450,1,1,2.079442,6.109248,1,4.564348,6.160541,0,0,0,51.9,5.368392,2.079442,,0 +13,6,0,0,3,627270,1,213.5177,15.14168,1,10,1,0,0,0,0,0,0,0,0,0,0,0,8,86.7,10.57626,0,51.9,450,450,1,1,2.079442,6.109248,1,4.564348,6.160541,0,0,0,51.9,5.368392,2.079442,,0 +13,6,0,0,1,627271,1,213.5177,17.83984,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,72.3,0,0,84.1,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,84.1,5.368392,1.94591,,0 +13,6,0,0,2,627271,1,213.5177,18.83984,1,10,1,0,0,0,0,0,0,0,0,0,0,0,8,72.3,0,0,84.1,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,0,0,0,84.1,5.368392,2.079442,,0 +13,6,0,0,3,627271,1,213.5177,19.83984,1,10,1,32.17993,0,0,0,428.3737,460.5536,1,0,0,0,0,8,72.3,0,0,84.1,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,0,0,0,84.1,5.368392,2.079442,6.132429,1 +13,6,0,0,1,627272,1,213.5177,19.49897,1,10,1,8.463818,0,0,0,0,8.463818,1,1,0,0,0,7,71.3,0,0,73.9,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,73.9,5.368392,1.94591,2.1358,1 +13,6,0,0,2,627272,1,213.5177,20.49897,1,10,1,0,4.745634,0,0,0,4.745634,0,0,0,0,0,8,71.3,0,0,73.9,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,0,0,0,73.9,5.368392,2.079442,1.557225,1 +13,6,0,0,3,627272,1,213.5177,21.49897,1,10,1,0,0,0,0,0,0,0,0,0,0,0,8,71.3,0,0,73.9,450,450,0,0,2.079442,6.109248,1,4.564348,6.160541,0,0,0,73.9,5.368392,2.079442,,0 +11,6,0,1,1,627299,0,4264.209,28.93908,1,16,1,75.32797,163.0343,0,0,0,238.3623,0,0,0,6,0,1,63.3,6.9,1,22.7,0,30,0,0,0,3.401197,0,0,0,0,0,1,22.7,8.358247,0,5.473792,1 +11,6,0,1,2,627299,0,4264.209,29.93908,1,16,1,80.29613,73.49658,0,0,4009.112,4162.904,1,0,0,8,0,1,63.3,6.9,1,22.7,0,30,0,0,0,3.401197,0,0,0,0,0,1,22.7,8.358247,0,8.333968,1 +11,6,0,1,3,627299,0,4264.209,30.93908,1,16,1,110.3806,53.3737,32.87197,0,1222.145,1418.772,2,0,0,3,1,1,63.3,6.9,1,22.7,0,30,0,0,0,3.401197,0,0,0,0,0,1,22.7,8.358247,0,7.257547,1 +7,6,25,1,1,627367,1,4681.525,12.76934,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,48.1,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,48.1,8.451592,1.386294,,0 +7,6,25,1,2,627367,1,4681.525,13.76934,0,11,1,10.02735,0,0,0,0,10.02735,0,0,0,0,0,4,85,10.57626,0,48.1,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,48.1,8.451592,1.386294,2.305316,1 +7,6,25,1,3,627367,1,4681.525,14.76934,0,11,1,44.18508,3.180492,0,0,0,47.36557,0,0,0,3,0,4,85,10.57626,0,48.1,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,48.1,8.451592,1.386294,3.857896,1 +7,6,25,1,4,627367,1,4681.525,15.76934,0,11,1,26.25657,3.447112,0,0,0,29.70368,0,0,0,1,0,4,85,10.57626,0,48.1,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,48.1,8.451592,1.386294,3.391271,1 +7,6,25,1,5,627367,1,4681.525,16.76934,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,48.1,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,48.1,8.451592,1.386294,,0 +7,6,25,1,1,627368,1,4681.525,33.69199,1,11,1,0,12.64865,0,0,0,12.64865,0,0,0,0,0,4,80.9,6.9,0,64.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,64.5,8.451592,1.386294,2.53755,1 +7,6,25,1,2,627368,1,4681.525,34.69199,1,11,1,9.11577,0,29.62625,0,0,38.74202,0,0,0,0,1,4,80.9,6.9,0,64.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,64.5,8.451592,1.386294,3.656925,1 +7,6,25,1,3,627368,1,4681.525,35.69199,1,11,1,9.170487,0,0,0,0,9.170487,0,0,0,1,0,4,80.9,6.9,0,64.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,64.5,8.451592,1.386294,2.215991,1 +7,6,25,1,4,627368,1,4681.525,36.69199,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,80.9,6.9,0,64.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,64.5,8.451592,1.386294,,0 +7,6,25,1,5,627368,1,4681.525,37.69199,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,80.9,6.9,0,64.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,64.5,8.451592,1.386294,,0 +7,6,25,1,1,627369,1,4681.525,37.22382,0,12,1,0,3.921376,0,0,0,3.921376,0,0,0,0,0,4,95.2,0,0,70.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.5,8.451592,1.386294,1.366443,1 +7,6,25,1,2,627369,1,4681.525,38.22382,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,95.2,0,0,70.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.5,8.451592,1.386294,,0 +7,6,25,1,3,627369,1,4681.525,39.22382,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,95.2,0,0,70.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.5,8.451592,1.386294,,0 +7,6,25,1,4,627369,1,4681.525,40.22382,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,95.2,0,0,70.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.5,8.451592,1.386294,,0 +7,6,25,1,5,627369,1,4681.525,41.22382,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,95.2,0,0,70.5,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.5,8.451592,1.386294,,0 +11,6,0,0,1,627370,0,13767.03,23.1896,1,10,1,64.78754,26.81952,0,0,0,91.60707,0,0,0,3,0,3,75.5,13.8,0,72.7,0,0,0,0,1.098612,0,0,0,0,1,0,0,72.7,9.530105,1.098612,4.517509,1 +11,6,0,0,2,627370,0,13767.03,24.1896,1,10,1,4.533434,36.64526,0,0,430.6762,471.8549,1,0,0,1,0,3,75.5,13.8,0,72.7,0,0,0,0,1.098612,0,0,0,0,1,0,0,72.7,9.530105,1.098612,6.156672,1 +11,6,0,0,3,627370,0,13767.03,25.1896,1,10,1,0,4.116638,0,0,0,4.116638,0,0,0,0,0,4,75.5,13.8,0,72.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.7,9.530105,1.386294,1.415037,1 +11,6,0,0,1,627371,0,13767.03,6.332649,1,10,1,13.04165,3.575936,0,0,88.76736,105.3849,1,0,0,1,0,3,76.7,10.57626,.1442925,85.2,0,0,1,1,1.098612,0,0,0,0,0,0,0,85.2,9.530105,1.098612,4.65762,1 +11,6,0,0,2,627371,0,13767.03,7.332649,1,10,1,21.15602,6.233472,0,0,0,27.3895,0,0,0,0,0,3,76.7,10.57626,.1442925,85.2,0,0,1,1,1.098612,0,0,0,0,0,0,0,85.2,9.530105,1.098612,3.31016,1 +11,6,0,0,3,627371,0,13767.03,8.332649,1,10,1,57.63293,12.95026,0,0,0,70.58319,0,0,0,2,0,4,76.7,10.57626,.1442925,85.2,0,0,1,1,1.386294,0,0,0,0,0,0,0,85.2,9.530105,1.386294,4.256792,1 +11,6,0,0,1,627372,0,13767.03,27.31828,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,79.3,0,0,85.2,0,0,0,0,1.098612,0,0,0,0,0,0,0,85.2,9.530105,1.098612,,0 +11,6,0,0,2,627372,0,13767.03,28.31828,0,12,1,104.8357,1.261806,0,0,0,106.0975,0,0,0,1,0,3,79.3,0,0,85.2,0,0,0,0,1.098612,0,0,0,0,0,0,0,85.2,9.530105,1.098612,4.664358,1 +11,6,0,0,3,627372,0,13767.03,29.31828,0,12,1,5.488851,0,0,0,0,5.488851,0,0,0,1,0,4,79.3,0,0,85.2,0,0,0,0,1.386294,0,0,0,0,0,0,0,85.2,9.530105,1.386294,1.702719,1 +13,6,0,1,1,627388,1,9834.102,5.544148,0,13,1,47.21395,0,0,0,0,47.21395,0,0,0,2,0,5,90,10.57626,0,81.5,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,81.5,9.193713,1.609438,3.854689,1 +13,6,0,1,2,627388,1,9834.102,6.544148,0,13,1,4.580153,3.541985,0,0,0,8.122137,0,0,0,1,0,5,90,10.57626,0,81.5,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,81.5,9.193713,1.609438,2.094593,1 +13,6,0,1,3,627388,1,9834.102,7.544148,0,13,1,28.223,0,0,0,0,28.223,0,0,0,1,0,5,90,10.57626,0,81.5,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,81.5,9.193713,1.609438,3.340137,1 +13,6,0,1,1,627389,1,9834.102,9.475701,1,13,1,127.6053,8.294343,0,0,0,135.8996,0,0,0,3,0,5,88.3,10.57626,0,66.7,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,66.7,9.193713,1.609438,4.911916,1 +13,6,0,1,2,627389,1,9834.102,10.4757,1,13,1,9.160305,2.320611,0,0,0,11.48092,0,0,0,2,0,5,88.3,10.57626,0,66.7,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,66.7,9.193713,1.609438,2.440686,1 +13,6,0,1,3,627389,1,9834.102,11.4757,1,13,1,8.36237,14.93031,0,0,0,23.29268,0,0,0,2,0,5,88.3,10.57626,0,66.7,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,1,0,0,66.7,9.193713,1.609438,3.148139,1 +13,6,0,1,1,627390,1,9834.102,31.58385,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,61.7,0,0,67,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,67,9.193713,1.609438,,0 +13,6,0,1,2,627390,1,9834.102,32.58385,0,13,1,20.99237,0,1.908397,0,0,22.90076,0,0,0,2,0,5,61.7,0,0,67,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,67,9.193713,1.609438,3.13117,1 +13,6,0,1,3,627390,1,9834.102,33.58385,0,13,1,0,0,0,0,0,0,0,0,0,0,0,5,61.7,0,0,67,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,67,9.193713,1.609438,,0 +13,6,0,1,1,627391,1,9834.102,31.18686,1,13,1,110.5912,60.24245,0,0,0,170.8337,0,0,0,3,0,5,76.1,10.3,0,65.9,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.193713,1.609438,5.14069,1 +13,6,0,1,2,627391,1,9834.102,32.18686,1,13,1,226.3359,40.72519,3.076336,0,0,270.1374,0,0,0,16,0,5,76.1,10.3,0,65.9,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.193713,1.609438,5.598931,1 +13,6,0,1,3,627391,1,9834.102,33.18686,1,13,1,34.3554,3.466899,3.362369,0,0,41.18467,0,0,0,12,0,5,76.1,10.3,0,65.9,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.193713,1.609438,3.718066,1 +17,6,25,0,1,627400,0,9584.741,14.33265,1,10,1,160.9004,11.6882,0,0,0,172.5886,0,0,0,5,0,3,84,6.9,0,72.7,602.55,602.55,1,1,1.098612,6.401171,0,3.258096,7.787465,1,0,0,72.7,9.168032,1.098612,5.15091,1 +17,6,25,0,2,627400,0,9584.741,15.33265,1,10,1,38.25956,0,0,0,0,38.25956,0,0,0,1,0,3,84,6.9,0,72.7,602.55,602.55,1,1,1.098612,6.401171,0,3.258096,7.787465,1,0,0,72.7,9.168032,1.098612,3.644393,1 +17,6,25,0,3,627400,0,9584.741,16.33265,1,10,1,44.31664,2.503383,0,0,0,46.82003,0,0,0,1,0,3,84,6.9,0,72.7,602.55,602.55,1,1,1.098612,6.401171,0,3.258096,7.787465,1,0,0,72.7,9.168032,1.098612,3.846311,1 +17,6,25,0,1,627402,0,9584.741,41.90554,0,8,1,0,3.051271,0,0,0,3.051271,0,0,0,0,0,3,82.4,17.2,0,69.3,602.55,602.55,0,0,1.098612,6.401171,0,3.258096,7.787465,1,0,0,69.3,9.168032,1.098612,1.115558,1 +17,6,25,0,2,627402,0,9584.741,42.90554,0,8,1,24.94374,0,2.663166,0,0,27.6069,0,0,0,0,0,3,82.4,17.2,0,69.3,602.55,602.55,0,0,1.098612,6.401171,0,3.258096,7.787465,1,0,0,69.3,9.168032,1.098612,3.318066,1 +17,6,25,0,3,627402,0,9584.741,43.90554,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,82.4,17.2,0,69.3,602.55,602.55,0,0,1.098612,6.401171,0,3.258096,7.787465,1,0,0,69.3,9.168032,1.098612,,0 +17,6,25,0,1,627403,0,9584.741,37.97947,1,10,1,2.084202,2.484369,0,0,0,4.56857,0,0,0,0,0,3,81.4,20.7,0,83,602.55,602.55,0,0,1.098612,6.401171,0,3.258096,7.787465,1,0,0,83,9.168032,1.098612,1.5192,1 +17,6,25,0,2,627403,0,9584.741,38.97947,1,10,1,15.00375,0,36.75919,0,0,51.76294,0,0,0,1,0,3,81.4,20.7,0,83,602.55,602.55,0,0,1.098612,6.401171,0,3.258096,7.787465,1,0,0,83,9.168032,1.098612,3.946674,1 +17,6,25,0,3,627403,0,9584.741,39.97947,1,10,1,38.56563,4.43843,0,0,0,43.00406,0,0,0,3,0,3,81.4,20.7,0,83,602.55,602.55,0,0,1.098612,6.401171,0,3.258096,7.787465,1,0,0,83,9.168032,1.098612,3.761295,1 +11,6,0,1,1,627421,0,15191.2,57.80151,1,12,1,130.3271,84.03865,0,0,0,214.3657,0,0,0,11,0,1,64.9,6.9,1,59.1,0,153,0,0,0,5.030438,0,0,0,1,0,0,59.1,9.628537,0,5.367683,1 +11,6,0,1,2,627421,0,15191.2,58.80151,1,12,1,62.41395,94.32767,53.23543,0,0,209.9771,0,0,0,11,1,1,64.9,6.9,1,59.1,0,153,0,0,0,5.030438,0,0,0,1,0,0,59.1,9.628537,0,5.346998,1 +11,6,0,1,3,627421,0,15191.2,59.80151,1,12,1,88.76736,158.9651,0,0,0,247.7324,0,0,0,9,0,1,64.9,6.9,1,59.1,0,153,0,0,0,5.030438,0,0,0,1,0,0,59.1,9.628537,0,5.512349,1 +11,6,0,1,4,627421,0,15191.2,60.80151,1,12,1,57.4235,177.6275,43.8232,0,389.1198,667.994,1,0,0,7,1,1,64.9,6.9,1,59.1,0,153,0,0,0,5.030438,0,0,0,1,0,0,59.1,9.628537,0,6.504279,1 +11,6,0,1,5,627421,0,15191.2,61.80151,1,12,1,39.45111,188.5283,30.87479,0,0,258.8542,0,0,0,2,1,1,64.9,6.9,1,59.1,0,153,0,0,0,5.030438,0,0,0,1,0,0,59.1,9.628537,0,5.556265,1 +13,6,0,1,1,627428,1,6735.316,18.52156,0,8,1,0,0,0,0,0,0,0,0,0,0,0,10,86.2,0,0,75,450,150,0,0,2.302585,5.010635,1,4.564348,6.160541,1,0,0,75,8.815269,2.302585,,0 +13,6,0,1,1,627429,1,6735.316,12.23819,1,12,1,0,0,0,0,0,0,0,0,0,0,0,10,98.3,10.57626,0,74.1,450,150,1,1,2.302585,5.010635,1,4.564348,6.160541,0,1,0,74.1,8.815269,2.302585,,0 +13,6,0,1,2,627429,1,6735.316,13.23819,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,98.3,10.57626,0,74.1,450,150,1,1,2.197225,5.010635,1,4.564348,6.160541,0,1,0,74.1,8.815269,2.197225,,0 +13,6,0,1,3,627429,1,6735.316,14.23819,1,12,1,44.31664,0,0,0,0,44.31664,0,0,0,0,0,7,98.3,10.57626,0,74.1,450,150,1,1,1.94591,5.010635,1,4.564348,6.160541,0,1,0,74.1,8.815269,1.94591,3.79136,1 +13,6,0,1,1,627430,1,6735.316,16.07118,0,12,1,0,0,0,0,0,0,0,0,0,0,0,10,64.9,10.57626,0,59.1,450,150,1,0,2.302585,5.010635,1,4.564348,6.160541,0,1,0,59.1,8.815269,2.302585,,0 +13,6,0,1,2,627430,1,6735.316,17.07118,0,12,1,40.13503,0,7.014254,0,0,47.14929,0,0,0,3,0,9,64.9,10.57626,0,59.1,450,150,1,0,2.197225,5.010635,1,4.564348,6.160541,0,1,0,59.1,8.815269,2.197225,3.853319,1 +13,6,0,1,3,627430,1,6735.316,18.07118,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,64.9,10.57626,0,59.1,450,150,0,0,1.94591,5.010635,1,4.564348,6.160541,0,1,0,59.1,8.815269,1.94591,,0 +13,6,0,1,1,627431,1,6735.316,10.72142,1,12,1,0,0,0,0,0,0,0,0,0,0,0,10,70,10.57626,0,66.7,450,150,1,1,2.302585,5.010635,1,4.564348,6.160541,1,0,0,66.7,8.815269,2.302585,,0 +13,6,0,1,2,627431,1,6735.316,11.72142,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,70,10.57626,0,66.7,450,150,1,1,2.197225,5.010635,1,4.564348,6.160541,1,0,0,66.7,8.815269,2.197225,,0 +13,6,0,1,1,627432,1,6735.316,43.44422,1,12,1,5.002084,0,0,0,0,5.002084,0,0,0,1,0,10,48.9,13.8,1,35.2,450,150,0,0,2.302585,5.010635,1,4.564348,6.160541,1,0,0,35.2,8.815269,2.302585,1.609855,1 +13,6,0,1,2,627432,1,6735.316,44.44422,1,12,1,190.5476,9.39985,38.63466,0,1208.177,1446.759,2,0,0,29,0,9,48.9,13.8,1,35.2,450,150,0,0,2.197225,5.010635,1,4.564348,6.160541,1,0,0,35.2,8.815269,2.197225,7.277081,1 +13,6,0,1,3,627432,1,6735.316,45.44422,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,48.9,13.8,1,35.2,450,150,0,0,1.94591,5.010635,1,4.564348,6.160541,1,0,0,35.2,8.815269,1.94591,,0 +13,6,0,1,1,627433,1,6735.316,19.93703,1,10,1,0,0,0,0,0,0,0,0,0,0,0,10,52.7,17.2,0,50,450,150,0,0,2.302585,5.010635,1,4.564348,6.160541,0,0,0,50,8.815269,2.302585,,0 +13,6,0,1,2,627433,1,6735.316,20.93703,1,10,1,0,0,0,0,0,0,0,0,0,0,0,9,52.7,17.2,0,50,450,150,0,0,2.197225,5.010635,1,4.564348,6.160541,0,0,0,50,8.815269,2.197225,,0 +13,6,0,1,3,627433,1,6735.316,21.93703,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,52.7,17.2,0,50,450,150,0,0,1.94591,5.010635,1,4.564348,6.160541,0,0,0,50,8.815269,1.94591,,0 +13,6,0,1,1,627434,1,6735.316,46.29432,0,4,1,177.1572,40.97541,42.03835,0,6574.406,6834.577,3,0,0,0,0,10,53.2,20.7,0,40.5,450,150,0,0,2.302585,5.010635,1,4.564348,6.160541,1,0,0,40.5,8.815269,2.302585,8.82975,1 +13,6,0,1,2,627434,1,6735.316,47.29432,0,4,1,67.51688,90.55889,31.11403,0,2477.119,2666.309,2,0,0,6,0,9,53.2,20.7,0,40.5,450,150,0,0,2.197225,5.010635,1,4.564348,6.160541,1,0,0,40.5,8.815269,2.197225,7.888451,1 +13,6,0,1,1,627435,1,6735.316,13.39083,0,12,1,0,0,0,0,0,0,0,0,0,0,0,10,85,10.57626,0,66.7,450,150,1,0,2.302585,5.010635,1,4.564348,6.160541,1,0,0,66.7,8.815269,2.302585,,0 +13,6,0,1,2,627435,1,6735.316,14.39083,0,12,1,0,0,0,0,0,0,0,0,0,0,0,9,85,10.57626,0,66.7,450,150,1,0,2.197225,5.010635,1,4.564348,6.160541,1,0,0,66.7,8.815269,2.197225,,0 +13,6,0,1,3,627435,1,6735.316,15.39083,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,85,10.57626,0,66.7,450,150,1,0,1.94591,5.010635,1,4.564348,6.160541,1,0,0,66.7,8.815269,1.94591,,0 +13,6,0,0,1,627465,0,3349.206,58.51609,1,11,1,166.7376,10.52744,8.507018,0,0,185.772,0,0,0,2,16,2,88.3,10.3,1,56.8,300,150,0,0,.6931472,5.010635,1,4.564348,5.755076,1,0,0,56.8,8.116777,.6931472,5.22452,1 +13,6,0,0,2,627465,0,3349.206,59.51609,1,11,1,151.5267,13.77863,26.71756,0,0,192.0229,0,0,0,0,21,2,88.3,10.3,1,56.8,300,150,0,0,.6931472,5.010635,1,4.564348,5.755076,1,0,0,56.8,8.116777,.6931472,5.257615,1 +13,6,0,0,3,627465,0,3349.206,60.51609,1,11,1,160.6272,110.0871,35.75958,0,0,306.4739,0,0,0,8,17,2,88.3,10.3,1,56.8,300,150,0,0,.6931472,5.010635,1,4.564348,5.755076,1,0,0,56.8,8.116777,.6931472,5.725132,1 +13,6,0,0,1,627466,0,3349.206,61.10883,0,13,1,102.0842,0,101.4972,0,0,203.5815,0,0,0,0,10,2,94.1,0,0,61.4,300,150,0,0,.6931472,5.010635,1,4.564348,5.755076,0,0,0,61.4,8.116777,.6931472,5.316066,1 +13,6,0,0,2,627466,0,3349.206,62.10883,0,13,1,180.5343,0,26.71756,0,0,207.2519,0,0,0,5,10,2,94.1,0,0,61.4,300,150,0,0,.6931472,5.010635,1,4.564348,5.755076,0,0,0,61.4,8.116777,.6931472,5.333935,1 +13,6,0,0,3,627466,0,3349.206,63.10883,0,13,1,36.58537,2.700348,35.75958,0,0,75.0453,0,0,0,1,5,2,94.1,0,0,61.4,300,150,0,0,.6931472,5.010635,1,4.564348,5.755076,0,0,0,61.4,8.116777,.6931472,4.318092,1 +11,6,0,1,1,627475,0,9348.694,35.48528,0,14,1,136.963,84.01106,0,0,0,220.9741,0,0,0,12,5,5,73.9,13.8,0,76.1,0,0,0,0,1.609438,0,0,0,0,0,0,0,76.1,9.143099,1.609438,5.398046,1 +11,6,0,1,2,627475,0,9348.694,36.48528,0,14,1,90.07633,36.35496,32.06107,0,0,158.4924,0,0,0,8,0,5,73.9,13.8,0,76.1,0,0,0,0,1.609438,0,0,0,0,0,0,0,76.1,9.143099,1.609438,5.065706,1 +11,6,0,1,3,627475,0,9348.694,37.48528,0,14,1,72.8223,25.58885,0,0,0,98.41115,0,0,0,8,0,5,73.9,13.8,0,76.1,0,0,0,0,1.609438,0,0,0,0,0,0,0,76.1,9.143099,1.609438,4.589154,1 +11,6,0,1,1,627476,0,9348.694,4.84052,1,12,1,217.7797,14.35559,11.05912,0,0,243.1944,0,0,0,8,30,5,77.40034,10.57626,0,85.2,0,0,1,1,1.609438,0,0,0,0,0,0,0,85.2,9.143099,1.609438,5.493861,1 +11,6,0,1,2,627476,0,9348.694,5.84052,1,12,1,17.17557,7.954198,11.1145,0,323.5687,359.813,1,0,0,4,0,5,77.40034,10.57626,0,85.2,0,0,1,1,1.609438,0,0,0,0,0,0,0,85.2,9.143099,1.609438,5.885584,1 +11,6,0,1,3,627476,0,9348.694,6.84052,1,12,1,6.968641,0,0,0,0,6.968641,0,0,0,2,0,5,77.40034,10.57626,0,85.2,0,0,1,1,1.609438,0,0,0,0,0,0,0,85.2,9.143099,1.609438,1.94142,1 +11,6,0,1,1,627477,0,9348.694,31.84394,1,12,1,52.53084,44.31306,32.73501,0,0,129.5789,0,0,0,8,0,5,88.8,17.2,0,79.5,0,0,0,0,1.609438,0,0,0,0,0,0,0,79.5,9.143099,1.609438,4.86429,1 +11,6,0,1,2,627477,0,9348.694,32.84394,1,12,1,162.2137,1.812977,0,0,0,164.0267,0,0,0,3,12,5,88.8,17.2,0,79.5,0,0,0,0,1.609438,0,0,0,0,0,0,0,79.5,9.143099,1.609438,5.100029,1 +11,6,0,1,3,627477,0,9348.694,33.84394,1,12,1,31.70732,3.222996,0,0,0,34.93031,0,0,0,3,0,5,88.8,17.2,0,79.5,0,0,0,0,1.609438,0,0,0,0,0,0,0,79.5,9.143099,1.609438,3.553355,1 +11,6,0,1,1,627478,0,9348.694,8.416153,0,12,1,15.73798,16.58869,0,0,0,32.32667,0,0,0,3,0,5,93.3,10.57626,0,74.1,0,0,1,0,1.609438,0,0,0,0,0,0,0,74.1,9.143099,1.609438,3.475893,1 +11,6,0,1,2,627478,0,9348.694,9.416153,0,12,1,43.89313,14.02672,1.022901,0,324.9237,383.8664,1,0,0,6,0,5,93.3,10.57626,0,74.1,0,0,1,0,1.609438,0,0,0,0,0,0,0,74.1,9.143099,1.609438,5.950294,1 +11,6,0,1,3,627478,0,9348.694,10.41615,0,12,1,19.16376,2.073171,25.78397,0,0,47.0209,0,0,0,2,0,5,93.3,10.57626,0,74.1,0,0,1,0,1.609438,0,0,0,0,0,0,0,74.1,9.143099,1.609438,3.850592,1 +16,6,95,0,1,627492,0,10337.43,11.6742,1,11,1,0,0,0,0,0,0,0,0,0,0,0,8,85,10.57626,0,92.6,1000,1000,1,1,2.079442,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.243624,2.079442,,0 +16,6,95,0,2,627492,0,10337.43,12.6742,1,11,1,33.62297,0,1.133358,0,0,34.75633,0,0,0,6,0,8,85,10.57626,0,92.6,1000,1000,1,1,2.079442,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.243624,2.079442,3.548362,1 +16,6,95,0,3,627492,0,10337.43,13.6742,1,11,1,0,0,0,0,0,0,0,0,0,0,0,8,85,10.57626,0,92.6,1000,1000,1,1,2.079442,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.243624,2.079442,,0 +16,6,95,0,1,627493,0,10337.43,14.07803,0,11,1,0,0,0,0,0,0,0,0,0,0,0,8,90,10.57626,0,92.6,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.243624,2.079442,,0 +16,6,95,0,2,627493,0,10337.43,15.07803,0,11,1,0,0,0,0,0,0,0,0,0,0,0,8,90,10.57626,0,92.6,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.243624,2.079442,,0 +16,6,95,0,3,627493,0,10337.43,16.07803,0,11,1,0,0,0,0,0,0,0,0,0,0,0,8,90,10.57626,0,92.6,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,92.6,9.243624,2.079442,,0 +16,6,95,0,1,627494,0,10337.43,3.405886,0,11,1,130.8372,0,0,0,0,130.8372,0,0,0,2,0,8,77.40034,10.57626,0,81.5,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.243624,2.079442,4.873954,1 +16,6,95,0,2,627494,0,10337.43,4.405886,0,11,1,53.64564,0,0,0,279.184,332.8296,1,0,0,2,0,8,77.40034,10.57626,0,81.5,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.243624,2.079442,5.807631,1 +16,6,95,0,3,627494,0,10337.43,5.405886,0,11,1,102.2298,0,0,0,0,102.2298,0,0,0,4,0,8,77.40034,10.57626,0,81.5,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.243624,2.079442,4.627223,1 +16,6,95,0,1,627495,0,10337.43,32.83231,1,11,1,19.35213,0,0,0,0,19.35213,0,0,0,2,0,8,43.6,3.4,0,67,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,67,9.243624,2.079442,2.962802,1 +16,6,95,0,2,627495,0,10337.43,33.83231,1,11,1,0,0,0,0,0,0,0,0,0,0,0,8,43.6,3.4,0,67,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,67,9.243624,2.079442,,0 +16,6,95,0,3,627495,0,10337.43,34.83231,1,11,1,0,0,0,0,0,0,0,0,0,0,0,8,43.6,3.4,0,67,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,67,9.243624,2.079442,,0 +16,6,95,0,1,627496,0,10337.43,33.34702,0,4,1,0,0,0,0,0,0,0,0,0,0,0,8,62.8,0,0,88.6,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,88.6,9.243624,2.079442,,0 +16,6,95,0,2,627496,0,10337.43,34.34702,0,4,1,0,0,0,0,0,0,0,0,0,0,0,8,62.8,0,0,88.6,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,88.6,9.243624,2.079442,,0 +16,6,95,0,3,627496,0,10337.43,35.34702,0,4,1,21.2693,0,0,0,0,21.2693,0,0,0,0,0,8,62.8,0,0,88.6,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,88.6,9.243624,2.079442,3.057265,1 +16,6,95,0,1,627497,0,10337.43,10.71595,0,11,1,22.29701,0,0,0,0,22.29701,0,0,0,0,0,8,85,10.57626,0,48.1,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,48.1,9.243624,2.079442,3.104453,1 +16,6,95,0,2,627497,0,10337.43,11.71595,0,11,1,58.17907,0,0,0,0,58.17907,0,0,0,3,0,8,85,10.57626,0,48.1,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,48.1,9.243624,2.079442,4.063526,1 +16,6,95,0,3,627497,0,10337.43,12.71595,0,11,1,389.7084,0,0,0,689.8799,1079.588,1,0,0,2,0,8,85,10.57626,0,48.1,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,1,0,0,48.1,9.243624,2.079442,6.984335,1 +11,6,0,1,1,627530,.5112414,7290.834,21.83436,1,12,1,31.97308,2.629365,0,0,0,34.60244,0,0,0,2,0,3,86.2,0,0,85.2,0,240.48,0,0,1.098612,5.482637,0,0,0,1,0,0,85.2,8.89451,1.098612,3.543924,1 +11,6,0,1,2,627530,.5112414,7290.834,22.83436,1,12,1,5.289006,0,0,0,0,5.289006,0,0,0,1,0,3,86.2,0,0,85.2,0,240.48,0,0,1.098612,5.482637,0,0,0,1,0,0,85.2,8.89451,1.098612,1.66563,1 +11,6,0,1,3,627530,.5112414,7290.834,23.83436,1,12,1,26.41509,4.373928,0,0,366.3808,397.1698,1,0,0,2,0,3,86.2,0,0,85.2,0,240.48,0,0,1.098612,5.482637,0,0,0,1,0,0,85.2,8.89451,1.098612,5.984364,1 +13,6,0,1,1,627532,1,4247.507,52.15332,1,3,1,3.685504,0,0,0,0,3.685504,0,0,0,1,0,7,75.4,31,1,34.1,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,34.1,8.354323,1.94591,1.304407,1 +13,6,0,1,2,627532,1,4247.507,53.15332,1,3,1,7.292616,0,0,0,373.2908,380.5834,1,0,0,2,0,7,75.4,31,1,34.1,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,34.1,8.354323,1.94591,5.941705,1 +13,6,0,1,3,627532,1,4247.507,54.15332,1,3,1,37.51563,0,0,0,1205.919,1243.435,1,0,0,7,0,7,75.4,31,1,34.1,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,34.1,8.354323,1.94591,7.125633,1 +13,6,0,1,4,627532,1,4247.507,55.15332,1,3,1,19.12978,0,0,0,0,19.12978,0,0,0,1,0,7,75.4,31,1,34.1,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,34.1,8.354323,1.94591,2.951246,1 +13,6,0,1,5,627532,1,4247.507,56.15332,1,3,1,6.7659,11.5088,0,0,0,18.2747,0,0,0,2,0,7,75.4,31,1,34.1,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,34.1,8.354323,1.94591,2.905517,1 +13,6,0,1,1,627533,1,4247.507,21.0705,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,76.1,0,0,67,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,67,8.354323,1.94591,,0 +13,6,0,1,2,627533,1,4247.507,22.0705,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,76.1,0,0,67,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,67,8.354323,1.94591,,0 +13,6,0,1,3,627533,1,4247.507,23.0705,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,76.1,0,0,67,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,67,8.354323,1.94591,,0 +13,6,0,1,4,627533,1,4247.507,24.0705,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,76.1,0,0,67,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,67,8.354323,1.94591,,0 +13,6,0,1,5,627533,1,4247.507,25.0705,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,76.1,0,0,67,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,67,8.354323,1.94591,,0 +13,6,0,1,1,627536,1,4247.507,19.37029,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,73.4,3.4,0,71.4,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,71.4,8.354323,1.94591,,0 +13,6,0,1,2,627536,1,4247.507,20.37029,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,73.4,3.4,0,71.4,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,71.4,8.354323,1.94591,,0 +13,6,0,1,3,627536,1,4247.507,21.37029,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,73.4,3.4,0,71.4,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,71.4,8.354323,1.94591,,0 +13,6,0,1,4,627536,1,4247.507,22.37029,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,73.4,3.4,0,71.4,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,71.4,8.354323,1.94591,,0 +13,6,0,1,5,627536,1,4247.507,23.37029,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,73.4,3.4,0,71.4,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,71.4,8.354323,1.94591,,0 +13,6,0,1,1,627537,1,4247.507,17.18001,1,3,1,39.31204,0,0,0,0,39.31204,0,0,0,1,0,7,83,10.3,0,63.6,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,1,0,63.6,8.354323,1.94591,3.671531,1 +13,6,0,1,2,627537,1,4247.507,18.18001,1,3,1,30.99362,0,0,0,0,30.99362,0,0,0,2,0,7,83,10.3,0,63.6,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,63.6,8.354323,1.94591,3.433781,1 +13,6,0,1,3,627537,1,4247.507,19.18001,1,3,1,15.00625,0,0,0,0,15.00625,0,0,0,1,0,7,83,10.3,0,63.6,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,63.6,8.354323,1.94591,2.708467,1 +13,6,0,1,4,627537,1,4247.507,20.18001,1,3,1,22.13053,19.93999,0,0,0,42.07052,0,0,0,2,0,7,83,10.3,0,63.6,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,63.6,8.354323,1.94591,3.739347,1 +13,6,0,1,5,627537,1,4247.507,21.18001,1,3,1,30.44655,15.12179,0,0,0,45.56834,0,0,0,2,0,7,83,10.3,0,63.6,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,63.6,8.354323,1.94591,3.819213,1 +13,6,0,1,1,627539,1,4247.507,12.92813,0,3,1,0,0,0,0,0,0,0,0,0,0,0,7,76.7,10.57626,0,66.7,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,66.7,8.354323,1.94591,,0 +13,6,0,1,2,627539,1,4247.507,13.92813,0,3,1,13.67366,0,0,0,0,13.67366,0,0,0,1,0,7,76.7,10.57626,0,66.7,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,66.7,8.354323,1.94591,2.615471,1 +13,6,0,1,3,627539,1,4247.507,14.92813,0,3,1,0,0,0,0,0,0,0,0,0,0,0,7,76.7,10.57626,0,66.7,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,66.7,8.354323,1.94591,,0 +13,6,0,1,4,627539,1,4247.507,15.92813,0,3,1,0,0,0,0,0,0,0,0,0,0,0,7,76.7,10.57626,0,66.7,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,66.7,8.354323,1.94591,,0 +13,6,0,1,5,627539,1,4247.507,16.92813,0,3,1,0,0,0,0,0,0,0,0,0,0,0,7,76.7,10.57626,0,66.7,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,1,0,66.7,8.354323,1.94591,,0 +6,6,25,1,1,627600,1,11735.28,12.63518,1,17,1,22.09254,9.378908,0,0,0,31.47145,0,0,0,2,0,5,100,10.57626,0,100,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,100,9.37044,1.609438,3.449081,1 +6,6,25,1,2,627600,1,11735.28,13.63518,1,17,1,0,0,0,0,0,0,0,0,0,0,0,5,100,10.57626,0,100,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,100,9.37044,1.609438,,0 +6,6,25,1,3,627600,1,11735.28,14.63518,1,17,1,0,0,0,0,0,0,0,0,0,0,0,5,100,10.57626,0,100,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,100,9.37044,1.609438,,0 +6,6,25,1,1,627601,1,11735.28,14.43395,0,17,1,82.11755,20.77115,0,0,0,102.8887,0,0,0,3,0,5,91.7,10.57626,0,70.4,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.4,9.37044,1.609438,4.633648,1 +6,6,25,1,2,627601,1,11735.28,15.43395,0,17,1,28.88222,0,0,0,0,28.88222,0,0,0,3,0,5,91.7,10.57626,0,70.4,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.4,9.37044,1.609438,3.363226,1 +6,6,25,1,3,627601,1,11735.28,16.43395,0,17,1,0,0,0,0,0,0,0,0,0,0,0,5,91.7,10.57626,0,70.4,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.4,9.37044,1.609438,,0 +6,6,25,1,1,627602,1,11735.28,32.27105,0,16,1,0,3.418091,0,0,0,3.418091,0,0,0,0,0,5,63.3,3.4,1,48.9,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,48.9,9.37044,1.609438,1.229082,1 +6,6,25,1,2,627602,1,11735.28,33.27105,0,16,1,22.13053,11.06527,0,0,0,33.1958,0,0,0,3,0,5,63.3,3.4,1,48.9,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,48.9,9.37044,1.609438,3.502423,1 +6,6,25,1,3,627602,1,11735.28,34.27105,0,16,1,39.58051,5.074425,37.24966,0,0,81.9046,0,0,0,3,0,5,63.3,3.4,1,48.9,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,48.9,9.37044,1.609438,4.405555,1 +6,6,25,1,1,627603,1,11735.28,33.98768,1,17,1,32.09671,6.773656,0,0,828.0533,866.9237,1,0,0,3,0,5,94.1,27.6,0,72.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,72.7,9.37044,1.609438,6.764951,1 +6,6,25,1,2,627603,1,11735.28,34.98768,1,17,1,0,0,0,0,0,0,0,0,0,0,0,5,94.1,27.6,0,72.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,72.7,9.37044,1.609438,,0 +6,6,25,1,3,627603,1,11735.28,35.98768,1,17,1,0,0,0,0,0,0,0,0,0,0,0,5,94.1,27.6,0,72.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,72.7,9.37044,1.609438,,0 +13,6,0,0,1,627616,1,0,25.9165,0,7,1,0,0,0,0,0,0,0,0,0,0,0,5,74.3,3.4,0,69.3,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,1,0,69.3,0,1.609438,,0 +13,6,0,0,2,627616,1,0,26.9165,0,7,1,0,0,0,0,0,0,0,0,0,0,0,5,74.3,3.4,0,69.3,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,1,0,69.3,0,1.609438,,0 +13,6,0,0,3,627616,1,0,27.9165,0,7,1,11.49826,3.41115,0,0,0,14.90941,0,0,0,0,0,5,74.3,3.4,0,69.3,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,1,0,69.3,0,1.609438,2.701993,1 +13,6,0,1,1,627617,1,0,19.85489,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,73.4,6.9,0,69.3,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,1,0,69.3,0,1.609438,,0 +13,6,0,1,2,627617,1,0,20.85489,1,9,1,15.26718,8.641221,0,0,0,23.9084,0,0,0,1,0,5,73.4,6.9,0,69.3,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,1,0,69.3,0,1.609438,3.17423,1 +13,6,0,1,3,627617,1,0,21.85489,1,9,1,5.923345,8.909408,0,0,798.2578,813.0906,1,0,0,1,0,5,73.4,6.9,0,69.3,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,1,0,69.3,0,1.609438,6.700842,1 +13,6,0,1,1,627618,1,0,3.649555,1,9,1,8.932369,0,0,0,0,8.932369,0,0,0,1,0,5,77.40034,10.57626,0,85.2,450,0,1,1,1.609438,0,1,4.564348,6.160541,1,0,0,85.2,0,1.609438,2.189682,1 +13,6,0,1,2,627618,1,0,4.649555,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,85.2,450,0,1,1,1.609438,0,1,4.564348,6.160541,1,0,0,85.2,0,1.609438,,0 +13,6,0,1,3,627618,1,0,5.649555,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,85.2,450,0,1,1,1.609438,0,1,4.564348,6.160541,1,0,0,85.2,0,1.609438,,0 +14,6,95,1,1,627711,1,9537.635,14.59548,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,80.9,3.4,0,75,640,640,1,1,1.609438,6.461468,0,4.564348,6.512762,1,0,0,75,9.163106,1.609438,,0 +14,6,95,1,2,627711,1,9537.635,15.59548,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,80.9,3.4,0,75,640,640,1,1,1.609438,6.461468,0,4.564348,6.512762,1,0,0,75,9.163106,1.609438,,0 +14,6,95,1,3,627711,1,9537.635,16.59548,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,80.9,3.4,0,75,640,640,1,1,1.609438,6.461468,0,4.564348,6.512762,1,0,0,75,9.163106,1.609438,,0 +14,6,95,1,1,627713,1,9537.635,13.10062,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,10.57626,0,92.6,640,640,1,0,1.609438,6.461468,0,4.564348,6.512762,0,0,0,92.6,9.163106,1.609438,,0 +14,6,95,1,2,627713,1,9537.635,14.10062,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,10.57626,0,92.6,640,640,1,0,1.609438,6.461468,0,4.564348,6.512762,0,0,0,92.6,9.163106,1.609438,,0 +14,6,95,1,3,627713,1,9537.635,15.10062,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,10.57626,0,92.6,640,640,1,0,1.609438,6.461468,0,4.564348,6.512762,0,0,0,92.6,9.163106,1.609438,,0 +14,6,95,1,1,627714,1,9537.635,37.18002,1,12,1,0,0,33.00889,0,0,33.00889,0,0,0,0,0,5,73.4,24.1,1,47.6,640,640,0,0,1.609438,6.461468,0,4.564348,6.512762,1,0,0,47.6,9.163106,1.609438,3.496777,1 +14,6,95,1,2,627714,1,9537.635,38.18002,1,12,1,26.1959,0,0,0,0,26.1959,0,0,0,1,0,5,73.4,24.1,1,47.6,640,640,0,0,1.609438,6.461468,0,4.564348,6.512762,1,0,0,47.6,9.163106,1.609438,3.265603,1 +14,6,95,1,3,627714,1,9537.635,39.18002,1,12,1,10.72664,0,0,0,0,10.72664,0,0,0,0,0,5,73.4,24.1,1,47.6,640,640,0,0,1.609438,6.461468,0,4.564348,6.512762,1,0,0,47.6,9.163106,1.609438,2.372731,1 +14,6,95,1,1,627715,1,9537.635,17.0486,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,75,3.4,0,67,640,640,1,1,1.609438,6.461468,0,4.564348,6.512762,1,0,0,67,9.163106,1.609438,,0 +14,6,95,1,2,627715,1,9537.635,18.0486,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,75,3.4,0,67,640,640,0,0,1.609438,6.461468,0,4.564348,6.512762,1,0,0,67,9.163106,1.609438,,0 +14,6,95,1,3,627715,1,9537.635,19.0486,1,12,1,0,0,0,0,12.11073,12.11073,1,1,0,0,0,5,75,3.4,0,67,640,640,0,0,1.609438,6.461468,0,4.564348,6.512762,1,0,0,67,9.163106,1.609438,2.494092,1 +14,6,95,1,1,627716,1,9537.635,7.134839,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,75,10.57626,0,85.2,640,640,1,0,1.609438,6.461468,0,4.564348,6.512762,0,0,0,85.2,9.163106,1.609438,,0 +14,6,95,1,2,627716,1,9537.635,8.134839,0,12,1,11.76917,0,0,0,0,11.76917,0,0,0,0,0,5,75,10.57626,0,85.2,640,640,1,0,1.609438,6.461468,0,4.564348,6.512762,0,0,0,85.2,9.163106,1.609438,2.465484,1 +14,6,95,1,3,627716,1,9537.635,9.134839,0,12,1,18.68512,0,0,0,0,18.68512,0,0,0,0,0,5,75,10.57626,0,85.2,640,640,1,0,1.609438,6.461468,0,4.564348,6.512762,0,0,0,85.2,9.163106,1.609438,2.927727,1 +13,6,0,1,1,627717,0,7954.941,8.388775,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.981674,1.386294,,0 +13,6,0,1,2,627717,0,7954.941,9.388775,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.981674,1.386294,,0 +13,6,0,1,3,627717,0,7954.941,10.38877,1,13,1,17.83876,3.530017,0,0,0,21.36878,0,0,0,1,0,4,85,10.57626,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.981674,1.386294,3.061931,1 +13,6,0,1,1,627718,0,7954.941,29.16359,1,13,1,21.03492,0,0,0,0,21.03492,0,0,0,1,0,4,77.1,10.3,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.3,8.981674,1.386294,3.046184,1 +13,6,0,1,2,627718,0,7954.941,30.16359,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,77.1,10.3,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.3,8.981674,1.386294,,0 +13,6,0,1,3,627718,0,7954.941,31.16359,1,13,1,7.54717,4.559176,0,0,0,12.10635,0,0,0,1,0,4,77.1,10.3,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.3,8.981674,1.386294,2.49373,1 +13,6,0,1,1,627719,0,7954.941,31.33744,0,14,1,25.2419,0,0,0,0,25.2419,0,0,0,0,0,4,74.5,13.8,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,8.981674,1.386294,3.228505,1 +13,6,0,1,2,627719,0,7954.941,32.33744,0,14,1,7.555724,0,0,0,0,7.555724,0,0,0,1,0,4,74.5,13.8,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,8.981674,1.386294,2.022305,1 +13,6,0,1,3,627719,0,7954.941,33.33744,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,74.5,13.8,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,8.981674,1.386294,,0 +11,6,0,0,1,627725,0,3916.539,8.071184,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,96.7,10.57626,.1442925,100,0,124.32,1,0,.6931472,4.822859,0,0,0,0,0,0,100,8.273219,.6931472,,0 +11,6,0,0,2,627725,0,3916.539,9.071184,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,96.7,10.57626,.1442925,100,0,124.32,1,0,.6931472,4.822859,0,0,0,0,0,0,100,8.273219,.6931472,,0 +11,6,0,0,3,627725,0,3916.539,10.07118,0,12,1,16.26298,3.685121,0,0,0,19.9481,0,0,0,3,0,2,96.7,10.57626,.1442925,100,0,124.32,1,0,.6931472,4.822859,0,0,0,0,0,0,100,8.273219,.6931472,2.993134,1 +11,6,0,0,1,627726,0,3916.539,46.78987,1,12,1,10.57977,13.22471,33.85527,0,0,57.65976,0,0,0,0,1,2,81.9,10.3,0,89.8,0,124.32,0,0,.6931472,4.822859,0,0,0,0,0,0,89.8,8.273219,.6931472,4.054559,1 +11,6,0,0,2,627726,0,3916.539,47.78987,1,12,1,18.98254,73.22703,0,0,0,92.20956,0,0,0,1,1,2,81.9,10.3,0,89.8,0,124.32,0,0,.6931472,4.822859,0,0,0,0,0,0,89.8,8.273219,.6931472,4.524064,1 +11,6,0,0,3,627726,0,3916.539,48.78987,1,12,1,169.8962,88.59862,34.60208,0,1874.74,2167.837,2,0,0,9,1,2,81.9,10.3,0,89.8,0,124.32,0,0,.6931472,4.822859,0,0,0,0,0,0,89.8,8.273219,.6931472,7.681485,1 +11,6,0,1,1,627744,1,5922.683,44.99384,1,3,1,134.2226,57.87828,0,0,0,192.1009,0,0,0,7,0,5,63.3,17.2,0,44.3,0,154.8,0,0,1.609438,5.042134,0,0,0,0,0,1,44.3,8.686713,1.609438,5.25802,1 +11,6,0,1,2,627744,1,5922.683,45.99384,1,3,1,240.8102,60.08627,31.88297,0,886.7217,1219.501,2,0,0,9,1,5,63.3,17.2,0,44.3,0,154.8,0,0,1.609438,5.042134,0,0,0,0,0,1,44.3,8.686713,1.609438,7.106197,1 +11,6,0,1,3,627744,1,5922.683,46.99384,1,3,1,117.659,55.93708,0,0,0,173.5961,0,0,0,5,0,5,63.3,17.2,0,44.3,0,154.8,0,0,1.609438,5.042134,0,0,0,0,0,1,44.3,8.686713,1.609438,5.156731,1 +11,6,0,1,1,627745,1,5922.683,48.0794,0,3,1,43.76824,2.146728,0,0,0,45.91496,0,0,0,3,0,5,74.5,10.3,0,63.6,0,154.8,0,0,1.609438,5.042134,0,0,0,1,0,0,63.6,8.686713,1.609438,3.826791,1 +11,6,0,1,2,627745,1,5922.683,49.0794,0,3,1,77.26932,0,0,0,0,77.26932,0,0,0,2,0,5,74.5,10.3,0,63.6,0,154.8,0,0,1.609438,5.042134,0,0,0,1,0,0,63.6,8.686713,1.609438,4.347297,1 +11,6,0,1,3,627745,1,5922.683,50.0794,0,3,1,0,0,0,0,0,0,0,0,0,0,0,5,74.5,10.3,0,63.6,0,154.8,0,0,1.609438,5.042134,0,0,0,1,0,0,63.6,8.686713,1.609438,,0 +11,6,0,1,1,627746,1,5922.683,17.36071,1,3,1,67.52814,10.94206,0,0,0,78.4702,0,0,0,3,0,5,68.1,13.8,0,51.1,0,154.8,1,1,1.609438,5.042134,0,0,0,0,1,0,51.1,8.686713,1.609438,4.362719,1 +11,6,0,1,2,627746,1,5922.683,18.36071,1,3,1,68.26707,7.051763,0,0,0,75.31883,0,0,0,1,0,5,68.1,13.8,0,51.1,0,154.8,0,0,1.609438,5.042134,0,0,0,0,1,0,51.1,8.686713,1.609438,4.32173,1 +11,6,0,1,3,627746,1,5922.683,19.36071,1,3,1,66.81326,13.49797,0,0,0,80.31123,0,0,0,3,0,5,68.1,13.8,0,51.1,0,154.8,0,0,1.609438,5.042134,0,0,0,0,1,0,51.1,8.686713,1.609438,4.38591,1 +11,6,0,1,1,627747,1,5922.683,15.1321,1,3,1,88.37016,15.94414,0,0,0,104.3143,0,0,0,2,0,5,61.7,13.8,0,59.1,0,154.8,1,1,1.609438,5.042134,0,0,0,1,0,0,59.1,8.686713,1.609438,4.647408,1 +11,6,0,1,2,627747,1,5922.683,16.1321,1,3,1,130.9077,25.95649,0,0,0,156.8642,0,0,0,6,0,5,61.7,13.8,0,59.1,0,154.8,1,1,1.609438,5.042134,0,0,0,1,0,0,59.1,8.686713,1.609438,5.05538,1 +11,6,0,1,3,627747,1,5922.683,17.1321,1,3,1,59.20162,19.53654,0,0,488.8363,567.5744,1,0,0,4,0,5,61.7,13.8,0,59.1,0,154.8,1,1,1.609438,5.042134,0,0,0,1,0,0,59.1,8.686713,1.609438,6.341372,1 +11,6,0,1,1,627748,1,5922.683,9.960301,0,3,1,116.7153,6.773656,0,0,0,123.489,0,0,0,7,0,5,83.3,10.57626,0,74.1,0,154.8,1,0,1.609438,5.042134,0,0,0,1,0,0,74.1,8.686713,1.609438,4.816152,1 +11,6,0,1,2,627748,1,5922.683,10.9603,0,3,1,107.2768,2.006752,26.25657,0,0,135.5401,0,0,0,5,1,5,83.3,10.57626,0,74.1,0,154.8,1,0,1.609438,5.042134,0,0,0,1,0,0,74.1,8.686713,1.609438,4.909268,1 +11,6,0,1,3,627748,1,5922.683,11.9603,0,3,1,79.83762,3.366035,2.537212,0,0,85.74087,0,0,0,4,0,5,83.3,10.57626,0,74.1,0,154.8,1,0,1.609438,5.042134,0,0,0,1,0,0,74.1,8.686713,1.609438,4.45133,1 +11,6,0,0,1,627761,1,6735.316,14.22313,0,12,1,0,0,0,0,0,0,0,0,0,0,0,10,52.1,6.9,0,62.5,0,0,1,0,2.302585,0,0,0,0,1,0,0,62.5,8.815269,2.302585,,0 +11,6,0,0,2,627761,1,6735.316,15.22313,0,12,1,0,0,0,0,0,0,0,0,0,0,0,9,52.1,6.9,0,62.5,0,0,1,0,2.197225,0,0,0,0,1,0,0,62.5,8.815269,2.197225,,0 +11,6,0,0,3,627761,1,6735.316,16.22313,0,12,1,10.57977,0,0,0,0,10.57977,0,0,0,1,0,9,52.1,6.9,0,62.5,0,0,1,0,2.197225,0,0,0,0,1,0,0,62.5,8.815269,2.197225,2.358944,1 +11,6,0,0,4,627761,1,6735.316,17.22313,0,12,1,7.593014,0,0,0,0,7.593014,0,0,0,1,0,9,52.1,6.9,0,62.5,0,0,1,0,2.197225,0,0,0,0,1,0,0,62.5,8.815269,2.197225,2.027229,1 +11,6,0,0,5,627761,1,6735.316,18.22313,0,12,1,24.91349,5.550173,0,0,0,30.46367,0,0,0,3,0,9,52.1,6.9,0,62.5,0,0,0,0,2.197225,0,0,0,0,1,0,0,62.5,8.815269,2.197225,3.416535,1 +11,6,0,0,1,627762,1,6735.316,13.09788,1,12,1,0,.7930174,0,0,0,.7930174,0,0,0,0,0,10,71.7,10.57626,0,66.7,0,0,1,1,2.302585,0,0,0,0,1,0,0,66.7,8.815269,2.302585,-.23191,1 +11,6,0,0,2,627762,1,6735.316,14.09788,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,71.7,10.57626,0,66.7,0,0,1,1,2.197225,0,0,0,0,1,0,0,66.7,8.815269,2.197225,,0 +11,6,0,0,3,627762,1,6735.316,15.09788,1,12,1,0,.8463817,0,0,0,.8463817,0,0,0,0,0,9,71.7,10.57626,0,66.7,0,0,1,1,2.197225,0,0,0,0,1,0,0,66.7,8.815269,2.197225,-.1667848,1 +11,6,0,0,4,627762,1,6735.316,16.09788,1,12,1,19.36219,6.529993,0,0,0,25.89218,0,0,0,3,0,9,71.7,10.57626,0,66.7,0,0,1,1,2.197225,0,0,0,0,1,0,0,66.7,8.815269,2.197225,3.253941,1 +11,6,0,0,5,627762,1,6735.316,17.09788,1,12,1,6.920415,4.013841,0,0,0,10.93426,0,0,0,1,0,9,71.7,10.57626,0,66.7,0,0,1,1,2.197225,0,0,0,0,1,0,0,66.7,8.815269,2.197225,2.391901,1 +11,6,0,0,1,627763,1,6735.316,17.38535,0,12,1,12.46883,8.703242,0,0,367.0823,388.2544,1,0,0,2,0,10,73.4,6.9,0,67,0,0,1,0,2.302585,0,0,0,0,1,0,0,67,8.815269,2.302585,5.961661,1 +11,6,0,0,1,627764,1,6735.316,11.92334,1,12,1,0,0,0,0,0,0,0,0,0,0,0,10,81.7,10.57626,0,70.4,0,0,1,1,2.302585,0,0,0,0,1,0,0,70.4,8.815269,2.302585,,0 +11,6,0,0,2,627764,1,6735.316,12.92334,1,12,1,0,1.470724,0,0,0,1.470724,0,0,0,0,0,9,81.7,10.57626,0,70.4,0,0,1,1,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,.3857547,1 +11,6,0,0,3,627764,1,6735.316,13.92334,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,81.7,10.57626,0,70.4,0,0,1,1,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,,0 +11,6,0,0,4,627764,1,6735.316,14.92334,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,81.7,10.57626,0,70.4,0,0,1,1,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,,0 +11,6,0,0,5,627764,1,6735.316,15.92334,1,12,1,16.609,10.10381,0,0,0,26.7128,0,0,0,2,0,9,81.7,10.57626,0,70.4,0,0,1,1,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,3.285143,1 +11,6,0,0,1,627765,1,6735.316,16.12047,1,12,1,0,2.334165,0,0,0,2.334165,0,0,0,0,0,10,60.6,3.4,0,64.8,0,0,1,1,2.302585,0,0,0,0,1,0,0,64.8,8.815269,2.302585,.847654,1 +11,6,0,0,2,627765,1,6735.316,17.12047,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,60.6,3.4,0,64.8,0,0,1,1,2.197225,0,0,0,0,1,0,0,64.8,8.815269,2.197225,,0 +11,6,0,0,3,627765,1,6735.316,18.12047,1,12,1,23.2755,25.20948,0,0,0,48.48498,0,0,0,3,0,9,60.6,3.4,0,64.8,0,0,0,0,2.197225,0,0,0,0,1,0,0,64.8,8.815269,2.197225,3.881254,1 +11,6,0,0,4,627765,1,6735.316,19.12047,1,12,1,20.59605,20.01519,0,0,0,40.61124,0,0,0,1,0,9,60.6,3.4,0,64.8,0,0,0,0,2.197225,0,0,0,0,1,0,0,64.8,8.815269,2.197225,3.704045,1 +11,6,0,0,5,627765,1,6735.316,20.12047,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,60.6,3.4,0,64.8,0,0,0,0,2.197225,0,0,0,0,1,0,0,64.8,8.815269,2.197225,,0 +11,6,0,0,1,627766,1,6735.316,53.21287,0,10,1,0,0,0,0,0,0,0,0,0,0,0,10,73.4,13.8,0,75,0,0,0,0,2.302585,0,0,0,0,1,0,0,75,8.815269,2.302585,,0 +11,6,0,0,2,627766,1,6735.316,54.21287,0,10,1,24.89627,32.72937,0,0,195.9428,253.5685,1,1,0,4,0,9,73.4,13.8,0,75,0,0,0,0,2.197225,0,0,0,0,1,0,0,75,8.815269,2.197225,5.535634,1 +11,6,0,0,3,627766,1,6735.316,55.21287,0,10,1,75.32797,31.33305,0,0,0,106.661,0,0,0,10,0,9,73.4,13.8,0,75,0,0,0,0,2.197225,0,0,0,0,1,0,0,75,8.815269,2.197225,4.669656,1 +11,6,0,0,4,627766,1,6735.316,56.21287,0,10,1,59.98481,78.94457,0,0,0,138.9294,0,0,0,10,0,9,73.4,13.8,0,75,0,0,0,0,2.197225,0,0,0,0,1,0,0,75,8.815269,2.197225,4.933966,1 +11,6,0,0,5,627766,1,6735.316,57.21287,0,10,1,72.31834,66.15917,33.56401,0,0,172.0415,0,0,0,9,0,9,73.4,13.8,0,75,0,0,0,0,2.197225,0,0,0,0,1,0,0,75,8.815269,2.197225,5.147736,1 +11,6,0,0,1,627767,1,6735.316,45.30595,1,12,1,80.29926,2.857855,0,0,0,83.1571,0,0,0,7,0,10,65.4,17.2,0,56.8,0,0,0,0,2.302585,0,0,0,0,1,0,0,56.8,8.815269,2.302585,4.420732,1 +11,6,0,0,2,627767,1,6735.316,46.30595,1,12,1,18.44168,10.62241,0,0,0,29.06409,0,0,0,2,0,9,65.4,17.2,0,56.8,0,0,0,0,2.197225,0,0,0,0,1,0,0,56.8,8.815269,2.197225,3.369503,1 +11,6,0,0,3,627767,1,6735.316,47.30595,1,12,1,6.347863,7.173085,0,0,0,13.52095,0,0,0,1,0,9,65.4,17.2,0,56.8,0,0,0,0,2.197225,0,0,0,0,1,0,0,56.8,8.815269,2.197225,2.60424,1 +11,6,0,0,4,627767,1,6735.316,48.30595,1,12,1,14.42673,0,0,0,0,14.42673,0,0,0,1,0,9,65.4,17.2,0,56.8,0,0,0,0,2.197225,0,0,0,0,1,0,0,56.8,8.815269,2.197225,2.669083,1 +11,6,0,0,5,627767,1,6735.316,49.30595,1,12,1,51.55709,33.35986,0,0,0,84.91695,0,0,0,6,0,9,65.4,17.2,0,56.8,0,0,0,0,2.197225,0,0,0,0,1,0,0,56.8,8.815269,2.197225,4.441674,1 +11,6,0,0,1,627768,1,6735.316,9.823409,1,12,1,0,1.451372,0,0,0,1.451372,0,0,0,0,0,10,87.3,10.57626,0,77.8,0,0,1,1,2.302585,0,0,0,0,1,0,0,77.8,8.815269,2.302585,.372509,1 +11,6,0,0,2,627768,1,6735.316,10.82341,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,87.3,10.57626,0,77.8,0,0,1,1,2.197225,0,0,0,0,1,0,0,77.8,8.815269,2.197225,,0 +11,6,0,0,3,627768,1,6735.316,11.82341,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,87.3,10.57626,0,77.8,0,0,1,1,2.197225,0,0,0,0,1,0,0,77.8,8.815269,2.197225,,0 +11,6,0,0,4,627768,1,6735.316,12.82341,1,12,1,6.454062,0,0,0,0,6.454062,0,0,0,1,0,9,87.3,10.57626,0,77.8,0,0,1,1,2.197225,0,0,0,0,1,0,0,77.8,8.815269,2.197225,1.86471,1 +11,6,0,0,5,627768,1,6735.316,13.82341,1,12,1,20.0692,8.280277,0,0,0,28.34948,0,0,0,3,0,9,87.3,10.57626,0,77.8,0,0,1,1,2.197225,0,0,0,0,1,0,0,77.8,8.815269,2.197225,3.344609,1 +11,6,0,0,1,627785,1,6735.316,31.83299,1,12,1,367.3297,20.16928,27.59204,0,1038.934,1454.025,1,0,0,5,36,3,81.4,13.8,0,72.7,0,0,0,0,1.098612,0,0,0,0,1,0,0,72.7,8.815269,1.098612,7.282091,1 +11,6,0,0,2,627785,1,6735.316,32.83299,1,12,1,189.8254,7.406986,0,0,940.0152,1137.248,1,0,0,6,13,3,81.4,13.8,0,72.7,0,0,0,0,1.098612,0,0,0,0,1,0,0,72.7,8.815269,1.098612,7.036366,1 +11,6,0,0,3,627785,1,6735.316,33.83299,1,12,1,278.5467,6.027682,28.38754,0,0,312.9619,0,0,0,3,25,3,81.4,13.8,0,72.7,0,0,0,0,1.098612,0,0,0,0,1,0,0,72.7,8.815269,1.098612,5.746082,1 +11,6,0,0,1,627786,1,6735.316,3.022587,0,12,1,19.04359,1.231485,27.50741,0,0,47.78248,0,0,0,1,1,3,77.40034,10.57626,0,96.3,0,0,1,0,1.098612,0,0,0,0,0,0,0,96.3,8.815269,1.098612,3.866659,1 +11,6,0,0,2,627786,1,6735.316,4.022587,0,12,1,73.65224,10.05315,0,0,0,83.70539,0,0,0,4,11,3,77.40034,10.57626,0,96.3,0,0,1,0,1.098612,0,0,0,0,0,0,0,96.3,8.815269,1.098612,4.427303,1 +11,6,0,0,3,627786,1,6735.316,5.022587,0,12,1,101.7301,1.179931,19.72318,0,0,122.6332,0,0,0,0,10,3,77.40034,10.57626,0,96.3,0,0,1,0,1.098612,0,0,0,0,0,0,0,96.3,8.815269,1.098612,4.809198,1 +11,6,0,0,1,627787,1,6735.316,33.76591,0,12,1,242.0652,24.07533,8.463818,0,0,274.6043,0,0,0,2,32,3,77.1,17.2,0,64.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,64.8,8.815269,1.098612,5.615331,1 +11,6,0,0,2,627787,1,6735.316,34.76591,0,12,1,276.7654,0,0,0,0,276.7654,0,0,0,0,31,3,77.1,17.2,0,64.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,64.8,8.815269,1.098612,5.62317,1 +11,6,0,0,3,627787,1,6735.316,35.76591,0,12,1,194.1176,0,0,0,0,194.1176,0,0,0,1,21,3,77.1,17.2,0,64.8,0,0,0,0,1.098612,0,0,0,0,1,0,0,64.8,8.815269,1.098612,5.268465,1 +7,6,25,0,1,627809,1,4621.608,43.28268,1,11,1,63.94615,11.96045,0,0,0,75.90661,0,0,0,2,0,2,84.6,6.9,0,67,750,0,0,0,.6931472,0,0,3.258096,8.006368,1,0,0,67,8.438714,.6931472,4.329504,1 +7,6,25,0,2,627809,1,4621.608,44.28268,1,11,1,23.23385,0,0,0,237.6275,260.8614,1,0,0,1,0,2,84.6,6.9,0,67,750,0,0,0,.6931472,0,0,3.258096,8.006368,1,0,0,67,8.438714,.6931472,5.563989,1 +7,6,25,0,3,627809,1,4621.608,45.28268,1,11,1,211.6638,0,37.73585,0,0,249.3997,0,0,0,2,1,1,84.6,6.9,0,67,750,0,0,0,0,0,0,3.258096,8.006368,1,0,0,67,8.438714,0,5.519057,1 +13,6,0,1,1,627814,1,10992.32,26.33539,0,12,1,104.5281,0,0,0,0,104.5281,0,0,0,5,0,4,78.7,3.4,0,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,83,9.305043,1.386294,4.649457,1 +13,6,0,1,2,627814,1,10992.32,27.33539,0,12,1,46.69704,0,0,0,0,46.69704,0,0,0,2,0,4,78.7,3.4,0,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,83,9.305043,1.386294,3.843681,1 +13,6,0,1,3,627814,1,10992.32,28.33539,0,12,1,109.6886,0,0,0,246.0208,355.7094,1,1,0,2,0,4,78.7,3.4,0,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,83,9.305043,1.386294,5.874114,1 +13,6,0,1,1,627815,1,10992.32,5.24846,0,12,1,11.42615,0,0,0,0,11.42615,0,0,0,0,0,4,77.40034,10.57626,0,92.6,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,92.6,9.305043,1.386294,2.435905,1 +13,6,0,1,2,627815,1,10992.32,6.24846,0,12,1,4.555809,0,0,0,0,4.555809,0,0,0,1,0,4,77.40034,10.57626,0,92.6,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,92.6,9.305043,1.386294,1.516403,1 +13,6,0,1,3,627815,1,10992.32,7.24846,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,92.6,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,92.6,9.305043,1.386294,,0 +13,6,0,1,1,627816,1,10992.32,25.11157,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.2,6.9,0,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,83,9.305043,1.386294,,0 +13,6,0,1,2,627816,1,10992.32,26.11157,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.2,6.9,0,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,83,9.305043,1.386294,,0 +13,6,0,1,3,627816,1,10992.32,27.11157,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.2,6.9,0,83,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,83,9.305043,1.386294,,0 +11,6,0,1,1,627897,1,6911.83,28.16701,1,12,1,243.2432,38.06879,32.43243,0,622.113,935.8575,2,0,0,15,2,3,26.6,20.7,0,59.1,0,0,0,0,1.098612,0,0,0,0,0,0,0,59.1,8.841134,1.098612,6.841463,1 +11,6,0,1,2,627897,1,6911.83,29.16701,1,12,1,81.13036,11.42206,23.701,0,0,116.2534,0,0,0,6,0,3,26.6,20.7,0,59.1,0,0,0,0,1.098612,0,0,0,0,0,0,0,59.1,8.841134,1.098612,4.755773,1 +11,6,0,1,3,627897,1,6911.83,30.16701,1,12,1,77.94914,61.5048,0,0,0,139.4539,0,0,0,6,0,3,26.6,20.7,0,59.1,0,0,0,0,1.098612,0,0,0,0,0,0,0,59.1,8.841134,1.098612,4.937734,1 +11,6,0,1,4,627897,1,6911.83,31.16701,1,12,1,142.5356,56.96549,28.50713,0,0,228.0083,0,0,0,11,0,3,26.6,20.7,0,59.1,0,0,0,0,1.098612,0,0,0,0,0,0,0,59.1,8.841134,1.098612,5.429382,1 +11,6,0,1,5,627897,1,6911.83,32.16701,1,12,1,109.1001,90.0406,0,0,649.8647,849.0054,1,0,0,8,0,3,26.6,20.7,0,59.1,0,0,0,0,1.098612,0,0,0,0,0,0,0,59.1,8.841134,1.098612,6.744066,1 +11,6,0,1,1,627898,1,6911.83,4.454483,1,12,1,30.46683,2.088452,0,0,0,32.55528,0,0,0,2,1,3,77.40034,10.57626,0,81.5,0,0,1,1,1.098612,0,0,0,0,0,0,0,81.5,8.841134,1.098612,3.48294,1 +11,6,0,1,2,627898,1,6911.83,5.454483,1,12,1,30.53783,0,0,0,0,30.53783,0,0,0,0,0,3,77.40034,10.57626,0,81.5,0,0,1,1,1.098612,0,0,0,0,0,0,0,81.5,8.841134,1.098612,3.418966,1 +11,6,0,1,3,627898,1,6911.83,6.454483,1,12,1,64.61025,13.41392,0,0,0,78.02418,0,0,0,4,0,3,77.40034,10.57626,0,81.5,0,0,1,1,1.098612,0,0,0,0,0,0,0,81.5,8.841134,1.098612,4.357019,1 +11,6,0,1,4,627898,1,6911.83,7.454483,1,12,1,0,3.788447,0,0,0,3.788447,0,0,0,0,0,3,77.40034,10.57626,0,81.5,0,0,1,1,1.098612,0,0,0,0,0,0,0,81.5,8.841134,1.098612,1.331956,1 +11,6,0,1,5,627898,1,6911.83,8.454483,1,12,1,32.47632,2.537212,0,0,0,35.01353,0,0,0,1,0,3,77.40034,10.57626,0,81.5,0,0,1,1,1.098612,0,0,0,0,0,0,0,81.5,8.841134,1.098612,3.555735,1 +11,6,0,1,1,627899,1,6911.83,7.879535,1,12,1,56.51105,4.235872,24.57002,0,0,85.31696,0,0,0,4,1,3,61.7,10.57626,0,77.8,0,0,1,1,1.098612,0,0,0,0,0,0,0,77.8,8.841134,1.098612,4.446373,1 +11,6,0,1,2,627899,1,6911.83,8.879535,1,12,1,36.00729,0,2.278943,0,0,38.28624,0,0,0,2,0,3,61.7,10.57626,0,77.8,0,0,1,1,1.098612,0,0,0,0,0,0,0,77.8,8.841134,1.098612,3.64509,1 +11,6,0,1,3,627899,1,6911.83,9.879535,1,12,1,64.19341,5.835765,30.0125,0,0,100.0417,0,0,0,4,1,3,61.7,10.57626,0,77.8,0,0,1,1,1.098612,0,0,0,0,0,0,0,77.8,8.841134,1.098612,4.605587,1 +11,6,0,1,4,627899,1,6911.83,10.87953,1,12,1,43.13578,7.314329,0,0,0,50.45011,0,0,0,1,0,3,61.7,10.57626,0,77.8,0,0,1,1,1.098612,0,0,0,0,0,0,0,77.8,8.841134,1.098612,3.920985,1 +11,6,0,1,5,627899,1,6911.83,11.87953,1,12,1,16.57645,2.689445,0,0,0,19.2659,0,0,0,2,0,3,61.7,10.57626,0,77.8,0,0,1,1,1.098612,0,0,0,0,0,0,0,77.8,8.841134,1.098612,2.958337,1 +13,6,0,1,1,627935,1,1759.531,30.0616,1,11,1,44.88778,9.441397,0,0,0,54.32918,0,0,0,7,0,7,55.9,13.8,0,56.8,450,0,0,0,1.94591,0,1,4.564348,6.160541,1,0,0,56.8,7.473371,1.94591,3.995061,1 +13,6,0,1,2,627935,1,1759.531,31.0616,1,11,1,13.83126,0,0,0,0,13.83126,0,0,0,1,0,7,55.9,13.8,0,56.8,450,0,0,0,1.94591,0,1,4.564348,6.160541,1,0,0,56.8,7.473371,1.94591,2.626931,1 +13,6,0,1,3,627935,1,1759.531,32.0616,1,11,1,19.04359,0,0,0,0,19.04359,0,0,0,2,0,7,55.9,13.8,0,56.8,450,0,0,0,1.94591,0,1,4.564348,6.160541,1,0,0,56.8,7.473371,1.94591,2.94673,1 +13,6,0,1,4,627935,1,1759.531,33.0616,1,11,1,30.75171,3.139711,0,0,0,33.89142,0,0,0,4,0,7,55.9,13.8,0,56.8,450,0,0,0,1.94591,0,1,4.564348,6.160541,1,0,0,56.8,7.473371,1.94591,3.523162,1 +13,6,0,1,5,627935,1,1759.531,34.0616,1,11,1,175.0865,37.15225,0,0,0,212.2388,0,0,0,10,0,7,55.9,13.8,0,56.8,450,0,0,0,1.94591,0,1,4.564348,6.160541,1,0,0,56.8,7.473371,1.94591,5.357712,1 +13,6,0,1,1,627936,1,1759.531,32.40247,0,12,1,12.46883,4.014963,0,0,0,16.48379,0,0,0,2,0,7,83,3.4,0,75,450,0,0,0,1.94591,0,1,4.564348,6.160541,1,0,0,75,7.473371,1.94591,2.802377,1 +13,6,0,1,2,627936,1,1759.531,33.40247,0,12,1,4.61042,0,0,0,0,4.61042,0,0,0,1,0,7,83,3.4,0,75,450,0,0,0,1.94591,0,1,4.564348,6.160541,1,0,0,75,7.473371,1.94591,1.528319,1 +13,6,0,1,3,627936,1,1759.531,34.40247,0,12,1,25.81464,7.321202,0,0,0,33.13585,0,0,0,1,0,7,83,3.4,0,75,450,0,0,0,1.94591,0,1,4.564348,6.160541,1,0,0,75,7.473371,1.94591,3.500616,1 +13,6,0,1,4,627936,1,1759.531,35.40247,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,83,3.4,0,75,450,0,0,0,1.94591,0,1,4.564348,6.160541,1,0,0,75,7.473371,1.94591,,0 +13,6,0,1,5,627936,1,1759.531,36.40247,0,12,1,32.52595,1.276817,0,0,0,33.80277,0,0,0,3,0,7,83,3.4,0,75,450,0,0,0,1.94591,0,1,4.564348,6.160541,1,0,0,75,7.473371,1.94591,3.520543,1 +13,6,0,1,1,627937,1,1759.531,3.041752,0,11,1,19.95012,12.26933,0,0,0,32.21945,0,0,0,4,0,7,77.40034,10.57626,0,96.3,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,96.3,7.473371,1.94591,3.47257,1 +13,6,0,1,2,627937,1,1759.531,4.041752,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,96.3,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,96.3,7.473371,1.94591,,0 +13,6,0,1,3,627937,1,1759.531,5.041752,0,11,1,0,.647482,0,0,0,.647482,0,0,0,0,0,7,77.40034,10.57626,0,96.3,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,96.3,7.473371,1.94591,-.4346642,1 +13,6,0,1,4,627937,1,1759.531,6.041752,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,96.3,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,96.3,7.473371,1.94591,,0 +13,6,0,1,5,627937,1,1759.531,7.041752,0,11,1,5.882353,0,0,0,0,5.882353,0,0,0,1,0,7,77.40034,10.57626,0,96.3,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,96.3,7.473371,1.94591,1.771957,1 +13,6,0,1,1,627938,1,1759.531,8.150581,0,11,1,21.44638,5.431421,0,0,0,26.87781,0,0,0,2,0,7,86.7,10.57626,0,66.7,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,66.7,7.473371,1.94591,3.291301,1 +13,6,0,1,2,627938,1,1759.531,9.150581,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,86.7,10.57626,0,66.7,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,66.7,7.473371,1.94591,,0 +13,6,0,1,3,627938,1,1759.531,10.15058,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,86.7,10.57626,0,66.7,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,66.7,7.473371,1.94591,,0 +13,6,0,1,4,627938,1,1759.531,11.15058,0,11,1,12.90812,0,0,0,0,12.90812,0,0,0,1,0,7,86.7,10.57626,0,66.7,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,66.7,7.473371,1.94591,2.557857,1 +13,6,0,1,5,627938,1,1759.531,12.15058,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,86.7,10.57626,0,66.7,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,66.7,7.473371,1.94591,,0 +13,6,0,1,1,627939,1,1759.531,9.492128,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,86.7,10.57626,0,77.8,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,77.8,7.473371,1.94591,,0 +13,6,0,1,2,627939,1,1759.531,10.49213,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,86.7,10.57626,0,77.8,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,77.8,7.473371,1.94591,,0 +13,6,0,1,3,627939,1,1759.531,11.49213,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,86.7,10.57626,0,77.8,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,77.8,7.473371,1.94591,,0 +13,6,0,1,4,627939,1,1759.531,12.49213,0,11,1,33.78891,0,0,0,0,33.78891,0,0,0,2,0,7,86.7,10.57626,0,77.8,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,77.8,7.473371,1.94591,3.520133,1 +13,6,0,1,5,627939,1,1759.531,13.49213,0,11,1,5.882353,2.508651,0,0,0,8.391004,0,0,0,1,0,7,86.7,10.57626,0,77.8,450,0,1,0,1.94591,0,1,4.564348,6.160541,1,0,0,77.8,7.473371,1.94591,2.12716,1 +13,6,0,1,1,627940,1,1759.531,5.262149,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,83.3,10.57626,0,81.5,450,0,1,1,1.94591,0,1,4.564348,6.160541,1,0,0,81.5,7.473371,1.94591,,0 +13,6,0,1,2,627940,1,1759.531,6.262149,1,11,1,9.681881,3.208852,0,0,0,12.89073,0,0,0,1,0,7,83.3,10.57626,0,81.5,450,0,1,1,1.94591,0,1,4.564348,6.160541,1,0,0,81.5,7.473371,1.94591,2.556509,1 +13,6,0,1,3,627940,1,1759.531,7.262149,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,83.3,10.57626,0,81.5,450,0,1,1,1.94591,0,1,4.564348,6.160541,1,0,0,81.5,7.473371,1.94591,,0 +13,6,0,1,4,627940,1,1759.531,8.262149,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,83.3,10.57626,0,81.5,450,0,1,1,1.94591,0,1,4.564348,6.160541,1,0,0,81.5,7.473371,1.94591,,0 +13,6,0,1,5,627940,1,1759.531,9.262149,1,11,1,0,1.017301,0,0,0,1.017301,0,0,0,0,0,7,83.3,10.57626,0,81.5,450,0,1,1,1.94591,0,1,4.564348,6.160541,1,0,0,81.5,7.473371,1.94591,.0171531,1 +13,6,0,1,1,627941,1,1759.531,10.8501,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,70,10.57626,0,66.7,450,0,1,1,1.94591,0,1,4.564348,6.160541,1,0,0,66.7,7.473371,1.94591,,0 +13,6,0,1,2,627941,1,1759.531,11.8501,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,70,10.57626,0,66.7,450,0,1,1,1.94591,0,1,4.564348,6.160541,1,0,0,66.7,7.473371,1.94591,,0 +13,6,0,1,3,627941,1,1759.531,12.8501,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,70,10.57626,0,66.7,450,0,1,1,1.94591,0,1,4.564348,6.160541,1,0,0,66.7,7.473371,1.94591,,0 +13,6,0,1,4,627941,1,1759.531,13.8501,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,70,10.57626,0,66.7,450,0,1,1,1.94591,0,1,4.564348,6.160541,1,0,0,66.7,7.473371,1.94591,,0 +13,6,0,1,5,627941,1,1759.531,14.8501,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,70,10.57626,0,66.7,450,0,1,1,1.94591,0,1,4.564348,6.160541,1,0,0,66.7,7.473371,1.94591,,0 +13,6,0,0,1,627984,0,1259.824,55.1102,1,5,1,24.93766,2.618454,8.478803,0,0,36.03491,0,0,0,4,0,2,53.7,37.9,1,23.9,300,527.52,0,0,.6931472,6.268187,1,4.564348,5.755076,0,0,1,23.9,7.139521,.6931472,3.584488,1 +13,6,0,0,2,627984,0,1259.824,56.1102,1,5,1,124.9424,36.84186,24.66574,0,623.3287,809.7787,1,1,0,7,1,1,53.7,37.9,1,23.9,300,527.52,0,0,0,6.268187,1,4.564348,5.755076,0,0,1,23.9,7.139521,0,6.696761,1 +13,6,0,0,3,627984,0,1259.824,57.1102,1,5,1,273.8045,87.60051,0,0,1041.05,1402.454,2,0,0,29,0,1,53.7,37.9,1,23.9,300,527.52,0,0,0,6.268187,1,4.564348,5.755076,0,0,1,23.9,7.139521,0,7.245979,1 +13,6,0,0,4,627984,0,1259.824,58.1102,1,5,1,22.77904,27.62718,0,0,0,50.40623,0,0,0,5,0,1,53.7,37.9,1,23.9,300,527.52,0,0,0,6.268187,1,4.564348,5.755076,0,0,1,23.9,7.139521,0,3.920115,1 +13,6,0,0,1,627985,0,1259.824,56.67351,0,3,1,72.3192,167.9551,0,0,0,240.2743,0,0,0,5,0,2,59,27.6,1,19.3,300,527.52,0,0,.6931472,6.268187,1,4.564348,5.755076,0,0,1,19.3,7.139521,.6931472,5.481781,1 +10,6,50,1,1,627990,0,11746.54,4.380561,1,7,1,26.66102,9.784173,0,0,275.7723,312.2175,1,0,0,3,0,4,77.40034,10.57626,0,85.2,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,1,0,0,85.2,9.3714,1.386294,5.7437,1 +10,6,50,1,2,627990,0,11746.54,5.380561,1,7,1,32.64996,4.164768,0,0,0,36.81473,0,0,0,3,0,4,77.40034,10.57626,0,85.2,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,1,0,0,85.2,9.3714,1.386294,3.605898,1 +10,6,50,1,3,627990,0,11746.54,6.380561,1,7,1,5.190311,3.384083,0,0,0,8.574394,0,0,0,1,0,4,77.40034,10.57626,0,85.2,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,1,0,0,85.2,9.3714,1.386294,2.14878,1 +10,6,50,1,1,627991,0,11746.54,25.77413,1,7,1,13.54211,0,0,0,0,13.54211,0,0,0,1,0,4,77.1,10.3,1,36.4,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,36.4,9.3714,1.386294,2.605804,1 +10,6,50,1,2,627991,0,11746.54,26.77413,1,7,1,45.93774,16.79955,0,0,427.4867,490.224,2,0,0,3,0,4,77.1,10.3,1,36.4,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,36.4,9.3714,1.386294,6.194862,1 +10,6,50,1,3,627991,0,11746.54,27.77413,1,7,1,135.9862,11.01038,0,0,970.5883,1117.585,1,0,0,4,0,4,77.1,10.3,1,36.4,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,1,0,0,36.4,9.3714,1.386294,7.018925,1 +10,6,50,1,1,627992,0,11746.54,31.21971,0,6,1,65.17139,5.501481,0,0,0,70.67287,0,0,0,2,0,4,82.4,13.8,0,84.1,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,1,0,84.1,9.3714,1.386294,4.258062,1 +10,6,50,1,2,627992,0,11746.54,32.21971,0,6,1,15.18603,0,27.33485,0,0,42.52088,0,0,0,1,0,4,82.4,13.8,0,84.1,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,1,0,84.1,9.3714,1.386294,3.749995,1 +10,6,50,1,3,627992,0,11746.54,33.21971,0,6,1,19.72318,0,13.84083,0,0,33.56401,0,0,0,0,0,4,82.4,13.8,0,84.1,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,1,0,84.1,9.3714,1.386294,3.513454,1 +10,6,50,1,1,627993,0,11746.54,6.773443,1,7,1,0,2.166737,0,0,0,2.166737,0,0,0,0,0,4,85,10.57626,0,85.2,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,1,0,85.2,9.3714,1.386294,.7732224,1 +10,6,50,1,2,627993,0,11746.54,7.773443,1,7,1,16.32498,.7555049,0,0,0,17.08049,0,0,0,2,0,4,85,10.57626,0,85.2,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,1,0,85.2,9.3714,1.386294,2.837937,1 +10,6,50,1,3,627993,0,11746.54,8.773443,1,7,1,53.63322,1.795848,0,0,0,55.42907,0,0,0,4,0,4,85,10.57626,0,85.2,1000,1000,1,1,1.386294,6.907755,0,3.931826,7.600903,0,1,0,85.2,9.3714,1.386294,4.015104,1 +11,6,0,1,1,628044,1,4507.918,49.81246,0,3,1,113.1814,21.97721,0,0,0,135.1586,0,0,0,12,0,5,82.4,10.3,1,52.3,0,279.24,0,0,1.609438,5.632071,0,0,0,0,0,1,52.3,8.413813,1.609438,4.906449,1 +11,6,0,1,2,628044,1,4507.918,50.81246,0,3,1,11.47315,5.736577,42.2212,0,0,59.43093,0,0,0,0,1,5,82.4,10.3,1,52.3,0,279.24,0,0,1.609438,5.632071,0,0,0,0,0,1,52.3,8.413813,1.609438,4.084815,1 +11,6,0,1,3,628044,1,4507.918,51.81246,0,3,1,42.91123,4.080774,25.2419,0,0,72.23391,0,0,0,2,0,5,82.4,10.3,1,52.3,0,279.24,0,0,1.609438,5.632071,0,0,0,0,0,1,52.3,8.413813,1.609438,4.27991,1 +11,6,0,1,4,628044,1,4507.918,52.81246,0,3,1,11.33358,0,40.04533,0,0,51.37892,0,0,0,0,1,5,82.4,10.3,1,52.3,0,279.24,0,0,1.609438,5.632071,0,0,0,0,0,1,52.3,8.413813,1.609438,3.939228,1 +11,6,0,1,5,628044,1,4507.918,53.81246,0,3,1,165.3516,28.4048,0,0,0,193.7564,0,0,0,11,0,5,82.4,10.3,1,52.3,0,279.24,0,0,1.609438,5.632071,0,0,0,0,0,1,52.3,8.413813,1.609438,5.266602,1 +11,6,0,1,1,628045,.5112414,0,19.96441,1,11,1,62.43806,21.68484,0,0,0,84.12289,0,0,0,5,0,2,85.1,6.9,0,72.7,0,0,0,0,.6931472,0,0,0,0,0,1,0,72.7,0,.6931472,4.432279,1 +11,6,0,1,2,628045,.5112414,0,20.96441,1,11,1,54.61221,29.37127,0,0,0,83.98348,0,0,0,2,0,2,85.1,6.9,0,72.7,0,0,0,0,.6931472,0,0,0,0,0,1,0,72.7,0,.6931472,4.43062,1 +11,6,0,1,3,628045,.5112414,0,21.96441,1,11,1,55.11148,28.29197,0,0,0,83.40345,0,0,0,3,0,2,85.1,6.9,0,72.7,0,0,0,0,.6931472,0,0,0,0,0,1,0,72.7,0,.6931472,4.42369,1 +11,6,0,1,4,628045,.5112414,0,22.96441,1,11,1,0,4.627881,0,0,0,4.627881,0,0,0,0,0,2,85.1,6.9,0,72.7,0,0,0,0,.6931472,0,0,0,0,0,1,0,72.7,0,.6931472,1.532099,1 +11,6,0,1,5,628045,.5112414,0,23.96441,1,11,1,77.87307,38.90223,0,0,0,116.7753,0,0,0,3,0,2,85.1,6.9,0,72.7,0,0,0,0,.6931472,0,0,0,0,0,1,0,72.7,0,.6931472,4.760252,1 +11,6,0,1,1,628046,1,4507.918,17.44832,1,9,1,34.19227,6.442022,0,0,0,40.63429,0,0,0,3,1,5,43.6,3.4,0,47.7,0,279.24,1,1,1.609438,5.632071,0,0,0,0,1,0,47.7,8.413813,1.609438,3.704612,1 +11,6,0,1,2,628046,1,4507.918,18.44832,1,9,1,57.36576,6.76916,0,0,0,64.13493,0,0,0,2,0,5,43.6,3.4,0,47.7,0,279.24,0,0,1.609438,5.632071,0,0,0,0,1,0,47.7,8.413813,1.609438,4.160989,1 +11,6,0,1,3,628046,1,4507.918,19.44832,1,9,1,31.55238,0,38.28355,0,0,69.83593,0,0,0,2,1,5,43.6,3.4,0,47.7,0,279.24,0,0,1.609438,5.632071,0,0,0,0,1,0,47.7,8.413813,1.609438,4.246149,1 +11,6,0,1,4,628046,1,4507.918,20.44832,1,9,1,0,0,0,0,0,0,0,0,0,0,0,5,43.6,3.4,0,47.7,0,279.24,0,0,1.609438,5.632071,0,0,0,0,1,0,47.7,8.413813,1.609438,,0 +11,6,0,1,5,628046,1,4507.918,21.44832,1,9,1,39.45111,9.948542,31.21784,0,0,80.61749,0,0,0,2,1,5,43.6,3.4,0,47.7,0,279.24,0,0,1.609438,5.632071,0,0,0,0,1,0,47.7,8.413813,1.609438,4.389716,1 +11,6,0,1,1,628047,1,4507.918,15.44969,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,69.7,3.4,0,55.7,0,279.24,1,0,1.609438,5.632071,0,0,0,0,1,0,55.7,8.413813,1.609438,,0 +11,6,0,1,2,628047,1,4507.918,16.44969,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,69.7,3.4,0,55.7,0,279.24,1,0,1.609438,5.632071,0,0,0,0,1,0,55.7,8.413813,1.609438,,0 +11,6,0,1,3,628047,1,4507.918,17.44969,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,69.7,3.4,0,55.7,0,279.24,1,0,1.609438,5.632071,0,0,0,0,1,0,55.7,8.413813,1.609438,,0 +11,6,0,1,4,628047,1,4507.918,18.44969,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,69.7,3.4,0,55.7,0,279.24,0,0,1.609438,5.632071,0,0,0,0,1,0,55.7,8.413813,1.609438,,0 +11,6,0,1,5,628047,1,4507.918,19.44969,0,9,1,46.31218,11.54374,0,0,0,57.85592,0,0,0,3,0,5,69.7,3.4,0,55.7,0,279.24,0,0,1.609438,5.632071,0,0,0,0,1,0,55.7,8.413813,1.609438,4.057956,1 +11,6,0,1,1,628048,1,4507.918,13.77687,1,9,1,84.24182,3.607532,0,0,0,87.84936,0,0,0,4,0,5,90,10.57626,0,81.5,0,279.24,1,1,1.609438,5.632071,0,0,0,0,1,0,81.5,8.413813,1.609438,4.475624,1 +11,6,0,1,2,628048,1,4507.918,14.77687,1,9,1,47.72832,9.178522,0,0,0,56.90684,0,0,0,3,0,5,90,10.57626,0,81.5,0,279.24,1,1,1.609438,5.632071,0,0,0,0,1,0,81.5,8.413813,1.609438,4.041416,1 +11,6,0,1,3,628048,1,4507.918,15.77687,1,9,1,50.06311,4.627682,0,0,0,54.69079,0,0,0,2,0,5,90,10.57626,0,81.5,0,279.24,1,1,1.609438,5.632071,0,0,0,0,1,0,81.5,8.413813,1.609438,4.001695,1 +11,6,0,1,4,628048,1,4507.918,16.77687,1,9,1,23.42274,0,0,0,0,23.42274,0,0,0,0,0,5,90,10.57626,0,81.5,0,279.24,1,1,1.609438,5.632071,0,0,0,0,1,0,81.5,8.413813,1.609438,3.153708,1 +11,6,0,1,5,628048,1,4507.918,17.77687,1,9,1,44.25386,3.910806,0,0,0,48.16467,0,0,0,2,0,5,90,10.57626,0,81.5,0,279.24,1,1,1.609438,5.632071,0,0,0,0,1,0,81.5,8.413813,1.609438,3.874626,1 +11,6,0,1,1,628049,1,4507.918,46.84189,1,9,1,87.7106,21.56591,0,0,0,109.2765,0,0,0,4,0,5,64.9,13.8,0,54.5,0,279.24,0,0,1.609438,5.632071,0,0,0,0,1,0,54.5,8.413813,1.609438,4.693882,1 +11,6,0,1,2,628049,1,4507.918,47.84189,1,9,1,32.12483,15.02983,49.10509,0,0,96.25975,0,0,0,1,1,5,64.9,13.8,0,54.5,0,279.24,0,0,1.609438,5.632071,0,0,0,0,1,0,54.5,8.413813,1.609438,4.56705,1 +11,6,0,1,3,628049,1,4507.918,48.84189,1,9,1,176.2726,35.23349,0,0,2219.184,2430.69,3,0,0,10,0,5,64.9,13.8,0,54.5,0,279.24,0,0,1.609438,5.632071,0,0,0,0,1,0,54.5,8.413813,1.609438,7.79593,1 +11,6,0,1,4,628049,1,4507.918,49.84189,1,9,1,89.15754,86.09747,43.8232,0,0,219.0782,0,0,0,3,1,5,64.9,13.8,0,54.5,0,279.24,0,0,1.609438,5.632071,0,0,0,0,1,0,54.5,8.413813,1.609438,5.389429,1 +11,6,0,1,5,628049,1,4507.918,50.84189,1,9,1,74.78559,87.32419,0,0,0,162.1098,0,0,0,8,0,5,64.9,13.8,0,54.5,0,279.24,0,0,1.609438,5.632071,0,0,0,0,1,0,54.5,8.413813,1.609438,5.088274,1 +16,6,95,1,1,628059,0,12826.42,12.19713,1,18,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,0,81.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.45934,1.386294,,0 +16,6,95,1,2,628059,0,12826.42,13.19713,1,18,1,338.1055,34.18375,26.57555,0,0,398.8648,0,0,0,10,17,4,83.3,10.57626,0,81.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.45934,1.386294,5.988623,1 +16,6,95,1,3,628059,0,12826.42,14.19713,1,18,1,5.536332,1.422145,0,0,0,6.958477,0,0,0,1,0,4,83.3,10.57626,0,81.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,81.5,9.45934,1.386294,1.939961,1 +16,6,95,1,1,628060,0,12826.42,8.933607,1,18,1,0,4.337706,0,0,0,4.337706,0,0,0,0,0,4,86.7,10.57626,0,74.1,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,74.1,9.45934,1.386294,1.467346,1 +16,6,95,1,2,628060,0,12826.42,9.933607,1,18,1,59.60516,19.01291,28.4738,0,362.9461,470.038,2,0,0,4,1,4,86.7,10.57626,0,74.1,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,74.1,9.45934,1.386294,6.152813,1 +16,6,95,1,3,628060,0,12826.42,10.93361,1,18,1,85.46712,5.356401,0,0,0,90.82353,0,0,0,4,0,4,86.7,10.57626,0,74.1,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,74.1,9.45934,1.386294,4.508918,1 +16,6,95,1,1,628061,0,12826.42,35.56468,1,18,1,45.28142,10.6094,0,0,0,55.89082,0,0,0,2,0,4,76.1,20.7,0,52.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,52.3,9.45934,1.386294,4.0234,1 +16,6,95,1,2,628061,0,12826.42,36.56468,1,18,1,304.8595,52.11465,0,0,0,356.9742,0,0,0,8,25,4,76.1,20.7,0,52.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,52.3,9.45934,1.386294,5.877664,1 +16,6,95,1,3,628061,0,12826.42,37.56468,1,18,1,43.59862,0,0,0,0,43.59862,0,0,0,7,0,4,76.1,20.7,0,52.3,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,52.3,9.45934,1.386294,3.775025,1 +13,6,0,0,1,628079,.5112414,6735.316,7.616701,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,10.57626,0,74.1,300,0,1,1,.6931472,0,1,4.564348,5.755076,1,0,0,74.1,8.815269,.6931472,,0 +13,6,0,0,2,628079,.5112414,6735.316,8.616701,1,12,1,3.777862,0,0,0,0,3.777862,0,0,0,1,0,2,86.7,10.57626,0,74.1,300,0,1,1,.6931472,0,1,4.564348,5.755076,1,0,0,74.1,8.815269,.6931472,1.329158,1 +13,6,0,0,3,628079,.5112414,6735.316,9.616701,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.7,10.57626,0,74.1,300,0,1,1,.6931472,0,1,4.564348,5.755076,1,0,0,74.1,8.815269,.6931472,,0 +13,6,0,1,1,628080,1,6735.316,18.63107,1,10.62774,1,0,0,0,0,0,0,0,0,0,0,0,3,71.3,3.4,0,71.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,71.6,8.815269,1.098612,,0 +13,6,0,1,2,628080,1,6735.316,19.63107,1,10.62774,1,0,0,0,0,0,0,0,0,0,0,0,3,71.3,3.4,0,71.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,71.6,8.815269,1.098612,,0 +13,6,0,1,3,628080,1,6735.316,20.63107,1,10.62774,1,0,0,0,0,0,0,0,0,0,0,0,3,71.3,3.4,0,71.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,71.6,8.815269,1.098612,,0 +13,6,0,0,1,628081,1,6735.316,29.32238,0,14,1,11.67153,0,0,0,0,11.67153,0,0,0,0,0,3,85.1,0,0,81.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,81.8,8.815269,1.098612,2.457153,1 +13,6,0,0,2,628081,1,6735.316,30.32238,0,14,1,11.25281,2.666917,0,0,0,13.91973,0,0,0,0,0,3,85.1,0,0,81.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,81.8,8.815269,1.098612,2.633307,1 +13,6,0,0,3,628081,1,6735.316,31.32238,0,14,1,40.2571,0,0,0,345.7375,385.9946,1,0,0,0,0,3,85.1,0,0,81.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,81.8,8.815269,1.098612,5.955823,1 +13,6,0,0,1,628083,1,6735.316,16.44901,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,73.4,0,0,65.9,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,1,0,0,65.9,8.815269,1.098612,,0 +13,6,0,0,2,628083,1,6735.316,17.44901,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,73.4,0,0,65.9,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,1,0,0,65.9,8.815269,1.098612,,0 +13,6,0,0,3,628083,1,6735.316,18.44901,1,14,1,10.14885,0,0,0,0,10.14885,0,0,0,0,0,3,73.4,0,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,65.9,8.815269,1.098612,2.31736,1 +13,6,0,0,1,628084,.5112414,6735.316,27.39767,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,68.1,3.4,0,48.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,48.8,8.815269,.6931472,,0 +13,6,0,0,2,628084,.5112414,6735.316,28.39767,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,68.1,3.4,0,48.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,48.8,8.815269,.6931472,,0 +13,6,0,0,3,628084,.5112414,6735.316,29.39767,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,68.1,3.4,0,48.8,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,48.8,8.815269,.6931472,,0 +11,6,0,0,1,628085,1,6735.316,25.577,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,0,0,0,0,1.098612,0,0,0,0,0,0,0,70.68995,8.815269,1.098612,,0 +11,6,0,0,2,628085,1,6735.316,26.577,1,11,1,105.6857,4.590102,32.11182,0,0,142.3876,0,0,0,2,1,3,77.40034,10.57626,.1442925,,0,0,0,0,1.098612,0,0,0,0,0,0,0,70.68995,8.815269,1.098612,4.958553,1 +11,6,0,0,3,628085,1,6735.316,27.577,1,11,1,14.40823,18.6964,0,0,1060.892,1093.997,2,0,0,3,0,3,77.40034,10.57626,.1442925,,0,0,0,0,1.098612,0,0,0,0,0,0,0,70.68995,8.815269,1.098612,6.997593,1 +11,6,0,0,1,628088,1,6735.316,7.498973,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,0,0,1,1,1.098612,0,0,0,0,0,0,0,70.68995,8.815269,1.098612,,0 +11,6,0,0,2,628088,1,6735.316,8.498973,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,0,0,1,1,1.098612,0,0,0,0,0,0,0,70.68995,8.815269,1.098612,,0 +11,6,0,0,3,628088,1,6735.316,9.498973,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,0,0,1,1,1.098612,0,0,0,0,0,0,0,70.68995,8.815269,1.098612,,0 +17,6,25,1,1,628089,1,652.8418,10.69405,0,2,1,0,0,0,16.82793,0,0,0,0,2,0,0,4,80,10.57626,0,77.8,20.9,20.9,1,0,1.386294,3.039749,0,3.258096,4.426044,1,0,0,77.8,6.482865,1.386294,,0 +17,6,25,1,2,628089,1,652.8418,11.69405,0,2,1,0,0,0,272.006,0,0,0,0,32,0,0,4,80,10.57626,0,77.8,20.9,20.9,1,0,1.386294,3.039749,0,3.258096,4.426044,1,0,0,77.8,6.482865,1.386294,,0 +17,6,25,1,3,628089,1,652.8418,12.69405,0,2,1,8.576329,0,0,0,0,8.576329,0,0,0,1,0,4,80,10.57626,0,77.8,20.9,20.9,1,0,1.386294,3.039749,0,3.258096,4.426044,1,0,0,77.8,6.482865,1.386294,2.149006,1 +17,6,25,1,1,628090,1,652.8418,11.32101,0,2,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,10.57626,0,70.4,20.9,20.9,1,0,1.386294,3.039749,0,3.258096,4.426044,0,1,0,70.4,6.482865,1.386294,,0 +17,6,25,1,2,628090,1,652.8418,12.32101,0,2,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,10.57626,0,70.4,20.9,20.9,1,0,1.386294,3.039749,0,3.258096,4.426044,0,1,0,70.4,6.482865,1.386294,,0 +17,6,25,1,3,628090,1,652.8418,13.32101,0,2,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,10.57626,0,70.4,20.9,20.9,1,0,1.386294,3.039749,0,3.258096,4.426044,0,1,0,70.4,6.482865,1.386294,,0 +17,6,25,0,1,628091,1,652.8418,21.21561,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,63.3,0,1,47.6,20.9,20.9,0,0,1.386294,3.039749,0,3.258096,4.426044,1,0,0,47.6,6.482865,1.386294,,0 +17,6,25,0,2,628091,1,652.8418,22.21561,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,63.3,0,1,47.6,20.9,20.9,0,0,1.386294,3.039749,0,3.258096,4.426044,1,0,0,47.6,6.482865,1.386294,,0 +17,6,25,0,3,628091,1,652.8418,23.21561,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,63.3,0,1,47.6,20.9,20.9,0,0,1.386294,3.039749,0,3.258096,4.426044,1,0,0,47.6,6.482865,1.386294,,0 +17,6,25,1,1,628092,1,652.8418,56.74469,1,2,1,0,30.63525,0,0,0,30.63525,0,0,0,0,0,4,75,34.5,1,50,20.9,20.9,0,0,1.386294,3.039749,0,3.258096,4.426044,0,0,1,50,6.482865,1.386294,3.422151,1 +17,6,25,1,2,628092,1,652.8418,57.74469,1,2,1,4.533434,11.38648,0,0,0,15.91991,0,0,0,1,0,4,75,34.5,1,50,20.9,20.9,0,0,1.386294,3.039749,0,3.258096,4.426044,0,0,1,50,6.482865,1.386294,2.76757,1 +17,6,25,1,3,628092,1,652.8418,58.74469,1,2,1,56.94683,29.12521,0,0,0,86.07204,0,0,0,8,0,4,75,34.5,1,50,20.9,20.9,0,0,1.386294,3.039749,0,3.258096,4.426044,0,0,1,50,6.482865,1.386294,4.455184,1 +13,6,0,1,1,628101,0,6121.408,22.11362,0,12,1,7.481297,3.112219,0,0,0,10.59352,0,0,0,1,0,2,72.3,6.9,1,56.8,300,380.68,0,0,.6931472,5.941959,1,4.564348,5.755076,0,1,0,56.8,8.71971,.6931472,2.360242,1 +13,6,0,1,2,628101,0,6121.408,23.11362,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,72.3,6.9,1,56.8,300,380.68,0,0,.6931472,5.941959,1,4.564348,5.755076,0,1,0,56.8,8.71971,.6931472,,0 +13,6,0,1,3,628101,0,6121.408,24.11362,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,72.3,6.9,1,56.8,300,380.68,0,0,.6931472,5.941959,1,4.564348,5.755076,0,1,0,56.8,8.71971,.6931472,,0 +13,6,0,1,4,628101,0,6121.408,25.11362,0,12,1,0,2.277904,0,0,0,2.277904,0,0,0,0,0,2,72.3,6.9,1,56.8,300,380.68,0,0,.6931472,5.941959,1,4.564348,5.755076,0,1,0,56.8,8.71971,.6931472,.8232558,1 +13,6,0,1,5,628101,0,6121.408,26.11362,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,72.3,6.9,1,56.8,300,380.68,0,0,.6931472,5.941959,1,4.564348,5.755076,0,1,0,56.8,8.71971,.6931472,,0 +13,6,0,1,1,628102,0,6121.408,22.09993,1,14,1,12.46883,20.33915,0,0,0,32.80798,0,0,0,1,0,2,71.3,3.4,0,65.9,300,380.68,0,0,.6931472,5.941959,1,4.564348,5.755076,1,0,0,65.9,8.71971,.6931472,3.490672,1 +13,6,0,1,2,628102,0,6121.408,23.09993,1,14,1,23.97418,28.46934,0,0,0,52.44352,0,0,0,3,0,2,71.3,3.4,0,65.9,300,380.68,0,0,.6931472,5.941959,1,4.564348,5.755076,1,0,0,65.9,8.71971,.6931472,3.959737,1 +13,6,0,1,3,628102,0,6121.408,24.09993,1,14,1,16.92764,0,36.39441,0,0,53.32205,0,0,0,1,1,2,71.3,3.4,0,65.9,300,380.68,0,0,.6931472,5.941959,1,4.564348,5.755076,1,0,0,65.9,8.71971,.6931472,3.97635,1 +13,6,0,1,4,628102,0,6121.408,25.09993,1,14,1,11.38952,0,0,0,0,11.38952,0,0,0,1,0,2,71.3,3.4,0,65.9,300,380.68,0,0,.6931472,5.941959,1,4.564348,5.755076,1,0,0,65.9,8.71971,.6931472,2.432694,1 +13,6,0,1,5,628102,0,6121.408,26.09993,1,14,1,17.99308,1.920415,0,0,0,19.91349,0,0,0,2,0,2,71.3,3.4,0,65.9,300,380.68,0,0,.6931472,5.941959,1,4.564348,5.755076,1,0,0,65.9,8.71971,.6931472,2.991398,1 +11,6,0,1,1,628112,1,3700.973,31.75907,1,12,1,81.70071,45.65236,0,0,0,127.3531,0,0,0,10,0,6,85.1,3.4,0,67,0,168.4,0,0,1.791759,5.126342,0,0,0,1,0,0,67,8.216621,1.791759,4.846963,1 +11,6,0,1,2,628112,1,3700.973,32.75907,1,12,1,42.76069,41.24156,0,0,357.0893,441.0915,1,0,0,6,0,6,85.1,3.4,0,67,0,168.4,0,0,1.791759,5.126342,0,0,0,1,0,0,67,8.216621,1.791759,6.089252,1 +11,6,0,1,3,628112,1,3700.973,33.75907,1,12,1,24.35724,21.73545,0,0,0,46.09269,0,0,0,3,0,7,85.1,3.4,0,67,0,168.4,0,0,1.94591,5.126342,0,0,0,1,0,0,67,8.216621,1.94591,3.830654,1 +11,6,0,1,1,628113,1,3700.973,5.995893,0,12,1,6.252605,4.793664,0,0,0,11.04627,0,0,0,1,0,6,81.7,10.57626,0,77.8,0,168.4,1,0,1.791759,5.126342,0,0,0,1,0,0,77.8,8.216621,1.791759,2.402093,1 +11,6,0,1,2,628113,1,3700.973,6.995893,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,81.7,10.57626,0,77.8,0,168.4,1,0,1.791759,5.126342,0,0,0,1,0,0,77.8,8.216621,1.791759,,0 +11,6,0,1,3,628113,1,3700.973,7.995893,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,81.7,10.57626,0,77.8,0,168.4,1,0,1.94591,5.126342,0,0,0,1,0,0,77.8,8.216621,1.94591,,0 +11,6,0,1,1,628114,1,3700.973,4.657084,1,12,1,11.25469,0,0,0,0,11.25469,0,0,0,2,0,6,77.40034,10.57626,0,63,0,168.4,1,1,1.791759,5.126342,0,0,0,1,0,0,63,8.216621,1.791759,2.420785,1 +11,6,0,1,2,628114,1,3700.973,5.657084,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,63,0,168.4,1,1,1.791759,5.126342,0,0,0,1,0,0,63,8.216621,1.791759,,0 +11,6,0,1,3,628114,1,3700.973,6.657084,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,63,0,168.4,1,1,1.94591,5.126342,0,0,0,1,0,0,63,8.216621,1.94591,,0 +11,6,0,1,1,628115,1,3700.973,33.71115,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,79.3,10.3,0,55.7,0,168.4,0,0,1.791759,5.126342,0,0,0,0,1,0,55.7,8.216621,1.791759,,0 +11,6,0,1,2,628115,1,3700.973,34.71115,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,79.3,10.3,0,55.7,0,168.4,0,0,1.791759,5.126342,0,0,0,0,1,0,55.7,8.216621,1.791759,,0 +11,6,0,1,3,628115,1,3700.973,35.71115,0,10,1,19.28281,2.993911,0,0,0,22.27673,0,0,0,3,0,7,79.3,10.3,0,55.7,0,168.4,0,0,1.94591,5.126342,0,0,0,0,1,0,55.7,8.216621,1.94591,3.103542,1 +13,6,0,0,1,628135,0,5225.294,5.144422,1,12,1,10.20842,0,0,0,0,10.20842,0,0,0,0,0,4,80,10.57626,0,74.1,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,0,0,0,74.1,8.561458,1.386294,2.323213,1 +13,6,0,0,2,628135,0,5225.294,6.144422,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,80,10.57626,0,74.1,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,0,0,0,74.1,8.561458,1.386294,,0 +13,6,0,0,3,628135,0,5225.294,7.144422,1,12,1,28.91986,0,0,0,0,28.91986,0,0,0,0,0,4,80,10.57626,0,74.1,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,0,0,0,74.1,8.561458,1.386294,3.364529,1 +13,6,0,0,1,628136,0,5225.294,28.96372,1,12,1,6.380264,0,0,31.90132,0,6.380264,0,0,2,1,0,4,73.4,10.3,0,77.3,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,0,0,0,77.3,8.561458,1.386294,1.853209,1 +13,6,0,0,2,628136,0,5225.294,29.96372,1,12,1,20.99237,0,0,0,0,20.99237,0,0,0,1,1,4,73.4,10.3,0,77.3,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,0,0,0,77.3,8.561458,1.386294,3.044159,1 +13,6,0,0,3,628136,0,5225.294,30.96372,1,12,1,18.4669,0,0,0,0,18.4669,0,0,0,0,0,4,73.4,10.3,0,77.3,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,0,0,0,77.3,8.561458,1.386294,2.91598,1 +13,6,0,0,1,628137,0,5225.294,6.973306,1,12,1,5.104211,0,0,0,0,5.104211,0,0,0,1,0,4,81.7,10.57626,0,92.6,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,0,0,0,92.6,8.561458,1.386294,1.630066,1 +13,6,0,0,2,628137,0,5225.294,7.973306,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,10.57626,0,92.6,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,0,0,0,92.6,8.561458,1.386294,,0 +13,6,0,0,3,628137,0,5225.294,8.973306,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,10.57626,0,92.6,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,0,0,0,92.6,8.561458,1.386294,,0 +13,6,0,0,1,628138,0,5225.294,34.5243,0,14,1,37.00553,0,0,74.43641,0,37.00553,0,0,4,0,0,4,87.8,6.9,0,58,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,0,0,0,58,8.561458,1.386294,3.611067,1 +13,6,0,0,2,628138,0,5225.294,35.5243,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,87.8,6.9,0,58,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,0,0,0,58,8.561458,1.386294,,0 +13,6,0,0,3,628138,0,5225.294,36.5243,0,14,1,6.968641,0,0,0,0,6.968641,0,0,0,1,0,4,87.8,6.9,0,58,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,0,0,0,58,8.561458,1.386294,1.94142,1 +13,6,0,1,1,628142,0,6735.316,46.84189,0,3,1,79.09129,5.04838,5.889777,0,0,90.02945,0,0,0,4,0,3,86.9,13.8,0,77.3,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,77.3,8.815269,1.098612,4.500137,1 +13,6,0,1,2,628142,0,6735.316,47.84189,0,3,1,21.9116,0,0,0,0,21.9116,0,0,0,2,0,3,86.9,13.8,0,77.3,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,77.3,8.815269,1.098612,3.087016,1 +13,6,0,1,3,628142,0,6735.316,48.84189,0,3,1,34.99142,22.18525,0,0,0,57.17667,0,0,0,3,0,3,86.9,13.8,0,77.3,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,77.3,8.815269,1.098612,4.046146,1 +13,6,0,1,1,628143,0,6735.316,33.21834,1,12,1,23.55911,0,0,0,0,23.55911,0,0,0,2,0,3,75.5,6.9,0,60.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,60.2,8.815269,1.098612,3.159513,1 +13,6,0,1,2,628143,0,6735.316,34.21834,1,12,1,72.53494,30.97847,0,0,4268.228,4371.742,1,0,0,3,0,3,75.5,6.9,0,60.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,60.2,8.815269,1.098612,8.382916,1 +13,6,0,1,3,628143,0,6735.316,35.21834,1,12,1,70.66895,75.00858,0,0,730.7032,876.3808,1,0,0,6,0,3,75.5,6.9,0,60.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,60.2,8.815269,1.098612,6.775801,1 +13,6,0,1,1,628144,0,6735.316,4.090349,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,88.9,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.815269,1.098612,,0 +13,6,0,1,2,628144,0,6735.316,5.090349,0,12,1,23.04496,2.670948,0,0,0,25.7159,0,0,0,3,0,3,77.40034,10.57626,0,88.9,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.815269,1.098612,3.24711,1 +13,6,0,1,3,628144,0,6735.316,6.090349,0,12,1,13.03602,3.979417,0,0,0,17.01544,0,0,0,2,0,3,77.40034,10.57626,0,88.9,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.815269,1.098612,2.834121,1 +13,6,0,0,1,628154,0,6415.836,1.399042,0,11,1,26.11753,0,0,0,419.8895,446.007,2,0,0,0,0,4,77.40034,10.57626,0,63,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,63,8.766681,1.386294,6.100335,1 +13,6,0,0,2,628154,0,6415.836,2.399042,0,11,1,41.26101,0,0,0,0,41.26101,0,0,0,0,0,4,77.40034,10.57626,0,63,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,63,8.766681,1.386294,3.719918,1 +13,6,0,0,3,628154,0,6415.836,3.399042,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,63,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,63,8.766681,1.609438,,0 +13,6,0,0,4,628154,0,6415.836,4.399042,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,63,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,63,8.766681,1.609438,,0 +13,6,0,0,5,628154,0,6415.836,5.399042,0,11,1,9.407665,0,12.19512,0,0,21.60279,0,0,0,1,0,5,77.40034,10.57626,0,63,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,63,8.766681,1.609438,3.072822,1 +13,6,0,0,1,628155,0,6415.836,23.90417,1,11,1,19.08589,10.92416,0,0,0,30.01005,0,0,0,0,0,4,68.6,27.6,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.3,8.766681,1.386294,3.401532,1 +13,6,0,0,2,628155,0,6415.836,24.90417,1,11,1,5.099676,0,0,0,841.91,847.0098,2,0,0,0,0,4,68.6,27.6,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.3,8.766681,1.386294,6.741712,1 +13,6,0,0,3,628155,0,6415.836,25.90417,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,68.6,27.6,0,77.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,77.3,8.766681,1.609438,,0 +13,6,0,0,4,628155,0,6415.836,26.90417,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,68.6,27.6,0,77.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,77.3,8.766681,1.609438,,0 +13,6,0,0,5,628155,0,6415.836,27.90417,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,68.6,27.6,0,77.3,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,77.3,8.766681,1.609438,,0 +13,6,0,0,1,628156,0,6415.836,4.306639,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,92.6,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,92.6,8.766681,1.386294,,0 +13,6,0,0,2,628156,0,6415.836,5.306639,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,92.6,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,92.6,8.766681,1.386294,,0 +13,6,0,0,3,628156,0,6415.836,6.306639,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,92.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,92.6,8.766681,1.609438,,0 +13,6,0,0,4,628156,0,6415.836,7.306639,0,11,1,27.48092,0,0,0,0,27.48092,0,0,0,0,0,5,77.40034,10.57626,0,92.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,92.6,8.766681,1.609438,3.313492,1 +13,6,0,0,5,628156,0,6415.836,8.30664,0,11,1,12.19512,0,20.20906,0,0,32.40418,0,0,0,0,1,5,77.40034,10.57626,0,92.6,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,92.6,8.766681,1.609438,3.478287,1 +13,6,0,0,1,628157,0,6415.836,30.91855,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,54.3,27.6,0,70.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,70.5,8.766681,1.386294,,0 +13,6,0,0,2,628157,0,6415.836,31.91855,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,54.3,27.6,0,70.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,70.5,8.766681,1.386294,,0 +13,6,0,0,3,628157,0,6415.836,32.91855,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,54.3,27.6,0,70.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,70.5,8.766681,1.609438,,0 +13,6,0,0,4,628157,0,6415.836,33.91855,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,54.3,27.6,0,70.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,70.5,8.766681,1.609438,,0 +13,6,0,0,5,628157,0,6415.836,34.91855,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,54.3,27.6,0,70.5,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,70.5,8.766681,1.609438,,0 +11,6,0,1,1,628177,0,10731.18,35.43053,0,12,1,96.48752,11.32882,0,0,0,107.8163,0,0,0,1,0,4,71.8,6.9,0,80.7,0,192.48,0,0,1.386294,5.259992,0,0,0,1,0,0,80.7,9.281002,1.386294,4.680429,1 +11,6,0,1,2,628177,0,10731.18,36.43053,0,12,1,0,1.613516,0,0,0,1.613516,0,0,0,0,0,4,71.8,6.9,0,80.7,0,192.48,0,0,1.386294,5.259992,0,0,0,1,0,0,80.7,9.281002,1.386294,.4784154,1 +11,6,0,1,3,628177,0,10731.18,37.43053,0,12,1,183.391,29.32526,0,0,0,212.7163,0,0,0,8,6,4,71.8,6.9,0,80.7,0,192.48,0,0,1.386294,5.259992,0,0,0,1,0,0,80.7,9.281002,1.386294,5.359959,1 +11,6,0,1,1,628178,0,10731.18,34.03149,1,14,1,0,2.750741,0,0,0,2.750741,0,0,0,0,0,4,73.4,10.3,0,73.9,0,192.48,0,0,1.386294,5.259992,0,0,0,1,0,0,73.9,9.281002,1.386294,1.01187,1 +11,6,0,1,2,628178,0,10731.18,35.03149,1,14,1,40.24298,7.877752,0,0,0,48.12073,0,0,0,5,0,4,73.4,10.3,0,73.9,0,192.48,0,0,1.386294,5.259992,0,0,0,1,0,0,73.9,9.281002,1.386294,3.873713,1 +11,6,0,1,3,628178,0,10731.18,36.03149,1,14,1,16.26298,7.525951,0,0,0,23.78893,0,0,0,1,0,4,73.4,10.3,0,73.9,0,192.48,0,0,1.386294,5.259992,0,0,0,1,0,0,73.9,9.281002,1.386294,3.16922,1 +11,6,0,1,1,628179,0,10731.18,8.073922,0,14,1,5.07829,0,0,0,0,5.07829,0,0,0,1,0,4,85,10.57626,0,70.4,0,192.48,1,0,1.386294,5.259992,0,0,0,1,0,0,70.4,9.281002,1.386294,1.624975,1 +11,6,0,1,2,628179,0,10731.18,9.073922,0,14,1,12.52847,0,0,0,0,12.52847,0,0,0,1,0,4,85,10.57626,0,70.4,0,192.48,1,0,1.386294,5.259992,0,0,0,1,0,0,70.4,9.281002,1.386294,2.528004,1 +11,6,0,1,3,628179,0,10731.18,10.07392,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,70.4,0,192.48,1,0,1.386294,5.259992,0,0,0,1,0,0,70.4,9.281002,1.386294,,0 +11,6,0,1,1,628180,0,10731.18,4.375085,0,14,1,17.77402,3.70292,0,0,0,21.47694,0,0,0,3,0,4,77.40034,10.57626,0,70.4,0,192.48,1,0,1.386294,5.259992,0,0,0,1,0,0,70.4,9.281002,1.386294,3.06698,1 +11,6,0,1,2,628180,0,10731.18,5.375085,0,14,1,5.31511,0,0,0,233.8648,239.1799,1,0,0,1,0,4,77.40034,10.57626,0,70.4,0,192.48,1,0,1.386294,5.259992,0,0,0,1,0,0,70.4,9.281002,1.386294,5.477216,1 +11,6,0,1,3,628180,0,10731.18,6.375085,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,70.4,0,192.48,1,0,1.386294,5.259992,0,0,0,1,0,0,70.4,9.281002,1.386294,,0 +13,6,0,1,1,628190,1,2625.704,28.44901,1,12,1,25.6626,3.639041,0,0,0,29.30164,0,0,0,1,0,2,62.8,6.9,0,44.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,44.3,7.873485,.6931472,3.377644,1 +13,6,0,1,2,628190,1,2625.704,29.44901,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,62.8,6.9,0,44.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,44.3,7.873485,.6931472,,0 +13,6,0,1,3,628190,1,2625.704,30.44901,1,12,1,52.83019,0,0,0,275.4717,328.3019,1,0,0,3,0,2,62.8,6.9,0,44.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,44.3,7.873485,.6931472,5.793933,1 +11,6,0,0,1,628191,0,11577.06,46.86379,0,8,1,0,3.164611,0,0,0,3.164611,0,0,0,0,0,2,91,3.4,0,54.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,54.5,9.356867,.6931472,1.15203,1 +11,6,0,0,2,628191,0,11577.06,47.86379,0,8,1,0,1.633588,0,0,0,1.633588,0,0,0,0,0,2,91,3.4,0,54.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,54.5,9.356867,.6931472,.4907787,1 +11,6,0,0,3,628191,0,11577.06,48.86379,0,8,1,105.5749,1.362369,32.05575,0,0,138.993,0,0,0,3,0,2,91,3.4,0,54.5,0,0,0,0,.6931472,0,0,0,0,0,0,0,54.5,9.356867,.6931472,4.934424,1 +10,6,50,1,1,628192,1,6735.316,29.04586,1,11,1,19.77282,2.629365,0,0,0,22.40219,0,0,0,1,0,3,70.7,17.2,0,59.1,353.25,434.88,0,0,1.098612,6.07507,0,3.931826,6.560323,0,1,0,59.1,8.815269,1.098612,3.109159,1 +10,6,50,1,2,628192,1,6735.316,30.04586,1,11,1,31.16736,0,26.44503,0,0,57.61239,0,0,0,1,1,3,70.7,17.2,0,59.1,353.25,434.88,0,0,1.098612,6.07507,0,3.931826,6.560323,0,1,0,59.1,8.815269,1.098612,4.053738,1 +10,6,50,1,3,628192,1,6735.316,31.04586,1,11,1,71.35506,43.61921,0,0,661.0635,776.0377,2,0,0,3,0,3,70.7,17.2,0,59.1,353.25,434.88,0,0,1.098612,6.07507,0,3.931826,6.560323,0,1,0,59.1,8.815269,1.098612,6.654201,1 +10,6,50,1,1,628194,1,6735.316,28.42163,0,5,1,45.01472,3.773664,0,0,0,48.78839,0,0,0,0,0,3,67,3.4,0,50,353.25,434.88,0,0,1.098612,6.07507,0,3.931826,6.560323,0,0,1,50,8.815269,1.098612,3.887492,1 +10,6,50,1,2,628194,1,6735.316,29.42163,0,5,1,238.0053,29.98867,26.82282,0,607.858,902.6747,2,1,0,7,1,3,67,3.4,0,50,353.25,434.88,0,0,1.098612,6.07507,0,3.931826,6.560323,0,0,1,50,8.815269,1.098612,6.805362,1 +10,6,50,1,3,628194,1,6735.316,30.42163,0,5,1,157.4614,31.74957,0,0,0,189.211,0,0,0,2,0,3,67,3.4,0,50,353.25,434.88,0,0,1.098612,6.07507,0,3.931826,6.560323,0,0,1,50,8.815269,1.098612,5.242863,1 +13,6,0,1,1,628199,0,17794.68,13.06502,0,12,1,79.46678,0,8.463818,0,0,87.9306,0,0,0,5,0,6,75,10.57626,0,85.2,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,1,0,85.2,9.786711,1.791759,4.476548,1 +13,6,0,1,1,628200,0,17794.68,15.06913,0,12,1,233.284,0,0,0,0,233.284,0,0,0,8,0,6,75,0,0,64.3,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,64.3,9.786711,1.791759,5.452257,1 +13,6,0,1,1,628201,0,17794.68,17.16085,0,12,1,64.7482,0,0,0,0,64.7482,0,0,0,3,0,6,95.2,0,0,91.7,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,91.7,9.786711,1.791759,4.170506,1 +13,6,0,1,1,628202,0,17794.68,35.78918,1,12,1,78.79814,0,0,0,0,78.79814,0,0,0,3,0,6,70.2,24.1,1,62.5,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,62.5,9.786711,1.791759,4.366889,1 +13,6,0,1,1,628203,0,17794.68,37.89733,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,73.3,3.4,0,85.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.786711,1.791759,,0 +13,6,0,1,1,628204,0,17794.68,16.14784,1,12,1,8.463818,0,0,0,0,8.463818,0,0,0,1,0,6,68.1,6.9,1,63.6,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,63.6,9.786711,1.791759,2.1358,1 +7,6,25,1,1,628290,0,4987.683,34.45037,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,71.8,0,0,87.5,750,1291.68,0,0,1.098612,7.163699,0,3.258096,8.006368,0,0,0,87.5,8.514927,1.098612,,0 +7,6,25,1,2,628290,0,4987.683,35.45037,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,71.8,0,0,87.5,750,1291.68,0,0,1.098612,7.163699,0,3.258096,8.006368,0,0,0,87.5,8.514927,1.098612,,0 +7,6,25,1,3,628290,0,4987.683,36.45037,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,71.8,0,0,87.5,750,1291.68,0,0,1.098612,7.163699,0,3.258096,8.006368,0,0,0,87.5,8.514927,1.098612,,0 +7,6,25,1,4,628290,0,4987.683,37.45037,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,71.8,0,0,87.5,750,1291.68,0,0,1.098612,7.163699,0,3.258096,8.006368,0,0,0,87.5,8.514927,1.098612,,0 +7,6,25,1,5,628290,0,4987.683,38.45037,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,71.8,0,0,87.5,750,1291.68,0,0,1.098612,7.163699,0,3.258096,8.006368,0,0,0,87.5,8.514927,1.098612,,0 +7,6,25,1,1,628291,0,4987.683,13.24298,1,14,1,8.353808,0,0,0,0,8.353808,0,0,0,1,0,3,96.7,10.57626,0,100,750,1291.68,1,1,1.098612,7.163699,0,3.258096,8.006368,0,0,0,100,8.514927,1.098612,2.122718,1 +7,6,25,1,2,628291,0,4987.683,14.24298,1,14,1,14.58523,0,0,0,0,14.58523,0,0,0,1,0,3,96.7,10.57626,0,100,750,1291.68,1,1,1.098612,7.163699,0,3.258096,8.006368,0,0,0,100,8.514927,1.098612,2.68001,1 +7,6,25,1,3,628291,0,4987.683,15.24298,1,14,1,17.5073,3.955815,0,0,0,21.46311,0,0,0,2,0,3,96.7,10.57626,0,100,750,1291.68,1,1,1.098612,7.163699,0,3.258096,8.006368,0,0,0,100,8.514927,1.098612,3.066336,1 +7,6,25,1,4,628291,0,4987.683,16.24298,1,14,1,30.75769,3.597149,0,0,0,34.35484,0,0,0,5,0,3,96.7,10.57626,0,100,750,1291.68,1,1,1.098612,7.163699,0,3.258096,8.006368,0,0,0,100,8.514927,1.098612,3.536743,1 +7,6,25,1,5,628291,0,4987.683,17.24298,1,14,1,16.23816,0,0,0,0,16.23816,0,0,0,1,0,3,96.7,10.57626,0,100,750,1291.68,1,1,1.098612,7.163699,0,3.258096,8.006368,0,0,0,100,8.514927,1.098612,2.787364,1 +7,6,25,1,1,628292,0,4987.683,11.35661,1,14,1,20.63882,0,0,0,0,20.63882,0,0,0,2,0,3,95,10.57626,0,100,750,1291.68,1,1,1.098612,7.163699,0,3.258096,8.006368,0,0,0,100,8.514927,1.098612,3.027174,1 +7,6,25,1,2,628292,0,4987.683,12.35661,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,95,10.57626,0,100,750,1291.68,1,1,1.098612,7.163699,0,3.258096,8.006368,0,0,0,100,8.514927,1.098612,,0 +7,6,25,1,3,628292,0,4987.683,13.35661,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,95,10.57626,0,100,750,1291.68,1,1,1.098612,7.163699,0,3.258096,8.006368,0,0,0,100,8.514927,1.098612,,0 +7,6,25,1,4,628292,0,4987.683,14.35661,1,14,1,20.63016,0,30.75769,0,0,51.38785,0,0,0,2,0,3,95,10.57626,0,100,750,1291.68,1,1,1.098612,7.163699,0,3.258096,8.006368,0,0,0,100,8.514927,1.098612,3.939402,1 +7,6,25,1,5,628292,0,4987.683,15.35661,1,14,1,0,0,0,0,0,0,0,0,0,0,0,3,95,10.57626,0,100,750,1291.68,1,1,1.098612,7.163699,0,3.258096,8.006368,0,0,0,100,8.514927,1.098612,,0 +10,6,50,1,1,628296,0,10311.83,38.20397,1,12,1,12.62095,4.732857,0,0,0,17.35381,0,0,0,1,0,4,60.6,17.2,0,61.4,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,61.4,9.241144,1.386294,2.853812,1 +10,6,50,1,2,628296,0,10311.83,39.20397,1,12,1,34.75633,0,0,0,0,34.75633,0,0,0,0,0,4,60.6,17.2,0,61.4,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,61.4,9.241144,1.386294,3.548362,1 +10,6,50,1,3,628296,0,10311.83,40.20397,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,60.6,17.2,0,61.4,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,61.4,9.241144,1.386294,,0 +10,6,50,1,1,628297,0,10311.83,35.5729,0,12,1,24.8212,13.25621,0,0,0,38.07741,0,0,0,12,0,4,51.6,13.8,0,83,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,83,9.241144,1.386294,3.639621,1 +10,6,50,1,2,628297,0,10311.83,36.5729,0,12,1,24.17831,13.77786,26.44503,0,0,64.40121,0,0,0,9,0,4,51.6,13.8,0,83,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,83,9.241144,1.386294,4.165133,1 +10,6,50,1,3,628297,0,10311.83,37.5729,0,12,1,0,4.974271,0,0,0,4.974271,0,0,0,0,0,4,51.6,13.8,0,83,1000,1000,0,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,83,9.241144,1.386294,1.604279,1 +10,6,50,1,1,628298,0,10311.83,10.35729,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,91.7,10.57626,0,92.6,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.241144,1.386294,,0 +10,6,50,1,2,628298,0,10311.83,11.35729,0,12,1,6.044579,0,0,0,0,6.044579,0,0,0,2,0,4,91.7,10.57626,0,92.6,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.241144,1.386294,1.799162,1 +10,6,50,1,3,628298,0,10311.83,12.35729,0,12,1,23.67067,0,24.91595,0,0,48.58662,0,0,0,2,0,4,91.7,10.57626,0,92.6,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,92.6,9.241144,1.386294,3.883348,1 +10,6,50,1,1,628299,0,10311.83,8.06297,0,12,1,26.504,0,0,0,0,26.504,0,0,0,2,0,4,91.7,10.57626,0,74.1,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,74.1,9.241144,1.386294,3.277296,1 +10,6,50,1,2,628299,0,10311.83,9.06297,0,12,1,4.155648,0,0,0,0,4.155648,0,0,0,2,0,4,91.7,10.57626,0,74.1,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,74.1,9.241144,1.386294,1.424468,1 +10,6,50,1,3,628299,0,10311.83,10.06297,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,91.7,10.57626,0,74.1,1000,1000,1,0,1.386294,6.907755,0,3.931826,7.600903,0,0,0,74.1,9.241144,1.386294,,0 +13,6,0,1,1,628300,0,12312.61,28.77481,0,16,1,19.45137,0,35.67082,0,0,55.1222,0,0,0,1,2,3,83,17.2,0,70.5,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,70.5,9.418461,1.098612,4.009552,1 +13,6,0,1,2,628300,0,12312.61,29.77481,0,16,1,82.98755,10.07838,31.8119,0,0,124.8778,0,0,0,5,5,4,83,17.2,0,70.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,70.5,9.418461,1.386294,4.827336,1 +13,6,0,1,3,628300,0,12312.61,30.77481,0,16,1,51.20609,0,0,0,0,51.20609,0,0,0,0,9,4,83,17.2,0,70.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,70.5,9.418461,1.386294,3.935858,1 +13,6,0,1,4,628300,0,12312.61,31.77481,0,16,1,105.1632,8.101747,0,0,0,113.265,0,0,0,4,3,4,83,17.2,0,70.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,70.5,9.418461,1.386294,4.72973,1 +13,6,0,1,5,628300,0,12312.61,32.77481,0,16,1,38.75433,0,0,0,0,38.75433,0,0,0,1,0,4,83,17.2,0,70.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,70.5,9.418461,1.386294,3.657242,1 +13,6,0,1,1,628301,0,12312.61,3.775496,0,16,1,32.41895,0,0,0,0,32.41895,0,0,0,2,1,3,77.40034,10.57626,0,66.7,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.418461,1.098612,3.478743,1 +13,6,0,1,2,628301,0,12312.61,4.775496,0,16,1,18.90272,16.15491,0,0,0,35.05763,0,0,0,3,1,4,77.40034,10.57626,0,66.7,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.418461,1.386294,3.556993,1 +13,6,0,1,3,628301,0,12312.61,5.775496,0,16,1,10.57977,0,0,0,0,10.57977,0,0,0,1,1,4,77.40034,10.57626,0,66.7,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.418461,1.386294,2.358944,1 +13,6,0,1,4,628301,0,12312.61,6.775496,0,16,1,37.58542,6.871678,0,0,438.6105,483.0676,1,0,0,5,0,4,77.40034,10.57626,0,66.7,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.418461,1.386294,6.180157,1 +13,6,0,1,5,628301,0,12312.61,7.775496,0,16,1,8.650519,0,0,0,0,8.650519,0,0,0,1,1,4,77.40034,10.57626,0,66.7,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,66.7,9.418461,1.386294,2.157619,1 +13,6,0,1,1,628302,0,12312.61,26.99247,1,16,1,31.42145,20.0798,0,0,903.7407,955.2419,1,0,0,1,4,3,85.1,3.4,0,85.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.418461,1.098612,6.861965,1 +13,6,0,1,2,628302,0,12312.61,27.99247,1,16,1,35.03919,7.183033,0,0,0,42.22222,0,0,0,3,3,4,85.1,3.4,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.418461,1.386294,3.742947,1 +13,6,0,1,3,628302,0,12312.61,28.99247,1,16,1,264.9175,12.5857,0,0,0,277.5032,0,0,0,13,13,4,85.1,3.4,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.418461,1.386294,5.625833,1 +13,6,0,1,4,628302,0,12312.61,29.99247,1,16,1,31.13136,3.356112,0,0,0,34.48747,0,0,0,2,5,4,85.1,3.4,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.418461,1.386294,3.540596,1 +13,6,0,1,5,628302,0,12312.61,30.99247,1,16,1,58.82353,1.678201,0,0,0,60.50173,0,0,0,1,5,4,85.1,3.4,0,85.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.418461,1.386294,4.102672,1 +11,6,0,0,1,628316,0,18904.76,47.23614,1,16,1,32.51355,202.0717,0,0,0,234.5853,0,0,0,4,0,3,88.3,24.1,0,61.4,0,86.24,0,0,1.098612,4.457134,0,0,0,1,0,0,61.4,9.847222,1.098612,5.457819,1 +11,6,0,0,2,628316,0,18904.76,48.23614,1,16,1,30.75769,277.9295,0,0,0,308.6872,0,0,0,4,0,3,88.3,24.1,0,61.4,0,86.24,0,0,1.098612,4.457134,0,0,0,1,0,0,61.4,9.847222,1.098612,5.732328,1 +11,6,0,0,3,628316,0,18904.76,49.23614,1,16,1,40.2571,411.8133,0,0,300.0677,752.138,1,0,0,1,0,3,88.3,24.1,0,61.4,0,86.24,0,0,1.098612,4.457134,0,0,0,1,0,0,61.4,9.847222,1.098612,6.62292,1 +11,6,0,0,1,628317,0,18904.76,16.86242,0,16,1,10.42101,0,0,0,0,10.42101,0,0,0,1,0,3,87.8,3.4,0,83,0,86.24,1,0,1.098612,4.457134,0,0,0,0,0,0,83,9.847222,1.098612,2.343824,1 +11,6,0,0,2,628317,0,18904.76,17.86242,0,16,1,9.377344,10.43511,0,0,0,19.81245,0,0,0,1,0,3,87.8,3.4,0,83,0,86.24,1,0,1.098612,4.457134,0,0,0,0,0,0,83,9.847222,1.098612,2.986311,1 +11,6,0,0,3,628317,0,18904.76,18.86242,0,16,1,33.8295,0,34.71922,0,0,68.54871,0,0,0,0,1,3,87.8,3.4,0,83,0,86.24,0,0,1.098612,4.457134,0,0,0,0,0,0,83,9.847222,1.098612,4.227545,1 +11,6,0,0,1,628318,0,18904.76,49.28405,0,15,1,65.02709,6.461025,0,0,0,71.48812,0,0,0,2,0,3,81.9,27.6,0,69.3,0,86.24,0,0,1.098612,4.457134,0,0,0,1,0,0,69.3,9.847222,1.098612,4.269531,1 +11,6,0,0,2,628318,0,18904.76,50.28405,0,15,1,9.377344,0,0,0,0,9.377344,0,0,0,1,0,3,81.9,27.6,0,69.3,0,86.24,0,0,1.098612,4.457134,0,0,0,1,0,0,69.3,9.847222,1.098612,2.238297,1 +11,6,0,0,3,628318,0,18904.76,51.28405,0,15,1,85.25034,19.2253,44.86806,0,0,149.3437,0,0,0,2,1,3,81.9,27.6,0,69.3,0,86.24,0,0,1.098612,4.457134,0,0,0,1,0,0,69.3,9.847222,1.098612,5.00625,1 +13,6,0,1,1,628319,0,15753.71,33.6345,1,16,1,39.13228,35.30413,0,0,0,74.43641,0,0,0,2,0,4,38.8,20.7,0,68.2,450,819.72,0,0,1.386294,6.708963,1,4.564348,6.160541,0,0,0,68.2,9.664895,1.386294,4.309945,1 +13,6,0,1,2,628319,0,15753.71,34.6345,1,16,1,50.38168,43.0916,0,0,465.2672,558.7405,1,0,0,1,2,4,38.8,20.7,0,68.2,450,819.72,0,0,1.386294,6.708963,1,4.564348,6.160541,0,0,0,68.2,9.664895,1.386294,6.325685,1 +13,6,0,1,3,628319,0,15753.71,35.6345,1,16,1,45.12195,5.968641,0,0,307.5261,358.6167,1,0,0,3,0,4,38.8,20.7,0,68.2,450,819.72,0,0,1.386294,6.708963,1,4.564348,6.160541,0,0,0,68.2,9.664895,1.386294,5.882254,1 +13,6,0,1,1,628320,0,15753.71,8.281999,1,16,1,53.16887,0,0,0,0,53.16887,0,0,0,3,0,4,70,10.57626,0,88.9,450,819.72,1,1,1.386294,6.708963,1,4.564348,6.160541,0,0,0,88.9,9.664895,1.386294,3.973473,1 +13,6,0,1,2,628320,0,15753.71,9.281999,1,16,1,7.251908,0,0,0,0,7.251908,0,0,0,1,0,4,70,10.57626,0,88.9,450,819.72,1,1,1.386294,6.708963,1,4.564348,6.160541,0,0,0,88.9,9.664895,1.386294,1.981265,1 +13,6,0,1,3,628320,0,15753.71,10.282,1,16,1,88.32753,0,0,0,0,88.32753,0,0,0,3,1,4,70,10.57626,0,88.9,450,819.72,1,1,1.386294,6.708963,1,4.564348,6.160541,0,0,0,88.9,9.664895,1.386294,4.481052,1 +13,6,0,1,1,628321,0,15753.71,36.79398,0,17,1,156.1038,0,30.62527,0,0,186.729,0,0,0,3,10,4,76.6,10.3,0,51.1,450,819.72,0,0,1.386294,6.708963,1,4.564348,6.160541,0,0,0,51.1,9.664895,1.386294,5.229659,1 +13,6,0,1,2,628321,0,15753.71,37.79398,0,17,1,6.870229,0,0,0,0,6.870229,0,0,0,0,2,4,76.6,10.3,0,51.1,450,819.72,0,0,1.386294,6.708963,1,4.564348,6.160541,0,0,0,51.1,9.664895,1.386294,1.927197,1 +13,6,0,1,3,628321,0,15753.71,38.79398,0,17,1,149.8258,23.93728,0,0,0,173.7631,0,0,0,3,13,4,76.6,10.3,0,51.1,450,819.72,0,0,1.386294,6.708963,1,4.564348,6.160541,0,0,0,51.1,9.664895,1.386294,5.157692,1 +13,6,0,1,1,628322,0,15753.71,3.192334,1,16,1,42.96044,10.20842,36.71629,0,0,89.88515,0,0,0,7,0,4,77.40034,10.57626,0,92.6,450,819.72,1,1,1.386294,6.708963,1,4.564348,6.160541,0,0,0,92.6,9.664895,1.386294,4.498533,1 +13,6,0,1,2,628322,0,15753.71,4.192334,1,16,1,15.64886,1.240458,12.30534,0,0,29.19466,0,0,0,3,0,4,77.40034,10.57626,0,92.6,450,819.72,1,1,1.386294,6.708963,1,4.564348,6.160541,0,0,0,92.6,9.664895,1.386294,3.373986,1 +13,6,0,1,3,628322,0,15753.71,5.192334,1,16,1,29.26829,4.236934,0,0,0,33.50523,0,0,0,3,0,4,77.40034,10.57626,0,92.6,450,819.72,1,1,1.386294,6.708963,1,4.564348,6.160541,0,0,0,92.6,9.664895,1.386294,3.511701,1 +11,6,0,0,1,628323,0,0,50.15195,1,8,1,668.2794,392.9407,0,0,3182.583,4243.803,1,0,0,4,5,1,51.1,31,1,18.2,0,584.16,0,0,0,6.370175,0,0,0,0,0,1,18.2,0,0,8.353215,1 +11,6,0,0,2,628323,0,0,51.15195,1,8,.5136612,254.2501,133.8874,3.777862,0,4745.372,5137.288,3,0,0,0,18,1,51.1,31,1,18.2,0,584.16,0,0,0,6.370175,0,0,0,0,0,1,18.2,0,0,8.54428,1 +13,6,0,1,1,628385,0,8787.507,31.8987,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,84,17.2,0,62.5,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,62.5,9.0812,1.098612,,0 +13,6,0,1,2,628385,0,8787.507,32.8987,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,84,17.2,0,62.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,62.5,9.0812,1.386294,,0 +13,6,0,1,3,628385,0,8787.507,33.8987,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,84,17.2,0,62.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,62.5,9.0812,1.386294,,0 +13,6,0,1,1,628386,0,8787.507,30.23135,1,13,1,20.41684,36.53339,0,0,2868.141,2925.092,1,0,0,3,0,3,93.6,10.3,0,89.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,89.8,9.0812,1.098612,7.981081,1 +13,6,0,1,2,628386,0,8787.507,31.23135,1,13,1,10.30534,38.92748,0,0,0,49.23283,0,0,0,1,0,4,93.6,10.3,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,89.8,9.0812,1.386294,3.896561,1 +13,6,0,1,3,628386,0,8787.507,32.23135,1,13,1,61.67247,49.87457,0,0,0,111.547,0,0,0,3,0,4,93.6,10.3,0,89.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,89.8,9.0812,1.386294,4.714447,1 +13,6,0,1,1,628387,0,8787.507,4.665298,0,13,1,60.82518,17.50319,0,0,0,78.32837,0,0,0,9,0,3,77.40034,10.57626,0,85.2,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,85.2,9.0812,1.098612,4.36091,1 +13,6,0,1,2,628387,0,8787.507,5.665298,0,13,1,75.57252,17.42366,0,0,241.9847,334.9809,1,0,0,13,0,4,77.40034,10.57626,0,85.2,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,85.2,9.0812,1.386294,5.814074,1 +13,6,0,1,3,628387,0,8787.507,6.665298,0,13,1,41.81185,5.069686,0,0,0,46.88153,0,0,0,4,0,4,77.40034,10.57626,0,85.2,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,85.2,9.0812,1.386294,3.847624,1 +11,6,0,0,1,628395,1,10875.66,37.50856,0,10,1,11.97007,32.82793,61.18204,0,0,105.98,0,0,0,0,1,5,76.1,6.9,0,80.7,0,0,0,0,1.609438,0,0,0,0,0,1,0,80.7,9.294374,1.609438,4.663251,1 +11,6,0,0,3,628395,1,10875.66,39.50856,0,10,1,2.962336,52.02708,31.53195,0,0,86.52137,0,0,0,1,0,6,76.1,6.9,0,80.7,0,0,0,0,1.791759,0,0,0,0,0,1,0,80.7,9.294374,1.791759,4.460392,1 +11,6,0,0,4,628395,1,10875.66,40.50856,0,10,1,26.57555,66.67426,60.29233,0,0,153.5421,0,0,0,4,0,5,76.1,6.9,0,80.7,0,0,0,0,1.609438,0,0,0,0,0,1,0,80.7,9.294374,1.609438,5.033975,1 +11,6,0,0,5,628395,1,10875.66,41.50856,0,10,1,0,72.6436,36.2872,0,0,108.9308,0,0,0,0,0,5,76.1,6.9,0,80.7,0,0,0,0,1.609438,0,0,0,0,0,1,0,80.7,9.294374,1.609438,4.690713,1 +11,6,0,0,1,628396,1,10875.66,8.427105,1,12,1,26.93267,2.593516,0,0,0,29.52618,0,0,0,1,1,5,75,10.57626,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,1,0,55.6,9.294374,1.609438,3.385278,1 +11,6,0,0,2,628396,1,10875.66,9.427105,1,12,1,8.298756,2.766252,0,0,0,11.06501,0,0,0,1,0,4,75,10.57626,0,55.6,0,0,1,1,1.386294,0,0,0,0,0,1,0,55.6,9.294374,1.386294,2.403788,1 +11,6,0,0,3,628396,1,10875.66,10.4271,1,12,1,130.3428,0,18.92509,0,0,149.2679,0,0,0,3,10,6,75,10.57626,0,55.6,0,0,1,1,1.791759,0,0,0,0,0,1,0,55.6,9.294374,1.791759,5.005743,1 +11,6,0,0,4,628396,1,10875.66,11.4271,1,12,1,31.89066,5.182232,17.76765,0,0,54.84055,0,0,0,3,1,5,75,10.57626,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,1,0,55.6,9.294374,1.609438,4.00443,1 +11,6,0,0,5,628396,1,10875.66,12.4271,1,12,1,11.41868,0,23.391,0,0,34.80969,0,0,0,2,0,5,75,10.57626,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,1,0,55.6,9.294374,1.609438,3.549896,1 +11,6,0,0,1,628397,1,10875.66,36.70636,1,12,1,279.3018,89.29676,31.42145,0,3287.282,3687.302,4,0,0,11,1,5,62.2,17.2,1,60.2,0,0,0,0,1.609438,0,0,0,0,0,1,0,60.2,9.294374,1.609438,8.21265,1 +11,6,0,0,2,628397,1,10875.66,37.70636,1,12,1,449.0549,341.3693,39.29922,20.74689,1751.729,2581.452,2,0,1,21,1,4,62.2,17.2,1,60.2,0,0,0,0,1.386294,0,0,0,0,0,1,0,60.2,9.294374,1.386294,7.856107,1 +11,6,0,0,3,628397,1,10875.66,38.70636,1,12,1,566.6526,465.2053,37.35506,19.04359,372.408,1441.621,1,0,1,19,60,6,62.2,17.2,1,60.2,0,0,0,0,1.791759,0,0,0,0,0,1,0,60.2,9.294374,1.791759,7.273523,1 +11,6,0,0,1,628398,1,10875.66,8.427105,1,12,1,37.90524,5.411471,0,0,0,43.31671,0,0,0,2,1,5,75,10.57626,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,1,0,55.6,9.294374,1.609438,3.768538,1 +11,6,0,0,2,628398,1,10875.66,9.427105,1,12,1,44.26003,4.379899,17.74089,0,0,66.38082,0,0,0,5,0,4,75,10.57626,0,55.6,0,0,1,1,1.386294,0,0,0,0,0,1,0,55.6,9.294374,1.386294,4.195408,1 +11,6,0,0,3,628398,1,10875.66,10.4271,1,12,1,65.59458,1.946678,18.92509,0,0,86.46635,0,0,0,2,1,6,75,10.57626,0,55.6,0,0,1,1,1.791759,0,0,0,0,0,1,0,55.6,9.294374,1.791759,4.459755,1 +11,6,0,0,4,628398,1,10875.66,11.4271,1,12,1,100.9871,5.713743,17.76765,0,0,124.4685,0,0,0,4,7,5,75,10.57626,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,1,0,55.6,9.294374,1.609438,4.824053,1 +11,6,0,0,5,628398,1,10875.66,12.4271,1,12,1,15.57093,8.840831,23.391,0,0,47.80277,0,0,0,2,0,5,75,10.57626,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,1,0,55.6,9.294374,1.609438,3.867084,1 +11,6,0,0,1,628399,1,10875.66,16.74196,1,12,1,12.46883,6.418952,27.43142,0,0,46.3192,0,0,0,0,1,5,58.5,6.9,0,68.2,0,0,1,1,1.609438,0,0,0,0,0,1,0,68.2,9.294374,1.609438,3.835557,1 +11,6,0,0,3,628399,1,10875.66,18.74196,1,12,1,126.9573,8.887008,23.69869,0,0,159.543,0,0,0,3,11,6,58.5,6.9,0,68.2,0,0,0,0,1.791759,0,0,0,0,0,1,0,68.2,9.294374,1.791759,5.072313,1 +11,6,0,0,4,628399,1,10875.66,19.74196,1,12,1,31.32118,5.46697,0,0,0,36.78815,0,0,0,3,0,5,58.5,6.9,0,68.2,0,0,0,0,1.609438,0,0,0,0,0,1,0,68.2,9.294374,1.609438,3.605176,1 +11,6,0,0,5,628399,1,10875.66,20.74196,1,12,1,34.25605,12.94118,0,0,0,47.19723,0,0,0,4,0,5,58.5,6.9,0,68.2,0,0,0,0,1.609438,0,0,0,0,0,1,0,68.2,9.294374,1.609438,3.854335,1 +11,6,0,1,1,628414,1,6735.316,58.79808,0,4,1,52.1666,28.66218,0,0,0,80.82877,0,0,0,8,0,1,80.3,10.3,1,64.3,0,0,0,0,0,0,0,0,0,0,0,0,64.3,8.815269,0,4.392333,1 +11,6,0,1,2,628414,1,6735.316,59.79808,0,4,1,99.35777,14.92255,32.11182,0,0,146.3921,0,0,0,4,1,1,80.3,10.3,1,64.3,0,0,0,0,0,0,0,0,0,0,0,0,64.3,8.815269,0,4.986289,1 +11,6,0,1,3,628414,1,6735.316,60.79808,0,4,1,0,0,0,0,0,0,0,0,0,0,0,1,80.3,10.3,1,64.3,0,0,0,0,0,0,0,0,0,0,0,0,64.3,8.815269,0,,0 +13,6,0,0,1,628422,1,1714.286,2.951403,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,77.8,450,150,1,0,1.609438,5.010635,1,4.564348,6.160541,1,0,0,77.8,7.447335,1.609438,,0 +13,6,0,0,2,628422,1,1714.286,3.951403,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,77.8,450,150,1,0,1.791759,5.010635,1,4.564348,6.160541,1,0,0,77.8,7.447335,1.791759,,0 +13,6,0,0,3,628422,1,1714.286,4.951403,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,77.8,450,150,1,0,1.791759,5.010635,1,4.564348,6.160541,1,0,0,77.8,7.447335,1.791759,,0 +13,6,0,0,1,628423,1,1714.286,6.075291,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,76.7,10.57626,0,74.1,450,150,1,0,1.609438,5.010635,1,4.564348,6.160541,1,0,0,74.1,7.447335,1.609438,,0 +13,6,0,0,2,628423,1,1714.286,7.075291,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,76.7,10.57626,0,74.1,450,150,1,0,1.791759,5.010635,1,4.564348,6.160541,1,0,0,74.1,7.447335,1.791759,,0 +13,6,0,0,3,628423,1,1714.286,8.075291,0,10,1,10.38062,0,0,0,0,10.38062,0,0,0,0,0,6,76.7,10.57626,0,74.1,450,150,1,0,1.791759,5.010635,1,4.564348,6.160541,1,0,0,74.1,7.447335,1.791759,2.339941,1 +13,6,0,0,1,628424,1,1714.286,23.19233,1,10,1,21.15954,4.062632,0,0,458.7389,483.9611,1,0,0,3,0,5,61.7,3.4,0,47.7,450,150,0,0,1.609438,5.010635,1,4.564348,6.160541,1,0,0,47.7,7.447335,1.609438,6.182004,1 +13,6,0,0,2,628424,1,1714.286,24.19233,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,61.7,3.4,0,47.7,450,150,0,0,1.791759,5.010635,1,4.564348,6.160541,1,0,0,47.7,7.447335,1.791759,,0 +13,6,0,0,3,628424,1,1714.286,25.19233,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,61.7,3.4,0,47.7,450,150,0,0,1.791759,5.010635,1,4.564348,6.160541,1,0,0,47.7,7.447335,1.791759,,0 +13,6,0,0,1,628425,1,1714.286,26.72964,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,65.4,3.4,0,69.3,450,150,0,0,1.609438,5.010635,1,4.564348,6.160541,0,0,1,69.3,7.447335,1.609438,,0 +13,6,0,0,2,628425,1,1714.286,27.72964,0,12,1,36.44647,0,0,0,0,36.44647,0,0,0,0,0,6,65.4,3.4,0,69.3,450,150,0,0,1.791759,5.010635,1,4.564348,6.160541,0,0,1,69.3,7.447335,1.791759,3.595845,1 +13,6,0,0,3,628425,1,1714.286,28.72964,0,12,1,69.89619,1.366782,0,0,0,71.26298,0,0,0,2,0,6,65.4,3.4,0,69.3,450,150,0,0,1.791759,5.010635,1,4.564348,6.160541,0,0,1,69.3,7.447335,1.791759,4.266377,1 +13,6,0,0,1,628426,1,1714.286,7.405886,0,10,1,6.347863,0,0,0,0,6.347863,0,0,0,1,0,5,76.7,10.57626,0,74.1,450,150,1,0,1.609438,5.010635,1,4.564348,6.160541,1,0,0,74.1,7.447335,1.609438,1.848118,1 +13,6,0,0,2,628426,1,1714.286,8.405887,0,10,1,5.694761,0,0,0,0,5.694761,0,0,0,1,0,6,76.7,10.57626,0,74.1,450,150,1,0,1.791759,5.010635,1,4.564348,6.160541,1,0,0,74.1,7.447335,1.791759,1.739547,1 +13,6,0,0,3,628426,1,1714.286,9.405887,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,76.7,10.57626,0,74.1,450,150,1,0,1.791759,5.010635,1,4.564348,6.160541,1,0,0,74.1,7.447335,1.791759,,0 +10,6,50,0,1,628429,0,2283.871,37.08693,0,9,1,61.94252,0,0,0,0,61.94252,0,0,0,2,0,1,92.6,0,0,76.1,531.9,531.9,0,0,0,6.276455,0,3.931826,6.969603,0,0,0,76.1,7.734065,0,4.126207,1 +10,6,50,0,2,628429,0,2283.871,38.08693,0,9,1,0,0,0,0,0,0,0,0,0,0,0,1,92.6,0,0,76.1,531.9,531.9,0,0,0,6.276455,0,3.931826,6.969603,0,0,0,76.1,7.734065,0,,0 +10,6,50,0,3,628429,0,2283.871,39.08693,0,9,1,10.93816,0,0,0,0,10.93816,0,0,0,2,0,1,92.6,0,0,76.1,531.9,531.9,0,0,0,6.276455,0,3.931826,6.969603,0,0,0,76.1,7.734065,0,2.392257,1 +10,6,50,0,4,628429,0,2283.871,40.08693,0,9,1,185.1152,0,0,0,0,185.1152,0,0,0,1,15,1,92.6,0,0,76.1,531.9,531.9,0,0,0,6.276455,0,3.931826,6.969603,0,0,0,76.1,7.734065,0,5.220978,1 +10,6,50,0,5,628429,0,2283.871,41.08693,0,9,1,14.06518,0,0,0,0,14.06518,0,0,0,2,0,1,92.6,0,0,76.1,531.9,531.9,0,0,0,6.276455,0,3.931826,6.969603,0,0,0,76.1,7.734065,0,2.643702,1 +11,6,0,1,1,628437,0,6735.316,35.44422,1,6,1,103.2586,14.17689,29.62336,0,1146.001,1293.06,1,0,0,4,0,7,78.2,17.2,0,69.3,0,216.48,0,0,1.94591,5.377498,0,0,0,0,0,1,69.3,8.815269,1.94591,7.164766,1 +11,6,0,1,2,628437,0,6735.316,36.44422,1,6,1,112.9461,34.16856,37.96507,0,0,185.0797,0,0,0,10,0,7,78.2,17.2,0,69.3,0,216.48,0,0,1.94591,5.377498,0,0,0,0,0,1,69.3,8.815269,1.94591,5.220787,1 +11,6,0,1,3,628437,0,6735.316,37.44422,1,6,1,80.96886,50.11765,29.97578,50.17301,300.346,461.4083,1,0,3,4,0,8,78.2,17.2,0,69.3,0,216.48,0,0,2.079442,5.377498,0,0,0,0,0,1,69.3,8.815269,2.079442,6.134284,1 +11,6,0,1,1,628438,0,6735.316,43.05544,0,5,1,14.81168,2.539145,35.12484,0,0,52.47567,0,0,0,1,0,7,77.7,27.6,0,45.5,0,216.48,0,0,1.94591,5.377498,0,0,0,1,0,0,45.5,8.815269,1.94591,3.96035,1 +11,6,0,1,2,628438,0,6735.316,44.05544,0,5,1,34.16856,21.15034,0,0,0,55.3189,0,0,0,3,0,7,77.7,27.6,0,45.5,0,216.48,0,0,1.94591,5.377498,0,0,0,1,0,0,45.5,8.815269,1.94591,4.013115,1 +11,6,0,1,3,628438,0,6735.316,45.05544,0,5,1,29.58478,19.07612,0,0,0,48.6609,0,0,0,3,0,8,77.7,27.6,0,45.5,0,216.48,0,0,2.079442,5.377498,0,0,0,1,0,0,45.5,8.815269,2.079442,3.884876,1 +11,6,0,1,1,628439,0,6735.316,4.580424,0,6,1,50.35971,24.45197,0,0,0,74.81168,0,0,0,2,0,7,77.40034,10.57626,0,88.9,0,216.48,1,0,1.94591,5.377498,0,0,0,0,0,1,88.9,8.815269,1.94591,4.314974,1 +11,6,0,1,2,628439,0,6735.316,5.580424,0,6,1,55.80865,9.859529,0,0,0,65.66818,0,0,0,6,0,7,77.40034,10.57626,0,88.9,0,216.48,1,0,1.94591,5.377498,0,0,0,0,0,1,88.9,8.815269,1.94591,4.184615,1 +11,6,0,1,3,628439,0,6735.316,6.580424,0,6,1,49.82699,15.20415,0,0,0,65.03114,0,0,0,6,0,8,77.40034,10.57626,0,88.9,0,216.48,1,0,2.079442,5.377498,0,0,0,0,0,1,88.9,8.815269,2.079442,4.174866,1 +11,6,0,1,1,628440,0,6735.316,18.22313,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,74.8,0,0,67,0,216.48,0,0,1.94591,5.377498,0,0,0,0,0,0,67,8.815269,1.94591,,0 +11,6,0,1,3,628440,0,6735.316,20.22313,0,7,1,56.40138,29.14533,2.595156,43.25259,0,88.14187,0,0,4,0,0,8,74.8,0,0,67,0,216.48,0,0,2.079442,5.377498,0,0,0,0,0,0,67,8.815269,2.079442,4.478948,1 +11,6,0,1,1,628441,0,6735.316,14.40931,1,6,1,46.97419,11.10876,0,0,0,58.08295,0,0,0,3,0,7,61.2,3.4,0,61.4,0,216.48,1,1,1.94591,5.377498,0,0,0,1,0,0,61.4,8.815269,1.94591,4.061872,1 +11,6,0,1,2,628441,0,6735.316,15.40931,1,6,1,63.81929,11.23766,0,0,0,75.05695,0,0,0,7,0,7,61.2,3.4,0,61.4,0,216.48,1,1,1.94591,5.377498,0,0,0,1,0,0,61.4,8.815269,1.94591,4.318247,1 +11,6,0,1,3,628441,0,6735.316,16.40931,1,6,1,17.30104,16.21107,0,0,0,33.51211,0,0,0,1,0,8,61.2,3.4,0,61.4,0,216.48,1,1,2.079442,5.377498,0,0,0,1,0,0,61.4,8.815269,2.079442,3.511907,1 +11,6,0,1,1,628442,0,6735.316,9.831622,0,6,1,46.97419,8.992805,0,0,0,55.96699,0,0,0,2,0,7,95,10.57626,0,66.7,0,216.48,1,0,1.94591,5.377498,0,0,0,0,0,0,66.7,8.815269,1.94591,4.024762,1 +11,6,0,1,2,628442,0,6735.316,10.83162,0,6,1,9.491268,3.287775,0,0,0,12.77904,0,0,0,1,0,7,95,10.57626,0,66.7,0,216.48,1,0,1.94591,5.377498,0,0,0,0,0,0,66.7,8.815269,1.94591,2.547807,1 +11,6,0,1,3,628442,0,6735.316,11.83162,0,6,1,49.48097,2.743945,0,0,0,52.22491,0,0,0,1,0,8,95,10.57626,0,66.7,0,216.48,1,0,2.079442,5.377498,0,0,0,0,0,0,66.7,8.815269,2.079442,3.95556,1 +11,6,0,1,1,628443,0,6735.316,17.13621,0,6,1,8.463818,4.655099,0,0,0,13.11892,0,0,0,2,0,7,70.2,3.4,0,95.5,0,216.48,1,0,1.94591,5.377498,0,0,0,1,0,0,95.5,8.815269,1.94591,2.574055,1 +11,6,0,1,2,628443,0,6735.316,18.13621,0,6,1,0,3.416857,0,0,0,3.416857,0,0,0,0,0,7,70.2,3.4,0,95.5,0,216.48,0,0,1.94591,5.377498,0,0,0,1,0,0,95.5,8.815269,1.94591,1.228721,1 +11,6,0,1,3,628443,0,6735.316,19.13621,0,6,1,0,3.615917,0,0,0,3.615917,0,0,0,0,0,8,70.2,3.4,0,95.5,0,216.48,0,0,2.079442,5.377498,0,0,0,1,0,0,95.5,8.815269,2.079442,1.285345,1 +16,6,95,1,1,628455,1,6735.316,55.93429,1,3,1,96.48752,24.43927,35.97122,0,435.8866,592.7846,1,0,0,4,1,1,63.3,17.2,1,52.5,364.5,364.5,0,0,0,5.898527,0,4.564348,5.94982,0,0,1,52.5,8.815269,0,6.384831,1 +16,6,95,1,2,628455,1,6735.316,56.93429,1,3,1,0,9.168565,0,0,0,9.168565,0,0,0,0,0,1,63.3,17.2,1,52.5,364.5,364.5,0,0,0,5.898527,0,4.564348,5.94982,0,0,1,52.5,8.815269,0,2.215781,1 +16,6,95,1,3,628455,1,6735.316,57.93429,1,3,1,13.84083,0,34.60208,0,0,48.44291,0,0,0,1,0,1,63.3,17.2,1,52.5,364.5,364.5,0,0,0,5.898527,0,4.564348,5.94982,0,0,1,52.5,8.815269,0,3.880386,1 +11,6,0,1,1,628466,1,6491.04,39.20876,0,12,1,42.91123,11.56921,0,0,0,54.48044,0,0,0,2,0,8,76.1,0,1,50,0,0,0,0,2.079442,0,0,0,0,0,1,0,50,8.778332,2.079442,3.997842,1 +11,6,0,1,2,628466,1,6491.04,40.20876,0,12,1,5.666792,6.120136,0,0,0,11.78693,0,0,0,1,0,8,76.1,0,1,50,0,0,0,0,2.079442,0,0,0,0,0,1,0,50,8.778332,2.079442,2.466991,1 +11,6,0,1,3,628466,1,6491.04,41.20876,0,12,1,5.145798,0,0,0,0,5.145798,0,0,0,1,0,8,76.1,0,1,50,0,0,0,0,2.079442,0,0,0,0,0,1,0,50,8.778332,2.079442,1.63818,1 +11,6,0,1,1,628467,1,6491.04,10.80904,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,96.7,10.57626,0,88.9,0,0,1,1,2.079442,0,0,0,0,1,0,0,88.9,8.778332,2.079442,,0 +11,6,0,1,2,628467,1,6491.04,11.80904,1,12,1,5.666792,2.247828,0,0,0,7.91462,0,0,0,1,0,8,96.7,10.57626,0,88.9,0,0,1,1,2.079442,0,0,0,0,1,0,0,88.9,8.778332,2.079442,2.068712,1 +11,6,0,1,3,628467,1,6491.04,12.80904,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,96.7,10.57626,0,88.9,0,0,1,1,2.079442,0,0,0,0,1,0,0,88.9,8.778332,2.079442,,0 +11,6,0,1,1,628468,1,6491.04,14.48323,0,12,1,5.04838,0,0,0,0,5.04838,0,0,0,1,0,8,85.1,10.3,0,64.8,0,0,1,0,2.079442,0,0,0,0,1,0,0,64.8,8.778332,2.079442,1.619067,1 +11,6,0,1,2,628468,1,6491.04,15.48323,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,85.1,10.3,0,64.8,0,0,1,0,2.079442,0,0,0,0,1,0,0,64.8,8.778332,2.079442,,0 +11,6,0,1,3,628468,1,6491.04,16.48323,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,85.1,10.3,0,64.8,0,0,1,0,2.079442,0,0,0,0,1,0,0,64.8,8.778332,2.079442,,0 +11,6,0,1,1,628469,1,6491.04,3.249829,0,12,1,18.09003,3.155238,0,0,0,21.24527,0,0,0,3,0,8,77.40034,10.57626,0,88.9,0,0,1,0,2.079442,0,0,0,0,1,0,0,88.9,8.778332,2.079442,3.056134,1 +11,6,0,1,2,628469,1,6491.04,4.249829,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,0,88.9,0,0,1,0,2.079442,0,0,0,0,1,0,0,88.9,8.778332,2.079442,,0 +11,6,0,1,3,628469,1,6491.04,5.249829,0,12,1,5.831904,6.7753,0,0,0,12.6072,0,0,0,1,0,8,77.40034,10.57626,0,88.9,0,0,1,0,2.079442,0,0,0,0,1,0,0,88.9,8.778332,2.079442,2.534268,1 +11,6,0,1,1,628470,1,6491.04,39.19507,1,12,1,0,3.344552,0,0,0,3.344552,0,0,0,0,0,8,79.8,3.4,0,76.1,0,0,0,0,2.079442,0,0,0,0,0,1,0,76.1,8.778332,2.079442,1.207333,1 +11,6,0,1,2,628470,1,6491.04,40.19507,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,79.8,3.4,0,76.1,0,0,0,0,2.079442,0,0,0,0,0,1,0,76.1,8.778332,2.079442,,0 +11,6,0,1,3,628470,1,6491.04,41.19507,1,12,1,41.85249,2.401372,0,0,0,44.25386,0,0,0,3,0,8,79.8,3.4,0,76.1,0,0,0,0,2.079442,0,0,0,0,0,1,0,76.1,8.778332,2.079442,3.789943,1 +11,6,0,1,1,628471,1,6491.04,7.764545,0,12,1,5.889777,1.051746,0,0,0,6.941523,0,0,0,1,0,8,96.7,10.57626,0,96.3,0,0,1,0,2.079442,0,0,0,0,1,0,0,96.3,8.778332,2.079442,1.937521,1 +11,6,0,1,2,628471,1,6491.04,8.764544,0,12,1,10.57801,1.492255,0,0,0,12.07027,0,0,0,2,0,8,96.7,10.57626,0,96.3,0,0,1,0,2.079442,0,0,0,0,1,0,0,96.3,8.778332,2.079442,2.490745,1 +11,6,0,1,3,628471,1,6491.04,9.764544,0,12,1,5.831904,4.336192,0,0,0,10.1681,0,0,0,1,0,8,96.7,10.57626,0,96.3,0,0,1,0,2.079442,0,0,0,0,1,0,0,96.3,8.778332,2.079442,2.319255,1 +11,6,0,1,1,628472,1,6491.04,12.2601,0,12,1,8.413967,0,28.18679,0,0,36.60076,0,0,0,0,1,8,93.3,10.57626,0,70.4,0,0,1,0,2.079442,0,0,0,0,1,0,0,70.4,8.778332,2.079442,3.600069,1 +11,6,0,1,2,628472,1,6491.04,13.2601,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,93.3,10.57626,0,70.4,0,0,1,0,2.079442,0,0,0,0,1,0,0,70.4,8.778332,2.079442,,0 +11,6,0,1,3,628472,1,6491.04,14.2601,0,12,1,6.51801,0,0,0,0,6.51801,0,0,0,1,0,8,93.3,10.57626,0,70.4,0,0,1,0,2.079442,0,0,0,0,1,0,0,70.4,8.778332,2.079442,1.874569,1 +11,6,0,1,1,628473,1,6491.04,15.436,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,87.8,3.4,0,79.8,0,0,1,1,2.079442,0,0,0,0,1,0,0,79.8,8.778332,2.079442,,0 +11,6,0,1,2,628473,1,6491.04,16.436,1,12,1,16.62259,0,0,0,0,16.62259,0,0,0,1,1,8,87.8,3.4,0,79.8,0,0,1,1,2.079442,0,0,0,0,1,0,0,79.8,8.778332,2.079442,2.810763,1 +11,6,0,1,3,628473,1,6491.04,17.436,1,12,1,8.576329,0,29.15952,0,0,37.73585,0,0,0,0,1,8,87.8,3.4,0,79.8,0,0,1,1,2.079442,0,0,0,0,1,0,0,79.8,8.778332,2.079442,3.63061,1 +7,6,25,0,1,628480,0,13028.15,56.2026,0,14,1,22.60171,0,0,0,0,22.60171,0,0,0,1,0,2,83.5,17.2,0,61.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,61.4,9.474945,.6931472,3.118026,1 +7,6,25,0,2,628480,0,13028.15,57.2026,0,14,1,58.87807,0,51.46036,0,0,110.3384,0,0,0,4,0,2,83.5,17.2,0,61.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,61.4,9.474945,.6931472,4.703552,1 +7,6,25,0,3,628480,0,13028.15,58.2026,0,14,1,0,0,0,0,0,0,0,0,0,0,0,2,83.5,17.2,0,61.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,61.4,9.474945,.6931472,,0 +7,6,25,0,4,628480,0,13028.15,59.2026,0,14,1,35.49618,0,38.54962,0,308.0153,382.0611,1,0,0,2,1,2,83.5,17.2,0,61.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,61.4,9.474945,.6931472,5.94558,1 +7,6,25,0,5,628480,0,13028.15,60.2026,0,14,1,9.407665,0,27.87457,0,0,37.28223,0,0,0,0,0,2,83.5,17.2,0,61.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,61.4,9.474945,.6931472,3.618517,1 +7,6,25,0,1,628481,0,13028.15,44.11225,1,17,1,0,0,0,0,0,0,0,0,0,0,0,2,74.5,3.4,0,79.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,79.5,9.474945,.6931472,,0 +7,6,25,0,2,628481,0,13028.15,45.11225,1,17,1,84.37645,0,44.50626,0,0,128.8827,0,0,0,9,0,2,74.5,3.4,0,79.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,79.5,9.474945,.6931472,4.858903,1 +7,6,25,0,3,628481,0,13028.15,46.11225,1,17,1,0,0,0,0,0,0,0,0,0,0,0,2,74.5,3.4,0,79.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,79.5,9.474945,.6931472,,0 +7,6,25,0,4,628481,0,13028.15,47.11225,1,17,1,11.83206,23.72901,9.389313,0,0,44.95038,0,0,0,1,0,2,74.5,3.4,0,79.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,79.5,9.474945,.6931472,3.805559,1 +7,6,25,0,5,628481,0,13028.15,48.11225,1,17,1,12.54355,35.777,26.1324,0,1030.662,1105.115,1,0,0,1,0,2,74.5,3.4,0,79.5,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,79.5,9.474945,.6931472,7.007705,1 +13,6,0,0,1,628485,0,5711.726,5.040383,0,8,1,6.347863,5.196784,0,0,0,11.54465,0,0,0,1,0,4,83.3,10.57626,.1442925,70.4,450,174.72,1,0,1.386294,5.163185,1,4.564348,6.160541,1,0,0,70.4,8.650452,1.386294,2.446222,1 +13,6,0,0,2,628485,0,5711.726,6.040383,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,.1442925,70.4,450,174.72,1,0,1.386294,5.163185,1,4.564348,6.160541,1,0,0,70.4,8.650452,1.386294,,0 +13,6,0,0,3,628485,0,5711.726,7.040383,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,.1442925,70.4,450,174.72,1,0,1.386294,5.163185,1,4.564348,6.160541,1,0,0,70.4,8.650452,1.386294,,0 +13,6,0,0,1,628486,0,5711.726,11.95893,1,8,1,6.347863,2.048244,0,0,0,8.396107,0,0,0,1,0,4,85,10.57626,.1442925,88.9,450,174.72,1,1,1.386294,5.163185,1,4.564348,6.160541,1,0,0,88.9,8.650452,1.386294,2.127768,1 +13,6,0,0,2,628486,0,5711.726,12.95893,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,.1442925,88.9,450,174.72,1,1,1.386294,5.163185,1,4.564348,6.160541,1,0,0,88.9,8.650452,1.386294,,0 +13,6,0,0,3,628486,0,5711.726,13.95893,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,.1442925,88.9,450,174.72,1,1,1.386294,5.163185,1,4.564348,6.160541,1,0,0,88.9,8.650452,1.386294,,0 +13,6,0,0,1,628487,0,5711.726,27.60027,1,8,1,129.4964,47.51164,0,0,226.8303,403.8383,1,0,0,7,7,4,60.6,20.7,0,44.3,450,174.72,0,0,1.386294,5.163185,1,4.564348,6.160541,1,0,0,44.3,8.650452,1.386294,6.001015,1 +13,6,0,0,2,628487,0,5711.726,28.60027,1,8,1,5.694761,9.396356,0,0,462.7942,477.8853,1,0,0,1,0,4,60.6,20.7,0,44.3,450,174.72,0,0,1.386294,5.163185,1,4.564348,6.160541,1,0,0,44.3,8.650452,1.386294,6.169371,1 +13,6,0,0,3,628487,0,5711.726,29.60027,1,8,1,235.6401,5.307959,0,0,0,240.9481,0,0,0,0,20,4,60.6,20.7,0,44.3,450,174.72,0,0,1.386294,5.163185,1,4.564348,6.160541,1,0,0,44.3,8.650452,1.386294,5.484581,1 +13,6,0,0,1,628488,0,5711.726,31.51814,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,85.1,13.8,0,81,450,174.72,0,0,1.386294,5.163185,1,4.564348,6.160541,1,0,0,81,8.650452,1.386294,,0 +13,6,0,0,2,628488,0,5711.726,32.51814,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,85.1,13.8,0,81,450,174.72,0,0,1.386294,5.163185,1,4.564348,6.160541,1,0,0,81,8.650452,1.386294,,0 +13,6,0,0,3,628488,0,5711.726,33.51814,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,85.1,13.8,0,81,450,174.72,0,0,1.386294,5.163185,1,4.564348,6.160541,1,0,0,81,8.650452,1.386294,,0 +6,6,25,0,1,628489,1,6524.27,15.82478,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,76.6,0,0,52.9,750,750,1,0,2.079442,6.620073,0,3.258096,8.006368,1,0,0,52.9,8.783438,2.079442,,0 +6,6,25,0,2,628489,1,6524.27,16.82478,0,12,1,6.883892,0,0,0,0,6.883892,0,0,0,1,0,8,76.6,0,0,52.9,750,750,1,0,2.079442,6.620073,0,3.258096,8.006368,1,0,0,52.9,8.783438,2.079442,1.929184,1 +6,6,25,0,1,628490,1,6524.27,18.00411,1,10,1,0,0,0,0,0,0,0,0,0,0,0,8,78.7,0,.1442925,65.5,750,750,0,0,2.079442,6.620073,0,3.258096,8.006368,1,0,0,65.5,8.783438,2.079442,,0 +6,6,25,0,2,628490,1,6524.27,19.00411,1,10,1,9.178522,0,33.50161,0,0,42.68013,0,0,0,0,1,8,78.7,0,.1442925,65.5,750,750,0,0,2.079442,6.620073,0,3.258096,8.006368,1,0,0,65.5,8.783438,2.079442,3.753733,1 +6,6,25,0,3,628490,1,6524.27,20.00411,1,10,1,2.944889,5.742533,0,0,0,8.687421,0,0,0,1,0,7,78.7,0,.1442925,65.5,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,1,0,0,65.5,8.783438,1.94591,2.161876,1 +6,6,25,0,4,628490,1,6524.27,21.00411,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,78.7,0,.1442925,65.5,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,1,0,0,65.5,8.783438,1.94591,,0 +6,6,25,0,5,628490,1,6524.27,22.00411,1,10,1,0,6.140652,0,0,0,6.140652,0,0,0,0,0,7,78.7,0,.1442925,65.5,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,1,0,0,65.5,8.783438,1.94591,1.814931,1 +6,6,25,0,1,628491,1,6524.27,4.572211,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,0,47.5,750,750,1,0,2.079442,6.620073,0,3.258096,8.006368,1,0,0,47.5,8.783438,2.079442,,0 +6,6,25,0,2,628491,1,6524.27,5.572211,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,0,47.5,750,750,1,0,2.079442,6.620073,0,3.258096,8.006368,1,0,0,47.5,8.783438,2.079442,,0 +6,6,25,0,3,628491,1,6524.27,6.572211,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,47.5,750,750,1,0,1.94591,6.620073,0,3.258096,8.006368,1,0,0,47.5,8.783438,1.94591,,0 +6,6,25,0,4,628491,1,6524.27,7.572211,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,47.5,750,750,1,0,1.94591,6.620073,0,3.258096,8.006368,1,0,0,47.5,8.783438,1.94591,,0 +6,6,25,0,5,628491,1,6524.27,8.572211,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,47.5,750,750,1,0,1.94591,6.620073,0,3.258096,8.006368,1,0,0,47.5,8.783438,1.94591,,0 +6,6,25,0,1,628492,1,6524.27,11.24709,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,85,10.57626,0,77.8,750,750,1,1,2.079442,6.620073,0,3.258096,8.006368,1,0,0,77.8,8.783438,2.079442,,0 +6,6,25,0,2,628492,1,6524.27,12.24709,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,85,10.57626,0,77.8,750,750,1,1,2.079442,6.620073,0,3.258096,8.006368,1,0,0,77.8,8.783438,2.079442,,0 +6,6,25,0,3,628492,1,6524.27,13.24709,1,12,1,14.72444,8.380311,29.02819,0,0,52.13294,0,0,0,1,1,7,85,10.57626,0,77.8,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,1,0,0,77.8,8.783438,1.94591,3.953797,1 +6,6,25,0,4,628492,1,6524.27,14.24709,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,85,10.57626,0,77.8,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,1,0,0,77.8,8.783438,1.94591,,0 +6,6,25,0,5,628492,1,6524.27,15.24709,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,85,10.57626,0,77.8,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,1,0,0,77.8,8.783438,1.94591,,0 +6,6,25,0,1,628493,1,6524.27,12.71732,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,86.7,10.57626,0,96.3,750,750,1,1,2.079442,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.783438,2.079442,,0 +6,6,25,0,2,628493,1,6524.27,13.71732,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,86.7,10.57626,0,96.3,750,750,1,1,2.079442,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.783438,2.079442,,0 +6,6,25,0,3,628493,1,6524.27,14.71732,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,86.7,10.57626,0,96.3,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.783438,1.94591,,0 +6,6,25,0,4,628493,1,6524.27,15.71732,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,86.7,10.57626,0,96.3,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.783438,1.94591,,0 +6,6,25,0,5,628493,1,6524.27,16.71732,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,86.7,10.57626,0,96.3,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.783438,1.94591,,0 +6,6,25,0,1,628494,1,6524.27,9.267625,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,85,10.57626,0,96.3,750,750,1,1,2.079442,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.783438,2.079442,,0 +6,6,25,0,2,628494,1,6524.27,10.26762,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,85,10.57626,0,96.3,750,750,1,1,2.079442,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.783438,2.079442,,0 +6,6,25,0,3,628494,1,6524.27,11.26762,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,85,10.57626,0,96.3,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.783438,1.94591,,0 +6,6,25,0,4,628494,1,6524.27,12.26762,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,85,10.57626,0,96.3,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.783438,1.94591,,0 +6,6,25,0,5,628494,1,6524.27,13.26762,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,85,10.57626,0,96.3,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,1,0,0,96.3,8.783438,1.94591,,0 +6,6,25,0,1,628495,1,6524.27,54.0178,0,7,1,0,0,0,0,0,0,0,0,0,0,0,8,81.4,3.4,1,55.7,750,750,0,0,2.079442,6.620073,0,3.258096,8.006368,0,1,0,55.7,8.783438,2.079442,,0 +6,6,25,0,2,628495,1,6524.27,55.0178,0,7,1,0,7.687012,0,0,0,7.687012,0,0,0,0,0,8,81.4,3.4,1,55.7,750,750,0,0,2.079442,6.620073,0,3.258096,8.006368,0,1,0,55.7,8.783438,2.079442,2.039532,1 +6,6,25,0,3,628495,1,6524.27,56.0178,0,7,1,10.51746,2.082457,0,0,0,12.59992,0,0,0,1,0,7,81.4,3.4,1,55.7,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,55.7,8.783438,1.94591,2.53369,1 +6,6,25,0,4,628495,1,6524.27,57.0178,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,81.4,3.4,1,55.7,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,55.7,8.783438,1.94591,,0 +6,6,25,0,5,628495,1,6524.27,58.0178,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,81.4,3.4,1,55.7,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,55.7,8.783438,1.94591,,0 +6,6,25,0,1,628496,1,6524.27,43.9562,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,77.7,10.3,0,66.7,750,750,0,0,2.079442,6.620073,0,3.258096,8.006368,0,1,0,66.7,8.783438,2.079442,,0 +6,6,25,0,2,628496,1,6524.27,44.9562,1,12,1,160.1652,0,43.59798,0,0,203.7632,0,0,0,2,1,8,77.7,10.3,0,66.7,750,750,0,0,2.079442,6.620073,0,3.258096,8.006368,0,1,0,66.7,8.783438,2.079442,5.316958,1 +6,6,25,0,3,628496,1,6524.27,45.9562,1,12,1,0,.9465713,0,0,0,.9465713,0,0,0,0,0,7,77.7,10.3,0,66.7,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,66.7,8.783438,1.94591,-.054909,1 +6,6,25,0,4,628496,1,6524.27,46.9562,1,12,1,11.33358,0,36.26747,0,0,47.60106,0,0,0,0,1,7,77.7,10.3,0,66.7,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,66.7,8.783438,1.94591,3.862855,1 +6,6,25,0,5,628496,1,6524.27,47.9562,1,12,1,19.21098,0,0,0,0,19.21098,0,0,0,2,0,7,77.7,10.3,0,66.7,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,66.7,8.783438,1.94591,2.955482,1 +15,6,95,0,1,628506,1,6735.316,4.695414,0,7,1,0,2.615319,0,0,0,2.615319,0,0,0,0,0,5,77.40034,10.57626,0,92.6,296,624,1,0,1.609438,6.436151,0,4.564348,5.741653,0,1,0,92.6,8.815269,1.609438,.9613863,1 +15,6,95,0,2,628506,1,6735.316,5.695414,0,7,1,20.12149,6.602126,0,0,0,26.72361,0,0,0,1,0,5,77.40034,10.57626,0,92.6,296,624,1,0,1.609438,6.436151,0,4.564348,5.741653,0,1,0,92.6,8.815269,1.609438,3.285547,1 +15,6,95,0,3,628506,1,6735.316,6.695414,0,7,1,0,5.259516,0,0,0,5.259516,0,0,0,0,0,5,77.40034,10.57626,0,92.6,296,624,1,0,1.609438,6.436151,0,4.564348,5.741653,0,1,0,92.6,8.815269,1.609438,1.660039,1 +15,6,95,0,1,628507,1,6735.316,47.14579,0,1,1,0,0,0,0,0,0,0,0,0,0,0,5,72.1,13.8,1,70.5,296,624,0,0,1.609438,6.436151,0,4.564348,5.741653,1,0,0,70.5,8.815269,1.609438,,0 +15,6,95,0,2,628507,1,6735.316,48.14579,0,1,1,0,0,0,0,0,0,0,0,0,0,0,5,72.1,13.8,1,70.5,296,624,0,0,1.609438,6.436151,0,4.564348,5.741653,1,0,0,70.5,8.815269,1.609438,,0 +15,6,95,0,3,628507,1,6735.316,49.14579,0,1,1,0,0,0,0,0,0,0,0,0,0,0,5,72.1,13.8,1,70.5,296,624,0,0,1.609438,6.436151,0,4.564348,5.741653,1,0,0,70.5,8.815269,1.609438,,0 +15,6,95,0,1,628508,1,6735.316,19.84121,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,69.1,0,0,70.5,296,624,0,0,1.609438,6.436151,0,4.564348,5.741653,0,1,0,70.5,8.815269,1.609438,,0 +15,6,95,0,2,628508,1,6735.316,20.84121,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,69.1,0,0,70.5,296,624,0,0,1.609438,6.436151,0,4.564348,5.741653,0,1,0,70.5,8.815269,1.609438,,0 +15,6,95,0,3,628508,1,6735.316,21.84121,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,69.1,0,0,70.5,296,624,0,0,1.609438,6.436151,0,4.564348,5.741653,0,1,0,70.5,8.815269,1.609438,,0 +15,6,95,0,1,628509,1,6735.316,10.03149,0,7,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,10.57626,0,77.8,296,624,1,0,1.609438,6.436151,0,4.564348,5.741653,0,1,0,77.8,8.815269,1.609438,,0 +15,6,95,0,2,628509,1,6735.316,11.03149,0,7,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,10.57626,0,77.8,296,624,1,0,1.609438,6.436151,0,4.564348,5.741653,0,1,0,77.8,8.815269,1.609438,,0 +15,6,95,0,3,628509,1,6735.316,12.03149,0,7,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,10.57626,0,77.8,296,624,1,0,1.609438,6.436151,0,4.564348,5.741653,0,1,0,77.8,8.815269,1.609438,,0 +15,6,95,0,1,628510,1,6735.316,42.2204,1,7,1,0,0,0,0,0,0,0,0,0,0,0,5,63.3,6.9,0,65.9,296,624,0,0,1.609438,6.436151,0,4.564348,5.741653,0,1,0,65.9,8.815269,1.609438,,0 +15,6,95,0,2,628510,1,6735.316,43.2204,1,7,1,7.972665,2.638572,0,0,318.5269,329.1382,1,0,0,1,0,5,63.3,6.9,0,65.9,296,624,0,0,1.609438,6.436151,0,4.564348,5.741653,0,1,0,65.9,8.815269,1.609438,5.796478,1 +15,6,95,0,3,628510,1,6735.316,44.2204,1,7,1,0,2.076125,0,0,0,2.076125,0,0,0,0,0,5,63.3,6.9,0,65.9,296,624,0,0,1.609438,6.436151,0,4.564348,5.741653,0,1,0,65.9,8.815269,1.609438,.730503,1 +14,6,95,1,1,628511,0,8835.795,25.42642,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,85.6,27.6,1,75,700,700,0,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,75,9.086679,1.609438,,0 +14,6,95,1,2,628511,0,8835.795,26.42642,1,8,1,6.883892,8.031207,0,0,0,14.9151,0,0,0,1,0,5,85.6,27.6,1,75,700,700,0,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,75,9.086679,1.609438,2.702374,1 +14,6,95,1,3,628511,0,8835.795,27.42642,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,85.6,27.6,1,75,700,700,0,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,75,9.086679,1.609438,,0 +14,6,95,1,4,628511,0,8835.795,28.42642,1,8,1,53.64564,11.01624,0,0,0,64.66188,0,0,0,4,0,5,85.6,27.6,1,75,700,700,0,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,75,9.086679,1.609438,4.169172,1 +14,6,95,1,5,628511,0,8835.795,29.42642,1,8,1,81.98971,9.859348,0,0,0,91.84906,0,0,0,2,0,5,85.6,27.6,1,75,700,700,0,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,75,9.086679,1.609438,4.520146,1 +14,6,95,1,1,628512,0,8835.795,5.733059,0,8,1,0,3.538157,0,0,0,3.538157,0,0,0,0,0,5,83.3,10.57626,0,63,700,700,1,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,63,9.086679,1.609438,1.263606,1 +14,6,95,1,2,628512,0,8835.795,6.733059,0,8,1,5.507113,5.162919,0,0,0,10.67003,0,0,0,1,0,5,83.3,10.57626,0,63,700,700,1,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,63,9.086679,1.609438,2.367439,1 +14,6,95,1,3,628512,0,8835.795,7.733059,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,83.3,10.57626,0,63,700,700,1,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,63,9.086679,1.609438,,0 +14,6,95,1,4,628512,0,8835.795,8.73306,0,8,1,62.33472,4.608991,0,0,402.7201,469.6638,1,0,0,1,0,5,83.3,10.57626,0,63,700,700,1,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,63,9.086679,1.609438,6.152017,1 +14,6,95,1,5,628512,0,8835.795,9.73306,0,8,1,10.63465,8.315609,0,0,0,18.95026,0,0,0,1,0,5,83.3,10.57626,0,63,700,700,1,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,63,9.086679,1.609438,2.941818,1 +14,6,95,1,1,628513,0,8835.795,30.05339,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,67,6.9,1,60.2,700,700,0,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,60.2,9.086679,1.609438,,0 +14,6,95,1,2,628513,0,8835.795,31.05339,0,9,1,21.56953,0,0,0,0,21.56953,0,0,0,0,0,5,67,6.9,1,60.2,700,700,0,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,60.2,9.086679,1.609438,3.071281,1 +14,6,95,1,3,628513,0,8835.795,32.05339,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,67,6.9,1,60.2,700,700,0,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,60.2,9.086679,1.609438,,0 +14,6,95,1,4,628513,0,8835.795,33.05339,0,9,1,5.666792,6.505478,0,0,0,12.17227,0,0,0,1,0,5,67,6.9,1,60.2,700,700,0,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,60.2,9.086679,1.609438,2.499161,1 +14,6,95,1,5,628513,0,8835.795,34.05339,0,9,1,44.25386,13.7187,0,0,0,57.97256,0,0,0,0,0,5,67,6.9,1,60.2,700,700,0,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,60.2,9.086679,1.609438,4.05997,1 +14,6,95,1,1,628514,0,8835.795,7.15948,1,8,1,4.955401,2.601586,0,0,0,7.556987,0,0,0,1,0,5,78.3,10.57626,0,85.2,700,700,1,1,1.609438,6.55108,0,4.564348,6.602374,0,0,0,85.2,9.086679,1.609438,2.022473,1 +14,6,95,1,2,628514,0,8835.795,8.15948,1,8,1,12.39101,8.949059,0,0,0,21.34007,0,0,0,2,0,5,78.3,10.57626,0,85.2,700,700,1,1,1.609438,6.55108,0,4.564348,6.602374,0,0,0,85.2,9.086679,1.609438,3.060586,1 +14,6,95,1,3,628514,0,8835.795,9.15948,1,8,1,46.27682,0,0,0,270.509,316.7859,1,0,0,4,0,5,78.3,10.57626,0,85.2,700,700,1,1,1.609438,6.55108,0,4.564348,6.602374,0,0,0,85.2,9.086679,1.609438,5.758226,1 +14,6,95,1,4,628514,0,8835.795,10.15948,1,8,1,15.11145,0,0,0,0,15.11145,0,0,0,1,0,5,78.3,10.57626,0,85.2,700,700,1,1,1.609438,6.55108,0,4.564348,6.602374,0,0,0,85.2,9.086679,1.609438,2.715453,1 +14,6,95,1,5,628514,0,8835.795,11.15948,1,8,1,21.61235,0,0,0,0,21.61235,0,0,0,2,0,5,78.3,10.57626,0,85.2,700,700,1,1,1.609438,6.55108,0,4.564348,6.602374,0,0,0,85.2,9.086679,1.609438,3.073265,1 +14,6,95,1,1,628515,0,8835.795,3.989048,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,77.8,700,700,1,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,77.8,9.086679,1.609438,,0 +14,6,95,1,2,628515,0,8835.795,4.989048,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,77.8,700,700,1,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,77.8,9.086679,1.609438,,0 +14,6,95,1,3,628515,0,8835.795,5.989048,0,8,1,29.44888,0,0,0,0,29.44888,0,0,0,0,0,5,77.40034,10.57626,0,77.8,700,700,1,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,77.8,9.086679,1.609438,3.382656,1 +14,6,95,1,4,628515,0,8835.795,6.989048,0,8,1,17.37816,14.3181,0,0,0,31.69626,0,0,0,0,0,5,77.40034,10.57626,0,77.8,700,700,1,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,77.8,9.086679,1.609438,3.456199,1 +14,6,95,1,5,628515,0,8835.795,7.989048,0,8,1,67.92453,12.20926,0,0,0,80.13379,0,0,0,2,0,5,77.40034,10.57626,0,77.8,700,700,1,0,1.609438,6.55108,0,4.564348,6.602374,0,0,0,77.8,9.086679,1.609438,4.383698,1 +10,6,50,1,1,628518,0,7758.944,4.971937,0,9,1,7.481297,3.21197,0,0,0,10.69327,0,0,0,1,0,3,77.40034,10.57626,0,85.2,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,85.2,8.956731,1.098612,2.369614,1 +10,6,50,1,2,628518,0,7758.944,5.971937,0,9,1,24.43522,6.473029,0,0,0,30.90825,0,0,0,1,0,3,77.40034,10.57626,0,85.2,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,85.2,8.956731,1.098612,3.431023,1 +10,6,50,1,3,628518,0,7758.944,6.971937,0,9,1,14.81168,0,0,0,0,14.81168,0,0,0,2,0,3,77.40034,10.57626,0,85.2,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,85.2,8.956731,1.098612,2.695416,1 +10,6,50,1,4,628518,0,7758.944,7.971937,0,9,1,26.1959,12.92711,0,0,0,39.12301,0,0,0,5,0,3,77.40034,10.57626,0,85.2,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,85.2,8.956731,1.098612,3.666711,1 +10,6,50,1,5,628518,0,7758.944,8.971937,0,9,1,88.23529,17.30104,1.730104,0,0,107.2664,0,0,0,2,0,3,77.40034,10.57626,0,85.2,1000,1000,1,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,85.2,8.956731,1.098612,4.675316,1 +10,6,50,1,1,628519,0,7758.944,26.32717,1,9,1,32.41895,6.199501,35.91022,0,0,74.52868,0,0,0,2,1,3,77.1,13.8,0,69.3,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,69.3,8.956731,1.098612,4.311184,1 +10,6,50,1,2,628519,0,7758.944,27.32717,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,77.1,13.8,0,69.3,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,69.3,8.956731,1.098612,,0 +10,6,50,1,3,628519,0,7758.944,28.32717,1,9,1,10.57977,0,33.43208,0,0,44.01185,0,0,0,0,1,3,77.1,13.8,0,69.3,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,69.3,8.956731,1.098612,3.784459,1 +10,6,50,1,4,628519,0,7758.944,29.32717,1,9,1,37.58542,0,0,0,0,37.58542,0,0,0,1,0,3,77.1,13.8,0,69.3,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,69.3,8.956731,1.098612,3.626616,1 +10,6,50,1,5,628519,0,7758.944,30.32717,1,9,1,19.03114,0,0,0,0,19.03114,0,0,0,1,0,3,77.1,13.8,0,69.3,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,69.3,8.956731,1.098612,2.946077,1 +10,6,50,1,1,628520,0,7758.944,28.98836,0,11,1,27.43142,0,0,0,0,27.43142,0,0,0,3,0,3,85.6,6.9,0,71.6,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,71.6,8.956731,1.098612,3.311689,1 +10,6,50,1,2,628520,0,7758.944,29.98836,0,11,1,13.83126,0,0,0,29.96773,43.79898,1,1,0,2,0,3,85.6,6.9,0,71.6,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,71.6,8.956731,1.098612,3.779611,1 +10,6,50,1,3,628520,0,7758.944,30.98836,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,85.6,6.9,0,71.6,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,71.6,8.956731,1.098612,,0 +10,6,50,1,4,628520,0,7758.944,31.98836,0,11,1,22.39939,2.346241,0,0,0,24.74563,0,0,0,3,0,3,85.6,6.9,0,71.6,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,71.6,8.956731,1.098612,3.208649,1 +10,6,50,1,5,628520,0,7758.944,32.98837,0,11,1,83.04498,17.30104,1.730104,0,0,102.0761,0,0,0,2,0,3,85.6,6.9,0,71.6,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,71.6,8.956731,1.098612,4.625719,1 +13,6,0,0,1,628529,1,4009.729,12.0219,1,2,1,0,0,0,0,0,0,0,0,0,0,0,3,68.3,10.57626,.1442925,51.9,450,452.88,1,1,1.098612,6.115627,1,4.564348,6.160541,1,0,0,51.9,8.296728,1.098612,,0 +13,6,0,0,2,628529,1,4009.729,13.0219,1,2,1,3.796507,0,0,0,0,3.796507,0,0,0,1,0,3,68.3,10.57626,.1442925,51.9,450,452.88,1,1,1.098612,6.115627,1,4.564348,6.160541,1,0,0,51.9,8.296728,1.098612,1.334081,1 +13,6,0,0,3,628529,1,4009.729,14.0219,1,2,1,0,0,0,0,0,0,0,0,0,0,0,3,68.3,10.57626,.1442925,51.9,450,452.88,1,1,1.098612,6.115627,1,4.564348,6.160541,1,0,0,51.9,8.296728,1.098612,,0 +13,6,0,0,1,628530,1,4009.729,53.10062,1,2,1,15.65806,4.909014,0,0,0,20.56708,0,0,0,3,0,3,68.1,10.3,0,62.5,450,452.88,0,0,1.098612,6.115627,1,4.564348,6.160541,1,0,0,62.5,8.296728,1.098612,3.023691,1 +13,6,0,0,2,628530,1,4009.729,54.10062,1,2,1,0,0,0,0,0,0,0,0,0,0,0,3,68.1,10.3,0,62.5,450,452.88,0,0,1.098612,6.115627,1,4.564348,6.160541,1,0,0,62.5,8.296728,1.098612,,0 +13,6,0,0,3,628530,1,4009.729,55.10062,1,2,1,0,0,0,0,0,0,0,0,0,0,0,3,68.1,10.3,0,62.5,450,452.88,0,0,1.098612,6.115627,1,4.564348,6.160541,1,0,0,62.5,8.296728,1.098612,,0 +13,6,0,0,1,628531,1,4009.729,56.72553,0,4,1,98.60347,37.00804,0,0,0,135.6115,0,0,0,20,0,3,64.9,3.4,1,54.8,450,452.88,0,0,1.098612,6.115627,1,4.564348,6.160541,1,0,0,54.8,8.296728,1.098612,4.909794,1 +13,6,0,0,2,628531,1,4009.729,57.72553,0,4,1,0,0,0,0,0,0,0,0,0,0,0,3,64.9,3.4,1,54.8,450,452.88,0,0,1.098612,6.115627,1,4.564348,6.160541,1,0,0,54.8,8.296728,1.098612,,0 +13,6,0,0,3,628531,1,4009.729,58.72553,0,4,1,6.920415,0,0,0,0,6.920415,0,0,0,2,0,3,64.9,3.4,1,54.8,450,452.88,0,0,1.098612,6.115627,1,4.564348,6.160541,1,0,0,54.8,8.296728,1.098612,1.934476,1 +13,6,0,0,1,628533,.5112414,4556.067,26.09446,0,10.62774,1,48.80101,0,0,0,661.3378,710.1389,1,0,0,1,0,3,62.8,17.2,1,47.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,47.7,8.424435,1.098612,6.565461,1 +13,6,0,0,2,628533,.5112414,4556.067,27.09446,0,10.62774,1,0,5.111447,0,0,0,5.111447,0,0,0,0,0,4,62.8,17.2,1,47.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,47.7,8.424435,1.386294,1.631482,1 +13,6,0,0,3,628533,.5112414,4556.067,28.09446,0,10.62774,1,0,2.315609,0,0,0,2.315609,0,0,0,0,0,4,62.8,17.2,1,47.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,47.7,8.424435,1.386294,.8396727,1 +11,6,0,1,1,628545,0,10488.56,5.100616,0,12,1,126.7813,5.149877,0,0,0,131.9312,0,0,0,4,9,5,73.3,10.57626,0,18.5,0,0,1,0,1.609438,0,0,0,0,1,0,0,18.5,9.258136,1.609438,4.88228,1 +11,6,0,1,2,628545,0,10488.56,6.100616,0,12,1,328.6235,14.17502,0,0,0,342.7986,0,0,0,8,24,5,73.3,10.57626,0,18.5,0,0,1,0,1.609438,0,0,0,0,1,0,0,18.5,9.258136,1.609438,5.837143,1 +11,6,0,1,3,628545,0,10488.56,7.100616,0,12,1,198.416,4.272614,0,0,0,202.6886,0,0,0,1,20,5,73.3,10.57626,0,18.5,0,0,1,0,1.609438,0,0,0,0,1,0,0,18.5,9.258136,1.609438,5.311671,1 +11,6,0,1,4,628545,0,10488.56,8.100616,0,12,1,94.14854,0,0,0,0,94.14854,0,0,0,2,6,5,73.3,10.57626,0,18.5,0,0,1,0,1.609438,0,0,0,0,1,0,0,18.5,9.258136,1.609438,4.544874,1 +11,6,0,1,5,628545,0,10488.56,9.100616,0,12,1,39.58051,10.49391,0,0,0,50.07442,0,0,0,5,0,5,73.3,10.57626,0,18.5,0,0,1,0,1.609438,0,0,0,0,1,0,0,18.5,9.258136,1.609438,3.91351,1 +11,6,0,1,1,628546,0,10488.56,1.486653,0,12,1,7.371007,0,0,0,0,7.371007,0,0,0,1,0,5,77.40034,10.57626,0,81.5,0,0,1,0,1.609438,0,0,0,0,0,0,0,81.5,9.258136,1.609438,1.997554,1 +11,6,0,1,2,628546,0,10488.56,2.486653,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,81.5,0,0,1,0,1.609438,0,0,0,0,0,0,0,81.5,9.258136,1.609438,,0 +11,6,0,1,3,628546,0,10488.56,3.486653,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,81.5,0,0,1,0,1.609438,0,0,0,0,0,0,0,81.5,9.258136,1.609438,,0 +11,6,0,1,4,628546,0,10488.56,4.486653,0,12,1,51.38785,0,0,0,0,51.38785,0,0,0,3,0,5,77.40034,10.57626,0,81.5,0,0,1,0,1.609438,0,0,0,0,0,0,0,81.5,9.258136,1.609438,3.939402,1 +11,6,0,1,5,628546,0,10488.56,5.486653,0,12,1,46.34641,0,0,0,0,46.34641,0,0,0,2,0,5,77.40034,10.57626,0,81.5,0,0,1,0,1.609438,0,0,0,0,0,0,0,81.5,9.258136,1.609438,3.836144,1 +11,6,0,1,1,628547,0,10488.56,29.25667,0,14,1,12.28501,0,0,0,0,12.28501,0,0,0,3,0,5,92.6,6.9,0,84.1,0,0,0,0,1.609438,0,0,0,0,1,0,0,84.1,9.258136,1.609438,2.50838,1 +11,6,0,1,2,628547,0,10488.56,30.25667,0,14,1,30.99362,7.976299,0,0,0,38.96992,0,0,0,1,0,5,92.6,6.9,0,84.1,0,0,0,0,1.609438,0,0,0,0,1,0,0,84.1,9.258136,1.609438,3.66279,1 +11,6,0,1,3,628547,0,10488.56,31.25667,0,14,1,34.59775,13.18466,0,0,0,47.78241,0,0,0,3,0,5,92.6,6.9,0,84.1,0,0,0,0,1.609438,0,0,0,0,1,0,0,84.1,9.258136,1.609438,3.866657,1 +11,6,0,1,4,628547,0,10488.56,32.25667,0,14,1,0,5.791448,0,0,0,5.791448,0,0,0,0,0,5,92.6,6.9,0,84.1,0,0,0,0,1.609438,0,0,0,0,1,0,0,84.1,9.258136,1.609438,1.756382,1 +11,6,0,1,5,628547,0,10488.56,33.25667,0,14,1,5.751015,0,0,0,0,5.751015,0,0,0,1,0,5,92.6,6.9,0,84.1,0,0,0,0,1.609438,0,0,0,0,1,0,0,84.1,9.258136,1.609438,1.749376,1 +11,6,0,1,1,628548,0,10488.56,26.93771,1,12,1,105.1597,28.83538,0,0,0,133.9951,0,0,0,8,0,5,59,13.8,1,46.6,0,0,0,0,1.609438,0,0,0,0,1,0,0,46.6,9.258136,1.609438,4.897803,1 +11,6,0,1,2,628548,0,10488.56,27.93771,1,12,1,71.5588,17.48405,37.37466,114.1522,0,126.4175,0,0,6,2,1,5,59,13.8,1,46.6,0,0,0,0,1.609438,0,0,0,0,1,0,0,46.6,9.258136,1.609438,4.83959,1 +11,6,0,1,3,628548,0,10488.56,28.93771,1,12,1,261.0463,10.49604,0,15.83993,148.3952,419.9375,1,0,1,6,23,5,59,13.8,1,46.6,0,0,0,0,1.609438,0,0,0,0,1,0,0,46.6,9.258136,1.609438,6.040106,1 +11,6,0,1,4,628548,0,10488.56,29.93771,1,12,1,186.0465,6.226557,28.50713,14.25356,180.1875,400.9677,1,0,1,5,15,5,59,13.8,1,46.6,0,0,0,0,1.609438,0,0,0,0,1,0,0,46.6,9.258136,1.609438,5.993881,1 +11,6,0,1,5,628548,0,10488.56,30.93771,1,12,1,115.3586,5.280785,0,0,0,120.6394,0,0,0,4,6,5,59,13.8,1,46.6,0,0,0,0,1.609438,0,0,0,0,1,0,0,46.6,9.258136,1.609438,4.792806,1 +11,6,0,1,1,628549,0,10488.56,7.00616,1,12,1,5.896806,0,0,0,0,5.896806,0,0,0,1,0,5,51.7,10.57626,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,55.6,9.258136,1.609438,1.774411,1 +11,6,0,1,2,628549,0,10488.56,8.00616,1,12,1,13.67366,0,0,0,0,13.67366,0,0,0,1,0,5,51.7,10.57626,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,55.6,9.258136,1.609438,2.615471,1 +11,6,0,1,3,628549,0,10488.56,9.00616,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,51.7,10.57626,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,55.6,9.258136,1.609438,,0 +11,6,0,1,4,628549,0,10488.56,10.00616,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,51.7,10.57626,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,55.6,9.258136,1.609438,,0 +11,6,0,1,5,628549,0,10488.56,11.00616,1,12,1,23.34235,0,0,0,0,23.34235,0,0,0,2,0,5,51.7,10.57626,0,55.6,0,0,1,1,1.609438,0,0,0,0,0,0,0,55.6,9.258136,1.609438,3.15027,1 +17,6,25,1,1,628551,0,6735.316,52.92539,1,12,1,200.6938,76.5114,0,0,0,277.2051,0,0,0,8,13,2,80.9,20.7,1,61.9,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,61.9,8.815269,.6931472,5.624758,1 +17,6,25,1,2,628551,0,6735.316,53.92539,1,12,1,379.9908,84.43323,0,0,1736.806,2201.23,1,0,0,12,33,2,80.9,20.7,1,61.9,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,61.9,8.815269,.6931472,7.696772,1 +17,6,25,1,3,628551,0,6735.316,54.92539,1,12,1,673.1174,169.7097,90.87084,0,471.6029,1405.301,1,0,0,21,22,2,80.9,20.7,1,61.9,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,61.9,8.815269,.6931472,7.248007,1 +17,6,25,1,4,628551,0,6735.316,55.92539,1,12,.8497268,589.932,297.7144,0,0,4651.303,5538.95,4,0,0,18,28,2,80.9,20.7,1,61.9,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,61.9,8.815269,.6931472,8.61956,1 +17,6,25,1,1,628552,0,6735.316,51.04175,0,7,1,95.14371,8.052527,0,0,0,103.1962,0,0,0,3,0,2,82.4,6.9,0,86.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,86.4,8.815269,.6931472,4.636632,1 +17,6,25,1,2,628552,0,6735.316,52.04175,0,7,1,175.3098,22.60211,0,0,0,197.9119,0,0,0,7,1,2,82.4,6.9,0,86.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,86.4,8.815269,.6931472,5.287822,1 +17,6,25,1,3,628552,0,6735.316,53.04175,0,7,1,246.1085,0,44.59402,0,0,290.7026,0,0,0,3,46,2,82.4,6.9,0,86.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,86.4,8.815269,.6931472,5.672301,1 +17,6,25,1,4,628552,0,6735.316,54.04175,0,7,1,303.5512,42.25538,20.77824,0,0,366.5848,0,0,0,15,7,2,82.4,6.9,0,86.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,86.4,8.815269,.6931472,5.90423,1 +17,6,25,1,5,628552,0,6735.316,55.04175,0,7,1,506.6895,25.45111,35.27616,0,0,567.4168,0,0,0,14,0,1,82.4,6.9,0,86.4,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,86.4,8.815269,0,6.341094,1 +11,6,0,1,1,628564,0,15859.19,54.79808,0,16,1,18.6204,17.92636,0,0,0,36.54676,0,0,0,1,0,2,83,20.7,0,72.7,0,339.36,0,0,.6931472,5.827062,0,0,0,1,0,0,72.7,9.671568,.6931472,3.598593,1 +11,6,0,1,2,628564,0,15859.19,55.79808,0,16,1,45.93774,35.7631,0,0,0,81.70084,0,0,0,2,0,2,83,20.7,0,72.7,0,339.36,0,0,.6931472,5.827062,0,0,0,1,0,0,72.7,9.671568,.6931472,4.403064,1 +11,6,0,1,3,628564,0,15859.19,56.79808,0,16,1,15.91695,35.95502,37.24221,0,0,89.11419,0,0,0,1,1,2,83,20.7,0,72.7,0,339.36,0,0,.6931472,5.827062,0,0,0,1,0,0,72.7,9.671568,.6931472,4.489919,1 +11,6,0,1,1,628565,0,15859.19,52.79671,1,21,1,97.75709,49.36098,0,0,0,147.1181,0,0,0,4,0,2,87.2,20.7,0,61.4,0,339.36,0,0,.6931472,5.827062,0,0,0,1,0,0,61.4,9.671568,.6931472,4.991235,1 +11,6,0,1,2,628565,0,15859.19,53.79671,1,21,1,129.6507,34.40395,98.54214,0,1100,1362.597,1,0,0,6,0,2,87.2,20.7,0,61.4,0,339.36,0,0,.6931472,5.827062,0,0,0,1,0,0,61.4,9.671568,.6931472,7.217147,1 +11,6,0,1,3,628565,0,15859.19,54.79671,1,21,1,101.0381,41.77509,0,0,0,142.8132,0,0,0,7,0,2,87.2,20.7,0,61.4,0,339.36,0,0,.6931472,5.827062,0,0,0,1,0,0,61.4,9.671568,.6931472,4.961537,1 +19,6,25,1,1,628582,0,8778.802,26.2642,1,16,1,65.17139,25.60728,32.16251,0,0,122.9412,0,0,0,5,0,3,83.5,13.8,0,81.8,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,81.8,9.080209,1.098612,4.811706,1 +19,6,25,1,2,628582,0,8778.802,27.2642,1,16,1,39.86333,29.84055,0,0,0,69.70387,0,0,0,2,0,3,83.5,13.8,0,81.8,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,81.8,9.080209,1.098612,4.244256,1 +19,6,25,1,3,628582,0,8778.802,28.2642,1,16,1,27.68166,21.23875,0,0,0,48.92041,0,0,0,3,0,3,83.5,13.8,0,81.8,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,81.8,9.080209,1.098612,3.890195,1 +19,6,25,1,1,628583,0,8778.802,27.34018,0,16,1,28.35379,6.982649,34.27846,0,0,69.6149,0,0,0,4,0,3,90.4,6.9,0,88.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,88.6,9.080209,1.098612,4.242979,1 +19,6,25,1,2,628583,0,8778.802,28.34018,0,16,1,7.593014,0,0,0,0,7.593014,0,0,0,1,0,3,90.4,6.9,0,88.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,88.6,9.080209,1.098612,2.027229,1 +19,6,25,1,3,628583,0,8778.802,29.34018,0,16,1,6.920415,0,0,0,0,6.920415,0,0,0,1,0,3,90.4,6.9,0,88.6,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,88.6,9.080209,1.098612,1.934476,1 +11,6,0,1,1,628643,0,7922.171,26.15195,0,16,1,38.51037,10.68557,0,0,0,49.19594,0,0,0,5,0,3,51.6,6.9,0,36.4,0,0,0,0,1.098612,0,0,0,0,1,0,0,36.4,8.977547,1.098612,3.895811,1 +11,6,0,1,2,628643,0,7922.171,27.15195,0,16,1,15.18603,0,30.37206,0,0,45.55809,0,0,0,0,1,3,51.6,6.9,0,36.4,0,0,0,0,1.098612,0,0,0,0,1,0,0,36.4,8.977547,1.098612,3.818988,1 +11,6,0,1,3,628643,0,7922.171,28.15195,0,16,1,26.7474,3.768166,0,0,0,30.51557,0,0,0,2,0,4,51.6,6.9,0,36.4,0,0,0,0,1.386294,0,0,0,0,1,0,0,36.4,8.977547,1.386294,3.418237,1 +11,6,0,1,1,628644,0,7922.171,25.03217,1,15,1,118.9166,40.24968,28.77698,0,0,187.9433,0,0,0,4,0,3,75.5,17.2,0,83,0,0,0,0,1.098612,0,0,0,0,0,0,0,83,8.977547,1.098612,5.23614,1 +11,6,0,1,2,628644,0,7922.171,26.03217,1,15,1,38.1549,11.68565,0,0,1114.465,1164.305,2,0,0,3,0,3,75.5,17.2,0,83,0,0,0,0,1.098612,0,0,0,0,0,0,0,83,8.977547,1.098612,7.05988,1 +11,6,0,1,3,628644,0,7922.171,27.03217,1,15,1,76.98962,7.709342,34.25605,0,0,118.955,0,0,0,2,1,4,75.5,17.2,0,83,0,0,0,0,1.386294,0,0,0,0,0,0,0,83,8.977547,1.386294,4.778746,1 +11,6,0,1,1,628652,0,14948.8,54.42026,0,12,1,31.73932,68.57808,0,0,0,100.3174,0,0,0,4,0,2,66.5,10.3,0,52.3,0,261.76,0,0,.6931472,5.567428,0,0,0,1,0,0,52.3,9.612453,.6931472,4.608339,1 +11,6,0,1,2,628652,0,14948.8,55.42026,0,12,1,0,64.21792,0,0,0,64.21792,0,0,0,0,0,2,66.5,10.3,0,52.3,0,261.76,0,0,.6931472,5.567428,0,0,0,1,0,0,52.3,9.612453,.6931472,4.162282,1 +11,6,0,1,3,628652,0,14948.8,56.42026,0,12,1,25.25952,42.53633,0,0,0,67.79585,0,0,0,2,0,2,66.5,10.3,0,52.3,0,261.76,0,0,.6931472,5.567428,0,0,0,1,0,0,52.3,9.612453,.6931472,4.216501,1 +11,6,0,1,1,628654,0,14948.8,50.26968,1,12,1,56.70758,25.37452,35.12484,0,0,117.2069,0,0,0,8,0,2,53.2,20.7,0,54.5,0,261.76,0,0,.6931472,5.567428,0,0,0,1,0,0,54.5,9.612453,.6931472,4.763941,1 +11,6,0,1,2,628654,0,14948.8,51.26968,1,12,1,42.52088,61.98937,0,0,0,104.5103,0,0,0,8,0,2,53.2,20.7,0,54.5,0,261.76,0,0,.6931472,5.567428,0,0,0,1,0,0,54.5,9.612453,.6931472,4.649285,1 +11,6,0,1,3,628654,0,14948.8,52.26968,1,12,1,41.17647,106.0657,0,0,0,147.2422,0,0,0,7,0,2,53.2,20.7,0,54.5,0,261.76,0,0,.6931472,5.567428,0,0,0,1,0,0,54.5,9.612453,.6931472,4.992079,1 +13,6,0,1,1,628655,0,12001.02,46.84463,1,9,1,37.02145,62.34329,11.42196,0,671.4346,782.2213,1,0,0,2,0,2,62.8,37.9,1,45.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,45.5,9.392831,.6931472,6.662138,1 +13,6,0,1,2,628655,0,12001.02,47.84463,1,9,1,35.88969,139.0555,49.67133,0,0,224.6165,0,0,0,2,0,2,62.8,37.9,1,45.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,45.5,9.392831,.6931472,5.414395,1 +13,6,0,1,3,628655,0,12001.02,48.84463,1,9,1,100.1715,107.825,31.45798,0,927.6158,1167.07,2,0,0,5,0,2,62.8,37.9,1,45.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,1,0,45.5,9.392831,.6931472,7.062252,1 +13,6,0,1,1,628656,0,12001.02,53.24572,0,8,1,16.82793,28.27093,5.111485,0,284.3921,334.6024,1,0,0,1,0,2,89.4,24.1,1,43.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,43.2,9.392831,.6931472,5.812943,1 +13,6,0,1,2,628656,0,12001.02,54.24572,0,8,1,217.6048,26.51681,34.37854,0,1269.739,1548.24,2,0,0,9,0,2,89.4,24.1,1,43.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,43.2,9.392831,.6931472,7.344874,1 +13,6,0,1,3,628656,0,12001.02,55.24572,0,8,1,75.47169,41.73585,153.1492,0,0,270.3568,0,0,0,8,0,2,89.4,24.1,1,43.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,43.2,9.392831,.6931472,5.599742,1 +7,6,25,1,1,628674,0,3386.585,38.20671,1,12,1,217.5907,11.85911,0,0,0,229.4498,0,0,0,2,28,3,72.9,13.8,0,68.8,568.8,568.8,0,0,1.098612,6.343529,0,3.258096,7.729823,1,0,0,68.8,8.127872,1.098612,5.435684,1 +7,6,25,1,2,628674,0,3386.585,39.20671,1,12,1,165.0413,3.87847,13.12828,0,0,182.048,0,0,0,1,22,3,72.9,13.8,0,68.8,568.8,568.8,0,0,1.098612,6.343529,0,3.258096,7.729823,1,0,0,68.8,8.127872,1.098612,5.20427,1 +7,6,25,1,3,628674,0,3386.585,40.20671,1,12,1,194.5196,2.655616,0,0,0,197.1752,0,0,0,0,23,3,72.9,13.8,0,68.8,568.8,568.8,0,0,1.098612,6.343529,0,3.258096,7.729823,1,0,0,68.8,8.127872,1.098612,5.284093,1 +7,6,25,1,1,628675,0,3386.585,14.5024,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,100,10.57626,0,85.2,568.8,568.8,1,0,1.098612,6.343529,0,3.258096,7.729823,1,0,0,85.2,8.127872,1.098612,,0 +7,6,25,1,2,628675,0,3386.585,15.5024,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,100,10.57626,0,85.2,568.8,568.8,1,0,1.098612,6.343529,0,3.258096,7.729823,1,0,0,85.2,8.127872,1.098612,,0 +7,6,25,1,3,628675,0,3386.585,16.5024,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,100,10.57626,0,85.2,568.8,568.8,1,0,1.098612,6.343529,0,3.258096,7.729823,1,0,0,85.2,8.127872,1.098612,,0 +7,6,25,1,1,628676,0,3386.585,17.38809,1,12,1,25.8441,8.274281,0,0,0,34.11838,0,0,0,4,0,3,82.1,3.4,0,88.6,568.8,568.8,1,1,1.098612,6.343529,0,3.258096,7.729823,1,0,0,88.6,8.127872,1.098612,3.529836,1 +7,6,25,1,2,628676,0,3386.585,18.38809,1,12,1,146.2866,7.929482,0,0,0,154.216,0,0,0,2,17,3,82.1,3.4,0,88.6,568.8,568.8,0,0,1.098612,6.343529,0,3.258096,7.729823,1,0,0,88.6,8.127872,1.098612,5.038354,1 +7,6,25,1,3,628676,0,3386.585,19.38809,1,12,1,70.70365,14.44858,0,0,0,85.15223,0,0,0,4,5,3,82.1,3.4,0,88.6,568.8,568.8,0,0,1.098612,6.343529,0,3.258096,7.729823,1,0,0,88.6,8.127872,1.098612,4.44444,1 +11,6,0,1,1,628761,0,8062.468,54.42026,0,14,1,8.463818,0,29.62336,0,0,38.08718,0,0,0,0,1,2,94.7,6.9,0,81.8,0,192.48,0,0,.6931472,5.259992,0,0,0,0,0,0,81.8,8.995099,.6931472,3.639878,1 +11,6,0,1,2,628761,0,8062.468,55.42026,0,14,1,29.61276,11.959,0,0,0,41.57175,0,0,0,3,0,2,94.7,6.9,0,81.8,0,192.48,0,0,.6931472,5.259992,0,0,0,0,0,0,81.8,8.995099,.6931472,3.727421,1 +11,6,0,1,3,628761,0,8062.468,56.42026,0,14,1,3.460208,103.8062,0,0,0,107.2664,0,0,0,2,0,2,94.7,6.9,0,81.8,0,192.48,0,0,.6931472,5.259992,0,0,0,0,0,0,81.8,8.995099,.6931472,4.675316,1 +11,6,0,1,1,628762,0,8062.468,57.92471,1,13,1,13.9653,26.34363,31.73932,0,0,72.04824,0,0,0,1,1,2,90.4,10.3,0,80.7,0,192.48,0,0,.6931472,5.259992,0,0,0,1,0,0,80.7,8.995099,.6931472,4.277336,1 +11,6,0,1,2,628762,0,8062.468,58.92471,1,13,1,89.59757,60.83903,0,0,0,150.4366,0,0,0,8,0,2,90.4,10.3,0,80.7,0,192.48,0,0,.6931472,5.259992,0,0,0,1,0,0,80.7,8.995099,.6931472,5.013542,1 +11,6,0,1,3,628762,0,8062.468,59.92471,1,13,1,41.52249,183.564,0,0,1247.059,1472.145,1,0,0,5,0,2,90.4,10.3,0,80.7,0,192.48,0,0,.6931472,5.259992,0,0,0,1,0,0,80.7,8.995099,.6931472,7.294476,1 +11,6,0,0,1,628810,1,6735.316,18.9514,1,11,1,4.955401,0,0,0,0,4.955401,0,0,0,1,0,4,55.3,3.4,0,55.7,0,152.88,0,0,1.386294,5.029653,0,0,0,0,1,0,55.7,8.815269,1.386294,1.600478,1 +11,6,0,0,2,628810,1,6735.316,19.9514,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,55.3,3.4,0,55.7,0,152.88,0,0,1.386294,5.029653,0,0,0,0,1,0,55.7,8.815269,1.386294,,0 +11,6,0,0,3,628810,1,6735.316,20.9514,1,11,1,7.151872,0,0,0,0,7.151872,0,0,0,1,0,4,55.3,3.4,0,55.7,0,152.88,0,0,1.386294,5.029653,0,0,0,0,1,0,55.7,8.815269,1.386294,1.967374,1 +11,6,0,0,4,628810,1,6735.316,21.9514,1,11,1,21.53381,1.64337,0,0,0,23.17718,1,1,0,2,0,3,55.3,3.4,0,55.7,0,152.88,0,0,1.098612,5.029653,0,0,0,0,1,0,55.7,8.815269,1.098612,3.143168,1 +11,6,0,0,5,628810,1,6735.316,22.9514,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,55.3,3.4,0,55.7,0,152.88,0,0,1.386294,5.029653,0,0,0,0,1,0,55.7,8.815269,1.386294,,0 +11,6,0,0,1,628811,1,6735.316,56.27926,1,7,1,4.955401,4.122894,0,0,0,9.078296,0,0,0,1,0,4,51.1,10.3,1,43.2,0,152.88,0,0,1.386294,5.029653,0,0,0,0,0,1,43.2,8.815269,1.386294,2.205886,1 +11,6,0,0,2,628811,1,6735.316,57.27926,1,7,1,211.5649,2.868288,0,0,459.385,673.8182,1,0,0,15,0,4,51.1,10.3,1,43.2,0,152.88,0,0,1.386294,5.029653,0,0,0,0,0,1,43.2,8.815269,1.386294,6.51296,1 +11,6,0,0,3,628811,1,6735.316,58.27926,1,7,1,120.7404,21.45562,0,0,0,142.196,0,0,0,2,0,4,51.1,10.3,1,43.2,0,152.88,0,0,1.386294,5.029653,0,0,0,0,0,1,43.2,8.815269,1.386294,4.957207,1 +11,6,0,0,4,628811,1,6735.316,59.27926,1,7,1,8.311296,0,0,0,0,8.311296,0,0,0,1,0,3,51.1,10.3,1,43.2,0,152.88,0,0,1.098612,5.029653,0,0,0,0,0,1,43.2,8.815269,1.098612,2.117615,1 +11,6,0,0,5,628811,1,6735.316,60.27926,1,7,1,13.72213,18.97084,0,0,0,32.69297,0,0,0,2,0,4,51.1,10.3,1,43.2,0,152.88,0,0,1.386294,5.029653,0,0,0,0,0,1,43.2,8.815269,1.386294,3.48716,1 +11,6,0,0,1,628812,1,6735.316,58.60369,0,1.5,1,0,0,0,0,0,0,0,0,0,0,0,4,58.5,13.8,0,51.2,0,152.88,0,0,1.386294,5.029653,0,0,0,0,0,1,51.2,8.815269,1.386294,,0 +11,6,0,0,2,628812,1,6735.316,59.60369,0,1.5,1,6.883892,0,0,0,0,6.883892,0,0,0,1,0,4,58.5,13.8,0,51.2,0,152.88,0,0,1.386294,5.029653,0,0,0,0,0,1,51.2,8.815269,1.386294,1.929184,1 +11,6,0,0,3,628812,1,6735.316,60.60369,0,1.5,1,0,0,0,0,0,0,0,0,0,0,0,4,58.5,13.8,0,51.2,0,152.88,0,0,1.386294,5.029653,0,0,0,0,0,1,51.2,8.815269,1.386294,,0 +11,6,0,0,4,628812,1,6735.316,61.60369,0,1.5,1,0,0,0,0,0,0,0,0,0,0,0,3,58.5,13.8,0,51.2,0,152.88,0,0,1.098612,5.029653,0,0,0,0,0,1,51.2,8.815269,1.098612,,0 +11,6,0,0,5,628812,1,6735.316,62.60369,0,1.5,1,0,0,0,0,0,0,0,0,0,0,0,4,58.5,13.8,0,51.2,0,152.88,0,0,1.386294,5.029653,0,0,0,0,0,1,51.2,8.815269,1.386294,,0 +13,6,0,0,1,628817,0,9209.934,30.91855,1,13,1,84.13967,30.0589,0,0,0,114.1986,0,0,0,6,0,3,50,24.1,1,36.4,450,869.36,0,0,1.098612,6.767757,1,4.564348,6.160541,0,1,0,36.4,9.128146,1.098612,4.737939,1 +13,6,0,0,2,628817,0,9209.934,31.91855,1,13,1,133.3585,83.55119,0,0,280.5062,497.416,1,0,0,22,0,3,50,24.1,1,36.4,450,869.36,0,0,1.098612,6.767757,1,4.564348,6.160541,0,1,0,36.4,9.128146,1.098612,6.209426,1 +13,6,0,0,3,628817,0,9209.934,32.91855,1,13,1,363.4648,89.5506,0,0,1151.76,1604.775,1,0,0,13,0,3,50,24.1,1,36.4,450,869.36,0,0,1.098612,6.767757,1,4.564348,6.160541,0,1,0,36.4,9.128146,1.098612,7.380739,1 +13,6,0,0,1,628818,0,9209.934,33.54141,0,14,1,31.55238,11.0854,35.33866,0,0,77.97644,0,0,0,2,0,3,84.6,0,0,77.3,450,869.36,0,0,1.098612,6.767757,1,4.564348,6.160541,0,0,0,77.3,9.128146,1.098612,4.356407,1 +13,6,0,0,2,628818,0,9209.934,34.54141,0,14,1,0,0,0,0,0,0,0,0,0,0,0,3,84.6,0,0,77.3,450,869.36,0,0,1.098612,6.767757,1,4.564348,6.160541,0,0,0,77.3,9.128146,1.098612,,0 +13,6,0,0,3,628818,0,9209.934,35.54141,0,14,1,0,4.06518,0,0,0,4.06518,0,0,0,0,0,3,84.6,0,0,77.3,450,869.36,0,0,1.098612,6.767757,1,4.564348,6.160541,0,0,0,77.3,9.128146,1.098612,1.402458,1 +13,6,0,0,1,628819,0,9209.934,11.98357,0,13,1,15.14514,0,0,0,0,15.14514,0,0,0,2,0,3,86.7,10.57626,0,88.9,450,869.36,1,0,1.098612,6.767757,1,4.564348,6.160541,0,0,0,88.9,9.128146,1.098612,2.71768,1 +13,6,0,0,2,628819,0,9209.934,12.98357,0,13,1,44.95655,0,0,0,0,44.95655,0,0,0,4,0,3,86.7,10.57626,0,88.9,450,869.36,1,0,1.098612,6.767757,1,4.564348,6.160541,0,0,0,88.9,9.128146,1.098612,3.805696,1 +13,6,0,0,3,628819,0,9209.934,13.98357,0,13,1,5.145798,2.288165,0,0,0,7.433962,0,0,0,1,0,3,86.7,10.57626,0,88.9,450,869.36,1,0,1.098612,6.767757,1,4.564348,6.160541,0,0,0,88.9,9.128146,1.098612,2.006059,1 +11,6,0,1,1,628833,0,10121.86,41.06776,1,12,1,71.09606,0,0,0,0,71.09606,0,0,0,0,14,3,81.9,20.7,1,83,0,192.48,0,0,1.098612,5.259992,0,0,0,1,0,0,83,9.222552,1.098612,4.264032,1 +11,6,0,1,2,628833,0,10121.86,42.06776,1,12,1,141.6097,6.613515,24.29765,0,0,172.5209,0,0,0,3,17,3,81.9,20.7,1,83,0,192.48,0,0,1.098612,5.259992,0,0,0,1,0,0,83,9.222552,1.098612,5.150518,1 +11,6,0,1,3,628833,0,10121.86,43.06776,1,12,1,31.14187,4.086505,0,0,0,35.22837,0,0,0,0,4,3,81.9,20.7,1,83,0,192.48,0,0,1.098612,5.259992,0,0,0,1,0,0,83,9.222552,1.098612,3.561852,1 +11,6,0,1,1,628834,0,10121.86,14.14647,1,12,1,102.8354,0,26.66102,0,0,129.4964,0,0,0,1,10,3,71.3,6.9,0,63.6,0,192.48,1,1,1.098612,5.259992,0,0,0,0,0,0,63.6,9.222552,1.098612,4.863653,1 +11,6,0,1,2,628834,0,10121.86,15.14647,1,12,1,25.05695,0,0,0,0,25.05695,0,0,0,0,5,3,71.3,6.9,0,63.6,0,192.48,1,1,1.098612,5.259992,0,0,0,0,0,0,63.6,9.222552,1.098612,3.221151,1 +11,6,0,1,3,628834,0,10121.86,16.14647,1,12,1,13.84083,0,13.84083,0,0,27.68166,0,0,0,1,0,3,71.3,6.9,0,63.6,0,192.48,1,1,1.098612,5.259992,0,0,0,0,0,0,63.6,9.222552,1.098612,3.32077,1 +11,6,0,1,1,628835,0,10121.86,46.07803,0,6,1,126.9573,36.2463,36.39441,0,0,199.598,0,0,0,6,15,3,60.6,20.7,1,42,0,192.48,0,0,1.098612,5.259992,0,0,0,1,0,0,42,9.222552,1.098612,5.296305,1 +11,6,0,1,2,628835,0,10121.86,47.07803,0,6,1,107.4412,30.36826,0,0,0,137.8094,0,0,0,4,2,3,60.6,20.7,1,42,0,192.48,0,0,1.098612,5.259992,0,0,0,1,0,0,42,9.222552,1.098612,4.925872,1 +11,6,0,1,3,628835,0,10121.86,48.07803,0,6,1,243.5986,41.0692,55.23529,0,0,339.9031,0,0,0,3,15,3,60.6,20.7,1,42,0,192.48,0,0,1.098612,5.259992,0,0,0,1,0,0,42,9.222552,1.098612,5.82866,1 +11,6,0,1,1,628836,0,3125.96,22.10267,1,12,1,19.88997,0,27.50741,0,0,47.39738,0,0,0,2,0,1,92,6.9,0,81.8,0,0,0,0,0,0,0,0,0,0,0,0,81.8,8.047816,0,3.858567,1 +11,6,0,1,2,628836,0,3125.96,23.10267,1,12,1,10.63022,3.18527,0,0,0,13.81549,0,0,0,2,0,1,92,6.9,0,81.8,0,0,0,0,0,0,0,0,0,0,0,0,81.8,8.047816,0,2.62579,1 +11,6,0,1,3,628836,0,3125.96,24.10267,1,12,1,31.48789,5.290658,0,0,0,36.77855,0,0,0,3,0,1,92,6.9,0,81.8,0,0,0,0,0,0,0,0,0,0,0,0,81.8,8.047816,0,3.604915,1 +17,6,25,0,1,628837,0,11835.64,20.30664,1,12,1,44.59402,23.41186,36.18006,0,0,104.186,0,0,0,3,0,2,77.40034,10.57626,.1442925,,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,70.68995,9.378955,.6931472,4.646177,1 +17,6,25,0,2,628837,0,11835.64,21.30664,1,12,1,65.73479,27.01927,0,0,0,92.75406,0,0,0,8,0,2,77.40034,10.57626,.1442925,,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,70.68995,9.378955,.6931472,4.529952,1 +17,6,25,0,3,628837,0,11835.64,22.30664,1,12,1,274.4425,46.76158,0,0,0,321.2041,0,0,0,2,23,2,77.40034,10.57626,.1442925,,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,70.68995,9.378955,.6931472,5.772077,1 +11,6,0,1,1,628848,0,15649.26,13.49487,1,12,1,5.835765,0,0,0,0,5.835765,0,0,0,1,0,3,88.3,10.57626,0,100,0,192.48,1,1,1.098612,5.259992,0,0,0,1,0,0,100,9.658242,1.098612,1.764005,1 +11,6,0,1,2,628848,0,15649.26,14.49487,1,12,1,13.12828,0,0,0,0,13.12828,0,0,0,2,0,3,88.3,10.57626,0,100,0,192.48,1,1,1.098612,5.259992,0,0,0,1,0,0,100,9.658242,1.098612,2.574769,1 +11,6,0,1,3,628848,0,15649.26,15.49487,1,12,1,21.31258,2.537212,0,0,0,23.8498,0,0,0,3,0,3,88.3,10.57626,0,100,0,192.48,1,1,1.098612,5.259992,0,0,0,1,0,0,100,9.658242,1.098612,3.171776,1 +11,6,0,1,1,628850,0,15649.26,17.34976,0,12,1,5.002084,0,0,0,0,5.002084,0,0,0,1,0,3,80.9,3.4,0,62.5,0,192.48,1,0,1.098612,5.259992,0,0,0,1,0,0,62.5,9.658242,1.098612,1.609855,1 +11,6,0,1,2,628850,0,15649.26,18.34976,0,12,1,6.751688,0,0,0,0,6.751688,0,0,0,1,0,3,80.9,3.4,0,62.5,0,192.48,0,0,1.098612,5.259992,0,0,0,1,0,0,62.5,9.658242,1.098612,1.909793,1 +11,6,0,1,3,628850,0,15649.26,19.34976,0,12,1,6.08931,10.57172,0,0,0,16.66103,0,0,0,1,0,3,80.9,3.4,0,62.5,0,192.48,0,0,1.098612,5.259992,0,0,0,1,0,0,62.5,9.658242,1.098612,2.813072,1 +11,6,0,1,1,628853,0,15649.26,44.01917,1,12,1,12.08837,0,0,0,0,12.08837,0,0,0,1,0,3,71.8,3.4,0,90.9,0,192.48,0,0,1.098612,5.259992,0,0,0,1,0,0,90.9,9.658242,1.098612,2.492244,1 +11,6,0,1,2,628853,0,15649.26,45.01917,1,12,1,57.38935,34.70367,0,0,2930.983,3023.076,3,0,0,4,0,3,71.8,3.4,0,90.9,0,192.48,0,0,1.098612,5.259992,0,0,0,1,0,0,90.9,9.658242,1.098612,8.01403,1 +11,6,0,1,3,628853,0,15649.26,46.01917,1,12,1,19.28281,27.0636,0,0,0,46.34641,0,0,0,2,0,3,71.8,3.4,0,90.9,0,192.48,0,0,1.098612,5.259992,0,0,0,1,0,0,90.9,9.658242,1.098612,3.836144,1 +13,6,0,0,1,628854,1,8773.682,28.44901,1,13,1,109.1832,43.90182,32.16251,0,0,185.2476,0,0,0,4,4,2,69.1,10.3,0,54.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,54.5,9.079626,.6931472,5.221693,1 +13,6,0,0,2,628854,1,8773.682,29.44901,1,13,1,5.694761,2.38041,0,0,0,8.075171,0,0,0,1,0,2,69.1,10.3,0,54.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,54.5,9.079626,.6931472,2.088794,1 +13,6,0,0,3,628854,1,8773.682,30.44901,1,13,1,109.3426,9,28.5917,0,1488.159,1635.093,2,0,0,6,0,2,69.1,10.3,0,54.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,54.5,9.079626,.6931472,7.399455,1 +13,6,0,0,1,628855,1,8773.682,31.57016,0,17,1,2.539145,0,0,0,0,2.539145,0,0,0,0,0,2,79.8,0,0,77.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,77.3,9.079626,.6931472,.9318275,1 +13,6,0,0,2,628855,1,8773.682,32.57016,0,17,1,0,2.961276,0,0,0,2.961276,0,0,0,0,0,2,79.8,0,0,77.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,77.3,9.079626,.6931472,1.08562,1 +13,6,0,0,3,628855,1,8773.682,33.57016,0,17,1,37.71626,7.470588,28.5917,0,0,73.77855,0,0,0,1,0,2,79.8,0,0,77.3,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,77.3,9.079626,.6931472,4.301068,1 +17,6,25,1,1,628911,1,4195.601,8.22998,1,12,1,4.955401,0,0,0,0,4.955401,0,0,0,0,1,3,56.7,10.57626,0,70.4,182,182,1,1,1.098612,5.204007,0,3.258096,6.590301,0,0,0,70.4,8.342031,1.098612,1.600478,1 +17,6,25,1,2,628911,1,4195.601,9.22998,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,56.7,10.57626,0,70.4,182,182,1,1,1.098612,5.204007,0,3.258096,6.590301,0,0,0,70.4,8.342031,1.098612,,0 +17,6,25,1,3,628911,1,4195.601,10.22998,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,56.7,10.57626,0,70.4,182,182,1,1,1.098612,5.204007,0,3.258096,6.590301,0,0,0,70.4,8.342031,1.098612,,0 +17,6,25,1,4,628911,1,4195.601,11.22998,1,12,1,12.08916,2.002267,0,0,0,14.09142,0,0,0,0,0,3,56.7,10.57626,0,70.4,182,182,1,1,1.098612,5.204007,0,3.258096,6.590301,0,0,0,70.4,8.342031,1.098612,2.645566,1 +17,6,25,1,5,628911,1,4195.601,12.22998,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,56.7,10.57626,0,70.4,182,182,1,1,1.098612,5.204007,0,3.258096,6.590301,0,0,0,70.4,8.342031,1.098612,,0 +17,6,25,1,1,628912,1,4195.601,25.41821,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,58.5,10.3,0,50,182,182,0,0,1.098612,5.204007,0,3.258096,6.590301,0,0,0,50,8.342031,1.098612,,0 +17,6,25,1,2,628912,1,4195.601,26.41821,1,12,1,9.178522,1.835704,33.50161,0,0,44.51583,0,0,0,0,1,3,58.5,10.3,0,50,182,182,0,0,1.098612,5.204007,0,3.258096,6.590301,0,0,0,50,8.342031,1.098612,3.795845,1 +17,6,25,1,3,628912,1,4195.601,27.41821,1,12,1,10.09676,0,0,0,0,10.09676,0,0,0,0,0,3,58.5,10.3,0,50,182,182,0,0,1.098612,5.204007,0,3.258096,6.590301,0,0,0,50,8.342031,1.098612,2.312215,1 +17,6,25,1,4,628912,1,4195.601,28.41821,1,12,1,5.289006,6.135247,0,0,0,11.42425,0,0,0,1,0,3,58.5,10.3,0,50,182,182,0,0,1.098612,5.204007,0,3.258096,6.590301,0,0,0,50,8.342031,1.098612,2.435739,1 +17,6,25,1,5,628912,1,4195.601,29.41821,1,12,1,20.24014,0,29.15952,0,0,49.39966,0,0,0,2,1,3,58.5,10.3,0,50,182,182,0,0,1.098612,5.204007,0,3.258096,6.590301,0,0,0,50,8.342031,1.098612,3.899944,1 +17,6,25,1,1,628913,1,4195.601,5.801506,1,12,1,21.80377,4.088206,0,0,0,25.89197,0,0,0,2,1,3,68.3,10.57626,0,81.5,182,182,1,1,1.098612,5.204007,0,3.258096,6.590301,0,0,0,81.5,8.342031,1.098612,3.253933,1 +17,6,25,1,2,628913,1,4195.601,6.801506,1,12,1,21.56953,7.154658,0,0,0,28.72419,0,0,0,2,0,3,68.3,10.57626,0,81.5,182,182,1,1,1.098612,5.204007,0,3.258096,6.590301,0,0,0,81.5,8.342031,1.098612,3.357739,1 +17,6,25,1,3,628913,1,4195.601,7.801506,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,68.3,10.57626,0,81.5,182,182,1,1,1.098612,5.204007,0,3.258096,6.590301,0,0,0,81.5,8.342031,1.098612,,0 +17,6,25,1,4,628913,1,4195.601,8.801506,1,12,1,35.88969,14.03098,0,0,0,49.92067,0,0,0,5,0,3,68.3,10.57626,0,81.5,182,182,1,1,1.098612,5.204007,0,3.258096,6.590301,0,0,0,81.5,8.342031,1.098612,3.910435,1 +17,6,25,1,5,628913,1,4195.601,9.801506,1,12,1,64.83705,0,0,0,0,64.83705,0,0,0,3,0,3,68.3,10.57626,0,81.5,182,182,1,1,1.098612,5.204007,0,3.258096,6.590301,0,0,0,81.5,8.342031,1.098612,4.171877,1 +13,6,0,0,1,628945,0,6907.322,8.550308,1,10,1,30.89293,10.15658,0,0,332.2048,373.2543,1,0,0,5,0,4,81.7,10.57626,.1442925,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.840482,1.386294,5.92226,1 +13,6,0,0,2,628945,0,6907.322,9.550308,1,10,1,20.50114,1.461655,0,0,0,21.96279,0,0,0,4,0,4,81.7,10.57626,.1442925,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.840482,1.386294,3.08935,1 +13,6,0,0,3,628945,0,6907.322,10.55031,1,10,1,24.56747,3.460208,0,0,345.3287,373.3564,1,0,0,3,0,4,81.7,10.57626,.1442925,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.840482,1.386294,5.922534,1 +13,6,0,0,1,628946,0,6907.322,27.30185,1,10,1,121.879,13.12738,22.85231,0,0,157.8587,0,0,0,3,1,4,70.2,20.7,0,58,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,58,8.840482,1.386294,5.0617,1 +13,6,0,0,2,628946,0,6907.322,28.30185,1,10,1,16.32498,4.688686,0,0,0,21.01367,0,0,0,1,0,4,70.2,20.7,0,58,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,58,8.840482,1.386294,3.045173,1 +13,6,0,0,3,628946,0,6907.322,29.30185,1,10,1,6.920415,0,0,0,0,6.920415,0,0,0,1,0,4,70.2,20.7,0,58,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,58,8.840482,1.386294,1.934476,1 +13,6,0,0,1,628947,0,6907.322,29.17454,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.8,6.9,0,81.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.8,8.840482,1.386294,,0 +13,6,0,0,2,628947,0,6907.322,30.17454,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.8,6.9,0,81.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.8,8.840482,1.386294,,0 +13,6,0,0,3,628947,0,6907.322,31.17454,0,12,1,228.7197,0,28.3737,0,1122.958,1380.052,2,0,0,4,0,4,88.8,6.9,0,81.8,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.8,8.840482,1.386294,7.229877,1 +13,6,0,1,1,629079,1,1756.272,6.16564,1,9,1,40.20313,4.316547,0,0,0,44.51968,0,0,0,2,0,4,70,10.57626,.1442925,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,7.471518,1.386294,3.795931,1 +13,6,0,1,2,629079,1,1756.272,7.16564,1,9,1,35.30752,4.350797,0,0,0,39.65831,0,0,0,4,0,4,70,10.57626,.1442925,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,7.471518,1.386294,3.680301,1 +13,6,0,1,3,629079,1,1756.272,8.16564,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,70,10.57626,.1442925,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,7.471518,1.386294,,0 +13,6,0,1,1,629080,1,1756.272,7.60575,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,80,10.57626,0,37,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,37,7.471518,1.386294,,0 +13,6,0,1,2,629080,1,1756.272,8.605749,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,80,10.57626,0,37,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,37,7.471518,1.386294,,0 +13,6,0,1,3,629080,1,1756.272,9.605749,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,80,10.57626,0,37,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,37,7.471518,1.386294,,0 +13,6,0,1,1,629081,1,1756.272,42.70226,1,9,1,36.8176,3.23741,35.97122,0,0,76.02624,0,0,0,2,1,4,70.7,37.9,1,47.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,47.5,7.471518,1.386294,4.331079,1 +13,6,0,1,2,629081,1,1756.272,43.70226,1,9,1,17.08428,1.526196,0,0,0,18.61048,0,0,0,4,0,4,70.7,37.9,1,47.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,47.5,7.471518,1.386294,2.923725,1 +13,6,0,1,3,629081,1,1756.272,44.70226,1,9,1,37.02422,0,0,0,0,37.02422,0,0,0,0,0,4,70.7,37.9,1,47.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,47.5,7.471518,1.386294,3.611572,1 +13,6,0,1,1,629096,0,7438.3,32.65709,0,12,1,239.526,6.982649,0,0,0,246.5087,0,0,0,2,12,6,70.7,13.8,0,68.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,68.2,8.914532,1.791759,5.507397,1 +13,6,0,1,2,629096,0,7438.3,33.65709,0,12,1,0,1.898254,0,0,0,1.898254,0,0,0,0,0,6,70.7,13.8,0,68.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,68.2,8.914532,1.791759,.6409343,1 +13,6,0,1,3,629096,0,7438.3,34.65709,0,12,1,0,1.051903,0,0,0,1.051903,0,0,0,0,0,6,70.7,13.8,0,68.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,68.2,8.914532,1.791759,.050601,1 +13,6,0,1,1,629097,0,7438.3,33.31964,1,9,1,26.66102,34.89632,0,0,426.9996,488.5569,1,0,0,1,0,6,58,13.8,0,68.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,68.2,8.914532,1.791759,6.191456,1 +13,6,0,1,2,629097,0,7438.3,34.31964,1,9,1,11.38952,22.11465,0,0,0,33.50418,0,0,0,2,0,6,58,13.8,0,68.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,68.2,8.914532,1.791759,3.51167,1 +13,6,0,1,3,629097,0,7438.3,35.31964,1,9,1,60.55363,9.231833,0,0,484.7751,554.5605,1,0,0,2,0,6,58,13.8,0,68.2,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,68.2,8.914532,1.791759,6.318176,1 +13,6,0,1,1,629098,0,7438.3,12.98289,1,9,1,43.16547,0,0,0,0,43.16547,0,0,0,2,0,6,85,10.57626,0,88.9,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.914532,1.791759,3.765041,1 +13,6,0,1,2,629098,0,7438.3,13.98289,1,9,1,0,2.84738,0,0,0,2.84738,0,0,0,0,0,6,85,10.57626,0,88.9,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.914532,1.791759,1.046399,1 +13,6,0,1,3,629098,0,7438.3,14.98289,1,9,1,5.882353,0,0,0,0,5.882353,0,0,0,1,0,6,85,10.57626,0,88.9,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.914532,1.791759,1.771957,1 +13,6,0,1,1,629099,0,7438.3,14.10541,1,9,1,12.69573,2.221752,0,0,0,14.91748,0,0,0,1,0,6,83.3,10.57626,0,96.3,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.914532,1.791759,2.702533,1 +13,6,0,1,2,629099,0,7438.3,15.10541,1,9,1,9.870919,13.85725,0,0,0,23.72817,0,0,0,2,0,6,83.3,10.57626,0,96.3,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.914532,1.791759,3.166663,1 +13,6,0,1,3,629099,0,7438.3,16.10541,1,9,1,24.22145,1.903114,0,0,420.0692,446.1938,1,0,0,2,0,6,83.3,10.57626,0,96.3,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.914532,1.791759,6.100753,1 +13,6,0,1,1,629100,0,7438.3,8.188911,1,9,1,11.84934,13.54211,0,0,0,25.39145,0,0,0,1,0,6,85,10.57626,0,88.9,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.914532,1.791759,3.234412,1 +13,6,0,1,2,629100,0,7438.3,9.188911,1,9,1,0,2.84738,0,0,0,2.84738,0,0,0,0,0,6,85,10.57626,0,88.9,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.914532,1.791759,1.046399,1 +13,6,0,1,3,629100,0,7438.3,10.18891,1,9,1,0,0,0,0,0,0,0,0,0,0,0,6,85,10.57626,0,88.9,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,88.9,8.914532,1.791759,,0 +16,6,95,1,1,629125,1,2132.104,36.24093,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,84.6,6.9,0,65.9,356.7,0,0,0,0,0,0,4.564348,5.928188,1,0,0,65.9,7.665334,0,,0 +16,6,95,1,2,629125,1,2132.104,37.24093,1,12,1,2.671756,2.328244,0,0,1621.374,1626.374,2,1,0,0,0,1,84.6,6.9,0,65.9,356.7,0,0,0,0,0,0,4.564348,5.928188,1,0,0,65.9,7.665334,0,7.394108,1 +16,6,95,1,3,629125,1,2132.104,38.24093,1,12,1,0,0,0,0,1233.449,1233.449,1,0,0,0,0,1,84.6,6.9,0,65.9,356.7,0,0,0,0,0,0,4.564348,5.928188,1,0,0,65.9,7.665334,0,7.11757,1 +15,6,95,1,1,629142,1,4487.39,24.23545,1,9,1,0,0,0,0,0,0,0,0,0,0,0,7,77.1,3.4,0,77.3,820,820,0,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,77.3,8.409249,1.94591,,0 +15,6,95,1,2,629142,1,4487.39,25.23545,1,9,1,0,0,0,0,0,0,0,0,0,0,0,7,77.1,3.4,0,77.3,820,820,0,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,77.3,8.409249,1.94591,,0 +15,6,95,1,3,629142,1,4487.39,26.23545,1,9,1,0,0,0,0,0,0,0,0,0,0,0,7,77.1,3.4,0,77.3,820,820,0,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,77.3,8.409249,1.94591,,0 +15,6,95,1,1,629143,1,4487.39,3.876797,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,77.8,820,820,1,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,77.8,8.409249,1.94591,,0 +15,6,95,1,2,629143,1,4487.39,4.876797,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,77.8,820,820,1,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,77.8,8.409249,1.94591,,0 +15,6,95,1,3,629143,1,4487.39,5.876797,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,77.8,820,820,1,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,77.8,8.409249,1.94591,,0 +15,6,95,1,1,629144,1,4487.39,2.819986,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,77.8,820,820,1,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,77.8,8.409249,1.94591,,0 +15,6,95,1,2,629144,1,4487.39,3.819986,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,77.8,820,820,1,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,77.8,8.409249,1.94591,,0 +15,6,95,1,3,629144,1,4487.39,4.819986,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,77.8,820,820,1,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,77.8,8.409249,1.94591,,0 +15,6,95,1,1,629145,1,4487.39,26.00685,0,10,1,0,3.990025,0,0,0,3.990025,0,0,0,0,0,7,80.9,13.8,0,75,820,820,0,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,75,8.409249,1.94591,1.383798,1 +15,6,95,1,2,629145,1,4487.39,27.00685,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,80.9,13.8,0,75,820,820,0,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,75,8.409249,1.94591,,0 +15,6,95,1,3,629145,1,4487.39,28.00685,0,10,1,0,0,0,0,0,0,0,0,0,0,0,7,80.9,13.8,0,75,820,820,0,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,75,8.409249,1.94591,,0 +15,6,95,1,1,629146,1,4487.39,5.639973,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,89.1,10.57626,0,74.1,820,820,1,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,74.1,8.409249,1.94591,,0 +15,6,95,1,2,629146,1,4487.39,6.639973,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,89.1,10.57626,0,74.1,820,820,1,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,74.1,8.409249,1.94591,,0 +15,6,95,1,3,629146,1,4487.39,7.639973,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,89.1,10.57626,0,74.1,820,820,1,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,74.1,8.409249,1.94591,,0 +15,6,95,1,1,629147,1,4487.39,6.554415,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,89.1,10.57626,0,74.1,820,820,1,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,74.1,8.409249,1.94591,,0 +15,6,95,1,2,629147,1,4487.39,7.554415,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,89.1,10.57626,0,74.1,820,820,1,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,74.1,8.409249,1.94591,,0 +15,6,95,1,3,629147,1,4487.39,8.554415,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,89.1,10.57626,0,74.1,820,820,1,0,1.94591,6.709304,0,4.564348,6.760598,1,0,0,74.1,8.409249,1.94591,,0 +15,6,95,1,1,629149,1,1798.771,25.56331,1,12,1,25.81464,0,0,0,0,25.81464,1,1,0,2,0,3,79.8,10.3,0,55.7,80.9,80.9,0,0,1.098612,4.393214,0,4.564348,4.444507,0,1,0,55.7,7.495415,1.098612,3.250942,1 +15,6,95,1,2,629149,1,1798.771,26.56331,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,10.3,0,55.7,80.9,80.9,0,0,1.386294,4.393214,0,4.564348,4.444507,0,1,0,55.7,7.495415,1.386294,,0 +15,6,95,1,3,629149,1,1798.771,27.56331,1,12,1,21.10727,0,0,0,0,21.10727,0,0,0,0,0,4,79.8,10.3,0,55.7,80.9,80.9,0,0,1.386294,4.393214,0,4.564348,4.444507,0,1,0,55.7,7.495415,1.386294,3.049617,1 +15,6,95,1,1,629150,1,1798.771,5.467488,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,91.7,10.57626,0,70.4,80.9,80.9,1,1,1.098612,4.393214,0,4.564348,4.444507,0,1,0,70.4,7.495415,1.098612,,0 +15,6,95,1,2,629150,1,1798.771,6.467488,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,91.7,10.57626,0,70.4,80.9,80.9,1,1,1.386294,4.393214,0,4.564348,4.444507,0,1,0,70.4,7.495415,1.386294,,0 +15,6,95,1,3,629150,1,1798.771,7.467488,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,91.7,10.57626,0,70.4,80.9,80.9,1,1,1.386294,4.393214,0,4.564348,4.444507,0,1,0,70.4,7.495415,1.386294,,0 +15,6,95,1,1,629151,1,1798.771,4.314853,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,70.4,80.9,80.9,1,1,1.098612,4.393214,0,4.564348,4.444507,0,0,0,70.4,7.495415,1.098612,,0 +15,6,95,1,2,629151,1,1798.771,5.314853,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,70.4,80.9,80.9,1,1,1.386294,4.393214,0,4.564348,4.444507,0,0,0,70.4,7.495415,1.386294,,0 +15,6,95,1,3,629151,1,1798.771,6.314853,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,70.4,80.9,80.9,1,1,1.386294,4.393214,0,4.564348,4.444507,0,0,0,70.4,7.495415,1.386294,,0 +10,6,50,0,1,629174,1,6735.316,41.84258,1,7,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,.1442925,,1000,0,0,0,.6931472,0,0,3.931826,7.600903,0,0,0,70.68995,8.815269,.6931472,,0 +10,6,50,0,2,629174,1,6735.316,42.84258,1,7,1,119.2103,28.94837,37.20577,0,895.2164,1080.581,1,0,0,14,0,2,77.40034,10.57626,.1442925,,1000,0,0,0,.6931472,0,0,3.931826,7.600903,0,0,0,70.68995,8.815269,.6931472,6.985254,1 +10,6,50,0,3,629174,1,6735.316,43.84258,1,7,1,82.35294,13.78893,0,0,0,96.14187,0,0,0,9,0,1,77.40034,10.57626,.1442925,,1000,0,0,0,0,0,0,3.931826,7.600903,0,0,0,70.68995,8.815269,0,4.565825,1 +10,6,50,0,1,629175,1,6735.316,19.17864,0,8,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,.1442925,,1000,0,0,0,.6931472,0,0,3.931826,7.600903,0,0,0,70.68995,8.815269,.6931472,,0 +10,6,50,0,2,629175,1,6735.316,20.17864,0,8,1,37.96507,2.505695,0,0,0,40.47077,0,0,0,2,0,2,77.40034,10.57626,.1442925,,1000,0,0,0,.6931472,0,0,3.931826,7.600903,0,0,0,70.68995,8.815269,.6931472,3.70058,1 +11,6,0,0,1,629176,0,7813.108,21.07324,1,11,1,170.5459,45.44646,0,0,193.3982,409.3906,1,0,0,13,0,2,58.5,3.4,0,51.1,0,0,0,0,.6931472,0,0,0,0,1,0,0,51.1,8.963686,.6931472,6.01467,1 +11,6,0,0,2,629176,0,7813.108,22.07324,1,11,1,698.1777,108.6484,0,0,0,806.8261,0,0,0,18,63,2,58.5,3.4,0,51.1,0,0,0,0,.6931472,0,0,0,0,1,0,0,51.1,8.963686,.6931472,6.693108,1 +11,6,0,0,3,629176,0,7813.108,23.07324,1,11,1,371.6263,86.31142,0,0,600.346,1058.284,1,0,0,16,29,2,58.5,3.4,0,51.1,0,0,0,0,.6931472,0,0,0,0,1,0,0,51.1,8.963686,.6931472,6.964404,1 +11,6,0,0,1,629177,0,7813.108,22.48323,0,11,1,34.27846,12.24291,0,0,0,46.52137,0,0,0,2,0,2,64.9,6.9,0,80.7,0,0,0,0,.6931472,0,0,0,0,1,0,0,80.7,8.963686,.6931472,3.839912,1 +11,6,0,0,2,629177,0,7813.108,23.48323,0,11,1,45.55809,6.719818,0,0,0,52.2779,0,0,0,2,0,2,64.9,6.9,0,80.7,0,0,0,0,.6931472,0,0,0,0,1,0,0,80.7,8.963686,.6931472,3.956574,1 +11,6,0,0,3,629177,0,7813.108,24.48323,0,11,1,323.5294,15.70934,0,0,0,339.2388,0,0,0,7,27,2,64.9,6.9,0,80.7,0,0,0,0,.6931472,0,0,0,0,1,0,0,80.7,8.963686,.6931472,5.826704,1 +11,6,0,0,1,629207,0,2275.073,57.54963,0,7,1,0,0,0,0,0,0,0,0,0,0,0,1,89.4,3.4,0,59.1,0,0,0,0,0,0,0,0,0,1,0,0,59.1,7.730207,0,,0 +11,6,0,0,2,629207,0,2275.073,58.54963,0,7,1,0,0,0,0,0,0,0,0,0,0,0,1,89.4,3.4,0,59.1,0,0,0,0,0,0,0,0,0,1,0,0,59.1,7.730207,0,,0 +11,6,0,0,3,629207,0,2275.073,59.54963,0,7,1,29.77456,0,0,0,0,29.77456,0,0,0,2,0,1,89.4,3.4,0,59.1,0,0,0,0,0,0,0,0,0,1,0,0,59.1,7.730207,0,3.393655,1 +11,6,0,0,4,629207,0,2275.073,60.54963,0,7,1,3.816794,0,0,0,0,3.816794,0,0,0,0,0,1,89.4,3.4,0,59.1,0,0,0,0,0,0,0,0,0,1,0,0,59.1,7.730207,0,1.339411,1 +11,6,0,0,5,629207,0,2275.073,61.54963,0,7,1,15.33101,0,34.01742,0,0,49.34843,0,0,0,1,0,1,89.4,3.4,0,59.1,0,0,0,0,0,0,0,0,0,1,0,0,59.1,7.730207,0,3.898906,1 +15,6,95,1,1,629226,1,1446.334,47.32923,1,6,1,23.94015,18.22444,21.94514,0,0,64.10973,0,0,0,4,0,2,60.6,24.1,1,55.7,197.1,197.1,0,0,.6931472,5.283711,0,4.564348,5.335004,0,0,1,55.7,7.277479,.6931472,4.160596,1 +15,6,95,1,2,629226,1,1446.334,48.32923,1,6,1,58.09129,68.39558,0,0,0,126.4869,0,0,0,7,0,2,60.6,24.1,1,55.7,197.1,197.1,0,0,.6931472,5.283711,0,4.564348,5.335004,0,0,1,55.7,7.277479,.6931472,4.840138,1 +15,6,95,1,3,629226,1,1446.334,49.32923,1,6,1,56.70758,37.44393,0,0,0,94.1515,0,0,0,6,0,1,60.6,24.1,1,55.7,197.1,197.1,0,0,0,5.283711,0,4.564348,5.335004,0,0,1,55.7,7.277479,0,4.544905,1 +15,6,95,1,4,629226,1,1446.334,50.32923,1,6,1,48.97494,67.34624,29.61276,0,0,145.9339,0,0,0,4,0,1,60.6,24.1,1,55.7,197.1,197.1,0,0,0,5.283711,0,4.564348,5.335004,0,0,1,55.7,7.277479,0,4.983154,1 +15,6,95,1,5,629226,1,1446.334,51.32923,1,6,1,149.827,80.29412,21.45329,0,0,251.5744,0,0,0,7,10,1,60.6,24.1,1,55.7,197.1,197.1,0,0,0,5.283711,0,4.564348,5.335004,0,0,1,55.7,7.277479,0,5.527739,1 +15,6,95,1,1,629227,1,1446.334,22.37098,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,72.3,20.7,0,56.8,197.1,197.1,0,0,.6931472,5.283711,0,4.564348,5.335004,0,0,1,56.8,7.277479,.6931472,,0 +15,6,95,1,2,629227,1,1446.334,23.37098,1,12,1,10.14292,15.16828,0,0,0,25.3112,0,0,0,2,0,2,72.3,20.7,0,56.8,197.1,197.1,0,0,.6931472,5.283711,0,4.564348,5.335004,0,0,1,56.8,7.277479,.6931472,3.231247,1 +11,6,0,1,1,629231,0,6757.771,31.50171,0,12,1,8.977556,1.526185,0,0,0,10.50374,0,0,0,1,0,1,42.6,17.2,1,38.6,0,0,0,0,0,0,0,0,0,0,1,0,38.6,8.818597,0,2.351731,1 +11,6,0,1,2,629231,0,6757.771,32.50171,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,42.6,17.2,1,38.6,0,0,0,0,0,0,0,0,0,0,1,0,38.6,8.818597,0,,0 +11,6,0,1,3,629231,0,6757.771,33.50171,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,42.6,17.2,1,38.6,0,0,0,0,0,0,0,0,0,0,1,0,38.6,8.818597,0,,0 +11,6,0,1,4,629231,0,6757.771,34.50171,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,42.6,17.2,1,38.6,0,0,0,0,0,0,0,0,0,0,1,0,38.6,8.818597,0,,0 +11,6,0,1,5,629231,0,6757.771,35.50171,0,12,1,8.304499,0,21.45329,0,0,29.75779,0,0,0,1,0,1,42.6,17.2,1,38.6,0,0,0,0,0,0,0,0,0,0,1,0,38.6,8.818597,0,3.393091,1 +11,6,0,1,1,629234,1,5576.037,27.50171,1,16,1,58.40034,31.18493,0,0,0,89.58527,0,0,0,6,0,1,25,24.1,0,68.2,0,0,0,0,0,0,0,0,0,1,0,0,68.2,8.626413,0,4.495191,1 +11,6,0,1,2,629234,1,5576.037,28.50171,1,16,1,63.85725,42.12984,0,0,0,105.9871,0,0,0,4,0,1,25,24.1,0,68.2,0,0,0,0,0,0,0,0,0,1,0,0,68.2,8.626413,0,4.663317,1 +11,6,0,1,3,629234,1,5576.037,29.50171,1,16,1,182.0069,50.3045,0,0,411.2803,643.5917,1,0,0,6,0,1,25,24.1,0,68.2,0,0,0,0,0,0,0,0,0,1,0,0,68.2,8.626413,0,6.467064,1 +18,6,25,1,1,629235,0,6070.661,8.621492,1,8,1,0,4.020313,0,0,0,4.020313,0,0,0,0,0,7,83.3,10.57626,0,70.4,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,1,0,0,70.4,8.711388,1.94591,1.39136,1 +18,6,25,1,2,629235,0,6070.661,9.621492,1,8,1,0,2.471526,0,0,0,2.471526,0,0,0,0,0,7,83.3,10.57626,0,70.4,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,1,0,0,70.4,8.711388,1.94591,.9048358,1 +18,6,25,1,3,629235,0,6070.661,10.62149,1,8,1,0,0,0,0,0,0,0,0,0,0,0,7,83.3,10.57626,0,70.4,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,1,0,0,70.4,8.711388,1.94591,,0 +18,6,25,1,1,629236,0,6070.661,13.06229,1,8,1,12.69573,0,0,0,3811.257,3823.953,1,0,0,0,0,7,90,10.57626,0,51.9,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,0,1,0,51.9,8.711388,1.94591,8.24904,1 +18,6,25,1,2,629236,0,6070.661,14.06229,1,8,1,0,2.471526,0,0,0,2.471526,0,0,0,0,0,7,90,10.57626,0,51.9,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,0,1,0,51.9,8.711388,1.94591,.9048358,1 +18,6,25,1,3,629236,0,6070.661,15.06229,1,8,1,0,0,0,0,0,0,0,0,0,0,0,7,90,10.57626,0,51.9,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,0,1,0,51.9,8.711388,1.94591,,0 +18,6,25,1,1,629237,0,6070.661,14.89665,0,8,1,0,4.020313,0,0,0,4.020313,0,0,0,0,0,7,76.1,6.9,0,81.8,750,750,1,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,81.8,8.711388,1.94591,1.39136,1 +18,6,25,1,2,629237,0,6070.661,15.89665,0,8,1,0,2.471526,0,0,0,2.471526,0,0,0,0,0,7,76.1,6.9,0,81.8,750,750,1,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,81.8,8.711388,1.94591,.9048358,1 +18,6,25,1,3,629237,0,6070.661,16.89665,0,8,1,0,0,0,0,0,0,0,0,0,0,0,7,76.1,6.9,0,81.8,750,750,1,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,81.8,8.711388,1.94591,,0 +18,6,25,1,1,629238,0,6070.661,43.23614,0,4,1,106.6441,14.38849,0,0,0,121.0326,0,0,0,1,0,7,85.6,13.8,0,60.7,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,60.7,8.711388,1.94591,4.79606,1 +18,6,25,1,2,629238,0,6070.661,44.23614,0,4,1,52.77145,10.59226,0,0,0,63.3637,0,0,0,2,0,7,85.6,13.8,0,60.7,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,60.7,8.711388,1.94591,4.148891,1 +18,6,25,1,3,629238,0,6070.661,45.23614,0,4,1,117.6471,4.186851,42.43253,0,0,164.2664,0,0,0,4,1,7,85.6,13.8,0,60.7,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,60.7,8.711388,1.94591,5.10149,1 +18,6,25,1,1,629239,0,6070.661,5.982204,0,8,1,14.81168,4.020313,0,0,0,18.83199,0,0,0,1,0,7,83.3,10.57626,.1442925,63,750,750,1,0,1.94591,6.620073,0,3.258096,8.006368,1,0,0,63,8.711388,1.94591,2.935557,1 +18,6,25,1,2,629239,0,6070.661,6.982204,0,8,1,21.64009,2.471526,30.37206,0,0,54.48368,0,0,0,2,0,7,83.3,10.57626,.1442925,63,750,750,1,0,1.94591,6.620073,0,3.258096,8.006368,1,0,0,63,8.711388,1.94591,3.997901,1 +18,6,25,1,3,629239,0,6070.661,7.982204,0,8,1,24.22145,0,13.84083,0,0,38.06228,0,0,0,1,1,7,83.3,10.57626,.1442925,63,750,750,1,0,1.94591,6.620073,0,3.258096,8.006368,1,0,0,63,8.711388,1.94591,3.639224,1 +18,6,25,1,1,629240,0,6070.661,42.29158,1,8,1,4.231909,11.25688,0,0,0,15.48879,0,0,0,1,0,7,79.8,31,0,59.2,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,59.2,8.711388,1.94591,2.740116,1 +18,6,25,1,2,629240,0,6070.661,43.29158,1,8,1,146.3553,6.473045,0,0,0,152.8284,0,0,0,8,0,7,79.8,31,0,59.2,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,59.2,8.711388,1.94591,5.029316,1 +18,6,25,1,3,629240,0,6070.661,44.29158,1,8,1,46.19377,4.32526,32.87197,0,0,83.39101,0,0,0,4,1,7,79.8,31,0,59.2,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,0,1,0,59.2,8.711388,1.94591,4.423541,1 +18,6,25,1,1,629241,0,6070.661,17.08693,1,8,1,0,4.020313,0,0,0,4.020313,0,0,0,0,0,7,73.9,10.3,0,70.2,750,750,1,1,1.94591,6.620073,0,3.258096,8.006368,1,0,0,70.2,8.711388,1.94591,1.39136,1 +18,6,25,1,2,629241,0,6070.661,18.08693,1,8,1,46.31739,15.05695,0,0,0,61.37434,0,0,0,4,0,7,73.9,10.3,0,70.2,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,1,0,0,70.2,8.711388,1.94591,4.116992,1 +18,6,25,1,3,629241,0,6070.661,19.08693,1,8,1,38.23529,7.214533,0,0,0,45.44983,0,0,0,5,0,7,73.9,10.3,0,70.2,750,750,0,0,1.94591,6.620073,0,3.258096,8.006368,1,0,0,70.2,8.711388,1.94591,3.816609,1 +16,6,95,1,1,629274,0,9686.124,28.65161,0,18,1,0,0,0,0,0,0,0,0,0,0,0,2,71.3,3.4,1,72.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,72.7,9.178553,.6931472,,0 +16,6,95,1,2,629274,0,9686.124,29.65161,0,18,1,0,0,0,0,0,0,0,0,0,0,0,2,71.3,3.4,1,72.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,72.7,9.178553,.6931472,,0 +16,6,95,1,3,629274,0,9686.124,30.65161,0,18,1,5.488851,0,0,0,0,5.488851,0,0,0,1,0,2,71.3,3.4,1,72.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,72.7,9.178553,.6931472,1.702719,1 +13,6,0,1,1,629322,1,24177.68,17.63724,1,8,1,6.347863,0,0,0,0,6.347863,0,0,0,1,0,3,45.7,6.9,0,45.5,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,45.5,10.09323,1.098612,1.848118,1 +13,6,0,1,2,629322,1,24177.68,18.63724,1,8,1,34.16856,0,0,0,0,34.16856,0,0,0,2,0,3,45.7,6.9,0,45.5,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,45.5,10.09323,1.098612,3.531306,1 +13,6,0,1,3,629322,1,24177.68,19.63724,1,8,1,0,2.252595,0,0,0,2.252595,0,0,0,0,0,3,45.7,6.9,0,45.5,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,45.5,10.09323,1.098612,.8120829,1 +13,6,0,1,1,629323,1,24177.68,52.0438,0,8,1,71.73085,38.87431,33.85527,0,895.895,1040.355,1,0,0,5,2,3,89.4,6.9,0,76.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,76.1,10.09323,1.098612,6.947318,1 +13,6,0,1,2,629323,1,24177.68,53.0438,0,8,1,11.38952,9.483675,18.98254,0,0,39.85573,0,0,0,0,1,3,89.4,6.9,0,76.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,76.1,10.09323,1.098612,3.685266,1 +13,6,0,1,3,629323,1,24177.68,54.0438,0,8,1,12.11073,1.885813,32.87197,0,0,46.86851,0,0,0,0,1,3,89.4,6.9,0,76.1,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,76.1,10.09323,1.098612,3.847346,1 +13,6,0,1,1,629325,1,24177.68,50.97604,1,8,1,155.7342,33.66483,46.97419,0,0,236.3733,0,0,0,4,7,3,66,13.8,1,50,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,50,10.09323,1.098612,5.465412,1 +13,6,0,1,2,629325,1,24177.68,51.97604,1,8,1,194.7608,51.6287,0,0,0,246.3895,0,0,0,18,0,3,66,13.8,1,50,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,50,10.09323,1.098612,5.506914,1 +13,6,0,1,3,629325,1,24177.68,52.97604,1,8,1,96.19377,33.70242,42.43253,0,0,172.3287,0,0,0,6,1,3,66,13.8,1,50,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,1,0,50,10.09323,1.098612,5.149404,1 +11,6,0,1,1,629326,.5112414,13244.75,31.32923,1,13,1,42.91123,4.228018,2.949095,0,0,50.08835,0,0,0,3,0,4,61.2,10.3,0,81.8,0,0,0,0,1.386294,0,0,0,0,0,0,0,81.8,9.491432,1.386294,3.913788,1 +11,6,0,1,2,629326,.5112414,13244.75,32.32923,1,13,1,20.77824,5.417454,0,292.7843,0,26.19569,0,0,14,3,0,4,61.2,10.3,0,81.8,0,0,0,0,1.386294,0,0,0,0,0,0,0,81.8,9.491432,1.386294,3.265595,1 +11,6,0,1,3,629326,.5112414,13244.75,33.32923,1,13,1,122.47,1.73928,24.91595,259.8628,412.0069,561.1321,1,0,14,4,0,4,61.2,10.3,0,81.8,0,0,0,0,1.386294,0,0,0,0,0,0,0,81.8,9.491432,1.386294,6.329957,1 +11,6,0,1,1,629327,0,13244.75,32.24093,0,16,1,68.57383,1.430374,0,0,0,70.0042,0,0,0,3,0,4,80.3,6.9,0,87.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,87.5,9.491432,1.386294,4.248555,1 +11,6,0,1,2,629327,0,13244.75,33.24093,0,16,1,0,0,0,0,0,0,0,0,0,0,0,4,80.3,6.9,0,87.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,87.5,9.491432,1.386294,,0 +11,6,0,1,3,629327,0,13244.75,34.24093,0,16,1,63.80789,3.036021,32.93311,87.47856,0,99.77702,0,0,5,7,0,4,80.3,6.9,0,87.5,0,0,0,0,1.386294,0,0,0,0,0,0,0,87.5,9.491432,1.386294,4.602938,1 +11,6,0,1,1,629328,.5112414,13244.75,8.03833,1,13,1,53.00799,8.969289,0,0,0,61.97728,0,0,0,7,0,4,65,10.57626,0,44.4,0,0,1,1,1.386294,0,0,0,0,0,0,0,44.4,9.491432,1.386294,4.126768,1 +11,6,0,1,2,629328,.5112414,13244.75,9.03833,1,13,1,68.75708,27.33661,0,0,333.9819,430.0756,1,0,0,12,0,4,65,10.57626,0,44.4,0,0,1,1,1.386294,0,0,0,0,0,0,0,44.4,9.491432,1.386294,6.063961,1 +11,6,0,1,3,629328,.5112414,13244.75,10.03833,1,13,1,124.1852,3.948542,0,0,0,128.1338,0,0,1,7,0,4,65,10.57626,0,44.4,0,0,1,1,1.386294,0,0,0,0,0,0,0,44.4,9.491432,1.386294,4.853075,1 +13,6,0,1,1,629329,0,3669.739,13.05407,0,5,1,0,0,0,0,0,0,0,0,0,0,0,5,76.7,10.57626,0,37,450,0,1,0,1.609438,0,1,4.564348,6.160541,0,0,0,37,8.208148,1.609438,,0 +13,6,0,1,2,629329,0,3669.739,14.05407,0,5,1,0,0,0,0,0,0,0,0,0,0,0,5,76.7,10.57626,0,37,450,0,1,0,1.609438,0,1,4.564348,6.160541,0,0,0,37,8.208148,1.609438,,0 +13,6,0,1,3,629329,0,3669.739,15.05407,0,5,1,0,0,0,0,0,0,0,0,0,0,0,5,76.7,10.57626,0,37,450,0,1,0,1.609438,0,1,4.564348,6.160541,0,0,0,37,8.208148,1.609438,,0 +13,6,0,1,1,629330,0,3669.739,26.27515,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,61.7,0,0,67.9,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,1,0,67.9,8.208148,1.609438,,0 +13,6,0,1,2,629330,0,3669.739,27.27515,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,61.7,0,0,67.9,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,1,0,67.9,8.208148,1.609438,,0 +13,6,0,1,3,629330,0,3669.739,28.27515,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,61.7,0,0,67.9,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,1,0,67.9,8.208148,1.609438,,0 +13,6,0,1,1,629332,0,3669.739,3.805613,0,5,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,63,450,0,1,0,1.609438,0,1,4.564348,6.160541,1,0,0,63,8.208148,1.609438,,0 +13,6,0,1,2,629332,0,3669.739,4.805613,0,5,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,63,450,0,1,0,1.609438,0,1,4.564348,6.160541,1,0,0,63,8.208148,1.609438,,0 +13,6,0,1,3,629332,0,3669.739,5.805613,0,5,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,63,450,0,1,0,1.609438,0,1,4.564348,6.160541,1,0,0,63,8.208148,1.609438,,0 +13,6,0,1,1,629333,0,3669.739,14.88569,1,5,1,0,0,0,0,0,0,0,0,0,0,0,5,66.5,13.8,0,56.8,450,0,1,1,1.609438,0,1,4.564348,6.160541,1,0,0,56.8,8.208148,1.609438,,0 +13,6,0,1,2,629333,0,3669.739,15.88569,1,5,1,0,0,0,0,0,0,0,0,0,0,0,5,66.5,13.8,0,56.8,450,0,1,1,1.609438,0,1,4.564348,6.160541,1,0,0,56.8,8.208148,1.609438,,0 +13,6,0,1,3,629333,0,3669.739,16.88569,1,5,1,0,0,0,0,0,0,0,0,0,0,0,5,66.5,13.8,0,56.8,450,0,1,1,1.609438,0,1,4.564348,6.160541,1,0,0,56.8,8.208148,1.609438,,0 +13,6,0,1,1,629334,0,3669.739,60.15058,1,5,1,12.69573,0,40.62632,0,0,53.32205,0,0,0,0,1,5,90.4,3.4,0,61.4,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,0,0,61.4,8.208148,1.609438,3.97635,1 +13,6,0,1,2,629334,0,3669.739,61.15058,1,5,1,0,0,0,0,0,0,0,0,0,0,0,5,90.4,3.4,0,61.4,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,0,0,61.4,8.208148,1.609438,,0 +13,6,0,1,3,629334,0,3669.739,62.15058,1,5,1,0,0,0,0,0,0,0,0,0,0,0,5,90.4,3.4,0,61.4,450,0,0,0,1.609438,0,1,4.564348,6.160541,0,0,0,61.4,8.208148,1.609438,,0 +11,6,0,0,1,629339,0,8513.057,51.25804,1,3,1,432.8986,65.99916,36.18006,0,1098.023,1633.101,2,0,0,19,46,2,71.3,37.9,1,54.5,0,231.48,0,0,.6931472,5.444493,0,0,0,0,1,0,54.5,9.049474,.6931472,7.398236,1 +11,6,0,0,2,629339,0,8513.057,52.25804,1,3,1,333.5852,97.4915,0,0,0,431.0767,0,0,0,15,32,2,71.3,37.9,1,54.5,0,231.48,0,0,.6931472,5.444493,0,0,0,0,1,0,54.5,9.049474,.6931472,6.066286,1 +11,6,0,0,3,629339,0,8513.057,53.25804,1,3,1,410.9777,114.3705,0,0,0,525.3482,0,0,0,17,28,1,71.3,37.9,1,54.5,0,231.48,0,0,0,5.444493,0,0,0,0,1,0,54.5,9.049474,0,6.264061,1 +11,6,0,0,1,629340,0,8513.057,56.22998,0,6,1,310.0547,169.3101,39.54565,0,6631.889,7150.799,1,0,0,28,0,2,78.1,20.7,1,58,0,231.48,0,0,.6931472,5.444493,0,0,0,1,0,0,58,9.049474,.6931472,8.874979,1 +11,6,0,0,2,629340,0,8513.057,57.22998,0,6,1,341.1409,202.9052,29.08953,0,1306.762,1879.898,2,0,0,32,0,2,78.1,20.7,1,58,0,231.48,0,0,.6931472,5.444493,0,0,0,1,0,0,58,9.049474,.6931472,7.538973,1 +11,6,0,1,1,629341,0,10837.69,25.94114,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,86.2,0,0,84.1,0,24,0,0,1.098612,3.178054,0,0,0,0,0,0,84.1,9.290877,1.098612,,0 +11,6,0,1,2,629341,0,10837.69,26.94114,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,86.2,0,0,84.1,0,24,0,0,1.098612,3.178054,0,0,0,0,0,0,84.1,9.290877,1.098612,,0 +11,6,0,1,3,629341,0,10837.69,27.94114,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,86.2,0,0,84.1,0,24,0,0,1.098612,3.178054,0,0,0,0,0,0,84.1,9.290877,1.098612,,0 +11,6,0,1,1,629342,0,10837.69,25.99315,1,12,1,115.1079,42.05671,23.2755,0,0,180.4401,0,0,0,5,1,3,55.9,27.6,1,34.1,0,24,0,0,1.098612,3.178054,0,0,0,1,0,0,34.1,9.290877,1.098612,5.195399,1 +11,6,0,1,2,629342,0,10837.69,26.99315,1,12,1,80.1063,17.51329,0,0,389.5216,487.1412,1,0,0,7,0,3,55.9,27.6,1,34.1,0,24,0,0,1.098612,3.178054,0,0,0,1,0,0,34.1,9.290877,1.098612,6.188554,1 +11,6,0,1,3,629342,0,10837.69,27.99315,1,12,1,63.49481,34.73702,24.91349,0,1021.107,1144.253,2,0,0,6,1,3,55.9,27.6,1,34.1,0,24,0,0,1.098612,3.178054,0,0,0,1,0,0,34.1,9.290877,1.098612,7.042507,1 +17,6,25,1,1,629344,0,0,59.32375,1,7,1,0,0,0,0,0,0,0,0,0,0,0,1,73.9,24.1,1,63.6,252.6,412.2,0,0,0,6.021509,0,3.258096,6.918102,0,1,0,63.6,0,0,,0 +17,6,25,1,2,629344,0,0,60.32375,1,7,1,0,0,0,0,0,0,0,0,0,0,0,1,73.9,24.1,1,63.6,252.6,412.2,0,0,0,6.021509,0,3.258096,6.918102,0,1,0,63.6,0,0,,0 +17,6,25,1,3,629344,0,0,61.32375,1,7,1,0,0,0,0,0,0,0,0,0,0,0,1,73.9,24.1,1,63.6,252.6,412.2,0,0,0,6.021509,0,3.258096,6.918102,0,1,0,63.6,0,0,,0 +10,6,50,0,1,629363,1,2209.421,34.88022,1,7,1,29.02819,0,0,0,0,29.02819,0,0,0,0,0,2,54.3,24.1,0,52.3,315.15,315.15,0,0,.6931472,5.753049,0,3.931826,6.446196,0,1,0,52.3,7.700938,.6931472,3.368267,1 +10,6,50,0,2,629363,1,2209.421,35.88022,1,7,1,5.666792,0,0,0,0,5.666792,0,0,0,1,0,2,54.3,24.1,0,52.3,315.15,315.15,0,0,.6931472,5.753049,0,3.931826,6.446196,0,1,0,52.3,7.700938,.6931472,1.734623,1 +10,6,50,0,3,629363,1,2209.421,36.88022,1,7,1,0,0,0,0,0,0,0,0,0,0,0,1,54.3,24.1,0,52.3,315.15,315.15,0,0,0,5.753049,0,3.931826,6.446196,0,1,0,52.3,7.700938,0,,0 +10,6,50,0,1,629364,1,2209.421,15.55647,1,7,1,0,0,0,0,0,0,0,0,0,0,0,2,59.6,17.2,1,47.7,315.15,315.15,1,1,.6931472,5.753049,0,3.931826,6.446196,1,0,0,47.7,7.700938,.6931472,,0 +10,6,50,0,2,629364,1,2209.421,16.55647,1,7,1,0,0,0,0,0,0,0,0,0,0,0,2,59.6,17.2,1,47.7,315.15,315.15,1,1,.6931472,5.753049,0,3.931826,6.446196,1,0,0,47.7,7.700938,.6931472,,0 +19,6,25,0,1,629385,0,9709.678,31.06366,1,12,1,23.60623,4.771472,0,0,0,28.3777,0,0,0,2,0,4,81.9,13.8,0,92,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,92,9.180982,1.386294,3.345604,1 +19,6,25,0,2,629385,0,9709.678,32.06366,1,12,1,27.3528,6.026889,8.808531,0,0,42.18822,0,0,0,3,0,4,81.9,13.8,0,92,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,92,9.180982,1.386294,3.742141,1 +19,6,25,0,3,629385,0,9709.678,33.06366,1,12,1,22.96895,7.01829,4.147171,0,0,34.13441,0,0,0,2,0,4,81.9,13.8,0,92,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,92,9.180982,1.386294,3.530306,1 +19,6,25,0,4,629385,0,9709.678,34.06366,1,12,1,185.1145,44.08397,0,0,0,229.1985,0,0,0,8,10,4,81.9,13.8,0,92,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,92,9.180982,1.386294,5.434588,1 +19,6,25,0,5,629385,0,9709.678,35.06366,1,12,1,67.24738,9.494774,0,0,0,76.74216,0,0,0,3,0,4,81.9,13.8,0,92,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,92,9.180982,1.386294,4.340451,1 +19,6,25,0,1,629386,0,9709.678,1.130732,0,12,1,13.05876,16.58965,0,0,0,29.64842,0,0,0,3,0,4,77.40034,10.57626,0,88.9,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,88.9,9.180982,1.386294,3.389409,1 +19,6,25,0,2,629386,0,9709.678,2.130732,0,12,1,30.11127,15.87854,0,2.341215,0,45.9898,0,0,1,5,0,4,77.40034,10.57626,0,88.9,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,88.9,9.180982,1.386294,3.82842,1 +19,6,25,0,3,629386,0,9709.678,3.130732,0,12,1,16.58869,6.380264,0,0,0,22.96895,0,0,0,3,0,4,77.40034,10.57626,0,88.9,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,88.9,9.180982,1.386294,3.134143,1 +19,6,25,0,4,629386,0,9709.678,4.130733,0,12,1,46.56488,20.22901,0,0,0,66.79389,0,0,0,7,0,4,77.40034,10.57626,0,88.9,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,88.9,9.180982,1.386294,4.201612,1 +19,6,25,0,5,629386,0,9709.678,5.130733,0,12,1,30.66202,2.351916,0,0,0,33.01394,0,0,0,4,0,4,77.40034,10.57626,0,88.9,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,88.9,9.180982,1.386294,3.49693,1 +19,6,25,0,1,629387,0,9709.678,6.442163,1,12,1,293.8222,22.9784,0,0,0,316.8006,0,0,0,16,0,4,90,10.57626,0,88.9,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,88.9,9.180982,1.386294,5.758273,1 +19,6,25,0,2,629387,0,9709.678,7.442163,1,12,1,37.08855,7.185906,0,0,0,44.27446,0,0,0,5,0,4,90,10.57626,0,88.9,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,88.9,9.180982,1.386294,3.790408,1 +19,6,25,0,3,629387,0,9709.678,8.442163,1,12,1,74.22373,18.92812,0,0,0,93.15185,0,0,0,8,0,4,90,10.57626,0,88.9,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,88.9,9.180982,1.386294,4.534231,1 +19,6,25,0,4,629387,0,9709.678,9.442163,1,12,1,51.9084,12.30916,8.488549,0,0,72.70611,0,0,0,6,0,4,90,10.57626,0,88.9,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,88.9,9.180982,1.386294,4.286426,1 +19,6,25,0,5,629387,0,9709.678,10.44216,1,12,1,68.29269,20.22648,22.10453,0,0,110.6237,0,0,0,7,0,4,90,10.57626,0,88.9,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,1,0,0,88.9,9.180982,1.386294,4.706134,1 +19,6,25,0,1,629388,0,9709.678,31.06913,0,12,1,4.018081,1.25565,0,0,0,5.273732,0,0,0,1,0,4,91,0,0,93.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,93.2,9.180982,1.386294,1.662738,1 +19,6,25,0,2,629388,0,9709.678,32.06913,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,91,0,0,93.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,93.2,9.180982,1.386294,,0 +19,6,25,0,3,629388,0,9709.678,33.06913,0,12,1,0,2.488303,0,0,0,2.488303,0,0,0,0,0,4,91,0,0,93.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,93.2,9.180982,1.386294,.9116009,1 +19,6,25,0,4,629388,0,9709.678,34.06913,0,12,1,7.251908,5.343512,0,0,0,12.59542,0,0,0,1,0,4,91,0,0,93.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,93.2,9.180982,1.386294,2.533333,1 +19,6,25,0,5,629388,0,9709.678,35.06913,0,12,1,19.5122,4.442509,0,0,0,23.9547,0,0,0,2,0,4,91,0,0,93.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,93.2,9.180982,1.386294,3.176165,1 +6,6,25,0,1,629404,0,10442.91,7.671458,0,14,1,0,6.941523,0,0,0,6.941523,0,0,0,0,0,5,93.3,10.57626,0,70.4,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.4,9.253774,1.609438,1.937521,1 +6,6,25,0,2,629404,0,10442.91,8.671458,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,93.3,10.57626,0,70.4,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.4,9.253774,1.609438,,0 +6,6,25,0,3,629404,0,10442.91,9.671458,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,93.3,10.57626,0,70.4,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.4,9.253774,1.609438,,0 +6,6,25,0,1,629405,0,10442.91,38.82546,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,79.8,13.8,0,54.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.253774,1.609438,,0 +6,6,25,0,2,629405,0,10442.91,39.82546,0,14,1,9.444654,4.125425,0,0,0,13.57008,0,0,0,1,0,5,79.8,13.8,0,54.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.253774,1.609438,2.607867,1 +6,6,25,0,3,629405,0,10442.91,40.82546,0,14,1,12.00686,0,0,0,696.0549,708.0618,1,0,0,1,0,5,79.8,13.8,0,54.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,54.5,9.253774,1.609438,6.562531,1 +6,6,25,0,1,629406,0,10442.91,13.87269,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,80,10.57626,0,66.7,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,66.7,9.253774,1.609438,,0 +6,6,25,0,2,629406,0,10442.91,14.87269,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,80,10.57626,0,66.7,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,66.7,9.253774,1.609438,,0 +6,6,25,0,3,629406,0,10442.91,15.87269,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,80,10.57626,0,66.7,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,66.7,9.253774,1.609438,,0 +6,6,25,0,1,629407,0,10442.91,34.28337,1,14,1,53.21834,0,0,0,0,53.21834,0,0,0,6,0,5,74.5,24.1,1,46.6,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,46.6,9.253774,1.609438,3.974403,1 +6,6,25,0,2,629407,0,10442.91,35.28337,1,14,1,40.42312,0,0,0,0,40.42312,0,0,0,3,0,5,74.5,24.1,1,46.6,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,46.6,9.253774,1.609438,3.699402,1 +6,6,25,0,3,629407,0,10442.91,36.28337,1,14,1,15.43739,0,24.01372,0,538.0789,577.53,1,0,0,1,1,5,74.5,24.1,1,46.6,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,46.6,9.253774,1.609438,6.35876,1 +6,6,25,0,1,629408,0,10442.91,9.344285,0,14,1,67.31174,0,0,0,0,67.31174,0,0,0,5,0,5,88.3,10.57626,0,74.1,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,74.1,9.253774,1.609438,4.209335,1 +6,6,25,0,2,629408,0,10442.91,10.34429,0,14,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,10.57626,0,74.1,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,74.1,9.253774,1.609438,,0 +6,6,25,0,3,629408,0,10442.91,11.34429,0,14,1,29.15952,0,0,0,0,29.15952,0,0,0,4,0,5,88.3,10.57626,0,74.1,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,74.1,9.253774,1.609438,3.372782,1 +11,6,0,0,1,629409,0,13102.92,17.34155,1,11,1,0,5.384939,0,0,0,5.384939,0,0,0,0,0,3,81.4,6.9,0,64.8,0,197.4,1,1,1.098612,5.285232,0,0,0,0,0,0,64.8,9.480666,1.098612,1.683606,1 +11,6,0,0,2,629409,0,13102.92,18.34155,1,11,1,6.422365,10.65735,0,0,0,17.07971,0,0,0,1,0,3,81.4,6.9,0,64.8,0,197.4,0,0,1.098612,5.285232,0,0,0,0,0,0,64.8,9.480666,1.098612,2.837891,1 +11,6,0,0,3,629409,0,13102.92,19.34155,1,11,1,79.93139,19.46827,0,0,0,99.39966,0,0,0,2,0,3,81.4,6.9,0,64.8,0,197.4,0,0,1.098612,5.285232,0,0,0,0,0,0,64.8,9.480666,1.098612,4.599149,1 +11,6,0,0,1,629410,0,13102.92,38.66393,1,11,1,14.72444,21.35044,30.29028,0,0,66.36517,0,0,0,1,0,3,84,10.3,0,73.9,0,197.4,0,0,1.098612,5.285232,0,0,0,0,0,0,73.9,9.480666,1.098612,4.195172,1 +11,6,0,0,2,629410,0,13102.92,39.66393,1,11,1,35.88969,33.24518,0,0,0,69.13487,0,0,0,3,0,3,84,10.3,0,73.9,0,197.4,0,0,1.098612,5.285232,0,0,0,0,0,0,73.9,9.480666,1.098612,4.236059,1 +11,6,0,0,3,629410,0,13102.92,40.66393,1,11,1,21.61235,27.01544,33.49228,0,0,82.12007,0,0,0,2,0,3,84,10.3,0,73.9,0,197.4,0,0,1.098612,5.285232,0,0,0,0,0,0,73.9,9.480666,1.098612,4.408183,1 +11,6,0,0,1,629411,0,13102.92,40.73101,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,80.3,10.3,0,90.9,0,197.4,0,0,1.098612,5.285232,0,0,0,0,0,0,90.9,9.480666,1.098612,,0 +11,6,0,0,2,629411,0,13102.92,41.73101,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,80.3,10.3,0,90.9,0,197.4,0,0,1.098612,5.285232,0,0,0,0,0,0,90.9,9.480666,1.098612,,0 +11,6,0,0,3,629411,0,13102.92,42.73101,0,12,1,13.72213,0,39.32418,0,0,53.04631,0,0,0,1,0,3,80.3,10.3,0,90.9,0,197.4,0,0,1.098612,5.285232,0,0,0,0,0,0,90.9,9.480666,1.098612,3.971165,1 +11,6,0,1,1,629412,0,12463.39,56.55305,0,4,1,27.50741,1.438849,39.77994,0,0,68.7262,0,0,0,2,0,3,80.3,17.2,0,79.5,0,144.36,0,0,1.098612,4.97231,0,0,0,1,0,0,79.5,9.430631,1.098612,4.230131,1 +11,6,0,1,2,629412,0,12463.39,57.55305,0,4,1,0,3.849658,0,0,0,3.849658,0,0,0,0,0,3,80.3,17.2,0,79.5,0,144.36,0,0,1.098612,4.97231,0,0,0,1,0,0,79.5,9.430631,1.098612,1.347984,1 +11,6,0,1,3,629412,0,12463.39,58.55305,0,4,1,0,8.965398,0,0,0,8.965398,0,0,0,0,0,3,80.3,17.2,0,79.5,0,144.36,0,0,1.098612,4.97231,0,0,0,1,0,0,79.5,9.430631,1.098612,2.193372,1 +11,6,0,1,1,629414,0,12463.39,11.56194,1,12,1,0,1.6843,0,0,0,1.6843,0,0,0,0,0,3,88.3,10.57626,0,100,0,144.36,1,1,1.098612,4.97231,0,0,0,0,0,0,100,9.430631,1.098612,.5213498,1 +11,6,0,1,2,629414,0,12463.39,12.56194,1,12,1,12.90812,3.974943,0,0,0,16.88307,0,0,0,1,0,3,88.3,10.57626,0,100,0,144.36,1,1,1.098612,4.97231,0,0,0,0,0,0,100,9.430631,1.098612,2.826311,1 +11,6,0,1,3,629414,0,12463.39,13.56194,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,10.57626,0,100,0,144.36,1,1,1.098612,4.97231,0,0,0,0,0,0,100,9.430631,1.098612,,0 +11,6,0,1,1,629415,0,12463.39,48.13689,1,12,1,38.08718,0,39.77994,0,0,77.86712,0,0,0,2,0,3,79.8,31,0,69.3,0,144.36,0,0,1.098612,4.97231,0,0,0,1,0,0,69.3,9.430631,1.098612,4.355004,1 +11,6,0,1,2,629415,0,12463.39,49.13689,1,12,1,73.65224,1.621109,0,0,391.0403,466.3136,1,0,0,2,0,3,79.8,31,0,69.3,0,144.36,0,0,1.098612,4.97231,0,0,0,1,0,0,69.3,9.430631,1.098612,6.144858,1 +11,6,0,1,3,629415,0,12463.39,50.13689,1,12,1,62.62976,6.695502,0,0,0,69.32526,0,0,0,1,0,3,79.8,31,0,69.3,0,144.36,0,0,1.098612,4.97231,0,0,0,1,0,0,69.3,9.430631,1.098612,4.238809,1 +13,6,0,1,1,629424,0,5762.929,7.318275,1,9,1,29.20017,0,0,0,0,29.20017,0,0,0,0,0,4,85,10.57626,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.659374,1.386294,3.374175,1 +13,6,0,1,2,629424,0,5762.929,8.318275,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.659374,1.386294,,0 +13,6,0,1,3,629424,0,5762.929,9.318275,1,9,1,5.536332,0,0,0,0,5.536332,0,0,0,1,0,4,85,10.57626,0,77.8,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,77.8,8.659374,1.386294,1.711332,1 +13,6,0,1,1,629425,0,5762.929,35.66051,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.9,10.3,0,76.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,76.1,8.659374,1.386294,,0 +13,6,0,1,2,629425,0,5762.929,36.66051,0,12,1,0,0,0,0,252.4677,252.4677,1,0,0,0,0,4,81.9,10.3,0,76.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,76.1,8.659374,1.386294,5.531283,1 +13,6,0,1,3,629425,0,5762.929,37.66051,0,12,1,5.190311,0,0,0,271.2803,276.4706,1,0,0,1,0,4,81.9,10.3,0,76.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,76.1,8.659374,1.386294,5.622105,1 +13,6,0,1,1,629426,0,5762.929,12.52293,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,73.3,10.57626,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,81.5,8.659374,1.386294,,0 +13,6,0,1,2,629426,0,5762.929,13.52293,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,73.3,10.57626,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,81.5,8.659374,1.386294,,0 +13,6,0,1,3,629426,0,5762.929,14.52293,1,9,1,29.41176,0,0,0,413.8408,443.2526,1,0,0,2,0,4,73.3,10.57626,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,81.5,8.659374,1.386294,6.09414,1 +13,6,0,1,1,629427,0,5762.929,34.20397,1,9,1,28.35379,0,0,0,568.7685,597.1223,1,0,0,1,0,4,69.1,10.3,0,61.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,61.4,8.659374,1.386294,6.392122,1 +13,6,0,1,2,629427,0,5762.929,35.20397,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,69.1,10.3,0,61.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,61.4,8.659374,1.386294,,0 +13,6,0,1,3,629427,0,5762.929,36.20397,1,9,1,0,0,0,0,0,0,0,0,0,0,0,4,69.1,10.3,0,61.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,61.4,8.659374,1.386294,,0 +11,6,0,0,1,629437,1,293.9068,59.91513,1,5,1,43.33193,30.37442,29.44888,0,0,103.1552,0,0,0,5,0,2,84.6,10.3,0,64.8,0,0,0,0,.6931472,0,0,0,0,0,1,0,64.8,5.686659,.6931472,4.636235,1 +11,6,0,0,2,629437,1,293.9068,60.91513,1,5,1,28.33396,35.47412,0,0,407.2535,471.0616,1,0,0,7,0,2,84.6,10.3,0,64.8,0,0,0,0,.6931472,0,0,0,0,0,1,0,64.8,5.686659,.6931472,6.154989,1 +11,6,0,0,3,629437,1,293.9068,61.91513,1,5,1,45.62607,40.41166,0,0,0,86.03773,0,0,0,13,0,2,84.6,10.3,0,64.8,0,0,0,0,.6931472,0,0,0,0,0,1,0,64.8,5.686659,.6931472,4.454786,1 +11,6,0,0,1,629438,1,293.9068,17.94661,0,5,1,0,0,0,0,0,0,0,0,0,0,0,2,86.2,0,0,67,0,0,1,0,.6931472,0,0,0,0,0,1,0,67,5.686659,.6931472,,0 +11,6,0,0,2,629438,1,293.9068,18.94661,0,5,1,0,0,0,0,0,0,0,0,0,0,0,2,86.2,0,0,67,0,0,0,0,.6931472,0,0,0,0,0,1,0,67,5.686659,.6931472,,0 +11,6,0,0,3,629438,1,293.9068,19.94661,0,5,1,0,0,0,0,0,0,0,0,0,0,0,2,86.2,0,0,67,0,0,0,0,.6931472,0,0,0,0,0,1,0,67,5.686659,.6931472,,0 +16,6,95,1,1,629462,1,6735.316,25.39357,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,78.2,0,0,81.8,1000,263.18,0,0,1.609438,5.572838,0,4.564348,6.959049,1,0,0,81.8,8.815269,1.609438,,0 +16,6,95,1,2,629462,1,6735.316,26.39357,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,78.2,0,0,81.8,1000,263.18,0,0,1.609438,5.572838,0,4.564348,6.959049,1,0,0,81.8,8.815269,1.609438,,0 +16,6,95,1,3,629462,1,6735.316,27.39357,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,78.2,0,0,81.8,1000,263.18,0,0,1.609438,5.572838,0,4.564348,6.959049,1,0,0,81.8,8.815269,1.609438,,0 +16,6,95,1,1,629463,1,6735.316,5.262149,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,10.57626,0,81.5,1000,263.18,1,1,1.609438,5.572838,0,4.564348,6.959049,1,0,0,81.5,8.815269,1.609438,,0 +16,6,95,1,2,629463,1,6735.316,6.262149,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,10.57626,0,81.5,1000,263.18,1,1,1.609438,5.572838,0,4.564348,6.959049,1,0,0,81.5,8.815269,1.609438,,0 +16,6,95,1,3,629463,1,6735.316,7.262149,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,86.7,10.57626,0,81.5,1000,263.18,1,1,1.609438,5.572838,0,4.564348,6.959049,1,0,0,81.5,8.815269,1.609438,,0 +16,6,95,1,1,629464,1,6735.316,22.75428,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,79.8,0,0,69.3,1000,263.18,0,0,1.609438,5.572838,0,4.564348,6.959049,1,0,0,69.3,8.815269,1.609438,,0 +16,6,95,1,2,629464,1,6735.316,23.75428,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,79.8,0,0,69.3,1000,263.18,0,0,1.609438,5.572838,0,4.564348,6.959049,1,0,0,69.3,8.815269,1.609438,,0 +16,6,95,1,3,629464,1,6735.316,24.75428,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,79.8,0,0,69.3,1000,263.18,0,0,1.609438,5.572838,0,4.564348,6.959049,1,0,0,69.3,8.815269,1.609438,,0 +16,6,95,1,1,629465,1,6735.316,3.370294,1,11,1,10.42101,0,0,0,0,10.42101,0,0,0,0,0,5,77.40034,10.57626,0,66.7,1000,263.18,1,1,1.609438,5.572838,0,4.564348,6.959049,0,0,0,66.7,8.815269,1.609438,2.343824,1 +16,6,95,1,2,629465,1,6735.316,4.370294,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,66.7,1000,263.18,1,1,1.609438,5.572838,0,4.564348,6.959049,0,0,0,66.7,8.815269,1.609438,,0 +16,6,95,1,3,629465,1,6735.316,5.370294,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,66.7,1000,263.18,1,1,1.609438,5.572838,0,4.564348,6.959049,0,0,0,66.7,8.815269,1.609438,,0 +11,6,0,1,1,629468,1,7187.404,16.0575,1,5,1,5.07829,0,0,0,0,5.07829,0,0,0,1,0,13,12.2,17.2,1,52.3,0,106.56,1,1,2.564949,4.668708,0,0,0,1,0,0,52.3,8.880224,2.564949,1.624975,1 +11,6,0,1,2,629468,1,7187.404,17.0575,1,5,1,17.84358,8.10934,0,0,0,25.95292,0,0,0,3,0,13,12.2,17.2,1,52.3,0,106.56,1,1,2.564949,4.668708,0,0,0,1,0,0,52.3,8.880224,2.564949,3.256284,1 +11,6,0,1,3,629468,1,7187.404,18.0575,1,5,1,21.79931,6.647059,0,0,0,28.44637,0,0,0,2,0,14,12.2,17.2,1,52.3,0,106.56,0,0,2.639057,4.668708,0,0,0,1,0,0,52.3,8.880224,2.639057,3.348021,1 +11,6,0,1,1,629469,1,7187.404,5.702943,0,5,1,5.07829,1.904359,0,0,0,6.982649,0,0,0,1,0,13,100,10.57626,0,100,0,106.56,1,0,2.564949,4.668708,0,0,0,1,0,0,100,8.880224,2.564949,1.943428,1 +11,6,0,1,2,629469,1,7187.404,6.702943,0,5,1,5.31511,1.905847,0,0,0,7.220957,0,0,0,1,0,13,100,10.57626,0,100,0,106.56,1,0,2.564949,4.668708,0,0,0,1,0,0,100,8.880224,2.564949,1.976987,1 +11,6,0,1,3,629469,1,7187.404,7.702943,0,5,1,25.60554,0,0,0,0,25.60554,0,0,0,2,0,14,100,10.57626,0,100,0,106.56,1,0,2.639057,4.668708,0,0,0,1,0,0,100,8.880224,2.639057,3.242809,1 +11,6,0,1,1,629470,1,7187.404,10.12731,0,5,1,0,0,0,0,0,0,0,0,0,0,0,13,100,10.57626,0,100,0,106.56,1,0,2.564949,4.668708,0,0,0,1,0,0,100,8.880224,2.564949,,0 +11,6,0,1,2,629470,1,7187.404,11.12731,0,5,1,0,1.602126,0,0,0,1.602126,0,0,0,0,0,13,100,10.57626,0,100,0,106.56,1,0,2.564949,4.668708,0,0,0,1,0,0,100,8.880224,2.564949,.4713315,1 +11,6,0,1,3,629470,1,7187.404,12.12731,0,5,1,0,0,0,0,0,0,0,0,0,0,0,14,100,10.57626,0,100,0,106.56,1,0,2.639057,4.668708,0,0,0,1,0,0,100,8.880224,2.639057,,0 +11,6,0,1,1,629471,1,7187.404,14.81177,0,5,1,0,1.37537,0,0,0,1.37537,0,0,0,0,0,13,54.3,13.8,0,50,0,106.56,1,0,2.564949,4.668708,0,0,0,1,0,0,50,8.880224,2.564949,.318723,1 +11,6,0,1,2,629471,1,7187.404,15.81177,0,5,1,9.111617,2.403189,0,0,0,11.51481,0,0,0,1,0,13,54.3,13.8,0,50,0,106.56,1,0,2.564949,4.668708,0,0,0,1,0,0,50,8.880224,2.564949,2.443634,1 +11,6,0,1,3,629471,1,7187.404,16.81177,0,5,1,7.958477,0,0,0,0,7.958477,0,0,0,1,0,14,54.3,13.8,0,50,0,106.56,1,0,2.639057,4.668708,0,0,0,1,0,0,50,8.880224,2.639057,2.074238,1 +11,6,0,1,1,629472,1,7187.404,13.33333,1,5,1,0,0,0,0,0,0,0,0,0,0,0,13,58.3,10.57626,0,74.1,0,106.56,1,1,2.564949,4.668708,0,0,0,1,0,0,74.1,8.880224,2.564949,,0 +11,6,0,1,2,629472,1,7187.404,14.33333,1,5,1,0,0,0,0,0,0,0,0,0,0,0,13,58.3,10.57626,0,74.1,0,106.56,1,1,2.564949,4.668708,0,0,0,1,0,0,74.1,8.880224,2.564949,,0 +11,6,0,1,3,629472,1,7187.404,15.33333,1,5,1,0,0,0,0,0,0,0,0,0,0,0,14,58.3,10.57626,0,74.1,0,106.56,1,1,2.639057,4.668708,0,0,0,1,0,0,74.1,8.880224,2.639057,,0 +11,6,0,1,1,629473,1,7187.404,5.702943,0,5,1,0,0,0,0,0,0,0,0,0,0,0,13,100,10.57626,0,100,0,106.56,1,0,2.564949,4.668708,0,0,0,1,0,0,100,8.880224,2.564949,,0 +11,6,0,1,2,629473,1,7187.404,6.702943,0,5,1,22.01974,6.11997,0,0,0,28.13971,0,0,0,3,0,13,100,10.57626,0,100,0,106.56,1,0,2.564949,4.668708,0,0,0,1,0,0,100,8.880224,2.564949,3.337182,1 +11,6,0,1,3,629473,1,7187.404,7.702943,0,5,1,0,0,0,0,0,0,0,0,0,0,0,14,100,10.57626,0,100,0,106.56,1,0,2.639057,4.668708,0,0,0,1,0,0,100,8.880224,2.639057,,0 +11,6,0,1,1,629474,1,7187.404,37.72758,1,5,1,23.69869,15.18832,0,0,0,38.88701,0,0,0,2,0,13,92,13.8,0,58,0,106.56,0,0,2.564949,4.668708,0,0,0,1,0,0,58,8.880224,2.564949,3.66066,1 +11,6,0,1,2,629474,1,7187.404,38.72758,1,5,1,24.29765,9.510251,0,0,392.1792,425.9871,1,0,0,3,0,13,92,13.8,0,58,0,106.56,0,0,2.564949,4.668708,0,0,0,1,0,0,58,8.880224,2.564949,6.054409,1 +11,6,0,1,3,629474,1,7187.404,39.72758,1,5,1,38.40831,19.79931,0,0,0,58.20761,0,0,0,4,0,14,92,13.8,0,58,0,106.56,0,0,2.639057,4.668708,0,0,0,1,0,0,58,8.880224,2.639057,4.064016,1 +11,6,0,1,1,629475,1,7187.404,7.975359,0,5,1,6.347863,0,0,0,0,6.347863,0,0,0,1,0,13,100,10.57626,0,100,0,106.56,1,0,2.564949,4.668708,0,0,0,1,0,0,100,8.880224,2.564949,1.848118,1 +11,6,0,1,2,629475,1,7187.404,8.975359,0,5,1,4.555809,0,0,0,0,4.555809,0,0,0,1,0,13,100,10.57626,0,100,0,106.56,1,0,2.564949,4.668708,0,0,0,1,0,0,100,8.880224,2.564949,1.516403,1 +11,6,0,1,3,629475,1,7187.404,9.975359,0,5,1,79.23875,0,0,0,0,79.23875,0,0,0,1,0,14,100,10.57626,0,100,0,106.56,1,0,2.639057,4.668708,0,0,0,1,0,0,100,8.880224,2.639057,4.372466,1 +11,6,0,1,1,629476,1,7187.404,3.389459,1,5,1,0,0,0,0,0,0,0,0,0,0,0,13,77.40034,10.57626,0,85.2,0,106.56,1,1,2.564949,4.668708,0,0,0,1,0,0,85.2,8.880224,2.564949,,0 +11,6,0,1,2,629476,1,7187.404,4.389459,1,5,1,6.833713,0,0,0,0,6.833713,0,0,0,1,0,13,77.40034,10.57626,0,85.2,0,106.56,1,1,2.564949,4.668708,0,0,0,1,0,0,85.2,8.880224,2.564949,1.921868,1 +11,6,0,1,3,629476,1,7187.404,5.389459,1,5,1,0,0,0,0,0,0,0,0,0,0,0,14,77.40034,10.57626,0,85.2,0,106.56,1,1,2.639057,4.668708,0,0,0,1,0,0,85.2,8.880224,2.639057,,0 +11,6,0,1,1,629477,1,7187.404,43.18959,0,4,1,7.194244,1.904359,0,0,0,9.098603,0,0,0,1,0,13,88.8,3.4,0,76.1,0,106.56,0,0,2.564949,4.668708,0,0,0,1,0,0,76.1,8.880224,2.564949,2.208121,1 +11,6,0,1,2,629477,1,7187.404,44.18959,0,4,1,6.454062,0,0,0,0,6.454062,0,0,0,1,0,13,88.8,3.4,0,76.1,0,106.56,0,0,2.564949,4.668708,0,0,0,1,0,0,76.1,8.880224,2.564949,1.86471,1 +11,6,0,1,3,629477,1,7187.404,45.18959,0,4,1,0,3.401384,0,0,0,3.401384,0,0,0,0,0,14,88.8,3.4,0,76.1,0,106.56,0,0,2.639057,4.668708,0,0,0,1,0,0,76.1,8.880224,2.639057,1.224182,1 +16,6,95,1,1,629526,1,6143.369,5.741273,0,11,1,8.507018,0,0,0,188.0051,196.5121,1,0,0,1,0,5,75,10.57626,.1442925,81.5,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,81.5,8.723291,1.609438,5.280724,1 +16,6,95,1,2,629526,1,6143.369,6.741273,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,75,10.57626,.1442925,81.5,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,81.5,8.723291,1.609438,,0 +16,6,95,1,3,629526,1,6143.369,7.741273,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,75,10.57626,.1442925,81.5,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,81.5,8.723291,1.609438,,0 +16,6,95,1,1,629527,1,6143.369,45.10062,0,12,1,10.63377,3.29647,0,0,0,13.93024,0,0,0,1,0,5,85.6,0,0,80.7,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,80.7,8.723291,1.609438,2.634062,1 +16,6,95,1,2,629527,1,6143.369,46.10062,0,12,1,20.99237,0,0,0,0,20.99237,0,0,0,1,0,5,85.6,0,0,80.7,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,80.7,8.723291,1.609438,3.044159,1 +16,6,95,1,3,629527,1,6143.369,47.10062,0,12,1,33.10104,0,0,0,0,33.10104,0,0,0,2,0,5,85.6,0,0,80.7,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,80.7,8.723291,1.609438,3.499565,1 +16,6,95,1,1,629528,1,6143.369,13.6783,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,50,10.57626,0,66.7,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,66.7,8.723291,1.609438,,0 +16,6,95,1,2,629528,1,6143.369,14.6783,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,50,10.57626,0,66.7,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,66.7,8.723291,1.609438,,0 +16,6,95,1,3,629528,1,6143.369,15.6783,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,50,10.57626,0,66.7,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,66.7,8.723291,1.609438,,0 +16,6,95,1,1,629529,1,6143.369,4.517454,1,11,1,14.46193,1.701404,0,0,0,16.16333,0,0,0,3,0,5,77.40034,10.57626,0,77.8,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,1,0,0,77.8,8.723291,1.609438,2.782745,1 +16,6,95,1,2,629529,1,6143.369,5.517454,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,77.8,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,1,0,0,77.8,8.723291,1.609438,,0 +16,6,95,1,3,629529,1,6143.369,6.517454,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,77.8,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,1,0,0,77.8,8.723291,1.609438,,0 +16,6,95,1,1,629530,1,6143.369,31.436,1,11,1,86.77158,19.77882,0,0,0,106.5504,0,0,0,4,0,5,84.6,6.9,0,71.4,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,71.4,8.723291,1.609438,4.668618,1 +16,6,95,1,2,629530,1,6143.369,32.436,1,11,1,31.29771,0,0,0,0,31.29771,0,0,0,1,0,5,84.6,6.9,0,71.4,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,71.4,8.723291,1.609438,3.443545,1 +16,6,95,1,3,629530,1,6143.369,33.436,1,11,1,85.36585,0,0,0,0,85.36585,0,0,0,3,0,5,84.6,6.9,0,71.4,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,71.4,8.723291,1.609438,4.446946,1 +7,6,25,1,1,629570,0,4720.821,25.39357,1,16,1,18.95262,56.13466,0,0,0,75.08728,0,0,0,2,1,1,60.6,6.9,0,55.7,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,55.7,8.459949,0,4.318651,1 +7,6,25,1,2,629570,0,4720.821,26.39357,1,16,1,72.61411,110.5302,0,0,0,183.1443,0,0,0,4,0,1,60.6,6.9,0,55.7,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,55.7,8.459949,0,5.210274,1 +7,6,25,1,3,629570,0,4720.821,27.39357,1,16,1,137.3254,51.50656,29.82226,0,0,218.6543,0,0,0,8,2,1,60.6,6.9,0,55.7,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,55.7,8.459949,0,5.387492,1 +7,6,25,1,4,629570,0,4720.821,28.39357,1,16,1,26.1959,7.881549,0,0,0,34.07745,0,0,0,3,0,1,60.6,6.9,0,55.7,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,55.7,8.459949,0,3.528636,1 +7,6,25,1,5,629570,0,4720.821,29.39357,1,16,1,134.7751,12.76125,21.10727,0,0,168.6436,0,0,0,5,0,1,60.6,6.9,0,55.7,750,750,0,0,0,6.620073,0,3.258096,8.006368,1,0,0,55.7,8.459949,0,5.127788,1 +13,6,0,0,1,629576,1,9202.933,36.12594,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,74.5,6.9,0,71.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,71.6,9.127386,1.098612,,0 +13,6,0,0,2,629576,1,9202.933,37.12594,0,8,1,4.589261,18.81597,0,0,0,23.40523,0,0,0,1,0,3,74.5,6.9,0,71.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,71.6,9.127386,1.098612,3.15296,1 +13,6,0,0,3,629576,1,9202.933,38.12594,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,74.5,6.9,0,71.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,71.6,9.127386,1.098612,,0 +13,6,0,0,4,629576,1,9202.933,39.12594,0,8,1,74.80166,4.325652,0,0,0,79.12731,0,0,0,2,0,3,74.5,6.9,0,71.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,71.6,9.127386,1.098612,4.371058,1 +13,6,0,0,5,629576,1,9202.933,40.12594,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,74.5,6.9,0,71.6,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,71.6,9.127386,1.098612,,0 +13,6,0,0,1,629577,1,9202.933,12.90897,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,81.7,10.57626,0,55.6,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,55.6,9.127386,1.098612,,0 +13,6,0,0,2,629577,1,9202.933,13.90897,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,81.7,10.57626,0,55.6,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,55.6,9.127386,1.098612,,0 +13,6,0,0,3,629577,1,9202.933,14.90897,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,81.7,10.57626,0,55.6,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,55.6,9.127386,1.098612,,0 +13,6,0,0,4,629577,1,9202.933,15.90897,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,81.7,10.57626,0,55.6,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,55.6,9.127386,1.098612,,0 +13,6,0,0,5,629577,1,9202.933,16.90897,0,9,1,0,0,0,0,0,0,0,0,0,0,0,3,81.7,10.57626,0,55.6,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,55.6,9.127386,1.098612,,0 +13,6,0,0,1,629578,1,9202.933,34.94045,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,76.6,0,0,69.3,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.127386,1.098612,,0 +13,6,0,0,2,629578,1,9202.933,35.94045,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,76.6,0,0,69.3,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.127386,1.098612,,0 +13,6,0,0,3,629578,1,9202.933,36.94045,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,76.6,0,0,69.3,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.127386,1.098612,,0 +13,6,0,0,4,629578,1,9202.933,37.94045,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,76.6,0,0,69.3,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.127386,1.098612,,0 +13,6,0,0,5,629578,1,9202.933,38.94045,1,9,1,0,0,0,0,0,0,0,0,0,0,0,3,76.6,0,0,69.3,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.127386,1.098612,,0 +17,6,25,1,1,629584,0,11835.64,27.0527,0,12,1,14.72444,0,25.6626,0,0,40.38704,0,0,0,1,0,2,70.7,10.3,1,65.9,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,65.9,9.378955,.6931472,3.698509,1 +17,6,25,1,2,629584,0,11835.64,28.0527,0,12,1,9.066868,3.241405,0,0,0,12.30827,0,0,0,2,0,2,70.7,10.3,1,65.9,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,65.9,9.378955,.6931472,2.510272,1 +17,6,25,1,3,629584,0,11835.64,29.0527,0,12,1,296.741,1.725557,62.43568,0,0,360.9022,0,0,0,2,25,2,70.7,10.3,1,65.9,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,65.9,9.378955,.6931472,5.888607,1 +14,6,95,0,1,629614,0,8616.422,27.24435,1,16,1,293.3199,150.4018,3.139126,0,255.6504,702.5113,1,0,0,10,1,2,76.1,17.2,0,53.4,677.5,667.5,0,0,.6931472,6.50354,0,4.564348,6.569703,1,0,0,53.4,9.061542,.6931472,6.554661,1 +14,6,95,0,2,629614,0,8616.422,28.24435,1,16,1,286.0454,63.64859,0,0,1958.739,2308.433,3,0,0,10,0,2,76.1,17.2,0,53.4,677.5,667.5,0,0,.6931472,6.50354,0,4.564348,6.569703,1,0,0,53.4,9.061542,.6931472,7.744324,1 +14,6,95,0,3,629614,0,8616.422,29.24435,1,16,1,74.43641,12.91365,0,0,0,87.35007,0,0,0,5,0,3,76.1,17.2,0,53.4,677.5,667.5,0,0,1.098612,6.50354,0,4.564348,6.569703,1,0,0,53.4,9.061542,1.098612,4.469924,1 +14,6,95,0,4,629614,0,8616.422,30.24435,1,16,1,71.37405,18.33969,0,0,0,89.71374,0,0,0,4,0,3,76.1,17.2,0,53.4,677.5,667.5,0,0,1.098612,6.50354,0,4.564348,6.569703,1,0,0,53.4,9.061542,1.098612,4.496624,1 +14,6,95,0,5,629614,0,8616.422,31.24435,1,16,1,31.01045,5.195122,0,0,0,36.20557,0,0,0,2,0,3,76.1,17.2,0,53.4,677.5,667.5,0,0,1.098612,6.50354,0,4.564348,6.569703,1,0,0,53.4,9.061542,1.098612,3.589213,1 +14,6,95,0,1,629615,0,8616.422,30.23682,0,16,1,0,0,0,0,0,0,0,0,0,0,0,2,89.9,6.9,0,76.1,677.5,667.5,0,0,.6931472,6.50354,0,4.564348,6.569703,0,0,0,76.1,9.061542,.6931472,,0 +14,6,95,0,2,629615,0,8616.422,31.23682,0,16,1,17.15345,0,0,0,0,17.15345,0,0,0,0,0,2,89.9,6.9,0,76.1,677.5,667.5,0,0,.6931472,6.50354,0,4.564348,6.569703,0,0,0,76.1,9.061542,.6931472,2.8422,1 +14,6,95,0,3,629615,0,8616.422,32.23682,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,89.9,6.9,0,76.1,677.5,667.5,0,0,1.098612,6.50354,0,4.564348,6.569703,0,0,0,76.1,9.061542,1.098612,,0 +14,6,95,0,4,629615,0,8616.422,33.23682,0,16,1,7.633588,6.561069,0,0,0,14.19466,0,0,0,1,0,3,89.9,6.9,0,76.1,677.5,667.5,0,0,1.098612,6.50354,0,4.564348,6.569703,0,0,0,76.1,9.061542,1.098612,2.652866,1 +14,6,95,0,5,629615,0,8616.422,34.23682,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,89.9,6.9,0,76.1,677.5,667.5,0,0,1.098612,6.50354,0,4.564348,6.569703,0,0,0,76.1,9.061542,1.098612,,0 +13,6,0,0,1,629616,0,10029.33,26.45311,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,100,0,0,100,300,349.96,0,0,.6931472,5.857819,1,4.564348,5.755076,0,0,0,100,9.213368,.6931472,,0 +13,6,0,0,2,629616,0,10029.33,27.45311,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,100,0,0,100,300,349.96,0,0,.6931472,5.857819,1,4.564348,5.755076,0,0,0,100,9.213368,.6931472,,0 +13,6,0,0,3,629616,0,10029.33,28.45311,0,13,1,30.84619,0,0,0,0,30.84619,0,0,0,0,0,3,100,0,0,100,300,349.96,0,0,1.098612,5.857819,1,4.564348,5.755076,0,0,0,100,9.213368,1.098612,3.429013,1 +13,6,0,0,4,629616,0,10029.33,29.45311,0,13,1,37.50938,0,0,0,0,37.50938,0,0,0,1,0,4,100,0,0,100,300,349.96,0,0,1.386294,5.857819,1,4.564348,5.755076,0,0,0,100,9.213368,1.386294,3.624591,1 +13,6,0,0,5,629616,0,10029.33,30.45311,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,100,0,0,100,300,349.96,0,0,1.386294,5.857819,1,4.564348,5.755076,0,0,0,100,9.213368,1.386294,,0 +13,6,0,0,1,629617,0,10029.33,24.2601,1,16,1,0,0,0,0,0,0,0,0,0,0,0,2,80.9,13.8,0,84.1,300,349.96,0,0,.6931472,5.857819,1,4.564348,5.755076,0,0,0,84.1,9.213368,.6931472,,0 +13,6,0,0,2,629617,0,10029.33,25.2601,1,16,1,21.42206,12.76208,0,0,507.2926,541.4767,1,0,0,2,0,2,80.9,13.8,0,84.1,300,349.96,0,0,.6931472,5.857819,1,4.564348,5.755076,0,0,0,84.1,9.213368,.6931472,6.2943,1 +13,6,0,0,3,629617,0,10029.33,26.2601,1,16,1,32.51355,12.84702,0,0,563.1513,608.5119,1,0,0,1,0,3,80.9,13.8,0,84.1,300,349.96,0,0,1.098612,5.857819,1,4.564348,5.755076,0,0,0,84.1,9.213368,1.098612,6.411016,1 +13,6,0,0,4,629617,0,10029.33,27.2601,1,16,1,9.752439,0,0,0,0,9.752439,0,0,0,1,0,4,80.9,13.8,0,84.1,300,349.96,0,0,1.386294,5.857819,1,4.564348,5.755076,0,0,0,84.1,9.213368,1.386294,2.277517,1 +13,6,0,0,5,629617,0,10029.33,28.2601,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,80.9,13.8,0,84.1,300,349.96,0,0,1.386294,5.857819,1,4.564348,5.755076,0,0,0,84.1,9.213368,1.386294,,0 +13,6,0,1,1,629650,1,3534.05,23.55373,1,12,1,22.29701,20.39125,0,0,0,42.68826,0,0,0,0,0,4,69.7,10.3,1,36.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,36.4,8.170483,1.386294,3.753924,1 +13,6,0,1,2,629650,1,3534.05,24.55373,1,12,1,43.06762,16.02569,0,0,498.3,557.3932,1,0,0,4,0,4,69.7,10.3,1,36.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,36.4,8.170483,1.386294,6.323271,1 +13,6,0,1,3,629650,1,3534.05,25.55373,1,12,1,125.9005,55.11835,36.92281,0,1187.307,1405.249,2,0,0,7,1,4,69.7,10.3,1,36.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,36.4,8.170483,1.386294,7.24797,1 +13,6,0,1,1,629651,1,3534.05,25.85353,0,12,1,115.2713,2.734539,0,0,0,118.0059,0,0,0,2,0,4,85.6,10.3,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,69.3,8.170483,1.386294,4.770734,1 +13,6,0,1,2,629651,1,3534.05,26.85353,0,12,1,111.4469,19.81111,0,0,0,131.258,0,0,0,3,0,4,85.6,10.3,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,69.3,8.170483,1.386294,4.877165,1 +13,6,0,1,3,629651,1,3534.05,27.85353,0,12,1,26.75815,0,35.33448,0,0,62.09262,0,0,0,1,0,4,85.6,10.3,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,1,0,69.3,8.170483,1.386294,4.128627,1 +13,6,0,1,1,629652,1,3534.05,4.692676,0,12,1,31.55238,2.103492,0,0,0,33.65587,0,0,0,0,0,4,77.40034,10.57626,0,88.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.9,8.170483,1.386294,3.516187,1 +13,6,0,1,2,629652,1,3534.05,5.692676,0,12,1,16.24481,0,0,0,0,16.24481,0,0,0,1,0,4,77.40034,10.57626,0,88.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.9,8.170483,1.386294,2.787773,1 +13,6,0,1,3,629652,1,3534.05,6.692676,0,12,1,28.47341,0,0,0,0,28.47341,0,0,0,2,0,4,77.40034,10.57626,0,88.9,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.9,8.170483,1.386294,3.348971,1 +15,6,95,1,1,629653,1,10112.13,28.44901,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,62.3,13.8,0,48.9,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,48.9,9.22159,.6931472,,0 +15,6,95,1,2,629653,1,10112.13,29.44901,0,12,1,35.68717,5.068337,0,0,0,40.7555,0,0,0,2,0,3,62.3,13.8,0,48.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,48.9,9.22159,1.098612,3.707591,1 +15,6,95,1,3,629653,1,10112.13,30.44901,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,62.3,13.8,0,48.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,48.9,9.22159,1.098612,,0 +15,6,95,1,1,629654,1,10112.13,24.59411,1,12,1,41.04951,21.4854,0,0,497.2493,559.7842,1,0,0,2,0,2,46.3,20.7,0,47.7,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,47.7,9.22159,.6931472,6.327551,1 +15,6,95,1,2,629654,1,10112.13,25.59411,1,12,1,14.42673,0,0,0,0,14.42673,0,0,0,1,0,3,46.3,20.7,0,47.7,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,47.7,9.22159,1.098612,2.669083,1 +15,6,95,1,3,629654,1,10112.13,26.59411,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,46.3,20.7,0,47.7,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,47.7,9.22159,1.098612,,0 +13,6,0,1,1,629667,1,0,4.717317,1,3,1,0,2.052476,0,0,0,2.052476,0,0,0,0,0,6,77.40034,10.57626,1,63,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,1,63,0,1.791759,.7190467,1 +13,6,0,1,2,629667,1,0,5.717317,1,3,1,7.593014,0,0,0,0,7.593014,0,0,0,2,0,6,77.40034,10.57626,1,63,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,1,63,0,1.791759,2.027229,1 +13,6,0,1,3,629667,1,0,6.717317,1,3,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,1,63,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,1,63,0,1.791759,,0 +13,6,0,1,1,629668,1,0,16.55031,1,3,1,0,0,0,0,0,0,0,0,0,0,0,6,60.6,6.9,1,47.7,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,1,0,0,47.7,0,1.791759,,0 +13,6,0,1,2,629668,1,0,17.55031,1,3,1,0,0,0,0,0,0,0,0,0,0,0,6,60.6,6.9,1,47.7,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,1,0,0,47.7,0,1.791759,,0 +13,6,0,1,3,629668,1,0,18.55031,1,3,1,63.3218,6.903114,33.78201,0,0,104.0069,0,0,0,3,1,6,60.6,6.9,1,47.7,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,47.7,0,1.791759,4.644457,1 +13,6,0,1,1,629669,1,0,18.74607,1,8,1,0,0,0,0,0,0,0,0,0,0,0,6,75.5,13.8,0,53.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,1,53.4,0,1.791759,,0 +13,6,0,1,2,629669,1,0,19.74607,1,8,1,0,0,0,0,0,0,0,0,0,0,0,6,75.5,13.8,0,53.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,1,53.4,0,1.791759,,0 +13,6,0,1,3,629669,1,0,20.74607,1,8,1,14.53287,0,0,0,0,14.53287,0,0,0,0,0,6,75.5,13.8,0,53.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,1,53.4,0,1.791759,2.676413,1 +13,6,0,1,1,629670,1,0,25.89186,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,63.8,6.9,0,47.7,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,1,0,47.7,0,1.791759,,0 +13,6,0,1,2,629670,1,0,26.89186,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,63.8,6.9,0,47.7,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,1,0,47.7,0,1.791759,,0 +13,6,0,1,3,629670,1,0,27.89186,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,63.8,6.9,0,47.7,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,1,0,47.7,0,1.791759,,0 +13,6,0,1,1,629671,1,0,47.07734,1,3,1,13.54211,10.57977,35.97122,0,0,60.0931,0,0,0,1,1,6,63.8,6.9,0,47.7,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,1,47.7,0,1.791759,4.095895,1 +13,6,0,1,2,629671,1,0,48.07734,1,3,1,2.657555,4.536826,0,0,0,7.194381,0,0,0,1,0,6,63.8,6.9,0,47.7,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,1,47.7,0,1.791759,1.9733,1 +13,6,0,1,3,629671,1,0,49.07734,1,3,1,0,0,0,0,0,0,0,0,0,0,0,6,63.8,6.9,0,47.7,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,1,47.7,0,1.791759,,0 +13,6,0,1,1,629672,1,0,12.44627,0,3,1,31.31612,0,0,0,0,31.31612,0,0,0,1,0,6,78.3,10.57626,0,59.3,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,1,59.3,0,1.791759,3.444133,1 +13,6,0,1,2,629672,1,0,13.44627,0,3,1,0,0,0,0,0,0,0,0,0,0,0,6,78.3,10.57626,0,59.3,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,1,59.3,0,1.791759,,0 +13,6,0,1,3,629672,1,0,14.44627,0,3,1,0,0,0,0,0,0,0,0,0,0,0,6,78.3,10.57626,0,59.3,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,1,59.3,0,1.791759,,0 +13,6,0,0,1,629689,1,6735.316,60.1013,0,7,1,0,0,0,0,0,0,0,0,0,0,0,1,72.4,0,0,45.5,150,274.64,0,0,0,5.615461,1,4.564348,5.061929,0,1,0,45.5,8.815269,0,,0 +13,6,0,0,2,629689,1,6735.316,61.1013,0,7,1,27.57839,0,22.66717,0,660.3702,710.6158,1,0,0,0,1,1,72.4,0,0,45.5,150,274.64,0,0,0,5.615461,1,4.564348,5.061929,0,1,0,45.5,8.815269,0,6.566132,1 +6,6,25,1,1,629719,1,129.5443,12.15058,0,12,1,0,0,0,0,0,0,0,0,0,0,0,10,73.3,10.57626,0,77.8,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,0,1,0,77.8,4.871713,2.302585,,0 +6,6,25,1,2,629719,1,129.5443,13.15058,0,12,1,0,0,0,0,0,0,0,0,0,0,0,10,73.3,10.57626,0,77.8,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,0,1,0,77.8,4.871713,2.302585,,0 +6,6,25,1,3,629719,1,129.5443,14.15058,0,12,1,0,0,0,0,0,0,0,0,0,0,0,10,73.3,10.57626,0,77.8,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,0,1,0,77.8,4.871713,2.302585,,0 +6,6,25,1,1,629720,1,129.5443,9.697468,0,12,1,9.35772,3.615483,0,0,0,12.9732,0,0,0,2,0,10,86.7,10.57626,0,59.3,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,0,0,0,59.3,4.871713,2.302585,2.562886,1 +6,6,25,1,2,629720,1,129.5443,10.69747,0,12,1,0,0,0,0,0,0,0,0,0,0,0,10,86.7,10.57626,0,59.3,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,0,0,0,59.3,4.871713,2.302585,,0 +6,6,25,1,3,629720,1,129.5443,11.69747,0,12,1,0,0,0,0,0,0,0,0,0,0,0,10,86.7,10.57626,0,59.3,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,0,0,0,59.3,4.871713,2.302585,,0 +6,6,25,1,1,629721,1,129.5443,5.308692,1,12,1,10.20842,2.126755,0,0,0,12.33518,0,0,0,0,0,10,76.7,10.57626,0,70.4,443.6,443.6,1,1,2.302585,6.094923,0,3.258096,7.481217,1,0,0,70.4,4.871713,2.302585,2.512455,1 +6,6,25,1,2,629721,1,129.5443,6.308692,1,12,1,0,0,0,0,0,0,0,0,0,0,0,10,76.7,10.57626,0,70.4,443.6,443.6,1,1,2.302585,6.094923,0,3.258096,7.481217,1,0,0,70.4,4.871713,2.302585,,0 +6,6,25,1,3,629721,1,129.5443,7.308692,1,12,1,85.01742,0,0,0,0,85.01742,0,0,0,2,0,10,76.7,10.57626,0,70.4,443.6,443.6,1,1,2.302585,6.094923,0,3.258096,7.481217,1,0,0,70.4,4.871713,2.302585,4.442856,1 +6,6,25,1,1,629722,1,129.5443,33.61807,1,12,1,29.34921,2.33943,0,0,0,31.68864,0,0,0,3,0,10,69.1,10.3,0,45.2,443.6,443.6,0,0,2.302585,6.094923,0,3.258096,7.481217,0,1,0,45.2,4.871713,2.302585,3.455958,1 +6,6,25,1,2,629722,1,129.5443,34.61807,1,12,1,20.61069,6.48855,0,0,0,27.09924,0,0,0,4,0,10,69.1,10.3,0,45.2,443.6,443.6,0,0,2.302585,6.094923,0,3.258096,7.481217,0,1,0,45.2,4.871713,2.302585,3.299505,1 +6,6,25,1,3,629722,1,129.5443,35.61807,1,12,1,185.3659,63.10104,0,0,397.9094,646.3763,1,0,0,12,0,10,69.1,10.3,0,45.2,443.6,443.6,0,0,2.302585,6.094923,0,3.258096,7.481217,0,1,0,45.2,4.871713,2.302585,6.471382,1 +6,6,25,1,1,629723,1,129.5443,4.024641,0,12,1,0,0,0,0,0,0,0,0,0,0,0,10,77.40034,10.57626,0,70.4,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,1,0,0,70.4,4.871713,2.302585,,0 +6,6,25,1,2,629723,1,129.5443,5.024641,0,12,1,0,0,0,0,0,0,0,0,0,0,0,10,77.40034,10.57626,0,70.4,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,1,0,0,70.4,4.871713,2.302585,,0 +6,6,25,1,3,629723,1,129.5443,6.024641,0,12,1,5.923345,0,0,0,0,5.923345,0,0,0,1,0,10,77.40034,10.57626,0,70.4,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,1,0,0,70.4,4.871713,2.302585,1.778901,1 +6,6,25,1,1,629724,1,129.5443,2.718686,0,12,1,0,0,0,0,0,0,0,0,0,0,0,10,77.40034,10.57626,0,81.5,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,1,0,0,81.5,4.871713,2.302585,,0 +6,6,25,1,2,629724,1,129.5443,3.718686,0,12,1,9.160305,0,0,0,0,9.160305,0,0,0,2,0,10,77.40034,10.57626,0,81.5,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,1,0,0,81.5,4.871713,2.302585,2.21488,1 +6,6,25,1,3,629724,1,129.5443,4.718686,0,12,1,13.58885,6.41115,0,0,262.3693,282.3693,1,0,0,3,0,10,77.40034,10.57626,0,81.5,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,1,0,0,81.5,4.871713,2.302585,5.643216,1 +6,6,25,1,1,629725,1,129.5443,8.251883,1,12,1,0,0,0,0,0,0,0,0,0,0,0,10,81.7,10.57626,0,85.2,443.6,443.6,1,1,2.302585,6.094923,0,3.258096,7.481217,0,1,0,85.2,4.871713,2.302585,,0 +6,6,25,1,2,629725,1,129.5443,9.251883,1,12,1,0,0,0,0,0,0,0,0,0,0,0,10,81.7,10.57626,0,85.2,443.6,443.6,1,1,2.302585,6.094923,0,3.258096,7.481217,0,1,0,85.2,4.871713,2.302585,,0 +6,6,25,1,3,629725,1,129.5443,10.25188,1,12,1,42.85714,3.815331,0,0,0,46.67247,0,0,0,1,0,10,81.7,10.57626,0,85.2,443.6,443.6,1,1,2.302585,6.094923,0,3.258096,7.481217,0,1,0,85.2,4.871713,2.302585,3.843155,1 +6,6,25,1,1,629726,1,129.5443,10.94319,1,12,1,0,0,0,0,0,0,0,0,0,0,0,10,80,10.57626,0,51.9,443.6,443.6,1,1,2.302585,6.094923,0,3.258096,7.481217,0,1,0,51.9,4.871713,2.302585,,0 +6,6,25,1,2,629726,1,129.5443,11.94319,1,12,1,24.80916,0,0,0,0,24.80916,0,0,0,0,0,10,80,10.57626,0,51.9,443.6,443.6,1,1,2.302585,6.094923,0,3.258096,7.481217,0,1,0,51.9,4.871713,2.302585,3.211213,1 +6,6,25,1,3,629726,1,129.5443,12.94319,1,12,1,0,0,0,0,0,0,0,0,0,0,0,10,80,10.57626,0,51.9,443.6,443.6,1,1,2.302585,6.094923,0,3.258096,7.481217,0,1,0,51.9,4.871713,2.302585,,0 +6,6,25,1,1,629727,1,129.5443,6.557153,0,12,1,0,0,0,0,0,0,0,0,0,0,0,10,88.3,10.57626,0,74.1,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,1,0,0,74.1,4.871713,2.302585,,0 +6,6,25,1,2,629727,1,129.5443,7.557153,0,12,1,7.633588,5.305344,0,0,0,12.93893,0,0,0,2,0,10,88.3,10.57626,0,74.1,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,1,0,0,74.1,4.871713,2.302585,2.560241,1 +6,6,25,1,3,629727,1,129.5443,8.557153,0,12,1,0,0,0,0,0,0,0,0,0,0,0,10,88.3,10.57626,0,74.1,443.6,443.6,1,0,2.302585,6.094923,0,3.258096,7.481217,1,0,0,74.1,4.871713,2.302585,,0 +6,6,25,1,1,629728,1,129.5443,35.62765,0,4,1,39.55764,20.62952,0,0,246.7035,306.8907,1,0,0,4,0,10,77.1,10.3,1,39.8,443.6,443.6,0,0,2.302585,6.094923,0,3.258096,7.481217,1,0,0,39.8,4.871713,2.302585,5.726491,1 +6,6,25,1,2,629728,1,129.5443,36.62765,0,4,1,78.05344,18.96947,2.480916,0,603.4351,702.9389,1,0,0,3,0,10,77.1,10.3,1,39.8,443.6,443.6,0,0,2.302585,6.094923,0,3.258096,7.481217,1,0,0,39.8,4.871713,2.302585,6.55527,1 +6,6,25,1,3,629728,1,129.5443,37.62765,0,4,1,31.35888,17.91289,7.236934,0,508.0139,564.5226,1,0,0,3,0,10,77.1,10.3,1,39.8,443.6,443.6,0,0,2.302585,6.094923,0,3.258096,7.481217,1,0,0,39.8,4.871713,2.302585,6.33598,1 +11,6,0,1,1,629739,.5112414,1825.397,18.78439,0,8,1,0,3.702146,0,0,0,3.702146,0,0,0,0,0,1,86.7,0,0,68.2,0,398.16,0,0,0,5.986854,0,0,0,1,0,0,68.2,7.5101,0,1.308913,1 +11,6,0,1,2,629739,.5112414,1825.397,19.78439,0,8,1,30.97847,5.156781,0,0,0,36.13525,0,0,0,1,0,1,86.7,0,0,68.2,0,398.16,0,0,0,5.986854,0,0,0,1,0,0,68.2,7.5101,0,3.587269,1 +11,6,0,1,3,629739,.5112414,1825.397,20.78439,0,8,1,0,0,0,0,0,0,0,0,0,0,0,1,86.7,0,0,68.2,0,398.16,0,0,0,5.986854,0,0,0,1,0,0,68.2,7.5101,0,,0 +11,6,0,0,1,629740,1,3662.058,54.31896,0,5,1,243.1637,0,0,0,0,243.1637,0,0,0,12,0,4,53.2,6.9,1,30.7,0,312,0,0,1.386294,5.743003,0,0,0,0,1,0,30.7,8.206054,1.386294,5.493735,1 +11,6,0,0,2,629740,1,3662.058,55.31896,0,5,1,187.0042,40.49868,0,0,0,227.5028,0,0,0,5,0,4,53.2,6.9,1,30.7,0,312,0,0,1.386294,5.743003,0,0,0,0,1,0,30.7,8.206054,1.386294,5.427163,1 +11,6,0,0,3,629740,1,3662.058,56.31896,0,5,1,195.1973,63.8422,0,0,0,259.0395,0,0,0,7,0,4,53.2,6.9,1,30.7,0,312,0,0,1.386294,5.743003,0,0,0,0,1,0,30.7,8.206054,1.386294,5.556981,1 +11,6,0,1,1,629741,1,3662.058,13.8809,0,10,1,27.34539,0,0,0,0,27.34539,0,0,0,1,0,4,95,10.57626,0,88.9,0,312,1,0,1.386294,5.743003,0,0,0,1,0,0,88.9,8.206054,1.386294,3.308548,1 +11,6,0,1,2,629741,1,3662.058,14.8809,0,10,1,72.53494,3.683415,0,0,0,76.21836,0,0,0,3,0,4,95,10.57626,0,88.9,0,312,1,0,1.386294,5.743003,0,0,0,1,0,0,88.9,8.206054,1.386294,4.333602,1 +11,6,0,1,3,629741,1,3662.058,15.8809,0,10,1,17.15266,0,0,0,0,17.15266,0,0,0,1,0,4,95,10.57626,0,88.9,0,312,1,0,1.386294,5.743003,0,0,0,1,0,0,88.9,8.206054,1.386294,2.842153,1 +11,6,0,1,1,629742,.5112414,1156.682,21.4976,1,12,1,15.14514,17.2907,0,0,0,32.43584,0,0,0,1,0,2,86.2,6.9,0,77.3,0,468,0,0,.6931472,6.148468,0,0,0,1,0,0,77.3,7.054175,.6931472,3.479264,1 +11,6,0,1,2,629742,.5112414,1156.682,22.4976,1,12,1,9.066868,4.287873,0,0,0,13.35474,0,0,0,0,0,2,86.2,6.9,0,77.3,0,468,0,0,.6931472,6.148468,0,0,0,1,0,0,77.3,7.054175,.6931472,2.591872,1 +11,6,0,1,3,629742,.5112414,1156.682,23.4976,1,12,1,82.67581,14.8542,33.49228,0,492.9674,623.9897,1,0,0,10,1,2,86.2,6.9,0,77.3,0,468,0,0,.6931472,6.148468,0,0,0,1,0,0,77.3,7.054175,.6931472,6.436134,1 +11,6,0,1,1,629743,1,3662.058,15.12936,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,95.7,0,0,76.1,0,312,1,0,1.386294,5.743003,0,0,0,1,0,0,76.1,8.206054,1.386294,,0 +11,6,0,1,2,629743,1,3662.058,16.12936,0,10,1,71.40159,0,0,0,0,71.40159,0,0,0,2,0,4,95.7,0,0,76.1,0,312,1,0,1.386294,5.743003,0,0,0,1,0,0,76.1,8.206054,1.386294,4.26832,1 +11,6,0,1,3,629743,1,3662.058,17.12936,0,10,1,45.28302,1.560892,0,0,0,46.84391,0,0,0,3,0,4,95.7,0,0,76.1,0,312,1,0,1.386294,5.743003,0,0,0,1,0,0,76.1,8.206054,1.386294,3.846821,1 +11,6,0,1,1,629744,1,3662.058,54.37098,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,73.4,6.9,1,42,0,312,0,0,1.386294,5.743003,0,0,0,0,1,0,42,8.206054,1.386294,,0 +11,6,0,1,2,629744,1,3662.058,55.37098,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,73.4,6.9,1,42,0,312,0,0,1.386294,5.743003,0,0,0,0,1,0,42,8.206054,1.386294,,0 +11,6,0,1,3,629744,1,3662.058,56.37098,1,10,1,34.30532,15.31732,35.20755,0,0,84.83018,0,0,0,1,1,4,73.4,6.9,1,42,0,312,0,0,1.386294,5.743003,0,0,0,0,1,0,42,8.206054,1.386294,4.440651,1 +13,6,0,0,1,629747,0,3086.021,43.83299,1,10,1,113.8383,72.92425,36.39441,0,0,223.157,0,0,0,9,0,2,78.7,20.7,1,47.7,300,814,0,0,.6931472,6.701961,1,4.564348,5.755076,0,0,1,47.7,8.034962,.6931472,5.407876,1 +13,6,0,0,2,629747,0,3086.021,44.83299,1,10,1,122.2475,46.13136,20.88079,0,2043.28,2232.54,1,0,0,14,0,2,78.7,20.7,1,47.7,300,814,0,0,.6931472,6.701961,1,4.564348,5.755076,0,0,1,47.7,8.034962,.6931472,7.710895,1 +13,6,0,0,3,629747,0,3086.021,45.83299,1,10,1,24.56747,6.851211,0,0,0,31.41869,0,0,0,2,0,2,78.7,20.7,1,47.7,300,814,0,0,.6931472,6.701961,1,4.564348,5.755076,0,0,1,47.7,8.034962,.6931472,3.447403,1 +13,6,0,0,1,629748,0,3086.021,43.20876,0,9,1,106.6441,0,0,0,0,106.6441,0,0,0,1,10,2,83.5,6.9,0,69.3,300,814,0,0,.6931472,6.701961,1,4.564348,5.755076,0,1,0,69.3,8.034962,.6931472,4.669497,1 +13,6,0,0,2,629748,0,3086.021,44.20876,0,9,1,17.46393,0,0,0,0,17.46393,0,0,0,1,0,2,83.5,6.9,0,69.3,300,814,0,0,.6931472,6.701961,1,4.564348,5.755076,0,1,0,69.3,8.034962,.6931472,2.860138,1 +13,6,0,0,3,629748,0,3086.021,45.20876,0,9,1,130.4498,18.68512,0,0,0,149.1349,0,0,0,2,4,2,83.5,6.9,0,69.3,300,814,0,0,.6931472,6.701961,1,4.564348,5.755076,0,1,0,69.3,8.034962,.6931472,5.004852,1 +17,6,25,0,1,629796,0,8273.9,3.132101,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,55.6,650,650,1,0,1.386294,6.476973,0,3.258096,7.863267,0,1,0,55.6,9.020982,1.386294,,0 +17,6,25,0,2,629796,0,8273.9,4.132102,0,8,1,48.18724,0,0,0,0,48.18724,0,0,0,0,0,4,77.40034,10.57626,0,55.6,650,650,1,0,1.386294,6.476973,0,3.258096,7.863267,0,1,0,55.6,9.020982,1.386294,3.875094,1 +17,6,25,0,3,629796,0,8273.9,5.132102,0,8,1,0,0,0,0,218.7632,218.7632,1,0,0,0,0,4,77.40034,10.57626,0,55.6,650,650,1,0,1.386294,6.476973,0,3.258096,7.863267,0,1,0,55.6,9.020982,1.386294,5.38799,1 +17,6,25,0,4,629796,0,8273.9,6.132102,0,8,1,3.777862,0,0,0,0,3.777862,0,0,0,1,0,4,77.40034,10.57626,0,55.6,650,650,1,0,1.386294,6.476973,0,3.258096,7.863267,0,1,0,55.6,9.020982,1.386294,1.329158,1 +17,6,25,0,5,629796,0,8273.9,7.132102,0,8,1,40.48027,0,0,0,0,40.48027,0,0,0,4,0,5,77.40034,10.57626,0,55.6,650,650,1,0,1.609438,6.476973,0,3.258096,7.863267,0,1,0,55.6,9.020982,1.609438,3.700815,1 +17,6,25,0,1,629797,0,8273.9,22.52977,0,7,1,4.955401,1.73439,0,0,0,6.689792,0,0,0,1,0,4,84,3.4,0,59.1,650,650,0,0,1.386294,6.476973,0,3.258096,7.863267,0,0,0,59.1,9.020982,1.386294,1.900583,1 +17,6,25,0,2,629797,0,8273.9,23.52977,0,7,1,0,0,0,0,0,0,0,0,0,0,0,4,84,3.4,0,59.1,650,650,0,0,1.386294,6.476973,0,3.258096,7.863267,0,0,0,59.1,9.020982,1.386294,,0 +17,6,25,0,3,629797,0,8273.9,24.52977,0,7,1,0,0,0,0,0,0,0,0,0,0,0,4,84,3.4,0,59.1,650,650,0,0,1.386294,6.476973,0,3.258096,7.863267,0,0,0,59.1,9.020982,1.386294,,0 +17,6,25,0,4,629797,0,8273.9,25.52977,0,7,1,3.777862,0,0,0,0,3.777862,0,0,0,1,0,4,84,3.4,0,59.1,650,650,0,0,1.386294,6.476973,0,3.258096,7.863267,0,0,0,59.1,9.020982,1.386294,1.329158,1 +17,6,25,0,5,629797,0,8273.9,26.52977,0,7,1,20.58319,0,0,0,491.9383,512.5214,2,1,0,2,0,5,84,3.4,0,59.1,650,650,0,0,1.609438,6.476973,0,3.258096,7.863267,0,0,0,59.1,9.020982,1.609438,6.239343,1 +17,6,25,0,1,629798,0,8273.9,21.40452,1,8,1,23.29039,14.0337,0,0,0,37.32408,0,0,0,2,0,4,78.7,10.3,0,60.2,650,650,0,0,1.386294,6.476973,0,3.258096,7.863267,0,0,0,60.2,9.020982,1.386294,3.619639,1 +17,6,25,0,2,629798,0,8273.9,22.40452,1,8,1,9.178522,0,0,0,0,9.178522,0,0,0,0,0,4,78.7,10.3,0,60.2,650,650,0,0,1.386294,6.476973,0,3.258096,7.863267,0,0,0,60.2,9.020982,1.386294,2.216866,1 +17,6,25,0,3,629798,0,8273.9,23.40452,1,8,1,48.80101,9.255363,0,0,0,58.05637,0,0,0,1,0,4,78.7,10.3,0,60.2,650,650,0,0,1.386294,6.476973,0,3.258096,7.863267,0,0,0,60.2,9.020982,1.386294,4.061415,1 +17,6,25,0,4,629798,0,8273.9,24.40452,1,8,1,52.89006,0,0,0,1145.825,1198.716,4,0,0,3,0,4,78.7,10.3,0,60.2,650,650,0,0,1.386294,6.476973,0,3.258096,7.863267,0,0,0,60.2,9.020982,1.386294,7.089006,1 +17,6,25,0,5,629798,0,8273.9,25.40452,1,8,1,105.3173,0,0,0,0,105.3173,0,0,0,8,0,5,78.7,10.3,0,60.2,650,650,0,0,1.609438,6.476973,0,3.258096,7.863267,0,0,0,60.2,9.020982,1.609438,4.656978,1 +15,6,95,1,1,629811,0,8913.467,58.05065,1,7,1,0,0,0,0,0,0,0,0,0,0,0,1,84,20.7,0,90.9,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,90.9,9.09543,0,,0 +15,6,95,1,2,629811,0,8913.467,59.05065,1,7,1,6.833713,0,0,0,0,6.833713,0,0,0,1,0,1,84,20.7,0,90.9,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,90.9,9.09543,0,1.921868,1 +15,6,95,1,3,629811,0,8913.467,60.05065,1,7,1,61.93772,36.93426,0,0,0,98.87197,0,0,0,2,0,1,84,20.7,0,90.9,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,90.9,9.09543,0,4.593826,1 +13,6,0,1,1,629860,0,8777.777,28.93908,1,8,1,31.13168,4.838031,0,0,0,35.96971,0,0,0,1,0,4,75.5,20.7,0,60.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,60.2,9.080092,1.386294,3.582677,1 +13,6,0,1,2,629860,0,8777.777,29.93908,1,8,1,460.8991,13.50586,27.20061,0,0,501.6056,0,0,0,22,26,4,75.5,20.7,0,60.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,60.2,9.080092,1.386294,6.217814,1 +13,6,0,1,3,629860,0,8777.777,30.93908,1,8,1,389.7084,5.022298,0,0,0,394.7307,0,0,0,1,37,4,75.5,20.7,0,60.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,60.2,9.080092,1.386294,5.978204,1 +13,6,0,1,1,629861,0,8777.777,31.45517,0,3,1,28.60749,3.050063,0,0,514.5141,546.1716,2,0,0,3,0,4,73.4,6.9,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,71.6,9.080092,1.386294,6.302933,1 +13,6,0,1,2,629861,0,8777.777,32.45517,0,3,1,13.22252,0,0,0,0,13.22252,0,0,0,1,0,4,73.4,6.9,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,71.6,9.080092,1.386294,2.581921,1 +13,6,0,1,3,629861,0,8777.777,33.45517,0,3,1,62.09262,0,0,0,0,62.09262,0,0,0,0,0,4,73.4,6.9,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,71.6,9.080092,1.386294,4.128627,1 +13,6,0,1,1,629862,0,8777.777,7.60575,0,8,1,18.09003,6.41565,0,0,0,24.50568,0,0,0,2,0,4,83.3,10.57626,0,48.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,48.1,9.080092,1.386294,3.198905,1 +13,6,0,1,2,629862,0,8777.777,8.605749,0,8,1,26.44503,19.0782,0,0,0,45.52324,0,0,0,3,0,4,83.3,10.57626,0,48.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,48.1,9.080092,1.386294,3.818223,1 +13,6,0,1,3,629862,0,8777.777,9.605749,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,0,48.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,48.1,9.080092,1.386294,,0 +13,6,0,1,1,629863,0,8777.777,12.68994,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,10.57626,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.080092,1.386294,,0 +13,6,0,1,2,629863,0,8777.777,13.68994,1,8,1,13.6003,9.539101,0,0,0,23.1394,0,0,0,2,0,4,88.3,10.57626,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.080092,1.386294,3.141537,1 +13,6,0,1,3,629863,0,8777.777,14.68994,1,8,1,5.145798,1.533448,0,0,0,6.679245,0,0,0,1,0,4,88.3,10.57626,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.080092,1.386294,1.899005,1 +13,6,0,1,1,629864,0,817.2043,51.67419,1,7,1,68.36182,61.62151,44.18508,0,0,174.1684,0,0,0,6,1,2,19.7,37.9,1,27.3,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,1,27.3,6.707112,.6931472,5.160023,1 +13,6,0,1,2,629864,0,817.2043,52.67419,1,7,1,25.50638,105.6339,1.777944,0,0,132.9182,0,0,0,3,0,2,19.7,37.9,1,27.3,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,1,27.3,6.707112,.6931472,4.889734,1 +13,6,0,1,3,629864,0,817.2043,53.67419,1,7,1,63.59946,98.53857,343.9107,0,0,506.0487,0,0,0,7,1,2,19.7,37.9,1,27.3,300,0,0,0,.6931472,0,1,4.564348,5.755076,0,0,1,27.3,6.707112,.6931472,6.226633,1 +13,6,0,1,1,629865,0,817.2043,20.92266,1,9,1,82.11755,25.00625,0,0,0,107.1238,0,0,0,2,0,2,33.5,20.7,1,19.3,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,19.3,6.707112,.6931472,4.673985,1 +13,6,0,1,2,629865,0,817.2043,21.92266,1,9,1,95.64891,33.30458,0,0,0,128.9535,0,0,0,5,0,2,33.5,20.7,1,19.3,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,19.3,6.707112,.6931472,4.859452,1 +13,6,0,1,3,629865,0,817.2043,22.92266,1,9,1,5.751015,12.60149,0,0,367.0501,385.4026,1,0,0,1,0,2,33.5,20.7,1,19.3,300,0,0,0,.6931472,0,1,4.564348,5.755076,1,0,0,19.3,6.707112,.6931472,5.954288,1 +13,6,0,0,1,629869,1,4897.593,5.366188,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,100,10.57626,0,66.7,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.496703,1.791759,,0 +13,6,0,0,2,629869,1,4897.593,6.366188,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,100,10.57626,0,66.7,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.496703,1.791759,,0 +13,6,0,0,3,629869,1,4897.593,7.366188,0,10,1,7.266436,0,0,0,0,7.266436,0,0,0,0,0,6,100,10.57626,0,66.7,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.496703,1.791759,1.983266,1 +13,6,0,0,1,629870,1,4897.593,26.64476,1,10,1,71.09606,4.443504,0,0,0,75.53957,0,0,0,1,0,6,81.9,3.4,0,59.1,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,1,0,59.1,8.496703,1.791759,4.324656,1 +13,6,0,0,2,629870,1,4897.593,27.64476,1,10,1,49.3546,6.985573,0,0,0,56.34017,0,0,0,0,0,6,81.9,3.4,0,59.1,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,1,0,59.1,8.496703,1.791759,4.031408,1 +13,6,0,0,3,629870,1,4897.593,28.64476,1,10,1,0,3.972318,0,0,0,3.972318,0,0,0,0,0,6,81.9,3.4,0,59.1,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,1,0,59.1,8.496703,1.791759,1.37935,1 +13,6,0,0,1,629871,1,4897.593,8.561259,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,100,10.57626,0,66.7,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.496703,1.791759,,0 +13,6,0,0,2,629871,1,4897.593,9.561259,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,100,10.57626,0,66.7,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.496703,1.791759,,0 +13,6,0,0,3,629871,1,4897.593,10.56126,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,100,10.57626,0,66.7,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.496703,1.791759,,0 +13,6,0,0,1,629872,1,4897.593,27.55921,0,6,1,77.02074,9.881507,0,0,0,86.90224,0,0,0,5,0,6,93.1,17.2,0,58,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,58,8.496703,1.791759,4.464784,1 +13,6,0,0,2,629872,1,4897.593,28.55921,0,6,1,21.64009,3.246014,0,0,0,24.8861,0,0,0,0,0,6,93.1,17.2,0,58,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,58,8.496703,1.791759,3.21431,1 +13,6,0,0,3,629872,1,4897.593,29.55921,0,6,1,10.38062,3.107266,0,0,0,13.48789,0,0,0,3,0,6,93.1,17.2,0,58,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,58,8.496703,1.791759,2.601792,1 +13,6,0,0,1,629873,1,4897.593,4.413415,1,10,1,5.07829,0,0,0,0,5.07829,0,0,0,1,0,6,77.40034,10.57626,0,66.7,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,1,0,66.7,8.496703,1.791759,1.624975,1 +13,6,0,0,2,629873,1,4897.593,5.413415,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,66.7,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,1,0,66.7,8.496703,1.791759,,0 +13,6,0,0,3,629873,1,4897.593,6.413415,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,66.7,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,1,0,66.7,8.496703,1.791759,,0 +13,6,0,0,1,629874,1,4897.593,6.310746,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,100,10.57626,0,66.7,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.496703,1.791759,,0 +13,6,0,0,2,629874,1,4897.593,7.310746,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,100,10.57626,0,66.7,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.496703,1.791759,,0 +13,6,0,0,3,629874,1,4897.593,8.310746,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,100,10.57626,0,66.7,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,66.7,8.496703,1.791759,,0 +5,6,25,1,1,629885,0,7676.246,32.51745,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,3.4,0,90.9,737.5,737.5,0,0,1.386294,6.603266,0,3.258096,7.989561,0,0,0,90.9,8.946016,1.386294,,0 +5,6,25,1,2,629885,0,7676.246,33.51745,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,86.7,3.4,0,90.9,737.5,737.5,0,0,1.386294,6.603266,0,3.258096,7.989561,0,0,0,90.9,8.946016,1.386294,,0 +5,6,25,1,3,629885,0,7676.246,34.51745,0,12,1,10.42101,9.170487,0,0,0,19.5915,0,0,0,1,0,4,86.7,3.4,0,90.9,737.5,737.5,0,0,1.386294,6.603266,0,3.258096,7.989561,0,0,0,90.9,8.946016,1.386294,2.975096,1 +5,6,25,1,4,629885,0,7676.246,35.51745,0,12,1,32.25806,5.157539,0,0,0,37.4156,0,0,0,2,0,4,86.7,3.4,0,90.9,737.5,737.5,0,0,1.386294,6.603266,0,3.258096,7.989561,0,0,0,90.9,8.946016,1.386294,3.622088,1 +5,6,25,1,5,629885,0,7676.246,36.51745,0,12,1,0,12.31394,0,0,0,12.31394,0,0,0,0,0,4,86.7,3.4,0,90.9,737.5,737.5,0,0,1.386294,6.603266,0,3.258096,7.989561,0,0,0,90.9,8.946016,1.386294,2.510732,1 +5,6,25,1,1,629886,0,7676.246,30.4668,1,8,1,13.75921,20.95332,0,0,0,34.71253,0,0,0,1,0,4,81.9,0,0,86.4,737.5,737.5,0,0,1.386294,6.603266,0,3.258096,7.989561,1,0,0,86.4,8.946016,1.386294,3.547101,1 +5,6,25,1,2,629886,0,7676.246,31.4668,1,8,1,82.04193,33.04467,0,0,0,115.0866,0,0,0,3,0,4,81.9,0,0,86.4,737.5,737.5,0,0,1.386294,6.603266,0,3.258096,7.989561,1,0,0,86.4,8.946016,1.386294,4.745685,1 +5,6,25,1,3,629886,0,7676.246,32.4668,1,8,1,32.51355,0,0,0,0,32.51355,0,0,0,3,0,4,81.9,0,0,86.4,737.5,737.5,0,0,1.386294,6.603266,0,3.258096,7.989561,1,0,0,86.4,8.946016,1.386294,3.481657,1 +5,6,25,1,4,629886,0,7676.246,33.4668,1,8,1,93.77345,16.44786,0,0,0,110.2213,0,0,0,5,0,4,81.9,0,0,86.4,737.5,737.5,0,0,1.386294,6.603266,0,3.258096,7.989561,1,0,0,86.4,8.946016,1.386294,4.70249,1 +5,6,25,1,5,629886,0,7676.246,34.4668,1,8,1,12.17862,26.1502,0,0,550.4059,588.7348,1,0,0,1,0,4,81.9,0,0,86.4,737.5,737.5,0,0,1.386294,6.603266,0,3.258096,7.989561,1,0,0,86.4,8.946016,1.386294,6.377976,1 +5,6,25,1,1,629887,0,7676.246,9.300479,1,8,1,4.914005,6.633907,0,0,0,11.54791,0,0,0,1,0,4,81.7,10.57626,0,77.8,737.5,737.5,1,1,1.386294,6.603266,0,3.258096,7.989561,0,0,0,77.8,8.946016,1.386294,2.446505,1 +5,6,25,1,2,629887,0,7676.246,10.30048,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,10.57626,0,77.8,737.5,737.5,1,1,1.386294,6.603266,0,3.258096,7.989561,0,0,0,77.8,8.946016,1.386294,,0 +5,6,25,1,3,629887,0,7676.246,11.30048,1,8,1,14.58941,0,20.84202,0,0,35.43143,0,0,0,1,0,4,81.7,10.57626,0,77.8,737.5,737.5,1,1,1.386294,6.603266,0,3.258096,7.989561,0,0,0,77.8,8.946016,1.386294,3.567599,1 +5,6,25,1,4,629887,0,7676.246,12.30048,1,8,1,5.626407,0,0,0,0,5.626407,0,0,0,1,0,4,81.7,10.57626,0,77.8,737.5,737.5,1,1,1.386294,6.603266,0,3.258096,7.989561,0,0,0,77.8,8.946016,1.386294,1.727471,1 +5,6,25,1,5,629887,0,7676.246,13.30048,1,8,1,13.5318,0,27.74019,0,0,41.27199,0,0,0,1,0,4,81.7,10.57626,0,77.8,737.5,737.5,1,1,1.386294,6.603266,0,3.258096,7.989561,0,0,0,77.8,8.946016,1.386294,3.720184,1 +5,6,25,1,1,629888,0,7676.246,12.33949,0,8,1,0,4.216216,0,0,0,4.216216,0,0,0,0,0,4,81.7,10.57626,0,81.5,737.5,737.5,1,0,1.386294,6.603266,0,3.258096,7.989561,0,0,0,81.5,8.946016,1.386294,1.438938,1 +5,6,25,1,2,629888,0,7676.246,13.33949,0,8,1,24.15679,3.19052,0,0,0,27.34731,0,0,0,1,0,4,81.7,10.57626,0,81.5,737.5,737.5,1,0,1.386294,6.603266,0,3.258096,7.989561,0,0,0,81.5,8.946016,1.386294,3.308618,1 +5,6,25,1,3,629888,0,7676.246,14.33949,0,8,1,19.5915,0,0,0,0,19.5915,0,0,0,2,0,4,81.7,10.57626,0,81.5,737.5,737.5,1,0,1.386294,6.603266,0,3.258096,7.989561,0,0,0,81.5,8.946016,1.386294,2.975096,1 +5,6,25,1,4,629888,0,7676.246,15.33949,0,8,1,25.88147,14.53488,0,0,0,40.41636,0,0,0,3,0,4,81.7,10.57626,0,81.5,737.5,737.5,1,0,1.386294,6.603266,0,3.258096,7.989561,0,0,0,81.5,8.946016,1.386294,3.699234,1 +5,6,25,1,5,629888,0,7676.246,16.33949,0,8,1,12.85521,12.24628,0,0,0,25.10149,0,0,0,2,0,4,81.7,10.57626,0,81.5,737.5,737.5,1,0,1.386294,6.603266,0,3.258096,7.989561,0,0,0,81.5,8.946016,1.386294,3.222927,1 +16,6,95,1,1,629889,1,8413.723,24.49555,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,84.6,0,0,72.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,72.7,9.037738,1.386294,,0 +16,6,95,1,2,629889,1,8413.723,25.49555,0,12,1,9.82244,5.383453,0,0,0,15.20589,0,0,0,1,0,4,84.6,0,0,72.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,72.7,9.037738,1.386294,2.721683,1 +16,6,95,1,3,629889,1,8413.723,26.49555,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,84.6,0,0,72.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,1,0,0,72.7,9.037738,1.386294,,0 +16,6,95,1,1,629890,1,962.6216,47.06913,0,6,1,0,6.625999,0,0,0,6.625999,0,0,0,0,0,7,83.5,3.4,0,76.1,1000,1000,0,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,76.1,6.870698,1.94591,1.891001,1 +16,6,95,1,2,629890,1,962.6216,48.06913,0,6,1,0,0,0,0,0,0,0,0,0,0,0,7,83.5,3.4,0,76.1,1000,1000,0,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,76.1,6.870698,1.94591,,0 +16,6,95,1,3,629890,1,962.6216,49.06913,0,6,1,0,0,0,0,0,0,0,0,0,0,0,7,83.5,3.4,0,76.1,1000,1000,0,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,76.1,6.870698,1.94591,,0 +16,6,95,1,1,629891,1,962.6216,11.60301,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,93.3,10.57626,0,96.3,1000,1000,1,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,96.3,6.870698,1.94591,,0 +16,6,95,1,2,629891,1,962.6216,12.60301,0,7,1,30.60068,0,0,0,0,30.60068,0,0,0,0,0,7,93.3,10.57626,0,96.3,1000,1000,1,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,96.3,6.870698,1.94591,3.421022,1 +16,6,95,1,3,629891,1,962.6216,13.60301,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,93.3,10.57626,0,96.3,1000,1000,1,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,96.3,6.870698,1.94591,,0 +16,6,95,1,1,629893,1,962.6216,40.06845,1,7,1,10.51746,16.40724,0,0,382.4148,409.3395,1,0,0,1,0,7,74.5,6.9,0,87.5,1000,1000,0,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,87.5,6.870698,1.94591,6.014545,1 +16,6,95,1,2,629893,1,962.6216,41.06845,1,7,1,26.06725,0,37.02304,0,0,63.09029,0,0,0,0,0,7,74.5,6.9,0,87.5,1000,1000,0,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,87.5,6.870698,1.94591,4.144567,1 +16,6,95,1,3,629893,1,962.6216,42.06845,1,7,1,38.76501,0,0,0,0,38.76501,0,0,0,0,0,7,74.5,6.9,0,87.5,1000,1000,0,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,87.5,6.870698,1.94591,3.657518,1 +16,6,95,1,1,629894,1,962.6216,15.03354,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,63.8,10.3,0,38.6,1000,1000,1,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,38.6,6.870698,1.94591,,0 +16,6,95,1,2,629894,1,962.6216,16.03354,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,63.8,10.3,0,38.6,1000,1000,1,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,38.6,6.870698,1.94591,,0 +16,6,95,1,3,629894,1,962.6216,17.03354,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,63.8,10.3,0,38.6,1000,1000,1,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,38.6,6.870698,1.94591,,0 +16,6,95,1,1,629895,1,962.6216,11.60301,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,78.3,10.57626,0,85.2,1000,1000,1,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,85.2,6.870698,1.94591,,0 +16,6,95,1,2,629895,1,962.6216,12.60301,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,78.3,10.57626,0,85.2,1000,1000,1,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,85.2,6.870698,1.94591,,0 +16,6,95,1,3,629895,1,962.6216,13.60301,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,78.3,10.57626,0,85.2,1000,1000,1,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,85.2,6.870698,1.94591,,0 +16,6,95,0,1,629896,1,962.6216,4.873374,1,7,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,85.2,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,1,0,0,85.2,6.870698,1.94591,,0 +16,6,95,0,2,629896,1,962.6216,5.873374,1,7,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,85.2,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,1,0,0,85.2,6.870698,1.94591,,0 +16,6,95,0,3,629896,1,962.6216,6.873374,1,7,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,85.2,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,1,0,0,85.2,6.870698,1.94591,,0 +16,6,95,1,1,629897,.5112414,6735.316,20.88433,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,42.6,6.9,0,53.4,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,53.4,8.815269,0,,0 +16,6,95,1,2,629897,.5112414,6735.316,21.88433,0,11,1,13.22252,0,0,0,0,13.22252,0,0,0,0,0,1,42.6,6.9,0,53.4,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,53.4,8.815269,0,2.581921,1 +16,6,95,1,3,629897,.5112414,6735.316,22.88433,0,11,1,0,0,0,0,0,0,0,0,0,0,0,1,42.6,6.9,0,53.4,1000,1000,0,0,0,6.907755,0,4.564348,6.959049,1,0,0,53.4,8.815269,0,,0 +5,6,25,1,1,629903,1,0,60.27378,1,7,1,65.29137,0,0,0,0,65.29137,0,0,0,2,0,1,85.1,17.2,0,69.3,135.3,607.04,0,0,0,6.408595,0,3.258096,6.293789,0,1,0,69.3,0,0,4.17886,1 +5,6,25,1,2,629903,1,0,61.27378,1,7,1,15.26718,57.83588,32.82443,0,0,105.9275,0,0,0,1,0,1,85.1,17.2,0,69.3,135.3,607.04,0,0,0,6.408595,0,3.258096,6.293789,0,1,0,69.3,0,0,4.662755,1 +5,6,25,1,3,629903,1,0,62.27378,1,7,1,10.10453,71.74564,0,0,0,81.85017,0,0,0,2,0,1,85.1,17.2,0,69.3,135.3,607.04,0,0,0,6.408595,0,3.258096,6.293789,0,1,0,69.3,0,0,4.404891,1 +14,6,95,1,1,629909,0,3860.727,8.443532,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,90,10.57626,0,74.1,357,377.4,1,0,1.386294,5.933306,0,4.564348,5.929029,1,0,0,74.1,8.25887,1.386294,,0 +14,6,95,1,2,629909,0,3860.727,9.443532,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,90,10.57626,0,74.1,357,377.4,1,0,1.386294,5.933306,0,4.564348,5.929029,1,0,0,74.1,8.25887,1.386294,,0 +14,6,95,1,3,629909,0,3860.727,10.44353,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,90,10.57626,0,74.1,357,377.4,1,0,1.386294,5.933306,0,4.564348,5.929029,1,0,0,74.1,8.25887,1.386294,,0 +14,6,95,1,1,629910,0,3860.727,14.93498,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,85.6,3.4,0,79.8,357,377.4,1,0,1.386294,5.933306,0,4.564348,5.929029,0,0,0,79.8,8.25887,1.386294,,0 +14,6,95,1,2,629910,0,3860.727,15.93498,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,85.6,3.4,0,79.8,357,377.4,1,0,1.386294,5.933306,0,4.564348,5.929029,0,0,0,79.8,8.25887,1.386294,,0 +14,6,95,1,3,629910,0,3860.727,16.93498,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,85.6,3.4,0,79.8,357,377.4,1,0,1.386294,5.933306,0,4.564348,5.929029,0,0,0,79.8,8.25887,1.386294,,0 +14,6,95,1,1,629911,0,3860.727,41.21561,1,13,1,17.92414,0,0,0,0,17.92414,0,0,0,0,0,4,58,6.9,0,63.6,357,377.4,0,0,1.386294,5.933306,0,4.564348,5.929029,0,0,0,63.6,8.25887,1.386294,2.886148,1 +14,6,95,1,2,629911,0,3860.727,42.21561,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,58,6.9,0,63.6,357,377.4,0,0,1.386294,5.933306,0,4.564348,5.929029,0,0,0,63.6,8.25887,1.386294,,0 +14,6,95,1,3,629911,0,3860.727,43.21561,1,13,1,0,0,0,0,0,0,0,0,0,0,0,4,58,6.9,0,63.6,357,377.4,0,0,1.386294,5.933306,0,4.564348,5.929029,0,0,0,63.6,8.25887,1.386294,,0 +14,6,95,1,1,629912,0,3860.727,14.02875,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,76.7,10.57626,0,55.6,357,377.4,1,0,1.386294,5.933306,0,4.564348,5.929029,0,0,0,55.6,8.25887,1.386294,,0 +14,6,95,1,2,629912,0,3860.727,15.02875,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,76.7,10.57626,0,55.6,357,377.4,1,0,1.386294,5.933306,0,4.564348,5.929029,0,0,0,55.6,8.25887,1.386294,,0 +14,6,95,1,3,629912,0,3860.727,16.02875,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,76.7,10.57626,0,55.6,357,377.4,1,0,1.386294,5.933306,0,4.564348,5.929029,0,0,0,55.6,8.25887,1.386294,,0 +16,6,95,0,1,629920,0,2548.899,7.126626,1,12,1,21.87631,0,0,0,0,21.87631,0,0,0,3,0,7,73.3,10.57626,0,92.6,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,0,0,0,92.6,7.843809,1.94591,3.085404,1 +16,6,95,0,2,629920,0,2548.899,8.126626,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,73.3,10.57626,0,92.6,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,0,0,0,92.6,7.843809,1.94591,,0 +16,6,95,0,3,629920,0,2548.899,9.126626,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,73.3,10.57626,0,92.6,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,0,0,0,92.6,7.843809,1.94591,,0 +16,6,95,0,1,629921,0,2548.899,11.29637,0,12,1,75.72571,2.734539,0,0,530.5006,608.9609,2,0,0,5,0,7,78.3,10.57626,0,81.5,1000,1000,1,0,1.94591,6.907755,0,4.564348,6.959049,0,0,0,81.5,7.843809,1.94591,6.411754,1 +16,6,95,0,2,629921,0,2548.899,12.29637,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,78.3,10.57626,0,81.5,1000,1000,1,0,1.94591,6.907755,0,4.564348,6.959049,0,0,0,81.5,7.843809,1.94591,,0 +16,6,95,0,3,629921,0,2548.899,13.29637,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,78.3,10.57626,0,81.5,1000,1000,1,0,1.94591,6.907755,0,4.564348,6.959049,0,0,0,81.5,7.843809,1.94591,,0 +16,6,95,0,1,629922,0,2548.899,40.10951,0,12,1,8.413967,9.676063,0,0,0,18.09003,0,0,0,1,0,7,71.3,6.9,1,75,1000,1000,0,0,1.94591,6.907755,0,4.564348,6.959049,0,0,1,75,7.843809,1.94591,2.895361,1 +16,6,95,0,2,629922,0,2548.899,41.10951,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,71.3,6.9,1,75,1000,1000,0,0,1.94591,6.907755,0,4.564348,6.959049,0,0,1,75,7.843809,1.94591,,0 +16,6,95,0,3,629922,0,2548.899,42.10951,0,12,1,43.2247,0,39.45111,0,0,82.67581,0,0,0,1,8,7,71.3,6.9,1,75,1000,1000,0,0,1.94591,6.907755,0,4.564348,6.959049,0,0,1,75,7.843809,1.94591,4.414927,1 +16,6,95,0,1,629923,0,2548.899,9.130733,1,12,1,10.51746,0,25.2419,0,0,35.75936,0,0,0,1,0,7,86.7,10.57626,0,81.5,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,0,0,0,81.5,7.843809,1.94591,3.576812,1 +16,6,95,0,2,629923,0,2548.899,10.13073,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,86.7,10.57626,0,81.5,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,0,0,0,81.5,7.843809,1.94591,,0 +16,6,95,0,3,629923,0,2548.899,11.13073,1,12,1,10.2916,0,30.87479,0,0,41.16638,0,0,0,1,0,7,86.7,10.57626,0,81.5,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,0,0,0,81.5,7.843809,1.94591,3.717622,1 +16,6,95,0,1,629924,0,2548.899,17.95756,1,12,1,16.82793,0,33.65587,0,0,50.4838,0,0,0,2,0,7,71.3,17.2,0,55.7,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,0,0,0,55.7,7.843809,1.94591,3.921653,1 +16,6,95,0,2,629924,0,2548.899,18.95756,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,71.3,17.2,0,55.7,1000,1000,0,0,1.94591,6.907755,0,4.564348,6.959049,0,0,0,55.7,7.843809,1.94591,,0 +16,6,95,0,3,629924,0,2548.899,19.95756,1,12,1,80.61749,0,23.46484,0,0,104.0823,0,0,0,7,0,7,71.3,17.2,0,55.7,1000,1000,0,0,1.94591,6.907755,0,4.564348,6.959049,0,0,0,55.7,7.843809,1.94591,4.645182,1 +16,6,95,0,1,629925,0,2548.899,15.91239,1,12,1,10.51746,14.72444,27.34539,0,0,52.5873,0,0,0,1,0,7,55.3,3.4,0,56.8,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,0,0,0,56.8,7.843809,1.94591,3.962475,1 +16,6,95,0,2,629925,0,2548.899,16.91239,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,55.3,3.4,0,56.8,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,0,0,0,56.8,7.843809,1.94591,,0 +16,6,95,0,3,629925,0,2548.899,17.91239,1,12,1,0,5.780446,28.34648,0,0,34.12693,0,0,0,0,0,7,55.3,3.4,0,56.8,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,0,0,0,56.8,7.843809,1.94591,3.530087,1 +16,6,95,0,1,629926,0,2548.899,37.50034,1,12,1,198.5696,79.5162,29.44888,0,0,307.5347,0,0,0,4,14,7,43.6,3.4,0,64.8,1000,1000,0,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,64.8,7.843809,1.94591,5.728588,1 +16,6,95,0,2,629926,0,2548.899,38.50034,1,12,1,20.77824,0,0,0,0,20.77824,0,0,0,3,0,7,43.6,3.4,0,64.8,1000,1000,0,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,64.8,7.843809,1.94591,3.033906,1 +16,6,95,0,3,629926,0,2548.899,39.50034,1,12,1,270.6689,21.44082,25.72899,0,734.4769,1052.316,1,0,0,3,10,7,43.6,3.4,0,64.8,1000,1000,0,0,1.94591,6.907755,0,4.564348,6.959049,1,0,0,64.8,7.843809,1.94591,6.958748,1 +16,6,95,0,1,629932,0,13601.13,44.76386,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,94.7,6.9,0,88.6,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.517982,1.098612,,0 +16,6,95,0,2,629932,0,13601.13,45.76386,1,13,1,0,29.56107,0,0,0,29.56107,0,0,0,0,0,3,94.7,6.9,0,88.6,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.517982,1.098612,3.386458,1 +16,6,95,0,3,629932,0,13601.13,46.76386,1,13,1,12.19512,10.49129,0,0,0,22.68641,0,0,0,1,0,3,94.7,6.9,0,88.6,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,88.6,9.517982,1.098612,3.121766,1 +16,6,95,0,1,629933,0,13601.13,47.36756,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,78.2,13.8,0,77.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,77.3,9.517982,1.098612,,0 +16,6,95,0,2,629933,0,13601.13,48.36756,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,78.2,13.8,0,77.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,77.3,9.517982,1.098612,,0 +16,6,95,0,3,629933,0,13601.13,49.36756,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,78.2,13.8,0,77.3,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,77.3,9.517982,1.098612,,0 +16,6,95,0,1,629934,0,13601.13,16.60506,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,82.4,6.9,0,76.1,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,0,0,0,76.1,9.517982,1.098612,,0 +16,6,95,0,2,629934,0,13601.13,17.60506,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,82.4,6.9,0,76.1,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,0,0,0,76.1,9.517982,1.098612,,0 +16,6,95,0,3,629934,0,13601.13,18.60506,1,13,1,0,0,0,0,0,0,0,0,0,0,0,3,82.4,6.9,0,76.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,76.1,9.517982,1.098612,,0 +11,6,0,1,1,629944,0,3328.213,9.14716,1,8,1,15.56584,2.52419,0,0,354.6487,372.7387,1,0,0,2,0,3,86.7,10.57626,0,85.2,0,0,1,1,1.098612,0,0,0,0,1,0,0,85.2,8.110491,1.098612,5.920878,1 +11,6,0,1,2,629944,0,3328.213,10.14716,1,8,1,0,9.161315,0,0,0,9.161315,0,0,0,0,0,3,86.7,10.57626,0,85.2,0,0,1,1,1.098612,0,0,0,0,1,0,0,85.2,8.110491,1.098612,2.21499,1 +11,6,0,1,3,629944,0,3328.213,11.14716,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,10.57626,0,85.2,0,0,1,1,1.098612,0,0,0,0,1,0,0,85.2,8.110491,1.098612,,0 +11,6,0,1,1,629945,0,3328.213,46.45311,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,76.6,10.3,1,59.1,0,0,0,0,1.098612,0,0,0,0,1,0,0,59.1,8.110491,1.098612,,0 +11,6,0,1,2,629945,0,3328.213,47.45311,0,8,1,103.1356,0,7.555724,0,0,110.6913,0,0,0,0,6,3,76.6,10.3,1,59.1,0,0,0,0,1.098612,0,0,0,0,1,0,0,59.1,8.110491,1.098612,4.706746,1 +11,6,0,1,3,629945,0,3328.213,48.45311,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,76.6,10.3,1,59.1,0,0,0,0,1.098612,0,0,0,0,1,0,0,59.1,8.110491,1.098612,,0 +11,6,0,1,1,629946,0,3328.213,44.87885,1,8,1,25.2419,85.63315,33.65587,0,0,144.5309,0,0,0,3,1,3,71.3,17.2,1,22.7,0,0,0,0,1.098612,0,0,0,0,1,0,0,22.7,8.110491,1.098612,4.973494,1 +11,6,0,1,2,629946,0,3328.213,45.87885,1,8,1,199.4711,100.2229,0,0,0,299.694,0,0,0,3,10,3,71.3,17.2,1,22.7,0,0,0,0,1.098612,0,0,0,0,1,0,0,22.7,8.110491,1.098612,5.702762,1 +11,6,0,1,3,629946,0,3328.213,46.87885,1,8,1,47.68439,124.4014,0,0,1092.967,1265.053,1,0,0,2,0,3,71.3,17.2,1,22.7,0,0,0,0,1.098612,0,0,0,0,1,0,0,22.7,8.110491,1.098612,7.142869,1 +19,6,25,1,1,629947,1,6735.316,35.32375,1,8,1,10.42101,0,35.43143,0,0,45.85244,0,0,0,0,1,3,58.5,20.7,0,52.3,524.7,524.7,0,0,1.098612,6.262826,0,3.258096,7.649121,0,0,0,52.3,8.815269,1.098612,3.825428,1 +19,6,25,1,2,629947,1,6735.316,36.32375,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,58.5,20.7,0,52.3,524.7,524.7,0,0,1.098612,6.262826,0,3.258096,7.649121,0,0,0,52.3,8.815269,1.098612,,0 +19,6,25,1,3,629947,1,6735.316,37.32375,1,8,1,24.01894,4.566982,33.02774,0,0,61.61367,0,0,0,0,1,4,58.5,20.7,0,52.3,524.7,524.7,0,0,1.386294,6.262826,0,3.258096,7.649121,0,0,0,52.3,8.815269,1.386294,4.120884,1 +19,6,25,1,1,629950,1,6735.316,17.31143,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,53.7,27.6,1,51.1,524.7,524.7,1,1,1.098612,6.262826,0,3.258096,7.649121,0,0,0,51.1,8.815269,1.098612,,0 +19,6,25,1,2,629950,1,6735.316,18.31143,1,8,1,30.75769,0,0,0,516.8792,547.6369,1,0,0,4,0,3,53.7,27.6,1,51.1,524.7,524.7,0,0,1.098612,6.262826,0,3.258096,7.649121,0,0,0,51.1,8.815269,1.098612,6.305613,1 +19,6,25,1,3,629950,1,6735.316,19.31143,1,8,1,8.457375,0,23.68065,0,0,32.13802,0,0,0,0,1,4,53.7,27.6,1,51.1,524.7,524.7,0,0,1.386294,6.262826,0,3.258096,7.649121,0,0,0,51.1,8.815269,1.386294,3.47004,1 +19,6,25,1,1,629951,1,6735.316,3.425051,0,8,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,100,524.7,524.7,1,0,1.098612,6.262826,0,3.258096,7.649121,0,0,0,100,8.815269,1.098612,,0 +19,6,25,1,2,629951,1,6735.316,4.425051,0,8,1,22.13053,0,0,0,0,22.13053,0,0,0,0,0,3,77.40034,10.57626,0,100,524.7,524.7,1,0,1.098612,6.262826,0,3.258096,7.649121,0,0,0,100,8.815269,1.098612,3.096958,1 +19,6,25,1,3,629951,1,6735.316,5.425051,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,100,524.7,524.7,1,0,1.386294,6.262826,0,3.258096,7.649121,0,0,0,100,8.815269,1.386294,,0 +11,6,0,1,1,629952,0,7818.769,44.47639,1,13,1,102.7027,70.32433,0,0,0,173.027,0,0,0,6,0,3,43.6,20.7,1,39.8,0,307.92,0,0,1.098612,5.72984,0,0,0,0,1,0,39.8,8.96441,1.098612,5.153448,1 +11,6,0,1,2,629952,0,7818.769,45.47639,1,13,1,61.98724,74.58979,52.36098,0,0,188.938,0,0,0,5,0,3,43.6,20.7,1,39.8,0,307.92,0,0,1.098612,5.72984,0,0,0,0,1,0,39.8,8.96441,1.098612,5.241419,1 +11,6,0,1,3,629952,0,7818.769,46.47639,1,13,1,96.49854,61.25052,0,0,0,157.7491,0,0,0,4,0,3,43.6,20.7,1,39.8,0,307.92,0,0,1.098612,5.72984,0,0,0,0,1,0,39.8,8.96441,1.098612,5.061006,1 +11,6,0,1,4,629952,0,7818.769,47.47639,1,13,1,114.7787,103.0158,0,0,0,217.7944,0,0,0,9,0,2,43.6,20.7,1,39.8,0,307.92,0,0,.6931472,5.72984,0,0,0,0,1,0,39.8,8.96441,.6931472,5.383552,1 +11,6,0,1,5,629952,0,7818.769,48.47639,1,13,1,151.5562,143.6164,27.0636,0,0,322.2361,0,0,0,8,1,2,43.6,20.7,1,39.8,0,307.92,0,0,.6931472,5.72984,0,0,0,0,1,0,39.8,8.96441,.6931472,5.775285,1 +11,6,0,1,1,629953,0,7818.769,49.79055,0,7,1,73.71008,58.73219,0,0,0,132.4423,0,0,0,7,0,3,83,24.1,1,45.5,0,307.92,0,0,1.098612,5.72984,0,0,0,1,0,0,45.5,8.96441,1.098612,4.886147,1 +11,6,0,1,2,629953,0,7818.769,50.79055,0,7,1,160.8933,98.10847,44.21149,0,0,303.2133,0,0,0,12,0,3,83,24.1,1,45.5,0,307.92,0,0,1.098612,5.72984,0,0,0,1,0,0,45.5,8.96441,1.098612,5.714437,1 +11,6,0,1,3,629953,0,7818.769,51.79055,0,7,1,49.604,48.35348,0,0,268.862,366.8195,1,0,0,6,0,3,83,24.1,1,45.5,0,307.92,0,0,1.098612,5.72984,0,0,0,1,0,0,45.5,8.96441,1.098612,5.90487,1 +11,6,0,1,1,629954,0,7818.769,4.865161,0,13,1,34.39803,23.50368,0,0,0,57.90172,0,0,0,5,0,3,77.40034,10.57626,0,63,0,307.92,1,0,1.098612,5.72984,0,0,0,1,0,0,63,8.96441,1.098612,4.058747,1 +11,6,0,1,2,629954,0,7818.769,5.865161,0,13,1,48.31358,29.17047,0,0,366.9098,444.3938,1,0,0,6,0,3,77.40034,10.57626,0,63,0,307.92,1,0,1.098612,5.72984,0,0,0,1,0,0,63,8.96441,1.098612,6.096711,1 +11,6,0,1,3,629954,0,7818.769,6.865161,0,13,1,28.34514,15.00625,0,0,0,43.35139,0,0,0,4,0,3,77.40034,10.57626,0,63,0,307.92,1,0,1.098612,5.72984,0,0,0,1,0,0,63,8.96441,1.098612,3.769339,1 +11,6,0,1,4,629954,0,7818.769,7.865161,0,13,1,28.50713,25.5889,0,0,0,54.09602,0,0,0,4,0,2,77.40034,10.57626,0,63,0,307.92,1,0,.6931472,5.72984,0,0,0,1,0,0,63,8.96441,.6931472,3.990761,1 +11,6,0,1,5,629954,0,7818.769,8.865161,0,13,1,13.1935,8.907308,0,0,0,22.10081,0,0,0,1,0,2,77.40034,10.57626,0,63,0,307.92,1,0,.6931472,5.72984,0,0,0,1,0,0,63,8.96441,.6931472,3.095614,1 +13,6,0,1,1,629955,0,4858.679,5.218344,1,12,1,9.255363,0,0,0,0,9.255363,0,0,0,1,0,4,76.7,10.57626,0,51.9,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,1,0,0,51.9,8.488728,1.386294,2.225203,1 +13,6,0,1,2,629955,0,4858.679,6.218344,1,12,1,37.77862,10.40801,0,0,0,48.18663,0,0,0,3,0,4,76.7,10.57626,0,51.9,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,1,0,0,51.9,8.488728,1.386294,3.875082,1 +13,6,0,1,3,629955,0,4858.679,7.218344,1,12,1,33.96227,17.92453,0,0,0,51.88679,0,0,0,1,0,4,76.7,10.57626,0,51.9,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,1,0,0,51.9,8.488728,1.386294,3.949064,1 +13,6,0,1,1,629956,0,4858.679,10.3217,1,12,1,7.993269,0,0,0,0,7.993269,0,0,0,1,0,4,81.7,10.57626,0,74.1,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,1,0,0,74.1,8.488728,1.386294,2.0786,1 +13,6,0,1,2,629956,0,4858.679,11.3217,1,12,1,5.666792,11.03136,0,0,0,16.69815,0,0,0,1,0,4,81.7,10.57626,0,74.1,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,1,0,0,74.1,8.488728,1.386294,2.815298,1 +13,6,0,1,3,629956,0,4858.679,12.3217,1,12,1,0,20.42882,0,0,0,20.42882,0,0,0,0,0,4,81.7,10.57626,0,74.1,450,150,1,1,1.386294,5.010635,1,4.564348,6.160541,1,0,0,74.1,8.488728,1.386294,3.016947,1 +13,6,0,1,1,629957,0,4858.679,35.87406,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83,10.3,0,68.2,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,0,0,0,68.2,8.488728,1.386294,,0 +13,6,0,1,2,629957,0,4858.679,36.87406,1,12,1,29.08953,41.27314,0,0,0,70.36268,0,0,0,4,0,4,83,10.3,0,68.2,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,0,0,0,68.2,8.488728,1.386294,4.253663,1 +13,6,0,1,3,629957,0,4858.679,37.87406,1,12,1,63.80789,97.62608,0,0,501.5437,662.9777,1,0,0,5,0,4,83,10.3,0,68.2,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,0,0,0,68.2,8.488728,1.386294,6.496741,1 +13,6,0,1,1,629958,0,4858.679,37.23203,0,12,1,51.3252,0,2.103492,0,0,53.42869,0,0,0,4,0,4,69.1,6.9,0,65.9,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,0,0,0,65.9,8.488728,1.386294,3.978348,1 +13,6,0,1,2,629958,0,4858.679,38.23203,0,12,1,0,6.422365,0,0,0,6.422365,0,0,0,0,0,4,69.1,6.9,0,65.9,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,0,0,0,65.9,8.488728,1.386294,1.859786,1 +13,6,0,1,3,629958,0,4858.679,39.23203,0,12,1,27.78731,12.44254,0,0,0,40.22985,0,0,0,3,0,4,69.1,6.9,0,65.9,450,150,0,0,1.386294,5.010635,1,4.564348,6.160541,0,0,0,65.9,8.488728,1.386294,3.694609,1 +11,6,0,0,1,629959,0,10323.6,7.348392,0,12,1,57.13077,28.76428,0,0,0,85.89505,0,0,0,13,0,4,96.7,10.57626,0,55.6,0,0,1,0,1.386294,0,0,0,0,1,0,0,55.6,9.242285,1.386294,4.453126,1 +11,6,0,0,2,629959,0,10323.6,8.348392,0,12,1,29.61276,15.09112,0,0,0,44.70387,0,0,0,7,0,4,96.7,10.57626,0,55.6,0,0,1,0,1.386294,0,0,0,0,1,0,0,55.6,9.242285,1.386294,3.80006,1 +11,6,0,0,3,629959,0,10323.6,9.348392,0,12,1,20.41522,0,0,0,0,20.41522,0,0,0,3,0,4,96.7,10.57626,0,55.6,0,0,1,0,1.386294,0,0,0,0,1,0,0,55.6,9.242285,1.386294,3.016281,1 +11,6,0,0,1,629960,0,10323.6,32.14237,0,14,1,66.44096,26.94033,0,0,0,93.38129,0,0,0,1,0,4,88.3,3.4,0,72.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.7,9.242285,1.386294,4.536691,1 +11,6,0,0,2,629960,0,10323.6,33.14237,0,14,1,43.65983,36.32498,0,0,0,79.98482,0,0,0,1,0,4,88.3,3.4,0,72.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.7,9.242285,1.386294,4.381837,1 +11,6,0,0,3,629960,0,10323.6,34.14237,0,14,1,2.076125,32.87197,0,0,0,34.9481,0,0,0,0,0,4,88.3,3.4,0,72.7,0,0,0,0,1.386294,0,0,0,0,1,0,0,72.7,9.242285,1.386294,3.553864,1 +11,6,0,0,1,629961,0,10323.6,32.60233,1,12,1,40.83792,51.50233,13.54211,0,1005.501,1111.384,1,0,0,6,1,4,90.4,10.3,0,79.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,79.5,9.242285,1.386294,7.013361,1 +11,6,0,0,2,629961,0,10323.6,33.60233,1,12,1,40.81245,23.81169,0,0,0,64.62415,0,0,0,9,0,4,90.4,10.3,0,79.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,79.5,9.242285,1.386294,4.168588,1 +11,6,0,0,3,629961,0,10323.6,34.60233,1,12,1,495.6747,0,21.5917,0,0,517.2664,0,0,0,4,1,4,90.4,10.3,0,79.5,0,0,0,0,1.386294,0,0,0,0,1,0,0,79.5,9.242285,1.386294,6.248558,1 +11,6,0,0,1,629962,0,10323.6,4.684463,0,12,1,272.9581,17.99831,0,0,0,290.9564,0,0,0,20,0,4,77.40034,10.57626,0,63,0,0,1,0,1.386294,0,0,0,0,1,0,0,63,9.242285,1.386294,5.673173,1 +11,6,0,0,2,629962,0,10323.6,5.684463,0,12,1,53.53075,24.44951,0,0,753.9863,831.9666,2,0,0,7,0,4,77.40034,10.57626,0,63,0,0,1,0,1.386294,0,0,0,0,1,0,0,63,9.242285,1.386294,6.723792,1 +11,6,0,0,3,629962,0,10323.6,6.684463,0,12,1,48.78893,4.757785,0,0,0,53.54671,0,0,0,4,0,4,77.40034,10.57626,0,63,0,0,1,0,1.386294,0,0,0,0,1,0,0,63,9.242285,1.386294,3.980554,1 +6,6,25,0,1,629973,0,12762.93,27.80014,1,12,1,104.9513,2.666102,0,0,420.6517,528.2692,1,0,0,3,0,3,83.5,24.1,0,68.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,68.2,9.454378,1.098612,6.269606,1 +6,6,25,0,2,629973,0,12762.93,28.80014,1,12,1,25.81625,0,0,0,850.7972,876.6135,1,0,0,1,0,3,83.5,24.1,0,68.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,68.2,9.454378,1.098612,6.776066,1 +6,6,25,0,3,629973,0,12762.93,29.80014,1,12,1,12.11073,0,0,0,0,12.11073,0,0,0,1,0,5,83.5,24.1,0,68.2,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,68.2,9.454378,1.609438,2.494092,1 +6,6,25,0,1,629974,0,12762.93,31.77276,0,12,1,30.04655,0,0,0,0,30.04655,0,0,0,2,0,3,87.2,13.8,0,79.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,79.5,9.454378,1.098612,3.402748,1 +6,6,25,0,2,629974,0,12762.93,32.77276,0,12,1,26.1959,0,0,0,0,26.1959,0,0,0,2,0,3,87.2,13.8,0,79.5,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,79.5,9.454378,1.098612,3.265603,1 +6,6,25,0,3,629974,0,12762.93,33.77276,0,12,1,15.22491,0,0,0,0,15.22491,0,0,0,1,0,5,87.2,13.8,0,79.5,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,1,0,0,79.5,9.454378,1.609438,2.722933,1 +13,6,0,0,1,629982,1,12033.79,49.68104,0,10,1,0,10.42101,0,0,0,10.42101,0,0,0,0,0,3,84.6,10.3,0,58,450,300,0,0,1.098612,5.703783,1,4.564348,6.160541,0,1,0,58,9.395557,1.098612,2.343824,1 +13,6,0,0,2,629982,1,12033.79,50.68104,0,10,1,41.63541,9.624907,43.30083,0,0,94.56114,0,0,0,1,0,3,84.6,10.3,0,58,450,300,0,0,1.098612,5.703783,1,4.564348,6.160541,0,1,0,58,9.395557,1.098612,4.549247,1 +13,6,0,0,3,629982,1,12033.79,51.68104,0,10,1,675.2368,22.08728,117.6083,0,652.571,1467.503,1,0,0,9,26,3,84.6,10.3,0,58,450,300,0,0,1.098612,5.703783,1,4.564348,6.160541,0,1,0,58,9.395557,1.098612,7.291318,1 +13,6,0,0,1,629983,1,12033.79,41.0267,1,15,1,0,0,0,0,0,0,0,0,0,0,0,3,80.9,10.3,0,68.2,450,300,0,0,1.098612,5.703783,1,4.564348,6.160541,1,0,0,68.2,9.395557,1.098612,,0 +13,6,0,0,2,629983,1,12033.79,42.0267,1,15,1,7.876969,6.414104,0,0,0,14.29107,0,0,0,0,0,3,80.9,10.3,0,68.2,450,300,0,0,1.098612,5.703783,1,4.564348,6.160541,1,0,0,68.2,9.395557,1.098612,2.659635,1 +13,6,0,0,3,629983,1,12033.79,43.0267,1,15,1,107.2395,5.483762,0,0,0,112.7233,0,0,0,0,7,3,80.9,10.3,0,68.2,450,300,0,0,1.098612,5.703783,1,4.564348,6.160541,1,0,0,68.2,9.395557,1.098612,4.724936,1 +11,6,0,0,1,630014,0,9747.801,54.6694,1,11,1,115.4609,142.5223,31.95243,0,1217.047,1506.982,1,0,0,10,0,1,88.8,31,1,51.1,0,260.04,0,0,0,5.560835,0,0,0,0,1,0,51.1,9.184899,0,7.317864,1 +11,6,0,0,2,630014,0,9747.801,55.6694,1,11,1,58.28362,247.9211,11.93208,0,0,318.1367,0,0,0,8,0,1,88.8,31,1,51.1,0,260.04,0,0,0,5.560835,0,0,0,0,1,0,51.1,9.184899,0,5.762481,1 +11,6,0,0,3,630014,0,9747.801,56.6694,1,11,1,115.692,172.0656,0,0,0,287.7577,0,0,0,10,0,1,88.8,31,1,51.1,0,260.04,0,0,0,5.560835,0,0,0,0,1,0,51.1,9.184899,0,5.662119,1 +11,6,0,0,4,630014,0,9747.801,57.6694,1,11,1,143.181,116.9059,27.50283,0,0,287.5897,0,0,0,7,0,1,88.8,31,1,51.1,0,260.04,0,0,0,5.560835,0,0,0,0,1,0,51.1,9.184899,0,5.661535,1 +11,6,0,0,5,630014,0,9747.801,58.6694,1,11,1,173.2419,166.8439,0,0,0,340.0858,0,0,0,9,0,1,88.8,31,1,51.1,0,260.04,0,0,0,5.560835,0,0,0,0,1,0,51.1,9.184899,0,5.829198,1 +16,6,95,1,1,630041,0,9325.653,26.32444,0,12,1,4.206984,0,29.44888,0,0,33.65587,0,0,0,1,0,3,86.2,6.9,0,90.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,90.9,9.140632,1.098612,3.516187,1 +16,6,95,1,2,630041,0,9325.653,27.32444,0,12,1,9.066868,3.298073,18.13374,18.88931,0,30.49868,0,0,1,1,0,3,86.2,6.9,0,90.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,90.9,9.140632,1.098612,3.417683,1 +16,6,95,1,3,630041,0,9325.653,28.32444,0,12,1,126.5523,2.737564,0,37.73585,0,129.2899,0,0,2,2,0,3,86.2,6.9,0,90.9,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,0,0,0,90.9,9.140632,1.098612,4.862057,1 +16,6,95,1,1,630042,0,9325.653,23.49623,1,13,1,15.14514,1.95204,31.55238,0,0,48.64956,0,0,0,2,0,3,59.6,3.4,0,76.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,76.1,9.140632,1.098612,3.884643,1 +16,6,95,1,2,630042,0,9325.653,24.49623,1,13,1,16.62259,32.66339,15.11145,283.3396,358.8969,423.2943,1,0,15,1,0,3,59.6,3.4,0,76.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,76.1,9.140632,1.098612,6.048068,1 +16,6,95,1,3,630042,0,9325.653,25.49623,1,13,1,123.8422,22.74442,0,435.6775,1661.406,1807.993,1,0,23,6,0,3,59.6,3.4,0,76.1,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,76.1,9.140632,1.098612,7.499973,1 +19,6,25,0,1,630043,0,5065.028,28.72827,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,90.4,0,0,75,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,75,8.530313,1.386294,,0 +19,6,25,0,2,630043,0,5065.028,29.72827,0,8,1,3.777862,2.315829,0,0,0,6.093691,0,0,0,1,0,4,90.4,0,0,75,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,75,8.530313,1.386294,1.807254,1 +19,6,25,0,3,630043,0,5065.028,30.72827,0,8,1,0,0,0,0,0,0,0,0,0,0,0,4,90.4,0,0,75,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,75,8.530313,1.386294,,0 +19,6,25,1,1,630044,0,5065.028,6.266941,1,12,1,35.75936,0,24.40051,0,0,60.15987,0,0,0,3,0,4,86.7,10.57626,0,70.4,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.4,8.530313,1.386294,4.097005,1 +19,6,25,1,2,630044,0,5065.028,7.266941,1,12,1,6.422365,0,0,0,0,6.422365,0,0,0,1,0,4,86.7,10.57626,0,70.4,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.4,8.530313,1.386294,1.859786,1 +19,6,25,1,3,630044,0,5065.028,8.26694,1,12,1,42.19554,0,17.15266,0,0,59.3482,0,0,0,1,0,4,86.7,10.57626,0,70.4,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.4,8.530313,1.386294,4.083422,1 +19,6,25,1,1,630045,0,5065.028,7.624915,0,12,1,12.62095,0,26.504,0,0,39.12495,0,0,0,1,0,4,85,10.57626,0,70.4,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.4,8.530313,1.386294,3.66676,1 +19,6,25,1,2,630045,0,5065.028,8.624914,0,12,1,24.17831,0,13.6003,0,0,37.77862,0,0,0,3,0,4,85,10.57626,0,70.4,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.4,8.530313,1.386294,3.631743,1 +19,6,25,1,3,630045,0,5065.028,9.624914,0,12,1,13.72213,0,0,0,0,13.72213,0,0,0,2,0,4,85,10.57626,0,70.4,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.4,8.530313,1.386294,2.61901,1 +19,6,25,1,1,630046,0,5065.028,26.28611,1,12,1,29.44888,3.89146,0,0,0,33.34034,0,0,0,1,0,4,88.3,6.9,0,58,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,58,8.530313,1.386294,3.506768,1 +19,6,25,1,2,630046,0,5065.028,27.28611,1,12,1,0,5.4779,0,0,0,5.4779,0,0,0,0,0,4,88.3,6.9,0,58,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,58,8.530313,1.386294,1.700722,1 +19,6,25,1,3,630046,0,5065.028,28.28611,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,6.9,0,58,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,58,8.530313,1.386294,,0 +13,6,0,1,1,630052,0,2579.109,52.56673,1,10,1,316.1236,53.21625,35.97122,0,0,405.311,0,0,0,9,30,1,61.2,37.9,1,58,150,268.8,0,0,0,5.593967,1,4.564348,5.061929,0,1,0,58,7.855587,0,6.004655,1 +13,6,0,1,2,630052,0,2579.109,53.56673,1,10,1,122.2475,41.9514,0,0,412.3007,576.4996,1,0,0,3,11,1,61.2,37.9,1,58,150,268.8,0,0,0,5.593967,1,4.564348,5.061929,0,1,0,58,7.855587,0,6.356975,1 +13,6,0,1,3,630052,0,2579.109,54.56673,1,10,1,52.24913,53.02768,10.38062,0,988.2353,1103.893,1,0,0,5,0,1,61.2,37.9,1,58,150,268.8,0,0,0,5.593967,1,4.564348,5.061929,0,1,0,58,7.855587,0,7.006598,1 +11,6,0,1,1,630063,0,5932.924,57.64545,0,4,1,283.1147,134.9979,2.750741,0,363.0977,783.9611,1,0,0,13,0,2,34,31,1,17,0,319.43,0,0,.6931472,5.766538,0,0,0,1,0,0,17,8.688441,.6931472,6.66436,1 +11,6,0,1,2,630063,0,5932.924,58.64545,0,4,1,58.46621,110.615,5.504935,0,0,174.5862,0,0,0,8,0,2,34,31,1,17,0,319.43,0,0,.6931472,5.766538,0,0,0,1,0,0,17,8.688441,.6931472,5.162418,1 +11,6,0,1,3,630063,0,5932.924,59.64545,0,4,1,145.6747,202.1003,36.89619,0,0,384.6713,0,0,0,15,0,2,34,31,1,17,0,319.43,0,0,.6931472,5.766538,0,0,0,1,0,0,17,8.688441,.6931472,5.952389,1 +11,6,0,1,1,630064,0,5932.924,55.13484,1,12,1,159.543,166.2336,45.70461,0,0,371.4812,0,0,0,10,13,2,68.6,27.6,1,45.5,0,319.43,0,0,.6931472,5.766538,0,0,0,0,1,0,45.5,8.688441,.6931472,5.917498,1 +11,6,0,1,2,630064,0,5932.924,56.13484,1,12,1,107.8208,199.8026,0,0,533.0296,840.653,1,0,0,6,0,2,68.6,27.6,1,45.5,0,319.43,0,0,.6931472,5.766538,0,0,0,0,1,0,45.5,8.688441,.6931472,6.734179,1 +11,6,0,1,3,630064,0,5932.924,57.13484,1,12,1,236.6782,267.5986,34.60208,0,623.5294,1162.408,1,0,0,14,0,2,68.6,27.6,1,45.5,0,319.43,0,0,.6931472,5.766538,0,0,0,0,1,0,45.5,8.688441,.6931472,7.058249,1 +13,6,0,0,1,630065,0,14799.79,47.06366,1,12,1,338.8725,123.9798,39.12495,0,0,501.9773,0,0,0,13,25,4,77.7,27.6,0,88.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.1,9.602436,1.386294,6.218555,1 +13,6,0,0,2,630065,0,14799.79,48.06366,1,12,1,340.0076,72.76917,26.44503,0,0,439.2218,0,0,0,5,30,4,77.7,27.6,0,88.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.1,9.602436,1.386294,6.085004,1 +13,6,0,0,3,630065,0,14799.79,49.06366,1,12,1,317.3242,45.99657,42.06861,0,0,405.3894,0,0,0,4,25,4,77.7,27.6,0,88.1,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,88.1,9.602436,1.386294,6.004848,1 +13,6,0,0,1,630066,0,14799.79,20.54757,1,11,1,110.223,25.88136,34.07657,0,0,170.1809,0,0,0,3,15,4,56.4,10.3,0,95.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,95.5,9.602436,1.386294,5.136862,1 +13,6,0,0,2,630066,0,14799.79,21.54757,1,11,1,32.48961,43.78542,0,0,0,76.27503,0,0,0,1,4,4,56.4,10.3,0,95.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,95.5,9.602436,1.386294,4.334346,1 +13,6,0,0,3,630066,0,14799.79,22.54757,1,11,1,35.33448,61.31046,14.62436,0,0,111.2693,0,0,0,4,0,4,56.4,10.3,0,95.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,95.5,9.602436,1.386294,4.711953,1 +13,6,0,0,1,630067,0,14799.79,4.164271,1,12,1,246.1085,22.03618,40.77829,0,460.244,769.167,1,0,0,17,17,4,77.40034,10.57626,0,40.7,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,40.7,9.602436,1.386294,6.645308,1 +13,6,0,0,2,630067,0,14799.79,5.164271,1,12,1,117.8693,27.37061,13.6003,0,0,158.8402,0,0,0,10,10,4,77.40034,10.57626,0,40.7,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,40.7,9.602436,1.386294,5.067899,1 +13,6,0,0,3,630067,0,14799.79,6.164271,1,12,1,90.90909,11.24185,51.73242,0,0,153.8834,0,0,0,11,0,4,77.40034,10.57626,0,40.7,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,40.7,9.602436,1.386294,5.036195,1 +13,6,0,0,1,630068,0,14799.79,57.22108,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,82.4,6.9,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,68.2,9.602436,1.386294,,0 +13,6,0,0,2,630068,0,14799.79,58.22108,0,12,1,33.24518,31.11069,26.44503,0,0,90.8009,0,0,0,1,1,4,82.4,6.9,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,68.2,9.602436,1.386294,4.508669,1 +13,6,0,0,3,630068,0,14799.79,59.22108,0,12,1,12.00686,0,42.06861,0,0,54.07547,0,0,0,0,1,4,82.4,6.9,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,68.2,9.602436,1.386294,3.990381,1 +6,6,25,0,1,630069,1,6735.316,25.16359,1,12,1,12.69573,0,37.07998,0,0,49.77571,0,0,0,0,1,3,63.8,3.4,0,60.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,60.2,8.815269,1.098612,3.907527,1 +6,6,25,0,2,630069,1,6735.316,26.16359,1,12,1,33.78891,22.25892,0,0,478.7396,534.7874,1,0,0,0,0,3,63.8,3.4,0,60.2,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,1,0,0,60.2,8.815269,1.098612,6.281869,1 +6,6,25,0,3,630069,1,6735.316,27.16359,1,12,1,58.13149,24.42561,38.97232,0,0,121.5294,0,0,0,3,1,4,63.8,3.4,0,60.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,60.2,8.815269,1.386294,4.800156,1 +6,6,25,0,1,630070,1,6735.316,5.735797,0,12,1,16.92764,0,0,0,0,16.92764,0,0,0,0,0,3,81.7,10.57626,0,70.4,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,70.4,8.815269,1.098612,2.828948,1 +6,6,25,0,2,630070,1,6735.316,6.735797,0,12,1,52.77145,6.192103,0,0,0,58.96355,0,0,0,2,0,3,81.7,10.57626,0,70.4,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,70.4,8.815269,1.098612,4.07692,1 +6,6,25,0,3,630070,1,6735.316,7.735797,0,12,1,11.41868,9.816609,0,0,0,21.23529,0,0,0,1,0,4,81.7,10.57626,0,70.4,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.4,8.815269,1.386294,3.055665,1 +6,6,25,0,1,630071,1,6735.316,26.5462,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.4,6.9,0,73.9,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,73.9,8.815269,1.098612,,0 +6,6,25,0,2,630071,1,6735.316,27.5462,0,12,1,5.694761,5.125285,0,0,0,10.82005,0,0,0,1,0,3,81.4,6.9,0,73.9,750,750,0,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,73.9,8.815269,1.098612,2.381401,1 +6,6,25,0,3,630071,1,6735.316,28.5462,0,12,1,14.18685,0,0,0,0,14.18685,0,0,0,0,0,4,81.4,6.9,0,73.9,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,73.9,8.815269,1.386294,2.652316,1 +11,6,0,0,1,630072,1,8102.918,3.723477,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,81.5,0,0,1,1,1.098612,0,0,0,0,1,0,0,81.5,9.000103,1.098612,,0 +11,6,0,0,2,630072,1,8102.918,4.723477,1,12,1,22.77904,0,0,0,0,22.77904,0,0,0,3,0,4,77.40034,10.57626,0,81.5,0,0,1,1,1.386294,0,0,0,0,1,0,0,81.5,9.000103,1.386294,3.125841,1 +11,6,0,0,3,630072,1,8102.918,5.723477,1,12,1,12.45675,6.83391,0,0,0,19.29066,0,0,0,0,0,4,77.40034,10.57626,0,81.5,0,0,1,1,1.386294,0,0,0,0,1,0,0,81.5,9.000103,1.386294,2.959621,1 +11,6,0,0,1,630073,1,8102.918,23.02533,1,12,1,19.04359,34.74397,0,0,528.5654,582.353,1,0,0,1,0,3,83,6.9,0,63.6,0,0,0,0,1.098612,0,0,0,0,0,0,0,63.6,9.000103,1.098612,6.367077,1 +11,6,0,0,2,630073,1,8102.918,24.02533,1,12,1,0,45.59605,0,0,0,45.59605,0,0,0,0,0,4,83,6.9,0,63.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,63.6,9.000103,1.386294,3.819821,1 +11,6,0,0,3,630073,1,8102.918,25.02533,1,12,1,27.68166,41.6609,0,0,0,69.34256,0,0,0,2,0,4,83,6.9,0,63.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,63.6,9.000103,1.386294,4.239059,1 +11,6,0,0,1,630074,1,8102.918,25.24572,0,12,1,59.24672,0,0,0,0,59.24672,0,0,0,4,0,3,81.4,3.4,0,67,0,0,0,0,1.098612,0,0,0,0,1,0,0,67,9.000103,1.098612,4.08171,1 +11,6,0,0,2,630074,1,8102.918,26.24572,0,12,1,0,2.46773,0,0,0,2.46773,0,0,0,0,0,4,81.4,3.4,0,67,0,0,0,0,1.386294,0,0,0,0,1,0,0,67,9.000103,1.386294,.9032986,1 +11,6,0,0,3,630074,1,8102.918,27.24572,0,12,1,37.02422,0,0,0,0,37.02422,0,0,0,0,0,4,81.4,3.4,0,67,0,0,0,0,1.386294,0,0,0,0,1,0,0,67,9.000103,1.386294,3.611572,1 +13,6,0,1,1,630081,0,6735.316,27.50445,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,60.1,10.3,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,64.8,8.815269,1.098612,,0 +13,6,0,1,2,630081,0,6735.316,28.50445,0,12,1,62.41395,28.10922,33.96053,0,0,124.4837,0,0,0,8,0,3,60.1,10.3,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,64.8,8.815269,1.098612,4.824175,1 +13,6,0,1,3,630081,0,6735.316,29.50445,0,12,1,306.2684,29.65924,0,0,0,335.9276,0,0,0,3,23,3,60.1,10.3,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,64.8,8.815269,1.098612,5.816896,1 +13,6,0,1,4,630081,0,6735.316,30.50445,0,12,1,396.6755,64.69588,28.71175,0,0,490.0831,0,0,0,6,32,3,60.1,10.3,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,64.8,8.815269,1.098612,6.194575,1 +13,6,0,1,5,630081,0,6735.316,31.50445,0,12,1,347.8559,50.2916,18.86792,0,0,417.0154,0,0,0,9,30,3,60.1,10.3,0,64.8,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,64.8,8.815269,1.098612,6.033123,1 +13,6,0,1,1,630082,0,6735.316,27.50171,1,12,1,53.51833,53.14172,35.67889,0,0,142.3389,0,0,0,4,0,3,48.9,17.2,0,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,67,8.815269,1.098612,4.958211,1 +13,6,0,1,2,630082,0,6735.316,28.50171,1,12,1,31.6659,19.96329,0,0,0,51.62919,0,0,0,4,0,3,48.9,17.2,0,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,67,8.815269,1.098612,3.944087,1 +13,6,0,1,3,630082,0,6735.316,29.50171,1,12,1,90.45015,73.20152,33.65587,0,0,197.3075,0,0,0,6,22,3,48.9,17.2,0,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,67,8.815269,1.098612,5.284763,1 +13,6,0,1,4,630082,0,6735.316,30.50171,1,12,1,492.6332,53.55119,0,0,0,546.1844,0,0,0,11,49,3,48.9,17.2,0,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,67,8.815269,1.098612,6.302957,1 +13,6,0,1,5,630082,0,6735.316,31.50171,1,12,1,404.1166,28.0789,0,0,285.4202,717.6158,1,0,0,8,26,3,48.9,17.2,0,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,67,8.815269,1.098612,6.575934,1 +11,6,0,0,1,630091,1,0,53.94661,0,2,1,17.3439,47.69574,35.67889,0,0,100.7185,0,0,0,3,1,2,79.3,24.1,1,58,0,0,0,0,.6931472,0,0,0,0,0,0,1,58,0,.6931472,4.61233,1 +11,6,0,0,1,630092,1,0,11.86858,1,2,1,4.955401,0,0,0,0,4.955401,0,0,0,1,0,2,95,10.57626,1,66.7,0,0,1,1,.6931472,0,0,0,0,0,1,0,66.7,0,.6931472,1.600478,1 +17,6,25,1,1,630107,1,1093.702,59.66598,1,5,1,184.9344,266.094,16.57215,0,421.0749,888.6754,1,0,0,13,0,1,25.5,37.9,1,10.2,252,512.04,0,0,0,6.238403,0,3.258096,6.915723,0,0,1,10.2,6.998238,0,6.789732,1 +10,6,50,0,1,630109,1,1264.721,33.40726,1,10,1,12.62095,0,33.65587,0,0,46.27682,0,0,0,0,1,6,80.3,10.3,0,,795,0,0,0,1.791759,0,0,3.931826,7.37149,0,1,0,63.6,7.143397,1.791759,3.834641,1 +10,6,50,0,2,630109,1,1264.721,34.40726,1,10,1,43.8232,0,15.11145,0,368.7193,427.654,1,0,0,3,1,6,80.3,10.3,0,,795,0,0,0,1.791759,0,0,3.931826,7.37149,0,1,0,63.6,7.143397,1.791759,6.058314,1 +10,6,50,0,3,630109,1,1264.721,35.40726,1,10,1,52.83019,0,0,0,0,52.83019,0,0,0,2,0,7,80.3,10.3,0,,795,0,0,0,1.94591,0,0,3.931826,7.37149,0,1,0,63.6,7.143397,1.94591,3.967083,1 +10,6,50,0,1,630110,1,1264.721,12.02738,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,50,10.57626,1,51.9,795,0,1,1,1.791759,0,0,3.931826,7.37149,0,1,0,51.9,7.143397,1.791759,,0 +10,6,50,0,2,630110,1,1264.721,13.02738,1,10,1,35.88969,0,24.5561,0,0,60.44579,0,0,0,3,1,6,50,10.57626,1,51.9,795,0,1,1,1.791759,0,0,3.931826,7.37149,0,1,0,51.9,7.143397,1.791759,4.101747,1 +10,6,50,0,3,630110,1,1264.721,14.02738,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,50,10.57626,1,51.9,795,0,1,1,1.94591,0,0,3.931826,7.37149,0,1,0,51.9,7.143397,1.94591,,0 +10,6,50,0,1,630111,1,1264.721,13.65092,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,85,10.57626,1,77.8,795,0,1,1,1.791759,0,0,3.931826,7.37149,0,1,0,77.8,7.143397,1.791759,,0 +10,6,50,0,2,630111,1,1264.721,14.65092,1,10,1,11.33358,0,24.5561,0,0,35.88969,0,0,0,0,1,6,85,10.57626,1,77.8,795,0,1,1,1.791759,0,0,3.931826,7.37149,0,1,0,77.8,7.143397,1.791759,3.58045,1 +10,6,50,0,3,630111,1,1264.721,15.65092,1,10,1,2.744425,0,0,0,0,2.744425,0,0,0,0,1,7,85,10.57626,1,77.8,795,0,1,1,1.94591,0,0,3.931826,7.37149,0,1,0,77.8,7.143397,1.94591,1.009572,1 +10,6,50,0,1,630112,1,1264.721,9.549623,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,45.5,10.57626,1,51.9,795,0,1,0,1.791759,0,0,3.931826,7.37149,0,0,0,51.9,7.143397,1.791759,,0 +10,6,50,0,2,630112,1,1264.721,10.54962,0,10,1,11.33358,0,24.5561,0,0,35.88969,0,0,0,0,1,6,45.5,10.57626,1,51.9,795,0,1,0,1.791759,0,0,3.931826,7.37149,0,0,0,51.9,7.143397,1.791759,3.58045,1 +10,6,50,0,3,630112,1,1264.721,11.54962,0,10,1,3.430532,0,0,0,0,3.430532,0,0,0,1,0,7,45.5,10.57626,1,51.9,795,0,1,0,1.94591,0,0,3.931826,7.37149,0,0,0,51.9,7.143397,1.94591,1.232715,1 +10,6,50,0,1,630113,1,1264.721,10.86653,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,54.5,10.57626,1,51.9,795,0,1,1,1.791759,0,0,3.931826,7.37149,0,0,0,51.9,7.143397,1.791759,,0 +10,6,50,0,2,630113,1,1264.721,11.86653,1,10,1,11.33358,0,24.5561,0,0,35.88969,0,0,0,0,1,6,54.5,10.57626,1,51.9,795,0,1,1,1.791759,0,0,3.931826,7.37149,0,0,0,51.9,7.143397,1.791759,3.58045,1 +10,6,50,0,3,630113,1,1264.721,12.86653,1,10,1,0,0,0,0,0,0,0,0,0,0,0,7,54.5,10.57626,1,51.9,795,0,1,1,1.94591,0,0,3.931826,7.37149,0,0,0,51.9,7.143397,1.94591,,0 +10,6,50,0,1,630114,1,1264.721,32.61876,0,9,1,27.34539,0,0,0,0,27.34539,0,0,0,1,0,6,60.6,3.4,0,,795,0,0,0,1.791759,0,0,3.931826,7.37149,0,1,0,78.4,7.143397,1.791759,3.308548,1 +10,6,50,0,2,630114,1,1264.721,33.61876,0,9,1,120.8916,0,24.5561,0,0,145.4477,0,0,0,7,1,6,60.6,3.4,0,,795,0,0,0,1.791759,0,0,3.931826,7.37149,0,1,0,78.4,7.143397,1.791759,4.979816,1 +10,6,50,0,3,630114,1,1264.721,34.61876,0,9,1,50.42882,0,0,0,0,50.42882,0,0,0,2,0,7,60.6,3.4,0,,795,0,0,0,1.94591,0,0,3.931826,7.37149,0,1,0,78.4,7.143397,1.94591,3.920563,1 +11,6,0,0,1,630122,.5112414,1202.253,19.39767,1,10,1,17.24863,0,0,0,0,17.24863,0,0,0,0,0,2,77.40034,3.4,.1442925,,0,0,0,0,.6931472,0,0,0,0,0,0,0,70.68995,7.092784,.6931472,2.847733,1 +11,6,0,0,2,630122,.5112414,1202.253,20.39767,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,3.4,.1442925,,0,0,0,0,.6931472,0,0,0,0,0,0,0,70.68995,7.092784,.6931472,,0 +11,6,0,0,3,630122,.5112414,1202.253,21.39767,1,10,1,0,0,0,0,371.1835,371.1835,1,0,0,0,0,2,77.40034,3.4,.1442925,,0,0,0,0,.6931472,0,0,0,0,0,0,0,70.68995,7.092784,.6931472,5.916697,1 +11,6,0,0,1,630123,1,4382.488,14.52704,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,72.1,3.4,0,64.8,0,0,1,1,1.386294,0,0,0,0,0,0,0,64.8,8.3856,1.386294,,0 +11,6,0,0,2,630123,1,4382.488,15.52704,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,72.1,3.4,0,64.8,0,0,1,1,1.098612,0,0,0,0,0,0,0,64.8,8.3856,1.098612,,0 +11,6,0,0,3,630123,1,4382.488,16.52704,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,72.1,3.4,0,64.8,0,0,1,1,1.098612,0,0,0,0,0,0,0,64.8,8.3856,1.098612,,0 +11,6,0,0,1,630124,1,4382.488,59.35661,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,53.2,10.3,0,60.2,0,0,0,0,1.386294,0,0,0,0,0,1,0,60.2,8.3856,1.386294,,0 +11,6,0,0,2,630124,1,4382.488,60.35661,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,53.2,10.3,0,60.2,0,0,0,0,1.098612,0,0,0,0,0,1,0,60.2,8.3856,1.098612,,0 +11,6,0,0,3,630124,1,4382.488,61.35661,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,53.2,10.3,0,60.2,0,0,0,0,1.098612,0,0,0,0,0,1,0,60.2,8.3856,1.098612,,0 +11,6,0,0,1,630125,1,4382.488,53.9603,0,8,.3643835,0,0,0,0,216.239,216.239,1,1,0,0,0,4,84.1,3.4,0,65.9,0,0,0,0,1.386294,0,0,0,0,0,1,0,65.9,8.3856,1.386294,5.376384,1 +11,6,0,1,1,630157,0,11458.65,24.18344,0,16,1,22.94264,45.12718,30.92269,0,223.4414,322.4339,1,0,0,2,1,2,68.6,10.3,0,67,0,60,0,0,.6931472,4.094345,0,0,0,0,0,0,67,9.346587,.6931472,5.775898,1 +11,6,0,1,2,630157,0,11458.65,25.18344,0,16,1,38.26648,55.16828,32.73398,0,0,126.1687,0,0,0,3,1,3,68.6,10.3,0,67,0,60,0,0,1.098612,4.094345,0,0,0,0,0,0,67,9.346587,1.098612,4.83762,1 +11,6,0,1,3,630157,0,11458.65,26.18344,0,16,1,67.28735,99.6022,0,0,331.3373,498.2268,1,0,0,4,0,3,68.6,10.3,0,67,0,60,0,0,1.098612,4.094345,0,0,0,0,0,0,67,9.346587,1.098612,6.211055,1 +11,6,0,1,4,630157,0,11458.65,27.18344,0,16,1,35.68717,22.6082,36.02885,0,0,94.32422,0,0,0,4,0,4,68.6,10.3,0,67,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,67,9.346587,1.386294,4.546738,1 +11,6,0,1,5,630157,0,11458.65,28.18344,0,16,1,131.1419,0,0,0,0,131.1419,0,0,0,1,14,4,68.6,10.3,0,67,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,67,9.346587,1.386294,4.87628,1 +11,6,0,1,1,630158,0,11458.65,22.78166,1,16,1,14.96259,31.11222,0,0,549.6259,595.7007,2,0,0,3,0,2,83,17.2,0,83,0,60,0,0,.6931472,4.094345,0,0,0,0,0,0,83,9.346587,.6931472,6.389739,1 +11,6,0,1,2,630158,0,11458.65,23.78166,1,16,1,27.20148,8.298756,0,0,0,35.50023,0,0,0,2,0,3,83,17.2,0,83,0,60,0,0,1.098612,4.094345,0,0,0,0,0,0,83,9.346587,1.098612,3.569539,1 +11,6,0,1,3,630158,0,11458.65,24.78166,1,16,1,20.31316,15.22218,0,0,439.6953,475.2307,1,0,0,2,0,3,83,17.2,0,83,0,60,0,0,1.098612,4.094345,0,0,0,0,0,0,83,9.346587,1.098612,6.1638,1 +11,6,0,1,4,630158,0,11458.65,25.78166,1,16,1,14.20273,8.458618,4.096431,0,0,26.75778,0,0,0,1,0,4,83,17.2,0,83,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,83,9.346587,1.386294,3.286825,1 +11,6,0,1,5,630158,0,11458.65,26.78166,1,16,1,346.6263,0,22.14533,0,0,368.7716,0,0,0,7,30,4,83,17.2,0,83,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,83,9.346587,1.386294,5.910178,1 +11,6,0,1,1,630159,1,15066.05,18.19849,0,9,1,10.57977,7.270419,0,0,0,17.85019,0,0,0,0,0,6,71.3,0,0,64.8,0,163.2,0,0,1.791759,5.094976,0,0,0,0,0,0,64.8,9.620266,1.791759,2.882014,1 +11,6,0,1,1,630160,1,15066.05,16.34223,1,18,1,0,0,0,0,0,0,0,0,0,0,0,6,76.1,3.4,0,77.3,0,163.2,1,1,1.791759,5.094976,0,0,0,0,0,0,77.3,9.620266,1.791759,,0 +11,6,0,1,2,630160,1,15066.05,17.34223,1,18,1,13.28778,0,30.37206,0,0,43.65983,0,0,0,1,0,5,76.1,3.4,0,77.3,0,163.2,1,1,1.609438,5.094976,0,0,0,0,0,0,77.3,9.620266,1.609438,3.776428,1 +11,6,0,1,3,630160,1,15066.05,18.34223,1,18,1,12.45675,0,0,0,0,12.45675,0,0,0,0,0,5,76.1,3.4,0,77.3,0,163.2,0,0,1.609438,5.094976,0,0,0,0,0,0,77.3,9.620266,1.609438,2.522262,1 +11,6,0,1,1,630161,1,15066.05,7.039014,0,18,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,88.9,0,163.2,1,0,1.791759,5.094976,0,0,0,0,0,0,88.9,9.620266,1.791759,,0 +11,6,0,1,2,630161,1,15066.05,8.039015,0,18,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,10.57626,0,88.9,0,163.2,1,0,1.609438,5.094976,0,0,0,0,0,0,88.9,9.620266,1.609438,,0 +11,6,0,1,3,630161,1,15066.05,9.039015,0,18,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,10.57626,0,88.9,0,163.2,1,0,1.609438,5.094976,0,0,0,0,0,0,88.9,9.620266,1.609438,,0 +11,6,0,1,1,630162,1,15066.05,12.24914,0,18,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,88.9,0,163.2,1,0,1.791759,5.094976,0,0,0,0,0,0,88.9,9.620266,1.791759,,0 +11,6,0,1,2,630162,1,15066.05,13.24914,0,18,1,7.593014,0,0,0,0,7.593014,0,0,0,1,0,5,88.3,10.57626,0,88.9,0,163.2,1,0,1.609438,5.094976,0,0,0,0,0,0,88.9,9.620266,1.609438,2.027229,1 +11,6,0,1,3,630162,1,15066.05,14.24914,0,18,1,0,0,0,0,0,0,0,0,0,0,0,5,88.3,10.57626,0,88.9,0,163.2,1,0,1.609438,5.094976,0,0,0,0,0,0,88.9,9.620266,1.609438,,0 +11,6,0,1,1,630163,1,15066.05,49.65914,0,18,1,23.2755,1.675836,0,0,0,24.95133,0,0,0,0,0,6,91.5,0,0,77.4,0,163.2,0,0,1.791759,5.094976,0,0,0,1,0,0,77.4,9.620266,1.791759,3.216927,1 +11,6,0,1,2,630163,1,15066.05,50.65914,0,18,1,15.18603,0,33.02961,0,0,48.21564,0,0,0,1,0,5,91.5,0,0,77.4,0,163.2,0,0,1.609438,5.094976,0,0,0,1,0,0,77.4,9.620266,1.609438,3.875684,1 +11,6,0,1,3,630163,1,15066.05,51.65914,0,18,1,0,0,0,0,0,0,0,0,0,0,0,5,91.5,0,0,77.4,0,163.2,0,0,1.609438,5.094976,0,0,0,1,0,0,77.4,9.620266,1.609438,,0 +11,6,0,1,1,630164,1,15066.05,47.17317,1,18,1,0,0,0,0,0,0,0,0,0,0,0,6,85.1,13.8,0,71.6,0,163.2,0,0,1.791759,5.094976,0,0,0,1,0,0,71.6,9.620266,1.791759,,0 +11,6,0,1,2,630164,1,15066.05,48.17317,1,18,1,31.13136,9.943052,44.03948,0,0,85.11389,0,0,0,1,1,5,85.1,13.8,0,71.6,0,163.2,0,0,1.609438,5.094976,0,0,0,1,0,0,71.6,9.620266,1.609438,4.44399,1 +11,6,0,1,3,630164,1,15066.05,49.17317,1,18,1,2.422145,0,0,0,0,2.422145,0,0,0,0,0,5,85.1,13.8,0,71.6,0,163.2,0,0,1.609438,5.094976,0,0,0,1,0,0,71.6,9.620266,1.609438,.8846537,1 +18,6,25,1,1,630178,0,12082.44,9.563313,0,14,1,0,2.056708,0,0,0,2.056708,0,0,0,0,0,4,93.3,10.57626,0,96.3,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.399591,1.386294,.7211065,1 +18,6,25,1,2,630178,0,12082.44,10.56331,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,93.3,10.57626,0,96.3,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.399591,1.386294,,0 +18,6,25,1,3,630178,0,12082.44,11.56331,0,14,1,20.41522,3.391003,25.13149,0,0,48.93772,0,0,0,2,0,4,93.3,10.57626,0,96.3,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.399591,1.386294,3.890548,1 +18,6,25,1,1,630179,0,12082.44,36.3833,1,14,1,131.824,29.99154,0,0,0,161.8155,0,0,0,6,0,4,92,13.8,0,88.6,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,88.6,9.399591,1.386294,5.086457,1 +18,6,25,1,2,630179,0,12082.44,37.3833,1,14,1,22.77904,2.46773,0,0,0,25.24677,0,0,0,3,0,4,92,13.8,0,88.6,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,88.6,9.399591,1.386294,3.228698,1 +18,6,25,1,3,630179,0,12082.44,38.3833,1,14,1,9.342561,0,0,0,0,9.342561,0,0,0,1,0,4,92,13.8,0,88.6,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,88.6,9.399591,1.386294,2.23458,1 +18,6,25,1,1,630180,0,12082.44,12.09856,0,14,1,5.501481,0,0,0,0,5.501481,0,0,0,1,0,4,91.7,10.57626,0,96.3,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.399591,1.386294,1.705017,1 +18,6,25,1,2,630180,0,12082.44,13.09856,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,91.7,10.57626,0,96.3,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.399591,1.386294,,0 +18,6,25,1,3,630180,0,12082.44,14.09856,0,14,1,39.44637,0,0,0,0,39.44637,0,0,0,1,0,4,91.7,10.57626,0,96.3,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,96.3,9.399591,1.386294,3.674942,1 +18,6,25,1,1,630181,0,12082.44,42.05339,0,16,1,88.87008,8.569615,0,0,0,97.4397,0,0,0,5,0,4,81.4,6.9,0,76.1,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,76.1,9.399591,1.386294,4.579234,1 +18,6,25,1,2,630181,0,12082.44,43.05339,0,16,1,41.76158,0,0,0,0,41.76158,0,0,0,2,0,4,81.4,6.9,0,76.1,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,76.1,9.399591,1.386294,3.731977,1 +18,6,25,1,3,630181,0,12082.44,44.05339,0,16,1,21.79931,11.609,0,0,0,33.40831,0,0,0,3,0,4,81.4,6.9,0,76.1,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,76.1,9.399591,1.386294,3.508805,1 +11,6,0,1,1,630182,1,1049.667,59.97262,1,7,1,49.51333,41.15531,35.97122,0,0,126.6399,0,0,0,4,1,2,87.8,6.9,0,70.5,0,171.6,0,0,.6931472,5.145166,0,0,0,0,0,0,70.5,6.957181,.6931472,4.841347,1 +11,6,0,1,2,630182,1,1049.667,60.97262,1,7,1,7.593014,13.24981,0,0,0,20.84282,0,0,0,1,0,2,87.8,6.9,0,70.5,0,171.6,0,0,.6931472,5.145166,0,0,0,0,0,0,70.5,6.957181,.6931472,3.03701,1 +11,6,0,1,3,630182,1,1049.667,61.97262,1,7,1,66.78201,88.72665,32.0519,0,0,187.5605,0,0,0,7,0,2,87.8,6.9,0,70.5,0,171.6,0,0,.6931472,5.145166,0,0,0,0,0,0,70.5,6.957181,.6931472,5.234102,1 +13,6,0,1,1,630185,0,6735.316,61.46201,0,12,1,43.33193,0,0,0,0,43.33193,0,0,0,4,0,2,82.4,17.2,1,31.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,31.8,8.815269,.6931472,3.76889,1 +13,6,0,1,2,630185,0,6735.316,62.46201,0,12,1,23.04496,8.964866,0,0,0,32.00982,0,0,0,3,0,2,82.4,17.2,1,31.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,31.8,8.815269,.6931472,3.466043,1 +13,6,0,1,1,630186,0,6735.316,57.24025,1,11,1,13.04165,0,0,0,0,13.04165,0,0,0,2,0,2,80.3,24.1,1,46.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,46.6,8.815269,.6931472,2.568148,1 +13,6,0,1,2,630186,0,6735.316,58.24025,1,11,1,68.3793,18.44352,38.64375,0,717.416,842.8825,1,0,0,7,0,2,80.3,24.1,1,46.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,46.6,8.815269,.6931472,6.736827,1 +13,6,0,1,3,630186,0,6735.316,59.24025,1,11,1,130.3602,12.96741,0,0,0,143.3276,0,0,0,9,0,1,80.3,24.1,1,46.6,300,300,0,0,0,5.703783,1,4.564348,5.755076,1,0,0,46.6,8.815269,0,4.965133,1 +10,6,50,0,1,630189,1,3579.621,58.75702,0,3,1,0,0,0,0,0,0,0,0,0,0,0,2,69.9,3.4,1,57.1,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,1,57.1,8.183291,.6931472,,0 +10,6,50,0,2,630189,1,3579.621,59.75702,0,3,1,0,0,0,0,0,0,0,0,0,0,0,2,69.9,3.4,1,57.1,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,1,57.1,8.183291,.6931472,,0 +10,6,50,0,3,630189,1,3579.621,60.75702,0,3,1,0,0,0,0,0,0,0,0,0,0,0,2,69.9,3.4,1,57.1,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,1,57.1,8.183291,.6931472,,0 +10,6,50,1,1,630190,1,3579.621,48.68172,1,9,1,67.73244,12.7135,0,0,0,80.44594,0,0,0,3,0,2,89.9,20.7,1,56,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,1,56,8.183291,.6931472,4.387585,1 +10,6,50,1,2,630190,1,3579.621,49.68172,1,9,1,26.44503,4.280317,0,0,0,30.72535,0,0,0,2,0,2,89.9,20.7,1,56,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,1,56,8.183291,.6931472,3.425088,1 +10,6,50,1,3,630190,1,3579.621,50.68172,1,9,1,17.15266,24.01715,0,0,0,41.16981,0,0,0,2,0,2,89.9,20.7,1,56,1000,1000,0,0,.6931472,6.907755,0,3.931826,7.600903,0,0,1,56,8.183291,.6931472,3.717705,1 +11,6,0,0,1,630191,0,2842.806,48.14237,0,15,1,110.223,398.3719,34.85065,54.69079,755.5743,1299.02,2,0,6,12,0,1,48.9,20.7,0,48.9,0,155.48,0,0,0,5.046517,0,0,0,1,0,0,48.9,7.952899,0,7.169365,1 +11,6,0,0,2,630191,0,2842.806,49.14237,0,15,1,184.7374,562.2176,39.58066,5.666792,0,786.5357,0,0,1,21,0,1,48.9,20.7,0,48.9,0,155.48,0,0,0,5.046517,0,0,0,1,0,0,48.9,7.952899,0,6.667638,1 +11,6,0,0,3,630191,0,2842.806,50.14237,0,15,.8931507,131.3894,583.8319,41.79417,6.346484,330.7032,1087.719,1,0,1,16,0,1,48.9,20.7,0,48.9,0,155.48,0,0,0,5.046517,0,0,0,1,0,0,48.9,7.952899,0,6.991838,1 +15,6,95,0,1,630246,1,6735.316,14.98426,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,50.5,6.9,0,84.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,84.5,8.815269,1.386294,,0 +15,6,95,0,2,630246,1,6735.316,15.98426,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,50.5,6.9,0,84.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,84.5,8.815269,1.386294,,0 +15,6,95,0,3,630246,1,6735.316,16.98426,1,10,1,14.87889,0,0,0,0,14.87889,0,0,0,0,0,4,50.5,6.9,0,84.5,1000,1000,1,1,1.386294,6.907755,0,4.564348,6.959049,1,0,0,84.5,8.815269,1.386294,2.699944,1 +15,6,95,0,1,630247,1,6735.316,52.0794,1,10,1,9.310199,0,0,0,0,9.310199,0,0,0,1,0,4,68.5,27.6,0,40,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,40,8.815269,1.386294,2.23111,1 +15,6,95,0,2,630247,1,6735.316,53.0794,1,10,1,343.5839,0,0,0,0,343.5839,0,0,0,9,0,4,68.5,27.6,0,40,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,40,8.815269,1.386294,5.839431,1 +15,6,95,0,3,630247,1,6735.316,54.0794,1,10,1,6.920415,0,0,0,0,6.920415,0,0,0,1,0,4,68.5,27.6,0,40,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,40,8.815269,1.386294,1.934476,1 +15,6,95,0,1,630250,1,6735.316,14.95962,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,92.6,6.9,0,90.9,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,90.9,8.815269,1.386294,,0 +15,6,95,0,2,630250,1,6735.316,15.95962,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,92.6,6.9,0,90.9,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,90.9,8.815269,1.386294,,0 +15,6,95,0,3,630250,1,6735.316,16.95962,0,10,1,0,0,0,0,0,0,0,0,0,0,0,4,92.6,6.9,0,90.9,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,1,0,90.9,8.815269,1.386294,,0 +15,6,95,0,1,630251,1,6735.316,55.64682,0,5,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,1,70.68995,8.815269,1.386294,,0 +15,6,95,0,2,630251,1,6735.316,56.64682,0,5,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,1,70.68995,8.815269,1.386294,,0 +15,6,95,0,3,630251,1,6735.316,57.64682,0,5,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,1,70.68995,8.815269,1.386294,,0 +11,6,0,0,1,630259,0,10823.86,41.1718,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,80.9,3.4,0,75,0,229.65,0,0,1.098612,5.436556,0,0,0,1,0,0,75,9.2896,1.098612,,0 +11,6,0,0,2,630259,0,10823.86,42.1718,1,12,1,15.64886,0,0,0,0,15.64886,0,0,0,1,0,3,80.9,3.4,0,75,0,229.65,0,0,1.098612,5.436556,0,0,0,1,0,0,75,9.2896,1.098612,2.750398,1 +11,6,0,0,3,630259,0,10823.86,43.1718,1,12,1,26.48084,0,29.61672,0,0,56.09756,0,0,0,2,0,3,80.9,3.4,0,75,0,229.65,0,0,1.098612,5.436556,0,0,0,1,0,0,75,9.2896,1.098612,4.027092,1 +11,6,0,0,1,630260,0,10823.86,43.91239,0,18,1,22.11825,5.423224,0,0,0,27.54147,0,0,0,3,0,3,72.3,13.8,0,70.5,0,229.65,0,0,1.098612,5.436556,0,0,0,1,0,0,70.5,9.2896,1.098612,3.315693,1 +11,6,0,0,2,630260,0,10823.86,44.91239,0,18,1,55.72519,8.812977,0,0,1277.481,1342.019,1,0,0,3,0,3,72.3,13.8,0,70.5,0,229.65,0,0,1.098612,5.436556,0,0,0,1,0,0,70.5,9.2896,1.098612,7.201931,1 +11,6,0,0,3,630260,0,10823.86,45.91239,0,18,1,165.8537,3.254355,39.2439,0,219.1638,427.5157,1,0,0,8,0,3,72.3,13.8,0,70.5,0,229.65,0,0,1.098612,5.436556,0,0,0,1,0,0,70.5,9.2896,1.098612,6.057991,1 +11,6,0,0,1,630261,0,10823.86,9.138946,0,12,1,53.16887,0,0,0,0,53.16887,0,0,0,6,0,3,76.7,10.57626,0,70.4,0,229.65,1,0,1.098612,5.436556,0,0,0,1,0,0,70.4,9.2896,1.098612,3.973473,1 +11,6,0,0,2,630261,0,10823.86,10.13895,0,12,1,5.343512,0,0,0,0,5.343512,0,0,0,1,0,3,76.7,10.57626,0,70.4,0,229.65,1,0,1.098612,5.436556,0,0,0,1,0,0,70.4,9.2896,1.098612,1.675883,1 +11,6,0,0,3,630261,0,10823.86,11.13895,0,12,1,18.11847,0,0,0,0,18.11847,0,0,0,2,0,3,76.7,10.57626,0,70.4,0,229.65,1,0,1.098612,5.436556,0,0,0,1,0,0,70.4,9.2896,1.098612,2.896932,1 +7,6,25,1,1,630265,1,3338.966,18.20945,1,10.62774,1,155.6584,5.04838,0,0,0,160.7068,0,0,0,4,0,5,80.9,6.9,0,67,720,720,0,0,1.609438,6.579251,0,3.258096,7.965546,1,0,0,67,8.113716,1.609438,5.079581,1 +7,6,25,1,2,630265,1,3338.966,19.20945,1,10.62774,1,18.13374,22.57272,0,0,0,40.70646,0,0,0,2,0,5,80.9,6.9,0,67,720,720,0,0,1.609438,6.579251,0,3.258096,7.965546,1,0,0,67,8.113716,1.609438,3.706387,1 +7,6,25,1,3,630265,1,3338.966,20.20945,1,10.62774,1,20.92624,31.18353,0,0,197.2556,249.3654,1,1,0,1,0,5,80.9,6.9,0,67,720,720,0,0,1.609438,6.579251,0,3.258096,7.965546,1,0,0,67,8.113716,1.609438,5.518919,1 +7,6,25,1,1,630267,1,3338.966,56.71184,1,8,1,78.03954,93.50021,37.86285,0,0,209.4026,0,0,0,6,0,5,88.8,27.6,0,63.6,720,720,0,0,1.609438,6.579251,0,3.258096,7.965546,0,1,0,63.6,8.113716,1.609438,5.344259,1 +7,6,25,1,2,630267,1,3338.966,57.71184,1,8,1,44.20098,74.06498,0,0,0,118.266,0,0,0,5,0,5,88.8,27.6,0,63.6,720,720,0,0,1.609438,6.579251,0,3.258096,7.965546,0,1,0,63.6,8.113716,1.609438,4.772936,1 +7,6,25,1,3,630267,1,3338.966,58.71184,1,8,1,9.605489,6.020583,0,0,0,15.62607,0,0,0,1,0,5,88.8,27.6,0,63.6,720,720,0,0,1.609438,6.579251,0,3.258096,7.965546,0,1,0,63.6,8.113716,1.609438,2.748941,1 +7,6,25,1,1,630269,1,3338.966,16.16427,0,8,1,10.51746,2.587295,0,0,0,13.10475,0,0,0,2,0,5,68.1,3.4,0,60.2,720,720,1,0,1.609438,6.579251,0,3.258096,7.965546,0,1,0,60.2,8.113716,1.609438,2.572975,1 +7,6,25,1,2,630269,1,3338.966,17.16427,0,8,1,35.88969,4.608991,0,0,0,40.49868,0,0,0,1,0,5,68.1,3.4,0,60.2,720,720,1,0,1.609438,6.579251,0,3.258096,7.965546,0,1,0,60.2,8.113716,1.609438,3.701269,1 +7,6,25,1,3,630269,1,3338.966,18.16427,0,8,1,0,0,0,0,0,0,0,0,0,0,0,5,68.1,3.4,0,60.2,720,720,0,0,1.609438,6.579251,0,3.258096,7.965546,0,1,0,60.2,8.113716,1.609438,,0 +10,6,50,1,1,630290,1,5414.076,11.45243,0,11,1,4.914005,9.58231,0,0,0,14.49631,0,0,0,1,0,5,85,10.57626,0,74.1,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,74.1,8.596942,1.609438,2.673894,1 +10,6,50,1,2,630290,1,5414.076,12.45243,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,85,10.57626,0,74.1,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,74.1,8.596942,1.609438,,0 +10,6,50,1,3,630290,1,5414.076,13.45243,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,85,10.57626,0,74.1,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,74.1,8.596942,1.609438,,0 +10,6,50,1,4,630290,1,5414.076,14.45243,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,85,10.57626,0,74.1,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,74.1,8.596942,1.609438,,0 +10,6,50,1,5,630290,1,5414.076,15.45243,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,85,10.57626,0,74.1,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,74.1,8.596942,1.609438,,0 +10,6,50,1,1,630291,1,5414.076,41.6345,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.1,17.2,1,59.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,59.1,8.596942,1.609438,,0 +10,6,50,1,2,630291,1,5414.076,42.6345,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.1,17.2,1,59.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,59.1,8.596942,1.609438,,0 +10,6,50,1,3,630291,1,5414.076,43.6345,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.1,17.2,1,59.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,59.1,8.596942,1.609438,,0 +10,6,50,1,4,630291,1,5414.076,44.6345,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.1,17.2,1,59.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,59.1,8.596942,1.609438,,0 +10,6,50,1,5,630291,1,5414.076,45.6345,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.1,17.2,1,59.1,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,59.1,8.596942,1.609438,,0 +10,6,50,1,1,630293,1,5414.076,15.97262,0,11,1,12.28501,0,40.88452,0,0,53.16953,0,0,0,1,0,5,80.9,10.3,0,71.6,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,71.6,8.596942,1.609438,3.973485,1 +10,6,50,1,2,630293,1,5414.076,16.97262,0,11,1,8.659982,0,0,0,0,8.659982,0,0,0,1,0,5,80.9,10.3,0,71.6,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,71.6,8.596942,1.609438,2.158713,1 +10,6,50,1,3,630293,1,5414.076,17.97262,0,11,1,9.170487,0,0,0,0,9.170487,0,0,0,1,0,5,80.9,10.3,0,71.6,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,71.6,8.596942,1.609438,2.215991,1 +10,6,50,1,4,630293,1,5414.076,18.97262,0,11,1,0,0,29.64741,0,0,29.64741,0,0,0,0,0,5,80.9,10.3,0,71.6,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,71.6,8.596942,1.609438,3.389375,1 +10,6,50,1,5,630293,1,5414.076,19.97262,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,80.9,10.3,0,71.6,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,71.6,8.596942,1.609438,,0 +10,6,50,1,1,630294,1,5414.076,36.46817,1,11,1,39.31204,18.79607,0,0,0,58.10811,0,0,0,4,0,5,76.1,10.3,0,60.2,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,60.2,8.596942,1.609438,4.062305,1 +10,6,50,1,2,630294,1,5414.076,37.46817,1,11,1,41.93254,18.45943,0,0,0,60.39198,0,0,0,3,0,5,76.1,10.3,0,60.2,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,60.2,8.596942,1.609438,4.100856,1 +10,6,50,1,3,630294,1,5414.076,38.46817,1,11,1,23.34306,5.731555,0,0,0,29.07461,0,0,0,3,0,5,76.1,10.3,0,60.2,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,60.2,8.596942,1.609438,3.369865,1 +10,6,50,1,4,630294,1,5414.076,39.46817,1,11,1,109.9025,14.19355,0,0,0,124.096,0,0,0,4,0,5,76.1,10.3,0,60.2,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,60.2,8.596942,1.609438,4.821055,1 +10,6,50,1,5,630294,1,5414.076,40.46817,1,11,1,63.93776,11.14682,48.90054,0,0,123.9851,0,0,0,3,0,5,76.1,10.3,0,60.2,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,60.2,8.596942,1.609438,4.820161,1 +11,6,0,1,1,630300,1,1087.558,57.61259,1,6,1,10.57977,0,0,0,0,10.57977,0,0,0,1,0,1,75.5,17.2,0,81.8,0,381.28,0,0,0,5.943534,0,0,0,1,0,0,81.8,6.992609,0,2.358944,1 +11,6,0,1,2,630300,1,1087.558,58.61259,1,6,1,21.26044,5.08732,30.00759,0,0,56.35535,0,0,0,2,0,1,75.5,17.2,0,81.8,0,381.28,0,0,0,5.943534,0,0,0,1,0,0,81.8,6.992609,0,4.031677,1 +11,6,0,1,3,630300,1,1087.558,59.61259,1,6,1,0,0,0,0,0,0,0,0,0,0,0,1,75.5,17.2,0,81.8,0,381.28,0,0,0,5.943534,0,0,0,1,0,0,81.8,6.992609,0,,0 +11,6,0,1,1,630304,0,2888.889,59.80835,1,9,1,0,0,0,0,0,0,0,0,0,0,0,1,81.4,27.6,0,53.4,0,0,0,0,0,0,0,0,0,0,1,0,53.4,7.968973,0,,0 +11,6,0,1,2,630304,0,2888.889,60.80835,1,9,1,90.35687,46.55657,40.85801,0,0,177.7715,0,0,0,9,1,1,81.4,27.6,0,53.4,0,0,0,0,0,0,0,0,0,0,1,0,53.4,7.968973,0,5.180499,1 +11,6,0,1,3,630304,0,2888.889,61.80835,1,9,1,121.1073,98.86505,38.97232,0,0,258.9446,0,0,0,13,1,1,81.4,27.6,0,53.4,0,0,0,0,0,0,0,0,0,0,1,0,53.4,7.968973,0,5.556614,1 +14,6,95,1,1,630306,1,0,22.10814,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.1,3.4,0,73.9,225,174.25,0,0,1.386294,5.160491,0,4.564348,5.467394,0,1,0,73.9,0,1.386294,,0 +14,6,95,1,2,630306,1,0,23.10814,1,12,1,0,0,0,0,0,0,1,1,0,0,0,4,77.1,3.4,0,73.9,225,174.25,0,0,1.386294,5.160491,0,4.564348,5.467394,0,1,0,73.9,0,1.386294,,0 +14,6,95,1,1,630308,1,0,16.12047,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,91,3.4,0,86.4,225,174.25,1,0,1.386294,5.160491,0,4.564348,5.467394,0,0,0,86.4,0,1.386294,,0 +14,6,95,1,2,630308,1,0,17.12047,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,91,3.4,0,86.4,225,174.25,1,0,1.386294,5.160491,0,4.564348,5.467394,0,0,0,86.4,0,1.386294,,0 +14,6,95,1,3,630308,1,0,18.12047,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,91,3.4,0,86.4,225,174.25,0,0,.6931472,5.160491,0,4.564348,5.467394,0,0,0,86.4,0,.6931472,,0 +14,6,95,1,4,630308,1,0,19.12047,0,12,1,7.876969,0,0,0,0,7.876969,0,0,0,1,0,2,91,3.4,0,86.4,225,174.25,0,0,.6931472,5.160491,0,4.564348,5.467394,0,0,0,86.4,0,.6931472,2.063943,1 +14,6,95,1,5,630308,1,0,20.12047,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,91,3.4,0,86.4,225,174.25,0,0,.6931472,5.160491,0,4.564348,5.467394,0,0,0,86.4,0,.6931472,,0 +14,6,95,1,1,630309,1,0,1.741273,0,12,1,78.62408,0,0,0,0,78.62408,0,0,0,0,0,4,77.40034,10.57626,0,85.2,225,174.25,1,0,1.386294,5.160491,0,4.564348,5.467394,0,0,0,85.2,0,1.386294,4.364678,1 +14,6,95,1,2,630309,1,0,2.741273,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,85.2,225,174.25,1,0,1.386294,5.160491,0,4.564348,5.467394,0,0,0,85.2,0,1.386294,,0 +14,6,95,1,1,630310,1,2784.458,20.04928,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,75.4,0,0,58,78.95,0,0,0,0,0,0,4.564348,4.420108,1,0,0,58,7.932168,0,,0 +14,6,95,1,2,630310,1,2784.458,21.04928,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,75.4,0,0,58,78.95,0,0,0,0,0,0,4.564348,4.420108,1,0,0,58,7.932168,0,,0 +14,6,95,1,3,630310,1,2784.458,22.04928,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,75.4,0,0,58,78.95,0,0,0,0,0,0,4.564348,4.420108,1,0,0,58,7.932168,0,,0 +14,6,95,1,4,630310,1,2784.458,23.04928,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,75.4,0,0,58,78.95,0,0,0,0,0,0,4.564348,4.420108,1,0,0,58,7.932168,0,,0 +14,6,95,1,5,630310,1,2784.458,24.04928,0,12,1,0,0,0,0,0,0,0,0,0,0,0,1,75.4,0,0,58,78.95,0,0,0,0,0,0,4.564348,4.420108,1,0,0,58,7.932168,0,,0 +11,6,0,1,1,630326,1,14588.33,48.26557,1,18,1,132.8819,48.66695,0,0,455.3534,636.9022,1,0,0,9,0,4,73.9,17.2,0,62.5,0,316.4,0,0,1.386294,5.757007,0,0,0,1,0,0,62.5,9.588045,1.386294,6.456616,1 +11,6,0,1,2,630326,1,14588.33,49.26557,1,18,1,132.4981,64.44571,37.96507,0,0,234.9089,0,0,0,6,0,4,73.9,17.2,0,62.5,0,316.4,0,0,1.386294,5.757007,0,0,0,1,0,0,62.5,9.588045,1.386294,5.459198,1 +11,6,0,1,3,630326,1,14588.33,50.26557,1,18,1,69.55017,67.80276,0,0,0,137.3529,0,0,0,3,0,4,73.9,17.2,0,62.5,0,316.4,0,0,1.386294,5.757007,0,0,0,1,0,0,62.5,9.588045,1.386294,4.922554,1 +11,6,0,1,1,630327,1,14588.33,9.111567,0,18,1,39.77994,7.617435,0,0,418.959,466.3563,1,0,0,5,0,4,83.3,10.57626,0,77.8,0,316.4,1,0,1.386294,5.757007,0,0,0,1,0,0,77.8,9.588045,1.386294,6.14495,1 +11,6,0,1,2,630327,1,14588.33,10.11157,0,18,1,48.21564,5.694761,0,0,0,53.9104,0,0,0,2,0,4,83.3,10.57626,0,77.8,0,316.4,1,0,1.386294,5.757007,0,0,0,1,0,0,77.8,9.588045,1.386294,3.987324,1 +11,6,0,1,3,630327,1,14588.33,11.11157,0,18,1,37.02422,7.024221,0,0,0,44.04844,0,0,0,2,0,4,83.3,10.57626,0,77.8,0,316.4,1,0,1.386294,5.757007,0,0,0,1,0,0,77.8,9.588045,1.386294,3.78529,1 +11,6,0,1,1,630328,1,14588.33,46.57084,0,19,1,126.9573,121.35,42.74228,0,0,291.0495,0,0,0,9,0,4,86.2,17.2,0,52.3,0,316.4,0,0,1.386294,5.757007,0,0,0,1,0,0,52.3,9.588045,1.386294,5.673493,1 +11,6,0,1,2,630328,1,14588.33,47.57084,0,19,1,50.1139,145.1025,24.6773,0,0,219.8937,0,0,0,2,0,4,86.2,17.2,0,52.3,0,316.4,0,0,1.386294,5.757007,0,0,0,1,0,0,52.3,9.588045,1.386294,5.393144,1 +11,6,0,1,3,630328,1,14588.33,48.57084,0,19,1,53.63322,146.5917,0,0,0,200.2249,0,0,0,2,0,4,86.2,17.2,0,52.3,0,316.4,0,0,1.386294,5.757007,0,0,0,1,0,0,52.3,9.588045,1.386294,5.299441,1 +11,6,0,1,1,630329,1,14588.33,13.7358,0,18,1,30.46974,8.463818,0,0,0,38.93356,0,0,0,2,0,4,81.7,10.57626,0,96.3,0,316.4,1,0,1.386294,5.757007,0,0,0,1,0,0,96.3,9.588045,1.386294,3.661857,1 +11,6,0,1,2,630329,1,14588.33,14.7358,0,18,1,42.52088,2.372817,0,0,0,44.8937,0,0,0,3,0,4,81.7,10.57626,0,96.3,0,316.4,1,0,1.386294,5.757007,0,0,0,1,0,0,96.3,9.588045,1.386294,3.804297,1 +11,6,0,1,3,630329,1,14588.33,15.7358,0,18,1,24.91349,2.508651,0,0,0,27.42215,0,0,0,2,0,4,81.7,10.57626,0,96.3,0,316.4,1,0,1.386294,5.757007,0,0,0,1,0,0,96.3,9.588045,1.386294,3.311351,1 +11,6,0,0,1,630381,0,9750.128,55.25257,0,9,1,20.84202,101.5006,0,0,0,122.3426,0,0,0,2,0,3,81.9,24.1,1,73.9,0,237.48,0,0,1.098612,5.470083,0,0,0,1,0,0,73.9,9.185139,1.098612,4.806826,1 +11,6,0,0,2,630381,0,9750.128,56.25257,0,9,1,213.4284,148.856,30.0075,0,0,392.2918,0,0,0,26,1,3,81.9,24.1,1,73.9,0,237.48,0,0,1.098612,5.470083,0,0,0,1,0,0,73.9,9.185139,1.098612,5.972006,1 +11,6,0,0,3,630381,0,9750.128,57.25257,0,9,1,115.0203,148.4269,31.46144,0,0,294.9087,0,0,0,11,0,3,81.9,24.1,1,73.9,0,237.48,0,0,1.098612,5.470083,0,0,0,1,0,0,73.9,9.185139,1.098612,5.686666,1 +11,6,0,0,1,630382,0,9750.128,14.55441,1,10,1,213.0054,36.56524,31.67987,0,0,281.2505,0,0,0,8,1,3,88.3,10.57626,0,88.9,0,237.48,1,1,1.098612,5.470083,0,0,0,1,0,0,88.9,9.185139,1.098612,5.639246,1 +11,6,0,0,2,630382,0,9750.128,15.55441,1,10,1,109.1523,45.09002,7.486872,0,0,161.7292,0,0,0,14,0,3,88.3,10.57626,0,88.9,0,237.48,1,1,1.098612,5.470083,0,0,0,1,0,0,88.9,9.185139,1.098612,5.085923,1 +11,6,0,0,3,630382,0,9750.128,16.55441,1,10,1,93.36942,42.07375,31.33627,142.0839,0,166.7794,0,0,7,5,0,3,88.3,10.57626,0,88.9,0,237.48,1,1,1.098612,5.470083,0,0,0,1,0,0,88.9,9.185139,1.098612,5.116672,1 +11,6,0,0,1,630383,0,9750.128,45.0486,1,10,1,322.6344,219.7707,44.18508,0,333.4723,920.0625,1,0,0,34,1,3,69.7,44.8,1,34.1,0,237.48,0,0,1.098612,5.470083,0,0,0,1,0,0,34.1,9.185139,1.098612,6.824441,1 +11,6,0,0,2,630383,0,9750.128,46.0486,1,10,1,421.2303,314.6324,0,0,794.4486,1530.311,1,0,0,48,0,3,69.7,44.8,1,34.1,0,237.48,0,0,1.098612,5.470083,0,0,0,1,0,0,34.1,9.185139,1.098612,7.333227,1 +11,6,0,0,3,630383,0,9750.128,47.0486,1,10,1,358.5927,432.8383,41.48512,40.5954,1383.288,2216.204,2,0,2,31,1,3,69.7,44.8,1,34.1,0,237.48,0,0,1.098612,5.470083,0,0,0,1,0,0,34.1,9.185139,1.098612,7.703551,1 +13,6,0,1,1,630408,1,6735.316,38.68857,1,6,1,0,3.597122,0,0,0,3.597122,0,0,0,0,0,3,84,3.4,0,64.8,450,0,0,0,1.098612,0,1,4.564348,6.160541,1,0,0,64.8,8.815269,1.098612,1.280134,1 +13,6,0,1,2,630408,1,6735.316,39.68857,1,6,1,0,0,0,0,0,0,0,0,0,0,0,2,84,3.4,0,64.8,450,0,0,0,.6931472,0,1,4.564348,6.160541,1,0,0,64.8,8.815269,.6931472,,0 +13,6,0,1,3,630408,1,6735.316,40.68857,1,6,1,34.25605,0,35.51211,0,0,69.76817,0,0,0,0,1,2,84,3.4,0,64.8,450,0,0,0,.6931472,0,1,4.564348,6.160541,1,0,0,64.8,8.815269,.6931472,4.245178,1 +13,6,0,1,1,630409,1,6735.316,16.8104,0,6,1,24.54507,11.24841,0,0,0,35.79348,0,0,0,0,0,3,89.9,0,0,65.9,450,0,1,0,1.098612,0,1,4.564348,6.160541,0,1,0,65.9,8.815269,1.098612,3.577766,1 +13,6,0,1,1,630410,1,6735.316,15.8987,1,6,1,0,1.163775,0,0,0,1.163775,0,0,0,0,0,3,62.8,3.4,0,64.8,450,0,1,1,1.098612,0,1,4.564348,6.160541,1,0,0,64.8,8.815269,1.098612,.1516689,1 +13,6,0,1,2,630410,1,6735.316,16.8987,1,6,1,8.352316,6.833713,0,0,0,15.18603,0,0,0,0,0,2,62.8,3.4,0,64.8,450,0,1,1,.6931472,0,1,4.564348,6.160541,1,0,0,64.8,8.815269,.6931472,2.720376,1 +13,6,0,1,3,630410,1,6735.316,17.8987,1,6,1,53.97924,0,0,0,456.4014,510.3806,1,0,0,4,0,2,62.8,3.4,0,64.8,450,0,1,1,.6931472,0,1,4.564348,6.160541,1,0,0,64.8,8.815269,.6931472,6.235157,1 +16,6,95,1,1,630457,0,2698.534,33.50856,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,88.3,3.4,0,80.7,600,0,0,0,0,0,0,4.564348,6.448223,0,0,0,80.7,7.900835,0,,0 +16,6,95,1,2,630457,0,2698.534,34.50856,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,88.3,3.4,0,80.7,600,0,0,0,0,0,0,4.564348,6.448223,0,0,0,80.7,7.900835,0,,0 +16,6,95,1,3,630457,0,2698.534,35.50856,1,12,1,0,0,0,0,0,0,0,0,0,0,0,1,88.3,3.4,0,80.7,600,0,0,0,0,0,0,4.564348,6.448223,0,0,0,80.7,7.900835,0,,0 +5,6,25,1,1,630460,1,9018.434,54.80904,1,4,1,10.57977,0,42.74228,0,0,53.32205,0,0,0,0,1,2,88.3,20.7,0,71.6,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,71.6,9.107137,.6931472,3.97635,1 +5,6,25,1,2,630460,1,9018.434,55.80904,1,4,1,9.870919,0,0,0,0,9.870919,0,0,0,1,0,2,88.3,20.7,0,71.6,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,71.6,9.107137,.6931472,2.289593,1 +5,6,25,1,3,630460,1,9018.434,56.80904,1,4,1,10.38062,0,34.9481,0,0,45.32872,0,0,0,0,1,2,88.3,20.7,0,71.6,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,71.6,9.107137,.6931472,3.813941,1 +5,6,25,1,1,630461,1,9018.434,58.4887,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,89.4,17.2,0,73.9,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,73.9,9.107137,.6931472,,0 +5,6,25,1,2,630461,1,9018.434,59.4887,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,89.4,17.2,0,73.9,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,73.9,9.107137,.6931472,,0 +5,6,25,1,3,630461,1,9018.434,60.4887,0,0,1,0,0,0,0,0,0,0,0,0,0,0,2,89.4,17.2,0,73.9,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,1,0,0,73.9,9.107137,.6931472,,0 +13,6,0,0,1,630476,0,9551.906,6.874743,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,0,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.1646,1.386294,,0 +13,6,0,0,2,630476,0,9551.906,7.874743,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,0,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.1646,1.386294,,0 +13,6,0,0,1,630478,0,9551.906,38.93497,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,78.2,10.3,0,92,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92,9.1646,1.386294,,0 +13,6,0,0,2,630478,0,9551.906,39.93497,0,12,1,14.82331,0,0,0,0,14.82331,0,0,0,1,0,4,78.2,10.3,0,92,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92,9.1646,1.386294,2.696201,1 +13,6,0,0,1,630479,0,9551.906,14.88843,0,12,1,21.06046,0,0,0,0,21.06046,0,0,0,2,0,4,70.2,3.4,0,70.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.5,9.1646,1.386294,3.047397,1 +13,6,0,0,2,630479,0,9551.906,15.88843,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,70.2,3.4,0,70.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.5,9.1646,1.386294,,0 +13,6,0,0,1,630480,0,9551.906,37.59343,1,12,1,70.3667,0,0,0,0,70.3667,0,0,0,5,0,4,45.2,27.6,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,71.6,9.1646,1.386294,4.25372,1 +13,6,0,0,2,630480,0,9551.906,38.59343,1,12,1,9.178522,0,0,0,0,9.178522,0,0,0,1,0,4,45.2,27.6,0,71.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,71.6,9.1646,1.386294,2.216866,1 +18,6,25,0,1,630534,0,12182.8,25.7577,1,16,1,38.76615,0,0,0,0,38.76615,0,0,0,1,0,2,78.2,24.1,0,65.9,194.38,194.38,0,0,.6931472,5.269815,0,3.258096,6.656109,0,0,0,65.9,9.407862,.6931472,3.657547,1 +18,6,25,0,2,630534,0,12182.8,26.7577,1,16,1,101.6504,0,7.501875,0,494.3736,603.5259,1,0,0,2,8,2,78.2,24.1,0,65.9,194.38,194.38,0,0,.6931472,5.269815,0,3.258096,6.656109,0,0,0,65.9,9.407862,.6931472,6.402789,1 +18,6,25,0,3,630534,0,12182.8,27.7577,1,16,1,32.81461,1.911367,0,0,0,34.72598,0,0,0,3,0,3,78.2,24.1,0,65.9,194.38,194.38,0,0,1.098612,5.269815,0,3.258096,6.656109,0,0,0,65.9,9.407862,1.098612,3.547488,1 +10,6,50,1,1,630546,1,4512.033,39.80835,1,12,1,0,0,0,23.7599,0,0,0,0,3,0,0,8,75.5,13.8,0,59.5,1000,1000,0,0,2.079442,6.907755,0,3.931826,7.600903,0,1,0,59.5,8.414724,2.079442,,0 +10,6,50,1,2,630546,1,4512.033,40.80835,1,12,1,81.77044,0,43.51088,0,0,125.2813,0,0,0,4,0,8,75.5,13.8,0,59.5,1000,1000,0,0,2.079442,6.907755,0,3.931826,7.600903,0,1,0,59.5,8.414724,2.079442,4.830562,1 +10,6,50,1,3,630546,1,4512.033,41.80835,1,12,1,42.28687,0,0,0,0,42.28687,0,0,0,4,0,7,75.5,13.8,0,59.5,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,0,1,0,59.5,8.414724,1.94591,3.744477,1 +10,6,50,1,1,630547,1,4512.033,15.4935,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,72.9,3.4,0,64.8,1000,1000,1,1,2.079442,6.907755,0,3.931826,7.600903,1,0,0,64.8,8.414724,2.079442,,0 +10,6,50,1,2,630547,1,4512.033,16.4935,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,72.9,3.4,0,64.8,1000,1000,1,1,2.079442,6.907755,0,3.931826,7.600903,1,0,0,64.8,8.414724,2.079442,,0 +10,6,50,1,3,630547,1,4512.033,17.4935,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,72.9,3.4,0,64.8,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,1,0,0,64.8,8.414724,1.94591,,0 +10,6,50,1,1,630548,1,4512.033,11.62491,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,78.3,10.57626,0,77.8,1000,1000,1,0,2.079442,6.907755,0,3.931826,7.600903,1,0,0,77.8,8.414724,2.079442,,0 +10,6,50,1,2,630548,1,4512.033,12.62491,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,78.3,10.57626,0,77.8,1000,1000,1,0,2.079442,6.907755,0,3.931826,7.600903,1,0,0,77.8,8.414724,2.079442,,0 +10,6,50,1,3,630548,1,4512.033,13.62491,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,78.3,10.57626,0,77.8,1000,1000,1,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,77.8,8.414724,1.94591,,0 +10,6,50,1,1,630549,1,4512.033,43.87954,0,6,1,48.35348,13.33472,0,0,0,61.6882,0,0,0,6,0,8,70.2,6.9,0,63.6,1000,1000,0,0,2.079442,6.907755,0,3.931826,7.600903,1,0,0,63.6,8.414724,2.079442,4.122093,1 +10,6,50,1,2,630549,1,4512.033,44.87954,0,6,1,16.87922,1.725431,45.68267,0,325.9565,390.2438,1,0,0,1,1,8,70.2,6.9,0,63.6,1000,1000,0,0,2.079442,6.907755,0,3.931826,7.600903,1,0,0,63.6,8.414724,2.079442,5.966772,1 +10,6,50,1,3,630549,1,4512.033,45.87954,0,6,1,14.54668,0,0,0,0,14.54668,0,0,0,2,0,7,70.2,6.9,0,63.6,1000,1000,0,0,1.94591,6.907755,0,3.931826,7.600903,1,0,0,63.6,8.414724,1.94591,2.677363,1 +10,6,50,1,1,630550,1,4512.033,13.44559,0,12,1,0,0,0,36.26511,0,0,0,0,5,0,0,8,56.7,10.57626,0,63,1000,1000,1,0,2.079442,6.907755,0,3.931826,7.600903,0,1,0,63,8.414724,2.079442,,0 +10,6,50,1,2,630550,1,4512.033,14.44559,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,56.7,10.57626,0,63,1000,1000,1,0,2.079442,6.907755,0,3.931826,7.600903,0,1,0,63,8.414724,2.079442,,0 +10,6,50,1,3,630550,1,4512.033,15.44559,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,56.7,10.57626,0,63,1000,1000,1,0,1.94591,6.907755,0,3.931826,7.600903,0,1,0,63,8.414724,1.94591,,0 +10,6,50,1,1,630551,1,4512.033,5.94935,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,91.7,10.57626,0,77.8,1000,1000,1,1,2.079442,6.907755,0,3.931826,7.600903,1,0,0,77.8,8.414724,2.079442,,0 +10,6,50,1,2,630551,1,4512.033,6.94935,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,91.7,10.57626,0,77.8,1000,1000,1,1,2.079442,6.907755,0,3.931826,7.600903,1,0,0,77.8,8.414724,2.079442,,0 +10,6,50,1,1,630552,1,4512.033,15.22245,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,76.1,3.4,0,63.6,1000,1000,1,1,2.079442,6.907755,0,3.931826,7.600903,1,0,0,63.6,8.414724,2.079442,,0 +10,6,50,1,2,630552,1,4512.033,16.22245,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,76.1,3.4,0,63.6,1000,1000,1,1,2.079442,6.907755,0,3.931826,7.600903,1,0,0,63.6,8.414724,2.079442,,0 +10,6,50,1,3,630552,1,4512.033,17.22245,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,76.1,3.4,0,63.6,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,1,0,0,63.6,8.414724,1.94591,,0 +5,6,25,1,1,630557,0,16710.19,12.7666,0,18,1,18.93143,0,0,0,0,18.93143,0,0,0,1,0,4,68.3,10.57626,0,92.6,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.723834,1.386294,2.940823,1 +5,6,25,1,2,630557,0,16710.19,13.7666,0,18,1,18.88931,0,0,0,0,18.88931,0,0,0,0,0,4,68.3,10.57626,0,92.6,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.723834,1.386294,2.938596,1 +5,6,25,1,3,630557,0,16710.19,14.7666,0,18,1,0,0,0,0,0,0,0,0,0,0,0,4,68.3,10.57626,0,92.6,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,92.6,9.723834,1.386294,,0 +5,6,25,1,1,630558,0,16710.19,7.835729,0,18,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,81.5,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,81.5,9.723834,1.386294,,0 +5,6,25,1,2,630558,0,16710.19,8.835729,0,18,1,86.13525,17.29505,0,0,0,103.4303,0,0,0,4,0,4,85,10.57626,0,81.5,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,81.5,9.723834,1.386294,4.638898,1 +5,6,25,1,3,630558,0,16710.19,9.835729,0,18,1,9.948542,21.85935,0,0,0,31.80789,0,0,0,1,0,4,85,10.57626,0,81.5,750,750,1,0,1.386294,6.620073,0,3.258096,8.006368,0,0,0,81.5,9.723834,1.386294,3.459714,1 +5,6,25,1,1,630559,0,16710.19,38.19028,0,10.62774,1,0,52.98696,30.29028,50.4838,0,83.27724,0,0,4,0,0,4,75.5,13.8,1,44.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,44.3,9.723834,1.386294,4.422175,1 +5,6,25,1,2,630559,0,16710.19,39.19028,0,10.62774,1,200.6045,99.10087,0,783.9063,632.7919,932.4972,3,0,43,8,1,4,75.5,13.8,1,44.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,44.3,9.723834,1.386294,6.837866,1 +5,6,25,1,3,630559,0,16710.19,40.19028,0,10.62774,1,134.9914,118.6827,128.6449,483.705,1566.758,1949.077,1,0,28,4,0,4,75.5,13.8,1,44.3,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,44.3,9.723834,1.386294,7.575111,1 +5,6,25,1,1,630560,0,16710.19,35.98631,1,18,1,196.4661,19.878,0,50.4838,0,216.3441,0,0,4,5,0,4,79.3,17.2,0,85.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,85.2,9.723834,1.386294,5.37687,1 +5,6,25,1,2,630560,0,16710.19,36.98631,1,18,1,30.60068,43.53608,0,273.895,0,74.13676,0,0,16,4,0,4,79.3,17.2,0,85.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,85.2,9.723834,1.386294,4.305912,1 +5,6,25,1,3,630560,0,16710.19,37.98631,1,18,1,33.61921,26.13036,0,353.3448,0,59.74957,0,0,20,4,0,4,79.3,17.2,0,85.2,750,750,0,0,1.386294,6.620073,0,3.258096,8.006368,1,0,0,85.2,9.723834,1.386294,4.090162,1 +13,6,0,1,1,630561,0,9228.152,28.81588,0,13,1,45.58969,20.31715,2.552032,0,0,68.45887,0,0,0,5,1,2,63.3,0,0,66.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,66.7,9.130122,.6931472,4.226233,1 +13,6,0,1,2,630561,0,9228.152,29.81588,0,13,1,16.06241,32.81322,0,0,0,48.87563,0,0,0,4,0,2,63.3,0,0,66.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,66.7,9.130122,.6931472,3.889279,1 +13,6,0,1,3,630561,0,9228.152,30.81588,0,13,1,25.2419,0,0,0,0,25.2419,0,0,0,1,0,2,63.3,0,0,66.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,66.7,9.130122,.6931472,3.228505,1 +13,6,0,1,4,630561,0,9228.152,31.81588,0,13,1,0,0,0,0,0,0,0,0,0,0,0,2,63.3,0,0,66.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,66.7,9.130122,.6931472,,0 +13,6,0,1,5,630561,0,9228.152,32.81588,0,13,1,17.15266,0,0,0,0,17.15266,0,0,0,1,0,3,63.3,0,0,66.7,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,1,0,0,66.7,9.130122,1.098612,2.842153,1 +13,6,0,1,1,630562,0,9228.152,20.55031,1,12,1,126.3627,40.12884,13.61249,0,513.8751,693.9792,1,0,0,10,1,2,86.2,3.4,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,75,9.130122,.6931472,6.542442,1 +13,6,0,1,2,630562,0,9228.152,21.55031,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,86.2,3.4,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,75,9.130122,.6931472,,0 +13,6,0,1,3,630562,0,9228.152,22.55031,1,12,1,8.413967,0,0,0,343.8578,352.2718,1,0,0,0,0,2,86.2,3.4,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,75,9.130122,.6931472,5.864403,1 +13,6,0,1,4,630562,0,9228.152,23.55031,1,12,1,17.37816,0,0,0,498.3,515.6781,1,0,0,1,0,2,86.2,3.4,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,75,9.130122,.6931472,6.245483,1 +13,6,0,1,5,630562,0,9228.152,24.55031,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,86.2,3.4,0,75,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,0,0,0,75,9.130122,1.098612,,0 +16,6,95,1,1,630563,0,8136.713,41.57153,0,6,1,63.77657,25.11046,0,0,0,88.88704,0,0,0,5,4,2,85.1,3.4,1,59.1,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,59.1,9.004265,.6931472,4.487366,1 +16,6,95,1,2,630563,0,8136.713,42.57153,0,6,1,48.012,1.950488,40.96024,0,0,90.92273,0,0,0,4,2,2,85.1,3.4,1,59.1,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,59.1,9.004265,.6931472,4.51001,1 +16,6,95,1,3,630563,0,8136.713,43.57153,0,6,1,621.4479,30.30447,23.68065,0,0,675.433,0,0,0,6,43,2,85.1,3.4,1,59.1,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,1,0,0,59.1,9.004265,.6931472,6.515354,1 +16,6,95,1,1,630564,0,8136.713,41.51677,1,12,1,176.3235,133.8683,0,0,0,310.1917,0,0,0,13,17,2,64.4,41.4,0,37.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,37.5,9.004265,.6931472,5.737191,1 +16,6,95,1,2,630564,0,8136.713,42.51677,1,12,1,209.3023,86.7967,0,0,1077.644,1373.743,1,0,0,11,19,2,64.4,41.4,0,37.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,37.5,9.004265,.6931472,7.225295,1 +16,6,95,1,3,630564,0,8136.713,43.51677,1,12,1,591.3397,82.13802,22.86874,0,0,696.3464,0,0,0,13,84,2,64.4,41.4,0,37.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,1,0,37.5,9.004265,.6931472,6.545847,1 +13,6,0,1,1,630569,0,11727.86,17.20739,0,12,1,67.39346,.6442022,0,0,0,68.03766,0,0,0,1,0,4,88.3,6.9,0,87.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,87.5,9.369807,1.386294,4.220061,1 +13,6,0,1,2,630569,0,11727.86,18.20739,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,6.9,0,87.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,87.5,9.369807,1.386294,,0 +13,6,0,1,3,630569,0,11727.86,19.20739,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,6.9,0,87.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,87.5,9.369807,1.386294,,0 +13,6,0,1,4,630569,0,11727.86,20.20739,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,6.9,0,87.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,87.5,9.369807,1.386294,,0 +13,6,0,1,5,630569,0,11727.86,21.20739,0,12,1,0,5.595197,0,0,0,5.595197,0,0,0,0,0,4,88.3,6.9,0,87.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,87.5,9.369807,1.386294,1.721909,1 +13,6,0,1,1,630570,0,11727.86,40.47365,0,13,1,44.59861,15.60951,0,0,499.0089,559.217,1,0,0,6,0,4,70.7,13.8,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.369807,1.386294,6.326538,1 +13,6,0,1,2,630570,0,11727.86,41.47365,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,70.7,13.8,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.369807,1.386294,,0 +13,6,0,1,3,630570,0,11727.86,42.47365,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,70.7,13.8,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.369807,1.386294,,0 +13,6,0,1,4,630570,0,11727.86,43.47365,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,70.7,13.8,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.369807,1.386294,,0 +13,6,0,1,5,630570,0,11727.86,44.47365,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,70.7,13.8,0,68.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.369807,1.386294,,0 +13,6,0,1,1,630571,0,11727.86,37.21561,1,12,1,52.03172,8.70664,43.11199,0,0,103.8503,0,0,0,3,1,4,68.1,20.7,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.369807,1.386294,4.642951,1 +13,6,0,1,2,630571,0,11727.86,38.21561,1,12,1,16.06241,1.262047,0,0,0,17.32446,0,0,0,1,0,4,68.1,20.7,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.369807,1.386294,2.852119,1 +13,6,0,1,3,630571,0,11727.86,39.21561,1,12,1,20.19352,3.786285,0,0,0,23.97981,0,0,0,2,0,4,68.1,20.7,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.369807,1.386294,3.177212,1 +13,6,0,1,4,630571,0,11727.86,40.21561,1,12,1,0,3.536079,0,0,0,3.536079,0,0,0,0,0,4,68.1,20.7,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.369807,1.386294,1.263018,1 +13,6,0,1,5,630571,0,11727.86,41.21561,1,12,1,25.72899,16.05832,33.49228,0,1405.146,1480.425,1,0,0,1,1,4,68.1,20.7,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.369807,1.386294,7.300085,1 +13,6,0,1,1,630572,0,11727.86,12.9473,1,12,1,113.4787,1.982161,30.72349,0,0,146.1843,0,0,0,2,1,4,81.7,10.57626,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.369807,1.386294,4.984869,1 +13,6,0,1,2,630572,0,11727.86,13.9473,1,12,1,17.89812,0,13.76778,0,0,31.6659,0,0,0,0,0,4,81.7,10.57626,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.369807,1.386294,3.45524,1 +13,6,0,1,3,630572,0,11727.86,14.9473,1,12,1,33.65587,8.624316,0,0,0,42.28019,0,0,0,1,0,4,81.7,10.57626,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.369807,1.386294,3.744318,1 +13,6,0,1,4,630572,0,11727.86,15.9473,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.7,10.57626,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.369807,1.386294,,0 +13,6,0,1,5,630572,0,11727.86,16.9473,1,12,1,10.2916,7.488851,35.20755,0,0,52.98799,0,0,0,0,1,4,81.7,10.57626,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.369807,1.386294,3.970065,1 +11,6,0,1,1,630582,1,6682.028,35.72622,1,12,1,13.46235,2.103492,0,0,0,15.56584,0,0,0,2,0,6,86.7,13.8,1,72.7,0,0,0,0,1.791759,0,0,0,0,0,0,0,72.7,8.807326,1.791759,2.745079,1 +11,6,0,1,2,630582,1,6682.028,36.72622,1,12,1,7.555724,0,28.71175,0,0,36.26747,0,0,0,0,1,6,86.7,13.8,1,72.7,0,0,0,0,1.791759,0,0,0,0,0,0,0,72.7,8.807326,1.791759,3.590921,1 +11,6,0,1,3,630582,1,6682.028,37.72622,1,12,1,54.54546,24.42196,0,0,414.7513,493.7187,1,0,0,4,0,6,86.7,13.8,1,72.7,0,0,0,0,1.791759,0,0,0,0,0,0,0,72.7,8.807326,1.791759,6.201966,1 +11,6,0,1,1,630583,1,6682.028,15.23614,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,79.8,0,0,71.6,0,0,1,1,1.791759,0,0,0,0,1,0,0,71.6,8.807326,1.791759,,0 +11,6,0,1,2,630583,1,6682.028,16.23614,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,79.8,0,0,71.6,0,0,1,1,1.791759,0,0,0,0,1,0,0,71.6,8.807326,1.791759,,0 +11,6,0,1,3,630583,1,6682.028,17.23614,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,79.8,0,0,71.6,0,0,1,1,1.791759,0,0,0,0,1,0,0,71.6,8.807326,1.791759,,0 +11,6,0,1,1,630584,1,6682.028,14.1191,0,12,1,12.62095,3.155238,27.34539,0,0,43.12158,0,0,0,1,1,6,75,3.4,0,83,0,0,1,0,1.791759,0,0,0,0,1,0,0,83,8.807326,1.791759,3.764024,1 +11,6,0,1,2,630584,1,6682.028,15.1191,0,12,1,9.444654,0,0,0,0,9.444654,0,0,0,1,0,6,75,3.4,0,83,0,0,1,0,1.791759,0,0,0,0,1,0,0,83,8.807326,1.791759,2.245449,1 +11,6,0,1,3,630584,1,6682.028,16.1191,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,75,3.4,0,83,0,0,1,0,1.791759,0,0,0,0,1,0,0,83,8.807326,1.791759,,0 +11,6,0,1,1,630585,1,6682.028,40.83231,0,7,1,79.86958,53.52966,0,0,826.2516,959.6508,2,0,0,7,0,6,83,6.9,0,64.8,0,0,0,0,1.791759,0,0,0,0,0,0,0,64.8,8.807326,1.791759,6.86657,1 +11,6,0,1,2,630585,1,6682.028,41.83231,0,7,1,108.8969,28.70041,0,0,0,137.5973,0,0,0,5,0,6,83,6.9,0,64.8,0,0,0,0,1.791759,0,0,0,0,0,0,0,64.8,8.807326,1.791759,4.924331,1 +11,6,0,1,3,630585,1,6682.028,42.83231,0,7,1,185.2487,50.6175,25.72899,0,407.5472,669.1424,1,0,0,10,1,6,83,6.9,0,64.8,0,0,0,0,1.791759,0,0,0,0,0,0,0,64.8,8.807326,1.791759,6.505997,1 +11,6,0,1,1,630586,1,6682.028,5.229295,0,12,1,5.04838,1.893143,0,0,0,6.941523,0,0,0,1,0,6,86.7,10.57626,0,88.9,0,0,1,0,1.791759,0,0,0,0,1,0,0,88.9,8.807326,1.791759,1.937521,1 +11,6,0,1,2,630586,1,6682.028,6.229295,0,12,1,73.29052,1.756706,0,0,0,75.04723,0,0,0,4,0,6,86.7,10.57626,0,88.9,0,0,1,0,1.791759,0,0,0,0,1,0,0,88.9,8.807326,1.791759,4.318118,1 +11,6,0,1,3,630586,1,6682.028,7.229295,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,86.7,10.57626,0,88.9,0,0,1,0,1.791759,0,0,0,0,1,0,0,88.9,8.807326,1.791759,,0 +11,6,0,1,1,630587,1,6682.028,16.84326,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,83,3.4,0,67,0,0,1,0,1.791759,0,0,0,0,1,0,0,67,8.807326,1.791759,,0 +11,6,0,1,2,630587,1,6682.028,17.84326,0,12,1,38.1564,0,0,0,0,38.1564,0,0,0,1,0,6,83,3.4,0,67,0,0,1,0,1.791759,0,0,0,0,1,0,0,67,8.807326,1.791759,3.641694,1 +11,6,0,1,3,630587,1,6682.028,18.84326,0,12,1,17.83876,0,0,0,0,17.83876,0,0,0,1,0,6,83,3.4,0,67,0,0,0,0,1.791759,0,0,0,0,1,0,0,67,8.807326,1.791759,2.881374,1 +11,6,0,1,1,630608,1,10933.14,42.40657,1,7,1,0,8.304668,0,0,0,8.304668,0,0,0,0,0,4,77.40034,10.3,.1442925,,0,424.32,0,0,1.386294,6.050488,0,0,0,0,1,0,70.68995,9.299645,1.386294,2.116818,1 +11,6,0,1,2,630608,1,10933.14,43.40657,1,7,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.3,.1442925,,0,424.32,0,0,1.791759,6.050488,0,0,0,0,1,0,70.68995,9.299645,1.791759,,0 +11,6,0,1,3,630608,1,10933.14,44.40657,1,7,1,10.42101,0,42.10088,0,0,52.52188,0,0,0,0,1,7,77.40034,10.3,.1442925,,0,424.32,0,0,1.94591,6.050488,0,0,0,0,1,0,70.68995,9.299645,1.94591,3.96123,1 +11,6,0,1,4,630608,1,10933.14,45.40657,1,7,1,78.3946,33.21455,0,0,0,111.6092,0,0,0,9,0,8,77.40034,10.3,.1442925,,0,424.32,0,0,2.079442,6.050488,0,0,0,0,1,0,70.68995,9.299645,2.079442,4.715003,1 +11,6,0,1,5,630608,1,10933.14,46.40657,1,7,1,29.43166,105.8999,0,0,0,135.3315,0,0,0,3,0,8,77.40034,10.3,.1442925,,0,424.32,0,0,2.079442,6.050488,0,0,0,0,1,0,70.68995,9.299645,2.079442,4.907728,1 +11,6,0,1,1,630609,1,10933.14,49.30322,0,3,1,18.67322,16.22604,0,0,0,34.89926,0,0,0,5,0,4,75,10.3,0,45.5,0,424.32,0,0,1.386294,6.050488,0,0,0,1,0,0,45.5,9.299645,1.386294,3.552466,1 +11,6,0,1,2,630609,1,10933.14,50.30322,0,3,1,0,0,0,0,0,0,0,0,0,0,0,6,75,10.3,0,45.5,0,424.32,0,0,1.791759,6.050488,0,0,0,1,0,0,45.5,9.299645,1.791759,,0 +11,6,0,1,3,630609,1,10933.14,51.30322,0,3,1,10.42101,0,46.26928,0,0,56.69029,0,0,0,0,1,7,75,10.3,0,45.5,0,424.32,0,0,1.94591,6.050488,0,0,0,1,0,0,45.5,9.299645,1.94591,4.037603,1 +11,6,0,1,4,630609,1,10933.14,52.30322,0,3,1,103.5259,97.81696,0,0,357.8394,559.1823,1,0,0,14,0,8,75,10.3,0,45.5,0,424.32,0,0,2.079442,6.050488,0,0,0,1,0,0,45.5,9.299645,2.079442,6.326476,1 +11,6,0,1,5,630609,1,10933.14,53.30322,0,3,1,54.1272,256.6035,41.48512,0,0,352.2158,0,0,0,7,1,8,75,10.3,0,45.5,0,424.32,0,0,2.079442,6.050488,0,0,0,1,0,0,45.5,9.299645,2.079442,5.864244,1 +11,6,0,0,1,630637,1,10120.33,32.93634,1,12,1,42.91123,15.52377,0,0,198.1489,256.5839,1,0,0,5,0,5,37.2,27.6,1,30.7,0,359.84,0,0,1.609438,5.88566,0,0,0,1,0,0,30.7,9.2224,1.609438,5.547456,1 +11,6,0,0,2,630637,1,10120.33,33.93634,1,12,1,0,6.139025,0,0,0,6.139025,0,0,0,0,0,5,37.2,27.6,1,30.7,0,359.84,0,0,1.609438,5.88566,0,0,0,1,0,0,30.7,9.2224,1.609438,1.814666,1 +11,6,0,0,3,630637,1,10120.33,34.93634,1,12,1,48.71355,13.5163,0,0,0,62.22985,0,0,0,2,0,5,37.2,27.6,1,30.7,0,359.84,0,0,1.609438,5.88566,0,0,0,1,0,0,30.7,9.2224,1.609438,4.130835,1 +11,6,0,0,1,630638,1,10120.33,9.429158,1,12,1,17.66933,0,0,0,0,17.66933,0,0,0,2,0,5,75,10.57626,0,77.8,0,359.84,1,1,1.609438,5.88566,0,0,0,0,0,0,77.8,9.2224,1.609438,2.87183,1 +11,6,0,0,2,630638,1,10120.33,10.42916,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,75,10.57626,0,77.8,0,359.84,1,1,1.609438,5.88566,0,0,0,0,0,0,77.8,9.2224,1.609438,,0 +11,6,0,0,3,630638,1,10120.33,11.42916,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,75,10.57626,0,77.8,0,359.84,1,1,1.609438,5.88566,0,0,0,0,0,0,77.8,9.2224,1.609438,,0 +11,6,0,0,1,630639,1,10120.33,6.310746,0,12,1,33.23517,6.142196,0,0,0,39.37737,0,0,0,4,0,5,61.7,10.57626,0,77.8,0,359.84,1,0,1.609438,5.88566,0,0,0,1,0,0,77.8,9.2224,1.609438,3.673191,1 +11,6,0,0,2,630639,1,10120.33,7.310746,0,12,1,4.533434,5.761239,0,0,0,10.29467,0,0,0,1,0,5,61.7,10.57626,0,77.8,0,359.84,1,0,1.609438,5.88566,0,0,0,1,0,0,77.8,9.2224,1.609438,2.331627,1 +11,6,0,0,3,630639,1,10120.33,8.310746,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,61.7,10.57626,0,77.8,0,359.84,1,0,1.609438,5.88566,0,0,0,1,0,0,77.8,9.2224,1.609438,,0 +11,6,0,0,1,630640,1,10120.33,28.33949,0,12,1,32.39377,.9465713,0,0,0,33.34034,0,0,0,1,0,5,70.7,10.3,0,63.6,0,359.84,0,0,1.609438,5.88566,0,0,0,0,0,0,63.6,9.2224,1.609438,3.506768,1 +11,6,0,0,2,630640,1,10120.33,29.33949,0,12,1,9.066868,6.762372,0,0,0,15.82924,0,0,0,2,0,5,70.7,10.3,0,63.6,0,359.84,0,0,1.609438,5.88566,0,0,0,0,0,0,63.6,9.2224,1.609438,2.761859,1 +11,6,0,0,3,630640,1,10120.33,30.33949,0,12,1,41.40652,0,0,0,0,41.40652,0,0,0,3,0,5,70.7,10.3,0,63.6,0,359.84,0,0,1.609438,5.88566,0,0,0,0,0,0,63.6,9.2224,1.609438,3.723438,1 +11,6,0,0,1,630641,1,10120.33,11.98083,0,12,1,146.8237,0,0,0,580.5637,727.3875,1,0,0,5,0,5,81.7,10.57626,1,66.7,0,359.84,1,0,1.609438,5.88566,0,0,0,1,0,0,66.7,9.2224,1.609438,6.589459,1 +11,6,0,0,2,630641,1,10120.33,12.98083,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,10.57626,1,66.7,0,359.84,1,0,1.609438,5.88566,0,0,0,1,0,0,66.7,9.2224,1.609438,,0 +11,6,0,0,3,630641,1,10120.33,13.98083,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.7,10.57626,1,66.7,0,359.84,1,0,1.609438,5.88566,0,0,0,1,0,0,66.7,9.2224,1.609438,,0 +11,6,0,0,1,630658,0,844.8541,36.46817,0,7,1,12.50521,0,31.26303,0,0,43.76824,0,0,0,0,1,3,67,13.8,0,45.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,45.5,6.740347,1.098612,3.778908,1 +11,6,0,0,2,630658,0,844.8541,37.46817,0,7,1,35.25882,12.13053,18.75469,0,0,66.14404,0,0,0,3,1,3,67,13.8,0,45.5,0,0,0,0,1.098612,0,0,0,0,1,0,0,45.5,6.740347,1.098612,4.191835,1 +11,6,0,1,1,630659,0,844.8541,36.49555,1,7,1,170.9045,341.8008,29.17883,245.9358,2110.671,2652.555,4,0,15,7,1,3,30,17.2,1,28.4,0,0,0,0,1.098612,0,0,0,0,0,0,1,28.4,6.740347,1.098612,7.883279,1 +11,6,0,1,2,630659,0,844.8541,37.49555,1,7,1,0,0,0,0,0,0,2,0,15,18,0,3,30,17.2,1,28.4,0,0,0,0,1.098612,0,0,0,0,0,0,1,28.4,6.740347,1.098612,,0 +13,6,0,0,1,630661,1,2479.775,58.19849,1,6,1,0,0,0,0,0,0,0,0,0,0,0,3,89.9,6.9,1,66.7,450,300,0,0,1.098612,5.703783,1,4.564348,6.160541,0,0,0,66.7,7.816326,1.098612,,0 +13,6,0,0,2,630661,1,2479.775,59.19849,1,6,1,0,0,35.88969,0,0,35.88969,0,0,0,0,0,4,89.9,6.9,1,66.7,450,300,0,0,1.386294,5.703783,1,4.564348,6.160541,0,0,0,66.7,7.816326,1.386294,3.58045,1 +13,6,0,0,3,630661,1,2479.775,60.19849,1,6,1,25.90051,0,27.44425,0,0,53.34477,0,0,0,1,1,4,89.9,6.9,1,66.7,450,300,0,0,1.386294,5.703783,1,4.564348,6.160541,0,0,0,66.7,7.816326,1.386294,3.976776,1 +13,6,0,0,1,630662,1,2479.775,17.45106,0,6,1,0,0,0,0,0,0,0,0,0,0,0,3,82.4,10.3,0,55.7,450,300,1,0,1.098612,5.703783,1,4.564348,6.160541,0,0,0,55.7,7.816326,1.098612,,0 +13,6,0,0,2,630662,1,2479.775,18.45106,0,6,1,0,0,0,0,0,0,0,0,0,0,0,4,82.4,10.3,0,55.7,450,300,0,0,1.386294,5.703783,1,4.564348,6.160541,0,0,0,55.7,7.816326,1.386294,,0 +13,6,0,0,3,630662,1,2479.775,19.45106,0,6,1,0,0,0,0,0,0,0,0,0,0,0,4,82.4,10.3,0,55.7,450,300,0,0,1.386294,5.703783,1,4.564348,6.160541,0,0,0,55.7,7.816326,1.386294,,0 +13,6,0,0,1,630663,1,2479.775,20.89254,1,12,1,21.03492,0,0,0,906.1843,927.2192,1,0,0,1,0,3,58.5,10.3,0,60.2,450,300,0,0,1.098612,5.703783,1,4.564348,6.160541,1,0,0,60.2,7.816326,1.098612,6.83219,1 +13,6,0,0,2,630663,1,2479.775,21.89254,1,12,1,16.24481,0,0,0,0,16.24481,0,0,0,0,0,4,58.5,10.3,0,60.2,450,300,0,0,1.386294,5.703783,1,4.564348,6.160541,1,0,0,60.2,7.816326,1.386294,2.787773,1 +13,6,0,0,3,630663,1,2479.775,22.89254,1,12,1,35.67753,0,0,0,1153.345,1189.022,1,0,0,0,0,4,58.5,10.3,0,60.2,450,300,0,0,1.386294,5.703783,1,4.564348,6.160541,1,0,0,60.2,7.816326,1.386294,7.080887,1 +11,6,0,1,1,630677,0,6267.742,30.36003,0,7,1,7.433102,10.53023,0,0,0,17.96333,0,0,0,1,0,3,70.7,6.9,0,70.5,0,816,0,0,1.098612,6.704414,0,0,0,0,1,0,70.5,8.743331,1.098612,2.888332,1 +11,6,0,1,2,630677,0,6267.742,31.36003,0,7,1,58.74254,2.753557,0,0,0,61.4961,0,0,0,3,0,3,70.7,6.9,0,70.5,0,816,0,0,1.098612,6.704414,0,0,0,0,1,0,70.5,8.743331,1.098612,4.118974,1 +11,6,0,1,3,630677,0,6267.742,32.36003,0,7,1,0,9.465714,0,0,0,9.465714,0,0,0,0,0,3,70.7,6.9,0,70.5,0,816,0,0,1.098612,6.704414,0,0,0,0,1,0,70.5,8.743331,1.098612,2.247676,1 +11,6,0,1,4,630677,0,6267.742,33.36003,0,7,1,15.48923,3.830752,0,0,0,19.31998,0,0,0,1,0,3,70.7,6.9,0,70.5,0,816,0,0,1.098612,6.704414,0,0,0,0,1,0,70.5,8.743331,1.098612,2.96114,1 +11,6,0,1,5,630677,0,6267.742,34.36003,0,7,1,0,1.351629,0,0,0,1.351629,0,0,0,0,0,3,70.7,6.9,0,70.5,0,816,0,0,1.098612,6.704414,0,0,0,0,1,0,70.5,8.743331,1.098612,.3013109,1 +11,6,0,1,1,630678,0,6267.742,12.24914,0,7,1,106.0456,0,0,0,0,106.0456,0,0,0,1,0,3,88.3,10.57626,0,63,0,816,1,0,1.098612,6.704414,0,0,0,1,0,0,63,8.743331,1.098612,4.663869,1 +11,6,0,1,2,630678,0,6267.742,13.24914,0,7,1,17.89812,4.589261,0,0,0,22.48738,0,0,0,0,0,3,88.3,10.57626,0,63,0,816,1,0,1.098612,6.704414,0,0,0,1,0,0,63,8.743331,1.098612,3.112954,1 +11,6,0,1,3,630678,0,6267.742,14.24914,0,7,1,25.2419,3.634834,0,0,0,28.87674,0,0,0,2,0,3,88.3,10.57626,0,63,0,816,1,0,1.098612,6.704414,0,0,0,1,0,0,63,8.743331,1.098612,3.363036,1 +11,6,0,1,4,630678,0,6267.742,15.24914,0,7,1,5.666792,1.62448,0,0,0,7.291273,0,0,0,1,0,3,88.3,10.57626,0,63,0,816,1,0,1.098612,6.704414,0,0,0,1,0,0,63,8.743331,1.098612,1.986678,1 +11,6,0,1,5,630678,0,6267.742,16.24914,0,7,1,12.00686,6.586621,0,0,410.6346,429.2281,1,0,0,1,0,3,88.3,10.57626,0,63,0,816,1,0,1.098612,6.704414,0,0,0,1,0,0,63,8.743331,1.098612,6.061988,1 +11,6,0,1,1,630679,0,6267.742,35.98631,1,7,1,169.9703,52.49257,24.77701,0,412.7849,660.0248,1,0,0,11,1,3,78.7,10.3,0,70.5,0,816,0,0,1.098612,6.704414,0,0,0,0,1,0,70.5,8.743331,1.098612,6.492277,1 +11,6,0,1,2,630679,0,6267.742,36.98631,1,7,1,48.18724,15.48876,0,0,948.1414,1011.817,2,0,0,5,1,3,78.7,10.3,0,70.5,0,816,0,0,1.098612,6.704414,0,0,0,0,1,0,70.5,8.743331,1.098612,6.919503,1 +11,6,0,1,3,630679,0,6267.742,37.98631,1,7,1,201.9352,8.203618,0,0,0,210.1388,0,0,0,1,25,3,78.7,10.3,0,70.5,0,816,0,0,1.098612,6.704414,0,0,0,0,1,0,70.5,8.743331,1.098612,5.347768,1 +11,6,0,1,4,630679,0,6267.742,38.98631,1,7,1,58.55686,12.91273,24.5561,0,0,96.02569,0,0,0,5,2,3,78.7,10.3,0,70.5,0,816,0,0,1.098612,6.704414,0,0,0,0,1,0,70.5,8.743331,1.098612,4.564616,1 +11,6,0,1,5,630679,0,6267.742,39.98631,1,7,1,156.4323,18.06861,0,0,0,174.5009,0,0,0,7,0,3,78.7,10.3,0,70.5,0,816,0,0,1.098612,6.704414,0,0,0,0,1,0,70.5,8.743331,1.098612,5.16193,1 +13,6,0,1,1,630685,0,8846.902,38.39562,0,12,1,138.4098,19.02819,0,0,676.483,833.9209,1,0,0,13,0,2,81.9,6.9,1,68.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,68.2,9.087935,.6931472,6.726139,1 +13,6,0,1,2,630685,0,8846.902,39.39562,0,12,1,26.44503,0,0,0,0,26.44503,0,0,0,3,0,2,81.9,6.9,1,68.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,68.2,9.087935,.6931472,3.275068,1 +13,6,0,1,3,630685,0,8846.902,40.39562,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,81.9,6.9,1,68.2,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,68.2,9.087935,.6931472,,0 +13,6,0,1,1,630686,0,8846.902,35.08282,1,12,1,165.3345,23.33193,0,21.03492,878.8389,1067.505,2,0,1,1,0,2,85.6,6.9,0,87.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,1,87.5,9.087935,.6931472,6.97308,1 +13,6,0,1,2,630686,0,8846.902,36.08282,1,12,1,129.5807,77.09483,0,134.1141,1522.478,1729.154,1,0,6,6,0,2,85.6,6.9,0,87.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,1,87.5,9.087935,.6931472,7.455388,1 +13,6,0,1,3,630686,0,8846.902,37.08282,1,12,1,92.2813,27.17324,0,149.2281,441.3379,560.7925,2,0,7,6,0,2,85.6,6.9,0,87.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,1,87.5,9.087935,.6931472,6.329351,1 +13,6,0,0,1,630694,1,6735.316,30.11636,0,11,1,10.51746,0,31.55238,0,0,42.06984,0,0,0,0,1,4,68.8,3.4,0,50,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,50,8.815269,1.386294,3.739331,1 +13,6,0,0,2,630694,1,6735.316,31.11636,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,68.8,3.4,0,50,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,50,8.815269,1.609438,,0 +13,6,0,0,3,630694,1,6735.316,32.11636,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,68.8,3.4,0,50,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,50,8.815269,1.609438,,0 +13,6,0,0,1,630695,1,6735.316,6.450377,0,10,1,35.75936,1.022297,27.34539,0,0,64.12705,0,0,0,1,1,4,93.3,10.57626,.1442925,74.1,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,8.815269,1.386294,4.160866,1 +13,6,0,0,2,630695,1,6735.316,7.450377,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,93.3,10.57626,.1442925,74.1,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,74.1,8.815269,1.609438,,0 +13,6,0,0,3,630695,1,6735.316,8.450377,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,93.3,10.57626,.1442925,74.1,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,74.1,8.815269,1.609438,,0 +13,6,0,0,1,630696,1,6735.316,24.06297,1,10,1,26.92469,9.301641,0,0,307.1098,343.3362,1,0,0,3,0,4,88.8,0,0,60.2,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,60.2,8.815269,1.386294,5.83871,1 +13,6,0,0,2,630696,1,6735.316,25.06297,1,10,1,10.20023,8.772195,0,0,0,18.97242,0,0,0,1,0,5,88.8,0,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,60.2,8.815269,1.609438,2.942986,1 +13,6,0,0,3,630696,1,6735.316,26.06297,1,10,1,17.15266,0,0,0,0,17.15266,0,0,0,2,0,5,88.8,0,0,60.2,450,450,0,0,1.609438,6.109248,1,4.564348,6.160541,1,0,0,60.2,8.815269,1.609438,2.842153,1 +17,6,25,0,1,630706,0,9352.791,32.07118,1,11,1,33.17737,0,0,0,0,33.17737,0,0,0,1,0,2,52.1,24.1,1,53.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,53.4,9.143537,.6931472,3.501868,1 +17,6,25,0,2,630706,0,9352.791,33.07118,1,11,1,30.91603,17.64886,0,0,0,48.56488,0,0,0,2,0,2,52.1,24.1,1,53.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,53.4,9.143537,.6931472,3.882901,1 +17,6,25,0,3,630706,0,9352.791,34.07118,1,11,1,302.7874,0,0,0,0,302.7874,0,0,0,2,27,2,52.1,24.1,1,53.4,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,1,0,53.4,9.143537,.6931472,5.713031,1 +17,6,25,0,1,630707,0,9352.791,31.59206,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.9,0,0,64.8,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,64.8,9.143537,.6931472,,0 +17,6,25,0,2,630707,0,9352.791,32.59206,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,73.9,0,0,64.8,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,64.8,9.143537,.6931472,,0 +17,6,25,0,3,630707,0,9352.791,33.59206,0,12,1,455.0523,12.223,0,0,0,467.2753,0,0,0,4,40,2,73.9,0,0,64.8,750,750,0,0,.6931472,6.620073,0,3.258096,8.006368,0,0,0,64.8,9.143537,.6931472,6.146918,1 +18,6,25,1,1,630728,1,6901.69,53.48391,0,12,1,17.66933,0,16.82793,0,200.2524,234.7497,1,1,0,1,1,1,89.9,6.9,0,88.6,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,88.6,8.839666,0,5.45852,1 +18,6,25,1,2,630728,1,6901.69,54.48391,0,12,1,17.37816,37.14394,0,0,0,54.5221,0,0,0,2,0,1,89.9,6.9,0,88.6,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,88.6,8.839666,0,3.998606,1 +18,6,25,1,3,630728,1,6901.69,55.48391,0,12,1,54.54546,36.60034,38.63808,0,0,129.7839,0,0,0,5,0,1,89.9,6.9,0,88.6,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,88.6,8.839666,0,4.86587,1 +11,6,0,1,1,630732,0,1177.675,33.21287,0,12,.7835616,96.48752,8.675412,0,0,0,105.1629,0,0,0,3,0,5,80.9,6.9,0,73.9,0,386.72,0,0,1.609438,5.957701,0,0,0,1,0,0,73.9,7.072146,1.609438,4.655511,1 +11,6,0,1,1,630733,0,1177.675,30.45859,1,12,1,16.08125,0,0,0,0,16.08125,0,0,0,1,0,5,79.3,6.9,0,92,0,386.72,0,0,1.609438,5.957701,0,0,0,1,0,0,92,7.072146,1.609438,2.777654,1 +11,6,0,1,2,630733,0,1177.675,31.45859,1,12,1,45.17844,4.707669,0,0,0,49.8861,0,0,0,1,0,4,79.3,6.9,0,92,0,386.72,0,0,1.386294,5.957701,0,0,0,1,0,0,92,7.072146,1.386294,3.909743,1 +11,6,0,1,3,630733,0,1177.675,32.45859,1,12,1,10.38062,0,0,0,0,10.38062,0,0,0,0,0,4,79.3,6.9,0,92,0,386.72,0,0,1.386294,5.957701,0,0,0,1,0,0,92,7.072146,1.386294,2.339941,1 +11,6,0,1,1,630734,0,1177.675,11.58385,1,12,1,28.77698,0,0,0,0,28.77698,0,0,0,3,0,5,81.7,10.57626,0,100,0,386.72,1,1,1.609438,5.957701,0,0,0,0,0,0,100,7.072146,1.609438,3.359576,1 +11,6,0,1,2,630734,0,1177.675,12.58385,1,12,1,22.01974,0,0,0,0,22.01974,0,0,0,1,0,4,81.7,10.57626,0,100,0,386.72,1,1,1.386294,5.957701,0,0,0,0,0,0,100,7.072146,1.386294,3.091939,1 +11,6,0,1,3,630734,0,1177.675,13.58385,1,12,1,54.32526,0,0,0,0,54.32526,0,0,0,3,0,4,81.7,10.57626,0,100,0,386.72,1,1,1.386294,5.957701,0,0,0,0,0,0,100,7.072146,1.386294,3.994989,1 +11,6,0,1,1,630735,0,1177.675,4.375085,1,12,1,14.81168,7.300042,0,0,0,22.11172,0,0,0,2,0,5,77.40034,10.57626,0,100,0,386.72,1,1,1.609438,5.957701,0,0,0,0,0,0,100,7.072146,1.609438,3.096108,1 +11,6,0,1,2,630735,0,1177.675,5.375085,1,12,1,26.1959,2.813212,0,0,0,29.00911,0,0,0,1,0,4,77.40034,10.57626,0,100,0,386.72,1,1,1.386294,5.957701,0,0,0,0,0,0,100,7.072146,1.386294,3.36761,1 +11,6,0,1,3,630735,0,1177.675,6.375085,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,100,0,386.72,1,1,1.386294,5.957701,0,0,0,0,0,0,100,7.072146,1.386294,,0 +11,6,0,1,1,630736,0,1177.675,9.516769,1,12,1,16.08125,0,0,0,0,16.08125,0,0,0,3,0,5,80,10.57626,0,100,0,386.72,1,1,1.609438,5.957701,0,0,0,0,0,0,100,7.072146,1.609438,2.777654,1 +11,6,0,1,2,630736,0,1177.675,10.51677,1,12,1,11.38952,1.340167,0,0,0,12.72969,0,0,0,2,0,4,80,10.57626,0,100,0,386.72,1,1,1.386294,5.957701,0,0,0,0,0,0,100,7.072146,1.386294,2.543937,1 +11,6,0,1,3,630736,0,1177.675,11.51677,1,12,1,37.37024,0,0,0,0,37.37024,0,0,0,1,0,4,80,10.57626,0,100,0,386.72,1,1,1.386294,5.957701,0,0,0,0,0,0,100,7.072146,1.386294,3.620875,1 +10,6,50,1,1,630746,1,10221.2,34.93224,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,85.6,6.9,0,67,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,67,9.232317,1.098612,,0 +10,6,50,1,2,630746,1,10221.2,35.93224,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,85.6,6.9,0,67,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,67,9.232317,1.098612,,0 +10,6,50,1,3,630746,1,10221.2,36.93224,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,85.6,6.9,0,67,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,1,0,0,67,9.232317,1.098612,,0 +10,6,50,1,1,630747,1,10221.2,34.8857,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.4,3.4,0,73.9,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,73.9,9.232317,1.098612,,0 +10,6,50,1,2,630747,1,10221.2,35.8857,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,81.4,3.4,0,73.9,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,73.9,9.232317,1.098612,,0 +10,6,50,1,3,630747,1,10221.2,36.8857,0,12,1,0,0,0,0,229.2683,229.2683,1,0,0,0,0,3,81.4,3.4,0,73.9,1000,1000,0,0,1.098612,6.907755,0,3.931826,7.600903,0,0,0,73.9,9.232317,1.098612,5.434893,1 +13,6,0,1,1,630751,0,13844.34,11.90691,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,85,10.57626,0,92.6,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.535704,1.386294,,0 +13,6,0,1,2,630751,0,13844.34,12.90691,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,85,10.57626,0,92.6,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.535704,1.098612,,0 +13,6,0,1,3,630751,0,13844.34,13.90691,1,16,1,4.116638,0,0,0,0,4.116638,0,0,0,1,0,3,85,10.57626,0,92.6,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,92.6,9.535704,1.098612,1.415037,1 +13,6,0,1,1,630752,0,13844.34,41.6783,0,16,.5835617,114.43,56.47876,0,0,485.0652,655.9739,1,0,0,7,0,4,79.8,17.2,1,48.9,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,48.9,9.535704,1.386294,6.486121,1 +13,6,0,1,1,630753,0,13844.34,10.34086,0,16,1,8.413967,0,0,0,0,8.413967,0,0,0,1,0,4,83.3,10.57626,0,85.2,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.535704,1.386294,2.129893,1 +13,6,0,1,2,630753,0,13844.34,11.34086,0,16,1,0,0,0,0,0,0,0,0,0,0,0,3,83.3,10.57626,0,85.2,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.535704,1.098612,,0 +13,6,0,1,3,630753,0,13844.34,12.34086,0,16,1,9.948542,0,0,0,0,9.948542,0,0,0,1,0,3,83.3,10.57626,0,85.2,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,85.2,9.535704,1.098612,2.297426,1 +13,6,0,1,1,630754,0,13844.34,38.40383,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,88.3,0,0,77.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.535704,1.386294,,0 +13,6,0,1,2,630754,0,13844.34,39.40383,1,16,1,14.35588,0,0,0,0,14.35588,0,0,0,1,0,3,88.3,0,0,77.3,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.535704,1.098612,2.664159,1 +13,6,0,1,3,630754,0,13844.34,40.40383,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,88.3,0,0,77.3,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,77.3,9.535704,1.098612,,0 +13,6,0,0,1,630762,0,5402.97,16.70089,1,12,1,28.35379,0,0,0,0,28.35379,0,0,0,1,0,2,75,6.9,0,80.7,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,8.594889,.6931472,3.344761,1 +13,6,0,0,2,630762,0,5402.97,17.70089,1,12,1,12.90812,0,0,0,0,12.90812,0,0,0,2,0,2,75,6.9,0,80.7,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,8.594889,.6931472,2.557857,1 +13,6,0,0,3,630762,0,5402.97,18.70089,1,12,1,32.87197,28.20069,13.84083,0,0,74.9135,0,0,0,2,1,2,75,6.9,0,80.7,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,80.7,8.594889,.6931472,4.316334,1 +13,6,0,0,1,630764,0,5402.97,47.29364,1,12,1,31.73932,0,23.2755,0,0,55.01481,0,0,0,1,1,2,78.2,10.3,0,56.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,56.8,8.594889,.6931472,4.007603,1 +13,6,0,0,2,630764,0,5402.97,48.29364,1,12,1,54.29005,19.81017,0,0,0,74.10023,0,0,0,7,0,2,78.2,10.3,0,56.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,56.8,8.594889,.6931472,4.305418,1 +13,6,0,0,3,630764,0,5402.97,49.29364,1,12,1,40.13841,0,27.68166,0,0,67.82007,0,0,0,0,1,2,78.2,10.3,0,56.8,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,56.8,8.594889,.6931472,4.216858,1 +11,6,0,1,1,630785,0,14529.44,44.37235,0,12,1,108.3369,0,31.73932,0,0,140.0762,0,0,0,2,16,4,80.9,3.4,0,80.7,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,80.7,9.584002,1.386294,4.942186,1 +11,6,0,1,2,630785,0,14529.44,45.37235,0,12,1,186.7882,0,0,0,0,186.7882,0,0,0,2,14,4,80.9,3.4,0,80.7,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,80.7,9.584002,1.386294,5.229975,1 +11,6,0,1,3,630785,0,14529.44,46.37235,0,12,1,117.6471,0,62.15571,0,0,179.8028,0,0,0,1,12,4,80.9,3.4,0,80.7,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,80.7,9.584002,1.386294,5.191861,1 +14,6,95,0,1,630809,0,5339.478,20.58316,1,9,1,378.491,70.34598,35.84827,0,963.7349,1448.42,2,0,0,20,0,5,66.5,20.7,0,73.9,308,660,0,0,1.609438,6.49224,0,4.564348,5.781393,1,0,0,73.9,8.583071,1.609438,7.278229,1 +14,6,95,0,2,630809,0,5339.478,21.58316,1,9,1,266.3166,141.7367,0,0,361.5904,769.6437,1,0,0,24,0,5,66.5,20.7,0,73.9,308,660,0,0,1.609438,6.49224,0,4.564348,5.781393,1,0,0,73.9,8.583071,1.609438,6.645927,1 +14,6,95,0,3,630809,0,5339.478,22.58316,1,9,1,229.1949,78.97835,27.95332,226.6576,1512.821,1848.948,3,0,11,17,0,5,66.5,20.7,0,73.9,308,660,0,0,1.609438,6.49224,0,4.564348,5.781393,1,0,0,73.9,8.583071,1.609438,7.522372,1 +14,6,95,0,1,630810,0,5339.478,24.30116,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.4,3.4,0,75,308,660,0,0,1.609438,6.49224,0,4.564348,5.781393,1,0,0,75,8.583071,1.609438,,0 +14,6,95,0,2,630810,0,5339.478,25.30116,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.4,3.4,0,75,308,660,0,0,1.609438,6.49224,0,4.564348,5.781393,1,0,0,75,8.583071,1.609438,,0 +14,6,95,0,3,630810,0,5339.478,26.30116,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,81.4,3.4,0,75,308,660,0,0,1.609438,6.49224,0,4.564348,5.781393,1,0,0,75,8.583071,1.609438,,0 +14,6,95,0,1,630811,0,5339.478,2.863792,0,9,1,61.69237,12.1509,0,0,0,73.84327,0,0,0,9,0,5,77.40034,10.57626,0,48.1,308,660,1,0,1.609438,6.49224,0,4.564348,5.781393,1,0,0,48.1,8.583071,1.609438,4.301945,1 +14,6,95,0,2,630811,0,5339.478,3.863792,0,9,1,38.63466,10.62266,0,0,0,49.25731,0,0,0,4,0,5,77.40034,10.57626,0,48.1,308,660,1,0,1.609438,6.49224,0,4.564348,5.781393,1,0,0,48.1,8.583071,1.609438,3.897058,1 +14,6,95,0,3,630811,0,5339.478,4.863792,0,9,1,54.80379,20.6157,0,0,0,75.41949,0,0,0,5,0,5,77.40034,10.57626,0,48.1,308,660,1,0,1.609438,6.49224,0,4.564348,5.781393,1,0,0,48.1,8.583071,1.609438,4.323066,1 +11,6,0,1,1,630813,1,7290.834,22.97878,0,12,1,15.98654,0,31.97308,0,0,47.95961,0,0,0,1,1,3,62.2,10.3,1,56.8,0,240.48,0,0,1.098612,5.482637,0,0,0,1,0,0,56.8,8.89451,1.098612,3.870359,1 +11,6,0,1,2,630813,1,7290.834,23.97878,0,12,1,32.8674,4.756328,0,0,0,37.62373,0,0,0,2,0,3,62.2,10.3,1,56.8,0,240.48,0,0,1.098612,5.482637,0,0,0,1,0,0,56.8,8.89451,1.098612,3.627635,1 +11,6,0,1,3,630813,1,7290.834,24.97878,0,12,1,13.72213,11.73585,0,0,0,25.45798,0,0,0,2,0,3,62.2,10.3,1,56.8,0,240.48,0,0,1.098612,5.482637,0,0,0,1,0,0,56.8,8.89451,1.098612,3.237029,1 +17,6,25,1,1,630819,1,4638.709,5.853525,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,81.7,10.57626,1,55.6,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,1,0,55.6,8.442407,1.94591,,0 +17,6,25,1,2,630819,1,4638.709,6.853525,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,81.7,10.57626,1,55.6,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,1,0,55.6,8.442407,1.94591,,0 +17,6,25,1,3,630819,1,4638.709,7.853525,1,11,1,10.51746,0,31.55238,0,0,42.06984,0,0,0,0,1,7,81.7,10.57626,1,55.6,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,1,0,55.6,8.442407,1.94591,3.739331,1 +17,6,25,1,4,630819,1,4638.709,8.853525,1,11,1,11.33358,0,0,0,0,11.33358,0,0,0,0,1,7,81.7,10.57626,1,55.6,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,1,0,55.6,8.442407,1.94591,2.42777,1 +17,6,25,1,5,630819,1,4638.709,9.853525,1,11,1,159.8285,0,24.01372,0,0,183.8422,0,0,0,0,1,7,81.7,10.57626,1,55.6,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,1,0,55.6,8.442407,1.94591,5.214078,1 +17,6,25,1,1,630820,1,4638.709,11.67967,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,55,10.57626,0,70.4,426.45,426.45,1,0,1.94591,6.055495,0,3.258096,7.44179,1,0,0,70.4,8.442407,1.94591,,0 +17,6,25,1,2,630820,1,4638.709,12.67967,0,11,1,21.56953,0,25.24094,0,0,46.81046,0,0,0,0,1,7,55,10.57626,0,70.4,426.45,426.45,1,0,1.94591,6.055495,0,3.258096,7.44179,1,0,0,70.4,8.442407,1.94591,3.846107,1 +17,6,25,1,3,630820,1,4638.709,13.67967,0,11,1,18.93143,0,0,0,0,18.93143,0,0,0,0,0,7,55,10.57626,0,70.4,426.45,426.45,1,0,1.94591,6.055495,0,3.258096,7.44179,1,0,0,70.4,8.442407,1.94591,2.940823,1 +17,6,25,1,4,630820,1,4638.709,14.67967,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,55,10.57626,0,70.4,426.45,426.45,1,0,1.94591,6.055495,0,3.258096,7.44179,1,0,0,70.4,8.442407,1.94591,,0 +17,6,25,1,5,630820,1,4638.709,15.67967,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,55,10.57626,0,70.4,426.45,426.45,1,0,1.94591,6.055495,0,3.258096,7.44179,1,0,0,70.4,8.442407,1.94591,,0 +17,6,25,1,1,630821,1,4638.709,9.908282,1,11,1,9.910803,0,0,0,0,9.910803,0,0,0,0,0,7,90,10.57626,1,59.3,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,1,0,59.3,8.442407,1.94591,2.293625,1 +17,6,25,1,2,630821,1,4638.709,10.90828,1,11,1,11.47315,0,25.24094,0,0,36.71409,0,0,0,0,1,7,90,10.57626,1,59.3,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,1,0,59.3,8.442407,1.94591,3.603161,1 +17,6,25,1,3,630821,1,4638.709,11.90828,1,11,1,29.44888,0,0,0,0,29.44888,0,0,0,0,0,7,90,10.57626,1,59.3,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,1,0,59.3,8.442407,1.94591,3.382656,1 +17,6,25,1,4,630821,1,4638.709,12.90828,1,11,1,18.32263,0,0,0,0,18.32263,0,0,0,0,0,7,90,10.57626,1,59.3,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,1,0,59.3,8.442407,1.94591,2.908137,1 +17,6,25,1,5,630821,1,4638.709,13.90828,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,90,10.57626,1,59.3,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,1,0,59.3,8.442407,1.94591,,0 +17,6,25,1,1,630822,1,4638.709,27.36756,1,11,1,99.60357,24.46977,0,0,0,124.0733,0,0,0,2,0,7,77.7,10.3,0,42,426.45,426.45,0,0,1.94591,6.055495,0,3.258096,7.44179,0,0,1,42,8.442407,1.94591,4.820873,1 +17,6,25,1,2,630822,1,4638.709,28.36756,1,11,1,34.87838,0,44.05691,0,0,78.9353,0,0,0,0,1,7,77.7,10.3,0,42,426.45,426.45,0,0,1.94591,6.055495,0,3.258096,7.44179,0,0,1,42,8.442407,1.94591,4.368629,1 +17,6,25,1,3,630822,1,4638.709,29.36756,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,77.7,10.3,0,42,426.45,426.45,0,0,1.94591,6.055495,0,3.258096,7.44179,0,0,1,42,8.442407,1.94591,,0 +17,6,25,1,4,630822,1,4638.709,30.36756,1,11,1,11.33358,0,38.1564,0,0,49.48999,0,0,0,0,1,7,77.7,10.3,0,42,426.45,426.45,0,0,1.94591,6.055495,0,3.258096,7.44179,0,0,1,42,8.442407,1.94591,3.90177,1 +17,6,25,1,5,630822,1,4638.709,31.36756,1,11,1,16.1235,0,0,0,0,16.1235,0,0,0,0,0,7,77.7,10.3,0,42,426.45,426.45,0,0,1.94591,6.055495,0,3.258096,7.44179,0,0,1,42,8.442407,1.94591,2.780278,1 +17,6,25,1,1,630823,1,4638.709,29.63176,0,12,1,28.74133,7.680872,0,0,0,36.4222,0,0,0,5,0,7,58,20.7,0,44.3,426.45,426.45,0,0,1.94591,6.055495,0,3.258096,7.44179,1,0,0,44.3,8.442407,1.94591,3.595178,1 +17,6,25,1,2,630823,1,4638.709,30.63176,0,12,1,4.589261,4.396512,0,0,0,8.985773,0,0,0,1,0,7,58,20.7,0,44.3,426.45,426.45,0,0,1.94591,6.055495,0,3.258096,7.44179,1,0,0,44.3,8.442407,1.94591,2.195642,1 +17,6,25,1,3,630823,1,4638.709,31.63176,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,58,20.7,0,44.3,426.45,426.45,0,0,1.94591,6.055495,0,3.258096,7.44179,1,0,0,44.3,8.442407,1.94591,,0 +17,6,25,1,4,630823,1,4638.709,32.63176,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,58,20.7,0,44.3,426.45,426.45,0,0,1.94591,6.055495,0,3.258096,7.44179,1,0,0,44.3,8.442407,1.94591,,0 +17,6,25,1,5,630823,1,4638.709,33.63176,0,12,1,32.93311,0,0,0,0,32.93311,0,0,0,1,0,7,58,20.7,0,44.3,426.45,426.45,0,0,1.94591,6.055495,0,3.258096,7.44179,1,0,0,44.3,8.442407,1.94591,3.494478,1 +17,6,25,1,1,630824,1,4638.709,1.984942,1,11,1,18.33499,2.725471,0,0,0,21.06046,0,0,0,0,0,7,77.40034,10.57626,1,81.5,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,0,0,81.5,8.442407,1.94591,3.047397,1 +17,6,25,1,2,630824,1,4638.709,2.984942,1,11,1,9.178522,0,0,0,0,9.178522,0,0,0,0,0,7,77.40034,10.57626,1,81.5,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,0,0,81.5,8.442407,1.94591,2.216866,1 +17,6,25,1,3,630824,1,4638.709,3.984942,1,11,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,1,81.5,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,0,0,81.5,8.442407,1.94591,,0 +17,6,25,1,4,630824,1,4638.709,4.984942,1,11,1,10.20023,0,0,0,0,10.20023,0,0,0,0,0,7,77.40034,10.57626,1,81.5,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,0,0,81.5,8.442407,1.94591,2.32241,1 +17,6,25,1,5,630824,1,4638.709,5.984942,1,11,1,12.00686,0,0,0,0,12.00686,0,0,0,0,1,7,77.40034,10.57626,1,81.5,426.45,426.45,1,1,1.94591,6.055495,0,3.258096,7.44179,0,0,0,81.5,8.442407,1.94591,2.485478,1 +18,6,25,0,1,630837,.5112414,2469.534,22.52977,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,61.7,0,0,56.8,750,0,0,0,.6931472,0,0,3.258096,8.006368,0,0,0,56.8,7.81219,.6931472,,0 +18,6,25,0,2,630837,.5112414,2469.534,23.52977,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,61.7,0,0,56.8,750,0,0,0,.6931472,0,0,3.258096,8.006368,0,0,0,56.8,7.81219,.6931472,,0 +18,6,25,0,3,630837,.5112414,2469.534,24.52977,0,12,1,16.46655,0,0,0,0,16.46655,0,0,0,0,0,2,61.7,0,0,56.8,750,0,0,0,.6931472,0,0,3.258096,8.006368,0,0,0,56.8,7.81219,.6931472,2.801331,1 +18,6,25,0,1,630838,1,6735.316,13.33881,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,75,10.57626,.1442925,66.7,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,66.7,8.815269,1.791759,,0 +18,6,25,0,2,630838,1,6735.316,14.33881,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,75,10.57626,.1442925,66.7,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,66.7,8.815269,1.791759,,0 +18,6,25,0,3,630838,1,6735.316,15.33881,1,10,1,10.2916,0,0,0,0,10.2916,0,0,0,0,1,6,75,10.57626,.1442925,66.7,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,66.7,8.815269,1.791759,2.331328,1 +18,6,25,0,1,630839,1,6735.316,47.15948,1,10,1,6.731174,2.027766,0,0,0,8.75894,0,0,0,1,0,6,80.9,3.4,0,83,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,83,8.815269,1.791759,2.170075,1 +18,6,25,0,2,630839,1,6735.316,48.15948,1,10,1,17.75595,0,0,0,2425.765,2443.521,3,0,0,2,0,6,80.9,3.4,0,83,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,83,8.815269,1.791759,7.801195,1 +18,6,25,0,3,630839,1,6735.316,49.15948,1,10,1,24.01372,0,43.2247,0,0,67.23842,0,0,0,2,1,6,80.9,3.4,0,83,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,1,0,0,83,8.815269,1.791759,4.208245,1 +18,6,25,0,1,630840,1,6735.316,9.371663,0,10,1,37.44215,0,0,0,0,37.44215,0,0,0,1,0,6,93.3,10.57626,.1442925,100,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,100,8.815269,1.791759,3.622797,1 +18,6,25,0,2,630840,1,6735.316,10.37166,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,93.3,10.57626,.1442925,100,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,100,8.815269,1.791759,,0 +18,6,25,0,3,630840,1,6735.316,11.37166,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,93.3,10.57626,.1442925,100,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,100,8.815269,1.791759,,0 +18,6,25,0,1,630841,1,6735.316,21.73032,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,70.7,24.1,1,47.7,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,47.7,8.815269,1.791759,,0 +18,6,25,0,2,630841,1,6735.316,22.73032,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,70.7,24.1,1,47.7,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,47.7,8.815269,1.791759,,0 +18,6,25,0,3,630841,1,6735.316,23.73032,0,11,1,20.24014,0,0,0,0,20.24014,0,0,0,0,0,6,70.7,24.1,1,47.7,750,750,0,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,47.7,8.815269,1.791759,3.007668,1 +18,6,25,0,1,630843,1,6735.316,14.42026,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,80.3,6.9,0,77.3,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.3,8.815269,1.791759,,0 +18,6,25,0,2,630843,1,6735.316,15.42026,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,80.3,6.9,0,77.3,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.3,8.815269,1.791759,,0 +18,6,25,0,3,630843,1,6735.316,16.42026,0,10,1,0,0,0,0,0,0,0,0,0,0,0,6,80.3,6.9,0,77.3,750,750,1,0,1.791759,6.620073,0,3.258096,8.006368,0,0,0,77.3,8.815269,1.791759,,0 +11,6,0,1,1,630895,0,10931.39,37.17454,0,16,1,56.28439,12.46297,29.62336,0,0,98.37071,0,0,0,4,1,4,92.6,6.9,0,73.9,0,0,0,0,1.386294,0,0,0,0,0,0,0,73.9,9.299485,1.386294,4.588743,1 +11,6,0,1,2,630895,0,10931.39,38.17454,0,16,1,45.55809,20.99089,0,0,0,66.54897,0,0,0,2,2,4,92.6,6.9,0,73.9,0,0,0,0,1.386294,0,0,0,0,0,0,0,73.9,9.299485,1.386294,4.197938,1 +11,6,0,1,3,630895,0,10931.39,39.17454,0,16,1,173.3564,34.23529,35.51211,0,0,243.1038,0,0,0,6,1,4,92.6,6.9,0,73.9,0,0,0,0,1.386294,0,0,0,0,0,0,0,73.9,9.299485,1.386294,5.493488,1 +11,6,0,1,1,630896,0,10931.39,7.110198,0,14,1,86.33093,21.47694,0,0,0,107.8079,0,0,0,8,0,4,85,10.57626,0,74.1,0,0,1,0,1.386294,0,0,0,0,0,0,0,74.1,9.299485,1.386294,4.680351,1 +11,6,0,1,2,630896,0,10931.39,8.110198,0,14,1,29.99241,19.59757,0,0,0,49.58998,0,0,0,3,1,4,85,10.57626,0,74.1,0,0,1,0,1.386294,0,0,0,0,0,0,0,74.1,9.299485,1.386294,3.903789,1 +11,6,0,1,3,630896,0,10931.39,9.110198,0,14,1,185.4671,66.87543,24.22145,0,0,276.564,0,0,0,3,1,4,85,10.57626,0,74.1,0,0,1,0,1.386294,0,0,0,0,0,0,0,74.1,9.299485,1.386294,5.622442,1 +11,6,0,1,1,630897,0,10931.39,33.80698,1,14,1,24.54507,62.73804,0,0,0,87.28311,0,0,0,3,0,4,84,10.3,0,61.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,61.4,9.299485,1.386294,4.469157,1 +11,6,0,1,2,630897,0,10931.39,34.80698,1,14,1,82.00455,107.388,34.16856,0,0,223.5611,0,0,0,5,1,4,84,10.3,0,61.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,61.4,9.299485,1.386294,5.409685,1 +11,6,0,1,3,630897,0,10931.39,35.80698,1,14,1,252.2491,191.4118,0,0,0,443.6609,0,0,0,11,0,4,84,10.3,0,61.4,0,0,0,0,1.386294,0,0,0,0,0,0,0,61.4,9.299485,1.386294,6.09506,1 +11,6,0,1,1,630898,0,10931.39,8.758385,0,14,1,44.43504,14.81168,0,0,0,59.24672,0,0,0,5,0,4,86.7,10.57626,0,81.5,0,0,1,0,1.386294,0,0,0,0,0,0,0,81.5,9.299485,1.386294,4.08171,1 +11,6,0,1,2,630898,0,10931.39,9.758385,0,14,1,73.65224,16.40471,28.4738,0,0,118.5308,0,0,0,10,1,4,86.7,10.57626,0,81.5,0,0,1,0,1.386294,0,0,0,0,0,0,0,81.5,9.299485,1.386294,4.775172,1 +11,6,0,1,3,630898,0,10931.39,10.75838,0,14,1,132.1799,8.387544,13.84083,0,0,154.4083,0,0,0,5,0,4,86.7,10.57626,0,81.5,0,0,1,0,1.386294,0,0,0,0,0,0,0,81.5,9.299485,1.386294,5.0396,1 +11,6,0,1,1,630899,1,4096.262,14.51608,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,73.4,3.4,0,76.1,0,0,1,0,1.609438,0,0,0,0,0,1,0,76.1,8.318074,1.609438,,0 +11,6,0,1,2,630899,1,4096.262,15.51608,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,73.4,3.4,0,76.1,0,0,1,0,1.609438,0,0,0,0,0,1,0,76.1,8.318074,1.609438,,0 +11,6,0,1,3,630899,1,4096.262,16.51608,0,11,1,26.41509,3.138937,0,0,0,29.55403,0,0,0,2,0,5,73.4,3.4,0,76.1,0,0,1,0,1.609438,0,0,0,0,0,1,0,76.1,8.318074,1.609438,3.38622,1 +11,6,0,1,1,630900,1,4096.262,34.53251,0,7,1,40.80774,0,0,0,0,40.80774,0,0,0,1,0,5,88.8,3.4,0,69,0,0,0,0,1.609438,0,0,0,0,1,0,0,69,8.318074,1.609438,3.708872,1 +11,6,0,1,2,630900,1,4096.262,35.53251,0,7,1,77.44617,10.16245,0,0,0,87.60861,0,0,0,3,0,5,88.8,3.4,0,69,0,0,0,0,1.609438,0,0,0,0,1,0,0,69,8.318074,1.609438,4.472879,1 +11,6,0,1,3,630900,1,4096.262,36.53251,0,7,1,26.41509,0,0,0,0,26.41509,0,0,0,2,0,5,88.8,3.4,0,69,0,0,0,0,1.609438,0,0,0,0,1,0,0,69,8.318074,1.609438,3.273936,1 +11,6,0,1,1,630901,1,4096.262,6.20397,1,11,1,18.51073,1.682793,0,0,0,20.19352,0,0,0,1,0,5,83.3,10.57626,0,59.3,0,0,1,1,1.609438,0,0,0,0,0,0,0,59.3,8.318074,1.609438,3.005362,1 +11,6,0,1,2,630901,1,4096.262,7.20397,1,11,1,79.71288,0,0,0,0,79.71288,0,0,0,4,0,5,83.3,10.57626,0,59.3,0,0,1,1,1.609438,0,0,0,0,0,0,0,59.3,8.318074,1.609438,4.378431,1 +11,6,0,1,3,630901,1,4096.262,8.20397,1,11,1,13.72213,0,0,0,0,13.72213,0,0,0,1,0,5,83.3,10.57626,0,59.3,0,0,1,1,1.609438,0,0,0,0,0,0,0,59.3,8.318074,1.609438,2.61901,1 +11,6,0,1,1,630902,1,4096.262,7.578371,1,11,1,17.66933,0,0,0,0,17.66933,0,0,0,3,0,5,100,10.57626,0,77.8,0,0,1,1,1.609438,0,0,0,0,1,0,0,77.8,8.318074,1.609438,2.87183,1 +11,6,0,1,2,630902,1,4096.262,8.578371,1,11,1,88.40196,10.10578,0,0,0,98.50774,0,0,0,3,0,5,100,10.57626,0,77.8,0,0,1,1,1.609438,0,0,0,0,1,0,0,77.8,8.318074,1.609438,4.590135,1 +11,6,0,1,3,630902,1,4096.262,9.578371,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,100,10.57626,0,77.8,0,0,1,1,1.609438,0,0,0,0,1,0,0,77.8,8.318074,1.609438,,0 +11,6,0,1,1,630903,1,4096.262,32.79124,1,11,1,26.92469,0,0,0,0,26.92469,0,0,0,3,0,5,84,10.3,0,62.5,0,0,0,0,1.609438,0,0,0,0,0,1,0,62.5,8.318074,1.609438,3.293044,1 +11,6,0,1,2,630903,1,4096.262,33.79124,1,11,1,59.31243,31.0918,0,0,0,90.40423,0,0,0,7,0,5,84,10.3,0,62.5,0,0,0,0,1.609438,0,0,0,0,0,1,0,62.5,8.318074,1.609438,4.504291,1 +11,6,0,1,3,630903,1,4096.262,34.79124,1,11,1,59.3482,39.03945,0,0,0,98.38765,0,0,0,4,0,5,84,10.3,0,62.5,0,0,0,0,1.609438,0,0,0,0,0,1,0,62.5,8.318074,1.609438,4.588915,1 +13,6,0,1,1,630909,1,6517.302,16.28747,1,17,1,9.82801,0,0,0,0,9.82801,0,0,0,0,0,2,83.5,3.4,0,85.2,300,454.42,1,1,.6931472,6.119022,1,4.564348,5.755076,0,0,0,85.2,8.78237,.6931472,2.285236,1 +13,6,0,1,2,630909,1,6517.302,17.28747,1,17,1,11.39471,0,0,0,0,11.39471,0,0,0,1,0,2,83.5,3.4,0,85.2,300,454.42,1,1,.6931472,6.119022,1,4.564348,5.755076,0,0,0,85.2,8.78237,.6931472,2.433149,1 +13,6,0,1,3,630909,1,6517.302,18.28747,1,17,1,0,0,0,0,0,0,0,0,0,0,0,2,83.5,3.4,0,85.2,300,454.42,0,0,.6931472,6.119022,1,4.564348,5.755076,0,0,0,85.2,8.78237,.6931472,,0 +13,6,0,1,4,630909,1,6517.302,19.28747,1,17,1,10.50263,0,0,0,0,10.50263,0,0,0,0,0,2,83.5,3.4,0,85.2,300,454.42,0,0,.6931472,6.119022,1,4.564348,5.755076,0,0,0,85.2,8.78237,.6931472,2.351625,1 +13,6,0,1,5,630909,1,6517.302,20.28747,1,17,1,0,0,0,0,0,0,0,0,0,0,0,2,83.5,3.4,0,85.2,300,454.42,0,0,.6931472,6.119022,1,4.564348,5.755076,0,0,0,85.2,8.78237,.6931472,,0 +13,6,0,1,1,630910,1,6517.302,46.33812,1,17,1,21.62162,0,38.82064,0,0,60.44226,0,0,0,1,0,2,89.6,6.9,0,72.7,300,454.42,0,0,.6931472,6.119022,1,4.564348,5.755076,0,0,0,72.7,8.78237,.6931472,4.101688,1 +13,6,0,1,2,630910,1,6517.302,47.33812,1,17,1,0,0,0,0,0,0,0,0,0,0,0,2,89.6,6.9,0,72.7,300,454.42,0,0,.6931472,6.119022,1,4.564348,5.755076,0,0,0,72.7,8.78237,.6931472,,0 +13,6,0,1,3,630910,1,6517.302,48.33812,1,17,1,0,0,0,0,0,0,0,0,0,0,0,2,89.6,6.9,0,72.7,300,454.42,0,0,.6931472,6.119022,1,4.564348,5.755076,0,0,0,72.7,8.78237,.6931472,,0 +13,6,0,1,4,630910,1,6517.302,49.33812,1,17,1,16.87922,0,0,0,0,16.87922,0,0,0,1,0,2,89.6,6.9,0,72.7,300,454.42,0,0,.6931472,6.119022,1,4.564348,5.755076,0,0,0,72.7,8.78237,.6931472,2.826083,1 +13,6,0,1,5,630910,1,6517.302,50.33812,1,17,1,28.07848,3.599459,0,0,0,31.67794,0,0,0,3,0,2,89.6,6.9,0,72.7,300,454.42,0,0,.6931472,6.119022,1,4.564348,5.755076,0,0,0,72.7,8.78237,.6931472,3.455621,1 +11,6,0,1,1,630947,0,6735.316,14.73785,0,16,1,12.69573,3.343208,0,0,0,16.03893,0,0,0,2,0,4,94.1,3.4,0,96.4,0,197.4,1,0,1.386294,5.285232,0,0,0,0,0,0,96.4,8.815269,1.386294,2.775019,1 +11,6,0,1,2,630947,0,6735.316,15.73785,0,16,1,51.25285,16.15414,0,0,0,67.40698,0,0,0,6,0,4,94.1,3.4,0,96.4,0,197.4,1,0,1.386294,5.285232,0,0,0,0,0,0,96.4,8.815269,1.386294,4.210749,1 +11,6,0,1,3,630947,0,6735.316,16.73785,0,16,1,41.52249,22.30104,0,0,0,63.82353,0,0,0,6,0,4,94.1,3.4,0,96.4,0,197.4,1,0,1.386294,5.285232,0,0,0,0,0,0,96.4,8.815269,1.386294,4.156122,1 +11,6,0,1,1,630948,0,6735.316,39.17043,0,20,1,26.66102,86.74566,0,0,0,113.4067,0,0,0,1,0,4,93.1,3.4,0,98.9,0,197.4,0,0,1.386294,5.285232,0,0,0,0,0,0,98.9,8.815269,1.386294,4.73098,1 +11,6,0,1,2,630948,0,6735.316,40.17043,0,20,1,268.4131,150.5277,0,0,0,418.9408,0,0,0,8,0,4,93.1,3.4,0,98.9,0,197.4,0,0,1.386294,5.285232,0,0,0,0,0,0,98.9,8.815269,1.386294,6.03773,1 +11,6,0,1,3,630948,0,6735.316,41.17043,0,20,1,55.0173,128.1107,0,0,0,183.128,0,0,0,5,0,4,93.1,3.4,0,98.9,0,197.4,0,0,1.386294,5.285232,0,0,0,0,0,0,98.9,8.815269,1.386294,5.210186,1 +11,6,0,1,1,630949,0,6735.316,9.404517,0,16,1,72.78883,11.23995,0,0,0,84.02878,0,0,0,6,0,4,98.3,10.57626,0,96.3,0,197.4,1,0,1.386294,5.285232,0,0,0,0,0,0,96.3,8.815269,1.386294,4.431159,1 +11,6,0,1,2,630949,0,6735.316,10.40452,0,16,1,112.3766,8.378891,0,0,0,120.7555,0,0,0,5,0,4,98.3,10.57626,0,96.3,0,197.4,1,0,1.386294,5.285232,0,0,0,0,0,0,96.3,8.815269,1.386294,4.793768,1 +11,6,0,1,3,630949,0,6735.316,11.40452,0,16,1,91.34948,3.100346,0,0,0,94.44983,0,0,0,4,0,4,98.3,10.57626,0,96.3,0,197.4,1,0,1.386294,5.285232,0,0,0,0,0,0,96.3,8.815269,1.386294,4.548069,1 +11,6,0,1,1,630950,0,6735.316,36.7091,1,16,1,148.1168,41.84934,0,0,0,189.9661,0,0,0,24,0,4,76.6,10.3,0,78.4,0,197.4,0,0,1.386294,5.285232,0,0,0,0,0,0,78.4,8.815269,1.386294,5.246846,1 +11,6,0,1,2,630950,0,6735.316,37.7091,1,16,1,28.4738,6.833713,0,0,0,35.30752,0,0,0,12,0,4,76.6,10.3,0,78.4,0,197.4,0,0,1.386294,5.285232,0,0,0,0,0,0,78.4,8.815269,1.386294,3.564096,1 +11,6,0,1,3,630950,0,6735.316,38.7091,1,16,1,70.24222,18.67128,0,0,0,88.9135,0,0,0,9,0,4,76.6,10.3,0,78.4,0,197.4,0,0,1.386294,5.285232,0,0,0,0,0,0,78.4,8.815269,1.386294,4.487664,1 +19,6,25,1,1,630954,0,8146.627,27.2334,1,11,1,9.910803,15.39643,0,0,0,25.30724,0,0,0,2,0,5,70.7,10.3,0,72.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,1,0,72.7,9.005482,1.609438,3.23109,1 +19,6,25,1,2,630954,0,8146.627,28.2334,1,11,1,0,6.654428,0,0,0,6.654428,0,0,0,0,0,5,70.7,10.3,0,72.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,1,0,72.7,9.005482,1.609438,1.895283,1 +19,6,25,1,3,630954,0,8146.627,29.2334,1,11,1,33.65587,0,0,0,0,33.65587,0,0,0,2,0,5,70.7,10.3,0,72.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,1,0,72.7,9.005482,1.609438,3.516187,1 +19,6,25,1,4,630954,0,8146.627,30.2334,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,70.7,10.3,0,72.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,1,0,72.7,9.005482,1.609438,,0 +19,6,25,1,5,630954,0,8146.627,31.2334,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,70.7,10.3,0,72.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,1,0,72.7,9.005482,1.609438,,0 +19,6,25,1,1,630955,0,8146.627,7.466119,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,90,10.57626,0,29.6,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,1,0,0,29.6,9.005482,1.609438,,0 +19,6,25,1,2,630955,0,8146.627,8.466119,1,11,1,2.294631,3.327214,0,0,0,5.621845,0,0,0,1,0,5,90,10.57626,0,29.6,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,1,0,0,29.6,9.005482,1.609438,1.72666,1 +19,6,25,1,3,630955,0,8146.627,9.466119,1,11,1,8.413967,0,23.13841,0,0,31.55238,0,0,0,0,1,5,90,10.57626,0,29.6,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,1,0,0,29.6,9.005482,1.609438,3.451649,1 +19,6,25,1,4,630955,0,8146.627,10.46612,1,11,1,9.444654,0,15.11145,0,0,24.5561,0,0,0,0,1,5,90,10.57626,0,29.6,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,1,0,0,29.6,9.005482,1.609438,3.20096,1 +19,6,25,1,5,630955,0,8146.627,11.46612,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,90,10.57626,0,29.6,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,1,0,0,29.6,9.005482,1.609438,,0 +19,6,25,1,1,630956,0,8146.627,4.89254,0,11,1,30.22795,0,0,0,0,30.22795,0,0,0,1,0,5,77.40034,10.57626,0,85.2,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.005482,1.609438,3.408767,1 +19,6,25,1,2,630956,0,8146.627,5.89254,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,85.2,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.005482,1.609438,,0 +19,6,25,1,3,630956,0,8146.627,6.89254,0,11,1,32.39377,0,0,0,0,32.39377,0,0,0,0,0,5,77.40034,10.57626,0,85.2,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.005482,1.609438,3.477966,1 +19,6,25,1,4,630956,0,8146.627,7.89254,0,11,1,46.84549,0,0,0,0,46.84549,0,0,0,0,0,5,77.40034,10.57626,0,85.2,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.005482,1.609438,3.846855,1 +19,6,25,1,5,630956,0,8146.627,8.892539,0,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,85.2,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.005482,1.609438,,0 +19,6,25,1,1,630957,0,8146.627,29.28679,0,12,1,111.9921,31.62537,0,0,0,143.6174,0,0,0,6,0,5,77.1,6.9,0,76.1,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,76.1,9.005482,1.609438,4.967153,1 +19,6,25,1,2,630957,0,8146.627,30.28679,0,12,1,27.53557,34.64433,0,0,0,62.1799,0,0,0,8,0,5,77.1,6.9,0,76.1,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,76.1,9.005482,1.609438,4.130032,1 +19,6,25,1,3,630957,0,8146.627,31.28679,0,12,1,48.80101,4.177535,0,0,0,52.97855,0,0,0,5,0,5,77.1,6.9,0,76.1,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,76.1,9.005482,1.609438,3.969887,1 +19,6,25,1,4,630957,0,8146.627,32.28679,0,12,1,52.89006,0,0,0,0,52.89006,0,0,0,9,0,5,77.1,6.9,0,76.1,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,76.1,9.005482,1.609438,3.968215,1 +19,6,25,1,5,630957,0,8146.627,33.28679,0,12,1,26.75815,0,0,0,0,26.75815,0,0,0,3,0,5,77.1,6.9,0,76.1,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,76.1,9.005482,1.609438,3.286839,1 +19,6,25,1,1,630958,0,8146.627,2.850103,1,11,1,2.477701,4.38553,0,0,0,6.863231,0,0,0,1,0,5,77.40034,10.57626,0,77.8,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,77.8,9.005482,1.609438,1.926178,1 +19,6,25,1,2,630958,0,8146.627,3.850103,1,11,1,3.212483,2.413951,0,0,0,5.626434,0,0,0,1,0,5,77.40034,10.57626,0,77.8,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,77.8,9.005482,1.609438,1.727476,1 +19,6,25,1,3,630958,0,8146.627,4.850103,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,77.8,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,77.8,9.005482,1.609438,,0 +19,6,25,1,4,630958,0,8146.627,5.850103,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,77.8,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,77.8,9.005482,1.609438,,0 +19,6,25,1,5,630958,0,8146.627,6.850103,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,77.8,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,77.8,9.005482,1.609438,,0 +13,6,0,0,1,630962,.5112414,3575.525,19.14305,0,8,1,22.71771,0,0,0,0,22.71771,0,0,0,0,0,3,59.6,6.9,0,67,450,552,0,0,1.098612,6.313548,1,4.564348,6.160541,0,0,0,67,8.182147,1.098612,3.123145,1 +13,6,0,0,2,630962,.5112414,3575.525,20.14305,0,8,1,14.35588,0,0,0,0,14.35588,0,0,0,0,0,3,59.6,6.9,0,67,450,552,0,0,1.098612,6.313548,1,4.564348,6.160541,0,0,0,67,8.182147,1.098612,2.664159,1 +13,6,0,0,3,630962,.5112414,3575.525,21.14305,0,8,1,36.70669,0,0,0,0,36.70669,0,0,0,0,0,3,59.6,6.9,0,67,450,552,0,0,1.098612,6.313548,1,4.564348,6.160541,0,0,0,67,8.182147,1.098612,3.602959,1 +14,6,95,1,1,630969,0,6735.316,61.17728,0,19,1,286.4956,0,0,0,0,286.4956,0,0,0,11,0,2,89.9,0,0,86.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,86.4,8.815269,.6931472,5.657723,1 +14,6,95,1,2,630969,0,6735.316,62.17728,0,19,1,0,0,0,0,0,0,0,0,0,0,0,2,89.9,0,0,86.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,86.4,8.815269,.6931472,,0 +14,6,95,1,3,630969,0,6735.316,63.17728,0,19,1,0,0,0,0,0,0,0,0,0,0,0,2,89.9,0,0,86.4,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,86.4,8.815269,.6931472,,0 +14,6,95,1,1,630971,0,6735.316,52.95277,1,12,1,68.15314,3.786285,43.14682,0,0,115.0862,0,0,0,4,0,2,66.5,31,0,52.3,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,52.3,8.815269,.6931472,4.745682,1 +14,6,95,1,2,630971,0,6735.316,53.95277,1,12,1,22.66717,0,0,0,0,22.66717,0,0,0,1,0,2,66.5,31,0,52.3,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,52.3,8.815269,.6931472,3.120918,1 +14,6,95,1,3,630971,0,6735.316,54.95277,1,12,1,61.74957,0,0,0,0,61.74957,0,0,0,3,1,2,66.5,31,0,52.3,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,52.3,8.815269,.6931472,4.123087,1 +16,6,95,0,1,630974,1,6656.426,7.058179,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,8.803488,1.609438,,0 +16,6,95,0,2,630974,1,6656.426,8.058179,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,8.803488,1.609438,,0 +16,6,95,0,3,630974,1,6656.426,9.058179,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,8.803488,1.609438,,0 +16,6,95,0,1,630975,1,6656.426,30.80903,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,79.3,3.4,0,71.2,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,71.2,8.803488,1.609438,,0 +16,6,95,0,2,630975,1,6656.426,31.80903,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,79.3,3.4,0,71.2,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,71.2,8.803488,1.609438,,0 +16,6,95,0,3,630975,1,6656.426,32.80904,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,79.3,3.4,0,71.2,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,71.2,8.803488,1.609438,,0 +16,6,95,0,1,630976,1,6656.426,4.213552,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,8.803488,1.609438,,0 +16,6,95,0,2,630976,1,6656.426,5.213552,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,8.803488,1.609438,,0 +16,6,95,0,3,630976,1,6656.426,6.213552,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,100,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,100,8.803488,1.609438,,0 +16,6,95,0,1,630977,1,6656.426,30.40931,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,93.6,3.4,0,81.8,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,81.8,8.803488,1.609438,,0 +16,6,95,0,2,630977,1,6656.426,31.40931,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,93.6,3.4,0,81.8,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,81.8,8.803488,1.609438,,0 +16,6,95,0,3,630977,1,6656.426,32.40931,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,93.6,3.4,0,81.8,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,81.8,8.803488,1.609438,,0 +5,6,25,1,1,630980,1,1327.189,14.15469,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,79.8,6.9,0,79.5,431.4,431.4,1,0,2.079442,6.067036,0,3.258096,7.45333,0,0,0,79.5,7.191572,2.079442,,0 +5,6,25,1,2,630980,1,1327.189,15.15469,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,79.8,6.9,0,79.5,431.4,431.4,1,0,2.079442,6.067036,0,3.258096,7.45333,0,0,0,79.5,7.191572,2.079442,,0 +5,6,25,1,3,630980,1,1327.189,16.15469,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,79.8,6.9,0,79.5,431.4,431.4,1,0,1.791759,6.067036,0,3.258096,7.45333,0,0,0,79.5,7.191572,1.791759,,0 +5,6,25,1,1,630981,1,1327.189,35.20329,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,77.1,13.8,0,70.5,431.4,431.4,0,0,2.079442,6.067036,0,3.258096,7.45333,0,0,0,70.5,7.191572,2.079442,,0 +5,6,25,1,2,630981,1,1327.189,36.20329,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,77.1,13.8,0,70.5,431.4,431.4,0,0,2.079442,6.067036,0,3.258096,7.45333,0,0,0,70.5,7.191572,2.079442,,0 +5,6,25,1,3,630981,1,1327.189,37.20329,1,12,1,169.1252,10.36021,0,0,1097.427,1276.912,1,0,0,7,0,6,77.1,13.8,0,70.5,431.4,431.4,0,0,1.791759,6.067036,0,3.258096,7.45333,0,0,0,70.5,7.191572,1.791759,7.1522,1 +5,6,25,1,1,630982,1,1327.189,15.57837,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,67.6,3.4,0,48.8,431.4,431.4,1,0,2.079442,6.067036,0,3.258096,7.45333,0,0,0,48.8,7.191572,2.079442,,0 +5,6,25,1,2,630982,1,1327.189,16.57837,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,67.6,3.4,0,48.8,431.4,431.4,1,0,2.079442,6.067036,0,3.258096,7.45333,0,0,0,48.8,7.191572,2.079442,,0 +5,6,25,1,1,630983,1,1327.189,12.82135,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,88.3,10.57626,0,92.6,431.4,431.4,1,0,2.079442,6.067036,0,3.258096,7.45333,0,0,0,92.6,7.191572,2.079442,,0 +5,6,25,1,2,630983,1,1327.189,13.82135,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,88.3,10.57626,0,92.6,431.4,431.4,1,0,2.079442,6.067036,0,3.258096,7.45333,0,0,0,92.6,7.191572,2.079442,,0 +5,6,25,1,3,630983,1,1327.189,14.82135,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,92.6,431.4,431.4,1,0,1.791759,6.067036,0,3.258096,7.45333,0,0,0,92.6,7.191572,1.791759,,0 +5,6,25,0,1,630985,1,1327.189,37.06503,0,7,1,0,0,0,0,0,0,0,0,0,0,0,8,86.2,3.4,0,77.3,431.4,431.4,0,0,2.079442,6.067036,0,3.258096,7.45333,0,0,0,77.3,7.191572,2.079442,,0 +5,6,25,0,2,630985,1,1327.189,38.06503,0,7,1,0,0,0,0,0,0,0,0,0,0,0,8,86.2,3.4,0,77.3,431.4,431.4,0,0,2.079442,6.067036,0,3.258096,7.45333,0,0,0,77.3,7.191572,2.079442,,0 +5,6,25,0,3,630985,1,1327.189,39.06503,0,7,1,36.02058,2.521441,0,0,2085.42,2123.962,1,0,0,3,0,6,86.2,3.4,0,77.3,431.4,431.4,0,0,1.791759,6.067036,0,3.258096,7.45333,0,0,0,77.3,7.191572,1.791759,7.661038,1 +5,6,25,1,1,630986,1,1327.189,19.2909,1,7,1,5.04838,.6310475,0,0,0,5.679428,0,0,0,1,0,8,79.8,3.4,0,76.1,431.4,431.4,0,0,2.079442,6.067036,0,3.258096,7.45333,0,0,0,76.1,7.191572,2.079442,1.736851,1 +5,6,25,1,2,630986,1,1327.189,20.2909,1,7,1,0,0,0,0,415.187,415.187,1,0,0,0,0,8,79.8,3.4,0,76.1,431.4,431.4,0,0,2.079442,6.067036,0,3.258096,7.45333,0,0,0,76.1,7.191572,2.079442,6.028729,1 +5,6,25,1,1,630987,1,1327.189,11.53183,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,91.7,10.57626,0,74.1,431.4,431.4,1,1,2.079442,6.067036,0,3.258096,7.45333,0,0,0,74.1,7.191572,2.079442,,0 +5,6,25,1,2,630987,1,1327.189,12.53183,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,91.7,10.57626,0,74.1,431.4,431.4,1,1,2.079442,6.067036,0,3.258096,7.45333,0,0,0,74.1,7.191572,2.079442,,0 +5,6,25,1,3,630987,1,1327.189,13.53183,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,91.7,10.57626,0,74.1,431.4,431.4,1,1,1.791759,6.067036,0,3.258096,7.45333,0,0,0,74.1,7.191572,1.791759,,0 +5,6,25,1,1,630988,1,1327.189,9.782341,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,95,10.57626,0,74.1,431.4,431.4,1,1,2.079442,6.067036,0,3.258096,7.45333,0,0,0,74.1,7.191572,2.079442,,0 +5,6,25,1,2,630988,1,1327.189,10.78234,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,95,10.57626,0,74.1,431.4,431.4,1,1,2.079442,6.067036,0,3.258096,7.45333,0,0,0,74.1,7.191572,2.079442,,0 +5,6,25,1,3,630988,1,1327.189,11.78234,1,12,1,7.54717,0,0,0,0,7.54717,0,0,0,1,0,6,95,10.57626,0,74.1,431.4,431.4,1,1,1.791759,6.067036,0,3.258096,7.45333,0,0,0,74.1,7.191572,1.791759,2.021173,1 +18,6,25,1,1,631009,0,7493.087,17.39904,0,12,1,122.0482,25.48455,8.463818,0,0,155.9966,0,0,0,6,0,4,89.9,3.4,0,63.6,750,967.6,1,0,1.386294,6.874819,0,3.258096,8.006368,1,0,0,63.6,8.921869,1.386294,5.049834,1 +18,6,25,1,2,631009,0,7493.087,18.39904,0,12,1,56.56796,16.68945,0,0,0,73.2574,0,0,0,3,0,4,89.9,3.4,0,63.6,750,967.6,0,0,1.386294,6.874819,0,3.258096,8.006368,1,0,0,63.6,8.921869,1.386294,4.293979,1 +18,6,25,1,3,631009,0,7493.087,19.39904,0,12,1,78.89273,25.61246,25.55017,0,0,130.0554,0,0,0,6,0,5,89.9,3.4,0,63.6,750,967.6,0,0,1.609438,6.874819,0,3.258096,8.006368,1,0,0,63.6,8.921869,1.609438,4.86796,1 +18,6,25,1,1,631010,0,7493.087,44.52567,1,12,1,0,6.948794,0,0,0,6.948794,0,0,0,0,0,4,91.5,17.2,0,73.9,750,967.6,0,0,1.386294,6.874819,0,3.258096,8.006368,1,0,0,73.9,8.921869,1.386294,1.938568,1 +18,6,25,1,2,631010,0,7493.087,45.52567,1,12,1,0,10.23918,0,0,0,10.23918,0,0,0,0,0,4,91.5,17.2,0,73.9,750,967.6,0,0,1.386294,6.874819,0,3.258096,8.006368,1,0,0,73.9,8.921869,1.386294,2.326221,1 +18,6,25,1,3,631010,0,7493.087,46.52567,1,12,1,115.5709,28.19377,0,0,0,143.7647,0,0,0,4,0,5,91.5,17.2,0,73.9,750,967.6,0,0,1.609438,6.874819,0,3.258096,8.006368,1,0,0,73.9,8.921869,1.609438,4.968178,1 +18,6,25,1,1,631011,0,7493.087,15.41684,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,96.8,3.4,0,97.7,750,967.6,1,1,1.386294,6.874819,0,3.258096,8.006368,1,0,0,97.7,8.921869,1.386294,,0 +18,6,25,1,2,631011,0,7493.087,16.41684,1,12,1,30.75171,18.67122,0,0,587.6993,637.1223,1,0,0,1,0,4,96.8,3.4,0,97.7,750,967.6,1,1,1.386294,6.874819,0,3.258096,8.006368,1,0,0,97.7,8.921869,1.386294,6.456962,1 +18,6,25,1,3,631011,0,7493.087,17.41684,1,12,1,43.25259,20.81661,0,0,0,64.06921,0,0,0,3,0,5,96.8,3.4,0,97.7,750,967.6,1,1,1.609438,6.874819,0,3.258096,8.006368,1,0,0,97.7,8.921869,1.609438,4.159964,1 +18,6,25,1,1,631012,0,7493.087,44.33128,0,12,1,8.887008,18.3157,0,0,0,27.20271,0,0,0,1,0,4,79.3,10.3,1,53.4,750,967.6,0,0,1.386294,6.874819,0,3.258096,8.006368,1,0,0,53.4,8.921869,1.386294,3.303317,1 +18,6,25,1,2,631012,0,7493.087,45.33128,0,12,1,7.213364,28.15869,0,0,0,35.37206,0,0,0,0,0,4,79.3,10.3,1,53.4,750,967.6,0,0,1.386294,6.874819,0,3.258096,8.006368,1,0,0,53.4,8.921869,1.386294,3.565922,1 +18,6,25,1,3,631012,0,7493.087,46.33128,0,12,1,118.6851,36.6436,0,0,0,155.3287,0,0,0,7,0,5,79.3,10.3,1,53.4,750,967.6,0,0,1.609438,6.874819,0,3.258096,8.006368,1,0,0,53.4,8.921869,1.609438,5.045544,1 +11,6,0,1,1,631014,0,2694.316,23.64134,1,12,1,353.576,42.72112,0,0,0,396.2971,0,0,0,7,62,3,88.3,10.3,0,83,0,514.56,0,0,1.098612,6.243312,0,0,0,1,0,0,83,7.899271,1.098612,5.982164,1 +11,6,0,1,2,631014,0,2694.316,24.64134,1,12,1,373.9939,19.71526,0,0,0,393.7092,0,0,0,8,36,3,88.3,10.3,0,83,0,514.56,0,0,1.098612,6.243312,0,0,0,1,0,0,83,7.899271,1.098612,5.975613,1 +11,6,0,1,3,631014,0,2694.316,25.64134,1,12,1,275.0865,69.33564,0,0,0,344.4221,0,0,0,8,38,3,88.3,10.3,0,83,0,514.56,0,0,1.098612,6.243312,0,0,0,1,0,0,83,7.899271,1.098612,5.841868,1 +11,6,0,1,1,631015,0,2694.316,5.727584,1,12,1,136.9022,17.07575,0,0,0,153.978,0,0,0,4,18,3,81.7,10.57626,0,70.4,0,514.56,1,1,1.098612,6.243312,0,0,0,0,0,0,70.4,7.899271,1.098612,5.03681,1 +11,6,0,1,2,631015,0,2694.316,6.727584,1,12,1,168.9446,14.6697,0,0,0,183.6143,0,0,0,4,22,3,81.7,10.57626,0,70.4,0,514.56,1,1,1.098612,6.243312,0,0,0,0,0,0,70.4,7.899271,1.098612,5.212837,1 +11,6,0,1,3,631015,0,2694.316,7.727584,1,12,1,131.4879,28.68858,0,0,0,160.1765,0,0,0,8,20,3,81.7,10.57626,0,70.4,0,514.56,1,1,1.098612,6.243312,0,0,0,0,0,0,70.4,7.899271,1.098612,5.076276,1 +11,6,0,0,1,631016,0,2694.316,24.11773,0,12,1,228.9463,4.020313,0,0,0,232.9666,0,0,0,4,36,3,77.7,13.8,0,52.3,0,514.56,0,0,1.098612,6.243312,0,0,0,0,0,0,52.3,7.899271,1.098612,5.450895,1 +11,6,0,0,2,631016,0,2694.316,25.11773,0,12,1,169.3242,59.3432,0,0,0,228.6674,0,0,0,4,10,3,77.7,13.8,0,52.3,0,514.56,0,0,1.098612,6.243312,0,0,0,0,0,0,52.3,7.899271,1.098612,5.432269,1 +11,6,0,0,3,631016,0,2694.316,26.11773,0,12,1,67.47404,18.85121,0,0,0,86.32526,0,0,0,0,13,3,77.7,13.8,0,52.3,0,514.56,0,0,1.098612,6.243312,0,0,0,0,0,0,52.3,7.899271,1.098612,4.458122,1 +18,6,25,1,1,631017,0,8286.227,61.99863,0,11,1,27.34539,0,0,0,0,27.34539,0,0,0,1,0,2,86.7,20.7,1,72.7,750,936,0,0,.6931472,6.841616,0,3.258096,8.006368,1,0,0,72.7,9.02247,.6931472,3.308548,1 +18,6,25,1,2,631017,0,8286.227,62.99863,0,11,1,53.64564,5.572346,0,0,450.6989,509.9169,1,0,0,3,0,2,86.7,20.7,1,72.7,750,936,0,0,.6931472,6.841616,0,3.258096,8.006368,1,0,0,72.7,9.02247,.6931472,6.234248,1 +18,6,25,1,3,631017,0,8286.227,63.99863,0,11,1,15.43739,0,0,0,0,15.43739,0,0,0,1,0,2,86.7,20.7,1,72.7,750,936,0,0,.6931472,6.841616,0,3.258096,8.006368,1,0,0,72.7,9.02247,.6931472,2.736793,1 +18,6,25,1,1,631018,0,8286.227,61.1718,1,14,1,37.02145,0,0,0,0,37.02145,0,0,0,1,0,2,92,24.1,1,69.3,750,936,0,0,.6931472,6.841616,0,3.258096,8.006368,1,0,0,69.3,9.02247,.6931472,3.611498,1 +18,6,25,1,2,631018,0,8286.227,62.1718,1,14,1,30.22289,22.72384,0,0,0,52.94673,0,0,0,1,0,2,92,24.1,1,69.3,750,936,0,0,.6931472,6.841616,0,3.258096,8.006368,1,0,0,69.3,9.02247,.6931472,3.969286,1 +18,6,25,1,3,631018,0,8286.227,63.1718,1,14,1,77.18697,4.013722,0,0,1608.576,1689.777,1,0,0,4,0,2,92,24.1,1,69.3,750,936,0,0,.6931472,6.841616,0,3.258096,8.006368,1,0,0,69.3,9.02247,.6931472,7.432352,1 +11,6,0,0,1,631022,0,12691.24,28.23545,1,10,1,14.72444,6.731174,0,0,0,21.45562,0,0,0,1,0,5,98.4,3.4,0,89.8,0,193.96,0,0,1.609438,5.267652,0,0,0,0,0,0,89.8,9.448747,1.609438,3.065986,1 +11,6,0,0,2,631022,0,12691.24,29.23545,1,10,1,105.4023,29.14243,0,0,0,134.5448,0,0,0,8,0,5,98.4,3.4,0,89.8,0,193.96,0,0,1.609438,5.267652,0,0,0,0,0,0,89.8,9.448747,1.609438,4.901897,1 +11,6,0,0,3,631022,0,12691.24,30.23545,1,10,1,37.3928,34.79245,0,0,0,72.18525,0,0,0,4,0,5,98.4,3.4,0,89.8,0,193.96,0,0,1.609438,5.267652,0,0,0,0,0,0,89.8,9.448747,1.609438,4.279236,1 +11,6,0,0,1,631023,0,12691.24,35.11567,0,12,1,36.18006,11.88473,33.65587,0,0,81.72066,0,0,0,2,1,5,89.4,6.9,0,76.1,0,193.96,0,0,1.609438,5.267652,0,0,0,0,0,0,76.1,9.448747,1.609438,4.403307,1 +11,6,0,0,2,631023,0,12691.24,36.11567,0,12,1,11.33358,0,18.88931,0,0,30.22289,0,0,0,0,1,5,89.4,6.9,0,76.1,0,193.96,0,0,1.609438,5.267652,0,0,0,0,0,0,76.1,9.448747,1.609438,3.4086,1 +11,6,0,0,3,631023,0,12691.24,37.11567,0,12,1,10.2916,0,0,0,0,10.2916,0,0,0,0,0,5,89.4,6.9,0,76.1,0,193.96,0,0,1.609438,5.267652,0,0,0,0,0,0,76.1,9.448747,1.609438,2.331328,1 +11,6,0,0,1,631024,0,12691.24,6.622861,1,10,1,13.88305,4.396298,0,0,0,18.27934,0,0,0,0,0,5,91.7,10.57626,.1442925,81.5,0,193.96,1,1,1.609438,5.267652,0,0,0,0,0,0,81.5,9.448747,1.609438,2.905772,1 +11,6,0,0,2,631024,0,12691.24,7.622861,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,91.7,10.57626,.1442925,81.5,0,193.96,1,1,1.609438,5.267652,0,0,0,0,0,0,81.5,9.448747,1.609438,,0 +11,6,0,0,3,631024,0,12691.24,8.622861,1,10,1,21.9554,5.924528,24.01372,0,0,51.89365,0,0,0,2,1,5,91.7,10.57626,.1442925,81.5,0,193.96,1,1,1.609438,5.267652,0,0,0,0,0,0,81.5,9.448747,1.609438,3.949197,1 +11,6,0,0,1,631025,0,12691.24,8.188911,1,10,1,43.75263,0,0,0,0,43.75263,0,0,0,2,0,5,91.7,10.57626,.1442925,81.5,0,193.96,1,1,1.609438,5.267652,0,0,0,0,0,0,81.5,9.448747,1.609438,3.778552,1 +11,6,0,0,2,631025,0,12691.24,9.188911,1,10,1,20.02267,5.251228,0,0,0,25.2739,0,0,0,2,0,5,91.7,10.57626,.1442925,81.5,0,193.96,1,1,1.609438,5.267652,0,0,0,0,0,0,81.5,9.448747,1.609438,3.229772,1 +11,6,0,0,3,631025,0,12691.24,10.18891,1,10,1,0,0,0,0,0,0,0,0,0,0,0,5,91.7,10.57626,.1442925,81.5,0,193.96,1,1,1.609438,5.267652,0,0,0,0,0,0,81.5,9.448747,1.609438,,0 +16,6,95,0,1,631035,1,0,9.971252,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,75,10.57626,0,77.8,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,1,0,0,77.8,0,1.098612,,0 +16,6,95,0,2,631035,1,0,10.97125,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,75,10.57626,0,77.8,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,1,0,0,77.8,0,1.098612,,0 +16,6,95,0,3,631035,1,0,11.97125,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,75,10.57626,0,77.8,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,1,0,0,77.8,0,1.098612,,0 +16,6,95,0,1,631036,1,0,7.118412,1,12,1,3.365587,0,0,0,0,3.365587,0,0,0,1,0,3,75,10.57626,0,51.9,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,1,0,0,51.9,0,1.098612,1.213602,1 +16,6,95,0,2,631036,1,0,8.118412,1,12,1,4.155648,4.382319,0,0,0,8.537968,0,0,0,1,0,3,75,10.57626,0,51.9,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,1,0,0,51.9,0,1.098612,2.144523,1 +16,6,95,0,3,631036,1,0,9.118412,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,75,10.57626,0,51.9,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,1,0,0,51.9,0,1.098612,,0 +16,6,95,0,1,631037,1,0,31.29637,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,55.9,17.2,1,67,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,67,0,1.098612,,0 +16,6,95,0,2,631037,1,0,32.29637,1,12,1,17.75595,14.27276,0,0,0,32.02871,0,0,0,2,0,3,55.9,17.2,1,67,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,67,0,1.098612,3.466633,1 +16,6,95,0,3,631037,1,0,33.29637,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,55.9,17.2,1,67,1000,1000,0,0,1.098612,6.907755,0,4.564348,6.959049,1,0,0,67,0,1.098612,,0 +15,6,95,0,1,631074,0,6395.801,9.952087,0,5,1,90.45015,3.996634,0,0,0,94.44678,0,0,0,1,0,5,93.3,10.57626,.1442925,81.5,1000,1000,1,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,81.5,8.763554,1.609438,4.548037,1 +15,6,95,0,1,631075,0,6395.801,16.93634,1,5,1,0,0,0,0,0,0,0,0,0,0,0,5,84.6,3.4,0,88.1,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,88.1,8.763554,1.609438,,0 +15,6,95,0,1,631076,0,6395.801,7.581109,1,5,1,0,0,0,0,0,0,0,0,0,0,0,5,90,10.57626,.1442925,74.1,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,74.1,8.763554,1.609438,,0 +15,6,95,0,1,631077,0,6395.801,34.39562,1,5,1,0,0,0,0,0,0,0,0,0,0,0,5,73.4,13.8,0,70.5,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,1,0,0,70.5,8.763554,1.609438,,0 +15,6,95,0,1,631078,0,6395.801,36.9911,0,7,1,27.34539,0,0,0,0,27.34539,0,0,0,2,0,5,58.5,24.1,0,55.7,1000,1000,0,0,1.609438,6.907755,0,4.564348,6.959049,0,0,0,55.7,8.763554,1.609438,3.308548,1 +11,6,0,1,1,631086,0,1228.879,39.78097,0,16,1,71.09606,6.876852,13.54211,0,0,91.51502,0,0,0,2,1,5,65.4,10.3,0,73.9,0,826.8,0,0,1.609438,6.717563,0,0,0,0,0,0,73.9,7.114671,1.609438,4.516503,1 +11,6,0,1,2,631086,0,1228.879,40.78097,0,16,1,20.50114,8.731967,0,0,0,29.2331,0,0,0,2,0,5,65.4,10.3,0,73.9,0,826.8,0,0,1.609438,6.717563,0,0,0,0,0,0,73.9,7.114671,1.609438,3.375302,1 +11,6,0,1,3,631086,0,1228.879,41.78097,0,16,1,168.1661,6.920415,28.41869,0,0,203.5052,0,0,0,5,1,5,65.4,10.3,0,73.9,0,826.8,0,0,1.609438,6.717563,0,0,0,0,0,0,73.9,7.114671,1.609438,5.315691,1 +11,6,0,1,1,631087,0,1228.879,13.45927,0,13,1,20.73635,7.723233,0,0,0,28.45959,0,0,0,2,0,5,50,10.57626,0,96.3,0,826.8,1,0,1.609438,6.717563,0,0,0,0,0,0,96.3,7.114671,1.609438,3.348485,1 +11,6,0,1,2,631087,0,1228.879,14.45927,0,13,1,19.36219,0,0,0,0,19.36219,0,0,0,2,0,5,50,10.57626,0,96.3,0,826.8,1,0,1.609438,6.717563,0,0,0,0,0,0,96.3,7.114671,1.609438,2.963322,1 +11,6,0,1,3,631087,0,1228.879,15.45927,0,13,1,50.17301,4.757785,0,0,0,54.9308,0,0,0,3,1,5,50,10.57626,0,96.3,0,826.8,1,0,1.609438,6.717563,0,0,0,0,0,0,96.3,7.114671,1.609438,4.006074,1 +11,6,0,1,1,631088,0,1228.879,34.71595,1,13,1,124.8413,85.06136,0,0,0,209.9027,0,0,0,17,0,5,53.7,6.9,0,69.3,0,826.8,0,0,1.609438,6.717563,0,0,0,0,0,0,69.3,7.114671,1.609438,5.346644,1 +11,6,0,1,2,631088,0,1228.879,35.71595,1,13,1,266.1352,55.31131,0,0,0,321.4465,0,0,0,19,0,5,53.7,6.9,0,69.3,0,826.8,0,0,1.609438,6.717563,0,0,0,0,0,0,69.3,7.114671,1.609438,5.772831,1 +11,6,0,1,3,631088,0,1228.879,36.71595,1,13,1,245.6747,41.34948,0,0,0,287.0242,0,0,0,20,0,5,53.7,6.9,0,69.3,0,826.8,0,0,1.609438,6.717563,0,0,0,0,0,0,69.3,7.114671,1.609438,5.659566,1 +11,6,0,1,1,631089,0,1228.879,6.880219,1,13,1,10.15658,6.03047,0,0,0,16.18705,0,0,0,2,0,5,91.7,10.57626,0,96.3,0,826.8,1,1,1.609438,6.717563,0,0,0,0,0,0,96.3,7.114671,1.609438,2.784212,1 +11,6,0,1,2,631089,0,1228.879,7.880219,1,13,1,20.88079,8.731967,0,0,0,29.61276,0,0,0,3,0,5,91.7,10.57626,0,96.3,0,826.8,1,1,1.609438,6.717563,0,0,0,0,0,0,96.3,7.114671,1.609438,3.388205,1 +11,6,0,1,3,631089,0,1228.879,8.880219,1,13,1,86.50519,0,0,0,0,86.50519,0,0,0,7,0,5,91.7,10.57626,0,96.3,0,826.8,1,1,1.609438,6.717563,0,0,0,0,0,0,96.3,7.114671,1.609438,4.460205,1 +11,6,0,1,1,631090,0,1228.879,12.37509,0,13,1,46.1278,5.07829,0,0,0,51.20609,0,0,0,4,0,5,85,10.57626,0,96.3,0,826.8,1,0,1.609438,6.717563,0,0,0,0,0,0,96.3,7.114671,1.609438,3.935858,1 +11,6,0,1,2,631090,0,1228.879,13.37509,0,13,1,50.49355,10.82005,0,0,0,61.31359,0,0,0,6,0,5,85,10.57626,0,96.3,0,826.8,1,0,1.609438,6.717563,0,0,0,0,0,0,96.3,7.114671,1.609438,4.116002,1 +11,6,0,1,3,631090,0,1228.879,14.37509,0,13,1,116.609,1.989619,0,0,0,118.5986,0,0,0,3,0,5,85,10.57626,0,96.3,0,826.8,1,0,1.609438,6.717563,0,0,0,0,0,0,96.3,7.114671,1.609438,4.775745,1 +13,6,0,1,1,631139,0,2251.92,57.31691,1,6,1,0,0,0,0,0,0,0,0,0,0,0,1,87.2,24.1,0,78.4,150,260.52,0,0,0,5.56268,1,4.564348,5.061929,0,0,1,78.4,7.719983,0,,0 +13,6,0,1,2,631139,0,2251.92,58.31691,1,6,1,15.11145,11.02758,0,0,0,26.13902,0,0,0,2,0,1,87.2,24.1,0,78.4,150,260.52,0,0,0,5.56268,1,4.564348,5.061929,0,0,1,78.4,7.719983,0,3.263429,1 +13,6,0,1,3,631139,0,2251.92,59.31691,1,6,1,8.576329,15.35163,0,0,0,23.92796,0,0,0,1,0,1,87.2,24.1,0,78.4,150,260.52,0,0,0,5.56268,1,4.564348,5.061929,0,0,1,78.4,7.719983,0,3.175048,1 +15,6,95,1,1,631169,1,6735.316,15.5373,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,78.7,6.9,0,51.1,391.3,391.3,1,1,.6931472,5.969474,0,4.564348,6.020768,0,1,0,51.1,8.815269,.6931472,,0 +15,6,95,1,2,631169,1,6735.316,16.5373,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,78.7,6.9,0,51.1,391.3,391.3,1,1,.6931472,5.969474,0,4.564348,6.020768,0,1,0,51.1,8.815269,.6931472,,0 +15,6,95,1,1,631170,1,6735.316,57.06503,1,8,1,20.31316,14.2573,0,0,0,34.57046,0,0,0,2,0,2,89.4,20.7,1,47.7,391.3,391.3,0,0,.6931472,5.969474,0,4.564348,6.020768,0,1,0,47.7,8.815269,.6931472,3.543,1 +15,6,95,1,2,631170,1,6735.316,58.06503,1,8,1,47.83599,4.290053,0,0,0,52.12605,0,0,0,0,0,2,89.4,20.7,1,47.7,391.3,391.3,0,0,.6931472,5.969474,0,4.564348,6.020768,0,1,0,47.7,8.815269,.6931472,3.953665,1 +15,6,95,1,3,631170,1,6735.316,59.06503,1,8,1,0,7.148789,0,0,3523.495,3530.644,2,0,0,0,0,1,89.4,20.7,1,47.7,391.3,391.3,0,0,0,5.969474,0,4.564348,6.020768,0,1,0,47.7,8.815269,0,8.169235,1 +14,6,95,0,1,631171,0,4238.095,55.9206,1,12,1,0,7.617435,0,0,0,7.617435,0,0,0,0,0,1,64.9,20.7,0,78.4,526.25,526.25,0,0,0,6.265776,0,4.564348,6.31707,1,0,0,78.4,8.352105,0,2.03044,1 +14,6,95,0,2,631171,0,4238.095,56.9206,1,12,1,60.74411,33.98254,0,0,0,94.72665,0,0,0,5,0,1,64.9,20.7,0,78.4,526.25,526.25,0,0,0,6.265776,0,4.564348,6.31707,1,0,0,78.4,8.352105,0,4.550995,1 +14,6,95,0,3,631171,0,4238.095,57.9206,1,12,1,0,20.59862,0,0,0,20.59862,0,0,0,0,0,1,64.9,20.7,0,78.4,526.25,526.25,0,0,0,6.265776,0,4.564348,6.31707,1,0,0,78.4,8.352105,0,3.025224,1 +17,6,25,1,1,631176,0,5403.073,.8268309,1,14,1,44.38903,12.84289,20.58354,0,0,77.81546,0,0,0,6,0,4,77.40034,10.57626,0,85.2,480.5,480.5,1,1,1.386294,6.174827,0,3.258096,7.561121,0,0,0,85.2,8.594909,1.386294,4.35434,1 +17,6,25,1,2,631176,0,5403.073,1.826831,1,14,1,24.89627,12.17612,25.89212,0,0,62.9645,0,0,0,4,0,4,77.40034,10.57626,0,85.2,480.5,480.5,1,1,1.386294,6.174827,0,3.258096,7.561121,0,0,0,85.2,8.594909,1.386294,4.142571,1 +17,6,25,1,3,631176,0,5403.073,2.826831,1,14,1,48.24376,17.14346,30.80829,0,0,96.19551,0,0,0,8,0,4,77.40034,10.57626,0,85.2,480.5,480.5,1,1,1.386294,6.174827,0,3.258096,7.561121,0,0,0,85.2,8.594909,1.386294,4.566383,1 +17,6,25,1,4,631176,0,5403.073,3.826831,1,14,1,34.16856,22.89294,26.8489,0,0,83.9104,0,0,0,6,0,4,77.40034,10.57626,0,85.2,480.5,480.5,1,1,1.386294,6.174827,0,3.258096,7.561121,0,0,0,85.2,8.594909,1.386294,4.429749,1 +17,6,25,1,5,631176,0,5403.073,4.826831,1,14,1,58.82353,26.65052,13.67474,0,0,99.14879,0,0,0,11,0,4,77.40034,10.57626,0,85.2,480.5,480.5,1,1,1.386294,6.174827,0,3.258096,7.561121,0,0,0,85.2,8.594909,1.386294,4.596622,1 +17,6,25,1,1,631177,0,5403.073,5.155373,1,14,1,46.88279,9.710723,0,0,276.3092,332.9027,1,0,0,6,0,4,70,10.57626,0,63,480.5,480.5,1,1,1.386294,6.174827,0,3.258096,7.561121,1,0,0,63,8.594909,1.386294,5.80785,1 +17,6,25,1,2,631177,0,5403.073,6.155373,1,14,1,68.23421,11.81651,0,0,0,80.05071,0,0,0,9,0,4,70,10.57626,0,63,480.5,480.5,1,1,1.386294,6.174827,0,3.258096,7.561121,1,0,0,63,8.594909,1.386294,4.38266,1 +17,6,25,1,3,631177,0,5403.073,7.155373,1,14,1,77.02074,28.05332,0,0,0,105.0741,0,0,0,9,1,4,70,10.57626,0,63,480.5,480.5,1,1,1.386294,6.174827,0,3.258096,7.561121,1,0,0,63,8.594909,1.386294,4.654665,1 +17,6,25,1,4,631177,0,5403.073,8.155373,1,14,1,23.918,10.97191,0,0,0,34.8899,0,0,0,3,0,4,70,10.57626,0,63,480.5,480.5,1,1,1.386294,6.174827,0,3.258096,7.561121,1,0,0,63,8.594909,1.386294,3.552197,1 +17,6,25,1,5,631177,0,5403.073,9.155373,1,14,1,15.57093,11.79931,0,0,0,27.37024,0,0,0,3,0,4,70,10.57626,0,63,480.5,480.5,1,1,1.386294,6.174827,0,3.258096,7.561121,1,0,0,63,8.594909,1.386294,3.309456,1 +17,6,25,1,1,631178,0,5403.073,32.80767,0,14,1,12.46883,2.76808,0,0,0,15.23691,0,0,0,1,0,4,85.6,17.2,0,67,480.5,480.5,0,0,1.386294,6.174827,0,3.258096,7.561121,1,0,0,67,8.594909,1.386294,2.723721,1 +17,6,25,1,2,631178,0,5403.073,33.80767,0,14,1,167.3582,3.692946,0,0,0,171.0512,0,0,0,0,28,4,85.6,17.2,0,67,480.5,480.5,0,0,1.386294,6.174827,0,3.258096,7.561121,1,0,0,67,8.594909,1.386294,5.141963,1 +17,6,25,1,3,631178,0,5403.073,34.80767,0,14,1,56.70758,26.95303,0,236.9869,0,83.6606,0,0,15,1,8,4,85.6,17.2,0,67,480.5,480.5,0,0,1.386294,6.174827,0,3.258096,7.561121,1,0,0,67,8.594909,1.386294,4.426768,1 +17,6,25,1,4,631178,0,5403.073,35.80767,0,14,1,304.1002,71.99316,0,287.5854,783.9788,1160.072,2,0,14,3,18,4,85.6,17.2,0,67,480.5,480.5,0,0,1.386294,6.174827,0,3.258096,7.561121,1,0,0,67,8.594909,1.386294,7.056238,1 +17,6,25,1,5,631178,0,5403.073,36.80767,0,14,1,31.14187,88.25259,33.21799,107.0934,0,152.6125,0,0,7,0,4,4,85.6,17.2,0,67,480.5,480.5,0,0,1.386294,6.174827,0,3.258096,7.561121,1,0,0,67,8.594909,1.386294,5.027902,1 +17,6,25,1,1,631179,0,5403.073,31.65503,1,14,1,26.93267,14.48878,0,0,0,41.42145,0,0,0,3,0,4,65.4,24.1,0,75,480.5,480.5,0,0,1.386294,6.174827,0,3.258096,7.561121,1,0,0,75,8.594909,1.386294,3.723799,1 +17,6,25,1,2,631179,0,5403.073,32.65503,1,14,1,35.96127,0,0,0,0,35.96127,0,0,0,2,0,4,65.4,24.1,0,75,480.5,480.5,0,0,1.386294,6.174827,0,3.258096,7.561121,1,0,0,75,8.594909,1.386294,3.582443,1 +17,6,25,1,3,631179,0,5403.073,33.65503,1,14,1,62.63225,9.238256,0,0,0,71.87051,0,0,0,3,1,4,65.4,24.1,0,75,480.5,480.5,0,0,1.386294,6.174827,0,3.258096,7.561121,1,0,0,75,8.594909,1.386294,4.274866,1 +17,6,25,1,4,631179,0,5403.073,34.65503,1,14,1,32.27031,24.90509,0,377.7525,0,57.1754,0,0,18,4,0,4,65.4,24.1,0,75,480.5,480.5,0,0,1.386294,6.174827,0,3.258096,7.561121,1,0,0,75,8.594909,1.386294,4.046124,1 +17,6,25,1,5,631179,0,5403.073,35.65503,1,14,1,24.22145,15.89965,0,129.7578,0,40.12111,0,0,7,1,1,4,65.4,24.1,0,75,480.5,480.5,0,0,1.386294,6.174827,0,3.258096,7.561121,1,0,0,75,8.594909,1.386294,3.691903,1 +18,6,25,1,1,631184,1,5726.217,16.44353,1,14,1,39.80344,0,0,0,0,39.80344,0,0,0,0,3,4,47.9,24.1,1,40.9,665.6,665.6,1,1,1.386294,6.500689,0,3.258096,7.886983,0,0,0,40.9,8.652985,1.386294,3.683953,1 +18,6,25,1,2,631184,1,5726.217,17.44353,1,14,1,37.83045,0,0,0,0,37.83045,0,0,0,2,0,4,47.9,24.1,1,40.9,665.6,665.6,1,1,1.386294,6.500689,0,3.258096,7.886983,0,0,0,40.9,8.652985,1.386294,3.633114,1 +18,6,25,1,3,631184,1,5726.217,18.44353,1,14,1,11.25469,7.190496,0,0,789.4956,807.9408,1,0,0,2,0,4,47.9,24.1,1,40.9,665.6,665.6,0,0,1.386294,6.500689,0,3.258096,7.886983,0,0,0,40.9,8.652985,1.386294,6.694489,1 +18,6,25,1,4,631184,1,5726.217,19.44353,1,14,1,24.006,4.088522,0,0,0,28.09452,0,0,0,1,0,4,47.9,24.1,1,40.9,665.6,665.6,0,0,1.386294,6.500689,0,3.258096,7.886983,0,0,0,40.9,8.652985,1.386294,3.335575,1 +18,6,25,1,1,631185,1,5726.217,14.4668,0,14,1,28.50123,0,0,0,258.4767,286.9779,1,0,0,2,0,4,80.9,3.4,0,73.9,665.6,665.6,1,0,1.386294,6.500689,0,3.258096,7.886983,0,0,0,73.9,8.652985,1.386294,5.659405,1 +18,6,25,1,2,631185,1,5726.217,15.4668,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,80.9,3.4,0,73.9,665.6,665.6,1,0,1.386294,6.500689,0,3.258096,7.886983,0,0,0,73.9,8.652985,1.386294,,0 +18,6,25,1,3,631185,1,5726.217,16.4668,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,80.9,3.4,0,73.9,665.6,665.6,1,0,1.386294,6.500689,0,3.258096,7.886983,0,0,0,73.9,8.652985,1.386294,,0 +18,6,25,1,4,631185,1,5726.217,17.4668,0,14,1,0,0,0,0,0,0,0,0,0,0,0,4,80.9,3.4,0,73.9,665.6,665.6,1,0,1.386294,6.500689,0,3.258096,7.886983,0,0,0,73.9,8.652985,1.386294,,0 +18,6,25,1,5,631185,1,5726.217,18.4668,0,14,1,6.427605,0,0,0,0,6.427605,0,0,0,0,0,3,80.9,3.4,0,73.9,665.6,665.6,0,0,1.098612,6.500689,0,3.258096,7.886983,0,0,0,73.9,8.652985,1.098612,1.860602,1 +18,6,25,1,1,631186,1,5726.217,42.55442,1,14,1,11.79361,15.72482,0,0,662.8993,690.4177,1,0,0,2,0,4,63.3,13.8,0,76.1,665.6,665.6,0,0,1.386294,6.500689,0,3.258096,7.886983,0,0,0,76.1,8.652985,1.386294,6.537297,1 +18,6,25,1,2,631186,1,5726.217,43.55442,1,14,1,0,45.23701,0,0,0,45.23701,0,0,0,0,0,4,63.3,13.8,0,76.1,665.6,665.6,0,0,1.386294,6.500689,0,3.258096,7.886983,0,0,0,76.1,8.652985,1.386294,3.811916,1 +18,6,25,1,3,631186,1,5726.217,44.55442,1,14,1,20.84202,10.94206,0,0,0,31.78408,0,0,0,1,1,4,63.3,13.8,0,76.1,665.6,665.6,0,0,1.386294,6.500689,0,3.258096,7.886983,0,0,0,76.1,8.652985,1.386294,3.458966,1 +18,6,25,1,4,631186,1,5726.217,45.55442,1,14,1,15.00375,9.958739,3.750938,0,506.0015,534.7149,1,0,0,1,0,4,63.3,13.8,0,76.1,665.6,665.6,0,0,1.386294,6.500689,0,3.258096,7.886983,0,0,0,76.1,8.652985,1.386294,6.281734,1 +18,6,25,1,5,631186,1,5726.217,46.55442,1,14,1,107.5778,11.11637,26.04871,0,0,144.7429,0,0,0,2,0,3,63.3,13.8,0,76.1,665.6,665.6,0,0,1.098612,6.500689,0,3.258096,7.886983,0,0,0,76.1,8.652985,1.098612,4.974959,1 +18,6,25,1,1,631187,1,5726.217,18.37919,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,80.9,6.9,0,86.4,665.6,665.6,0,0,1.386294,6.500689,0,3.258096,7.886983,0,0,0,86.4,8.652985,1.386294,,0 +18,6,25,1,2,631187,1,5726.217,19.37919,0,11,1,0,3.076572,0,0,269.7311,272.8076,1,0,0,0,0,4,80.9,6.9,0,86.4,665.6,665.6,0,0,1.386294,6.500689,0,3.258096,7.886983,0,0,0,86.4,8.652985,1.386294,5.608767,1 +18,6,25,1,3,631187,1,5726.217,20.37919,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,80.9,6.9,0,86.4,665.6,665.6,0,0,1.386294,6.500689,0,3.258096,7.886983,0,0,0,86.4,8.652985,1.386294,,0 +18,6,25,1,4,631187,1,5726.217,21.37919,0,11,1,0,0,0,0,0,0,0,0,0,0,0,4,80.9,6.9,0,86.4,665.6,665.6,0,0,1.386294,6.500689,0,3.258096,7.886983,0,0,0,86.4,8.652985,1.386294,,0 +18,6,25,1,5,631187,1,5726.217,22.37919,0,11,1,31.46144,0,0,0,238.8363,270.2977,1,1,0,0,0,3,80.9,6.9,0,86.4,665.6,665.6,0,0,1.098612,6.500689,0,3.258096,7.886983,0,0,0,86.4,8.652985,1.098612,5.599524,1 +11,6,0,0,1,631216,0,8950.146,6.431211,0,12,1,45.09415,20.94153,28.76115,0,0,94.79683,0,0,0,5,0,4,78.3,10.57626,0,100,0,475.2,1,0,1.386294,6.163736,0,0,0,0,0,0,100,9.099537,1.386294,4.551736,1 +11,6,0,0,2,631216,0,8950.146,7.431211,0,12,1,63.79073,32.81322,13.60257,0,0,110.2065,0,0,0,5,0,4,78.3,10.57626,0,100,0,475.2,1,0,1.386294,6.163736,0,0,0,0,0,0,100,9.099537,1.386294,4.702356,1 +11,6,0,0,3,631216,0,8950.146,8.431211,0,12,1,21.03492,12.93647,27.34539,0,0,61.31679,0,0,0,3,0,4,78.3,10.57626,0,100,0,475.2,1,0,1.386294,6.163736,0,0,0,0,0,0,100,9.099537,1.386294,4.116054,1 +11,6,0,0,4,631216,0,8950.146,9.431211,0,12,1,52.13449,13.25274,22.55761,0,0,87.94484,0,0,0,8,0,4,78.3,10.57626,0,100,0,475.2,1,0,1.386294,6.163736,0,0,0,0,0,0,100,9.099537,1.386294,4.47671,1 +11,6,0,0,5,631216,0,8950.146,10.43121,0,12,1,109.777,11.32076,56.58319,0,0,177.681,0,0,0,8,0,4,78.3,10.57626,0,100,0,475.2,1,0,1.386294,6.163736,0,0,0,0,0,0,100,9.099537,1.386294,5.179989,1 +11,6,0,0,1,631217,0,8950.146,10.70226,1,12,1,25.27255,.9018831,30.09911,0,0,56.27354,0,0,0,2,0,4,63.3,10.57626,0,92.6,0,475.2,1,1,1.386294,6.163736,0,0,0,0,0,0,92.6,9.099537,1.386294,4.030224,1 +11,6,0,0,2,631217,0,8950.146,11.70226,1,12,1,30.74805,3.900872,14.79578,0,0,49.4447,0,0,0,2,0,4,63.3,10.57626,0,92.6,0,475.2,1,1,1.386294,6.163736,0,0,0,0,0,0,92.6,9.099537,1.386294,3.900855,1 +11,6,0,0,3,631217,0,8950.146,12.70226,1,12,1,25.2419,3.575936,34.78334,0,0,63.60118,0,0,0,2,0,4,63.3,10.57626,0,92.6,0,475.2,1,1,1.386294,6.163736,0,0,0,0,0,0,92.6,9.099537,1.386294,4.152632,1 +11,6,0,0,4,631217,0,8950.146,13.70226,1,12,1,17.75595,10.86135,16.81904,0,0,45.43634,0,0,0,2,0,4,63.3,10.57626,0,92.6,0,475.2,1,1,1.386294,6.163736,0,0,0,0,0,0,92.6,9.099537,1.386294,3.816312,1 +11,6,0,0,5,631217,0,8950.146,14.70226,1,12,1,23.67067,.6483705,0,0,0,24.31904,0,0,0,3,0,4,63.3,10.57626,0,92.6,0,475.2,1,1,1.386294,6.163736,0,0,0,0,0,0,92.6,9.099537,1.386294,3.19126,1 +11,6,0,0,1,631218,0,8950.146,31.23614,0,14,1,11.89296,4.088206,0,0,0,15.98117,0,0,0,2,0,4,77.1,0,0,85.2,0,475.2,0,0,1.386294,6.163736,0,0,0,0,0,0,85.2,9.099537,1.386294,2.771411,1 +11,6,0,0,2,631218,0,8950.146,32.23614,0,14,1,22.94631,0,0,0,0,22.94631,0,0,0,2,0,4,77.1,0,0,85.2,0,475.2,0,0,1.386294,6.163736,0,0,0,0,0,0,85.2,9.099537,1.386294,3.133157,1 +11,6,0,0,3,631218,0,8950.146,33.23614,0,14,1,25.2419,5.363904,0,0,408.4981,439.1039,1,0,0,2,0,4,77.1,0,0,85.2,0,475.2,0,0,1.386294,6.163736,0,0,0,0,0,0,85.2,9.099537,1.386294,6.084736,1 +11,6,0,0,4,631218,0,8950.146,34.23614,0,14,1,13.22252,0,0,0,0,13.22252,0,0,0,1,0,4,77.1,0,0,85.2,0,475.2,0,0,1.386294,6.163736,0,0,0,0,0,0,85.2,9.099537,1.386294,2.581921,1 +11,6,0,0,5,631218,0,8950.146,35.23614,0,14,1,66.55231,8.576329,0,0,0,75.12865,0,0,0,3,0,4,77.1,0,0,85.2,0,475.2,0,0,1.386294,6.163736,0,0,0,0,0,0,85.2,9.099537,1.386294,4.319202,1 +11,6,0,0,1,631219,0,8950.146,30.43121,1,12,1,63.92468,11.33796,0,0,1334.737,1410,2,0,0,8,0,4,72.3,10.3,1,77.3,0,475.2,0,0,1.386294,6.163736,0,0,0,0,0,0,77.3,9.099537,1.386294,7.251345,1 +11,6,0,0,2,631219,0,8950.146,31.43121,1,12,1,93.62093,10.44057,0,0,0,104.0615,0,0,0,5,3,4,72.3,10.3,1,77.3,0,475.2,0,0,1.386294,6.163736,0,0,0,0,0,0,77.3,9.099537,1.386294,4.644982,1 +11,6,0,0,3,631219,0,8950.146,32.43121,1,12,1,187.6315,5.574253,32.48633,0,0,225.692,0,0,0,4,41,4,72.3,10.3,1,77.3,0,475.2,0,0,1.386294,6.163736,0,0,0,0,0,0,77.3,9.099537,1.386294,5.419171,1 +11,6,0,0,4,631219,0,8950.146,33.43121,1,12,1,147.3366,0,0,0,0,147.3366,0,0,0,2,24,4,72.3,10.3,1,77.3,0,475.2,0,0,1.386294,6.163736,0,0,0,0,0,0,77.3,9.099537,1.386294,4.99272,1 +11,6,0,0,5,631219,0,8950.146,34.43121,1,12,1,267.2384,0,27.86621,0,0,295.1046,0,0,0,2,16,4,72.3,10.3,1,77.3,0,475.2,0,0,1.386294,6.163736,0,0,0,0,0,0,77.3,9.099537,1.386294,5.68733,1 +11,6,0,1,1,631230,1,2852.535,17.67556,1,10,1,24.8212,0,0,0,0,24.8212,0,0,0,2,0,5,84,6.9,0,67,0,805.04,1,1,1.609438,6.690892,0,0,0,0,1,0,67,7.956314,1.609438,3.211698,1 +11,6,0,1,2,631230,1,2852.535,18.67556,1,10,1,0,1.605591,0,0,0,1.605591,0,0,0,0,0,5,84,6.9,0,67,0,805.04,0,0,1.609438,6.690892,0,0,0,0,1,0,67,7.956314,1.609438,.473492,1 +11,6,0,1,3,631230,1,2852.535,19.67556,1,10,1,0,1.584906,0,0,0,1.584906,0,0,0,0,0,5,84,6.9,0,67,0,805.04,0,0,1.609438,6.690892,0,0,0,0,1,0,67,7.956314,1.609438,.4605249,1 +11,6,0,1,1,631231,1,2852.535,23.07187,1,12,1,19.35213,0,0,0,0,19.35213,0,0,0,2,0,5,69.1,3.4,0,72.7,0,805.04,0,0,1.609438,6.690892,0,0,0,0,1,0,72.7,7.956314,1.609438,2.962802,1 +11,6,0,1,2,631231,1,2852.535,24.07187,1,12,1,22.66717,0,0,0,0,22.66717,0,0,0,0,0,5,69.1,3.4,0,72.7,0,805.04,0,0,1.609438,6.690892,0,0,0,0,1,0,72.7,7.956314,1.609438,3.120918,1 +11,6,0,1,3,631231,1,2852.535,25.07187,1,12,1,15.43739,9.307033,0,0,0,24.74442,0,0,0,1,0,5,69.1,3.4,0,72.7,0,805.04,0,0,1.609438,6.690892,0,0,0,0,1,0,72.7,7.956314,1.609438,3.2086,1 +11,6,0,1,1,631232,1,2852.535,50.92676,1,10,1,31.13168,4.291123,35.75936,0,0,71.18216,0,0,0,1,1,5,92.6,3.4,0,80.7,0,805.04,0,0,1.609438,6.690892,0,0,0,0,1,0,80.7,7.956314,1.609438,4.265242,1 +11,6,0,1,2,631232,1,2852.535,51.92676,1,10,1,13.6003,11.68493,0,0,0,25.28523,0,0,0,2,0,5,92.6,3.4,0,80.7,0,805.04,0,0,1.609438,6.690892,0,0,0,0,1,0,80.7,7.956314,1.609438,3.23022,1 +11,6,0,1,3,631232,1,2852.535,52.92676,1,10,1,39.79417,3.090909,35.20755,0,0,78.09262,0,0,0,2,1,5,92.6,3.4,0,80.7,0,805.04,0,0,1.609438,6.690892,0,0,0,0,1,0,80.7,7.956314,1.609438,4.357895,1 +11,6,0,1,1,631233,1,2852.535,10.34086,0,10,1,55.95288,6.752209,0,0,182.1624,244.8675,1,0,0,3,0,5,80,10.57626,0,85.2,0,805.04,1,0,1.609438,6.690892,0,0,0,0,1,0,85.2,7.956314,1.609438,5.500717,1 +11,6,0,1,2,631233,1,2852.535,11.34086,0,10,1,5.666792,5.723461,0,0,0,11.39025,0,0,0,1,0,5,80,10.57626,0,85.2,0,805.04,1,0,1.609438,6.690892,0,0,0,0,1,0,85.2,7.956314,1.609438,2.432758,1 +11,6,0,1,3,631233,1,2852.535,12.34086,0,10,1,7.54717,0,0,0,0,7.54717,0,0,0,1,0,5,80,10.57626,0,85.2,0,805.04,1,0,1.609438,6.690892,0,0,0,0,1,0,85.2,7.956314,1.609438,2.021173,1 +11,6,0,1,1,631234,1,2852.535,13.31964,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,90,10.57626,0,81.5,0,805.04,1,0,1.609438,6.690892,0,0,0,0,1,0,81.5,7.956314,1.609438,,0 +11,6,0,1,2,631234,1,2852.535,14.31964,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,90,10.57626,0,81.5,0,805.04,1,0,1.609438,6.690892,0,0,0,0,1,0,81.5,7.956314,1.609438,,0 +11,6,0,1,3,631234,1,2852.535,15.31964,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,90,10.57626,0,81.5,0,805.04,1,0,1.609438,6.690892,0,0,0,0,1,0,81.5,7.956314,1.609438,,0 +13,6,0,1,1,631238,0,9514.956,13.46201,1,10,1,38.65213,49.77205,0,0,0,88.42418,0,0,0,1,0,4,76.7,10.57626,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.160726,1.386294,4.482145,1 +13,6,0,1,2,631238,0,9514.956,14.46201,1,10,1,51.85865,25.92933,0,0,0,77.78798,0,0,0,2,0,4,76.7,10.57626,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.160726,1.386294,4.353987,1 +13,6,0,1,3,631238,0,9514.956,15.46201,1,10,1,37.86285,20.92133,0,0,0,58.78418,0,0,0,1,0,4,76.7,10.57626,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.160726,1.386294,4.073873,1 +13,6,0,1,4,631238,0,9514.956,16.46201,1,10,1,54.40121,20.97469,0,0,0,75.3759,0,0,0,2,0,4,76.7,10.57626,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.160726,1.386294,4.322488,1 +13,6,0,1,5,631238,0,9514.956,17.46201,1,10,1,70.3259,27.91767,0,0,0,98.24357,0,0,0,3,0,4,76.7,10.57626,0,81.5,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,81.5,9.160726,1.386294,4.58745,1 +13,6,0,1,1,631239,0,9514.956,14.49144,1,10,1,64.91576,5.584737,0,0,0,70.5005,0,0,0,3,0,4,86.2,3.4,0,78.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,78.4,9.160726,1.386294,4.25562,1 +13,6,0,1,2,631239,0,9514.956,15.49144,1,10,1,16.06241,0,0,0,0,16.06241,0,0,0,1,0,4,86.2,3.4,0,78.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,78.4,9.160726,1.386294,2.776482,1 +13,6,0,1,3,631239,0,9514.956,16.49144,1,10,1,14.72444,0,0,0,0,14.72444,0,0,0,1,0,4,86.2,3.4,0,78.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,78.4,9.160726,1.386294,2.689509,1 +13,6,0,1,4,631239,0,9514.956,17.49144,1,10,1,32.11182,1.507367,24.93389,0,0,58.55308,0,0,0,3,0,4,86.2,3.4,0,78.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,78.4,9.160726,1.386294,4.069934,1 +13,6,0,1,5,631239,0,9514.956,18.49144,1,10,1,5.488851,4.795883,0,0,0,10.28473,0,0,0,1,0,4,86.2,3.4,0,78.4,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,78.4,9.160726,1.386294,2.330661,1 +13,6,0,1,1,631240,0,9514.956,34.78439,0,12,1,24.28147,0,0,0,334.4896,358.7711,1,0,0,2,0,4,86.2,3.4,0,70.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.5,9.160726,1.386294,5.882684,1 +13,6,0,1,2,631240,0,9514.956,35.78439,0,12,1,11.47315,0,33.04268,0,0,44.51583,0,0,0,0,1,4,86.2,3.4,0,70.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.5,9.160726,1.386294,3.795845,1 +13,6,0,1,3,631240,0,9514.956,36.78439,0,12,1,26.504,5.502735,0,0,349.1796,381.1864,1,0,0,2,0,4,86.2,3.4,0,70.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.5,9.160726,1.386294,5.943288,1 +13,6,0,1,4,631240,0,9514.956,37.78439,0,12,1,5.666792,9.085757,0,0,0,14.75255,0,0,0,1,0,4,86.2,3.4,0,70.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.5,9.160726,1.386294,2.691416,1 +13,6,0,1,5,631240,0,9514.956,38.78439,0,12,1,28.13036,5.632933,24.91595,0,0,58.67924,0,0,0,2,0,4,86.2,3.4,0,70.5,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.5,9.160726,1.386294,4.072086,1 +13,6,0,1,1,631241,0,9514.956,34.77892,1,10,1,27.25471,6.575818,0,0,0,33.83052,0,0,0,2,0,4,89.4,17.2,0,92,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92,9.160726,1.386294,3.521363,1 +13,6,0,1,2,631241,0,9514.956,35.77892,1,10,1,0,1.298761,0,0,0,1.298761,0,0,0,0,0,4,89.4,17.2,0,92,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92,9.160726,1.386294,.2614107,1 +13,6,0,1,3,631241,0,9514.956,36.77892,1,10,1,31.97308,0,0,0,0,31.97308,0,0,0,1,0,4,89.4,17.2,0,92,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92,9.160726,1.386294,3.464894,1 +13,6,0,1,4,631241,0,9514.956,37.77892,1,10,1,26.44503,2.293162,0,0,0,28.73819,0,0,0,2,0,4,89.4,17.2,0,92,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92,9.160726,1.386294,3.358227,1 +13,6,0,1,5,631241,0,9514.956,38.77892,1,10,1,19.89708,5.893653,0,0,0,25.79074,0,0,0,2,0,4,89.4,17.2,0,92,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,92,9.160726,1.386294,3.250015,1 +10,6,50,0,1,631242,0,12531.49,14.0397,0,9,1,237.6946,1.661759,0,0,0,239.3563,0,0,0,0,21,5,90,10.57626,.1442925,85.2,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,85.2,9.43608,1.609438,5.477953,1 +10,6,50,0,2,631242,0,12531.49,15.0397,0,9,1,146.581,0,0,0,0,146.581,0,0,0,0,13,5,90,10.57626,.1442925,85.2,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,85.2,9.43608,1.609438,4.987578,1 +10,6,50,0,3,631242,0,12531.49,16.0397,0,9,1,46.31218,18.93653,0,0,444.94,510.1887,1,0,0,3,0,5,90,10.57626,.1442925,85.2,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,85.2,9.43608,1.609438,6.234781,1 +10,6,50,0,1,631243,0,12531.49,38.01232,1,9,1,18.93143,8.329827,0,0,0,27.26125,0,0,0,1,0,5,95.7,0,0,72.5,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,72.5,9.43608,1.609438,3.305466,1 +10,6,50,0,2,631243,0,12531.49,39.01232,1,9,1,41.55648,7.536834,0,0,0,49.09331,0,0,0,1,2,5,95.7,0,0,72.5,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,72.5,9.43608,1.609438,3.893723,1 +10,6,50,0,3,631243,0,12531.49,40.01232,1,9,1,67.78731,24.28816,30.87479,0,1111.835,1234.786,1,0,0,4,1,5,95.7,0,0,72.5,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,72.5,9.43608,1.609438,7.118653,1 +10,6,50,0,1,631244,0,12531.49,18.60643,1,9,1,135.8856,22.86496,29.44888,0,0,188.1994,0,0,0,8,3,5,89.4,13.8,0,90.9,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,90.9,9.43608,1.609438,5.237502,1 +10,6,50,0,2,631244,0,12531.49,19.60643,1,9,1,46.84549,0,0,0,0,46.84549,0,0,0,1,5,5,89.4,13.8,0,90.9,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,90.9,9.43608,1.609438,3.846855,1 +10,6,50,0,3,631244,0,12531.49,20.60643,1,9,1,27.1012,32.65866,0,0,0,59.75986,0,0,0,1,0,5,89.4,13.8,0,90.9,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,0,1,0,90.9,9.43608,1.609438,4.090334,1 +10,6,50,0,1,631245,0,12531.49,15.98905,1,9,1,51.3252,10.71098,0,0,0,62.03618,0,0,0,4,0,5,91.7,10.57626,.1442925,85.2,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,85.2,9.43608,1.609438,4.127718,1 +10,6,50,0,2,631245,0,12531.49,16.98905,1,9,1,7.555724,2.417831,0,0,0,9.973555,0,0,0,1,0,5,91.7,10.57626,.1442925,85.2,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,85.2,9.43608,1.609438,2.299937,1 +10,6,50,0,3,631245,0,12531.49,17.98905,1,9,1,37.04974,32.29846,0,0,687.8216,757.1698,2,0,0,1,0,5,91.7,10.57626,.1442925,85.2,1000,1000,1,1,1.609438,6.907755,0,3.931826,7.600903,0,0,0,85.2,9.43608,1.609438,6.629588,1 +10,6,50,0,1,631246,0,12531.49,42.63381,0,6,1,45.01472,0,0,0,0,45.01472,0,0,0,0,10,5,87.2,0,0,81.8,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,81.8,9.43608,1.609438,3.80699,1 +10,6,50,0,2,631246,0,12531.49,43.63381,0,6,1,11.33358,0,0,0,0,11.33358,0,0,0,0,2,5,87.2,0,0,81.8,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,81.8,9.43608,1.609438,2.42777,1 +10,6,50,0,3,631246,0,12531.49,44.63381,0,6,1,26.41509,0,34.30532,0,0,60.72041,0,0,0,0,1,5,87.2,0,0,81.8,1000,1000,0,0,1.609438,6.907755,0,3.931826,7.600903,1,0,0,81.8,9.43608,1.609438,4.10628,1 +13,6,0,1,1,631252,0,11887.98,20.8679,0,13,1,19.82161,37.53221,0,0,0,57.35382,0,0,0,4,0,3,86.7,6.9,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.383367,1.098612,4.04924,1 +13,6,0,1,2,631252,0,11887.98,21.8679,0,13,1,290.9592,55.12621,0,0,0,346.0854,0,0,0,8,0,3,86.7,6.9,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.383367,1.098612,5.846685,1 +13,6,0,1,3,631252,0,11887.98,22.8679,0,13,1,0,1.682793,0,0,0,1.682793,0,0,0,0,0,3,86.7,6.9,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.383367,1.098612,.5204551,1 +13,6,0,1,4,631252,0,11887.98,23.8679,0,13,1,0,0,0,0,0,0,0,0,0,0,0,3,86.7,6.9,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.383367,1.098612,,0 +13,6,0,1,5,631252,0,11887.98,24.8679,0,13,1,0,2.058319,0,0,0,2.058319,0,0,0,0,0,3,86.7,6.9,0,65.9,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,65.9,9.383367,1.098612,.7218897,1 +13,6,0,1,1,631253,0,11887.98,45.31691,1,12,1,44.59861,25.6442,41.22894,0,0,111.4718,0,0,0,5,0,3,72.9,24.1,1,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,67,9.383367,1.098612,4.713771,1 +13,6,0,1,2,631253,0,11887.98,46.31691,1,12,1,0,24.78201,0,0,0,24.78201,0,0,0,0,0,3,72.9,24.1,1,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,67,9.383367,1.098612,3.210118,1 +13,6,0,1,3,631253,0,11887.98,47.31691,1,12,1,44.17333,24.50568,0,0,0,68.67901,0,0,0,0,19,3,72.9,24.1,1,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,67,9.383367,1.098612,4.229444,1 +13,6,0,1,4,631253,0,11887.98,48.31691,1,12,1,0,6.800151,0,0,0,6.800151,0,0,0,0,0,3,72.9,24.1,1,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,67,9.383367,1.098612,1.916945,1 +13,6,0,1,5,631253,0,11887.98,49.31691,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,72.9,24.1,1,67,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,67,9.383367,1.098612,,0 +13,6,0,1,1,631254,0,11887.98,50.18754,0,12,1,14.8662,138.999,53.30525,0,0,207.1705,0,0,0,1,0,3,71.8,24.1,0,68.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.383367,1.098612,5.333542,1 +13,6,0,1,2,631254,0,11887.98,51.18754,0,12,1,0,132.056,4.671868,0,0,136.7279,0,0,0,0,0,3,71.8,24.1,0,68.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.383367,1.098612,4.917993,1 +13,6,0,1,3,631254,0,11887.98,52.18754,0,12,1,0,112.8523,4.202776,0,0,117.0551,0,0,0,0,0,3,71.8,24.1,0,68.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.383367,1.098612,4.762645,1 +13,6,0,1,4,631254,0,11887.98,53.18754,0,12,1,23.80053,134.9641,59.42577,0,0,218.1904,0,0,0,2,0,3,71.8,24.1,0,68.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.383367,1.098612,5.385368,1 +13,6,0,1,5,631254,0,11887.98,54.18754,0,12,1,0,148.4563,1.629503,0,0,150.0858,0,0,0,0,0,3,71.8,24.1,0,68.2,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,1,0,0,68.2,9.383367,1.098612,5.011207,1 +6,6,25,1,1,631256,0,2313.364,43.92608,0,14,1,17.77402,34.33347,0,0,0,52.10749,0,0,0,1,0,1,97.9,10.3,0,98.9,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,98.9,7.74689,0,3.953309,1 +6,6,25,1,2,631256,0,2313.364,44.92608,0,14,1,35.68717,36.97798,0,0,0,72.66515,0,0,0,3,0,1,97.9,10.3,0,98.9,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,98.9,7.74689,0,4.285862,1 +6,6,25,1,3,631256,0,2313.364,45.92608,0,14,1,43.94464,34.58477,0,0,662.2838,740.8132,1,0,0,4,0,1,97.9,10.3,0,98.9,750,750,0,0,0,6.620073,0,3.258096,8.006368,0,0,0,98.9,7.74689,0,6.607749,1 +13,6,0,1,1,631260,0,6735.316,54.75975,0,12,1,63.94615,2.734539,0,0,0,66.68069,0,0,0,4,7,2,83.5,10.3,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,75,8.815269,.6931472,4.199915,1 +13,6,0,1,2,631260,0,6735.316,55.75975,0,12,1,142.8032,12.00227,0,0,638.2886,793.0941,1,0,0,1,14,2,83.5,10.3,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,75,8.815269,.6931472,6.675942,1 +13,6,0,1,3,631260,0,6735.316,56.75975,0,12,1,0,0,0,0,0,0,1,0,0,3,1,2,83.5,10.3,0,75,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,75,8.815269,.6931472,,0 +13,6,0,1,1,631261,0,6735.316,52.78302,1,15,1,312.5789,223.5423,63.10476,0,413.5465,1012.772,2,0,0,17,19,2,62.8,31,1,54.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,54.5,8.815269,.6931472,6.920447,1 +13,6,0,1,2,631261,0,6735.316,53.78302,1,15,1,716.6604,291.8965,0,124.6694,0,1008.557,0,0,6,17,41,2,62.8,31,1,54.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,54.5,8.815269,.6931472,6.916276,1 +13,6,0,1,3,631261,0,6735.316,54.78302,1,15,1,375.6432,284.0206,102.916,82.33276,2545.455,3308.034,3,0,4,21,11,2,62.8,31,1,54.5,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,1,0,0,54.5,8.815269,.6931472,8.10411,1 +11,6,0,1,1,631274,0,12312.34,36.61876,0,9,1,244.6043,8.252222,0,0,0,252.8565,0,0,0,15,18,4,85.6,3.4,0,81.8,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,81.8,9.418439,1.386294,5.532822,1 +11,6,0,1,2,631274,0,12312.34,37.61876,0,9,1,108.5801,1.867882,0,0,0,110.448,0,0,0,2,1,4,85.6,3.4,0,81.8,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,81.8,9.418439,1.386294,4.704545,1 +11,6,0,1,3,631274,0,12312.34,38.61876,0,9,1,46.7128,0,0,0,0,46.7128,0,0,0,1,0,4,85.6,3.4,0,81.8,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,81.8,9.418439,1.386294,3.844018,1 +11,6,0,1,1,631275,0,12312.34,33.7358,1,10,1,41.47271,11.10876,0,0,0,52.58146,0,0,0,3,0,4,78.7,13.8,1,68.2,0,60,0,0,1.386294,4.094345,0,0,0,1,0,0,68.2,9.418439,1.386294,3.962364,1 +11,6,0,1,2,631275,0,12312.34,34.7358,1,10,1,96.05164,33.82688,0,0,0,129.8785,0,0,0,3,0,4,78.7,13.8,1,68.2,0,60,0,0,1.386294,4.094345,0,0,0,1,0,0,68.2,9.418439,1.386294,4.8666,1 +11,6,0,1,3,631275,0,12312.34,35.7358,1,10,1,105.8824,28.10381,32.79585,0,1123.644,1290.426,1,0,0,6,0,4,78.7,13.8,1,68.2,0,60,0,0,1.386294,4.094345,0,0,0,1,0,0,68.2,9.418439,1.386294,7.162727,1 +11,6,0,1,1,631276,0,12312.34,13.92471,0,10,1,51.62928,0,0,0,0,51.62928,0,0,0,6,0,4,95,10.57626,1,88.9,0,60,1,0,1.386294,4.094345,0,0,0,1,0,0,88.9,9.418439,1.386294,3.944089,1 +11,6,0,1,2,631276,0,12312.34,14.92471,0,10,1,21.26044,4.138193,0,0,0,25.39863,0,0,0,3,0,4,95,10.57626,1,88.9,0,60,1,0,1.386294,4.094345,0,0,0,1,0,0,88.9,9.418439,1.386294,3.234695,1 +11,6,0,1,3,631276,0,12312.34,15.92471,0,10,1,128.3737,5.626297,0,0,0,134,0,0,0,8,0,4,95,10.57626,1,88.9,0,60,1,0,1.386294,4.094345,0,0,0,1,0,0,88.9,9.418439,1.386294,4.89784,1 +11,6,0,1,1,631277,0,12312.34,16.97467,1,10,1,22.42912,13.11892,0,0,0,35.54803,0,0,0,2,0,4,92,3.4,0,90.9,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,90.9,9.418439,1.386294,3.570885,1 +11,6,0,1,2,631277,0,12312.34,17.97467,1,10,1,31.89066,34.51025,0,0,0,66.40091,0,0,0,3,0,4,92,3.4,0,90.9,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,90.9,9.418439,1.386294,4.195711,1 +11,6,0,1,3,631277,0,12312.34,18.97467,1,10,1,45.32872,34.7128,0,0,0,80.04152,0,0,0,4,0,4,92,3.4,0,90.9,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,90.9,9.418439,1.386294,4.382545,1 +11,6,0,0,1,631278,1,3690.22,60.14511,0,10,1,130.8879,0,32.93039,0,0,163.8183,0,0,0,4,0,6,92,3.4,0,80.7,0,0,0,0,1.791759,0,0,0,0,0,1,0,80.7,8.213713,1.791759,5.098758,1 +11,6,0,0,2,631278,1,3690.22,61.14511,0,10,1,25.88147,1.676669,24.006,0,0,51.56414,0,0,0,4,0,6,92,3.4,0,80.7,0,0,0,0,1.791759,0,0,0,0,0,1,0,80.7,8.213713,1.791759,3.942827,1 +11,6,0,0,3,631278,1,3690.22,62.14511,0,10,1,16.23816,7.560893,0,0,0,23.79905,0,0,0,0,0,6,92,3.4,0,80.7,0,0,0,0,1.791759,0,0,0,0,0,1,0,80.7,8.213713,1.791759,3.169646,1 +11,6,0,0,1,631279,.5112414,6735.316,20.21903,0,10.62774,1,49.604,4.501876,0,0,0,54.10588,0,0,0,2,0,1,50.5,10.57626,.1442925,56,0,0,0,0,0,0,0,0,0,0,0,0,56,8.815269,0,3.990943,1 +11,6,0,0,2,631279,.5112414,6735.316,21.21903,0,10.62774,1,0,0,0,0,0,0,0,0,0,0,0,1,50.5,10.57626,.1442925,56,0,0,0,0,0,0,0,0,0,0,0,0,56,8.815269,0,,0 +11,6,0,0,3,631279,.5112414,6735.316,22.21903,0,10.62774,1,12.85521,8.389716,0,0,360.2842,381.5291,1,0,0,3,0,1,50.5,10.57626,.1442925,56,0,0,0,0,0,0,0,0,0,0,0,0,56,8.815269,0,5.944187,1 +11,6,0,0,1,631280,1,3690.22,15.34292,0,9,1,30.84619,5.627345,0,0,0,36.47353,0,0,0,0,0,6,79.8,6.9,0,,0,0,1,0,1.791759,0,0,0,0,0,0,0,70.68995,8.213713,1.791759,3.596587,1 +11,6,0,0,2,631280,1,3690.22,16.34292,0,9,1,7.501875,4.459865,0,0,0,11.96174,0,0,0,2,0,6,79.8,6.9,0,,0,0,1,0,1.791759,0,0,0,0,0,0,0,70.68995,8.213713,1.791759,2.481713,1 +11,6,0,0,3,631280,1,3690.22,17.34292,0,9,1,0,0,0,0,0,0,0,0,0,0,0,6,79.8,6.9,0,,0,0,1,0,1.791759,0,0,0,0,0,0,0,70.68995,8.213713,1.791759,,0 +11,6,0,0,1,631281,1,3690.22,22.14647,0,10,1,14.58941,1.642351,0,0,162.1509,178.3827,1,1,0,1,0,6,75,0,0,87.5,0,0,0,0,1.791759,0,0,0,0,0,0,0,87.5,8.213713,1.791759,5.183931,1 +11,6,0,0,2,631281,1,3690.22,23.14647,0,10,1,28.50713,1.669167,0,0,0,30.17629,0,0,0,0,0,6,75,0,0,87.5,0,0,0,0,1.791759,0,0,0,0,0,0,0,87.5,8.213713,1.791759,3.407057,1 +11,6,0,0,3,631281,1,3690.22,24.14647,0,10,1,17.59134,2.486468,0,0,0,20.07781,0,0,0,0,0,6,75,0,0,87.5,0,0,0,0,1.791759,0,0,0,0,0,0,0,87.5,8.213713,1.791759,2.999615,1 +11,6,0,0,1,631282,1,3690.22,52.58043,1,9,1,138.8078,15.08128,0,0,0,153.8891,0,0,0,16,0,6,92,10.3,1,59.1,0,0,0,0,1.791759,0,0,0,0,0,1,0,59.1,8.213713,1.791759,5.036232,1 +11,6,0,0,2,631282,1,3690.22,53.58043,1,9,1,94.89873,23.12078,0,0,0,118.0195,0,0,0,9,0,6,92,10.3,1,59.1,0,0,0,0,1.791759,0,0,0,0,0,1,0,59.1,8.213713,1.791759,4.77085,1 +11,6,0,0,3,631282,1,3690.22,54.58043,1,9,1,87.9567,60.9912,0,0,0,148.9479,0,0,0,10,0,6,92,10.3,1,59.1,0,0,0,0,1.791759,0,0,0,0,0,1,0,59.1,8.213713,1.791759,5.003597,1 +11,6,0,0,1,631285,1,1190.476,24.04654,1,12,1,0,1.667361,0,0,0,1.667361,0,0,0,0,0,3,86.2,3.4,0,77.3,0,329.16,0,0,1.098612,5.796544,0,0,0,1,0,0,77.3,7.082948,1.098612,.5112424,1 +11,6,0,0,2,631285,1,1190.476,25.04654,1,12,1,16.12903,0,0,0,0,16.12903,0,0,0,1,0,3,86.2,3.4,0,77.3,0,329.16,0,0,1.098612,5.796544,0,0,0,1,0,0,77.3,7.082948,1.098612,2.780621,1 +11,6,0,0,3,631285,1,1190.476,26.04654,1,12,1,45.66982,13.97158,0,0,0,59.64141,0,0,0,4,0,3,86.2,3.4,0,77.3,0,329.16,0,0,1.098612,5.796544,0,0,0,1,0,0,77.3,7.082948,1.098612,4.08835,1 +11,6,0,1,1,631288,0,9949.82,27.20055,0,12,1,363.0627,8.502314,29.44888,0,0,401.0139,0,0,0,5,35,4,77.7,17.2,0,71.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,71.6,9.20541,1.386294,5.993996,1 +11,6,0,1,2,631288,0,9949.82,28.20055,0,12,1,120.8916,10.39668,0,0,0,131.2883,0,0,0,4,7,5,77.7,17.2,0,71.6,0,0,0,0,1.609438,0,0,0,0,0,0,0,71.6,9.20541,1.609438,4.877395,1 +11,6,0,1,3,631288,0,9949.82,29.20055,0,12,1,200,4.727273,24.01372,0,0,228.741,0,0,0,4,15,5,77.7,17.2,0,71.6,0,0,0,0,1.609438,0,0,0,0,0,0,0,71.6,9.20541,1.609438,5.43259,1 +11,6,0,1,1,631289,0,9949.82,5.779603,1,11,1,158.6033,0,0,0,0,158.6033,0,0,0,0,28,4,95,10.57626,0,81.5,0,0,1,1,1.386294,0,0,0,0,0,0,0,81.5,9.20541,1.386294,5.066406,1 +11,6,0,1,2,631289,0,9949.82,6.779603,1,11,1,67.24594,11.24669,0,0,0,78.49263,0,0,0,3,6,5,95,10.57626,0,81.5,0,0,1,1,1.609438,0,0,0,0,0,0,0,81.5,9.20541,1.609438,4.363005,1 +11,6,0,1,3,631289,0,9949.82,7.779603,1,11,1,89.87993,3.859348,24.01372,0,0,117.753,0,0,0,1,15,5,95,10.57626,0,81.5,0,0,1,1,1.609438,0,0,0,0,0,0,0,81.5,9.20541,1.609438,4.768589,1 +11,6,0,1,1,631290,0,9949.82,26.33813,1,11,1,206.9836,16.25578,31.55238,0,451.83,706.6218,1,0,0,2,32,4,78.2,3.4,1,71.6,0,0,0,0,1.386294,0,0,0,0,0,0,0,71.6,9.20541,1.386294,6.560495,1 +11,6,0,1,2,631290,0,9949.82,27.33813,1,11,1,243.6721,2.697393,0,0,0,246.3695,0,0,0,0,29,5,78.2,3.4,1,71.6,0,0,0,0,1.609438,0,0,0,0,0,0,0,71.6,9.20541,1.609438,5.506832,1 +11,6,0,1,3,631290,0,9949.82,28.33813,1,11,1,184.2196,3.413379,0,0,0,187.6329,0,0,0,1,17,5,78.2,3.4,1,71.6,0,0,0,0,1.609438,0,0,0,0,0,0,0,71.6,9.20541,1.609438,5.234488,1 +11,6,0,1,1,631291,0,9949.82,3.405886,1,11,1,228.4392,7.888094,0,0,0,236.3273,0,0,0,4,27,4,77.40034,10.57626,0,88.9,0,0,1,1,1.386294,0,0,0,0,0,0,0,88.9,9.20541,1.386294,5.465218,1 +11,6,0,1,2,631291,0,9949.82,4.405886,1,11,1,94.82433,6.664148,0,0,0,101.4885,0,0,0,3,11,5,77.40034,10.57626,0,88.9,0,0,1,1,1.609438,0,0,0,0,0,0,0,88.9,9.20541,1.609438,4.619946,1 +11,6,0,1,3,631291,0,9949.82,5.405886,1,11,1,79.58833,1.554031,0,0,0,81.14236,0,0,0,1,13,5,77.40034,10.57626,0,88.9,0,0,1,1,1.609438,0,0,0,0,0,0,0,88.9,9.20541,1.609438,4.396205,1 +11,6,0,1,1,631296,1,6278.034,15.37303,1,11,1,30.89293,0,28.35379,0,0,59.24672,0,0,0,1,1,8,74.3,13.8,0,54.5,0,0,1,1,2.079442,0,0,0,0,1,0,0,54.5,8.744971,2.079442,4.08171,1 +11,6,0,1,2,631296,1,6278.034,16.37303,1,11,1,17.08428,0,0,0,0,17.08428,0,0,0,3,0,8,74.3,13.8,0,54.5,0,0,1,1,2.079442,0,0,0,0,1,0,0,54.5,8.744971,2.079442,2.838159,1 +11,6,0,1,3,631296,1,6278.034,17.37303,1,11,1,30.44983,2.058824,29.41176,0,0,61.92041,0,0,0,4,1,8,74.3,13.8,0,54.5,0,0,1,1,2.079442,0,0,0,0,1,0,0,54.5,8.744971,2.079442,4.12585,1 +11,6,0,1,1,631297,1,6278.034,38.21766,0,7,1,35.12484,2.725349,25.39145,0,0,63.24164,0,0,0,4,1,8,54.3,10.3,1,39.8,0,0,0,0,2.079442,0,0,0,0,1,0,0,39.8,8.744971,2.079442,4.146963,1 +11,6,0,1,2,631297,1,6278.034,39.21766,0,7,1,33.78891,0,15.18603,0,237.2817,286.2567,1,0,0,0,1,8,54.3,10.3,1,39.8,0,0,0,0,2.079442,0,0,0,0,1,0,0,39.8,8.744971,2.079442,5.656889,1 +11,6,0,1,3,631297,1,6278.034,40.21766,0,7,1,28.3737,4.913495,24.22145,0,0,57.50865,0,0,0,2,1,8,54.3,10.3,1,39.8,0,0,0,0,2.079442,0,0,0,0,1,0,0,39.8,8.744971,2.079442,4.051935,1 +11,6,0,1,1,631298,1,6278.034,10.83915,1,11,1,28.35379,1.92975,0,0,0,30.28354,0,0,0,2,0,8,90,10.57626,0,74.1,0,0,1,1,2.079442,0,0,0,0,0,1,0,74.1,8.744971,2.079442,3.410604,1 +11,6,0,1,2,631298,1,6278.034,11.83915,1,11,1,5.31511,0,0,0,0,5.31511,0,0,0,1,0,8,90,10.57626,0,74.1,0,0,1,1,2.079442,0,0,0,0,0,1,0,74.1,8.744971,2.079442,1.670554,1 +11,6,0,1,3,631298,1,6278.034,12.83915,1,11,1,19.37716,2.249135,24.22145,0,0,45.84775,0,0,0,2,1,8,90,10.57626,0,74.1,0,0,1,1,2.079442,0,0,0,0,0,1,0,74.1,8.744971,2.079442,3.825326,1 +11,6,0,1,1,631299,1,6278.034,6.707735,1,11,1,10.15658,0,0,0,0,10.15658,0,0,0,0,0,8,80,10.57626,1,74.1,0,0,1,1,2.079442,0,0,0,0,1,0,0,74.1,8.744971,2.079442,2.318122,1 +11,6,0,1,2,631299,1,6278.034,7.707735,1,11,1,42.90053,0,0,0,0,42.90053,0,0,0,4,0,8,80,10.57626,1,74.1,0,0,1,1,2.079442,0,0,0,0,1,0,0,74.1,8.744971,2.079442,3.758884,1 +11,6,0,1,3,631299,1,6278.034,8.707734,1,11,1,12.80277,0,0,0,0,12.80277,0,0,0,3,0,8,80,10.57626,1,74.1,0,0,1,1,2.079442,0,0,0,0,1,0,0,74.1,8.744971,2.079442,2.549661,1 +11,6,0,1,1,631300,1,6278.034,14.44216,1,11,1,10.57977,0,0,0,0,10.57977,0,0,0,0,0,8,73.4,6.9,1,69.3,0,0,1,1,2.079442,0,0,0,0,1,0,0,69.3,8.744971,2.079442,2.358944,1 +11,6,0,1,2,631300,1,6278.034,15.44216,1,11,1,134.3964,0,25.05695,0,0,159.4533,0,0,0,9,1,8,73.4,6.9,1,69.3,0,0,1,1,2.079442,0,0,0,0,1,0,0,69.3,8.744971,2.079442,5.071751,1 +11,6,0,1,3,631300,1,6278.034,16.44216,1,11,1,84.08305,29.25606,13.84083,0,0,127.1799,0,0,0,8,1,8,73.4,6.9,1,69.3,0,0,1,1,2.079442,0,0,0,0,1,0,0,69.3,8.744971,2.079442,4.845603,1 +11,6,0,1,1,631301,1,6278.034,34.15469,1,11,1,0,0,0,0,0,0,0,0,0,0,0,8,76.1,10.3,0,51.1,0,0,0,0,2.079442,0,0,0,0,1,0,0,51.1,8.744971,2.079442,,0 +11,6,0,1,2,631301,1,6278.034,35.15469,1,11,1,31.89066,0,0,0,0,31.89066,0,0,0,6,0,8,76.1,10.3,0,51.1,0,0,0,0,2.079442,0,0,0,0,1,0,0,51.1,8.744971,2.079442,3.462313,1 +11,6,0,1,3,631301,1,6278.034,36.15469,1,11,1,15.22491,43.96194,0,0,0,59.18685,0,0,0,3,0,8,76.1,10.3,0,51.1,0,0,0,0,2.079442,0,0,0,0,1,0,0,51.1,8.744971,2.079442,4.080699,1 +11,6,0,1,1,631302,1,6278.034,12.5859,1,11,1,14.81168,4.731274,0,0,0,19.54295,0,0,0,1,0,8,61.7,10.57626,0,77.8,0,0,1,1,2.079442,0,0,0,0,1,0,0,77.8,8.744971,2.079442,2.972615,1 +11,6,0,1,2,631302,1,6278.034,13.5859,1,11,1,7.593014,0,26.57555,0,0,34.16856,0,0,0,0,1,8,61.7,10.57626,0,77.8,0,0,1,1,2.079442,0,0,0,0,1,0,0,77.8,8.744971,2.079442,3.531306,1 +11,6,0,1,3,631302,1,6278.034,14.5859,1,11,1,38.75433,1.730104,0,0,0,40.48443,0,0,0,2,0,8,61.7,10.57626,0,77.8,0,0,1,1,2.079442,0,0,0,0,1,0,0,77.8,8.744971,2.079442,3.700917,1 +13,6,0,1,1,631308,1,1989.247,3.173169,1,12,1,0,4.020313,0,0,109.6064,113.6267,1,1,0,0,0,3,77.40034,10.57626,0,85.2,300,300,1,1,1.098612,5.703783,1,4.564348,5.755076,0,0,0,85.2,7.596014,1.098612,4.732919,1 +13,6,0,1,2,631308,1,1989.247,4.173169,1,12,.1530055,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,85.2,300,300,1,1,1.098612,5.703783,1,4.564348,5.755076,0,0,0,85.2,7.596014,1.098612,,0 +13,6,0,1,1,631309,1,1989.247,24.57221,1,12,1,70.24968,3.118917,0,0,0,73.3686,0,0,0,4,0,3,42,6.9,1,63.6,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,1,0,0,63.6,7.596014,1.098612,4.295496,1 +13,6,0,1,2,631309,1,1989.247,25.57221,1,12,1,72.13364,5.550494,27.33485,0,857.631,962.65,1,0,0,5,0,3,42,6.9,1,63.6,300,300,0,0,1.098612,5.703783,1,4.564348,5.755076,1,0,0,63.6,7.596014,1.098612,6.86969,1 +13,6,0,1,3,631309,1,1989.247,26.57221,1,12,1,36.33218,13.3391,0,0,191.6955,241.3668,1,0,0,3,0,1,42,6.9,1,63.6,300,300,0,0,0,5.703783,1,4.564348,5.755076,1,0,0,63.6,7.596014,0,5.486318,1 +11,6,0,1,1,631310,1,6735.316,20.47091,0,9,1,50.7829,2.32755,0,0,0,53.11045,0,0,0,0,0,9,77.1,0,0,55.7,0,0,0,0,2.197225,0,0,0,0,1,0,0,55.7,8.815269,2.197225,3.972374,1 +11,6,0,1,2,631310,1,6735.316,21.47091,0,9,1,0,1.708428,0,0,0,1.708428,0,0,0,0,0,9,77.1,0,0,55.7,0,0,0,0,2.197225,0,0,0,0,1,0,0,55.7,8.815269,2.197225,.5355738,1 +11,6,0,1,3,631310,1,6735.316,22.47091,0,9,1,0,0,0,0,0,0,0,0,0,0,0,9,77.1,0,0,55.7,0,0,0,0,2.197225,0,0,0,0,1,0,0,55.7,8.815269,2.197225,,0 +11,6,0,1,1,631311,1,6735.316,18.51335,1,8,1,0,0,0,0,0,0,0,0,0,0,0,9,77.1,0,0,55.7,0,0,0,0,2.197225,0,0,0,0,1,0,0,55.7,8.815269,2.197225,,0 +11,6,0,1,1,631312,1,6735.316,17.59617,0,0,1,0,0,0,0,0,0,0,0,0,0,0,9,77.1,0,0,55.7,0,0,1,0,2.197225,0,0,0,0,1,0,0,55.7,8.815269,2.197225,,0 +11,6,0,1,2,631312,1,6735.316,18.59617,0,0,1,0,0,0,0,0,0,0,0,0,0,0,9,77.1,0,0,55.7,0,0,0,0,2.197225,0,0,0,0,1,0,0,55.7,8.815269,2.197225,,0 +11,6,0,1,3,631312,1,6735.316,19.59617,0,0,1,31.14187,0,0,0,0,31.14187,0,0,0,0,0,9,77.1,0,0,55.7,0,0,0,0,2.197225,0,0,0,0,1,0,0,55.7,8.815269,2.197225,3.438553,1 +11,6,0,1,1,631313,1,6735.316,12.02464,1,0,1,0,0,0,0,0,0,0,0,0,0,0,9,58.3,10.57626,1,70.4,0,0,1,1,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,,0 +11,6,0,1,2,631313,1,6735.316,13.02464,1,0,1,0,0,0,0,0,0,0,0,0,0,0,9,58.3,10.57626,1,70.4,0,0,1,1,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,,0 +11,6,0,1,3,631313,1,6735.316,14.02464,1,0,1,0,0,0,0,0,0,0,0,0,0,0,9,58.3,10.57626,1,70.4,0,0,1,1,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,,0 +11,6,0,1,1,631314,1,6735.316,15.03901,0,0,1,12.69573,2.539145,0,0,0,15.23487,0,0,0,0,0,9,58.3,10.57626,1,70.4,0,0,1,0,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,2.723587,1 +11,6,0,1,2,631314,1,6735.316,16.03901,0,0,1,0,0,0,56.94761,0,0,0,0,1,0,0,9,58.3,10.57626,1,70.4,0,0,1,0,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,,0 +11,6,0,1,3,631314,1,6735.316,17.03901,0,0,1,0,0,0,0,0,0,0,0,0,0,0,9,58.3,10.57626,1,70.4,0,0,1,0,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,,0 +11,6,0,1,1,631315,1,6735.316,16.55852,1,0,1,50.35971,13.43631,0,0,315.7004,379.4964,1,0,0,0,0,9,77.1,3.4,0,51.1,0,0,1,1,2.197225,0,0,0,0,1,0,0,51.1,8.815269,2.197225,5.938845,1 +11,6,0,1,2,631315,1,6735.316,17.55852,1,0,1,52.01215,0,32.64996,0,0,84.66211,0,0,0,0,1,9,77.1,3.4,0,51.1,0,0,1,1,2.197225,0,0,0,0,1,0,0,51.1,8.815269,2.197225,4.438668,1 +11,6,0,1,3,631315,1,6735.316,18.55852,1,0,1,35.98616,2.49827,38.97232,0,0,77.45675,0,0,0,2,1,9,77.1,3.4,0,51.1,0,0,0,0,2.197225,0,0,0,0,1,0,0,51.1,8.815269,2.197225,4.34972,1 +11,6,0,0,1,631316,.5112414,6735.316,29.59617,1,7,1,32.93039,5.210505,0,0,0,38.14089,0,0,0,4,0,4,79.8,10.3,0,83,0,0,0,0,1.386294,0,0,0,0,1,0,0,83,8.815269,1.386294,3.641287,1 +11,6,0,0,2,631316,.5112414,6735.316,30.59617,1,7,1,9.752439,4.793698,0,0,0,14.54614,0,0,0,0,0,4,79.8,10.3,0,83,0,0,0,0,1.386294,0,0,0,0,1,0,0,83,8.815269,1.386294,2.677325,1 +11,6,0,0,3,631316,.5112414,6735.316,31.59617,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,10.3,0,83,0,0,0,0,1.386294,0,0,0,0,1,0,0,83,8.815269,1.386294,,0 +11,6,0,1,1,631317,1,6735.316,50.05065,1,0,1,64.7482,16.57639,0,0,0,81.32458,0,0,0,5,0,9,67.6,10.3,0,40.9,0,0,0,0,2.197225,0,0,0,0,1,0,0,40.9,8.815269,2.197225,4.398448,1 +11,6,0,1,2,631317,1,6735.316,51.05065,1,0,1,137.0539,41.22627,36.44647,0,0,214.7267,0,0,0,4,1,9,67.6,10.3,0,40.9,0,0,0,0,2.197225,0,0,0,0,1,0,0,40.9,8.815269,2.197225,5.369366,1 +11,6,0,1,3,631317,1,6735.316,52.05065,1,0,1,47.05882,82.61938,0,0,0,129.6782,0,0,0,3,0,9,67.6,10.3,0,40.9,0,0,0,0,2.197225,0,0,0,0,1,0,0,40.9,8.815269,2.197225,4.865056,1 +11,6,0,1,1,631318,1,6735.316,19.5729,0,9,1,0,0,0,0,0,0,0,0,0,0,0,9,77.1,0,0,51.1,0,0,0,0,2.197225,0,0,0,0,1,0,0,51.1,8.815269,2.197225,,0 +11,6,0,1,2,631318,1,6735.316,20.5729,0,9,1,0,14.2369,0,22.77904,1382.878,1397.115,3,0,1,0,0,9,77.1,0,0,51.1,0,0,0,0,2.197225,0,0,0,0,1,0,0,51.1,8.815269,2.197225,7.242165,1 +11,6,0,1,3,631318,1,6735.316,21.5729,0,9,1,11.24568,0,0,51.90311,181.6609,192.9066,1,0,2,0,0,9,77.1,0,0,51.1,0,0,0,0,2.197225,0,0,0,0,1,0,0,51.1,8.815269,2.197225,5.262206,1 +13,6,0,1,1,631319,0,6735.316,49.62628,1,12,1,1.965602,33.04668,0,0,0,35.01228,0,0,0,1,0,1,70.7,31,0,73.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,73.9,8.815269,0,3.555699,1 +13,6,0,1,2,631319,0,6735.316,50.62628,1,12,1,33.72835,55.35551,0,0,0,89.08386,0,0,0,16,0,1,70.7,31,0,73.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,73.9,8.815269,0,4.489578,1 +13,6,0,1,3,631319,0,6735.316,51.62628,1,12,1,410.5877,19.9875,0,0,0,430.5752,0,0,0,16,28,1,70.7,31,0,73.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,73.9,8.815269,0,6.065122,1 +13,6,0,1,4,631319,0,6735.316,52.62628,1,12,1,163.1658,160.2776,0,0,0,323.4434,0,0,0,17,8,1,70.7,31,0,73.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,73.9,8.815269,0,5.779024,1 +13,6,0,1,5,631319,0,6735.316,53.62628,1,12,1,305.4804,220.3112,35.39581,0,0,561.1874,0,0,0,11,25,1,70.7,31,0,73.9,150,150,0,0,0,5.010635,1,4.564348,5.061929,1,0,0,73.9,8.815269,0,6.330055,1 +11,6,0,1,1,631331,1,5319.648,29.19644,1,12,1,69.28747,8.230958,27.02703,0,0,104.5455,0,0,0,3,1,7,55.9,20.7,0,40.9,0,206.44,0,0,1.94591,5.33001,0,0,0,1,0,0,40.9,8.57935,1.94591,4.649622,1 +11,6,0,1,2,631331,1,5319.648,30.19644,1,12,1,96.17138,14.81313,0,0,11.39471,122.3792,1,1,0,2,0,7,55.9,20.7,0,40.9,0,206.44,0,0,1.94591,5.33001,0,0,0,1,0,0,40.9,8.57935,1.94591,4.807125,1 +11,6,0,1,3,631331,1,5319.648,31.19644,1,12,1,66.27762,23.28053,0,0,0,89.55815,0,0,0,4,0,7,55.9,20.7,0,40.9,0,206.44,0,0,1.94591,5.33001,0,0,0,1,0,0,40.9,8.57935,1.94591,4.494888,1 +11,6,0,1,4,631331,1,5319.648,32.19644,1,12,1,64.14104,14.79745,28.50713,0,0,107.4456,0,0,0,2,1,8,55.9,20.7,0,40.9,0,206.44,0,0,2.079442,5.33001,0,0,0,1,0,0,40.9,8.57935,2.079442,4.676985,1 +11,6,0,1,5,631331,1,5319.648,33.19644,1,12,1,84.23545,21.88769,0,0,0,106.1231,0,0,0,3,0,8,55.9,20.7,0,40.9,0,206.44,0,0,2.079442,5.33001,0,0,0,1,0,0,40.9,8.57935,2.079442,4.6646,1 +11,6,0,1,1,631332,1,5319.648,6.743327,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,75,10.57626,0,59.3,0,206.44,1,1,1.94591,5.33001,0,0,0,1,0,0,59.3,8.57935,1.94591,,0 +11,6,0,1,2,631332,1,5319.648,7.743327,1,12,1,36.00729,3.988149,0,0,0,39.99544,0,0,0,1,0,7,75,10.57626,0,59.3,0,206.44,1,1,1.94591,5.33001,0,0,0,1,0,0,59.3,8.57935,1.94591,3.688766,1 +11,6,0,1,3,631332,1,5319.648,8.743326,1,12,1,95.45644,8.107545,0,0,743.6432,847.2072,2,0,0,8,0,7,75,10.57626,0,59.3,0,206.44,1,1,1.94591,5.33001,0,0,0,1,0,0,59.3,8.57935,1.94591,6.741945,1 +11,6,0,1,4,631332,1,5319.648,9.743326,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,75,10.57626,0,59.3,0,206.44,1,1,2.079442,5.33001,0,0,0,1,0,0,59.3,8.57935,2.079442,,0 +11,6,0,1,5,631332,1,5319.648,10.74333,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,75,10.57626,0,59.3,0,206.44,1,1,2.079442,5.33001,0,0,0,1,0,0,59.3,8.57935,2.079442,,0 +11,6,0,1,1,631333,1,5319.648,11.41136,1,12,1,9.82801,0,27.02703,0,0,36.85504,0,0,0,0,1,7,66.7,10.57626,0,63,0,206.44,1,1,1.94591,5.33001,0,0,0,1,0,0,63,8.57935,1.94591,3.606992,1 +11,6,0,1,2,631333,1,5319.648,12.41136,1,12,1,48.76937,2.620784,0,0,0,51.39016,0,0,0,3,0,7,66.7,10.57626,0,63,0,206.44,1,1,1.94591,5.33001,0,0,0,1,0,0,63,8.57935,1.94591,3.939447,1 +11,6,0,1,3,631333,1,5319.648,13.41136,1,12,1,132.9721,19.61234,30.84619,0,4315.131,4498.562,2,0,0,7,0,7,66.7,10.57626,0,63,0,206.44,1,1,1.94591,5.33001,0,0,0,1,0,0,63,8.57935,1.94591,8.411513,1 +11,6,0,1,4,631333,1,5319.648,14.41136,1,12,1,67.14178,15.71643,0,0,0,82.85822,0,0,0,5,0,8,66.7,10.57626,0,63,0,206.44,1,1,2.079442,5.33001,0,0,0,1,0,0,63,8.57935,2.079442,4.417131,1 +11,6,0,1,5,631333,1,5319.648,15.41136,1,12,1,100.1353,44.82409,25.71042,0,0,170.6698,0,0,0,4,0,8,66.7,10.57626,0,63,0,206.44,1,1,2.079442,5.33001,0,0,0,1,0,0,63,8.57935,2.079442,5.139731,1 +11,6,0,1,1,631334,1,5319.648,9.382615,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,68.3,10.57626,0,63,0,206.44,1,0,1.94591,5.33001,0,0,0,1,0,0,63,8.57935,1.94591,,0 +11,6,0,1,2,631334,1,5319.648,10.38262,0,12,1,70.19143,4.216044,0,0,0,74.40748,0,0,0,5,0,7,68.3,10.57626,0,63,0,206.44,1,0,1.94591,5.33001,0,0,0,1,0,0,63,8.57935,1.94591,4.309556,1 +11,6,0,1,3,631334,1,5319.648,11.38262,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,68.3,10.57626,0,63,0,206.44,1,0,1.94591,5.33001,0,0,0,1,0,0,63,8.57935,1.94591,,0 +11,6,0,1,4,631334,1,5319.648,12.38262,0,12,1,60.76519,4.782445,0,0,0,65.54764,0,0,0,2,0,8,68.3,10.57626,0,63,0,206.44,1,0,2.079442,5.33001,0,0,0,1,0,0,63,8.57935,2.079442,4.182777,1 +11,6,0,1,5,631334,1,5319.648,13.38262,0,12,1,17.59134,0,0,0,0,17.59134,0,0,0,1,0,8,68.3,10.57626,0,63,0,206.44,1,0,2.079442,5.33001,0,0,0,1,0,0,63,8.57935,2.079442,2.867407,1 +11,6,0,1,1,631335,1,5319.648,32.31211,0,9,1,35.38084,1.149877,0,0,0,36.53071,0,0,0,1,1,7,78.7,3.4,0,68.2,0,206.44,0,0,1.94591,5.33001,0,0,0,1,0,0,68.2,8.57935,1.94591,3.598153,1 +11,6,0,1,2,631335,1,5319.648,33.31211,0,9,1,19.59891,0,0,0,356.4266,376.0255,1,0,0,1,0,7,78.7,3.4,0,68.2,0,206.44,0,0,1.94591,5.33001,0,0,0,1,0,0,68.2,8.57935,1.94591,5.929657,1 +11,6,0,1,3,631335,1,5319.648,34.31211,0,9,1,0,0,0,0,0,0,0,0,0,0,0,7,78.7,3.4,0,68.2,0,206.44,0,0,1.94591,5.33001,0,0,0,1,0,0,68.2,8.57935,1.94591,,0 +11,6,0,1,4,631335,1,5319.648,35.31211,0,9,1,84.3961,18.9985,0,0,0,103.3946,0,0,0,2,0,8,78.7,3.4,0,68.2,0,206.44,0,0,2.079442,5.33001,0,0,0,1,0,0,68.2,8.57935,2.079442,4.638553,1 +11,6,0,1,5,631335,1,5319.648,36.31211,0,9,1,49.05277,4.634641,0,0,263.1935,316.8809,1,0,0,2,0,8,78.7,3.4,0,68.2,0,206.44,0,0,2.079442,5.33001,0,0,0,1,0,0,68.2,8.57935,2.079442,5.758526,1 +11,6,0,1,1,631336,1,5319.648,8.221766,1,12,1,20.14742,2.810811,0,0,0,22.95823,0,0,0,1,0,7,71.7,10.57626,0,55.6,0,206.44,1,1,1.94591,5.33001,0,0,0,1,0,0,55.6,8.57935,1.94591,3.133677,1 +11,6,0,1,2,631336,1,5319.648,9.221766,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,71.7,10.57626,0,55.6,0,206.44,1,1,1.94591,5.33001,0,0,0,1,0,0,55.6,8.57935,1.94591,,0 +11,6,0,1,3,631336,1,5319.648,10.22177,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,71.7,10.57626,0,55.6,0,206.44,1,1,1.94591,5.33001,0,0,0,1,0,0,55.6,8.57935,1.94591,,0 +11,6,0,1,4,631336,1,5319.648,11.22177,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,71.7,10.57626,0,55.6,0,206.44,1,1,2.079442,5.33001,0,0,0,1,0,0,55.6,8.57935,2.079442,,0 +11,6,0,1,5,631336,1,5319.648,12.22177,1,12,1,17.59134,0,0,0,0,17.59134,0,0,0,1,0,8,71.7,10.57626,0,55.6,0,206.44,1,1,2.079442,5.33001,0,0,0,1,0,0,55.6,8.57935,2.079442,2.867407,1 +11,6,0,1,1,631337,1,5319.648,5.497604,1,12,1,32.43243,1.405405,0,0,345.946,379.7838,1,0,0,0,0,7,75,10.57626,0,74.1,0,206.44,1,1,1.94591,5.33001,0,0,0,1,0,0,74.1,8.57935,1.94591,5.939602,1 +11,6,0,1,2,631337,1,5319.648,6.497604,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,75,10.57626,0,74.1,0,206.44,1,1,1.94591,5.33001,0,0,0,1,0,0,74.1,8.57935,1.94591,,0 +11,6,0,1,3,631337,1,5319.648,7.497604,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,75,10.57626,0,74.1,0,206.44,1,1,1.94591,5.33001,0,0,0,1,0,0,74.1,8.57935,1.94591,,0 +11,6,0,1,4,631337,1,5319.648,8.497604,1,12,1,43.88597,3.938485,0,0,0,47.82446,0,0,0,3,0,8,75,10.57626,0,74.1,0,206.44,1,1,2.079442,5.33001,0,0,0,1,0,0,74.1,8.57935,2.079442,3.867537,1 +11,6,0,1,5,631337,1,5319.648,9.497604,1,12,1,29.76996,6.529093,0,0,0,36.29905,0,0,0,1,0,8,75,10.57626,0,74.1,0,206.44,1,1,2.079442,5.33001,0,0,0,1,0,0,74.1,8.57935,2.079442,3.591792,1 +13,6,0,0,1,631338,1,9940.604,5.629021,1,10,1,10.51746,0,0,0,0,10.51746,0,0,0,0,0,4,90,10.57626,0,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.204484,1.386294,2.353037,1 +13,6,0,0,2,631338,1,9940.604,6.629021,1,10,1,49.86777,0,0,0,800.5289,850.3967,1,0,0,4,0,4,90,10.57626,0,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.204484,1.386294,6.745703,1 +13,6,0,0,3,631338,1,9940.604,7.629021,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,90,10.57626,0,74.1,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,1,0,0,74.1,9.204484,1.386294,,0 +13,6,0,0,1,631340,1,9940.604,27.73717,0,9,1,28.18679,0,0,0,0,28.18679,0,0,0,1,0,4,80.9,3.4,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.204484,1.386294,3.338853,1 +13,6,0,0,2,631340,1,9940.604,28.73717,0,9,1,69.89044,0,0,0,0,69.89044,0,0,0,3,0,4,80.9,3.4,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.204484,1.386294,4.246929,1 +13,6,0,0,3,631340,1,9940.604,29.73717,0,9,1,81.3036,0,0,0,0,81.3036,0,0,0,4,0,4,80.9,3.4,0,69.3,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,69.3,9.204484,1.386294,4.39819,1 +13,6,0,0,1,631341,1,9940.604,28.77481,1,10,1,116.1127,21.30837,0,0,0,137.4211,0,0,0,6,0,4,82.4,3.4,0,63.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,63.6,9.204484,1.386294,4.92305,1 +13,6,0,0,2,631341,1,9940.604,29.77481,1,10,1,91.36758,0,0,0,0,91.36758,0,0,0,5,0,4,82.4,3.4,0,63.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,63.6,9.204484,1.386294,4.514891,1 +13,6,0,0,3,631341,1,9940.604,30.77481,1,10,1,24.5283,2.024014,0,0,0,26.55231,0,0,0,2,0,4,82.4,3.4,0,63.6,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,1,0,0,63.6,9.204484,1.386294,3.279117,1 +11,6,0,1,1,631367,0,10634.41,41.39631,0,11,1,0,0,0,0,0,0,0,0,0,0,0,3,85.1,6.9,0,81.8,0,144.36,0,0,1.098612,4.97231,0,0,0,0,0,0,81.8,9.271944,1.098612,,0 +11,6,0,1,2,631367,0,10634.41,42.39631,0,11,1,11.33358,16.40347,0,0,0,27.73706,0,0,0,3,0,3,85.1,6.9,0,81.8,0,144.36,0,0,1.098612,4.97231,0,0,0,0,0,0,81.8,9.271944,1.098612,3.322769,1 +11,6,0,1,3,631367,0,10634.41,43.39631,0,11,1,30.18868,11.80789,24.01372,0,0,66.01029,0,0,0,5,0,3,85.1,6.9,0,81.8,0,144.36,0,0,1.098612,4.97231,0,0,0,0,0,0,81.8,9.271944,1.098612,4.189811,1 +11,6,0,1,1,631368,0,10634.41,39.15127,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,88.8,24.1,0,56.8,0,144.36,0,0,1.098612,4.97231,0,0,0,0,0,0,56.8,9.271944,1.098612,,0 +11,6,0,1,2,631368,0,10634.41,40.15127,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,88.8,24.1,0,56.8,0,144.36,0,0,1.098612,4.97231,0,0,0,0,0,0,56.8,9.271944,1.098612,,0 +11,6,0,1,3,631368,0,10634.41,41.15127,1,12,1,33.61921,10.18868,40.01029,0,0,83.81818,0,0,0,4,0,3,88.8,24.1,0,56.8,0,144.36,0,0,1.098612,4.97231,0,0,0,0,0,0,56.8,9.271944,1.098612,4.42865,1 +11,6,0,1,1,631370,0,10634.41,12.71732,0,12,1,27.34539,0,0,0,0,27.34539,0,0,0,2,0,3,91.7,10.57626,0,92.6,0,144.36,1,0,1.098612,4.97231,0,0,0,0,0,0,92.6,9.271944,1.098612,3.308548,1 +11,6,0,1,2,631370,0,10634.41,13.71732,0,12,1,25.31167,4.998111,0,0,0,30.30978,0,0,0,4,0,3,91.7,10.57626,0,92.6,0,144.36,1,0,1.098612,4.97231,0,0,0,0,0,0,92.6,9.271944,1.098612,3.411471,1 +11,6,0,1,3,631370,0,10634.41,14.71732,0,12,1,13.72213,4.425386,0,0,0,18.14751,0,0,0,3,0,3,91.7,10.57626,0,92.6,0,144.36,1,0,1.098612,4.97231,0,0,0,0,0,0,92.6,9.271944,1.098612,2.898534,1 +13,6,0,1,1,631379,1,6906.158,14.16016,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,92,0,0,75,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,75,8.840314,1.791759,,0 +13,6,0,1,2,631379,1,6906.158,15.16016,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,92,0,0,75,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,75,8.840314,1.791759,,0 +13,6,0,1,3,631379,1,6906.158,16.16016,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,92,0,0,75,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,75,8.840314,1.791759,,0 +13,6,0,1,4,631379,1,6906.158,17.16016,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,92,0,0,75,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,75,8.840314,1.791759,,0 +13,6,0,1,5,631379,1,6906.158,18.16016,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,92,0,0,75,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,75,8.840314,1.791759,,0 +13,6,0,1,1,631380,1,6906.158,16.70363,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,81.9,0,0,58,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,58,8.840314,1.791759,,0 +13,6,0,1,2,631380,1,6906.158,17.70363,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,81.9,0,0,58,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,58,8.840314,1.791759,,0 +13,6,0,1,3,631380,1,6906.158,18.70363,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,81.9,0,0,58,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,58,8.840314,1.791759,,0 +13,6,0,1,4,631380,1,6906.158,19.70363,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,81.9,0,0,58,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,58,8.840314,1.791759,,0 +13,6,0,1,5,631380,1,6906.158,20.70363,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,81.9,0,0,58,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,58,8.840314,1.791759,,0 +13,6,0,1,1,631381,1,6906.158,50.141,0,4,1,0,0,0,0,0,0,0,0,0,0,0,6,70.7,10.3,1,59.1,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,59.1,8.840314,1.791759,,0 +13,6,0,1,2,631381,1,6906.158,51.141,0,4,1,0,0,0,0,0,0,0,0,0,0,0,6,70.7,10.3,1,59.1,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,59.1,8.840314,1.791759,,0 +13,6,0,1,3,631381,1,6906.158,52.141,0,4,1,0,0,0,0,0,0,0,0,0,0,0,6,70.7,10.3,1,59.1,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,59.1,8.840314,1.791759,,0 +13,6,0,1,4,631381,1,6906.158,53.141,0,4,1,0,0,0,0,0,0,0,0,0,0,0,6,70.7,10.3,1,59.1,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,59.1,8.840314,1.791759,,0 +13,6,0,1,5,631381,1,6906.158,54.141,0,4,1,0,0,0,0,0,0,0,0,0,0,0,6,70.7,10.3,1,59.1,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,59.1,8.840314,1.791759,,0 +13,6,0,1,1,631382,1,6906.158,12.14784,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,77.8,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.840314,1.791759,,0 +13,6,0,1,2,631382,1,6906.158,13.14784,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,77.8,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.840314,1.791759,,0 +13,6,0,1,3,631382,1,6906.158,14.14784,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,77.8,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.840314,1.791759,,0 +13,6,0,1,4,631382,1,6906.158,15.14784,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,77.8,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.840314,1.791759,,0 +13,6,0,1,5,631382,1,6906.158,16.14784,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.3,10.57626,0,77.8,450,450,1,0,1.791759,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.840314,1.791759,,0 +13,6,0,1,1,631383,1,6906.158,43.71252,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.8,10.3,1,61.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,61.4,8.840314,1.791759,,0 +13,6,0,1,2,631383,1,6906.158,44.71252,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,88.8,10.3,1,61.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,61.4,8.840314,1.791759,,0 +13,6,0,1,3,631383,1,6906.158,45.71252,1,12,1,0,0,0,0,1636.932,1636.932,2,0,0,0,0,6,88.8,10.3,1,61.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,61.4,8.840314,1.791759,7.400579,1 +13,6,0,1,4,631383,1,6906.158,46.71252,1,12,1,6.376594,6.901725,0,0,436.9843,450.2626,0,0,0,1,0,6,88.8,10.3,1,61.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,61.4,8.840314,1.791759,6.109831,1 +13,6,0,1,5,631383,1,6906.158,47.71252,1,12,1,36.53586,41.70162,0,0,1150.203,1228.44,1,0,0,4,0,6,88.8,10.3,1,61.4,450,450,0,0,1.791759,6.109248,1,4.564348,6.160541,1,0,0,61.4,8.840314,1.791759,7.113501,1 +18,6,25,0,1,631462,1,6735.316,7.000684,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,93.3,10.57626,.1442925,100,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,100,8.815269,1.791759,,0 +18,6,25,0,2,631462,1,6735.316,8.000685,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,93.3,10.57626,.1442925,100,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,100,8.815269,1.791759,,0 +18,6,25,0,3,631462,1,6735.316,9.000685,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,93.3,10.57626,.1442925,100,750,750,1,1,1.791759,6.620073,0,3.258096,8.006368,0,0,0,100,8.815269,1.791759,,0 +11,6,0,0,1,631465,1,1190.476,6.154688,1,12,1,8.336807,4.272614,0,0,0,12.60942,0,0,0,2,0,3,100,10.57626,.1442925,92.6,0,329.16,1,1,1.098612,5.796544,0,0,0,1,0,0,92.6,7.082948,1.098612,2.534444,1 +11,6,0,0,2,631465,1,1190.476,7.154688,1,12,1,7.501875,2.674419,0,0,0,10.17629,0,0,0,2,0,3,100,10.57626,.1442925,92.6,0,329.16,1,1,1.098612,5.796544,0,0,0,1,0,0,92.6,7.082948,1.098612,2.320061,1 +11,6,0,0,3,631465,1,1190.476,8.154689,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,100,10.57626,.1442925,92.6,0,329.16,1,1,1.098612,5.796544,0,0,0,1,0,0,92.6,7.082948,1.098612,,0 +11,6,0,0,1,631466,1,3690.22,7.520876,0,9,1,10.00417,3.463943,0,0,0,13.46811,0,0,0,2,0,6,100,10.57626,.1442925,64.8,0,0,1,0,1.791759,0,0,0,0,0,0,0,64.8,8.213713,1.791759,2.600325,1 +11,6,0,0,2,631466,1,3690.22,8.520876,0,9,1,22.88072,8.210803,0,0,0,31.09152,0,0,0,1,0,6,100,10.57626,.1442925,64.8,0,0,1,0,1.791759,0,0,0,0,0,0,0,64.8,8.213713,1.791759,3.436935,1 +11,6,0,0,3,631466,1,3690.22,9.520876,0,9,1,15.89987,4.008796,0,0,0,19.90866,0,0,0,0,0,6,100,10.57626,.1442925,64.8,0,0,1,0,1.791759,0,0,0,0,0,0,0,64.8,8.213713,1.791759,2.991155,1 +11,6,0,0,1,631468,1,6735.316,10.94045,1,0,1,0,0,0,0,0,0,0,0,0,0,0,9,90,10.57626,.1442925,77.8,0,0,1,1,2.197225,0,0,0,0,0,0,0,77.8,8.815269,2.197225,,0 +11,6,0,0,2,631468,1,6735.316,11.94045,1,0,1,0,0,0,0,0,0,0,0,0,0,0,9,90,10.57626,.1442925,77.8,0,0,1,1,2.197225,0,0,0,0,0,0,0,77.8,8.815269,2.197225,,0 +11,6,0,0,3,631468,1,6735.316,12.94045,1,0,1,0,0,0,0,0,0,0,0,0,0,0,9,90,10.57626,.1442925,77.8,0,0,1,1,2.197225,0,0,0,0,0,0,0,77.8,8.815269,2.197225,,0 +11,6,0,0,1,631469,.5112414,6735.316,8.906229,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,91.7,10.57626,.1442925,81.5,0,0,1,1,1.386294,0,0,0,0,0,0,0,81.5,8.815269,1.386294,,0 +11,6,0,0,2,631469,.5112414,6735.316,9.906229,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,91.7,10.57626,.1442925,81.5,0,0,1,1,1.386294,0,0,0,0,0,0,0,81.5,8.815269,1.386294,,0 +11,6,0,0,3,631469,.5112414,6735.316,10.90623,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,91.7,10.57626,.1442925,81.5,0,0,1,1,1.386294,0,0,0,0,0,0,0,81.5,8.815269,1.386294,,0 +11,6,0,0,1,631472,1,6735.316,8.479124,1,12,1,0,0,0,0,0,0,0,0,0,0,0,10,90,10.57626,0,70.4,0,0,1,1,2.302585,0,0,0,0,1,0,0,70.4,8.815269,2.302585,,0 +11,6,0,0,2,631472,1,6735.316,9.479124,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,90,10.57626,0,70.4,0,0,1,1,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,,0 +11,6,0,0,3,631472,1,6735.316,10.47912,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,90,10.57626,0,70.4,0,0,1,1,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,,0 +11,6,0,0,4,631472,1,6735.316,11.47912,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,90,10.57626,0,70.4,0,0,1,1,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,,0 +11,6,0,0,5,631472,1,6735.316,12.47912,1,12,1,8.304499,0,0,0,0,8.304499,0,0,0,1,0,9,90,10.57626,0,70.4,0,0,1,1,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,2.116797,1 +11,6,0,0,1,631473,1,6735.316,5.812457,0,12,1,0,2.982544,0,0,0,2.982544,0,0,0,0,0,10,88.3,10.57626,0,70.4,0,0,1,0,2.302585,0,0,0,0,1,0,0,70.4,8.815269,2.302585,1.092777,1 +11,6,0,0,2,631473,1,6735.316,6.812457,0,12,1,6.915629,3.499308,0,0,0,10.41494,0,0,0,1,0,9,88.3,10.57626,0,70.4,0,0,1,0,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,2.343241,1 +11,6,0,0,3,631473,1,6735.316,7.812457,0,12,1,7.617435,3.829877,0,0,0,11.44731,0,0,0,1,0,9,88.3,10.57626,0,70.4,0,0,1,0,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,2.437755,1 +11,6,0,0,4,631473,1,6735.316,8.812457,0,12,1,6.454062,5.125285,0,0,0,11.57935,0,0,0,1,0,9,88.3,10.57626,0,70.4,0,0,1,0,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,2.449223,1 +11,6,0,0,5,631473,1,6735.316,9.812457,0,12,1,0,0,0,0,0,0,0,0,0,0,0,9,88.3,10.57626,0,70.4,0,0,1,0,2.197225,0,0,0,0,1,0,0,70.4,8.815269,2.197225,,0 +16,6,95,1,1,631487,0,12826.42,36.22177,0,18,1,10.57977,0,0,0,0,10.57977,0,0,0,1,0,4,77.7,17.2,1,68.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,68.2,9.45934,1.386294,2.358944,1 +16,6,95,1,2,631487,0,12826.42,37.22177,0,18,1,34.16856,24.54442,32.64996,0,0,91.36295,0,0,0,2,1,4,77.7,17.2,1,68.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,68.2,9.45934,1.386294,4.51484,1 +16,6,95,1,3,631487,0,12826.42,38.22177,0,18,1,5.190311,0,0,0,0,5.190311,0,0,0,1,0,4,77.7,17.2,1,68.2,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,68.2,9.45934,1.386294,1.646794,1 +11,6,0,1,1,631489,0,10837.69,2.2423,1,12,1,22.85231,2.107491,0,0,0,24.9598,0,0,0,4,0,3,77.40034,10.57626,0,74.1,0,24,1,1,1.098612,3.178054,0,0,0,0,0,0,74.1,9.290877,1.098612,3.217266,1 +11,6,0,1,2,631489,0,10837.69,3.2423,1,12,1,20.50114,4.28246,0,0,0,24.7836,0,0,0,3,0,3,77.40034,10.57626,0,74.1,0,24,1,1,1.098612,3.178054,0,0,0,0,0,0,74.1,9.290877,1.098612,3.210182,1 +11,6,0,1,3,631489,0,10837.69,4.2423,1,12,1,60.20761,28.92042,0,0,0,89.12803,0,0,0,8,0,3,77.40034,10.57626,0,74.1,0,24,1,1,1.098612,3.178054,0,0,0,0,0,0,74.1,9.290877,1.098612,4.490074,1 +11,6,0,0,1,631492,0,6219.941,.2956879,1,12,1,116.9475,19.37562,59.44995,0,0,195.773,0,0,0,11,0,4,77.40034,10.57626,0,100,0,0,1,1,1.386294,0,0,0,0,0,0,0,100,8.735677,1.386294,5.276956,1 +11,6,0,0,2,631492,0,6219.941,1.295688,1,12,1,51.85865,22.71684,33.40064,0,0,107.9761,0,0,0,7,0,4,77.40034,10.57626,0,100,0,0,1,1,1.386294,0,0,0,0,0,0,0,100,8.735677,1.386294,4.68191,1 +11,6,0,0,3,631492,0,6219.941,2.295688,1,12,1,0,19.0366,17.50105,0,0,36.53765,0,0,0,0,0,4,77.40034,10.57626,0,100,0,0,1,1,1.386294,0,0,0,0,0,0,0,100,8.735677,1.386294,3.598343,1 +11,6,0,0,4,631492,0,6219.941,3.295688,1,12,1,46.84549,7.65017,0,0,0,54.49566,0,0,0,2,0,4,77.40034,10.57626,0,100,0,0,1,1,1.386294,0,0,0,0,0,0,0,100,8.735677,1.386294,3.998121,1 +11,6,0,0,5,631492,0,6219.941,4.295688,1,12,1,17.83876,13.12178,0,0,0,30.96055,0,0,0,3,0,4,77.40034,10.57626,0,100,0,0,1,1,1.386294,0,0,0,0,0,0,0,100,8.735677,1.386294,3.432714,1 +11,6,0,1,1,631495,0,4633.431,20.39425,0,10.62774,1,49.05848,18.96432,0,0,0,68.0228,0,0,0,4,0,1,94.1,3.4,0,86.4,0,0,0,0,0,0,0,0,0,0,0,0,86.4,8.441269,0,4.219843,1 +11,6,0,1,2,631495,0,4633.431,21.39425,0,10.62774,1,73.42818,29.05461,0,0,0,102.4828,0,0,0,5,0,1,94.1,3.4,0,86.4,0,0,0,0,0,0,0,0,0,0,0,0,86.4,8.441269,0,4.629695,1 +11,6,0,1,3,631495,0,4633.431,22.39425,0,10.62774,1,78.67059,10.07573,0,0,0,88.74632,0,0,0,4,0,1,94.1,3.4,0,86.4,0,0,0,0,0,0,0,0,0,0,0,0,86.4,8.441269,0,4.485782,1 +11,6,0,1,4,631495,0,4633.431,23.39425,0,10.62774,1,421.9872,1.507367,0,0,3135.625,3559.12,1,0,0,6,14,2,94.1,3.4,0,86.4,0,0,0,0,.6931472,0,0,0,0,0,0,0,86.4,8.441269,.6931472,8.177269,1 +11,6,0,1,5,631495,0,4633.431,24.39425,0,10.62774,1,12.34991,5.622642,0,0,0,17.97256,0,0,0,0,3,1,94.1,3.4,0,86.4,0,0,0,0,0,0,0,0,0,0,0,0,86.4,8.441269,0,2.888846,1 +6,6,25,0,1,631497,1,1759.531,25.3525,1,12,1,0,0,0,0,213.0823,213.0823,1,0,0,0,0,3,75.5,6.9,0,46.6,750,0,0,0,1.098612,0,0,3.258096,8.006368,0,0,0,46.6,7.473371,1.098612,5.361678,1 +6,6,25,0,2,631497,1,1759.531,26.3525,1,12,1,19.2749,0,25.24094,0,211.5649,256.0808,1,0,0,0,1,3,75.5,6.9,0,46.6,750,0,0,0,1.098612,0,0,3.258096,8.006368,0,0,0,46.6,7.473371,1.098612,5.545493,1 +6,6,25,0,3,631497,1,1759.531,27.3525,1,12,1,16.82793,0,15.56584,0,326.4619,358.8557,1,0,0,0,1,4,75.5,6.9,0,46.6,750,0,0,0,1.386294,0,0,3.258096,8.006368,0,0,0,46.6,7.473371,1.386294,5.88292,1 +6,6,25,0,4,631497,1,1759.531,28.3525,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,75.5,6.9,0,46.6,750,0,0,0,1.609438,0,0,3.258096,8.006368,0,0,0,46.6,7.473371,1.609438,,0 +6,6,25,0,5,631497,1,1759.531,29.3525,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,75.5,6.9,0,46.6,750,0,0,0,1.609438,0,0,3.258096,8.006368,0,0,0,46.6,7.473371,1.609438,,0 +6,6,25,0,1,631498,1,1759.531,25.10335,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,79.8,0,0,63.6,750,0,0,0,1.098612,0,0,3.258096,8.006368,0,0,0,63.6,7.473371,1.098612,,0 +6,6,25,0,2,631498,1,1759.531,26.10335,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,79.8,0,0,63.6,750,0,0,0,1.098612,0,0,3.258096,8.006368,0,0,0,63.6,7.473371,1.098612,,0 +6,6,25,0,3,631498,1,1759.531,27.10335,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,79.8,0,0,63.6,750,0,0,0,1.386294,0,0,3.258096,8.006368,0,0,0,63.6,7.473371,1.386294,,0 +6,6,25,0,4,631498,1,1759.531,28.10335,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,79.8,0,0,63.6,750,0,0,0,1.609438,0,0,3.258096,8.006368,0,0,0,63.6,7.473371,1.609438,,0 +6,6,25,0,5,631498,1,1759.531,29.10335,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,79.8,0,0,63.6,750,0,0,0,1.609438,0,0,3.258096,8.006368,0,0,0,63.6,7.473371,1.609438,,0 +6,6,25,0,1,631499,1,1759.531,.7665982,0,12,1,8.424182,0,0,0,0,8.424182,0,0,0,0,0,3,77.40034,10.57626,0,85.2,750,0,1,0,1.098612,0,0,3.258096,8.006368,0,0,0,85.2,7.473371,1.098612,2.131106,1 +6,6,25,0,2,631499,1,1759.531,1.766598,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,85.2,750,0,1,0,1.098612,0,0,3.258096,8.006368,0,0,0,85.2,7.473371,1.098612,,0 +6,6,25,0,3,631499,1,1759.531,2.766598,0,12,1,8.413967,3.517038,0,0,0,11.93101,0,0,0,2,0,4,77.40034,10.57626,0,85.2,750,0,1,0,1.386294,0,0,3.258096,8.006368,0,0,0,85.2,7.473371,1.386294,2.479141,1 +6,6,25,0,4,631499,1,1759.531,3.766598,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,85.2,750,0,1,0,1.609438,0,0,3.258096,8.006368,0,0,0,85.2,7.473371,1.609438,,0 +6,6,25,0,5,631499,1,1759.531,4.766598,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,85.2,750,0,1,0,1.609438,0,0,3.258096,8.006368,0,0,0,85.2,7.473371,1.609438,,0 +11,6,0,0,1,631502,1,6735.316,17.59891,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,59,3.4,0,52.3,0,152.88,1,1,1.386294,5.029653,0,0,0,0,0,0,52.3,8.815269,1.386294,,0 +11,6,0,0,2,631502,1,6735.316,18.59891,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,59,3.4,0,52.3,0,152.88,0,0,1.386294,5.029653,0,0,0,0,0,0,52.3,8.815269,1.386294,,0 +11,6,0,0,3,631502,1,6735.316,19.59891,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,59,3.4,0,52.3,0,152.88,0,0,1.386294,5.029653,0,0,0,0,0,0,52.3,8.815269,1.386294,,0 +17,6,25,0,1,631503,0,8273.9,.5393566,1,8,1,14.8662,3.017839,0,0,0,17.88404,0,0,0,2,0,4,77.40034,10.57626,0,66.7,650,650,1,1,1.386294,6.476973,0,3.258096,7.863267,0,0,0,66.7,9.020982,1.386294,2.883909,1 +17,6,25,0,2,631503,0,8273.9,1.539357,1,8,1,19.73382,0,0,0,0,19.73382,0,0,0,0,0,4,77.40034,10.57626,0,66.7,650,650,1,1,1.386294,6.476973,0,3.258096,7.863267,0,0,0,66.7,9.020982,1.386294,2.982334,1 +17,6,25,0,3,631503,0,8273.9,2.539357,1,8,1,0,2.52419,0,0,0,2.52419,0,0,0,0,0,4,77.40034,10.57626,0,66.7,650,650,1,1,1.386294,6.476973,0,3.258096,7.863267,0,0,0,66.7,9.020982,1.386294,.9259203,1 +17,6,25,0,4,631503,0,8273.9,3.539357,1,8,1,30.22289,0,0,0,0,30.22289,0,0,0,0,0,4,77.40034,10.57626,0,66.7,650,650,1,1,1.386294,6.476973,0,3.258096,7.863267,0,0,0,66.7,9.020982,1.386294,3.4086,1 +17,6,25,0,5,631503,0,8273.9,4.539357,1,8,1,3.430532,0,0,0,0,3.430532,0,0,0,1,0,5,77.40034,10.57626,0,66.7,650,650,1,1,1.609438,6.476973,0,3.258096,7.863267,0,0,0,66.7,9.020982,1.609438,1.232715,1 +13,6,0,1,1,631504,0,6735.316,.2354552,0,12,1,25.27255,2.636274,0,0,0,27.90882,0,0,0,4,0,3,77.40034,10.57626,0,100,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,100,8.815269,1.098612,3.328943,1 +13,6,0,1,2,631504,0,6735.316,1.235455,0,12,1,42.2212,21.34007,0,0,0,63.56127,0,0,0,7,0,3,77.40034,10.57626,0,100,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,100,8.815269,1.098612,4.152004,1 +13,6,0,1,3,631504,0,6735.316,2.235455,0,12,1,77.4085,73.57173,0,0,0,150.9802,0,0,0,13,0,3,77.40034,10.57626,0,100,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,100,8.815269,1.098612,5.017149,1 +13,6,0,1,4,631504,0,6735.316,3.235455,0,12,1,71.0238,50.61579,0,0,238.3831,360.0227,1,0,0,7,0,3,77.40034,10.57626,0,100,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,100,8.815269,1.098612,5.886167,1 +13,6,0,1,5,631504,0,6735.316,4.235455,0,12,1,219.554,46.54889,0,0,0,266.1029,0,0,0,9,25,3,77.40034,10.57626,0,100,450,450,1,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,100,8.815269,1.098612,5.583883,1 +17,6,25,1,1,631505,1,4638.709,.6105407,0,11,1,20.81269,5.540139,0,0,128.3449,154.6977,1,1,0,1,0,7,77.40034,10.57626,1,59.3,426.45,426.45,1,0,1.94591,6.055495,0,3.258096,7.44179,0,0,0,59.3,8.442407,1.94591,5.041473,1 +17,6,25,1,2,631505,1,4638.709,1.610541,0,11,1,9.178522,4.703993,0,0,0,13.88251,0,0,0,0,0,7,77.40034,10.57626,1,59.3,426.45,426.45,1,0,1.94591,6.055495,0,3.258096,7.44179,0,0,0,59.3,8.442407,1.94591,2.63063,1 +17,6,25,1,3,631505,1,4638.709,2.610541,0,11,1,11.77955,0,0,0,0,11.77955,0,0,0,0,0,7,77.40034,10.57626,1,59.3,426.45,426.45,1,0,1.94591,6.055495,0,3.258096,7.44179,0,0,0,59.3,8.442407,1.94591,2.466365,1 +17,6,25,1,4,631505,1,4638.709,3.610541,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,1,59.3,426.45,426.45,1,0,1.94591,6.055495,0,3.258096,7.44179,0,0,0,59.3,8.442407,1.94591,,0 +17,6,25,1,5,631505,1,4638.709,4.610541,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,1,59.3,426.45,426.45,1,0,1.94591,6.055495,0,3.258096,7.44179,0,0,0,59.3,8.442407,1.94591,,0 +11,6,0,1,1,631517,1,3700.973,2.726899,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,66.7,0,168.4,1,1,1.791759,5.126342,0,0,0,0,0,0,66.7,8.216621,1.791759,,0 +11,6,0,1,2,631517,1,3700.973,3.726899,1,12,1,13.12828,0,0,0,0,13.12828,0,0,0,3,0,6,77.40034,10.57626,0,66.7,0,168.4,1,1,1.791759,5.126342,0,0,0,0,0,0,66.7,8.216621,1.791759,2.574769,1 +11,6,0,1,3,631517,1,3700.973,4.726899,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,66.7,0,168.4,1,1,1.94591,5.126342,0,0,0,0,0,0,66.7,8.216621,1.94591,,0 +11,6,0,0,1,631518,0,11577.06,42.68036,1,9,1,80.81667,104.4534,47.21395,0,0,232.4841,0,0,0,5,1,2,72.9,10.3,0,65.9,0,0,0,0,.6931472,0,0,0,0,0,0,0,65.9,9.356867,.6931472,5.448822,1 +11,6,0,0,2,631518,0,11577.06,43.68036,1,9,1,152.6718,122.6641,0,0,0,275.3359,0,0,0,8,0,2,72.9,10.3,0,65.9,0,0,0,0,.6931472,0,0,0,0,0,0,0,65.9,9.356867,.6931472,5.617992,1 +11,6,0,0,3,631518,0,11577.06,44.68036,1,9,1,214.9826,105.4669,21.60279,0,256.0976,598.1498,1,0,0,12,0,2,72.9,10.3,0,65.9,0,0,0,0,.6931472,0,0,0,0,0,0,0,65.9,9.356867,.6931472,6.393841,1 +13,6,0,1,1,631521,0,7438.3,2.652977,1,9,1,0,1.028354,0,0,0,1.028354,0,0,0,0,0,6,77.40034,10.57626,0,92.6,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.914532,1.791759,.0279593,1 +13,6,0,1,2,631521,0,7438.3,3.652977,1,9,1,7.593014,4.745634,0,0,0,12.33865,0,0,0,1,0,6,77.40034,10.57626,0,92.6,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.914532,1.791759,2.512737,1 +13,6,0,1,3,631521,0,7438.3,4.652977,1,9,1,3.806228,0,0,0,0,3.806228,0,0,0,0,0,6,77.40034,10.57626,0,92.6,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,92.6,8.914532,1.791759,1.336639,1 +11,6,0,1,1,631523,1,7187.404,2.316222,0,5,1,0,0,0,0,0,0,0,0,0,0,0,13,77.40034,10.57626,0,85.2,0,106.56,1,0,2.564949,4.668708,0,0,0,0,0,0,85.2,8.880224,2.564949,,0 +11,6,0,1,2,631523,1,7187.404,3.316222,0,5,1,0,0,0,0,0,0,0,0,0,0,0,13,77.40034,10.57626,0,85.2,0,106.56,1,0,2.564949,4.668708,0,0,0,0,0,0,85.2,8.880224,2.564949,,0 +11,6,0,1,3,631523,1,7187.404,4.316222,0,5,1,0,0,0,0,0,0,0,0,0,0,0,14,77.40034,10.57626,0,85.2,0,106.56,1,0,2.639057,4.668708,0,0,0,0,0,0,85.2,8.880224,2.639057,,0 +11,6,0,1,1,631526,1,1049.667,16.27105,0,7,1,0,0,0,0,0,0,0,0,0,0,0,2,96.3,3.4,0,76.1,0,171.6,1,0,.6931472,5.145166,0,0,0,0,0,0,76.1,6.957181,.6931472,,0 +11,6,0,1,2,631526,1,1049.667,17.27105,0,7,1,0,0,0,0,0,0,0,0,0,0,0,2,96.3,3.4,0,76.1,0,171.6,1,0,.6931472,5.145166,0,0,0,0,0,0,76.1,6.957181,.6931472,,0 +11,6,0,1,3,631526,1,1049.667,18.27105,0,7,1,13.84083,0,0,0,0,13.84083,0,0,0,1,0,2,96.3,3.4,0,76.1,0,171.6,0,0,.6931472,5.145166,0,0,0,0,0,0,76.1,6.957181,.6931472,2.627623,1 +10,6,50,1,1,631529,1,10221.2,2.034223,1,16,1,8.507018,0,0,0,0,8.507018,0,0,0,1,0,3,77.40034,10.57626,0,59.3,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,59.3,9.232317,1.098612,2.140892,1 +10,6,50,1,2,631529,1,10221.2,3.034223,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,59.3,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,59.3,9.232317,1.098612,,0 +10,6,50,1,3,631529,1,10221.2,4.034223,1,16,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,59.3,1000,1000,1,1,1.098612,6.907755,0,3.931826,7.600903,0,0,0,59.3,9.232317,1.098612,,0 +11,6,0,1,1,631531,0,14529.44,33.68925,1,12,1,186.6272,0,0,0,0,186.6272,0,0,0,5,0,4,54.3,27.6,1,45.5,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,45.5,9.584002,1.386294,5.229113,1 +11,6,0,1,2,631531,0,14529.44,34.68925,1,12,1,200.8352,0,0,0,0,200.8352,0,0,0,4,15,4,54.3,27.6,1,45.5,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,45.5,9.584002,1.386294,5.302485,1 +11,6,0,1,3,631531,0,14529.44,35.68925,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,54.3,27.6,1,45.5,0,60,0,0,1.386294,4.094345,0,0,0,0,0,0,45.5,9.584002,1.386294,,0 +11,6,0,1,1,631532,0,14529.44,12.13689,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,83.3,10.57626,0,81.5,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,81.5,9.584002,1.386294,,0 +11,6,0,1,2,631532,0,14529.44,13.13689,1,12,1,11.76917,0,0,0,0,11.76917,0,0,0,1,0,4,83.3,10.57626,0,81.5,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,81.5,9.584002,1.386294,2.465484,1 +11,6,0,1,3,631532,0,14529.44,14.13689,1,12,1,4.152249,0,0,0,0,4.152249,0,0,0,1,0,4,83.3,10.57626,0,81.5,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,81.5,9.584002,1.386294,1.42365,1 +11,6,0,1,1,631533,0,14529.44,10.39562,0,12,1,72.36564,0,0,0,368.5992,440.9649,1,0,0,3,0,4,66.7,10.57626,0,81.5,0,60,1,0,1.386294,4.094345,0,0,0,0,0,0,81.5,9.584002,1.386294,6.088965,1 +11,6,0,1,2,631533,0,14529.44,11.39562,0,12,1,128.7016,0,13.28778,0,0,141.9894,0,0,0,2,13,4,66.7,10.57626,0,81.5,0,60,1,0,1.386294,4.094345,0,0,0,0,0,0,81.5,9.584002,1.386294,4.955752,1 +11,6,0,1,3,631533,0,14529.44,12.39562,0,12,1,32.17993,5.103806,0,0,0,37.28374,0,0,0,4,0,4,66.7,10.57626,0,81.5,0,60,1,0,1.386294,4.094345,0,0,0,0,0,0,81.5,9.584002,1.386294,3.618557,1 +11,6,0,0,1,631536,.5112414,6247.824,60.87885,1,12,1,41.8959,5.471858,0,0,0,47.36775,0,0,0,3,0,2,89.9,20.7,0,84.1,0,86.4,0,0,.6931472,4.458988,0,0,0,0,0,0,84.1,8.740149,.6931472,3.857942,1 +11,6,0,0,2,631536,.5112414,6247.824,61.87885,1,12,1,29.2331,9.635535,41.76158,0,0,80.63022,0,0,0,3,1,2,89.9,20.7,0,84.1,0,86.4,0,0,.6931472,4.458988,0,0,0,0,0,0,84.1,8.740149,.6931472,4.389874,1 +11,6,0,0,3,631536,.5112414,6247.824,62.87885,1,12,1,23.18339,4.84083,0,0,0,28.02422,0,0,0,5,0,2,89.9,20.7,0,84.1,0,86.4,0,0,.6931472,4.458988,0,0,0,0,0,0,84.1,8.740149,.6931472,3.333069,1 +11,6,0,0,1,631537,.5112414,6247.824,17.21561,0,12,1,101.1426,0,0,0,0,101.1426,0,0,0,4,0,2,84.6,10.3,0,79.5,0,86.4,1,0,.6931472,4.458988,0,0,0,0,0,0,79.5,8.740149,.6931472,4.616531,1 +11,6,0,0,2,631537,.5112414,6247.824,18.21561,0,12,1,26.57555,6.58694,0,0,0,33.16249,0,0,0,4,0,2,84.6,10.3,0,79.5,0,86.4,0,0,.6931472,4.458988,0,0,0,0,0,0,79.5,8.740149,.6931472,3.50142,1 +11,6,0,0,3,631537,.5112414,6247.824,19.21561,0,12,1,14.53287,0,0,0,0,14.53287,0,0,0,2,0,2,84.6,10.3,0,79.5,0,86.4,0,0,.6931472,4.458988,0,0,0,0,0,0,79.5,8.740149,.6931472,2.676413,1 +11,6,0,0,1,631540,.5112414,6735.316,2.340863,1,7,1,30.0125,4.376824,0,0,0,34.38933,0,0,0,3,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,8.815269,1.386294,3.537746,1 +11,6,0,0,2,631540,.5112414,6735.316,3.340863,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,8.815269,1.386294,,0 +11,6,0,0,3,631540,.5112414,6735.316,4.340862,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,8.815269,1.386294,,0 +17,6,25,0,1,631561,0,7391.193,17.88912,1,16,1,25.2419,1.682793,35.1788,0,0,62.10349,0,0,0,2,0,5,72.3,13.8,0,80.7,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,80.7,8.908179,1.609438,4.128802,1 +17,6,25,0,2,631561,0,7391.193,18.88912,1,16,1,0,0,0,0,0,0,0,0,0,0,0,5,72.3,13.8,0,80.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,80.7,8.908179,1.609438,,0 +17,6,25,0,3,631561,0,7391.193,19.88912,1,16,1,0,0,38.5283,0,0,38.5283,0,0,0,0,0,5,72.3,13.8,0,80.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,80.7,8.908179,1.609438,3.651393,1 +17,6,25,0,1,631562,0,7391.193,12.28747,0,16,1,56.37358,6.205301,0,0,301.83,364.4089,1,0,0,1,0,5,80,10.57626,0,88.9,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.908179,1.609438,5.898277,1 +17,6,25,0,2,631562,0,7391.193,13.28747,0,16,1,142.0476,0,0,0,0,142.0476,0,0,0,2,0,5,80,10.57626,0,88.9,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.908179,1.609438,4.956162,1 +17,6,25,0,3,631562,0,7391.193,14.28747,0,16,1,0,3.413379,0,0,0,3.413379,0,0,0,0,0,5,80,10.57626,0,88.9,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.908179,1.609438,1.227703,1 +17,6,25,0,1,631563,0,7391.193,41.41547,0,15,1,135.0442,0,0,0,0,135.0442,0,0,0,3,0,5,86.2,0,0,97.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,97.7,8.908179,1.609438,4.905602,1 +17,6,25,0,2,631563,0,7391.193,42.41547,0,15,1,0,7.347941,0,0,0,7.347941,0,0,0,0,0,5,86.2,0,0,97.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,97.7,8.908179,1.609438,1.99442,1 +17,6,25,0,3,631563,0,7391.193,43.41547,0,15,1,73.41338,11.73242,0,0,0,85.1458,0,0,0,6,0,5,86.2,0,0,97.7,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,97.7,8.908179,1.609438,4.444365,1 +17,6,25,0,1,631564,0,7391.193,38.58727,1,16,1,45.01472,41.12326,36.86159,0,0,122.9996,0,0,0,5,0,5,65.4,24.1,0,61.4,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,61.4,8.908179,1.609438,4.812181,1 +17,6,25,0,2,631564,0,7391.193,39.58727,1,16,1,25.31167,11.37136,0,0,0,36.68304,0,0,0,3,0,5,65.4,24.1,0,61.4,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,61.4,8.908179,1.609438,3.602314,1 +17,6,25,0,3,631564,0,7391.193,40.58727,1,16,1,83.36192,19.60549,48.02744,0,0,150.9949,0,0,0,2,1,5,65.4,24.1,0,61.4,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,61.4,8.908179,1.609438,5.017246,1 +17,6,25,0,1,631565,0,7391.193,16.39973,1,16,1,0,7.623055,0,0,0,7.623055,0,0,0,0,0,5,72.3,10.3,0,75,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,75,8.908179,1.609438,2.031177,1 +17,6,25,0,2,631565,0,7391.193,17.39973,1,16,1,13.22252,9.236872,0,0,0,22.45939,0,0,0,1,0,5,72.3,10.3,0,75,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,75,8.908179,1.609438,3.111709,1 +17,6,25,0,3,631565,0,7391.193,18.39973,1,16,1,0,3.773585,0,0,0,3.773585,0,0,0,0,0,5,72.3,10.3,0,75,750,750,0,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,75,8.908179,1.609438,1.328025,1 +19,6,25,0,1,631567,0,5479.263,11.27173,0,12,1,13.9653,0,0,0,0,13.9653,0,0,0,0,0,6,75,10.57626,0,81.5,696.3,884,1,0,1.791759,6.784457,0,3.258096,7.932075,0,0,0,81.5,8.608909,1.791759,2.636576,1 +19,6,25,0,2,631567,0,5479.263,12.27173,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,75,10.57626,0,81.5,696.3,884,1,0,1.791759,6.784457,0,3.258096,7.932075,0,0,0,81.5,8.608909,1.791759,,0 +19,6,25,0,3,631567,0,5479.263,13.27173,0,12,1,70.93426,0,0,0,0,70.93426,0,0,0,1,0,8,75,10.57626,0,81.5,696.3,884,1,0,2.079442,6.784457,0,3.258096,7.932075,0,0,0,81.5,8.608909,2.079442,4.261754,1 +19,6,25,0,1,631569,0,5479.263,16.39425,1,12,1,41.04951,0,0,0,0,41.04951,0,0,0,3,0,6,41.5,10.3,1,45.5,696.3,884,1,1,1.791759,6.784457,0,3.258096,7.932075,0,0,0,45.5,8.608909,1.791759,3.714779,1 +19,6,25,0,2,631569,0,5479.263,17.39425,1,12,1,52.01215,1.932422,30.75171,0,0,84.69628,0,0,0,1,1,6,41.5,10.3,1,45.5,696.3,884,1,1,1.791759,6.784457,0,3.258096,7.932075,0,0,0,45.5,8.608909,1.791759,4.439072,1 +19,6,25,0,3,631569,0,5479.263,18.39425,1,12,1,26.6436,0,0,0,0,26.6436,0,0,0,2,0,8,41.5,10.3,1,45.5,696.3,884,0,0,2.079442,6.784457,0,3.258096,7.932075,0,0,0,45.5,8.608909,2.079442,3.282549,1 +19,6,25,0,1,631570,0,5479.263,17.92471,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,75,3.4,0,76.1,696.3,884,1,0,1.791759,6.784457,0,3.258096,7.932075,1,0,0,76.1,8.608909,1.791759,,0 +19,6,25,0,2,631570,0,5479.263,18.92471,0,12,1,6.454062,1.719818,0,0,0,8.17388,0,0,0,1,0,6,75,3.4,0,76.1,696.3,884,0,0,1.791759,6.784457,0,3.258096,7.932075,1,0,0,76.1,8.608909,1.791759,2.100944,1 +19,6,25,0,3,631570,0,5479.263,19.92471,0,12,1,0,0,0,0,0,0,0,0,0,0,0,8,75,3.4,0,76.1,696.3,884,0,0,2.079442,6.784457,0,3.258096,7.932075,1,0,0,76.1,8.608909,2.079442,,0 +19,6,25,0,1,631571,0,5479.263,39.42231,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,58,10.3,0,63.6,696.3,884,0,0,1.791759,6.784457,0,3.258096,7.932075,1,0,0,63.6,8.608909,1.791759,,0 +19,6,25,0,2,631571,0,5479.263,40.42231,1,12,1,7.593014,6.753986,0,0,2041.002,2055.349,3,1,0,0,0,6,58,10.3,0,63.6,696.3,884,0,0,1.791759,6.784457,0,3.258096,7.932075,1,0,0,63.6,8.608909,1.791759,7.628201,1 +19,6,25,0,3,631571,0,5479.263,41.42231,1,12,1,13.84083,4.065744,0,0,0,17.90657,0,0,0,1,0,8,58,10.3,0,63.6,696.3,884,0,0,2.079442,6.784457,0,3.258096,7.932075,1,0,0,63.6,8.608909,2.079442,2.885168,1 +19,6,25,0,1,631572,0,5479.263,8.109514,1,12,1,117.2239,0,0,0,0,117.2239,0,0,0,1,0,6,76.7,10.57626,0,81.5,696.3,884,1,1,1.791759,6.784457,0,3.258096,7.932075,0,0,0,81.5,8.608909,1.791759,4.764085,1 +19,6,25,0,2,631572,0,5479.263,9.109514,1,12,1,25.05695,0,3.796507,0,0,28.85345,0,0,0,2,0,6,76.7,10.57626,0,81.5,696.3,884,1,1,1.791759,6.784457,0,3.258096,7.932075,0,0,0,81.5,8.608909,1.791759,3.36223,1 +19,6,25,0,3,631572,0,5479.263,10.10951,1,12,1,28.02768,3.280277,0,0,0,31.30796,0,0,0,2,0,8,76.7,10.57626,0,81.5,696.3,884,1,1,2.079442,6.784457,0,3.258096,7.932075,0,0,0,81.5,8.608909,2.079442,3.443872,1 +19,6,25,0,1,631573,0,5479.263,13.40726,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,70,10.57626,0,63,696.3,884,1,1,1.791759,6.784457,0,3.258096,7.932075,0,0,0,63,8.608909,1.791759,,0 +19,6,25,0,2,631573,0,5479.263,14.40726,1,12,1,30.75171,24.04328,0,0,1713.743,1768.538,1,0,0,1,0,6,70,10.57626,0,63,696.3,884,1,1,1.791759,6.784457,0,3.258096,7.932075,0,0,0,63,8.608909,1.791759,7.477909,1 +19,6,25,0,3,631573,0,5479.263,15.40726,1,12,1,85.12111,15.79931,0,0,0,100.9204,0,0,0,6,0,8,70,10.57626,0,63,696.3,884,1,1,2.079442,6.784457,0,3.258096,7.932075,0,0,0,63,8.608909,2.079442,4.614332,1 +13,6,0,1,1,631598,1,6735.316,25.53046,0,12,1,0,0,0,0,0,0,0,0,0,0,0,3,88.5,0,0,81.8,450,150,0,0,1.098612,5.010635,1,4.564348,6.160541,0,0,0,81.8,8.815269,1.098612,,0 +13,6,0,1,2,631598,1,6735.316,26.53046,0,12,1,51.75671,0,0,0,0,51.75671,0,0,0,0,0,3,88.5,0,0,81.8,450,150,0,0,1.098612,5.010635,1,4.564348,6.160541,0,0,0,81.8,8.815269,1.098612,3.946554,1 +13,6,0,1,3,631598,1,6735.316,27.53046,0,12,1,23.32762,0,0,0,0,23.32762,0,0,0,0,0,3,88.5,0,0,81.8,450,150,0,0,1.098612,5.010635,1,4.564348,6.160541,0,0,0,81.8,8.815269,1.098612,3.149638,1 +7,6,25,1,1,631600,1,4681.525,.4791239,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,88.9,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.451592,1.386294,,0 +7,6,25,1,2,631600,1,4681.525,1.479124,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,88.9,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.451592,1.386294,,0 +7,6,25,1,3,631600,1,4681.525,2.479124,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,88.9,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.451592,1.386294,,0 +7,6,25,1,4,631600,1,4681.525,3.479124,1,11,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,88.9,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.451592,1.386294,,0 +7,6,25,1,5,631600,1,4681.525,4.479124,1,11,1,12.17862,4.364006,0,0,0,16.54263,0,0,0,0,0,4,77.40034,10.57626,0,88.9,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,88.9,8.451592,1.386294,2.80594,1 +13,6,0,1,1,631601,1,4247.507,.4599589,1,3,1,4.914005,2.579853,0,0,0,7.493857,0,0,0,1,0,7,77.40034,10.57626,0,77.8,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.354323,1.94591,2.014084,1 +13,6,0,1,2,631601,1,4247.507,1.459959,1,3,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,77.8,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.354323,1.94591,,0 +13,6,0,1,3,631601,1,4247.507,2.459959,1,3,1,20.84202,0,0,0,0,20.84202,0,0,0,0,0,7,77.40034,10.57626,0,77.8,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.354323,1.94591,3.036971,1 +13,6,0,1,4,631601,1,4247.507,3.459959,1,3,1,10.50263,0,0,0,0,10.50263,0,0,0,0,0,7,77.40034,10.57626,0,77.8,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.354323,1.94591,2.351625,1 +13,6,0,1,5,631601,1,4247.507,4.459959,1,3,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,77.8,450,450,1,1,1.94591,6.109248,1,4.564348,6.160541,0,0,0,77.8,8.354323,1.94591,,0 +13,6,0,1,1,631602,1,4247.507,56.78302,0,5,1,0,0,0,0,0,0,0,0,0,0,0,7,84,10.3,1,59.1,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,59.1,8.354323,1.94591,,0 +13,6,0,1,2,631602,1,4247.507,57.78302,0,5,1,0,0,0,0,0,0,0,0,0,0,0,7,84,10.3,1,59.1,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,59.1,8.354323,1.94591,,0 +13,6,0,1,3,631602,1,4247.507,58.78302,0,5,1,0,0,0,0,0,0,0,0,0,0,0,7,84,10.3,1,59.1,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,59.1,8.354323,1.94591,,0 +13,6,0,1,4,631602,1,4247.507,59.78302,0,5,1,0,0,0,0,0,0,0,0,0,0,0,7,84,10.3,1,59.1,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,59.1,8.354323,1.94591,,0 +13,6,0,1,5,631602,1,4247.507,60.78302,0,5,.9835616,68.33559,10.62585,0,0,8533.153,8612.114,4,0,0,4,0,7,84,10.3,1,59.1,450,450,0,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,59.1,8.354323,1.94591,9.060925,1 +13,6,0,1,1,631603,1,0,2.121834,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,88.9,450,0,1,0,1.609438,0,1,4.564348,6.160541,0,0,0,88.9,0,1.609438,,0 +13,6,0,1,2,631603,1,0,3.121834,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,88.9,450,0,1,0,1.609438,0,1,4.564348,6.160541,0,0,0,88.9,0,1.609438,,0 +13,6,0,1,3,631603,1,0,4.121834,0,9,1,63.41463,1.376307,0,0,0,64.79094,0,0,0,1,0,5,77.40034,10.57626,0,88.9,450,0,1,0,1.609438,0,1,4.564348,6.160541,0,0,0,88.9,0,1.609438,4.171166,1 +13,6,0,1,1,631604,1,0,2.121834,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,85.2,450,0,1,0,1.609438,0,1,4.564348,6.160541,0,0,0,85.2,0,1.609438,,0 +13,6,0,1,2,631604,1,0,3.121834,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,85.2,450,0,1,0,1.609438,0,1,4.564348,6.160541,0,0,0,85.2,0,1.609438,,0 +13,6,0,1,3,631604,1,0,4.121834,0,9,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,85.2,450,0,1,0,1.609438,0,1,4.564348,6.160541,0,0,0,85.2,0,1.609438,,0 +10,6,50,1,1,631610,1,5414.076,.1916496,0,11,1,15.72482,4.299754,0,0,0,20.02457,0,0,0,3,0,5,77.40034,10.57626,0,74.1,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,74.1,8.596942,1.609438,2.99696,1 +10,6,50,1,2,631610,1,5414.076,1.19165,0,11,1,10.93892,8.090246,0,0,0,19.02917,0,0,0,2,0,5,77.40034,10.57626,0,74.1,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,74.1,8.596942,1.609438,2.945973,1 +10,6,50,1,3,631610,1,5414.076,2.191649,0,11,1,18.34097,3.126303,0,0,0,21.46728,0,0,0,2,0,5,77.40034,10.57626,0,74.1,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,74.1,8.596942,1.609438,3.06653,1 +10,6,50,1,4,631610,1,5414.076,3.191649,0,11,1,4.501125,0,0,0,0,4.501125,0,0,0,1,0,5,77.40034,10.57626,0,74.1,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,74.1,8.596942,1.609438,1.504327,1 +10,6,50,1,5,631610,1,5414.076,4.191649,0,11,1,9.133965,1.860622,0,0,0,10.99459,0,0,0,2,0,5,77.40034,10.57626,0,74.1,1000,1000,1,0,1.609438,6.907755,0,3.931826,7.600903,0,0,0,74.1,8.596942,1.609438,2.397403,1 +13,6,0,1,1,631613,1,6906.158,.7282683,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,96.3,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.840314,1.791759,,0 +13,6,0,1,2,631613,1,6906.158,1.728268,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,96.3,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.840314,1.791759,,0 +13,6,0,1,3,631613,1,6906.158,2.728268,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,96.3,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.840314,1.791759,,0 +13,6,0,1,4,631613,1,6906.158,3.728268,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,96.3,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.840314,1.791759,,0 +13,6,0,1,5,631613,1,6906.158,4.728268,1,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,96.3,450,450,1,1,1.791759,6.109248,1,4.564348,6.160541,0,0,0,96.3,8.840314,1.791759,,0 +13,6,0,1,1,631616,0,2938.856,19.41684,0,12,1,57.98526,0,0,0,0,57.98526,0,0,0,4,1,1,56.4,6.9,0,55.7,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,55.7,7.986116,0,4.060189,1 +13,6,0,1,2,631616,0,2938.856,20.41684,0,12,1,0,0,29.38924,0,0,29.38924,0,0,0,0,0,1,56.4,6.9,0,55.7,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,55.7,7.986116,0,3.380629,1 +13,6,0,1,3,631616,0,2938.856,21.41684,0,12,1,31.67987,0,11.25469,0,0,42.93456,0,0,0,0,1,1,56.4,6.9,0,55.7,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,55.7,7.986116,0,3.759677,1 +13,6,0,1,4,631616,0,2938.856,22.41684,0,12,1,0,0,10.53263,0,0,10.53263,0,0,0,0,0,1,56.4,6.9,0,55.7,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,55.7,7.986116,0,2.354478,1 +13,6,0,1,5,631616,0,2938.856,23.41684,0,12,1,24.35724,0,0,0,0,24.35724,0,0,0,1,0,1,56.4,6.9,0,55.7,150,0,0,0,0,0,1,4.564348,5.061929,0,0,0,55.7,7.986116,0,3.192829,1 +11,6,0,1,1,631617,1,10933.14,5.645448,0,7,1,0,2.810811,0,0,0,2.810811,0,0,0,0,0,4,77.40034,10.57626,.1442925,,0,424.32,1,0,1.386294,6.050488,0,0,0,0,0,0,70.68995,9.299645,1.386294,1.033473,1 +11,6,0,1,2,631617,1,10933.14,6.645448,0,7,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,.1442925,,0,424.32,1,0,1.791759,6.050488,0,0,0,0,0,0,70.68995,9.299645,1.791759,,0 +11,6,0,1,3,631617,1,10933.14,7.645448,0,7,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,0,424.32,1,0,1.94591,6.050488,0,0,0,0,0,0,70.68995,9.299645,1.94591,,0 +11,6,0,1,4,631617,1,10933.14,8.645449,0,7,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,.1442925,,0,424.32,1,0,2.079442,6.050488,0,0,0,0,0,0,70.68995,9.299645,2.079442,,0 +11,6,0,1,5,631617,1,10933.14,9.645449,0,7,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,.1442925,,0,424.32,1,0,2.079442,6.050488,0,0,0,0,0,0,70.68995,9.299645,2.079442,,0 +11,6,0,1,1,631618,1,10933.14,24.20534,1,11,1,0,0,0,0,332.6781,332.6781,1,0,0,0,0,4,77.40034,20.7,.1442925,,0,424.32,0,0,1.386294,6.050488,0,0,0,0,0,0,70.68995,9.299645,1.386294,5.807176,1 +11,6,0,1,2,631618,1,10933.14,25.20534,1,11,1,8.204193,11.45852,0,0,353.2361,372.8988,1,0,0,0,0,6,77.40034,20.7,.1442925,,0,424.32,0,0,1.791759,6.050488,0,0,0,0,0,0,70.68995,9.299645,1.791759,5.921307,1 +11,6,0,1,3,631618,1,10933.14,26.20534,1,11,1,8.336807,9.012089,0,0,535.6398,552.9888,1,0,0,0,0,7,77.40034,20.7,.1442925,,0,424.32,0,0,1.94591,6.050488,0,0,0,0,0,0,70.68995,9.299645,1.94591,6.315338,1 +11,6,0,1,4,631618,1,10933.14,27.20534,1,11,1,88.14703,3.132033,22.50563,0,0,113.7847,0,0,0,4,0,8,77.40034,20.7,.1442925,,0,424.32,0,0,2.079442,6.050488,0,0,0,0,0,0,70.68995,9.299645,2.079442,4.734308,1 +11,6,0,1,5,631618,1,10933.14,28.20534,1,11,1,75.77808,45.53451,0,0,0,121.3126,0,0,0,9,0,8,77.40034,20.7,.1442925,,0,424.32,0,0,2.079442,6.050488,0,0,0,0,0,0,70.68995,9.299645,2.079442,4.79837,1 +13,6,0,0,1,631622,1,6735.316,2.132786,1,12,1,29.44888,0,0,0,0,29.44888,0,0,0,0,0,3,77.40034,10.57626,.1442925,,450,150,1,1,1.098612,5.010635,1,4.564348,6.160541,0,0,0,70.68995,8.815269,1.098612,3.382656,1 +13,6,0,0,2,631622,1,6735.316,3.132786,1,12,1,11.33358,0,0,0,0,11.33358,0,0,0,0,0,3,77.40034,10.57626,.1442925,,450,150,1,1,1.098612,5.010635,1,4.564348,6.160541,0,0,0,70.68995,8.815269,1.098612,2.42777,1 +13,6,0,0,3,631622,1,6735.316,4.132786,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,450,150,1,1,1.098612,5.010635,1,4.564348,6.160541,0,0,0,70.68995,8.815269,1.098612,,0 +11,6,0,1,1,631623,.5112414,6735.316,24.83504,1,12,1,24.67035,24.15142,40.83369,0,0,89.65546,0,0,0,1,1,3,76.1,13.8,0,73.9,0,0,0,0,1.098612,0,0,0,0,0,0,0,73.9,8.815269,1.098612,4.495974,1 +11,6,0,1,2,631623,.5112414,6735.316,25.83504,1,12,1,17.17557,51.79008,0,0,449.6183,518.584,1,0,0,1,0,3,76.1,13.8,0,73.9,0,0,0,0,1.098612,0,0,0,0,0,0,0,73.9,8.815269,1.098612,6.251102,1 +11,6,0,1,3,631623,.5112414,6735.316,26.83504,1,12,1,137.9791,96.85017,33.44948,0,0,268.2787,0,0,0,13,1,4,76.1,13.8,0,73.9,0,0,0,0,1.386294,0,0,0,0,0,0,0,73.9,8.815269,1.386294,5.592027,1 +11,6,0,1,1,631624,.5112414,6735.316,23.16222,0,8,1,11.48448,3.721821,0,0,0,15.2063,0,0,0,0,0,3,83,0,0,73.9,0,0,0,0,1.098612,0,0,0,0,0,0,0,73.9,8.815269,1.098612,2.721709,1 +11,6,0,1,2,631624,.5112414,6735.316,24.16222,0,8,1,10.68702,1.866412,0,0,0,12.55344,0,0,0,0,0,3,83,0,0,73.9,0,0,0,0,1.098612,0,0,0,0,0,0,0,73.9,8.815269,1.098612,2.529994,1 +11,6,0,1,3,631624,.5112414,6735.316,25.16222,0,8,1,13.93728,5.383275,0,0,0,19.32056,0,0,0,2,0,4,83,0,0,73.9,0,0,0,0,1.386294,0,0,0,0,0,0,0,73.9,8.815269,1.386294,2.96117,1 +11,6,0,1,1,631625,.5112414,6735.316,4.692676,1,12,1,19.14079,5.6359,0,0,0,24.77669,0,0,0,3,0,3,77.40034,10.57626,0,88.9,0,0,1,1,1.098612,0,0,0,0,0,0,0,88.9,8.815269,1.098612,3.209903,1 +11,6,0,1,2,631625,.5112414,6735.316,5.692676,1,12,1,51.52672,20.69466,24.80916,0,0,97.03053,0,0,0,9,1,3,77.40034,10.57626,0,88.9,0,0,1,1,1.098612,0,0,0,0,0,0,0,88.9,8.815269,1.098612,4.575026,1 +11,6,0,1,3,631625,.5112414,6735.316,6.692676,1,12,1,43.90244,10.14634,10.45296,0,0,64.50174,0,0,0,6,1,4,77.40034,10.57626,0,88.9,0,0,1,1,1.386294,0,0,0,0,0,0,0,88.9,8.815269,1.386294,4.166692,1 +11,6,0,1,1,631626,.5112414,0,.2710472,0,11,1,40.63429,11.49653,0,0,0,52.13082,0,0,0,3,0,2,77.40034,10.57626,0,100,0,0,1,0,.6931472,0,0,0,0,0,0,0,100,0,.6931472,3.953756,1 +11,6,0,1,2,631626,.5112414,0,1.271047,0,11,1,27.99449,15.48876,0,0,0,43.48325,0,0,0,4,0,2,77.40034,10.57626,0,100,0,0,1,0,.6931472,0,0,0,0,0,0,0,100,0,.6931472,3.772376,1 +11,6,0,1,3,631626,.5112414,0,2.271047,0,11,1,32.39377,11.04333,0,0,0,43.43711,0,0,0,4,0,2,77.40034,10.57626,0,100,0,0,1,0,.6931472,0,0,0,0,0,0,0,100,0,.6931472,3.771314,1 +11,6,0,1,4,631626,.5112414,0,3.271047,0,11,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,0,100,0,0,1,0,.6931472,0,0,0,0,0,0,0,100,0,.6931472,,0 +11,6,0,1,5,631626,.5112414,0,4.271047,0,11,1,67.23842,11.25214,0,0,0,78.49056,0,0,0,5,0,2,77.40034,10.57626,0,100,0,0,1,0,.6931472,0,0,0,0,0,0,0,100,0,.6931472,4.362978,1 +7,6,25,1,1,631632,1,3338.966,2.590007,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,92.6,720,720,1,1,1.609438,6.579251,0,3.258096,7.965546,0,0,0,92.6,8.113716,1.609438,,0 +7,6,25,1,2,631632,1,3338.966,3.590007,1,8,1,7.555724,0,0,0,0,7.555724,0,0,0,1,0,5,77.40034,10.57626,0,92.6,720,720,1,1,1.609438,6.579251,0,3.258096,7.965546,0,0,0,92.6,8.113716,1.609438,2.022305,1 +7,6,25,1,3,631632,1,3338.966,4.590007,1,8,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,92.6,720,720,1,1,1.609438,6.579251,0,3.258096,7.965546,0,0,0,92.6,8.113716,1.609438,,0 +14,6,95,1,1,631633,1,0,24.67077,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,62.2,6.9,0,79.5,225,174.25,0,0,1.386294,5.160491,0,4.564348,5.467394,0,0,0,79.5,0,1.386294,,0 +14,6,95,1,2,631633,1,0,25.67077,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,62.2,6.9,0,79.5,225,174.25,0,0,1.386294,5.160491,0,4.564348,5.467394,0,0,0,79.5,0,1.386294,,0 +14,6,95,1,3,631633,1,0,26.67077,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,62.2,6.9,0,79.5,225,174.25,0,0,.6931472,5.160491,0,4.564348,5.467394,0,0,0,79.5,0,.6931472,,0 +14,6,95,1,4,631633,1,0,27.67077,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,62.2,6.9,0,79.5,225,174.25,0,0,.6931472,5.160491,0,4.564348,5.467394,0,0,0,79.5,0,.6931472,,0 +14,6,95,1,5,631633,1,0,28.67077,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,62.2,6.9,0,79.5,225,174.25,0,0,.6931472,5.160491,0,4.564348,5.467394,0,0,0,79.5,0,.6931472,,0 +11,6,0,0,2,631635,0,11349.56,.6988364,1,15,1,43.13905,28.47178,0,0,0,71.61083,0,0,0,8,0,3,77.40034,10.57626,.1442925,,0,60,1,1,1.098612,4.094345,0,0,0,0,0,0,70.68995,9.337023,1.098612,4.271246,1 +11,6,0,0,3,631635,0,11349.56,1.698836,1,15,1,10.93816,5.258729,0,0,0,16.19689,0,0,0,2,0,3,77.40034,10.57626,.1442925,,0,60,1,1,1.098612,4.094345,0,0,0,0,0,0,70.68995,9.337023,1.098612,2.784819,1 +11,6,0,0,4,631635,0,11349.56,2.698836,1,15,1,11.33358,4.004533,0,0,0,15.33812,0,0,0,2,0,3,77.40034,10.57626,.1442925,,0,60,1,1,1.098612,4.094345,0,0,0,0,0,0,70.68995,9.337023,1.098612,2.730341,1 +11,6,0,0,5,631635,0,11349.56,3.698836,1,15,1,23.32762,9.231561,0,0,0,32.55918,0,0,0,2,0,3,77.40034,10.57626,.1442925,,0,60,1,1,1.098612,4.094345,0,0,0,0,0,0,70.68995,9.337023,1.098612,3.483059,1 +16,6,95,0,1,631636,1,6735.316,2.075291,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,74.1,1000,263.18,1,1,1.609438,5.572838,0,4.564348,6.959049,0,0,0,74.1,8.815269,1.609438,,0 +16,6,95,0,2,631636,1,6735.316,3.075291,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,74.1,1000,263.18,1,1,1.609438,5.572838,0,4.564348,6.959049,0,0,0,74.1,8.815269,1.609438,,0 +16,6,95,0,3,631636,1,6735.316,4.075291,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,74.1,1000,263.18,1,1,1.609438,5.572838,0,4.564348,6.959049,0,0,0,74.1,8.815269,1.609438,,0 +11,6,0,0,1,631645,.5112414,2697.901,7.759069,1,10.62774,1,7.993269,5.363904,0,0,0,13.35717,0,0,0,1,0,2,76.7,10.57626,.1442925,74.1,0,0,1,1,.6931472,0,0,0,0,0,0,0,74.1,7.9006,.6931472,2.592054,1 +11,6,0,0,2,631645,.5112414,2697.901,8.759069,1,10.62774,1,27.20061,11.79071,0,0,0,38.99131,0,0,0,4,0,2,76.7,10.57626,.1442925,74.1,0,0,1,1,.6931472,0,0,0,0,0,0,0,74.1,7.9006,.6931472,3.663339,1 +11,6,0,0,3,631645,.5112414,2697.901,9.759069,1,10.62774,1,21.61235,4.291595,24.01372,0,0,49.91767,0,0,0,2,1,2,76.7,10.57626,.1442925,74.1,0,0,1,1,.6931472,0,0,0,0,0,0,0,74.1,7.9006,.6931472,3.910375,1 +11,6,0,0,1,631646,.5112414,2697.901,26.96235,1,10.62774,1,118.6369,34.95583,0,0,0,153.5928,0,0,0,6,0,2,58.5,13.8,1,53.4,0,0,0,0,.6931472,0,0,0,0,0,0,0,53.4,7.9006,.6931472,5.034305,1 +11,6,0,0,2,631646,.5112414,2697.901,27.96235,1,10.62774,1,56.29014,42.42916,0,0,0,98.71931,0,0,0,4,0,2,58.5,13.8,1,53.4,0,0,0,0,.6931472,0,0,0,0,0,0,0,53.4,7.9006,.6931472,4.59228,1 +11,6,0,0,3,631646,.5112414,2697.901,28.96235,1,10.62774,1,158.8336,18.18868,26.07204,0,1230.189,1443.575,1,0,0,5,1,2,58.5,13.8,1,53.4,0,0,0,0,.6931472,0,0,0,0,0,0,0,53.4,7.9006,.6931472,7.274878,1 +14,6,95,0,2,631652,1,3984.164,.9698836,1,11,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,.1442925,,294,409.6,1,1,1.609438,6.015181,0,4.564348,5.734873,0,0,0,70.68995,8.290334,1.609438,,0 +14,6,95,0,3,631652,1,3984.164,1.969884,1,11,1,10.09676,0,0,0,0,10.09676,0,0,0,0,0,6,77.40034,10.57626,.1442925,,294,409.6,1,1,1.791759,6.015181,0,4.564348,5.734873,0,0,0,70.68995,8.290334,1.791759,2.312215,1 +14,6,95,0,4,631652,1,3984.164,2.969884,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,.1442925,,294,409.6,1,1,1.791759,6.015181,0,4.564348,5.734873,0,0,0,70.68995,8.290334,1.791759,,0 +14,6,95,0,5,631652,1,3984.164,3.969884,1,11,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,.1442925,,294,409.6,1,1,1.791759,6.015181,0,4.564348,5.734873,0,0,0,70.68995,8.290334,1.791759,,0 +13,6,0,0,1,631656,1,6735.316,2.042437,1,12,1,10.00417,3.751563,0,0,0,13.75573,0,0,0,2,0,10,77.40034,10.57626,0,85.2,450,150,1,1,2.302585,5.010635,1,4.564348,6.160541,0,0,0,85.2,8.815269,2.302585,2.621456,1 +13,6,0,0,2,631656,1,6735.316,3.042437,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,0,85.2,450,150,1,1,2.197225,5.010635,1,4.564348,6.160541,0,0,0,85.2,8.815269,2.197225,,0 +13,6,0,0,3,631656,1,6735.316,4.042437,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,0,85.2,450,150,1,1,1.94591,5.010635,1,4.564348,6.160541,0,0,0,85.2,8.815269,1.94591,,0 +11,6,0,0,1,631657,0,9348.694,1.763176,0,12,1,170.1404,17.65206,91.21225,0,0,279.0047,0,0,0,3,28,5,77.40034,10.57626,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.143099,1.609438,5.631228,1 +11,6,0,0,2,631657,0,9348.694,2.763176,0,12,1,24.42748,3.816794,28.58015,0,0,56.82443,0,0,0,1,0,5,77.40034,10.57626,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.143099,1.609438,4.039966,1 +11,6,0,0,3,631657,0,9348.694,3.763176,0,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,0,85.2,0,0,1,0,1.609438,0,0,0,0,0,0,0,85.2,9.143099,1.609438,,0 +15,6,95,0,1,631660,1,4487.39,.054757,1,9,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,820,820,1,1,1.94591,6.709304,0,4.564348,6.760598,0,0,0,70.68995,8.409249,1.94591,,0 +15,6,95,0,2,631660,1,4487.39,1.054757,1,9,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,820,820,1,1,1.94591,6.709304,0,4.564348,6.760598,0,0,0,70.68995,8.409249,1.94591,,0 +15,6,95,0,3,631660,1,4487.39,2.054757,1,9,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,820,820,1,1,1.94591,6.709304,0,4.564348,6.760598,0,0,0,70.68995,8.409249,1.94591,,0 +11,6,0,0,2,631675,1,10875.66,.3675565,0,12,1,44.72107,18.29415,15.32503,0,0,78.34025,0,0,0,7,0,4,77.40034,10.57626,.1442925,,0,0,1,0,1.386294,0,0,0,0,0,0,0,70.68995,9.294374,1.386294,4.361062,1 +11,6,0,0,3,631675,1,10875.66,1.367556,0,12,1,140.0762,4.16843,34.32924,0,0,178.5739,0,0,0,3,12,6,77.40034,10.57626,.1442925,,0,0,1,0,1.791759,0,0,0,0,0,0,0,70.68995,9.294374,1.791759,5.185002,1 +11,6,0,0,4,631675,1,10875.66,2.367557,0,12,1,85.04176,5.618831,24.87472,0,0,115.5353,0,0,0,5,5,5,77.40034,10.57626,.1442925,,0,0,1,0,1.609438,0,0,0,0,0,0,0,70.68995,9.294374,1.609438,4.749576,1 +11,6,0,0,5,631675,1,10875.66,3.367557,0,12,1,46.36678,14.9827,25.91003,0,0,87.25951,0,0,0,4,0,5,77.40034,10.57626,.1442925,,0,0,1,0,1.609438,0,0,0,0,0,0,0,70.68995,9.294374,1.609438,4.468886,1 +16,6,95,0,1,631687,0,9686.124,27.49623,1,10.62774,1,57.21498,9.360538,0,0,104.7539,171.3294,1,0,0,4,0,2,70.7,13.8,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,79.5,9.178553,.6931472,5.143588,1 +16,6,95,0,2,631687,0,9686.124,28.49623,1,10.62774,1,63.46808,17.82395,0,0,0,81.29203,0,0,0,7,0,2,70.7,13.8,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,79.5,9.178553,.6931472,4.398048,1 +16,6,95,0,3,631687,0,9686.124,29.49623,1,10.62774,1,0,0,0,0,0,0,0,0,0,0,0,2,70.7,13.8,0,79.5,1000,1000,0,0,.6931472,6.907755,0,4.564348,6.959049,0,0,0,79.5,9.178553,.6931472,,0 +13,6,0,0,1,631693,1,9834.102,1.237509,0,13,1,81.66737,9.0302,80.39132,0,0,171.0889,0,0,0,12,0,5,77.40034,10.57626,0,44.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,44.4,9.193713,1.609438,5.142183,1 +13,6,0,0,2,631693,1,9834.102,2.237509,0,13,1,17.17557,0,13.49618,0,0,30.67175,0,0,0,3,0,5,77.40034,10.57626,0,44.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,44.4,9.193713,1.609438,3.423342,1 +13,6,0,0,3,631693,1,9834.102,3.237509,0,13,1,12.54355,0,0,0,0,12.54355,0,0,0,0,0,5,77.40034,10.57626,0,44.4,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,44.4,9.193713,1.609438,2.529207,1 +13,6,0,0,1,631694,0,7954.941,1.429158,0,13,1,31.13168,0,0,0,0,31.13168,0,0,0,0,0,4,77.40034,10.57626,0,70.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.981674,1.386294,3.438226,1 +13,6,0,0,2,631694,0,7954.941,2.429158,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,70.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.981674,1.386294,,0 +13,6,0,0,3,631694,0,7954.941,3.429158,0,13,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,70.4,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.981674,1.386294,,0 +13,6,0,0,1,631697,1,10992.32,1.149897,1,12,1,19.04359,0,0,0,0,19.04359,0,0,0,3,0,4,77.40034,10.57626,.1442925,,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.305043,1.386294,2.94673,1 +13,6,0,0,2,631697,1,10992.32,2.149897,1,12,1,4.555809,0,0,0,0,4.555809,0,0,0,1,0,4,77.40034,10.57626,.1442925,,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.305043,1.386294,1.516403,1 +13,6,0,0,3,631697,1,10992.32,3.149897,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.305043,1.386294,,0 +11,6,0,0,2,631703,0,11458.65,.1594798,1,16,1,39.18856,8.298756,0,0,0,47.48732,0,0,0,6,0,3,77.40034,10.57626,.1442925,,0,60,1,1,1.098612,4.094345,0,0,0,0,0,0,70.68995,9.346587,1.098612,3.860463,1 +11,6,0,0,3,631703,0,11458.65,1.15948,1,16,1,17.35082,10.57977,0,0,0,27.9306,0,0,0,3,0,3,77.40034,10.57626,.1442925,,0,60,1,1,1.098612,4.094345,0,0,0,0,0,0,70.68995,9.346587,1.098612,3.329723,1 +11,6,0,0,4,631703,0,11458.65,2.15948,1,16,1,15.18603,1.803341,0,0,0,16.98937,0,0,0,2,0,4,77.40034,10.57626,.1442925,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,70.68995,9.346587,1.386294,2.832588,1 +11,6,0,0,5,631703,0,11458.65,3.15948,1,16,1,31.14187,5.737024,0,0,0,36.87889,0,0,0,6,0,4,77.40034,10.57626,.1442925,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,70.68995,9.346587,1.386294,3.607639,1 +13,6,0,0,1,631704,1,9940.604,1.377139,1,10,1,28.18679,3.050063,0,0,0,31.23685,0,0,0,2,0,4,77.40034,10.57626,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.204484,1.386294,3.441599,1 +13,6,0,0,2,631704,1,9940.604,2.377139,1,10,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.204484,1.386294,,0 +13,6,0,0,3,631704,1,9940.604,3.377139,1,10,1,23.32762,0,0,0,519.7256,543.0532,1,0,0,2,0,4,77.40034,10.57626,0,88.9,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,88.9,9.204484,1.386294,6.297207,1 +13,6,0,0,2,631710,0,12312.61,.1430527,1,16,1,48.4094,11.66897,0,0,0,60.07838,0,0,0,8,0,4,77.40034,10.57626,.1442925,,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.418461,1.386294,4.09565,1 +13,6,0,0,3,631710,0,12312.61,1.143053,1,16,1,10.57977,3.427846,0,0,0,14.00762,0,0,0,2,0,4,77.40034,10.57626,.1442925,,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.418461,1.386294,2.639601,1 +13,6,0,0,4,631710,0,12312.61,2.143053,1,16,1,28.85345,8.800303,0,0,0,37.65376,0,0,0,5,0,4,77.40034,10.57626,.1442925,,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.418461,1.386294,3.628433,1 +13,6,0,0,5,631710,0,12312.61,3.143053,1,16,1,8.650519,2.00692,0,0,0,10.65744,0,0,0,1,1,4,77.40034,10.57626,.1442925,,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.418461,1.386294,2.366258,1 +6,6,25,0,1,631714,.5112414,6735.316,1.273101,0,10.5,1,50.7829,5.289886,0,0,0,56.07279,0,0,0,1,0,2,77.40034,10.57626,0,74.1,100,0,1,0,.6931472,0,0,3.258096,5.991465,0,0,0,74.1,8.815269,.6931472,4.02665,1 +6,6,25,0,2,631714,.5112414,6735.316,2.273101,0,10.5,1,45.653,3.113136,0,0,0,48.76614,0,0,0,5,0,2,77.40034,10.57626,0,74.1,100,0,1,0,.6931472,0,0,3.258096,5.991465,0,0,0,74.1,8.815269,.6931472,3.887036,1 +6,6,25,0,3,631714,.5112414,6735.316,3.273101,0,10.5,1,11.07266,7.802768,0,0,0,18.87543,0,0,0,2,0,2,77.40034,10.57626,0,74.1,100,0,1,0,.6931472,0,0,3.258096,5.991465,0,0,0,74.1,8.815269,.6931472,2.937861,1 +11,6,0,0,2,631726,1,10933.14,.9890486,1,7,1,10.93892,2.506837,0,0,0,13.44576,0,0,0,2,0,6,77.40034,10.57626,.1442925,,0,424.32,1,1,1.791759,6.050488,0,0,0,0,0,0,70.68995,9.299645,1.791759,2.598664,1 +11,6,0,0,3,631726,1,10933.14,1.989049,1,7,1,8.336807,6.531888,0,0,0,14.8687,0,0,0,2,0,7,77.40034,10.57626,.1442925,,0,424.32,1,1,1.94591,6.050488,0,0,0,0,0,0,70.68995,9.299645,1.94591,2.699258,1 +11,6,0,0,4,631726,1,10933.14,2.989048,1,7,1,20.25506,11.62791,0,0,0,31.88297,0,0,0,4,0,8,77.40034,10.57626,.1442925,,0,424.32,1,1,2.079442,6.050488,0,0,0,0,0,0,70.68995,9.299645,2.079442,3.462072,1 +11,6,0,0,5,631726,1,10933.14,3.989048,1,7,1,8.457375,2.35115,0,0,0,10.80853,0,0,0,2,0,8,77.40034,10.57626,.1442925,,0,424.32,1,1,2.079442,6.050488,0,0,0,0,0,0,70.68995,9.299645,2.079442,2.380335,1 +11,6,0,0,2,631727,1,10933.14,.9890486,1,7,1,38.28624,0,0,0,0,38.28624,0,0,0,5,0,6,77.40034,10.57626,.1442925,,0,424.32,1,1,1.791759,6.050488,0,0,0,0,0,0,70.68995,9.299645,1.791759,3.64509,1 +11,6,0,0,3,631727,1,10933.14,1.989049,1,7,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,0,424.32,1,1,1.94591,6.050488,0,0,0,0,0,0,70.68995,9.299645,1.94591,,0 +11,6,0,0,4,631727,1,10933.14,2.989048,1,7,1,19.12978,24.24231,0,0,0,43.37209,0,0,0,3,0,8,77.40034,10.57626,.1442925,,0,424.32,1,1,2.079442,6.050488,0,0,0,0,0,0,70.68995,9.299645,2.079442,3.769816,1 +11,6,0,0,5,631727,1,10933.14,3.989048,1,7,1,3.38295,2.232747,0,0,0,5.615697,0,0,0,1,0,8,77.40034,10.57626,.1442925,,0,424.32,1,1,2.079442,6.050488,0,0,0,0,0,0,70.68995,9.299645,2.079442,1.725566,1 +13,6,0,0,3,631733,0,10029.33,.9678302,0,16,1,72.94706,41.47562,0,0,544.3935,658.8162,1,0,0,14,0,3,77.40034,10.57626,.1442925,,300,349.96,1,0,1.098612,5.857819,1,4.564348,5.755076,0,0,0,70.68995,9.213368,1.098612,6.490445,1 +13,6,0,0,4,631733,0,10029.33,1.96783,0,16,1,18.37959,9.253563,14.43361,0,0,42.06676,0,0,0,4,0,4,77.40034,10.57626,.1442925,,300,349.96,1,0,1.386294,5.857819,1,4.564348,5.755076,0,0,0,70.68995,9.213368,1.386294,3.739258,1 +13,6,0,0,5,631733,0,10029.33,2.96783,0,16,1,5.074425,0,0,0,0,5.074425,0,0,0,1,0,4,77.40034,10.57626,.1442925,,300,349.96,1,0,1.386294,5.857819,1,4.564348,5.755076,0,0,0,70.68995,9.213368,1.386294,1.624213,1 +6,6,25,0,3,631736,1,1759.531,.9842573,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,750,0,1,1,1.386294,0,0,3.258096,8.006368,0,0,0,70.68995,7.473371,1.386294,,0 +6,6,25,0,4,631736,1,1759.531,1.984257,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,.1442925,,750,0,1,1,1.609438,0,0,3.258096,8.006368,0,0,0,70.68995,7.473371,1.609438,,0 +6,6,25,0,5,631736,1,1759.531,2.984257,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,.1442925,,750,0,1,1,1.609438,0,0,3.258096,8.006368,0,0,0,70.68995,7.473371,1.609438,,0 +13,6,0,0,3,631741,0,6415.836,.6913073,1,11,1,10.63377,0,0,0,0,10.63377,0,0,0,0,0,5,77.40034,10.57626,.1442925,,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.766681,1.609438,2.364035,1 +13,6,0,0,4,631741,0,6415.836,1.691307,1,11,1,16.41221,0,0,0,0,16.41221,0,0,0,1,0,5,77.40034,10.57626,.1442925,,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.766681,1.609438,2.798026,1 +13,6,0,0,5,631741,0,6415.836,2.691307,1,11,1,29.61672,0,0,0,386.7596,416.3763,1,0,0,0,0,5,77.40034,10.57626,.1442925,,450,450,1,1,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.766681,1.609438,6.03159,1 +14,6,95,0,1,631742,1,3400.922,3.030801,0,7,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,1,0,2.197225,3.883624,0,4.564348,3.934917,0,0,0,70.68995,8.132095,2.197225,,0 +14,6,95,0,2,631742,1,3400.922,4.030801,0,7,1,0,2.84738,0,0,0,2.84738,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,1,0,2.197225,3.883624,0,4.564348,3.934917,0,0,0,70.68995,8.132095,2.197225,1.046399,1 +14,6,95,0,3,631742,1,3400.922,5.030801,0,7,1,0,0,0,0,0,0,0,0,0,0,0,10,77.40034,10.57626,.1442925,,48.6,48.6,1,0,2.302585,3.883624,0,4.564348,3.934917,0,0,0,70.68995,8.132095,2.302585,,0 +14,6,95,0,1,631743,1,3400.922,1.42642,1,7,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,1,1,2.197225,3.883624,0,4.564348,3.934917,0,0,0,70.68995,8.132095,2.197225,,0 +14,6,95,0,2,631743,1,3400.922,2.42642,1,7,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,1,1,2.197225,3.883624,0,4.564348,3.934917,0,0,0,70.68995,8.132095,2.197225,,0 +14,6,95,0,3,631743,1,3400.922,3.42642,1,7,1,0,0,0,0,0,0,0,0,0,0,0,10,77.40034,10.57626,.1442925,,48.6,48.6,1,1,2.302585,3.883624,0,4.564348,3.934917,0,0,0,70.68995,8.132095,2.302585,,0 +14,6,95,0,1,631744,1,3400.922,19.71253,1,12,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,0,0,2.197225,3.883624,0,4.564348,3.934917,0,0,0,70.68995,8.132095,2.197225,,0 +14,6,95,0,2,631744,1,3400.922,20.71253,1,12,1,0,0,0,0,217.5399,217.5399,1,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,0,0,2.197225,3.883624,0,4.564348,3.934917,0,0,0,70.68995,8.132095,2.197225,5.382382,1 +14,6,95,0,3,631744,1,3400.922,21.71253,1,12,1,0,0,0,0,0,0,0,0,0,0,0,10,77.40034,10.57626,.1442925,,48.6,48.6,0,0,2.302585,3.883624,0,4.564348,3.934917,0,0,0,70.68995,8.132095,2.302585,,0 +14,6,95,0,1,631745,1,3400.922,2.836413,0,7,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,1,0,2.197225,3.883624,0,4.564348,3.934917,0,0,0,70.68995,8.132095,2.197225,,0 +14,6,95,0,2,631745,1,3400.922,3.836413,0,7,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,48.6,48.6,1,0,2.197225,3.883624,0,4.564348,3.934917,0,0,0,70.68995,8.132095,2.197225,,0 +14,6,95,0,3,631745,1,3400.922,4.836413,0,7,1,0,0,0,0,0,0,0,0,0,0,0,10,77.40034,10.57626,.1442925,,48.6,48.6,1,0,2.302585,3.883624,0,4.564348,3.934917,0,0,0,70.68995,8.132095,2.302585,,0 +6,6,25,0,1,631749,0,12762.93,2.288843,0,12,1,34.27846,0,0,0,0,34.27846,0,0,0,3,0,3,77.40034,10.57626,0,88.9,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,88.9,9.454378,1.098612,3.534517,1 +6,6,25,0,2,631749,0,12762.93,3.288843,0,12,1,25.05695,0,13.81929,0,0,38.87623,0,0,0,3,0,3,77.40034,10.57626,0,88.9,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,88.9,9.454378,1.098612,3.660383,1 +6,6,25,0,3,631749,0,12762.93,4.288843,0,12,1,5.882353,0,0,0,0,5.882353,0,0,0,1,0,5,77.40034,10.57626,0,88.9,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,88.9,9.454378,1.609438,1.771957,1 +11,6,0,0,1,631754,1,6735.316,2.748802,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,0,0,1,1,1.098612,0,0,0,0,0,0,0,70.68995,8.815269,1.098612,,0 +11,6,0,0,2,631754,1,6735.316,3.748802,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,0,0,1,1,1.098612,0,0,0,0,0,0,0,70.68995,8.815269,1.098612,,0 +11,6,0,0,3,631754,1,6735.316,4.748802,1,11,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,0,0,1,1,1.098612,0,0,0,0,0,0,0,70.68995,8.815269,1.098612,,0 +13,6,0,0,1,631755,0,6907.322,1.869952,1,10,1,28.35379,11.57427,0,0,0,39.92806,0,0,0,4,0,4,77.40034,10.57626,0,70.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.840482,1.386294,3.687079,1 +13,6,0,0,2,631755,0,6907.322,2.869952,1,10,1,149.962,0,0,0,1663.25,1813.212,1,0,0,2,0,4,77.40034,10.57626,0,70.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.840482,1.386294,7.502855,1 +13,6,0,0,3,631755,0,6907.322,3.869952,1,10,1,26.29758,2.249135,0,0,427.6817,456.2284,1,0,0,4,0,4,77.40034,10.57626,0,70.4,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.4,8.840482,1.386294,6.122993,1 +14,6,95,0,1,631756,0,5339.478,1.368925,0,9,1,110.4627,26.29846,0,0,0,136.7612,0,0,0,20,0,5,77.40034,10.57626,0,81.5,308,660,1,0,1.609438,6.49224,0,4.564348,5.781393,0,0,0,81.5,8.583071,1.609438,4.918236,1 +14,6,95,0,2,631756,0,5339.478,2.368925,0,9,1,237.8094,46.31658,0,0,0,284.126,0,0,0,21,0,5,77.40034,10.57626,0,81.5,308,660,1,0,1.609438,6.49224,0,4.564348,5.781393,0,0,0,81.5,8.583071,1.609438,5.649418,1 +14,6,95,0,3,631756,0,5339.478,3.368925,0,9,1,127.1989,56.48512,0,0,0,183.684,0,0,0,28,0,5,77.40034,10.57626,0,81.5,308,660,1,0,1.609438,6.49224,0,4.564348,5.781393,0,0,0,81.5,8.583071,1.609438,5.213217,1 +11,6,0,0,1,631757,0,12691.24,1.713895,0,10,1,15.14514,2.179218,0,0,0,17.32436,0,0,0,1,0,5,77.40034,10.57626,1,48.1,0,193.96,1,0,1.609438,5.267652,0,0,0,0,0,0,48.1,9.448747,1.609438,2.852113,1 +11,6,0,0,2,631757,0,12691.24,2.713895,0,10,1,72.53494,146.615,0,0,0,219.15,0,0,0,9,0,5,77.40034,10.57626,1,48.1,0,193.96,1,0,1.609438,5.267652,0,0,0,0,0,0,48.1,9.448747,1.609438,5.389756,1 +11,6,0,0,3,631757,0,12691.24,3.713895,0,10,1,108.7479,148.8233,0,0,0,257.5712,0,0,0,9,0,5,77.40034,10.57626,1,48.1,0,193.96,1,0,1.609438,5.267652,0,0,0,0,0,0,48.1,9.448747,1.609438,5.551296,1 +13,6,0,0,1,631760,.5112414,4556.067,2.696783,1,12,1,7.993269,1.973075,0,0,0,9.966344,0,0,0,1,0,3,77.40034,10.57626,1,63,450,450,1,1,1.098612,6.109248,1,4.564348,6.160541,0,0,0,63,8.424435,1.098612,2.299214,1 +13,6,0,0,2,631760,.5112414,4556.067,3.696783,1,12,1,5.289006,0,0,0,0,5.289006,0,0,0,1,0,4,77.40034,10.57626,1,63,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,63,8.424435,1.386294,1.66563,1 +13,6,0,0,3,631760,.5112414,4556.067,4.696783,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,1,63,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,63,8.424435,1.386294,,0 +13,6,0,0,1,631761,.5112414,4556.067,22.92676,1,12,1,0,0,0,0,287.7577,287.7577,1,0,0,0,0,3,54.8,20.7,1,55.7,450,450,0,0,1.098612,6.109248,1,4.564348,6.160541,0,0,0,55.7,8.424435,1.098612,5.662119,1 +13,6,0,0,2,631761,.5112414,4556.067,23.92676,1,12,1,75.55724,5.851908,0,0,0,81.40914,0,0,0,6,0,4,54.8,20.7,1,55.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,55.7,8.424435,1.386294,4.399487,1 +13,6,0,0,3,631761,.5112414,4556.067,24.92676,1,12,1,64.83705,0,3.430532,0,0,68.26758,0,0,0,5,0,4,54.8,20.7,1,55.7,450,450,0,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,55.7,8.424435,1.386294,4.223435,1 +18,6,25,0,1,631762,0,12182.8,26.43121,0,12,1,0,0,0,0,0,0,0,0,0,0,0,2,93.1,0,0,86.4,194.38,194.38,0,0,.6931472,5.269815,0,3.258096,6.656109,0,0,0,86.4,9.407862,.6931472,,0 +18,6,25,0,2,631762,0,12182.8,27.43121,0,12,1,88.89722,0,7.501875,0,0,96.3991,0,0,0,0,12,2,93.1,0,0,86.4,194.38,194.38,0,0,.6931472,5.269815,0,3.258096,6.656109,0,0,0,86.4,9.407862,.6931472,4.568497,1 +18,6,25,0,3,631762,0,12182.8,28.43121,0,12,1,63.93776,0,0,0,0,63.93776,0,0,0,0,7,3,93.1,0,0,86.4,194.38,194.38,0,0,1.098612,5.269815,0,3.258096,6.656109,0,0,0,86.4,9.407862,1.098612,4.15791,1 +11,6,0,0,1,631767,1,4382.488,3.195072,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,63,0,0,1,1,1.386294,0,0,0,0,0,0,0,63,8.3856,1.386294,,0 +11,6,0,0,2,631767,1,4382.488,4.195072,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,63,0,0,1,1,1.098612,0,0,0,0,0,0,0,63,8.3856,1.098612,,0 +11,6,0,0,3,631767,1,4382.488,5.195072,1,8,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,63,0,0,1,1,1.098612,0,0,0,0,0,0,0,63,8.3856,1.098612,,0 +11,6,0,0,1,631768,.5112414,1202.253,1.998631,1,10,1,29.86958,2.03618,0,0,0,31.90576,0,0,0,3,0,2,77.40034,10.57626,.1442925,,0,0,1,1,.6931472,0,0,0,0,0,0,0,70.68995,7.092784,.6931472,3.462787,1 +11,6,0,0,2,631768,.5112414,1202.253,2.998631,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,.1442925,,0,0,1,1,.6931472,0,0,0,0,0,0,0,70.68995,7.092784,.6931472,,0 +11,6,0,0,3,631768,.5112414,1202.253,3.998631,1,10,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,.1442925,,0,0,1,1,.6931472,0,0,0,0,0,0,0,70.68995,7.092784,.6931472,,0 +11,6,0,0,1,631772,1,7187.404,.8405202,0,5,1,10.15658,4.655099,0,0,0,14.81168,0,0,0,2,0,13,77.40034,10.57626,0,40.7,0,106.56,1,0,2.564949,4.668708,0,0,0,0,0,0,40.7,8.880224,2.564949,2.695416,1 +11,6,0,0,2,631772,1,7187.404,1.84052,0,5,1,0,0,0,0,0,0,0,0,0,0,0,13,77.40034,10.57626,0,40.7,0,106.56,1,0,2.564949,4.668708,0,0,0,0,0,0,40.7,8.880224,2.564949,,0 +11,6,0,0,3,631772,1,7187.404,2.84052,0,5,1,5.882353,1.910035,0,0,0,7.792387,0,0,0,1,0,14,77.40034,10.57626,0,40.7,0,106.56,1,0,2.639057,4.668708,0,0,0,0,0,0,40.7,8.880224,2.639057,2.053147,1 +11,6,0,0,1,631773,1,7187.404,.8405202,0,5,1,5.07829,4.231909,0,0,0,9.310199,0,0,0,1,0,13,77.40034,10.57626,.1442925,100,0,106.56,1,0,2.564949,4.668708,0,0,0,0,0,0,100,8.880224,2.564949,2.23111,1 +11,6,0,0,2,631773,1,7187.404,1.84052,0,5,1,5.31511,4.04328,0,0,0,9.35839,0,0,0,1,0,13,77.40034,10.57626,.1442925,100,0,106.56,1,0,2.564949,4.668708,0,0,0,0,0,0,100,8.880224,2.564949,2.236273,1 +11,6,0,0,3,631773,1,7187.404,2.84052,0,5,1,144.9827,2.276817,0,0,504.1523,651.4117,1,0,0,3,0,14,77.40034,10.57626,.1442925,100,0,106.56,1,0,2.639057,4.668708,0,0,0,0,0,0,100,8.880224,2.639057,6.479142,1 +11,6,0,0,1,631784,1,3690.22,24.34223,0,14,1,6.669446,0,0,0,0,6.669446,0,0,0,1,0,6,88.8,0,0,78.4,0,0,0,0,1.791759,0,0,0,0,0,0,0,78.4,8.213713,1.791759,1.897537,1 +11,6,0,0,2,631784,1,3690.22,25.34223,0,14,1,0,0,0,0,0,0,0,0,0,0,0,6,88.8,0,0,78.4,0,0,0,0,1.791759,0,0,0,0,0,0,0,78.4,8.213713,1.791759,,0 +11,6,0,0,3,631784,1,3690.22,26.34223,0,14,1,0,1.742219,0,0,0,1.742219,0,0,0,0,0,6,88.8,0,0,78.4,0,0,0,0,1.791759,0,0,0,0,0,0,0,78.4,8.213713,1.791759,.5551597,1 +11,6,0,0,1,631785,1,1190.476,1.483915,1,12,1,12.50521,0,0,0,0,12.50521,0,0,0,2,0,3,77.40034,10.57626,0,96.3,0,329.16,1,1,1.098612,5.796544,0,0,0,0,0,0,96.3,7.082948,1.098612,2.526145,1 +11,6,0,0,2,631785,1,1190.476,2.483915,1,12,1,7.501875,8.053264,0,0,0,15.55514,0,0,0,2,0,3,77.40034,10.57626,0,96.3,0,329.16,1,1,1.098612,5.796544,0,0,0,0,0,0,96.3,7.082948,1.098612,2.744391,1 +11,6,0,0,3,631785,1,1190.476,3.483915,1,12,1,10.14885,13.24425,0,0,0,23.3931,0,0,0,3,0,3,77.40034,10.57626,0,96.3,0,329.16,1,1,1.098612,5.796544,0,0,0,0,0,0,96.3,7.082948,1.098612,3.152441,1 +13,6,0,0,1,631787,.5112414,479.2627,20.91444,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,38.8,27.6,1,53.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,53.6,6.174333,.6931472,,0 +13,6,0,0,2,631787,.5112414,479.2627,21.91444,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,38.8,27.6,1,53.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,53.6,6.174333,.6931472,,0 +13,6,0,0,3,631787,.5112414,479.2627,22.91444,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,38.8,27.6,1,53.6,300,300,0,0,.6931472,5.703783,1,4.564348,5.755076,0,0,0,53.6,6.174333,.6931472,,0 +13,6,0,0,1,631790,1,2625.704,1.177276,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,.1442925,,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,70.68995,7.873485,.6931472,,0 +13,6,0,0,2,631790,1,2625.704,2.177276,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,.1442925,,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,70.68995,7.873485,.6931472,,0 +13,6,0,0,3,631790,1,2625.704,3.177276,1,12,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,.1442925,,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,70.68995,7.873485,.6931472,,0 +13,6,0,0,1,631791,.5112414,479.2627,.862423,1,8,1,16.40724,0,0,0,0,16.40724,0,0,0,1,0,2,77.40034,10.57626,0,88.9,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,88.9,6.174333,.6931472,2.797723,1 +13,6,0,0,2,631791,.5112414,479.2627,1.862423,1,8,1,0,0,0,0,0,0,0,0,0,0,0,2,77.40034,10.57626,0,88.9,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,88.9,6.174333,.6931472,,0 +13,6,0,0,3,631791,.5112414,479.2627,2.862423,1,8,1,5.488851,0,0,0,0,5.488851,0,0,0,1,0,2,77.40034,10.57626,0,88.9,300,300,1,1,.6931472,5.703783,1,4.564348,5.755076,0,0,0,88.9,6.174333,.6931472,1.702719,1 +10,6,50,0,1,631798,1,4512.033,.769336,1,12,1,5.002084,0,0,0,0,5.002084,0,0,0,1,0,8,77.40034,10.57626,0,63,1000,1000,1,1,2.079442,6.907755,0,3.931826,7.600903,0,0,0,63,8.414724,2.079442,1.609855,1 +10,6,50,0,2,631798,1,4512.033,1.769336,1,12,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,0,63,1000,1000,1,1,2.079442,6.907755,0,3.931826,7.600903,0,0,0,63,8.414724,2.079442,,0 +10,6,50,0,3,631798,1,4512.033,2.769336,1,12,1,145.4668,0,0,0,0,145.4668,0,0,0,2,0,7,77.40034,10.57626,0,63,1000,1000,1,1,1.94591,6.907755,0,3.931826,7.600903,0,0,0,63,8.414724,1.94591,4.979948,1 +11,6,0,0,1,631799,1,3700.973,.7282683,0,12,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,0,81.5,0,168.4,1,0,1.791759,5.126342,0,0,0,0,0,0,81.5,8.216621,1.791759,,0 +11,6,0,0,2,631799,1,3700.973,1.728268,0,12,1,5.626407,3.765941,0,0,0,9.392348,0,0,0,1,0,6,77.40034,10.57626,0,81.5,0,168.4,1,0,1.791759,5.126342,0,0,0,0,0,0,81.5,8.216621,1.791759,2.239895,1 +11,6,0,0,3,631799,1,3700.973,2.728268,0,12,1,10.14885,1.67456,0,0,0,11.82341,0,0,0,2,0,7,77.40034,10.57626,0,81.5,0,168.4,1,0,1.94591,5.126342,0,0,0,0,0,0,81.5,8.216621,1.94591,2.470082,1 +13,6,0,0,1,631803,1,3534.05,.5338809,0,12,1,10.51746,13.52966,0,0,0,24.04712,0,0,0,2,0,4,77.40034,10.57626,0,63,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,63,8.170483,1.386294,3.180015,1 +13,6,0,0,2,631803,1,3534.05,1.533881,0,12,1,5.666792,4.291651,0,0,235.3608,245.3192,1,0,0,1,0,4,77.40034,10.57626,0,63,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,63,8.170483,1.386294,5.50256,1 +13,6,0,0,3,631803,1,3534.05,2.533881,0,12,1,0,5.979417,0,0,0,5.979417,0,0,0,0,0,4,77.40034,10.57626,0,63,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,63,8.170483,1.386294,1.788323,1 +14,6,95,0,3,631812,1,3984.164,.4941821,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,.1442925,,294,409.6,1,0,1.791759,6.015181,0,4.564348,5.734873,0,0,0,70.68995,8.290334,1.791759,,0 +14,6,95,0,4,631812,1,3984.164,1.494182,0,11,1,29.08953,0,0,0,0,29.08953,0,0,0,0,0,6,77.40034,10.57626,.1442925,,294,409.6,1,0,1.791759,6.015181,0,4.564348,5.734873,0,0,0,70.68995,8.290334,1.791759,3.370378,1 +14,6,95,0,5,631812,1,3984.164,2.494182,0,11,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,.1442925,,294,409.6,1,0,1.791759,6.015181,0,4.564348,5.734873,0,0,0,70.68995,8.290334,1.791759,,0 +11,6,0,0,1,631813,.5112414,13244.75,.6652977,1,13,1,66.89104,51.95625,0,0,0,118.8473,0,0,0,13,0,4,77.40034,10.57626,0,88.9,0,0,1,1,1.386294,0,0,0,0,0,0,0,88.9,9.491432,1.386294,4.777839,1 +11,6,0,0,2,631813,.5112414,13244.75,1.665298,1,13,1,58.93464,60.74424,0,0,0,119.6789,0,0,0,11,0,4,77.40034,10.57626,0,88.9,0,0,1,1,1.386294,0,0,0,0,0,0,0,88.9,9.491432,1.386294,4.784812,1 +11,6,0,0,3,631813,.5112414,13244.75,2.665298,1,13,1,87.82161,35.28645,25.72899,0,0,148.8371,0,0,0,12,0,4,77.40034,10.57626,0,88.9,0,0,1,1,1.386294,0,0,0,0,0,0,0,88.9,9.491432,1.386294,5.002852,1 +14,6,95,0,3,631815,0,8616.422,.3080082,1,16,1,72.73501,11.84602,0,0,0,84.58103,0,0,0,10,0,3,77.40034,10.57626,.1442925,,677.5,667.5,1,1,1.098612,6.50354,0,4.564348,6.569703,0,0,0,70.68995,9.061542,1.098612,4.43771,1 +14,6,95,0,4,631815,0,8616.422,1.308008,1,16,1,53.8168,11.33588,0,0,0,65.15267,0,0,0,10,0,3,77.40034,10.57626,.1442925,,677.5,667.5,1,1,1.098612,6.50354,0,4.564348,6.569703,0,0,0,70.68995,9.061542,1.098612,4.176733,1 +14,6,95,0,5,631815,0,8616.422,2.308008,1,16,1,39.72126,11.82927,0,0,0,51.55052,0,0,0,6,0,3,77.40034,10.57626,.1442925,,677.5,667.5,1,1,1.098612,6.50354,0,4.564348,6.569703,0,0,0,70.68995,9.061542,1.098612,3.942562,1 +11,6,0,0,3,631817,1,10933.14,.4722793,1,7,1,6.252605,0,0,0,0,6.252605,0,0,0,1,0,7,77.40034,10.57626,.1442925,,0,424.32,1,1,1.94591,6.050488,0,0,0,0,0,0,70.68995,9.299645,1.94591,1.832998,1 +11,6,0,0,4,631817,1,10933.14,1.472279,1,7,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,.1442925,,0,424.32,1,1,2.079442,6.050488,0,0,0,0,0,0,70.68995,9.299645,2.079442,,0 +11,6,0,0,5,631817,1,10933.14,2.472279,1,7,1,9.133965,0,0,0,0,9.133965,0,0,0,2,0,8,77.40034,10.57626,.1442925,,0,424.32,1,1,2.079442,6.050488,0,0,0,0,0,0,70.68995,9.299645,2.079442,2.212,1 +19,6,25,0,1,631823,0,8778.802,.4654346,0,16,1,66.01778,15.32374,19.36521,0,0,100.7067,0,0,0,11,0,3,77.40034,10.57626,0,85.2,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.080209,1.098612,4.612213,1 +19,6,25,0,2,631823,0,8778.802,1.465435,0,16,1,55.429,10.50494,24.08504,0,0,90.01898,0,0,0,7,0,3,77.40034,10.57626,0,85.2,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.080209,1.098612,4.500021,1 +19,6,25,0,3,631823,0,8778.802,2.465435,0,16,1,22.83737,4.737024,22.67128,0,0,50.24567,0,0,0,4,0,3,77.40034,10.57626,0,85.2,750,750,1,0,1.098612,6.620073,0,3.258096,8.006368,0,0,0,85.2,9.080209,1.098612,3.916924,1 +11,6,0,0,1,631824,1,6278.034,.3011636,0,11,1,25.39145,2.517986,0,0,0,27.90944,0,0,0,5,0,8,77.40034,10.57626,0,59.3,0,0,1,0,2.079442,0,0,0,0,0,0,0,59.3,8.744971,2.079442,3.328965,1 +11,6,0,0,2,631824,1,6278.034,1.301164,0,11,1,11.38952,0,0,0,0,11.38952,0,0,0,2,0,8,77.40034,10.57626,0,59.3,0,0,1,0,2.079442,0,0,0,0,0,0,0,59.3,8.744971,2.079442,2.432694,1 +11,6,0,0,3,631824,1,6278.034,2.301164,0,11,1,8.650519,9.262976,0,0,0,17.91349,0,0,0,2,0,8,77.40034,10.57626,0,59.3,0,0,1,0,2.079442,0,0,0,0,0,0,0,59.3,8.744971,2.079442,2.885554,1 +13,6,0,0,1,631837,1,1756.272,14.00137,0,9,1,16.50444,0,0,0,0,16.50444,0,0,0,2,0,4,68.6,17.2,0,67.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,67.5,7.471518,1.386294,2.80363,1 +13,6,0,0,2,631837,1,1756.272,15.00137,0,9,1,67.57783,.9681093,0,0,0,68.54594,0,0,0,0,0,4,68.6,17.2,0,67.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,67.5,7.471518,1.386294,4.227504,1 +13,6,0,0,3,631837,1,1756.272,16.00137,0,9,1,0,0,0,0,0,0,0,0,0,0,0,4,68.6,17.2,0,67.5,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,67.5,7.471518,1.386294,,0 +13,6,0,0,1,631855,0,8023.042,1.196441,0,12,1,326.4619,6.121161,0,0,401.7669,734.35,2,0,0,8,26,5,77.40034,10.57626,1,85.2,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.990197,1.609438,6.598986,1 +13,6,0,0,2,631855,0,8023.042,2.196441,0,12,1,115.9804,8.919532,0,0,0,124.8999,0,0,0,5,9,5,77.40034,10.57626,1,85.2,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.990197,1.609438,4.827513,1 +13,6,0,0,3,631855,0,8023.042,3.196441,0,12,1,95.19726,12.79588,345.4546,0,0,453.4477,0,0,0,3,10,5,77.40034,10.57626,1,85.2,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,85.2,8.990197,1.609438,6.11688,1 +16,6,95,0,1,631856,0,10337.43,20.23272,1,10,1,0,0,0,0,0,0,0,0,0,0,0,8,68.1,3.4,0,77.3,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,77.3,9.243624,2.079442,,0 +16,6,95,0,2,631856,0,10337.43,21.23272,1,10,1,29.46732,4.004533,0,0,0,33.47186,0,0,0,0,0,8,68.1,3.4,0,77.3,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,77.3,9.243624,2.079442,3.510705,1 +16,6,95,0,3,631856,0,10337.43,22.23272,1,10,1,72.72727,0,0,0,979.0737,1051.801,1,0,0,2,0,8,68.1,3.4,0,77.3,1000,1000,0,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,77.3,9.243624,2.079442,6.958259,1 +16,6,95,0,1,631857,0,10337.43,1.245722,0,11,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,0,81.5,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,81.5,9.243624,2.079442,,0 +16,6,95,0,2,631857,0,10337.43,2.245722,0,11,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,0,81.5,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,81.5,9.243624,2.079442,,0 +16,6,95,0,3,631857,0,10337.43,3.245722,0,11,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,0,81.5,1000,1000,1,0,2.079442,6.907755,0,4.564348,6.959049,0,0,0,81.5,9.243624,2.079442,,0 +10,6,50,0,1,631859,1,6735.316,.2710472,0,11,1,8.413967,0,0,0,0,8.413967,0,0,0,0,0,3,77.40034,10.57626,0,70.4,353.25,434.88,1,0,1.098612,6.07507,0,3.931826,6.560323,0,0,0,70.4,8.815269,1.098612,2.129893,1 +10,6,50,0,2,631859,1,6735.316,1.271047,0,11,1,63.09029,10.55535,0,0,0,73.64564,0,0,0,2,0,3,77.40034,10.57626,0,70.4,353.25,434.88,1,0,1.098612,6.07507,0,3.931826,6.560323,0,0,0,70.4,8.815269,1.098612,4.299265,1 +10,6,50,0,3,631859,1,6735.316,2.271047,0,11,1,10.63465,1.626072,0,0,0,12.26072,0,0,0,0,0,3,77.40034,10.57626,0,70.4,353.25,434.88,1,0,1.098612,6.07507,0,3.931826,6.560323,0,0,0,70.4,8.815269,1.098612,2.506401,1 +11,6,0,0,1,631861,.5112414,1156.682,.2327173,1,12,1,19.77282,5.384939,0,0,0,25.15776,0,0,0,3,0,2,77.40034,10.57626,0,92.6,0,468,1,1,.6931472,6.148468,0,0,0,0,0,0,92.6,7.054175,.6931472,3.225167,1 +11,6,0,0,2,631861,.5112414,1156.682,1.232717,1,12,1,69.13487,0,0,0,0,69.13487,0,0,0,6,0,2,77.40034,10.57626,0,92.6,0,468,1,1,.6931472,6.148468,0,0,0,0,0,0,92.6,7.054175,.6931472,4.236059,1 +11,6,0,0,3,631861,.5112414,1156.682,2.232717,1,12,1,20.92624,14.18525,0,0,0,35.11149,0,0,0,5,0,2,77.40034,10.57626,0,92.6,0,468,1,1,.6931472,6.148468,0,0,0,0,0,0,92.6,7.054175,.6931472,3.558528,1 +7,6,25,0,1,631862,1,3338.966,.2190281,1,8,1,51.3252,30.50063,0,0,0,81.82583,0,0,0,8,0,5,77.40034,10.57626,0,81.5,720,720,1,1,1.609438,6.579251,0,3.258096,7.965546,0,0,0,81.5,8.113716,1.609438,4.404593,1 +7,6,25,0,2,631862,1,3338.966,1.219028,1,8,1,47.60106,24.76388,0,0,285.6064,357.9713,1,0,0,7,0,5,77.40034,10.57626,0,81.5,720,720,1,1,1.609438,6.579251,0,3.258096,7.965546,0,0,0,81.5,8.113716,1.609438,5.880453,1 +7,6,25,0,3,631862,1,3338.966,2.219028,1,8,1,0,4.83705,0,0,0,4.83705,0,0,0,0,0,5,77.40034,10.57626,0,81.5,720,720,1,1,1.609438,6.579251,0,3.258096,7.965546,0,0,0,81.5,8.113716,1.609438,1.576305,1 +7,6,25,0,1,631867,1,4621.608,17.01574,1,11,1,0,0,0,0,0,0,0,0,0,0,0,2,85.1,0,0,75,750,0,1,1,.6931472,0,0,3.258096,8.006368,0,0,0,75,8.438714,.6931472,,0 +7,6,25,0,2,631867,1,4621.608,18.01574,1,11,1,19.2671,0,1.888931,0,0,21.15602,0,0,0,3,0,2,85.1,0,0,75,750,0,0,0,.6931472,0,0,3.258096,8.006368,0,0,0,75,8.438714,.6931472,3.051925,1 +11,6,0,0,1,631868,.5112414,7290.834,.1341547,1,12,1,9.255363,1.893143,0,0,0,11.14851,0,0,0,2,0,3,77.40034,10.57626,0,85.2,0,240.48,1,1,1.098612,5.482637,0,0,0,0,0,0,85.2,8.89451,1.098612,2.411305,1 +11,6,0,0,2,631868,.5112414,7290.834,1.134155,1,12,1,5.289006,0,0,0,0,5.289006,0,0,0,1,0,3,77.40034,10.57626,0,85.2,0,240.48,1,1,1.098612,5.482637,0,0,0,0,0,0,85.2,8.89451,1.098612,1.66563,1 +11,6,0,0,3,631868,.5112414,7290.834,2.134155,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,85.2,0,240.48,1,1,1.098612,5.482637,0,0,0,0,0,0,85.2,8.89451,1.098612,,0 +16,6,95,0,1,631869,1,8413.723,25.26215,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.4,3.4,0,66.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.037738,1.386294,,0 +16,6,95,0,2,631869,1,8413.723,26.26215,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,81.4,3.4,0,66.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.037738,1.386294,,0 +16,6,95,0,3,631869,1,8413.723,27.26215,1,12,1,54.2024,0,0,0,458.6621,512.8645,1,0,0,2,0,4,81.4,3.4,0,66.7,1000,1000,0,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,66.7,9.037738,1.386294,6.240012,1 +16,6,95,0,1,631870,1,8413.723,.4134155,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,63,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,63,9.037738,1.386294,,0 +16,6,95,0,2,631870,1,8413.723,1.413415,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,63,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,63,9.037738,1.386294,,0 +16,6,95,0,3,631870,1,8413.723,2.413415,0,12,1,10.63465,0,0,0,0,10.63465,0,0,0,0,0,4,77.40034,10.57626,.1442925,63,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,63,9.037738,1.386294,2.364117,1 +16,6,95,0,1,631871,1,8413.723,3.5154,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,63,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,63,9.037738,1.386294,,0 +16,6,95,0,2,631871,1,8413.723,4.5154,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,0,63,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,63,9.037738,1.386294,,0 +16,6,95,0,3,631871,1,8413.723,5.5154,0,12,1,5.831904,0,0,0,0,5.831904,0,0,0,1,0,4,77.40034,10.57626,0,63,1000,1000,1,0,1.386294,6.907755,0,4.564348,6.959049,0,0,0,63,9.037738,1.386294,1.763344,1 +18,6,25,0,1,631875,.5112414,2469.534,19.58932,1,12,1,55.53218,16.31048,0,0,207.825,279.6676,1,0,0,4,0,2,85.1,6.9,0,78.4,750,0,0,0,.6931472,0,0,3.258096,8.006368,0,0,0,78.4,7.81219,.6931472,5.633602,1 +18,6,25,0,2,631875,.5112414,2469.534,20.58932,1,12,1,14.35588,0,0,0,0,14.35588,0,0,0,1,0,2,85.1,6.9,0,78.4,750,0,0,0,.6931472,0,0,3.258096,8.006368,0,0,0,78.4,7.81219,.6931472,2.664159,1 +18,6,25,0,3,631875,.5112414,2469.534,21.58932,1,12,1,24.69983,0,36.36364,0,0,61.06347,0,0,0,0,1,2,85.1,6.9,0,78.4,750,0,0,0,.6931472,0,0,3.258096,8.006368,0,0,0,78.4,7.81219,.6931472,4.111914,1 +13,6,0,0,1,631879,.5112414,3575.525,1.160849,1,10,1,51.7459,0,0,0,104.7539,156.4998,1,1,0,0,0,3,77.40034,10.57626,0,70.4,450,552,1,1,1.098612,6.313548,1,4.564348,6.160541,0,0,0,70.4,8.182147,1.098612,5.053055,1 +13,6,0,0,2,631879,.5112414,3575.525,2.160849,1,10,1,62.33472,0,0,0,0,62.33472,0,0,0,0,0,3,77.40034,10.57626,0,70.4,450,552,1,1,1.098612,6.313548,1,4.564348,6.160541,0,0,0,70.4,8.182147,1.098612,4.132518,1 +13,6,0,0,3,631879,.5112414,3575.525,3.160849,1,10,1,39.45111,0,0,0,637.9073,677.3585,2,0,0,1,0,3,77.40034,10.57626,0,70.4,450,552,1,1,1.098612,6.313548,1,4.564348,6.160541,0,0,0,70.4,8.182147,1.098612,6.518201,1 +13,6,0,0,1,631880,.5112414,3575.525,16.78303,1,10,1,37.86285,0,0,0,861.5902,899.4531,1,0,0,5,0,3,75,24.1,0,55.7,450,552,1,1,1.098612,6.313548,1,4.564348,6.160541,0,0,0,55.7,8.182147,1.098612,6.801787,1 +13,6,0,0,2,631880,.5112414,3575.525,17.78303,1,10,1,31.35625,0,0,0,0,31.35625,0,0,0,0,0,3,75,24.1,0,55.7,450,552,1,1,1.098612,6.313548,1,4.564348,6.160541,0,0,0,55.7,8.182147,1.098612,3.445414,1 +13,6,0,0,3,631880,.5112414,3575.525,18.78303,1,10,1,202.7444,14.75472,68.61063,0,0,286.1098,0,0,0,6,1,3,75,24.1,0,55.7,450,552,0,0,1.098612,6.313548,1,4.564348,6.160541,0,0,0,55.7,8.182147,1.098612,5.656375,1 +6,6,25,0,1,631883,1,11735.28,.29295,1,17,1,89.62067,1.69654,0,0,0,91.31721,0,0,0,8,0,5,77.40034,10.57626,0,100,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,100,9.37044,1.609438,4.514339,1 +6,6,25,0,2,631883,1,11735.28,1.29295,1,17,1,33.38335,9.602401,0,0,0,42.98575,0,0,0,4,0,5,77.40034,10.57626,0,100,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,100,9.37044,1.609438,3.760869,1 +6,6,25,0,3,631883,1,11735.28,2.29295,1,17,1,11.84032,0,0,0,0,11.84032,0,0,0,2,0,5,77.40034,10.57626,0,100,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,100,9.37044,1.609438,2.471511,1 +13,6,0,0,1,631884,1,12033.79,.6817248,1,15,1,31.26303,0,65.46061,0,0,96.72363,0,0,0,2,0,3,77.40034,10.57626,0,92.6,450,300,1,1,1.098612,5.703783,1,4.564348,6.160541,0,0,0,92.6,9.395557,1.098612,4.571858,1 +13,6,0,0,2,631884,1,12033.79,1.681725,1,15,1,0,4.219805,0,0,0,4.219805,0,0,0,0,0,3,77.40034,10.57626,0,92.6,450,300,1,1,1.098612,5.703783,1,4.564348,6.160541,0,0,0,92.6,9.395557,1.098612,1.439789,1 +13,6,0,0,3,631884,1,12033.79,2.681725,1,15,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,0,92.6,450,300,1,1,1.098612,5.703783,1,4.564348,6.160541,0,0,0,92.6,9.395557,1.098612,,0 +11,6,0,0,1,631885,0,844.8541,17.16906,1,7,1,119.2163,48.21175,0,0,0,167.4281,0,0,0,12,0,3,88.3,17.2,0,61.4,0,0,1,1,1.098612,0,0,0,0,0,0,0,61.4,6.740347,1.098612,5.120554,1 +11,6,0,0,2,631885,0,844.8541,18.16906,1,7,1,142.5356,37.61816,24.3811,0,261.8155,466.3503,1,0,0,9,1,3,88.3,17.2,0,61.4,0,0,0,0,1.098612,0,0,0,0,0,0,0,61.4,6.740347,1.098612,6.144937,1 +11,6,0,0,3,631885,0,844.8541,19.16906,1,7,1,11.84032,48.01421,0,0,492.5575,552.412,1,0,0,1,0,1,88.3,17.2,0,61.4,0,0,0,0,0,0,0,0,0,0,0,0,61.4,6.740347,0,6.314294,1 +14,6,95,0,1,631886,0,5339.478,.2655715,0,9,1,120.4669,20.38766,0,0,0,140.8545,0,0,0,20,0,5,77.40034,10.57626,0,85.2,308,660,1,0,1.609438,6.49224,0,4.564348,5.781393,0,0,0,85.2,8.583071,1.609438,4.947728,1 +14,6,95,0,2,631886,0,5339.478,1.265571,0,9,1,112.153,31.93548,0,0,0,144.0885,0,0,0,15,0,5,77.40034,10.57626,0,85.2,308,660,1,0,1.609438,6.49224,0,4.564348,5.781393,0,0,0,85.2,8.583071,1.609438,4.970428,1 +14,6,95,0,3,631886,0,5339.478,2.265572,0,9,1,76.11637,47.35115,0,0,0,123.4675,0,0,0,12,0,5,77.40034,10.57626,0,85.2,308,660,1,0,1.609438,6.49224,0,4.564348,5.781393,0,0,0,85.2,8.583071,1.609438,4.815978,1 +16,6,95,0,1,631887,1,6656.426,.1615332,1,12,1,0,0,0,0,297.2072,297.2072,1,0,0,0,0,5,77.40034,10.57626,.1442925,,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,70.68995,8.803488,1.609438,5.694429,1 +16,6,95,0,2,631887,1,6656.426,1.161533,1,12,1,7.876969,0,0,0,0,7.876969,0,0,0,0,0,5,77.40034,10.57626,.1442925,,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,70.68995,8.803488,1.609438,2.063943,1 +16,6,95,0,3,631887,1,6656.426,2.161533,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,.1442925,,1000,1000,1,1,1.609438,6.907755,0,4.564348,6.959049,0,0,0,70.68995,8.803488,1.609438,,0 +15,6,95,0,3,631890,1,3530.792,.1026694,1,9,1,8.336807,2.501042,0,0,0,10.83785,0,0,0,1,0,2,77.40034,10.57626,.1442925,,499.2,509.08,1,1,.6931472,6.232605,0,4.564348,6.2643,0,0,0,70.68995,8.16956,.6931472,2.383044,1 +15,6,95,0,4,631890,1,3530.792,1.102669,1,9,1,0,5.532633,0,0,0,5.532633,0,0,0,0,0,2,77.40034,10.57626,.1442925,,499.2,509.08,1,1,.6931472,6.232605,0,4.564348,6.2643,0,0,0,70.68995,8.16956,.6931472,1.710664,1 +15,6,95,0,5,631890,1,3530.792,2.102669,1,9,1,6.258457,0,0,0,0,6.258457,0,0,0,0,0,2,77.40034,10.57626,.1442925,,499.2,509.08,1,1,.6931472,6.232605,0,4.564348,6.2643,0,0,0,70.68995,8.16956,.6931472,1.833934,1 +13,6,0,0,2,631900,0,8787.507,.70705,0,13,1,319.8473,46.96565,22.61069,0,0,389.4237,0,0,0,25,0,4,77.40034,10.57626,.1442925,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.0812,1.386294,5.964668,1 +13,6,0,0,3,631900,0,8787.507,1.70705,0,13,1,104.8781,22.64808,0,0,452.9617,580.4878,1,0,0,16,0,4,77.40034,10.57626,.1442925,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,9.0812,1.386294,6.363869,1 +11,6,0,0,2,631901,0,9949.82,.8959616,0,11,1,106.5357,5.821685,0,0,0,112.3574,0,0,0,3,13,5,77.40034,10.57626,.1442925,,0,0,1,0,1.609438,0,0,0,0,0,0,0,70.68995,9.20541,1.609438,4.721685,1 +11,6,0,0,3,631901,0,9949.82,1.895962,0,11,1,156.0892,28.39108,0,0,0,184.4803,0,0,0,8,18,5,77.40034,10.57626,.1442925,,0,0,1,0,1.609438,0,0,0,0,0,0,0,70.68995,9.20541,1.609438,5.217543,1 +15,6,95,0,2,631903,1,1798.771,.9397673,1,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,80.9,80.9,1,1,1.386294,4.393214,0,4.564348,4.444507,0,0,0,70.68995,7.495415,1.386294,,0 +15,6,95,0,3,631903,1,1798.771,1.939767,1,12,1,11.07266,0,0,0,0,11.07266,0,0,0,0,0,4,77.40034,10.57626,.1442925,,80.9,80.9,1,1,1.386294,4.393214,0,4.564348,4.444507,0,0,0,70.68995,7.495415,1.386294,2.40448,1 +16,6,95,0,2,631904,1,1725.55,.742642,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,756,0,1,0,1.386294,0,0,4.564348,6.679335,0,0,0,70.68995,7.453881,1.386294,,0 +16,6,95,0,3,631904,1,1725.55,1.742642,0,12,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,756,0,1,0,1.386294,0,0,4.564348,6.679335,0,0,0,70.68995,7.453881,1.386294,,0 +11,6,0,0,4,631908,0,4633.431,.7686516,0,10.62774,1,103.8912,4.892331,0,0,433.3207,542.1042,2,0,0,6,0,2,77.40034,10.57626,.1442925,,0,0,1,0,.6931472,0,0,0,0,0,0,0,70.68995,8.441269,.6931472,6.295458,1 +13,6,0,0,2,631909,1,213.5177,.742642,0,10,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,.1442925,,450,450,1,0,2.079442,6.109248,1,4.564348,6.160541,0,0,0,70.68995,5.368392,2.079442,,0 +13,6,0,0,3,631909,1,213.5177,1.742642,0,10,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,.1442925,,450,450,1,0,2.079442,6.109248,1,4.564348,6.160541,0,0,0,70.68995,5.368392,2.079442,,0 +16,6,95,0,1,631921,1,962.6216,5.180014,1,7,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,0,0,0,70.68995,6.870698,1.94591,,0 +16,6,95,0,2,631921,1,962.6216,6.180014,1,7,1,11.33358,0,0,0,0,11.33358,0,0,0,2,0,7,77.40034,10.57626,.1442925,,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,0,0,0,70.68995,6.870698,1.94591,2.42777,1 +16,6,95,0,3,631921,1,962.6216,7.180014,1,7,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,1000,1000,1,1,1.94591,6.907755,0,4.564348,6.959049,0,0,0,70.68995,6.870698,1.94591,,0 +11,6,0,0,1,631924,0,7922.171,.0793977,1,15,1,66.01778,14.28269,0,0,0,80.30047,0,0,0,9,0,3,77.40034,10.57626,.1442925,,0,0,1,1,1.098612,0,0,0,0,0,0,0,70.68995,8.977547,1.098612,4.385776,1 +11,6,0,0,2,631924,0,7922.171,1.079398,1,15,1,17.84358,3.454822,0,0,0,21.2984,0,0,0,3,0,3,77.40034,10.57626,.1442925,,0,0,1,1,1.098612,0,0,0,0,0,0,0,70.68995,8.977547,1.098612,3.058632,1 +11,6,0,0,3,631924,0,7922.171,2.079398,1,15,1,18.3391,4.044983,0,0,0,22.38408,0,0,0,2,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,8.977547,1.386294,3.10835,1 +11,6,0,0,1,631925,.5112414,6735.316,.3531828,1,7,1,4.168404,0,0,0,0,4.168404,0,0,0,1,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,8.815269,1.386294,1.427533,1 +11,6,0,0,2,631925,.5112414,6735.316,1.353183,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,8.815269,1.386294,,0 +11,6,0,0,3,631925,.5112414,6735.316,2.353183,1,7,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,8.815269,1.386294,,0 +11,6,0,0,2,631926,1,6735.316,.6358659,0,0,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,0,0,1,0,2.197225,0,0,0,0,0,0,0,70.68995,8.815269,2.197225,,0 +11,6,0,0,3,631926,1,6735.316,1.635866,0,0,1,0,0,0,0,0,0,0,0,0,0,0,9,77.40034,10.57626,.1442925,,0,0,1,0,2.197225,0,0,0,0,0,0,0,70.68995,8.815269,2.197225,,0 +13,6,0,0,1,631927,1,1989.247,.1149897,1,12,1,36.39441,0,0,0,0,36.39441,0,0,0,2,0,3,77.40034,10.57626,.1442925,,300,300,1,1,1.098612,5.703783,1,4.564348,5.755076,0,0,0,70.68995,7.596014,1.098612,3.594415,1 +13,6,0,0,2,631927,1,1989.247,1.11499,1,12,.1530055,18.60289,1.898254,0,0,0,20.50114,0,0,0,1,0,3,77.40034,10.57626,.1442925,,300,300,1,1,1.098612,5.703783,1,4.564348,5.755076,0,0,0,70.68995,7.596014,1.098612,3.02048,1 +16,6,95,0,1,631928,0,9325.653,.0273785,1,13,1,70.67732,21.07699,0,0,0,91.75431,0,0,0,14,0,3,77.40034,10.57626,.1442925,,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.140632,1.098612,4.519114,1 +16,6,95,0,2,631928,0,9325.653,1.027379,1,13,1,64.60143,57.96373,0,0,0,122.5652,0,0,0,14,0,3,77.40034,10.57626,.1442925,,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.140632,1.098612,4.808643,1 +16,6,95,0,3,631928,0,9325.653,2.027379,1,13,1,318.5763,51.61578,0,0,0,370.1921,0,0,0,14,0,3,77.40034,10.57626,.1442925,,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.140632,1.098612,5.914022,1 +13,6,0,0,1,631929,1,6735.316,.0328542,0,12,1,5.002084,0,0,0,0,5.002084,0,0,0,1,0,10,77.40034,10.57626,.1442925,,450,150,1,0,2.302585,5.010635,1,4.564348,6.160541,0,0,0,70.68995,8.815269,2.302585,1.609855,1 +13,6,0,0,2,631929,1,6735.316,1.032854,0,12,1,24.75619,2.606902,0,0,0,27.36309,0,0,0,1,0,9,77.40034,10.57626,.1442925,,450,150,1,0,2.197225,5.010635,1,4.564348,6.160541,0,0,0,70.68995,8.815269,2.197225,3.309195,1 +13,6,0,0,3,631929,1,6735.316,2.032854,0,12,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,450,150,1,0,1.94591,5.010635,1,4.564348,6.160541,0,0,0,70.68995,8.815269,1.94591,,0 +13,6,0,0,2,631939,.5112414,4556.067,.6194388,1,12,1,18.13374,0,0,0,0,18.13374,0,0,0,0,0,4,77.40034,10.57626,.1442925,,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.424435,1.386294,2.897774,1 +13,6,0,0,3,631939,.5112414,4556.067,1.619439,1,12,1,5.831904,0,0,0,0,5.831904,0,0,0,1,0,4,77.40034,10.57626,.1442925,,450,450,1,1,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.424435,1.386294,1.763344,1 +13,6,0,0,2,631941,1,2479.775,.6468173,1,6,1,22.66717,0,0,0,0,22.66717,0,0,0,5,0,4,77.40034,10.57626,.1442925,,450,300,1,1,1.386294,5.703783,1,4.564348,6.160541,0,0,0,70.68995,7.816326,1.386294,3.120918,1 +13,6,0,0,3,631941,1,2479.775,1.646817,1,6,1,24.69983,0,0,0,0,24.69983,0,0,0,0,0,4,77.40034,10.57626,.1442925,,450,300,1,1,1.386294,5.703783,1,4.564348,6.160541,0,0,0,70.68995,7.816326,1.386294,3.206796,1 +11,6,0,0,4,631945,0,11458.65,.4784394,1,16,1,138.1929,8.595292,0,0,0,146.7882,0,0,0,9,0,4,77.40034,10.57626,.1442925,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,70.68995,9.346587,1.386294,4.98899,1 +11,6,0,0,5,631945,0,11458.65,1.478439,1,16,1,22.49135,15.56747,0,0,0,38.05882,0,0,0,5,0,4,77.40034,10.57626,.1442925,,0,60,1,1,1.386294,4.094345,0,0,0,0,0,0,70.68995,9.346587,1.386294,3.639133,1 +11,6,0,0,2,631948,1,8102.918,.4168378,0,12,1,72.51329,38.0372,0,0,0,110.5505,0,0,0,15,0,4,77.40034,10.57626,.1442925,,0,0,1,0,1.386294,0,0,0,0,0,0,0,70.68995,9.000103,1.386294,4.705472,1 +11,6,0,0,3,631948,1,8102.918,1.416838,0,12,1,36.33218,21.37716,0,0,0,57.70934,0,0,0,6,0,4,77.40034,10.57626,.1442925,,0,0,1,0,1.386294,0,0,0,0,0,0,0,70.68995,9.000103,1.386294,4.055419,1 +6,6,25,0,4,631949,1,1759.531,.5468857,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,.1442925,,750,0,1,1,1.609438,0,0,3.258096,8.006368,0,0,0,70.68995,7.473371,1.609438,,0 +6,6,25,0,5,631949,1,1759.531,1.546886,1,12,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,.1442925,,750,0,1,1,1.609438,0,0,3.258096,8.006368,0,0,0,70.68995,7.473371,1.609438,,0 +15,6,95,0,2,631959,1,10112.13,.2772074,1,12,1,102.5057,12.03493,0,0,0,114.5406,0,0,0,16,0,3,77.40034,10.57626,.1442925,,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.22159,1.098612,4.74093,1 +15,6,95,0,3,631959,1,10112.13,1.277207,1,12,1,0,0,0,0,0,0,0,0,0,0,0,3,77.40034,10.57626,.1442925,,1000,1000,1,1,1.098612,6.907755,0,4.564348,6.959049,0,0,0,70.68995,9.22159,1.098612,,0 +13,6,0,0,1,631964,1,6735.316,1.713895,0,10,1,53.42869,11.90156,0,0,0,65.33025,0,0,0,3,0,4,77.40034,10.57626,.1442925,,450,450,1,0,1.386294,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.815269,1.386294,4.179455,1 +13,6,0,0,2,631964,1,6735.316,2.713895,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,.1442925,,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.815269,1.609438,,0 +13,6,0,0,3,631964,1,6735.316,3.713895,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,.1442925,,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.815269,1.609438,,0 +13,6,0,0,4,631970,0,10029.33,.3990417,1,16,1,52.13803,10.31133,0,0,0,62.44936,0,0,0,9,0,4,77.40034,10.57626,.1442925,,300,349.96,1,1,1.386294,5.857819,1,4.564348,5.755076,0,0,0,70.68995,9.213368,1.386294,4.134356,1 +13,6,0,0,5,631970,0,10029.33,1.399042,1,16,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,300,349.96,1,1,1.386294,5.857819,1,4.564348,5.755076,0,0,0,70.68995,9.213368,1.386294,,0 +13,6,0,0,2,631971,1,6735.316,.2224504,0,10,1,9.066868,1.911598,0,0,0,10.97847,0,0,0,2,0,5,77.40034,10.57626,.1442925,,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.815269,1.609438,2.395936,1 +13,6,0,0,3,631971,1,6735.316,1.22245,0,10,1,0,0,0,0,0,0,0,0,0,0,0,5,77.40034,10.57626,.1442925,,450,450,1,0,1.609438,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.815269,1.609438,,0 +11,6,0,0,4,631972,1,5319.648,.284052,1,12,1,57.2018,12.64066,0,0,0,69.84246,0,0,0,12,0,8,77.40034,10.57626,.1442925,,0,206.44,1,1,2.079442,5.33001,0,0,0,0,0,0,70.68995,8.57935,2.079442,4.246242,1 +11,6,0,0,5,631972,1,5319.648,1.284052,1,12,1,47.023,7.154939,0,0,475.3045,529.4824,1,0,0,2,0,8,77.40034,10.57626,.1442925,,0,206.44,1,1,2.079442,5.33001,0,0,0,0,0,0,70.68995,8.57935,2.079442,6.2719,1 +13,6,0,0,2,631973,1,1714.286,.0362765,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,.1442925,,450,150,1,1,1.791759,5.010635,1,4.564348,6.160541,0,0,0,70.68995,7.447335,1.791759,,0 +13,6,0,0,3,631973,1,1714.286,1.036277,1,10,1,0,0,0,0,0,0,0,0,0,0,0,6,77.40034,10.57626,.1442925,,450,150,1,1,1.791759,5.010635,1,4.564348,6.160541,0,0,0,70.68995,7.447335,1.791759,,0 +11,6,0,0,4,631974,0,7864.516,.155373,1,12,1,58.55686,8.235739,0,0,0,66.79259,0,0,0,8,0,5,77.40034,10.57626,.1442925,,0,525.76,1,1,1.609438,6.264845,0,0,0,0,0,0,70.68995,8.970243,1.609438,4.201592,1 +11,6,0,0,5,631974,0,7864.516,1.155373,1,12,1,110.4631,17.91767,42.45626,0,0,170.8371,0,0,0,10,0,5,77.40034,10.57626,.1442925,,0,525.76,1,1,1.609438,6.264845,0,0,0,0,0,0,70.68995,8.970243,1.609438,5.14071,1 +11,6,0,0,3,631980,1,5123.912,.9459274,0,12,1,38.40831,0,0,0,0,38.40831,0,0,0,7,0,3,77.40034,10.57626,.1442925,,0,192.48,1,0,1.098612,5.259992,0,0,0,0,0,0,70.68995,8.541868,1.098612,3.648274,1 +11,6,0,0,4,631981,1,10933.14,.1252567,1,7,1,39.38485,11.24531,0,0,0,50.63016,0,0,0,7,0,8,77.40034,10.57626,.1442925,,0,424.32,1,1,2.079442,6.050488,0,0,0,0,0,0,70.68995,9.299645,2.079442,3.924547,1 +11,6,0,0,5,631981,1,10933.14,1.125257,1,7,1,3.38295,1.809878,0,0,0,5.192828,0,0,0,1,0,8,77.40034,10.57626,.1442925,,0,424.32,1,1,2.079442,6.050488,0,0,0,0,0,0,70.68995,9.299645,2.079442,1.647278,1 +11,6,0,0,5,632004,1,6735.316,.8651608,1,7,1,18.86792,9.451115,0,0,0,28.31904,0,0,0,1,0,4,77.40034,10.57626,.1442925,,0,152.88,1,1,1.386294,5.029653,0,0,0,0,0,0,70.68995,8.815269,1.386294,3.343534,1 +18,6,25,0,3,632005,0,12182.8,.9240246,1,16,1,87.78755,1.894452,0,0,0,89.682,0,0,0,21,0,3,77.40034,10.57626,.1442925,,194.38,194.38,1,1,1.098612,5.269815,0,3.258096,6.656109,0,0,0,70.68995,9.407862,1.098612,4.49627,1 +14,6,95,0,3,632008,1,3400.922,.7761807,1,7,1,0,0,0,0,0,0,0,0,0,0,0,10,77.40034,10.57626,.1442925,,48.6,48.6,1,1,2.302585,3.883624,0,4.564348,3.934917,0,0,0,70.68995,8.132095,2.302585,,0 +11,6,0,0,3,632010,1,7187.404,.7734429,0,5,1,15.57093,6.792387,0,0,0,22.36332,0,0,0,3,0,14,77.40034,10.57626,.1442925,,0,106.56,1,0,2.639057,4.668708,0,0,0,0,0,0,70.68995,8.880224,2.639057,3.107422,1 +6,6,25,0,3,632020,0,12762.93,.7679672,0,12,1,38.06228,0,11.87543,0,0,49.93772,0,0,0,5,0,5,77.40034,10.57626,.1442925,,750,750,1,0,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.68995,9.454378,1.609438,3.910777,1 +6,6,25,0,3,632021,0,12762.93,.7679672,1,12,1,67.12803,0,0,0,0,67.12803,0,0,0,8,0,5,77.40034,10.57626,.1442925,,750,750,1,1,1.609438,6.620073,0,3.258096,8.006368,0,0,0,70.68995,9.454378,1.609438,4.206602,1 +13,6,0,0,5,632022,0,9228.152,.7857632,1,12,1,68.78216,2.058319,21.76329,0,0,92.60378,0,0,0,8,0,3,77.40034,10.57626,.1442925,,300,300,1,1,1.098612,5.703783,1,4.564348,5.755076,0,0,0,70.68995,9.130122,1.098612,4.52833,1 +11,6,0,0,3,632024,0,13767.03,.7542779,0,10,1,116.9811,38.47684,0,0,0,155.458,0,0,0,11,0,4,77.40034,10.57626,.1442925,,0,0,1,0,1.386294,0,0,0,0,0,0,0,70.68995,9.530105,1.386294,5.046375,1 +11,6,0,0,3,632030,1,3700.973,.7405887,1,12,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,0,168.4,1,1,1.94591,5.126342,0,0,0,0,0,0,70.68995,8.216621,1.94591,,0 +11,6,0,0,3,632031,0,7922.171,.5982204,1,15,1,54.32526,7.865052,0,0,0,62.19031,0,0,0,6,0,4,77.40034,10.57626,.1442925,,0,0,1,1,1.386294,0,0,0,0,0,0,0,70.68995,8.977547,1.386294,4.130199,1 +11,6,0,0,3,632032,.5112414,6735.316,.4284737,0,12,1,92.68293,42.0662,0,0,0,134.7491,0,0,0,20,0,4,77.40034,10.57626,.1442925,,0,0,1,0,1.386294,0,0,0,0,0,0,0,70.68995,8.815269,1.386294,4.903415,1 +19,6,25,0,3,632036,0,5479.263,.7734429,1,12,1,11.76471,0,0,0,0,11.76471,0,0,0,2,0,8,77.40034,10.57626,.1442925,,696.3,884,1,1,2.079442,6.784457,0,3.258096,7.932075,0,0,0,70.68995,8.608909,2.079442,2.465104,1 +19,6,25,0,3,632037,0,5479.263,.6830938,0,12,1,5.882353,1.965398,0,0,0,7.847751,0,0,0,1,0,8,77.40034,10.57626,.1442925,,696.3,884,1,0,2.079442,6.784457,0,3.258096,7.932075,0,0,0,70.68995,8.608909,2.079442,2.060227,1 +10,6,50,0,3,632038,1,1264.721,.6119096,0,10,1,36.70669,0,0,0,0,36.70669,0,0,0,3,0,7,77.40034,10.57626,.1442925,,795,0,1,0,1.94591,0,0,3.931826,7.37149,0,0,0,70.68995,7.143397,1.94591,3.602959,1 +13,6,0,0,5,632045,1,6735.316,.3066393,0,11,1,0,0,0,0,0,0,0,0,0,0,0,7,77.40034,10.57626,.1442925,,450,450,1,0,1.94591,6.109248,1,4.564348,6.160541,0,0,0,70.68995,8.815269,1.94591,,0 +17,6,25,0,5,632050,0,8273.9,.4544832,1,8,1,34.64837,0,0,0,0,34.64837,0,0,0,5,0,5,77.40034,10.57626,.1442925,,650,650,1,1,1.609438,6.476973,0,3.258096,7.863267,0,0,0,70.68995,9.020982,1.609438,3.545251,1 +5,6,25,0,3,632051,0,8730.671,.275154,0,8,1,29.50257,4.51801,0,0,0,34.02058,0,0,0,0,0,5,77.40034,10.57626,.1442925,,670,670,1,0,1.609438,6.507277,0,3.258096,7.893572,0,0,0,70.68995,9.074712,1.609438,3.526966,1 +14,6,95,0,3,632058,1,3400.922,.3737166,0,7,1,5.882353,0,0,0,0,5.882353,0,0,0,1,0,10,77.40034,10.57626,.1442925,,48.6,48.6,1,0,2.302585,3.883624,0,4.564348,3.934917,0,0,0,70.68995,8.132095,2.302585,1.771957,1 +19,6,25,0,3,632064,1,6735.316,.5845311,1,8,1,0,0,0,0,0,0,0,0,0,0,0,4,77.40034,10.57626,.1442925,,524.7,524.7,1,1,1.386294,6.262826,0,3.258096,7.649121,0,0,0,70.68995,8.815269,1.386294,,0 +11,6,0,0,2,632073,0,6735.316,.4031485,1,6,1,11.38952,7.517084,0,0,0,18.90661,0,0,0,2,0,7,77.40034,10.57626,.1442925,,0,216.48,1,1,1.94591,5.377498,0,0,0,0,0,0,70.68995,8.815269,1.94591,2.939512,1 +11,6,0,0,3,632073,0,6735.316,1.403149,1,6,1,0,0,0,0,0,0,0,0,0,0,0,8,77.40034,10.57626,.1442925,,0,216.48,1,1,2.079442,5.377498,0,0,0,0,0,0,70.68995,8.815269,2.079442,,0 +18,6,25,0,3,632075,0,7493.087,.3052704,0,12,1,98.96194,16.81661,0,0,467.4741,583.2526,1,0,0,8,0,5,77.40034,10.57626,.1442925,,750,967.6,1,0,1.609438,6.874819,0,3.258096,8.006368,0,0,0,70.68995,8.921869,1.609438,6.36862,1 +18,6,25,0,3,632166,0,1896.569,.0561259,0,12,1,61.93772,4.865052,0,0,0,66.80276,0,0,0,8,0,6,77.40034,10.57626,.1442925,,173.5,173.5,1,0,1.791759,5.156178,0,3.258096,6.542472,0,0,0,70.68995,7.548329,1.791759,4.201745,1 +6,6,25,0,3,632167,1,6735.316,.1054073,1,12,1,28.02768,6.813149,0,0,0,34.84083,0,0,0,6,0,4,77.40034,10.57626,.1442925,,750,750,1,1,1.386294,6.620073,0,3.258096,8.006368,0,0,0,70.68995,8.815269,1.386294,3.55079,1 diff --git a/statsmodels/datasets/scotland/R_scotvote.s b/statsmodels/datasets/scotland/R_scotvote.s new file mode 100644 index 0000000..6ab81af --- /dev/null +++ b/statsmodels/datasets/scotland/R_scotvote.s @@ -0,0 +1,17 @@ +### SETUP ### +d <- read.table("./scotvote.csv",sep=",", header=T) +attach(d) + +### MODEL ### +m1 <- glm(YES ~ COUTAX * UNEMPF + MOR + ACT + GDP + AGE, + family=Gamma) +results <- summary.glm(m1) +results +results['coefficients'] +logLik(m1) +scale <- results$disp +Y <- YES +mu <- m1$fitted +llf <- -1/scale * sum(Y/mu+log(mu)+(scale-1)*log(Y)+log(scale)+scale*lgamma(1/scale)) +print(llf) +print("This is the llf calculated with the formula") diff --git a/statsmodels/datasets/scotland/__init__.py b/statsmodels/datasets/scotland/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/scotland/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/scotland/data.py b/statsmodels/datasets/scotland/data.py new file mode 100644 index 0000000..91652c4 --- /dev/null +++ b/statsmodels/datasets/scotland/data.py @@ -0,0 +1,90 @@ +"""Taxation Powers Vote for the Scottish Parliament 1997 dataset.""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """Used with express permission from the original author, +who retains all rights.""" +TITLE = "Taxation Powers Vote for the Scottish Parliamant 1997" +SOURCE = """ +Jeff Gill's `Generalized Linear Models: A Unified Approach` + +http://jgill.wustl.edu/research/books.html +""" +DESCRSHORT = """Taxation Powers' Yes Vote for Scottish Parliamanet-1997""" + +DESCRLONG = """ +This data is based on the example in Gill and describes the proportion of +voters who voted Yes to grant the Scottish Parliament taxation powers. +The data are divided into 32 council districts. This example's explanatory +variables include the amount of council tax collected in pounds sterling as +of April 1997 per two adults before adjustments, the female percentage of +total claims for unemployment benefits as of January, 1998, the standardized +mortality rate (UK is 100), the percentage of labor force participation, +regional GDP, the percentage of children aged 5 to 15, and an interaction term +between female unemployment and the council tax. + +The original source files and variable information are included in +/scotland/src/ +""" + +NOTE = """:: + + Number of Observations - 32 (1 for each Scottish district) + + Number of Variables - 8 + + Variable name definitions:: + + YES - Proportion voting yes to granting taxation powers to the + Scottish parliament. + COUTAX - Amount of council tax collected in pounds steling as of + April '97 + UNEMPF - Female percentage of total unemployment benefits claims as of + January 1998 + MOR - The standardized mortality rate (UK is 100) + ACT - Labor force participation (Short for active) + GDP - GDP per county + AGE - Percentage of children aged 5 to 15 in the county + COUTAX_FEMALEUNEMP - Interaction between COUTAX and UNEMPF + + Council district names are included in the data file, though are not + returned by load. +""" + + +def load(as_pandas=None): + """ + Load the Scotvote data and returns a Dataset instance. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def load_pandas(): + """ + Load the Scotvote data and returns a Dataset instance. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + data = _get_data() + return du.process_pandas(data, endog_idx=0) + + +def _get_data(): + data = du.load_csv(__file__, 'scotvote.csv') + data = data.iloc[:, 1:9] + return data.astype(float) diff --git a/statsmodels/datasets/scotland/scotvote.csv b/statsmodels/datasets/scotland/scotvote.csv new file mode 100644 index 0000000..021b626 --- /dev/null +++ b/statsmodels/datasets/scotland/scotvote.csv @@ -0,0 +1,33 @@ +"COUNCILDIST","YES","COUTAX","UNEMPF","MOR","ACT","GDP","AGE","COUTAX_FEMALEUNEMP" +"Aberdeen_City",60.3,712,21,105,82.4,13566,12.3,14952 +"Aberdeenshire",52.3,643,26.5,97,80.2,13566,15.3,17039.5 +"Angus",53.4,679,28.3,113,86.3,9611,13.9,19215.7 +"Argyll_and_Bute",57,801,27.1,109,80.4,9483,13.6,21707.1 +"Clackmannanshire",68.7,753,22,115,64.7,9265,14.6,16566 +"Dumfries_and_Galloway",48.8,714,24.3,107,79,9555,13.8,17350.2 +"Dundee_City",65.5,920,21.2,118,72.2,9611,13.3,19504 +"East_Ayrshire",70.5,779,20.5,114,75.2,9483,14.5,15969.5 +"East_Dunbartonshire",59.1,771,23.2,102,81.1,9483,14.2,17887.2 +"East_Lothian",62.7,724,20.5,112,80.3,12656,13.7,14842 +"East_Renfrewshire",51.6,682,23.8,96,83,9483,14.6,16231.6 +"Edinburgh_City",62,837,22.1,111,74.5,12656,11.6,18497.7 +"Eilean_Siar_(Western_Isles)",68.4,599,19.9,117,83.8,8298,15.1,11920.1 +"Falkirk",69.2,680,21.5,121,77.6,9265,13.7,14620 +"Fife",64.7,747,22.5,109,77.9,8314,14.4,16807.5 +"Glasgow_City",75,982,19.4,137,65.3,9483,13.3,19050.8 +"Highland",62.1,719,25.9,109,80.9,8298,14.9,18622.1 +"Inverclyde",67.2,831,18.5,138,80.2,9483,14.6,15373.5 +"Midlothian",67.7,858,19.4,119,84.8,12656,14.3,16645.2 +"Moray",52.7,652,27.2,108,86.4,13566,14.6,17734.4 +"North_Ayrshire",65.7,718,23.7,115,73.5,9483,15,17016.6 +"North_Lanarkshire",72.2,787,20.8,126,74.7,9483,14.9,16369.6 +"Orkney_Islands",47.4,515,26.8,106,87.8,8298,15.3,13802 +"Perth_and_Kinross",51.3,732,23,103,86.6,9611,13.8,16836 +"Renfrewshire",63.6,783,20.5,125,78.5,9483,14.1,16051.5 +"Scottish_Borders_The",50.7,612,23.7,100,80.6,9033,13.3,14504.4 +"Shetland_Islands",51.6,486,23.2,117,84.8,8298,15.9,11275.2 +"South_Ayrshire",56.2,765,23.6,105,79.2,9483,13.7,18054 +"South_Lanarkshire",67.6,793,21.7,125,78.4,9483,14.5,17208.1 +"Stirling",58.9,776,23,110,77.2,9265,13.6,17848 +"West_Dunbartonshire",74.7,978,19.3,130,71.5,9483,15.3,18875.4 +"West_Lothian",67.3,792,21.2,126,82.2,12656,15.1,16790.4 diff --git a/statsmodels/datasets/scotland/src/scotland.readme b/statsmodels/datasets/scotland/src/scotland.readme new file mode 100644 index 0000000..8e30f56 --- /dev/null +++ b/statsmodels/datasets/scotland/src/scotland.readme @@ -0,0 +1,27 @@ +######################################################################################################### +# # +# This archive is part of the free distribution of data and statistical software code for # +# "Generalized Linear Models: A Unified Approach", Jeff Gill, Sage QASS Series. You are # +# free to use, modify, distribute, publish, etc. provided attribution. Please forward # +# bugs, complaints, comments, and useful changes to: jgill@latte.harvard.edu. # +# # +######################################################################################################### + +Electoral Politics in Scotland. These data are from the 1997 vote that established a Scottish +Parliament with taxing powers. The data are culled from several different official UK documents +provided by the Office for National Statistics, the General Register Office for Scotland, the +Scottish Office: Education and Industry Department, the Scottish Department for Education +and Employment, The Scottish Office Office: Development Department, and David Boothroyd (thank you). +The files in this zip archive are: + +scotland.readme this file +scotvote.dat the data file with a header indicating + +scotland_births.html +scotland_changes.html +scotland_devolution.html +scotland_econ_summary.html +scotland_economics.html +scotland_education.html +scotland_housing.html +scotland_population.html these are html files with various details on the variables included. diff --git a/statsmodels/datasets/scotland/src/scotland_births.html b/statsmodels/datasets/scotland/src/scotland_births.html new file mode 100644 index 0000000..2847080 --- /dev/null +++ b/statsmodels/datasets/scotland/src/scotland_births.html @@ -0,0 +1,312 @@ + + + + + +Cross-sectional dataset viewer v1.1 + + + + + + + + + + + + + +
    + Home + + StatSearch + + Text Search + + StatStore + + FAQ + +   +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Dataset Display - Cross-Sectional

    Dataset Name: + RT331602 +
    Title: + + Vital and social statistics: Scotland +
    Description:Vital and social statistics: Scotland

    This dataset has been compiled from data published in Regional Trends 33, 1998 edition published on 25 June 1998.

    Source: + Office for National Statistics; General Register Office for Scotland +
    Time Frame: + 1996 +
    Geographic Coverage: + United Kingdom + +
    Universe: + UK live births +
    Measure: + various +
    Units: + See table +
    Scalar: + various +
    Formula: + none +
    + + + +


    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table Dimensions
    Please select at least one item from each list and "Display Selection" or choose "Display All"
    To select list items either hold down 'Ctrl' key and click each item required, or click the first item and hold down the mouse button whilst scrolling down the list.
    + Region + + 4 + + Measure + + +
    + + + +
     
    To change your selection, click in the appropriate box
    + + + +
    + + + + + + + + + + +
    + + + Table + + + + +
    Live births per 1,000 population 19961Deaths per 1,000 population 19961Perinatal mortality rate, 3 year average, 1994-19962Infant mortality rate, 3 year average, 1994-19963Percentage of live births outside marriage 1996
    United Kingdom12.510.98.86.136.0
    Scotland11.611.89.36.236.0
    Aberdeen City11.010.47.75.735.0
    Aberdeenshire11.39.09.03.824.0
    Angus311.013.25.63.233.0
    Argyll and Bute10.513.88.67.033.0
    Clackmannanshire12.311.310.46.340.0
    Dumfries and Galloway10.912.88.87.834.0
    Dundee City11.513.18.66.851.0
    East Ayrshire311.411.612.36.540.0
    East Dunbartonshire10.59.28.17.219.0
    East Lothian12.312.67.65.229.0
    East Renfrewshire11.59.57.46.219.0
    Edinburgh, City of11.411.78.16.433.0
    Eilean Siar (Western Isles)239.714.911.25.719.0
    Falkirk11.711.77.94.834.0
    Fife11.011.48.77.137.0
    Glasgow City12.514.011.16.949.0
    Highland11.411.48.36.534.0
    Inverclyde11.714.511.58.045.0
    Midlothian11.210.710.86.035.0
    Moray12.411.09.87.426.0
    North Ayrshire2311.311.811.66.942.0
    North Lanarkshire12.511.111.68.538.0
    Orkney Islands10.911.67.51.430.0
    Perth and Kinross310.512.69.85.929.0
    Renfrewshire311.911.68.04.539.0
    Scottish Borders, The310.712.88.04.928.0
    Shetland Islands2311.710.99.96.528.0
    South Ayrshire10.112.76.24.333.0
    South Lanarkshire11.511.39.25.133.0
    Stirling11.111.87.74.933.0
    West Dunbartonshire12.512.711.78.742.0
    West Lothian13.19.58.74.633.0
    +
    + + + + +
    Footnotes
    1 -Births are on the basis of year of occurrence in England and Wales and year of registration in Scotland and Northern Ireland. Deaths relate to year of registration.
    2 -Still births and deaths of infants under 1 week of age per 1,000 live and still births. Figures for some Council areas should be treated with caution as the perinatal mortality rate was based on fewer than 20 deaths.
    3 -Deaths of infants under 1 year of age per 1,000 live births. Figures for some Council areas should be treated with caution as the infant mortality rate was based on fewer than 20 deaths.
    4 -New Councils for Scotland
    +
    + \ No newline at end of file diff --git a/statsmodels/datasets/scotland/src/scotland_changes.html b/statsmodels/datasets/scotland/src/scotland_changes.html new file mode 100644 index 0000000..b8aba9e --- /dev/null +++ b/statsmodels/datasets/scotland/src/scotland_changes.html @@ -0,0 +1,364 @@ + + + GENUKI: Administrative Areas of Scotland + + + +

    + + +GENUKI Home page + + + + + + + +
    + + + +Administrative Regions
    of the British Isles
       +Contents
    +
    + +

    Administrative Areas of Scotland

    + +

    The first table below +shows the historic counties and their administrative sub-divisions before +the first round of changes and lists the successor regions for each, that +is the post-change regions which contain some or all of the original county +area. The second table shows the regions after the first round of changes +and lists their successor unitary authorities. In all cases +only the top-tier authority is shown - either the top-tier in a two-tier +arrangement or a single tier authority (shown italicised).

    + +

    The tables also show the Chapman County Codes (CCC) for each county and +region. These are unique 3 letter codes.

    + +

    For a brief description of the administrative changes in the United Kingdom +see - Local Government Changes in the United +Kingdom.

    + +

    The following abbreviations are used in these tables:

    + +

    + + + + + + + + +
    Key
    (C)County of a City
    (U)Unitary Authority
    +

    + +

    Single-tier local authorities are shown italicised.

    + +

    The links in the following table are to outline maps showing the location of each +county.

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Scotland - changes of 1975
    Historic CountyCCCAdministration until 1975Successor Regions
    AberdeenshireABDAberdeenshire
    +Aberdeen (C)
    Grampian
    Angus (1)ANSAngus
    +Dundee (C)
    Tayside
    Argyllshire (2)ARLArgyllshireStrathclyde
    +Highland
    AyrshireAYRAyrshireStrathclyde
    BanffshireBANBanffshireGrampian
    BerwickshireBEWBerwickshireBorders
    Bute (3)BUTButeStrathclyde
    CaithnessCAICaithnessHighland
    ClackmannanshireCLKClackmannanshireCentral
    DunbartonshireDNBDunbartonshireStrathclyde
    DumfriesshireDFSDumfriesshireDumfries and Galloway
    East LothianELNEast LothianLothian
    FifeFIFFifeFife
    Inverness-shire (4)INVInverness-shireHighland
    +Western Isles
    KincardineshireKCDKincardineshireGrampian
    Kinross-shireKRSKinross-shireTayside
    KirkcudbrightshireKKDKirkcudbrightshireDumfries and Galloway
    LanarkshireLKSLanarkshire
    +Glasgow (C)
    Strathclyde
    MidlothianMLNMidlothian
    +Edinburgh (C)
    Lothian
    +Borders
    MorayMORMorayGrampian
    +Highland
    NairnshireNAINairnshireHighland
    Orkney (5)OKIOrkneyOrkney
    PeeblesshirePEEPeeblesshireBorders
    PerthshirePERPerthshireTayside
    +Central
    RenfrewshireRFWRenfrewshireStrathclyde
    Ross and Cromarty (6)ROCRoss and CromartyHighland
    +Western Isles
    RoxburghshireROXRoxburghshireBorders
    SelkirkshireSELSelkirkshireBorders
    Shetland (7)SHIShetlandShetland
    StirlingshireSTIStirlingshireCentral
    +Strathclyde
    SutherlandSUTSutherlandHighland
    West LothianWLNWest LothianLothian
    +Central
    WigtownshireWIGWigtownshireDumfries and Galloway
    +

    + +

    The links in the following table are to maps provided by the Scottish Office.

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Scotland - changes of 1996
    Administration 1975-1996CCCSuccessor Unitary Authorities
    BordersBORThe Scottish Borders (U)
    CentralCENClackmannanshire (U)
    +Falkirk (U)
    +Stirling (U)
    Dumfries and GallowayDGYDumfries and Galloway (U)
    FifeFIFFife (U)
    GrampianGMPAberdeenshire (U)
    +Aberdeen City (U)
    +Moray (U)
    Highland (8)HLDHighland (U)
    LothianLTNCity of Edinburgh (U)
    +East Lothian (U)
    +Midlothian (U)
    +West Lothian (U)
    Orkney (5)OKIOrkney Islands (U)
    Shetland (7)SHIShetland Islands (U)
    Strathclyde (9)STDArgyll and Bute (U)
    +City of Glasgow (U)
    +East Ayrshire (U)
    +East Dunbartonshire (U)
    +East Renfrewshire (U)
    +Inverclyde (U)
    +North Ayrshire (U)
    +North Lanarkshire (U)
    +Renfrewshire (U)
    +South Ayrshire (U)
    +South Lanarkshire (U)
    +West Dunbartonshire (U)
    TaysideTAYAngus (U)
    +Dundee City (U)
    +Perth and Kinross (U)
    Western Isles (10)WISWestern Isles (U)
    +

    + +

    Notes

    + +
      +
    1. An old name for Angus is "Forfarshire". +
    2. Includes islands: Islay, Jura and Mull. +
    3. Consists of islands Arran and Bute. +
    4. Includes islands: Lewis (part), North Uist, South + Uist, and Skye. +
    5. Also "Orkney Isles", or "Orkney Islands", + but NOT "The Orkneys"! +
    6. Includes part of the island of Lewis. +
    7. Also "Shetland Isles", or "Shetland + Islands", but NOT "The Shetlands"! Originally known as +"Zetland". +
    8. Includes the island of Skye. +
    9. Includes islands: Arran, Bute, Islay, Jura and Mull. +
    10. Includes islands: Lewis, North Uist and South Uist. +
    + +
    Return to top of page
    + +

    © GENUKI and Contributors 1993, 1997

    +
    +

    Page created by Phil Lloyd in January 1993. Revised and updated in +September 1997 by Brian Pears.

    + +

    [Last updated: 13th February 1999 - Brian Pears]

    + + + diff --git a/statsmodels/datasets/scotland/src/scotland_devolution.html b/statsmodels/datasets/scotland/src/scotland_devolution.html new file mode 100644 index 0000000..062931e --- /dev/null +++ b/statsmodels/datasets/scotland/src/scotland_devolution.html @@ -0,0 +1,233 @@ +Devolution referendum 97 result + +

    Devolution referendum 97 result


    +
    saltire shield'The reason we need a parliament in Scotland is partly so that we can repair some of the damage done by the last Government to, for example, the health service and our manufacturing industry, and partly to ensure that anti-democratic experiments like using Scotland to rehearse the poll tax can never happen again.'
    +The Duke of Hamilton & Brandon, whose ancestors resisted the 1707 Treaty of Union, 9 th September 1997. +
    Lion Rampant
    +
    +

    Devolution referendum 1997 - the results

    +(See the note below concerning the Fife count by David Boothroyd).

    +

    +Ballot paper

    + +

    Final votes

    + + + + +
    I agree that there should be a Scottish Parliament1,775,04574.3 %
    I do not agree that there should be a Scottish Parliament614,40025.7 %

    + + + + + +
    I agree that a Scottish Parliament should have tax-varying powers1,512,88963.5 %
    I do not agree that a Scottish Parliament should have tax-varying powers870,26336.5 %
    + +

    Votes by Unitary Authority

    + +

    I agree that there should be a Scottish Parliament

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AuthorityYes votesYes %No votesNo %
    Orkney4,74957.3 %3,54142.7 %
    Dumfries & Galloway44,61960.7 %28,86339.3 %
    Perthshire & Kinross40,34461.7 %24,99838.3 %
    East Renfrewshire28,25361.7 %17,57338.3 %
    Shetland5,43062.4 %3,27537.6 %
    Scottish Borders33,85562.8 %20,06037.2 %
    Aberdeenshire61,62163.9 %34,87836.1 %
    Angus33,57164.7 %18,35035.3 %
    South Ayrshire40,16166.9 %19,90933.1 %
    Moray24,82267.2 %12,12232.8 %
    Argyll & Bute30,45267.3 %14,79632.7 %
    Stirling29,19068.5 %13,44031.5 %
    East Dunbartonshire40,91769.8 %17,72530.2 %
    Aberdeen65,03571.8 %25,58028.2 %
    Edinburgh155,90071.9 %60,83228.1 %
    Highland72,55172.6 %27,43127.4 %
    East Lothian33,52574.2 %11,66525.8 %
    Dundee49,25276.0 %15,55324.0 %
    Fife125,66876.1 %39,51723.9 %
    North Ayrshire51,30476.3 %15,93123.7 %
    South Lanarkshire114,90877.8 %32,76222.2 %
    Inverclyde31,68078.0 %8,94522.0 %
    Renfrewshire68,71179.0 %18,21321.0 %
    Western Isles9,97779.4 %2,58920.6 %
    West Lothian56,92379.6 %14,61420.4 %
    Midlothian31,68179.9 %7,97920.1 %
    Clackmannanshire18,79080.0 %4,70620.0 %
    Falkirk55,64280.0 %13,95320.0 %
    East Ayrshire49,13181.1 %11,42618.9 %
    North Lanarkshire123,06382.6 %26,01017.4 %
    Glasgow204,26983.6 %40,10616.4 %
    West Dunbartonshire39,05184.7 %7,05815.3 %
    Scotland1,775,04574.3 %614,40025.7 %

    + +

    I agree that a Scottish Parliament should have tax-varying powers

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    AuthorityYes votesYes %No votesNo %
    Orkney3,91747.4 %4,34452.6 %
    Dumfries & Galloway35,73748.8 %37,49951.2 %
    Scottish Borders27,28450.7 %26,49749.3 %
    Perthshire & Kinross33,39851.3 %31,70948.7 %
    East Renfrewshire23,58051.6 %22,15348.4 %
    Shetland4,47851.6 %4,19848.4 %
    Aberdeenshire50,29552.3 %45,92947.7 %
    Moray19,32652.7 %17,34447.3 %
    Angus27,64153.4 %24,08946.6 %
    South Ayrshire33,67956.2 %26,21743.8 %
    Argyll & Bute25,74657.0 %19,42943.0 %
    Stirling25,04458.9 %17,48741.1 %
    East Dunbartonshire34,57659.1 %23,91440.9 %
    Aberdeen54,32060.3 %35,70939.7 %
    Edinburgh133,84362.0 %82,18838.0 %
    Highland61,35962.1 %37,52537.9 %
    East Lothian28,15262.7 %16,76537.3 %
    Renfrewshire55,07563.6 %31,53736.4 %
    Fife108,02164.7 %58,98735.3 %
    Dundee42,30465.5 %22,28034.5 %
    North Ayrshire43,99065.7 %22,99134.3 %
    Inverclyde27,19467.2 %13,27732.8 %
    West Lothian47,99067.3 %23,35432.7 %
    South Lanarkshire99,58767.6 %47,70832.4 %
    Midlothian26,77667.7 %12,76232.3 %
    Western Isles8,55768.4 %3,94731.6 %
    Clackmannanshire16,11268.7 %7,35531.3 %
    Falkirk48,06469.2 %21,40330.8
    East Ayrshire42,55970.5 %17,82429.5 %
    North Lanarkshire107,28872.2 %41,37227.8 %
    West Dunbartonshire34,40874.7 %11,62825.3 %
    Glasgow182,58975.0 %60,84225.0 %
    Scotland1,512,88963.5 %870,26336.5 %
    + +
    +

    +

    How Scotland voted, region by region, in 1979

    + + + + + + + + + + + + + + + + +
    Region/Islands areaYes Votes% votes% electorateNo Votes% votes% electorateTurnout
    Shetland Islands 2,02027145,466733650
    Orkney Islands2,1042815 5,439723954
    Borders 20,7464027 30,780604067
    Dumfries & Galloway 27,1624026 40,239603864
    Grampian 94,9444828101,485523058
    Tayside 91,482493193,325513263
    Lothian 187,2215033186,421503366
    Highland 44,9735133 43,274493265
    Fife86,2525435 74,436463065
    Strathclyde 596,5195434508,599462963
    Central 71,2965536 59,105453066
    Western Isles6,2185628 4,933442250
    Scotland1,230,9375233*1,153,5024831*64*
    +*Percentage on register of 3,747,112 as adjusted by Secretary of State.

    +


    +

    Note by David Boothroyd concerning the Fife count

    + +I have been doing some work developing my website (which is now at +http://www.election.demon.co.uk/election.html) and while preparing the +results of the Scottish Parliament referendum I discovered a fairly big +discrepancy in the count from Fife Council.

    + +The Scottish Office press release giving the results of the referendum +(no. 1269/97) says that 166,554 people voted in Fife, which I presume +represents the number marked on registers as voting. On the first question, +the total number of votes (Yes, No and spoilt ballot papers) is 166,025.

    + +However on the second question, the total number of votes is 167,999 - +1,445 more than the number of ballot papers which should have been issued, +and 1,974 more than the number of ballot papers counted on the first question.

    + +All sources of results give the same figures and so I wrote to the Scottish +Office to ask them how this discrepancy might have come about. Their reply +suggests it may have resulted from voters demanding only the ballot paper +for the second question, though presiding officers were instructed to give +all voters both ballot papers, and such people would be marked as voting +and therefore included anyway.

    + +The Scottish Office verified that the results which were issued were those +which were certified by the counting officer in Fife and so they represent +the result of the referendum in spite of being inaccurate.

    + +


    +If anyone can shed any light on this please contact David Boothroyd at david@election.demon.co.uk

    + +


    + +

    +LinkExchange Network
    +
    + +Return to home page
    + + diff --git a/statsmodels/datasets/scotland/src/scotland_econ_summary.html b/statsmodels/datasets/scotland/src/scotland_econ_summary.html new file mode 100644 index 0000000..020b838 --- /dev/null +++ b/statsmodels/datasets/scotland/src/scotland_econ_summary.html @@ -0,0 +1,234 @@ + +Scottish Economic Bulletin: Economic Review + + +
    + +
    + + + + + +
    +
    Scottish Economic Bulletin 

    + + + + + +

     
    +

    The Scottish Economy

    +Gross Domestic Product +

    +Provisional estimates of GDP (income measure) for each UK Government Office Region/country are now available for 1996 with the publication of the Regional Accounts.7 Estimates for 1995 were also made available at county/former Scottish region level. +

    +Scottish GDP in 1996 was £54.43 billion, 8.6 per cent of UK GDP. GDP per head was £10,614, 99.1 per cent of the UK average. This was the fourth highest of the 12 UK Government Office Regions/countries - below only London, South East and Eastern - for the fifth successive year. +

    +GDP per head in Scotland relative to the UK increased strongly between 1989 and 1992, reflecting the stronger performance of the Scottish economy in the 1990-1992 UK recession. Since 1992, GDP per head has fluctuated around 99 per cent of UK GDP per head, reaching a peak of 100.2 per cent in 1995. +

    +Table 2 shows GDP per head in the former Scottish regions in 1995.8 It is instructive to look at trends and, accordingly, Table 2 also provides data for 1989. GDP per head was well above the UK average in both Grampian (133 per cent) and Lothian (124 per cent) in 1995. Although Grampian showed the smallest increase in GDP per head over the 1993-1995 period (and fell slightly relative to the UK), the level of GDP per head was third only to London and Berkshire across the UK, followed by Lothian. All other Scottish regions were below the UK average and GDP per head in the Highlands and Islands and in Fife was amongst the lowest in the UK. +

    +Table 2: GDP in the Scottish Regions, 1989 and 1995 +

    + + + + + + + + + + + + + + + + +
     GDP per head 1995 (£)GDP per head, 1990=100
    19891995
    Borders9,00380.188.3
    Central9,26589.190.8
    Dumfries and Galloway9,55586.493.7
    Fife8,31484.081.5
    Grampian13,566119.4133.0
    Highlands and Islands8,29880.481.4
    Lothian12,656111.4124.1
    Strathclyde9,48387.993.0
    Tayside9,61188.894.2
    Scotland10,24493.8100.2
    UK10,199100.0100.0
    +
    +Source: Office for National Statistics +

    +The improvement in Scottish GDP per head, relative to the UK, from 1989 has been evident across most Scottish regions. Lothian, Borders and Grampian have seen particularly marked improvements and only Fife had a lower relative level of GDP per head in 1995 than in 1989. Relative GDP per head in the Highlands and Islands has increased slightly but levels have fallen since the peak (of 88.8 per cent ) in 1991. +

    +

    Index of Production and Construction

    +The Scottish Office Education and Industry Department's quarterly Index of Production and Construction rose by 0.4 per cent in 1997 Q3. Excluding oil and gas, the Index rose by 0.5 per cent. At a broad sectoral level, output rose in manufacturing (0.9 per cent) and in electricity, gas and water supply (5.7 per cent), offset by falling output in construction (2.5 per cent) and mining and quarrying (1.8 per cent). The UK index (less oil and gas) rose by 0.7 per cent in 1997 Q3. +

    +An indication of the underlying trend in industrial output is obtained by comparing the last 4 quarters for which data are available (to 1997 Q3) with the previous 4 quarters (to 1996 Q3). Excluding oil and gas, the Index rose by 6.0 per cent over this period, as increases were recorded in manufacturing (7.4 per cent), construction (1.8 per cent), electricity, gas and water supply (5.7 per cent) and mining and quarrying (3.3 per cent). By comparison, the UK Index (less oil and gas) rose by 2.0 per cent over the same period. +

    +Since 1990, manufacturing output has increased by 25.6 per cent. Growth in UK manufacturing has been much more sluggish than in Scotland, growing by only 5.1 per cent over the same period. The influence of the electrical and instrument engineering sector (EIE) on Scottish manufacturing has been discussed in past editions of the Scottish Economic Bulletin and by outside commentators. Excluding EIE, manufacturing output in Scotland has declined by 7.7 per cent since 1990. UK manufacturing excluding EIE has increased by 1.8 per cent. +

    +In the year to 1997 Q3, the EIE sector continued to grow strongly - by 18.4 per cent. However, growth was also evident in 6 of the other 10 manufacturing sectors over the period. This is the continuation of a trend over the last year in which growth in the manufacturing sector has become more broadly based. Indeed as Chart 3 shows, manufacturing output excluding EIE has been increasing year-on-year in each quarter since 1996 Q4, a trend not seen since 1990 Q3. In the year to 1997 Q3, manufacturing output excluding EIE grew by 1.4 per cent, only slightly below the 1.5 per cent growth in the UK as a whole. +

    + +CHART 3 HERE +

    +Exports +

    +The manufacturing sector accounts for most of Scotland's external trade with the rest of the world. Estimates from the 1994 Input-Output Tables99 indicate that around three quarters of trade is in manufacturing. The Scottish Council Development and Industry (SCDI) annual survey of Scottish Manufactured Exports for 1996 was published in December 1997. In current prices, the value of Scottish manufactured exports10 was estimated to have risen by 6.4 per cent in 1996 to £18.42 billion. This represents a slower rate of growth than in recent years (20.3 per cent in 1995 and 24.8 per cent in 1994) and can be compared with growth of 8.9 per cent in UK manufactured exports (to £155.18 billion) in 1996. For the first time since 1988, UK manufactured exports growth outpaced that of Scotland and Scotland's share of UK exports fell marginally from 12.1 per cent in 1995 to 11.9 per cent in 1996. +

    +As shown in Table 3, four sectors - Office Machinery, Radio/TV/Communication Equipment, Whisky and Chemicals - continued to dominate Scottish manufactured exports in 1996, accounting for 75 per cent of the total. The electronics sector11 had a more mixed export performance in 1996 than in recent years. Exports grew by 6.9 per cent to £10.21 billion (55.5 per cent of total manufactured exports). This compares with growth of over 42 per cent in 1995. Exports from the Office Machinery sector - the largest exporting sector - rose by 14.3 per cent in 1996 to £6.83 billion (37.1 per cent of total manufactured exports). While this rate of growth was considerably lower than in 1995, the sector still contributed over 77 per cent to the total growth in manufactured exports in 1996. Exports from the other major element of Scotland's electronics industry - the Radio/TV/Communication Equipment sector - declined by 7.3 per cent to £3.00 billion. +

    +Table 3: Top Exporting Sectors in Scotland, 1996 +

    + + + + + + + + + + + + + + + + +
    Sector (SIC92)Value at current prices (£ million)Per cent of TotalNominal increase in value 1995-96: per centContribution to total export growth: per cent
    Office Machinery6,825.037.114.377.5
    Radio, Television & Communication3,003.816.3-7.3-21.6
    Equipment and Apparatus Whisky2,278.112.40.10.1
    Chemicals and Chemical Products1,706.49.39.213.1
    Machinery and Equipment nec802.24.418.411.4
    Other Food Products & Beverages446.02.4-10.7-4.8
    Fabricated Metal Products except Machinery and Equipment411.12.237.310.2
    Pulp, Paper and Paper Products387.02.1-2.0-0.7
    Coke, Refined Petroleum Products and Nuclear Fuel332.01.869.612.4
    Other Transport Equipment326.81.8-22.4-8.6
    Other sectors1,896.210.36.811.1
    All Manufacturing Industries18,414.6100.06.3100.0
    +
    +Source: Scottish Council Development and Industry +

    +Note: 1. Under SIC 92 Whisky is normally incorporated in the Food Products & Beverages sector. +

    +Exports from the whisky sector increased only marginally in 1996, up by 0.1 per cent to £2.28 billion (12.4 per cent of total manufactured exports). The Chemicals and Chemical Products sector experienced a further rise in exports in 1996, of 9.2 per cent to £1.71 billion (9.3 per cent of total manufactured exports). This follows growth of 9.0 per cent in 1995. An additional 19 industry sectors together represented 25 per cent of total manufactured exports in 1996. Export growth was recorded in 14 sectors. +

    +Overall the latest figures record a positive - and better than expected - performance by Scottish manufacturing in export markets during 1996. The SCDI quarterly index based on a selected panel survey of large exporters had provisionally estimated a fall of 6.8 per cent in manufactured exports. The rapid growth rates of recent years have slowed but export levels in most sectors continue to rise. Initial estimates from the SCDI quarterly index for 1997 suggest further growth of 12.0 per cent to £20.61 billion. +

    +Exports by Destination +

    +As shown in Table 4, the EU remained Scotland's main trading area in 1996 with a 58 per cent share of Scotland's exports. However, exports grew more modestly - by 2.9 per cent - in 1996. Six of the top ten individual country markets were in the EU, the others being the USA, Japan, Switzerland and Norway. The latest survey results confirm France as Scotland's largest export market for the fourth successive year, despite a drop in the actual value of exports of 5.4 per cent to £2.80 billion. (15.2 per cent of total Scottish manufactured exports). +

    +Table 4: Destination of Scottish Exports in 1996 +

    + + + + + + + + + + + + +
     Value (£ million, current prices)Per cent of totalNominal percentage growth in 1996Contribution to overall growth: per cent
    European Union10,75658.42.927.5
    North America2,31812.636.856.8
    Other Asia Pacific1,5568.4-14.2-23.5
    EFTA1,0725.816.413.7
    Japan8124.46.34.4
    Middle East5132.823.38.8
    Latin America5102.84.52.0
    Eastern Europe3962.253.512.6
    Africa3111.7-0.6-0.2
    Australasia1710.9-11.9-2.1
    +
    +Source: Scottish Council Development and Industry +

    +Exports to the USA rose by 38.3 per cent in 1996 to £2.22 billion. The USA was responsible for nearly 50 per cent of the increase in total Scottish exports and overtook Germany as the second largest market. There was a strong upturn in sales across the Office Machinery, Radio/TV/Communication Equipment, Coke/Petroleum and Chemicals sectors; the strength of the US economy a causal factor. North America displaced Other Asia Pacific as Scotland's second largest trading area. +

    +Exports to Japan continued to increase and remained the 7th largest country market for Scottish goods. Total exports to the Other Asia Pacific countries fell by 14.2 per cent in 1996, compared with strong growth of 30.9 per cent in 1995. However, this was almost entirely due to a large drop in exports to Malaysia; there were significant rises in exports to Hong Kong, Singapore and Taiwan. Elsewhere, exports to most other regions showed significant growth with sales to Eastern Europe up 53.5 per cent and exports to the Middle East up 23.3 per cent. Growth in sales were also recorded to the EFTA countries, while exports to Latin America continued to grow modestly. There was a marginal decline in sales to Africa following last year's significant increase, while exports to Australasia continued to decline. +

    +The Sterling Exchange Rate and Exports +

    +Inevitably, the strength of sterling has put pressure on Scottish exports. As one would expect, the exposure to exchange rate movements varies by sector in Scotland. This is illustrated in Table 5 which shows, at the broad sectoral level, the proportion of total domestic (i.e. Scottish) output dependent on exports outwith the UK (i.e. to the rest of the world, ROW) and the import content of that output from the same source. The table also shows the corresponding proportions for Scotland's trade with the rest of the UK (RUK). +

    +Table 5: The External Orientation of Scottish Industry, 1994 +

    + + + + + + + + + + + + + + +
    IndustryProportion of domestic output dependent on :Components of gross domestic output
    Exports to RUKExports to ROWImports from RUKImports from ROW
    Agriculture, Forestry and Fishing19.712.97.41.4
    Mining and Quarrying41.029.118.96.8
    Energy and Water Supply6.41.07.87.7
    Manufacturing26.741.818.818.2
    Construction6.00.017.73.9
    Transport and Communication20.08.48.92.5
    Distribution and Catering14.10.05.71.0
    Financial and Business Services12.35.810.81.9
    Other Services4.12.74.11.2
    Whole Economy16.516.312.07.3
    +
    +Source: The Scottish Office +

    +The manufacturing sector is clearly the most sensitive to the effects of exchange rate changes: over 40 per cent of output is exported to ROW and almost 20 per cent of inputs are imported from ROW. Within the sector (though not shown in the table), 2 industries - drink and electrical and instrument engineering - export more than two thirds of their output to ROW, while chemicals and electrical and instrument engineering also import more than a third of inputs. By contrast, the output of the service sector is much more dependent on the home market, relying less on exports to generate value added. The gross output of the service sector also embodies a lower import content. +

    +For manufacturing, available evidence from the SCDI for 1997 suggests that the strength of sterling is causing difficulties in terms of reduced margins and some job losses. However, as described above, it appears that it has not yet impacted upon the level of export sales, only profitability. +

    +Business survey evidence in Scotland does point to an adverse impact on exports resulting from sterling's strength but results are far from conclusive. The Scottish Chambers' Business Survey reported a decline in export orders and sales in 1997 Q4, as in Q3 and results from Scottish Engineering also revealed that export orders declined for the third successive quarter, falling in all sectors of the industry. By contrast, the CBI Industrial Trends Survey reported a return to growth in export orders and deliveries also increased significantly in the fourth quarter. However, optimism regarding export prospects fell markedly and, as one might expect, respondents continued to believe that prices would be the most important constraint on export orders over the coming months. +

    +One particular area in which the exchange rate may have been expected to affect activity levels is travel and tourism both to and from overseas. International Passenger Survey (IPS) evidence for the 12 months to November 1997 shows that the number of visitors to the UK rose by 3 per cent, compared with the year to November 1996. The number of visits from North America increased by 14 per cent, while the number of visits from Western Europe was broadly static. Visits from Other Areas rose by 4 per cent. The total number of UK residents' visits abroad during the 12 months ending November 1997 rose by 11 per cent compared with a year earlier. Visits to Western Europe increased by 12 per cent, while visits to North America and Other Areas increased by 2 per cent and 10 per cent respectively. Overseas earnings rose by 2 per cent in current prices in the year to November and expenditure by UK residents rose by 6 per cent. This resulted in an increase in the deficit on the travel account of the balance of payments from £3.8 billion to £4.6 billion over the period. +

    +The change in the composition of the tourism market appears to be consistent with the larger rise in sterling against the main European currencies over the last 18 months and has implications for Scotland. North America, Germany and France all account for higher proportions of overseas visits to Scotland than to the UK as a whole. However, a complicating factor is that US and French visitors tend to have a high propensity for travelling as part of a package holiday, paid for in advance with prices based on an exchange rate determined possibly months before the holiday is taken. Consequently, the impact of changes in exchange rates on visits from US and French residents may be delayed. By contrast, the principal types of Dutch and German holidaymakers to Scotland tend to travel independently and to holiday on an ad hoc basis at relatively short notice. The impact of the strength of sterling on these groups is likely to have been demonstrated relatively quickly. +

    +Some IPS data for Scotland are available to the third quarter of 1997. The total number of overnight visits from overseas tourists was broadly unchanged in the first 3 quarters of the year, compared with the same period in 1996. However, the total from Western Europe fell by 6 per cent and overnight visits from North America were broadly unchanged. By contrast, visits from Other Areas rose by 12 per cent. Evidence for Scotland from the United Kingdom Tourism Survey, covering the first 3 quarters of 1997, reported a 3 per cent fall in the number of tourist trips to Scotland by UK residents compared with the same period in 1996. This compares with growth rates of around 15 per cent in each of the previous 2 years. The value of these trips increased by 7 per cent in current prices, broadly equal to growth in the UK over the same period but lower than growth in 1995 and 1996. +

    +Labour Market +

    +Unemployment +

    +There are 2 main sources of unemployment data. An estimate of unemployment under the International Labour Office definition - ILO unemployment - is provided by the Labour Force Survey (LFS), a quarterly sample survey of households. The second measure of unemployment - the claimant count - is based on records of those claiming Jobseeker's Allowance and National Insurance Credits at Employment Service Offices. The Office for National Statistics announced on 3 February that (from April) its assessment of the labour market would give more weight than previously to the LFS, which is conducted according to internationally agreed definitions drawn up by the ILO. +

    +ILO unemployment (not seasonally adjusted) in Scotland fell by 32,000 in the year to Autumn (September to November) 1997 to 185,000. The rate of unemployment fell by 1.4 percentage points to 7.4 per cent of the workforce. ILO unemployment in the UK fell by 379,000 in the year to Autumn 1997 to 1,919,000 or 6.6 per cent, 0.8 percentage points below the Scottish rate. Unemployment fell in every Government Office Region (GOR) of the UK. Four GORs - Merseyside, North East, London and Northern Ireland - have higher ILO unemployment rates than Scotland. +

    +Claimant count unemployment (seasonally adjusted) in Scotland fell throughout 1997 but rose by 1,200 in January 1998 to 141,100, the first rise since April 1996. The rate of unemployment rose by 0.1 percentage point to 5.8 per cent of the workforce, 0.8 percentage points above the UK rate. Of the UK GORs, Merseyside, North East, and Northern Ireland have higher unemployment rates than Scotland, while London has the same rate. +

    +The claimant count measure of unemployment in Scotland remains significantly lower than the ILO measure. The difference between the ILO measure and the claimant count measure12 in Autumn 1997 was 42,000, a rise of 7,000 on Autumn 1996. +

    +In the July 1997 Budget, the Government set out a New Deal to help young people, the long term unemployed, lone parents and the disabled move from Welfare to Work. The New Deal for young claimants (aged 18-24) who have been unemployed for 6 months or more was launched in 12 "pathfinder" areas of the UK (including Tayside) in January and the programme will be launched nationally from April. The New Deal for long term unemployed adults (those aged 25 and over who have been unemployed for more than 2 years) will be launched in June.13 +

    +Table 6 summarises the eligibility for the New Deal for these two groups in January 1998. It can be seen that, in Scotland there were 11,300 youth unemployed of over 6 months duration and 17,100 aged 25 and over who had been unemployed for 2 years or more in January 1998 (7.4 per cent and 11.3 per cent of total claimant unemployed, respectively). The total number in these 2 groups has fallen significantly over the last year - by 17,800 (38.5 per cent). +

    +Table 6: Claiment Count Unemployment for New Deal Target Groups +

    + + + + + + + +
     Youth (18-24) Unemployment, over 6 months durationAdult (25+) Unemployment, over 2 years duration
    January 1997January 1998Percentage changeJanuary 1997January 1998Percentage change
    Scotland18,10011,300-37.728,10017,100-39.1
    Per cent of claimant count9.87.4..15.211.3..
    UK198,300118,400-40.3357,000216,300-39.4
    Scotland as a percentage of the UK9.19.5..7.97.9..
    +
    +Source: Office for National Statistics

    +Note: 1. Percentages calculated with reference to unrounded figures. +

    +Employment +

    +There are two main official sources of quarterly employment data: the Workforce in Employment series, which is a survey of employers, and the Labour Force Survey. +

    +An increase of 43,000 in total employment (not seasonally adjusted) in Scotland was recorded by the LFS over the year to Autumn 1997 to reach a new (Autumn) peak of 2,305,000. This was due to increases of 24,000 in the number of employees, 14,000 in the number of self-employed and 5,000 in the number of people either on government supported training and employment programmes or who were unpaid family workers. Given the fall of 32,000 in the level of ILO unemployment, the number of people classed as economically active increased by 10,000 in the year to Autumn 1997. Increases in total employment were evident in most UK GORs, falling only in the North East, Merseyside and Wales. In the UK as a whole, total employment increased by 456,000. +

    +An increase of 23,000 in the civilian workforce (not seasonally adjusted) was recorded by the Workforce in Employment series over the year to September 1997 to reach a new peak of 2,277,000, (7,000 higher than the 1991 peak and 202,000 above the trough in 1983). This comprised increases of 19,000 in the number of self-employed and 6,000 in the number of employees (comprising increases across the service sector (14,000) and decreases in manufacturing (5,000) and other sectors (3,000)) over the year, partly offset by a fall of 2,000 in the number on work-related government training programmes. Increases in the civilian workforce were evident in all GB regions, except East Anglia and Yorkshire and Humberside. In Great Britain as a whole, the civilian workforce increased by 349,000. +

    +The growth in the number of employees has been due to the increase in part-time employment.14 In the year to September 1997, part-time employment rose by 32,000 (17,000 males and 15,000 females), offset by a fall of 26,000 in full-time employment (24,000 males and 2,000 females). This is a continuation of a trend over the past few years in which part-time employment has increased - in each year since 1992 (data are available from 1991) - to a level 104,000 higher (46,000 males and 58,000 females) in 1997 than 5 years earlier. By contrast, full-time employment has fallen consistently and in September 1997 was 90,000 lower than 1992 levels (86,000 males and 4,000 females). +

    + + +
      +


    +7Published in Economic Trends, February 1998.
    +8GDP estimates of the Scottish regions measure the value of goods and services produced in an area; they do not measure the income of the residents in an area, as is the case for Government Office Regions/countries of the UK. There is a wide variation between areas in terms of size and population; in order to compare the economic performance of areas it is necessary to use an indicator such as GDP per head of population. Resident population is used as the denominator. The implication of using this in conjunction with the workplace-based GDP figures is that the productivity of urban areas into which workers commute will tend to be overstated by this indicator, while that of surrounding areas in which they live will be understated.
    +9Input -Output Tables and Multipliers for Scotland, 1994, The Stationery Office.
    +10It should be noted that the data presented by the SCDI for Scottish manufactured exports refer to gross output. They do not measure the level of (or changes in) the value-added component of Scottish manufactured exports (that is, the wages and profits accruing to domestic suppliers of labour and capital).
    +11Electronics is classified by the SCDI as consisting of 4 industry groupings: Office Machinery, Electrical Machinery and Apparatus nec, Radio/TV/Communication Equipment and Apparatus and Medical, Precision and Optical Instruments, Watches and Clocks.
    +12Average of September to November levels (not seasonally adjusted).
    +13The New Deal for young people provides a period of advice and guidance -'the Gateway' - to find unsubsidised jobs. Thereafter, four options will be available: a subsidised job with an employer; a place on an Environment Task Force; a job in the voluntary sector; or full-time education or training. The first 3 options involve at least one day a week training and options 2 and 3 include top-ups to existing benefits. Long term unemployed adults under the New Deal will be able to benefit from two options: a subsidised job with an employer; or opportunities to study for up to 12 months in full-time employment-related courses designed to reach an accredited qualification.
    +14Part-time employment is defined here as working less than 30 hours per week. +
    +
    +Back to previous section +Back to contents +On to next section + +
    + +
    We welcome your comments on this site. +
    Prepared 13 March 1998
    + +
    + +
    + +
    + + + diff --git a/statsmodels/datasets/scotland/src/scotland_economics.html b/statsmodels/datasets/scotland/src/scotland_economics.html new file mode 100644 index 0000000..63f007e --- /dev/null +++ b/statsmodels/datasets/scotland/src/scotland_economics.html @@ -0,0 +1,332 @@ + + + + + +Cross-sectional dataset viewer v1.1 + + + + + + + + + + + + + +
    + Home + + StatSearch + + Text Search + + StatStore + + FAQ + +   +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Dataset Display - Cross-Sectional

    Dataset Name: + RT331605 +
    Title: + + Labour market statistics: Scotland +
    Description:Labour market statistics: Scotland

    This dataset has been compiled from data published in Regional Trends 33, 1998 edition published on 25 June 1998.

    Source: + Office for National Statistics +
    Time Frame: + 1996-1998 +
    Geographic Coverage: + United Kingdom + +
    Universe: + Various +
    Measure: + Various +
    Units: + See table +
    Scalar: + none +
    Formula: + various +
    Substitution Details:

    +
    ValueMeaning
    ..Not Available
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table Dimensions
    Please select at least one item from each list and "Display Selection" or choose "Display All"
    To select list items either hold down 'Ctrl' key and click each item required, or click the first item and hold down the mouse button whilst scrolling down the list.
    + Region + + 7 + + Measure + + +
    + + + +
     
    To change your selection, click in the appropriate box
    + + + +
    + + + + + + + + + + +
    + + + Table1 + + + + +
    Economically active 1996-97 (percentages)23Total in employment: 1996-97 (thousands)34In employment 1996-97 Manufacturing (percentages)13ILO unemployment rate 1996-97 (percentages)13Total claimant count: January 1998 (thousands)Claimant count: of which females: January 1998 (percentage)Claimant count: of which long-term unemployed January 1998 (percentages)5Average gross weekly all persons full-time earnings, April 1997 (£)16
    United Kingdom78.626462.019.18.01479.323.226.2366.3
    Scotland77.12277.017.18.7152.222.022.4336.8
    Aberdeen City82.4113.014.34.93.621.017.6404.8
    Aberdeenshire80.2112.014.5..2.826.516.3330.9
    Angus86.359.016.9..3.228.323.3320.0
    Argyll and Bute80.441.0..11.92.927.122.8305.2
    Clackmannanshire64.717.0....1.622.027.5..
    Dumfries and Galloway79.067.017.7..4.424.323.4300.2
    Dundee City72.260.014.69.36.221.226.3327.4
    East Ayrshire75.250.023.114.24.520.528.9307.6
    East Dunbartonshire81.153.0....2.223.217.3329.2
    East Lothian80.341.0....1.720.516.3310.3
    East Renfrewshire83.042.016.8..1.423.820.9..
    Edinburgh, City of74.5207.010.36.611.122.120.4362.8
    Eilean Siar (Western Isles)83.815.0....1.419.923.8..
    Falkirk77.666.023.4..4.521.519.9335.6
    Fife77.9147.021.79.311.122.522.7325.2
    Glasgow City65.3210.014.215.226.919.429.5341.5
    Highland80.9100.012.99.37.925.920.9296.2
    Inverclyde80.239.026.5..2.518.512.7323.4
    Midlothian84.839.0....1.619.413.7309.0
    Moray86.443.014.3..2.227.215.4285.0
    North Ayrshire73.558.027.49.15.123.719.2317.8
    North Lanarkshire74.7133.021.212.410.720.820.1336.7
    Orkney Islands87.810.0....0.426.824.4..
    Perth and Kinross86.666.011.3..2.823.017.8..
    Renfrewshire78.580.020.111.35.520.523.3336.1
    Scottish Borders, The80.649.020.6..2.123.712.3303.5
    Shetland Islands84.811.0....0.423.214.2..
    South Ayrshire79.248.022.910.33.623.623.4346.2
    South Lanarkshire78.4146.022.08.38.221.721.8319.1
    Stirling77.237.0....2.123.019.5346.6
    West Dunbartonshire71.536.0..13.64.219.327.3319.0
    West Lothian82.278.032.6..3.521.210.2335.5
    +
    + + + + +
    Footnotes
    1 -In some cases sample sizes are too small to provide reliable estimates.
    2 -Based on the population of working age.
    3 -Data are from the Labour Force Survey and relate to the period March 1996 - February 1997.
    4 -Includes those on government-supported employment and training programmes and unpaid family workers.
    5 -Persons who have been claiming for more than 12 months as a percentage of all claimants.
    6 -Average gross weekly earnings estimates have been derived from the New Earnings Survey and relate to full-time employees on adult rates whose pay for the survey pay-period was not affected by absence.
    7 -New Councils for Scotland
    +
    + \ No newline at end of file diff --git a/statsmodels/datasets/scotland/src/scotland_education.html b/statsmodels/datasets/scotland/src/scotland_education.html new file mode 100644 index 0000000..6d65965 --- /dev/null +++ b/statsmodels/datasets/scotland/src/scotland_education.html @@ -0,0 +1,337 @@ + + + + + +Cross-sectional dataset viewer v1.1 + + + + + + + + + + + + + +
    + Home + + StatSearch + + Text Search + + StatStore + + FAQ + +   +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Dataset Display - Cross-Sectional

    Dataset Name: + RT331603 +
    Title: + + Education and training: Scotland +
    Description:Education and training: Scotland

    This dataset has been compiled from data published in Regional Trends 33, 1998 edition published on 25 June 1998.

    Source: + The Scottish Office Home Department; The Scottish Office Education and Industry Department; Department for Education and Employment +
    Time Frame: + 1995-1997 +
    Geographic Coverage: + United Kingdom + +
    Universe: + various +
    Measure: + various +
    Units: + See table +
    Scalar: + none +
    Formula: + none +
    Substitution Details:

    +
    ValueMeaning
    -Negligible (less than half the final digit shown)
    ..Not Available
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table Dimensions
    Please select at least one item from each list and "Display Selection" or choose "Display All"
    To select list items either hold down 'Ctrl' key and click each item required, or click the first item and hold down the mouse button whilst scrolling down the list.
    + Region + + 8 + + Measure + + +
    + + + +
     
    To change your selection, click in the appropriate box
    + + + +
    + + + + + + + + + + +
    + + + Table + + + + +
    Day nursery places per 1,000 population aged under 5 years Nov. 19961Children under 5 in education (percentages) Jan. 19972Pupil/teacher ratio: primary schools (numbers) 1996/97Pupil/teacher ratio: secondary schools (numbers) 1996/97Pupils and students participating in post-compulsory education, (percentages) 1995/963Percentage of pupils in last year of compulsory schooling with no graded results 1995/9645Percentage of pupils in last year of compulsory schooling with 5 or more Grades 1-3 SCE Standard Grade (or equivalent) 1995/9645Percentage of employees of working age receiving job-related training 1996-9767
    United Kingdom..59.022.816.278.07.445.514.5
    Scotland80.639.019.613.093.03.653.612.5
    Aberdeen City126.050.019.912.9113.01.953.015.4
    Aberdeenshire34.434.018.613.881.09.258.211.4
    Angus70.238.019.113.089.0..62.0..
    Argyll and Bute38.813.017.312.481.08.654.1..
    Clackmannanshire90.947.021.213.478.0..63.6..
    Dumfries and Galloway21.344.018.912.793.02.760.2..
    Dundee City114.359.018.012.2117.00.646.9..
    East Ayrshire43.443.021.013.589.06.450.2..
    East Dunbartonshire76.211.022.213.994.0..71.2..
    East Lothian48.656.020.613.466.012.746.0..
    East Renfrewshire146.033.022.314.091.0..78.8..
    Edinburgh, City of132.350.020.713.4109.02.356.714.7
    Eilean Siar (Western Isles)12.6..13.09.5102.03.260.9..
    Falkirk81.840.021.313.691.04.049.4..
    Fife20.251.019.113.4106.05.352.113.5
    Glasgow City99.853.019.312.488.012.741.915.3
    Highland41.519.017.311.894.0..60.0..
    Inverclyde105.827.021.413.695.0..56.2..
    Midlothian49.054.019.913.677.03.853.0..
    Moray21.631.018.912.291.08.054.3..
    North Ayrshire115.323.021.213.472.010.545.6..
    North Lanarkshire64.425.020.213.494.02.347.511.8
    Orkney Islands31.852.015.110.997.0-69.3..
    Perth and Kinross93.245.018.712.578.010.253.9..
    Renfrewshire119.631.022.013.7103.0..55.915.5
    Scottish Borders, The56.922.018.512.192.01.361.7..
    Shetland Islands14.842.012.78.179.0..73.6..
    South Ayrshire70.436.021.013.699.0..61.9..
    South Lanarkshire103.915.020.713.792.03.651.513.7
    Stirling200.546.019.513.381.02.961.4..
    West Dunbartonshire81.947.020.314.0108.0..52.5..
    West Lothian53.651.020.313.580.06.346.8..
    +
    + + + + +
    Footnotes
    1 -Social Work Provision only (local authority and registered); includes Day Nurseries, Childrens Centres, Family Centres and Private Nursery Schools. Population data used mid-1996 estimates.
    2 -Figures relate to all pupils as a percentage of the three and four year old population.
    3 -In Scotland pupils in S5 at September 1995. The figure for the United Kingdom relates to 16 year olds in education at the beginning of the academic year. Some students in Scotland participate on short courses. They are counted for each course; hence there is double counting which results in some percentages being greater that 100.
    4 -Pupils in their last year of compulsory schooling as a percentage of the school population of the same age.
    5 -Figures relate to all schools.
    6 -Males aged 16-64 and females aged 16-59. Job-related education or training received in the four weeks before interview. In some cases sample sizes are too small to provide reliable estimates.
    7 -Data relate to the period March 1996 to February 1997. Figure for United Kingdom relates to Great Britain.
    8 -New Councils for Scotland
    +
    + \ No newline at end of file diff --git a/statsmodels/datasets/scotland/src/scotland_housing.html b/statsmodels/datasets/scotland/src/scotland_housing.html new file mode 100644 index 0000000..751017a --- /dev/null +++ b/statsmodels/datasets/scotland/src/scotland_housing.html @@ -0,0 +1,333 @@ + + + + + +Cross-sectional dataset viewer v1.1 + + + + + + + + + + + + + +
    + Home + + StatSearch + + Text Search + + StatStore + + FAQ + +   +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Dataset Display - Cross-Sectional

    Dataset Name: + RT331604 +
    Title: + + Housing and households: Scotland +
    Description:Housing and households: Scotland

    This dataset has been compiled from data published in Regional Trends 33, 1998 edition published on 25 June 1998.

    Source: + The Scottish Office Development Department +
    Time Frame: + 1996 and 1997 +
    Geographic Coverage: + United Kingdom + +
    Universe: + various +
    Measure: + various +
    Units: + See table +
    Scalar: + various +
    Formula: + none +
    Substitution Details:

    +
    ValueMeaning
    .Not applicable
    ..Not available
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table Dimensions
    Please select at least one item from each list and "Display Selection" or choose "Display All"
    To select list items either hold down 'Ctrl' key and click each item required, or click the first item and hold down the mouse button whilst scrolling down the list.
    + Region + + 5 + + Measure + + +
    + + + +
     
    To change your selection, click in the appropriate box
    + + + +
    + + + + + + + + + + +
    + + + Table + + + + +
    Housing starts: private enterprise (numbers) 19961Housing starts: housing associations, local authorities etc (numbers) 19962Stock of dwellings (thousands) 19963Households (thousands) 1996Local authority tenants: average weekly unrebated rent per dwelling (£) April 1997Council Tax (£) April 19974
    United Kingdom151826.031224.024607.024115.3...
    Scotland15759.04768.02232.02136.233.6783.0
    Aberdeen City1142.0136.0100.096.827.5712.0
    Aberdeenshire533.090.092.087.129.7643.0
    Angus272.0167.048.046.223.5679.0
    Argyll and Bute300.0266.043.037.735.0801.0
    Clackmannanshire125.037.021.020.029.6753.0
    Dumfries and Galloway388.0159.066.062.332.7714.0
    Dundee City182.0151.072.067.536.8920.0
    East Ayrshire262.030.051.050.126.9779.0
    East Dunbartonshire236.06.042.041.329.6771.0
    East Lothian469.0165.038.036.328.8724.0
    East Renfrewshire295.096.034.033.128.9682.0
    Edinburgh, City of1496.0525.0206.0198.243.8837.0
    Eilean Siar (Western Isles)75.010.013.011.636.5599.0
    Falkirk651.066.061.059.129.8680.0
    Fife202.0251.0152.0145.630.3747.0
    Glasgow City1884.01056.0286.0271.940.4982.0
    Highland664.0161.095.085.838.5719.0
    Inverclyde291.0126.039.038.034.6831.0
    Midlothian362.061.032.030.825.2858.0
    Moray327.00.037.034.928.0652.0
    North Ayrshire344.0157.060.057.730.2718.0
    North Lanarkshire1557.0175.0130.0128.531.3787.0
    Orkney Islands0.06.09.08.133.8515.0
    Perth and Kinross448.0147.059.055.028.2732.0
    Renfrewshire732.066.077.075.132.5783.0
    Scottish Borders, The245.098.049.044.929.7612.0
    Shetland Islands131.021.010.08.936.1486.0
    South Ayrshire182.080.049.047.630.7765.0
    South Lanarkshire488.098.0124.0122.335.3793.0
    Stirling341.066.034.033.133.6776.0
    West Dunbartonshire193.0139.042.040.433.4978.0
    West Lothian942.0156.061.060.328.3792.0
    +
    + + + + +
    Footnotes
    1 -Includes estimates for outstanding returns.
    2 -Based on incomplete returns.
    3 -Number of residential dwellings from the Council Tax Register.
    4 -Amounts shown for Council Tax are headline Council Tax for the area of each billing authority for B and D, 2 adults before transitional relief and benefit. The ratios of other bands are: A 6/9, B7/9, C 8/9, E 11/9, F 13/9, G 15/9 and H 18/9.
    5 -New Councils for Scotland
    +
    + \ No newline at end of file diff --git a/statsmodels/datasets/scotland/src/scotland_population.csv b/statsmodels/datasets/scotland/src/scotland_population.csv new file mode 100644 index 0000000..7b3a04a --- /dev/null +++ b/statsmodels/datasets/scotland/src/scotland_population.csv @@ -0,0 +1,59 @@ +Dataset Name:,"RT331601" +Title:,"Area and population, 1996: Scotland" +Description:,"Area and population, 1996: Scotland + +This dataset has been compiled from data published in Regional Trends 33, 1998 edition published on 25 June 1998. + +" +Source:,"Office for National Statistics; General Register Office for Scotland" +Time Frame:,"1996" +Geographic Coverage:,"United Kingdom" +Universe:,"UK population" +Measure:,"various" +Units:,"See table" +Scalar:,"various" +Formula:,"none" +==================================== +Table + ,"Area (sq km)","Persons per sq km","Population (thousands) Males","Population (thousands) Females","Population (thousands) Total","Total population percentage change 1981-1996","Total period fertility rate (TPFR)<1>","Standardised mortality ratio (UK=100) (SMR)<2>","Percentage of population aged under 5","Percentage of population aged 5-15","Percentage of population aged 16 up to pension age<3>","Percentage of population of pension age or over<4>", + +"United Kingdom","242910.00","242.00","28856.00","29946.00","58801.00","4.30","1.72","100.00","6.40","14.20","61.30","18.10", +"Scotland","78133.00","66.00","2486.00","2642.00","5128.00","-1.00","1.55","116.00","6.10","13.90","63.10","17.80", +"Aberdeen City","186.00","1169.00","106.00","111.00","217.00","2.20","1.35","105.00","5.80","12.30","65.80","17.10", +"Aberdeenshire","6318.00","36.00","113.00","114.00","227.00","20.40","1.64","97.00","6.50","15.30","63.80","15.30", +"Angus","2181.00","51.00","54.00","57.00","111.00","4.90","1.67","113.00","6.00","13.90","61.60","19.40", +"Argyll and Bute","6930.00","13.00","45.00","46.00","91.00","-0.10","1.70","109.00","5.50","13.60","61.10","20.80", +"Clackmannanshire","157.00","312.00","24.00","25.00","49.00","1.20","1.76","115.00","6.60","14.60","63.00","16.70", +"Dumfries and Galloway","6439.00","23.00","72.00","76.00","148.00","1.40","1.78","107.00","5.90","13.80","60.30","21.20", +"Dundee City","65.00","2306.00","72.00","79.00","150.00","-11.40","1.57","118.00","5.90","13.30","62.00","19.90", +"East Ayrshire","1252.00","98.00","59.00","63.00","122.00","-3.90","1.64","114.00","6.30","14.50","61.90","18.30", +"East Dunbartonshire","172.00","645.00","54.00","57.00","111.00","1.00","1.56","102.00","5.80","14.20","64.50","16.50", +"East Lothian","678.00","130.00","43.00","45.00","88.00","9.20","1.77","112.00","6.40","13.70","61.50","19.50", +"East Renfrewshire","173.00","510.00","43.00","45.00","88.00","9.80","1.67","96.00","6.20","14.60","63.00","17.10", +"Edinburgh, City of","262.00","1711.00","217.00","232.00","449.00","0.60","1.34","111.00","5.70","11.60","65.80","17.90", +"Eilean Siar (Western Isles)","3134.00","9.00","14.00","15.00","29.00","-8.50","1.65","117.00","5.50","15.10","59.80","20.70", +"Falkirk","299.00","478.00","69.00","74.00","143.00","-1.50","1.58","121.00","6.20","13.70","63.80","17.40", +"Fife","1323.00","264.00","169.00","180.00","349.00","2.30","1.55","109.00","6.00","14.40","62.30","18.30", +"Glasgow City","175.00","3522.00","294.00","322.00","616.00","-13.50","1.48","137.00","6.30","13.30","63.20","18.10", +"Highland","25784.00","8.00","102.00","106.00","209.00","7.10","1.77","109.00","6.20","14.90","61.80","18.10", +"Inverclyde","162.00","538.00","42.00","45.00","87.00","-13.90","1.66","138.00","6.20","14.60","61.70","18.60", +"Midlothian","356.00","225.00","39.00","41.00","80.00","-4.20","1.61","119.00","6.10","14.30","64.20","16.40", +"Moray","2238.00","39.00","43.00","44.00","87.00","3.60","1.76","108.00","6.60","14.60","61.80","18.00", +"North Ayrshire","884.00","158.00","67.00","72.00","140.00","1.60","1.63","115.00","6.20","15.00","62.20","17.60", +"North Lanarkshire","474.00","688.00","158.00","168.00","326.00","-4.60","1.66","126.00","6.40","14.90","63.80","15.90", +"Orkney Islands","992.00","20.00","10.00","10.00","20.00","3.20","1.78","106.00","6.00","15.30","61.20","18.50", +"Perth and Kinross","5311.00","25.00","64.00","69.00","133.00","8.80","1.61","103.00","5.60","13.80","60.70","20.90", +"Renfrewshire","261.00","683.00","86.00","92.00","179.00","-3.50","1.59","125.00","6.30","14.10","63.70","17.00", +"Scottish Borders, The","4734.00","22.00","51.00","55.00","106.00","4.80","1.67","100.00","5.80","13.30","60.20","21.80", +"Shetland Islands","1438.00","16.00","12.00","11.00","23.00","-12.60","1.77","117.00","7.00","15.90","62.90","14.90", +"South Ayrshire","1202.00","95.00","55.00","60.00","115.00","1.30","1.55","105.00","5.50","13.70","61.10","20.90", +"South Lanarkshire","1771.00","174.00","149.00","159.00","307.00","-0.80","1.55","125.00","6.30","14.50","63.80","16.50", +"Stirling","2196.00","38.00","40.00","43.00","83.00","3.10","1.55","110.00","5.70","13.60","63.80","17.90", +"West Dunbartonshire","162.00","590.00","46.00","50.00","96.00","-9.50","1.70","130.00","6.40","15.30","61.40","17.80", +"West Lothian","425.00","355.00","74.00","77.00","151.00","8.30","1.63","126.00","6.80","15.10","65.80","13.20", +==================================== +Footnotes +"1 - The total period fertility rate (TPFR) is the average number of children which would be born to a woman if the current pattern of fertility persisted throughout her child-bearing years." +"2 - Adjusted for the age structure of the population." +"3 - Pension age is 65 for males and 60 for females." +"4 - New Councils for Scotland" diff --git a/statsmodels/datasets/scotland/src/scotland_population.html b/statsmodels/datasets/scotland/src/scotland_population.html new file mode 100644 index 0000000..19cc05a --- /dev/null +++ b/statsmodels/datasets/scotland/src/scotland_population.html @@ -0,0 +1,326 @@ + + + + + +Cross-sectional dataset viewer v1.1 + + + + + + + + + + + + + +
    + Home + + StatSearch + + Text Search + + StatStore + + FAQ + +   +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Dataset Display - Cross-Sectional

    Dataset Name: + RT331601 +
    Title: + + Area and population, 1996: Scotland +
    Description:Area and population, 1996: Scotland

    This dataset has been compiled from data published in Regional Trends 33, 1998 edition published on 25 June 1998.

    Source: + Office for National Statistics; General Register Office for Scotland +
    Time Frame: + 1996 +
    Geographic Coverage: + United Kingdom + +
    Universe: + UK population +
    Measure: + various +
    Units: + See table +
    Scalar: + various +
    Formula: + none +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Table Dimensions
    Please select at least one item from each list and "Display Selection" or choose "Display All"
    To select list items either hold down 'Ctrl' key and click each item required, or click the first item and hold down the mouse button whilst scrolling down the list.
    + Region + + 4 + + Measure + + +
    + + + +
     
    To change your selection, click in the appropriate box
    + + + +
    + + + + + + + + + + +
    + + + Table + + + + +
    Area (sq km)Persons per sq kmPopulation (thousands) MalesPopulation (thousands) FemalesPopulation (thousands) TotalTotal population percentage change 1981-1996Total period fertility rate (TPFR)1Standardised mortality ratio (UK=100) (SMR)2Percentage of population aged under 5Percentage of population aged 5-15Percentage of population aged 16 up to pension age3Percentage of population of pension age or over4
    United Kingdom242910.00242.0028856.0029946.0058801.004.301.72100.006.4014.2061.3018.10
    Scotland78133.0066.002486.002642.005128.00-1.001.55116.006.1013.9063.1017.80
    Aberdeen City186.001169.00106.00111.00217.002.201.35105.005.8012.3065.8017.10
    Aberdeenshire6318.0036.00113.00114.00227.0020.401.6497.006.5015.3063.8015.30
    Angus2181.0051.0054.0057.00111.004.901.67113.006.0013.9061.6019.40
    Argyll and Bute6930.0013.0045.0046.0091.00-0.101.70109.005.5013.6061.1020.80
    Clackmannanshire157.00312.0024.0025.0049.001.201.76115.006.6014.6063.0016.70
    Dumfries and Galloway6439.0023.0072.0076.00148.001.401.78107.005.9013.8060.3021.20
    Dundee City65.002306.0072.0079.00150.00-11.401.57118.005.9013.3062.0019.90
    East Ayrshire1252.0098.0059.0063.00122.00-3.901.64114.006.3014.5061.9018.30
    East Dunbartonshire172.00645.0054.0057.00111.001.001.56102.005.8014.2064.5016.50
    East Lothian678.00130.0043.0045.0088.009.201.77112.006.4013.7061.5019.50
    East Renfrewshire173.00510.0043.0045.0088.009.801.6796.006.2014.6063.0017.10
    Edinburgh, City of262.001711.00217.00232.00449.000.601.34111.005.7011.6065.8017.90
    Eilean Siar (Western Isles)3134.009.0014.0015.0029.00-8.501.65117.005.5015.1059.8020.70
    Falkirk299.00478.0069.0074.00143.00-1.501.58121.006.2013.7063.8017.40
    Fife1323.00264.00169.00180.00349.002.301.55109.006.0014.4062.3018.30
    Glasgow City175.003522.00294.00322.00616.00-13.501.48137.006.3013.3063.2018.10
    Highland25784.008.00102.00106.00209.007.101.77109.006.2014.9061.8018.10
    Inverclyde162.00538.0042.0045.0087.00-13.901.66138.006.2014.6061.7018.60
    Midlothian356.00225.0039.0041.0080.00-4.201.61119.006.1014.3064.2016.40
    Moray2238.0039.0043.0044.0087.003.601.76108.006.6014.6061.8018.00
    North Ayrshire884.00158.0067.0072.00140.001.601.63115.006.2015.0062.2017.60
    North Lanarkshire474.00688.00158.00168.00326.00-4.601.66126.006.4014.9063.8015.90
    Orkney Islands992.0020.0010.0010.0020.003.201.78106.006.0015.3061.2018.50
    Perth and Kinross5311.0025.0064.0069.00133.008.801.61103.005.6013.8060.7020.90
    Renfrewshire261.00683.0086.0092.00179.00-3.501.59125.006.3014.1063.7017.00
    Scottish Borders, The4734.0022.0051.0055.00106.004.801.67100.005.8013.3060.2021.80
    Shetland Islands1438.0016.0012.0011.0023.00-12.601.77117.007.0015.9062.9014.90
    South Ayrshire1202.0095.0055.0060.00115.001.301.55105.005.5013.7061.1020.90
    South Lanarkshire1771.00174.00149.00159.00307.00-0.801.55125.006.3014.5063.8016.50
    Stirling2196.0038.0040.0043.0083.003.101.55110.005.7013.6063.8017.90
    West Dunbartonshire162.00590.0046.0050.0096.00-9.501.70130.006.4015.3061.4017.80
    West Lothian425.00355.0074.0077.00151.008.301.63126.006.8015.1065.8013.20
    +
    + + + + +
    Footnotes
    1 -The total period fertility rate (TPFR) is the average number of children which would be born to a woman if the current pattern of fertility persisted throughout her child-bearing years.
    2 -Adjusted for the age structure of the population.
    3 -Pension age is 65 for males and 60 for females.
    4 -New Councils for Scotland
    +
    + \ No newline at end of file diff --git a/statsmodels/datasets/scotland/src/scotvote.csv b/statsmodels/datasets/scotland/src/scotvote.csv new file mode 100644 index 0000000..4b423d1 --- /dev/null +++ b/statsmodels/datasets/scotland/src/scotvote.csv @@ -0,0 +1,33 @@ +"PrivateHousingStarts" "PublicHousingStarts" "StockofDwellings" "Households" "LocalAuthorityRent" "CouncilTax" "Areas" "Density" "Males" "Females" "Population" "PopulationChange" "FertilityRate" "StdMortalityRatio" "PercentageUnder5" "Percentage5to15" "Percentage16topension" "PercentageOverPensionage" "InNursery" "InPreschool" "PrimaryPTRatio" "SecondaryPTRatio" "PostCompulsory" "NoGrade" "Grades" "InJobTraining" "Birthsper1000" "Deathsper1000" "PeriMortality" "InfantMortality" "PerBirthsOut" "Active" "TotalEmployment" "PerMfgEmployment" "PerUnemployment" "TotalClaimants" "PerClaimantFemale" "PerClaimLongT" "MeanWeekSal" "GDP" "Var.41" "Var.42" +"Aberdeen_City" 1142 136 100 96.8 27.5 712 186 1169 106 111 217 2.2 1.35 105 5.8 12.3 65.8 17.1 126 50 19.9 12.9 113 1.9 53 15.4 11 10.4 7.7 5.7 35 82.4 113 14.3 4.9 3.6 21 17.6 404.8 13566 71.8 60.3 +"Aberdeenshire" 533 90 92 87.1 29.7 643 6318 36 113 114 227 20.4 1.64 97 6.5 15.3 63.8 15.3 34.4 34 18.6 13.8 81 9.2 58.2 11.4 11.3 9 9 3.8 24 80.2 112 14.5 NA 2.8 26.5 16.3 330.9 13566 63.9 52.3 +"Angus" 272 167 48 46.2 23.5 679 2181 51 54 57 111 4.9 1.67 113 6 13.9 61.6 19.4 70.2 38 19.1 13 89 NA 62 NA 11 13.2 5.6 3.2 33 86.3 59 16.9 NA 3.2 28.3 23.3 320 9611 64.7 53.4 +"Argyll_and_Bute" 300 266 43 37.7 35 801 6930 13 45 46 91 -0.1 1.7 109 5.5 13.6 61.1 20.8 38.8 13 17.3 12.4 81 8.6 54.1 NA 10.5 13.8 8.6 7 33 80.4 41 NA 11.9 2.9 27.1 22.8 305.2 9483 67.3 57 +"Clackmannanshire" 125 37 21 20 29.6 753 157 312 24 25 49 1.2 1.76 115 6.6 14.6 63 16.7 90.9 47 21.2 13.4 78 NA 63.6 NA 12.3 11.3 10.4 6.3 40 64.7 17 NA NA 1.6 22 27.5 NA 9265 80 68.7 +"Dumfries_and_Galloway" 388 159 66 62.3 32.7 714 6439 23 72 76 148 1.4 1.78 107 5.9 13.8 60.3 21.2 21.3 44 18.9 12.7 93 2.7 60.2 NA 10.9 12.8 8.8 7.8 34 79 67 17.7 NA 4.4 24.3 23.4 300.2 9555 60.7 48.8 +"Dundee_City" 182 151 72 67.5 36.8 920 65 2306 72 79 150 -11.4 1.57 118 5.9 13.3 62 19.9 114.3 59 18 12.2 117 0.6 46.9 NA 11.5 13.1 8.6 6.8 51 72.2 60 14.6 9.3 6.2 21.2 26.3 327.4 9611 76 65.5 +"East_Ayrshire" 262 30 51 50.1 26.9 779 1252 98 59 63 122 -3.9 1.64 114 6.3 14.5 61.9 18.3 43.4 43 21 13.5 89 6.4 50.2 NA 11.4 11.6 12.3 6.5 40 75.2 50 23.1 14.2 4.5 20.5 28.9 307.6 9483 81.1 70.5 +"East_Dunbartonshire" 236 6 42 41.3 29.6 771 172 645 54 57 111 1 1.56 102 5.8 14.2 64.5 16.5 76.2 11 22.2 13.9 94 NA 71.2 NA 10.5 9.2 8.1 7.2 19 81.1 53 NA NA 2.2 23.2 17.3 329.2 9483 69.8 59.1 +"East_Lothian" 469 165 38 36.3 28.8 724 678 130 43 45 88 9.2 1.77 112 6.4 13.7 61.5 19.5 48.6 56 20.6 13.4 66 12.7 46 NA 12.3 12.6 7.6 5.2 29 80.3 41 NA NA 1.7 20.5 16.3 310.3 12656 74.2 62.7 +"East_Renfrewshire" 295 96 34 33.1 28.9 682 173 510 43 45 88 9.8 1.67 96 6.2 14.6 63 17.1 146 33 22.3 14 91 NA 78.8 NA 11.5 9.5 7.4 6.2 19 83 42 16.8 NA 1.4 23.8 20.9 NA 9483 61.7 51.6 +"Edinburgh_City" 1496 525 206 198.2 43.8 837 262 1711 217 232 449 0.6 1.34 111 5.7 11.6 65.8 17.9 132.3 50 20.7 13.4 109 2.3 56.7 14.7 11.4 11.7 8.1 6.4 33 74.5 207 10.3 6.6 11.1 22.1 20.4 362.8 12656 71.9 62 +"Eilean_Siar_(Western_Isles)" 75 10 13 11.6 36.5 599 3134 9 14 15 29 -8.5 1.65 117 5.5 15.1 59.8 20.7 12.6 NA 13 9.5 102 3.2 60.9 NA 9.7 14.9 11.2 5.7 19 83.8 15 NA NA 1.4 19.9 23.8 NA 8298 79.4 68.4 +"Falkirk" 651 66 61 59.1 29.8 680 299 478 69 74 143 -1.5 1.58 121 6.2 13.7 63.8 17.4 81.8 40 21.3 13.6 91 4 49.4 NA 11.7 11.7 7.9 4.8 34 77.6 66 23.4 NA 4.5 21.5 19.9 335.6 9265 80 69.2 +"Fife" 202 251 152 145.6 30.3 747 1323 264 169 180 349 2.3 1.55 109 6 14.4 62.3 18.3 20.2 51 19.1 13.4 106 5.3 52.1 13.5 11 11.4 8.7 7.1 37 77.9 147 21.7 9.3 11.1 22.5 22.7 325.2 8314 76.1 64.7 +"Glasgow_City" 1884 1056 286 271.9 40.4 982 175 3522 294 322 616 -13.5 1.48 137 6.3 13.3 63.2 18.1 99.8 53 19.3 12.4 88 12.7 41.9 15.3 12.5 14 11.1 6.9 49 65.3 210 14.2 15.2 26.9 19.4 29.5 341.5 9483 83.6 75 +"Highland" 664 161 95 85.8 38.5 719 25784 8 102 106 209 7.1 1.77 109 6.2 14.9 61.8 18.1 41.5 19 17.3 11.8 94 NA 60 NA 11.4 11.4 8.3 6.5 34 80.9 100 12.9 9.3 7.9 25.9 20.9 296.2 8298 72.6 62.1 +"Inverclyde" 291 126 39 38 34.6 831 162 538 42 45 87 -13.9 1.66 138 6.2 14.6 61.7 18.6 105.8 27 21.4 13.6 95 NA 56.2 NA 11.7 14.5 11.5 8 45 80.2 39 26.5 NA 2.5 18.5 12.7 323.4 9483 78 67.2 +"Midlothian" 362 61 32 30.8 25.2 858 356 225 39 41 80 -4.2 1.61 119 6.1 14.3 64.2 16.4 49 54 19.9 13.6 77 3.8 53 NA 11.2 10.7 10.8 6 35 84.8 39 NA NA 1.6 19.4 13.7 309 12656 79.9 67.7 +"Moray" 327 0 37 34.9 28 652 2238 39 43 44 87 3.6 1.76 108 6.6 14.6 61.8 18 21.6 31 18.9 12.2 91 8 54.3 NA 12.4 11 9.8 7.4 26 86.4 43 14.3 NA 2.2 27.2 15.4 285 13566 67.2 52.7 +"North_Ayrshire" 344 157 60 57.7 30.2 718 884 158 67 72 140 1.6 1.63 115 6.2 15 62.2 17.6 115.3 23 21.2 13.4 72 10.5 45.6 NA 11.3 11.8 11.6 6.9 42 73.5 58 27.4 9.1 5.1 23.7 19.2 317.8 9483 76.3 65.7 +"North_Lanarkshire" 1557 175 130 128.5 31.3 787 474 688 158 168 326 -4.6 1.66 126 6.4 14.9 63.8 15.9 64.4 25 20.2 13.4 94 2.3 47.5 11.8 12.5 11.1 11.6 8.5 38 74.7 133 21.2 12.4 10.7 20.8 20.1 336.7 9483 82.6 72.2 +"Orkney_Islands" 0 6 9 8.1 33.8 515 992 20 10 10 20 3.2 1.78 106 6 15.3 61.2 18.5 31.8 52 15.1 10.9 97 0 69.3 NA 10.9 11.6 7.5 1.4 30 87.8 10 NA NA 0.4 26.8 24.4 NA 8298 57.3 47.4 +"Perth_and_Kinross" 448 147 59 55 28.2 732 5311 25 64 69 133 8.8 1.61 103 5.6 13.8 60.7 20.9 93.2 45 18.7 12.5 78 10.2 53.9 NA 10.5 12.6 9.8 5.9 29 86.6 66 11.3 NA 2.8 23 17.8 NA 9611 61.7 51.3 +"Renfrewshire" 732 66 77 75.1 32.5 783 261 683 86 92 179 -3.5 1.59 125 6.3 14.1 63.7 17 119.6 31 22 13.7 103 NA 55.9 15.5 11.9 11.6 8 4.5 39 78.5 80 20.1 11.3 5.5 20.5 23.3 336.1 9483 79 63.6 +"Scottish_Borders_The" 245 98 49 44.9 29.7 612 4734 22 51 55 106 4.8 1.67 100 5.8 13.3 60.2 21.8 56.9 22 18.5 12.1 92 1.3 61.7 NA 10.7 12.8 8 4.9 28 80.6 49 20.6 NA 2.1 23.7 12.3 303.5 9033 62.8 50.7 +"Shetland_Islands" 131 21 10 8.9 36.1 486 1438 16 12 11 23 -12.6 1.77 117 7 15.9 62.9 14.9 14.8 42 12.7 8.1 79 NA 73.6 NA 11.7 10.9 9.9 6.5 28 84.8 11 NA NA 0.4 23.2 14.2 NA 8298 62.4 51.6 +"South_Ayrshire" 182 80 49 47.6 30.7 765 1202 95 55 60 115 1.3 1.55 105 5.5 13.7 61.1 20.9 70.4 36 21 13.6 99 NA 61.9 NA 10.1 12.7 6.2 4.3 33 79.2 48 22.9 10.3 3.6 23.6 23.4 346.2 9483 66.9 56.2 +"South_Lanarkshire" 488 98 124 122.3 35.3 793 1771 174 149 159 307 -0.8 1.55 125 6.3 14.5 63.8 16.5 103.9 15 20.7 13.7 92 3.6 51.5 13.7 11.5 11.3 9.2 5.1 33 78.4 146 22 8.3 8.2 21.7 21.8 319.1 9483 77.8 67.6 +"Stirling" 341 66 34 33.1 33.6 776 2196 38 40 43 83 3.1 1.55 110 5.7 13.6 63.8 17.9 200.5 46 19.5 13.3 81 2.9 61.4 NA 11.1 11.8 7.7 4.9 33 77.2 37 NA NA 2.1 23 19.5 346.6 9265 68.5 58.9 +"West_Dunbartonshire" 193 139 42 40.4 33.4 978 162 590 46 50 96 -9.5 1.7 130 6.4 15.3 61.4 17.8 81.9 47 20.3 14 108 NA 52.5 NA 12.5 12.7 11.7 8.7 42 71.5 36 NA 13.6 4.2 19.3 27.3 319 9483 84.7 74.7 +"West_Lothian" 942 156 61 60.3 28.3 792 425 355 74 77 151 8.3 1.63 126 6.8 15.1 65.8 13.2 53.6 51 20.3 13.5 80 6.3 46.8 NA 13.1 9.5 8.7 4.6 33 82.2 78 32.6 NA 3.5 21.2 10.2 335.5 12656 79.6 67.3 diff --git a/statsmodels/datasets/scotland/src/scotvote.dat b/statsmodels/datasets/scotland/src/scotvote.dat new file mode 100644 index 0000000..4b423d1 --- /dev/null +++ b/statsmodels/datasets/scotland/src/scotvote.dat @@ -0,0 +1,33 @@ +"PrivateHousingStarts" "PublicHousingStarts" "StockofDwellings" "Households" "LocalAuthorityRent" "CouncilTax" "Areas" "Density" "Males" "Females" "Population" "PopulationChange" "FertilityRate" "StdMortalityRatio" "PercentageUnder5" "Percentage5to15" "Percentage16topension" "PercentageOverPensionage" "InNursery" "InPreschool" "PrimaryPTRatio" "SecondaryPTRatio" "PostCompulsory" "NoGrade" "Grades" "InJobTraining" "Birthsper1000" "Deathsper1000" "PeriMortality" "InfantMortality" "PerBirthsOut" "Active" "TotalEmployment" "PerMfgEmployment" "PerUnemployment" "TotalClaimants" "PerClaimantFemale" "PerClaimLongT" "MeanWeekSal" "GDP" "Var.41" "Var.42" +"Aberdeen_City" 1142 136 100 96.8 27.5 712 186 1169 106 111 217 2.2 1.35 105 5.8 12.3 65.8 17.1 126 50 19.9 12.9 113 1.9 53 15.4 11 10.4 7.7 5.7 35 82.4 113 14.3 4.9 3.6 21 17.6 404.8 13566 71.8 60.3 +"Aberdeenshire" 533 90 92 87.1 29.7 643 6318 36 113 114 227 20.4 1.64 97 6.5 15.3 63.8 15.3 34.4 34 18.6 13.8 81 9.2 58.2 11.4 11.3 9 9 3.8 24 80.2 112 14.5 NA 2.8 26.5 16.3 330.9 13566 63.9 52.3 +"Angus" 272 167 48 46.2 23.5 679 2181 51 54 57 111 4.9 1.67 113 6 13.9 61.6 19.4 70.2 38 19.1 13 89 NA 62 NA 11 13.2 5.6 3.2 33 86.3 59 16.9 NA 3.2 28.3 23.3 320 9611 64.7 53.4 +"Argyll_and_Bute" 300 266 43 37.7 35 801 6930 13 45 46 91 -0.1 1.7 109 5.5 13.6 61.1 20.8 38.8 13 17.3 12.4 81 8.6 54.1 NA 10.5 13.8 8.6 7 33 80.4 41 NA 11.9 2.9 27.1 22.8 305.2 9483 67.3 57 +"Clackmannanshire" 125 37 21 20 29.6 753 157 312 24 25 49 1.2 1.76 115 6.6 14.6 63 16.7 90.9 47 21.2 13.4 78 NA 63.6 NA 12.3 11.3 10.4 6.3 40 64.7 17 NA NA 1.6 22 27.5 NA 9265 80 68.7 +"Dumfries_and_Galloway" 388 159 66 62.3 32.7 714 6439 23 72 76 148 1.4 1.78 107 5.9 13.8 60.3 21.2 21.3 44 18.9 12.7 93 2.7 60.2 NA 10.9 12.8 8.8 7.8 34 79 67 17.7 NA 4.4 24.3 23.4 300.2 9555 60.7 48.8 +"Dundee_City" 182 151 72 67.5 36.8 920 65 2306 72 79 150 -11.4 1.57 118 5.9 13.3 62 19.9 114.3 59 18 12.2 117 0.6 46.9 NA 11.5 13.1 8.6 6.8 51 72.2 60 14.6 9.3 6.2 21.2 26.3 327.4 9611 76 65.5 +"East_Ayrshire" 262 30 51 50.1 26.9 779 1252 98 59 63 122 -3.9 1.64 114 6.3 14.5 61.9 18.3 43.4 43 21 13.5 89 6.4 50.2 NA 11.4 11.6 12.3 6.5 40 75.2 50 23.1 14.2 4.5 20.5 28.9 307.6 9483 81.1 70.5 +"East_Dunbartonshire" 236 6 42 41.3 29.6 771 172 645 54 57 111 1 1.56 102 5.8 14.2 64.5 16.5 76.2 11 22.2 13.9 94 NA 71.2 NA 10.5 9.2 8.1 7.2 19 81.1 53 NA NA 2.2 23.2 17.3 329.2 9483 69.8 59.1 +"East_Lothian" 469 165 38 36.3 28.8 724 678 130 43 45 88 9.2 1.77 112 6.4 13.7 61.5 19.5 48.6 56 20.6 13.4 66 12.7 46 NA 12.3 12.6 7.6 5.2 29 80.3 41 NA NA 1.7 20.5 16.3 310.3 12656 74.2 62.7 +"East_Renfrewshire" 295 96 34 33.1 28.9 682 173 510 43 45 88 9.8 1.67 96 6.2 14.6 63 17.1 146 33 22.3 14 91 NA 78.8 NA 11.5 9.5 7.4 6.2 19 83 42 16.8 NA 1.4 23.8 20.9 NA 9483 61.7 51.6 +"Edinburgh_City" 1496 525 206 198.2 43.8 837 262 1711 217 232 449 0.6 1.34 111 5.7 11.6 65.8 17.9 132.3 50 20.7 13.4 109 2.3 56.7 14.7 11.4 11.7 8.1 6.4 33 74.5 207 10.3 6.6 11.1 22.1 20.4 362.8 12656 71.9 62 +"Eilean_Siar_(Western_Isles)" 75 10 13 11.6 36.5 599 3134 9 14 15 29 -8.5 1.65 117 5.5 15.1 59.8 20.7 12.6 NA 13 9.5 102 3.2 60.9 NA 9.7 14.9 11.2 5.7 19 83.8 15 NA NA 1.4 19.9 23.8 NA 8298 79.4 68.4 +"Falkirk" 651 66 61 59.1 29.8 680 299 478 69 74 143 -1.5 1.58 121 6.2 13.7 63.8 17.4 81.8 40 21.3 13.6 91 4 49.4 NA 11.7 11.7 7.9 4.8 34 77.6 66 23.4 NA 4.5 21.5 19.9 335.6 9265 80 69.2 +"Fife" 202 251 152 145.6 30.3 747 1323 264 169 180 349 2.3 1.55 109 6 14.4 62.3 18.3 20.2 51 19.1 13.4 106 5.3 52.1 13.5 11 11.4 8.7 7.1 37 77.9 147 21.7 9.3 11.1 22.5 22.7 325.2 8314 76.1 64.7 +"Glasgow_City" 1884 1056 286 271.9 40.4 982 175 3522 294 322 616 -13.5 1.48 137 6.3 13.3 63.2 18.1 99.8 53 19.3 12.4 88 12.7 41.9 15.3 12.5 14 11.1 6.9 49 65.3 210 14.2 15.2 26.9 19.4 29.5 341.5 9483 83.6 75 +"Highland" 664 161 95 85.8 38.5 719 25784 8 102 106 209 7.1 1.77 109 6.2 14.9 61.8 18.1 41.5 19 17.3 11.8 94 NA 60 NA 11.4 11.4 8.3 6.5 34 80.9 100 12.9 9.3 7.9 25.9 20.9 296.2 8298 72.6 62.1 +"Inverclyde" 291 126 39 38 34.6 831 162 538 42 45 87 -13.9 1.66 138 6.2 14.6 61.7 18.6 105.8 27 21.4 13.6 95 NA 56.2 NA 11.7 14.5 11.5 8 45 80.2 39 26.5 NA 2.5 18.5 12.7 323.4 9483 78 67.2 +"Midlothian" 362 61 32 30.8 25.2 858 356 225 39 41 80 -4.2 1.61 119 6.1 14.3 64.2 16.4 49 54 19.9 13.6 77 3.8 53 NA 11.2 10.7 10.8 6 35 84.8 39 NA NA 1.6 19.4 13.7 309 12656 79.9 67.7 +"Moray" 327 0 37 34.9 28 652 2238 39 43 44 87 3.6 1.76 108 6.6 14.6 61.8 18 21.6 31 18.9 12.2 91 8 54.3 NA 12.4 11 9.8 7.4 26 86.4 43 14.3 NA 2.2 27.2 15.4 285 13566 67.2 52.7 +"North_Ayrshire" 344 157 60 57.7 30.2 718 884 158 67 72 140 1.6 1.63 115 6.2 15 62.2 17.6 115.3 23 21.2 13.4 72 10.5 45.6 NA 11.3 11.8 11.6 6.9 42 73.5 58 27.4 9.1 5.1 23.7 19.2 317.8 9483 76.3 65.7 +"North_Lanarkshire" 1557 175 130 128.5 31.3 787 474 688 158 168 326 -4.6 1.66 126 6.4 14.9 63.8 15.9 64.4 25 20.2 13.4 94 2.3 47.5 11.8 12.5 11.1 11.6 8.5 38 74.7 133 21.2 12.4 10.7 20.8 20.1 336.7 9483 82.6 72.2 +"Orkney_Islands" 0 6 9 8.1 33.8 515 992 20 10 10 20 3.2 1.78 106 6 15.3 61.2 18.5 31.8 52 15.1 10.9 97 0 69.3 NA 10.9 11.6 7.5 1.4 30 87.8 10 NA NA 0.4 26.8 24.4 NA 8298 57.3 47.4 +"Perth_and_Kinross" 448 147 59 55 28.2 732 5311 25 64 69 133 8.8 1.61 103 5.6 13.8 60.7 20.9 93.2 45 18.7 12.5 78 10.2 53.9 NA 10.5 12.6 9.8 5.9 29 86.6 66 11.3 NA 2.8 23 17.8 NA 9611 61.7 51.3 +"Renfrewshire" 732 66 77 75.1 32.5 783 261 683 86 92 179 -3.5 1.59 125 6.3 14.1 63.7 17 119.6 31 22 13.7 103 NA 55.9 15.5 11.9 11.6 8 4.5 39 78.5 80 20.1 11.3 5.5 20.5 23.3 336.1 9483 79 63.6 +"Scottish_Borders_The" 245 98 49 44.9 29.7 612 4734 22 51 55 106 4.8 1.67 100 5.8 13.3 60.2 21.8 56.9 22 18.5 12.1 92 1.3 61.7 NA 10.7 12.8 8 4.9 28 80.6 49 20.6 NA 2.1 23.7 12.3 303.5 9033 62.8 50.7 +"Shetland_Islands" 131 21 10 8.9 36.1 486 1438 16 12 11 23 -12.6 1.77 117 7 15.9 62.9 14.9 14.8 42 12.7 8.1 79 NA 73.6 NA 11.7 10.9 9.9 6.5 28 84.8 11 NA NA 0.4 23.2 14.2 NA 8298 62.4 51.6 +"South_Ayrshire" 182 80 49 47.6 30.7 765 1202 95 55 60 115 1.3 1.55 105 5.5 13.7 61.1 20.9 70.4 36 21 13.6 99 NA 61.9 NA 10.1 12.7 6.2 4.3 33 79.2 48 22.9 10.3 3.6 23.6 23.4 346.2 9483 66.9 56.2 +"South_Lanarkshire" 488 98 124 122.3 35.3 793 1771 174 149 159 307 -0.8 1.55 125 6.3 14.5 63.8 16.5 103.9 15 20.7 13.7 92 3.6 51.5 13.7 11.5 11.3 9.2 5.1 33 78.4 146 22 8.3 8.2 21.7 21.8 319.1 9483 77.8 67.6 +"Stirling" 341 66 34 33.1 33.6 776 2196 38 40 43 83 3.1 1.55 110 5.7 13.6 63.8 17.9 200.5 46 19.5 13.3 81 2.9 61.4 NA 11.1 11.8 7.7 4.9 33 77.2 37 NA NA 2.1 23 19.5 346.6 9265 68.5 58.9 +"West_Dunbartonshire" 193 139 42 40.4 33.4 978 162 590 46 50 96 -9.5 1.7 130 6.4 15.3 61.4 17.8 81.9 47 20.3 14 108 NA 52.5 NA 12.5 12.7 11.7 8.7 42 71.5 36 NA 13.6 4.2 19.3 27.3 319 9483 84.7 74.7 +"West_Lothian" 942 156 61 60.3 28.3 792 425 355 74 77 151 8.3 1.63 126 6.8 15.1 65.8 13.2 53.6 51 20.3 13.5 80 6.3 46.8 NA 13.1 9.5 8.7 4.6 33 82.2 78 32.6 NA 3.5 21.2 10.2 335.5 12656 79.6 67.3 diff --git a/statsmodels/datasets/spector/__init__.py b/statsmodels/datasets/spector/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/spector/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/spector/data.py b/statsmodels/datasets/spector/data.py new file mode 100644 index 0000000..52f4c49 --- /dev/null +++ b/statsmodels/datasets/spector/data.py @@ -0,0 +1,72 @@ +"""Spector and Mazzeo (1980) - Program Effectiveness Data""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """Used with express permission of the original author, who +retains all rights. """ +TITLE = __doc__ +SOURCE = """ +http://pages.stern.nyu.edu/~wgreene/Text/econometricanalysis.htm + +The raw data was downloaded from Bill Greene's Econometric Analysis web site, +though permission was obtained from the original researcher, Dr. Lee Spector, +Professor of Economics, Ball State University.""" + +DESCRSHORT = """Experimental data on the effectiveness of the personalized +system of instruction (PSI) program""" + +DESCRLONG = DESCRSHORT + +NOTE = """:: + + Number of Observations - 32 + + Number of Variables - 4 + + Variable name definitions:: + + Grade - binary variable indicating whether or not a student's grade + improved. 1 indicates an improvement. + TUCE - Test score on economics test + PSI - participation in program + GPA - Student's grade point average +""" + + +def load(as_pandas=None): + """ + Load the Spector dataset and returns a Dataset class instance. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def load_pandas(): + """ + Load the Spector dataset and returns a Dataset class instance. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + data = _get_data() + return du.process_pandas(data, endog_idx=3) + + +def _get_data(): + data = du.load_csv(__file__, 'spector.csv', sep=r'\s') + data = du.strip_column_names(data) + data = data.iloc[:, [1, 2, 3, 4]] + return data.astype(float) diff --git a/statsmodels/datasets/spector/spector.csv b/statsmodels/datasets/spector/spector.csv new file mode 100644 index 0000000..38e260b --- /dev/null +++ b/statsmodels/datasets/spector/spector.csv @@ -0,0 +1,33 @@ +'OBS' 'GPA' 'TUCE' 'PSI' 'GRADE' +1 2.66 20 0 0 +2 2.89 22 0 0 +3 3.28 24 0 0 +4 2.92 12 0 0 +5 4 21 0 1 +6 2.86 17 0 0 +7 2.76 17 0 0 +8 2.87 21 0 0 +9 3.03 25 0 0 +10 3.92 29 0 1 +11 2.63 20 0 0 +12 3.32 23 0 0 +13 3.57 23 0 0 +14 3.26 25 0 1 +15 3.53 26 0 0 +16 2.74 19 0 0 +17 2.75 25 0 0 +18 2.83 19 0 0 +19 3.12 23 1 0 +20 3.16 25 1 1 +21 2.06 22 1 0 +22 3.62 28 1 1 +23 2.89 14 1 0 +24 3.51 26 1 0 +25 3.54 24 1 1 +26 2.83 27 1 1 +27 3.39 17 1 1 +28 2.67 24 1 0 +29 3.65 21 1 1 +30 4 23 1 1 +31 3.1 21 1 0 +32 2.39 19 1 1 diff --git a/statsmodels/datasets/stackloss/R_stackloss.s b/statsmodels/datasets/stackloss/R_stackloss.s new file mode 100644 index 0000000..4ec5f44 --- /dev/null +++ b/statsmodels/datasets/stackloss/R_stackloss.s @@ -0,0 +1,30 @@ +### SETUP ### +d <- read.table("./stackloss.csv",sep=",", header=T) +attach(d) +library(MASS) + + +m1 <- rlm(STACKLOSS ~ AIRFLOW + WATERTEMP + ACIDCONC) # psi.huber default + +m2 <- rlm(STACKLOSS ~ AIRFLOW + WATERTEMP + ACIDCONC, psi = psi.hampel, init = "lts") + +m3 <- rlm(STACKLOSS ~ AIRFLOW + WATERTEMP + ACIDCONC, psi = psi.bisquare) + +results1 <- summary(m1) + +results2 <- summary(m2) + +results3 <- summary(m3) + +m4 <- rlm(STACKLOSS ~ AIRFLOW + WATERTEMP + ACIDCONC, scale.est="Huber") # psi.huber default + +m5 <- rlm(STACKLOSS ~ AIRFLOW + WATERTEMP + ACIDCONC, scale.est="Huber", psi = psi.hampel, init = "lts") + +m6 <- rlm(STACKLOSS ~ AIRFLOW + WATERTEMP + ACIDCONC, scale.est="Huber", psi = psi.bisquare) + +results4 <- summary(m4) + +results5 <- summary(m5) + +results6 <- summary(m6) + diff --git a/statsmodels/datasets/stackloss/__init__.py b/statsmodels/datasets/stackloss/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/stackloss/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/stackloss/data.py b/statsmodels/datasets/stackloss/data.py new file mode 100644 index 0000000..7ab1abb --- /dev/null +++ b/statsmodels/datasets/stackloss/data.py @@ -0,0 +1,66 @@ +"""Stack loss data""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """This is public domain. """ +TITLE = __doc__ +SOURCE = """ +Brownlee, K. A. (1965), "Statistical Theory and Methodology in +Science and Engineering", 2nd edition, New York:Wiley. +""" + +DESCRSHORT = """Stack loss plant data of Brownlee (1965)""" + +DESCRLONG = """The stack loss plant data of Brownlee (1965) contains +21 days of measurements from a plant's oxidation of ammonia to nitric acid. +The nitric oxide pollutants are captured in an absorption tower.""" + +NOTE = """:: + + Number of Observations - 21 + + Number of Variables - 4 + + Variable name definitions:: + + STACKLOSS - 10 times the percentage of ammonia going into the plant + that escapes from the absoroption column + AIRFLOW - Rate of operation of the plant + WATERTEMP - Cooling water temperature in the absorption tower + ACIDCONC - Acid concentration of circulating acid minus 50 times 10. +""" + + +def load(as_pandas=None): + """ + Load the stack loss data and returns a Dataset class instance. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + +def load_pandas(): + """ + Load the stack loss data and returns a Dataset class instance. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + data = _get_data() + return du.process_pandas(data, endog_idx=0) + + +def _get_data(): + return du.load_csv(__file__, 'stackloss.csv').astype(float) diff --git a/statsmodels/datasets/stackloss/stackloss.csv b/statsmodels/datasets/stackloss/stackloss.csv new file mode 100644 index 0000000..3eb60f5 --- /dev/null +++ b/statsmodels/datasets/stackloss/stackloss.csv @@ -0,0 +1,22 @@ +"STACKLOSS","AIRFLOW","WATERTEMP","ACIDCONC" +42,80,27,89 +37,80,27,88 +37,75,25,90 +28,62,24,87 +18,62,22,87 +18,62,23,87 +19,62,24,93 +20,62,24,93 +15,58,23,87 +14,58,18,80 +14,58,18,89 +13,58,17,88 +11,58,18,82 +12,58,19,93 +8,50,18,89 +7,50,18,86 +8,50,19,72 +8,50,19,79 +9,50,20,80 +15,56,20,82 +15,70,20,91 diff --git a/statsmodels/datasets/star98/__init__.py b/statsmodels/datasets/star98/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/star98/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/star98/data.py b/statsmodels/datasets/star98/data.py new file mode 100644 index 0000000..68306fa --- /dev/null +++ b/statsmodels/datasets/star98/data.py @@ -0,0 +1,107 @@ +"""Star98 Educational Testing dataset.""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """Used with express permission from the original author, +who retains all rights.""" +TITLE = "Star98 Educational Dataset" +SOURCE = """ +Jeff Gill's `Generalized Linear Models: A Unified Approach` + +http://jgill.wustl.edu/research/books.html +""" +DESCRSHORT = """Math scores for 303 student with 10 explanatory factors""" + +DESCRLONG = """ +This data is on the California education policy and outcomes (STAR program +results for 1998. The data measured standardized testing by the California +Department of Education that required evaluation of 2nd - 11th grade students +by the the Stanford 9 test on a variety of subjects. This dataset is at +the level of the unified school district and consists of 303 cases. The +binary response variable represents the number of 9th graders scoring +over the national median value on the mathematics exam. + +The data used in this example is only a subset of the original source. +""" + +NOTE = """:: + + Number of Observations - 303 (counties in California). + + Number of Variables - 13 and 8 interaction terms. + + Definition of variables names:: + + NABOVE - Total number of students above the national median for the + math section. + NBELOW - Total number of students below the national median for the + math section. + LOWINC - Percentage of low income students + PERASIAN - Percentage of Asian student + PERBLACK - Percentage of black students + PERHISP - Percentage of Hispanic students + PERMINTE - Percentage of minority teachers + AVYRSEXP - Sum of teachers' years in educational service divided by the + number of teachers. + AVSALK - Total salary budget including benefits divided by the number + of full-time teachers (in thousands) + PERSPENK - Per-pupil spending (in thousands) + PTRATIO - Pupil-teacher ratio. + PCTAF - Percentage of students taking UC/CSU prep courses + PCTCHRT - Percentage of charter schools + PCTYRRND - Percentage of year-round schools + + The below variables are interaction terms of the variables defined + above. + + PERMINTE_AVYRSEXP + PEMINTE_AVSAL + AVYRSEXP_AVSAL + PERSPEN_PTRATIO + PERSPEN_PCTAF + PTRATIO_PCTAF + PERMINTE_AVTRSEXP_AVSAL + PERSPEN_PTRATIO_PCTAF +""" + + + +def load(as_pandas=None): + """ + Load the star98 data and returns a Dataset class instance. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Load instance: + a class of the data with array attrbutes 'endog' and 'exog' + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def load_pandas(): + data = _get_data() + return du.process_pandas(data, endog_idx=['NABOVE', 'NBELOW']) + + +def _get_data(): + data = du.load_csv(__file__, 'star98.csv') + names = ["NABOVE","NBELOW","LOWINC","PERASIAN","PERBLACK","PERHISP", + "PERMINTE","AVYRSEXP","AVSALK","PERSPENK","PTRATIO","PCTAF", + "PCTCHRT","PCTYRRND","PERMINTE_AVYRSEXP","PERMINTE_AVSAL", + "AVYRSEXP_AVSAL","PERSPEN_PTRATIO","PERSPEN_PCTAF","PTRATIO_PCTAF", + "PERMINTE_AVYRSEXP_AVSAL","PERSPEN_PTRATIO_PCTAF"] + data.columns = names + nabove = data['NABOVE'].copy() + nbelow = data['NBELOW'].copy() + + data['NABOVE'] = nbelow # successes + data['NBELOW'] = nabove - nbelow # now failures + + return data diff --git a/statsmodels/datasets/star98/r_glm.s b/statsmodels/datasets/star98/r_glm.s new file mode 100644 index 0000000..d2752cc --- /dev/null +++ b/statsmodels/datasets/star98/r_glm.s @@ -0,0 +1,37 @@ +### SETUP +#star.data <- as.matrix(read.csv("./star98.csv",header=T)) +#star.factors3 <- data.frame( LOWINC=star.data[,3], PERASIAN=star.data[,4], PERBLACK=star.data[,5], +# PERHISP=star.data[,6], PERMINTE=star.data[,7], AVYRSEXP=star.data[,8], AVSAL=star.data[,9], +# PERSPEN=star.data[,10], PTRATIO=star.data[,11], PCTAF=star.data[,12], PCTCHRT=star.data[,13], +# PCTYRRND=star.data[,14], PERMINTE.AVYRSEXP=star.data[,15], PERMINTE.AVSAL=star.data[,16], +# AVYRSEXP.AVSAL=star.data[,17], PERSPEN.PTRATIO=star.data[,18], PERSPEN.PCTAF=star.data[,19], +# PTRATIO.PCTAF=star.data[,20], PERMINTE.AVYRSEXP.AVSAL=star.data[,21], +# PERSPEN.PTRATIO.PCTAF=star.data[,22], MATHTOT=star.data[,1], PR50M=star.data[,2] ) +d <- read.table("./star98.csv", sep=",", header=T) +attach(d) +#attach(star.factors3) + + +### MATH MODEL +m1 <- glm(cbind(PR50M,MATHTOT-PR50M) ~ LOWINC + PERASIAN + PERBLACK + PERHISP + + PERMINTE + AVYRSEXP + AVSALK + PERSPENK + PTRATIO + PCTAF + PCTCHRT + PCTYRRND + + PERMINTE_AVYRSEXP + PERMINTE_AVSAL + AVYRSEXP_AVSAL + PERSPEN_PTRATIO + PERSPEN_PCTAF + + PTRATIO_PCTAF + PERMINTE_AVYRSEXP_AVSAL + PERSPEN_PTRATIO_PCTAF, + family=binomial) +#as.numeric(m1$coef) +#as.numeric(sqrt(diag(vcov(m1)))) +results <- summary.glm(m1) + +#star.logit.fit3 <- glm(cbind(PR50M,MATHTOT-PR50M) ~ LOWINC + PERASIAN + PERBLACK + PERHISP + +# PERMINTE + AVYRSEXP + AVSAL + PERSPEN + PTRATIO + PCTAF + PCTCHRT + PCTYRRND + +# PERMINTE.AVYRSEXP + PERMINTE.AVSAL + AVYRSEXP.AVSAL + PERSPEN.PTRATIO + PERSPEN.PCTAF + +# PTRATIO.PCTAF + PERMINTE.AVYRSEXP.AVSAL + PERSPEN.PTRATIO.PCTAF, +# family = binomial(), data=star.factors3) +#results <- summary.glm(star.logit.fit3) +# WITH R STYLE INTERACTIONS +#star.logit.fit4 <- glm(cbind(PR50M,MATHTOT-PR50M) ~ LOWINC + PERASIAN + PERBLACK + PERHISP + +# PERMINTE + AVYRSEXP + AVSAL + PERSPEN + PTRATIO + PCTAF + PCTCHRT + PCTYRRND + +# PERMINTE*AVYRSEXP*AVSAL + PERSPEN*PTRATIO*PCTAF, +# family = binomial(), data=star.factors3) + + diff --git a/statsmodels/datasets/star98/src/star.bi.dat b/statsmodels/datasets/star98/src/star.bi.dat new file mode 100644 index 0000000..36a3f5c --- /dev/null +++ b/statsmodels/datasets/star98/src/star.bi.dat @@ -0,0 +1,303 @@ +161119 34.3973 23.29930 14.23528 11.41112 15.91837 14.70646 59157.32 4445.207 21.71025 57.03276 0 22.22222 805 467 807 452 +161127 17.36507 29.32838 8.234897 9.314884 13.63636 16.08324 59503.97 5267.598 20.44278 64.62264 0 0 182 140 184 144 +161143 32.64324 9.226386 42.40631 13.54372 28.83436 14.59559 60569.92 5482.922 18.95419 53.94191 0 0 566 357 571 337 +161150 11.90953 13.88309 3.796973 11.44311 11.11111 14.38939 58334.11 4165.093 21.63539 49.06103 0 7.142857 573 424 573 395 +161168 36.88889 12.1875 76.875 7.604167 43.58974 13.90568 63153.64 4324.902 18.77984 52.38095 0 0 62 15 65 8 +161176 20.93149 28.02351 4.643221 13.80816 15.37849 14.97755 66970.55 3916.104 24.51914 44.91578 0 2.380952 2234 1452 2247 1348 +161192 53.26898 8.447858 19.37483 37.90533 25.52553 14.67829 57621.95 4270.903 22.21278 32.28916 0 12.12121 1363 491 1364 477 +161200 15.19009 3.665781 2.649680 13.09207 6.203008 13.66197 63447.4 4309.734 24.59026 30.45267 0 0 904 579 912 565 +161234 28.21582 10.43042 6.786374 32.3343 13.46154 16.41760 57845.64 4527.603 21.74138 22.64574 0 0 519 218 525 205 +161242 32.77897 17.17831 12.48493 28.32329 27.25989 12.51864 57801.41 4648.917 20.26010 26.07099 0 0 1071 514 1067 469 +161259 59.97293 17.51736 50.94093 23.10134 52.34344 16.93283 57434.44 4693.069 21.31489 19.53216 3.296703 13.18681 2964 830 3016 784 +161275 0 19.74886 1.864536 2.587519 7.407407 15.86979 52193.46 5248.693 18.51182 80.37975 0 0 235 204 235 209 +161291 28.12111 12.69201 19.26582 26.84197 13.37209 14.42864 57240.45 3980.589 21.89844 31.65829 0 9.090909 547 241 556 195 +161309 36.99047 10.03236 15.42302 30.74434 13.50763 13.29753 58413.74 4197.615 23.12943 31.15079 0 0 685 315 688 206 +175093 12.92796 7.172996 4.825949 13.23840 6.185567 17.47108 65570.86 5382.009 20.68333 34.83146 0 0 259 179 252 136 +175101 4.700895 8.736718 1.745657 6.932029 7.127883 16.18176 67367.55 4607.673 24.65106 39.63415 0 0 922 765 925 694 +373981 20.25979 0.4857445 0.8025343 5.976769 2.439024 15.30949 51311.63 4025.593 24.82292 36.19403 0 91.66667 377 249 377 204 +461408 42.66827 2.836879 0.9456265 23.87707 10.63830 11.83962 55990.32 5151.626 17.91209 24.44444 0 0 66 40 69 31 +461424 33.12923 6.305412 2.766154 12.86616 6.17284 14.60144 58558.6 4004.401 22.73008 49.65517 4.347826 26.08696 1089 632 1092 601 +461432 29.39297 1.071155 0.765111 9.716909 4.477612 14.04527 53772.3 4518.034 21.18506 51.02041 0 0 116 82 115 64 +461473 52.99313 6.217371 0.3322259 38.72805 7.619048 14.17395 50695.12 4114.065 20.41136 23.27586 0 0 137 58 139 51 +461531 35.08836 0.8292167 0.388144 4.622442 4.135338 14.30221 55278.74 4148.228 21.91947 25 23.07692 15.38462 439 241 449 220 +561564 37.20441 0.5699482 1.113990 6.321244 5.357143 13.60247 50668.49 3975.448 24.86918 22.97872 0 8.333333 312 175 309 151 +661598 54.26829 0.5497862 0.5497862 40.74527 7.407407 14.87105 52537 4205.362 19.44511 36.28319 0 0 115 46 116 36 +661614 65.82397 0.2640845 3.873239 58.89085 6.557377 10.92652 46291.79 4469.798 19.52548 37.93103 0 0 80 29 81 15 +661622 78.54077 1.282051 0 78.4188 20.83333 11.47788 49267.19 3893.337 21.12311 19.23077 0 0 66 7 66 5 +761648 30.07553 3.626196 10.50386 20.94431 8.66575 13.69108 62341.2 4011.390 23.88905 23.85445 0 72.22222 1252 676 1259 541 +761697 28.24601 6.893424 19.81859 16.78005 12.74510 15.91555 59176.53 4225.738 22.18379 18 0 0 188 94 190 86 +761739 22.33375 2.523732 3.310952 14.03103 10.30928 16.15686 59230.72 4114.418 21.74332 34.42623 0 0 323 210 322 142 +761754 22.62465 7.697888 4.902207 16.77688 9.421586 15.32368 57128.58 3928.696 22.14162 37.63838 0 0 2390 1482 2394 1365 +761788 51.78493 4.598930 27.79679 35.10160 30.02481 15.97489 58788.93 4049.181 22.87300 85.11166 0 8.333333 646 239 648 201 +761796 51.23848 13.02024 35.10118 25.52703 25.82688 17.18977 62664.1 4347.936 22.8705 36.5 0 8.474576 1909 668 1949 585 +761804 1.895322 9.925228 1.633719 4.276349 4.503464 15.92369 59976.94 4035.189 23.34687 50.74503 0 0 1420 1235 1417 1247 +861820 42.51143 6.252442 0.4103165 10.17976 8.076923 14.70948 58233.81 4733.28 20.67364 15.50388 0 0 396 210 403 165 +961903 45.42344 1.501194 0.9041283 26.27090 5.338078 14.35703 55740.14 4323.754 21.53458 86.722 0 0 337 172 329 135 +973783 30.16965 0.7973734 0.5159475 2.251407 1.904762 14.23233 51822.37 4030.978 21.47295 32.45614 0 0 188 132 193 106 +1062117 23.43337 11.75065 2.871447 19.03101 15.94416 11.87890 53158.07 4242.702 22.70517 40.50633 0 0 2295 1584 2267 1496 +1062125 57.9224 0.871731 0.6475716 68.74222 18.93491 11.19787 61085.44 4258.425 24.4786 14.83516 0 0 277 89 272 68 +1062158 60.59908 7.196613 0.8466604 72.34243 24.76190 11.83632 51537.34 3807.79 21.07004 38.7931 0 0 146 50 144 55 +1062166 62.01977 19.65177 11.31566 45.23962 23.40485 14.67996 61095.3 4685.643 22.25973 27.47559 0 31.11111 4973 1641 5018 1455 +1062240 35.60339 2.518757 0.375134 67.73848 7.913669 15.34516 54702.22 6836.694 21.14435 41.57895 71.42857 0 195 109 196 84 +1062265 63.17132 1.40625 0.6009615 71.35817 16.79198 14.46149 55184.78 4478.657 22.25652 16.78657 0 6.25 614 178 617 136 +1062281 72.91667 1.238739 0.5630631 70.04505 3.921569 11.55763 39728.35 3899.132 18.23651 13.04348 0 0 62 12 64 6 +1062364 91.60484 0.2143623 0.1071811 98.821 62.18487 11.92754 55527.29 4223.126 21.68654 13.38583 0 40 190 27 189 21 +1062414 57.00249 4.322917 0.5859375 70.66406 23.48066 14.00443 52155.26 4382.061 21.71153 23.02326 0 0 550 198 552 132 +1062430 69.6452 3.972303 1.020408 76.71283 27.6 13.01188 53531.64 4180.037 22.50103 14.69194 0 0 284 114 290 78 +1073809 87.83718 0.4054054 1.216216 90.45045 32.40741 10.37561 51400.56 4317.728 20.49057 30.85106 0 0 143 26 146 16 +1073965 49.25084 10.15299 7.874184 42.32374 16.53944 10.08090 54568.74 4006.118 22.59174 37.66667 0 76.92308 581 221 585 211 +1073999 69.49807 5.350028 0.3130336 70.43256 22.64151 12.32314 54546.01 4283.101 22.15424 40 0 60 265 85 274 82 +1075127 87.77725 0.5334627 0.5819593 97.76916 40 12.20753 60303.18 3933.777 25.6375 47.16981 0 0 151 14 155 16 +1075234 86.54599 1.713710 0.2016129 92.2379 26.08696 14.58066 62758.26 5242.8 21.72113 19.17808 0 0 143 24 144 35 +1075275 21.60468 0.5405405 0.2910603 7.484407 1.526718 17.11242 62522.82 5879.966 19.48512 26.37363 0 0 143 102 143 90 +1075408 64.85075 0.6671114 3.068712 64.50967 14.92537 11.36918 47732.57 3511.9 21.48872 10.66667 0 0 67 24 67 23 +1162661 53.125 21.75227 0.9063444 20.74522 4.651163 15.73608 60020.66 4325.154 24.48113 47.11538 0 0 138 68 138 76 +1175481 44.97466 1.348412 0.8264463 33.18834 5.932203 16.25328 55653.8 4602.903 20.85538 49.19355 0 0 186 78 183 73 +1262901 76.32121 0 0.6559767 2.842566 30 14.78554 65665.47 5770.566 19.64964 25.92593 0 0 90 37 88 38 +1263040 33.91672 0.7147498 1.169591 2.988954 0 15.79261 56055.94 4427.872 21.31544 44.70588 0 0 114 67 109 23 +1275374 11.71617 0.5 0 4.666667 0 15.51220 54645.67 4893.857 20.32154 34.14634 0 0 59 40 59 40 +1363073 54.25667 0.5188067 0.2779322 80.21123 35.04274 14.95651 66530.25 4304.715 23.78075 33.89831 0 0 372 104 373 67 +1363099 43.95482 1.432902 0.0551116 97.51998 70.09967 14.58775 67370.06 4266.618 23.57191 15.82569 0 0 495 89 506 91 +1363107 74.30168 0.4219409 5.555556 71.58931 40.57971 12.21709 53519.74 4518.243 20.625 29.41176 0 0 99 32 98 36 +1363123 62.10008 1.554243 2.9427 82.64429 33.41289 15.20630 66125.09 4453.164 23.32139 31.30288 0 0 560 162 578 133 +1363149 63.91804 0.3990025 0.1496259 70.47382 26.88172 11.60701 56622.57 4245.811 21.68514 32.14286 0 0 158 41 162 19 +1363164 39.94452 0.7492287 2.688409 60.77567 24.5283 9.224783 51167.03 3708.859 20.85687 34.92063 0 0 179 66 179 75 +1363214 76.8279 0 3.005780 31.09827 20.40816 15.31852 60141.08 5355.161 18.99177 19.35484 0 0 49 14 50 4 +1463255 25.58849 0.7623888 0.5082592 11.01228 5.454545 16.50992 59805.55 4349.222 23.45035 40.71856 0 0 171 106 170 126 +1563404 68.64343 0.7808143 1.728946 76.8879 31.81818 12.21163 58861.69 3714.92 25.99096 14.03509 0 0 520 78 550 104 +1563677 40.599 1.107011 14.87085 24.53875 7.627119 15.24427 63042.2 4572.615 24.41998 32.48408 0 37.5 190 63 187 45 +1563685 31.86047 2.014723 12.43704 7.477722 9.848485 15.32667 63498 5767.594 20.30722 32.8 0 0 170 87 167 75 +1563776 49.35103 1.697439 8.219178 31.98332 9.45946 13.08426 58159.2 4284.445 23.42700 15.49296 0 33.33333 216 97 219 68 +1563800 51.46237 0.3612479 0.7553366 17.76683 2.739726 14.43697 62633.1 5763.701 21.05658 17.79141 0 0 195 80 193 58 +1563826 24.99504 0.4204204 2.722723 17.39740 4.524887 14.79 60455.09 4308.128 22.87165 29.72973 0 0 322 213 324 156 +1563842 65.89027 0.4718152 4.395332 78.91731 21.10092 14.93269 61803.9 4139.937 24.51174 14.01515 0 0 250 55 255 43 +1573742 32.59873 2.233486 4.79962 10.89815 5.629139 14.35102 62453.15 4537.569 22.04157 38.66279 0 0 458 256 463 208 +1573908 81.96457 0.3115265 0.2336449 92.01713 31.89655 13.13246 55369.86 4428.046 22.50856 23.68421 0 0 199 28 200 18 +1575168 37.83202 0.3584229 0.860215 13.69176 8.333333 10.38143 55942.07 4098.994 24.92174 0 0 0 91 49 91 47 +1663891 64.27918 0.4638219 4.050711 79.37539 17.36111 15.31545 66404.2 4605.861 22.67635 15.58442 0 0 191 61 197 45 +1673932 86.49362 0 0.7340946 89.96737 15.59633 11.06066 57641.57 4543.492 21.75277 26.19048 0 0 153 28 161 14 +1764014 45.57020 0.9541985 1.335878 22.08969 7.207207 14.75781 54040.6 4832.32 20.08333 50.9434 0 0 162 91 165 91 +1764022 73.609 0.8296107 5.966816 9.60434 6.329114 13.7825 54439.95 4354.388 20.61290 10.60606 0 100 201 66 206 52 +1764030 46.29523 0.6597031 1.869159 15.66795 3.448276 15.13131 58962.14 4361.361 21.41705 28.42105 0 0 146 88 147 85 +1764055 26.79575 0.7237636 0.3618818 8.685163 1.204819 11.29516 50096.41 3932.39 19.15049 40.69767 0 0 120 76 116 77 +1764063 52.91709 1.732926 2.854230 8.25688 6.25 14.98707 59995.4 5022.533 21.89956 37.70492 0 0 60 30 61 23 +1864204 41.9708 0 0.5714286 9.142857 3.030303 17.90429 55176.85 5259.958 18.96552 18.18182 0 0 42 15 43 8 +1964212 30.50552 32.46542 10.40141 32.65980 36.00406 15.25756 59289.09 4219.665 22.57679 49.73262 0 3.333333 1579 837 1599 879 +1964261 8.362214 52.59396 1.213040 9.888444 8.900524 15.98201 64415.47 4166.218 24.27460 60.84011 0 27.27273 771 540 771 640 +1964279 70.73827 0.9595613 3.152844 78.94106 25.95573 14.49885 64611.03 4379.243 23.98186 19.42446 0 11.11111 794 191 800 200 +1964287 62.87168 4.72375 1.793829 85.46998 27.21202 15.06211 67839.96 3819.118 27.50542 26.77165 0 0 972 272 1029 268 +1964295 79.6766 2.102924 2.102924 89.14344 45.6 14.39982 62084.61 4432.065 23.55966 20.98765 0 0 395 71 399 108 +1964303 49.17215 5.575448 18.15857 38.48009 12.27437 13.04228 58550.52 3988.183 23.88522 17.99729 0 7.142857 927 287 927 260 +1964311 9.733488 10.93985 3.571429 4.097744 10.81967 18.2 62455.76 6015.758 17.72469 61.88437 0 0 417 329 417 346 +1964329 25.84395 5.866005 4.823821 27.58313 9.501188 16.89201 62021.76 4054.136 24.11424 51.76471 0 0 803 450 804 426 +1964337 37.6798 5.688124 2.774695 36.95893 13.16667 14.46938 62400.43 4138.196 23.95766 32.4291 0 5.263158 995 517 992 436 +1964378 23.94770 5.265554 4.871017 36.61608 11.76471 15.32254 61534.67 4024.875 24.12297 38.72549 0 0 459 271 464 209 +1964394 20.80702 10.11185 12.00121 20.87364 11.70886 13.90775 61447.66 4401.148 21.54203 53.16973 0 0 482 323 483 338 +1964436 37.64495 8.548446 5.798903 50.82998 14.25993 13.90046 62290.03 4265.807 24.2564 42.08443 0 0 955 458 958 450 +1964444 33.51168 10.20237 17.91269 36.81218 18.65079 15.38502 62132.02 4282.612 22.95729 41.17647 0 0 386 174 388 144 +1964451 42.84095 5.595576 4.80418 63.33705 14.59948 12.29348 64631.93 3979.219 25.14150 23.26733 0 0 1300 637 1312 538 +1964469 61.40009 2.775971 13.20755 61.96053 30 16.06842 59303.74 4179.698 25.22527 15.01597 0 0 267 85 273 71 +1964527 68.0851 0.683527 0.580998 94.48052 51.81452 16.27428 65653 4338.243 22.49503 33.67003 0 0 662 152 682 130 +1964535 13.80008 6.320789 3.397881 14.87030 4.761905 11.92766 57362.05 4718.115 21.28874 38.99371 0 0 209 146 212 125 +1964568 50.67402 12.12724 1.119947 23.8668 12.23958 13.22109 73039 4224.937 26.67020 26.38655 0 34.48276 2339 1123 2327 1326 +1964576 14.82624 4.119138 1.292776 16.56527 6.329114 14.99266 63784.61 4130.35 24.90064 33.6 0 0 556 350 584 339 +1964634 69.00829 0.1925546 43.09138 55.36819 63.43907 15.01983 63040.99 3748.33 27.40275 38.88889 0 57.89474 1095 296 1111 222 +1964659 1.421801 26.20056 0.5414313 3.060264 8.205128 15.02579 63791.63 4705.506 21.59624 66.18182 0 0 326 293 326 287 +1964683 2.971741 7.57133 1.366449 4.975937 7.024793 17.00701 64749.85 4414.05 24.23913 60.62323 0 0 825 693 828 671 +1964725 64.2387 14.16632 20.33687 40.48983 29.10875 13.30980 59298.18 4210.309 22.98312 41.37823 2.325581 19.76744 5645 2145 5677 1930 +1964733 73.18394 4.308746 13.79525 68.52417 45.46139 20.54574 73073.07 4365.276 23.42095 49.30618 2.321981 32.19814 38418 10373 38852 9324 +1964774 59.29694 0.224649 12.05616 86.5273 52.48714 15.79301 67063.02 4064.954 27.05961 15.08475 0 50 951 171 939 113 +1964790 56.89858 1.915122 14.06465 48.07722 17.54386 14.42588 57193.3 4017.302 22.55472 25.94752 0 11.11111 398 183 401 144 +1964808 75.0343 4.879927 0.4471292 90.5185 59.52981 16.92341 67605.91 3810.285 27.99578 28.54167 0 25 2025 466 2093 377 +1964840 44.02203 4.939493 5.01597 62.97629 29.22002 15.62108 60665.56 3616.505 25.62582 21.50866 0 7.142857 1425 513 1436 388 +1964865 1.943602 30.02693 1.723209 3.941842 7.474227 18.94287 59821.21 3946.788 24.11441 89.13043 0 0 680 551 678 597 +1964873 58.22835 1.783620 14.61458 75.7082 35.24845 11.80146 63190.71 4370.215 24.5058 5.430712 0 73.33333 1080 248 1088 185 +1964881 61.8811 2.22193 32.00543 47.11193 42.18415 14.27299 64584.04 4443.599 23.86713 39.65517 0 0 1348 404 1352 365 +1964907 73.5053 6.393463 11.23378 71.20447 48.69857 16.68337 65628.77 4007.186 26.04422 8.27719 0 23.68421 1986 616 1983 575 +1964964 0.2653400 63.20234 0.4871712 3.345242 6.944444 15.90786 57543.38 4619.277 22.17736 78.1893 0 0 265 215 265 246 +1964980 26.09065 5.531472 8.617999 27.07647 22.2664 15.87400 65963.43 5063.35 22.31528 65.10638 0 0 735 500 753 429 +1965029 11.67883 32.08936 4.467806 18.21288 13.01775 16.19645 61169.62 4043.499 22.99094 64.07407 0 0 300 228 300 234 +1965052 27.32198 38.10775 1.445466 20.36794 7.359307 13.7875 59417.3 4035.891 23.64895 31.56499 0 0 384 246 376 237 +1965060 17.70193 28.47688 3.996755 15.83330 19.65726 13.31861 59555.29 3822.103 23.78323 45.95661 0 0 1726 1105 1732 1108 +1965094 47.30717 9.43911 9.122654 58.16237 17.52022 13.90339 56841.37 3907.338 24.42266 29.06178 0 0 629 233 627 194 +1973437 78.42391 0.05453864 35.72962 62.92736 80.17493 14.79315 58991.42 3743.125 28.09997 41.78905 0 2.564103 1810 308 1843 258 +1973445 40.23607 16.39995 2.539347 67.97602 28.90365 17.39357 62325.3 4103.139 25.05607 38.67849 0 0 1636 622 1647 609 +1973452 33.85063 18.78119 6.688608 55.35089 29.18239 16.1731 62277.31 4369.675 24.44574 30.26188 0 0 1204 554 1213 606 +1973460 6.196674 42.31389 5.721689 18.18054 17.73649 14.82445 60555.24 3982.78 24.25086 57.78547 0 0 1162 802 1171 831 +1975291 53.4557 36.40237 1.889589 43.47907 22.06573 14.12308 57663.26 3814.974 23.16667 0 11.11111 0 320 173 319 185 +1975309 28.17235 1.443203 1.722533 11.91806 7.446809 11.72804 58880.17 3806.893 24.82222 0 0 0 191 124 192 109 +1975333 7.197273 7.00382 1.819174 8.659269 7.936508 15.21719 64224.89 5093.928 21.58711 43.08943 0 0 296 263 299 242 +1975341 25.63993 7.277444 5.188422 23.18405 10.24845 16.50521 68096.37 5006.776 22.47522 51.54062 0 0 488 303 489 298 +2065193 59.28721 0.9413778 2.524604 41.63457 6.666667 12.20542 53265.82 3873.24 23.55149 25.40984 0 0 147 71 159 48 +2065243 60.0239 1.152145 3.543626 67.3538 26.82927 14.05485 56274.59 4064.557 23.45833 31.99405 0 45 1101 374 1130 362 +2165417 14.79229 4.893837 2.770585 11.10823 3.562341 16.62018 53794.99 4365.513 20.39636 48.08511 6.25 12.5 558 407 564 412 +2165458 34.76768 7.884136 5.198542 36.17878 8.536585 15.19114 53336.38 4458.969 20.96682 53.59281 0 0 278 161 277 144 +2173361 0 0.4801921 0.4801921 28.69148 7.407407 13.72615 60992.5 6459.384 16.40535 26 0 0 52 36 52 28 +2265532 27.00072 0.5113221 0.2921841 6.208912 1.459854 15.59845 51692.82 4183.603 21.53846 29.80132 0 0 223 140 225 112 +2365540 55.9322 0.8403361 1.344538 45.37815 0 12.756 48855.96 6406.862 14.31604 44.73684 0 0 38 23 38 21 +2365565 37.29968 1.162791 0.4152824 19.68439 2.272727 17.13074 56336.78 4990.487 19.47287 25.89928 0 0 188 103 188 98 +2365615 46.92754 0.969469 1.114166 22.81869 4.848485 17.4015 64535.71 4838.431 21.34488 33.33333 0 36.36364 492 241 489 240 +2365623 46.53846 0.8461538 0.6923077 11.57692 2.985075 17.472 56568.13 4611.976 20.82808 26.38037 0 0 170 90 171 67 +2373916 56.33117 0.5172414 0.6896552 3.965517 4.651163 12.49787 48867.6 6578.053 15.73298 34.21053 0 0 34 24 33 13 +2465698 37.78899 1.586639 0.2922756 17.32777 11.71171 13.41706 58102.55 4361.619 22.78612 20.8 0 16.66667 181 63 183 60 +2465722 41.43167 0.9155646 0 84.13021 25.58140 12.77143 55709.23 4140.527 22.18527 24.74227 0 0 46 4 48 14 +2465755 50.92824 1.244953 4.862046 53.17968 12.1673 12.07816 55074.62 4075.188 21.77028 33.93502 0 50 454 141 455 123 +2473619 52.40793 0.6143345 0.9556314 50.44369 8.333333 11.98961 53609.9 4080.966 21.15774 49.27536 0 0 106 29 108 23 +2475317 60.91821 0.1568013 6.31125 61.70129 15.44118 11.49135 54802.7 4750.999 18.81218 19.59459 0 0 179 48 181 33 +2573585 33.27773 0.75 0.75 10.41667 1.612903 11.68088 55854.74 4786.679 19.22953 32.78689 0 0 94 47 94 37 +2573593 64.85084 0 0 52.38095 4.761905 12.95532 50840.07 4851.063 18.40095 45.71429 0 0 47 15 47 19 +2673668 45.93373 0.3100775 0.7751938 14.10853 2.222222 14.03431 52320.31 6283.433 14.66970 76.92308 0 0 39 24 40 24 +2673692 21.84007 0.5828476 0.08326395 21.81515 4.83871 14.98485 60159.44 4806.483 20.59423 42.85714 0 0 92 58 93 45 +2765987 10.70682 2.977162 1.305057 7.544861 4.8 17.29423 69887.39 5676.651 20.67854 55.92105 0 0 202 156 201 149 +2766092 40.13453 8.813424 15.63724 25.22573 17.65705 19.47192 61011.63 4496.243 20.60704 28.90792 0 95.2381 761 365 773 255 +2766134 14.27955 4.711581 1.893439 7.089388 2.941176 17.54195 63909.55 4756.384 22.63210 48.17518 0 0 157 116 154 105 +2773825 40.66667 1.844262 1.285395 49.23621 20.15810 14.68534 56619.21 4356.072 21.57957 60.59783 0 0 353 124 357 107 +2775473 67.26937 0.2738788 0.4108182 86.51147 24.19355 11.88684 58893.12 4200.852 24.90864 11.30435 0 0 161 43 163 60 +2866241 45.67023 0.6825939 0.3412969 47.09898 4.545455 13.51122 54344.89 4650.725 20.97387 50 0 0 62 31 61 21 +2866266 32.70906 1.396074 1.776254 26.488 6.388527 15.47587 54785.13 3912.949 21.83841 29.25258 3.333333 0 1171 656 1198 587 +2866290 34.43425 0.7380074 0.4305043 37.45387 14.63415 15.64778 51434.44 4386.959 21.20205 44.14414 0 0 113 62 112 58 +3066449 16.15780 8.398994 2.179380 21.62615 4.897959 15.22727 57193.42 3825.952 25.22776 40.72022 0 0 449 323 455 300 +3066464 17.33803 4.709514 1.580624 16.95375 9.391933 12.69992 60779.38 3802.974 23.00043 44.82558 0 10.52632 2686 1934 2692 1804 +3066522 48.15608 28.71155 1.291070 44.05147 11.48612 15.67656 65184.42 3835.549 24.67322 20.3813 0 0 2986 1224 3007 1473 +3066555 9.316273 1.883830 1.216641 9.22292 7.619048 16.90641 70274.37 4481.474 24.26357 74.28571 0 0 188 154 188 145 +3066597 39.02544 4.683563 1.235117 34.12381 4.426788 16.00117 60202.04 4349.231 22.48276 42.87149 0 0 1186 759 1186 688 +3066621 36.01998 10.88242 2.085541 36.82177 9.424084 16.81767 56415.11 3586.935 25.44882 47.33026 2.564103 12.82051 1989 1054 1991 1035 +3066647 21.01388 8.124397 1.888460 25.92012 11.39742 15.15302 63101.53 4172.242 24.71715 36.56174 0 0 1873 1180 1875 1238 +3066670 73.27723 4.408512 1.079825 90.79082 26.48752 14.97092 69824.54 4102.145 25.03219 21.72937 0 56.25 3331 666 3391 610 +3073635 10.53450 8.401664 2.167491 14.81068 6.056435 14.97990 60372.2 3840.866 22.19101 53.79189 0 0 2363 1654 2363 1607 +3073643 29.86897 8.276043 4.655274 41.6814 5.263158 13.01412 57831.15 3629.530 24.16947 39.59538 0 0 1053 569 1074 526 +3073650 10.51650 25.16370 3.039764 7.41078 9.255725 16.09776 62550.98 4352.488 22.65816 0 0 9.67742 1795 1400 1799 1421 +3073924 11.60025 8.99128 3.111006 11.53665 10.13333 15.09307 67284.94 4726.529 23.19879 49.59217 0 10 622 491 621 416 +3166944 23.35644 0.627574 0.4314571 17.70935 6.617647 13.59359 49513.03 4638.098 19.67842 44.13146 0 0 357 243 358 204 +3166951 28.66097 0.5628095 1.440792 17.42458 4.878049 13.33273 42658.39 3503.698 24.26859 27.46114 62.5 0 194 95 182 49 +3175085 17.13624 3.538945 1.372581 6.664462 4.651163 11.19239 52654.82 3596.095 23.04330 0 0 0 438 346 445 276 +3266969 36.66211 0.6635333 1.216478 6.856511 2.717391 16.15405 56500.12 4912.702 21.23209 33.19328 0 0 289 182 288 132 +3366977 42.29029 4.021226 7.222877 47.15802 17.24138 13.00708 62390.7 3758.198 25.18195 41.66667 0 70.58824 1079 356 1078 280 +3366985 75.52987 13.36851 13.85224 36.69745 20.29703 13.81733 60074.78 4456.322 21.89966 41.81818 0 12.5 316 95 335 54 +3366993 58.74644 1.151316 3.426535 34.64912 9.027778 15.96616 59270.44 4070.74 24.75627 26.25 0 12.5 219 103 219 53 +3367033 41.51139 3.604238 4.644538 41.77843 11.37321 13.54297 64063.46 4083.554 25.23114 34.63727 0 34.28571 2104 989 2122 849 +3367058 55.99125 1.264684 2.467791 60.04168 15.80882 12.68737 64123.52 3937.206 25.2138 43.17181 4.347826 0 1428 486 1434 387 +3367082 62.40778 1.435897 2.666667 29.23077 9.03328 15.50251 59735.05 3916.537 24.51756 21.42857 0 5.263158 1090 534 1085 456 +3367090 50.21092 1.388811 5.304256 53.2545 23.78976 13.27531 62068.72 3826.458 24.66667 26.38353 0 4.166667 1177 424 1199 300 +3367124 43.06891 3.265436 23.67600 35.35328 23.12358 14.01194 58401.16 4173.917 24.09220 25.59242 2.857143 22.85714 2269 885 2300 644 +3367173 62.50497 1.157494 5.942876 53.49124 8.933333 13.07002 57242.97 4143.368 24.20104 13.75405 0 9.52381 1210 460 1226 319 +3367181 55.91289 0.6329114 10.52215 52.08333 10.79545 14.11026 61885.48 4694.474 22.19581 20.93023 0 0 233 75 238 93 +3367215 47.23435 3.598305 10.32666 40.11093 21.7477 10.97662 61445.65 4384.205 23.56853 33.77246 0 19.04762 2371 1091 2388 860 +3367249 64.1791 1.007308 3.851471 50.81967 7.446809 13.11981 58040.66 3564.449 26.02162 11.93182 12.5 25 306 92 306 92 +3373676 85.51459 0.1381215 0.2762431 96.16713 36.46532 11.92077 61385.59 4099.012 25.27964 13.54680 0 0 838 92 862 86 +3375176 38.11647 1.790807 4.072428 30.11209 11.41869 13.05375 62326.66 3960.634 25.39694 25.38330 0 83.33333 994 457 990 307 +3375192 18.16999 1.957028 3.825099 17.78432 8.097928 12.19485 64156.11 3664.265 25.5498 25.86806 6.25 81.25 1028 617 1029 587 +3375200 18.21645 2.105698 3.437242 17.84682 15.19337 9.219296 59134.67 3774.601 25.86148 38.25666 0 100 669 408 674 290 +3375242 54.84387 1.897597 23.57961 45.82304 21.23894 10.90779 58447.44 3799.078 25.54149 31.80212 0 0 647 214 656 177 +3467314 36.94477 15.21258 19.09346 16.26987 17.40431 12.27789 58331.63 3762.583 23.11697 29.58015 0 33.33333 2805 1318 2817 1239 +3467330 26.11432 5.308799 9.912578 8.671743 9.722222 14.26319 51104.65 3845.847 22.19777 27.70919 4.347826 30.43478 957 584 957 555 +3467348 33.11538 1.770956 1.180638 35.72609 9.166667 11.77256 51742.2 4581.189 22.21333 23.98374 0 0 347 180 349 154 +3467413 35.97884 1.407285 1.034768 36.92053 11.90476 14.73511 51080.37 4420.624 20.18018 45.3125 0 0 171 91 174 82 +3467439 59.40643 23.87054 21.95251 23.50613 27.45747 14.0033 61997.03 4125.407 24.82678 38.74261 1.298701 10.38961 3322 1329 3398 1325 +3467447 28.84975 4.59477 5.959822 8.972135 7.187223 12.61622 58872.75 4335.660 21.75074 39.28442 1.219512 6.097561 3282 2100 3310 1787 +3473973 29.30606 7.97491 13.87097 10.28674 10.69959 13.23241 55944.13 3811.049 22.28951 78.96825 0 42.85714 388 244 391 266 +3475283 37.95538 6.22615 29.74493 26.23017 12.23404 10.66611 57672.68 3312.515 22.42841 0 14.28571 14.28571 411 193 412 136 +3575259 35.75375 2.109375 0.625 40.46875 16.66667 11.91818 61919.85 4272.916 22.22222 0 0 0 114 72 114 58 +3667611 50.62411 1.101449 11.78261 38.13043 19.26910 14.40147 57100.62 4203.244 22.98675 12.98701 0 0 459 184 467 149 +3667637 40.70337 0.449312 0.954788 11.42937 3.521127 13.88148 57824.88 3838.359 25.36429 35.42857 0 100 273 158 280 143 +3667678 25.95567 6.023256 5.232558 38.20266 18.69852 15.21277 62270.05 3664.259 24.16969 29.01554 0 10 2137 1133 2132 1002 +3667686 44.45212 2.019903 9.084639 63.68608 19.09425 11.89511 59625.26 3811.724 24.03023 34.44593 0 48 1302 430 1304 352 +3667710 39.99806 1.101044 11.80547 65.77463 19.71081 12.96852 60468.72 3939.782 24.37131 18.2534 0 56.25 2213 575 2259 407 +3667777 46.74229 1.503836 8.194373 13.34015 4.504505 13.40194 62286.07 4128.065 22.62928 13.5 5.882353 0 660 290 667 280 +3667801 54.40152 1.161946 3.776325 17.28395 2.941176 16.79467 61234.99 4903.238 21.27721 40.35088 0 10 101 42 103 45 +3667843 34.60404 8.123958 7.962554 30.9894 15.03356 14.84909 60477.27 3763.685 24.72111 24.77432 0 50 1262 681 1261 580 +3667850 57.88502 2.875776 27.39844 51.59111 24.49393 12.17399 59096.31 3838.001 25.16211 13.23944 0 70.83333 1662 482 1750 368 +3667868 24.70073 0.979605 1.268669 13.05605 10.27668 15.79196 62201.87 3995.416 24.43908 31.28655 0 0 457 279 488 229 +3667876 70.23575 3.366044 19.61802 50.84942 25.21964 11.67938 61672.89 4147.682 23.98684 22.39521 0 42.62295 3036 911 3080 739 +3667918 44.91996 1.618203 16.41763 36.17087 15.53398 10.97167 61492.85 4057.497 26.51144 13.97059 15 20 998 389 1011 354 +3667959 27.57103 0.7626423 0.7743752 19.66444 6.060606 11.88049 63432.72 3784.39 25.07162 25 0 70 626 313 626 244 +3673890 46.96416 2.107896 18.18507 12.04001 7.913669 11.09907 60618.41 5342.537 20.25289 18.34862 0 0 179 98 180 74 +3673957 20.98413 0.8261886 2.088854 16.67966 4.054054 8.420029 53764.2 3823.18 22.52066 10.24845 9.090909 0 482 294 482 241 +3675044 47.6781 0.955685 5.308634 31.19068 11.89711 12.19179 62220.1 3865.725 24.81302 13.34405 0 61.11111 1035 424 1057 328 +3675051 62.31156 1.224847 2.274716 17.93526 5.263158 10.46923 59114.49 4587.305 20.48736 26.08696 0 0 81 32 81 17 +3675069 30.64712 7.226302 11.49032 28.47964 11.45631 13.98121 59659.77 3922.567 23.51056 35.31353 6.666667 6.666667 905 507 910 473 +3675077 43.73161 1.65699 17.27445 20.43186 5.168986 13.20700 62106.35 3058.089 24.52082 35.83916 13.33333 86.66667 889 471 880 352 +3768031 12.89092 1.749271 2.587464 10.49563 8.661417 15.07955 59963.79 4346.546 22.36994 58.82353 0 0 199 163 200 152 +3768098 43.17715 2.752435 1.797588 43.81089 8.999082 14.07094 58398.9 3882.451 23.42240 29.01186 4 44 1607 820 1610 757 +3768114 49.18965 0.8987701 4.328288 36.21097 10.14085 16.56101 66966.72 4540.894 24.11054 22.46094 0 0 536 316 538 285 +3768163 7.723036 0.1381215 0.6906077 9.254144 5 15.96932 62789.97 5092.907 19.09561 32.07547 0 0 54 48 54 40 +3768213 48.69423 0.1632209 1.468988 25.29924 4.301075 12.16262 52084.4 4470.921 20.17877 40.86957 0 0 142 68 143 47 +3768296 10.58816 8.755863 2.760139 7.792208 11.01512 14.19155 58198.62 3718.169 22.87571 46.68874 0 0 2347 1831 2349 1785 +3768304 35.02365 0.7042254 0.8766887 19.61771 7.491857 13.51452 57168.13 3976.03 23.11592 39.73684 0 0 510 342 509 280 +3768338 64.15235 9.492747 16.92434 35.27733 25.08497 12.29597 62782.7 4952.585 22.19313 31.24032 4.166667 28.57143 8470 3812 8479 3392 +3768452 40.05977 2.53262 6.127555 37.38501 11.09091 12.81245 65164.45 4103.446 23.64449 34.33243 3.703704 81.48148 1691 846 1707 683 +3773551 26.92308 2.594662 1.762880 26.13284 13.33333 15.28393 62997.11 4261.82 24.32617 43.44473 0 0 594 410 595 357 +3773569 54.9774 1.804259 14.86001 41.52190 16.01344 13.17371 57811.14 3832.582 23.35025 44.7178 0 0 1303 573 1317 435 +3773791 49.26504 2.389785 2.553705 44.13769 11.06472 13.66803 60657.16 4097.092 24.63998 29.65517 0 83.33333 734 338 749 330 +3868478 64.55428 41.36902 16.19322 21.20412 43.73746 15.28547 52885.51 5230.051 17.93118 48.83066 2.654867 1.769912 3624 1740 3633 1925 +3968502 36.41286 0.9198423 0.3285151 26.64258 5.673759 14.19245 53510.44 3846.512 23.32055 26.41509 0 0 197 126 200 114 +3968569 44.12983 19.62769 10.69226 17.62653 14.7343 13.20137 53970.81 4022.264 21.56064 29.83539 0 0 629 327 634 279 +3968577 40.58286 1.936027 0.3367003 34.21717 7.207207 16.12520 52198.86 3727.909 22.02652 39.28571 0 0 190 89 193 60 +3968585 48.76863 19.79547 5.832491 23.64881 11.27119 15.08360 59465.23 4469.021 22.00292 30.33708 0 62.85714 1916 824 1932 638 +3968593 35.13317 2.449629 4.936003 29.09547 11.32638 13.80978 56910.66 3589.197 24.38578 36.2426 0 0 1189 606 1207 591 +3968650 13.77399 0.7308161 0.4872107 21.84328 2.564103 14.55039 51683 3786.43 20.59880 29.72973 0 0 173 119 173 130 +3968676 68.72708 20.87249 13.34830 42.18544 33.74755 12.67768 66654.75 4527.226 22.94049 18.20926 0 21.95122 2218 554 2323 558 +3975499 26.57033 4.436534 5.981941 26.72339 14.19624 10.59350 55631.9 3616.366 23.96260 26.28676 0 0 745 417 749 397 +4068700 18.07366 1.065779 1.648626 9.342215 3.284672 14.97258 60464.24 4506.425 23.30425 45.45455 0 0 438 324 437 293 +4068759 38.07467 1.538031 1.165175 30.20134 8.932039 13.48316 55684.26 3887.088 21.21927 25.90361 0 0 730 518 727 465 +4068809 22.46579 2.346382 2.090835 12.61471 5.326877 16.19522 64397.68 4933.223 21.43327 25.63559 5.263158 0 669 482 676 453 +4068841 17.99781 0.6178288 1.41218 9.223301 4.587156 11.08730 50372.47 3667.019 19.39394 35.95506 0 0 175 114 174 96 +4075457 36.82691 1.330486 3.876478 27.18463 5.802048 14.22784 59653.03 4756.442 22.28147 39.81481 0 0 423 245 423 224 +4075465 27.08779 1.005025 0.3015075 21.60804 9.23077 12.86419 46347.38 4792.461 17.37132 41.33333 0 0 65 45 66 34 +4168890 19.30207 2.108511 0.5399846 25.09643 8.290155 13.32290 51768.27 4138.211 21.00933 48.80952 0 0 329 220 331 179 +4169070 31.91489 8.753316 4.823657 34.79713 11.89931 17.10861 57489.22 3823.838 23.52320 38.95447 0 0 707 325 705 303 +4269146 39.27727 1.385309 0.9664948 54.38144 21.32353 14.49774 60262.91 4158.069 22.21329 33.33333 0 0 232 123 235 108 +4269229 35.70633 4.651992 8.920774 32.86695 9.057301 17.08317 53117.72 4325.819 21.67377 42.91498 0 13.33333 740 363 754 302 +4369484 44.54203 2.308979 1.528165 62.94479 22.37197 15.48966 62890.81 4312.730 24.50787 20.19002 0 15.38462 562 242 590 171 +4369583 23.6491 5.235658 2.399232 33.46129 11.25 17.79609 60283.85 4361.515 23.73711 37.80488 0 0 716 437 715 400 +4369641 7.894435 17.389 4.916817 6.887782 13.52834 14.11575 66182.01 5970.823 18.74769 73.37526 0 0 598 514 605 538 +4369666 42.80784 12.24502 3.270391 49.41048 22.36951 16.57729 80565.04 5038.4 28.21085 38.10758 0 0 2185 1071 2216 975 +4369674 40.20545 18.39412 4.340957 25.20091 11.52 15.60997 65468.92 4317.319 23.7628 29.55112 0 0 898 476 908 463 +4373387 28.89357 31.45988 5.952142 18.42952 20.22727 14.80637 60774.92 4090.016 22.11977 26.72065 0 0 710 426 713 399 +4469799 56.34867 1.201376 0.587457 72.01376 19.71665 14.11421 59922.13 4282.146 22.53530 26.64756 4 20 1253 426 1269 393 +4469807 14.50640 1.659053 1.226256 4.087521 3.333333 17.28916 58616.28 4262.088 24.33353 60.58091 14.28571 0 346 253 345 204 +4569989 39.60894 0.7471264 0.2873563 8.908046 4.301075 16.49120 56131.94 4741.874 18.73638 28.82883 0 0 144 81 145 59 +4575267 49.37712 0.8405323 1.074014 4.809713 4.090909 14.58583 55396.61 4509.515 20.73813 34.48276 0 0 338 169 335 131 +4670177 32.10162 1.633166 0.6281407 8.354271 1.960784 14.40364 54122.02 2908.312 16.88889 43.24324 9.090909 0 121 88 121 80 +4870524 11.44366 4.562111 7.805057 10.15024 10.16260 15.17562 61419.34 4303.057 22.27944 40.4908 0 0 433 359 435 326 +4870532 40.81942 1.316920 1.774979 39.96565 12.64368 15.51333 57074.22 4262.563 20.02370 39.66480 0 16.66667 245 103 239 100 +4870540 28.11086 6.548673 21.01071 18.01584 13.24153 15.96551 59268.99 3955.489 22.88891 26.11607 0 34.61538 1486 728 1496 688 +4870565 22.71245 2.529475 15.34834 10.39657 18.22034 15.12085 62353.6 4900.856 20.22874 66.31016 0 0 320 189 323 155 +4870573 23.01924 2.829361 8.373287 16.74657 9.129815 14.62274 53901.88 4110.539 22.38147 40.26144 5.263158 10.52632 1044 585 1052 515 +4870581 35.46088 3.839582 35.21459 15.5493 23.87677 16.68085 68338.8 4364.927 25.67080 20.02275 0 56 1290 477 1324 450 +4970656 39.70868 0.4294479 0.6748466 25.09202 6.329114 15.62941 56854.04 3942.010 20.42161 43.83562 0 0 117 67 120 55 +4970953 30.76032 1.923440 0.7165755 22.40241 6.153846 15.85861 54122.34 4170.568 21.14767 23.37165 11.11111 11.11111 392 239 386 224 +4973882 19.67584 3.863969 3.644564 12.84739 5.99455 15.71779 59484.68 4081.602 22.29298 14.45087 0 0 612 373 616 320 +4975358 33.55805 1.379099 0.858106 26.50935 17.56757 11.02364 50731.47 3834.786 21.02305 0 0 0 236 132 234 108 +4975390 21.46387 0.8783784 0.4391892 34.05405 14.28571 16.46453 56837.35 4968.968 20.91327 46.48438 0 0 231 136 232 151 +5071043 51.20522 4.550344 3.431583 39.2642 10.04902 13.27732 56234.31 3767.504 23.17001 12.96703 0 41.66667 690 228 688 193 +5071068 42.13075 0.7830854 0.2349256 25.92013 1.724138 13.38175 49550.74 3282.389 21.30662 29.87013 0 0 118 63 120 55 +5071217 55.00726 0.673968 1.235608 64.5886 18.12081 13.32733 55535.15 4008.414 24.00409 13.07190 0 0 220 86 224 72 +5071308 42.6007 4.702023 1.366867 32.55878 9.221311 14.96416 59645.21 3932.407 24.17863 21.40625 0 50 747 388 733 359 +5073601 53.90428 1.221374 1.475827 53.43511 14.73684 12.70857 51297.37 4109.917 21.68662 28.86598 0 16.66667 120 44 120 31 +5171399 72.2977 12.32356 0.597177 45.33116 6.521739 12.38267 52194.34 4350.793 21.44379 17.72152 0 0 131 43 135 39 +5171464 49.25642 13.28312 2.939555 25.5282 14.10788 15.09745 57777.56 4165.932 23.06171 24.24242 0 25 767 360 776 303 +5271498 49.15907 0.8762706 1.892744 29.75815 3.597122 13.24340 55372.46 3941.387 20.91108 36.42384 0 0 204 82 207 79 +5271571 51.2931 0.1422475 0.56899 32.29018 2.564103 15.81222 53216.62 5045.576 19.64384 34.21053 0 0 40 18 41 19 +5375028 60.14599 0.4807692 0 5.128205 5.555556 16.13205 63507.83 6482.47 17.90831 42.42424 0 0 41 25 43 23 +5471860 84.09904 0.5628518 0.2412222 90.72635 18.78788 14.21739 58391.11 3952.910 22.75184 8.370044 0 0 258 46 259 91 +5471878 74.57442 0.8955831 0.2442499 80.46 15.98174 12.97066 53304.9 3688.748 22.96475 16.46586 0 0 343 103 342 96 +5471993 76.58037 1.721170 0.05737235 83.76363 23.68421 13.28494 58362.71 4115.279 22.61873 27.42857 0 0 243 51 250 40 +5472256 44.83328 7.621228 1.954371 43.13517 12.71111 14.47325 58322.98 4057.255 22.31273 35.91731 3.125 28.125 1726 794 1750 578 +5472272 72.66314 1.192504 0.2981261 79.25894 13.15789 14.81406 58001.31 4081.734 21.10603 36.13445 0 0 147 46 150 26 +5475325 92.3345 0.933553 0.1098298 83.0313 17.10526 14.40238 61350.21 3792.456 22.91892 0 0 100 137 15 134 23 +5575184 36.71642 0.4279601 0.8559201 4.707561 4.651163 13.26809 48160.47 4666.561 18.42667 70.27027 0 0 53 36 53 31 +5672454 51.80654 0.5471956 0.4377565 76.90834 15.52795 15.02404 56925.98 3897.079 23.48475 30.60109 0 16.66667 264 82 266 59 +5672520 23.28170 1.366251 0.8628955 18.64813 8.152174 14.22136 56808.01 3825.936 22.87717 35.54688 0 0 308 222 304 204 +5672603 15.68154 5.522166 1.674629 17.43977 6.917476 15.00022 57203.55 3831.574 23.20986 37.68719 0 0 1328 837 1338 736 +5672652 38.15821 2.905512 2.354871 33.44268 9.943978 15.35255 56413.61 3699.07 24.85112 34.36341 0 22.22222 1166 653 1170 526 +5673759 12.32702 5.661354 1.485200 14.53115 5.405405 15.73222 62750.24 4265.133 23.81032 41.16638 0 0 1425 1126 1431 1088 +5673874 1.247051 6.066291 1.000625 2.345216 4.72973 12.22485 55208.84 4079.327 20.98849 74.3421 0 0 249 212 248 186 +5673940 23.45529 3.861647 1.819697 29.78191 10.36585 10.28723 54402.98 4155.084 21.65256 21.14094 0 0 510 332 516 284 +5772678 17.89883 10.49096 3.372093 12.70026 14.92891 14.43766 49783.31 4254.717 20.06286 46.42032 0 0 583 461 591 455 +5772686 49.23581 0.77951 1.670379 43.76392 4.166667 11.36091 50433.17 5039.203 19.54545 27.08333 0 0 51 24 59 17 +5772694 62.23968 13.82086 3.956157 32.12879 15.88448 13.27089 52881.33 4324.174 20.98711 8 0 18.18182 331 116 342 96 +5772702 46.16188 1.150575 0.8004002 45.62281 13.33333 11.80714 48426.15 3945.069 19.8583 53.77358 0 0 147 63 154 37 +5772710 43.41431 3.648564 1.541204 46.31998 21.37767 14.40468 53796.16 3845.481 22.70884 29.89247 0 6.666667 593 255 595 208 +5872736 70.62104 20.46172 2.989345 17.42305 11.03286 16.56420 61705.66 3970.984 24.88647 15.14286 0 13.63636 699 259 709 199 +5872751 77.74827 5.998899 9.576225 11.11723 7.874016 16.91871 65099.57 6913.397 20.03252 23.52941 0 0 154 92 156 72 diff --git a/statsmodels/datasets/star98/src/star98.dat b/statsmodels/datasets/star98/src/star98.dat new file mode 100644 index 0000000..09a827c --- /dev/null +++ b/statsmodels/datasets/star98/src/star98.dat @@ -0,0 +1,304 @@ +CDS_CODE COUNTY DISTRICT LOWINC PERASIAN PERBLACK PERHISP PERMINTE AVYRSEXP AVSAL PERPSPEN PTRATIO PCT_AF PCTCHRT PCTYRRND READ MATH LANGUAGE LANGNCE MATHNCE READNCE READM11 READNC11 MATHM11 MATHNC11 LANGM11 LANGNC11 READM10 READNC10 MATHM10 MATHNC10 LANGM10 LANGNC10 READM9 READNCE9 MATHM9 MATHNCE9 LANGM9 LANGNCE9 READM8 READMCE8 MATHM8 MATHNCE8 LANGM8 LANGNCE8 READM7 READNCE7 MATHM7 MATHNCE7 LANGM7 LANGNCE7 READM6 READNCE6 MATHM6 MATHNCE6 LANGM6 LANGNCE6 READM5 READNCE5 MATHM5 MATHNCE5 LANGM5 LANGNCE5 READM4 READNCE4 MATHM4 MATHNCE4 LANGM4 LANGNCE4 READM3 READNCE3 MATHM3 MATHNCE3 LANGM3 LANGNCE3 READM2 READNCE2 MATHM2 MATHNCE2 LANGM2 LANGNCE2 +161119 ALAMEDA ALAMEDA CITY UNIFIED 34.397299903568 23.2993035015743 14.2352828928537 11.4111248926629 15.9183673469388 14.7064601769912 59157.3224489796 4445.20742295583 21.7102488401518 57.0327552986513 0 22.2222222222222 661.66460833221 654.852837393022 649.464497916387 54.1977416319398 53.2739960500329 49.0258864770123 700.8 40 702.9 50 683.6 49 688.9 31 696.5 49 671.2 39 689.8 40 695.2 57 674.8 54 694.4 55 685.1 54 670.4 56 680 52 674.2 53 664.9 59 665.1 53 661.7 55 649.6 54 656.3 53 647 53 646.4 57 643.7 57 622 52 634.9 59 616.7 55 598.9 54 613.1 57 581.2 53 570.5 55 590.9 57 +161127 ALAMEDA ALBANY CITY UNIFIED 17.3650687227623 29.3283833952076 8.2348970637867 9.31488356395545 13.6363636363636 16.0832386363636 59503.9675324675 5267.59838002025 20.4427792915531 64.622641509434 0 0 686.821559860904 682.097784342688 669.959373446047 72.8915962207857 76.2717872968981 71.290611028316 715.6 56 727.3 71 693.8 60 712.3 55 726.7 75 694.4 62 707.6 57 720.5 78 687.7 65 715.2 73 714.9 80 691.7 74 714.4 81 712.5 84 692.2 83 693.4 80 693.1 80 671.7 75 690.2 82 672.7 76 674.2 80 676.7 81 647.5 71 655.4 74 649.5 76 626 74 636.3 75 607.7 70 596.8 73 616.2 77 +161143 ALAMEDA BERKELEY UNIFIED 32.6432354357246 9.22638614946307 42.4063116370809 13.5437212360289 28.8343558282209 14.5955882352941 60569.9202453988 5482.92209072978 18.9541918755402 53.9419087136929 0 0 671.640665091155 661.550763788391 653.599950413223 56.2609917355372 56.6483357452967 56.1053342336259 717.7 58 720 66 692.6 58 707.9 51 716.1 67 689.7 57 707.8 58 710.6 70 688.9 67 702.3 62 690.3 59 678.1 63 685.7 57 672.8 50 667.3 61 673.6 61 664 57 655.8 60 661.1 58 651.7 56 643.1 53 648.3 60 623.1 52 630.9 55 612.9 50 589.3 43 604.8 48 574.9 47 559.5 42 577.1 40 +161150 ALAMEDA CASTRO VALLEY UNIFIED 11.9095333524191 13.8830897703549 3.79697286012526 11.4431106471816 11.1111111111111 14.3893861892583 58334.1081871345 4165.09303235908 21.6353887399464 49.0610328638498 0 7.14285714285714 676.513967201032 668.812306006938 660.962304147466 64.1185253456221 64.2161767390907 61.975677169707 716.3 57 713.7 61 691.9 58 708.3 51 705.5 54 685.9 54 704.7 54 705.1 66 684.6 63 709.9 69 701.2 69 683.7 68 697.9 68 691.1 68 676.8 70 677.8 66 675.9 67 660.5 65 665.9 62 659.8 63 653.1 63 654.4 65 637.1 61 644.6 65 629.4 61 615.8 65 622.2 63 600.4 64 589 66 607.4 69 +175093 ALAMEDA DUBLIN UNIFIED 12.927964941112 7.17299578059072 4.82594936708861 13.2383966244726 6.18556701030929 17.4710762331839 65570.8608247423 5382.00870253165 20.6833333333333 34.8314606741573 0 0 672.820427644139 662.700114372856 657.977207001522 62.6826484018265 60.5428898208159 60.2913325696831 711.7 52 707.9 55 690.3 56 703 45 706.1 55 685.4 53 701.4 50 706.8 69 682 60 705 64 688.2 57 681.1 66 694.6 64 679.7 58 671.9 66 676.5 64 673.8 65 660 63 668.8 65 660.3 64 655.3 66 659 69 639.6 63 646.7 67 635.8 66 613.5 63 623.2 64 593.7 59 579.7 57 601.4 63 +161168 ALAMEDA EMERY UNIFIED 36.8888888888889 12.1875 76.875 7.60416666666667 43.5897435897436 13.9056818181818 63153.641025641 4324.90208333333 18.7798408488064 52.3809523809524 0 0 634.917397881997 629.553768115942 624.377661169415 26.7661169415292 24.4666666666667 21.2692889561271 677.8 19 680.2 25 660.3 26 667.4 14 676.1 23 650.5 19 663.9 18 669.3 30 652.4 31 663.9 25 653 23 644.5 30 651.3 24 648.2 26 640.8 32 636.4 24 635.3 28 625.9 28 621.8 21 614.4 19 612.3 23 606.2 22 597.6 24 604.3 29 573.5 17 560.4 16 570.6 18 560.7 30 547.2 26 569.3 28 +161176 ALAMEDA FREMONT UNIFIED 20.9314901814986 28.0235116408892 4.64322070075198 13.8081633993367 15.3784860557769 14.9775459688826 66970.5521912351 3916.10429185959 24.5191372040221 44.9157829070493 0 2.38095238095238 672.231665367151 667.751934900543 659.896057692308 64.1000915750916 64.6254972875226 59.4770903086731 713.3 54 720.7 67 695.4 61 708.2 51 715.9 64 688.8 56 699.6 49 707.6 68 683.5 61 701.3 61 694.5 62 679.9 64 693.9 64 689.7 66 676.7 70 679.4 67 682.7 72 666.9 70 668 64 661.2 64 658.7 68 652.3 63 636.5 61 646.2 67 624 56 609.1 59 619.8 60 601 64 586.7 64 601.3 63 +161192 ALAMEDA HAYWARD UNIFIED 53.2689776217639 8.44785772029103 19.3748315817839 37.9053265067816 25.5255255255255 14.6782859680284 57621.947947948 4270.90330548819 22.2127790292853 32.289156626506 0 12.1212121212121 642.626397690466 636.33247468834 633.291838901472 39.561013590034 36.7048694813692 33.3479791578651 689.8 29 694 39 670.5 35 681.7 24 688.6 36 664.2 31 678.2 29 685.2 46 665.1 43 677.4 37 670.3 39 657 42 664.3 35 660 37 652.2 45 653.2 40 650.1 42 641.5 44 638.6 35 630.2 33 631.9 42 620.5 34 603.4 29 615.8 39 595 32 580.1 32 592.2 35 566.9 35 559.4 37 578.5 37 +161200 ALAMEDA LIVERMORE VALLEY JOINT UNIFIED 15.1900897052542 3.6657808347663 2.6496795372831 13.0920744098796 6.20300751879699 13.6619730185497 63447.3966165414 4309.73393778334 24.5902624724504 30.4526748971193 0 0 668.662054255087 658.826442204589 652.29882914137 57.2864267129228 57.3267209950676 56.071866112448 713.8 54 712.7 60 691.6 57 706.3 48 707.3 57 685.7 53 704.3 54 706.4 68 687.7 65 701 60 694.2 62 674.3 59 688.2 58 682.1 59 666.8 61 667.7 55 667.6 59 650.8 54 663 59 652.8 56 648.7 59 647.9 59 625.8 50 633.7 56 626 58 603.4 54 614.7 56 590.3 55 574.2 51 593.5 54 +161242 ALAMEDA NEW HAVEN UNIFIED 32.7789739401589 17.1783055654023 12.4849344204183 28.3232896136122 27.2598870056497 12.5186375321337 57801.4124293785 4648.91669620702 20.26010286554 26.0709914320685 0 0 654.289313771888 652.417934527718 647.614495897388 49.6735829482222 46.7383922708939 39.4493137718883 700.4 40 705.4 52 685.8 51 690.2 32 695.7 44 673.7 41 683.8 34 686 47 672.4 50 686.8 46 677.3 46 666.1 51 671.9 42 670.7 48 660.6 54 656.5 43 657.5 50 647.2 50 639.2 35 639.5 42 639.3 49 631.4 44 621.9 47 633.5 56 603.3 39 594.8 45 604.2 46 573.7 41 570.1 47 588.6 49 +161234 ALAMEDA NEWARK UNIFIED 28.2158234660926 10.4304198574069 6.78637443886982 32.3343015579614 13.4615384615385 16.4176039119804 57845.6401098901 4527.60324795353 21.7413793103448 22.6457399103139 0 0 651.806326987682 646.560586617782 642.048435474912 46.2571745972968 43.4252978918424 39.2136991414707 693.5 33 696.5 42 677.8 43 687.1 29 693.1 41 671.5 39 686.3 36 690.7 52 672.7 51 684 43 676.6 45 661.3 46 673.1 43 665.8 43 659.6 53 657.4 44 657.4 50 648.3 52 646.6 43 639.3 42 640.2 50 631.6 44 617.4 42 625.9 49 603.3 38 586.7 37 597.6 40 570.3 38 563.6 41 581 40 +161259 ALAMEDA OAKLAND UNIFIED 59.9729276290704 17.5173624075872 50.9409304756926 23.1013367186917 52.3434423001182 16.9328347826087 57434.4423001182 4693.06937495333 21.3148871700821 19.5321637426901 3.2967032967033 13.1868131868132 624.563806995628 620.398091796817 616.567219733771 28.6828906693584 28.4544450085108 24.1449718925671 683.7 24 689.8 35 670.7 35 673.7 18 683.6 31 658.8 26 669.3 21 677.1 38 657.9 36 669 29 663.1 32 647.5 32 651.6 24 651.8 29 640.7 32 636.6 24 631.9 25 625.3 28 626.8 25 621.6 25 617.5 28 606.4 22 594 22 602.8 28 582.5 23 573.1 26 579.8 24 556.9 28 552.3 31 566.7 26 +161275 ALAMEDA PIEDMONT CITY UNIFIED 0 19.7488584474886 1.86453576864536 2.58751902587519 7.40740740740741 15.8697860962567 52193.4567901235 5248.69292237443 18.5118219749652 80.379746835443 0 0 704.578132444021 695.271888310459 688.142389758179 83.8003793266951 82.8760056791292 82.5393044306813 743.2 81 743.9 85 720.1 82 733.1 76 734.1 80 712.2 79 738.6 83 733.2 87 714.2 85 724.5 80 724.8 85 700.6 81 719.3 85 712.6 85 700.6 88 702.2 85 701 85 680.2 81 695.1 85 684.9 84 689.1 88 683.2 85 658.4 79 666.2 81 667.2 86 643.9 85 656.1 87 619.5 78 593.9 71 629.1 86 +175101 ALAMEDA PLEASANTON UNIFIED 4.70089495996232 8.73671782762692 1.74565694046214 6.93202900995109 7.12788259958072 16.1817604355717 67367.5492662474 4607.67330072525 24.6510600706714 39.6341463414634 0 0 683.838015568723 678.03443586493 671.316753082152 73.9103583362139 73.4222657600553 69.0648309515511 718.5 59 718.9 65 697.9 64 716.1 59 717.2 66 696.5 64 712.5 61 715.3 75 695.9 72 714.1 72 705.2 72 694.2 77 703.2 72 698.1 74 686.5 79 682.7 70 685.8 75 670 73 680.2 75 673.8 76 671.9 79 669 76 652.1 75 656.4 75 646.5 74 631.8 78 638.8 77 607.4 70 600.2 76 616.3 77 +161291 ALAMEDA SAN LEANDRO UNIFIED 28.1211115719618 12.6920072897683 19.2658161936996 26.8419682374382 13.3720930232558 14.428640776699 57240.4481686047 3980.58939468888 21.8984351933865 31.6582914572864 0 9.09090909090909 651.912278410151 642.209956553223 639.349656069902 43.8430935118052 39.3631426502534 39.3356969583878 693.6 33 695.4 40 678.3 43 685.4 27 689.7 38 668.9 36 682.1 32 685.9 47 666.9 45 684.7 44 672 40 657.5 42 673.9 44 666 44 661.2 54 657.4 44 653.1 45 643.3 46 649.5 46 632.8 35 637.7 48 629.4 42 606.2 32 623.1 46 602.7 38 579.5 31 594.8 37 573.9 41 563.8 41 581.1 40 +161309 ALAMEDA SAN LORENZO UNIFIED 36.9904684648144 10.0323624595469 15.4230235783634 30.7443365695793 13.5076252723312 13.2975345167653 58413.7385620915 4197.61525658807 23.1294326241135 31.1507936507937 0 0 650.559694592323 638.287041796294 639.202783519361 43.6724541821689 35.5612065467334 37.6273465956851 691.3 31 691.2 37 672.9 38 685.6 28 690.8 39 666.7 34 680.2 30 683.6 45 666.5 44 685.2 44 666.5 35 661.1 46 677.5 47 665.6 43 662.1 56 655.8 43 642.8 35 645.4 49 643.1 39 628.4 31 635.5 46 628.1 40 604.1 30 622.6 45 598.1 34 575.6 28 592.3 35 570.8 38 555.8 33 581.4 41 +373981 AMADOR AMADOR COUNTY UNIFIED 20.2597946783993 .485744456177402 .802534318901795 5.97676874340021 2.4390243902439 15.3094936708861 51311.6292682927 4025.59281942978 24.8229166666667 36.1940298507463 0 91.6666666666667 670.250681818182 655.3 651.925882352941 54.4072829131653 51.1426197729161 54.4082386363636 712.8 53 704.7 53 694.3 60 703.9 47 695.3 48 679.2 47 702.3 52 696.4 58 678.3 57 701.6 61 682.3 52 672.7 58 690 61 675.3 54 667 61 670.6 58 659.7 53 647.7 52 656.6 53 640.8 46 640.9 51 638.2 51 613.9 43 627.9 52 619.7 57 594.7 49 605.6 50 579.8 51 570.9 54 591.9 57 +461408 BUTTE BIGGS UNIFIED 42.6682692307692 2.83687943262411 .945626477541371 23.8770685579196 10.6382978723404 11.8396226415094 55990.3191489362 5151.62647754137 17.9120879120879 24.4444444444444 0 0 654.831493506493 646.170872274143 638.868238993711 41.8977987421384 42.0809968847352 40.1103896103896 685.3 26 688.8 34 665.3 30 690.7 32 690.7 39 662 30 695.9 45 696.1 58 671 49 695.3 54 674.7 44 665.8 51 677.4 47 671.7 49 658.9 52 656.2 43 655.6 48 639.5 42 647.1 43 635.9 38 632.3 42 624.1 36 609.1 34 627.8 50 601.7 37 582.9 34 588.4 31 558.5 28 560.2 37 573.5 32 +461424 BUTTE CHICO UNIFIED 33.1292320991212 6.30541173132846 2.76615362791687 12.8661607206185 6.17283950617285 14.6014383561644 58558.5972222222 4004.40095042202 22.7300762863172 49.6551724137931 4.34782608695652 26.0869565217391 663.164911595194 653.503262518968 647.277658142665 50.4598154201115 49.4008915022762 48.6200058610921 710.2 50 714.3 62 690.3 56 706.1 48 707.8 57 685.2 53 699.7 49 702.3 64 680.9 59 695 54 684.3 53 671 56 683.1 53 675.8 54 664.7 59 664.4 52 658.3 50 647.2 50 651.4 47 637.7 40 635.9 46 638.2 50 612 37 622.8 46 608.1 42 590.3 41 598.5 41 573.6 40 561.1 38 579.6 38 +461432 BUTTE DURHAM UNIFIED 29.3929712460064 1.07115531752104 .765110941086458 9.71690895179801 4.47761194029852 14.0452702702703 53772.2985074627 4518.03442999235 21.1850649350649 51.0204081632653 0 0 675.541104294479 661.864705882353 662.146998982706 62.5757884028484 54.0425963488844 57.4836400817996 714.6 55 709.1 57 703.3 67 714 57 713.7 63 695.7 63 706.8 56 707.9 69 691.3 68 706.7 66 683.5 53 682.4 67 688.7 59 676.6 54 670.8 65 671.3 59 666.7 59 655.8 60 662.9 59 650.5 54 652.7 63 647.5 58 615.3 40 638 60 617.1 50 590.8 42 608.1 50 586.3 52 564.9 42 596.6 58 +461473 BUTTE GRIDLEY UNION 52.9931305201178 6.21737066919791 .332225913621263 38.7280493592786 7.61904761904762 14.1739495798319 50695.1238095238 4114.06454674893 20.411361410382 23.2758620689655 0 0 647.268098591549 643.146611909651 636.80674002751 40.9401650618982 40.8555783709788 34.6556338028169 694.8 34 697 43 675.4 40 688 30 697.1 46 668.2 35 687.6 37 691.6 54 675.5 54 678.5 38 670.8 39 653.4 38 668.2 38 653.9 32 654.1 46 649 36 653.3 46 641.8 44 640.6 37 635.5 38 634.7 44 613.9 28 602.9 29 614.6 38 590.8 28 591.1 42 589 32 573.2 40 562.8 40 579.5 38 +461531 BUTTE PARADISE UNIFIED 35.0883585352523 .829216654904728 .388143966125618 4.62244177840508 4.13533834586465 14.3022108843537 55278.7443609023 4148.22776993649 21.9194683346364 25 23.0769230769231 15.3846153846154 666.75602871998 653.663746369797 646.168135095448 48.0907978463045 47.7294288480155 50.525129982669 707.9 48 706.1 53 679.2 44 702.1 44 701.2 50 671.6 39 694.4 44 694.4 56 670.1 48 693.1 52 680.5 49 666.7 52 681.5 51 672.5 50 659.1 52 666.4 54 654.5 47 645.9 49 657.3 54 636.9 40 636.8 47 642 53 613.8 39 622.8 46 617.8 51 596.4 47 607.2 49 589.6 55 568.8 47 595.2 56 +561564 CALAVERAS CALAVERAS UNIFIED 37.2044140830268 .569948186528497 1.1139896373057 6.32124352331606 5.35714285714286 13.6024725274725 50668.494047619 3975.44792746114 24.8691767708998 22.9787234042553 0 8.33333333333333 662.25800647715 649.149032711924 643.041403757533 46.6157390996101 45.047836792121 47.6523929471033 699.5 39 700.3 47 679.4 45 694.4 36 699.8 49 668 35 694.9 44 693.2 55 669.7 48 693.9 53 680.3 49 664.3 50 686 56 669.5 47 661 54 666.8 54 663 55 650.1 54 655.8 52 635.2 38 639.1 50 641.1 53 609.8 35 624.7 47 610.9 45 582.5 34 598.2 41 576.7 43 562 39 581.4 41 +661598 COLUSA COLUSA UNIFIED 54.2682926829268 .549786194257789 .549786194257789 40.7452657299939 7.40740740740741 14.8710526315789 52537 4205.36224801466 19.4451145958987 36.283185840708 0 0 653.225547445255 646.493309545049 638.67279344859 38.926296633303 38.5388046387154 35.7308394160584 691.1 30 688.9 34 670.2 35 678.1 22 685.6 33 655.4 23 686.8 36 696.7 58 668.9 47 679.1 39 666.5 35 653.7 38 673.1 43 663 41 650.2 42 654.6 41 650.9 43 640.6 43 639 35 624.4 27 627.9 38 626.3 39 603.9 30 619.1 42 599 35 588.9 40 594.3 37 574.5 41 568.1 45 588 47 +661614 COLUSA PIERCE JOINT UNIFIED 65.8239700374532 .264084507042254 3.87323943661972 58.8908450704225 6.55737704918032 10.9265151515152 46291.7868852459 4469.79753521127 19.5254833040422 37.9310344827586 0 0 639.172727272727 633.277030162413 623.559159859977 25.7491248541424 27.4095127610209 24.9306220095694 687.1 27 683.2 28 660 26 678.2 22 682.8 30 656.2 24 663.6 18 672.8 34 649 28 669.4 30 655.6 25 642.8 28 659 30 644.5 23 635.4 27 634.6 23 629.6 23 621.9 24 624.1 23 624.8 28 620 30 616.2 30 602.1 28 608.7 33 581.8 22 573.9 26 573.3 20 557.4 27 549.5 28 560.4 19 +661622 COLUSA WILLIAMS UNIFIED 78.5407725321888 1.28205128205128 0 78.4188034188034 20.8333333333333 11.4778846153846 49267.1922916667 3893.3372008547 21.1231101511879 19.2307692307692 0 0 623.801777777778 624.58059914408 615.708849557522 19.3126843657817 21.2339514978602 15.0103703703704 661.9 10 676.5 22 648.2 16 664.9 13 679 26 639.6 13 652.6 11 665 26 639.1 20 645.7 13 651.1 21 627.6 16 640.4 16 647.8 25 628.5 20 628.7 18 634.6 28 618 21 610.6 14 603.4 12 602.1 16 592.5 14 581.3 13 594.7 22 573.5 16 558.5 15 572.4 19 556.7 26 545.9 24 576.9 34 +761648 CONTRA COSTA ANTIOCH UNIFIED 30.0755277257763 3.62619624120835 10.5038625619739 20.9443099273608 8.66574965612105 13.6910780669145 62341.1939477304 4011.39040701026 23.8890485771774 23.8544474393531 0 72.2222222222222 654.988955223881 642.419637634059 642.558945199835 48.5542645241038 42.4466200844979 44.2719734660033 699.6 39 698.4 46 680.8 46 696.1 38 697.2 47 675.8 43 690.9 41 691.8 54 675.9 54 690.9 51 674.4 44 665.3 50 677.4 48 661.8 40 660 54 658.4 46 650.5 44 645.1 49 650.8 47 636.5 40 640.1 50 632.9 46 609.1 36 626.3 50 605.2 42 582.9 36 598.9 42 573.1 43 559.2 40 584.2 47 +761697 CONTRA COSTA JOHN SWETT UNIFIED 28.246013667426 6.89342403628118 19.8185941043084 16.7800453514739 12.7450980392157 15.9155462184874 59176.5294117647 4225.73832199546 22.1837944664032 18 0 0 655.849803664921 645.640405904059 641.369559668156 44.1640076579451 42.0817958179582 40.6603403141361 701.6 41 695.7 43 682.3 48 689.9 33 693.4 47 672.5 41 689.3 40 688 50 673.1 52 687.5 48 678.3 47 664.4 49 672.4 44 669.3 48 657.4 50 657.2 44 656.5 50 642.1 45 640.7 38 626.1 31 629 39 624.7 38 605.1 34 616.7 41 601.9 41 582.2 37 593.7 38 562 36 545.8 29 573.1 36 +761739 CONTRA COSTA MARTINEZ UNIFIED 22.3337515683814 2.52373234545034 3.31095160916879 14.0310257003936 10.3092783505155 16.1568584070796 59230.7216494845 4114.41768927993 21.7433155080214 34.4262295081967 0 0 666.986131386861 653.039726027397 651.011405568601 54.859443139886 49.3724722765819 53.342402123424 709.8 50 712.9 58 687.6 53 700.2 42 703.5 53 678.1 46 696.5 46 700.1 62 676.8 55 700.2 59 677.4 46 673.6 59 687.8 58 668.9 47 667.1 61 668.3 56 652.1 44 648 51 659 55 642 45 644.5 55 645 56 619 44 636.1 58 623.2 56 594.9 45 609.7 51 589.3 55 574 51 598.4 60 +761754 CONTRA COSTA MT. DIABLO UNIFIED 22.6246525611209 7.69788789375297 4.90220696967161 16.7768756452108 9.42158616577221 15.3236785904965 57128.5825879547 3928.69554420915 22.1416213544241 37.6383763837638 0 0 663.753803895455 655.29439179166 651.228181140823 57.5844026823413 56.8430443382232 53.913434326619 707 47 709 57 687.9 53 702 45 706.7 60 683.5 51 699.4 50 703.6 65 682.9 62 698.4 58 688.6 58 675.1 60 687.6 59 680 58 669.1 63 670.3 58 663.6 57 655.3 59 660.9 58 650.9 56 649.8 60 646.3 58 625.9 54 634.6 58 613.8 51 595.7 50 607.9 51 581.4 52 571.4 55 592.7 57 +761788 CONTRA COSTA PITTSBURG UNIFIED 51.7849321068769 4.59893048128342 27.7967914438503 35.1016042780749 30.0248138957816 15.9748903508772 58788.9305210918 4049.18085561497 22.8729963008631 85.1116625310174 0 8.33333333333333 638.057359342254 630.487298832439 628.793177419355 35.1459677419355 31.2234143262859 29.0448170240206 692.7 32 690.8 36 674.7 40 680.8 23 685 33 663.4 30 674.1 25 678.2 39 662.9 41 678.1 38 666.2 35 656.2 41 659.9 31 654.5 32 648.7 40 645.5 33 639.5 32 631.6 34 632.1 29 623.2 26 623.8 34 615.7 29 601 27 615.5 39 585.1 24 575.2 27 584.3 28 556.6 26 552.6 30 569 27 +761804 CONTRA COSTA SAN RAMON VALLEY UNIFIED 1.89532160557704 9.92522790125986 1.63371914370583 4.27634948274096 4.50346420323325 15.9236921529175 59976.9376443418 4035.18872272867 23.3468734613491 50.7450331125828 0 0 687.436196062002 681.264960300878 673.262666202576 75.288827010094 75.4876027301853 71.8017036726714 720.5 61 724.5 71 701.7 68 719.4 63 722.3 71 700.5 68 716.3 65 719.3 79 700.1 76 717.3 75 719.1 82 695.6 78 708 76 709.8 83 689.1 81 690.4 77 690.4 79 674.7 77 684.4 78 674.4 77 672.6 79 670.5 77 652.6 75 656.3 75 646.9 74 622.9 71 636.1 75 608.6 71 589.8 67 613.3 75 +761796 CONTRA COSTA WEST CONTRA COSTA UNIFIED 51.2384774565749 13.0202355783751 35.1011778918756 25.5270311084265 25.8268824771288 17.1897748592871 62664.0950035187 4347.93612201752 22.8705015585152 36.5 0 8.47457627118644 639.248799428299 632.602881497267 628.976394317857 36.1087329583373 34.3111275826925 31.5787994282992 690.4 30 694.8 39 674.4 39 682.4 25 688.6 36 663 30 677.9 28 679.4 40 663.4 41 674.5 34 665.7 34 652.4 37 658 29 654.6 32 644.3 35 650.5 37 646.9 39 636.4 39 637.6 34 629.3 32 627.6 37 617.2 30 602.6 28 613.3 37 595.4 32 582.9 34 590.8 33 566.8 34 555.8 33 576.2 34 +861820 DEL NORTE DEL NORTE COUNTY UNIFIED 42.5114329268293 6.25244236029699 .41031652989449 10.1797577178585 8.07692307692308 14.7094827586207 58233.8115384615 4733.28038296209 20.6736353077816 15.5038759689922 0 0 654.110813174002 643.545233380481 636.959429065744 41.8500576701269 41.4144271570014 42.1262022733897 699 39 700.6 46 673.5 38 691.8 33 695.3 44 667.2 34 685.2 35 687.1 48 666.6 44 690.5 50 672.9 41 661.1 46 675.6 45 665.7 43 655.1 47 656.8 44 650.1 42 640.2 43 647.2 44 634.3 37 632.2 42 632.4 44 610.5 35 619.1 42 609.2 44 591.2 42 598.5 41 572.4 39 562.4 39 579.5 38 +973783 EL DORADO BLACK OAK MINE UNIFIED 30.1696469509399 .797373358348968 .515947467166979 2.25140712945591 1.90476190476191 14.2323275862069 51822.3714285714 4030.97842401501 21.4729458917836 32.4561403508772 0 0 671.052793471438 662.392478421702 654.1465625 56.355 57.1011097410604 55.08223477715 705.8 46 707.6 55 681.9 47 697.9 40 697.6 47 670.9 38 698.2 47 700.9 63 676.7 55 701.4 61 687.5 57 679.5 65 683.2 53 672.5 50 663.4 58 670.9 59 675.1 67 653.5 57 667.6 64 661.2 65 654.8 65 652.4 63 631.3 55 643.1 64 629 60 609.6 59 620.7 61 593.5 58 574.4 52 591.6 52 +961903 EL DORADO LAKE TAHOE UNIFIED 45.4234388366125 1.50119413169567 .904128283862163 26.2708973046742 5.33807829181495 14.3570287539936 55740.1387900356 4323.75400887069 21.5345821325648 86.7219917012448 0 0 655.848036826428 645.356022041459 644.127473404255 49.6300531914894 44.7874573602729 43.96452748443 695.8 35 697.4 43 675.1 40 697.6 39 696.4 45 675.4 42 692.2 41 695.5 57 676.1 54 690.4 50 673.4 42 671.7 57 675.7 46 665.6 43 665.1 59 658.7 46 653.6 46 650.5 54 652.7 49 641.8 45 643.8 54 632.9 45 615 40 629.9 52 607.4 42 589.4 40 598.8 41 579 45 569.8 47 585.3 44 +1073965 FRESNO CENTRAL UNIFIED 49.2508395763369 10.1529902642559 7.8741842302343 42.3237402375094 16.5394402035623 10.0809012875536 54568.7404580153 4006.11832673585 22.5917372337696 37.6666666666667 0 76.9230769230769 645.428 641.522896312638 634.864938828075 40.9228911783645 41.6585250551529 34.9438367346939 683.8 24 688.6 35 665.9 31 680.9 24 683.7 33 654.2 23 673.7 26 680 41 658 37 681.1 41 669.9 39 660.8 46 665.5 37 663.1 41 653.5 47 652.1 39 651.7 45 642.2 46 638.1 35 632.4 37 629.1 39 624.4 39 614.8 44 620.7 46 597.8 38 592.8 47 594.7 39 571.8 45 566.7 51 586.8 52 +1062117 FRESNO CLOVIS UNIFIED 23.433371722783 11.750645994832 2.87144702842377 19.031007751938 15.9441587068332 11.8789028213166 53158.0705363703 4242.7020994832 22.7051671732523 40.5063291139241 0 0 670.829070946691 669.983691062632 660.175030880537 62.7089730015881 64.6854327938072 55.8729220865118 710.2 50 711.5 59 690.5 56 703.4 45 704.1 53 681 48 699.3 49 701.6 63 682.2 60 703.5 63 695.2 64 685 69 691.8 62 686.1 64 676 70 673.7 61 683.2 73 662.4 66 661.2 57 660.4 64 652.9 63 644.3 55 638.2 62 639.1 61 624.2 57 622 71 623.1 64 595.7 60 597.9 74 609.4 70 +1062125 FRESNO COALINGA/HURON JOINT UNIFIED 57.9224030037547 .87173100871731 .647571606475716 68.7422166874222 18.9349112426035 11.1978723404255 61085.4437869823 4258.42515566625 24.4786015672092 14.8351648351648 0 0 634.785217079297 631.830958230958 622.751865266208 28.8927924664976 32.6072306072306 26.6347326874776 687.3 27 689.2 35 666.3 31 673 18 682.7 32 650 20 670 23 673.3 34 653.7 33 673.4 34 661 31 649.2 34 659.9 31 651.6 30 640.7 32 641.8 29 636.7 30 627.2 30 631 29 626.8 30 620.1 30 617.5 32 610.5 38 610.1 35 575.7 20 579.1 33 579 24 550.5 25 551.9 33 562 23 +1073809 FRESNO FIREBAUGH-LAS DELTAS UNIFIED 87.8371750858264 .405405405405405 1.21621621621622 90.4504504504505 32.4074074074074 10.3756097560976 51400.5555555556 4317.72837837838 20.4905660377359 30.8510638297872 0 0 629.51695945946 626.268102372035 615.682792207792 21.3207792207792 24.5274656679151 19.7959459459459 672.2 16 674.1 20 651.7 19 667 14 676.9 24 645.1 16 662.5 17 661.3 23 647.8 27 660.3 22 649.8 21 634.4 21 648.8 21 644.5 23 636.4 28 627.5 18 630.1 24 619.2 22 619.9 20 614.3 19 606.9 19 616.1 30 613.7 39 600.9 27 581 21 570.9 24 571 18 544.5 18 550.4 29 555.4 15 +1062158 FRESNO FOWLER UNIFIED 60.5990783410138 7.19661335841957 .846660395108184 72.3424270931326 24.7619047619048 11.8363247863248 51537.3428571429 3807.78974600188 21.0700389105058 38.7931034482759 0 0 635.323164218959 638.899266177452 627.946421404682 32.0481605351171 36.1320880587058 25.084779706275 690 30 694.6 41 673 38 679.1 22 692.2 40 658.5 26 670.9 23 683 44 660.7 39 673.1 33 669.2 38 650.8 35 655.5 27 659.5 37 643.9 35 641.9 29 647.4 40 635.7 38 622 21 624.6 28 622.9 33 611.6 26 607.5 33 606.9 32 577.2 19 576.6 29 575.6 21 549.8 21 556 33 567.3 25 +1062166 FRESNO FRESNO UNIFIED 62.0197740112994 19.6517667528081 11.3156615408234 45.2396182483433 23.4048481471162 14.6799561082663 61095.3050989134 4685.64291379884 22.2597299444003 27.4755927475593 0 31.1111111111111 632.640383670421 630.72546997266 623.040624146675 30.5068851180027 32.4933723013105 26.0484501837766 692 31 696.6 42 673.8 39 678.8 22 688.7 36 658.9 26 672.3 24 677.4 38 658.2 36 673.5 33 666 34 651.1 36 656.7 28 657 34 643.9 35 643.9 31 645.8 38 631.6 34 626.4 25 623.9 28 618.6 29 607.2 23 597.4 25 602.9 29 579.6 21 574.3 28 577.9 23 551.9 25 549.2 29 564.5 24 +1075234 FRESNO GOLDEN PLAINS UNIFIED 86.545988258317 1.71370967741935 .201612903225806 92.2379032258065 26.0869565217391 14.5806603773585 62758.2608695652 5242.80040322581 21.7211328976035 19.1780821917808 0 0 617.92496382055 623.329073033708 614.588491779843 21.0793423874196 22.8026685393258 13.6685962373372 665.8 12 677.7 23 655.7 22 657.7 9 674.1 22 640.4 13 655.1 12 664.7 26 646.3 26 661.1 23 660.5 30 641.8 27 635.3 13 646.6 24 632.4 24 623 15 628.4 23 620.5 23 610.4 14 611.4 17 610.3 22 591.2 13 589.4 18 597 24 565.3 12 566.6 21 569.3 17 535.7 13 544.2 23 552.1 13 +1073999 FRESNO KERMAN UNIFIED 69.4980694980695 5.35002845759818 .313033579965851 70.4325554923165 22.6415094339623 12.3231382978723 54546.0125786164 4283.10130904952 22.1542383683875 40 0 60 639.117610619469 631.208603832616 625.959092783505 27.9550515463918 27.4974579585452 24.4261061946903 680.9 21 682.1 27 662.2 28 668.7 15 676.4 24 649.9 19 668.4 21 670.5 32 654.5 33 673.2 33 663.2 32 645.7 30 661.4 33 659.3 36 646.3 38 641.3 28 641.6 34 627.5 30 630.1 28 619.5 23 620.2 30 607 22 592.9 21 599 25 574.7 17 571.6 25 577 22 552.3 23 539.2 20 563.8 22 +1062265 FRESNO KINGS CANYON JOINT UNIFIED 63.1713244228433 1.40625 .600961538461539 71.3581730769231 16.7919799498747 14.4614893617021 55184.7769423559 4478.65733173077 22.2565194252262 16.7865707434053 0 6.25 638.653324854651 636.555282685512 628.19417703263 34.4696232197584 37.1314487632509 30.5952034883721 692.9 32 695.3 40 672.6 37 684.6 27 691.6 40 665.6 33 679.7 30 686.8 47 666.2 44 670.6 31 660.9 30 647.2 32 661.2 32 655.8 33 647.7 39 646.9 34 648.6 41 636.3 39 633.2 30 633.4 36 625.3 35 615 29 609.3 35 609 33 590.3 28 585.9 37 586.3 30 563 32 558.1 36 568 26 +1062240 FRESNO KINGSBURG UNION 35.6033874382498 2.51875669882101 .37513397642015 67.7384780278671 7.91366906474819 15.3451612903226 54702.2225899281 6836.69390675241 21.1443530291698 41.5789473684211 71.4285714285714 0 659.55601965602 655.824398460058 646.9376953125 50.0771484375 50.7348411934552 45.3916461916462 684.7 25 690.8 36 667.3 32 685.3 27 692.4 41 660.8 28 682.4 32 689 50 667.3 45 696 55 677.3 46 669.6 55 683.5 54 672.6 50 662.9 57 663.8 51 660.4 53 651.2 54 654.3 51 643.1 46 641.3 51 637.9 50 630.8 56 634.8 57 614 48 613.3 63 611.8 53 597.7 62 589.2 66 606.2 68 +1062281 FRESNO LATON JOINT UNIFIED 72.9166666666667 1.23873873873874 .563063063063063 70.045045045045 3.92156862745098 11.5576271186441 39728.3529411765 3899.13175675676 18.2365145228216 13.0434782608696 0 0 635.926148409894 633.431208053691 626.668181818182 29.2020202020202 27.7852348993289 22.6678445229682 677.3 19 683.7 29 659 25 673.8 18 674.7 22 655 23 662.3 17 668 29 653.2 31 663.5 24 654 24 644.3 29 656.1 27 652.4 30 646.5 38 640.5 28 642.2 35 631.5 34 628.4 26 630.6 33 620.1 30 603.8 20 595.4 22 593.5 21 581.9 22 570.6 24 580.3 25 556.2 26 553.8 31 574.4 33 +1075127 FRESNO MENDOTA UNIFIED 87.7772534214252 .533462657613967 .5819592628516 97.7691561590689 40 12.2075268817204 60303.175 3933.77740058196 25.6375 47.1698113207547 0 0 622.616214335421 621.331699346405 613.684299191375 18.4973045822102 18.9797385620915 13.7035490605428 676.5 18 671.5 18 653.9 20 669 15 680.7 28 648 18 656.4 13 666.4 27 646.8 26 649.9 15 650.4 21 631.7 19 635.5 13 637.7 17 624.5 17 625.1 16 621.4 18 616.4 20 608.7 13 604.1 13 604.2 18 591.1 13 582.4 14 589.8 19 556.6 9 553.9 13 559.5 11 532.3 11 539 19 554.7 15 +1062364 FRESNO PARLIER UNIFIED 91.604841858649 .214362272240086 .107181136120043 98.8210075026795 62.1848739495798 11.9275362318841 55527.2941176471 4223.12647374062 21.6865417376491 13.3858267716535 0 40 616.066551893753 620.616848599905 610.251985922574 19.1895424836601 22.1860465116279 13.9183472700443 672.7 16 681.9 26 651.7 19 660.9 11 675.8 23 642.5 14 653.9 12 665.1 26 643.9 24 652.1 17 651.2 22 636.9 23 637.6 14 642 21 626.7 19 630.3 20 637.5 30 624.3 27 611 14 612.6 18 606.3 19 588.5 12 589 18 591.7 20 562.6 11 560.4 16 561.7 12 535.6 13 545.9 24 554 14 +1075408 FRESNO RIVERDALE JOINT UNIFIED 64.8507462686567 .66711140760507 3.06871247498332 64.5096731154103 14.9253731343284 11.3691780821918 47732.5671641791 3511.89993328886 21.4887218045113 10.6666666666667 0 0 644.658088235294 648.756526207606 634.010914760915 35.5135135135135 41.5817060637205 29.9044117647059 684 25 689.7 35 664.1 29 675.3 19 679.3 27 659.5 27 672.4 24 682.7 44 664.4 42 677.7 37 673.2 42 650.2 34 670.9 41 673.7 52 651.6 44 639.5 27 642.1 34 622.4 25 628.7 26 628.3 31 615.2 26 613 27 610.8 35 603.4 29 600.8 36 612.2 62 608.1 50 577.5 44 582.1 59 590.2 50 +1062414 FRESNO SANGER UNIFIED 57.0024891916678 4.32291666666667 .5859375 70.6640625 23.4806629834254 14.0044289044289 52155.2569060773 4382.06119791667 21.7115330121848 23.0232558139535 0 0 637.416965285554 632.764367398802 627.134107534748 31.840160936357 30.8818297331639 26.3355729749907 684.5 24 688.6 34 664.3 29 677.5 21 688.4 36 655.2 23 668.7 21 676.6 37 655.4 34 675.1 35 662.4 31 654.5 39 659.7 30 653.5 31 645.4 37 646.6 33 642.3 35 637.1 39 631.3 28 625 28 625.4 35 609.5 24 596.3 23 608.1 33 584.5 23 575.5 28 580.4 25 553.5 24 548.4 27 566.1 24 +1062430 FRESNO SELMA UNIFIED 69.6452036793693 3.97230320699708 1.02040816326531 76.7128279883382 27.6 13.0118794326241 53531.636 4180.03662536443 22.5010266940452 14.6919431279621 0 0 642.379013030219 638.60592632141 633.074566630553 38.6977248104009 38.217031500267 31.5431106182423 687.3 27 691.2 36 671.4 36 677.8 21 689.4 37 655.7 24 674.4 25 680.4 41 660.7 39 683.9 43 663.5 32 662.4 47 667.4 37 663.1 41 653.3 46 647.6 34 646.6 39 637.3 40 636.9 33 634.5 37 633 43 622.5 35 616.3 41 622.6 45 591.5 29 590.1 41 592.6 35 564 32 558.3 35 574.1 32 +1075275 FRESNO SIERRA UNIFIED 21.604680317593 .540540540540541 .291060291060291 7.48440748440749 1.52671755725191 17.1124161073826 62522.8244274809 5879.9659043659 19.4851166532582 26.3736263736264 0 0 680.277309941521 669.70080552359 658.152347417841 51.9900234741784 53.2784810126582 53.2520467836257 711.1 51 707.9 55 683.2 49 701.1 43 698.3 48 673 40 700.3 50 692.4 54 673.5 52 702.6 62 689.3 59 677.1 63 691.9 62 677.3 56 666.5 61 669.9 57 666.6 59 650.9 55 661.6 57 653.6 57 644.7 55 646.7 58 620.3 45 631 54 627.6 60 606.6 57 615.6 57 579.7 46 566.6 44 586.4 46 +1175481 GLENN ORLAND JOINT UNIFIED 44.9746621621622 1.34841235319704 .826446280991736 33.1883427577208 5.93220338983051 16.2532846715328 55653.8050847458 4602.90343627664 20.8553791887125 49.1935483870968 0 0 653.154290822408 643.173529411765 642.387649880096 45.0239808153477 39.0258823529412 39.0673420738975 703.1 43 699.9 47 688 54 687.7 29 690.1 38 669.3 36 687.7 37 687.2 49 673.3 51 682.9 42 671.7 41 666.3 52 667.7 38 654.9 32 657 50 651.7 39 645.4 38 646.8 50 639.5 36 625 28 623.7 34 633.9 46 611.1 36 623.7 46 605.6 41 590.4 41 594 37 572.7 40 560.9 38 580.8 40 +1162661 GLENN WILLOWS UNIFIED 53.125 21.7522658610272 .906344410876133 20.7452165156093 4.65116279069767 15.7360824742268 60020.6627906977 4325.15357502518 24.4811320754717 47.1153846153846 0 0 652.248719723183 650.23700947226 643.737198067633 45.9889579020014 45.4945872801083 37.9148788927336 691.8 31 693.1 39 677.2 42 690.2 32 692.1 41 674.5 42 679.5 30 683.6 45 669.9 48 689.5 49 685.6 54 667.6 53 664.5 35 666.6 44 654 46 654.8 42 651.3 44 643.3 47 640.5 37 637.8 40 636.3 46 630.1 42 620.4 45 621 44 601.9 37 602 53 601.8 44 578.9 45 572.6 50 587.4 47 +1275374 HUMBOLDT FERNDALE UNIFIED 11.7161716171617 .5 0 4.66666666666667 0 15.5121951219512 54645.6666666667 4893.85666666667 20.3215434083601 34.1463414634146 0 0 671.044444444444 664.697085201794 654.729306487696 57.5212527964206 59.7757847533632 55.0657596371882 718.1 59 723.3 72 689.6 56 712.5 55 711.6 63 692.2 60 698.7 48 703.4 66 668.9 47 698.4 58 693 62 676.2 62 694 63 695.4 73 672.1 67 668.4 56 671.7 65 651 55 661.4 58 656.1 60 655.5 65 640.2 52 611.8 37 632.9 55 620 53 606.1 55 609.5 50 576.4 43 565.7 42 591.7 53 +1262901 HUMBOLDT KLAMATH-TRINITY JOINT UNIFIED 76.3212079615649 0 .65597667638484 2.84256559766764 30 14.7855421686747 65665.4714285714 5770.56559766764 19.6496350364964 25.9259259259259 0 0 647.671180124224 637.66 628.449749373434 33.7769423558897 36.3312883435583 34.6608695652174 684.3 24 691.1 37 660.4 26 683.6 26 689.4 37 656.8 24 674.3 25 681.1 42 655.3 34 683.1 42 678.6 47 661.6 47 676.2 46 670.1 47 658.5 52 650 37 646.1 38 629.6 32 637.3 34 628.7 31 617.1 28 631.9 44 603.1 29 614.1 38 599.6 36 583.4 35 590.9 34 557.8 27 544.6 23 561.2 20 +1263040 HUMBOLDT SOUTHERN HUMBOLDT JOINT UNIFIE 33.9167169583585 .714749837556855 1.16959064327485 2.98895386614685 0 15.7926136363636 56055.9350649351 4427.87199480182 21.3154362416107 44.7058823529412 0 0 666.911310782241 645.515704154002 646.715384615385 48.0945945945946 39.0536980749747 49.9746300211417 715.8 57 707 55 692.5 59 709.5 51 691.3 40 681.4 49 693.9 43 688.8 50 668.7 47 693.2 53 660.6 30 656.8 41 673.1 43 657.6 35 657.8 50 672.8 60 656.2 49 653.5 58 652.4 48 632 34 634 44 646.3 57 616.6 41 631.5 53 614.1 48 576.9 29 599.2 42 578.7 45 554.2 32 582.4 41 +1363073 IMPERIAL BRAWLEY UNION 54.2566709021601 .518806744487678 .277932184546971 80.2112284602557 35.042735042735 14.9565055762082 66530.2478632479 4304.7152121549 23.78075097 33.89830508 0 0 640.308263570078 636.234013245033 632.318937957193 35.1953400162558 32.2733774834437 28.2425060761545 688 28 684.8 30 668.7 33 682.4 25 684 31 661.9 29 674.2 25 676.8 37 658.1 36 671.3 32 660.1 29 651.3 36 658.3 29 656.3 34 646.7 38 647.1 34 648.9 41 638.9 41 632.7 30 628 31 627.8 38 611.5 26 602.9 28 618.7 42 585.2 24 575.4 27 585.1 28 561 30 556.7 34 574.1 33 +1363099 IMPERIAL CALEXICO UNIFIED 43.954818017013 1.43290162579223 .0551116009920088 97.5199779553596 70.0996677740864 14.5877492877493 67370.0564784053 4266.61848994213 23.5719063545151 15.8256880733945 0 0 637.58567839196 641.629704962003 627.686793737236 24.8838211935557 28.0435851586947 18.5349474645957 674.8 17 684.6 30 657 23 666.5 13 681.6 29 648 18 665.1 18 675.4 36 653.7 32 662.4 24 658.6 28 643.7 29 645.1 19 647.2 25 635.2 26 632.7 21 635.1 28 625.9 28 621.3 21 622.2 25 613.4 25 598.1 17 598.7 25 598 24 571.7 16 572.5 25 573.9 20 549.8 21 546.7 25 561.1 20 +1363107 IMPERIAL CALIPATRIA UNIFIED 74.3016759776536 .421940928270042 5.55555555555556 71.5893108298172 40.5797101449275 12.2170886075949 53519.7391304348 4518.24331926864 20.625 29.4117647058824 0 0 636.260303030303 641.081281281281 629.831552419355 32.9153225806452 35.8938938938939 24.4060606060606 680.7 21 679.3 24 661.7 27 666.9 14 678.7 26 648.1 18 665.8 19 672.9 34 656.8 35 676.1 36 669.9 39 655.9 41 658 29 657.7 34 651.2 43 635.4 24 642.6 35 630.5 33 623.4 22 627.8 30 624.6 35 605.7 22 613.3 38 611.1 35 593.5 30 605.5 56 592.3 35 554.7 25 563.8 41 565.6 24 +1363123 IMPERIAL EL CENTRO UNION 62.1000820344545 1.55424308361828 2.94270023831727 82.6442855662626 33.4128878281623 15.2063025210084 66125.0906921241 4453.16423168584 23.3213859020311 31.3028764805415 0 0 646.318279404999 642.181461988304 635.553651897777 35.138363828822 34.3980994152047 28.9796043551603 687.7 27 686.7 32 668.1 33 680.1 23 682.8 30 656.5 24 675 26 676.6 37 658.3 36 671.6 32 660.7 30 651.1 36 656.6 28 654.7 32 645.5 37 649.6 36 653.1 45 639.8 42 629 26 627.6 30 623.4 33 617 31 609.2 34 618.3 41 591.7 29 583.8 35 589.7 33 569 36 562.3 39 580.7 39 +1363149 IMPERIAL HOLTVILLE UNIFIED 63.9180409795103 .399002493765586 .149625935162095 70.4738154613466 26.8817204301075 11.6070093457944 56622.5698924731 4245.81097256858 21.6851441241685 32.1428571428571 0 0 646.915160142349 641.476949860724 635.499860432659 37.3028611304955 36.0898328690808 32.202846975089 694.8 34 691.8 38 671.9 37 684.5 27 687.4 35 657.8 25 678.1 29 681 42 661.6 40 665.8 27 652.6 23 645.8 30 650.7 23 644.3 22 639.3 30 653.6 41 644.9 37 640.5 43 640.6 37 634.2 37 634.5 44 621.9 35 604.3 30 621.7 45 591.5 29 590.9 42 594.6 37 575.8 43 580.2 57 584.4 44 +1363164 IMPERIAL IMPERIAL UNIFIED 39.9445214979196 .749228735125606 2.68840899074482 60.7756721022477 24.5283018867924 9.22478260869565 51167.0283018868 3708.85940943147 20.8568738229755 34.9206349206349 0 0 648.104784978801 648.614979277679 637.713325401547 42.3599048185604 46.6820603907638 36.3301029678982 697 36 695.4 41 671.5 36 686.6 28 690.7 39 661.4 29 681.9 32 685.4 47 667.4 46 677.5 37 673 42 656.5 41 661.1 32 664.1 41 645.8 37 661.1 48 662.6 55 650 53 641.7 38 644.6 48 638.6 49 628.3 41 631.8 57 628.9 51 597.2 33 604.2 55 597 40 571 39 564.1 41 581.2 41 +1363214 IMPERIAL SAN PASQUAL VALLEY UNIFIED 76.8278965129359 0 3.00578034682081 31.0982658959538 20.4081632653061 15.3185185185185 60141.0816326531 5355.16069364162 18.9917695473251 19.3548387096774 0 0 629.748180242634 614.521440536013 615.989964788732 20.7411971830986 16.5175879396985 20.155979202773 681.4 22 672 18 660.3 25 669.6 15 673.2 21 650.2 19 660.3 15 664.1 25 646.1 25 666.9 28 648.2 19 638.2 24 662.7 33 644.4 23 637.3 28 623.7 15 607.4 10 608.4 15 615.7 17 597.9 9 603.2 17 605.6 22 576.9 11 591.5 20 571.5 15 557.5 15 568.9 17 553.9 25 530.3 14 559.7 19 +1463255 INYO BISHOP UNION 25.588491717524 .762388818297332 .508259212198221 11.0122829309615 5.45454545454545 16.5099173553719 59805.5454545455 4349.22151630665 23.4503510531595 40.7185628742515 0 0 665.129026548673 659.893040501997 647.360979827089 49.4184438040346 54.1928123217342 48.5286135693215 707.3 47 701.4 48 687.5 53 698.4 40 701 48 683.1 51 693.4 43 691.8 53 676.7 55 698 57 698.7 67 670.8 56 681 51 692 69 659.3 52 661.5 49 676.1 67 643.4 46 657.3 54 651.5 55 643.5 54 635.1 47 609.2 34 622.7 45 615 49 599.1 49 599.6 42 584 50 573.6 51 580.5 39 +1563404 KERN DELANO UNION 68.6434302908726 .780814277746793 1.72894590072504 76.8878973786949 31.8181818181818 12.2116310160428 58861.6878787879 3714.92013385388 25.9909638554217 14.0350877192982 0 0 628.471576763485 630.4126899577 619.339649525057 22.7148706190632 27.0755130816231 16.9576417704011 677.2 19 685.1 30 660.5 26 666.8 14 680.2 28 644.8 15 661.6 16 672.3 33 649.1 28 655.4 19 658.3 27 638 24 643 18 650.9 28 631.8 23 631.7 21 639.6 32 625.9 28 615.6 17 619.6 24 613.2 24 593.1 14 590.2 19 594.6 22 565.4 13 565.1 20 570.9 18 549.1 21 550.2 29 560 19 +1575168 KERN EL TEJON UNIFIED 37.8320172290022 .3584229390681 .860215053763441 13.6917562724014 8.33333333333334 10.3814285714286 55942.0666666667 4098.99426523297 24.9217391304348 0 0 0 656.297061704212 648.630488974113 642.803458213257 46.7867435158501 45.2895493767977 42.8873653281097 707.9 47 705.7 53 686 52 698.9 40 700.2 49 679.6 47 694.8 44 697.2 59 675.1 54 693.1 53 684.1 53 661.9 47 676.8 47 671.8 50 658.3 51 650.5 37 646.7 39 638.7 41 645.3 41 637.5 40 636.6 46 629.3 41 604.9 30 622.5 45 602.6 38 584.6 36 592.8 36 575.2 43 569.9 47 589.5 50 +1573908 KERN MCFARLAND UNIFIED 81.9645732689211 .311526479750779 .233644859813084 92.0171339563863 31.8965517241379 13.1324626865672 55369.8620689655 4428.04595015576 22.5085616438356 23.6842105263158 0 0 624.363516609393 624.61632196758 615.951785714286 21.5478110599078 22.5846841811068 16.9203894616266 669 13 672.7 18 651.7 19 669.7 15 674.8 22 645.5 16 663.4 17 668.3 29 651 30 653.2 18 651.9 22 634.3 21 638 15 642.5 21 625.4 18 632.8 21 631 25 624.7 27 615.8 17 616.2 20 608.2 20 603.5 20 598.5 25 601.3 27 568.4 14 565.9 20 571.7 19 543.9 18 544.5 23 558.9 18 +1563677 KERN MOJAVE UNIFIED 40.5990016638935 1.1070110701107 14.8708487084871 24.5387453874539 7.62711864406779 15.2442748091603 63042.2033898305 4572.61512915129 24.419983065199 32.484076433121 0 37.5 640.803693644758 630.078511087645 628.075648491265 34.137638962414 30.8104540654699 31.2036936447583 687.6 27 688.2 33 669.8 35 685.8 28 687.2 35 660 27 683 33 684.2 45 664.8 43 676.1 36 660.7 30 649.2 34 667.4 37 654.7 32 650.2 42 649.8 37 644.8 37 635.4 38 635.3 32 624.6 28 623.3 33 618.3 32 602.3 28 612.7 36 587.4 26 576.4 28 586.3 30 552.6 23 535.8 17 567.4 25 +1563685 KERN MUROC JOINT UNIFIED 31.8604651162791 2.01472297559086 12.4370399070128 7.47772181325068 9.84848484848484 15.3266666666667 63498 5767.59356838435 20.3072196620584 32.8 0 0 663.702340772999 654.100107469103 645.626877682404 53.1512875536481 56.0972595378829 54.5666848121938 711.2 51 703.1 50 686.6 52 699.3 41 696.1 45 667.9 35 700.7 50 694.8 56 672.3 50 693.2 53 680 49 658.7 43 685.7 56 674.6 52 661 54 673.7 61 670.5 63 656.7 61 658.1 54 651 55 647.2 57 648.5 59 630.2 55 636.4 58 624.5 57 613.3 63 616.1 57 593.6 58 588.4 65 595.2 57 +1573742 KERN SIERRA SANDS UNIFIED 32.5987279988168 2.2334864565183 4.79961983209251 10.898146681451 5.62913907284768 14.3510174418605 62453.1456953642 4537.56914303818 22.0415688903788 38.6627906976744 0 0 662.506528451698 650.898504875406 647.242869565218 51.0482608695652 47.435752979415 49.0284516982797 704.5 44 708.1 54 685.5 51 701 43 699.9 49 680.9 48 695 44 694.2 56 675.8 54 692.7 52 678.2 47 661.1 46 683.2 54 668.7 46 665 58 661.3 48 651 43 644.1 47 656.3 53 638.7 41 641.8 52 639.9 51 618.4 43 628.6 51 616.6 50 599.3 50 608.6 50 585.1 51 569.4 46 593 54 +1563776 KERN SOUTHERN KERN UNIFIED 49.3510324483776 1.697438951757 8.21917808219178 31.9833234067898 9.45945945945947 13.0842592592593 58159.2027027027 4284.44460988684 23.4270047978067 15.4929577464789 0 33.3333333333333 648.160764044944 638.358244680851 633.247085002225 39.1441922563418 38.2047872340426 38.645393258427 698.4 38 690.8 36 679.3 44 693.3 35 690.6 39 668.8 36 681.1 31 682.2 43 664.3 42 684 44 670.8 39 653.6 38 673 43 661.5 39 652.7 45 662 49 656.4 49 644.3 47 645.3 41 633.4 36 630.7 41 621.8 35 605 30 615.9 39 596.9 33 583.4 35 588.3 32 569.6 37 560.1 37 572.8 31 +1563800 KERN TAFT UNION 51.4623726585606 .361247947454844 .755336617405583 17.7668308702791 2.73972602739725 14.4369696969697 62633.095890411 5763.70114942529 21.0565780504431 17.7914110429448 0 0 644.816746411483 636.865050784857 627.733364355514 32.1526291298278 34.4307479224377 32.4698564593301 689.6 29 688.6 34 664.6 30 684.7 27 686.6 34 659 26 678.6 29 680.4 41 655.6 34 678.4 38 667.5 36 653 38 667 37 657.6 35 644.8 36 647.2 34 641.7 34 629.8 32 637.3 34 623.8 27 623.7 34 620.5 34 605.5 31 607.7 32 595.2 32 587 38 591.3 34 563.9 32 557 34 569.8 28 +1563826 KERN TEHACHAPI UNIFIED 24.9950445986125 .42042042042042 2.72272272272272 17.3973973973974 4.52488687782805 14.79 60455.0904977376 4308.12812812813 22.8716528162512 29.7297297297297 0 0 664.144418872267 649.835591306802 645.632324660634 50.2760180995475 47.4959074230878 51.5356731875719 704.6 44 696.8 43 679.8 45 702.7 44 695.4 44 675.3 42 692.5 42 689.5 51 671.1 49 700.8 60 683.8 52 671.2 57 691 61 676.9 55 666.3 61 671.3 59 669 61 653.1 57 659.5 56 646.1 49 643.4 54 639.3 51 613.2 38 626.2 49 612.9 47 592.7 43 602.5 44 584 50 562.5 40 586 45 +1563842 KERN WASCO UNION 65.8902691511387 .471815247082195 4.39533151229203 78.9173081698535 21.1009174311927 14.93269231 61803.9024390244 4139.93667742737 24.5117428924598 14.0151515151515 0 0 633.587433561124 631.382788990826 624.948731343284 27.0694029850746 25.8278899082569 20.7463933181473 679.6 21 680.3 25 666.2 31 673.9 18 679.5 27 658.3 26 663.8 18 672.7 33 657.2 35 667.7 28 657.5 27 642.2 27 655.2 27 656.4 34 641.3 33 637 25 635.6 29 631.3 33 621.8 21 617.8 22 616.3 27 602 19 590.4 19 601.3 27 575.4 18 570.1 23 571.3 18 540.1 15 539.3 19 553 14 +1663891 KINGS CORCORAN JOINT UNIFIED 64.279183175861 .463821892393321 4.05071119356834 79.3753865182437 17.3611111111111 15.3154545454545 66404.1944444444 4605.86147186147 22.6763485477178 15.5844155844156 0 0 638.988273615635 633.939674152356 626.044679891795 29.0036068530207 29.4297666226332 25.7328990228013 678.1 19 683 28 663.7 29 671.3 16 681.1 28 651.4 20 666.9 20 674.1 35 654.7 33 672.1 32 662.2 31 651.2 36 660.4 31 652.7 30 639.9 31 646.7 34 649.6 42 634 36 628.9 26 616.1 20 614 25 607.8 23 595 22 604.6 30 592.1 30 580.1 31 584.4 28 561.2 30 552.5 30 567.8 26 +1673932 KINGS REEF-SUNSET UNIFIED 86.4936207655081 0 .734094616639478 89.9673735725938 15.5963302752294 11.0606557377049 57641.5688073395 4543.49225122349 21.7527675276753 26.1904761904762 0 0 628.006722054381 614.202327044025 615.965977175464 19.9144079885877 16.6194968553459 16.5672205438066 671.1 15 672.3 19 652.6 19 661.4 11 669.5 18 643.8 15 659.7 15 663.4 24 644.7 24 659.5 22 650.5 21 637.1 23 645.6 19 637.8 17 634.2 25 626.4 17 617.3 15 615.5 19 619 19 607 14 606.4 19 597 16 584.5 15 593.9 21 559.1 10 551.5 12 561.8 13 547.8 20 528.6 13 558.6 18 +1764014 LAKE KELSEYVILLE UNIFIED 45.5701953657428 .954198473282443 1.33587786259542 22.0896946564885 7.20720720720721 14.7578125 54040.6036036036 4832.31965648855 20.0833333333333 50.9433962264151 0 0 661.984046164291 654.591859695566 646.073990734613 48.5221707478491 49.3653209794838 46.0855397148676 701.9 41 696.4 42 679.7 45 694.1 36 697.2 46 674.5 42 692 41 689.5 51 673.1 51 696.1 55 682.8 52 675.9 60 673.1 43 662.8 40 655.7 48 668.8 56 667.2 59 655.9 60 651.8 48 648 51 636.7 47 642.5 53 626.2 51 627.2 50 605.6 40 597.3 48 594.3 37 583.2 49 575.4 53 584.8 45 +1764022 LAKE KONOCTI UNIFIED 73.6089996959562 .829610721123165 5.96681557115507 9.60433950223357 6.32911392405063 13.7825 54439.9493670886 4354.3876834716 20.6129032258065 10.6060606060606 0 100 638.266855791962 624.112023328847 621.180950205573 28.9310187300137 28.0960071781068 31.0657210401891 696.7 36 691.8 39 673 38 687.6 30 684.4 34 662.3 30 678.4 30 677.7 39 657.4 37 674.2 34 660.2 30 644.9 30 655.3 28 647.7 26 633.3 25 649.5 37 641.5 35 625.4 28 635.7 33 615.7 21 617.2 28 617.9 32 591.2 21 604.2 30 585.7 27 563.7 21 578.6 24 552.7 27 541.7 24 563.5 25 +1764030 LAKE LAKEPORT UNIFIED 46.2952326249282 .659703133589885 1.86915887850467 15.6679494227598 3.44827586206897 15.1313131313131 58962.1379310345 4361.36118746564 21.4170506912442 28.4210526315789 0 0 658.686214953271 647.881014604151 644.126870229008 48.1656488549618 45.1775557263643 45.417445482866 707.7 47 699.9 47 683.6 49 694.7 36 697 46 668.8 36 703 52 699.2 61 680.4 58 694.9 54 691.5 60 669.6 55 683.4 52 676.7 54 666.4 59 662.4 49 656.7 48 647.5 50 647 42 632.2 34 636.4 47 626.6 38 609.2 34 624.3 46 611.3 44 591.8 41 603.4 44 574.7 40 553.3 30 580.4 39 +1764055 LAKE MIDDLETOWN UNIFIED 26.7957526545909 .723763570566948 .361881785283474 8.68516284680338 1.20481927710844 11.2951612903226 50096.4096385542 3932.38962605549 19.1504854368932 40.6976744186047 0 0 663.322495755518 657.100756938604 648.737091222031 52.0542168674699 52.7628259041211 48.4261460101868 701.7 41 705.9 53 681.2 47 695.3 37 698.3 47 670.4 37 693.1 42 698.8 61 672.8 50 696.2 55 692.1 61 674.5 60 679.8 50 669.1 47 663.3 57 667.8 55 670.5 62 655.6 60 648.6 45 642.9 46 639.5 50 643.8 55 621 45 634.7 57 618.4 52 599.4 50 606.5 48 586.1 52 580.5 58 594.3 56 +1764063 LAKE UPPER LAKE UNION 52.9170931422723 1.7329255861366 2.85423037716616 8.25688073394496 6.25 14.9870689655172 59995.3958333333 5022.53312945974 21.8995633187773 37.7049180327869 0 0 656.359604519774 651.16495132128 638.096332863188 37.3497884344147 41.8817802503477 37.9901129943503 705.2 45 696.9 44 684.8 50 698.5 40 696 44 673.7 41 682.6 33 683.8 45 665 43 689.6 49 671.7 40 656.7 41 660.3 31 649.2 27 636.2 27 648 35 651.7 42 632.1 34 646.9 43 643 46 629.4 39 620.2 33 609 34 612 36 608.1 43 602.7 53 586.7 30 559.6 29 561.6 39 568.6 27 +1864204 LASSEN WESTWOOD UNIFIED 41.970802919708 0 .571428571428571 9.14285714285714 3.03030303030303 17.9042857142857 55176.8484848485 5259.9580952381 18.9655172413793 18.1818181818182 0 0 652.683421052632 641.202067183463 631.90182767624 34.4229765013055 36.3927648578811 38.3631578947368 701.6 41 695.7 41 675.2 40 690.8 32 692.5 41 664.6 31 676.3 27 675.3 36 657.4 35 681.2 41 662.2 31 653.5 38 669.5 40 665 42 648.2 40 659.2 46 655.3 48 634.9 37 639.1 35 630.4 33 622.4 32 627.1 40 600.7 27 608.6 33 598.9 35 577.9 30 584.1 28 580.6 47 560.4 38 572.6 31 +1964212 LOS ANGELES ABC UNIFIED 30.5055227095651 32.4654190398698 10.4014103607269 32.6597956785101 36.0040567951318 15.2575630252101 59289.0862068966 4219.66476810415 22.576788291074 49.7326203208556 0 3.33333333333333 659.923843327729 663.76048998045 650.499602854484 52.5440273037543 57.6390518084067 44.8664923096083 705.6 45 717.5 63 688.2 54 697 39 712.7 61 678.8 46 691.2 41 703.8 64 677.2 55 691.7 51 693.7 61 671.3 56 682.4 53 689.5 65 668.6 62 663.8 51 670.7 61 653.7 57 650.4 47 650.8 54 643.9 54 632.2 44 623.3 47 627.7 50 603.7 38 600.8 51 605 47 574.9 41 572.3 49 586.4 45 +1975309 LOS ANGELES ACTON-AGUA DULCE UNIFIED 28.1723484848485 1.44320297951583 1.72253258845438 11.9180633147114 7.44680851063831 11.7280373831776 58880.170212766 3806.89338919926 24.8222222222222 0 0 0 663.988473520249 652.433478802993 652.670828105395 58.8782936010038 52.9339152119701 53.6859813084112 702.1 41 692.8 38 687.4 53 697 39 689.3 38 681.1 49 688.2 38 689.1 50 672.5 50 700.6 60 683.6 53 679.8 65 692.5 62 674.7 53 677.9 72 671.8 59 674.6 66 657.7 62 659.5 56 650.6 54 646 56 645 56 628.8 54 635.7 58 622.1 55 608.8 59 615.8 57 591.4 57 574.6 52 597.1 59 +1964261 LOS ANGELES ARCADIA UNIFIED 8.36221352711012 52.593956460522 1.21304018195603 9.88844362612369 8.90052356020942 15.9820135746606 64415.4659685864 4166.21780569696 24.2746044515956 60.840108401084 0 27.2727272727273 682.071046962516 691.294912131519 676.073383867277 73.9323512585812 77.8511904761905 62.3396524486572 717 58 740.3 82 706 71 710.2 53 725.7 73 700.4 68 704.6 54 727.1 83 700.6 76 705.7 65 719.7 82 688.2 72 694.3 64 712.9 83 684.2 76 681.7 69 701.8 85 674.4 76 673 68 678.1 79 671.8 79 658.6 68 643.9 67 658.6 76 632.3 63 622.9 71 635.7 74 604.3 67 594.5 71 613.1 74 +1964279 LOS ANGELES AZUSA UNIFIED 70.7382666782337 .959561343385881 3.15284441398218 78.9410555174777 25.9557344064386 14.4988495575221 64611.0342052314 4379.24306031528 23.9818631492168 19.4244604316547 0 11.1111111111111 630.515060402685 627.717457773394 619.018762369706 25.7844042749703 29.3741832079892 22.5122147651007 679 20 682.9 28 659.9 25 670.8 16 678.6 26 650.7 20 668.8 21 671.4 32 653.6 32 666.7 27 661.6 30 639.9 25 653.1 25 654.4 32 636.1 27 638.8 26 637.2 30 623.3 26 625.7 24 625.9 29 616.9 28 604.6 21 600.2 26 599.9 26 578.3 20 575.9 28 577.1 22 552.8 23 554.4 32 567.9 26 +1964287 LOS ANGELES BALDWIN PARK UNIFIED 62.871681687205 4.72375029897154 1.79382922745755 85.4699832575939 27.212020033389 15.062106017192 67839.958263773 3819.11803396317 27.5054157640393 26.7716535433071 0 0 627.079255415984 625.502389252614 620.852864742304 28.1941222638877 26.5887254485163 21.1458219552157 680 21 683.3 28 663.7 29 667.7 14 675.8 23 652.8 21 664.8 18 668.8 30 655.5 34 671 31 663.1 32 650 35 656.1 27 653 30 643.7 35 642.2 29 645.7 38 634.4 37 621.9 21 621.8 25 620.2 30 603.9 21 596.1 23 605.4 30 571.2 15 568.8 22 573.2 20 542.6 17 537.9 19 556.9 16 +1964295 LOS ANGELES BASSETT UNIFIED 79.6765957446809 2.10292357667977 2.10292357667977 89.1434433236451 45.6 14.3998207885305 62084.608 4432.06496837066 23.5596625150663 20.9876543209877 0 0 625.112745604964 627.803804077573 616.408769269649 23.1238311852413 26.8254599701641 18.82316442606 673.1 16 675.6 21 657.1 23 663 12 675.2 23 646.5 17 659.5 15 670.5 31 647.6 27 662.1 24 661.8 31 638.2 24 645 19 651.5 29 631.1 23 636.6 24 638.3 31 625 27 618.6 19 622.2 25 612.7 24 602.1 19 598.8 25 600.2 26 575.8 18 574.6 27 574.1 20 546.3 19 545.7 24 559.9 19 +1964303 LOS ANGELES BELLFLOWER UNIFIED 49.1721460825477 5.57544757033248 18.1585677749361 38.4800876872488 12.2743682310469 13.0422764227642 58550.5216606498 3988.18260869565 23.8852218555189 17.9972936400541 0 7.14285714285714 641.814845076401 641.600951888257 632.726298875201 38.4131762185324 41.0006207966891 32.1771010186757 686.5 27 686.6 32 668.3 33 679.8 23 683.6 31 659.3 27 678.5 29 678.8 40 661.4 39 670.8 31 664.6 33 650 34 661.9 32 662 39 653.5 46 651.9 39 657.3 49 640.7 43 637.8 34 637.7 41 630.3 40 623.9 37 620.1 45 621.7 45 596.9 33 595.5 46 594.4 37 566.6 34 570.3 48 580 38 +1964311 LOS ANGELES BEVERLY HILLS UNIFIED 9.73348783314021 10.9398496240602 3.57142857142857 4.09774436090226 10.8196721311475 18.2 62455.7573770492 6015.75751879699 17.7246909455396 61.8843683083512 0 0 690.567250257466 694.90896250642 681.280658436214 76.3996913580247 79.1928608115049 67.2659629248198 720.3 61 735.6 80 706 71 714.3 57 729.2 77 703.7 71 711.4 61 723.6 81 703.3 78 712.5 71 714.3 80 699.6 81 704.1 73 711.3 84 694.6 85 683.8 71 689.9 78 669.6 73 677.2 72 676.5 78 670.5 78 669.1 76 654.5 77 659.4 77 641 70 632.6 78 637 75 611.2 72 603.4 77 616.6 77 +1964329 LOS ANGELES BONITA UNIFIED 25.843945825753 5.86600496277916 4.82382133995037 27.5831265508685 9.50118764845605 16.8920124481328 62021.7553444181 4054.13568238213 24.1142443962401 51.764705882353 0 0 663.099746396156 658.021031171906 650.03186929488 52.8662521497553 53.0515585952913 48.306727175654 706 46 704.3 51 683.8 49 699.9 42 698.4 47 678.1 45 694.5 44 694 56 677.8 56 692 51 684.9 53 669.1 54 680 50 678.1 56 663.6 57 666.2 54 669.3 61 652.6 56 653.9 50 647.7 51 643.3 54 637.5 49 623.3 48 629.2 52 614.2 48 601.5 52 606.9 49 582.9 49 577.9 55 595.2 56 +1964337 LOS ANGELES BURBANK UNIFIED 37.6797976147452 5.6881243063263 2.77469478357381 36.9589345172031 13.1666666666667 14.4693832599119 62400.435 4138.19589345172 23.9576629974598 32.4290998766954 0 5.26315789473684 655.695169224715 652.230417919131 645.026701161769 49.5026847603241 49.3065063512072 43.0069854388036 701.1 40 701.4 48 682.2 47 694.7 36 701.4 50 675.9 43 684.1 34 687.9 49 667.8 46 688.5 48 678.8 47 668.1 53 676.8 47 668.2 46 662.2 56 661.1 48 663.3 55 649.3 53 651.1 47 645.2 48 643.4 54 636.1 48 627.9 53 629.6 52 605 40 596.6 47 600 42 575.3 42 573.2 50 588.4 48 +1964378 LOS ANGELES CHARTER OAK UNIFIED 23.9477040816327 5.26555386949924 4.87101669195751 36.6160849772382 11.7647058823529 15.3225396825397 61534.6654411765 4024.87496206373 24.1229724632214 38.7254901960784 0 0 655.798924731183 648.840342904359 640.007804980122 44.9202762084118 47.0877917785582 44.1773139363272 704.8 44 699.6 46 679 44 697.8 39 699.4 49 671 38 693.9 43 694.8 57 669.7 48 693.7 53 680.1 49 669.2 54 680.8 51 674.1 52 658.7 52 661.1 48 659.9 52 643.7 47 646.8 43 638.3 41 633.1 43 630.3 42 620.3 44 621.6 45 603.3 39 590.3 41 594.3 37 574.6 41 565.4 42 582.4 42 +1964394 LOS ANGELES CLAREMONT UNIFIED 20.8070229477899 10.1118500604595 12.0012091898428 20.8736396614268 11.7088607594937 13.9077464788732 61447.6582278481 4401.14782345828 21.542025148908 53.1697341513292 0 0 676.104095197256 668.467728327357 659.145744680851 59.1142553191489 59.8346340434508 57.3855060034305 718.3 59 724.6 70 695.3 61 713.2 56 716.2 66 691.2 59 702.4 52 709.3 70 682.9 60 702.2 61 699.9 68 680.5 66 685.8 56 686.1 64 669.1 63 680 67 672.9 64 662 66 664.9 61 646.3 50 649.6 59 648.1 59 622.8 47 630.7 53 622.2 55 594.2 45 611.5 53 582.5 48 568.8 46 588.6 49 +1973437 LOS ANGELES COMPTON UNIFIED 78.4239149752959 .0545386372158026 35.7296247060027 62.9273613525582 80.1749271137026 14.7931484502447 58991.4207968902 3743.12516617241 28.0999707687811 41.7890520694259 0 2.56410256410256 612.667656386702 613.706413351527 605.890224260388 19.7304401319837 22.4384906056471 16.2775590551181 667.5 13 672.3 19 651.7 19 660.6 11 671.3 20 642.6 14 653.1 12 660.1 22 643.7 23 659 21 651.7 22 635.9 22 638 15 640.9 20 627.9 20 625.4 16 627.8 22 617.2 21 614.7 16 617.3 21 606.2 19 594.6 15 590.3 19 593.5 21 570.1 15 570.7 24 573.2 20 550 22 551.7 30 558.5 17 +1964436 LOS ANGELES COVINA-VALLEY UNIFIED 37.6449529146237 8.54844606946984 5.79890310786106 50.8299817184644 14.2599277978339 13.9004615384615 62290.0270758123 4265.80702010969 24.2564009442528 42.0844327176781 0 0 653.860152895591 650.312752021288 641.89274360033 45.409372419488 46.8560024562481 40.6060320452403 701.5 41 701.1 48 680.3 45 691.6 34 692.5 42 669.9 37 684.8 35 687.6 49 667.8 47 687.3 47 680.2 49 661.1 46 672.2 43 669.4 47 653.3 46 657.4 44 658.3 51 645.5 49 644.3 41 641.4 44 637.2 47 631.7 44 620.7 45 625.1 48 603 38 598.8 50 602.2 44 572.7 40 566.4 44 585 45 +1964444 LOS ANGELES CULVER CITY UNIFIED 33.5116818262886 10.2023749790935 17.9126944305068 36.8121759491554 18.6507936507936 15.3850174216028 62132.0198412699 4282.61247700284 22.9572925060435 41.1764705882353 0 0 659.061115169223 649.806527353839 644.15641634981 46.8624049429658 44.7816388823668 44.1195519844169 706 46 702.8 49 685 50 694.6 36 695.1 43 672.5 39 684.4 34 687.6 49 668.8 47 688.1 47 673.5 41 663.6 48 682.6 52 669.4 46 664.7 58 665.5 53 649.4 42 648.3 52 654 50 647.1 50 641.8 52 636.8 48 617.9 42 625.4 48 607.1 42 592.2 43 598.2 40 570.8 38 565.6 43 579.2 37 +1964451 LOS ANGELES DOWNEY UNIFIED 42.8409459021704 5.5955762987013 4.8041801948052 63.3370535714286 14.5994832041344 12.2934807256236 64631.9341085271 3979.21940949675 25.1415032249572 23.2673267326733 0 0 651.33894611136 648.686241487882 645.34675671664 49.2248775419326 45.3423152961851 38.2581728616211 698.1 37 698.8 45 678.8 44 685.8 28 692 40 668.1 35 678.9 29 683.5 45 665.7 44 687.9 47 676.4 45 668.5 54 672.8 43 667.4 45 665.5 59 656.3 43 656.3 48 653.9 57 646.4 43 646.2 49 647 57 627.9 40 619.3 44 629.8 52 600.1 36 593.8 44 601.3 43 570.9 38 571.1 48 587.3 47 +1964469 LOS ANGELES DUARTE UNIFIED 61.4000866926745 2.77597050531338 13.2075471698113 61.9605291693776 30 16.0684210526316 59303.7388888889 4179.69811320755 25.2252747252747 15.0159744408946 0 0 634.506660104987 631.105498721228 626.154217262882 33.6727929110601 32.9437340153453 27.7286745406824 679.6 21 685.1 30 664.3 29 669.8 16 679.6 27 651.7 20 669.4 22 677.7 39 656.4 35 671.7 32 664.7 33 649.7 34 662.8 33 654.5 32 646.9 39 650.7 37 646 38 639.5 42 632.9 30 629.2 32 625 35 616.1 30 609.9 35 616.6 40 584.7 24 581.7 33 586.2 30 557.7 27 551.2 29 569.6 28 +1964527 LOS ANGELES EL RANCHO UNIFIED 68.0851063829787 .683526999316473 .580997949419002 94.4805194805195 51.8145161290323 16.2742753623188 65653 4338.24307928913 22.4950337703615 33.6700336700337 0 0 636.533907380608 629.92565662151 624.336384276997 28.9841067120761 28.1802598838817 25.4157742402316 682.5 23 684.1 29 667.2 32 673.8 18 684.4 32 656 24 669.6 22 676.7 37 659.1 37 668.9 29 658.3 28 646.5 31 653.9 25 646.9 25 635.3 27 640.3 28 635.3 28 624.4 27 628.2 26 620.6 24 617.6 28 609.2 24 595.8 23 602.6 28 589.8 28 576.1 28 585 29 560.8 30 550.6 29 570.1 28 +1964535 LOS ANGELES EL SEGUNDO UNIFIED 13.8000809388911 6.32078918523931 3.39788089148703 14.8702959444647 4.76190476190477 11.9276595744681 57362.0476190476 4718.11472415053 21.2887438825449 38.9937106918239 0 0 677.041884280594 669.538985579314 659.628335832084 62.2778610694653 64.9607160616609 60.9467485919099 710.2 50 710.8 59 689.9 56 711.2 54 707.5 59 690.9 59 707.1 57 708.1 69 689.6 68 702.7 62 689.7 59 674.6 60 688.8 59 682.9 61 661.5 55 674.7 62 680.5 71 653.3 57 664.6 61 660.4 66 653.1 64 662.9 72 643.4 71 645.3 68 631.9 67 609.9 63 623 66 601.8 69 589.1 72 605.9 70 +1964568 LOS ANGELES GLENDALE UNIFIED 50.674017547988 12.1272365805169 1.11994698475812 23.8667992047714 12.2395833333333 13.2210855949896 73039.0052083333 4224.93667992048 26.6702033598585 26.3865546218487 0 34.4827586206897 654.253990819555 657.112164532538 649.081694134326 52.2113680666312 53.7901683915103 40.357190605642 695.7 35 706.9 54 683 48 689.8 32 701.5 54 676.9 44 684.7 35 695.4 57 680.3 59 687.2 47 688.7 57 669.8 55 675.2 47 679.9 58 664.9 59 658 45 667.3 60 654.4 58 645.4 42 645.8 51 644.8 55 631.1 44 619.6 48 629.8 54 598.4 37 592.5 46 598.2 42 567.6 39 569.5 52 583.9 47 +1964576 LOS ANGELES GLENDORA UNIFIED 14.826244465316 4.1191381495564 1.29277566539924 16.5652724968314 6.32911392405063 14.9926553672316 63784.6075949367 4130.34993662864 24.900641025641 33.6 0 0 669.393686181076 664.820381845587 655.879660447134 58.4019162884518 59.4938871210853 53.6786929884275 704.3 44 712.6 59 687.7 54 698.2 40 705.6 55 678.2 45 693.5 43 700.1 62 678.9 57 700.3 59 689.1 58 673.6 59 691.2 61 680.9 59 671.1 65 673.1 61 668.8 61 656.8 61 663.4 59 653.1 57 650.6 61 649.8 61 635.1 60 639.1 61 624.5 57 611.1 61 616.7 58 588.1 54 585.3 63 602 64 +1973445 LOS ANGELES HACIENDA LA PUENTE UNIFIED 40.2360661714442 16.3999470969448 2.53934664726888 67.9760172816647 28.9036544850498 17.3935658153242 62325.3034330011 4103.13891460565 25.056066382597 38.6784850926672 0 0 642.964292922922 641.584377276038 632.63471999011 36.6834590184201 38.4453143966982 31.0369622808124 690.4 30 696 41 673.7 39 682.7 25 694.4 42 664.8 32 678.5 29 685.9 46 666.3 44 677.9 37 675 43 654.9 39 665.3 35 664.5 41 649.3 41 650.1 37 646.5 38 636.6 39 634.6 31 630.9 33 626.8 37 616.4 30 605.7 31 612 36 585.6 24 579 30 585.4 29 563.2 32 563.5 41 573.9 32 +1964634 LOS ANGELES INGLEWOOD UNIFIED 69.0082898372736 .192554557124519 43.0913758898355 55.3681876531684 63.4390651085142 15.0198263386397 63040.9899833055 3748.32979344148 27.4027459954233 38.8888888888889 0 57.8947368421053 634.693625077045 632.165754127812 627.247653302921 35.6359329765769 35.4114124390453 29.0958879985912 676.7 18 675 21 659.8 25 668.1 14 674.2 22 649.1 18 662.9 17 664 25 649.5 28 670.1 30 658.6 28 647.9 33 654.3 26 648.3 26 642.8 34 643.1 30 642.5 35 633.7 36 639.9 36 640.3 43 636 46 617.4 31 612.5 37 616.4 40 595.7 32 596.3 47 598.9 41 574.3 41 573.3 50 580.8 39 +1964659 LOS ANGELES LA CANADA UNIFIED 1.4218009478673 26.2005649717514 .541431261770245 3.06026365348399 8.20512820512821 15.0257918552036 63791.6307692308 4705.50564971751 21.5962441314554 66.1818181818182 0 0 695.106828057108 694.118644067797 679.942095416277 79.1699407545993 82.4656394453005 76.5555555555556 730.6 71 743.4 83 707.6 73 727.2 70 737.4 81 711.8 77 723.5 71 731.8 85 708.9 81 723.5 79 721.1 83 705 84 712.6 80 717.6 86 694.3 85 694.9 80 706.8 88 671.9 75 688 81 685.5 84 673.3 80 674.9 80 656 78 659.6 77 651 77 633.7 80 641.4 78 617.2 77 600.6 76 622.3 82 +1964683 LOS ANGELES LAS VIRGENES UNIFIED 2.97174111212397 7.57133035407357 1.36644895152974 4.97593674802338 7.02479338842976 17.0070127504554 64749.8450413223 4414.05010312822 24.2391304347826 60.6232294617564 0 0 684.553328569727 678.410719754977 672.994556044217 75.3633662189469 73.8972788314289 70.318566154579 722.7 64 725.1 72 711.1 76 720.2 64 719.3 71 705.2 72 714.6 65 718.2 78 699.3 76 714.3 73 710 77 695 78 707.4 77 707.9 82 691.4 83 687.8 75 693.7 82 674.1 77 681.9 76 672.3 75 670.8 78 668.3 76 646.9 71 655.8 75 639.7 70 624.1 73 632.9 72 595.7 61 578.9 57 604 66 +1964725 LOS ANGELES LONG BEACH UNIFIED 64.2386984600099 14.166317455883 20.3368720026074 40.4898263258369 29.1087489779231 13.3097951495173 59298.1777050968 4210.30880709596 22.9831165236645 41.3782252989302 2.32558139534884 19.7674418604651 639.333896392546 637.248315019538 631.351391051242 37.6159378596087 37.9077018135667 30.8294580270132 693 32 695.4 41 674.2 39 684.9 27 691.7 40 668.3 35 679.6 30 687 48 668.5 47 677.2 37 668.7 37 654.8 39 661.8 32 658.1 35 649.4 41 645.6 33 645.7 38 635.1 37 634.1 31 632 35 627.8 38 615.1 29 605.9 31 613.1 37 589 27 586.7 38 590 33 562.2 31 561.8 39 574.3 33 +1964733 LOS ANGELES LOS ANGELES UNIFIED 73.183943472326 4.30874594006731 13.7952471231427 68.5241685404818 45.4613868482351 20.5457412962458 73073.0746819566 4365.27608718017 23.4209491853797 49.3061754442912 2.32198142414861 32.1981424148607 632.955948121759 630.926125049489 624.165265009434 30.2164675932538 30.9511268824142 24.1795656528519 689.1 29 692 37 671.9 37 678.5 22 686.2 33 659.5 27 670.4 22 676.2 37 657.5 35 667.4 28 661.8 30 647.1 32 651.1 23 652 29 639.3 30 637.3 25 637.9 30 627.4 30 626.5 24 625.1 28 618.7 29 608 23 601.3 27 605.3 30 581.6 21 578.9 30 583.1 27 557.3 27 554.4 32 570.2 28 +1964774 LOS ANGELES LYNWOOD UNIFIED 59.296941237853 .224648985959438 12.0561622464899 86.5273010920437 52.4871355060034 15.7930124223603 67063.0171526587 4064.95432137286 27.0596092836868 15.0847457627119 0 50 618.290844222037 621.509246177233 613.061156723226 23.0633096150338 25.8221407493517 17.7372810675563 678.6 20 678 23 659.8 25 667.6 14 674.2 22 648.2 18 659.9 15 665.9 27 649.5 28 658.3 21 652.3 22 640.6 26 642.8 18 642.4 21 632.6 24 635.1 23 639.5 32 624.5 27 615.5 17 618.6 22 610.5 22 595.7 15 597.6 24 598.1 24 569 14 572.8 25 573.1 19 548.5 21 557.4 35 561.8 20 +1975333 LOS ANGELES MANHATTAN BEACH UNIFIED 7.19727345629511 7.00382026559942 1.81917409496089 8.65926869201383 7.93650793650794 15.2171875 64224.8888888889 5093.92796070584 21.5871073031416 43.089430894309 0 0 690.056717557252 683.397692112605 674.556118036123 74.1541592470109 74.6817144306366 71.3648854961832 717.6 58 717.5 65 695.5 62 712.9 56 709.6 59 691.1 59 713.9 63 709.9 71 692.9 70 721.8 78 714.1 78 707.1 85 711.8 80 706.7 81 691.1 83 696.8 82 708.4 88 680.3 81 689.6 81 681.9 83 673.7 80 677.6 82 661.2 81 661.8 79 648.3 75 632.5 79 640.4 77 613.9 74 598.3 74 617 78 +1964790 LOS ANGELES MONROVIA UNIFIED 56.8985750209556 1.91512180174659 14.064654512027 48.0772177110464 17.5438596491228 14.4258785942492 57193.298245614 4017.30228282519 22.5547183351274 25.9475218658892 0 11.1111111111111 645.345761124122 639.929743822263 635.35638225256 40.8038680318544 38.6701428247563 34.7861826697892 687.4 27 687.8 32 669.6 34 684.2 26 688.8 36 665.6 32 677.9 28 679.2 40 665.8 44 683.9 43 673.1 41 661.4 46 670.2 40 661.5 39 653.5 46 654 41 646.7 39 645 48 644.7 41 637.4 40 639.6 50 622.1 35 610.6 36 617.4 41 595.8 33 588.2 39 590.8 34 563.2 33 565.1 43 575.4 34 +1964808 LOS ANGELES MONTEBELLO UNIFIED 75.0342977348252 4.8799265642119 .447129193686891 90.5184921974475 59.5298068849706 16.9234065934066 67605.9101595298 3810.28506706938 27.995777027027 28.5416666666667 0 25 633.256956384986 628.919973223583 622.355320469712 25.1499663752522 24.3407546982695 20.808764940239 684.5 24 686.5 31 666.3 31 673.2 18 681.1 28 651.6 20 664.1 18 669.4 30 651.4 30 665.3 26 656.4 26 643.6 29 649.9 23 648.5 26 638.1 29 636.2 24 632.3 26 625 27 620.1 20 614.7 19 612.6 24 607.4 23 592.3 20 600.8 26 573.3 16 563.9 19 571.7 18 542.2 16 536.5 18 556.4 16 +1964840 LOS ANGELES NORWALK-LA MIRADA UNIFIED 44.0220253770649 4.93949345449638 5.01597012911062 62.9762922308696 29.2200232828871 15.6210774058577 60665.5646100116 3616.50474605245 25.6258156364931 21.5086646279307 0 7.14285714285714 639.250212154394 632.607114624506 627.880085696797 33.7937155682514 32.4326086956522 29.8602518477963 686.6 26 686.8 32 667.5 32 678.5 22 684.3 32 655.7 24 673.9 25 677.5 38 658.1 36 678.6 38 665.1 34 653.7 38 662.4 33 654.9 32 646 37 647.4 34 641.2 34 635.1 37 636.3 33 627.2 30 627.5 37 616.2 30 603.6 29 611.3 35 588.4 26 578.2 30 586.6 30 561 30 556.5 34 572.8 31 +1964865 LOS ANGELES PALOS VERDES PENINSULA UNIFIED 1.94360184248961 30.0269251480883 1.72320947765213 3.94184168012924 7.4742268041237 18.9428733031674 59821.2139175258 3946.78772213247 24.1144056678037 89.1304347826087 0 0 691.220889080708 696.583954688844 679.690504153538 78.8099398453165 84.1756524232865 73.5451014242555 730.5 71 745.9 85 715.6 79 720.6 64 737.4 81 711.4 77 720 68 732.5 86 703.7 78 717.1 75 727.8 86 698.5 80 706.1 75 721 88 694.2 83 690 76 704.6 87 671.2 74 683.5 77 682.9 82 674.3 80 671.9 78 665.7 84 661.1 78 648.8 76 635.8 81 642.1 79 617.4 77 608.7 82 619.8 80 +1964873 LOS ANGELES PARAMOUNT UNIFIED 58.2283516774964 1.78362031722521 14.6145775473678 75.7082021847806 35.2484472049689 11.8014563106796 63190.7142857143 4370.21483675863 24.5058004640371 5.43071161048689 0 73.3333333333333 621.628153616147 619.038806631794 616.064499361663 25.0995805216123 23.4514584626297 18.6787516352084 678 19 681.7 27 663.4 28 668.5 15 678.8 26 649.9 19 664.3 18 670.6 31 655.6 34 665 26 657.9 27 643.7 29 645 19 642.5 21 634.9 26 633.4 22 627.3 22 624.7 27 619.8 19 615.4 20 618 29 596.8 16 590.1 19 597.9 24 572.5 16 571.9 25 576.5 22 542.9 17 541.4 21 557.8 17 +1964881 LOS ANGELES PASADENA UNIFIED 61.8810986628117 2.22193005521956 32.0054343062495 47.1119291787186 42.1841541755889 14.2729885057471 64584.0385438972 4443.59943903936 23.867133609254 39.6551724137931 0 0 640.261998178379 638.447005395069 630.055227304324 35.4722647017934 37.419791026429 30.9504659146641 692.5 32 687.4 33 674.8 40 680.3 23 682.4 30 661.7 29 675.6 26 675.8 37 661.1 39 671 31 663.6 32 646.6 31 656.9 28 656.7 34 643.9 35 647.7 35 651.4 43 636.6 39 637 34 636.9 39 626.5 36 616.8 30 609.7 34 609.9 34 594.5 31 592.1 42 592.3 34 569.3 37 569.4 46 580.4 38 +1964907 LOS ANGELES POMONA UNIFIED 73.505306122449 6.3934630738523 11.2337824351297 71.2044660678643 48.6985726280437 16.6833691756272 65628.7707808564 4007.18603418164 26.0442219440968 8.2771896053898 0 23.6842105263158 633.616609392898 631.103751065644 625.687406073083 33.2647967061246 32.3901007973522 27.1438092262835 680.8 21 681.2 26 662.8 28 668.9 15 675.5 23 649.9 19 669.8 22 673.5 34 657 35 672.8 33 665.8 34 652.5 37 658.2 29 655 32 645.3 37 643.6 31 644 36 634.6 37 630.8 28 629 32 625.7 35 612.5 27 605.3 30 609.4 34 588 26 582 33 586.1 29 560.9 30 559.8 37 574.5 33 +1975341 LOS ANGELES REDONDO BEACH UNIFIED 25.6399317406143 7.27744401966139 5.18842162752594 23.1840524303659 10.2484472049689 16.5052083333333 68096.3695652174 5006.77607864555 22.4752168525403 51.5406162464986 0 0 662.997025878718 658.485319712448 650.223375639326 56.3864368251563 58.2854710556186 52.5876786404017 703.3 43 705.6 52 683.2 48 696.6 38 704 53 676 43 693.9 43 699.2 61 674.9 53 700 59 693 61 677.1 62 685.5 55 684.5 62 669.4 63 667.8 55 673.2 64 654.3 58 664.3 60 655.2 59 652.4 63 646.8 58 629.9 54 635.2 57 621.5 54 606.2 57 614.4 56 589 54 581.4 59 596 57 +1973452 LOS ANGELES ROWLAND UNIFIED 33.8506304558681 18.7811869625226 6.68860813249814 55.3508865059985 29.1823899371069 16.1730984340045 62277.3119496855 4369.67459390593 24.4457424714434 30.2618816682832 0 0 647.043888420569 652.661347437917 639.480387685291 44.3539338654504 50.7873808987921 36.0793930569392 695.9 35 704.1 51 676.8 42 686.1 28 699.8 48 667.6 34 682 32 694.1 55 667.6 46 684.7 44 685.8 54 661.7 47 670.1 40 674.6 52 657.3 50 656.3 43 661.5 53 648.2 51 638.7 35 645.1 48 634.9 45 622.8 35 621.1 45 624.2 47 598.4 34 604.5 54 600.4 42 567.9 35 572.3 49 581.5 40 +1975291 LOS ANGELES SAN GABRIEL UNIFIED 53.4556990709268 36.4023712486106 1.8895887365691 43.4790663208596 22.0657276995305 14.1230769230769 57663.2582159624 3814.97406446832 23.1666666666667 0 11.1111111111111 0 652.373269403656 651.826455658406 643.521950492097 50.5377274082911 54.3069573006868 43.7374887623614 693 32 704.7 52 676.6 42 687.9 30 698 50 668.8 36 690.4 41 693.5 56 679.2 58 691 51 687 57 673.3 59 678.3 50 679.5 58 666.9 61 660.2 48 670.4 63 649.9 54 648.6 45 647.8 52 643.1 53 631.4 45 624.7 53 626.8 51 604.3 42 598.6 52 602.9 46 580.9 51 570.1 52 584.8 48 +1964964 LOS ANGELES SAN MARINO UNIFIED .265339966832504 63.2023384215654 .48717115946736 3.34524196167587 6.94444444444444 15.9078616352201 57543.375 4619.27671321858 22.1773612112473 78.1893004115226 0 0 690.843953394938 703.648538245895 680.914090726616 78.169409875552 85.3384060873048 70.9003615910004 724 65 758 90 715 79 719.2 62 749.5 87 709.3 75 715.7 65 742.2 89 710.1 82 717.7 75 739.1 91 695.7 78 707.7 76 726.4 90 695.6 84 686.9 74 705.3 87 672.9 76 677.4 72 679.4 80 665.6 74 673.9 79 656.4 78 661.9 79 641 70 635.3 81 636.9 75 613.1 74 602.8 77 618.2 79 +1964980 LOS ANGELES SANTA MONICA-MALIBU UNIFIED 26.0906515580737 5.53147216923877 8.61799895959771 27.0764695682331 22.2664015904573 15.8740034662045 65963.4274353877 5063.35009537021 22.315280853634 65.1063829787234 0 0 672.518027812895 666.633357933579 658.063282423635 60.9182523785679 60.80036900369 57.6074589127687 709.8 50 713.6 60 690.5 56 701.5 44 705.5 53 682.4 50 696.5 46 699 60 680.7 59 703.3 63 688.3 56 679.5 64 691.2 61 683.9 61 673.6 68 676.7 64 673 64 658.3 62 670.2 66 666 69 659.3 69 654.4 64 637.8 62 638.5 60 628.4 60 612.4 62 619.6 60 593.9 59 584.1 61 599.3 61 +1965029 LOS ANGELES SOUTH PASADENA UNIFIED 11.6788321167883 32.0893561103811 4.46780551905388 18.2128777923785 13.0177514792899 16.1964467005076 61169.6213017752 4043.49855453351 22.9909365558912 64.0740740740741 0 0 684.429470771359 685.287564588357 669.604545454546 69.6936155447606 74.7888391319325 66.0823244552058 722.2 63 738.9 80 700.9 67 714.7 57 727 73 697.2 65 708 57 718.1 76 691.5 69 711.8 70 712.7 77 689.8 73 694.2 64 696.8 72 672.8 67 682 70 688.2 76 661.6 66 679.8 74 679.3 80 666.7 75 662.2 71 644.1 68 650.6 70 644.1 72 626.7 74 637.3 75 604.3 67 595.8 72 610.6 72 +1965052 LOS ANGELES TEMPLE CITY UNIFIED 27.3219814241486 38.107752956636 1.44546649145861 20.3679369250986 7.35930735930735 13.7875 59417.303030303 4035.89093298292 23.6489504242966 31.5649867374005 0 0 668.867083854819 672.304788029925 658.75127245509 60.2450099800399 64.9730673316708 52.4027534418023 704.9 45 718 64 685.4 51 695.5 37 715 62 681.4 49 694.9 44 711 71 685 63 701.7 61 697.2 65 680.4 65 685.4 55 691.4 69 673.3 67 676.1 64 683.3 73 663.5 66 657.3 54 651.7 55 649.9 60 643.7 55 635.7 60 639.5 61 621.2 54 617 66 618.6 60 595.1 60 587 64 601.4 63 +1965060 LOS ANGELES TORRANCE UNIFIED 17.7019320040674 28.4768777488364 3.99675477176651 15.8332977496904 19.6572580645161 13.3186108637578 59555.2883064516 3822.10277979418 23.7832310838446 45.956607495069 0 0 669.838492706645 669.997700028678 656.603946302511 58.3625737761833 63.3968454258675 53.6345797638342 706.4 46 713.2 60 686.6 52 700.6 42 709 58 681.9 49 699.2 48 711.1 71 682.8 61 700.4 60 696.8 65 676.2 61 690.1 60 688 65 669.2 63 669.5 57 675.1 66 653.9 57 661.4 58 659 62 651.8 62 648.5 59 640.2 64 641.2 63 620.3 53 612.2 62 615 56 590.4 56 583.8 61 599.3 61 +1973460 LOS ANGELES WALNUT VALLEY UNIFIED 6.19667389732466 42.3138875271378 5.72168919392114 18.1805448560824 17.7364864864865 14.8244477172312 60555.2364864865 3982.78030674417 24.2508591065292 57.7854671280277 0 0 675.635385172445 678.79409180563 664.452948625181 63.8897431259045 68.21642460104 56.1614012854169 714.1 54 729.9 75 696.3 62 706.7 49 720.5 69 691.2 59 700 49 714.1 74 689.7 67 704.2 63 703.8 71 683 68 694.5 64 700.6 76 677.8 72 675.5 63 683.7 73 662.9 67 661.9 58 661.1 65 655.5 66 645.6 57 633.6 58 641.2 63 616 50 608 58 612.6 54 591.8 57 578.4 56 597.6 59 +1965094 LOS ANGELES WEST COVINA UNIFIED 47.3071656777727 9.43910955914448 9.12265386294195 58.1623745089481 17.5202156334232 13.9033898305085 56841.371967655 3907.33773461371 24.4226579520697 29.0617848970252 0 0 646.576221907905 644.418671371587 637.665678554886 42.1999382430137 42.0662779993863 34.8972182932579 690.9 30 690 35 673.2 38 684.5 26 687.3 35 663.5 30 682.3 32 683.1 44 668.5 47 677.6 37 668.2 37 658.2 43 666.1 36 662.4 39 654.3 47 650.8 38 651.6 44 644.4 47 642 38 645.3 48 634.4 45 623 36 617 41 620.5 44 600.2 36 596.6 47 598.9 41 570.9 38 570.6 48 580.5 39 +2065193 MADERA CHOWCHILLA UNION 59.2872117400419 .94137783483098 2.52460419341036 41.6345742404793 6.66666666666667 12.2054166666667 53265.8190476191 3873.24005134788 23.5514918190568 25.4098360655738 0 0 642.458759783263 637.68853686636 630.755444964871 33.6891100702576 33.3064516129032 29.3991571342565 685.5 26 688.7 34 671.1 36 684.2 26 692.9 41 660 27 680.1 30 685.3 46 662.4 40 686.5 46 666.2 35 656 41 663.5 34 653.1 31 649.1 41 644.8 32 648.5 41 635.7 38 637.8 34 632.9 35 632.6 43 610.1 25 598.7 25 609.1 33 580.6 21 566.5 21 576 22 553.6 24 543.9 23 563 21 +2065243 MADERA MADERA UNIFIED 60.0239038812355 1.15214548172137 3.54362583297004 67.3538020800897 26.8292682926829 14.0548488664987 56274.5882352941 4064.55738930062 23.4583272301157 31.9940476190476 0 45 634.873307579102 632.891376291368 622.640314369921 29.2889166741091 33.3825949921205 26.8529249448124 684 24 688.3 33 660.7 26 676.9 21 682.6 30 648.5 18 674.2 25 680.3 41 653.2 32 674 34 666.9 35 650.4 35 657.4 29 659.6 37 643 34 643.7 31 647.6 41 630.8 33 626.9 25 626.9 31 618.7 29 608.6 25 600.3 29 604.2 30 583.9 25 575 29 582.4 27 553.8 28 547.3 29 566.1 27 +2165417 MARIN NOVATO UNIFIED 14.7922867865925 4.89383738995339 2.77058518902123 11.1082340756085 3.56234096692111 16.6201793721973 53794.9872773537 4365.51268772657 20.3963577932512 48.0851063829787 6.25 12.5 676.327673869621 670.308662832495 664.362228654125 67.1979015918958 65.5445722501797 61.5907027419648 717.7 58 718 65 699.3 65 709.2 52 707.6 57 689.2 57 708.1 57 706.3 68 688 65 706.9 66 703.2 71 685.3 70 697.1 67 698.7 75 683.9 77 676.7 65 685.2 75 666.6 70 670.1 66 664 68 661.8 71 655 65 637.4 62 644.9 66 629.8 61 605.8 56 621.1 62 593.5 58 579.7 57 606.4 68 +2165458 MARIN SAN RAFAEL CITY UN 34.7676767676768 7.88413581431038 5.19854210627278 36.1787838097065 8.53658536585365 15.1911371237458 53336.3807692308 4458.96873201611 20.9668168783286 53.5928143712575 0 0 670.195434083601 661.617473035439 655.652214080918 58.6352341510035 57.6804314329738 55.5993569131833 713.1 53 710.2 57 694.1 60 705.9 49 702.6 51 680.1 47 707 56 704.7 66 684.9 63 698.5 58 683.3 52 668.9 54 685.3 55 675.3 53 670.6 64 674.1 62 664.1 56 664.1 67 663.7 60 654 58 651.3 61 651.4 62 639.2 63 640.6 62 614.8 48 607.7 58 608.5 50 590.5 55 582.9 60 600.7 60 +2173361 MARIN SHORELINE UNIFIED 0 .480192076830732 .480192076830732 28.6914765906363 7.40740740740741 13.7261538461538 60992.5 6459.38415366147 16.4053537284895 26 0 0 670.308067542214 656.187862318841 650.405056179775 53.2621722846442 50.6322463768116 54.078799249531 709 49 699 45 688.7 54 703.3 45 699.4 47 681.9 50 692.1 41 686.7 48 671.9 50 701.2 61 683.1 52 677.2 63 692.9 63 670.3 48 666.8 61 683.6 71 677.5 69 660.9 65 672.5 68 656.8 60 655.6 65 648.5 60 611 36 620 43 625.8 57 601.8 52 606.5 48 578.1 44 577.5 55 585.2 45 +2265532 MARIPOSA MARIPOSA COUNTY UNIFIED 27.0007209805335 .511322132943755 .29218407596786 6.20891161431702 1.45985401459853 15.5984472049689 51692.8248175182 4183.60336011687 21.5384615384615 29.8013245033113 0 0 664.224974619289 650.738696939783 646.636458852868 51.3226932668329 49.3326752221125 51.4238578680203 706.6 47 703 50 681.6 48 702.4 46 694.9 48 673.7 42 696.2 47 690 53 672.9 53 698.9 59 679.9 50 676.3 62 684 56 666.1 45 663 57 663.2 51 660.9 56 649 54 655.9 53 636.9 43 638.9 50 641.1 55 618.6 49 628.8 54 614 53 591.5 47 599.2 44 571.7 46 566.3 52 581.5 47 +2365540 MENDOCINO ANDERSON VALLEY UNIFIED 55.9322033898305 .840336134453782 1.34453781512605 45.3781512605042 0 12.756 48855.9574468085 6406.86218487395 14.3160377358491 44.7368421052632 0 0 663.290476190476 663.766666666667 649.817894736842 48.6394736842105 53.8087855297158 42.7169312169312 704.5 44 716.5 61 692.3 56 694.5 36 703.4 51 677.1 45 676.1 27 681.5 42 667.6 46 694.9 54 683.4 53 673.8 58 680.9 52 675.8 51 664.9 58 652.5 39 660 53 641.2 44 664.6 60 663.7 67 648.9 59 630.4 43 629.7 54 617.3 41 594.6 30 601 52 589.7 32 580.9 47 582.7 60 582.2 43 +2365565 MENDOCINO FORT BRAGG UNIFIED 37.2996794871795 1.16279069767442 .415282392026578 19.6843853820598 2.27272727272727 17.1307432432432 56336.7803030303 4990.48712624585 19.4728682170543 25.8992805755396 0 0 662.634256472005 649.819894675249 645.872770795931 48.7175344105326 45.9631363370392 47.8657435279952 705.6 45 698.1 44 682.3 47 694.2 36 695.8 45 673.4 40 695.6 45 697.8 59 676.6 54 692.9 52 682.5 51 671 56 678.8 49 667.8 46 659.1 52 662.5 50 666.9 59 648.1 52 662.3 58 648.3 51 650.3 60 637.6 49 610.4 35 628.6 51 610.1 44 581.8 33 597.1 39 585.9 51 559 36 577.6 36 +2373916 MENDOCINO LAYTONVILLE UNIFIED 56.3311688311688 .517241379310345 .689655172413793 3.96551724137931 4.65116279069767 12.4978723404255 48867.6046511628 6578.05344827586 15.7329842931937 34.2105263157895 0 0 658.700571428571 644.085294117647 641.450287356322 43.1494252873563 36.9117647058824 42.5542857142857 693.1 33 687.5 32 672.8 38 699.4 41 689.9 38 669 36 688.6 38 680.9 42 654.4 33 702 61 672.2 41 679.4 65 673.6 43 661.9 39 652.5 45 658.8 46 650.6 44 647.3 51 654.8 51 638 39 638.3 49 630.7 43 605.8 31 619.6 43 602.6 38 586.8 38 589 32 562.2 30 548.2 26 578.9 36 +2365615 MENDOCINO UKIAH UNIFIED 46.9275405445618 .969468962523513 1.11416582260165 22.8186948343221 4.84848484848484 17.4014986376022 64535.7121212121 4838.43134133989 21.3448818897638 33.3333333333333 0 36.3636363636364 652.817643378519 645.442461600647 637.560484873601 39.9751346871115 40.8148746968472 38.4404588112617 705.6 46 706.9 54 685.2 51 698 40 696.4 45 674.5 41 688.2 37 689.1 50 669.4 47 686 45 679.2 48 660.3 45 667.4 38 668.8 46 650 42 655 42 653.5 45 637.1 40 644.8 41 633.3 36 630 40 624.3 37 602.9 28 610.3 34 596.8 33 580 32 589 32 557.1 27 547 25 571 29 +2365623 MENDOCINO WILLITS UNIFIED 46.5384615384615 .846153846153846 .692307692307692 11.5769230769231 2.98507462686567 17.472 56568.1268656716 4611.97576923077 20.8280757097792 26.3803680981595 0 0 658.926685714286 644.182815057283 640.649972451791 44.7129476584022 41.1047463175123 44.8982857142857 705.7 45 700 46 680.1 45 694.9 37 694.6 43 672.9 40 697.7 47 698.6 60 676.6 55 693.9 53 674.9 44 666.9 52 680.3 50 661.3 39 659.6 53 663.1 50 653.4 45 647.2 50 656.8 53 639.3 42 639.5 50 636.3 48 615 40 622.5 45 602.6 38 580.9 32 589.8 33 557.4 27 544.2 23 566.8 25 +2475317 MERCED DOS PALOS ORO LOMA JT. UNIFIED 60.9182098765432 .156801254410035 6.31125049000392 61.7012936103489 15.4411764705882 11.4913461538462 54802.6985294118 4750.99882399059 18.8121752041574 19.5945945945946 0 0 631.770659722222 629.861754780653 621.061990950226 26.993778280543 29.0989876265467 22.5873842592593 680.9 21 688 34 662.5 28 670.6 16 681.7 29 646.8 17 673.6 25 678.7 40 654.3 33 667.7 28 658.7 28 642.4 28 649.8 22 650.1 28 636.1 27 640.2 28 646.4 39 629.9 32 627.7 25 620.9 24 618.3 29 599.9 18 596.3 23 602 27 578.9 20 571.2 24 576.8 22 551.8 23 548.2 26 568.9 27 +2473619 MERCED GUSTINE UNIFIED 52.4079320113314 .614334470989761 .955631399317406 50.4436860068259 8.33333333333334 11.9896103896104 53609.9027777778 4080.96587030717 21.1577424023155 49.2753623188406 0 0 640.392330978809 634.424028906956 624.696633303003 28.8653321201092 31.8925022583559 26.6801210898083 686.5 26 690.3 36 665.9 31 685.9 28 689.4 38 658.6 26 673.2 24 676.8 38 655.1 33 672.8 33 662 31 648.5 33 670.7 41 661.2 38 651.3 43 640.7 28 640.9 34 627.9 30 629.8 27 626 29 622.8 33 599.8 18 596.6 23 595.4 23 569.2 14 568.8 22 572.8 19 560.7 30 554.5 32 563 21 +2465698 MERCED HILMAR UNIFIED 37.7889869693148 1.5866388308977 .292275574112735 17.3277661795407 11.7117117117117 13.4170634920635 58102.5495495496 4361.61920668058 22.7861163227017 20.8 0 16.6666666666667 651.254748941319 640.575577367206 636.812100058173 38.4729493891798 34.8556581986143 35.0725952813067 685.4 25 684 30 667.7 33 679.3 22 679.5 27 659.4 27 680.8 31 679.3 41 665.1 43 680.7 40 668 37 653 38 675.5 46 665.5 43 652.2 44 655.1 42 650.1 43 644.8 48 646 42 634.7 37 635.4 45 628.9 41 602.6 28 616.9 40 599.5 35 586.1 37 594.7 37 559.1 28 546.9 25 571.8 30 +2465722 MERCED LE GRAND UNION 41.4316702819957 .915564598168871 0 84.1302136317396 25.5813953488372 12.7714285714286 55709.2325581395 4140.52695829095 22.1852731591449 24.7422680412371 0 0 643.677083333333 645.689630681818 632.859677419355 25.2463343108504 27.5411931818182 18.0059523809524 682.2 23 686.4 32 663.1 28 665.9 13 681.8 29 650 19 668.9 21 672.1 33 654.2 33 657.9 21 664.3 33 646.7 32 642.9 18 652.2 30 636.3 27 632.1 21 630.5 24 625.9 28 610.4 14 607.6 14 610.7 22 588 11 584.5 15 589.9 19 569.7 15 568.2 22 572 20 547.5 20 550.8 28 551.7 13 +2465755 MERCED LOS BANOS UNIFIED 50.9282399143163 1.24495289367429 4.86204576043069 53.1796769851952 12.1673003802281 12.078156996587 55074.6235741445 4075.18842530283 21.7702805155421 33.9350180505415 0 50 638.536482875881 629.930409090909 625.650664451827 29.1734693877551 27.6852272727273 25.195530726257 685.1 25 687.3 32 665.9 31 674.2 18 679.9 27 654 22 669.2 21 674.5 35 652.4 31 671.6 32 663.4 32 647.2 32 663.2 34 658.4 36 648.2 39 643.1 30 640.1 33 634.3 37 624.6 23 617.6 22 616.8 27 611.7 26 597.8 24 606.8 31 584.5 23 565.8 20 576.3 22 546.8 19 537 18 559.8 19 +2573585 MODOC MODOC JOINT UNIFIED 33.2777314428691 .75 .75 10.4166666666667 1.61290322580645 11.6808823529412 55854.7419354839 4786.67916666667 19.2295345104334 32.7868852459016 0 0 659.431176470588 650.901276102088 639.167674418605 41.9476744186047 46.4164733178654 45.2776470588235 709.4 50 706.6 54 679.3 44 699.2 41 693.3 42 670.9 37 690.6 40 689 51 660.9 39 689.5 49 675.2 44 658 43 670.3 40 660.5 38 647.3 39 660 47 654.6 47 639.5 42 647.7 44 643.8 47 624.7 35 646.1 57 628.7 53 631.6 54 611.2 45 595 45 598 40 575.3 42 568.5 45 586.6 47 +2573593 MODOC TULELAKE BASIN JOINT UNIFIED 64.8508430609598 0 0 52.3809523809524 4.76190476190477 12.9553191489362 50840.0714285714 4851.06302521008 18.4009546539379 45.7142857142857 0 0 640.7754601227 638.625294117647 630.765029469548 35.9548133595285 37.8666666666667 30.2024539877301 693.7 33 691.1 37 675.7 41 687 29 695.7 44 666.9 34 671.6 23 679.2 40 656.1 34 671.8 32 674.2 43 653.6 38 666.5 37 675.6 54 659.2 52 648.6 36 650.7 43 640 42 627.6 25 631.1 34 623.6 34 610 24 594.7 22 605.6 30 598.8 34 585.2 36 590.6 33 562 30 550 28 567.5 26 +2673668 MONO EASTERN SIERRA UNIFIED 45.933734939759 .310077519379845 .775193798449613 14.1085271317829 2.22222222222223 14.0343137254902 52320.3111111111 6283.43255813954 14.6697038724374 76.9230769230769 0 0 664.066666666667 656.607675906184 644.631556503198 51.6183368869936 56.9424307036247 50.8013698630137 709.7 50 698.3 45 685.1 51 696.6 38 685.6 34 674.7 42 697.1 46 698 60 678.3 57 697.7 57 694.9 62 669.9 54 685.3 55 689.6 67 663.1 57 661.5 49 669.6 61 639.7 42 651.9 48 647 51 634 44 648.5 60 631.2 56 631.4 54 616.2 50 600 50 608.5 50 585.6 50 591.1 68 599.7 62 +2673692 MONO MAMMOTH UNIFIED 21.8400687876182 .582847626977519 .0832639467110741 21.8151540383014 4.83870967741935 14.9848484848485 60159.435483871 4806.48293089092 20.5942275042445 42.8571428571429 0 0 668.114354066986 654.781134259259 655.868557919622 59.5957446808511 53.09375 54.9138755980861 705.7 46 693.8 40 686.2 51 709.7 51 693.3 42 685.9 54 705 54 692.3 55 686.9 65 700.4 60 680.1 49 675.5 61 689.1 59 667.9 46 671 65 673.5 61 665.2 58 657 61 662 58 664.1 68 656.6 67 653.5 64 631.4 56 646.9 67 613.5 47 597 48 610.4 52 579.4 46 585.9 63 589.4 50 +2765987 MONTEREY CARMEL UNIFIED 10.706817231284 2.97716150081566 1.30505709624796 7.54486133768352 4.80000000000001 17.2942307692308 69887.392 5676.6513050571 20.6785411365564 55.921052631579 0 0 685.661973333333 677.989883474576 667.65821845175 69.2104984093319 71.0222457627119 68.8314666666667 724.7 66 721.3 67 694.2 60 718.2 61 719 68 690.1 58 709.7 59 708.5 70 681.8 60 709.8 69 702.2 69 689 73 697.5 67 694.5 71 682.4 76 681 69 684.2 74 668 71 682 76 670.8 73 667.2 75 673.7 79 646.5 70 649 70 644.1 72 634.1 80 636.1 74 607.6 70 591.5 68 612.5 74 +2775473 MONTEREY GONZALES UNIFIED 67.2693726937269 .273878808627182 .410818212940774 86.5114686751113 24.1935483870968 11.8868421052632 58893.1209677419 4200.85210544334 24.9086378737542 11.304347826087 0 0 641.562837480148 644.002448979592 631.401393908105 27.6288074341766 29.0015306122449 20.4552673372155 675.7 18 674.1 20 659 24 669.9 16 676.1 24 651.4 20 664.7 18 668.7 30 653 31 666.6 27 668.1 37 652.9 37 651.5 24 661 38 650.3 42 634.7 23 644.5 37 626.1 28 622.7 22 626.5 29 617.5 28 604.7 21 604.7 30 604 29 578.8 20 574.8 27 578.8 24 553.8 24 547.7 26 559.9 19 +2766092 MONTEREY MONTEREY PENINSULA UNIFIED 40.1345291479821 8.8134238913304 15.6372353176189 25.2257291250499 17.6570458404075 19.471915820029 61011.6332767402 4496.24306831802 20.6070396191124 28.9079229122056 0 95.2380952380952 653.881037456875 642.261085381784 639.283652789647 44.9874252228055 41.4812967581047 43.0559388861508 699.1 39 692.5 38 674.8 39 689.2 31 689.3 37 667.3 34 685.5 35 684.3 45 666.7 44 687.2 47 669.3 38 660.7 46 678.7 49 665.9 43 660 53 660.4 47 651.4 44 644.8 48 649.5 46 641 44 637 47 635.3 47 615.2 40 625.7 48 608.7 43 591.6 42 601.3 43 577.1 44 565.1 42 585.5 45 +2773825 MONTEREY NORTH MONTEREY COUNTY UNIFIED 40.6666666666667 1.84426229508197 1.28539493293592 49.2362146050671 20.1581027667984 14.6853448275862 56619.2134387352 4356.07228017884 21.5795724465558 60.5978260869565 0 0 646.961362367393 637.964190837625 633.754023307436 34.9500554938957 32.8462998102467 31.5178671133445 692 31 691.3 37 672.3 37 684.4 26 685.9 34 660.3 27 679.1 29 680.7 42 662.1 40 674.8 35 665.1 34 653.5 38 663.1 33 656.3 34 645.7 37 645.6 33 638.4 31 632.5 35 638.3 35 623.5 27 626.1 36 621.1 34 600.8 27 611.9 36 596.9 33 580.8 32 590.8 34 559.3 28 552.2 30 573.4 31 +2766134 MONTEREY PACIFIC GROVE UNIFIED 14.2795513373598 4.71158080140907 1.89343901365037 7.08938793483047 2.94117647058823 17.5419491525424 63909.5490196079 4756.38441215324 22.6321036889332 48.1751824817518 0 0 681.073791821561 669.929643296433 661.348655256724 64.1760391198044 64.9292742927429 65.1474597273854 719.7 60 716.7 64 692.9 59 715.5 58 706.7 56 694.4 63 712.2 61 707.9 70 690.3 68 709.7 69 702.2 70 684 69 698.6 68 693.7 71 672.1 66 677.8 66 682 72 657.1 61 670.1 66 662.1 66 657.1 67 663.5 72 640.9 65 651.9 72 637.5 68 609.6 60 620 61 599.4 63 576.7 54 593.1 55 +2866241 NAPA CALISTOGA JOINT UNIFIED 45.6702253855279 .68259385665529 .341296928327645 47.098976109215 4.54545454545455 13.5112244897959 54344.8863636364 4650.72468714448 20.9738717339667 50 0 0 651.626136363636 644.014660493827 642.586842105263 46.3684210526316 40.8425925925926 38.8019480519481 693.2 33 696.4 41 676.4 41 688.6 31 688.3 36 666.8 34 685.5 35 684.8 46 673 51 686.2 46 671.7 40 665.3 50 680.9 51 673 51 668.1 62 658.1 45 652.9 45 643.9 47 645.8 41 642.3 44 636.7 47 625.1 37 603.9 30 627.6 50 599.1 35 592.8 43 593.1 36 566.4 33 556.5 34 590.4 49 +2866266 NAPA NAPA VALLEY UNIFIED 32.7090648979061 1.39607354315986 1.77625428482393 26.4880024929885 6.38852672750979 15.4758720930233 54785.1342894394 3912.94858211281 21.8384091225143 29.2525773195876 3.33333333333333 0 661.755781448539 653.602858646089 645.835317212456 49.862496653877 50.1478428621536 47.9921038300962 707.6 48 708.2 55 683.5 49 696.7 38 697.8 46 674.5 41 695.8 45 694.6 56 675.6 54 693.2 53 681.2 50 666.8 52 680.3 50 672 50 660.1 54 665.4 53 663.8 56 650.3 54 654.2 50 642.8 46 642.1 52 639.2 51 620.4 45 627.3 50 614.1 47 599.4 50 604.9 47 577.6 44 571.1 48 585.4 45 +2866290 NAPA ST. HELENA UNIFIED 34.434250764526 .738007380073801 .43050430504305 37.4538745387454 14.6341463414634 15.6477777777778 51434.4390243902 4386.9594095941 21.2020460358056 44.1441441441441 0 0 671.938825591586 667.352487135506 655.775432525952 54.4567474048443 57.0694682675815 51.5530236634531 707.1 47 708.5 56 690.8 57 696.4 38 705.9 54 677.7 45 700.1 50 709.1 71 682.9 61 688.9 49 685 54 660.5 45 683.1 53 677 54 665.6 59 669.7 57 659.8 52 649.1 52 661.4 58 647.6 51 645.9 56 655.5 66 628.5 53 638.8 61 618.3 51 614.5 64 615.5 57 585.9 52 579.5 57 589.6 49 +3066449 ORANGE BREA-OLINDA UNIFIED 16.1578044596913 8.39899413243923 2.17937971500419 21.6261525565801 4.89795918367348 15.2272727272727 57193.4244897959 3825.95222129086 25.2277564921243 40.7202216066482 0 0 678.08792520838 676.768032786885 664.696648793566 65.8469615728329 69.0533894550288 60.8702410452805 709.9 50 724.2 70 690.5 56 709.4 52 718 67 688.1 56 698.5 48 712.1 72 682.2 60 705.4 65 698.5 66 680.5 65 698.1 67 688.6 66 680.9 74 679.1 67 683.1 73 670.2 73 669.1 65 669.9 73 658.5 68 653.2 64 645.8 69 646.9 68 633.9 65 619 68 626.6 67 606 69 589.7 67 610.8 73 +3066464 ORANGE CAPISTRANO UNIFIED 17.3380285722466 4.70951361577139 1.58062428436302 16.9537511823568 9.39193257074051 12.6999165275459 60779.3835039133 3802.97418728531 23.0004288952883 44.8255813953488 0 10.5263157894737 671.50029010734 664.568939854735 656.9490234375 63.8142361111111 65.2306343697449 61.3329344357412 721.1 62 721.2 69 698.7 65 713.7 57 714.3 66 692.3 60 708 58 710.6 71 689.5 68 706.2 65 697.8 66 680.6 66 693.5 63 687.5 65 672.8 67 676.1 64 679.9 71 657.4 61 665.7 62 657.6 61 650.5 61 652.4 63 633.8 59 641.4 63 626.8 59 611.4 62 618.9 60 595.2 60 587.1 65 605 67 +3066522 ORANGE GARDEN GROVE UNIFIED 48.1560822795015 28.7115519049283 1.29106955609927 44.0514680181755 11.4861186717474 15.6765557163531 65184.4246053348 3835.54895578469 24.6732224738965 20.3812982296868 0 0 644.83656906429 646.905817561278 637.042428705735 42.3321215919774 45.7674837108284 34.1665499681731 690.9 30 702.4 49 675.9 41 683.4 26 698.8 47 667.4 34 677.7 28 692.7 54 670.5 49 682.1 41 682.2 50 663.3 48 669.5 40 673.4 51 659.3 52 655.2 42 660.3 52 644.7 48 639.1 35 636.8 39 631.6 42 622.1 35 615.5 40 618.9 42 591.8 29 588.9 40 591 34 568.7 36 563 40 577.5 36 +3073650 ORANGE IRVINE UNIFIED 10.5164960182025 25.1636962837691 3.03976410389836 7.41078010493907 9.2557251908397 16.0977599323753 62550.9770992366 4352.4882702398 22.6581642900181 0 0 9.67741935483871 684.851803374055 685.089444252277 671.314190288104 72.8213289962825 76.8866020984665 68.4994764397906 720.5 61 735.6 79 702.4 68 715.9 59 725.7 73 696.1 64 713.9 63 725.4 82 697.8 74 714.4 72 711.5 77 692.2 75 702.3 71 704.2 78 684.8 78 689 76 701.2 84 673.5 76 676.7 72 675.6 77 666.4 75 665.2 73 649.9 73 653.9 73 638 68 626.3 74 632.4 71 607.9 70 596.1 72 612.9 74 +3066555 ORANGE LAGUNA BEACH UNIFIED 9.31627349060376 1.88383045525903 1.21664050235479 9.22291993720565 7.61904761904762 16.9064102564103 70274.3714285714 4481.47409733124 24.2635658914729 74.2857142857143 0 0 684.004074889868 677.346978021978 663.808360836084 67.2827282728273 72.2983516483517 69.2643171806167 727.2 68 724.5 71 705.3 71 719 62 710.9 61 693.6 62 719.2 68 716.5 77 695.5 72 714.8 73 704.7 71 685 70 703.5 72 694.7 72 676.1 71 680.1 68 685 75 651.8 55 677.4 72 674.9 77 659.4 69 660.8 70 643.3 67 641.9 63 638.8 69 632.2 79 627.7 68 607.1 70 597 73 609.1 71 +3073924 ORANGE LOS ALAMITOS UNIFIED 11.6002452483139 8.99127975489041 3.11100636342211 11.5366485976903 10.1333333333333 15.0930715935335 67284.9401866667 4726.52929766675 23.1987918725975 49.5921696574225 0 10 683.151620147578 676.998132780083 669.268828685259 69.4602390438247 68.4106287902968 64.971767725377 717.8 58 718.3 65 697.9 64 712.7 55 716.3 65 693.9 61 707.3 57 714.9 75 694.8 71 713.9 72 698.7 67 686.3 71 700.9 70 690.6 68 679 73 682.5 70 681.5 72 663.6 68 669.3 65 655.7 60 657.3 67 658.2 68 638 62 648 69 639.6 69 625.9 74 634.2 73 606 69 601 76 619.4 80 +3066597 ORANGE NEWPORT-MESA UNIFIED 39.0254420008624 4.68356306506596 1.23511684205326 34.1238081122474 4.42678774120317 16.0011663286004 60202.0374574347 4349.23086804012 22.4827586206897 42.8714859437751 0 0 662.048115315852 657.721892473118 652.410960005849 57.3834174161 56.1364157706093 49.8311978545888 702.7 42 701.3 47 682.3 47 700.4 42 699.9 48 680.6 48 693.6 43 694.4 56 676.8 55 699 58 691.1 59 679.2 64 683.9 54 679.7 57 670.3 64 668.3 56 672.3 63 661.3 64 653.6 50 655.2 58 647.9 58 640.1 51 630.8 55 636.2 58 616.1 49 610.3 60 614 55 588.1 53 579 56 598.8 59 +3066621 ORANGE ORANGE UNIFIED 36.019976669583 10.8824233307122 2.08554138603029 36.821771684502 9.42408376963351 16.8176700547303 56415.1108202443 3586.93545078464 25.4488217305271 47.3302570863547 2.56410256410256 12.8205128205128 657.097121487969 653.340421234853 646.768285012285 51.7346437346437 51.4449413348721 45.6142793878856 707.4 47 708.8 54 688.1 54 702.3 44 703.8 52 682.2 50 695.4 45 701.6 63 679.6 57 690.5 50 685.1 53 671.2 56 676.7 47 674.8 52 665.7 59 666.6 54 666.2 58 653.9 57 648.7 45 643.3 46 640.2 50 633.8 45 621.7 46 628.3 51 605.5 40 595 45 599.4 41 574.6 41 571.3 48 585.8 45 +3066647 ORANGE PLACENTIA-YORBA LINDA UNIFIED 21.0138794854435 8.12439729990357 1.88846030215365 25.9201221472195 11.3974231912785 15.153023465704 63101.5312190288 4172.24176309868 24.7171532846715 36.5617433414044 0 0 669.720971327595 666.268838856005 656.515978973547 60.006330544879 62.7434308790175 56.1279712705923 713.6 54 717.9 65 692.3 58 707.3 50 711 60 687.4 55 698.4 48 700.9 63 681.2 59 700.3 60 699.1 66 677.5 62 689.3 59 691 68 672.4 66 672.2 60 677.9 69 657.8 61 660.6 57 656.9 60 651.4 61 647 58 633.6 58 636.7 59 622.3 55 609.2 59 615.9 57 594 59 583.3 60 599.5 61 +3073635 ORANGE SADDLEBACK VALLEY UNIFIED 10.5344975854998 8.40166405402147 2.16749065476908 14.8106837091523 6.05643496214728 14.9799044585987 60372.2057811425 3840.86554925841 22.1910073196236 53.7918871252205 0 0 674.518041730873 671.646055990119 662.072027826377 66.466383404149 69.0351996706464 62.0291949523135 713.1 54 722.3 69 695 61 710.8 54 713.6 63 690 58 706.2 56 712 73 687.8 65 703.8 63 698.7 67 682 67 695.3 65 694 71 678.1 72 678.3 66 684.3 74 665.4 69 669.9 66 664.4 68 658 68 655.6 66 641.1 65 646.3 67 633.1 64 621.5 70 627.6 67 600.8 64 593.8 70 607.8 69 +3066670 ORANGE SANTA ANA UNIFIED 73.2772340256227 4.4085122200539 1.07982529504693 90.7908186971471 26.4875239923225 14.970924927416 69824.5398272553 4102.14481925472 25.0321867794005 21.729365524986 0 56.25 620.712644461482 623.755428773726 616.861563590674 26.7030852994555 29.2057133520329 19.6294119317375 679.8 21 686.3 32 664.6 30 668 15 682.5 32 651.4 21 659.5 15 670.2 31 651.4 31 663.1 25 656.6 26 645.4 30 645.5 20 650 28 638.2 30 632.4 21 635.4 29 626.7 30 620.4 21 623.5 28 616.7 28 599.5 19 596 27 601.1 28 571.1 18 572.6 28 572.8 20 542.4 21 548.7 32 559 22 +3073643 ORANGE TUSTIN UNIFIED 29.8689696247767 8.27604268971387 4.65527401296405 41.6813985464545 5.26315789473685 13.0141193595342 57831.146381579 3629.52956197211 24.1694687289845 39.5953757225434 0 0 653.79774335437 650.860966858654 643.780960137984 49.8789766193944 50.3713530355963 43.5576592082616 695.7 35 702.1 48 679.9 45 695 37 703.2 51 675 42 687.8 37 691.4 53 672.1 50 692.4 52 681.1 49 669.4 55 679 49 673.1 50 661.8 55 660.5 48 661.8 54 646.1 49 644.2 40 641.7 44 638.5 48 632.2 44 621.6 46 628.7 51 609.5 43 604.3 55 608.7 50 580.5 47 575.8 53 591.2 51 +3175085 PLACER ROCKLIN UNIFIED 17.136240833655 3.53894493137093 1.3725814453448 6.66446171655366 4.65116279069767 11.1923875432526 52654.8217054264 3596.09525384488 23.0433039294306 0 0 0 673.707947320618 662.480751278062 657.31606741573 62.7487640449438 60.8290731273616 61.4452770208901 716 57 715.2 63 695.3 62 713.2 56 709.2 60 688.7 57 705 54 708.1 70 686.7 65 710.1 69 692.4 61 683.7 69 696.8 66 679.4 58 674.4 69 678.7 67 670 62 660.2 65 664.7 61 654.9 59 651.8 62 652.5 63 629.8 54 639.1 61 630 62 609.6 60 615.2 57 592.3 57 584.8 62 597 59 +3166944 PLACER TAHOE-TRUCKEE UNIFIED 23.3564377231674 .627574034124338 .431457148460482 17.7093547754462 6.61764705882352 13.5935897435897 49513.0257352941 4638.09786232595 19.6784192173576 44.131455399061 0 0 666.170820668693 655.992460533479 648.804707520891 54.0721448467967 54.4324986390855 53.8347609836972 707.3 47 712.2 60 682.6 48 705.3 48 710 59 678.3 46 696.2 45 700 62 675.2 53 701.4 61 687 56 677.2 62 688.8 59 680.2 58 667.8 62 669.5 57 663 55 653.3 57 660.9 57 647.8 51 648.4 59 646.3 57 616.3 41 631.5 54 615.8 49 597.5 48 606.5 48 592.1 57 580.6 58 590.1 51 +3166951 PLACER WESTERN PLACER UNIFIED 28.6609686609687 .562809545249887 1.44079243583971 17.4245835209365 4.8780487804878 13.3327272727273 42658.3902439024 3503.69765871229 24.2685851318945 27.4611398963731 62.5 0 656.233281893004 645.500357507661 640.171112229492 44.5485656768999 42.8406537282942 43.2489711934156 698.9 38 695.1 41 679.6 45 691.5 33 698.9 48 670.6 38 689.2 39 694.3 56 669.5 48 688.7 48 668 36 659 44 676.9 47 676.4 54 656.5 50 661.5 49 655.6 48 651.3 55 648.5 45 630.4 33 630.5 41 635.9 48 614.6 39 626.5 49 611.6 46 590.5 41 598.9 41 572.5 40 559.2 36 579 37 +3266969 PLUMAS PLUMAS UNIFIED 36.6621067031464 .663533314901852 1.21647774398673 6.85651092065247 2.71739130434783 16.1540476190476 56500.125 4912.70168648051 21.2320916905444 33.1932773109244 0 0 668.071468144044 656.273361934477 650.500313479624 52.3761755485893 50.1907176287052 51.4273842500989 706.4 46 700.2 47 685.8 51 699.4 41 694.7 43 673.5 40 697.7 47 694.3 56 674.3 52 696.1 56 679.4 48 668.6 54 683.3 53 672.8 50 663.1 57 667.4 55 658.6 51 648.5 52 660.8 57 651.2 55 644.4 55 643.8 54 621.2 46 632.3 54 620.3 53 601.5 52 609.5 51 587.6 53 576.9 54 596.5 58 +3366977 RIVERSIDE ALVORD UNIFIED 42.2902910247004 4.02122641509434 7.22287735849057 47.1580188679245 17.2413793103448 13.0070779220779 62390.7051124438 3758.19761084906 25.181954887218 41.6666666666667 0 70.5882352941177 638.111402394775 630.693225584594 627.071274732972 34.6095254771494 33.3498968363136 30.1157474600871 687.5 27 687.6 33 667 32 678.2 21 684.7 32 655.2 23 676.4 27 681.1 42 660.5 38 674.4 34 662.9 32 655 40 660 31 656.5 34 649.7 42 649.6 37 648.7 42 636.3 39 636.4 34 627.3 31 626.3 36 616.8 31 601.7 30 611.6 37 583.6 25 573.6 28 582 27 559.1 32 550.6 32 569.9 31 +3366985 RIVERSIDE BANNING UNIFIED 75.5298651252409 13.3685136323659 13.8522427440633 36.6974494283201 20.2970297029703 13.8173333333333 60074.7807425743 4456.32191292876 21.8996590355577 41.8181818181818 0 12.5 634.098734577665 628.219981640147 620.879110554338 25.6636392107736 25.7264381884945 23.4349889275546 677.9 19 684.4 29 658.6 24 672.1 17 680.3 27 648.2 18 666.3 19 671.9 33 651.9 30 670.3 30 654.3 24 645.2 30 655.6 27 645.9 24 639.7 31 639.8 27 629.3 23 625.6 28 627.6 25 623 26 612 23 609.6 25 598 24 602.2 28 581.8 22 574.5 27 580.2 25 551.7 23 541 21 561 20 +3366993 RIVERSIDE BEAUMONT UNIFIED 58.7464387464387 1.15131578947368 3.4265350877193 34.6491228070176 9.02777777777779 15.9661585365854 59270.4442361111 4070.73959429825 24.7562674094708 26.25 0 12.5 645.879280347964 637.157724827056 633.962882603642 41.2026346377373 38.8439661798616 37.7323052589957 698.4 38 692.6 39 678.5 44 690.5 32 684.8 33 666.2 33 687.9 37 684.8 46 670.7 49 685.2 44 665.1 34 656.8 42 674.9 45 659.5 37 657.3 50 656 43 655.6 48 646.5 50 640.8 37 630.9 34 634.1 44 623.7 37 608.6 34 614.5 38 599.3 35 592.7 43 592.5 35 562.3 31 562.4 39 573 31 +3373676 RIVERSIDE COACHELLA VALLEY UNIFIED 85.5145886105639 .138121546961326 .276243093922652 96.1671270718232 36.4653243847875 11.9207692307692 61385.5887024609 4099.01191902624 25.2796420581656 13.5467980295567 0 0 612.505972615675 616.307526637951 605.373097282673 15.8368427243854 19.4258671503061 12.4275259678942 670.5 14 676.1 21 652.3 19 661 11 675.8 23 640.5 13 653.8 12 664.4 26 641.4 22 651.2 16 649 20 632.6 19 632.1 12 639.1 18 623.3 16 622 14 625.5 21 613.2 18 608.6 13 611.1 17 600.4 15 586.8 11 585.9 16 585 16 557.9 9 559.9 16 560.2 12 535.4 13 538 19 549.1 11 +3367033 RIVERSIDE CORONA-NORCO UNIFIED 41.5113871635611 3.60423802054992 4.64453762683653 41.7784321884703 11.3732097725358 13.5429739776952 64063.4574557709 4083.55417560257 25.2311373152183 34.6372688477952 0 34.2857142857143 649.575955248793 642.475290069264 639.372187638951 44.6634059582037 40.9677063572595 38.9997744394821 695 34 693.3 39 673.8 39 686.5 28 687.8 36 665.2 32 685.8 35 684.6 46 669 47 685.8 45 673.7 42 662.5 47 673.9 44 666 43 657.6 50 659.7 47 659.1 51 648.4 52 643.2 39 637.8 40 636.9 47 628 40 610.6 35 623.9 47 600.8 36 587.4 38 597.9 40 573 40 563.3 40 584.9 44 +3367058 RIVERSIDE DESERT SANDS UNIFIED 55.9912521615299 1.2646835922698 2.4677908298598 60.0416824554756 15.8088235294118 12.6873655913979 64123.518125 3937.20569865479 25.2138016019717 43.1718061674009 4.34782608695652 0 642.625749337795 640.398884858256 630.882184459367 35.1719884884199 37.7696493349456 31.2600027882337 692.2 32 690.1 35 669.9 35 682.6 25 686.7 34 659.8 27 680.7 31 684.9 46 663 41 675.3 35 664.5 33 650.9 35 662.7 33 663.9 41 647.5 39 649.2 36 647.7 40 635.3 38 635 32 636.5 39 630.3 40 618.9 32 609.7 35 613.7 37 587.8 26 584 35 584.3 28 563 31 561.6 39 574.1 32 +3367082 RIVERSIDE HEMET UNIFIED 62.4077800134138 1.43589743589744 2.66666666666667 29.2307692307692 9.03328050713154 15.5025143678161 59735.0526624406 3916.53708397436 24.517557734894 21.4285714285714 0 5.26315789473684 650.938309754281 645.971246796045 636.643406695025 41.9052154614389 44.9794031490297 40.3741623231571 703.7 43 701.6 48 678.6 43 692.4 34 691.6 40 667.1 34 686.7 36 688.1 50 665 43 687.6 47 675.5 44 663.3 48 674.6 44 664.1 41 659.5 53 659.6 47 659.5 51 643.8 47 648.5 45 645.5 49 635.1 45 625 38 616 41 615.9 39 600 36 592.5 43 591.1 34 567.7 35 566.7 44 575.7 34 +3367090 RIVERSIDE JURUPA UNIFIED 50.2109216989309 1.38881142283451 5.30425567516314 53.2545038764014 23.789764868603 13.2753071253071 62068.7191286307 3826.45784650566 24.6666666666667 26.3835263835264 0 4.16666666666667 638.791092144514 630.901365487503 627.674335051968 34.6180538505606 32.1523596582289 30.0636393768644 690.5 30 689.5 35 669 34 680.6 23 683.8 31 657.1 25 676.1 27 679.6 41 659.9 38 677.3 37 663.2 32 653.3 38 661.1 32 654.6 32 649.4 41 648.5 35 648.2 41 637.4 40 633.9 31 627.4 30 625.1 35 616.9 30 598.3 25 610 34 586.6 25 576.1 28 586.3 30 561 30 552.7 30 572.5 31 +3375176 RIVERSIDE LAKE ELSINORE UNIFIED 38.1164650109672 1.79080718975924 4.07242820189693 30.1120912648405 11.4186851211073 13.05374617737 62326.655449827 3960.63418584599 25.3969359331476 25.3833049403748 0 83.3333333333333 649.218096224461 642.148974546786 634.754570195195 41.2464339339339 42.5663797839224 39.5877977591564 696.1 35 694.7 40 670.8 36 689.4 31 692.9 41 666 33 686 35 688.6 50 668.6 47 684.1 44 667.9 36 656.3 41 674 44 665.4 43 655.4 48 657.1 44 656.1 48 644.4 47 645.2 41 639.6 43 632.3 42 630.3 42 615.9 41 619.7 43 601.5 37 590.9 42 593 35 573.3 40 564.2 41 580.4 39 +3367124 RIVERSIDE MORENO VALLEY UNIFIED 43.0689140716757 3.26543602800764 23.676002546149 35.3532781667728 23.1235784685368 14.0119418132612 58401.1608491281 4173.91743189052 24.0922034941892 25.5924170616114 2.85714285714286 22.8571428571429 642.660522821957 634.998522406493 629.402435943703 34.4060357271743 33.1140613973183 31.6017030627661 692.3 32 694.2 39 670.6 35 687 29 692.5 40 662.4 30 676.9 27 680.2 41 657.9 36 678.6 38 664.4 33 652.4 37 665.4 35 656 33 647.4 39 649.1 36 643.6 36 635 37 634.6 31 624.4 27 622.6 33 618.9 32 602.9 28 612.9 37 589.8 27 576.4 28 585.2 29 559.8 29 552.9 30 572.7 31 +3375200 RIVERSIDE MURRIETA VALLEY UNIFIED 18.2164543398024 2.10569777043765 3.43724194880264 17.8468208092486 15.1933701657459 9.21929611650485 59134.6718232044 3774.6010125929 25.86148169174 38.2566585956416 0 100 664.968239211877 655.571895604396 650.502999299229 56.3379117028732 54.6623626373626 53.4476203690856 706 46 701.7 48 682.7 48 702.5 44 698.8 48 680.6 48 699.1 48 702.4 64 678.3 57 695.8 55 676.8 46 671 56 683.9 54 672.8 51 662.9 57 667.3 55 671.7 63 651.2 55 662.3 58 653.8 58 649.6 60 651.1 62 633.2 58 643.2 65 621.3 54 601 52 614.2 56 589.5 55 578.8 56 596.9 58 +3367173 RIVERSIDE PALM SPRINGS UNIFIED 62.5049747000967 1.15749423932265 5.94287551578158 53.4912384116607 8.93333333333334 13.0700234192038 57242.9728133333 4143.36832699212 24.2010412494994 13.7540453074434 0 9.52380952380952 638.104933204571 636.219372751447 626.655804398614 33.8860871666801 38.3268418582825 30.6045388701111 690.7 30 689.8 35 669.8 34 682.3 25 687.3 35 658.3 26 677.2 28 680.4 41 658.5 36 676.8 36 663.8 33 651 36 664.6 35 657 34 647.8 39 645.2 32 640.1 33 632.1 34 635.8 32 637.2 40 628.3 38 617 30 612.7 38 611.4 35 588.7 27 593.5 44 587.1 30 561.9 30 568 45 572 30 +3367181 RIVERSIDE PALO VERDE UNIFIED 55.9128893390732 .632911392405063 10.5221518987342 52.0833333333333 10.7954545454545 14.1102564102564 61885.4805113636 4694.47362869198 22.1958121109225 20.9302325581395 0 0 642.057746478873 637.300819061802 629.136989409985 33.160363086233 34.7956068503351 30.516939474686 692.1 31 689.2 35 671.5 36 681.8 24 684.2 32 656.7 24 672.7 24 675.1 36 656.2 34 674.2 34 669.1 38 650 34 663.7 34 660.9 38 646.3 38 647.7 35 643.4 36 634.4 37 632 29 625.7 29 621.5 32 617.8 31 603.5 29 610.5 35 593.3 30 580.5 32 589.3 33 564.7 33 564.6 42 570.8 29 +3367215 RIVERSIDE RIVERSIDE UNIFIED 47.2343460276708 3.59830536819221 10.3266625787391 40.1109314900496 21.7477003942181 10.9766241299304 61445.6489947438 4384.20497268521 23.5685282566731 33.7724550898204 0 19.047619047619 652.423640417888 645.365187645035 639.211258767073 42.8254788564866 42.4636712811075 39.2414419622579 701.5 41 701.3 47 680.3 45 695 37 694.8 43 671.5 38 684.7 34 684.6 46 666.3 44 685.6 45 671.4 40 661.1 46 672.7 43 664.2 41 655.9 48 657.6 45 658.4 50 645.2 48 645.9 42 642.3 45 636.4 46 627.4 40 613.6 38 618.7 42 595.2 32 585.9 37 591.8 34 567.2 35 562.1 39 579.3 38 +3367249 RIVERSIDE SAN JACINTO UNIFIED 64.1791044776119 1.00730792020541 3.85147145960893 50.8196721311475 7.44680851063831 13.1198113207547 58040.6569680851 3564.44928500889 26.0216216216216 11.9318181818182 12.5 25 633.898633323641 630.169063926941 625.056898550725 32.6866666666667 32.3090753424658 27.9002617039837 686.4 26 687.1 32 673 37 685.5 27 685.8 33 670.4 37 677.5 28 678.3 39 663.5 42 674.5 34 669.2 38 651.1 36 659.4 30 653 30 645.8 37 648.3 35 642.9 35 635.6 38 630.7 28 625.4 28 617.1 28 611.4 26 597.2 24 604.5 29 587.6 26 585.4 36 583.5 27 549.8 21 553.3 31 566.2 24 +3375192 RIVERSIDE TEMECULA VALLEY UNIFIED 18.1699877999187 1.95702750786917 3.8250992199261 17.784316408923 8.09792843691149 12.194847972973 64156.1068361582 3664.26510606268 25.5497985031664 25.8680555555556 6.25 81.25 664.46675821574 654.871055332649 652.040092513924 58.8132729160767 56.1685173089484 54.7503551472677 709.6 50 702.7 50 687.3 53 703 45 699.2 51 681.1 49 697.3 47 699.7 62 680.9 60 695.8 55 686.4 55 671.6 57 687.3 58 677.3 56 668.1 62 670.5 58 667.7 60 657.1 61 661.2 58 653 57 653.2 63 647.9 59 628.8 55 638.8 61 620.7 55 603.2 55 612.7 55 591.2 58 577.4 57 599.9 63 +3375242 RIVERSIDE VAL VERDE UNIFIED 54.8438652569462 1.89759712553335 23.5796092521895 45.823040646755 21.2389380530973 10.9077922077922 58447.4374631269 3799.07750392993 25.5414949970571 31.8021201413428 0 0 637.066459230892 632.573991655077 627.424335378323 34.5670913953123 34.0865399474579 30.0086165629488 690.2 30 688.6 34 668.3 33 679.3 22 682.8 30 654 22 675.2 26 678.6 39 656.5 35 674.2 34 663.7 32 649.5 34 659.4 30 652.4 30 644.5 36 642.8 30 635.5 29 633.1 35 637.3 34 635.1 38 631.9 41 614.9 29 609.4 34 613.8 37 588.5 27 582.3 34 587.5 31 567.2 35 562 39 578.9 37 +3473973 SACRAMENTO CENTER JOINT UNIFIED 29.3060600267635 7.97491039426523 13.8709677419355 10.2867383512545 10.6995884773662 13.2324074074074 55944.1275720165 3811.04928315412 22.2895064288677 78.968253968254 0 42.8571428571429 662.739604722793 655.475031525851 650.780858585859 57.0383838383838 56.1669609079445 51.7995379876797 703.4 43 706 53 681.1 47 695.9 37 696.9 46 672.5 39 686.6 36 690.8 52 669.2 47 700.1 59 696.1 65 676.1 61 686.1 56 689.8 68 671.9 66 670.3 58 667.8 62 662.7 67 656.7 54 649.3 55 650.2 61 641.1 54 625.1 54 640.9 64 617.1 55 599.6 54 611.8 56 593.4 62 568 52 592.9 58 +3467314 SACRAMENTO ELK GROVE UNIFIED 36.9447663190421 15.2125780530885 19.0934646864194 16.269870885887 17.4043062200957 12.2778861360042 58331.6309808612 3762.5834017464 23.1169705126637 29.5801526717557 0 33.3333333333333 654.782969037773 648.209210391211 643.323938438074 47.4667059516794 45.1266043741657 42.0050387462209 692.9 32 697.5 43 675.4 40 688.4 30 693.9 42 667.9 35 686.8 36 692.7 54 671.3 49 685.7 45 677.4 46 660.8 46 674.5 44 668.2 45 655.9 48 661.5 49 657.8 50 649.5 53 648.3 44 638.2 41 641.1 51 630.8 43 612.8 37 626.7 49 609.6 44 592.9 44 605.1 47 584.7 50 571.4 49 593.7 54 +3467330 SACRAMENTO FOLSOM-CORDOVA UNIFIED 26.1143156790771 5.3087986463621 9.91257755217146 8.67174280879865 9.72222222222221 14.2631906077348 51104.6527777778 3845.84679921038 22.1977666289044 27.7091906721536 4.34782608695652 30.4347826086957 663.980873539868 658.512398760124 649.557049411291 54.2888195632485 56.1346865313469 51.1814118842052 703 43 703.8 50 683.1 48 697.9 40 700.6 49 674.3 41 693.8 43 700 61 675.2 53 697.6 57 688 57 676.5 61 682.1 52 679.3 57 669.5 64 669.5 57 672.5 64 655 59 661 57 654.6 58 647.3 57 642.7 54 627.1 52 630.5 53 617.4 50 605 55 609.4 51 590.7 56 580.3 57 592.9 53 +3467348 SACRAMENTO GALT JOINT UNION 33.1153765028475 1.77095631641086 1.18063754427391 35.7260920897285 9.16666666666667 11.7725563909774 51742.2041666667 4581.18913813459 22.2133333333333 23.9837398373984 0 0 656.585923753666 650.842329994729 644.455909694555 46.5211155378486 45.3125988402741 41.4806718208478 702.8 42 699.8 46 682.6 48 691.5 33 690.4 39 668.8 35 683.9 34 684.9 46 668.3 46 686.8 46 675.5 44 664.5 50 676.6 47 667.6 45 659.5 53 663.9 51 666.8 59 653.6 57 642.5 39 635.2 38 633.8 44 627.6 40 612.2 37 622.2 45 608.8 43 600.1 50 604.3 46 576.5 43 572.3 50 585.2 44 +3475283 SACRAMENTO NATOMAS UNIFIED 37.9553798362045 6.22614982928299 29.7449287005423 26.2301667001406 12.2340425531915 10.6661137440758 57672.6808510638 3312.51496284394 22.4284140969163 0 14.2857142857143 14.2857142857143 654.991544666866 642.894449262793 641.367069121642 43.5976456383942 38.1156403584851 39.4711682103376 694.8 34 688.5 35 673.4 38 684.6 27 684.9 32 660.9 28 680.5 31 679.1 40 663.6 41 686.6 46 670.9 39 663 48 674 44 661.6 39 660.7 54 658.8 46 651.4 44 647.6 50 648 44 637.1 40 636.7 47 626.2 38 607.8 33 623.7 47 607.7 42 591.8 43 599.5 41 575.1 42 557.4 35 581.3 40 +3467413 SACRAMENTO RIVER DELTA JOINT UNIFIED 35.978835978836 1.40728476821192 1.03476821192053 36.9205298013245 11.9047619047619 14.7351063829787 51080.373015873 4420.62417218543 20.1801801801802 45.3125 0 0 652.409325771897 645.858159509202 639.278937259923 41.1651728553137 42.3993865030675 38.5519848771267 697.9 37 698.6 45 680.1 45 688.8 30 692.1 40 669.4 36 681.4 31 689.3 51 667.8 46 691.1 50 680.4 49 659.2 44 676 46 671.1 49 657.4 50 654.3 41 654.5 47 640.6 43 641.3 38 633.5 36 628.4 38 630.5 43 612.6 37 616.7 40 594.6 31 580.1 32 591.1 34 569.6 37 560.6 38 576 34 +3467439 SACRAMENTO SACRAMENTO CITY UNIFIED 59.4064346159987 23.8705379883233 21.9525096978959 23.5061322048509 27.4574669187146 14.0032991803279 61997.025047259 4125.40662591591 24.8267842434226 38.742611499194 1.2987012987013 10.3896103896104 642.590368715732 637.104240392201 631.379925928053 37.3836812035256 37.4236729403809 33.106930463288 694.4 34 697.5 43 676.9 42 684.5 27 691.4 39 666.1 33 677.7 28 683 44 664.6 43 680.8 40 675 43 658 42 664 34 664.9 42 650.5 42 651.5 38 651.5 43 637.5 40 636 33 631.7 34 625.3 35 620.1 33 606.4 32 614.3 38 591.8 29 578.2 30 588.5 32 567.1 35 552 30 572.2 30 +3467447 SACRAMENTO SAN JUAN UNIFIED 28.8497509510099 4.59476973890503 5.95982189518574 8.97213454020946 7.18722271517302 12.6162215239592 58872.7457852706 4335.65953132512 21.750739140323 39.2844235634261 1.21951219512195 6.09756097560976 670.17213159824 662.936219245407 655.298383336865 58.550422330538 58.9531301507387 55.3249022482894 708 48 710.7 57 687.1 53 703.8 46 706.8 56 683.1 50 700.2 49 702.2 64 681.2 59 700.1 59 686.8 55 675.6 61 687.6 57 678.8 57 669.9 63 676.4 64 676.7 68 661.4 65 662.8 59 655.1 58 650.5 61 648.4 59 632.1 57 636.4 58 624.2 56 610.2 60 616.8 58 591.1 56 579.7 57 595.9 57 +3575259 SAN BENITO AROMAS/SAN JUAN UNIFIED 35.7537490134175 2.109375 .625 40.46875 16.6666666666667 11.9181818181818 61919.85 4272.915625 22.2222222222222 0 0 0 657.229098805646 644.65762886598 639.917678381257 48.8051118210863 48.5010309278351 49.1226927252986 702.3 42 694.2 39 678.6 44 691.7 33 696.3 43 667.8 35 690.2 39 695.3 56 668.4 47 700.6 60 680 49 676.8 62 677.5 47 673.1 51 663.5 57 674 61 674 66 653.3 57 651.1 47 644.2 47 635.3 45 636.1 48 609.9 35 619.4 43 609.5 44 596.5 47 598.4 41 591.7 57 571.3 49 587.3 47 +3675077 SAN BERNARDINO APPLE VALLEY UNIFIED 43.7316116377901 1.65699001891839 17.2744471263618 20.431861178159 5.16898608349901 13.2070035460993 62106.3459244533 3058.08872072542 24.5208208806535 35.8391608391608 13.3333333333333 86.6666666666667 652.699094870935 642.722250164006 639.455594713656 44.5601321585903 40.9465340039361 41.3233880880545 705.5 45 700.8 46 682.6 48 694.6 36 688.1 36 669.9 37 690.4 40 685.6 47 672.7 51 690.2 50 673.3 42 667 52 673.8 44 660 37 656.9 50 654.1 41 652.3 45 643.3 46 646 42 637.7 40 634.8 45 632.8 45 616.5 41 622.3 45 599.4 35 587 38 591.7 34 568.8 36 562.1 39 579.8 39 +3667611 SAN BERNARDINO BARSTOW UNIFIED 50.6241134751773 1.10144927536232 11.7826086956522 38.1304347826087 19.2691029900332 14.4014662756598 57100.6212624585 4203.24405797101 22.9867549668874 12.987012987013 0 0 644.092824226465 638.257651547266 630.222731201383 34.9842264477096 35.8380669775329 33.0118499012508 693.2 33 693.1 39 671.2 36 685.7 28 686.9 34 656.4 24 675.6 26 678.3 39 655.8 34 681.4 41 670.1 39 655 40 671.1 41 662.7 40 648.6 41 652.9 40 645 37 636.5 39 636.7 33 632.5 35 627.1 37 614.1 28 602 28 608.1 33 595.2 32 584.4 35 591.7 34 559.9 29 556.4 34 575.1 33 +3667637 SAN BERNARDINO BEAR VALLEY UNIFIED 40.7033727298933 .44931199101376 .954787980904241 11.4293737714125 3.52112676056338 13.8814814814815 57824.8802816902 3838.35888795282 25.3642857142857 35.4285714285714 0 100 662.867092034029 653.319750755287 647.145671412082 51.0623316660254 50.2843655589124 48.7935034802784 706.7 46 704.6 52 686.9 53 695 37 701.4 50 670.7 38 689.2 39 692.1 54 670.4 49 694.2 54 681.1 50 662.8 48 680 50 667.7 45 656.9 50 661.2 48 655.4 48 645.4 48 655.7 52 643.5 47 642.7 53 645 56 623.2 48 635.8 58 625 57 608.5 58 619.6 60 580.2 47 574.4 52 591.7 53 +3667678 SAN BERNARDINO CHINO UNIFIED 25.955670898506 6.02325581395349 5.23255813953488 38.202657807309 18.6985172981878 15.2127715355805 62270.0461285008 3664.25887043189 24.169686985173 29.0155440414508 0 10 655.456794936477 649.093457228997 645.536307072925 50.6846006038979 47.2450164244251 43.8672659725726 694.7 34 695.2 41 680 45 689.7 32 693.4 41 675.4 43 687.2 37 688.5 50 676.9 55 690.3 50 680.8 49 669 54 678.9 49 671.7 49 663.3 57 663.2 50 662.1 54 651.3 54 650.6 47 644.4 47 640.8 51 637.3 49 623.6 48 630.9 53 605.6 40 593.2 44 600.5 42 580.5 47 570.9 48 591.3 52 +3667686 SAN BERNARDINO COLTON JOINT UNIFIED 44.4521203103412 2.01990343876244 9.0846388806779 63.6860774460538 19.094247246022 11.8951140065147 59625.2607099143 3811.72376588827 24.0302328416433 34.4459279038718 0 48 634.139532950423 631.313346569601 626.092709725316 33.9203414996288 33.8149863960585 27.9621372430472 691.4 31 690.1 35 671.1 36 682.5 25 685.7 33 661.8 29 673 24 676.4 37 657.7 36 674 34 663.3 32 651.7 36 658.2 29 652.5 30 645.1 36 648.4 35 653.9 46 640.4 43 632.2 29 631.8 34 628 38 613.8 28 605.7 31 611.6 35 583.8 23 580.3 32 583.6 27 553.6 24 551.7 30 568.2 26 +3667710 SAN BERNARDINO FONTANA UNIFIED 39.998063204106 1.10104404176167 11.8054722188888 65.7746309852394 19.7108066971081 12.9685172647258 60468.7168949772 3939.78189127565 24.3713073776701 18.2534001431639 0 56.25 627.433972790867 625.397574910601 618.264922374043 25.880959431448 27.0517489415923 21.4247886356809 681.2 22 686.3 31 664.7 30 670.7 16 682.4 30 654.1 22 667.5 20 673.4 34 656.3 34 668.1 29 657.4 27 642.5 28 651.2 23 648.7 26 637.3 28 636 24 634.1 27 622.3 25 624 22 621.3 25 616.1 27 604.8 21 596.5 23 601.5 27 575.9 18 574.2 27 574.8 21 547.9 20 545.7 24 561.2 20 +3675044 SAN BERNARDINO HESPERIA UNIFIED 47.6781020421918 .955685016691759 5.30863389408915 31.1906787981934 11.8971061093248 12.1917877906977 62220.1045016077 3865.72474962362 24.8130160271977 13.3440514469453 0 61.1111111111111 645.811905419082 636.345861854387 632.887036026201 37.3387008733625 34.2974486621033 34.072499769988 697.9 37 693.7 39 674.4 39 690.1 32 688 36 666.6 34 683.1 33 681.5 43 664.7 43 678.8 38 667.3 36 654.8 39 668.8 39 659 36 651.9 44 651.1 38 644.5 37 637.8 40 634.5 31 625.7 29 625.6 35 619.3 33 600.6 27 612.5 36 593.9 31 579.3 31 589.5 32 561.4 30 552.3 30 573.6 32 +3675051 SAN BERNARDINO LUCERNE VALLEY UNIFIED 62.3115577889447 1.22484689413823 2.27471566054243 17.9352580927384 5.26315789473685 10.4692307692308 59114.4912280702 4587.3053368329 20.4873646209386 26.0869565217391 0 0 646.713190954774 636.121039903265 631.081157635468 35.2697044334975 34.2660217654172 33.7110552763819 684.9 25 677.6 23 665.5 30 694.1 35 684.9 33 665.9 33 683.4 33 682.1 44 663.3 41 676.3 36 660.9 30 648.1 33 653.2 25 646.6 24 634.8 26 648 35 643.4 36 625 27 640.7 37 636.1 39 631.1 41 632.8 44 613.1 38 623.5 46 594.1 31 577 29 592.5 35 567.1 35 562.6 40 577.1 36 +3667777 SAN BERNARDINO MORONGO UNIFIED 46.7422949503062 1.50383631713555 8.19437340153453 13.3401534526854 4.5045045045045 13.4019387755102 62286.0720720721 4128.06496163683 22.6292806251436 13.5 5.88235294117647 0 649.351451800232 645.395127543709 636.913963963964 43.5964835803546 46.3238750358269 40.457462253194 703.7 44 700.6 47 681.6 47 697.6 39 696.6 46 670.3 37 687.4 37 688.6 50 666.8 45 683.1 43 675.2 44 656.8 41 670.2 40 665.6 43 650 42 655.8 43 659.2 51 644.7 47 643.8 40 638.9 42 630.8 41 630.2 42 617.5 42 624.3 47 604.8 40 596.2 47 599.6 42 570.1 38 573.6 51 585.7 46 +3667801 SAN BERNARDINO NEEDLES UNIFIED 54.401519949335 1.16194625998548 3.7763253449528 17.283950617284 2.94117647058823 16.7946666666667 61234.9852941177 4903.2381989833 21.2772133526851 40.3508771929825 0 10 648.882936918304 640.701925025329 637.151745379877 44.7659137577002 42.2958459979737 40.3660806618408 698.2 37 694.5 40 680 45 688.5 30 690.3 39 669.2 36 683.9 34 680.9 42 668.6 47 683.2 43 675 44 659 44 675.1 45 669.9 48 655.2 48 656.5 43 648.3 41 644.1 47 639.3 36 628.8 32 632.7 43 632.9 45 620.2 45 625.8 49 597.3 33 588.7 40 593.6 36 588.4 53 573.2 50 590.9 52 +3667843 SAN BERNARDINO REDLANDS UNIFIED 34.6040390288178 8.12395760477753 7.96255447355679 30.9894011943832 15.0335570469799 14.8490898058252 60477.2657718121 3763.68477968473 24.7211127943809 24.7743229689067 0 50 656.081160748377 651.376363772792 643.838623810985 47.177124884934 47.9456741952427 42.7080565101184 694.5 34 701 47 675.2 40 694.7 37 699.9 49 675.2 42 688.4 38 694 56 673.9 52 691.8 51 680.7 49 667.5 52 678 48 673.2 50 662.2 55 659.3 46 658 50 645.8 49 650.6 47 642.1 45 638.5 48 631.3 43 614.7 39 622.3 45 604.8 39 594.5 45 600.6 43 576.9 43 572.3 50 585.8 45 +3667850 SAN BERNARDINO RIALTO UNIFIED 57.88501888376 2.87577590948377 27.3984442523768 51.5911055236898 24.4939271255061 12.1739946380697 59096.3066801619 3838.00078573112 25.1621099705255 13.2394366197183 0 70.8333333333333 630.819776598716 626.145838751625 623.00284021703 29.9329531613332 27.4568162115301 24.1199664898073 686.7 26 684.5 30 667.6 32 676.5 20 681.2 29 656.7 24 669.3 21 673 34 656.2 34 670.7 31 660 29 645.9 31 656.7 28 650.9 28 643.2 34 640.4 28 640.5 33 632.1 34 627.5 25 621.1 24 622.6 33 607.6 23 596.1 23 607.8 32 579.2 20 571.1 24 579.3 24 550 21 545.3 24 565.1 23 +3667868 SAN BERNARDINO RIM OF THE WORLD UNIFIED 24.7007250042151 .979604946202023 1.26866870081901 13.0560462502007 10.2766798418972 15.791958041958 62201.8656126482 3995.41560944275 24.4390832328106 31.2865497076023 0 0 663.493173758865 657.51976744186 651.892599080359 55.119115393037 53.1539621016365 48.792109929078 707.5 47 703.1 49 689.4 55 698.5 40 694.3 43 680.3 48 692.6 42 690.6 52 678.2 57 695 55 678.4 48 668.3 54 686.3 58 678.5 57 668.7 63 662.6 50 666.3 60 653 57 651.6 48 648.3 54 645.2 56 638.6 52 629.5 58 633.1 57 613 51 601.3 55 608.9 53 575 47 573 57 587.6 52 +3667876 SAN BERNARDINO SAN BERNARDINO CITY UNIFIED 70.2357454924486 3.36604410678485 19.6180225809855 50.849424923499 25.2196382428941 11.6793846153846 61672.8863049096 4147.68156589638 23.9868434683518 22.3952095808383 0 42.6229508196721 629.083041804347 626.491443928802 621.690639289877 29.5900654532413 29.2053692063679 23.6404037954346 688.8 28 692.9 39 672.1 37 675.9 20 685.5 33 657.5 25 669 21 675.5 36 656.6 35 669.5 30 660.8 30 648.5 33 653.6 25 652.2 29 641.8 33 638.9 26 638.9 32 629.1 31 624.2 23 623.2 26 618.5 29 606.5 22 597.1 24 605.1 30 580.3 21 574.1 26 581 25 551.8 23 546.6 25 565.5 23 +3673890 SAN BERNARDINO SILVER VALLEY UNIFIED 46.9641550841258 2.10789567702751 18.1850660950339 12.0400142908182 7.91366906474819 11.0990683229814 60618.4100719425 5342.53733476242 20.2528901734104 18.348623853211 0 0 650.362307692308 643.62908301682 635.705941143809 43.6912826207662 46.2045577862181 43.4203296703297 698.9 38 693 38 682 46 697.3 39 693.5 42 678.1 46 689.3 39 683.3 45 668.8 47 692.4 52 673.6 42 666.4 51 674.7 44 659.8 37 650.6 43 656.9 44 652.5 45 637.2 39 647.9 44 644 47 634.1 44 634.5 47 623.5 48 624.2 47 604.6 40 599.6 50 596.4 39 576.9 44 581 58 580 39 +3673957 SAN BERNARDINO SNOWLINE JOINT UNIFIED 20.984126984127 .826188620420889 2.08885424785659 16.6796570537802 4.05405405405406 8.42002881844381 53764.1993243243 3823.18035853468 22.5206611570248 10.2484472049689 9.09090909090909 0 662.535723570191 655.407981119931 648.334442523768 51.4716940363008 51.1527569191161 48.2629982668977 701.2 41 702.5 49 680.8 46 694.3 36 700.8 50 675.1 42 691.4 41 696.7 59 673.3 51 696.9 56 682.8 52 671.8 57 679.7 50 668.3 46 660.6 54 664.6 52 662.8 55 648.8 52 658.5 55 651.9 56 644.2 54 641.6 53 618.4 43 628.5 51 612.5 47 598.8 49 606.7 48 584.2 50 575.7 53 596.6 58 +3675069 SAN BERNARDINO UPLAND UNIFIED 30.647120055517 7.22630173564753 11.4903204272363 28.4796395193591 11.4563106796116 13.9812068965517 59659.7650485437 3922.56667222964 23.5105551211884 35.3135313531353 6.66666666666667 6.66666666666667 644.531339823829 632.309168925023 634.454106132436 50.2338278024163 44.4777175549533 46.7111729253593 677.6 19 674.3 19 653.2 20 677.6 21 677.1 24 655.7 24 682.2 32 677.1 38 669.7 48 692.3 52 683.8 52 669.1 54 683.2 53 674.4 52 664.8 59 664.5 52 663.2 55 651.6 55 649.7 46 639.2 42 637.7 48 634 46 613.3 38 628.1 50 605 40 586.7 38 600.1 42 576.2 43 561.5 39 588.5 49 +3667918 SAN BERNARDINO VICTOR VALLEY 44.9199607971251 1.61820323640647 16.4176328352657 36.1708723417447 15.5339805825243 10.971671388102 61492.8507936508 4057.49705499411 26.5114405414115 13.9705882352941 15 20 648.337447048856 642.959543184761 636.856736065727 40.8697600597517 40.029221379693 36.1985314882801 693.3 32 689.7 35 671.5 36 687.8 30 686.3 34 664.1 31 681.1 31 679.3 40 662.3 40 679.9 39 670.3 39 653.4 38 667.9 38 660.1 37 651.9 44 657 44 660.9 53 647.4 50 643.8 40 637.7 40 632.8 43 627.1 39 614.4 39 622.1 45 600 36 591.1 42 598 40 564.5 33 562.5 40 581.1 40 +3667959 SAN BERNARDINO YUCAIPA-CALIMESA JT. UNIFIED 27.5710334422932 .762642262114279 .77437521999296 19.6644374046697 6.06060606060606 11.880487804878 63432.7181818182 3784.39035550862 25.0716245047242 25 0 70 660.963865401208 653.070776566758 645.047559298728 47.8502921966311 48.70810626703 45.8515962036238 710 50 705.8 53 684.8 50 695 36 696.8 46 670.2 37 690.4 40 695.5 57 670.2 48 688.9 48 674.3 43 661.5 46 679.1 49 675.3 53 662.9 56 663.9 51 664.7 57 650 54 654.8 51 643.2 46 640.3 50 638.4 50 621.3 46 628.5 51 607.6 42 589 40 597.3 40 577 44 570.1 47 588.2 48 +3773551 SAN DIEGO CARLSBAD UNIFIED 26.9230769230769 2.59466170080695 1.76288019863439 26.1328367473619 13.3333333333333 15.2839285714286 62997.1121212121 4261.82011173184 24.3261749144102 43.4447300771208 0 0 675.131481481482 670.382800941493 660.844547008547 63.8950427350427 65.6696368527236 60.6031260618417 711.9 52 708.8 56 693.3 59 705.9 48 702.6 51 688.3 56 700.2 50 698.9 61 683.5 61 704.1 63 692.2 60 684.5 68 696 66 690.3 68 678 71 678.2 66 687.2 76 660.2 64 671.2 66 672.1 74 659.2 68 658.6 68 646.5 70 644 65 631.4 62 618.5 67 622.8 63 601.5 65 597.6 73 603.9 64 +3768031 SAN DIEGO CORONADO UNIFIED 12.8909229595728 1.74927113702624 2.58746355685131 10.4956268221574 8.66141732283464 15.0795454545455 59963.7874015748 4346.54555393586 22.3699421965318 58.8235294117647 0 0 685.812943528236 678.442246520875 668.551767048283 70.2528621204579 71.7176938369781 69.2713643178411 725 66 722.8 70 702.7 68 722 65 713.7 64 697 65 710.7 60 707.6 69 687 65 714.5 73 706.3 73 687.4 72 702.7 72 696.4 73 677.4 72 686.9 74 681.6 72 671.1 74 677.2 72 670.6 74 663.4 72 663.6 72 647.6 71 649 69 638 68 627.3 75 625.1 66 610 72 603.6 78 621.7 81 +3768098 SAN DIEGO ESCONDIDO UNION 43.1771475544595 2.75243544147209 1.7975877532086 43.8108860368022 8.99908172635445 14.0709437086093 58398.8970798898 3882.45098422762 23.4224049331963 29.0118577075099 4 44 654.3185102935 648.733153018358 641.556212530857 46.9538027506759 47.8680439661622 42.2829361983074 706 46 699.7 46 683.9 49 699.7 41 695.6 45 677 44 694.7 44 692 54 675.7 54 689.5 49 678.5 47 666 51 676.6 47 669.8 47 659.3 52 656.4 43 661.2 53 647 50 644.2 40 644.3 47 637.8 47 628.1 40 621 45 622.9 46 599.5 35 595.6 46 596.4 39 573 40 570.7 48 581.3 40 +3768114 SAN DIEGO FALLBROOK UNION 49.1896468311563 .898770104068117 4.3282876064333 36.2109744560076 10.1408450704225 16.5610126582279 66966.7211267606 4540.89427625355 24.1105354058722 22.4609375 0 0 658.178589678079 649.598358753316 644.485851117459 47.8462443286843 45.9941976127321 44.0805654913984 703.3 43 699.2 45 681.5 47 696.7 39 697.6 46 677 44 692.1 41 694.3 56 675.4 53 693.2 53 684.4 53 670.8 56 685 55 679.4 57 667 61 664.2 52 668.4 60 653.5 57 648.3 44 639.3 42 638.2 48 635.7 47 611.9 37 622.9 46 603.1 38 582.6 34 594.6 37 563.8 32 556.8 34 574.6 33 +3768163 SAN DIEGO JULIAN UNION 7.72303595206391 .138121546961326 .69060773480663 9.25414364640884 5 15.9693181818182 62789.975 5092.90745856354 19.0956072351421 32.0754716981132 0 0 674.98523364486 667.565988909427 655.901663585952 55.1293900184843 57.9334565619224 54.8616822429907 706 46 702.5 49 682.9 48 696.3 38 699 48 666.4 33 686.2 35 686.4 48 664.4 42 719.1 76 700.6 69 687.2 72 694.8 65 692 70 681.4 76 678.8 66 678.1 70 659.4 63 665 61 647.6 52 650.2 60 657.1 67 638.1 62 640.8 61 620.4 54 605.2 56 606.9 49 588.7 54 585.4 63 596.3 58 +3768213 SAN DIEGO MOUNTAIN EMPIRE UNIFIED 48.6942328618063 .163220892274211 1.4689880304679 25.2992383025027 4.3010752688172 12.1626213592233 52084.3978494624 4470.92056583243 20.1787709497207 40.8695652173913 0 0 655.573507462687 648.464296296296 641.53604826546 44.1809954751131 44.2 41.234328358209 692.9 33 687.6 33 669.6 34 691 33 693.3 41 670.5 37 683.4 33 690.3 52 662.7 41 687.5 47 669.8 38 660 45 673.3 43 663.5 41 657.1 50 660.4 47 658.5 51 642.3 45 645.9 42 638.3 41 636.9 46 637.8 49 614 39 626.5 49 602 37 593 44 600.1 42 582.4 48 580.2 58 591.2 51 +3773569 SAN DIEGO OCEANSIDE CITY UNIFIED 54.9773988083008 1.80425939219909 14.8600143575018 41.5218951902369 16.013437849944 13.1737055837563 57811.1422172453 3832.5821009811 23.3502479529466 44.7178002894356 0 0 640.598977391304 634.624421296296 630.728302937491 39.543366281498 37.8617919389978 34.5817739130435 690.5 30 690.9 36 671 36 684.5 26 688.2 36 662.9 30 678.3 29 680.1 41 662.8 41 684.3 44 669.9 38 663.5 49 667.3 37 659.9 37 652.7 45 653 40 652.3 44 641.6 44 639.4 36 633.6 36 630.8 41 622.9 35 610.4 35 618.8 42 594.4 31 583.1 34 591 34 567.1 35 563.4 41 576.4 34 +3768296 SAN DIEGO POWAY UNIFIED 10.5881569750025 8.75586330131785 2.76013912377549 7.79220779220779 11.0151187904968 14.1915538362347 58198.62275018 3718.16908644181 22.8757095906782 46.6887417218543 0 0 681.429950602305 677.907482088464 667.726259878223 70.3265967094183 72.5113475481574 66.1724152872866 716.6 57 721.2 69 698.6 65 711.9 54 713.2 63 693 61 706.7 56 713.1 74 691 68 711.1 70 704.7 72 687.3 71 701.8 71 696.1 73 682.1 76 684.5 72 687.1 76 667.1 71 678.7 73 674.4 76 666.8 75 667.2 75 648.9 72 653.8 73 638.2 68 629 76 632 71 602 66 598 74 610.5 72 +3768304 SAN DIEGO RAMONA CITY UNIFIED 35.0236546422235 .704225352112676 .876688703650474 19.6177062374246 7.49185667752444 13.5145161290323 57168.1302931596 3976.02960620868 23.1159175397094 39.7368421052632 0 0 670.183532751977 661.177163940965 652.80687851971 55.8986323411102 56.5917431192661 55.3364429121882 707 47 701.4 48 684.7 50 702 44 697.5 46 678.8 46 694.1 43 693.2 55 672.9 51 701.8 61 684.7 53 672.1 57 685.8 56 672.1 50 661.1 55 674.9 63 676.6 68 658.1 62 662.7 59 657.9 61 646 56 653.6 64 633.7 58 640.3 62 626.2 58 609.9 60 619.3 60 592.9 58 586.4 64 597.3 59 +3768338 SAN DIEGO SAN DIEGO CITY UNIFIED 64.1523473458116 9.49274671088837 16.9243412604654 35.2773273262256 25.0849652047257 12.2959692898273 62782.7030263797 4952.58531878518 22.193133902188 31.2403234130397 4.16666666666667 28.5714285714286 650.53792231777 646.218283229981 639.276522675464 45.5376015212436 46.3890985890177 40.3608356899636 699.9 39 700.5 47 682.1 47 691.5 33 694.8 43 671.8 39 686.7 36 689.2 50 670.9 49 684.1 44 674.6 43 662.2 47 671.1 41 667.8 45 657.2 50 656.6 44 656.5 49 644.7 48 645.9 42 641.8 46 636.7 47 628.2 41 616.1 43 621.9 46 602.2 39 595.1 47 597.9 40 573.3 43 570.6 50 581.7 43 +3773791 SAN DIEGO SAN MARCOS UNIFIED 49.2650415411303 2.38978517815547 2.55370546113364 44.1376930377017 11.0647181628393 13.668029739777 60657.1607515658 4097.09248554913 24.6399825973461 29.6551724137931 0 83.3333333333333 653.268111815711 651.195564163439 642.022429078014 48.4894883485309 51.2722728976634 43.4528277468617 702.4 42 699.2 46 681.9 47 688.3 30 693.6 42 669.6 36 681.7 32 689.4 50 668 46 684.6 44 677.1 46 662.2 47 670.4 40 673.8 51 658.4 51 663.5 51 671.2 63 651.3 55 653.3 50 648.9 52 642.3 52 638.9 50 626.2 51 631.3 54 613.2 47 606.7 57 607.6 49 578.4 44 573.8 51 585.4 45 +3768452 SAN DIEGO VISTA UNIFIED 40.0597659168258 2.53261999153227 6.12755475154921 37.3850121242446 11.0909090909091 12.812450748621 65164.4454545455 4103.44648012009 23.6444866920152 34.3324250681199 3.7037037037037 81.4814814814815 653.530254976898 645.181577922439 640.063129506615 45.9587804462613 45.2737439492572 43.5388739946381 701.8 41 698.1 44 678.7 44 694.3 36 693.3 42 668.6 35 690.3 40 690.6 52 671.1 49 688 48 673.6 43 664 49 678.9 50 668.2 46 659.4 53 659.8 47 655.6 48 643.4 47 647.3 44 639.6 44 637 47 632.1 45 614.6 43 623.3 47 602 41 589.2 43 596.9 41 570.2 42 564.7 47 583.3 46 +3868478 SAN FRANCISCO SAN FRANCISCO UNIFIED 64.5542826673561 41.3690232268428 16.1932237284246 21.2041241169046 43.7374605904271 15.2854677206851 52885.5067354543 5230.05073188323 17.9311759878063 48.8306565229642 2.65486725663717 1.76991150442478 658.739665223665 661.291423925138 647.996224272947 50.8723181275654 56.3745114262075 43.9237806637807 704 44 717.9 64 689.9 56 695.9 37 707.5 56 678.6 46 692.4 42 703.8 65 679.5 57 688.1 47 688.1 56 667.1 52 676.5 47 680.5 57 662.5 56 656.4 43 664.2 56 644.8 48 649.3 45 651.7 55 640.3 50 633.7 46 625.1 50 628 50 604.2 39 601.1 51 602.4 44 584.9 51 579.2 56 590.4 51 +3968502 SAN JOAQUIN ESCALON UNIFIED 36.4128595600677 .919842312746386 .328515111695138 26.6425755584757 5.67375886524822 14.1924528301887 53510.4397163121 3846.51215505913 23.3205521472393 26.4150943396226 0 0 661.910785749146 654.90570754717 649.375467177767 52.7709631049353 50.8150943396226 47.4553440702782 700.7 40 700.3 47 680.1 46 690.4 32 694.5 43 670 37 695.8 45 692.5 54 677.1 55 698.4 57 684.9 54 673.9 59 678 48 667.7 46 661.4 55 666.6 54 663.9 56 653.1 57 658.4 55 647.8 51 648.8 59 640.4 52 629.4 54 632.9 55 605.9 41 598.9 49 599.2 41 585.9 51 576.8 54 600.1 63 +3968569 SAN JOAQUIN LINCOLN UNIFIED 44.1298342541436 19.6276905177429 10.6922629435718 17.6265270506108 14.7342995169082 13.2013742071882 53970.809178744 4022.26410703898 21.5606361829026 29.8353909465021 0 0 653.120987453153 648.215219123506 643.269463793941 46.5541875911226 43.7188844621514 39.3379501385042 693.6 33 699 44 681.3 47 686.2 28 695.7 44 672.1 39 680.5 31 688.7 50 673.6 52 690.7 50 676.9 46 667.6 53 672.9 43 668.6 46 658.2 51 661.5 49 658.3 51 645.3 48 650.1 46 639.1 42 637.8 48 628.1 40 613.3 38 623.8 47 602.9 38 588.3 39 597.7 40 567 35 560.3 37 581.9 41 +3968577 SAN JOAQUIN LINDEN UNIFIED 40.5828621139626 1.93602693602694 .336700336700337 34.2171717171717 7.20720720720721 16.1252032520325 52198.8558558559 3727.90909090909 22.0265151515152 39.2857142857143 0 0 652.678872403561 644.666724237191 639.678812572759 40.9796274738068 38.2941853770869 36.4160237388724 692.7 32 694.7 40 672.1 37 690.1 32 687.3 35 666.3 33 683.1 33 685.2 47 664.4 42 682.6 42 666.9 36 658 42 675.1 45 663.4 41 656.3 49 651.5 38 649.1 41 640 42 638.8 35 630.9 33 635.2 45 629.3 41 609.9 35 622.7 46 597.9 34 582.7 34 593 36 560.9 30 563.5 41 578.1 37 +3968585 SAN JOAQUIN LODI UNIFIED 48.7686274509804 19.7954739870908 5.83249086243098 23.6488062835368 11.271186440678 15.083598265896 59465.2338983051 4469.02146356637 22.0029152019206 30.3370786516854 0 62.8571428571429 646.503272085196 639.40676819852 635.370433124489 39.6596022882049 37.8718249108046 34.3092203277603 693 33 697 44 675.4 40 685.1 28 693.5 44 664.9 32 683.1 34 687.4 49 668.3 47 682.2 42 669.2 39 659.8 45 667.1 39 662 40 653.5 47 651.9 39 645.5 39 639.1 42 635.7 33 627.1 32 627.5 38 619.5 34 602.9 32 616 41 588 29 573 29 586.2 31 555.8 31 548.3 32 570.1 33 +3968593 SAN JOAQUIN MANTECA UNIFIED 35.1331654962237 2.4496294935391 4.93600342948129 29.0954743095107 11.3263785394933 13.8097754293263 56910.6646795827 3589.19701145202 24.385775862069 36.2426035502959 0 0 653.420248760546 648.740296094614 639.964641555286 45.0128449921889 47.2959244448226 41.5854570757589 698.5 38 701.1 48 676.5 41 691.2 33 697.3 46 666.7 34 690.1 39 695.3 57 670.2 48 690.4 50 681.4 50 663.5 48 676.4 46 674.2 52 658.5 52 657.7 44 662.3 54 645.4 49 647.4 44 639.9 43 637.6 48 629.5 42 619.4 44 621.9 45 604.5 40 591.6 42 598.1 40 570.8 38 562.4 39 583.1 43 +3968650 SAN JOAQUIN RIPON UNIFIED 13.773987206823 .730816077953715 .48721071863581 21.8432805521721 2.56410256410257 14.5503875968992 51683 3786.43036946813 20.5988023952096 29.7297297297297 0 0 665.134521880065 664.102466487936 654.637203023758 59.0599352051836 61.3678284182306 52.5834683954619 699.4 39 696.3 43 674.3 39 695.8 37 695 44 671.6 39 689.1 39 692 54 670.1 48 703.2 62 701.8 70 683.2 68 687.2 57 690.3 68 670.8 65 664.4 52 676.8 68 661.1 65 657.4 54 654.2 58 650.6 61 650.9 62 638.3 63 641.3 63 625 57 619.4 68 625.4 65 597.2 61 594.1 70 609.5 69 +3968676 SAN JOAQUIN STOCKTON CITY UNIFIED 68.7270837543667 20.8724926357133 13.3482956936457 42.1854397531211 33.7475474166122 12.677675070028 66654.75147155 4527.22617477907 22.9404855129209 18.2092555331992 0 21.9512195121951 626.294401667588 625.040340654415 618.696566775791 27.7514060270293 29.0440487347704 22.2195516229208 683.5 24 686.3 31 666.9 32 674.3 18 683.1 30 655.5 23 668.5 21 677.4 38 657.9 36 664.5 26 660.9 30 642.7 28 647.7 21 650.1 27 636.5 28 638.3 26 638 31 628.6 31 620.6 20 618 23 615 26 603.1 20 595 23 602.9 29 575.9 19 573.8 28 577.2 23 554.5 27 552.7 33 565.1 25 +3975499 SAN JOAQUIN TRACY JOINT UNIFIED 26.5703275529865 4.43653412050703 5.98194130925508 26.7233894773398 14.19624217119 10.5934981684982 55631.8997912317 3616.36638305261 23.96259626 26.2867647 0 0 657.620744108147 652.641071428571 645.445892687559 48.9863485280152 48.9051926691729 43.6359612393827 700.1 39 701.8 48 679.5 45 694.9 36 696.3 45 672.4 40 690 39 693.5 55 673.3 51 693.1 52 685.9 54 666.6 52 678.2 48 675.3 53 661.4 55 664.1 51 662.1 54 648.9 52 653 49 645.6 49 646.7 57 633.6 45 620.3 45 628.4 51 607 41 593.8 44 603 45 572.7 40 567.4 44 584.4 44 +4068700 SAN LUIS OBISPO ATASCADERO UNIFIED 18.0736636245111 1.06577851790175 1.64862614487927 9.34221482098251 3.28467153284672 14.9725806451613 60464.2408759124 4506.42464612823 23.304248861912 45.4545454545455 0 0 678.001860465116 667.072236267525 661.377217835578 63.4382257315374 61.4366812227074 61.55 717.6 58 709.6 57 698.5 64 711.2 54 703.9 54 693.1 61 706.4 56 704.8 67 687.5 65 706.3 65 696.8 65 679.6 65 694.3 64 680.7 59 669.7 64 680 68 675.9 68 662.8 67 668.5 64 655.1 59 651.6 62 654.6 65 634.7 59 642.5 64 628.8 61 609.9 60 618.5 59 597 61 588.6 66 601.4 63 +4075465 SAN LUIS OBISPO COAST UNIFIED 27.0877944325482 1.00502512562814 .301507537688442 21.608040201005 9.23076923076923 12.8641891891892 46347.3846153846 4792.46130653266 17.3713235294118 41.3333333333333 0 0 675.78129395218 659.928201634877 656.442441054092 53.619972260749 46.7506811989101 52.4669479606188 709.9 50 705.2 52 682.7 48 698.4 40 696 44 673.6 41 698.5 48 693.3 54 674.4 52 701.2 61 681.6 51 681.1 66 687.4 57 664.2 42 670.9 65 679.2 67 668.5 61 664.2 68 669.3 65 640.7 42 647.6 58 649.9 61 610.4 35 629.9 53 617.3 50 598 48 606.7 48 566.6 35 554.9 32 587.2 48 +4068759 SAN LUIS OBISPO LUCIA MAR UNIFIED 38.0746712736347 1.53803131991051 1.16517524235645 30.2013422818792 8.93203883495146 13.4831597222222 55684.2582524272 3887.0884601044 21.2192704203014 25.9036144578313 0 0 668.336747668833 660.265566037736 653.880173742469 57.6306571388539 56.7943951165372 54.3489686352077 707.1 47 704.4 51 686.4 52 702.3 44 699.7 49 680.5 48 699.2 49 700.5 63 678.3 57 705.7 65 694 63 679 64 687.6 58 682.6 61 669.8 64 674.2 62 673.1 65 657.9 62 659.8 56 651.7 55 648.7 59 644 55 625.2 50 634.1 56 616.7 50 599.2 50 609.7 51 590.3 55 581.7 59 600.4 61 +4075457 SAN LUIS OBISPO PASO ROBLES JUSD 36.8269067436725 1.33048620236531 3.87647831800263 27.1846254927727 5.80204778156997 14.2278425655977 59653.0341296928 4756.44152431012 22.2814653608995 39.8148148148148 0 0 660.040743405276 650.914003759399 646.067205208585 49.2531950807813 47.344219924812 45.636690647482 705.3 45 700.3 48 683.6 49 701.2 44 697.8 50 679.4 47 694.3 44 694.7 57 676 55 695 55 681.4 51 668 54 677.5 48 672.1 50 659.2 53 662.2 50 656.8 50 645.3 49 649.2 46 638.8 43 636.4 46 633.6 46 610.3 38 625.9 50 603.8 41 589.8 43 599.7 43 566 38 561 42 583.4 46 +4068809 SAN LUIS OBISPO SAN LUIS COASTAL UNIFIED 22.4657866053046 2.34638169357649 2.0908351724939 12.6147055407132 5.32687651331719 16.19522417154 64397.6755447942 4933.22348704844 21.4332659251769 25.635593220339 5.26315789473684 0 683.558106585091 673.451621621622 664.669967373573 66.636541598695 67.3852146263911 66.9017871518274 725.5 66 722 69 698.4 65 718.1 61 712.2 62 690.7 59 710.2 59 711.6 72 688.4 66 707.2 66 695.1 64 683.8 68 693.4 63 689.3 67 674.7 69 685.6 73 686.4 76 667.8 71 678.7 73 661.7 65 660.1 70 664.6 73 642.7 67 646.1 67 638.3 68 612.8 63 622.5 63 605.6 68 591.8 68 606.8 68 +4068841 SAN LUIS OBISPO TEMPLETON UNIFIED 17.9978118161926 .617828773168579 1.41218005295675 9.22330097087379 4.58715596330275 11.0872950819672 50372.4678899083 3667.01941747573 19.3939393939394 35.9550561797753 0 0 673.663157894737 660.333891213389 658.17453565009 60.5056920311564 54.7489539748954 57.9606775559589 709.6 50 697.2 44 682.5 48 708.7 51 699.4 48 680.4 48 706 55 700.4 63 680 58 701.5 61 684.9 54 678.4 64 691.1 61 685.3 63 672.2 67 683.5 71 670.3 62 665.1 69 662.6 59 650.1 54 657.7 68 655.3 66 628.5 53 647.6 68 615.7 49 595.5 46 611.8 54 593.7 59 583.1 61 599.9 62 +4168890 SAN MATEO CABRILLO UNIFIED 19.3020719738277 2.1085111853947 .539984571869375 25.0964258164052 8.29015544041451 13.3228971962617 51768.2660621762 4138.21131653381 21.0093252879868 48.8095238095238 0 0 670.851140684411 658.191318803103 654.942991356633 58.6384817737693 54.8485408200961 56.5441064638783 717.4 58 716.1 63 695.1 61 700.3 42 698.2 47 677.9 45 705.5 55 700.2 62 685.8 63 701.8 61 684.9 53 682.4 67 693.7 64 684.3 62 670.4 65 673.8 61 665 57 654.8 59 659.7 56 652.6 56 647.2 57 649 60 624.5 49 638.8 60 621.9 54 603.7 54 611.6 53 583.7 49 569 46 591.1 52 +4169070 SAN MATEO SOUTH SAN FRANCISCO UNIFIED 31.9148936170213 8.75331564986738 4.82365654779448 34.7971313488555 11.8993135011442 17.1086138613861 57489.2173455378 3823.83839375184 23.5231970601746 38.9544688026981 0 0 657.938155779629 651.254546756409 645.310129153969 49.4857059933246 48.261205785479 44.5271079935701 699.2 38 699.5 46 681.2 47 697 39 701.6 50 680.4 48 692.1 41 693.5 55 679.2 57 683.6 43 675.7 44 658.8 44 674.8 45 670 47 657.1 50 662.1 49 658.5 51 647.2 51 653.9 50 646.9 50 643.9 54 633.1 45 618.6 43 626 49 609.2 44 604.1 54 606.4 48 584.1 50 565.9 43 586.6 47 +4269146 SANTA BARBARA CARPINTERIA UNIFIED 39.2772711921648 1.38530927835052 .966494845360825 54.3814432989691 21.3235294117647 14.4977419354839 60262.9117647059 4158.06894329897 22.2132943754565 33.3333333333333 0 0 657.955866983373 652.616290842154 647.817581395349 50.293023255814 47.7096180395766 42.8688836104513 696.3 35 694.9 40 679 44 692.5 34 692.8 41 679.9 47 679.9 30 690.1 51 671.4 49 689.5 49 679.8 48 671.4 56 669.7 40 668 45 658.4 50 658.7 46 654.8 47 646.3 49 652.3 48 644.3 47 640.7 51 643.5 55 629.1 54 635.9 58 601.5 37 597.9 48 596 39 587.3 53 577.1 54 596.5 57 +4269229 SANTA BARBARA LOMPOC UNIFIED 35.7063300538333 4.65199180108725 8.92077354959451 32.8669459049996 9.0573012939002 17.0831674958541 53117.7153419593 4325.81900008912 21.6737698566447 42.914979757085 0 13.3333333333333 652.84358281893 640.795576875156 636.877135995956 42.2170121334682 39.9328432594069 41.5646862139918 700.8 40 702.2 48 679.7 45 693.2 35 692.1 40 669.9 37 683.4 33 687.1 49 666.5 44 688.6 48 673.9 42 661.6 46 679.5 50 665.9 43 657.5 50 660.6 48 650.1 42 641.2 44 648.2 44 637.4 40 633.7 44 631.3 43 611.2 36 619.5 43 603.4 38 584.3 35 594.3 37 569.2 37 551 29 575.5 34 +4369484 SANTA CLARA GILROY UNIFIED 44.5420326223338 2.30897936419409 1.5281650864473 62.9447852760736 22.3719676549865 15.4896551724138 62890.8086253369 4312.72950362521 24.507874015748 20.1900237529691 0 15.3846153846154 650.112128626354 639.755846077948 637.302743902439 42.6212737127371 39.8852162473277 39.2345333799371 696.2 35 697.8 43 677.1 42 689.4 31 693 41 669.1 36 684.7 34 690.3 52 670.3 48 682.4 42 668.5 37 657.6 42 668.8 39 660.9 38 650.9 43 660.5 48 658.6 51 647.7 51 644.2 40 634.9 37 633.4 43 626.8 39 609 34 617.6 41 599.2 35 582.8 34 594.6 37 579.7 46 559.4 36 583.3 42 +4373387 SANTA CLARA MILPITAS UNIFIED 28.8935721812434 31.4598833701991 5.95214156444802 18.4295194047858 20.2272727272727 14.806374501992 60774.9181818182 4090.01588578323 22.1197740112994 26.7206477732794 0 0 662.136157941437 661.338135961734 648.919647918842 53.8408175443831 58.4918104073054 49.6240757172434 696.3 36 706.9 54 680.7 46 693.2 35 702.6 51 675.2 42 688.1 38 697.6 59 674.4 52 696.1 55 688.9 57 669.2 54 690.5 60 691.5 68 672.6 67 672.2 60 674.4 66 660.3 64 658 54 656.5 60 649 59 641.3 53 630.7 55 633.3 56 613.6 47 605.7 56 607.3 49 588.8 54 581.3 58 587.2 48 +4369583 SANTA CLARA MORGAN HILL UNIFIED 23.6490993995997 5.23565792279804 2.39923224568138 33.4612923864363 11.25 17.7960850111857 60283.845 4361.51503518874 23.7371134020619 37.8048780487805 0 0 666.216356483583 659.320322915124 649.390683043739 52.9802276812463 55.3657235965042 51.7793917385384 707.5 47 710.7 58 684.1 50 696.6 38 703.4 52 673.1 40 701 50 707 68 678.9 57 698.3 58 688.3 57 673.5 58 684.9 55 677.9 56 663.2 57 668.9 57 668.2 59 651.2 55 653.9 50 645.1 48 641.2 51 644.9 56 625.6 50 632.6 55 618 51 604.1 54 610.1 52 588.8 54 573.5 51 593 53 +4369641 SANTA CLARA PALO ALTO UNIFIED 7.89443488238669 17.3890007417612 4.91681678499523 6.8877821341528 13.528336380256 14.1157512116317 66182.0091407678 5970.82324891385 18.7476866132017 73.3752620545074 0 0 698.751069604087 698.750649145028 682.214690885915 81.8879859783302 86.2845155161495 81.1083971902937 739.9 79 754.8 89 719.9 82 730.8 74 745.8 86 710.1 76 729.9 77 743.6 90 708.6 81 724.1 80 731 87 706.7 85 714.6 81 719.1 87 695.7 85 702 85 711.2 89 681 81 697.4 86 694.1 88 682.4 85 686 86 662.7 82 663.7 80 660.4 82 639.3 82 647.4 82 622.7 80 613.5 84 624.1 82 +4369666 SANTA CLARA SAN JOSE UNIFIED 42.8078358208955 12.2450216712636 3.27039068893402 49.4104810111236 22.3695111847556 16.5772932330827 80565.0364540182 5038.39963022459 28.2108543235523 38.1075826312378 0 0 655.468175303962 647.038183888913 641.538434616608 45.6173810281351 45.3295807963555 42.4182885673339 704.3 44 706.1 52 685 50 694.2 36 699 47 675.4 42 688.9 38 695.1 56 673.3 51 687.1 47 680 48 662.9 47 674 44 669.5 46 657.1 49 657.6 45 653.9 46 641.8 44 649.3 45 640.3 43 639.3 49 631.9 44 614.4 39 623.1 46 606.8 41 590.8 41 600.2 42 574 40 561.4 39 580 38 +4369674 SANTA CLARA SANTA CLARA UNIFIED 40.20545013554 18.3941204753074 4.34095748334364 25.2009066556769 11.52 15.6099728629579 65468.92 4317.31904663782 23.7628014535844 29.5511221945137 0 0 655.844454600853 649.07458432304 643.911948427254 51.5725241747249 50.1679532858274 45.9975624619135 696.6 36 701.6 49 680.5 46 690.4 33 696.9 49 673.8 41 686 36 691.1 53 676.8 56 689.4 49 683.1 52 663.4 48 679.8 51 676.6 54 661.9 56 661.9 49 656.6 50 647.5 51 654.6 51 644.4 49 646.2 56 638.6 51 618.5 46 631.9 55 612.9 51 595.7 49 607.1 50 578.2 49 567.8 51 589.2 53 +4469799 SANTA CRUZ PAJARO VALLEY JOINT UNIFIED 56.3486693730266 1.20137602540355 .587456999206139 72.0137602540355 19.7166469893743 14.11421107628 59922.1286894923 4282.14601746494 22.5352977286679 26.647564469914 4 20 640.186193505742 639.3257624461 628.568499879217 32.5221837507046 37.3257546060368 28.6157151119557 690.3 30 690.3 35 668.8 33 682.8 25 689.1 37 660.8 28 677.9 28 682.3 43 661.3 39 676 36 668 36 653.8 38 660 31 660.2 37 645.9 37 644.4 31 647.1 39 633.4 35 631.4 28 634.5 37 622.7 33 611.3 26 608.3 33 605.8 30 585 24 586.2 37 583.8 27 557.8 27 561.9 39 567.2 25 +4469807 SANTA CRUZ SAN LORENZO VALLEY UNIFIED 14.506396331161 1.65905265688868 1.22625631161337 4.08752103871123 3.33333333333333 17.2891625615764 58616.2833333333 4262.08776148113 24.3335290663535 60.5809128630705 14.2857142857143 0 676.616056910569 662.310665329321 658.5132996633 60.0437710437711 55.7355399531929 59.2906504065041 714.7 55 706.8 54 689.2 55 704.1 46 696.8 46 679.9 47 701 50 698.3 61 681.6 59 707 66 687.2 56 681.2 66 692.1 62 666.9 45 673.7 67 680.7 68 676.7 68 661 65 672.6 68 659.9 63 657.3 67 654.8 65 627 51 638.8 61 627.1 59 611 61 612.5 54 590.3 55 573.8 51 597 59 +4569989 SHASTA FALL RIVER JOINT UNIFIED 39.608938547486 .747126436781609 .28735632183908 8.9080459770115 4.3010752688172 16.4912037037037 56131.9429032258 4741.87406896552 18.7363834422658 28.8288288288288 0 0 662.603135313531 651.091162420382 643.225383993533 44.8334680679062 45.3734076433121 45.9117161716172 701 40 700.6 47 675.5 41 696.1 37 693 42 667.9 35 690 39 690.6 52 667.7 46 692.3 52 674.4 43 667.2 52 673.7 44 665.6 43 650.2 42 659.4 47 664.9 57 646.5 50 658.9 55 643.7 47 637.2 47 647.9 59 621.4 46 633 55 611.3 45 584.7 36 598.3 40 577.1 44 564.2 41 579.8 39 +4575267 SHASTA GATEWAY UNIFIED 49.3771234428086 .84053233714686 1.07401354190988 4.80971281811814 4.09090909090909 14.5858299595142 55396.6149090909 4509.5146509456 20.7381288199342 34.4827586206897 0 0 653.934816312774 639.410946555055 634.704659498208 38.2245030954708 35.9034127495171 38.7081226828446 686.8 27 689.2 34 664.7 30 689.2 31 694.1 41 663.2 30 687.6 37 682.7 44 665.4 44 688.8 48 672.6 41 660.2 45 670 40 656.4 34 652.9 45 658.1 45 652 44 640.7 44 645 41 627.9 31 629 39 630.8 43 604.7 30 618.4 41 606 41 583.4 35 591.9 35 561.9 30 547.5 26 570.3 28 +4670177 SIERRA SIERRA-PLUMAS JOINT UNIFIED 32.1016166281755 1.63316582914573 .628140703517588 8.35427135678392 1.9607843137255 14.4036363636364 54122.0196078431 2908.31155778895 16.8888888888889 43.2432432432432 9.09090909090909 0 672.277259752617 658.577871939736 653.042403846154 54.8115384615385 52.5866290018832 55.6641294005709 705.5 45 694.5 41 680.2 45 707 49 697 46 680.6 47 697.2 47 690.7 53 675.4 54 706.7 65 692.3 61 678.7 63 688.6 59 676.7 55 662.8 55 673.1 61 662.3 55 653.7 57 662.3 58 652.3 55 648 58 644.7 56 627.2 52 637.4 59 625 57 604.6 54 613.3 55 590.3 56 574.4 52 592 54 +4870524 SOLANO BENICIA UNIFIED 11.443661971831 4.56211066324661 7.80505679736167 10.1502381824844 10.1626016260163 15.1756183745583 61419.337398374 4303.05734701356 22.2794428028704 40.4907975460123 0 0 681.573438639125 671.828107718202 664.123567802756 66.4998791394731 66.8773743688387 65.7105710814095 715.6 55 713.5 61 691.8 58 708.5 51 709.3 58 683.5 51 708.4 58 707.6 69 687.6 65 714.7 73 701.7 70 689.3 73 700.2 70 692.2 70 679 73 681.3 69 671.1 63 660.9 64 676.2 71 669.6 72 666.3 74 667.5 75 645.9 70 649 69 638.2 67 617 66 625.5 66 605.4 68 592.8 69 610.6 71 +4870532 SOLANO DIXON UNIFIED 40.8194233687405 1.3169195533925 1.77497852848554 39.965645576868 12.6436781609195 15.5133333333333 57074.224137931 4262.56283996565 20.0236966824645 39.6648044692738 0 16.6666666666667 655.642246903033 647.059762100082 639.990394295302 42.4987416107383 43.0689089417555 40.5057667663392 696.4 36 699.5 46 672.7 37 689.9 32 695.7 44 664 31 687 36 687.6 49 664.3 42 679.2 39 674.1 43 657 41 670.8 41 670.6 48 654.9 47 661.6 49 655.5 47 647.6 51 647.9 44 634.6 37 634.3 44 632.9 45 613.6 38 623.5 46 607.8 42 589 40 600.1 42 574.8 41 561 39 583.5 42 +4870540 SOLANO FAIRFIELD-SUISUN UNIFIED 28.1108624220201 6.54867256637168 21.0107126222636 18.0158360503027 13.2415254237288 15.9655090390105 59268.9862288136 3955.48863530508 22.8889128791968 26.1160714285714 0 34.6153846153846 653.017221528645 645.545050167224 640.046989921003 46.3172160174339 46.2223411371238 43.3465806630601 696.2 36 696.8 44 676.9 42 691.1 33 695.3 47 672.1 40 686.4 37 686.7 48 671.9 51 687.3 47 678.3 47 662.4 47 673.7 45 668.6 47 658.6 52 660.7 48 657.3 50 645.1 49 651.9 49 640.9 46 637.2 47 634.1 47 619.1 48 624.3 49 604.4 43 586.7 41 596.9 41 570.5 43 561.1 44 580 43 +4870565 SOLANO TRAVIS UNIFIED 22.7124538143882 2.52947481243301 15.3483386923901 10.3965702036442 18.2203389830508 15.1208487084871 62353.6016949153 4900.85551982851 20.2287440656021 66.3101604278075 0 0 666.224245224892 651.059872804361 649.958239070621 55.8654845612962 50.3058752271351 55.0418977202711 705.8 46 700.1 46 685 50 698.3 40 695 44 671.8 39 701 50 697.9 60 675.7 54 697.6 57 681.6 50 665.7 50 690.7 61 679.7 58 665.2 59 672 60 661.9 54 655.3 59 662.8 59 644.2 47 653.5 64 649.3 60 624.4 49 641.7 63 620.9 54 596.9 48 613.8 55 592.9 58 569 46 598.4 60 +4870573 SOLANO VACAVILLE UNIFIED 23.0192416525184 2.82936052400567 8.37328651495712 16.7465730299142 9.12981455064194 14.6227443609023 53901.8758915835 4110.53933418867 22.3814655172414 40.2614379084967 5.26315789473684 10.5263157894737 663.389330329715 654.597166998012 649.498064321 52.7524952112108 50.7088469184891 49.3357567069425 706 46 704.7 52 685.1 51 698.1 40 700.1 49 676.1 43 695.9 45 696.9 59 676.4 54 694.6 54 680.2 49 665.8 51 678.7 49 668.6 46 659.2 52 667.8 55 666.9 59 656.3 60 658.2 54 647.8 51 647.5 58 643.1 54 621.2 46 633.9 56 617.5 51 600.4 51 610.9 53 577.3 44 567.5 45 589.1 49 +4870581 SOLANO VALLEJO CITY UNIFIED 35.4608814127758 3.83958186752437 35.2145944316012 15.5493014373304 23.8767650834403 16.6808544303798 68338.8023106547 4364.92657553523 25.6707959936742 20.0227531285552 0 56 644.687722460014 638.51153312395 632.704359794658 38.5993601666543 38.9284931706961 34.8631073064504 693.7 33 693.7 40 675.2 40 687.1 29 691.8 41 666.1 33 680.4 31 687 48 665.6 44 677.6 37 668.4 37 653.5 38 661.2 32 656.4 34 648 40 654.3 41 654.6 47 639.4 43 640.5 38 631.1 35 629.4 40 623.1 37 609 37 616.1 41 594.9 34 581.4 35 588.8 33 563.3 36 555.2 37 573 35 +4970656 SONOMA CLOVERDALE UNIFIED 39.7086763774541 .429447852760736 .674846625766871 25.0920245398773 6.32911392405063 15.6294117647059 56854.0379746836 3942.01042944785 20.4216073781291 43.8356164383562 0 0 657.034640522876 649.894646098004 639.369549218031 43.8408463661454 47.7223230490018 44.2362278244631 708.5 48 702.7 50 677 42 703.2 45 696 45 674.8 42 693.4 42 696.2 58 673.4 52 689.4 49 678.9 48 664.6 50 679.8 49 671.4 49 653.2 45 663.9 51 674.4 66 648.5 52 644.5 41 641.3 44 628.6 39 635.8 48 613.7 38 624.9 48 600.9 36 588.5 39 592.7 35 566.5 34 562.9 40 576.7 35 +4973882 SONOMA COTATI-ROHNERT PARK UNIFIED 19.6758386732002 3.86396879570941 3.64456362749878 12.8473915163335 5.99455040871935 15.7177884615385 59484.6839237057 4081.60153583618 22.2929762230118 14.4508670520231 0 0 663.548165536429 651.999588053553 648.170283428969 53.6576247609112 50.8764160659114 51.4564423578508 705.4 45 704.9 52 687.3 53 698.6 40 699.4 48 677.2 44 694.3 44 694.2 56 676.1 54 698.3 57 684.1 53 672.6 58 688.9 59 676.1 54 667.8 61 666.4 54 664.4 57 649.7 53 661.9 58 652.3 56 650.5 61 646.2 57 623 47 632.8 55 614.4 48 594.8 46 604.6 47 581.1 47 562.6 40 587.9 48 +4975390 SONOMA HEALDSBURG UNIFIED 21.4638665843113 .878378378378378 .439189189189189 34.0540540540541 14.2857142857143 16.4645251396648 56837.3506493507 4968.96756756757 20.9132720105125 46.484375 0 0 667.173062015504 657.896311858077 648.388740458015 46.6307251908397 48.2278244631186 45.6545542635659 701.9 42 698.7 46 682.4 48 693.4 36 696.6 48 675 43 689.7 40 691.1 53 668.2 47 693.8 54 690 59 665.6 51 683.8 55 670.5 49 662.4 56 664.9 53 658.1 52 646.5 50 656.2 53 645.6 50 637.8 48 635 47 616.1 44 622.4 46 598.7 37 584.7 38 593.2 37 571.2 42 557.4 38 573.5 35 +4970953 SONOMA SONOMA VALLEY UNIFIED 30.7603241991509 1.92343956251179 .716575523288705 22.4024137280784 6.15384615384616 15.8586092715232 54122.3423076923 4170.56835753347 21.1476725521669 23.3716475095785 11.1111111111111 11.1111111111111 664.450211416491 653.566589625064 648.412269300754 52.0428905640759 50.2734976887519 50.3742071881607 708.2 48 706.5 53 684 49 700.7 43 697.5 46 677.4 44 700 49 698.2 60 678.3 56 694.3 54 685.6 54 671.9 57 682.4 52 675.5 54 664.9 59 667.8 55 666 58 653.7 58 661.1 57 649.1 53 646.2 56 644.5 56 616.9 41 629.7 52 609 43 591.9 43 599.6 41 577.9 44 564.1 41 587 46 +4975358 SONOMA WINDSOR UNIFIED 33.5580524344569 1.37909898866074 .858106037388906 26.5093472264787 17.5675675675676 11.0236363636364 50731.472972973 3834.78639288998 21.0230547550432 0 0 0 654.652495621716 641.131451275617 638.921030756442 48.0448877805486 45.0380593893768 46.2504378283713 703.4 43 692.3 38 682.7 48 697.6 39 694.9 44 675.6 43 696.2 45 692.8 54 676.9 55 695.5 55 678.5 47 668.7 54 680.6 50 670 48 659.7 53 663.9 51 660.4 53 644.8 48 649.6 46 636.3 39 636.4 46 631.2 43 617 41 623.4 46 608.4 42 592.7 43 599.2 41 578.4 45 566.4 43 588.1 48 +5071308 STANILAUS TURLOCK UNION 42.6006966151648 4.70202296336796 1.36686714051394 32.5587752870421 9.22131147540983 14.9641577060932 59645.2069672131 3932.406689 24.1786317567568 21.40625 0 50 653.922410473623 649.459038583175 642.323309224718 44.8226113437381 45.3544592030361 39.6056988833269 699.6 39 698.2 44 682.7 48 690.7 32 692.8 41 674.5 41 684 34 686 47 669.2 47 687.1 46 681.2 50 662.8 47 669.3 39 668.3 45 653.1 46 657.8 45 659.4 52 645 48 642.3 39 637.8 41 635.1 45 630.6 43 616.2 42 621.3 45 601.2 38 591.4 44 596.5 39 573.1 42 567.7 47 581.6 42 +5071043 STANISLAUS CERES UNIFIED 51.2052189296771 4.55034423407917 3.4315834767642 39.2641996557659 10.0490196078431 13.2773218142549 56234.306372549 3767.50398020654 23.1700146986771 12.967032967033 0 41.6666666666667 641.917007005515 635.964696577509 629.076138701146 33.683661475169 34.3288754673569 30.8339543896259 687.6 27 688.2 34 668.5 33 681.2 24 685.7 33 659.1 26 677.2 28 680.9 42 661.3 39 674.6 34 664.5 33 649.9 34 662.9 33 656.6 34 646 37 651 38 648.3 41 637.7 40 637.6 34 629.7 32 625.6 36 618.5 32 607.1 32 613.4 37 590.1 28 579.4 31 582.2 26 560.3 29 554.8 32 571.1 29 +5071068 STANISLAUS DENAIR UNIFIED 42.1307506053269 .783085356303837 .234925606891151 25.920125293657 1.72413793103449 13.381746031746 49550.7413793104 3282.38919342208 21.3066202090592 29.8701298701299 0 0 658.764412416851 647.720043103448 644.830065359477 47.6655773420479 41.9946120689655 43.8968957871397 692.4 32 688.9 35 672.3 37 683.3 25 678 26 664.3 32 683.1 33 680.6 42 668.5 47 692.2 51 679.4 48 664.7 50 670.6 41 665.1 43 650.1 42 658.6 46 649.5 42 649.2 53 654.6 51 637.5 40 639.2 50 634 46 605.9 31 623.3 46 616.3 50 597.1 48 614.6 56 592.6 58 584 61 596.5 58 +5073601 STANISLAUS NEWMAN-CROWS LANDING UNIFIED 53.904282115869 1.22137404580153 1.47582697201018 53.4351145038168 14.7368421052632 12.7085714285714 51297.3684210526 4109.91704834606 21.6866158868335 28.8659793814433 0 16.6666666666667 646.867903103709 644.301789709172 636.501729323308 40.2315789473684 40.7166293810589 34.1241483724451 688.8 28 695.2 41 671.8 37 681.7 24 687.2 35 662.8 30 673.1 24 679 40 660.1 38 679.7 39 663.2 32 657.3 43 666.6 37 658 35 651.9 44 646.6 33 648.6 41 634.8 37 632.7 30 630 33 623.6 34 621.8 35 615.2 40 616.1 39 596.2 33 596.7 47 599.4 41 596.1 61 588.6 65 598.9 61 +5071217 STANISLAUS PATTERSON JOINT UNIFIED 55.0072568940494 .67396798652064 1.23560797528784 64.588598708228 18.1208053691275 13.3273255813954 55535.1476510067 4008.41449031171 24.0040927694407 13.0718954248366 0 0 645.663875278396 636.918853820598 634.555903083701 37.1092511013216 34.749584717608 31.6178173719376 686.7 26 689.7 35 670 35 681.7 24 683.5 31 659.6 27 676.1 27 679.7 41 664 42 682.5 42 669.5 38 655 40 669.9 40 662.5 40 654.3 47 646.1 33 642.2 35 637.1 39 636.5 33 625 28 632.5 42 612.3 27 603 29 613.3 37 592.1 30 574.3 27 582.8 27 566.8 35 565.5 43 575.6 34 +5171399 SUTTER LIVE OAK UNIFIED 72.2976963969285 12.3235613463626 .597176981541802 45.3311617806732 6.52173913043478 12.3826732673267 52194.3369565217 4350.79261672096 21.4437869822485 17.7215189873418 0 0 640.02026295437 633.549270072993 626.57022556391 31.9917293233083 32.7766423357664 29.245939675174 686.9 27 688.7 34 663.4 29 682.6 25 687.5 36 657.9 26 669.9 22 677.1 38 650.6 29 673.9 34 664.9 34 651.3 36 657.5 28 655.3 33 642.3 34 643.2 30 640.4 33 630.6 33 634.7 32 619.8 24 623.9 34 624.9 38 608.9 34 619.4 42 585.6 24 580 32 580.9 25 565.4 33 553.5 31 573.2 32 +5171464 SUTTER YUBA CITY UNIFIED 49.2564175428626 13.2831159287158 2.93955539224692 25.5282013595444 14.1078838174274 15.0974452554745 57777.5580912863 4165.93174719824 23.0617071597506 24.2424242424242 0 25 646.224358074926 636.887817258883 634.064643050297 38.9446998377501 35.8145872294951 34.6318226462747 688.3 28 697.8 44 674.6 39 685.1 27 692.1 40 666.9 34 681.6 32 688.3 50 669.3 47 683.9 44 674.4 43 662.3 47 668.1 39 658.2 35 652.9 46 650.8 38 646.1 39 636.1 39 639.8 36 625.2 28 627.2 37 622.3 35 604.2 30 615.4 39 594.3 32 573.7 27 587.5 31 562.3 32 548.9 28 572.1 31 +5271498 TAHAMA CORNING UNION 49.1590749824807 .876270592358921 1.89274447949527 29.7581493165089 3.59712230215827 13.2433962264151 55372.4604316547 3941.38696109359 20.9110787172012 36.4238410596026 0 0 651.470603813559 639.559671805072 634.103220936084 36.3935581278309 34.4878170064644 35.4078389830508 698.1 37 694.3 40 673 38 684.8 27 689.4 37 662.6 30 681.6 32 684.4 46 665.8 44 680.9 40 670.8 39 654 39 660 31 651 28 642.2 33 651.4 38 641.9 34 635.3 38 639.6 36 626.1 29 620 30 627.9 40 600.6 27 613.7 37 600 36 577.1 29 590.3 33 571 38 557.1 35 581.9 41 +5271571 TEHAMA LOS MOLINOS UNIFIED 51.2931034482759 .142247510668563 .568990042674253 32.2901849217639 2.56410256410257 15.8122222222222 53216.6153846154 5045.57610241821 19.6438356164384 34.2105263157895 0 0 648.061303462322 639.214003944773 634.328427419355 33.5907258064516 31.3510848126233 30.3401221995927 683.6 24 686.5 32 662.8 28 686.3 28 686.2 34 664.4 31 676.2 27 684.1 45 664.6 43 685 44 672.9 42 656.7 41 656.6 28 650.8 28 649.3 41 651.6 39 646 39 627.9 30 636 33 616.8 21 621.6 32 612.7 27 600.8 26 608.5 33 592.2 30 564.2 19 589 32 557.3 26 547.9 26 570.4 28 +5375028 TRINITY MOUNTAIN VALLEY UNIFIED 60.1459854014599 .480769230769231 0 5.12820512820513 5.55555555555556 16.1320512820513 63507.8333333333 6482.46955128205 17.9083094555874 42.4242424242424 0 0 662.37205882353 650.207582938389 644.749373433584 42.4912280701754 42.6255924170616 44.5490196078431 702.5 42 704.1 50 685 50 699.4 41 689.2 37 676.9 43 691.4 41 686.5 48 667.5 46 698.1 57 680.5 50 667.7 53 672.6 43 662.4 40 647.2 39 648.8 36 632.8 26 624.3 27 650 46 628.5 31 629.8 40 643 54 617.7 43 625.2 48 609.7 45 608.3 59 596.6 40 578.2 46 569 46 580.3 40 +5471860 TULARE CUTLER-OROSI JOINT UNIFIED 84.0990371389271 .562851782363978 .241222192441705 90.7263468239078 18.7878787878788 14.2173913043478 58391.1082424242 3952.91040471723 22.7518427518428 8.37004405286344 0 0 625.407986243791 629.289962962963 619.331384383252 25.2493398717465 28.1814814814815 18.533053114253 677.3 19 678.9 24 661.7 27 668.2 14 677 24 648.9 18 663.6 18 673.9 35 650.4 29 661.9 24 667.6 36 649.1 34 648 21 651.6 29 639.9 31 631.9 21 637.1 30 621.6 24 614.4 16 621.7 25 611.2 23 599.6 18 595.7 23 599.2 25 571.2 15 578 30 577.7 23 545.9 19 546.6 25 559.7 19 +5471878 TULARE DINUBA UNION 74.5744216499345 .895583146753511 .244249949114594 80.4600040708325 15.9817351598174 12.970656637 53304.9005022831 3688.74829025036 22.9647513278609 16.4658634538153 0 0 636.254840613932 636.677197488584 626.026167956435 29.743766122098 32.8926940639269 24.8474025974026 682.8 23 686.7 32 663.8 29 671.7 17 681.4 29 651.5 20 668.3 21 676.5 37 653.9 32 671.8 32 666.6 35 647.9 33 652.7 25 657.3 34 643 34 648.6 35 653.2 45 637.7 40 627.9 26 628.1 31 620 30 612.1 26 605.4 31 608.8 33 577.9 19 571.6 24 576.4 22 557.3 27 554.8 32 569.1 27 +5475325 TULARE FARMERSVILLE UNIFIED 92.3344947735192 .933552992861065 .109829763866008 83.0313014827018 17.1052631578947 14.402380952381 61350.2075 3792.45582646897 22.9189189189189 0 0 100 611.61476793249 605.792740046838 600.900717131474 15.8725099601594 16.3692427790788 13.3316455696203 665.2 13 676 23 643.7 15 656.9 14 664.4 25 643.7 23 651.1 16 653.8 24 631.2 19 644 18 641.1 20 630.2 22 622.6 14 621.1 17 612.8 17 609.2 13 605.1 13 597.8 14 592.6 14 577.6 11 586.3 17 558.4 9 544.6 9 559.5 11 530 10 526.7 12 544.8 9 +5471993 TULARE LINDSAY UNIFIED 76.580373269115 1.72117039586919 .057372346528973 83.7636259323006 23.6842105263158 13.2849431818182 58362.7059868421 4115.27855708549 22.6187335092348 27.4285714285714 0 0 640.388823181549 640.34366359447 626.193461762989 26.1938120256859 30.7523041474654 23.0821998817268 685.3 25 684.6 30 663.6 29 672.6 17 682.5 30 650.2 19 669.4 22 678.4 39 655.6 34 664.8 26 655.1 25 637.4 23 645.7 19 645.9 24 631.3 23 633.6 22 634.2 28 621 24 628.3 26 633.3 36 620.6 31 608 24 598.6 25 602.4 28 584.7 24 583.3 34 580.5 25 559.8 30 568 45 570.9 29 +5472256 TULARE VISALIA UNIFIED 44.8332783096732 7.62122822798266 1.95437075803418 43.1351704963611 12.7111111111111 14.4732521602514 58322.98376 4057.25547877995 22.3127332301811 35.9173126614987 3.125 28.125 648.229390179976 640.968154273093 635.425015825517 38.9894688381194 37.4061278812935 35.2702545285107 694.4 34 695.9 41 673.8 39 689.7 32 693.1 41 667.4 34 682.5 32 685.3 46 667 45 684.5 44 667.9 36 660.4 45 668.3 39 660.6 38 653.8 46 656.5 44 651.9 44 640.5 43 638.5 35 629.5 32 626.5 37 619.3 32 603.9 29 611.6 35 590.9 28 581.3 33 588.5 32 564.4 32 557.7 35 575.7 34 +5472272 TULARE WOODLAKE UNION 72.663139329806 1.19250425894378 .298126064735946 79.2589437819421 13.1578947368421 14.8140625 58001.3071929825 4081.73411839864 21.1060329067642 36.1344537815126 0 0 640.209791122715 631.617446270544 627.961022364217 29.2447284345048 25.3400758533502 24.7630548302872 694.1 33 686.9 32 671 36 673.4 18 679.3 26 654.2 22 673.9 25 675.1 36 656.5 35 674.5 34 658.8 28 650.5 35 651.7 24 646.7 25 641.1 32 639.1 27 637.9 31 636.2 39 618.8 19 606.7 14 609.1 21 606.5 22 588.7 18 601.9 27 581.1 22 567.3 21 577.3 23 556 26 538.7 19 562.1 21 +5575184 TUOLUMNE BIG OAK FLAT-GROVELAND UNIFIED 36.7164179104478 .427960057061341 .855920114122682 4.70756062767475 4.65116279069767 13.268085106383 48160.4651162791 4666.56062767475 18.4266666666667 70.2702702702703 0 0 670.61387283237 659.356621880998 649.060931174089 48.2085020242915 47.8541266794626 49.4836223506744 701.6 41 694.6 41 679.9 45 694.7 36 687.4 35 670.5 38 684.2 34 683.5 45 659.2 38 702.6 62 691.7 59 667.1 51 682.2 52 670.3 48 667.7 62 656.5 43 645.5 38 642.1 45 661.6 58 656.3 60 648 59 650.7 61 629.5 54 634 56 619.6 53 597.4 48 597.5 40 610.5 72 587.7 65 593.5 56 +5673759 VENTURA CONEJO VALLEY UNIFIED 12.3270160618018 5.66135375698613 1.48519975160422 14.5311529703995 5.4054054054054 15.7322185061316 62750.2407862408 4265.1333057338 23.810318275154 41.1663807890223 0 0 682.02413435621 677.544326362702 667.723709777441 69.9877351340178 71.6343503599589 66.211486626581 721.7 62 725.9 72 700.8 67 715.4 58 717.1 66 695.7 63 711 60 716.7 77 691.1 68 713.5 72 708 74 689.6 73 702.2 71 699.3 75 682.8 76 684.1 71 688.9 78 671.2 74 670.9 67 666 69 660.3 70 660.1 69 640.4 65 648 69 635.5 66 620.5 69 628.3 68 604.9 67 595 71 610.3 72 +5672454 VENTURA FILLMORE UNIFIED 51.8065433854908 .547195622435021 .437756497948016 76.9083447332421 15.527950310559 15.024043715847 56925.9751552795 3897.07879616963 23.4847501622323 30.6010928961749 0 16.6666666666667 635.765689381933 628.433169996231 624.119392073875 28.9003462870335 26.434602336977 24.655705229794 684.6 25 680.1 26 665.4 30 678.8 22 677 24 653 22 663.3 17 667.6 29 649.8 29 670.7 31 659.4 29 644.4 29 654.5 26 648.5 26 639.9 31 644.6 32 637.2 30 637.1 39 626.9 25 619.8 23 621.2 31 609.2 24 593.1 21 603.7 29 585.1 24 574.7 27 578.9 24 551.2 22 549.7 28 565.3 24 +5673940 VENTURA MOORPARK UNIFIED 23.4552907241536 3.86164745103487 1.81969718016391 29.7819141547437 10.3658536585366 10.2872311827957 54402.9817073171 4155.08362272538 21.6525556600815 21.1409395973154 0 0 661.607069359756 652.657776530039 650.1753724307 56.6239864227796 52.736664795059 51.3782393292683 706.8 47 705.7 52 685.6 51 696 38 697.7 46 674.7 41 697.5 47 700.2 62 681.6 60 698.9 58 686 55 678.8 63 688.9 59 675.7 54 670.8 65 669.6 57 661.3 54 657.2 61 661.2 57 651.1 54 648.9 59 642.9 54 624.6 49 634.8 57 611.6 45 599.7 50 609.5 51 583.1 49 574.4 52 594.6 55 +5673874 VENTURA OAK PARK UNIFIED 1.24705089315807 6.06629143214509 1.00062539086929 2.34521575984991 4.72972972972973 12.2248502994012 55208.8378378378 4079.32739212008 20.988490182803 74.3421052631579 0 0 682.161725394897 670.000522088354 672.424153225806 76.9189516129032 69.8827309236948 70.796678817335 720.7 61 715.6 63 704.4 70 719.3 62 714.3 64 701.3 68 714.1 63 720.6 80 701.4 77 716.9 74 705.7 72 698.2 80 709.7 78 697.1 74 694.8 85 684.3 72 691.1 80 673.3 76 680.2 74 665.5 69 676.5 82 667.3 75 640.4 65 658.8 77 643.5 72 611.4 61 636.6 75 608.3 71 594.6 71 615.4 76 +5672520 VENTURA OJAI UNIFIED 23.2817037754114 1.36625119846596 .862895493767977 18.6481303930968 8.15217391304348 14.221359223301 56808.0108695652 3825.93600191755 22.8771733034212 35.546875 0 0 671.676079734219 660.902526246719 656.370046388337 58.2614314115308 55.6719160104987 55.8066445182724 705.2 45 707.1 54 682.6 48 706 48 708.6 58 682.5 50 697.6 47 699.6 62 674.6 53 708.4 67 696 65 684.8 69 691.6 61 680 58 671.2 65 678 66 670.2 62 663 67 663.6 59 645.4 48 653 63 649.3 60 626.3 51 637.7 59 617.1 50 598.3 49 609.8 51 583.4 49 570.5 48 591.1 51 +5672603 VENTURA SIMI VALLEY UNIFIED 15.6815375530144 5.52216571634047 1.67462885909488 17.4397698669543 6.91747572815534 15.0002183406114 57203.5497572816 3831.57374017568 23.2098614007114 37.6871880199667 0 0 667.169897138059 658.573027866352 653.045612437846 57.1392254359549 55.2870511576321 54.030788608215 710 50 711.9 58 689.4 55 704.6 47 703.9 53 682.6 50 700.5 50 701.6 63 682.9 61 698.4 58 684.7 54 672.7 58 688.3 58 676.4 54 668.2 62 672.3 60 671.6 63 656.4 60 660.6 57 652.1 55 650.4 61 645.7 57 627.6 52 634.7 57 621.8 55 602.4 53 613.9 55 583 49 571.4 49 592.4 53 +5672652 VENTURA VENTURA UNIFIED 38.1582125603865 2.90551227227462 2.35487083357741 33.4426805693867 9.94397759103642 15.3525516403402 56413.6120448179 3699.07023607287 24.8511202830189 34.3634116192831 0 22.2222222222222 663.126722987995 651.066852966466 648.690125295716 52.2804696398843 47.5606190885641 48.7767007558915 703.4 43 700.9 47 686.5 52 697.3 39 695.5 44 676.8 44 692.4 42 690.8 52 678.5 57 695.3 55 678.2 47 669.1 54 684.7 55 672.1 50 664.8 59 665.4 53 659.6 52 648.9 52 655.2 51 645.7 49 644.6 55 642.1 53 618.1 43 630.4 53 611.9 46 594 45 602.3 44 584.7 50 568.5 46 591.7 52 +5772678 YOLO DAVIS JOINT UNIFIED 17.8988326848249 10.4909560723514 3.37209302325581 12.7002583979328 14.9289099526066 14.4376582278481 49783.3127962085 4254.71718346253 20.062860136197 46.4203233256351 0 0 688.106229626947 680.838578317557 668.965033207683 71.1364207503141 74.2502232541525 71.5622962694676 722.8 64 728.6 74 697.7 64 718.2 61 724 71 693.5 61 718.6 67 728.8 84 697.9 74 714.9 73 711.8 77 691.7 74 703.3 72 700.2 76 684.8 77 695.3 81 698.3 84 673.2 76 683.6 77 671 74 668.6 76 672 78 645.7 69 651.3 71 644.8 73 617 66 629.9 69 605.7 68 589.9 67 605.1 67 +5772686 YOLO ESPARTO UNIFIED 49.235807860262 .779510022271715 1.67037861915368 43.7639198218263 4.16666666666666 11.3609090909091 50433.1666666667 5039.20267260579 19.5454545454545 27.0833333333333 0 0 640.121894409938 635.382379518072 625.547792998478 29.2648401826484 31.7394578313253 27.9472049689441 682.3 22 686.1 33 660.8 26 673.4 18 680.4 30 653.2 22 673.8 26 678.4 39 660 39 682.5 43 662 32 650.9 35 651.3 24 650.8 29 635.1 27 652.2 39 649.3 43 641.5 45 626.1 25 621.4 25 616.5 27 616.3 31 605.2 33 608.1 33 597.5 36 576.4 31 579.2 25 549.2 24 545.9 28 558.2 20 +5772694 YOLO WASHINGTON UNIFIED 62.2396784800877 13.8208597362562 3.95615687617743 32.1287891762288 15.884476534296 13.2708860759494 52881.3321299639 4324.17365987327 20.9871086556169 8 0 18.1818181818182 639.1435538262 633.124164397128 627.616834677419 32.3477822580645 31.2792770487745 27.7229571984436 686.6 26 693.3 38 668.6 33 682.4 25 688 35 661.6 29 675.2 26 677.4 38 661.5 40 676.5 36 665.4 34 652.1 37 659.5 30 653.6 31 642.7 34 638.4 26 637.7 30 627 29 626.6 24 620.5 24 620.8 31 615.3 29 600.1 26 609.9 34 589.8 27 578.6 30 585.5 29 559.5 29 552.1 30 570.2 28 +5772702 YOLO WINTERS JOINT UNIFIED 46.1618798955614 1.15057528764382 .80040020010005 45.6228114057029 13.3333333333333 11.8071428571429 48426.1523809524 3945.06903451726 19.8582995951417 53.7735849056604 0 0 650.807236842105 640.076315789474 634.960070175439 36.5312280701754 33.7548476454294 34.6834795321637 695.8 35 691.8 38 675.6 41 685.7 28 686.8 34 670.5 38 678.4 29 680.1 41 667.9 46 681.1 41 663.3 32 654.5 39 665.3 35 656.4 34 644.3 36 655 41 644.5 37 640.7 44 633.9 30 619.1 23 615.4 26 636.7 48 609.7 35 614.2 38 596.1 32 580.5 32 587.4 30 558.1 27 553 30 565.9 24 +5772710 YOLO WOODLAND JOINT UNIFIED 43.4143080008915 3.64856364017614 1.54120360662613 46.3199832249948 21.3776722090261 14.4046843177189 53796.1638954869 3845.48081358775 22.7088422081094 29.8924731182796 0 6.66666666666667 650.685780525502 642.281801889866 636.105199735887 41.0627269725982 40.8595633756924 38.3171904516572 694.7 34 701.1 47 674.4 39 689.2 31 696.2 44 668.7 36 687.9 37 692.5 54 671.3 49 681.7 41 670.2 39 658.5 43 669.1 39 660.8 38 653.4 46 655.4 42 650.2 43 641.4 44 646.4 43 634.6 37 630.8 41 629.1 41 609.4 34 617.7 41 598.3 34 585.6 37 591 34 572.1 39 562.9 40 578.3 37 +5872736 YUBA MARYSVILLE JOINT UNIFIED 70.6210416863598 20.4617205998422 2.98934490923441 17.423046566693 11.0328638497653 16.5641975308642 61705.6596244131 3970.9843133386 24.8864711447493 15.1428571428571 0 13.6363636363636 639.085190097259 631.172371396269 625.858513396716 30.7783059636992 30.1215375918598 28.466254052461 688.6 28 687.9 33 670.3 35 686.7 29 687.6 35 664 31 677.4 28 681.1 42 661.6 40 675.9 36 664.5 33 649.7 34 656.3 28 652.6 30 639.9 31 643.3 30 637.8 31 629.2 31 632.7 30 626.6 29 621.8 32 614.9 29 599.6 26 605.9 30 585.8 24 571.1 24 581.3 26 551.9 23 541.5 21 561.5 20 +5872751 YUBA WHEATLAND UNION 77.7482740308019 5.99889928453495 9.57622454595487 11.1172261970281 7.8740157480315 16.9187050359712 65099.5669291339 6913.39680792515 20.0325203252033 23.5294117647059 0 0 663.065659500291 648.575580736544 645.966781214204 52.1821305841924 48.9008498583569 52.2887855897734 706.7 46 699 46 683.1 49 701 43 703.5 53 678.3 45 694.1 43 699.9 62 676.9 55 694.7 54 676.2 45 666.7 52 690.7 61 675.3 53 671.1 66 669.9 57 664.4 57 651.2 55 655.3 51 643.6 47 638.3 48 647 58 619.6 44 632.6 55 619.2 52 590.2 41 603.9 46 587.6 53 566.7 44 589.2 50 diff --git a/statsmodels/datasets/star98/src/star98.names b/statsmodels/datasets/star98/src/star98.names new file mode 100644 index 0000000..5b26cb4 --- /dev/null +++ b/statsmodels/datasets/star98/src/star98.names @@ -0,0 +1,205 @@ + +18 variables and 303 cases + +Variable: CDS_CODE Type: Numeric + County District Code + +Variable: COUNTY Type: String + +Variable: DISTRICT Type: String + +Variable: LOWINC Type: Numeric + Percent Low Income Students + This variable is the sum of students + eligible for free or reduced lunch + programs divided by the sum of + students multiplied by 100. The + district level percentages were + aggregated from school level data + Source: The National Center for + Educational Statistics (NECS) + Common Core of Data site, + "http://nces.ed.gov/ccd/index.html" + +Variable: PERASIAN Type: Numeric + Percent Asian Students + This variable is the number of + Asian Students divided by the + the total number of students, + multiplied by 100. + Source: The California Department + of Education Educational Demographics + Unit site, file "ethdst97.exe" at + "http://www.cde.ca.gov/ftpbranch/retdiv/demo/newcbeds/" + +Variable: PERBLACK Type: Numeric + Percent Black Students + This variable is the number of + Black Students divided by the + the total number of students, + multiplied by 100. + Source: The California Department + of Education Educational Demographics + Unit site, file "ethdst97.exe" at + "http://www.cde.ca.gov/ftpbranch/retdiv/demo/newcbeds/" + +Variable: PERHISP Type: Numeric + Percent Hispanic Students + This variable is the number of + Hispanic Students divided by the + the total number of students, + multiplied by 100. + Source: The California Department + of Education Educational Demographics + Unit site, file "ethdst97.exe" at + "http://www.cde.ca.gov/ftpbranch/retdiv/demo/newcbeds/" + +Variable: PERMINTE Type: Numeric + Percent Minority Teachers + This variable is the number of + minority (American Indians, Asians, + Pacific Islanders, Filipinos, Hispanics + And Blacks) teachers divided by the + total number of teachers, then + multiplied by 100. + Source: The California Department + of Education Educational Demographics + Unit site, file "teaeth96.exe" at + "http://www.cde.ca.gov/ftpbranch/retdiv/demo/newcbeds/" + +Variable: AVYRSEXP Type: Numeric + Teachers' Experience + This variable is the sum of years in + educational service divided by the + sum of teachers. The district level + averages were aggregated from school + level data. + Source: The California Department + of Education Educational Demographics + Unit site, file "prcert96.exe" at + "http://www.cde.ca.gov/ftpbranch/retdiv/demo/newcbeds/" + +Variable: PTRATIO Type: Numeric + Class Size + This variable is enrollment divided + By full-time equivalent teachers. + Source: The California Department + of Education Educational Demographics + Unit site, file "cbeds96.exe" at + "http://www.cde.ca.gov/ftpbranch/retdiv/demo/newcbeds/" + +Variable: AVSAL Type: Numeric + Teacher Salary + This variable is the total salary budget, + including benefits, divided the number of + full-time teachers. + Source: School Business Services Division + http://www.cde.ca.gov/ftpbranch/sbsdiv/ +Variable: PERPSPEN Type: Numeric + Per-pupil Spending + This variable is the total spending + divided by total number of students. + Source: School Business Services Division + "http://www.cde.ca.gov/ftpbranch/sbsdiv/" + +Variable: PCT_AF Type: Numeric + Percent Students Taking UC/CSU Prep Courses + This variable is the percentage + of students taking courses that + meet University of California and + California State University entry + requirements. + Source: The California Department + of Education Educational Demographics + Unit site, file "cbeds96.exe" at + "http://www.cde.ca.gov/ftpbranch/retdiv/demo/newcbeds/" + +Variable: PCTCHRT Type: Numeric + Percent Charter Schools + Source: The California Department + of Education Educational Demographics + Unit site, file "schlname.exe" at + "http://www.cde.ca.gov/ftpbranch/retdiv/demo/newcbeds/" + +Variable: PCTYRRND Type: Numeric + Percent Year-round Schools + Source: The California Department + of Education Educational Demographics + Unit site, file "schlname.exe" at + "http://www.cde.ca.gov/ftpbranch/retdiv/demo/newcbeds/" + +Variable: LANGUAGE Type: Numeric + Mean Language Score, Grades 2-11 + This variable is the sum score for + each grade(mean * test takers) + divided by the sum of test takers + for all grades. + Source: The State of California + Standardized Testing and Reporting + site, "http://star.cde.ca.gov/index_index.html" + +Variable: MATH Type: Numeric + Mean Math Score, Grades 2-11 + This variable is the sum score for + each grade(mean * test takers) + divided by the sum of test takers + for all grades. + Source: The State of California + Standardized Testing and Reporting + site, "http://star.cde.ca.gov/index_index.html" + +Variable: READ Type: Numeric + Mean Reading Score, Grades 2-11 + This variable is the sum score for + each grade(mean * test takers) + divided by the sum of test takers + for all grades. + Source: The State of California + Standardized Testing and Reporting + site, "http://star.cde.ca.gov/index_index.html" + +Variable: LANGNCE Type: Numeric + National Percentile Rank, Language + National Percentile Rank is based on the mean + NCE score for each district. + +Variable: MATHNCE Type: Numeric + National Percentile Rank, Language + National Percentile Rank is based on the mean + NCE score for each district. + +Variable: READNCE Type: Numeric + National Percentile Rank, Language + National Percentile Rank is based on the mean + NCE score for each district. + +Variables: READM(2-11) + Mean reading score for individual grades. + The grades are the number at the end + of each variable name. + +Variables: MATHM(2-11) + Mean math score for individual grades. + The grades are the number at the end + of each variable name. + +Variables: LANGM(2-11) + Mean language score for individual grades. + The grades are the number at the end + of each variable name. + +Variables: READNCE(2-11) + NCE percentile ranking for individual grades. + The grades are the number at the end + of each variable name. + +Variables: MATHCE(2-11) + NCE percentile ranking for individual grades. + The grades are the number at the end + of each variable name. + +Variables: LANGNCE(2-11) + NCE percentile ranking for individual grades. + The grades are the number at the end + of each variable name. + diff --git a/statsmodels/datasets/star98/star98.csv b/statsmodels/datasets/star98/star98.csv new file mode 100644 index 0000000..7d8d7ea --- /dev/null +++ b/statsmodels/datasets/star98/star98.csv @@ -0,0 +1,304 @@ +"MATHTOT","PR50M","LOWINC","PERASIAN","PERBLACK","PERHISP","PERMINTE","AVYRSEXP","AVSALK","PERSPENK","PTRATIO","PCTAF","PCTCHRT","PCTYRRND","PERMINTE_AVYRSEXP","PERMINTE_AVSAL","AVYRSEXP_AVSAL","PERSPEN_PTRATIO","PERSPEN_PCTAF","PTRATIO_PCTAF","PERMINTE_AVYRSEXP_AVSAL","PERSPEN_PTRATIO_PCTAF" +807.000000,452.000000,34.397300,23.299300,14.235280,11.411120,15.918370,14.706460,59.15732,4.445207,21.710250,57.032760,0.000000,22.222220,234.102872,941.68811,869.9948,96.50656,253.52242,1238.1955,13848.8985,5504.0352 +184.000000,144.000000,17.365070,29.328380,8.234897,9.314884,13.636360,16.083240,59.50397,5.267598,20.442780,64.622640,0.000000,0.000000,219.316851,811.41756,957.0166,107.68435,340.40609,1321.0664,13050.2233,6958.8468 +571.000000,337.000000,32.643240,9.226386,42.406310,13.543720,28.834360,14.595590,60.56992,5.482922,18.954190,53.941910,0.000000,0.000000,420.854496,1746.49488,884.0537,103.92435,295.75929,1022.4252,25491.1232,5605.8777 +573.000000,395.000000,11.909530,13.883090,3.796973,11.443110,11.111110,14.389390,58.33411,4.165093,21.635390,49.061030,0.000000,7.142857,159.882095,648.15671,839.3923,90.11341,204.34375,1061.4545,9326.5797,4421.0568 +65.000000,8.000000,36.888890,12.187500,76.875000,7.604167,43.589740,13.905680,63.15364,4.324902,18.779840,52.380950,0.000000,0.000000,606.144976,2752.85075,878.1943,81.22097,226.54248,983.7059,38280.2616,4254.4314 +2247.000000,1348.000000,20.931490,28.023510,4.643221,13.808160,15.378490,14.977550,66.97055,3.916104,24.519140,44.915780,0.000000,2.380952,230.332103,1029.90593,1003.0548,96.01950,175.89487,1101.2963,15425.4676,4312.7908 +1364.000000,477.000000,53.268980,8.447858,19.374830,37.905330,25.525530,14.678290,57.62195,4.270903,22.212780,32.289160,0.000000,12.121210,374.671132,1470.83081,845.7917,94.86863,137.90387,717.2320,21589.2812,3063.2283 +912.000000,565.000000,15.190090,3.665781,2.649680,13.092070,6.203008,13.661970,63.44740,4.309734,24.590260,30.452670,0.000000,0.000000,84.745309,393.56473,866.8165,105.97748,131.24291,748.8391,5376.8695,3227.2972 +525.000000,205.000000,28.215820,10.430420,6.786374,32.334300,13.461540,16.417600,57.84564,4.527603,21.741380,22.645740,0.000000,0.000000,221.006179,778.69140,949.6866,98.43634,102.53092,492.3496,12784.2439,2229.1637 +1067.000000,469.000000,32.778970,17.178310,12.484930,28.323290,27.259890,12.518640,57.80141,4.648917,20.260100,26.070990,0.000000,0.000000,341.256749,1575.66008,723.5950,94.18752,121.20187,528.2009,19725.1213,2455.5620 +3016.000000,784.000000,59.972930,17.517360,50.940930,23.101340,52.343440,16.932830,57.43444,4.693069,21.314890,19.532160,3.296703,13.186810,886.322571,3006.31616,972.5276,100.03225,91.66577,416.3258,50905.4405,1953.8459 +235.000000,209.000000,0.000000,19.748860,1.864536,2.587519,7.407407,15.869790,52.19346,5.248693,18.511820,80.379750,0.000000,0.000000,117.553994,386.61820,828.2992,97.16286,421.88863,1487.9755,6135.5497,7809.9264 +556.000000,195.000000,28.121110,12.692010,19.265820,26.841970,13.372090,14.428640,57.24045,3.980589,21.898440,31.658290,0.000000,9.090909,192.941073,765.42445,825.9018,87.16869,126.01864,693.2672,11044.0338,2759.6116 +688.000000,206.000000,36.990470,10.032360,15.423020,30.744340,13.507630,13.297530,58.41374,4.197615,23.129430,31.150790,0.000000,0.000000,179.618115,789.03119,776.7585,97.08844,130.75902,720.5000,10492.1659,3024.3817 +252.000000,136.000000,12.927960,7.172996,4.825949,13.238400,6.185567,17.471080,65.57086,5.382009,20.683330,34.831460,0.000000,0.000000,108.068536,405.59295,1145.5937,111.31787,187.46323,720.4306,7086.1468,3877.3639 +925.000000,694.000000,4.700895,8.736718,1.745657,6.932029,7.127883,16.181760,67.36755,4.607673,24.651060,39.634150,0.000000,0.000000,115.341692,480.18801,1090.1255,113.58402,182.62120,977.0238,7770.2872,4501.8062 +377.000000,204.000000,20.259790,0.485745,0.802534,5.976769,2.439024,15.309490,51.31163,4.025593,24.822920,36.194030,0.000000,91.666670,37.340214,125.15030,785.5549,99.92697,145.70243,898.4415,1915.9872,3616.7599 +69.000000,31.000000,42.668270,2.836879,0.945627,23.877070,10.638300,11.839620,55.99032,5.151626,17.912090,24.444440,0.000000,0.000000,125.953429,595.64182,662.9041,92.27639,125.92861,437.8510,7052.1728,2255.6446 +1092.000000,601.000000,33.129230,6.305412,2.766154,12.866160,6.172840,14.601440,58.55860,4.004401,22.730080,49.655170,4.347826,26.086960,90.132353,361.47287,855.0399,91.02036,198.83921,1128.6660,5278.0244,4519.6312 +115.000000,64.000000,29.392970,1.071155,0.765111,9.716909,4.477612,14.045270,53.77230,4.518034,21.185060,51.020410,0.000000,0.000000,62.889269,240.77150,755.2465,95.71482,230.51195,1080.8704,3381.7007,4883.4094 +139.000000,51.000000,52.993130,6.217371,0.332226,38.728050,7.619048,14.173950,50.69512,4.114065,20.411360,23.275860,0.000000,0.000000,107.992005,386.24855,718.5501,83.97366,95.75840,475.0920,5474.6677,1954.5592 +449.000000,220.000000,35.088360,0.829217,0.388144,4.622442,4.135338,14.302210,55.27874,4.148228,21.919470,25.000000,23.076920,15.384620,59.144472,228.59627,790.6081,90.92696,103.70570,547.9868,3269.4319,2273.1740 +309.000000,151.000000,37.204410,0.569948,1.113990,6.321244,5.357143,13.602470,50.66849,3.975448,24.869180,22.978720,0.000000,8.333333,72.870377,271.43835,689.2166,98.86613,91.35071,571.4619,3692.2320,2271.8172 +116.000000,36.000000,54.268290,0.549786,0.549786,40.745270,7.407407,14.871050,52.53700,4.205362,19.445110,36.283190,0.000000,0.000000,110.155920,389.16294,781.2804,81.77373,152.58395,705.5306,5787.2616,2967.0117 +81.000000,15.000000,65.823970,0.264085,3.873239,58.890850,6.557377,10.926520,46.29179,4.469798,19.525480,37.931030,0.000000,0.000000,71.649311,303.55272,505.8082,87.27495,169.54404,740.6216,3316.7749,3310.4288 +66.000000,5.000000,78.540770,1.282051,0.000000,78.418800,20.833330,11.477880,49.26719,3.893337,21.123110,19.230770,0.000000,0.000000,239.122462,1026.39963,565.4829,82.23939,74.87187,406.2137,11780.8918,1581.5267 +1259.000000,541.000000,30.075530,3.626196,10.503860,20.944310,8.665750,13.691080,62.34120,4.011390,23.889050,23.854450,0.000000,72.222220,118.643477,540.23325,853.5184,95.82830,95.68950,569.8601,7396.3767,2285.9313 +190.000000,86.000000,28.246010,6.893424,19.818590,16.780050,12.745100,15.915550,59.17653,4.225738,22.183790,18.000000,0.000000,0.000000,202.845276,754.21079,941.8270,93.74288,76.06328,399.3082,12003.6796,1687.3719 +322.000000,142.000000,22.333750,2.523732,3.310952,14.031030,10.309280,16.156860,59.23072,4.114418,21.743320,34.426230,0.000000,0.000000,166.565594,610.62608,956.9825,89.46111,141.64390,748.5405,9865.8000,3079.8087 +2394.000000,1365.000000,22.624650,7.697888,4.902207,16.776880,9.421586,15.323680,57.12858,3.928696,22.141620,37.638380,0.000000,0.000000,144.373369,538.24183,875.4201,86.98769,147.86975,833.3747,8247.8456,3274.0759 +648.000000,201.000000,51.784930,4.598930,27.796790,35.101600,30.024810,15.974890,58.78893,4.049181,22.873000,85.111660,0.000000,8.333333,479.643037,1765.12645,939.1467,92.61692,344.63252,1946.7590,28197.7009,7882.7796 +1949.000000,585.000000,51.238480,13.020240,35.101180,25.527030,25.826880,17.189770,62.66410,4.347936,22.870500,36.500000,0.000000,8.474576,443.958127,1618.41819,1077.1815,99.43947,158.69966,834.7733,27820.2365,3629.5407 +1417.000000,1247.000000,1.895322,9.925228,1.633719,4.276349,4.503464,15.923690,59.97694,4.035189,23.346870,50.745030,0.000000,0.000000,71.711765,270.10399,955.0542,94.20903,204.76579,1184.7376,4301.0522,4780.6402 +403.000000,165.000000,42.511430,6.252442,0.410317,10.179760,8.076923,14.709480,58.23381,4.733280,20.673640,15.503880,0.000000,0.000000,118.807337,470.35000,856.5891,97.85413,73.38421,320.5216,6918.6039,1517.1186 +329.000000,135.000000,45.423440,1.501194,0.904128,26.270900,5.338078,14.357030,55.74014,4.323754,21.534580,86.722000,0.000000,0.000000,76.638946,297.54522,800.2629,93.11023,374.96459,1867.5218,4271.8656,8074.7051 +193.000000,106.000000,30.169650,0.797373,0.515948,2.251407,1.904762,14.232330,51.82237,4.030978,21.472950,32.456140,0.000000,0.000000,27.109201,98.70928,737.5531,86.55699,130.82999,696.9291,1404.8631,2809.3058 +2267.000000,1496.000000,23.433370,11.750650,2.871447,19.031010,15.944160,11.878900,53.15807,4.242702,22.705170,40.506330,0.000000,0.000000,189.399082,847.56077,631.4594,96.33127,171.85629,919.7031,10068.0897,3902.0262 +272.000000,68.000000,57.922400,0.871731,0.647572,68.742220,18.934910,11.197870,61.08544,4.258425,24.478600,14.835160,0.000000,0.000000,212.030661,1156.64731,684.0268,104.24028,63.17442,363.1439,12951.9862,1546.4213 +144.000000,55.000000,60.599080,7.196613,0.846660,72.342430,24.761900,11.836320,51.53734,3.807790,21.070040,38.793100,0.000000,0.000000,293.089772,1276.16246,610.0124,80.23029,147.71598,817.3722,15105.0672,3112.3816 +5018.000000,1455.000000,62.019770,19.651770,11.315660,45.239620,23.404850,14.679960,61.09530,4.685643,22.259730,27.475590,0.000000,31.111110,343.582262,1429.92633,896.8766,104.30115,128.74081,611.5992,20991.2614,2865.7356 +196.000000,84.000000,35.603390,2.518757,0.375134,67.738480,7.913669,15.345160,54.70222,6.836694,21.144350,41.578950,71.428570,0.000000,121.436517,432.89526,839.4143,144.55745,284.26256,879.1599,6642.8471,6010.5470 +617.000000,136.000000,63.171320,1.406250,0.600962,71.358170,16.791980,14.461490,55.18478,4.478657,22.256520,16.786570,0.000000,6.250000,242.837051,926.66172,798.0541,99.67932,75.18129,373.6106,13400.9092,1673.2739 +64.000000,6.000000,72.916670,1.238739,0.563063,70.045050,3.921569,11.557630,39.72835,3.899132,18.236510,13.043480,0.000000,0.000000,45.324044,155.79747,459.1656,71.10656,50.85825,237.8676,1800.6495,927.4770 +189.000000,21.000000,91.604840,0.214362,0.107181,98.821000,62.184870,11.927540,55.52729,4.223126,21.686540,13.385830,0.000000,40.000000,741.712524,3452.95731,662.3040,91.58499,56.53005,290.2923,41185.2864,1225.9411 +552.000000,132.000000,57.002490,4.322917,0.585938,70.664060,23.480660,14.004430,52.15526,4.382061,21.711530,23.023260,0.000000,0.000000,328.833259,1224.63993,730.4047,95.14125,100.88933,499.8702,17150.3841,2190.4617 +290.000000,78.000000,69.645200,3.972303,1.020408,76.712830,27.600000,13.011880,53.53164,4.180037,22.501030,14.691940,0.000000,0.000000,359.127888,1477.47326,696.5473,94.05514,61.41285,330.5838,19224.7048,1381.8524 +146.000000,16.000000,87.837180,0.405405,1.216216,90.450450,32.407410,10.375610,51.40056,4.317728,20.490570,30.851060,0.000000,0.000000,336.246647,1665.75902,533.3122,88.47271,133.20649,632.1558,17283.2660,2729.4768 +585.000000,211.000000,49.250840,10.152990,7.874184,42.323740,16.539440,10.080900,54.56874,4.006118,22.591740,37.666670,0.000000,76.923080,166.732441,902.53640,550.1020,90.50518,150.89712,850.9556,9098.3792,3409.0286 +274.000000,82.000000,69.498070,5.350028,0.313034,70.432560,22.641510,12.323140,54.54601,4.283101,22.154240,40.000000,0.000000,60.000000,279.014498,1235.00403,672.1781,94.88885,171.32404,886.1696,15219.1276,3795.5539 +155.000000,16.000000,87.777250,0.533463,0.581959,97.769160,40.000000,12.207530,60.30318,3.933777,25.637500,47.169810,0.000000,0.000000,488.301200,2412.12720,736.1529,100.85221,185.55551,1209.3160,29446.1152,4757.1795 +144.000000,35.000000,86.545990,1.713710,0.201613,92.237900,26.086960,14.580660,62.75826,5.242800,21.721130,19.178080,0.000000,0.000000,380.365094,1637.17222,915.0569,113.87954,100.54684,416.5696,23871.0515,2183.9909 +143.000000,90.000000,21.604680,0.540541,0.291060,7.484407,1.526718,17.112420,62.52282,5.879966,19.485120,26.373630,0.000000,0.000000,26.125840,95.45471,1069.9168,114.57184,155.07605,513.8933,1633.4612,3021.6754 +67.000000,23.000000,64.850750,0.667111,3.068712,64.509670,14.925370,11.369180,47.73257,3.511900,21.488720,10.666670,0.000000,0.000000,169.689218,712.42627,542.6802,75.46624,37.46028,229.2131,8099.7025,804.9734 +138.000000,76.000000,53.125000,21.752270,0.906344,20.745220,4.651163,15.736080,60.02066,4.325154,24.481130,47.115380,0.000000,0.000000,73.191073,279.16587,944.4899,105.88466,203.78127,1153.4377,4392.9765,4988.7959 +183.000000,73.000000,44.974660,1.348412,0.826446,33.188340,5.932203,16.253280,55.65380,4.602903,20.855380,49.193550,0.000000,0.000000,96.417756,330.14964,904.5568,95.99529,226.43314,1025.9502,5366.0145,4722.3492 +88.000000,38.000000,76.321210,0.000000,0.655977,2.842566,30.000000,14.785540,65.66547,5.770566,19.649640,25.925930,0.000000,0.000000,443.566200,1969.96410,970.8994,113.38954,149.60729,509.4352,29126.9830,2939.7294 +109.000000,23.000000,33.916720,0.714750,1.169591,2.988954,0.000000,15.792610,56.05594,4.427872,21.315440,44.705880,0.000000,0.000000,0.000000,0.00000,885.2696,94.38204,197.95191,952.9255,0.0000,4219.4322 +59.000000,40.000000,11.716170,0.500000,0.000000,4.666667,0.000000,15.512200,54.64567,4.893857,20.321540,34.146340,0.000000,0.000000,0.000000,0.00000,847.6746,99.45071,167.10731,693.9062,0.0000,3395.8778 +373.000000,67.000000,54.256670,0.518807,0.277932,80.211230,35.042740,14.956510,66.53025,4.304715,23.780750,33.898310,0.000000,0.000000,524.117091,2331.40225,995.0603,102.36935,145.92256,806.1272,34869.6411,3470.1480 +506.000000,91.000000,43.954820,1.432902,0.055112,97.519980,70.099670,14.587750,67.37006,4.266618,23.571910,15.825690,0.000000,0.000000,1022.596461,4722.61897,982.7776,100.57234,67.52217,373.0417,68892.3849,1591.6266 +98.000000,36.000000,74.301680,0.421941,5.555556,71.589310,40.579710,12.217090,53.51974,4.518243,20.625000,29.411760,0.000000,0.000000,495.765969,2171.81553,653.8555,93.18876,132.88948,606.6176,26533.2658,2740.8455 +578.000000,133.000000,62.100080,1.554243,2.942700,82.644290,33.412890,15.206300,66.12509,4.453164,23.321390,31.302880,0.000000,0.000000,508.086429,2209.43036,1005.5180,103.85397,139.39686,730.0267,33597.2609,3250.9285 +162.000000,19.000000,63.918040,0.399003,0.149626,70.473820,26.881720,11.607010,56.62257,4.245811,21.685140,32.142860,0.000000,0.000000,312.016393,1522.11207,657.2187,92.07101,136.47251,697.0224,17667.1700,2959.4255 +179.000000,75.000000,39.944520,0.749229,2.688409,60.775670,24.528300,9.224783,51.16703,3.708859,20.856870,34.920630,0.000000,0.000000,226.268245,1255.04026,472.0047,77.35519,129.51569,728.3350,11577.4741,2701.2920 +50.000000,4.000000,76.827900,0.000000,3.005780,31.098270,20.408160,15.318520,60.14108,5.355161,18.991770,19.354840,0.000000,0.000000,312.622807,1227.36878,921.2723,101.70399,103.64828,367.5827,18801.4733,1968.4644 +170.000000,126.000000,25.588490,0.762389,0.508259,11.012280,5.454545,16.509920,59.80555,4.349222,23.450350,40.718560,0.000000,0.000000,90.054102,326.21206,987.3848,101.99078,177.09406,954.8645,5385.7351,4152.9176 +550.000000,104.000000,68.643430,0.780814,1.728946,76.887900,31.818180,12.211630,58.86169,3.714920,25.990960,14.035090,0.000000,0.000000,388.551841,1872.87185,718.7972,96.55434,52.13924,364.7855,22870.8180,1355.1488 +187.000000,45.000000,40.599000,1.107011,14.870850,24.538750,7.627119,15.244270,63.04220,4.572615,24.419980,32.484080,0.000000,37.500000,116.269861,480.83036,961.0323,111.66317,148.53719,793.2606,7329.9079,3627.2752 +167.000000,75.000000,31.860470,2.014723,12.437040,7.477722,9.848485,15.326670,63.49800,5.767594,20.307220,32.800000,0.000000,0.000000,150.944480,625.35910,973.2129,117.12380,189.17708,666.0768,9584.6726,3841.6606 +219.000000,68.000000,49.351030,1.697439,8.219178,31.983320,9.459460,13.084260,58.15920,4.284445,23.427000,15.492960,0.000000,33.333330,123.770034,550.15463,760.9701,100.37169,66.37874,362.9536,7198.3662,1555.0546 +193.000000,58.000000,51.462370,0.361248,0.755337,17.766830,2.739726,14.436970,62.63310,5.763701,21.056580,17.791410,0.000000,0.000000,39.553342,171.59753,904.2322,121.36383,102.54437,374.6262,2477.3484,2159.2337 +324.000000,156.000000,24.995040,0.420420,2.722723,17.397400,4.524887,14.790000,60.45509,4.308128,22.871650,29.729730,0.000000,0.000000,66.923079,273.55245,894.1308,98.53400,128.07948,679.9680,4045.8407,2929.3891 +255.000000,43.000000,65.890270,0.471815,4.395332,78.917310,21.100920,14.932690,61.80390,4.139937,24.511740,14.015150,0.000000,0.000000,315.093497,1304.11915,922.8985,101.47706,58.02184,343.5357,19474.0070,1422.2162 +463.000000,208.000000,32.598730,2.233486,4.799620,10.898150,5.629139,14.351020,62.45315,4.537569,22.041570,38.662790,0.000000,0.000000,80.783886,351.55746,896.2664,100.01514,175.43508,852.1886,5045.2082,3866.8645 +200.000000,18.000000,81.964570,0.311527,0.233645,92.017130,31.896550,13.132460,55.36986,4.428046,22.508560,23.684210,0.000000,0.000000,418.880167,1766.10751,727.1425,99.66894,104.87477,533.0975,23193.3362,2360.5801 +91.000000,47.000000,37.832020,0.358423,0.860215,13.691760,8.333333,10.381430,55.94207,4.098994,24.921740,0.000000,0.000000,0.000000,86.511913,466.18390,580.7587,102.15406,0.00000,0.0000,4839.6555,0.0000 +197.000000,45.000000,64.279180,0.463822,4.050711,79.375390,17.361110,15.315450,66.40420,4.605861,22.676350,15.584420,0.000000,0.000000,265.893212,1152.85062,1017.0102,104.44412,71.77967,353.3978,17656.4260,1627.7010 +161.000000,14.000000,86.493620,0.000000,0.734095,89.967370,15.596330,11.060660,57.64157,4.543492,21.752770,26.190480,0.000000,0.000000,172.505703,898.99695,637.5538,98.83354,118.99624,569.7155,9943.4996,2588.4978 +165.000000,91.000000,45.570200,0.954199,1.335878,22.089690,7.207207,14.757810,54.04060,4.832320,20.083330,50.943400,0.000000,0.000000,106.362592,389.48179,797.5209,97.04908,246.17481,1023.1131,5747.8983,4944.0100 +206.000000,52.000000,73.609000,0.829611,5.966816,9.604340,6.329114,13.782500,54.43995,4.354388,20.612900,10.606060,0.000000,100.000000,87.231014,344.55665,750.3186,89.75656,46.18290,218.6217,4748.8520,951.9635 +147.000000,85.000000,46.295230,0.659703,1.869159,15.667950,3.448276,15.131310,58.96214,4.361361,21.417050,28.421050,0.000000,0.000000,52.176933,203.31773,892.1744,93.40749,123.95446,608.6950,3076.4636,2654.7388 +116.000000,77.000000,26.795750,0.723764,0.361882,8.685163,1.204819,11.295160,50.09641,3.932390,19.150490,40.697670,0.000000,0.000000,13.608623,60.35711,565.8470,75.30720,160.03911,779.3803,681.7432,3064.8274 +61.000000,23.000000,52.917090,1.732926,2.854230,8.256880,6.250000,14.987070,59.99540,5.022533,21.899560,37.704920,0.000000,0.000000,93.669188,374.97125,899.1553,109.99126,189.37420,825.7212,5619.7204,4147.2118 +43.000000,8.000000,41.970800,0.000000,0.571429,9.142857,3.030303,17.904290,55.17685,5.259958,18.965520,18.181820,0.000000,0.000000,54.255424,167.20257,987.9023,99.75784,95.63561,344.8277,2993.6434,1813.7791 +1599.000000,879.000000,30.505520,32.465420,10.401410,32.659800,36.004060,15.257560,59.28909,4.219665,22.576790,49.732620,0.000000,3.333333,549.334106,2134.64795,904.6068,95.26649,209.85500,1122.8029,32569.5192,4737.8522 +771.000000,640.000000,8.362214,52.593960,1.213040,9.888444,8.900524,15.982010,64.41547,4.166218,24.274600,60.840110,0.000000,27.272730,142.248264,573.33144,1029.4887,101.13328,253.47316,1476.8693,9162.9888,6152.9596 +800.000000,200.000000,70.738270,0.959561,3.152844,78.941060,25.955730,14.498850,64.61103,4.379243,23.981860,19.424460,0.000000,11.111110,376.328236,1677.02645,936.7856,105.02239,85.06443,465.8347,24314.9549,2040.0033 +1029.000000,268.000000,62.871680,4.723750,1.793829,85.469980,27.212020,15.062110,67.83996,3.819118,27.505420,26.771650,0.000000,0.000000,409.870439,1846.06235,1021.8129,105.04644,102.24409,736.3655,27805.5942,2812.2666 +399.000000,108.000000,79.676600,2.102924,2.102924,89.143440,45.600000,14.399820,62.08461,4.432065,23.559660,20.987650,0.000000,0.000000,656.631792,2831.05822,894.0072,104.41794,93.01863,494.4619,40766.7287,2191.4873 +927.000000,260.000000,49.172150,5.575448,18.158570,38.480090,12.274370,13.042280,58.55052,3.988183,23.885220,17.997290,0.000000,7.142857,160.085770,718.67075,763.6323,95.25863,71.77649,429.8692,9373.1051,1714.3972 +417.000000,346.000000,9.733488,10.939850,3.571429,4.097744,10.819670,18.200000,62.45576,6.015758,17.724690,61.884370,0.000000,0.000000,196.917994,675.75071,1136.6948,106.62745,372.28139,1096.8813,12298.6630,6598.5723 +804.000000,426.000000,25.843950,5.866005,4.823821,27.583130,9.501188,16.892010,62.02176,4.054136,24.114240,51.764710,0.000000,0.000000,160.494163,589.28040,1047.6722,97.76241,209.86117,1248.2666,9954.1304,5060.6427 +992.000000,436.000000,37.679800,5.688124,2.774695,36.958930,13.166670,14.469380,62.40043,4.138196,23.957660,32.429100,0.000000,5.263158,190.513552,821.60587,902.8955,99.14149,134.19797,776.9254,11888.1275,3215.0694 +464.000000,209.000000,23.947700,5.265554,4.871017,36.616080,11.764710,15.322540,61.53467,4.024875,24.122970,38.725490,0.000000,0.000000,180.265240,723.93755,942.8674,97.09194,155.86526,934.1738,11092.5620,3759.9329 +483.000000,338.000000,20.807020,10.111850,12.001210,20.873640,11.708860,13.907750,61.44766,4.401148,21.542030,53.169730,0.000000,0.000000,162.843898,719.48205,854.5987,94.80966,234.00785,1145.3839,10006.3765,5041.0041 +958.000000,450.000000,37.644950,8.548446,5.798903,50.829980,14.259930,13.900460,62.29003,4.265807,24.256400,42.084430,0.000000,0.000000,198.219587,888.25147,865.8601,103.47312,179.52406,1020.8168,12347.1040,4354.6073 +388.000000,144.000000,33.511680,10.202370,17.912690,36.812180,18.650790,15.385020,62.13202,4.282612,22.957290,41.176470,0.000000,0.000000,286.942777,1158.81126,955.9024,98.31717,176.34284,945.3002,17828.3344,4048.3538 +1312.000000,538.000000,42.840950,5.595576,4.804180,63.337050,14.599480,12.293480,64.63193,3.979219,25.141500,23.267330,0.000000,0.000000,179.478415,943.59257,794.5513,100.04353,92.58580,584.9756,11600.0364,2327.7459 +273.000000,71.000000,61.400090,2.775971,13.207550,61.960530,30.000000,16.068420,59.30374,4.179698,25.225270,15.015970,0.000000,0.000000,482.052600,1779.11220,952.9174,105.43401,62.76222,378.7819,28587.5221,1583.1939 +682.000000,130.000000,68.085100,0.683527,0.580998,94.480520,51.814520,16.274280,65.65300,4.338243,22.495030,33.670030,0.000000,0.000000,843.244007,3401.77868,1068.4553,97.58891,146.06877,757.4083,55361.4988,3285.8214 +212.000000,125.000000,13.800080,6.320789,3.397881,14.870300,4.761905,11.927660,57.36205,4.718115,21.288740,38.993710,0.000000,0.000000,56.798384,273.15263,684.1950,100.44272,183.97681,830.1270,3258.0717,3916.6344 +2327.000000,1326.000000,50.674020,12.127240,1.119947,23.866800,12.239580,13.221090,73.03900,4.224937,26.670200,26.386550,0.000000,34.482760,161.820589,893.96668,965.6552,112.67991,111.48151,703.7346,11819.2140,2973.2342 +584.000000,339.000000,14.826240,4.119138,1.292776,16.565270,6.329114,14.992660,63.78461,4.130350,24.900640,33.600000,0.000000,0.000000,94.890254,403.70007,956.3010,102.84836,138.77976,836.6615,6052.5379,3455.7048 +1111.000000,222.000000,69.008290,0.192555,43.091380,55.368190,63.439070,15.019830,63.04099,3.748330,27.402750,38.888890,0.000000,57.894740,952.844047,3999.26178,946.8650,102.71455,145.76839,1065.6625,60068.2320,3994.4548 +326.000000,287.000000,1.421801,26.200560,0.541431,3.060264,8.205128,15.025790,63.79163,4.705506,21.596240,66.181820,0.000000,0.000000,123.288530,523.41849,958.5196,101.62124,311.41895,1429.2785,7864.7763,6725.4784 +828.000000,671.000000,2.971741,7.571330,1.366449,4.975937,7.024793,17.007010,64.74985,4.414050,24.239130,60.623230,0.000000,0.000000,119.470725,454.85429,1101.2013,106.99273,267.59397,1469.4544,7735.7115,6486.2450 +5677.000000,1930.000000,64.238700,14.166320,20.336870,40.489830,29.108750,13.309800,59.29818,4.210309,22.983120,41.378230,2.325581,19.767440,387.431641,1726.09590,789.2469,96.76604,174.21513,951.0008,22973.9912,4004.0073 +38852.000000,9324.000000,73.183940,4.308746,13.795250,68.524170,45.461390,20.545740,73.07307,4.365276,23.420950,49.306180,2.321981,32.198140,934.037899,3322.00333,1501.3403,102.23891,215.23508,1154.7976,68253.0168,5041.0101 +939.000000,113.000000,59.296940,0.224649,12.056160,86.527300,52.487140,15.793010,67.06302,4.064954,27.059610,15.084750,0.000000,50.000000,828.929927,3519.94612,1059.1269,109.99607,61.31881,408.1875,55590.5443,1659.2632 +401.000000,144.000000,56.898580,1.915122,14.064650,48.077220,17.543860,14.425880,57.19330,4.017302,22.554720,25.947520,0.000000,11.111110,253.085619,1003.39125,825.0637,90.60912,104.23902,585.2390,14474.8017,2351.0820 +2093.000000,377.000000,75.034300,4.879927,0.447129,90.518500,59.529810,16.923410,67.60591,3.810285,27.995780,28.541670,0.000000,25.000000,1007.447382,4024.56698,1144.1225,106.67190,108.75190,799.0463,68109.3970,3044.5942 +1436.000000,388.000000,44.022030,4.939493,5.015970,62.976290,29.220020,15.621080,60.66556,3.616505,25.625820,21.508660,0.000000,7.142857,456.448270,1772.64888,947.6616,92.67591,77.78618,551.1770,27690.6899,1993.3346 +678.000000,597.000000,1.943602,30.026930,1.723209,3.941842,7.474227,18.942870,59.82121,3.946788,24.114410,89.130430,0.000000,0.000000,141.583310,447.11730,1133.1854,95.17446,351.77891,2149.3277,8469.6849,8482.9409 +1088.000000,185.000000,58.228350,1.783620,14.614580,75.708200,35.248450,11.801460,63.19071,4.370215,24.505800,5.430712,0.000000,73.333330,415.983173,2227.37458,745.7426,107.09561,23.73338,133.0839,26286.2720,581.6054 +1352.000000,365.000000,61.881100,2.221930,32.005430,47.111930,42.184150,14.272990,64.58404,4.443599,23.867130,39.655170,0.000000,0.000000,602.093951,2724.42283,921.8074,106.05596,176.21167,946.4551,38885.6598,4205.6669 +1983.000000,575.000000,73.505300,6.393463,11.233780,71.204470,48.698570,16.683370,65.62877,4.007186,26.044220,8.277190,0.000000,23.684210,812.456262,3196.02725,1094.9091,104.36403,33.16824,215.5730,53320.5051,863.8409 +265.000000,246.000000,0.265340,63.202340,0.487171,3.345242,6.944444,15.907860,57.54338,4.619277,22.177360,78.189300,0.000000,0.000000,110.471243,399.60678,915.3920,102.44337,361.17804,1734.0323,6356.8887,8009.9753 +753.000000,429.000000,26.090650,5.531472,8.617999,27.076470,22.266400,15.874000,65.96343,5.063350,22.315280,65.106380,0.000000,0.000000,353.456834,1468.76812,1047.1035,112.99007,329.65639,1452.8671,23315.2251,7356.3746 +300.000000,234.000000,11.678830,32.089360,4.467806,18.212880,13.017750,16.196450,61.16962,4.043499,22.990940,64.074070,0.000000,0.000000,210.841337,796.29082,990.7307,92.96384,259.08344,1473.1231,12897.0845,5956.5718 +376.000000,237.000000,27.321980,38.107750,1.445466,20.367940,7.359307,13.787500,59.41730,4.035891,23.648950,31.564990,0.000000,0.000000,101.466445,437.27015,819.2160,95.44458,127.39286,746.4789,6028.8622,3012.7074 +1732.000000,1108.000000,17.701930,28.476880,3.996755,15.833300,19.657260,13.318610,59.55529,3.822103,23.783230,45.956610,0.000000,0.000000,261.807380,1170.69382,793.1937,90.90195,175.65090,1092.9966,15592.0144,4177.5457 +627.000000,194.000000,47.307170,9.439110,9.122654,58.162370,17.520220,13.903390,56.84137,3.907338,24.422660,29.061780,0.000000,0.000000,243.590452,995.87331,790.2877,95.42759,113.55420,709.7660,13846.0150,2773.2956 +1843.000000,258.000000,78.423910,0.054539,35.729620,62.927360,80.174930,14.793150,58.99142,3.743125,28.099970,41.789050,0.000000,2.564103,1186.039766,4729.63297,872.6689,105.18170,156.42164,1174.2711,69966.1700,4395.4433 +1647.000000,609.000000,40.236070,16.399950,2.539347,67.976020,28.903650,17.393570,62.32530,4.103139,25.056070,38.678490,0.000000,0.000000,502.737660,1801.42866,1084.0595,102.80854,158.70322,969.1310,31333.2755,3976.4790 +1213.000000,606.000000,33.850630,18.781190,6.688608,55.350890,29.182390,16.173100,62.27731,4.369675,24.445740,30.261880,0.000000,0.000000,471.969712,1817.40075,1007.2172,106.81994,132.23458,739.7741,29393.0040,3232.5722 +1171.000000,831.000000,6.196674,42.313890,5.721689,18.180540,17.736490,14.824450,60.55524,3.982780,24.250860,57.785470,0.000000,0.000000,262.933709,1074.03741,897.6981,96.58584,230.14681,1401.3473,15922.0139,5581.2582 +319.000000,185.000000,53.455700,36.402370,1.889589,43.479070,22.065730,14.123080,57.66326,3.814974,23.166670,0.000000,11.111110,0.000000,311.636070,1272.38193,814.3828,88.38024,0.00000,0.0000,17969.9517,0.0000 +192.000000,109.000000,28.172350,1.443203,1.722533,11.918060,7.446809,11.728040,58.88017,3.806893,24.822220,0.000000,0.000000,0.000000,87.336474,438.46938,690.5490,94.49554,0.00000,0.0000,5142.3864,0.0000 +299.000000,242.000000,7.197273,7.003820,1.819174,8.659269,7.936508,15.217190,64.22489,5.093928,21.587110,43.089430,0.000000,0.000000,120.771350,509.72135,977.3224,109.96318,219.49445,930.1763,7756.5267,4738.2509 +489.000000,298.000000,25.639930,7.277444,5.188422,23.184050,10.248450,16.505210,68.09637,5.006776,22.475220,51.540620,0.000000,0.000000,169.152819,697.88224,1123.9449,112.52839,258.05234,1158.3868,11518.6930,5799.7831 +159.000000,48.000000,59.287210,0.941378,2.524604,41.634570,6.666667,12.205420,53.26582,3.873240,23.551490,25.409840,0.000000,0.000000,81.369471,355.10548,650.1317,91.22057,98.41841,598.4396,4334.2116,2317.9002 +1130.000000,362.000000,60.023900,1.152145,3.543626,67.353800,26.829270,14.054850,56.27459,4.064557,23.458330,31.994050,0.000000,45.000000,377.081365,1509.80617,790.9309,95.34772,130.04164,750.5270,21220.0992,3050.5597 +564.000000,412.000000,14.792290,4.893837,2.770585,11.108230,3.562341,16.620180,53.79499,4.365513,20.396360,48.085110,6.250000,12.500000,59.206749,191.63610,894.0824,89.04057,209.91617,980.7612,3185.0265,4281.5258 +277.000000,144.000000,34.767680,7.884136,5.198542,36.178780,8.536585,15.191140,53.33638,4.458969,20.966820,53.592810,0.000000,0.000000,129.680458,455.31054,810.2404,93.49040,238.96868,1123.6708,6916.6862,5010.4133 +52.000000,28.000000,0.000000,0.480192,0.480192,28.691480,7.407407,13.726150,60.99250,6.459384,16.405350,26.000000,0.000000,0.000000,101.675180,451.79627,837.1922,105.96846,167.94398,426.5391,6201.4234,2755.1798 +225.000000,112.000000,27.000720,0.511322,0.292184,6.208912,1.459854,15.598450,51.69282,4.183603,21.538460,29.801320,0.000000,0.000000,22.771460,75.46397,806.3279,90.10837,124.67689,641.8745,1177.1210,2685.3482 +38.000000,21.000000,55.932200,0.840336,1.344538,45.378150,0.000000,12.756000,48.85596,6.406862,14.316040,44.736840,0.000000,0.000000,0.000000,0.00000,623.2066,91.72089,286.62276,640.4544,0.0000,4103.3029 +188.000000,98.000000,37.299680,1.162791,0.415282,19.684390,2.272727,17.130740,56.33678,4.990487,19.472870,25.899280,0.000000,0.000000,38.933495,128.03812,965.0907,97.17910,129.25002,504.3333,2193.3878,2516.8688 +489.000000,240.000000,46.927540,0.969469,1.114166,22.818690,4.848485,17.401500,64.53571,4.838431,21.344880,33.333330,0.000000,36.363640,84.370912,312.90042,1123.0182,103.27573,161.28102,711.4959,5444.9367,3442.5240 +171.000000,67.000000,46.538460,0.846154,0.692308,11.576920,2.985075,17.472000,56.56813,4.611976,20.828080,26.380370,0.000000,0.000000,52.155230,168.86011,988.3584,96.05861,121.66563,549.4525,2950.3239,2534.0615 +33.000000,13.000000,56.331170,0.517241,0.689655,3.965517,4.651163,12.497870,48.86760,6.578053,15.732980,34.210530,0.000000,0.000000,58.129631,227.29117,610.7409,103.49238,225.03868,538.2336,2840.6555,3540.5290 +183.000000,60.000000,37.788990,1.586639,0.292276,17.327770,11.711710,13.417060,58.10255,4.361619,22.786120,20.800000,0.000000,16.666670,157.136716,680.48022,779.5654,99.38437,90.72168,473.9513,9130.0439,2067.1950 +48.000000,14.000000,41.431670,0.915565,0.000000,84.130210,25.581400,12.771430,55.70923,4.140527,22.185270,24.742270,0.000000,0.000000,326.711059,1425.12010,711.4865,91.85871,102.44604,548.9139,18200.8216,2272.7930 +455.000000,123.000000,50.928240,1.244953,4.862046,53.179680,12.167300,12.078160,55.07462,4.075188,21.770280,33.935020,0.000000,50.000000,146.958596,670.10942,665.2001,88.71798,138.29159,738.7749,8093.6888,3010.6466 +108.000000,23.000000,52.407930,0.614335,0.955631,50.443690,8.333333,11.989610,53.60990,4.080966,21.157740,49.275360,0.000000,0.000000,99.913413,446.74915,642.7618,86.34402,201.09107,1042.5553,5356.3481,4254.6325 +181.000000,33.000000,60.918210,0.156801,6.311250,61.701290,15.441180,11.491350,54.80270,4.750999,18.812180,19.594590,0.000000,0.000000,177.440004,846.21836,629.7570,89.37665,93.09388,368.6170,9724.1913,1751.2988 +94.000000,37.000000,33.277730,0.750000,0.750000,10.416670,1.612903,11.680880,55.85474,4.786679,19.229530,32.786890,0.000000,0.000000,18.840126,90.08828,652.4325,92.04559,156.94032,630.4765,1052.3104,3017.8886 +47.000000,19.000000,64.850840,0.000000,0.000000,52.380950,4.761905,12.955320,50.84007,4.851063,18.400950,45.714290,0.000000,0.000000,61.692003,242.09558,658.6494,89.26417,221.76290,841.1864,3136.4258,4080.6480 +40.000000,24.000000,45.933730,0.310078,0.775194,14.108530,2.222222,14.034310,52.32031,6.283433,14.669700,76.923080,0.000000,0.000000,31.187352,116.26734,734.2794,92.17608,483.34102,1128.4385,1631.7319,7090.4678 +93.000000,45.000000,21.840070,0.582848,0.083264,21.815150,4.838710,14.984850,60.15944,4.806483,20.594230,42.857140,0.000000,0.000000,72.507344,291.09408,901.4802,98.98582,205.99211,882.6098,4362.0012,4242.2490 +201.000000,149.000000,10.706820,2.977162,1.305057,7.544861,4.800000,17.294230,69.88739,5.676651,20.678540,55.921050,0.000000,0.000000,83.012304,335.45947,1208.6486,117.38485,317.44428,1156.3657,5801.5133,6564.2843 +773.000000,255.000000,40.134530,8.813424,15.637240,25.225730,17.657050,19.471920,61.01163,4.496243,20.607040,28.907920,0.000000,95.238100,343.816665,1077.28540,1188.0136,92.65426,129.97703,595.7067,20976.8152,2678.4419 +154.000000,105.000000,14.279550,4.711581,1.893439,7.089388,2.941176,17.541950,63.90955,4.756384,22.632100,48.175180,0.000000,0.000000,51.593962,187.96923,1121.0981,107.64696,229.13966,1090.3055,3297.3469,5185.9116 +357.000000,107.000000,40.666670,1.844262,1.285395,49.236210,20.158100,14.685340,56.61921,4.356072,21.579570,60.597830,0.000000,0.000000,296.028552,1141.33570,831.4723,94.00216,263.96851,1307.6751,16760.9028,5696.3270 +163.000000,60.000000,67.269370,0.273879,0.410818,86.511470,24.193550,11.886840,58.89312,4.200852,24.908640,11.304350,0.000000,0.000000,287.584858,1424.83364,700.0531,104.63751,47.48790,281.5760,16936.7695,1182.8590 +61.000000,21.000000,45.670230,0.682594,0.341297,47.098980,4.545455,13.511220,54.34489,4.650725,20.973870,50.000000,0.000000,0.000000,61.414643,247.02225,734.2658,97.54370,232.53625,1048.6935,3337.5720,4877.1851 +1198.000000,587.000000,32.709060,1.396074,1.776254,26.488000,6.388527,15.475870,54.78513,3.912949,21.838410,29.252580,3.333333,0.000000,98.868013,349.99628,847.8475,85.45258,114.46385,638.8298,5416.4970,2499.7086 +112.000000,58.000000,34.434250,0.738007,0.430504,37.453870,14.634150,15.647780,51.43444,4.386959,21.202050,44.144140,0.000000,0.000000,228.991960,752.69931,804.8348,93.01252,193.65853,935.9463,11778.0732,4105.9579 +455.000000,300.000000,16.157800,8.398994,2.179380,21.626150,4.897959,15.227270,57.19342,3.825952,25.227760,40.720220,0.000000,0.000000,74.582544,280.13103,870.8996,96.52020,155.79361,1027.2799,4265.6308,3930.3237 +2692.000000,1804.000000,17.338030,4.709514,1.580624,16.953750,9.391933,12.699920,60.77938,3.802974,23.000430,44.825580,0.000000,10.526320,119.276798,570.83586,771.8933,87.47004,170.47052,1031.0076,7249.5698,3920.8952 +3007.000000,1473.000000,48.156080,28.711550,1.291070,44.051470,11.486120,15.676560,65.18442,3.835549,24.673220,20.381300,0.000000,0.000000,180.062849,748.71607,1021.8675,94.63534,78.17347,502.8723,11737.2924,1928.7913 +188.000000,145.000000,9.316273,1.883830,1.216641,9.222920,7.619048,16.906410,70.27437,4.481474,24.263570,74.285710,0.000000,0.000000,128.810749,535.42380,1188.0873,108.73656,332.90948,1802.4365,9052.0943,8077.5724 +1186.000000,688.000000,39.025440,4.683563,1.235117,34.123810,4.426788,16.001170,60.20204,4.349231,22.482760,42.871490,0.000000,0.000000,70.833787,266.50167,963.3031,97.78272,186.45801,963.8694,4264.3385,4192.0908 +1991.000000,1035.000000,36.019980,10.882420,2.085541,36.821770,9.424084,16.817670,56.41511,3.586935,25.448820,47.330260,2.564103,12.820510,158.491135,531.66074,948.7707,91.28326,169.77057,1204.4993,8941.2948,4320.4606 +1875.000000,1238.000000,21.013880,8.124397,1.888460,25.920120,11.397420,15.153020,63.10153,4.172242,24.717150,36.561740,0.000000,0.000000,172.705333,719.19464,956.1787,103.12593,152.54443,903.7020,10897.9708,3770.4635 +3391.000000,610.000000,73.277230,4.408512,1.079825,90.790820,26.487520,14.970920,69.82454,4.102145,25.032190,21.729370,0.000000,56.250000,396.542543,1849.47890,1045.3376,102.68567,89.13703,543.9337,27688.4006,2231.2950 +2363.000000,1607.000000,10.534500,8.401664,2.167491,14.810680,6.056435,14.979900,60.37220,3.840866,22.191010,53.791890,0.000000,0.000000,90.724791,365.64031,904.3695,85.23270,206.60744,1193.6964,5477.2552,4584.8278 +1074.000000,526.000000,29.868970,8.276043,4.655274,41.681400,5.263158,13.014120,57.83115,3.629530,24.169470,39.595380,0.000000,0.000000,68.495370,304.37448,752.6215,87.72382,143.71262,956.9993,3961.1660,3473.4578 +1799.000000,1421.000000,10.516500,25.163700,3.039764,7.410780,9.255725,16.097760,62.55098,4.352488,22.658160,0.000000,0.000000,9.677420,148.996440,578.95467,1006.9307,98.61937,0.00000,0.0000,9319.8733,0.0000 +621.000000,416.000000,11.600250,8.991280,3.111006,11.536650,10.133330,15.093070,67.28494,4.726529,23.198790,49.592170,0.000000,10.000000,152.943059,681.82050,1015.5363,109.64975,234.39883,1150.4783,10290.7645,5437.7692 +358.000000,204.000000,23.356440,0.627574,0.431457,17.709350,6.617647,13.593590,49.51303,4.638098,19.678420,44.131460,0.000000,0.000000,89.957580,327.65975,673.0598,91.27044,204.68604,868.4374,4454.0724,4027.8978 +182.000000,49.000000,28.660970,0.562810,1.440792,17.424580,4.878049,13.332730,42.65839,3.503698,24.268590,27.461140,62.500000,0.000000,65.037710,208.08972,568.7528,85.02981,96.21554,666.4431,2774.4040,2335.0155 +445.000000,276.000000,17.136240,3.538945,1.372581,6.664462,4.651163,11.192390,52.65482,3.596095,23.043300,0.000000,0.000000,0.000000,52.057630,244.90615,589.3333,82.86590,0.00000,0.0000,2741.0852,0.0000 +288.000000,132.000000,36.662110,0.663533,1.216478,6.856511,2.717391,16.154050,56.50012,4.912702,21.232090,33.193280,0.000000,0.000000,43.896870,153.53292,912.7058,104.30693,163.06869,704.7627,2480.1784,3462.2892 +1078.000000,280.000000,42.290290,4.021226,7.222877,47.158020,17.241380,13.007080,62.39070,3.758198,25.181950,41.666670,0.000000,70.588240,224.260009,1075.70177,811.5208,94.63875,156.59160,1049.2480,13991.7389,3943.2817 +335.000000,54.000000,75.529870,13.368510,13.852240,36.697450,20.297030,13.817330,60.07478,4.456322,21.899660,41.818180,0.000000,12.500000,280.450762,1219.33961,830.0731,97.59194,186.35528,915.8039,16848.0178,4081.1172 +219.000000,53.000000,58.746440,1.151316,3.426535,34.649120,9.027778,15.966160,59.27044,4.070740,24.756270,26.250000,0.000000,12.500000,144.138948,535.08037,946.3213,100.77634,106.85693,649.8521,8543.1789,2645.3789 +2122.000000,849.000000,41.511390,3.604238,4.644538,41.778430,11.373210,13.542970,64.06346,4.083554,25.231140,34.637270,0.000000,34.285710,154.027042,728.60718,867.6095,103.03272,141.44316,873.9378,9867.5052,3568.7722 +1434.000000,387.000000,55.991250,1.264684,2.467791,60.041680,15.808820,12.687370,64.12352,3.937206,25.213800,43.171810,4.347826,0.000000,200.572349,1013.71719,813.5588,99.27192,169.97631,1088.5254,12861.4050,4285.7487 +1085.000000,456.000000,62.407780,1.435897,2.666667,29.230770,9.033280,15.502510,59.73505,3.916537,24.517560,21.428570,0.000000,5.263158,140.038514,539.60343,926.0432,96.02393,83.92579,525.3763,8365.2076,2057.6555 +1199.000000,300.000000,50.210920,1.388811,5.304256,53.254500,23.789760,13.275310,62.06872,3.826458,24.666670,26.383530,0.000000,4.166667,315.816439,1476.59995,823.9815,94.38598,100.95547,650.7938,19602.3221,2490.2352 +2300.000000,644.000000,43.068910,3.265436,23.676000,35.353280,23.123580,14.011940,58.40116,4.173917,24.092200,25.592420,2.857143,22.857140,324.006216,1350.44390,818.3135,100.55884,106.82064,616.5777,18922.3388,2573.5441 +1226.000000,319.000000,62.504970,1.157494,5.942876,53.491240,8.933333,13.070020,57.24297,4.143368,24.201040,13.754050,0.000000,9.523810,116.758841,511.37051,748.1668,100.27381,56.98809,332.8623,6683.6228,1379.1711 +238.000000,93.000000,55.912890,0.632911,10.522150,52.083330,10.795450,14.110260,61.88548,4.694474,22.195810,20.930230,0.000000,0.000000,152.326606,668.08161,873.2202,104.19765,98.25642,464.5634,9426.8051,2180.8808 +2388.000000,860.000000,47.234350,3.598305,10.326660,40.110930,21.747700,10.976620,61.44565,4.384205,23.568530,33.772460,0.000000,19.047620,238.716239,1336.30156,674.4656,103.32927,148.06539,795.9672,14668.0745,3489.6835 +306.000000,92.000000,64.179100,1.007308,3.851471,50.819670,7.446809,13.119810,58.04066,3.564449,26.021620,11.931820,12.500000,25.000000,97.700719,432.21771,761.4824,92.75274,42.53036,310.4853,5670.6142,1106.7090 +862.000000,86.000000,85.514590,0.138122,0.276243,96.167130,36.465320,11.920770,61.38559,4.099012,25.279640,13.546800,0.000000,0.000000,434.694693,2238.44518,731.7635,103.62155,55.52850,342.4582,26683.9902,1403.7404 +990.000000,307.000000,38.116470,1.790807,4.072428,30.112090,11.418690,13.053750,62.32666,3.960634,25.396940,25.383300,0.000000,83.333330,149.056725,711.68881,813.5966,100.58798,100.53396,644.6581,9290.2078,2553.2550 +1029.000000,587.000000,18.169990,1.957028,3.825099,17.784320,8.097928,12.194850,64.15611,3.664265,25.549800,25.868060,6.250000,81.250000,98.753017,519.53156,782.3741,93.62124,94.78743,660.9238,6335.6094,2421.7998 +674.000000,290.000000,18.216450,2.105698,3.437242,17.846820,15.193370,9.219296,59.13467,3.774601,25.861480,38.256660,0.000000,100.000000,140.072175,898.45492,545.1800,97.61677,144.40363,989.3738,8283.1219,3734.4915 +656.000000,177.000000,54.843870,1.897597,23.579610,45.823040,21.238940,10.907790,58.44744,3.799078,25.541490,31.802120,0.000000,0.000000,231.669897,1241.36167,637.5324,97.03411,120.81873,812.2735,13540.5124,3085.8905 +2817.000000,1239.000000,36.944770,15.212580,19.093460,16.269870,17.404310,12.277890,58.33163,3.762583,23.116970,29.580150,0.000000,33.333330,213.688204,1015.22177,716.1893,86.97952,111.29777,683.8034,12464.7812,2572.8672 +957.000000,555.000000,26.114320,5.308799,9.912578,8.671743,9.722222,14.263190,51.10465,3.845847,22.197770,27.709190,4.347826,30.434780,138.669900,496.85075,728.9153,85.36923,106.56531,615.0822,7086.6767,2365.5121 +349.000000,154.000000,33.115380,1.770956,1.180638,35.726090,9.166667,11.772560,51.74220,4.581189,22.213330,23.983740,0.000000,0.000000,107.915137,474.30352,609.1382,101.76346,109.87405,532.7587,5583.7666,2440.6684 +174.000000,82.000000,35.978840,1.407285,1.034768,36.920530,11.904760,14.735110,51.08037,4.420624,20.180180,45.312500,0.000000,0.000000,175.417948,608.09955,752.6749,89.20899,200.30953,914.4144,8960.4137,4042.2823 +3398.000000,1325.000000,59.406430,23.870540,21.952510,23.506130,27.457470,14.003300,61.99703,4.125407,24.826780,38.742610,1.298701,10.389610,384.495190,1702.28159,868.1630,102.42057,159.82903,961.8543,23837.5598,3968.0403 +3310.000000,1787.000000,28.849750,4.594770,5.959822,8.972135,7.187223,12.616220,58.87275,4.335660,21.750740,39.284420,1.219512,6.097561,90.675587,423.13158,742.7516,94.30381,170.32389,854.4652,5338.3211,3704.6706 +391.000000,266.000000,29.306060,7.974910,13.870970,10.286740,10.699590,13.232410,55.94413,3.811049,22.289510,78.968250,0.000000,42.857140,141.581362,598.57925,740.2757,84.94641,300.95187,1760.1636,7920.6461,6708.0697 +412.000000,136.000000,37.955380,6.226150,29.744930,26.230170,12.234040,10.666110,57.67268,3.312515,22.428410,0.000000,14.285710,14.285710,130.489616,705.56987,615.1431,74.29444,0.00000,0.0000,7525.6859,0.0000 +114.000000,58.000000,35.753750,2.109375,0.625000,40.468750,16.666670,11.918180,61.91985,4.272916,22.222220,0.000000,0.000000,0.000000,198.636373,1031.99771,737.9719,94.95368,0.00000,0.0000,12299.5344,0.0000 +467.000000,149.000000,50.624110,1.101449,11.782610,38.130430,19.269100,14.401470,57.10062,4.203244,22.986750,12.987010,0.000000,0.000000,277.503366,1100.27756,822.3329,96.61892,54.58757,298.5292,15845.6142,1254.7909 +280.000000,143.000000,40.703370,0.449312,0.954788,11.429370,3.521127,13.881480,57.82488,3.838359,25.364290,35.428570,0.000000,100.000000,48.878454,203.60875,802.6949,97.35725,135.98757,898.6205,2826.3907,3449.2282 +2132.000000,1002.000000,25.955670,6.023256,5.232558,38.202660,18.698520,15.212770,62.27005,3.664259,24.169690,29.015540,0.000000,10.000000,284.456284,1164.35778,947.2999,88.56400,106.32045,701.2966,17713.1070,2569.7324 +1304.000000,352.000000,44.452120,2.019903,9.084639,63.686080,19.094250,11.895110,59.62526,3.811724,24.030230,34.445930,0.000000,48.000000,227.128204,1138.49962,709.2490,91.59660,131.29838,827.7436,13542.5782,3155.1302 +2259.000000,407.000000,39.998060,1.101044,11.805470,65.774630,19.710810,12.968520,60.46872,3.939782,24.371310,18.253400,0.000000,56.250000,255.620034,1191.88745,784.1898,96.01765,71.91442,444.8593,15457.0162,1752.6485 +667.000000,280.000000,46.742290,1.503836,8.194373,13.340150,4.504505,13.401940,62.28607,4.128065,22.629280,13.500000,5.882353,0.000000,60.369106,280.56791,834.7542,93.41514,55.72888,305.4953,3760.1543,1261.1044 +103.000000,45.000000,54.401520,1.161946,3.776325,17.283950,2.941176,16.794670,61.23499,4.903238,21.277210,40.350880,0.000000,10.000000,49.396080,180.10288,1028.4214,104.32722,197.84997,858.5541,3024.7685,4209.6953 +1261.000000,580.000000,34.604040,8.123958,7.962554,30.989400,15.033560,14.849090,60.47727,3.763685,24.721110,24.774320,0.000000,50.000000,223.234685,909.18867,898.0324,93.04247,93.24274,612.4487,13500.6243,2305.0639 +1750.000000,368.000000,57.885020,2.875776,27.398440,51.591110,24.493930,12.173990,59.09631,3.838001,25.162110,13.239440,0.000000,70.833330,298.188859,1447.50088,719.4379,96.57220,50.81298,333.1322,17621.8612,1278.5619 +488.000000,229.000000,24.700730,0.979605,1.268669,13.056050,10.276680,15.791960,62.20187,3.995416,24.439080,31.286550,0.000000,0.000000,162.288919,639.22871,982.2894,97.64429,125.00278,764.6145,10094.6743,3054.9530 +3080.000000,739.000000,70.235750,3.366044,19.618020,50.849420,25.219640,11.679380,61.67289,4.147682,23.986840,22.395210,0.000000,42.622950,294.549759,1555.36808,720.3011,99.48978,92.88821,537.1903,18165.7349,2228.0946 +1011.000000,354.000000,44.919960,1.618203,16.417630,36.170870,15.533980,10.971670,61.49285,4.057497,26.511440,13.970590,15.000000,20.000000,170.433702,955.22870,674.6793,107.57009,56.68563,370.3805,10480.4541,1502.8176 +626.000000,244.000000,27.571030,0.762642,0.774375,19.664440,6.060606,11.880490,63.43272,3.784390,25.071620,25.000000,0.000000,70.000000,72.002969,384.44072,753.6118,94.88079,94.60975,626.7905,4567.3442,2372.0197 +180.000000,74.000000,46.964160,2.107896,18.185070,12.040010,7.913669,11.099070,60.61841,5.342537,20.252890,18.348620,0.000000,0.000000,87.834366,479.71403,672.8080,108.20181,98.02818,371.6126,5324.3796,1985.3540 +482.000000,241.000000,20.984130,0.826189,2.088854,16.679660,4.054054,8.420029,53.76420,3.823180,22.520660,10.248450,9.090909,0.000000,34.135252,217.96297,452.6961,86.10054,39.18167,230.8019,1835.2545,882.3970 +1057.000000,328.000000,47.678100,0.955685,5.308634,31.190680,11.897110,12.191790,62.22010,3.865725,24.813020,13.344050,0.000000,61.111110,145.047067,740.23937,758.5744,95.92031,51.58443,331.1062,9024.8430,1279.9654 +81.000000,17.000000,62.311560,1.224847,2.274716,17.935260,5.263158,10.469230,59.11449,4.587305,20.487360,26.086960,0.000000,0.000000,55.101212,311.12890,618.8832,93.98177,119.66884,534.4529,3257.2800,2451.6986 +910.000000,473.000000,30.647120,7.226302,11.490320,28.479640,11.456310,13.981210,59.65977,3.922567,23.510560,35.313530,6.666667,6.666667,160.173076,683.48082,834.1158,92.22175,138.51969,830.2409,9555.8889,3256.6754 +880.000000,352.000000,43.731610,1.656990,17.274450,20.431860,5.168986,13.207000,62.10635,3.058089,24.520820,35.839160,13.333330,86.666670,68.266798,321.02685,820.2386,74.98685,109.59934,878.8056,4239.8017,2687.4657 +200.000000,152.000000,12.890920,1.749271,2.587464,10.495630,8.661417,15.079550,59.96379,4.346546,22.369940,58.823530,0.000000,0.000000,130.610271,519.37139,904.2270,97.23197,255.67918,1315.8788,7831.8868,5719.5279 +1610.000000,757.000000,43.177150,2.752435,1.797588,43.810890,8.999082,14.070940,58.39890,3.882451,23.422400,29.011860,4.000000,44.000000,126.625543,525.53649,821.7274,90.93632,112.63712,679.5274,7394.7924,2638.2318 +538.000000,285.000000,49.189650,0.898770,4.328288,36.210970,10.140850,16.561010,66.96672,4.540894,24.110540,22.460940,0.000000,0.000000,167.942718,679.09946,1109.0365,109.48341,101.99275,541.5454,11246.5730,2459.1002 +54.000000,40.000000,7.723036,0.138122,0.690608,9.254144,5.000000,15.969320,62.78997,5.092907,19.095610,32.075470,0.000000,0.000000,79.846600,313.94985,1002.7131,97.25217,163.35739,612.5007,5013.5656,3119.4089 +143.000000,47.000000,48.694230,0.163221,1.468988,25.299240,4.301075,12.162620,52.08440,4.470921,20.178770,40.869570,0.000000,0.000000,52.312341,224.01891,633.4828,90.21769,182.72462,824.6977,2724.6569,3687.1581 +2349.000000,1785.000000,10.588160,8.755863,2.760139,7.792208,11.015120,14.191550,58.19862,3.718169,22.875710,46.688740,0.000000,0.000000,156.321626,641.06478,825.9286,85.05576,173.59663,1068.0381,9097.7029,3971.1461 +509.000000,280.000000,35.023650,0.704225,0.876689,19.617710,7.491857,13.514520,57.16813,3.976030,23.115920,39.736840,0.000000,0.000000,101.248851,428.29545,772.5998,91.90959,157.99487,918.5536,5788.2075,3652.1967 +8479.000000,3392.000000,64.152350,9.492747,16.924340,35.277330,25.084970,12.295970,62.78270,4.952585,22.193130,31.240320,4.166667,28.571430,308.444039,1574.90215,771.9742,109.91336,154.72034,693.3205,19364.9495,3433.7286 +1707.000000,683.000000,40.059770,2.532620,6.127555,37.385010,11.090910,12.812450,65.16445,4.103446,23.644490,34.332430,3.703704,81.481480,142.101730,722.73305,834.9163,97.02389,140.88127,811.7728,9259.9811,3331.0658 +595.000000,357.000000,26.923080,2.594662,1.762880,26.132840,13.333330,15.283930,62.99711,4.261820,24.326170,43.444730,0.000000,0.000000,203.785682,839.96126,962.8434,103.67376,185.15362,1056.8439,12837.9090,4504.0784 +1317.000000,435.000000,54.977400,1.804259,14.860010,41.521900,16.013440,13.173710,57.81114,3.832582,23.350250,44.717800,0.000000,0.000000,210.956415,925.75522,761.5872,89.49175,171.38464,1044.1718,12195.6308,4001.8741 +749.000000,330.000000,49.265040,2.389785,2.553705,44.137690,11.064720,13.668030,60.65716,4.097092,24.639980,29.655170,0.000000,83.333330,151.232925,671.15449,829.0639,100.95226,121.49996,730.7028,9173.3597,2993.7566 +3633.000000,1925.000000,64.554280,41.369020,16.193220,21.204120,43.737460,15.285470,52.88551,5.230051,17.931180,48.830660,2.654867,1.769912,668.547633,2313.07788,808.3799,93.78099,255.38684,875.5914,35356.4825,4579.3874 +200.000000,114.000000,36.412860,0.919842,0.328515,26.642580,5.673759,14.192450,53.51044,3.846512,23.320550,26.415090,0.000000,0.000000,80.524541,303.60534,759.4442,89.70278,101.60596,616.0144,4308.9036,2369.5069 +634.000000,279.000000,44.129830,19.627690,10.692260,17.626530,14.734300,13.201370,53.97081,4.022264,21.560640,29.835390,0.000000,0.000000,194.512946,795.22211,712.4886,86.72259,120.00582,643.2701,10498.0213,2587.4022 +193.000000,60.000000,40.582860,1.936027,0.336700,34.217170,7.207207,16.125200,52.19886,3.727909,22.026520,39.285710,0.000000,0.000000,116.217654,376.20799,841.7171,82.11286,146.45355,865.3275,6066.4291,3225.8621 +1932.000000,638.000000,48.768630,19.795470,5.832491,23.648810,11.271190,15.083600,59.46523,4.469021,22.002920,30.337080,0.000000,62.857140,170.010121,670.24391,896.9497,98.33151,135.57705,667.5043,10109.6910,2983.0909 +1207.000000,591.000000,35.133170,2.449629,4.936003,29.095470,11.326380,13.809780,56.91066,3.589197,24.385780,36.242600,0.000000,0.000000,156.414816,644.59176,785.9237,87.52537,130.08183,883.8041,8901.6704,3172.1469 +173.000000,130.000000,13.773990,0.730816,0.487211,21.843280,2.564103,14.550390,51.68300,3.786430,20.598800,29.729730,0.000000,0.000000,37.308699,132.52054,752.0078,77.99591,112.56954,612.3968,1928.2255,2318.7975 +2323.000000,558.000000,68.727080,20.872490,13.348300,42.185440,33.747550,12.677680,66.65475,4.527226,22.940490,18.209260,0.000000,21.951220,427.840640,2249.43451,845.0276,103.85678,82.43744,417.7293,28517.6109,1891.1552 +749.000000,397.000000,26.570330,4.436534,5.981941,26.723390,14.196240,10.593500,55.63190,3.616366,23.962600,26.286760,0.000000,0.000000,150.387868,789.76380,589.3365,86.65753,95.06255,629.8991,8366.3629,2277.9457 +437.000000,293.000000,18.073660,1.065779,1.648626,9.342215,3.284672,14.972580,60.46424,4.506425,23.304250,45.454550,0.000000,0.000000,49.180014,198.60520,905.3057,105.01885,204.83752,1059.2842,2973.6322,4773.5848 +727.000000,465.000000,38.074670,1.538031,1.165175,30.201340,8.932039,13.483160,55.68426,3.887088,21.219270,25.903610,0.000000,0.000000,120.432111,497.37398,750.7998,82.48117,100.68961,549.6557,6706.1730,2136.5601 +676.000000,453.000000,22.465790,2.346382,2.090835,12.614710,5.326877,16.195220,64.39768,4.933223,21.433270,25.635590,5.263158,0.000000,86.269945,343.03852,1042.9346,105.73510,126.46608,549.4545,5555.5843,2710.5817 +174.000000,96.000000,17.997810,0.617829,1.412180,9.223301,4.587156,11.087300,50.37247,3.667019,19.393940,35.955060,0.000000,0.000000,50.859175,231.06638,558.4947,71.11795,131.84789,697.3103,2561.9023,2557.0500 +423.000000,224.000000,36.826910,1.330486,3.876478,27.184630,5.802048,14.227840,59.65303,4.756442,22.281470,39.814810,0.000000,0.000000,82.550611,346.10974,848.7338,105.98052,189.37683,887.1325,4924.3941,4219.5943 +66.000000,34.000000,27.087790,1.005025,0.301508,21.608040,9.230770,12.864190,46.34738,4.792461,17.371320,41.333330,0.000000,0.000000,118.746379,427.82200,596.2215,83.25137,198.08837,718.0145,5503.5836,3441.0565 +331.000000,179.000000,19.302070,2.108511,0.539985,25.096430,8.290155,13.322900,51.76827,4.138211,21.009330,48.809520,0.000000,0.000000,110.448906,429.16698,689.7035,86.94104,201.98409,1025.4553,5717.7488,4243.5505 +705.000000,303.000000,31.914890,8.753316,4.823657,34.797130,11.899310,17.108610,57.48922,3.823838,23.523200,38.954470,0.000000,0.000000,203.580654,684.08205,983.5606,89.94891,148.95558,916.3338,11703.6930,3503.9120 +235.000000,108.000000,39.277270,1.385309,0.966495,54.381440,21.323530,14.497740,60.26291,4.158069,22.213290,33.333330,0.000000,0.000000,309.142994,1285.01797,873.6760,92.36439,138.60229,740.4429,18629.8564,3078.8128 +754.000000,302.000000,35.706330,4.651992,8.920774,32.866950,9.057301,17.083170,53.11772,4.325819,21.673770,42.914980,0.000000,13.333330,154.727413,481.10318,907.4190,93.75681,185.64244,930.1294,8218.7674,4023.5715 +590.000000,171.000000,44.542030,2.308979,1.528165,62.944790,22.371970,15.489660,62.89081,4.312730,24.507870,20.190020,0.000000,15.384620,346.534209,1406.99131,974.1573,105.69583,87.07410,494.8144,21793.8171,2134.0008 +715.000000,400.000000,23.649100,5.235658,2.399232,33.461290,11.250000,17.796090,60.28385,4.361515,23.737110,37.804880,0.000000,0.000000,200.206013,678.19331,1072.8168,103.52976,164.88655,897.3786,12069.1892,3913.9302 +605.000000,538.000000,7.894435,17.389000,4.916817,6.887782,13.528340,14.115750,66.18201,5.970823,18.747690,73.375260,0.000000,0.000000,190.962665,895.33273,934.2087,111.93914,438.11069,1375.6166,12638.2930,8213.5634 +2216.000000,975.000000,42.807840,12.245020,3.270391,49.410480,22.369510,16.577290,80.56504,5.038400,28.210850,38.107580,0.000000,0.000000,370.825854,1802.20047,1335.5500,142.13755,192.00123,1075.0472,29875.5998,5416.5179 +908.000000,463.000000,40.205450,18.394120,4.340957,25.200910,11.520000,15.609970,65.46892,4.317319,23.762800,29.551120,0.000000,0.000000,179.826854,754.20196,1021.9679,102.59159,127.58161,702.2174,11773.0699,3031.6963 +713.000000,399.000000,28.893570,31.459880,5.952142,18.429520,20.227270,14.806370,60.77492,4.090016,22.119770,26.720650,0.000000,0.000000,299.492444,1229.31072,899.8560,90.47021,109.28789,591.0546,18201.6293,2417.4229 +1269.000000,393.000000,56.348670,1.201376,0.587457,72.013760,19.716650,14.114210,59.92213,4.282146,22.535300,26.647560,4.000000,20.000000,278.284939,1181.46366,845.7535,96.49944,114.10874,600.5108,16675.4263,2571.4747 +345.000000,204.000000,14.506400,1.659053,1.226256,4.087521,3.333333,17.289160,58.61628,4.262088,24.333530,60.580910,14.285710,0.000000,57.630528,195.38758,1013.4262,103.71165,258.20117,1474.1474,3378.0871,6282.9459 +145.000000,59.000000,39.608940,0.747126,0.287356,8.908046,4.301075,16.491200,56.13194,4.741874,18.736380,28.828830,0.000000,0.000000,70.929888,241.42768,925.6830,88.84555,136.70268,540.1479,3981.4322,2561.3133 +335.000000,131.000000,49.377120,0.840532,1.074014,4.809713,4.090909,14.585830,55.39661,4.509515,20.738130,34.482760,0.000000,0.000000,59.669303,226.62249,808.0055,93.51891,155.50052,715.1080,3305.4771,3224.7901 +121.000000,80.000000,32.101620,1.633166,0.628141,8.354271,1.960784,14.403640,54.12202,2.908312,16.888890,43.243240,9.090909,0.000000,28.242427,106.12159,779.5541,49.11816,125.76483,730.3303,1528.5372,2124.0284 +435.000000,326.000000,11.443660,4.562111,7.805057,10.150240,10.162600,15.175620,61.41934,4.303057,22.279440,40.490800,0.000000,0.000000,154.223756,624.18018,932.0766,95.86970,174.23422,902.1123,9472.3213,3881.8409 +239.000000,100.000000,40.819420,1.316920,1.774979,39.965650,12.643680,15.513330,57.07422,4.262563,20.023700,39.664800,0.000000,16.666670,196.145580,721.62817,885.4112,85.35228,169.07371,794.2361,11194.8560,3385.4812 +1496.000000,688.000000,28.110860,6.548673,21.010710,18.015840,13.241530,15.965510,59.26899,3.955489,22.888910,26.116070,0.000000,34.615380,211.407780,784.81211,946.2597,90.53683,103.30183,597.7684,12529.9256,2364.4662 +323.000000,155.000000,22.712450,2.529475,15.348340,10.396570,18.220340,15.120850,62.35360,4.900856,20.228740,66.310160,0.000000,0.000000,275.507028,1136.10379,942.8394,99.13814,324.97655,1341.3710,17178.8550,6573.8660 +1052.000000,515.000000,23.019240,2.829361,8.373287,16.746570,9.129815,14.622740,53.90188,4.110539,22.381470,40.261440,5.263158,10.526320,133.502911,492.11419,788.1932,91.99991,165.49622,901.1102,7196.0579,3704.0487 +1324.000000,450.000000,35.460880,3.839582,35.214590,15.549300,23.876770,16.680850,68.33880,4.364927,25.670800,20.022750,0.000000,56.000000,398.284819,1631.70981,1139.9493,112.05117,87.39784,514.0000,27218.3066,2243.5725 +120.000000,55.000000,39.708680,0.429448,0.674847,25.092020,6.329114,15.629410,56.85404,3.942010,20.421610,43.835620,0.000000,0.000000,98.920318,359.83570,888.5951,80.50219,172.80045,895.1939,5624.0197,3528.8634 +386.000000,224.000000,30.760320,1.923440,0.716576,22.402410,6.153846,15.858610,54.12234,4.170568,21.147670,23.371650,11.111110,11.111110,97.591444,333.06055,858.3051,88.19780,97.47306,494.2559,5281.8773,2061.3280 +616.000000,320.000000,19.675840,3.863969,3.644564,12.847390,5.994550,15.717790,59.48468,4.081602,22.292980,14.450870,0.000000,0.000000,94.221078,356.58389,934.9677,90.99107,58.98270,322.1530,5604.7107,1314.9001 +234.000000,108.000000,33.558050,1.379099,0.858106,26.509350,17.567570,11.023640,50.73147,3.834786,21.023050,0.000000,0.000000,0.000000,193.658567,891.22865,559.2455,80.61890,0.00000,0.0000,9824.5838,0.0000 +232.000000,151.000000,21.463870,0.878378,0.439189,34.054050,14.285710,16.464530,56.83735,4.968968,20.913270,46.484380,0.000000,0.000000,235.207501,811.96190,935.8003,103.91737,230.97940,972.1404,13368.5710,4830.5345 +688.000000,193.000000,51.205220,4.550344,3.431583,39.264200,10.049020,13.277320,56.23431,3.767504,23.170010,12.967030,0.000000,41.666670,133.424054,565.09971,746.6409,87.29311,48.85334,300.4462,7503.0096,1131.9323 +120.000000,55.000000,42.130750,0.783085,0.234926,25.920130,1.724138,13.381750,49.55074,3.282389,21.306620,29.870130,0.000000,0.000000,23.071984,85.43231,663.0756,69.93662,98.04539,636.4315,1143.2339,2089.0158 +224.000000,72.000000,55.007260,0.673968,1.235608,64.588600,18.120810,13.327330,55.53515,4.008414,24.004090,13.071900,0.000000,0.000000,241.502015,1006.34190,740.1353,96.21833,52.39759,313.7791,13411.8506,1257.7564 +733.000000,359.000000,42.600700,4.702023,1.366867,32.558780,9.221311,14.964160,59.64521,3.932407,24.178630,21.406250,0.000000,50.000000,137.989173,550.00703,892.5405,95.08021,84.17809,517.5738,8230.3932,2035.3108 +120.000000,31.000000,53.904280,1.221374,1.475827,53.435110,14.736840,12.708570,51.29737,4.109917,21.686620,28.865980,0.000000,16.666670,187.284163,755.96113,651.9162,89.13021,118.63678,626.0055,9607.1850,2572.8308 +135.000000,39.000000,72.297700,12.323560,0.597177,45.331160,6.521739,12.382670,52.19434,4.350793,21.443790,17.721520,0.000000,0.000000,80.756542,340.39786,646.3053,93.29749,77.10267,380.0166,4215.0344,1653.3734 +776.000000,303.000000,49.256420,13.283120,2.939555,25.528200,14.107880,15.097450,57.77756,4.165932,23.061710,24.242420,0.000000,25.000000,212.993013,815.11888,872.2938,96.07352,100.99227,559.0717,12306.2166,2329.0545 +207.000000,79.000000,49.159070,0.876271,1.892744,29.758150,3.597122,13.243400,55.37246,3.941387,20.911080,36.423840,0.000000,0.000000,47.638125,199.18149,733.3196,82.41866,143.56045,761.6618,2637.8402,3002.0040 +41.000000,19.000000,51.293100,0.142248,0.568990,32.290180,2.564103,15.812220,53.21662,5.045576,19.643840,34.210530,0.000000,0.000000,40.544161,136.45289,841.4729,99.11449,172.61183,672.0262,2157.6232,3390.7592 +43.000000,23.000000,60.145990,0.480769,0.000000,5.128205,5.555556,16.132050,63.50783,6.482470,17.908310,42.424240,0.000000,0.000000,89.622507,352.82131,1024.5115,116.09008,275.01386,759.7464,5691.7309,4925.0335 +259.000000,91.000000,84.099040,0.562852,0.241222,90.726350,18.787880,14.217390,58.39111,3.952910,22.751840,8.370044,0.000000,0.000000,267.114617,1097.04517,830.1692,89.93598,33.08603,190.4339,15597.1190,752.7681 +342.000000,96.000000,74.574420,0.895583,0.244250,80.460000,15.981740,12.970660,53.30490,3.688748,22.964750,16.465860,0.000000,0.000000,207.293716,851.90505,691.3997,84.71118,60.73841,378.1344,11049.7708,1394.8424 +250.000000,40.000000,76.580370,1.721170,0.057372,83.763630,23.684210,13.284940,58.36271,4.115279,22.618730,27.428570,0.000000,0.000000,314.643309,1382.27468,775.3451,93.08238,112.87622,620.3994,18363.4362,2553.1167 +1750.000000,578.000000,44.833280,7.621228,1.954371,43.135170,12.711110,14.473250,58.32298,4.057255,22.312730,35.917310,3.125000,28.125000,183.971073,741.34981,844.1231,90.52844,145.72569,801.4132,10729.7412,3251.5379 +150.000000,26.000000,72.663140,1.192504,0.298126,79.258940,13.157890,14.814060,58.00131,4.081734,21.106030,36.134450,0.000000,0.000000,194.921772,763.17486,859.2349,86.14920,147.49121,762.6548,11305.7181,3112.9540 +134.000000,23.000000,92.334500,0.933553,0.109830,83.031300,17.105260,14.402380,61.35021,3.792456,22.918920,0.000000,0.000000,100.000000,246.356455,1049.41129,883.5890,86.91900,0.00000,0.0000,15114.0202,0.0000 +53.000000,31.000000,36.716420,0.427960,0.855920,4.707561,4.651163,13.268090,48.16047,4.666561,18.426670,70.270270,0.000000,0.000000,61.712049,224.00220,638.9975,85.98918,327.92050,1294.8471,2972.0813,6042.4829 +266.000000,59.000000,51.806540,0.547196,0.437757,76.908340,15.527950,15.024040,56.92598,3.897079,23.484750,30.601090,0.000000,16.666670,233.292542,883.94377,855.2582,91.52193,119.25487,718.6589,13280.4066,2800.6707 +304.000000,204.000000,23.281700,1.366251,0.862896,18.648130,8.152174,14.221360,56.80801,3.825936,22.877170,35.546880,0.000000,0.000000,115.935001,463.10878,807.8872,87.52659,136.00009,813.2120,6586.0367,3111.2971 +1338.000000,736.000000,15.681540,5.522166,1.674629,17.439770,6.917476,15.000220,57.20355,3.831574,23.209860,37.687190,0.000000,0.000000,103.763662,395.70418,858.0658,88.93030,144.40126,874.7144,5935.6498,3351.5330 +1170.000000,526.000000,38.158210,2.905512,2.354871,33.442680,9.943978,15.352550,56.41361,3.699070,24.851120,34.363410,0.000000,22.222220,152.665419,560.97570,866.0928,91.92603,127.11266,853.9692,8612.4074,3158.8919 +1431.000000,1088.000000,12.327020,5.661354,1.485200,14.531150,5.405405,15.732220,62.75024,4.265133,23.810320,41.166380,0.000000,0.000000,85.039021,339.19046,987.2006,101.55418,175.58009,980.1847,5336.2190,4180.6180 +248.000000,186.000000,1.247051,6.066291,1.000625,2.345216,4.729730,12.224850,55.20884,4.079327,20.988490,74.342100,0.000000,0.000000,57.820240,261.12291,674.9198,85.61891,303.26574,1560.3284,3192.1884,6365.0899 +516.000000,284.000000,23.455290,3.861647,1.819697,29.781910,10.365850,10.287230,54.40298,4.155084,21.652560,21.140940,0.000000,0.000000,106.635883,563.93313,559.6560,89.96821,87.84238,457.7555,5801.3098,1902.0124 +591.000000,455.000000,17.898830,10.490960,3.372093,12.700260,14.928910,14.437660,49.78331,4.254717,20.062860,46.420320,0.000000,0.000000,215.538527,743.21055,718.7545,85.36179,197.50532,931.3244,10730.2213,3962.5217 +59.000000,17.000000,49.235810,0.779510,1.670379,43.763920,4.166667,11.360910,50.43317,5.039203,19.545450,27.083330,0.000000,0.000000,47.337129,210.13823,572.9667,98.49349,136.47840,529.3559,2387.3615,2667.5317 +342.000000,96.000000,62.239680,13.820860,3.956157,32.128790,15.884480,13.270890,52.88133,4.324174,20.987110,8.000000,0.000000,18.181820,210.801187,839.99243,701.7823,90.75192,34.59339,167.8969,11147.4471,726.0153 +154.000000,37.000000,46.161880,1.150575,0.800400,45.622810,13.333330,11.807140,48.42615,3.945069,19.858300,53.773580,0.000000,0.000000,157.428494,645.68184,571.7743,78.34236,212.14048,1067.8519,7623.6559,4212.7494 +595.000000,208.000000,43.414310,3.648564,1.541204,46.319980,21.377670,14.404680,53.79616,3.845481,22.708840,29.892470,0.000000,6.666667,307.938495,1150.03656,774.9165,87.32641,114.95093,678.8233,16565.9086,2610.4022 +709.000000,199.000000,70.621040,20.461720,2.989345,17.423050,11.032860,16.564200,61.70566,3.970984,24.886470,15.142860,0.000000,13.636360,182.750500,680.78991,1022.1049,98.82377,60.13205,376.8523,11276.7402,1496.4746 +156.000000,72.000000,77.748270,5.998899,9.576225,11.117230,7.874016,16.918710,65.09957,6.913397,20.032520,23.529410,0.000000,0.000000,133.218193,512.59506,1101.4007,138.49276,162.66815,471.3534,8672.4471,3258.6530 diff --git a/statsmodels/datasets/statecrime/__init__.py b/statsmodels/datasets/statecrime/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/statecrime/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/statecrime/data.py b/statsmodels/datasets/statecrime/data.py new file mode 100644 index 0000000..1670270 --- /dev/null +++ b/statsmodels/datasets/statecrime/data.py @@ -0,0 +1,81 @@ +"""Statewide Crime Data""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """Public domain.""" +TITLE = """Statewide Crime Data 2009""" +SOURCE = """ +All data is for 2009 and was obtained from the American Statistical Abstracts except as indicated below. +""" + +DESCRSHORT = """State crime data 2009""" + +DESCRLONG = DESCRSHORT + +#suggested notes +NOTE = """:: + + Number of observations: 51 + Number of variables: 8 + Variable name definitions: + + state + All 50 states plus DC. + violent + Rate of violent crimes / 100,000 population. Includes murder, forcible + rape, robbery, and aggravated assault. Numbers for Illinois and + Minnesota do not include forcible rapes. Footnote included with the + American Statistical Abstract table reads: + "The data collection methodology for the offense of forcible + rape used by the Illinois and the Minnesota state Uniform Crime + Reporting (UCR) Programs (with the exception of Rockford, Illinois, + and Minneapolis and St. Paul, Minnesota) does not comply with + national UCR guidelines. Consequently, their state figures for + forcible rape and violent crime (of which forcible rape is a part) + are not published in this table." + murder + Rate of murders / 100,000 population. + hs_grad + Percent of population having graduated from high school or higher. + poverty + % of individuals below the poverty line + white + Percent of population that is one race - white only. From 2009 American + Community Survey + single + Calculated from 2009 1-year American Community Survey obtained obtained + from Census. Variable is Male householder, no wife present, family + household combined with Female householder, no husband present, family + household, divided by the total number of Family households. + urban + % of population in Urbanized Areas as of 2010 Census. Urbanized + Areas are area of 50,000 or more people.""" + + +def load(as_pandas=None): + """ + Load the statecrime data and return a Dataset class instance. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas, + retain_index=True) + + +def load_pandas(): + data = _get_data() + return du.process_pandas(data, endog_idx=2, exog_idx=[7, 4, 3, 5], index_idx=0) + + +def _get_data(): + return du.load_csv(__file__, 'statecrime.csv') diff --git a/statsmodels/datasets/statecrime/statecrime.csv b/statsmodels/datasets/statecrime/statecrime.csv new file mode 100644 index 0000000..4610e85 --- /dev/null +++ b/statsmodels/datasets/statecrime/statecrime.csv @@ -0,0 +1,52 @@ +state,violent,murder,hs_grad,poverty,single,white,urban +Alabama,459.9,7.1,82.1,17.5,29.0,70,48.65 +Alaska,632.6,3.2,91.4,9.0,25.5,68.3,44.46 +Arizona,423.2,5.5,84.2,16.5,25.7,80,80.07 +Arkansas,530.3,6.3,82.4,18.8,26.3,78.4,39.54 +California,473.4,5.4,80.6,14.2,27.8,62.7,89.73 +Colorado,340.9,3.2,89.3,12.9,21.4,84.6,76.86 +Connecticut,300.5,3.0,88.6,9.4,25.0,79.1,84.83 +Delaware,645.1,4.6,87.4,10.8,27.6,71.9,68.71 +District of Columbia,1348.9,24.2,87.1,18.4,48.0,38.7,100 +Florida,612.6,5.5,85.3,14.9,26.6,76.9,87.44 +Georgia,432.6,6.0,83.9,16.5,29.3,61.9,65.38 +Hawaii,274.1,1.8,90.4,10.4,26.3,26.9,71.46 +Idaho,238.5,1.5,88.4,14.3,19.0,92.3,50.51 +Illinois,618.2,8.4,86.4,13.3,26.0,72.5,79.97 +Indiana,366.4,5.3,86.6,14.4,24.5,85.7,59.17 +Iowa,294.5,1.3,90.5,11.8,20.3,92.3,41.66 +Kansas ,412.0,4.7,89.7,13.4,22.8,86.3,50.17 +Kentucky ,265.5,4.3,81.7,18.6,25.4,88.8,40.99 +Louisiana,628.4,12.3,82.2,17.3,31.4,63.7,61.33 +Maine,119.9,2.0,90.2,12.3,22.0,94.9,26.21 +Maryland,590.0,7.7,88.2,9.1,27.3,60.2,83.53 +Massachusetts,465.6,2.7,89.0,10.3,25.0,82.4,90.3 +Michigan,504.4,6.3,87.9,16.2,25.6,79.9,66.37 +Minnesota,214.2,1.5,91.5,11.0,20.2,87.4,58 +Mississippi,306.7,6.9,80.4,21.9,32.8,59.6,27.62 +Missouri,500.3,6.6,86.8,14.6,25.3,83.9,56.61 +Montana ,283.9,3.2,90.8,15.1,20.3,89.4,26.49 +Nebraska,305.5,2.5,89.8,12.3,20.9,88.1,53.78 +Nevada,704.6,5.9,83.9,12.4,28.5,76.2,86.51 +New Hampshire,169.5,0.9,91.3,8.5,19.5,94.5,47.34 +New Jersey,311.3,3.7,87.4,9.4,25.8,70.7,92.24 +New Mexico,652.8,10.0,82.8,18.0,29.1,72.5,53.75 +New York,385.5,4.0,84.7,14.2,30.2,67.4,82.66 +North Carolina,414.0,5.4,84.3,16.3,26.3,70.5,54.88 +North Dakota,223.6,2.0,90.1,11.7,18.2,90.2,40 +Ohio,358.1,5.0,87.6,15.2,26.3,84,65.31 +Oklahoma,510.4,6.5,85.6,16.2,25.9,75.4,45.79 +Oregon,261.2,2.3,89.1,14.3,22.7,85.6,62.47 +Pennsylvania,388.9,5.4,87.9,12.5,24.5,83.5,70.68 +Rhode Island,254.3,3.0,84.7,11.5,27.3,82.6,90.46 +South Carolina,675.1,6.7,83.6,17.1,28.4,67.6,55.78 +South Dakota,201.0,3.6,89.9,14.2,20.8,86.3,29.92 +Tennessee,666.0,7.4,83.1,17.1,26.3,79.1,54.38 +Texas,491.4,5.4,79.9,17.2,27.6,73.8,75.35 +Utah,216.2,1.4,90.4,11.5,17.9,89.3,81.17 +Vermont,135.1,1.3,91.0,11.4,21.3,95.8,17.38 +Virginia,230.0,4.7,86.6,10.5,24.0,70.4,69.79 +Washington,338.3,2.8,89.7,12.3,22.2,80.2,74.97 +West Virginia,331.2,4.9,82.8,17.7,23.3,94.3,33.2 +Wisconsin,259.7,2.6,89.8,12.4,22.2,88.4,55.8 +Wyoming,219.3,2.0,91.8,9.8,18.9,91.3,24.51 diff --git a/statsmodels/datasets/strikes/__init__.py b/statsmodels/datasets/strikes/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/strikes/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/strikes/data.py b/statsmodels/datasets/strikes/data.py new file mode 100644 index 0000000..a010b62 --- /dev/null +++ b/statsmodels/datasets/strikes/data.py @@ -0,0 +1,73 @@ +"""U.S. Strike Duration Data""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """This is public domain.""" +TITLE = __doc__ +SOURCE = """ +This is a subset of the data used in Kennan (1985). It was originally +published by the Bureau of Labor Statistics. + +:: + + Kennan, J. 1985. "The duration of contract strikes in US manufacturing. + `Journal of Econometrics` 28.1, 5-28. +""" + +DESCRSHORT = """Contains data on the length of strikes in US manufacturing and +unanticipated industrial production.""" + +DESCRLONG = """Contains data on the length of strikes in US manufacturing and +unanticipated industrial production. The data is a subset of the data originally +used by Kennan. The data here is data for the months of June only to avoid +seasonal issues.""" + +#suggested notes +NOTE = """:: + + Number of observations - 62 + + Number of variables - 2 + + Variable name definitions:: + + duration - duration of the strike in days + iprod - unanticipated industrial production +""" + + + +def load_pandas(): + """ + Load the strikes data and return a Dataset class instance. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + data = _get_data() + return du.process_pandas(data, endog_idx=0) + + +def load(as_pandas=None): + """ + Load the strikes data and return a Dataset class instance. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def _get_data(): + return du.load_csv(__file__,'strikes.csv').astype(float) diff --git a/statsmodels/datasets/strikes/strikes.csv b/statsmodels/datasets/strikes/strikes.csv new file mode 100644 index 0000000..86efd2a --- /dev/null +++ b/statsmodels/datasets/strikes/strikes.csv @@ -0,0 +1,63 @@ +duration,iprod +7, .01138 +9, .01138 +13, .01138 +14, .01138 +26, .01138 +29, .01138 +52, .01138 +130, .01138 +9, .02299 +37, .02299 +41, .02299 +49, .02299 +52, .02299 +119, .02299 +3, -.03957 +17, -.03957 +19, -.03957 +28, -.03957 +72, -.03957 +99, -.03957 +104, -.03957 +114, -.03957 +152, -.03957 +153, -.03957 +216, -.03957 +15, -.05467 +61, -.05467 +98, -.05467 +2, .00535 +25, .00535 +85, .00535 +3, .07427 +10, .07427 +1, .06450 +2, .06450 +2, .06450 +3, .06450 +3, .06450 +4, .06450 +8, .06450 +11, .06450 +22, .06450 +23, .06450 +27, .06450 +32, .06450 +33, .06450 +35, .06450 +43, .06450 +43, .06450 +44, .06450 +100, .06450 +5, -.10443 +49, -.10443 +2, -.00700 +12, -.00700 +12, -.00700 +21, -.00700 +21, -.00700 +27, -.00700 +38, -.00700 +42, -.00700 +117, -.00700 diff --git a/statsmodels/datasets/sunspots/R_sunspots.s b/statsmodels/datasets/sunspots/R_sunspots.s new file mode 100644 index 0000000..373a491 --- /dev/null +++ b/statsmodels/datasets/sunspots/R_sunspots.s @@ -0,0 +1,9 @@ +d <- read.table('./sunspots.csv', sep=',', header=T) +attach(d) + +mod_ols <- ar(SUNACTIVITY, aic=FALSE, order.max=9, method="ols", intercept=FALSE) +mod_yw <- ar(SUNACTIVITY, aic=FALSE, order.max=9, method="yw") +mod_burg <- ar(SUNACTIVITY, aic=FALSE, order.max=9, method="burg") +mod_mle <- ar(SUNACTIVITY, aic=FALSE, order.max=9, method="mle") + +select_ols <- ar(SUNACTIVITY, aic=TRUE, method="ols") diff --git a/statsmodels/datasets/sunspots/__init__.py b/statsmodels/datasets/sunspots/__init__.py new file mode 100644 index 0000000..ede34e9 --- /dev/null +++ b/statsmodels/datasets/sunspots/__init__.py @@ -0,0 +1,5 @@ +__all__ = ["load", "load_pandas", + "COPYRIGHT", "TITLE", "SOURCE", "DESCRSHORT", "DESCRLONG", "NOTE"] +from .data import ( + load, load_pandas, + COPYRIGHT, TITLE, SOURCE, DESCRSHORT, DESCRLONG, NOTE) diff --git a/statsmodels/datasets/sunspots/arima_mod.R b/statsmodels/datasets/sunspots/arima_mod.R new file mode 100644 index 0000000..902b272 --- /dev/null +++ b/statsmodels/datasets/sunspots/arima_mod.R @@ -0,0 +1,3 @@ +dta <- read.csv('./sunspots.csv') +attach(dta) +arma_mod <- arima(SUNACTIVITY, order=c(9,0,0), xreg=rep(1,309), include.mean=FALSE) diff --git a/statsmodels/datasets/sunspots/data.py b/statsmodels/datasets/sunspots/data.py new file mode 100644 index 0000000..eef3389 --- /dev/null +++ b/statsmodels/datasets/sunspots/data.py @@ -0,0 +1,66 @@ +"""Yearly sunspots data 1700-2008""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """This data is public domain.""" +TITLE = __doc__ +SOURCE = """ +http://www.ngdc.noaa.gov/stp/solar/solarda3.html + +The original dataset contains monthly data on sunspot activity in the file +./src/sunspots_yearly.dat. There is also sunspots_monthly.dat. +""" + +DESCRSHORT = """Yearly (1700-2008) data on sunspots from the National +Geophysical Data Center.""" + +DESCRLONG = DESCRSHORT + +NOTE = """:: + + Number of Observations - 309 (Annual 1700 - 2008) + Number of Variables - 1 + Variable name definitions:: + + SUNACTIVITY - Number of sunspots for each year + + The data file contains a 'YEAR' variable that is not returned by load. +""" + + +def load_pandas(): + data = _get_data() + # TODO: time series + endog = data.set_index(data.YEAR).SUNACTIVITY + dataset = du.Dataset(data=data, names=list(data.columns), + endog=endog, endog_name='volume') + return dataset + + +def load(as_pandas=None): + """ + Load the yearly sunspot data and returns a data class. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + + Notes + ----- + This dataset only contains data for one variable, so the attributes + data, raw_data, and endog are all the same variable. There is no exog + attribute defined. + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def _get_data(): + return du.load_csv(__file__, 'sunspots.csv').astype(float) diff --git a/statsmodels/datasets/sunspots/src/sunspots_monthly.dat b/statsmodels/datasets/sunspots/src/sunspots_monthly.dat new file mode 100644 index 0000000..577ce4d --- /dev/null +++ b/statsmodels/datasets/sunspots/src/sunspots_monthly.dat @@ -0,0 +1,323 @@ + MONTHLY MEAN SUNSPOT NUMBERS +=============================================================================== +Year Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec +------------------------------------------------------------------------------- +1749 58.0 62.6 70.0 55.7 85.0 83.5 94.8 66.3 75.9 75.5 158.6 85.2 +1750 73.3 75.9 89.2 88.3 90.0 100.0 85.4 103.0 91.2 65.7 63.3 75.4 + +1751 70.0 43.5 45.3 56.4 60.7 50.7 66.3 59.8 23.5 23.2 28.5 44.0 +1752 35.0 50.0 71.0 59.3 59.7 39.6 78.4 29.3 27.1 46.6 37.6 40.0 +1753 44.0 32.0 45.7 38.0 36.0 31.7 22.0 39.0 28.0 25.0 20.0 6.7 +1754 0.0 3.0 1.7 13.7 20.7 26.7 18.8 12.3 8.2 24.1 13.2 4.2 +1755 10.2 11.2 6.8 6.5 0.0 0.0 8.6 3.2 17.8 23.7 6.8 20.0 + +1756 12.5 7.1 5.4 9.4 12.5 12.9 3.6 6.4 11.8 14.3 17.0 9.4 +1757 14.1 21.2 26.2 30.0 38.1 12.8 25.0 51.3 39.7 32.5 64.7 33.5 +1758 37.6 52.0 49.0 72.3 46.4 45.0 44.0 38.7 62.5 37.7 43.0 43.0 +1759 48.3 44.0 46.8 47.0 49.0 50.0 51.0 71.3 77.2 59.7 46.3 57.0 +1760 67.3 59.5 74.7 58.3 72.0 48.3 66.0 75.6 61.3 50.6 59.7 61.0 + +1761 70.0 91.0 80.7 71.7 107.2 99.3 94.1 91.1 100.7 88.7 89.7 46.0 +1762 43.8 72.8 45.7 60.2 39.9 77.1 33.8 67.7 68.5 69.3 77.8 77.2 +1763 56.5 31.9 34.2 32.9 32.7 35.8 54.2 26.5 68.1 46.3 60.9 61.4 +1764 59.7 59.7 40.2 34.4 44.3 30.0 30.0 30.0 28.2 28.0 26.0 25.7 +1765 24.0 26.0 25.0 22.0 20.2 20.0 27.0 29.7 16.0 14.0 14.0 13.0 + +1766 12.0 11.0 36.6 6.0 26.8 3.0 3.3 4.0 4.3 5.0 5.7 19.2 +1767 27.4 30.0 43.0 32.9 29.8 33.3 21.9 40.8 42.7 44.1 54.7 53.3 +1768 53.5 66.1 46.3 42.7 77.7 77.4 52.6 66.8 74.8 77.8 90.6 111.8 +1769 73.9 64.2 64.3 96.7 73.6 94.4 118.6 120.3 148.8 158.2 148.1 112.0 +1770 104.0 142.5 80.1 51.0 70.1 83.3 109.8 126.3 104.4 103.6 132.2 102.3 + +1771 36.0 46.2 46.7 64.9 152.7 119.5 67.7 58.5 101.4 90.0 99.7 95.7 +1772 100.9 90.8 31.1 92.2 38.0 57.0 77.3 56.2 50.5 78.6 61.3 64.0 +1773 54.6 29.0 51.2 32.9 41.1 28.4 27.7 12.7 29.3 26.3 40.9 43.2 +1774 46.8 65.4 55.7 43.8 51.3 28.5 17.5 6.6 7.9 14.0 17.7 12.2 +1775 4.4 0.0 11.6 11.2 3.9 12.3 1.0 7.9 3.2 5.6 15.1 7.9 + +1776 21.7 11.6 6.3 21.8 11.2 19.0 1.0 24.2 16.0 30.0 35.0 40.0 +1777 45.0 36.5 39.0 95.5 80.3 80.7 95.0 112.0 116.2 106.5 146.0 157.3 +1778 177.3 109.3 134.0 145.0 238.9 171.6 153.0 140.0 171.7 156.3 150.3 105.0 +1779 114.7 165.7 118.0 145.0 140.0 113.7 143.0 112.0 111.0 124.0 114.0 110.0 +1780 70.0 98.0 98.0 95.0 107.2 88.0 86.0 86.0 93.7 77.0 60.0 58.7 + +1781 98.7 74.7 53.0 68.3 104.7 97.7 73.5 66.0 51.0 27.3 67.0 35.2 +1782 54.0 37.5 37.0 41.0 54.3 38.0 37.0 44.0 34.0 23.2 31.5 30.0 +1783 28.0 38.7 26.7 28.3 23.0 25.2 32.2 20.0 18.0 8.0 15.0 10.5 +1784 13.0 8.0 11.0 10.0 6.0 9.0 6.0 10.0 10.0 8.0 17.0 14.0 +1785 6.5 8.0 9.0 15.7 20.7 26.3 36.3 20.0 32.0 47.2 40.2 27.3 + +1786 37.2 47.6 47.7 85.4 92.3 59.0 83.0 89.7 111.5 112.3 116.0 112.7 +1787 134.7 106.0 87.4 127.2 134.8 99.2 128.0 137.2 157.3 157.0 141.5 174.0 +1788 138.0 129.2 143.3 108.5 113.0 154.2 141.5 136.0 141.0 142.0 94.7 129.5 +1789 114.0 125.3 120.0 123.3 123.5 120.0 117.0 103.0 112.0 89.7 134.0 135.5 +1790 103.0 127.5 96.3 94.0 93.0 91.0 69.3 87.0 77.3 84.3 82.0 74.0 + +1791 72.7 62.0 74.0 77.2 73.7 64.2 71.0 43.0 66.5 61.7 67.0 66.0 +1792 58.0 64.0 63.0 75.7 62.0 61.0 45.8 60.0 59.0 59.0 57.0 56.0 +1793 56.0 55.0 55.5 53.0 52.3 51.0 50.0 29.3 24.0 47.0 44.0 45.7 +1794 45.0 44.0 38.0 28.4 55.7 41.5 41.0 40.0 11.1 28.5 67.4 51.4 +1795 21.4 39.9 12.6 18.6 31.0 17.1 12.9 25.7 13.5 19.5 25.0 18.0 + +1796 22.0 23.8 15.7 31.7 21.0 6.7 26.9 1.5 18.4 11.0 8.4 5.1 +1797 14.4 4.2 4.0 4.0 7.3 11.1 4.3 6.0 5.7 6.9 5.8 3.0 +1798 2.0 4.0 12.4 1.1 0.0 0.0 0.0 3.0 2.4 1.5 12.5 9.9 +1799 1.6 12.6 21.7 8.4 8.2 10.6 2.1 0.0 0.0 4.6 2.7 8.6 +1800 6.9 9.3 13.9 0.0 5.0 23.7 21.0 19.5 11.5 12.3 10.5 40.1 + +1801 27.0 29.0 30.0 31.0 32.0 31.2 35.0 38.7 33.5 32.6 39.8 48.2 +1802 47.8 47.0 40.8 42.0 44.0 46.0 48.0 50.0 51.8 38.5 34.5 50.0 +1803 50.0 50.8 29.5 25.0 44.3 36.0 48.3 34.1 45.3 54.3 51.0 48.0 +1804 45.3 48.3 48.0 50.6 33.4 34.8 29.8 43.1 53.0 62.3 61.0 60.0 +1805 61.0 44.1 51.4 37.5 39.0 40.5 37.6 42.7 44.4 29.4 41.0 38.3 + +1806 39.0 29.6 32.7 27.7 26.4 25.6 30.0 26.3 24.0 27.0 25.0 24.0 +1807 12.0 12.2 9.6 23.8 10.0 12.0 12.7 12.0 5.7 8.0 2.6 0.0 +1808 0.0 4.5 0.0 12.3 13.5 13.5 6.7 8.0 11.7 4.7 10.5 12.3 +1809 7.2 9.2 0.9 2.5 2.0 7.7 0.3 0.2 0.4 0.0 0.0 0.0 +1810 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + +1811 0.0 0.0 0.0 0.0 0.0 0.0 6.6 0.0 2.4 6.1 0.8 1.1 +1812 11.3 1.9 0.7 0.0 1.0 1.3 0.5 15.6 5.2 3.9 7.9 10.1 +1813 0.0 10.3 1.9 16.6 5.5 11.2 18.3 8.4 15.3 27.8 16.7 14.3 +1814 22.2 12.0 5.7 23.8 5.8 14.9 18.5 2.3 8.1 19.3 14.5 20.1 +1815 19.2 32.2 26.2 31.6 9.8 55.9 35.5 47.2 31.5 33.5 37.2 65.0 + +1816 26.3 68.8 73.7 58.8 44.3 43.6 38.8 23.2 47.8 56.4 38.1 29.9 +1817 36.4 57.9 96.2 26.4 21.2 40.0 50.0 45.0 36.7 25.6 28.9 28.4 +1818 34.9 22.4 25.4 34.5 53.1 36.4 28.0 31.5 26.1 31.6 10.9 25.8 +1819 32.8 20.7 3.7 20.2 19.6 35.0 31.4 26.1 14.9 27.5 25.1 30.6 +1820 19.2 26.6 4.5 19.4 29.3 10.8 20.6 25.9 5.2 8.9 7.9 9.1 + +1821 21.5 4.2 5.7 9.2 1.7 1.8 2.5 4.8 4.4 18.8 4.4 0.2 +1822 0.0 0.9 16.1 13.5 1.5 5.6 7.9 2.1 0.0 0.4 0.0 0.0 +1823 0.0 0.0 0.6 0.0 0.0 0.0 0.5 0.0 0.0 0.0 0.0 20.4 +1824 21.7 10.8 0.0 19.4 2.8 0.0 0.0 1.4 20.5 25.2 0.0 0.8 +1825 5.0 15.5 22.4 3.8 15.5 15.4 30.9 25.7 15.7 15.6 11.7 22.0 + +1826 17.7 18.2 36.7 24.0 32.4 37.1 52.5 39.6 18.9 50.6 39.5 68.1 +1827 34.6 47.4 57.8 46.0 56.3 56.7 42.3 53.7 49.6 56.1 48.2 46.1 +1828 52.8 64.4 65.0 61.1 89.1 98.0 54.2 76.4 50.4 54.7 57.0 46.9 +1829 43.0 49.4 72.3 95.0 67.4 73.9 90.8 77.6 52.8 57.2 67.6 56.5 +1830 52.2 72.1 84.6 106.3 66.3 65.1 43.9 50.7 62.1 84.4 81.2 82.1 + +1831 47.5 50.1 93.4 54.5 38.1 33.4 45.2 55.0 37.9 46.3 43.5 28.9 +1832 30.9 55.6 55.1 26.9 41.3 26.7 14.0 8.9 8.2 21.1 14.3 27.5 +1833 11.3 14.9 11.8 2.8 12.9 1.0 7.0 5.7 11.6 7.5 5.9 9.9 +1834 4.9 18.1 3.9 1.4 8.8 7.8 8.7 4.0 11.5 24.8 30.5 34.5 +1835 7.5 24.5 19.7 61.5 43.6 33.2 59.8 59.0 100.8 95.2 100.0 77.5 + +1836 88.6 107.6 98.2 142.9 111.4 124.7 116.7 107.8 95.1 137.4 120.9 206.2 +1837 188.0 175.6 134.6 138.2 111.7 158.0 162.8 134.0 96.3 123.7 107.0 129.8 +1838 144.9 84.8 140.8 126.6 137.6 94.5 108.2 78.8 73.6 90.8 77.4 79.8 +1839 105.6 102.5 77.7 61.8 53.8 54.6 84.8 131.2 132.7 90.9 68.8 63.7 +1840 81.2 87.7 67.8 65.9 69.2 48.5 60.7 57.8 74.0 55.0 54.3 53.7 + +1841 24.1 29.9 29.7 40.2 67.5 55.7 30.8 39.3 36.5 28.5 19.8 38.8 +1842 20.4 22.1 21.7 26.9 24.9 20.5 12.6 26.6 18.4 38.1 40.5 17.6 +1843 13.3 3.5 8.3 9.5 21.1 10.5 9.5 11.8 4.2 5.3 19.1 12.7 +1844 9.4 14.7 13.6 20.8 11.6 3.7 21.2 23.9 7.0 21.5 10.7 21.6 +1845 25.7 43.6 43.3 57.0 47.8 31.1 30.6 32.3 29.6 40.7 39.4 59.7 + +1846 38.7 51.0 63.9 69.3 59.9 65.1 46.5 54.8 107.1 55.9 60.4 65.5 +1847 62.6 44.9 85.7 44.7 75.4 85.3 52.2 140.6 160.9 180.4 138.9 109.6 +1848 159.1 111.8 108.6 107.1 102.2 129.0 139.2 132.6 100.3 132.4 114.6 159.5 +1849 157.0 131.7 96.2 102.5 80.6 81.1 78.0 67.7 93.7 71.5 99.0 97.0 +1850 78.0 89.4 82.6 44.1 61.6 70.0 39.1 61.6 86.2 71.0 54.8 61.0 + +1851 75.5 105.4 64.6 56.5 62.6 63.2 36.1 57.4 67.9 62.5 51.0 71.4 +1852 68.4 66.4 61.2 65.4 54.9 46.9 42.1 39.7 37.5 67.3 54.3 45.4 +1853 41.1 42.9 37.7 47.6 34.7 40.0 45.9 50.4 33.5 42.3 28.8 23.4 +1854 15.4 20.0 20.7 26.5 24.0 21.1 18.7 15.8 22.4 12.6 28.2 21.6 +1855 12.3 11.4 17.4 4.4 9.1 5.3 0.4 3.1 0.0 9.6 4.2 3.1 + +1856 0.5 4.9 0.4 6.5 0.0 5.2 4.6 5.9 4.4 4.5 7.7 7.2 +1857 13.7 7.4 5.2 11.1 28.6 16.0 22.2 16.9 42.4 40.6 31.4 37.2 +1858 39.0 34.9 57.5 38.3 41.4 44.5 56.7 55.3 80.1 91.2 51.9 66.9 +1859 83.7 87.6 90.3 85.7 91.0 87.1 95.2 106.8 105.8 114.6 97.2 81.0 +1860 82.4 88.3 98.9 71.4 107.1 108.6 116.7 100.3 92.2 90.1 97.9 95.6 + +1861 62.3 77.7 101.0 98.5 56.8 88.1 78.0 82.5 79.9 67.2 53.7 80.5 +1862 63.1 64.5 43.6 53.7 64.4 84.0 73.4 62.5 66.6 41.9 50.6 40.9 +1863 48.3 56.7 66.4 40.6 53.8 40.8 32.7 48.1 22.0 39.9 37.7 41.2 +1864 57.7 47.1 66.3 35.8 40.6 57.8 54.7 54.8 28.5 33.9 57.6 28.6 +1865 48.7 39.3 39.5 29.4 34.5 33.6 26.8 37.8 21.6 17.1 24.6 12.8 + +1866 31.6 38.4 24.6 17.6 12.9 16.5 9.3 12.7 7.3 14.1 9.0 1.5 +1867 0.0 0.7 9.2 5.1 2.9 1.5 5.0 4.8 9.8 13.5 9.6 25.2 +1868 15.6 15.7 26.5 36.6 26.7 31.1 29.0 34.4 47.2 61.6 59.1 67.6 +1869 60.9 59.9 52.7 41.0 103.9 108.4 59.2 79.6 80.6 59.3 78.1 104.3 +1870 77.3 114.9 157.6 160.0 176.0 135.6 132.4 153.8 136.0 146.4 147.5 130.0 + +1871 88.3 125.3 143.2 162.4 145.5 91.7 103.0 110.1 80.3 89.0 105.4 90.4 +1872 79.5 120.1 88.4 102.1 107.6 109.9 105.5 92.9 114.6 102.6 112.0 83.9 +1873 86.7 107.0 98.3 76.2 47.9 44.8 66.9 68.2 47.1 47.1 55.4 49.2 +1874 60.8 64.2 46.4 32.0 44.6 38.2 67.8 61.3 28.0 34.3 28.9 29.3 +1875 14.6 21.5 33.8 29.1 11.5 23.9 12.5 14.6 2.4 12.7 17.7 9.9 + +1876 14.3 15.0 30.6 2.3 5.1 1.6 15.2 8.8 9.9 14.3 9.9 8.2 +1877 24.4 8.7 11.9 15.8 21.6 14.2 6.0 6.3 16.9 6.7 14.2 2.2 +1878 3.3 6.6 7.8 0.1 5.9 6.4 0.1 0.0 5.3 1.1 4.1 0.5 +1879 1.0 0.6 0.0 6.2 2.4 4.8 7.5 10.7 6.1 12.3 13.1 7.3 +1880 24.0 27.2 19.3 19.5 23.5 34.1 21.9 48.1 66.0 43.0 30.7 29.6 + +1881 36.4 53.2 51.5 51.6 43.5 60.5 76.9 58.4 53.2 64.4 54.8 47.3 +1882 45.0 69.5 66.8 95.8 64.1 45.2 45.4 40.4 57.7 59.2 84.4 41.8 +1883 60.6 46.9 42.8 82.1 31.5 76.3 80.6 46.0 52.6 83.8 84.5 75.9 +1884 91.5 86.9 87.5 76.1 66.5 51.2 53.1 55.8 61.9 47.8 36.6 47.2 +1885 42.8 71.8 49.8 55.0 73.0 83.7 66.5 50.0 39.6 38.7 30.9 21.7 + +1886 29.9 25.9 57.3 43.7 30.7 27.1 30.3 16.9 21.4 8.6 0.3 13.0 +1887 10.3 13.2 4.2 6.9 20.0 15.7 23.3 21.4 7.4 6.6 6.9 20.7 +1888 12.7 7.1 7.8 5.1 7.0 7.1 3.1 2.8 8.8 2.1 10.7 6.7 +1889 0.8 8.5 6.7 4.3 2.4 6.4 9.4 20.6 6.5 2.1 0.2 6.7 +1890 5.3 0.6 5.1 1.6 4.8 1.3 11.6 8.5 17.2 11.2 9.6 7.8 + +1891 13.5 22.2 10.4 20.5 41.1 48.3 58.8 33.0 53.8 51.5 41.9 32.5 +1892 69.1 75.6 49.9 69.6 79.6 76.3 76.5 101.4 62.8 70.5 65.4 78.6 +1893 75.0 73.0 65.7 88.1 84.7 89.9 88.6 129.2 77.9 80.0 75.1 93.8 +1894 83.2 84.6 52.3 81.6 101.2 98.9 106.0 70.3 65.9 75.5 56.6 60.0 +1895 63.3 67.2 61.0 76.9 67.5 71.5 47.8 68.9 57.7 67.9 47.2 70.7 + +1896 29.0 57.4 52.0 43.8 27.7 49.0 45.0 27.2 61.3 28.7 38.0 42.6 +1897 40.6 29.4 29.1 31.0 20.0 11.3 27.6 21.8 48.1 14.3 8.4 33.3 +1898 30.2 36.4 38.3 14.5 25.8 22.3 9.0 31.4 34.8 34.4 30.9 12.6 +1899 19.5 9.2 18.1 14.2 7.7 20.5 13.5 2.9 8.4 13.0 7.8 10.5 +1900 9.4 13.6 8.6 16.0 15.2 12.1 8.3 4.3 8.3 12.9 4.5 0.3 + +1901 0.2 2.4 4.5 0.0 10.2 5.8 0.7 1.0 0.6 3.7 3.8 0.0 +1902 5.5 0.0 12.4 0.0 2.8 1.4 0.9 2.3 7.6 16.3 10.3 1.1 +1903 8.3 17.0 13.5 26.1 14.6 16.3 27.9 28.8 11.1 38.9 44.5 45.6 +1904 31.6 24.5 37.2 43.0 39.5 41.9 50.6 58.2 30.1 54.2 38.0 54.6 +1905 54.8 85.8 56.5 39.3 48.0 49.0 73.0 58.8 55.0 78.7 107.2 55.5 + +1906 45.5 31.3 64.5 55.3 57.7 63.2 103.6 47.7 56.1 17.8 38.9 64.7 +1907 76.4 108.2 60.7 52.6 42.9 40.4 49.7 54.3 85.0 65.4 61.5 47.3 +1908 39.2 33.9 28.7 57.6 40.8 48.1 39.5 90.5 86.9 32.3 45.5 39.5 +1909 56.7 46.6 66.3 32.3 36.0 22.6 35.8 23.1 38.8 58.4 55.8 54.2 +1910 26.4 31.5 21.4 8.4 22.2 12.3 14.1 11.5 26.2 38.3 4.9 5.8 + +1911 3.4 9.0 7.8 16.5 9.0 2.2 3.5 4.0 4.0 2.6 4.2 2.2 +1912 0.3 0.0 4.9 4.5 4.4 4.1 3.0 0.3 9.5 4.6 1.1 6.4 +1913 2.3 2.9 0.5 0.9 0.0 0.0 1.7 0.2 1.2 3.1 0.7 3.8 +1914 2.8 2.6 3.1 17.3 5.2 11.4 5.4 7.7 12.7 8.2 16.4 22.3 +1915 23.0 42.3 38.8 41.3 33.0 68.8 71.6 69.6 49.5 53.5 42.5 34.5 + +1916 45.3 55.4 67.0 71.8 74.5 67.7 53.5 35.2 45.1 50.7 65.6 53.0 +1917 74.7 71.9 94.8 74.7 114.1 114.9 119.8 154.5 129.4 72.2 96.4 129.3 +1918 96.0 65.3 72.2 80.5 76.7 59.4 107.6 101.7 79.9 85.0 83.4 59.2 +1919 48.1 79.5 66.5 51.8 88.1 111.2 64.7 69.0 54.7 52.8 42.0 34.9 +1920 51.1 53.9 70.2 14.8 33.3 38.7 27.5 19.2 36.3 49.6 27.2 29.9 + +1921 31.5 28.3 26.7 32.4 22.2 33.7 41.9 22.8 17.8 18.2 17.8 20.3 +1922 11.8 26.4 54.7 11.0 8.0 5.8 10.9 6.5 4.7 6.2 7.4 17.5 +1923 4.5 1.5 3.3 6.1 3.2 9.1 3.5 0.5 13.2 11.6 10.0 2.8 +1924 0.5 5.1 1.8 11.3 20.8 24.0 28.1 19.3 25.1 25.6 22.5 16.5 +1925 5.5 23.2 18.0 31.7 42.8 47.5 38.5 37.9 60.2 69.2 58.6 98.6 + +1926 71.8 69.9 62.5 38.5 64.3 73.5 52.3 61.6 60.8 71.5 60.5 79.4 +1927 81.6 93.0 69.6 93.5 79.1 59.1 54.9 53.8 68.4 63.1 67.2 45.2 +1928 83.5 73.5 85.4 80.6 77.0 91.4 98.0 83.8 89.7 61.4 50.3 59.0 +1929 68.9 62.8 50.2 52.8 58.2 71.9 70.2 65.8 34.4 54.0 81.1 108.0 +1930 65.3 49.9 35.0 38.2 36.8 28.8 21.9 24.9 32.1 34.4 35.6 25.8 + +1931 14.6 43.1 30.0 31.2 24.6 15.3 17.4 13.0 19.0 10.0 18.7 17.8 +1932 12.1 10.6 11.2 11.2 17.9 22.2 9.6 6.8 4.0 8.9 8.2 11.0 +1933 12.3 22.2 10.1 2.9 3.2 5.2 2.8 0.2 5.1 3.0 0.6 0.3 +1934 3.4 7.8 4.3 11.3 19.7 6.7 9.3 8.3 4.0 5.7 8.7 15.4 +1935 18.6 20.5 23.1 12.2 27.3 45.7 33.9 30.1 42.1 53.2 64.2 61.5 + +1936 62.8 74.3 77.1 74.9 54.6 70.0 52.3 87.0 76.0 89.0 115.4 123.4 +1937 132.5 128.5 83.9 109.3 116.7 130.3 145.1 137.7 100.7 124.9 74.4 88.8 +1938 98.4 119.2 86.5 101.0 127.4 97.5 165.3 115.7 89.6 99.1 122.2 92.7 +1939 80.3 77.4 64.6 109.1 118.3 101.0 97.6 105.8 112.6 88.1 68.1 42.1 +1940 50.5 59.4 83.3 60.7 54.4 83.9 67.5 105.5 66.5 55.0 58.4 68.3 + +1941 45.6 44.5 46.4 32.8 29.5 59.8 66.9 60.0 65.9 46.3 38.4 33.7 +1942 35.6 52.8 54.2 60.7 25.0 11.4 17.7 20.2 17.2 19.2 30.7 22.5 +1943 12.4 28.9 27.4 26.1 14.1 7.6 13.2 19.4 10.0 7.8 10.2 18.8 +1944 3.7 0.5 11.0 0.3 2.5 5.0 5.0 16.7 14.3 16.9 10.8 28.4 +1945 18.5 12.7 21.5 32.0 30.6 36.2 42.6 25.9 34.9 68.8 46.0 27.4 + +1946 47.6 86.2 76.6 75.7 84.9 73.5 116.2 107.2 94.4 102.3 123.8 121.7 +1947 115.7 133.4 129.8 149.8 201.3 163.9 157.9 188.8 169.4 163.6 128.0 116.5 +1948 108.5 86.1 94.8 189.7 174.0 167.8 142.2 157.9 143.3 136.3 95.8 138.0 +1949 119.1 182.3 157.5 147.0 106.2 121.7 125.8 123.8 145.3 131.6 143.5 117.6 +1950 101.6 94.8 109.7 113.4 106.2 83.6 91.0 85.2 51.3 61.4 54.8 54.1 + +1951 59.9 59.9 55.9 92.9 108.5 100.6 61.5 61.0 83.1 51.6 52.4 45.8 +1952 40.7 22.7 22.0 29.1 23.4 36.4 39.3 54.9 28.2 23.8 22.1 34.3 +1953 26.5 3.9 10.0 27.8 12.5 21.8 8.6 23.5 19.3 8.2 1.6 2.5 +1954 0.2 0.5 10.9 1.8 0.8 0.2 4.8 8.4 1.5 7.0 9.2 7.6 +1955 23.1 20.8 4.9 11.3 28.9 31.7 26.7 40.7 42.7 58.5 89.2 76.9 + +1956 73.6 124.0 118.4 110.7 136.6 116.6 129.1 169.6 173.2 155.3 201.3 192.1 +1957 165.0 130.2 157.4 175.2 164.6 200.7 187.2 158.0 235.8 253.8 210.9 239.4 +1958 202.5 164.9 190.7 196.0 175.3 171.5 191.4 200.2 201.2 181.5 152.3 187.6 +1959 217.4 143.1 185.7 163.3 172.0 168.7 149.6 199.6 145.2 111.4 124.0 125.0 +1960 146.3 106.0 102.2 122.0 119.6 110.2 121.7 134.1 127.2 82.8 89.6 85.6 + +1961 57.9 46.1 53.0 61.4 51.0 77.4 70.2 55.8 63.6 37.7 32.6 39.9 +1962 38.7 50.3 45.6 46.4 43.7 42.0 21.8 21.8 51.3 39.5 26.9 23.2 +1963 19.8 24.4 17.1 29.3 43.0 35.9 19.6 33.2 38.8 35.3 23.4 14.9 +1964 15.3 17.7 16.5 8.6 9.5 9.1 3.1 9.3 4.7 6.1 7.4 15.1 +1965 17.5 14.2 11.7 6.8 24.1 15.9 11.9 8.9 16.8 20.1 15.8 17.0 + +1966 28.2 24.4 25.3 48.7 45.3 47.7 56.7 51.2 50.2 57.2 57.2 70.4 +1967 110.9 93.6 111.8 69.5 86.5 67.3 91.5 107.2 76.8 88.2 94.3 126.4 +1968 121.8 111.9 92.2 81.2 127.2 110.3 96.1 109.3 117.2 107.7 86.0 109.8 +1969 104.4 120.5 135.8 106.8 120.0 106.0 96.8 98.0 91.3 95.7 93.5 97.9 +1970 111.5 127.8 102.9 109.5 127.5 106.8 112.5 93.0 99.5 86.6 95.2 83.5 + +1971 91.3 79.0 60.7 71.8 57.5 49.8 81.0 61.4 50.2 51.7 63.2 82.2 +1972 61.5 88.4 80.1 63.2 80.5 88.0 76.5 76.8 64.0 61.3 41.6 45.3 +1973 43.4 42.9 46.0 57.7 42.4 37.5 23.1 25.6 59.3 30.7 23.9 23.3 +1974 27.6 26.0 21.3 40.3 39.5 36.0 55.8 33.6 40.2 47.1 25.0 20.5 +1975 18.9 11.5 11.5 5.1 9.0 11.4 28.2 39.7 13.9 9.1 19.4 7.8 + +1976 8.1 4.3 21.9 18.8 12.4 12.2 1.9 16.4 13.5 20.6 5.2 15.3 +1977 16.4 23.1 8.7 12.9 18.6 38.5 21.4 30.1 44.0 43.8 29.1 43.2 +1978 51.9 93.6 76.5 99.7 82.7 95.1 70.4 58.1 138.2 125.1 97.9 122.7 +1979 166.6 137.5 138.0 101.5 134.4 149.5 159.4 142.2 188.4 186.2 183.3 176.3 +1980 159.6 155.0 126.2 164.1 179.9 157.3 136.3 135.4 155.0 164.7 147.9 174.4 + +1981 114.0 141.3 135.5 156.4 127.5 90.9 143.8 158.7 167.3 162.4 137.5 150.1 +1982 111.2 163.6 153.8 122.0 82.2 110.4 106.1 107.6 118.8 94.7 98.1 127.0 +1983 84.3 51.0 66.5 80.7 99.2 91.1 82.2 71.8 50.3 55.8 33.3 33.4 +1984 57.0 85.4 83.5 69.7 76.4 46.1 37.4 25.5 15.7 12.0 22.8 18.7 +1985 16.5 15.9 17.2 16.2 27.5 24.2 30.7 11.1 3.9 18.6 16.2 17.3 + +1986 2.5 23.2 15.1 18.5 13.7 1.1 18.1 7.4 3.8 35.4 15.2 6.8 +1987 10.4 2.4 14.7 39.6 33.0 17.4 33.0 38.7 33.9 60.6 39.9 27.1 +1988 59.0 40.0 76.2 88.0 60.1 101.8 113.8 111.6 120.1 125.1 125.1 179.2 +1989 161.3 165.1 131.4 130.6 138.5 196.2 126.9 168.9 176.7 159.4 173.0 165.5 +1990 177.3 130.5 140.3 140.3 132.2 105.4 149.4 200.3 125.2 145.5 131.4 129.7 + +1991 136.9 167.5 141.9 140.0 121.3 169.7 173.7 176.3 125.3 144.1 108.2 144.4 +1992 150.0 161.1 106.7 99.8 73.8 65.2 85.7 64.5 63.9 88.7 91.8 82.6 +1993 59.3 91.0 69.8 62.2 61.3 49.8 57.9 42.2 22.4 56.4 35.6 48.9 +1994 57.8 35.5 31.7 16.1 17.8 28.0 35.1 22.5 25.7 44.0 18.0 26.2 +1995 24.2 29.9 31.1 14.0 14.5 15.6 14.5 14.3 11.8 21.1 9.0 10.0 + +1996 11.5 4.4 9.2 4.8 5.5 11.8 8.2 14.4 1.6 0.9 17.9 13.3 +1997 5.7 7.6 8.7 15.5 18.5 12.7 10.4 24.4 51.3 23.8 39.0 41.2 +1998 31.9 40.3 54.8 53.4 56.3 70.7 66.6 92.2 92.9 55.5 74.0 81.9 +1999 62.0 66.3 68.8 63.7 106.4 137.7 113.5 93.7 71.5 116.7 133.2 84.6 +2000 90.1 112.9 138.5 125.5 121.6 124.9 170.1 130.5 109.7 99.4 106.8 104.4 + +2001 95.6 80.6 113.5 107.7 96.6 134.0 81.8 106.4 150.7 125.5 106.5 132.2 +2002 114.1 107.4 98.4 120.7 120.8 88.3 99.6 116.4 109.6 97.5 95.5 80.8 +2003 79.7 46.0 61.1 60.0 54.6 77.4 83.3 72.7 48.7 65.5 67.3 46.5 +2004 37.3 45.8 49.1 39.3 41.5 43.2 51.1 40.9 27.7 48.0 43.5 17.9 +2005 31.3 29.2 24.5 24.2 42.7 39.3 40.1 36.4 21.9 8.7 18.0 41.1 +2006 15.3 4.9 10.6 30.2 22.3 13.9 12.2 12.9 14.4 10.5 21.4 13.6 +2007 16.8 10.7 4.5 3.4 11.7 12.1 9.7 6.0 2.4 0.9 1.7 10.1 +2008 3.3 2.1 9.3 2.9 3.2 3.4 0.8 0.5 1.1 2.9 4.1 0.8 +2009 1.5 1.4 0.7 1.2 2.9 2.6 +------------------------------------------------------------------------------- +No observations were available during February 1824. The value shown was +interpolated from the January and March monthly means of that year. + + +Note: Data are preliminary after Dec 08. + diff --git a/statsmodels/datasets/sunspots/src/sunspots_yearly.dat b/statsmodels/datasets/sunspots/src/sunspots_yearly.dat new file mode 100644 index 0000000..e1d6472 --- /dev/null +++ b/statsmodels/datasets/sunspots/src/sunspots_yearly.dat @@ -0,0 +1,309 @@ +1700 5 +1701 11 +1702 16 +1703 23 +1704 36 +1705 58 +1706 29 +1707 20 +1708 10 +1709 8 +1710 3 +1711 0 +1712 0 +1713 2 +1714 11 +1715 27 +1716 47 +1717 63 +1718 60 +1719 39 +1720 28 +1721 26 +1722 22 +1723 11 +1724 21 +1725 40 +1726 78 +1727 122 +1728 103 +1729 73 +1730 47 +1731 35 +1732 11 +1733 5 +1734 16 +1735 34 +1736 70 +1737 81 +1738 111 +1739 101 +1740 73 +1741 40 +1742 20 +1743 16 +1744 5 +1745 11 +1746 22 +1747 40 +1748 60 +1749 80.9 +1750 83.4 +1751 47.7 +1752 47.8 +1753 30.7 +1754 12.2 +1755 9.6 +1756 10.2 +1757 32.4 +1758 47.6 +1759 54.0 +1760 62.9 +1761 85.9 +1762 61.2 +1763 45.1 +1764 36.4 +1765 20.9 +1766 11.4 +1767 37.8 +1768 69.8 +1769 106.1 +1770 100.8 +1771 81.6 +1772 66.5 +1773 34.8 +1774 30.6 +1775 7.0 +1776 19.8 +1777 92.5 +1778 154.4 +1779 125.9 +1780 84.8 +1781 68.1 +1782 38.5 +1783 22.8 +1784 10.2 +1785 24.1 +1786 82.9 +1787 132.0 +1788 130.9 +1789 118.1 +1790 89.9 +1791 66.6 +1792 60.0 +1793 46.9 +1794 41.0 +1795 21.3 +1796 16.0 +1797 6.4 +1798 4.1 +1799 6.8 +1800 14.5 +1801 34.0 +1802 45.0 +1803 43.1 +1804 47.5 +1805 42.2 +1806 28.1 +1807 10.1 +1808 8.1 +1809 2.5 +1810 0.0 +1811 1.4 +1812 5.0 +1813 12.2 +1814 13.9 +1815 35.4 +1816 45.8 +1817 41.1 +1818 30.1 +1819 23.9 +1820 15.6 +1821 6.6 +1822 4.0 +1823 1.8 +1824 8.5 +1825 16.6 +1826 36.3 +1827 49.6 +1828 64.2 +1829 67.0 +1830 70.9 +1831 47.8 +1832 27.5 +1833 8.5 +1834 13.2 +1835 56.9 +1836 121.5 +1837 138.3 +1838 103.2 +1839 85.7 +1840 64.6 +1841 36.7 +1842 24.2 +1843 10.7 +1844 15.0 +1845 40.1 +1846 61.5 +1847 98.5 +1848 124.7 +1849 96.3 +1850 66.6 +1851 64.5 +1852 54.1 +1853 39.0 +1854 20.6 +1855 6.7 +1856 4.3 +1857 22.7 +1858 54.8 +1859 93.8 +1860 95.8 +1861 77.2 +1862 59.1 +1863 44.0 +1864 47.0 +1865 30.5 +1866 16.3 +1867 7.3 +1868 37.6 +1869 74.0 +1870 139.0 +1871 111.2 +1872 101.6 +1873 66.2 +1874 44.7 +1875 17.0 +1876 11.3 +1877 12.4 +1878 3.4 +1879 6.0 +1880 32.3 +1881 54.3 +1882 59.7 +1883 63.7 +1884 63.5 +1885 52.2 +1886 25.4 +1887 13.1 +1888 6.8 +1889 6.3 +1890 7.1 +1891 35.6 +1892 73.0 +1893 85.1 +1894 78.0 +1895 64.0 +1896 41.8 +1897 26.2 +1898 26.7 +1899 12.1 +1900 9.5 +1901 2.7 +1902 5.0 +1903 24.4 +1904 42.0 +1905 63.5 +1906 53.8 +1907 62.0 +1908 48.5 +1909 43.9 +1910 18.6 +1911 5.7 +1912 3.6 +1913 1.4 +1914 9.6 +1915 47.4 +1916 57.1 +1917 103.9 +1918 80.6 +1919 63.6 +1920 37.6 +1921 26.1 +1922 14.2 +1923 5.8 +1924 16.7 +1925 44.3 +1926 63.9 +1927 69.0 +1928 77.8 +1929 64.9 +1930 35.7 +1931 21.2 +1932 11.1 +1933 5.7 +1934 8.7 +1935 36.1 +1936 79.7 +1937 114.4 +1938 109.6 +1939 88.8 +1940 67.8 +1941 47.5 +1942 30.6 +1943 16.3 +1944 9.6 +1945 33.2 +1946 92.6 +1947 151.6 +1948 136.3 +1949 134.7 +1950 83.9 +1951 69.4 +1952 31.5 +1953 13.9 +1954 4.4 +1955 38.0 +1956 141.7 +1957 190.2 +1958 184.8 +1959 159.0 +1960 112.3 +1961 53.9 +1962 37.6 +1963 27.9 +1964 10.2 +1965 15.1 +1966 47.0 +1967 93.8 +1968 105.9 +1969 105.5 +1970 104.5 +1971 66.6 +1972 68.9 +1973 38.0 +1974 34.5 +1975 15.5 +1976 12.6 +1977 27.5 +1978 92.5 +1979 155.4 +1980 154.6 +1981 140.4 +1982 115.9 +1983 66.6 +1984 45.9 +1985 17.9 +1986 13.4 +1987 29.4 +1988 100.2 +1989 157.6 +1990 142.6 +1991 145.7 +1992 94.3 +1993 54.6 +1994 29.9 +1995 17.5 +1996 8.6 +1997 21.5 +1998 64.3 +1999 93.3 +2000 119.6 +2001 111.0 +2002 104.0 +2003 63.7 +2004 40.4 +2005 29.8 +2006 15.2 +2007 7.5 +2008 2.9 diff --git a/statsmodels/datasets/sunspots/sunspots.csv b/statsmodels/datasets/sunspots/sunspots.csv new file mode 100644 index 0000000..bf1aec0 --- /dev/null +++ b/statsmodels/datasets/sunspots/sunspots.csv @@ -0,0 +1,310 @@ +"YEAR","SUNACTIVITY" +1700,5 +1701,11 +1702,16 +1703,23 +1704,36 +1705,58 +1706,29 +1707,20 +1708,10 +1709,8 +1710,3 +1711,0 +1712,0 +1713,2 +1714,11 +1715,27 +1716,47 +1717,63 +1718,60 +1719,39 +1720,28 +1721,26 +1722,22 +1723,11 +1724,21 +1725,40 +1726,78 +1727,122 +1728,103 +1729,73 +1730,47 +1731,35 +1732,11 +1733,5 +1734,16 +1735,34 +1736,70 +1737,81 +1738,111 +1739,101 +1740,73 +1741,40 +1742,20 +1743,16 +1744,5 +1745,11 +1746,22 +1747,40 +1748,60 +1749,80.9 +1750,83.4 +1751,47.7 +1752,47.8 +1753,30.7 +1754,12.2 +1755,9.6 +1756,10.2 +1757,32.4 +1758,47.6 +1759,54 +1760,62.9 +1761,85.9 +1762,61.2 +1763,45.1 +1764,36.4 +1765,20.9 +1766,11.4 +1767,37.8 +1768,69.8 +1769,106.1 +1770,100.8 +1771,81.6 +1772,66.5 +1773,34.8 +1774,30.6 +1775,7 +1776,19.8 +1777,92.5 +1778,154.4 +1779,125.9 +1780,84.8 +1781,68.1 +1782,38.5 +1783,22.8 +1784,10.2 +1785,24.1 +1786,82.9 +1787,132 +1788,130.9 +1789,118.1 +1790,89.9 +1791,66.6 +1792,60 +1793,46.9 +1794,41 +1795,21.3 +1796,16 +1797,6.4 +1798,4.1 +1799,6.8 +1800,14.5 +1801,34 +1802,45 +1803,43.1 +1804,47.5 +1805,42.2 +1806,28.1 +1807,10.1 +1808,8.1 +1809,2.5 +1810,0 +1811,1.4 +1812,5 +1813,12.2 +1814,13.9 +1815,35.4 +1816,45.8 +1817,41.1 +1818,30.1 +1819,23.9 +1820,15.6 +1821,6.6 +1822,4 +1823,1.8 +1824,8.5 +1825,16.6 +1826,36.3 +1827,49.6 +1828,64.2 +1829,67 +1830,70.9 +1831,47.8 +1832,27.5 +1833,8.5 +1834,13.2 +1835,56.9 +1836,121.5 +1837,138.3 +1838,103.2 +1839,85.7 +1840,64.6 +1841,36.7 +1842,24.2 +1843,10.7 +1844,15 +1845,40.1 +1846,61.5 +1847,98.5 +1848,124.7 +1849,96.3 +1850,66.6 +1851,64.5 +1852,54.1 +1853,39 +1854,20.6 +1855,6.7 +1856,4.3 +1857,22.7 +1858,54.8 +1859,93.8 +1860,95.8 +1861,77.2 +1862,59.1 +1863,44 +1864,47 +1865,30.5 +1866,16.3 +1867,7.3 +1868,37.6 +1869,74 +1870,139 +1871,111.2 +1872,101.6 +1873,66.2 +1874,44.7 +1875,17 +1876,11.3 +1877,12.4 +1878,3.4 +1879,6 +1880,32.3 +1881,54.3 +1882,59.7 +1883,63.7 +1884,63.5 +1885,52.2 +1886,25.4 +1887,13.1 +1888,6.8 +1889,6.3 +1890,7.1 +1891,35.6 +1892,73 +1893,85.1 +1894,78 +1895,64 +1896,41.8 +1897,26.2 +1898,26.7 +1899,12.1 +1900,9.5 +1901,2.7 +1902,5 +1903,24.4 +1904,42 +1905,63.5 +1906,53.8 +1907,62 +1908,48.5 +1909,43.9 +1910,18.6 +1911,5.7 +1912,3.6 +1913,1.4 +1914,9.6 +1915,47.4 +1916,57.1 +1917,103.9 +1918,80.6 +1919,63.6 +1920,37.6 +1921,26.1 +1922,14.2 +1923,5.8 +1924,16.7 +1925,44.3 +1926,63.9 +1927,69 +1928,77.8 +1929,64.9 +1930,35.7 +1931,21.2 +1932,11.1 +1933,5.7 +1934,8.7 +1935,36.1 +1936,79.7 +1937,114.4 +1938,109.6 +1939,88.8 +1940,67.8 +1941,47.5 +1942,30.6 +1943,16.3 +1944,9.6 +1945,33.2 +1946,92.6 +1947,151.6 +1948,136.3 +1949,134.7 +1950,83.9 +1951,69.4 +1952,31.5 +1953,13.9 +1954,4.4 +1955,38 +1956,141.7 +1957,190.2 +1958,184.8 +1959,159 +1960,112.3 +1961,53.9 +1962,37.6 +1963,27.9 +1964,10.2 +1965,15.1 +1966,47 +1967,93.8 +1968,105.9 +1969,105.5 +1970,104.5 +1971,66.6 +1972,68.9 +1973,38 +1974,34.5 +1975,15.5 +1976,12.6 +1977,27.5 +1978,92.5 +1979,155.4 +1980,154.6 +1981,140.4 +1982,115.9 +1983,66.6 +1984,45.9 +1985,17.9 +1986,13.4 +1987,29.4 +1988,100.2 +1989,157.6 +1990,142.6 +1991,145.7 +1992,94.3 +1993,54.6 +1994,29.9 +1995,17.5 +1996,8.6 +1997,21.5 +1998,64.3 +1999,93.3 +2000,119.6 +2001,111 +2002,104 +2003,63.7 +2004,40.4 +2005,29.8 +2006,15.2 +2007,7.5 +2008,2.9 diff --git a/statsmodels/datasets/template_data.py b/statsmodels/datasets/template_data.py new file mode 100644 index 0000000..cdaaf6a --- /dev/null +++ b/statsmodels/datasets/template_data.py @@ -0,0 +1,63 @@ +"""Name of dataset.""" +from statsmodels.datasets import utils as du + +__docformat__ = 'restructuredtext' + +COPYRIGHT = """E.g., This is public domain.""" +TITLE = """Title of the dataset""" +SOURCE = """ +This section should provide a link to the original dataset if possible and +attribution and correspondance information for the dataset's original author +if so desired. +""" + +DESCRSHORT = """A short description.""" + +DESCRLONG = """A longer description of the dataset.""" + +#suggested notes +NOTE = """ +:: + + Number of observations: + Number of variables: + Variable name definitions: + +Any other useful information that does not fit into the above categories. +""" + + +def load(as_pandas=None): + """ + Load the data and return a Dataset class instance. + + Parameters + ---------- + as_pandas : bool + Flag indicating whether to return pandas DataFrames and Series + or numpy recarrays and arrays. If True, returns pandas. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + + """ + return du.as_numpy_dataset(load_pandas(), as_pandas=as_pandas) + + +def load_pandas(): + """ + Load the strikes data and return a Dataset class instance. + + Returns + ------- + Dataset instance: + See DATASET_PROPOSAL.txt for more information. + """ + data = _get_data() + return du.process_pandas(data, endog_idx=0) + + +def _get_data(): + return du.load_csv(__file__, 'DatasetName.csv') diff --git a/statsmodels/datasets/tests/__init__.py b/statsmodels/datasets/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/datasets/tests/test_data.py b/statsmodels/datasets/tests/test_data.py new file mode 100644 index 0000000..2b01723 --- /dev/null +++ b/statsmodels/datasets/tests/test_data.py @@ -0,0 +1,47 @@ +import importlib + +import numpy as np +import pandas as pd +import pytest + +import statsmodels.datasets +from statsmodels.compat import PY3 +from statsmodels.datasets.utils import Dataset + +exclude = ['check_internet', 'clear_data_home', 'get_data_home', + 'get_rdataset', 'tests', 'utils', 'webuse', 'PytestTester', + 'test'] +datasets = [] +for dataset_name in dir(statsmodels.datasets): + if not dataset_name.startswith('_') and dataset_name not in exclude: + datasets.append(dataset_name) + + +@pytest.mark.parametrize('dataset_name', datasets) +def test_dataset(dataset_name): + dataset = importlib.import_module('statsmodels.datasets.' + dataset_name) + warning_type = FutureWarning if PY3 else None + with pytest.warns(warning_type): + ds = dataset.load() + assert isinstance(ds, Dataset) + assert isinstance(ds.data, np.recarray) + if hasattr(ds, 'exog'): + assert isinstance(ds.exog, np.ndarray) + if hasattr(ds, 'endog'): + assert isinstance(ds.endog, np.ndarray) + + ds = dataset.load(as_pandas=True) + assert isinstance(ds, Dataset) + assert isinstance(ds.data, pd.DataFrame) + if hasattr(ds, 'exog'): + assert isinstance(ds.exog, (pd.DataFrame, pd.Series)) + if hasattr(ds, 'endog'): + assert isinstance(ds.endog, (pd.DataFrame, pd.Series)) + + ds = dataset.load_pandas() + assert isinstance(ds, Dataset) + assert isinstance(ds.data, pd.DataFrame) + if hasattr(ds, 'exog'): + assert isinstance(ds.exog, (pd.DataFrame, pd.Series)) + if hasattr(ds, 'endog'): + assert isinstance(ds.endog, (pd.DataFrame, pd.Series)) diff --git a/statsmodels/datasets/tests/test_utils.py b/statsmodels/datasets/tests/test_utils.py new file mode 100644 index 0000000..b53a289 --- /dev/null +++ b/statsmodels/datasets/tests/test_utils.py @@ -0,0 +1,85 @@ +from statsmodels.compat.python import HTTPError, URLError + +import os +from ssl import SSLError +from socket import timeout + +import numpy as np +from numpy.testing import assert_, assert_array_equal +import pytest + +from statsmodels.datasets import get_rdataset, webuse, check_internet, utils + +cur_dir = os.path.dirname(os.path.abspath(__file__)) + +IGNORED_EXCEPTIONS = (HTTPError, URLError, SSLError, UnicodeEncodeError, + timeout) + + +@pytest.mark.smoke +def test_get_rdataset(): + test_url = "https://raw.githubusercontent.com/vincentarelbundock/" \ + "Rdatasets/master/csv/datasets/cars.csv" + internet_available = check_internet(test_url) + if not internet_available: + pytest.skip('Unable to retrieve file - skipping test') + try: + duncan = get_rdataset("Duncan", "carData", cache=cur_dir) + except IGNORED_EXCEPTIONS: + pytest.skip('Failed with HTTPError or URLError, these are random') + assert_(isinstance(duncan, utils.Dataset)) + duncan = get_rdataset("Duncan", "carData", cache=cur_dir) + assert_(duncan.from_cache) + + +@pytest.mark.smoke +def test_get_rdataset_write_read_cache(): + # test writing and reading cache + try: + guerry = get_rdataset("Guerry", "HistData", cache=cur_dir) + except IGNORED_EXCEPTIONS: + pytest.skip('Failed with HTTPError or URLError, these are random') + + assert_(guerry.from_cache is False) + guerry2 = get_rdataset("Guerry", "HistData", cache=cur_dir) + assert_(guerry2.from_cache is True) + fn = "raw.githubusercontent.com,vincentarelbundock,Rdatasets,master,csv," \ + "HistData,Guerry-v2.csv.zip" + os.remove(os.path.join(cur_dir, fn)) + fn = "raw.githubusercontent.com,vincentarelbundock,Rdatasets,master,doc," \ + "HistData,rst,Guerry-v2.rst.zip" + os.remove(os.path.join(cur_dir, fn)) + + +def test_webuse(): + # test copied and adjusted from iolib/tests/test_foreign + from statsmodels.iolib.tests.results.macrodata import macrodata_result + res2 = np.array([list(row) for row in macrodata_result]) + base_gh = "https://github.com/statsmodels/statsmodels/raw/master/" \ + "statsmodels/datasets/macrodata/" + internet_available = check_internet(base_gh) + if not internet_available: + pytest.skip('Unable to retrieve file - skipping test') + try: + res1 = webuse('macrodata', baseurl=base_gh, as_df=False) + except IGNORED_EXCEPTIONS: + pytest.skip('Failed with HTTPError or URLError, these are random') + assert_array_equal(res1, res2) + + +def test_webuse_pandas(): + # test copied and adjusted from iolib/tests/test_foreign + from pandas.util.testing import assert_frame_equal + from statsmodels.datasets import macrodata + dta = macrodata.load_pandas().data + base_gh = "https://github.com/statsmodels/statsmodels/raw/master/" \ + "statsmodels/datasets/macrodata/" + internet_available = check_internet(base_gh) + if not internet_available: + pytest.skip('Unable to retrieve file - skipping test') + try: + res1 = webuse('macrodata', baseurl=base_gh) + except IGNORED_EXCEPTIONS: + pytest.skip('Failed with HTTP Error, these are random') + res1 = res1.astype(float) + assert_frame_equal(res1, dta.astype(float)) diff --git a/statsmodels/datasets/utils.py b/statsmodels/datasets/utils.py new file mode 100644 index 0000000..132c7cc --- /dev/null +++ b/statsmodels/datasets/utils.py @@ -0,0 +1,346 @@ +from statsmodels.compat.python import (StringIO, urlopen, HTTPError, URLError, + lrange, urljoin, long, PY3) + +import shutil +from os import environ, makedirs +from os.path import expanduser, exists, dirname, abspath, join + +import numpy as np +from pandas import read_stata, read_csv, DataFrame, Series, Index + + +def webuse(data, baseurl='https://www.stata-press.com/data/r11/', as_df=True): + """ + Download and return an example dataset from Stata. + + Parameters + ---------- + data : str + Name of dataset to fetch. + baseurl : str + The base URL to the stata datasets. + as_df : bool + Deprecated. Always returns a DataFrame + + Returns + ------- + dta : DataFrame + A DataFrame containing the Stata dataset. + + Examples + -------- + >>> dta = webuse('auto') + + Notes + ----- + Make sure baseurl has trailing forward slash. Doesn't do any + error checking in response URLs. + """ + url = urljoin(baseurl, data+'.dta') + return read_stata(url) + + +class Dataset(dict): + def __init__(self, **kw): + # define some default attributes, so pylint can find them + self.endog = None + self.exog = None + self.data = None + self.names = None + + dict.__init__(self, kw) + self.__dict__ = self + # Some datasets have string variables. If you want a raw_data + # attribute you must create this in the dataset's load function. + try: # some datasets have string variables + self.raw_data = self.data.astype(float) + except: + pass + + def __repr__(self): + return str(self.__class__) + + +def process_pandas(data, endog_idx=0, exog_idx=None, index_idx=None): + names = data.columns + + if isinstance(endog_idx, (int, long)): + endog_name = names[endog_idx] + endog = data[endog_name].copy() + if exog_idx is None: + exog = data.drop([endog_name], axis=1) + else: + exog = data[names[exog_idx]].copy() + else: + endog = data.loc[:, endog_idx].copy() + endog_name = list(endog.columns) + if exog_idx is None: + exog = data.drop(endog_name, axis=1) + elif isinstance(exog_idx, (int, long)): + exog = data[names[exog_idx]].copy() + else: + exog = data[names[exog_idx]].copy() + + if index_idx is not None: # NOTE: will have to be improved for dates + index = Index(data.iloc[:, index_idx]) + endog.index = index + exog.index = index.copy() + data = data.set_index(names[index_idx]) + + exog_name = list(exog.columns) + dataset = Dataset(data=data, names=list(names), endog=endog, + exog=exog, endog_name=endog_name, exog_name=exog_name) + return dataset + + +def _maybe_reset_index(data): + """ + All the Rdatasets have the integer row.labels from R if there is no + real index. Strip this for a zero-based index + """ + if data.index.equals(Index(lrange(1, len(data) + 1))): + data = data.reset_index(drop=True) + return data + + +def _get_cache(cache): + if cache is False: + # do not do any caching or load from cache + cache = None + elif cache is True: # use default dir for cache + cache = get_data_home(None) + else: + cache = get_data_home(cache) + return cache + + +def _cache_it(data, cache_path): + import zlib + open(cache_path, "wb").write(zlib.compress(data)) + + +def _open_cache(cache_path): + import zlib + data = zlib.decompress(open(cache_path, 'rb').read()) + # return as bytes object encoded in utf-8 for cross-compat of cached + return data + + +def _urlopen_cached(url, cache): + """ + Tries to load data from cache location otherwise downloads it. If it + downloads the data and cache is not None then it will put the downloaded + data in the cache path. + """ + from_cache = False + if cache is not None: + file_name = url.split("://")[-1].replace('/', ',') + file_name = file_name.split('.') + if len(file_name) > 1: + file_name[-2] += '-v2' + else: + file_name[0] += '-v2' + file_name = '.'.join(file_name) + ".zip" + cache_path = join(cache, file_name) + try: + data = _open_cache(cache_path) + from_cache = True + except: + pass + + # not using the cache or didn't find it in cache + if not from_cache: + data = urlopen(url, timeout=3).read() + if cache is not None: # then put it in the cache + _cache_it(data, cache_path) + return data, from_cache + + +def _get_data(base_url, dataname, cache, extension="csv"): + url = base_url + (dataname + ".%s") % extension + try: + data, from_cache = _urlopen_cached(url, cache) + except HTTPError as err: + if '404' in str(err): + raise ValueError("Dataset %s was not found." % dataname) + else: + raise err + + data = data.decode('utf-8', 'strict') + return StringIO(data), from_cache + + +def _get_dataset_meta(dataname, package, cache): + # get the index, you'll probably want this cached because you have + # to download info about all the data to get info about any of the data... + index_url = ("https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/" + "datasets.csv") + data, _ = _urlopen_cached(index_url, cache) + # Python 3 + if PY3: # pragma: no cover + data = data.decode('utf-8', 'strict') + index = read_csv(StringIO(data)) + idx = np.logical_and(index.Item == dataname, index.Package == package) + dataset_meta = index.loc[idx] + return dataset_meta["Title"].item() + + +def get_rdataset(dataname, package="datasets", cache=False): + """download and return R dataset + + Parameters + ---------- + dataname : str + The name of the dataset you want to download + package : str + The package in which the dataset is found. The default is the core + 'datasets' package. + cache : bool or str + If True, will download this data into the STATSMODELS_DATA folder. + The default location is a folder called statsmodels_data in the + user home folder. Otherwise, you can specify a path to a folder to + use for caching the data. If False, the data will not be cached. + + Returns + ------- + dataset : Dataset instance + A `statsmodels.data.utils.Dataset` instance. This objects has + attributes: + + * data - A pandas DataFrame containing the data + * title - The dataset title + * package - The package from which the data came + * from_cache - Whether not cached data was retrieved + * __doc__ - The verbatim R documentation. + + + Notes + ----- + If the R dataset has an integer index. This is reset to be zero-based. + Otherwise the index is preserved. The caching facilities are dumb. That + is, no download dates, e-tags, or otherwise identifying information + is checked to see if the data should be downloaded again or not. If the + dataset is in the cache, it's used. + """ + # NOTE: use raw github bc html site might not be most up to date + data_base_url = ("https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/" + "master/csv/"+package+"/") + docs_base_url = ("https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/" + "master/doc/"+package+"/rst/") + cache = _get_cache(cache) + data, from_cache = _get_data(data_base_url, dataname, cache) + data = read_csv(data, index_col=0) + data = _maybe_reset_index(data) + + title = _get_dataset_meta(dataname, package, cache) + doc, _ = _get_data(docs_base_url, dataname, cache, "rst") + + return Dataset(data=data, __doc__=doc.read(), package=package, title=title, + from_cache=from_cache) + +# The below function were taken from sklearn + + +def get_data_home(data_home=None): + """Return the path of the statsmodels data dir. + + This folder is used by some large dataset loaders to avoid + downloading the data several times. + + By default the data dir is set to a folder named 'statsmodels_data' + in the user home folder. + + Alternatively, it can be set by the 'STATSMODELS_DATA' environment + variable or programatically by giving an explit folder path. The + '~' symbol is expanded to the user home folder. + + If the folder does not already exist, it is automatically created. + """ + if data_home is None: + data_home = environ.get('STATSMODELS_DATA', + join('~', 'statsmodels_data')) + data_home = expanduser(data_home) + if not exists(data_home): + makedirs(data_home) + return data_home + + +def clear_data_home(data_home=None): + """Delete all the content of the data home cache.""" + data_home = get_data_home(data_home) + shutil.rmtree(data_home) + + +def check_internet(url=None): + """Check if internet is available""" + url = "https://github.com" if url is None else url + try: + urlopen(url) + except URLError as err: + return False + return True + + +def strip_column_names(df): + """ + Remove leading and trailing single quotes + + Parameters + ---------- + df : DataFrame + DataFrame to process + + Returns + ------- + df : DataFrame + Dataframe with stripped column names + + Notes + ----- + In-place modification + """ + columns = [] + for c in df: + if c.startswith('\'') and c.endswith('\''): + c = c[1:-1] + elif c.startswith('\''): + c = c[1:] + elif c.endswith('\''): + c = c[:-1] + columns.append(c) + df.columns = columns + return df + + +def load_csv(base_file, csv_name, sep=',', convert_float=False): + """Standard simple csv loader""" + filepath = dirname(abspath(base_file)) + filename = join(filepath,csv_name) + engine = 'python' if sep != ',' else 'c' + float_precision = {} + if engine == 'c': + float_precision = {'float_precision': 'high'} + data = read_csv(filename, sep=sep, engine=engine, **float_precision) + if convert_float: + data = data.astype(float) + return data + + +def as_numpy_dataset(ds, as_pandas=None, retain_index=False): + """Convert a pandas dataset to a NumPy dataset""" + if as_pandas: + return ds + if as_pandas is None: + import warnings + warnings.warn('load will return datasets containing pandas DataFrames and Series ' + 'in the Future. To suppress this message, specify as_pandas=False', + FutureWarning) + ds.data = ds.data.to_records(index=retain_index) + for d in dir(ds): + if d.startswith('_'): + continue + attr = getattr(ds, d) + if isinstance(attr, (Series, DataFrame)): + setattr(ds, d, np.asarray(attr)) + + return ds diff --git a/statsmodels/discrete/__init__.py b/statsmodels/discrete/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/discrete/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/discrete/_diagnostics_count.py b/statsmodels/discrete/_diagnostics_count.py new file mode 100644 index 0000000..c63c191 --- /dev/null +++ b/statsmodels/discrete/_diagnostics_count.py @@ -0,0 +1,310 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Sep 15 12:53:45 2017 + +Author: Josef Perktold +""" + +from __future__ import division + +import numpy as np +from scipy import stats + +from statsmodels.regression.linear_model import OLS +from statsmodels.discrete.discrete_model import Poisson + + +def _combine_bins(edge_index, x): + """group columns into bins using sum + + This is mainly a helper function for combining probabilities into cells. + It similar to `np.add.reduceat(x, edge_index, axis=-1)` except for the + treatment of the last index and last cell. + + Parameters + ---------- + edge_index : array_like + This defines the (zero-based) indices for the columns that are be + combined. Each index in `edge_index` except the last is the starting + index for a bin. The largest index in a bin is the next edge_index-1. + x : 1d or 2d array + array for which columns are combined. If x is 1-dimensional that it + will be treated as a 2-d row vector. + + Returns + ------- + x_new : ndarray + + + Examples + -------- + >>> dia.combine_bins([0,1,5], np.arange(4)) + (array([0, 6]), array([1, 4])) + + this aggregates to two bins with the sum of 1 and 4 elements + >>> np.arange(4)[0].sum() + 0 + >>> np.arange(4)[1:5].sum() + 6 + + If the rightmost index is smaller than len(x)+1, then the remaining + columns will not be included. + + >>> dia.combine_bins([0,1,3], np.arange(4)) + (array([0, 3]), array([1, 2])) + + """ + x = np.asarray(x) + if x.ndim == 1: + is_1d = True + x = x[None, :] + else: + is_1d = False + xli = [] + kli = [] + for bin_idx in range(len(edge_index) - 1): + i, j = edge_index[bin_idx : bin_idx + 2] + xli.append(x[:, i:j].sum(1)) + kli.append(j - i) + + x_new = np.column_stack(xli) + if is_1d: + x_new = x_new.squeeze() + return x_new, np.asarray(kli) + + +def plot_probs(freq, probs_predicted, label='predicted', upp_xlim=None, + fig=None): + """diagnostic plots for comparing two lists of discrete probabilities + + Parameters + ---------- + freq, probs_predicted : nd_arrays + two arrays of probabilites, this can be any probabilities for + the same events, default is designed for comparing predicted + and observed probabilities + label : string or tuple + If string, then it will be used as the label for probs_predicted and + "freq" is used for the other probabilities. + If label is a tuple of strings, then the first is they are used as + label for both probabilities + + upp_xlim : None or int + If it is not None, then the xlim of the first two plots are set to + (0, upp_xlim), otherwise the matplotlib default is used + fig : None or matplotlib figure instance + If fig is provided, then the axes will be added to it in a (3,1) + subplots, otherwise a matplotlib figure instance is created + + Returns + ------- + fig : matplotlib figure instance + The figure contains 3 subplot with probabilities, cumulative + probabilities and a PP-plot + + """ + + if isinstance(label, list): + label0, label1 = label + else: + label0, label1 = 'freq', label + + if fig is None: + import matplotlib.pyplot as plt + fig = plt.figure(figsize=(8,12)) + ax1 = fig.add_subplot(311) + ax1.plot(freq, '-o', label=label0) + ax1.plot(probs_predicted, '-d', label=label1) + if upp_xlim is not None: + ax1.set_xlim(0, upp_xlim) + ax1.legend() + ax1.set_title('probabilities') + + ax2 = fig.add_subplot(312) + ax2.plot(np.cumsum(freq), '-o', label=label0) + ax2.plot(np.cumsum(probs_predicted), '-d', label=label1) + if upp_xlim is not None: + ax2.set_xlim(0, upp_xlim) + ax2.legend() + ax2.set_title('cumulative probabilities') + + ax3 = fig.add_subplot(313) + ax3.plot(np.cumsum(probs_predicted), np.cumsum(freq), 'o') + ax3.plot(np.arange(len(freq)) / len(freq), np.arange(len(freq)) / len(freq)) + ax3.set_title('PP-plot') + ax3.set_xlabel(label1) + ax3.set_ylabel(label0) + return fig + + +def test_chisquare_prob(results, probs, bin_edges=None, method=None): + """ + chisquare test for predicted probabilities using cmt-opg + + Parameters + ---------- + results : results instance + Instance of a count regression results + probs : array + Array of predicted probabilities with observations + in rows and event counts in columns + bin_edges : None or array + intervals to combine several counts into cells + see combine_bins + + Returns + ------- + (api not stable, replace by test-results class) + statistic : float + chisquare statistic for tes + p-value : float + p-value of test + df : int + degrees of freedom for chisquare distribution + extras : ??? + currently returns a tuple with some intermediate results + (diff, res_aux) + + Notes + ----- + + Status : experimental, no verified unit tests, needs to be generalized + currently only OPG version with auxiliary regression is implemented + + + Assumes counts are np.arange(probs.shape[1]), i.e. consecutive + integers starting at zero. + + Auxiliary regression drops the last column of binned probs to avoid + that probabilities sum to 1. + """ + res = results + score_obs = results.model.score_obs(results.params) + d_ind = (res.model.endog[:, None] == np.arange(probs.shape[1])).astype(int) + if bin_edges is not None: + d_ind_bins, k_bins = _combine_bins(bin_edges, d_ind) + probs_bins, k_bins = _combine_bins(bin_edges, probs) + else: + d_ind_bins, k_bins = d_ind, d_ind.shape[1] + probs_bins = probs + diff1 = d_ind_bins - probs_bins + #diff2 = (1 - d_ind.sum(1)) - (1 - probs_bins.sum(1)) + x_aux = np.column_stack((score_obs, diff1[:, :-1])) #, diff2)) + nobs = x_aux.shape[0] + res_aux = OLS(np.ones(nobs), x_aux).fit() + + chi2_stat = nobs * (1 - res_aux.ssr / res_aux.uncentered_tss) + df = res_aux.model.rank - score_obs.shape[1] + if df < k_bins - 1: + # not a problem in general, but it can be for OPG version + import warnings + warnings.warn('auxiliary model is rank deficient') + extras = (diff1, res_aux) + return chi2_stat, stats.chi2.sf(chi2_stat, df), df, extras + + +def test_poisson_zeroinflation(results_poisson, exog_infl=None): + """score test for zero inflation or deflation in Poisson + + This implements Jansakul and Hinde 2009 score test + for excess zeros against a zero modified Poisson + alternative. They use a linear link function for the + inflation model to allow for zero deflation. + + Parameters + ---------- + results_poisson: results instance + The test is only valid if the results instance is a Poisson + model. + exog_infl : array + Explanatory variables for the zero inflated or zero modified + alternative. I exog_infl is None, then the inflation + probability is assumed to be constant. + + Returns + ------- + score test results based on chisquare distribution + + Notes + ----- + This is a score test based on the null hypothesis that + the true model is Poisson. It will also reject for + other deviations from a Poisson model if those affect + the zero probabilities, e.g. in the direction of + excess dispersion as in the Negative Binomial + or Generalized Poisson model. + Therefore, rejection in this test does not imply that + zero-inflated Poisson is the appropriate model. + + Status: experimental, no verified unit tests, + + TODO: If the zero modification probability is assumed + to be constant under the alternative, then we only have + a scalar test score and we can use one-sided tests to + distinguish zero inflation and deflation from the + two-sided deviations. (The general one-sided case is + difficult.) + + References + ---------- + Jansakul and Hinde 2009 + + """ + if not isinstance(results_poisson.model, Poisson): + # GLM Poisson would be also valid, not tried + import warnings + warnings.warn('Test is only valid if model is Poisson') + + nobs = results_poisson.model.endog.shape[0] + + if exog_infl is None: + exog_infl = np.ones((nobs, 1)) + + + endog = results_poisson.model.endog + exog = results_poisson.model.exog + + mu = results_poisson.predict() + prob_zero = np.exp(-mu) + + cov_poi = results_poisson.cov_params() + cross_derivative = (exog_infl.T * (-mu)).dot(exog).T + cov_infl = (exog_infl.T * ((1 - prob_zero) / prob_zero)).dot(exog_infl) + score_obs_infl = exog_infl * (((endog == 0) - prob_zero) / prob_zero)[:,None] + #score_obs_infl = exog_infl * ((endog == 0) * (1 - prob_zero) / prob_zero - (endog>0))[:,None] #same + score_infl = score_obs_infl.sum(0) + cov_score_infl = cov_infl - cross_derivative.T.dot(cov_poi).dot(cross_derivative) + cov_score_infl_inv = np.linalg.pinv(cov_score_infl) + statistic = score_infl.dot(cov_score_infl_inv).dot(score_infl) + df2 = np.linalg.matrix_rank(cov_score_infl) # more general, maybe not needed + df = exog_infl.shape[1] + pvalue = stats.chi2.sf(statistic, df) + return statistic, pvalue, df, df2 + + +def test_poisson_zeroinflation_brock(results_poisson): + """score test for zero modification in Poisson, special case + + This assumes that the Poisson model has a constant and that + the zero modification probability is constant. + + This is a special case of test_poisson_zeroinflation derived by + van den Brock 1995. + + The test reports two sided and one sided alternatives based on + the normal distribution of the test statistic. + + """ + + mu = results_poisson.predict() + prob_zero = np.exp(-mu) + endog = results_poisson.model.endog + nobs = len(endog) + + score = ((endog == 0) / prob_zero).sum() - nobs + var_score = (1 / prob_zero).sum() - nobs - endog.sum() + statistic = score / np.sqrt(var_score) + pvalue_two = 2 * stats.norm.sf(np.abs(statistic)) + pvalue_upp = stats.norm.sf(statistic) + pvalue_low = stats.norm.cdf(statistic) + return statistic, pvalue_two, pvalue_upp, pvalue_low, stats.chi2.sf(statistic**2, 1) diff --git a/statsmodels/discrete/conditional_models.py b/statsmodels/discrete/conditional_models.py new file mode 100644 index 0000000..dc8deee --- /dev/null +++ b/statsmodels/discrete/conditional_models.py @@ -0,0 +1,631 @@ +""" +Conditional logistic, Poisson, and multinomial logit regression +""" + +import numpy as np +import statsmodels.base.model as base +import statsmodels.regression.linear_model as lm +import statsmodels.base.wrapper as wrap +from statsmodels.discrete.discrete_model import (MultinomialResults, + MultinomialResultsWrapper) +import collections +import warnings +import itertools + + +class _ConditionalModel(base.LikelihoodModel): + + def __init__(self, endog, exog, missing='none', **kwargs): + + if "groups" not in kwargs: + raise ValueError("'groups' is a required argument") + groups = kwargs["groups"] + + if groups.size != endog.size: + msg = "'endog' and 'groups' should have the same dimensions" + raise ValueError(msg) + + if exog.shape[0] != endog.size: + msg = "The leading dimension of 'exog' should equal the length of 'endog'" + raise ValueError(msg) + + super(_ConditionalModel, self).__init__( + endog, exog, missing=missing, **kwargs) + + if self.data.const_idx is not None: + msg = ("Conditional models should not have an intercept in the " + + "design matrix") + raise ValueError(msg) + + exog = self.exog + self.k_params = exog.shape[1] + + # Get the row indices for each group + row_ix = collections.OrderedDict() + for i, g in enumerate(groups): + if g not in row_ix: + row_ix[g] = [] + row_ix[g].append(i) + + # Split the data into groups and remove groups with no variation + endog, exog = np.asarray(endog), np.asarray(exog) + offset = kwargs.get("offset") + self._endog_grp = [] + self._exog_grp = [] + self._groupsize = [] + if offset is not None: + offset = np.asarray(offset) + self._offset_grp = [] + self._offset = [] + self._sumy = [] + self.nobs = 0 + drops = [0, 0] + for g, ix in row_ix.items(): + y = endog[ix].flat + if np.std(y) == 0: + drops[0] += 1 + drops[1] += len(y) + continue + self.nobs += len(y) + self._endog_grp.append(y) + if offset is not None: + self._offset_grp.append(offset[ix]) + self._groupsize.append(len(y)) + self._exog_grp.append(exog[ix, :]) + self._sumy.append(np.sum(y)) + + if drops[0] > 0: + msg = ("Dropped %d groups and %d observations for having " + + "no within-group variance") % tuple(drops) + warnings.warn(msg) + + # This can be pre-computed + if offset is not None: + self._endofs = [] + for k, ofs in enumerate(self._offset_grp): + self._endofs.append(np.dot(self._endog_grp[k], ofs)) + + # Number of groups + self._n_groups = len(self._endog_grp) + + # These are the sufficient statistics + self._xy = [] + self._n1 = [] + for g in range(self._n_groups): + self._xy.append(np.dot(self._endog_grp[g], self._exog_grp[g])) + self._n1.append(np.sum(self._endog_grp[g])) + + def hessian(self, params): + + from statsmodels.tools.numdiff import approx_fprime + hess = approx_fprime(params, self.score) + hess = np.atleast_2d(hess) + return hess + + def fit(self, + start_params=None, + method='BFGS', + maxiter=100, + full_output=True, + disp=False, + fargs=(), + callback=None, + retall=False, + skip_hessian=False, + **kwargs): + + rslt = super(_ConditionalModel, self).fit( + start_params=start_params, + method=method, + maxiter=maxiter, + full_output=full_output, + disp=disp, + skip_hessian=skip_hessian) + + crslt = ConditionalResults(self, rslt.params, rslt.cov_params(), 1) + crslt.method = method + crslt.nobs = self.nobs + crslt.n_groups = self._n_groups + crslt._group_stats = [ + "%d" % min(self._groupsize), + "%d" % max(self._groupsize), + "%.1f" % np.mean(self._groupsize) + ] + rslt = ConditionalResultsWrapper(crslt) + return rslt + + def fit_regularized(self, + method="elastic_net", + alpha=0., + start_params=None, + refit=False, + **kwargs): + """ + Return a regularized fit to a linear regression model. + + Parameters + ---------- + method : + Only the `elastic_net` approach is currently implemented. + alpha : scalar or array-like + The penalty weight. If a scalar, the same penalty weight + applies to all variables in the model. If a vector, it + must have the same length as `params`, and contains a + penalty weight for each coefficient. + start_params : array-like + Starting values for `params`. + refit : bool + If True, the model is refit using only the variables that + have non-zero coefficients in the regularized fit. The + refitted model is not regularized. + + Returns + ------- + An array of parameter estimates. + """ + + from statsmodels.base.elastic_net import fit_elasticnet + + if method != "elastic_net": + raise ValueError("method for fit_regularied must be elastic_net") + + defaults = {"maxiter": 50, "L1_wt": 1, "cnvrg_tol": 1e-10, + "zero_tol": 1e-10} + defaults.update(kwargs) + + return fit_elasticnet(self, method=method, + alpha=alpha, + start_params=start_params, + refit=refit, + **defaults) + + # Override to allow groups to be passed as a variable name. + @classmethod + def from_formula(cls, + formula, + data, + subset=None, + drop_cols=None, + *args, + **kwargs): + + try: + groups = kwargs["groups"] + del kwargs["groups"] + except KeyError: + raise ValueError("'groups' is a required argument") + + if isinstance(groups, str): + groups = data[groups] + + if "0+" not in formula.replace(" ", ""): + warnings.warn("Conditional models should not include an intercept") + + model = super(_ConditionalModel, cls).from_formula( + formula, data=data, groups=groups, *args, **kwargs) + + return model + + +class ConditionalLogit(_ConditionalModel): + """ + Fit a conditional logistic regression model to grouped data. + + Every group is implicitly given an intercept, but the model is fit using + a conditional likelihood in which the intercepts are not present. Thus, + intercept estimates are not given, but the other parameter estimates can + be interpreted as being adjusted for any group-level confounders. + + Parameters + ---------- + endog : array-like + The response variable, must contain only 0 and 1. + exog : array-like + The array of covariates. Do not include an intercept + in this array. + groups : array-like + Codes defining the groups. This is a required keyword parameter. + """ + + def __init__(self, endog, exog, missing='none', **kwargs): + + super(ConditionalLogit, self).__init__( + endog, exog, missing=missing, **kwargs) + + if np.any(np.unique(self.endog) != np.r_[0, 1]): + msg = "endog must be coded as 0, 1" + raise ValueError(msg) + + self.K = self.exog.shape[1] + # i.e. self.k_params, for compatibility with MNLogit + + def loglike(self, params): + + ll = 0 + for g in range(len(self._endog_grp)): + ll += self.loglike_grp(g, params) + + return ll + + def score(self, params): + + score = 0 + for g in range(self._n_groups): + score += self.score_grp(g, params) + + return score + + def _denom(self, grp, params, ofs=None): + + if ofs is None: + ofs = 0 + + exb = np.exp(np.dot(self._exog_grp[grp], params) + ofs) + + # In the recursions, f may be called multiple times with the + # same arguments, so we memoize the results. + memo = {} + + def f(t, k): + if t < k: + return 0 + if k == 0: + return 1 + + try: + return memo[(t, k)] + except KeyError: + pass + + v = f(t - 1, k) + f(t - 1, k - 1) * exb[t - 1] + memo[(t, k)] = v + + return v + + return f(self._groupsize[grp], self._n1[grp]) + + def _denom_grad(self, grp, params, ofs=None): + + if ofs is None: + ofs = 0 + + ex = self._exog_grp[grp] + exb = np.exp(np.dot(ex, params) + ofs) + + # s may be called multiple times in the recursions with the + # same arguments, so memoize the results. + memo = {} + + def s(t, k): + + if t < k: + return 0, np.zeros(self.k_params) + if k == 0: + return 1, 0 + + try: + return memo[(t, k)] + except KeyError: + pass + + h = exb[t - 1] + a, b = s(t - 1, k) + c, e = s(t - 1, k - 1) + d = c * h * ex[t - 1, :] + + u, v = a + c * h, b + d + e * h + memo[(t, k)] = (u, v) + + return u, v + + return s(self._groupsize[grp], self._n1[grp]) + + def loglike_grp(self, grp, params): + + ofs = None + if hasattr(self, 'offset'): + ofs = self._offset_grp[grp] + + llg = np.dot(self._xy[grp], params) + + if ofs is not None: + llg += self._endofs[grp] + + llg -= np.log(self._denom(grp, params, ofs)) + + return llg + + def score_grp(self, grp, params): + + ofs = 0 + if hasattr(self, 'offset'): + ofs = self._offset_grp[grp] + + d, h = self._denom_grad(grp, params, ofs) + return self._xy[grp] - h / d + + +class ConditionalPoisson(_ConditionalModel): + """ + Fit a conditional Poisson regression model to grouped data. + + Every group is implicitly given an intercept, but the model is fit using + a conditional likelihood in which the intercepts are not present. Thus, + intercept estimates are not given, but the other parameter estimates can + be interpreted as being adjusted for any group-level confounders. + + Parameters + ---------- + endog : array-like + The response variable + exog : array-like + The covariates + groups : array-like + Codes defining the groups. This is a required keyword parameter. + """ + + def loglike(self, params): + + ofs = None + if hasattr(self, 'offset'): + ofs = self._offset_grp + + ll = 0.0 + + for i in range(len(self._endog_grp)): + + xb = np.dot(self._exog_grp[i], params) + if ofs is not None: + xb += ofs[i] + exb = np.exp(xb) + y = self._endog_grp[i] + ll += np.dot(y, xb) + s = exb.sum() + ll -= self._sumy[i] * np.log(s) + + return ll + + def score(self, params): + + ofs = None + if hasattr(self, 'offset'): + ofs = self._offset_grp + + score = 0.0 + + for i in range(len(self._endog_grp)): + + x = self._exog_grp[i] + xb = np.dot(x, params) + if ofs is not None: + xb += ofs[i] + exb = np.exp(xb) + s = exb.sum() + y = self._endog_grp[i] + score += np.dot(y, x) + score -= self._sumy[i] * np.dot(exb, x) / s + + return score + + +class ConditionalResults(base.LikelihoodModelResults): + def __init__(self, model, params, normalized_cov_params, scale): + + super(ConditionalResults, self).__init__( + model, + params, + normalized_cov_params=normalized_cov_params, + scale=scale) + + def summary(self, yname=None, xname=None, title=None, alpha=.05): + """ + Summarize the fitted model. + + Parameters + ---------- + yname : string, optional + Default is `y` + xname : list of strings, optional + Default is `var_##` for ## in p the number of regressors + title : string, optional + Title for the top table. If not None, then this replaces the + default title + alpha : float + significance level for the confidence intervals + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary.Summary : class to hold summary + results + + """ + + top_left = [ + ('Dep. Variable:', None), + ('Model:', None), + ('Log-Likelihood:', None), + ('Method:', [self.method]), + ('Date:', None), + ('Time:', None), + ] + + top_right = [ + ('No. Observations:', None), + ('No. groups:', [self.n_groups]), + ('Min group size:', [self._group_stats[0]]), + ('Max group size:', [self._group_stats[1]]), + ('Mean group size:', [self._group_stats[2]]), + ] + + if title is None: + title = "Conditional Logit Model Regression Results" + + # create summary tables + from statsmodels.iolib.summary import Summary + smry = Summary() + smry.add_table_2cols( + self, + gleft=top_left, + gright=top_right, # [], + yname=yname, + xname=xname, + title=title) + smry.add_table_params( + self, yname=yname, xname=xname, alpha=alpha, use_t=self.use_t) + + return smry + +class ConditionalMNLogit(_ConditionalModel): + """ + Fit a conditional multinomial logit model to grouped data. + + Parameters + ---------- + endog : array-like + The dependent variable, must be integer-valued, coded + 0, 1, ..., c-1, where c is the number of response + categories. + exog : array-like + The independent variables. + groups : array-like + Codes defining the groups. This is a required keyword parameter. + + References + ---------- + Gary Chamberlain (1980). Analysis of covariance with qualitative + data. The Review of Economic Studies. Vol. 47, No. 1, pp. 225-238. + + Notes + ----- + Equivalent to femlogit in Stata. + """ + + def __init__(self, endog, exog, missing='none', **kwargs): + + super(ConditionalMNLogit, self).__init__( + endog, exog, missing=missing, **kwargs) + + # endog must be integers + self.endog = self.endog.astype(np.int) + + self.k_cat = self.endog.max() + 1 + self.df_model = (self.k_cat - 1) * self.exog.shape[1] + self.df_resid = self.nobs - self.df_model + self._ynames_map = {j: str(j) for j in range(self.k_cat)} + self.J = self.k_cat # Unfortunate name, needed for results + self.K = self.exog.shape[1] # for compatibility with MNLogit + + if self.endog.min() < 0: + msg = "endog may not contain negative values" + raise ValueError(msg) + + grx = collections.defaultdict(list) + for k, v in enumerate(self.groups): + grx[v].append(k) + self._group_labels = list(grx.keys()) + self._group_labels.sort() + self._grp_ix = [grx[k] for k in self._group_labels] + + def fit(self, + start_params=None, + method='BFGS', + maxiter=100, + full_output=True, + disp=False, + fargs=(), + callback=None, + retall=False, + skip_hessian=False, + **kwargs): + + if start_params is None: + q = self.exog.shape[1] + c = self.k_cat - 1 + start_params = np.random.normal(size=q * c) + + # Don't call super(...).fit because it can't handle the 2d-params. + rslt = base.LikelihoodModel.fit( + self, + start_params=start_params, + method=method, + maxiter=maxiter, + full_output=full_output, + disp=disp, + skip_hessian=skip_hessian) + + rslt.params = rslt.params.reshape((self.exog.shape[1], -1)) + rslt = MultinomialResults(self, rslt) + + # Not clear what the null likelihood should be, there is no intercept + # so the null model isn't clearly defined. This is needed for summary + # to work. + rslt.set_null_options(llnull=np.nan) + + return MultinomialResultsWrapper(rslt) + + def loglike(self, params): + + q = self.exog.shape[1] + c = self.k_cat - 1 + + pmat = params.reshape((q, c)) + pmat = np.concatenate((np.zeros((q, 1)), pmat), axis=1) + lpr = np.dot(self.exog, pmat) + + ll = 0.0 + for ii in self._grp_ix: + x = lpr[ii, :] + jj = np.arange(x.shape[0], dtype=np.int) + y = self.endog[ii] + denom = 0.0 + for p in itertools.permutations(y): + denom += np.exp(x[(jj, p)].sum()) + ll += x[(jj, y)].sum() - np.log(denom) + + return ll + + + def score(self, params): + + q = self.exog.shape[1] + c = self.k_cat - 1 + + pmat = params.reshape((q, c)) + pmat = np.concatenate((np.zeros((q, 1)), pmat), axis=1) + lpr = np.dot(self.exog, pmat) + + grad = np.zeros((q, c)) + for ii in self._grp_ix: + x = lpr[ii, :] + jj = np.arange(x.shape[0], dtype=np.int) + y = self.endog[ii] + denom = 0.0 + denomg = np.zeros((q, c)) + for p in itertools.permutations(y): + v = np.exp(x[(jj, p)].sum()) + denom += v + for i, r in enumerate(p): + if r != 0: + denomg[:, r - 1] += v * self.exog[ii[i], :] + + for i, r in enumerate(y): + if r != 0: + grad[:, r - 1] += self.exog[ii[i], :] + + grad -= denomg / denom + + return grad.flatten() + + + +class ConditionalResultsWrapper(lm.RegressionResultsWrapper): + pass + + +wrap.populate_wrapper(ConditionalResultsWrapper, ConditionalResults) diff --git a/statsmodels/discrete/count_model.py b/statsmodels/discrete/count_model.py new file mode 100644 index 0000000..6496a5a --- /dev/null +++ b/statsmodels/discrete/count_model.py @@ -0,0 +1,820 @@ +from __future__ import division + +__all__ = ["ZeroInflatedPoisson", "ZeroInflatedGeneralizedPoisson", + "ZeroInflatedNegativeBinomialP"] + +import warnings +import numpy as np +import statsmodels.base.model as base +import statsmodels.base.wrapper as wrap +import statsmodels.regression.linear_model as lm +from statsmodels.discrete.discrete_model import (DiscreteModel, CountModel, + Poisson, Logit, CountResults, + L1CountResults, Probit, + _discrete_results_docs, + _validate_l1_method, + GeneralizedPoisson, + NegativeBinomialP) +from statsmodels.distributions import zipoisson, zigenpoisson, zinegbin +from statsmodels.tools.numdiff import approx_fprime, approx_hess +from statsmodels.tools.decorators import cache_readonly +from statsmodels.tools.sm_exceptions import ConvergenceWarning + + +_doc_zi_params = """ + exog_infl : array_like or None + Explanatory variables for the binary inflation model, i.e. for + mixing probability model. If None, then a constant is used. + offset : array_like + Offset is added to the linear prediction with coefficient equal to 1. + exposure : array_like + Log(exposure) is added to the linear prediction with coefficient + equal to 1. + inflation : string, 'logit' or 'probit' + The model for the zero inflation, either Logit (default) or Probit + """ + + +class GenericZeroInflated(CountModel): + __doc__ = """ + Generiz Zero Inflated model for count data + + %(params)s + %(extra_params)s + + Attributes + ---------- + endog : array + A reference to the endogenous response variable + exog : array + A reference to the exogenous design. + exog_infl: array + A reference to the zero-inflated exogenous design. + """ % {'params' : base._model_params_doc, + 'extra_params' : _doc_zi_params + base._missing_param_doc} + + def __init__(self, endog, exog, exog_infl=None, offset=None, + inflation='logit', exposure=None, missing='none', **kwargs): + super(GenericZeroInflated, self).__init__(endog, exog, offset=offset, + exposure=exposure, + missing=missing, **kwargs) + + if exog_infl is None: + self.k_inflate = 1 + self.exog_infl = np.ones((endog.size, self.k_inflate), + dtype=np.float64) + else: + self.exog_infl = exog_infl + self.k_inflate = exog_infl.shape[1] + + if len(exog.shape) == 1: + self.k_exog = 1 + else: + self.k_exog = exog.shape[1] + + self.infl = inflation + if inflation == 'logit': + self.model_infl = Logit(np.zeros(self.exog_infl.shape[0]), + self.exog_infl) + self._hessian_inflate = self._hessian_logit + elif inflation == 'probit': + self.model_infl = Probit(np.zeros(self.exog_infl.shape[0]), + self.exog_infl) + self._hessian_inflate = self._hessian_probit + + else: + raise ValueError("inflation == %s, which is not handled" + % inflation) + + self.inflation = inflation + self.k_extra = self.k_inflate + + if len(self.exog) != len(self.exog_infl): + raise ValueError('exog and exog_infl have different number of' + 'observation. `missing` handling is not supported') + + infl_names = ['inflate_%s' % i for i in self.model_infl.data.param_names] + self.exog_names[:] = infl_names + list(self.exog_names) + self.exog_infl = np.asarray(self.exog_infl, dtype=np.float64) + + self._init_keys.extend(['exog_infl', 'inflation']) + self._null_drop_keys = ['exog_infl'] + + def loglike(self, params): + """ + Loglikelihood of Generic Zero Inflated model + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + loglike : float + The log-likelihood function of the model evaluated at `params`. + See notes. + + Notes + -------- + .. math:: \\ln L=\\sum_{y_{i}=0}\\ln(w_{i}+(1-w_{i})*P_{main\\_model})+ + \\sum_{y_{i}>0}(\\ln(1-w_{i})+L_{main\\_model}) + where P - pdf of main model, L - loglike function of main model. + + """ + return np.sum(self.loglikeobs(params)) + + def loglikeobs(self, params): + """ + Loglikelihood for observations of Generic Zero Inflated model + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + loglike : ndarray + The log likelihood for each observation of the model evaluated + at `params`. See Notes + + Notes + -------- + .. math:: \\ln L=\\ln(w_{i}+(1-w_{i})*P_{main\\_model})+ + \\ln(1-w_{i})+L_{main\\_model} + where P - pdf of main model, L - loglike function of main model. + + for observations :math:`i=1,...,n` + + """ + params_infl = params[:self.k_inflate] + params_main = params[self.k_inflate:] + + y = self.endog + w = self.model_infl.predict(params_infl) + + w = np.clip(w, np.finfo(float).eps, 1 - np.finfo(float).eps) + llf_main = self.model_main.loglikeobs(params_main) + zero_idx = np.nonzero(y == 0)[0] + nonzero_idx = np.nonzero(y)[0] + + llf = np.zeros_like(y, dtype=np.float64) + llf[zero_idx] = (np.log(w[zero_idx] + + (1 - w[zero_idx]) * np.exp(llf_main[zero_idx]))) + llf[nonzero_idx] = np.log(1 - w[nonzero_idx]) + llf_main[nonzero_idx] + + return llf + + def fit(self, start_params=None, method='bfgs', maxiter=35, + full_output=1, disp=1, callback=None, + cov_type='nonrobust', cov_kwds=None, use_t=None, **kwargs): + if start_params is None: + offset = getattr(self, "offset", 0) + getattr(self, "exposure", 0) + if np.size(offset) == 1 and offset == 0: + offset = None + start_params = self._get_start_params() + + if callback is None: + # work around perfect separation callback #3895 + callback = lambda *x: x + + mlefit = super(GenericZeroInflated, self).fit(start_params=start_params, + maxiter=maxiter, disp=disp, method=method, + full_output=full_output, callback=callback, + **kwargs) + + zipfit = self.result_class(self, mlefit._results) + result = self.result_class_wrapper(zipfit) + + if cov_kwds is None: + cov_kwds = {} + + result._get_robustcov_results(cov_type=cov_type, + use_self=True, use_t=use_t, **cov_kwds) + return result + + fit.__doc__ = DiscreteModel.fit.__doc__ + + def fit_regularized(self, start_params=None, method='l1', + maxiter='defined_by_method', full_output=1, disp=1, callback=None, + alpha=0, trim_mode='auto', auto_trim_tol=0.01, size_trim_tol=1e-4, + qc_tol=0.03, **kwargs): + + _validate_l1_method(method) + + if np.size(alpha) == 1 and alpha != 0: + k_params = self.k_exog + self.k_inflate + alpha = alpha * np.ones(k_params) + + extra = self.k_extra - self.k_inflate + alpha_p = alpha[:-(self.k_extra - extra)] if (self.k_extra + and np.size(alpha) > 1) else alpha + if start_params is None: + offset = getattr(self, "offset", 0) + getattr(self, "exposure", 0) + if np.size(offset) == 1 and offset == 0: + offset = None + start_params = self.model_main.fit_regularized( + start_params=start_params, method=method, maxiter=maxiter, + full_output=full_output, disp=0, callback=callback, + alpha=alpha_p, trim_mode=trim_mode, auto_trim_tol=auto_trim_tol, + size_trim_tol=size_trim_tol, qc_tol=qc_tol, **kwargs).params + start_params = np.append(np.ones(self.k_inflate), start_params) + cntfit = super(CountModel, self).fit_regularized( + start_params=start_params, method=method, maxiter=maxiter, + full_output=full_output, disp=disp, callback=callback, + alpha=alpha, trim_mode=trim_mode, auto_trim_tol=auto_trim_tol, + size_trim_tol=size_trim_tol, qc_tol=qc_tol, **kwargs) + + discretefit = self.result_class_reg(self, cntfit) + return self.result_class_reg_wrapper(discretefit) + + fit_regularized.__doc__ = DiscreteModel.fit_regularized.__doc__ + + def score_obs(self, params): + """ + Generic Zero Inflated model score (gradient) vector of the log-likelihood + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + score : ndarray, 1-D + The score vector of the model, i.e. the first derivative of the + loglikelihood function, evaluated at `params` + """ + params_infl = params[:self.k_inflate] + params_main = params[self.k_inflate:] + + y = self.endog + w = self.model_infl.predict(params_infl) + w = np.clip(w, np.finfo(float).eps, 1 - np.finfo(float).eps) + score_main = self.model_main.score_obs(params_main) + llf_main = self.model_main.loglikeobs(params_main) + llf = self.loglikeobs(params) + zero_idx = np.nonzero(y == 0)[0] + nonzero_idx = np.nonzero(y)[0] + + mu = self.model_main.predict(params_main) + + dldp = np.zeros((self.exog.shape[0], self.k_exog), dtype=np.float64) + dldw = np.zeros_like(self.exog_infl, dtype=np.float64) + + dldp[zero_idx,:] = (score_main[zero_idx].T * + (1 - (w[zero_idx]) / np.exp(llf[zero_idx]))).T + dldp[nonzero_idx,:] = score_main[nonzero_idx] + + if self.inflation == 'logit': + dldw[zero_idx,:] = (self.exog_infl[zero_idx].T * w[zero_idx] * + (1 - w[zero_idx]) * + (1 - np.exp(llf_main[zero_idx])) / + np.exp(llf[zero_idx])).T + dldw[nonzero_idx,:] = -(self.exog_infl[nonzero_idx].T * + w[nonzero_idx]).T + elif self.inflation == 'probit': + return approx_fprime(params, self.loglikeobs) + + return np.hstack((dldw, dldp)) + + def score(self, params): + return self.score_obs(params).sum(0) + + def _hessian_main(self, params): + pass + + def _hessian_logit(self, params): + params_infl = params[:self.k_inflate] + params_main = params[self.k_inflate:] + + y = self.endog + w = self.model_infl.predict(params_infl) + w = np.clip(w, np.finfo(float).eps, 1 - np.finfo(float).eps) + score_main = self.model_main.score_obs(params_main) + llf_main = self.model_main.loglikeobs(params_main) + llf = self.loglikeobs(params) + zero_idx = np.nonzero(y == 0)[0] + nonzero_idx = np.nonzero(y)[0] + + hess_arr = np.zeros((self.k_inflate, self.k_exog + self.k_inflate)) + + pmf = np.exp(llf) + + #d2l/dw2 + for i in range(self.k_inflate): + for j in range(i, -1, -1): + hess_arr[i, j] = (( + self.exog_infl[zero_idx, i] * self.exog_infl[zero_idx, j] * + (w[zero_idx] * (1 - w[zero_idx]) * ((1 - + np.exp(llf_main[zero_idx])) * (1 - 2 * w[zero_idx]) * + np.exp(llf[zero_idx]) - (w[zero_idx] - w[zero_idx]**2) * + (1 - np.exp(llf_main[zero_idx]))**2) / + pmf[zero_idx]**2)).sum() - + (self.exog_infl[nonzero_idx, i] * self.exog_infl[nonzero_idx, j] * + w[nonzero_idx] * (1 - w[nonzero_idx])).sum()) + + #d2l/dpdw + for i in range(self.k_inflate): + for j in range(self.k_exog): + hess_arr[i, j + self.k_inflate] = -(score_main[zero_idx, j] * + w[zero_idx] * (1 - w[zero_idx]) * + self.exog_infl[zero_idx, i] / pmf[zero_idx]).sum() + + return hess_arr + + def _hessian_probit(self, params): + pass + + def hessian(self, params): + """ + Generic Zero Inflated model Hessian matrix of the loglikelihood + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + hess : ndarray, (k_vars, k_vars) + The Hessian, second derivative of loglikelihood function, + evaluated at `params` + + Notes + ----- + """ + hess_arr_main = self._hessian_main(params) + hess_arr_infl = self._hessian_inflate(params) + + if hess_arr_main is None or hess_arr_infl is None: + return approx_hess(params, self.loglike) + + dim = self.k_exog + self.k_inflate + + hess_arr = np.zeros((dim, dim)) + + hess_arr[:self.k_inflate,:] = hess_arr_infl + hess_arr[self.k_inflate:,self.k_inflate:] = hess_arr_main + + tri_idx = np.triu_indices(self.k_exog + self.k_inflate, k=1) + hess_arr[tri_idx] = hess_arr.T[tri_idx] + + return hess_arr + + def predict(self, params, exog=None, exog_infl=None, exposure=None, + offset=None, which='mean'): + """ + Predict response variable of a count model given exogenous variables. + + Parameters + ---------- + params : array-like + The parameters of the model + exog : array, optional + A reference to the exogenous design. + If not assigned, will be used exog from fitting. + exog_infl : array, optional + A reference to the zero-inflated exogenous design. + If not assigned, will be used exog from fitting. + offset : array, optional + Offset is added to the linear prediction with coefficient equal to 1. + exposure : array, optional + Log(exposure) is added to the linear prediction with coefficient + equal to 1. If exposure is specified, then it will be logged by the method. + The user does not need to log it first. + which : string, optional + Define values that will be predicted. + 'mean', 'mean-main', 'linear', 'mean-nonzero', 'prob-zero, 'prob', 'prob-main' + Default is 'mean'. + + Notes + ----- + """ + if exog is None: + exog = self.exog + + if exog_infl is None: + exog_infl = self.exog_infl + + if exposure is None: + exposure = getattr(self, 'exposure', 0) + else: + exposure = np.log(exposure) + + if offset is None: + offset = 0 + + params_infl = params[:self.k_inflate] + params_main = params[self.k_inflate:] + + prob_main = 1 - self.model_infl.predict(params_infl, exog_infl) + + lin_pred = np.dot(exog, params_main[:self.exog.shape[1]]) + exposure + offset + + # Refactor: This is pretty hacky, + # there should be an appropriate predict method in model_main + # this is just prob(y=0 | model_main) + tmp_exog = self.model_main.exog + tmp_endog = self.model_main.endog + tmp_offset = getattr(self.model_main, 'offset', ['no']) + tmp_exposure = getattr(self.model_main, 'exposure', ['no']) + self.model_main.exog = exog + self.model_main.endog = np.zeros((exog.shape[0])) + self.model_main.offset = offset + self.model_main.exposure = exposure + llf = self.model_main.loglikeobs(params_main) + self.model_main.exog = tmp_exog + self.model_main.endog = tmp_endog + # tmp_offset might be an array with elementwise equality testing + if len(tmp_offset) == 1 and tmp_offset[0] == 'no': + del self.model_main.offset + else: + self.model_main.offset = tmp_offset + if len(tmp_exposure) == 1 and tmp_exposure[0] == 'no': + del self.model_main.exposure + else: + self.model_main.exposure = tmp_exposure + # end hack + + prob_zero = (1 - prob_main) + prob_main * np.exp(llf) + + if which == 'mean': + return prob_main * np.exp(lin_pred) + elif which == 'mean-main': + return np.exp(lin_pred) + elif which == 'linear': + return lin_pred + elif which == 'mean-nonzero': + return prob_main * np.exp(lin_pred) / (1 - prob_zero) + elif which == 'prob-zero': + return prob_zero + elif which == 'prob-main': + return prob_main + elif which == 'prob': + return self._predict_prob(params, exog, exog_infl, exposure, offset) + else: + raise ValueError('which = %s is not available' % which) + + +class ZeroInflatedPoisson(GenericZeroInflated): + __doc__ = """ + Poisson Zero Inflated model for count data + + %(params)s + %(extra_params)s + + Attributes + ---------- + endog : array + A reference to the endogenous response variable + exog : array + A reference to the exogenous design. + exog_infl: array + A reference to the zero-inflated exogenous design. + """ % {'params' : base._model_params_doc, + 'extra_params' : _doc_zi_params + base._missing_param_doc} + + def __init__(self, endog, exog, exog_infl=None, offset=None, exposure=None, + inflation='logit', missing='none', **kwargs): + super(ZeroInflatedPoisson, self).__init__(endog, exog, offset=offset, + inflation=inflation, + exog_infl=exog_infl, + exposure=exposure, + missing=missing, **kwargs) + self.model_main = Poisson(self.endog, self.exog, offset=offset, + exposure=exposure) + self.distribution = zipoisson + self.result_class = ZeroInflatedPoissonResults + self.result_class_wrapper = ZeroInflatedPoissonResultsWrapper + self.result_class_reg = L1ZeroInflatedPoissonResults + self.result_class_reg_wrapper = L1ZeroInflatedPoissonResultsWrapper + + def _hessian_main(self, params): + params_infl = params[:self.k_inflate] + params_main = params[self.k_inflate:] + + y = self.endog + w = self.model_infl.predict(params_infl) + w = np.clip(w, np.finfo(float).eps, 1 - np.finfo(float).eps) + score = self.score(params) + zero_idx = np.nonzero(y == 0)[0] + nonzero_idx = np.nonzero(y)[0] + + mu = self.model_main.predict(params_main) + + hess_arr = np.zeros((self.k_exog, self.k_exog)) + + coeff = (1 + w[zero_idx] * (np.exp(mu[zero_idx]) - 1)) + + #d2l/dp2 + for i in range(self.k_exog): + for j in range(i, -1, -1): + hess_arr[i, j] = (( + self.exog[zero_idx, i] * self.exog[zero_idx, j] * + mu[zero_idx] * (w[zero_idx] - 1) * (1 / coeff - + w[zero_idx] * mu[zero_idx] * np.exp(mu[zero_idx]) / + coeff**2)).sum() - (mu[nonzero_idx] * self.exog[nonzero_idx, i] * + self.exog[nonzero_idx, j]).sum()) + + return hess_arr + + def _predict_prob(self, params, exog, exog_infl, exposure, offset): + params_infl = params[:self.k_inflate] + params_main = params[self.k_inflate:] + + counts = np.atleast_2d(np.arange(0, np.max(self.endog)+1)) + + if len(exog_infl.shape) < 2: + transform = True + w = np.atleast_2d( + self.model_infl.predict(params_infl, exog_infl))[:, None] + else: + transform = False + w = self.model_infl.predict(params_infl, exog_infl)[:, None] + + w = np.clip(w, np.finfo(float).eps, 1 - np.finfo(float).eps) + mu = self.model_main.predict(params_main, exog, + offset=offset)[:, None] + result = self.distribution.pmf(counts, mu, w) + return result[0] if transform else result + + def _get_start_params(self): + start_params = self.model_main.fit(disp=0, method="nm").params + start_params = np.append(np.ones(self.k_inflate) * 0.1, start_params) + return start_params + + +class ZeroInflatedGeneralizedPoisson(GenericZeroInflated): + __doc__ = """ + Zero Inflated Generalized Poisson model for count data + + %(params)s + %(extra_params)s + + Attributes + ---------- + endog : array + A reference to the endogenous response variable + exog : array + A reference to the exogenous design. + exog_infl: array + A reference to the zero-inflated exogenous design. + p: scalar + P denotes parametrizations for ZIGP regression. + """ % {'params' : base._model_params_doc, + 'extra_params' : _doc_zi_params + + """p : float + dispersion power parameter for the GeneralizedPoisson model. p=1 for + ZIGP-1 and p=2 for ZIGP-2. Default is p=2 + """ + base._missing_param_doc} + + def __init__(self, endog, exog, exog_infl=None, offset=None, exposure=None, + inflation='logit', p=2, missing='none', **kwargs): + super(ZeroInflatedGeneralizedPoisson, self).__init__(endog, exog, + offset=offset, + inflation=inflation, + exog_infl=exog_infl, + exposure=exposure, + missing=missing, **kwargs) + self.model_main = GeneralizedPoisson(self.endog, self.exog, + offset=offset, exposure=exposure, p=p) + self.distribution = zigenpoisson + self.k_exog += 1 + self.k_extra += 1 + self.exog_names.append("alpha") + self.result_class = ZeroInflatedGeneralizedPoissonResults + self.result_class_wrapper = ZeroInflatedGeneralizedPoissonResultsWrapper + self.result_class_reg = L1ZeroInflatedGeneralizedPoissonResults + self.result_class_reg_wrapper = L1ZeroInflatedGeneralizedPoissonResultsWrapper + + def _get_init_kwds(self): + kwds = super(ZeroInflatedGeneralizedPoisson, self)._get_init_kwds() + kwds['p'] = self.model_main.parameterization + 1 + return kwds + + def _predict_prob(self, params, exog, exog_infl, exposure, offset): + params_infl = params[:self.k_inflate] + params_main = params[self.k_inflate:] + + p = self.model_main.parameterization + counts = np.atleast_2d(np.arange(0, np.max(self.endog)+1)) + + if len(exog_infl.shape) < 2: + transform = True + w = np.atleast_2d( + self.model_infl.predict(params_infl, exog_infl))[:, None] + else: + transform = False + w = self.model_infl.predict(params_infl, exog_infl)[:, None] + + w[w == 1.] = np.nextafter(1, 0) + mu = self.model_main.predict(params_main, exog, + exposure=exposure, offset=offset)[:, None] + result = self.distribution.pmf(counts, mu, params_main[-1], p, w) + return result[0] if transform else result + + def _get_start_params(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=ConvergenceWarning) + start_params = ZeroInflatedPoisson(self.endog, self.exog, + exog_infl=self.exog_infl).fit(disp=0).params + start_params = np.append(start_params, 0.1) + return start_params + + +class ZeroInflatedNegativeBinomialP(GenericZeroInflated): + __doc__ = """ + Zero Inflated Generalized Negative Binomial model for count data + + %(params)s + %(extra_params)s + + Attributes + ---------- + endog : array + A reference to the endogenous response variable + exog : array + A reference to the exogenous design. + exog_infl: array + A reference to the zero-inflated exogenous design. + p: scalar + P denotes parametrizations for ZINB regression. p=1 for ZINB-1 and + p=2 for ZINB-2. Default is p=2 + """ % {'params' : base._model_params_doc, + 'extra_params' : _doc_zi_params + + """p : float + dispersion power parameter for the NegativeBinomialP model. p=1 for + ZINB-1 and p=2 for ZINM-2. Default is p=2 + """ + base._missing_param_doc} + + def __init__(self, endog, exog, exog_infl=None, offset=None, exposure=None, + inflation='logit', p=2, missing='none', **kwargs): + super(ZeroInflatedNegativeBinomialP, self).__init__(endog, exog, + offset=offset, + inflation=inflation, + exog_infl=exog_infl, + exposure=exposure, + missing=missing, **kwargs) + self.model_main = NegativeBinomialP(self.endog, self.exog, + offset=offset, exposure=exposure, p=p) + self.distribution = zinegbin + self.k_exog += 1 + self.k_extra += 1 + self.exog_names.append("alpha") + self.result_class = ZeroInflatedNegativeBinomialResults + self.result_class_wrapper = ZeroInflatedNegativeBinomialResultsWrapper + self.result_class_reg = L1ZeroInflatedNegativeBinomialResults + self.result_class_reg_wrapper = L1ZeroInflatedNegativeBinomialResultsWrapper + + def _get_init_kwds(self): + kwds = super(ZeroInflatedNegativeBinomialP, self)._get_init_kwds() + kwds['p'] = self.model_main.parameterization + return kwds + + def _predict_prob(self, params, exog, exog_infl, exposure, offset): + params_infl = params[:self.k_inflate] + params_main = params[self.k_inflate:] + + p = self.model_main.parameterization + counts = np.arange(0, np.max(self.endog)+1) + + if len(exog_infl.shape) < 2: + transform = True + w = np.atleast_2d( + self.model_infl.predict(params_infl, exog_infl))[:, None] + else: + transform = False + w = self.model_infl.predict(params_infl, exog_infl)[:, None] + + w = np.clip(w, np.finfo(float).eps, 1 - np.finfo(float).eps) + mu = self.model_main.predict(params_main, exog, + exposure=exposure, offset=offset)[:, None] + result = self.distribution.pmf(counts, mu, params_main[-1], p, w) + return result[0] if transform else result + + def _get_start_params(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=ConvergenceWarning) + start_params = self.model_main.fit(disp=0, method='nm').params + start_params = np.append(np.zeros(self.k_inflate), start_params) + return start_params + + +class ZeroInflatedPoissonResults(CountResults): + __doc__ = _discrete_results_docs % { + "one_line_description": "A results class for Zero Inflated Poisson", + "extra_attr": ""} + + @cache_readonly + def _dispersion_factor(self): + mu = self.predict(which='linear') + w = 1 - self.predict() / np.exp(self.predict(which='linear')) + return (1 + w * np.exp(mu)) + + def get_margeff(self, at='overall', method='dydx', atexog=None, + dummy=False, count=False): + """Get marginal effects of the fitted model. + + Not yet implemented for Zero Inflated Models + """ + raise NotImplementedError("not yet implemented for zero inflation") + + +class L1ZeroInflatedPoissonResults(L1CountResults, ZeroInflatedPoissonResults): + pass + + +class ZeroInflatedPoissonResultsWrapper(lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(ZeroInflatedPoissonResultsWrapper, + ZeroInflatedPoissonResults) + + +class L1ZeroInflatedPoissonResultsWrapper(lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(L1ZeroInflatedPoissonResultsWrapper, + L1ZeroInflatedPoissonResults) + + +class ZeroInflatedGeneralizedPoissonResults(CountResults): + __doc__ = _discrete_results_docs % { + "one_line_description": "A results class for Zero Inflated Generalized Poisson", + "extra_attr": ""} + + @cache_readonly + def _dispersion_factor(self): + p = self.model.model_main.parameterization + alpha = self.params[self.model.k_inflate:][-1] + mu = np.exp(self.predict(which='linear')) + w = 1 - self.predict() / mu + return ((1 + alpha * mu**p)**2 + w * mu) + + def get_margeff(self, at='overall', method='dydx', atexog=None, + dummy=False, count=False): + """Get marginal effects of the fitted model. + + Not yet implemented for Zero Inflated Models + """ + raise NotImplementedError("not yet implemented for zero inflation") + + +class L1ZeroInflatedGeneralizedPoissonResults(L1CountResults, + ZeroInflatedGeneralizedPoissonResults): + pass + + +class ZeroInflatedGeneralizedPoissonResultsWrapper( + lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(ZeroInflatedGeneralizedPoissonResultsWrapper, + ZeroInflatedGeneralizedPoissonResults) + + +class L1ZeroInflatedGeneralizedPoissonResultsWrapper( + lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(L1ZeroInflatedGeneralizedPoissonResultsWrapper, + L1ZeroInflatedGeneralizedPoissonResults) + + +class ZeroInflatedNegativeBinomialResults(CountResults): + __doc__ = _discrete_results_docs % { + "one_line_description": "A results class for Zero Inflated Genaralized Negative Binomial", + "extra_attr": ""} + + @cache_readonly + def _dispersion_factor(self): + p = self.model.model_main.parameterization + alpha = self.params[self.model.k_inflate:][-1] + mu = np.exp(self.predict(which='linear')) + w = 1 - self.predict() / mu + return (1 + alpha * mu**(p-1) + w * mu) + + def get_margeff(self, at='overall', method='dydx', atexog=None, + dummy=False, count=False): + """Get marginal effects of the fitted model. + + Not yet implemented for Zero Inflated Models + """ + raise NotImplementedError("not yet implemented for zero inflation") + + +class L1ZeroInflatedNegativeBinomialResults(L1CountResults, + ZeroInflatedNegativeBinomialResults): + pass + + +class ZeroInflatedNegativeBinomialResultsWrapper( + lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(ZeroInflatedNegativeBinomialResultsWrapper, + ZeroInflatedNegativeBinomialResults) + + +class L1ZeroInflatedNegativeBinomialResultsWrapper( + lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(L1ZeroInflatedNegativeBinomialResultsWrapper, + L1ZeroInflatedNegativeBinomialResults) diff --git a/statsmodels/discrete/discrete_margins.py b/statsmodels/discrete/discrete_margins.py new file mode 100644 index 0000000..4af419a --- /dev/null +++ b/statsmodels/discrete/discrete_margins.py @@ -0,0 +1,734 @@ +#Splitting out maringal effects to see if they can be generalized + +from statsmodels.compat.python import lzip, range +import numpy as np +from scipy.stats import norm +from statsmodels.tools.decorators import cache_readonly + +#### margeff helper functions #### +#NOTE: todo marginal effects for group 2 +# group 2 oprobit, ologit, gologit, mlogit, biprobit + +def _check_margeff_args(at, method): + """ + Checks valid options for margeff + """ + if at not in ['overall','mean','median','zero','all']: + raise ValueError("%s not a valid option for `at`." % at) + if method not in ['dydx','eyex','dyex','eydx']: + raise ValueError("method is not understood. Got %s" % method) + +def _check_discrete_args(at, method): + """ + Checks the arguments for margeff if the exogenous variables are discrete. + """ + if method in ['dyex','eyex']: + raise ValueError("%s not allowed for discrete variables" % method) + if at in ['median', 'zero']: + raise ValueError("%s not allowed for discrete variables" % at) + +def _get_const_index(exog): + """ + Returns a boolean array of non-constant column indices in exog and + an scalar array of where the constant is or None + """ + effects_idx = exog.var(0) != 0 + if np.any(~effects_idx): + const_idx = np.where(~effects_idx)[0] + else: + const_idx = None + return effects_idx, const_idx + +def _isdummy(X): + """ + Given an array X, returns the column indices for the dummy variables. + + Parameters + ---------- + X : array-like + A 1d or 2d array of numbers + + Examples + -------- + >>> X = np.random.randint(0, 2, size=(15,5)).astype(float) + >>> X[:,1:3] = np.random.randn(15,2) + >>> ind = _isdummy(X) + >>> ind + array([0, 3, 4]) + """ + X = np.asarray(X) + if X.ndim > 1: + ind = np.zeros(X.shape[1]).astype(bool) + max = (np.max(X, axis=0) == 1) + min = (np.min(X, axis=0) == 0) + remainder = np.all(X % 1. == 0, axis=0) + ind = min & max & remainder + if X.ndim == 1: + ind = np.asarray([ind]) + return np.where(ind)[0] + +def _get_dummy_index(X, const_idx): + dummy_ind = _isdummy(X) + dummy = True + + if dummy_ind.size == 0: # don't waste your time + dummy = False + dummy_ind = None # this gets passed to stand err func + return dummy_ind, dummy + +def _iscount(X): + """ + Given an array X, returns the column indices for count variables. + + Parameters + ---------- + X : array-like + A 1d or 2d array of numbers + + Examples + -------- + >>> X = np.random.randint(0, 10, size=(15,5)).astype(float) + >>> X[:,1:3] = np.random.randn(15,2) + >>> ind = _iscount(X) + >>> ind + array([0, 3, 4]) + """ + X = np.asarray(X) + remainder = np.logical_and(np.logical_and(np.all(X % 1. == 0, axis = 0), + X.var(0) != 0), np.all(X >= 0, axis=0)) + dummy = _isdummy(X) + remainder = np.where(remainder)[0].tolist() + for idx in dummy: + remainder.remove(idx) + return np.array(remainder) + +def _get_count_index(X, const_idx): + count_ind = _iscount(X) + count = True + + if count_ind.size == 0: # don't waste your time + count = False + count_ind = None # for stand err func + return count_ind, count + +def _get_margeff_exog(exog, at, atexog, ind): + if atexog is not None: # user supplied + if isinstance(atexog, dict): + # assumes values are singular or of len(exog) + for key in atexog: + exog[:,key] = atexog[key] + elif isinstance(atexog, np.ndarray): #TODO: handle DataFrames + if atexog.ndim == 1: + k_vars = len(atexog) + else: + k_vars = atexog.shape[1] + try: + assert k_vars == exog.shape[1] + except: + raise ValueError("atexog does not have the same number " + "of variables as exog") + exog = atexog + + #NOTE: we should fill in atexog after we process at + if at == 'mean': + exog = np.atleast_2d(exog.mean(0)) + elif at == 'median': + exog = np.atleast_2d(np.median(exog, axis=0)) + elif at == 'zero': + exog = np.zeros((1,exog.shape[1])) + exog[0,~ind] = 1 + return exog + +def _get_count_effects(effects, exog, count_ind, method, model, params): + """ + If there's a count variable, the predicted difference is taken by + subtracting one and adding one to exog then averaging the difference + """ + # this is the index for the effect and the index for count col in exog + for i in count_ind: + exog0 = exog.copy() + exog0[:, i] -= 1 + effect0 = model.predict(params, exog0) + exog0[:, i] += 2 + effect1 = model.predict(params, exog0) + #NOTE: done by analogy with dummy effects but untested bc + # stata doesn't handle both count and eydx anywhere + if 'ey' in method: + effect0 = np.log(effect0) + effect1 = np.log(effect1) + effects[:, i] = ((effect1 - effect0)/2) + return effects + +def _get_dummy_effects(effects, exog, dummy_ind, method, model, params): + """ + If there's a dummy variable, the predicted difference is taken at + 0 and 1 + """ + # this is the index for the effect and the index for dummy col in exog + for i in dummy_ind: + exog0 = exog.copy() # only copy once, can we avoid a copy? + exog0[:,i] = 0 + effect0 = model.predict(params, exog0) + #fittedvalues0 = np.dot(exog0,params) + exog0[:,i] = 1 + effect1 = model.predict(params, exog0) + if 'ey' in method: + effect0 = np.log(effect0) + effect1 = np.log(effect1) + effects[:, i] = (effect1 - effect0) + return effects + +def _effects_at(effects, at): + if at == 'all': + effects = effects + elif at == 'overall': + effects = effects.mean(0) + else: + effects = effects[0,:] + return effects + +def _margeff_cov_params_dummy(model, cov_margins, params, exog, dummy_ind, + method, J): + r""" + Returns the Jacobian for discrete regressors for use in margeff_cov_params. + + For discrete regressors the marginal effect is + + \Delta F = F(XB) | d = 1 - F(XB) | d = 0 + + The row of the Jacobian for this variable is given by + + f(XB)*X | d = 1 - f(XB)*X | d = 0 + + Where F is the default prediction of the model. + """ + for i in dummy_ind: + exog0 = exog.copy() + exog1 = exog.copy() + exog0[:,i] = 0 + exog1[:,i] = 1 + dfdb0 = model._derivative_predict(params, exog0, method) + dfdb1 = model._derivative_predict(params, exog1, method) + dfdb = (dfdb1 - dfdb0) + if dfdb.ndim >= 2: # for overall + dfdb = dfdb.mean(0) + if J > 1: + K = dfdb.shape[1] // (J-1) + cov_margins[i::K, :] = dfdb + else: + # dfdb could be too short if there are extra params, k_extra > 0 + cov_margins[i, :len(dfdb)] = dfdb # how each F changes with change in B + return cov_margins + +def _margeff_cov_params_count(model, cov_margins, params, exog, count_ind, + method, J): + r""" + Returns the Jacobian for discrete regressors for use in margeff_cov_params. + + For discrete regressors the marginal effect is + + \Delta F = F(XB) | d += 1 - F(XB) | d -= 1 + + The row of the Jacobian for this variable is given by + + (f(XB)*X | d += 1 - f(XB)*X | d -= 1) / 2 + + where F is the default prediction for the model. + """ + for i in count_ind: + exog0 = exog.copy() + exog0[:,i] -= 1 + dfdb0 = model._derivative_predict(params, exog0, method) + exog0[:,i] += 2 + dfdb1 = model._derivative_predict(params, exog0, method) + dfdb = (dfdb1 - dfdb0) + if dfdb.ndim >= 2: # for overall + dfdb = dfdb.mean(0) / 2 + if J > 1: + K = dfdb.shape[1] / (J-1) + cov_margins[i::K, :] = dfdb + else: + # dfdb could be too short if there are extra params, k_extra > 0 + cov_margins[i, :len(dfdb)] = dfdb # how each F changes with change in B + return cov_margins + +def margeff_cov_params(model, params, exog, cov_params, at, derivative, + dummy_ind, count_ind, method, J): + """ + Computes the variance-covariance of marginal effects by the delta method. + + Parameters + ---------- + model : model instance + The model that returned the fitted results. Its pdf method is used + for computing the Jacobian of discrete variables in dummy_ind and + count_ind + params : array-like + estimated model parameters + exog : array-like + exogenous variables at which to calculate the derivative + cov_params : array-like + The variance-covariance of the parameters + at : str + Options are: + + - 'overall', The average of the marginal effects at each + observation. + - 'mean', The marginal effects at the mean of each regressor. + - 'median', The marginal effects at the median of each regressor. + - 'zero', The marginal effects at zero for each regressor. + - 'all', The marginal effects at each observation. + + Only overall has any effect here.you + + derivative : function or array-like + If a function, it returns the marginal effects of the model with + respect to the exogenous variables evaluated at exog. Expected to be + called derivative(params, exog). This will be numerically + differentiated. Otherwise, it can be the Jacobian of the marginal + effects with respect to the parameters. + dummy_ind : array-like + Indices of the columns of exog that contain dummy variables + count_ind : array-like + Indices of the columns of exog that contain count variables + + Notes + ----- + For continuous regressors, the variance-covariance is given by + + Asy. Var[MargEff] = [d margeff / d params] V [d margeff / d params]' + + where V is the parameter variance-covariance. + + The outer Jacobians are computed via numerical differentiation if + derivative is a function. + """ + if callable(derivative): + from statsmodels.tools.numdiff import approx_fprime_cs + params = params.ravel('F') # for Multinomial + try: + jacobian_mat = approx_fprime_cs(params, derivative, + args=(exog,method)) + except TypeError: # norm.cdf doesn't take complex values + from statsmodels.tools.numdiff import approx_fprime + jacobian_mat = approx_fprime(params, derivative, + args=(exog,method)) + if at == 'overall': + jacobian_mat = np.mean(jacobian_mat, axis=1) + else: + jacobian_mat = jacobian_mat.squeeze() # exog was 2d row vector + if dummy_ind is not None: + jacobian_mat = _margeff_cov_params_dummy(model, jacobian_mat, + params, exog, dummy_ind, method, J) + if count_ind is not None: + jacobian_mat = _margeff_cov_params_count(model, jacobian_mat, + params, exog, count_ind, method, J) + else: + jacobian_mat = derivative + + #NOTE: this won't go through for at == 'all' + return np.dot(np.dot(jacobian_mat, cov_params), jacobian_mat.T) + +def margeff_cov_with_se(model, params, exog, cov_params, at, derivative, + dummy_ind, count_ind, method, J): + """ + See margeff_cov_params. + + Same function but returns both the covariance of the marginal effects + and their standard errors. + """ + cov_me = margeff_cov_params(model, params, exog, cov_params, at, + derivative, dummy_ind, + count_ind, method, J) + return cov_me, np.sqrt(np.diag(cov_me)) + + +def margeff(): + raise NotImplementedError + + + +def _check_at_is_all(method): + if method['at'] == 'all': + raise ValueError("Only margeff are available when `at` is " + "'all'. Please input specific points if you would " + "like to do inference.") + + +_transform_names = dict(dydx='dy/dx', + eyex='d(lny)/d(lnx)', + dyex='dy/d(lnx)', + eydx='d(lny)/dx') + +class Margins(object): + """ + Mostly a do nothing class. Lays out the methods expected of a sub-class. + + This is just a sketch of what we may want out of a general margins class. + I (SS) need to look at details of other models. + """ + def __init__(self, results, get_margeff, derivative, dist=None, + margeff_args=()): + self._cache = {} + self.results = results + self.dist = dist + self.get_margeff(margeff_args) + + def _reset(self): + self._cache = {} + + def get_margeff(self, *args, **kwargs): + self._reset() + self.margeff = self.get_margeff(*args) + + @cache_readonly + def tvalues(self): + raise NotImplementedError + + @cache_readonly + def cov_margins(self): + raise NotImplementedError + + @cache_readonly + def margins_se(self): + raise NotImplementedError + + def summary_frame(self): + raise NotImplementedError + + @cache_readonly + def pvalues(self): + raise NotImplementedError + + def conf_int(self, alpha=.05): + raise NotImplementedError + + def summary(self, alpha=.05): + raise NotImplementedError + +#class DiscreteMargins(Margins): +class DiscreteMargins(object): + """Get marginal effects of a Discrete Choice model. + + Parameters + ---------- + results : DiscreteResults instance + The results instance of a fitted discrete choice model + args : tuple + Args are passed to `get_margeff`. This is the same as + results.get_margeff. See there for more information. + kwargs : dict + Keyword args are passed to `get_margeff`. This is the same as + results.get_margeff. See there for more information. + """ + def __init__(self, results, args, kwargs={}): + self._cache = {} + self.results = results + self.get_margeff(*args, **kwargs) + + def _reset(self): + self._cache = {} + + @cache_readonly + def tvalues(self): + _check_at_is_all(self.margeff_options) + return self.margeff / self.margeff_se + + def summary_frame(self, alpha=.05): + """ + Returns a DataFrame summarizing the marginal effects. + + Parameters + ---------- + alpha : float + Number between 0 and 1. The confidence intervals have the + probability 1-alpha. + + Returns + ------- + frame : DataFrames + A DataFrame summarizing the marginal effects. + + Notes + ----- + The dataframe is created on each call and not cached, as are the + tables build in `summary()` + """ + _check_at_is_all(self.margeff_options) + results = self.results + model = self.results.model + from pandas import DataFrame, MultiIndex + names = [_transform_names[self.margeff_options['method']], + 'Std. Err.', 'z', 'Pr(>|z|)', + 'Conf. Int. Low', 'Cont. Int. Hi.'] + ind = self.results.model.exog.var(0) != 0 # True if not a constant + exog_names = self.results.model.exog_names + k_extra = getattr(model, 'k_extra', 0) + if k_extra > 0: + exog_names = exog_names[:-k_extra] + var_names = [name for i,name in enumerate(exog_names) if ind[i]] + + if self.margeff.ndim == 2: + # MNLogit case + ci = self.conf_int(alpha) + table = np.column_stack([i.ravel("F") for i in + [self.margeff, self.margeff_se, self.tvalues, + self.pvalues, ci[:, 0, :], ci[:, 1, :]]]) + + _, yname_list = results._get_endog_name(model.endog_names, + None, all=True) + ynames = np.repeat(yname_list, len(var_names)) + xnames = np.tile(var_names, len(yname_list)) + index = MultiIndex.from_tuples(list(zip(ynames, xnames)), + names=['endog', 'exog']) + else: + table = np.column_stack((self.margeff, self.margeff_se, self.tvalues, + self.pvalues, self.conf_int(alpha))) + index=var_names + + return DataFrame(table, columns=names, index=index) + + + @cache_readonly + def pvalues(self): + _check_at_is_all(self.margeff_options) + return norm.sf(np.abs(self.tvalues)) * 2 + + def conf_int(self, alpha=.05): + """ + Returns the confidence intervals of the marginal effects + + Parameters + ---------- + alpha : float + Number between 0 and 1. The confidence intervals have the + probability 1-alpha. + + Returns + ------- + conf_int : ndarray + An array with lower, upper confidence intervals for the marginal + effects. + """ + _check_at_is_all(self.margeff_options) + me_se = self.margeff_se + q = norm.ppf(1 - alpha / 2) + lower = self.margeff - q * me_se + upper = self.margeff + q * me_se + return np.asarray(lzip(lower, upper)) + + def summary(self, alpha=.05): + """ + Returns a summary table for marginal effects + + Parameters + ---------- + alpha : float + Number between 0 and 1. The confidence intervals have the + probability 1-alpha. + + Returns + ------- + Summary : SummaryTable + A SummaryTable instance + """ + _check_at_is_all(self.margeff_options) + results = self.results + model = results.model + title = model.__class__.__name__ + " Marginal Effects" + method = self.margeff_options['method'] + top_left = [('Dep. Variable:', [model.endog_names]), + ('Method:', [method]), + ('At:', [self.margeff_options['at']]),] + + from statsmodels.iolib.summary import (Summary, summary_params, + table_extend) + exog_names = model.exog_names[:] # copy + smry = Summary() + + # TODO: sigh, we really need to hold on to this in _data... + _, const_idx = _get_const_index(model.exog) + if const_idx is not None: + exog_names.pop(const_idx[0]) + if getattr(model, 'k_extra', 0) > 0: + exog_names = exog_names[:-model.k_extra] + + J = int(getattr(model, "J", 1)) + if J > 1: + yname, yname_list = results._get_endog_name(model.endog_names, + None, all=True) + else: + yname = model.endog_names + yname_list = [yname] + + smry.add_table_2cols(self, gleft=top_left, gright=[], + yname=yname, xname=exog_names, title=title) + + # NOTE: add_table_params is not general enough yet for margeff + # could use a refactor with getattr instead of hard-coded params + # tvalues etc. + table = [] + conf_int = self.conf_int(alpha) + margeff = self.margeff + margeff_se = self.margeff_se + tvalues = self.tvalues + pvalues = self.pvalues + if J > 1: + for eq in range(J): + restup = (results, margeff[:,eq], margeff_se[:,eq], + tvalues[:,eq], pvalues[:,eq], conf_int[:,:,eq]) + tble = summary_params(restup, yname=yname_list[eq], + xname=exog_names, alpha=alpha, use_t=False, + skip_header=True) + tble.title = yname_list[eq] + # overwrite coef with method name + header = ['', _transform_names[method], 'std err', 'z', + 'P>|z|', '[' + str(alpha/2), str(1-alpha/2) + ']'] + tble.insert_header_row(0, header) + table.append(tble) + + table = table_extend(table, keep_headers=True) + else: + restup = (results, margeff, margeff_se, tvalues, pvalues, conf_int) + table = summary_params(restup, yname=yname, xname=exog_names, + alpha=alpha, use_t=False, skip_header=True) + header = ['', _transform_names[method], 'std err', 'z', + 'P>|z|', '[' + str(alpha/2), str(1-alpha/2) + ']'] + table.insert_header_row(0, header) + + smry.tables.append(table) + return smry + + def get_margeff(self, at='overall', method='dydx', atexog=None, + dummy=False, count=False): + """Get marginal effects of the fitted model. + + Parameters + ---------- + at : str, optional + Options are: + + - 'overall', The average of the marginal effects at each + observation. + - 'mean', The marginal effects at the mean of each regressor. + - 'median', The marginal effects at the median of each regressor. + - 'zero', The marginal effects at zero for each regressor. + - 'all', The marginal effects at each observation. If `at` is all + only margeff will be available. + + Note that if `exog` is specified, then marginal effects for all + variables not specified by `exog` are calculated using the `at` + option. + method : str, optional + Options are: + + - 'dydx' - dy/dx - No transformation is made and marginal effects + are returned. This is the default. + - 'eyex' - estimate elasticities of variables in `exog` -- + d(lny)/d(lnx) + - 'dyex' - estimate semielasticity -- dy/d(lnx) + - 'eydx' - estimate semeilasticity -- d(lny)/dx + + Note that tranformations are done after each observation is + calculated. Semi-elasticities for binary variables are computed + using the midpoint method. 'dyex' and 'eyex' do not make sense + for discrete variables. + atexog : array-like, optional + Optionally, you can provide the exogenous variables over which to + get the marginal effects. This should be a dictionary with the key + as the zero-indexed column number and the value of the dictionary. + Default is None for all independent variables less the constant. + dummy : bool, optional + If False, treats binary variables (if present) as continuous. This + is the default. Else if True, treats binary variables as + changing from 0 to 1. Note that any variable that is either 0 or 1 + is treated as binary. Each binary variable is treated separately + for now. + count : bool, optional + If False, treats count variables (if present) as continuous. This + is the default. Else if True, the marginal effect is the + change in probabilities when each observation is increased by one. + + Returns + ------- + effects : ndarray + the marginal effect corresponding to the input options + + Notes + ----- + When using after Poisson, returns the expected number of events + per period, assuming that the model is loglinear. + """ + self._reset() # always reset the cache when this is called + #TODO: if at is not all or overall, we can also put atexog values + # in summary table head + method = method.lower() + at = at.lower() + _check_margeff_args(at, method) + self.margeff_options = dict(method=method, at=at) + results = self.results + model = results.model + params = results.params + exog = model.exog.copy() # copy because values are changed + effects_idx, const_idx = _get_const_index(exog) + if hasattr(model, 'k_extra') and model.k_extra > 0: + effects_idx = np.concatenate((effects_idx, np.zeros(model.k_extra, np.bool_))) + + if dummy: + _check_discrete_args(at, method) + dummy_idx, dummy = _get_dummy_index(exog, const_idx) + else: + dummy_idx = None + + if count: + _check_discrete_args(at, method) + count_idx, count = _get_count_index(exog, const_idx) + else: + count_idx = None + + # attach dummy_idx and cout_idx + self.dummy_idx = dummy_idx + self.count_idx = count_idx + + # get the exogenous variables + exog = _get_margeff_exog(exog, at, atexog, effects_idx) + + # get base marginal effects, handled by sub-classes + effects = model._derivative_exog(params, exog, method, + dummy_idx, count_idx) + + J = getattr(model, 'J', 1) + effects_idx = np.tile(effects_idx, J) # adjust for multi-equation. + + effects = _effects_at(effects, at) + + if at == 'all': + if J > 1: + K = model.K - np.any(~effects_idx) # subtract constant + self.margeff = effects[:, effects_idx].reshape(-1, K, J, + order='F') + else: + self.margeff = effects[:, effects_idx] + else: + # Set standard error of the marginal effects by Delta method. + margeff_cov, margeff_se = margeff_cov_with_se(model, params, exog, + results.cov_params(), at, + model._derivative_exog, + dummy_idx, count_idx, + method, J) + + # reshape for multi-equation + if J > 1: + K = model.K - np.any(~effects_idx) # subtract constant + self.margeff = effects[effects_idx].reshape(K, J, order='F') + self.margeff_se = margeff_se[effects_idx].reshape(K, J, + order='F') + self.margeff_cov = margeff_cov[effects_idx][:, effects_idx] + else: + # don't care about at constant + # hack truncate effects_idx again if necessary + # if eyex, then effects is truncated to be without extra params + effects_idx = effects_idx[:len(effects)] + self.margeff_cov = margeff_cov[effects_idx][:, effects_idx] + self.margeff_se = margeff_se[effects_idx] + self.margeff = effects[effects_idx] diff --git a/statsmodels/discrete/discrete_model.py b/statsmodels/discrete/discrete_model.py new file mode 100644 index 0000000..4b4675d --- /dev/null +++ b/statsmodels/discrete/discrete_model.py @@ -0,0 +1,4288 @@ +""" +Limited dependent variable and qualitative variables. + +Includes binary outcomes, count data, (ordered) ordinal data and limited +dependent variables. + +General References +-------------------- + +A.C. Cameron and P.K. Trivedi. `Regression Analysis of Count Data`. + Cambridge, 1998 + +G.S. Madalla. `Limited-Dependent and Qualitative Variables in Econometrics`. + Cambridge, 1983. + +W. Greene. `Econometric Analysis`. Prentice Hall, 5th. edition. 2003. +""" +from __future__ import division + +__all__ = ["Poisson", "Logit", "Probit", "MNLogit", "NegativeBinomial", + "GeneralizedPoisson", "NegativeBinomialP"] + +from statsmodels.compat.python import range +from statsmodels.compat.scipy import loggamma + +import numpy as np +from pandas import get_dummies + +from scipy.special import gammaln, digamma, polygamma +from scipy import stats, special +from scipy.stats import nbinom + +import statsmodels.tools.tools as tools +from statsmodels.tools import data as data_tools +from statsmodels.tools.decorators import cache_readonly +from statsmodels.tools.sm_exceptions import (PerfectSeparationError, + SpecificationWarning) +from statsmodels.tools.numdiff import approx_fprime_cs +import statsmodels.base.model as base +from statsmodels.base.data import handle_data # for mnlogit +import statsmodels.regression.linear_model as lm +import statsmodels.base.wrapper as wrap + +from statsmodels.base.l1_slsqp import fit_l1_slsqp +from statsmodels.distributions import genpoisson_p + +try: + import cvxopt # noqa:F401 + have_cvxopt = True +except ImportError: + have_cvxopt = False + +import warnings + +#TODO: When we eventually get user-settable precision, we need to change +# this +FLOAT_EPS = np.finfo(float).eps + +#TODO: add options for the parameter covariance/variance +# ie., OIM, EIM, and BHHH see Green 21.4 + +_discrete_models_docs = """ +""" + +_discrete_results_docs = """ + %(one_line_description)s + + Parameters + ---------- + model : A DiscreteModel instance + params : array-like + The parameters of a fitted model. + hessian : array-like + The hessian of the fitted model. + scale : float + A scale parameter for the covariance matrix. + + Attributes + ---------- + df_resid : float + See model definition. + df_model : float + See model definition. + llf : float + Value of the loglikelihood + %(extra_attr)s""" + +_l1_results_attr = """ nnz_params : Integer + The number of nonzero parameters in the model. Train with + trim_params == True or else numerical error will distort this. + trimmed : Boolean array + trimmed[i] == True if the ith parameter was trimmed from the model.""" + +_get_start_params_null_docs = """ +Compute one-step moment estimator for null (constant-only) model + +This is a preliminary estimator used as start_params. + +Returns +------- +params : ndarray + parameter estimate based one one-step moment matching + +""" + +# helper for MNLogit (will be generally useful later) + +def _numpy_to_dummies(endog): + if endog.dtype.kind in ['S', 'O']: + endog_dummies, ynames = tools.categorical(endog, drop=True, + dictnames=True) + elif endog.ndim == 2: + endog_dummies = endog + ynames = range(endog.shape[1]) + else: + endog_dummies, ynames = tools.categorical(endog, drop=True, + dictnames=True) + return endog_dummies, ynames + + +def _pandas_to_dummies(endog): + if endog.ndim == 2: + if endog.shape[1] == 1: + yname = endog.columns[0] + endog_dummies = get_dummies(endog.iloc[:, 0]) + else: # series + yname = 'y' + endog_dummies = endog + else: + yname = endog.name + endog_dummies = get_dummies(endog) + ynames = endog_dummies.columns.tolist() + + return endog_dummies, ynames, yname + + +def _validate_l1_method(method): + """ + As of 0.10.0, the supported values for `method` in `fit_regularized` + are "l1" and "l1_cvxopt_cp". If an invalid value is passed, raise + with a helpful error message + + Parameters + ---------- + method : str + + Raises + ------ + ValueError + """ + if method not in ['l1', 'l1_cvxopt_cp']: + raise ValueError('`method` = {method} is not supported, use either ' + '"l1" or "l1_cvxopt_cp"'.format(method=method)) + + +#### Private Model Classes #### + + +class DiscreteModel(base.LikelihoodModel): + """ + Abstract class for discrete choice models. + + This class does not do anything itself but lays out the methods and + call signature expected of child classes in addition to those of + statsmodels.model.LikelihoodModel. + """ + def __init__(self, endog, exog, **kwargs): + super(DiscreteModel, self).__init__(endog, exog, **kwargs) + self.raise_on_perfect_prediction = True + + def initialize(self): + """ + Initialize is called by + statsmodels.model.LikelihoodModel.__init__ + and should contain any preprocessing that needs to be done for a model. + """ + # assumes constant + rank = np.linalg.matrix_rank(self.exog) + self.df_model = float(rank - 1) + self.df_resid = float(self.exog.shape[0] - rank) + + def cdf(self, X): + """ + The cumulative distribution function of the model. + """ + raise NotImplementedError + + def pdf(self, X): + """ + The probability density (mass) function of the model. + """ + raise NotImplementedError + + def _check_perfect_pred(self, params, *args): + endog = self.endog + fittedvalues = self.cdf(np.dot(self.exog, params[:self.exog.shape[1]])) + if (self.raise_on_perfect_prediction and + np.allclose(fittedvalues - endog, 0)): + msg = "Perfect separation detected, results not available" + raise PerfectSeparationError(msg) + + def fit(self, start_params=None, method='newton', maxiter=35, + full_output=1, disp=1, callback=None, **kwargs): + """ + Fit the model using maximum likelihood. + + The rest of the docstring is from + statsmodels.base.model.LikelihoodModel.fit + """ + if callback is None: + callback = self._check_perfect_pred + else: + pass # make a function factory to have multiple call-backs + + mlefit = super(DiscreteModel, self).fit(start_params=start_params, + method=method, maxiter=maxiter, full_output=full_output, + disp=disp, callback=callback, **kwargs) + + return mlefit # up to subclasses to wrap results + + fit.__doc__ += base.LikelihoodModel.fit.__doc__ + + def fit_regularized(self, start_params=None, method='l1', + maxiter='defined_by_method', full_output=1, disp=True, + callback=None, alpha=0, trim_mode='auto', + auto_trim_tol=0.01, size_trim_tol=1e-4, qc_tol=0.03, + qc_verbose=False, **kwargs): + """ + Fit the model using a regularized maximum likelihood. + The regularization method AND the solver used is determined by the + argument method. + + Parameters + ---------- + start_params : array-like, optional + Initial guess of the solution for the loglikelihood maximization. + The default is an array of zeros. + method : 'l1' or 'l1_cvxopt_cp' + See notes for details. + maxiter : Integer or 'defined_by_method' + Maximum number of iterations to perform. + If 'defined_by_method', then use method defaults (see notes). + full_output : bool + Set to True to have all available output in the Results object's + mle_retvals attribute. The output is dependent on the solver. + See LikelihoodModelResults notes section for more information. + disp : bool + Set to True to print convergence messages. + fargs : tuple + Extra arguments passed to the likelihood function, i.e., + loglike(x,*args) + callback : callable callback(xk) + Called after each iteration, as callback(xk), where xk is the + current parameter vector. + retall : bool + Set to True to return list of solutions at each iteration. + Available in Results object's mle_retvals attribute. + alpha : non-negative scalar or numpy array (same size as parameters) + The weight multiplying the l1 penalty term + trim_mode : 'auto, 'size', or 'off' + If not 'off', trim (set to zero) parameters that would have been + zero if the solver reached the theoretical minimum. + If 'auto', trim params using the Theory above. + If 'size', trim params if they have very small absolute value + size_trim_tol : float or 'auto' (default = 'auto') + For use when trim_mode == 'size' + auto_trim_tol : float + For sue when trim_mode == 'auto'. Use + qc_tol : float + Print warning and don't allow auto trim when (ii) (above) is + violated by this much. + qc_verbose : Boolean + If true, print out a full QC report upon failure + + Notes + ----- + Extra parameters are not penalized if alpha is given as a scalar. + An example is the shape parameter in NegativeBinomial `nb1` and `nb2`. + + Optional arguments for the solvers (available in Results.mle_settings):: + + 'l1' + acc : float (default 1e-6) + Requested accuracy as used by slsqp + 'l1_cvxopt_cp' + abstol : float + absolute accuracy (default: 1e-7). + reltol : float + relative accuracy (default: 1e-6). + feastol : float + tolerance for feasibility conditions (default: 1e-7). + refinement : int + number of iterative refinement steps when solving KKT + equations (default: 1). + + + Optimization methodology + + With :math:`L` the negative log likelihood, we solve the convex but + non-smooth problem + + .. math:: \\min_\\beta L(\\beta) + \\sum_k\\alpha_k |\\beta_k| + + via the transformation to the smooth, convex, constrained problem + in twice as many variables (adding the "added variables" :math:`u_k`) + + .. math:: \\min_{\\beta,u} L(\\beta) + \\sum_k\\alpha_k u_k, + + subject to + + .. math:: -u_k \\leq \\beta_k \\leq u_k. + + With :math:`\\partial_k L` the derivative of :math:`L` in the + :math:`k^{th}` parameter direction, theory dictates that, at the + minimum, exactly one of two conditions holds: + + (i) :math:`|\\partial_k L| = \\alpha_k` and :math:`\\beta_k \\neq 0` + (ii) :math:`|\\partial_k L| \\leq \\alpha_k` and :math:`\\beta_k = 0` + + """ + _validate_l1_method(method) + # Set attributes based on method + cov_params_func = self.cov_params_func_l1 + + ### Bundle up extra kwargs for the dictionary kwargs. These are + ### passed through super(...).fit() as kwargs and unpacked at + ### appropriate times + alpha = np.array(alpha) + assert alpha.min() >= 0 + try: + kwargs['alpha'] = alpha + except TypeError: + kwargs = dict(alpha=alpha) + kwargs['alpha_rescaled'] = kwargs['alpha'] / float(self.endog.shape[0]) + kwargs['trim_mode'] = trim_mode + kwargs['size_trim_tol'] = size_trim_tol + kwargs['auto_trim_tol'] = auto_trim_tol + kwargs['qc_tol'] = qc_tol + kwargs['qc_verbose'] = qc_verbose + + ### Define default keyword arguments to be passed to super(...).fit() + if maxiter == 'defined_by_method': + if method == 'l1': + maxiter = 1000 + elif method == 'l1_cvxopt_cp': + maxiter = 70 + + ## Parameters to pass to super(...).fit() + # For the 'extra' parameters, pass all that are available, + # even if we know (at this point) we will only use one. + extra_fit_funcs = {'l1': fit_l1_slsqp} + if have_cvxopt and method == 'l1_cvxopt_cp': + from statsmodels.base.l1_cvxopt import fit_l1_cvxopt_cp + extra_fit_funcs['l1_cvxopt_cp'] = fit_l1_cvxopt_cp + elif method.lower() == 'l1_cvxopt_cp': + message = ("Attempt to use l1_cvxopt_cp failed since cvxopt " + "could not be imported") + + if callback is None: + callback = self._check_perfect_pred + else: + pass # make a function factory to have multiple call-backs + + mlefit = super(DiscreteModel, self).fit(start_params=start_params, + method=method, maxiter=maxiter, full_output=full_output, + disp=disp, callback=callback, extra_fit_funcs=extra_fit_funcs, + cov_params_func=cov_params_func, **kwargs) + + return mlefit # up to subclasses to wrap results + + def cov_params_func_l1(self, likelihood_model, xopt, retvals): + """ + Computes cov_params on a reduced parameter space + corresponding to the nonzero parameters resulting from the + l1 regularized fit. + + Returns a full cov_params matrix, with entries corresponding + to zero'd values set to np.nan. + """ + H = likelihood_model.hessian(xopt) + trimmed = retvals['trimmed'] + nz_idx = np.nonzero(~trimmed)[0] + nnz_params = (~trimmed).sum() + if nnz_params > 0: + H_restricted = H[nz_idx[:, None], nz_idx] + # Covariance estimate for the nonzero params + H_restricted_inv = np.linalg.inv(-H_restricted) + else: + H_restricted_inv = np.zeros(0) + + cov_params = np.nan * np.ones(H.shape) + cov_params[nz_idx[:, None], nz_idx] = H_restricted_inv + + return cov_params + + def predict(self, params, exog=None, linear=False): + """ + Predict response variable of a model given exogenous variables. + """ + raise NotImplementedError + + def _derivative_exog(self, params, exog=None, dummy_idx=None, + count_idx=None): + """ + This should implement the derivative of the non-linear function + """ + raise NotImplementedError + + def _derivative_exog_helper(self, margeff, params, exog, dummy_idx, + count_idx, transform): + """ + Helper for _derivative_exog to wrap results appropriately + """ + from .discrete_margins import _get_count_effects, _get_dummy_effects + + if count_idx is not None: + margeff = _get_count_effects(margeff, exog, count_idx, transform, + self, params) + if dummy_idx is not None: + margeff = _get_dummy_effects(margeff, exog, dummy_idx, transform, + self, params) + + return margeff + + +class BinaryModel(DiscreteModel): + + def __init__(self, endog, exog, **kwargs): + super(BinaryModel, self).__init__(endog, exog, **kwargs) + if (not issubclass(self.__class__, MultinomialModel) and + not np.all((self.endog >= 0) & (self.endog <= 1))): + raise ValueError("endog must be in the unit interval.") + + + def predict(self, params, exog=None, linear=False): + """ + Predict response variable of a model given exogenous variables. + + Parameters + ---------- + params : array-like + Fitted parameters of the model. + exog : array-like + 1d or 2d array of exogenous values. If not supplied, the + whole exog attribute of the model is used. + linear : bool, optional + If True, returns the linear predictor dot(exog,params). Else, + returns the value of the cdf at the linear predictor. + + Returns + ------- + array + Fitted values at exog. + """ + if exog is None: + exog = self.exog + if not linear: + return self.cdf(np.dot(exog, params)) + else: + return np.dot(exog, params) + + def fit_regularized(self, start_params=None, method='l1', + maxiter='defined_by_method', full_output=1, disp=1, callback=None, + alpha=0, trim_mode='auto', auto_trim_tol=0.01, size_trim_tol=1e-4, + qc_tol=0.03, **kwargs): + + _validate_l1_method(method) + + bnryfit = super(BinaryModel, self).fit_regularized( + start_params=start_params, method=method, maxiter=maxiter, + full_output=full_output, disp=disp, callback=callback, + alpha=alpha, trim_mode=trim_mode, auto_trim_tol=auto_trim_tol, + size_trim_tol=size_trim_tol, qc_tol=qc_tol, **kwargs) + + discretefit = L1BinaryResults(self, bnryfit) + return L1BinaryResultsWrapper(discretefit) + fit_regularized.__doc__ = DiscreteModel.fit_regularized.__doc__ + + def _derivative_predict(self, params, exog=None, transform='dydx'): + """ + For computing marginal effects standard errors. + + This is used only in the case of discrete and count regressors to + get the variance-covariance of the marginal effects. It returns + [d F / d params] where F is the predict. + + Transform can be 'dydx' or 'eydx'. Checking is done in margeff + computations for appropriate transform. + """ + if exog is None: + exog = self.exog + dF = self.pdf(np.dot(exog, params))[:,None] * exog + if 'ey' in transform: + dF /= self.predict(params, exog)[:,None] + return dF + + def _derivative_exog(self, params, exog=None, transform='dydx', + dummy_idx=None, count_idx=None): + """ + For computing marginal effects returns dF(XB) / dX where F(.) is + the predicted probabilities + + transform can be 'dydx', 'dyex', 'eydx', or 'eyex'. + + Not all of these make sense in the presence of discrete regressors, + but checks are done in the results in get_margeff. + """ + # Note: this form should be appropriate for + # group 1 probit, logit, logistic, cloglog, heckprob, xtprobit + if exog is None: + exog = self.exog + + margeff = np.dot(self.pdf(np.dot(exog, params))[:, None], + params[None, :]) + + if 'ex' in transform: + margeff *= exog + if 'ey' in transform: + margeff /= self.predict(params, exog)[:, None] + + return self._derivative_exog_helper(margeff, params, exog, + dummy_idx, count_idx, transform) + + +class MultinomialModel(BinaryModel): + + def _handle_data(self, endog, exog, missing, hasconst, **kwargs): + if data_tools._is_using_ndarray_type(endog, None): + endog_dummies, ynames = _numpy_to_dummies(endog) + yname = 'y' + elif data_tools._is_using_pandas(endog, None): + endog_dummies, ynames, yname = _pandas_to_dummies(endog) + else: + endog = np.asarray(endog) + endog_dummies, ynames = _numpy_to_dummies(endog) + yname = 'y' + + if not isinstance(ynames, dict): + ynames = dict(zip(range(endog_dummies.shape[1]), ynames)) + + self._ynames_map = ynames + data = handle_data(endog_dummies, exog, missing, hasconst, **kwargs) + data.ynames = yname # overwrite this to single endog name + data.orig_endog = endog + self.wendog = data.endog + + # repeating from upstream... + for key in kwargs: + if key in ['design_info', 'formula']: # leave attached to data + continue + try: + setattr(self, key, data.__dict__.pop(key)) + except KeyError: + pass + return data + + def initialize(self): + """ + Preprocesses the data for MNLogit. + """ + super(MultinomialModel, self).initialize() + # This is also a "whiten" method in other models (eg regression) + self.endog = self.endog.argmax(1) # turn it into an array of col idx + self.J = self.wendog.shape[1] + self.K = self.exog.shape[1] + self.df_model *= (self.J-1) # for each J - 1 equation. + self.df_resid = self.exog.shape[0] - self.df_model - (self.J-1) + + def predict(self, params, exog=None, linear=False): + """ + Predict response variable of a model given exogenous variables. + + Parameters + ---------- + params : array-like + 2d array of fitted parameters of the model. Should be in the + order returned from the model. + exog : array-like + 1d or 2d array of exogenous values. If not supplied, the + whole exog attribute of the model is used. If a 1d array is given + it assumed to be 1 row of exogenous variables. If you only have + one regressor and would like to do prediction, you must provide + a 2d array with shape[1] == 1. + linear : bool, optional + If True, returns the linear predictor dot(exog,params). Else, + returns the value of the cdf at the linear predictor. + + Notes + ----- + Column 0 is the base case, the rest conform to the rows of params + shifted up one for the base case. + """ + if exog is None: # do here to accomodate user-given exog + exog = self.exog + if exog.ndim == 1: + exog = exog[None] + pred = super(MultinomialModel, self).predict(params, exog, linear) + if linear: + pred = np.column_stack((np.zeros(len(exog)), pred)) + return pred + + def fit(self, start_params=None, method='newton', maxiter=35, + full_output=1, disp=1, callback=None, **kwargs): + if start_params is None: + start_params = np.zeros((self.K * (self.J-1))) + else: + start_params = np.asarray(start_params) + callback = lambda x : None # placeholder until check_perfect_pred + # skip calling super to handle results from LikelihoodModel + mnfit = base.LikelihoodModel.fit(self, start_params = start_params, + method=method, maxiter=maxiter, full_output=full_output, + disp=disp, callback=callback, **kwargs) + mnfit.params = mnfit.params.reshape(self.K, -1, order='F') + mnfit = MultinomialResults(self, mnfit) + return MultinomialResultsWrapper(mnfit) + fit.__doc__ = DiscreteModel.fit.__doc__ + + def fit_regularized(self, start_params=None, method='l1', + maxiter='defined_by_method', full_output=1, disp=1, callback=None, + alpha=0, trim_mode='auto', auto_trim_tol=0.01, size_trim_tol=1e-4, + qc_tol=0.03, **kwargs): + if start_params is None: + start_params = np.zeros((self.K * (self.J-1))) + else: + start_params = np.asarray(start_params) + mnfit = DiscreteModel.fit_regularized( + self, start_params=start_params, method=method, maxiter=maxiter, + full_output=full_output, disp=disp, callback=callback, + alpha=alpha, trim_mode=trim_mode, auto_trim_tol=auto_trim_tol, + size_trim_tol=size_trim_tol, qc_tol=qc_tol, **kwargs) + mnfit.params = mnfit.params.reshape(self.K, -1, order='F') + mnfit = L1MultinomialResults(self, mnfit) + return L1MultinomialResultsWrapper(mnfit) + fit_regularized.__doc__ = DiscreteModel.fit_regularized.__doc__ + + + def _derivative_predict(self, params, exog=None, transform='dydx'): + """ + For computing marginal effects standard errors. + + This is used only in the case of discrete and count regressors to + get the variance-covariance of the marginal effects. It returns + [d F / d params] where F is the predicted probabilities for each + choice. dFdparams is of shape nobs x (J*K) x (J-1)*K. + The zero derivatives for the base category are not included. + + Transform can be 'dydx' or 'eydx'. Checking is done in margeff + computations for appropriate transform. + """ + if exog is None: + exog = self.exog + if params.ndim == 1: # will get flatted from approx_fprime + params = params.reshape(self.K, self.J-1, order='F') + + eXB = np.exp(np.dot(exog, params)) + sum_eXB = (1 + eXB.sum(1))[:,None] + J = int(self.J) + K = int(self.K) + repeat_eXB = np.repeat(eXB, J, axis=1) + X = np.tile(exog, J-1) + # this is the derivative wrt the base level + F0 = -repeat_eXB * X / sum_eXB ** 2 + # this is the derivative wrt the other levels when + # dF_j / dParams_j (ie., own equation) + #NOTE: this computes too much, any easy way to cut down? + F1 = eXB.T[:,:,None]*X * (sum_eXB - repeat_eXB) / (sum_eXB**2) + F1 = F1.transpose((1,0,2)) # put the nobs index first + + # other equation index + other_idx = ~np.kron(np.eye(J-1), np.ones(K)).astype(bool) + F1[:, other_idx] = (-eXB.T[:,:,None]*X*repeat_eXB / \ + (sum_eXB**2)).transpose((1,0,2))[:, other_idx] + dFdX = np.concatenate((F0[:, None,:], F1), axis=1) + + if 'ey' in transform: + dFdX /= self.predict(params, exog)[:, :, None] + return dFdX + + def _derivative_exog(self, params, exog=None, transform='dydx', + dummy_idx=None, count_idx=None): + """ + For computing marginal effects returns dF(XB) / dX where F(.) is + the predicted probabilities + + transform can be 'dydx', 'dyex', 'eydx', or 'eyex'. + + Not all of these make sense in the presence of discrete regressors, + but checks are done in the results in get_margeff. + + For Multinomial models the marginal effects are + + P[j] * (params[j] - sum_k P[k]*params[k]) + + It is returned unshaped, so that each row contains each of the J + equations. This makes it easier to take derivatives of this for + standard errors. If you want average marginal effects you can do + margeff.reshape(nobs, K, J, order='F).mean(0) and the marginal effects + for choice J are in column J + """ + J = int(self.J) # number of alternative choices + K = int(self.K) # number of variables + # Note: this form should be appropriate for + # group 1 probit, logit, logistic, cloglog, heckprob, xtprobit + if exog is None: + exog = self.exog + if params.ndim == 1: # will get flatted from approx_fprime + params = params.reshape(K, J-1, order='F') + + zeroparams = np.c_[np.zeros(K), params] # add base in + + cdf = self.cdf(np.dot(exog, params)) + + # TODO: meaningful interpretation for `iterm`? + iterm = np.array([cdf[:, [i]] * zeroparams[:, i] + for i in range(int(J))]).sum(0) + + margeff = np.array([cdf[:, [j]] * (zeroparams[:, j] - iterm) + for j in range(J)]) + + # swap the axes to make sure margeff are in order nobs, K, J + margeff = np.transpose(margeff, (1, 2, 0)) + + if 'ex' in transform: + margeff *= exog + if 'ey' in transform: + margeff /= self.predict(params, exog)[:,None,:] + + margeff = self._derivative_exog_helper(margeff, params, exog, + dummy_idx, count_idx, transform) + return margeff.reshape(len(exog), -1, order='F') + + +class CountModel(DiscreteModel): + def __init__(self, endog, exog, offset=None, exposure=None, missing='none', + **kwargs): + super(CountModel, self).__init__(endog, exog, missing=missing, + offset=offset, + exposure=exposure, **kwargs) + if exposure is not None: + self.exposure = np.log(self.exposure) + self._check_inputs(self.offset, self.exposure, self.endog) + if offset is None: + delattr(self, 'offset') + if exposure is None: + delattr(self, 'exposure') + + # promote dtype to float64 if needed + dt = np.promote_types(self.endog.dtype, np.float64) + self.endog = np.asarray(self.endog, dt) + dt = np.promote_types(self.exog.dtype, np.float64) + self.exog = np.asarray(self.exog, dt) + + + def _check_inputs(self, offset, exposure, endog): + if offset is not None and offset.shape[0] != endog.shape[0]: + raise ValueError("offset is not the same length as endog") + + if exposure is not None and exposure.shape[0] != endog.shape[0]: + raise ValueError("exposure is not the same length as endog") + + def _get_init_kwds(self): + # this is a temporary fixup because exposure has been transformed + # see #1609 + kwds = super(CountModel, self)._get_init_kwds() + if 'exposure' in kwds and kwds['exposure'] is not None: + kwds['exposure'] = np.exp(kwds['exposure']) + return kwds + + def predict(self, params, exog=None, exposure=None, offset=None, + linear=False): + """ + Predict response variable of a count model given exogenous variables. + + Notes + ----- + If exposure is specified, then it will be logged by the method. + The user does not need to log it first. + """ + # the following is copied from GLM predict (without family/link check) + # Use fit offset if appropriate + if offset is None and exog is None and hasattr(self, 'offset'): + offset = self.offset + elif offset is None: + offset = 0. + + # Use fit exposure if appropriate + if exposure is None and exog is None and hasattr(self, 'exposure'): + # Already logged + exposure = self.exposure + elif exposure is None: + exposure = 0. + else: + exposure = np.log(exposure) + + if exog is None: + exog = self.exog + + fitted = np.dot(exog, params[:exog.shape[1]]) + linpred = fitted + exposure + offset + if not linear: + return np.exp(linpred) # not cdf + else: + return linpred + + def _derivative_predict(self, params, exog=None, transform='dydx'): + """ + For computing marginal effects standard errors. + + This is used only in the case of discrete and count regressors to + get the variance-covariance of the marginal effects. It returns + [d F / d params] where F is the predict. + + Transform can be 'dydx' or 'eydx'. Checking is done in margeff + computations for appropriate transform. + """ + if exog is None: + exog = self.exog + #NOTE: this handles offset and exposure + dF = self.predict(params, exog)[:,None] * exog + if 'ey' in transform: + dF /= self.predict(params, exog)[:,None] + return dF + + def _derivative_exog(self, params, exog=None, transform="dydx", + dummy_idx=None, count_idx=None): + """ + For computing marginal effects. These are the marginal effects + d F(XB) / dX + For the Poisson model F(XB) is the predicted counts rather than + the probabilities. + + transform can be 'dydx', 'dyex', 'eydx', or 'eyex'. + + Not all of these make sense in the presence of discrete regressors, + but checks are done in the results in get_margeff. + """ + # group 3 poisson, nbreg, zip, zinb + if exog is None: + exog = self.exog + k_extra = getattr(self, 'k_extra', 0) + params_exog = params if k_extra == 0 else params[:-k_extra] + margeff = self.predict(params, exog)[:,None] * params_exog[None,:] + if 'ex' in transform: + margeff *= exog + if 'ey' in transform: + margeff /= self.predict(params, exog)[:,None] + + return self._derivative_exog_helper(margeff, params, exog, + dummy_idx, count_idx, transform) + + def fit(self, start_params=None, method='newton', maxiter=35, + full_output=1, disp=1, callback=None, **kwargs): + cntfit = super(CountModel, self).fit(start_params=start_params, + method=method, maxiter=maxiter, full_output=full_output, + disp=disp, callback=callback, **kwargs) + discretefit = CountResults(self, cntfit) + return CountResultsWrapper(discretefit) + fit.__doc__ = DiscreteModel.fit.__doc__ + + def fit_regularized(self, start_params=None, method='l1', + maxiter='defined_by_method', full_output=1, disp=1, callback=None, + alpha=0, trim_mode='auto', auto_trim_tol=0.01, size_trim_tol=1e-4, + qc_tol=0.03, **kwargs): + + _validate_l1_method(method) + + cntfit = super(CountModel, self).fit_regularized( + start_params=start_params, method=method, maxiter=maxiter, + full_output=full_output, disp=disp, callback=callback, + alpha=alpha, trim_mode=trim_mode, auto_trim_tol=auto_trim_tol, + size_trim_tol=size_trim_tol, qc_tol=qc_tol, **kwargs) + + discretefit = L1CountResults(self, cntfit) + return L1CountResultsWrapper(discretefit) + fit_regularized.__doc__ = DiscreteModel.fit_regularized.__doc__ + + +class OrderedModel(DiscreteModel): + pass + +#### Public Model Classes #### + +class Poisson(CountModel): + __doc__ = """ + Poisson model for count data + + %(params)s + %(extra_params)s + + Attributes + ---------- + endog : array + A reference to the endogenous response variable + exog : array + A reference to the exogenous design. + """ % {'params' : base._model_params_doc, + 'extra_params' : + """offset : array_like + Offset is added to the linear prediction with coefficient equal to 1. + exposure : array_like + Log(exposure) is added to the linear prediction with coefficient + equal to 1. + + """ + base._missing_param_doc} + + @property + def family(self): + from statsmodels.genmod import families + return families.Poisson() + + def cdf(self, X): + """ + Poisson model cumulative distribution function + + Parameters + ---------- + X : array-like + `X` is the linear predictor of the model. See notes. + + Returns + ------- + The value of the Poisson CDF at each point. + + Notes + ----- + The CDF is defined as + + .. math:: \\exp\\left(-\\lambda\\right)\\sum_{i=0}^{y}\\frac{\\lambda^{i}}{i!} + + where :math:`\\lambda` assumes the loglinear model. I.e., + + .. math:: \\ln\\lambda_{i}=X\\beta + + The parameter `X` is :math:`X\\beta` in the above formula. + """ + y = self.endog + return stats.poisson.cdf(y, np.exp(X)) + + def pdf(self, X): + """ + Poisson model probability mass function + + Parameters + ---------- + X : array-like + `X` is the linear predictor of the model. See notes. + + Returns + ------- + pdf : ndarray + The value of the Poisson probability mass function, PMF, for each + point of X. + + Notes + -------- + The PMF is defined as + + .. math:: \\frac{e^{-\\lambda_{i}}\\lambda_{i}^{y_{i}}}{y_{i}!} + + where :math:`\\lambda` assumes the loglinear model. I.e., + + .. math:: \\ln\\lambda_{i}=x_{i}\\beta + + The parameter `X` is :math:`x_{i}\\beta` in the above formula. + """ + y = self.endog + return np.exp(stats.poisson.logpmf(y, np.exp(X))) + + def loglike(self, params): + """ + Loglikelihood of Poisson model + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + loglike : float + The log-likelihood function of the model evaluated at `params`. + See notes. + + Notes + -------- + .. math:: \\ln L=\\sum_{i=1}^{n}\\left[-\\lambda_{i}+y_{i}x_{i}^{\\prime}\\beta-\\ln y_{i}!\\right] + """ + offset = getattr(self, "offset", 0) + exposure = getattr(self, "exposure", 0) + XB = np.dot(self.exog, params) + offset + exposure + endog = self.endog + return np.sum(-np.exp(XB) + endog*XB - gammaln(endog+1)) + + def loglikeobs(self, params): + """ + Loglikelihood for observations of Poisson model + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + loglike : array-like + The log likelihood for each observation of the model evaluated + at `params`. See Notes + + Notes + -------- + .. math:: \\ln L_{i}=\\left[-\\lambda_{i}+y_{i}x_{i}^{\\prime}\\beta-\\ln y_{i}!\\right] + + for observations :math:`i=1,...,n` + + """ + offset = getattr(self, "offset", 0) + exposure = getattr(self, "exposure", 0) + XB = np.dot(self.exog, params) + offset + exposure + endog = self.endog + #np.sum(stats.poisson.logpmf(endog, np.exp(XB))) + return -np.exp(XB) + endog*XB - gammaln(endog+1) + + def _get_start_params_null(self): + offset = getattr(self, "offset", 0) + exposure = getattr(self, "exposure", 0) + const = (self.endog / np.exp(offset + exposure)).mean() + params = [np.log(const)] + return params + + _get_start_params_null.__doc__ = _get_start_params_null_docs + + def fit(self, start_params=None, method='newton', maxiter=35, + full_output=1, disp=1, callback=None, **kwargs): + + if start_params is None and self.data.const_idx is not None: + # k_params or k_exog not available? + start_params = 0.001 * np.ones(self.exog.shape[1]) + start_params[self.data.const_idx] = self._get_start_params_null()[0] + + cntfit = super(CountModel, self).fit(start_params=start_params, + method=method, maxiter=maxiter, full_output=full_output, + disp=disp, callback=callback, **kwargs) + + if 'cov_type' in kwargs: + cov_kwds = kwargs.get('cov_kwds', {}) + kwds = {'cov_type':kwargs['cov_type'], 'cov_kwds':cov_kwds} + else: + kwds = {} + discretefit = PoissonResults(self, cntfit, **kwds) + return PoissonResultsWrapper(discretefit) + fit.__doc__ = DiscreteModel.fit.__doc__ + + def fit_regularized(self, start_params=None, method='l1', + maxiter='defined_by_method', full_output=1, disp=1, callback=None, + alpha=0, trim_mode='auto', auto_trim_tol=0.01, size_trim_tol=1e-4, + qc_tol=0.03, **kwargs): + + _validate_l1_method(method) + + cntfit = super(CountModel, self).fit_regularized( + start_params=start_params, method=method, maxiter=maxiter, + full_output=full_output, disp=disp, callback=callback, + alpha=alpha, trim_mode=trim_mode, auto_trim_tol=auto_trim_tol, + size_trim_tol=size_trim_tol, qc_tol=qc_tol, **kwargs) + + discretefit = L1PoissonResults(self, cntfit) + return L1PoissonResultsWrapper(discretefit) + + fit_regularized.__doc__ = DiscreteModel.fit_regularized.__doc__ + + + def fit_constrained(self, constraints, start_params=None, **fit_kwds): + """fit the model subject to linear equality constraints + + The constraints are of the form `R params = q` + where R is the constraint_matrix and q is the vector of + constraint_values. + + The estimation creates a new model with transformed design matrix, + exog, and converts the results back to the original parameterization. + + Parameters + ---------- + constraints : formula expression or tuple + If it is a tuple, then the constraint needs to be given by two + arrays (constraint_matrix, constraint_value), i.e. (R, q). + Otherwise, the constraints can be given as strings or list of + strings. + see t_test for details + start_params : None or array_like + starting values for the optimization. `start_params` needs to be + given in the original parameter space and are internally + transformed. + **fit_kwds : keyword arguments + fit_kwds are used in the optimization of the transformed model. + + Returns + ------- + results : Results instance + + """ + + #constraints = (R, q) + # TODO: temporary trailing underscore to not overwrite the monkey + # patched version + # TODO: decide whether to move the imports + from patsy import DesignInfo + from statsmodels.base._constraints import fit_constrained + + # same pattern as in base.LikelihoodModel.t_test + lc = DesignInfo(self.exog_names).linear_constraint(constraints) + R, q = lc.coefs, lc.constants + + # TODO: add start_params option, need access to tranformation + # fit_constrained needs to do the transformation + params, cov, res_constr = fit_constrained(self, R, q, + start_params=start_params, + fit_kwds=fit_kwds) + #create dummy results Instance, TODO: wire up properly + res = self.fit(maxiter=0, method='nm', disp=0, + warn_convergence=False) # we get a wrapper back + res.mle_retvals['fcall'] = res_constr.mle_retvals.get('fcall', np.nan) + res.mle_retvals['iterations'] = res_constr.mle_retvals.get( + 'iterations', np.nan) + res.mle_retvals['converged'] = res_constr.mle_retvals['converged'] + res._results.params = params + res._results.cov_params_default = cov + cov_type = fit_kwds.get('cov_type', 'nonrobust') + if cov_type != 'nonrobust': + res._results.normalized_cov_params = cov # assume scale=1 + else: + res._results.normalized_cov_params = None + k_constr = len(q) + res._results.df_resid += k_constr + res._results.df_model -= k_constr + res._results.constraints = lc + res._results.k_constr = k_constr + res._results.results_constrained = res_constr + return res + + + def score(self, params): + """ + Poisson model score (gradient) vector of the log-likelihood + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + score : ndarray, 1-D + The score vector of the model, i.e. the first derivative of the + loglikelihood function, evaluated at `params` + + Notes + ----- + .. math:: \\frac{\\partial\\ln L}{\\partial\\beta}=\\sum_{i=1}^{n}\\left(y_{i}-\\lambda_{i}\\right)x_{i} + + where the loglinear model is assumed + + .. math:: \\ln\\lambda_{i}=x_{i}\\beta + """ + offset = getattr(self, "offset", 0) + exposure = getattr(self, "exposure", 0) + X = self.exog + L = np.exp(np.dot(X,params) + offset + exposure) + return np.dot(self.endog - L, X) + + def score_obs(self, params): + """ + Poisson model Jacobian of the log-likelihood for each observation + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + score : array-like + The score vector (nobs, k_vars) of the model evaluated at `params` + + Notes + ----- + .. math:: \\frac{\\partial\\ln L_{i}}{\\partial\\beta}=\\left(y_{i}-\\lambda_{i}\\right)x_{i} + + for observations :math:`i=1,...,n` + + where the loglinear model is assumed + + .. math:: \\ln\\lambda_{i}=x_{i}\\beta + """ + offset = getattr(self, "offset", 0) + exposure = getattr(self, "exposure", 0) + X = self.exog + L = np.exp(np.dot(X,params) + offset + exposure) + return (self.endog - L)[:,None] * X + + def score_factor(self, params): + """ + Poisson model score_factor for each observation + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + score : array-like + The score factor (nobs, ) of the model evaluated at `params` + + Notes + ----- + .. math:: \\frac{\\partial\\ln L_{i}}{\\partial\\beta}=\\left(y_{i}-\\lambda_{i}\\right) + + for observations :math:`i=1,...,n` + + where the loglinear model is assumed + + .. math:: \\ln\\lambda_{i}=x_{i}\\beta + """ + offset = getattr(self, "offset", 0) + exposure = getattr(self, "exposure", 0) + X = self.exog + L = np.exp(np.dot(X,params) + offset + exposure) + return (self.endog - L) + + + def hessian(self, params): + """ + Poisson model Hessian matrix of the loglikelihood + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + hess : ndarray, (k_vars, k_vars) + The Hessian, second derivative of loglikelihood function, + evaluated at `params` + + Notes + ----- + .. math:: \\frac{\\partial^{2}\\ln L}{\\partial\\beta\\partial\\beta^{\\prime}}=-\\sum_{i=1}^{n}\\lambda_{i}x_{i}x_{i}^{\\prime} + + where the loglinear model is assumed + + .. math:: \\ln\\lambda_{i}=x_{i}\\beta + + """ + offset = getattr(self, "offset", 0) + exposure = getattr(self, "exposure", 0) + X = self.exog + L = np.exp(np.dot(X,params) + exposure + offset) + return -np.dot(L*X.T, X) + + def hessian_factor(self, params): + """ + Poisson model Hessian factor + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + hess : ndarray, (nobs,) + The Hessian factor, second derivative of loglikelihood function + with respect to the linear predictor evaluated at `params` + + Notes + ----- + .. math:: \\frac{\\partial^{2}\\ln L}{\\partial\\beta\\partial\\beta^{\\prime}}=-\\sum_{i=1}^{n}\\lambda_{i} + + where the loglinear model is assumed + + .. math:: \\ln\\lambda_{i}=x_{i}\\beta + + """ + offset = getattr(self, "offset", 0) + exposure = getattr(self, "exposure", 0) + X = self.exog + L = np.exp(np.dot(X,params) + exposure + offset) + return L + + +class GeneralizedPoisson(CountModel): + __doc__ = """ + Generalized Poisson model for count data + + %(params)s + %(extra_params)s + + Attributes + ---------- + endog : array + A reference to the endogenous response variable + exog : array + A reference to the exogenous design. + """ % {'params' : base._model_params_doc, + 'extra_params' : + """ + p: scalar + P denotes parameterizations for GP regression. p=1 for GP-1 and + p=2 for GP-2. Default is p=1. + offset : array_like + Offset is added to the linear prediction with coefficient equal to 1. + exposure : array_like + Log(exposure) is added to the linear prediction with coefficient + equal to 1. + + """ + base._missing_param_doc} + + def __init__(self, endog, exog, p = 1, offset=None, + exposure=None, missing='none', **kwargs): + super(GeneralizedPoisson, self).__init__(endog, exog, offset=offset, + exposure=exposure, + missing=missing, **kwargs) + self.parameterization = p - 1 + self.exog_names.append('alpha') + self.k_extra = 1 + self._transparams = False + + def _get_init_kwds(self): + kwds = super(GeneralizedPoisson, self)._get_init_kwds() + kwds['p'] = self.parameterization + 1 + return kwds + + def loglike(self, params): + """ + Loglikelihood of Generalized Poisson model + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + loglike : float + The log-likelihood function of the model evaluated at `params`. + See notes. + + Notes + -------- + .. math:: \\ln L=\\sum_{i=1}^{n}\\left[\\mu_{i}+(y_{i}-1)*ln(\\mu_{i}+ + \\alpha*\\mu_{i}^{p-1}*y_{i})-y_{i}*ln(1+\\alpha*\\mu_{i}^{p-1})- + ln(y_{i}!)-\\frac{\\mu_{i}+\\alpha*\\mu_{i}^{p-1}*y_{i}}{1+\\alpha* + \\mu_{i}^{p-1}}\\right] + + """ + return np.sum(self.loglikeobs(params)) + + def loglikeobs(self, params): + """ + Loglikelihood for observations of Generalized Poisson model + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + loglike : ndarray + The log likelihood for each observation of the model evaluated + at `params`. See Notes + + Notes + -------- + .. math:: \\ln L=\\sum_{i=1}^{n}\\left[\\mu_{i}+(y_{i}-1)*ln(\\mu_{i}+ + \\alpha*\\mu_{i}^{p-1}*y_{i})-y_{i}*ln(1+\\alpha*\\mu_{i}^{p-1})- + ln(y_{i}!)-\\frac{\\mu_{i}+\\alpha*\\mu_{i}^{p-1}*y_{i}}{1+\\alpha* + \\mu_{i}^{p-1}}\\right] + + for observations :math:`i=1,...,n` + """ + if self._transparams: + alpha = np.exp(params[-1]) + else: + alpha = params[-1] + params = params[:-1] + p = self.parameterization + endog = self.endog + mu = self.predict(params) + mu_p = np.power(mu, p) + a1 = 1 + alpha * mu_p + a2 = mu + (a1 - 1) * endog + return (np.log(mu) + (endog - 1) * np.log(a2) - endog * + np.log(a1) - gammaln(endog + 1) - a2 / a1) + + def _get_start_params_null(self): + offset = getattr(self, "offset", 0) + exposure = getattr(self, "exposure", 0) + + const = (self.endog / np.exp(offset + exposure)).mean() + params = [np.log(const)] + mu = const * np.exp(offset + exposure) + resid = self.endog - mu + a = self._estimate_dispersion(mu, resid, df_resid=resid.shape[0] - 1) + params.append(a) + + return np.array(params) + + _get_start_params_null.__doc__ = _get_start_params_null_docs + + def _estimate_dispersion(self, mu, resid, df_resid=None): + q = self.parameterization + if df_resid is None: + df_resid = resid.shape[0] + a = ((np.abs(resid) / np.sqrt(mu) - 1) * mu**(-q)).sum() / df_resid + return a + + def fit(self, start_params=None, method='bfgs', maxiter=35, + full_output=1, disp=1, callback=None, use_transparams=False, + cov_type='nonrobust', cov_kwds=None, use_t=None, **kwargs): + # TODO: Fix doc string + """ + use_transparams : bool + This parameter enable internal transformation to impose + non-negativity. True to enable. Default is False. + use_transparams=True imposes the no underdispersion (alpha > 0) + constaint. In case use_transparams=True and method="newton" or + "ncg" transformation is ignored. + """ + if use_transparams and method not in ['newton', 'ncg']: + self._transparams = True + else: + if use_transparams: + warnings.warn('Parameter "use_transparams" is ignored', + RuntimeWarning) + self._transparams = False + + if start_params is None: + offset = getattr(self, "offset", 0) + getattr(self, "exposure", 0) + if np.size(offset) == 1 and offset == 0: + offset = None + optim_kwds_prelim = {'disp': 0, 'skip_hessian': True, + 'warn_convergence': False} + optim_kwds_prelim.update(kwargs.get('optim_kwds_prelim', {})) + mod_poi = Poisson(self.endog, self.exog, offset=offset) + res_poi = mod_poi.fit(**optim_kwds_prelim) + start_params = res_poi.params + a = self._estimate_dispersion(res_poi.predict(), res_poi.resid, + df_resid=res_poi.df_resid) + start_params = np.append(start_params, max(-0.1, a)) + + if callback is None: + # work around perfect separation callback #3895 + callback = lambda *x: x + + mlefit = super(GeneralizedPoisson, self).fit(start_params=start_params, + maxiter=maxiter, method=method, disp=disp, + full_output=full_output, callback=callback, + **kwargs) + + + if use_transparams and method not in ["newton", "ncg"]: + self._transparams = False + mlefit._results.params[-1] = np.exp(mlefit._results.params[-1]) + + gpfit = GeneralizedPoissonResults(self, mlefit._results) + result = GeneralizedPoissonResultsWrapper(gpfit) + + if cov_kwds is None: + cov_kwds = {} + + result._get_robustcov_results(cov_type=cov_type, + use_self=True, use_t=use_t, **cov_kwds) + return result + + fit.__doc__ = DiscreteModel.fit.__doc__ + fit.__doc__ + + def fit_regularized(self, start_params=None, method='l1', + maxiter='defined_by_method', full_output=1, disp=1, callback=None, + alpha=0, trim_mode='auto', auto_trim_tol=0.01, size_trim_tol=1e-4, + qc_tol=0.03, **kwargs): + + _validate_l1_method(method) + + if np.size(alpha) == 1 and alpha != 0: + k_params = self.exog.shape[1] + self.k_extra + alpha = alpha * np.ones(k_params) + alpha[-1] = 0 + + alpha_p = alpha[:-1] if (self.k_extra and np.size(alpha) > 1) else alpha + self._transparams = False + if start_params is None: + offset = getattr(self, "offset", 0) + getattr(self, "exposure", 0) + if np.size(offset) == 1 and offset == 0: + offset = None + mod_poi = Poisson(self.endog, self.exog, offset=offset) + start_params = mod_poi.fit_regularized( + start_params=start_params, method=method, maxiter=maxiter, + full_output=full_output, disp=0, callback=callback, + alpha=alpha_p, trim_mode=trim_mode, auto_trim_tol=auto_trim_tol, + size_trim_tol=size_trim_tol, qc_tol=qc_tol, **kwargs).params + start_params = np.append(start_params, 0.1) + + cntfit = super(CountModel, self).fit_regularized( + start_params=start_params, method=method, maxiter=maxiter, + full_output=full_output, disp=disp, callback=callback, + alpha=alpha, trim_mode=trim_mode, auto_trim_tol=auto_trim_tol, + size_trim_tol=size_trim_tol, qc_tol=qc_tol, **kwargs) + + discretefit = L1GeneralizedPoissonResults(self, cntfit) + return L1GeneralizedPoissonResultsWrapper(discretefit) + + fit_regularized.__doc__ = DiscreteModel.fit_regularized.__doc__ + + def score_obs(self, params): + if self._transparams: + alpha = np.exp(params[-1]) + else: + alpha = params[-1] + + params = params[:-1] + p = self.parameterization + exog = self.exog + y = self.endog[:,None] + mu = self.predict(params)[:,None] + mu_p = np.power(mu, p) + a1 = 1 + alpha * mu_p + a2 = mu + alpha * mu_p * y + a3 = alpha * p * mu ** (p - 1) + a4 = a3 * y + dmudb = mu * exog + + dalpha = (mu_p * (y * ((y - 1) / a2 - 2 / a1) + a2 / a1**2)) + dparams = dmudb * (-a4 / a1 + + a3 * a2 / (a1 ** 2) + + (1 + a4) * ((y - 1) / a2 - 1 / a1) + + 1 / mu) + + return np.concatenate((dparams, np.atleast_2d(dalpha)), + axis=1) + + def score(self, params): + score = np.sum(self.score_obs(params), axis=0) + if self._transparams: + score[-1] == score[-1] ** 2 + return score + else: + return score + + def _score_p(self, params): + """ + Generalized Poisson model derivative of the log-likelihood by p-parameter + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + dldp : float + dldp is first derivative of the loglikelihood function, + evaluated at `p-parameter`. + """ + if self._transparams: + alpha = np.exp(params[-1]) + else: + alpha = params[-1] + params = params[:-1] + p = self.parameterization + exog = self.exog + y = self.endog[:,None] + mu = self.predict(params)[:,None] + mu_p = np.power(mu, p) + a1 = 1 + alpha * mu_p + a2 = mu + alpha * mu_p * y + + dp = np.sum((np.log(mu) * ((a2 - mu) * ((y - 1) / a2 - 2 / a1) + + (a1 - 1) * a2 / a1 ** 2))) + return dp + + def hessian(self, params): + """ + Generalized Poisson model Hessian matrix of the loglikelihood + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + hess : ndarray, (k_vars, k_vars) + The Hessian, second derivative of loglikelihood function, + evaluated at `params` + """ + if self._transparams: + alpha = np.exp(params[-1]) + else: + alpha = params[-1] + + params = params[:-1] + p = self.parameterization + exog = self.exog + y = self.endog[:,None] + mu = self.predict(params)[:,None] + mu_p = np.power(mu, p) + a1 = 1 + alpha * mu_p + a2 = mu + alpha * mu_p * y + a3 = alpha * p * mu ** (p - 1) + a4 = a3 * y + a5 = p * mu ** (p - 1) + dmudb = mu * exog + + # for dl/dparams dparams + dim = exog.shape[1] + hess_arr = np.empty((dim+1,dim+1)) + + for i in range(dim): + for j in range(i + 1): + hess_arr[i,j] = np.sum(mu * exog[:,i,None] * exog[:,j,None] * + (mu * (a3 * a4 / a1**2 - + 2 * a3**2 * a2 / a1**3 + + 2 * a3 * (a4 + 1) / a1**2 - + a4 * p / (mu * a1) + + a3 * p * a2 / (mu * a1**2) + + (y - 1) * a4 * (p - 1) / (a2 * mu) - + (y - 1) * (1 + a4)**2 / a2**2 - + a4 * (p - 1) / (a1 * mu)) + + ((y - 1) * (1 + a4) / a2 - + (1 + a4) / a1)), axis=0) + tri_idx = np.triu_indices(dim, k=1) + hess_arr[tri_idx] = hess_arr.T[tri_idx] + + # for dl/dparams dalpha + dldpda = np.sum((2 * a4 * mu_p / a1**2 - + 2 * a3 * mu_p * a2 / a1**3 - + mu_p * y * (y - 1) * (1 + a4) / a2**2 + + mu_p * (1 + a4) / a1**2 + + a5 * y * (y - 1) / a2 - + 2 * a5 * y / a1 + + a5 * a2 / a1**2) * dmudb, + axis=0) + + hess_arr[-1,:-1] = dldpda + hess_arr[:-1,-1] = dldpda + + # for dl/dalpha dalpha + dldada = mu_p**2 * (3 * y / a1**2 - + (y / a2)**2. * (y - 1) - + 2 * a2 / a1**3) + + hess_arr[-1,-1] = dldada.sum() + + return hess_arr + + def predict(self, params, exog=None, exposure=None, offset=None, + which='mean'): + """ + Predict response variable of a count model given exogenous variables. + + Notes + ----- + If exposure is specified, then it will be logged by the method. + The user does not need to log it first. + """ + if exog is None: + exog = self.exog + + if exposure is None: + exposure = getattr(self, 'exposure', 0) + elif exposure != 0: + exposure = np.log(exposure) + + if offset is None: + offset = getattr(self, 'offset', 0) + + fitted = np.dot(exog, params[:exog.shape[1]]) + linpred = fitted + exposure + offset + + if which == 'mean': + return np.exp(linpred) + elif which == 'linear': + return linpred + elif which =='prob': + counts = np.atleast_2d(np.arange(0, np.max(self.endog)+1)) + mu = self.predict(params, exog=exog, exposure=exposure, + offset=offset)[:,None] + return genpoisson_p.pmf(counts, mu, params[-1], + self.parameterization + 1) + else: + raise ValueError('keyword \'which\' not recognized') + + +class Logit(BinaryModel): + __doc__ = """ + Binary choice logit model + + %(params)s + %(extra_params)s + + Attributes + ---------- + endog : array + A reference to the endogenous response variable + exog : array + A reference to the exogenous design. + """ % {'params' : base._model_params_doc, + 'extra_params' : base._missing_param_doc} + + def cdf(self, X): + """ + The logistic cumulative distribution function + + Parameters + ---------- + X : array-like + `X` is the linear predictor of the logit model. See notes. + + Returns + ------- + 1/(1 + exp(-X)) + + Notes + ----- + In the logit model, + + .. math:: \\Lambda\\left(x^{\\prime}\\beta\\right)= + \\text{Prob}\\left(Y=1|x\\right)= + \\frac{e^{x^{\\prime}\\beta}}{1+e^{x^{\\prime}\\beta}} + + """ + X = np.asarray(X) + return 1/(1+np.exp(-X)) + + def pdf(self, X): + """ + The logistic probability density function + + Parameters + ---------- + X : array-like + `X` is the linear predictor of the logit model. See notes. + + Returns + ------- + pdf : ndarray + The value of the Logit probability mass function, PMF, for each + point of X. ``np.exp(-x)/(1+np.exp(-X))**2`` + + Notes + ----- + In the logit model, + + .. math:: \\lambda\\left(x^{\\prime}\\beta\\right)=\\frac{e^{-x^{\\prime}\\beta}}{\\left(1+e^{-x^{\\prime}\\beta}\\right)^{2}} + """ + X = np.asarray(X) + return np.exp(-X)/(1+np.exp(-X))**2 + + def loglike(self, params): + """ + Log-likelihood of logit model. + + Parameters + ---------- + params : array-like + The parameters of the logit model. + + Returns + ------- + loglike : float + The log-likelihood function of the model evaluated at `params`. + See notes. + + Notes + ----- + .. math:: + + \\ln L=\\sum_{i}\\ln\\Lambda + \\left(q_{i}x_{i}^{\\prime}\\beta\\right) + + Where :math:`q=2y-1`. This simplification comes from the fact that the + logistic distribution is symmetric. + """ + q = 2*self.endog - 1 + X = self.exog + return np.sum(np.log(self.cdf(q*np.dot(X,params)))) + + def loglikeobs(self, params): + """ + Log-likelihood of logit model for each observation. + + Parameters + ---------- + params : array-like + The parameters of the logit model. + + Returns + ------- + loglike : ndarray + The log likelihood for each observation of the model evaluated + at `params`. See Notes + + Notes + ----- + .. math:: + + \\ln L=\\sum_{i}\\ln\\Lambda + \\left(q_{i}x_{i}^{\\prime}\\beta\\right) + + for observations :math:`i=1,...,n` + + where :math:`q=2y-1`. This simplification comes from the fact that the + logistic distribution is symmetric. + """ + q = 2*self.endog - 1 + X = self.exog + return np.log(self.cdf(q*np.dot(X,params))) + + def score(self, params): + """ + Logit model score (gradient) vector of the log-likelihood + + Parameters + ---------- + params: array-like + The parameters of the model + + Returns + ------- + score : ndarray, 1-D + The score vector of the model, i.e. the first derivative of the + loglikelihood function, evaluated at `params` + + Notes + ----- + .. math:: \\frac{\\partial\\ln L}{\\partial\\beta}=\\sum_{i=1}^{n}\\left(y_{i}-\\Lambda_{i}\\right)x_{i} + """ + + y = self.endog + X = self.exog + L = self.cdf(np.dot(X,params)) + return np.dot(y - L,X) + + def score_obs(self, params): + """ + Logit model Jacobian of the log-likelihood for each observation + + Parameters + ---------- + params: array-like + The parameters of the model + + Returns + ------- + jac : array-like + The derivative of the loglikelihood for each observation evaluated + at `params`. + + Notes + ----- + .. math:: \\frac{\\partial\\ln L_{i}}{\\partial\\beta}=\\left(y_{i}-\\Lambda_{i}\\right)x_{i} + + for observations :math:`i=1,...,n` + + """ + + y = self.endog + X = self.exog + L = self.cdf(np.dot(X, params)) + return (y - L)[:,None] * X + + def hessian(self, params): + """ + Logit model Hessian matrix of the log-likelihood + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + hess : ndarray, (k_vars, k_vars) + The Hessian, second derivative of loglikelihood function, + evaluated at `params` + + Notes + ----- + .. math:: \\frac{\\partial^{2}\\ln L}{\\partial\\beta\\partial\\beta^{\\prime}}=-\\sum_{i}\\Lambda_{i}\\left(1-\\Lambda_{i}\\right)x_{i}x_{i}^{\\prime} + """ + X = self.exog + L = self.cdf(np.dot(X,params)) + return -np.dot(L*(1-L)*X.T,X) + + def fit(self, start_params=None, method='newton', maxiter=35, + full_output=1, disp=1, callback=None, **kwargs): + bnryfit = super(Logit, self).fit(start_params=start_params, + method=method, maxiter=maxiter, full_output=full_output, + disp=disp, callback=callback, **kwargs) + + discretefit = LogitResults(self, bnryfit) + return BinaryResultsWrapper(discretefit) + fit.__doc__ = DiscreteModel.fit.__doc__ + +class Probit(BinaryModel): + __doc__ = """ + Binary choice Probit model + + %(params)s + %(extra_params)s + + Attributes + ---------- + endog : array + A reference to the endogenous response variable + exog : array + A reference to the exogenous design. + """ % {'params' : base._model_params_doc, + 'extra_params' : base._missing_param_doc} + + def cdf(self, X): + """ + Probit (Normal) cumulative distribution function + + Parameters + ---------- + X : array-like + The linear predictor of the model (XB). + + Returns + ------- + cdf : ndarray + The cdf evaluated at `X`. + + Notes + ----- + This function is just an alias for scipy.stats.norm.cdf + """ + return stats.norm._cdf(X) + + def pdf(self, X): + """ + Probit (Normal) probability density function + + Parameters + ---------- + X : array-like + The linear predictor of the model (XB). + + Returns + ------- + pdf : ndarray + The value of the normal density function for each point of X. + + Notes + ----- + This function is just an alias for scipy.stats.norm.pdf + + """ + X = np.asarray(X) + return stats.norm._pdf(X) + + + def loglike(self, params): + """ + Log-likelihood of probit model (i.e., the normal distribution). + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + loglike : float + The log-likelihood function of the model evaluated at `params`. + See notes. + + Notes + ----- + .. math:: \\ln L=\\sum_{i}\\ln\\Phi\\left(q_{i}x_{i}^{\\prime}\\beta\\right) + + Where :math:`q=2y-1`. This simplification comes from the fact that the + normal distribution is symmetric. + """ + + q = 2*self.endog - 1 + X = self.exog + return np.sum(np.log(np.clip(self.cdf(q*np.dot(X,params)), + FLOAT_EPS, 1))) + + def loglikeobs(self, params): + """ + Log-likelihood of probit model for each observation + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + loglike : array-like + The log likelihood for each observation of the model evaluated + at `params`. See Notes + + Notes + ----- + .. math:: \\ln L_{i}=\\ln\\Phi\\left(q_{i}x_{i}^{\\prime}\\beta\\right) + + for observations :math:`i=1,...,n` + + where :math:`q=2y-1`. This simplification comes from the fact that the + normal distribution is symmetric. + """ + + q = 2*self.endog - 1 + X = self.exog + return np.log(np.clip(self.cdf(q*np.dot(X,params)), FLOAT_EPS, 1)) + + + def score(self, params): + """ + Probit model score (gradient) vector + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + score : ndarray, 1-D + The score vector of the model, i.e. the first derivative of the + loglikelihood function, evaluated at `params` + + Notes + ----- + .. math:: \\frac{\\partial\\ln L}{\\partial\\beta}=\\sum_{i=1}^{n}\\left[\\frac{q_{i}\\phi\\left(q_{i}x_{i}^{\\prime}\\beta\\right)}{\\Phi\\left(q_{i}x_{i}^{\\prime}\\beta\\right)}\\right]x_{i} + + Where :math:`q=2y-1`. This simplification comes from the fact that the + normal distribution is symmetric. + """ + y = self.endog + X = self.exog + XB = np.dot(X,params) + q = 2*y - 1 + # clip to get rid of invalid divide complaint + L = q*self.pdf(q*XB)/np.clip(self.cdf(q*XB), FLOAT_EPS, 1 - FLOAT_EPS) + return np.dot(L,X) + + def score_obs(self, params): + """ + Probit model Jacobian for each observation + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + jac : array-like + The derivative of the loglikelihood for each observation evaluated + at `params`. + + Notes + ----- + .. math:: \\frac{\\partial\\ln L_{i}}{\\partial\\beta}=\\left[\\frac{q_{i}\\phi\\left(q_{i}x_{i}^{\\prime}\\beta\\right)}{\\Phi\\left(q_{i}x_{i}^{\\prime}\\beta\\right)}\\right]x_{i} + + for observations :math:`i=1,...,n` + + Where :math:`q=2y-1`. This simplification comes from the fact that the + normal distribution is symmetric. + """ + y = self.endog + X = self.exog + XB = np.dot(X,params) + q = 2*y - 1 + # clip to get rid of invalid divide complaint + L = q*self.pdf(q*XB)/np.clip(self.cdf(q*XB), FLOAT_EPS, 1 - FLOAT_EPS) + return L[:,None] * X + + def hessian(self, params): + """ + Probit model Hessian matrix of the log-likelihood + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + hess : ndarray, (k_vars, k_vars) + The Hessian, second derivative of loglikelihood function, + evaluated at `params` + + Notes + ----- + .. math:: \\frac{\\partial^{2}\\ln L}{\\partial\\beta\\partial\\beta^{\\prime}}=-\\lambda_{i}\\left(\\lambda_{i}+x_{i}^{\\prime}\\beta\\right)x_{i}x_{i}^{\\prime} + + where + + .. math:: \\lambda_{i}=\\frac{q_{i}\\phi\\left(q_{i}x_{i}^{\\prime}\\beta\\right)}{\\Phi\\left(q_{i}x_{i}^{\\prime}\\beta\\right)} + + and :math:`q=2y-1` + """ + X = self.exog + XB = np.dot(X,params) + q = 2*self.endog - 1 + L = q*self.pdf(q*XB)/self.cdf(q*XB) + return np.dot(-L*(L+XB)*X.T,X) + + def fit(self, start_params=None, method='newton', maxiter=35, + full_output=1, disp=1, callback=None, **kwargs): + bnryfit = super(Probit, self).fit(start_params=start_params, + method=method, maxiter=maxiter, full_output=full_output, + disp=disp, callback=callback, **kwargs) + discretefit = ProbitResults(self, bnryfit) + return BinaryResultsWrapper(discretefit) + fit.__doc__ = DiscreteModel.fit.__doc__ + +class MNLogit(MultinomialModel): + __doc__ = """ + Multinomial logit model + + Parameters + ---------- + endog : array-like + `endog` is an 1-d vector of the endogenous response. `endog` can + contain strings, ints, or floats. Note that if it contains strings, + every distinct string will be a category. No stripping of whitespace + is done. + exog : array-like + A nobs x k array where `nobs` is the number of observations and `k` + is the number of regressors. An intercept is not included by default + and should be added by the user. See `statsmodels.tools.add_constant`. + %(extra_params)s + + Attributes + ---------- + endog : array + A reference to the endogenous response variable + exog : array + A reference to the exogenous design. + J : float + The number of choices for the endogenous variable. Note that this + is zero-indexed. + K : float + The actual number of parameters for the exogenous design. Includes + the constant if the design has one. + names : dict + A dictionary mapping the column number in `wendog` to the variables + in `endog`. + wendog : array + An n x j array where j is the number of unique categories in `endog`. + Each column of j is a dummy variable indicating the category of + each observation. See `names` for a dictionary mapping each column to + its category. + + Notes + ----- + See developer notes for further information on `MNLogit` internals. + """ % {'extra_params' : base._missing_param_doc} + + def pdf(self, eXB): + """ + NotImplemented + """ + raise NotImplementedError + + def cdf(self, X): + """ + Multinomial logit cumulative distribution function. + + Parameters + ---------- + X : array + The linear predictor of the model XB. + + Returns + ------- + cdf : ndarray + The cdf evaluated at `X`. + + Notes + ----- + In the multinomial logit model. + .. math:: \\frac{\\exp\\left(\\beta_{j}^{\\prime}x_{i}\\right)}{\\sum_{k=0}^{J}\\exp\\left(\\beta_{k}^{\\prime}x_{i}\\right)} + """ + eXB = np.column_stack((np.ones(len(X)), np.exp(X))) + return eXB/eXB.sum(1)[:,None] + + def loglike(self, params): + """ + Log-likelihood of the multinomial logit model. + + Parameters + ---------- + params : array-like + The parameters of the multinomial logit model. + + Returns + ------- + loglike : float + The log-likelihood function of the model evaluated at `params`. + See notes. + + Notes + ----- + .. math:: + + \\ln L=\\sum_{i=1}^{n}\\sum_{j=0}^{J}d_{ij}\\ln + \\left(\\frac{\\exp\\left(\\beta_{j}^{\\prime}x_{i}\\right)} + {\\sum_{k=0}^{J} + \\exp\\left(\\beta_{k}^{\\prime}x_{i}\\right)}\\right) + + where :math:`d_{ij}=1` if individual `i` chose alternative `j` and 0 + if not. + """ + params = params.reshape(self.K, -1, order='F') + d = self.wendog + logprob = np.log(self.cdf(np.dot(self.exog,params))) + return np.sum(d * logprob) + + def loglikeobs(self, params): + """ + Log-likelihood of the multinomial logit model for each observation. + + Parameters + ---------- + params : array-like + The parameters of the multinomial logit model. + + Returns + ------- + loglike : array-like + The log likelihood for each observation of the model evaluated + at `params`. See Notes + + Notes + ----- + .. math:: + + \\ln L_{i}=\\sum_{j=0}^{J}d_{ij}\\ln + \\left(\\frac{\\exp\\left(\\beta_{j}^{\\prime}x_{i}\\right)} + {\\sum_{k=0}^{J} + \\exp\\left(\\beta_{k}^{\\prime}x_{i}\\right)}\\right) + + for observations :math:`i=1,...,n` + + where :math:`d_{ij}=1` if individual `i` chose alternative `j` and 0 + if not. + """ + params = params.reshape(self.K, -1, order='F') + d = self.wendog + logprob = np.log(self.cdf(np.dot(self.exog,params))) + return d * logprob + + def score(self, params): + """ + Score matrix for multinomial logit model log-likelihood + + Parameters + ---------- + params : array + The parameters of the multinomial logit model. + + Returns + ------- + score : ndarray, (K * (J-1),) + The 2-d score vector, i.e. the first derivative of the + loglikelihood function, of the multinomial logit model evaluated at + `params`. + + Notes + ----- + .. math:: \\frac{\\partial\\ln L}{\\partial\\beta_{j}}=\\sum_{i}\\left(d_{ij}-\\frac{\\exp\\left(\\beta_{j}^{\\prime}x_{i}\\right)}{\\sum_{k=0}^{J}\\exp\\left(\\beta_{k}^{\\prime}x_{i}\\right)}\\right)x_{i} + + for :math:`j=1,...,J` + + In the multinomial model the score matrix is K x J-1 but is returned + as a flattened array to work with the solvers. + """ + params = params.reshape(self.K, -1, order='F') + firstterm = self.wendog[:,1:] - self.cdf(np.dot(self.exog, + params))[:,1:] + #NOTE: might need to switch terms if params is reshaped + return np.dot(firstterm.T, self.exog).flatten() + + def loglike_and_score(self, params): + """ + Returns log likelihood and score, efficiently reusing calculations. + + Note that both of these returned quantities will need to be negated + before being minimized by the maximum likelihood fitting machinery. + + """ + params = params.reshape(self.K, -1, order='F') + cdf_dot_exog_params = self.cdf(np.dot(self.exog, params)) + loglike_value = np.sum(self.wendog * np.log(cdf_dot_exog_params)) + firstterm = self.wendog[:, 1:] - cdf_dot_exog_params[:, 1:] + score_array = np.dot(firstterm.T, self.exog).flatten() + return loglike_value, score_array + + def score_obs(self, params): + """ + Jacobian matrix for multinomial logit model log-likelihood + + Parameters + ---------- + params : array + The parameters of the multinomial logit model. + + Returns + ------- + jac : array-like + The derivative of the loglikelihood for each observation evaluated + at `params` . + + Notes + ----- + .. math:: \\frac{\\partial\\ln L_{i}}{\\partial\\beta_{j}}=\\left(d_{ij}-\\frac{\\exp\\left(\\beta_{j}^{\\prime}x_{i}\\right)}{\\sum_{k=0}^{J}\\exp\\left(\\beta_{k}^{\\prime}x_{i}\\right)}\\right)x_{i} + + for :math:`j=1,...,J`, for observations :math:`i=1,...,n` + + In the multinomial model the score vector is K x (J-1) but is returned + as a flattened array. The Jacobian has the observations in rows and + the flatteded array of derivatives in columns. + """ + params = params.reshape(self.K, -1, order='F') + firstterm = self.wendog[:,1:] - self.cdf(np.dot(self.exog, + params))[:,1:] + #NOTE: might need to switch terms if params is reshaped + return (firstterm[:,:,None] * self.exog[:,None,:]).reshape(self.exog.shape[0], -1) + + def hessian(self, params): + """ + Multinomial logit Hessian matrix of the log-likelihood + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + hess : ndarray, (J*K, J*K) + The Hessian, second derivative of loglikelihood function with + respect to the flattened parameters, evaluated at `params` + + Notes + ----- + .. math:: \\frac{\\partial^{2}\\ln L}{\\partial\\beta_{j}\\partial\\beta_{l}}=-\\sum_{i=1}^{n}\\frac{\\exp\\left(\\beta_{j}^{\\prime}x_{i}\\right)}{\\sum_{k=0}^{J}\\exp\\left(\\beta_{k}^{\\prime}x_{i}\\right)}\\left[\\boldsymbol{1}\\left(j=l\\right)-\\frac{\\exp\\left(\\beta_{l}^{\\prime}x_{i}\\right)}{\\sum_{k=0}^{J}\\exp\\left(\\beta_{k}^{\\prime}x_{i}\\right)}\\right]x_{i}x_{l}^{\\prime} + + where + :math:`\\boldsymbol{1}\\left(j=l\\right)` equals 1 if `j` = `l` and 0 + otherwise. + + The actual Hessian matrix has J**2 * K x K elements. Our Hessian + is reshaped to be square (J*K, J*K) so that the solvers can use it. + + This implementation does not take advantage of the symmetry of + the Hessian and could probably be refactored for speed. + """ + params = params.reshape(self.K, -1, order='F') + X = self.exog + pr = self.cdf(np.dot(X,params)) + partials = [] + J = self.J + K = self.K + for i in range(J-1): + for j in range(J-1): # this loop assumes we drop the first col. + if i == j: + partials.append(\ + -np.dot(((pr[:,i+1]*(1-pr[:,j+1]))[:,None]*X).T,X)) + else: + partials.append(-np.dot(((pr[:,i+1]*-pr[:,j+1])[:,None]*X).T,X)) + H = np.array(partials) + # the developer's notes on multinomial should clear this math up + H = np.transpose(H.reshape(J-1, J-1, K, K), (0, 2, 1, 3)).reshape((J-1)*K, (J-1)*K) + return H + + +#TODO: Weibull can replaced by a survival analsysis function +# like stat's streg (The cox model as well) +#class Weibull(DiscreteModel): +# """ +# Binary choice Weibull model +# +# Notes +# ------ +# This is unfinished and untested. +# """ +##TODO: add analytic hessian for Weibull +# def initialize(self): +# pass +# +# def cdf(self, X): +# """ +# Gumbell (Log Weibull) cumulative distribution function +# """ +## return np.exp(-np.exp(-X)) +# return stats.gumbel_r.cdf(X) +# # these two are equivalent. +# # Greene table and discussion is incorrect. +# +# def pdf(self, X): +# """ +# Gumbell (LogWeibull) probability distribution function +# """ +# return stats.gumbel_r.pdf(X) +# +# def loglike(self, params): +# """ +# Loglikelihood of Weibull distribution +# """ +# X = self.exog +# cdf = self.cdf(np.dot(X,params)) +# y = self.endog +# return np.sum(y*np.log(cdf) + (1-y)*np.log(1-cdf)) +# +# def score(self, params): +# y = self.endog +# X = self.exog +# F = self.cdf(np.dot(X,params)) +# f = self.pdf(np.dot(X,params)) +# term = (y*f/F + (1 - y)*-f/(1-F)) +# return np.dot(term,X) +# +# def hessian(self, params): +# hess = nd.Jacobian(self.score) +# return hess(params) +# +# def fit(self, start_params=None, method='newton', maxiter=35, tol=1e-08): +## The example had problems with all zero start values, Hessian = 0 +# if start_params is None: +# start_params = OLS(self.endog, self.exog).fit().params +# mlefit = super(Weibull, self).fit(start_params=start_params, +# method=method, maxiter=maxiter, tol=tol) +# return mlefit +# + + +class NegativeBinomial(CountModel): + __doc__ = """ + Negative Binomial Model for count data + + %(params)s + %(extra_params)s + + Attributes + ---------- + endog : array + A reference to the endogenous response variable + exog : array + A reference to the exogenous design. + + References + ---------- + Greene, W. 2008. "Functional forms for the negtive binomial model + for count data". Economics Letters. Volume 99, Number 3, pp.585-590. + Hilbe, J.M. 2011. "Negative binomial regression". Cambridge University + Press. + """ % {'params': base._model_params_doc, + 'extra_params': + """loglike_method : string + Log-likelihood type. 'nb2','nb1', or 'geometric'. + Fitted value :math:`\\mu` + Heterogeneity parameter :math:`\\alpha` + + - nb2: Variance equal to :math:`\\mu + \\alpha\\mu^2` (most common) + - nb1: Variance equal to :math:`\\mu + \\alpha\\mu` + - geometric: Variance equal to :math:`\\mu + \\mu^2` + offset : array_like + Offset is added to the linear prediction with coefficient equal to 1. + exposure : array_like + Log(exposure) is added to the linear prediction with coefficient + equal to 1. + + """ + base._missing_param_doc} + def __init__(self, endog, exog, loglike_method='nb2', offset=None, + exposure=None, missing='none', **kwargs): + super(NegativeBinomial, self).__init__(endog, exog, offset=offset, + exposure=exposure, + missing=missing, **kwargs) + self.loglike_method = loglike_method + self._initialize() + if loglike_method in ['nb2', 'nb1']: + self.exog_names.append('alpha') + self.k_extra = 1 + else: + self.k_extra = 0 + # store keys for extras if we need to recreate model instance + # we need to append keys that don't go to super + self._init_keys.append('loglike_method') + + def _initialize(self): + if self.loglike_method == 'nb2': + self.hessian = self._hessian_nb2 + self.score = self._score_nbin + self.loglikeobs = self._ll_nb2 + self._transparams = True # transform lnalpha -> alpha in fit + elif self.loglike_method == 'nb1': + self.hessian = self._hessian_nb1 + self.score = self._score_nb1 + self.loglikeobs = self._ll_nb1 + self._transparams = True # transform lnalpha -> alpha in fit + elif self.loglike_method == 'geometric': + self.hessian = self._hessian_geom + self.score = self._score_geom + self.loglikeobs = self._ll_geometric + else: + raise ValueError('Likelihood type must "nb1", "nb2" ' + 'or "geometric"') + + # Workaround to pickle instance methods + def __getstate__(self): + odict = self.__dict__.copy() # copy the dict since we change it + del odict['hessian'] + del odict['score'] + del odict['loglikeobs'] + return odict + + def __setstate__(self, indict): + self.__dict__.update(indict) + self._initialize() + + def _ll_nbin(self, params, alpha, Q=0): + if np.any(np.iscomplex(params)) or np.iscomplex(alpha): + gamma_ln = loggamma + else: + gamma_ln = gammaln + endog = self.endog + mu = self.predict(params) + size = 1/alpha * mu**Q + prob = size/(size+mu) + coeff = (gamma_ln(size+endog) - gamma_ln(endog+1) - + gamma_ln(size)) + llf = coeff + size*np.log(prob) + endog*np.log(1-prob) + return llf + + def _ll_nb2(self, params): + if self._transparams: # got lnalpha during fit + alpha = np.exp(params[-1]) + else: + alpha = params[-1] + return self._ll_nbin(params[:-1], alpha, Q=0) + + def _ll_nb1(self, params): + if self._transparams: # got lnalpha during fit + alpha = np.exp(params[-1]) + else: + alpha = params[-1] + return self._ll_nbin(params[:-1], alpha, Q=1) + + def _ll_geometric(self, params): + # we give alpha of 1 because it's actually log(alpha) where alpha=0 + return self._ll_nbin(params, 1, 0) + + def loglike(self, params): + r""" + Loglikelihood for negative binomial model + + Parameters + ---------- + params : array-like + The parameters of the model. If `loglike_method` is nb1 or + nb2, then the ancillary parameter is expected to be the + last element. + + Returns + ------- + llf : float + The loglikelihood value at `params` + + Notes + ----- + Following notation in Greene (2008), with negative binomial + heterogeneity parameter :math:`\alpha`: + + .. math:: + + \lambda_i &= exp(X\beta) \\ + \theta &= 1 / \alpha \\ + g_i &= \theta \lambda_i^Q \\ + w_i &= g_i/(g_i + \lambda_i) \\ + r_i &= \theta / (\theta+\lambda_i) \\ + ln \mathcal{L}_i &= ln \Gamma(y_i+g_i) - ln \Gamma(1+y_i) + g_iln (r_i) + y_i ln(1-r_i) + + where :math`Q=0` for NB2 and geometric and :math:`Q=1` for NB1. + For the geometric, :math:`\alpha=0` as well. + + """ + llf = np.sum(self.loglikeobs(params)) + return llf + + def _score_geom(self, params): + exog = self.exog + y = self.endog[:, None] + mu = self.predict(params)[:, None] + dparams = exog * (y-mu)/(mu+1) + return dparams.sum(0) + + def _score_nbin(self, params, Q=0): + """ + Score vector for NB2 model + """ + if self._transparams: # lnalpha came in during fit + alpha = np.exp(params[-1]) + else: + alpha = params[-1] + params = params[:-1] + exog = self.exog + y = self.endog[:,None] + mu = self.predict(params)[:,None] + a1 = 1/alpha * mu**Q + prob = a1 / (a1 + mu) # a1 aka "size" in _ll_nbin + if Q == 1: # nb1 + # Q == 1 --> a1 = mu / alpha --> prob = 1 / (alpha + 1) + dgpart = digamma(y + a1) - digamma(a1) + dparams = exog * a1 * (np.log(prob) + + dgpart) + dalpha = ((alpha * (y - mu * np.log(prob) - + mu*(dgpart + 1)) - + mu * (np.log(prob) + + dgpart))/ + (alpha**2*(alpha + 1))).sum() + + elif Q == 0: # nb2 + dgpart = digamma(y + a1) - digamma(a1) + dparams = exog*a1 * (y-mu)/(mu+a1) + da1 = -alpha**-2 + dalpha = (dgpart + np.log(a1) + - np.log(a1+mu) - (y-mu)/(a1+mu)).sum() * da1 + + #multiply above by constant outside sum to reduce rounding error + if self._transparams: + return np.r_[dparams.sum(0), dalpha*alpha] + else: + return np.r_[dparams.sum(0), dalpha] + + def _score_nb1(self, params): + return self._score_nbin(params, Q=1) + + def _hessian_geom(self, params): + exog = self.exog + y = self.endog[:,None] + mu = self.predict(params)[:,None] + + # for dl/dparams dparams + dim = exog.shape[1] + hess_arr = np.empty((dim, dim)) + const_arr = mu*(1+y)/(mu+1)**2 + for i in range(dim): + for j in range(dim): + if j > i: + continue + hess_arr[i,j] = np.sum(-exog[:,i,None] * exog[:,j,None] * + const_arr, axis=0) + tri_idx = np.triu_indices(dim, k=1) + hess_arr[tri_idx] = hess_arr.T[tri_idx] + return hess_arr + + + def _hessian_nb1(self, params): + """ + Hessian of NB1 model. + """ + if self._transparams: # lnalpha came in during fit + alpha = np.exp(params[-1]) + else: + alpha = params[-1] + + params = params[:-1] + exog = self.exog + y = self.endog[:,None] + mu = self.predict(params)[:,None] + + a1 = mu/alpha + dgpart = digamma(y + a1) - digamma(a1) + prob = 1 / (1 + alpha) # equiv: a1 / (a1 + mu) + + # for dl/dparams dparams + dim = exog.shape[1] + hess_arr = np.empty((dim+1,dim+1)) + #const_arr = a1*mu*(a1+y)/(mu+a1)**2 + # not all of dparams + dparams = exog / alpha * (np.log(prob) + + dgpart) + + dmudb = exog*mu + xmu_alpha = exog * a1 + trigamma = (special.polygamma(1, a1 + y) - + special.polygamma(1, a1)) + for i in range(dim): + for j in range(dim): + if j > i: + continue + hess_arr[i,j] = np.sum(dparams[:,i,None] * dmudb[:,j,None] + + xmu_alpha[:,i,None] * xmu_alpha[:,j,None] * + trigamma, axis=0) + tri_idx = np.triu_indices(dim, k=1) + hess_arr[tri_idx] = hess_arr.T[tri_idx] + + # for dl/dparams dalpha + da1 = -alpha**-2 + dldpda = np.sum(-a1 * dparams + exog * a1 * + (-trigamma*mu/alpha**2 - prob), axis=0) + + hess_arr[-1,:-1] = dldpda + hess_arr[:-1,-1] = dldpda + + log_alpha = np.log(prob) + alpha3 = alpha**3 + alpha2 = alpha**2 + mu2 = mu**2 + dada = ((alpha3*mu*(2*log_alpha + 2*dgpart + 3) - + 2*alpha3*y + + 4*alpha2*mu*(log_alpha + dgpart) + + alpha2 * (2*mu - y) + + 2*alpha*mu2*trigamma + mu2 * trigamma + alpha2 * mu2 * trigamma + + 2*alpha*mu*(log_alpha + dgpart) + )/(alpha**4*(alpha2 + 2*alpha + 1))) + hess_arr[-1,-1] = dada.sum() + + return hess_arr + + def _hessian_nb2(self, params): + """ + Hessian of NB2 model. + """ + if self._transparams: # lnalpha came in during fit + alpha = np.exp(params[-1]) + else: + alpha = params[-1] + a1 = 1/alpha + params = params[:-1] + + exog = self.exog + y = self.endog[:,None] + mu = self.predict(params)[:,None] + prob = a1 / (a1 + mu) + dgpart = digamma(a1 + y) - digamma(a1) + + # for dl/dparams dparams + dim = exog.shape[1] + hess_arr = np.empty((dim+1,dim+1)) + const_arr = a1*mu*(a1+y)/(mu+a1)**2 + for i in range(dim): + for j in range(dim): + if j > i: + continue + hess_arr[i,j] = np.sum(-exog[:,i,None] * exog[:,j,None] * + const_arr, axis=0) + tri_idx = np.triu_indices(dim, k=1) + hess_arr[tri_idx] = hess_arr.T[tri_idx] + + # for dl/dparams dalpha + da1 = -alpha**-2 + dldpda = -np.sum(mu*exog*(y-mu)*a1**2/(mu+a1)**2 , axis=0) + hess_arr[-1,:-1] = dldpda + hess_arr[:-1,-1] = dldpda + + # for dl/dalpha dalpha + #NOTE: polygamma(1,x) is the trigamma function + da2 = 2*alpha**-3 + dalpha = da1 * (dgpart + + np.log(prob) - (y - mu)/(a1+mu)) + dada = (da2 * dalpha/da1 + da1**2 * (special.polygamma(1, a1+y) - + special.polygamma(1, a1) + 1/a1 - 1/(a1 + mu) + + (y - mu)/(mu + a1)**2)).sum() + hess_arr[-1,-1] = dada + + return hess_arr + + #TODO: replace this with analytic where is it used? + def score_obs(self, params): + sc = approx_fprime_cs(params, self.loglikeobs) + return sc + + def _get_start_params_null(self): + offset = getattr(self, "offset", 0) + exposure = getattr(self, "exposure", 0) + const = (self.endog / np.exp(offset + exposure)).mean() + params = [np.log(const)] + mu = const * np.exp(offset + exposure) + resid = self.endog - mu + a = self._estimate_dispersion(mu, resid, df_resid=resid.shape[0] - 1) + params.append(a) + return np.array(params) + + _get_start_params_null.__doc__ = _get_start_params_null_docs + + def _estimate_dispersion(self, mu, resid, df_resid=None): + if df_resid is None: + df_resid = resid.shape[0] + if self.loglike_method == 'nb2': + #params.append(np.linalg.pinv(mu[:,None]).dot(resid**2 / mu - 1)) + a = ((resid**2 / mu - 1) / mu).sum() / df_resid + else: #self.loglike_method == 'nb1': + a = (resid**2 / mu - 1).sum() / df_resid + return a + + def fit(self, start_params=None, method='bfgs', maxiter=35, + full_output=1, disp=1, callback=None, + cov_type='nonrobust', cov_kwds=None, use_t=None, **kwargs): + + # Note: don't let super handle robust covariance because it has + # transformed params + self._transparams = False # always define attribute + if self.loglike_method.startswith('nb') and method not in ['newton', + 'ncg']: + self._transparams = True # in case same Model instance is refit + elif self.loglike_method.startswith('nb'): # method is newton/ncg + self._transparams = False # because we need to step in alpha space + + if start_params is None: + # Use poisson fit as first guess. + #TODO, Warning: this assumes exposure is logged + offset = getattr(self, "offset", 0) + getattr(self, "exposure", 0) + if np.size(offset) == 1 and offset == 0: + offset = None + optim_kwds_prelim = {'disp': 0, 'skip_hessian': True, + 'warn_convergence': False} + optim_kwds_prelim.update(kwargs.get('optim_kwds_prelim', {})) + mod_poi = Poisson(self.endog, self.exog, offset=offset) + res_poi = mod_poi.fit(**optim_kwds_prelim) + start_params = res_poi.params + if self.loglike_method.startswith('nb'): + a = self._estimate_dispersion(res_poi.predict(), res_poi.resid, + df_resid=res_poi.df_resid) + start_params = np.append(start_params, max(0.05, a)) + else: + if self._transparams is True: + # transform user provided start_params dispersion, see #3918 + start_params = np.array(start_params, copy=True) + start_params[-1] = np.log(start_params[-1]) + + if callback is None: + # work around perfect separation callback #3895 + callback = lambda *x: x + + mlefit = super(NegativeBinomial, self).fit(start_params=start_params, + maxiter=maxiter, method=method, disp=disp, + full_output=full_output, callback=callback, + **kwargs) + # TODO: Fix NBin _check_perfect_pred + if self.loglike_method.startswith('nb'): + # mlefit is a wrapped counts results + self._transparams = False # don't need to transform anymore now + # change from lnalpha to alpha + if method not in ["newton", "ncg"]: + mlefit._results.params[-1] = np.exp(mlefit._results.params[-1]) + + nbinfit = NegativeBinomialResults(self, mlefit._results) + result = NegativeBinomialResultsWrapper(nbinfit) + else: + result = mlefit + + if cov_kwds is None: + cov_kwds = {} #TODO: make this unnecessary ? + result._get_robustcov_results(cov_type=cov_type, + use_self=True, use_t=use_t, **cov_kwds) + return result + + + def fit_regularized(self, start_params=None, method='l1', + maxiter='defined_by_method', full_output=1, disp=1, callback=None, + alpha=0, trim_mode='auto', auto_trim_tol=0.01, size_trim_tol=1e-4, + qc_tol=0.03, **kwargs): + + _validate_l1_method(method) + + if self.loglike_method.startswith('nb') and (np.size(alpha) == 1 and + alpha != 0): + # don't penalize alpha if alpha is scalar + k_params = self.exog.shape[1] + self.k_extra + alpha = alpha * np.ones(k_params) + alpha[-1] = 0 + + # alpha for regularized poisson to get starting values + alpha_p = alpha[:-1] if (self.k_extra and np.size(alpha) > 1) else alpha + + self._transparams = False + if start_params is None: + # Use poisson fit as first guess. + #TODO, Warning: this assumes exposure is logged + offset = getattr(self, "offset", 0) + getattr(self, "exposure", 0) + if np.size(offset) == 1 and offset == 0: + offset = None + mod_poi = Poisson(self.endog, self.exog, offset=offset) + start_params = mod_poi.fit_regularized( + start_params=start_params, method=method, maxiter=maxiter, + full_output=full_output, disp=0, callback=callback, + alpha=alpha_p, trim_mode=trim_mode, auto_trim_tol=auto_trim_tol, + size_trim_tol=size_trim_tol, qc_tol=qc_tol, **kwargs).params + if self.loglike_method.startswith('nb'): + start_params = np.append(start_params, 0.1) + + cntfit = super(CountModel, self).fit_regularized( + start_params=start_params, method=method, maxiter=maxiter, + full_output=full_output, disp=disp, callback=callback, + alpha=alpha, trim_mode=trim_mode, auto_trim_tol=auto_trim_tol, + size_trim_tol=size_trim_tol, qc_tol=qc_tol, **kwargs) + + discretefit = L1NegativeBinomialResults(self, cntfit) + return L1NegativeBinomialResultsWrapper(discretefit) + + +class NegativeBinomialP(CountModel): + __doc__ = """ + Generalized Negative Binomial (NB-P) model for count data + %(params)s + %(extra_params)s + Attributes + ---------- + endog : array + A reference to the endogenous response variable + exog : array + A reference to the exogenous design. + p : scalar + P denotes parameterizations for NB-P regression. p=1 for NB-1 and + p=2 for NB-2. Default is p=1. + """ % {'params' : base._model_params_doc, + 'extra_params' : + """p: scalar + P denotes parameterizations for NB regression. p=1 for NB-1 and + p=2 for NB-2. Default is p=2. + offset : array_like + Offset is added to the linear prediction with coefficient equal to 1. + exposure : array_like + Log(exposure) is added to the linear prediction with coefficient + equal to 1. + """ + base._missing_param_doc} + + def __init__(self, endog, exog, p=2, offset=None, + exposure=None, missing='none', **kwargs): + super(NegativeBinomialP, self).__init__(endog, exog, offset=offset, + exposure=exposure, + missing=missing, **kwargs) + self.parameterization = p + self.exog_names.append('alpha') + self.k_extra = 1 + self._transparams = False + + def _get_init_kwds(self): + kwds = super(NegativeBinomialP, self)._get_init_kwds() + kwds['p'] = self.parameterization + return kwds + + def loglike(self, params): + """ + Loglikelihood of Generalized Negative Binomial (NB-P) model + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + loglike : float + The log-likelihood function of the model evaluated at `params`. + See notes. + """ + return np.sum(self.loglikeobs(params)) + + def loglikeobs(self, params): + """ + Loglikelihood for observations of Generalized Negative Binomial (NB-P) model + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + loglike : ndarray + The log likelihood for each observation of the model evaluated + at `params`. See Notes + """ + if self._transparams: + alpha = np.exp(params[-1]) + else: + alpha = params[-1] + + params = params[:-1] + p = self.parameterization + y = self.endog + + mu = self.predict(params) + mu_p = mu**(2 - p) + a1 = mu_p / alpha + a2 = mu + a1 + + llf = (gammaln(y + a1) - gammaln(y + 1) - gammaln(a1) + + a1 * np.log(a1) + y * np.log(mu) - + (y + a1) * np.log(a2)) + + return llf + + def score_obs(self, params): + """ + Generalized Negative Binomial (NB-P) model score (gradient) vector of the log-likelihood for each observations. + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + score : ndarray, 1-D + The score vector of the model, i.e. the first derivative of the + loglikelihood function, evaluated at `params` + """ + if self._transparams: + alpha = np.exp(params[-1]) + else: + alpha = params[-1] + + params = params[:-1] + p = 2 - self.parameterization + y = self.endog + + mu = self.predict(params) + mu_p = mu**p + a1 = mu_p / alpha + a2 = mu + a1 + a3 = y + a1 + a4 = p * a1 / mu + + dgpart = digamma(a3) - digamma(a1) + dgterm = dgpart + np.log(a1 / a2) + 1 - a3 / a2 + # TODO: better name/interpretation for dgterm? + + dparams = (a4 * dgterm - + a3 / a2 + + y / mu) + dparams = (self.exog.T * mu * dparams).T + dalpha = -a1 / alpha * dgterm + + return np.concatenate((dparams, np.atleast_2d(dalpha).T), + axis=1) + + def score(self, params): + """ + Generalized Negative Binomial (NB-P) model score (gradient) vector of the log-likelihood + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + score : ndarray, 1-D + The score vector of the model, i.e. the first derivative of the + loglikelihood function, evaluated at `params` + """ + score = np.sum(self.score_obs(params), axis=0) + if self._transparams: + score[-1] == score[-1] ** 2 + return score + else: + return score + + def hessian(self, params): + """ + Generalized Negative Binomial (NB-P) model hessian maxtrix of the log-likelihood + + Parameters + ---------- + params : array-like + The parameters of the model + + Returns + ------- + hessian : ndarray, 2-D + The hessian matrix of the model. + """ + if self._transparams: + alpha = np.exp(params[-1]) + else: + alpha = params[-1] + params = params[:-1] + + p = 2 - self.parameterization + y = self.endog + exog = self.exog + mu = self.predict(params) + + mu_p = mu**p + a1 = mu_p / alpha + a2 = mu + a1 + a3 = y + a1 + a4 = p * a1 / mu + + prob = a1 / a2 + lprob = np.log(prob) + dgpart = digamma(a3) - digamma(a1) + pgpart = polygamma(1, a3) - polygamma(1, a1) + + dim = exog.shape[1] + hess_arr = np.zeros((dim + 1, dim + 1)) + + coeff = mu**2 * (((1 + a4)**2 * a3 / a2**2 - + a3 / a2 * (p - 1) * a4 / mu - + y / mu**2 - + 2 * a4 * (1 + a4) / a2 + + p * a4 / mu * (lprob + dgpart + 2) - + a4 / mu * (lprob + dgpart + 1) + + a4**2 * pgpart) + + (-(1 + a4) * a3 / a2 + + y / mu + + a4 * (lprob + dgpart + 1)) / mu) + + for i in range(dim): + hess_arr[i, :-1] = np.sum(self.exog[:, :].T * self.exog[:, i] * coeff, axis=1) + + + hess_arr[-1,:-1] = (self.exog[:, :].T * mu * a1 * + ((1 + a4) * (1 - a3 / a2) / a2 - + p * (lprob + dgpart + 2) / mu + + p / mu * (a3 + p * a1) / a2 - + a4 * pgpart) / alpha).sum(axis=1) + + + da2 = (a1 * (2 * lprob + + 2 * dgpart + 3 - + 2 * a3 / a2 + + a1 * pgpart + - 2 * prob + + prob * a3 / a2) / alpha**2) + + hess_arr[-1, -1] = da2.sum() + + tri_idx = np.triu_indices(dim + 1, k=1) + hess_arr[tri_idx] = hess_arr.T[tri_idx] + + return hess_arr + + def _get_start_params_null(self): + offset = getattr(self, "offset", 0) + exposure = getattr(self, "exposure", 0) + q = self.parameterization - 1 + + const = (self.endog / np.exp(offset + exposure)).mean() + params = [np.log(const)] + mu = const * np.exp(offset + exposure) + resid = self.endog - mu + a = self._estimate_dispersion(mu, resid, df_resid=resid.shape[0] - 1) + params.append(a) + + return np.array(params) + + _get_start_params_null.__doc__ = _get_start_params_null_docs + + def _estimate_dispersion(self, mu, resid, df_resid=None): + q = self.parameterization - 1 + if df_resid is None: + df_resid = resid.shape[0] + a = ((resid**2 / mu - 1) * mu**(-q)).sum() / df_resid + return a + + def fit(self, start_params=None, method='bfgs', maxiter=35, + full_output=1, disp=1, callback=None, use_transparams=False, + cov_type='nonrobust', cov_kwds=None, use_t=None, **kwargs): + # TODO: Fix doc string + """ + use_transparams : bool + This parameter enable internal transformation to impose + non-negativity. True to enable. Default is False. + use_transparams=True imposes the no underdispersion (alpha > 0) + constaint. In case use_transparams=True and method="newton" or + "ncg" transformation is ignored. + """ + if use_transparams and method not in ['newton', 'ncg']: + self._transparams = True + else: + if use_transparams: + warnings.warn('Parameter "use_transparams" is ignored', + RuntimeWarning) + self._transparams = False + + if start_params is None: + offset = getattr(self, "offset", 0) + getattr(self, "exposure", 0) + if np.size(offset) == 1 and offset == 0: + offset = None + + optim_kwds_prelim = {'disp': 0, 'skip_hessian': True, + 'warn_convergence': False} + optim_kwds_prelim.update(kwargs.get('optim_kwds_prelim', {})) + mod_poi = Poisson(self.endog, self.exog, offset=offset) + res_poi = mod_poi.fit(**optim_kwds_prelim) + start_params = res_poi.params + a = self._estimate_dispersion(res_poi.predict(), res_poi.resid, + df_resid=res_poi.df_resid) + start_params = np.append(start_params, max(0.05, a)) + + if callback is None: + # work around perfect separation callback #3895 + callback = lambda *x: x + + mlefit = super(NegativeBinomialP, self).fit(start_params=start_params, + maxiter=maxiter, method=method, disp=disp, + full_output=full_output, callback=callback, + **kwargs) + + if use_transparams and method not in ["newton", "ncg"]: + self._transparams = False + mlefit._results.params[-1] = np.exp(mlefit._results.params[-1]) + + nbinfit = NegativeBinomialResults(self, mlefit._results) + result = NegativeBinomialResultsWrapper(nbinfit) + + if cov_kwds is None: + cov_kwds = {} + result._get_robustcov_results(cov_type=cov_type, + use_self=True, use_t=use_t, **cov_kwds) + return result + + fit.__doc__ += DiscreteModel.fit.__doc__ + + def fit_regularized(self, start_params=None, method='l1', + maxiter='defined_by_method', full_output=1, disp=1, callback=None, + alpha=0, trim_mode='auto', auto_trim_tol=0.01, size_trim_tol=1e-4, + qc_tol=0.03, **kwargs): + + _validate_l1_method(method) + + if np.size(alpha) == 1 and alpha != 0: + k_params = self.exog.shape[1] + self.k_extra + alpha = alpha * np.ones(k_params) + alpha[-1] = 0 + + alpha_p = alpha[:-1] if (self.k_extra and np.size(alpha) > 1) else alpha + + self._transparams = False + if start_params is None: + offset = getattr(self, "offset", 0) + getattr(self, "exposure", 0) + if np.size(offset) == 1 and offset == 0: + offset = None + mod_poi = Poisson(self.endog, self.exog, offset=offset) + start_params = mod_poi.fit_regularized( + start_params=start_params, method=method, maxiter=maxiter, + full_output=full_output, disp=0, callback=callback, + alpha=alpha_p, trim_mode=trim_mode, auto_trim_tol=auto_trim_tol, + size_trim_tol=size_trim_tol, qc_tol=qc_tol, **kwargs).params + start_params = np.append(start_params, 0.1) + + cntfit = super(CountModel, self).fit_regularized( + start_params=start_params, method=method, maxiter=maxiter, + full_output=full_output, disp=disp, callback=callback, + alpha=alpha, trim_mode=trim_mode, auto_trim_tol=auto_trim_tol, + size_trim_tol=size_trim_tol, qc_tol=qc_tol, **kwargs) + + discretefit = L1NegativeBinomialResults(self, cntfit) + + return L1NegativeBinomialResultsWrapper(discretefit) + + fit_regularized.__doc__ = DiscreteModel.fit_regularized.__doc__ + + def predict(self, params, exog=None, exposure=None, offset=None, + which='mean'): + """ + Predict response variable of a model given exogenous variables. + + Parameters + ---------- + params : array-like + 2d array of fitted parameters of the model. Should be in the + order returned from the model. + exog : array-like, optional + 1d or 2d array of exogenous values. If not supplied, the + whole exog attribute of the model is used. If a 1d array is given + it assumed to be 1 row of exogenous variables. If you only have + one regressor and would like to do prediction, you must provide + a 2d array with shape[1] == 1. + linear : bool, optional + If True, returns the linear predictor dot(exog,params). Else, + returns the value of the cdf at the linear predictor. + offset : array_like, optional + Offset is added to the linear prediction with coefficient equal to 1. + exposure : array_like, optional + Log(exposure) is added to the linear prediction with coefficient + equal to 1. + which : 'mean', 'linear', 'prob', optional. + 'mean' returns the exp of linear predictor exp(dot(exog,params)). + 'linear' returns the linear predictor dot(exog,params). + 'prob' return probabilities for counts from 0 to max(endog). + Default is 'mean'. + + Notes + ----- + """ + if exog is None: + exog = self.exog + + if exposure is None: + exposure = getattr(self, 'exposure', 0) + elif exposure != 0: + exposure = np.log(exposure) + + if offset is None: + offset = getattr(self, 'offset', 0) + + fitted = np.dot(exog, params[:exog.shape[1]]) + linpred = fitted + exposure + offset + + if which == 'mean': + return np.exp(linpred) + elif which == 'linear': + return linpred + elif which =='prob': + counts = np.atleast_2d(np.arange(0, np.max(self.endog)+1)) + mu = self.predict(params, exog, exposure, offset) + size, prob = self.convert_params(params, mu) + return nbinom.pmf(counts, size[:,None], prob[:,None]) + else: + raise ValueError('keyword "which" = %s not recognized' % which) + + def convert_params(self, params, mu): + alpha = params[-1] + p = 2 - self.parameterization + + size = 1. / alpha * mu**p + prob = size / (size + mu) + + return (size, prob) + + +### Results Class ### + +class DiscreteResults(base.LikelihoodModelResults): + __doc__ = _discrete_results_docs % {"one_line_description" : + "A results class for the discrete dependent variable models.", + "extra_attr" : ""} + + def __init__(self, model, mlefit, cov_type='nonrobust', cov_kwds=None, + use_t=None): + #super(DiscreteResults, self).__init__(model, params, + # np.linalg.inv(-hessian), scale=1.) + self.model = model + self.df_model = model.df_model + self.df_resid = model.df_resid + self._cache = {} + self.nobs = model.exog.shape[0] + self.__dict__.update(mlefit.__dict__) + + if not hasattr(self, 'cov_type'): + # do this only if super, i.e. mlefit didn't already add cov_type + # robust covariance + if use_t is not None: + self.use_t = use_t + if cov_type == 'nonrobust': + self.cov_type = 'nonrobust' + self.cov_kwds = {'description' : 'Standard Errors assume that the ' + + 'covariance matrix of the errors is correctly ' + + 'specified.'} + else: + if cov_kwds is None: + cov_kwds = {} + from statsmodels.base.covtype import get_robustcov_results + get_robustcov_results(self, cov_type=cov_type, use_self=True, + **cov_kwds) + + + def __getstate__(self): + # remove unpicklable methods + mle_settings = getattr(self, 'mle_settings', None) + if mle_settings is not None: + if 'callback' in mle_settings: + mle_settings['callback'] = None + if 'cov_params_func' in mle_settings: + mle_settings['cov_params_func'] = None + return self.__dict__ + + @cache_readonly + def prsquared(self): + """ + McFadden's pseudo-R-squared. `1 - (llf / llnull)` + """ + return 1 - self.llf/self.llnull + + @cache_readonly + def llr(self): + """ + Likelihood ratio chi-squared statistic; `-2*(llnull - llf)` + """ + return -2*(self.llnull - self.llf) + + @cache_readonly + def llr_pvalue(self): + """ + The chi-squared probability of getting a log-likelihood ratio + statistic greater than llr. llr has a chi-squared distribution + with degrees of freedom `df_model`. + """ + return stats.distributions.chi2.sf(self.llr, self.df_model) + + def set_null_options(self, llnull=None, attach_results=True, **kwds): + """set fit options for Null (constant-only) model + + This resets the cache for related attributes which is potentially + fragile. This only sets the option, the null model is estimated + when llnull is accessed, if llnull is not yet in cache. + + Parameters + ---------- + llnull : None or float + If llnull is not None, then the value will be directly assigned to + the cached attribute "llnull". + attach_results : bool + Sets an internal flag whether the results instance of the null + model should be attached. By default without calling this method, + thenull model results are not attached and only the loglikelihood + value llnull is stored. + kwds : keyword arguments + `kwds` are directly used as fit keyword arguments for the null + model, overriding any provided defaults. + + Returns + ------- + no returns, modifies attributes of this instance + + """ + # reset cache, note we need to add here anything that depends on + # llnullor the null model. If something is missing, then the attribute + # might be incorrect. + self._cache.pop('llnull', None) + self._cache.pop('llr', None) + self._cache.pop('llr_pvalue', None) + self._cache.pop('prsquared', None) + if hasattr(self, 'res_null'): + del self.res_null + + if llnull is not None: + self._cache['llnull'] = llnull + self._attach_nullmodel = attach_results + self._optim_kwds_null = kwds + + @cache_readonly + def llnull(self): + """ + Value of the constant-only loglikelihood + """ + model = self.model + kwds = model._get_init_kwds().copy() + for key in getattr(model, '_null_drop_keys', []): + del kwds[key] + # TODO: what parameters to pass to fit? + mod_null = model.__class__(model.endog, np.ones(self.nobs), **kwds) + # TODO: consider catching and warning on convergence failure? + # in the meantime, try hard to converge. see + # TestPoissonConstrained1a.test_smoke + + optim_kwds = getattr(self, '_optim_kwds_null', {}).copy() + + if 'start_params' in optim_kwds: + # user provided + sp_null = optim_kwds.pop('start_params') + elif hasattr(model, '_get_start_params_null'): + # get moment estimates if available + sp_null = model._get_start_params_null() + else: + sp_null = None + + opt_kwds = dict(method='bfgs', warn_convergence=False, maxiter=10000, + disp=0) + opt_kwds.update(optim_kwds) + + if optim_kwds: + res_null = mod_null.fit(start_params=sp_null, **opt_kwds) + else: + # this should be a reasonably method case across versions + res_null = mod_null.fit(start_params=sp_null, method='nm', + warn_convergence=False, + maxiter=10000, disp=0) + res_null = mod_null.fit(start_params=res_null.params, method='bfgs', + warn_convergence=False, + maxiter=10000, disp=0) + + if getattr(self, '_attach_nullmodel', False) is not False: + self.res_null = res_null + + return res_null.llf + + @cache_readonly + def fittedvalues(self): + """ + Linear predictor XB. + """ + return np.dot(self.model.exog, self.params[:self.model.exog.shape[1]]) + + @cache_readonly + def resid_response(self): + """ + Respnose residuals. The response residuals are defined as + `endog - fittedvalues` + """ + return self.model.endog - self.predict() + + @cache_readonly + def aic(self): + """ + Akaike information criterion. `-2*(llf - p)` where `p` is the number + of regressors including the intercept. + """ + return -2*(self.llf - (self.df_model+1)) + + @cache_readonly + def bic(self): + """ + Bayesian information criterion. `-2*llf + ln(nobs)*p` where `p` is the + number of regressors including the intercept. + """ + return -2*self.llf + np.log(self.nobs)*(self.df_model+1) + + def _get_endog_name(self, yname, yname_list): + if yname is None: + yname = self.model.endog_names + if yname_list is None: + yname_list = self.model.endog_names + return yname, yname_list + + def get_margeff(self, at='overall', method='dydx', atexog=None, + dummy=False, count=False): + """Get marginal effects of the fitted model. + + Parameters + ---------- + at : str, optional + Options are: + + - 'overall', The average of the marginal effects at each + observation. + - 'mean', The marginal effects at the mean of each regressor. + - 'median', The marginal effects at the median of each regressor. + - 'zero', The marginal effects at zero for each regressor. + - 'all', The marginal effects at each observation. If `at` is all + only margeff will be available from the returned object. + + Note that if `exog` is specified, then marginal effects for all + variables not specified by `exog` are calculated using the `at` + option. + method : str, optional + Options are: + + - 'dydx' - dy/dx - No transformation is made and marginal effects + are returned. This is the default. + - 'eyex' - estimate elasticities of variables in `exog` -- + d(lny)/d(lnx) + - 'dyex' - estimate semielasticity -- dy/d(lnx) + - 'eydx' - estimate semeilasticity -- d(lny)/dx + + Note that tranformations are done after each observation is + calculated. Semi-elasticities for binary variables are computed + using the midpoint method. 'dyex' and 'eyex' do not make sense + for discrete variables. + atexog : array-like, optional + Optionally, you can provide the exogenous variables over which to + get the marginal effects. This should be a dictionary with the key + as the zero-indexed column number and the value of the dictionary. + Default is None for all independent variables less the constant. + dummy : bool, optional + If False, treats binary variables (if present) as continuous. This + is the default. Else if True, treats binary variables as + changing from 0 to 1. Note that any variable that is either 0 or 1 + is treated as binary. Each binary variable is treated separately + for now. + count : bool, optional + If False, treats count variables (if present) as continuous. This + is the default. Else if True, the marginal effect is the + change in probabilities when each observation is increased by one. + + Returns + ------- + DiscreteMargins : marginal effects instance + Returns an object that holds the marginal effects, standard + errors, confidence intervals, etc. See + `statsmodels.discrete.discrete_margins.DiscreteMargins` for more + information. + + Notes + ----- + When using after Poisson, returns the expected number of events + per period, assuming that the model is loglinear. + """ + from statsmodels.discrete.discrete_margins import DiscreteMargins + return DiscreteMargins(self, (at, method, atexog, dummy, count)) + + def summary(self, yname=None, xname=None, title=None, alpha=.05, + yname_list=None): + """Summarize the Regression Results + + Parameters + ---------- + yname : string, optional + Default is `y` + xname : list of strings, optional + Default is `var_##` for ## in p the number of regressors + title : string, optional + Title for the top table. If not None, then this replaces the + default title + alpha : float + significance level for the confidence intervals + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary.Summary : class to hold summary results + """ + + top_left = [('Dep. Variable:', None), + ('Model:', [self.model.__class__.__name__]), + ('Method:', ['MLE']), + ('Date:', None), + ('Time:', None), + ('converged:', ["%s" % self.mle_retvals['converged']]), + ] + + top_right = [('No. Observations:', None), + ('Df Residuals:', None), + ('Df Model:', None), + ('Pseudo R-squ.:', ["%#6.4g" % self.prsquared]), + ('Log-Likelihood:', None), + ('LL-Null:', ["%#8.5g" % self.llnull]), + ('LLR p-value:', ["%#6.4g" % self.llr_pvalue]) + ] + + if hasattr(self, 'cov_type'): + top_left.append(('Covariance Type:', [self.cov_type])) + + if title is None: + title = self.model.__class__.__name__ + ' ' + "Regression Results" + + # boiler plate + from statsmodels.iolib.summary import Summary + smry = Summary() + yname, yname_list = self._get_endog_name(yname, yname_list) + + # for top of table + smry.add_table_2cols(self, gleft=top_left, gright=top_right, + yname=yname, xname=xname, title=title) + + # for parameters, etc + smry.add_table_params(self, yname=yname_list, xname=xname, alpha=alpha, + use_t=self.use_t) + + if hasattr(self, 'constraints'): + smry.add_extra_txt(['Model has been estimated subject to linear ' + 'equality constraints.']) + + return smry + + def summary2(self, yname=None, xname=None, title=None, alpha=.05, + float_format="%.4f"): + """Experimental function to summarize regression results + + Parameters + ---------- + xname : List of strings of length equal to the number of parameters + Names of the independent variables (optional) + yname : string + Name of the dependent variable (optional) + title : string, optional + Title for the top table. If not None, then this replaces the + default title + alpha : float + significance level for the confidence intervals + float_format: string + print format for floats in parameters summary + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary2.Summary : class to hold summary results + """ + from statsmodels.iolib import summary2 + smry = summary2.Summary() + smry.add_base(results=self, alpha=alpha, float_format=float_format, + xname=xname, yname=yname, title=title) + + if hasattr(self, 'constraints'): + smry.add_text('Model has been estimated subject to linear ' + 'equality constraints.') + + return smry + + +class CountResults(DiscreteResults): + __doc__ = _discrete_results_docs % { + "one_line_description": "A results class for count data", + "extra_attr": ""} + @cache_readonly + def resid(self): + """ + Residuals + + Notes + ----- + The residuals for Count models are defined as + + .. math:: y - p + + where :math:`p = \\exp(X\\beta)`. Any exposure and offset variables + are also handled. + """ + return self.model.endog - self.predict() + + +class NegativeBinomialResults(CountResults): + __doc__ = _discrete_results_docs % { + "one_line_description": "A results class for NegativeBinomial 1 and 2", + "extra_attr": ""} + + @cache_readonly + def lnalpha(self): + """Natural log of alpha""" + return np.log(self.params[-1]) + + @cache_readonly + def lnalpha_std_err(self): + """Natural log of standardized error""" + return self.bse[-1] / self.params[-1] + + @cache_readonly + def aic(self): + # + 1 because we estimate alpha + k_extra = getattr(self.model, 'k_extra', 0) + return -2*(self.llf - (self.df_model + self.k_constant + k_extra)) + + @cache_readonly + def bic(self): + # + 1 because we estimate alpha + k_extra = getattr(self.model, 'k_extra', 0) + return -2*self.llf + np.log(self.nobs)*(self.df_model + + self.k_constant + k_extra) + + +class GeneralizedPoissonResults(NegativeBinomialResults): + __doc__ = _discrete_results_docs % { + "one_line_description": "A results class for Generalized Poisson", + "extra_attr": ""} + + @cache_readonly + def _dispersion_factor(self): + p = getattr(self.model, 'parameterization', 0) + mu = self.predict() + return (1 + self.params[-1] * mu**p)**2 + +class L1CountResults(DiscreteResults): + __doc__ = _discrete_results_docs % {"one_line_description" : + "A results class for count data fit by l1 regularization", + "extra_attr" : _l1_results_attr} + + def __init__(self, model, cntfit): + super(L1CountResults, self).__init__(model, cntfit) + # self.trimmed is a boolean array with T/F telling whether or not that + # entry in params has been set zero'd out. + self.trimmed = cntfit.mle_retvals['trimmed'] + self.nnz_params = (~self.trimmed).sum() + + # Set degrees of freedom. In doing so, + # adjust for extra parameter in NegativeBinomial nb1 and nb2 + # extra parameter is not included in df_model + k_extra = getattr(self.model, 'k_extra', 0) + + self.df_model = self.nnz_params - 1 - k_extra + self.df_resid = float(self.model.endog.shape[0] - self.nnz_params) + k_extra + +class PoissonResults(CountResults): + + def predict_prob(self, n=None, exog=None, exposure=None, offset=None, + transform=True): + """ + Return predicted probability of each count level for each observation + + Parameters + ---------- + n : array-like or int + The counts for which you want the probabilities. If n is None + then the probabilities for each count from 0 to max(y) are + given. + + Returns + ------- + ndarray + A nobs x n array where len(`n`) columns are indexed by the count + n. If n is None, then column 0 is the probability that each + observation is 0, column 1 is the probability that each + observation is 1, etc. + """ + if n is not None: + counts = np.atleast_2d(n) + else: + counts = np.atleast_2d(np.arange(0, np.max(self.model.endog)+1)) + mu = self.predict(exog=exog, exposure=exposure, offset=offset, + transform=transform, linear=False)[:,None] + # uses broadcasting + return stats.poisson.pmf(counts, mu) + + @property + def resid_pearson(self): + """ + Pearson residuals + + Notes + ----- + Pearson residuals are defined to be + + .. math:: r_j = \\frac{(y - M_jp_j)}{\\sqrt{M_jp_j(1-p_j)}} + + where :math:`p_j=cdf(X\\beta)` and :math:`M_j` is the total number of + observations sharing the covariate pattern :math:`j`. + + For now :math:`M_j` is always set to 1. + """ + # Pearson residuals + p = self.predict() # fittedvalues is still linear + return (self.model.endog - p)/np.sqrt(p) + + +class L1PoissonResults(L1CountResults, PoissonResults): + pass + +class L1NegativeBinomialResults(L1CountResults, NegativeBinomialResults): + pass + +class L1GeneralizedPoissonResults(L1CountResults, GeneralizedPoissonResults): + pass + +class OrderedResults(DiscreteResults): + __doc__ = _discrete_results_docs % {"one_line_description" : "A results class for ordered discrete data." , "extra_attr" : ""} + pass + +class BinaryResults(DiscreteResults): + __doc__ = _discrete_results_docs % {"one_line_description" : "A results class for binary data", "extra_attr" : ""} + + def pred_table(self, threshold=.5): + """ + Prediction table + + Parameters + ---------- + threshold : scalar + Number between 0 and 1. Threshold above which a prediction is + considered 1 and below which a prediction is considered 0. + + Notes + ----- + pred_table[i,j] refers to the number of times "i" was observed and + the model predicted "j". Correct predictions are along the diagonal. + """ + model = self.model + actual = model.endog + pred = np.array(self.predict() > threshold, dtype=float) + bins = np.array([0, 0.5, 1]) + return np.histogram2d(actual, pred, bins=bins)[0] + + def summary(self, yname=None, xname=None, title=None, alpha=.05, + yname_list=None): + smry = super(BinaryResults, self).summary(yname, xname, title, alpha, + yname_list) + fittedvalues = self.model.cdf(self.fittedvalues) + absprederror = np.abs(self.model.endog - fittedvalues) + predclose_sum = (absprederror < 1e-4).sum() + predclose_frac = predclose_sum / len(fittedvalues) + + # add warnings/notes + etext = [] + if predclose_sum == len(fittedvalues): # TODO: nobs? + wstr = "Complete Separation: The results show that there is" + wstr += "complete separation.\n" + wstr += "In this case the Maximum Likelihood Estimator does " + wstr += "not exist and the parameters\n" + wstr += "are not identified." + etext.append(wstr) + elif predclose_frac > 0.1: # TODO: get better diagnosis + wstr = "Possibly complete quasi-separation: A fraction " + wstr += "%4.2f of observations can be\n" % predclose_frac + wstr += "perfectly predicted. This might indicate that there " + wstr += "is complete\nquasi-separation. In this case some " + wstr += "parameters will not be identified." + etext.append(wstr) + if etext: + smry.add_extra_txt(etext) + return smry + summary.__doc__ = DiscreteResults.summary.__doc__ + + @cache_readonly + def resid_dev(self): + """ + Deviance residuals + + Notes + ----- + Deviance residuals are defined + + .. math:: d_j = \\pm\\left(2\\left[Y_j\\ln\\left(\\frac{Y_j}{M_jp_j}\\right) + (M_j - Y_j\\ln\\left(\\frac{M_j-Y_j}{M_j(1-p_j)} \\right) \\right] \\right)^{1/2} + + where + + :math:`p_j = cdf(X\\beta)` and :math:`M_j` is the total number of + observations sharing the covariate pattern :math:`j`. + + For now :math:`M_j` is always set to 1. + """ + #These are the deviance residuals + #model = self.model + endog = self.model.endog + #exog = model.exog + # M = # of individuals that share a covariate pattern + # so M[i] = 2 for i = two share a covariate pattern + M = 1 + p = self.predict() + #Y_0 = np.where(exog == 0) + #Y_M = np.where(exog == M) + #NOTE: Common covariate patterns are not yet handled + res = -(1-endog)*np.sqrt(2*M*np.abs(np.log(1-p))) + \ + endog*np.sqrt(2*M*np.abs(np.log(p))) + return res + + @cache_readonly + def resid_pearson(self): + """ + Pearson residuals + + Notes + ----- + Pearson residuals are defined to be + + .. math:: r_j = \\frac{(y - M_jp_j)}{\\sqrt{M_jp_j(1-p_j)}} + + where :math:`p_j=cdf(X\\beta)` and :math:`M_j` is the total number of + observations sharing the covariate pattern :math:`j`. + + For now :math:`M_j` is always set to 1. + """ + # Pearson residuals + #model = self.model + endog = self.model.endog + #exog = model.exog + # M = # of individuals that share a covariate pattern + # so M[i] = 2 for i = two share a covariate pattern + # use unique row pattern? + M = 1 + p = self.predict() + return (endog - M*p)/np.sqrt(M*p*(1-p)) + + @cache_readonly + def resid_response(self): + """ + The response residuals + + Notes + ----- + Response residuals are defined to be + + .. math:: y - p + + where :math:`p=cdf(X\\beta)`. + """ + return self.model.endog - self.predict() + + +class LogitResults(BinaryResults): + __doc__ = _discrete_results_docs % { + "one_line_description": "A results class for Logit Model", + "extra_attr": ""} + + @cache_readonly + def resid_generalized(self): + """ + Generalized residuals + + Notes + ----- + The generalized residuals for the Logit model are defined + + .. math:: y - p + + where :math:`p=cdf(X\\beta)`. This is the same as the `resid_response` + for the Logit model. + """ + # Generalized residuals + return self.model.endog - self.predict() + + +class ProbitResults(BinaryResults): + __doc__ = _discrete_results_docs % { + "one_line_description": "A results class for Probit Model", + "extra_attr": ""} + + @cache_readonly + def resid_generalized(self): + """ + Generalized residuals + + Notes + ----- + The generalized residuals for the Probit model are defined + + .. math:: y\\frac{\\phi(X\\beta)}{\\Phi(X\\beta)}-(1-y)\\frac{\\phi(X\\beta)}{1-\\Phi(X\\beta)} + """ + # generalized residuals + model = self.model + endog = model.endog + XB = self.predict(linear=True) + pdf = model.pdf(XB) + cdf = model.cdf(XB) + return endog * pdf/cdf - (1-endog)*pdf/(1-cdf) + +class L1BinaryResults(BinaryResults): + __doc__ = _discrete_results_docs % {"one_line_description" : + "Results instance for binary data fit by l1 regularization", + "extra_attr" : _l1_results_attr} + def __init__(self, model, bnryfit): + super(L1BinaryResults, self).__init__(model, bnryfit) + # self.trimmed is a boolean array with T/F telling whether or not that + # entry in params has been set zero'd out. + self.trimmed = bnryfit.mle_retvals['trimmed'] + self.nnz_params = (~self.trimmed).sum() + self.df_model = self.nnz_params - 1 + self.df_resid = float(self.model.endog.shape[0] - self.nnz_params) + + +class MultinomialResults(DiscreteResults): + __doc__ = _discrete_results_docs % {"one_line_description" : + "A results class for multinomial data", "extra_attr" : ""} + + def __init__(self, model, mlefit): + super(MultinomialResults, self).__init__(model, mlefit) + self.J = model.J + self.K = model.K + + def _maybe_convert_ynames_int(self, ynames): + # see if they're integers + issue_warning = False + msg = ('endog contains values are that not int-like. Uses string ' + 'representation of value. Use integer-valued endog to ' + 'suppress this warning.') + for i in ynames: + try: + if ynames[i] % 1 == 0: + ynames[i] = str(int(ynames[i])) + else: + issue_warning = True + ynames[i] = str(ynames[i]) + except TypeError: + ynames[i] = str(ynames[i]) + if issue_warning: + import warnings + warnings.warn(msg, SpecificationWarning) + + return ynames + + def _get_endog_name(self, yname, yname_list, all=False): + """ + If all is False, the first variable name is dropped + """ + model = self.model + if yname is None: + yname = model.endog_names + if yname_list is None: + ynames = model._ynames_map + ynames = self._maybe_convert_ynames_int(ynames) + # use range below to ensure sortedness + ynames = [ynames[key] for key in range(int(model.J))] + ynames = ['='.join([yname, name]) for name in ynames] + if not all: + yname_list = ynames[1:] # assumes first variable is dropped + else: + yname_list = ynames + return yname, yname_list + + def pred_table(self): + """ + Returns the J x J prediction table. + + Notes + ----- + pred_table[i,j] refers to the number of times "i" was observed and + the model predicted "j". Correct predictions are along the diagonal. + """ + ju = self.model.J - 1 # highest index + # these are the actual, predicted indices + #idx = lzip(self.model.endog, self.predict().argmax(1)) + bins = np.concatenate(([0], np.linspace(0.5, ju - 0.5, ju), [ju])) + return np.histogram2d(self.model.endog, self.predict().argmax(1), + bins=bins)[0] + + @cache_readonly + def bse(self): + bse = np.sqrt(np.diag(self.cov_params())) + return bse.reshape(self.params.shape, order='F') + + @cache_readonly + def aic(self): + return -2*(self.llf - (self.df_model+self.model.J-1)) + + @cache_readonly + def bic(self): + return -2*self.llf + np.log(self.nobs)*(self.df_model+self.model.J-1) + + def conf_int(self, alpha=.05, cols=None): + confint = super(DiscreteResults, self).conf_int(alpha=alpha, + cols=cols) + return confint.transpose(2,0,1) + + def margeff(self): + raise NotImplementedError("Use get_margeff instead") + + @cache_readonly + def resid_misclassified(self): + """ + Residuals indicating which observations are misclassified. + + Notes + ----- + The residuals for the multinomial model are defined as + + .. math:: argmax(y_i) \\neq argmax(p_i) + + where :math:`argmax(y_i)` is the index of the category for the + endogenous variable and :math:`argmax(p_i)` is the index of the + predicted probabilities for each category. That is, the residual + is a binary indicator that is 0 if the category with the highest + predicted probability is the same as that of the observed variable + and 1 otherwise. + """ + # it's 0 or 1 - 0 for correct prediction and 1 for a missed one + return (self.model.wendog.argmax(1) != + self.predict().argmax(1)).astype(float) + + def summary2(self, alpha=0.05, float_format="%.4f"): + """Experimental function to summarize regression results + + Parameters + ---------- + alpha : float + significance level for the confidence intervals + float_format: string + print format for floats in parameters summary + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary2.Summary : class to hold summary results + """ + + from statsmodels.iolib import summary2 + smry = summary2.Summary() + smry.add_dict(summary2.summary_model(self)) + # One data frame per value of endog + eqn = self.params.shape[1] + confint = self.conf_int(alpha) + for i in range(eqn): + coefs = summary2.summary_params((self, self.params[:, i], + self.bse[:, i], + self.tvalues[:, i], + self.pvalues[:, i], + confint[i]), + alpha=alpha) + # Header must show value of endog + level_str = self.model.endog_names + ' = ' + str(i) + coefs[level_str] = coefs.index + coefs = coefs.iloc[:, [-1, 0, 1, 2, 3, 4, 5]] + smry.add_df(coefs, index=False, header=True, + float_format=float_format) + smry.add_title(results=self) + return smry + + +class L1MultinomialResults(MultinomialResults): + __doc__ = _discrete_results_docs % {"one_line_description" : + "A results class for multinomial data fit by l1 regularization", + "extra_attr" : _l1_results_attr} + def __init__(self, model, mlefit): + super(L1MultinomialResults, self).__init__(model, mlefit) + # self.trimmed is a boolean array with T/F telling whether or not that + # entry in params has been set zero'd out. + self.trimmed = mlefit.mle_retvals['trimmed'] + self.nnz_params = (~self.trimmed).sum() + + # Note: J-1 constants + self.df_model = self.nnz_params - (self.model.J - 1) + self.df_resid = float(self.model.endog.shape[0] - self.nnz_params) + + +#### Results Wrappers #### + +class OrderedResultsWrapper(lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(OrderedResultsWrapper, OrderedResults) + +class CountResultsWrapper(lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(CountResultsWrapper, CountResults) + +class NegativeBinomialResultsWrapper(lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(NegativeBinomialResultsWrapper, + NegativeBinomialResults) + +class GeneralizedPoissonResultsWrapper(lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(GeneralizedPoissonResultsWrapper, + GeneralizedPoissonResults) + +class PoissonResultsWrapper(lm.RegressionResultsWrapper): + pass + #_methods = { + # "predict_prob" : "rows", + # } + #_wrap_methods = lm.wrap.union_dicts( + # lm.RegressionResultsWrapper._wrap_methods, + # _methods) +wrap.populate_wrapper(PoissonResultsWrapper, PoissonResults) + +class L1CountResultsWrapper(lm.RegressionResultsWrapper): + pass + +class L1PoissonResultsWrapper(lm.RegressionResultsWrapper): + pass + #_methods = { + # "predict_prob" : "rows", + # } + #_wrap_methods = lm.wrap.union_dicts( + # lm.RegressionResultsWrapper._wrap_methods, + # _methods) +wrap.populate_wrapper(L1PoissonResultsWrapper, L1PoissonResults) + +class L1NegativeBinomialResultsWrapper(lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(L1NegativeBinomialResultsWrapper, + L1NegativeBinomialResults) + +class L1GeneralizedPoissonResultsWrapper(lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(L1GeneralizedPoissonResultsWrapper, + L1GeneralizedPoissonResults) + +class BinaryResultsWrapper(lm.RegressionResultsWrapper): + _attrs = {"resid_dev" : "rows", + "resid_generalized" : "rows", + "resid_pearson" : "rows", + "resid_response" : "rows" + } + _wrap_attrs = wrap.union_dicts(lm.RegressionResultsWrapper._wrap_attrs, + _attrs) +wrap.populate_wrapper(BinaryResultsWrapper, BinaryResults) + +class L1BinaryResultsWrapper(lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(L1BinaryResultsWrapper, L1BinaryResults) + +class MultinomialResultsWrapper(lm.RegressionResultsWrapper): + _attrs = {"resid_misclassified" : "rows"} + _wrap_attrs = wrap.union_dicts(lm.RegressionResultsWrapper._wrap_attrs, + _attrs) +wrap.populate_wrapper(MultinomialResultsWrapper, MultinomialResults) + +class L1MultinomialResultsWrapper(lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(L1MultinomialResultsWrapper, L1MultinomialResults) diff --git a/statsmodels/discrete/tests/__init__.py b/statsmodels/discrete/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/discrete/tests/results/__init__.py b/statsmodels/discrete/tests/results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/discrete/tests/results/mn_logit_summary.txt b/statsmodels/discrete/tests/results/mn_logit_summary.txt new file mode 100644 index 0000000..76762e0 --- /dev/null +++ b/statsmodels/discrete/tests/results/mn_logit_summary.txt @@ -0,0 +1,49 @@ +============================================================================== + y=1 coef std err z P>|z| [0.025 0.975] +------------------------------------------------------------------------------ +const -0.2794 0.612 -0.457 0.648 -1.479 0.920 +x1 -0.0119 0.034 -0.350 0.727 -0.079 0.055 +x2 0.2946 0.093 3.152 0.002 0.111 0.478 +x3 -0.0257 0.007 -3.873 0.000 -0.039 -0.013 +x4 0.0897 0.069 1.297 0.195 -0.046 0.225 +------------------------------------------------------------------------------ + y=2 coef std err z P>|z| [0.025 0.975] +------------------------------------------------------------------------------ +const -1.7392 0.720 -2.414 0.016 -3.151 -0.327 +x1 -0.0941 0.039 -2.415 0.016 -0.170 -0.018 +x2 0.3838 0.108 3.559 0.000 0.172 0.595 +x3 -0.0230 0.008 -2.914 0.004 -0.038 -0.008 +x4 0.2451 0.080 3.053 0.002 0.088 0.402 +------------------------------------------------------------------------------ + y=3 coef std err z P>|z| [0.025 0.975] +------------------------------------------------------------------------------ +const -3.0091 1.069 -2.815 0.005 -5.104 -0.914 +x1 -0.1115 0.057 -1.965 0.049 -0.223 -0.000 +x2 0.5641 0.159 3.557 0.000 0.253 0.875 +x3 -0.0156 0.011 -1.391 0.164 -0.038 0.006 +x4 0.0687 0.119 0.577 0.564 -0.165 0.302 +------------------------------------------------------------------------------ + y=4 coef std err z P>|z| [0.025 0.975] +------------------------------------------------------------------------------ +const -6.5607 0.870 -7.540 0.000 -8.266 -4.855 +x1 -0.0949 0.043 -2.183 0.029 -0.180 -0.010 +x2 1.2668 0.128 9.897 0.000 1.016 1.518 +x3 -0.0109 0.008 -1.315 0.189 -0.027 0.005 +x4 0.3067 0.088 3.475 0.001 0.134 0.480 +------------------------------------------------------------------------------ + y=5 coef std err z P>|z| [0.025 0.975] +------------------------------------------------------------------------------ +const -6.0760 0.774 -7.851 0.000 -7.593 -4.559 +x1 -0.0967 0.039 -2.479 0.013 -0.173 -0.020 +x2 1.3377 0.116 11.493 0.000 1.110 1.566 +x3 -0.0198 0.008 -2.631 0.009 -0.035 -0.005 +x4 0.3193 0.080 4.001 0.000 0.163 0.476 +------------------------------------------------------------------------------ + y=6 coef std err z P>|z| [0.025 0.975] +------------------------------------------------------------------------------ +const -10.5973 0.957 -11.076 0.000 -12.473 -8.722 +x1 -0.1447 0.042 -3.475 0.001 -0.226 -0.063 +x2 2.0395 0.141 14.479 0.000 1.763 2.316 +x3 -0.0129 0.008 -1.612 0.107 -0.029 0.003 +x4 0.4576 0.085 5.352 0.000 0.290 0.625 +============================================================================== diff --git a/statsmodels/discrete/tests/results/mnlogit_resid.csv b/statsmodels/discrete/tests/results/mnlogit_resid.csv new file mode 100644 index 0000000..9000fe3 --- /dev/null +++ b/statsmodels/discrete/tests/results/mnlogit_resid.csv @@ -0,0 +1 @@ +0.00,0.00,0.00,0.00,0.00,0.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,0.00,1.00,0.00,1.00,0.00,0.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,0.00,0.00,0.00,0.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,1.00,0.00,0.00,1.00,0.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,0.00,1.00,0.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,0.00,0.00,1.00,1.00,0.00,0.00,0.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,0.00,0.00,0.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,0.00,0.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,0.00,1.00,0.00,0.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,0.00,0.00,0.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,0.00,0.00,0.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,0.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,0.00,1.00,0.00,0.00,0.00,0.00,1.00,0.00,0.00,0.00,1.00,0.00,0.00,1.00,0.00,1.00,1.00,0.00,0.00,0.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,0.00,0.00,1.00,0.00,1.00,0.00,1.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,0.00,0.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,1.00,1.00,0.00,0.00,0.00,0.00,1.00,0.00,0.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,1.00,0.00,0.00,1.00,1.00,1.00,0.00,1.00,0.00,0.00,0.00,0.00,1.00,0.00,0.00,0.00,0.00,1.00,0.00,0.00,0.00,0.00,0.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,1.00,1.00,0.00,0.00,1.00,0.00,0.00,1.00,0.00,1.00,0.00,0.00,0.00,1.00,0.00,1.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,0.00,0.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,0.00,0.00,1.00,0.00,1.00,1.00,0.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,0.00,0.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,0.00,0.00,1.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,0.00,0.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,1.00,1.00,1.00,0.00,0.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,0.00,1.00,0.00,0.00,1.00,1.00,0.00,0.00,1.00,0.00,1.00,0.00,1.00,1.00,1.00,0.00,0.00,0.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,0.00,0.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,0.00,0.00,1.00,0.00,0.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,0.00,0.00,1.00,0.00,1.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,0.00,0.00,1.00,0.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,0.00,0.00,1.00,0.00,1.00,0.00,1.00,0.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,0.00,1.00,1.00,0.00,0.00,0.00,1.00,0.00,0.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,0.00,0.00,0.00,0.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,0.00,0.00,0.00,0.00,0.00,0.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,1.00,0.00,1.00,0.00,1.00,1.00,0.00,0.00,1.00,1.00,0.00,0.00,1.00,1.00,1.00,0.00,1.00,1.00,0.00,1.00,1.00,1.00,0.00,1.00,1.00,1.00,1.00,0.00,0.00,0.00,0.00,1.00,0.00,1.00,0.00,1.00 diff --git a/statsmodels/discrete/tests/results/nbinom_resids.csv b/statsmodels/discrete/tests/results/nbinom_resids.csv new file mode 100644 index 0000000..0c7c54a --- /dev/null +++ b/statsmodels/discrete/tests/results/nbinom_resids.csv @@ -0,0 +1,20 @@ +-.5049508,-.6297218,-83.54991,-1.306285,-6.620286 +-.2341522,-.2554235,-216.8307,-.758866,-7.183702 +1.024237,.7987758,483.7363,2.503515,22.51353 +-.2850617,-.3177966,-70411.51,-2.379918,-141.7456 +.2099025,.1967877,2247.514,.9519455,21.77242 +-.4034835,-.4757415,-19563.36,-2.635026,-88.94614 +-.1644134,-.1744011,-17331.03,-1.162355,-53.42135 +-.4296077,-.5134667,-5300.37,-2.244962,-47.82603 +.323713,.2941846,4110.794,1.486844,36.55984 +.1503672,.1434294,7285.321,.8855429,33.1355 +.4212886,.373428,1373.157,1.521332,24.15702 +.4506587,.3965867,1701.469,1.661779,27.80326 +.2435375,.226174,3184.023,1.136562,27.90734 +1.051829,.8162054,6001.352,3.890797,79.71313 +-.5544503,-.712749,-2094.852,-2.454965,-34.21899 +-.6057506,-.8064111,-274.7382,-1.907744,-13.05105 +-.3412157,-.3902446,-631.138,-1.270229,-14.76001 +.2218985,.2073287,691.1358,.8168764,12.43929 +.2455925,.2266392,.1992506,.2579483,.2747237 +-.7589526,-1.153008,-256.739,-2.407166,-14.14742 diff --git a/statsmodels/discrete/tests/results/phat_mnlogit.csv b/statsmodels/discrete/tests/results/phat_mnlogit.csv new file mode 100644 index 0000000..2d89e80 --- /dev/null +++ b/statsmodels/discrete/tests/results/phat_mnlogit.csv @@ -0,0 +1,944 @@ +1.687758043408000078e-02 5.028960853815000326e-02 2.678359113634000074e-02 1.854180544615000037e-02 1.151017397642099954e-01 2.437793612480199934e-01 5.286263227462799641e-01 +3.588511943817099814e-01 4.822081923484800026e-01 1.051476225256900016e-01 2.250081487000000005e-02 1.033064723014999985e-02 1.938367635012000142e-02 1.577849267050000044e-03 +4.047162532806399815e-01 4.401110112667099838e-01 1.233638748526599965e-01 1.609495468437999871e-02 5.514059681449999702e-03 9.668628685179999835e-03 5.312216817399999713e-04 +3.475201725959800036e-01 4.554381370544399732e-01 1.310559958219499888e-01 2.082262188196000105e-02 1.501423493028000017e-02 2.711765095591999949e-02 3.031166037539999823e-03 +3.039404153823899724e-01 2.601728439331100207e-01 8.375249058007999681e-02 2.549703791737999853e-02 9.932299703359999399e-02 1.416708528995500038e-01 8.564334362745000540e-02 +3.602912724018100254e-01 4.752003550529499964e-01 1.083042770624200041e-01 2.358427830040000020e-02 1.080969441682000029e-02 2.011529915034999949e-02 1.694823615250000068e-03 +3.861714303493499756e-01 2.287689447402999898e-01 7.108116894959999599e-02 3.499735146761000226e-02 9.275097399949999710e-02 1.180404275655699969e-01 6.818971782923000102e-02 +1.635071635246299893e-01 3.969033360481299955e-01 1.203522458672500045e-01 3.852804377675000252e-02 7.107070088387000550e-02 1.519082337617899958e-01 5.773026868700999875e-02 +3.218005895614600154e-01 4.428995549678800270e-01 1.089596748352100047e-01 3.058131597936000062e-02 3.039760328829000172e-02 5.517518520354999789e-02 1.018606778234000011e-02 +5.131529569625900011e-01 3.832032978534700152e-01 6.395649164915000184e-02 1.837813481687999850e-02 8.018352091310000651e-03 1.235497463495000003e-02 9.357878589099999714e-04 +4.559426903724699831e-01 4.364211261272399889e-01 6.710705161094999982e-02 2.116757817565999983e-02 6.874299142509999842e-03 1.175016164779999969e-02 7.370943785599999576e-04 +3.270984590053599983e-01 4.470554888248399750e-01 1.049552932381599968e-01 2.915175072849000154e-02 2.923072129488000007e-02 5.300164222716999968e-02 9.506661444900000105e-03 +1.808367818593999976e-01 4.193063378333999891e-01 1.107852831482900036e-01 3.465483337641000333e-02 6.602165848016999794e-02 1.393841058015800050e-01 4.901099950074999656e-02 +3.448877036571499910e-01 3.944537341594699931e-01 1.146126613020899965e-01 2.941189333797000066e-02 3.815889358520999780e-02 6.372546404600000491e-02 1.474965177475999999e-02 +5.128169655799900140e-01 2.489267289638500136e-01 4.788245633245000188e-02 3.890095651150000250e-02 5.622610822319999702e-02 6.960584968327999944e-02 2.564091049134999828e-02 +9.867530316113999611e-02 1.141328215599100027e-01 5.835970491170999752e-02 4.152495786548000140e-02 1.494823396205899879e-01 2.326754927635200088e-01 3.051493763923600055e-01 +4.899313449859600267e-01 3.177997469902000272e-01 7.677578181027999715e-02 3.250369057059000061e-02 3.088429383934000044e-02 4.298429563641999879e-02 9.120845235880000249e-03 +3.039268255233800176e-01 4.545004069805099745e-01 1.609133481979400093e-01 2.597517892718000099e-02 1.755265519022999876e-02 3.305273875594000321e-02 4.078840371220000295e-03 +1.146878972649599954e-01 1.772738993167899957e-01 6.248850747943000133e-02 3.050998412072999932e-02 1.372299492359199957e-01 2.380926460027699976e-01 2.397171258926399928e-01 +5.431358814239499733e-01 3.455739319324500070e-01 8.004195988178000598e-02 2.059725672007000144e-02 4.165967460719999932e-03 6.195547990499999762e-03 2.894434728700000063e-04 +6.615408658981299928e-01 1.891568750143099997e-01 4.799268022179999788e-02 3.183285146952000155e-02 3.015408664942000050e-02 3.120403923093999915e-02 8.118601515890000453e-03 +4.400008022785200090e-01 4.413008689880399960e-01 9.141772240400000693e-02 1.647007279097999904e-02 3.837074618789999923e-03 6.701267790049999715e-03 2.721900818899999973e-04 +2.971393465995800232e-01 4.314915835857400239e-01 1.226486340165099942e-01 4.256079345942000158e-02 3.315719962119999947e-02 6.145562604069999824e-02 1.154682040215000011e-02 +5.863295122981000002e-02 1.159922033548400067e-01 6.583592295647000547e-02 3.390292450785999806e-02 1.379968672990800060e-01 2.570517659187300241e-01 3.305873870849599938e-01 +3.914179801940900205e-01 3.608804941177399805e-01 1.027423292398499943e-01 4.088709503411999679e-02 3.582967445253999739e-02 5.620659515261999806e-02 1.203582435846000005e-02 +2.064162492752099898e-01 3.995852172374699807e-01 1.793028861284300113e-01 5.334476754069000098e-02 4.596849530935000205e-02 9.236477315426000478e-02 2.301760949194000053e-02 +4.484073221683499977e-01 3.960995674133300226e-01 9.803463518619999484e-02 2.035995386541000068e-02 1.350139267743000020e-02 2.132720500231000127e-02 2.269935095680000216e-03 +2.921933233737900037e-01 3.875440955162000045e-01 1.386088579893099970e-01 2.974492870271000164e-02 4.753185436130000219e-02 8.209051936865000010e-02 2.228643186389999906e-02 +2.425913363695099967e-01 2.854321002960200082e-01 1.033556163311000059e-01 5.214307829737999805e-02 9.179728478192999974e-02 1.504309028387099956e-01 7.424967736005999575e-02 +3.649312853813200253e-01 4.268461465835600155e-01 9.309316426515999721e-02 3.211358562112000270e-02 2.751978114247000118e-02 4.752010852098000060e-02 7.975924760100000857e-03 +4.411235749721499899e-01 4.319424033165000232e-01 7.794369757175000080e-02 2.548349648713999979e-02 8.317616768180000411e-03 1.420421618967999955e-02 9.850088972599999135e-04 +5.072123408317600335e-01 2.936132848262800188e-01 7.423874735832000638e-02 3.979048877954000085e-02 3.250934556126999775e-02 4.341050609945999728e-02 9.225282818079999156e-03 +3.010159730911299847e-01 3.940159380435899750e-01 1.311748772859600010e-01 4.898530989884999909e-02 3.964623063803000141e-02 7.008794695139000663e-02 1.507375016809000060e-02 +2.611554563045500044e-01 3.646373152732800271e-01 1.579297631979000027e-01 6.206687539815999854e-02 4.751446843147000276e-02 8.528047055005999466e-02 2.141566015779999832e-02 +3.498645871877999886e-02 1.026061549782800036e-01 3.006544709206000060e-02 1.781413890420999874e-02 1.299838423728900128e-01 2.768018245696999835e-01 4.077421426773100155e-01 +5.101438164710999645e-01 2.764958739280700128e-01 1.149750128388399989e-01 4.644215106964000306e-02 2.061717398464999948e-02 2.719559334218999910e-02 4.130383953449999999e-03 +5.831526517867999804e-01 2.053729295730599980e-01 6.846129894256999804e-02 3.794878721237000124e-02 4.317101836204999959e-02 4.713376611470999900e-02 1.475955918430999977e-02 +4.643665626645000072e-02 4.907001554965999962e-02 1.876212097704000117e-02 1.622539013624000118e-02 1.483408063650099862e-01 2.153103798627900023e-01 5.058546066284199672e-01 +1.666899770497999936e-02 7.795239984988999726e-02 3.093838132918000014e-02 1.429391466081000005e-02 1.126484572887399976e-01 2.791135311126700103e-01 4.683843255042999809e-01 +3.692892789840699908e-01 3.289835453033400081e-01 1.801354587078100034e-01 3.817381709814000185e-02 2.964546903967999955e-02 4.514140263199999809e-02 8.631010539829999870e-03 +3.264776170253799736e-01 3.148187398910500256e-01 7.926380634308000106e-02 4.655805975198999691e-02 7.394184172152999668e-02 1.146474853158000046e-01 4.429244622588000141e-02 +1.290839314460799914e-01 2.360562980174999992e-01 6.387479603291000563e-02 3.338428586720999791e-02 1.256337165832500102e-01 2.342791706323600065e-01 1.776877939701100029e-01 +3.945878148078900138e-01 4.491612911224400206e-01 1.238585934042899933e-01 1.586400903761000028e-02 5.769421346490000158e-03 1.020970102399999975e-02 5.491598858500000352e-04 +3.751998394727999731e-02 9.847803413868000399e-02 3.029926866292999982e-02 2.273649908602000044e-02 1.329550892114599869e-01 2.741163969039899784e-01 4.038947522640199961e-01 +3.361515998840299835e-01 3.789079785346999851e-01 1.201512962579699972e-01 3.169128298758999707e-02 4.365935921669000103e-02 7.173224538564999808e-02 1.770626194775000092e-02 +8.426596969366000056e-02 8.425220102071999395e-02 4.510989785194000068e-02 1.920481212436999860e-02 1.583922207355500100e-01 2.246487140655500092e-01 3.841261863708499980e-01 +3.221931457519500164e-01 3.172559142112699737e-01 1.414033025503199925e-01 6.219850853086000136e-02 5.191100761293999943e-02 8.188566565513999418e-02 2.315245568752000160e-02 +6.184026002883900031e-01 1.837785094976399913e-01 6.084762886167000007e-02 4.283497855066999843e-02 3.998047113419000292e-02 4.143307730555999963e-02 1.272271666675999988e-02 +3.889329731464399864e-01 3.509368002414700038e-01 1.040320917963999947e-01 4.210904240608000226e-02 3.952800482511999863e-02 6.094141304492999706e-02 1.351968012749999934e-02 +2.447747439145999959e-01 4.089477062225300164e-01 2.220243513584100048e-01 3.885214403271999850e-02 2.656512707471999843e-02 5.076047778130000215e-02 8.075460791589999729e-03 +2.415309995412799893e-01 1.814048588275899987e-01 9.715960174799000149e-02 6.227907538414000077e-02 1.245835646986999945e-01 1.695752888917899937e-01 1.234666034579299937e-01 +1.577665656804999872e-01 2.504351139068600185e-01 1.261420845985400108e-01 6.351527571678000639e-02 1.055870503187199966e-01 1.895282119512599894e-01 1.070256903767600049e-01 +5.399852395057700427e-01 2.529498934745800232e-01 7.154653221369000615e-02 4.210593923926000265e-02 3.700365871190999800e-02 4.536714404820999663e-02 1.104159746319000046e-02 +3.591549396514899795e-01 2.524674534797700098e-01 7.331436872482000044e-02 4.068867862225000048e-02 9.064856171608000335e-02 1.228397116064999933e-01 6.088628619908999923e-02 +7.845624089241000076e-01 1.482361108064700062e-01 4.295558854938000271e-02 1.397980377077999957e-02 5.121487192809999825e-03 4.755453672260000035e-03 3.891243250100000022e-04 +1.451133191585499971e-01 1.369774788618099981e-01 5.073280632496000170e-02 3.517841920256999794e-02 1.553185582160900025e-01 2.239967286586800055e-01 2.526826858520500041e-01 +3.358109295368200131e-01 1.970187425613399990e-01 7.809141278266999719e-02 4.973707348108000192e-02 1.109077036380800019e-01 1.392309069633499985e-01 8.920323103666000231e-02 +5.195242166519199456e-01 2.331167906522799982e-01 8.208575099706999501e-02 5.189488083123999784e-02 4.464849829674000237e-02 5.350038036704000272e-02 1.522951573133000079e-02 +2.916244231163999875e-02 8.186722546815999868e-02 6.075617671012999849e-02 2.069495618343000082e-02 1.287970393896100130e-01 2.629556059837300230e-01 4.157665371894799788e-01 +5.106462836265599492e-01 2.595998644828800272e-01 8.066616952419000675e-02 3.928940743208000214e-02 4.250444471835999882e-02 5.300517752766999852e-02 1.428865175693999970e-02 +4.520524144172700098e-01 3.944078981876399936e-01 1.186365038156499963e-01 1.684467121959000099e-02 6.707932334389999848e-03 1.069261785596999949e-02 6.579421460600000425e-04 +5.369573235511799769e-01 3.710837960243200118e-01 6.880176067351999325e-02 1.345350686461000041e-02 3.760702908039999844e-03 5.702821072189999917e-03 2.400839875899999981e-04 +3.191439807415000218e-01 4.240587949752799846e-01 1.122010424733199951e-01 3.921531885862000050e-02 3.385876119136999735e-02 6.039184704423000011e-02 1.113023888319999988e-02 +3.688900172710399827e-01 4.719935357570599899e-01 1.009106859564800063e-01 2.634190022944999862e-02 1.068823318927999977e-02 1.966610364616000126e-02 1.509549445470000084e-03 +3.900443911552399778e-01 3.654978573322300028e-01 9.951821714639999539e-02 3.893014043569999888e-02 3.664500638842999730e-02 5.744427815079999888e-02 1.192010845988999979e-02 +4.921796917915299829e-01 2.813383340835600155e-01 8.230783790350000573e-02 3.808090835809999769e-02 4.032029211521000189e-02 5.259545892477000134e-02 1.317745447158999959e-02 +1.920979470014999926e-02 5.765815451740999992e-02 2.484063245355999996e-02 1.340221893042000019e-02 1.211910396814299962e-01 2.534641027450599826e-01 5.102340579032900170e-01 +3.121185302733999953e-02 9.419716149569000441e-02 6.530073285102999670e-02 2.583269961177999882e-02 1.294005513191200107e-01 2.735120058059700154e-01 3.805450201034499824e-01 +8.146709203719999792e-02 5.462190881370999895e-02 3.855882585049000277e-02 2.912729978560999952e-02 1.686202585697199885e-01 2.071153521537799913e-01 4.204892814159399972e-01 +1.061840429902100036e-01 8.933396637439999788e-02 4.488901793957000147e-02 2.891608886421000169e-02 1.659589856862999924e-01 2.240152508020399891e-01 3.407026529312099927e-01 +2.506931424140900200e-01 4.227101504802699972e-01 1.424173265695599933e-01 2.796901203691999974e-02 4.699935019016000110e-02 8.774364739656000112e-02 2.146738022565999882e-02 +5.054406523704499943e-01 3.784356713295000119e-01 8.621949702501000012e-02 1.738927140832000062e-02 4.780524410309999923e-03 7.385792676359999656e-03 3.485587949400000083e-04 +1.591330468654600094e-01 1.620699316263199963e-01 5.445358157157999951e-02 5.254632234572999966e-02 1.469511538743999979e-01 2.221124768257100035e-01 2.027335017919499882e-01 +2.858999669551799960e-01 2.938866317272200157e-01 1.580801010131800133e-01 5.968718230724000262e-02 6.546290963888000414e-02 1.023975014686600016e-01 3.458569571376000212e-02 +2.452120780944800071e-01 4.162119328975700250e-01 1.478529125451999993e-01 5.194279551506000153e-02 4.171105474233999938e-02 8.029188215733000511e-02 1.677734777331000085e-02 +4.223884940147399902e-01 3.077085316181200070e-01 1.004911288618999948e-01 4.451018199324999897e-02 4.507151246070999900e-02 6.377803534268999819e-02 1.605210267007000161e-02 +4.929379820823699965e-01 3.902163803577399781e-01 8.272092789411999991e-02 2.352289669216000093e-02 3.962847404179999609e-03 6.389749702070000349e-03 2.492259664000000090e-04 +6.526200771331800432e-01 2.322395592927899988e-01 5.622030049561999726e-02 3.257596865296000233e-02 1.151790563016999967e-02 1.340700685977999976e-02 1.419158070349999922e-03 +3.931836783886000219e-01 4.458431601524400212e-01 9.966330230235999343e-02 2.729748189449000134e-02 1.175299938767999930e-02 2.057385258377000120e-02 1.685528899539999936e-03 +3.494144082069399748e-01 3.752790391445199880e-01 1.608175337314599884e-01 5.329840257764000000e-02 2.113823406398000065e-02 3.551473468541999773e-02 4.537635482850000367e-03 +4.364208579063399984e-01 2.159609943628300055e-01 1.110166758298899992e-01 6.237118318676999895e-02 6.529437005520000170e-02 7.899485528468999651e-02 2.994105592369999957e-02 +6.007776260375999877e-01 2.418611049652099887e-01 8.421093225478999689e-02 2.425701357424000018e-02 2.080325968564000066e-02 2.406097762286999939e-02 4.029108211399999931e-03 +5.891888737678500076e-01 1.577868014574100031e-01 6.910130381583999559e-02 6.538064032793000635e-02 5.055821314454000265e-02 5.006747320293999937e-02 1.791666634380999906e-02 +6.611995697021499918e-01 2.197786122560499988e-01 5.903111770748999815e-02 2.969290502368999995e-02 1.341700740159000073e-02 1.502954401075999938e-02 1.851261244160000040e-03 +4.066946357488999964e-02 1.048722788691500013e-01 6.628386676311000258e-02 3.242466598748999784e-02 1.345209926366799924e-01 2.718835771083800146e-01 3.493451476097100272e-01 +4.309161901474000134e-01 3.379569649696400058e-01 8.788688480853999729e-02 4.329920932650999782e-02 3.611934930085999862e-02 5.321652814746000160e-02 1.060488075018000027e-02 +6.626947969197999333e-02 1.331275403499599941e-01 6.163687258958999715e-02 2.989654242992000055e-02 1.434423178434399981e-01 2.661282718181600115e-01 2.994989752769500191e-01 +1.607891172170599903e-01 1.278064548969299885e-01 4.709964245558000140e-02 4.150896891952000206e-02 1.611765623092699939e-01 2.186717987060499968e-01 2.429474443197300049e-01 +3.221481144428299803e-01 4.536592662334399950e-01 1.408235728740699910e-01 3.263439983130000249e-02 1.670084707438999894e-02 3.088294155896000037e-02 3.150871256369999849e-03 +4.216101765632599974e-01 4.193944036960600141e-01 1.189987808465999969e-01 2.336604148149000124e-02 5.979845300319999897e-03 1.014016196131999926e-02 5.105857271700000276e-04 +3.268148601055099745e-01 4.694082736969000247e-01 1.319802701473200002e-01 2.025630138814000017e-02 1.701308600605000096e-02 3.116355463862000019e-02 3.363647265360000024e-03 +2.213988453149799973e-01 3.204079866409300092e-01 1.790657639503500098e-01 4.215797781944000122e-02 7.080071419477000638e-02 1.224334985017799943e-01 4.373520985246000248e-02 +8.214078843593999868e-02 6.525116413831999473e-02 3.941886499523999943e-02 2.244516462088000028e-02 1.679414361715300119e-01 2.175676673650699944e-01 4.052349030971499899e-01 +9.732612967491000022e-02 1.879573613405199906e-01 6.335786730051000404e-02 3.453309088945000216e-02 1.375941336154899997e-01 2.567625641822799953e-01 2.224688678979900025e-01 +1.477123498916599886e-01 2.944371700286900206e-01 1.199401095509499970e-01 3.643815219402000288e-02 1.026421710848799962e-01 1.961077600717499869e-01 1.027222871780399949e-01 +4.079748690128299771e-01 3.128045797348000256e-01 1.034097522497200022e-01 4.524419084190999668e-02 4.671723023056999907e-02 6.705993413925000202e-02 1.678944192827000123e-02 +3.498511314392099836e-01 1.765820086002299893e-01 7.159785926341999396e-02 4.798599332570999826e-02 1.188316568732299960e-01 1.399170905351599936e-01 9.523427486419999699e-02 +5.587135553359999784e-01 2.076566815376300057e-01 7.249821722506999411e-02 4.001346975564999686e-02 4.945578798651999869e-02 5.432508513330999711e-02 1.733719743788000173e-02 +9.457509219646000054e-02 1.560281664133099933e-01 1.222852095961600022e-01 3.875134140252999709e-02 1.373675465583799882e-01 2.363634258508700015e-01 2.146292179822900104e-01 +3.905885219574000145e-01 2.212433964014099974e-01 1.226046681404100031e-01 6.746151298284999709e-02 7.226622104645000211e-02 9.090976417064999815e-02 3.492593392729999996e-02 +3.539921939373000259e-01 1.723001599311800025e-01 1.326014846563300098e-01 4.718617349863000326e-02 1.038096994161600006e-01 1.186098009347899968e-01 7.150050997734000435e-02 +4.876846075058000052e-02 1.261741518974300036e-01 6.231823191046999971e-02 2.357140742242000084e-02 1.384567916393300013e-01 2.773666977882400242e-01 3.233442306518600207e-01 +5.159212946891800211e-01 2.552711963653599980e-01 7.605224102735999581e-02 4.462160170078000032e-02 4.255991429090000278e-02 5.250448361039000006e-02 1.306925155221999937e-02 +1.997223943471899965e-01 3.156272172927899744e-01 1.068257018923799984e-01 5.851017311215000322e-02 8.985376358032000355e-02 1.627541780471800092e-01 6.670657545328000093e-02 +3.196945786476099727e-01 3.004199266433700277e-01 2.162073552608499982e-01 4.010020568967000154e-02 4.318762198091000148e-02 6.475105881690999821e-02 1.563925482332999967e-02 +7.056157588958700266e-01 1.692301183939000087e-01 3.598260879516999855e-02 2.899017557502000034e-02 2.750798501074000132e-02 2.656416781247000064e-02 6.109165493400000278e-03 +3.782887160778000135e-01 3.633987009525300182e-01 1.010419726371799970e-01 3.943300247191999786e-02 4.078491404653000058e-02 6.369480490685000551e-02 1.335790287703000033e-02 +3.437479436397600230e-01 2.278856337070500060e-01 1.385117918252899982e-01 6.163392961025000033e-02 7.971699535847000251e-02 1.048753559589400003e-01 4.362835735082999655e-02 +2.880791723728199916e-01 2.021468877792400032e-01 8.329085260629999488e-02 5.076858028768999748e-02 1.191986426711099945e-01 1.576675921678500070e-01 9.884827584027999769e-02 +2.361104637384399962e-01 2.429756671190299866e-01 9.241971373558000025e-02 4.064169898628999800e-02 1.153899058699599939e-01 1.736647188663499874e-01 9.879783540964000299e-02 +3.983498513698600085e-01 4.338321387767800075e-01 1.297982931137099949e-01 1.720480807125999989e-02 7.433735765520000163e-03 1.264938153327000055e-02 7.317950366999999550e-04 +4.209589660167700198e-01 1.914900243282300074e-01 1.128025874495500042e-01 6.738027185202000169e-02 7.838274538516999679e-02 9.042944759130000509e-02 3.855595737695999975e-02 +1.208243221044500021e-01 1.001230552792500006e-01 4.412716999650000138e-02 3.331464901567000175e-02 1.702806353568999953e-01 2.290412038564700048e-01 3.022889494895900087e-01 +6.108263041819999781e-03 3.009550832212000079e-02 1.960801891983000173e-02 6.961690727620000255e-03 9.720803052187000637e-02 2.320648282766299975e-01 6.079536676406900320e-01 +1.869038194418000121e-01 1.007459163665799934e-01 3.968984633684000118e-02 4.836776480078999740e-02 1.728711277246499922e-01 2.033086270093900083e-01 2.481128871440899941e-01 +3.189063444733999941e-02 1.159317567944500027e-01 3.080904670060000128e-02 2.013906836509999840e-02 1.314663290977499954e-01 3.007558286190000207e-01 3.690073490142800061e-01 +5.148594081401999811e-02 1.606224775314299968e-01 6.863345205783999425e-02 2.853474393486999869e-02 1.324395686387999926e-01 2.872118353843700067e-01 2.710719704628000160e-01 +2.515464723110200085e-01 1.748054623603799984e-01 8.497503399849000438e-02 4.490454494953000086e-02 1.361373513937000068e-01 1.759849041700400074e-01 1.316462308168399875e-01 +3.334131538867999844e-01 3.770525157451600218e-01 1.142421662807499988e-01 4.343149065970999811e-02 4.401098191738000293e-02 7.247693836688999525e-02 1.537273265421000047e-02 +2.651371955871599795e-01 3.544941544532799749e-01 1.492707133293199873e-01 4.874787852167999924e-02 5.744114518165999855e-02 9.853363782167000318e-02 2.637526392937000058e-02 +2.877986431121800082e-01 2.766937613487199799e-01 1.532851755618999945e-01 7.192429900169000634e-02 6.953079998493000291e-02 1.057859510183299934e-01 3.498137369752000320e-02 +2.594522237777699969e-01 4.378940463066099964e-01 1.295078992843599897e-01 4.337025806308000137e-02 3.975392878055999946e-02 7.589066028594999846e-02 1.413096860051000006e-02 +5.060639381408700288e-01 3.154241144657100038e-01 1.000937148928599946e-01 2.464901097118999893e-02 2.122507058083999976e-02 2.855800837278000062e-02 3.986126277599999837e-03 +3.035811707377000096e-02 9.836106002331000686e-02 6.024924665689000008e-02 1.865903474391000100e-02 1.321825087070500060e-01 2.816135883331299938e-01 3.785764575004599841e-01 +1.092886030674000003e-01 9.548008441925000256e-02 9.145376831293000608e-02 3.061533719300999976e-02 1.639932990074199903e-01 2.189071923494300131e-01 2.902617156505600260e-01 +4.463801681995400172e-01 4.001385271549199873e-01 9.170806407928000503e-02 2.243551611899999992e-02 1.446826942265000068e-02 2.270595915615999938e-02 2.163476077840000185e-03 +6.454045176506000292e-01 2.839953005313899936e-01 5.515010282397000280e-02 1.181082427502000085e-02 1.549854408949999981e-03 2.044207416470000122e-03 4.520090805999999698e-05 +6.308241486549399646e-01 2.040867805481000052e-01 1.018647700548200030e-01 3.941041976213000009e-02 1.080343127250999943e-02 1.188334170728999953e-02 1.127116614950000048e-03 +3.046638704836000106e-02 3.493713960052000078e-02 1.636819541454000160e-02 1.761436648666999880e-02 1.476616412401199896e-01 2.162653356790500137e-01 5.366869568824800263e-01 +2.747749686241099942e-01 1.670790761709199934e-01 7.797102630138000312e-02 4.241726547480000054e-02 1.386488974094400028e-01 1.701921075582500109e-01 1.289166659116700031e-01 +4.306874275207500102e-01 4.253840744495400172e-01 1.107409074902500068e-01 1.456086523830999943e-02 6.818803958589999929e-03 1.119928620755999971e-02 6.086493376599999561e-04 +4.981622397899599930e-01 3.199950456619299888e-01 1.002398207783700007e-01 2.946803718805000166e-02 2.048049867153000150e-02 2.803943119943000037e-02 3.614946035669999898e-03 +4.115125536919000265e-02 1.067657172679900013e-01 6.127357110381000116e-02 2.913557365536999927e-02 1.405786871910099933e-01 2.810550332069399748e-01 3.400401771068600199e-01 +6.382761150599000621e-02 5.854573473334000189e-02 3.628679737448999715e-02 1.647131890059000056e-02 1.672943234443700078e-01 2.232850641012200099e-01 4.342891573905899860e-01 +5.750831961631800437e-01 1.986791938543299996e-01 6.498134881257999762e-02 5.263208225369000320e-02 4.567870125174999796e-02 4.933274909853999773e-02 1.361273322254000044e-02 +1.818220913410200090e-01 1.520857363939299989e-01 4.609492048621000038e-02 4.587609320878999891e-02 1.574326157569899964e-01 2.185282111167899943e-01 1.981603354215600021e-01 +2.949121296405800008e-01 3.822519779205300061e-01 1.259290277957899884e-01 4.697735980152999841e-02 4.863364249468000305e-02 8.329349756241000158e-02 1.800235547124999849e-02 +4.905948340892800075e-01 2.312507331371299879e-01 8.467080444098000480e-02 5.324295163155000343e-02 5.533482506871000017e-02 6.580602377652999824e-02 1.909981109202000052e-02 +4.853018820285799895e-01 2.944504618644699923e-01 1.457233577966700055e-01 4.655477777123000205e-02 1.123619079590000049e-02 1.550932880491000081e-02 1.223991159350000003e-03 +2.224270552396800105e-01 1.568423658609399973e-01 8.540564030408999419e-02 4.630585759877999669e-02 1.473764330148699953e-01 1.892887502908700004e-01 1.523538827896100123e-01 +5.688523054122900380e-01 1.762846261262900061e-01 6.894858926534999655e-02 5.005903169512999906e-02 5.744377896189999805e-02 5.844156071544000242e-02 1.997007988393000033e-02 +9.026412852109999899e-03 3.564789518713999683e-02 1.967089623212999946e-02 8.628561161459999754e-03 1.099111065268500026e-01 2.436858564615199951e-01 5.734292864799499512e-01 +3.317747116088899939e-01 2.746927142143200107e-01 1.323633342981299921e-01 6.255746632813999342e-02 6.877281516790000049e-02 9.869184345006999648e-02 3.114710748195999995e-02 +1.384172141552000024e-01 1.352799981832500109e-01 1.020337119698500050e-01 5.472419038415000242e-02 1.524989157915100091e-01 2.184780091047300032e-01 1.985679566860200085e-01 +9.675845503806999870e-02 9.635847061871999353e-02 4.522533714771000135e-02 3.284648805857000309e-02 1.699438393116000090e-01 2.420682013034800018e-01 3.167991936206799863e-01 +2.991698123514999891e-02 8.177269250153999802e-02 5.321659892797000330e-02 1.762328296899999883e-02 1.385743618011499867e-01 2.745807468891099945e-01 4.043153524398799825e-01 +3.637174665927899730e-01 3.514380455017099836e-01 1.600919365882899903e-01 4.601197689771999860e-02 2.817254886030999897e-02 4.408548772334999755e-02 6.482523400340000318e-03 +7.037776708602899722e-01 2.117296010255799998e-01 6.754726171493999343e-02 1.048025581986000015e-02 3.026326186949999941e-03 3.302061464639999885e-03 1.367895456499999905e-04 +6.095357537269600057e-01 3.030140399932900186e-01 6.825982034206000415e-02 1.466114632785000052e-02 1.887632068250000034e-03 2.580732572819999845e-03 6.085365385000000328e-05 +4.291112422943100246e-01 2.244531959295300028e-01 1.047839745879200063e-01 5.637350678444000285e-02 7.014509290456999446e-02 8.513321727514000514e-02 2.999977394937999864e-02 +3.627644106746000241e-02 1.054746806621599947e-01 5.926176905632000308e-02 2.239150553942000077e-02 1.388792991638199970e-01 2.856767773628199891e-01 3.520395159721400047e-01 +3.814752399921400028e-01 3.872491717338599759e-01 1.725295484066000085e-01 2.597312815487000034e-02 1.195340696722000003e-02 1.933039724827000094e-02 1.489127636889999969e-03 +4.930322766304000015e-01 2.265195399522799968e-01 8.338548243045999786e-02 5.290739238262000266e-02 5.725510045886000182e-02 6.716702133417000453e-02 1.973316632210999830e-02 +4.067572951316800189e-01 2.045011967420599930e-01 1.101491525769199981e-01 9.106522053479999823e-02 7.137429714203000208e-02 8.633969724178000571e-02 2.981314063071999892e-02 +2.433142960071600081e-01 3.432835340499900134e-01 1.499693095684100086e-01 2.752595767378999969e-02 7.314558327197999421e-02 1.225516796112099960e-01 4.020966216921999931e-02 +6.077772974967999842e-01 2.716933190822600208e-01 9.806030243634999977e-02 1.395855657756000026e-02 3.697033040230000064e-03 4.627526272089999698e-03 1.859475742099999968e-04 +2.972011566162099938e-01 3.486629128456100180e-01 1.299581229686699868e-01 3.531963750719999823e-02 6.200395897030999692e-02 9.954869747161999849e-02 2.730548568070000071e-02 +1.287452727556200049e-01 8.995793759822999502e-02 4.011521860956999974e-02 3.864358365535999762e-02 1.793142110109300080e-01 2.259676158428199910e-01 2.972561717033400108e-01 +2.498067021369899943e-01 3.993605375289899784e-01 1.396852135658299965e-01 4.970749840139999931e-02 5.000392720103000177e-02 9.194126725196999361e-02 1.949485577642999859e-02 +2.506505846977200025e-01 3.616549968719500185e-01 1.482505798339799896e-01 5.676957592368000322e-02 5.728800967336000055e-02 1.009220257401499954e-01 2.446424588561000105e-02 +2.587596178054800133e-01 3.359569609165199977e-01 1.486615389585499991e-01 4.103334248065999834e-02 6.840646266937000508e-02 1.133591607213000063e-01 3.382292762399000119e-02 +1.438351720571499903e-01 3.629957437515299867e-01 1.102036163210900060e-01 3.482164442538999982e-02 8.984414488076999938e-02 1.870343089103700118e-01 7.126539200544000641e-02 +2.165471911430399965e-01 3.406764566898299873e-01 1.669896990060799891e-01 4.471570998430000193e-02 6.985701620579000404e-02 1.238057389855399953e-01 3.740819171070999816e-02 +4.537708163261400252e-01 2.372914999723400031e-01 9.413259476422999872e-02 4.847730696200999723e-02 6.396805495023999422e-02 7.772409170866000083e-02 2.463562600314999837e-02 +3.569498062133800165e-01 1.721719205379499962e-01 6.346698850392999691e-02 4.199894145131000123e-02 1.268760263919800069e-01 1.444130241870900111e-01 9.412328153849000567e-02 +5.113346576690700473e-01 2.084622681140899936e-01 8.027487248181999768e-02 5.343800410628000291e-02 5.925481393932999913e-02 6.643196195363999801e-02 2.080341428518000038e-02 +1.698005013168000024e-02 2.477002330124000035e-02 1.527156122028999925e-02 1.644852198660000028e-02 1.332948803901700119e-01 2.096520066261300108e-01 5.835829377174399646e-01 +3.604584634304000001e-01 3.364050388336199959e-01 1.701877564191799919e-01 2.876099757850000133e-02 3.754044324159999668e-02 5.587318167090000315e-02 1.077412627636999999e-02 +6.986268609762000259e-02 1.518292427062999939e-01 5.968596041202999664e-02 3.268987685441999969e-02 1.467884778976399907e-01 2.789063155651099746e-01 2.602374255657199931e-01 +2.248386293649700107e-01 3.780319094657900170e-01 1.564853638410599879e-01 5.738003551959999782e-02 5.557049438357000021e-02 1.035173386335399986e-01 2.417621202767000071e-02 +4.940660893917099838e-01 2.145144492387799917e-01 8.438882976769999933e-02 3.792826086283000026e-02 6.704978644848000324e-02 7.535800337791000170e-02 2.669459022581999880e-02 +5.992093309760000014e-02 7.563456147909000671e-02 4.250790178775999684e-02 2.063796296716000067e-02 1.645317673683200088e-01 2.481440007686600002e-01 3.886228799819900215e-01 +9.329681098460999855e-02 9.171338379382999728e-02 4.196109250188000128e-02 2.512920461595000154e-02 1.728337258100499929e-01 2.418011277914000057e-01 3.332646489143399893e-01 +6.807489693165000300e-02 4.926368221640999717e-02 3.261226043104999833e-02 1.955458149313999902e-02 1.757952868938399971e-01 2.150161564350099863e-01 4.396831393241900088e-01 +4.232773184776300046e-01 4.054853916168200123e-01 9.588061273098000270e-02 3.386756405234000317e-02 1.509457640349999921e-02 2.433853410184000018e-02 2.055985853080000061e-03 +5.236756205558800170e-01 2.702094316482500092e-01 1.027824729681000027e-01 4.107921943068999771e-02 2.554878219962000013e-02 3.200214356184000186e-02 4.702355246989999710e-03 +5.930602550506599568e-01 1.870348751545000132e-01 5.959594994782999727e-02 4.072816669940999834e-02 5.139018222689999832e-02 5.254279822111000003e-02 1.564778201282000097e-02 +5.679035782814000344e-01 2.593126893043499748e-01 8.556654304265999544e-02 3.415287286042999887e-02 2.239127457142000080e-02 2.694045938550999886e-02 3.732581855729999887e-03 +2.793481945991500015e-01 4.074060320854199779e-01 1.865331232547799978e-01 3.244148194790000272e-02 3.107441030442999880e-02 5.498475581408000107e-02 8.212018758059999937e-03 +2.688964642583999837e-02 7.690427452325999946e-02 5.865498259664000263e-02 3.532069548965000028e-02 1.386194974183999895e-01 2.839596867561299809e-01 3.796512186527299937e-01 +1.273914873599999997e-01 7.024300843476999345e-02 3.506983444094999985e-02 3.738394379616000185e-02 1.877901107072799947e-01 2.152767926454499936e-01 3.268448114395099968e-01 +5.448846220970200438e-01 2.737514674663499847e-01 1.259685605764399863e-01 2.362821623683000055e-02 1.344633568078000031e-02 1.671118475497000017e-02 1.609627157450000063e-03 +7.128551602363599748e-01 1.692364513874100029e-01 6.993965059519000049e-02 2.821851521730000048e-02 9.561780840159999489e-03 9.331396780910000341e-03 8.570524514700000223e-04 +3.297947645187400134e-01 2.497050762176500072e-01 1.321214586496400056e-01 6.574906408786999890e-02 7.818628847599000398e-02 1.073739007115400018e-01 3.706945478916000292e-02 +1.953630149364500024e-01 2.318808883428599976e-01 1.851891577243799936e-01 6.150138005613999675e-02 9.955388307571000350e-02 1.559649854898499943e-01 7.054667919873999771e-02 +1.642994433641400132e-01 3.162844479083999905e-01 1.966581940650899973e-01 7.719440758227999466e-02 7.035748660563999335e-02 1.353807002306000040e-01 3.982533141971000140e-02 +6.994896382092999354e-02 1.782421469688399984e-01 1.354581117629999887e-01 5.455970019102000107e-02 1.269177049398400037e-01 2.563260495662699756e-01 1.785473227500899984e-01 +1.395111829042399998e-01 1.073572561144800069e-01 9.001219272614000011e-02 5.334692820906999922e-02 1.668696850538300136e-01 2.164660692214999960e-01 2.264366894960400112e-01 +5.525463223457299788e-01 2.773769199848200029e-01 1.140799522399899985e-01 3.035824745892999957e-02 1.080742105842000082e-02 1.374798081815000080e-02 1.083141192790000032e-03 +3.688317909837000169e-02 1.047256290912600002e-01 5.380385741590999749e-02 1.652843691408999865e-02 1.428093761205699863e-01 2.868254482746099843e-01 3.584240972995800245e-01 +1.979740560054799869e-01 3.779631555080399941e-01 1.672597080469100106e-01 4.970000684261000057e-02 6.086492538451999945e-02 1.168844029307399973e-01 2.935373969376000106e-02 +2.228066921234100051e-01 1.551188975572599937e-01 1.597753763198900001e-01 4.562090709805000088e-02 1.327838152647000114e-01 1.662745624780699871e-01 1.176197379827499945e-01 +4.124326705932599979e-01 3.072819411754599828e-01 9.354203939437999438e-02 5.896223336458000092e-02 4.700012505053999950e-02 6.664232909679000671e-02 1.413865387439999961e-02 +3.876750469207799754e-01 4.086292982101399907e-01 1.163973659277000028e-01 3.473358973861000176e-02 1.873159036040000086e-02 3.078441880643000006e-02 3.048675367609999989e-03 +8.132519200439999180e-03 2.247635275126000018e-02 1.741704717278000011e-02 1.645598560572000130e-02 1.130683571100200013e-01 2.222813218831999893e-01 6.001684069633500540e-01 +4.936845600604999884e-01 2.441848218441000085e-01 7.964976131916000346e-02 3.957398980856000059e-02 5.645376816391999703e-02 6.736062467098000162e-02 1.909247972071000110e-02 +3.847635388374299747e-01 1.864100992679600111e-01 1.168247833847999989e-01 8.411248028277999722e-02 8.590737730264999539e-02 1.005925983190500000e-01 4.138912260532000287e-02 +3.531202077865600031e-01 3.577329218387599874e-01 1.053116694092799954e-01 4.103687405585999814e-02 4.934609681367999739e-02 7.686028629541000190e-02 1.659195311367999900e-02 +3.716021180152899728e-01 3.224276900291400128e-01 1.675966680049900126e-01 2.915643528104000168e-02 3.998727351426999838e-02 5.765821039677000021e-02 1.157161127775999977e-02 +6.166146323084999853e-02 5.582894012332000055e-02 3.879816085099999784e-02 3.220061212777999837e-02 1.726811230182599965e-01 2.326139509677900008e-01 4.062157571315799798e-01 +1.409840881824500070e-01 1.032773330807700007e-01 8.206236362457000610e-02 3.328700736165000201e-02 1.728108078241299972e-01 2.161877453327200049e-01 2.513906359672499757e-01 +2.041849344968799940e-01 1.205760464072200000e-01 8.369252830744000615e-02 7.463411986828000222e-02 1.581767797470099990e-01 1.911046653985999932e-01 1.676309406757399978e-01 +1.568871736526500082e-01 1.580976098775900007e-01 9.446769952774000667e-02 3.899887204170000149e-02 1.524747014045700066e-01 2.185970395803500110e-01 1.804769039154099919e-01 +2.675115689634999933e-02 8.653994649648999449e-02 5.414355173707000035e-02 1.686003617942000155e-02 1.367830783128700101e-01 2.863579690456399818e-01 3.925642669200899992e-01 +5.189719423651999869e-02 1.234686374664299979e-01 5.696070566772999666e-02 2.620706893504000032e-02 1.481685489416099955e-01 2.854953110217999801e-01 3.078025281429300208e-01 +7.028800249099700359e-01 1.843607872724500052e-01 8.288845419884000032e-02 2.146760746836999870e-02 4.024936817589999834e-03 4.178891889749999922e-03 1.992625184399999866e-04 +4.698019921779599817e-01 3.475832641124699807e-01 1.282982677221299883e-01 2.951698377728000089e-02 9.655104950069999525e-03 1.421107631177000001e-02 9.332950576200000270e-04 +3.843903914093999702e-02 6.336287409066999887e-02 4.169737547636000186e-02 1.611815579235999912e-02 1.546042263507799996e-01 2.522940039634700149e-01 4.334843158721899958e-01 +1.697109341621400036e-01 2.521353065967599782e-01 1.976890712976500097e-01 6.106614321469999718e-02 9.350998699665000191e-02 1.591751724481600128e-01 6.671337783337000227e-02 +2.426379770040499873e-01 2.062615901231799886e-01 8.323305100203000351e-02 4.757599905132999657e-02 1.311896145343799946e-01 1.818265467882199948e-01 1.072752252221099989e-01 +3.574332594871999780e-02 5.110694095492000072e-02 4.307872429489999905e-02 3.281325846909999983e-02 1.572403758764299997e-01 2.479182183742499879e-01 4.320991635322600222e-01 +4.582651257515000243e-01 2.769555151462599896e-01 1.313964724540699902e-01 5.312268808483999738e-02 3.177202865480999866e-02 4.170376807450999757e-02 6.784403696660000135e-03 +1.561526805162400111e-01 3.294740915298500217e-01 1.923564225435299979e-01 4.086238890886000064e-02 7.876247167586999942e-02 1.518170982599300056e-01 5.057483911513999814e-02 +5.121042728424100021e-01 2.289533168077499958e-01 7.525552809237999463e-02 3.861636295914999684e-02 5.847459658979999725e-02 6.694244593381999675e-02 1.965347677468999923e-02 +2.053364366293000121e-01 2.665808796882599974e-01 1.787404716014900086e-01 8.057931810617000035e-02 8.327473700047000049e-02 1.377641558647199893e-01 4.772398248314999730e-02 +2.044093608855999944e-02 6.413479149341999586e-02 5.187410488724999991e-02 2.110981568693999846e-02 1.349331140518200134e-01 2.786542475223500182e-01 4.288530051708199786e-01 +4.267575442791000095e-01 2.870607674121899988e-01 9.216405451298000095e-02 5.025315657257999752e-02 5.386688187718000065e-02 7.241602241993000399e-02 1.748155616224000147e-02 +3.226378262042999823e-01 3.748206198215500162e-01 1.727696806192400014e-01 3.222629800439000269e-02 3.386329114436999882e-02 5.488507077098000314e-02 8.797229267660000226e-03 +3.346705734729800152e-01 4.104489684104900005e-01 1.471616923809100086e-01 3.690566867589999828e-02 2.441231533885000055e-02 4.151194542646000074e-02 4.888822790240000306e-03 +3.330706954002399800e-01 4.170324206352200025e-01 1.450403779745099986e-01 3.585453331470000310e-02 2.369632571935999937e-02 4.064195975661000215e-02 4.663671366869999967e-03 +4.052968323231000147e-02 1.126603260636299952e-01 6.044656038283999916e-02 3.340578451752999889e-02 1.440224498510400131e-01 2.941151261329699729e-01 3.148200809955600254e-01 +3.893015384674100021e-01 2.264905720949199897e-01 1.122502088546799975e-01 5.940372124314000080e-02 7.906104624271000081e-02 9.837620705366000029e-02 3.511671349406000203e-02 +1.163286715745899952e-01 1.737878769636199972e-01 1.167035624384900050e-01 7.802747935057000039e-02 1.352080702781700006e-01 2.289774864912000052e-01 1.509668529033700024e-01 +6.760407686233500524e-01 2.234485447406799885e-01 7.822687923908000496e-02 1.461692061275000031e-02 3.534867428240000015e-03 3.971616737540000289e-03 1.604101853400000111e-04 +3.680803775787400145e-01 2.869903445243799922e-01 1.121805533766700030e-01 5.101602151989999973e-02 6.517827510833999749e-02 9.100224077702000203e-02 2.555219084024000151e-02 +1.131564527749999993e-01 8.844599872828000364e-02 3.845149651169999655e-02 2.941132709383999927e-02 1.818031519651399919e-01 2.346419245004700005e-01 3.140896558761600010e-01 +2.048441022634500119e-01 2.249024063348800118e-01 9.280338138341999443e-02 4.941435530781999874e-02 1.270870566368099974e-01 1.933431327343000106e-01 1.076055690646200019e-01 +3.640109002590199982e-01 1.863432675600099897e-01 1.213767975568799951e-01 8.683305978774999434e-02 8.998883515595999805e-02 1.069541350007099934e-01 4.449301958084000280e-02 +7.599975913763000468e-02 7.962241023779000060e-02 4.042255133389999894e-02 2.441161125898000037e-02 1.742720901966099967e-01 2.467259466648099864e-01 3.585456311702699961e-01 +8.869094401598000277e-02 1.713451892137499988e-01 1.251737773418399868e-01 6.553637981415000313e-02 1.337738186120999984e-01 2.458273023366900067e-01 1.696525961160700036e-01 +1.689619272947300022e-01 1.753945350647000134e-01 9.778054058552000660e-02 5.739329382777000332e-02 1.432536840438800030e-01 2.114249318838100078e-01 1.457910984754600126e-01 +5.820419788360600144e-01 2.768675386905700142e-01 9.478162974119000439e-02 2.440064586698999921e-02 9.369471110400000649e-03 1.170769147574999940e-02 8.310666889900000234e-04 +1.287212669849399915e-01 1.002560779452300044e-01 4.034942388534999702e-02 3.658924996852999656e-02 1.795888692140600040e-01 2.343884408473999870e-01 2.801066935062400121e-01 +2.198027074337000064e-01 2.743144631385799892e-01 9.175955504178999467e-02 5.373055487871000041e-02 1.081424653530100033e-01 1.753628849983200066e-01 7.688736915588000043e-02 +1.773936748504600092e-01 3.515855669975300191e-01 1.794691979885099931e-01 4.530863463879000047e-02 7.101306319236999620e-02 1.357019841670999982e-01 3.952785208820999707e-02 +3.849172294139899808e-01 4.001289904117599772e-01 1.609777063131299923e-01 1.935578882694000136e-02 1.271233055740999922e-02 2.035046741365999917e-02 1.557470066469999895e-03 +6.499661803245500025e-01 2.119212597608599868e-01 8.720465749502000208e-02 2.641539834440000123e-02 1.127032004296999942e-02 1.213735900818999937e-02 1.084806979629999958e-03 +2.406258285045599910e-01 1.743827462196400058e-01 7.957585155964000401e-02 4.930999875068999699e-02 1.440623849630399966e-01 1.867989152669899955e-01 1.252442747354499952e-01 +1.788257807492999937e-02 2.440320886672000048e-02 2.956883236765999942e-02 1.424205861986000028e-02 1.404771953821200015e-01 2.079896777868300017e-01 5.654364228248599522e-01 +4.452459812164299979e-01 3.365270495414700025e-01 1.535811126232100032e-01 3.072640486062000117e-02 1.323475316167000045e-02 1.914879120886000055e-02 1.535889110530000001e-03 +4.131388366222399910e-01 1.981171369552600092e-01 1.049233451485599988e-01 5.989278852939999842e-02 8.591351658106000100e-02 9.896450489758999713e-02 3.904988616704999776e-02 +1.457959711551700122e-01 1.329430341720599928e-01 9.706131368876000365e-02 7.696884125470999927e-02 1.550077199935900041e-01 2.175196707248699957e-01 1.747034639120099986e-01 +3.170066475868200118e-01 1.835283637046800087e-01 6.826553493737999578e-02 5.179853737354000315e-02 1.296733468770999986e-01 1.574301868677099869e-01 9.229739755391999645e-02 +7.265781760215800356e-01 1.657953411340699901e-01 6.322909146546999704e-02 2.525847963988999897e-02 9.377148002389999737e-03 8.969503454860000558e-03 7.922668009999999641e-04 +6.622999906540000259e-03 2.630329877138000080e-02 1.745888032018999905e-02 9.705561213200000759e-03 1.081910207867600032e-01 2.374343574047100003e-01 5.942838788032499542e-01 +3.042806126177000081e-02 5.079452320932999893e-02 4.413671419023999787e-02 3.234685212373999974e-02 1.534483134746600086e-01 2.548011541366599908e-01 4.340443611145000102e-01 +1.998146623373000044e-02 5.136463418603000319e-02 4.786307737230999920e-02 2.596426382661000051e-02 1.389578431844699924e-01 2.670722603797899830e-01 4.487964808940900219e-01 +3.042806126177000081e-02 5.079452320932999893e-02 4.413671419023999787e-02 3.234685212373999974e-02 1.534483134746600086e-01 2.548011541366599908e-01 4.340443611145000102e-01 +3.494245186448000084e-02 4.433306306601000196e-02 3.939948976040000272e-02 3.154738247395000306e-02 1.601652652025200019e-01 2.402970641851399913e-01 4.493152797222100259e-01 +5.188872218132000169e-01 3.475283980369600068e-01 9.385990351438999735e-02 2.045669034122999871e-02 7.706087548289999693e-03 1.095753908156999953e-02 6.041598389900000327e-04 +2.806787490844699917e-01 3.838524520397200157e-01 1.927659213542899930e-01 3.502471745013999854e-02 3.606000542640999673e-02 6.162873655558000208e-02 9.989413432780000143e-03 +4.902545511722600224e-01 3.284925222396899991e-01 1.247576847672499933e-01 2.978691458701999972e-02 1.066805329174000047e-02 1.500468142331000052e-02 1.035592402329999938e-03 +2.612046301364899792e-01 1.351774334907500097e-01 1.399651169776900128e-01 5.287906527518999866e-02 1.395968496799500080e-01 1.570369899272900105e-01 1.141399219632100032e-01 +3.609529137610999888e-02 4.583773016929999777e-02 3.431472182274000055e-02 1.484536193311000035e-02 1.601962000131600117e-01 2.346433550119400024e-01 4.740673303604099886e-01 +3.124901652335999869e-02 9.892019629477999398e-02 5.785806849598999768e-02 2.602454833685999974e-02 1.413630694150899980e-01 2.977375388145400148e-01 3.468475341796899980e-01 +5.410683751106299955e-01 3.020261526107799743e-01 1.276912838220599922e-01 1.772954314946999926e-02 4.803745541720000345e-03 6.411486305299999786e-03 2.694157883499999806e-04 +4.705008268356299928e-01 2.104005366563800050e-01 1.428014487028100021e-01 6.955564767121999448e-02 4.416347295045999766e-02 5.109373107553000226e-02 1.148433331400000069e-02 +1.328131407499300032e-01 2.219921499490699890e-01 2.087694555520999973e-01 5.403615161776999937e-02 1.067426651716199965e-01 1.852324753999700091e-01 9.041395783423999966e-02 +5.377235263585999903e-02 6.121181324123999706e-02 3.893731907010000021e-02 2.435926534235000052e-02 1.704033017158499974e-01 2.458980828523600060e-01 4.054178595542899943e-01 +4.981871843337999928e-01 2.938256263732900164e-01 1.063108593225499943e-01 3.329911828041000332e-02 2.753473259509000085e-02 3.563266620040000249e-02 5.209833383560000253e-03 +2.887765765190100087e-01 2.841426432132699853e-01 2.231495678424799955e-01 6.100513786076999789e-02 5.022149905561999750e-02 7.571655511855999998e-02 1.698799617588999875e-02 +3.766939789056999999e-02 7.412181049584999626e-02 5.008662864565999878e-02 3.266131132840999901e-02 1.540921777486800037e-01 2.740174531936599989e-01 3.773512244224500045e-01 +2.778087556362199839e-01 3.344073295593300021e-01 1.362490952014900059e-01 5.497685447334999670e-02 6.456458568572999435e-02 1.051535755395899968e-01 2.683981880545999871e-02 +3.888593241571999815e-02 6.594544649123999791e-02 4.268077760934999715e-02 1.968242041766999836e-02 1.578979641199100004e-01 2.609899640083300221e-01 4.139175117015799765e-01 +3.658013045787800177e-01 3.763604164123500184e-01 1.445439308881799889e-01 3.219032287597999725e-02 2.911740727723000077e-02 4.567236825823999674e-02 6.314245983959999864e-03 +1.468635052442600064e-01 2.971077263355300091e-01 1.951382458210000059e-01 3.583026304840999932e-02 9.056448936461999888e-02 1.688490509986899923e-01 6.564670056105000040e-02 +2.738073766231500228e-01 3.668266832828500079e-01 1.314191520214099962e-01 4.960989207028999870e-02 5.775374919175999683e-02 9.823951870203000147e-02 2.234362252057000078e-02 +3.608212471008300226e-01 3.432991206645999993e-01 1.619785875081999893e-01 3.227848559617999685e-02 3.685145825148000015e-02 5.523982644080999843e-02 9.531269781289999909e-03 +2.754122316837300244e-01 3.496915102004999887e-01 2.100277394056299929e-01 4.093892872333999844e-02 4.184697940946000005e-02 6.919262558222000203e-02 1.288996729999999924e-02 +5.141964554786999930e-02 5.965299159287999753e-02 4.083365201949999690e-02 3.131877630949000263e-02 1.691450923681299956e-01 2.476576864719400028e-01 3.999721407890299840e-01 +8.245868980885000254e-02 2.106434255838399994e-01 1.244091540574999988e-01 3.869809582829000089e-02 1.275850236415899952e-01 2.553664743900300182e-01 1.608391404151900128e-01 +5.538738369941700324e-01 2.212773710489299994e-01 1.044544726610199953e-01 3.949783742428000094e-02 3.474072739482000211e-02 3.863326832651999693e-02 7.522494066509999994e-03 +3.887242078781100174e-01 3.425917923450499947e-01 1.444847881793999977e-01 4.178990423679000005e-02 3.043803200125999933e-02 4.542056843638000302e-02 6.550718098880000187e-03 +1.589446216821699953e-01 3.124631643295299743e-01 1.901538223028199914e-01 4.171669110655999713e-02 8.426172286272000378e-02 1.574008017778399937e-01 5.505916103721000127e-02 +8.922521769999999797e-02 2.073402702808400111e-01 1.220706105232200051e-01 4.718385636806000233e-02 1.295029222965199955e-01 2.518617212772399916e-01 1.528153866529499971e-01 +2.174589037895200139e-01 1.635392159223600095e-01 8.139155060052999380e-02 5.104091390966999930e-02 1.509413719177200019e-01 1.970372498035400100e-01 1.385907977819400005e-01 +1.885904371738399976e-01 3.418866991996800109e-01 1.724432259797999967e-01 6.513245403766999841e-02 6.898911297321000391e-02 1.291551738977400055e-01 3.380290418863000218e-02 +1.299306936562000074e-02 5.097868293524000088e-02 4.547051712871000295e-02 1.214669924228999921e-02 1.258016824722300031e-01 2.733396291732799743e-01 4.792697131633800178e-01 +3.768332302570000236e-02 3.744347393512999916e-02 2.964342199265999900e-02 1.401199307292999921e-02 1.654373258352299925e-01 2.201548963785200097e-01 4.956255555152899728e-01 +2.253057360649100005e-01 3.104320764541599886e-01 1.601438522338899939e-01 6.608490645884999848e-02 7.491353899239999725e-02 1.267162710428199890e-01 3.640362247824999870e-02 +3.760628402233099910e-01 2.226786464452699954e-01 1.123866066336599995e-01 4.915653541684000122e-02 8.874175697564999632e-02 1.090814396738999936e-01 4.189218953251999666e-02 +4.483815133571599776e-01 2.120285779237700008e-01 9.181026369332999371e-02 4.123757407069000153e-02 8.072745800017999684e-02 9.182330220937999499e-02 3.399131819606000110e-02 +3.165393173694600049e-01 3.635391592979400066e-01 1.769617199897799975e-01 4.062060639262000256e-02 3.569270670414000091e-02 5.761126428842999747e-02 9.035210125149999855e-03 +5.409964546560999676e-02 1.053919345140500036e-01 5.374286696314999751e-02 3.940422460437000007e-02 1.577605754137000049e-01 2.837498784065199953e-01 3.058508932590500162e-01 +1.953053921461100073e-01 2.408216297626500080e-01 1.703658401966099967e-01 3.702463582157999866e-02 1.089530214667299990e-01 1.682845354080199918e-01 7.924494892359000564e-02 +1.534032523631999878e-01 1.482350230216999964e-01 9.103810787200999899e-02 4.633071273565000231e-02 1.586801409721400047e-01 2.233217954635600133e-01 1.789909601211500112e-01 +1.343598123639999989e-02 2.352015860378999998e-02 1.383931562303999940e-02 1.151864510030000018e-02 1.312593221664400123e-01 2.153539955616000090e-01 5.910725593566900082e-01 +1.891397982835799907e-01 3.499195575714100226e-01 1.707593649625800125e-01 6.353902071714000177e-02 6.727531552314999774e-02 1.270255744457199909e-01 3.234136104583999749e-02 +3.487128317356100182e-01 2.625513672828699852e-01 1.146998181939099942e-01 3.071994520724000144e-02 8.653558045626000284e-02 1.144162937998799978e-01 4.236415401100999956e-02 +2.443853318691300014e-01 2.097890228033099935e-01 1.586207449436199957e-01 8.359788358212000281e-02 1.012563630938499992e-01 1.421933025121699945e-01 6.015735119580999796e-02 +2.205042690038699904e-01 3.031368851661699892e-01 1.625113785266900090e-01 5.608073249459000209e-02 8.064346015453000005e-02 1.347759813070300017e-01 4.234726727008999991e-02 +2.994828224182100040e-01 3.306632041931200083e-01 1.264646500349000113e-01 5.148246884345999974e-02 6.460842490196000432e-02 1.017363220453299938e-01 2.556209452449999947e-02 +4.153257310390500168e-01 2.873181700706500252e-01 1.469469368457800018e-01 5.818488821387000215e-02 3.560923412441999863e-02 4.860099032521000145e-02 8.014024235310000452e-03 +7.930234074592999727e-02 8.916100859641999665e-02 4.211756587029000243e-02 2.951992303133000109e-02 1.757682412862799914e-01 2.564489543437999952e-01 3.276819586753800251e-01 +2.153896689414999954e-01 3.498201072216000074e-01 1.561980992555599967e-01 4.037776961923000146e-02 7.283982634544000634e-02 1.288946568965899930e-01 3.647987172007999962e-02 +4.435038659719999637e-03 2.139880694448999948e-02 1.516594737767999919e-02 5.535542964940000366e-03 9.777627140283999541e-02 2.245267927646600048e-01 6.311616301536600027e-01 +3.953102827072100256e-01 1.911277770996100134e-01 1.845731586217899955e-01 5.460687726736000031e-02 6.919884681702000162e-02 7.872663438320000318e-02 2.645644173025999898e-02 +3.265166580677000274e-01 3.426735699176799987e-01 1.793827712535900065e-01 4.313926398753999830e-02 3.838801011443000039e-02 5.980382114649000075e-02 1.009590923785999919e-02 +2.557540833949999981e-01 3.026391267776499805e-01 1.460565775632899910e-01 4.240030050278000007e-02 8.208903670311000489e-02 1.289965808391599911e-01 4.206428304314999839e-02 +1.953841596841799921e-01 1.462435126304600097e-01 8.349576592445000223e-02 5.439955368637999777e-02 1.578346192836800055e-01 2.047629803419100114e-01 1.578794121742199963e-01 +1.179619580507299953e-01 9.499779343604999871e-02 8.318896591662999773e-02 4.067683219910000342e-02 1.767133623361600014e-01 2.276648581027999885e-01 2.587962448596999865e-01 +2.542973496019999835e-02 4.265980422496999658e-02 3.410026803612999785e-02 1.141965575515999955e-02 1.498528420925100135e-01 2.392113804817199985e-01 4.973263144493100252e-01 +8.200143277645000062e-02 1.485344767570500046e-01 1.189063563942899943e-01 6.502559036015999328e-02 1.426910907030100040e-01 2.532590031623799809e-01 1.895820498466500026e-01 +2.887773811817200276e-01 3.904536366462699748e-01 1.831227988004699991e-01 3.277532011270999773e-02 3.539085760712999684e-02 6.012179329990999938e-02 9.358212351800000023e-03 +2.213066965341599912e-01 3.507255315780600236e-01 2.421882003545799966e-01 4.583873972296999971e-02 4.485801234840999796e-02 7.977039366961000133e-02 1.531240995972999938e-02 +2.557940483093300021e-01 3.385682404041300275e-01 2.971139252185799884e-01 4.093427211046000297e-02 2.329241670667999906e-02 3.956558927894000127e-02 4.731521010400000123e-03 +5.735653638839699475e-01 2.165961712598800104e-01 1.358911097049700090e-01 3.016290999948999935e-02 1.958691701292999965e-02 2.143863774835999894e-02 2.758871763940000214e-03 +4.870460554956999866e-02 9.483565390110000604e-02 5.084889382123999879e-02 3.125916421412999746e-02 1.584089249372500063e-01 2.815802395343799946e-01 3.343625068664600186e-01 +1.889558285474799981e-01 2.880339026451099738e-01 1.744935214519499900e-01 4.126569628716000165e-02 9.223240613937000454e-02 1.563187837600699959e-01 5.869986116886000138e-02 +1.484096143395000067e-02 3.864388912916000285e-02 4.172720760107000160e-02 1.939811930060000161e-02 1.336251795291900080e-01 2.532279491424599960e-01 4.985366761684399961e-01 +3.137582838535299956e-01 3.285353779792800077e-01 1.901331543922399891e-01 5.682609975338000219e-02 3.909936547278999863e-02 6.127104908228000330e-02 1.037666108459000050e-02 +5.389960408210799914e-01 2.598223984241500029e-01 1.372977346181900038e-01 2.237055823207000083e-02 1.783188618720000021e-02 2.125375345348999925e-02 2.427607076240000019e-03 +2.437263727188100082e-01 3.589469194412199804e-01 2.244287580251700109e-01 3.497413545847000149e-02 4.513463750481999659e-02 7.760565727948999515e-02 1.518352795392000076e-02 +3.728485107421899980e-01 1.941354274749799991e-01 1.142229586839700051e-01 5.410663411021000152e-02 9.872761368752000499e-02 1.151861995458599991e-01 5.077265575527999814e-02 +4.314828515052799851e-01 3.001452386379199755e-01 1.345082521438600021e-01 5.132259055972000078e-02 3.198334947228000102e-02 4.392862692474999720e-02 6.629067007449999591e-03 +1.763879954814900064e-01 2.392124533653300078e-01 1.826905906200400054e-01 4.761389270424999653e-02 1.060052067041400009e-01 1.708261370658900047e-01 7.726372033358000491e-02 +1.467843651771499891e-01 1.187652349471999963e-01 9.142182022332999425e-02 7.620874792336999881e-02 1.626048535108599868e-01 2.171273082494699913e-01 1.870876699686100098e-01 +2.911202013492599772e-01 1.567722260952000013e-01 1.368378251791000089e-01 7.131660729647000541e-02 1.216908693313600021e-01 1.419147700071299867e-01 8.034750819206000483e-02 +1.624737381935099922e-01 3.169777989387499995e-01 1.847679615020799970e-01 4.015510901809000305e-02 8.466506749391999875e-02 1.572932451963399980e-01 5.366708338260999661e-02 +2.035179436206799863e-01 3.622027039527899728e-01 1.614647507667499871e-01 5.932937189937000089e-02 6.430768966675000364e-02 1.200587525963800056e-01 2.911876887083000159e-02 +7.014238834381100185e-01 1.853514462709399957e-01 6.541649997234000313e-02 2.960482053459000118e-02 8.689023554329999149e-03 8.845399133859999791e-03 6.689466535999999842e-04 +1.689020395278900133e-01 1.323625892400699944e-01 8.678372204303999582e-02 5.787214636803000162e-02 1.625615358352699991e-01 2.135191559791599913e-01 1.779987961053799972e-01 +5.563741177320000175e-02 4.558785259723999866e-02 3.072319738567000011e-02 1.781991310418000116e-02 1.776619851589200105e-01 2.236402034759500113e-01 4.489294588565799771e-01 +4.134491086006200078e-01 3.273835480213200255e-01 1.831969022750900011e-01 3.156693279743000291e-02 1.720413006842000034e-02 2.480334788560999842e-02 2.396018477160000073e-03 +1.031314358115199975e-01 2.342252880334899923e-01 1.182877048850100032e-01 4.418427497149000210e-02 1.247920691966999951e-01 2.418681681156200081e-01 1.335110515356099925e-01 +1.621183604002000012e-01 3.031498491764100245e-01 1.865360140800499944e-01 4.165920242666999729e-02 8.810047805309000057e-02 1.608642637729600089e-01 5.757181718946000060e-02 +1.108854189515099953e-01 2.274550795555100036e-01 2.196074128150899973e-01 5.381715670228000292e-02 1.039514765143400021e-01 1.935153454542200002e-01 9.076812118292000575e-02 +7.692044228314999510e-02 8.092099428177000620e-02 4.067426919936999868e-02 2.957155928016000010e-02 1.775017082691200121e-01 2.522265315055799983e-01 3.421845138072999726e-01 +4.934907704592000205e-02 1.390908956527699969e-01 5.932808667421000243e-02 3.069468215108000012e-02 1.461769044399300055e-01 2.998350858688400011e-01 2.755252718925499944e-01 +4.809692203998600091e-01 2.092675715684899906e-01 1.337654292583499993e-01 7.814473658800000222e-02 4.093300923704999705e-02 4.725200682878000213e-02 9.668015874919999586e-03 +2.451597154139999873e-02 6.198785454035000281e-02 4.643303528427999982e-02 1.974514685571000100e-02 1.446713805198699965e-01 2.744588553905499828e-01 4.281877577304800120e-01 +1.860833317041399870e-01 1.383188664913199972e-01 1.612694561481499977e-01 4.665051773190000139e-02 1.453973352909100070e-01 1.834998577833200084e-01 1.387806385755500083e-01 +5.711395144462599882e-01 2.343686372041700050e-01 9.018946439027999973e-02 3.871608898044000269e-02 2.829848229885000011e-02 3.218109533190999932e-02 5.106744822109999735e-03 +5.871757864952099615e-01 2.062684595584899916e-01 9.156865626573999772e-02 4.279506951571000056e-02 3.188616409897999937e-02 3.409194201231000032e-02 6.213919259610000204e-03 +5.845921635627699953e-01 2.142143696546600085e-01 1.301048099994699947e-01 2.888877317309000020e-02 1.899756491184000085e-02 2.058677561580999835e-02 2.615562407299999812e-03 +2.638949453830700120e-01 2.540308237075800113e-01 1.499803960323299878e-01 7.147246599197000505e-02 8.716493099927999366e-02 1.286904066801100033e-01 4.476604238153000098e-02 +2.631083130836500139e-01 1.627726852893799925e-01 7.616344094275999399e-02 7.282068580389000623e-02 1.406305730342899962e-01 1.746718436479600123e-01 1.098324730992299991e-01 +2.643616497516599884e-01 3.675649166107199939e-01 2.078226953744899963e-01 3.877921402454000133e-02 4.043821617960999953e-02 6.898419559002000323e-02 1.204910036176000052e-02 +3.120748512447000036e-02 7.535997033119000432e-02 5.228035524486999985e-02 3.227800130844000331e-02 1.489052325487099926e-01 2.840620279312099927e-01 3.759069144725800116e-01 +2.330120205879200046e-01 2.664083242416400155e-01 1.607626378536199940e-01 6.052637100219999955e-02 8.971660584210999767e-02 1.395931243896499918e-01 4.998091980814999696e-02 +4.447103440761600024e-01 3.510091900825499933e-01 1.382986605167400018e-01 3.837270662188999731e-02 1.063575968145999938e-02 1.596133224665999967e-02 1.012005843219999967e-03 +1.713202297687499986e-01 1.027582064270999990e-01 8.106733113526999601e-02 7.442796230315999739e-02 1.710091084241900095e-01 2.044257670640899915e-01 1.949913948774300021e-01 +3.653657436370800204e-01 3.768678903579700257e-01 1.842587143182800036e-01 3.418834134936000330e-02 1.440973021089999966e-02 2.312863059342000135e-02 1.780960126779999961e-03 +3.184779584407799735e-01 1.738477200269699929e-01 1.260043829679499960e-01 5.146056041120999902e-02 1.187082752585399970e-01 1.380194425582899898e-01 7.348166406155000330e-02 +4.279142916202500202e-01 2.766334414482100046e-01 2.387956231832500109e-01 3.175887465477000154e-02 1.018404122441999952e-02 1.376511808485000009e-02 9.486227645500000093e-04 +2.870740294456500252e-01 3.029229342937500014e-01 2.088616490364099965e-01 7.889840006828000019e-02 4.286274313927000007e-02 6.737402081490000139e-02 1.200621575117000010e-02 +1.852511428297000037e-02 5.829805135727000182e-02 5.241788923739999773e-02 3.203116357327000230e-02 1.374357193708400093e-01 2.853635847568499750e-01 4.159284532070199880e-01 +5.816594362258900031e-01 2.806932032108300223e-01 9.148946404457000692e-02 2.313352189958000141e-02 9.888769127429999223e-03 1.229108870028999996e-02 8.445170824399999545e-04 +2.480898052454000025e-01 1.937490105629000037e-01 1.541372239589700044e-01 8.470995724200999777e-02 1.080369353294400037e-01 1.457035541534399958e-01 6.557350605726000592e-02 +2.435358799993999832e-02 8.641133457421999731e-02 5.605556443333999800e-02 2.504033967853000128e-02 1.393548548221600070e-01 3.025678694248200018e-01 3.662164509296400028e-01 +9.629534184933000174e-02 7.724990695715000522e-02 7.393734157084999592e-02 2.535499259829999963e-02 1.831301152706099888e-01 2.293471992015800043e-01 3.146851062774699836e-01 +1.290162466465999934e-02 3.731246665119999917e-02 4.170332849025999711e-02 1.895595900713999832e-02 1.308726519346199990e-01 2.564226388931299949e-01 5.018313527107199912e-01 +2.219708859920500044e-01 2.107675969600699972e-01 1.590765118598899963e-01 4.599489644170000335e-02 1.164792329073000010e-01 1.640797108411800043e-01 8.163117617369000656e-02 +1.127117574214900053e-01 2.103358805179600111e-01 2.136759012937499980e-01 5.460355430840999752e-02 1.110558882355699994e-01 1.985488682985299957e-01 9.906814247369999382e-02 +2.205899804830599997e-01 2.393611669540400000e-01 1.601012945175200042e-01 4.305496811867000340e-02 1.072209924459500002e-01 1.592442840337799925e-01 7.042729854583999749e-02 +8.394953608513000543e-02 1.018152758479100028e-01 8.758421242236999471e-02 2.577816881238999963e-02 1.699127852916700043e-01 2.485147267579999875e-01 2.824452817440000207e-01 +7.704506814479999965e-02 1.101534143090199952e-01 1.042962074279800005e-01 5.297350510954999814e-02 1.591432541608799878e-01 2.539686858654000012e-01 2.424198538064999964e-01 +4.252502229060000152e-03 1.271056197583999951e-02 1.291936170310000083e-02 1.059755403547999950e-02 1.003605872392699938e-01 1.960655599832500096e-01 6.630938649177600119e-01 +1.888838410377499943e-01 3.039793670177500240e-01 2.776822149753599978e-01 5.637660622597000237e-02 5.457895621657000290e-02 9.633161872624999844e-02 2.216738834977000083e-02 +2.578079402446700197e-01 3.018096089363099810e-01 1.453810632228899891e-01 6.184738874435000144e-02 7.648200541734999358e-02 1.216357797384299971e-01 3.503622859715999766e-02 +3.362260162830399968e-01 2.521308958530399935e-01 1.986401975154900024e-01 7.127755880356000107e-02 5.289408937097000302e-02 7.230350375175000066e-02 1.652771420777000150e-02 +1.067741513252299934e-01 1.939975768327699968e-01 1.139367371797599948e-01 5.728488415480000040e-02 1.361180990934399981e-01 2.433169037103700139e-01 1.485716700553899872e-01 +2.388321459293399895e-01 2.972279787063599743e-01 1.537581980228399925e-01 6.545835733414000213e-02 7.883728295564999822e-02 1.279314756393399866e-01 3.795456141233000125e-02 +1.675760746002200041e-01 3.450763523578599945e-01 1.752857565879800128e-01 3.611823916435000226e-02 7.933393120765999673e-02 1.504011005163199965e-01 4.620855301619000016e-02 +2.073809206485699996e-01 3.150837421417200246e-01 2.602798640728000157e-01 6.327453255652999708e-02 4.949773102998999974e-02 8.667685091495999639e-02 1.780633442104000153e-02 +2.974278666078999933e-02 3.719086199998999920e-02 3.607092797756000085e-02 2.968595363199999851e-02 1.600371301174199901e-01 2.362221926450699949e-01 4.710501432418799928e-01 +1.737454086542100096e-01 2.469148784875900005e-01 1.870155185460999903e-01 8.472937345504999440e-02 9.318862855434000003e-02 1.568158119916900073e-01 5.759037658571999896e-02 +1.242874469607999945e-02 2.491494081913999889e-02 3.188454359770000190e-02 1.387797202915000069e-02 1.316895335912700027e-01 2.223274558782599997e-01 5.628768205642700195e-01 +2.759182825684999840e-02 3.574918210505999977e-02 3.109574690460999852e-02 1.391569059342000030e-02 1.565689891576799997e-01 2.280426323413800027e-01 5.070359706878699857e-01 +1.867368370294600066e-01 1.402630209922799964e-01 8.263677358627000147e-02 5.422838032246000278e-02 1.619717031717300137e-01 2.093348205089599900e-01 1.648284643888499879e-01 +3.562280163169000147e-02 7.685360312462000132e-02 4.969178512691999755e-02 3.113875351845999881e-02 1.547192484140400004e-01 2.826897799968700054e-01 3.692840039730099777e-01 +3.997143805026999730e-01 2.418089061975499943e-01 1.021362990140900068e-01 7.477344572543999368e-02 6.883171200752000174e-02 8.801594376563999511e-02 2.471932582557000158e-02 +1.844847053289400129e-01 3.005856573581699998e-01 1.726357787847500047e-01 3.944258764386000121e-02 9.040648490191000031e-02 1.566507071256600103e-01 5.579409375786999886e-02 +3.381226062774699836e-01 2.272169291973100136e-01 1.232159510254900031e-01 7.729560881852999554e-02 8.507890999316999880e-02 1.110443696379700002e-01 3.802563250064999734e-02 +2.988795340061199957e-01 3.351381123065900192e-01 1.964265406131699976e-01 4.772239550948000064e-02 4.249590262770999716e-02 6.730959564447000498e-02 1.202790252863999987e-02 +3.850596258420000209e-03 1.280171237886000048e-02 1.129626203327999991e-02 4.889577161519999618e-03 9.533654898405000133e-02 1.888285577297199869e-01 6.829967498779300206e-01 +2.379420101642600038e-01 2.002636492252299893e-01 1.583444923162500018e-01 8.494661003351000605e-02 1.063518971204800018e-01 1.474549174308799893e-01 6.469641625880999392e-02 +3.238512575625999979e-02 3.400680795311999960e-02 3.345880284904999974e-02 2.913173288106999867e-02 1.639807373285299963e-01 2.269107848405799988e-01 4.801259934902200044e-01 +2.451786696910900065e-01 3.275279998779300206e-01 1.460660248994800070e-01 4.838771373034000262e-02 7.456955313683000242e-02 1.235559806227699980e-01 3.471405804157000341e-02 +2.435270696877999894e-02 2.992909029126000070e-02 3.229766711592999689e-02 2.274108305572999922e-02 1.545572876930199901e-01 2.236655503511399967e-01 5.124565958976700086e-01 +5.291255712509199682e-01 2.694285213947300028e-01 9.679826349020000109e-02 3.822653740643999765e-02 2.762781269848000112e-02 3.394625708461000008e-02 4.847011994570000169e-03 +5.109457373619099574e-01 3.051442801952399808e-01 1.202847808599499940e-01 3.629124537109999771e-02 1.119337696582000004e-02 1.510206051170999951e-02 1.038546673949999975e-03 +4.271112382411999808e-02 9.960483759641999835e-02 1.118391007185000063e-01 3.511476144194999871e-02 1.472875773906699992e-01 2.742144465446499924e-01 2.892281413078299779e-01 +2.930621802806899767e-01 3.331777453422499757e-01 2.012595981359500130e-01 3.358398750423999962e-02 4.822749271988999858e-02 7.518622279167000433e-02 1.550276856868999971e-02 +3.276079595088999818e-01 2.331601232290299863e-01 1.255320608615899947e-01 9.339825063944000305e-02 7.952139526606000208e-02 1.070882007479699999e-01 3.369200602174000220e-02 +2.435654215514999887e-02 3.273130953311999963e-02 3.070206567645000079e-02 1.386696286500000048e-02 1.528344899416000102e-01 2.250558286905300076e-01 5.204527974128699830e-01 +1.669068038463600023e-01 2.740905880928000138e-01 1.862458288669600059e-01 5.368913710117000082e-02 9.395562112331000415e-02 1.640087068080899879e-01 6.110329553484999954e-02 +3.800856173038499874e-01 3.299601376056700008e-01 1.513172239065199987e-01 4.494765773415999865e-02 3.478654101491000100e-02 5.106599256396000125e-02 7.836823351680000799e-03 +3.756371438503299798e-01 3.066015541553500090e-01 2.234775573015199968e-01 3.387183696031999952e-02 2.324775420129000097e-02 3.313393145799999745e-02 4.030223004520000138e-03 +2.209597826004000010e-01 1.631179749965699921e-01 8.112526684998999649e-02 6.182876974344000270e-02 1.491831392049799976e-01 1.945709586143500036e-01 1.292141079902600076e-01 +4.685549736022899814e-01 2.706203460693399898e-01 1.278877109289200120e-01 3.580234572291000200e-02 3.909519687295000268e-02 4.887975379824999883e-02 9.159650653600000594e-03 +1.043280214071300033e-01 8.202196657657999379e-02 7.698911428452000216e-02 3.194651752710000320e-02 1.824446022510499976e-01 2.292199432849900131e-01 2.930498421192200276e-01 +4.122690483928000138e-02 9.925097972155000337e-02 5.115417763591000033e-02 2.414223365485999862e-02 1.537232697010000038e-01 2.916425764560700018e-01 3.388598561286900179e-01 +4.337273165583999807e-02 7.659669965505999656e-02 4.465920478106000235e-02 2.391117811203000154e-02 1.620166301727299918e-01 2.732377946376799982e-01 3.762057423591599892e-01 +2.627461217344000122e-02 4.216242954135000082e-02 4.006415605545000230e-02 3.042311035096999933e-02 1.541977375745799961e-01 2.495926171541200111e-01 4.572853147983599875e-01 +6.678323447704000160e-02 1.294798105955100032e-01 1.037273034453399939e-01 2.601319737731999995e-02 1.534174531698200006e-01 2.671708464622499779e-01 2.534081339836100066e-01 +1.426112465559999966e-02 3.378279134631000102e-02 3.838175907731000008e-02 1.860615983605000065e-02 1.349572390317899939e-01 2.456182539462999914e-01 5.143926739692700201e-01 +2.464648522437000097e-02 2.954389899968999991e-02 3.194732591510000136e-02 2.267613820731999991e-02 1.550697088241599908e-01 2.223469614982599984e-01 5.137695074081399804e-01 +3.041714131832100043e-01 2.322666794061699902e-01 1.342493593692800080e-01 6.818804144859000327e-02 9.170500934123999859e-02 1.239399909973099984e-01 4.547952115535999762e-02 +5.465205311775199748e-01 2.669908106327100183e-01 9.079999476670999603e-02 2.959235385059999848e-02 2.778873965143999897e-02 3.335440158843999692e-02 4.953136201949999602e-03 +8.023333735760000349e-03 1.304524019360999917e-02 1.098707877100000077e-02 1.029104273765999930e-02 1.173544228076899981e-01 1.844714730977999873e-01 6.558274030685400380e-01 +2.306637316942199978e-01 3.833539187908199808e-01 2.209085375070599933e-01 3.926131129265000158e-02 4.035067930818000276e-02 7.315061241388000346e-02 1.231120619923000044e-02 +2.812547683715799773e-01 3.505865633487699751e-01 2.614867985248600091e-01 5.132309719920000179e-02 1.934790238737999976e-02 3.283664584160000260e-02 3.164225490760000023e-03 +3.917354345322000136e-02 9.178383648396000460e-02 5.243870243430000244e-02 3.101002983748999894e-02 1.536001265048999864e-01 2.904396951198600085e-01 3.415540456771899991e-01 +2.944926917552900258e-01 1.662914454937000075e-01 1.358613371849100027e-01 8.289964497089000184e-02 1.145577430725100015e-01 1.370415985584300111e-01 6.885553151369000480e-02 +4.203970432281500247e-01 2.774152755737300247e-01 1.461913287639599879e-01 5.917548388242999807e-02 3.778433799743999982e-02 5.042922869324999863e-02 8.607299067080000088e-03 +3.393219038844000335e-02 7.092493772506999750e-02 4.634510353207999672e-02 2.431941591203000061e-02 1.550959497690199973e-01 2.772305607795699789e-01 3.921518325805700145e-01 +8.717074245214000150e-02 7.458311319351000612e-02 3.662790358067000152e-02 2.815588377415999960e-02 1.852231025695799949e-01 2.431662529706999920e-01 3.450729846954300184e-01 +3.583669364452399808e-01 2.701484858989700033e-01 1.845579892396899957e-01 3.601341322064000039e-02 5.649688839912000299e-02 7.544571161270000048e-02 1.897058077156999964e-02 +1.061392109841000075e-02 2.942683920263999831e-02 3.666958585381999841e-02 1.437546685338000028e-02 1.258963644504499935e-01 2.396210581064200096e-01 5.433967709541299707e-01 +1.319296937436000017e-02 2.334574796259000079e-02 3.018376789987000167e-02 1.367704663426000042e-02 1.338490247726399907e-01 2.157894372940100114e-01 5.699620246887200370e-01 +3.381728231906899751e-01 2.208040803670900110e-01 1.233648881316199986e-01 6.508473306893999832e-02 9.161946177483000497e-02 1.170373782515500005e-01 4.391662031411999734e-02 +4.073826968669900239e-01 3.064782321453100034e-01 1.419840604066799905e-01 5.336875468492999902e-02 3.475182503462000139e-02 4.867383837699999771e-02 7.360581308600000310e-03 +3.687087446450999784e-02 9.791451692581000510e-02 1.135663166642199989e-01 3.458483517170000271e-02 1.444964110851300054e-01 2.807182967662800177e-01 2.918487489223500209e-01 +5.055612325668300544e-01 2.031954675912900077e-01 1.277321428060499975e-01 4.303627088665999689e-02 5.123887956142000183e-02 5.533777549862999717e-02 1.389825716615000067e-02 +2.920476794242899965e-01 2.706543803215000210e-01 1.328099071979499946e-01 5.037312209605999958e-02 8.711866289377000194e-02 1.253173500299500087e-01 4.167889058589999834e-02 +2.675963751971999899e-02 5.854916572570999928e-02 4.422210901976000169e-02 2.379032969474999953e-02 1.519192308187500007e-01 2.737375795841199833e-01 4.210219681262999947e-01 +3.260888159275000114e-02 2.819325588644000166e-02 2.942638471723000096e-02 2.759070880710999887e-02 1.676170825958299970e-01 2.146842479705800000e-01 4.998794496059399961e-01 +9.102335199709999866e-03 2.873722277581999829e-02 3.699102997780000235e-02 1.406541373581000030e-02 1.226983368396799973e-01 2.436912506818799951e-01 5.447143912315399739e-01 +1.603892445564299996e-01 2.142351567745200136e-01 1.891866177320500053e-01 7.524808496236999600e-02 1.085137128830000047e-01 1.751350611448299899e-01 7.729212194680999681e-02 +3.410966396331799877e-01 1.778318881988500133e-01 1.203520745038999945e-01 7.150713354349000350e-02 1.073806434869799958e-01 1.250032037496600079e-01 5.682842433453000330e-02 +7.602372672409999678e-03 2.188932523131000007e-02 3.154334798455000338e-02 1.051220856607000022e-02 1.177680119872100001e-01 2.230602204799700117e-01 5.876244902610799903e-01 +2.474833428859699869e-01 1.130077838897699943e-01 6.680501997471000042e-02 6.160051748156999962e-02 1.698904037475600093e-01 1.839708089828500093e-01 1.572421193122900129e-01 +4.730401337146800111e-01 2.047251909971199990e-01 8.264438807964000211e-02 3.740032762289000057e-02 8.111975342034999370e-02 8.879665285349000459e-02 3.227356448770000302e-02 +3.908883333206200072e-01 2.878570258617400013e-01 2.106535732746100120e-01 5.824788287281999766e-02 2.049439214169999912e-02 2.885988168418000127e-02 2.998913405459999963e-03 +2.245792374015000148e-02 3.751673921943000228e-02 3.325215354562000014e-02 1.385350804775999957e-02 1.506381332874300039e-01 2.397333234548600089e-01 5.025482177734400535e-01 +1.460061520338100105e-01 2.893782258033800181e-01 1.904426366090800071e-01 4.253925755619999971e-02 9.402024745940999739e-02 1.735810190439200096e-01 6.403245031833999790e-02 +1.804623752832399952e-01 2.287392914295199864e-01 1.776651591062499980e-01 5.737070739268999853e-02 1.089785769581800012e-01 1.715357303619400031e-01 7.524815201758999761e-02 +3.642399311065699918e-01 2.248906195163699884e-01 1.879574358463300121e-01 7.262986153363999720e-02 5.816991627215999799e-02 7.359872013330000240e-02 1.851350814104000056e-02 +1.291672736406299926e-01 2.711685299873399790e-01 1.973453909158700004e-01 3.681418672204000292e-02 1.006970331072799957e-01 1.873800307512299979e-01 7.742754369974000350e-02 +7.389134168625000054e-02 1.918206214904799867e-01 1.151021793484700018e-01 2.958116680384000052e-02 1.370453536510500003e-01 2.697422206401799971e-01 1.828171163797399912e-01 +3.870374262332900162e-01 3.215437531471300181e-01 1.471945047378500071e-01 5.352993682026999794e-02 3.403092548251000077e-02 4.945118725299999657e-02 7.212250493470000016e-03 +4.567374885082199909e-01 2.665706574916800187e-01 2.180506438016900084e-01 3.563165664673000055e-02 9.602244943380000217e-03 1.259675342589999976e-02 8.105660672299999734e-04 +1.748899370431900024e-01 1.449051350355100021e-01 8.439423143863999943e-02 5.359769240021999837e-02 1.618309915065800075e-01 2.160235345363600012e-01 1.643584817647900098e-01 +4.233759343624100002e-01 3.372453153133400106e-01 1.684864759445199867e-01 2.810380049049999995e-02 1.666528545320000027e-02 2.397228218614999920e-02 2.150896238160000199e-03 +3.894006907939899786e-01 1.906266957521400018e-01 1.057324558496500061e-01 5.020491778851000203e-02 1.006260588765099939e-01 1.140628010034600015e-01 4.934638366103000218e-02 +4.689568579196899956e-01 2.490257173776599942e-01 1.328972131013899938e-01 3.941285237670000274e-02 4.472279176116000093e-02 5.378521233796999812e-02 1.119935419409999987e-02 +1.344834268093099972e-01 2.363482862710999943e-01 2.040668129920999996e-01 7.429108768702000209e-02 1.001038998365400001e-01 1.788128018379200046e-01 7.189368456601999413e-02 +2.002202719450000001e-01 2.120299041271200002e-01 1.717635095119499911e-01 8.654375374316999880e-02 1.052959561348000006e-01 1.580653637647599918e-01 6.608124077320000345e-02 +3.525193035602999792e-02 1.101557165384299958e-01 5.734748020767999749e-02 3.033093363047000002e-02 1.463244110345799931e-01 3.072053194045999969e-01 3.133842051029199771e-01 +2.444046884775200046e-01 3.604288697242700179e-01 2.189838588237799921e-01 4.091199114919000235e-02 4.454786702991000297e-02 7.684750109910999660e-02 1.387522928416999937e-02 +5.133828520774800230e-01 3.193883001804400101e-01 1.305729597806900011e-01 2.540776319801999958e-02 4.590019583699999663e-03 6.431561894710000234e-03 2.265574294099999958e-04 +3.948901295661900179e-01 3.565739095211000187e-01 1.771083474159199922e-01 2.840488962828999903e-02 1.631870120764000037e-02 2.458396926521999939e-02 2.120056655259999843e-03 +3.441009521484399980e-01 3.171839714050300185e-01 2.278776019811599995e-01 5.860861763358000270e-02 1.950745098293000038e-02 2.984753437340000037e-02 2.873862627890000007e-03 +2.790949121117999865e-02 3.337308764458000315e-02 3.391799703239999769e-02 2.864350937306999953e-02 1.606007814407300061e-01 2.318993210792499871e-01 4.836558103561400257e-01 +1.783958449959999887e-02 5.134292319416999817e-02 4.211979359388000332e-02 1.459542661905000038e-02 1.393992304801900117e-01 2.715552747249599941e-01 4.631477594375599804e-01 +2.256067097187000048e-01 2.981162667274500078e-01 1.569721847772599932e-01 7.971453666687000617e-02 7.654479146003999313e-02 1.276539564132699867e-01 3.539155051112000128e-02 +2.712691724300400065e-01 3.192063868045800223e-01 1.354656517505599955e-01 5.561092868446999848e-02 7.243885844946000574e-02 1.154291927814500018e-01 3.057980537415000075e-02 +3.410499542952000196e-02 5.823619663715000339e-02 4.300025850533999855e-02 2.994936890900000079e-02 1.605006158351900136e-01 2.668872773647300023e-01 4.073213040828699838e-01 +1.321405172347999979e-01 1.930752247571899949e-01 1.027487888932200055e-01 5.371034517883999798e-02 1.418533772230100021e-01 2.338748723268500029e-01 1.425968706607800007e-01 +7.429882138967999761e-02 1.801546812057500113e-01 1.209592297673200006e-01 4.779801145195999856e-02 1.363653093576399911e-01 2.660629749298100144e-01 1.743609607219699931e-01 +4.144196808338200255e-01 1.649924069643000091e-01 9.955698251724000303e-02 6.220419332385000027e-02 1.018946617841700042e-01 1.078396886587100062e-01 4.909237101674000098e-02 +1.116302795707999930e-02 3.567529842257000094e-02 3.748513758183000255e-02 1.112448889761999925e-02 1.270990371704099897e-01 2.527078986167899943e-01 5.247451066970799660e-01 +2.261419221758999981e-02 4.132326692343000346e-02 4.056151956319999780e-02 2.987459115683999827e-02 1.508242785930599961e-01 2.547501921653699819e-01 4.600519537925700231e-01 +6.097059845924399646e-01 2.105956524610499980e-01 1.102391853928599980e-01 3.498674184083999661e-02 1.574293710290999848e-02 1.697389595211000121e-02 1.755614532160000053e-03 +1.258622109889999952e-01 2.444066405296299871e-01 2.093035578727699964e-01 7.378406077622999548e-02 9.699708223342999591e-02 1.797743737697599931e-01 6.987205892801000295e-02 +1.470125019550299894e-01 2.553420364856699987e-01 1.914791166782399967e-01 4.608584940433999716e-02 1.033927798271200016e-01 1.810874044895199875e-01 7.560030370951000001e-02 +2.861553132533999899e-01 2.192070335149799987e-01 1.376208662986800058e-01 5.904462933540000069e-02 1.034500151872600054e-01 1.376568526029600115e-01 5.686530098319000220e-02 +8.129177615050000097e-03 1.121845934540000034e-02 9.242151863870000372e-03 7.476269733160000389e-03 1.178022101521500054e-01 1.720530390739400117e-01 6.740787029266399610e-01 +1.965029165149000112e-02 4.724444821477000178e-02 4.534094780683999709e-02 3.056593239307000068e-02 1.441889703273800116e-01 2.695469856262199815e-01 4.434624314308199811e-01 +3.462431728839899803e-01 2.926139533519699909e-01 1.778516471385999942e-01 6.942386180161999598e-02 4.213624820113000269e-02 6.105040013790000164e-02 1.068073231727000028e-02 +2.752633765339999872e-02 7.211755961179999730e-02 4.423214495181999883e-02 1.458475459367000043e-02 1.490066498518000104e-01 2.830912470817599780e-01 4.094413220882400228e-01 +5.706941708921999673e-02 1.332342326641099972e-01 5.341694504023000029e-02 2.875546365975999857e-02 1.555167585611300085e-01 2.958678305149100018e-01 2.761393785476700113e-01 +8.857011795043999436e-02 1.785742342472100008e-01 1.138333603739700023e-01 4.689092934131999790e-02 1.414190977811800032e-01 2.582897841930399951e-01 1.724224537610999919e-01 +1.043265983462299956e-01 8.559589087963000165e-02 7.684165984391999604e-02 3.110020793973999886e-02 1.830389797687499986e-01 2.329862117767300123e-01 2.861104309558900050e-01 +9.195452928543000615e-02 1.101345568895299998e-01 9.942250698804999676e-02 6.356215476990000057e-02 1.634739190339999926e-01 2.462920248508499999e-01 2.251603007316599903e-01 +3.630579113960299975e-01 3.930180966854099900e-01 1.793464869260799899e-01 2.202332764864000161e-02 1.558459457010000042e-02 2.491368353366999952e-02 2.055895747620000054e-03 +5.342659354209899902e-01 2.078038454055800011e-01 1.116034835577000006e-01 5.321549996733999921e-02 4.023257642984000293e-02 4.401997104286999724e-02 8.858675137160000254e-03 +1.168205682187999951e-02 3.771071135997999813e-02 4.017236828804000154e-02 1.442333310842999934e-02 1.286468505859399980e-01 2.591861486434899886e-01 5.081785321235700037e-01 +5.624635219574000145e-01 1.959125399589499994e-01 1.857570111751599973e-01 3.050438687204999957e-02 1.172460895032000072e-02 1.253967639058999918e-02 1.098270993679999977e-03 +1.809430308640000082e-02 3.415969759226000074e-02 3.715455532074000283e-02 2.303864248097000147e-02 1.448357254266700034e-01 2.443089336156800129e-01 4.984081387519799788e-01 +2.690087258815799798e-01 3.097668886184700154e-01 2.997197210788700161e-01 4.418484866618999779e-02 2.753361687064000141e-02 4.393992573022999920e-02 5.846306681629999738e-03 +4.649319052696200272e-01 2.617519497871400036e-01 1.255062669515600027e-01 6.280372291803000551e-02 3.440486267209000304e-02 4.370903223752999750e-02 6.892250850799999835e-03 +2.869089543819399735e-01 2.990052402019500177e-01 2.916859090328199899e-01 4.440705105662000329e-02 2.836350910365999928e-02 4.362490400671999863e-02 6.004448980090000380e-03 +1.782958954572999924e-02 3.977202996611999691e-02 3.416279703379000027e-02 1.070027891546000004e-02 1.431305259466200130e-01 2.500170767307299813e-01 5.043877363205000464e-01 +4.201893880963000066e-02 3.782747313379999921e-02 3.141314163804000137e-02 2.736473828554000093e-02 1.761534810066200107e-01 2.297602742910400120e-01 4.554619491100300177e-01 +2.198833040893000135e-02 6.490787863730999863e-02 4.826111346483000220e-02 2.362447418271999833e-02 1.448281705379499962e-01 2.902506887912800204e-01 4.061393439769699909e-01 +2.971776127815199953e-01 3.404367268085500275e-01 2.567343413829800136e-01 4.286276921630000070e-02 2.252996899187999919e-02 3.639235720037999749e-02 3.866223618390000026e-03 +3.256648480892200270e-01 1.895129829645199881e-01 1.222443580627400050e-01 5.737039074301999997e-02 1.112999245524400049e-01 1.332278847694400026e-01 6.067959964274999979e-02 +9.147398173810000407e-03 2.377817779778999829e-02 3.246963024138999759e-02 1.329546235502000046e-02 1.251752674579600100e-01 2.301120609045000098e-01 5.660220384597800525e-01 +3.682182729244199981e-01 2.781517207622499765e-01 2.411631643772099987e-01 3.918025642633000266e-02 2.865687385201000012e-02 3.915633261203999710e-02 5.473382771020000176e-03 +1.012233123183299971e-01 1.615210771560700032e-01 2.012943178415300127e-01 4.709091782569999746e-02 1.322296559810600125e-01 2.177495658397700096e-01 1.388911753892899947e-01 +1.498302910477000011e-02 3.886405751108999718e-02 3.730800375341999930e-02 1.390951406211000073e-02 1.380376964807500106e-01 2.564745545387300263e-01 5.004231333732600540e-01 +3.082052804529999968e-02 7.263476401566999752e-02 4.624240100384000018e-02 2.323525957763000055e-02 1.545187681913400002e-01 2.865436971187599879e-01 3.860045671462999928e-01 +1.352213323116299992e-01 1.242947503924400066e-01 8.804416656494000459e-02 5.710597336291999698e-02 1.687896847724900118e-01 2.316388934850699965e-01 1.949051916599300049e-01 +3.514825403690299832e-01 1.471515148878100032e-01 1.116288676857900009e-01 6.040685996412999831e-02 1.246199086308499987e-01 1.314951479435000070e-01 7.321517169475999509e-02 +1.064884141087499986e-01 1.694668531417800050e-01 9.613019227982000370e-02 2.818773314356999918e-02 1.547677367925600067e-01 2.539723217487300233e-01 1.909867376089099955e-01 +1.265206038951899870e-01 2.084516435861600014e-01 1.938250213861499871e-01 4.152081906795999922e-02 1.207422316074400065e-01 2.031033337116200099e-01 1.058363616466500012e-01 +5.419194102287300252e-01 2.484425157308599863e-01 1.288087964057899881e-01 4.526789486407999802e-02 1.538818702101999933e-02 1.852329634130000027e-02 1.649898709729999934e-03 +1.047703027725200020e-01 6.464658677578000168e-02 6.601293385029000094e-02 3.012348338961999897e-02 1.938844472169899968e-01 2.204580605030100060e-01 3.201041817665100098e-01 +3.009553849697100270e-01 2.552153468132000169e-01 1.298591047525400055e-01 6.174539774656000179e-02 8.824633806944000292e-02 1.234520524740199965e-01 4.052637517451999905e-02 +4.672921821474999848e-02 9.646040946245000580e-02 1.073270812630700011e-01 4.214567691088000334e-02 1.535618454217899942e-01 2.739622890949199863e-01 2.798134684562699759e-01 +1.498242467641799913e-01 2.367407828569400019e-01 1.867940425872799959e-01 4.688142612576000345e-02 1.107475608587299987e-01 1.862830370664599888e-01 8.272890001534999316e-02 +8.124081790447000573e-02 1.541402786970099970e-01 1.028926521539700045e-01 2.989292331039999917e-02 1.530816107988400010e-01 2.665401101112400140e-01 2.122116237878799994e-01 +1.267713010311100064e-01 1.685815751552600106e-01 1.919413059949900136e-01 5.597377941012000174e-02 1.309797167777999871e-01 2.043524235487000074e-01 1.213998943567300010e-01 +5.934935212135300509e-01 2.517148554325099874e-01 1.130862757563600024e-01 3.061016835271999914e-02 4.890272859480000386e-03 5.970320664349999806e-03 2.345905522799999869e-04 +1.696573346853300079e-01 2.204887121915800052e-01 1.833758652210200069e-01 8.747889846563000615e-02 1.040723994374300049e-01 1.675969958305399965e-01 6.732979416847000020e-02 +1.234705522656399934e-01 1.424547284841500006e-01 1.823211759328799975e-01 4.735574126244000009e-02 1.440782099962200080e-01 2.104538381099700095e-01 1.498657464981099918e-01 +6.518694013357000105e-02 1.274093985557600006e-01 1.037546768784499973e-01 3.150952979921999714e-02 1.554833650589000082e-01 2.719290256500199732e-01 2.447270601987799887e-01 +2.046111673116700058e-01 2.424277216196099871e-01 2.750304341316199830e-01 5.364627391099999892e-02 7.440704852342999720e-02 1.144532337784800041e-01 3.542411699891000187e-02 +4.711501672863999818e-02 9.314408153295999915e-02 4.780658707022999998e-02 2.890000119805000156e-02 1.628737300634399976e-01 2.880167365074199903e-01 3.321438729762999920e-01 +2.792420610784999979e-02 7.070197165012000184e-02 4.917978495359000279e-02 2.994069829583000109e-02 1.512909829616500001e-01 2.900923788547499771e-01 3.808699846267700195e-01 +5.837846919893999870e-02 8.064109832047999804e-02 8.563614636659999668e-02 2.563643269241000153e-02 1.696989685297000117e-01 2.564775645732900178e-01 3.235313296318100273e-01 +6.938596814870999496e-02 1.214453950524300024e-01 1.109534204006200064e-01 6.348171830177000430e-02 1.528966873884199940e-01 2.635986804962199836e-01 2.182381302118300004e-01 +3.291280865669299893e-01 2.726473212242099819e-01 1.186057701706900031e-01 5.445814877748000188e-02 8.014135807753000607e-02 1.117211058735800011e-01 3.329822048545000301e-02 +3.538560569286299806e-01 3.119403123855600257e-01 1.698935627937299964e-01 4.349322617054000167e-02 4.465874657035000250e-02 6.438601016997999582e-02 1.177207566797999934e-02 +1.539376378059399975e-01 2.612170875072499787e-01 1.912978738546400048e-01 9.841898083686999310e-02 8.731868863106000134e-02 1.572830677032500124e-01 5.052665248512999696e-02 +1.848340593278000044e-02 4.249654710293000043e-02 4.273721203208000197e-02 2.956348471343999904e-02 1.450446397066099957e-01 2.652503550052600079e-01 4.564243555069000258e-01 +2.809452116489399853e-01 3.087916970253000160e-01 2.119335085153599973e-01 3.695672005415000239e-02 5.629904568195000236e-02 8.563093841075999912e-02 1.944288611412000115e-02 +3.329309523105600244e-01 2.398583590984300074e-01 1.191854178905499967e-01 4.891609027982000285e-02 9.331524372100999387e-02 1.218343377113299958e-01 4.395961016417000017e-02 +1.414254158735299971e-01 2.151132524013500136e-01 1.962257772684100066e-01 7.570093125104999932e-02 1.087389960885000034e-01 1.831316053867300120e-01 7.966402918100000397e-02 +4.128159582614999989e-02 6.712984293698999461e-02 4.265972971916000278e-02 2.895875647664000047e-02 1.663524657487900071e-01 2.719220817089100239e-01 3.816955387592300131e-01 +1.776893138885499990e-01 2.142765223979999911e-01 1.793071478605300084e-01 8.762793242930999593e-02 1.061972901225100019e-01 1.663519740104699995e-01 6.854981184005999595e-02 +4.088735282421099848e-01 4.008695185184499854e-01 1.343746781349199892e-01 2.765447832643999973e-02 1.049600727855999963e-02 1.677057705819999869e-02 9.612053399900000444e-04 +5.413334369659400513e-01 2.787805497646300146e-01 1.141906827688199955e-01 3.638116270304000283e-02 1.242516282946000070e-02 1.572874560951999928e-02 1.160262152549999988e-03 +2.711101770400999866e-01 3.066712915897399916e-01 1.327188611030599985e-01 3.791093081236000112e-02 8.371723443270000231e-02 1.282823532819699908e-01 3.958918526769000107e-02 +8.384524285793000520e-02 1.793853193521499911e-01 1.023828834295300028e-01 2.275514043867999867e-02 1.473910957574799951e-01 2.668933272361799780e-01 1.973470002412799906e-01 +9.615229442720000727e-03 3.517094999551999973e-02 4.203087091445999873e-02 1.811833679676000050e-02 1.248794049024599950e-01 2.639805674552900272e-01 5.062046647071799521e-01 +5.666757933799999696e-03 1.299375016241999942e-02 1.098878681659999981e-02 7.683356292550000410e-03 1.094306483864800061e-01 1.916265934705700114e-01 6.616101264953599959e-01 +3.863376677036299833e-01 2.078798264265100115e-01 1.055035740137099942e-01 5.747599527240000034e-02 9.247069060802000362e-02 1.094777733087499982e-01 4.085448384285000206e-02 +3.869235515594500185e-01 3.385536968708000027e-01 1.925061345100400056e-01 3.231216967106000093e-02 1.899071224034000124e-02 2.804265730082999841e-02 2.671065274629999976e-03 +3.626993894577000277e-01 3.410694897174800233e-01 2.013237178325699983e-01 4.882197827101000115e-02 1.722824946046000102e-02 2.661569043993999850e-02 2.241490874440000072e-03 +1.133967936038999952e-01 1.823601275682399936e-01 1.004950329661399994e-01 4.259874671698000298e-02 1.491709053516399874e-01 2.498974055051799981e-01 1.620809882879299946e-01 +1.438198145478999934e-02 3.031366504728999836e-02 3.561634197830999826e-02 2.180429548025000080e-02 1.411328017711599991e-01 2.452665567398099877e-01 5.114843845367400554e-01 +1.092852503061299968e-01 8.842176944016999496e-02 7.345093786716000439e-02 2.922873571515000046e-02 1.871473640203500099e-01 2.356740534305599988e-01 2.767919003963499880e-01 +1.250255759804999936e-02 4.071084409951999938e-02 3.943072259425999676e-02 1.376007962971999982e-02 1.330842971801800001e-01 2.676303386688200225e-01 4.928811788558999929e-01 +2.402274757623699963e-01 2.990420460700999872e-01 2.314878106117199963e-01 8.578462898730999930e-02 4.868798702955000335e-02 8.003029227256999723e-02 1.473976206034000036e-02 +1.268742531537999929e-01 1.328139454126399943e-01 8.140807598829000180e-02 2.763689868152000018e-02 1.731228232383699994e-01 2.420089840889000088e-01 2.161350250244100102e-01 +9.938278794289000240e-02 7.846511155367000279e-02 6.911330670118000230e-02 2.327869273722000046e-02 1.896020621061300093e-01 2.338367998599999997e-01 3.063212335109700146e-01 +2.685093283653299800e-01 2.938401103019699923e-01 2.216149121522900112e-01 4.797189682722000081e-02 5.857796967029999663e-02 8.920834213495000553e-02 2.027741819619999913e-02 +2.823730111122100261e-01 2.521144747734099800e-01 1.290476322174100021e-01 3.423677012324000124e-02 1.035047471523300039e-01 1.426054537296299884e-01 5.611791089176999814e-02 +3.054198622703599986e-01 2.969586849212599855e-01 1.995563507080100052e-01 4.339747130871000197e-02 5.558362603188000267e-02 8.135708421468999807e-02 1.772691681980999995e-02 +1.473767757415800073e-01 1.068072319030800021e-01 7.048971205949999819e-02 2.726155333220999996e-02 1.858260780572900117e-01 2.264243215322500058e-01 2.358143329620399908e-01 +1.695784032344800074e-01 1.732371449470500036e-01 1.643373519182199927e-01 4.085468128323999776e-02 1.388124823570300037e-01 1.950062364339799903e-01 1.181737110018700049e-01 +4.906280934810600125e-01 2.255428284406700012e-01 1.683119684457800025e-01 6.514760851860000590e-02 2.170804701745999987e-02 2.574472501873999869e-02 2.916705096139999946e-03 +2.367496192455300075e-01 3.652719557285299956e-01 2.175539731979400093e-01 3.987009078263999834e-02 4.611567407845999778e-02 8.027941733599000540e-02 1.415925286710000008e-02 +2.877323627471899958e-01 3.511603474616999954e-01 2.590788304805800024e-01 3.489080071449000148e-02 2.388898469507999903e-02 3.897224366665000272e-02 4.276448395099999994e-03 +2.197721004486100083e-01 3.792785406112699764e-01 1.420214176177999887e-01 5.023232474922999929e-02 6.467191874981000066e-02 1.181254237890199954e-01 2.589827217161999942e-02 +1.301987282931999987e-02 3.350381553172999960e-02 3.872510418295999762e-02 2.222943678497999939e-02 1.369550526142100100e-01 2.562308609485600130e-01 4.993358552455899879e-01 +2.891813172030000077e-03 1.071836892515000070e-02 1.218137051909999949e-02 9.645913727580000471e-03 9.426325559616000049e-02 1.961604505777400087e-01 6.741388440132100035e-01 +6.125348210334800036e-01 1.731979995966000108e-01 1.296483576297799978e-01 2.720445953309999845e-02 2.716364711523000172e-02 2.589529566466999833e-02 4.355439916250000362e-03 +2.503722310066199830e-01 3.253673911094699944e-01 1.386688202619600074e-01 5.529647320508999930e-02 7.517708092927999353e-02 1.232161521911600000e-01 3.190184757113000147e-02 +5.156940817832900148e-01 2.257378697395300005e-01 1.105975583195699941e-01 6.001761928200999990e-02 3.749066218733999867e-02 4.304542392492000102e-02 7.416778244079999874e-03 +3.240279257297499771e-01 2.687619328498799809e-01 1.188436001539199954e-01 5.477688461541999759e-02 8.321795612573999745e-02 1.155320331454299937e-01 3.483968600631000279e-02 +3.196769356727600098e-01 2.477335780858999914e-01 1.993760764598800084e-01 8.608984947205000626e-02 5.493833869695999989e-02 7.578895241022000351e-02 1.639625616372000078e-02 +6.561365723610000644e-02 1.662646830081900007e-01 1.145999431610100067e-01 3.721153736115000166e-02 1.428474187850999888e-01 2.779404222965199955e-01 1.955223381519299863e-01 +3.319587409496300157e-01 2.399170845747000125e-01 1.992505043745000093e-01 5.013682693242999672e-02 6.721509248017999705e-02 8.762838691473000263e-02 2.389335073531000109e-02 +1.914445608854299929e-01 1.900839060545000125e-01 1.687390059232700135e-01 8.880358189343999509e-02 1.161529496312100063e-01 1.684086322784399958e-01 7.636734843254000538e-02 +3.783557796849999939e-03 7.706469856200000301e-03 9.199423715469999194e-03 8.836462162440000476e-03 1.001351028680800004e-01 1.670037657022500066e-01 7.033352255821200272e-01 +3.039283454418200137e-01 3.234153091907500110e-01 1.917036622762700038e-01 4.743274301290999889e-02 4.741714894771999894e-02 7.275584340096000191e-02 1.334693189709999957e-02 +3.974922001362000273e-02 8.172967284917999342e-02 4.644044861196999774e-02 2.850639261305000158e-02 1.621644943952600115e-01 2.887914478778800254e-01 3.526183068752299921e-01 +3.833692073821999835e-01 3.604083955287900043e-01 1.713447123765899915e-01 4.740323871373999798e-02 1.402373425662999974e-02 2.194486372173000063e-02 1.505825086500000003e-03 +7.112895604219999710e-03 2.570510841905999933e-02 3.566932305693999716e-02 1.328324619680999914e-02 1.185708492994300006e-01 2.448675930499999986e-01 5.547909736633299671e-01 +2.414423674345000104e-01 3.121486902236900174e-01 2.321801483631099894e-01 3.939211368560999876e-02 5.885414779185999673e-02 9.438171982765000689e-02 2.160080522298999869e-02 +7.268906384706000368e-02 1.047532483935399994e-01 1.015252992510800034e-01 6.255359202622999548e-02 1.626037508249300045e-01 2.594748735427899744e-01 2.364001572132100049e-01 +1.131275370716999934e-01 2.204144448041900073e-01 1.076154708862299969e-01 5.039859190583000081e-02 1.340727061033200052e-01 2.443689256906499963e-01 1.300023198127699953e-01 +2.398111298680000170e-02 5.267021059989999976e-02 4.145914316176999709e-02 2.251862175762999949e-02 1.530065089464200112e-01 2.734819352626799982e-01 4.328824877738999821e-01 +6.506609916687000617e-02 1.577043235302000024e-01 1.131711751222600065e-01 3.764656931161999842e-02 1.453261375427200019e-01 2.778204679489100215e-01 2.032652199268299986e-01 +4.494365453720099990e-01 3.370514512062099954e-01 1.439599096775099896e-01 3.426016122102999717e-02 1.392216142267000030e-02 1.992186345159999844e-02 1.447917660700000090e-03 +4.619443714618700070e-01 2.765592038631399796e-01 1.678580492734899898e-01 4.696521535516000323e-02 1.920938119292000049e-02 2.501921728252999924e-02 2.444551326330000017e-03 +5.990902185440100114e-01 2.160156518220900101e-01 1.345726698637000063e-01 3.452492132782999934e-02 7.234936580060000004e-03 8.119316771629999166e-03 4.422892234299999857e-04 +6.103495359420799682e-01 2.183980792760799872e-01 1.049239337444300008e-01 3.218865022062999959e-02 1.557582337408999935e-02 1.692229136824999897e-02 1.641690963880000024e-03 +1.691818684339500001e-01 3.218563497066500023e-01 1.740788817405700128e-01 5.457598343491999737e-02 8.272865414619000324e-02 1.532163769006699983e-01 4.436190798879000030e-02 +1.503991782665299870e-01 1.931113004684399947e-01 1.864896118640899936e-01 7.685554772614999752e-02 1.184155344963099959e-01 1.862994730472599947e-01 8.842936903237999524e-02 +4.217821657657599976e-01 3.275308609008800165e-01 1.751222163438800050e-01 2.478470094501999954e-02 2.001218684017999974e-02 2.794593572617000074e-02 2.821927657350000070e-03 +1.697496324777600096e-01 1.785267442464799903e-01 1.752519160509100060e-01 7.702650874852999541e-02 1.246837824583099941e-01 1.822090297937400127e-01 9.255237132311000536e-02 +8.550952374935000266e-02 1.633256226777999864e-01 2.093956768512700017e-01 4.675459116696999845e-02 1.291670650243799956e-01 2.260895669460299962e-01 1.397579461336100060e-01 +5.823471546173100144e-01 1.798345446586600005e-01 9.586494415997999508e-02 4.887953400612000260e-02 4.209041595459000334e-02 4.198081418872000314e-02 9.002611972390000758e-03 +2.809273898601499786e-01 2.243477106094400042e-01 1.348302960395799943e-01 5.644479393959000307e-02 1.055177152156799997e-01 1.416167169809300075e-01 5.631538480520000001e-02 +4.516619443893399866e-01 2.997806072235100205e-01 1.199335083365399984e-01 4.499159380794000296e-02 3.314327076076999806e-02 4.418576508759999855e-02 6.303337402640000336e-03 +5.236701369285600149e-01 2.857832014560700018e-01 1.515007615089400128e-01 2.248307876289000126e-02 7.044484373180000085e-03 9.070171974599999798e-03 4.481757350700000240e-04 +2.183186858892399995e-01 3.037110865116099956e-01 1.536300033330899872e-01 5.197647586464999858e-02 8.630412817000999992e-02 1.427996158599899867e-01 4.325999692081999859e-02 +4.673553407192200249e-01 3.057649135589600164e-01 1.523074060678500097e-01 3.255011141300000188e-02 1.708018779754999841e-02 2.290110662579999956e-02 2.040945459160000124e-03 +1.080399844795000043e-02 2.376647852360999971e-02 2.973420731723000129e-02 1.250108703971000018e-02 1.334233134985000069e-01 2.294806838035599872e-01 5.602902173996000545e-01 +4.793747887014999931e-02 9.540142863988999855e-02 9.395020455121999570e-02 2.468937076627999994e-02 1.610891520977000002e-01 2.768076956272100264e-01 3.001246750354800152e-01 +1.628010571002999896e-01 2.148472219705599984e-01 1.791935265064200089e-01 7.041062414646000189e-02 1.139492914080599967e-01 1.812126487493500027e-01 7.758563756943000211e-02 +1.599236577749300059e-01 2.602086365222899822e-01 1.825413405895200125e-01 7.773905247449999778e-02 9.587702155112999558e-02 1.672397553920700053e-01 5.647052451968000153e-02 +1.263546198605999989e-02 4.291440919041999980e-02 3.961387649178999687e-02 1.347304787486999951e-02 1.343782991170900110e-01 2.737592458725000011e-01 4.832256436347999728e-01 +1.308506447822000048e-02 4.125120118259999885e-02 3.840131685137999906e-02 1.338662207126999938e-02 1.359523236751599973e-01 2.694216370582599995e-01 4.885018169879900007e-01 +3.610520660877200028e-01 3.311330676078800272e-01 2.098031640052800129e-01 4.319783672690000187e-02 2.074486576021000034e-02 3.111455030739000011e-02 2.954429015519999951e-03 +6.224962323904000006e-02 1.493803709745399888e-01 1.066176891326899995e-01 2.937569655477999947e-02 1.501800268888499879e-01 2.821144759654999890e-01 2.200821191072500072e-01 +3.484431654214999868e-02 9.326977282762999311e-02 1.107336431741700045e-01 4.090756177902000329e-02 1.478848457336399969e-01 2.872831523418399868e-01 2.850767076015500168e-01 +4.340696930885299953e-01 3.241267800331100180e-01 1.605307459831200045e-01 3.979414328933000150e-02 1.639585196972000170e-02 2.321767620742000091e-02 1.865112921219999956e-03 +3.204388916492499906e-01 2.839165031909899883e-01 1.924351304769499893e-01 5.213935300708000264e-02 5.547178909183000245e-02 7.891384512186000455e-02 1.668447442353000049e-02 +1.908807456493399890e-01 1.767750084400200039e-01 1.647755503654499964e-01 8.970253914594999989e-02 1.227822899818400010e-01 1.725505441427200026e-01 8.253330737352000679e-02 +1.174804754555000032e-02 3.115613199769999911e-02 3.750484436749999817e-02 2.156461961567000124e-02 1.356452107429499954e-01 2.552265524864200108e-01 5.071545839309700154e-01 +6.063636392350000431e-03 1.565379090607000104e-02 2.590263634919999849e-02 9.252151474359999322e-03 1.158915013074899997e-01 2.073993235826500081e-01 6.198369860649100005e-01 +1.883806586265600047e-01 2.536943256854999884e-01 1.624182909727099888e-01 4.042764380574000171e-02 1.100224107503900012e-01 1.742843836545900083e-01 7.077230513096000042e-02 +1.772950217127999828e-02 2.254176884889999913e-02 2.500886656344000064e-02 1.200532447546999969e-02 1.503666192293199866e-01 2.123084664344800088e-01 5.600394606590299862e-01 +2.583023905754099903e-01 2.537962794303900149e-01 2.323666960000999870e-01 7.997719943523000363e-02 6.214347854256999787e-02 9.184426069260000214e-02 2.156968414783000040e-02 +3.907664120197300028e-01 2.759432196617099819e-01 2.075515985488899928e-01 7.074803858995000472e-02 2.180605754256000062e-02 3.014384955168000063e-02 3.040820127349999971e-03 +7.830066233872999548e-02 1.607089489698400042e-01 1.120451912283900037e-01 5.682168528438000243e-02 1.464581936597799949e-01 2.678732872009300103e-01 1.777920275926599958e-01 +2.443914562463800066e-01 1.848829984664900061e-01 1.452718824148200027e-01 8.028364926577000182e-02 1.187739819288299997e-01 1.558349430561100091e-01 7.056108117103999933e-02 +1.562973260879499948e-01 2.499002516269699936e-01 1.846627146005599962e-01 8.016531914473000453e-02 9.855862706899999603e-02 1.705294996499999993e-01 5.988625437021000142e-02 +1.746348477900000126e-02 5.120985209942000016e-02 4.381457716227000337e-02 2.230663597584000082e-02 1.437792181968700067e-01 2.838252186775199748e-01 4.376010000705700120e-01 +1.371194869279900030e-01 1.614022105932199913e-01 1.821020245552099903e-01 6.641691178083000691e-02 1.350056380033499981e-01 2.018417418003100039e-01 1.161119863390900064e-01 +2.614074200392000127e-02 6.523188203572999333e-02 4.412217065691999979e-02 2.214097604156000168e-02 1.540757566690399982e-01 2.888542413711500112e-01 3.994342386722600224e-01 +3.593569993972999671e-02 7.621236145496000647e-02 4.535060003400000206e-02 2.791782096028000079e-02 1.619798839092299880e-01 2.901424169540400277e-01 3.624612390995000100e-01 +1.113265901804000035e-01 1.265880167484300101e-01 1.768117249012000070e-01 4.720277339219999813e-02 1.524958163499799957e-01 2.191473990678799999e-01 1.664276719093299994e-01 +1.086821481585499988e-01 1.057657971978200051e-01 8.389124274254000646e-02 4.558615386486000037e-02 1.783841699361800037e-01 2.446047961711899921e-01 2.330857068300200008e-01 +2.525452896952999973e-02 3.855900466441999908e-02 3.386008366941999775e-02 2.112166211008999900e-02 1.606437265873000009e-01 2.493528425693500028e-01 4.712081551551799974e-01 +2.566517330705999841e-02 6.507070362568000144e-02 4.640355706214999848e-02 2.841830998658999990e-02 1.532621830701799970e-01 2.914042472839399878e-01 3.897758424282100065e-01 +2.449056655168500019e-01 2.478753924369800077e-01 1.427311152219800094e-01 4.549285396933999692e-02 1.062242165207900046e-01 1.535659879445999965e-01 5.920477956532999714e-02 +3.391660749912300266e-01 3.123463392257699867e-01 1.741974055767100127e-01 3.662397712469000338e-02 5.062380060553999667e-02 7.278033345937999499e-02 1.426208112389000006e-02 +2.549105882644699950e-01 3.066796362400099896e-01 2.235611677169800082e-01 4.659987986088000300e-02 5.776431038976000132e-02 9.081320464610999343e-02 1.967120356858000074e-02 +2.817751094698999967e-02 5.016770958899999938e-02 3.774490579963000331e-02 2.157032489776999906e-02 1.612878888845399872e-01 2.662116587162000059e-01 4.348400235176099748e-01 +2.680468605829999969e-03 1.179811917244999973e-02 1.095078047364999967e-02 4.413077142089999981e-03 9.118778258562000583e-02 1.966553926467899949e-01 6.823143959045400164e-01 +3.348052203655200176e-01 3.446863293647799975e-01 2.262814939022100014e-01 3.108010068536000078e-02 2.342369966209000010e-02 3.589011728764000125e-02 3.833040595049999957e-03 +1.160211395471999994e-02 3.154629841447000038e-02 3.789685666560999727e-02 2.161538787186000066e-02 1.351282447576500068e-01 2.566096186637900067e-01 5.056014657020599934e-01 +3.034557104110700010e-01 1.666550338268300013e-01 1.230738386511800037e-01 6.092224270104999728e-02 1.260250806808499990e-01 1.458451598882699873e-01 7.402294129132999667e-02 +2.072054706513999991e-02 3.582881763576999806e-02 3.278984129429000222e-02 1.647830754518999838e-02 1.537752449512500008e-01 2.470372766256299923e-01 4.933699667453799731e-01 +1.827186197042499904e-01 1.823652088642100100e-01 1.689455211162599890e-01 8.977901190518999819e-02 1.206332966685299962e-01 1.742865741252900003e-01 8.127174526453000147e-02 +2.968237921596000167e-02 3.601205348968999909e-02 3.107244335114999964e-02 2.067191153764999859e-02 1.673209071159399985e-01 2.388374656438800037e-01 4.764028489589700044e-01 +8.162803947926000614e-02 1.194513961672799968e-01 9.726761281489999800e-02 4.708532616496000078e-02 1.651022881269499920e-01 2.627370655536699906e-01 2.267282754182800009e-01 +3.734036386012999920e-01 2.914218306541400128e-01 2.277358919382100055e-01 3.562019020319000251e-02 2.811191231011999844e-02 3.869012370706000070e-02 5.016423296179999686e-03 +7.460896857079999701e-03 1.229348033666999990e-02 2.110583707689999908e-02 8.713732473549999635e-03 1.219676807522799972e-01 1.848858594894400020e-01 6.435725092887899512e-01 +7.765676826240000032e-03 1.940470561384999987e-02 2.897697687148999973e-02 1.229404378682000080e-02 1.236670762300499937e-01 2.216100394725800116e-01 5.862814784050000005e-01 +2.931732535362199799e-01 1.343210488557800009e-01 1.130170673131900005e-01 3.461804985999999973e-02 1.526061892509499862e-01 1.596947908401500082e-01 1.125695854425400044e-01 +8.397351205349000425e-02 1.687117815017699918e-01 1.075602024793600037e-01 4.433279857038999877e-02 1.484529227018399899e-01 2.675054967403400208e-01 1.794632673263500122e-01 +1.868302375078000066e-02 4.504634439945000290e-02 4.019130021333999769e-02 2.194714732467999835e-02 1.479128450155300090e-01 2.713726162910499728e-01 4.548467099666599900e-01 +4.576147496700300188e-01 3.523506224155399935e-01 1.290525645017600032e-01 2.923605032265000001e-02 1.249552145600000067e-02 1.807100325822999856e-02 1.179488142949999948e-03 +1.346860919147999970e-02 3.066500648855999961e-02 3.068594448267999986e-02 9.947856888179999746e-03 1.386733055114700019e-01 2.408852130174599926e-01 5.356740355491600436e-01 +6.727703660726999657e-02 7.444882392882999633e-02 7.898811995983000267e-02 3.054135851561999918e-02 1.800039261579499950e-01 2.512545287609099787e-01 3.174861967563599729e-01 +1.622187942266500038e-01 1.747608035802800108e-01 8.386021852493000250e-02 3.863080963492000058e-02 1.585882753133799894e-01 2.294417619705199918e-01 1.524993181228599948e-01 +2.943967878818499750e-01 2.366328239440899928e-01 2.164937108755100037e-01 4.477994516492000282e-02 7.598597556352999771e-02 1.012508273124699959e-01 3.045991994441000009e-02 +1.513141393661500134e-01 2.764229178428599942e-01 1.792325526475899988e-01 4.084457084536999988e-02 1.025089249014899950e-01 1.815372556447999997e-01 6.813962012528999856e-02 +2.729581110178999973e-02 6.076975911856000168e-02 9.042192250489999861e-02 2.566007710992999902e-02 1.529933214187599866e-01 2.702999711036699892e-01 3.725591301917999809e-01 +9.415808133780000436e-03 2.516289427875999934e-02 3.363348916172999997e-02 1.641262508928999914e-02 1.293509900569899951e-01 2.408275604247999968e-01 5.451966524124099989e-01 +2.399804741144200004e-01 3.077053129673000265e-01 1.430725455284100056e-01 5.862510204315000278e-02 8.173560351132999613e-02 1.323921680450400040e-01 3.648879006505000022e-02 +3.120692372322099728e-01 2.496467977762200086e-01 1.224647685885399961e-01 5.866196751595000036e-02 9.170783311128999360e-02 1.247090026736299984e-01 4.074039310217000137e-02 +2.606224119663200223e-01 2.866951227188099804e-01 2.256538569927200033e-01 4.932235926390000219e-02 6.187053397298000051e-02 9.388963133097000258e-02 2.194608747958999920e-02 +3.134894967079199790e-01 2.776728272437999911e-01 1.981226801872300047e-01 4.501976445316999836e-02 6.061234325170999915e-02 8.521947264670999556e-02 1.986343227327000069e-02 +2.200428396463000036e-02 3.174403309821999947e-02 3.166356310248000239e-02 2.078867517411999918e-02 1.574606299400299891e-01 2.383883446454999888e-01 4.979504644870800245e-01 +3.063275478780000047e-02 4.803834483027000224e-02 3.598267957568000025e-02 2.133750915526999928e-02 1.649969816207899898e-01 2.599751353263899945e-01 4.390366077423100144e-01 +3.002021908760100222e-01 3.114002943038899907e-01 1.959023028612099926e-01 4.104329273105000037e-02 5.403640493751000334e-02 8.083835989236999586e-02 1.657715067266999839e-02 +4.140019714832299802e-01 3.188687264919299880e-01 1.826116889715199976e-01 3.189953789114999966e-02 2.074490673840000132e-02 2.898865565658000076e-02 2.884523477409999936e-03 +8.620169758796999981e-02 1.001987084746400053e-01 7.927014678716999552e-02 2.309121191502000112e-02 1.789200752973600095e-01 2.541776895523100155e-01 2.781404554843899812e-01 +9.930990636349999387e-03 2.693007886409999954e-02 1.472533307970000024e-02 1.052736397833000000e-02 1.286860108375499911e-01 2.435205727815600019e-01 5.656796097755399932e-01 +5.425220355390000110e-03 1.319869887084000083e-02 1.139468792826000068e-02 9.511630982159999248e-03 1.117813885211900032e-01 2.002789974212600133e-01 6.484093666076700124e-01 +3.050737679004700276e-01 2.350104004144699943e-01 1.255602240562400107e-01 6.223830208181999751e-02 9.702385216950999702e-02 1.297624707222000129e-01 4.533098265529000165e-02 +1.670740097761199972e-01 1.936729252338399987e-01 1.772308051586199973e-01 8.974281698465000345e-02 1.162023320794099979e-01 1.774368584156000017e-01 7.864026725292000419e-02 +2.544427290558999924e-02 3.305067121982999817e-02 3.417299687862000029e-02 3.417300060391000038e-02 1.627476364374199902e-01 2.415769249200800106e-01 4.688344895839700044e-01 +3.559010624885600160e-01 3.071894049644500191e-01 1.656515151262299979e-01 5.144241079688000040e-02 4.470396041869999920e-02 6.409250944852999676e-02 1.101915445178999926e-02 +1.553524434566500023e-01 2.267530262470200120e-01 1.774509996175800131e-01 4.549585655332000211e-02 1.177090778946899979e-01 1.908047646284100063e-01 8.643384277820999329e-02 +8.973088115454000424e-02 1.153261661529499937e-01 8.618956059217000587e-02 2.900549583136999982e-02 1.731848567724199872e-01 2.583084702491800222e-01 2.482545524835599871e-01 +1.990842819213899939e-01 2.640908062458000027e-01 1.626152396202099892e-01 5.881677567958999708e-02 9.942091256380000686e-02 1.599764674902000028e-01 5.599550157785000010e-02 +2.528960704803500104e-01 2.985559105873100139e-01 2.270718216896099872e-01 4.814558103680999929e-02 5.959885939956000023e-02 9.292111545801000350e-02 2.081064321101000134e-02 +8.092321455478999892e-02 1.239445433020600063e-01 9.178387373686000550e-02 2.922995947300999903e-02 1.669874638318999960e-01 2.657053470611600021e-01 2.414255887270000123e-01 +3.986449539661000158e-02 4.913403466343999743e-02 3.359974175692000131e-02 2.090426720678999900e-02 1.744044721126599973e-01 2.522904574871099870e-01 4.298025369644200011e-01 +4.956887103619999832e-03 1.955529861152000004e-02 3.125177696347000017e-02 9.735654108229999451e-03 1.098049432039300000e-01 2.298629879951500088e-01 5.948324203491199835e-01 +2.526529431343100263e-01 1.950455158948899981e-01 1.392981261014900052e-01 5.102450773120000005e-02 1.238086372613900060e-01 1.609207391738899928e-01 7.724953442812000637e-02 +1.669203639030500119e-01 2.989845871925400078e-01 1.699140518903700103e-01 3.759926185011999711e-02 9.671483188868000569e-02 1.707716584205599963e-01 5.909523740410999731e-02 +1.204139646142999946e-02 3.739206492900999657e-02 3.725584968924999796e-02 1.328600384295000082e-02 1.341062635183299934e-01 2.637120187282600003e-01 5.022063851356499686e-01 +2.308071404696000056e-02 5.069639906286999703e-02 4.024169594048999932e-02 2.190235629678000118e-02 1.538616865873299877e-01 2.738284766674000115e-01 4.363886713981600107e-01 +2.430500686168700075e-01 2.560965716838800033e-01 1.464946419000600075e-01 6.731043756007999701e-02 9.576874226331999473e-02 1.433709859847999979e-01 4.790855199098999900e-02 +6.185455620289000145e-02 1.340942680835700007e-01 1.070145368575999983e-01 3.786887973546999853e-02 1.533447355031999915e-01 2.792822718620299738e-01 2.265407443046600078e-01 +1.916943937540100118e-01 1.560236215591400133e-01 1.491978764533999913e-01 3.979161009191999748e-02 1.482825279235799876e-01 1.908130794763600036e-01 1.241968870162999949e-01 +1.149443835020100002e-01 1.380776613950699949e-01 8.725494146347000102e-02 3.463770821691000007e-02 1.692204177379600105e-01 2.500362098216999951e-01 2.058286815881699983e-01 +3.650664985179900013e-01 3.269591927528400221e-01 2.092610448598899997e-01 4.351234436035000125e-02 2.099366113543999976e-02 3.120426461100999846e-02 3.003019839530000207e-03 +2.489582821726999892e-02 3.381964936851999948e-02 3.162934258579999658e-02 2.078318968415000106e-02 1.614244580268900109e-01 2.395552992820700056e-01 4.878922402858700269e-01 +3.164241611957600009e-01 2.991065979003900144e-01 1.159960255026799975e-01 4.962038621306000263e-02 7.691206037997999623e-02 1.120479628443700054e-01 2.989282272756000128e-02 +2.189159840345399899e-01 2.867786884307900186e-01 1.539166271686600029e-01 6.511893868446000377e-02 8.839040994643999893e-02 1.436318308114999942e-01 4.324750602244999825e-02 +3.331603854895000272e-02 7.645622640848000195e-02 4.646027088165000096e-02 2.808811515569999834e-02 1.591715365648299907e-01 2.932886481285100211e-01 3.632191717624699834e-01 +1.859821379184699863e-01 2.104727625846899985e-01 1.625735163688699914e-01 4.483760893344999887e-02 1.241633892059299943e-01 1.833973824977900013e-01 8.857320994138999370e-02 +3.863033652305600252e-01 3.506299853324900129e-01 1.346601694822300022e-01 3.761100396513999966e-02 3.392077609896999857e-02 5.008753389119999927e-02 6.787155754859999605e-03 +4.667383432387999659e-02 6.298984587193000306e-02 3.811815381050000229e-02 2.700185403228000033e-02 1.757228821516000072e-01 2.664937376975999861e-01 3.829996883869200008e-01 +1.971891224384300090e-01 2.819320857524900137e-01 1.636718809604600089e-01 6.888232380151999845e-02 9.034562110900999643e-02 1.512137800455100045e-01 4.676518216728999672e-02 +1.104826480150000040e-02 3.176479414104999704e-02 3.310391306877000228e-02 1.011426560581000014e-02 1.319159120321299894e-01 2.493081986904099878e-01 5.327446460723900268e-01 +3.861157894134499835e-01 2.942860424518600193e-01 1.523165702819800071e-01 5.871776118875000200e-02 4.158447682857999844e-02 5.760629475116999659e-02 9.373054839670000651e-03 +1.597617939115000135e-02 3.824167326092999669e-02 3.848904371261999829e-02 2.175438031554000062e-02 1.442960500717200001e-01 2.630027532577500216e-01 4.782399237155899874e-01 +2.321652770042400005e-01 2.365168333053599969e-01 1.513807326555300092e-01 7.241066545247999697e-02 1.022184789180800024e-01 1.505941748619100129e-01 5.471383780241000083e-02 +4.318309724330899879e-01 2.096072733402299937e-01 1.541756987571699933e-01 4.231974855065000207e-02 6.630203127860999357e-02 7.467816770077000121e-02 2.108611166477000060e-02 +4.001939296722399897e-01 3.108198046684300109e-01 1.985750198364300001e-01 2.947033941745999877e-02 2.399175800383000073e-02 3.317715600132999793e-02 3.771986113860000163e-03 +5.657234191894500164e-01 2.203648388385799906e-01 1.653597503900499921e-01 2.464558370411000163e-02 1.093877665698999961e-02 1.208443194628000018e-02 8.832178427800000276e-04 +1.073704194277999915e-02 3.554455190896999711e-02 3.480194881557999859e-02 1.002116035670000058e-02 1.316490173339799896e-01 2.614869475364700047e-01 5.157593488693199557e-01 +8.160800486803000686e-02 9.418810158967999557e-02 8.039467781782000388e-02 2.895219065248999871e-02 1.804350912570999999e-01 2.565443813800800110e-01 2.778775691986100083e-01 +4.431112408637999933e-01 2.109588980674700076e-01 1.461980193853399945e-01 5.805642902850999959e-02 5.872589722275999707e-02 6.685672700405000113e-02 1.609276980161999937e-02 +1.618963330984100057e-01 2.442891001701399945e-01 1.716541200876199880e-01 4.232591763139000041e-02 1.141916736960399970e-01 1.872687786817600064e-01 7.837407290936000692e-02 +2.034825235605199900e-01 2.256267517805100042e-01 1.532363891601599970e-01 4.107479751109999883e-02 1.206443682312999949e-01 1.768902838230100028e-01 7.904490083456000571e-02 +2.712966501712999953e-02 3.552743792534000106e-02 3.102677501737999971e-02 2.023498341441000090e-02 1.659238338470500063e-01 2.424945980310400095e-01 4.776627123355899895e-01 +1.072950754314999991e-02 3.202330693602999795e-02 3.458425402641000096e-02 1.275131013244000001e-02 1.330211609602000022e-01 2.560837566852600111e-01 5.208067297935500273e-01 +1.410772092640000079e-02 2.939200401306000035e-02 3.050237521528999934e-02 1.239653676747999936e-02 1.428014785051300028e-01 2.412419617176100040e-01 5.295579433441199857e-01 +1.411061584949500070e-01 2.603844106197399921e-01 1.820397973060600139e-01 4.219463467598000284e-02 1.081264540553100034e-01 1.909483373165100084e-01 7.520021498203000032e-02 +2.409513480961000126e-02 3.629165515304000333e-02 3.093545697629000030e-02 1.589689776300999904e-02 1.608509570360200092e-01 2.452057749033000056e-01 4.867241382598900268e-01 +3.532133996486699901e-01 2.244771867990499881e-01 1.864679753780399962e-01 4.875574260949999683e-02 7.241835445166000529e-02 8.933015912771000155e-02 2.533717453479999993e-02 +1.338793188333499973e-01 1.780831664800600067e-01 1.869174689054499960e-01 7.791161537169999374e-02 1.259045153856299948e-01 1.985065639018999961e-01 9.879735112189999557e-02 +2.262909710406999994e-02 6.426095962524000504e-02 4.470105096698000213e-02 2.173555083572999841e-02 1.507858633995100006e-01 2.949522435665100084e-01 4.009352624416400168e-01 +3.545359969139100231e-01 2.602614164352399784e-01 1.753481477499000130e-01 7.335431128739999806e-02 5.222813040017999786e-02 7.046570628881000664e-02 1.380630023777000039e-02 +5.767974257469000304e-02 1.106118857860600019e-01 9.615955501794999638e-02 2.987402118742000026e-02 1.627566218376199914e-01 2.786530256271400052e-01 2.642651200294500180e-01 +8.160651661459999290e-03 2.711878716945999995e-02 3.225475549698000183e-02 9.773349389429999284e-03 1.246293187141400000e-01 2.463304400443999953e-01 5.517327189445500046e-01 +5.151972174643999758e-02 8.147253096103999892e-02 9.490463137627000445e-02 4.939234256743999657e-02 1.666531711816799932e-01 2.686177492141699763e-01 2.874398529529599844e-01 +8.879603445530000194e-02 1.617912203073499922e-01 2.042904794216200137e-01 5.568888783454999797e-02 1.311932057142299879e-01 2.262244075536699872e-01 1.320157647132899903e-01 +1.275288760662099952e-01 1.341488063335400105e-01 8.704568445683000255e-02 5.292973667382999681e-02 1.697673052549399930e-01 2.425283342599900138e-01 1.860512644052499942e-01 +9.256704896688000561e-02 1.630114316940300123e-01 1.009304448962199952e-01 4.293645173310999680e-02 1.546817570924799989e-01 2.647404670715299835e-01 1.811324059963199951e-01 +6.085157021879999961e-02 7.706055790186000509e-02 7.776656746863999659e-02 2.356069348752000067e-02 1.782922893762599881e-01 2.582706212997399886e-01 3.241977095603900128e-01 +2.410441786050800117e-01 1.570429503917699920e-01 1.415808051824599956e-01 1.026366204023400064e-01 1.255770772695500026e-01 1.561936140060400102e-01 7.592473924159999499e-02 +6.501526385545999820e-02 9.084993600844999684e-02 8.542852848767999718e-02 2.980968169868000034e-02 1.742736697196999862e-01 2.649666070938099804e-01 2.896563112735699996e-01 +3.564319014549299780e-01 3.395189642906200067e-01 2.102073580026599942e-01 3.516936674714000316e-02 2.214925549923999967e-02 3.324173390864999800e-02 3.281442215669999954e-03 +3.559889197349500045e-01 2.399224340915699916e-01 2.594068944454199777e-01 5.591417476535000264e-02 3.547341376542999941e-02 4.604856669902999966e-02 7.245613727720000286e-03 +3.738949894905099769e-01 3.312899470329300211e-01 1.450753957033200092e-01 5.110185965895999716e-02 3.692998364568000208e-02 5.413999035954000089e-02 7.567853666840000139e-03 +1.062961369752900009e-01 1.477126926183700006e-01 9.628032147883999747e-02 5.390967801213000093e-02 1.607516258954999888e-01 2.543230056762699753e-01 1.807265281677200019e-01 +3.636085689067800053e-01 1.613181680440899934e-01 1.054774448275599963e-01 6.513568758964999317e-02 1.177247986197500068e-01 1.272236704826399945e-01 5.951164662838000219e-02 +4.012406244873999855e-02 5.485156178474000221e-02 3.646489977837000240e-02 2.638273686170999888e-02 1.746977716684300075e-01 2.643062472343399860e-01 4.031727313995400186e-01 +3.248086273670199864e-01 3.458198606967899935e-01 2.293776571750600068e-01 3.780530020595000013e-02 2.289719134569000170e-02 3.571719303727000083e-02 3.574173199009999819e-03 +2.407375425100299893e-01 2.078772485256200064e-01 2.479131668806099920e-01 6.512925028801000438e-02 8.469024300574999609e-02 1.155447512865099974e-01 3.810779377818000052e-02 +2.542527206241999849e-02 6.579574197531000423e-02 4.580371454358000277e-02 2.769485674798000119e-02 1.543457210063899909e-01 2.947097122669199987e-01 3.862249851226799979e-01 +9.567271918060000005e-03 3.204325586556999728e-02 3.391851484775999792e-02 9.938091970980000855e-03 1.286713331937799909e-01 2.560189366340600015e-01 5.298426151275600349e-01 +2.192188240587999992e-02 6.295944750309000193e-02 9.578356146812000427e-02 2.532458491622999880e-02 1.458324193954499970e-01 2.815425097942400035e-01 3.666355907916999946e-01 +1.022783592343299991e-01 1.488825678825400067e-01 1.914867311716099973e-01 5.611908435822000191e-02 1.397555768489799899e-01 2.217935472726799973e-01 1.396841257810599868e-01 +1.341954320669200007e-01 2.057419121265399997e-01 1.921090632677099896e-01 8.990438282490000044e-02 1.117412969469999962e-01 1.881761103868500040e-01 7.813180983067000152e-02 +8.856604807080000613e-03 1.499896869063000078e-02 2.223999798298000041e-02 8.754506707189999709e-03 1.287099868059199959e-01 1.972173452377299907e-01 6.192225813865700479e-01 +4.099870920181299949e-01 3.008839488029499964e-01 1.875408738851500057e-01 4.969285801052999996e-02 2.057862654328000002e-02 2.862417139113000025e-02 2.692401409149999987e-03 +7.781352847810000216e-03 2.552012167871000117e-02 3.501999378204000146e-02 1.618000119925000133e-02 1.246885359287299988e-01 2.490397095680199901e-01 5.417702794074999995e-01 +6.104016304016099959e-01 2.099933773279200055e-01 1.047022789716700042e-01 3.967523574829000255e-02 1.621206104754999849e-02 1.737220026553000160e-02 1.643227529709999964e-03 +3.134559988975499922e-01 2.526920437812800180e-01 2.006827741861300085e-01 3.992373123765000087e-02 7.155754417180999749e-02 9.550332278013000387e-02 2.618456445634000096e-02 +4.798192381858800148e-01 2.938425838947300028e-01 1.425494998693500048e-01 4.508782178164000287e-02 1.592770405113999935e-02 2.110983245074999834e-02 1.663329545409999999e-03 +3.415080904960600128e-01 3.233983218669900239e-01 1.662736088037500004e-01 4.957105591892999735e-02 4.384160041809000152e-02 6.486841291188999437e-02 1.053890399634999954e-02 +1.252122689038999946e-02 4.444545134901999733e-02 3.962765634059999681e-02 1.317480020225000013e-02 1.351702064275699944e-01 2.790497839450800099e-01 4.760108888149299777e-01 +1.185039207339299988e-01 1.628548502922100016e-01 1.894114166498200025e-01 6.646845489739999779e-02 1.337532103061699895e-01 2.105998992919899948e-01 1.184082552790600013e-01 +4.477089345455200209e-01 2.873131036758400092e-01 1.698410362005199903e-01 4.619470983743999976e-02 1.996347121894000154e-02 2.647959440947000170e-02 2.499136840920000192e-03 +8.294816315174000088e-02 1.483675688505199930e-01 1.019673198461499980e-01 4.439859092236000254e-02 1.568645536899599957e-01 2.691040039062500000e-01 1.963498145341900092e-01 +2.123423516750299889e-01 2.357093840837500009e-01 1.528721451759300076e-01 4.891747981309999688e-02 1.134272888302799986e-01 1.682941019535099947e-01 6.843724846840000542e-02 +4.145812615752000191e-02 6.777749210595999940e-02 8.257166296244000669e-02 2.436653524636999898e-02 1.678287237882599980e-01 2.653788924217200251e-01 3.506185710430099745e-01 +8.054334670304999499e-02 1.621721684932700136e-01 1.057369336485900063e-01 4.380800575017999854e-02 1.512690782547000123e-01 2.714938819408400095e-01 1.849765777587900062e-01 +1.299659460783000042e-01 2.094505876302699965e-01 1.947729140520099989e-01 8.969584107398999306e-02 1.101149022579200054e-01 1.888894140720399906e-01 7.711038738488999733e-02 +3.811305016278999924e-02 5.239903926849000249e-02 3.618363663554000076e-02 2.640198171139000044e-02 1.735898107290299863e-01 2.628534138202699988e-01 4.104590713977799843e-01 +1.671919524669600032e-01 1.518464386463199978e-01 1.550456285476700113e-01 4.071309044956999967e-02 1.511773765087099930e-01 2.012756764888800065e-01 1.327498406171800094e-01 +2.941028475761400252e-01 3.277557492256200078e-01 1.917586773633999930e-01 4.661312699318000130e-02 4.943504184484000252e-02 7.655733823775999480e-02 1.377719920129000068e-02 +1.943001002073299899e-01 2.639165222644799802e-01 1.620655804872500050e-01 5.815018713474000289e-02 1.011706739664099963e-01 1.635609567165400013e-01 5.683597922324999663e-02 +3.053261339664499752e-01 1.690666824579200034e-01 1.184527054429100057e-01 4.769320040940999705e-02 1.309556514024700080e-01 1.501476019620900104e-01 7.835800200700999973e-02 +3.014071285724599925e-01 2.691498398780799994e-01 2.043867558240899940e-01 4.710156470536999707e-02 6.490754336119000656e-02 9.097588062285999477e-02 2.207129821180999971e-02 +3.176772966979999994e-03 1.150061562656999950e-02 1.065947767347000079e-02 5.504682660100000159e-03 9.717253595590999438e-02 1.962216943502400057e-01 6.757642030715900194e-01 +1.338255554437600137e-01 2.283009588718399874e-01 1.855321675539000070e-01 4.584252461790999655e-02 1.172539368271799942e-01 2.002040445804600111e-01 8.904080837965000494e-02 +1.646347790956499968e-01 2.499712705612200103e-01 1.735845655202900017e-01 5.148794502020000163e-02 1.089623644947999986e-01 1.809652149677299926e-01 7.039385288954000397e-02 +7.590216398238999740e-02 1.018404215574300054e-01 9.193623811006999824e-02 4.695227369666000322e-02 1.716717183589900053e-01 2.626734077930499844e-01 2.490237802267100120e-01 +4.121186956762999676e-02 9.130468219519000117e-02 9.451697021723000358e-02 2.436967194079999940e-02 1.589025408029600128e-01 2.824078202247600200e-01 3.072864413261400252e-01 +8.316252380609999439e-02 8.217117935418999375e-02 7.210405170917999484e-02 2.267168089747000070e-02 1.867966949939700028e-01 2.481563389301300049e-01 3.049375116825099874e-01 +3.678629100322700074e-01 1.701631993055300052e-01 1.049283146858200066e-01 6.299195438622999521e-02 1.136037111282300061e-01 1.249031946063000054e-01 5.554669350385999654e-02 +7.624674588442000023e-02 1.617426276206999913e-01 1.002168729901300043e-01 2.758491411804999890e-02 1.539186686277400073e-01 2.764883339405099782e-01 2.038018554449100017e-01 +2.167564481496800088e-01 1.982564181089400135e-01 2.614623904228199902e-01 5.736515671015000178e-02 9.231567382812999600e-02 1.269457340240499887e-01 4.689818248152999997e-02 +7.376205176114999928e-02 1.220847889781000034e-01 9.221877157687999316e-02 2.883994206785999923e-02 1.666697412729299943e-01 2.715749442577399808e-01 2.448497563600499916e-01 +7.984746247530000174e-02 1.537831127643599916e-01 1.044205501675599945e-01 4.432366415858000203e-02 1.538982540368999952e-01 2.713860273361199948e-01 1.923409402370500065e-01 +3.299098908901200167e-01 1.937529146671299884e-01 1.149197444319700057e-01 5.256220698357000343e-02 1.142591759562500003e-01 1.359391808509800015e-01 5.865689367055999803e-02 +9.887541830540000354e-02 1.825195252895399911e-01 1.047229319810900061e-01 5.203135311603999946e-02 1.468739509582500102e-01 2.589637041091900072e-01 1.560131013393399879e-01 +8.202055096626000019e-02 9.708270430564999720e-02 9.381295740603999567e-02 7.405806332827000182e-02 1.703503727912900056e-01 2.533815503120400159e-01 2.292937934398699973e-01 +6.172809377313000223e-02 1.347604840993900099e-01 1.012020185589800059e-01 2.907633595168999940e-02 1.565216481685600125e-01 2.823766171932199920e-01 2.343347966670999982e-01 +2.189746499062000112e-02 2.755318768322000123e-02 2.724493481219000118e-02 1.537750195711999959e-02 1.594888269901300060e-01 2.265049517154699987e-01 5.219331383705100302e-01 +9.810976684092999334e-02 1.287249177694299862e-01 9.483916312456000530e-02 5.583016201853999855e-02 1.659451574087099923e-01 2.560410797595999988e-01 2.005097717046699923e-01 +1.074313931166999934e-02 2.299827709794000086e-02 2.862375043333000024e-02 1.211409550159999945e-02 1.348943710327099865e-01 2.288127541542100130e-01 5.618135929107700433e-01 +3.296284005045999749e-02 8.091685920954000411e-02 4.685395956038999887e-02 2.739712595939999829e-02 1.590650975704200054e-01 2.996810972690600039e-01 3.531230092048600055e-01 +1.044034957885699999e-01 1.181585863232599981e-01 8.385027945042000663e-02 3.495140373707000120e-02 1.764637529849999997e-01 2.531074583530399935e-01 2.290650159120599938e-01 +2.332762628793700055e-01 2.293222695589099969e-01 2.492648959159899924e-01 5.081512406468000065e-02 8.258640766144000056e-02 1.173473596572899985e-01 3.738768771290999771e-02 +1.169458031654000037e-02 2.618092671036999913e-02 3.336467593907999768e-02 2.049352973699999914e-02 1.382702589035000040e-01 2.430385351181000020e-01 5.269575119018600207e-01 +4.344080761074999714e-02 1.278577595949199897e-01 1.105091795325300053e-01 3.013695962727000119e-02 1.470421552658099928e-01 2.946729063987699737e-01 2.463402301073099876e-01 +5.456203967333000254e-02 7.508012652397000330e-02 7.956800609826999993e-02 2.382226474583000117e-02 1.751559823751399902e-01 2.611673176288599740e-01 3.306442797183999915e-01 +4.215407967567399994e-01 2.769517302513099799e-01 1.916001737117800086e-01 5.397279933094999843e-02 2.265017479657999849e-02 3.014916926622000087e-02 3.135146806019999989e-03 +2.037489265203500099e-01 1.553613841533700024e-01 1.536250859498999866e-01 9.006252884865000030e-02 1.330466717481600114e-01 1.730629950761800040e-01 9.109240770340000515e-02 +8.686554618179999354e-03 2.276008762419000006e-02 3.181331232190000302e-02 1.580239087343000143e-02 1.287320405244800070e-01 2.366357296705199897e-01 5.555698871612499978e-01 +9.033378213643999954e-02 1.670878082513800045e-01 1.025026515126200022e-01 4.285992309450999821e-02 1.526590287685400116e-01 2.661119699478100009e-01 1.784448325633999910e-01 +5.163243412971499913e-01 2.813263833522799962e-01 1.294778287410700002e-01 3.459316119552000024e-02 1.618630252778999884e-02 2.038280852138999941e-02 1.709198695610000037e-03 +1.453463360667000062e-02 3.229083493352000178e-02 3.706070408224999835e-02 2.682204172014999999e-02 1.444357931613899915e-01 2.565701603889499749e-01 4.882858395576499810e-01 +4.204420745372799972e-01 2.859173417091400160e-01 1.367136538028700110e-01 5.338620394468000102e-02 4.078919813036999825e-02 5.410790070891000059e-02 8.643609471620000012e-03 +4.044740498065900192e-01 2.942802011966699771e-01 2.032049000263199956e-01 3.139721229672000347e-02 2.660456299781999850e-02 3.568294271827000125e-02 4.356126300990000380e-03 +2.277718111872999857e-02 7.197786122560999311e-02 4.936874285339999668e-02 2.799892611802000039e-02 1.484830379486100083e-01 3.052351772785200090e-01 3.741590678691900096e-01 +1.417487952858000055e-02 3.310255333781000203e-02 3.783709183335000337e-02 2.694677002727999954e-02 1.433278620243099988e-01 2.593418955802900272e-01 4.852689504623399763e-01 +1.231515873223999920e-02 1.315348315983999941e-02 1.867984049021999965e-02 8.348844014110000725e-03 1.392267197370500031e-01 1.803770065307599979e-01 6.278989315033000063e-01 +3.014071285724599925e-01 2.691498398780799994e-01 2.043867558240899940e-01 4.710156470536999707e-02 6.490754336119000656e-02 9.097588062285999477e-02 2.207129821180999971e-02 +1.113721653819099988e-01 1.279704272747000104e-01 9.032074362040000415e-02 5.470070615410999731e-02 1.693541705608400116e-01 2.492282837629299919e-01 1.970534920692399994e-01 +1.212766394019099969e-01 2.624174952507000169e-01 1.931786984205199897e-01 4.327823966741999734e-02 1.056059673428499934e-01 1.973901987075800113e-01 7.685274630784999506e-02 +1.155959889292700049e-01 2.546327710151700119e-01 2.002546042203899868e-01 5.491338670253999993e-02 1.035920307040199967e-01 1.964301913976700120e-01 7.458104193211000099e-02 +6.880992650985999493e-02 6.573620438575999980e-02 7.245337963103999634e-02 2.957564219831999852e-02 1.864075511693999987e-01 2.452234625816299973e-01 3.317938446998600077e-01 +9.246465051499999513e-04 5.281520076100000051e-03 8.661097846929999636e-03 3.758268896489999795e-03 6.906955689192000036e-02 1.602551639079999868e-01 7.520497441291800200e-01 +1.062544807791700047e-01 1.184579730033900047e-01 1.730240136385000072e-01 4.701870307325999726e-02 1.570121198892600045e-01 2.227762043476100018e-01 1.754564940929400074e-01 +1.902531087398499909e-01 2.388344705104800125e-01 2.762190103530899887e-01 6.431480497121999651e-02 7.623864710331000605e-02 1.194463074207299941e-01 3.469364717602999720e-02 +2.318511158227899993e-01 3.389095962047600219e-01 2.248590439558000031e-01 5.210488662123999998e-02 5.055416002870000147e-02 8.613584190607000146e-02 1.558536477387000019e-02 +2.827003970742000133e-02 6.898361444473000148e-02 4.544501379132000196e-02 2.755716815591000013e-02 1.572146266698800088e-01 2.943106889724699804e-01 3.782188594341299726e-01 +1.585324406623800086e-01 1.723024249076799963e-01 1.727818250656099897e-01 9.138368815184000349e-02 1.272060275077800118e-01 1.876055896282199931e-01 9.018800407648000506e-02 +2.957025915384000128e-02 5.974495410919000021e-02 8.791143447160999769e-02 3.095157071948000105e-02 1.593204438686399993e-01 2.722285687923399755e-01 3.602727651596099867e-01 +3.199087083339700044e-01 2.863041758537300252e-01 1.878217458725000011e-01 4.158584401010999992e-02 6.058561429381000007e-02 8.504560589790000069e-02 1.874833181500000154e-02 +5.237028934059999828e-03 1.236377563328000008e-02 2.246472053229999974e-02 8.448984473939999754e-03 1.144765987992300005e-01 1.960542201995799927e-01 6.409546732902500210e-01 +1.688785403966900078e-01 8.020111173390999382e-02 6.413629651070000548e-02 6.331989914178999534e-02 1.965139657258999917e-01 2.094832062721299903e-01 2.174669951200499940e-01 +1.969693005085000059e-01 2.885871231555899863e-01 2.582700252533000063e-01 4.432268440723000080e-02 6.919499486685000422e-02 1.140848100185399977e-01 2.857105992733999927e-02 +2.022500336170199864e-01 3.008669614791900093e-01 2.517656385898600080e-01 4.224225506186000262e-02 6.634298712014999322e-02 1.102352663874599931e-01 2.629687264562000082e-02 +7.008411735295999589e-02 1.688908189535099913e-01 2.175975590944299876e-01 5.482099950313999714e-02 1.239673793315899941e-01 2.357530593872100011e-01 1.288860589265800050e-01 +2.784583270549800260e-01 2.873701155185700018e-01 2.101534307002999868e-01 4.589579626918000033e-02 6.341111660003999340e-02 9.346088021994000683e-02 2.125032804906000147e-02 +7.218999788170000001e-03 1.420311722903999999e-02 2.357705496252000127e-02 1.105359662324000014e-02 1.248083263635599988e-01 2.025118023157100045e-01 6.166270971298200010e-01 +1.167667284608000025e-02 2.780370041727999939e-02 3.054347448051000086e-02 1.210580300539999994e-02 1.382733583450299897e-01 2.438854575157199944e-01 5.357115268707299816e-01 +4.346881527449999831e-03 1.529605779796999916e-02 2.689702808856999847e-02 8.893937803799999847e-03 1.091776415705699999e-01 2.167101353406900022e-01 6.186783313751199609e-01 +3.231799900531799885e-01 2.480293363332700118e-01 2.770147621631600110e-01 5.791398882866000131e-02 3.659817948936999743e-02 4.957493022084000223e-02 7.688790094110000209e-03 +2.757668495178199897e-01 2.398391366004899994e-01 2.175983786582899870e-01 9.366894513368999309e-02 6.322354823350999353e-02 8.954031020402999919e-02 2.036282233894000024e-02 +1.509559992700999949e-02 3.780100867152000332e-02 3.727990761398999875e-02 2.066733315587000047e-02 1.456304043531400083e-01 2.678592205047600205e-01 4.756665229797399919e-01 +2.126226127147700096e-01 2.555029988288899934e-01 1.537133157253300075e-01 6.879135966301000438e-02 1.006154194474200014e-01 1.565359532833099920e-01 5.221835896372999802e-02 +3.031329214572899833e-01 2.403534352779400085e-01 2.974600493907900156e-01 5.235597863792999795e-02 4.119948297738999787e-02 5.573330819607000275e-02 9.764817543329999336e-03 +1.073665991425500066e-01 1.980383545160299963e-01 1.951049864292100089e-01 4.957320168614000322e-02 1.250153928995099972e-01 2.174093723297099989e-01 1.074920892715500037e-01 +4.964048787950999658e-02 1.110208407044400020e-01 9.877905994654000155e-02 2.947906404733999924e-02 1.592055708169899941e-01 2.870173752307900172e-01 2.648575901985200098e-01 +1.520784646272700102e-01 2.063705772161499863e-01 1.779657751321800097e-01 6.994382292032000348e-02 1.198326572775799959e-01 1.907644569873800100e-01 8.304424583911999835e-02 +1.469991058111199955e-01 1.809903085231799880e-01 1.796456128358799864e-01 9.126709401608000538e-02 1.231843456625899974e-01 1.902481764554999899e-01 8.766536414622999596e-02 +1.711228117346999880e-02 2.619430795311999960e-02 2.645420283078999887e-02 1.170749124139999937e-02 1.518442928791000068e-01 2.283488363027600110e-01 5.383386015891999943e-01 +2.741383612155899874e-01 3.310558199882500108e-01 2.759460508823399771e-01 3.849973902105999907e-02 2.879747189581000066e-02 4.604858905077000020e-02 5.513977725059999654e-03 +9.911899454890000724e-03 1.625189743936000103e-02 2.464710548520000072e-02 1.440424658357999932e-02 1.355371028184899906e-01 2.083590030670199877e-01 5.908887386322000390e-01 +3.237812221050300199e-01 3.038673400878900144e-01 2.965505123138399979e-01 4.400886967777999786e-02 1.214250642805999973e-02 1.847583428025000030e-02 1.173739554359999994e-03 +1.382541656494100102e-01 2.497103065252299914e-01 1.805085092783000056e-01 4.248159006237999663e-02 1.127624884247799969e-01 1.965603232383699994e-01 7.972262054681999999e-02 +1.882851123810000069e-03 5.428776144979999968e-03 7.963799871499999475e-03 6.020041182639999759e-03 8.552248030900999609e-02 1.574319899082199936e-01 7.357500791549700381e-01 +5.637409910559999793e-02 1.055242866277699976e-01 9.312257170677000484e-02 2.925399132073000161e-02 1.656578034162499991e-01 2.798371016979199766e-01 2.702301442623100125e-01 +3.454369008541099961e-01 2.188188284635499969e-01 2.758446633815799798e-01 5.219798162579999956e-02 4.342052340507999986e-02 5.405921116470999849e-02 1.022188086063000045e-02 +2.784834504127500221e-01 2.735363841056799861e-01 2.125426083803199917e-01 3.960602730512999964e-02 7.003966718911999734e-02 1.001716628670699938e-01 2.562019228934999879e-02 +1.485614571720000020e-02 4.074158892034999979e-02 3.529150411486999678e-02 1.257953327148999927e-02 1.434655487537400131e-01 2.685733437538099788e-01 4.844923317432400234e-01 +1.827583760023100135e-01 2.202797681093200122e-01 1.587437540292699900e-01 4.215442389250000088e-02 1.243323981761900038e-01 1.868448555469499894e-01 8.488643169402999844e-02 +8.988374471663999887e-02 1.202319636940999970e-01 9.051693975925000080e-02 4.406582191585999703e-02 1.714614778757100055e-01 2.625381052494000222e-01 2.213019281625699941e-01 +1.943773180246400056e-01 3.043719530105600257e-01 2.560388147830999772e-01 4.236155375838000087e-02 6.559995561838000144e-02 1.110530868172600050e-01 2.619732916354999830e-02 +4.573816061019900236e-01 2.452312558889399863e-01 1.887228339910499986e-01 3.977378457784999655e-02 2.914773486555000126e-02 3.503357991575999780e-02 4.709205590190000332e-03 +3.741277754306999992e-02 3.866966813803000141e-02 3.030424751341000145e-02 2.491813525557999912e-02 1.792447715997700086e-01 2.424431741237600135e-01 4.470072388649000139e-01 +5.897588729858399548e-01 1.921313107013699895e-01 1.306796520948400042e-01 3.094939142466000132e-02 2.628657035529999991e-02 2.642001770437000033e-02 3.774180542680000139e-03 +1.403830014169000009e-02 1.992753148078999989e-02 2.388209477066999958e-02 1.131879538297999969e-02 1.459636837243999952e-01 2.123280763626100021e-01 5.725415349006699461e-01 +5.774650722742000197e-02 6.473685801028999931e-02 8.098588883877000377e-02 4.763424023986000122e-02 1.800028234720200127e-01 2.540901303291300262e-01 3.148035407066300251e-01 +5.193930864334000280e-02 1.166880652308499994e-01 9.532950073481000208e-02 2.296840958297000079e-02 1.599780917167699934e-01 2.868163883686100091e-01 2.662802338600199770e-01 +4.922345280647000276e-02 1.028104126453399936e-01 9.609172493218999522e-02 2.966147661208999933e-02 1.618758887052499928e-01 2.841416597366300256e-01 2.761953771114299960e-01 +8.023361675440000493e-03 2.000128477812000011e-02 2.660737559199000124e-02 9.055855683979999182e-03 1.266863048076599940e-01 2.235939800739299987e-01 5.860318541526799985e-01 +3.382004797458999790e-02 8.192765712737999639e-02 9.360035508870999388e-02 2.411895431578000085e-02 1.567695587873499941e-01 2.858180999755899898e-01 3.239453136920900089e-01 +4.149299860001000317e-02 7.956124097109000537e-02 8.701363205909999621e-02 2.377431467175000063e-02 1.652566641569100103e-01 2.769078016281100174e-01 3.259933292865799803e-01 +2.253180369735000022e-02 5.328047275542999867e-02 8.598947525024000504e-02 2.448311448097000020e-02 1.521623730659500129e-01 2.719047665595999974e-01 3.896480202674900140e-01 +1.741929650306699995e-01 2.368934750556900004e-01 2.841692268848399761e-01 6.521744281053999670e-02 7.796182483435000476e-02 1.251290887594199985e-01 3.643598780035999657e-02 +1.147107407451000011e-02 2.222595550120000027e-02 2.992480248212999946e-02 1.947789266706000111e-02 1.400953829288499874e-01 2.321670204401000137e-01 5.446378588676500376e-01 +1.126805320381999917e-02 3.332998603581999869e-02 3.416417911649000105e-02 1.245294418185999979e-02 1.358380466699599942e-01 2.600298225879700276e-01 5.129169821739200108e-01 +3.295107558370000134e-02 2.840499021113000039e-02 2.399674803019000158e-02 1.454592682420999955e-02 1.763318032026300053e-01 2.181937992572799967e-01 5.055756568908700288e-01 +6.168788671494000037e-02 1.374866068363199967e-01 1.074002981185900041e-01 4.529239237308999716e-02 1.535282284021400045e-01 2.831902801990500151e-01 2.114142924547199875e-01 +5.844229087233999975e-02 1.015885546803499961e-01 9.068280458449999581e-02 2.921823970973000048e-02 1.683791279792800077e-01 2.767051458358800176e-01 2.749838531017300136e-01 +5.671088397502999784e-02 1.535351872444200017e-01 1.140783727168999950e-01 4.477160423993999799e-02 1.453653723001500087e-01 2.884473502636000219e-01 1.970912367105500107e-01 +3.103690743446400058e-01 3.088406324386600010e-01 2.581727802753400192e-01 4.619344323874000069e-02 2.848343923688000101e-02 4.284327477217000218e-02 5.097373854369999756e-03 +1.995589435100600106e-01 2.121950685977899986e-01 1.564302295446400037e-01 7.668015360832000638e-02 1.162960007786800060e-01 1.711535304784800038e-01 6.768608093262000469e-02 +4.074200093746199736e-01 2.663030326366400136e-01 2.122887969016999943e-01 3.519128635525999721e-02 3.216544166206999900e-02 4.095050320028999907e-02 5.680931732059999600e-03 +2.962872982025099855e-01 2.913672029972099731e-01 1.959268152713800060e-01 6.203693896531999735e-02 5.595740303397000320e-02 8.254840224980999897e-02 1.587593741715000173e-02 +4.235332608222999728e-01 2.870559692382799732e-01 1.869311928749100016e-01 4.244091361761000158e-02 2.435632236301999917e-02 3.226794302463999869e-02 3.414404345680000039e-03 +1.237080432475000033e-02 1.135315001011000073e-02 1.635839231312000153e-02 7.679557427760000214e-03 1.424407064914700038e-01 1.730523705482500119e-01 6.367450356483500551e-01 +1.758419908580000079e-03 8.329322561620000620e-03 1.102335471660000066e-02 8.440384641290000697e-03 8.689922094344999792e-02 1.937241256237000053e-01 6.898251771926899867e-01 +2.327714860439299982e-01 3.093163669109300074e-01 2.284482717514000061e-01 4.635512083769000036e-02 6.199926882982000065e-02 9.982690215110999465e-02 2.128259837627000106e-02 +3.135150671005200174e-01 1.746128350496299886e-01 1.161155998706800002e-01 6.724809110165000381e-02 1.224767118692400014e-01 1.426398456096600043e-01 6.339184939861000623e-02 +1.196743734180999962e-02 2.574791572987999988e-02 2.843147516250999970e-02 1.163162756710999987e-02 1.410913914442100126e-01 2.387507855892199993e-01 5.423793792724600493e-01 +2.216805331409000060e-02 3.438608720899000160e-02 3.258327394723999765e-02 2.494775690137999991e-02 1.625697463750800098e-01 2.526247203350099890e-01 4.707203507423399769e-01 +5.769853014500000293e-03 1.501400116831000039e-02 2.543063089252000156e-02 1.101903803647000073e-02 1.194266676902800001e-01 2.137124687433200054e-01 6.096273660659800031e-01 +1.464755274355000053e-02 4.403671622276000147e-02 3.617892041801999692e-02 1.236570347099999988e-02 1.436687856912599870e-01 2.775313854217499876e-01 4.715709388256100199e-01 +9.323022328319999913e-03 1.885824464261999858e-02 2.413326501845999839e-02 8.654518052939999539e-03 1.330757737159700138e-01 2.169194519519800080e-01 5.890357494354200307e-01 +2.529451549053199910e-01 3.091334402561199957e-01 2.164751142263399986e-01 4.440699517727000195e-02 6.117752194405000343e-02 9.568847715855000047e-02 2.017328329384000113e-02 +2.133807241916700070e-01 1.753870099782899872e-01 1.480930298566799919e-01 8.133942633867000116e-02 1.292650848627099891e-01 1.723231077194199989e-01 8.021161705255999697e-02 +7.472320459779999841e-03 2.839603833854000003e-02 3.428899869323000227e-02 1.210975646973000072e-02 1.250682324171099868e-01 2.600257992744399727e-01 5.326388478279100447e-01 +1.109694913029699997e-01 2.318646013736699873e-01 1.924083530902900019e-01 4.496634379028999901e-02 1.165713444352200062e-01 2.125388085842100094e-01 9.068106114863999645e-02 +1.748821586370500059e-01 1.811247318983099930e-01 1.556251794099799968e-01 4.533270373940000153e-02 1.402711272239700047e-01 1.974446028470999981e-01 1.053195074200599934e-01 +7.618716359138000271e-02 1.219611838459999931e-01 9.432774782180999851e-02 4.381551593541999773e-02 1.677803248166999939e-01 2.730571627616900088e-01 2.228708714246699918e-01 +5.088376812639999920e-03 1.039684005082000019e-02 1.995814777911000121e-02 7.954347878689999735e-03 1.148911565542199975e-01 1.855138838291200132e-01 6.561972498893700045e-01 +1.040465664120000062e-03 2.841321751480000140e-03 5.396045744419999957e-03 3.039170755069999907e-03 7.092922925948999535e-02 1.239123195409800038e-01 7.928414344787599877e-01 +1.435236912220999930e-02 2.629745751619000024e-02 2.732200734317000168e-02 1.154071372001999954e-02 1.472662389278399930e-01 2.353985309600800102e-01 5.378226637840299862e-01 +6.314101070166000529e-02 1.020171791315099968e-01 8.322292566298999938e-02 2.212786115705999909e-02 1.738318353891399881e-01 2.750286459922799964e-01 2.806305587291699766e-01 +4.428603127598999822e-02 6.340982019900999467e-02 7.521814107895000157e-02 2.292697131634000018e-02 1.758371442556400099e-01 2.629183530807500113e-01 3.554035425186199970e-01 +7.335186749696999409e-02 1.076007038354900025e-01 9.118434041739000018e-02 4.455978050828000164e-02 1.721993088722200138e-01 2.706019878387500022e-01 2.405019998550400051e-01 +1.172251533716999958e-02 2.298229373990999871e-02 2.678282186388999953e-02 1.143145561217999949e-02 1.409208774566700073e-01 2.300606369972200138e-01 5.560994148254400082e-01 +2.006459534168200110e-01 2.920307517051700108e-01 2.519858479499800241e-01 4.290174692868999745e-02 6.982855498791000481e-02 1.145194843411399960e-01 2.808764949440999831e-02 +6.578002870082999554e-02 8.805594593287000005e-02 8.388628065585999882e-02 3.596217557787999980e-02 1.783384382724799988e-01 2.672873735427899744e-01 2.806897759437599893e-01 +1.817458122968700074e-01 2.193190455436699882e-01 2.773832380771599770e-01 6.691957265138999411e-02 8.475428819656000146e-02 1.294415444135700033e-01 4.043651372194000115e-02 +6.405317783356000161e-02 1.046642512083099941e-01 8.728251606225999326e-02 2.812813408673000073e-02 1.722394227981600134e-01 2.761833667755099753e-01 2.674491405487099960e-01 +1.242973059415800052e-01 1.316777616739299994e-01 8.107832074165000069e-02 4.011065885424999755e-02 1.768215298652600076e-01 2.491452544927600099e-01 1.968691498041200139e-01 +1.165176462381999935e-02 2.513561211526000108e-02 2.825465053320000072e-02 1.160532981156999974e-02 1.403047740459399950e-01 2.375144362449599922e-01 5.455334186553999487e-01 +4.867148771882000291e-02 1.126550361514099957e-01 1.017674058675799992e-01 3.648368641733999718e-02 1.581990420818299992e-01 2.903868556022600189e-01 2.518364787101700086e-01 +5.124494060873999862e-02 9.446614235639999579e-02 8.980781584977999554e-02 2.890885621309000064e-02 1.682752370834399991e-01 2.808405160903900133e-01 2.864564955234499832e-01 +2.800154685974000010e-02 5.410258844495000052e-02 8.342090249061999419e-02 3.013801015913000064e-02 1.613448262214700057e-01 2.696926593780499815e-01 3.732994496822399921e-01 +8.536815643311000679e-02 1.387405991554299944e-01 1.927574723958999925e-01 5.577390268444999688e-02 1.430068016052200019e-01 2.338208109140400004e-01 1.505322605371499922e-01 +1.045366935431999919e-02 2.036019600928000092e-02 2.860799245535999846e-02 1.880231127142999864e-02 1.389266848564099932e-01 2.294166833162299968e-01 5.534324645996100411e-01 +6.837713718413999942e-02 6.188210844994000009e-02 6.763788312674000325e-02 2.799048274755000162e-02 1.919601261615800081e-01 2.456255257129699998e-01 3.365267515182500113e-01 +8.826115727425000446e-02 1.290332078933700000e-01 8.483448624610999411e-02 2.652482129632999924e-02 1.731612533330899872e-01 2.686143219470999988e-01 2.295707315206499954e-01 +6.571844965218999468e-02 1.480190902948400056e-01 1.056034937501000026e-01 4.332124814391000167e-02 1.536456048488600012e-01 2.841855585575099874e-01 1.995065510272999998e-01 +2.335825935006000109e-02 4.435761272907000341e-02 7.609946280717999612e-02 2.352163940667999914e-02 1.587510704994199995e-01 2.601599097251899861e-01 4.137520492076899870e-01 +2.728531062603000157e-01 3.474999666213999805e-01 1.931369751691799919e-01 3.678281977772999978e-02 5.187725275755000059e-02 8.299938589333999417e-02 1.485049072653000027e-02 +1.262743324041399884e-01 1.162425577640500002e-01 7.706663757562999539e-02 4.056568816304000069e-02 1.834487169981000032e-01 2.449057847261399967e-01 2.114962935447700088e-01 +1.546838581562000048e-01 2.180732786655399935e-01 1.745322197675699960e-01 6.645824760198999759e-02 1.180007681250599960e-01 1.901866793632500108e-01 7.806494832039000131e-02 +1.078518945723999992e-02 3.191474452615000040e-02 3.306305781006999706e-02 1.208241842687000044e-02 1.362051218748099868e-01 2.596248686313599729e-01 5.163245797157299810e-01 +4.326601326465600028e-01 2.616542279720299735e-01 1.349317282438300125e-01 5.567893385887000279e-02 4.647436365484999832e-02 5.842956528068000283e-02 1.017102319746999994e-02 +2.815341651439700055e-01 2.418274432420700060e-01 3.104211091995199845e-01 5.385402962565000173e-02 4.273637756705000318e-02 5.922424420714000187e-02 1.040264684707000072e-02 +6.907889246940999983e-02 1.165919378399799949e-01 1.873221695423100130e-01 4.607647657393999785e-02 1.511287242174099987e-01 2.458988726139099967e-01 1.839029192924500067e-01 +4.251056015491500029e-01 2.517943680286400254e-01 2.057117074727999873e-01 3.535171225666999817e-02 3.419073671102999812e-02 4.177952930330999792e-02 6.066353060310000073e-03 +1.168247833847999989e-01 1.107919514179200038e-01 1.547310948371899975e-01 4.359336197376000033e-02 1.695291548967400030e-01 2.242519259452800118e-01 1.802777200937299984e-01 +4.462399482727100186e-01 2.663668096065500146e-01 1.834792941808700006e-01 3.633331879973000084e-02 2.820805646479000034e-02 3.510731831193000113e-02 4.265255760399999825e-03 +1.631519049406099930e-01 1.945147961378100032e-01 2.856588065624199868e-01 5.953605100513000015e-02 9.765393286942999906e-02 1.457048505544699946e-01 5.377964302897000198e-02 +1.829935014247900116e-01 2.154085785150499921e-01 1.607947349548299876e-01 7.668995112180999885e-02 1.170517429709399954e-01 1.780201941728599968e-01 6.904130429028999816e-02 +8.694937825203000181e-02 7.285709679127000404e-02 7.151921093464000401e-02 4.301085323094999691e-02 1.946921646595000110e-01 2.469126582145700077e-01 2.840586602687800166e-01 +3.706785738468200142e-01 2.653352022170999969e-01 2.358929067850099870e-01 3.917202726006999841e-02 3.562094643712000047e-02 4.653276875614999891e-02 6.767563056200000260e-03 +2.949509620666500020e-01 1.928299218416200111e-01 2.091039419174199887e-01 4.813367500901000184e-02 9.650244563818000110e-02 1.166324093937900069e-01 4.184662550688000165e-02 +8.282438851890000855e-03 1.770217344164999942e-02 2.354495227337000118e-02 8.389741182329999228e-03 1.308995783329000018e-01 2.165763825178100010e-01 5.946047306060799897e-01 +4.382149875164000064e-02 6.213381886482000072e-02 8.311000466347000237e-02 4.635942727326999857e-02 1.748910248279600121e-01 2.663480937480899868e-01 3.233361244201700124e-01 +3.107443153858199802e-01 3.289466500282299810e-01 2.413066625595099990e-01 4.945931211113999831e-02 2.571580372750999904e-02 3.981023654342000229e-02 4.017020110040000168e-03 +2.578238584100999917e-02 5.007442086935000314e-02 8.057630807160999498e-02 2.939410321413999869e-02 1.616565585136399974e-01 2.692588567733800176e-01 3.832573890686000184e-01 +4.242073595523799812e-01 2.619421780109399966e-01 2.016594558954200034e-01 3.368409350513999756e-02 3.251222893596000113e-02 4.041802138089999746e-02 5.576654337349999831e-03 +8.681289851665000001e-02 1.516784876585000053e-01 1.968482434749599941e-01 6.614986807108000355e-02 1.365147531032600003e-01 2.310839593410499992e-01 1.309117823839200112e-01 +1.109854206442800056e-01 1.493328362703300050e-01 1.718037724494899943e-01 4.136738553642999722e-02 1.511862725019499920e-01 2.288227528333700023e-01 1.465015560388600036e-01 +6.333546340465999458e-02 8.289205282926999374e-02 8.103808760642999820e-02 3.521504253148999980e-02 1.811447888612700008e-01 2.679375112056699981e-01 2.884370386600499936e-01 +1.344496477394999980e-02 2.035493776201999921e-02 2.743677049874999885e-02 2.325221896172000036e-02 1.498296409845399912e-01 2.272118031978599961e-01 5.384696722030599680e-01 +2.861680984497099733e-01 3.010147809982299805e-01 2.788756489753699830e-01 4.170784354209999822e-02 3.411334007978000099e-02 5.125749856233999951e-02 6.862785667180000201e-03 +1.288293022661999958e-02 3.312529250979000250e-02 3.144331276416999915e-02 1.170665491371999933e-02 1.435290277004200032e-01 2.595159709453599972e-01 5.077968239784199644e-01 +3.126183152198999671e-02 6.525708734988999726e-02 8.654699474572999374e-02 2.933578938245999870e-02 1.629368066787700020e-01 2.804257869720500063e-01 3.442356884479499946e-01 +2.717609982939999964e-03 6.622430868449999744e-03 7.003782317040000219e-03 3.489015856760000010e-03 9.467101097107000207e-02 1.610050350427600085e-01 7.244911193847699549e-01 +1.189761832356499988e-01 1.874512732029000039e-01 1.800947487354299936e-01 4.764172434806999978e-02 1.346217542886699869e-01 2.193461507558799872e-01 1.118681654334099940e-01 +5.002234131100000147e-03 1.445727422832999987e-02 2.534693107008999940e-02 1.073857583106000053e-02 1.166483983397500063e-01 2.158198803663300136e-01 6.119866967201199603e-01 +1.714146509766999865e-02 3.396657854318999720e-02 3.251764178276000256e-02 1.918139494956000099e-02 1.545853316783900033e-01 2.590611279010799906e-01 4.835464656353000157e-01 +2.096424698829700006e-01 3.232515454292300139e-01 2.361880391836199966e-01 4.569086804986000061e-02 6.096326187252999740e-02 1.032819077372599953e-01 2.098191343248000107e-02 +4.923133924603000089e-02 7.899701595305999580e-02 8.244603127241000029e-02 2.836482971906999911e-02 1.747558116912799886e-01 2.752163112163499847e-01 3.109886348247499765e-01 +1.143376901745799951e-01 1.275048404931999890e-01 1.716870069503800000e-01 6.668648123741000022e-02 1.537871658801999997e-01 2.205024808645200118e-01 1.454943269491200120e-01 +4.191176965833000312e-02 7.351271063089000191e-02 8.384269475937000671e-02 2.875943668187000077e-02 1.708843559026700099e-01 2.772574424743700083e-01 3.238315880298600069e-01 +2.220009863376599946e-01 2.656928896904000026e-01 2.411077916622199890e-01 4.412055760622000250e-02 7.763012498617000157e-02 1.178180947899799963e-01 3.162956982850999993e-02 +2.685750126838700180e-01 3.380597531795500044e-01 1.965172588825200017e-01 4.595049470662999902e-02 5.242837220430000139e-02 8.389297872782000565e-02 1.457612682133999950e-02 +4.275822937488599762e-01 2.825438976287800164e-01 1.853184252977400082e-01 4.247111082076999999e-02 2.537089772521999853e-02 3.315795585512999744e-02 3.555424511430000083e-03 +3.894548490644000188e-02 6.336700916290000096e-02 7.656698673964000557e-02 2.256580628454999890e-02 1.728398352861399978e-01 2.695923745632199942e-01 3.561224937438999816e-01 +4.771839361640000006e-03 1.523849740624000013e-02 2.649871632457000137e-02 1.087095495313000065e-02 1.152077317237899939e-01 2.211647033691399866e-01 6.062475442886400279e-01 +1.407602578401599969e-01 1.685544401407199910e-01 1.656275540590300133e-01 4.786958917974999672e-02 1.447646021843000119e-01 2.131169587373699936e-01 1.193066090345400038e-01 +2.075707316398600066e-01 2.631570994854000034e-01 2.504598200321199730e-01 4.562348872422999913e-02 7.852815091610000631e-02 1.215403974056200043e-01 3.312031179667000030e-02 +3.775886595249199895e-01 2.578525245189700055e-01 2.345574349164999961e-01 3.974873572588000226e-02 3.646576404572000191e-02 4.678547382355000006e-02 7.001395802939999746e-03 +2.547349929809599733e-01 2.402648031711600018e-01 2.275487035512900047e-01 5.470038577913999972e-02 7.979167997837000037e-02 1.119190901517899961e-01 3.104034252464999907e-02 +4.359968937929999816e-03 1.014447771013000064e-02 2.011582255363000143e-02 7.776107639070000029e-03 1.118765920400599939e-01 1.885031163692499900e-01 6.572239398956299938e-01 +7.845694199200000524e-03 2.563236467540000105e-02 3.127068653703000273e-02 1.158696040510999968e-02 1.286395788192699896e-01 2.519068121910100211e-01 5.431178808212300257e-01 +1.323905885219600065e-01 1.393805742263800052e-01 1.697163432836500119e-01 7.893353700638000570e-02 1.470868587493900093e-01 2.092384397983599875e-01 1.232536435127299934e-01 +7.808768190440000360e-03 1.890680752694999869e-02 2.489110082387999828e-02 8.519651368260000232e-03 1.288883835077299922e-01 2.233127802610400114e-01 5.876725316047699543e-01 +3.325097262859300074e-01 3.037833273410799895e-01 2.418254613876300030e-01 4.380130767821999865e-02 2.980589307844999994e-02 4.316552355885999726e-02 5.108782555910000404e-03 +3.054285645484899891e-01 3.089483082294500194e-01 2.608475089073200026e-01 3.850347548723000168e-02 3.225350379944000312e-02 4.791620746255000063e-02 6.102413404729999623e-03 +2.160700969400000150e-03 9.401968680320000118e-03 8.799495175479999515e-03 2.947779837999999885e-03 8.933829516171999663e-02 1.868428736925099864e-01 7.005088925361599994e-01 +3.438853919506100199e-01 2.184329628944400026e-01 2.700845599174500067e-01 6.139931082726000217e-02 4.301906749605999974e-02 5.374596267938999694e-02 9.432766586539999276e-03 +9.693040698766999808e-02 1.868023276329000004e-01 1.886351853609100071e-01 3.937081620097000051e-02 1.336338967084899909e-01 2.317475527524900103e-01 1.228798180818600067e-01 +5.751969758420000418e-03 1.232359278946999932e-02 2.214344218372999926e-02 1.033241208642999946e-02 1.208615750074400058e-01 2.001872360706299925e-01 6.283997893333399531e-01 +1.100786104798300025e-01 1.623607724904999883e-01 1.756884008645999973e-01 4.048075899482000278e-02 1.457767188549000115e-01 2.286549061536800043e-01 1.369598358869600074e-01 +2.012979984283400081e-01 1.950774192810099950e-01 2.622690498828900152e-01 6.868859380484000632e-02 9.447166323661999876e-02 1.323207020759600006e-01 4.587456211448000254e-02 +4.882647469640000182e-02 1.369443088769899952e-01 1.105909198522599945e-01 4.389858618379000044e-02 1.494908332824700092e-01 2.972697615623500211e-01 2.129791080951700111e-01 +1.920693218708000027e-01 2.005977034568799944e-01 2.680394947528800254e-01 6.852555274963000043e-02 9.251899272202999958e-02 1.332211792468999956e-01 4.502773657440999749e-02 +3.028587102890000216e-01 1.656216830015199981e-01 1.163087710738199970e-01 6.871616095304000638e-02 1.291249096393599916e-01 1.485080122947700088e-01 6.886175274849000438e-02 +2.468166798353199909e-01 2.337580472230899875e-01 2.295641750097300038e-01 9.835277497767999644e-02 6.877275556325999906e-02 9.942544996737999463e-02 2.331010624766000072e-02 +2.807640135288200223e-01 3.170290887355800002e-01 1.948976069688800050e-01 3.269849717617000218e-02 6.186990812420999769e-02 9.308432042599000533e-02 1.965656876563999858e-02 +6.381229311227999690e-02 7.328605651854999681e-02 7.337944209576000021e-02 2.760724350809999963e-02 1.866490393876999998e-01 2.603375613689399848e-01 3.149283528327900261e-01 +2.647932432592000132e-02 4.892522096633999951e-02 7.905008643866000273e-02 2.930518239737000055e-02 1.631685942411399970e-01 2.668102681636799756e-01 3.862613141536699879e-01 +2.100077122449900136e-01 2.108735144138300099e-01 1.497358977794600032e-01 7.391480356455000511e-02 1.184388622641600053e-01 1.701955646276500089e-01 6.683364510535999559e-02 +1.808355301618599920e-01 1.877612024545700087e-01 1.473128795623800114e-01 3.460756689310000300e-02 1.431573480367699935e-01 1.994702517986300105e-01 1.068551987409600001e-01 +4.510983359069999955e-03 9.739061817530000539e-03 1.943087764083999830e-02 7.694859523330000069e-03 1.127758920192700048e-01 1.848329752683600113e-01 6.610153317451500365e-01 +8.650088682770000481e-03 2.067561075091000136e-02 2.982536703347999849e-02 1.855948753654999839e-02 1.340900957584399977e-01 2.375427037477499947e-01 5.506566166877699953e-01 +4.117161333560899750e-01 3.203018307685899790e-01 1.803558468818700078e-01 2.584571018814999996e-02 2.460716478526999915e-02 3.363783285021999803e-02 3.535494208339999903e-03 +3.432532772420000215e-03 1.142612658440999955e-02 1.092464197427000031e-02 8.523369207980000667e-03 1.044509336352300033e-01 2.059041410684600004e-01 6.553382277488699614e-01 +1.144660054710000020e-03 1.956095453350000044e-03 4.030622541899999897e-03 2.670928835869999882e-03 7.200062274933000106e-02 1.051927804946899969e-01 8.130043148994400282e-01 +2.791899256408000157e-02 4.668654501438000010e-02 7.605320960283000475e-02 2.911642566323000003e-02 1.661683768033999919e-01 2.618742585182199933e-01 3.921822011470800229e-01 +5.181264132260000356e-03 1.389497425407000032e-02 2.451116405427000017e-02 1.063822209834999928e-02 1.177171543240499996e-01 2.118538171052899988e-01 6.162034273147599661e-01 +4.071109928190000393e-03 1.100170519203000005e-02 2.154932543634999892e-02 7.937623187900000668e-03 1.100500449538199949e-01 1.959755122661600013e-01 6.494146585464499744e-01 +1.415059566497799959e-01 1.365789771079999881e-01 1.530241519212700019e-01 4.042722284794000170e-02 1.616834402084399991e-01 2.168035805225400070e-01 1.499766707420299994e-01 diff --git a/statsmodels/discrete/tests/results/poisson_resid.csv b/statsmodels/discrete/tests/results/poisson_resid.csv new file mode 100644 index 0000000..509456b --- /dev/null +++ b/statsmodels/discrete/tests/results/poisson_resid.csv @@ -0,0 +1 @@ + -2.48, -0.48, -2.48, -2.48, -2.48, -2.51, -2.51, -1.51, -2.51, -2.51, -2.51, -1.51, -2.51, -2.51, -2.51, 3.52, -0.48, -2.48, -2.48, -2.48, -2.07, -3.07, -3.07, -3.07, -3.07, -2.93, -3.93, -2.93, -1.93, 0.07, -3.48, -3.48, -3.48, -3.48, -3.48, -1.82, -1.82, -1.82, -3.82, -3.82, -3.82, -1.85, -2.85, -2.85, -3.82, -3.82, -3.82, -2.82, -3.82, 3.18, -1.33, -2.33, -0.33, 5.99, -1.01, -0.01, -1.71, -1.71, -2.71, 1.20, 2.20, 11.20, 0.59, 0.59, 2.59, -1.59, -2.59, 2.41, -2.59, -1.59, -1.63, -1.63, 0.37, -0.63, -1.63, -3.17, -4.17, 0.83, -3.17, -4.17, 2.41, 0.41, -2.59, -2.59, -2.59, 1.41, -2.59, -1.59, -2.59, -1.59, -3.56, -3.56, -4.56, 12.10, 3.10, -0.90, 2.12, 2.12, 1.12, 17.69, 11.69, 16.69, 16.69, 13.69, 3.41, 4.41, 2.41, 11.41, 6.41, 4.41, 1.41, 5.41, -4.17, -4.17, -5.17, -1.64, -1.64, -2.64, -0.56, 2.44, 10.44, -0.00, -1.00, -1.00, -1.48, 0.52, -0.48, -0.09, -0.09, -1.09, -0.17, -2.17, 0.83, 16.75, 11.75, 7.75, 63.43, 52.43, 57.43, -3.28, -2.28, -3.28, 7.79, 5.79, 1.79, -0.21, 4.79, 2.83, -0.17, 0.83, -0.17, -1.17, 2.36, 6.36, 8.36, 31.87, 5.87, 2.87, 2.87, 10.87, 2.52, 1.52, -0.48, -2.48, -2.48, -1.51, -0.51, -1.51, 2.49, 0.49, 0.49, 0.49, 0.49, -1.51, -0.51, 0.49, -0.51, -1.51, -1.51, -1.51, -0.51, 0.49, -2.51, -1.51, -1.51, 10.55, 10.55, 11.55, -3.13, -3.13, -0.13, -0.01, 1.99, 0.99, 3.70, 0.70, 0.70, 4.99, 0.99, 4.99, 3.11, 3.11, -0.89, 0.79, -3.21, 0.79, 3.84, -0.16, 2.84, 2.08, 14.08, -4.92, 7.59, 2.59, -1.41, -3.89, -3.89, -2.89, 5.11, -1.89, -1.89, -0.89, -0.89, -1.89, 1.47, 0.47, 0.47, 1.47, -0.53, -1.56, -0.56, -2.56, -2.56, -2.56, -0.53, -1.53, -1.53, -0.53, -0.53, 1.44, 2.44, 1.44, 1.44, 2.44, 0.50, 1.50, -1.50, 0.50, 0.50, -1.89, -2.89, -0.89, 0.11, -2.89, 0.18, 0.18, 0.18, 0.18, -0.82, 1.19, 0.19, 7.19, 2.19, 8.19, 2.10, 0.10, -0.90, -2.90, 2.10, 3.64, -2.36, -1.36, -2.36, 1.64, -0.56, -2.56, 0.44, 0.44, -1.56, 1.44, -2.56, -1.56, -2.56, -1.56, 7.65, 3.65, -3.35, -1.56, -0.56, 1.44, -2.56, -2.56, -1.56, -2.56, -2.56, -2.56, 1.19, 7.19, -1.81, -1.94, -0.94, -1.94, -0.94, -0.94, -1.94, -0.82, -1.82, -1.82, -1.84, -1.84, 0.16, 1.24, 0.24, -0.76, -0.76, 0.24, -3.59, -3.59, -3.59, -0.59, -3.59, 3.67, -1.33, -2.33, 2.67, -1.33, 8.26, 41.26, 4.26, -1.42, -1.42, 0.58, -3.25, -0.25, -2.25, -0.23, -2.23, -5.23, -1.40, -1.40, -1.40, -0.18, -1.18, -1.18, 1.44, -0.56, -1.56, 0.52, 14.52, 18.52, -2.70, -2.70, -4.70, 4.82, -4.18, -4.18, -3.18, -4.18, -1.21, -3.21, -3.21, -0.21, -3.21, -2.21, -3.21, -3.21, -1.21, -3.21, -3.21, 3.79, 1.79, -3.21, -2.21, -1.17, -3.17, -3.17, -2.17, -3.17, -1.21, -1.21, -3.21, -3.21, -3.21, -3.17, -2.17, -3.17, 2.83, -3.17, -0.17, 0.83, 1.83, -3.39, -3.39, -3.39, 4.55, 4.55, 5.55, -0.73, 2.27, 6.27, 45.27, 5.27, 3.18, 6.18, 12.18, 2.49, 7.49, 1.49, 4.49, 3.49, 0.49, -1.29, -1.29, -1.29, -0.58, -1.58, -1.58, 18.52, 13.52, 6.52, 3.52, 8.52, 35.78, 18.78, 4.78, 4.78, 18.78, 0.50, -2.50, 0.50, -1.56, -1.56, -2.56, -0.56, -1.56, 0.44, -2.90, -2.90, 4.10, -1.50, -1.50, -0.50, -2.42, -2.42, -0.42, -3.69, -3.69, -3.69, -0.09, -0.09, 2.97, -0.03, 4.97, 5.97, 4.97, 2.91, 6.91, 4.91, 0.91, 1.91, 0.26, 0.26, -1.74, -2.74, 0.26, 1.58, -1.42, -1.42, 0.58, -0.42, -2.48, -3.48, -2.48, -0.48, -2.48, -2.71, -3.71, -1.71, -4.71, -3.71, -3.31, -3.31, -3.31, -3.31, -3.31, -2.56, -1.56, 0.44, -1.56, 1.44, -1.56, -1.56, -2.56, -2.56, -1.56, -2.56, -1.56, -1.56, 0.44, -1.56, -3.35, -0.35, -2.35, -3.35, -3.35, -3.35, 0.65, -1.35, -1.35, -3.35, -0.38, -1.38, -1.38, -2.38, 2.62, -1.38, 3.59, -1.41, 0.59, 1.67, -0.33, -1.33, -2.71, -1.71, -1.71, -1.33, -2.33, -1.33, 0.79, -3.21, -1.21, -1.33, 5.67, 0.67, 1.29, -2.71, -1.71, -1.16, -2.16, -0.16, 4.84, 2.84, -0.47, -0.47, -0.47, 3.53, -0.47, 6.36, 3.36, 4.36, 0.36, -0.64, 6.36, 11.36, 12.36, -0.64, 2.36, -2.21, 1.79, -2.21, 1.79, 10.79, -1.21, -0.21, -2.21, -3.21, 9.79, -3.00, 5.00, -3.00, -2.00, -2.00, -2.00, 1.00, -2.00, -2.00, 2.00, -3.95, -3.95, -3.95, -1.95, -1.95, 2.08, 0.08, 1.08, -2.92, -1.92, 0.08, 0.08, -2.92, -2.92, -1.92, 6.08, 3.08, 1.08, 0.08, 0.08, -2.17, -2.17, -2.17, 0.83, 0.83, 0.83, -3.17, 0.83, -0.17, -0.17, 1.83, 0.83, -3.17, -1.17, 0.83, 0.44, 3.44, 1.44, -0.56, 4.44, 3.44, -1.56, -2.56, -0.56, -2.56, -2.56, 2.44, 0.44, -2.56, -1.56, 5.44, 4.44, -1.56, 0.44, -0.56, -1.56, 1.44, -1.56, 2.47, -1.53, -0.53, 10.30, 9.30, 10.30, -0.59, -1.59, -2.59, 2.41, 0.41, -1.59, -0.59, -1.59, -1.59, -1.59, 2.41, -2.59, 0.41, 3.41, 0.41, 2.41, 3.41, -2.59, -2.87, 1.13, -2.87, -1.56, -0.56, -0.56, 0.44, -1.56, -1.56, -0.56, -1.56, -0.56, -1.56, 0.11, 0.11, 0.11, -2.89, -0.89, -0.89, 8.11, 10.11, 1.11, 6.11, -0.16, -0.16, -0.16, -1.16, -1.16, -0.89, -1.89, -2.89, 1.11, -2.89, 16.49, -0.51, 1.49, 12.52, 7.52, 4.52, 0.45, -2.55, -2.55, -1.55, -2.55, 0.50, -2.50, -4.50, -1.50, -0.50, -1.96, -0.96, 1.04, -2.13, -3.13, 0.87, 0.95, -1.05, 2.95, -2.13, -1.13, 1.87, -1.59, -1.40, 0.41, -0.59, 0.65, 0.65, 3.65, -1.63, -1.63, -0.63, 3.87, 1.87, -2.13, 0.12, 1.12, 12.12, -1.86, -1.86, -0.86, 0.14, 0.14, -0.89, -2.89, -2.89, 4.11, 0.11, 0.50, 0.50, 0.50, -2.50, -2.50, -2.51, -0.51, 1.49, -2.48, -1.48, -1.48, -4.04, -4.04, -4.04, -0.48, -1.48, -0.48, -2.56, -1.56, -1.86, -1.86, 1.14, 0.14, -1.86, -1.86, -2.56, -2.56, -2.30, 2.70, -1.03, 2.97, -3.03, -3.07, -3.07, -1.07, 30.99, 15.99, 11.99, 4.99, 11.99, 18.94, 5.94, 9.94, 4.94, 1.94, -1.53, -1.53, -1.53, -2.53, -2.53, -2.53, -2.53, -2.53, 0.47, -2.53, -2.53, -2.53, -0.53, -1.53, -1.53, -2.53, -2.53, -2.53, 1.47, -0.53, 5.47, 7.47, 2.47, 2.47, -0.56, -1.56, -0.56, 2.47, 4.47, 7.47, -1.97, -1.97, 0.03, -1.97, -1.97, -0.46, 0.54, -1.46, -1.46, 1.54, 12.54, 6.54, 7.54, -0.46, 1.54, 1.54, -0.46, -2.46, 0.54, -2.46, 2.39, -1.61, 1.39, 1.64, -5.36, 0.64, -3.21, -3.21, -2.21, -2.21, -2.21, -3.13, -3.13, -3.13, -3.13, -3.13, -2.17, -1.17, -1.17, -1.17, -1.17, -3.21, -3.21, -1.21, -2.21, -3.21, 4.29, -0.71, -0.71, -1.71, 1.29, -4.98, -4.98, -1.98, -2.98, -3.98, -2.47, 0.53, 2.53, -2.33, -1.33, -0.33, -1.33, -2.33, 2.67, -2.33, 2.67, -2.33, -2.33, 3.41, -2.59, -2.59, -0.59, 0.41, -0.16, -2.16, -1.16, -1.16, -2.16, 4.64, -2.36, 1.64, -0.36, 3.64, -3.06, -3.06, -3.06, -3.06, -2.06, 0.24, -2.76, -2.76, -4.76, -3.76, -2.71, -1.71, -0.71, 0.29, 0.29, -2.71, -0.71, -2.71, -1.71, -1.71, 0.29, 0.29, -2.71, -1.71, -1.71, -0.71, -0.71, -2.71, -1.71, 2.29, -1.56, -1.56, -1.56, -0.82, -1.82, -1.82, 1.51, -2.49, -2.49, -2.49, -2.49, -1.25, -2.25, -3.25, -1.48, -1.48, -2.48, -1.48, -2.48, -2.48, 0.52, 5.52, -2.48, -0.25, 8.75, 14.75, 5.55, 1.55, 10.55, -0.51, -2.51, -1.51, -0.45, -0.45, 1.55, 3.55, -2.45, 5.55, -2.12, -2.12, 4.88, -3.51, -3.51, -2.51, 7.49, -1.51, 1.44, -0.56, 0.44, -0.56, -0.56, -3.91, -4.91, -3.91, -2.91, -2.91, -1.86, -1.86, -1.86, -1.86, -1.86, 3.01, 2.01, 8.01, 1.06, 6.06, 1.06, -0.99, 3.01, -3.99, -1.59, -2.59, 0.41, -2.94, -2.94, -1.94, -2.40, -2.40, -0.40, 5.50, 5.50, 5.50, 3.14, 0.14, 1.14, 2.64, 0.64, 1.64, -2.56, -2.56, -2.56, -2.56, -2.56, -2.56, 4.05, 6.05, 2.05, -3.00, -3.00, -3.00, -3.37, -4.37, -4.37, -2.51, -2.51, -2.51, -1.51, -1.51, -2.51, 2.14, 4.14, 2.14, 1.14, 6.14, 3.50, -0.50, 0.50, 3.50, -2.50, 1.14, -0.86, 0.14, 4.14, 9.14, -0.63, -0.63, -0.63, -0.63, -1.63, 1.82, 0.82, -0.18, -1.18, -2.18, 5.41, 1.41, -0.59, 0.41, 3.41, 0.06, 0.06, -0.94, -1.94, 1.06, -0.59, -2.59, -0.59, -2.59, -2.59, -1.63, 0.37, -1.63, 1.37, -0.63, 0.06, -2.94, -2.94, 0.06, -1.94, -0.56, -2.56, -1.56, 1.44, -2.56, -0.18, 0.82, -0.18, 2.82, 2.82, 3.41, -1.59, -1.59, -2.59, -0.59, -2.93, -1.93, -1.93, 0.07, 2.07, -1.35, -1.35, -1.35, -0.35, -1.35, -0.61, 2.39, 4.39, 4.39, 1.39, -1.61, 5.62, 3.62, 10.62, 8.39, 13.39, 12.39, 0.89, -0.11, -0.11, -2.52, -3.52, -3.52, 0.97, -3.03, -0.03, 15.87, -0.13, 6.87, 3.36, 5.36, 2.36, 1.87, 6.87, -2.13, 3.32, 1.32, 4.32, 12.41, 13.41, 0.41, -1.56, -0.56, 0.44, -0.56, 6.44, -0.56, -1.56, -2.56, -0.56, -0.56, -2.65, -2.65, -2.65, -1.65, -2.65, 0.44, -2.56, -2.56, -2.56, -2.56, 0.19, 4.19, 11.19, 2.47, 1.47, -1.53, 1.47, 0.47, -2.59, -0.59, 2.41, -2.59, -2.59, -0.88, -0.88, -0.88, -1.88, -0.88, -1.59, 0.41, 0.41, -0.59, -0.59, -3.48, 0.52, -2.48, -3.48, -3.48, -2.07, -2.07, -0.07, 1.93, -2.07, -2.23, -2.23, -1.23, -0.23, 9.47, 2.47, -1.53, -2.53, -2.53, -2.53, -1.21, 6.79, 1.79, -0.21, -0.21, -3.21, -1.21, -2.21, -3.21, -2.21, 11.89, 4.89, 2.89, 0.89, -4.11, 3.30, 0.30, -0.70, -2.70, -0.70, 8.47, 3.47, 3.47, -0.53, 4.47, -2.59, -2.59, -2.59, 10.07, -0.93, 2.97, -1.03, -2.03, -2.00, 0.00, -1.00, 5.41, 11.41, 3.41, -2.62, -2.62, -0.62, -2.62, 2.38, 0.02, -3.98, 5.02, -1.98, 3.02, 6.45, 0.45, 4.45, 1.45, 2.45, 6.41, -1.59, 3.84, -0.16, -0.48, 7.52, -1.48, 0.52, -0.48, 0.52, 0.49, -0.51, -1.51, 2.52, 4.52, 7.52, 2.52, 3.52, -1.48, -0.56, -2.56, -1.56, 6.95, 11.95, -5.05, 0.16, -1.84, -0.84, -1.48, -0.48, 0.52, -2.48, -1.48, -2.81, -2.81, -2.81, -2.81, -2.81, -1.48, -2.48, -1.48, -2.48, -1.48, -0.42, -2.42, -1.42, -1.42, -1.42, 1.91, 0.91, -1.09, -1.09, -2.09, -1.58, -1.58, 1.42, 0.42, -0.58, -1.50, -1.50, -0.50, -2.50, -0.50, -2.51, -1.51, -2.51, -1.51, -2.51, -0.09, 3.91, -2.09, -1.09, -1.09, 7.65, 4.65, 2.65, -0.28, -1.28, -0.28, 7.47, 4.47, 2.47, 2.47, 2.47, 0.47, 2.36, 1.36, -1.64, -0.64, -0.64, -0.41, -0.41, -1.41, -1.41, -1.41, -1.94, -0.94, 6.06, 1.06, 0.06, 4.80, 2.80, 1.80, -0.20, 1.80, -1.03, 3.97, -0.03, 1.97, -2.03, 4.89, 0.89, 2.89, 0.89, -0.11, 0.89, -0.11, -1.11, -0.11, -0.11, -2.07, -3.07, 0.93, -0.07, -3.07, -0.07, -1.07, -2.07, -1.07, -1.07, -2.59, -0.59, -1.59, 1.41, -0.59, 0.41, 6.26, 8.26, -1.74, 4.44, 28.44, -1.56, 1.01, -0.99, 2.01, 0.01, -2.99, -0.36, 5.64, -2.36, 0.64, -2.36, -1.50, 0.50, -2.50, -0.50, -1.50, -0.99, 1.01, 3.01, -0.99, -3.99, -2.99, 1.01, 3.01, 0.01, -1.99, -1.12, -0.12, -7.12, -5.12, -6.12, 9.03, 22.03, 5.03, 10.03, 11.03, -1.82, -1.82, -1.82, -1.82, -1.82, -2.48, -2.48, -2.48, -2.51, -2.51, -2.51, -2.48, -2.48, -2.48, 0.52, -3.48, -0.48, -2.48, -2.48, -2.48, -2.48, -2.48, -2.48, -1.51, -2.51, -2.51, 0.41, 1.41, -3.59, -3.59, -0.59, 1.70, -2.30, -2.30, -2.30, -0.30, -2.17, -2.17, 0.83, -1.17, -1.17, 7.47, -2.53, -0.53, -0.53, 3.47, -0.53, -2.53, -2.53, -1.53, -2.53, -0.40, -3.40, -0.40, -2.40, -1.40, -2.47, -2.47, -2.47, -1.47, -2.47, 1.50, -0.50, -1.50, -0.50, -1.50, -1.71, 1.29, -2.71, -5.83, -6.83, -2.83, 4.42, 1.42, -2.30, -1.30, 0.70, -2.30, -0.30, -0.67, -2.67, -2.67, -2.67, -1.67, -2.67, -1.67, 5.33, -1.67, 0.33, 1.69, 7.69, 5.69, 0.69, -0.31, 4.83, -3.17, -3.17, -2.59, -2.59, -2.59, -2.59, -2.59, -2.59, -2.18, -2.18, -3.39, -3.39, -1.13, 1.87, 1.87, 1.87, 1.87, -2.56, -1.56, -1.56, -1.56, -2.56, -2.56, 3.44, 2.44, 0.44, -1.56, -1.59, -0.59, -1.59, -1.59, -1.59, -1.56, -1.56, -1.56, -0.56, -1.56, -3.35, -4.35, -3.35, -3.35, -2.35, -1.56, 1.44, -1.56, 0.44, 3.44, -0.50, -0.50, -1.50, -2.50, 1.50, -1.35, 5.65, 0.65, -2.35, -1.35, 5.26, 2.26, -1.74, 1.26, -1.74, -0.56, -0.56, -1.56, 0.44, -0.56, 4.50, 10.50, 1.50, -1.16, -1.16, 4.84, -0.56, -1.56, -2.56, -2.56, -1.56, -2.56, -0.41, -3.41, -5.41, -2.41, -1.41, -2.57, -3.57, -3.57, -3.57, -3.57, 5.93, 6.93, 4.93, 2.93, 4.93, -1.61, 1.39, -1.61, 0.39, 0.39, -1.56, -2.56, -0.56, -1.56, -1.56, 0.64, -2.36, 1.64, 0.64, -0.36, -1.13, -2.13, -2.13, -1.84, -1.84, -0.84, 0.41, 0.41, 4.41, -2.32, -3.32, -1.32, -5.85, -3.85, 0.15, -1.53, -2.53, 4.47, -1.31, -1.31, -2.31, -0.16, -0.16, -2.16, -1.16, -1.16, -0.56, -2.56, -2.56, -0.56, -1.56, 13.44, 13.44, 4.44, -2.56, -2.56, 1.10, -2.90, 0.10, -1.90, -0.90, -3.58, -3.58, 25.42, -5.45, -5.45, 6.55, 0.88, -2.12, 4.88, -0.12, -1.12, 2.18, -1.82, -1.82, -1.82, -0.82, -0.82, 1.18, -0.82, -1.82, 0.18, -1.77, 0.23, -2.77, 0.23, 2.23, -0.29, 5.71, -0.29, 1.71, 1.71, 5.00, -0.00, 13.00, 15.00, 5.00, -1.51, -1.51, -0.51, -2.51, -1.51, -0.51, -1.51, -1.51, 4.49, -0.51, 1.52, -2.48, 7.52, 4.52, 5.52, 0.23, -3.77, -1.77, -2.77, 0.23, 0.87, 1.87, 0.87, 0.87, 2.87, -1.71, -1.71, -0.71, 3.29, 1.29, 1.36, -1.64, 0.36, -0.64, 1.36, 2.79, -0.21, 4.79, 1.79, -0.21, 12.29, 1.29, 2.29, -0.71, -2.71, -0.33, 9.67, 6.67, 1.67, -0.33, -0.84, 1.16, 0.16, 1.16, -0.84, 0.16, 1.16, 2.16, 1.16, 2.16, -2.84, -2.84, -3.84, -3.84, -2.84, 5.16, 0.16, -1.84, -1.84, 0.16, 1.10, 2.10, 3.10, 7.65, 9.65, 5.65, -0.80, 4.20, -1.80, 4.20, 3.20, 18.27, -1.73, -3.73, -1.73, -3.73, 5.01, 4.01, -1.99, -2.95, 4.05, 3.05, -2.95, -2.95, -2.95, -0.61, 0.39, 0.39, -1.56, -1.56, -0.56, -1.36, 1.64, 0.64, -1.61, -0.61, -1.61, -2.53, -2.53, 2.16, 0.16, -1.59, -0.59, -0.59, -0.59, -1.59, -0.51, -0.51, -1.51, -0.51, -2.51, -0.82, -1.82, -0.82, -1.82, -1.82, -0.48, 3.52, 0.52, -0.48, -2.48, -2.45, 1.55, 0.55, -1.45, -2.45, 12.44, 1.44, 3.44, 4.68, -5.32, -0.32, 4.44, 3.44, 2.44, -1.94, 5.06, 0.06, 0.20, 0.20, 2.20, -1.85, -2.85, 1.15, 1.15, 1.15, -0.85, -1.63, -1.63, -1.63, -1.63, -1.63, 5.41, 0.41, -0.59, 1.41, -1.59, 7.41, 3.41, -0.59, -1.59, -0.59, 2.06, -2.94, 0.06, -2.94, -2.94, -3.71, 0.29, -3.71, -3.71, -1.71, 2.21, -0.79, -1.79, -0.79, 5.21, -1.51, -2.51, -2.51, -2.51, -2.51, 2.20, 0.20, -2.80, 6.20, 6.20, -2.11, -2.11, 2.89, -0.11, -2.11, -2.11, -2.11, -2.11, -0.11, 0.89, -0.45, -2.45, -2.45, -2.45, 0.55, -2.51, -2.51, -0.51, 3.49, -1.51, -1.11, -2.11, -2.11, -1.11, -1.11, -2.82, 33.18, 17.18, 2.29, -3.71, -2.71, -2.71, -2.71, 1.67, 0.67, -1.33, 0.67, 2.67, 2.67, -2.33, -1.33, -1.33, -2.33, 2.38, -3.71, -3.71, -3.71, -0.71, 2.29, -2.71, -3.71, -2.71, -1.71, -0.71, -1.71, -1.71, -2.71, 0.29, -2.71, -2.62, -2.62, 0.38, -1.62, 1.38, 10.03, 0.03, 7.03, 9.03, 8.03, 21.80, 9.80, 15.80, 16.80, 15.80, -0.96, 17.04, -5.96, -5.32, -5.32, -5.32, 2.95, -2.05, -3.05, -3.09, -3.09, -3.09, -0.09, -0.09, -0.09, -1.09, -2.09, -2.09, -5.78, -1.78, -3.78, 2.22, -2.78, 3.91, 5.91, -2.09, 0.91, -2.09, -2.33, -1.33, -2.33, -1.33, -2.33, 9.81, -3.19, 3.81, 8.81, 11.81, -3.84, -3.84, -2.84, 0.16, -0.84, -0.45, 0.55, 8.55, 0.55, -2.45, 1.55, 5.55, -1.45, -1.45, -2.45, -1.45, -0.50, -1.50, -1.50, -1.21, -3.21, -3.21, -1.71, 0.67, -2.33, -0.33, -0.33, -0.33, 1.87, 3.87, -0.13, -2.13, 10.87, -3.21, -1.21, -0.21, 2.79, -1.21, -2.21, 1.79, -0.21, 0.79, -0.21, -1.89, -1.89, 1.11, 3.11, 0.11, -3.21, -1.21, 4.79, -0.21, 1.79, -2.21, -0.21, -2.21, -2.21, 2.79, -2.13, -0.21, 1.79, -3.21, 6.79, 47.79, 0.49, 1.49, -2.51, 3.49, 20.49, 19.71, 8.71, 13.71, 7.71, 9.71, -0.42, -0.42, -1.42, 2.58, -0.42, -0.51, -0.51, -0.51, -0.51, 2.49, 2.18, 1.18, 3.18, -3.35, -3.35, 1.65, -2.35, 1.65, -1.94, 2.06, -2.94, -2.94, -2.94, -2.59, -0.59, -1.59, 0.41, -0.59, -1.18, 1.82, -1.18, 2.82, -0.18, -2.56, -1.56, -2.56, -2.56, -1.56, 2.44, 0.44, 2.44, 0.44, -0.56, 0.44, -1.56, 2.44, -0.56, 30.44, 0.44, 2.44, -0.56, 5.44, 7.44, 1.44, 2.44, 2.44, 2.44, 1.44, -2.56, -0.56, -2.56, -2.56, 1.44, -2.56, -2.56, -1.56, -1.56, -1.56, -2.56, -2.56, -2.56, -1.56, -2.56, 0.44, -2.56, -1.56, -2.56, -1.56, -2.56, -2.37, -2.37, -2.37, -2.37, -2.37, -2.37, -2.37, -2.37, -2.37, -1.49, -1.49, -1.49, -2.37, -2.37, -2.37, -2.68, -4.68, -1.84, 1.16, -1.84, -1.84, 3.16, -0.21, -1.21, -3.21, -3.21, -3.21, 1.79, -2.21, -3.21, -1.21, -2.21, -3.21, -2.21, -1.63, -1.63, -0.63, -2.59, -2.59, -1.59, -1.88, -1.88, -1.88, -2.59, -1.59, -1.59, -2.21, 0.79, -1.21, -1.21, -0.21, 0.67, -0.33, -1.33, 0.67, -0.33, 6.99, 14.99, 28.99, 10.99, 3.99, 4.79, -1.21, -2.21, 0.79, -1.21, 11.87, 24.87, 6.87, 16.87, 12.87, 3.92, -0.08, 0.92, -1.08, -2.08, -1.08, -1.56, -2.56, -0.56, -2.56, -2.56, -2.56, -2.56, -1.56, -1.56, -2.56, -0.56, -2.56, 1.44, -1.56, -1.56, 1.47, -1.53, -1.53, -1.53, -1.53, -2.72, -1.72, 1.28, 4.33, -0.67, 0.33, 1.28, 7.28, 3.28, -2.72, -3.72, -1.72, 2.28, 1.28, 8.28, 0.31, -1.69, -1.69, -2.69, 2.31, -3.71, -1.71, -0.71, -3.71, -3.71, -2.13, -3.13, -3.13, -3.13, -3.13, 1.25, -1.75, -0.75, -2.75, -3.75, 3.26, 3.26, 5.26, 2.64, 1.64, -0.36, 0.56, 0.56, -1.44, -8.77, -9.77, -6.77, -2.50, -2.50, -0.50, -1.50, -1.50, -2.56, -2.56, -0.56, -2.56, -0.56, 0.44, -0.56, 0.44, -0.56, -1.56, -2.16, -1.16, -2.16, -1.16, -0.16, 32.14, 22.14, 26.14, 20.14, 22.14, -2.11, -3.11, -3.11, -1.11, -2.11, -3.11, -1.11, -1.11, -1.11, -0.11, -3.11, -3.11, -3.11, -3.11, 4.89, -2.82, 0.18, -0.82, -2.82, 1.18, -6.60, -6.60, -6.60, -2.65, -0.65, 1.35, 1.35, 2.35, -3.25, -3.25, -2.25, -2.25, -2.25, -1.48, -1.48, 0.52, -2.48, 0.52, -0.48, -1.48, 0.52, -0.48, -0.48, -1.89, -3.89, -3.89, -1.89, 22.11, -3.80, -2.51, -1.51, -2.51, 4.49, 3.49, 5.49, -1.51, 0.49, -1.51, -0.51, 3.49, -2.51, -0.33, 1.67, 7.67, -2.21, 3.79, 3.79, 2.87, 0.87, -1.13, -0.89, -2.89, 0.11, 16.42, 19.42, 12.42, 8.42, 12.42, 8.19, 5.19, 13.19, 0.19, 1.19, -2.37, 0.63, -2.37, -1.37, -2.37, 2.13, 1.13, 10.13, -1.87, 1.13, 1.13, -2.92, 3.08, 3.08, 0.54, 5.54, 5.54, -0.87, 2.13, -1.87, 0.37, 2.37, 0.37, 0.37, 1.37, 2.37, -0.90, 2.10, 2.10, -1.35, 1.65, -1.35, 7.52, -1.48, 10.52, 2.52, 4.52, 1.52, 5.19, 0.19, 2.19, 11.75, 0.75, 5.75, 19.52, 20.52, 10.52, -2.47, -2.47, -1.47, -1.47, -2.47, -2.47, -2.47, -2.47, -2.47, -2.47, -2.44, -2.44, -2.44, -2.44, -2.44, -2.47, -1.47, -2.47, -2.47, -2.47, -1.44, -2.44, -0.44, -2.44, -2.44, -1.47, -2.47, -1.47, 0.53, -2.47, -1.15, -3.15, -3.15, -0.15, -1.15, 2.83, 2.83, 2.83, 4.83, 2.83, 1.55, 1.55, 0.55, 3.55, 0.55, -0.17, 1.83, 0.83, -0.17, -2.17, -1.67, 3.33, -2.67, -2.67, -1.67, -2.59, -2.59, -0.59, -1.59, 0.41, 1.41, 3.41, -1.59, 2.41, 5.41, -0.59, 6.41, 7.41, -2.59, -0.59, 2.41, 5.41, 5.41, -2.48, -2.48, -1.48, -1.48, -2.48, -2.80, -2.80, -2.80, -2.80, -2.80, -1.86, -1.86, -1.86, 0.14, 0.14, 1.44, 0.44, -0.56, -1.56, 3.44, -1.16, -0.16, -1.16, -1.16, -1.16, -0.56, 3.44, 1.44, -1.56, -0.56, 0.61, 7.61, 13.61, 7.89, 23.89, 31.89, 1.44, 1.44, 1.44, 7.47, 1.47, 6.47, 8.44, 15.44, -0.56, -0.56, -2.56, 1.92, -1.08, -0.08, 1.92, -2.08, -1.08, -1.80, -1.80, -2.80, -2.92, 1.08, 6.08, -0.92, -2.92, -0.40, -0.40, 3.60, -1.40, -3.40, 12.47, 2.47, 13.47, 5.47, 3.47, -1.59, -0.59, -1.59, 2.41, 0.41, 2.41, -0.59, -1.59, 0.41, -1.63, -1.63, -1.63, -1.40, -2.40, -3.40, 1.41, -1.59, 2.41, 0.82, -0.18, -0.18, -0.25, -0.25, 1.75, 7.75, -1.25, 4.58, 3.58, -0.42, -0.42, -2.42, 1.54, 4.54, 2.54, 5.54, 0.54, -5.10, -6.10, -6.10, -6.10, -6.10, -1.39, -1.39, -2.39, -1.39, -2.39, -5.11, -4.11, -3.11, -4.11, -4.11, -0.16, -1.16, 6.44, -5.33, -3.33, 6.54, 5.54, 3.41, 7.41, 7.41, -3.58, -3.58, -3.58, -1.33, -2.33, 1.67, -1.88, -1.88, 0.12, -0.88, -0.88, -2.59, -2.59, -2.59, 3.49, 1.49, -2.51, -1.51, -0.51, -1.51, 2.49, 1.49, 2.49, -1.51, 3.52, -2.48, 5.49, -1.51, -0.51, 1.49, -2.51, 2.49, 10.49, -0.51, -1.51, -0.51, -2.07, -2.03, -3.03, -3.03, 0.83, 4.83, 0.83, -2.17, -1.17, 1.83, -1.17, 2.83, -1.17, 3.83, 0.85, 0.85, 2.85, 0.85, 4.85, -1.59, -0.59, -0.59, -2.59, -0.59, 0.81, 3.81, -2.19, 7.84, -4.16, -3.16, -3.21, -5.21, 0.79, 1.26, -0.74, 0.26, -0.74, 8.26, 2.43, 0.43, 3.43, 2.89, -2.11, -1.11, 6.82, 5.82, 1.82, 0.82, -1.18, 2.84, -1.16, 1.84, 2.84, -2.59, -2.59, -2.59, -1.59, -0.59, -2.56, -2.56, -2.56, -2.56, -2.56, -1.21, 0.79, 0.79, 27.83, 13.83, 5.83, -0.51, 0.49, -1.51, -1.51, -2.51, -2.12, -2.12, -2.12, -2.12, -2.12, -1.82, -0.82, -0.82, -0.82, 0.18, -2.59, -1.59, 3.41, 4.60, 2.60, 4.60, 0.41, -0.59, -2.59, -0.40, -1.40, -3.40, -0.21, 1.79, 19.79, 0.79, -0.21, -1.21, -2.21, -2.21, -1.21, 1.79, -2.21, 0.79, 7.14, -0.86, 2.14, 2.14, -1.86, -3.86, -2.86, 1.14, 2.14, -3.86, -2.86, -2.86, -1.86, 7.14, 1.14, 1.52, -0.48, 0.52, 0.52, -0.48, 0.49, 2.49, -0.51, -1.51, -1.51, -0.51, -0.51, -0.51, -2.60, -2.60, -2.60, -0.59, 0.41, 0.41, -0.59, 1.41, -2.43, 3.57, 3.57, -0.19, -2.19, -1.19, -0.72, -0.72, 0.28, 5.60, 0.60, 17.60, 4.95, -1.05, 2.95, 12.87, -0.13, -1.13, 1.87, -0.13, -0.13, -2.13, -2.13, -0.13, 2.87, -2.56, -2.56, -2.56, -2.56, -2.56, -1.92, -2.92, -2.92, -0.92, -2.92, 1.61, -1.39, 2.61, 3.61, -2.39, -2.92, -3.92, -0.92, 2.08, -2.92, -1.31, -1.31, 1.69, -0.31, -1.31, -1.51, 0.49, -1.51, -0.51, -1.51, -0.51, -2.51, 0.49, -2.51, 19.52, 16.52, 11.52, -1.22, -1.22, -0.22, -1.22, -1.22, -0.94, -1.94, -1.94, -1.94, -1.94, -0.55, -2.55, -2.55, -2.55, -1.55, -1.22, -1.22, -1.22, -1.22, -1.22, -0.94, -1.94, -1.94, -1.94, -1.94, 2.45, -2.55, -2.55, -2.55, -2.55, -0.94, -1.94, -1.94, -1.94, -1.94, -0.84, 0.16, -2.84, -0.84, 5.16, 0.20, 7.20, 3.20, 2.20, 0.20, -1.84, -3.84, 0.16, 3.16, 7.16, 0.16, 1.16, 3.16, 0.16, 1.16, -3.84, 4.16, 0.16, -2.84, 0.16, -2.83, 7.17, -2.83, -2.26, -2.26, -0.26, -2.89, -1.89, -2.89, -2.56, -2.56, -2.56, -2.36, -2.39, -2.62, -2.62, -2.62, -1.13, -2.13, -2.13, -3.39, -3.39, -3.21, -3.21, 2.41, 0.41, 3.41, 3.41, 4.41, -0.59, 2.41, 1.41, 0.41, -1.59, 2.41, 1.41, 5.41, 3.41, 0.41, 5.41, 8.41, 9.41, 6.41, 5.41, -1.75, -1.75, 0.25, 0.25, 3.25, 16.37, -0.31, -2.31, -2.08, 1.92, -1.08, -0.08, 0.92, 5.92, 2.92, 1.92, -2.08, -0.08, 0.53, -1.47, -1.47, -2.47, -2.47, -2.47, -1.47, -1.47, -0.47, -2.47, 0.53, -0.47, -1.47, 1.53, -1.47, -3.89, -2.89, -2.89, -3.89, -1.89, -1.86, -1.86, -1.86, -1.86, -0.86, -1.97, -1.97, -1.97, -2.97, 0.03, -0.97, -1.97, -2.97, -1.97, 1.03, -1.88, -1.88, 3.12, 1.41, -0.59, -1.59, -0.59, -1.59, -0.59, -2.40, -1.40, -2.40, -0.53, -1.53, -1.53, 3.41, -1.59, -1.59, 1.41, -1.59, -1.59, -1.50, -1.50, -0.50, -2.94, -2.94, -1.94, 1.10, 0.10, -0.90, -0.89, 2.11, -0.89, 0.11, 2.11, 0.20, 6.20, -0.80, 3.20, 1.20, 1.11, -0.89, 1.11, -1.89, 0.11, 1.17, 4.17, 3.17, 9.17, -1.83, 6.02, -1.98, -5.98, -1.60, 3.40, 4.40, -1.60, 0.40, -0.60, 1.53, 3.53, -0.47, -0.76, -2.76, -1.76, 2.16, -3.84, -2.84, -0.84, -1.84, -2.86, 1.14, 0.14, 0.14, -0.86, -0.41, 6.59, 2.59, -1.41, 0.59, -1.50, -0.50, -1.50, -1.50, 0.50, 2.43, 1.43, 0.43, -0.57, 2.43, -0.11, 0.89, 3.89, -2.11, -0.11, -0.81, 0.19, -1.81, -2.81, -2.81, 1.19, -0.81, -1.81, -0.81, 4.57, -1.43, -0.43, -1.43, 1.57, -0.43, 0.57, -2.43, 1.57, -1.43, 0.44, -1.56, 1.44, 1.44, -2.56, -1.40, -3.40, -2.40, -3.40, 0.60, -0.56, -2.56, -0.56, -1.56, -1.56, 15.41, 7.41, 4.41, -2.59, -0.59, -1.56, -0.56, 1.47, -1.53, -2.56, -2.56, -2.56, -1.56, 1.44, -2.56, -2.53, -0.53, -2.77, -1.77, 1.23, -0.77, -3.77, 0.13, -0.87, -3.87, -2.87, -1.87, 16.18, 5.18, 22.18, 24.18, 29.18, 9.74, 7.74, 8.74, 3.74, 12.74, 2.74, -0.26, 2.74, 3.74, 2.74, -1.87, -3.87, -3.87, -0.87, -0.87, -0.56, -1.56, -2.56, -0.56, 0.44, 1.44, -1.56, -1.56, -1.56, -0.55, 3.45, -1.55, -2.20, 4.80, 3.80, -1.56, -2.56, -2.56, 34.44, 3.44, 8.44, 2.64, 4.64, 1.64, 1.44, -2.56, -1.56, -2.59, -2.59, 3.41, -1.88, 1.12, 0.12, -2.61, 2.82, 0.82, -2.18, -2.64, 0.36, -2.64, -3.64, -2.64, 0.29, -0.71, 0.29, -1.71, 0.29, 3.29, 4.29, 5.29, -0.71, -0.71, -1.64, -3.64, -3.64, -1.64, -3.64, -0.85, 32.28, 5.28, 0.28, 3.28, 1.28, 22.87, -4.13, -4.13, -2.53, 6.47, 8.47, -1.86, -1.86, -1.86, -1.86, -1.86, -0.90, 0.10, -1.90, -1.90, -1.90, -0.86, 0.14, -0.86, -2.56, -1.56, -0.56, -1.56, -2.56, -2.50, -1.50, -2.50, -2.50, -2.50, -1.16, -1.16, -0.16, -1.16, -2.16, -1.11, -2.11, -2.11, 8.59, 3.59, 6.59, -2.25, 0.75, -2.25, -1.25, -0.25, -1.12, -4.12, -3.12, 6.88, -0.12, -1.56, -2.56, -1.56, -0.56, -0.56, 0.44, 5.68, 3.68, 1.68, -2.56, -2.56, -1.56, -0.56, -1.56, 1.44, 0.44, -0.56, 3.44, -0.56, -1.56, -0.56, 0.47, -0.53, 0.47, 2.47, 5.47, 0.47, 0.39, 1.39, 2.39, -1.61, -0.61, -0.16, -1.16, -2.16, -1.16, -2.16, -1.16, -1.16, -0.16, -2.16, 1.84, -1.16, -2.16, -0.16, 1.84, -2.16, 1.39, -1.61, 0.39, -1.61, -0.61, -2.44, -2.44, -2.44, -2.44, -1.44, -2.44, 0.50, -1.50, -1.50, -1.50, -1.50, -1.50, -0.18, -1.18, -0.18, 2.41, 19.41, 38.41, 0.12, 20.12, 63.12, -3.22, -1.22, -3.22, -2.32, -1.32, -3.32, 0.13, -3.87, -0.87, -2.71, -1.71, -2.71, 0.29, -1.71, 30.34, 18.34, 27.34, 0.34, 3.34, -2.20, -0.20, -2.20, 5.80, 7.80, 24.38, 5.38, -2.62, 5.38, 20.38, 1.63, 0.63, 1.63, 6.63, 5.63, 0.34, 0.34, 1.34, 0.34, 6.34, 12.34, 4.34, 3.34, 1.34, 3.34, 0.34, -2.66, 0.34, 0.34, -1.66, 0.29, 7.29, 9.29, 2.29, 5.29, 1.79, -1.21, 5.79, 1.83, -1.17, 8.83, -0.21, 4.79, 14.79, -2.21, -2.21, 0.79, 2.83, 1.83, 2.83, -0.13, -2.13, 1.87, -2.13, -2.13, -2.47, -2.47, -2.47, -2.47, -1.47, -1.51, -2.51, -0.51, -0.51, -1.51, 4.28, -2.72, -4.72, -3.72, -5.72, 1.43, -1.57, -1.57, -1.57, 1.43, -0.51, -2.51, -0.51, -1.51, -2.51, 3.49, -2.51, -1.51, 1.49, -1.51, 8.47, 4.47, 6.47, 3.47, 1.47, 5.13, 3.13, 3.13, 3.13, 9.13, 0.47, 4.47, 10.47, 7.47, -0.53, -1.85, -1.85, 0.15, -0.85, 0.15, 3.35, -3.65, -4.65, -2.80, -2.80, -2.80, -2.80, -2.80, -1.13, -2.13, -2.13, 1.87, 6.69, 18.69, 4.69, 18.69, 14.69, 5.18, 5.18, 0.18, -1.82, 1.18, -1.82, 4.43, 3.43, 5.43, -0.83, 5.17, 0.17, 0.50, 1.50, -0.50, 1.53, -0.47, -1.47, 0.53, -1.47, -0.87, -0.87, -1.87, -1.87, -0.87, -2.88, -1.88, -2.88, -5.66, -1.66, 0.34, -2.53, -2.53, -1.53, -2.53, -2.53, 0.47, -1.53, -0.53, -2.53, -0.53, -0.59, 2.41, -1.59, -1.59, -1.59, -1.16, -1.16, -0.16, 2.10, 0.10, -0.90, 2.10, 1.10, 0.44, -0.56, 3.44, 1.44, 0.44, 1.47, 0.47, -2.53, -2.53, 0.47, 1.44, -0.56, 3.44, -2.56, 2.44, 0.50, -2.50, -1.50, -0.50, -2.50, 3.50, -2.50, 0.50, -1.50, -2.50, -0.51, 1.49, -1.51, -2.51, -2.51, -1.51, -2.51, -2.51, -2.51, 4.49, 1.49, -2.51, -2.56, -2.56, -1.56, -4.32, -6.32, -6.32, 1.91, -1.09, -1.09, 0.58, 0.58, -1.42, -3.94, -3.94, -0.94, 2.06, 1.06, -2.94, -2.94, 0.06, -3.94, -2.94, 1.68, 4.68, -2.32, -2.32, -3.32, -2.94, -2.94, -1.94, -2.94, -3.94, 1.53, 1.53, 6.53, 1.53, 4.53, -2.44, -0.44, -2.44, 1.56, -2.44, -3.94, -2.94, -2.94, -3.94, -3.94, -6.65, -2.65, -3.65, -1.70, 3.30, -4.70, -3.96, -4.96, -6.96, -1.21, 5.79, -1.21, -2.21, 0.79, -3.87, -3.87, -3.87, -3.87, -2.87, 9.36, 9.36, 4.36, 13.50, 2.50, 4.50, 34.03, 9.03, 11.03, 32.36, 43.36, 28.36, 9.60, -1.67, -0.67, -2.67, -2.31, -3.31, -3.31, -2.31, -2.31, -0.31, -1.97, -1.97, -0.97, -1.92, 0.08, -0.92, -1.97, -1.97, -1.97, 0.34, -1.66, -1.66, -2.49, -2.49, -2.49, -2.36, 10.64, 3.64, -1.36, 1.64, -8.97, -4.97, -1.97, -2.55, -2.55, -2.55, -1.94, -1.94, -1.94, 6.10, 12.10, 16.10, -0.90, 0.10, 3.97, 6.97, 3.97, 2.97, 6.97, -0.67, -1.67, -0.67, -1.67, -0.67, -0.25, -0.25, 2.75, 1.75, 5.75, 7.83, -1.17, -0.17, -0.17, -1.17, 0.83, 0.83, -0.17, 0.83, 8.18, 9.18, -2.82, 6.91, 0.91, -0.09, -2.19, -2.19, -2.19, 0.81, -2.19, 3.81, 5.81, 14.81, -2.18, -0.18, -1.18, -0.18, 0.82, -1.63, -1.63, -1.63, -0.63, -1.63, -3.39, -3.39, -3.39, -5.16, -5.16, -5.16, -3.39, -3.39, -3.39, -1.78, 3.22, -0.78, 5.77, -0.23, -0.23, 1.78, -1.22, -0.22, -2.01, 1.99, -2.01, -0.87, -1.87, 0.13, -0.87, 1.13, 0.13, 2.93, 4.93, 4.93, -2.53, -1.53, -2.53, -2.53, -1.53, 4.87, 7.87, 1.87, -2.13, -1.13, 6.99, -1.01, -0.01, 1.99, -2.01, -1.01, -2.01, -2.01, -2.01, -2.01, 6.02, 3.02, -1.98, -1.98, -1.98, 0.99, -1.01, -2.01, -2.01, -2.01, 6.50, 1.50, 5.50, -2.39, -0.39, 0.61, -3.17, -3.17, 3.83, -0.07, 2.93, -0.07, -1.98, 7.02, -1.98, 1.79, 8.79, 40.79, 52.79, 34.79, 7.29, 1.29, 1.29, -1.71, 0.29, -3.71, 1.29, -3.71, 3.29, 3.29, 5.29, -0.71, 3.29, 0.29, -0.82, 3.18, 1.18, 0.88, 2.88, -1.12, -0.23, 0.77, -1.23, -1.23, 1.67, 2.67, 0.67, 5.99, 7.99, 4.99, 3.03, 0.03, 1.03, 2.82, 0.82, -0.18, 10.50, 13.50, 4.50, 1.47, 0.47, -2.53, -1.92, -1.92, -1.92, -0.92, -0.92, -1.97, -1.97, -0.97, -1.97, -1.97, -1.66, -1.66, 5.34, -0.66, 1.34, 2.44, 5.44, 3.44, 8.44, 2.44, -1.56, -1.56, -1.56, 3.44, 0.44, 3.44, 1.44, -0.56, 0.44, 7.44, 27.44, 15.44, 15.44, 14.44, 11.44, 13.89, 17.89, 23.89, 21.89, 19.89, -2.56, -2.56, 0.44, -2.56, -0.56, -1.56, -2.56, 0.44, -2.56, -0.56, -0.56, 3.44, 1.44, 0.44, 4.44, -0.56, 1.44, 2.44, 1.44, -0.56, 0.65, 2.65, -1.35, -2.35, 2.65, 2.44, -0.56, 0.44, 1.44, -1.56, -2.43, -2.43, -2.43, -2.43, -1.43, -2.43, -2.43, -2.43, -2.43, -2.43, -2.43, -1.43, -1.12, -2.12, -2.12, -2.51, -2.51, -2.51, -2.12, -2.12, -2.12, -2.51, -2.51, -2.51, -1.86, -1.86, -1.86, -1.81, 2.19, -2.81, -2.81, 3.19, -0.25, 1.75, -2.25, 0.75, -2.25, -2.48, -1.48, -2.48, -2.48, 0.52, -2.48, -1.48, -2.48, -1.48, -2.48, 7.41, 0.41, -1.59, -2.59, 3.41, 0.41, 0.41, -1.59, 5.41, 5.41, -0.59, 6.41, -0.21, 4.79, -3.21, -2.21, -1.21, 4.79, -2.21, -3.21, -1.21, -2.21, -1.67, -2.67, -2.67, -2.15, -2.15, -3.15, -1.56, -0.56, -0.56, 0.44, 3.44, -1.56, -2.56, 0.44, 3.44, -0.56, -2.56, -0.56, -1.56, -0.56, -0.56, 3.04, -2.96, 1.04, -0.96, -1.96, 3.22, 2.22, -3.78, -3.78, 6.22, 4.04, 1.04, 4.04, 7.04, -4.96, 12.87, 1.87, -0.13, -0.50, -1.50, -1.50, 5.01, 0.01, 2.01, -0.99, 0.01, 0.91, 0.91, 4.91, 0.91, 0.91, 3.79, 5.79, 8.79, 0.79, 5.79, -2.07, -3.07, -1.07, -1.07, -2.07, 0.93, 0.26, -0.74, 1.26, -0.70, 2.30, 1.30, 1.44, -1.56, -2.56, 1.20, 7.20, 37.20, -1.80, -0.80, -0.80, 3.25, 6.25, 6.25, 2.96, 1.96, 6.96, 1.52, 4.52, 3.52, -1.47, -1.47, 0.53, -0.56, 1.44, -2.56, -0.56, -1.56, -1.56, 0.13, 3.13, 10.13, -1.61, -1.61, -1.61, -1.96, -0.96, -1.96, 0.04, -1.96, -2.87, -2.87, -2.87, 3.13, -0.87, -2.59, -2.59, -2.59, -1.59, -2.59, -1.05, -2.05, -0.05, -2.87, -3.87, -1.87, -2.43, -2.43, -0.43, -2.20, -2.20, -2.20, -2.20, -1.64, -1.64, -1.64, -1.64, -1.64, -4.25, -4.25, -4.25, -4.25, -4.25, -1.43, -1.43, -1.43, -1.43, -1.43, -2.45, -2.45, -2.48, 4.10, 2.10, 1.10, -1.94, -1.94, 11.06, -1.88, 0.12, -0.88, 0.93, -1.07, 0.93, 0.78, -0.22, -3.22, 4.07, 5.07, 6.07, 5.07, 4.07, -2.17, -2.17, 1.83, 1.27, -0.73, -1.73, -2.08, -1.08, -2.08, -2.08, -2.08, -3.45, -3.45, -3.45, 2.55, -3.45, -1.56, 0.44, 1.44, -1.56, 0.44, -2.73, -2.73, 0.44, -2.56, -2.56, 4.79, 5.79, -0.21, -1.21, 2.79, -0.56, 1.44, 0.44, -1.56, -2.56, -2.29, -3.29, -0.29, 5.71, -2.29, -2.40, -2.40, -2.40, 13.47, 3.47, 6.47, 0.41, -0.59, -1.59, -1.59, -1.59, 5.03, 19.03, 37.03, 16.03, 17.03, -2.59, -2.59, -1.59, 1.41, -2.59, 10.98, 2.98, 0.98, -4.02, 1.98, 4.98, 10.47, 4.47, 2.47, 5.47, 3.01, -0.99, -1.99, 0.01, -2.24, -1.24, 10.32, 3.32, 0.32, -2.68, 1.39, 9.03, -1.97, -2.97, -3.24, -3.24, 7.41, 2.41, -0.59, -0.59, 5.39, 1.39, 1.48, -0.52, 2.03, -0.97, -1.97, 1.03, 5.76, 3.76, 6.39, 19.39, 2.39, -0.61, 5.39, -1.61, -1.74, -0.74, 3.76, -2.24, -0.24, -1.24, 0.48, -1.52, -0.52, 3.48, 9.76, 1.41, 2.39, 2.39, -1.61, 0.47, -2.53, -2.53, 2.09, -2.91, -1.91, 2.76, 0.76, 3.76, 4.42, -0.58, 0.42, 4.41, 1.47, -1.53, -2.53, 8.39, 7.14, -1.31, -2.31, -2.31, 15.47, 2.47, -0.53, 8.76, 4.76, 4.86, 11.76, 2.76, 3.42, 3.42, 0.03, -0.97, 4.76, 2.76, 16.19, 10.19, -0.53, -2.53, -1.99, 3.01, 3.76, 3.27, -0.53, 3.76, 1.06, -2.44, 0.01, 1.39, 4.00, 10.55, -0.52, -1.52, -2.52, -1.98, -1.98, 1.02, 1.02, -1.98, -1.23, 0.77, -2.23, -2.23, -2.23, -2.39, -3.39, -1.39, -4.10, -3.10, -0.10, 0.64, -1.36, -0.36, -1.99, -1.99, 7.01, 16.64, 3.64, 4.64, -2.36, 2.64, 3.64, 0.47, 1.47, -1.53, -1.24, -3.24, -1.24, -3.24, -1.24, -1.06, -2.06, -2.06, -1.06, 0.94, -1.51, 0.49, -2.51, 3.45, -1.55, -2.55, -1.54, -1.54, -1.54, -3.02, -3.02, -4.02, -0.51, -0.51, 1.49, 10.82, 6.82, 18.82, -0.80, -0.80, -1.80, 1.73, 0.73, -1.27, -0.78, 1.22, -1.78, 0.49, -1.51, -1.51, 1.13, 5.13, 11.13, -0.00, -1.00, -1.00, -0.00, 4.00, -0.32, -2.32, -1.32, -0.20, 5.80, -0.20, -5.19, -2.19, 0.81, 0.68, 3.68, -1.32, -2.32, -0.32, 0.68, -2.30, -1.30, 0.70, 5.70, 0.70, -1.30, 0.70, -0.30, -1.30, -0.30, -0.73, -0.73, -1.73, -0.73, -0.73, 1.70, -0.30, 0.70, -1.30, 1.70, -0.73, -0.73, -1.73, -0.73, -0.73, 0.57, -0.43, -1.43, -1.56, -1.56, -2.56, 6.39, 0.39, -1.61, 7.63, -3.37, 0.63, -1.38, -2.38, -0.93, -1.93, 0.26, -4.74, 6.18, 0.18, -1.82, -2.01, -2.01, -2.01, -1.55, -2.55, 0.45, -3.01, -2.01, -2.01, -2.06, -0.06, -2.06, 1.20, -1.80, -1.80, -1.28, 0.72, -2.28, 0.33, -1.67, -1.67, 3.37, 3.37, 3.37, 7.37, 2.37, -0.43, -0.43, 1.57, -1.43, 1.57, -1.73, -0.73, 4.27, 2.27, 4.27, 6.23, 0.23, 1.23, 1.23, 2.23, -0.57, -0.57, -2.57, -2.57, -1.57, -0.26, -1.26, -1.26, 3.99, 4.99, 5.99, -0.01, 0.99, -0.01, 4.99, 0.99, 0.99, -2.55, -2.55, -2.55, -2.67, 8.33, 10.33, -2.78, -2.78, -3.78, -0.93, -0.93, -2.93, 0.99, 0.99, 1.99, -1.55, -2.55, -2.55, -1.26, -1.26, 0.74, -0.01, -0.01, 1.99, 1.68, -2.32, -2.32, -2.32, 2.68, 0.04, 1.04, -0.96, 0.04, -1.96, 5.11, 0.11, -1.89, -1.89, 0.11, 2.45, 3.45, 2.45, 2.43, 23.43, 11.43, -1.01, -2.01, 1.99, -1.66, 6.34, 2.34, -0.91, 3.09, -0.91, -2.09, 1.91, 1.91, 5.34, 4.34, 0.34, -1.57, 1.43, -1.57, -1.57, -1.57, -2.82, -0.82, -2.82, 1.18, -1.82, -1.28, -1.28, -1.28, 1.94, -0.06, -2.06, -1.36, -1.36, -2.36, -2.36, -2.36, 0.64, 3.01, -1.99, -0.99, -1.77, 4.23, -1.77, -3.14, -4.14, 14.86, 25.86, 13.86, -2.01, -2.01, -2.01, -2.01, 23.32, 15.32, -2.68, -4.68, -4.68, 1.14, -1.86, 0.14, -2.86, -0.86, -2.01, 3.99, -3.01, -2.01, -2.01, -3.01, -3.01, -2.01, -1.01, 9.23, 5.23, 5.23, 0.76, -1.24, 5.76, 1.94, -0.06, -0.06, -0.06, 2.94, -0.68, -2.68, -3.68, -0.40, -1.40, -1.40, -2.92, -2.92, -0.92, -2.43, -1.43, -1.43, -1.43, 2.57, -0.43, -2.23, -1.23, -1.23, -2.56, -0.56, -0.56, 0.40, 0.40, 0.40, -1.73, -1.73, 1.27, 3.27, 8.27, 2.27, 0.27, -0.73, 0.27, 7.46, 5.46, 1.46, -1.73, -1.73, -2.73, -2.04, -2.04, 0.96, -5.90, -5.90, -0.90, 28.74, 30.74, 8.74, 0.74, 8.74, 0.74, -2.57, -0.57, -1.57, 0.49, -2.51, 0.49, 4.09, -2.91, 3.09, -3.53, -0.53, 7.47, -1.29, -3.29, -3.29, -1.25, -1.25, 0.75, -2.43, 0.57, -2.43, -1.82, -1.82, -1.82, -1.82, -1.82, -0.82, -2.43, -1.43, 0.57, -2.43, -0.43, -1.43, 0.42, 6.42, 0.42, -0.37, -2.37, -2.37, -2.37, -1.37, -2.37, -2.37, -2.37, -2.37, -1.37, -0.57, -1.57, -1.57, 3.43, 0.43, 10.72, -0.28, 2.72, -1.28, -1.28, 0.72, 1.46, 10.46, 9.46, 5.46, 9.46, 2.48, 3.48, 12.48, 6.48, 12.48, -1.36, 0.64, -1.36, -2.36, -0.36, -2.36, -1.58, -1.58, -1.58, 2.43, -3.57, -2.57, 2.74, 1.74, 1.74, -0.85, -0.85, -1.85, -2.49, -2.49, -0.49, -0.49, -2.49, 0.37, -0.63, 3.37, 1.74, 2.74, 1.74, 7.96, -2.04, -2.04, -1.56, 0.44, 9.44, 8.44, 0.44, -0.78, -1.78, -0.78, -1.78, 0.22, -3.48, -6.48, -5.48, 0.52, -4.48, -0.23, 8.77, 0.77, 7.77, 5.77, 3.78, -1.22, 1.78, 3.78, 5.78, -3.54, -3.54, -2.54, 1.34, -1.66, 0.34, 1.64, -2.36, -2.36, -2.50, -2.50, -2.50, -3.50, -3.50, -3.50, -2.50, -1.50, -1.90, -0.90, -1.90, -1.03, -0.03, -0.03, -0.90, 0.10, 0.10, -1.90, -0.90, -1.90, -0.78, -1.78, -0.78, 2.37, -0.63, 1.37, 3.44, -2.56, 2.44, 32.40, 22.40, 34.65, 20.65, 12.65, -2.38, -2.38, -2.38, -2.31, -1.31, -2.31, -2.81, -1.81, -1.81, -1.96, -1.96, -1.96, -0.28, 3.72, -2.28, 1.72, -1.28, -1.32, -1.32, -1.32, -1.97, 0.03, -0.97, -0.97, 0.03, -1.97, 7.69, 0.69, -0.76, -2.76, 0.08, 2.08, 0.08, -0.03, -1.03, 0.97, 8.60, 3.60, -0.40, 0.57, -2.43, -2.43, -2.43, -2.43, 7.97, -2.03, -3.03, -3.03, -3.03, -1.43, -2.43, -2.43, -2.43, -2.43, 20.56, 7.56, 0.56, 2.13, 0.13, -0.87, 4.60, 5.60, 0.60, -2.09, -1.09, -3.09, -0.28, -2.28, -1.28, -3.01, -3.01, -0.01, -0.01, -0.01, -2.01, -2.26, -1.26, -2.26, -2.62, -1.67, -1.67, 1.33, -2.33, -1.33, -2.33, -0.97, -0.97, -0.97, -2.33, -0.33, -0.33, -2.79, -2.79, -2.79, -2.33, -1.33, -2.33, -1.01, 5.99, 10.99, 6.18, 3.18, -1.82, -1.26, 4.74, 5.74, -1.13, -1.13, -0.13, -0.88, -1.88, -1.88, 1.99, -1.01, -1.01, 2.45, 1.45, -2.55, 0.78, -2.22, -2.22, 4.09, -1.91, -2.91, -1.01, -1.01, -2.01, 2.00, 2.00, -5.00, -1.01, -1.01, -2.01, 11.91, 5.91, -1.09, 1.91, -1.09, 2.17, -0.83, 2.17, 3.17, 1.17, -1.33, -2.33, -2.33, -0.33, -2.33, -0.14, -2.14, -1.14, -0.14, -0.14, -2.33, -2.33, -2.33, -1.33, -1.33, 4.23, -0.77, -1.77, -0.75, -1.75, -0.75, -0.31, 0.69, -2.31, -1.77, -1.77, 3.23, 1.99, 2.99, -0.01, -1.01, -1.01, -2.01, 4.78, 1.78, -0.22, 0.37, -5.63, -5.63, -4.63, -5.63, 2.20, -1.80, 0.20, 1.20, 9.20, -0.63, -0.63, -1.63, -0.63, -0.63, 0.57, -1.43, -1.43, -1.43, -2.43, 0.57, -2.43, -1.43, -1.43, 0.57, -2.26, -0.26, -2.26, -0.83, -1.83, -0.83, -1.83, -1.83, -0.81, 5.19, -0.81, -1.81, -0.81, 2.62, 1.62, 0.62, -0.38, 0.62, 5.62, 9.46, 3.46, 0.46, -1.01, -0.01, -2.01, 3.62, 4.62, 0.62, -1.14, -2.14, 1.86, 0.57, -2.43, 8.57, 1.44, -0.56, -0.56, 1.37, 1.37, 2.37, 7.63, 7.63, 7.63, -0.55, -2.55, -2.55, -0.61, -0.61, -2.61, -3.01, -3.01, -0.01, -1.55, -2.55, 0.45, -0.24, -2.24, -2.24, -1.36, -1.36, 1.64, -0.36, -1.36, -0.36, 3.79, -0.21, 1.79, 0.64, -1.36, 0.64, 3.23, 12.23, 6.23, -0.16, -0.16, -2.16, -0.70, -1.70, 9.30, 0.30, 1.30, -0.88, 4.12, 2.12, 2.12, 3.12, -1.99, 2.01, 7.01, 0.42, -1.58, -1.58, -1.69, 10.31, -1.69, -3.70, -0.70, -0.70, -1.54, -2.06, -2.51, 0.49, 0.49, -0.76, -0.76, -1.76, -4.02, -4.02, -4.02, -4.02, -4.02, 8.45, 13.45, 13.45, 3.45, 8.45, -1.43, -2.43, -0.43, 5.94, 0.94, -1.06, 0.32, 2.32, 1.32, -2.43, -1.43, -1.43, -4.75, 1.25, -2.75, -4.75, -4.75, -2.19, -0.19, -1.19, -1.19, 0.81, 2.55, -2.45, -3.45, -4.45, -4.45, -0.37, 0.63, -1.37, 3.63, -0.37, -1.37, -1.37, -2.37, -2.37, -0.37, -1.82, 0.18, -1.82, -2.65, -2.65, -2.65, -2.25, -2.25, -2.25, -2.03, -2.03, 0.97, -2.03, 0.97, -0.03, 0.57, 0.57, -1.43, 3.25, 2.25, 1.25, -1.61, 5.99, 5.99, 2.99, -3.88, 0.12, 7.12, -4.62, -5.62, -1.62, 2.22, 4.22, 2.22, 2.43, 3.43, 1.43, 6.43, 6.43, -2.38, -2.38, -2.38, -1.38, -0.38, -1.26, -2.26, -1.26, 1.74, 1.74, -2.86, -1.86, -2.86, -2.86, 2.14, 3.14, 14.14, 4.14, 3.14, 4.14, -2.05, -2.05, -2.05, -0.05, -2.05, -1.92, 1.08, -1.92, -1.92, -0.92, -1.92, -1.92, -1.92, 0.08, -1.92, -1.05, -2.05, -2.05, -2.05, -2.05, -0.51, -1.51, 1.49, 0.49, -2.51, -0.26, 0.74, -1.26, -1.26, -0.26, -2.18, -2.18, -2.18, -2.18, 2.82, -0.77, 2.23, 0.23, -0.77, 1.23, -0.75, -1.75, -0.75, -0.79, 2.21, 5.21, 14.25, 1.25, 4.25, 9.76, 3.76, 0.76, 3.99, 1.99, 0.99, 0.49, -0.51, -2.51, 4.99, 5.99, 3.99, 4.39, 7.39, 3.39, 0.39, 1.39, 10.39, -1.61, 1.39, 5.45, 1.45, 0.45, -2.55, 0.45, 1.99, 3.99, -0.01, -1.01, 0.99, 2.03, 3.03, 8.03, 2.03, 6.03, -1.03, -0.03, -2.03, 1.17, -1.83, 1.17, -2.83, -1.83, -2.83, 0.01, 0.01, 12.01, 1.17, -2.83, 0.17, -2.83, -1.83, 0.17, 0.57, -2.43, -2.43, -2.43, -1.43, -2.43, -5.40, -3.40, -2.40, 0.92, 4.92, -1.08, -1.59, -0.59, -1.59, -1.59, -0.59, -1.38, -2.38, -1.38, -1.38, -2.38, -0.38, 0.62, -2.38, -1.38, 1.62, -2.38, -1.38, -2.38, -2.38, -2.38, 3.04, -0.96, -1.96, 1.04, 5.04, 1.82, -1.18, -3.18, 1.82, -1.18, 5.01, -1.99, -1.99, -1.36, -1.36, -2.36, -0.77, -1.77, -1.77, 0.25, 1.25, -1.99, -1.99, 0.01, -1.77, -1.77, -1.77, 1.08, 1.08, -2.92, -0.38, -1.38, -1.38, 10.49, 4.49, 2.49, 1.65, -0.35, -2.35, -0.76, 4.24, 0.24, -1.98, 0.02, -1.98, -1.35, -1.35, -0.35, -1.25, -0.25, -1.25, -0.04, -3.04, -2.04, 4.10, -0.90, -1.90, 0.75, -1.25, -1.25, 1.10, -2.90, 1.10, 3.88, -3.12, -2.12, 6.33, 3.33, 3.33, -0.24, -2.24, 0.76, -3.81, -3.81, -2.81, -1.83, 0.17, 0.17, -3.83, -0.83, -2.83, -1.83, 0.17, -2.83, -2.32, -2.32, -3.32, 8.14, 6.14, 3.14, 3.36, 5.36, 5.36, 3.55, -1.45, 1.55, -0.45, -1.45, -0.45, 0.14, 1.14, 0.14, -0.49, 1.51, 2.51, 0.74, 2.74, -1.26, 3.74, 20.74, -2.01, -1.01, 5.99, 2.99, -0.01, -3.01, -2.01, -0.01, 2.99, 7.99, 6.93, -2.07, -0.07, 8.93, 13.93, 1.14, -0.86, -1.86, 1.87, 0.87, 1.87, 0.43, -1.57, 1.43, -1.82, -1.82, -0.82, 4.66, -0.34, 1.66, 0.03, 1.03, -1.97, 6.82, 3.82, 2.82, 8.00, 10.00, 4.00, 2.64, -1.36, 3.64, -1.88, 0.12, -1.88, -3.02, 3.98, -2.02, -2.83, 1.17, 0.17, -2.34, -1.34, -1.34, -2.34, -1.34, 10.66, -2.34, -1.34, -2.34, -2.34, -1.73, -1.73, -1.73, -1.73, -1.73, -2.22, -2.22, -2.22, -2.22, -2.22, -2.34, -2.34, -0.34, -2.34, -1.34, -1.37, -1.37, -1.37, -1.37, 0.63, -2.37, 5.63, -2.37, -1.37, 1.63, 1.22, -2.78, -5.78, -5.78, -0.78, -3.54, 1.46, 0.46, 2.46, 0.46, 5.64, -3.36, -3.36, -2.36, -0.36, 1.73, -3.27, 2.73, -0.14, 2.86, -0.14, 1.64, -1.36, -0.36, -2.01, -1.01, -2.01, -2.01, -2.01, -1.36, -2.49, -1.99, -2.56, -1.56, -1.56, -1.80, -0.80, 3.20, 9.40, 59.40, 71.40, -1.82, 1.18, -0.36, -1.36, 0.64, 8.99, 13.99, 23.99, 5.10, 1.10, 2.10, -0.90, 0.10, 1.10, 0.10, -0.90, 0.10, 2.10, -1.81, -0.81, -1.81, -1.81, 0.19, 0.96, 1.96, 3.96, -1.04, -0.04, 2.29, 2.29, 0.29, -2.01, 8.99, 16.99, 16.99, -2.01, 5.74, 1.74, -2.26, 0.74, -2.26, -0.81, -0.81, -1.81, 1.59, -0.41, 2.59, 0.59, -1.41, -1.41, -1.41, -0.41, 0.59, -3.00, -3.00, -1.00, 6.66, 0.66, -3.34, -0.06, 3.94, 0.94, -3.08, -3.08, -3.08, -2.56, -0.56, -2.56, -1.72, -1.72, -1.72, 0.28, -1.72, 1.28, -2.56, -2.56, -2.56, -3.02, -3.02, -2.02, -1.51, 1.49, 1.49, -7.42, -8.42, -5.42, 2.99, -0.01, -0.01, 0.62, -2.38, -0.38, -0.01, -1.01, 0.99, 2.71, -3.29, -2.29, 0.46, -1.54, -0.54, -2.17, -3.17, -2.17, 42.99, 34.99, -0.01, -0.98, -1.98, -1.98, 0.31, -1.69, 0.31, 2.03, 5.03, 5.03, -0.75, -1.75, -1.75, -2.49, -2.49, -2.49, -0.32, 1.68, 0.68, -0.48, -1.48, -1.48, 0.45, -0.55, -1.55, 0.26, -2.74, -1.74, -1.74, 1.26, -1.74, -2.55, -1.55, -2.55, -1.55, -0.55, 1.45, -0.01, -0.01, -2.01, -0.01, 3.99, -2.01, 1.32, -4.68, -3.68, -1.56, 6.44, 1.44, -2.21, 0.79, 1.79, -2.21, -2.21, -3.33, -3.33, -3.33, -3.33, -3.33, 0.23, -3.77, 0.23, 2.18, 2.18, -0.82, -1.06, -1.06, -1.06, 1.08, 5.08, 5.08, -2.43, -2.43, -2.43, -1.80, 19.20, 4.20, 1.57, 0.57, 2.57, -2.43, -1.43, -2.43, -1.80, -1.80, -1.80, -1.56, -1.56, -1.56, 1.91, 1.91, 0.91, 0.44, 9.44, 1.44, -1.67, -1.67, -1.67, 1.64, -0.36, -2.36, -0.51, 30.49, 14.49, -4.43, -3.43, -1.43, 3.30, -2.70, -1.70, -3.86, -2.86, -2.86, 4.29, 1.29, -0.71, -4.33, -3.33, -1.33, 6.07, 8.07, 10.07, -1.90, 1.10, 0.10, 6.10, 4.10, 5.10, 8.47, -0.53, 4.47, 4.10, 1.10, 4.10, 0.01, 11.01, -1.99, 7.48, 1.48, 0.48, -2.36, -1.36, -1.36, -1.07, -2.07, -2.07, -0.55, -2.55, 4.45, 3.00, -1.00, -0.00, 2.00, -2.00, 2.03, -0.97, 4.03, 2.03, 3.03, 7.69, 4.69, 4.69, 0.44, -2.56, -1.56, 0.57, 0.57, -1.43, -3.18, -3.18, -3.18, -3.18, -3.18, 12.97, 12.97, 5.97, 0.20, 0.70, -4.30, -4.30, -4.84, -4.84, -4.84, -2.59, -2.59, -2.59, -4.14, -4.14, -4.14, 6.09, 9.09, 7.09, -1.31, 2.69, -1.43, 0.57, -3.01, -2.01, -1.01, -4.17, -3.17, -2.17, -2.18, -3.18, -3.18, -5.08, 0.92, -3.08, 9.83, 3.83, -1.17, -0.01, -2.01, -2.01, 0.76, 0.76, 3.76, 0.57, 0.57, -2.43, 3.57, 4.57, 1.57, 0.12, -2.88, 0.12, -1.43, 1.57, -1.43, 0.57, 2.57, 0.57, 4.37, -1.63, -1.63, 1.99, 4.99, 3.99, 0.49, -2.51, 0.49, -1.51, -0.51, -1.51, 4.95, -1.05, -0.05, 7.01, -0.99, 10.01, 0.53, -1.47, -0.47, -2.12, -1.12, -1.12, 6.43, 3.43, -1.57, -0.60, 2.40, 2.40, -0.96, -0.96, -0.96, -0.96, -1.96, 16.63, -1.54, 10.55, 21.55, 35.55, -1.23, -0.23, -2.23, 4.36, 4.36, -2.64, -2.64, -4.64, -1.89, -1.89, -1.89, -0.82, -2.82, -2.82, 5.49, -2.51, -2.51, -2.36, -2.36, -2.36, -2.24, -2.24, -2.24, 8.90, 2.90, 10.90, -0.94, -0.55, -0.55, -2.55, -2.71, -0.71, -1.71, -0.67, 3.33, -1.67, -2.01, -1.01, -5.01, -2.68, -4.68, -0.68, -1.26, -0.26, -2.26, 4.99, -1.01, 0.99, -2.42, 6.58, 3.58, 13.03, 2.03, -0.97, 3.74, 3.74, 4.74, -1.01, -2.01, -1.01, -1.80, 8.20, 2.20, -1.80, 2.20, -1.98, -2.98, 2.02, -0.98, 1.02, 21.73, 13.73, 6.73, 1.73, 1.73, -1.80, -0.80, -1.80, -1.80, -1.80, 6.08, 5.08, -2.92, -0.76, 0.24, -1.76, -0.67, -1.67, 0.33, -2.36, -2.36, -2.36, -1.21, -2.21, 13.79, -2.36, -2.36, -2.36, -0.38, -1.38, 1.15, -3.22, -3.22, -1.22, -2.01, -2.01, -2.01, -0.38, -0.38, 2.62, -1.26, -0.23, 3.77, -0.35, 0.65, -2.35, 0.03, -2.97, -0.97, -1.94, -1.94, -4.94, -0.77, -2.77, -3.77, -1.63, -2.63, -1.63, -0.05, -1.05, 4.95, -3.34, -2.34, -3.34, 3.30, 7.30, 0.30, 2.45, 3.45, 10.45, -1.41, -1.41, -1.41, 0.60, 0.60, -1.40, -1.88, -0.88, -0.88, -2.83, -5.32, -5.32, -5.32, -0.38, -1.38, -1.38, -3.55, -2.55, -2.55, -1.38, 0.62, -1.38, -3.14, -6.14, -5.14, -3.82, -2.82, -3.82, -1.32, 0.68, -1.32, 4.67, 8.67, -1.33, 2.51, 7.51, 3.51, 20.73, 35.73, 8.73, 6.03, 4.03, 0.03, -0.01, -1.63, 0.32, -0.43, -0.43, 8.57, 9.57, 2.57, -1.99, 1.01, 2.01, 26.01, 6.75, -1.25, 9.75, 0.75, 0.75, -0.33, -1.33, -2.33, -0.18, -1.18, -2.18, -1.87, -0.87, -1.87, -1.67, -1.67, -1.67, -2.10, 0.90, -2.10, -1.56, 0.44, -1.56, 0.40, -1.60, -2.60, 3.62, 1.62, 13.62, -3.83, -3.83, 0.17, -1.82, -1.82, 0.18, -0.17, -0.17, 7.83, 3.83, 47.83, 0.99, -3.01, 7.99, 1.99, -3.01, -0.01, 2.99, 7.99, 4.99, 4.99, -1.86, -2.86, -2.86, -2.86, 3.14, 6.43, 10.43, 8.43, 8.43, 6.43, -2.72, -2.72, -1.72, -0.06, -0.06, -1.06, -1.42, -0.42, -0.42, -1.23, -5.23, -3.23, -1.81, -1.81, 2.19, 1.62, -1.38, -0.38, -1.51, 1.49, -2.51, 6.65, -1.26, -2.26, -2.26, -0.38, 1.49, -2.51, -0.51, -0.38, -0.38, -2.38, -2.18, -0.18, -1.18, 0.82, 4.82, -1.36, -1.36, -2.36, 1.64, 3.64, -1.92, 5.08, 2.08, 1.08, -0.92, 14.49, 27.49, -1.51, 1.02, -0.98, -1.98, -2.77, -2.77, -2.77, 4.48, -0.52, 7.48, -1.18, -1.18, 2.82, -1.24, -1.24, -1.24, -0.24, 3.99, -0.01, -0.01, 2.03, -1.97, -0.97, -1.26, -2.26, 0.74, -0.97, -1.97, -0.97, 0.03, -2.97, -1.97, -0.97, -0.97, 1.01, 0.01, 0.01, -3.01, -1.01, -2.01, -2.97, -0.97, 2.03, 3.43, 0.43, -0.57, -2.03, -2.03, -1.03, -1.38, -2.38, 1.62, -0.38, -1.38, -1.57, -0.57, -1.57, -0.57, -0.57, -1.23, 6.77, -2.23, -1.23, -0.23, -0.38, 0.62, -0.38, 0.62, -0.38, 1.74, -2.26, -0.26, -0.26, -2.26, 27.55, 10.57, -1.60, 0.40, -2.60, 6.60, 32.60, 27.60, 2.60, -0.40, -1.40, -2.88, -1.88, -2.88, 1.74, 0.74, 0.74, 0.45, 1.45, -1.55, -1.64, -0.64, -2.64, -1.42, -6.42, -7.42, -0.33, -0.33, 1.67, -0.53, -2.53, -2.53, 2.51, 8.51, -1.49, -2.36, -0.36, 3.64, 0.69, -2.31, 1.69, 4.69, 2.69, 0.08, -1.92, 0.08, -0.92, 0.08, -2.01, -2.01, -2.01, 0.75, -0.25, 2.75, 0.94, -1.06, 0.94, -0.60, -0.60, 0.40, 0.40, -2.60, -2.60, -2.06, -2.06, -1.06, 2.35, 4.35, 0.35, 1.21, -1.79, -2.79, 3.52, -0.48, 0.52, 0.11, -0.89, 4.11, -3.94, 0.06, -3.94, -2.09, 0.91, 2.91, 35.74, 23.74, 29.74, -1.56, 4.44, 6.44, -2.01, -0.01, -1.01, -0.01, 0.99, 1.03, -0.97, 5.03, 1.03, 1.03, -1.01, -3.01, -2.01, 2.99, -1.01, 2.18, 2.18, 1.18, -0.82, 2.18, -0.01, 2.99, 0.99, 2.99, 0.99, -0.64, -3.64, -2.64, 0.19, -1.81, -1.81, 14.40, 32.40, 20.40, 1.69, -1.31, -2.31, -1.70, -2.70, -2.70, -1.43, -2.43, -1.43, -3.44, 3.56, -2.44, 0.56, -2.44, 1.64, 8.64, -1.36, -1.36, -1.36, 4.18, 9.18, 4.18, 1.18, -2.82, 6.57, 8.57, 2.57, 0.57, -2.43, 2.64, 1.64, -2.36, 6.51, 0.51, 1.51, 4.64, 0.64, -0.36, 6.64, -1.36, -2.36, 1.01, -2.99, 16.01, 1.00, -1.00, -3.00, -2.01, -3.01, -3.01, -2.01, -1.01, -3.01, -3.01, -2.01, -2.01, -3.56, -2.56, -2.56, 5.55, 1.55, -3.45, -0.21, -2.21, -0.21, -0.77, -1.77, -0.77, -1.36, -2.36, -0.36, -0.57, -3.57, 1.43, 12.21, 25.21, 20.21, -1.72, -1.72, 4.28, 9.13, 0.13, 7.13, -3.66, -4.66, -4.66, 3.03, -2.97, -2.97, -2.01, -3.01, 0.32, 1.32, 0.32, -2.97, -0.97, -2.97, -2.86, -0.86, -1.86, 0.49, -1.51, 0.49, -1.01, -0.01, -3.01, 0.03, 0.03, -0.97, -1.76, -2.76, -1.76, -1.54, -2.54, -2.54, 35.64, 34.64, 13.64, -1.36, -2.36, -1.36, -0.36, -2.36, -1.36, -1.77, -0.77, -0.77, 1.10, 1.10, -2.37, -1.05, 2.10, -2.01, -0.01, 1.99, -0.01, 0.99, 3.00, 3.00, 16.00, -3.00, 6.98, -4.02, -2.02, 2.98, -1.02, -1.82, -0.82, -0.82, 0.18, 2.18, 1.43, -0.57, -1.57, -1.49, -2.49, -1.49, -0.77, -1.77, -1.77, 2.67, -2.33, -0.33, -1.33, -2.33, -2.33, 5.99, 2.99, 5.99, 3.66, 2.66, -0.34, -4.02, -0.02, -4.02, -3.01, -3.01, -3.01, -2.01, -3.01, -3.01, -2.01, -2.01, -0.01, -2.51, -1.51, -1.51, -2.97, 0.03, -2.97, 0.44, -1.56, -0.56, -1.80, -1.80, -1.80, 0.51, -0.49, -1.49, 0.51, 4.51, 2.51, -0.73, 2.27, -0.73, 0.74, -0.26, 0.74, -0.38, 0.62, 1.62, -1.01, 0.99, -2.01, -1.38, -1.38, 0.62, -2.55, -0.82, -1.82, -1.82, 2.33, -0.67, -1.67, -1.67, 6.84, 1.84, -1.16, -0.16, 0.84, 6.89, -1.11, -0.11, -2.11, 3.89, 6.29, -1.71, -2.71, 1.55, -3.45, -3.45, -2.45, -2.45, -2.51, -1.51, 5.49, 1.04, -1.96, 0.04, -3.75, 1.25, -0.75, -1.52, 3.48, 3.48, -1.39, -2.39, -3.39, 4.99, -4.01, -5.01, -3.08, -4.08, 0.92, -1.43, -1.43, -1.43, -1.91, -1.91, 2.09, -0.81, -0.81, 3.19, 4.09, 1.09, 0.09, -1.81, -0.81, 0.19, -1.81, -0.81, -1.81, 1.72, -0.28, 7.72, 0.72, -1.28, -1.82, -0.82, -0.82, 9.63, 0.63, 6.63, 3.45, -1.55, -2.55, -2.39, -1.39, -2.39, -3.62, -2.62, -3.62, -2.39, -2.39, -2.39, 16.86, 14.86, 12.86, -2.01, -1.01, 1.99, -0.01, 3.99, 0.70, 1.70, 2.70, 11.70, 2.70, -3.22, -3.22, -3.22, -2.22, -2.22, -2.86, -8.73, -6.73, -6.73, -1.61, -1.61, -1.61, 3.73, 12.73, -2.27, -5.27, -4.27, 6.03, 0.03, -0.51, -2.51, -1.51, 1.49, -0.51, 0.70, -1.30, -3.30, -3.30, -3.30, -3.93, -2.93, -1.93, -3.93, -2.93, -2.01, -2.01, -2.01, -1.01, -2.01, -2.01, -2.01, -3.01, -2.01, -2.86, -2.86, -2.86, -3.61, -3.61, -2.61, -3.61, -1.61, 5.70, 7.70, 2.70, 6.70, 1.70, 5.96, 2.96, 0.96, 5.03, 2.03, 5.03, -0.41, -1.41, -2.41, -1.25, -0.25, -1.25, -1.25, -0.25, 0.23, -0.77, -1.77, -1.77, -1.77, -0.57, -0.57, -1.57, 0.43, -0.57, 6.14, 0.14, 2.14, 4.14, 1.14, -1.25, -0.25, -0.25, -1.25, -0.25, 2.40, 2.40, 2.40, 7.48, -2.52, -2.52, -1.90, -2.90, -1.90, -1.24, -2.24, -0.24, 2.00, -2.00, -1.00, -1.00, 3.00, -1.88, -0.88, -1.88, -1.88, -1.88, 8.62, 15.62, -1.38, 5.62, -2.38, -2.38, -2.38, -1.40, -2.40, -2.40, -1.40, -2.40, -2.40, 0.12, -2.88, -2.88, -2.28, -2.28, -2.28, -0.40, -2.40, -2.40, -1.59, -2.59, -0.59, 6.36, 2.36, 2.36, 5.54, 4.54, 7.54, 8.54, 7.54, 4.54, -0.73, -0.73, -1.73, -1.31, -2.31, -2.31, -3.12, -3.12, -3.12, -0.73, -1.73, -2.31, -2.31, -2.31, -2.19, -2.19, -2.19, -3.27, -5.27, -5.27, -3.27, -0.27, 1.18, -0.82, -2.82, 0.18, 1.18, -0.91, -3.91, -2.91, -2.66, -3.66, -3.66, 4.39, 0.39, -3.61, 0.57, 12.49, -0.51, 14.49, -3.66, 0.34, -0.77, -0.77, -1.77, -1.99, 3.01, -0.99, -3.45, -0.45, -3.45, 2.72, -0.28, -0.28, 5.72, -0.28, 1.72, 1.93, -3.07, 0.93, 8.72, 2.72, 8.72, -2.06, -2.06, -2.06, -0.82, -1.82, -2.82, 4.24, 3.24, -2.76, 0.24, -3.76, -3.76, -2.97, -2.97, -1.97, -0.23, -2.23, 0.77, -1.23, -2.23, -1.57, 3.43, -1.57, -0.57, -1.57, -1.75, -5.75, -4.75, -3.69, -3.69, -3.69, -3.69, -3.69, -3.69, -0.79, 0.21, -3.79, 1.95, 1.95, -3.05, -0.74, -0.74, -0.74, 4.26, 2.26, -1.74, -0.74, -2.74, -2.74, -2.74, -2.10, 1.90, 4.90, 0.34, -2.66, -1.66, 7.34, -0.66, -0.66, 3.25, -0.75, -2.75, 4.87, 0.87, -1.13, 6.48, 6.48, 0.48, -0.61, -3.61, -1.61, -3.61, -3.61, -5.27, -4.27, -5.27, 1.73, -2.27, -1.78, -3.78, -0.78, -1.78, 2.22, -2.78, -3.78, -2.78, -3.78, -2.78, 5.94, 7.94, 10.94, 11.67, 5.67, 14.67, -1.79, 2.21, -0.79, -1.75, 1.25, 1.25, -1.51, -2.51, -2.51, -2.51, -2.51, -1.80, 1.20, -0.80, -0.44, 1.56, 3.56, 3.77, 1.77, -1.23, 5.87, -1.13, -3.13, 6.22, 8.22, 0.54, -1.46, -2.46, -0.01, 1.99, -1.01, -0.86, 6.14, 0.14, -2.26, -2.26, -2.26, -3.01, 0.99, 0.99, 8.99, 8.99, 2.99, -1.77, -1.77, -0.77, -1.77, -1.77, -1.78, -1.78, -1.78, -1.78, -1.78, -2.96, 2.04, -0.96, -2.96, -0.96, 0.48, -2.52, -2.52, -1.52, -2.52, 2.23, -1.77, 2.23, 42.23, 55.23, 2.64, 8.64, 0.64, -0.24, -1.24, 8.76, 1.21, 2.21, 3.21, -0.79, 0.21, 0.21, -1.24, -2.24, -2.24, -2.29, -2.29, -2.29, 0.83, -2.17, -2.17, -0.53, 0.47, -0.53, -1.29, -1.29, -2.29, -1.23, -2.23, -2.23, -2.23, -2.23, -0.51, -0.51, -0.82, -2.82, -1.82, -5.66, -2.66, -2.66, 0.57, 30.57, 0.57, 3.57, 2.57, 1.18, -0.82, -0.82, -0.82, -0.82, -0.62, -0.62, -1.62, -1.62, -0.62, -0.97, -1.97, 1.03, -1.55, 3.45, 0.45, -2.01, -3.01, -3.01, 3.99, -3.01, -2.01, -0.54, 2.46, -2.54, -1.54, 2.46, -2.01, -2.01, -2.01, 2.99, 2.99, -2.38, -0.38, -0.38, -1.38, 0.62, -2.38, -0.38, -2.38, -2.38, -1.38, 5.62, 3.62, -0.38, -0.38, 4.62, -1.03, -2.03, -2.03, -1.28, 16.72, -1.28, 9.77, 6.77, 5.77, 1.18, 4.18, 4.18, 4.62, -2.38, 3.62, 3.62, -0.38, -0.38, -0.01, -0.01, 0.99, 0.84, 0.84, -0.16, 0.02, 3.02, -0.98, -0.69, -0.69, -0.69, -1.99, -1.99, -1.99, -1.99, -1.99, -2.53, -1.53, -2.53, -2.53, 1.47, -2.23, -2.23, -2.23, -2.23, -2.23, -2.73, -2.73, -2.73, 0.74, -2.23, -2.39, -2.85, -2.85, -2.85, 11.19, -2.81, 1.19, -1.81, -1.81, 17.83, 9.83, 16.83, 3.83, -0.17, -0.78, -1.78, -1.78, -1.78, -1.78, 0.65, -0.35, -2.35, -0.35, 12.65, -1.18, -3.18, -3.18, -2.18, -2.18, -2.97, -2.97, -1.97, 0.03, -1.97, -2.22, 1.78, -1.22, 5.93, -1.07, 0.93, -1.81, 0.19, -1.81, 3.00, 51.00, -1.00, -0.30, 10.12, -1.88, -3.88, -0.36, 1.64, -1.36, -0.36, -1.36, -1.36, -1.36, -1.36, -0.36, 2.64, 3.76, 6.76, 2.76, 0.76, 3.76, -1.77, -1.77, -1.77, 4.23, 1.23, -1.38, -1.38, -1.38, -0.38, -0.38, -2.01, -1.01, -2.01, -2.01, -2.01, -1.26, -0.26, 1.74, -1.26, -1.26, -0.38, -1.38, -2.38, -0.38, -1.38, -1.38, 0.62, -0.38, 0.62, -1.38, -0.76, -1.76, -3.76, -2.18, -3.18, -0.18, -2.14, -3.14, -2.14, 4.21, 4.21, 0.21, 11.48, 4.48, 0.48, 0.99, 2.99, -2.01, -1.01, -1.01, -0.85, 0.15, 2.15, 0.99, -0.01, 0.99, 0.62, -2.38, -1.38, -0.38, -1.38, -0.38, -2.83, -2.52, -1.63, -1.63, 0.37, 2.57, 0.57, 5.57, 5.36, 2.36, 3.36, -1.63, -1.63, 1.37, 0.40, -2.60, -3.60, -0.31, 1.69, -2.31, -0.04, -1.04, -2.04, -1.34, -2.34, -2.34, -1.65, -0.65, -0.65, -0.92, -2.92, -0.92, -0.36, -0.36, 2.64, -1.96, -2.96, 2.04, -3.23, -3.23, 1.03, 2.03, -1.97, 1.28, -2.72, 0.28, -1.79, 0.21, 1.21, -0.56, 1.44, -2.56, -2.26, -2.26, -1.26, 1.02, 4.02, 7.02, -2.28, -1.28, -2.28, 2.74, 1.74, 1.74, -2.01, 5.27, 8.27, 6.27, 0.69, 7.69, 5.69, -2.05, -1.05, -2.05, -1.58, -0.58, -1.58, -1.58, -0.58, -1.57, -0.57, -3.57, -1.57, -1.57, -2.26, -0.26, -0.26, -2.26, -1.26, -1.02, 6.98, 8.98, 1.41, -0.59, 3.41, 0.41, -0.59, 11.01, 0.01, -0.99, 5.01, -1.99, 0.01, 4.21, 4.21, 0.21, 9.18, -1.82, 5.45, 3.45, 10.45, 3.30, 0.30, -2.70, -0.69, -1.69, -1.69, -3.34, -3.34, -0.34, -0.28, 0.72, 3.72, -1.43, -1.43, -0.43, -1.43, -0.43, -0.43, -0.92, -2.92, -1.92, 0.57, -1.43, -0.43, -6.55, -3.55, -6.55, -5.55, -7.55, -0.51, -1.51, -0.51, -2.51, -2.51, -1.51, 6.00, 5.00, 7.00, -2.28, -1.28, -2.28, -3.63, -0.63, -2.63, -1.71, -2.71, 0.29, -0.71, -1.71, -2.71, -1.71, -2.71, -2.71, 2.47, 3.47, 2.47, 0.18, 13.18, -0.82, -0.97, -2.97, -2.97, -2.51, -2.51, 0.49, -1.86, -2.86, -2.86, -3.01, -3.01, -2.01, -1.60, 0.40, -2.43, -2.43, -1.82, 0.18, -1.82, 1.18, -0.82, -1.06, -0.06, -2.06, -1.06, 0.94, 0.18, 2.18, 2.18, -1.82, 0.18, 9.68, 0.68, -1.32, -1.32, 1.68, 1.48, -1.52, -0.52, 0.48, -2.52, -1.01, -2.01, -2.01, 5.18, 2.18, 1.18, 3.74, 1.74, 1.74, -2.55, -0.55, -1.55, -1.01, -2.01, -2.01, -1.95, -0.84, 2.16, 3.16, 4.53, 2.53, -2.47, 2.35, -1.65, -2.65, 1.48, -0.52, 1.48, 1.30, -2.70, -1.70, -2.55, 2.45, 20.45, -0.37, -1.37, 2.63, -2.00, -2.00, 1.00, -2.37, -0.37, -1.37, 0.78, 0.78, -0.22, -3.79, -4.79, -4.79, -1.38, -2.38, -3.38, -1.44, -0.44, -1.44, 0.46, -2.54, -1.48, -1.48, -1.48, -1.48, -1.48, -5.42, -3.42, -5.42, -5.42, -4.42, 1.76, -2.24, -3.24, -3.24, -1.24, -2.82, -1.82, -0.82, -1.82, -2.82, 3.83, 4.83, 4.83, 6.83, 1.83, -2.77, -0.72, -0.72, 2.28, 1.28, -1.72, -0.26, -2.26, -1.26, 0.48, 5.48, 0.48, 7.48, -1.52, 0.52, -1.48, -1.48, -1.48, 12.53, 7.53, 21.53, 4.79, 1.79, 3.79, 0.79, 0.79, 2.79, 1.79, 6.79, 1.79, 2.79, 0.01, 4.01, 1.01, 1.01, 5.01, 0.23, 11.23, 8.23, 4.23, 12.23, 2.09, 9.09, 18.09, -3.49, -2.49, -2.49, -2.45, -1.45, 2.55, 1.27, -1.73, 0.27, -1.88, -1.88, -0.88, 0.12, -0.88, 0.92, 2.92, 1.92, -2.08, -1.08, -1.88, 9.73, 3.73, -4.27, -3.95, -3.95, -2.95, -3.02, 2.98, -3.02, -2.26, -1.26, -1.26, 0.45, -2.55, -0.55, 2.01, 0.01, 1.01, 16.40, 36.40, 20.40, -2.87, -2.87, -2.87, -1.36, -2.36, -1.36, -1.58, -1.58, -0.58, -2.36, -2.36, 1.64, -0.77, -1.77, -1.77, -1.88, -0.88, -0.88, -1.88, -1.88, -1.67, 0.33, 5.33, 1.33, -1.67, -2.67, 2.33, 5.33, -0.67, -1.67, 6.14, 10.14, 11.14, -1.56, -1.85, -0.85, 8.15, 2.15, 2.15, -1.29, -4.29, 3.71, 2.71, -1.97, -2.97, -1.97, 2.03, -1.97, 13.39, 8.39, 17.39, 17.39, 8.39, -0.22, 4.78, 1.78, 2.45, 4.45, 5.45, -1.55, -0.55, -0.55, -3.22, -0.22, -0.22, -2.18, -3.18, -3.18, -0.18, -3.18, -1.59, 3.36, 1.36, 6.36, -2.22, 0.78, -1.22, -4.25, 1.75, -0.25, -0.43, 0.57, -0.43, -3.18, -1.18, -2.18, -3.18, -2.18, -0.78, -0.49, -2.49, 1.51, -1.99, -1.99, -0.99, 2.67, -2.33, -1.33, -1.99, -1.99, -4.66, -6.66, -6.66, -2.65, -3.65, -3.65, -1.23, -1.23, -2.23, -2.38, -2.38, -1.38, -2.38, -2.38, -2.38, -0.78, -1.78, -0.78, -2.26, -0.26, -1.26, 0.46, -2.54, -2.54, 0.99, -1.01, -2.01, 0.41, -1.59, -1.59, 0.15, -1.85, -1.85, -2.38, -2.38, -2.38, -1.77, -1.77, -1.77, -1.57, -2.23, -2.93, -2.80, -0.80, -1.80, -1.42, -1.42, -1.42, -3.18, -3.18, -3.18, -2.79, -2.79, -2.79, -1.63, 5.37, 0.37, 1.36, -1.64, -2.64, -0.68, 3.32, -1.68, 4.86, -1.14, -1.14, 2.31, -0.69, -1.69, -3.28, 0.72, 5.72, -2.26, -1.26, -2.26, 9.68, 5.68, 3.68, 0.68, 0.68, -2.38, 1.62, -2.38, 2.57, 0.57, 6.57, -1.96, -2.96, -2.96, -2.02, -2.02, -2.02, 0.82, 0.82, -2.18, -3.03, 1.97, 0.97, -0.40, -1.40, 2.15, 1.15, 0.15, 0.99, -2.01, -3.01, -0.19, -2.19, -3.19, 3.30, -1.70, 2.30, 2.10, -1.90, 6.10, 4.31, 2.31, -2.69, -0.69, -1.69, 1.01, 0.01, -3.18, -0.18, -2.18, 0.57, -1.43, -1.43, -0.43, -0.43, 0.25, 0.25, 1.25, 4.49, 5.49, 4.49, 4.49, 13.49, -2.26, -1.26, 0.74, 2.74, 0.74, -4.17, -1.49, 1.51, 2.51, 5.13, 24.13, 9.13, -0.43, -2.43, -1.43, -0.43, -0.43, 0.18, 3.18, -0.82, -1.82, -1.82, -2.06, -0.06, -0.06, -2.06, -2.06, -1.43, -2.43, -1.43, -0.43, -0.43, -2.03, -1.03, -3.03, -2.03, 0.62, -2.21, -1.73, -1.73, -0.73, 6.27, 0.27, 11.46, 0.46, -2.54, 2.01, -1.99, 3.01, 0.56, 2.56, -2.44, 2.42, 1.42, -1.58, 0.42, -1.58, -1.01, 0.99, 0.99, 1.17, 2.17, -1.83, -1.83, -1.83, 1.17, -1.83, 0.17, -2.83, 3.17, 1.37, -0.63, 2.37, -1.63, -1.63, -0.43, 0.57, -1.43, -2.43, -1.43, 17.08, 7.08, 20.08, 9.08, 6.08, 3.97, 2.97, -0.03, 2.14, 7.14, 3.14, 6.47, 4.47, 3.47, -0.61, -2.61, -2.61, -1.38, -1.82, -1.82, -1.82, -0.67, -1.67, -1.67, -1.98, -1.98, -1.98, -1.50, -0.50, -0.50, -2.60, -1.60, -1.60, 7.14, -0.86, 1.14, -1.86, 1.14, -2.41, 0.59, -1.41, 8.56, 7.56, 4.56, 0.56, -2.44, -0.37, -1.37, 4.97, 1.97, 4.63, -0.37, 0.61, -1.39, 1.55, 2.55, -0.46, -1.46, 4.45, -2.55, -1.55, -1.55, -2.55, -1.03, 1.97, -1.03, 0.97, -0.03, -2.03, 12.61, 9.61, 5.61, 1.61, 6.27, 2.27, 7.34, 2.34, 0.34, -0.66, 4.55, 1.55, 4.23, -0.77, 3.23, -0.77, -1.77, -0.99, -0.99, -1.99, 0.01, -1.03, -2.03, 2.09, -0.91, 0.63, -2.37, 1.61, 1.61, 6.61, 5.61, 8.32, 4.32, -0.45, -1.45, 2.55, -0.45, -2.45, 10.97, 8.97, 2.64, 3.64, -0.36, 0.26, -0.74, 1.01, 0.01, 1.01, 0.74, 2.74, -2.39, -2.39, -2.39, -2.39, 0.66, -0.33, -0.33, -0.33, 6.97, -1.03, 4.63, -1.37, 9.56, -1.37, 2.55, 9.61, 3.86, -3.03, 0.63, -1.99, 3.61, -1.39, -1.39, 0.97, 3.28, 6.28, 2.28, -2.37, 3.63, 6.63, -0.66, 2.34, -0.66, -2.03, 3.97, -1.03, 3.64, -0.36, 5.61, 3.61, 7.97, -1.03, -0.39, -0.39, 9.63, 5.63, 0.63, 5.61, 3.97, 3.34, 3.97, -1.03, -0.03, -0.82, 1.18, -0.82, -1.63, 0.37, 7.37, -0.28, 2.72, -1.28, -1.78, -2.78, -1.78, -1.60, 1.40, 1.40, 1.73, 3.73, -1.27, 2.39, -1.61, -0.61, -2.27, -3.27, 32.73, -2.25, -0.25, -2.25, 1.26, 2.26, 8.26, -0.59, -1.59, -1.59, -1.23, -2.23, -1.23, 1.75, -0.25, -1.25, -0.03, -1.03, -1.03, -2.23, -1.23, -1.23, -1.78, -1.78, 3.22, -2.23, -2.23, -2.23, -1.03, -1.03, -0.03, -1.03, -0.03, -1.03, -2.03, -1.03, -2.03, -1.03, -1.10, -2.10, -3.10, 1.90, 0.90, -2.45, -0.45, 1.55, -1.45, 0.55, -2.45, -2.45, 1.55, -1.45, -2.45, -4.15, -3.15, -4.15, -3.15, -3.15, -0.76, 3.24, -2.76, -1.76, -1.76, -1.26, 1.74, 2.74, 0.32, -1.68, 0.32, -1.83, -0.83, -2.83, -1.83, -1.83, -2.83, -0.59, 1.41, 0.41, -2.60, -2.60, -2.60, 2.77, 1.77, 3.77, -1.58, -1.58, 0.42, -1.58, -1.58, -0.78, 0.22, 2.22, -0.78, 2.22, 0.74, 6.74, -0.26, -0.26, 1.74, 4.77, 2.77, 8.77, -0.23, -0.23, 3.17, 31.17, -2.02, -0.02, 0.98, 0.29, 18.29, 30.29, -0.86, 1.14, 0.14, 1.40, 1.40, 0.40, -2.03, -2.03, -1.03, -0.83, -1.83, 0.17, -1.83, -0.83, 1.85, -1.15, -1.15, -3.15, -1.15, -0.49, -2.49, 0.51, -1.49, 6.51, -2.15, -1.15, 5.85, -0.15, 4.85, 9.43, 4.43, 0.43, -1.49, 0.51, -0.49, 0.41, -0.59, -0.59, 49.46, 15.46, -0.54, -0.26, 0.74, -2.26, -5.77, -4.77, -5.77, -5.77, -3.77, -2.69, -3.69, -0.69, 3.31, -1.69, -3.57, -2.57, -3.57, -3.57, -3.57, -3.57, -2.57, -1.57, -3.57, -3.57, -2.57, -2.57, -3.57, -2.57, -3.57, -0.57, -2.57, -0.57, -2.57, -0.57, -1.57, -0.57, -3.57, -3.57, -1.57, 1.80, 0.80, -1.20, 0.24, -1.76, -1.76, -1.57, -0.57, 2.43, -1.50, 1.50, 5.50, 3.54, -0.46, 0.54, -2.12, -3.12, -2.12, -0.21, -1.21, -2.21, -2.21, -1.21, -2.21, -1.14, -3.14, -0.14, 1.03, 0.03, -1.97, -0.05, -2.05, -1.05, -1.05, -1.05, -1.05, 0.69, 1.69, 1.69, 0.72, -2.28, -1.28, -0.28, 0.72, -1.28, -0.28, -1.28, -1.28, -0.78, 1.22, -0.78, -0.55, 1.45, 0.45, 2.50, 1.50, -0.50, -1.51, -1.51, -2.51, -1.20, -1.20, -2.20, -2.20, -1.20, -2.20, 3.49, -2.51, -1.51, -3.02, -3.02, -2.02, 3.61, -2.39, 0.61, -2.55, -2.55, -2.55, -3.70, -4.70, -3.70, 0.21, 4.21, -0.79, -2.69, -0.69, -2.69, -1.80, -0.80, -2.80, 7.31, 16.31, -4.19, -0.19, 0.81, -2.36, -1.36, 11.64, -1.59, -1.59, 0.41, -1.64, -3.64, -2.64, -0.83, 1.17, 0.17, 0.76, 3.76, -3.24, 3.68, -0.32, 0.68, -0.61, -1.61, -1.61, 4.75, -1.25, 4.75, 0.72, -1.28, -2.28, -1.68, -0.68, -2.68, -0.12, 1.88, -1.12, -2.64, -2.64, -2.64, -2.64, -2.64, -2.64, 6.36, -1.64, -2.64, -2.64, 0.67, -2.33, 2.67, 1.67, 1.67, 0.33, 0.33, -1.67, 0.33, -0.67, 1.33, 0.33, 1.33, -1.67, -1.67, 7.20, 2.20, 0.20, -1.28, -1.28, 0.72, -1.03, -1.03, -2.03, -1.57, -1.57, -0.57, -1.03, -2.03, -1.03, -0.64, -3.64, -1.64, -3.49, -3.49, -3.49, -4.30, -7.30, -3.30, -0.49, -3.49, -1.49, -3.50, -6.50, -3.50, 2.73, 2.73, 4.73, 2.73, 7.73, 2.17, -2.83, 2.04, -3.66, -1.66, -0.02, -0.02, 1.98, -1.02, 6.98, -3.66, -2.66, -3.66, -2.21, -2.21, -0.21, -2.21, -2.21, -2.21, -2.21, -2.21, -1.79, -2.79, 7.21, -2.05, -1.05, -0.82, -0.82, -0.50, 5.50, 1.50, -0.50, -1.50, -1.50, -1.50, -2.50, -2.50, -1.50, 0.20, 3.20, 3.20, 0.20, -1.80, 0.51, -1.49, -2.49, -1.49, -2.49, -0.15, 2.85, 3.85, -3.15, -3.15, 0.20, -2.80, -2.80, -0.80, -1.80, 2.12, -1.88, 1.12, 6.16, -0.84, 0.16, -1.55, -2.55, -3.55, -1.55, -0.55, 0.45, 0.42, 0.42, -1.58, -1.31, -0.31, -1.31, -1.21, 1.79, -1.21, -3.18, -4.18, -2.18, 7.79, 2.79, 8.79, 7.79, 4.79, 1.79, -0.58, 2.42, 1.42, -1.25, -0.25, -1.25, -0.01, 0.99, 2.99, 2.51, -1.49, -2.49, 1.65, -0.35, -0.35, -1.76, -0.76, -1.76, -1.35, -1.35, -1.35, -1.78, -1.78, -0.78, -1.35, -1.35, 0.65, -3.21, -2.21, -1.21, 3.02, -1.98, -0.98, 0.99, -2.01, -2.01, -1.23, -0.23, -0.23, 1.77, -0.23, 0.77, 3.99, -0.01, -2.01, 0.23, -1.77, -1.77, -2.24, -2.24, -2.24, 4.42, -0.58, 0.42, -0.75, -1.75, -0.75, -1.58, -0.58, -1.58, 0.86, 1.86, -0.14, 0.37, -1.63, 4.37, -2.28, -2.28, -2.28, -0.28, -2.28, -0.28, -0.60, -0.60, -0.60, 1.09, -0.91, -1.91, -2.22, 0.78, -2.22, -2.84, -0.84, -0.84, -1.22, -0.22, -1.22, -1.78, 0.22, -1.78, -7.04, -7.04, -7.04, 3.74, 3.74, 7.74, -2.61, -1.61, -2.61, 3.91, 2.91, -0.09, -1.74, -1.74, 0.26, 3.74, 0.74, -1.26, -0.87, 4.13, 9.13, 8.30, -6.70, -6.70, -0.38, 3.62, -1.38, -1.38, 2.62, 4.80, 1.80, -0.20, -0.20, 0.80, 1.22, 0.22, -1.78, -0.78, 1.22, 1.19, 2.19, 1.19, 7.88, 3.88, 1.88, -2.23, -0.23, -1.23, -2.23, -2.23, -0.23, -2.25, -1.25, -0.25, -2.23, -1.23, -2.23, 1.72, 0.72, -0.28, -2.28, -0.28, 1.18, 0.18, -1.82, 0.18, -1.82, 1.72, 3.72, 0.72, -2.28, -0.28, 0.95, -1.05, -1.05, -1.05, -1.05, 4.79, -1.21, -1.21, 0.23, -0.77, -0.77, -0.24, -1.24, -2.24, 0.18, 2.18, 0.18, -1.83, -0.83, 1.17, 7.02, 2.02, -0.79, 1.21, 0.21, 7.21, 4.21, -0.79, 0.21, -0.79, -1.79, -0.79, 3.21, 35.21, -1.79, -0.79, -1.79, 1.30, -0.70, -1.70, 5.74, -0.26, 0.74, -2.79, 0.17, -1.79, 2.21, -1.79, 0.58, 1.58, 0.58, -0.62, -0.62, 0.38, -1.24, -1.24, -2.24, -2.52, -2.52, -1.52, 3.22, -0.78, 1.22, -2.07, -2.07, -1.07, -5.26, -6.26, -9.26, 1.39, 5.39, 4.39, -0.61, 1.39, 2.19, 3.19, 3.19, 1.19, -1.81, 0.23, 0.23, 7.23, 1.23, 6.23, -1.21, -2.21, -2.21, -1.21, -1.21, -1.77, -1.77, -1.77, 5.23, 0.23, -2.21, -1.21, -0.21, -2.21, -1.21, 0.92, -1.08, -0.08, 14.92, 7.92, 5.92, 0.75, -0.25, -0.25, 4.72, 4.72, 17.72, -2.14, -3.14, -3.14, -1.59, -1.59, -0.59, -1.59, -1.59, -1.60, -2.60, -1.60, -2.60, 0.40, -3.57, -2.57, -3.57, 3.17, -0.83, -1.83, -0.24, -0.24, -0.24, 2.79, 0.79, -0.21, -0.99, -0.99, -0.99, 9.39, 4.39, 8.39, 5.39, 3.39, -0.82, -0.82, -0.82, -1.82, -1.82, -2.28, -0.28, -0.28, 3.72, 2.72, -1.03, 0.97, 1.97, -0.03, 5.97, 4.12, 4.12, 2.12, 3.12, 6.12, 0.95, 1.95, -0.05, -0.05, 6.95, -0.85, 0.15, -1.85, 0.43, 1.43, 1.43, -2.20, -0.20, -2.20, 3.82, -1.18, 41.82, -1.56, -0.56, -1.56, -0.21, -0.21, 1.79, -2.29, -1.29, -1.29, 3.52, 2.52, 6.52, -3.48, -1.48, -1.48, -2.48, -0.48, -1.48, -3.14, -2.14, -2.14, -1.22, 0.78, -4.22, 0.79, -1.21, 1.79, -0.56, -0.56, -1.56, -4.67, -4.67, -3.67, -3.67, -3.67, -0.04, -1.04, -1.04, -2.21, -2.21, -0.21, -2.21, -1.21, -2.21, -2.87, -2.87, 2.13, 1.25, -1.75, -0.75, 5.49, 0.49, -2.51, 0.55, -0.45, -2.45, 1.74, 10.74, -0.26, -0.27, 0.73, -4.27, -1.79, -0.79, 2.21, -2.67, -3.67, 0.33, -0.09, -2.09, -0.09, -0.52, -1.52, -2.52, -0.75, -0.75, 1.25, -0.68, -2.68, 6.32, -1.91, -1.91, -2.91, -0.28, 1.72, 2.72, -2.28, -1.28, -2.28, -2.03, -2.03, -2.03, -2.28, -1.28, -2.28, -0.28, -1.28, 3.72, 0.23, 1.23, -1.77, -2.52, -1.52, -1.52, -3.99, -2.99, -3.99, -2.27, -2.27, -2.27, -0.59, 2.41, -1.59, -1.59, 6.41, -0.59, -2.63, -1.63, -2.63, -3.64, -2.64, -0.64, -2.77, 1.23, -0.77, -2.63, -1.63, 0.37, 0.17, -2.83, -2.83, -1.55, 0.45, 2.45, -5.00, -4.00, -3.00, -1.79, 0.21, -2.79, -0.83, -2.83, -2.83, -0.98, 1.02, -0.98, 14.45, 13.45, 7.45, -2.26, -0.26, -0.26, -1.59, -0.59, 1.41, 7.67, 3.79, -2.21, -0.21, 1.79, -0.21, -0.21, -1.21, -0.21, -1.21, -1.21, -0.58, 5.42, 2.42, 1.42, 1.42, 5.01, 2.01, 3.01, 4.01, 1.01, 3.27, -1.73, 0.27, -1.85, -2.85, -2.85, -2.01, -2.01, -2.01, -1.23, -2.23, -2.23, -0.20, -2.20, -1.20, -3.00, -0.00, -2.00, -0.23, -1.23, -2.23, -1.20, -2.20, -0.20, -0.25, -2.25, 1.75, 1.97, -1.03, -1.03, 1.72, -2.28, -0.28, -1.25, -1.25, 0.75, -1.25, -0.25, -0.25, -2.05, -2.05, -2.05, -0.95, -0.95, 6.05, 6.05, 4.05, -1.74, -2.74, 0.26, -2.74, -2.74, 5.05, -1.95, -0.95, -1.95, -1.95, -1.95, 1.05, -2.95, -1.95, -0.95, -0.91, -2.91, -1.91, -1.91, -1.91, -2.10, -3.10, -0.10, 4.90, -0.10, -2.45, -1.45, -0.45, -0.45, -0.45, 4.17, 1.17, -2.83, -1.83, -1.83, -4.91, -4.91, -5.91, -4.91, -4.91, 5.17, -1.83, -2.83, -2.83, -1.83, 0.49, 0.49, -2.51, -1.51, -0.51, -2.02, -1.02, -0.02, -3.63, 5.37, -1.63, 7.20, -0.80, 0.20, -1.80, -1.80, -1.80, 5.17, -1.83, -1.83, 0.23, -0.77, -1.77, -0.21, -2.21, -1.21, -1.21, -2.21, -0.21, -1.82, -1.61, -0.61, -1.61, -0.00, -1.00, -0.00, -1.00, -1.00, 0.24, -1.76, -0.76, -0.76, -0.76, -0.78, -1.78, -1.78, -1.78, -1.78, 0.23, -1.77, -2.77, -1.77, -2.77, 0.88, 2.88, 3.88, -2.12, 0.88, -0.82, -1.82, -1.82, -1.82, -1.82, -1.82, -1.82, -0.82, -0.82, 10.36, -1.64, 2.36, -1.82, -0.82, -1.82, -1.54, -1.54, -1.54, -2.53, -3.53, -3.53, 4.48, 11.48, 20.48, 11.48, 13.48, 17.82, 3.82, 1.82, 11.82, 1.82, 1.19, 1.19, 0.19, 2.73, 0.73, -1.27, -1.27, -1.27, -1.27, -0.78, -1.78, -1.78, 1.82, -2.18, 2.82, -0.23, -1.23, -2.23, -2.23, -0.23, 1.41, 1.41, -0.59, 0.41, 1.41, 2.77, -0.23, -2.23, -0.23, -2.23, -1.01, -1.01, -0.01, -1.01, -1.01, -1.51, 0.49, -1.51, -2.51, -2.51, 0.02, 1.02, -1.98, -1.98, 3.02, 1.25, -0.75, -0.75, -1.77, -1.77, 3.23, -1.65, -0.65, -1.65, -1.55, -0.66, -3.66, -1.66, -1.49, -2.49, -1.49, -0.95, 1.05, 8.05, 8.72, -0.28, 0.72, -1.03, -1.03, 0.97, -1.25, -1.25, 0.75, 0.75, 2.75, 2.75, -3.44, 0.56, 0.56, 0.56, 3.56, -0.82, -1.82, -0.82, 0.18, -1.82, -0.05, -2.05, -0.05, -0.05, -2.05, -1.28, -2.28, -1.28, -1.28, -0.28, 0.72, 4.72, 5.72, 4.72, 9.72, -1.82, -2.82, -2.82, 0.18, -1.82, -1.39, -1.39, 0.61, -1.39, 3.61, -0.05, -1.05, -0.05, 1.95, 1.95, 3.00, 7.00, 2.00, 9.26, -2.74, -2.74, 0.37, 0.37, 3.37, 0.37, -0.63, 7.69, -1.31, 12.69, 8.69, 4.69, 1.72, -1.28, -2.28, -0.28, -0.28, 4.72, 0.72, -1.28, 4.72, 0.72, -14.93, -17.93, -15.93, 0.43, -2.57, -2.57, 0.04, -0.96, -2.96, -3.72, -3.72, 0.28, -1.48, -1.48, 1.52, -1.97, 0.42, -1.58, -1.58, -2.21, -2.21, -2.21, -1.58, -1.58, -1.58, -2.23, -2.23, -1.23, -1.23, -2.23, -1.23, -1.57, -1.57, -1.57, -1.23, -0.23, -1.23, -1.23, -2.23, -2.23, -0.23, -0.23, -1.23, -1.26, -2.26, 1.74, 1.22, 1.22, -0.78, -0.23, -2.23, -0.23, 3.39, -0.61, -0.61, -1.61, 0.39, 3.77, 3.77, -1.23, -0.23, 0.77, 0.17, 0.17, 10.17, 1.17, 3.17, -2.83, -0.83, 3.17, 5.17, 11.17, -0.83, -1.83, 6.17, 5.17, 3.17, 0.13, -1.87, -0.87, -1.87, 0.13, -1.75, -1.75, 2.25, -1.75, -1.75, -1.77, 0.23, -0.77, -0.77, -1.77, -1.34, -1.34, 0.66, -1.34, 0.66, 3.46, -1.54, 1.46, 2.46, 1.46, -1.41, -1.41, -1.41, -1.41, -0.41, 8.23, 9.23, 4.23, 0.23, 0.23, -1.59, 0.41, -1.59, 0.41, -1.59, -0.78, -1.78, -1.78, -0.80, -1.80, -1.80, 0.22, -1.78, -1.78, -0.61, -1.61, -1.61, 1.70, -2.30, -0.30, 0.03, -2.97, -0.97, -0.97, -2.97, -2.97, -1.48, -3.48, -0.48, -2.55, 7.45, 8.45, -0.18, 0.82, 0.82, -1.26, -2.26, 2.74, -1.23, -1.23, -2.23, 3.40, 1.40, -0.60, 6.20, -1.80, 7.20, -0.01, 3.99, -0.01, 3.42, 10.42, 0.42, -1.77, -1.77, -0.77, -1.77, 0.23, -1.77, -1.77, -0.31, 0.69, 4.69, -2.05, -0.05, -3.05, -2.31, 0.69, 3.69, -1.83, -2.83, -1.83, -2.83, -0.83, -2.83, -2.83, -2.83, -1.83, 0.17, -1.86, 3.14, 1.14, 4.14, 2.14, 4.21, 3.21, 28.21, -2.79, -1.79, -1.77, 0.23, -1.77, -2.21, -1.21, -2.21, -1.58, -1.58, -1.58, -0.18, 2.82, 1.82, -0.86, -1.86, -0.86, -0.70, -0.70, 5.30, -2.38, -1.38, -1.38, -1.38, -0.38, -2.38, -3.38, -2.38, -3.38, -1.38, -3.42, -2.42, -3.42, -3.42, -1.42, 1.95, -2.05, -0.05, 3.95, -2.05, 0.29, -2.71, -1.71, 0.29, -2.71, -2.25, 2.75, -0.25, -2.25, 1.75, -0.25, -2.25, -1.25, -2.25, -2.25, -2.25, -2.25, -1.25, -2.25, -1.25, 4.20, -1.80, -0.80, 4.20, -0.80, -0.80, -1.80, -0.80, 0.20, 0.20, 0.40, 4.40, 4.40, 4.40, -0.60, -2.85, -2.21, -4.21, -4.21, -2.01, 0.99, -2.01, -2.20, -2.20, -0.20, -2.23, 1.77, -1.23, -1.78, 3.22, -0.78, -2.23, 0.77, -2.23, -0.76, 0.24, -1.76, -0.76, -2.76, -1.76, -1.28, 1.72, -1.28, 0.72, -2.28, -4.81, 0.19, -4.81, 0.19, -3.81, -2.28, 1.72, -2.28, -2.28, -2.28, -1.03, -0.03, -2.03, -2.03, -2.03, -2.07, -0.78, 8.22, 0.22, 2.22, -1.78, -1.78, -0.77, -1.77, 1.23, -2.24, -2.24, -2.24, 0.21, -2.79, -1.79, 0.44, -0.56, -0.56, -1.03, -1.03, -2.03, -1.81, 2.19, -0.81, 5.77, 1.77, 0.77, -2.23, -0.23, -2.23, -1.01, 4.99, -2.01, 3.77, 2.77, -2.23, 1.75, -0.25, 5.75, -1.25, -2.25, -0.80, -1.80, 3.20, -1.80, -1.80, -1.23, -1.23, 2.77, 0.77, -0.23, -0.57, -2.57, -1.57, -1.57, -2.57, 0.75, -2.25, 0.75, -2.25, -2.25, 2.90, -2.10, -3.10, -3.25, -2.25, 0.75, -2.83, -2.83, -2.83, -4.56, -4.56, -4.56, -2.83, -2.83, -2.83, 0.17, -2.83, -2.83, -1.61, -3.61, -3.61, -1.28, -0.28, -1.28, 0.69, 0.69, 0.69, -1.00, -2.00, -2.00, -2.25, -1.25, -2.25, 3.42, -1.58, -2.58, -2.61, -3.61, -2.61, -2.65, 1.35, -2.65, -2.61, -3.61, 1.39, 3.57, 0.57, 2.57, 3.29, 10.29, 2.29, -0.18, -2.18, -2.18, -1.21, -2.21, -0.21, -0.10, 3.90, -0.10, -1.18, -1.18, -2.18, -2.18, -1.18, -2.18, 0.25, 2.25, -0.75, -1.97, 16.03, 9.03, -1.18, -2.18, 5.82, 8.57, 2.57, 3.57, 11.57, 7.57, -1.28, 0.72, -2.28, -1.28, -1.28, -3.41, -4.41, -4.41, -1.56, -1.56, -1.56, -2.79, -1.79, -2.79, 2.35, -0.65, -1.65, -1.34, -1.34, -2.34, 2.82, -2.18, -2.18, -3.03, -3.03, -1.03, -0.63, -0.63, 4.37, 2.44, -1.56, -1.56, -0.99, -2.99, -0.99, -0.82, 1.18, 1.95, -1.05, -2.05, 0.72, -1.28, 1.72, -1.28, -0.28, -0.28, -2.28, -1.28, -2.28, -1.31, 1.69, -1.31, -2.53, -1.53, -1.53, -1.66, -0.66, -1.66, -2.99, 0.01, 0.01, -3.54, -2.54, -3.54, 14.78, 63.78, 9.78, -0.49, -2.49, -0.49, -1.07, 3.93, -0.07, -1.21, -1.21, -2.21, -2.93, -4.93, -4.93, 1.90, -1.10, -1.24, -0.24, 0.76, -0.58, -0.58, -1.58, -0.57, -2.57, 2.43, -1.75, -3.75, -0.75, -2.57, -2.57, -1.57, -1.82, -1.82, -1.82, -0.82, -0.82, 0.18, 0.11, -1.89, -1.89, -1.23, 3.36, 1.36, 9.36, 2.77, 1.77, -1.23, -1.44, -3.44, -2.44, -2.34, 0.66, -0.34, -2.29, -2.29, -1.29, -2.21, -1.21, -1.21, -1.21, 0.79, -2.21, -1.13, -1.13, -2.13, -0.86, -2.86, -2.86, -1.86, -2.86, 6.46, 4.46, 2.46, -0.10, -1.10, -0.10, -0.13, 30.87, 42.87, 1.75, -0.25, -3.25, 11.19, 1.19, -1.81, 1.49, -0.51, -1.51, 3.92, -0.08, 0.92, 0.17, 2.17, 3.17, 0.17, 2.17, 3.17, 7.77, -2.23, -1.23, 2.98, 2.98, -0.02, 6.98, 5.98, 3.01, 10.01, 0.01, 5.01, 3.01, 2.21, -0.79, -1.18, -0.18, -1.18, -0.18, 0.82, 1.25, 5.72, 6.72, -1.28, -0.61, -0.61, -1.61, 6.72, 1.72, -1.28, -1.05, -2.05, -1.05, 1.28, 0.28, -3.72, 4.74, 2.74, -1.26, -2.23, -2.23, -2.23, -0.76, -1.76, -1.76, -3.67, -3.67, -4.67, -2.23, -2.23, -2.23, -0.21, -1.21, 1.79, -0.18, 0.82, 0.82, 0.79, -1.21, -0.21, -0.99, 2.01, 1.01, -1.90, -0.90, -1.90, -1.58, -1.58, 2.42, 0.66, 7.66, 5.66, 2.20, -0.80, -0.80, -3.05, -2.05, 18.95, -2.38, -1.38, 2.62, -1.78, -1.78, 3.22, 3.77, -0.23, 3.77, 4.72, 0.72, 2.72, 1.18, 3.18, 0.18, 2.72, 2.72, 0.72, 0.69, -2.31, -0.31, -0.21, -1.21, -0.21, 1.82, 10.82, -2.18, 5.97, 5.97, 10.97, -4.64, -5.64, -8.64, 2.01, -1.99, -0.99, 1.72, 6.72, -0.28, 2.40, 3.40, 1.40, -1.80, -0.80, -0.80, -1.99, -3.06, -2.05, -2.18, -2.18, 3.79, 4.79, -1.21, 0.79, 0.79, 2.79, -0.18, -0.18, -2.18, -1.18, -0.18, -1.18, 4.51, 1.51, -2.49, -1.36, -0.36, 0.64, 7.45, 0.45, 3.45, 1.05, 0.05, -2.95, 2.05, -0.95, 0.05, -0.95, -1.95, -0.95, -1.95, 0.05, -2.95, -1.95, -0.95, 1.96, 1.96, -0.04, -3.04, 3.96, 3.44, -0.56, 1.44, 2.44, 5.44, 2.05, -0.95, 4.05, 3.05, 3.05, 3.75, 2.75, 5.75, 1.75, -0.25, 12.64, -1.36, 8.64, 1.64, 10.64, 0.76, 0.76, -1.24, 0.76, 1.76, -2.28, -0.28, -1.28, -1.28, -1.28, 0.79, 3.79, -1.21, 0.44, -0.56, -1.56, -5.85, -5.85, -5.85, -0.63, 5.37, -1.18, -0.18, -1.18, -1.75, -1.75, -1.75, -1.63, -2.63, -2.63, 5.79, -2.21, -1.21, -1.82, 2.18, 0.18, 1.18, 1.18, -3.51, -3.51, -3.51, -2.51, 1.49, -1.53, -0.53, 2.47, -2.23, -2.23, -2.23, 10.12, 9.12, 3.12, 0.47, 7.47, 7.47, -1.80, -0.80, -1.80, -2.28, -1.28, -0.28, -1.82, -1.82, -1.82, -0.28, -2.28, -1.28, -0.05, -1.05, 2.95, -0.82, -1.82, -1.82, -2.05, -2.05, -2.05, -1.32, -1.49, -1.49, -2.49, -1.97, -1.97, -0.97, -2.29, -2.29, -2.29, -1.77, -1.77, -0.77, -0.77, -1.77, -2.52, -2.52, -2.52, -2.49, -1.49, -1.49, -0.79, -0.79, 1.21, 5.17, 6.17, 1.17, -1.61, -2.61, -2.61, -1.22, -0.22, 1.78, -1.60, -2.60, -3.60, -2.83, -0.83, -2.18, -1.18, 2.99, -1.01, 6.99, 1.99, 0.99, -0.23, -2.23, 2.77, -0.23, -2.23, 0.22, 1.22, 1.22, -0.78, -0.78, -1.90, -2.90, -2.90, -2.90, -0.90, -1.24, -2.24, 1.76, 1.79, -0.21, 0.79, -0.58, 2.42, -0.58, -0.21, 0.79, 1.79, -1.23, -2.23, -2.23, -0.78, -0.78, -0.78, -2.01, -2.01, -2.01, -2.16, -3.16, 0.84, 0.17, -1.83, -1.83, -1.01, -1.01, -2.01, -1.26, -0.26, -0.26, -2.83, -2.83, -2.83, -1.83, -2.83, -3.60, -1.60, -2.60, 2.39, 3.39, 0.39, 2.70, 12.70, -1.30, 1.10, 1.10, 1.10, 5.75, 6.75, 0.75, 0.75, 1.75, -2.31, -3.31, -1.31, -3.31, -2.31, 1.17, -0.83, 1.17, -1.83, -0.83, 2.76, -2.24, -0.24, -2.26, -1.01, 0.99, -2.01, -1.25, -2.25, -2.25, -1.96, -0.96, -1.96, -0.55, 6.79, 8.79, 14.79, -2.21, -2.21, -1.21, -1.77, -1.59, -1.59, -1.59, -1.59, -0.59, -1.01, -1.01, -2.01, -2.01, -2.01, -1.99, -1.99, 5.01, 0.74, -1.26, -1.26, 4.99, 0.99, 3.99, -1.01, -0.01, -0.01, 0.53, -2.47, -1.47, -1.47, 2.78, -1.22, 4.77, -1.23, 9.36, 10.36, 2.15, -0.23, 0.77, -0.23, 1.77, -1.27, 4.77, 3.77, 6.70, 2.70, -1.28, 0.51, 1.51, 2.51, 5.70, 2.70, 2.70, 3.54, 8.40, 4.62, 1.77, 3.75, 4.75, 9.75, 6.75, 0.75, 1.75, 2.70, 5.86, -1.24, -2.24, 0.70, 2.70, 2.55, 3.60, 14.75, 1.02, -1.98, -1.98, -0.92, -2.92, -2.92, -2.20, -2.20, -1.20, -1.57, -1.57, 6.43, -2.20, -2.20, -2.20, -0.05, 0.95, -2.05, 1.72, 3.72, 0.72, -0.25, -1.25, 0.75, -2.59, -0.59, -2.59, 1.17, -2.83, -2.83, 0.78, -3.22, -2.22, -1.82, -0.82, -1.82, -0.83, -1.83, 1.17, 1.35, 0.35, -0.65, -2.41, -2.41, -3.41, 1.30, -0.70, -1.70, -1.61, -1.61, -1.61, 4.02, 0.02, 5.02, 5.21, 1.21, 1.21, -0.83, -0.83, -0.83, -0.83, 0.17, -2.61, -2.61, -1.61, 4.39, 0.39, -2.25, -2.25, -2.25, 2.02, -1.98, -1.98, -1.22, -1.22, -1.22, 2.49, -2.51, -2.51, -2.79, 0.21, -1.79, -0.23, -2.23, 2.77, -1.23, 1.77, 0.77, 1.42, -2.58, -2.58, 0.42, -1.58, -3.78, -2.78, -3.78, 3.22, 0.22, 3.36, 1.36, -3.64, -3.64, -2.64, -1.41, -1.41, -1.41, 1.59, 3.59, 6.64, -0.36, 6.64, 4.64, 3.64, 2.36, 5.36, 2.36, 6.36, 1.36, 0.03, -1.97, -1.97, 0.01, -0.99, -1.99, 1.23, -1.77, -0.77, 1.47, -0.53, -2.53, 5.82, -0.18, -0.18, 0.72, 4.72, 1.72, -2.28, -2.28, -2.28, 0.72, -2.28, -1.28, -1.28, -0.62, -1.62, -1.62, -0.62, -1.62, -1.82, 0.18, -1.82, -0.82, -0.82, -1.28, 0.72, -2.28, -1.28, -1.28, -2.28, 1.72, -1.28, -1.28, -1.28, -1.98, -0.98, 0.02, 0.02, -1.98, -1.97, 0.03, -1.97, -2.85, -1.85, -2.85, -1.60, -1.60, -1.60, -3.32, 0.68, -2.32, -1.46, -0.46, -2.46, 0.51, -2.49, -0.49, -1.14, -2.14, -0.14, -2.21, -1.21, -1.21, -0.21, -2.21, -2.21, -0.21, -0.21, -2.21, 0.01, -1.99, 2.01, 1.01, 0.01, -0.77, 0.23, -0.77, 0.23, -0.77, -1.31, 3.69, -1.31, -1.60, 0.40, -1.60, -0.67, -0.67, -2.67, -0.42, -2.42, -1.42, 1.58, -3.42, -3.42, 0.08, -0.92, 2.08, -0.55, -1.55, -0.55, -2.73, -2.73, -4.73, -4.73, -4.73, -0.17, 1.83, 2.83, -1.17, 4.83, -0.03, -3.03, 5.97, -0.53, -2.53, -1.53, 9.47, 0.47, 1.47, 1.25, 1.25, -1.75, -1.75, -0.75, 2.79, 2.79, -2.21, 0.79, 2.79, 2.01, 3.01, -1.23, -2.23, -1.23, 2.77, 1.18, 2.18, 2.18, -1.14, -6.14, -3.45, -2.45, -2.45, 0.55, -2.45, -2.45, -1.93, -2.93, 0.07, -7.32, -7.32, -4.32, -2.45, -2.45, 0.55, 1.24, -2.76, -1.76, -0.79, -1.79, -0.79, 2.21, -1.79, -0.79, -2.79, -1.79, -0.79, -0.79, -5.10, -3.10, -9.10, -10.10, -8.10, 5.99, 4.99, 5.99, 3.99, 3.99, -1.59, -1.59, -1.59, -1.59, 0.41, -0.78, -1.78, -0.78, -1.78, -1.78, -1.78, -0.78, -1.78, -2.22, -2.22, -2.22, -2.22, -1.22, -1.22, 1.78, 0.78, 1.78, 6.00, -0.00, -2.00, -2.50, -0.50, -0.50, -2.80, -2.80, -2.80, -1.50, 0.50, -1.50, -2.54, -1.54, -2.54, -3.60, -1.60, -3.60, -2.30, -3.30, -1.30, 0.64, 2.64, 4.64, 1.79, -2.21, 1.79, 3.51, 0.51, 6.51, 4.66, 9.66, 8.66, 7.82, 1.82, 3.82, 2.17, -1.83, 2.17, -3.61, -1.61, -3.61, 0.18, -2.82, -1.82, -1.82, -1.82, -0.82, -0.82, -0.82, -0.28, -2.28, -2.28, -0.28, -2.28, -0.89, 0.11, -1.89, 0.49, -0.51, 0.49, -0.82, -0.82, -0.82, -0.24, -1.24, -2.24, -0.28, 0.72, -2.28, -1.50, -0.50, -3.50, 0.54, -2.46, -0.46, 3.50, 14.50, 5.50, 2.02, 29.02, 11.02, -2.60, -0.60, -0.60, 1.72, -0.28, -1.28, 9.18, 1.18, -1.82, 1.72, -0.28, -0.28, -2.23, -2.23, 0.22, 0.22, -1.78, -3.66, -3.66, -4.66, -1.23, -2.23, -2.23, -0.23, -2.23, -0.23, -2.18, -1.18, -0.18, -2.21, -2.21, 8.79, -1.99, -1.99, -1.99, 2.17, -1.83, 0.17, -1.83, 0.17, 0.74, -1.26, 1.74, 0.74, -1.26, 1.72, -0.28, 0.72, -0.28, -1.28, -1.28, -0.28, 0.72, -1.28, -2.28, -2.28, -2.28, -0.82, -1.82, -1.82, -2.62, -1.62, 4.38, -1.84, -1.84, -1.84, 5.72, -0.28, -1.28, -2.41, -3.41, -1.41, 2.40, -2.60, -0.60, -1.28, -2.28, -0.28, -0.54, 0.46, -1.54, -2.74, -2.74, 4.26, 6.26, -0.74, -1.16, -3.16, -3.16, -1.16, -3.16, 0.84, -3.16, -3.16, -4.37, -3.37, 6.63, -3.16, -3.16, -2.16, -2.01, -2.01, -2.01, -1.25, -1.25, -0.25, -1.25, -2.25, 25.75, -2.01, -1.01, -2.01, -0.25, 0.75, -1.25, -2.24, 0.76, 1.76, -1.24, 0.76, 3.21, 1.21, 1.21, 1.21, 1.21, -1.99, -1.99, -0.99, -0.99, -0.99, -1.21, -2.21, -2.21, -2.21, 2.79, -0.82, 0.18, 3.18, 3.17, 0.17, -2.83, 0.01, -1.99, -1.99, -1.55, 1.45, 0.45, -0.79, -2.79, -2.79, -1.79, 3.21, 8.49, 7.49, 7.49, 2.49, 1.49, -2.55, -0.55, -1.55, -0.55, -2.55, -0.23, -0.23, 0.77, -2.23, 3.77, 0.21, 0.21, 7.21, 3.21, 7.21, -1.18, 1.82, -2.18, 3.79, -1.21, -1.21, 2.23, 2.23, -0.77, -0.77, 0.23, 5.23, -4.45, -4.45, -4.45, -2.45, -0.45, -2.82, -3.82, -2.82, -2.82, -2.82, 4.82, 2.82, 13.82, -2.25, 1.75, 0.75, 5.05, 1.05, 1.05, -1.25, 0.75, -1.25, -0.25, -2.25, -2.25, -1.26, 0.74, -2.26, -1.30, -2.30, -0.30, 2.38, 2.38, 0.38, -1.00, 5.00, 4.00, -2.26, -1.26, 0.74, -2.53, -2.53, 1.47, -1.21, -0.21, -1.21, -1.21, -0.21, 0.29, -1.71, -3.71, -0.71, -2.71, -1.24, 3.76, 2.76, -1.24, 0.76, 0.79, 1.79, 0.79, 5.79, 0.79, -4.51, -4.51, -3.51, -0.26, 0.74, -2.26, 7.17, 6.17, 2.17, 1.14, -1.86, -2.86, 1.24, 0.24, 3.24, 3.24, 2.24, -0.76, -2.76, 2.24, 0.24, 4.24, 0.77, -0.23, -2.23, -1.78, -1.78, -1.78, 4.46, 0.46, -1.54, 1.77, -1.23, -2.23, -0.78, 0.22, 1.22, -1.23, -2.23, -2.23, -1.78, -0.78, 0.22, -1.23, -0.23, -0.23, -2.21, -1.21, 0.79, -0.21, -1.21, -2.21, 2.71, -0.29, 0.71, -0.99, -0.99, 1.01, 2.23, -1.77, -0.77, -1.26, -1.26, -2.26, 0.17, -1.83, -1.83, -1.22, -2.22, -0.22, -1.01, -1.01, 0.99, -0.83, -1.83, -0.83, -1.29, 0.71, 3.71, 1.67, -0.33, -1.33, -0.01, -0.01, 4.99, -2.01, -2.01, -2.01, -2.01, -2.01, 0.77, -0.23, -2.23, -1.23, -2.23, -2.23, -0.23, -1.23, 0.77, -2.23, -2.23, 4.77, -2.23, -0.23, -2.23, -1.23, -2.23, -2.23, -1.23, -2.23, -0.97, -3.97, -3.97, 12.52, 36.52, 15.52, 1.53, -0.47, -5.47, -0.77, -1.77, 5.23, 1.01, -0.99, -0.99, -1.10, -3.10, -2.10, -2.47, -2.47, -1.47, 0.22, -1.78, -2.78, -1.47, -2.47, -0.47, -2.43, -1.43, -2.43, -1.43, -0.43, -0.21, -1.21, -2.21, -1.99, -1.99, -0.99, -0.79, -2.79, -2.79, -1.99, -1.99, -1.99, -1.82, -1.82, -0.82, -0.79, -2.79, -1.79, -1.79, -2.79, -0.79, -1.51, -2.51, 0.49, 0.76, -2.24, 1.76, 10.03, 3.03, -2.01, -0.23, -1.23, -0.23, -2.54, -2.58, 5.42, 13.42, 13.42, 1.42, -1.90, -0.90, -2.90, -1.90, -1.90, -3.36, -2.36, -2.36, -3.36, -2.36, 1.82, 0.82, -2.18, 1.82, -2.18, 0.79, -0.21, 1.79, -2.21, -0.21, 0.82, -1.18, -0.18, -1.18, -2.18, 10.72, 3.72, -4.28, -5.28, -1.06, -1.06, 3.94, 1.94, -1.06, 0.06, -0.94, -0.94, -0.94, -2.94, -2.94, 0.65, -1.35, 0.65, 2.42, -1.58, -1.58, -0.77, 0.23, 0.23, -1.58, -1.58, -1.58, 2.20, -1.80, 2.20, -3.24, 0.76, 0.76, -1.55, -2.55, -1.55, 0.99, -1.01, -2.01, -1.79, -1.79, -0.79, 0.21, 0.21, -0.79, 0.79, -2.21, 1.79, -1.75, -1.75, 0.25, 2.37, 3.37, 0.37, -0.21, 1.79, 4.79, 3.25, 4.25, 2.25, 1.66, 2.66, 0.66, 2.79, -1.21, 2.79, -2.95, 4.05, -0.95, 1.04, -1.96, -1.96, -1.02, -2.02, 1.98, -0.02, -0.02, -0.02, -1.72, -0.72, -1.72, -1.40, -1.40, -1.40, -2.68, -0.68, -1.68, -3.40, -3.40, -1.40, -1.38, -2.38, -3.38, -1.28, -2.28, -0.28, 4.75, 0.75, -1.25, 1.72, -0.28, -2.28, -2.31, -2.31, -2.31, -2.23, -2.23, -2.23, -4.21, -4.21, -4.21, -1.34, -1.34, -1.34, -2.23, -2.23, -1.23, -0.23, -2.23, -2.23, -0.51, 0.49, -1.51, 2.49, 1.49, -2.18, -2.18, -2.18, -1.18, -1.18, 2.17, -0.83, -0.83, 1.17, -2.83, 1.21, -0.79, -0.79, -0.79, -1.79, -2.28, 6.72, -1.28, -1.27, -0.27, 3.73, -1.28, -1.28, -1.28, -1.28, 2.72, 3.64, -1.36, -3.36, 8.64, 7.64, -0.91, 6.09, -1.91, -1.28, -2.28, -1.28, -0.28, 2.72, 4.72, 1.72, -1.28, -2.28, -0.28, -1.28, -2.28, -1.28, 0.72, -2.28, -2.28, -1.28, 0.72, -1.28, -2.26, 0.74, -2.26, 1.69, 2.69, 0.69, 2.77, 2.77, -1.23, -0.23, -2.23, 1.77, -2.21, -0.21, 2.79, 3.48, 2.48, -2.52, 3.79, 0.79, -1.21, -1.25, -1.25, -2.25, -1.25, -1.25, -0.25, -0.25, -1.25, 5.75, 1.75, -1.31, -0.31, 4.69, -1.31, -0.31, -0.63, 1.37, 1.37, -1.63, 0.37, -1.79, 3.21, -1.79, 1.01, 2.01, 1.01, 0.72, -0.28, 0.72, -0.28, 1.72, 5.72, -1.13, -1.13, 2.87, 2.40, -0.60, 0.40, -2.12, -5.12, -8.12, -5.12, -3.12, -0.19, 0.81, -3.19, -2.19, -2.19, -2.19, -3.19, -3.19, -2.19, -2.19, -1.27, -1.27, 3.17, -1.83, -1.83, -2.83, 1.17, -3.94, -3.94, -0.94, -1.94, -4.94, -1.51, -1.51, -0.51, -1.82, 2.18, 2.18, 0.21, -0.79, -2.79, -1.41, -1.41, -2.41, -0.41, -0.41, -0.41, 1.27, -2.73, 4.27, 0.27, -1.73, -0.73, 0.82, 2.82, 5.82, -1.83, -0.83, -2.83, 1.26, 4.26, 2.26, -2.25, 1.75, 1.75, -1.20, 0.80, -0.20, -0.71, 4.29, 0.29, 3.17, 3.17, 1.17, -2.70, -2.70, -2.70, 4.17, 5.17, 2.17, 1.17, 4.17, -0.83, -3.32, 0.68, 23.68, -0.25, 1.75, -0.25, 0.75, 6.75, -0.25, 1.75, -0.25, -1.25, -1.25, -2.36, -1.36, 2.64, -2.36, 1.64, -1.60, -1.60, -1.60, -1.60, -1.60, 11.01, 0.01, 4.01, -5.07, -0.07, -5.07, 2.37, 0.37, -0.63, -3.09, -3.09, -3.09, 0.26, -1.74, 6.26, -1.90, -3.90, -2.90, -3.43, -3.43, -2.43, -1.09, -2.09, -3.09, -0.28, -1.28, -1.28, -3.68, -0.68, -3.68, 0.09, -0.91, -0.91, -1.21, -1.21, -1.21, 1.79, -0.21, -1.21, 0.43, -2.57, -2.57, -1.21, -1.21, -0.21, -2.14, -1.14, 4.86, -0.77, -0.77, -0.77, -2.21, -2.21, -1.21, -1.21, -2.21, -1.27, -0.27, -1.27, -3.27, -3.27, -2.21, -1.21, -2.21, -2.21, -2.21, -3.97, -3.97, -3.97, -1.97, -3.97, -3.06, -1.06, -3.06, -0.06, -2.06, 0.01, -1.99, 0.01, 3.01, 1.01, -1.22, -2.22, -3.22, 0.78, -0.22, 14.49, 9.49, -0.51, 3.49, 1.49, 0.01, -0.99, -1.99, -0.99, -1.99, -0.21, -2.21, -2.21, -0.21, -2.21, -1.77, -1.77, -1.77, -1.77, -1.77, -0.77, -0.77, -1.77, 1.23, -1.77, 1.61, 2.61, 1.61, -2.57, 0.43, -1.57, 1.43, -0.57, 0.75, -1.25, 3.75, 0.75, 1.75, 3.75, 0.75, 0.75, 3.75, -1.25, 0.20, 3.20, 0.20, 3.20, 1.20, 0.12, -0.88, -0.88, -2.28, -1.28, -1.28, -0.03, -2.03, -1.03, 0.73, 0.73, 2.73, -0.20, -1.20, -0.20, -1.76, -1.76, -0.76, -2.23, 3.77, -0.23, 7.85, -0.15, -3.15, 0.89, -3.11, -1.11, 5.32, -0.68, -3.68, 1.78, -1.22, -2.22, -0.83, -1.83, -1.83, 4.45, 1.45, 1.45, 10.45, 0.45, -1.55, 3.45, -2.55, 1.45, -0.83, -0.83, 1.17, 2.17, 3.17, -1.83, 0.24, -0.76, -1.76, -0.76, -0.76, -0.81, -0.81, -1.81, -1.81, -1.81, 0.77, -0.23, 0.77, 1.77, -0.23, -2.08, -2.08, -1.08, -0.63, 0.37, -2.63, 1.41, -0.78, -1.01, -1.01, 5.99, -0.51, -0.51, -1.51, -1.79, -0.79, 1.21, -1.91, -2.91, 1.09, 1.77, -1.23, 5.77, -2.01, -4.01, 2.02, 1.02, -2.26, -1.26, -2.26, -2.26, -2.26, 0.01, 3.01, 3.01, -0.21, -0.21, 0.79, -1.21, -1.21, 0.79, -1.21, -0.21, 0.79, -1.99, -0.99, -1.99, -1.35, -1.35, -2.35, -1.76, -1.76, -0.76, -2.20, -2.20, -2.20, 0.22, -1.78, -1.78, 2.20, 1.20, 2.20, 4.20, -0.80, 3.40, -2.60, -1.60, -2.60, 1.40, 2.66, 7.66, 6.66, -1.71, -2.71, -0.71, -2.71, -2.71, -2.71, 2.29, 1.29, -1.05, -3.05, -3.39, -3.39, -2.39, -0.30, 7.70, -1.30, 0.44, -2.56, 4.73, 0.73, 0.73, -0.75, 2.25, -0.75, -0.58, -1.58, -2.58, -1.56, -3.56, -2.56, -0.13, 1.87, -3.13, 0.26, -0.74, 2.26, -0.74, -1.74, -0.74, -0.74, -0.74, 0.26, -0.74, 12.11, 13.11, 14.11, 39.11, 5.43, 2.43, -1.57, 3.43, 2.43, 0.26, -0.74, 0.26, -0.74, 3.26, -0.40, 0.60, 0.60, -1.40, -0.40, -3.52, 0.48, -3.52, 0.48, -2.52, 0.48, -0.52, -1.52, -0.52, -3.52, -2.52, 4.48, -1.52, -3.52, 0.48, -1.75, 3.25, -1.75, -2.75, -0.75, -0.16, -4.16, -3.16, -3.16, 1.84, -1.06, 2.94, -0.06, -1.06, -1.06, -3.87, -3.87, 0.13, -3.87, -2.87, 20.51, 2.51, 1.51, 1.51, 3.51, -3.15, -3.15, -3.15, -2.15, -3.15, -0.49, -2.49, 1.51, -1.49, -2.49, 1.65, -1.35, -2.35, -3.35, -2.35, -1.77, -1.77, -0.77, -1.28, 0.72, -1.28, -2.03, -1.03, -2.03, -2.01, -1.01, -2.01, -2.23, -1.23, -2.23, -1.26, -1.26, -1.26, 3.77, -1.23, -2.23, 0.02, -1.98, -1.98, -0.98, -1.98, 0.49, -1.51, -0.51, -0.51, -0.51, -1.43, -2.43, -2.43, -1.06, -1.06, -1.06, 18.38, 21.38, 26.38, -1.43, -3.43, 0.57, 0.99, -2.01, -1.01, -1.81, -0.81, 0.19, 0.20, 0.20, -0.80, -2.25, -2.25, -0.25, 3.15, 1.15, 1.15, -1.89, -0.89, 4.74, -0.26, -0.26, -2.26, -1.26, -1.85, 2.15, -0.85, -0.61, 1.39, 2.39, 6.39, 4.39, -1.80, -1.80, -1.80, -0.80, -1.80, -0.25, -0.25, -1.25, 0.75, -1.25, -1.83, -2.83, -2.83, 4.79, -2.21, 0.79, 1.03, -3.97, -3.97, -2.97, -3.97, 3.70, -2.30, 0.70, -2.54, -2.54, -2.54, -1.23, 2.77, -2.23, 0.79, -0.21, -1.21, -2.24, 1.76, -2.24, -0.21, -1.21, -1.21, -0.77, 3.23, -1.77, -2.51, -2.51, -2.51, -2.35, -2.35, -1.35, -1.01, -1.01, 0.99, -2.85, -2.85, -2.85, -1.23, -1.23, -1.23, -2.23, 21.77, 30.77, -2.83, -2.83, -1.83, -1.83, -1.83, 6.17, -1.83, -2.83, -1.83, -2.83, -0.83, -2.83, -2.83, -1.83, 2.17, 9.74, 0.74, 10.74, 2.74, 2.74, -2.22, -1.22, 7.78, 1.78, -0.22, -2.83, -2.83, -1.83, -1.83, -2.83, -1.57, -1.57, 2.43, -1.86, -1.86, -2.86, 4.65, 1.65, -1.35, -0.84, -0.84, 0.16, -1.73, -2.73, 2.27, 5.58, -2.42, -1.42, -2.48, -4.48, -1.48, -2.89, -2.89, -1.89, -2.42, -3.42, -0.42, -0.22, -1.22, 3.78, -1.78, -1.78, -1.78, -1.58, -1.58, 0.42, -2.22, -2.22, -1.22, 1.66, 0.66, 3.66, -0.57, -0.57, -2.57, 1.20, 5.20, 8.20, 16.56, 11.56, -2.44, 5.18, 3.18, -0.82, -2.28, 9.72, 0.72, -1.59, -0.59, 2.41, -2.51, -2.51, 1.49, 3.89, -1.11, 1.89, 1.09, 3.09, 0.09, 4.09, -1.91, -0.91, 5.09, -0.91, -2.91, -0.91, -0.91, 0.09, 0.12, -0.88, -0.88, -0.88, 3.12, -0.21, -1.21, 0.79, -2.21, -1.21, -1.20, -0.20, -1.20, -1.20, -2.81, 0.19, -0.81, -0.81, -2.23, -2.23, -2.23, 1.72, -0.28, -0.28, -1.28, -1.28, -1.28, -2.05, -2.05, -1.05, -4.45, -3.45, -0.45, -2.48, -3.48, -2.48, -2.48, -1.48, -2.48, -3.14, -3.14, -3.14, 49.79, 2.79, -1.21, 5.34, -0.66, 4.34, -1.99, -0.99, -0.99, -0.18, -1.18, 2.82, 14.79, 8.79, 41.79, -0.97, 4.03, 0.03, 2.26, 0.26, -0.75, -0.75, -1.75, -0.75, -1.97, 8.03, -1.97, -1.97, -1.97, -1.49, -2.49, -2.49, 0.51, -2.49, 2.03, 1.03, -0.97, -0.97, -0.97, -1.75, -0.75, 0.25, 2.25, -0.75, -0.01, 1.99, 0.99, 0.99, -0.01, 3.79, 6.79, -1.21, -2.21, 0.79, -0.31, 3.69, -0.31, -0.31, -2.31, 6.43, 2.43, 0.43, 17.43, 6.43, 3.22, 3.22, 3.22, 10.22, 0.22, 3.77, -0.23, 3.77, -2.23, 4.77, -1.82, 1.18, -0.82, -0.98, 0.02, -0.98, -0.28, -0.28, -1.28, 4.98, 6.98, 1.98, 0.17, -0.83, -0.83, -1.86, -0.86, 0.14, 1.17, 0.17, -0.83, -0.20, -2.20, -2.20, -1.76, -1.76, -1.76, -1.98, -1.98, -1.98, 0.49, -2.51, -2.51, -1.57, -1.57, -1.57, -0.78, -0.78, 1.22, 3.22, 3.22, 0.22, 0.73, 1.73, -0.27, -0.43, -1.43, 1.57, -1.63, -1.63, 1.37, -2.03, -0.03, -2.03, -0.28, 0.72, -0.28, -1.77, -1.77, -0.77, -0.25, -1.25, -1.25, 5.39, -0.61, -1.61, 5.20, 1.20, -0.80, -3.10, -4.10, -3.10, 4.92, -0.08, 2.92, -0.28, -1.28, 0.72, -1.25, -2.25, -2.25, -1.99, -2.99, -2.99, -2.23, -2.23, -0.23, -1.80, -0.80, 0.20, 1.99, 2.99, -1.01, 16.78, 18.78, 10.78, -0.26, -0.26, -0.26, -1.59, -1.59, -1.59, -0.81, -2.81, 1.19, -2.81, 2.19, -1.64, -2.64, -1.64, -2.64, 4.36, -1.20, 0.80, 1.80, 1.80, -1.20, -0.95, 2.05, 0.05, -1.95, -2.95, 0.39, -0.61, -0.61, -0.61, 0.39, -0.91, -1.91, -2.91, -1.91, -1.91, -0.28, -1.28, -0.28, -0.28, -0.28, -1.58, -0.58, -0.58, -0.30, -2.30, -2.30, -2.30, -0.30, -0.30, -1.64, 0.36, 0.36, -3.99, -5.99, -4.99, 0.37, -5.63, -3.63, -2.33, -2.33, -0.33, -2.23, -0.23, -1.23, -1.78, -0.78, 0.22, -1.23, 6.77, 6.77, -1.92, -2.92, -0.92, 2.68, -0.32, -3.32, 0.66, 2.66, -1.34, 1.66, 0.66, -1.96, -0.96, -2.96, -1.96, -2.96, -1.21, -1.21, -1.21, -2.21, -2.21, 15.21, 10.21, 1.21, -1.79, -0.79, -0.21, -2.21, -1.21, 4.79, -1.21, -0.21, -2.21, -1.21, -2.21, -1.21, -4.43, -3.43, -6.43, -6.43, -5.43, 5.79, 0.79, 1.79, -1.21, -2.21, -1.21, -0.36, -0.36, -0.36, 3.76, -0.24, 0.76, -0.80, -0.80, -0.80, 0.44, 0.44, 11.44, -1.80, -0.80, -1.80, 4.39, -0.61, 2.39, -1.80, -1.80, -1.80, -1.03, -2.03, -2.03, 0.17, 0.17, 3.17, 0.17, 0.17, 0.17, -0.26, -1.26, 1.74, -0.01, 2.99, 1.99, -0.83, -1.83, -2.83, -2.26, -2.26, -1.26, -1.55, -1.55, -2.55, -1.82, -0.82, 3.18, -0.03, 1.97, -1.03, -3.42, 0.58, 35.58, 67.58, 68.58, -3.74, -3.74, 3.26, 20.26, 7.26, -1.28, 2.72, -2.28, 1.75, -2.25, 1.75, -2.25, -0.25, -2.25, -1.03, 0.97, -0.03, -0.25, -1.25, 2.75, -1.18, -3.18, -0.18, -3.18, 1.82, 0.95, 7.95, -2.05, 13.85, -4.15, -4.15, -1.83, -1.83, -0.83, -0.83, 0.17, -1.18, -2.18, -0.18, -3.18, -1.18, -2.51, -2.51, -2.51, -2.51, -1.51, 2.35, -1.65, -1.65, -1.65, -1.65, -0.97, -0.97, 0.03, -1.21, -1.21, 0.79, 1.47, 3.47, -2.53, -0.18, -0.18, -1.18, -2.25, -2.25, -1.25, 2.12, -1.88, -2.88, -1.80, -0.80, -1.80, -1.21, -1.21, 4.79, -1.03, -2.03, -2.03, 0.37, -2.63, -2.63, -1.63, -0.63, -0.25, -2.25, -0.25, 10.75, 1.75, -1.57, -2.57, -1.57, 2.43, 0.43, -1.25, -1.25, 0.75, -1.25, 0.75, -1.49, -2.49, -0.49, 1.01, -1.99, -1.99, -0.21, -1.21, -2.21, 4.03, 1.03, -1.97, -2.26, -2.26, -0.26, 0.52, -3.48, -3.48, -1.84, -3.84, -3.84, 4.08, 6.08, 3.08, 5.08, 5.08, -3.63, 2.37, -0.63, -0.63, 0.37, 1.03, 0.03, 4.03, 0.23, -0.77, 2.23, 0.82, -1.18, -0.18, 0.25, 5.25, 4.25, 3.18, 7.18, 9.18, 1.75, 0.75, 4.75, 0.97, 1.97, 14.97, -1.25, -1.25, 2.75, 3.12, -0.88, 3.12, -1.25, -0.25, -1.25, 0.78, -2.22, -1.22, 2.84, -1.16, -2.16, 1.59, 0.59, -0.41, -2.41, -1.41, 10.11, 9.11, 0.11, -2.89, -2.89, -1.03, -0.03, -2.03, -2.03, -1.03, -1.59, -1.59, -1.59, -1.59, -1.59, -1.59, -2.23, -2.23, -2.23, -2.23, -2.23, -1.23, -2.23, -2.23, -1.23, 1.16, -1.84, 0.26, 0.26, 0.26, -0.21, -1.21, -1.21, -0.51, -0.51, -1.51, -1.21, -2.21, -2.21, 1.25, -0.75, -1.75, 4.03, -1.97, -0.97, 2.47, -2.53, -2.53, 1.54, -2.46, 1.54, -2.83, -2.83, -2.83, -2.83, -2.83, -0.83, -1.01, -2.01, -0.01, 0.99, -2.01, 2.99, -2.51, 1.49, 2.49, -3.13, -3.13, -3.13, -2.51, -1.51, -3.95, -1.95, -0.95, -3.52, -1.52, -3.52, -3.52, -3.52, -3.52, -2.52, -3.52, -2.52, -2.17, -3.17, -3.17, 0.74, -2.26, 1.77, -1.23, -1.23, 1.22, -1.78, -0.78, 22.77, 7.77, -2.23, -0.59, -1.59, -0.59, 1.41, 0.41, -1.59, -2.81, -1.81, -3.81, 0.61, 3.61, 0.61, 2.72, 14.72, 1.72, -2.71, -2.71, -1.71, -1.28, -0.28, -0.28, 0.03, 5.03, -2.97, 1.22, 1.22, 6.65, -0.35, -2.35, -0.85, -1.85, -1.85, -2.23, -2.23, -2.23, 0.46, -0.54, -1.54, 0.41, -1.59, -1.59, -0.28, 0.72, 2.72, -1.03, -0.03, -0.03, 1.23, 4.23, 0.23, -0.03, -1.03, 0.97, -1.03, 0.97, 1.14, -1.86, -1.86, 1.14, -2.86, -2.83, 1.17, 0.17, -2.83, -1.83, -1.79, 0.21, 2.21, -2.79, -2.79, 0.21, 0.21, -0.79, -1.79, -1.79, 1.96, -2.04, -2.04, -2.97, -1.97, -2.97, -2.21, -0.21, -2.21, -2.02, -3.02, -5.02, -2.55, -2.55, -1.55, -2.55, -2.55, -2.55, -1.55, -2.55, -0.55, -2.55, -2.55, -2.55, -0.55, -2.55, -3.55, -2.48, -1.48, -3.48, -3.48, -3.48, -3.54, 1.46, 0.46, 0.46, -3.54, -0.99, -0.99, -1.99, 1.01, -1.99, 0.01, 1.47, 0.47, -1.53, 15.76, 3.76, 1.76, -2.31, -2.31, -2.31, -1.44, 1.56, -0.44, -1.58, -1.58, -1.58, -1.24, -2.24, -1.24, 5.01, 2.01, 0.01, -0.35, -2.35, 5.65, 1.65, 0.65, 0.25, 2.25, 8.25, 7.79, 9.79, 3.79, 5.48, -1.52, 4.48, 0.79, 5.79, 4.79, -2.33, 0.67, 3.67, 2.67, -2.33, 1.67, 10.42, 3.42, 3.42, -0.33, -0.33, -0.33, -1.60, -2.60, -0.60, 1.76, 5.76, 3.76, -2.23, -1.23, -2.23, 0.77, -0.23, 0.77, -1.23, 5.77, 2.77, 2.43, -0.57, 1.43, -0.51, -1.51, 0.49, -0.51, 1.49, 5.22, -0.78, 0.22, 2.22, 3.22, -0.20, 2.80, -2.20, -1.20, -0.20, -1.28, 0.72, -3.28, 2.41, -1.59, -0.59, 1.22, 0.22, 0.22, -1.83, -1.83, 0.17, -1.83, -0.83, -2.83, -1.83, -1.83, 1.17, 2.17, -3.22, -2.22, -3.22, -2.22, -1.22, 3.66, -2.34, -2.34, -1.34, -1.34, 3.38, 6.38, 4.38, -0.28, 7.72, 1.72, 3.18, 0.18, 0.18, -3.20, 2.80, -1.20, -1.95, 2.05, -0.95, 11.36, -1.64, 1.36, 0.70, -0.30, 0.70, -2.34, 3.66, 2.66, -1.22, 1.16, 2.16, -0.84, -0.82, -2.82, -2.82, -1.99, -1.99, -1.99, -0.82, -2.82, -1.82, 23.72, 11.72, 8.72, -2.28, 0.72, -0.28, -1.28, -0.28, -0.28, 0.09, 0.09, 1.09, -1.31, -1.31, -2.31, -0.28, 0.72, -1.28, -0.20, -0.20, -1.20, 1.02, 0.02, -0.98, -1.76, 1.24, 3.24, -2.68, -2.68, -1.23, -2.23, -2.47, -1.47, -0.29, -1.29, -3.29, 1.01, -1.99, -0.99, 0.78, -1.22, -2.22, 1.32, 3.32, -2.68, 5.45, -0.55, -0.55, 1.17, -1.83, -1.83, -0.26, 5.74, -2.26, -0.26, -1.26, -2.02, -1.02, 5.98, 4.98, 0.98, 6.17, 7.17, 6.17, 3.17, 0.17, 7.34, 7.34, 10.34, 5.34, 7.34, -2.01, -2.01, -1.26, -2.26, -2.26, -1.96, -1.96, -0.96, -2.21, 0.79, -1.21, -2.21, -2.21, 1.79, 0.49, -2.51, 1.49, -1.21, -2.21, -2.21, 0.65, 4.65, 6.65, 7.20, -1.80, -0.80, -1.80, 0.20, -1.03, -2.03, 1.97, -0.03, 3.97, 4.72, 4.72, 1.72, 0.72, 4.72, 4.75, 5.75, 2.75, 4.75, 4.75, -3.10, -0.10, 1.90, 5.90, 0.90, -0.80, -0.80, 5.20, 14.20, -0.80, -1.61, -0.86, -0.86, 0.14, -1.86, 3.14, -1.66, -1.66, -1.66, -1.66, -0.66, 4.23, 1.23, 3.23, 4.23, 0.23, -1.26, -2.26, -2.26, -2.26, -1.26, -2.26, -1.92, 2.08, -2.92, 3.35, -1.65, 2.35, -6.45, -8.45, -0.23, 0.77, 0.77, 3.61, -0.39, 3.61, -1.28, -0.28, 0.72, -0.28, -2.28, 1.31, -0.69, -1.69, -1.69, -1.69, 0.72, 3.72, 4.72, 0.72, 11.72, -1.28, -1.28, -0.28, -0.28, -0.28, -0.76, -1.76, 0.24, -3.56, -3.56, -3.56, -2.51, -2.51, -2.51, 1.24, -1.76, 2.24, -1.98, -1.98, -1.98, -1.78, -1.78, 1.22, -2.96, 2.04, 5.04, -1.63, -1.63, -1.63, -0.03, 11.97, 3.97, -0.03, 4.97, -1.72, -1.72, -1.72, 4.31, 7.31, 7.31, 0.02, 8.02, 5.02, -1.54, -2.54, -1.54, -0.54, -2.54, -0.23, -0.23, -1.23, 1.77, -1.23, -0.51, 7.49, 9.49, 8.49, 1.49, 3.58, -0.42, -3.42, 2.72, 4.72, 2.72, -0.28, -1.28, -1.24, -2.24, -1.24, -2.24, -0.24, 3.75, 0.75, -0.25, 0.75, -0.25, -1.52, -0.52, -1.52, 2.77, 1.77, -1.23, -0.23, -0.23, -2.87, -2.87, -1.87, 1.13, 1.25, -1.75, 0.14, 2.14, 2.14, -2.72, -1.72, -4.72, -0.23, 0.77, -1.23, 0.77, 4.77, -2.95, 4.15, 1.15, 4.15, -0.85, 9.46, 0.46, -2.54, 1.46, 1.46, 9.73, 1.73, 3.15, 4.15, -0.30, -0.30, 2.70, -0.30, 1.15, 0.15, 15.77, 10.77, 6.15, 7.15, 4.15, 4.15, 2.15, 1.15, -0.85, 1.15, 3.75, -0.25, 0.57, 0.77, 0.15, 2.15, 0.77, -0.23, -1.23, 17.15, 3.75, -1.85, 8.76, 5.02, -0.23, 0.77, -1.23, 4.77, -0.23, -1.23, -2.24, 5.15, 0.70, 4.70, 4.70, -0.30, 1.76, -2.24, 3.77, -0.23, 4.78, 3.15, 5.09, 4.09, 6.09, -0.55, -1.55, -0.55, 0.12, 1.12, 1.12, -3.04, -1.04, -1.04, -2.01, -2.01, -2.01, -1.85, 0.15, -2.85, -2.85, -0.85, -1.63, -1.63, -1.63, -1.63, -1.63, -1.07, -3.07, -4.07, -1.26, -2.26, -1.26, 0.74, -0.26, -4.09, -4.09, -4.09, -5.09, 0.91, -5.29, -3.29, -4.29, -0.29, 0.71, 6.77, 2.77, -2.23, -0.23, 5.77, -2.10, 1.90, 0.90, -0.26, 0.74, -2.26, 2.74, -1.26, -1.26, -1.48, -1.48, 0.52, -1.63, 0.37, -1.63, -8.29, -8.29, -8.29, -6.29, -8.29, -2.55, -2.55, -2.55, -2.55, -2.55, -2.88, -1.88, -0.88, -2.88, -2.88, -1.94, -2.94, 4.06, 0.06, -0.94, 1.58, -1.42, -2.31, -1.31, -0.31, -2.31, 3.17, -2.83, -1.80, -1.80, -1.80, -1.41, -1.41, -1.41, -1.59, 11.01, -0.99, 0.01, -0.99, 3.01, -0.26, -0.26, 2.74, -1.26, -0.26, 1.86, -0.14, 0.86, 2.86, -0.14, -2.12, -2.12, -2.12, -2.28, -2.28, -2.28, -2.99, 0.01, -2.99, -2.99, -0.99, -1.87, 0.13, -1.87, 2.13, -1.87, -2.23, -2.23, -2.23, -1.23, -2.23, 1.79, -0.21, 2.79, -2.85, -1.85, -1.85, -1.85, -2.85, -2.23, -2.23, -2.23, 3.77, -2.23, -2.85, -2.85, -2.85, 0.15, -2.85, -4.82, -2.82, 3.18, 7.18, 11.18, -2.88, -2.88, 0.12, 0.12, -1.88, -2.82, -0.82, -1.82, 0.18, 4.18, -3.18, -3.18, -3.18, -3.18, -3.18, -2.79, -2.79, -1.79, -1.79, -2.79, -2.46, -2.46, -2.46, -2.46, -2.46, -3.56, -3.56, -3.56, -3.56, -3.56, -2.52, -3.52, -3.52, -3.52, -3.52, -3.52, -3.52, -3.52, -3.52, -3.52, 1.82, -0.18, -0.18, 1.48, -1.52, 1.48, 2.22, 4.22, 1.22, -1.78, -1.78, 7.45, 11.45, 2.45, -1.55, -1.55, 9.45, 13.45, 6.45, 9.45, 7.45, 2.22, 4.22, 2.22, 1.22, 0.22, 4.51, 6.51, 8.51, -0.75, 0.25, -1.75, -1.75, -1.75, -1.75, -2.47, -2.47, -2.47, -1.84, -0.84, -1.84, -1.94, -1.94, -1.94, -2.47, -2.47, -2.47, -1.58, -1.58, -1.58, -1.77, -1.77, -1.77, -2.35, -2.35, -1.35, -2.35, -1.58, -1.58, -1.58, -1.99, -1.99, -1.99, -1.87, -1.87, -1.87, -2.26, -2.26, -2.26, -1.77, -1.77, -1.77, 2.77, -2.23, 1.77, -1.31, -1.31, -2.31, 2.69, 5.69, 2.42, 1.42, 1.42, 3.42, 1.42, 0.19, -1.81, -1.81, -1.81, -1.81, 1.97, 5.97, -0.03, 0.97, 0.97, -0.80, -1.80, -0.80, 3.20, 3.20, -1.37, -0.37, -2.37, -3.04, -3.04, -3.04, -1.25, 0.75, -1.25, 2.98, -1.02, -2.02, 7.79, 10.79, 10.79, -3.58, -3.58, -2.58, -0.55, -1.55, -0.55, 9.40, -0.60, 5.40, 1.12, 1.12, 5.12, -3.44, -2.44, -3.44, -1.60, -2.60, -2.60, 2.74, -0.26, 2.17, -1.83, 0.01, -1.99, -1.27, -2.95, -2.95, -2.25, -2.25, -2.95, -1.28, -2.28, -2.28, -2.88, 1.12, -2.88, 0.18, -0.82, -1.82, -1.28, -2.28, -2.28, -2.28, -2.28, 3.72, -1.59, -0.59, 1.41, -1.98, -1.98, -0.98, -2.28, -2.28, -2.28, -0.76, -1.76, -1.76, -1.76, -1.76, -0.59, -1.59, -1.59, -0.78, -1.78, 0.22, -1.78, -1.78, 1.84, -2.16, -3.16, 2.84, 10.84, -0.69, -1.69, 1.31, -2.60, -2.60, -2.60, -3.33, -3.33, -3.33, -2.86, -0.86, 1.14, -2.88, -1.88, -2.88, -2.85, -1.85, -2.85, -3.04, -3.04, -3.04, -3.58, -3.58, -3.58, -3.93, -3.93, -3.93, -3.58, 0.42, -3.58, -3.79, -3.79, -3.79, -2.22, -2.22, -2.22, -2.34, -2.34, -2.34, -2.36, -2.36, -2.36, -2.85, -2.85, -2.85, -2.88, -2.88, 0.12, -2.55, -2.55, -1.55, -2.51, -2.51, -2.51, -2.85, -2.85, -1.85, -1.99, -1.99, -2.85, -2.85, -2.85, 9.16, 7.16, 7.16, 3.29, -2.71, 2.29, -3.62, -2.62, -2.62, 0.38, -1.62, 1.38, 4.38, -0.62, -1.62, -1.62, -1.62, -1.62, -1.62, -1.62, -2.46, -2.46, -2.46, -2.46, -2.46, -2.17, -2.17, -2.17, -2.17, -2.17, -2.30, -2.30, -2.30, -0.30, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -1.92, -1.92, -1.92, -1.92, -0.92, -1.72, -0.72, -1.72, -1.72, -1.72, -1.80, -1.80, -1.80, -1.80, -1.80, -2.47, -1.47, 1.53, -3.16, -3.16, -2.16, -3.62, -2.62, 0.38, -3.80, -2.80, -2.80, -2.55, -1.55, -2.55, 1.13, -0.87, 0.13, -4.55, -4.55, -4.55, -0.55, -3.55, -1.78, 2.22, 11.22, -1.57, -1.57, -1.57, -2.60, -0.60, -1.60, -3.27, -3.27, -3.27, -3.27, -2.27, -1.91, -1.91, -2.91, -2.91, -0.91, -1.55, -2.55, -1.55, -0.26, -2.26, -2.26, -2.86, -2.86, -2.86, -2.25, -2.25, -1.25, -1.76, -1.76, 0.24, -2.25, -0.25, -1.25, 0.75, -2.25, -1.25, -2.25, -2.25, -2.25, -2.25, -2.25, -1.25, -2.92, -2.92, -0.92, -2.25, -2.25, -2.25, 0.72, 3.72, -2.28, -1.28, -2.28, 2.44, -1.56, 1.44, 2.44, -2.56, -3.52, -3.52, -3.52, -1.41, -1.41, -1.41, -0.99, -0.99, -1.99, -1.59, -1.59, -1.59, -1.59, -1.59, -3.14, -4.14, -4.14, -4.14, -4.14, -1.80, -1.80, -1.80, -1.80, -1.80, -1.82, -1.82, -1.82, -1.82, -1.82, -3.61, -0.61, -2.61, -1.49, -0.49, -1.49, -2.98, 0.02, -2.98, -0.98, -1.98, -0.98, -1.98, -1.98, -2.39, -1.39, -2.39, -5.68, -7.68, -6.68, -2.26, -2.26, -2.26, 1.15, 0.15, 2.15, 4.52, -1.48, 0.52, -2.17, -2.17, -3.17, -0.67, -0.90, -0.90, 3.10, 2.74, 0.74, 1.74, -2.07, 0.93, -2.07, 1.76, -2.24, -0.24, -1.26, -0.26, -1.26, 4.23, 1.23, 6.23, -20.49, -28.49, -22.49, -10.49, -8.49, -2.75, -3.75, -2.75, -3.75, -1.89, -3.89, -3.89, 0.11, 3.11, -2.81, -2.81, -2.81, -2.81, -1.81, -3.05, -3.05, -3.05, -0.22, -0.22, -1.22, -1.22, -1.22, -3.07, -1.07, -3.07, -3.07, 0.18, -1.82, 2.18, -0.33, -0.33, 9.67, -1.82, -1.82, 0.18, -0.09, 0.91, -2.09, -3.09, -3.09, -3.47, -0.47, -3.47, -3.47, -3.47, -1.55, 0.45, -0.55, 1.45, -3.55, -2.57, 1.43, -3.57, -0.82, -0.82, 1.18, -3.02, -3.02, -3.02, -1.02, -0.02, -0.02, -0.02, -2.02, -2.93, 1.07, -1.93, -1.93, 0.07, -2.51, 0.49, -1.51, -1.99, -1.99, -1.99, -1.61, -3.61, -3.61, -0.13, -2.13, 1.87, -2.49, 1.51, -2.49, -2.23, -2.23, -2.23, -2.23, -2.23, -2.23, -1.23, -2.23, -2.23, -2.32, -2.32, -2.32, -2.23, -2.23, -2.23, -3.66, -3.66, -3.66, -0.26, -2.26, 0.74, -1.04, -2.04, -0.04, -1.60, -1.60, 2.40, -0.60, 1.40, -2.33, 0.67, 1.67, -0.33, -1.33, -2.33, -2.33, -1.82, -0.82, -2.33, -0.33, -1.33, -2.33, -0.33, -1.33, 0.67, -2.33, -2.33, -2.33, -2.33, -2.33, -3.04, -2.04, -2.04, -1.04, 0.69, -0.31, -1.31, -2.31, 1.29, -1.71, 0.29, -1.71, -2.71, -1.71, 3.22, -1.78, -1.78, 3.22, -1.78, -1.78, 5.78, -1.22, 1.78, -0.05, -1.05, -2.05, 1.37, -0.63, -1.63, -1.82, -1.82, -1.82, -2.66, -2.66, -2.66, -1.82, -0.82, -0.82, 0.98, -3.02, -4.02, -0.85, 0.15, -1.85, 1.78, -2.22, 9.78, -2.17, -1.17, -3.17, -2.17, 0.83, -1.77, -1.77, -1.77, -1.77, -1.77, -1.77, -1.77, -1.77, -1.77, -1.78, -1.78, -1.78, -1.39, -1.39, -1.39, -2.01, -2.01, -0.01, 3.98, -3.02, -1.02, 12.33, 15.33, 10.33, 13.33, 3.33, 1.53, 6.53, 0.53, -0.47, -2.47, 4.01, -1.99, -2.99, -1.99, 2.01, 14.46, 16.46, 14.46, 20.46, 22.46, 5.69, -1.31, 1.69, 1.60, 1.60, -0.40, 0.41, -1.59, -0.59, 2.60, 1.60, 0.60, -0.60, -2.60, 1.40, 3.40, 0.40, -2.51, 2.49, -2.51, 0.49, 7.49, 1.00, 5.00, 14.00, 6.00, 9.00, -1.56, -2.56, -2.56, -2.56, 1.44, -0.31, -2.31, 5.69, -1.25, -4.25, -3.25, -4.25, -3.25, -2.46, -2.46, -2.46, -1.46, -2.46, -3.22, -2.22, -3.22, -3.22, -3.22, -2.03, -2.03, -2.03, -2.03, -2.03, -2.03, -2.03, -1.03, -2.03, -2.03, -2.22, -2.22, -2.22, -2.40, -2.40, -2.40, -2.06, 0.94, 0.94, -3.63, -3.63, -2.63, -1.68, -1.68, -0.68, -4.03, -2.03, -3.03, -4.03, -4.03, -2.24, -2.24, -2.24, -2.24, -0.24, 1.74, -1.26, -2.26, -1.26, -2.26, -2.24, -1.24, -2.24, -0.50, 1.50, -1.50, -1.57, -1.57, -1.24, -2.24, -2.24, -2.24, -2.24, -2.24, -2.57, -1.57, -1.57, 5.70, 13.70, 2.70, -1.61, -1.61, -1.61, -1.43, 1.57, -0.43, -1.48, -3.48, -2.48, -1.43, -0.43, 1.57, -3.85, -4.85, -0.44, 1.56, 0.63, -1.37, 0.63, -0.37, 0.63, -0.33, -1.33, 1.67, 0.67, 7.67, -1.30, -1.30, -1.30, -0.30, -0.30, 8.20, -1.80, -1.80, 1.20, 1.20, -2.23, -2.23, -2.23, -1.75, -1.75, -1.75, -2.36, -2.36, -2.36, -2.27, -2.27, -2.27, -2.27, -1.27, -2.27, -2.27, -2.27, -2.27, -1.27, -3.60, -3.60, -1.60, -2.60, -1.60, -2.27, -2.27, -2.27, -2.27, -2.27, -1.68, -1.68, -0.68, -2.31, -1.31, -0.31, -0.82, -1.82, -1.82, -1.95, -1.95, -0.95, 1.39, -1.61, -0.61, 0.76, -2.24, -1.24, 0.18, -1.82, -1.82, 1.97, 0.97, 2.97, 1.24, -1.76, -1.76, -0.27, -0.27, 1.73, -1.63, -1.63, -1.63, -2.40, -2.40, -2.40, -2.42, -2.42, -2.42, -2.03, -2.03, -1.03, -0.58, -1.58, 2.90, 8.90, -1.10, -0.10, -2.10, 2.42, -1.58, -1.58, -1.49, -0.49, -2.49, -2.49, -2.49, -2.86, -2.86, -2.86, -2.26, -2.26, -2.26, -2.26, -2.26, 2.74, -2.55, -2.55, -2.55, -3.22, -3.22, -3.22, -2.68, -2.68, -2.68, -1.80, -1.80, -1.80, -1.80, -0.80, -1.82, -1.82, -1.82, -1.82, -1.82, -1.82, -1.82, -1.82, -1.82, -1.82, -1.56, -1.56, -1.56, -3.66, -3.66, -3.66, -2.23, -2.23, -2.23, -1.97, -2.23, -2.23, -2.23, -1.75, -1.75, -1.75, -2.23, -1.23, -2.23, -1.75, -3.02, -3.02, -3.02, -3.02, -3.02, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -1.90, -1.90, -0.90, -0.90, -1.90, -4.30, -4.30, -4.30, -2.86, 0.14, -0.86, -5.43, -5.43, -5.43, -1.65, -1.65, -1.65, 0.35, 5.35, -2.01, -2.01, -2.01, -1.01, -1.01, -1.26, -1.26, 1.74, 1.74, 0.74, -0.80, -1.80, 1.20, -0.80, 0.20, -3.69, -0.69, 3.31, -1.25, -2.25, -0.25, 0.49, 1.49, 0.49, -2.53, -0.53, 0.47, 1.47, 2.47, 4.47, 2.62, 1.62, 1.62, 1.62, 2.62, -2.38, -2.38, -2.38, -2.38, -1.38, 5.82, 1.82, 0.82, -1.59, 1.41, 0.41, -1.78, -0.78, -1.78, -0.30, 5.70, -0.30, -2.43, -3.43, -1.43, 0.48, -0.52, 1.48, -2.42, -2.42, 0.58, -2.88, -2.88, -1.88, 2.45, 1.45, 4.45, -2.56, -2.56, 4.44, -2.60, -2.60, -2.60, -1.82, -1.82, -1.82, -2.86, -0.86, 9.14, 8.35, -1.65, 1.35, -2.93, 4.07, 0.07, -1.42, -1.42, 0.58, -2.25, -2.25, -0.25, -2.25, -2.25, -3.39, -1.39, 0.61, 8.61, 1.61, -1.68, -1.68, -1.68, -1.68, -2.25, -2.25, -1.25, -2.25, -0.25, -1.76, -1.76, -0.76, -0.76, -1.76, -2.25, -2.25, -2.25, 3.75, 0.75, 4.55, 5.55, 7.55, 15.73, 10.73, 8.73, 2.86, 0.86, 1.86, -2.46, 1.54, 0.54, -1.24, -2.24, -2.24, -0.19, 1.81, -1.19, 2.76, 3.76, -2.24, -2.59, -0.59, -3.59, -1.87, 2.13, -1.87, -2.82, -1.82, -2.82, -1.99, -1.99, 8.01, 0.67, -1.33, -2.33, 0.67, -2.33, -2.31, -2.31, -1.31, -2.31, -2.31, -1.05, -2.05, -2.05, -2.05, -1.05, 0.23, -1.77, -1.77, -2.23, -2.23, -2.23, -2.62, -0.62, -2.62, -3.73, -3.73, -3.34, -3.34, -0.04, 1.44, 0.44, 0.44, -0.03, -1.03, -1.03, -0.04, -1.04, -0.04, -1.61, -1.61, -1.61, -2.30, -2.30, -2.30, 5.20, 0.20, -1.80, -2.95, 6.05, -2.95, -2.95, -1.95, -1.95, -2.54, -2.54, 3.46, 7.74, -3.26, 4.74, 6.12, 8.12, 6.12, 5.18, 1.18, 7.18, -1.67, -1.67, -0.67, 0.23, 3.23, 7.23, 1.46, 0.46, -1.54, -2.54, -4.54, 2.47, -1.53, -2.53, -0.53, -0.53, -1.62, -3.62, 1.38, -2.62, -1.62, 0.42, 0.42, -1.58, -1.58, -1.58, -2.31, 6.97, -2.98, -0.98, -4.05, -6.05, -5.05, -1.83, -1.83, -0.83, -1.83, -1.83, -1.93, -1.93, -1.93, -1.93, -0.93, -1.85, 0.15, 0.15, -2.23, 0.77, 0.77, -2.00, -2.00, 2.00, -2.25, -1.25, -1.25, -3.39, -2.39, 1.61, -2.28, -0.28, -2.28, -1.51, -2.51, -2.51, -2.51, -2.51, -2.23, -2.23, -2.23, -2.23, -2.23, -0.85, -2.85, -2.85, -2.85, -2.85, -2.85, -1.85, -2.85, -2.85, -1.85, -2.02, -1.02, 2.98, -2.01, 0.99, 0.99, -2.28, -2.28, -1.59, -1.59, -2.96, -1.96, -2.64, -2.64, -5.32, -5.32, -3.57, -1.57, -3.57, -1.78, -1.78, -1.78, -2.53, -2.53, -2.53, -7.20, -4.20, -4.20, -9.20, -9.20, -2.42, -1.42, -3.42, -2.42, -3.42, -2.39, -2.39, -2.39, -2.39, -3.39, -4.16, -4.16, 21.84, -1.54, -2.54, -2.54, -2.28, -1.28, 0.72, -2.07, -1.07, -2.07, -1.84, -0.84, -1.84, -2.44, -2.44, -2.44, -2.44, -2.44, -2.44, -2.10, -2.10, -1.10, 3.90, 0.90, -2.23, -2.23, -2.23, -2.23, -2.23, -0.97, 0.03, -1.97, 1.03, 0.03, -2.23, -2.23, -0.23, -1.23, -2.23, -1.83, -1.83, -1.83, -1.98, -1.98, -1.98, -2.37, 1.63, -2.37, 2.41, 0.41, 0.41, -1.13, -3.13, -1.13, -1.78, -1.78, -0.78, -2.52, -1.52, -1.52, -3.04, -3.04, -3.04, -2.30, -1.30, -3.30, -4.46, -4.46, -2.46, -3.82, -3.82, -3.82, -4.30, -4.30, -4.30, -2.69, -2.69, -2.69, -1.80, -0.80, -1.80, -0.08, -2.08, -1.08, -0.82, 1.18, 3.18, -2.05, -1.05, -1.05, -0.42, -2.42, -1.42, -2.33, -2.33, -0.33, -2.88, -3.13, -3.13, -3.13, -3.13, -2.13, -0.84, -1.84, -1.84, -1.84, -1.84, -1.97, -1.97, -1.97, -1.97, -1.97, -0.84, -1.84, -0.84, -1.84, -1.84, -0.84, -1.84, -1.84, -1.84, -1.84, -1.84, -1.84, -1.84, -1.84, -1.84, 0.16, -1.84, -1.84, -1.84, -1.84, -0.84, -1.84, -0.84, -1.84, -1.84, -1.84, -0.84, -0.84, -1.84, -1.84, 5.21, 2.21, 0.21, -0.11, 2.89, 3.89, -7.20, -4.20, -3.20, -2.96, -2.96, -1.96, -1.96, -1.96, -1.82, -2.82, -1.82, -5.00, -2.00, 1.00, -2.88, -2.88, -2.88, -2.26, -2.26, -2.26, -2.88, -2.88, -0.88, -3.13, -2.13, -2.13, -1.52, -0.52, 1.48, -4.90, -3.90, -3.90, -2.15, -2.15, -1.15, -2.52, -3.52, -3.52, -0.20, 0.80, 4.80, -3.52, -3.52, -3.52, -2.26, -2.26, -2.26, -1.14, -1.14, -1.14, 1.64, -2.36, 7.64, -2.26, -2.26, -2.26, -2.03, -2.03, -2.03, -1.80, -1.80, -1.80, -3.19, -3.19, -3.19, -2.30, -2.30, -2.30, 1.25, 2.25, 0.25, -1.98, -1.98, -1.98, 1.83, -1.17, -2.17, -1.56, -1.56, -1.56, 9.79, -0.21, -2.21, -2.23, -1.23, -1.23, -2.01, -1.01, -2.01, -1.90, -1.90, -0.90, -1.92, -1.92, -1.92, -5.13, -5.13, -6.13, -2.95, -2.95, -2.95, 2.75, -2.25, 1.75, 7.87, 5.87, 15.87, 26.87, 23.87, 5.22, 6.22, 3.22, -0.78, -2.78, -2.13, -2.13, -1.13, -2.13, 4.87, 2.45, -2.55, 4.45, 5.45, 3.45, -2.01, -3.01, -1.54, 0.46, -1.54, 3.46, -1.54, -2.12, -2.12, -3.12, -0.12, -2.12, -3.60, 2.40, -3.60, -3.60, -0.60, -1.76, -1.76, -1.76, -2.82, -2.82, -2.82, -0.82, -2.82, -2.82, -2.88, -2.88, -2.88, -3.11, 0.89, -1.11, -0.66, -1.66, -3.66, -1.56, -0.77, -1.77, 2.23, -1.77, -2.77, -2.26, -2.26, -2.26, -2.78, -0.78, -1.78, -1.26, -2.26, -2.26, -1.97, -1.97, -1.97, -2.26, -2.26, -2.26, -2.26, -1.26, 1.74, 3.02, 1.02, 1.02, -2.08, -1.08, -3.08, 0.22, -2.78, -1.78, -2.44, -1.44, -2.44, -2.23, -2.26, -2.23, -2.26, -1.33, 3.67, -0.33, 0.67, -0.33, -1.33, -1.33, -1.33, 0.67, -0.33, -2.33, -1.33, 2.67, 0.67, -1.33, 0.20, 0.20, 3.20, 5.20, 0.20, 1.76, 0.76, -2.24, -0.24, -2.24, -0.76, -1.76, -0.76, -2.25, -2.25, -1.25, -1.76, -1.76, 2.25, -0.75, 1.25, -0.75, 1.25, -0.21, -1.21, -1.21, 1.79, -1.21, -0.76, -2.76, -3.76, 1.31, -2.69, -0.69, -2.69, -1.69, -1.69, -2.43, -2.43, -2.43, -3.68, -3.68, -3.68, -3.84, -3.84, -2.73, -2.73, -0.73, -1.80, -1.80, -1.80, -2.34, -1.34, 1.66, -3.01, -3.01, 1.99, -2.28, -2.28, -0.28, -0.98, -1.98, -1.98, -2.25, -2.25, -1.25, -1.25, 0.75, -2.23, -1.23, -2.23, 0.77, 1.77, 4.80, 0.80, -3.20, -3.60, -3.60, -3.60, 3.07, 9.07, 1.07, -0.97, -1.97, -1.97, -1.23, -1.23, -2.23, 4.53, -2.47, 1.53, -0.85, -2.85, 0.15, -1.31, -1.31, -1.31, -1.71, -1.71, -1.71, 5.06, 0.06, 2.06, 0.55, 7.55, 13.55, -3.88, -2.88, -2.88, 1.69, -0.31, 2.69, -2.07, -4.07, -2.07, -2.30, -2.30, -2.30, -0.80, 2.20, 6.20, -0.03, 1.97, 2.97, -2.30, -1.30, 0.70, -2.30, -2.30, -2.30, -0.58, -1.58, -1.58, -2.49, 0.51, -2.49, -1.26, -1.26, -2.26, 0.40, -2.60, -0.60, -2.60, 0.40, 0.67, -0.33, -1.33, 0.67, -1.33, 0.67, -1.33, -2.33, -2.33, -0.33, 0.18, 0.18, -0.82, -1.82, -1.82, -2.88, -2.88, -2.88, -3.40, -3.40, -3.40, -2.88, -2.88, -2.88, 3.79, -2.21, -2.21, -0.23, -2.23, -2.23, -1.23, -2.23, -2.23, 8.11, 3.11, -1.89, 0.85, -1.15, -2.15, -1.53, -2.53, -1.53, -12.96, -9.96, -2.96, -2.32, 6.68, 8.68, -2.46, -2.46, -0.46, -3.41, -4.41, -0.41, -1.24, 0.76, -0.24, 7.74, -2.26, 0.74, -5.22, -5.22, -2.22, 4.78, 16.78, -0.49, 2.51, 3.51, -1.58, -1.58, -1.58, -1.58, 2.01, 1.01, 2.01, -1.58, -1.58, -1.58, 2.42, -0.58, -1.58, 1.36, -1.64, -1.64, -0.36, -0.36, -0.36, -1.34, -2.34, -2.34, -2.36, -0.36, -2.36, -2.01, 1.99, -1.01, 1.97, -3.03, 0.97, -1.05, -0.05, -0.05, -2.33, -2.33, -1.33, -2.24, -2.24, -2.24, -0.02, -1.02, -1.02, -1.38, -4.38, -0.38, -1.33, -0.33, 0.67, -5.49, -4.49, -4.49, 3.67, -1.33, -0.33, 1.58, -1.42, -1.42, 0.58, -2.42, 5.06, -3.94, -1.94, 0.06, 3.06, 6.27, -1.73, -0.73, -2.73, 0.27, -2.33, -1.33, -1.33, -0.05, -0.05, -1.05, -2.05, -1.05, -0.05, -2.31, -3.31, -4.31, -2.55, -1.55, -2.55, -1.01, -0.01, -0.01, -2.26, -2.26, -2.26, -0.22, 0.78, -3.22, -1.80, -1.80, -0.80, -1.61, 5.39, -0.61, -5.37, -5.37, -4.37, -2.33, -2.33, -2.33, -2.31, -2.31, -2.31, -0.57, -1.57, 0.43, -1.80, 0.20, 2.20, -1.80, -1.80, -1.80, -3.32, -1.32, -3.32, -0.95, -0.95, 0.05, -0.82, -1.82, 0.18, -1.99, -1.99, -1.99, 4.57, -3.43, -4.43, -1.43, -3.43, -2.43, 1.31, -0.69, -1.69, -3.43, 3.57, -0.43, -3.24, -3.24, -3.24, -3.56, -3.56, -1.56, -2.12, -2.12, -2.12, -1.85, 0.15, -2.85, -1.59, -1.59, -1.59, -2.00, 0.00, 0.00, 0.00, -3.00, 0.00, 0.00, 2.00, -1.00, 1.00, -1.00, -3.00, 1.00, -2.00, -2.00, 10.33, 8.33, 6.33, 1.33, -0.67, 2.66, 14.66, 7.66, 3.66, 0.66, -2.86, 4.14, 2.14, -0.86, -1.86, -1.46, -1.46, -1.46, -2.25, -2.25, -3.25, -2.25, -3.25, -0.88, -2.88, -2.88, -2.88, 0.12, -1.82, -1.82, -1.82, -0.77, -1.77, -0.77, -0.82, 2.18, -0.82, -2.32, -2.32, -2.32, -0.88, -0.88, -1.88, -1.26, -2.26, -2.26, -1.88, -2.88, -1.88, -0.88, -0.88, -0.88, -2.02, -1.02, 2.98, 0.67, 7.67, 1.67, 7.67, -0.33, -0.33, -2.05, 0.95, 1.95, -1.28, 1.72, -2.28, -3.64, -3.64, -2.64, -1.30, -0.30, -2.30, -0.57, 2.43, -1.57, -2.02, -3.02, -3.02, -2.60, 3.40, 3.40, -2.80, -0.80, 3.20, -2.80, 4.20, 1.20, -2.18, -1.18, 1.82, -2.77, 3.23, 5.23, -1.60, -0.60, -0.60, 3.18, 3.18, -2.82, -2.88, -1.88, 0.12, -2.20, -0.54, -1.54, -1.26, -1.26, -2.26, -3.61, -1.61, -2.61, 6.31, 3.31, -2.69, -2.69, 2.18, -1.82, -1.82, -2.27, -2.27, -2.27, 1.12, -2.88, -2.88, 0.38, 2.38, 5.38, 8.65, -2.35, -1.35, -2.35, -1.39, -2.39, -2.39, 2.72, 9.72, 0.72, 7.27, 8.27, 1.27, 0.27, 25.00, 8.00, 2.00, -2.00, -2.42, -1.42, -2.42, -2.42, 2.63, -2.37, -1.37, -2.37, 2.74, 0.74, 1.74, -1.89, -1.89, -1.89, 0.11, 12.74, -0.26, -2.26, 4.33, 7.33, 5.33, -0.28, -2.28, -1.28, -2.54, -2.54, -2.54, -2.88, -1.88, -1.88, -3.00, 3.00, -3.00, -2.28, -2.28, -2.28, 3.75, -2.25, 0.75, -2.63, -1.63, -2.63, -2.55, 5.45, 2.45, -3.00, -3.00, -3.00, -2.27, -0.27, -2.27, 1.69, -1.31, -0.33, 2.67, 1.67, -2.50, -2.50, -2.50, 5.61, 1.61, -0.39, 7.65, 0.65, 0.65, -2.01, -2.01, -1.86, -0.86, -0.86, -1.82, -1.82, 0.18, 1.83, -1.17, 1.83, 5.12, 4.12, 5.12, 8.65, 6.65, -0.35, -3.52, -3.52, -1.64, -2.64, -2.64, -2.96, -2.96, -2.96, 0.81, -0.19, -0.19, -2.26, 0.00, -2.00, -2.59, -2.59, -2.59, -2.00, -3.00, 11.63, 5.63, -0.37, -2.37, -2.37, -2.37, -2.37, 3.64, -1.36, 13.29, 8.29, -1.42, -2.42, -2.42, -2.42, 8.65, 7.65, 3.65, 9.18, 4.18, -0.37, 4.65, -0.62, -2.35, -2.35, -2.40, -2.40, 0.11, -2.37, 3.58, -2.37, -1.37, -1.89, 2.00, 3.63, 2.00, 3.00, 15.00, 2.00, 5.00, 7.27, 1.33, 4.11, -2.37, 7.29, 7.65, -2.42, -2.25, -2.25, -2.25, -2.01, -0.01, -0.01, -2.38, -2.38, -1.38, -0.76, -0.76, -0.76, -0.39, 0.61, -2.39, 1.89, 2.89, -1.11, -2.47, -3.47, -1.47, -0.47, -2.47, -2.46, -2.46, -0.46, 2.54, -1.46, 12.59, -1.41, 3.59, -1.41, -2.41, -2.07, 5.93, -2.07, -3.07, -3.07, -1.56, 1.44, -0.56, -1.56, -1.56, -1.30, -2.30, -2.30, -2.30, -2.30, 0.18, 0.18, -1.82, 0.18, 0.18, -1.56, -2.56, 0.44, -0.56, -1.56, -2.33, -2.33, -2.33, -2.33, -2.33, -2.33, -2.33, -2.33, -2.33, -2.33, -2.33, -2.33, -1.33, -1.33, 0.15, -2.96, -0.50, -1.50, -1.50, 6.50, 0.50, -0.34, -2.34, -0.34, -2.34, 0.66, 3.67, 9.67, 3.67, 13.67, 6.67, -1.98, -1.98, -2.98, -2.98, -2.98, -1.11, -2.11, -2.11, -7.48, -5.48, -5.48, 1.18, 0.18, -2.82, -4.02, -3.02, -3.02, -1.29, -3.29, -3.29, -3.29, -3.29, -2.92, -2.92, -3.48, -2.48, -1.48, -3.75, -1.75, -1.75, -2.81, -0.81, 0.19, 0.19, -1.81, 0.74, 10.74, 9.74, 3.74, -2.26, -1.56, -1.56, -0.56, -2.49, -1.49, -1.49, -0.55, -0.55, 2.45, 0.45, 2.45, -1.88, -2.88, -2.88, -2.88, -1.88, -2.26, -2.26, -1.26, -2.26, -2.26, -2.88, -2.88, -1.88, 1.57, 1.57, -3.43, -2.01, -1.01, -2.01, -0.54, 0.46, -2.54, 0.40, -2.60, -0.60, -3.83, -1.83, -2.83, 1.41, 5.41, -1.59, -0.78, -1.78, 0.22, 1.22, 1.22, -1.75, -1.75, -0.75, 1.90, 13.90, 0.90, -1.55, -1.55, 1.45, -1.33, -0.33, 0.67, -7.04, -7.04, -7.04, -7.04, -7.04, -2.90, -2.90, -2.90, -2.90, -2.90, -1.77, -0.77, -1.77, -2.52, -1.52, -2.52, -2.26, -2.26, -2.26, -1.77, -0.77, -1.77, -2.23, -1.23, -2.23, -1.80, 4.20, -0.80, -0.28, 1.72, 1.72, -2.33, -1.33, -0.33, -2.24, -2.24, -1.24, -0.97, -1.97, -1.97, -1.23, -2.23, -1.23, -1.99, -1.99, 1.01, -2.12, -1.12, -2.12, -1.59, -1.59, -1.59, -1.41, 1.59, 0.59, -1.87, -1.87, -1.87, -2.24, 0.76, -2.24, -2.33, -2.33, -2.33, -2.28, -2.28, -2.28, -2.10, -0.10, -2.10, -2.38, -2.38, -2.38, -3.13, -3.13, -3.13, -2.38, -2.38, -2.38, -2.36, -0.36, -2.36, -2.45, -2.45, -2.45, -1.65, -1.65, -1.65, -4.31, -0.31, -5.31, -1.45, -3.45, -5.45, -2.45, -2.45, -2.45, -2.26, -2.26, -2.26, -2.26, -2.26, -0.75, 1.25, -1.75, 0.25, -1.75, -1.75, -1.75, -1.75, -1.75, -1.75, -2.26, -2.26, -1.26, -2.26, -2.26, -2.26, -2.26, -2.26, -2.26, -2.26, -1.77, -1.77, -1.77, -1.77, -1.77, -6.61, -6.61, -5.61, -1.41, -1.41, -1.41, -1.59, -0.59, -1.59, 3.02, -1.98, -1.98, -1.80, -0.80, -1.80, 35.70, 7.70, 4.70, 4.70, -1.30, -0.07, -3.07, -3.07, -0.07, 2.93, -0.50, -1.50, -2.50, -2.50, -3.50, -1.12, -3.12, -3.12, -3.12, -2.12, -3.53, -3.53, -2.53, -3.53, -1.53, -3.42, 0.58, -3.42, -3.42, -2.42, -5.32, -0.32, -4.32, -4.32, -4.32, -1.12, -1.12, 1.88, -1.12, 0.88, -0.17, -1.17, -2.17, -2.39, -0.39, 0.61, -1.39, -2.39, -0.39, -0.43, -2.43, -1.43, 7.20, 3.20, 2.20, -2.05, -2.05, -2.05, -2.10, -1.10, -0.10, 1.97, -2.03, -1.03, -2.82, -2.82, -1.82, -1.57, -1.57, -1.57, -2.38, -2.38, -2.38, -1.80, -1.80, -1.80, 0.24, -1.95, -0.25, 0.08, -1.52, -1.52, -1.52, -1.58, -1.58, -1.58, -2.21, -2.21, -2.21, -0.97, -1.97, -1.97, -2.26, -2.26, -2.26, -2.26, -2.26, -2.26, -1.58, -1.58, -1.58, -1.58, -1.58, -1.58, 1.37, 3.37, -1.63, -2.33, -2.33, 0.67, -1.33, -2.33, -2.03, -2.03, -1.03, -2.03, -2.03, -1.63, -1.63, -1.63, -1.63, -1.63, -0.18, -2.18, -3.18, -2.00, -3.00, -1.00, -2.01, -1.01, -1.01, -0.23, -1.23, -1.23, 0.77, -0.23, -0.23, -1.56, 0.44, -1.56, 0.79, 13.79, 9.79, 2.97, -1.03, -1.03, -2.88, -2.88, -2.88, -3.24, -2.24, -0.24, 7.06, 7.06, 5.06, 3.06, -1.94, -1.50, -2.29, -2.29, -2.29, -2.29, 0.71, -2.29, -2.15, -2.15, -2.14, 25.86, -3.14, -2.72, -2.72, -2.72, -3.03, 2.97, -2.15, -2.15, -2.15, -0.83, -2.83, 5.17, -1.54, 3.46, -0.54, 8.78, 4.78, 4.78, 5.12, 1.12, -0.88, 4.39, -0.61, -0.61, 0.12, 3.12, -0.88, -2.25, 3.75, -2.25, -2.25, -2.25, -2.25, -0.25, -0.25, 1.75, 0.24, -1.76, -1.76, -1.57, -1.57, -1.57, -2.25, 0.75, -0.25, -0.41, -1.41, -0.41, -5.26, -4.26, 0.74, -5.26, -4.26, -1.67, -1.67, -1.67, -1.67, -1.67, -1.87, -1.87, -1.87, -1.87, -1.87, -1.36, -0.36, -1.36, -0.36, -0.36, -2.38, -1.38, -2.38, -2.38, -2.38, -0.33, -2.33, -2.33, 0.67, 0.67, -2.33, -2.36, 0.64, 0.64, -1.15, -4.15, -4.15, -1.51, -1.51, -1.51, -1.70, -0.70, -0.70, -0.80, -1.80, -1.80, -1.76, -1.76, -1.76, -2.28, -2.28, -2.28, -4.67, -3.67, -4.67, -1.76, -1.76, -1.76, -2.28, -2.28, -2.28, -2.26, -2.26, -1.26, -1.21, -2.21, -1.21, -2.52, -1.52, -2.52, -3.56, -3.56, -0.56, -3.39, -2.39, 5.61, 1.70, 3.70, -0.30, -0.37, -1.37, -3.37, -1.06, -3.06, -1.06, -1.80, 2.20, 0.20, 3.60, 1.60, 0.60, -2.51, -2.51, -1.51, -1.51, 0.49, -2.85, -2.85, -2.85, 0.15, -1.85, -0.51, -2.85, -2.85, -2.85, -2.85, -0.85, -2.23, -2.23, 0.77, -1.23, -2.23, -3.18, 0.82, 6.82, 6.82, 5.82, 3.43, -1.57, -2.57, -2.57, 2.43, -2.85, -2.85, -2.85, -1.85, 0.15, 1.82, 2.82, -0.18, -1.88, 1.12, -2.88, -1.57, -3.57, -2.57, 0.39, -0.61, 0.39, 3.25, 0.25, 0.25, -2.23, -1.23, -2.23, -1.97, -1.97, -1.97, 10.93, 1.93, 1.93, 6.93, 3.93, -0.88, -2.88, 1.12, -2.88, -1.88, 1.12, -0.88, 1.12, -1.88, -0.88, 4.99, -1.01, -0.01, 1.99, 7.99, 0.59, -0.41, -0.41, -1.41, 1.59, 2.20, -1.80, -1.80, -1.80, -0.80, 0.20, -1.80, -1.80, -0.80, -1.80, -1.80, -1.80, -1.80, 0.20, -0.80, -1.80, -0.80, -1.80, -1.80, -1.80, -1.80, -1.80, -1.80, -1.80, -1.80, -5.39, -2.39, 19.61, -4.39, -1.62, 0.73, 0.73, -1.27, -1.95, 0.05, 1.05, -0.71, -1.71, -2.71, -2.43, -0.43, 1.57, 6.38, -5.62, -3.62, -5.62, 5.38, 2.31, -0.69, 0.31, -2.69, 0.31, 0.09, -0.91, -0.91, -2.91, -0.91, -2.91, -2.91, -2.91, -2.91, 0.09, 0.29, -0.71, -1.71, -3.71, -1.71, -0.14, -3.14, 5.86, -1.14, 3.86, -2.25, 7.75, -1.25, -2.25, 1.75, 1.75, -1.39, 4.61, 3.61, -1.82, -0.82, -1.82, -1.75, -1.75, -1.75, -1.58, -1.58, -1.58, -1.56, -1.56, -1.56, -1.43, -1.43, -1.43, -3.00, -1.00, 0.00, -3.00, -3.00, -3.00, -2.29, -2.29, -1.29, -2.45, -2.45, -2.45, -2.10, -2.10, -2.10, -8.43, -7.43, -0.43, -1.78, -2.78, -2.78, -2.78, -2.78, -0.76, 1.24, -0.76, -0.76, 0.24, 7.32, 3.32, 0.32, -2.41, -3.41, -3.41, -1.41, -3.41, -3.41, -3.61, -3.61, -0.61, -2.17, -2.17, -2.17, -1.15, -1.15, -2.15, -1.17, -2.17, -2.17, -1.92, -1.92, -0.92, 1.51, -0.49, 0.51, 0.01, 1.01, 4.01, -2.26, 0.74, -0.26, -2.23, -2.23, -2.23, -2.23, -1.23, -3.97, -3.97, -3.97, -3.97, -3.97, -2.23, -2.23, -2.23, -2.23, -2.23, -3.97, -3.97, -3.97, -3.97, -3.97, -2.03, -3.03, 4.97, -3.40, 1.60, -2.40, -2.43, -2.43, -3.43, -0.43, -2.43, -3.43, -0.97, -1.97, 1.03, -2.26, -2.26, 0.74, -2.06, -2.06, -0.06, -2.23, 4.77, -0.23, 2.62, 6.42, 1.44, -1.63, -1.77, -1.62, -1.66, -1.66, -1.66, -1.66, -1.66, -1.37, -1.37, -0.37, 2.63, -1.37, -0.37, -2.37, -2.37, -0.37, -2.37, -1.88, -2.88, -2.88, 9.43, 6.43, -2.57, -2.30, -0.30, -0.30, -0.30, -0.30, -2.30, -1.79, 2.21, -2.79, 1.21, -1.79, -0.26, 0.74, -1.26, 2.74, -1.26, -0.77, 1.23, 11.23, 0.23, -0.77, -1.28, -1.28, -4.28, -1.65, -1.65, -2.65, -3.94, -4.94, -3.94, -1.25, -2.25, -0.25, 0.69, -1.31, 0.69, 0.71, -2.29, 0.71, 4.69, 0.69, 0.69, -7.65, -11.65, -2.83, -2.83, -2.83, 0.76, -1.24, 0.76, 6.77, 10.77, 1.77, -2.69, -1.69, 1.31, -2.69, -2.04, -2.04, -0.04, -0.04, -1.04, 6.00, 16.00, 14.00, -1.04, 1.96, -1.04, 0.96, -1.04, -2.69, 0.31, 0.31, 1.31, 4.25, 0.25, -3.75, -2.15, -2.15, -2.15, -2.15, -2.15, -2.15, 1.32, -1.68, -1.68, -2.09, -2.09, -0.09, -1.15, -1.15, -2.15, 0.39, -1.61, 0.39, -0.61, 0.39, -1.37, 4.63, -1.37, -5.14, -3.14, -3.14, -2.29, 1.71, 1.71, -2.44, -2.44, 0.30, 4.30, -1.70, -1.49, -2.49, -2.49, -0.70, -2.70, -2.70, -0.59, -4.59, -3.59, -0.79, -1.79, -1.79, -2.85, -1.85, -2.85, -1.82, -2.82, -2.82, 0.15, -2.85, -1.85, -2.39, -2.39, 0.61, -1.85, -0.85, -1.85, -2.85, -2.85, -1.85, -2.23, -1.23, -2.23, -1.88, 1.12, -2.88, -0.88, -2.88, -1.80, 7.20, -1.80, -0.80, -0.80, -1.24, -2.24, -2.24, -1.24, -2.24, -2.24, 3.96, -2.04, -3.04, -2.41, -2.41, -2.41, -1.61, -0.61, -1.67, -1.67, -0.67, -1.67, -1.67, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -1.30, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -2.30, -2.53, -2.53, -1.53, -2.53, -2.53, -2.43, -0.43, -2.43, -2.43, -0.43, -2.47, -1.47, -2.47, -3.38, -3.38, -3.38, -1.72, -1.72, -1.72, -2.47, -2.47, -2.47, -2.18, -1.18, -2.18, -5.32, -4.32, -5.32, -1.32, -3.32, -2.28, -1.28, -2.28, -1.28, -1.28, -2.64, -2.64, -2.64, -1.64, -2.64, -1.28, -0.28, 1.72, -1.28, -0.28, -2.28, -2.28, -2.28, -2.28, -0.28, -1.30, -1.30, -0.30, 2.70, -0.30, -0.57, -2.57, -2.57, -1.57, -1.57, 0.97, -0.03, -2.03, 0.97, -0.03, -2.32, -1.32, -2.32, 0.79, -2.21, -2.21, 17.71, -2.29, -0.29, -2.66, -3.66, -3.66, 1.15, 5.15, -1.85, -0.85, 2.15, -1.88, -2.88, -2.88, 0.12, -0.88, 0.49, -1.51, 0.49, -2.51, -1.51, 3.83, -2.17, 1.83, 0.83, -0.17, -1.88, -1.88, -2.88, -2.88, -0.88, 3.75, 7.75, 16.75, 13.75, 0.95, 4.95, 0.95, 12.95, 11.95, -3.93, -2.93, -3.93, -0.93, 1.07, 2.07, 2.40, -0.60, 0.40, 1.95, -1.05, -1.05, 2.49, -2.51, -0.51, 0.39, -0.61, -1.61, 0.57, -3.43, -1.43, 3.11, 3.11, 2.11, -5.91, -5.91, -2.91, -3.63, 4.37, 3.37, -0.56, -1.56, -2.56, -2.30, -2.30, -2.30, 2.20, 0.20, 2.20, -3.07, -0.07, -1.07, -2.40, 4.60, 1.60, -1.85, -2.85, -1.85, -0.85, -2.85, -4.50, 9.50, -3.50, -4.50, -3.50, -4.72, -3.72, -4.72, -4.72, -4.72, 0.93, 16.93, 7.93, 0.39, -1.61, -1.61, -0.31, 1.69, -1.31, -6.34, -3.34, -6.34, -2.07, -3.07, -2.07, -0.34, -2.34, -3.34, -0.55, -0.55, 0.45, 0.61, 5.61, -0.39, -2.43, -1.43, -0.43, -1.69, -1.69, -1.69, -1.69, 1.31, -0.69, 1.79, -1.21, 3.79, -1.58, -1.58, -0.58, -2.33, -2.33, -2.33, -2.33, -2.33, -2.30, -2.30, -2.30, -1.30, -0.30, -0.33, -0.33, -2.33, 2.67, 0.67, 2.68, 1.68, 0.68, -0.14, -2.14, -2.14, -1.99, -1.99, 2.01, -0.32, 1.68, -2.32, -2.23, -2.23, -2.23, -5.91, -3.91, -7.91, -0.52, -2.52, -2.52, -1.52, -0.52, -0.52, -0.26, -2.26, -1.26, -1.26, -0.26, -0.26, -1.26, -2.26, -2.26, -1.61, -1.61, -1.61, -1.76, -1.76, -1.76, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -2.51, -2.51, -2.51, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -0.38, -2.38, -2.38, -2.40, -2.40, -2.40, -2.27, -2.27, -2.27, -1.88, 12.12, 7.12, -1.88, 0.12, 10.77, 15.77, 13.77, -0.51, -0.51, 4.49, -2.23, -2.23, -0.23, -2.23, -1.23, -1.80, 1.20, 0.20, -1.80, 1.20, -3.94, -1.94, -4.00, -5.00, -5.00, -5.00, -4.00, 1.49, -0.51, 1.49, -2.30, -2.30, -2.30, -2.46, -2.46, -2.46, -2.17, -2.17, -2.17, -1.74, -0.74, 1.26, -1.39, -0.39, -1.39, -3.91, 3.09, -0.91, -2.28, 1.72, 2.72, -2.34, -2.34, -1.34, -0.99, 0.01, -1.99, 3.01, -1.99, -1.99, 0.51, 14.51, 2.51, 0.14, 0.14, 1.14, 0.45, -2.55, 4.45, 4.12, 9.12, 4.12, -1.82, -1.82, -1.82, -1.34, -1.34, -1.34, -1.80, -1.80, -1.80, -2.01, -2.01, -2.01, -1.43, -1.43, -1.43, 6.76, 2.76, 4.76, 21.61, 25.61, -2.25, -2.25, -2.25, -2.45, -0.45, -1.45, -5.19, -5.19, -5.19, -3.84, -2.84, -3.84, -3.73, -3.73, -0.56, 0.44, -0.56, 5.44, 0.44, 0.70, 2.70, 0.70, 4.70, 1.70, 13.70, 2.70, 5.70, 3.70, 4.70, -0.63, -1.63, -1.63, -0.63, 0.37, -2.33, -2.33, -2.33, -2.56, -1.56, -1.56, -2.30, -2.30, -2.30, 1.23, -1.77, -3.77, 2.67, -2.33, 1.67, -3.07, -2.07, -1.07, -2.44, -0.44, -1.44, -3.44, -3.44, -2.44, -2.25, -4.25, -4.25, -3.44, -2.44, -3.44, -4.79, -4.79, -5.79, -2.23, -2.23, -1.23, -2.24, -2.24, -1.24, -2.23, -2.23, -0.23, -1.21, -2.21, -2.21, 1.98, 3.98, 9.98, -2.13, -2.13, -2.13, -1.50, -1.50, -1.50, -2.14, -2.14, -2.14, -1.50, -1.50, -1.50, -2.17, -2.17, -2.17, -4.52, -2.52, -3.52, -2.36, -2.36, -1.36, -3.36, -3.36, -3.36, -3.75, -2.75, -2.75, -3.36, -3.36, -3.36, -3.36, -0.36, -3.36, -1.75, -0.75, 0.25, -2.36, -2.36, -2.36, -3.36, -2.36, -3.36, -1.63, -1.63, -2.63, -1.37, -2.37, -2.37, -0.59, -0.59, 0.41, -2.28, -2.28, -2.28, 0.75, -2.25, -2.25, 1.99, -1.01, 0.99, -0.03, 1.97, 5.97, 0.97, 2.97, -1.97, -0.97, -1.97, 0.03, -1.97, -2.23, -2.23, -2.23, -2.23, -2.23, -1.56, -1.56, -1.56, -1.56, -1.56, -1.99, -0.99, -0.99, 7.19, 7.19, 2.19, 1.19, -0.81, -2.01, -2.01, -2.01, -1.01, -2.01, -1.59, -1.59, -1.59, -0.59, -1.59, -2.53, -0.53, -1.53, -1.53, -2.53, -2.90, 1.10, 4.10, -0.36, 0.64, -1.36, -2.23, -1.23, -0.23, -2.51, -0.51, -2.51, -1.17, -2.17, -3.17, -3.64, -1.64, -3.64, -2.58, -2.58, 0.42, -3.10, -3.10, -3.10, -2.10, -2.10, -2.10, -1.45, -1.45, -2.45, -1.78, -2.78, -2.78, -1.70, -1.70, -2.46, -2.46, -2.46, -0.33, -2.33, -2.33, -2.30, -2.30, -0.30, 0.57, 1.57, 9.57, -2.30, -2.30, -1.30, -2.30, -0.30, 0.70, -2.46, -2.46, -1.46, -2.46, -2.46, -2.46, -2.30, -0.30, -2.30, 1.01, 0.01, 0.01, -2.46, -1.46, -2.46, 7.68, 0.68, 2.68, -2.49, -0.49, -2.49, -2.12, -3.12, 6.88, -2.44, -0.44, 0.56, -4.32, -4.32, -3.32, 3.68, 8.68, -3.32, -1.18, -1.18, -0.18, -2.46, -2.46, -2.46, -1.46, 1.54, -0.82, -1.82, -1.82, -0.82, 0.18, -0.31, -2.31, -1.31, 0.69, 5.69, -3.17, -2.17, -1.17, -2.14, 18.86, -2.14, 1.03, -0.97, -1.97, -0.23, 0.77, -2.23, -2.26, -0.26, -1.26, -1.53, -4.53, -0.53, -1.37, 1.63, -2.37, -2.26, -2.26, -2.26, -0.87, -1.87, -1.87, -2.26, -2.26, -2.26, 2.21, -2.79, 0.21, -1.38, -2.38, -2.38, -2.26, -2.26, -2.26, -1.82, -1.82, -0.82, 0.18, -1.82, -0.61, 1.39, 1.39, 3.39, -0.61, -1.33, -2.33, -1.33, -1.33, -1.33, -2.33, -1.33, -0.33, 0.67, -0.33, -1.57, -0.57, -1.57, -1.76, -1.76, -1.76, -2.25, -2.25, -2.25, -0.98, -1.98, -1.98, -2.23, -2.23, -2.23, -2.25, -2.25, -2.25, -2.25, -2.25, -2.25, -1.98, -1.98, -1.98, -1.24, -2.24, -1.24, -2.25, -2.25, -2.25, -1.79, -1.79, -1.79, -2.01, -2.01, -2.01, -2.28, -2.28, -2.28, 0.72, -2.28, -2.28, 2.72, -2.28, -2.28, -2.24, -3.24, -2.24, -1.28, -2.28, -1.28, -0.85, -2.85, 4.15, -0.78, -1.78, -1.78, 2.24, 1.24, 1.24, -2.01, -2.01, -1.01, -2.51, -2.51, -2.51, -2.01, -2.01, -2.01, -0.85, -2.85, -2.85, -3.70, -3.70, -3.70, -1.68, -1.68, -2.68, -3.28, -3.28, -3.28, -5.44, -1.44, -5.44, -2.33, -2.33, -2.33, -0.90, -1.90, -2.90, 2.10, 1.10, -0.24, 4.76, -1.24, 1.51, 2.51, 0.51, 0.51, -2.49, -1.15, 0.85, -1.15, -1.15, -1.15, -2.15, -2.15, 1.85, 2.85, 2.08, -1.92, 1.08, 10.15, 4.15, 0.15, -1.23, -1.23, -2.23, 3.18, 6.18, 1.18, 17.15, 4.15, 1.15, -0.64, -2.64, -2.64, -0.56, -0.56, -1.56, -2.33, -1.33, 6.67, -2.18, -2.18, -2.18, 0.28, -1.72, 0.28, -2.72, -0.72, -1.01, -1.01, -0.01, 0.24, -0.76, 4.24, -1.63, -0.63, -1.63, 0.67, -1.33, -1.33, -1.33, 0.67, -0.33, -1.03, -2.03, -2.03, 0.93, -5.07, -3.07, 3.84, -1.16, 5.84, 1.27, -2.73, 5.27, 9.03, 1.03, 0.03, 0.79, -1.21, 1.79, 14.77, 7.77, 8.77, -1.99, -0.99, -1.99, -1.80, -1.80, 1.20, -2.33, -0.33, -1.33, -2.05, -1.05, -2.05, -2.85, 0.15, -2.85, -1.55, -2.55, -0.55, 1.77, -2.23, -2.23, -2.24, 5.76, 0.76, 3.76, 6.76, 1.21, 1.21, 3.21, 8.21, 5.21, -4.36, -3.00, 3.28, -1.90, 1.10, 0.10, -2.52, 0.48, -2.52, -2.52, -2.52, -2.52, -2.39, -2.39, -1.39, -2.39, -2.39, -2.39, -0.50, 5.50, 0.50, -2.35, -2.35, -2.35, -2.26, -2.26, -2.26, -3.02, -3.02, -3.02, -2.39, -1.30, -0.30, 0.70, 0.70, -2.30, -1.17, -2.17, -2.17, -3.17, 2.83, -2.41, -2.71, -1.71, -2.71, -3.45, -3.45, -3.45, -3.45, -2.45, -3.45, -2.38, -1.38, -2.38, -3.80, -2.80, -3.80, -2.33, -2.33, -0.33, 3.44, 0.44, -1.56, -1.33, -2.33, -1.33, 2.97, -0.03, 0.97, 0.95, -2.05, 3.95, 0.34, -0.66, -2.63, 2.37, 4.37, -2.91, -2.91, -2.91, -2.23, -3.23, -3.23, 7.20, 16.20, 11.20, -1.98, -1.98, -1.98, -3.28, 4.72, -3.28, -2.12, -2.12, -2.12, -2.91, -2.91, -2.91, -2.70, -1.70, -0.70, -0.85, -0.85, 4.15, 2.55, -2.45, -1.45, 1.97, -0.03, -1.03, 1.62, 0.62, -3.38, 0.07, -0.93, -1.93, -1.27, -2.27, -2.27, -2.27, -2.27, -3.99, -3.99, -3.99, -3.99, -3.99, -1.41, -1.41, -1.41, -2.41, -2.41, 1.59, 0.59, 0.59, 1.59, 0.59, -3.40, -2.40, -4.40, -5.43, 3.57, 7.57, -1.86, -1.86, -1.77, -1.77, -1.77, -0.77, -1.77, -2.25, -2.25, -1.34, -1.34, -1.34, -1.34, -1.34, 4.63, 1.63, -1.37, 1.51, -1.49, -1.49, 4.63, -2.37, -2.37, -1.49, -0.49, -1.49, -5.17, 18.83, 3.83, 4.55, 10.55, 1.55, 19.52, 33.52, 16.52, -1.41, -1.41, -1.41, -1.34, -1.41, -1.41, 2.59, -1.42, -1.42, -1.42, -3.24, -2.24, -3.24, -2.88, -2.88, -2.88, -2.23, -2.23, -2.24, -1.24, 0.23, -1.77, 0.97, -3.03, -2.68, -1.68, -0.68, -2.71, 1.29, 1.29, -1.78, -1.78, -1.78, -2.27, -2.27, -2.27, 3.99, -1.01, -0.01, -2.43, -2.43, -2.43, -2.27, -2.27, -1.78, -1.78, -1.78, -1.33, -2.33, -2.33, -2.33, 1.67, -1.33, -3.37, 4.63, 0.63, 2.12, 1.12, 1.12, 3.44, 2.44, -0.56, -1.56, -0.56, 8.23, -1.77, -1.77, -0.77, -1.77, 2.69, 1.69, 3.69, 6.16, 4.16, 6.16, -0.97, -1.97, -1.97, -1.97, -1.97, 3.51, -2.49, -2.49, -2.49, -2.49, -0.14, -2.14, -1.14, -3.14, -2.14, -0.26, -2.26, -1.26, -2.26, -2.26, -2.22, -4.22, -0.22, -1.99, -1.99, -1.99, -1.23, -1.23, -2.23, 4.45, 2.45, 7.45, -1.85, 1.15, -2.85, -2.23, -1.23, -1.23, -3.88, -3.88, -3.88, 5.12, -0.88, 1.51, -3.49, -3.49, 10.51, 3.51, -3.20, -8.20, -6.20, -1.55, -3.55, -3.55, 0.49, -2.51, -3.51, -2.52, -1.52, -0.52, 0.40, -4.60, -4.60, -3.18, -0.18, 1.18, 12.18, -2.58, -2.58, -1.58, -2.21, -2.21, -2.21, -1.18, -2.18, -2.18, -2.40, -0.40, -3.40, -2.40, -3.40, -2.61, -3.61, -1.61, -2.61, -2.61, 7.18, 1.18, -2.82, 1.18, 3.18, 10.38, 0.38, -2.62, -1.45, 3.55, 3.55, -1.75, -1.75, -1.75, -1.32, -2.32, -2.32, 1.44, -0.56, 0.44, -4.10, -3.10, -3.10, -1.63, -1.63, 2.37, -1.05, -0.05, 2.95, -0.10, -2.10, -2.10, -3.10, -0.56, -2.56, -0.56, -1.56, -2.56, -3.56, -0.56, -1.56, -2.56, -2.01, -2.01, -2.01, -1.80, -1.80, -1.80, -2.26, -2.26, -1.26, 3.34, -1.26, -2.26, -1.26, -1.58, -0.58, -1.58, -0.99, 0.01, 0.01, -1.21, 4.79, -2.21, -0.61, -0.61, -1.61, 16.75, 20.75, 13.75, -1.81, -1.81, -1.81, 6.69, 1.69, 2.69, -3.49, -2.49, -2.49, -3.22, -3.22, -3.22, -3.22, -3.22, -2.30, -2.30, -2.30, -2.30, -2.30, -3.22, -3.22, -3.22, -3.22, -3.22, -0.83, -2.83, -2.83, -2.83, -2.83, 1.76, -2.24, -3.24, -3.24, -2.24, -3.05, -3.05, -3.05, -3.05, -3.05, -1.29, -1.29, -1.29, -2.42, -2.42, -2.42, -0.80, 0.20, 0.20, -1.42, -2.42, -2.42, -4.83, -4.83, -4.83, -2.05, -2.05, -2.05, 1.45, -0.55, 3.45, 5.12, 0.12, 0.12, 0.14, 2.14, 8.14, 2.12, 7.12, 2.12, -2.39, -2.39, -0.39, -1.23, 0.77, -0.23, -1.88, 1.12, -1.88, 0.15, 0.15, -2.85, -0.02, 3.98, 0.98, -1.80, -0.80, -1.80, -1.80, -1.80, -1.02, -2.02, -2.02, -1.02, 0.98, -0.72, 3.28, 3.28, -1.72, 5.28, 2.28, 2.52, 1.52, 0.52, 20.56, 8.56, 5.56, -0.43, -2.43, -0.43, -2.43, -2.43, -2.30, -1.30, -2.30, -2.30, -2.30, -1.33, -2.33, -2.33, -2.33, -2.33, 3.95, 5.95, 2.95, 6.95, 0.95, -1.33, -1.33, -2.33, -2.33, -2.33, -2.01, -2.01, -2.01, 9.41, -1.59, -1.59, -0.55, -3.55, -1.55, -2.28, -2.28, -2.28, -1.78, -1.78, -1.78, -2.28, -2.28, -2.28, -1.78, -1.78, -1.78, -2.05, -2.05, -2.05, -2.60, -2.60, 4.40, -1.82, -1.82, -2.33, -2.33, -2.33, -1.82, -1.82, 1.18, -0.82, -1.82, -2.33, -2.33, -2.33, -2.33, -2.33, -1.33, 4.18, 1.18, 4.18, -2.90, -2.90, 1.10, -1.82, -0.82, 1.18, -2.02, -3.02, 3.98, 3.48, 4.48, 4.48, 0.40, 0.40, 4.40, -0.01, -0.01, -4.01, -3.29, -1.29, -3.29, -3.81, -3.81, -0.81, -1.72, 5.28, 1.28, -1.07, -3.07, -3.07, -3.61, -3.61, -1.61, -1.61, -1.61, -3.61, -2.25, -2.25, -2.25, -1.25, -1.25, -2.25, -3.69, -1.69, -3.69, -1.37, -1.78, -2.37, -2.51, -1.60, -1.62, -1.62, 1.38, -1.66, -1.66, -0.66, 13.77, 15.77, 16.77, -1.66, -0.66, 3.34, 0.34, 2.34, -0.66, -4.48, -2.48, -3.48, -2.12, -2.12, -2.44, -4.44, -4.44, -3.17, 1.83, -3.17, 3.67, 1.67, 5.67, 3.67, 8.67, 3.70, 6.70, 6.70, 0.70, 0.70, -1.88, -2.88, -1.88, 0.12, -2.88, -0.64, -1.64, -0.64, 0.36, -2.64, -4.83, -2.83, -2.83, -3.83, 0.18, -1.82, -1.82, -1.82, -1.82, -0.60, -2.60, -1.60, -1.60, -0.60, -2.05, -2.05, -2.05, -2.05, -2.05, 1.41, 1.41, -0.59, 4.41, 4.41, -1.59, -1.59, -1.59, -1.59, -0.59, -0.50, -0.50, -0.50, -1.50, 0.50, 3.34, 0.34, -0.66, -2.66, -2.66, -1.40, -3.40, -3.40, -1.02, -3.02, -2.02, -2.02, -1.02, -1.02, -0.86, -2.86, -2.86, -3.86, -3.86, -3.86, -1.26, -0.26, -1.26, -0.26, 0.74, 1.23, -0.77, -0.77, 1.23, -0.77, 0.23, -1.77, 0.23, -0.77, 0.23, -0.83, -2.83, -1.83, -0.83, -0.83, -2.36, -2.36, 0.64, -0.59, -0.59, 2.41, 5.29, -1.71, -1.71, 1.61, -1.39, -1.39, -1.59, -1.59, -1.59, 2.03, 6.03, -1.97, -1.97, -1.97, 0.37, -4.63, -4.63, -4.63, -4.63, -2.53, -3.53, -3.53, -1.53, -3.53, -1.31, 0.69, 1.69, 1.79, -1.21, 0.79, 11.15, 11.15, 15.15, 12.39, -0.61, -1.61, -1.82, -1.82, 1.18, 1.68, -1.32, 3.68, -0.61, 0.39, 1.39, 1.61, 1.61, -2.39, -1.00, -3.00, 0.00, -2.55, -0.55, -2.55, -1.01, -2.01, -2.01, 12.04, 5.04, 6.04, -2.74, -1.74, 1.26, 1.39, 0.39, 0.39, -2.88, 0.12, -1.88, -0.97, -2.97, -1.97, 1.12, 0.12, -1.88, -2.18, -0.18, 0.82, 0.30, -3.70, -1.70, -1.04, -2.04, -1.04, -3.74, 0.26, -0.74, -3.30, 5.70, 4.70, -2.82, 3.18, 0.18, -1.85, -2.85, -0.85, -2.26, -2.26, 1.42, 2.42, 0.42, -1.99, -1.99, -1.99, -1.99, -1.99, -1.99, -1.99, -3.74, -3.74, -3.74, -3.74, -3.74, -3.74, -2.23, -2.23, -0.23, 1.18, -2.82, -2.82, 2.18, 1.18, 0.18, -1.99, -1.99, -1.99, -3.46, 11.54, 11.54, 12.54, 6.54, -1.85, -2.85, -0.85, -2.85, -1.85, -3.44, -2.44, 4.56, -3.44, -3.44, -3.44, -0.44, 3.56, 1.56, 0.56, -3.44, 1.56, -3.44, -1.44, -2.44, -1.69, -1.69, -2.69, -0.69, -0.69, -2.44, -3.44, -3.44, -3.44, -2.44, -3.44, -3.44, -3.44, -0.44, -2.44, -2.23, 1.77, -2.23, -0.75, 1.25, 2.25, 4.25, 3.25, 0.25, -3.03, -0.03, 1.97, -5.44, -5.44, -1.44, -1.44, 0.56, -0.44, -1.58, -1.58, -1.58, -1.58, -1.58, -1.58, -1.58, -1.58, -1.58, -1.58, -2.94, -2.94, -2.94, -2.94, -2.94, -2.26, -2.26, -2.26, -2.26, -2.26, -2.90, -2.90, -2.90, -1.90, 1.10, -2.42, -2.42, -2.42, -1.63, -1.63, -3.63, -1.00, -2.00, -3.00, -3.00, -3.00, -3.00, -3.00, -3.00, -3.00, -2.85, -2.85, -2.85, -2.85, -1.85, -2.85, -1.85, -1.85, -1.85, -2.85, -2.74, -1.74, -2.74, 0.77, -0.23, 4.77, 8.12, 4.12, -2.88, -0.88, 0.12, 1.74, 2.74, 1.74, 3.74, -2.26, -1.63, -1.63, -1.63, -1.63, -1.63, -1.29, -1.29, -1.29, -1.29, -1.29, -1.84, -1.84, 0.16, -1.84, -1.84, -2.70, -2.70, -2.70, -0.33, -2.33, -2.33, -2.33, -1.33, 1.74, 4.74, 10.74, 4.74, 6.74, -2.05, -3.05, -3.05, -3.05, -3.05, -3.46, -0.46, -3.46, 2.14, 5.14, 9.14, -2.26, -1.26, -2.26, -3.40, -3.40, -3.40, -2.71, -2.71, -1.71, -1.30, -2.30, -2.30, -2.79, -3.79, -7.79, -3.33, -2.33, -2.33, -0.33, -1.33, 0.67, -1.76, -1.76, 0.24, 0.66, 0.66, -1.34, 0.00, -3.00, -3.00, -0.60, -2.60, -2.60, -1.33, -0.33, -2.33, 1.37, -1.63, 4.37, 1.32, -0.68, -1.68, -2.31, -1.31, -2.31, -2.35, -2.35, -1.35, -0.05, -2.05, -1.05, -1.82, -0.82, -1.82, -2.30, -2.30, -1.30, -1.35, -0.35, -0.35, -2.35, -1.35, 3.65, -1.52, -1.52, -1.52, -2.33, -2.33, -2.33, -2.33, -2.33, -1.26, -2.26, -2.26, -2.26, -2.26, -2.94, -2.94, -2.94, -2.94, 1.06, -1.82, -1.82, -0.82, -1.82, -1.82, -1.82, 0.70, -0.30, -0.30, -1.30, -0.30, -2.26, -2.26, -2.26, -2.26, -2.26, 2.33, -1.67, -1.67, -1.67, -0.67, -3.71, -3.71, -3.71, -3.71, -3.71, -5.24, -5.24, -5.24, -1.24, 3.76, -2.26, -2.26, -2.26, -2.22, -2.22, 9.78, -2.01, -2.01, -0.01, 0.12, 6.12, 3.12, 0.12, 1.12, 1.12, -2.88, 2.12, -2.33, -1.33, -2.33, -1.99, -1.99, -1.99, -1.99, -1.99, 4.53, -1.47, -1.47, -1.47, -2.17, -2.17, -2.17, -2.00, 1.00, -1.00, 1.78, -0.22, 0.78, -2.39, -2.39, -2.39, -2.39, -0.17, -2.17, -2.17, 0.12, -1.88, -2.88, -2.37, -2.37, -2.37, 4.00, 0.00, 2.00, 1.00, 1.46, 4.46, -2.54, 9.74, 0.74, -2.26, -2.26, -2.26, -2.26, 0.65, -1.35, -2.35, 2.53, -0.47, -1.47, 2.53, -0.26, -2.26, -0.26, 5.65, -0.35, 2.65, -1.35, -0.98, 3.02, 0.02, -1.71, -1.71, 0.29, -1.71, 1.29, -3.71, -0.71, -2.71, 11.64, 1.64, -1.36, -1.92, -1.92, -1.92, -2.35, -1.35, -2.35, -2.36, -2.36, -2.36, -2.36, -2.36, -2.36, -2.36, -2.36, -2.36, -2.36, -2.36, -2.36, 0.67, 0.67, -1.33, -3.00, -3.00, -3.00, 1.74, -0.26, 1.74, 17.66, 18.66, 25.66, -3.56, 4.44, 4.44, -1.96, -1.96, -2.96, -4.18, 1.82, 0.82, -1.62, -1.62, -1.62, -2.88, -2.88, -2.88, 0.00, -3.00, -3.00, -1.40, -3.40, -2.40, -2.54, -2.54, -0.54, -1.01, -2.01, -2.01, -1.54, -1.54, -0.54, -5.28, -5.28, -5.28, -2.35, -2.35, -2.35, -1.26, -2.26, -1.26, -1.30, -2.30, -0.30, -3.46, -2.46, -1.46, -0.26, -1.26, -2.26, -2.39, -2.39, -2.39, 10.12, 8.12, 9.12, 7.63, 7.63, 3.63, -2.71, -3.71, -1.71, 8.67, 4.67, 1.67, 2.12, -0.88, -0.88, -0.83, -2.83, -2.83, 5.04, 2.04, 0.04, -1.78, -1.78, 0.22, -2.28, -2.28, -2.28, -2.32, -0.32, -2.32, -0.58, 2.42, 1.42, 5.67, 4.67, -2.33, -1.29, 1.71, -1.50, -2.50, -3.50, -1.78, -1.78, 0.22, -2.37, -2.37, -2.37, -2.28, -2.28, -1.28, 2.37, -0.63, -1.63, -2.28, -2.28, -1.28, 1.40, -3.60, 2.40, 5.67, 1.67, -0.33, -0.23, -2.23, -2.23, 8.39, 5.39, -2.61, 17.66, 12.66, 9.66, -2.37, -2.37, -2.37, -1.37, -2.37, -2.37, 22.65, 13.65, 0.00, 5.00, -2.36, -2.36, -1.87, -1.87, 3.00, -2.35, -2.35, -2.37, -0.37, -2.37, 6.00, 0.00, -1.00, -2.00, -3.00, -3.00, -3.00, -3.00, -0.35, -1.35, 11.63, 11.63, 11.63, -1.26, -1.26, -2.26, -2.35, -1.35, 2.68, -2.32, 5.53, 1.53, 12.00, 3.00, -1.92, -1.92, 13.63, -2.37, 0.65, -2.35, -2.35, 6.64, -2.36, -0.35, -2.35, 8.38, -1.62, -2.26, -2.26, 4.26, 6.26, 3.39, 3.29, -2.71, -2.58, 18.58, -2.36, -0.54, 2.58, 5.58, 5.65, 8.00, -3.59, 3.00, 17.00, -0.44, -1.44, 1.11, -2.35, 2.58, -2.42, -1.36, -2.42, -1.63, -3.63, 5.56, 5.58, 3.58 diff --git a/statsmodels/discrete/tests/results/predict_prob_poisson.csv b/statsmodels/discrete/tests/results/predict_prob_poisson.csv new file mode 100644 index 0000000..414e893 --- /dev/null +++ b/statsmodels/discrete/tests/results/predict_prob_poisson.csv @@ -0,0 +1,100 @@ +8.379031744168380369e-02,2.077528821676430104e-01,2.575551768198139913e-01,2.128640155379669940e-01,1.319457727575999995e-01,6.543026788102700164e-02,2.703838014606119861e-02,9.577140339289870116e-03,2.968240497770269909e-03,8.177297504938440490e-04,2.027510071406040098e-04,4.570077413795890238e-05,9.442685657028509634e-06,1.800965535203219948e-06,3.189558616990250168e-07,5.272208179929220155e-08,8.170070228657619958e-09,1.191598890111820052e-09,1.641386309215599936e-10,2.141955418576350105e-11,2.655422638740709846e-12,3.135216820678259815e-13,3.533443256732679778e-14,3.809109935659109947e-15,3.935188017484579855e-16,3.902821602617689926e-17,3.721847497448600064e-18,3.417810908236739783e-19,3.026517726331670134e-20,2.587607765203720068e-21,2.138604187031469818e-22,1.710495518464319969e-23,1.325333525794619979e-24,9.957824455721199703e-26,7.261707817238370376e-27,5.144272289458259657e-28,3.543028688958180279e-29,2.374248468976859858e-30,1.549158276945170062e-31,9.848824676541599504e-33,6.104887100885410293e-34,3.691875116075040039e-35,2.179470189583640032e-36,1.256711818510240074e-37,7.081679122611000192e-39,3.901907346362489676e-40,2.103160141701780022e-41,1.109501021423509921e-42,5.731122491398079942e-44,2.899992217690780004e-45,1.438070077508169916e-46,6.991383020801489966e-48,3.333596055507870012e-49,1.559517762776100056e-50,7.160606157101919305e-52,3.228050496929589851e-53,1.429241159437210023e-54,6.217043135469849725e-56,2.657719291379690094e-57,1.116889784888329966e-58,4.615431292436830269e-60,1.876012280410359839e-61,7.502348068157760110e-63,2.952635802013810101e-64,1.143887012748099918e-65,4.363379574310999768e-67,1.639201264776670044e-68,6.066115841001130216e-70,2.211846624669259971e-71,7.948023445334989658e-73,2.815232848445230102e-74,9.831260284055620294e-76,3.385555358957499838e-77,1.149900548613980005e-78,3.852847177798599975e-80,1.273719335246129910e-81,4.155405123946290228e-83,1.338060860950400074e-84 +8.379031744168380369e-02,2.077528821676430104e-01,2.575551768198139913e-01,2.128640155379669940e-01,1.319457727575999995e-01,6.543026788102700164e-02,2.703838014606119861e-02,9.577140339289870116e-03,2.968240497770269909e-03,8.177297504938440490e-04,2.027510071406040098e-04,4.570077413795890238e-05,9.442685657028509634e-06,1.800965535203219948e-06,3.189558616990250168e-07,5.272208179929220155e-08,8.170070228657619958e-09,1.191598890111820052e-09,1.641386309215599936e-10,2.141955418576350105e-11,2.655422638740709846e-12,3.135216820678259815e-13,3.533443256732679778e-14,3.809109935659109947e-15,3.935188017484579855e-16,3.902821602617689926e-17,3.721847497448600064e-18,3.417810908236739783e-19,3.026517726331670134e-20,2.587607765203720068e-21,2.138604187031469818e-22,1.710495518464319969e-23,1.325333525794619979e-24,9.957824455721199703e-26,7.261707817238370376e-27,5.144272289458259657e-28,3.543028688958180279e-29,2.374248468976859858e-30,1.549158276945170062e-31,9.848824676541599504e-33,6.104887100885410293e-34,3.691875116075040039e-35,2.179470189583640032e-36,1.256711818510240074e-37,7.081679122611000192e-39,3.901907346362489676e-40,2.103160141701780022e-41,1.109501021423509921e-42,5.731122491398079942e-44,2.899992217690780004e-45,1.438070077508169916e-46,6.991383020801489966e-48,3.333596055507870012e-49,1.559517762776100056e-50,7.160606157101919305e-52,3.228050496929589851e-53,1.429241159437210023e-54,6.217043135469849725e-56,2.657719291379690094e-57,1.116889784888329966e-58,4.615431292436830269e-60,1.876012280410359839e-61,7.502348068157760110e-63,2.952635802013810101e-64,1.143887012748099918e-65,4.363379574310999768e-67,1.639201264776670044e-68,6.066115841001130216e-70,2.211846624669259971e-71,7.948023445334989658e-73,2.815232848445230102e-74,9.831260284055620294e-76,3.385555358957499838e-77,1.149900548613980005e-78,3.852847177798599975e-80,1.273719335246129910e-81,4.155405123946290228e-83,1.338060860950400074e-84 +8.379031744168380369e-02,2.077528821676430104e-01,2.575551768198139913e-01,2.128640155379669940e-01,1.319457727575999995e-01,6.543026788102700164e-02,2.703838014606119861e-02,9.577140339289870116e-03,2.968240497770269909e-03,8.177297504938440490e-04,2.027510071406040098e-04,4.570077413795890238e-05,9.442685657028509634e-06,1.800965535203219948e-06,3.189558616990250168e-07,5.272208179929220155e-08,8.170070228657619958e-09,1.191598890111820052e-09,1.641386309215599936e-10,2.141955418576350105e-11,2.655422638740709846e-12,3.135216820678259815e-13,3.533443256732679778e-14,3.809109935659109947e-15,3.935188017484579855e-16,3.902821602617689926e-17,3.721847497448600064e-18,3.417810908236739783e-19,3.026517726331670134e-20,2.587607765203720068e-21,2.138604187031469818e-22,1.710495518464319969e-23,1.325333525794619979e-24,9.957824455721199703e-26,7.261707817238370376e-27,5.144272289458259657e-28,3.543028688958180279e-29,2.374248468976859858e-30,1.549158276945170062e-31,9.848824676541599504e-33,6.104887100885410293e-34,3.691875116075040039e-35,2.179470189583640032e-36,1.256711818510240074e-37,7.081679122611000192e-39,3.901907346362489676e-40,2.103160141701780022e-41,1.109501021423509921e-42,5.731122491398079942e-44,2.899992217690780004e-45,1.438070077508169916e-46,6.991383020801489966e-48,3.333596055507870012e-49,1.559517762776100056e-50,7.160606157101919305e-52,3.228050496929589851e-53,1.429241159437210023e-54,6.217043135469849725e-56,2.657719291379690094e-57,1.116889784888329966e-58,4.615431292436830269e-60,1.876012280410359839e-61,7.502348068157760110e-63,2.952635802013810101e-64,1.143887012748099918e-65,4.363379574310999768e-67,1.639201264776670044e-68,6.066115841001130216e-70,2.211846624669259971e-71,7.948023445334989658e-73,2.815232848445230102e-74,9.831260284055620294e-76,3.385555358957499838e-77,1.149900548613980005e-78,3.852847177798599975e-80,1.273719335246129910e-81,4.155405123946290228e-83,1.338060860950400074e-84 +8.379031744168380369e-02,2.077528821676430104e-01,2.575551768198139913e-01,2.128640155379669940e-01,1.319457727575999995e-01,6.543026788102700164e-02,2.703838014606119861e-02,9.577140339289870116e-03,2.968240497770269909e-03,8.177297504938440490e-04,2.027510071406040098e-04,4.570077413795890238e-05,9.442685657028509634e-06,1.800965535203219948e-06,3.189558616990250168e-07,5.272208179929220155e-08,8.170070228657619958e-09,1.191598890111820052e-09,1.641386309215599936e-10,2.141955418576350105e-11,2.655422638740709846e-12,3.135216820678259815e-13,3.533443256732679778e-14,3.809109935659109947e-15,3.935188017484579855e-16,3.902821602617689926e-17,3.721847497448600064e-18,3.417810908236739783e-19,3.026517726331670134e-20,2.587607765203720068e-21,2.138604187031469818e-22,1.710495518464319969e-23,1.325333525794619979e-24,9.957824455721199703e-26,7.261707817238370376e-27,5.144272289458259657e-28,3.543028688958180279e-29,2.374248468976859858e-30,1.549158276945170062e-31,9.848824676541599504e-33,6.104887100885410293e-34,3.691875116075040039e-35,2.179470189583640032e-36,1.256711818510240074e-37,7.081679122611000192e-39,3.901907346362489676e-40,2.103160141701780022e-41,1.109501021423509921e-42,5.731122491398079942e-44,2.899992217690780004e-45,1.438070077508169916e-46,6.991383020801489966e-48,3.333596055507870012e-49,1.559517762776100056e-50,7.160606157101919305e-52,3.228050496929589851e-53,1.429241159437210023e-54,6.217043135469849725e-56,2.657719291379690094e-57,1.116889784888329966e-58,4.615431292436830269e-60,1.876012280410359839e-61,7.502348068157760110e-63,2.952635802013810101e-64,1.143887012748099918e-65,4.363379574310999768e-67,1.639201264776670044e-68,6.066115841001130216e-70,2.211846624669259971e-71,7.948023445334989658e-73,2.815232848445230102e-74,9.831260284055620294e-76,3.385555358957499838e-77,1.149900548613980005e-78,3.852847177798599975e-80,1.273719335246129910e-81,4.155405123946290228e-83,1.338060860950400074e-84 +8.379031744168380369e-02,2.077528821676430104e-01,2.575551768198139913e-01,2.128640155379669940e-01,1.319457727575999995e-01,6.543026788102700164e-02,2.703838014606119861e-02,9.577140339289870116e-03,2.968240497770269909e-03,8.177297504938440490e-04,2.027510071406040098e-04,4.570077413795890238e-05,9.442685657028509634e-06,1.800965535203219948e-06,3.189558616990250168e-07,5.272208179929220155e-08,8.170070228657619958e-09,1.191598890111820052e-09,1.641386309215599936e-10,2.141955418576350105e-11,2.655422638740709846e-12,3.135216820678259815e-13,3.533443256732679778e-14,3.809109935659109947e-15,3.935188017484579855e-16,3.902821602617689926e-17,3.721847497448600064e-18,3.417810908236739783e-19,3.026517726331670134e-20,2.587607765203720068e-21,2.138604187031469818e-22,1.710495518464319969e-23,1.325333525794619979e-24,9.957824455721199703e-26,7.261707817238370376e-27,5.144272289458259657e-28,3.543028688958180279e-29,2.374248468976859858e-30,1.549158276945170062e-31,9.848824676541599504e-33,6.104887100885410293e-34,3.691875116075040039e-35,2.179470189583640032e-36,1.256711818510240074e-37,7.081679122611000192e-39,3.901907346362489676e-40,2.103160141701780022e-41,1.109501021423509921e-42,5.731122491398079942e-44,2.899992217690780004e-45,1.438070077508169916e-46,6.991383020801489966e-48,3.333596055507870012e-49,1.559517762776100056e-50,7.160606157101919305e-52,3.228050496929589851e-53,1.429241159437210023e-54,6.217043135469849725e-56,2.657719291379690094e-57,1.116889784888329966e-58,4.615431292436830269e-60,1.876012280410359839e-61,7.502348068157760110e-63,2.952635802013810101e-64,1.143887012748099918e-65,4.363379574310999768e-67,1.639201264776670044e-68,6.066115841001130216e-70,2.211846624669259971e-71,7.948023445334989658e-73,2.815232848445230102e-74,9.831260284055620294e-76,3.385555358957499838e-77,1.149900548613980005e-78,3.852847177798599975e-80,1.273719335246129910e-81,4.155405123946290228e-83,1.338060860950400074e-84 +8.118990566648350005e-02,2.038649590327049899e-01,2.559488225798209893e-01,2.142261233149189981e-01,1.344785398345409999e-01,6.753416398034839396e-02,2.826264640524410107e-02,1.013807109615929951e-02,3.182041892589550051e-03,8.877770850232339717e-04,2.229176614786369955e-04,5.088530016805790175e-05,1.064759790535810080e-05,2.056595292001469815e-06,3.688598192005929801e-07,6.174625717556630074e-08,9.690165672526020780e-09,1.431274152236029917e-09,1.996599098365659890e-10,2.638625876428110119e-11,3.312747759619069994e-12,3.961043589608649791e-13,4.520926935511439786e-14,4.935602774818350051e-15,5.163801097101870000e-16,5.186448194375870065e-17,5.008840976890909780e-18,4.658155980666439870e-19,4.177308436713959746e-20,3.616921579389179838e-21,3.027320385679749904e-22,2.452094702116890103e-23,1.924100746760600180e-24,1.464044966245399959e-25,1.081224918496190041e-26,7.756906368555340416e-28,5.410365385754000081e-29,3.671685033976540261e-30,2.426176378792029910e-31,1.562062154782019909e-32,9.805705973453359381e-34,6.005311747583009938e-35,3.590267555429679690e-36,2.096519500694529919e-37,1.196428575840440114e-38,6.675976680079130067e-40,3.644160754733979779e-41,1.946884628800419970e-42,1.018449563386959969e-43,5.218960306134329739e-45,2.620924658723030084e-46,1.290401645599650074e-47,6.231062566223719704e-49,2.952070941754059896e-50,1.372693500964289936e-51,6.266880817965340241e-53,2.809984704400430286e-54,1.237854636494539965e-55,5.358980806317969645e-57,2.280713521763420130e-58,9.544650591368130054e-60,3.928897935451919947e-61,1.591181075226090022e-62,6.341903112131939561e-64,2.488170726726440089e-65,9.611858463788089710e-67,3.656823330032089826e-68,1.370470601576910125e-69,5.060592395230560341e-71,1.841589436886780107e-72,6.605950615307930248e-74,2.336240354828889928e-75,8.147522574080980633e-77,2.802484761216629766e-78,9.509377483820990701e-80,3.183694385406879935e-81,1.051860936285279979e-82,3.430110800482530023e-84 +8.118990566648350005e-02,2.038649590327049899e-01,2.559488225798209893e-01,2.142261233149189981e-01,1.344785398345409999e-01,6.753416398034839396e-02,2.826264640524410107e-02,1.013807109615929951e-02,3.182041892589550051e-03,8.877770850232339717e-04,2.229176614786369955e-04,5.088530016805790175e-05,1.064759790535810080e-05,2.056595292001469815e-06,3.688598192005929801e-07,6.174625717556630074e-08,9.690165672526020780e-09,1.431274152236029917e-09,1.996599098365659890e-10,2.638625876428110119e-11,3.312747759619069994e-12,3.961043589608649791e-13,4.520926935511439786e-14,4.935602774818350051e-15,5.163801097101870000e-16,5.186448194375870065e-17,5.008840976890909780e-18,4.658155980666439870e-19,4.177308436713959746e-20,3.616921579389179838e-21,3.027320385679749904e-22,2.452094702116890103e-23,1.924100746760600180e-24,1.464044966245399959e-25,1.081224918496190041e-26,7.756906368555340416e-28,5.410365385754000081e-29,3.671685033976540261e-30,2.426176378792029910e-31,1.562062154782019909e-32,9.805705973453359381e-34,6.005311747583009938e-35,3.590267555429679690e-36,2.096519500694529919e-37,1.196428575840440114e-38,6.675976680079130067e-40,3.644160754733979779e-41,1.946884628800419970e-42,1.018449563386959969e-43,5.218960306134329739e-45,2.620924658723030084e-46,1.290401645599650074e-47,6.231062566223719704e-49,2.952070941754059896e-50,1.372693500964289936e-51,6.266880817965340241e-53,2.809984704400430286e-54,1.237854636494539965e-55,5.358980806317969645e-57,2.280713521763420130e-58,9.544650591368130054e-60,3.928897935451919947e-61,1.591181075226090022e-62,6.341903112131939561e-64,2.488170726726440089e-65,9.611858463788089710e-67,3.656823330032089826e-68,1.370470601576910125e-69,5.060592395230560341e-71,1.841589436886780107e-72,6.605950615307930248e-74,2.336240354828889928e-75,8.147522574080980633e-77,2.802484761216629766e-78,9.509377483820990701e-80,3.183694385406879935e-81,1.051860936285279979e-82,3.430110800482530023e-84 +8.118990566648350005e-02,2.038649590327049899e-01,2.559488225798209893e-01,2.142261233149189981e-01,1.344785398345409999e-01,6.753416398034839396e-02,2.826264640524410107e-02,1.013807109615929951e-02,3.182041892589550051e-03,8.877770850232339717e-04,2.229176614786369955e-04,5.088530016805790175e-05,1.064759790535810080e-05,2.056595292001469815e-06,3.688598192005929801e-07,6.174625717556630074e-08,9.690165672526020780e-09,1.431274152236029917e-09,1.996599098365659890e-10,2.638625876428110119e-11,3.312747759619069994e-12,3.961043589608649791e-13,4.520926935511439786e-14,4.935602774818350051e-15,5.163801097101870000e-16,5.186448194375870065e-17,5.008840976890909780e-18,4.658155980666439870e-19,4.177308436713959746e-20,3.616921579389179838e-21,3.027320385679749904e-22,2.452094702116890103e-23,1.924100746760600180e-24,1.464044966245399959e-25,1.081224918496190041e-26,7.756906368555340416e-28,5.410365385754000081e-29,3.671685033976540261e-30,2.426176378792029910e-31,1.562062154782019909e-32,9.805705973453359381e-34,6.005311747583009938e-35,3.590267555429679690e-36,2.096519500694529919e-37,1.196428575840440114e-38,6.675976680079130067e-40,3.644160754733979779e-41,1.946884628800419970e-42,1.018449563386959969e-43,5.218960306134329739e-45,2.620924658723030084e-46,1.290401645599650074e-47,6.231062566223719704e-49,2.952070941754059896e-50,1.372693500964289936e-51,6.266880817965340241e-53,2.809984704400430286e-54,1.237854636494539965e-55,5.358980806317969645e-57,2.280713521763420130e-58,9.544650591368130054e-60,3.928897935451919947e-61,1.591181075226090022e-62,6.341903112131939561e-64,2.488170726726440089e-65,9.611858463788089710e-67,3.656823330032089826e-68,1.370470601576910125e-69,5.060592395230560341e-71,1.841589436886780107e-72,6.605950615307930248e-74,2.336240354828889928e-75,8.147522574080980633e-77,2.802484761216629766e-78,9.509377483820990701e-80,3.183694385406879935e-81,1.051860936285279979e-82,3.430110800482530023e-84 +8.118990566648350005e-02,2.038649590327049899e-01,2.559488225798209893e-01,2.142261233149189981e-01,1.344785398345409999e-01,6.753416398034839396e-02,2.826264640524410107e-02,1.013807109615929951e-02,3.182041892589550051e-03,8.877770850232339717e-04,2.229176614786369955e-04,5.088530016805790175e-05,1.064759790535810080e-05,2.056595292001469815e-06,3.688598192005929801e-07,6.174625717556630074e-08,9.690165672526020780e-09,1.431274152236029917e-09,1.996599098365659890e-10,2.638625876428110119e-11,3.312747759619069994e-12,3.961043589608649791e-13,4.520926935511439786e-14,4.935602774818350051e-15,5.163801097101870000e-16,5.186448194375870065e-17,5.008840976890909780e-18,4.658155980666439870e-19,4.177308436713959746e-20,3.616921579389179838e-21,3.027320385679749904e-22,2.452094702116890103e-23,1.924100746760600180e-24,1.464044966245399959e-25,1.081224918496190041e-26,7.756906368555340416e-28,5.410365385754000081e-29,3.671685033976540261e-30,2.426176378792029910e-31,1.562062154782019909e-32,9.805705973453359381e-34,6.005311747583009938e-35,3.590267555429679690e-36,2.096519500694529919e-37,1.196428575840440114e-38,6.675976680079130067e-40,3.644160754733979779e-41,1.946884628800419970e-42,1.018449563386959969e-43,5.218960306134329739e-45,2.620924658723030084e-46,1.290401645599650074e-47,6.231062566223719704e-49,2.952070941754059896e-50,1.372693500964289936e-51,6.266880817965340241e-53,2.809984704400430286e-54,1.237854636494539965e-55,5.358980806317969645e-57,2.280713521763420130e-58,9.544650591368130054e-60,3.928897935451919947e-61,1.591181075226090022e-62,6.341903112131939561e-64,2.488170726726440089e-65,9.611858463788089710e-67,3.656823330032089826e-68,1.370470601576910125e-69,5.060592395230560341e-71,1.841589436886780107e-72,6.605950615307930248e-74,2.336240354828889928e-75,8.147522574080980633e-77,2.802484761216629766e-78,9.509377483820990701e-80,3.183694385406879935e-81,1.051860936285279979e-82,3.430110800482530023e-84 +8.118990566648350005e-02,2.038649590327049899e-01,2.559488225798209893e-01,2.142261233149189981e-01,1.344785398345409999e-01,6.753416398034839396e-02,2.826264640524410107e-02,1.013807109615929951e-02,3.182041892589550051e-03,8.877770850232339717e-04,2.229176614786369955e-04,5.088530016805790175e-05,1.064759790535810080e-05,2.056595292001469815e-06,3.688598192005929801e-07,6.174625717556630074e-08,9.690165672526020780e-09,1.431274152236029917e-09,1.996599098365659890e-10,2.638625876428110119e-11,3.312747759619069994e-12,3.961043589608649791e-13,4.520926935511439786e-14,4.935602774818350051e-15,5.163801097101870000e-16,5.186448194375870065e-17,5.008840976890909780e-18,4.658155980666439870e-19,4.177308436713959746e-20,3.616921579389179838e-21,3.027320385679749904e-22,2.452094702116890103e-23,1.924100746760600180e-24,1.464044966245399959e-25,1.081224918496190041e-26,7.756906368555340416e-28,5.410365385754000081e-29,3.671685033976540261e-30,2.426176378792029910e-31,1.562062154782019909e-32,9.805705973453359381e-34,6.005311747583009938e-35,3.590267555429679690e-36,2.096519500694529919e-37,1.196428575840440114e-38,6.675976680079130067e-40,3.644160754733979779e-41,1.946884628800419970e-42,1.018449563386959969e-43,5.218960306134329739e-45,2.620924658723030084e-46,1.290401645599650074e-47,6.231062566223719704e-49,2.952070941754059896e-50,1.372693500964289936e-51,6.266880817965340241e-53,2.809984704400430286e-54,1.237854636494539965e-55,5.358980806317969645e-57,2.280713521763420130e-58,9.544650591368130054e-60,3.928897935451919947e-61,1.591181075226090022e-62,6.341903112131939561e-64,2.488170726726440089e-65,9.611858463788089710e-67,3.656823330032089826e-68,1.370470601576910125e-69,5.060592395230560341e-71,1.841589436886780107e-72,6.605950615307930248e-74,2.336240354828889928e-75,8.147522574080980633e-77,2.802484761216629766e-78,9.509377483820990701e-80,3.183694385406879935e-81,1.051860936285279979e-82,3.430110800482530023e-84 +8.118990566648350005e-02,2.038649590327049899e-01,2.559488225798209893e-01,2.142261233149189981e-01,1.344785398345409999e-01,6.753416398034839396e-02,2.826264640524410107e-02,1.013807109615929951e-02,3.182041892589550051e-03,8.877770850232339717e-04,2.229176614786369955e-04,5.088530016805790175e-05,1.064759790535810080e-05,2.056595292001469815e-06,3.688598192005929801e-07,6.174625717556630074e-08,9.690165672526020780e-09,1.431274152236029917e-09,1.996599098365659890e-10,2.638625876428110119e-11,3.312747759619069994e-12,3.961043589608649791e-13,4.520926935511439786e-14,4.935602774818350051e-15,5.163801097101870000e-16,5.186448194375870065e-17,5.008840976890909780e-18,4.658155980666439870e-19,4.177308436713959746e-20,3.616921579389179838e-21,3.027320385679749904e-22,2.452094702116890103e-23,1.924100746760600180e-24,1.464044966245399959e-25,1.081224918496190041e-26,7.756906368555340416e-28,5.410365385754000081e-29,3.671685033976540261e-30,2.426176378792029910e-31,1.562062154782019909e-32,9.805705973453359381e-34,6.005311747583009938e-35,3.590267555429679690e-36,2.096519500694529919e-37,1.196428575840440114e-38,6.675976680079130067e-40,3.644160754733979779e-41,1.946884628800419970e-42,1.018449563386959969e-43,5.218960306134329739e-45,2.620924658723030084e-46,1.290401645599650074e-47,6.231062566223719704e-49,2.952070941754059896e-50,1.372693500964289936e-51,6.266880817965340241e-53,2.809984704400430286e-54,1.237854636494539965e-55,5.358980806317969645e-57,2.280713521763420130e-58,9.544650591368130054e-60,3.928897935451919947e-61,1.591181075226090022e-62,6.341903112131939561e-64,2.488170726726440089e-65,9.611858463788089710e-67,3.656823330032089826e-68,1.370470601576910125e-69,5.060592395230560341e-71,1.841589436886780107e-72,6.605950615307930248e-74,2.336240354828889928e-75,8.147522574080980633e-77,2.802484761216629766e-78,9.509377483820990701e-80,3.183694385406879935e-81,1.051860936285279979e-82,3.430110800482530023e-84 +8.118990566648350005e-02,2.038649590327049899e-01,2.559488225798209893e-01,2.142261233149189981e-01,1.344785398345409999e-01,6.753416398034839396e-02,2.826264640524410107e-02,1.013807109615929951e-02,3.182041892589550051e-03,8.877770850232339717e-04,2.229176614786369955e-04,5.088530016805790175e-05,1.064759790535810080e-05,2.056595292001469815e-06,3.688598192005929801e-07,6.174625717556630074e-08,9.690165672526020780e-09,1.431274152236029917e-09,1.996599098365659890e-10,2.638625876428110119e-11,3.312747759619069994e-12,3.961043589608649791e-13,4.520926935511439786e-14,4.935602774818350051e-15,5.163801097101870000e-16,5.186448194375870065e-17,5.008840976890909780e-18,4.658155980666439870e-19,4.177308436713959746e-20,3.616921579389179838e-21,3.027320385679749904e-22,2.452094702116890103e-23,1.924100746760600180e-24,1.464044966245399959e-25,1.081224918496190041e-26,7.756906368555340416e-28,5.410365385754000081e-29,3.671685033976540261e-30,2.426176378792029910e-31,1.562062154782019909e-32,9.805705973453359381e-34,6.005311747583009938e-35,3.590267555429679690e-36,2.096519500694529919e-37,1.196428575840440114e-38,6.675976680079130067e-40,3.644160754733979779e-41,1.946884628800419970e-42,1.018449563386959969e-43,5.218960306134329739e-45,2.620924658723030084e-46,1.290401645599650074e-47,6.231062566223719704e-49,2.952070941754059896e-50,1.372693500964289936e-51,6.266880817965340241e-53,2.809984704400430286e-54,1.237854636494539965e-55,5.358980806317969645e-57,2.280713521763420130e-58,9.544650591368130054e-60,3.928897935451919947e-61,1.591181075226090022e-62,6.341903112131939561e-64,2.488170726726440089e-65,9.611858463788089710e-67,3.656823330032089826e-68,1.370470601576910125e-69,5.060592395230560341e-71,1.841589436886780107e-72,6.605950615307930248e-74,2.336240354828889928e-75,8.147522574080980633e-77,2.802484761216629766e-78,9.509377483820990701e-80,3.183694385406879935e-81,1.051860936285279979e-82,3.430110800482530023e-84 +8.118990566648350005e-02,2.038649590327049899e-01,2.559488225798209893e-01,2.142261233149189981e-01,1.344785398345409999e-01,6.753416398034839396e-02,2.826264640524410107e-02,1.013807109615929951e-02,3.182041892589550051e-03,8.877770850232339717e-04,2.229176614786369955e-04,5.088530016805790175e-05,1.064759790535810080e-05,2.056595292001469815e-06,3.688598192005929801e-07,6.174625717556630074e-08,9.690165672526020780e-09,1.431274152236029917e-09,1.996599098365659890e-10,2.638625876428110119e-11,3.312747759619069994e-12,3.961043589608649791e-13,4.520926935511439786e-14,4.935602774818350051e-15,5.163801097101870000e-16,5.186448194375870065e-17,5.008840976890909780e-18,4.658155980666439870e-19,4.177308436713959746e-20,3.616921579389179838e-21,3.027320385679749904e-22,2.452094702116890103e-23,1.924100746760600180e-24,1.464044966245399959e-25,1.081224918496190041e-26,7.756906368555340416e-28,5.410365385754000081e-29,3.671685033976540261e-30,2.426176378792029910e-31,1.562062154782019909e-32,9.805705973453359381e-34,6.005311747583009938e-35,3.590267555429679690e-36,2.096519500694529919e-37,1.196428575840440114e-38,6.675976680079130067e-40,3.644160754733979779e-41,1.946884628800419970e-42,1.018449563386959969e-43,5.218960306134329739e-45,2.620924658723030084e-46,1.290401645599650074e-47,6.231062566223719704e-49,2.952070941754059896e-50,1.372693500964289936e-51,6.266880817965340241e-53,2.809984704400430286e-54,1.237854636494539965e-55,5.358980806317969645e-57,2.280713521763420130e-58,9.544650591368130054e-60,3.928897935451919947e-61,1.591181075226090022e-62,6.341903112131939561e-64,2.488170726726440089e-65,9.611858463788089710e-67,3.656823330032089826e-68,1.370470601576910125e-69,5.060592395230560341e-71,1.841589436886780107e-72,6.605950615307930248e-74,2.336240354828889928e-75,8.147522574080980633e-77,2.802484761216629766e-78,9.509377483820990701e-80,3.183694385406879935e-81,1.051860936285279979e-82,3.430110800482530023e-84 +8.118990566648350005e-02,2.038649590327049899e-01,2.559488225798209893e-01,2.142261233149189981e-01,1.344785398345409999e-01,6.753416398034839396e-02,2.826264640524410107e-02,1.013807109615929951e-02,3.182041892589550051e-03,8.877770850232339717e-04,2.229176614786369955e-04,5.088530016805790175e-05,1.064759790535810080e-05,2.056595292001469815e-06,3.688598192005929801e-07,6.174625717556630074e-08,9.690165672526020780e-09,1.431274152236029917e-09,1.996599098365659890e-10,2.638625876428110119e-11,3.312747759619069994e-12,3.961043589608649791e-13,4.520926935511439786e-14,4.935602774818350051e-15,5.163801097101870000e-16,5.186448194375870065e-17,5.008840976890909780e-18,4.658155980666439870e-19,4.177308436713959746e-20,3.616921579389179838e-21,3.027320385679749904e-22,2.452094702116890103e-23,1.924100746760600180e-24,1.464044966245399959e-25,1.081224918496190041e-26,7.756906368555340416e-28,5.410365385754000081e-29,3.671685033976540261e-30,2.426176378792029910e-31,1.562062154782019909e-32,9.805705973453359381e-34,6.005311747583009938e-35,3.590267555429679690e-36,2.096519500694529919e-37,1.196428575840440114e-38,6.675976680079130067e-40,3.644160754733979779e-41,1.946884628800419970e-42,1.018449563386959969e-43,5.218960306134329739e-45,2.620924658723030084e-46,1.290401645599650074e-47,6.231062566223719704e-49,2.952070941754059896e-50,1.372693500964289936e-51,6.266880817965340241e-53,2.809984704400430286e-54,1.237854636494539965e-55,5.358980806317969645e-57,2.280713521763420130e-58,9.544650591368130054e-60,3.928897935451919947e-61,1.591181075226090022e-62,6.341903112131939561e-64,2.488170726726440089e-65,9.611858463788089710e-67,3.656823330032089826e-68,1.370470601576910125e-69,5.060592395230560341e-71,1.841589436886780107e-72,6.605950615307930248e-74,2.336240354828889928e-75,8.147522574080980633e-77,2.802484761216629766e-78,9.509377483820990701e-80,3.183694385406879935e-81,1.051860936285279979e-82,3.430110800482530023e-84 +8.118990566648350005e-02,2.038649590327049899e-01,2.559488225798209893e-01,2.142261233149189981e-01,1.344785398345409999e-01,6.753416398034839396e-02,2.826264640524410107e-02,1.013807109615929951e-02,3.182041892589550051e-03,8.877770850232339717e-04,2.229176614786369955e-04,5.088530016805790175e-05,1.064759790535810080e-05,2.056595292001469815e-06,3.688598192005929801e-07,6.174625717556630074e-08,9.690165672526020780e-09,1.431274152236029917e-09,1.996599098365659890e-10,2.638625876428110119e-11,3.312747759619069994e-12,3.961043589608649791e-13,4.520926935511439786e-14,4.935602774818350051e-15,5.163801097101870000e-16,5.186448194375870065e-17,5.008840976890909780e-18,4.658155980666439870e-19,4.177308436713959746e-20,3.616921579389179838e-21,3.027320385679749904e-22,2.452094702116890103e-23,1.924100746760600180e-24,1.464044966245399959e-25,1.081224918496190041e-26,7.756906368555340416e-28,5.410365385754000081e-29,3.671685033976540261e-30,2.426176378792029910e-31,1.562062154782019909e-32,9.805705973453359381e-34,6.005311747583009938e-35,3.590267555429679690e-36,2.096519500694529919e-37,1.196428575840440114e-38,6.675976680079130067e-40,3.644160754733979779e-41,1.946884628800419970e-42,1.018449563386959969e-43,5.218960306134329739e-45,2.620924658723030084e-46,1.290401645599650074e-47,6.231062566223719704e-49,2.952070941754059896e-50,1.372693500964289936e-51,6.266880817965340241e-53,2.809984704400430286e-54,1.237854636494539965e-55,5.358980806317969645e-57,2.280713521763420130e-58,9.544650591368130054e-60,3.928897935451919947e-61,1.591181075226090022e-62,6.341903112131939561e-64,2.488170726726440089e-65,9.611858463788089710e-67,3.656823330032089826e-68,1.370470601576910125e-69,5.060592395230560341e-71,1.841589436886780107e-72,6.605950615307930248e-74,2.336240354828889928e-75,8.147522574080980633e-77,2.802484761216629766e-78,9.509377483820990701e-80,3.183694385406879935e-81,1.051860936285279979e-82,3.430110800482530023e-84 +8.379031744168380369e-02,2.077528821676430104e-01,2.575551768198139913e-01,2.128640155379669940e-01,1.319457727575999995e-01,6.543026788102700164e-02,2.703838014606119861e-02,9.577140339289870116e-03,2.968240497770269909e-03,8.177297504938440490e-04,2.027510071406040098e-04,4.570077413795890238e-05,9.442685657028509634e-06,1.800965535203219948e-06,3.189558616990250168e-07,5.272208179929220155e-08,8.170070228657619958e-09,1.191598890111820052e-09,1.641386309215599936e-10,2.141955418576350105e-11,2.655422638740709846e-12,3.135216820678259815e-13,3.533443256732679778e-14,3.809109935659109947e-15,3.935188017484579855e-16,3.902821602617689926e-17,3.721847497448600064e-18,3.417810908236739783e-19,3.026517726331670134e-20,2.587607765203720068e-21,2.138604187031469818e-22,1.710495518464319969e-23,1.325333525794619979e-24,9.957824455721199703e-26,7.261707817238370376e-27,5.144272289458259657e-28,3.543028688958180279e-29,2.374248468976859858e-30,1.549158276945170062e-31,9.848824676541599504e-33,6.104887100885410293e-34,3.691875116075040039e-35,2.179470189583640032e-36,1.256711818510240074e-37,7.081679122611000192e-39,3.901907346362489676e-40,2.103160141701780022e-41,1.109501021423509921e-42,5.731122491398079942e-44,2.899992217690780004e-45,1.438070077508169916e-46,6.991383020801489966e-48,3.333596055507870012e-49,1.559517762776100056e-50,7.160606157101919305e-52,3.228050496929589851e-53,1.429241159437210023e-54,6.217043135469849725e-56,2.657719291379690094e-57,1.116889784888329966e-58,4.615431292436830269e-60,1.876012280410359839e-61,7.502348068157760110e-63,2.952635802013810101e-64,1.143887012748099918e-65,4.363379574310999768e-67,1.639201264776670044e-68,6.066115841001130216e-70,2.211846624669259971e-71,7.948023445334989658e-73,2.815232848445230102e-74,9.831260284055620294e-76,3.385555358957499838e-77,1.149900548613980005e-78,3.852847177798599975e-80,1.273719335246129910e-81,4.155405123946290228e-83,1.338060860950400074e-84 +8.379031744168380369e-02,2.077528821676430104e-01,2.575551768198139913e-01,2.128640155379669940e-01,1.319457727575999995e-01,6.543026788102700164e-02,2.703838014606119861e-02,9.577140339289870116e-03,2.968240497770269909e-03,8.177297504938440490e-04,2.027510071406040098e-04,4.570077413795890238e-05,9.442685657028509634e-06,1.800965535203219948e-06,3.189558616990250168e-07,5.272208179929220155e-08,8.170070228657619958e-09,1.191598890111820052e-09,1.641386309215599936e-10,2.141955418576350105e-11,2.655422638740709846e-12,3.135216820678259815e-13,3.533443256732679778e-14,3.809109935659109947e-15,3.935188017484579855e-16,3.902821602617689926e-17,3.721847497448600064e-18,3.417810908236739783e-19,3.026517726331670134e-20,2.587607765203720068e-21,2.138604187031469818e-22,1.710495518464319969e-23,1.325333525794619979e-24,9.957824455721199703e-26,7.261707817238370376e-27,5.144272289458259657e-28,3.543028688958180279e-29,2.374248468976859858e-30,1.549158276945170062e-31,9.848824676541599504e-33,6.104887100885410293e-34,3.691875116075040039e-35,2.179470189583640032e-36,1.256711818510240074e-37,7.081679122611000192e-39,3.901907346362489676e-40,2.103160141701780022e-41,1.109501021423509921e-42,5.731122491398079942e-44,2.899992217690780004e-45,1.438070077508169916e-46,6.991383020801489966e-48,3.333596055507870012e-49,1.559517762776100056e-50,7.160606157101919305e-52,3.228050496929589851e-53,1.429241159437210023e-54,6.217043135469849725e-56,2.657719291379690094e-57,1.116889784888329966e-58,4.615431292436830269e-60,1.876012280410359839e-61,7.502348068157760110e-63,2.952635802013810101e-64,1.143887012748099918e-65,4.363379574310999768e-67,1.639201264776670044e-68,6.066115841001130216e-70,2.211846624669259971e-71,7.948023445334989658e-73,2.815232848445230102e-74,9.831260284055620294e-76,3.385555358957499838e-77,1.149900548613980005e-78,3.852847177798599975e-80,1.273719335246129910e-81,4.155405123946290228e-83,1.338060860950400074e-84 +8.379031744168380369e-02,2.077528821676430104e-01,2.575551768198139913e-01,2.128640155379669940e-01,1.319457727575999995e-01,6.543026788102700164e-02,2.703838014606119861e-02,9.577140339289870116e-03,2.968240497770269909e-03,8.177297504938440490e-04,2.027510071406040098e-04,4.570077413795890238e-05,9.442685657028509634e-06,1.800965535203219948e-06,3.189558616990250168e-07,5.272208179929220155e-08,8.170070228657619958e-09,1.191598890111820052e-09,1.641386309215599936e-10,2.141955418576350105e-11,2.655422638740709846e-12,3.135216820678259815e-13,3.533443256732679778e-14,3.809109935659109947e-15,3.935188017484579855e-16,3.902821602617689926e-17,3.721847497448600064e-18,3.417810908236739783e-19,3.026517726331670134e-20,2.587607765203720068e-21,2.138604187031469818e-22,1.710495518464319969e-23,1.325333525794619979e-24,9.957824455721199703e-26,7.261707817238370376e-27,5.144272289458259657e-28,3.543028688958180279e-29,2.374248468976859858e-30,1.549158276945170062e-31,9.848824676541599504e-33,6.104887100885410293e-34,3.691875116075040039e-35,2.179470189583640032e-36,1.256711818510240074e-37,7.081679122611000192e-39,3.901907346362489676e-40,2.103160141701780022e-41,1.109501021423509921e-42,5.731122491398079942e-44,2.899992217690780004e-45,1.438070077508169916e-46,6.991383020801489966e-48,3.333596055507870012e-49,1.559517762776100056e-50,7.160606157101919305e-52,3.228050496929589851e-53,1.429241159437210023e-54,6.217043135469849725e-56,2.657719291379690094e-57,1.116889784888329966e-58,4.615431292436830269e-60,1.876012280410359839e-61,7.502348068157760110e-63,2.952635802013810101e-64,1.143887012748099918e-65,4.363379574310999768e-67,1.639201264776670044e-68,6.066115841001130216e-70,2.211846624669259971e-71,7.948023445334989658e-73,2.815232848445230102e-74,9.831260284055620294e-76,3.385555358957499838e-77,1.149900548613980005e-78,3.852847177798599975e-80,1.273719335246129910e-81,4.155405123946290228e-83,1.338060860950400074e-84 +8.379031744168380369e-02,2.077528821676430104e-01,2.575551768198139913e-01,2.128640155379669940e-01,1.319457727575999995e-01,6.543026788102700164e-02,2.703838014606119861e-02,9.577140339289870116e-03,2.968240497770269909e-03,8.177297504938440490e-04,2.027510071406040098e-04,4.570077413795890238e-05,9.442685657028509634e-06,1.800965535203219948e-06,3.189558616990250168e-07,5.272208179929220155e-08,8.170070228657619958e-09,1.191598890111820052e-09,1.641386309215599936e-10,2.141955418576350105e-11,2.655422638740709846e-12,3.135216820678259815e-13,3.533443256732679778e-14,3.809109935659109947e-15,3.935188017484579855e-16,3.902821602617689926e-17,3.721847497448600064e-18,3.417810908236739783e-19,3.026517726331670134e-20,2.587607765203720068e-21,2.138604187031469818e-22,1.710495518464319969e-23,1.325333525794619979e-24,9.957824455721199703e-26,7.261707817238370376e-27,5.144272289458259657e-28,3.543028688958180279e-29,2.374248468976859858e-30,1.549158276945170062e-31,9.848824676541599504e-33,6.104887100885410293e-34,3.691875116075040039e-35,2.179470189583640032e-36,1.256711818510240074e-37,7.081679122611000192e-39,3.901907346362489676e-40,2.103160141701780022e-41,1.109501021423509921e-42,5.731122491398079942e-44,2.899992217690780004e-45,1.438070077508169916e-46,6.991383020801489966e-48,3.333596055507870012e-49,1.559517762776100056e-50,7.160606157101919305e-52,3.228050496929589851e-53,1.429241159437210023e-54,6.217043135469849725e-56,2.657719291379690094e-57,1.116889784888329966e-58,4.615431292436830269e-60,1.876012280410359839e-61,7.502348068157760110e-63,2.952635802013810101e-64,1.143887012748099918e-65,4.363379574310999768e-67,1.639201264776670044e-68,6.066115841001130216e-70,2.211846624669259971e-71,7.948023445334989658e-73,2.815232848445230102e-74,9.831260284055620294e-76,3.385555358957499838e-77,1.149900548613980005e-78,3.852847177798599975e-80,1.273719335246129910e-81,4.155405123946290228e-83,1.338060860950400074e-84 +8.379031744168380369e-02,2.077528821676430104e-01,2.575551768198139913e-01,2.128640155379669940e-01,1.319457727575999995e-01,6.543026788102700164e-02,2.703838014606119861e-02,9.577140339289870116e-03,2.968240497770269909e-03,8.177297504938440490e-04,2.027510071406040098e-04,4.570077413795890238e-05,9.442685657028509634e-06,1.800965535203219948e-06,3.189558616990250168e-07,5.272208179929220155e-08,8.170070228657619958e-09,1.191598890111820052e-09,1.641386309215599936e-10,2.141955418576350105e-11,2.655422638740709846e-12,3.135216820678259815e-13,3.533443256732679778e-14,3.809109935659109947e-15,3.935188017484579855e-16,3.902821602617689926e-17,3.721847497448600064e-18,3.417810908236739783e-19,3.026517726331670134e-20,2.587607765203720068e-21,2.138604187031469818e-22,1.710495518464319969e-23,1.325333525794619979e-24,9.957824455721199703e-26,7.261707817238370376e-27,5.144272289458259657e-28,3.543028688958180279e-29,2.374248468976859858e-30,1.549158276945170062e-31,9.848824676541599504e-33,6.104887100885410293e-34,3.691875116075040039e-35,2.179470189583640032e-36,1.256711818510240074e-37,7.081679122611000192e-39,3.901907346362489676e-40,2.103160141701780022e-41,1.109501021423509921e-42,5.731122491398079942e-44,2.899992217690780004e-45,1.438070077508169916e-46,6.991383020801489966e-48,3.333596055507870012e-49,1.559517762776100056e-50,7.160606157101919305e-52,3.228050496929589851e-53,1.429241159437210023e-54,6.217043135469849725e-56,2.657719291379690094e-57,1.116889784888329966e-58,4.615431292436830269e-60,1.876012280410359839e-61,7.502348068157760110e-63,2.952635802013810101e-64,1.143887012748099918e-65,4.363379574310999768e-67,1.639201264776670044e-68,6.066115841001130216e-70,2.211846624669259971e-71,7.948023445334989658e-73,2.815232848445230102e-74,9.831260284055620294e-76,3.385555358957499838e-77,1.149900548613980005e-78,3.852847177798599975e-80,1.273719335246129910e-81,4.155405123946290228e-83,1.338060860950400074e-84 +4.633133393613070306e-02,1.423269291512619938e-01,2.186096647848879970e-01,2.238516904816630071e-01,1.719145607565180089e-01,1.056221327130079934e-01,5.407741918306949863e-02,2.373177334051530113e-02,9.112813445878680321e-03,3.110442985082190019e-03,9.555084232565150010e-04,2.668419524143549851e-04,6.831013418157699747e-05,1.614187801379509898e-05,3.541916349750319823e-06,7.253695422994540154e-07,1.392680863636159921e-07,2.516604458129289965e-08,4.294916564189589847e-09,6.944059049752949496e-10,1.066585522617169999e-10,1.560230144941920157e-11,2.178603809022959832e-12,2.909797037919440233e-13,3.724463569221349723e-14,4.576526661406039692e-15,5.407231004621589659e-16,6.152100682894599510e-17,6.749594432392579973e-18,7.149768082871659549e-19,7.321211866261859612e-20,7.254935504529200023e-21,6.964594771957720289e-22,6.483271179651690213e-23,5.857705659634569634e-24,5.141286145305669725e-25,4.387140568590949850e-26,3.642437434156559812e-27,2.944562513589399785e-28,2.319361515331009987e-29,1.781232990850980104e-30,1.334593939617320053e-31,9.761400523880610666e-33,6.973582644375760219e-34,4.868728424721940283e-35,3.323650212941749674e-36,2.219574643320629935e-37,1.450721914962750011e-38,9.284429207497320803e-40,5.820648905559470438e-41,3.576133100497220175e-42,2.154049966641890075e-43,1.272520256830739909e-44,7.375663755314640066e-46,4.195846819480219920e-47,2.343522945670750136e-48,1.285563276805910075e-49,6.928366882813799753e-51,3.669569846110620155e-52,1.910624848485779976e-53,9.782197933258529602e-55,4.926277655373190280e-56,2.440840896289020120e-57,1.190176022657300086e-58,5.712727356386279673e-60,2.699867280826569842e-61,1.256639639763869893e-62,5.761667967961699874e-64,2.602864675072639882e-65,1.158816775261229991e-66,5.085445546243179716e-68,2.200305247381469956e-69,9.387775880636879883e-71,3.950500559502410100e-72,1.639957837755040121e-73,6.717129083224589933e-75,2.715078413142810050e-76,1.083188215505070045e-77 +4.633133393613070306e-02,1.423269291512619938e-01,2.186096647848879970e-01,2.238516904816630071e-01,1.719145607565180089e-01,1.056221327130079934e-01,5.407741918306949863e-02,2.373177334051530113e-02,9.112813445878680321e-03,3.110442985082190019e-03,9.555084232565150010e-04,2.668419524143549851e-04,6.831013418157699747e-05,1.614187801379509898e-05,3.541916349750319823e-06,7.253695422994540154e-07,1.392680863636159921e-07,2.516604458129289965e-08,4.294916564189589847e-09,6.944059049752949496e-10,1.066585522617169999e-10,1.560230144941920157e-11,2.178603809022959832e-12,2.909797037919440233e-13,3.724463569221349723e-14,4.576526661406039692e-15,5.407231004621589659e-16,6.152100682894599510e-17,6.749594432392579973e-18,7.149768082871659549e-19,7.321211866261859612e-20,7.254935504529200023e-21,6.964594771957720289e-22,6.483271179651690213e-23,5.857705659634569634e-24,5.141286145305669725e-25,4.387140568590949850e-26,3.642437434156559812e-27,2.944562513589399785e-28,2.319361515331009987e-29,1.781232990850980104e-30,1.334593939617320053e-31,9.761400523880610666e-33,6.973582644375760219e-34,4.868728424721940283e-35,3.323650212941749674e-36,2.219574643320629935e-37,1.450721914962750011e-38,9.284429207497320803e-40,5.820648905559470438e-41,3.576133100497220175e-42,2.154049966641890075e-43,1.272520256830739909e-44,7.375663755314640066e-46,4.195846819480219920e-47,2.343522945670750136e-48,1.285563276805910075e-49,6.928366882813799753e-51,3.669569846110620155e-52,1.910624848485779976e-53,9.782197933258529602e-55,4.926277655373190280e-56,2.440840896289020120e-57,1.190176022657300086e-58,5.712727356386279673e-60,2.699867280826569842e-61,1.256639639763869893e-62,5.761667967961699874e-64,2.602864675072639882e-65,1.158816775261229991e-66,5.085445546243179716e-68,2.200305247381469956e-69,9.387775880636879883e-71,3.950500559502410100e-72,1.639957837755040121e-73,6.717129083224589933e-75,2.715078413142810050e-76,1.083188215505070045e-77 +4.633133393613070306e-02,1.423269291512619938e-01,2.186096647848879970e-01,2.238516904816630071e-01,1.719145607565180089e-01,1.056221327130079934e-01,5.407741918306949863e-02,2.373177334051530113e-02,9.112813445878680321e-03,3.110442985082190019e-03,9.555084232565150010e-04,2.668419524143549851e-04,6.831013418157699747e-05,1.614187801379509898e-05,3.541916349750319823e-06,7.253695422994540154e-07,1.392680863636159921e-07,2.516604458129289965e-08,4.294916564189589847e-09,6.944059049752949496e-10,1.066585522617169999e-10,1.560230144941920157e-11,2.178603809022959832e-12,2.909797037919440233e-13,3.724463569221349723e-14,4.576526661406039692e-15,5.407231004621589659e-16,6.152100682894599510e-17,6.749594432392579973e-18,7.149768082871659549e-19,7.321211866261859612e-20,7.254935504529200023e-21,6.964594771957720289e-22,6.483271179651690213e-23,5.857705659634569634e-24,5.141286145305669725e-25,4.387140568590949850e-26,3.642437434156559812e-27,2.944562513589399785e-28,2.319361515331009987e-29,1.781232990850980104e-30,1.334593939617320053e-31,9.761400523880610666e-33,6.973582644375760219e-34,4.868728424721940283e-35,3.323650212941749674e-36,2.219574643320629935e-37,1.450721914962750011e-38,9.284429207497320803e-40,5.820648905559470438e-41,3.576133100497220175e-42,2.154049966641890075e-43,1.272520256830739909e-44,7.375663755314640066e-46,4.195846819480219920e-47,2.343522945670750136e-48,1.285563276805910075e-49,6.928366882813799753e-51,3.669569846110620155e-52,1.910624848485779976e-53,9.782197933258529602e-55,4.926277655373190280e-56,2.440840896289020120e-57,1.190176022657300086e-58,5.712727356386279673e-60,2.699867280826569842e-61,1.256639639763869893e-62,5.761667967961699874e-64,2.602864675072639882e-65,1.158816775261229991e-66,5.085445546243179716e-68,2.200305247381469956e-69,9.387775880636879883e-71,3.950500559502410100e-72,1.639957837755040121e-73,6.717129083224589933e-75,2.715078413142810050e-76,1.083188215505070045e-77 +4.633133393613070306e-02,1.423269291512619938e-01,2.186096647848879970e-01,2.238516904816630071e-01,1.719145607565180089e-01,1.056221327130079934e-01,5.407741918306949863e-02,2.373177334051530113e-02,9.112813445878680321e-03,3.110442985082190019e-03,9.555084232565150010e-04,2.668419524143549851e-04,6.831013418157699747e-05,1.614187801379509898e-05,3.541916349750319823e-06,7.253695422994540154e-07,1.392680863636159921e-07,2.516604458129289965e-08,4.294916564189589847e-09,6.944059049752949496e-10,1.066585522617169999e-10,1.560230144941920157e-11,2.178603809022959832e-12,2.909797037919440233e-13,3.724463569221349723e-14,4.576526661406039692e-15,5.407231004621589659e-16,6.152100682894599510e-17,6.749594432392579973e-18,7.149768082871659549e-19,7.321211866261859612e-20,7.254935504529200023e-21,6.964594771957720289e-22,6.483271179651690213e-23,5.857705659634569634e-24,5.141286145305669725e-25,4.387140568590949850e-26,3.642437434156559812e-27,2.944562513589399785e-28,2.319361515331009987e-29,1.781232990850980104e-30,1.334593939617320053e-31,9.761400523880610666e-33,6.973582644375760219e-34,4.868728424721940283e-35,3.323650212941749674e-36,2.219574643320629935e-37,1.450721914962750011e-38,9.284429207497320803e-40,5.820648905559470438e-41,3.576133100497220175e-42,2.154049966641890075e-43,1.272520256830739909e-44,7.375663755314640066e-46,4.195846819480219920e-47,2.343522945670750136e-48,1.285563276805910075e-49,6.928366882813799753e-51,3.669569846110620155e-52,1.910624848485779976e-53,9.782197933258529602e-55,4.926277655373190280e-56,2.440840896289020120e-57,1.190176022657300086e-58,5.712727356386279673e-60,2.699867280826569842e-61,1.256639639763869893e-62,5.761667967961699874e-64,2.602864675072639882e-65,1.158816775261229991e-66,5.085445546243179716e-68,2.200305247381469956e-69,9.387775880636879883e-71,3.950500559502410100e-72,1.639957837755040121e-73,6.717129083224589933e-75,2.715078413142810050e-76,1.083188215505070045e-77 +4.633133393613070306e-02,1.423269291512619938e-01,2.186096647848879970e-01,2.238516904816630071e-01,1.719145607565180089e-01,1.056221327130079934e-01,5.407741918306949863e-02,2.373177334051530113e-02,9.112813445878680321e-03,3.110442985082190019e-03,9.555084232565150010e-04,2.668419524143549851e-04,6.831013418157699747e-05,1.614187801379509898e-05,3.541916349750319823e-06,7.253695422994540154e-07,1.392680863636159921e-07,2.516604458129289965e-08,4.294916564189589847e-09,6.944059049752949496e-10,1.066585522617169999e-10,1.560230144941920157e-11,2.178603809022959832e-12,2.909797037919440233e-13,3.724463569221349723e-14,4.576526661406039692e-15,5.407231004621589659e-16,6.152100682894599510e-17,6.749594432392579973e-18,7.149768082871659549e-19,7.321211866261859612e-20,7.254935504529200023e-21,6.964594771957720289e-22,6.483271179651690213e-23,5.857705659634569634e-24,5.141286145305669725e-25,4.387140568590949850e-26,3.642437434156559812e-27,2.944562513589399785e-28,2.319361515331009987e-29,1.781232990850980104e-30,1.334593939617320053e-31,9.761400523880610666e-33,6.973582644375760219e-34,4.868728424721940283e-35,3.323650212941749674e-36,2.219574643320629935e-37,1.450721914962750011e-38,9.284429207497320803e-40,5.820648905559470438e-41,3.576133100497220175e-42,2.154049966641890075e-43,1.272520256830739909e-44,7.375663755314640066e-46,4.195846819480219920e-47,2.343522945670750136e-48,1.285563276805910075e-49,6.928366882813799753e-51,3.669569846110620155e-52,1.910624848485779976e-53,9.782197933258529602e-55,4.926277655373190280e-56,2.440840896289020120e-57,1.190176022657300086e-58,5.712727356386279673e-60,2.699867280826569842e-61,1.256639639763869893e-62,5.761667967961699874e-64,2.602864675072639882e-65,1.158816775261229991e-66,5.085445546243179716e-68,2.200305247381469956e-69,9.387775880636879883e-71,3.950500559502410100e-72,1.639957837755040121e-73,6.717129083224589933e-75,2.715078413142810050e-76,1.083188215505070045e-77 +1.960191247921719976e-02,7.707723169724829682e-02,1.515387759334730078e-01,1.986232951525450097e-01,1.952530621332899952e-01,1.535520120865860039e-01,1.006310313319749988e-01,5.652773003750349856e-02,2.778428476073219883e-02,1.213904089044499923e-02,4.773226430263940133e-03,1.706267088613529952e-03,5.591050697472000480e-04,1.691132907005950031e-04,4.749822353971799795e-05,1.245127343181479951e-05,3.060000166588670003e-06,7.077831040986429547e-07,1.546163256713090014e-07,3.199848449422579987e-08,6.291107069111699611e-09,1.177973292905390002e-09,2.105428152545269969e-10,3.599484038981429742e-11,5.897346869369469945e-12,9.275649435357189876e-13,1.402809314631710086e-13,2.042972586656660115e-14,2.869010714785690080e-15,3.890109576348379825e-16,5.098803113587280033e-17,6.467466843107960074e-18,7.947158869208430160e-19,9.469468799649109731e-20,1.095151904624369943e-20,1.230365035422090026e-21,1.343875827988839892e-22,1.428187016928709856e-23,1.477845884567170039e-24,1.490020356999499952e-25,1.464737744490890096e-26,1.404765001418149972e-27,1.315170475005459955e-28,1.202655543335640045e-29,1.074771751619359958e-30,9.391422779571949803e-32,8.027886479414929959e-33,6.716314541866880351e-34,5.501960296007829776e-35,4.415186309447890198e-36,3.472215667942080157e-37,2.677097439829789752e-38,2.024363496562730096e-39,1.501897485762999929e-40,1.093639513003939968e-41,7.818783102408770658e-43,5.490081620259560330e-44,3.787316568613119996e-45,2.567623114179589806e-46,1.711224255153600058e-47,1.121458841837250010e-48,7.229048970693259894e-50,4.584765628680060024e-51,2.861569198915899836e-52,1.758133871474929894e-53,1.063570411306560026e-54,6.336507795961580084e-56,3.718800093541709778e-57,2.150411544473469975e-58,1.225462862461189920e-59,6.883824297861820661e-61,3.812405527669159892e-62,2.082064870027639897e-63,1.121499434106799993e-64,5.959296602876059937e-66,3.124362383854180140e-67,1.616499112561910091e-68,8.254911236467590513e-70 +1.960191247921719976e-02,7.707723169724829682e-02,1.515387759334730078e-01,1.986232951525450097e-01,1.952530621332899952e-01,1.535520120865860039e-01,1.006310313319749988e-01,5.652773003750349856e-02,2.778428476073219883e-02,1.213904089044499923e-02,4.773226430263940133e-03,1.706267088613529952e-03,5.591050697472000480e-04,1.691132907005950031e-04,4.749822353971799795e-05,1.245127343181479951e-05,3.060000166588670003e-06,7.077831040986429547e-07,1.546163256713090014e-07,3.199848449422579987e-08,6.291107069111699611e-09,1.177973292905390002e-09,2.105428152545269969e-10,3.599484038981429742e-11,5.897346869369469945e-12,9.275649435357189876e-13,1.402809314631710086e-13,2.042972586656660115e-14,2.869010714785690080e-15,3.890109576348379825e-16,5.098803113587280033e-17,6.467466843107960074e-18,7.947158869208430160e-19,9.469468799649109731e-20,1.095151904624369943e-20,1.230365035422090026e-21,1.343875827988839892e-22,1.428187016928709856e-23,1.477845884567170039e-24,1.490020356999499952e-25,1.464737744490890096e-26,1.404765001418149972e-27,1.315170475005459955e-28,1.202655543335640045e-29,1.074771751619359958e-30,9.391422779571949803e-32,8.027886479414929959e-33,6.716314541866880351e-34,5.501960296007829776e-35,4.415186309447890198e-36,3.472215667942080157e-37,2.677097439829789752e-38,2.024363496562730096e-39,1.501897485762999929e-40,1.093639513003939968e-41,7.818783102408770658e-43,5.490081620259560330e-44,3.787316568613119996e-45,2.567623114179589806e-46,1.711224255153600058e-47,1.121458841837250010e-48,7.229048970693259894e-50,4.584765628680060024e-51,2.861569198915899836e-52,1.758133871474929894e-53,1.063570411306560026e-54,6.336507795961580084e-56,3.718800093541709778e-57,2.150411544473469975e-58,1.225462862461189920e-59,6.883824297861820661e-61,3.812405527669159892e-62,2.082064870027639897e-63,1.121499434106799993e-64,5.959296602876059937e-66,3.124362383854180140e-67,1.616499112561910091e-68,8.254911236467590513e-70 +1.960191247921719976e-02,7.707723169724829682e-02,1.515387759334730078e-01,1.986232951525450097e-01,1.952530621332899952e-01,1.535520120865860039e-01,1.006310313319749988e-01,5.652773003750349856e-02,2.778428476073219883e-02,1.213904089044499923e-02,4.773226430263940133e-03,1.706267088613529952e-03,5.591050697472000480e-04,1.691132907005950031e-04,4.749822353971799795e-05,1.245127343181479951e-05,3.060000166588670003e-06,7.077831040986429547e-07,1.546163256713090014e-07,3.199848449422579987e-08,6.291107069111699611e-09,1.177973292905390002e-09,2.105428152545269969e-10,3.599484038981429742e-11,5.897346869369469945e-12,9.275649435357189876e-13,1.402809314631710086e-13,2.042972586656660115e-14,2.869010714785690080e-15,3.890109576348379825e-16,5.098803113587280033e-17,6.467466843107960074e-18,7.947158869208430160e-19,9.469468799649109731e-20,1.095151904624369943e-20,1.230365035422090026e-21,1.343875827988839892e-22,1.428187016928709856e-23,1.477845884567170039e-24,1.490020356999499952e-25,1.464737744490890096e-26,1.404765001418149972e-27,1.315170475005459955e-28,1.202655543335640045e-29,1.074771751619359958e-30,9.391422779571949803e-32,8.027886479414929959e-33,6.716314541866880351e-34,5.501960296007829776e-35,4.415186309447890198e-36,3.472215667942080157e-37,2.677097439829789752e-38,2.024363496562730096e-39,1.501897485762999929e-40,1.093639513003939968e-41,7.818783102408770658e-43,5.490081620259560330e-44,3.787316568613119996e-45,2.567623114179589806e-46,1.711224255153600058e-47,1.121458841837250010e-48,7.229048970693259894e-50,4.584765628680060024e-51,2.861569198915899836e-52,1.758133871474929894e-53,1.063570411306560026e-54,6.336507795961580084e-56,3.718800093541709778e-57,2.150411544473469975e-58,1.225462862461189920e-59,6.883824297861820661e-61,3.812405527669159892e-62,2.082064870027639897e-63,1.121499434106799993e-64,5.959296602876059937e-66,3.124362383854180140e-67,1.616499112561910091e-68,8.254911236467590513e-70 +1.960191247921719976e-02,7.707723169724829682e-02,1.515387759334730078e-01,1.986232951525450097e-01,1.952530621332899952e-01,1.535520120865860039e-01,1.006310313319749988e-01,5.652773003750349856e-02,2.778428476073219883e-02,1.213904089044499923e-02,4.773226430263940133e-03,1.706267088613529952e-03,5.591050697472000480e-04,1.691132907005950031e-04,4.749822353971799795e-05,1.245127343181479951e-05,3.060000166588670003e-06,7.077831040986429547e-07,1.546163256713090014e-07,3.199848449422579987e-08,6.291107069111699611e-09,1.177973292905390002e-09,2.105428152545269969e-10,3.599484038981429742e-11,5.897346869369469945e-12,9.275649435357189876e-13,1.402809314631710086e-13,2.042972586656660115e-14,2.869010714785690080e-15,3.890109576348379825e-16,5.098803113587280033e-17,6.467466843107960074e-18,7.947158869208430160e-19,9.469468799649109731e-20,1.095151904624369943e-20,1.230365035422090026e-21,1.343875827988839892e-22,1.428187016928709856e-23,1.477845884567170039e-24,1.490020356999499952e-25,1.464737744490890096e-26,1.404765001418149972e-27,1.315170475005459955e-28,1.202655543335640045e-29,1.074771751619359958e-30,9.391422779571949803e-32,8.027886479414929959e-33,6.716314541866880351e-34,5.501960296007829776e-35,4.415186309447890198e-36,3.472215667942080157e-37,2.677097439829789752e-38,2.024363496562730096e-39,1.501897485762999929e-40,1.093639513003939968e-41,7.818783102408770658e-43,5.490081620259560330e-44,3.787316568613119996e-45,2.567623114179589806e-46,1.711224255153600058e-47,1.121458841837250010e-48,7.229048970693259894e-50,4.584765628680060024e-51,2.861569198915899836e-52,1.758133871474929894e-53,1.063570411306560026e-54,6.336507795961580084e-56,3.718800093541709778e-57,2.150411544473469975e-58,1.225462862461189920e-59,6.883824297861820661e-61,3.812405527669159892e-62,2.082064870027639897e-63,1.121499434106799993e-64,5.959296602876059937e-66,3.124362383854180140e-67,1.616499112561910091e-68,8.254911236467590513e-70 +1.960191247921719976e-02,7.707723169724829682e-02,1.515387759334730078e-01,1.986232951525450097e-01,1.952530621332899952e-01,1.535520120865860039e-01,1.006310313319749988e-01,5.652773003750349856e-02,2.778428476073219883e-02,1.213904089044499923e-02,4.773226430263940133e-03,1.706267088613529952e-03,5.591050697472000480e-04,1.691132907005950031e-04,4.749822353971799795e-05,1.245127343181479951e-05,3.060000166588670003e-06,7.077831040986429547e-07,1.546163256713090014e-07,3.199848449422579987e-08,6.291107069111699611e-09,1.177973292905390002e-09,2.105428152545269969e-10,3.599484038981429742e-11,5.897346869369469945e-12,9.275649435357189876e-13,1.402809314631710086e-13,2.042972586656660115e-14,2.869010714785690080e-15,3.890109576348379825e-16,5.098803113587280033e-17,6.467466843107960074e-18,7.947158869208430160e-19,9.469468799649109731e-20,1.095151904624369943e-20,1.230365035422090026e-21,1.343875827988839892e-22,1.428187016928709856e-23,1.477845884567170039e-24,1.490020356999499952e-25,1.464737744490890096e-26,1.404765001418149972e-27,1.315170475005459955e-28,1.202655543335640045e-29,1.074771751619359958e-30,9.391422779571949803e-32,8.027886479414929959e-33,6.716314541866880351e-34,5.501960296007829776e-35,4.415186309447890198e-36,3.472215667942080157e-37,2.677097439829789752e-38,2.024363496562730096e-39,1.501897485762999929e-40,1.093639513003939968e-41,7.818783102408770658e-43,5.490081620259560330e-44,3.787316568613119996e-45,2.567623114179589806e-46,1.711224255153600058e-47,1.121458841837250010e-48,7.229048970693259894e-50,4.584765628680060024e-51,2.861569198915899836e-52,1.758133871474929894e-53,1.063570411306560026e-54,6.336507795961580084e-56,3.718800093541709778e-57,2.150411544473469975e-58,1.225462862461189920e-59,6.883824297861820661e-61,3.812405527669159892e-62,2.082064870027639897e-63,1.121499434106799993e-64,5.959296602876059937e-66,3.124362383854180140e-67,1.616499112561910091e-68,8.254911236467590513e-70 +3.083132474141640073e-02,1.072690871125669965e-01,1.866065948588060130e-01,2.164153854083279982e-01,1.882394044414910095e-01,1.309854133249579999e-01,7.595460044978180614e-02,3.775186771701460192e-02,1.641840085028289931e-02,6.347032823234140426e-03,2.208274936390389794e-03,6.984621190148159690e-04,2.025088513003540014e-04,5.419797458340410074e-05,1.346906411781849947e-05,3.124126137506229797e-06,6.793459282188820527e-07,1.390351002637480001e-07,2.687412595790230049e-08,4.921110834738690207e-09,8.560823630667229787e-10,1.418334458302809965e-10,2.243046993136679888e-11,3.393070906919759941e-12,4.918855819340400076e-13,6.845520622994079698e-14,9.160423121084469264e-15,1.180413503816439982e-15,1.466758240566319956e-16,1.759717439190710019e-17,2.040817089558740063e-18,2.290470947729340200e-19,2.490331765678369924e-20,2.625582490419460077e-21,2.686761704477249944e-22,2.670813139794699943e-23,2.581210377548669995e-24,2.427191695173029929e-25,2.222300990888940126e-26,1.982534127067739860e-27,1.724420113015719897e-28,1.463327795581630048e-29,1.212201258784709980e-30,9.808185571543309583e-32,7.755653479892950425e-33,5.996368056961259881e-34,4.535371319351259809e-35,3.357355969174630118e-36,2.433540353208119850e-37,1.727924932493439983e-38,1.202367602833669936e-39,8.202561379009530057e-41,5.488182495280260007e-42,3.602757854983250139e-43,2.321259600560630162e-44,1.468396776753920087e-45,9.123002514633019318e-47,5.568591215510530400e-48,3.340409756237189930e-49,1.969836275164859927e-50,1.142250296683420054e-51,6.514991352109629640e-53,3.655986245181260051e-54,2.019046879261299884e-55,1.097611952861240092e-56,5.875135268569759908e-58,3.097107883896979796e-59,1.608288401977360053e-60,8.228817231899880498e-62,4.149260720402880196e-63,2.062315395150100133e-64,1.010599628198940004e-65,4.883475764340500096e-67,2.327494029941739827e-68,1.094307195797930038e-69,5.076453245672360401e-71,2.323962936362599961e-72,1.050076335472080006e-73 +3.083132474141640073e-02,1.072690871125669965e-01,1.866065948588060130e-01,2.164153854083279982e-01,1.882394044414910095e-01,1.309854133249579999e-01,7.595460044978180614e-02,3.775186771701460192e-02,1.641840085028289931e-02,6.347032823234140426e-03,2.208274936390389794e-03,6.984621190148159690e-04,2.025088513003540014e-04,5.419797458340410074e-05,1.346906411781849947e-05,3.124126137506229797e-06,6.793459282188820527e-07,1.390351002637480001e-07,2.687412595790230049e-08,4.921110834738690207e-09,8.560823630667229787e-10,1.418334458302809965e-10,2.243046993136679888e-11,3.393070906919759941e-12,4.918855819340400076e-13,6.845520622994079698e-14,9.160423121084469264e-15,1.180413503816439982e-15,1.466758240566319956e-16,1.759717439190710019e-17,2.040817089558740063e-18,2.290470947729340200e-19,2.490331765678369924e-20,2.625582490419460077e-21,2.686761704477249944e-22,2.670813139794699943e-23,2.581210377548669995e-24,2.427191695173029929e-25,2.222300990888940126e-26,1.982534127067739860e-27,1.724420113015719897e-28,1.463327795581630048e-29,1.212201258784709980e-30,9.808185571543309583e-32,7.755653479892950425e-33,5.996368056961259881e-34,4.535371319351259809e-35,3.357355969174630118e-36,2.433540353208119850e-37,1.727924932493439983e-38,1.202367602833669936e-39,8.202561379009530057e-41,5.488182495280260007e-42,3.602757854983250139e-43,2.321259600560630162e-44,1.468396776753920087e-45,9.123002514633019318e-47,5.568591215510530400e-48,3.340409756237189930e-49,1.969836275164859927e-50,1.142250296683420054e-51,6.514991352109629640e-53,3.655986245181260051e-54,2.019046879261299884e-55,1.097611952861240092e-56,5.875135268569759908e-58,3.097107883896979796e-59,1.608288401977360053e-60,8.228817231899880498e-62,4.149260720402880196e-63,2.062315395150100133e-64,1.010599628198940004e-65,4.883475764340500096e-67,2.327494029941739827e-68,1.094307195797930038e-69,5.076453245672360401e-71,2.323962936362599961e-72,1.050076335472080006e-73 +3.083132474141640073e-02,1.072690871125669965e-01,1.866065948588060130e-01,2.164153854083279982e-01,1.882394044414910095e-01,1.309854133249579999e-01,7.595460044978180614e-02,3.775186771701460192e-02,1.641840085028289931e-02,6.347032823234140426e-03,2.208274936390389794e-03,6.984621190148159690e-04,2.025088513003540014e-04,5.419797458340410074e-05,1.346906411781849947e-05,3.124126137506229797e-06,6.793459282188820527e-07,1.390351002637480001e-07,2.687412595790230049e-08,4.921110834738690207e-09,8.560823630667229787e-10,1.418334458302809965e-10,2.243046993136679888e-11,3.393070906919759941e-12,4.918855819340400076e-13,6.845520622994079698e-14,9.160423121084469264e-15,1.180413503816439982e-15,1.466758240566319956e-16,1.759717439190710019e-17,2.040817089558740063e-18,2.290470947729340200e-19,2.490331765678369924e-20,2.625582490419460077e-21,2.686761704477249944e-22,2.670813139794699943e-23,2.581210377548669995e-24,2.427191695173029929e-25,2.222300990888940126e-26,1.982534127067739860e-27,1.724420113015719897e-28,1.463327795581630048e-29,1.212201258784709980e-30,9.808185571543309583e-32,7.755653479892950425e-33,5.996368056961259881e-34,4.535371319351259809e-35,3.357355969174630118e-36,2.433540353208119850e-37,1.727924932493439983e-38,1.202367602833669936e-39,8.202561379009530057e-41,5.488182495280260007e-42,3.602757854983250139e-43,2.321259600560630162e-44,1.468396776753920087e-45,9.123002514633019318e-47,5.568591215510530400e-48,3.340409756237189930e-49,1.969836275164859927e-50,1.142250296683420054e-51,6.514991352109629640e-53,3.655986245181260051e-54,2.019046879261299884e-55,1.097611952861240092e-56,5.875135268569759908e-58,3.097107883896979796e-59,1.608288401977360053e-60,8.228817231899880498e-62,4.149260720402880196e-63,2.062315395150100133e-64,1.010599628198940004e-65,4.883475764340500096e-67,2.327494029941739827e-68,1.094307195797930038e-69,5.076453245672360401e-71,2.323962936362599961e-72,1.050076335472080006e-73 +3.083132474141640073e-02,1.072690871125669965e-01,1.866065948588060130e-01,2.164153854083279982e-01,1.882394044414910095e-01,1.309854133249579999e-01,7.595460044978180614e-02,3.775186771701460192e-02,1.641840085028289931e-02,6.347032823234140426e-03,2.208274936390389794e-03,6.984621190148159690e-04,2.025088513003540014e-04,5.419797458340410074e-05,1.346906411781849947e-05,3.124126137506229797e-06,6.793459282188820527e-07,1.390351002637480001e-07,2.687412595790230049e-08,4.921110834738690207e-09,8.560823630667229787e-10,1.418334458302809965e-10,2.243046993136679888e-11,3.393070906919759941e-12,4.918855819340400076e-13,6.845520622994079698e-14,9.160423121084469264e-15,1.180413503816439982e-15,1.466758240566319956e-16,1.759717439190710019e-17,2.040817089558740063e-18,2.290470947729340200e-19,2.490331765678369924e-20,2.625582490419460077e-21,2.686761704477249944e-22,2.670813139794699943e-23,2.581210377548669995e-24,2.427191695173029929e-25,2.222300990888940126e-26,1.982534127067739860e-27,1.724420113015719897e-28,1.463327795581630048e-29,1.212201258784709980e-30,9.808185571543309583e-32,7.755653479892950425e-33,5.996368056961259881e-34,4.535371319351259809e-35,3.357355969174630118e-36,2.433540353208119850e-37,1.727924932493439983e-38,1.202367602833669936e-39,8.202561379009530057e-41,5.488182495280260007e-42,3.602757854983250139e-43,2.321259600560630162e-44,1.468396776753920087e-45,9.123002514633019318e-47,5.568591215510530400e-48,3.340409756237189930e-49,1.969836275164859927e-50,1.142250296683420054e-51,6.514991352109629640e-53,3.655986245181260051e-54,2.019046879261299884e-55,1.097611952861240092e-56,5.875135268569759908e-58,3.097107883896979796e-59,1.608288401977360053e-60,8.228817231899880498e-62,4.149260720402880196e-63,2.062315395150100133e-64,1.010599628198940004e-65,4.883475764340500096e-67,2.327494029941739827e-68,1.094307195797930038e-69,5.076453245672360401e-71,2.323962936362599961e-72,1.050076335472080006e-73 +3.083132474141640073e-02,1.072690871125669965e-01,1.866065948588060130e-01,2.164153854083279982e-01,1.882394044414910095e-01,1.309854133249579999e-01,7.595460044978180614e-02,3.775186771701460192e-02,1.641840085028289931e-02,6.347032823234140426e-03,2.208274936390389794e-03,6.984621190148159690e-04,2.025088513003540014e-04,5.419797458340410074e-05,1.346906411781849947e-05,3.124126137506229797e-06,6.793459282188820527e-07,1.390351002637480001e-07,2.687412595790230049e-08,4.921110834738690207e-09,8.560823630667229787e-10,1.418334458302809965e-10,2.243046993136679888e-11,3.393070906919759941e-12,4.918855819340400076e-13,6.845520622994079698e-14,9.160423121084469264e-15,1.180413503816439982e-15,1.466758240566319956e-16,1.759717439190710019e-17,2.040817089558740063e-18,2.290470947729340200e-19,2.490331765678369924e-20,2.625582490419460077e-21,2.686761704477249944e-22,2.670813139794699943e-23,2.581210377548669995e-24,2.427191695173029929e-25,2.222300990888940126e-26,1.982534127067739860e-27,1.724420113015719897e-28,1.463327795581630048e-29,1.212201258784709980e-30,9.808185571543309583e-32,7.755653479892950425e-33,5.996368056961259881e-34,4.535371319351259809e-35,3.357355969174630118e-36,2.433540353208119850e-37,1.727924932493439983e-38,1.202367602833669936e-39,8.202561379009530057e-41,5.488182495280260007e-42,3.602757854983250139e-43,2.321259600560630162e-44,1.468396776753920087e-45,9.123002514633019318e-47,5.568591215510530400e-48,3.340409756237189930e-49,1.969836275164859927e-50,1.142250296683420054e-51,6.514991352109629640e-53,3.655986245181260051e-54,2.019046879261299884e-55,1.097611952861240092e-56,5.875135268569759908e-58,3.097107883896979796e-59,1.608288401977360053e-60,8.228817231899880498e-62,4.149260720402880196e-63,2.062315395150100133e-64,1.010599628198940004e-65,4.883475764340500096e-67,2.327494029941739827e-68,1.094307195797930038e-69,5.076453245672360401e-71,2.323962936362599961e-72,1.050076335472080006e-73 +1.619143234834510003e-01,2.947954578663899983e-01,2.683652690786709760e-01,1.628698039626489957e-01,7.413377241557909947e-02,2.699489324037120108e-02,8.191546143705760036e-03,2.130607052028110193e-03,4.848963235023660227e-04,9.809387707802130578e-05,1.785983400663149990e-05,2.956107689397159984e-06,4.485124710040789939e-07,6.281548091125419566e-08,8.169099230973110089e-09,9.915587027097630735e-10,1.128324364230059969e-10,1.208427396949129987e-11,1.222316222959169964e-12,1.171292852366850024e-13,1.066279391719199985e-14,9.244581147336470142e-16,7.650680685148089388e-17,6.056305278551959983e-18,4.594434186855209591e-19,3.346012386333200097e-20,2.343094013774099993e-21,1.580015940378520078e-22,1.027398566104010054e-23,6.450248931781929775e-25,3.914630170425099937e-26,2.299135478726860144e-27,1.308127582473849905e-28,7.217248872204239546e-30,3.864811194484390152e-31,2.010461478521419973e-32,1.016784163879200057e-33,5.003369394536750375e-35,2.397256413477099929e-36,1.119142530143720009e-37,5.094023300310259944e-39,2.262104108577769829e-40,9.806156415418189800e-42,4.152081588725990263e-43,1.718101118252230089e-44,6.951391121472340067e-46,2.751372621260899790e-47,1.065827868157169983e-48,4.042791577982640091e-50,1.502175900934909981e-51,5.469987126336150265e-53,1.952772481027480054e-54,6.837287167923960402e-56,2.348786106492300061e-57,7.919271414166920069e-59,2.621549462682590133e-60,8.523256285267649379e-62,2.722489477574489934e-63,8.546213428691119756e-65,2.637286070609580005e-66,8.002791620320990698e-68,2.388620701273239860e-69,7.014407952261859968e-71,2.027150482909689917e-72,5.766888217452300180e-74,1.615339060382169981e-75,4.456103581931830154e-77,1.210921507490959990e-78,3.242220879909729837e-80,8.555177522677469464e-82,2.225186947787019997e-83,5.706156429066819901e-85,1.442934757934120032e-86,3.598813599864390055e-88,8.854481836886659634e-90,2.149499785744400100e-91,5.149432053497710169e-93,1.217598557724579998e-94 +1.619143234834510003e-01,2.947954578663899983e-01,2.683652690786709760e-01,1.628698039626489957e-01,7.413377241557909947e-02,2.699489324037120108e-02,8.191546143705760036e-03,2.130607052028110193e-03,4.848963235023660227e-04,9.809387707802130578e-05,1.785983400663149990e-05,2.956107689397159984e-06,4.485124710040789939e-07,6.281548091125419566e-08,8.169099230973110089e-09,9.915587027097630735e-10,1.128324364230059969e-10,1.208427396949129987e-11,1.222316222959169964e-12,1.171292852366850024e-13,1.066279391719199985e-14,9.244581147336470142e-16,7.650680685148089388e-17,6.056305278551959983e-18,4.594434186855209591e-19,3.346012386333200097e-20,2.343094013774099993e-21,1.580015940378520078e-22,1.027398566104010054e-23,6.450248931781929775e-25,3.914630170425099937e-26,2.299135478726860144e-27,1.308127582473849905e-28,7.217248872204239546e-30,3.864811194484390152e-31,2.010461478521419973e-32,1.016784163879200057e-33,5.003369394536750375e-35,2.397256413477099929e-36,1.119142530143720009e-37,5.094023300310259944e-39,2.262104108577769829e-40,9.806156415418189800e-42,4.152081588725990263e-43,1.718101118252230089e-44,6.951391121472340067e-46,2.751372621260899790e-47,1.065827868157169983e-48,4.042791577982640091e-50,1.502175900934909981e-51,5.469987126336150265e-53,1.952772481027480054e-54,6.837287167923960402e-56,2.348786106492300061e-57,7.919271414166920069e-59,2.621549462682590133e-60,8.523256285267649379e-62,2.722489477574489934e-63,8.546213428691119756e-65,2.637286070609580005e-66,8.002791620320990698e-68,2.388620701273239860e-69,7.014407952261859968e-71,2.027150482909689917e-72,5.766888217452300180e-74,1.615339060382169981e-75,4.456103581931830154e-77,1.210921507490959990e-78,3.242220879909729837e-80,8.555177522677469464e-82,2.225186947787019997e-83,5.706156429066819901e-85,1.442934757934120032e-86,3.598813599864390055e-88,8.854481836886659634e-90,2.149499785744400100e-91,5.149432053497710169e-93,1.217598557724579998e-94 +1.619143234834510003e-01,2.947954578663899983e-01,2.683652690786709760e-01,1.628698039626489957e-01,7.413377241557909947e-02,2.699489324037120108e-02,8.191546143705760036e-03,2.130607052028110193e-03,4.848963235023660227e-04,9.809387707802130578e-05,1.785983400663149990e-05,2.956107689397159984e-06,4.485124710040789939e-07,6.281548091125419566e-08,8.169099230973110089e-09,9.915587027097630735e-10,1.128324364230059969e-10,1.208427396949129987e-11,1.222316222959169964e-12,1.171292852366850024e-13,1.066279391719199985e-14,9.244581147336470142e-16,7.650680685148089388e-17,6.056305278551959983e-18,4.594434186855209591e-19,3.346012386333200097e-20,2.343094013774099993e-21,1.580015940378520078e-22,1.027398566104010054e-23,6.450248931781929775e-25,3.914630170425099937e-26,2.299135478726860144e-27,1.308127582473849905e-28,7.217248872204239546e-30,3.864811194484390152e-31,2.010461478521419973e-32,1.016784163879200057e-33,5.003369394536750375e-35,2.397256413477099929e-36,1.119142530143720009e-37,5.094023300310259944e-39,2.262104108577769829e-40,9.806156415418189800e-42,4.152081588725990263e-43,1.718101118252230089e-44,6.951391121472340067e-46,2.751372621260899790e-47,1.065827868157169983e-48,4.042791577982640091e-50,1.502175900934909981e-51,5.469987126336150265e-53,1.952772481027480054e-54,6.837287167923960402e-56,2.348786106492300061e-57,7.919271414166920069e-59,2.621549462682590133e-60,8.523256285267649379e-62,2.722489477574489934e-63,8.546213428691119756e-65,2.637286070609580005e-66,8.002791620320990698e-68,2.388620701273239860e-69,7.014407952261859968e-71,2.027150482909689917e-72,5.766888217452300180e-74,1.615339060382169981e-75,4.456103581931830154e-77,1.210921507490959990e-78,3.242220879909729837e-80,8.555177522677469464e-82,2.225186947787019997e-83,5.706156429066819901e-85,1.442934757934120032e-86,3.598813599864390055e-88,8.854481836886659634e-90,2.149499785744400100e-91,5.149432053497710169e-93,1.217598557724579998e-94 +2.187156478120630063e-02,8.360554140387460587e-02,1.597939293177869924e-01,2.036077148161750117e-01,1.945760785922280023e-01,1.487560543352109965e-01,9.477168631365390228e-02,5.175302938687639798e-02,2.472868359251079867e-02,1.050300800574680005e-02,4.014846123146280366e-03,1.395183809483479956e-03,4.444320701203220139e-04,1.306824433788680102e-04,3.568160806040770224e-05,9.093024633868010469e-06,2.172419003619220210e-06,4.884834790274119561e-07,1.037367369699729963e-07,2.087056423935419840e-08,3.988957443353329836e-09,7.260981270490240125e-10,1.261617904998560092e-10,2.096791349017409969e-11,3.339636374504610117e-12,5.106394717993829806e-13,7.507515585269479943e-14,1.062888446937449961e-14,1.451058305728390048e-15,1.912678930029880026e-16,2.437115025477270112e-17,3.005173438469220170e-18,3.589837347732470173e-19,4.158302122183250180e-20,4.675115353224010115e-21,5.105984533432969634e-22,5.421659045379489484e-23,5.601259410496589662e-24,5.634524844457669561e-25,5.522654817666599894e-26,5.277680753944960277e-27,4.920559274156719926e-28,4.478374266629659847e-29,3.981137140756380286e-30,3.458674325084570051e-31,2.938003876327329727e-32,2.441460717565630085e-33,1.985670077090300055e-34,1.581324727499419918e-35,1.233616558997859952e-36,9.431166112853870714e-38,7.068877023596269745e-39,5.196396612075019853e-40,3.747845070328839908e-41,2.653035602070679864e-42,1.843892495232910183e-43,1.258643617675630027e-44,8.440790679826370018e-46,5.563016462661159983e-47,3.604238668513929714e-48,2.296241171617929975e-49,1.438940620963050093e-50,8.871690684369259637e-52,5.382958731411739970e-53,3.215113318911780221e-54,1.890767532332179998e-55,1.095088980454569948e-56,6.247838778729850186e-58,3.512174697827359856e-59,1.945728442149469959e-60,1.062525582927570044e-61,5.720529836231269853e-63,3.037099126318090057e-64,1.590344879756880087e-65,8.215136869649860140e-67,4.187055796356500151e-68,2.105961193788740010e-69,1.045477877020849939e-70 +2.187156478120630063e-02,8.360554140387460587e-02,1.597939293177869924e-01,2.036077148161750117e-01,1.945760785922280023e-01,1.487560543352109965e-01,9.477168631365390228e-02,5.175302938687639798e-02,2.472868359251079867e-02,1.050300800574680005e-02,4.014846123146280366e-03,1.395183809483479956e-03,4.444320701203220139e-04,1.306824433788680102e-04,3.568160806040770224e-05,9.093024633868010469e-06,2.172419003619220210e-06,4.884834790274119561e-07,1.037367369699729963e-07,2.087056423935419840e-08,3.988957443353329836e-09,7.260981270490240125e-10,1.261617904998560092e-10,2.096791349017409969e-11,3.339636374504610117e-12,5.106394717993829806e-13,7.507515585269479943e-14,1.062888446937449961e-14,1.451058305728390048e-15,1.912678930029880026e-16,2.437115025477270112e-17,3.005173438469220170e-18,3.589837347732470173e-19,4.158302122183250180e-20,4.675115353224010115e-21,5.105984533432969634e-22,5.421659045379489484e-23,5.601259410496589662e-24,5.634524844457669561e-25,5.522654817666599894e-26,5.277680753944960277e-27,4.920559274156719926e-28,4.478374266629659847e-29,3.981137140756380286e-30,3.458674325084570051e-31,2.938003876327329727e-32,2.441460717565630085e-33,1.985670077090300055e-34,1.581324727499419918e-35,1.233616558997859952e-36,9.431166112853870714e-38,7.068877023596269745e-39,5.196396612075019853e-40,3.747845070328839908e-41,2.653035602070679864e-42,1.843892495232910183e-43,1.258643617675630027e-44,8.440790679826370018e-46,5.563016462661159983e-47,3.604238668513929714e-48,2.296241171617929975e-49,1.438940620963050093e-50,8.871690684369259637e-52,5.382958731411739970e-53,3.215113318911780221e-54,1.890767532332179998e-55,1.095088980454569948e-56,6.247838778729850186e-58,3.512174697827359856e-59,1.945728442149469959e-60,1.062525582927570044e-61,5.720529836231269853e-63,3.037099126318090057e-64,1.590344879756880087e-65,8.215136869649860140e-67,4.187055796356500151e-68,2.105961193788740010e-69,1.045477877020849939e-70 +2.187156478120630063e-02,8.360554140387460587e-02,1.597939293177869924e-01,2.036077148161750117e-01,1.945760785922280023e-01,1.487560543352109965e-01,9.477168631365390228e-02,5.175302938687639798e-02,2.472868359251079867e-02,1.050300800574680005e-02,4.014846123146280366e-03,1.395183809483479956e-03,4.444320701203220139e-04,1.306824433788680102e-04,3.568160806040770224e-05,9.093024633868010469e-06,2.172419003619220210e-06,4.884834790274119561e-07,1.037367369699729963e-07,2.087056423935419840e-08,3.988957443353329836e-09,7.260981270490240125e-10,1.261617904998560092e-10,2.096791349017409969e-11,3.339636374504610117e-12,5.106394717993829806e-13,7.507515585269479943e-14,1.062888446937449961e-14,1.451058305728390048e-15,1.912678930029880026e-16,2.437115025477270112e-17,3.005173438469220170e-18,3.589837347732470173e-19,4.158302122183250180e-20,4.675115353224010115e-21,5.105984533432969634e-22,5.421659045379489484e-23,5.601259410496589662e-24,5.634524844457669561e-25,5.522654817666599894e-26,5.277680753944960277e-27,4.920559274156719926e-28,4.478374266629659847e-29,3.981137140756380286e-30,3.458674325084570051e-31,2.938003876327329727e-32,2.441460717565630085e-33,1.985670077090300055e-34,1.581324727499419918e-35,1.233616558997859952e-36,9.431166112853870714e-38,7.068877023596269745e-39,5.196396612075019853e-40,3.747845070328839908e-41,2.653035602070679864e-42,1.843892495232910183e-43,1.258643617675630027e-44,8.440790679826370018e-46,5.563016462661159983e-47,3.604238668513929714e-48,2.296241171617929975e-49,1.438940620963050093e-50,8.871690684369259637e-52,5.382958731411739970e-53,3.215113318911780221e-54,1.890767532332179998e-55,1.095088980454569948e-56,6.247838778729850186e-58,3.512174697827359856e-59,1.945728442149469959e-60,1.062525582927570044e-61,5.720529836231269853e-63,3.037099126318090057e-64,1.590344879756880087e-65,8.215136869649860140e-67,4.187055796356500151e-68,2.105961193788740010e-69,1.045477877020849939e-70 +5.812293385103640270e-02,1.653710785902759994e-01,2.352564798621540054e-01,2.231168504550770093e-01,1.587027347328379967e-01,9.030804427477469309e-02,4.282399877179059872e-02,1.740608936762949935e-02,6.190464722885580078e-03,1.957008782687990039e-03,5.568071529788849684e-04,1.440204460598989988e-04,3.414718730048180238e-05,7.473492714302469681e-06,1.518824558709430018e-06,2.880901322094340147e-07,5.122953705415850327e-08,8.574001220604989582e-09,1.355261393338489910e-09,2.029464678421699948e-10,2.887111339661680150e-11,3.911616494935300182e-12,5.058777975479810013e-13,6.257917222395159753e-14,7.418747731664529363e-15,8.443113469246439647e-16,9.239347657420759436e-17,9.736202003830509448e-18,9.893354604918450258e-19,9.706387131968270253e-20,9.205521256848659922e-21,8.448871840593599696e-22,7.512089874513110367e-23,6.476775838704429841e-24,5.419908820172310035e-25,4.405913506165479930e-26,3.482134142309730140e-27,2.677662302687789779e-28,2.004860866972590109e-29,1.462620522803490082e-30,1.040360135829469943e-31,7.219579067066360199e-33,4.890740474272090025e-34,3.236072130136279875e-35,2.092558209654990010e-36,1.323052461454550096e-37,8.183352604918020287e-39,4.953879490784940355e-40,2.936406869020030237e-41,1.705030618604360004e-42,9.702289053429010412e-44,5.412726262378519886e-45,2.961588748909099861e-46,1.589867431880020114e-47,8.376820014810619754e-49,4.333397473944720051e-50,2.201671546919749871e-51,1.098979788431029907e-52,5.391054754783180108e-54,2.599763022049259835e-55,1.232805442275309892e-56,5.750117760534070306e-58,2.638742916971140181e-59,1.191704453066189981e-60,5.297861728875310390e-62,2.318992231115490100e-63,9.996946990471059777e-65,4.245263166600070230e-66,1.776264908159289932e-67,7.324376765946500387e-69,2.977039982409040027e-70,1.192994247983149923e-71,4.714307256222770244e-73,1.837414144712299835e-74,7.064596578778080569e-76,2.680020612934810037e-77,1.003313308806630041e-78,3.707301262182540209e-80 +5.812293385103640270e-02,1.653710785902759994e-01,2.352564798621540054e-01,2.231168504550770093e-01,1.587027347328379967e-01,9.030804427477469309e-02,4.282399877179059872e-02,1.740608936762949935e-02,6.190464722885580078e-03,1.957008782687990039e-03,5.568071529788849684e-04,1.440204460598989988e-04,3.414718730048180238e-05,7.473492714302469681e-06,1.518824558709430018e-06,2.880901322094340147e-07,5.122953705415850327e-08,8.574001220604989582e-09,1.355261393338489910e-09,2.029464678421699948e-10,2.887111339661680150e-11,3.911616494935300182e-12,5.058777975479810013e-13,6.257917222395159753e-14,7.418747731664529363e-15,8.443113469246439647e-16,9.239347657420759436e-17,9.736202003830509448e-18,9.893354604918450258e-19,9.706387131968270253e-20,9.205521256848659922e-21,8.448871840593599696e-22,7.512089874513110367e-23,6.476775838704429841e-24,5.419908820172310035e-25,4.405913506165479930e-26,3.482134142309730140e-27,2.677662302687789779e-28,2.004860866972590109e-29,1.462620522803490082e-30,1.040360135829469943e-31,7.219579067066360199e-33,4.890740474272090025e-34,3.236072130136279875e-35,2.092558209654990010e-36,1.323052461454550096e-37,8.183352604918020287e-39,4.953879490784940355e-40,2.936406869020030237e-41,1.705030618604360004e-42,9.702289053429010412e-44,5.412726262378519886e-45,2.961588748909099861e-46,1.589867431880020114e-47,8.376820014810619754e-49,4.333397473944720051e-50,2.201671546919749871e-51,1.098979788431029907e-52,5.391054754783180108e-54,2.599763022049259835e-55,1.232805442275309892e-56,5.750117760534070306e-58,2.638742916971140181e-59,1.191704453066189981e-60,5.297861728875310390e-62,2.318992231115490100e-63,9.996946990471059777e-65,4.245263166600070230e-66,1.776264908159289932e-67,7.324376765946500387e-69,2.977039982409040027e-70,1.192994247983149923e-71,4.714307256222770244e-73,1.837414144712299835e-74,7.064596578778080569e-76,2.680020612934810037e-77,1.003313308806630041e-78,3.707301262182540209e-80 +5.812293385103640270e-02,1.653710785902759994e-01,2.352564798621540054e-01,2.231168504550770093e-01,1.587027347328379967e-01,9.030804427477469309e-02,4.282399877179059872e-02,1.740608936762949935e-02,6.190464722885580078e-03,1.957008782687990039e-03,5.568071529788849684e-04,1.440204460598989988e-04,3.414718730048180238e-05,7.473492714302469681e-06,1.518824558709430018e-06,2.880901322094340147e-07,5.122953705415850327e-08,8.574001220604989582e-09,1.355261393338489910e-09,2.029464678421699948e-10,2.887111339661680150e-11,3.911616494935300182e-12,5.058777975479810013e-13,6.257917222395159753e-14,7.418747731664529363e-15,8.443113469246439647e-16,9.239347657420759436e-17,9.736202003830509448e-18,9.893354604918450258e-19,9.706387131968270253e-20,9.205521256848659922e-21,8.448871840593599696e-22,7.512089874513110367e-23,6.476775838704429841e-24,5.419908820172310035e-25,4.405913506165479930e-26,3.482134142309730140e-27,2.677662302687789779e-28,2.004860866972590109e-29,1.462620522803490082e-30,1.040360135829469943e-31,7.219579067066360199e-33,4.890740474272090025e-34,3.236072130136279875e-35,2.092558209654990010e-36,1.323052461454550096e-37,8.183352604918020287e-39,4.953879490784940355e-40,2.936406869020030237e-41,1.705030618604360004e-42,9.702289053429010412e-44,5.412726262378519886e-45,2.961588748909099861e-46,1.589867431880020114e-47,8.376820014810619754e-49,4.333397473944720051e-50,2.201671546919749871e-51,1.098979788431029907e-52,5.391054754783180108e-54,2.599763022049259835e-55,1.232805442275309892e-56,5.750117760534070306e-58,2.638742916971140181e-59,1.191704453066189981e-60,5.297861728875310390e-62,2.318992231115490100e-63,9.996946990471059777e-65,4.245263166600070230e-66,1.776264908159289932e-67,7.324376765946500387e-69,2.977039982409040027e-70,1.192994247983149923e-71,4.714307256222770244e-73,1.837414144712299835e-74,7.064596578778080569e-76,2.680020612934810037e-77,1.003313308806630041e-78,3.707301262182540209e-80 +2.187156478120630063e-02,8.360554140387460587e-02,1.597939293177869924e-01,2.036077148161750117e-01,1.945760785922280023e-01,1.487560543352109965e-01,9.477168631365390228e-02,5.175302938687639798e-02,2.472868359251079867e-02,1.050300800574680005e-02,4.014846123146280366e-03,1.395183809483479956e-03,4.444320701203220139e-04,1.306824433788680102e-04,3.568160806040770224e-05,9.093024633868010469e-06,2.172419003619220210e-06,4.884834790274119561e-07,1.037367369699729963e-07,2.087056423935419840e-08,3.988957443353329836e-09,7.260981270490240125e-10,1.261617904998560092e-10,2.096791349017409969e-11,3.339636374504610117e-12,5.106394717993829806e-13,7.507515585269479943e-14,1.062888446937449961e-14,1.451058305728390048e-15,1.912678930029880026e-16,2.437115025477270112e-17,3.005173438469220170e-18,3.589837347732470173e-19,4.158302122183250180e-20,4.675115353224010115e-21,5.105984533432969634e-22,5.421659045379489484e-23,5.601259410496589662e-24,5.634524844457669561e-25,5.522654817666599894e-26,5.277680753944960277e-27,4.920559274156719926e-28,4.478374266629659847e-29,3.981137140756380286e-30,3.458674325084570051e-31,2.938003876327329727e-32,2.441460717565630085e-33,1.985670077090300055e-34,1.581324727499419918e-35,1.233616558997859952e-36,9.431166112853870714e-38,7.068877023596269745e-39,5.196396612075019853e-40,3.747845070328839908e-41,2.653035602070679864e-42,1.843892495232910183e-43,1.258643617675630027e-44,8.440790679826370018e-46,5.563016462661159983e-47,3.604238668513929714e-48,2.296241171617929975e-49,1.438940620963050093e-50,8.871690684369259637e-52,5.382958731411739970e-53,3.215113318911780221e-54,1.890767532332179998e-55,1.095088980454569948e-56,6.247838778729850186e-58,3.512174697827359856e-59,1.945728442149469959e-60,1.062525582927570044e-61,5.720529836231269853e-63,3.037099126318090057e-64,1.590344879756880087e-65,8.215136869649860140e-67,4.187055796356500151e-68,2.105961193788740010e-69,1.045477877020849939e-70 +2.187156478120630063e-02,8.360554140387460587e-02,1.597939293177869924e-01,2.036077148161750117e-01,1.945760785922280023e-01,1.487560543352109965e-01,9.477168631365390228e-02,5.175302938687639798e-02,2.472868359251079867e-02,1.050300800574680005e-02,4.014846123146280366e-03,1.395183809483479956e-03,4.444320701203220139e-04,1.306824433788680102e-04,3.568160806040770224e-05,9.093024633868010469e-06,2.172419003619220210e-06,4.884834790274119561e-07,1.037367369699729963e-07,2.087056423935419840e-08,3.988957443353329836e-09,7.260981270490240125e-10,1.261617904998560092e-10,2.096791349017409969e-11,3.339636374504610117e-12,5.106394717993829806e-13,7.507515585269479943e-14,1.062888446937449961e-14,1.451058305728390048e-15,1.912678930029880026e-16,2.437115025477270112e-17,3.005173438469220170e-18,3.589837347732470173e-19,4.158302122183250180e-20,4.675115353224010115e-21,5.105984533432969634e-22,5.421659045379489484e-23,5.601259410496589662e-24,5.634524844457669561e-25,5.522654817666599894e-26,5.277680753944960277e-27,4.920559274156719926e-28,4.478374266629659847e-29,3.981137140756380286e-30,3.458674325084570051e-31,2.938003876327329727e-32,2.441460717565630085e-33,1.985670077090300055e-34,1.581324727499419918e-35,1.233616558997859952e-36,9.431166112853870714e-38,7.068877023596269745e-39,5.196396612075019853e-40,3.747845070328839908e-41,2.653035602070679864e-42,1.843892495232910183e-43,1.258643617675630027e-44,8.440790679826370018e-46,5.563016462661159983e-47,3.604238668513929714e-48,2.296241171617929975e-49,1.438940620963050093e-50,8.871690684369259637e-52,5.382958731411739970e-53,3.215113318911780221e-54,1.890767532332179998e-55,1.095088980454569948e-56,6.247838778729850186e-58,3.512174697827359856e-59,1.945728442149469959e-60,1.062525582927570044e-61,5.720529836231269853e-63,3.037099126318090057e-64,1.590344879756880087e-65,8.215136869649860140e-67,4.187055796356500151e-68,2.105961193788740010e-69,1.045477877020849939e-70 +2.187156478120630063e-02,8.360554140387460587e-02,1.597939293177869924e-01,2.036077148161750117e-01,1.945760785922280023e-01,1.487560543352109965e-01,9.477168631365390228e-02,5.175302938687639798e-02,2.472868359251079867e-02,1.050300800574680005e-02,4.014846123146280366e-03,1.395183809483479956e-03,4.444320701203220139e-04,1.306824433788680102e-04,3.568160806040770224e-05,9.093024633868010469e-06,2.172419003619220210e-06,4.884834790274119561e-07,1.037367369699729963e-07,2.087056423935419840e-08,3.988957443353329836e-09,7.260981270490240125e-10,1.261617904998560092e-10,2.096791349017409969e-11,3.339636374504610117e-12,5.106394717993829806e-13,7.507515585269479943e-14,1.062888446937449961e-14,1.451058305728390048e-15,1.912678930029880026e-16,2.437115025477270112e-17,3.005173438469220170e-18,3.589837347732470173e-19,4.158302122183250180e-20,4.675115353224010115e-21,5.105984533432969634e-22,5.421659045379489484e-23,5.601259410496589662e-24,5.634524844457669561e-25,5.522654817666599894e-26,5.277680753944960277e-27,4.920559274156719926e-28,4.478374266629659847e-29,3.981137140756380286e-30,3.458674325084570051e-31,2.938003876327329727e-32,2.441460717565630085e-33,1.985670077090300055e-34,1.581324727499419918e-35,1.233616558997859952e-36,9.431166112853870714e-38,7.068877023596269745e-39,5.196396612075019853e-40,3.747845070328839908e-41,2.653035602070679864e-42,1.843892495232910183e-43,1.258643617675630027e-44,8.440790679826370018e-46,5.563016462661159983e-47,3.604238668513929714e-48,2.296241171617929975e-49,1.438940620963050093e-50,8.871690684369259637e-52,5.382958731411739970e-53,3.215113318911780221e-54,1.890767532332179998e-55,1.095088980454569948e-56,6.247838778729850186e-58,3.512174697827359856e-59,1.945728442149469959e-60,1.062525582927570044e-61,5.720529836231269853e-63,3.037099126318090057e-64,1.590344879756880087e-65,8.215136869649860140e-67,4.187055796356500151e-68,2.105961193788740010e-69,1.045477877020849939e-70 +2.187156478120630063e-02,8.360554140387460587e-02,1.597939293177869924e-01,2.036077148161750117e-01,1.945760785922280023e-01,1.487560543352109965e-01,9.477168631365390228e-02,5.175302938687639798e-02,2.472868359251079867e-02,1.050300800574680005e-02,4.014846123146280366e-03,1.395183809483479956e-03,4.444320701203220139e-04,1.306824433788680102e-04,3.568160806040770224e-05,9.093024633868010469e-06,2.172419003619220210e-06,4.884834790274119561e-07,1.037367369699729963e-07,2.087056423935419840e-08,3.988957443353329836e-09,7.260981270490240125e-10,1.261617904998560092e-10,2.096791349017409969e-11,3.339636374504610117e-12,5.106394717993829806e-13,7.507515585269479943e-14,1.062888446937449961e-14,1.451058305728390048e-15,1.912678930029880026e-16,2.437115025477270112e-17,3.005173438469220170e-18,3.589837347732470173e-19,4.158302122183250180e-20,4.675115353224010115e-21,5.105984533432969634e-22,5.421659045379489484e-23,5.601259410496589662e-24,5.634524844457669561e-25,5.522654817666599894e-26,5.277680753944960277e-27,4.920559274156719926e-28,4.478374266629659847e-29,3.981137140756380286e-30,3.458674325084570051e-31,2.938003876327329727e-32,2.441460717565630085e-33,1.985670077090300055e-34,1.581324727499419918e-35,1.233616558997859952e-36,9.431166112853870714e-38,7.068877023596269745e-39,5.196396612075019853e-40,3.747845070328839908e-41,2.653035602070679864e-42,1.843892495232910183e-43,1.258643617675630027e-44,8.440790679826370018e-46,5.563016462661159983e-47,3.604238668513929714e-48,2.296241171617929975e-49,1.438940620963050093e-50,8.871690684369259637e-52,5.382958731411739970e-53,3.215113318911780221e-54,1.890767532332179998e-55,1.095088980454569948e-56,6.247838778729850186e-58,3.512174697827359856e-59,1.945728442149469959e-60,1.062525582927570044e-61,5.720529836231269853e-63,3.037099126318090057e-64,1.590344879756880087e-65,8.215136869649860140e-67,4.187055796356500151e-68,2.105961193788740010e-69,1.045477877020849939e-70 +2.187156478120630063e-02,8.360554140387460587e-02,1.597939293177869924e-01,2.036077148161750117e-01,1.945760785922280023e-01,1.487560543352109965e-01,9.477168631365390228e-02,5.175302938687639798e-02,2.472868359251079867e-02,1.050300800574680005e-02,4.014846123146280366e-03,1.395183809483479956e-03,4.444320701203220139e-04,1.306824433788680102e-04,3.568160806040770224e-05,9.093024633868010469e-06,2.172419003619220210e-06,4.884834790274119561e-07,1.037367369699729963e-07,2.087056423935419840e-08,3.988957443353329836e-09,7.260981270490240125e-10,1.261617904998560092e-10,2.096791349017409969e-11,3.339636374504610117e-12,5.106394717993829806e-13,7.507515585269479943e-14,1.062888446937449961e-14,1.451058305728390048e-15,1.912678930029880026e-16,2.437115025477270112e-17,3.005173438469220170e-18,3.589837347732470173e-19,4.158302122183250180e-20,4.675115353224010115e-21,5.105984533432969634e-22,5.421659045379489484e-23,5.601259410496589662e-24,5.634524844457669561e-25,5.522654817666599894e-26,5.277680753944960277e-27,4.920559274156719926e-28,4.478374266629659847e-29,3.981137140756380286e-30,3.458674325084570051e-31,2.938003876327329727e-32,2.441460717565630085e-33,1.985670077090300055e-34,1.581324727499419918e-35,1.233616558997859952e-36,9.431166112853870714e-38,7.068877023596269745e-39,5.196396612075019853e-40,3.747845070328839908e-41,2.653035602070679864e-42,1.843892495232910183e-43,1.258643617675630027e-44,8.440790679826370018e-46,5.563016462661159983e-47,3.604238668513929714e-48,2.296241171617929975e-49,1.438940620963050093e-50,8.871690684369259637e-52,5.382958731411739970e-53,3.215113318911780221e-54,1.890767532332179998e-55,1.095088980454569948e-56,6.247838778729850186e-58,3.512174697827359856e-59,1.945728442149469959e-60,1.062525582927570044e-61,5.720529836231269853e-63,3.037099126318090057e-64,1.590344879756880087e-65,8.215136869649860140e-67,4.187055796356500151e-68,2.105961193788740010e-69,1.045477877020849939e-70 +2.187156478120630063e-02,8.360554140387460587e-02,1.597939293177869924e-01,2.036077148161750117e-01,1.945760785922280023e-01,1.487560543352109965e-01,9.477168631365390228e-02,5.175302938687639798e-02,2.472868359251079867e-02,1.050300800574680005e-02,4.014846123146280366e-03,1.395183809483479956e-03,4.444320701203220139e-04,1.306824433788680102e-04,3.568160806040770224e-05,9.093024633868010469e-06,2.172419003619220210e-06,4.884834790274119561e-07,1.037367369699729963e-07,2.087056423935419840e-08,3.988957443353329836e-09,7.260981270490240125e-10,1.261617904998560092e-10,2.096791349017409969e-11,3.339636374504610117e-12,5.106394717993829806e-13,7.507515585269479943e-14,1.062888446937449961e-14,1.451058305728390048e-15,1.912678930029880026e-16,2.437115025477270112e-17,3.005173438469220170e-18,3.589837347732470173e-19,4.158302122183250180e-20,4.675115353224010115e-21,5.105984533432969634e-22,5.421659045379489484e-23,5.601259410496589662e-24,5.634524844457669561e-25,5.522654817666599894e-26,5.277680753944960277e-27,4.920559274156719926e-28,4.478374266629659847e-29,3.981137140756380286e-30,3.458674325084570051e-31,2.938003876327329727e-32,2.441460717565630085e-33,1.985670077090300055e-34,1.581324727499419918e-35,1.233616558997859952e-36,9.431166112853870714e-38,7.068877023596269745e-39,5.196396612075019853e-40,3.747845070328839908e-41,2.653035602070679864e-42,1.843892495232910183e-43,1.258643617675630027e-44,8.440790679826370018e-46,5.563016462661159983e-47,3.604238668513929714e-48,2.296241171617929975e-49,1.438940620963050093e-50,8.871690684369259637e-52,5.382958731411739970e-53,3.215113318911780221e-54,1.890767532332179998e-55,1.095088980454569948e-56,6.247838778729850186e-58,3.512174697827359856e-59,1.945728442149469959e-60,1.062525582927570044e-61,5.720529836231269853e-63,3.037099126318090057e-64,1.590344879756880087e-65,8.215136869649860140e-67,4.187055796356500151e-68,2.105961193788740010e-69,1.045477877020849939e-70 +9.719762568479080322e-02,2.265685397566289949e-01,2.640666520698959907e-01,2.051805804115789944e-01,1.195694446308459974e-01,5.574349019054480187e-02,2.165642950711500064e-02,7.211618854150080027e-03,2.101293552124580168e-03,5.442371301089919807e-04,1.268621645656389948e-04,2.688334970165440023e-05,5.222110830689879590e-06,9.363682552949949827e-07,1.559059161182239946e-07,2.422787285557660052e-08,3.529711847140960202e-09,4.839876508929410329e-10,6.267664264801159605e-11,7.689464093907009193e-12,8.962104984526120102e-13,9.947974920188189741e-14,1.054037228193190075e-14,1.068247939088879982e-15,1.037539814511080037e-16,9.674058560873710007e-18,8.673199047242719981e-19,7.487890738481540110e-20,6.233693094435099784e-21,5.010618853355809722e-22,3.893265872438220056e-23,2.927496054286810022e-24,2.132506135984669863e-25,1.506330601428380076e-26,1.032726523900230045e-27,6.877985190026859608e-29,4.453512595809830027e-30,2.805723762120480074e-31,1.721096664941740117e-32,1.028690206952590063e-33,5.994715313495129502e-35,3.408228126286139820e-36,1.891573909316770075e-37,1.025412976089170040e-38,5.432379251765939613e-40,2.813983311047030080e-41,1.425960958613110056e-42,7.072186853062670273e-44,3.434443993391999999e-45,1.633820375747750071e-46,7.616899983920450305e-48,3.481384779600979965e-49,1.560603699239570064e-50,6.863738227247259706e-52,2.962858434541909868e-53,1.255718120292259974e-54,5.226946845521300017e-56,2.137554405773069868e-57,8.590790598274639757e-59,3.394103416626840011e-60,1.318614265643929951e-61,5.038855268939080228e-63,1.894454347745750065e-64,7.009508135032990341e-66,2.553004142619300020e-67,9.155500954657230016e-69,3.233568951265649846e-70,1.124996762852420099e-71,3.856437608045490070e-73,1.302810254017699929e-74,4.338374886851700214e-76,1.424336744311150080e-77,4.611308003877640075e-79,1.472465813069849924e-80,4.638285209440399944e-82,1.441584605897930000e-83,4.421508793807590204e-85,1.338516463572389954e-86 +9.719762568479080322e-02,2.265685397566289949e-01,2.640666520698959907e-01,2.051805804115789944e-01,1.195694446308459974e-01,5.574349019054480187e-02,2.165642950711500064e-02,7.211618854150080027e-03,2.101293552124580168e-03,5.442371301089919807e-04,1.268621645656389948e-04,2.688334970165440023e-05,5.222110830689879590e-06,9.363682552949949827e-07,1.559059161182239946e-07,2.422787285557660052e-08,3.529711847140960202e-09,4.839876508929410329e-10,6.267664264801159605e-11,7.689464093907009193e-12,8.962104984526120102e-13,9.947974920188189741e-14,1.054037228193190075e-14,1.068247939088879982e-15,1.037539814511080037e-16,9.674058560873710007e-18,8.673199047242719981e-19,7.487890738481540110e-20,6.233693094435099784e-21,5.010618853355809722e-22,3.893265872438220056e-23,2.927496054286810022e-24,2.132506135984669863e-25,1.506330601428380076e-26,1.032726523900230045e-27,6.877985190026859608e-29,4.453512595809830027e-30,2.805723762120480074e-31,1.721096664941740117e-32,1.028690206952590063e-33,5.994715313495129502e-35,3.408228126286139820e-36,1.891573909316770075e-37,1.025412976089170040e-38,5.432379251765939613e-40,2.813983311047030080e-41,1.425960958613110056e-42,7.072186853062670273e-44,3.434443993391999999e-45,1.633820375747750071e-46,7.616899983920450305e-48,3.481384779600979965e-49,1.560603699239570064e-50,6.863738227247259706e-52,2.962858434541909868e-53,1.255718120292259974e-54,5.226946845521300017e-56,2.137554405773069868e-57,8.590790598274639757e-59,3.394103416626840011e-60,1.318614265643929951e-61,5.038855268939080228e-63,1.894454347745750065e-64,7.009508135032990341e-66,2.553004142619300020e-67,9.155500954657230016e-69,3.233568951265649846e-70,1.124996762852420099e-71,3.856437608045490070e-73,1.302810254017699929e-74,4.338374886851700214e-76,1.424336744311150080e-77,4.611308003877640075e-79,1.472465813069849924e-80,4.638285209440399944e-82,1.441584605897930000e-83,4.421508793807590204e-85,1.338516463572389954e-86 +9.719762568479080322e-02,2.265685397566289949e-01,2.640666520698959907e-01,2.051805804115789944e-01,1.195694446308459974e-01,5.574349019054480187e-02,2.165642950711500064e-02,7.211618854150080027e-03,2.101293552124580168e-03,5.442371301089919807e-04,1.268621645656389948e-04,2.688334970165440023e-05,5.222110830689879590e-06,9.363682552949949827e-07,1.559059161182239946e-07,2.422787285557660052e-08,3.529711847140960202e-09,4.839876508929410329e-10,6.267664264801159605e-11,7.689464093907009193e-12,8.962104984526120102e-13,9.947974920188189741e-14,1.054037228193190075e-14,1.068247939088879982e-15,1.037539814511080037e-16,9.674058560873710007e-18,8.673199047242719981e-19,7.487890738481540110e-20,6.233693094435099784e-21,5.010618853355809722e-22,3.893265872438220056e-23,2.927496054286810022e-24,2.132506135984669863e-25,1.506330601428380076e-26,1.032726523900230045e-27,6.877985190026859608e-29,4.453512595809830027e-30,2.805723762120480074e-31,1.721096664941740117e-32,1.028690206952590063e-33,5.994715313495129502e-35,3.408228126286139820e-36,1.891573909316770075e-37,1.025412976089170040e-38,5.432379251765939613e-40,2.813983311047030080e-41,1.425960958613110056e-42,7.072186853062670273e-44,3.434443993391999999e-45,1.633820375747750071e-46,7.616899983920450305e-48,3.481384779600979965e-49,1.560603699239570064e-50,6.863738227247259706e-52,2.962858434541909868e-53,1.255718120292259974e-54,5.226946845521300017e-56,2.137554405773069868e-57,8.590790598274639757e-59,3.394103416626840011e-60,1.318614265643929951e-61,5.038855268939080228e-63,1.894454347745750065e-64,7.009508135032990341e-66,2.553004142619300020e-67,9.155500954657230016e-69,3.233568951265649846e-70,1.124996762852420099e-71,3.856437608045490070e-73,1.302810254017699929e-74,4.338374886851700214e-76,1.424336744311150080e-77,4.611308003877640075e-79,1.472465813069849924e-80,4.638285209440399944e-82,1.441584605897930000e-83,4.421508793807590204e-85,1.338516463572389954e-86 +1.333919565423110076e-01,2.687132200585030106e-01,2.706564792432070155e-01,1.817425276914919896e-01,9.152841952292280203e-02,3.687613102678920229e-02,1.238093631275869952e-02,3.562991941920300165e-03,8.971896268837399645e-04,2.008173005431940087e-04,4.045391106869420175e-05,7.408447725312220038e-06,1.243670592731910048e-06,1.927176111016150063e-07,2.773018445759939851e-08,3.724096190689580129e-09,4.688784771715189570e-10,5.556109126587969783e-11,6.218099289668739857e-12,6.592701949802110250e-13,6.640378534575920511e-14,6.369904669652750111e-15,5.832700042303749835e-16,5.108591743394630075e-17,4.287946380336490346e-18,3.455164491669909846e-19,2.677039445529770118e-20,1.997332629172289902e-21,1.436983416137460090e-22,9.981898483291519574e-24,6.702723195786210199e-25,4.355609950694019771e-26,2.741942818153079984e-27,1.673801081893609976e-28,9.917091442651010645e-30,5.707890906609280412e-31,3.193982657940519993e-32,1.738962514142409906e-33,9.218622141228640243e-35,4.761686486996669991e-36,2.398060838893399871e-37,1.178245340070309952e-38,5.651267058519989767e-40,2.647504859674920148e-41,1.212114035284830033e-42,5.426132028785949989e-44,2.376248828139349946e-45,1.018482211915680085e-46,4.274364965323089741e-48,1.757255503086640139e-49,7.079853942320110015e-51,2.796491558689100024e-52,1.083351925754989953e-53,4.117684623488480005e-55,1.536097248934470071e-56,5.626203187327250246e-58,2.023889400775310143e-59,7.152721422361519750e-61,2.484292383456649903e-62,8.482230827886909614e-64,2.847857319790270025e-65,9.404761412936969448e-67,3.055733557656370040e-68,9.770894513908900622e-70,3.075485906982360175e-71,9.531467583684830391e-73,2.909211061584469816e-74,8.747013928109549767e-76,2.591255852131170079e-77,7.565203167892110341e-79,2.177117888766820060e-80,6.177076617249239466e-82,1.728263198707800134e-83,4.769209635421640046e-85,1.298297089601710029e-86,3.487162700386649814e-88,9.243107605370860222e-90,2.418169139180570041e-91 +1.333919565423110076e-01,2.687132200585030106e-01,2.706564792432070155e-01,1.817425276914919896e-01,9.152841952292280203e-02,3.687613102678920229e-02,1.238093631275869952e-02,3.562991941920300165e-03,8.971896268837399645e-04,2.008173005431940087e-04,4.045391106869420175e-05,7.408447725312220038e-06,1.243670592731910048e-06,1.927176111016150063e-07,2.773018445759939851e-08,3.724096190689580129e-09,4.688784771715189570e-10,5.556109126587969783e-11,6.218099289668739857e-12,6.592701949802110250e-13,6.640378534575920511e-14,6.369904669652750111e-15,5.832700042303749835e-16,5.108591743394630075e-17,4.287946380336490346e-18,3.455164491669909846e-19,2.677039445529770118e-20,1.997332629172289902e-21,1.436983416137460090e-22,9.981898483291519574e-24,6.702723195786210199e-25,4.355609950694019771e-26,2.741942818153079984e-27,1.673801081893609976e-28,9.917091442651010645e-30,5.707890906609280412e-31,3.193982657940519993e-32,1.738962514142409906e-33,9.218622141228640243e-35,4.761686486996669991e-36,2.398060838893399871e-37,1.178245340070309952e-38,5.651267058519989767e-40,2.647504859674920148e-41,1.212114035284830033e-42,5.426132028785949989e-44,2.376248828139349946e-45,1.018482211915680085e-46,4.274364965323089741e-48,1.757255503086640139e-49,7.079853942320110015e-51,2.796491558689100024e-52,1.083351925754989953e-53,4.117684623488480005e-55,1.536097248934470071e-56,5.626203187327250246e-58,2.023889400775310143e-59,7.152721422361519750e-61,2.484292383456649903e-62,8.482230827886909614e-64,2.847857319790270025e-65,9.404761412936969448e-67,3.055733557656370040e-68,9.770894513908900622e-70,3.075485906982360175e-71,9.531467583684830391e-73,2.909211061584469816e-74,8.747013928109549767e-76,2.591255852131170079e-77,7.565203167892110341e-79,2.177117888766820060e-80,6.177076617249239466e-82,1.728263198707800134e-83,4.769209635421640046e-85,1.298297089601710029e-86,3.487162700386649814e-88,9.243107605370860222e-90,2.418169139180570041e-91 +1.333919565423110076e-01,2.687132200585030106e-01,2.706564792432070155e-01,1.817425276914919896e-01,9.152841952292280203e-02,3.687613102678920229e-02,1.238093631275869952e-02,3.562991941920300165e-03,8.971896268837399645e-04,2.008173005431940087e-04,4.045391106869420175e-05,7.408447725312220038e-06,1.243670592731910048e-06,1.927176111016150063e-07,2.773018445759939851e-08,3.724096190689580129e-09,4.688784771715189570e-10,5.556109126587969783e-11,6.218099289668739857e-12,6.592701949802110250e-13,6.640378534575920511e-14,6.369904669652750111e-15,5.832700042303749835e-16,5.108591743394630075e-17,4.287946380336490346e-18,3.455164491669909846e-19,2.677039445529770118e-20,1.997332629172289902e-21,1.436983416137460090e-22,9.981898483291519574e-24,6.702723195786210199e-25,4.355609950694019771e-26,2.741942818153079984e-27,1.673801081893609976e-28,9.917091442651010645e-30,5.707890906609280412e-31,3.193982657940519993e-32,1.738962514142409906e-33,9.218622141228640243e-35,4.761686486996669991e-36,2.398060838893399871e-37,1.178245340070309952e-38,5.651267058519989767e-40,2.647504859674920148e-41,1.212114035284830033e-42,5.426132028785949989e-44,2.376248828139349946e-45,1.018482211915680085e-46,4.274364965323089741e-48,1.757255503086640139e-49,7.079853942320110015e-51,2.796491558689100024e-52,1.083351925754989953e-53,4.117684623488480005e-55,1.536097248934470071e-56,5.626203187327250246e-58,2.023889400775310143e-59,7.152721422361519750e-61,2.484292383456649903e-62,8.482230827886909614e-64,2.847857319790270025e-65,9.404761412936969448e-67,3.055733557656370040e-68,9.770894513908900622e-70,3.075485906982360175e-71,9.531467583684830391e-73,2.909211061584469816e-74,8.747013928109549767e-76,2.591255852131170079e-77,7.565203167892110341e-79,2.177117888766820060e-80,6.177076617249239466e-82,1.728263198707800134e-83,4.769209635421640046e-85,1.298297089601710029e-86,3.487162700386649814e-88,9.243107605370860222e-90,2.418169139180570041e-91 +6.677236706914149722e-02,1.807171379171219894e-01,2.445523902360579871e-01,2.206242391082149923e-01,1.492779977587669893e-01,8.080316362314529655e-02,3.644850184184490055e-02,1.409237559817990044e-02,4.767566840035520302e-03,1.433695257779719900e-03,3.880247398793200257e-04,9.547052240857170245e-05,2.153230984915289973e-05,4.482804880433699934e-06,8.666113408795699637e-07,1.563636057693420063e-07,2.644954843350119886e-08,4.210870720318439989e-09,6.331432348412589583e-10,9.018845299915960347e-11,1.220459885921379931e-11,1.572920535897050023e-12,1.935025397039970029e-13,2.276991456842229872e-14,2.567749936612830041e-15,2.779811109293379816e-16,2.893640044826539877e-17,2.900569723988320002e-18,2.803676141238819947e-19,2.616570349282930052e-20,2.360552852607340020e-21,2.060889006547770051e-22,1.743039351342540089e-23,1.429538380320170067e-24,1.137940279849379960e-25,8.799418917967580676e-27,6.615368801947009817e-28,4.838992003643349791e-29,3.446465024563690071e-30,2.391728266435230149e-31,1.618282779080190046e-32,1.068250546367870080e-33,6.883770786930810222e-35,4.332718894634050126e-36,2.665080945926620121e-37,1.602877963529780080e-38,9.430727459445960715e-40,5.430626118909939723e-41,3.062042641990719784e-42,1.691288602039770028e-43,9.154830028295490432e-45,4.858281520704990124e-46,2.528610291244960129e-47,1.291244840702780020e-48,6.471685546885579743e-50,3.184617559268610027e-51,1.539117676787800028e-52,7.308016818024510248e-54,3.410154945652020343e-55,1.564316652009720085e-56,7.056282924505830317e-58,3.130752372679960156e-59,1.366657209126430033e-60,5.871128893197960426e-62,2.482814131458510057e-63,1.033792601321860075e-64,4.239279508355270011e-66,1.712457558904970074e-67,6.815747169285779516e-69,2.673418498830410108e-70,1.033645162704290011e-71,3.940176673121210209e-73,1.481104722966550041e-74,5.491177400082089941e-76,2.008335765177909853e-77,7.247323154576439719e-79,2.580872809373470101e-80,9.071486209785800215e-82 +6.677236706914149722e-02,1.807171379171219894e-01,2.445523902360579871e-01,2.206242391082149923e-01,1.492779977587669893e-01,8.080316362314529655e-02,3.644850184184490055e-02,1.409237559817990044e-02,4.767566840035520302e-03,1.433695257779719900e-03,3.880247398793200257e-04,9.547052240857170245e-05,2.153230984915289973e-05,4.482804880433699934e-06,8.666113408795699637e-07,1.563636057693420063e-07,2.644954843350119886e-08,4.210870720318439989e-09,6.331432348412589583e-10,9.018845299915960347e-11,1.220459885921379931e-11,1.572920535897050023e-12,1.935025397039970029e-13,2.276991456842229872e-14,2.567749936612830041e-15,2.779811109293379816e-16,2.893640044826539877e-17,2.900569723988320002e-18,2.803676141238819947e-19,2.616570349282930052e-20,2.360552852607340020e-21,2.060889006547770051e-22,1.743039351342540089e-23,1.429538380320170067e-24,1.137940279849379960e-25,8.799418917967580676e-27,6.615368801947009817e-28,4.838992003643349791e-29,3.446465024563690071e-30,2.391728266435230149e-31,1.618282779080190046e-32,1.068250546367870080e-33,6.883770786930810222e-35,4.332718894634050126e-36,2.665080945926620121e-37,1.602877963529780080e-38,9.430727459445960715e-40,5.430626118909939723e-41,3.062042641990719784e-42,1.691288602039770028e-43,9.154830028295490432e-45,4.858281520704990124e-46,2.528610291244960129e-47,1.291244840702780020e-48,6.471685546885579743e-50,3.184617559268610027e-51,1.539117676787800028e-52,7.308016818024510248e-54,3.410154945652020343e-55,1.564316652009720085e-56,7.056282924505830317e-58,3.130752372679960156e-59,1.366657209126430033e-60,5.871128893197960426e-62,2.482814131458510057e-63,1.033792601321860075e-64,4.239279508355270011e-66,1.712457558904970074e-67,6.815747169285779516e-69,2.673418498830410108e-70,1.033645162704290011e-71,3.940176673121210209e-73,1.481104722966550041e-74,5.491177400082089941e-76,2.008335765177909853e-77,7.247323154576439719e-79,2.580872809373470101e-80,9.071486209785800215e-82 +6.677236706914149722e-02,1.807171379171219894e-01,2.445523902360579871e-01,2.206242391082149923e-01,1.492779977587669893e-01,8.080316362314529655e-02,3.644850184184490055e-02,1.409237559817990044e-02,4.767566840035520302e-03,1.433695257779719900e-03,3.880247398793200257e-04,9.547052240857170245e-05,2.153230984915289973e-05,4.482804880433699934e-06,8.666113408795699637e-07,1.563636057693420063e-07,2.644954843350119886e-08,4.210870720318439989e-09,6.331432348412589583e-10,9.018845299915960347e-11,1.220459885921379931e-11,1.572920535897050023e-12,1.935025397039970029e-13,2.276991456842229872e-14,2.567749936612830041e-15,2.779811109293379816e-16,2.893640044826539877e-17,2.900569723988320002e-18,2.803676141238819947e-19,2.616570349282930052e-20,2.360552852607340020e-21,2.060889006547770051e-22,1.743039351342540089e-23,1.429538380320170067e-24,1.137940279849379960e-25,8.799418917967580676e-27,6.615368801947009817e-28,4.838992003643349791e-29,3.446465024563690071e-30,2.391728266435230149e-31,1.618282779080190046e-32,1.068250546367870080e-33,6.883770786930810222e-35,4.332718894634050126e-36,2.665080945926620121e-37,1.602877963529780080e-38,9.430727459445960715e-40,5.430626118909939723e-41,3.062042641990719784e-42,1.691288602039770028e-43,9.154830028295490432e-45,4.858281520704990124e-46,2.528610291244960129e-47,1.291244840702780020e-48,6.471685546885579743e-50,3.184617559268610027e-51,1.539117676787800028e-52,7.308016818024510248e-54,3.410154945652020343e-55,1.564316652009720085e-56,7.056282924505830317e-58,3.130752372679960156e-59,1.366657209126430033e-60,5.871128893197960426e-62,2.482814131458510057e-63,1.033792601321860075e-64,4.239279508355270011e-66,1.712457558904970074e-67,6.815747169285779516e-69,2.673418498830410108e-70,1.033645162704290011e-71,3.940176673121210209e-73,1.481104722966550041e-74,5.491177400082089941e-76,2.008335765177909853e-77,7.247323154576439719e-79,2.580872809373470101e-80,9.071486209785800215e-82 +6.094717344643320323e-02,1.705148203702830101e-01,2.385287317012670105e-01,2.224477447120130069e-01,1.555881720449300010e-01,8.705929318050910359e-02,4.059499098096139985e-02,1.622493523870120052e-02,5.674159606799010144e-03,1.763874172398409912e-03,4.934875083692609942e-04,1.255139627651479894e-04,2.926303442339809962e-05,6.297737704049639777e-06,1.258534414337640043e-06,2.347374591858240106e-07,4.104601311251369910e-08,6.755081932164609983e-09,1.049945311575579998e-09,1.546043255063920063e-10,2.162719557073530036e-11,2.881306609925340195e-12,3.664167830186849948e-13,4.457138035820660089e-14,5.195811720808610039e-15,5.814628322543409918e-16,6.256870612269250328e-17,6.483387401719810006e-18,6.478172440637300017e-19,6.249756099273779767e-20,5.828413790522900100e-21,5.260139307935130168e-22,4.598919741144429800e-23,3.898975025442739754e-24,3.208337881213030108e-25,2.564605784539589986e-26,1.993088941449819837e-27,1.507070324141679995e-28,1.109579653272490056e-29,7.959805212446000830e-31,5.567381878568899536e-32,3.799056194497189755e-33,2.530666930180799844e-34,1.646550659100810101e-35,1.046962155132540003e-36,6.509191256107939482e-38,3.958929458827670122e-39,2.356614080887749924e-40,1.373585803770659962e-41,7.842748284398970332e-43,4.388406350292759781e-44,2.407383178044630119e-45,1.295240574602199963e-46,6.837276352604559529e-48,3.542402753193249791e-49,1.801954455676919977e-50,9.002525200756590260e-52,4.418735976602629921e-53,2.131467043669439912e-54,1.010730039025590036e-55,4.712946236923630252e-57,2.161579501895790081e-58,9.754119828998039551e-60,4.331677346603449674e-61,1.893584494189239967e-62,8.150418232310489797e-64,3.454971919860470203e-65,1.442707475327479914e-66,5.935781858562689887e-68,2.406785598644789811e-69,9.619398730687060225e-71,3.790514313706039803e-72,1.472903205357679972e-73,5.644947535693739555e-75,2.134208046478959917e-76,7.961301153104999858e-78,2.930751681442179965e-79,1.064870657977030031e-80 +6.094717344643320323e-02,1.705148203702830101e-01,2.385287317012670105e-01,2.224477447120130069e-01,1.555881720449300010e-01,8.705929318050910359e-02,4.059499098096139985e-02,1.622493523870120052e-02,5.674159606799010144e-03,1.763874172398409912e-03,4.934875083692609942e-04,1.255139627651479894e-04,2.926303442339809962e-05,6.297737704049639777e-06,1.258534414337640043e-06,2.347374591858240106e-07,4.104601311251369910e-08,6.755081932164609983e-09,1.049945311575579998e-09,1.546043255063920063e-10,2.162719557073530036e-11,2.881306609925340195e-12,3.664167830186849948e-13,4.457138035820660089e-14,5.195811720808610039e-15,5.814628322543409918e-16,6.256870612269250328e-17,6.483387401719810006e-18,6.478172440637300017e-19,6.249756099273779767e-20,5.828413790522900100e-21,5.260139307935130168e-22,4.598919741144429800e-23,3.898975025442739754e-24,3.208337881213030108e-25,2.564605784539589986e-26,1.993088941449819837e-27,1.507070324141679995e-28,1.109579653272490056e-29,7.959805212446000830e-31,5.567381878568899536e-32,3.799056194497189755e-33,2.530666930180799844e-34,1.646550659100810101e-35,1.046962155132540003e-36,6.509191256107939482e-38,3.958929458827670122e-39,2.356614080887749924e-40,1.373585803770659962e-41,7.842748284398970332e-43,4.388406350292759781e-44,2.407383178044630119e-45,1.295240574602199963e-46,6.837276352604559529e-48,3.542402753193249791e-49,1.801954455676919977e-50,9.002525200756590260e-52,4.418735976602629921e-53,2.131467043669439912e-54,1.010730039025590036e-55,4.712946236923630252e-57,2.161579501895790081e-58,9.754119828998039551e-60,4.331677346603449674e-61,1.893584494189239967e-62,8.150418232310489797e-64,3.454971919860470203e-65,1.442707475327479914e-66,5.935781858562689887e-68,2.406785598644789811e-69,9.619398730687060225e-71,3.790514313706039803e-72,1.472903205357679972e-73,5.644947535693739555e-75,2.134208046478959917e-76,7.961301153104999858e-78,2.930751681442179965e-79,1.064870657977030031e-80 +6.094717344643320323e-02,1.705148203702830101e-01,2.385287317012670105e-01,2.224477447120130069e-01,1.555881720449300010e-01,8.705929318050910359e-02,4.059499098096139985e-02,1.622493523870120052e-02,5.674159606799010144e-03,1.763874172398409912e-03,4.934875083692609942e-04,1.255139627651479894e-04,2.926303442339809962e-05,6.297737704049639777e-06,1.258534414337640043e-06,2.347374591858240106e-07,4.104601311251369910e-08,6.755081932164609983e-09,1.049945311575579998e-09,1.546043255063920063e-10,2.162719557073530036e-11,2.881306609925340195e-12,3.664167830186849948e-13,4.457138035820660089e-14,5.195811720808610039e-15,5.814628322543409918e-16,6.256870612269250328e-17,6.483387401719810006e-18,6.478172440637300017e-19,6.249756099273779767e-20,5.828413790522900100e-21,5.260139307935130168e-22,4.598919741144429800e-23,3.898975025442739754e-24,3.208337881213030108e-25,2.564605784539589986e-26,1.993088941449819837e-27,1.507070324141679995e-28,1.109579653272490056e-29,7.959805212446000830e-31,5.567381878568899536e-32,3.799056194497189755e-33,2.530666930180799844e-34,1.646550659100810101e-35,1.046962155132540003e-36,6.509191256107939482e-38,3.958929458827670122e-39,2.356614080887749924e-40,1.373585803770659962e-41,7.842748284398970332e-43,4.388406350292759781e-44,2.407383178044630119e-45,1.295240574602199963e-46,6.837276352604559529e-48,3.542402753193249791e-49,1.801954455676919977e-50,9.002525200756590260e-52,4.418735976602629921e-53,2.131467043669439912e-54,1.010730039025590036e-55,4.712946236923630252e-57,2.161579501895790081e-58,9.754119828998039551e-60,4.331677346603449674e-61,1.893584494189239967e-62,8.150418232310489797e-64,3.454971919860470203e-65,1.442707475327479914e-66,5.935781858562689887e-68,2.406785598644789811e-69,9.619398730687060225e-71,3.790514313706039803e-72,1.472903205357679972e-73,5.644947535693739555e-75,2.134208046478959917e-76,7.961301153104999858e-78,2.930751681442179965e-79,1.064870657977030031e-80 +8.984874031306809561e-02,2.165020121871240044e-01,2.608446212921259888e-01,2.095128070471860005e-01,1.262119650944369953e-01,6.082476907261089721e-02,2.442750792267199891e-02,8.408742769153439156e-03,2.532742422351009787e-03,6.781073624157900369e-04,1.633986274380400106e-04,3.579362331694719809e-05,7.187442143118479669e-06,1.332235352131080093e-06,2.292993706010720093e-07,3.683507411485500319e-08,5.547425899587209658e-09,7.863077077782209791e-10,1.052616012317899989e-10,1.334954045122720074e-11,1.608371113158360015e-12,1.845512172956600014e-13,2.021362375601920020e-14,2.117709018765709998e-15,2.126204284148589904e-16,2.049344283448330153e-17,1.899291047310629841e-18,1.695031218842770078e-19,1.458712197541100120e-20,1.212052860937910031e-21,9.735320434316260038e-23,7.567257305828090381e-24,5.698210221635190013e-25,4.160777305821780031e-26,2.948801232441709988e-27,2.030146596980669975e-28,1.358860401720279869e-29,8.849588229835910112e-31,5.611634948947640501e-32,3.467166906472690015e-33,2.088645342228500040e-34,1.227526254225159918e-35,7.042574397981500328e-37,3.946507499593260237e-38,2.161275848408160015e-39,1.157304471298420028e-40,6.062332380152069765e-42,3.108077434758540080e-43,1.560272799211289890e-44,7.672809253642249954e-46,3.697722720993799788e-47,1.747085302488640051e-48,8.095817527353799661e-50,3.680736991056809739e-51,1.642445510661769936e-52,7.195785772378049714e-54,3.096279396029869848e-55,1.308926413237920060e-56,5.437974696436000197e-58,2.220931251335500092e-59,8.919362385567469752e-61,3.523334843180320201e-62,1.369342771654159881e-63,5.237470244196899605e-65,1.971930203695300069e-66,7.310180943336780032e-68,2.668911271034010122e-69,9.598630581289060471e-71,3.401342057919600120e-72,1.187821448033470064e-73,4.088867781279710015e-75,1.387697043534789919e-76,4.644212799332200205e-78,1.532989553388179954e-79,4.991802797016850093e-81,1.603784829525469945e-82,5.084900430516129677e-84,1.591261929428149973e-85 +8.984874031306809561e-02,2.165020121871240044e-01,2.608446212921259888e-01,2.095128070471860005e-01,1.262119650944369953e-01,6.082476907261089721e-02,2.442750792267199891e-02,8.408742769153439156e-03,2.532742422351009787e-03,6.781073624157900369e-04,1.633986274380400106e-04,3.579362331694719809e-05,7.187442143118479669e-06,1.332235352131080093e-06,2.292993706010720093e-07,3.683507411485500319e-08,5.547425899587209658e-09,7.863077077782209791e-10,1.052616012317899989e-10,1.334954045122720074e-11,1.608371113158360015e-12,1.845512172956600014e-13,2.021362375601920020e-14,2.117709018765709998e-15,2.126204284148589904e-16,2.049344283448330153e-17,1.899291047310629841e-18,1.695031218842770078e-19,1.458712197541100120e-20,1.212052860937910031e-21,9.735320434316260038e-23,7.567257305828090381e-24,5.698210221635190013e-25,4.160777305821780031e-26,2.948801232441709988e-27,2.030146596980669975e-28,1.358860401720279869e-29,8.849588229835910112e-31,5.611634948947640501e-32,3.467166906472690015e-33,2.088645342228500040e-34,1.227526254225159918e-35,7.042574397981500328e-37,3.946507499593260237e-38,2.161275848408160015e-39,1.157304471298420028e-40,6.062332380152069765e-42,3.108077434758540080e-43,1.560272799211289890e-44,7.672809253642249954e-46,3.697722720993799788e-47,1.747085302488640051e-48,8.095817527353799661e-50,3.680736991056809739e-51,1.642445510661769936e-52,7.195785772378049714e-54,3.096279396029869848e-55,1.308926413237920060e-56,5.437974696436000197e-58,2.220931251335500092e-59,8.919362385567469752e-61,3.523334843180320201e-62,1.369342771654159881e-63,5.237470244196899605e-65,1.971930203695300069e-66,7.310180943336780032e-68,2.668911271034010122e-69,9.598630581289060471e-71,3.401342057919600120e-72,1.187821448033470064e-73,4.088867781279710015e-75,1.387697043534789919e-76,4.644212799332200205e-78,1.532989553388179954e-79,4.991802797016850093e-81,1.603784829525469945e-82,5.084900430516129677e-84,1.591261929428149973e-85 +8.984874031306809561e-02,2.165020121871240044e-01,2.608446212921259888e-01,2.095128070471860005e-01,1.262119650944369953e-01,6.082476907261089721e-02,2.442750792267199891e-02,8.408742769153439156e-03,2.532742422351009787e-03,6.781073624157900369e-04,1.633986274380400106e-04,3.579362331694719809e-05,7.187442143118479669e-06,1.332235352131080093e-06,2.292993706010720093e-07,3.683507411485500319e-08,5.547425899587209658e-09,7.863077077782209791e-10,1.052616012317899989e-10,1.334954045122720074e-11,1.608371113158360015e-12,1.845512172956600014e-13,2.021362375601920020e-14,2.117709018765709998e-15,2.126204284148589904e-16,2.049344283448330153e-17,1.899291047310629841e-18,1.695031218842770078e-19,1.458712197541100120e-20,1.212052860937910031e-21,9.735320434316260038e-23,7.567257305828090381e-24,5.698210221635190013e-25,4.160777305821780031e-26,2.948801232441709988e-27,2.030146596980669975e-28,1.358860401720279869e-29,8.849588229835910112e-31,5.611634948947640501e-32,3.467166906472690015e-33,2.088645342228500040e-34,1.227526254225159918e-35,7.042574397981500328e-37,3.946507499593260237e-38,2.161275848408160015e-39,1.157304471298420028e-40,6.062332380152069765e-42,3.108077434758540080e-43,1.560272799211289890e-44,7.672809253642249954e-46,3.697722720993799788e-47,1.747085302488640051e-48,8.095817527353799661e-50,3.680736991056809739e-51,1.642445510661769936e-52,7.195785772378049714e-54,3.096279396029869848e-55,1.308926413237920060e-56,5.437974696436000197e-58,2.220931251335500092e-59,8.919362385567469752e-61,3.523334843180320201e-62,1.369342771654159881e-63,5.237470244196899605e-65,1.971930203695300069e-66,7.310180943336780032e-68,2.668911271034010122e-69,9.598630581289060471e-71,3.401342057919600120e-72,1.187821448033470064e-73,4.088867781279710015e-75,1.387697043534789919e-76,4.644212799332200205e-78,1.532989553388179954e-79,4.991802797016850093e-81,1.603784829525469945e-82,5.084900430516129677e-84,1.591261929428149973e-85 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +1.966976057298369940e-01,3.198475623819980185e-01,2.600500976667139974e-01,1.409547573075889959e-01,5.730120018962110012e-02,1.863535566099979932e-02,5.050453851210079739e-03,1.173211573920090013e-03,2.384681175225460104e-04,4.308556432341399911e-05,7.006090730776149603e-06,1.035683467593529906e-06,1.403426812102430097e-07,1.755457779456169952e-08,2.038948820305120036e-09,2.210339766893990049e-10,2.246378978069679956e-11,2.148711343443400142e-12,1.941107301097100039e-13,1.661268819409479877e-14,1.350684418292179922e-15,1.045872073374320001e-16,7.730362460575530633e-18,5.465325005886049859e-19,3.702957462445780275e-20,2.408533471615809858e-21,1.506341044423469987e-22,9.072009938095790444e-24,5.268530003269949637e-25,2.954169645381540188e-26,1.601246333481010056e-27,8.399248415938290540e-29,4.268098361109030113e-30,2.103121926585920025e-31,1.005841397292380006e-32,4.673103857977569817e-34,2.110799118081820028e-35,9.276606858525839519e-37,3.969625407951149788e-38,1.655117731308789974e-39,6.728416569308079558e-41,2.668535511653359980e-42,1.033160200357850035e-43,3.906997954981170091e-45,1.443891231711010018e-46,5.217541798560720151e-48,1.844387103862010054e-49,6.381138790025569547e-51,2.161727388213799831e-52,7.173792597173609798e-54,2.333043218016079856e-55,7.438692040590149620e-57,2.326147273770329869e-58,7.136829302650469589e-60,2.149094542694320158e-61,6.353847741042310350e-63,1.844984611365860164e-64,5.263345317421040357e-66,1.475631244411250010e-67,4.066959075292650080e-69,1.102205372313399975e-70,2.938168241456250100e-72,7.705998893425169526e-74,1.988988923180449946e-75,5.053547616939980383e-77,1.264232577218619929e-78,3.114777388543780041e-80,7.559554149665810291e-82,1.807720325837389929e-83,4.260162077709120143e-85,9.896281806726059244e-87,2.266510194014309944e-88,5.118811676399559712e-90,1.140224224376389956e-91,2.505546778349790061e-93,5.432318483767559762e-95,1.162292948602590001e-96,2.454532853984980055e-98 +1.966976057298369940e-01,3.198475623819980185e-01,2.600500976667139974e-01,1.409547573075889959e-01,5.730120018962110012e-02,1.863535566099979932e-02,5.050453851210079739e-03,1.173211573920090013e-03,2.384681175225460104e-04,4.308556432341399911e-05,7.006090730776149603e-06,1.035683467593529906e-06,1.403426812102430097e-07,1.755457779456169952e-08,2.038948820305120036e-09,2.210339766893990049e-10,2.246378978069679956e-11,2.148711343443400142e-12,1.941107301097100039e-13,1.661268819409479877e-14,1.350684418292179922e-15,1.045872073374320001e-16,7.730362460575530633e-18,5.465325005886049859e-19,3.702957462445780275e-20,2.408533471615809858e-21,1.506341044423469987e-22,9.072009938095790444e-24,5.268530003269949637e-25,2.954169645381540188e-26,1.601246333481010056e-27,8.399248415938290540e-29,4.268098361109030113e-30,2.103121926585920025e-31,1.005841397292380006e-32,4.673103857977569817e-34,2.110799118081820028e-35,9.276606858525839519e-37,3.969625407951149788e-38,1.655117731308789974e-39,6.728416569308079558e-41,2.668535511653359980e-42,1.033160200357850035e-43,3.906997954981170091e-45,1.443891231711010018e-46,5.217541798560720151e-48,1.844387103862010054e-49,6.381138790025569547e-51,2.161727388213799831e-52,7.173792597173609798e-54,2.333043218016079856e-55,7.438692040590149620e-57,2.326147273770329869e-58,7.136829302650469589e-60,2.149094542694320158e-61,6.353847741042310350e-63,1.844984611365860164e-64,5.263345317421040357e-66,1.475631244411250010e-67,4.066959075292650080e-69,1.102205372313399975e-70,2.938168241456250100e-72,7.705998893425169526e-74,1.988988923180449946e-75,5.053547616939980383e-77,1.264232577218619929e-78,3.114777388543780041e-80,7.559554149665810291e-82,1.807720325837389929e-83,4.260162077709120143e-85,9.896281806726059244e-87,2.266510194014309944e-88,5.118811676399559712e-90,1.140224224376389956e-91,2.505546778349790061e-93,5.432318483767559762e-95,1.162292948602590001e-96,2.454532853984980055e-98 +1.966976057298369940e-01,3.198475623819980185e-01,2.600500976667139974e-01,1.409547573075889959e-01,5.730120018962110012e-02,1.863535566099979932e-02,5.050453851210079739e-03,1.173211573920090013e-03,2.384681175225460104e-04,4.308556432341399911e-05,7.006090730776149603e-06,1.035683467593529906e-06,1.403426812102430097e-07,1.755457779456169952e-08,2.038948820305120036e-09,2.210339766893990049e-10,2.246378978069679956e-11,2.148711343443400142e-12,1.941107301097100039e-13,1.661268819409479877e-14,1.350684418292179922e-15,1.045872073374320001e-16,7.730362460575530633e-18,5.465325005886049859e-19,3.702957462445780275e-20,2.408533471615809858e-21,1.506341044423469987e-22,9.072009938095790444e-24,5.268530003269949637e-25,2.954169645381540188e-26,1.601246333481010056e-27,8.399248415938290540e-29,4.268098361109030113e-30,2.103121926585920025e-31,1.005841397292380006e-32,4.673103857977569817e-34,2.110799118081820028e-35,9.276606858525839519e-37,3.969625407951149788e-38,1.655117731308789974e-39,6.728416569308079558e-41,2.668535511653359980e-42,1.033160200357850035e-43,3.906997954981170091e-45,1.443891231711010018e-46,5.217541798560720151e-48,1.844387103862010054e-49,6.381138790025569547e-51,2.161727388213799831e-52,7.173792597173609798e-54,2.333043218016079856e-55,7.438692040590149620e-57,2.326147273770329869e-58,7.136829302650469589e-60,2.149094542694320158e-61,6.353847741042310350e-63,1.844984611365860164e-64,5.263345317421040357e-66,1.475631244411250010e-67,4.066959075292650080e-69,1.102205372313399975e-70,2.938168241456250100e-72,7.705998893425169526e-74,1.988988923180449946e-75,5.053547616939980383e-77,1.264232577218619929e-78,3.114777388543780041e-80,7.559554149665810291e-82,1.807720325837389929e-83,4.260162077709120143e-85,9.896281806726059244e-87,2.266510194014309944e-88,5.118811676399559712e-90,1.140224224376389956e-91,2.505546778349790061e-93,5.432318483767559762e-95,1.162292948602590001e-96,2.454532853984980055e-98 +1.966976057298369940e-01,3.198475623819980185e-01,2.600500976667139974e-01,1.409547573075889959e-01,5.730120018962110012e-02,1.863535566099979932e-02,5.050453851210079739e-03,1.173211573920090013e-03,2.384681175225460104e-04,4.308556432341399911e-05,7.006090730776149603e-06,1.035683467593529906e-06,1.403426812102430097e-07,1.755457779456169952e-08,2.038948820305120036e-09,2.210339766893990049e-10,2.246378978069679956e-11,2.148711343443400142e-12,1.941107301097100039e-13,1.661268819409479877e-14,1.350684418292179922e-15,1.045872073374320001e-16,7.730362460575530633e-18,5.465325005886049859e-19,3.702957462445780275e-20,2.408533471615809858e-21,1.506341044423469987e-22,9.072009938095790444e-24,5.268530003269949637e-25,2.954169645381540188e-26,1.601246333481010056e-27,8.399248415938290540e-29,4.268098361109030113e-30,2.103121926585920025e-31,1.005841397292380006e-32,4.673103857977569817e-34,2.110799118081820028e-35,9.276606858525839519e-37,3.969625407951149788e-38,1.655117731308789974e-39,6.728416569308079558e-41,2.668535511653359980e-42,1.033160200357850035e-43,3.906997954981170091e-45,1.443891231711010018e-46,5.217541798560720151e-48,1.844387103862010054e-49,6.381138790025569547e-51,2.161727388213799831e-52,7.173792597173609798e-54,2.333043218016079856e-55,7.438692040590149620e-57,2.326147273770329869e-58,7.136829302650469589e-60,2.149094542694320158e-61,6.353847741042310350e-63,1.844984611365860164e-64,5.263345317421040357e-66,1.475631244411250010e-67,4.066959075292650080e-69,1.102205372313399975e-70,2.938168241456250100e-72,7.705998893425169526e-74,1.988988923180449946e-75,5.053547616939980383e-77,1.264232577218619929e-78,3.114777388543780041e-80,7.559554149665810291e-82,1.807720325837389929e-83,4.260162077709120143e-85,9.896281806726059244e-87,2.266510194014309944e-88,5.118811676399559712e-90,1.140224224376389956e-91,2.505546778349790061e-93,5.432318483767559762e-95,1.162292948602590001e-96,2.454532853984980055e-98 +1.966976057298369940e-01,3.198475623819980185e-01,2.600500976667139974e-01,1.409547573075889959e-01,5.730120018962110012e-02,1.863535566099979932e-02,5.050453851210079739e-03,1.173211573920090013e-03,2.384681175225460104e-04,4.308556432341399911e-05,7.006090730776149603e-06,1.035683467593529906e-06,1.403426812102430097e-07,1.755457779456169952e-08,2.038948820305120036e-09,2.210339766893990049e-10,2.246378978069679956e-11,2.148711343443400142e-12,1.941107301097100039e-13,1.661268819409479877e-14,1.350684418292179922e-15,1.045872073374320001e-16,7.730362460575530633e-18,5.465325005886049859e-19,3.702957462445780275e-20,2.408533471615809858e-21,1.506341044423469987e-22,9.072009938095790444e-24,5.268530003269949637e-25,2.954169645381540188e-26,1.601246333481010056e-27,8.399248415938290540e-29,4.268098361109030113e-30,2.103121926585920025e-31,1.005841397292380006e-32,4.673103857977569817e-34,2.110799118081820028e-35,9.276606858525839519e-37,3.969625407951149788e-38,1.655117731308789974e-39,6.728416569308079558e-41,2.668535511653359980e-42,1.033160200357850035e-43,3.906997954981170091e-45,1.443891231711010018e-46,5.217541798560720151e-48,1.844387103862010054e-49,6.381138790025569547e-51,2.161727388213799831e-52,7.173792597173609798e-54,2.333043218016079856e-55,7.438692040590149620e-57,2.326147273770329869e-58,7.136829302650469589e-60,2.149094542694320158e-61,6.353847741042310350e-63,1.844984611365860164e-64,5.263345317421040357e-66,1.475631244411250010e-67,4.066959075292650080e-69,1.102205372313399975e-70,2.938168241456250100e-72,7.705998893425169526e-74,1.988988923180449946e-75,5.053547616939980383e-77,1.264232577218619929e-78,3.114777388543780041e-80,7.559554149665810291e-82,1.807720325837389929e-83,4.260162077709120143e-85,9.896281806726059244e-87,2.266510194014309944e-88,5.118811676399559712e-90,1.140224224376389956e-91,2.505546778349790061e-93,5.432318483767559762e-95,1.162292948602590001e-96,2.454532853984980055e-98 +5.658439360707899664e-03,2.928020080834270109e-02,7.575676831761750385e-02,1.306705051534109985e-01,1.690421327648899963e-01,1.749453259779130132e-01,1.508788892889310063e-01,1.115341400315249948e-01,7.214316989473559816e-02,4.147917368909709995e-02,2.146384290011979848e-02,1.009699591532869922e-02,4.353998943224119886e-03,1.733094929946909970e-03,6.405775304802919937e-04,2.209824715511749991e-04,7.146859241649590564e-05,2.175422880915430041e-05,6.253866003974430073e-06,1.703226304080479961e-06,4.406763510786210134e-07,1.085869999914559967e-07,2.554068487347610030e-08,5.746217857316629831e-09,1.238934168543609924e-09,2.564399045798819837e-10,5.103752943660099826e-11,9.781450557514589728e-12,1.807684430430960090e-12,3.225536824034309944e-13,5.563628643983189977e-14,9.286965353258930699e-15,1.501762417985449944e-15,2.354857743905140128e-16,3.583959921540159832e-17,5.298738473491060219e-18,7.616358339802989964e-19,1.065180064017699943e-19,1.450496942582470004e-20,1.924551758719319838e-21,2.489699825744029968e-22,3.142248423137810101e-23,3.871405042059320050e-24,4.658837263917830211e-25,5.479011964779249681e-26,6.300385449192810318e-27,7.087395572098979681e-28,7.803082520335430041e-29,8.412059718636910097e-30,8.883490697489069377e-31,9.193714906895639767e-32,9.328208421268920284e-33,9.282656548153799201e-34,9.063037924868499858e-35,8.684752018914000022e-36,8.170941808386539334e-37,7.550252491758490396e-38,6.854314135842890452e-39,6.115238444408589871e-40,5.363382477248280439e-41,4.625566224622129773e-42,3.923850506065170137e-43,3.274900791644730107e-44,2.689892868571430066e-45,2.174865451075510085e-46,1.731396050263920070e-47,1.357468847236169978e-48,1.048413135986130083e-49,7.978126641228239661e-51,5.983140755081869870e-52,4.422914709609900433e-53,3.223499451720929714e-54,2.316714351471820162e-55,1.642203652300360056e-56,1.148345779862959967e-57,7.922984386892809889e-59,5.394517329759839942e-60,3.625260776408269697e-61 +5.658439360707899664e-03,2.928020080834270109e-02,7.575676831761750385e-02,1.306705051534109985e-01,1.690421327648899963e-01,1.749453259779130132e-01,1.508788892889310063e-01,1.115341400315249948e-01,7.214316989473559816e-02,4.147917368909709995e-02,2.146384290011979848e-02,1.009699591532869922e-02,4.353998943224119886e-03,1.733094929946909970e-03,6.405775304802919937e-04,2.209824715511749991e-04,7.146859241649590564e-05,2.175422880915430041e-05,6.253866003974430073e-06,1.703226304080479961e-06,4.406763510786210134e-07,1.085869999914559967e-07,2.554068487347610030e-08,5.746217857316629831e-09,1.238934168543609924e-09,2.564399045798819837e-10,5.103752943660099826e-11,9.781450557514589728e-12,1.807684430430960090e-12,3.225536824034309944e-13,5.563628643983189977e-14,9.286965353258930699e-15,1.501762417985449944e-15,2.354857743905140128e-16,3.583959921540159832e-17,5.298738473491060219e-18,7.616358339802989964e-19,1.065180064017699943e-19,1.450496942582470004e-20,1.924551758719319838e-21,2.489699825744029968e-22,3.142248423137810101e-23,3.871405042059320050e-24,4.658837263917830211e-25,5.479011964779249681e-26,6.300385449192810318e-27,7.087395572098979681e-28,7.803082520335430041e-29,8.412059718636910097e-30,8.883490697489069377e-31,9.193714906895639767e-32,9.328208421268920284e-33,9.282656548153799201e-34,9.063037924868499858e-35,8.684752018914000022e-36,8.170941808386539334e-37,7.550252491758490396e-38,6.854314135842890452e-39,6.115238444408589871e-40,5.363382477248280439e-41,4.625566224622129773e-42,3.923850506065170137e-43,3.274900791644730107e-44,2.689892868571430066e-45,2.174865451075510085e-46,1.731396050263920070e-47,1.357468847236169978e-48,1.048413135986130083e-49,7.978126641228239661e-51,5.983140755081869870e-52,4.422914709609900433e-53,3.223499451720929714e-54,2.316714351471820162e-55,1.642203652300360056e-56,1.148345779862959967e-57,7.922984386892809889e-59,5.394517329759839942e-60,3.625260776408269697e-61 +5.658439360707899664e-03,2.928020080834270109e-02,7.575676831761750385e-02,1.306705051534109985e-01,1.690421327648899963e-01,1.749453259779130132e-01,1.508788892889310063e-01,1.115341400315249948e-01,7.214316989473559816e-02,4.147917368909709995e-02,2.146384290011979848e-02,1.009699591532869922e-02,4.353998943224119886e-03,1.733094929946909970e-03,6.405775304802919937e-04,2.209824715511749991e-04,7.146859241649590564e-05,2.175422880915430041e-05,6.253866003974430073e-06,1.703226304080479961e-06,4.406763510786210134e-07,1.085869999914559967e-07,2.554068487347610030e-08,5.746217857316629831e-09,1.238934168543609924e-09,2.564399045798819837e-10,5.103752943660099826e-11,9.781450557514589728e-12,1.807684430430960090e-12,3.225536824034309944e-13,5.563628643983189977e-14,9.286965353258930699e-15,1.501762417985449944e-15,2.354857743905140128e-16,3.583959921540159832e-17,5.298738473491060219e-18,7.616358339802989964e-19,1.065180064017699943e-19,1.450496942582470004e-20,1.924551758719319838e-21,2.489699825744029968e-22,3.142248423137810101e-23,3.871405042059320050e-24,4.658837263917830211e-25,5.479011964779249681e-26,6.300385449192810318e-27,7.087395572098979681e-28,7.803082520335430041e-29,8.412059718636910097e-30,8.883490697489069377e-31,9.193714906895639767e-32,9.328208421268920284e-33,9.282656548153799201e-34,9.063037924868499858e-35,8.684752018914000022e-36,8.170941808386539334e-37,7.550252491758490396e-38,6.854314135842890452e-39,6.115238444408589871e-40,5.363382477248280439e-41,4.625566224622129773e-42,3.923850506065170137e-43,3.274900791644730107e-44,2.689892868571430066e-45,2.174865451075510085e-46,1.731396050263920070e-47,1.357468847236169978e-48,1.048413135986130083e-49,7.978126641228239661e-51,5.983140755081869870e-52,4.422914709609900433e-53,3.223499451720929714e-54,2.316714351471820162e-55,1.642203652300360056e-56,1.148345779862959967e-57,7.922984386892809889e-59,5.394517329759839942e-60,3.625260776408269697e-61 +5.658439360707899664e-03,2.928020080834270109e-02,7.575676831761750385e-02,1.306705051534109985e-01,1.690421327648899963e-01,1.749453259779130132e-01,1.508788892889310063e-01,1.115341400315249948e-01,7.214316989473559816e-02,4.147917368909709995e-02,2.146384290011979848e-02,1.009699591532869922e-02,4.353998943224119886e-03,1.733094929946909970e-03,6.405775304802919937e-04,2.209824715511749991e-04,7.146859241649590564e-05,2.175422880915430041e-05,6.253866003974430073e-06,1.703226304080479961e-06,4.406763510786210134e-07,1.085869999914559967e-07,2.554068487347610030e-08,5.746217857316629831e-09,1.238934168543609924e-09,2.564399045798819837e-10,5.103752943660099826e-11,9.781450557514589728e-12,1.807684430430960090e-12,3.225536824034309944e-13,5.563628643983189977e-14,9.286965353258930699e-15,1.501762417985449944e-15,2.354857743905140128e-16,3.583959921540159832e-17,5.298738473491060219e-18,7.616358339802989964e-19,1.065180064017699943e-19,1.450496942582470004e-20,1.924551758719319838e-21,2.489699825744029968e-22,3.142248423137810101e-23,3.871405042059320050e-24,4.658837263917830211e-25,5.479011964779249681e-26,6.300385449192810318e-27,7.087395572098979681e-28,7.803082520335430041e-29,8.412059718636910097e-30,8.883490697489069377e-31,9.193714906895639767e-32,9.328208421268920284e-33,9.282656548153799201e-34,9.063037924868499858e-35,8.684752018914000022e-36,8.170941808386539334e-37,7.550252491758490396e-38,6.854314135842890452e-39,6.115238444408589871e-40,5.363382477248280439e-41,4.625566224622129773e-42,3.923850506065170137e-43,3.274900791644730107e-44,2.689892868571430066e-45,2.174865451075510085e-46,1.731396050263920070e-47,1.357468847236169978e-48,1.048413135986130083e-49,7.978126641228239661e-51,5.983140755081869870e-52,4.422914709609900433e-53,3.223499451720929714e-54,2.316714351471820162e-55,1.642203652300360056e-56,1.148345779862959967e-57,7.922984386892809889e-59,5.394517329759839942e-60,3.625260776408269697e-61 +5.658439360707899664e-03,2.928020080834270109e-02,7.575676831761750385e-02,1.306705051534109985e-01,1.690421327648899963e-01,1.749453259779130132e-01,1.508788892889310063e-01,1.115341400315249948e-01,7.214316989473559816e-02,4.147917368909709995e-02,2.146384290011979848e-02,1.009699591532869922e-02,4.353998943224119886e-03,1.733094929946909970e-03,6.405775304802919937e-04,2.209824715511749991e-04,7.146859241649590564e-05,2.175422880915430041e-05,6.253866003974430073e-06,1.703226304080479961e-06,4.406763510786210134e-07,1.085869999914559967e-07,2.554068487347610030e-08,5.746217857316629831e-09,1.238934168543609924e-09,2.564399045798819837e-10,5.103752943660099826e-11,9.781450557514589728e-12,1.807684430430960090e-12,3.225536824034309944e-13,5.563628643983189977e-14,9.286965353258930699e-15,1.501762417985449944e-15,2.354857743905140128e-16,3.583959921540159832e-17,5.298738473491060219e-18,7.616358339802989964e-19,1.065180064017699943e-19,1.450496942582470004e-20,1.924551758719319838e-21,2.489699825744029968e-22,3.142248423137810101e-23,3.871405042059320050e-24,4.658837263917830211e-25,5.479011964779249681e-26,6.300385449192810318e-27,7.087395572098979681e-28,7.803082520335430041e-29,8.412059718636910097e-30,8.883490697489069377e-31,9.193714906895639767e-32,9.328208421268920284e-33,9.282656548153799201e-34,9.063037924868499858e-35,8.684752018914000022e-36,8.170941808386539334e-37,7.550252491758490396e-38,6.854314135842890452e-39,6.115238444408589871e-40,5.363382477248280439e-41,4.625566224622129773e-42,3.923850506065170137e-43,3.274900791644730107e-44,2.689892868571430066e-45,2.174865451075510085e-46,1.731396050263920070e-47,1.357468847236169978e-48,1.048413135986130083e-49,7.978126641228239661e-51,5.983140755081869870e-52,4.422914709609900433e-53,3.223499451720929714e-54,2.316714351471820162e-55,1.642203652300360056e-56,1.148345779862959967e-57,7.922984386892809889e-59,5.394517329759839942e-60,3.625260776408269697e-61 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +7.490357668545119529e-02,1.941166365677090000e-01,2.515318377291799745e-01,2.172860829451200015e-01,1.407771346200339946e-01,7.296629904026590008e-02,3.151601294014309829e-02,1.166791970744679961e-02,3.779754968949949976e-03,1.088381970661640068e-03,2.820600254284109975e-04,6.645215315380820524e-05,1.435119326485279959e-05,2.860914392138140178e-06,5.295866498206079942e-07,9.149681388917869806e-08,1.481993129932099982e-08,2.259214520924909904e-09,3.252708671105680124e-10,4.436615255800080248e-11,5.748863200601840167e-12,7.094517778535250055e-13,8.357192431922580381e-14,9.416570626216260002e-15,1.016814493852260068e-15,1.054051719793159981e-16,1.050627526074630029e-17,1.008428735596160024e-18,9.333561275632560541e-20,8.340836092435070447e-21,7.205241369737989667e-22,6.023474024415860231e-23,4.878173754400329866e-24,3.830923919426219895e-25,2.920013181074190032e-26,2.162105936824460038e-27,1.556448195472559991e-28,1.090167292284080028e-29,7.434807923756800254e-31,4.940436798369769767e-32,3.200851738035739757e-33,2.023214381104890071e-34,1.248397282704009892e-35,7.523926786394099408e-37,4.431513596867370035e-38,2.552112261876139899e-39,1.437812133426080064e-40,7.928015454042819800e-42,4.280391100509650271e-43,2.263849617021769984e-44,1.173377541627389977e-45,5.962491833983170183e-47,2.971561037824159997e-48,1.453011285757459996e-49,6.973253114631120223e-51,3.285738085358960072e-52,1.520565443687369965e-53,6.913380536077539831e-55,3.089033874272489970e-56,1.356846944243409967e-57,5.860569388200929590e-59,2.489832772401330243e-60,1.040731480050659978e-61,4.281129288962499826e-63,1.733558777871280039e-64,6.911708546738989806e-66,2.713949003140849847e-67,1.049752896888139934e-68,4.000721967147890067e-70,1.502621096194889930e-71,5.563033095086130080e-73,2.030549105514110163e-74,7.308717943158739549e-76,2.594648570665790029e-77,9.086717485809730119e-79,3.139828766243740067e-80,1.070662455007230018e-81,3.603479453308719727e-83 +1.042988767141319988e-02,4.759240953886999942e-02,1.085839808190680045e-01,1.651591224280709869e-01,1.884085629997029887e-01,1.719446608325150005e-01,1.307662008478490123e-01,8.524237242404550385e-02,4.862096824864890060e-02,2.465126189878339910e-02,1.124856747165599996e-02,4.666191889225210047e-03,1.774350488193939977e-03,6.228079103793869630e-04,2.029944416102329890e-04,6.175198879471399368e-05,1.761120321442250094e-05,4.727136781496590362e-06,1.198350125774010089e-06,2.877982751591560207e-07,6.566232450180890022e-08,1.426773453466579995e-08,2.959309589022479955e-09,5.871115542520380111e-10,1.116265359036030052e-10,2.037443155477379880e-11,3.575775255855090147e-12,6.043165839649310084e-13,9.848374231714400359e-14,1.549617838638139917e-14,2.357009941962050136e-15,3.469427228039600147e-16,4.947272884908819706e-17,6.840848747337369802e-18,9.180981939868469131e-19,1.196958658525680051e-19,1.517171625544160097e-20,1.871074369455720069e-21,2.246805689931629958e-22,2.628808618675949931e-23,2.998865863202230129e-24,3.337576629919510160e-25,3.626102007969920071e-26,3.847951802793230216e-27,3.990570696572389977e-28,4.046509434519509793e-29,4.014031604211219650e-30,3.897094989063799821e-31,3.704740696771720203e-32,3.450005584243110283e-33,3.148530144322099936e-34,2.817057693647839920e-35,2.472011346226280049e-36,2.128299054597719979e-37,1.798444144698839941e-38,1.492080747591009893e-39,1.215800623060960041e-40,9.732974104107440619e-42,7.657299539937559984e-43,5.922181135331719532e-44,4.503897498477619804e-45,3.369121902546580190e-46,2.479608391797760061e-47,1.795976335619179965e-48,1.280497390943629996e-49,8.989248850283489969e-51,6.214948433969159878e-52,4.232732168874729959e-53,2.840337437212309871e-54,1.878360337320930041e-55,1.224444010625970041e-56,7.869346065307510305e-58,4.987285265381360415e-59,3.117449390477929897e-60,1.922320307864570076e-61,1.169560123611950002e-62,7.022100199076760141e-64,4.161351094810609770e-65 +1.042988767141319988e-02,4.759240953886999942e-02,1.085839808190680045e-01,1.651591224280709869e-01,1.884085629997029887e-01,1.719446608325150005e-01,1.307662008478490123e-01,8.524237242404550385e-02,4.862096824864890060e-02,2.465126189878339910e-02,1.124856747165599996e-02,4.666191889225210047e-03,1.774350488193939977e-03,6.228079103793869630e-04,2.029944416102329890e-04,6.175198879471399368e-05,1.761120321442250094e-05,4.727136781496590362e-06,1.198350125774010089e-06,2.877982751591560207e-07,6.566232450180890022e-08,1.426773453466579995e-08,2.959309589022479955e-09,5.871115542520380111e-10,1.116265359036030052e-10,2.037443155477379880e-11,3.575775255855090147e-12,6.043165839649310084e-13,9.848374231714400359e-14,1.549617838638139917e-14,2.357009941962050136e-15,3.469427228039600147e-16,4.947272884908819706e-17,6.840848747337369802e-18,9.180981939868469131e-19,1.196958658525680051e-19,1.517171625544160097e-20,1.871074369455720069e-21,2.246805689931629958e-22,2.628808618675949931e-23,2.998865863202230129e-24,3.337576629919510160e-25,3.626102007969920071e-26,3.847951802793230216e-27,3.990570696572389977e-28,4.046509434519509793e-29,4.014031604211219650e-30,3.897094989063799821e-31,3.704740696771720203e-32,3.450005584243110283e-33,3.148530144322099936e-34,2.817057693647839920e-35,2.472011346226280049e-36,2.128299054597719979e-37,1.798444144698839941e-38,1.492080747591009893e-39,1.215800623060960041e-40,9.732974104107440619e-42,7.657299539937559984e-43,5.922181135331719532e-44,4.503897498477619804e-45,3.369121902546580190e-46,2.479608391797760061e-47,1.795976335619179965e-48,1.280497390943629996e-49,8.989248850283489969e-51,6.214948433969159878e-52,4.232732168874729959e-53,2.840337437212309871e-54,1.878360337320930041e-55,1.224444010625970041e-56,7.869346065307510305e-58,4.987285265381360415e-59,3.117449390477929897e-60,1.922320307864570076e-61,1.169560123611950002e-62,7.022100199076760141e-64,4.161351094810609770e-65 +1.042988767141319988e-02,4.759240953886999942e-02,1.085839808190680045e-01,1.651591224280709869e-01,1.884085629997029887e-01,1.719446608325150005e-01,1.307662008478490123e-01,8.524237242404550385e-02,4.862096824864890060e-02,2.465126189878339910e-02,1.124856747165599996e-02,4.666191889225210047e-03,1.774350488193939977e-03,6.228079103793869630e-04,2.029944416102329890e-04,6.175198879471399368e-05,1.761120321442250094e-05,4.727136781496590362e-06,1.198350125774010089e-06,2.877982751591560207e-07,6.566232450180890022e-08,1.426773453466579995e-08,2.959309589022479955e-09,5.871115542520380111e-10,1.116265359036030052e-10,2.037443155477379880e-11,3.575775255855090147e-12,6.043165839649310084e-13,9.848374231714400359e-14,1.549617838638139917e-14,2.357009941962050136e-15,3.469427228039600147e-16,4.947272884908819706e-17,6.840848747337369802e-18,9.180981939868469131e-19,1.196958658525680051e-19,1.517171625544160097e-20,1.871074369455720069e-21,2.246805689931629958e-22,2.628808618675949931e-23,2.998865863202230129e-24,3.337576629919510160e-25,3.626102007969920071e-26,3.847951802793230216e-27,3.990570696572389977e-28,4.046509434519509793e-29,4.014031604211219650e-30,3.897094989063799821e-31,3.704740696771720203e-32,3.450005584243110283e-33,3.148530144322099936e-34,2.817057693647839920e-35,2.472011346226280049e-36,2.128299054597719979e-37,1.798444144698839941e-38,1.492080747591009893e-39,1.215800623060960041e-40,9.732974104107440619e-42,7.657299539937559984e-43,5.922181135331719532e-44,4.503897498477619804e-45,3.369121902546580190e-46,2.479608391797760061e-47,1.795976335619179965e-48,1.280497390943629996e-49,8.989248850283489969e-51,6.214948433969159878e-52,4.232732168874729959e-53,2.840337437212309871e-54,1.878360337320930041e-55,1.224444010625970041e-56,7.869346065307510305e-58,4.987285265381360415e-59,3.117449390477929897e-60,1.922320307864570076e-61,1.169560123611950002e-62,7.022100199076760141e-64,4.161351094810609770e-65 +5.511696288968499780e-02,1.597453697374799919e-01,2.314948231421870006e-01,2.236469753070159938e-01,1.620488815421209927e-01,9.393318187470710290e-02,4.537438833856499709e-02,1.878692682858409957e-02,6.806263478427260379e-03,2.191842016783690159e-03,6.352610793850210465e-04,1.673796144941310058e-04,4.042633005952189789e-05,9.012887815726439261e-06,1.865859465089190053e-06,3.605210864338480227e-07,6.530609093724130581e-08,1.113391156885470003e-08,1.792743938367819964e-09,2.734687226129430173e-10,3.962968922369299697e-11,5.469459012352550044e-12,7.205509440821390005e-13,9.079874707417129633e-14,1.096507519540310039e-14,1.271202112347719910e-15,1.417047010306820070e-16,1.521120061833530044e-17,1.574521020863510046e-18,1.573596806214909978e-19,1.520250696261080100e-20,1.421335218752240037e-21,1.287328959954890068e-22,1.130625040300880042e-23,9.637905925451860180e-25,7.981006027065209640e-26,6.425369955839330155e-27,5.033144678408970222e-28,3.838829451527160162e-29,2.852838660626959948e-30,2.067093970486719895e-31,1.461232636946600051e-32,1.008354111759369984e-33,6.796535946770039768e-35,4.476905651795780174e-36,2.883423465425359990e-37,1.816743424563770091e-38,1.120311358846640021e-39,6.764574780961919881e-41,4.001173855679999910e-42,2.319318639667519917e-43,1.318054118355259999e-44,7.346371712632149349e-46,4.017353326988420025e-47,2.156201134016329964e-48,1.136238709706050026e-49,5.880639464430240139e-51,2.990148096571249968e-52,1.494196467537010115e-53,7.340044517872699665e-55,3.545605756446679779e-56,1.684626426170959859e-57,7.875079011134249954e-59,3.622908541061240139e-60,1.640666826039199888e-61,7.315601502438279995e-63,3.212544151810840089e-64,1.389687984934569953e-65,5.923131713483979719e-67,2.487970918904330011e-68,1.030125789384469982e-69,4.205086283757180032e-71,1.692721129249719980e-72,6.720561433772180030e-74,2.632187582099540140e-75,1.017181780891359996e-76,3.879073250956909961e-78,1.460092115576080119e-79 +5.511696288968499780e-02,1.597453697374799919e-01,2.314948231421870006e-01,2.236469753070159938e-01,1.620488815421209927e-01,9.393318187470710290e-02,4.537438833856499709e-02,1.878692682858409957e-02,6.806263478427260379e-03,2.191842016783690159e-03,6.352610793850210465e-04,1.673796144941310058e-04,4.042633005952189789e-05,9.012887815726439261e-06,1.865859465089190053e-06,3.605210864338480227e-07,6.530609093724130581e-08,1.113391156885470003e-08,1.792743938367819964e-09,2.734687226129430173e-10,3.962968922369299697e-11,5.469459012352550044e-12,7.205509440821390005e-13,9.079874707417129633e-14,1.096507519540310039e-14,1.271202112347719910e-15,1.417047010306820070e-16,1.521120061833530044e-17,1.574521020863510046e-18,1.573596806214909978e-19,1.520250696261080100e-20,1.421335218752240037e-21,1.287328959954890068e-22,1.130625040300880042e-23,9.637905925451860180e-25,7.981006027065209640e-26,6.425369955839330155e-27,5.033144678408970222e-28,3.838829451527160162e-29,2.852838660626959948e-30,2.067093970486719895e-31,1.461232636946600051e-32,1.008354111759369984e-33,6.796535946770039768e-35,4.476905651795780174e-36,2.883423465425359990e-37,1.816743424563770091e-38,1.120311358846640021e-39,6.764574780961919881e-41,4.001173855679999910e-42,2.319318639667519917e-43,1.318054118355259999e-44,7.346371712632149349e-46,4.017353326988420025e-47,2.156201134016329964e-48,1.136238709706050026e-49,5.880639464430240139e-51,2.990148096571249968e-52,1.494196467537010115e-53,7.340044517872699665e-55,3.545605756446679779e-56,1.684626426170959859e-57,7.875079011134249954e-59,3.622908541061240139e-60,1.640666826039199888e-61,7.315601502438279995e-63,3.212544151810840089e-64,1.389687984934569953e-65,5.923131713483979719e-67,2.487970918904330011e-68,1.030125789384469982e-69,4.205086283757180032e-71,1.692721129249719980e-72,6.720561433772180030e-74,2.632187582099540140e-75,1.017181780891359996e-76,3.879073250956909961e-78,1.460092115576080119e-79 +5.511696288968499780e-02,1.597453697374799919e-01,2.314948231421870006e-01,2.236469753070159938e-01,1.620488815421209927e-01,9.393318187470710290e-02,4.537438833856499709e-02,1.878692682858409957e-02,6.806263478427260379e-03,2.191842016783690159e-03,6.352610793850210465e-04,1.673796144941310058e-04,4.042633005952189789e-05,9.012887815726439261e-06,1.865859465089190053e-06,3.605210864338480227e-07,6.530609093724130581e-08,1.113391156885470003e-08,1.792743938367819964e-09,2.734687226129430173e-10,3.962968922369299697e-11,5.469459012352550044e-12,7.205509440821390005e-13,9.079874707417129633e-14,1.096507519540310039e-14,1.271202112347719910e-15,1.417047010306820070e-16,1.521120061833530044e-17,1.574521020863510046e-18,1.573596806214909978e-19,1.520250696261080100e-20,1.421335218752240037e-21,1.287328959954890068e-22,1.130625040300880042e-23,9.637905925451860180e-25,7.981006027065209640e-26,6.425369955839330155e-27,5.033144678408970222e-28,3.838829451527160162e-29,2.852838660626959948e-30,2.067093970486719895e-31,1.461232636946600051e-32,1.008354111759369984e-33,6.796535946770039768e-35,4.476905651795780174e-36,2.883423465425359990e-37,1.816743424563770091e-38,1.120311358846640021e-39,6.764574780961919881e-41,4.001173855679999910e-42,2.319318639667519917e-43,1.318054118355259999e-44,7.346371712632149349e-46,4.017353326988420025e-47,2.156201134016329964e-48,1.136238709706050026e-49,5.880639464430240139e-51,2.990148096571249968e-52,1.494196467537010115e-53,7.340044517872699665e-55,3.545605756446679779e-56,1.684626426170959859e-57,7.875079011134249954e-59,3.622908541061240139e-60,1.640666826039199888e-61,7.315601502438279995e-63,3.212544151810840089e-64,1.389687984934569953e-65,5.923131713483979719e-67,2.487970918904330011e-68,1.030125789384469982e-69,4.205086283757180032e-71,1.692721129249719980e-72,6.720561433772180030e-74,2.632187582099540140e-75,1.017181780891359996e-76,3.879073250956909961e-78,1.460092115576080119e-79 +1.523453475285279912e-01,2.866538151778830201e-01,2.696846706810280270e-01,1.691467029785319875e-01,7.956683371062049648e-02,2.994267539479989956e-02,9.390049513376219278e-03,2.524052434987239957e-03,5.936588086999420276e-04,1.241146186670299978e-04,2.335347257886559859e-05,3.994728914502679870e-06,6.263752621485889479e-07,9.066084773877960330e-08,1.218485233582089975e-08,1.528472192119580042e-09,1.797488372521250065e-10,1.989508041240509912e-11,2.079704943773209868e-12,2.059570457752100103e-13,1.937649356937999988e-14,1.736138725205490060e-15,1.484876294466490123e-16,1.214761358011200072e-17,9.523755933848759962e-19,7.167979902371499780e-20,5.187426561949570248e-21,3.615070138853759766e-22,2.429333991696569979e-23,1.576223359845989914e-24,9.886100822950779661e-26,6.000561233568539845e-27,3.528339966389590026e-28,2.011800976825940050e-29,1.113357472003170030e-30,5.985426667277320093e-32,3.128391836699309843e-33,1.590918567067669895e-34,7.877581123303889844e-36,3.800640637902999820e-37,1.787826403381000010e-38,8.204838189388979903e-40,3.675777886137729931e-41,1.608456557330999955e-42,6.878364551131530289e-44,2.876081617271109819e-45,1.176445749779670016e-46,4.709801217319759991e-48,1.846247289431899893e-49,7.089609606486859845e-51,2.667969419204810166e-52,9.843265552155940491e-54,3.561757836728990277e-55,1.264494804881909948e-56,4.406074336931249971e-58,1.507362341403299937e-59,5.064751765695249701e-61,1.671905934494069966e-62,5.423908771750069885e-64,1.729772128317719983e-65,5.424580708837330060e-67,1.673265553683129920e-68,5.078105410167079817e-70,1.516665097617529985e-71,4.459007975466900303e-73,1.290783552795910003e-74,3.679916954038420100e-76,1.033455416219749906e-77,2.859640001382630289e-79,7.798135966944099904e-81,2.096144865656939865e-82,5.555094808556719684e-84,1.451735541777490119e-85,3.741908639890800060e-87,9.514588073075759588e-89,2.387026594719790128e-90,5.909792000871349660e-92,1.444142340523629974e-93 +1.523453475285279912e-01,2.866538151778830201e-01,2.696846706810280270e-01,1.691467029785319875e-01,7.956683371062049648e-02,2.994267539479989956e-02,9.390049513376219278e-03,2.524052434987239957e-03,5.936588086999420276e-04,1.241146186670299978e-04,2.335347257886559859e-05,3.994728914502679870e-06,6.263752621485889479e-07,9.066084773877960330e-08,1.218485233582089975e-08,1.528472192119580042e-09,1.797488372521250065e-10,1.989508041240509912e-11,2.079704943773209868e-12,2.059570457752100103e-13,1.937649356937999988e-14,1.736138725205490060e-15,1.484876294466490123e-16,1.214761358011200072e-17,9.523755933848759962e-19,7.167979902371499780e-20,5.187426561949570248e-21,3.615070138853759766e-22,2.429333991696569979e-23,1.576223359845989914e-24,9.886100822950779661e-26,6.000561233568539845e-27,3.528339966389590026e-28,2.011800976825940050e-29,1.113357472003170030e-30,5.985426667277320093e-32,3.128391836699309843e-33,1.590918567067669895e-34,7.877581123303889844e-36,3.800640637902999820e-37,1.787826403381000010e-38,8.204838189388979903e-40,3.675777886137729931e-41,1.608456557330999955e-42,6.878364551131530289e-44,2.876081617271109819e-45,1.176445749779670016e-46,4.709801217319759991e-48,1.846247289431899893e-49,7.089609606486859845e-51,2.667969419204810166e-52,9.843265552155940491e-54,3.561757836728990277e-55,1.264494804881909948e-56,4.406074336931249971e-58,1.507362341403299937e-59,5.064751765695249701e-61,1.671905934494069966e-62,5.423908771750069885e-64,1.729772128317719983e-65,5.424580708837330060e-67,1.673265553683129920e-68,5.078105410167079817e-70,1.516665097617529985e-71,4.459007975466900303e-73,1.290783552795910003e-74,3.679916954038420100e-76,1.033455416219749906e-77,2.859640001382630289e-79,7.798135966944099904e-81,2.096144865656939865e-82,5.555094808556719684e-84,1.451735541777490119e-85,3.741908639890800060e-87,9.514588073075759588e-89,2.387026594719790128e-90,5.909792000871349660e-92,1.444142340523629974e-93 +1.523453475285279912e-01,2.866538151778830201e-01,2.696846706810280270e-01,1.691467029785319875e-01,7.956683371062049648e-02,2.994267539479989956e-02,9.390049513376219278e-03,2.524052434987239957e-03,5.936588086999420276e-04,1.241146186670299978e-04,2.335347257886559859e-05,3.994728914502679870e-06,6.263752621485889479e-07,9.066084773877960330e-08,1.218485233582089975e-08,1.528472192119580042e-09,1.797488372521250065e-10,1.989508041240509912e-11,2.079704943773209868e-12,2.059570457752100103e-13,1.937649356937999988e-14,1.736138725205490060e-15,1.484876294466490123e-16,1.214761358011200072e-17,9.523755933848759962e-19,7.167979902371499780e-20,5.187426561949570248e-21,3.615070138853759766e-22,2.429333991696569979e-23,1.576223359845989914e-24,9.886100822950779661e-26,6.000561233568539845e-27,3.528339966389590026e-28,2.011800976825940050e-29,1.113357472003170030e-30,5.985426667277320093e-32,3.128391836699309843e-33,1.590918567067669895e-34,7.877581123303889844e-36,3.800640637902999820e-37,1.787826403381000010e-38,8.204838189388979903e-40,3.675777886137729931e-41,1.608456557330999955e-42,6.878364551131530289e-44,2.876081617271109819e-45,1.176445749779670016e-46,4.709801217319759991e-48,1.846247289431899893e-49,7.089609606486859845e-51,2.667969419204810166e-52,9.843265552155940491e-54,3.561757836728990277e-55,1.264494804881909948e-56,4.406074336931249971e-58,1.507362341403299937e-59,5.064751765695249701e-61,1.671905934494069966e-62,5.423908771750069885e-64,1.729772128317719983e-65,5.424580708837330060e-67,1.673265553683129920e-68,5.078105410167079817e-70,1.516665097617529985e-71,4.459007975466900303e-73,1.290783552795910003e-74,3.679916954038420100e-76,1.033455416219749906e-77,2.859640001382630289e-79,7.798135966944099904e-81,2.096144865656939865e-82,5.555094808556719684e-84,1.451735541777490119e-85,3.741908639890800060e-87,9.514588073075759588e-89,2.387026594719790128e-90,5.909792000871349660e-92,1.444142340523629974e-93 +3.667351615308579726e-02,1.212316575714769973e-01,2.003777703803729937e-01,2.207962929096410065e-01,1.824715992825579891e-01,1.206392882995020038e-01,6.646622423541169444e-02,3.138820357814629813e-02,1.296999969980200049e-02,4.763881487983540053e-03,1.574796501245009960e-03,4.732550407189550171e-04,1.303699487138589898e-04,3.315107642951420157e-05,7.827680508214350635e-06,1.725064447033169917e-06,3.564091411675569944e-07,6.930481446548139533e-08,1.272783077494139934e-08,2.214441867179409974e-09,3.660140699806459851e-10,5.761585062275659759e-11,8.657306423710390639e-12,1.244280932119739982e-12,1.713841664101940064e-13,2.266178840194519972e-14,2.881272435687100149e-15,3.527638328425570177e-16,4.164755530964130263e-17,4.747391064695470094e-18,5.231150871113779640e-19,5.578263743948540178e-20,5.762521491895889849e-21,5.772475663014290469e-22,5.612375057513309809e-23,5.300808730708199855e-24,4.867468228227479547e-25,4.348754525047629747e-26,3.783073589142530035e-27,3.206591777971869826e-28,2.650007942897260126e-29,2.136617648031550055e-30,1.681670915730689959e-31,1.292814010288440116e-32,9.712854114760189782e-34,7.135063528721190440e-35,5.127474449752560247e-36,3.606360514278259923e-37,2.483655718573480080e-38,1.675555457127449910e-39,1.107776874039400082e-40,7.180349945846680275e-42,4.564631883991050156e-43,2.847038776192090106e-44,1.742862456360189996e-45,1.047523844636680038e-46,6.183571442986500031e-48,3.586146436150379708e-49,2.043918234947270067e-50,1.145183280975199929e-51,6.309388078863389840e-53,3.419171605164850077e-54,1.823025321707859995e-55,9.565675496443530379e-57,4.940821478058910104e-58,2.512750094014659800e-59,1.258545307408900032e-60,6.209513052476710105e-62,3.018645569899840204e-63,1.446193900513559966e-64,6.829548253262870211e-66,3.179780351542369957e-67,1.459916837237680094e-68,6.611024239602200641e-70,2.953252104496869993e-71,1.301675561041950024e-72,5.661775582235429918e-74,2.430666739293579759e-75 diff --git a/statsmodels/discrete/tests/results/results_count_margins.py b/statsmodels/discrete/tests/results/results_count_margins.py new file mode 100644 index 0000000..10a957c --- /dev/null +++ b/statsmodels/discrete/tests/results/results_count_margins.py @@ -0,0 +1,394 @@ +import numpy as np + +from statsmodels.tools.testing import MarginTableTestBunch + +est = dict( + rank=7, + N=17, + ic=6, + k=7, + k_eq=1, + k_dv=1, + converged=1, + rc=0, + k_autoCns=0, + ll=-28.46285727296058, + k_eq_model=1, + ll_0=-101.6359341820935, + df_m=6, + chi2=146.3461538182658, + p=4.58013206701e-29, + r2_p=.719952814897477, + properties="b V", + depvar="sexecutions", + which="max", + technique="nr", + singularHmethod="m-marquardt", + ml_method="e2", + crittype="log likelihood", + user="poiss_lf", + title="Poisson regression", + vce="oim", + opt="moptimize", + chi2type="LR", + gof="poiss_g", + estat_cmd="poisson_estat", + predict="poisso_p", + cmd="poisson", + cmdline="poisson sexecutions sincome sperpoverty sperblack LN_VC100k96 south sdegree", # noqa:E501 + ) + +margins_table = np.array([ + 47.514189267677, 12.722695157081, 3.7346009380122, .000188013074, + 22.578164973516, 72.450213561838, np.nan, 1.9599639845401, + 0, 2.3754103372885, 7.6314378245266, .31126642081184, + .75559809249357, -12.58193294904, 17.332753623617, np.nan, + 1.9599639845401, 0, -11.583732327397, 3.8511214886273, + -3.007885459237, .00263072269737, -19.131791745195, -4.0356729095995, + np.nan, 1.9599639845401, 0, -1.807106397978, + 14.19277372084, -.12732580914219, .89868253380624, -29.624431731551, + 26.010218935595, np.nan, 1.9599639845401, 0, + 10.852916363139, 2.6197368291491, 4.1427506161617, .00003431650408, + 5.7183265290336, 15.987506197244, np.nan, 1.9599639845401, + 0, -26.588397789444, 7.6315578612519, -3.4840065780596, + .00049396734722, -41.545976343431, -11.630819235457, np.nan, + 1.9599639845401, 0]).reshape(6, 9) + +margins_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +margins_table_rownames = ['sincome', 'sperpoverty', 'sperblack', + 'LN_VC100k96', 'south', 'sdegree'] + +margins_cov = np.array([ + 10.87507957467, 3.4816608831283, .87483487811437, 3.1229403520191, + -.87306122632875, -2.2870394487277, -12.321063650937, 3.4816608831283, + 5.1715652306254, .27473956091394, 1.7908952063684, -.92880259796684, + 1.8964947971413, -9.0063087868006, .87483487811437, .27473956091394, + 1.1098392181639, -.99390727840297, -.34477731736542, -.98869834020742, + .41772084541889, 3.1229403520191, 1.7908952063684, -.99390727840297, + 17.912620004361, -.30763138390107, 2.8490197200257, -21.269786576194, + -.87306122632875, -.92880259796684, -.34477731736542, -.30763138390107, + .42666000427673, .05265352402592, 1.461997775289, -2.2870394487277, + 1.8964947971413, -.98869834020742, 2.8490197200257, .05265352402592, + 4.0773252373088, -4.46154120848, -12.321063650937, -9.0063087868006, + .41772084541889, -21.269786576194, 1.461997775289, -4.46154120848, + 37.559994394326]).reshape(7, 7) + +margins_cov_colnames = ['sincome', 'sperpoverty', 'sperblack', 'LN_VC100k96', + 'south', 'sdegree', '_cons'] + +margins_cov_rownames = ['sincome', 'sperpoverty', 'sperblack', 'LN_VC100k96', + 'south', 'sdegree', '_cons'] + + +results_poisson_margins_cont = MarginTableTestBunch( + margins_table=margins_table, + margins_table_colnames=margins_table_colnames, + margins_table_rownames=margins_table_rownames, + margins_cov=margins_cov, + margins_cov_colnames=margins_cov_colnames, + margins_cov_rownames=margins_cov_rownames, + **est + ) + +est = dict( + alpha=1.1399915663048, + rank=8, + N=17, + ic=6, + k=8, + k_eq=2, + k_dv=1, + converged=1, + rc=0, + k_autoCns=0, + ll=-27.58269157281191, + k_eq_model=1, + ll_0=-32.87628220135203, + rank0=2, + df_m=6, + chi2=10.58718125708024, + p=.1020042170100994, + ll_c=-28.46285727296058, + chi2_c=1.760331400297339, + r2_p=.1610154881905236, + k_aux=1, + properties="b V", + depvar="sexecutions", + which="max", + technique="nr", + singularHmethod="m-marquardt", + ml_method="e2", + crittype="log likelihood", + user="nbreg_lf", + diparm1="lnalpha, exp label(", + title="Negative binomial regression", + vce="oim", + opt="moptimize", + chi2type="LR", + chi2_ct="LR", + diparm_opt2="noprob", + dispers="mean", + predict="nbreg_p", + cmd="nbreg", + cmdline="nbreg sexecutions sincome sperpoverty sperblack LN_VC100k96 south sdegree", # noqa:E501 + ) + +margins_table = np.array([ + 38.76996449636, 35.863089953808, 1.0810547709719, .27967275079666, + -31.520400187424, 109.06032918014, np.nan, 1.9599639845401, + 0, 2.5208248279391, 11.710699937092, .21525825454332, + .82956597472339, -20.431725282518, 25.473374938396, np.nan, + 1.9599639845401, 0, -8.225606184332, 9.557721280021, + -.86062419517573, .38944505570119, -26.958395667445, 10.507183298781, + np.nan, 1.9599639845401, 0, -4.4150939806524, + 28.010544627225, -.15762256819387, .87475421903252, -59.314752637366, + 50.484564676062, np.nan, 1.9599639845401, 0, + 7.0049476220304, 6.3399264323903, 1.1048941492826, .26920545789466, + -5.4210798500881, 19.430975094149, np.nan, 1.9599639845401, + 0, -25.128303596214, 23.247820190364, -1.0808885904335, + .279746674501, -70.693193888391, 20.436586695964, np.nan, + 1.9599639845401, 0]).reshape(6, 9) + +margins_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +margins_table_rownames = ['sincome', 'sperpoverty', 'sperblack', + 'LN_VC100k96', 'south', 'sdegree'] + +margins_cov = np.array([ + 44.468037032422, 13.291812805254, .84306554343753, -.38095027773819, + -2.1265212254924, -18.06714825989, -30.427077474507, .36347806905257, + 13.291812805254, 15.093124820143, 3.3717840254072, -7.6860995498613, + -3.3867901970823, -1.4200645173727, -12.979849717094, .51706617429388, + .84306554343753, 3.3717840254072, 5.6928040093481, -12.140553562993, + -2.5831646721297, -1.8071496111137, 7.961664784177, .27439267406128, + -.38095027773819, -7.6860995498613, -12.140553562993, 91.950706114029, + 6.6107070350689, 9.5470604840407, -82.665769963947, -1.1433180909155, + -2.1265212254924, -3.3867901970823, -2.5831646721297, 6.6107070350689, + 2.0499053083335, 1.7094543055869, -3.029543334606, -.34297224102579, + -18.06714825989, -1.4200645173727, -1.8071496111137, 9.5470604840407, + 1.7094543055869, 18.442703265156, -6.5839965105886, -.61952491151176, + -30.427077474507, -12.979849717094, 7.961664784177, -82.665769963947, + -3.029543334606, -6.5839965105886, 111.12618806587, .88600743091011, + .36347806905257, .51706617429388, .27439267406128, -1.1433180909155, + -.34297224102579, -.61952491151176, .88600743091011, .71851239110057 + ]).reshape(8, 8) + +margins_cov_colnames = ['sincome', 'sperpoverty', 'sperblack', 'LN_VC100k96', + 'south', 'sdegree', '_cons', '_cons'] + +margins_cov_rownames = ['sincome', 'sperpoverty', 'sperblack', 'LN_VC100k96', + 'south', 'sdegree', '_cons', '_cons'] + + +results_negbin_margins_cont = MarginTableTestBunch( + margins_table=margins_table, + margins_table_colnames=margins_table_colnames, + margins_table_rownames=margins_table_rownames, + margins_cov=margins_cov, + margins_cov_colnames=margins_cov_colnames, + margins_cov_rownames=margins_cov_rownames, + **est + ) + +est = dict( + rank=7, + N=17, + ic=6, + k=8, + k_eq=1, + k_dv=1, + converged=1, + rc=0, + k_autoCns=1, + ll=-28.46285727296058, + k_eq_model=1, + ll_0=-101.6359341820935, + df_m=6, + chi2=146.3461538182658, + p=4.58013206701e-29, + r2_p=.719952814897477, + properties="b V", + depvar="sexecutions", + which="max", + technique="nr", + singularHmethod="m-marquardt", + ml_method="e2", + crittype="log likelihood", + user="poiss_lf", + title="Poisson regression", + vce="oim", + opt="moptimize", + chi2type="LR", + gof="poiss_g", + estat_cmd="poisson_estat", + predict="poisso_p", + cmd="poisson", + cmdline="poisson sexecutions sincome sperpoverty sperblack LN_VC100k96 i.south sdegree", # noqa:E501 + ) + +margins_table = np.array([ + 47.514189267677, 12.72269515678, 3.7346009381004, .00018801307393, + 22.578164974105, 72.450213561249, np.nan, 1.9599639845401, + 0, 2.3754103372885, 7.6314378245485, .31126642081095, + .75559809249425, -12.581932949083, 17.33275362366, np.nan, + 1.9599639845401, 0, -11.583732327397, 3.8511214887188, + -3.0078854591656, .00263072269799, -19.131791745374, -4.0356729094203, + np.nan, 1.9599639845401, 0, -1.807106397978, + 14.192773720841, -.12732580914219, .89868253380624, -29.624431731552, + 26.010218935596, np.nan, 1.9599639845401, 0, + 0, np.nan, np.nan, np.nan, + np.nan, np.nan, np.nan, 1.9599639845401, + 0, 12.894515685772, 5.7673506886042, 2.2357779822979, + .02536631788468, 1.5907160498956, 24.198315321648, np.nan, + 1.9599639845401, 0, -26.588397789444, 7.6315578608763, + -3.4840065782311, .00049396734691, -41.545976342695, -11.630819236193, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +margins_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +margins_table_rownames = ['sincome', 'sperpoverty', 'sperblack', 'LN_VC100k96', + '0b.south', '1.south', 'sdegree'] + +margins_cov = np.array([ + 10.875079574674, 3.4816608831298, .87483487811447, 3.1229403520208, + 0, -.873061226329, -2.2870394487282, -12.321063650942, + 3.4816608831298, 5.1715652306252, .27473956091396, 1.7908952063684, + 0, -.92880259796679, 1.8964947971405, -9.0063087868012, + .87483487811447, .27473956091396, 1.109839218164, -.9939072784041, + 0, -.34477731736544, -.98869834020768, .41772084541996, + 3.1229403520208, 1.7908952063684, -.9939072784041, 17.912620004373, + 0, -.30763138390086, 2.8490197200274, -21.269786576207, + 0, 0, 0, 0, + 0, 0, 0, 0, + -.873061226329, -.92880259796679, -.34477731736544, -.30763138390086, + 0, .42666000427672, .05265352402609, 1.4619977752889, + -2.2870394487282, 1.8964947971405, -.98869834020768, 2.8490197200274, + 0, .05265352402609, 4.0773252373089, -4.4615412084808, + -12.321063650942, -9.0063087868012, .41772084541996, -21.269786576207, + 0, 1.4619977752889, -4.4615412084808, 37.559994394343 + ]).reshape(8, 8) + +margins_cov_colnames = ['sincome', 'sperpoverty', 'sperblack', 'LN_VC100k96', + '0b.south', '1.south', 'sdegree', '_cons'] + +margins_cov_rownames = ['sincome', 'sperpoverty', 'sperblack', 'LN_VC100k96', + '0b.south', '1.south', 'sdegree', '_cons'] + + +results_poisson_margins_dummy = MarginTableTestBunch( + margins_table=margins_table, + margins_table_colnames=margins_table_colnames, + margins_table_rownames=margins_table_rownames, + margins_cov=margins_cov, + margins_cov_colnames=margins_cov_colnames, + margins_cov_rownames=margins_cov_rownames, + **est + ) + +est = dict( + alpha=1.139991566304804, + rank=8, + N=17, + ic=6, + k=9, + k_eq=2, + k_dv=1, + converged=1, + rc=0, + k_autoCns=1, + ll=-27.58269157281191, + k_eq_model=1, + ll_0=-32.87628220135203, + rank0=2, + df_m=6, + chi2=10.58718125708025, + p=.1020042170100991, + ll_c=-28.46285727296058, + chi2_c=1.760331400297339, + r2_p=.1610154881905237, + k_aux=1, + properties="b V", + depvar="sexecutions", + which="max", + technique="nr", + singularHmethod="m-marquardt", + ml_method="e2", + crittype="log likelihood", + user="nbreg_lf", + diparm1="lnalpha, exp label(", + title="Negative binomial regression", + vce="oim", + opt="moptimize", + chi2type="LR", + chi2_ct="LR", + diparm_opt2="noprob", + dispers="mean", + predict="nbreg_p", + cmd="nbreg", + cmdline="nbreg sexecutions sincome sperpoverty sperblack LN_VC100k96 i.south sdegree", # noqa:E501 + ) + +margins_table = np.array([ + 38.769964496355, 35.863089979665, 1.0810547701924, .27967275114341, + -31.520400238107, 109.06032923082, np.nan, 1.9599639845401, + 0, 2.5208248279388, 11.710699937639, .21525825453324, + .82956597473124, -20.43172528359, 25.473374939467, np.nan, + 1.9599639845401, 0, -8.2256061843309, 9.5577212853699, + -.86062419469397, .38944505596662, -26.958395677928, 10.507183309266, + np.nan, 1.9599639845401, 0, -4.4150939806521, + 28.010544626815, -.15762256819618, .87475421903071, -59.314752636561, + 50.484564675257, np.nan, 1.9599639845401, 0, + 0, np.nan, np.nan, np.nan, + np.nan, np.nan, np.nan, 1.9599639845401, + 0, 8.0380552593041, 8.8634487485248, .90687671214231, + .36447199739385, -9.3339850666211, 25.410095585229, np.nan, + 1.9599639845401, 0, -25.12830359621, 23.247820207656, + -1.0808885896294, .27974667485873, -70.693193922279, 20.436586729858, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +margins_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +margins_table_rownames = ['sincome', 'sperpoverty', 'sperblack', 'LN_VC100k96', + '0b.south', '1.south', 'sdegree'] + + +margins_cov = np.array([ + 44.468037032424, 13.291812805256, .84306554343906, -.38095027774827, + 0, -2.1265212254934, -18.067148259892, -30.427077474499, + .36347806905277, 13.291812805256, 15.093124820144, 3.3717840254072, + -7.6860995498609, 0, -3.3867901970823, -1.4200645173736, + -12.979849717095, .51706617429393, .84306554343906, 3.3717840254072, + 5.6928040093478, -12.14055356299, 0, -2.5831646721296, + -1.8071496111144, 7.9616647841741, .27439267406129, -.38095027774827, + -7.6860995498609, -12.14055356299, 91.950706114005, 0, + 6.6107070350678, 9.5470604840447, -82.665769963921, -1.1433180909154, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, -2.1265212254934, -3.3867901970823, -2.5831646721296, + 6.6107070350678, 0, 2.0499053083335, 1.7094543055874, + -3.0295433346046, -.34297224102581, -18.067148259892, -1.4200645173736, + -1.8071496111144, 9.5470604840447, 0, 1.7094543055874, + 18.442703265157, -6.5839965105912, -.61952491151187, -30.427077474499, + -12.979849717095, 7.9616647841741, -82.665769963921, 0, + -3.0295433346046, -6.5839965105912, 111.12618806584, .88600743090998, + .36347806905277, .51706617429393, .27439267406129, -1.1433180909154, + 0, -.34297224102581, -.61952491151187, .88600743090998, + .71851239110059]).reshape(9, 9) + +margins_cov_colnames = ['sincome', 'sperpoverty', 'sperblack', 'LN_VC100k96', + '0b.south', '1.south', 'sdegree', '_cons', '_cons'] + +margins_cov_rownames = ['sincome', 'sperpoverty', 'sperblack', 'LN_VC100k96', + '0b.south', '1.south', 'sdegree', '_cons', '_cons'] + + +results_negbin_margins_dummy = MarginTableTestBunch( + margins_table=margins_table, + margins_table_colnames=margins_table_colnames, + margins_table_rownames=margins_table_rownames, + margins_cov=margins_cov, + margins_cov_colnames=margins_cov_colnames, + margins_cov_rownames=margins_cov_rownames, + **est + ) diff --git a/statsmodels/discrete/tests/results/results_count_robust_cluster.py b/statsmodels/discrete/tests/results/results_count_robust_cluster.py new file mode 100644 index 0000000..447c2ae --- /dev/null +++ b/statsmodels/discrete/tests/results/results_count_robust_cluster.py @@ -0,0 +1,689 @@ +import numpy as np + +from statsmodels.tools.testing import ParamsTableTestBunch + +est = dict( + rank=3, + N=34, + ic=1, + k=3, + k_eq=1, + k_dv=1, + converged=1, + rc=0, + k_autoCns=0, + N_clust=5, + ll=-354.2436413025559, + k_eq_model=1, + ll_0=-356.2029100704882, + df_m=2, + chi2=5.204189583786304, + p=.0741181533729996, + r2_p=.0055004288638308, + cmdline="poisson accident yr_con op_75_79, vce(cluster ship)", + cmd="poisson", + predict="poisso_p", + estat_cmd="poisson_estat", + gof="poiss_g", + chi2type="Wald", + opt="moptimize", + vcetype="Robust", + clustvar="ship", + vce="cluster", + title="Poisson regression", + user="poiss_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="accident", + properties="b V", + ) + +params_table = np.array([ + -.02172061893549, .19933709357097, -.10896426022065, .91323083771076, + -.41241414311748, .36897290524649, np.nan, 1.9599639845401, + 0, .22148585072024, .11093628220713, 1.9965140918162, + .04587799343723, .00405473301549, .43891696842499, np.nan, + 1.9599639845401, 0, 2.2697077143215, 1.1048569901548, + 2.054299999499, .03994666479943, .10422780555076, 4.4351876230922, + np.nan, 1.9599639845401, 0]).reshape(3, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'yr_con op_75_79 _cons'.split() + +cov = np.array([ + .03973527687332, .00976206273414, -.21171095768584, .00976206273414, + .01230685870994, -.06297293767114, -.21171095768584, -.06297293767114, + 1.2207089686939]).reshape(3, 3) + +cov_colnames = 'yr_con op_75_79 _cons'.split() + +cov_rownames = 'yr_con op_75_79 _cons'.split() + + +results_poisson_clu = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +est = dict( + rank=3, + N=34, + ic=1, + k=3, + k_eq=1, + k_dv=1, + converged=1, + rc=0, + k_autoCns=0, + ll=-354.2436413025559, + k_eq_model=1, + ll_0=-356.2029100704882, + df_m=2, + chi2=.1635672212515404, + p=.9214713337295277, + r2_p=.0055004288638308, + cmdline="poisson accident yr_con op_75_79, vce(robust)", + cmd="poisson", + predict="poisso_p", + estat_cmd="poisson_estat", + gof="poiss_g", + chi2type="Wald", + opt="moptimize", + vcetype="Robust", + vce="robust", + title="Poisson regression", + user="poiss_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="accident", + properties="b V", + ) + +params_table = np.array([ + -.02172061893549, .19233713248134, -.11292993014545, .91008610728406, + -.39869447148862, .35525323361764, np.nan, 1.9599639845401, + 0, .22148585072024, .55301404772037, .400506735106, + .68878332380143, -.8624017657564, 1.3053734671969, np.nan, + 1.9599639845401, 0, 2.2697077143215, .66532523368388, + 3.4114258702533, .00064624070669, .96569421829539, 3.5737212103476, + np.nan, 1.9599639845401, 0]).reshape(3, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'yr_con op_75_79 _cons'.split() + +cov = np.array([ + .03699357253114, -.01521223175214, -.09585501859714, -.01521223175214, + .30582453697607, -.1649339692102, -.09585501859714, -.1649339692102, + .44265766657651]).reshape(3, 3) + +cov_colnames = 'yr_con op_75_79 _cons'.split() + +cov_rownames = 'yr_con op_75_79 _cons'.split() + + +results_poisson_hc1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +est = dict( + rank=3, + N=34, + ic=4, + k=3, + k_eq=1, + k_dv=1, + converged=1, + rc=0, + k_autoCns=0, + ll=-91.28727940081573, + k_eq_model=1, + ll_0=-122.0974139280415, + df_m=2, + chi2=61.62026905445154, + p=4.16225408420e-14, + r2_p=.2523405986746273, + cmdline="poisson accident yr_con op_75_79, exposure(service)", + cmd="poisson", + predict="poisso_p", + estat_cmd="poisson_estat", + offset="ln(service)", + gof="poiss_g", + chi2type="LR", + opt="moptimize", + vce="oim", + title="Poisson regression", + user="poiss_lf", + crittype="log likelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="accident", + properties="b V", + ) + +params_table = np.array([ + .30633819450439, .05790831365493, 5.290055523458, 1.222792336e-07, + .19283998533528, .4198364036735, np.nan, 1.9599639845401, + 0, .35592229608495, .12151759298719, 2.9289775030556, + .00340079035234, .11775219034206, .59409240182785, np.nan, + 1.9599639845401, 0, -6.974712802772, .13252425018256, + -52.629709605328, 0, -7.234455560208, -6.714970045336, + np.nan, 1.9599639845401, 0]).reshape(3, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'yr_con op_75_79 _cons'.split() + +cov = np.array([ + .00335337279036, -.00315267340017, -.00589654294427, -.00315267340017, + .0147665254054, -.00165060980569, -.00589654294427, -.00165060980569, + .01756267688645]).reshape(3, 3) + +cov_colnames = 'yr_con op_75_79 _cons'.split() + +cov_rownames = 'yr_con op_75_79 _cons'.split() + + +results_poisson_exposure_nonrobust = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +est = dict( + rank=3, + N=34, + ic=4, + k=3, + k_eq=1, + k_dv=1, + converged=1, + rc=0, + k_autoCns=0, + ll=-91.28727940081573, + k_eq_model=1, + ll_0=-122.0974139280415, + df_m=2, + chi2=15.1822804640621, + p=.0005049050167458, + r2_p=.2523405986746273, + cmdline="poisson accident yr_con op_75_79, exposure(service) vce(robust)", # noqa:E501 + cmd="poisson", + predict="poisso_p", + estat_cmd="poisson_estat", + offset="ln(service)", + gof="poiss_g", + chi2type="Wald", + opt="moptimize", + vcetype="Robust", + vce="robust", + title="Poisson regression", + user="poiss_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="accident", + properties="b V", + ) + +params_table = np.array([ + .30633819450439, .09144457613957, 3.3499875819514, .00080815183366, + .12711011868929, .48556627031949, np.nan, 1.9599639845401, + 0, .35592229608495, .16103531267836, 2.2102127177276, + .02709040275274, .04029888299621, .67154570917369, np.nan, + 1.9599639845401, 0, -6.974712802772, .2558675415017, + -27.259076168227, 1.29723387e-163, -7.4762039689282, -6.4732216366159, + np.nan, 1.9599639845401, 0]).reshape(3, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'yr_con op_75_79 _cons'.split() + +cov = np.array([ + .00836211050535, .00098797681063, -.01860743122756, .00098797681063, + .02593237192942, -.02395236210603, -.01860743122756, -.02395236210603, + .06546819879413]).reshape(3, 3) + +cov_colnames = 'yr_con op_75_79 _cons'.split() + +cov_rownames = 'yr_con op_75_79 _cons'.split() + + +results_poisson_exposure_hc1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +est = dict( + rank=3, + N=34, + ic=4, + k=3, + k_eq=1, + k_dv=1, + converged=1, + rc=0, + k_autoCns=0, + N_clust=5, + ll=-91.28727940081573, + k_eq_model=1, + ll_0=-122.0974139280415, + df_m=2, + chi2=340.7343047354823, + p=1.02443835269e-74, + r2_p=.2523405986746273, + cmdline="poisson accident yr_con op_75_79, exposure(service) vce(cluster ship)", # noqa:E501 + cmd="poisson", + predict="poisso_p", + estat_cmd="poisson_estat", + offset="ln(service)", + gof="poiss_g", + chi2type="Wald", + opt="moptimize", + vcetype="Robust", + clustvar="ship", + vce="cluster", + title="Poisson regression", + user="poiss_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="accident", + properties="b V", + ) + +params_table = np.array([ + .30633819450439, .03817694295902, 8.0241677504982, 1.022165435e-15, + .23151276126487, .38116362774391, np.nan, 1.9599639845401, + 0, .35592229608495, .09213163536669, 3.8631930787765, + .00011191448109, .17534760892947, .53649698324044, np.nan, + 1.9599639845401, 0, -6.974712802772, .0968656626603, + -72.003975518463, 0, -7.1645660129248, -6.7848595926192, + np.nan, 1.9599639845401, 0]).reshape(3, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'yr_con op_75_79 _cons'.split() + +cov = np.array([ + .0014574789737, -.00277745275086, .00108765624666, -.00277745275086, + .00848823823534, -.00469929607507, .00108765624666, -.00469929607507, + .00938295660262]).reshape(3, 3) + +cov_colnames = 'yr_con op_75_79 _cons'.split() + +cov_rownames = 'yr_con op_75_79 _cons'.split() + + +results_poisson_exposure_clu = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +est = dict( + rank=4, + N=34, + ic=2, + k=4, + k_eq=2, + k_dv=1, + converged=1, + rc=0, + k_autoCns=0, + N_clust=5, + ll=-109.0877965183258, + k_eq_model=1, + ll_0=-109.1684720604314, + rank0=2, + df_m=2, + chi2=5.472439553195301, + p=.0648148991694882, + k_aux=1, + alpha=2.330298308905143, + cmdline="nbreg accident yr_con op_75_79, vce(cluster ship)", + cmd="nbreg", + predict="nbreg_p", + dispers="mean", + diparm_opt2="noprob", + chi2type="Wald", + opt="moptimize", + vcetype="Robust", + clustvar="ship", + vce="cluster", + title="Negative binomial regression", + diparm1="lnalpha, exp label(", + user="nbreg_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="accident", + properties="b V", + ) + +params_table = np.array([ + -.03536709401845, .27216090050938, -.12994921001605, .89660661037787, + -.56879265701682, .49805846897992, np.nan, 1.9599639845401, + 0, .23211570238882, .09972456245386, 2.3275680201277, + .01993505322091, .03665915160525, .42757225317239, np.nan, + 1.9599639845401, 0, 2.2952623989519, 1.2335785495143, + 1.8606536242509, .06279310688494, -.12250713019722, 4.7130319281011, + np.nan, 1.9599639845401, 0, .84599628895555, + .22483100011931, np.nan, np.nan, .40533562611357, + 1.2866569517975, np.nan, 1.9599639845401, 0, + 2.3302983089051, .52392329936749, np.nan, np.nan, + 1.4998057895818, 3.6206622525444, np.nan, 1.9599639845401, + 0]).reshape(5, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'yr_con op_75_79 _cons _cons alpha'.split() + +cov = np.array([ + .07407155576607, -.00421355148283, -.32663130963457, .02015715724983, + -.00421355148283, .00994498835661, .00992613461881, -.00714955450361, + -.32663130963457, .00992613461881, 1.5217160378218, -.09288283512096, + .02015715724983, -.00714955450361, -.09288283512096, .05054897861465 + ]).reshape(4, 4) + +cov_colnames = 'yr_con op_75_79 _cons _cons'.split() + +cov_rownames = 'yr_con op_75_79 _cons _cons'.split() + + +results_negbin_clu = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +est = dict( + rank=4, + N=34, + ic=2, + k=4, + k_eq=2, + k_dv=1, + converged=1, + rc=0, + k_autoCns=0, + ll=-109.0877965183258, + k_eq_model=1, + ll_0=-109.1684720604314, + rank0=2, + df_m=2, + chi2=.1711221347493475, + p=.9179970816706797, + r2_p=.0007390003778831, + k_aux=1, + alpha=2.330298308905143, + cmdline="nbreg accident yr_con op_75_79, vce(robust)", + cmd="nbreg", + predict="nbreg_p", + dispers="mean", + diparm_opt2="noprob", + chi2type="Wald", + opt="moptimize", + vcetype="Robust", + vce="robust", + title="Negative binomial regression", + diparm1="lnalpha, exp label(", + user="nbreg_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="accident", + properties="b V", + ) + +params_table = np.array([ + -.03536709401845, .26106873337039, -.13547043172065, .89223994079058, + -.5470524089139, .476318220877, np.nan, 1.9599639845401, + 0, .23211570238882, .56245325203342, .41268443475019, + .67983783029986, -.87027241458412, 1.3345038193618, np.nan, + 1.9599639845401, 0, 2.2952623989519, .76040210713867, + 3.0184850586341, .00254041928465, .80490165519179, 3.7856231427121, + np.nan, 1.9599639845401, 0, .84599628895555, + .24005700345444, np.nan, np.nan, .37549320794823, + 1.3164993699629, np.nan, 1.9599639845401, 0, + 2.3302983089051, .55940442919073, np.nan, np.nan, + 1.4557092049439, 3.7303399539165, np.nan, 1.9599639845401, + 0]).reshape(5, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'yr_con op_75_79 _cons _cons alpha'.split() + +cov = np.array([ + .06815688354362, -.03840590969835, -.16217402790798, .02098165591138, + -.03840590969835, .31635366072297, -.11049674936104, -.02643483668568, + -.16217402790798, -.11049674936104, .57821136454093, -.03915049342584, + .02098165591138, -.02643483668568, -.03915049342584, .05762736490753 + ]).reshape(4, 4) + +cov_colnames = 'yr_con op_75_79 _cons _cons'.split() + +cov_rownames = 'yr_con op_75_79 _cons _cons'.split() + + +results_negbin_hc1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +est = dict( + rank=4, + N=34, + ic=4, + k=4, + k_eq=2, + k_dv=1, + converged=1, + rc=0, + k_autoCns=0, + ll=-82.49115612464289, + k_eq_model=1, + ll_0=-84.68893065247886, + rank0=2, + df_m=2, + chi2=4.39554905567195, + p=.1110500222994781, + ll_c=-91.28727940081573, + chi2_c=17.5922465523457, + r2_p=.0259511427397111, + k_aux=1, + alpha=.2457422083490335, + cmdline="nbreg accident yr_con op_75_79, exposure(service)", + cmd="nbreg", + predict="nbreg_p", + offset="ln(service)", + dispers="mean", + diparm_opt2="noprob", + chi2_ct="LR", + chi2type="LR", + opt="moptimize", + vce="oim", + title="Negative binomial regression", + diparm1="lnalpha, exp label(", + user="nbreg_lf", + crittype="log likelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="accident", + properties="b V", + ) + +params_table = np.array([ + .28503762550355, .14983643534827, 1.9023251910727, .05712865433138, + -.00863639135093, .57871164235802, np.nan, 1.9599639845401, + 0, .17127003537767, .27580549562862, .62098122804736, + .53461197443513, -.36929880279264, .71183887354798, np.nan, + 1.9599639845401, 0, -6.5908639033905, .40391814231008, + -16.31732574748, 7.432080344e-60, -7.3825289150206, -5.7991988917604, + np.nan, 1.9599639845401, 0, -1.4034722260565, + .51305874839271, np.nan, np.nan, -2.4090488948595, + -.39789555725363, np.nan, 1.9599639845401, 0, + .24574220834903, .12608018984282, np.nan, np.nan, + .089900758997, .67173218155228, np.nan, 1.9599639845401, + 0]).reshape(5, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'yr_con op_75_79 _cons _cons alpha'.split() + +cov = np.array([ + .02245095735788, -.01097939549632, -.05127649084781, .00045725833006, + -.01097939549632, .07606867141895, -.0197375670989, -.00926008351523, + -.05127649084781, -.0197375670989, .16314986568722, .02198323898312, + .00045725833006, -.00926008351523, .02198323898312, .26322927930229 + ]).reshape(4, 4) + +cov_colnames = 'yr_con op_75_79 _cons _cons'.split() + +cov_rownames = 'yr_con op_75_79 _cons _cons'.split() + + +results_negbin_exposure_nonrobust = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +est = dict( + rank=4, + N=34, + ic=4, + k=4, + k_eq=2, + k_dv=1, + converged=1, + rc=0, + k_autoCns=0, + N_clust=5, + ll=-82.49115612464289, + k_eq_model=1, + ll_0=-84.68893065247886, + rank0=2, + df_m=2, + chi2=5.473741859983782, + p=.0647727084656973, + k_aux=1, + alpha=.2457422083490335, + cmdline="nbreg accident yr_con op_75_79, exposure(service) vce(cluster ship)", # noqa:E501 + cmd="nbreg", + predict="nbreg_p", + offset="ln(service)", + dispers="mean", + diparm_opt2="noprob", + chi2type="Wald", + opt="moptimize", + vcetype="Robust", + clustvar="ship", + vce="cluster", + title="Negative binomial regression", + diparm1="lnalpha, exp label(", + user="nbreg_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="accident", + properties="b V", + ) + +params_table = np.array([ + .28503762550355, .14270989695062, 1.9973220610073, .04579020833966, + .00533136724292, .56474388376418, np.nan, 1.9599639845401, + 0, .17127003537767, .17997186802799, .95164892854829, + .34127505843023, -.18146834418759, .52400841494293, np.nan, + 1.9599639845401, 0, -6.5908639033905, .62542746996715, + -10.538174640357, 5.760612980e-26, -7.8166792194681, -5.3650485873129, + np.nan, 1.9599639845401, 0, -1.4034722260565, + .86579403765571, np.nan, np.nan, -3.1003973578913, + .29345290577817, np.nan, 1.9599639845401, 0, + .24574220834903, .21276213878894, np.nan, np.nan, + .0450313052935, 1.3410500222158, np.nan, 1.9599639845401, + 0]).reshape(5, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'yr_con op_75_79 _cons _cons alpha'.split() + +cov = np.array([ + .02036611468766, -.00330004038514, -.08114367170947, -.07133030733881, + -.00330004038514, .03238987328148, -.03020509748676, -.09492663454187, + -.08114367170947, -.03020509748676, .39115952018952, .43276143586693, + -.07133030733881, -.09492663454187, .43276143586693, .74959931564018 + ]).reshape(4, 4) + +cov_colnames = 'yr_con op_75_79 _cons _cons'.split() + +cov_rownames = 'yr_con op_75_79 _cons _cons'.split() + + +results_negbin_exposure_clu = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) diff --git a/statsmodels/discrete/tests/results/results_discrete.py b/statsmodels/discrete/tests/results/results_discrete.py new file mode 100644 index 0000000..d7d1dd7 --- /dev/null +++ b/statsmodels/discrete/tests/results/results_discrete.py @@ -0,0 +1,1223 @@ +""" +Test Results for discrete models from Stata +""" +import os +import numpy as np + + +class Namespace(object): + pass + + +# Discrete Model Tests +# Note that there is a slight refactor of the classes, so that one dataset +# might be used for more than one model + +cur_dir = os.path.abspath(os.path.dirname(__file__)) + + +class Anes(object): + def __init__(self): + """r + Results are from Stata 11 (checked vs R nnet package). + """ + self.nobs = 944 + + def mnlogit_basezero(): + obj = Namespace() + obj.nobs = 944 + params = [ + -.01153598, .29771435, -.024945, .08249144, .00519655, + -.37340167, -.08875065, .39166864, -.02289784, .18104276, + .04787398, -2.2509132, -.1059667, .57345051, -.01485121, + -.00715242, .05757516, -3.6655835, -.0915567, 1.2787718, + -.00868135, .19982796, .08449838, -7.6138431, -.0932846, + 1.3469616, -.01790407, .21693885, .08095841, -7.0604782, + -.14088069, 2.0700801, -.00943265, .3219257, .10889408, + -12.105751] + obj.params = np.reshape(params, (6, -1), order='F') + bse = [ + .0342823657, .093626795, .0065248584, .0735865799, + .0176336937, .6298376313, .0391615553, .1082386919, + .0079144618, .0852893563, .0222809297, .7631899491, + .0570382292, .1585481337, .0113313133, .1262913234, + .0336142088, 1.156541492, .0437902764, .1288965854, + .0084187486, .0941250559, .0261963632, .9575809602, + .0393516553, .1171860107, .0076110152, .0850070091, + .0229760791, .8443638283, .042138047, .1434089089, + .0081338625, .0910979921, .025300888, 1.059954821] + obj.bse = np.reshape(bse, (6, -1), order='F') + obj.yhat = np.loadtxt(os.path.join(cur_dir, 'yhat_mnlogit.csv')) + obj.phat = np.loadtxt(os.path.join(cur_dir, 'phat_mnlogit.csv')) + obj.cov_params = None + obj.llf = -1461.922747312 + obj.llnull = -1750.34670999 + obj.llr = 576.8479253554 + obj.llr_pvalue = 1.8223179e-102 + obj.prsquared = .1647810465387 + obj.df_model = 30 + obj.df_resid = 944 - 36 + obj.J = 7 + obj.K = 6 + obj.aic = 2995.84549462 + obj.bic = 3170.45003661 + z = [ + -.3364988051, 3.179798597, -3.823070772, 1.121012042, + .2946945327, -.5928538661, -2.266269864, 3.618564069, + -2.893164162, 2.122688754, 2.148652536, -2.949348555, + -1.857818873, 3.616885888, -1.310634214, -.0566342868, + 1.712822091, -3.169435381, -2.090799808, 9.920912816, + -1.031191864, 2.123004903, 3.225576554, -7.951122047, + -2.370538224, 11.49421878, -2.352389066, 2.552011323, + 3.523595639, -8.361890935, -3.34331327, 14.43480847, + -1.159676452, 3.533839715, 4.303962885, -11.42100649] + obj.z = np.reshape(z, (6, -1), order='F') + pvalues = [ + 0.7364947525, 0.0014737744, 0.0001317999, 0.2622827367, + 0.7682272401, 0.5532789548, 0.0234348654, 0.0002962422, + 0.0038138191, 0.0337799420, 0.0316619538, 0.0031844460, + 0.0631947400, 0.0002981687, 0.1899813744, 0.9548365214, + 0.0867452747, 0.0015273542, 0.0365460134, 3.37654e-23, + 0.3024508550, 0.0337534410, 0.0012571921, 1.84830e-15, + 0.0177622072, 1.41051e-30, 0.0186532528, 0.0107103038, + 0.0004257334, 6.17209e-17, 0.0008278439, 3.12513e-47, + 0.2461805610, 0.0004095694, 0.0000167770, 3.28408e-30] + obj.pvalues = np.reshape(pvalues, (6, -1), order='F') + conf_int = [ + [[-0.0787282, 0.0556562], + [0.1142092, 0.4812195], + [-0.0377335, -0.0121565], + [-0.0617356, 0.2267185], + [-0.0293649, 0.0397580], + [-1.6078610, 0.8610574]], + [[-0.1655059, -0.0119954], + [0.1795247, 0.6038126], + [-0.0384099, -0.0073858], + [0.0138787, 0.3482068], + [0.0042042, 0.0915438], + [-3.7467380, -0.7550884]], + [[-0.2177596, 0.0058262], + [0.2627019, 0.8841991], + [-0.0370602, 0.0073578], + [-0.2546789, 0.2403740], + [-0.0083075, 0.1234578], + [-5.9323630, -1.3988040]], + [[-0.1773841, -0.0057293], + [1.0261390, 1.5314040], + [-0.0251818, 0.0078191], + [0.0153462, 0.3843097], + [0.0331544, 0.1358423], + [-9.4906670, -5.7370190]], + [[-0.1704124, -0.0161568], + [1.1172810, 1.5766420], + [-0.0328214, -0.0029868], + [0.0503282, 0.3835495], + [0.0359261, 0.1259907], + [-8.7154010, -5.4055560]], + [[-0.2234697, -0.0582916], + [1.7890040, 2.3511560], + [-0.0253747, 0.0065094], + [0.1433769, 0.5004745], + [0.0593053, 0.1584829], + [-14.1832200, -10.0282800]]] + obj.conf_int = np.asarray(conf_int) + + # margins, dydx(*) predict(outcome(#)) + obj.margeff_dydx_overall = np.array([ + [0.00868085993550, -0.09779854015456, 0.00272556969847, + -0.01992376579372, -0.00603133322764], + [0.00699386733148, -0.05022430802614, -0.00211003909752, + -0.00536980000265, -0.00554366741814], + [-0.00391040848820, -0.02824717135857, -0.00100551299310, + 0.00664337806861, 0.00097987356999], + [-0.00182580888015, -0.00573744730031, -0.00004249256428, + -0.00546669558488, 0.00054101121854], + [-0.00098558129923, 0.01985550937033, 0.00047972250012, + 0.00172605778905, 0.00211291403209], + [-0.00153469551647, 0.03755346502013, -0.00068531143399, + 0.00472471794347, 0.00254733486106], + [-0.00741820702809, 0.12459834487569, 0.00063806819375, + 0.01766610701188, 0.00539385283759] + ]).T + obj.margeff_dydx_overall_se = np.array([ + [.0038581061, .0080471125, .0007068488, .0082318967, .0020261706], + [.003904378, .0073600286, .000756431, .0084381578, .0020482238], + [.003137126, .0056813182, .0006601377, .0068932588, .0018481806], + [.0019427783, .0031904763, .0003865411, .004361789, .0011523221], + [.0029863227, .0054076092, .0005886612, .0064426365, .0018886818], + [.0035806552, .0069497362, .000722511, .0078287717, .0022352393], + [.0033641608, .008376629, .0006774697, .0073505286, .0021660086] + ]).T + + obj.margeff_dydx_mean = np.array([ + [0.01149887431225, -0.13784207091973, 0.00273313385873, + -0.02542974260540, -0.00855346837482], + [0.01114846831102, -0.09864273512889, -0.00222435063712, + -0.01214617126321, -0.00903581444579], + [-0.00381702868421, -0.05132297961269, -0.00116763216994, + 0.00624203027060, 0.00021912081810], + [-0.00233455327258, -0.00928554037343, -0.00000206561214, + -0.00775415690571, 0.00060004460394], + [-0.00352579921274, 0.06412187169362, 0.00073938948643, + 0.00747778063206, 0.00459965010365], + [-0.00574308219449, 0.11126535089794, -0.00057337915464, + 0.01467424346725, 0.00641760846097], + [-0.00722687818452, 0.12170608820238, 0.00049490419675, + 0.01693601418978, 0.00575285798725]]).T + obj.margeff_dydx_mean_se = np.array([ + [.0043729758, .0110343353, .0008149907, .0092551389, .0023752071], + [.004875051, .0124746358, .0009613152, .0105665812, .0026524426], + [.0040718954, .0103613938, .0008554615, .0089931297, .0024374625], + [.0026430804, .0070845916, .0005364369, .0057654258, .0015988838], + [.0037798151, .0103849291, .0007393481, .0082021938, .0023489261], + [.0045654631, .0130329403, .0009128134, .0100053262, .0028048602], + [.0027682389, .0113292677, .0005325113, .0061289353, .0017330763] + ]).T + + obj.margeff_dydx_dummy_overall = np.array([ + [0.00549149574321, -0.05348235321783, 0.00298963549049, + -0.01479461677951, -0.00332167981255, -0.26502967041815], + [0.00345677928276, -0.00950322030929, -0.00189456107189, + 0.00033893662061, -0.00314690167350, -0.21040878091828], + [-0.00645089013284, 0.00401746940204, -0.00083948249351, + 0.01114202556889, 0.00277069841472, -0.15967397659686], + [-0.00215436802341, -0.00366545199370, -0.00000002297812, + -0.00457368049644, 0.00065303026027, -0.00094772782001], + [0.00058038428936, -0.00369080100124, 0.00035948233235, + -0.00018863693013, 0.00079351293461, 0.12640653743480], + [0.00217597030999, -0.01279456622853, -0.00091882392767, + 0.00001651192759, -0.00037998290789, 0.27175070356670], + [-0.00309932483642, 0.07911868907484, 0.00030378521102, + 0.00805941631677, 0.00263129901425, 0.23790291475181]]).T + obj.margeff_dydx_dummy_overall_se = np.array([ + [.0037314453, .0094102332, .000688838, .0079744554, .0019365971, + .0243914836], + [.0038215262, .0095938828, .0007410885, .008259353, .0019984087, + .0317628806], + [.0031045718, .00785814, .0006504353, .0067892866, .0018060332, + 0.0262803561], + [.0019756086, .0051031194, .0003862449, .0043621673, .0011796953, + .0219999601], + [.0029714074, .0081732018, .0005715192, .0064742872, .0019130195, + .0331694192], + [.0034443743, .0097296187, .0006774867, .0075996454, .0021993881, + .038600835], + [.0032003518, .0098741227, .0006335772, .0070902078, .0021003227, + .0255727127]]).T + + obj.margeff_eydx_dummy_overall = np.array([ + [.03939188, -.65758371, .01750922, -.12131806, -.03613241, + -3.2132513], + [.02752366, -.383165, -.00830021, -.03652935, -.03286046, + -1.8741853], + [-.05006681, -.2719659, -.00626481, .06525323, .01012554, + -2.0058029], + [-.05239558, -.22549142, .00025015, -.13104416, .01114517, + -.27052009], + [-.00296374, .25627809, .00140513, .03358712, .02296041, + 1.3302701], + [.00328283, .2800168, -.0083912, .04332782, .01575863, + 1.8441023], + [-.03257068, .98346111, -.00122118, .10847807, .0406456, + 2.9119099]]).T + + obj.margeff_eydx_dummy_overall_se = np.array([ + [.0272085605, .0777760394, .0052427952, .0584011446, .0148618012, + .5796921383], + [.0262290023, .0724479385, .005174736, .0567743614, .0144447083, + .3015738731], + [.0321415498, .0895589422, .0067480662, .0701460193, .0190451865, + .3904138447], + [.0511305319, .1420904068, .0102342163, .1129912244, .0308618233, + .3693799595], + [.0340186217, .0991711703, .0065812158, .0737441012, .0212966336, + .2346982385], + [.0289250212, .0840662279, .0056743561, .0631772185, .0177278895, + .2089516714], + [.0318251305, .1085637405, .0062400589, .0699123044, .0201045606, + .3727166284]]).T + + # taken from gretl + obj.resid = np.loadtxt(os.path.join(cur_dir, 'mnlogit_resid.csv'), + delimiter=",") + return obj + + mnlogit_basezero = mnlogit_basezero() + + +class DiscreteL1(object): + def __init__(self): + """ + Special results for L1 models + Uses the Spector data and a script to generate the baseline results + """ + pass + + def logit(): + """ + Results generated with: + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=True) + alpha = 3 * np.array([0, 1, 1, 1]) + res2 = sm.Logit(data.endog, data.exog).fit_regularized( + method="l1", alpha=alpha, disp=0, trim_mode='size', + size_trim_tol=1e-5, acc=1e-10, maxiter=1000) + """ + obj = Namespace() + nan = np.nan + obj.params = [-4.10271595, 0., 0.15493781, 0.] + obj.conf_int = [ + [-9.15205122, 0.94661932], + [nan, nan], + [-0.06539482, 0.37527044], + [nan, nan]] + obj.bse = [2.5762388, nan, 0.11241668, nan] + obj.nnz_params = 2 + obj.aic = 42.091439368583671 + obj.bic = 45.022911174183122 + obj.cov_params = [ + [6.63700638, nan, -0.28636261, nan], + [nan, nan, nan, nan], + [-0.28636261, nan, 0.01263751, nan], + [nan, nan, nan, nan]] + return obj + + logit = logit() + + def sweep(): + """ + Results generated with + params = np.zeros((3, 4)) + alphas = np.array( + [[0.1, 0.1, 0.1, 0.1], + [0.4, 0.4, 0.5, 0.5], [0.5, 0.5, 1, 1]]) + model = sm.Logit(data.endog, data.exog) + for i in range(3): + alpha = alphas[i, :] + res2 = model.fit_regularized(method="l1", alpha=alpha, + disp=0, acc=1e-10, + maxiter=1000, trim_mode='off') + params[i, :] = res2.params + print(params) + """ + obj = Namespace() + obj.params = [ + [-10.37593611, 2.27080968, 0.06670638, 2.05723691], + [-5.32670811, 1.18216019, 0.01402395, 1.45178712], + [-3.92630318, 0.90126958, -0., 1.09498178]] + return obj + + sweep = sweep() + + def probit(): + """ + Results generated with + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=True) + alpha = np.array([0.1, 0.2, 0.3, 10]) + res2 = sm.Probit(data.endog, data.exog).fit_regularized( + method="l1", alpha=alpha, disp=0, trim_mode='auto', + auto_trim_tol=0.02, acc=1e-10, maxiter=1000) + """ + obj = Namespace() + nan = np.nan + obj.params = [-5.40476992, 1.25018458, 0.04744558, 0.] + obj.conf_int = [ + [-9.44077951, -1.36876033], + [0.03716721, 2.46320194], + [-0.09727571, 0.19216687], + [np.nan, np.nan]] + obj.bse = [2.05922641, 0.61889778, 0.07383875, np.nan] + obj.nnz_params = 3 + obj.aic = 38.399773877542927 + obj.bic = 42.796981585942106 + obj.cov_params = [ + [4.24041339, -0.83432592, -0.06827915, nan], + [-0.83432592, 0.38303447, -0.01700249, nan], + [-0.06827915, -0.01700249, 0.00545216, nan], + [nan, nan, nan, nan]] + return obj + + probit = probit() + + def mnlogit(): + """ + Results generated with + anes_data = sm.datasets.anes96.load(as_pandas=False) + anes_exog = anes_data.exog + anes_exog = sm.add_constant(anes_exog, prepend=False) + mlogit_mod = sm.MNLogit(anes_data.endog, anes_exog) + + alpha = 10 * np.ones((mlogit_mod.J - 1, mlogit_mod.K)) + alpha[-1, :] = 0 + mlogit_l1_res = mlogit_mod.fit_regularized( + method='l1', alpha=alpha, trim_mode='auto', auto_trim_tol=0.02, + acc=1e-10) + """ + obj = Namespace() + obj.params = [ + [0.00100163, -0.05864195, -0.06147822, -0.04769671, -0.05222987, + -0.09522432], + [0., 0.03186139, 0.12048999, 0.83211915, 0.92330292, + 1.5680646], + [-0.0218185, -0.01988066, -0.00808564, -0.00487463, -0.01400173, + -0.00562079], + [0., 0.03306875, 0., 0.02362861, 0.05486435, + 0.14656966], + [0., 0.04448213, 0.03252651, 0.07661761, 0.07265266, + 0.0967758], + [0.90993803, -0.50081247, -2.08285102, -5.26132955, -4.86783179, + -9.31537963]] + obj.conf_int = [ + [[-0.0646223, 0.06662556], + [np.nan, np.nan], + [-0.03405931, -0.00957768], + [np.nan, np.nan], + [np.nan, np.nan], + [0.26697895, 1.55289711]], + + [[-0.1337913, 0.01650741], + [-0.14477255, 0.20849532], + [-0.03500303, -0.00475829], + [-0.11406121, 0.18019871], + [0.00479741, 0.08416684], + [-1.84626136, 0.84463642]], + + [[-0.17237962, 0.04942317], + [-0.15146029, 0.39244026], + [-0.02947379, 0.01330252], + [np.nan, np.nan], + [-0.02501483, 0.09006785], + [-3.90379391, -0.26190812]], + + [[-0.12938296, 0.03398954], + [0.62612955, 1.03810876], + [-0.02046322, 0.01071395], + [-0.13738534, 0.18464256], + [0.03017236, 0.12306286], + [-6.91227465, -3.61038444]], + + [[-0.12469773, 0.02023799], + [0.742564, 1.10404183], + [-0.02791975, -0.00008371], + [-0.08491561, 0.19464431], + [0.0332926, 0.11201273], + [-6.29331126, -3.44235233]], + + [[-0.17165567, -0.01879296], + [1.33994079, 1.79618841], + [-0.02027503, 0.00903345], + [-0.00267819, 0.29581751], + [0.05343135, 0.14012026], + [-11.10419107, -7.52656819]]] + + obj.bse = [ + [0.03348221, 0.03834221, 0.05658338, 0.04167742, 0.03697408, + 0.03899631], + [np.nan, 0.09012101, 0.13875269, 0.10509867, 0.09221543, + 0.11639184], + [0.00624543, 0.00771564, 0.01091253, 0.00795351, 0.00710116, + 0.00747679], + [np.nan, 0.07506769, np.nan, 0.08215148, 0.07131762, + 0.07614826], + [np.nan, 0.02024768, 0.02935837, 0.02369699, 0.02008204, + 0.02211492], + [0.32804638, 0.68646613, 0.92906957, 0.84233441, 0.72729881, + 0.91267567]] + + obj.nnz_params = 32 + obj.aic = 3019.4391360294126 + obj.bic = 3174.6431733460686 + return obj + + mnlogit = mnlogit() + + +class Spector(object): + """ + Results are from Stata 11 + """ + def __init__(self): + self.nobs = 32 + + def logit(): + obj = Namespace() + obj.nobs = 32 + obj.params = [2.82611297201, .0951576702557, 2.37868772835, + -13.0213483201] + obj.cov_params = [ + [1.59502033639, -.036920566629, .427615725153, -4.57347950298], + [-.036920566629, .0200375937069, .0149126464275, -.346255757562], + [.427615725153, .0149126464275, 1.13329715236, -2.35916128427], + [-4.57347950298, -.346255757562, -2.35916128427, 24.3179625937]] + obj.bse = [1.26294114526, .141554207662, 1.06456430165, 4.93132462871] + + obj.resid_pearson = [ + -.1652382, -.2515266, -.4800059, -.1630655, + .8687437, -.1900454, -.165002, -.2331563, + -.3535812, .6647838, -.1583799, -.4843181, + -.689527, 2.043449, -.7516119, -.1764176, + -.2380445, -.2003426, -1.199277, .7164842, + -.255713, .3242821, -.5646816, -2.400189, + .4392082, 1.038473, .75747, -.6659256, + .4336657, .2404583, -1.060033, 2.829577] + + obj.resid_dev = [ + -.2321102, -.3502712, -.6439626, -.2290982, + 1.060478, -.2663844, -.2317827, -.3253788, -.4853875, + .8555557, -.2225972, -.6491808, -.8819993, 1.813269, + -.9463985, -.247583, -.3320177, -.2805444, -1.335131, + .9103027, -.3559217, .4471892, -.744005, -1.955074, + .5939538, 1.209638, .952332, -.8567857, .5870719, .335292, + -1.227311, 2.096639] + + # from gretl + obj.resid_generalized = [ + -0.026578, -0.059501, -0.187260, + -0.025902, 0.430107, -0.034858, -0.026504, -0.051559, + -0.111127, 0.306489, -0.024470, -0.189997, -0.322240, + 0.806789, -0.360990, -0.030184, -0.053626, -0.038588, + -0.589872, 0.339214, -0.061376, 0.095153, -0.241772, + -0.852091, 0.161709, 0.518867, 0.364579, -0.307219, + 0.158296, 0.054660, -0.529117, 0.888969] + + obj.phat = np.array([ + .02657799236476, + .05950126051903, + .18725991249084, + .02590163610876, + .56989300251007, + .03485824912786, + .02650404907763, + .05155897513032, + .11112663894892, + .69351142644882, + .02447037212551, + .18999740481377, + .32223951816559, + .1932111531496, + .36098992824554, + .03018374741077, + .05362640321255, + .03858831897378, + .58987241983414, + .66078591346741, + .06137581542134, + .90484726428986, + .24177247285843, + .85209089517593, + .8382905125618, + .48113295435905, + .63542068004608, + .30721867084503, + .84170418977737, + .94534027576447, + .52911710739136, + .1110308393836]) + obj.yhat = np.array([ + -3.6007342338562, + -2.7604126930237, + -1.4679137468338, + -3.6272060871124, + .28141465783119, + -3.3209850788116, + -3.6035962104797, + -2.9120934009552, + -2.0792844295502, + .81658720970154, + -3.6855175495148, + -1.4500269889832, + -.74349880218506, + -1.429278254509, + -.57107019424438, + -3.4698030948639, + -2.8705959320068, + -3.2154531478882, + .36343798041344, + .66679841279984, + -2.7273993492126, + 2.2522828578949, + -1.1429864168167, + 1.7510952949524, + 1.6455633640289, + -.07550399750471, + .55554306507111, + -.81315463781357, + 1.6709630489349, + 2.8504176139832, + .11660042405128, + -2.0802545547485]) + obj.llf = -12.8896334653335 + obj.llnull = -20.5917296966173 + obj.df_model = 3 + obj.df_resid = 32 - 4 # TODO: is this right? not reported in stata + obj.llr = 15.4041924625676 + obj.prsquared = .374038332124624 + obj.llr_pvalue = .00150187761112892 + obj.aic = 33.779266930667 + obj.bic = 39.642210541866 + obj.z = [2.237723415, 0.6722348408, 2.234423721, -2.640537645] + obj.conf_int = [ + [.3507938, 5.301432], + [-.1822835, .3725988], + [.29218, 4.465195], + [-22.68657, -3.35613]] + obj.pvalues = [.0252390974, .5014342039, .0254552063, .0082774596] + + # taken from margins command + obj.margeff_nodummy_dydx = [ + .36258084688424, .01220841099085, .30517768382304] + obj.margeff_nodummy_dydx_se = [.1094412, .0177942, .0923796] + obj.margeff_nodummy_dydxmean = [ + .53385885781692, .01797548988961, .44933926079386] + obj.margeff_nodummy_dydxmean_se = [.237038, .0262369, .1967626] + obj.margeff_nodummy_dydxmedian = [ + .25009492465091, .00842091261329, .2105003352955] + obj.margeff_nodummy_dydxmedian_se = [.1546708, .0134314, .0928183] + obj.margeff_nodummy_dydxzero = [ + 6.252993785e-06, 2.105437138e-07, 5.263030788e-06] + obj.margeff_nodummy_dydxzero_se = [.0000288, 9.24e-07, .000025] + obj.margeff_nodummy_dyex = [ + 1.1774000792198, .27896245178384, .16960002159996] + obj.margeff_nodummy_dyex_se = [.3616481, .4090679, .0635583] + obj.margeff_nodummy_dyexmean = [ + 1.6641381583512, .39433730945339, .19658592659731] + obj.margeff_nodummy_dyexmean_se = [.7388917, .5755722, .0860836] + # NOTE: PSI at median should be a NaN or 'omitted' + obj.margeff_nodummy_dyexmedian = [.76654095836557, .18947053379898, 0] + obj.margeff_nodummy_dyexmedian_se = [.4740659, .302207, 0] + # NOTE: all should be NaN + # TODO: re above Note, since the values below are *not* NaN, + # should something be done about this? + obj.margeff_nodummy_dyexzero = [0, 0, 0] + obj.margeff_nodummy_dyexzero_se = [0, 0, 0] + + obj.margeff_nodummy_eydx = [ + 1.8546366266779, .06244722072812, 1.5610138123033] + obj.margeff_nodummy_eydx_se = [.847903, .0930901, .7146715] + obj.margeff_nodummy_eydxmean = [ + 2.1116143062702, .0710998816585, 1.7773072368626] + obj.margeff_nodummy_eydxmean_se = [1.076109, .1081501, .9120842] + obj.margeff_nodummy_eydxmedian = [ + 2.5488082240624, .0858205793373, 2.1452853812126] + obj.margeff_nodummy_eydxmedian_se = [1.255377, .1283771, 1.106872] + obj.margeff_nodummy_eydxzero = [ + 2.8261067189993, .0951574597115, 2.3786824653103] + obj.margeff_nodummy_eydxzero_se = [1.262961, .1415544, 1.064574] + obj.margeff_nodummy_eyex = [ + 5.4747106798973, 1.3173389907576, .44600395466634] + obj.margeff_nodummy_eyex_se = [2.44682, 1.943525, .1567618] + obj.margeff_nodummy_eyexmean = [ + 6.5822977203268, 1.5597536538833, .77757191612739] + obj.margeff_nodummy_eyexmean_se = [3.354433, 2.372543, .3990368] + obj.margeff_nodummy_eyexmedian = [7.8120973525952, 1.9309630350892, 0] + obj.margeff_nodummy_eyexmedian_se = [3.847731951, 2.888485089, 0] + + obj.margeff_nodummy_eyexzero = [0, 0, 0] + obj.margeff_nodummy_eyexzero_se = [0, 0, 0] + + # for below GPA = 2.0, psi = 1 + obj.margeff_nodummy_atexog1 = [ + .1456333017086, .00490359933927, .12257689308426] + obj.margeff_nodummy_atexog1_se = [.145633, .0111226, .1777101] + # for below GPA at mean, tuce = 21, psi = 0 + obj.margeff_nodummy_atexog2 = [ + .25105129214546, .00845311433473, .2113052923675] + obj.margeff_nodummy_atexog2_se = [.1735778, .012017, .0971515] + + # must get this from older margeff or i.psi then margins + obj.margeff_dummy_dydx = [ + .36258084688424, .01220841099085, .35751515254729] + obj.margeff_dummy_dydx_se = [.1094412, .0177942, .1420034] + obj.margeff_dummy_dydxmean = [ + .53385885781692, .01797548988961, .4564984096959] + obj.margeff_dummy_dydxmean_se = [.237038, .0262369, .1810537] + # from margeff + obj.margeff_dummy_count_dydx_median = [ + 0.250110487483923, 0.008426867847905, 0.441897738279663] + obj.margeff_dummy_count_dydx_median_se = [ + .1546736661, .0134551951, .1792363708] + + # estimate with i.psi for the below then use margins + obj.margeff_dummy_eydx = [ + 1.8546366266779, .06244722072812, 1.5549034398832] + obj.margeff_dummy_eydx_se = [.847903, .0930901, .7283702] + # ie + # margins, eydx(*) at((mean) _all) + obj.margeff_dummy_eydxmean = [ + 2.1116143062702, .0710998816585, 1.6631775707188] + obj.margeff_dummy_eydxmean_se = [1.076109, .1081501, .801205] + + # TODO: Should we remove the commented-out code below? + # Factor variables not allowed in below + # test raises + # obj.margeff_dummy_dydxzero + # obj.margeff_dummy_eydxmedian + # obj.margeff_dummy_eydxzero + # obj.margeff_dummy_dyex + # obj.margeff_dummy_dyexmean + # obj.margeff_dummy_dyexmedian + # obj.margeff_dummy_dyexzero + # obj.margeff_dummy_eyex + # obj.margeff_count_dummy_dydx_median + # obj.margeff_count_dummy_dydx_median_se + + # NOTE: need old version of margeff for nodisc but at option is broken + # stata command is margeff, count nodisc + # this can be replicated with the new results by margeff + # and then using margins for the last value + obj.margeff_count_dydx = [.3625767598018, .0122068569914, .3051777] + obj.margeff_count_dydx_se = [.1094379569, .0177869773, .0923796] + + # middle value taken from margeff rest from margins + obj.margeff_count_dydxmean = [ + .5338588, 0.01797186545386, .4493393] + obj.margeff_count_dydxmean_se = [.237038, .0262211, .1967626] + + # with new version of margeff this is just a call to + # margeff + # mat list e(margeff_b), nonames format(%17.16g) + obj.margeff_count_dummy_dydxoverall = [.362576759801767, + .012206856991439, + .357515163621704] + # AFAICT, an easy way to get se is + # mata + # V = st_matrix("e(margeff_V)") + # se = diagonal(cholesky(diag(V))) + # last SE taken from margins with i.psi, don't know how they + # don't know why margeff is different, but trust official results + obj.margeff_count_dummy_dydxoverall_se = [.1094379569, .0177869773, + .1420034] + + # from new margeff + obj.margeff_count_dummy_dydxmean = [0.533849340033768, + 0.017971865453858, + 0.456498405282412] + obj.margeff_count_dummy_dydxmean_se = [.2370202503, .0262210796, + .1810536852] + + # for below GPA = 2.0, psi = 1 + obj.margeff_dummy_atexog1 = [ + .1456333017086, .00490359933927, .0494715429937] + obj.margeff_dummy_atexog1_se = [.145633, .0111226, .0731368] + # for below GPA at mean, tuce = 21, psi = 0 + obj.margeff_dummy_atexog2 = [.25105129214546, + .00845311433473, + .44265645632553] + obj.margeff_dummy_atexog2_se = [.1735778, .012017, .1811925] + # The test for the prediction table was taken from Gretl + # Gretl Output matched the Stata output here for params and SE + obj.pred_table = np.array([[18, 3], [3, 8]]) + return obj + + logit = logit() + + def probit(): + obj = Namespace() + obj.nobs = 32 + obj.params = [ + 1.62581025407, .051728948442, 1.42633236818, -7.45232041607] + obj.cov_params = [ + [.481472955383, -.01891350017, .105439226234, -1.1696681354], + [-.01891350017, .00703757594, .002471864882, -.101172838897], + [.105439226234, .002471864882, .354070126802, -.594791776765], + [-1.1696681354, -.101172838897, -.594791776765, 6.46416639958]] + obj.bse = [.693882522754, .083890261293, .595037920474, 2.54247249731] + obj.llf = -12.8188033249334 + obj.llnull = -20.5917296966173 + obj.df_model = 3 + obj.df_resid = 32 - 4 + obj.llr = 15.5458527433678 + obj.prsquared = .377478069409622 + obj.llr_pvalue = .00140489496775855 + obj.aic = 33.637606649867 + obj.bic = 39.500550261066 + obj.z = [2.343062695, .6166263836, 2.397044489, -2.931131182] + obj.conf_int = [ + [.2658255, 2.985795], + [-.1126929, .2161508], + [.2600795, 2.592585], + [-12.43547, -2.469166]] + obj.pvalues = [.0191261688, .537481188, .0165279168, .0033773013] + obj.phat = [ + .0181707, .0530805, .1899263, .0185707, .5545748, + .0272331, .0185033, .0445714, .1088081, .6631207, + .0161024, .1935566, .3233282, .1951826, .3563406, + .0219654, .0456943, .0308513, .5934023, .6571863, + .0619288, .9045388, .2731908, .8474501, .8341947, + .488726, .6424073, .3286732, .8400168, .9522446, + .5399595, .123544] + obj.yhat = np.array([ + -2.0930860042572, + -1.615691781044, + -.87816804647446, + -2.0842070579529, + .13722851872444, + -1.9231110811234, + -2.0856919288635, + -1.6999372243881, + -1.2328916788101, + .42099541425705, + -2.1418602466583, + -.86486464738846, + -.45841211080551, + -.85895526409149, + -.36825761198997, + -2.0147502422333, + -1.6881184577942, + -1.8684275150299, + .23630557954311, + .40479621291161, + -1.538782119751, + 1.3078554868698, + -.60319095849991, + 1.025558590889, + .97087496519089, + -.02826354466379, + .36490100622177, + -.44357979297638, + .99452745914459, + 1.6670187711716, + .10033150017262, + -1.1574513912201]) + obj.resid_dev = [ + -.191509, -.3302762, -.6490455, -.1936247, 1.085867, + -.2349926, -.1932698, -.3019776, -.4799906, .9064196, + -.1801855, -.6559291, -.8838201, 1.807661, -.9387071, + -.2107617, -.3058469, -.2503485, -1.341589, .9162835, + -.3575735, .447951, -.7988633, -1.939208, .6021435, + 1.196623, .9407793, -.8927477, .59048, .3128364, + -1.246147, 2.045071] + # Stata doesn't have it, but I think it's just oversight + obj.resid_pearson = None + # generalized residuals from gretl + obj.resid_generalized = [ + -0.045452, -0.114220, -0.334908, + -0.046321, 0.712624, -0.064538, + -0.046175, -0.098447, -0.209349, + 0.550593, -0.040906, -0.340339, + -0.530763, 1.413373, -0.579170, + -0.053593, -0.100556, -0.071855, + -0.954156, 0.559294, -0.130167, + 0.187523, -0.457597, -1.545643, + 0.298511, 0.815964, 0.581013, + -0.538579, 0.289631, 0.104405, + -0.862836, 1.652638] + obj.pred_table = np.array([[18, 3], [3, 8]]) + return obj + + probit = probit() + + +class RandHIE(object): + """ + Results obtained from Stata 11 + """ + def __init__(self): + self.nobs = 20190 + + def poisson(): + obj = Namespace() + obj.nobs = 20190 + obj.params = [ + -.052535114675, -.247086797633, .035290201794, + -.03457750643, .271713973711, .033941474461, -.012635035534, + .054056326828, .206115121809, .700352877227] + obj.cov_params = None + obj.bse = [ + .00288398915279, .01061725196728, .00182833684966, + .00161284852954, .01223913844387, .00056476496963, + .00925061122826, .01530987068312, .02627928267502, + .01116266712362] + predict = np.loadtxt(os.path.join(cur_dir, 'yhat_poisson.csv'), + delimiter=",") + obj.phat = predict[:, 0] + obj.yhat = predict[:, 1] + obj.llf = -62419.588535018 + obj.llnull = -66647.181687959 + obj.df_model = 9 + obj.df_resid = obj.nobs - obj.df_model - 1 + obj.llr = 8455.186305881856 + obj.prsquared = .0634324369893758 + obj.llr_pvalue = 0 + obj.aic = 124859.17707 + obj.bic = 124938.306497 + obj.z = [-18.21612769, -23.27219872, 19.30180524, -21.43878101, + 22.20041672, 60.09840604, -1.36585953, 3.53081538, 7.84325525, + 62.74063980] + obj.conf_int = [ + [-.0581876, -.0468826], + [-0.2678962, -0.2262774], + [0.0317067, 0.0388737], + [-0.0377386, -0.0314164], + [0.2477257, 0.2957022], + [0.0328346, 0.0350484], + [-0.0307659, 0.0054958], + [0.0240495, 0.0840631], + [0.1546087, 0.2576216], + [0.6784745, 0.7222313]] + obj.pvalues = [ + 3.84415e-74, 8.4800e-120, 5.18652e-83, 5.8116e-102, + 3.4028e-109, 0, .1719830562, .0004142808, 4.39014e-15, 0] + + # from stata + # use margins and put i. in front of dummies + obj.margeff_dummy_overall = [ + -0.15027280560599, -0.66568074771099, + 0.10094500919706, -0.09890639687842, + 0.77721770295360, 0.09708707452600, + -0.03608195237609, 0.15804581481115, + 0.65104087597053] + obj.margeff_dummy_overall_se = [ + .008273103, .0269856266, + .0052466639, .0046317555, .0351582169, .0016652181, + .0263736472, .0457480115, .0913901155] + + # just use margins + obj.margeff_nodummy_overall = [ + -0.15027280560599, -0.70677348928158, + 0.10094500919705, -0.09890639687842, + 0.77721770295359, 0.09708707452600, + -0.03614158359367, 0.15462412033340, + 0.58957704430148] + obj.margeff_nodummy_overall_se = [ + .008273103, .0305119343, + .0052466639, .0046317555, + .0351582168, .0016652181, + .0264611158, .0437974779, + .0752099666] + # taken from gretl + obj.resid = np.loadtxt(os.path.join(cur_dir, 'poisson_resid.csv'), + delimiter=",") + return obj + + poisson = poisson() + + def negativebinomial_nb2_bfgs(): + # R 2.15.1 MASS 7.3-22 glm.nb() + obj = Namespace() + obj.nobs = 20190 + obj.params = [ + -0.0579469537244314, + -0.267787718814838, 0.0412060770911646, -0.0381376804392121, + 0.268915772213171, 0.0381637446219235, -0.0441338846217674, + 0.0172521803400544, 0.177960787443151, 0.663556087183864, + # lnalpha from stata + 1.292953339909746] + # alpha and stderr from stata + obj.lnalpha_std_err = .0143932 + obj.lnalpha = 0.256929012449 + obj.bse = [ + 0.00607085853920512, 0.0226125368090765, + 0.00405542008282773, 0.00344455937127785, 0.0298855063286547, + 0.00142421904710063, 0.0199374393307107, 0.0358416931939136, + 0.0741013728607101, 0.0250354082637892, + # from stata + .0186098] + obj.z = [ + -9.54510030998327, -11.8424447940467, + 10.1607419822296, -11.071860382846, 8.99820030672628, + 26.7962605187844, -2.21361850384595, 0.481343898758222, + 2.40158556546135, 26.5047040652267] + obj.pvalues = [ + 1.35975947860026e-21, + 2.35486776488278e-32, 2.96808970292151e-24, + 1.71796558863781e-28, 2.2944789508802e-19, + 3.57231639404726e-158, 0.0268550333379416, 0.630272102021494, + 0.0163241908407114, 8.55476622951356e-155] + obj.fittedvalues = [ + 0.892904166867786, 0.892904166867786, 0.892904166867786, + 0.892904166867786, 0.892904166867786, 0.937038051489553, + 0.937038051489553, 0.937038051489553, 0.937038051489553, + 0.937038051489553] + # obj.aic = 86789.3241530713 # This is what R reports + obj.aic = 86789.32415307125484 # from Stata + obj.df_resid = 20180 + obj.df_model = 9 + # R conf_int: 1.96 * bse, not profile likelihood via R's confint() + obj.conf_int = [ + # from Stata + [-.0698826, -.0460113], + [-.3122654, -.2233101], + [.0330781, .049334], + [-.0448006, -.0314748], + [.2102246, .3276069], + [.0352959, .0410316], + [-.0834356, -.0048321], + [-.0535908, .0880951], + [.0324115, .3235101], + [.6150055, .7121067], + # from Stata + [1.256989, 1.329947] + ] + obj.bic = 86876.36652289562335 # stata + obj.llnull = -44199.27443563430279 # stata + obj.llr = 1631.224718197351 # stata + obj.llf = -43383.66207653563 # stata + obj.df_model = 9.0 + obj.llr_pvalue = 0.0 + return obj + + negativebinomial_nb2_bfgs = negativebinomial_nb2_bfgs() + + def negativebinomial_nb1_bfgs(): + # Unpublished implementation intended for R's COUNT package. Sent by + # J.Hilbe (of Cambridge UP NBin book) and Andrew Robinson to Vincent + # Arel-Bundock on 2012-12-06. + + # TODO: Does the from Stata comment below apply to the + # commented-out obj.params here or to everything below? If the + # latter, then where do the commented-out version come from? + # obj.params = [-0.065309744899923, -0.296016207412261, + # 0.0411724098925173, -0.0320460533573259, 0.19083354227553, + # 0.0318566232844115, -0.0331972813313092, -0.0484691550721231, + # 0.111971860837541, 0.757560143822609, + # 3.73086958562569] + # from Stata + obj = Namespace() + obj.nobs = 20190 + obj.params = [-.065317260803762961, -.296023807893893376, + .041187021258044826, -.032028789543547605, + .19065933246421754, .031871625115758778, + -.033250849053302826, -.04850769174426571, + .111813637465757343, .757277086555503409, + 3.731151380800305] + # lnalpha and lnalpha_std_err are from stata + obj.lnalpha = 1.316716867203 + obj.lnalpha_std_err = .0168876692 + obj.bse = [ + 0.00536019929563678, + 0.0196998350459769, 0.00335779098766272, 0.00301145915122889, + 0.0237984097096245, 0.00107360844112751, 0.0167174614755359, + 0.0298037989274781, 0.0546838603596457, 0.0214703279904911, + 0.0630011409376052] + obj.z = [ + -12.1842008660173, -15.0263292419148, + 12.2617548393554, -10.6413707601675, 8.0187518663633, + 29.6724784046551, -1.98578482623631, -1.62627439508848, + 2.04762173155154, 35.2840508145997, + + # From R, this is alpha/bse(alpha) + 59.2190796881069 + + # taken from Stata even though they don't report it + # lnalpha/bse(lnalpha) + # 77.968995 + ] + + obj.conf_int = [ + [-0.075815736, -0.0548037543], + [-0.334627884, -0.2574045307], + [0.034591140, 0.0477536802], + [-0.037948513, -0.0261435934], + [0.144188659, 0.2374784253], + [0.029752351, 0.0339608958], + [-0.065963506, -0.0004310568], + [-0.106884601, 0.0099462908], + [0.004791495, 0.2191522271], + [3.607387349, 3.8543518219], + [0.715478301, 0.7996419867]] + # from Stata + obj.llf = -43278.75612911823 + obj.llnull = -44199.2744356343 + obj.llr = 1841.036613032149 + obj.aic = 86579.51225823645655 + obj.bic = 86666.55462806082505 + obj.llr_pvalue = 0.0 + obj.df_model = 9.0 + obj.df_resid = 20180.0 + # Smoke tests TODO: check against other stats package + obj.pvalues = [ + 3.65557865e-034, 5.24431864e-051, + 1.42921171e-034, 2.09797259e-026, 1.15949461e-015, + 1.56785415e-193, 4.71746349e-002, 1.04731854e-001, + 4.07534831e-002, 1.95504975e-272, 0.00000000e+000] + obj.conf_int = [ + [-.0758236, -.054811], + [-.3346363, -.2574113], + [.0346053, .0477687], + [-.0379314, -.0261261], + [.1440119, .2373067], + [.0297667, .0339766], + [-.0660178, -.0004839], + [-.1069241, .0099087], + [.0046266, .2190007], + [.7151889, .7993652], + # from stata for alpha no lnalpha + [3.609675, 3.856716]] + # [1.28360034e+00, 1.34979803e+00]] + obj.fittedvalues = [ + 0.8487497, 0.8487497, 0.8487497, 0.8487497, + 0.8487497, 0.88201746, 0.88201746, 0.88201746, 0.88201746, + 0.88201746] + return obj + + negativebinomial_nb1_bfgs = negativebinomial_nb1_bfgs() + + def negativebinomial_geometric_bfgs(): + # Smoke tests TODO: Cross check with other stats package + obj = Namespace() + obj.nobs = 20190 + obj.params = [ + -0.05768894, -0.26646696, 0.04088528, -0.03795503, + 0.26885821, 0.03802523, -0.04308456, 0.01931675, 0.18051684, + 0.66469896] + obj.bse = [ + 0.00553867, 0.02061988, 0.00375937, 0.0030924, + 0.02701658, 0.00132201, 0.01821646, 0.03271784, 0.06666231, + 0.02250053] + obj.pvalues = [ + 2.10310916e-025, 3.34666368e-038, 1.50697768e-027, + 1.25468406e-034, 2.48155744e-023, 6.18745348e-182, + 1.80230194e-002, 5.54919603e-001, 6.77044178e-003, + 8.44913440e-192] + obj.z = [-10.41567024, -12.92281571, 10.8755779, -12.27364916, + 9.95160202, 28.76323587, -2.36514487, 0.59040434, + 2.70792943, 29.54148082] + obj.aic = 87101.159433012392 # old value 87101.160011780419 + obj.bic = 87180.288860125467 # old value 87180.289438893495 + obj.df_model = 9.0 + obj.df_resid = 20180.0 + obj.llf = -43540.58000589021 + obj.llnull = -44586.650971362695 # old value -44199.27443567125 + obj.llr = 2092.1425097129977 # old value 1317.3888595620811 + obj.llr_pvalue = 0 # old value 5.4288002863296022e-278 + obj.fittedvalues = [ + 0.89348994, 0.89348994, 0.89348994, + 0.89348994, 0.89348994, 0.9365745, 0.9365745, 0.9365745, + 0.9365745, 0.9365745] + obj.conf_int = [ + [-0.06854453, -0.04683335], + [-0.30688118, -0.22605273], + [0.03351706, 0.04825351], + [-0.04401602, -0.03189404], + [0.21590669, 0.32180972], + [0.03543415, 0.04061632], + [-0.07878816, -0.00738096], + [-0.04480903, 0.08344253], + [0.04986111, 0.31117258], + [0.62059873, 0.70879919]] + return obj + + negativebinomial_geometric_bfgs = negativebinomial_geometric_bfgs() + + def generalizedpoisson_gp2(): + # Stata gnpoisson function + obj = Namespace() + obj.nobs = 20190 + obj.llf = -43326.42720093228 + obj.params = [-0.0604495342, -0.277717228, 0.0438136144, + -0.0395811744, 0.273044906, 0.0399108677, -0.0552626543, + -0.001227569488, 0.151980519, 0.651125316, 0.448085318] + obj.lnalpha_std_err = 0.0125607 + obj.lnalpha = -0.8027716 + obj.bse = [0.00634704, 0.02381906, 0.00443871, 0.00355094, + 0.0334247, 0.00166303, 0.02102142, 0.0390845, + 0.087821, 0.02626823, 0.00562825] + obj.df_model = 9 + obj.aic = 86674.854401865 + obj.conf_int = [ + [-0.07288951, -0.04800956], + [-0.32440173, -0.23103272], + [0.03511389, 0.05251333], + [-0.04654088, -0.03262147], + [0.20753371, 0.33855610], + [0.03665139, 0.04317034], + [-0.09646387, -0.01406144], + [-0.07783191, 0.07537652], + [-0.02014548, 0.32410651], + [0.59964053, 0.70261011], + [0.43718883, 0.45925338] + ] + obj.bic = 86761.896771689 + obj.wald_pvalue = 4.8795019354e-254 + obj.wald_statistic = 1206.46339591254 + return obj + + generalizedpoisson_gp2 = generalizedpoisson_gp2() + + def zero_inflated_poisson_logit(): + obj = Namespace() + obj.nobs = 20190 + obj.params = [.1033783, -1.045983, -.0821979, .0085692, + -.0267957, 1.482363] + obj.llf = -57005.72199826186 + obj.bse = [0.0079912, 0.02235510, .0107145, 0.0018697, + 0.0014121, 0.0085915] + obj.conf_int = [ + [0.0877159, 0.1190408], + [-1.089798, -1.002167], + [-0.1031979, -0.061198], + [0.0049045, 0.0122338], + [-0.0295635, -0.024028], + [1.465524, 1.499202]] + obj.aic = 114023.444 + obj.bic = 114070.9 + return obj + + zero_inflated_poisson_logit = zero_inflated_poisson_logit() + + def zero_inflated_poisson_probit(): + obj = Namespace() + obj.nobs = 20190 + obj.params = [.0622534, -.6429324, -.0821788, .0085673, + -.0267952, 1.482369] + obj.llf = -57006.05 + obj.bse = [.0048228, .0132516, .0107142, .0018697, + .0014121, .0085913] + obj.conf_int = [ + [0.0528009, .0717058], + [-0.6689051, -.6169597], + [-0.1031783, -.0611793], + [0.0049027, .0122319], + [-0.0295629, -.0240275], + [1.46553, 1.499208]] + obj.aic = 114024.1 + obj.bic = 114071.6 + return obj + + zero_inflated_poisson_probit = zero_inflated_poisson_probit() + + def zero_inflated_poisson_offset(): + obj = Namespace() + obj.nobs = 20190 + obj.params = [.1052014, -1.082434, -.0922822, .0115868, + -.0283842, 1.347514] + obj.llf = -58207.67 + obj.bse = [.0081836, .0230043, .0107788, .0018687, + .0014162, .0086309] + obj.conf_int = [ + [.0891619, .1212409], + [-1.127522, -1.037347], + [-.1134082, -.0711561], + [.0079242, .0152494], + [-.0311599, -.0256085], + [1.330598, 1.36443]] + obj.aic = 116427.3 + obj.bic = 116474.8 + return obj + + zero_inflated_poisson_offset = zero_inflated_poisson_offset() + + def zero_inflated_generalized_poisson(): + obj = Namespace() + obj.nobs = 20190 + obj.params = [3.57337, -17.95797, -0.21380, 0.03847, + -0.05348, 1.15666, 1.36468] + obj.llf = -43630.6 + obj.bse = [1.66109, 7.62052, 0.02066, 0.00339, + 0.00289, 0.01680, 0.01606] + obj.aic = 87275 + return obj + + zero_inflated_generalized_poisson = zero_inflated_generalized_poisson() + + def zero_inflated_negative_binomial(): + obj = Namespace() + obj.params = [1.883859, -10.280888, -0.204769, 1.137985, 1.344457] + obj.llf = -44077.91 + obj.bse = [0.3653, 1.6694, 0.02178, 0.01163, 0.0217496] + obj.aic = 88165.81 + return obj + + zero_inflated_negative_binomial = zero_inflated_negative_binomial() diff --git a/statsmodels/discrete/tests/results/results_glm_logit_constrained.py b/statsmodels/discrete/tests/results/results_glm_logit_constrained.py new file mode 100644 index 0000000..0bdfdaf --- /dev/null +++ b/statsmodels/discrete/tests/results/results_glm_logit_constrained.py @@ -0,0 +1,697 @@ +import numpy as np + +from statsmodels.tools.testing import ParamsTableTestBunch + +est = dict( + k_eq_model=0, + phi=1, + vf=1, + df=28, + df_m=3, + power=0, + canonical=1, + rank=4, + aic=1.055602138883215, + rc=0, + p=.0388431588742135, + chi2=8.376256383189103, + ll=-12.88963422213144, + k_autoCns=0, + converged=1, + k_dv=1, + k_eq=1, + k=4, + ic=3, + N=32, + nbml=0, + bic=-71.26133683412948, + dispers_ps=.9734684585933382, + deviance_ps=27.25711684061347, + dispers_p=.9734684585933382, + deviance_p=27.25711684061347, + dispers_s=.920688158723674, + deviance_s=25.77926844426287, + dispers=.920688158723674, + deviance=25.77926844426287, + cmdline="glm grade gpa tuce psi, family(binomial)", + cmd="glm", + predict="glim_p", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + marginsok="default", + hac_lag="30", + vcetype="OIM", + vce="oim", + linkt="Logit", + linkf="ln(u/(1-u))", + varfunct="Bernoulli", + varfuncf="u*(1-u)", + opt1="ML", + oim="oim", + a="1", + m="1", + varfunc="glim_v2", + link="glim_l02", + chi2type="Wald", + opt="moptimize", + title="Generalized linear models", + user="glim_lf", + crittype="log likelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="grade", + properties="b V", + ) + +params_table = np.array([ + 2.8261124216999, 1.2629410221647, 2.2377231969675, .02523911156938, + .35079350365878, 5.301431339741, np.nan, 1.9599639845401, + 0, .09515765001172, .141554201358, .67223472774972, + .50143427587633, -.18228348651028, .37259878653373, np.nan, + 1.9599639845401, 0, 2.3786875040587, 1.0645642078703, + 2.2344237073472, .02545520725424, .29217999740245, 4.4651950107149, + np.nan, 1.9599639845401, 0, -13.021345912635, + 4.931323890811, -2.6405375515688, .00827746189686, -22.686563134726, + -3.3561286905433, np.nan, 1.9599639845401, 0 + ]).reshape(4, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'gpa tuce psi _cons'.split() + +cov = np.array([ + 1.5950200254665, -.03692058012179, .42761557297075, -4.5734780841711, + -.03692058012179, .0200375919221, .01491263753083, -.34625566662867, + .42761557297075, .01491263753083, 1.1332969526786, -2.3591604492672, + -4.5734780841711, -.34625566662867, -2.3591604492672, 24.317955316083 + ]).reshape(4, 4) + +cov_colnames = 'gpa tuce psi _cons'.split() + +cov_rownames = 'gpa tuce psi _cons'.split() + +infocrit = np.array([ + 32, np.nan, -12.889634222131, 4, + 33.779268444263, 39.642212055462]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + + +results_noconstraint = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + **est + ) + +est = dict( + k_eq_model=0, + phi=1, + vf=1, + df=28, + df_m=3, + power=0, + canonical=1, + rank=4, + aic=1.055602138883215, + rc=0, + p=.0248623136764981, + chi2=9.360530997638559, + ll=-12.88963422213144, + k_autoCns=0, + converged=1, + k_dv=1, + k_eq=1, + k=4, + ic=3, + N=32, + nbml=0, + bic=-71.26133683412948, + dispers_ps=.9734684585933382, + deviance_ps=27.25711684061347, + dispers_p=.9734684585933382, + deviance_p=27.25711684061347, + dispers_s=.920688158723674, + deviance_s=25.77926844426287, + dispers=.920688158723674, + deviance=25.77926844426287, + cmdline="glm grade gpa tuce psi, family(binomial) vce(robust)", + cmd="glm", + predict="glim_p", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + marginsok="default", + hac_lag="30", + vcetype="Robust", + vce="robust", + linkt="Logit", + linkf="ln(u/(1-u))", + varfunct="Bernoulli", + varfuncf="u*(1-u)", + opt1="ML", + oim="oim", + a="1", + m="1", + varfunc="glim_v2", + link="glim_l02", + chi2type="Wald", + opt="moptimize", + title="Generalized linear models", + user="glim_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="grade", + properties="b V", + ) + +params_table = np.array([ + 2.8261124216999, 1.287827879216, 2.1944799202672, .02820092594159, + .30201616014984, 5.3502086832499, np.nan, 1.9599639845401, + 0, .09515765001172, .1198091371814, .79424367999287, + .42705358424294, -.13966394388263, .32997924390608, np.nan, + 1.9599639845401, 0, 2.3786875040587, .97985082470462, + 2.4276016757712, .01519902587997, .45821517741577, 4.2991598307016, + np.nan, 1.9599639845401, 0, -13.021345912635, + 5.2807513766642, -2.4658130981467, .01367026437574, -23.371428422207, + -2.6712634030626, np.nan, 1.9599639845401, 0 + ]).reshape(4, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'gpa tuce psi _cons'.split() + +cov = np.array([ + 1.6585006464861, .00630184631279, .20368998146717, -5.7738061195745, + .00630184631279, .01435422935215, .01997066738212, -.34768562593344, + .20368998146717, .01997066738212, .96010763867432, -1.5315997267117, + -5.7738061195745, -.34768562593344, -1.5315997267117, 27.886335102141 + ]).reshape(4, 4) + +cov_colnames = 'gpa tuce psi _cons'.split() + +cov_rownames = 'gpa tuce psi _cons'.split() + +infocrit = np.array([ + 32, np.nan, -12.889634222131, 4, + 33.779268444263, 39.642212055462]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + + +results_noconstraint_robust = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + **est + ) + +est = dict( + k_eq_model=0, + phi=1, + vf=1, + df=29, + df_m=2, + power=0, + canonical=1, + rank=3, + aic=.993115540206396, + rc=0, + p=.0600760311411508, + chi2=5.624288666552698, + ll=-12.88984864330234, + k_autoCns=0, + converged=1, + k_dv=1, + k_eq=1, + k=4, + ic=3, + N=32, + nbml=0, + bic=-74.7266438945874, + dispers_ps=.9340711710496038, + deviance_ps=27.08806396043851, + dispers_p=.9340711710496038, + deviance_p=27.08806396043851, + dispers_s=.8889550788484368, + deviance_s=25.77969728660467, + dispers=.8889550788484368, + deviance=25.77969728660467, + cmdline="glm grade gpa tuce psi, family(binomial) constraints(1)", + cmd="glm", + predict="glim_p", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + marginsok="default", + hac_lag="30", + vcetype="OIM", + vce="oim", + linkt="Logit", + linkf="ln(u/(1-u))", + varfunct="Bernoulli", + varfuncf="u*(1-u)", + opt1="ML", + oim="oim", + a="1", + m="1", + varfunc="glim_v2", + link="glim_l02", + chi2type="Wald", + opt="moptimize", + title="Generalized linear models", + user="glim_lf", + crittype="log likelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="grade", + properties="b V", + ) + +params_table = np.array([ + 2.8, np.nan, np.nan, np.nan, + np.nan, np.nan, np.nan, 1.9599639845401, + 0, .09576464077943, .13824841412912, .69269974185736, + .48849800113543, -.17519727183342, .36672655339228, np.nan, + 1.9599639845401, 0, 2.3717067235827, 1.0071435928909, + 2.3548843882081, .01852846934254, .39774155425619, 4.3456718929091, + np.nan, 1.9599639845401, 0, -12.946549758905, + 3.3404275889275, -3.8757163309928, .00010631147941, -19.493667526167, + -6.3994319916434, np.nan, 1.9599639845401, 0 + ]).reshape(4, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'gpa tuce psi _cons'.split() + +cov = np.array([ + 0, 0, 0, 0, + 0, .01911262400922, .02461998233256, -.45036648979107, + 0, .02461998233256, 1.0143382167012, -1.126241119498, + 0, -.45036648979107, -1.126241119498, 11.158456476868 + ]).reshape(4, 4) + +cov_colnames = 'gpa tuce psi _cons'.split() + +cov_rownames = 'gpa tuce psi _cons'.split() + +infocrit = np.array([ + 32, np.nan, -12.889848643302, 3, + 31.779697286605, 36.176904995004]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + + +results_constraint1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + **est + ) + +est = dict( + k_eq_model=0, + phi=1, + vf=1, + df=29, + df_m=2, + power=0, + canonical=1, + rank=3, + aic=.9965088127779717, + rc=0, + p=.0151376593316312, + chi2=8.381139289068923, + ll=-12.94414100444755, + k_autoCns=0, + converged=1, + k_dv=1, + k_eq=1, + k=4, + ic=3, + N=32, + nbml=0, + bic=-74.61805917229698, + dispers_ps=.9101961406899989, + deviance_ps=26.39568808000997, + dispers_p=.9101961406899989, + deviance_p=26.39568808000997, + dispers_s=.892699379617072, + deviance_s=25.88828200889509, + dispers=.892699379617072, + deviance=25.88828200889509, + cmdline="glm grade gpa tuce psi, family(binomial) constraints(2)", + cmd="glm", + predict="glim_p", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + marginsok="default", + hac_lag="30", + vcetype="OIM", + vce="oim", + linkt="Logit", + linkf="ln(u/(1-u))", + varfunct="Bernoulli", + varfuncf="u*(1-u)", + opt1="ML", + oim="oim", + a="1", + m="1", + varfunc="glim_v2", + link="glim_l02", + chi2type="Wald", + opt="moptimize", + title="Generalized linear models", + user="glim_lf", + crittype="log likelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="grade", + properties="b V", + ) + +params_table = np.array([ + 2.5537914524884, .92662050289421, 2.7560273537138, .00585081038138, + .73764863947939, 4.3699342654975, np.nan, 1.9599639845401, + 0, .10791139824293, .13554656123081, .79612051580696, + .42596199070477, -.15775497999771, .37357777648357, np.nan, + 1.9599639845401, 0, 2.5537914524884, .92662050289421, + 2.7560273537138, .00585081038138, .73764863947939, 4.3699342654975, + np.nan, 1.9599639845401, 0, -12.527922070831, + 4.6393777844052, -2.7003453163357, .00692675392223, -21.62093543894, + -3.4349087027211, np.nan, 1.9599639845401, 0 + ]).reshape(4, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'gpa tuce psi _cons'.split() + +cov = np.array([ + .85862555638391, -.00408642741742, .85862555638391, -3.1725052764862, + -.00408642741742, .0183728702615, -.00408642741742, -.40376368789892, + .85862555638391, -.00408642741742, .85862555638391, -3.1725052764862, + -3.1725052764862, -.40376368789892, -3.1725052764862, 21.523826226433 + ]).reshape(4, 4) + +cov_colnames = 'gpa tuce psi _cons'.split() + +cov_rownames = 'gpa tuce psi _cons'.split() + +infocrit = np.array([ + 32, np.nan, -12.944141004448, 3, + 31.888282008895, 36.285489717294]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predict_mu = np.array([ + .02720933393726, .05877785527304, .17341537851768, .02240274574181, + .48834788561471, .03262255746648, .02545734725406, .05057489993471, + .10986224061161, .64848146294279, .02525325609066, .17259131542841, + .28314297612096, .18171413480391, .33018645131295, .02988039105483, + .05693576903037, .03731338966779, .61672273095571, .68861137241716, + .08792248035539, .90822178043053, .25295501355621, .85758484919326, + .83972248507748, .54158048311843, .62661357692624, .36224489285202, + .83387563062407, .93837010344092, .55200183830167, .13940358008872 + ]) + +predict_mu_colnames = 'predict_mu'.split() + +predict_mu_rownames = ['r'+str(n) for n in range(1, 33)] + +predict_linpred_std = np.array([ + 1.2186852972383, .98250143329647, .71300625338041, 1.7281112031272, + .58278126610648, 1.2588643933597, 1.323097466817, 1.0187451680624, + .92583226681839, .97445803529749, 1.2426520057509, .66674211884633, + .53877733839827, .77006015103931, .70670367147137, 1.2036701125873, + 1.1407798755705, 1.1376397495763, .57331962577752, .65764380198652, + .85122884445037, 1.1282943138296, 1.2981327331615, .91561885084703, + .8524827403359, .75030433039358, 1.0902299962647, .53350768600347, + .96511132361274, 1.2127047415358, .61923877005984, .80300912367498 + ]) + +predict_linpred_std_colnames = 'predict_linpred_std'.split() + +predict_linpred_std_rownames = ['r'+str(n) for n in range(1, 33)] + +predict_hat = np.array([ + .03931157544567, .05340381182541, .07287215399916, .06540404284993, + .0848623883214, .0500117280211, .04343078449564, .04983412818394, + .08382437063813, .21645722203914, .03801090644315, .06348261316195, + .05891921860299, .08817451110282, .11045563375857, .04199779738721, + .06987634275981, .04648995770552, .0776956378885, .09273814423054, + .05810645039404, .10611489289649, .31844046474321, .10239122636412, + .09780916971071, .13976583081559, .27809589396914, .06575633167064, + .12902962938834, .08505028097419, .09482722348113, .07735963673184 + ]) + +predict_hat_colnames = 'predict_hat'.split() + +predict_hat_rownames = ['r'+str(n) for n in range(1, 33)] + + +results_constraint2 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predict_mu=predict_mu, + predict_mu_colnames=predict_mu_colnames, + predict_mu_rownames=predict_mu_rownames, + predict_linpred_std=predict_linpred_std, + predict_linpred_std_colnames=predict_linpred_std_colnames, + predict_linpred_std_rownames=predict_linpred_std_rownames, + predict_hat=predict_hat, + predict_hat_colnames=predict_hat_colnames, + predict_hat_rownames=predict_hat_rownames, + **est + ) + +est = dict( + k_eq_model=0, + phi=1, + vf=1, + df=29, + df_m=2, + power=0, + canonical=1, + rank=3, + aic=.9965088127779717, + rc=0, + p=.0085760854232441, + chi2=9.517555427941099, + ll=-12.94414100444755, + k_autoCns=0, + converged=1, + k_dv=1, + k_eq=1, + k=4, + ic=3, + N=32, + nbml=0, + bic=-74.61805917229698, + dispers_ps=.9101961406899989, + deviance_ps=26.39568808000997, + dispers_p=.9101961406899989, + deviance_p=26.39568808000997, + dispers_s=.892699379617072, + deviance_s=25.88828200889509, + dispers=.892699379617072, + deviance=25.88828200889509, + cmdline="glm grade gpa tuce psi, family(binomial) constraints(2) vce(robust)", # noqa:E501 + cmd="glm", + predict="glim_p", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + marginsok="default", + hac_lag="30", + vcetype="Robust", + vce="robust", + linkt="Logit", + linkf="ln(u/(1-u))", + varfunct="Bernoulli", + varfuncf="u*(1-u)", + opt1="ML", + oim="oim", + a="1", + m="1", + varfunc="glim_v2", + link="glim_l02", + chi2type="Wald", + opt="moptimize", + title="Generalized linear models", + user="glim_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="grade", + properties="b V", + ) + +params_table = np.array([ + 2.5537914524884, .83609404798719, 3.0544308485827, .00225487991353, + .91507723074524, 4.1925056742316, np.nan, 1.9599639845401, + 0, .10791139824293, .12275592600281, .8790728216287, + .37936179287834, -.13268579561143, .3485085920973, np.nan, + 1.9599639845401, 0, 2.5537914524884, .83609404798719, + 3.0544308485827, .00225487991353, .91507723074524, 4.1925056742316, + np.nan, 1.9599639845401, 0, -12.527922070831, + 4.510414281113, -2.7775546302454, .00547696322683, -21.368171617167, + -3.6876725244938, np.nan, 1.9599639845401, 0 + ]).reshape(4, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'gpa tuce psi _cons'.split() + +cov = np.array([ + .6990532570796, .01512804251258, .6990532570796, -2.9662622048441, + .01512804251258, .01506901736881, .01512804251258, -.3968065659911, + .6990532570796, .01512804251258, .6990532570796, -2.9662622048441, + -2.9662622048441, -.3968065659911, -2.9662622048441, 20.343836987269 + ]).reshape(4, 4) + +cov_colnames = 'gpa tuce psi _cons'.split() + +cov_rownames = 'gpa tuce psi _cons'.split() + +infocrit = np.array([ + 32, np.nan, -12.944141004448, 3, + 31.888282008895, 36.285489717294]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + + +results_constraint2_robust = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + **est + ) + +est = dict( + N_cds=0, + N_cdf=0, + p=.0151376589433054, + chi2=8.381139340374848, + df_m=2, + k_eq_model=1, + ll=-12.94414100444751, + k_autoCns=0, + rc=0, + converged=1, + k_dv=1, + k_eq=1, + k=4, + ic=5, + N=32, + rank=3, + cmdline="logit grade gpa tuce psi, constraints(2)", + cmd="logit", + estat_cmd="logit_estat", + predict="logit_p", + marginsnotok="stdp DBeta DEviance DX2 DDeviance Hat Number Residuals RStandard SCore", # noqa:E501 + title="Logistic regression", + chi2type="Wald", + opt="moptimize", + vce="oim", + user="mopt__logit_d2()", + crittype="log likelihood", + ml_method="d2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="grade", + properties="b V", + ) + +params_table = np.array([ + 2.5537916456996, .92662056628814, 2.7560273736742, .00585081002433, + .73764870844071, 4.3699345829585, np.nan, 1.9599639845401, + 0, .10791141442743, .13554656655573, .79612060393329, + .42596193948753, -.15775497424986, .37357780310472, np.nan, + 1.9599639845401, 0, 2.5537916456996, .92662056628814, + 2.7560273736742, .00585081002433, .73764870844071, 4.3699345829585, + np.nan, 1.9599639845401, 0, -12.527923225554, + 4.6393781670436, -2.7003453425175, .00692675337706, -21.62093734362, + -3.4349091074867, np.nan, 1.9599639845401, 0 + ]).reshape(4, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'gpa tuce psi _cons'.split() + +cov = np.array([ + .85862567386816, -.00408642236043, .85862567386816, -3.172505858545, + -.00408642236043, .01837287170505, -.00408642236043, -.40376374127778, + .85862567386816, -.00408642236043, .85862567386816, -3.172505858545, + -3.172505858545, -.40376374127778, -3.172505858545, 21.523829776841 + ]).reshape(4, 4) + +cov_colnames = 'gpa tuce psi _cons'.split() + +cov_rownames = 'gpa tuce psi _cons'.split() + +infocrit = np.array([ + 32, np.nan, -12.944141004448, 3, + 31.888282008895, 36.285489717294]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + + +results_logit_constraint2 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + **est + ) diff --git a/statsmodels/discrete/tests/results/results_poisson_constrained.py b/statsmodels/discrete/tests/results/results_poisson_constrained.py new file mode 100644 index 0000000..009cc06 --- /dev/null +++ b/statsmodels/discrete/tests/results/results_poisson_constrained.py @@ -0,0 +1,665 @@ +import numpy as np + +from statsmodels.tools.testing import ParamsTableTestBunch + +est = dict( + rank=7, + N=10, + ic=3, + k=8, + k_eq=1, + k_dv=1, + converged=1, + rc=0, + k_autoCns=1, + ll=-33.45804471711131, + k_eq_model=1, + ll_0=-349.6684656479622, + df_m=6, + chi2=632.4208418617018, + p=2.3617193197e-133, + r2_p=.9043149497192691, + cmdline="poisson deaths lnpyears smokes i.agecat", + cmd="poisson", + predict="poisso_p", + estat_cmd="poisson_estat", + gof="poiss_g", + chi2type="LR", + opt="moptimize", + vce="oim", + title="Poisson regression", + user="poiss_lf", + crittype="log likelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="deaths", + properties="b V", + ) + +params_table = np.array([ + .66308184237808, .63593388706566, 1.0426899019923, .29709193621918, + -.58332567281917, 1.9094893575753, np.nan, 1.9599639845401, + 0, .84966723812924, .94279599903649, .90122066597395, + .36747100512904, -.99817896475073, 2.6975134410092, np.nan, + 1.9599639845401, 0, 0, np.nan, + np.nan, np.nan, np.nan, np.nan, + np.nan, 1.9599639845401, 0, 1.3944392032504, + .25613243411925, 5.4442117338454, 5.203529593e-08, .8924288571041, + 1.8964495493967, np.nan, 1.9599639845401, 0, + 2.389284381366, .48305517266329, 4.9461935542328, 7.567871319e-07, + 1.4425136404002, 3.3360551223318, np.nan, 1.9599639845401, + 0, 2.8385093615484, .98099727008295, 2.8934936397003, + .00380982006764, .91579004325369, 4.7612286798431, np.nan, + 1.9599639845401, 0, 2.9103531988515, 1.500316321385, + 1.9398263935201, .05240079188831, -.03021275648066, 5.8509191541838, + np.nan, 1.9599639845401, 0, -4.724924181641, + 6.0276019460727, -.78388125558284, .43310978942119, -16.538806909087, + 7.088958545805, np.nan, 1.9599639845401, 0 + ]).reshape(8, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['lnpyears', 'smokes', '1b.agecat', '2.agecat', + '3.agecat', '4.agecat', '5.agecat', '_cons'] + +cov = np.array([ + .40441190871844, -.59566294916097, 0, .1055698685775, + .28413388045122, .61269322798077, .94624135329227, -3.8311942353131, + -.59566294916097, .88886429579921, 0, -.15587944298625, + -.4190789999425, -.90299843943229, -1.3940094688194, 5.6335527795822, + 0, 0, 0, 0, + 0, 0, 0, 0, + .1055698685775, -.15587944298625, 0, .06560382380785, + .10360281461667, .18937107288073, .27643306166968, -1.029211453947, + .28413388045122, -.4190789999425, 0, .10360281461667, + .23334229983676, .45990880867889, .69424104947043, -2.7206801001387, + .61269322798077, -.90299843943229, 0, .18937107288073, + .45990880867889, .96235564391021, 1.4630024143274, -5.8333014154113, + .94624135329227, -1.3940094688194, 0, .27643306166968, + .69424104947043, 1.4630024143274, 2.2509490642142, -8.993394678922, + -3.8311942353131, 5.6335527795822, 0, -1.029211453947, + -2.7206801001387, -5.8333014154113, -8.993394678922, 36.331985220299 + ]).reshape(8, 8) + +cov_colnames = ['lnpyears', 'smokes', '1b.agecat', '2.agecat', + '3.agecat', '4.agecat', '5.agecat', '_cons'] + +cov_rownames = ['lnpyears', 'smokes', '1b.agecat', '2.agecat', + '3.agecat', '4.agecat', '5.agecat', '_cons'] + + +results_noexposure_noconstraint = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +est = dict( + rank=6, + N=10, + ic=3, + k=7, + k_eq=1, + k_dv=1, + converged=1, + rc=0, + k_autoCns=1, + ll=-33.6001534405213, + k_eq_model=1, + ll_0=-495.0676356770329, + df_m=5, + chi2=922.9349644730232, + p=2.8920463572e-197, + r2_p=.9321301757191799, + cmdline="poisson deaths smokes i.agecat, exposure(pyears)", + cmd="poisson", + predict="poisso_p", + estat_cmd="poisson_estat", + offset="ln(pyears)", + gof="poiss_g", + chi2type="LR", + opt="moptimize", + vce="oim", + title="Poisson regression", + user="poiss_lf", + crittype="log likelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="deaths", + properties="b V", + ) + +params_table = np.array([ + .35453563725291, .10737411818853, 3.3018723993653, .00096041750265, + .14408623273163, .56498504177418, np.nan, 1.9599639845401, + 0, 0, np.nan, np.nan, + np.nan, np.nan, np.nan, np.nan, + 1.9599639845401, 0, 1.4840070063099, .19510337263434, + 7.606260139291, 2.821411159e-14, 1.1016114226842, 1.8664025899355, + np.nan, 1.9599639845401, 0, 2.6275051184579, + .18372726944827, 14.301116684248, 2.153264398e-46, 2.2674062873614, + 2.9876039495544, np.nan, 1.9599639845401, 0, + 3.350492785161, .18479918093323, 18.130452571495, 1.832448146e-73, + 2.9882930461593, 3.7126925241626, np.nan, 1.9599639845401, + 0, 3.7000964518246, .19221951212105, 19.24932807807, + 1.430055953e-82, 3.3233531309415, 4.0768397727077, np.nan, + 1.9599639845401, 0, -7.919325711822, .19176181876223, + -41.297719029467, 0, -8.2951719702059, -7.5434794534381, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['smokes', '1b.agecat', '2.agecat', '3.agecat', + '4.agecat', '5.agecat', '_cons'] + +cov = np.array([ + .01152920125677, 0, -.00061561668833, -.00090117889461, + -.00087280941113, -.00045274641397, -.00921219275997, 0, + 0, 0, 0, 0, + 0, 0, -.00061561668833, 0, + .0380653260133, .02945988432334, .02945836949789, .0294359396881, + -.0289198676971, -.00090117889461, 0, .02945988432334, + .03375570953892, .0294799877675, .02944715358419, -.02869169455392, + -.00087280941113, 0, .02945836949789, .0294799877675, + .03415073727359, .02944603952766, -.02871436265941, -.00045274641397, + 0, .0294359396881, .02944715358419, .02944603952766, + .03694834084006, -.02905000614546, -.00921219275997, 0, + -.0289198676971, -.02869169455392, -.02871436265941, -.02905000614546, + .036772595135]).reshape(7, 7) + +cov_colnames = ['smokes', '1b.agecat', '2.agecat', '3.agecat', + '4.agecat', '5.agecat', '_cons'] + +cov_rownames = ['smokes', '1b.agecat', '2.agecat', '3.agecat', + '4.agecat', '5.agecat', '_cons'] + + +results_exposure_noconstraint = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +est = dict( + rank=6, + N=10, + ic=4, + k=8, + k_eq=1, + k_dv=1, + converged=1, + rc=0, + k_autoCns=1, + ll=-33.46699798755848, + k_eq_model=1, + df_m=5, + chi2=452.5895246742914, + p=1.35732711092e-95, + r2_p=np.nan, + cmdline="poisson deaths lnpyears smokes i.agecat, constraints(1)", + cmd="poisson", + predict="poisso_p", + estat_cmd="poisson_estat", + gof="poiss_g", + chi2type="Wald", + opt="moptimize", + vce="oim", + title="Poisson regression", + user="poiss_lf", + crittype="log likelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="deaths", + properties="b V", + ) + +params_table = np.array([ + .57966535352347, .13107152221057, 4.4225117992619, 9.756001957e-06, + .32276989059191, .83656081645503, np.nan, 1.9599639845401, + 0, .97254074124891, .22289894431919, 4.3631464663029, + .00001282050472, .5356668381913, 1.4094146443065, np.nan, + 1.9599639845401, 0, 0, np.nan, + np.nan, np.nan, np.nan, np.nan, + np.nan, 1.9599639845401, 0, 1.3727621378494, + .19798042377276, 6.9338276567436, 4.096036246e-12, .98472763761078, + 1.760796638088, np.nan, 1.9599639845401, 0, + 2.3307703209845, .20530981936838, 11.352454199, 7.210981748e-30, + 1.92837046935, 2.7331701726189, np.nan, 1.9599639845401, + 0, 2.71338890728, .29962471107816, 9.0559583604312, + 1.353737255e-19, 2.1261352646886, 3.3006425498714, np.nan, + 1.9599639845401, 0, 2.71338890728, .29962471107816, + 9.0559583604312, 1.353737255e-19, 2.1261352646886, 3.3006425498714, + np.nan, 1.9599639845401, 0, -3.9347864312059, + 1.2543868840549, -3.1368204508696, .00170790683415, -6.3933395466329, + -1.476233315779, np.nan, 1.9599639845401, 0 + ]).reshape(8, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['lnpyears', 'smokes', '1b.agecat', '2.agecat', + '3.agecat', '4.agecat', '5.agecat', '_cons'] + +cov = np.array([ + .0171797439346, -.02561346650005, 0, .00445310785396, + .01204526460873, .03142116278001, .03142116278001, -.16245493266167, + -.02561346650005, .04968393937861, 0, -.0069699735991, + -.01845598801461, -.04723465558226, -.04723465558226, .2326939064726, + 0, 0, 0, 0, + 0, 0, 0, 0, + .00445310785396, -.0069699735991, 0, .03919624819724, + .03254829669461, .03756752462584, .03756752462584, -.07124751761252, + .01204526460873, -.01845598801461, 0, .03254829669461, + .04215212192908, .05145895528528, .05145895528528, -.14290240509701, + .03142116278001, -.04723465558226, 0, .03756752462584, + .05145895528528, .08977496748867, .08977496748867, -.32621483141938, + .03142116278001, -.04723465558226, 0, .03756752462584, + .05145895528528, .08977496748867, .08977496748867, -.32621483141938, + -.16245493266167, .2326939064726, 0, -.07124751761252, + -.14290240509701, -.32621483141938, -.32621483141938, 1.5734864548889 + ]).reshape(8, 8) + +cov_colnames = ['lnpyears', 'smokes', '1b.agecat', '2.agecat', + '3.agecat', '4.agecat', '5.agecat', '_cons'] + +cov_rownames = ['lnpyears', 'smokes', '1b.agecat', '2.agecat', + '3.agecat', '4.agecat', '5.agecat', '_cons'] + + +results_noexposure_constraint = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +est = dict( + rank=5, + N=10, + ic=3, + k=7, + k_eq=1, + k_dv=1, + converged=1, + rc=0, + k_autoCns=1, + ll=-38.45090497564205, + k_eq_model=1, + df_m=4, + chi2=641.6446542589836, + p=1.5005477751e-137, + r2_p=np.nan, + cmdline=("poisson deaths smokes i.agecat, " + "exposure(pyears) constraints(1)"), + cmd="poisson", + predict="poisso_p", + estat_cmd="poisson_estat", + offset="ln(pyears)", + gof="poiss_g", + chi2type="Wald", + opt="moptimize", + vce="oim", + title="Poisson regression", + user="poiss_lf", + crittype="log likelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="deaths", + properties="b V", + ) + +params_table = np.array([ + .34304077058284, .1073083520206, 3.196776058186, .00138972774083, + .13272026538212, .55336127578356, np.nan, 1.9599639845401, + 0, 0, np.nan, np.nan, + np.nan, np.nan, np.nan, np.nan, + 1.9599639845401, 0, 1.4846230896448, .19510453584194, + 7.6093724999174, 2.754298692e-14, 1.1022252261742, 1.8670209531154, + np.nan, 1.9599639845401, 0, 2.6284071093765, + .18373002757074, 14.305811326156, 2.012766793e-46, 2.2683028724593, + 2.9885113462937, np.nan, 1.9599639845401, 0, + 3.4712405808805, .17983994458502, 19.301833020969, 5.183735658e-83, + 3.1187607665121, 3.8237203952488, np.nan, 1.9599639845401, + 0, 3.4712405808805, .17983994458502, 19.301833020969, + 5.183735658e-83, 3.1187607665121, 3.8237203952488, np.nan, + 1.9599639845401, 0, -7.9101515866812, .19164951521841, + -41.274049546467, 0, -8.2857777341639, -7.5345254391986, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['smokes', '1b.agecat', '2.agecat', '3.agecat', + '4.agecat', '5.agecat', '_cons'] + +cov = np.array([ + .01151508241338, 0, -.00061947268694, -.00090708285562, + -.00074959767622, -.00074959767622, -.00917958318314, 0, + 0, 0, 0, 0, + 0, 0, -.00061947268694, 0, + .0380657799061, .02946056271023, .0294520905375, .0294520905375, + -.02891793401778, -.00090708285562, 0, .02946056271023, + .03375672303114, .02947081310555, .02947081310555, -.02868865719866, + -.00074959767622, 0, .0294520905375, .02947081310555, + .03234240566834, .03234240566834, -.02881420109427, -.00074959767622, + 0, .0294520905375, .02947081310555, .03234240566834, + .03234240566834, -.02881420109427, -.00917958318314, 0, + -.02891793401778, -.02868865719866, -.02881420109427, -.02881420109427, + .03672953668345]).reshape(7, 7) + +cov_colnames = ['smokes', '1b.agecat', '2.agecat', '3.agecat', + '4.agecat', '5.agecat', '_cons'] + +cov_rownames = ['smokes', '1b.agecat', '2.agecat', '3.agecat', + '4.agecat', '5.agecat', '_cons'] + + +results_exposure_constraint = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +est = dict( + rank=6, + N=10, + ic=3, + k=8, + k_eq=1, + k_dv=1, + converged=1, + rc=0, + k_autoCns=1, + ll=-33.78306559091298, + k_eq_model=1, + df_m=5, + chi2=526.719430888018, + p=1.3614066522e-111, + r2_p=np.nan, + cmdline="poisson deaths lnpyears smokes i.agecat, constraints(2)", + cmd="poisson", + predict="poisso_p", + estat_cmd="poisson_estat", + gof="poiss_g", + chi2type="Wald", + opt="moptimize", + vce="oim", + title="Poisson regression", + user="poiss_lf", + crittype="log likelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="deaths", + properties="b V", + ) + +params_table = np.array([ + 1.1598786864273, .13082965708054, 8.8655639119598, 7.611783820e-19, + .90345727043975, 1.4163001024149, np.nan, 1.9599639845401, + 0, .12111539473831, .22317899375276, .54268277090847, + .58734823873758, -.31630739512299, .55853818459962, np.nan, + 1.9599639845401, 0, 0, np.nan, + np.nan, np.nan, np.nan, np.nan, + np.nan, 1.9599639845401, 0, 1.5276244194375, + .19848759770871, 7.6963217705896, 1.400389019e-14, 1.1385958765506, + 1.9166529623245, np.nan, 1.9599639845401, 0, + 2.7415571106656, .20647039325801, 13.278209371354, 3.097119459e-40, + 2.3368825760061, 3.1462316453252, np.nan, 1.9599639845401, + 0, 3.587300073596, .30160673316211, 11.893965482753, + 1.272196529e-32, 2.9961617391034, 4.1784384080885, np.nan, + 1.9599639845401, 0, 4.087300073596, .30160673316211, + 13.551753406643, 7.735990122e-42, 3.4961617391034, 4.6784384080885, + np.nan, 1.9599639845401, 0, -9.4376201542802, + 1.2537557101599, -7.5274792990385, 5.172920628e-14, -11.894936191605, + -6.9803041169553, np.nan, 1.9599639845401, 0 + ]).reshape(8, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['lnpyears', 'smokes', '1b.agecat', '2.agecat', + '3.agecat', '4.agecat', '5.agecat', '_cons'] + +cov = np.array([ + .01711639917181, -.02559852137367, 0, .00475026273828, + .012305588195, .03167368550108, .03167368550108, -.16210959536359, + -.02559852137367, .0498088632525, 0, -.00783669874902, + -.01946551099054, -.0482099128044, -.0482099128044, .23336630265161, + 0, 0, 0, 0, + 0, 0, 0, 0, + .00475026273828, -.00783669874902, 0, .03939732644417, + .0328943776068, .0382554606876, .0382554606876, -.07382466315002, + .012305588195, -.01946551099054, 0, .0328943776068, + .04263002329212, .05226051095238, .05226051095238, -.14512177326509, + .03167368550108, -.0482099128044, 0, .0382554606876, + .05226051095238, .09096662148872, .09096662148872, -.32873181469848, + .03167368550108, -.0482099128044, 0, .0382554606876, + .05226051095238, .09096662148872, .09096662148872, -.32873181469848, + -.16210959536359, .23336630265161, 0, -.07382466315002, + -.14512177326509, -.32873181469848, -.32873181469848, 1.5719033807586 + ]).reshape(8, 8) + +cov_colnames = ['lnpyears', 'smokes', '1b.agecat', '2.agecat', + '3.agecat', '4.agecat', '5.agecat', '_cons'] + +cov_rownames = ['lnpyears', 'smokes', '1b.agecat', '2.agecat', + '3.agecat', '4.agecat', '5.agecat', '_cons'] + + +results_noexposure_constraint2 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +est = dict( + rank=5, + N=10, + ic=3, + k=7, + k_eq=1, + k_dv=1, + converged=1, + rc=0, + k_autoCns=1, + ll=-34.5367006700131, + k_eq_model=1, + df_m=4, + chi2=554.4168921897579, + p=1.1331093797e-118, + r2_p=np.nan, + cmdline=("poisson deaths smokes i.agecat, " + "exposure(pyears) constraints(2)"), + cmd="poisson", + predict="poisso_p", + estat_cmd="poisson_estat", + offset="ln(pyears)", + gof="poiss_g", + chi2type="Wald", + opt="moptimize", + vce="oim", + title="Poisson regression", + user="poiss_lf", + crittype="log likelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="deaths", + properties="b V", + ) + +params_table = np.array([ + .35978347114582, .10730668667519, 3.3528522992687, .00079983377167, + .14946622996212, .57010071232952, np.nan, 1.9599639845401, + 0, 0, np.nan, np.nan, + np.nan, np.nan, np.nan, np.nan, + 1.9599639845401, 0, 1.4837272702102, .19510269288329, + 7.6048528509946, 2.852282383e-14, 1.1013330188722, 1.8661215215483, + np.nan, 1.9599639845401, 0, 2.6270956495127, + .18372567328363, 14.299012231442, 2.219372691e-46, 2.2669999468414, + 2.987191352184, np.nan, 1.9599639845401, 0, + 3.2898291023835, .17982035319735, 18.295087535352, 9.055555257e-75, + 2.9373876864294, 3.6422705183376, np.nan, 1.9599639845401, + 0, 3.7898291023835, .17982035319735, 21.075640409983, + 1.330935038e-98, 3.4373876864294, 4.1422705183376, np.nan, + 1.9599639845401, 0, -7.9235211042587, .19177810950798, + -41.316087245761, 0, -8.2993992919175, -7.5476429165999, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['smokes', '1b.agecat', '2.agecat', '3.agecat', + '4.agecat', '5.agecat', '_cons'] + +cov = np.array([ + .01151472500521, 0, -.00061274288972, -.00089685568608, + -.00069335681347, -.00069335681347, -.00921031399899, 0, + 0, 0, 0, 0, + 0, 0, -.00061274288972, 0, + .03806506077031, .02945948985187, .02944866089267, .02944866089267, + -.02892164840477, -.00089685568608, 0, .02945948985187, + .03375512302352, .02946576868665, .02946576868665, -.0286943943397, + -.00069335681347, 0, .02944866089267, .02946576868665, + .03233535942402, .03233535942402, -.02885716752919, -.00069335681347, + 0, .02944866089267, .02946576868665, .03233535942402, + .03233535942402, -.02885716752919, -.00921031399899, 0, + -.02892164840477, -.0286943943397, -.02885716752919, -.02885716752919, + .03677884328645]).reshape(7, 7) + +cov_colnames = ['smokes', '1b.agecat', '2.agecat', '3.agecat', + '4.agecat', '5.agecat', '_cons'] + +cov_rownames = ['smokes', '1b.agecat', '2.agecat', '3.agecat', + '4.agecat', '5.agecat', '_cons'] + + +results_exposure_constraint2 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + + +est = dict( + rank=5, + N=10, + ic=3, + k=7, + k_eq=1, + k_dv=1, + converged=1, + rc=0, + k_autoCns=1, + ll=-34.5367006700131, + k_eq_model=1, + df_m=4, + chi2=582.5215805315736, + p=9.3932644024e-125, + r2_p=np.nan, + cmdline=("poisson deaths smokes i.agecat," + "exposure(pyears) constraints(2) vce(robust)"), + cmd="poisson", + predict="poisso_p", + estat_cmd="poisson_estat", + offset="ln(pyears)", + gof="poiss_g", + chi2type="Wald", + opt="moptimize", + vcetype="Robust", + vce="robust", + title="Poisson regression", + user="poiss_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="deaths", + properties="b V", + ) + +params_table = np.array([ + .35978347114582, .1172393358046, 3.0687948603312, .00214924117257, + .1299985953974, .58956834689424, np.nan, 1.9599639845401, + 0, 0, np.nan, np.nan, + np.nan, np.nan, np.nan, np.nan, + 1.9599639845401, 0, 1.4837272702102, .21969092615175, + 6.7537030145039, 1.441186055e-11, 1.0531409672225, 1.9143135731979, + np.nan, 1.9599639845401, 0, 2.6270956495127, + .20894895542061, 12.572906355164, 2.975796525e-36, 2.217563222281, + 3.0366280767443, np.nan, 1.9599639845401, 0, + 3.2898291023835, .2211846822073, 14.873675109654, 4.885611722e-50, + 2.8563150913252, 3.7233431134417, np.nan, 1.9599639845401, + 0, 3.7898291023835, .2211846822073, 17.134229479922, + 8.243780087e-66, 3.3563150913252, 4.2233431134417, np.nan, + 1.9599639845401, 0, -7.9235211042587, .2479876721169, + -31.951270144281, 5.18748229e-224, -8.4095680102177, -7.4374741982996, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['smokes', '1b.agecat', '2.agecat', '3.agecat', + '4.agecat', '5.agecat', '_cons'] + +cov = np.array([ + .0137450618599, 0, .00249770233028, .00412347653263, + .00486142402447, .00486142402447, -.01620342093134, 0, + 0, 0, 0, 0, + 0, 0, .00249770233028, 0, + .04826410303341, .04389964215014, .04391744129373, .04391744129373, + -.04609122424924, .00412347653263, 0, .04389964215014, + .04365966597136, .04367917402468, .04367917402468, -.04726310745444, + .00486142402447, 0, .04391744129373, .04367917402468, + .04892266364314, .04892266364314, -.04794543190806, .00486142402447, + 0, .04391744129373, .04367917402468, .04892266364314, + .04892266364314, -.04794543190806, -.01620342093134, 0, + -.04609122424924, -.04726310745444, -.04794543190806, -.04794543190806, + .06149788552196]).reshape(7, 7) + +cov_colnames = ['smokes', '1b.agecat', '2.agecat', '3.agecat', + '4.agecat', '5.agecat', '_cons'] + +cov_rownames = ['smokes', '1b.agecat', '2.agecat', '3.agecat', + '4.agecat', '5.agecat', '_cons'] + + +results_exposure_constraint2_robust = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) diff --git a/statsmodels/discrete/tests/results/ships.csv b/statsmodels/discrete/tests/results/ships.csv new file mode 100644 index 0000000..4857c89 --- /dev/null +++ b/statsmodels/discrete/tests/results/ships.csv @@ -0,0 +1,41 @@ +ship,yr_con,yr_op,service,accident,op_75_79,co_65_69,co_70_74,co_75_79 +1,1,1,127,0,0,0,0,0 +1,1,2,63,0,1,0,0,0 +1,2,1,1095,3,0,1,0,0 +1,2,2,1095,4,1,1,0,0 +1,3,1,1512,6,0,0,1,0 +1,3,2,3353,18,1,0,1,0 +1,4,1,,,0,0,0,1 +1,4,2,2244,11,1,0,0,1 +2,1,1,44882,39,0,0,0,0 +2,1,2,17176,29,1,0,0,0 +2,2,1,28609,58,0,1,0,0 +2,2,2,20370,53,1,1,0,0 +2,3,1,7064,12,0,0,1,0 +2,3,2,13099,44,1,0,1,0 +2,4,1,,,0,0,0,1 +2,4,2,7117,18,1,0,0,1 +3,1,1,1179,1,0,0,0,0 +3,1,2,552,1,1,0,0,0 +3,2,1,781,0,0,1,0,0 +3,2,2,676,1,1,1,0,0 +3,3,1,783,6,0,0,1,0 +3,3,2,1948,2,1,0,1,0 +3,4,1,,,0,0,0,1 +3,4,2,274,1,1,0,0,1 +4,1,1,251,0,0,0,0,0 +4,1,2,105,0,1,0,0,0 +4,2,1,288,0,0,1,0,0 +4,2,2,192,0,1,1,0,0 +4,3,1,349,2,0,0,1,0 +4,3,2,1208,11,1,0,1,0 +4,4,1,,,0,0,0,1 +4,4,2,2051,4,1,0,0,1 +5,1,1,45,0,0,0,0,0 +5,1,2,,,1,0,0,0 +5,2,1,789,7,0,1,0,0 +5,2,2,437,7,1,1,0,0 +5,3,1,1157,5,0,0,1,0 +5,3,2,2161,12,1,0,1,0 +5,4,1,,,0,0,0,1 +5,4,2,542,1,1,0,0,1 diff --git a/statsmodels/discrete/tests/results/sm3533.csv b/statsmodels/discrete/tests/results/sm3533.csv new file mode 100644 index 0000000..b1854ed --- /dev/null +++ b/statsmodels/discrete/tests/results/sm3533.csv @@ -0,0 +1,271 @@ +pp,num +10.171795655804711,1.0 +10.501472042414694,1742.0 +11.282291429896768,1.0 +11.43695113687264,0.0 +10.995897311894359,3071.0 +11.259593288117415,4829.0 +11.7913901878724,3.0 +10.89529383688643,284.0 +11.399319941347034,3558.0 +11.142513744919452,2907.0 +10.016101696905263,1.0 +11.134749595299702,1.0 +11.460178482911612,618.0 +10.332962113104644,0.0 +13.182255495711443,260.0 +9.873234509365107,101.0 +9.662243674190131,1.0 +11.31757945705352,3196.0 +11.17871067839023,1132.0 +10.605321890243529,1072.0 +10.849667129269148,17.0 +11.14135440850962,1.0 +12.194571763193121,1.0 +10.761280150015972,1264.0 +10.472968802094007,790.0 +10.488993841578681,2017.0 +9.914625296946584,1104.0 +10.889845245523059,976.0 +10.948980318873577,3127.0 +11.5754588521697,116.0 +10.83891402271876,12.0 +10.42611328041787,0.0 +11.966132569063815,1474.0 +10.193915850655934,1012.0 +10.237635661893249,970.0 +10.39714667138021,871.0 +10.809020627757324,0.0 +11.02875800051622,2867.0 +12.114171149556503,2.0 +10.268304262166483,1.0 +10.917304189499522,0.0 +11.818717556594327,820.0 +12.398893062575521,1150.0 +10.273843483530724,816.0 +11.12056412623904,0.0 +11.612707449517059,118.0 +11.074513521713284,1941.0 +10.742962032791647,435.0 +10.568055201212758,1483.0 +11.111820836139026,1577.0 +11.492804386974006,4605.0 +10.800656625202697,721.0 +10.848151918598122,2060.0 +10.753638481905739,0.0 +10.98918344927101,1.0 +11.165153627640535,0.0 +11.564863051756848,4734.0 +10.276877027171807,856.0 +11.286689637494428,0.0 +11.107180317654745,5218.0 +9.957833682276242,851.0 +10.990769224861854,1675.0 +11.62666478024292,1.0 +11.369701536831892,3140.0 +10.345605978292328,1932.0 +9.621655004873238,0.0 +11.749853571255056,2.0 +10.609723697637792,0.0 +11.24217916922465,533.0 +11.260443212190522,547.0 +9.775199532234597,1.0 +11.973282717164158,1.0 +12.39948249930955,2.0 +10.518051376717915,1950.0 +11.476168115244377,3200.0 +10.263013428702846,2267.0 +11.29761366527052,1582.0 +9.479527461791719,0.0 +10.918011460821951,123.0 +9.609384912281424,609.0 +11.414948733073855,0.0 +9.331406899955626,185.0 +9.940494278165223,1.0 +10.645520130825885,0.0 +10.053156777054832,316.0 +10.980399414224898,2991.0 +11.445620453959314,3494.0 +9.727227587120769,0.0 +10.004011390302427,698.0 +10.316986965672614,689.0 +11.364135391385066,3924.0 +11.841192703900717,6241.0 +10.513551992534897,1286.0 +9.898977397058243,0.0 +10.418315157681416,1508.0 +10.824208456689599,1043.0 +11.128820593983395,3372.0 +10.79605919778969,0.0 +9.409027282856401,590.0 +10.931122859815252,3334.0 +11.247317946836759,3475.0 +11.396245570629663,4236.0 +8.016977746762262,0.0 +10.919840790366809,0.0 +12.205947637717022,183.0 +11.233489301372298,4567.0 +8.931155429778348,506.0 +9.478763169489152,374.0 +11.830112940179575,7285.0 +10.812169410206767,1221.0 +12.048991843752006,817.0 +10.485004604424653,0.0 +10.240673819890999,1848.0 +11.230960352847676,0.0 +11.175254510173374,1.0 +10.923651694875096,2894.0 +9.52704712346858,0.0 +9.567385247481795,623.0 +10.956247856355338,1580.0 +11.406642301581638,4668.0 +11.760785043234838,4730.0 +9.625887815425859,632.0 +11.016167098415673,3149.0 +10.381087258403491,0.0 +9.664976524090797,1154.0 +10.981641999301841,2852.0 +11.553347379469145,1.0 +9.939337205429826,182.0 +9.708566960165658,696.0 +11.426495736971841,1767.0 +10.59518368082876,0.0 +11.332841403116465,1.0 +10.784876232401018,2281.0 +10.889080441396876,2319.0 +9.916601191681512,0.0 +11.043417712757153,0.0 +11.000965865163035,2943.0 +10.604454082148205,0.0 +10.928202103359991,0.0 +11.039154749155248,1694.0 +10.195410619245164,0.0 +10.955636966793897,1316.0 +9.478533767844102,0.0 +11.178752582806263,2963.0 +9.909121651153221,1182.0 +8.13622555490846,0.0 +11.495036405634488,0.0 +11.576651155850774,0.0 +9.272563715156315,0.0 +10.416071629316981,1693.0 +10.684760072732194,158.0 +10.020336819032421,1401.0 +11.86824749413235,0.0 +11.622792809600409,36.0 +10.139665782120794,960.0 +11.001649739923852,1739.0 +12.139216774744108,1.0 +12.239226918062332,814.0 +10.273187304197549,1105.0 +9.959584291887998,957.0 +11.551164927623898,2.0 +8.84779106484485,0.0 +10.341226221194589,0.0 +10.71005270013163,1283.0 +10.088015007879244,0.0 +11.293338082983785,0.0 +11.80365289560797,8247.0 +11.117138373413335,9719.0 +10.265105260864017,1111.0 +10.234229114448356,924.0 +9.612065160468624,544.0 +9.53870842969938,1.0 +10.012610979554482,1887.0 +10.467579023926712,0.0 +10.746734361340112,1745.0 +11.110266416192525,2441.0 +10.659257357575182,3468.0 +11.344991902770955,4480.0 +9.4053313318708,1.0 +10.856187356294447,1246.0 +10.25558704504304,0.0 +12.144888492205176,1.0 +11.123063000089472,2129.0 +10.157780872842554,923.0 +8.025843344150903,0.0 +10.638592082856581,0.0 +10.121578360213686,409.0 +10.24817594392868,1.0 +9.396155818024393,0.0 +11.514204646468608,4214.0 +11.835421922338627,1329.0 +10.73832958879877,1353.0 +9.962840778235641,1005.0 +10.051303927230347,606.0 +10.000069650382372,0.0 +11.571656530433991,5698.0 +10.620912625555597,2552.0 +9.616205400105674,725.0 +10.985292722887856,2581.0 +10.38294634055262,1291.0 +11.943187245295023,1.0 +10.98999352120919,0.0 +10.109810426119994,0.0 +10.386068010861816,1315.0 +10.61837176273886,0.0 +9.970772299341725,0.0 +9.070618428801046,0.0 +9.890706218171395,0.0 +11.041192341010333,4193.0 +10.499738295850376,2794.0 +10.908741089458378,2333.0 +8.284251797621916,0.0 +10.991173701070684,0.0 +11.153561193744727,2027.0 +10.300685246225866,1465.0 +12.054313270918852,5.0 +11.84448565723042,17.0 +11.485667314199365,4407.0 +9.452658902676433,677.0 +11.163481457539843,0.0 +9.658609509075912,0.0 +9.107310471656639,662.0 +9.1689974084418,0.0 +10.319694757176194,1072.0 +11.541736414824339,1.0 +11.538485993495504,4382.0 +10.50457426724686,1.0 +10.39714667138021,1374.0 +9.383957488139991,0.0 +10.443512690706546,0.0 +10.632773779711947,0.0 +8.975630184290507,0.0 +10.734111457653192,0.0 +11.062018331415482,1723.0 +10.151089542682712,1626.0 +11.594026074406777,2463.0 +11.375684342656722,2843.0 +10.50840443170166,57.0 +10.42812732013549,1.0 +10.995763139986401,0.0 +11.72499997991353,0.0 +11.408375731650665,1.0 +10.535211354858648,1.0 +11.449048058581468,1.0 +11.475389731441124,6662.0 +9.775370049755686,683.0 +9.464207095933233,679.0 +10.63904746172768,0.0 +10.693080631364326,458.0 +10.528757310692988,0.0 +10.263013428702846,1.0 +9.91788343281986,0.0 +11.757352898921226,267.0 +9.950132560359172,0.0 +9.502711433914095,0.0 +9.875345246589848,0.0 +12.047276190783021,40.0 +11.327860147505211,2933.0 +10.897257709680655,3857.0 +10.211413331464952,0.0 +9.911505324129712,851.0 +10.739240454183802,0.0 +11.608817293765796,980.0 +9.610792938260802,1446.0 +10.604057118911712,3130.0 +11.5332083690719,4090.0 +11.55856782284893,1338.0 +11.438697485615931,0.0 +11.709864661587565,1.0 +10.720377750501907,3485.0 diff --git a/statsmodels/discrete/tests/results/yhat_mnlogit.csv b/statsmodels/discrete/tests/results/yhat_mnlogit.csv new file mode 100644 index 0000000..92a034f --- /dev/null +++ b/statsmodels/discrete/tests/results/yhat_mnlogit.csv @@ -0,0 +1,944 @@ +0.000000000000000000e+00 1.091812372207600079e+00 4.618033468723299895e-01 9.404182434081999331e-02 1.919830322265599909e+00 2.670277595519999991e+00 3.444295644760099862e+00 +0.000000000000000000e+00 2.954681813716900085e-01 -1.227542519569400081e+00 -2.769356250762899929e+00 -3.547792911529500159e+00 -2.918476581573500095e+00 -5.426845073700000022e+00 +0.000000000000000000e+00 8.384079486131999770e-02 -1.188047885894800038e+00 -3.224680423736599799e+00 -4.295885086059599622e+00 -3.734299659728999909e+00 -6.635762214660600122e+00 +0.000000000000000000e+00 2.704371809959399964e-01 -9.751980304717999815e-01 -2.814782619476300152e+00 -3.141824007034299981e+00 -2.550637960433999929e+00 -4.741875171661400046e+00 +0.000000000000000000e+00 -1.554855406284300079e-01 -1.288965821266200074e+00 -2.478269338607800076e+00 -1.118454575538599949e+00 -7.633252739906299933e-01 -1.266640186309800020e+00 +0.000000000000000000e+00 2.768236994743299983e-01 -1.201968193054200107e+00 -2.726332426071199855e+00 -3.506469488143900026e+00 -2.885432243347199943e+00 -5.359333992004399860e+00 +0.000000000000000000e+00 -5.235689282417299584e-01 -1.692458987236000079e+00 -2.401009082794200111e+00 -1.426363229751600015e+00 -1.185254216194199905e+00 -1.733987689018199996e+00 +0.000000000000000000e+00 8.868359327316299723e-01 -3.064339756965600015e-01 -1.445470452308700082e+00 -8.331816196441700351e-01 -7.358023524284000583e-02 -1.041075229644800038e+00 +0.000000000000000000e+00 3.194109499454499956e-01 -1.082954168319699928e+00 -2.353542804717999815e+00 -2.359568357467700217e+00 -1.763418793678299901e+00 -3.452911138534500157e+00 +0.000000000000000000e+00 -2.920083403587300230e-01 -2.082370996475200187e+00 -3.329412460327100032e+00 -4.158841133117699762e+00 -3.726515293121300143e+00 -6.306940555572499996e+00 +0.000000000000000000e+00 -4.375942796468999807e-02 -1.916077971458399976e+00 -3.069896459579500192e+00 -4.194577217102099631e+00 -3.658500194549600071e+00 -6.427406311035199771e+00 +0.000000000000000000e+00 3.124215006828299779e-01 -1.136726737022399902e+00 -2.417746305465700019e+00 -2.415040969848599950e+00 -1.819938302040100098e+00 -3.538268327712999817e+00 +0.000000000000000000e+00 8.410068750381499703e-01 -4.900009036064100210e-01 -1.652157664298999906e+00 -1.007611989975000011e+00 -2.603613734245299738e-01 -1.305550098419199889e+00 +0.000000000000000000e+00 1.342830210924099987e-01 -1.101660609245300071e+00 -2.461819648742700206e+00 -2.201459884643599985e+00 -1.688634634017899927e+00 -3.151999473571799992e+00 +0.000000000000000000e+00 -7.227604389190700473e-01 -2.371169805526700092e+00 -2.578900098800700036e+00 -2.210537910461400024e+00 -1.997070431709299987e+00 -2.995729923248299897e+00 +0.000000000000000000e+00 1.455281674861899910e-01 -5.252090692520100523e-01 -8.655400872230499809e-01 4.153435826301600242e-01 8.578100800514200097e-01 1.128966689109800026e+00 +0.000000000000000000e+00 -4.328437447547899830e-01 -1.853376030921900064e+00 -2.712911605835000017e+00 -2.764017581939699930e+00 -2.433430433273299887e+00 -3.983702659606899843e+00 +0.000000000000000000e+00 4.024118185043299989e-01 -6.359210014343299466e-01 -2.459645509719799783e+00 -2.851581811904900121e+00 -2.218682527542100047e+00 -4.310974121093799738e+00 +0.000000000000000000e+00 4.354814589023600080e-01 -6.072318553924600515e-01 -1.324160575866700107e+00 1.794435083866099956e-01 7.304453849792500453e-01 7.372450828552199464e-01 +0.000000000000000000e+00 -4.521529078483599862e-01 -1.914808630943299894e+00 -3.272201538085900197e+00 -4.870410919189500198e+00 -4.473528385162399701e+00 -7.537154674529999987e+00 +0.000000000000000000e+00 -1.251995086669899893e+00 -2.623523235321000069e+00 -3.034072875976599803e+00 -3.088251352310200204e+00 -3.054024219512899929e+00 -4.400413990020799915e+00 +0.000000000000000000e+00 2.950382418930000156e-03 -1.571337223053000054e+00 -3.285231590271000091e+00 -4.742066383361800419e+00 -4.184479713439899662e+00 -7.388031005859399869e+00 +0.000000000000000000e+00 3.730467259883900044e-01 -8.848776221275299614e-01 -1.943267822265599909e+00 -2.192941427230799878e+00 -1.575885891914400094e+00 -3.247791051864600043e+00 +0.000000000000000000e+00 6.822260618209800009e-01 1.158687546849300060e-01 -5.477955937385600160e-01 8.559341430664100248e-01 1.477980613708500091e+00 1.729574084281900070e+00 +0.000000000000000000e+00 -8.122916519641999733e-02 -1.337551832199100010e+00 -2.258961439132700200e+00 -2.390999555587800085e+00 -1.940741896629299967e+00 -3.481888532638500067e+00 +0.000000000000000000e+00 6.605322957038900489e-01 -1.408182680606800130e-01 -1.353118896484400091e+00 -1.501938462257399909e+00 -8.041491508483900041e-01 -2.193635225296000080e+00 +0.000000000000000000e+00 -1.240363940596599934e-01 -1.520381212234499957e+00 -3.092132091522199921e+00 -3.502909183502199930e+00 -3.045718431472800081e+00 -5.285950660705600157e+00 +0.000000000000000000e+00 2.824140489101399920e-01 -7.457596659660300498e-01 -2.284756898879999998e+00 -1.816015481948900057e+00 -1.269593119621299948e+00 -2.573437690734900141e+00 +0.000000000000000000e+00 1.626259088516200102e-01 -8.532025814056399815e-01 -1.537386775016799989e+00 -9.717955589294400287e-01 -4.778743386268600180e-01 -1.183944821357699961e+00 +0.000000000000000000e+00 1.567146331071899990e-01 -1.366108298301700108e+00 -2.430429935455300061e+00 -2.584804058075000022e+00 -2.038556098937999828e+00 -3.823281526565600164e+00 +0.000000000000000000e+00 -2.103277668356999877e-02 -1.733338236808799948e+00 -2.851294040679900110e+00 -3.970949172973599950e+00 -3.435786247253400205e+00 -6.104429721832300260e+00 +0.000000000000000000e+00 -5.466662049293500303e-01 -1.921643495559699932e+00 -2.545301914215099881e+00 -2.747402191162100049e+00 -2.458228349685700032e+00 -4.006981849670400386e+00 +0.000000000000000000e+00 2.692280411720299749e-01 -8.306318521499600482e-01 -1.815642833709699921e+00 -2.027167320251499927e+00 -1.457412481308000052e+00 -2.994208574294999980e+00 +0.000000000000000000e+00 3.337874114513399992e-01 -5.029654502868700083e-01 -1.436903357505799894e+00 -1.704081535339400100e+00 -1.119170308113099921e+00 -2.500993251800499806e+00 +0.000000000000000000e+00 1.075936794281000086e+00 -1.515845060348499918e-01 -6.749686002731299928e-01 1.312448978424100021e+00 2.068340778350799880e+00 2.455673933029200118e+00 +0.000000000000000000e+00 -6.124967932701099738e-01 -1.489977836608900041e+00 -2.396485328674299975e+00 -3.208568334579500192e+00 -2.931637763977100075e+00 -4.816322326660199771e+00 +0.000000000000000000e+00 -1.043621420860300075e+00 -2.142180442810099894e+00 -2.732211351394699950e+00 -2.603279590606700111e+00 -2.515459299087499989e+00 -3.676558017730700012e+00 +0.000000000000000000e+00 5.515900254250000190e-02 -9.062491655349700359e-01 -1.051511883735700037e+00 1.161423206329299962e+00 1.533991456031799983e+00 2.388160228729200085e+00 +0.000000000000000000e+00 1.542547702789299979e+00 6.184469461441000071e-01 -1.537166833877600114e-01 1.910721421241800000e+00 2.818068027496300143e+00 3.335738658904999987e+00 +0.000000000000000000e+00 -1.155725270509700003e-01 -7.178711891174299753e-01 -2.269430398941000071e+00 -2.522270917892500020e+00 -2.101780414581300160e+00 -3.756218671798699837e+00 +0.000000000000000000e+00 -3.636437281965999857e-02 -1.415579795837399901e+00 -1.947661280631999947e+00 -1.485082626342800083e+00 -1.046499371528599953e+00 -1.997547268867500003e+00 +0.000000000000000000e+00 6.036074757575999872e-01 -7.035380005836500139e-01 -1.352377533912699992e+00 -2.709221653639999963e-02 5.960505604743999708e-01 3.195651769638099826e-01 +0.000000000000000000e+00 1.295403391122799952e-01 -1.158701181411700087e+00 -3.213788747787500011e+00 -4.225269794464099782e+00 -3.654503345489500177e+00 -6.577207565307600312e+00 +0.000000000000000000e+00 9.649598002433800170e-01 -2.137501090764999945e-01 -5.009021759033199794e-01 1.265137672424299975e+00 1.988679051399200093e+00 2.376280546188399789e+00 +0.000000000000000000e+00 1.197311356663700033e-01 -1.028810501098599950e+00 -2.361520528793299878e+00 -2.041144609451300163e+00 -1.544621825218200017e+00 -2.943643808364900138e+00 +0.000000000000000000e+00 -1.633648353200000086e-04 -6.248764395713799491e-01 -1.478817224502599892e+00 6.310963034629799573e-01 9.805598258972200165e-01 1.516993045806900087e+00 +0.000000000000000000e+00 -1.544251292943999918e-02 -8.235351443290700457e-01 -1.644820213317899960e+00 -1.825620412826499894e+00 -1.369827270507800066e+00 -2.633050441741899839e+00 +0.000000000000000000e+00 -1.213408470153799934e+00 -2.318766832351700113e+00 -2.669784784317000170e+00 -2.738748550414999983e+00 -2.703060150146499918e+00 -3.883750677108800176e+00 +0.000000000000000000e+00 -1.028008386492700044e-01 -1.318707585334800036e+00 -2.223144531250000000e+00 -2.286397695541400044e+00 -1.853494048118599968e+00 -3.359260559082000164e+00 +0.000000000000000000e+00 5.132489204406700534e-01 -9.755128622054999588e-02 -1.840575098991400038e+00 -2.220738887786899873e+00 -1.573220372199999995e+00 -3.411508321762100060e+00 +0.000000000000000000e+00 -2.862665057182299799e-01 -9.106428027152999594e-01 -1.355372309684800047e+00 -6.620211601257299794e-01 -3.537007570266699763e-01 -6.710271239280699573e-01 +0.000000000000000000e+00 4.620833694934800007e-01 -2.237076759338400000e-01 -9.098361134529100447e-01 -4.015808105468799960e-01 1.834212988614999928e-01 -3.880476355552699985e-01 +0.000000000000000000e+00 -7.583503723144500164e-01 -2.021193742752100064e+00 -2.551352977752700202e+00 -2.680525064468400220e+00 -2.476753711700399929e+00 -3.889872074127199930e+00 +0.000000000000000000e+00 -3.524715900421099835e-01 -1.588997364044199889e+00 -2.177803993225099877e+00 -1.376763820648200021e+00 -1.072873592376700103e+00 -1.774745941162100049e+00 +0.000000000000000000e+00 -1.666319727897600078e+00 -2.904959440231300150e+00 -4.027512550354000354e+00 -5.031681060790999638e+00 -5.105834007263199581e+00 -7.608982563018799716e+00 +0.000000000000000000e+00 -5.769834294915000134e-02 -1.050942182540899994e+00 -1.417082190513599960e+00 6.796327978372999901e-02 4.341165423393200107e-01 5.546195507049600515e-01 +0.000000000000000000e+00 -5.332493782043500330e-01 -1.458668231964100004e+00 -1.909797787666299929e+00 -1.107849955558799948e+00 -8.804145455360400385e-01 -1.325631022453299890e+00 +0.000000000000000000e+00 -8.013738393783600422e-01 -1.845148921012899956e+00 -2.303693294525099855e+00 -2.454092741012599888e+00 -2.273224592208900052e+00 -3.529677867889399856e+00 +0.000000000000000000e+00 1.032217025756799966e+00 7.339870929717999815e-01 -3.429916799068499778e-01 1.485356211662300030e+00 2.199103593826300163e+00 2.657242298126199831e+00 +0.000000000000000000e+00 -6.765357255935700032e-01 -1.845357894897500017e+00 -2.564722299575799891e+00 -2.486068487167400143e+00 -2.265287637710600155e+00 -3.576211452484100217e+00 +0.000000000000000000e+00 -1.364124864339799903e-01 -1.337733983993500075e+00 -3.289763689041099948e+00 -4.210507392883299893e+00 -3.744244575500499828e+00 -6.532436370849599605e+00 +0.000000000000000000e+00 -3.694907128810899777e-01 -2.054689407348599950e+00 -3.686678886413599976e+00 -4.961312770843499642e+00 -4.544957637786899873e+00 -7.712685108184800242e+00 +0.000000000000000000e+00 2.842297554016099959e-01 -1.045350074768099935e+00 -2.096575021743800171e+00 -2.243444681167599875e+00 -1.664788246154800033e+00 -3.355976819992100069e+00 +0.000000000000000000e+00 2.464667409658400088e-01 -1.296262741088900050e+00 -2.639337539672899968e+00 -3.541355133056600213e+00 -2.931602001190200202e+00 -5.498687267303499659e+00 +0.000000000000000000e+00 -6.500019133091000656e-02 -1.365919828414899895e+00 -2.304491758346599806e+00 -2.364983558654799811e+00 -1.915445208549499956e+00 -3.488033771514900128e+00 +0.000000000000000000e+00 -5.592858791351299486e-01 -1.788377523422199911e+00 -2.559130668640099859e+00 -2.501988887786899873e+00 -2.236214160919200111e+00 -3.620336532592800083e+00 +0.000000000000000000e+00 1.099111437797499979e+00 2.570604383945500060e-01 -3.599999845027900269e-01 1.841947913169899920e+00 2.579802036285399947e+00 3.279449224472000157e+00 +0.000000000000000000e+00 1.104592084884600034e+00 7.382053136825600381e-01 -1.891568452119800070e-01 1.422114729881299944e+00 2.170547485351599803e+00 2.500806570053100142e+00 +0.000000000000000000e+00 -3.997640609741199835e-01 -7.480141520500199759e-01 -1.028523206710800109e+00 7.274500727653500087e-01 9.330767393112200381e-01 1.641219854354899921e+00 +0.000000000000000000e+00 -1.727920621633499965e-01 -8.609806895256000292e-01 -1.300775647163399995e+00 4.465667903423299889e-01 7.465402483940100087e-01 1.165836215019200095e+00 +0.000000000000000000e+00 5.224570035934400503e-01 -5.654680132865900211e-01 -2.193132400512700197e+00 -1.674095869064299968e+00 -1.049810171127300018e+00 -2.457695007324200098e+00 +0.000000000000000000e+00 -2.893845736980399930e-01 -1.768534302711499917e+00 -3.369577169418299878e+00 -4.660880565643299889e+00 -4.225872516632099618e+00 -7.279378890991200279e+00 +0.000000000000000000e+00 1.828726008533999858e-02 -1.072391986846900069e+00 -1.108045578002899934e+00 -7.964038848877000309e-02 3.334432542324100024e-01 2.421516776084899902e-01 +0.000000000000000000e+00 2.755204401910000059e-02 -5.925400853157000158e-01 -1.566524744033799932e+00 -1.474158406257600085e+00 -1.026779651641799962e+00 -2.112201929092400121e+00 +0.000000000000000000e+00 5.290710926055900432e-01 -5.059055685997000396e-01 -1.551980495452899955e+00 -1.771357178688000023e+00 -1.116454958915700013e+00 -2.682093858718900048e+00 +0.000000000000000000e+00 -3.167724311351799993e-01 -1.435855984687800069e+00 -2.250207424163800152e+00 -2.237674951553299874e+00 -1.890516638755799894e+00 -3.270085573196400031e+00 +0.000000000000000000e+00 -2.336819916963600030e-01 -1.784910678863500078e+00 -3.042408943176300173e+00 -4.823420524597199943e+00 -4.345688343048100144e+00 -7.589778423309300415e+00 +0.000000000000000000e+00 -1.033225774764999993e+00 -2.451717376708999918e+00 -2.997420310974100222e+00 -4.037092208862300247e+00 -3.885217666626000099e+00 -6.130931377410900218e+00 +0.000000000000000000e+00 1.256903111934699890e-01 -1.372479319572400103e+00 -2.667482376098599950e+00 -3.510168552398699848e+00 -2.950255870819099790e+00 -5.452197551727300251e+00 +0.000000000000000000e+00 7.141117006540000089e-02 -7.759882807731599552e-01 -1.880352377891499893e+00 -2.805175304412800052e+00 -2.286310911178599969e+00 -4.343852519989000349e+00 +0.000000000000000000e+00 -7.035092711448700520e-01 -1.368926644325300090e+00 -1.945503711700399929e+00 -1.899701237678500076e+00 -1.709224343299899918e+00 -2.679376363754299994e+00 +0.000000000000000000e+00 -9.098612070083600400e-01 -1.964900135993999930e+00 -3.209518909454299962e+00 -3.363115072250399962e+00 -3.217633485794099801e+00 -5.004679679870600140e+00 +0.000000000000000000e+00 -1.317502140998799920e+00 -2.143173217773400197e+00 -2.198520660400399951e+00 -2.455621480941799994e+00 -2.465375185012800063e+00 -3.493015527725200187e+00 +0.000000000000000000e+00 -1.101434946060199982e+00 -2.415991067886400057e+00 -3.103147506713900050e+00 -3.897532701492299800e+00 -3.784037828445399931e+00 -5.878188610076899856e+00 +0.000000000000000000e+00 9.472656846046400014e-01 4.884690642356899759e-01 -2.265580445527999864e-01 1.196242690086400051e+00 1.899896502494800021e+00 2.150582790374799824e+00 +0.000000000000000000e+00 -2.429950684308999909e-01 -1.589863061904899899e+00 -2.297779321670499808e+00 -2.479084968566899860e+00 -2.091544628143299889e+00 -3.704599142074600060e+00 +0.000000000000000000e+00 6.975781321525600376e-01 -7.246921956539000009e-02 -7.959866523742700206e-01 7.722035050392199729e-01 1.390248894691499926e+00 1.508381485938999900e+00 +0.000000000000000000e+00 -2.295766621828100040e-01 -1.227828264236499933e+00 -1.354184269905100102e+00 2.406696556140000207e-03 3.074782490730300077e-01 4.127514362335200082e-01 +0.000000000000000000e+00 3.423350155353500068e-01 -8.275035619735700010e-01 -2.289644479751599793e+00 -2.959552049636799964e+00 -2.344807386398299887e+00 -4.627332210540799906e+00 +0.000000000000000000e+00 -5.269329063590000133e-03 -1.264967918396000091e+00 -2.892797470092800083e+00 -4.255686283111599799e+00 -3.727577209472700215e+00 -6.716277599334699921e+00 +0.000000000000000000e+00 3.620790839195299760e-01 -9.067413806915299856e-01 -2.780927896499600038e+00 -2.955410957336400024e+00 -2.350144624710099883e+00 -4.576367855072000168e+00 +0.000000000000000000e+00 3.696293830871599795e-01 -2.122126966714900087e-01 -1.658541798591600003e+00 -1.140096664428700057e+00 -5.923977494239800468e-01 -1.621812343597399897e+00 +0.000000000000000000e+00 -2.301907688379299932e-01 -7.341901659965499594e-01 -1.297359466552699958e+00 7.151806950569199461e-01 9.740752577781699451e-01 1.596032261848399969e+00 +0.000000000000000000e+00 6.581476330757100035e-01 -4.292683899402600090e-01 -1.036149501800500028e+00 3.462408781051600215e-01 9.700843095779400072e-01 8.267197012901299491e-01 +0.000000000000000000e+00 6.897988319397000412e-01 -2.082742452621499929e-01 -1.399650454521200071e+00 -3.640179336070999971e-01 2.833974659442899946e-01 -3.632376790046700221e-01 +0.000000000000000000e+00 -2.656269371509599742e-01 -1.372506260871900086e+00 -2.199131250381499925e+00 -2.167092561721799981e+00 -1.805618882179300000e+00 -3.190455436706499892e+00 +0.000000000000000000e+00 -6.837223172187799625e-01 -1.586442470550500028e+00 -1.986598610878000049e+00 -1.079799890518200023e+00 -9.164577126502999604e-01 -1.301167845726000083e+00 +0.000000000000000000e+00 -9.897508025169400314e-01 -2.042074918746899836e+00 -2.636420726776099954e+00 -2.424557924270600129e+00 -2.330650806427000177e+00 -3.472782611846899847e+00 +0.000000000000000000e+00 5.006423592567400549e-01 2.569620013237000067e-01 -8.922287821769699923e-01 3.732660710811600002e-01 9.159764647483800148e-01 8.195178508758500513e-01 +0.000000000000000000e+00 -5.683912038803099476e-01 -1.158689498901400050e+00 -1.756097316741900061e+00 -1.687297821044899893e+00 -1.457787156104999982e+00 -2.414424896240200180e+00 +0.000000000000000000e+00 -7.200368046760600160e-01 -9.819266200065599470e-01 -2.015173912048299876e+00 -1.226715445518500092e+00 -1.093435764312699954e+00 -1.599570274353000032e+00 +0.000000000000000000e+00 9.505793452262899512e-01 2.451702058315300137e-01 -7.270494103431700550e-01 1.043474555015599936e+00 1.738256692886400057e+00 1.891633749008200027e+00 +0.000000000000000000e+00 -7.036277055740399744e-01 -1.914533853530899998e+00 -2.447736263275099855e+00 -2.495041370391799962e+00 -2.285055637359600045e+00 -3.675691843032800055e+00 +0.000000000000000000e+00 4.576334953308099918e-01 -6.257297992706299938e-01 -1.227727651596099978e+00 -7.987449169158900020e-01 -2.046874463558200075e-01 -1.096624732017499992e+00 +0.000000000000000000e+00 -6.218486651777999780e-02 -3.911282122135200101e-01 -2.075984716415399944e+00 -2.001812219619799826e+00 -1.596816062927199908e+00 -3.017581939697299820e+00 +0.000000000000000000e+00 -1.427811384201000067e+00 -2.976035118102999810e+00 -3.192113876342800083e+00 -3.244594573974600049e+00 -3.279507637023900024e+00 -4.749280452728299906e+00 +0.000000000000000000e+00 -4.015715047717000052e-02 -1.320121645927399889e+00 -2.261054515838599954e+00 -2.227345466613800173e+00 -1.781554698944100013e+00 -3.343549489975000011e+00 +0.000000000000000000e+00 -4.110647737979900018e-01 -9.089532494544999564e-01 -1.718696117401099954e+00 -1.461425781250000000e+00 -1.187136173248299897e+00 -2.064201354980499836e+00 +0.000000000000000000e+00 -3.542408049106600121e-01 -1.240896701812699954e+00 -1.735957741737399918e+00 -8.824440240859999784e-01 -6.027464270591700313e-01 -1.069649338722199916e+00 +0.000000000000000000e+00 2.866150811314999852e-02 -9.379594922065700446e-01 -1.759505152702300013e+00 -7.159828543663000477e-01 -3.071732521057100040e-01 -8.712241053581200045e-01 +0.000000000000000000e+00 8.532707393169000620e-02 -1.121348977088900023e+00 -3.142141819000200176e+00 -3.981302022933999929e+00 -3.449722290039099803e+00 -6.299585342407199917e+00 +0.000000000000000000e+00 -7.876995801925700258e-01 -1.316896080970799909e+00 -1.832183122634899908e+00 -1.680931568145799915e+00 -1.537965416908299909e+00 -2.390424728393599985e+00 +0.000000000000000000e+00 -1.879376471042600028e-01 -1.007261991500900011e+00 -1.288340449333200022e+00 3.431102633476300068e-01 6.395642757415800350e-01 9.170457124710099661e-01 +0.000000000000000000e+00 1.594733476638799941e+00 1.166296124458300110e+00 1.307798475027099894e-01 2.767210960388200025e+00 3.637374162673999933e+00 4.600456237792999836e+00 +0.000000000000000000e+00 -6.179925203323399785e-01 -1.549498796463000039e+00 -1.351760625839200092e+00 -7.804774492978999723e-02 8.413095772265999361e-02 2.832896709442099814e-01 +0.000000000000000000e+00 1.290689229965199969e+00 -3.450408205390000094e-02 -4.596508443355600271e-01 1.416438341140699997e+00 2.243986368179299973e+00 2.448504209518400199e+00 +0.000000000000000000e+00 1.137748003006000097e+00 2.874712646007500094e-01 -5.901864171028099459e-01 9.448176026344300427e-01 1.718911290168799955e+00 1.661075592041000082e+00 +0.000000000000000000e+00 -3.639539778232599998e-01 -1.085270285606400043e+00 -1.723088741302500004e+00 -6.139634251594500158e-01 -3.572294712066699796e-01 -6.475095152854899450e-01 +0.000000000000000000e+00 1.230020374059700022e-01 -1.071062088012699975e+00 -2.038197755813599965e+00 -2.024943351745600140e+00 -1.526113986968999914e+00 -3.076787233352700213e+00 +0.000000000000000000e+00 2.904444932937599866e-01 -5.744858384132399687e-01 -1.693585634231600023e+00 -1.529486536979699940e+00 -9.898493885993999708e-01 -2.307820796966599808e+00 +0.000000000000000000e+00 -3.934973850845999849e-02 -6.299609541892999820e-01 -1.386646866798399991e+00 -1.420491218566900082e+00 -1.000843286514299990e+00 -2.107445240020799915e+00 +0.000000000000000000e+00 5.234043598174999978e-01 -6.948307752609299559e-01 -1.788798689842199918e+00 -1.875863909721400047e+00 -1.229279041290300079e+00 -2.910203933715799884e+00 +0.000000000000000000e+00 -4.727448821067800067e-01 -1.620556116104099997e+00 -3.021926164627100064e+00 -3.171479940414399845e+00 -2.874725580215499843e+00 -4.843842983245799871e+00 +0.000000000000000000e+00 1.175581097602800051e+00 6.854261159896900546e-01 -4.867334663867999844e-01 1.471119642257699978e+00 2.227472066879299994e+00 2.523354053497299798e+00 +0.000000000000000000e+00 -1.350744813680599954e-01 -1.781585514545399873e-01 -1.272490978241000104e+00 4.058333933353400202e-01 6.946557164192199707e-01 9.767908453941299696e-01 +0.000000000000000000e+00 -1.093601807951899985e-01 -1.582560658454899905e+00 -2.990525722503699857e+00 -3.429213047027599881e+00 -2.978543758392299790e+00 -5.329454898834200094e+00 +0.000000000000000000e+00 -8.209196329116800195e-01 -2.459818601608299904e+00 -4.000860691070600161e+00 -6.031716346740699564e+00 -5.754867076873799725e+00 -9.566514968872100511e+00 +0.000000000000000000e+00 -1.128481745719899898e+00 -1.823380947113000028e+00 -2.772996902465799884e+00 -4.067163467407199917e+00 -3.971889495849600049e+00 -6.327364444732699766e+00 +0.000000000000000000e+00 1.369264423847199874e-01 -6.212838292121900530e-01 -5.479091405868500297e-01 1.578299403190599914e+00 1.959882020950300063e+00 2.868790864944500196e+00 +0.000000000000000000e+00 -4.974853098392499895e-01 -1.259615182876600015e+00 -1.868396997451799990e+00 -6.840076446533199794e-01 -4.790246784687000048e-01 -7.567863464355499836e-01 +0.000000000000000000e+00 -1.239013671875000000e-02 -1.358189344406099952e+00 -3.387045145034799809e+00 -4.145698547363299902e+00 -3.649532556533800154e+00 -6.561895370483400214e+00 +0.000000000000000000e+00 -4.426203370094299872e-01 -1.603360295295700011e+00 -2.827619552612299803e+00 -3.191452741622899936e+00 -2.877314090728800178e+00 -4.925848960876500371e+00 +0.000000000000000000e+00 9.533824920654300206e-01 3.980941772460899752e-01 -3.452945053577399781e-01 1.228513002395599907e+00 1.921296119689900106e+00 2.111809253692599864e+00 +0.000000000000000000e+00 -8.637761324643999927e-02 -5.647318959236099500e-01 -1.354565262794499958e+00 9.635688066482499536e-01 1.252263426780700017e+00 1.917524695396400025e+00 +0.000000000000000000e+00 -1.062823295593299910e+00 -2.180414438247700204e+00 -2.391188859939600064e+00 -2.532882452011099961e+00 -2.455926418304399839e+00 -3.743509054183999929e+00 +0.000000000000000000e+00 -1.785843372345000124e-01 -1.372326016426099971e+00 -1.377084612846400047e+00 -1.440311819314999964e-01 1.838864088058499990e-01 8.604772388935000293e-02 +0.000000000000000000e+00 2.594025135040299856e-01 -8.509590029716499471e-01 -1.837011694908099901e+00 -1.802361965179400061e+00 -1.264307022094699917e+00 -2.796174764633200027e+00 +0.000000000000000000e+00 -7.521160840988200258e-01 -1.756847739219699944e+00 -2.220753192901599782e+00 -2.182216167450000022e+00 -2.008907318115200180e+00 -3.245940208435099894e+00 +0.000000000000000000e+00 -4.996603727340699908e-01 -1.203061103820799893e+00 -2.344141483306899865e+00 -3.765631198883100161e+00 -3.443329334258999896e+00 -5.982654094695999625e+00 +0.000000000000000000e+00 -3.493578732013700172e-01 -9.571870565414399845e-01 -1.569330692291299956e+00 -4.116090834140799792e-01 -1.613255292177200040e-01 -3.783931732177699958e-01 +0.000000000000000000e+00 -1.171520948409999985e+00 -2.110259771347000157e+00 -2.430417776107800076e+00 -2.292814254760699999e+00 -2.275593519210799887e+00 -3.349385738372800070e+00 +0.000000000000000000e+00 1.373535037040700013e+00 7.789852023124700375e-01 -4.507727921008999883e-02 2.499516963958699822e+00 3.295724868774399852e+00 4.151479721069300410e+00 +0.000000000000000000e+00 -1.888031512498900000e-01 -9.189055562019300405e-01 -1.668370604515100109e+00 -1.573647618293799955e+00 -1.212453961372399913e+00 -2.365734815597499985e+00 +0.000000000000000000e+00 -2.292576991021999869e-02 -3.049691319465600015e-01 -9.279665350914000355e-01 9.688512235879999379e-02 4.564129710197399881e-01 3.608589768409700138e-01 +0.000000000000000000e+00 -4.142452031369999940e-03 -7.605602741241499487e-01 -1.080372929573099938e+00 5.632503032684299527e-01 9.170017838478099481e-01 1.186050415039100026e+00 +0.000000000000000000e+00 1.005517125129699929e+00 5.759440660476700113e-01 -5.292053222656299960e-01 1.532980799675000005e+00 2.216819047927899966e+00 2.603768825531000086e+00 +0.000000000000000000e+00 -3.434398025273999872e-02 -8.206291198730499836e-01 -2.067475795745799871e+00 -2.558029413223299908e+00 -2.110246658325200197e+00 -4.027267456054699934e+00 +0.000000000000000000e+00 -1.201152563095100101e+00 -2.343635082244900136e+00 -4.206969261169399843e+00 -5.449113368987999806e+00 -5.361915588378900033e+00 -8.545774459838899162e+00 +0.000000000000000000e+00 -6.989184617996200277e-01 -2.189376354217499987e+00 -3.727496862411499912e+00 -5.777374267578100131e+00 -5.464624404907199917e+00 -9.211980819702100476e+00 +0.000000000000000000e+00 -6.480489969253500071e-01 -1.409815311431900087e+00 -2.029716968536400046e+00 -1.811150312423700059e+00 -1.617498874664299979e+00 -2.660526275634799820e+00 +0.000000000000000000e+00 1.067302346229600074e+00 4.907958805561100091e-01 -4.824868738651300060e-01 1.342436671256999947e+00 2.063692569732700210e+00 2.272574901580799889e+00 +0.000000000000000000e+00 1.502239052205999945e-02 -7.934774160385099639e-01 -2.686983346939099793e+00 -3.463029623031599780e+00 -2.982367038726799979e+00 -5.545855522155799910e+00 +0.000000000000000000e+00 -7.777433991432199933e-01 -1.777100443839999988e+00 -2.232031583786000084e+00 -2.153057813644399854e+00 -1.993392229080199973e+00 -3.218273878097499985e+00 +0.000000000000000000e+00 -6.876428723335300530e-01 -1.306381225585899974e+00 -1.496640682220500063e+00 -1.740278840064999999e+00 -1.549927115440399961e+00 -2.613267421722400119e+00 +0.000000000000000000e+00 3.442027270793899807e-01 -4.839233458042099811e-01 -2.179224491119399865e+00 -1.201902270317100063e+00 -6.858211755752600114e-01 -1.800246715545700038e+00 +0.000000000000000000e+00 -8.051345944404599830e-01 -1.824225902557399914e+00 -3.773715734481799977e+00 -5.102277755737300247e+00 -4.877786159515400399e+00 -8.092099189758300781e+00 +0.000000000000000000e+00 1.596963703632399978e-01 -8.271969556808500545e-01 -2.129970073700000022e+00 -1.567211031913799957e+00 -1.093762278556799972e+00 -2.387321710586499890e+00 +0.000000000000000000e+00 -3.584936261177100181e-01 -1.166079998016400054e+00 -1.203455090522800086e+00 3.313038051128400219e-01 5.625558495521499891e-01 8.367585539817800067e-01 +0.000000000000000000e+00 4.691771566867800058e-01 -5.812960267066999975e-01 -1.614531636238099921e+00 -1.608585834503200029e+00 -9.995374083518999697e-01 -2.550536870956400026e+00 +0.000000000000000000e+00 3.666308820247700107e-01 -5.251559019088699598e-01 -1.485059261321999946e+00 -1.475968480110199987e+00 -9.097116589546200283e-01 -2.326847076416000082e+00 +0.000000000000000000e+00 2.610835433006299944e-01 -5.542272925376899861e-01 -1.841514468193099940e+00 -1.330432176590000015e+00 -8.253383040428200479e-01 -2.034760713577299818e+00 +0.000000000000000000e+00 9.257230758666999959e-01 -2.663382589816999935e-01 -1.418428778648400002e+00 -4.705915153026600239e-01 2.626240551471700213e-01 -7.022572159767199729e-01 +0.000000000000000000e+00 4.531246721744500161e-01 -2.598764300346400047e-01 -1.577483654022199921e+00 -1.131357908248900035e+00 -5.590948462486300397e-01 -1.755918860435500051e+00 +0.000000000000000000e+00 -6.483029723167399450e-01 -1.572887897491499931e+00 -2.236496448516799962e+00 -1.959208488464400100e+00 -1.764427065849299980e+00 -2.913398742675799902e+00 +0.000000000000000000e+00 -7.291016578674299753e-01 -1.727075338363599943e+00 -2.139950752258299893e+00 -1.034384846687300019e+00 -9.049177169799800247e-01 -1.332989811897300036e+00 +0.000000000000000000e+00 -8.972662687301600215e-01 -1.851567625999499977e+00 -2.258502244949299964e+00 -2.155177354812599866e+00 -2.040846109390300089e+00 -3.201907157897899925e+00 +0.000000000000000000e+00 3.775950670242300133e-01 -1.060467585921300027e-01 -3.180353716016000309e-02 2.060524702072100034e+00 2.513409852981599801e+00 3.537147521972700215e+00 +0.000000000000000000e+00 -6.906075775622999569e-02 -7.504744529724100000e-01 -2.528356552123999901e+00 -2.261957883834799787e+00 -1.864292144775399951e+00 -3.510229110717800083e+00 +0.000000000000000000e+00 7.762248516082800309e-01 -1.574348360300099892e-01 -7.594662308692899932e-01 7.424609661102300473e-01 1.384344339370700006e+00 1.315062761306799999e+00 +0.000000000000000000e+00 5.195956826209999768e-01 -3.624204695224800266e-01 -1.365686535835300086e+00 -1.397730588913000060e+00 -7.756438851356499686e-01 -2.230013847351099976e+00 +0.000000000000000000e+00 -8.342921733856200062e-01 -1.767234206199600033e+00 -2.566972732543900015e+00 -1.997233867645300087e+00 -1.880419135093700067e+00 -2.918208360672000179e+00 +0.000000000000000000e+00 2.328873574733699992e-01 -3.433359563350700250e-01 -1.065893650054900110e+00 1.010077714919999980e+00 1.420983314514199902e+00 1.869583487510700026e+00 +0.000000000000000000e+00 -1.711761951446999844e-02 -7.990430593490599476e-01 -1.311755180358900041e+00 6.165440082549999978e-01 9.523296356201199631e-01 1.273151040077199925e+00 +0.000000000000000000e+00 -3.234213888645199875e-01 -7.359201908111600021e-01 -1.247398972511299942e+00 9.487116336822499774e-01 1.150104641914400094e+00 1.865445733070399958e+00 +0.000000000000000000e+00 -4.294274002313999694e-02 -1.484923839569100013e+00 -2.525569915771499918e+00 -3.333692073822000168e+00 -2.855966806411700087e+00 -5.327271938324000367e+00 +0.000000000000000000e+00 -6.616750955581699456e-01 -1.628257513046299954e+00 -2.545370101928699835e+00 -3.020282745361300147e+00 -2.795069456100499838e+00 -4.712809085845900192e+00 +0.000000000000000000e+00 -1.154000878333999891e+00 -2.297708272933999929e+00 -2.678376197814900106e+00 -2.445848941802999832e+00 -2.423667907714799785e+00 -3.634966850280799910e+00 +0.000000000000000000e+00 -7.839170694351199620e-01 -1.892657279968299910e+00 -2.811105012893699850e+00 -3.233280181884799820e+00 -3.048322439193699829e+00 -5.024851322174099799e+00 +0.000000000000000000e+00 3.773512840270999980e-01 -4.038502275943799957e-01 -2.153021097183200006e+00 -2.196074247360200182e+00 -1.625403046608000057e+00 -3.526860237121599795e+00 +0.000000000000000000e+00 1.050820112228399994e+00 7.799311280250500467e-01 2.727277278900099855e-01 1.639991402626000072e+00 2.357090950012199926e+00 2.647511720657299783e+00 +0.000000000000000000e+00 -5.953041911125199759e-01 -1.289923667907699967e+00 -1.226023554801900062e+00 3.880599737167400032e-01 5.246596336364699464e-01 9.422205686569200545e-01 +0.000000000000000000e+00 -6.883533596992500447e-01 -1.464541673660300081e+00 -3.138132333755499825e+00 -3.701867341995200178e+00 -3.484495878219600051e+00 -5.824571609497099622e+00 +0.000000000000000000e+00 -1.437981367111200059e+00 -2.321645498275799913e+00 -3.229300022125200176e+00 -4.311504364013700297e+00 -4.335893630981400015e+00 -6.723534584045400386e+00 +0.000000000000000000e+00 -2.781900167465199969e-01 -9.147489070892299567e-01 -1.612625122070300066e+00 -1.439376235008200000e+00 -1.122153401374800019e+00 -2.185677289962800085e+00 +0.000000000000000000e+00 1.713643521070500053e-01 -5.348168313503000315e-02 -1.155799865722699993e+00 -6.741604208946200272e-01 -2.252279073000000020e-01 -1.018584847450300090e+00 +0.000000000000000000e+00 6.549513339996300143e-01 1.797765642404600128e-01 -7.553636431693999675e-01 -8.481013774871799527e-01 -1.935998052358600119e-01 -1.417187452316299945e+00 +0.000000000000000000e+00 9.353771805763200220e-01 6.608965992927600119e-01 -2.484703809022900112e-01 5.957729816436799775e-01 1.298684358596799981e+00 9.370877742767299567e-01 +0.000000000000000000e+00 -2.619826197624199882e-01 -4.381995797157299810e-01 -9.613283276557900159e-01 1.790684163570399889e-01 4.392890930175800124e-01 4.843206703662900070e-01 +0.000000000000000000e+00 -6.891599893569899660e-01 -1.577637791633599962e+00 -2.901468992233299904e+00 -3.934304237365700008e+00 -3.693645238876300141e+00 -6.234672069549599627e+00 +0.000000000000000000e+00 1.043588280677800073e+00 3.775896131992300120e-01 -8.026732206344600051e-01 1.353755116462699970e+00 2.051118373870799871e+00 2.273961305618299900e+00 +0.000000000000000000e+00 6.466606855392500464e-01 -1.685882806777999898e-01 -1.382130861282300005e+00 -1.179479002952600109e+00 -5.269505381584199677e-01 -1.908716082572899930e+00 +0.000000000000000000e+00 -3.621126413345300277e-01 -3.325355947017700209e-01 -1.585938453674299975e+00 -5.175821781158399526e-01 -2.926641404628799736e-01 -6.388476490974399624e-01 +0.000000000000000000e+00 -2.943072021007500094e-01 -1.483662009239200108e+00 -1.945175886154199896e+00 -2.171922683715799884e+00 -1.822732925414999983e+00 -3.373160362243699861e+00 +0.000000000000000000e+00 5.264093354344000220e-02 -1.203157544136000068e+00 -2.412460327148400197e+00 -3.029956102371199833e+00 -2.533158779144299988e+00 -4.845460414886500367e+00 +0.000000000000000000e+00 1.016593098640399928e+00 7.615786790847800525e-01 7.048186063766499476e-01 2.632121801376300141e+00 3.308073043823199999e+00 4.301339626312300268e+00 +0.000000000000000000e+00 -7.039713263511699903e-01 -1.824257731437699981e+00 -2.523724794387800063e+00 -2.168474674224900145e+00 -1.991836190223700065e+00 -3.252602338790900216e+00 +0.000000000000000000e+00 -7.246798276901199598e-01 -1.191953778266900077e+00 -1.520473957061799997e+00 -1.499359250068700078e+00 -1.341550230979899894e+00 -2.229610919952400128e+00 +0.000000000000000000e+00 1.297811418771999993e-02 -1.209884285926799974e+00 -2.152337551116899839e+00 -1.967949867248500073e+00 -1.524819135665899994e+00 -3.057890653610200182e+00 +0.000000000000000000e+00 -1.419447660446200021e-01 -7.962633967399600499e-01 -2.545148134231599801e+00 -2.229262351989699908e+00 -1.863291025161700087e+00 -3.469269037246700105e+00 +0.000000000000000000e+00 -9.936676174401999628e-02 -4.632862806320199867e-01 -6.496736407280000458e-01 1.029787540435799897e+00 1.327721118926999955e+00 1.885225296020500041e+00 +0.000000000000000000e+00 -3.112290799617800086e-01 -5.411674976348900268e-01 -1.443479895591700091e+00 2.035503685474399915e-01 4.275001883506799882e-01 5.783610343933099918e-01 +0.000000000000000000e+00 -5.267454981803899594e-01 -8.918763995170599923e-01 -1.006428241729699913e+00 -2.553128600120500025e-01 -6.620487570763000651e-02 -1.972613334655800021e-01 +0.000000000000000000e+00 7.685706019400000318e-03 -5.072689056396499918e-01 -1.391994118690500049e+00 -2.852815575897999986e-02 3.317031562328299765e-01 1.400759369134899901e-01 +0.000000000000000000e+00 1.174028515815700002e+00 7.050611376762400129e-01 -4.616316556930499804e-01 1.631818532943700051e+00 2.370665073394799816e+00 2.686122655868500075e+00 +0.000000000000000000e+00 8.667224049568199584e-01 9.309688955544999367e-02 -6.832355856895400148e-01 1.049085736274699920e+00 1.704960823059100017e+00 1.780193686485300075e+00 +0.000000000000000000e+00 -1.338291645049999978e+00 -2.137690544128400205e+00 -3.488641023635899785e+00 -5.162677288055400382e+00 -5.125140190124500172e+00 -8.168318748474099777e+00 +0.000000000000000000e+00 -3.013070225715600015e-01 -1.297953486442599891e+00 -2.767345428466799984e+00 -3.884824514388999894e+00 -3.498289585113500078e+00 -6.221345424652099609e+00 +0.000000000000000000e+00 4.998045563697799953e-01 8.136464655399000545e-02 -8.691272735595699794e-01 1.391794919967699995e+00 1.881521582603500109e+00 2.422781944274900123e+00 +0.000000000000000000e+00 3.958693146705600241e-01 1.525988429784800038e-01 -1.022138953208900025e+00 -5.960283279418899793e-01 -6.409128010273000553e-02 -9.336910843849199892e-01 +0.000000000000000000e+00 -1.624253541231200082e-01 -1.069926023483299904e+00 -1.629242062568700078e+00 -6.149268746375999850e-01 -2.885173857212099957e-01 -8.161728382110600144e-01 +0.000000000000000000e+00 3.575567603111299841e-01 1.866656839847599947e-01 -8.553090691565999604e-02 1.481412172317499998e+00 1.936735391616799973e+00 2.492291450500499828e+00 +0.000000000000000000e+00 -5.035910010337799614e-01 -1.249228715896600006e+00 -2.154843807220499841e+00 -2.668861627578699824e+00 -2.396856307983400214e+00 -4.212821483612099627e+00 +0.000000000000000000e+00 7.466634511947599639e-01 2.085156887769699929e-01 -1.340624332428000054e+00 -6.843976378440900232e-01 -2.815781533717999843e-02 -1.127380132675199986e+00 +0.000000000000000000e+00 -8.050101995468099680e-01 -1.917638897895800110e+00 -2.584852218627899934e+00 -2.169935941696199855e+00 -2.034695148467999815e+00 -3.260273933410600122e+00 +0.000000000000000000e+00 2.610279917716999964e-01 -1.387148499488800035e-01 -9.354077577590900194e-01 -9.025045037269600057e-01 -3.991065025329599836e-01 -1.459215760231000081e+00 +0.000000000000000000e+00 1.143447518348700065e+00 9.312801957130399932e-01 3.219858184457000116e-02 1.887239694595300055e+00 2.612432241439799796e+00 3.043574571609500179e+00 +0.000000000000000000e+00 -3.965220749378199905e-01 -1.532645821571400058e+00 -2.139142751693699829e+00 -2.069700241088900050e+00 -1.773788452148399974e+00 -3.195069789886499922e+00 +0.000000000000000000e+00 1.499171555042299875e-01 -6.245709657669099579e-01 -2.303747653961199848e+00 -2.254198789596599806e+00 -1.771288990974400068e+00 -3.602093458175700036e+00 +0.000000000000000000e+00 2.041049301624300039e-01 -8.216147422790499588e-01 -2.204781532287599877e+00 -2.618058919906599780e+00 -2.087165355682400136e+00 -4.226195335388199581e+00 +0.000000000000000000e+00 2.248091697692899960e-01 -8.313426375389100231e-01 -2.228884696960399925e+00 -2.643034934997599894e+00 -2.103553771972700215e+00 -4.268551826477099631e+00 +0.000000000000000000e+00 1.022342681884800042e+00 3.997249901294699925e-01 -1.933055669069299876e-01 1.267934560775799913e+00 1.981936573982199912e+00 2.049966573715200191e+00 +0.000000000000000000e+00 -5.416508913040199991e-01 -1.243623852729800028e+00 -1.879997372627300045e+00 -1.594133973121599990e+00 -1.375555157661400019e+00 -2.405677080154399849e+00 +0.000000000000000000e+00 4.014159142970999961e-01 3.217520657930000166e-03 -3.993584811687500014e-01 1.503952741622900102e-01 6.772040724754300189e-01 2.606407403945900092e-01 +0.000000000000000000e+00 -1.107072234153700041e+00 -2.156640052795399942e+00 -3.834073543548599972e+00 -5.253577709197999823e+00 -5.137080192565900205e+00 -8.346274375915500698e+00 +0.000000000000000000e+00 -2.488527297973600061e-01 -1.188191652298000056e+00 -1.976161599159200088e+00 -1.731175065040599925e+00 -1.397417187690700002e+00 -2.667578220367400110e+00 +0.000000000000000000e+00 -2.463792413473100129e-01 -1.079373836517300012e+00 -1.347391486167899943e+00 4.741531312465699921e-01 7.292892336845400170e-01 1.020907044410700015e+00 +0.000000000000000000e+00 9.341730922461000119e-02 -7.917661666870100534e-01 -1.422008275985700010e+00 -4.773769378662099938e-01 -5.778272449969999724e-02 -6.437768340110799903e-01 +0.000000000000000000e+00 -6.695933341980000453e-01 -1.098284125328099936e+00 -1.433196425437899935e+00 -1.397498250007600085e+00 -1.224783658981299928e+00 -2.101851463317899960e+00 +0.000000000000000000e+00 4.656543955207000096e-02 -6.313422918319699928e-01 -1.135671257972699966e+00 8.298876881599399624e-01 1.177548050880399932e+00 1.551325798034699943e+00 +0.000000000000000000e+00 6.585223078727699964e-01 3.445451259612999917e-01 -3.025524616241500042e-01 4.109926521778100028e-01 1.019471406936599989e+00 6.485949754715000237e-01 +0.000000000000000000e+00 3.736447542905999702e-02 -5.469478368759199682e-01 -1.079746007919299977e+00 -1.650563478469800061e-01 2.241965979337700032e-01 -1.474986970424700117e-01 +0.000000000000000000e+00 -7.430033683776899878e-01 -1.814966917038000060e+00 -3.171932935714699919e+00 -4.129086017608599946e+00 -3.906296491622899936e+00 -6.551587581634500168e+00 +0.000000000000000000e+00 -2.499216496944400012e-01 -1.160072207450900006e+00 -1.257894873619100018e+00 3.330208659172099739e-01 5.993304252624499506e-01 7.775211930275000016e-01 +0.000000000000000000e+00 2.215448021888699881e-01 -8.735587596893300555e-01 -1.408748507499699931e+00 -7.092808485031100174e-01 -2.258729338645900087e-01 -1.050388693809499951e+00 +0.000000000000000000e+00 6.840816736221300154e-01 1.163216587155999938e-02 -1.364873886108399992e+00 -9.155076742172200133e-01 -2.679102122783699746e-01 -1.501365900039699941e+00 +0.000000000000000000e+00 3.875863924622999918e-02 -8.717625141143799938e-01 -2.990036725997899936e+00 -3.410455942153900022e+00 -2.939924478530900220e+00 -5.509965419769300432e+00 +0.000000000000000000e+00 -1.120705604553200008e+00 -2.008662700653100153e+00 -3.202973365783699844e+00 -4.054747581481899843e+00 -3.980632066726700113e+00 -6.395518302917500009e+00 +0.000000000000000000e+00 -3.219905495643600180e-01 -1.106532454490700035e+00 -1.585116267204299989e+00 -5.129967331886300386e-01 -2.532104551792099811e-01 -6.529771089553799701e-01 +0.000000000000000000e+00 3.108876943588300135e-01 5.028938651084899902e-01 -2.276274859905199899e-01 2.061218261718800182e+00 2.453661441802999832e+00 3.453770875930799900e+00 +0.000000000000000000e+00 -2.799483537674000155e-01 -1.064398050308200006e+00 -2.673504590988200036e+00 -3.515780687332199950e+00 -3.146387338638299891e+00 -5.669517517089800229e+00 +0.000000000000000000e+00 -7.349252104759199655e-01 -1.370553612708999891e+00 -1.931227564811700104e+00 -1.570442438125599915e+00 -1.429022431373599966e+00 -2.358943700790399944e+00 +0.000000000000000000e+00 -9.228745847939999469e-02 -4.068652391433700277e-01 -6.388074755668600169e-01 6.126674637197999929e-02 4.000811278820000094e-01 1.808818578720099990e-01 +0.000000000000000000e+00 -5.465534925460799887e-01 -1.535517692565899983e+00 -1.811560750007600085e+00 -8.939042091369600040e-01 -6.999406814575199753e-01 -1.233906745910599900e+00 +0.000000000000000000e+00 -1.477591991424600071e+00 -2.441581726074200098e+00 -3.359184026718100124e+00 -4.350070476532000185e+00 -4.394515991210900197e+00 -6.821203231811500345e+00 +0.000000000000000000e+00 1.379145860671999957e+00 9.693000316619899692e-01 3.821506500244100102e-01 2.793349981307999830e+00 3.579342842102100075e+00 4.496808528900100299e+00 +0.000000000000000000e+00 5.124232769012500022e-01 3.719266951084099770e-01 6.115149334073000098e-02 1.617998600006099963e+00 2.125118255615200180e+00 2.657781600952100032e+00 +0.000000000000000000e+00 9.441446661949199903e-01 8.735391497611999512e-01 2.619159817695599912e-01 1.939365386962899951e+00 2.592714071273800158e+00 3.111764430999799824e+00 +0.000000000000000000e+00 5.124232769012500022e-01 3.719266951084099770e-01 6.115149334073000098e-02 1.617998600006099963e+00 2.125118255615200180e+00 2.657781600952100032e+00 +0.000000000000000000e+00 2.380283474922199882e-01 1.200504750013400013e-01 -1.022117882966999958e-01 1.522503852844200090e+00 1.928173422813399984e+00 2.554022312164299979e+00 +0.000000000000000000e+00 -4.008402228355399943e-01 -1.709883332252499999e+00 -3.233376502990700008e+00 -4.209675788879399860e+00 -3.857658863067599864e+00 -6.755602836608900041e+00 +0.000000000000000000e+00 3.130473792552900258e-01 -3.757341802120199858e-01 -2.081156969070399931e+00 -2.052026510238599943e+00 -1.516082525253299895e+00 -3.335685014724699915e+00 +0.000000000000000000e+00 -4.004106223583199786e-01 -1.368551373481800004e+00 -2.800855636596700116e+00 -3.827671051025399951e+00 -3.486562490463299913e+00 -6.159951210022000190e+00 +0.000000000000000000e+00 -6.587159037590000210e-01 -6.239109635353099481e-01 -1.597296595573399980e+00 -6.265454888343799933e-01 -5.088227987289399845e-01 -8.278790116310099645e-01 +0.000000000000000000e+00 2.389450967311899932e-01 -5.058798193932000087e-02 -8.884750008583099934e-01 1.490236759185799897e+00 1.871904253959699949e+00 2.575186967849699915e+00 +0.000000000000000000e+00 1.152325510978700063e+00 6.160050034523000262e-01 -1.829476803541200125e-01 1.509343624115000004e+00 2.254224538803100142e+00 2.406897544860799876e+00 +0.000000000000000000e+00 -5.830320715904200313e-01 -1.443930149078400005e+00 -3.418313264846799981e+00 -4.724149703979500181e+00 -4.435454368591299712e+00 -7.605045318603499638e+00 +0.000000000000000000e+00 -8.047846555709800009e-01 -1.192342519760100084e+00 -1.911670565605199990e+00 -2.365899562835700021e+00 -2.220135927200300063e+00 -3.712813854217499987e+00 +0.000000000000000000e+00 5.136988759040800323e-01 4.522874057292899930e-01 -8.992899060249299747e-01 -2.185222804546400055e-01 3.326684534549699812e-01 -3.845445513725300191e-01 +0.000000000000000000e+00 1.295807063579600127e-01 -3.228063285350800116e-01 -7.918471693992600313e-01 1.153408527374299997e+00 1.520157694816600014e+00 2.020158767700200197e+00 +0.000000000000000000e+00 -5.279893875122100289e-01 -1.544608473777800084e+00 -2.705444812774699948e+00 -2.895527601242100069e+00 -2.637712955474900145e+00 -4.560428142547600316e+00 +0.000000000000000000e+00 -1.617690920829999851e-02 -2.578110396862000053e-01 -1.554695248603799929e+00 -1.749210119247400108e+00 -1.338656425476099976e+00 -2.833146333694500196e+00 +0.000000000000000000e+00 6.768617033958399531e-01 2.849060297012300236e-01 -1.426568478345900115e-01 1.408702969551099971e+00 1.984343767166099948e+00 2.304328203201300163e+00 +0.000000000000000000e+00 1.854268610477400048e-01 -7.124481201171900535e-01 -1.620020627975500060e+00 -1.459266901016200046e+00 -9.715110063552899744e-01 -2.337046384811400035e+00 +0.000000000000000000e+00 5.281952619552600092e-01 9.311610460281000146e-02 -6.809066534042399477e-01 1.401316404342699995e+00 1.903849363326999944e+00 2.365034103393599985e+00 +0.000000000000000000e+00 2.845695987344000130e-02 -9.285067915916399572e-01 -2.430424451827999821e+00 -2.530754089355499836e+00 -2.080596923828100131e+00 -4.059281826019300432e+00 +0.000000000000000000e+00 7.045911550521900546e-01 2.842046320438399998e-01 -1.410710811615000004e+00 -4.834414422512099963e-01 1.395014822483099937e-01 -8.052163124084500412e-01 +0.000000000000000000e+00 2.924646735191300251e-01 -7.340330481529200313e-01 -1.708234667778000038e+00 -1.556236505508399981e+00 -1.025016307830800111e+00 -2.505883932113599943e+00 +0.000000000000000000e+00 -4.978055506944999847e-02 -8.009184598922699516e-01 -2.413981676101700113e+00 -2.281487464904799811e+00 -1.876698493957499991e+00 -3.633804798126199831e+00 +0.000000000000000000e+00 2.387823313474700115e-01 -2.710294425487499992e-01 -1.906187653541600024e+00 -1.884249448776200042e+00 -1.381374716758700050e+00 -3.061819791793800150e+00 +0.000000000000000000e+00 1.485239714384100074e-01 -2.305138111114500010e-01 -4.958024919033099942e-01 1.190736532211299936e+00 1.572027206420899992e+00 2.051374673843400220e+00 +0.000000000000000000e+00 9.378693699836699871e-01 4.112783372402200044e-01 -7.565070390701299496e-01 4.364855587482500132e-01 1.130402326583900052e+00 6.681072711944600062e-01 +0.000000000000000000e+00 -9.175199270248399763e-01 -1.668185591697699977e+00 -2.640691041946400031e+00 -2.769024133682299826e+00 -2.662823200225799880e+00 -4.299039363861099972e+00 +0.000000000000000000e+00 -1.263304501771899957e-01 -9.896959066391000093e-01 -2.230215311050399940e+00 -2.547177076339699919e+00 -2.146904945373500073e+00 -4.083295345306400037e+00 +0.000000000000000000e+00 6.759307384491000104e-01 1.792774498462700039e-01 -1.337654471397399902e+00 -6.346281766891499476e-01 -9.760395623740000456e-03 -1.060147643089299985e+00 +0.000000000000000000e+00 8.431976437568700078e-01 3.134360015392300136e-01 -6.371119022369400309e-01 3.725398182869000263e-01 1.037716507911699892e+00 5.380669236183199811e-01 +0.000000000000000000e+00 -2.849570810794799791e-01 -9.827384948730499836e-01 -1.449382424354600074e+00 -3.651184439659099779e-01 -9.861709922552000518e-02 -4.504842460155499828e-01 +0.000000000000000000e+00 5.949017405509899881e-01 -8.950957655907000599e-02 -1.063154697418200012e+00 -1.005628824233999907e+00 -3.785631060600300191e-01 -1.719030857086200070e+00 +0.000000000000000000e+00 1.366991519928000054e+00 1.252648115158099928e+00 -6.735862791537999827e-02 2.270290613174399841e+00 3.046298980712899951e+00 3.607847452163699842e+00 +0.000000000000000000e+00 -6.385199259969999777e-03 -2.399773746728899870e-01 -9.893040657043500330e-01 1.479374766349800030e+00 1.765113711357100046e+00 2.576603174209600056e+00 +0.000000000000000000e+00 3.205068111419699939e-01 -3.413857817649800230e-01 -1.226517915725700014e+00 -1.101123690605199990e+00 -5.755078792572000390e-01 -1.822790026664699914e+00 +0.000000000000000000e+00 -5.240265727043199595e-01 -1.207811474800100093e+00 -2.034746408462499989e+00 -1.444025635719299983e+00 -1.237661480903599953e+00 -2.194656848907500013e+00 +0.000000000000000000e+00 -7.489234209060700032e-01 -1.585920453071600011e+00 -2.386294603347800081e+00 -1.714565753936799997e+00 -1.585778355598399969e+00 -2.579539299011199827e+00 +0.000000000000000000e+00 1.384396106004699978e-01 -5.815140008926400483e-01 -2.053171873092700217e+00 -2.182501077652000188e+00 -1.703729391098000034e+00 -3.556318283081099985e+00 +0.000000000000000000e+00 6.668584942817700201e-01 -6.616648752239999605e-03 -3.169546127319299855e-01 1.070250868797300026e+00 1.657265543937699981e+00 1.732270121574400079e+00 +0.000000000000000000e+00 2.094920277595500036e-01 -1.366163492202799867e-01 -1.662981033325199975e+00 -5.836476683616600436e-01 -1.489082872867600049e-01 -9.020208120346100422e-01 +0.000000000000000000e+00 -3.427108004689000120e-02 -5.217918753624000150e-01 -1.197265028953599986e+00 3.382036089897000330e-02 3.755436241626700089e-01 1.542651355266599911e-01 +0.000000000000000000e+00 5.599215626716600447e-01 2.957718446851000105e-02 -1.539692878723100122e-01 2.279238700866700107e+00 2.774346828460700021e+00 3.784002542495700006e+00 +0.000000000000000000e+00 6.152169108390800334e-01 -1.022310554981200048e-01 -1.090832233428999931e+00 -1.033693075180099896e+00 -3.980979919433599856e-01 -1.766139507293700062e+00 +0.000000000000000000e+00 -2.838019430637400142e-01 -1.111930251121499902e+00 -2.429336547851599803e+00 -1.393693089485199987e+00 -1.114405274391200074e+00 -2.107946157455399927e+00 +0.000000000000000000e+00 -1.526438444852800114e-01 -4.322301447391500018e-01 -1.072728037834199899e+00 -8.810906410217299589e-01 -5.415588617324800236e-01 -1.401782631874100016e+00 +0.000000000000000000e+00 3.182674348354300187e-01 -3.051690161228199916e-01 -1.369124770164499960e+00 -1.005879282951400056e+00 -4.923030138015699886e-01 -1.650013208389299990e+00 +0.000000000000000000e+00 9.904330968857000261e-02 -8.620942831039399845e-01 -1.760815739631699905e+00 -1.533712267875700030e+00 -1.079672694206200045e+00 -2.460946559906000086e+00 +0.000000000000000000e+00 -3.684729039669000228e-01 -1.038991570472699966e+00 -1.965437412261999972e+00 -2.456458091735799876e+00 -2.145419359207199950e+00 -3.947870016097999812e+00 +0.000000000000000000e+00 1.171761974692299979e-01 -6.328027248382599446e-01 -9.882022142410300525e-01 7.958986759185799897e-01 1.173661947250399962e+00 1.418775916099499934e+00 +0.000000000000000000e+00 4.849702417850499936e-01 -3.213236927986100055e-01 -1.674169421196000096e+00 -1.084185957908599951e+00 -5.134533643722499763e-01 -1.775688171386700098e+00 +0.000000000000000000e+00 1.573798775672899941e+00 1.229516267776499916e+00 2.216533571481699993e-01 3.093145608902000188e+00 3.924458742141700096e+00 4.958025455474899701e+00 +0.000000000000000000e+00 -7.267287969589200092e-01 -7.616250514984099773e-01 -1.979511141776999938e+00 -1.742686748504600036e+00 -1.613689422607399893e+00 -2.704171180725099877e+00 +0.000000000000000000e+00 4.829730466007999684e-02 -5.989590287208600428e-01 -2.024047374725300052e+00 -2.140735864639299990e+00 -1.697411417961099955e+00 -3.476350784301800001e+00 +0.000000000000000000e+00 1.683247536420799939e-01 -5.602223277091999964e-01 -1.797060847282399898e+00 -1.136411905288700064e+00 -6.844305396080000436e-01 -1.805017352104199890e+00 +0.000000000000000000e+00 -2.896945178508800178e-01 -8.501717448234600294e-01 -1.278611660003700079e+00 -2.134198695421199998e-01 4.688550904392999735e-02 -2.131361365318300005e-01 +0.000000000000000000e+00 -2.165085673332199923e-01 -3.492474853992499906e-01 -1.064703464508099939e+00 4.041667878627799859e-01 6.575124263763399979e-01 7.856788039207499574e-01 +0.000000000000000000e+00 5.173379778861999512e-01 2.933860719203900125e-01 -8.005830645561200498e-01 1.773734569549600071e+00 2.241428375244100213e+00 2.973327159881599790e+00 +0.000000000000000000e+00 5.940804481506299917e-01 3.715995848178900163e-01 -2.319557517766999977e-01 5.539453625678999460e-01 1.127676010131799966e+00 8.380852341651899851e-01 +0.000000000000000000e+00 3.016532063484200221e-01 -4.554990828037300266e-01 -2.175980329513500067e+00 -2.099202632904099808e+00 -1.569283604621900086e+00 -3.429401636123699859e+00 +0.000000000000000000e+00 4.604544639587400123e-01 9.016558527946000323e-02 -1.574419975280799910e+00 -1.596047282218900021e+00 -1.020397067069999997e+00 -2.670885801315300068e+00 +0.000000000000000000e+00 2.803530991077399781e-01 1.497430503368399890e-01 -1.832404851913500110e+00 -2.396244764327999821e+00 -1.866412758827199925e+00 -3.990125894546499907e+00 +0.000000000000000000e+00 -9.738373160362200354e-01 -1.440018057823200026e+00 -2.945258855819699928e+00 -3.377010107040399944e+00 -3.286677122116099969e+00 -5.337049961090100325e+00 +0.000000000000000000e+00 6.663718223571799548e-01 4.308474436402000285e-02 -4.434610605239899805e-01 1.179406166076699902e+00 1.754643797874499977e+00 1.926452159881600013e+00 +0.000000000000000000e+00 4.215649068355600271e-01 -7.962570339440999678e-02 -1.521481752395599907e+00 -7.172017693519600057e-01 -1.896158903837200094e-01 -1.169075965881299917e+00 +0.000000000000000000e+00 9.569976925849900118e-01 1.033762335777300034e+00 2.677851021289799904e-01 2.197647571563699831e+00 2.836899042129500170e+00 3.514286041259799820e+00 +0.000000000000000000e+00 4.602163285016999672e-02 -5.008983016014100231e-01 -1.708627223968500086e+00 -2.082516670227100075e+00 -1.633315443992600091e+00 -3.409063816070600161e+00 +0.000000000000000000e+00 -7.297099232673599500e-01 -1.367556333541900093e+00 -3.181962490081799988e+00 -3.408720016479500181e+00 -3.233174800872800070e+00 -5.402801990509000341e+00 +0.000000000000000000e+00 3.871283531188999816e-01 -8.248786628246000674e-02 -1.941437363624600065e+00 -1.686396241188000023e+00 -1.144405841827399906e+00 -2.775835037231400015e+00 +0.000000000000000000e+00 -6.526162624359099773e-01 -1.183019876480100097e+00 -1.930215358734099995e+00 -1.328807592391999970e+00 -1.174622297286999961e+00 -1.993814349174499956e+00 +0.000000000000000000e+00 -3.629612922668499775e-01 -1.165602207183799921e+00 -2.129096746444699928e+00 -2.602012395858800176e+00 -2.284661531448399785e+00 -4.175763607025100299e+00 +0.000000000000000000e+00 3.046660423278800267e-01 3.510790318251000297e-02 -1.309561491012600110e+00 -5.091978907585099634e-01 -3.203974664210999801e-02 -8.254615068435700032e-01 +0.000000000000000000e+00 -2.118158787488899908e-01 -4.734804630279499937e-01 -6.554883122444199461e-01 1.023584008216899960e-01 3.915191888809200216e-01 2.426126897335099952e-01 +0.000000000000000000e+00 -6.189423203468300549e-01 -7.549397945404100474e-01 -1.406606912612899940e+00 -8.722522854805000447e-01 -7.185094952583299666e-01 -1.287375211715700019e+00 +0.000000000000000000e+00 6.683153510093700067e-01 1.285844147205399968e-01 -1.397766590118399987e+00 -6.518132090568500292e-01 -3.240444138646000199e-02 -1.107716560363799951e+00 +0.000000000000000000e+00 5.764498114585899780e-01 -2.314673513174100028e-01 -1.232649683952300013e+00 -1.152074933052100070e+00 -5.277729630470300304e-01 -1.944371342658999913e+00 +0.000000000000000000e+00 -1.330858588218700067e+00 -2.372337818145799915e+00 -3.165175199508699855e+00 -4.391051769256599790e+00 -4.373214721679699934e+00 -6.955163478851299708e+00 +0.000000000000000000e+00 -2.437738180160499979e-01 -6.658998131751999727e-01 -1.071082711219800032e+00 -3.826222941278999840e-02 2.344076931476599956e-01 5.245795100926999716e-02 +0.000000000000000000e+00 -1.992145925760299974e-01 -5.938379168510400374e-01 -1.138539314269999991e+00 1.161026835441600014e+00 1.391182661056499903e+00 2.088009834289600075e+00 +0.000000000000000000e+00 -2.334020435810099936e-01 -8.139729499816900082e-01 -2.572424411773699848e+00 -3.179384946823100133e+00 -2.813555717468299910e+00 -5.150725841522199921e+00 +0.000000000000000000e+00 8.202791810035700015e-01 1.371156126260799912e-01 -8.476353287696799521e-01 1.906446665525400042e-01 8.523885607719400292e-01 2.581800520420099998e-01 +0.000000000000000000e+00 6.259005069732700433e-01 1.402976363897300016e-01 -1.358804464340199969e+00 -6.098487377166700307e-01 -7.765757851299999980e-03 -1.035293579101600026e+00 +0.000000000000000000e+00 7.184553742408800181e-01 6.833440661430399965e-01 -7.229050397872900380e-01 -6.457314640283999541e-02 5.568594336509700149e-01 -2.001892775297199889e-01 +0.000000000000000000e+00 5.070168152452000226e-02 -6.371759772300700231e-01 -9.559586048126199609e-01 8.362085223197900374e-01 1.187555909156799983e+00 1.492578387260399930e+00 +0.000000000000000000e+00 1.036208629608200038e+00 1.841638088226300041e-01 -4.748296141624500089e-01 1.085898518562300019e+00 1.804313540458700071e+00 1.719760298728900016e+00 +0.000000000000000000e+00 -8.321895599365199958e-01 -1.279715538024899901e+00 -1.817240595817599891e+00 -2.463866472244299999e+00 -2.320308208465600153e+00 -3.906980276107800076e+00 +0.000000000000000000e+00 9.276136755943299450e-01 6.386863589286799758e-01 -2.164170593023299893e-01 1.775139927864100020e+00 2.415476560592700217e+00 2.860236883163500110e+00 +0.000000000000000000e+00 -2.966329753398900260e-01 -1.431180089712099923e-01 -1.383510589599600049e+00 -2.467243671417199968e-01 -1.398076023905999929e-02 -2.933001220226300054e-01 +0.000000000000000000e+00 -8.907381892204300211e-01 -1.845720887184099990e+00 -2.691378355026199820e+00 -3.004825353622400108e+00 -2.876254320144699950e+00 -4.717071533203100131e+00 +0.000000000000000000e+00 -1.046145677566499899e+00 -1.858235239982600095e+00 -2.618901252746599795e+00 -2.913152217865000004e+00 -2.846263170242299800e+00 -4.548532485961899852e+00 +0.000000000000000000e+00 -1.003937125206000092e+00 -1.502574086189299996e+00 -3.007461309432999830e+00 -3.426603555679299973e+00 -3.346265554428100142e+00 -5.409435272216800428e+00 +0.000000000000000000e+00 -3.809540346265000155e-02 -5.650464892387400129e-01 -1.306238770484899891e+00 -1.107748985290500032e+00 -7.181414961814900355e-01 -1.774101138114899889e+00 +0.000000000000000000e+00 -4.802110791206399831e-01 -1.239684224128700052e+00 -1.284565687179600069e+00 -6.264293789863599748e-01 -4.096567034721400047e-01 -8.736095428466800206e-01 +0.000000000000000000e+00 3.295819163322399881e-01 -2.406327873468399881e-01 -1.919433712959299987e+00 -1.877542853355399943e+00 -1.343440651893599957e+00 -3.088328123092700217e+00 +0.000000000000000000e+00 8.816182613372800514e-01 5.159627199173000278e-01 3.372796624899000034e-02 1.562652111053500104e+00 2.208534717559799798e+00 2.488683462142899927e+00 +0.000000000000000000e+00 1.339401155710200075e-01 -3.711611032486000217e-01 -1.348010897636400029e+00 -9.544342160224900118e-01 -5.123581290245099451e-01 -1.539448738098099900e+00 +0.000000000000000000e+00 -2.366107255220399885e-01 -1.168007612228399994e+00 -2.450076818466199846e+00 -3.733201265335099883e+00 -3.327254056930499804e+00 -6.085488796234099773e+00 +0.000000000000000000e+00 -5.111558437347399897e-01 -7.482544779777500210e-01 -8.337028026580800555e-01 -1.817743177529999952e-03 1.766703575849500052e-01 1.294209063053100017e-01 +0.000000000000000000e+00 3.099586814642000046e-02 -6.845580339431800443e-01 -2.369014263153100153e+00 -3.232995033264200124e+00 -2.759827613830600157e+00 -5.323746204376200275e+00 +0.000000000000000000e+00 -6.053734421730000426e-01 -9.272364974021900519e-01 -1.822737574577300013e+00 -9.868841767311099522e-01 -8.361587524414100248e-01 -1.466517329216000087e+00 +0.000000000000000000e+00 -4.362296164035799895e-01 -5.833148360252400355e-01 -2.600750684738200036e+00 -3.738101005554200107e+00 -3.436785221099900145e+00 -6.111667156219500185e+00 +0.000000000000000000e+00 5.373826995492000241e-02 -3.180680572986600008e-01 -1.291579246521000091e+00 -1.901737093925500055e+00 -1.449480652809099990e+00 -3.174315690994299999e+00 +0.000000000000000000e+00 1.146441340446499924e+00 1.040120601654100030e+00 5.475819706916800200e-01 2.004029035568200001e+00 2.734636783599900145e+00 3.111385822296099946e+00 +0.000000000000000000e+00 -7.286229133606000330e-01 -1.849661231041000109e+00 -3.224602460861199837e+00 -4.074485301971400020e+00 -3.857010602951000067e+00 -6.534875392913799708e+00 +0.000000000000000000e+00 -2.472272664308499956e-01 -4.759474992752100175e-01 -1.074557662010199977e+00 -8.313176631927500226e-01 -5.322167277336099511e-01 -1.330619096756000097e+00 +0.000000000000000000e+00 1.266439676284800031e+00 8.336641788482700433e-01 2.780889533460000063e-02 1.744344353675800097e+00 2.519626379013100159e+00 2.710545301437400134e+00 +0.000000000000000000e+00 -2.203742116689700048e-01 -2.642019689083099920e-01 -1.334444284439100015e+00 6.427769660949700370e-01 8.678171038627600087e-01 1.184152603149400074e+00 +0.000000000000000000e+00 1.061974167823799942e+00 1.173227667808500074e+00 3.847650885582000191e-01 2.316871404647800059e+00 2.989473819732700210e+00 3.660910844802899966e+00 +0.000000000000000000e+00 -5.179010331631000302e-02 -3.331609666347499776e-01 -1.574015855789199891e+00 -6.448332071304300195e-01 -3.021939098834999782e-01 -1.000334978103599948e+00 +0.000000000000000000e+00 6.238719224929799578e-01 6.396266818046599800e-01 -7.247347235679599819e-01 -1.480014994740000076e-02 5.662015676498399763e-01 -1.290257871150999880e-01 +0.000000000000000000e+00 8.166787028312999519e-02 -3.204990029334999768e-01 -1.633828043937699981e+00 -7.214136719703699852e-01 -3.258663117885600147e-01 -1.141724705696099962e+00 +0.000000000000000000e+00 1.929442733526199882e-01 4.238484427333000237e-02 -1.180687904357899942e+00 7.050694227218600174e-01 1.085286140441900082e+00 1.213268995284999985e+00 +0.000000000000000000e+00 3.574834764003799736e-01 3.028444349765799792e-01 -3.745987117290500157e-01 7.254142165183999902e-01 1.192820429801900062e+00 1.146280527114899916e+00 +0.000000000000000000e+00 1.094925761222800054e+00 1.111219525337199920e+00 9.131156206131000319e-01 3.161262035369900136e+00 3.830941438674900112e+00 5.049408912658700288e+00 +0.000000000000000000e+00 4.758275747299199887e-01 3.853450715541800187e-01 -1.209077954292300028e+00 -1.241483807563799946e+00 -6.733356714248700525e-01 -2.142509937286400046e+00 +0.000000000000000000e+00 1.575814485549900112e-01 -5.728566050529499964e-01 -1.427545070648200021e+00 -1.215159416198700049e+00 -7.511837482452400350e-01 -1.995832204818700051e+00 +0.000000000000000000e+00 -2.878352105617499879e-01 -5.262885093689000371e-01 -1.551202178001400034e+00 -1.849492073059100017e+00 -1.536911010742199934e+00 -3.012744903564500198e+00 +0.000000000000000000e+00 5.971298217773399752e-01 6.492750346660999816e-02 -6.226790547370899542e-01 2.428070157766299975e-01 8.236488699913000477e-01 3.303515911102299918e-01 +0.000000000000000000e+00 2.187384217977499934e-01 -4.403797984123200004e-01 -1.294346928596499913e+00 -1.108374953270000018e+00 -6.242662072181700550e-01 -1.839371323585500040e+00 +0.000000000000000000e+00 7.223281860351600248e-01 4.498006030916999742e-02 -1.534639477729800028e+00 -7.477715015411400268e-01 -1.081317141652100022e-01 -1.288272500038099899e+00 +0.000000000000000000e+00 4.182811081409499865e-01 2.272001653909699881e-01 -1.187074422836299936e+00 -1.432630419731099947e+00 -8.723704218864399840e-01 -2.455003023147599883e+00 +0.000000000000000000e+00 2.234764546155899867e-01 1.929005980491599881e-01 -1.912672771139999972e-03 1.682819247245799898e+00 2.072186231613200036e+00 2.762377977371199833e+00 +0.000000000000000000e+00 3.514526188373600091e-01 7.360059022902999681e-02 -7.181286811828599959e-01 -6.229653358459500412e-01 -1.025190576910999934e-01 -1.104235529899600055e+00 +0.000000000000000000e+00 6.954557299614000376e-01 9.421094059944199461e-01 1.102909296750999996e-01 2.360435247421300176e+00 2.884139299392700195e+00 3.813048839569099790e+00 +0.000000000000000000e+00 2.590077519416800200e-01 1.195513680577300064e-01 -6.845026612281800427e-01 1.735977053642300039e+00 2.112012863159200116e+00 2.911062240600600148e+00 +0.000000000000000000e+00 -2.861809432506600137e-01 -8.152455687522900396e-01 -1.236495971679699934e+00 -1.422786414623299911e-01 1.142346933484099936e-01 -1.247950270771999992e-01 +0.000000000000000000e+00 7.689164280891399583e-01 3.328537046909300079e-01 -1.345328092575099888e-01 1.468626260757400104e+00 2.071364164352400117e+00 2.338580131530799910e+00 +0.000000000000000000e+00 -5.026024580001799968e-01 -1.364441990852399922e+00 -1.676287412643399977e+00 -1.759085655212399901e+00 -1.513232231140100081e+00 -2.783164978027299785e+00 +0.000000000000000000e+00 4.881661534309399975e-01 -6.638255715370000587e-02 -1.542720437049899918e+00 -7.132505178451500338e-01 -1.635480821132699880e-01 -1.195898532867400110e+00 +0.000000000000000000e+00 -3.975033760070800226e-01 -1.009470105171200061e+00 -1.475771427154499937e+00 -1.379829406738299902e+00 -1.113478779792800077e+00 -2.185148000717199945e+00 +0.000000000000000000e+00 1.145021393895099965e-01 -4.197520911693600199e-01 -1.834639787673999933e+00 -1.950632929801900062e+00 -1.490737795829800039e+00 -3.212811470031700090e+00 +0.000000000000000000e+00 1.201350927352899944e+00 1.076243877410899996e+00 2.388777881860700003e-01 3.209185123443599963e+00 3.892611503601099976e+00 5.178262233734099773e+00 +0.000000000000000000e+00 -1.723922789096800079e-01 -4.072539806366000104e-01 -1.030004024505599913e+00 -8.052735924720799687e-01 -4.785045087337500003e-01 -1.302321195602399895e+00 +0.000000000000000000e+00 4.886148869990999954e-02 3.261573240160999670e-02 -1.058711186051399938e-01 1.622049808502199930e+00 1.946857690811200081e+00 2.696349382400499817e+00 +0.000000000000000000e+00 2.895863652229300200e-01 -5.179284811019899681e-01 -1.622741341590899999e+00 -1.190254926681499903e+00 -6.852928400039699497e-01 -1.954842448234600072e+00 +0.000000000000000000e+00 2.061879187822300008e-01 2.823520004749299761e-01 -6.846991926432000053e-02 1.847921729087800058e+00 2.217508792877199930e+00 3.046572923660300081e+00 +0.000000000000000000e+00 -6.749227046966600474e-01 -1.698596715927100043e+00 -2.627695798873900035e+00 -2.952402830123900035e+00 -2.746447324752800068e+00 -4.692863464355499836e+00 +0.000000000000000000e+00 -5.154786705970799687e-01 -1.446401238441499926e+00 -2.644686937332199950e+00 -3.820941209793100146e+00 -3.521432161331199850e+00 -6.198441028595000013e+00 +0.000000000000000000e+00 8.467513322830200195e-01 9.626018404960600128e-01 -1.958378553390499877e-01 1.237927556037899945e+00 1.859451055526700092e+00 1.912756443023700070e+00 +0.000000000000000000e+00 1.282913982868200131e-01 -3.757891356945000094e-01 -2.166335344314600064e+00 -1.804455518722499985e+00 -1.360416769981400043e+00 -2.939366102218599952e+00 +0.000000000000000000e+00 -3.400922417640699913e-01 -9.592564702033999913e-01 -1.254945039749099989e+00 -1.415791511535599900e+00 -1.118164896964999988e+00 -2.274557113647500017e+00 +0.000000000000000000e+00 2.955315411090900235e-01 2.315294444560999920e-01 -5.632912516593899799e-01 1.836555123329199901e+00 2.223547935485799876e+00 3.061898708343500086e+00 +0.000000000000000000e+00 4.960230588912999949e-01 1.096318513155000035e-01 -1.134224891662600099e+00 -5.746130943298299876e-01 -1.751608215271999863e-02 -1.004869818687400107e+00 +0.000000000000000000e+00 -1.414246708154699994e-01 -9.210181236267099836e-01 -2.134897947311400035e+00 -2.391165971756000097e+00 -2.007277727127100064e+00 -3.881562948226899845e+00 +0.000000000000000000e+00 -2.030746638774900137e-01 -5.193126201629599814e-01 -2.406039714813200003e+00 -2.782415151596099978e+00 -2.428065776825000022e+00 -4.534801959991500375e+00 +0.000000000000000000e+00 -3.035069406032600003e-01 -1.001986145973200015e+00 -1.273611903190599914e+00 -3.928059935569799821e-01 -1.271837353706400109e-01 -5.365099310874900107e-01 +0.000000000000000000e+00 -5.489365458488499883e-01 -1.298500776290899994e+00 -2.571640014648400197e+00 -2.483653783798200010e+00 -2.260290145873999901e+00 -3.934845447540300079e+00 +0.000000000000000000e+00 -2.405528873205199925e-01 -3.038759529590600028e-01 -1.183476805686999977e+00 5.589065551757800288e-01 7.871419787406900292e-01 1.032802700996400036e+00 +0.000000000000000000e+00 8.785607218742399471e-01 2.157530933618500013e-01 -5.351282954216000087e-01 1.316063046455399954e+00 1.956437945365899989e+00 2.106495618820200200e+00 +0.000000000000000000e+00 5.687230229377699953e-01 2.922951988875999857e-02 -5.954849123954799595e-01 1.317867994308500101e+00 1.840511560440099892e+00 2.160305261611899841e+00 +0.000000000000000000e+00 4.729264080524400171e-01 4.218789637088800060e-01 1.465993970632600008e-01 1.769632697105399943e+00 2.251226902008100161e+00 2.856704473495499830e+00 +0.000000000000000000e+00 6.620728969574000145e-01 4.403132796287499984e-01 -9.428480863571200299e-01 8.317105174064599593e-01 1.386436223983799954e+00 1.333549261093099902e+00 +0.000000000000000000e+00 8.624142408371000545e-01 9.900450110435500273e-01 2.659554183483099910e-01 2.247420787811300169e+00 2.846241235732999808e+00 3.585449695587199948e+00 +0.000000000000000000e+00 1.812429279089000089e-01 2.594541609287300266e-01 -8.332112431525999507e-02 1.839240431785599927e+00 2.199604749679600069e+00 3.037140369415300079e+00 +0.000000000000000000e+00 -2.697052061557799751e-01 -8.178924322128300339e-01 -1.495322227478000032e+00 -1.199014306068399982e+00 -8.977938890457199950e-01 -1.900329232215899999e+00 +0.000000000000000000e+00 -7.163576483726500355e-01 -1.794912695884699927e+00 -2.916055917739900138e+00 -2.978940963745099868e+00 -2.796382188797000179e+00 -4.703550815582300260e+00 +0.000000000000000000e+00 4.860692620277399789e-01 3.143658936023699946e-01 2.489198446273800103e-01 2.682844638824500194e+00 3.135140895843500086e+00 4.403543472289999983e+00 +0.000000000000000000e+00 5.079976916313200253e-01 -4.321217164397000293e-02 -1.770721316337600104e+00 -1.743352770805399965e+00 -1.148440480232199912e+00 -2.930451154708900052e+00 +0.000000000000000000e+00 2.203467488288899934e-01 -7.287713140248999744e-02 -1.701120018958999891e+00 -2.676676988601700113e+00 -2.147715806961099982e+00 -4.487352848052999832e+00 +0.000000000000000000e+00 8.514345884323100133e-01 2.916433215141300272e-01 -2.336909025907500104e-01 1.366351127624499950e+00 2.003394365310700032e+00 2.165504217147800059e+00 +0.000000000000000000e+00 -5.715122222900399507e-01 -7.736194133758500513e-01 -1.267623305320700000e+00 -9.441751241683999929e-01 -7.649695873260500267e-01 -1.453243494033799932e+00 +0.000000000000000000e+00 -4.156841039657599990e-01 -1.056283354759200099e+00 -1.960692286491400038e+00 -2.409305095672599872e+00 -2.120628595352199941e+00 -3.888588905334500190e+00 +0.000000000000000000e+00 7.372578978538499861e-01 3.117514848709099784e-01 -3.330891132354700246e-01 1.519679784774800035e+00 2.100485324859600045e+00 2.447284936904900121e+00 +0.000000000000000000e+00 -1.559545993804899999e-01 -8.670583963394199456e-01 -1.130112409591699896e+00 7.536923289299000128e-01 1.025876641273500089e+00 1.375887274742100042e+00 +0.000000000000000000e+00 -2.825857400894200011e-01 -6.635937094688399984e-01 -2.297666072845499841e+00 -1.847371816635100084e+00 -1.558144092559800020e+00 -2.938668012618999903e+00 +0.000000000000000000e+00 1.019740700721700088e+00 1.239781260490399939e+00 3.033566176891300259e-01 2.473292589187599866e+00 3.116892337799099799e+00 3.935673236846899847e+00 +0.000000000000000000e+00 5.707307457923900262e-01 8.276202082633999924e-01 3.603489696980000101e-02 2.317028522491499931e+00 2.794619083404500159e+00 3.765885591507000196e+00 +0.000000000000000000e+00 -4.262812733650199748e-01 -1.008410573005700028e+00 -1.647867083549499956e+00 -1.305913448333700044e+00 -1.061063647270199972e+00 -2.041264295577999821e+00 +0.000000000000000000e+00 -2.846063077449800249e-01 -1.054038286209100006e+00 -2.032527685165399944e+00 -2.461520910263100159e+00 -2.124611377716099980e+00 -4.013614177703900054e+00 +0.000000000000000000e+00 9.766728281974800252e-01 1.124964952468900048e+00 -6.400665640831000591e-02 1.365832686424300002e+00 2.029929637908900020e+00 2.068813800811799997e+00 +0.000000000000000000e+00 -9.115006923675500472e-01 -1.375733733177199936e+00 -2.463625907897899925e+00 -2.289170503616300145e+00 -2.212213277816799994e+00 -3.593905687332199950e+00 +0.000000000000000000e+00 -7.607439160347000129e-02 -7.879983186721799537e-01 -1.757459282875099893e+00 -1.209645986556999953e+00 -8.460677862167399477e-01 -1.946922302246099967e+00 +0.000000000000000000e+00 7.829722166061400257e-01 5.023301839828500093e-01 -1.176154762506499973e-01 1.736454367637600082e+00 2.325275182723999912e+00 2.755790233612100071e+00 +0.000000000000000000e+00 -1.455019265413300122e-01 -1.026929840445500036e-01 -1.671056151390100109e-01 1.637097358703599959e+00 1.884583592414899922e+00 2.729782342910799908e+00 +0.000000000000000000e+00 1.149662256240800096e+00 1.402144432067899960e+00 4.351878166198699938e-01 2.601197719573999922e+00 3.287371158599900145e+00 4.091730594634999996e+00 +0.000000000000000000e+00 2.894706428050999869e-01 1.651303023099900125e-01 -7.568131685257000196e-01 -3.907271027565000221e-01 8.795379102229999857e-02 -7.300116419792199718e-01 +0.000000000000000000e+00 -6.513271927833600428e-01 -1.041744470596299932e+00 -1.562368631362899940e+00 -1.155785918235799903e+00 -1.003826379776000088e+00 -1.792129158973700065e+00 +0.000000000000000000e+00 1.057538747787500011e+00 1.422902345657300005e+00 3.240769505500800118e-01 2.740256309509299992e+00 3.378981351852400117e+00 4.347627639770499819e+00 +0.000000000000000000e+00 -7.838866114616399594e-01 -1.309565067291299956e+00 -1.390673041343700067e+00 -3.761897385120400172e-01 -2.965662479400599794e-01 -4.535565376281699979e-01 +0.000000000000000000e+00 -8.375116586685199538e-01 -1.744633316993700056e+00 -2.537500858306899865e+00 -1.763253808021499891e+00 -1.672831296920799904e+00 -2.684931755065900205e+00 +0.000000000000000000e+00 -3.059580624103500068e-01 -6.182069778442399466e-01 -1.903714179992699984e+00 -2.948270559310900207e+00 -2.605969429016099959e+00 -4.870172023773199577e+00 +0.000000000000000000e+00 5.131437182426500376e-01 3.924760520458199786e-01 -4.831050038337699748e-01 1.903236985206600007e+00 2.367883682251000099e+00 3.108048200607299805e+00 +0.000000000000000000e+00 6.840857863426199614e-01 2.657022476196300165e-01 -1.233221411704999992e+00 -4.401385784149199898e-01 1.729957163333900039e-01 -8.242587447166399572e-01 +0.000000000000000000e+00 2.370605766773200007e-01 -1.562164817005000025e-02 -1.145988464355500058e+00 -5.043709874153099459e-01 -5.073070526122999691e-02 -8.747309446334800009e-01 +0.000000000000000000e+00 -4.821986258029899997e-01 -6.615972518920899548e-01 -1.612436652183500074e+00 -1.834444403648400002e+00 -1.599185109138500094e+00 -2.979312181472800081e+00 +0.000000000000000000e+00 7.416322827339200119e-01 4.238471686840100117e-01 -1.255225062370300071e+00 -2.489919662475600093e-01 3.720304965972899836e-01 -5.117657184600800102e-01 +0.000000000000000000e+00 9.539650082588200242e-01 4.432246387004900035e-01 -9.154577255249000123e-01 6.177162528038000477e-01 1.294871091842699995e+00 9.058906435966499471e-01 +0.000000000000000000e+00 -1.853878051042600061e-01 -9.667665362358099923e-01 -1.978280305862399890e+00 -2.431251764297500007e+00 -2.057535409927400138e+00 -3.982740402221700116e+00 +0.000000000000000000e+00 -5.384694933891299717e-01 -7.393814325332600523e-01 -2.550874471664399845e+00 -3.862112045288100148e+00 -3.590669631957999819e+00 -6.334131240844699917e+00 +0.000000000000000000e+00 -1.880775243043900091e-01 -7.286577224731399793e-01 -1.182650804519699950e+00 -7.760424911975999374e-02 2.112305313348800118e-01 -6.210688874124999787e-02 +0.000000000000000000e+00 -2.274499684572199865e-01 -9.214050173759500417e-01 -2.712355852127100064e+00 -3.234932661056499903e+00 -2.871362209320099890e+00 -5.282375812530499815e+00 +0.000000000000000000e+00 -7.142918705940199953e-01 -1.303696990013099910e+00 -2.048495769500700003e+00 -1.353197574615500054e+00 -1.227859735488900039e+00 -2.065744400024399852e+00 +0.000000000000000000e+00 -6.329545974731399793e-01 -1.260934829711900074e+00 -2.476418733596799981e+00 -2.350027561187700176e+00 -2.165512323379500170e+00 -3.734654664993299900e+00 +0.000000000000000000e+00 5.638656020164499738e-01 4.170064926147499795e-01 -5.934498906135600160e-01 -2.952322959899900123e-01 2.848985493183099904e-01 -6.262525320053099476e-01 +0.000000000000000000e+00 5.730922892689999798e-02 -1.532994806766500018e-01 -8.387680053710899752e-01 -6.426431536674499512e-01 -2.364094704389599899e-01 -1.108533263206499919e+00 +0.000000000000000000e+00 1.139374613761900079e+00 4.866085946559899900e-01 -1.503521800041200118e-01 1.423305869102500010e+00 2.164995908737199937e+00 2.184909582138100159e+00 +0.000000000000000000e+00 3.884692490100900009e-01 -1.098273843526799964e-01 -1.787402272224400068e+00 -1.702261090278599953e+00 -1.157002449035599900e+00 -2.868720293044999980e+00 +0.000000000000000000e+00 -4.746141731738999781e-01 -1.369089603424100021e+00 -3.005967140197800092e+00 -4.717137336730999664e+00 -4.379804611206099985e+00 -7.725778579711899852e+00 +0.000000000000000000e+00 -1.020659878850000007e-01 -8.018458485603300323e-01 -2.632046222686799997e+00 -3.186295747757000196e+00 -2.776512861251799968e+00 -5.227164745330799889e+00 +0.000000000000000000e+00 -8.145309984684000193e-02 -4.121264517307299813e-01 -1.770053386688200003e+00 -2.870138645172100045e+00 -2.444832801818800139e+00 -4.785277843475300052e+00 +0.000000000000000000e+00 1.787830144166900059e-01 1.949788928031900015e-01 2.596007287502000160e-02 1.749954938888500067e+00 2.117336511611899841e+00 2.852406740188599965e+00 +0.000000000000000000e+00 1.057107329368599968e+00 8.590980172157299810e-01 -2.007115632295599916e-01 2.055922269821199855e+00 2.722745895385699999e+00 3.256626367568999925e+00 +0.000000000000000000e+00 2.786902785301200169e-01 -3.627246022224400179e-01 -1.040341258048999906e+00 -1.080917239189099988e+00 -5.694701671600299608e-01 -1.852320194244400087e+00 +0.000000000000000000e+00 1.627263575792300132e-01 -6.943934559822100283e-01 -1.584731817245500052e+00 -1.320368647575399956e+00 -8.544542789459199650e-01 -2.182771682739300001e+00 +0.000000000000000000e+00 5.350632667541499465e-01 2.317623347043999971e-01 -1.299355924129499962e-01 1.548853993415800101e+00 2.057382583618200034e+00 2.480158567428599969e+00 +0.000000000000000000e+00 3.792139887809800047e-01 -2.515788376331299925e-01 -9.002603292465199969e-01 7.092802971601000483e-02 5.709203481674199887e-01 7.615564018487999687e-02 +0.000000000000000000e+00 8.857206702232399698e-01 4.873584210872700107e-01 -4.411110579967499890e-01 6.072422266006499703e-01 1.275637984275800108e+00 8.530325293541000109e-01 +0.000000000000000000e+00 -9.209797382354699691e-01 -1.426149010658299909e+00 -1.896456718444800016e+00 -1.402939677238500105e+00 -1.346233487129200102e+00 -2.133175611496000101e+00 +0.000000000000000000e+00 1.161851167678799923e+00 1.211337327957199950e+00 -3.458392573519999957e-03 2.432359457016000093e+00 3.119626998901400050e+00 3.850305318832400125e+00 +0.000000000000000000e+00 6.028479337692299600e-01 5.842421054840100103e-01 2.784305810928299763e-01 1.897537708282500013e+00 2.421705722808800143e+00 3.012761831283599978e+00 +0.000000000000000000e+00 -1.063036918640100081e+00 -1.710324406623799920e+00 -2.858007669448900057e+00 -3.656584978103599948e+00 -3.581300258636499922e+00 -5.850157737731899843e+00 +0.000000000000000000e+00 6.636455655098000284e-01 5.085978507995599918e-01 -5.340451002121000545e-01 -2.605069279670699789e-01 3.565148115158099928e-01 -5.885218977928200479e-01 +0.000000000000000000e+00 5.520863533019999547e-01 2.642611265182500113e-01 -1.160011649131799993e+00 -3.519825339317300128e-01 2.084621638059599991e-01 -6.650573611259500417e-01 +0.000000000000000000e+00 -2.665180265903500101e-01 -7.320321202278099459e-01 -1.578241109848000034e+00 -1.017446160316499926e+00 -7.317706942558299676e-01 -1.615849375724800030e+00 +0.000000000000000000e+00 3.221007883548699935e-01 1.283149570226700120e-01 -8.372578024863999713e-02 2.673547267913800152e+00 3.052343130111700109e+00 4.417887210845900192e+00 +0.000000000000000000e+00 8.772428631782499542e-01 8.361183404922499784e-01 4.417938590049699799e-01 1.993032574653599953e+00 2.618650436401400050e+00 3.116520881652800057e+00 +0.000000000000000000e+00 -1.682872027158699990e-01 -6.661915183067299573e-01 -1.606910705566400033e+00 -2.106232881546000080e+00 -1.735441565513599960e+00 -3.478699922561600211e+00 +0.000000000000000000e+00 9.631543159484899919e-01 4.743085205554999906e-01 -6.351665258407600545e-01 1.688847661018400004e+00 2.330626010894799816e+00 2.699650287628200029e+00 +0.000000000000000000e+00 8.478403687477099604e-01 -6.614039093255999480e-02 -6.854405999183700304e-01 1.002485036850000011e+00 1.645644426345800104e+00 1.576637268066400033e+00 +0.000000000000000000e+00 7.012098431587200364e-01 2.509410977363599748e-01 -6.359702944755599718e-01 4.679332673549699839e-01 1.070287704467800083e+00 6.661530733108500524e-01 +0.000000000000000000e+00 -1.978891193866700038e-01 -3.057793974876399923e-01 -1.210311889648399974e+00 5.621727705001799968e-01 8.034529089927699985e-01 1.008851528167699962e+00 +0.000000000000000000e+00 1.804086118936500116e-01 7.808429747820000433e-02 -3.692759573459600264e-01 5.753592252731299928e-01 9.852237105369600068e-01 8.955183625221300181e-01 +0.000000000000000000e+00 7.929329574108000267e-02 -7.052427530288699620e-01 -2.802460193633999896e+00 -3.148279428482100073e+00 -2.679145097732499980e+00 -5.173850536346400020e+00 +0.000000000000000000e+00 -9.442991018295300298e-01 -1.565941452979999982e+00 -2.306544065475499838e+00 -2.586216688156099952e+00 -2.496250391006499925e+00 -4.099496364593499642e+00 +0.000000000000000000e+00 1.171890139579800039e+00 1.235125303268399977e+00 2.107931822538400002e-01 2.399017095565799895e+00 3.099492549896199822e+00 3.772778749465900194e+00 +0.000000000000000000e+00 -1.054657936096200066e+00 -1.107886791229200085e+00 -2.914455652236899841e+00 -3.870636224746700105e+00 -3.803428411483800176e+00 -6.238589286804200107e+00 +0.000000000000000000e+00 6.354494094848599506e-01 7.194892168044999536e-01 2.415757626295099991e-01 2.080003023147599883e+00 2.602836370468100124e+00 3.315822124481199840e+00 +0.000000000000000000e+00 1.410762369632700131e-01 1.081039831042300003e-01 -1.806361794471700088e+00 -2.279335975647000190e+00 -1.811920404434200105e+00 -3.828933715820300066e+00 +0.000000000000000000e+00 -5.744937062263499872e-01 -1.309535264968900048e+00 -2.001876592636099961e+00 -2.603693008422899968e+00 -2.364336252212499989e+00 -4.211493492126500371e+00 +0.000000000000000000e+00 4.129625111817999961e-02 1.651263609528999879e-02 -1.865766644477800051e+00 -2.314061403274500162e+00 -1.883536696433999902e+00 -3.866664171218900048e+00 +0.000000000000000000e+00 8.023045063018799938e-01 6.502778530120799649e-01 -5.105895996093799960e-01 2.082897663116499931e+00 2.640669822692899960e+00 3.342485904693599963e+00 +0.000000000000000000e+00 -1.050847694277800004e-01 -2.908941209316299736e-01 -4.288651347160299943e-01 1.433235287666299929e+00 1.698916077613799924e+00 2.383191823959399880e+00 +0.000000000000000000e+00 1.082457065582300038e+00 7.861142754554699685e-01 7.177129387856000242e-02 1.885036110878000049e+00 2.580233097076400028e+00 2.916184425353999909e+00 +0.000000000000000000e+00 1.358992606401399905e-01 -1.462882161140399984e-01 -1.936326503753700079e+00 -2.579483747482299805e+00 -2.099971294403100153e+00 -4.342051982879599592e+00 +0.000000000000000000e+00 -5.414112806320200422e-01 -9.798468351364100215e-01 -1.736340522766099959e+00 -1.073640227317800067e+00 -8.938077092170699789e-01 -1.680261254310599917e+00 +0.000000000000000000e+00 9.552987813949600504e-01 1.266835689544699939e+00 3.739533126354199766e-01 2.616245269775399951e+00 3.225096940994299999e+00 4.125163555145300087e+00 +0.000000000000000000e+00 -2.805092036724100013e-01 -4.232022166252100148e-01 -2.240503072738599943e+00 -2.553282499313399789e+00 -2.241113901138299891e+00 -4.208778858184800242e+00 +0.000000000000000000e+00 4.673065245151499791e-01 6.874390244483900014e-01 -7.652488946914699497e-01 2.672111093997999731e-01 7.660165429115299851e-01 3.163616061210600128e-01 +0.000000000000000000e+00 9.531516432762100477e-01 9.122896790504499975e-01 -7.434515655041000481e-02 2.220608711242700206e+00 2.840111255645799915e+00 3.508535861968999914e+00 +0.000000000000000000e+00 8.572627305984500401e-01 4.057162106037099925e-01 -2.825099825859099800e-01 1.612134695053099920e+00 2.229710102081300160e+00 2.527668237686199859e+00 +0.000000000000000000e+00 -8.425723761320000338e-02 -4.290743470191999975e-01 -8.620042204856900314e-01 2.217405289411500113e-01 5.382666587829599836e-01 3.656002879142800088e-01 +0.000000000000000000e+00 -8.706972599029499937e-01 -1.146980404853799929e+00 -1.761057376861600021e+00 -1.036891698837300035e+00 -9.831900000572200149e-01 -1.568757414817800067e+00 +0.000000000000000000e+00 4.646211266517599747e-01 -1.023327112197899985e-01 -1.329149365425100093e+00 3.738893568515799792e-01 8.691891431808500545e-01 5.841677784919699912e-01 +0.000000000000000000e+00 4.993018507957500129e-01 4.265505969524400198e-01 -1.114210247993500102e+00 -4.674727469683000181e-02 4.733096361160299970e-01 -1.785110682249100023e-01 +0.000000000000000000e+00 -7.799057960510300536e-01 -1.436788201332100057e+00 -2.482519149780300083e+00 -3.561517238616899839e+00 -3.376088142394999991e+00 -5.794403553009000341e+00 +0.000000000000000000e+00 -4.828350245952600095e-01 -4.619196951389299977e-01 -1.246465325355500031e+00 6.154919862747200154e-01 7.439371347427400361e-01 1.116876244545000008e+00 +0.000000000000000000e+00 -1.648542732000400080e-01 -8.405119180679300195e-01 -1.583942532539400094e+00 -1.226829767227199941e+00 -8.911091685295100540e-01 -2.005008935928299874e+00 +0.000000000000000000e+00 7.247629761695899564e-01 8.315113186836200487e-01 -1.032375246286399983e-01 1.189733743667600097e+00 1.768620848655700017e+00 1.789753556251499900e+00 +0.000000000000000000e+00 4.575029015541099975e-01 2.205437421798699948e-01 -1.161841392517100058e+00 -3.022095263004300203e-01 2.178042978048299882e-01 -5.938938856124900134e-01 +0.000000000000000000e+00 6.404452919959999768e-01 2.362684309482599998e-01 -9.997959733009299521e-01 6.335533857345599928e-01 1.188107013702399906e+00 9.601662158966099980e-01 +0.000000000000000000e+00 2.850351035594900218e-01 4.148049354553199897e-01 -8.175013065338100349e-01 3.265776857733999894e-02 4.774614274501799982e-01 -4.329470172523999794e-02 +0.000000000000000000e+00 -8.577294349670400164e-01 -1.657875299453700046e+00 -2.964694023132299794e+00 -4.798778057098400218e+00 -4.599225521087600299e+00 -7.835939884185799897e+00 +0.000000000000000000e+00 2.620657384395599920e-01 7.775719463824999622e-02 -6.623831987381000319e-01 -4.886939823627500235e-01 -1.221850886941000004e-02 -9.241779446601899872e-01 +0.000000000000000000e+00 1.430215984582899891e-01 3.897671401500700239e-01 -9.583145976066600458e-01 1.543536186218300021e-01 5.332636237144500191e-01 1.937371641397500066e-01 +0.000000000000000000e+00 6.701463460922200133e-01 4.647701084613800049e-01 -7.269690632820100529e-01 8.692796230316199857e-01 1.428282022476200064e+00 1.322884440422100072e+00 +0.000000000000000000e+00 1.695921868085900064e-01 2.957704067230200184e-01 -1.338699460029600052e+00 -1.011560678482100073e+00 -5.809450745582600550e-01 -1.753718495368999930e+00 +0.000000000000000000e+00 6.815557479858399548e-01 1.457162760198000076e-02 -4.887501895427699972e-01 1.240383386611900063e+00 1.810426712036099950e+00 1.952976465225199965e+00 +0.000000000000000000e+00 9.289795160293600196e-01 5.659887194633500540e-01 6.972475349902999830e-02 1.689711093902600103e+00 2.340705394744900136e+00 2.612964153289799807e+00 +0.000000000000000000e+00 3.230612874031100201e-01 3.831603229045900116e-01 -8.229327201843299466e-01 1.067078948020899976e+00 1.480093955993700083e+00 1.712348699569699928e+00 +0.000000000000000000e+00 5.597801208496100411e-01 4.694258272647899854e-01 -8.893268555402999986e-02 7.900778055191000071e-01 1.334743142128000049e+00 1.145902156829800012e+00 +0.000000000000000000e+00 -1.882679015397999978e-01 -1.020641803741499931e+00 -1.799014449119600068e+00 -1.412654995918299905e+00 -1.080441355705300088e+00 -2.290942907333399781e+00 +0.000000000000000000e+00 -1.260783523321200028e-01 -7.337180376052899744e-01 -2.096285104751599793e+00 -2.069839954376199831e+00 -1.703993916511499895e+00 -3.403159856796300176e+00 +0.000000000000000000e+00 5.288042426109299532e-01 2.172841578722000122e-01 -4.473138749599500086e-01 -5.669831037521400052e-01 2.149960771203000137e-02 -1.114046573638900028e+00 +0.000000000000000000e+00 8.325494527816800217e-01 8.381966352462799641e-01 4.696666002273600093e-01 2.060168266296400041e+00 2.663800716400099855e+00 3.206549644470200189e+00 +0.000000000000000000e+00 9.450718760489999759e-02 -2.818871140479999871e-01 -2.028412103652999843e+00 -1.607482075691200052e+00 -1.188113093376200080e+00 -2.670678377151499916e+00 +0.000000000000000000e+00 -3.278864920139299977e-01 -1.027254700660700015e+00 -1.917828679084800036e+00 -1.271951675414999983e+00 -1.005272865295399942e+00 -2.024663686752299796e+00 +0.000000000000000000e+00 4.193921685218799933e-01 3.274934589862800172e-01 -6.249819993972800525e-01 -2.628220021724699818e-01 2.584325373172799978e-01 -5.739543437957800309e-01 +0.000000000000000000e+00 4.862118959426899867e-01 3.283855691551999800e-02 -3.545441627502399773e-01 1.393692016601600026e+00 1.885098695754999998e+00 2.224206447601300152e+00 +0.000000000000000000e+00 1.872307658195500046e-01 9.063679724929999543e-03 -7.069368362426800001e-01 -5.147380232810999656e-01 -6.593071669340000440e-02 -9.524759054183999929e-01 +0.000000000000000000e+00 -1.976991072297000149e-02 -1.112773895263700075e+00 -2.693618297576899856e+00 -3.662410974502599892e+00 -3.193779945373500073e+00 -6.052973270416299734e+00 +0.000000000000000000e+00 -6.636105775833099907e-01 -1.556165695190399934e+00 -2.699984312057500002e+00 -3.774311780929600069e+00 -3.538545370101899845e+00 -6.145389556884800264e+00 +0.000000000000000000e+00 1.232511773705499969e-01 -7.142922282218899799e-01 -1.967285752296400014e+00 -1.175080299377400106e+00 -7.482915520667999809e-01 -1.923969268798799925e+00 +0.000000000000000000e+00 7.605633735656700534e-01 1.997467875480699873e-01 -1.304181694984400064e+00 5.641167759895300282e-01 1.157876253128099941e+00 8.559908270835899780e-01 +0.000000000000000000e+00 1.296872258186299920e+00 1.475056171417199913e+00 6.335762739181499681e-01 2.564000368118299900e+00 3.312527179717999815e+00 3.963592767715499843e+00 +0.000000000000000000e+00 8.298513293266299717e-01 6.622582077980000426e-01 3.044393658637999933e-01 2.960673809051499905e+00 3.520931482315099892e+00 4.760059356689500198e+00 +0.000000000000000000e+00 -6.197515726089499744e-01 -1.297966957092300033e+00 -1.905344367027300034e+00 -1.429819941520700022e+00 -1.260990262031600029e+00 -2.246695041656499914e+00 +0.000000000000000000e+00 -1.335443556308699986e-01 -6.980990767478899572e-01 -2.482783079147299787e+00 -3.014276981353800178e+00 -2.624500274658200016e+00 -4.975749969482399671e+00 +0.000000000000000000e+00 -6.148808822035999738e-02 -5.886601805686999533e-01 -2.005393743514999993e+00 -3.047024011611899841e+00 -2.612073421478299906e+00 -5.086432933807399692e+00 +0.000000000000000000e+00 4.750903248786900179e-01 -1.207848042249699966e-01 -9.790682196617099819e-01 2.741996049880999764e-01 7.901573777198800386e-01 3.572030067443799917e-01 +0.000000000000000000e+00 7.456224560737599871e-01 9.068285226821900524e-01 4.161309003829999908e-01 2.283725261688200003e+00 2.836369514465300057e+00 3.571340799331700122e+00 +0.000000000000000000e+00 -2.118432223796800074e-01 -3.973437845706899729e-01 -1.318809151649499967e+00 5.379348397254900549e-01 7.684882879257199928e-01 9.293044805526700092e-01 +0.000000000000000000e+00 1.180561304092399899e+00 1.148612022399899901e+00 9.583839774131999723e-02 2.365049600601199842e+00 3.063673496246300143e+00 3.674334764480600146e+00 +0.000000000000000000e+00 2.189979106187799895e-01 -3.705910220742000133e-02 -1.029746532440199980e+00 -1.596153974533099928e+00 -1.099181056022600078e+00 -2.791037559509299992e+00 +0.000000000000000000e+00 4.575276374817000002e-02 -4.437219798564899786e-01 -1.524044632911699892e+00 3.108048439025900000e-01 6.457784175872800514e-01 5.327068567275999866e-01 +0.000000000000000000e+00 -2.363248616456999907e-01 -3.632316291332199909e-01 -1.451440453529400099e+00 6.459485292434700154e-01 8.556445240974399624e-01 1.125655412673999933e+00 +0.000000000000000000e+00 9.015012532473000439e-02 -1.919444352388399999e-01 -1.722270369529699918e+00 -1.522526979446400031e+00 -1.101911187171900064e+00 -2.583377838134799820e+00 +0.000000000000000000e+00 -1.133457645773899986e-01 -7.830473780632000169e-01 -2.109928607940700029e+00 -1.003611445426900062e+00 -6.831471920013399979e-01 -1.615773916244499953e+00 +0.000000000000000000e+00 -2.809442766010999959e-02 -4.255907833576200172e-01 -1.951286315918000058e+00 -1.703798770904499937e+00 -1.322839498519899903e+00 -2.846603155136099961e+00 +0.000000000000000000e+00 -3.219667673111000217e-01 -7.375256419181800416e-01 -1.687515020370500052e+00 2.318187952041599886e-01 4.294183850288399995e-01 4.700523912906600099e-01 +0.000000000000000000e+00 2.134600281714999978e-02 -3.139410540462000271e-02 -1.423293948173500079e+00 -2.001914530992499885e-01 1.397161185741400136e-01 -3.611597120761900204e-01 +0.000000000000000000e+00 -7.771763205528300356e-01 -1.069867134094200090e+00 -2.019030809402500015e+00 -3.118003368377700202e+00 -2.947456598281899876e+00 -5.125231742858900041e+00 +0.000000000000000000e+00 4.336390197277100178e-01 -8.455618470907000361e-02 -1.781376719474800030e+00 -1.635850310325599910e+00 -1.081489801406900098e+00 -2.816634893417400143e+00 +0.000000000000000000e+00 1.992121636867499879e-01 -1.048984378576300058e-01 -2.109807491302500004e+00 -2.488613367080700023e+00 -1.999181032180799900e+00 -4.208908081054699934e+00 +0.000000000000000000e+00 5.456798076629599814e-01 -4.366132616996800109e-01 -1.475932359695399931e+00 -1.223263978958099907e+00 -6.208441257476799979e-01 -2.138414859771700094e+00 +0.000000000000000000e+00 9.451824426650999866e-01 1.090011239051799974e+00 5.349405407905599708e-01 2.353175878524799813e+00 2.979602098465000015e+00 3.646802186965900194e+00 +0.000000000000000000e+00 1.310075283050500028e+00 1.438024163246200082e+00 1.204650759696999973e+00 3.484207868576000067e+00 4.217049121856700111e+00 5.451552391052199908e+00 +0.000000000000000000e+00 -1.263170242309600066e+00 -1.552779912948599961e+00 -3.114224910736099972e+00 -3.115726232528699846e+00 -3.163544416427599870e+00 -4.946179866790799906e+00 +0.000000000000000000e+00 2.620061635971099867e-01 -5.908602476119999558e-01 -1.510239601135300092e+00 -1.203102350235000007e+00 -7.090086340904200313e-01 -2.060284852981599801e+00 +0.000000000000000000e+00 -8.261392712593099708e-01 -1.539615750312800069e+00 -2.150875568389900128e+00 -2.621421813964799785e+00 -2.483257770538299880e+00 -4.241768836975100321e+00 +0.000000000000000000e+00 -1.870037466287599870e-01 -1.003021359443700078e+00 -1.777561426162699965e+00 -1.359366536140399928e+00 -1.031281828880300067e+00 -2.230072498321499896e+00 +0.000000000000000000e+00 -2.549570202827500243e-01 -4.721180200576799990e-01 -1.311919450759899908e+00 -1.761099457740799901e+00 -1.439358353614800023e+00 -2.970257759094200090e+00 +0.000000000000000000e+00 9.297971129417399450e-01 5.576634407043500330e-01 -5.671649575233500551e-01 7.779932022094699917e-01 1.443622827529899899e+00 1.091890692710900002e+00 +0.000000000000000000e+00 -3.247173130512199801e-01 -5.104479193687400107e-01 -1.890254974365199958e+00 -1.597112894058200006e+00 -1.331905722618099919e+00 -2.631410598754900132e+00 +0.000000000000000000e+00 -7.132649421690000213e-03 -1.262450367212299973e-01 -7.681713104248000246e-01 -4.996904134750400073e-01 -1.282048523426100040e-01 -9.190430045127899739e-01 +0.000000000000000000e+00 7.113954424858099923e-01 8.884760141372699538e-01 8.482217788696300165e-01 3.275855541229200085e+00 3.787351608276400050e+00 5.225168704986599799e+00 +0.000000000000000000e+00 6.214533373712999992e-02 -4.608412086963700194e-01 -1.857479214668299905e+00 -1.857807993888900056e+00 -1.429682731628399983e+00 -3.125505447387700197e+00 +0.000000000000000000e+00 7.208268642425500472e-01 1.555806249380100037e-01 -3.324618637561799761e-01 1.406020998954800039e+00 1.983114600181600018e+00 2.182796001434299971e+00 +0.000000000000000000e+00 -6.176067888737000328e-02 -8.053210973739599599e-01 -2.090307950973500084e+00 -3.308247327804600069e+00 -2.860465526580799889e+00 -5.539657592773400197e+00 +0.000000000000000000e+00 1.284780263900799913e+00 1.612381577491800000e+00 6.245941519737200354e-01 2.813601255416899871e+00 3.538808107376099965e+00 4.356681823730499836e+00 +0.000000000000000000e+00 2.568488419055899863e-01 -3.911720588802999887e-02 -1.813065171241800000e+00 -1.411568522453299890e+00 -9.392833709716800206e-01 -2.413900136947599862e+00 +0.000000000000000000e+00 3.654166758060499731e-01 3.341171145439100210e-01 -1.501671820879000030e-01 8.051254153251600210e-01 1.272469043731699889e+00 1.179334998130799894e+00 +0.000000000000000000e+00 6.669937968254100458e-01 -4.995135590434000156e-02 -8.085525631904599830e-01 1.698664277791999966e-01 7.701632976532000185e-01 1.390364319086100087e-01 +0.000000000000000000e+00 7.867835164070100529e-01 5.474418997764599615e-01 -6.292392313479999721e-02 1.853213906288099899e+00 2.433969020843500086e+00 2.893199682235700010e+00 +0.000000000000000000e+00 8.853182792663599754e-01 5.534978508949299769e-01 -5.471618175506599568e-01 8.035768270492600340e-01 1.451571583747899963e+00 1.139108061790500059e+00 +0.000000000000000000e+00 -2.877591252326999749e-01 -1.138459801673900040e+00 -2.574011564254799822e+00 -3.474512815475499838e+00 -3.116176843643200023e+00 -5.737868309020999646e+00 +0.000000000000000000e+00 -5.130196213722200138e-01 -1.012325882911699892e+00 -2.286037206649799813e+00 -3.180045843124399862e+00 -2.915800333023100155e+00 -5.241582870483400214e+00 +0.000000000000000000e+00 -1.020061254501299919e+00 -1.493307828903200019e+00 -2.853730678558299871e+00 -4.416490554809599622e+00 -4.301166057586700120e+00 -7.211203575134300436e+00 +0.000000000000000000e+00 -1.027712345123299897e+00 -1.760796070098900046e+00 -2.942417860031099952e+00 -3.668311834335300059e+00 -3.585399866104100219e+00 -5.918304920196500341e+00 +0.000000000000000000e+00 6.431310176849399651e-01 2.853422239423000079e-02 -1.131380319595300055e+00 -7.154082655906699451e-01 -9.912314265966000459e-02 -1.338593125343300105e+00 +0.000000000000000000e+00 2.499737590551399935e-01 2.150825709104499939e-01 -6.713652610778799712e-01 -2.390930354595199869e-01 2.140624821186100091e-01 -5.310887694358800148e-01 +0.000000000000000000e+00 -2.529067099094399751e-01 -8.790048956871000518e-01 -2.834262371063200003e+00 -3.048147439956700122e+00 -2.714217185974100222e+00 -5.007068634033199572e+00 +0.000000000000000000e+00 5.041379854083000156e-02 3.189988061785999779e-02 -7.901749610900900000e-01 -3.085438013076799990e-01 7.082992792129999549e-02 -6.065499782562300268e-01 +0.000000000000000000e+00 6.471180319786099533e-01 8.955978751182599451e-01 -6.037153005600000011e-01 4.124788939952899747e-01 9.723034501075700220e-01 4.912842214107500105e-01 +0.000000000000000000e+00 -1.175029516220100101e+00 -1.804126381874100016e+00 -2.477707862853999909e+00 -2.627246618270899781e+00 -2.629853963851899845e+00 -4.169551849365199736e+00 +0.000000000000000000e+00 -2.248991280794100101e-01 -7.340793013572699532e-01 -1.604833126068099913e+00 -9.792174100875900011e-01 -6.849720478057900186e-01 -1.607128500938399984e+00 +0.000000000000000000e+00 -4.098831117153199921e-01 -1.325996518135100111e+00 -2.306458234787000183e+00 -2.612094402313200003e+00 -2.324531316757199928e+00 -4.271854877471899847e+00 +0.000000000000000000e+00 -6.056284904480000453e-01 -1.240271329879800044e+00 -3.148098945617700206e+00 -4.308617115020799915e+00 -4.055870532989500177e+00 -7.063431739807099596e+00 +0.000000000000000000e+00 3.301210105419200014e-01 -3.514087200164799918e-01 -1.435164570808399986e+00 -9.280784130096400020e-01 -4.245135486125899971e-01 -1.618727564811700104e+00 +0.000000000000000000e+00 -4.242732822895100009e-01 -1.121188998222399924e+00 -2.664309024810799897e+00 -3.309170722961400024e+00 -3.015904664993299900e+00 -5.433676719665499810e+00 +0.000000000000000000e+00 7.883598804473900268e-01 1.012381911277800084e+00 1.458993554115300129e-01 2.513610601425200208e+00 3.055902719497700204e+00 3.948538541793800150e+00 +0.000000000000000000e+00 6.881959438324000145e-01 6.728672981262200370e-01 -6.635248064994799799e-01 1.212060332298299903e+00 1.753425478935199955e+00 1.834300279617300022e+00 +0.000000000000000000e+00 2.773982584476499813e-01 9.593745321034999329e-02 -8.381847739219699944e-01 -3.567753732204400063e-01 1.071423143148400037e-01 -7.411465644836400246e-01 +0.000000000000000000e+00 4.867872595787000045e-01 1.322801560163499868e-01 -7.213388085365299851e-01 -5.116302371025099882e-01 4.473193362354999786e-02 -1.040977716445899981e+00 +0.000000000000000000e+00 1.222700357437100038e+00 1.142672181129499975e+00 6.418399512767999915e-02 2.364151716232299805e+00 3.075741767883299893e+00 3.643976449966400022e+00 +0.000000000000000000e+00 1.148208737373400012e+00 1.076620221138000044e+00 2.278438583016000052e-02 2.340832710266099959e+00 3.024806022643999892e+00 3.619871616363500078e+00 +0.000000000000000000e+00 -8.650190383196000588e-02 -5.428524017333999918e-01 -2.123231887817400132e+00 -2.856723308563200003e+00 -2.451346635818500097e+00 -4.805716991424599627e+00 +0.000000000000000000e+00 8.753433823585500262e-01 5.380969047546400041e-01 -7.509848475456200045e-01 8.806822299957299816e-01 1.511160492896999941e+00 1.262848258018500092e+00 +0.000000000000000000e+00 9.846060276031499692e-01 1.156237721443200028e+00 1.604248583316799925e-01 1.445543885231000081e+00 2.109578371047999834e+00 2.101868152618400210e+00 +0.000000000000000000e+00 -2.920703887939499754e-01 -9.947196245193500319e-01 -2.389485359191899860e+00 -3.276176691055300072e+00 -2.928291320800799902e+00 -5.449883460998499629e+00 +0.000000000000000000e+00 -1.210113689303399936e-01 -5.099324584007299821e-01 -1.815771579742400110e+00 -1.753816962242100042e+00 -1.401334881782499986e+00 -2.955213069915799906e+00 +0.000000000000000000e+00 -7.677108049392999956e-02 -1.470645815133999890e-01 -7.551497817039499738e-01 -4.412360787391699790e-01 -1.009586527943600043e-01 -8.384469151496900530e-01 +0.000000000000000000e+00 9.753239750862100488e-01 1.160783052444499974e+00 6.073669195175199764e-01 2.446355581283599978e+00 3.078464508056600213e+00 3.765128850936899862e+00 +0.000000000000000000e+00 9.484033584594699917e-01 1.452035069465599904e+00 4.225463867187500000e-01 2.950344800949099788e+00 3.532336235046400041e+00 4.627146720886200271e+00 +0.000000000000000000e+00 2.976654171943700078e-01 -1.482896357774700080e-01 -1.538950800895700022e+00 -5.377805829048200037e-01 -7.777629792689999544e-02 -9.789969325065599470e-01 +0.000000000000000000e+00 2.401398718357100059e-01 3.440003395080600268e-01 -3.898798227310200093e-01 2.137846469879200129e+00 2.482810258865399966e+00 3.452777147293100146e+00 +0.000000000000000000e+00 -1.759904250502999923e-02 -1.058142557740199968e-01 -1.172389388084400075e+00 -1.424685120582600106e+00 -1.034036636352499983e+00 -2.482842206955000020e+00 +0.000000000000000000e+00 -3.479148447513599751e-01 -6.327299475669899698e-01 -1.708985090255700001e+00 -2.885922193527199919e+00 -2.562129020690900205e+00 -4.855982780456500336e+00 +0.000000000000000000e+00 7.190389037132299821e-01 3.583462536334999782e-01 -3.206380009651200180e-01 6.261840462684600261e-01 1.229958057403599980e+00 8.200584650039699497e-01 +0.000000000000000000e+00 -2.790481150150300182e-01 -5.201641917228699841e-01 -1.113205313682599895e+00 -7.215488553047200160e-01 -4.499738514423399782e-01 -1.242292523384100011e+00 +0.000000000000000000e+00 4.693017601966900099e-01 1.667709052562700023e-01 -6.676690578460700021e-01 -4.611085057258599851e-01 8.714822679757999735e-02 -9.593130946159400541e-01 +0.000000000000000000e+00 1.075819849968000064e+00 9.198544025421100390e-01 2.447720468044299880e-01 2.108166694641099959e+00 2.788246631622299798e+00 3.221195459365799874e+00 +0.000000000000000000e+00 1.630467921495399874e-01 2.837144434452100183e-01 -7.249010205268899831e-01 -1.553612574935000004e-02 3.866312503814700041e-01 -1.662975400686300120e-01 +0.000000000000000000e+00 9.144532084465000210e-01 5.234673023223900268e-01 -1.660651266574899865e-01 1.773949265479999982e+00 2.402427196502700202e+00 2.726553916931199861e+00 +0.000000000000000000e+00 7.517924904823299892e-01 2.326922118663800054e-01 -2.524659335613300137e-01 1.505741000175500055e+00 2.088640689849900145e+00 2.311186313629200129e+00 +0.000000000000000000e+00 1.284697055816700073e-01 4.626172780990600031e-01 -8.580154776573200026e-01 3.146690130233800176e-01 6.772764325141900077e-01 4.020926654338800033e-01 +0.000000000000000000e+00 -2.720039524138000153e-02 -2.589063346386000219e-01 -8.688235282897900369e-01 4.955118894577000277e-01 8.112162351608299682e-01 7.629786133766199852e-01 +0.000000000000000000e+00 4.231841564178500104e-01 2.932313084602399811e-01 -1.787063181400299905e-01 1.850183486938500099e+00 2.289863348007199928e+00 2.926294565200799891e+00 +0.000000000000000000e+00 9.303394556045500030e-01 5.922411084175099871e-01 1.018986776471099975e-01 1.787015080451999971e+00 2.429576396942100036e+00 2.720436811447100034e+00 +0.000000000000000000e+00 1.205309201031999969e-02 -5.399105548858600390e-01 -1.683317780494699933e+00 -8.353209495544400287e-01 -4.667427241802200033e-01 -1.419870734214800034e+00 +0.000000000000000000e+00 -8.237724006176000424e-02 -6.663007140159600272e-01 -2.225786685943599963e+00 -1.902068018913299907e+00 -1.539044141769400076e+00 -3.168885469436600211e+00 +0.000000000000000000e+00 1.848907470703100020e-01 -1.312278658151599942e-01 -1.699314951896699899e+00 -1.484541773796099973e+00 -1.032108187675500055e+00 -2.561757087707499991e+00 +0.000000000000000000e+00 5.768473744392399460e-01 2.923263013362900065e-01 -2.672056853771199725e-01 1.744666695594800032e+00 2.245767354965200191e+00 2.736454010009799820e+00 +0.000000000000000000e+00 1.481948494911200065e+00 1.407419085502600087e+00 4.985806345939600148e-01 3.526929378509500168e+00 4.295461177825900201e+00 5.539498805999800268e+00 +0.000000000000000000e+00 2.908582240342999850e-02 -3.917691409587900075e-01 -2.376981258392299790e+00 -2.659800529480000009e+00 -2.233087062835700021e+00 -4.469890594482399671e+00 +0.000000000000000000e+00 1.000268936157199917e+00 1.183680891990700035e+00 6.222181320190399711e-01 2.455036878585799887e+00 3.096368551254299994e+00 3.774561405181899865e+00 +0.000000000000000000e+00 -5.993096828460700021e-01 -9.024512171745300293e-01 -1.605637311935399936e+00 -8.787546753883399564e-01 -7.326901555061300364e-01 -1.410860657691999975e+00 +0.000000000000000000e+00 5.476267337799100021e-01 4.589929282665299870e-01 -2.290809303522099993e-01 2.004366159439099793e+00 2.478413343429600069e+00 3.170133590698199999e+00 +0.000000000000000000e+00 -1.936096348799999948e-03 -7.837106287478999567e-02 -7.105961441993700056e-01 -4.151920378208199813e-01 -4.724644497036999818e-02 -8.101489543914800473e-01 +0.000000000000000000e+00 1.933001726865800074e-01 4.576778411864999840e-02 -3.617777228355399943e-01 1.729359984397899952e+00 2.085229635238599943e+00 2.775710344314600064e+00 +0.000000000000000000e+00 3.807367384433700264e-01 1.752932667732199912e-01 -5.502113699913000477e-01 7.043923139572100256e-01 1.168980956077600109e+00 1.021579384803799950e+00 +0.000000000000000000e+00 -2.478881627321199987e-01 -4.944733679294600059e-01 -2.349747419357299805e+00 -2.586466550827000166e+00 -2.267075538635300092e+00 -4.309942722320600161e+00 +0.000000000000000000e+00 4.993934631347700104e-01 1.039873957633999924e+00 1.552246659994100109e-01 2.794080495834399880e+00 3.210062980651899878e+00 4.457359313964800229e+00 +0.000000000000000000e+00 9.158019423484800026e-01 1.316787958145100079e+00 4.594012200832400250e-01 2.767879486083999918e+00 3.351205587387100060e+00 4.324086189269999991e+00 +0.000000000000000000e+00 -7.805309295654300206e-01 -9.532249569892899954e-01 -2.136388540267899927e+00 -6.529030799865700452e-01 -6.074993610382100062e-01 -9.571921825408900020e-01 +0.000000000000000000e+00 6.976904273033099901e-01 2.475492358207700139e-01 -6.387767195701600231e-01 5.697664022445699805e-01 1.158638715743999903e+00 7.594690918922399891e-01 +0.000000000000000000e+00 8.800765872001600210e-01 7.660352587699900129e-01 1.610219329595599935e-01 2.069007873535200215e+00 2.675877571106000108e+00 3.192345142364500177e+00 +0.000000000000000000e+00 -2.614008486270900100e-01 -1.265807867050199986e+00 -2.750625133514399856e+00 -3.600657463073699827e+00 -3.231719017028800156e+00 -5.960947036743199590e+00 +0.000000000000000000e+00 8.227604031562799625e-01 8.234429359435999629e-01 -3.030046224594100113e-01 2.331759214401199820e+00 2.883958816528299884e+00 3.683164119720499841e+00 +0.000000000000000000e+00 1.012929752469099998e-01 1.604785025119800090e-01 -7.897371649742099819e-01 9.841596484184299554e-01 1.317647576332100057e+00 1.551615357398999917e+00 +0.000000000000000000e+00 7.447224855423000001e-02 -6.597946286201500365e-01 -1.434895753860500056e+00 -2.263456210494000156e-02 3.467032909393300000e-01 -6.178580224513999936e-02 +0.000000000000000000e+00 -2.184188067913100106e-01 -3.073669970035600163e-01 -1.883168101310700004e+00 -1.354379653930700034e+00 -1.067327618598900019e+00 -2.268516778945900203e+00 +0.000000000000000000e+00 6.025739908218400442e-01 1.693261116743099981e-01 -1.309584140777600103e+00 -3.894082009792300125e-01 1.821028590202299902e-01 -7.977992296218899826e-01 +0.000000000000000000e+00 8.003590106964100226e-01 1.197753429412800052e+00 -6.179687380790999801e-02 1.723660945892300012e+00 2.292798995971700116e+00 2.613662481307999830e+00 +0.000000000000000000e+00 9.829804301261899635e-01 1.273132324218799960e+00 5.556609034538300129e-01 2.620139598846400020e+00 3.241691112518299889e+00 4.058756351470900192e+00 +0.000000000000000000e+00 2.485850453376799996e-01 -5.172057151794400287e-01 -1.409394621849100027e+00 -1.077067852020300087e+00 -5.947890877723700509e-01 -1.883552432060199955e+00 +0.000000000000000000e+00 -2.231779992580399941e-01 -9.354017376899700364e-01 -1.671433448791499909e+00 -1.224617362022399902e+00 -9.172419905662499984e-01 -2.036005020141599786e+00 +0.000000000000000000e+00 9.534668177365999975e-02 -1.440704613924000121e-01 -1.664695143699600033e+00 -1.438028573989899916e+00 -1.020952701568599963e+00 -2.474483728408800154e+00 +0.000000000000000000e+00 -1.213223114609700004e-01 -4.588794410228699827e-01 -1.940664291381799966e+00 -1.643267273902899950e+00 -1.302535891532899948e+00 -2.758885383606000108e+00 +0.000000000000000000e+00 3.664675652980800002e-01 3.639294207096099854e-01 -5.682882666588000287e-02 1.967938303947400103e+00 2.382663965225200187e+00 3.119263410568200001e+00 +0.000000000000000000e+00 4.499297142028800267e-01 1.609678864479099913e-01 -3.616032898426099762e-01 1.683857321739200108e+00 2.138516187667800050e+00 2.662513017654399849e+00 +0.000000000000000000e+00 3.662305697799000254e-02 -4.268401563167599777e-01 -1.989828705787699992e+00 -1.714798212051400039e+00 -1.312004566192600086e+00 -2.896430969238299902e+00 +0.000000000000000000e+00 -2.610912919044500180e-01 -8.185088038444500169e-01 -2.563279151916499909e+00 -2.993570089340200191e+00 -2.658966302871700105e+00 -4.966510772705100329e+00 +0.000000000000000000e+00 1.504653841257100055e-01 -8.382828533649000491e-02 -1.317237854003900033e+00 7.302492856979400093e-01 1.081343770027199946e+00 1.171436309814499976e+00 +0.000000000000000000e+00 9.975835680961600005e-01 3.939091265201600245e-01 5.831771343946000330e-02 2.561715126037599877e+00 3.199541091918900015e+00 4.042367458343499642e+00 +0.000000000000000000e+00 8.890597820282000185e-01 7.420887947082499547e-01 5.614569187164299979e-01 3.025486707687400134e+00 3.608652830123900035e+00 4.783463954925499806e+00 +0.000000000000000000e+00 -2.609238922595999988e-01 -8.877681493759199682e-01 -1.589583039283799959e+00 -1.145596742629999998e+00 -8.548479676246599768e-01 -1.906562924385100111e+00 +0.000000000000000000e+00 1.477338820695900112e-01 5.901595577597999742e-02 -6.214889287948599517e-01 -3.631039559841199860e-01 6.017797067761000013e-02 -7.535530328750600360e-01 +0.000000000000000000e+00 2.615512013435399852e-01 2.949450910091400146e-01 2.949452102184300095e-01 1.855710148811299920e+00 2.250697374343900048e+00 2.913759231567400132e+00 +0.000000000000000000e+00 -1.471882611513100070e-01 -7.647664546966600474e-01 -1.934189796447800092e+00 -2.074590682983400214e+00 -1.714325308799699910e+00 -3.475017547607400115e+00 +0.000000000000000000e+00 3.781650960445400167e-01 1.329981237649900117e-01 -1.228075027465800106e+00 -2.774802148342099817e-01 2.055543512105899862e-01 -5.863170623779300206e-01 +0.000000000000000000e+00 2.509493827819799794e-01 -4.026592150331000097e-02 -1.129329681396499918e+00 6.575446128845200411e-01 1.057339549064600037e+00 1.017639636993399987e+00 +0.000000000000000000e+00 2.825647890567800080e-01 -2.023413330316500003e-01 -1.219301104545599923e+00 -6.943657994270300282e-01 -2.187015265226399940e-01 -1.268456935882599890e+00 +0.000000000000000000e+00 1.659786701202400072e-01 -1.077121794223799972e-01 -1.658749222755399932e+00 -1.445342183113099921e+00 -1.001227617263799941e+00 -2.497514009475700014e+00 +0.000000000000000000e+00 4.263334274291999959e-01 1.259358525276199903e-01 -1.018306493759199904e+00 7.244180440902699969e-01 1.188887238502499999e+00 1.093060612678500076e+00 +0.000000000000000000e+00 2.090658843517300136e-01 -1.709676533937500020e-01 -6.455327868461600005e-01 1.475891113281299960e+00 1.845095038413999911e+00 2.377839803695700027e+00 +0.000000000000000000e+00 1.372468352317800067e+00 1.841298341751099965e+00 6.750169396400500510e-01 3.097927570342999815e+00 3.836705446243299900e+00 4.787501811981200284e+00 +0.000000000000000000e+00 -2.587838768958999891e-01 -5.954003334045400164e-01 -1.599710702896099956e+00 -7.132796645164499738e-01 -4.511048495769500177e-01 -1.184975862503099941e+00 +0.000000000000000000e+00 5.828751921653699819e-01 1.777587458490999944e-02 -1.490532398223900046e+00 -5.457500815391499449e-01 2.281046286225000067e-02 -1.038366556167600097e+00 +0.000000000000000000e+00 1.133108139038099926e+00 1.129458546638500094e+00 9.836073964833999539e-02 2.410282135009799820e+00 3.086507320404099808e+00 3.730660676956199850e+00 +0.000000000000000000e+00 7.868575453758199778e-01 5.559062957763699631e-01 -5.240310728550000297e-02 1.897056698799099994e+00 2.473504543304399839e+00 2.939535856246899836e+00 +0.000000000000000000e+00 5.228714644909000092e-02 -5.062785744667099852e-01 -1.283952116966200041e+00 -9.313310980796799532e-01 -5.278319120407100051e-01 -1.623973488807699983e+00 +0.000000000000000000e+00 7.737572789192199707e-01 5.481788516044600046e-01 -4.906561076641099972e-01 9.079027175903300328e-01 1.507437229156499914e+00 1.298139095306400037e+00 +0.000000000000000000e+00 -2.058949768543200110e-01 -2.506289482116699774e-01 -1.572246313095100101e+00 -2.567830085754400082e-01 -4.608089569960000312e-03 -4.340343177318600199e-01 +0.000000000000000000e+00 1.833678930997799938e-01 -2.756142020225499922e-01 -1.199505448341400049e+00 3.867536783218399887e-01 7.771573066711400246e-01 5.825957655906699451e-01 +0.000000000000000000e+00 -1.102441474795299997e-01 -5.564969778060899763e-01 -2.127034902572599862e+00 -2.855859041213999916e+00 -2.459524631500200176e+00 -4.800461292266800406e+00 +0.000000000000000000e+00 3.063416779041300275e-01 2.393849939107899893e-01 -1.805558353662500004e-01 1.869336962699899907e+00 2.264084100723299908e+00 2.975394248962400123e+00 +0.000000000000000000e+00 -5.628359317779999677e-02 -1.003527641296400041e+00 -1.852681875228900044e+00 -1.414420843124400085e+00 -1.038156509399400074e+00 -2.359465122222899947e+00 +0.000000000000000000e+00 2.700227797031399812e-01 -3.522770106792499911e-01 -1.212472558021499891e+00 -9.069245457649199871e-01 -4.214347302913700188e-01 -1.621748447418200012e+00 +0.000000000000000000e+00 8.306793570518500314e-01 3.325586318969699917e-01 -1.706923991441700039e-01 1.563943505287199942e+00 2.175118446350099877e+00 2.388967514038100148e+00 +0.000000000000000000e+00 1.237056329846400043e-01 -1.345203369855899889e-01 -1.422603368759199904e+00 -4.040522873401600212e-01 -1.399529539048999932e-02 -7.418211698532100051e-01 +0.000000000000000000e+00 -9.689153730869000392e-02 -1.053868651390100109e+00 -2.329326391220099879e+00 -2.432595252990700008e+00 -2.042850732803299874e+00 -4.041591167450000022e+00 +0.000000000000000000e+00 2.997898161411299833e-01 -2.024931460618999979e-01 -5.472782254219099585e-01 1.325724482536299931e+00 1.742166996002199930e+00 2.104850530624399862e+00 +0.000000000000000000e+00 3.575029075145699786e-01 -1.862995475530599965e-01 -1.051763653755199979e+00 -7.805206775665299856e-01 -2.654687166213999805e-01 -1.439024329185500051e+00 +0.000000000000000000e+00 1.056085228920000008e+00 1.097378134727500010e+00 -8.832648396492000231e-02 2.479891300201400028e+00 3.116416454315200202e+00 3.875768899917599875e+00 +0.000000000000000000e+00 -2.715850770473500209e-01 -9.301761984825099860e-01 -1.883395075798000029e+00 -2.228410482406599780e+00 -1.902505397796599995e+00 -3.718298196792599875e+00 +0.000000000000000000e+00 8.728269338607800298e-01 8.792747259140000216e-01 3.087162673473399788e-01 2.200768232345600151e+00 2.801065683364900138e+00 3.399013757705700023e+00 +0.000000000000000000e+00 1.856986805797000012e-02 -4.276514351367999844e-01 -1.165095925331099957e+00 -8.203370571136500145e-01 -4.328608810901600212e-01 -1.445332884788500083e+00 +0.000000000000000000e+00 -7.227986454963699625e-01 -1.029941439628599964e+00 -2.322780370712299813e+00 -1.873813629150399951e+00 -1.754846453666699890e+00 -3.019419670105000009e+00 +0.000000000000000000e+00 -2.527359127998399790e-01 -7.007823586463900467e-01 -2.608564853668200012e+00 -2.814238786697400130e+00 -2.490087747573900057e+00 -4.664347648620600140e+00 +0.000000000000000000e+00 -9.428207278251600210e-01 -1.229981780052199936e+00 -3.133507490158100151e+00 -3.945791244506799966e+00 -3.846187353134200126e+00 -6.462288856506299695e+00 +0.000000000000000000e+00 1.197087168693500070e+00 1.175973653793300100e+00 -6.900075823069000414e-02 2.506439924240099870e+00 3.192684650421099946e+00 3.871940612792999836e+00 +0.000000000000000000e+00 1.433665305376100041e-01 -1.497931778430999956e-02 -1.036281466484100022e+00 7.934437394142199729e-01 1.145374298095700016e+00 1.225253224372899963e+00 +0.000000000000000000e+00 -7.421575188636799769e-01 -1.108858823776200042e+00 -2.032405376434299971e+00 -2.020940065383900031e+00 -1.891268968582199950e+00 -3.315450906753500071e+00 +0.000000000000000000e+00 4.113961756229400080e-01 5.852532014251000253e-02 -1.341556549072300042e+00 -3.490778207778900133e-01 1.455886662006400101e-01 -7.254630327224700359e-01 +0.000000000000000000e+00 1.033020019531299960e-01 -2.835983633995100006e-01 -1.600185275077800062e+00 -5.227329730987499978e-01 -1.400504410266900090e-01 -9.455640316009500390e-01 +0.000000000000000000e+00 2.696775794029199758e-01 1.342227607965499891e-01 -2.932147979736299814e-01 1.810901045799300002e+00 2.190351724624600038e+00 2.868277072906499914e+00 +0.000000000000000000e+00 1.093466281890900005e+00 1.170400738716099953e+00 1.726363599300400065e-01 2.517510414123500073e+00 3.172506809234600045e+00 3.882381200790399944e+00 +0.000000000000000000e+00 7.340004444122300020e-01 7.710823416709899902e-01 -1.293051391839999953e-01 2.314733028411899873e+00 2.839078187942499998e+00 3.625320196151700092e+00 +0.000000000000000000e+00 6.126465201377899739e-01 2.547127902507799746e-01 -1.207219481468200017e+00 -2.662110924720800242e-01 3.024903535842899949e-01 -6.293584108352699991e-01 +0.000000000000000000e+00 4.095778763294199987e-01 2.498929947614700053e-01 -4.158860445022600216e-01 1.898468255996700105e+00 2.320087671279900121e+00 3.005687475204500192e+00 +0.000000000000000000e+00 -4.532982707023600066e-01 -6.388128399848900241e-01 -1.980249404907199917e+00 -1.584612607955899977e+00 -1.374733209610000007e+00 -2.634799718856799977e+00 +0.000000000000000000e+00 2.853118479251899875e-01 3.337283730506899748e-01 -5.413637757301299480e-01 -6.141494587064000310e-02 3.938833773136100058e-01 -3.038679659366599894e-01 +0.000000000000000000e+00 1.043715715408300104e+00 6.807604432106000303e-01 -4.028738662601000220e-02 1.896624088287399923e+00 2.567576885223400218e+00 2.874563455581700122e+00 +0.000000000000000000e+00 -3.091232776641800184e-01 -7.040364742279100474e-01 -1.575508594512899929e+00 -1.915188670158399997e+00 -1.615683794021600006e+00 -3.245684862136799964e+00 +0.000000000000000000e+00 6.511214971542399477e-01 5.111027956008900031e-01 -6.579167842865000226e-01 1.037349939346299932e+00 1.575061440467800056e+00 1.522046804428099920e+00 +0.000000000000000000e+00 1.200902700424200109e+00 1.374341368675199959e+00 1.803351491689700048e-01 2.726019859313999927e+00 3.407349824905399949e+00 4.213739871978799734e+00 +0.000000000000000000e+00 4.583012461662300252e-01 6.109077930450399485e-01 -4.216928407550000341e-02 1.173950076103200013e+00 1.651324629783599951e+00 1.719048976898200021e+00 +0.000000000000000000e+00 5.999647378921499907e-01 8.332009315490700452e-01 -4.665613472461699884e-01 3.903290331363700183e-01 9.351854920387300263e-01 3.965793251991299728e-01 +0.000000000000000000e+00 5.060687288641999709e-02 -3.819097578525499914e-01 -8.793775439262400129e-01 2.860858440399199898e-01 6.427757143974299758e-01 3.776794075965900221e-01 +0.000000000000000000e+00 5.658870339393600180e-01 8.649836480618000589e-02 -7.682120800018300555e-01 5.134366154670699789e-01 1.050816774368299900e+00 6.712950468063400011e-01 +0.000000000000000000e+00 2.361539006233200066e-01 2.452739775180799997e-01 -9.488578438758900058e-01 1.074986696243299900e+00 1.445570349693299894e+00 1.672915935516400054e+00 +0.000000000000000000e+00 -4.284609258174900126e-01 -5.321095585823100160e-01 -8.537854552268999697e-01 -6.520604491233800148e-01 -4.338838458061199943e-01 -1.155237674713099905e+00 +0.000000000000000000e+00 3.345870077609999771e-01 2.730579972267199729e-01 -7.797888517379799600e-01 9.860047698020899531e-01 1.404981732368500102e+00 1.494073033332800060e+00 +0.000000000000000000e+00 -4.861340671778000000e-02 -5.280486941337599882e-01 -2.315967798232999808e+00 -2.778339385986300147e+00 -2.372337102889999993e+00 -4.687860012054399839e+00 +0.000000000000000000e+00 -3.945839107036600013e-01 -3.165017664432500100e-01 -1.851081728935199955e+00 -2.306116104126000099e+00 -2.045202970504799822e+00 -3.894503355026199820e+00 +0.000000000000000000e+00 -1.209810003638299991e-01 -9.467213749885600160e-01 -1.990154027938799919e+00 -2.314951181411700087e+00 -1.932401895523099933e+00 -3.900065422058100140e+00 +0.000000000000000000e+00 3.290401697158800154e-01 -9.896495193243000366e-02 -6.789188981056200056e-01 4.136315584182699845e-01 8.723762631416299707e-01 5.307561159133900031e-01 +0.000000000000000000e+00 -8.126993179321300165e-01 -1.237580776214600053e+00 -1.719605326652499988e+00 -1.127728223800700036e+00 -1.050131201744100018e+00 -1.809905886650100104e+00 +0.000000000000000000e+00 3.126544058322899833e-01 -9.562605619430999959e-02 -4.192663431167599764e-01 1.471081137657199944e+00 1.885132193565399961e+00 2.307388782501199831e+00 +0.000000000000000000e+00 6.268179416656000091e-02 -3.478663563728299768e-01 -2.150786876678500104e+00 -2.652221918106099974e+00 -2.207604169845600151e+00 -4.509502410888700297e+00 +0.000000000000000000e+00 -1.467595547437700043e-01 2.937119267880999862e-02 -1.307333588600199992e+00 -1.044706940650899973e+00 -7.340493798255900426e-01 -1.843288421630900009e+00 +0.000000000000000000e+00 9.508115053176899867e-01 5.886215567588799491e-01 8.550304174422999892e-02 1.803451299667399921e+00 2.450247049331700122e+00 2.720676422119100213e+00 +0.000000000000000000e+00 1.208738684654200091e+00 1.265612959861800002e+00 3.802692145108999694e-02 2.598913192748999901e+00 3.286903381347700215e+00 4.014231681823700271e+00 +0.000000000000000000e+00 1.055005550384499946e+00 1.474605798721299932e+00 1.442903578281400090e-01 1.894972801208500091e+00 2.552798271179200107e+00 2.816883087158200016e+00 +0.000000000000000000e+00 3.754597604274699796e-01 6.271203756332399681e-01 -6.002222299575800113e-01 3.121969401836400260e-01 7.740488648414599604e-01 3.116855025291400128e-01 +0.000000000000000000e+00 4.273253679275499928e-01 3.587661385536199954e-01 -4.005504846572899846e-01 -1.831107884645500061e-01 3.380811512470199842e-01 -5.408998131751999727e-01 +0.000000000000000000e+00 5.268179178237899496e-01 9.207289218902600103e-01 -1.159480866045000010e-02 2.676398277282700189e+00 3.103142976760899785e+00 4.247301101684599622e+00 +0.000000000000000000e+00 -3.094010055065199993e-01 -7.821288704872100261e-01 -2.110264539718599952e+00 -2.991872787475600148e+00 -2.661874294281000086e+00 -5.025692462921099946e+00 +0.000000000000000000e+00 1.187736988067600086e+00 1.504188895225500033e+00 7.320457100868199563e-01 2.774088621139500166e+00 3.465882062912000183e+00 4.243111610412600321e+00 +0.000000000000000000e+00 -1.067041158676099943e+00 -1.762996196746799971e+00 -2.733389854431199861e+00 -3.628361701965300057e+00 -3.559245824813800141e+00 -5.917454719543499664e+00 +0.000000000000000000e+00 -2.154874652624099995e-01 -4.459336400032000158e-01 -2.060688018798800147e+00 -1.477157115936299947e+00 -1.188497900962800058e+00 -2.482488870620700006e+00 +0.000000000000000000e+00 -4.903652966022499782e-01 -1.213720083236700109e+00 -2.364797353744500175e+00 -3.405349493026700092e+00 -3.123670578002899934e+00 -5.664587974548299876e+00 +0.000000000000000000e+00 -5.448664352298000085e-02 -7.197367548942600335e-01 -1.929964303970300055e+00 -2.052788257598900046e+00 -1.661010622978200013e+00 -3.478297948837299813e+00 +0.000000000000000000e+00 1.266837239265399928e+00 1.152101874351499911e+00 5.088058859109999971e-02 2.379109382629399860e+00 3.103964805602999810e+00 3.638015270233200038e+00 +0.000000000000000000e+00 3.179133236408199781e-01 4.689754545688599729e-01 -5.782185792923000278e-01 1.210503205657000036e-01 5.750140547752400355e-01 -8.075605728700000537e-04 +0.000000000000000000e+00 -4.435707926750199759e-01 -9.692803621292099825e-01 -2.271278142929099797e+00 -3.110239267349200087e+00 -2.827769041061400035e+00 -5.188198089599599605e+00 +0.000000000000000000e+00 5.814768075942999825e-01 2.064364552497900129e-01 -6.250081062316900082e-01 6.371667981147800530e-01 1.176882028579699924e+00 8.616819381713900494e-01 +0.000000000000000000e+00 1.043997779488600036e-01 -3.285979628562900046e-01 -1.468065023422199911e+00 -6.270378828048700504e-01 -2.324868142604800125e-01 -1.132282614707899926e+00 +0.000000000000000000e+00 4.915462136268600180e-01 6.889826059341399578e-01 -5.314732789993299455e-01 1.398259997367899965e+00 1.856474637985199960e+00 2.135015010833699822e+00 +0.000000000000000000e+00 6.998630166053799728e-01 2.721586823463399973e-01 -6.089789867401099732e-01 6.302646994590800356e-01 1.215144038200399956e+00 8.314336538314800462e-01 +0.000000000000000000e+00 4.772153794765500168e-01 4.045618176460299975e-01 -3.708480596542400032e-01 -1.657481044530899894e-01 3.738892674446099851e-01 -5.220345258712799641e-01 +0.000000000000000000e+00 3.183315396308900036e-01 -5.194976180791999881e-02 -3.671176433563200225e-01 1.516138434410100100e+00 1.931039810180700034e+00 2.376719474792500009e+00 +0.000000000000000000e+00 -9.627282619476000558e-02 -7.542316615581999562e-02 -1.412592887878399983e+00 -1.006887927651400061e-01 1.855328977108000044e-01 -2.306760847568500028e-01 +0.000000000000000000e+00 1.083391383290299992e-01 -4.276918768882799760e-01 -1.842047333717300006e+00 -1.783270001411400019e+00 -1.345889568328900054e+00 -3.060914516448999922e+00 +0.000000000000000000e+00 3.062289357185399852e-01 -1.814027726650200012e-01 -1.206374764442400105e+00 -6.525949239730800544e-01 -1.722180992364900076e-01 -1.229234337806700106e+00 +0.000000000000000000e+00 -5.910873413085899752e-01 -9.468667507171599773e-01 -1.856591701507599890e+00 -8.465217351913499888e-01 -7.097616791725199770e-01 -1.360092401504499948e+00 +0.000000000000000000e+00 -1.131936758756599964e-01 -3.884478509426099735e-01 -1.856155633926400039e+00 -1.535498142242400110e+00 -1.197867393493700083e+00 -2.614183902740499832e+00 +0.000000000000000000e+00 1.286534667015100109e+00 1.210583567619299972e+00 5.497332215309099768e-01 3.420622348785399947e+00 4.123379230499300441e+00 5.359978199005100308e+00 +0.000000000000000000e+00 5.341276526451099738e-01 3.266911208629599828e-01 -1.071324944496200082e+00 -1.321951746940600025e-01 4.027999639511100072e-01 -4.074423313140900227e-01 +0.000000000000000000e+00 4.176164865493799949e-01 5.293541029096000133e-02 -1.162381768226599998e+00 -4.127269685268399879e-01 9.457530826330000362e-02 -8.496235609054599847e-01 +0.000000000000000000e+00 2.939618825912500011e-01 1.916500180959699873e-01 -4.803135991096499913e-01 8.161388635635400401e-01 1.241466164588900023e+00 1.188103199005100086e+00 +0.000000000000000000e+00 7.954757809639000365e-01 8.300530910491900061e-01 -5.253868699073800386e-01 1.349564790725700014e+00 1.924625873565700029e+00 2.009053945541400044e+00 +0.000000000000000000e+00 -1.199215184896999971e-02 -1.426865011453599952e-01 -1.299680113792399894e+00 8.092240691184999779e-01 1.093262195587199948e+00 1.299310088157699994e+00 +0.000000000000000000e+00 -7.709524035453799717e-01 -1.254433035850500033e+00 -1.764703392982500008e+00 -1.174994230270399953e+00 -1.080171346664400067e+00 -1.890486359596299959e+00 +0.000000000000000000e+00 7.520316243171699666e-01 2.733618915080999745e-01 -1.016705632209800036e+00 7.024495601654100474e-01 1.288193941116299923e+00 9.831734895706200072e-01 +0.000000000000000000e+00 -8.921310305594999657e-02 1.875161081552499942e-01 -1.329337239265399928e+00 -8.535603284835799887e-01 -5.350146293640100081e-01 -1.530795454978900016e+00 +0.000000000000000000e+00 5.038713812828099492e-01 2.233193516731299955e-01 -9.390830993652300451e-01 8.151698708534199644e-01 1.303393840789800029e+00 1.199800372123700054e+00 +0.000000000000000000e+00 6.554251313209500385e-01 2.683083713054699726e-01 -5.885993242263799496e-01 6.561735868453999476e-01 1.223424196243299900e+00 8.791514635086099538e-01 +0.000000000000000000e+00 -5.322358608245799649e-01 -1.054585576057400109e+00 -1.836822152137800090e+00 -1.060350179672199911e+00 -8.866119980812100509e-01 -1.727114439010599911e+00 +0.000000000000000000e+00 6.129965782165499588e-01 5.745748430489999725e-02 -6.420141458511400279e-01 3.957141339778900146e-01 9.628273248672499784e-01 4.560793340206100166e-01 +0.000000000000000000e+00 1.685933768749199868e-01 1.343331187963499873e-01 -1.021204814314800036e-01 7.308874726295500057e-01 1.127926588058500101e+00 1.028034329414400094e+00 +0.000000000000000000e+00 7.807599306106599579e-01 4.943795502185799884e-01 -7.528144717216499471e-01 9.304552078247100289e-01 1.520502567291299956e+00 1.334011673927300023e+00 +0.000000000000000000e+00 2.297473996877699987e-01 2.184967994689900050e-01 -3.534653186798100144e-01 1.985602974891699901e+00 2.336395978927599870e+00 3.171168565750099866e+00 +0.000000000000000000e+00 2.715907692909200200e-01 -3.390448167920000200e-02 -5.637726187706000314e-01 5.255704522132900181e-01 9.592510461807299826e-01 7.147760391235400412e-01 +0.000000000000000000e+00 7.611519694328300334e-01 9.799694418907199944e-01 1.201023533940299981e-01 2.530224561691300167e+00 3.058636665344200090e+00 3.956902742385899785e+00 +0.000000000000000000e+00 8.980413675308199783e-01 3.516547083854700273e-01 -1.849427372217199994e-01 1.573932766914400094e+00 2.207338094711300158e+00 2.371435642242400110e+00 +0.000000000000000000e+00 1.237645000219299990e-01 -2.192303836345700085e-01 -1.094304561615000004e+00 5.248523354530300056e-01 8.855509757995599918e-01 7.857427000999499533e-01 +0.000000000000000000e+00 -1.709518209099999964e-02 6.629268825053999392e-02 -1.524029374122600089e+00 -1.038378357887300041e+00 -6.870850324630699557e-01 -1.830881953239400062e+00 +0.000000000000000000e+00 8.059055805206299938e-01 1.048372149467500014e+00 5.609836578369099547e-01 2.470084667205799889e+00 3.034094572067299822e+00 3.807994365692100036e+00 +0.000000000000000000e+00 1.079519152641299939e+00 9.336993098258999924e-01 -3.656469285488099796e-01 1.219320058822600084e+00 1.914466738700900006e+00 1.735314369201699902e+00 +0.000000000000000000e+00 3.192175626754800155e-01 3.772737383842499903e-01 -8.287177085876500371e-01 1.166338562965399950e+00 1.565822839736900063e+00 1.801704645156900098e+00 +0.000000000000000000e+00 -4.200733602046999859e-01 -7.885057926177999610e-01 -2.055436372757000196e+00 -2.923748970031700090e+00 -2.637759208679200107e+00 -4.901240825653100153e+00 +0.000000000000000000e+00 -2.711344957351700113e-01 -2.823733091354400093e-01 -8.163842558860799903e-01 -4.261884689331100207e-01 -1.632327884435700038e-01 -8.050140142440800339e-01 +0.000000000000000000e+00 9.632319808006299944e-01 1.298108458518999919e+00 5.983848571777300451e-01 2.695956468582199950e+00 3.304745435714699919e+00 4.158217906951899856e+00 +0.000000000000000000e+00 6.150079369544999564e-01 1.263771206140499870e-01 -7.455743551254300217e-01 5.246953368186999533e-01 1.080405712127699980e+00 6.807679533958399531e-01 +0.000000000000000000e+00 -6.072195768356299928e-01 -1.383225440978999909e+00 -2.703078985214200092e+00 -3.462569713592499987e+00 -3.232043266296400041e+00 -5.710710525512699753e+00 +0.000000000000000000e+00 7.982491254806499681e-01 9.360228776931800443e-01 6.126896739006000292e-01 2.296300649642899927e+00 2.870867729187000172e+00 3.514366626739500177e+00 +0.000000000000000000e+00 -3.856039941310899777e-01 -1.123418092727699991e+00 -2.063754320144699950e+00 -2.332889556884799820e+00 -2.050326585769699950e+00 -3.884486436843900048e+00 +0.000000000000000000e+00 -3.180551528930700145e-01 -6.883727908134500417e-01 -2.555868387222299809e+00 -2.721504926681499903e+00 -2.427914857864399867e+00 -4.531004428863499633e+00 +0.000000000000000000e+00 1.150599479675300074e+00 7.735582590103099454e-01 2.064069658517800054e-01 1.874711632728599975e+00 2.595323324203500093e+00 2.798921823501599793e+00 +0.000000000000000000e+00 8.481391072273299914e-01 9.818185567855800544e-01 6.423920989036600027e-01 2.313663244247400108e+00 2.906676054000899789e+00 3.533231973648100155e+00 +0.000000000000000000e+00 6.585568934678999453e-02 4.166139960288999800e-01 -3.887077867984800039e-01 2.425272703170799904e+00 2.684218168258699855e+00 3.931548357009900130e+00 +0.000000000000000000e+00 -1.131936758756599964e-01 -3.884478509426099735e-01 -1.856155633926400039e+00 -1.535498142242400110e+00 -1.197867393493700083e+00 -2.614183902740499832e+00 +0.000000000000000000e+00 1.389217525720599922e-01 -2.095102667808499963e-01 -7.110008001327500216e-01 4.191147685050999883e-01 8.054918646812400107e-01 5.705977678299000155e-01 +0.000000000000000000e+00 7.718625664710999645e-01 4.655414819717400010e-01 -1.030424237251299946e+00 -1.383593380451199895e-01 4.871082901954699729e-01 -4.561829566955600268e-01 +0.000000000000000000e+00 7.897210717201199603e-01 5.494883060455300061e-01 -7.443441152572599639e-01 -1.096408516168600050e-01 5.302057862281800427e-01 -4.382149279117599772e-01 +0.000000000000000000e+00 -4.569820687174999674e-02 5.159531533718000190e-02 -8.443968892097499790e-01 9.965873956680300072e-01 1.270821809768700072e+00 1.573165774345399948e+00 +0.000000000000000000e+00 1.742557764053300096e+00 2.237185239791899871e+00 1.402302265167199913e+00 4.313457965850799880e+00 5.155111312866200279e+00 6.701146125793499664e+00 +0.000000000000000000e+00 1.087212637066800047e-01 4.875934123992899938e-01 -8.152915239334099784e-01 3.904860615730300077e-01 7.403307557106000303e-01 5.015541315078699824e-01 +0.000000000000000000e+00 2.274153828620900097e-01 3.728387355804400061e-01 -1.084565520286600027e+00 -9.144867658615100092e-01 -4.654883742332500129e-01 -1.701798796653700041e+00 +0.000000000000000000e+00 3.796379864215900235e-01 -3.062167577446000058e-02 -1.492836594581600007e+00 -1.523050189018199996e+00 -9.901698231697100283e-01 -2.699763059616099969e+00 +0.000000000000000000e+00 8.920664191246000518e-01 4.747004806995400172e-01 -2.553987316787000028e-02 1.715809345245399964e+00 2.342833280563399789e+00 2.593670368194600062e+00 +0.000000000000000000e+00 8.329199254513000583e-02 8.607039600610999486e-02 -5.508922338485700010e-01 -2.201512455940199953e-01 1.683825850486800058e-01 -5.640628337860099650e-01 +0.000000000000000000e+00 7.033156752586400273e-01 1.089560866355899993e+00 4.565465822815999858e-02 1.684148430824299991e+00 2.219872951507599890e+00 2.500092267990099870e+00 +0.000000000000000000e+00 -1.109808459878000031e-01 -5.325422883033800181e-01 -2.040275812148999890e+00 -1.663978099823000045e+00 -1.324847936630199952e+00 -2.836930751800499806e+00 +0.000000000000000000e+00 8.590164780616800222e-01 1.456191658973700065e+00 4.782918691635100195e-01 3.084616184234600045e+00 3.622636795043900015e+00 4.807204246520999646e+00 +0.000000000000000000e+00 -7.446423768997200154e-01 -9.681692719459500385e-01 -9.809801578521699650e-01 1.515537947416299991e-01 2.154638320207599989e-01 2.528673410415600009e-01 +0.000000000000000000e+00 3.819491267204300211e-01 2.709577977657299797e-01 -1.491551280021699899e+00 -1.046119332313500072e+00 -5.461057424545300298e-01 -1.930653572082499991e+00 +0.000000000000000000e+00 3.971634805202500229e-01 2.189939022064200103e-01 -1.566083669662500011e+00 -1.114666581153900049e+00 -6.068878173828099465e-01 -2.040054798126199831e+00 +0.000000000000000000e+00 8.795562386512799646e-01 1.132951140403700041e+00 -2.456229180097599940e-01 5.703222155571000540e-01 1.213088631629900105e+00 6.092325448989900361e-01 +0.000000000000000000e+00 3.150258585810999934e-02 -2.814305126666999946e-01 -1.802894830703700046e+00 -1.479629158973700065e+00 -1.091725468635599938e+00 -2.572896003723100122e+00 +0.000000000000000000e+00 6.767450571060199538e-01 1.183557629585300086e+00 4.260394871234899905e-01 2.850062847137500022e+00 3.334081649780300083e+00 4.447547912597699771e+00 +0.000000000000000000e+00 8.675760626792899943e-01 9.615579843521100400e-01 3.609189018607000116e-02 2.471639633178699835e+00 3.039105653762800063e+00 3.826002836227400117e+00 +0.000000000000000000e+00 1.258136391639699925e+00 1.822557091713000066e+00 7.159112095832800282e-01 3.223517656326300163e+00 3.909101963043200012e+00 4.958126544952399684e+00 +0.000000000000000000e+00 -2.646623849868799949e-01 -1.541386097669600053e-01 -1.719250440597499985e+00 -2.178210973739600043e+00 -1.874724149703999920e+00 -3.738445997238200036e+00 +0.000000000000000000e+00 -1.395873725414299993e-01 -2.369047254323999874e-01 -1.079789042472800054e+00 -1.472879052162199942e+00 -1.124866843223599977e+00 -2.605844974517800061e+00 +0.000000000000000000e+00 9.179324507713300108e-01 9.040511846542399477e-01 3.141510486602799856e-01 2.266668558120700006e+00 2.876058101654099808e+00 3.450313806533800154e+00 +0.000000000000000000e+00 1.837152838706999913e-01 -3.244295716285700015e-01 -1.128440737724299980e+00 -7.482132911682100040e-01 -3.062331080436699882e-01 -1.404084682464600053e+00 +0.000000000000000000e+00 -2.320609241724000127e-01 -1.889152824879000020e-02 -1.756105303764299963e+00 -1.995745658874499950e+00 -1.693593382835399952e+00 -3.435385465621899836e+00 +0.000000000000000000e+00 6.122115850448599517e-01 5.972886085510300536e-01 -7.727987766265900227e-01 1.521876901388199976e-01 7.055329084396400052e-01 1.168100628999999913e-03 +0.000000000000000000e+00 8.049111366272000412e-01 6.880788207054100436e-01 -5.211265087127699980e-01 1.165389418601999960e+00 1.754735946655300083e+00 1.674385428428599942e+00 +0.000000000000000000e+00 3.052768707275400062e-01 1.571946591138800031e-01 -7.767041921615599476e-01 -2.383003085851700120e-01 2.266428470611600021e-01 -6.050230264663699620e-01 +0.000000000000000000e+00 2.080169767141299975e-01 2.005595862865399981e-01 -4.766361713409399958e-01 -1.767445206642200006e-01 2.579029202461199932e-01 -5.168995857238799507e-01 +0.000000000000000000e+00 4.257457256317099814e-01 4.356186687946300151e-01 -3.795674741268200147e-01 2.183059215545700038e+00 2.591078042983999907e+00 3.448691368102999810e+00 +0.000000000000000000e+00 1.886540651321400031e-01 6.572407204659999613e-03 -1.962981462478599948e+00 -2.253345251083399781e+00 -1.783935785293599974e+00 -3.906346559524500162e+00 +0.000000000000000000e+00 4.944736361503599964e-01 9.109234809875500494e-01 3.737870752811400243e-01 2.615509510040300079e+00 3.045526504516599786e+00 4.087891578674300419e+00 +0.000000000000000000e+00 -6.347682327032000416e-02 -8.785051107407000626e-02 -1.995676875114400062e+00 -3.283355951309200105e+00 -2.863604307174699937e+00 -5.619873046875000000e+00 +0.000000000000000000e+00 5.912076830864000376e-01 2.666841447353400230e-01 -1.180022954940799895e+00 -2.038100212812400114e-01 3.518755435943600185e-01 -5.505404472351099754e-01 +0.000000000000000000e+00 1.058926463127100037e+00 1.442119121551499905e+00 1.162306904792800077e+00 3.815992116928100142e+00 4.426206588745100312e+00 5.968103408813499655e+00 +0.000000000000000000e+00 6.269313097000099866e-01 5.019067525863599721e-01 -6.559938192367600340e-01 1.077914357185399963e+00 1.602197766303999904e+00 1.567264199256900081e+00 +0.000000000000000000e+00 -4.565658867359200235e-01 -2.249720692634600006e-01 -1.889766216278099931e+00 -2.073877811431899865e+00 -1.854730010032699994e+00 -3.520279407501199831e+00 +0.000000000000000000e+00 -1.792404428124000013e-02 -2.702161967754400096e-01 -1.950377345085100078e+00 -1.380296826362600093e+00 -1.022473335266099959e+00 -2.385977745056199861e+00 +0.000000000000000000e+00 1.008835792541499909e+00 8.652286529541000082e-01 -1.663424372672999973e-01 2.267681360244799826e+00 2.894710540771499918e+00 3.484688043594399876e+00 +0.000000000000000000e+00 1.867334991693500035e-01 -1.408736705779999876e-01 -1.466825366020199972e+00 -3.852063417434700154e-01 2.211365662515000011e-02 -7.668507099151600226e-01 +0.000000000000000000e+00 2.909058034420000105e-01 7.019876968120000379e-03 -7.128326296806299922e-01 6.458414793014499722e-01 1.071879148483299904e+00 9.010108709335300503e-01 +0.000000000000000000e+00 4.484492242336299839e-01 2.755278050899500064e-01 -1.523560047149699948e+00 -1.086226224899299986e+00 -5.597928762435899763e-01 -2.004143714904799811e+00 +0.000000000000000000e+00 -6.233164072036699865e-01 -8.852386474609400535e-01 -2.442310094833399781e+00 -2.753140926361099972e+00 -2.569211006164600075e+00 -4.575998783111599799e+00 +0.000000000000000000e+00 3.304319828748999988e-02 -2.107244431972500054e-01 -4.064164459705399968e-01 1.566739916801499932e+00 1.868754982948299892e+00 2.480562448501599793e+00 +0.000000000000000000e+00 -1.121534705161999934e+00 -1.506964921951299941e+00 -2.947360515594500185e+00 -3.110655546188399789e+00 -3.105591773986799975e+00 -5.051530361175499806e+00 +0.000000000000000000e+00 3.503129482269299877e-01 5.313396453857399671e-01 -2.153246849775299898e-01 2.341568470001199831e+00 2.716343164443999925e+00 3.708295822143599985e+00 +0.000000000000000000e+00 1.142678558826400043e-01 3.382120728492700179e-01 -1.925110220909100056e-01 1.136909604072600111e+00 1.481626152992199907e+00 1.695885896682699956e+00 +0.000000000000000000e+00 8.094283938407900170e-01 6.072634458541900093e-01 -8.159561157226600248e-01 1.124961018562300019e+00 1.708766341209400075e+00 1.634473323821999946e+00 +0.000000000000000000e+00 7.365164160728500109e-01 6.689329743385300509e-01 -5.065211057663000505e-01 1.190459728241000104e+00 1.753102660179099992e+00 1.724738359451299941e+00 +0.000000000000000000e+00 9.134390354156499692e-01 1.198830962181099968e+00 1.210541278123900000e-01 2.759356498718299910e+00 3.327474355697599862e+00 4.291016578674300419e+00 +0.000000000000000000e+00 8.847827911376999754e-01 1.017980337142899927e+00 -3.380557894706699984e-01 1.533723235130300067e+00 2.134301900863599943e+00 2.259521007537800052e+00 +0.000000000000000000e+00 6.510024070739699464e-01 7.405400872230499809e-01 -5.569189786910999640e-01 1.381975054740899989e+00 1.898159861564600037e+00 2.061352252960200193e+00 +0.000000000000000000e+00 8.606420755386400279e-01 1.339297056198099911e+00 8.305586129427000586e-02 1.910020470619200106e+00 2.490524053573599961e+00 2.850316047668500108e+00 +0.000000000000000000e+00 3.074469268321999849e-01 4.894062280654900010e-01 -9.824367165565499604e-01 -8.039443492889399856e-01 -3.308177590370199872e-01 -1.564606666564900106e+00 +0.000000000000000000e+00 6.614321470260600133e-01 9.588590860366800195e-01 5.294515490531900292e-01 2.502494812011700098e+00 3.007628440856899843e+00 3.860292434692400132e+00 +0.000000000000000000e+00 1.084485888481099947e+00 1.109206080436700104e+00 9.998548775910999498e-02 2.489491701126099965e+00 3.138824701309200105e+00 3.818142414092999815e+00 +0.000000000000000000e+00 -1.484590768814099959e-01 -3.171055912971499913e-01 -8.177129030227699991e-01 1.677343487739600070e+00 1.890359759330699996e+00 2.730673789977999810e+00 +0.000000000000000000e+00 8.014389276504499948e-01 5.544754266738900483e-01 -3.089485168457000164e-01 9.117969274520899559e-01 1.524031519889800013e+00 1.231732130050700036e+00 +0.000000000000000000e+00 5.528911352157600545e-01 4.393279552459700144e-01 -6.932466030120799649e-01 1.058178424835199971e+00 1.554912686348000062e+00 1.548672556877100037e+00 +0.000000000000000000e+00 9.959635734558099918e-01 6.989195346832299816e-01 -2.363920807838399973e-01 9.412842392921400014e-01 1.626546382904100030e+00 1.245700597763099937e+00 +0.000000000000000000e+00 -4.936826415359999928e-03 -1.841331720352200052e-01 -1.904924273490899989e+00 -2.388439416885399957e+00 -1.980213522911099977e+00 -4.109036922454800234e+00 +0.000000000000000000e+00 6.139638274907999876e-02 -2.434995174408000063e-01 -9.564667344093300549e-01 -5.399709343910199522e-01 -1.535486727952999897e-01 -1.081229090690599914e+00 +0.000000000000000000e+00 -4.252098202705399954e-01 -6.518970727920500030e-01 -2.449046134948699827e+00 -2.538952112197899957e+00 -2.297480583190900205e+00 -4.272729396820100334e+00 +0.000000000000000000e+00 -1.674529723823000096e-02 -4.135883748531299919e-01 -1.563599586486799975e+00 -1.666738867759699927e+00 -1.277944803237899940e+00 -2.926525115966799984e+00 +0.000000000000000000e+00 -3.889548778533900020e-01 -8.178914189338699625e-01 -2.300519227981599801e+00 -2.855840682983400214e+00 -2.574557781219500185e+00 -4.820629119872999802e+00 +0.000000000000000000e+00 -8.584395051003000654e-02 2.794018089771300173e-01 -4.767772853374500075e-01 2.443586587905900220e+00 2.638255119323699827e+00 3.941030025482199939e+00 +0.000000000000000000e+00 1.555366516113299902e+00 1.835600495338399973e+00 1.568612217903099904e+00 3.900333404541000082e+00 4.702019691467300255e+00 5.972022533416700085e+00 +0.000000000000000000e+00 2.843073606491099969e-01 -1.874741911888000087e-02 -1.613725423812899962e+00 -1.322934627533000063e+00 -8.466194868087799641e-01 -2.392167568206799988e+00 +0.000000000000000000e+00 -5.852763652801500349e-01 -9.932612180709800009e-01 -1.539458751678500104e+00 -9.399265646934500396e-01 -7.875245809555100340e-01 -1.598512172698999922e+00 +0.000000000000000000e+00 7.661643028259299548e-01 8.653074502944899660e-01 -2.846147492527999895e-02 2.467218399047899968e+00 2.993230819702100032e+00 3.813776254653900022e+00 +0.000000000000000000e+00 4.389998316764799902e-01 3.851468563079800123e-01 1.181317195296300027e-01 1.992455005645799915e+00 2.433253049850499838e+00 3.055612087249799824e+00 +0.000000000000000000e+00 9.563365578651400467e-01 1.483307719230700039e+00 6.469779014587400123e-01 3.030055999755899787e+00 3.611984968185399936e+00 4.660201072692900404e+00 +0.000000000000000000e+00 1.100750446319600062e+00 9.042033553123499656e-01 -1.693464666604999891e-01 2.283237218856799977e+00 2.941660881042500009e+00 3.471796274185200204e+00 +0.000000000000000000e+00 7.044633626937899518e-01 9.511042833328200441e-01 -7.440535724162999909e-02 2.658431768417400143e+00 3.147039175033599978e+00 4.145999908447300264e+00 +0.000000000000000000e+00 2.006002962589299998e-01 -1.556970924139000068e-01 -1.739775657653799934e+00 -1.419392824173000056e+00 -9.720748066902199502e-01 -2.528813600540200213e+00 +0.000000000000000000e+00 -1.960829347372100018e-01 -3.652373552322399908e-01 -9.644471406936599989e-01 -5.012127757072399881e-01 -2.137067615985900060e-01 -9.784096479415900216e-01 +0.000000000000000000e+00 1.335044026374800019e+00 1.523618936538700064e+00 4.828058481216400133e-01 2.817653894424399841e+00 3.549575328826899856e+00 4.266637802124000345e+00 +0.000000000000000000e+00 7.368983030319200545e-01 5.503646731376600210e-01 -9.033409953117399471e-01 4.924817383288999928e-02 6.498693227767899927e-01 -2.019067853689200109e-01 +0.000000000000000000e+00 3.507354855537000299e-02 -1.166619583964299961e-01 -1.350083708763099910e+00 -2.205351740121800075e-01 1.213457360863700041e-01 -5.071136951446499896e-01 +0.000000000000000000e+00 4.705098271369900220e-01 2.135824114084199921e-01 -5.532049536705000436e-01 7.894625067710899780e-01 1.276488184928900038e+00 1.073399543762199926e+00 +0.000000000000000000e+00 7.145431041717500431e-01 1.366678595542899943e+00 4.467597901821099837e-01 3.117026329040499810e+00 3.596170902252199930e+00 4.859502315521200266e+00 +0.000000000000000000e+00 1.004601001739499955e+00 1.645998001098599950e+00 1.071916341781600002e+00 4.222014427185100338e+00 4.779905796050999633e+00 6.635954856872600338e+00 +0.000000000000000000e+00 6.055572628974900118e-01 6.437774896621699661e-01 -2.180338650941799905e-01 2.328326940536499912e+00 2.797364950180099896e+00 3.623613834381099963e+00 +0.000000000000000000e+00 4.797707498073600085e-01 2.761524617671999859e-01 -1.048532962799100021e+00 1.012717962264999993e+00 1.471504807472199916e+00 1.491668581962600104e+00 +0.000000000000000000e+00 3.589495122432699858e-01 5.297231674194300410e-01 -6.583552956581100180e-01 1.378888964653000038e+00 1.781174302101099949e+00 2.082584619522100056e+00 +0.000000000000000000e+00 3.831592500209800023e-01 2.176152318716000067e-01 -4.984362721443200139e-01 8.533846735954300211e-01 1.305381178855899993e+00 1.187460541725199992e+00 +0.000000000000000000e+00 6.732126474380499825e-01 8.262492418289200113e-01 -2.514260634779999851e-02 2.486687183380099864e+00 2.976831436157199917e+00 3.859435558319099790e+00 +0.000000000000000000e+00 3.753172457218200142e-01 2.278310358524300028e-01 -1.542629361152600076e+00 -1.055498838424699937e+00 -5.607969760894799816e-01 -1.966211915016200074e+00 +0.000000000000000000e+00 2.916560769081100180e-01 2.431458234787000072e-01 -6.038486361503599964e-01 9.973668456077600109e-01 1.402008056640599909e+00 1.450933694839499966e+00 +0.000000000000000000e+00 1.879184991121299886e-01 4.227910339832299802e-01 -9.991175532341000087e-01 -7.628527283668500303e-01 -3.393796682357799743e-01 -1.502875924110399941e+00 +0.000000000000000000e+00 4.910439848899800230e-01 3.094365298748000259e-01 -8.229433298110999662e-01 9.891718626022300009e-01 1.461351394653300106e+00 1.429215788841200041e+00 +0.000000000000000000e+00 5.768146738410000196e-02 -4.272606670856500255e-01 -1.131034135818500097e+00 3.524646162986799780e-01 6.953597664833099934e-01 4.598629474639899795e-01 +0.000000000000000000e+00 7.688279747963000510e-01 8.858004212379499975e-01 -3.993177786469999900e-03 2.488359451293900015e+00 3.014770746231099974e+00 3.846306324005099864e+00 +0.000000000000000000e+00 8.392369151115399717e-01 7.375964522361799780e-01 -2.882282137870800232e-01 1.178760528564499976e+00 1.786120653152500015e+00 1.643686652183500074e+00 +0.000000000000000000e+00 6.116245985031100174e-01 5.610550642013499845e-01 -5.724688768386799742e-01 1.188984036445599912e+00 1.701170086860700037e+00 1.720969676971400020e+00 +0.000000000000000000e+00 6.586222052574199903e-01 1.091639161109899891e+00 7.352740317582999452e-02 1.751284122466999937e+00 2.265023231506300139e+00 2.590121030807500002e+00 +0.000000000000000000e+00 4.856328368187000089e-01 8.144596815109299559e-01 -4.256670773029300192e-01 5.159190893173200010e-01 1.007581949233999907e+00 5.672042369842500431e-01 +0.000000000000000000e+00 6.666287183761600010e-01 1.006733059883099912e+00 5.870267152786300402e-01 2.586993217468299910e+00 3.088586807251000099e+00 3.969186544418299878e+00 +0.000000000000000000e+00 -9.980738162994000351e-02 -1.087032072246000083e-02 -8.931739330291700307e-01 1.032249212264999993e+00 1.278769612312300019e+00 1.593639135360700010e+00 +0.000000000000000000e+00 3.797697722911799745e-01 -3.959797322749999959e-02 -1.202219128608700061e+00 6.739231944084199677e-01 1.112976551055899987e+00 9.559110999107399698e-01 +0.000000000000000000e+00 8.119615912437400107e-01 4.743117392063099791e-01 -4.167364537715900208e-01 8.492689728736899646e-01 1.464247703552199908e+00 1.110467433929400061e+00 +0.000000000000000000e+00 6.413336992263799496e-01 1.181090593338000039e+00 6.970156449819999746e-03 1.916386723518400004e+00 2.410345792770399953e+00 2.874316215515099859e+00 +0.000000000000000000e+00 2.418310344219199992e-01 -3.455339372158099942e-01 -2.003902673721300154e+00 -1.660053253173799925e+00 -1.190100312233000057e+00 -2.910900592803999931e+00 +0.000000000000000000e+00 -8.277782052755000564e-02 -4.937863945961000200e-01 -1.135534286498999901e+00 3.734782934188800030e-01 6.624166965484600267e-01 5.157505869865399717e-01 +0.000000000000000000e+00 3.434477746486699901e-01 1.207259446382499962e-01 -8.448094725608800148e-01 -2.706922292709399991e-01 2.066227346658700004e-01 -6.838421821594200534e-01 +0.000000000000000000e+00 1.084894299507100035e+00 1.120242834091200068e+00 1.135775670409199939e-01 2.535988092422500007e+00 3.181063890457199950e+00 3.868561744689900106e+00 +0.000000000000000000e+00 -5.029286146163900462e-01 -1.165183663368200007e+00 -2.050350666046099946e+00 -2.231051683425900212e+00 -2.002130508422899968e+00 -3.750409841537500011e+00 +0.000000000000000000e+00 -1.520293951034500102e-01 9.767595678568000150e-02 -1.653976559638999921e+00 -1.885203242301900062e+00 -1.558922767639199902e+00 -3.298193454742400110e+00 +0.000000000000000000e+00 5.234308242797900412e-01 9.975807070732100046e-01 -4.049467444419900253e-01 7.828826904296900535e-01 1.269671082496599990e+00 9.791587591171300176e-01 +0.000000000000000000e+00 -5.237248539924600488e-01 -7.258619070053099476e-01 -2.486990690231300150e+00 -2.520382881164600075e+00 -2.319931030273400197e+00 -4.249579906463599954e+00 +0.000000000000000000e+00 -5.302110686897999747e-02 2.810135483741800222e-01 -9.857703447341900072e-01 3.723497092723799806e-01 6.520948410034199672e-01 4.338233172893499745e-01 +0.000000000000000000e+00 -5.159823894500700225e-01 -8.887549638748200032e-01 -2.508121490478500082e+00 -2.761249065399200120e+00 -2.542447328567499998e+00 -4.650354862213100127e+00 +0.000000000000000000e+00 1.758265048265499897e-01 5.601164102554300195e-01 -1.008099675178500076e+00 -5.132517814636200493e-01 -1.130986958742099951e-01 -1.109786629676799974e+00 +0.000000000000000000e+00 1.630859524011600004e-01 -1.293220221996299879e-01 -8.696799874305699563e-01 -4.468345642089799896e-01 -2.755367383361000122e-02 -9.747457504272499795e-01 +0.000000000000000000e+00 -1.768261641264000095e-01 -1.953600645065300123e-01 -7.038736343383800165e-01 8.060935139656100201e-01 1.043708562851000110e+00 1.183854579925500028e+00 +0.000000000000000000e+00 -3.343414068221999824e-01 -4.519573748111699873e-01 -2.247372388839699919e+00 -2.342401504516599786e+00 -2.075178623199500194e+00 -4.003194332122800070e+00 +0.000000000000000000e+00 -4.250005483627299907e-01 -3.439777195453599945e-01 -1.812827110290500032e+00 -1.117240786552399889e+00 -9.277819395065299846e-01 -1.952798008918799955e+00 +0.000000000000000000e+00 7.595498561859099773e-01 1.044773936271699899e+00 1.287221722305000038e-02 2.760293006897000190e+00 3.263805866241499931e+00 4.273759365081800432e+00 +0.000000000000000000e+00 3.491659164428699835e-01 6.400405764579799595e-01 5.630015954374999881e-02 1.384038567543000031e+00 1.804679512977600098e+00 1.998567938804600042e+00 +0.000000000000000000e+00 5.692508071661000341e-02 -2.529019117355300050e-01 -1.837820172309899913e+00 -2.491864681243900037e+00 -2.054846286773699848e+00 -4.348430156707800087e+00 +0.000000000000000000e+00 6.638187766075099860e-01 1.139513134956400053e+00 1.311025619506800133e-01 1.835782527923599972e+00 2.345981597900399951e+00 2.699015140533400192e+00 +0.000000000000000000e+00 -4.820985794067400021e-01 -7.436420321464499716e-01 -2.533196687698399785e+00 -2.568606138229399871e+00 -2.350946664810200204e+00 -4.331633567810100338e+00 +0.000000000000000000e+00 5.580079555511500145e-01 8.186779022216800206e-01 -2.718322575092300131e-01 4.526775479316699768e-01 9.790259599685700032e-01 4.107685387134599742e-01 +0.000000000000000000e+00 2.967787086963700194e-01 4.369541406631500258e-01 -9.869060516357399671e-01 3.091138601303100031e-01 7.235488891601600248e-01 2.776371836662300252e-01 +0.000000000000000000e+00 2.690937817096700213e-01 2.464738339185700011e-01 -5.869721174240100092e-01 1.050851225853000059e+00 1.442308306693999898e+00 1.516031503677399916e+00 +0.000000000000000000e+00 4.147188663482699877e-01 7.132794260978699841e-01 5.477958321571400058e-01 2.410894393920900214e+00 2.827277898788500110e+00 3.690126419067400132e+00 +0.000000000000000000e+00 5.057995393872000145e-02 -2.581341750919999983e-02 -1.925890207290599898e+00 -2.126890897750899789e+00 -1.719717502593999914e+00 -3.730465888977100075e+00 +0.000000000000000000e+00 9.443939924240100092e-01 8.922830820083600400e-01 -9.574574232101000504e-02 2.410634040832499991e+00 3.002915143966700118e+00 3.674178123474100222e+00 +0.000000000000000000e+00 7.359367012977600098e-01 1.018289685249299970e+00 -6.358966231345999920e-02 1.650964498519899903e+00 2.193911314010600133e+00 2.398928642272899925e+00 +0.000000000000000000e+00 8.907096982002300489e-01 9.466975331306499708e-01 2.498668581247300013e-01 3.550654888153100153e+00 4.081682682037399701e+00 5.585716724395799915e+00 +0.000000000000000000e+00 4.545955955982199925e-01 4.145597219467199723e-01 -9.152144193649299764e-01 1.235456764697999976e-01 6.117277741432199933e-01 -6.160227581858999935e-02 +0.000000000000000000e+00 1.061313152313200003e+00 1.622773051261900079e+00 7.639579176902799862e-01 3.149279594421400041e+00 3.764559507370000002e+00 4.806826114654500159e+00 +0.000000000000000000e+00 6.838766336441000071e-01 6.402823925018300555e-01 1.124404370784800045e-01 2.199245929717999815e+00 2.715563774108900041e+00 3.339647054672199911e+00 +0.000000000000000000e+00 4.330271780490900224e-01 1.192246749997099980e-01 -1.523505091667199940e+00 -1.235132217407199917e+00 -7.079414129257199928e-01 -2.301742792129500170e+00 +0.000000000000000000e+00 4.728796780109399966e-01 5.156135559082000164e-01 -5.513803958892800061e-01 1.266859292983999907e+00 1.721027016639699925e+00 1.843225955963099905e+00 +0.000000000000000000e+00 1.089980155229599984e-01 4.065168499946599789e-01 -5.391539931297300026e-01 2.964133322238899915e-01 6.567527055740399744e-01 2.409808486700099894e-01 +0.000000000000000000e+00 5.618916153907800304e-01 6.933757066726700113e-01 -3.766007423400900000e-01 1.405420422553999904e+00 1.889379858970599901e+00 2.044656991958599956e+00 +0.000000000000000000e+00 1.796592026948899967e-01 8.256225287913999955e-02 -1.615756034851099976e+00 -1.050726294517499992e+00 -6.335399746894799788e-01 -1.948589444160500062e+00 +0.000000000000000000e+00 2.300924658775299891e-01 -3.123799860477399770e-01 -1.765565633773799936e+00 -1.633682250976600026e+00 -1.163588285446200077e+00 -2.913745164871199833e+00 +0.000000000000000000e+00 -4.143128097057299786e-01 -8.360711932182299799e-01 -2.309322595596300154e+00 -2.824543952941899860e+00 -2.556864023208599956e+00 -4.789672374725300052e+00 +0.000000000000000000e+00 4.867805242538499888e-01 6.760031580925000005e-01 -5.457270741462699748e-01 1.490202426910399947e+00 1.934748291969299983e+00 2.213111877441400033e+00 +0.000000000000000000e+00 1.161093115806600018e+00 1.714364409446700099e+00 8.233627080917399477e-01 3.184005022048999933e+00 3.836175918579099786e+00 4.844556331634500168e+00 +0.000000000000000000e+00 1.802006512880300060e-01 1.626835018396400045e-01 -1.078577637672399891e+00 2.805087901652000143e-02 4.147830009460399814e-01 -1.653614193201100036e-01 +0.000000000000000000e+00 2.372790127992600029e-01 1.878262907266599890e-01 -1.515049457549999978e+00 -9.720149636268600180e-01 -5.352254509925800097e-01 -1.835325479507400104e+00 +0.000000000000000000e+00 -3.814175426959999782e-01 -4.761049449443799930e-01 -2.251227378845200189e+00 -2.337431669235200182e+00 -2.088232517242400110e+00 -3.987695932388299891e+00 +0.000000000000000000e+00 -5.848207697272000266e-02 -1.128594130277599944e-01 -1.538352966308599967e+00 -1.160804510116600019e+00 -8.224475383758500513e-01 -2.104935884475700014e+00 +0.000000000000000000e+00 8.444646000862100488e-01 1.529041767120399964e+00 5.785909891128500071e-01 3.244931459426899867e+00 3.766649723052999832e+00 5.015559673309300415e+00 +0.000000000000000000e+00 1.183890938758900058e+00 1.382716178893999892e+00 3.899154663085899752e-01 2.797049760818500097e+00 3.469094276428200008e+00 4.237361431121800415e+00 +0.000000000000000000e+00 5.145156756042999768e-02 2.483719289302800115e-01 -5.171503424644500191e-01 1.052667275071099973e-01 4.577179253101300027e-01 -7.151220738888000583e-02 +0.000000000000000000e+00 8.842748403549199887e-01 1.159263134002699980e+00 8.712825179100000539e-02 2.803699731826799990e+00 3.353326082229600047e+00 4.320922374725300052e+00 +0.000000000000000000e+00 -9.035441279410999504e-02 -3.184528350830099774e-01 -2.027005434036300180e+00 -2.411962985992400110e+00 -2.041626930236799975e+00 -4.175707817077600303e+00 +0.000000000000000000e+00 1.145801320672000002e-02 -1.577799171209300078e-01 -2.070967435836799986e+00 -2.248089313507100062e+00 -1.852262139320399958e+00 -3.913031578063999927e+00 +0.000000000000000000e+00 1.470486402511600010e+00 1.404261708259600061e+00 3.106196224689499741e-01 3.721997499465900194e+00 4.459835529327399684e+00 5.781374454498299897e+00 +0.000000000000000000e+00 -4.538292288780200190e-01 -2.415733635425600101e-01 -1.722909808158900047e+00 -2.078665018081700122e+00 -1.856039881706200045e+00 -3.596118927002000198e+00 +0.000000000000000000e+00 6.560577154159500379e-01 6.658216118812599893e-01 -9.009684324264499722e-01 3.211106359958599832e-01 8.716553449630699557e-01 2.372134923934899886e-01 +0.000000000000000000e+00 7.619731426239000349e-01 1.347999095916700085e+00 5.857434272766099959e-01 3.045103549957299816e+00 3.549710750579799790e+00 4.693634033203100131e+00 +0.000000000000000000e+00 3.886261284351300027e-01 4.675171971321099851e-01 -1.000367879867599896e+00 2.808814346790299843e-01 7.310191392898599538e-01 2.184929400682399936e-01 +0.000000000000000000e+00 -3.138990700245000015e-02 2.645844817161600027e-01 -1.075203299522399902e+00 -7.564864754676799974e-01 -4.195578992366800208e-01 -1.478875637054400061e+00 +0.000000000000000000e+00 1.031301617622399913e+00 8.175653219223000256e-01 -1.063905581831900010e-01 1.118962287902800057e+00 1.806367278099100027e+00 1.472921371460000017e+00 +0.000000000000000000e+00 4.344507679343000139e-02 3.332779705524400171e-01 -1.030649662017800061e+00 -7.304424047470100545e-01 -3.658456802368200145e-01 -1.450577735900900000e+00 +0.000000000000000000e+00 -6.035602688789399872e-01 -9.570178985595699794e-01 -1.483282089233399992e+00 -8.524861335754400082e-01 -7.126274704933199811e-01 -1.481165528297399891e+00 +0.000000000000000000e+00 -5.435927584767000220e-02 -7.246326655149000484e-02 -9.200851321220400170e-01 -1.277838230133099939e+00 -9.092378020286600027e-01 -2.359758853912400145e+00 +0.000000000000000000e+00 1.214790120720899980e-01 -3.650401532650000003e-01 -2.150185346603400216e+00 -1.512480616569499947e+00 -1.104008793830900004e+00 -2.659102916717499987e+00 +0.000000000000000000e+00 1.384244859218599910e-01 1.396979689598099872e-01 -8.378676772117600313e-01 1.073284268379200102e+00 1.406033277511600010e+00 1.596399307251000099e+00 +0.000000000000000000e+00 6.139287948608399548e-01 1.093717455863999932e+00 1.014001518487900044e-01 1.818419814109800026e+00 2.310173511505099864e+00 2.680150032043500108e+00 +0.000000000000000000e+00 4.114202223719999954e-03 -3.382712006568899810e-01 -1.044231176376299919e+00 -5.727474093437200375e-01 -2.101961076259599992e-01 -1.144937753677399916e+00 +0.000000000000000000e+00 3.758299350739000011e-02 -2.050292342901199882e-01 -1.653515577316299945e+00 -2.336435765027999878e-01 9.807717055082000590e-02 -5.261133909225500505e-01 +0.000000000000000000e+00 7.696295976638799496e-01 1.460348248481800004e+00 5.340373516082800309e-01 3.218887329101599803e+00 3.712937355041499909e+00 4.987261772155799910e+00 +0.000000000000000000e+00 8.713852167129499948e-01 1.237789750099199892e+00 7.634115219116199835e-01 2.740942478179900110e+00 3.312777757644699950e+00 4.153542041778599980e+00 +0.000000000000000000e+00 -2.510703206062300241e-01 -8.254023194313000467e-01 -2.768189430236799975e+00 -2.817296504974399873e+00 -2.504682540893599985e+00 -4.757481098174999978e+00 +0.000000000000000000e+00 1.202604174613999932e+00 1.157722473144499942e+00 9.095132350921599773e-01 3.415419101715099881e+00 4.094112396240199736e+00 5.251852989196800436e+00 +0.000000000000000000e+00 5.358425974845899553e-01 1.258813142776499916e+00 8.473185896873499656e-01 4.141567230224599605e+00 4.520687103271500362e+00 6.565628528595000013e+00 +0.000000000000000000e+00 5.141488313674900112e-01 1.002126097679099992e+00 4.199532046914000033e-02 1.783694386482199912e+00 2.238557338714600053e+00 2.642419338226300152e+00 +0.000000000000000000e+00 9.864781498908999913e-01 1.554079532623299897e+00 7.194042801857000180e-01 3.123235702514600032e+00 3.710847377777100053e+00 4.778528213500999655e+00 +0.000000000000000000e+00 9.941346049308800170e-01 1.666428804397600105e+00 6.676982641220100545e-01 3.297019481658900020e+00 3.874073982238800173e+00 5.072155952453599959e+00 +0.000000000000000000e+00 -3.543878719211000089e-02 7.825397700071000384e-02 -1.252838492393500092e+00 1.332985609769800073e-01 4.266499578952799854e-01 5.813790485262999852e-02 diff --git a/statsmodels/discrete/tests/results/yhat_poisson.csv b/statsmodels/discrete/tests/results/yhat_poisson.csv new file mode 100644 index 0000000..2538c9e --- /dev/null +++ b/statsmodels/discrete/tests/results/yhat_poisson.csv @@ -0,0 +1,20190 @@ +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +3.071937,1.122308 +3.071937,1.122308 +3.071937,1.122308 +3.071937,1.122308 +3.071937,1.122308 +3.932128,1.369181 +3.932128,1.369181 +3.932128,1.369181 +3.932128,1.369181 +3.932128,1.369181 +3.479224,1.246809 +3.479224,1.246809 +3.479224,1.246809 +3.479224,1.246809 +3.479224,1.246809 +1.820688,.5992144 +1.820688,.5992144 +1.820688,.5992144 +3.822568,1.340922 +3.822568,1.340922 +3.822568,1.340922 +2.845195,1.045632 +2.845195,1.045632 +2.845195,1.045632 +3.822568,1.340922 +3.822568,1.340922 +3.822568,1.340922 +3.822568,1.340922 +3.822568,1.340922 +3.822568,1.340922 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.797748,1.028815 +2.797748,1.028815 +2.797748,1.028815 +2.409628,.8794723 +2.409628,.8794723 +2.409628,.8794723 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +5.174607,1.643763 +5.174607,1.643763 +5.174607,1.643763 +5.174607,1.643763 +5.174607,1.643763 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +4.56308,1.517998 +4.56308,1.517998 +4.56308,1.517998 +2.898298,1.064124 +2.898298,1.064124 +2.898298,1.064124 +1.881605,.6321253 +1.881605,.6321253 +1.881605,.6321253 +3.3057,1.195648 +3.3057,1.195648 +3.3057,1.195648 +3.3057,1.195648 +3.3057,1.195648 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +1.587174,.4619548 +1.587174,.4619548 +1.587174,.4619548 +5.171269,1.643118 +5.171269,1.643118 +5.171269,1.643118 +2.637642,.9698853 +2.637642,.9698853 +2.637642,.9698853 +1.55574,.4419512 +1.55574,.4419512 +1.55574,.4419512 +3.001837,1.099224 +3.001837,1.099224 +3.001837,1.099224 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.090163,.7372421 +2.090163,.7372421 +2.090163,.7372421 +3.17372,1.154904 +3.17372,1.154904 +3.17372,1.154904 +3.249435,1.178481 +3.249435,1.178481 +3.249435,1.178481 +5.57245,1.717835 +5.57245,1.717835 +5.57245,1.717835 +5.279221,1.663779 +5.279221,1.663779 +5.279221,1.663779 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +5.451887,1.695962 +5.451887,1.695962 +5.451887,1.695962 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.301742,.8336662 +2.301742,.8336662 +2.301742,.8336662 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +4.885274,1.586225 +4.885274,1.586225 +4.885274,1.586225 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +4.159989,1.425512 +4.159989,1.425512 +4.159989,1.425512 +4.917929,1.592887 +4.917929,1.592887 +4.917929,1.592887 +4.406809,1.483151 +4.406809,1.483151 +4.406809,1.483151 +3.890937,1.35865 +3.890937,1.35865 +3.890937,1.35865 +3.890937,1.35865 +3.890937,1.35865 +3.890937,1.35865 +3.890937,1.35865 +3.890937,1.35865 +3.890937,1.35865 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +3.893912,1.359414 +3.893912,1.359414 +3.893912,1.359414 +3.893912,1.359414 +3.893912,1.359414 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +2.80817,1.032533 +2.80817,1.032533 +2.80817,1.032533 +2.80817,1.032533 +2.80817,1.032533 +2.898298,1.064124 +2.898298,1.064124 +2.898298,1.064124 +2.898298,1.064124 +2.898298,1.064124 +3.35797,1.211336 +3.35797,1.211336 +3.35797,1.211336 +3.35797,1.211336 +3.35797,1.211336 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +2.557909,.9391899 +2.557909,.9391899 +2.557909,.9391899 +2.557909,.9391899 +2.557909,.9391899 +2.557909,.9391899 +2.557909,.9391899 +2.557909,.9391899 +2.557909,.9391899 +2.808304,1.032581 +2.808304,1.032581 +2.808304,1.032581 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +2.843876,1.045168 +2.843876,1.045168 +2.843876,1.045168 +1.755895,.5629784 +1.755895,.5629784 +1.755895,.5629784 +1.755895,.5629784 +1.755895,.5629784 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.742736,1.008956 +2.742736,1.008956 +2.742736,1.008956 +2.418604,.8831904 +2.418604,.8831904 +2.418604,.8831904 +3.253547,1.179746 +3.253547,1.179746 +3.253547,1.179746 +8.227385,2.107468 +8.227385,2.107468 +8.227385,2.107468 +4.396136,1.480726 +4.396136,1.480726 +4.396136,1.480726 +2.183688,.7810153 +2.183688,.7810153 +2.183688,.7810153 +1.55574,.4419512 +1.55574,.4419512 +1.55574,.4419512 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +7.696586,2.040777 +7.696586,2.040777 +7.696586,2.040777 +5.177191,1.644263 +5.177191,1.644263 +5.177191,1.644263 +5.177191,1.644263 +5.177191,1.644263 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.388847,1.22049 +3.388847,1.22049 +3.388847,1.22049 +4.446885,1.492204 +4.446885,1.492204 +4.446885,1.492204 +2.733185,1.005468 +2.733185,1.005468 +2.733185,1.005468 +2.733185,1.005468 +2.733185,1.005468 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +3.290753,1.191116 +3.290753,1.191116 +3.290753,1.191116 +1.575521,.4545863 +1.575521,.4545863 +1.575521,.4545863 +11.47832,2.44046 +11.47832,2.44046 +11.47832,2.44046 +11.47832,2.44046 +11.47832,2.44046 +9.223089,2.22171 +9.223089,2.22171 +9.223089,2.22171 +9.223089,2.22171 +9.223089,2.22171 +2.499246,.9159889 +2.499246,.9159889 +2.499246,.9159889 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.9018,1.065331 +2.9018,1.065331 +2.9018,1.065331 +1.500501,.4057988 +1.500501,.4057988 +1.500501,.4057988 +2.421808,.8845144 +2.421808,.8845144 +2.421808,.8845144 +3.685132,1.304306 +3.685132,1.304306 +3.685132,1.304306 +2.090163,.7372421 +2.090163,.7372421 +4.033019,1.394515 +4.033019,1.394515 +4.033019,1.394515 +4.033019,1.394515 +4.033019,1.394515 +2.090163,.7372421 +2.090163,.7372421 +2.090163,.7372421 +2.090163,.7372421 +2.090163,.7372421 +2.742736,1.008956 +2.742736,1.008956 +2.742736,1.008956 +2.742736,1.008956 +2.742736,1.008956 +2.418604,.8831904 +2.418604,.8831904 +2.418604,.8831904 +2.418604,.8831904 +2.418604,.8831904 +3.47793,1.246437 +3.47793,1.246437 +3.47793,1.246437 +3.47793,1.246437 +3.47793,1.246437 +4.711534,1.550013 +4.711534,1.550013 +4.711534,1.550013 +4.711534,1.550013 +4.711534,1.550013 +3.3057,1.195648 +3.3057,1.195648 +3.3057,1.195648 +3.3057,1.195648 +3.3057,1.195648 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +2.376297,.8655434 +2.376297,.8655434 +2.376297,.8655434 +2.376297,.8655434 +2.376297,.8655434 +2.376297,.8655434 +2.406512,.8781785 +2.406512,.8781785 +2.406512,.8781785 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.467866,.9033539 +2.467866,.9033539 +2.467866,.9033539 +2.467866,.9033539 +2.467866,.9033539 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.995541,1.385179 +3.995541,1.385179 +3.995541,1.385179 +3.995541,1.385179 +3.995541,1.385179 +3.995541,1.385179 +3.995541,1.385179 +3.995541,1.385179 +3.995541,1.385179 +3.995541,1.385179 +3.945375,1.372544 +3.945375,1.372544 +3.945375,1.372544 +3.945375,1.372544 +3.945375,1.372544 +3.92074,1.366281 +3.92074,1.366281 +3.92074,1.366281 +3.92074,1.366281 +3.92074,1.366281 +3.92074,1.366281 +3.92074,1.366281 +3.92074,1.366281 +3.92074,1.366281 +3.92074,1.366281 +3.92074,1.366281 +3.92074,1.366281 +3.92074,1.366281 +3.92074,1.366281 +3.92074,1.366281 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561172,.9404651 +2.561503,.9405942 +2.561503,.9405942 +2.561503,.9405942 +2.529342,.9279592 +2.529342,.9279592 +2.529342,.9279592 +2.703779,.9946505 +2.703779,.9946505 +2.703779,.9946505 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.870429,1.054462 +2.870429,1.054462 +2.870429,1.054462 +1.55574,.4419512 +1.55574,.4419512 +1.55574,.4419512 +1.55574,.4419512 +1.55574,.4419512 +1.55574,.4419512 +1.55574,.4419512 +1.55574,.4419512 +1.55574,.4419512 +1.55574,.4419512 +3.887215,1.357693 +3.887215,1.357693 +3.887215,1.357693 +3.887215,1.357693 +3.887215,1.357693 +3.887215,1.357693 +3.887215,1.357693 +3.887215,1.357693 +3.887215,1.357693 +3.887215,1.357693 +4.155299,1.424384 +4.155299,1.424384 +4.155299,1.424384 +4.155299,1.424384 +4.155299,1.424384 +3.887215,1.357693 +3.887215,1.357693 +3.887215,1.357693 +3.887215,1.357693 +3.887215,1.357693 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.552848,.9372095 +2.552848,.9372095 +2.552848,.9372095 +2.552848,.9372095 +2.552848,.9372095 +4.500616,1.504214 +4.500616,1.504214 +4.500616,1.504214 +4.500616,1.504214 +4.500616,1.504214 +1.96332,.6746372 +1.96332,.6746372 +1.96332,.6746372 +3.129014,1.140718 +3.129014,1.140718 +3.129014,1.140718 +3.052242,1.115876 +3.052242,1.115876 +3.052242,1.115876 +3.129014,1.140718 +3.129014,1.140718 +3.129014,1.140718 +2.591554,.9522575 +3.400667,1.223971 +2.591554,.9522575 +2.591554,.9522575 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +2.133771,.7578909 +2.133771,.7578909 +2.133771,.7578909 +1.881605,.6321253 +1.881605,.6321253 +1.881605,.6321253 +1.859107,.6200966 +1.859107,.6200966 +1.859107,.6200966 +1.859107,.6200966 +1.859107,.6200966 +2.890229,1.061336 +2.890229,1.061336 +2.890229,1.061336 +2.890229,1.061336 +2.890229,1.061336 +2.497743,.9153874 +2.497743,.9153874 +2.497743,.9153874 +2.497743,.9153874 +2.497743,.9153874 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.476166,.9067116 +2.476166,.9067116 +2.476166,.9067116 +4.043763,1.397176 +4.043763,1.397176 +4.043763,1.397176 +2.476166,.9067116 +2.476166,.9067116 +2.476166,.9067116 +2.557049,.9388537 +2.557049,.9388537 +1.856553,.6187214 +1.856553,.6187214 +1.856553,.6187214 +1.856553,.6187214 +1.856553,.6187214 +1.856553,.6187214 +2.557049,.9388537 +2.557049,.9388537 +2.30425,.8347552 +2.30425,.8347552 +3.028294,1.107999 +3.028294,1.107999 +3.028294,1.107999 +3.066799,1.120634 +3.066799,1.120634 +3.066799,1.120634 +4.0136,1.389689 +4.0136,1.389689 +4.0136,1.389689 +4.0136,1.389689 +4.0136,1.389689 +3.058653,1.117975 +3.058653,1.117975 +3.058653,1.117975 +3.058653,1.117975 +3.058653,1.117975 +2.529535,.9280354 +2.529535,.9280354 +2.529535,.9280354 +2.529535,.9280354 +2.529535,.9280354 +2.529535,.9280354 +2.529535,.9280354 +2.529535,.9280354 +2.529535,.9280354 +2.529535,.9280354 +2.529535,.9280354 +2.529535,.9280354 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +1.96775,.6768908 +1.96775,.6768908 +1.96775,.6768908 +1.96775,.6768908 +1.96775,.6768908 +2.45999,.9001571 +2.45999,.9001571 +2.45999,.9001571 +2.45999,.9001571 +2.45999,.9001571 +2.45999,.9001571 +2.45999,.9001571 +2.45999,.9001571 +2.45999,.9001571 +2.45999,.9001571 +2.45999,.9001571 +2.45999,.9001571 +2.45999,.9001571 +2.45999,.9001571 +2.45999,.9001571 +3.60699,1.282874 +3.60699,1.282874 +3.60699,1.282874 +7.358285,1.995827 +7.358285,1.995827 +7.358285,1.995827 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +9.983452,2.300929 +9.983452,2.300929 +9.983452,2.300929 +9.983452,2.300929 +9.983452,2.300929 +2.472342,.9051659 +2.472342,.9051659 +2.472342,.9051659 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +2.159773,.7700033 +2.159773,.7700033 +2.159773,.7700033 +2.159773,.7700033 +2.159773,.7700033 +3.357654,1.211242 +3.357654,1.211242 +3.357654,1.211242 +3.357654,1.211242 +3.357654,1.211242 +3.06415,1.11977 +3.06415,1.11977 +3.06415,1.11977 +3.06415,1.11977 +3.06415,1.11977 +4.763627,1.561009 +4.763627,1.561009 +4.763627,1.561009 +4.763627,1.561009 +4.763627,1.561009 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +2.705452,.995269 +1.55574,.4419512 +1.55574,.4419512 +1.55574,.4419512 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +2.494484,.9140821 +2.494484,.9140821 +2.494484,.9140821 +2.494484,.9140821 +2.494484,.9140821 +3.253547,1.179746 +3.253547,1.179746 +3.253547,1.179746 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +3.249435,1.178481 +3.249435,1.178481 +3.249435,1.178481 +2.449357,.8958254 +2.449357,.8958254 +2.449357,.8958254 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.449357,.8958254 +2.449357,.8958254 +2.449357,.8958254 +2.449357,.8958254 +2.449357,.8958254 +2.449357,.8958254 +2.11674,.7498771 +2.11674,.7498771 +2.11674,.7498771 +4.505067,1.505203 +4.505067,1.505203 +4.505067,1.505203 +4.505067,1.505203 +4.505067,1.505203 +2.558606,.9394626 +2.558606,.9394626 +2.558606,.9394626 +2.558606,.9394626 +2.558606,.9394626 +5.911602,1.776917 +5.911602,1.776917 +5.911602,1.776917 +5.911602,1.776917 +5.911602,1.776917 +1.856193,.6185275 +1.856193,.6185275 +1.856193,.6185275 +1.856193,.6185275 +1.856193,.6185275 +3.987288,1.383111 +3.987288,1.383111 +3.987288,1.383111 +3.937225,1.370476 +3.937225,1.370476 +3.937225,1.370476 +3.987288,1.383111 +3.987288,1.383111 +3.987288,1.383111 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.93515,1.076759 +2.93515,1.076759 +2.93515,1.076759 +3.396369,1.222707 +3.396369,1.222707 +3.396369,1.222707 +2.499246,.9159889 +2.499246,.9159889 +2.499246,.9159889 +1.860226,.6206981 +1.860226,.6206981 +1.860226,.6206981 +3.357779,1.21128 +3.357779,1.21128 +3.357779,1.21128 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.950603,1.082009 +2.950603,1.082009 +2.950603,1.082009 +3.001837,1.099224 +3.001837,1.099224 +3.001837,1.099224 +4.365672,1.473772 +4.365672,1.473772 +4.365672,1.473772 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +1.860226,.6206981 +1.860226,.6206981 +1.860226,.6206981 +1.860226,.6206981 +1.860226,.6206981 +2.499246,.9159889 +2.499246,.9159889 +2.499246,.9159889 +2.499246,.9159889 +2.499246,.9159889 +1.860226,.6206981 +1.860226,.6206981 +1.860226,.6206981 +1.860226,.6206981 +1.860226,.6206981 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.93515,1.076759 +2.93515,1.076759 +2.93515,1.076759 +2.93515,1.076759 +2.93515,1.076759 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +2.93515,1.076759 +2.93515,1.076759 +2.93515,1.076759 +2.93515,1.076759 +2.93515,1.076759 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.184072,.7811908 +2.184072,.7811908 +2.184072,.7811908 +2.184072,.7811908 +2.184072,.7811908 +2.590836,.9519805 +2.590836,.9519805 +2.590836,.9519805 +2.590836,.9519805 +2.590836,.9519805 +2.934337,1.076482 +2.934337,1.076482 +2.934337,1.076482 +2.934337,1.076482 +2.934337,1.076482 +1.352408,.301887 +1.352408,.301887 +1.352408,.301887 +1.352408,.301887 +1.352408,.301887 +2.611369,.9598745 +2.611369,.9598745 +2.611369,.9598745 +2.611369,.9598745 +2.611369,.9598745 +2.611369,.9598745 +3.383645,1.218953 +3.383645,1.218953 +3.383645,1.218953 +2.611369,.9598745 +2.611369,.9598745 +2.611369,.9598745 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.523463,1.259444 +3.523463,1.259444 +3.523463,1.259444 +3.034667,1.110102 +3.034667,1.110102 +3.034667,1.110102 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +2.679798,.9857414 +2.679798,.9857414 +2.679798,.9857414 +2.590937,.9520195 +2.590937,.9520195 +2.590937,.9520195 +2.557751,.9391285 +2.557751,.9391285 +2.557751,.9391285 +2.557751,.9391285 +2.557751,.9391285 +2.557751,.9391285 +2.557751,.9391285 +2.557751,.9391285 +2.557751,.9391285 +2.557751,.9391285 +2.649583,.9744024 +2.649583,.9744024 +2.649583,.9744024 +2.649583,.9744024 +2.649583,.9744024 +2.557751,.9391285 +2.557751,.9391285 +2.557751,.9391285 +2.557751,.9391285 +2.557751,.9391285 +2.80817,1.032533 +2.80817,1.032533 +2.80817,1.032533 +2.52655,.9268549 +2.52655,.9268549 +2.52655,.9268549 +2.52655,.9268549 +2.52655,.9268549 +2.5901,.9516963 +2.5901,.9516963 +2.5901,.9516963 +2.5901,.9516963 +2.5901,.9516963 +1.88055,.6315641 +1.88055,.6315641 +1.88055,.6315641 +1.88055,.6315641 +1.88055,.6315641 +2.5901,.9516963 +2.5901,.9516963 +2.5901,.9516963 +2.5901,.9516963 +2.5901,.9516963 +3.481924,1.247585 +3.481924,1.247585 +3.481924,1.247585 +3.481924,1.247585 +3.481924,1.247585 +3.07432,1.123084 +3.07432,1.123084 +3.07432,1.123084 +3.07432,1.123084 +3.07432,1.123084 +2.23212,.8029516 +2.23212,.8029516 +2.23212,.8029516 +2.23212,.8029516 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +5.108825,1.630969 +5.108825,1.630969 +5.108825,1.630969 +5.108825,1.630969 +5.108825,1.630969 +4.703553,1.548318 +4.703553,1.548318 +4.703553,1.548318 +4.703553,1.548318 +4.703553,1.548318 +2.527567,.9272571 +2.527567,.9272571 +2.527567,.9272571 +2.527567,.9272571 +2.527567,.9272571 +2.591238,.9521358 +2.591238,.9521358 +2.591238,.9521358 +3.929046,1.368397 +3.929046,1.368397 +4.025937,1.392758 +4.025937,1.392758 +4.025937,1.392758 +2.996566,1.097467 +2.996566,1.097467 +2.996566,1.097467 +2.589639,.9515185 +2.589639,.9515185 +2.589639,.9515185 +2.618861,.9627396 +2.618861,.9627396 +2.618861,.9627396 +2.618861,.9627396 +2.618861,.9627396 +3.984977,1.382532 +3.984977,1.382532 +3.984977,1.382532 +3.984977,1.382532 +3.984977,1.382532 +2.554606,.9378982 +2.554606,.9378982 +2.554606,.9378982 +2.554606,.9378982 +2.554606,.9378982 +3.585017,1.276763 +3.585017,1.276763 +2.157247,.7688327 +2.157247,.7688327 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +5.05158,1.619701 +5.05158,1.619701 +5.05158,1.619701 +1.83687,.608063 +1.83687,.608063 +1.83687,.608063 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.80817,1.032533 +2.80817,1.032533 +2.80817,1.032533 +2.80817,1.032533 +2.80817,1.032533 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.418604,.8831904 +2.418604,.8831904 +2.418604,.8831904 +2.418604,.8831904 +2.418604,.8831904 +2.090163,.7372421 +2.090163,.7372421 +2.090163,.7372421 +2.090163,.7372421 +2.090163,.7372421 +1.575521,.4545863 +1.575521,.4545863 +1.575521,.4545863 +1.575521,.4545863 +1.575521,.4545863 +2.498222,.9155794 +2.498222,.9155794 +2.498222,.9155794 +2.498222,.9155794 +2.498222,.9155794 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.090163,.7372421 +2.090163,.7372421 +2.090163,.7372421 +2.090163,.7372421 +2.090163,.7372421 +4.350795,1.470359 +4.350795,1.470359 +4.350795,1.470359 +3.279539,1.187703 +3.279539,1.187703 +3.279539,1.187703 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +1.637984,.493466 +1.637984,.493466 +1.637984,.493466 +1.637984,.493466 +1.637984,.493466 +1.410753,.3441235 +1.410753,.3441235 +1.410753,.3441235 +1.410753,.3441235 +1.410753,.3441235 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +2.200659,.7887568 +2.200659,.7887568 +2.200659,.7887568 +2.200659,.7887568 +2.200659,.7887568 +2.026086,.7061057 +2.026086,.7061057 +2.026086,.7061057 +2.026086,.7061057 +2.026086,.7061057 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.071937,1.122308 +3.071937,1.122308 +3.071937,1.122308 +3.071937,1.122308 +3.071937,1.122308 +3.071937,1.122308 +3.071937,1.122308 +3.071937,1.122308 +3.071937,1.122308 +3.071937,1.122308 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.735499,1.006314 +2.735499,1.006314 +2.735499,1.006314 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +3.985457,1.382652 +3.985457,1.382652 +3.985457,1.382652 +3.985457,1.382652 +3.985457,1.382652 +3.359735,1.211862 +3.359735,1.211862 +3.359735,1.211862 +3.359735,1.211862 +3.359735,1.211862 +2.500702,.9165713 +2.500702,.9165713 +2.500702,.9165713 +2.500702,.9165713 +2.500702,.9165713 +3.985457,1.382652 +3.985457,1.382652 +3.985457,1.382652 +3.985457,1.382652 +3.985457,1.382652 +3.985457,1.382652 +3.985457,1.382652 +3.985457,1.382652 +3.985457,1.382652 +3.985457,1.382652 +9.115742,2.210003 +9.115742,2.210003 +9.115742,2.210003 +9.115742,2.210003 +9.115742,2.210003 +5.966915,1.78623 +5.966915,1.78623 +5.966915,1.78623 +5.966915,1.78623 +5.966915,1.78623 +1.820688,.5992144 +1.820688,.5992144 +1.820688,.5992144 +1.820688,.5992144 +1.820688,.5992144 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +3.47793,1.246437 +3.47793,1.246437 +3.47793,1.246437 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +2.301742,.8336662 +2.301742,.8336662 +2.301742,.8336662 +2.301742,.8336662 +2.301742,.8336662 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +5.399965,1.686393 +5.399965,1.686393 +5.399965,1.686393 +5.399965,1.686393 +5.399965,1.686393 +2.467866,.9033539 +2.467866,.9033539 +2.467866,.9033539 +2.467866,.9033539 +2.467866,.9033539 +2.499246,.9159889 +2.499246,.9159889 +2.499246,.9159889 +2.499246,.9159889 +2.499246,.9159889 +4.711534,1.550013 +4.711534,1.550013 +4.711534,1.550013 +7.829855,2.057944 +7.829855,2.057944 +7.829855,2.057944 +3.583911,1.276455 +3.583911,1.276455 +2.301742,.8336662 +2.301742,.8336662 +2.301742,.8336662 +2.301742,.8336662 +2.301742,.8336662 +2.672485,.9830087 +2.672485,.9830087 +2.672485,.9830087 +2.672485,.9830087 +2.672485,.9830087 +2.672485,.9830087 +2.672485,.9830087 +2.672485,.9830087 +2.672485,.9830087 +2.672485,.9830087 +2.313224,.8386422 +2.313224,.8386422 +2.313224,.8386422 +2.313224,.8386422 +2.313224,.8386422 +3.169125,1.153455 +3.169125,1.153455 +3.169125,1.153455 +2.587322,.9506236 +2.587322,.9506236 +2.587322,.9506236 +2.587322,.9506236 +2.587322,.9506236 +2.587322,.9506236 +2.18111,.7798338 +2.18111,.7798338 +3.390824,1.221073 +3.390824,1.221073 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +1.587427,.4621147 +1.587427,.4621147 +1.587427,.4621147 +1.587427,.4621147 +1.587427,.4621147 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +4.350795,1.470359 +4.350795,1.470359 +4.350795,1.470359 +4.350795,1.470359 +4.350795,1.470359 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +2.735499,1.006314 +2.735499,1.006314 +2.735499,1.006314 +2.735499,1.006314 +2.735499,1.006314 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.49554,.9145051 +2.49554,.9145051 +2.49554,.9145051 +2.156651,.7685568 +2.156651,.7685568 +2.156651,.7685568 +2.558309,.9393466 +2.558309,.9393466 +2.558309,.9393466 +2.558309,.9393466 +2.558309,.9393466 +2.558309,.9393466 +5.408915,1.688048 +5.408915,1.688048 +5.408915,1.688048 +5.408915,1.688048 +5.408915,1.688048 +4.565478,1.518523 +4.565478,1.518523 +4.565478,1.518523 +4.565478,1.518523 +4.565478,1.518523 +3.071937,1.122308 +3.071937,1.122308 +3.071937,1.122308 +3.071937,1.122308 +3.071937,1.122308 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +3.357779,1.21128 +3.357779,1.21128 +3.357779,1.21128 +3.357779,1.21128 +3.357779,1.21128 +2.132736,.7574055 +2.132736,.7574055 +2.132736,.7574055 +1.83687,.608063 +1.83687,.608063 +1.83687,.608063 +1.587427,.4621147 +1.587427,.4621147 +1.587427,.4621147 +3.31562,1.198645 +3.31562,1.198645 +3.31562,1.198645 +5.845367,1.765649 +5.845367,1.765649 +5.845367,1.765649 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +3.314335,1.198257 +3.314335,1.198257 +3.314335,1.198257 +2.158862,.7695814 +2.158862,.7695814 +2.158862,.7695814 +2.158862,.7695814 +2.158862,.7695814 +2.560932,.9403712 +2.560932,.9403712 +2.560932,.9403712 +2.560932,.9403712 +2.560932,.9403712 +2.560932,.9403712 +2.560932,.9403712 +2.560932,.9403712 +2.560932,.9403712 +2.560932,.9403712 +2.900468,1.064872 +2.900468,1.064872 +2.900468,1.064872 +2.900468,1.064872 +2.900468,1.064872 +3.582829,1.276153 +3.582829,1.276153 +3.582829,1.276153 +5.451793,1.695945 +5.451793,1.695945 +5.451793,1.695945 +2.11674,.7498771 +2.11674,.7498771 +2.11674,.7498771 +2.11674,.7498771 +2.11674,.7498771 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +3.772824,1.327824 +3.772824,1.327824 +3.772824,1.327824 +3.772824,1.327824 +3.772824,1.327824 +2.291613,.8292558 +2.291613,.8292558 +2.291613,.8292558 +2.291613,.8292558 +2.291613,.8292558 +3.003281,1.099705 +3.003281,1.099705 +3.003281,1.099705 +3.003281,1.099705 +3.003281,1.099705 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +3.47793,1.246437 +3.47793,1.246437 +3.47793,1.246437 +3.47793,1.246437 +3.47793,1.246437 +5.771085,1.75286 +5.771085,1.75286 +5.771085,1.75286 +5.771085,1.75286 +5.771085,1.75286 +2.125181,.7538571 +2.125181,.7538571 +2.125181,.7538571 +2.125181,.7538571 +2.125181,.7538571 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +3.842667,1.346167 +2.898298,1.064124 +2.898298,1.064124 +2.898298,1.064124 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +1.800199,.5878971 +1.800199,.5878971 +1.800199,.5878971 +1.800199,.5878971 +1.800199,.5878971 +3.725445,1.315186 +3.725445,1.315186 +3.725445,1.315186 +3.725445,1.315186 +3.725445,1.315186 +2.989113,1.094977 +2.989113,1.094977 +2.989113,1.094977 +2.951583,1.082342 +2.951583,1.082342 +2.951583,1.082342 +2.951583,1.082342 +2.951583,1.082342 +2.951583,1.082342 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +3.357779,1.21128 +3.357779,1.21128 +3.357779,1.21128 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +2.529939,.9281953 +2.529939,.9281953 +1.83687,.608063 +1.83687,.608063 +1.587427,.4621147 +1.587427,.4621147 +1.587427,.4621147 +1.587427,.4621147 +1.587427,.4621147 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.449357,.8958254 +2.449357,.8958254 +2.449357,.8958254 +2.449357,.8958254 +2.449357,.8958254 +2.558201,.9393044 +2.558201,.9393044 +2.558201,.9393044 +6.318299,1.84345 +6.318299,1.84345 +6.318299,1.84345 +2.558201,.9393044 +2.558201,.9393044 +2.558201,.9393044 +3.94217,1.371731 +3.94217,1.371731 +3.94217,1.371731 +3.796963,1.334202 +3.796963,1.334202 +3.796963,1.334202 +3.845242,1.346837 +3.845242,1.346837 +3.845242,1.346837 +3.845242,1.346837 +3.845242,1.346837 +3.845242,1.346837 +1.625285,.4856829 +1.625285,.4856829 +1.625285,.4856829 +1.625285,.4856829 +1.625285,.4856829 +2.590274,.9517635 +2.590274,.9517635 +2.590274,.9517635 +2.590274,.9517635 +2.590274,.9517635 +2.590274,.9517635 +2.590274,.9517635 +2.590274,.9517635 +2.590274,.9517635 +2.590274,.9517635 +3.941477,1.371555 +3.941477,1.371555 +3.941477,1.371555 +3.941477,1.371555 +3.941477,1.371555 +3.70542,1.309797 +3.70542,1.309797 +3.70542,1.309797 +3.70542,1.309797 +3.70542,1.309797 +1.790523,.5825076 +1.790523,.5825076 +1.790523,.5825076 +1.790523,.5825076 +1.790523,.5825076 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.804465,1.031213 +2.804465,1.031213 +2.804465,1.031213 +2.804465,1.031213 +2.804465,1.031213 +2.113947,.7485569 +2.113947,.7485569 +2.113947,.7485569 +2.113947,.7485569 +2.113947,.7485569 +2.113947,.7485569 +2.113947,.7485569 +2.113947,.7485569 +2.113947,.7485569 +2.113947,.7485569 +2.446125,.8945053 +2.446125,.8945053 +2.446125,.8945053 +2.446125,.8945053 +2.446125,.8945053 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.113947,.7485569 +2.113947,.7485569 +2.113947,.7485569 +2.113947,.7485569 +2.113947,.7485569 +4.823937,1.57359 +4.823937,1.57359 +4.823937,1.57359 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +2.327613,.8448431 +2.327613,.8448431 +2.327613,.8448431 +2.327613,.8448431 +2.327613,.8448431 +2.327613,.8448431 +2.327613,.8448431 +2.327613,.8448431 +2.327613,.8448431 +2.327613,.8448431 +3.618582,1.286082 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.618582,1.286082 +3.618582,1.286082 +3.618582,1.286082 +3.618582,1.286082 +3.618582,1.286082 +3.96874,1.378449 +3.96874,1.378449 +3.96874,1.378449 +3.96874,1.378449 +3.96874,1.378449 +2.198702,.7878671 +2.198702,.7878671 +2.198702,.7878671 +2.198702,.7878671 +2.198702,.7878671 +5.957755,1.784694 +5.957755,1.784694 +5.957755,1.784694 +5.318631,1.671216 +5.318631,1.671216 +5.318631,1.671216 +3.051947,1.11578 +3.051947,1.11578 +3.051947,1.11578 +3.090753,1.128415 +3.090753,1.128415 +3.090753,1.128415 +3.090753,1.128415 +3.090753,1.128415 +3.090753,1.128415 +3.090753,1.128415 +3.090753,1.128415 +3.090753,1.128415 +6.784985,1.914712 +6.784985,1.914712 +6.784985,1.914712 +6.784985,1.914712 +6.784985,1.914712 +3.092429,1.128957 +3.092429,1.128957 +3.092429,1.128957 +3.092429,1.128957 +3.092429,1.128957 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +3.188051,1.15941 +3.188051,1.15941 +3.188051,1.15941 +3.188051,1.15941 +3.188051,1.15941 +3.835293,1.344246 +3.835293,1.344246 +3.835293,1.344246 +3.835293,1.344246 +3.835293,1.344246 +2.454278,.8978324 +2.454278,.8978324 +2.454278,.8978324 +2.454278,.8978324 +2.454278,.8978324 +2.454278,.8978324 +2.454278,.8978324 +2.454278,.8978324 +2.454278,.8978324 +2.454278,.8978324 +2.454278,.8978324 +2.497565,.915316 +2.497565,.915316 +2.497565,.915316 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +2.706466,.9956437 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +4.885274,1.586225 +4.885274,1.586225 +4.885274,1.586225 +4.885274,1.586225 +4.885274,1.586225 +4.20756,1.436883 +4.20756,1.436883 +4.20756,1.436883 +4.20756,1.436883 +4.20756,1.436883 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.13175,1.141592 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +3.290753,1.191116 +3.290753,1.191116 +3.290753,1.191116 +3.290753,1.191116 +3.290753,1.191116 +2.418604,.8831904 +2.418604,.8831904 +2.418604,.8831904 +2.418604,.8831904 +2.418604,.8831904 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +2.93515,1.076759 +2.93515,1.076759 +2.93515,1.076759 +2.93515,1.076759 +2.93515,1.076759 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.557805,.9391496 +2.37141,.8634847 +2.37141,.8634847 +2.37141,.8634847 +2.37141,.8634847 +2.37141,.8634847 +2.37141,.8634847 +2.37141,.8634847 +2.37141,.8634847 +2.37141,.8634847 +1.487957,.3974041 +1.487957,.3974041 +1.487957,.3974041 +2.37141,.8634847 +2.37141,.8634847 +2.37141,.8634847 +4.677362,1.542734 +4.677362,1.542734 +1.836511,.6078675 +1.836511,.6078675 +1.836511,.6078675 +1.836511,.6078675 +1.836511,.6078675 +4.212884,1.438147 +4.212884,1.438147 +4.212884,1.438147 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +1.625674,.4859227 +1.625674,.4859227 +1.625674,.4859227 +2.590895,.9520033 +2.590895,.9520033 +2.590895,.9520033 +1.881127,.6318711 +1.881127,.6318711 +1.881127,.6318711 +2.590895,.9520033 +2.590895,.9520033 +2.590895,.9520033 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +2.083719,.734154 +2.083719,.734154 +2.083719,.734154 +2.083719,.734154 +2.083719,.734154 +2.083719,.734154 +2.560503,.9402035 +2.560503,.9402035 +2.560503,.9402035 +2.560503,.9402035 +2.560503,.9402035 +2.560503,.9402035 +2.560503,.9402035 +2.560503,.9402035 +2.560503,.9402035 +2.560503,.9402035 +2.560112,.9400509 +2.560112,.9400509 +2.560112,.9400509 +2.560112,.9400509 +2.560112,.9400509 +2.528354,.9275685 +2.528354,.9275685 +2.528354,.9275685 +2.528354,.9275685 +2.528354,.9275685 +3.720092,1.313748 +3.720092,1.313748 +3.720092,1.313748 +3.673384,1.301113 +3.673384,1.301113 +3.673384,1.301113 +3.720092,1.313748 +3.720092,1.313748 +3.720092,1.313748 +3.720092,1.313748 +3.720092,1.313748 +3.720092,1.313748 +3.720092,1.313748 +3.720092,1.313748 +3.720092,1.313748 +2.693365,.9907915 +2.693365,.9907915 +2.693365,.9907915 +2.693365,.9907915 +2.693365,.9907915 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.127187,1.140134 +3.127187,1.140134 +3.127187,1.140134 +3.127187,1.140134 +3.127187,1.140134 +4.748346,1.557796 +4.748346,1.557796 +4.748346,1.557796 +4.748346,1.557796 +4.748346,1.557796 +2.735499,1.006314 +2.735499,1.006314 +2.735499,1.006314 +3.35797,1.211336 +3.35797,1.211336 +3.35797,1.211336 +4.441265,1.490939 +4.441265,1.490939 +4.441265,1.490939 +10.77051,2.376812 +10.77051,2.376812 +10.77051,2.376812 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +4.162458,1.426106 +4.162458,1.426106 +4.162458,1.426106 +4.162458,1.426106 +4.162458,1.426106 +1.857981,.6194903 +1.857981,.6194903 +1.857981,.6194903 +1.857981,.6194903 +1.857981,.6194903 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +3.110997,1.134943 +2.819872,1.036692 +2.819872,1.036692 +2.819872,1.036692 +2.819872,1.036692 +2.819872,1.036692 +6.598085,1.88678 +6.598085,1.88678 +6.598085,1.88678 +2.646937,.973403 +2.646937,.973403 +2.646937,.973403 +2.646937,.973403 +2.646937,.973403 +3.249254,1.178426 +3.249254,1.178426 +3.249254,1.178426 +3.249254,1.178426 +3.249254,1.178426 +2.476166,.9067116 +2.476166,.9067116 +2.476166,.9067116 +2.476166,.9067116 +2.476166,.9067116 +2.476166,.9067116 +2.476166,.9067116 +2.476166,.9067116 +2.476166,.9067116 +2.476166,.9067116 +3.890944,1.358652 +3.890944,1.358652 +3.890944,1.358652 +3.890944,1.358652 +3.890944,1.358652 +3.800281,1.335075 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.13175,1.141592 +3.13175,1.141592 +3.13175,1.141592 +4.885274,1.586225 +4.885274,1.586225 +4.885274,1.586225 +1.575521,.4545863 +1.575521,.4545863 +1.575521,.4545863 +1.575521,.4545863 +1.575521,.4545863 +2.80817,1.032533 +2.80817,1.032533 +2.80817,1.032533 +2.80817,1.032533 +2.80817,1.032533 +2.365803,.8611176 +2.365803,.8611176 +2.365803,.8611176 +2.365803,.8611176 +2.365803,.8611176 +3.872929,1.354011 +3.872929,1.354011 +3.872929,1.354011 +3.872929,1.354011 +3.872929,1.354011 +3.872929,1.354011 +7.917645,2.069094 +7.917645,2.069094 +7.917645,2.069094 +5.458982,1.697262 +5.458982,1.697262 +5.458982,1.697262 +3.872929,1.354011 +3.872929,1.354011 +3.872929,1.354011 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +2.898298,1.064124 +2.898298,1.064124 +2.898298,1.064124 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.80817,1.032533 +2.80817,1.032533 +2.80817,1.032533 +3.249435,1.178481 +3.249435,1.178481 +3.249435,1.178481 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.46952,.9040239 +2.46952,.9040239 +2.46952,.9040239 +2.46952,.9040239 +2.46952,.9040239 +2.46952,.9040239 +2.46952,.9040239 +2.46952,.9040239 +2.46952,.9040239 +2.46952,.9040239 +2.438514,.8913888 +2.438514,.8913888 +2.438514,.8913888 +2.438514,.8913888 +2.438514,.8913888 +2.46952,.9040239 +2.46952,.9040239 +2.46952,.9040239 +2.46952,.9040239 +2.46952,.9040239 +2.438514,.8913888 +2.438514,.8913888 +2.438514,.8913888 +2.438514,.8913888 +2.438514,.8913888 +2.46952,.9040239 +2.46952,.9040239 +2.46952,.9040239 +2.46952,.9040239 +2.46952,.9040239 +3.146872,1.146409 +3.146872,1.146409 +3.146872,1.146409 +3.146872,1.146409 +3.146872,1.146409 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +5.451887,1.695962 +5.451887,1.695962 +5.451887,1.695962 +5.451887,1.695962 +5.451887,1.695962 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +2.672485,.9830087 +2.672485,.9830087 +2.672485,.9830087 +2.672485,.9830087 +2.672485,.9830087 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.476166,.9067116 +2.476166,.9067116 +2.476166,.9067116 +2.476166,.9067116 +2.476166,.9067116 +2.804465,1.031213 +2.804465,1.031213 +2.804465,1.031213 +2.804465,1.031213 +2.804465,1.031213 +1.857213,.619077 +1.857213,.619077 +1.857213,.619077 +1.857213,.619077 +1.857213,.619077 +2.557958,.9392093 +2.557958,.9392093 +2.557958,.9392093 +2.557958,.9392093 +2.557958,.9392093 +2.156355,.7684195 +2.156355,.7684195 +2.156355,.7684195 +2.156355,.7684195 +2.156355,.7684195 +2.557958,.9392093 +2.557958,.9392093 +2.557958,.9392093 +2.557958,.9392093 +2.557958,.9392093 +5.385526,1.683715 +5.385526,1.683715 +5.385526,1.683715 +6.107275,1.809481 +6.107275,1.809481 +6.107275,1.809481 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.558491,.9394175 +2.558491,.9394175 +2.558491,.9394175 +2.558491,.9394175 +2.558491,.9394175 +2.082739,.7336836 +2.082739,.7336836 +2.082739,.7336836 +2.082739,.7336836 +2.082739,.7336836 +2.082739,.7336836 +2.798195,1.028974 +2.798195,1.028974 +2.798195,1.028974 +2.924419,1.073096 +2.924419,1.073096 +2.924419,1.073096 +2.924419,1.073096 +2.924419,1.073096 +3.396369,1.222707 +3.396369,1.222707 +3.396369,1.222707 +3.396369,1.222707 +3.396369,1.222707 +2.527969,.9274161 +2.527969,.9274161 +2.527969,.9274161 +2.527969,.9274161 +2.527969,.9274161 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +3.396369,1.222707 +3.396369,1.222707 +3.396369,1.222707 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +3.249435,1.178481 +3.249435,1.178481 +3.249435,1.178481 +3.249435,1.178481 +3.249435,1.178481 +2.418604,.8831904 +2.418604,.8831904 +2.418604,.8831904 +2.418604,.8831904 +2.418604,.8831904 +3.460235,1.241337 +3.460235,1.241337 +3.460235,1.241337 +3.460235,1.241337 +3.460235,1.241337 +6.100321,1.808341 +6.100321,1.808341 +6.100321,1.808341 +6.100321,1.808341 +6.100321,1.808341 +2.385661,.8694764 +2.385661,.8694764 +2.385661,.8694764 +2.385661,.8694764 +2.385661,.8694764 +5.110567,1.63131 +5.110567,1.63131 +5.110567,1.63131 +5.110567,1.63131 +5.110567,1.63131 +2.159854,.7700406 +2.159854,.7700406 +2.562108,.9408303 +5.33207,1.67374 +5.33207,1.67374 +6.463665,1.866197 +6.463665,1.866197 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +5.581953,1.719539 +5.581953,1.719539 +5.581953,1.719539 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +1.880374,.6314704 +1.880374,.6314704 +1.880374,.6314704 +1.880374,.6314704 +1.880374,.6314704 +2.594433,.9533678 +2.594433,.9533678 +2.594433,.9533678 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.479438,.9080318 +2.479438,.9080318 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +3.066799,1.120634 +3.028294,1.107999 +3.028294,1.107999 +3.028294,1.107999 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +4.154732,1.424248 +4.154732,1.424248 +4.154732,1.424248 +4.154732,1.424248 +4.154732,1.424248 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +3.590529,1.278299 +2.194395,.7859064 +2.194395,.7859064 +2.194395,.7859064 +5.156622,1.640282 +5.156622,1.640282 +5.156622,1.640282 +12.21393,2.502577 +12.21393,2.502577 +12.21393,2.502577 +2.735499,1.006314 +2.735499,1.006314 +2.735499,1.006314 +2.735499,1.006314 +2.735499,1.006314 +1.569674,.4508681 +1.569674,.4508681 +1.569674,.4508681 +2.108884,.746159 +2.108884,.746159 +2.108884,.746159 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +2.157247,.7688327 +2.157247,.7688327 +2.157247,.7688327 +2.157247,.7688327 +2.591303,.9521607 +2.591303,.9521607 +2.591303,.9521607 +2.591303,.9521607 +2.591303,.9521607 +2.558768,.9395257 +2.558768,.9395257 +2.558768,.9395257 +2.558768,.9395257 +2.558768,.9395257 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.11674,.7498771 +2.11674,.7498771 +2.11674,.7498771 +2.11674,.7498771 +2.11674,.7498771 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +2.591052,.9520639 +2.591052,.9520639 +2.591052,.9520639 +3.400008,1.223778 +3.400008,1.223778 +3.400008,1.223778 +2.591052,.9520639 +2.591052,.9520639 +2.591052,.9520639 +3.400008,1.223778 +3.400008,1.223778 +3.400008,1.223778 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.856513,1.349764 +3.856513,1.349764 +3.856513,1.349764 +3.856513,1.349764 +3.856513,1.349764 +3.856513,1.349764 +3.856513,1.349764 +3.856513,1.349764 +3.856513,1.349764 +3.856513,1.349764 +3.856513,1.349764 +3.856513,1.349764 +3.856513,1.349764 +3.856513,1.349764 +3.856513,1.349764 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.601116,.9559408 +2.601116,.9559408 +2.601116,.9559408 +2.590895,.9520033 +2.590895,.9520033 +2.590895,.9520033 +2.590895,.9520033 +2.590895,.9520033 +2.430854,.8882425 +2.430854,.8882425 +2.430854,.8882425 +3.185763,1.158692 +3.185763,1.158692 +3.185763,1.158692 +2.718577,1.000108 +2.718577,1.000108 +2.718577,1.000108 +2.400333,.8756074 +2.400333,.8756074 +2.400333,.8756074 +2.049206,.7174527 +2.049206,.7174527 +2.049206,.7174527 +2.130291,.7562585 +2.130291,.7562585 +2.130291,.7562585 +2.130291,.7562585 +2.130291,.7562585 +2.129451,.7558641 +2.129451,.7558641 +2.129451,.7558641 +2.129451,.7558641 +2.129451,.7558641 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +3.922174,1.366646 +3.922174,1.366646 +3.922174,1.366646 +3.922174,1.366646 +3.922174,1.366646 +4.386415,1.478512 +4.386415,1.478512 +4.386415,1.478512 +4.386415,1.478512 +4.386415,1.478512 +3.922174,1.366646 +3.922174,1.366646 +3.922174,1.366646 +3.922174,1.366646 +3.922174,1.366646 +3.306388,1.195856 +3.306388,1.195856 +3.306388,1.195856 +3.306388,1.195856 +3.306388,1.195856 +2.508994,.9198818 +2.508994,.9198818 +2.508994,.9198818 +2.508994,.9198818 +2.508994,.9198818 +2.508994,.9198818 +2.508994,.9198818 +2.508994,.9198818 +2.508994,.9198818 +2.477492,.9072468 +2.477492,.9072468 +2.477492,.9072468 +1.219176,.1981752 +1.219176,.1981752 +1.219176,.1981752 +1.219176,.1981752 +1.219176,.1981752 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +2.546463,.9347052 +2.546463,.9347052 +2.546463,.9347052 +2.546463,.9347052 +2.546463,.9347052 +1.219176,.1981752 +1.219176,.1981752 +1.219176,.1981752 +1.219176,.1981752 +1.219176,.1981752 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +2.546463,.9347052 +2.546463,.9347052 +2.546463,.9347052 +2.546463,.9347052 +2.546463,.9347052 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.796153,1.333988 +3.796153,1.333988 +3.796153,1.333988 +3.796153,1.333988 +3.796153,1.333988 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.844422,1.346623 +3.832771,1.343588 +3.832771,1.343588 +3.832771,1.343588 +2.26284,.8166208 +2.26284,.8166208 +2.26284,.8166208 +2.894628,1.062857 +2.894628,1.062857 +2.894628,1.062857 +2.555775,.9383554 +2.555775,.9383554 +2.555775,.9383554 +2.361806,.8594266 +2.394458,.8731568 +2.617561,.9622431 +2.617561,.9622431 +2.617561,.9622431 +2.130122,.7561795 +2.130122,.7561795 +2.130122,.7561795 +3.388847,1.22049 +3.388847,1.22049 +3.210522,1.166433 +3.210522,1.166433 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +3.747314,1.321039 +3.747314,1.321039 +3.747314,1.321039 +3.747314,1.321039 +3.747314,1.321039 +3.630116,1.289265 +2.305294,.8352081 +2.305294,.8352081 +2.084804,.7346748 +2.084804,.7346748 +2.084804,.7346748 +2.084804,.7346748 +2.084804,.7346748 +2.084804,.7346748 +2.084804,.7346748 +2.084804,.7346748 +2.084804,.7346748 +2.084804,.7346748 +2.47308,.9054645 +2.47308,.9054645 +2.47308,.9054645 +2.47308,.9054645 +2.47308,.9054645 +2.47308,.9054645 +2.47308,.9054645 +2.47308,.9054645 +2.47308,.9054645 +2.47308,.9054645 +2.47308,.9054645 +2.47308,.9054645 +2.47308,.9054645 +2.47308,.9054645 +2.47308,.9054645 +3.891317,1.358748 +3.891317,1.358748 +3.891317,1.358748 +3.891317,1.358748 +3.891317,1.358748 +1.863055,.6222177 +1.863055,.6222177 +1.863055,.6222177 +1.863055,.6222177 +1.863055,.6222177 +2.969217,1.088298 +2.969217,1.088298 +2.969217,1.088298 +2.969217,1.088298 +2.969217,1.088298 +2.969217,1.088298 +2.969217,1.088298 +2.969217,1.088298 +2.969217,1.088298 +2.969217,1.088298 +1.881556,.6320992 +1.881556,.6320992 +1.881556,.6320992 +2.591486,.9522314 +2.591486,.9522314 +2.591486,.9522314 +2.591486,.9522314 +2.591486,.9522314 +2.591486,.9522314 +3.400578,1.223945 +3.400578,1.223945 +3.400578,1.223945 +2.527903,.92739 +2.527903,.92739 +2.527903,.92739 +2.591486,.9522314 +2.591486,.9522314 +2.591486,.9522314 +2.591486,.9522314 +2.591486,.9522314 +2.591486,.9522314 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +2.93515,1.076759 +2.93515,1.076759 +2.93515,1.076759 +2.898298,1.064124 +2.898298,1.064124 +2.898298,1.064124 +3.891527,1.358802 +3.891527,1.358802 +3.891527,1.358802 +3.891527,1.358802 +3.891527,1.358802 +3.796047,1.33396 +3.796047,1.33396 +3.796047,1.33396 +3.796047,1.33396 +3.796047,1.33396 +3.891527,1.358802 +3.891527,1.358802 +3.891527,1.358802 +3.891527,1.358802 +3.891527,1.358802 +2.825455,1.038669 +2.825455,1.038669 +2.825455,1.038669 +2.825455,1.038669 +2.825455,1.038669 +6.980622,1.943138 +6.980622,1.943138 +6.980622,1.943138 +2.602159,.9563414 +2.602159,.9563414 +2.602159,.9563414 +2.602159,.9563414 +2.602159,.9563414 +2.602159,.9563414 +2.46523,.902285 +2.46523,.902285 +2.46523,.902285 +2.757022,1.014151 +2.757022,1.014151 +2.757022,1.014151 +3.84255,1.346136 +3.84255,1.346136 +3.84255,1.346136 +3.84255,1.346136 +3.84255,1.346136 +2.860068,1.050845 +2.860068,1.050845 +2.860068,1.050845 +2.860068,1.050845 +2.860068,1.050845 +4.405455,1.482844 +4.405455,1.482844 +4.405455,1.482844 +4.405455,1.482844 +4.405455,1.482844 +2.500659,.9165544 +2.500659,.9165544 +2.500659,.9165544 +2.500659,.9165544 +2.500659,.9165544 +1.569055,.4504738 +1.569055,.4504738 +1.569055,.4504738 +1.569055,.4504738 +1.569055,.4504738 +2.108053,.7457647 +2.108053,.7457647 +2.108053,.7457647 +2.108053,.7457647 +2.108053,.7457647 +2.807758,1.032386 +2.807758,1.032386 +2.807758,1.032386 +2.807758,1.032386 +2.807758,1.032386 +2.807758,1.032386 +2.807758,1.032386 +2.807758,1.032386 +2.807758,1.032386 +2.426471,.8864381 +2.426471,.8864381 +2.426471,.8864381 +2.426471,.8864381 +2.426471,.8864381 +2.426471,.8864381 +2.426471,.8864381 +2.426471,.8864381 +2.426471,.8864381 +2.426471,.8864381 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +3.400667,1.223971 +3.400667,1.223971 +3.400667,1.223971 +3.400667,1.223971 +3.400667,1.223971 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +3.589554,1.278028 +3.589554,1.278028 +3.589554,1.278028 +3.589554,1.278028 +3.589554,1.278028 +2.562108,.9408303 +2.562108,.9408303 +2.529939,.9281953 +2.529939,.9281953 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.529939,.9281953 +2.529939,.9281953 +3.772952,1.327858 +3.772952,1.327858 +3.772952,1.327858 +3.772952,1.327858 +3.772952,1.327858 +3.867851,1.352699 +3.867851,1.352699 +3.867851,1.352699 +3.867851,1.352699 +3.867851,1.352699 +3.819288,1.340064 +3.819288,1.340064 +3.819288,1.340064 +3.819288,1.340064 +3.819288,1.340064 +3.260594,1.181909 +3.260594,1.181909 +3.260594,1.181909 +3.260594,1.181909 +3.260594,1.181909 +3.260594,1.181909 +3.260594,1.181909 +3.260594,1.181909 +3.260594,1.181909 +3.260594,1.181909 +3.867851,1.352699 +3.867851,1.352699 +3.867851,1.352699 +3.867851,1.352699 +3.867851,1.352699 +2.557148,.9388924 +2.557148,.9388924 +2.557148,.9388924 +2.557148,.9388924 +2.557148,.9388924 +2.557148,.9388924 +2.557148,.9388924 +2.557148,.9388924 +2.557148,.9388924 +2.552848,.9372095 +2.552848,.9372095 +2.552848,.9372095 +2.198702,.7878671 +2.198702,.7878671 +2.198702,.7878671 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +3.35797,1.211336 +3.35797,1.211336 +3.35797,1.211336 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +1.881605,.6321253 +1.881605,.6321253 +1.881605,.6321253 +2.614744,.9611662 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +3.636183,1.290935 +12.85198,2.553498 +5.721127,1.744166 +5.721127,1.744166 +5.721127,1.744166 +5.721127,1.744166 +5.721127,1.744166 +4.130108,1.418304 +4.130108,1.418304 +4.130108,1.418304 +2.529039,.9278395 +2.529039,.9278395 +2.529039,.9278395 +1.860226,.6206981 +1.860226,.6206981 +1.860226,.6206981 +1.860226,.6206981 +1.860226,.6206981 +2.9018,1.065331 +2.9018,1.065331 +2.9018,1.065331 +2.9018,1.065331 +2.9018,1.065331 +2.864537,1.052407 +2.864537,1.052407 +2.864537,1.052407 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +2.157247,.7688327 +2.157247,.7688327 +2.157247,.7688327 +2.157247,.7688327 +2.157247,.7688327 +2.112833,.7480298 +2.112833,.7480298 +2.112833,.7480298 +4.413023,1.48456 +4.413023,1.48456 +4.413023,1.48456 +3.249435,1.178481 +3.249435,1.178481 +3.249435,1.178481 +3.249435,1.178481 +3.249435,1.178481 +6.123767,1.812177 +6.123767,1.812177 +6.123767,1.812177 +6.123767,1.812177 +6.123767,1.812177 +2.56143,.9405659 +2.56143,.9405659 +2.56143,.9405659 +2.56143,.9405659 +2.56143,.9405659 +2.56143,.9405659 +3.318938,1.199645 +3.318938,1.199645 +3.318938,1.199645 +2.56143,.9405659 +2.56143,.9405659 +2.56143,.9405659 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +2.440267,.8921073 +2.440267,.8921073 +2.440267,.8921073 +2.440267,.8921073 +2.440267,.8921073 +2.440267,.8921073 +2.501646,.9169487 +2.501646,.9169487 +2.501646,.9169487 +2.501646,.9169487 +2.501646,.9169487 +2.501646,.9169487 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +1.881605,.6321253 +1.881605,.6321253 +1.881605,.6321253 +3.217314,1.168547 +3.217314,1.168547 +3.217314,1.168547 +4.322515,1.463838 +4.322515,1.463838 +4.322515,1.463838 +3.865038,1.351972 +3.865038,1.351972 +3.865038,1.351972 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.663023,1.298289 +3.663023,1.298289 +3.663023,1.298289 +3.663023,1.298289 +3.663023,1.298289 +4.201429,1.435425 +4.201429,1.435425 +4.201429,1.435425 +4.201429,1.435425 +4.201429,1.435425 +3.618582,1.286082 +3.618582,1.286082 +3.618582,1.286082 +3.618582,1.286082 +3.618582,1.286082 +4.367822,1.474265 +4.367822,1.474265 +4.367822,1.474265 +4.367822,1.474265 +4.367822,1.474265 +3.661806,1.297956 +3.661806,1.297956 +3.661806,1.297956 +3.661806,1.297956 +3.661806,1.297956 +3.661806,1.297956 +3.661806,1.297956 +3.661806,1.297956 +3.661806,1.297956 +3.661806,1.297956 +3.661806,1.297956 +3.661806,1.297956 +3.661806,1.297956 +3.661806,1.297956 +3.661806,1.297956 +3.706777,1.310163 +3.706777,1.310163 +3.706777,1.310163 +3.706777,1.310163 +3.706777,1.310163 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +2.132736,.7574055 +2.132736,.7574055 +2.132736,.7574055 +2.132736,.7574055 +2.132736,.7574055 +2.467866,.9033539 +2.467866,.9033539 +2.467866,.9033539 +2.467866,.9033539 +2.467866,.9033539 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +5.721127,1.744166 +5.721127,1.744166 +5.721127,1.744166 +5.721127,1.744166 +5.721127,1.744166 +1.573443,.4532661 +1.573443,.4532661 +1.573443,.4532661 +1.573443,.4532661 +1.573443,.4532661 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.507652,.9193467 +2.529938,.9281946 +2.529938,.9281946 +2.529938,.9281946 +2.529938,.9281946 +2.529938,.9281946 +2.865365,1.052696 +2.865365,1.052696 +2.865365,1.052696 +2.865365,1.052696 +2.865365,1.052696 +2.529938,.9281946 +2.529938,.9281946 +2.529938,.9281946 +2.529938,.9281946 +2.529938,.9281946 +3.849666,1.347986 +3.849666,1.347986 +3.849666,1.347986 +3.849666,1.347986 +3.849666,1.347986 +4.653718,1.537667 +4.653718,1.537667 +4.653718,1.537667 +2.797408,1.028693 +2.797408,1.028693 +2.797408,1.028693 +2.797408,1.028693 +2.797408,1.028693 +2.131827,.7569795 +2.131827,.7569795 +2.131827,.7569795 +2.131827,.7569795 +3.314208,1.198219 +3.314208,1.198219 +3.314208,1.198219 +3.314208,1.198219 +3.314208,1.198219 +1.816327,.5968165 +1.816327,.5968165 +1.816327,.5968165 +1.816327,.5968165 +1.816327,.5968165 +1.816327,.5968165 +1.569674,.4508681 +1.569674,.4508681 +1.569674,.4508681 +2.833322,1.04145 +2.833322,1.04145 +2.833322,1.04145 +2.501646,.9169487 +2.501646,.9169487 +2.501646,.9169487 +2.467866,.9033539 +2.467866,.9033539 +2.467866,.9033539 +2.467866,.9033539 +2.467866,.9033539 +2.865367,1.052696 +2.865367,1.052696 +2.865367,1.052696 +2.865367,1.052696 +2.865367,1.052696 +3.877208,1.355115 +3.877208,1.355115 +3.877208,1.355115 +10.66272,2.366753 +10.66272,2.366753 +10.66272,2.366753 +2.527969,.9274161 +2.527969,.9274161 +2.527969,.9274161 +2.527969,.9274161 +2.527969,.9274161 +2.527969,.9274161 +2.527969,.9274161 +2.527969,.9274161 +2.527969,.9274161 +2.527969,.9274161 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.159854,.7700406 +2.159854,.7700406 +2.159854,.7700406 +2.897866,1.063975 +2.897866,1.063975 +2.897866,1.063975 +2.897866,1.063975 +2.897866,1.063975 +2.558634,.9394735 +2.558634,.9394735 +2.558634,.9394735 +2.558634,.9394735 +2.558634,.9394735 +2.526509,.9268385 +2.526509,.9268385 +2.526509,.9268385 +2.526509,.9268385 +2.526509,.9268385 +2.558634,.9394735 +2.558634,.9394735 +2.558634,.9394735 +2.558634,.9394735 +2.558634,.9394735 +2.497224,.9151798 +2.497224,.9151798 +2.497224,.9151798 +2.497224,.9151798 +2.497224,.9151798 +2.497224,.9151798 +2.497224,.9151798 +2.497224,.9151798 +2.497224,.9151798 +2.497224,.9151798 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.559263,.9397192 +2.559263,.9397192 +2.559263,.9397192 +6.32092,1.843865 +6.32092,1.843865 +6.32092,1.843865 +2.090163,.7372421 +2.090163,.7372421 +2.090163,.7372421 +2.418604,.8831904 +2.418604,.8831904 +2.418604,.8831904 +3.937499,1.370546 +3.937499,1.370546 +3.937499,1.370546 +3.937499,1.370546 +3.937499,1.370546 +3.937499,1.370546 +3.937499,1.370546 +3.937499,1.370546 +3.937499,1.370546 +3.937499,1.370546 +3.319307,1.199756 +3.319307,1.199756 +3.319307,1.199756 +3.319307,1.199756 +3.319307,1.199756 +3.937499,1.370546 +3.937499,1.370546 +3.937499,1.370546 +3.937499,1.370546 +3.937499,1.370546 +2.47061,.9044652 +2.47061,.9044652 +2.47061,.9044652 +2.47061,.9044652 +2.47061,.9044652 +2.43959,.8918302 +2.43959,.8918302 +2.43959,.8918302 +2.43959,.8918302 +2.43959,.8918302 +3.937499,1.370546 +3.937499,1.370546 +3.937499,1.370546 +3.937499,1.370546 +3.937499,1.370546 +9.648854,2.266839 +9.648854,2.266839 +9.648854,2.266839 +4.701001,1.547776 +4.701001,1.547776 +4.701001,1.547776 +12.9634,2.56213 +12.9634,2.56213 +12.9634,2.56213 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.873316,1.354111 +3.873316,1.354111 +3.873316,1.354111 +3.873316,1.354111 +3.873316,1.354111 +2.641842,.9714763 +2.641842,.9714763 +2.641842,.9714763 +7.50107,2.015046 +7.50107,2.015046 +7.50107,2.015046 +3.969472,1.378633 +3.969472,1.378633 +3.969472,1.378633 +2.641842,.9714763 +2.641842,.9714763 +2.641842,.9714763 +3.397566,1.223059 +2.672485,.9830087 +2.672485,.9830087 +2.672485,.9830087 +3.3057,1.195648 +3.3057,1.195648 +3.3057,1.195648 +3.3057,1.195648 +3.3057,1.195648 +3.3057,1.195648 +1.96775,.6768908 +1.96775,.6768908 +1.96775,.6768908 +2.924448,1.073106 +2.924448,1.073106 +2.924448,1.073106 +1.96775,.6768908 +1.96775,.6768908 +1.96775,.6768908 +1.658811,.5061011 +1.658811,.5061011 +1.658811,.5061011 +2.487127,.9111283 +2.487127,.9111283 +2.487127,.9111283 +2.364647,.8606288 +2.364647,.8606288 +2.364647,.8606288 +2.364647,.8606288 +2.364647,.8606288 +11.97289,2.482645 +11.97289,2.482645 +11.97289,2.482645 +2.546463,.9347052 +2.546463,.9347052 +2.546463,.9347052 +1.943044,.6642558 +1.943044,.6642558 +1.943044,.6642558 +2.897243,1.06376 +2.897243,1.06376 +2.897243,1.06376 +2.897243,1.06376 +2.897243,1.06376 +5.028218,1.615066 +5.028218,1.615066 +5.028218,1.615066 +5.028218,1.615066 +5.028218,1.615066 +2.671484,.982634 +2.671484,.982634 +2.671484,.982634 +2.671484,.982634 +2.671484,.982634 +2.252058,.8118442 +2.252058,.8118442 +2.252058,.8118442 +2.252058,.8118442 +2.252058,.8118442 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +4.823937,1.57359 +4.823937,1.57359 +4.823937,1.57359 +3.092429,1.128957 +3.092429,1.128957 +3.092429,1.128957 +2.188277,.7831147 +2.188277,.7831147 +2.188277,.7831147 +2.188277,.7831147 +2.188277,.7831147 +2.188277,.7831147 +2.188277,.7831147 +2.188277,.7831147 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +3.388847,1.22049 +3.388847,1.22049 +3.388847,1.22049 +5.156622,1.640282 +5.156622,1.640282 +5.156622,1.640282 +3.388847,1.22049 +3.388847,1.22049 +3.388847,1.22049 +2.779229,1.022174 +2.779229,1.022174 +2.779229,1.022174 +3.226882,1.171516 +3.226882,1.171516 +3.226882,1.171516 +3.219563,1.169246 +3.219563,1.169246 +3.219563,1.169246 +4.006605,1.387944 +4.006605,1.387944 +4.006605,1.387944 +3.86774,1.35267 +3.86774,1.35267 +3.86774,1.35267 +3.86774,1.35267 +3.86774,1.35267 +3.86774,1.35267 +5.06888,1.62312 +5.06888,1.62312 +5.06888,1.62312 +2.528283,.9275405 +2.528283,.9275405 +2.528283,.9275405 +2.528283,.9275405 +2.528283,.9275405 +2.13134,.7567508 +2.13134,.7567508 +2.13134,.7567508 +2.13134,.7567508 +2.13134,.7567508 +2.009945,.6981075 +2.009945,.6981075 +2.009945,.6981075 +2.009945,.6981075 +2.009945,.6981075 +2.009945,.6981075 +2.009945,.6981075 +2.009945,.6981075 +2.009945,.6981075 +2.009945,.6981075 +1.984709,.6854724 +1.984709,.6854724 +1.984709,.6854724 +1.984709,.6854724 +1.984709,.6854724 +2.009945,.6981075 +2.009945,.6981075 +2.009945,.6981075 +2.009945,.6981075 +2.009945,.6981075 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +3.388847,1.22049 +3.388847,1.22049 +3.388847,1.22049 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.074138,1.123025 +3.074138,1.123025 +3.074138,1.123025 +1.977405,.6817854 +1.977405,.6817854 +1.977405,.6817854 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +2.706466,.9956437 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +3.709599,1.310924 +1.823093,.6005346 +1.823093,.6005346 +1.823093,.6005346 +2.11674,.7498771 +2.11674,.7498771 +2.11674,.7498771 +1.234678,.2108102 +1.234678,.2108102 +1.234678,.2108102 +1.234678,.2108102 +2.331009,.8463012 +2.331009,.8463012 +2.331009,.8463012 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +9.965992,2.299178 +9.965992,2.299178 +9.965992,2.299178 +2.184676,.7814678 +2.184676,.7814678 +2.184676,.7814678 +2.496229,.9147811 +2.496229,.9147811 +2.496229,.9147811 +2.528283,.9275405 +2.528283,.9275405 +2.528283,.9275405 +1.919471,.6520494 +1.919471,.6520494 +1.919471,.6520494 +1.919471,.6520494 +1.919471,.6520494 +1.96775,.6768908 +1.96775,.6768908 +1.96775,.6768908 +1.96775,.6768908 +1.96775,.6768908 +1.658811,.5061011 +1.658811,.5061011 +1.658811,.5061011 +1.658811,.5061011 +1.658811,.5061011 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +5.109637,1.631128 +5.109637,1.631128 +5.109637,1.631128 +5.109637,1.631128 +5.109637,1.631128 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +3.353726,1.210072 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.432253,.888818 +2.432253,.888818 +2.432253,.888818 +2.432253,.888818 +2.432253,.888818 +2.432253,.888818 +2.432253,.888818 +2.432253,.888818 +2.432253,.888818 +2.432253,.888818 +2.432253,.888818 +2.432253,.888818 +2.11674,.7498771 +2.11674,.7498771 +2.11674,.7498771 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +2.11674,.7498771 +2.11674,.7498771 +2.11674,.7498771 +2.510964,.9206669 +2.510964,.9206669 +2.510964,.9206669 +1.859845,.6204931 +1.859845,.6204931 +1.859845,.6204931 +2.80817,1.032533 +2.80817,1.032533 +2.80817,1.032533 +2.80817,1.032533 +2.80817,1.032533 +3.249435,1.178481 +3.249435,1.178481 +3.249435,1.178481 +3.249435,1.178481 +3.249435,1.178481 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.479438,.9080318 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +2.672485,.9830087 +2.672485,.9830087 +2.672485,.9830087 +4.154732,1.424248 +4.154732,1.424248 +4.154732,1.424248 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +4.958067,1.601016 +4.958067,1.601016 +4.958067,1.601016 +4.958067,1.601016 +4.958067,1.601016 +3.778405,1.329302 +3.778405,1.329302 +3.778405,1.329302 +3.778405,1.329302 +3.778405,1.329302 +4.958067,1.601016 +4.958067,1.601016 +4.958067,1.601016 +4.958067,1.601016 +4.958067,1.601016 +2.131344,.7567526 +2.131344,.7567526 +2.131344,.7567526 +2.504389,.9180446 +2.504389,.9180446 +2.504389,.9180446 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +3.092429,1.128957 +3.092429,1.128957 +3.092429,1.128957 +3.092429,1.128957 +3.092429,1.128957 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.066799,1.120634 +3.066799,1.120634 +3.066799,1.120634 +3.066799,1.120634 +3.066799,1.120634 +3.066799,1.120634 +2.735499,1.006314 +2.735499,1.006314 +2.735499,1.006314 +2.703434,.9945226 +2.703434,.9945226 +2.703434,.9945226 +2.561175,.9404663 +2.561175,.9404663 +2.561175,.9404663 +3.801459,1.335385 +3.801459,1.335385 +3.801459,1.335385 +3.801459,1.335385 +3.801459,1.335385 +3.801459,1.335385 +3.75373,1.32275 +3.75373,1.32275 +3.75373,1.32275 +4.043763,1.397176 +4.043763,1.397176 +4.043763,1.397176 +2.476166,.9067116 +2.476166,.9067116 +2.476166,.9067116 +3.473341,1.245117 +3.473341,1.245117 +3.473341,1.245117 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.865367,1.052696 +2.865367,1.052696 +2.865367,1.052696 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +1.963551,.6747544 +1.963551,.6747544 +1.963551,.6747544 +1.963551,.6747544 +1.963551,.6747544 +2.865367,1.052696 +2.865367,1.052696 +2.865367,1.052696 +2.865367,1.052696 +2.865367,1.052696 +2.585035,.949739 +2.585035,.949739 +2.585035,.949739 +2.585035,.949739 +2.585035,.949739 +2.0527,.7191561 +2.0527,.7191561 +2.0527,.7191561 +3.868443,1.352852 +3.868443,1.352852 +3.868443,1.352852 +2.434998,.8899459 +2.434998,.8899459 +2.434998,.8899459 +2.200659,.7887568 +2.200659,.7887568 +2.200659,.7887568 +2.200659,.7887568 +1.637984,.493466 +1.637984,.493466 +1.637984,.493466 +1.637984,.493466 +1.637984,.493466 +4.246223,1.44603 +4.246223,1.44603 +4.246223,1.44603 +4.246223,1.44603 +4.246223,1.44603 +1.428691,.3567586 +1.428691,.3567586 +1.428691,.3567586 +1.428691,.3567586 +1.428691,.3567586 +2.449357,.8958254 +2.449357,.8958254 +2.479438,.9080318 +2.898298,1.064124 +2.898298,1.064124 +2.898298,1.064124 +3.943424,1.372049 +3.943424,1.372049 +3.943424,1.372049 +1.881605,.6321253 +1.881605,.6321253 +1.881605,.6321253 +2.072416,.7287151 +2.072416,.7287151 +2.072416,.7287151 +3.221845,1.169954 +3.221845,1.169954 +3.221845,1.169954 +2.93189,1.075647 +2.93189,1.075647 +2.93189,1.075647 +2.93189,1.075647 +2.93189,1.075647 +3.170212,1.153798 +3.170212,1.153798 +3.170212,1.153798 +3.733544,1.317358 +3.733544,1.317358 +3.733544,1.317358 +2.077047,.7309471 +2.077047,.7309471 +2.077047,.7309471 +2.077047,.7309471 +2.077047,.7309471 +4.446885,1.492204 +4.446885,1.492204 +4.446885,1.492204 +4.446885,1.492204 +4.446885,1.492204 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.559015,.9396225 +2.733397,1.005545 +2.733397,1.005545 +2.561698,.9406704 +2.561698,.9406704 +2.561698,.9406704 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +3.210522,1.166433 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +2.562108,.9408303 +3.29057,1.191061 +3.29057,1.191061 +3.29057,1.191061 +3.29057,1.191061 +3.29057,1.191061 +2.401563,.8761198 +2.401563,.8761198 +2.401563,.8761198 +2.529939,.9281953 +2.529939,.9281953 +2.529939,.9281953 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +2.591554,.9522575 +3.972734,1.379454 +3.972734,1.379454 +3.972734,1.379454 +3.972734,1.379454 +3.972734,1.379454 +2.585035,.949739 +2.585035,.949739 +2.585035,.949739 +2.585035,.949739 +2.585035,.949739 +4.021121,1.391561 +4.021121,1.391561 +4.021121,1.391561 +4.021121,1.391561 +3.015861,1.103885 +3.015861,1.103885 +2.533434,.9295755 +2.533434,.9295755 +2.533434,.9295755 +2.533434,.9295755 +1.985358,.6857995 +1.985358,.6857995 +1.985358,.6857995 +1.985358,.6857995 +3.239251,1.175342 +3.239251,1.175342 +2.675893,.9842833 +2.675893,.9842833 +2.675893,.9842833 +2.675893,.9842833 +2.614744,.9611662 +3.972734,1.379454 +3.972734,1.379454 +3.972734,1.379454 +3.239251,1.175342 +3.239251,1.175342 +2.585035,.949739 +2.585035,.949739 +2.585035,.949739 +2.585035,.949739 +2.614744,.9611662 +2.614744,.9611662 +2.524031,.9258574 +2.524031,.9258574 +3.971869,1.379237 +3.971869,1.379237 +3.971869,1.379237 +3.971869,1.379237 +3.239251,1.175342 +3.239251,1.175342 +2.614744,.9611662 +2.614744,.9611662 +2.614744,.9611662 +2.614744,.9611662 +2.614744,.9611662 +2.614744,.9611662 +3.742794,1.319832 +3.742794,1.319832 +3.239251,1.175342 +3.239251,1.175342 +3.239251,1.175342 +3.239251,1.175342 +2.523036,.9254631 +2.523036,.9254631 +2.523036,.9254631 +2.523036,.9254631 +3.239251,1.175342 +2.585035,.949739 +2.613032,.9605114 +2.613032,.9605114 +2.613032,.9605114 +2.533434,.9295755 +2.533434,.9295755 +2.533434,.9295755 +3.907976,1.36302 +3.907976,1.36302 +3.907976,1.36302 +3.239251,1.175342 +3.239251,1.175342 +3.239251,1.175342 +2.582071,.9485919 +2.582071,.9485919 +2.582071,.9485919 +2.585035,.949739 +2.533434,.9295755 +2.533434,.9295755 +2.533434,.9295755 +2.614744,.9611662 +3.862114,1.351215 +2.312119,.8381645 +2.312119,.8381645 +2.312119,.8381645 +2.533434,.9295755 +2.533434,.9295755 +2.533434,.9295755 +3.239251,1.175342 +3.239251,1.175342 +3.138836,1.143852 +3.239251,1.175342 +3.239251,1.175342 +2.584091,.9493738 +2.584091,.9493738 +3.972734,1.379454 +3.972734,1.379454 +3.239251,1.175342 +3.239251,1.175342 +3.812216,1.338211 +3.812216,1.338211 +2.533434,.9295755 +2.533434,.9295755 +1.985358,.6857995 +1.985358,.6857995 +3.239251,1.175342 +2.729662,1.004178 +2.530091,.9282553 +3.239251,1.175342 +3.940498,1.371307 +2.440052,.8920193 +1.985358,.6857995 +2.613792,.9608021 +2.995787,1.097207 +2.447012,.8948677 +2.519222,.9239499 +2.519222,.9239499 +2.519222,.9239499 +1.983472,.6848489 +1.983472,.6848489 +1.983472,.6848489 +1.983472,.6848489 +1.983472,.6848489 +2.226097,.8002499 +2.226097,.8002499 +2.226097,.8002499 +2.226097,.8002499 +2.226097,.8002499 +3.388498,1.220387 +3.388498,1.220387 +3.388498,1.220387 +6.095644,1.807574 +6.095644,1.807574 +6.095644,1.807574 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +3.529658,1.261201 +3.529658,1.261201 +3.529658,1.261201 +3.241806,1.17613 +3.241806,1.17613 +3.241806,1.17613 +3.241806,1.17613 +3.241806,1.17613 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +1.537567,.4302013 +1.537567,.4302013 +1.537567,.4302013 +4.02236,1.391869 +4.02236,1.391869 +4.02236,1.391869 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +1.803713,.5898471 +1.803713,.5898471 +1.803713,.5898471 +1.271567,.2402499 +1.271567,.2402499 +1.271567,.2402499 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +1.873549,.6278344 +1.873549,.6278344 +1.873549,.6278344 +4.001864,1.38676 +4.001864,1.38676 +4.001864,1.38676 +4.001864,1.38676 +4.001864,1.38676 +2.318401,.8408776 +2.318401,.8408776 +2.318401,.8408776 +2.200131,.7885171 +2.200131,.7885171 +2.200131,.7885171 +5.193556,1.647419 +5.193556,1.647419 +5.193556,1.647419 +2.318401,.8408776 +2.318401,.8408776 +2.318401,.8408776 +2.318401,.8408776 +2.318401,.8408776 +2.318401,.8408776 +2.304625,.834918 +2.304625,.834918 +2.304625,.834918 +2.304625,.834918 +2.304625,.834918 +2.304625,.834918 +2.304625,.834918 +2.304625,.834918 +2.304625,.834918 +2.304625,.834918 +1.730415,.5483614 +1.730415,.5483614 +1.730415,.5483614 +1.730415,.5483614 +1.730415,.5483614 +2.304625,.834918 +2.304625,.834918 +2.304625,.834918 +2.304625,.834918 +2.304625,.834918 +1.730415,.5483614 +1.730415,.5483614 +1.730415,.5483614 +1.730415,.5483614 +1.730415,.5483614 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.564938,.9419343 +2.564938,.9419343 +2.564938,.9419343 +1.605671,.4735419 +1.605671,.4735419 +1.605671,.4735419 +4.367107,1.474101 +4.367107,1.474101 +4.367107,1.474101 +2.382038,.8679566 +2.382038,.8679566 +2.929041,1.074675 +2.929041,1.074675 +6.744273,1.908694 +6.744273,1.908694 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +1.802083,.5889429 +1.802083,.5889429 +1.802083,.5889429 +2.277638,.8231391 +2.277638,.8231391 +2.277638,.8231391 +2.671651,.9826966 +2.671651,.9826966 +2.671651,.9826966 +3.634392,1.290442 +3.634392,1.290442 +3.634392,1.290442 +3.634392,1.290442 +3.634392,1.290442 +2.431441,.8884842 +2.431441,.8884842 +2.431441,.8884842 +2.431441,.8884842 +2.431441,.8884842 +2.728863,1.003885 +2.728863,1.003885 +2.728863,1.003885 +2.728863,1.003885 +2.728863,1.003885 +5.76923,1.752539 +5.76923,1.752539 +5.76923,1.752539 +5.76923,1.752539 +5.76923,1.752539 +7.57045,2.024253 +7.57045,2.024253 +7.57045,2.024253 +7.57045,2.024253 +7.57045,2.024253 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +3.674491,1.301415 +3.674491,1.301415 +3.674491,1.301415 +5.783241,1.754964 +5.783241,1.754964 +5.783241,1.754964 +3.926896,1.367849 +3.926896,1.367849 +3.926896,1.367849 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.317431,.8404593 +2.317431,.8404593 +2.317431,.8404593 +2.317431,.8404593 +2.317431,.8404593 +1.959517,.6726977 +1.959517,.6726977 +1.959517,.6726977 +1.959517,.6726977 +1.959517,.6726977 +2.885831,1.059813 +2.885831,1.059813 +2.885831,1.059813 +2.885831,1.059813 +2.885831,1.059813 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +3.566238,1.271511 +3.566238,1.271511 +3.566238,1.271511 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +3.658809,1.297138 +3.658809,1.297138 +3.658809,1.297138 +3.910136,1.363572 +3.910136,1.363572 +3.910136,1.363572 +3.093726,1.129376 +3.093726,1.129376 +3.093726,1.129376 +3.658809,1.297138 +3.658809,1.297138 +3.658809,1.297138 +1.570712,.4515291 +1.570712,.4515291 +1.570712,.4515291 +1.570712,.4515291 +1.570712,.4515291 +2.816014,1.035322 +2.816014,1.035322 +2.816014,1.035322 +2.816014,1.035322 +2.816014,1.035322 +2.277471,.8230656 +2.277471,.8230656 +2.277471,.8230656 +2.055049,.7202997 +2.055049,.7202997 +2.055049,.7202997 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +4.144635,1.421815 +4.144635,1.421815 +4.144635,1.421815 +4.144635,1.421815 +4.144635,1.421815 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +4.679659,1.543225 +4.679659,1.543225 +4.679659,1.543225 +4.679659,1.543225 +4.679659,1.543225 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +1.769963,.5709586 +1.769963,.5709586 +1.769963,.5709586 +2.237043,.8051547 +2.237043,.8051547 +2.237043,.8051547 +2.055125,.7203366 +2.055125,.7203366 +2.055125,.7203366 +2.055125,.7203366 +2.055125,.7203366 +3.684617,1.304167 +3.684617,1.304167 +3.684617,1.304167 +2.400074,.8754996 +2.400074,.8754996 +2.400074,.8754996 +2.915293,1.06997 +2.915293,1.06997 +2.915293,1.06997 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +3.232274,1.173186 +3.232274,1.173186 +3.232274,1.173186 +2.557396,.9389898 +2.557396,.9389898 +2.557396,.9389898 +2.595517,.9537859 +2.595517,.9537859 +2.595517,.9537859 +3.734288,1.317557 +3.734288,1.317557 +3.734288,1.317557 +3.734288,1.317557 +3.734288,1.317557 +3.734288,1.317557 +3.734288,1.317557 +3.734288,1.317557 +3.734288,1.317557 +3.54379,1.265197 +3.54379,1.265197 +3.54379,1.265197 +3.734288,1.317557 +3.734288,1.317557 +3.734288,1.317557 +5.043943,1.618188 +5.043943,1.618188 +5.043943,1.618188 +13.89814,2.631755 +13.89814,2.631755 +13.89814,2.631755 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.566238,1.271511 +3.566238,1.271511 +3.566238,1.271511 +2.513046,.9214954 +2.513046,.9214954 +2.513046,.9214954 +5.91211,1.777003 +5.91211,1.777003 +5.91211,1.777003 +8.525381,2.143048 +8.525381,2.143048 +8.525381,2.143048 +3.289754,1.190813 +3.289754,1.190813 +3.289754,1.190813 +2.254524,.8129388 +2.254524,.8129388 +2.254524,.8129388 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +1.576273,.4550635 +1.576273,.4550635 +1.576273,.4550635 +2.374941,.8649725 +2.374941,.8649725 +2.374941,.8649725 +2.374941,.8649725 +2.374941,.8649725 +2.374941,.8649725 +2.374941,.8649725 +2.374941,.8649725 +2.374941,.8649725 +2.374941,.8649725 +1.568908,.4503798 +1.568908,.4503798 +1.568908,.4503798 +1.568908,.4503798 +1.568908,.4503798 +3.283026,1.188766 +3.283026,1.188766 +3.283026,1.188766 +3.283026,1.188766 +3.283026,1.188766 +3.283026,1.188766 +3.543283,1.265054 +3.543283,1.265054 +3.543283,1.265054 +3.543283,1.265054 +3.543283,1.265054 +6.51634,1.874313 +6.51634,1.874313 +6.51634,1.874313 +6.51634,1.874313 +6.51634,1.874313 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +3.574538,1.273836 +3.574538,1.273836 +3.574538,1.273836 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.850536,1.047507 +2.850536,1.047507 +2.850536,1.047507 +2.486362,.9108208 +2.486362,.9108208 +2.486362,.9108208 +2.486362,.9108208 +2.486362,.9108208 +3.634118,1.290366 +3.634118,1.290366 +3.634118,1.290366 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.037416,1.111007 +3.037416,1.111007 +3.037416,1.111007 +3.557537,1.269068 +3.557537,1.269068 +3.557537,1.269068 +3.557537,1.269068 +3.557537,1.269068 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +7.475399,2.011617 +7.475399,2.011617 +7.475399,2.011617 +7.475399,2.011617 +7.475399,2.011617 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.541681,1.264601 +3.541681,1.264601 +3.541681,1.264601 +2.659251,.9780447 +2.659251,.9780447 +2.659251,.9780447 +3.361008,1.212241 +3.361008,1.212241 +3.361008,1.212241 +3.497213,1.251966 +3.497213,1.251966 +3.497213,1.251966 +3.499219,1.25254 +3.499219,1.25254 +3.499219,1.25254 +3.499219,1.25254 +3.499219,1.25254 +1.900672,.6422076 +1.900672,.6422076 +1.900672,.6422076 +2.031232,.7086423 +2.031232,.7086423 +2.031232,.7086423 +1.900672,.6422076 +1.900672,.6422076 +1.900672,.6422076 +1.900672,.6422076 +1.900672,.6422076 +1.900672,.6422076 +1.781066,.5772121 +1.781066,.5772121 +1.781066,.5772121 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +2.564938,.9419343 +2.564938,.9419343 +2.564938,.9419343 +2.597552,.9545693 +2.597552,.9545693 +2.346762,.8530365 +2.346762,.8530365 +2.346762,.8530365 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.312187,.8381938 +2.312187,.8381938 +2.312187,.8381938 +2.814746,1.034872 +2.814746,1.034872 +2.814746,1.034872 +1.956876,.6713493 +1.956876,.6713493 +1.956876,.6713493 +2.277638,.8231391 +2.277638,.8231391 +2.277638,.8231391 +2.277638,.8231391 +2.277638,.8231391 +2.324477,.8434953 +2.324477,.8434953 +2.324477,.8434953 +1.965475,.6757337 +1.965475,.6757337 +1.965475,.6757337 +1.965475,.6757337 +1.965475,.6757337 +1.965475,.6757337 +2.307871,.8363256 +2.307871,.8363256 +2.76341,1.016466 +2.76341,1.016466 +2.915293,1.06997 +2.915293,1.06997 +2.915293,1.06997 +2.029396,.7077381 +2.029396,.7077381 +2.029396,.7077381 +2.400074,.8754996 +2.400074,.8754996 +2.400074,.8754996 +2.430014,.8878972 +2.430014,.8878972 +2.430014,.8878972 +2.430014,.8878972 +2.430014,.8878972 +3.026027,1.107251 +3.026027,1.107251 +3.026027,1.107251 +3.026027,1.107251 +3.026027,1.107251 +2.430014,.8878972 +2.430014,.8878972 +2.430014,.8878972 +2.430014,.8878972 +2.430014,.8878972 +3.436553,1.234469 +3.436553,1.234469 +3.436553,1.234469 +3.870037,1.353264 +3.870037,1.353264 +3.870037,1.353264 +2.39872,.8749351 +2.39872,.8749351 +2.39872,.8749351 +4.094981,1.409762 +4.094981,1.409762 +4.094981,1.409762 +2.276353,.8225746 +2.276353,.8225746 +2.276353,.8225746 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +5.615803,1.725585 +1.669348,.5124334 +1.669348,.5124334 +1.669348,.5124334 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.132067,.7570921 +2.132067,.7570921 +2.132067,.7570921 +1.875839,.629056 +1.875839,.629056 +1.875839,.629056 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +5.914585,1.777421 +5.914585,1.777421 +5.914585,1.777421 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +5.002394,1.609917 +5.002394,1.609917 +5.002394,1.609917 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.094165,1.129518 +3.094165,1.129518 +3.094165,1.129518 +3.094165,1.129518 +3.094165,1.129518 +2.828198,1.03964 +2.828198,1.03964 +2.828198,1.03964 +2.828198,1.03964 +2.828198,1.03964 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +3.306707,1.195953 +3.306707,1.195953 +3.306707,1.195953 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +5.633392,1.728712 +5.633392,1.728712 +5.633392,1.728712 +5.633392,1.728712 +5.633392,1.728712 +1.802039,.5889186 +1.802039,.5889186 +1.802039,.5889186 +1.802039,.5889186 +1.802039,.5889186 +1.626048,.4861526 +1.626048,.4861526 +1.626048,.4861526 +1.626048,.4861526 +1.626048,.4861526 +2.430532,.8881103 +2.430532,.8881103 +2.430532,.8881103 +2.430532,.8881103 +2.430532,.8881103 +2.430532,.8881103 +2.430532,.8881103 +2.430532,.8881103 +2.430532,.8881103 +2.430532,.8881103 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +1.829179,.6038671 +1.829179,.6038671 +1.829179,.6038671 +1.829179,.6038671 +1.829179,.6038671 +1.806212,.5912321 +1.806212,.5912321 +1.806212,.5912321 +1.806212,.5912321 +1.806212,.5912321 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.539853,.9321062 +2.539853,.9321062 +2.539853,.9321062 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +3.139575,1.144087 +3.139575,1.144087 +3.139575,1.144087 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.564938,.9419343 +2.564938,.9419343 +2.564938,.9419343 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +3.366606,1.213905 +3.366606,1.213905 +3.366606,1.213905 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +3.77013,1.327109 +3.77013,1.327109 +3.77013,1.327109 +2.157915,.7691424 +2.157915,.7691424 +2.157915,.7691424 +2.695405,.9915482 +2.695405,.9915482 +2.695405,.9915482 +2.695405,.9915482 +2.695405,.9915482 +2.877152,1.056801 +2.877152,1.056801 +2.877152,1.056801 +2.877152,1.056801 +2.877152,1.056801 +1.993225,.6897537 +1.993225,.6897537 +1.993225,.6897537 +2.582693,.9488327 +2.582693,.9488327 +2.582693,.9488327 +3.690069,1.305645 +3.690069,1.305645 +3.690069,1.305645 +3.703813,1.309363 +3.703813,1.309363 +3.703813,1.309363 +2.539853,.9321062 +4.057222,1.400499 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +4.01608,1.390306 +4.01608,1.390306 +4.01608,1.390306 +4.01608,1.390306 +4.01608,1.390306 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +3.684617,1.304167 +3.684617,1.304167 +3.684617,1.304167 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +5.74731,1.748732 +5.74731,1.748732 +5.74731,1.748732 +5.74731,1.748732 +5.74731,1.748732 +3.189451,1.159849 +3.189451,1.159849 +3.189451,1.159849 +3.189451,1.159849 +3.189451,1.159849 +6.450341,1.864133 +6.450341,1.864133 +6.450341,1.864133 +6.450341,1.864133 +6.450341,1.864133 +3.366606,1.213905 +3.366606,1.213905 +3.366606,1.213905 +3.366606,1.213905 +3.366606,1.213905 +3.365741,1.213648 +3.365741,1.213648 +3.365741,1.213648 +3.365741,1.213648 +3.365741,1.213648 +1.824612,.6013672 +1.824612,.6013672 +1.824612,.6013672 +3.652168,1.295321 +3.652168,1.295321 +3.652168,1.295321 +2.253133,.8123216 +2.253133,.8123216 +2.253133,.8123216 +2.029396,.7077381 +2.029396,.7077381 +2.029396,.7077381 +2.029396,.7077381 +2.029396,.7077381 +2.029396,.7077381 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +1.753767,.5617661 +1.753767,.5617661 +1.753767,.5617661 +1.607124,.4744461 +2.005728,.6960073 +2.005728,.6960073 +2.005728,.6960073 +5.881168,1.771755 +5.881168,1.771755 +5.881168,1.771755 +6.623014,1.890551 +6.623014,1.890551 +6.623014,1.890551 +3.784224,1.330841 +3.784224,1.330841 +3.784224,1.330841 +3.569484,1.272421 +3.569484,1.272421 +3.569484,1.272421 +3.569484,1.272421 +3.569484,1.272421 +3.382521,1.218621 +3.382521,1.218621 +3.382521,1.218621 +3.382521,1.218621 +3.382521,1.218621 +2.262937,.8166636 +2.262937,.8166636 +2.262937,.8166636 +2.262937,.8166636 +2.262937,.8166636 +2.860109,1.05086 +2.860109,1.05086 +2.860109,1.05086 +2.860109,1.05086 +2.860109,1.05086 +2.860109,1.05086 +2.860109,1.05086 +2.860109,1.05086 +2.860109,1.05086 +2.860109,1.05086 +2.049992,.7178357 +2.049992,.7178357 +2.049992,.7178357 +2.049992,.7178357 +2.049992,.7178357 +1.918226,.651401 +1.918226,.651401 +1.918226,.651401 +1.918226,.651401 +1.918226,.651401 +1.918226,.651401 +1.918226,.651401 +1.918226,.651401 +1.918226,.651401 +1.918226,.651401 +2.049992,.7178357 +2.049992,.7178357 +2.049992,.7178357 +2.049992,.7178357 +2.049992,.7178357 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.184025,1.158146 +3.184025,1.158146 +3.184025,1.158146 +3.184025,1.158146 +3.184025,1.158146 +1.769963,.5709586 +1.769963,.5709586 +1.769963,.5709586 +1.769963,.5709586 +1.769963,.5709586 +1.74774,.5583236 +1.74774,.5583236 +1.74774,.5583236 +2.791882,1.026716 +2.791882,1.026716 +2.791882,1.026716 +1.74774,.5583236 +1.74774,.5583236 +1.74774,.5583236 +2.237043,.8051547 +2.237043,.8051547 +2.237043,.8051547 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.034047,.7100272 +2.034047,.7100272 +2.034047,.7100272 +1.829179,.6038671 +1.829179,.6038671 +1.829179,.6038671 +3.825481,1.341684 +3.825481,1.341684 +3.825481,1.341684 +2.988744,1.094853 +2.988744,1.094853 +2.988744,1.094853 +4.833775,1.575628 +4.833775,1.575628 +4.833775,1.575628 +4.833775,1.575628 +4.833775,1.575628 +4.833775,1.575628 +2.429977,.8878819 +2.429977,.8878819 +2.429977,.8878819 +2.429977,.8878819 +2.429977,.8878819 +2.429977,.8878819 +10.39924,2.341733 +10.39924,2.341733 +10.39924,2.341733 +4.075314,1.404948 +4.075314,1.404948 +4.075314,1.404948 +1.589765,.4635859 +1.589765,.4635859 +1.589765,.4635859 +1.589765,.4635859 +1.589765,.4635859 +2.376297,.8655437 +2.376297,.8655437 +2.376297,.8655437 +2.376297,.8655437 +2.376297,.8655437 +2.376297,.8655437 +2.376297,.8655437 +2.376297,.8655437 +2.376297,.8655437 +2.376297,.8655437 +2.376297,.8655437 +2.376297,.8655437 +2.376297,.8655437 +2.376297,.8655437 +2.376297,.8655437 +2.959135,1.084897 +2.959135,1.084897 +2.959135,1.084897 +2.959135,1.084897 +2.959135,1.084897 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.746437,.557578 +1.746437,.557578 +1.991739,.6890082 +1.991739,.6890082 +1.991739,.6890082 +1.768644,.570213 +1.768644,.570213 +1.768644,.570213 +2.921883,1.072228 +2.921883,1.072228 +2.921883,1.072228 +2.376217,.8655097 +2.376217,.8655097 +2.376217,.8655097 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.346762,.8530365 +2.346762,.8530365 +2.346762,.8530365 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +2.346762,.8530365 +2.346762,.8530365 +2.346762,.8530365 +2.251489,.8115918 +2.251489,.8115918 +2.251489,.8115918 +3.04111,1.112223 +3.04111,1.112223 +3.04111,1.112223 +1.903759,.6438303 +1.903759,.6438303 +1.903759,.6438303 +2.251489,.8115918 +2.251489,.8115918 +2.251489,.8115918 +2.901794,1.065329 +2.901794,1.065329 +2.901794,1.065329 +4.116184,1.414927 +4.116184,1.414927 +4.116184,1.414927 +3.667556,1.299525 +3.667556,1.299525 +3.667556,1.299525 +3.24128,1.175968 +3.24128,1.175968 +3.24128,1.175968 +5.811053,1.759762 +5.811053,1.759762 +5.811053,1.759762 +3.833315,1.34373 +3.833315,1.34373 +3.833315,1.34373 +3.833315,1.34373 +3.833315,1.34373 +3.833315,1.34373 +3.833315,1.34373 +3.833315,1.34373 +3.833315,1.34373 +4.323282,1.464015 +4.323282,1.464015 +4.323282,1.464015 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +3.637485,1.291293 +3.637485,1.291293 +3.637485,1.291293 +1.447258,.3696709 +1.447258,.3696709 +1.447258,.3696709 +1.447258,.3696709 +1.447258,.3696709 +1.447258,.3696709 +1.855771,.6183003 +1.855771,.6183003 +1.855771,.6183003 +1.486968,.3967391 +1.486968,.3967391 +1.486968,.3967391 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +4.067146,1.402941 +4.067146,1.402941 +4.067146,1.402941 +4.067146,1.402941 +4.067146,1.402941 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.126355,.7544092 +2.126355,.7544092 +2.126355,.7544092 +3.566238,1.271511 +3.566238,1.271511 +3.566238,1.271511 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +3.340976,1.206263 +3.340976,1.206263 +3.340976,1.206263 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +3.178365,1.156367 +3.178365,1.156367 +3.178365,1.156367 +8.998916,2.197104 +8.998916,2.197104 +8.998916,2.197104 +3.361056,1.212255 +3.361056,1.212255 +3.361056,1.212255 +5.88391,1.772222 +5.88391,1.772222 +5.88391,1.772222 +4.024265,1.392342 +4.024265,1.392342 +4.024265,1.392342 +2.827381,1.039351 +2.827381,1.039351 +2.827381,1.039351 +2.336844,.8488014 +2.336844,.8488014 +2.336844,.8488014 +2.336844,.8488014 +2.336844,.8488014 +2.336844,.8488014 +2.336844,.8488014 +2.336844,.8488014 +2.336844,.8488014 +2.336844,.8488014 +1.732577,.5496097 +1.732577,.5496097 +1.732577,.5496097 +1.732577,.5496097 +1.732577,.5496097 +2.217634,.7964409 +2.217634,.7964409 +2.217634,.7964409 +2.217634,.7964409 +2.217634,.7964409 +2.336844,.8488014 +2.336844,.8488014 +2.336844,.8488014 +2.336844,.8488014 +2.336844,.8488014 +2.366542,.8614296 +2.366542,.8614296 +2.366542,.8614296 +2.366542,.8614296 +2.366542,.8614296 +2.366542,.8614296 +2.366542,.8614296 +2.366542,.8614296 +2.366542,.8614296 +2.366542,.8614296 +8.781913,2.172694 +8.781913,2.172694 +8.781913,2.172694 +8.781913,2.172694 +8.781913,2.172694 +3.537384,1.263387 +3.537384,1.263387 +3.537384,1.263387 +3.537384,1.263387 +3.537384,1.263387 +3.35693,1.211027 +3.35693,1.211027 +3.35693,1.211027 +3.35693,1.211027 +3.35693,1.211027 +3.26519,1.183318 +3.26519,1.183318 +3.26519,1.183318 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +4.006281,1.387864 +4.006281,1.387864 +4.006281,1.387864 +4.006281,1.387864 +4.006281,1.387864 +2.357977,.8578042 +2.48831,.9116039 +1.993801,.6900427 +2.564938,.9419343 +2.564938,.9419343 +2.564938,.9419343 +1.802083,.5889429 +1.802083,.5889429 +1.802083,.5889429 +2.597552,.9545693 +2.597552,.9545693 +2.597552,.9545693 +1.824996,.601578 +1.824996,.601578 +2.364714,.8606569 +2.364714,.8606569 +2.364714,.8606569 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +1.904765,.6443586 +1.904765,.6443586 +1.904765,.6443586 +1.904765,.6443586 +1.904765,.6443586 +1.904765,.6443586 +1.904765,.6443586 +1.904765,.6443586 +1.904765,.6443586 +1.904765,.6443586 +1.807597,.5919981 +1.807597,.5919981 +1.807597,.5919981 +1.807597,.5919981 +1.807597,.5919981 +2.035605,.7107933 +2.035605,.7107933 +2.035605,.7107933 +2.035605,.7107933 +2.035605,.7107933 +1.706292,.5343226 +1.706292,.5343226 +1.706292,.5343226 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +1.806779,.5915456 +1.806779,.5915456 +1.806779,.5915456 +2.406329,.8781024 +2.406329,.8781024 +2.406329,.8781024 +2.406329,.8781024 +2.406329,.8781024 +2.406329,.8781024 +2.406329,.8781024 +2.406329,.8781024 +2.406329,.8781024 +2.996532,1.097456 +2.996532,1.097456 +2.996532,1.097456 +3.340976,1.206263 +3.340976,1.206263 +3.340976,1.206263 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +3.075299,1.123402 +3.075299,1.123402 +3.075299,1.123402 +2.563995,.9415665 +2.563995,.9415665 +2.563995,.9415665 +1.715336,.5396088 +1.715336,.5396088 +1.715336,.5396088 +1.715336,.5396088 +1.715336,.5396088 +1.715336,.5396088 +2.563995,.9415665 +2.563995,.9415665 +2.563995,.9415665 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +8.418341,2.130413 +8.418341,2.130413 +8.418341,2.130413 +2.009255,.6977642 +2.009255,.6977642 +2.009255,.6977642 +2.376255,.8655258 +2.376255,.8655258 +2.376255,.8655258 +2.009255,.6977642 +2.009255,.6977642 +2.009255,.6977642 +3.291824,1.191442 +3.291824,1.191442 +3.291824,1.191442 +2.539853,.9321062 +2.539853,.9321062 +2.539853,.9321062 +3.169796,1.153667 +3.169796,1.153667 +3.169796,1.153667 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +1.982043,.6841279 +1.982043,.6841279 +1.982043,.6841279 +3.689309,1.305439 +3.689309,1.305439 +3.689309,1.305439 +1.967226,.6766247 +1.967226,.6766247 +1.967226,.6766247 +1.746877,.5578295 +1.746877,.5578295 +1.746877,.5578295 +2.486362,.9108208 +2.486362,.9108208 +2.486362,.9108208 +1.320799,.2782372 +1.320799,.2782372 +1.320799,.2782372 +1.482364,.3936382 +1.482364,.3936382 +1.482364,.3936382 +3.546413,1.265937 +3.546413,1.265937 +3.546413,1.265937 +3.737052,1.318297 +3.737052,1.318297 +3.737052,1.318297 +3.737052,1.318297 +3.737052,1.318297 +3.737052,1.318297 +3.546413,1.265937 +3.546413,1.265937 +3.546413,1.265937 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +5.682895,1.737461 +5.682895,1.737461 +5.682895,1.737461 +3.557537,1.269068 +3.557537,1.269068 +3.557537,1.269068 +2.207864,.7920257 +2.207864,.7920257 +2.207864,.7920257 +2.207864,.7920257 +2.207864,.7920257 +3.334049,1.204188 +3.334049,1.204188 +3.334049,1.204188 +3.334049,1.204188 +3.334049,1.204188 +4.774291,1.563245 +4.774291,1.563245 +4.774291,1.563245 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +2.915293,1.06997 +2.915293,1.06997 +2.915293,1.06997 +2.430267,.8880011 +2.430267,.8880011 +2.430267,.8880011 +1.801842,.5888094 +1.801842,.5888094 +1.801842,.5888094 +2.430267,.8880011 +2.430267,.8880011 +2.430267,.8880011 +2.430267,.8880011 +2.430267,.8880011 +2.430267,.8880011 +1.801842,.5888094 +1.801842,.5888094 +1.801842,.5888094 +1.564701,.4476945 +1.564701,.4476945 +1.564701,.4476945 +3.092916,1.129114 +3.092916,1.129114 +3.092916,1.129114 +4.555017,1.516229 +4.555017,1.516229 +4.555017,1.516229 +1.666954,.510998 +1.666954,.510998 +1.666954,.510998 +2.364568,.8605952 +2.364568,.8605952 +2.364568,.8605952 +3.507292,1.254844 +3.507292,1.254844 +3.507292,1.254844 +4.43284,1.48904 +4.43284,1.48904 +4.43284,1.48904 +3.695828,1.307205 +3.695828,1.307205 +3.695828,1.307205 +3.85908,1.350429 +3.85908,1.350429 +3.85908,1.350429 +2.711325,.9974375 +2.711325,.9974375 +2.711325,.9974375 +4.331136,1.46583 +4.331136,1.46583 +4.331136,1.46583 +1.9296,.6573125 +1.9296,.6573125 +1.9296,.6573125 +1.902144,.6429817 +1.902144,.6429817 +1.902144,.6429817 +1.902144,.6429817 +1.902144,.6429817 +1.902144,.6429817 +2.532043,.9290265 +2.532043,.9290265 +2.532043,.9290265 +1.902144,.6429817 +1.902144,.6429817 +1.902144,.6429817 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.51995,.9242389 +2.51995,.9242389 +2.51995,.9242389 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.070025,.7275605 +2.070025,.7275605 +2.070025,.7275605 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +5.002394,1.609917 +5.002394,1.609917 +5.002394,1.609917 +5.002394,1.609917 +5.002394,1.609917 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.305508,.8353009 +2.305508,.8353009 +2.305508,.8353009 +2.564383,.9417178 +2.564383,.9417178 +2.564383,.9417178 +2.429442,.8876615 +2.429442,.8876615 +2.429442,.8876615 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +6.034618,1.797513 +6.034618,1.797513 +6.034618,1.797513 +1.80221,.5890139 +4.298558,1.458279 +4.298558,1.458279 +4.298558,1.458279 +4.840774,1.577075 +4.840774,1.577075 +4.840774,1.577075 +2.591843,.9523693 +2.591843,.9523693 +2.591843,.9523693 +4.140273,1.420762 +4.140273,1.420762 +4.140273,1.420762 +2.914012,1.069531 +2.914012,1.069531 +2.914012,1.069531 +2.305586,.8353348 +2.305586,.8353348 +2.429524,.8876953 +2.429524,.8876953 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +4.170687,1.428081 +4.170687,1.428081 +4.170687,1.428081 +3.178365,1.156367 +3.178365,1.156367 +3.178365,1.156367 +5.075893,1.624503 +5.075893,1.624503 +5.075893,1.624503 +4.170687,1.428081 +4.170687,1.428081 +4.170687,1.428081 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.239174,1.175318 +3.239174,1.175318 +3.239174,1.175318 +2.428618,.8873226 +2.428618,.8873226 +2.428618,.8873226 +2.430161,.8879576 +2.430161,.8879576 +2.430161,.8879576 +2.87818,1.057158 +2.87818,1.057158 +2.87818,1.057158 +2.430161,.8879576 +2.430161,.8879576 +2.430161,.8879576 +2.430161,.8879576 +2.430161,.8879576 +2.430161,.8879576 +1.6258,.4859999 +1.6258,.4859999 +1.6258,.4859999 +3.009249,1.10169 +3.009249,1.10169 +3.009249,1.10169 +3.514218,1.256817 +3.514218,1.256817 +3.514218,1.256817 +3.514218,1.256817 +3.514218,1.256817 +3.514218,1.256817 +3.052566,1.115983 +3.052566,1.115983 +3.052566,1.115983 +4.985807,1.606595 +4.985807,1.606595 +4.985807,1.606595 +2.469478,.9040069 +2.469478,.9040069 +2.469478,.9040069 +2.119305,.7510881 +2.119305,.7510881 +2.119305,.7510881 +1.568627,.4502005 +1.568627,.4502005 +1.568627,.4502005 +2.601558,.9561107 +2.601558,.9561107 +2.601558,.9561107 +1.961412,.6736648 +1.961412,.6736648 +1.961412,.6736648 +1.961412,.6736648 +1.961412,.6736648 +2.373116,.8642036 +2.536127,.9306383 +4.446301,1.492073 +4.446301,1.492073 +4.446301,1.492073 +2.227046,.800676 +2.227046,.800676 +2.227046,.800676 +5.642519,1.730331 +5.642519,1.730331 +5.642519,1.730331 +5.642519,1.730331 +5.642519,1.730331 +1.887939,.6354859 +1.887939,.6354859 +1.887939,.6354859 +2.818588,1.036236 +2.818588,1.036236 +2.818588,1.036236 +2.511387,.920835 +2.511387,.920835 +2.511387,.920835 +2.357296,.8575153 +2.357296,.8575153 +2.357296,.8575153 +2.237043,.8051547 +2.237043,.8051547 +2.237043,.8051547 +4.097293,1.410327 +4.097293,1.410327 +4.097293,1.410327 +2.941503,1.078921 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +3.713552,1.311989 +3.713552,1.311989 +3.713552,1.311989 +3.666926,1.299354 +3.666926,1.299354 +3.666926,1.299354 +8.012572,2.081012 +8.012572,2.081012 +8.012572,2.081012 +4.679659,1.543225 +4.679659,1.543225 +4.679659,1.543225 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +6.415383,1.858699 +6.415383,1.858699 +6.415383,1.858699 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +1.798187,.5867788 +1.798187,.5867788 +1.798187,.5867788 +1.798187,.5867788 +1.798187,.5867788 +2.982283,1.092689 +2.982283,1.092689 +2.982283,1.092689 +2.982283,1.092689 +2.982283,1.092689 +2.272715,.820975 +2.272715,.820975 +2.272715,.820975 +2.272715,.820975 +2.272715,.820975 +1.798187,.5867788 +1.798187,.5867788 +1.798187,.5867788 +1.798187,.5867788 +1.798187,.5867788 +3.924217,1.367167 +3.924217,1.367167 +3.924217,1.367167 +2.757089,1.014176 +2.757089,1.014176 +2.757089,1.014176 +1.665129,.5099028 +1.665129,.5099028 +1.665129,.5099028 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.375574,.865239 +2.375574,.865239 +2.849304,1.047075 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.380635,.8673673 +2.380635,.8673673 +2.380635,.8673673 +2.255363,.813311 +2.227046,.800676 +2.227046,.800676 +2.346762,.8530365 +2.346762,.8530365 +2.346762,.8530365 +7.971447,2.075866 +7.971447,2.075866 +7.971447,2.075866 +4.943962,1.598167 +4.943962,1.598167 +4.943962,1.598167 +3.767656,1.326453 +3.767656,1.326453 +3.767656,1.326453 +4.632847,1.533172 +4.632847,1.533172 +4.632847,1.533172 +4.046994,1.397974 +4.046994,1.397974 +4.046994,1.397974 +5.336956,1.674655 +5.336956,1.674655 +5.336956,1.674655 +3.702577,1.309029 +3.702577,1.309029 +3.702577,1.309029 +2.553577,.9374949 +2.553577,.9374949 +2.553577,.9374949 +1.414929,.3470791 +1.414929,.3470791 +1.414929,.3470791 +1.397164,.3344441 +1.397164,.3344441 +1.397164,.3344441 +1.88445,.6336358 +1.88445,.6336358 +1.88445,.6336358 +2.825985,1.038857 +5.323934,1.672212 +5.323934,1.672212 +5.323934,1.672212 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +4.553515,1.5159 +4.553515,1.5159 +4.553515,1.5159 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +8.13853,2.09661 +8.13853,2.09661 +8.13853,2.09661 +3.817257,1.339532 +3.817257,1.339532 +3.817257,1.339532 +1.320799,.2782372 +1.320799,.2782372 +1.320799,.2782372 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +3.266028,1.183575 +3.266028,1.183575 +3.266028,1.183575 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +3.011115,1.102311 +5.633392,1.728712 +4.679659,1.543225 +2.43041,.8880599 +2.43041,.8880599 +2.43041,.8880599 +2.43041,.8880599 +2.43041,.8880599 +2.98852,1.094778 +2.98852,1.094778 +2.98852,1.094778 +2.98852,1.094778 +4.253617,1.44777 +4.253617,1.44777 +4.253617,1.44777 +4.253617,1.44777 +4.253617,1.44777 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +2.175727,.7773626 +2.175727,.7773626 +2.175727,.7773626 +1.868814,.6253039 +1.868814,.6253039 +1.868814,.6253039 +1.665129,.5099028 +1.665129,.5099028 +1.665129,.5099028 +2.104544,.744099 +2.104544,.744099 +2.104544,.744099 +1.556483,.4424285 +1.556483,.4424285 +1.556483,.4424285 +2.597552,.9545693 +2.597552,.9545693 +2.597552,.9545693 +5.376516,1.682041 +5.376516,1.682041 +5.376516,1.682041 +3.825481,1.341684 +3.825481,1.341684 +3.825481,1.341684 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +4.169617,1.427824 +4.169617,1.427824 +4.169617,1.427824 +4.169617,1.427824 +4.169617,1.427824 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +4.572748,1.520114 +4.572748,1.520114 +4.572748,1.520114 +4.572748,1.520114 +4.572748,1.520114 +2.715604,.9990144 +2.715604,.9990144 +2.715604,.9990144 +3.058148,1.11781 +3.058148,1.11781 +3.058148,1.11781 +2.419627,.8836133 +2.419627,.8836133 +2.419627,.8836133 +6.232857,1.829835 +6.232857,1.829835 +6.232857,1.829835 +2.814372,1.034739 +2.814372,1.034739 +2.814372,1.034739 +2.376285,.8655384 +2.376285,.8655384 +2.376285,.8655384 +2.50763,.919338 +2.50763,.919338 +2.50763,.919338 +2.34645,.8529034 +2.255063,.8131779 +2.255063,.8131779 +2.255063,.8131779 +2.380318,.8672342 +2.508274,.9195947 +2.508274,.9195947 +2.508274,.9195947 +2.376285,.8655384 +2.376285,.8655384 +2.376285,.8655384 +3.184945,1.158435 +3.184945,1.158435 +3.184945,1.158435 +3.184945,1.158435 +3.184945,1.158435 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +3.91733,1.36541 +3.91733,1.36541 +3.91733,1.36541 +3.91733,1.36541 +3.91733,1.36541 +4.514296,1.507249 +4.514296,1.507249 +4.514296,1.507249 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +2.772191,1.019638 +2.772191,1.019638 +2.772191,1.019638 +2.51995,.9242389 +2.51995,.9242389 +2.51995,.9242389 +3.184945,1.158435 +3.184945,1.158435 +3.184945,1.158435 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +3.971775,1.379213 +3.971775,1.379213 +3.971775,1.379213 +3.971775,1.379213 +3.971775,1.379213 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +3.566238,1.271511 +3.566238,1.271511 +3.566238,1.271511 +2.028295,.7071955 +2.028295,.7071955 +2.028295,.7071955 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +1.570005,.4510788 +1.570005,.4510788 +1.570005,.4510788 +1.570005,.4510788 +1.570005,.4510788 +2.227046,.800676 +2.227046,.800676 +2.227046,.800676 +2.227046,.800676 +2.227046,.800676 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +6.447466,1.863687 +2.433632,.8893847 +3.597131,1.280137 +3.597131,1.280137 +3.597131,1.280137 +2.403053,.8767399 +2.403053,.8767399 +2.403053,.8767399 +2.403053,.8767399 +2.403053,.8767399 +2.403053,.8767399 +2.882263,1.058576 +2.882263,1.058576 +2.882263,1.058576 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.643402,.9720669 +2.643402,.9720669 +2.643402,.9720669 +8.418341,2.130413 +8.418341,2.130413 +8.418341,2.130413 +2.327699,.8448802 +2.327699,.8448802 +2.327699,.8448802 +3.528638,1.260912 +3.528638,1.260912 +3.528638,1.260912 +2.487591,.9113149 +2.487591,.9113149 +2.487591,.9113149 +2.361297,.8592111 +2.361297,.8592111 +2.361297,.8592111 +3.309602,1.196828 +3.309602,1.196828 +3.309602,1.196828 +3.309602,1.196828 +3.309602,1.196828 +2.922384,1.0724 +2.922384,1.0724 +2.922384,1.0724 +2.922384,1.0724 +2.922384,1.0724 +2.007733,.6970063 +2.007733,.6970063 +2.007733,.6970063 +2.253326,.8124074 +2.253326,.8124074 +2.253326,.8124074 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +2.597552,.9545693 +2.597552,.9545693 +2.597552,.9545693 +2.597552,.9545693 +2.597552,.9545693 +2.597552,.9545693 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +2.650866,.9748864 +2.650866,.9748864 +2.650866,.9748864 +2.786227,1.024688 +2.786227,1.024688 +2.786227,1.024688 +2.480479,.9084517 +2.480479,.9084517 +2.480479,.9084517 +1.890304,.6367377 +1.890304,.6367377 +1.890304,.6367377 +4.937773,1.596914 +4.937773,1.596914 +4.937773,1.596914 +3.091085,1.128522 +3.091085,1.128522 +3.091085,1.128522 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.557018,1.268923 +3.557018,1.268923 +3.557018,1.268923 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.636255,1.290954 +3.636255,1.290954 +3.636255,1.290954 +2.806589,1.03197 +2.806589,1.03197 +2.806589,1.03197 +5.603361,1.723366 +5.603361,1.723366 +5.603361,1.723366 +2.306599,.8357741 +2.306599,.8357741 +2.306599,.8357741 +2.696857,.9920871 +2.696857,.9920871 +2.696857,.9920871 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +5.440917,1.693948 +5.440917,1.693948 +5.440917,1.693948 +5.440917,1.693948 +5.440917,1.693948 +3.364155,1.213177 +3.364155,1.213177 +3.364155,1.213177 +3.364155,1.213177 +3.364155,1.213177 +3.822697,1.340956 +3.822697,1.340956 +3.822697,1.340956 +3.822697,1.340956 +3.822697,1.340956 +2.428823,.8874065 +2.428823,.8874065 +2.428823,.8874065 +2.428823,.8874065 +2.428823,.8874065 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +7.990944,2.078309 +7.990944,2.078309 +7.990944,2.078309 +5.002394,1.609917 +5.002394,1.609917 +5.002394,1.609917 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +4.564652,1.518342 +4.564652,1.518342 +4.564652,1.518342 +4.446301,1.492073 +4.446301,1.492073 +4.446301,1.492073 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +3.566238,1.271511 +3.566238,1.271511 +3.566238,1.271511 +6.791664,1.915696 +6.791664,1.915696 +6.791664,1.915696 +1.719258,.5418926 +1.719258,.5418926 +1.719258,.5418926 +1.873549,.6278344 +1.873549,.6278344 +1.873549,.6278344 +6.660646,1.896217 +6.660646,1.896217 +6.660646,1.896217 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +3.011115,1.102311 +3.011115,1.102311 +4.679659,1.543225 +4.679659,1.543225 +4.679659,1.543225 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +5.755154,1.750096 +5.755154,1.750096 +5.755154,1.750096 +2.539853,.9321062 +2.539853,.9321062 +2.539853,.9321062 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.904765,.6443586 +1.904765,.6443586 +2.371949,.8637121 +5.054894,1.620357 +1.904765,.6443586 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +5.002394,1.609917 +5.002394,1.609917 +5.002394,1.609917 +5.002394,1.609917 +4.01608,1.390306 +4.01608,1.390306 +4.01608,1.390306 +4.01608,1.390306 +4.01608,1.390306 +1.823958,.6010089 +1.823958,.6010089 +1.823958,.6010089 +1.823958,.6010089 +1.823958,.6010089 +3.566238,1.271511 +3.566238,1.271511 +3.566238,1.271511 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +2.009137,.6977051 +2.009137,.6977051 +2.009137,.6977051 +7.341358,1.993524 +7.341358,1.993524 +7.341358,1.993524 +4.01608,1.390306 +4.01608,1.390306 +4.01608,1.390306 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +4.507341,1.505707 +4.507341,1.505707 +4.507341,1.505707 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.564938,.9419343 +2.564938,.9419343 +2.564938,.9419343 +1.802083,.5889429 +1.802083,.5889429 +1.802083,.5889429 +2.493696,.9137658 +2.493696,.9137658 +2.493696,.9137658 +2.493696,.9137658 +2.493696,.9137658 +2.493696,.9137658 +3.727447,1.315724 +3.727447,1.315724 +3.727447,1.315724 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +4.545715,1.514185 +1.823427,.6007177 +1.823427,.6007177 +1.823427,.6007177 +1.672152,.5141116 +1.672152,.5141116 +1.672152,.5141116 +1.672152,.5141116 +3.158221,1.150009 +3.158221,1.150009 +3.158221,1.150009 +3.158221,1.150009 +3.158221,1.150009 +2.113421,.7483078 +2.113421,.7483078 +2.113421,.7483078 +2.113421,.7483078 +2.113421,.7483078 +2.706757,.9957514 +2.706757,.9957514 +2.706757,.9957514 +3.451993,1.238952 +3.451993,1.238952 +3.451993,1.238952 +3.451993,1.238952 +3.451993,1.238952 +2.511246,.9207792 +2.511246,.9207792 +2.511246,.9207792 +3.962176,1.376793 +3.962176,1.376793 +3.962176,1.376793 +3.753681,1.322737 +3.753681,1.322737 +3.753681,1.322737 +3.517468,1.257741 +3.517468,1.257741 +3.517468,1.257741 +3.392287,1.221504 +3.392287,1.221504 +3.392287,1.221504 +6.014094,1.794106 +6.014094,1.794106 +6.014094,1.794106 +4.083648,1.406991 +4.083648,1.406991 +4.083648,1.406991 +1.432335,.3593061 +1.432335,.3593061 +1.432335,.3593061 +1.907632,.6458628 +1.907632,.6458628 +1.907632,.6458628 +1.810318,.5935022 +1.810318,.5935022 +1.810318,.5935022 +1.907632,.6458628 +1.907632,.6458628 +1.907632,.6458628 +1.806212,.5912321 +1.806212,.5912321 +1.806212,.5912321 +1.806212,.5912321 +1.806212,.5912321 +1.806212,.5912321 +2.277638,.8231391 +2.277638,.8231391 +2.277638,.8231391 +2.277638,.8231391 +2.277638,.8231391 +1.824261,.6011749 +1.824261,.6011749 +1.824261,.6011749 +5.374349,1.681638 +5.374349,1.681638 +5.374349,1.681638 +2.554027,.9376712 +2.554027,.9376712 +2.554027,.9376712 +2.389864,.8712366 +2.389864,.8712366 +2.389864,.8712366 +3.622877,1.287268 +3.622877,1.287268 +3.622877,1.287268 +2.389864,.8712366 +2.389864,.8712366 +2.389864,.8712366 +3.136008,1.142951 +3.136008,1.142951 +3.136008,1.142951 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.299028,1.193628 +3.299028,1.193628 +3.299028,1.193628 +3.299028,1.193628 +3.299028,1.193628 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +2.857508,1.04995 +9.727795,2.274987 +9.727795,2.274987 +9.727795,2.274987 +1.610584,.4765971 +1.610584,.4765971 +1.610584,.4765971 +5.269948,1.66202 +5.269948,1.66202 +5.269948,1.66202 +5.269948,1.66202 +5.269948,1.66202 +2.973309,1.089676 +2.973309,1.089676 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +3.299028,1.193628 +3.299028,1.193628 +3.299028,1.193628 +3.299028,1.193628 +3.299028,1.193628 +3.928551,1.368271 +3.928551,1.368271 +3.928551,1.368271 +3.928551,1.368271 +3.928551,1.368271 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.299028,1.193628 +3.299028,1.193628 +3.299028,1.193628 +3.299028,1.193628 +3.299028,1.193628 +2.040928,.7134048 +2.040928,.7134048 +2.040928,.7134048 +2.967989,1.087885 +2.967989,1.087885 +2.967989,1.087885 +2.413713,.8811663 +2.413713,.8811663 +2.413713,.8811663 +1.245999,.2199378 +1.245999,.2199378 +1.245999,.2199378 +1.245999,.2199378 +1.245999,.2199378 +1.767445,.569535 +1.767445,.569535 +1.767445,.569535 +1.767445,.569535 +1.767445,.569535 +1.574809,.4541339 +1.574809,.4541339 +1.574809,.4541339 +1.574809,.4541339 +1.574809,.4541339 +1.862455,.6218954 +1.862455,.6218954 +1.862455,.6218954 +1.862455,.6218954 +1.862455,.6218954 +1.245999,.2199378 +1.245999,.2199378 +1.245999,.2199378 +1.245999,.2199378 +1.245999,.2199378 +2.597552,.9545693 +2.597552,.9545693 +2.597552,.9545693 +2.519222,.9239499 +2.519222,.9239499 +2.519222,.9239499 +2.898617,1.064234 +2.898617,1.064234 +2.898617,1.064234 +3.241806,1.17613 +3.241806,1.17613 +3.241806,1.17613 +3.00277,1.099535 +3.00277,1.099535 +3.00277,1.099535 +3.00277,1.099535 +3.00277,1.099535 +1.879757,.6311427 +1.879757,.6311427 +1.879757,.6311427 +1.879757,.6311427 +1.879757,.6311427 +2.375811,.8653389 +2.375811,.8653389 +2.375811,.8653389 +2.375811,.8653389 +2.375811,.8653389 +2.375811,.8653389 +2.375811,.8653389 +2.399915,.8754333 +2.399915,.8754333 +2.399915,.8754333 +2.399915,.8754333 +2.399915,.8754333 +2.399915,.8754333 +2.878499,1.057269 +2.878499,1.057269 +2.878499,1.057269 +2.277487,.8230727 +2.277487,.8230727 +2.277487,.8230727 +2.399915,.8754333 +2.399915,.8754333 +2.399915,.8754333 +2.592345,.952563 +2.592345,.952563 +2.592345,.952563 +1.643463,.4968057 +1.643463,.4968057 +1.643463,.4968057 +2.456563,.8987634 +2.456563,.8987634 +2.456563,.8987634 +2.456563,.8987634 +2.456563,.8987634 +2.456563,.8987634 +1.734684,.550825 +1.734684,.550825 +1.734684,.550825 +2.31031,.8373817 +2.31031,.8373817 +2.31031,.8373817 +3.12056,1.138013 +3.12056,1.138013 +3.12056,1.138013 +1.734684,.550825 +1.734684,.550825 +2.31031,.8373817 +2.31031,.8373817 +2.31031,.8373817 +2.192453,.7850212 +2.192453,.7850212 +2.192453,.7850212 +5.269948,1.66202 +5.269948,1.66202 +5.269948,1.66202 +5.269948,1.66202 +5.269948,1.66202 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +3.910019,1.363542 +3.910019,1.363542 +3.910019,1.363542 +3.658699,1.297108 +3.658699,1.297108 +3.658699,1.297108 +3.612762,1.284472 +3.612762,1.284472 +3.612762,1.284472 +3.428463,1.232112 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +3.664599,1.298719 +2.659918,.9782952 +1.769963,.5709586 +1.769963,.5709586 +1.769963,.5709586 +1.993225,.6897537 +1.993225,.6897537 +1.993225,.6897537 +3.449795,1.238315 +3.449795,1.238315 +3.449795,1.238315 +2.275689,.822283 +2.275689,.822283 +2.275689,.822283 +2.275689,.822283 +2.275689,.822283 +2.275689,.822283 +3.073798,1.122914 +3.073798,1.122914 +3.073798,1.122914 +2.275689,.822283 +2.275689,.822283 +2.275689,.822283 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +2.822601,1.037659 +2.822601,1.037659 +2.822601,1.037659 +3.759235,1.324216 +3.759235,1.324216 +3.759235,1.324216 +3.759235,1.324216 +3.759235,1.324216 +3.759235,1.324216 +3.96702,1.378015 +3.96702,1.378015 +3.96702,1.378015 +2.225679,.8000619 +2.225679,.8000619 +2.225679,.8000619 +2.225679,.8000619 +2.225679,.8000619 +1.569041,.4504648 +1.569041,.4504648 +1.569041,.4504648 +1.569041,.4504648 +1.569041,.4504648 +7.74817,2.047457 +7.74817,2.047457 +7.74817,2.047457 +3.690104,1.305655 +3.690104,1.305655 +3.690104,1.305655 +3.690104,1.305655 +3.690104,1.305655 +3.690104,1.305655 +3.79324,1.33322 +3.79324,1.33322 +3.79324,1.33322 +4.054842,1.399912 +4.054842,1.399912 +4.054842,1.399912 +2.738211,1.007305 +2.738211,1.007305 +2.738211,1.007305 +2.738211,1.007305 +2.738211,1.007305 +2.738211,1.007305 +2.738211,1.007305 +2.738211,1.007305 +2.738211,1.007305 +2.738211,1.007305 +3.095814,1.130051 +3.095814,1.130051 +3.095814,1.130051 +3.661279,1.297812 +3.661279,1.297812 +3.661279,1.297812 +3.661279,1.297812 +3.661279,1.297812 +3.661279,1.297812 +2.749051,1.011256 +2.749051,1.011256 +2.749051,1.011256 +3.133781,1.14224 +3.133781,1.14224 +3.133781,1.14224 +3.517116,1.257641 +3.517116,1.257641 +3.517116,1.257641 +6.6074,1.88819 +6.6074,1.88819 +6.6074,1.88819 +6.6074,1.88819 +6.6074,1.88819 +6.271945,1.836086 +6.271945,1.836086 +6.271945,1.836086 +6.271945,1.836086 +6.271945,1.836086 +3.775302,1.32848 +3.775302,1.32848 +3.775302,1.32848 +3.775302,1.32848 +3.775302,1.32848 +3.775302,1.32848 +3.775302,1.32848 +3.775302,1.32848 +3.775302,1.32848 +3.775302,1.32848 +3.055316,1.116883 +3.055316,1.116883 +3.055316,1.116883 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +1.801653,.5887048 +1.801653,.5887048 +1.801653,.5887048 +2.442519,.89303 +2.442519,.89303 +2.442519,.89303 +6.232732,1.829815 +6.232732,1.829815 +6.232732,1.829815 +3.126335,1.139861 +3.126335,1.139861 +3.126335,1.139861 +2.776153,1.021066 +2.776153,1.021066 +3.464704,1.242627 +3.464704,1.242627 +3.464704,1.242627 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.959514,1.085025 +2.959514,1.085025 +2.959514,1.085025 +2.959514,1.085025 +2.959514,1.085025 +2.519222,.9239499 +2.519222,.9239499 +2.519222,.9239499 +2.519222,.9239499 +2.519222,.9239499 +1.769963,.5709586 +1.769963,.5709586 +1.769963,.5709586 +1.769963,.5709586 +1.769963,.5709586 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.289519,.8283417 +2.289519,.8283417 +2.289519,.8283417 +2.172723,.7759812 +2.172723,.7759812 +2.172723,.7759812 +1.531709,.426384 +1.531709,.426384 +1.531709,.426384 +2.289519,.8283417 +2.289519,.8283417 +2.289519,.8283417 +2.226785,.8005589 +2.226785,.8005589 +2.226785,.8005589 +2.226785,.8005589 +2.226785,.8005589 +2.514098,.921914 +2.514098,.921914 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +6.660646,1.896217 +6.660646,1.896217 +6.660646,1.896217 +2.42853,.8872861 +2.42853,.8872861 +2.42853,.8872861 +2.42853,.8872861 +2.42853,.8872861 +1.823448,.6007293 +1.823448,.6007293 +1.823448,.6007293 +1.823448,.6007293 +1.823448,.6007293 +1.624708,.4853283 +1.624708,.4853283 +1.624708,.4853283 +1.624708,.4853283 +1.624708,.4853283 +2.966752,1.087468 +2.966752,1.087468 +2.966752,1.087468 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.539853,.9321062 +2.539853,.9321062 +2.539853,.9321062 +2.539853,.9321062 +2.539853,.9321062 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.031537,.7087924 +2.031537,.7087924 +2.031537,.7087924 +2.280041,.8241935 +2.280041,.8241935 +2.280041,.8241935 +4.232727,1.442846 +4.232727,1.442846 +4.232727,1.442846 +1.823194,.60059 +1.823194,.60059 +1.823194,.60059 +2.375133,.8650533 +2.375133,.8650533 +2.375133,.8650533 +2.375133,.8650533 +2.375133,.8650533 +2.375133,.8650533 +2.008307,.6972918 +2.008307,.6972918 +2.008307,.6972918 +4.159443,1.425381 +4.159443,1.425381 +4.159443,1.425381 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +3.693543,1.306586 +3.693543,1.306586 +3.693543,1.306586 +1.993225,.6897537 +1.993225,.6897537 +1.993225,.6897537 +1.993225,.6897537 +1.993225,.6897537 +3.528638,1.260912 +3.528638,1.260912 +3.528638,1.260912 +3.528638,1.260912 +3.528638,1.260912 +2.227046,.800676 +2.227046,.800676 +2.227046,.800676 +2.227046,.800676 +2.227046,.800676 +2.733844,1.005708 +2.733844,1.005708 +2.733844,1.005708 +2.255363,.813311 +2.227046,.800676 +3.388403,1.220359 +2.848405,1.046759 +2.848405,1.046759 +2.848405,1.046759 +2.814746,1.034872 +2.814746,1.034872 +2.814746,1.034872 +2.814746,1.034872 +2.814746,1.034872 +3.169796,1.153667 +3.169796,1.153667 +3.169796,1.153667 +3.169796,1.153667 +3.169796,1.153667 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.346762,.8530365 +2.346762,.8530365 +2.346762,.8530365 +2.346762,.8530365 +2.346762,.8530365 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.223652,.7991507 +2.223652,.7991507 +2.223652,.7991507 +3.074755,1.123225 +3.074755,1.123225 +3.074755,1.123225 +2.810456,1.033347 +2.810456,1.033347 +2.810456,1.033347 +4.000175,1.386338 +4.000175,1.386338 +4.000175,1.386338 +1.304216,.2656021 +3.877946,1.355306 +3.877946,1.355306 +3.877946,1.355306 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +3.758514,1.324024 +3.758514,1.324024 +3.758514,1.324024 +3.178032,1.156262 +3.178032,1.156262 +3.178032,1.156262 +3.13813,1.143627 +3.13813,1.143627 +3.13813,1.143627 +2.786627,1.024832 +2.786627,1.024832 +2.786627,1.024832 +2.517977,.9234558 +2.517977,.9234558 +2.517977,.9234558 +2.007054,.6966678 +2.007054,.6966678 +2.007054,.6966678 +2.007054,.6966678 +2.007054,.6966678 +2.850536,1.047507 +2.850536,1.047507 +2.850536,1.047507 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.827381,1.039351 +2.519222,.9239499 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +3.638354,1.291531 +3.638354,1.291531 +3.638354,1.291531 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +3.597861,1.28034 +3.597861,1.28034 +3.597861,1.28034 +2.306599,.8357741 +2.306599,.8357741 +2.306599,.8357741 +2.042418,.7141342 +2.042418,.7141342 +2.042418,.7141342 +2.338233,.8493955 +2.338233,.8493955 +2.338233,.8493955 +1.648389,.4997983 +1.648389,.4997983 +1.648389,.4997983 +2.922384,1.0724 +2.922384,1.0724 +2.922384,1.0724 +3.359615,1.211826 +3.359615,1.211826 +3.359615,1.211826 +2.955862,1.08379 +2.955862,1.08379 +2.955862,1.08379 +3.230787,1.172726 +3.230787,1.172726 +3.971598,1.379169 +3.971598,1.379169 +3.971598,1.379169 +3.71632,1.312734 +3.71632,1.312734 +3.71632,1.312734 +2.790378,1.026177 +2.790378,1.026177 +2.790378,1.026177 +4.564652,1.518342 +4.564652,1.518342 +4.564652,1.518342 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +1.979137,.6826608 +1.979137,.6826608 +1.979137,.6826608 +2.279926,.8241431 +2.279926,.8241431 +2.279926,.8241431 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.014463,.7003528 +3.725635,1.315237 +3.725635,1.315237 +3.725635,1.315237 +3.308325,1.196442 +3.308325,1.196442 +3.308325,1.196442 +2.051676,.718657 +2.051676,.718657 +2.051676,.718657 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +3.574538,1.273836 +3.574538,1.273836 +3.574538,1.273836 +3.574538,1.273836 +3.574538,1.273836 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.020103,.7031484 +2.020103,.7031484 +2.020103,.7031484 +1.589664,.4635229 +1.589664,.4635229 +1.589664,.4635229 +1.589664,.4635229 +1.589664,.4635229 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +1.822502,.6002105 +1.822502,.6002105 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +3.702577,1.309029 +3.702577,1.309029 +3.702577,1.309029 +2.687484,.9886054 +2.687484,.9886054 +2.687484,.9886054 +3.340976,1.206263 +3.340976,1.206263 +3.340976,1.206263 +2.277638,.8231391 +2.277638,.8231391 +2.277638,.8231391 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.915293,1.06997 +2.915293,1.06997 +2.915293,1.06997 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +7.55198,2.02181 +7.55198,2.02181 +7.55198,2.02181 +7.55198,2.02181 +7.55198,2.02181 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.996788,1.097541 +2.996788,1.097541 +2.996788,1.097541 +2.283769,.8258272 +2.283769,.8258272 +2.283769,.8258272 +5.631122,1.728309 +5.631122,1.728309 +5.631122,1.728309 +3.714622,1.312277 +3.714622,1.312277 +3.714622,1.312277 +3.714622,1.312277 +3.714622,1.312277 +3.714622,1.312277 +3.714622,1.312277 +3.714622,1.312277 +3.714622,1.312277 +3.525127,1.259916 +3.525127,1.259916 +3.525127,1.259916 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +2.596606,.9542053 +2.596606,.9542053 +2.429707,.8877706 +2.429707,.8877706 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +2.322566,.8426725 +2.322566,.8426725 +2.322566,.8426725 +2.322566,.8426725 +2.322566,.8426725 +2.519222,.9239499 +2.519222,.9239499 +2.519222,.9239499 +2.519222,.9239499 +2.519222,.9239499 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.951221,1.374025 +5.841094,1.764918 +5.841094,1.764918 +5.841094,1.764918 +6.469991,1.867175 +6.469991,1.867175 +6.469991,1.867175 +3.650375,1.29483 +3.650375,1.29483 +3.650375,1.29483 +2.523031,.9254608 +2.523031,.9254608 +2.523031,.9254608 +4.696286,1.546772 +4.696286,1.546772 +4.696286,1.546772 +3.547125,1.266137 +3.547125,1.266137 +3.547125,1.266137 +2.369646,.8627405 +2.369646,.8627405 +2.369646,.8627405 +2.003667,.694979 +2.003667,.694979 +2.003667,.694979 +2.369646,.8627405 +2.369646,.8627405 +2.369646,.8627405 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +4.793873,1.567339 +4.793873,1.567339 +4.793873,1.567339 +3.379546,1.217741 +3.379546,1.217741 +3.379546,1.217741 +2.440561,.8922279 +2.440561,.8922279 +2.440561,.8922279 +2.538131,.9314282 +2.538131,.9314282 +1.48345,.3943704 +1.48345,.3943704 +1.48345,.3943704 +1.48345,.3943704 +1.48345,.3943704 +5.423826,1.690802 +5.423826,1.690802 +5.423826,1.690802 +5.423826,1.690802 +5.423826,1.690802 +4.238902,1.444304 +4.238902,1.444304 +4.238902,1.444304 +4.238902,1.444304 +4.238902,1.444304 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +4.169617,1.427824 +4.169617,1.427824 +4.169617,1.427824 +4.169617,1.427824 +4.169617,1.427824 +3.774426,1.328248 +2.719099,1.000301 +2.719099,1.000301 +2.719099,1.000301 +2.719099,1.000301 +2.719099,1.000301 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.51995,.9242389 +2.51995,.9242389 +2.51995,.9242389 +2.51995,.9242389 +2.51995,.9242389 +1.482364,.3936382 +1.482364,.3936382 +1.482364,.3936382 +1.482364,.3936382 +1.474043,.3880093 +1.474043,.3880093 +1.474043,.3880093 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.913646,1.069405 +2.913646,1.069405 +2.913646,1.069405 +3.490916,1.250164 +3.490916,1.250164 +3.490916,1.250164 +3.447086,1.237529 +3.447086,1.237529 +3.447086,1.237529 +3.730712,1.316599 +3.730712,1.316599 +3.730712,1.316599 +1.876808,.6295726 +1.876808,.6295726 +1.876808,.6295726 +1.876808,.6295726 +1.876808,.6295726 +2.082408,.733525 +2.082408,.733525 +2.082408,.733525 +2.082408,.733525 +2.082408,.733525 +1.876808,.6295726 +5.269948,1.66202 +5.269948,1.66202 +5.269948,1.66202 +3.951221,1.374025 +3.951221,1.374025 +3.951221,1.374025 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +4.595384,1.525052 +4.595384,1.525052 +4.595384,1.525052 +3.865924,1.352201 +3.865924,1.352201 +3.865924,1.352201 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +2.357977,.8578042 +2.357977,.8578042 +2.357977,.8578042 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.87994,.6312397 +1.87994,.6312397 +1.87994,.6312397 +1.87994,.6312397 +1.87994,.6312397 +1.669367,.5124446 +1.669367,.5124446 +1.669367,.5124446 +1.669367,.5124446 +1.669367,.5124446 +2.666687,.9808369 +2.666687,.9808369 +2.666687,.9808369 +2.666687,.9808369 +2.666687,.9808369 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +1.556483,.4424285 +1.850025,.6151993 +1.850025,.6151993 +1.850025,.6151993 +1.850025,.6151993 +1.850025,.6151993 +4.293051,1.456998 +4.293051,1.456998 +4.293051,1.456998 +4.293051,1.456998 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +2.973309,1.089676 +5.609478,1.724458 +5.609478,1.724458 +5.609478,1.724458 +5.609478,1.724458 +5.609478,1.724458 +4.222634,1.440459 +4.222634,1.440459 +4.222634,1.440459 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +1.588087,.4625303 +2.643402,.9720669 +2.643402,.9720669 +2.643402,.9720669 +3.221925,1.169979 +3.221925,1.169979 +3.221925,1.169979 +4.25225,1.447448 +4.25225,1.447448 +4.25225,1.447448 +2.429629,.8877384 +2.429629,.8877384 +2.429629,.8877384 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +1.784901,.579363 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.328372,.8451692 +2.328372,.8451692 +2.328372,.8451692 +1.989171,.6877179 +1.989171,.6877179 +6.660646,1.896217 +6.660646,1.896217 +6.660646,1.896217 +3.645826,1.293583 +3.645826,1.293583 +3.645826,1.293583 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.539379,.9319195 +2.539379,.9319195 +2.539379,.9319195 +2.009173,.6977233 +2.009173,.6977233 +2.009173,.6977233 +1.589671,.4635271 +1.589671,.4635271 +1.589671,.4635271 +2.850004,1.04732 +2.850004,1.04732 +2.850004,1.04732 +2.376158,.8654848 +2.376158,.8654848 +2.376158,.8654848 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +1.574809,.4541339 +2.23386,.8037311 +2.931297,1.075445 +2.80101,1.02998 +2.80101,1.02998 +2.80101,1.02998 +1.415767,.3476717 +1.415767,.3476717 +1.415767,.3476717 +3.17771,1.156161 +3.17771,1.156161 +3.17771,1.156161 +2.790228,1.026123 +2.790228,1.026123 +2.790228,1.026123 +1.634885,.4915724 +1.634885,.4915724 +1.634885,.4915724 +3.638354,1.291531 +3.638354,1.291531 +3.638354,1.291531 +1.675162,.5159101 +1.675162,.5159101 +1.675162,.5159101 +2.141106,.7613224 +2.141106,.7613224 +2.141106,.7613224 +4.691268,1.545703 +4.691268,1.545703 +4.691268,1.545703 +5.283021,1.664498 +5.283021,1.664498 +5.283021,1.664498 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.317431,.8404593 +2.317431,.8404593 +2.317431,.8404593 +2.317431,.8404593 +2.317431,.8404593 +2.376601,.8656715 +2.376601,.8656715 +2.376601,.8656715 +2.42922,.8875701 +2.42922,.8875701 +2.42922,.8875701 +2.955246,1.083582 +2.955246,1.083582 +2.955246,1.083582 +2.017624,.7019206 +2.017624,.7019206 +2.017624,.7019206 +3.17771,1.156161 +3.17771,1.156161 +3.17771,1.156161 +3.029271,1.108322 +3.029271,1.108322 +3.029271,1.108322 +2.396401,.8739679 +2.396401,.8739679 +3.845712,1.346959 +3.845712,1.346959 +3.845712,1.346959 +3.011115,1.102311 +3.011115,1.102311 +3.011115,1.102311 +3.185762,1.158692 +3.185762,1.158692 +3.185762,1.158692 +3.704362,1.309511 +3.704362,1.309511 +3.704362,1.309511 +1.900672,.6422076 +1.900672,.6422076 +1.900672,.6422076 +3.693213,1.306497 +3.693213,1.306497 +3.693213,1.306497 +3.693213,1.306497 +3.693213,1.306497 +1.992335,.6893072 +1.992335,.6893072 +3.17771,1.156161 +3.17771,1.156161 +3.17771,1.156161 +2.42853,.8872861 +2.42853,.8872861 +2.42853,.8872861 +2.42853,.8872861 +2.42853,.8872861 +3.753681,1.322737 +3.753681,1.322737 +3.753681,1.322737 +2.507612,.9193309 +2.507612,.9193309 +2.507612,.9193309 +2.507612,.9193309 +2.507612,.9193309 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +4.172171,1.428436 +2.486764,.9109823 +2.486764,.9109823 +2.486764,.9109823 +1.867173,.6244256 +1.867173,.6244256 +1.867173,.6244256 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +2.0552,.7203732 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +3.029271,1.108322 +3.029271,1.108322 +3.029271,1.108322 +3.029271,1.108322 +2.376601,.8656715 +4.212332,1.438016 +2.73124,1.004756 +2.73124,1.004756 +2.73124,1.004756 +2.73124,1.004756 +2.73124,1.004756 +3.540213,1.264187 +3.540213,1.264187 +3.540213,1.264187 +1.993225,.6897537 +1.993225,.6897537 +1.993225,.6897537 +2.444731,.8939353 +2.444731,.8939353 +2.444731,.8939353 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +1.829179,.6038671 +1.829179,.6038671 +1.829179,.6038671 +1.829179,.6038671 +1.829179,.6038671 +3.834248,1.343973 +3.834248,1.343973 +3.834248,1.343973 +3.834248,1.343973 +3.834248,1.343973 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +1.626088,.486177 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.430592,.8881347 +2.915293,1.06997 +2.915293,1.06997 +2.915293,1.06997 +2.915293,1.06997 +2.915293,1.06997 +3.029271,1.108322 +3.029271,1.108322 +3.029271,1.108322 +1.863032,.6222055 +1.863032,.6222055 +1.863032,.6222055 +3.531653,1.261766 +3.531653,1.261766 +3.531653,1.261766 +2.609528,.9591692 +2.609528,.9591692 +2.609528,.9591692 +2.376601,.8656715 +1.824996,.601578 +1.824996,.601578 +1.824996,.601578 +1.673001,.5146189 +1.673001,.5146189 +1.673001,.5146189 +1.978582,.6823804 +1.978582,.6823804 +1.978582,.6823804 +1.502527,.407148 +1.502527,.407148 +1.502527,.407148 +2.595472,.9537683 +2.595472,.9537683 +2.595472,.9537683 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +3.405171,1.225295 +3.405171,1.225295 +3.405171,1.225295 +2.443467,.8934179 +2.443467,.8934179 +2.443467,.8934179 +2.443467,.8934179 +2.443467,.8934179 +2.372195,.8638156 +2.372195,.8638156 +3.029271,1.108322 +3.029271,1.108322 +2.371509,.8635266 +2.371509,.8635266 +2.388567,.8706935 +2.388567,.8706935 +2.445247,.894146 +2.445247,.894146 +2.455276,.8982393 +2.455276,.8982393 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +3.029271,1.108322 +3.029271,1.108322 +3.029271,1.108322 +3.029271,1.108322 +3.029271,1.108322 +3.029271,1.108322 +2.390931,.8716829 +2.390931,.8716829 +2.390931,.8716829 +2.390931,.8716829 +3.726697,1.315522 +3.726697,1.315522 +3.656306,1.296453 +3.656306,1.296453 +3.656306,1.296453 +3.656306,1.296453 +2.445067,.8940726 +2.445067,.8940726 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +3.029271,1.108322 +3.029271,1.108322 +1.912132,.648219 +1.912132,.648219 +2.374794,.8649107 +2.374794,.8649107 +2.390931,.8716829 +2.390931,.8716829 +2.390583,.8715371 +2.390583,.8715371 +3.677727,1.302295 +3.677727,1.302295 +2.445247,.894146 +2.445247,.894146 +2.445187,.8941217 +2.445187,.8941217 +2.445187,.8941217 +3.029271,1.108322 +3.029271,1.108322 +2.361975,.8594981 +2.361975,.8594981 +2.361975,.8594981 +3.738727,1.318745 +3.738727,1.318745 +1.986166,.6862063 +1.986166,.6862063 +1.986166,.6862063 +2.260224,.815464 +2.260224,.815464 +2.390651,.8715658 +2.390651,.8715658 +2.390651,.8715658 +2.390651,.8715658 +2.338493,.8495067 +2.331404,.8464707 +2.331404,.8464707 +2.331404,.8464707 +3.029271,1.108322 +3.029271,1.108322 +2.371509,.8635266 +2.371509,.8635266 +2.444261,.8937429 +2.372195,.8638156 +2.445247,.894146 +2.390931,.8716829 +2.141851,.7616706 +3.029271,1.108322 +2.372195,.8638156 +1.990512,.6883918 +2.390931,.8716829 +2.390931,.8716829 +2.390931,.8716829 +3.029271,1.108322 +3.715481,1.312508 +3.715481,1.312508 +3.715481,1.312508 +2.371509,.8635266 +2.371509,.8635266 +2.371509,.8635266 +3.659489,1.297324 +3.659489,1.297324 +3.659489,1.297324 +3.029271,1.108322 +3.029271,1.108322 +3.029271,1.108322 +2.361975,.8594981 +2.361975,.8594981 +2.390625,.871555 +2.390625,.871555 +3.029271,1.108322 +3.029271,1.108322 +2.390931,.8716829 +2.390931,.8716829 +2.371509,.8635266 +2.371509,.8635266 +2.372195,.8638156 +2.390475,.871492 +3.029271,1.108322 +3.659489,1.297324 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +3.776676,1.328844 +3.776676,1.328844 +3.776676,1.328844 +1.601749,.4710964 +1.601749,.4710964 +1.601749,.4710964 +2.272075,.8206936 +2.272075,.8206936 +2.272075,.8206936 +3.611285,1.284064 +3.611285,1.284064 +3.611285,1.284064 +4.270231,1.451668 +4.270231,1.451668 +4.270231,1.451668 +3.254225,1.179954 +3.254225,1.179954 +3.254225,1.179954 +4.73877,1.555778 +4.73877,1.555778 +4.73877,1.555778 +1.587427,.4621147 +1.587427,.4621147 +1.587427,.4621147 +2.226477,.8004205 +2.226477,.8004205 +2.226477,.8004205 +2.25176,.8117119 +2.25176,.8117119 +2.25176,.8117119 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +2.226477,.8004205 +2.226477,.8004205 +2.226477,.8004205 +1.781607,.5775157 +1.781607,.5775157 +1.781607,.5775157 +2.226477,.8004205 +2.226477,.8004205 +2.226477,.8004205 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +4.096453,1.410122 +4.096453,1.410122 +4.096453,1.410122 +4.096453,1.410122 +4.096453,1.410122 +3.446328,1.237309 +3.446328,1.237309 +3.446328,1.237309 +3.446328,1.237309 +3.446328,1.237309 +3.446328,1.237309 +3.446328,1.237309 +3.446328,1.237309 +3.446328,1.237309 +3.446328,1.237309 +5.150583,1.63911 +5.150583,1.63911 +5.150583,1.63911 +5.150583,1.63911 +5.150583,1.63911 +2.757721,1.014405 +2.757721,1.014405 +2.757721,1.014405 +2.757721,1.014405 +2.757721,1.014405 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +4.679659,1.543225 +4.679659,1.543225 +4.679659,1.543225 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +1.590184,.4638499 +1.590184,.4638499 +1.590184,.4638499 +3.603261,1.281839 +3.603261,1.281839 +3.603261,1.281839 +2.230344,.8021556 +2.230344,.8021556 +2.230344,.8021556 +1.584067,.4599956 +1.584067,.4599956 +1.584067,.4599956 +1.584067,.4599956 +1.584067,.4599956 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.825424,1.038659 +2.825424,1.038659 +4.01608,1.390306 +4.01608,1.390306 +4.01608,1.390306 +3.707555,1.310373 +3.707555,1.310373 +3.707555,1.310373 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +3.597124,1.280135 +3.597124,1.280135 +3.597124,1.280135 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.830222,1.040355 +2.830222,1.040355 +2.830222,1.040355 +2.830222,1.040355 +2.830222,1.040355 +3.147207,1.146515 +3.147207,1.146515 +3.147207,1.146515 +3.147207,1.146515 +3.147207,1.146515 +2.490091,.9123191 +2.490091,.9123191 +2.490091,.9123191 +2.490091,.9123191 +2.490091,.9123191 +3.147207,1.146515 +3.147207,1.146515 +3.147207,1.146515 +3.147207,1.146515 +3.147207,1.146515 +1.565068,.4479293 +1.565068,.4479293 +1.565068,.4479293 +2.486362,.9108208 +2.486362,.9108208 +2.486362,.9108208 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +2.539853,.9321062 +2.539853,.9321062 +2.539853,.9321062 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +5.769479,1.752582 +5.769479,1.752582 +5.769479,1.752582 +5.769479,1.752582 +5.769479,1.752582 +4.686153,1.544612 +4.686153,1.544612 +4.686153,1.544612 +4.686153,1.544612 +4.686153,1.544612 +3.566392,1.271554 +3.566392,1.271554 +3.566392,1.271554 +3.566392,1.271554 +3.566392,1.271554 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +3.571187,1.272898 +2.203349,.7899783 +2.203349,.7899783 +2.203349,.7899783 +1.7631,.5670736 +1.7631,.5670736 +1.7631,.5670736 +1.570938,.4516726 +1.570938,.4516726 +1.570938,.4516726 +3.500257,1.252836 +3.500257,1.252836 +3.500257,1.252836 +3.460956,1.241545 +3.460956,1.241545 +3.460956,1.241545 +3.118759,1.137435 +3.118759,1.137435 +3.118759,1.137435 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.306126,.8355691 +2.306126,.8355691 +2.306126,.8355691 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +1.781607,.5775157 +1.781607,.5775157 +1.781607,.5775157 +4.546239,1.5143 +4.546239,1.5143 +4.546239,1.5143 +2.504411,.9180537 +2.504411,.9180537 +2.504411,.9180537 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +2.202041,.7893845 +2.202041,.7893845 +2.202041,.7893845 +2.202041,.7893845 +2.202041,.7893845 +2.202041,.7893845 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +3.01954,1.105105 +3.01954,1.105105 +3.01954,1.105105 +3.388901,1.220506 +3.388901,1.220506 +3.388901,1.220506 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +5.696794,1.739904 +5.696794,1.739904 +5.696794,1.739904 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.687484,.9886054 +2.687484,.9886054 +2.687484,.9886054 +2.797726,1.028807 +2.797726,1.028807 +2.797726,1.028807 +3.685391,1.304377 +3.685391,1.304377 +4.192801,1.433369 +4.192801,1.433369 +4.192801,1.433369 +3.355042,1.210464 +3.355042,1.210464 +3.355042,1.210464 +2.589294,.9513853 +2.589294,.9513853 +2.589294,.9513853 +3.639119,1.291742 +3.639119,1.291742 +3.639119,1.291742 +3.826285,1.341894 +3.826285,1.341894 +3.826285,1.341894 +3.235845,1.17429 +3.235845,1.17429 +3.235845,1.17429 +2.319767,.841467 +2.319767,.841467 +2.319767,.841467 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.280391,.8243469 +2.280391,.8243469 +2.280391,.8243469 +2.681637,.9864272 +2.681637,.9864272 +2.681637,.9864272 +2.118587,.7507496 +2.118587,.7507496 +2.118587,.7507496 +2.63507,.9689099 +2.63507,.9689099 +2.63507,.9689099 +2.63507,.9689099 +2.63507,.9689099 +2.63507,.9689099 +2.63507,.9689099 +2.63507,.9689099 +2.63507,.9689099 +2.63507,.9689099 +3.334476,1.204315 +3.334476,1.204315 +3.334476,1.204315 +3.334476,1.204315 +3.334476,1.204315 +2.668217,.9814106 +2.668217,.9814106 +2.668217,.9814106 +2.668217,.9814106 +2.668217,.9814106 +2.668217,.9814106 +2.668217,.9814106 +2.668217,.9814106 +2.668217,.9814106 +2.668217,.9814106 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +2.280391,.8243469 +2.280391,.8243469 +2.280391,.8243469 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +2.568038,.9431421 +2.568038,.9431421 +2.568038,.9431421 +2.028395,.7072446 +2.028395,.7072446 +2.028395,.7072446 +3.636559,1.291038 +3.636559,1.291038 +3.636559,1.291038 +3.485508,1.248614 +3.485508,1.248614 +3.485508,1.248614 +7.296367,1.987377 +7.296367,1.987377 +7.296367,1.987377 +3.485508,1.248614 +3.485508,1.248614 +3.485508,1.248614 +6.501127,1.871976 +6.501127,1.871976 +6.501127,1.871976 +5.269948,1.66202 +5.269948,1.66202 +5.269948,1.66202 +5.269948,1.66202 +5.269948,1.66202 +2.825424,1.038659 +2.825424,1.038659 +3.957927,1.37572 +3.661005,1.297738 +3.661005,1.297738 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +3.664599,1.298719 +3.664599,1.298719 +3.664599,1.298719 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.054779,.7201681 +2.054779,.7201681 +1.824622,.6013729 +1.824622,.6013729 +3.49932,1.252569 +3.49932,1.252569 +3.49932,1.252569 +3.49932,1.252569 +3.49932,1.252569 +3.49932,1.252569 +3.49932,1.252569 +3.49932,1.252569 +3.49932,1.252569 +3.49932,1.252569 +2.800125,1.029664 +2.800125,1.029664 +2.800125,1.029664 +2.800125,1.029664 +2.800125,1.029664 +3.494622,1.251225 +3.494622,1.251225 +3.494622,1.251225 +3.494622,1.251225 +3.494622,1.251225 +3.15333,1.148459 +3.15333,1.148459 +3.15333,1.148459 +3.15333,1.148459 +3.15333,1.148459 +2.800125,1.029664 +2.800125,1.029664 +2.800125,1.029664 +2.800125,1.029664 +2.800125,1.029664 +2.880671,1.058023 +2.880671,1.058023 +2.880671,1.058023 +2.844502,1.045388 +2.844502,1.045388 +2.844502,1.045388 +3.554779,1.268293 +3.554779,1.268293 +3.554779,1.268293 +3.554779,1.268293 +3.554779,1.268293 +3.554779,1.268293 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +3.306707,1.195953 +3.306707,1.195953 +3.306707,1.195953 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +4.179322,1.430149 +4.179322,1.430149 +4.179322,1.430149 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +2.254225,.8128064 +2.254225,.8128064 +2.254225,.8128064 +2.005838,.6960618 +2.005838,.6960618 +2.005838,.6960618 +4.494656,1.502889 +4.494656,1.502889 +4.494656,1.502889 +2.353905,.8560759 +2.353905,.8560759 +2.353905,.8560759 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +2.353905,.8560759 +2.353905,.8560759 +2.353905,.8560759 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.353905,.8560759 +2.353905,.8560759 +2.353905,.8560759 +3.208933,1.165938 +3.208933,1.165938 +3.208933,1.165938 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.228834,.8014784 +2.228834,.8014784 +2.228834,.8014784 +2.228834,.8014784 +2.228834,.8014784 +2.228834,.8014784 +2.008461,.6973689 +2.008461,.6973689 +2.008461,.6973689 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +2.914695,1.069765 +2.914695,1.069765 +2.914695,1.069765 +2.219676,.7973614 +2.219676,.7973614 +2.219676,.7973614 +2.837289,1.042849 +2.837289,1.042849 +2.837289,1.042849 +2.219676,.7973614 +2.219676,.7973614 +2.219676,.7973614 +1.776165,.5744567 +1.776165,.5744567 +1.776165,.5744567 +7.036568,1.95112 +7.036568,1.95112 +7.036568,1.95112 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.086035,1.126887 +3.086035,1.126887 +3.086035,1.126887 +2.740367,1.008092 +2.740367,1.008092 +2.740367,1.008092 +3.257446,1.180943 +3.257446,1.180943 +3.257446,1.180943 +4.867811,1.582644 +4.867811,1.582644 +4.867811,1.582644 +12.69872,2.541501 +12.69872,2.541501 +12.69872,2.541501 +2.380485,.8673041 +2.380485,.8673041 +2.380485,.8673041 +2.380485,.8673041 +2.380485,.8673041 +2.201901,.7893212 +2.201901,.7893212 +2.201901,.7893212 +2.201901,.7893212 +2.201901,.7893212 +1.784345,.5790516 +1.784345,.5790516 +1.784345,.5790516 +1.784345,.5790516 +1.784345,.5790516 +1.8063,.5912808 +1.8063,.5912808 +1.8063,.5912808 +7.120001,1.962908 +7.120001,1.962908 +7.120001,1.962908 +2.229583,.8018146 +2.229583,.8018146 +2.229583,.8018146 +2.229583,.8018146 +2.229583,.8018146 +2.229583,.8018146 +2.254901,.813106 +2.254901,.813106 +2.254901,.813106 +2.229583,.8018146 +2.229583,.8018146 +2.229583,.8018146 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.98236,1.092715 +2.98236,1.092715 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +3.702577,1.309029 +3.702577,1.309029 +3.702577,1.309029 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.78995,1.026024 +2.825424,1.038659 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +6.415383,1.858699 +6.415383,1.858699 +6.415383,1.858699 +2.615532,.9614677 +2.615532,.9614677 +2.615532,.9614677 +2.237043,.8051547 +2.237043,.8051547 +2.237043,.8051547 +3.516589,1.257492 +3.516589,1.257492 +3.516589,1.257492 +2.782349,1.023295 +2.782349,1.023295 +2.782349,1.023295 +5.068871,1.623118 +5.068871,1.623118 +5.068871,1.623118 +13.26044,2.584785 +13.26044,2.584785 +13.26044,2.584785 +1.609351,.475831 +1.609351,.475831 +1.609351,.475831 +1.609351,.475831 +1.609351,.475831 +1.806212,.5912321 +1.806212,.5912321 +1.806212,.5912321 +1.806212,.5912321 +1.806212,.5912321 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +3.076589,1.123822 +3.076589,1.123822 +3.076589,1.123822 +3.075268,1.123392 +3.075268,1.123392 +3.075268,1.123392 +2.250636,.8112129 +2.250636,.8112129 +2.250636,.8112129 +2.279253,.8238479 +2.279253,.8238479 +2.279253,.8238479 +3.142495,1.145017 +3.142495,1.145017 +3.142495,1.145017 +1.58915,.4631992 +1.58915,.4631992 +1.58915,.4631992 +1.58915,.4631992 +1.58915,.4631992 +2.602505,.9564744 +2.602505,.9564744 +2.602505,.9564744 +2.602505,.9564744 +2.602505,.9564744 +3.574538,1.273836 +3.574538,1.273836 +3.574538,1.273836 +2.828198,1.03964 +2.828198,1.03964 +2.828198,1.03964 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +1.99224,.6892597 +1.99224,.6892597 +1.99224,.6892597 +1.605342,.4733369 +1.605342,.4733369 +1.605342,.4733369 +1.605342,.4733369 +1.605342,.4733369 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.8781,1.05713 +2.8781,1.05713 +2.8781,1.05713 +2.8781,1.05713 +2.8781,1.05713 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.85413,1.048767 +2.85413,1.048767 +2.85413,1.048767 +2.566664,.942607 +2.566664,.942607 +2.566664,.942607 +3.203257,1.164168 +3.203257,1.164168 +3.203257,1.164168 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +1.557702,.4432115 +1.557702,.4432115 +1.557702,.4432115 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.294068,.8303265 +2.294068,.8303265 +2.294068,.8303265 +3.476926,1.246148 +3.476926,1.246148 +3.476926,1.246148 +3.4816,1.247492 +3.4816,1.247492 +3.4816,1.247492 +3.4816,1.247492 +3.4816,1.247492 +3.4816,1.247492 +3.137362,1.143382 +3.137362,1.143382 +3.137362,1.143382 +5.215892,1.65171 +5.215892,1.65171 +5.215892,1.65171 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.557702,.4432115 +1.557702,.4432115 +1.557702,.4432115 +4.668287,1.540792 +4.668287,1.540792 +4.668287,1.540792 +4.668287,1.540792 +4.668287,1.540792 +2.044034,.7149255 +2.044034,.7149255 +2.044034,.7149255 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.8669,1.053231 +2.8669,1.053231 +2.8669,1.053231 +2.751625,1.012192 +2.751625,1.012192 +2.751625,1.012192 +4.512316,1.506811 +4.512316,1.506811 +4.512316,1.506811 +2.451722,.8967908 +2.451722,.8967908 +2.451722,.8967908 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +5.269948,1.66202 +5.269948,1.66202 +5.269948,1.66202 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +5.672121,1.735563 +5.672121,1.735563 +5.672121,1.735563 +3.086035,1.126887 +3.086035,1.126887 +3.086035,1.126887 +2.519222,.9239499 +2.519222,.9239499 +2.519222,.9239499 +1.74774,.5583236 +1.74774,.5583236 +1.74774,.5583236 +2.67812,.9851151 +2.67812,.9851151 +2.67812,.9851151 +2.914574,1.069724 +2.914574,1.069724 +2.914574,1.069724 +2.277076,.8228924 +2.277076,.8228924 +2.277076,.8228924 +2.280138,.824236 +2.280138,.824236 +2.280138,.824236 +2.028895,.7074913 +2.028895,.7074913 +2.028895,.7074913 +2.277714,.8231722 +2.277714,.8231722 +2.277714,.8231722 +2.277714,.8231722 +2.277714,.8231722 +2.277714,.8231722 +3.772503,1.327739 +3.772503,1.327739 +3.772503,1.327739 +5.520263,1.708426 +5.520263,1.708426 +5.520263,1.708426 +3.98547,1.382655 +3.98547,1.382655 +3.98547,1.382655 +3.274295,1.186103 +3.274295,1.186103 +3.274295,1.186103 +2.590644,.9519065 +2.590644,.9519065 +2.590644,.9519065 +2.590644,.9519065 +2.590644,.9519065 +2.590644,.9519065 +3.633558,1.290212 +3.633558,1.290212 +3.633558,1.290212 +4.644575,1.5357 +4.644575,1.5357 +4.644575,1.5357 +4.767996,1.561926 +4.767996,1.561926 +4.767996,1.561926 +3.633558,1.290212 +3.633558,1.290212 +3.633558,1.290212 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +5.002394,1.609917 +5.002394,1.609917 +5.002394,1.609917 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.98236,1.092715 +2.98236,1.092715 +2.98236,1.092715 +2.547275,.9350241 +2.547275,.9350241 +2.547275,.9350241 +2.264995,.8175726 +2.264995,.8175726 +2.264995,.8175726 +1.594614,.4666318 +1.594614,.4666318 +1.594614,.4666318 +2.328352,.8451606 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +3.728783,1.316082 +3.728783,1.316082 +3.728783,1.316082 +2.850536,1.047507 +2.850536,1.047507 +2.850536,1.047507 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.229182,.8016346 +2.229182,.8016346 +2.229182,.8016346 +2.201193,.7889995 +2.201193,.7889995 +2.201193,.7889995 +4.004739,1.387478 +4.004739,1.387478 +4.004739,1.387478 +2.226189,.8002909 +2.226189,.8002909 +2.226189,.8002909 +2.201193,.7889995 +2.201193,.7889995 +2.201193,.7889995 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +2.280391,.8243469 +2.280391,.8243469 +2.280391,.8243469 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.054358,.7199632 +2.054358,.7199632 +2.054358,.7199632 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.738098,1.007264 +2.738098,1.007264 +2.738098,1.007264 +2.738098,1.007264 +2.738098,1.007264 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +3.914607,1.364715 +3.914607,1.364715 +3.914607,1.364715 +3.914607,1.364715 +3.914607,1.364715 +3.097263,1.130519 +3.097263,1.130519 +3.097263,1.130519 +3.097263,1.130519 +3.097263,1.130519 +2.450575,.8963225 +2.450575,.8963225 +2.450575,.8963225 +2.450575,.8963225 +2.450575,.8963225 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +5.914585,1.777421 +5.914585,1.777421 +5.914585,1.777421 +5.914585,1.777421 +5.914585,1.777421 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +3.017513,1.104433 +3.017513,1.104433 +3.017513,1.104433 +5.633392,1.728712 +5.633392,1.728712 +5.633392,1.728712 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +2.828198,1.03964 +2.828198,1.03964 +2.828198,1.03964 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.823805,.600925 +1.605342,.4733369 +1.605342,.4733369 +1.605342,.4733369 +3.001914,1.09925 +3.001914,1.09925 +3.001914,1.09925 +3.001914,1.09925 +3.001914,1.09925 +1.757982,.5641664 +1.757982,.5641664 +1.757982,.5641664 +1.757982,.5641664 +1.757982,.5641664 +1.780335,.5768014 +1.780335,.5768014 +1.780335,.5768014 +1.780335,.5768014 +1.780335,.5768014 +2.774063,1.020313 +2.774063,1.020313 +2.774063,1.020313 +2.774063,1.020313 +2.774063,1.020313 +3.123981,1.139108 +3.123981,1.139108 +3.123981,1.139108 +3.123981,1.139108 +3.123981,1.139108 +1.820879,.5993191 +1.820879,.5993191 +1.820879,.5993191 +1.820879,.5993191 +1.820879,.5993191 +1.820879,.5993191 +1.820879,.5993191 +1.820879,.5993191 +1.820879,.5993191 +1.640842,.4952095 +1.640842,.4952095 +1.640842,.4952095 +1.820879,.5993191 +1.820879,.5993191 +1.820879,.5993191 +1.537981,.4304707 +1.537981,.4304707 +1.537981,.4304707 +3.526896,1.260418 +3.526896,1.260418 +3.526896,1.260418 +2.519222,.9239499 +2.519222,.9239499 +2.519222,.9239499 +2.519222,.9239499 +2.519222,.9239499 +3.184025,1.158146 +3.184025,1.158146 +3.184025,1.158146 +3.184025,1.158146 +3.184025,1.158146 +2.814169,1.034667 +2.814169,1.034667 +2.814169,1.034667 +1.271567,.2402499 +1.271567,.2402499 +1.271567,.2402499 +1.271567,.2402499 +1.271567,.2402499 +1.271567,.2402499 +1.783461,.5785557 +1.783461,.5785557 +1.783461,.5785557 +3.182452,1.157652 +3.182452,1.157652 +3.182452,1.157652 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +1.74774,.5583236 +1.74774,.5583236 +1.74774,.5583236 +1.769963,.5709586 +1.769963,.5709586 +1.769963,.5709586 +1.648389,.4997983 +1.648389,.4997983 +1.648389,.4997983 +2.546065,.934549 +3.66354,1.29843 +3.66354,1.29843 +3.66354,1.29843 +2.487591,.9113149 +2.487591,.9113149 +2.487591,.9113149 +2.948335,1.081241 +2.948335,1.081241 +2.948335,1.081241 +2.280391,.8243469 +2.280391,.8243469 +2.280391,.8243469 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +5.442616,1.69426 +5.442616,1.69426 +5.442616,1.69426 +5.442616,1.69426 +5.442616,1.69426 +1.824238,.6011622 +1.824238,.6011622 +1.824238,.6011622 +1.824238,.6011622 +1.824238,.6011622 +2.054346,.7199574 +2.054346,.7199574 +2.054346,.7199574 +2.054346,.7199574 +2.054346,.7199574 +2.279752,.8240669 +2.279752,.8240669 +2.279752,.8240669 +2.279752,.8240669 +2.279752,.8240669 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +3.824697,1.341479 +3.824697,1.341479 +3.824697,1.341479 +3.824697,1.341479 +3.824697,1.341479 +2.39429,.8730869 +2.39429,.8730869 +2.39429,.8730869 +2.39429,.8730869 +2.39429,.8730869 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.995366,1.097066 +2.995366,1.097066 +2.995366,1.097066 +3.738287,1.318628 +3.738287,1.318628 +3.738287,1.318628 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +2.306126,.8355691 +2.306126,.8355691 +2.306126,.8355691 +2.306126,.8355691 +2.306126,.8355691 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +17.92653,2.886282 +17.92653,2.886282 +17.92653,2.886282 +6.57192,1.882806 +6.57192,1.882806 +6.57192,1.882806 +3.962582,1.376896 +3.962582,1.376896 +3.962582,1.376896 +3.71917,1.313501 +3.71917,1.313501 +3.71917,1.313501 +3.479224,1.246809 +3.479224,1.246809 +3.479224,1.246809 +1.968767,.6774077 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +2.227046,.800676 +2.227046,.800676 +2.227046,.800676 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +1.570005,.4510788 +1.570005,.4510788 +1.570005,.4510788 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +1.868814,.6253039 +1.868814,.6253039 +1.868814,.6253039 +1.868814,.6253039 +1.868814,.6253039 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.335459,.8482086 +2.335459,.8482086 +2.335459,.8482086 +2.335459,.8482086 +2.335459,.8482086 +2.543554,.9335622 +2.543554,.9335622 +2.543554,.9335622 +2.543554,.9335622 +2.543554,.9335622 +1.413932,.3463747 +1.413932,.3463747 +1.413932,.3463747 +1.413932,.3463747 +1.413932,.3463747 +1.766993,.5692794 +1.766993,.5692794 +1.766993,.5692794 +1.766993,.5692794 +1.766993,.5692794 +1.592285,.4651698 +1.592285,.4651698 +1.592285,.4651698 +1.592285,.4651698 +1.592285,.4651698 +1.783461,.5785557 +1.783461,.5785557 +1.783461,.5785557 +1.803713,.5898471 +1.803713,.5898471 +1.803713,.5898471 +1.783461,.5785557 +1.783461,.5785557 +1.783461,.5785557 +1.607124,.4744461 +1.607124,.4744461 +1.607124,.4744461 +3.295005,1.192408 +3.295005,1.192408 +3.295005,1.192408 +2.969217,1.088298 +2.969217,1.088298 +2.969217,1.088298 +2.969217,1.088298 +2.969217,1.088298 +2.969217,1.088298 +7.476551,2.011772 +7.476551,2.011772 +7.476551,2.011772 +2.546457,.9347031 +2.546457,.9347031 +2.546457,.9347031 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.603844,.9569889 +2.603844,.9569889 +2.603844,.9569889 +3.802884,1.33576 +3.802884,1.33576 +3.802884,1.33576 +2.009193,.697733 +2.009193,.697733 +2.009193,.697733 +1.584332,.4601627 +1.584332,.4601627 +1.584332,.4601627 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +2.306051,.8355367 +2.306051,.8355367 +2.306051,.8355367 +3.05479,1.116711 +3.05479,1.116711 +3.05479,1.116711 +6.305179,1.841371 +6.305179,1.841371 +6.305179,1.841371 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.701041,.9936371 +2.701041,.9936371 +2.701041,.9936371 +3.381643,1.218361 +3.381643,1.218361 +3.381643,1.218361 +3.381643,1.218361 +3.381643,1.218361 +3.381643,1.218361 +3.381643,1.218361 +3.381643,1.218361 +3.381643,1.218361 +3.381643,1.218361 +3.424641,1.230997 +3.424641,1.230997 +3.424641,1.230997 +3.424641,1.230997 +3.424641,1.230997 +3.047288,1.114252 +3.047288,1.114252 +3.047288,1.114252 +3.047288,1.114252 +3.047288,1.114252 +2.70596,.9954568 +2.70596,.9954568 +2.70596,.9954568 +2.70596,.9954568 +2.70596,.9954568 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.600079,.4700527 +1.600079,.4700527 +1.600079,.4700527 +1.600079,.4700527 +1.600079,.4700527 +2.847165,1.046324 +4.211367,1.437787 +4.211367,1.437787 +4.211367,1.437787 +2.009088,.697681 +2.009088,.697681 +2.009088,.697681 +2.201536,.7891555 +2.201536,.7891555 +2.201536,.7891555 +2.229529,.8017906 +2.229529,.8017906 +2.229529,.8017906 +1.78405,.5788859 +1.78405,.5788859 +1.78405,.5788859 +2.229529,.8017906 +2.229529,.8017906 +2.229529,.8017906 +2.761911,1.015923 +2.761911,1.015923 +2.761911,1.015923 +2.761911,1.015923 +2.761911,1.015923 +2.761911,1.015923 +2.279439,.8239293 +2.279439,.8239293 +2.279439,.8239293 +2.279439,.8239293 +2.279439,.8239293 +5.808779,1.75937 +5.808779,1.75937 +5.808779,1.75937 +5.808779,1.75937 +5.808779,1.75937 +2.279439,.8239293 +2.279439,.8239293 +2.279439,.8239293 +2.279439,.8239293 +2.279439,.8239293 +2.028273,.7071847 +2.028273,.7071847 +2.028273,.7071847 +2.028273,.7071847 +2.028273,.7071847 +4.067146,1.402941 +1.782243,.5778726 +1.782243,.5778726 +1.782243,.5778726 +1.782243,.5778726 +1.782243,.5778726 +1.782243,.5778726 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +2.235938,.8046607 +2.235938,.8046607 +2.235938,.8046607 +3.785136,1.331082 +3.785136,1.331082 +3.785136,1.331082 +2.564412,.9417292 +2.564412,.9417292 +2.564412,.9417292 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.813913,1.034576 +2.813913,1.034576 +2.813913,1.034576 +2.22938,.8017235 +2.22938,.8017235 +2.22938,.8017235 +2.22938,.8017235 +2.22938,.8017235 +2.22938,.8017235 +2.008953,.6976139 +2.008953,.6976139 +2.008953,.6976139 +2.22938,.8017235 +2.22938,.8017235 +2.22938,.8017235 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +2.226477,.8004205 +2.226477,.8004205 +2.226477,.8004205 +2.226477,.8004205 +2.226477,.8004205 +2.568038,.9431421 +2.568038,.9431421 +2.568038,.9431421 +2.568038,.9431421 +2.568038,.9431421 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +5.102506,1.629732 +5.102506,1.629732 +5.102506,1.629732 +4.253063,1.447639 +4.253063,1.447639 +4.253063,1.447639 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +4.564652,1.518342 +4.564652,1.518342 +4.564652,1.518342 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +2.276939,.8228321 +2.276939,.8228321 +2.276939,.8228321 +2.305891,.8354672 +2.305891,.8354672 +2.305891,.8354672 +2.004206,.6952478 +2.004206,.6952478 +2.004206,.6952478 +2.252391,.8119924 +2.252391,.8119924 +2.252391,.8119924 +2.575777,.9461513 +2.575777,.9461513 +2.575777,.9461513 +3.612706,1.284457 +3.612706,1.284457 +3.612706,1.284457 +3.65373,1.295748 +3.65373,1.295748 +3.65373,1.295748 +3.612706,1.284457 +3.612706,1.284457 +3.612706,1.284457 +3.426004,1.231395 +3.426004,1.231395 +3.426004,1.231395 +2.710677,.9971984 +2.710677,.9971984 +2.710677,.9971984 +2.184153,.7812282 +2.184153,.7812282 +2.184153,.7812282 +2.208955,.7925197 +2.208955,.7925197 +2.208955,.7925197 +2.104544,.744099 +2.104544,.744099 +2.104544,.744099 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.434218,.8896254 +2.434218,.8896254 +2.434218,.8896254 +2.434218,.8896254 +2.434218,.8896254 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +4.411458,1.484205 +4.411458,1.484205 +4.411458,1.484205 +1.557702,.4432115 +1.557702,.4432115 +1.557702,.4432115 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +1.648389,.4997983 +1.648389,.4997983 +1.648389,.4997983 +2.335459,.8482086 +2.335459,.8482086 +2.335459,.8482086 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +3.026125,1.107283 +3.026125,1.107283 +3.026125,1.107283 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +2.564412,.9417292 +2.564412,.9417292 +2.564412,.9417292 +2.992148,1.095992 +2.992148,1.095992 +2.992148,1.095992 +1.824622,.6013729 +1.824622,.6013729 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +1.305409,.2665162 +1.305409,.2665162 +1.305409,.2665162 +2.532421,.9291756 +2.532421,.9291756 +2.532421,.9291756 +2.663571,.9796678 +2.663571,.9796678 +2.663571,.9796678 +2.989388,1.095069 +2.989388,1.095069 +2.989388,1.095069 +3.539258,1.263917 +3.539258,1.263917 +3.539258,1.263917 +8.215553,2.106029 +8.215553,2.106029 +8.215553,2.106029 +3.494821,1.251282 +3.494821,1.251282 +3.494821,1.251282 +4.069176,1.403441 +4.069176,1.403441 +4.069176,1.403441 +2.211925,.7938633 +2.211925,.7938633 +2.211925,.7938633 +5.926639,1.779457 +5.926639,1.779457 +5.926639,1.779457 +3.096991,1.130431 +3.096991,1.130431 +2.237043,.8051547 +2.237043,.8051547 +2.237043,.8051547 +1.577052,.4555576 +1.577052,.4555576 +1.577052,.4555576 +3.574081,1.273708 +3.574081,1.273708 +3.574081,1.273708 +3.752856,1.322517 +3.752856,1.322517 +3.752856,1.322517 +3.569282,1.272364 +3.569282,1.272364 +3.569282,1.272364 +1.824359,.601229 +1.824359,.601229 +1.824359,.601229 +1.824359,.601229 +1.824359,.601229 +1.824359,.601229 +3.891292,1.358741 +3.891292,1.358741 +3.891292,1.358741 +2.231922,.8028633 +5.642968,1.73041 +5.642968,1.73041 +5.642968,1.73041 +2.227049,.8006775 +2.227049,.8006775 +2.227049,.8006775 +4.440338,1.490731 +4.440338,1.490731 +4.440338,1.490731 +2.335459,.8482086 +2.335459,.8482086 +2.335459,.8482086 +2.294068,.8303265 +2.294068,.8303265 +2.294068,.8303265 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +3.127617,1.140271 +3.127617,1.140271 +3.127617,1.140271 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.538947,.9317495 +2.538947,.9317495 +2.538947,.9317495 +4.104554,1.412097 +4.104554,1.412097 +4.104554,1.412097 +3.127966,1.140383 +3.127966,1.140383 +3.127966,1.140383 +5.253677,1.658928 +5.253677,1.658928 +5.253677,1.658928 +2.81292,1.034223 +2.81292,1.034223 +2.81292,1.034223 +2.506336,.9188219 +2.506336,.9188219 +2.506336,.9188219 +5.075893,1.624503 +5.075893,1.624503 +5.075893,1.624503 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +5.01508,1.612449 +5.01508,1.612449 +5.01508,1.612449 +5.01508,1.612449 +5.01508,1.612449 +2.985288,1.093696 +2.985288,1.093696 +2.985288,1.093696 +2.985288,1.093696 +2.985288,1.093696 +2.792689,1.027005 +2.792689,1.027005 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +1.748245,.5586125 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +1.605342,.4733369 +1.605342,.4733369 +1.605342,.4733369 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +5.724538,1.744762 +5.724538,1.744762 +5.724538,1.744762 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +4.668241,1.540782 +4.668241,1.540782 +4.668241,1.540782 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.903353,1.065866 +2.903353,1.065866 +2.903353,1.065866 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +2.335459,.8482086 +2.335459,.8482086 +2.335459,.8482086 +1.804167,.590099 +1.804167,.590099 +1.804167,.590099 +4.05053,1.398848 +4.05053,1.398848 +4.05053,1.398848 +2.379904,.8670601 +2.379904,.8670601 +2.379904,.8670601 +1.781515,.577464 +1.781515,.577464 +1.781515,.577464 +2.226104,.8002532 +2.226104,.8002532 +2.226104,.8002532 +2.279758,.8240695 +2.279758,.8240695 +2.279758,.8240695 +1.824242,.6011648 +1.824242,.6011648 +1.824242,.6011648 +2.279758,.8240695 +2.279758,.8240695 +2.279758,.8240695 +2.305646,.8353609 +2.305646,.8353609 +2.305646,.8353609 +2.207864,.7920257 +2.207864,.7920257 +2.207864,.7920257 +3.182452,1.157652 +3.182452,1.157652 +3.182452,1.157652 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +9.637183,2.265629 +9.637183,2.265629 +9.637183,2.265629 +2.988131,1.094648 +2.988131,1.094648 +2.988131,1.094648 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +1.604713,.4729447 +1.604713,.4729447 +1.604713,.4729447 +1.800874,.5882719 +1.800874,.5882719 +1.800874,.5882719 +1.993801,.6900427 +3.064617,1.119923 +7.04697,1.952598 +2.184785,.7815173 +2.184785,.7815173 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +2.364229,.8604519 +2.364229,.8604519 +2.364229,.8604519 +4.546378,1.514331 +4.546378,1.514331 +4.546378,1.514331 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +2.948763,1.081386 +4.036768,1.395445 +4.036768,1.395445 +4.036768,1.395445 +4.036768,1.395445 +4.036768,1.395445 +2.564178,.9416382 +2.564178,.9416382 +2.564178,.9416382 +2.564178,.9416382 +2.564178,.9416382 +2.954311,1.083266 +2.954311,1.083266 +2.954311,1.083266 +2.954311,1.083266 +2.954311,1.083266 +2.251398,.8115516 +2.251398,.8115516 +2.251398,.8115516 +2.251398,.8115516 +2.251398,.8115516 +3.364745,1.213352 +3.364745,1.213352 +3.364745,1.213352 +3.364745,1.213352 +3.364745,1.213352 +3.240846,1.175834 +3.240846,1.175834 +3.240846,1.175834 +3.240846,1.175834 +3.240846,1.175834 +2.275685,.8222811 +2.275685,.8222811 +2.275685,.8222811 +2.275685,.8222811 +2.275685,.8222811 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.557702,.4432115 +1.557702,.4432115 +1.557702,.4432115 +5.853918,1.767111 +5.853918,1.767111 +5.853918,1.767111 +4.631659,1.532915 +4.631659,1.532915 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +2.629197,.9666783 +2.629197,.9666783 +2.629197,.9666783 +6.206392,1.82558 +6.206392,1.82558 +6.206392,1.82558 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +4.507341,1.505707 +4.507341,1.505707 +4.507341,1.505707 +4.507341,1.505707 +4.507341,1.505707 +2.525117,.9262873 +2.525117,.9262873 +2.525117,.9262873 +2.227046,.800676 +2.227046,.800676 +2.227046,.800676 +3.877946,1.355306 +3.877946,1.355306 +3.877946,1.355306 +3.526896,1.260418 +3.526896,1.260418 +3.526896,1.260418 +1.801071,.5883814 +1.801071,.5883814 +1.801071,.5883814 +2.27942,.8239211 +2.27942,.8239211 +2.27942,.8239211 +1.823972,.6010165 +1.823972,.6010165 +1.823972,.6010165 +2.27942,.8239211 +2.27942,.8239211 +2.27942,.8239211 +2.054046,.7198116 +2.054046,.7198116 +2.054046,.7198116 +1.823972,.6010165 +1.823972,.6010165 +1.823972,.6010165 +2.053136,.7193683 +2.053136,.7193683 +2.053136,.7193683 +2.32012,.8416188 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +2.294068,.8303265 +2.294068,.8303265 +2.294068,.8303265 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.51995,.9242389 +2.51995,.9242389 +2.51995,.9242389 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.60042,1.28105 +3.60042,1.28105 +3.60042,1.28105 +2.828198,1.03964 +2.828198,1.03964 +2.184785,.7815173 +2.184785,.7815173 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.897185,1.06374 +2.897185,1.06374 +2.897185,1.06374 +2.897185,1.06374 +2.897185,1.06374 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.226566,.8004603 +2.226566,.8004603 +2.226566,.8004603 +1.784073,.5788992 +1.784073,.5788992 +1.784073,.5788992 +2.009115,.6976944 +2.009115,.6976944 +2.009115,.6976944 +3.156668,1.149517 +3.156668,1.149517 +3.156668,1.149517 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +4.604823,1.527104 +4.604823,1.527104 +4.604823,1.527104 +3.611285,1.284064 +3.611285,1.284064 +3.611285,1.284064 +3.295005,1.192408 +3.295005,1.192408 +3.295005,1.192408 +3.896241,1.360012 +3.896241,1.360012 +3.896241,1.360012 +2.246366,.8093139 +2.246366,.8093139 +2.246366,.8093139 +2.246366,.8093139 +2.246366,.8093139 +3.309073,1.196668 +3.309073,1.196668 +3.309073,1.196668 +3.309073,1.196668 +3.309073,1.196668 +2.830222,1.040355 +2.830222,1.040355 +2.830222,1.040355 +2.830222,1.040355 +2.830222,1.040355 +2.239302,.8061644 +2.239302,.8061644 +2.239302,.8061644 +2.26088,.8157539 +2.009136,.697705 +2.009136,.697705 +2.009136,.697705 +2.246366,.8093139 +2.246366,.8093139 +2.246366,.8093139 +2.955614,1.083706 +2.955614,1.083706 +2.955614,1.083706 +2.546065,.934549 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.770474,.5712476 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +3.989161,1.383581 +3.989161,1.383581 +3.989161,1.383581 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.008237,.697257 +2.008237,.697257 +2.008237,.697257 +3.471558,1.244604 +3.471558,1.244604 +3.471558,1.244604 +3.471558,1.244604 +2.219479,.7972726 +2.219479,.7972726 +2.228763,.8014466 +2.228763,.8014466 +3.637723,1.291358 +3.637723,1.291358 +2.846109,1.045953 +2.228763,.8014466 +2.228763,.8014466 +2.228763,.8014466 +2.228763,.8014466 +2.271294,.8203498 +2.228763,.8014466 +2.228763,.8014466 +2.295856,.8311059 +2.295856,.8311059 +2.275239,.822085 +3.492131,1.250512 +3.492131,1.250512 +3.492131,1.250512 +2.296717,.8314809 +2.296717,.8314809 +2.296717,.8314809 +3.463885,1.242391 +3.600247,1.281002 +3.375382,1.216509 +2.228119,.8011577 +2.246224,.8092507 +2.246224,.8092507 +2.246224,.8092507 +2.245906,.8091089 +2.246366,.8093139 +2.246366,.8093139 +2.296448,.8313638 +3.144076,1.14552 +2.238029,.8055957 +2.238029,.8055957 +2.296717,.8314809 +2.296717,.8314809 +3.446856,1.237463 +3.401596,1.224245 +2.246224,.8092507 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +2.921613,1.072136 +2.921613,1.072136 +2.921613,1.072136 +2.201481,.7891303 +2.201481,.7891303 +2.201481,.7891303 +1.569606,.4508246 +1.569606,.4508246 +1.569606,.4508246 +2.201481,.7891303 +2.201481,.7891303 +2.201481,.7891303 +2.052322,.7189717 +2.052322,.7189717 +2.052322,.7189717 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.248911,.8104463 +2.248911,.8104463 +2.248911,.8104463 +2.593914,.9531679 +2.593914,.9531679 +2.593914,.9531679 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +1.648389,.4997983 +1.648389,.4997983 +1.648389,.4997983 +3.413988,1.227881 +3.413988,1.227881 +3.413988,1.227881 +3.702577,1.309029 +3.702577,1.309029 +3.702577,1.309029 +2.610213,.9594318 +2.610213,.9594318 +2.610213,.9594318 +2.98236,1.092715 +2.98236,1.092715 +2.98236,1.092715 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +2.246958,.8095773 +2.246958,.8095773 +2.246958,.8095773 +1.976922,.6815412 +1.976922,.6815412 +1.976922,.6815412 +2.221729,.7982858 +2.221729,.7982858 +2.221729,.7982858 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +3.579229,1.275147 +3.579229,1.275147 +3.579229,1.275147 +3.579229,1.275147 +3.579229,1.275147 +4.781448,1.564743 +4.781448,1.564743 +4.781448,1.564743 +4.781448,1.564743 +4.781448,1.564743 +3.643808,1.293029 +3.643808,1.293029 +3.643808,1.293029 +3.643808,1.293029 +3.643808,1.293029 +3.408724,1.226338 +3.408724,1.226338 +3.408724,1.226338 +3.408724,1.226338 +3.408724,1.226338 +4.357183,1.471826 +4.357183,1.471826 +4.357183,1.471826 +4.357183,1.471826 +4.357183,1.471826 +3.643808,1.293029 +3.643808,1.293029 +3.643808,1.293029 +3.643808,1.293029 +3.643808,1.293029 +1.967226,.6766247 +1.967226,.6766247 +1.967226,.6766247 +1.99224,.6892597 +1.99224,.6892597 +1.99224,.6892597 +1.770174,.5710777 +1.770174,.5710777 +1.770174,.5710777 +3.529059,1.261031 +3.529059,1.261031 +3.529059,1.261031 +2.184414,.7813474 +2.184414,.7813474 +2.184414,.7813474 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +1.623811,.4847755 +1.623811,.4847755 +1.623811,.4847755 +1.623811,.4847755 +1.623811,.4847755 +1.822441,.6001766 +1.822441,.6001766 +1.822441,.6001766 +1.822441,.6001766 +1.822441,.6001766 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +2.984558,1.093452 +2.984558,1.093452 +2.984558,1.093452 +2.984558,1.093452 +2.984558,1.093452 +3.973304,1.379598 +3.973304,1.379598 +3.973304,1.379598 +2.845902,1.04588 +2.845902,1.04588 +2.845902,1.04588 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +4.320667,1.46341 +4.320667,1.46341 +4.320667,1.46341 +3.462008,1.241849 +3.462008,1.241849 +3.462008,1.241849 +3.489367,1.24972 +3.489367,1.24972 +3.489367,1.24972 +3.144048,1.145511 +3.144048,1.145511 +3.144048,1.145511 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.306126,.8355691 +2.306126,.8355691 +2.306126,.8355691 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +5.665836,1.734455 +5.665836,1.734455 +5.665836,1.734455 +3.420846,1.229888 +3.420846,1.229888 +3.420846,1.229888 +3.420846,1.229888 +3.420846,1.229888 +3.420846,1.229888 +4.924244,1.594171 +4.924244,1.594171 +4.924244,1.594171 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +4.727598,1.553417 +4.727598,1.553417 +4.727598,1.553417 +4.727598,1.553417 +4.727598,1.553417 +3.169796,1.153667 +3.169796,1.153667 +3.169796,1.153667 +3.169796,1.153667 +3.169796,1.153667 +4.02576,1.392714 +4.02576,1.392714 +4.02576,1.392714 +3.534695,1.262627 +3.534695,1.262627 +3.534695,1.262627 +3.534695,1.262627 +3.534695,1.262627 +3.534695,1.262627 +1.74774,.5583236 +1.74774,.5583236 +1.74774,.5583236 +1.74774,.5583236 +1.74774,.5583236 +2.208955,.7925197 +2.208955,.7925197 +2.208955,.7925197 +2.208955,.7925197 +2.208955,.7925197 +1.989171,.6877179 +1.989171,.6877179 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +8.139304,2.096705 +8.139304,2.096705 +3.452067,1.238973 +3.452067,1.238973 +3.452067,1.238973 +3.452067,1.238973 +3.452067,1.238973 +3.452067,1.238973 +3.931652,1.36906 +3.931652,1.36906 +3.931652,1.36906 +7.318247,1.990371 +7.318247,1.990371 +7.318247,1.990371 +3.452067,1.238973 +3.452067,1.238973 +3.452067,1.238973 +2.762313,1.016068 +2.762313,1.016068 +2.762313,1.016068 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +10.09969,2.312505 +10.09969,2.312505 +10.09969,2.312505 +10.09969,2.312505 +10.09969,2.312505 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.777748,.5753476 +1.777748,.5753476 +1.777748,.5753476 +2.221655,.7982523 +2.221655,.7982523 +2.221655,.7982523 +2.221655,.7982523 +2.221655,.7982523 +2.221655,.7982523 +2.221655,.7982523 +2.221655,.7982523 +2.221655,.7982523 +2.001992,.6941428 +2.001992,.6941428 +2.001992,.6941428 +3.503366,1.253724 +3.503366,1.253724 +3.503366,1.253724 +2.803362,1.03082 +2.803362,1.03082 +2.803362,1.03082 +3.503366,1.253724 +3.503366,1.253724 +3.503366,1.253724 +3.543148,1.265016 +3.543148,1.265016 +3.543148,1.265016 +3.602706,1.281685 +3.602706,1.281685 +3.602706,1.281685 +4.301766,1.459026 +4.301766,1.459026 +4.301766,1.459026 +2.363087,.8599687 +2.363087,.8599687 +2.363087,.8599687 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +2.335459,.8482086 +2.335459,.8482086 +2.335459,.8482086 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +1.823431,.6007199 +1.823431,.6007199 +1.823431,.6007199 +1.823431,.6007199 +1.823431,.6007199 +2.278744,.8236247 +2.278744,.8236247 +2.278744,.8236247 +2.278744,.8236247 +2.278744,.8236247 +1.891239,.6372324 +1.891239,.6372324 +1.891239,.6372324 +1.513353,.4143277 +1.513353,.4143277 +1.513353,.4143277 +1.823943,.6010009 +1.823943,.6010009 +1.823943,.6010009 +3.241141,1.175925 +3.241141,1.175925 +3.241141,1.175925 +3.282353,1.18856 +3.282353,1.18856 +3.282353,1.18856 +3.503366,1.253724 +3.503366,1.253724 +3.503366,1.253724 +3.459379,1.241089 +3.459379,1.241089 +3.459379,1.241089 +3.498662,1.252381 +3.498662,1.252381 +3.498662,1.252381 +4.979712,1.605372 +4.979712,1.605372 +4.979712,1.605372 +2.596261,.9540724 +2.596261,.9540724 +2.596261,.9540724 +2.279567,.8239858 +2.279567,.8239858 +2.279567,.8239858 +1.82409,.601081 +1.82409,.601081 +1.82409,.601081 +2.279567,.8239858 +2.279567,.8239858 +2.279567,.8239858 +2.227642,.8009437 +2.227642,.8009437 +1.782539,.578039 +1.782539,.578039 +1.782539,.578039 +4.663221,1.539706 +4.663221,1.539706 +4.663221,1.539706 +2.227642,.8009437 +2.227642,.8009437 +2.227642,.8009437 +2.227642,.8009437 +2.227642,.8009437 +2.227642,.8009437 +3.184945,1.158435 +3.184945,1.158435 +3.184945,1.158435 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.282353,1.18856 +3.282353,1.18856 +3.282353,1.18856 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +2.620786,.9634743 +2.620786,.9634743 +2.620786,.9634743 +1.841321,.6104829 +1.841321,.6104829 +1.841321,.6104829 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +3.407839,1.226078 +3.407839,1.226078 +3.407839,1.226078 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.535311,.9303162 +2.535311,.9303162 +2.535311,.9303162 +3.739508,1.318954 +3.739508,1.318954 +3.739508,1.318954 +3.739508,1.318954 +3.739508,1.318954 +4.158333,1.425114 +4.158333,1.425114 +4.158333,1.425114 +4.158333,1.425114 +4.158333,1.425114 +3.156976,1.149615 +3.156976,1.149615 +3.156976,1.149615 +6.373847,1.852203 +6.373847,1.852203 +6.373847,1.852203 +3.156976,1.149615 +3.156976,1.149615 +3.156976,1.149615 +2.006337,.6963109 +2.006337,.6963109 +2.006337,.6963109 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.006337,.6963109 +2.006337,.6963109 +2.006337,.6963109 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.827381,1.039351 +2.827381,1.039351 +2.827381,1.039351 +1.993225,.6897537 +1.993225,.6897537 +1.993225,.6897537 +5.550559,1.713899 +5.550559,1.713899 +5.550559,1.713899 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +4.447479,1.492337 +4.447479,1.492337 +4.447479,1.492337 +4.447479,1.492337 +4.447479,1.492337 +3.816824,1.339419 +3.816824,1.339419 +3.816824,1.339419 +3.816824,1.339419 +3.816824,1.339419 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +2.25176,.8117119 +2.25176,.8117119 +2.25176,.8117119 +2.954785,1.083426 +2.954785,1.083426 +2.954785,1.083426 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.25176,.8117119 +2.25176,.8117119 +2.25176,.8117119 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.298568,.8322862 +2.298568,.8322862 +2.298568,.8322862 +1.620426,.4826891 +1.620426,.4826891 +1.620426,.4826891 +1.996818,.6915549 +1.996818,.6915549 +1.996818,.6915549 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.526547,1.260319 +3.526547,1.260319 +3.526547,1.260319 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +3.711195,1.311354 +3.711195,1.311354 +3.711195,1.311354 +3.711195,1.311354 +3.711195,1.311354 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +4.507341,1.505707 +4.507341,1.505707 +4.507341,1.505707 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.762313,1.016068 +2.762313,1.016068 +2.762313,1.016068 +2.762313,1.016068 +2.762313,1.016068 +2.762313,1.016068 +2.762313,1.016068 +2.762313,1.016068 +2.762313,1.016068 +2.762313,1.016068 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.539853,.9321062 +2.539853,.9321062 +2.539853,.9321062 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.294068,.8303265 +2.294068,.8303265 +2.294068,.8303265 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.766015,.5687255 +1.766015,.5687255 +1.766015,.5687255 +2.260434,.8155568 +2.260434,.8155568 +2.260434,.8155568 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.289077,.8281488 +2.289077,.8281488 +2.289077,.8281488 +1.330474,.2855354 +1.330474,.2855354 +1.330474,.2855354 +2.007314,.6967977 +2.007314,.6967977 +2.007314,.6967977 +2.007754,.6970165 +2.007754,.6970165 +2.007754,.6970165 +2.007754,.6970165 +2.007754,.6970165 +2.228049,.8011261 +2.228049,.8011261 +2.228049,.8011261 +2.228049,.8011261 +2.228049,.8011261 +2.228049,.8011261 +2.228049,.8011261 +2.228049,.8011261 +2.228049,.8011261 +2.228049,.8011261 +2.225057,.7997825 +2.225057,.7997825 +2.225057,.7997825 +2.225057,.7997825 +2.225057,.7997825 +2.228049,.8011261 +2.228049,.8011261 +2.228049,.8011261 +2.228049,.8011261 +2.228049,.8011261 +3.965469,1.377624 +3.965469,1.377624 +3.965469,1.377624 +3.481759,1.247538 +3.481759,1.247538 +3.481759,1.247538 +5.469244,1.69914 +5.469244,1.69914 +5.469244,1.69914 +1.769963,.5709586 +1.769963,.5709586 +1.769963,.5709586 +1.993225,.6897537 +1.993225,.6897537 +1.993225,.6897537 +4.10334,1.411801 +4.10334,1.411801 +4.10334,1.411801 +3.470147,1.244197 +3.470147,1.244197 +3.470147,1.244197 +2.77678,1.021292 +2.77678,1.021292 +2.77678,1.021292 +3.470147,1.244197 +3.470147,1.244197 +3.470147,1.244197 +3.430024,1.232567 +3.430024,1.232567 +3.430024,1.232567 +3.430024,1.232567 +3.430024,1.232567 +2.207864,.7920257 +2.207864,.7920257 +2.207864,.7920257 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.237043,.8051547 +2.237043,.8051547 +2.237043,.8051547 +1.968199,.6771187 +1.968199,.6771187 +2.008861,.6975681 +2.229278,.8016776 +2.229278,.8016776 +2.229278,.8016776 +2.538985,.9317642 +2.58344,.9491217 +2.58344,.9491217 +2.58344,.9491217 +2.58344,.9491217 +2.58344,.9491217 +2.903353,1.065866 +2.903353,1.065866 +2.903353,1.065866 +2.903353,1.065866 +2.903353,1.065866 +3.36185,1.212491 +3.36185,1.212491 +3.36185,1.212491 +3.36185,1.212491 +3.36185,1.212491 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +7.280629,1.985217 +7.280629,1.985217 +7.280629,1.985217 +7.280629,1.985217 +2.05991,.7226623 +2.05991,.7226623 +2.05991,.7226623 +2.05991,.7226623 +2.05991,.7226623 +2.935189,1.076772 +2.935189,1.076772 +2.935189,1.076772 +2.935189,1.076772 +2.935189,1.076772 +2.935189,1.076772 +2.349527,.854214 +2.349527,.854214 +2.349527,.854214 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.799559,.5875415 +1.799559,.5875415 +1.799559,.5875415 +3.237266,1.174729 +3.237266,1.174729 +3.237266,1.174729 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +4.631659,1.532915 +4.631659,1.532915 +4.631659,1.532915 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +2.335459,.8482086 +2.335459,.8482086 +2.335459,.8482086 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +4.946827,1.598746 +4.946827,1.598746 +4.946827,1.598746 +2.959514,1.085025 +2.959514,1.085025 +2.959514,1.085025 +3.023523,1.106423 +3.023523,1.106423 +3.023523,1.106423 +3.023523,1.106423 +3.023523,1.106423 +3.023523,1.106423 +2.718996,1.000262 +2.718996,1.000262 +2.718996,1.000262 +3.397933,1.223167 +3.397933,1.223167 +3.397933,1.223167 +2.684857,.9876274 +2.684857,.9876274 +2.684857,.9876274 +3.397933,1.223167 +3.397933,1.223167 +3.397933,1.223167 +5.375414,1.681836 +5.375414,1.681836 +5.375414,1.681836 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.251603,.8116426 +2.251603,.8116426 +2.251603,.8116426 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.306126,.8355691 +2.306126,.8355691 +2.306126,.8355691 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +4.212332,1.438016 +4.212332,1.438016 +4.212332,1.438016 +2.341587,.8508288 +2.341587,.8508288 +2.341587,.8508288 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.277619,.8231306 +2.277619,.8231306 +2.277619,.8231306 +2.274561,.821787 +2.274561,.821787 +2.274561,.821787 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +3.362806,1.212776 +3.362806,1.212776 +3.362806,1.212776 +3.362806,1.212776 +3.362806,1.212776 +2.912751,1.069098 +2.912751,1.069098 +2.912751,1.069098 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.278712,.8236102 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.312187,.8381938 +2.312187,.8381938 +2.312187,.8381938 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.209774,.7928901 +2.209774,.7928901 +2.209774,.7928901 +2.516771,.9229767 +2.516771,.9229767 +2.516771,.9229767 +2.209774,.7928901 +2.209774,.7928901 +2.209774,.7928901 +2.251582,.8116332 +2.251582,.8116332 +2.251582,.8116332 +2.251582,.8116332 +2.251582,.8116332 +2.251582,.8116332 +2.251582,.8116332 +2.251582,.8116332 +2.251582,.8116332 +2.251582,.8116332 +2.306104,.8355597 +2.306104,.8355597 +2.306104,.8355597 +2.306104,.8355597 +2.306104,.8355597 +1.625739,.4859625 +1.625739,.4859625 +1.625739,.4859625 +1.625739,.4859625 +1.625739,.4859625 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.133334,.7576859 +2.133334,.7576859 +2.133334,.7576859 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +8.118364,2.094129 +8.118364,2.094129 +8.118364,2.094129 +8.118364,2.094129 +8.118364,2.094129 +3.185749,1.158688 +3.185749,1.158688 +3.185749,1.158688 +3.185749,1.158688 +3.185749,1.158688 +3.185749,1.158688 +3.185749,1.158688 +3.185749,1.158688 +3.185749,1.158688 +3.185749,1.158688 +2.271367,.8203818 +2.271367,.8203818 +2.834719,1.041943 +2.834719,1.041943 +2.834719,1.041943 +2.834719,1.041943 +2.834719,1.041943 +4.937365,1.596832 +4.937365,1.596832 +4.937365,1.596832 +4.937365,1.596832 +4.937365,1.596832 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +3.409071,1.22644 +3.409071,1.22644 +3.409071,1.22644 +3.409071,1.22644 +3.409071,1.22644 +3.409071,1.22644 +2.727908,1.003535 +2.727908,1.003535 +2.727908,1.003535 +2.727908,1.003535 +2.727908,1.003535 +2.727908,1.003535 +2.184153,.7812282 +2.184153,.7812282 +2.184153,.7812282 +2.827381,1.039351 +2.827381,1.039351 +2.827381,1.039351 +2.738272,1.007327 +2.738272,1.007327 +2.738272,1.007327 +2.253542,.8125034 +2.253542,.8125034 +2.253542,.8125034 +2.200263,.7885769 +2.200263,.7885769 +2.200263,.7885769 +3.707555,1.310373 +3.707555,1.310373 +3.707555,1.310373 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +5.696794,1.739904 +5.696794,1.739904 +5.696794,1.739904 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +6.322487,1.844113 +6.322487,1.844113 +6.322487,1.844113 +2.247445,.8097939 +2.247445,.8097939 +2.247445,.8097939 +2.247445,.8097939 +2.247445,.8097939 +2.247445,.8097939 +2.247445,.8097939 +2.247445,.8097939 +2.247445,.8097939 +2.247445,.8097939 +3.358836,1.211595 +3.358836,1.211595 +3.358836,1.211595 +3.358836,1.211595 +3.358836,1.211595 +1.602377,.4714882 +1.602377,.4714882 +1.602377,.4714882 +1.602377,.4714882 +1.602377,.4714882 +4.990189,1.607474 +4.990189,1.607474 +4.990189,1.607474 +6.074818,1.804152 +6.074818,1.804152 +6.074818,1.804152 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +3.089354,1.127962 +3.089354,1.127962 +3.089354,1.127962 +2.743314,1.009167 +2.743314,1.009167 +2.743314,1.009167 +3.904611,1.362158 +3.904611,1.362158 +3.904611,1.362158 +3.428324,1.232072 +3.428324,1.232072 +3.428324,1.232072 +3.089354,1.127962 +3.089354,1.127962 +3.089354,1.127962 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +3.683861,1.303961 +3.683861,1.303961 +3.683861,1.303961 +2.914695,1.069765 +2.914695,1.069765 +2.914695,1.069765 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +3.574538,1.273836 +3.574538,1.273836 +3.574538,1.273836 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +3.26519,1.183318 +3.26519,1.183318 +3.26519,1.183318 +3.26519,1.183318 +3.26519,1.183318 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +3.974887,1.379996 +3.974887,1.379996 +3.974887,1.379996 +3.974887,1.379996 +3.974887,1.379996 +3.064617,1.119923 +3.064617,1.119923 +3.064617,1.119923 +3.064617,1.119923 +3.064617,1.119923 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +4.507341,1.505707 +4.507341,1.505707 +4.507341,1.505707 +4.507341,1.505707 +4.507341,1.505707 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.392992,.8725443 +2.392992,.8725443 +2.392992,.8725443 +2.568054,.9431484 +2.568054,.9431484 +2.568054,.9431484 +2.568054,.9431484 +2.568054,.9431484 +2.254801,.8130618 +2.254801,.8130618 +2.254801,.8130618 +2.254801,.8130618 +2.254801,.8130618 +2.254801,.8130618 +2.254801,.8130618 +2.254801,.8130618 +2.254801,.8130618 +2.254801,.8130618 +1.804272,.5901571 +1.804272,.5901571 +1.804272,.5901571 +1.804272,.5901571 +1.804272,.5901571 +2.8781,1.05713 +2.8781,1.05713 +2.8781,1.05713 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +4.025728,1.392706 +4.025728,1.392706 +4.025728,1.392706 +2.26631,.8181531 +2.26631,.8181531 +2.26631,.8181531 +2.202041,.7893845 +2.202041,.7893845 +2.202041,.7893845 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +2.227046,.800676 +2.227046,.800676 +2.227046,.800676 +5.150977,1.639186 +5.150977,1.639186 +5.150977,1.639186 +3.105815,1.133276 +3.105815,1.133276 +3.105815,1.133276 +4.679659,1.543225 +4.679659,1.543225 +4.679659,1.543225 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +1.761382,.5660987 +1.761382,.5660987 +1.761382,.5660987 +1.761382,.5660987 +1.761382,.5660987 +2.813674,1.034491 +2.813674,1.034491 +2.813674,1.034491 +2.813674,1.034491 +2.813674,1.034491 +2.22919,.8016384 +2.22919,.8016384 +2.22919,.8016384 +2.22919,.8016384 +2.22919,.8016384 +2.084581,.7345679 +2.084581,.7345679 +2.084581,.7345679 +2.633176,.9681907 +2.633176,.9681907 +2.633176,.9681907 +1.589968,.4637138 +1.784458,.5791149 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +5.914585,1.777421 +5.914585,1.777421 +5.914585,1.777421 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +4.006079,1.387813 +4.006079,1.387813 +1.984217,.6852243 +1.984217,.6852243 +2.255194,.8132359 +2.255194,.8132359 +2.255194,.8132359 +2.255194,.8132359 +2.255194,.8132359 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.352996,.8556893 +2.352996,.8556893 +2.352996,.8556893 +1.761372,.5660932 +1.761372,.5660932 +1.761372,.5660932 +2.20119,.7889979 +2.20119,.7889979 +2.20119,.7889979 +1.783768,.5787283 +1.783768,.5787283 +1.783768,.5787283 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +1.338285,.2913887 +1.338285,.2913887 +1.338285,.2913887 +2.711894,.9976472 +2.711894,.9976472 +2.711894,.9976472 +2.711894,.9976472 +2.711894,.9976472 +2.711894,.9976472 +2.711894,.9976472 +2.711894,.9976472 +3.05397,1.116442 +3.05397,1.116442 +3.389058,1.220552 +3.389058,1.220552 +3.389058,1.220552 +2.303369,.8343728 +2.303369,.8343728 +2.303369,.8343728 +2.561346,.9405329 +2.561346,.9405329 +2.269065,.8193677 +2.269065,.8193677 +2.269065,.8193677 +4.749933,1.558131 +4.749933,1.558131 +4.749933,1.558131 +2.584299,.9494543 +2.584299,.9494543 +2.584299,.9494543 +3.558687,1.269392 +3.558687,1.269392 +3.558687,1.269392 +3.13101,1.141356 +3.13101,1.141356 +3.13101,1.141356 +1.744808,.5566444 +1.744808,.5566444 +1.744808,.5566444 +1.744808,.5566444 +1.744808,.5566444 +1.744808,.5566444 +1.744808,.5566444 +1.744808,.5566444 +1.744808,.5566444 +1.744808,.5566444 +1.886319,.6346272 +1.886319,.6346272 +1.886319,.6346272 +1.886319,.6346272 +1.572293,.4525348 +1.572293,.4525348 +1.572293,.4525348 +1.572293,.4525348 +1.572293,.4525348 +1.744808,.5566444 +1.744808,.5566444 +1.744808,.5566444 +1.744808,.5566444 +1.744808,.5566444 +1.39618,.3337396 +1.39618,.3337396 +1.39618,.3337396 +1.39618,.3337396 +1.39618,.3337396 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.753963,1.322812 +3.753963,1.322812 +3.753963,1.322812 +3.753963,1.322812 +3.753963,1.322812 +4.158144,1.425069 +4.158144,1.425069 +4.158144,1.425069 +4.158144,1.425069 +4.158144,1.425069 +3.058722,1.117997 +3.058722,1.117997 +3.058722,1.117997 +3.058722,1.117997 +3.058722,1.117997 +3.865896,1.352193 +3.865896,1.352193 +3.865896,1.352193 +3.865896,1.352193 +3.865896,1.352193 +3.490712,1.250106 +3.490712,1.250106 +3.490712,1.250106 +3.490712,1.250106 +3.490712,1.250106 +3.145573,1.145996 +3.145573,1.145996 +3.145573,1.145996 +3.145573,1.145996 +3.145573,1.145996 +3.490712,1.250106 +3.490712,1.250106 +3.490712,1.250106 +3.490712,1.250106 +3.490712,1.250106 +6.350824,1.848585 +6.350824,1.848585 +6.350824,1.848585 +6.350824,1.848585 +6.350824,1.848585 +1.769239,.5705494 +1.769239,.5705494 +1.769239,.5705494 +1.278057,.2453412 +1.278057,.2453412 +1.278057,.2453412 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +3.434001,1.233726 +3.434001,1.233726 +3.434001,1.233726 +3.055617,1.116981 +3.055617,1.116981 +3.055617,1.116981 +3.624739,1.287782 +3.624739,1.287782 +3.624739,1.287782 +3.42939,1.232382 +3.42939,1.232382 +3.42939,1.232382 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.812187,1.033962 +2.812187,1.033962 +2.812187,1.033962 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +2.25176,.8117119 +2.25176,.8117119 +2.25176,.8117119 +2.845982,1.045908 +2.845982,1.045908 +2.845982,1.045908 +1.891368,.6373003 +1.891368,.6373003 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.854207,1.349165 +3.854207,1.349165 +3.854207,1.349165 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.827381,1.039351 +2.827381,1.039351 +2.827381,1.039351 +2.211925,.7938633 +2.211925,.7938633 +2.211925,.7938633 +3.971775,1.379213 +3.971775,1.379213 +3.971775,1.379213 +3.971775,1.379213 +3.971775,1.379213 +3.299028,1.193628 +3.299028,1.193628 +3.299028,1.193628 +2.539853,.9321062 +2.539853,.9321062 +2.539853,.9321062 +2.227046,.800676 +2.227046,.800676 +2.227046,.800676 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +3.346745,1.207988 +3.346745,1.207988 +3.346745,1.207988 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.850536,1.047507 +2.850536,1.047507 +2.850536,1.047507 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +3.566238,1.271511 +3.566238,1.271511 +3.566238,1.271511 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +1.353155,.3024386 +1.353155,.3024386 +1.353155,.3024386 +1.844339,.6121207 +1.844339,.6121207 +1.844339,.6121207 +2.732865,1.00535 +2.732865,1.00535 +2.732865,1.00535 +3.415265,1.228255 +3.415265,1.228255 +3.415265,1.228255 +4.481551,1.499969 +4.481551,1.499969 +4.481551,1.499969 +3.889738,1.358342 +3.889738,1.358342 +3.889738,1.358342 +3.415265,1.228255 +3.415265,1.228255 +3.415265,1.228255 +2.219676,.7973614 +2.219676,.7973614 +2.219676,.7973614 +1.776165,.5744567 +1.776165,.5744567 +1.776165,.5744567 +1.582579,.4590557 +1.582579,.4590557 +1.582579,.4590557 +2.219676,.7973614 +2.219676,.7973614 +2.219676,.7973614 +3.340976,1.206263 +3.340976,1.206263 +3.340976,1.206263 +3.566238,1.271511 +3.566238,1.271511 +3.566238,1.271511 +1.799361,.5874318 +1.799361,.5874318 +1.799361,.5874318 +6.440601,1.862622 +6.440601,1.862622 +6.440601,1.862622 +1.822241,.6000668 +1.822241,.6000668 +1.822241,.6000668 +2.277257,.8229716 +2.277257,.8229716 +2.277257,.8229716 +2.593629,.9530582 +2.593629,.9530582 +2.593629,.9530582 +2.506594,.9189247 +2.506594,.9189247 +2.506594,.9189247 +3.112549,1.135442 +3.112549,1.135442 +3.112549,1.135442 +2.91174,1.068751 +2.91174,1.068751 +2.91174,1.068751 +2.91174,1.068751 +2.91174,1.068751 +2.91174,1.068751 +2.91174,1.068751 +2.91174,1.068751 +2.91174,1.068751 +2.91174,1.068751 +2.91174,1.068751 +2.91174,1.068751 +1.880808,.6317015 +1.880808,.6317015 +1.880808,.6317015 +1.880808,.6317015 +1.880808,.6317015 +2.212499,.7941226 +2.212499,.7941226 +2.212499,.7941226 +2.212499,.7941226 +2.212499,.7941226 +2.197932,.787517 +2.197932,.787517 +2.197932,.787517 +2.197932,.787517 +2.809495,1.033005 +2.809495,1.033005 +2.809495,1.033005 +2.809495,1.033005 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.280001,.8241757 +2.280001,.8241757 +2.280001,.8241757 +2.280001,.8241757 +2.280001,.8241757 +2.280001,.8241757 +2.054569,.7200661 +2.054569,.7200661 +2.054569,.7200661 +4.447986,1.492451 +4.447986,1.492451 +4.447986,1.492451 +3.479761,1.246964 +3.479761,1.246964 +3.479761,1.246964 +3.479761,1.246964 +3.479761,1.246964 +3.479761,1.246964 +3.135705,1.142854 +3.135705,1.142854 +3.135705,1.142854 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.659918,.9782952 +2.659918,.9782952 +2.659918,.9782952 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.96961,1.088431 +2.96961,1.088431 +2.96961,1.088431 +4.743727,1.556823 +4.743727,1.556823 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +2.008312,.6972946 +2.008312,.6972946 +2.008312,.6972946 +2.008312,.6972946 +2.008312,.6972946 +3.208126,1.165687 +3.208126,1.165687 +3.208126,1.165687 +3.208126,1.165687 +3.208126,1.165687 +2.310764,.8375784 +2.310764,.8375784 +2.310764,.8375784 +2.310764,.8375784 +2.310764,.8375784 +1.569039,.4504634 +1.569039,.4504634 +1.569039,.4504634 +1.569039,.4504634 +1.569039,.4504634 +1.78336,.5784994 +1.78336,.5784994 +1.78336,.5784994 +1.78336,.5784994 +1.78336,.5784994 +2.228668,.8014042 +2.228668,.8014042 +2.228668,.8014042 +2.228668,.8014042 +2.228668,.8014042 +1.822441,.6001766 +1.822441,.6001766 +1.822441,.6001766 +2.984558,1.093452 +2.984558,1.093452 +2.984558,1.093452 +2.276768,.8227569 +2.276768,.8227569 +2.276768,.8227569 +4.01608,1.390306 +4.01608,1.390306 +4.01608,1.390306 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.202041,.7893845 +2.202041,.7893845 +2.202041,.7893845 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +1.570005,.4510788 +1.570005,.4510788 +1.570005,.4510788 +1.783461,.5785557 +1.783461,.5785557 +1.783461,.5785557 +1.783461,.5785557 +1.783461,.5785557 +1.783461,.5785557 +1.271567,.2402499 +1.271567,.2402499 +1.271567,.2402499 +1.427109,.355651 +1.427109,.355651 +1.427109,.355651 +1.625612,.4858843 +1.625612,.4858843 +1.625612,.4858843 +2.028802,.7074454 +2.028802,.7074454 +2.028802,.7074454 +2.280033,.8241901 +2.280033,.8241901 +2.280033,.8241901 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +5.102255,1.629683 +5.102255,1.629683 +5.102255,1.629683 +3.076438,1.123773 +3.076438,1.123773 +3.076438,1.123773 +2.280121,.8242285 +2.280121,.8242285 +2.280121,.8242285 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.992356,1.096061 +2.992356,1.096061 +2.992356,1.096061 +2.226477,.8004205 +2.226477,.8004205 +2.226477,.8004205 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +4.222634,1.440459 +4.222634,1.440459 +4.222634,1.440459 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +1.594136,.4663321 +1.594136,.4663321 +1.594136,.4663321 +2.812233,1.033979 +2.812233,1.033979 +2.812233,1.033979 +2.812233,1.033979 +2.812233,1.033979 +6.638461,1.89288 +6.638461,1.89288 +6.638461,1.89288 +6.638461,1.89288 +6.638461,1.89288 +2.200074,.7884911 +2.200074,.7884911 +2.200074,.7884911 +2.200074,.7884911 +2.200074,.7884911 +2.95458,1.083357 +2.95458,1.083357 +2.95458,1.083357 +2.95458,1.083357 +2.95458,1.083357 +1.605342,.4733369 +1.605342,.4733369 +1.605342,.4733369 +1.605342,.4733369 +1.605342,.4733369 +2.914695,1.069765 +2.914695,1.069765 +2.914695,1.069765 +2.914695,1.069765 +2.914695,1.069765 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.584645,.9495882 +2.584645,.9495882 +2.584645,.9495882 +2.298224,.8321366 +2.298224,.8321366 +2.298224,.8321366 +2.298224,.8321366 +2.298224,.8321366 +2.298224,.8321366 +1.638582,.4938309 +1.638582,.4938309 +1.638582,.4938309 +7.990944,2.078309 +7.990944,2.078309 +7.990944,2.078309 +5.633392,1.728712 +5.633392,1.728712 +5.633392,1.728712 +3.332824,1.20382 +3.332824,1.20382 +3.332824,1.20382 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.922355,1.07239 +2.922355,1.07239 +2.922355,1.07239 +5.323934,1.672212 +5.323934,1.672212 +5.323934,1.672212 +2.341587,.8508288 +2.341587,.8508288 +2.341587,.8508288 +2.341587,.8508288 +2.341587,.8508288 +2.959514,1.085025 +2.959514,1.085025 +2.959514,1.085025 +2.959514,1.085025 +2.959514,1.085025 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +6.430315,1.861024 +6.430315,1.861024 +6.430315,1.861024 +6.430315,1.861024 +6.430315,1.861024 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.361979,.8595001 +2.361979,.8595001 +2.361979,.8595001 +3.237266,1.174729 +3.237266,1.174729 +3.237266,1.174729 +1.799559,.5875415 +1.799559,.5875415 +1.799559,.5875415 +2.561346,.9405329 +2.561346,.9405329 +2.561346,.9405329 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +1.605342,.4733369 +1.605342,.4733369 +1.605342,.4733369 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +8.418341,2.130413 +8.418341,2.130413 +8.418341,2.130413 +8.418341,2.130413 +8.418341,2.130413 +4.739161,1.55586 +4.739161,1.55586 +4.739161,1.55586 +4.739161,1.55586 +4.739161,1.55586 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +2.251603,.8116426 +2.251603,.8116426 +2.251603,.8116426 +2.251603,.8116426 +2.251603,.8116426 +2.251603,.8116426 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.251603,.8116426 +2.251603,.8116426 +2.251603,.8116426 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +4.14908,1.422887 +4.14908,1.422887 +4.14908,1.422887 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +1.648389,.4997983 +1.648389,.4997983 +1.648389,.4997983 +1.648389,.4997983 +1.648389,.4997983 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +3.529658,1.261201 +3.529658,1.261201 +3.529658,1.261201 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.882169,1.058543 +2.882169,1.058543 +2.882169,1.058543 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +4.205601,1.436417 +4.205601,1.436417 +4.205601,1.436417 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +2.632739,.9680248 +2.632739,.9680248 +2.632739,.9680248 +2.632739,.9680248 +2.632739,.9680248 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.568038,.9431421 +2.568038,.9431421 +2.568038,.9431421 +2.568038,.9431421 +2.568038,.9431421 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +2.263121,.8167449 +2.263121,.8167449 +2.263121,.8167449 +7.475399,2.011617 +7.475399,2.011617 +7.475399,2.011617 +3.841102,1.345759 +3.841102,1.345759 +3.841102,1.345759 +3.916198,1.365121 +3.916198,1.365121 +3.916198,1.365121 +3.916198,1.365121 +3.916198,1.365121 +4.63032,1.532626 +4.63032,1.532626 +4.63032,1.532626 +4.63032,1.532626 +4.63032,1.532626 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.184785,.7815173 +2.184785,.7815173 +2.184785,.7815173 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.82266,.6002972 +1.82266,.6002972 +1.82266,.6002972 +2.251603,.8116426 +2.251603,.8116426 +2.251603,.8116426 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.251603,.8116426 +2.251603,.8116426 +2.251603,.8116426 +2.8781,1.05713 +2.8781,1.05713 +2.8781,1.05713 +2.251603,.8116426 +2.251603,.8116426 +2.251603,.8116426 +2.223664,.7991564 +2.223664,.7991564 +2.223664,.7991564 +3.160734,1.150804 +3.160734,1.150804 +3.160734,1.150804 +2.406768,.8782848 +2.406768,.8782848 +2.406768,.8782848 +2.406768,.8782848 +2.406768,.8782848 +3.888287,1.357969 +3.888287,1.357969 +3.888287,1.357969 +3.888287,1.357969 +3.888287,1.357969 +2.02888,.7074839 +2.02888,.7074839 +2.02888,.7074839 +2.02888,.7074839 +2.02888,.7074839 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +1.842577,.6111653 +1.842577,.6111653 +1.744722,.5565954 +1.744722,.5565954 +1.744722,.5565954 +2.208106,.7921351 +2.208106,.7921351 +2.208106,.7921351 +2.514872,.9222217 +2.514872,.9222217 +2.514872,.9222217 +2.208106,.7921351 +2.208106,.7921351 +2.208106,.7921351 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +3.529658,1.261201 +3.529658,1.261201 +3.529658,1.261201 +4.457616,1.494614 +4.457616,1.494614 +4.457616,1.494614 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.50718,.9191586 +2.50718,.9191586 +2.50718,.9191586 +3.12902,1.14072 +3.12902,1.14072 +3.12902,1.14072 +2.50718,.9191586 +2.50718,.9191586 +3.954744,1.374916 +3.954744,1.374916 +3.954744,1.374916 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.516494,1.257464 +3.168806,1.153355 +3.168806,1.153355 +3.168806,1.153355 +2.263101,.816736 +2.263101,.816736 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +4.806436,1.569956 +4.806436,1.569956 +4.806436,1.569956 +3.389058,1.220552 +3.389058,1.220552 +3.389058,1.220552 +4.277653,1.453405 +4.277653,1.453405 +4.277653,1.453405 +2.711894,.9976472 +2.711894,.9976472 +2.711894,.9976472 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +2.972062,1.089256 +2.972062,1.089256 +2.972062,1.089256 +1.784174,.5789558 +1.784174,.5789558 +2.353531,.8559169 +2.353531,.8559169 +2.353531,.8559169 +2.850083,1.047348 +2.850083,1.047348 +2.850083,1.047348 +2.229686,.8018606 +2.229686,.8018606 +2.229686,.8018606 +2.539449,.9319472 +2.539449,.9319472 +2.539449,.9319472 +1.588398,.4627258 +1.588398,.4627258 +1.588398,.4627258 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +4.773312,1.56304 +4.773312,1.56304 +4.773312,1.56304 +2.031432,.7087409 +2.031432,.7087409 +2.031432,.7087409 +2.031432,.7087409 +2.031432,.7087409 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.78995,1.026024 +2.042434,.7141424 +2.042434,.7141424 +2.042434,.7141424 +2.969667,1.08845 +2.969667,1.08845 +2.969667,1.08845 +2.211925,.7938633 +2.211925,.7938633 +2.211925,.7938633 +5.022377,1.613903 +5.022377,1.613903 +5.022377,1.613903 +3.549997,1.266947 +3.549997,1.266947 +3.549997,1.266947 +3.549997,1.266947 +3.549997,1.266947 +3.549997,1.266947 +3.549997,1.266947 +3.549997,1.266947 +3.549997,1.266947 +3.549997,1.266947 +3.549997,1.266947 +3.549997,1.266947 +3.549997,1.266947 +3.549997,1.266947 +3.549997,1.266947 +4.480789,1.499799 +4.480789,1.499799 +4.480789,1.499799 +4.480789,1.499799 +4.480789,1.499799 +4.537764,1.512434 +4.537764,1.512434 +4.537764,1.512434 +4.537764,1.512434 +4.537764,1.512434 +1.993225,.6897537 +1.993225,.6897537 +1.993225,.6897537 +1.993225,.6897537 +1.993225,.6897537 +1.993225,.6897537 +2.530107,.9282616 +2.530107,.9282616 +2.530107,.9282616 +2.238644,.8058704 +2.238644,.8058704 +2.238644,.8058704 +2.30915,.8368794 +2.30915,.8368794 +2.30915,.8368794 +2.437409,.8909358 +2.437409,.8909358 +2.437409,.8909358 +1.576273,.4550635 +1.576273,.4550635 +1.576273,.4550635 +2.238644,.8058704 +2.238644,.8058704 +2.238644,.8058704 +1.99224,.6892597 +1.99224,.6892597 +1.99224,.6892597 +2.349296,.8541155 +2.349296,.8541155 +2.349296,.8541155 +2.349296,.8541155 +2.349296,.8541155 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.51995,.9242389 +2.51995,.9242389 +2.51995,.9242389 +2.212564,.7941523 +2.212564,.7941523 +2.212564,.7941523 +2.327388,.8447467 +2.327388,.8447467 +2.327388,.8447467 +2.327388,.8447467 +2.327388,.8447467 +2.327388,.8447467 +1.584968,.4605643 +1.584968,.4605643 +1.584968,.4605643 +2.327388,.8447467 +2.327388,.8447467 +2.327388,.8447467 +4.595733,1.525128 +4.595733,1.525128 +4.595733,1.525128 +3.239863,1.175531 +3.239863,1.175531 +3.239863,1.175531 +2.226362,.800369 +2.226362,.800369 +2.226362,.800369 +2.229356,.8017126 +2.229356,.8017126 +2.229356,.8017126 +2.229356,.8017126 +2.229356,.8017126 +2.229356,.8017126 +1.569523,.4507718 +1.569523,.4507718 +1.569523,.4507718 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.202041,.7893845 +2.202041,.7893845 +2.202041,.7893845 +2.202041,.7893845 +2.202041,.7893845 +4.283001,1.454654 +4.283001,1.454654 +4.283001,1.454654 +1.587641,.4622496 +1.587641,.4622496 +1.587641,.4622496 +1.781847,.5776506 +1.781847,.5776506 +1.781847,.5776506 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.340976,1.206263 +3.340976,1.206263 +3.340976,1.206263 +3.340976,1.206263 +3.340976,1.206263 +1.623811,.4847755 +1.623811,.4847755 +1.623811,.4847755 +2.277507,.8230813 +2.277507,.8230813 +2.277507,.8230813 +1.822441,.6001766 +1.822441,.6001766 +1.822441,.6001766 +3.204972,1.164703 +3.204972,1.164703 +3.204972,1.164703 +2.954785,1.083426 +2.954785,1.083426 +2.954785,1.083426 +1.642,.4959153 +1.642,.4959153 +1.642,.4959153 +2.30302,.8342211 +2.30302,.8342211 +2.30302,.8342211 +2.335056,.848036 +2.335056,.848036 +2.335056,.848036 +2.223821,.7992268 +2.842587,1.044714 +2.842587,1.044714 +2.842587,1.044714 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.914695,1.069765 +2.914695,1.069765 +2.914695,1.069765 +2.306126,.8355691 +2.306126,.8355691 +2.306126,.8355691 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.202025,.7893775 +2.202025,.7893775 +2.202025,.7893775 +1.984303,.6852679 +1.984303,.6852679 +1.984303,.6852679 +1.762041,.5664728 +1.762041,.5664728 +1.762041,.5664728 +2.680638,.986055 +2.680638,.986055 +2.2298,.801912 +2.2298,.801912 +2.469258,.9039176 +2.469258,.9039176 +7.291686,1.986735 +7.291686,1.986735 +7.291686,1.986735 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +4.679659,1.543225 +4.679659,1.543225 +4.679659,1.543225 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +2.825424,1.038659 +3.661005,1.297738 +3.661005,1.297738 +3.661005,1.297738 +3.661005,1.297738 +3.661005,1.297738 +2.007754,.6970165 +2.007754,.6970165 +2.255136,.8132101 +2.255136,.8132101 +2.255136,.8132101 +1.9648,.6753905 +1.9648,.6753905 +1.9648,.6753905 +2.208106,.7921351 +2.208106,.7921351 +2.208106,.7921351 +2.208106,.7921351 +2.208106,.7921351 +2.208106,.7921351 +2.514872,.9222217 +2.514872,.9222217 +2.514872,.9222217 +2.208106,.7921351 +2.208106,.7921351 +2.208106,.7921351 +3.346745,1.207988 +3.346745,1.207988 +3.346745,1.207988 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +3.276497,1.186775 +3.276497,1.186775 +3.276497,1.186775 +3.276497,1.186775 +3.276497,1.186775 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +2.254787,.8130555 +4.102245,1.411534 +4.102245,1.411534 +4.102245,1.411534 +4.102245,1.411534 +4.102245,1.411534 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.607612,.4747497 +1.860815,.6210144 +1.860815,.6210144 +1.860815,.6210144 +1.860815,.6210144 +1.860815,.6210144 +1.658002,.5056134 +1.658002,.5056134 +1.658002,.5056134 +1.658002,.5056134 +1.658002,.5056134 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +1.769089,.5704646 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.922355,1.07239 +2.922355,1.07239 +2.922355,1.07239 +1.648389,.4997983 +1.648389,.4997983 +1.648389,.4997983 +9.448101,2.245814 +9.448101,2.245814 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.386458,.8698102 +2.386458,.8698102 +2.386458,.8698102 +2.27716,.822929 +2.27716,.822929 +2.27716,.822929 +2.27716,.822929 +2.27716,.822929 +2.694544,.9912291 +2.694544,.9912291 +2.694544,.9912291 +2.694544,.9912291 +2.694544,.9912291 +2.275685,.8222811 +2.275685,.8222811 +2.275685,.8222811 +2.275685,.8222811 +2.275685,.8222811 +2.278744,.8236247 +2.278744,.8236247 +2.278744,.8236247 +2.278744,.8236247 +2.278744,.8236247 +1.761069,.5659209 +1.761069,.5659209 +1.761069,.5659209 +3.555549,1.26851 +3.555549,1.26851 +3.555549,1.26851 +2.506562,.9189123 +2.506562,.9189123 +2.506562,.9189123 +1.761069,.5659209 +1.761069,.5659209 +1.761069,.5659209 +1.982209,.6842119 +1.982209,.6842119 +1.982209,.6842119 +1.784324,.5790398 +1.784324,.5790398 +1.784324,.5790398 +2.959292,1.08495 +2.959292,1.08495 +2.959292,1.08495 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +1.717436,.5408327 +1.717436,.5408327 +1.717436,.5408327 +3.693732,1.306637 +3.693732,1.306637 +3.693732,1.306637 +2.98198,1.092587 +2.98198,1.092587 +2.98198,1.092587 +2.537931,.931349 +2.537931,.931349 +2.537931,.931349 +2.537931,.931349 +2.537931,.931349 +2.22536,.7999189 +2.22536,.7999189 +2.22536,.7999189 +2.22536,.7999189 +2.22536,.7999189 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +3.420846,1.229888 +3.420846,1.229888 +3.420846,1.229888 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.280233,.8242776 +2.240631,.8067576 +2.240631,.8067576 +2.240631,.8067576 +2.240631,.8067576 +2.240631,.8067576 +2.24551,.8089328 +2.24551,.8089328 +2.24551,.8089328 +2.24551,.8089328 +2.24551,.8089328 +2.520157,.9243214 +2.520157,.9243214 +2.520157,.9243214 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.23004,.8020195 +2.870763,1.054578 +2.870763,1.054578 +2.870763,1.054578 +2.870763,1.054578 +3.749656,1.321664 +3.749656,1.321664 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +7.721957,2.044068 +7.721957,2.044068 +7.721957,2.044068 +2.231693,.8027605 +2.231693,.8027605 +2.231693,.8027605 +2.231693,.8027605 +2.231693,.8027605 +2.948763,1.081386 +2.846109,1.045953 +2.846109,1.045953 +2.846109,1.045953 +2.846109,1.045953 +3.542238,1.264759 +3.542238,1.264759 +3.542238,1.264759 +3.542238,1.264759 +3.542238,1.264759 +2.271294,.8203498 +2.271294,.8203498 +2.846109,1.045953 +2.846109,1.045953 +2.295427,.830919 +2.295427,.830919 +2.295427,.830919 +2.295427,.830919 +2.846109,1.045953 +2.846109,1.045953 +2.228763,.8014466 +2.228763,.8014466 +2.846109,1.045953 +2.846109,1.045953 +2.846109,1.045953 +2.846109,1.045953 +2.846109,1.045953 +2.846109,1.045953 +2.846109,1.045953 +2.846109,1.045953 +2.24635,.8093069 +2.24635,.8093069 +3.434029,1.233734 +2.228763,.8014466 +2.846109,1.045953 +2.846109,1.045953 +2.228119,.8011577 +2.228119,.8011577 +2.228119,.8011577 +2.846109,1.045953 +2.246366,.8093139 +2.846109,1.045953 +2.243079,.8078496 +1.977737,.6819533 +2.227018,.8006636 +2.227018,.8006636 +2.227018,.8006636 +2.231693,.8027605 +2.231693,.8027605 +2.231693,.8027605 +2.244148,.8083259 +2.846109,1.045953 +2.296905,.8315626 +2.296905,.8315626 +2.295427,.830919 +2.295427,.830919 +2.242175,.8074464 +2.242175,.8074464 +2.231693,.8027605 +2.231693,.8027605 +2.223019,.7988662 +2.846109,1.045953 +2.914695,1.069765 +2.914695,1.069765 +2.914695,1.069765 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +3.044641,1.113383 +3.044641,1.113383 +3.044641,1.113383 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.853175,1.048433 +2.853175,1.048433 +2.853175,1.048433 +2.853175,1.048433 +2.853175,1.048433 +1.629814,.4884661 +1.629814,.4884661 +1.629814,.4884661 +1.629814,.4884661 +1.629814,.4884661 +4.067146,1.402941 +4.067146,1.402941 +4.067146,1.402941 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +6.089676,1.806595 +6.089676,1.806595 +6.089676,1.806595 +6.089676,1.806595 +6.089676,1.806595 +8.28931,2.114967 +8.28931,2.114967 +8.28931,2.114967 +8.28931,2.114967 +8.28931,2.114967 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +5.102506,1.629732 +5.102506,1.629732 +5.102506,1.629732 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +2.255363,.813311 +1.483661,.394513 +1.483661,.394513 +1.483661,.394513 +2.633176,.9681907 +2.633176,.9681907 +2.633176,.9681907 +8.28931,2.114967 +8.28931,2.114967 +8.28931,2.114967 +8.28931,2.114967 +8.28931,2.114967 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +3.942595,1.371839 +3.942595,1.371839 +3.942595,1.371839 +3.942595,1.371839 +3.942595,1.371839 +2.416985,.8825207 +2.416985,.8825207 +2.311371,.837841 +2.311371,.837841 +2.311371,.837841 +2.311371,.837841 +2.825919,1.038834 +2.825919,1.038834 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.409191,.3430159 +1.409191,.3430159 +1.409191,.3430159 +1.586945,.4618111 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +2.119782,.7513133 +2.119782,.7513133 +2.119782,.7513133 +2.275124,.8220347 +2.275124,.8220347 +2.275124,.8220347 +2.985288,1.093696 +2.985288,1.093696 +2.985288,1.093696 +2.985288,1.093696 +2.985288,1.093696 +1.868814,.6253039 +1.868814,.6253039 +1.868814,.6253039 +1.868814,.6253039 +1.868814,.6253039 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.207864,.7920257 +2.207864,.7920257 +2.207864,.7920257 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +4.818192,1.572399 +4.818192,1.572399 +4.818192,1.572399 +4.818192,1.572399 +4.818192,1.572399 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +2.791116,1.026441 +2.791116,1.026441 +2.791116,1.026441 +2.791116,1.026441 +2.791116,1.026441 +2.455684,.8984053 +2.455684,.8984053 +2.455684,.8984053 +2.455684,.8984053 +2.455684,.8984053 +3.560903,1.270014 +3.560903,1.270014 +3.560903,1.270014 +3.560903,1.270014 +3.560903,1.270014 +3.516194,1.257379 +3.516194,1.257379 +3.516194,1.257379 +3.516194,1.257379 +3.516194,1.257379 +3.516194,1.257379 +3.516194,1.257379 +3.516194,1.257379 +3.516194,1.257379 +3.516194,1.257379 +3.184945,1.158435 +3.184945,1.158435 +3.184945,1.158435 +2.51995,.9242389 +2.51995,.9242389 +2.51995,.9242389 +2.782517,1.023356 +2.782517,1.023356 +2.782517,1.023356 +2.782517,1.023356 +2.782517,1.023356 +3.549933,1.266929 +3.549933,1.266929 +3.549933,1.266929 +3.549933,1.266929 +3.549933,1.266929 +3.549933,1.266929 +3.549933,1.266929 +3.549933,1.266929 +3.549933,1.266929 +3.549933,1.266929 +2.782517,1.023356 +2.782517,1.023356 +2.782517,1.023356 +2.782517,1.023356 +2.782517,1.023356 +2.487591,.9113149 +2.487591,.9113149 +2.487591,.9113149 +1.74774,.5583236 +1.74774,.5583236 +1.74774,.5583236 +1.746877,.5578295 +1.746877,.5578295 +1.746877,.5578295 +2.470303,.9043407 +2.470303,.9043407 +2.470303,.9043407 +1.844223,.6120582 +1.844223,.6120582 +1.844223,.6120582 +1.936278,.6607679 +1.936278,.6607679 +1.936278,.6607679 +2.470303,.9043407 +2.470303,.9043407 +2.470303,.9043407 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.349087,.8540267 +2.349087,.8540267 +2.349087,.8540267 +2.349087,.8540267 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.868814,.6253039 +1.868814,.6253039 +1.868814,.6253039 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.312014,.8381189 +2.312014,.8381189 +2.312014,.8381189 +2.312014,.8381189 +2.312014,.8381189 +2.57935,.9475374 +2.57935,.9475374 +2.57935,.9475374 +2.57935,.9475374 +2.57935,.9475374 +1.812208,.5945461 +1.812208,.5945461 +1.812208,.5945461 +1.812208,.5945461 +1.812208,.5945461 +3.033851,1.109833 +3.033851,1.109833 +3.033851,1.109833 +3.033851,1.109833 +3.033851,1.109833 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +2.373857,.8645159 +2.373857,.8645159 +2.373857,.8645159 +3.038449,1.111347 +3.038449,1.111347 +3.038449,1.111347 +3.252278,1.179356 +3.252278,1.179356 +3.252278,1.179356 +4.021039,1.39154 +4.021039,1.39154 +4.021039,1.39154 +3.211444,1.166721 +3.211444,1.166721 +3.211444,1.166721 +3.58278,1.276139 +3.58278,1.276139 +3.58278,1.276139 +2.549208,.9357828 +2.549208,.9357828 +2.549208,.9357828 +3.602771,1.281703 +3.602771,1.281703 +3.602771,1.281703 +2.8781,1.05713 +2.8781,1.05713 +2.8781,1.05713 +5.443763,1.694471 +5.443763,1.694471 +5.443763,1.694471 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +2.25877,.8148203 +2.25877,.8148203 +2.828198,1.03964 +2.828198,1.03964 +1.993801,.6900427 +1.993801,.6900427 +2.271388,.8203912 +2.952725,1.082729 +2.952725,1.082729 +2.25019,.8110145 +2.25019,.8110145 +2.952725,1.082729 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +2.8781,1.05713 +2.8781,1.05713 +2.8781,1.05713 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +2.27552,.8222086 +2.27552,.8222086 +2.27552,.8222086 +2.27552,.8222086 +2.27552,.8222086 +2.27552,.8222086 +1.589206,.4632348 +1.589206,.4632348 +1.589206,.4632348 +1.983367,.684796 +1.983367,.684796 +1.983367,.684796 +2.27552,.8222086 +2.27552,.8222086 +2.27552,.8222086 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +4.159443,1.425381 +4.159443,1.425381 +4.159443,1.425381 +4.159443,1.425381 +4.159443,1.425381 +2.692448,.990451 +2.692448,.990451 +2.692448,.990451 +2.600232,.9556006 +2.600232,.9556006 +2.600232,.9556006 +3.328201,1.202432 +3.328201,1.202432 +3.328201,1.202432 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +3.044641,1.113383 +3.044641,1.113383 +3.044641,1.113383 +3.577745,1.274733 +3.577745,1.274733 +3.577745,1.274733 +3.934673,1.369828 +3.934673,1.369828 +3.934673,1.369828 +3.577745,1.274733 +3.577745,1.274733 +3.577745,1.274733 +3.789787,1.33231 +3.789787,1.33231 +3.789787,1.33231 +2.224294,.7994394 +2.224294,.7994394 +2.224294,.7994394 +2.335025,.8480224 +2.335025,.8480224 +2.335025,.8480224 +2.364715,.8606574 +2.364715,.8606574 +2.364715,.8606574 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +1.989171,.6877179 +1.989171,.6877179 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.840924,1.044129 +2.840924,1.044129 +2.840924,1.044129 +4.711656,1.55004 +4.711656,1.55004 +4.711656,1.55004 +3.624449,1.287702 +3.624449,1.287702 +3.624449,1.287702 +3.624449,1.287702 +3.624449,1.287702 +3.624449,1.287702 +3.624449,1.287702 +3.624449,1.287702 +3.624449,1.287702 +1.624816,.4853948 +1.624816,.4853948 +1.624816,.4853948 +1.624816,.4853948 +1.624816,.4853948 +2.455732,.898425 +2.455732,.898425 +2.455732,.898425 +2.455732,.898425 +2.455732,.898425 +2.167658,.7736474 +2.167658,.7736474 +2.167658,.7736474 +2.167658,.7736474 +2.167658,.7736474 +2.297298,.8317336 +2.297298,.8317336 +2.297298,.8317336 +2.297298,.8317336 +2.297298,.8317336 +2.297298,.8317336 +2.297298,.8317336 +2.297298,.8317336 +2.297298,.8317336 +2.297298,.8317336 +1.924858,.6548522 +1.924858,.6548522 +1.924858,.6548522 +1.924858,.6548522 +1.924858,.6548522 +1.715065,.5394512 +1.715065,.5394512 +1.715065,.5394512 +1.715065,.5394512 +1.715065,.5394512 +1.800674,.5881608 +1.800674,.5881608 +1.800674,.5881608 +1.800674,.5881608 +1.800674,.5881608 +2.466049,.9026173 +2.466049,.9026173 +2.466049,.9026173 +4.158132,1.425066 +4.158132,1.425066 +4.158132,1.425066 +3.622643,1.287204 +3.622643,1.287204 +3.622643,1.287204 +3.802987,1.335787 +3.802987,1.335787 +3.802987,1.335787 +2.553862,.9376066 +2.553862,.9376066 +2.553862,.9376066 +2.866259,1.053008 +2.866259,1.053008 +2.866259,1.053008 +4.548981,1.514903 +4.548981,1.514903 +4.548981,1.514903 +4.548981,1.514903 +4.548981,1.514903 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.570005,.4510788 +1.570005,.4510788 +1.570005,.4510788 +2.603844,.9569889 +2.603844,.9569889 +2.603844,.9569889 +3.268666,1.184382 +3.268666,1.184382 +3.268666,1.184382 +3.268666,1.184382 +3.268666,1.184382 +2.91241,1.068981 +2.91241,1.068981 +2.91241,1.068981 +2.91241,1.068981 +2.91241,1.068981 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.922355,1.07239 +2.922355,1.07239 +2.922355,1.07239 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +2.564412,.9417292 +2.564412,.9417292 +2.564412,.9417292 +2.564412,.9417292 +2.564412,.9417292 +3.523069,1.259333 +3.523069,1.259333 +3.523069,1.259333 +1.413932,.3463747 +1.413932,.3463747 +1.413932,.3463747 +1.987209,.686731 +1.987209,.686731 +1.987209,.686731 +1.586945,.4618111 +1.586945,.4618111 +1.586945,.4618111 +1.586945,.4618111 +1.586945,.4618111 +4.139883,1.420668 +4.139883,1.420668 +4.139883,1.420668 +4.139883,1.420668 +4.139883,1.420668 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.820705,.5992238 +1.820705,.5992238 +1.820705,.5992238 +1.820705,.5992238 +1.820705,.5992238 +3.613298,1.284621 +3.613298,1.284621 +3.613298,1.284621 +2.491817,.9130121 +2.491817,.9130121 +2.491817,.9130121 +3.980488,1.381405 +3.980488,1.381405 +3.980488,1.381405 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +2.386458,.8698102 +2.386458,.8698102 +2.386458,.8698102 +12.67564,2.539682 +12.67564,2.539682 +12.67564,2.539682 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +4.475814,1.498688 +4.475814,1.498688 +4.475814,1.498688 +4.169617,1.427824 +4.169617,1.427824 +4.169617,1.427824 +2.668686,.9815863 +2.899455,1.064523 +2.899455,1.064523 +2.899455,1.064523 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.070025,.7275605 +2.070025,.7275605 +2.070025,.7275605 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +29.49241,3.384133 +29.49241,3.384133 +29.49241,3.384133 +29.49241,3.384133 +29.49241,3.384133 +3.747118,1.320987 +3.747118,1.320987 +3.747118,1.320987 +3.747118,1.320987 +3.887028,1.357645 +3.887028,1.357645 +3.887028,1.357645 +3.887028,1.357645 +3.887028,1.357645 +2.808736,1.032735 +2.808736,1.032735 +2.808736,1.032735 +2.808736,1.032735 +2.808736,1.032735 +3.047658,1.114373 +3.047658,1.114373 +3.047658,1.114373 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +4.067146,1.402941 +4.067146,1.402941 +4.067146,1.402941 +4.067146,1.402941 +1.823357,.6006792 +1.823357,.6006792 +1.823357,.6006792 +2.326237,.844252 +2.326237,.844252 +2.326237,.844252 +1.823357,.6006792 +1.823357,.6006792 +1.823357,.6006792 +3.093811,1.129404 +3.093811,1.129404 +3.093811,1.129404 +3.093811,1.129404 +3.093811,1.129404 +3.472257,1.244805 +3.472257,1.244805 +3.472257,1.244805 +3.472257,1.244805 +3.472257,1.244805 +3.549534,1.266816 +3.549534,1.266816 +3.549534,1.266816 +3.549534,1.266816 +3.549534,1.266816 +3.566238,1.271511 +3.566238,1.271511 +3.566238,1.271511 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +2.929503,1.074833 +2.929503,1.074833 +2.929503,1.074833 +2.929503,1.074833 +2.929503,1.074833 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.128846,1.140664 +3.128846,1.140664 +3.128846,1.140664 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.319593,.8413916 +2.319593,.8413916 +2.319593,.8413916 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +3.664599,1.298719 +3.664599,1.298719 +3.664599,1.298719 +2.261404,.815986 +2.261404,.815986 +2.261404,.815986 +2.040551,.7132201 +2.040551,.7132201 +2.040551,.7132201 +2.604909,.9573976 +2.604909,.9573976 +2.604909,.9573976 +2.604909,.9573976 +2.604909,.9573976 +2.334923,.8479791 +2.334923,.8479791 +2.334923,.8479791 +2.334923,.8479791 +2.334923,.8479791 +2.327737,.8448966 +2.327737,.8448966 +1.824532,.6013237 +1.824532,.6013237 +2.327737,.8448966 +2.327737,.8448966 +2.327737,.8448966 +2.327737,.8448966 +2.327737,.8448966 +2.327737,.8448966 +2.327737,.8448966 +2.327737,.8448966 +2.327737,.8448966 +2.327737,.8448966 +2.327737,.8448966 +2.327737,.8448966 +4.036938,1.395486 +4.036938,1.395486 +4.036938,1.395486 +4.036938,1.395486 +2.306013,.8355199 +2.306013,.8355199 +2.306013,.8355199 +2.306013,.8355199 +3.71137,1.311401 +3.71137,1.311401 +3.71137,1.311401 +3.71137,1.311401 +3.71137,1.311401 +3.71137,1.311401 +1.775131,.5738741 +1.775131,.5738741 +1.775131,.5738741 +1.775131,.5738741 +1.775131,.5738741 +1.775131,.5738741 +2.215405,.7954352 +2.215405,.7954352 +2.215405,.7954352 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +2.662451,.979247 +2.662451,.979247 +2.662451,.979247 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +4.01608,1.390306 +4.01608,1.390306 +4.01608,1.390306 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +4.169617,1.427824 +4.169617,1.427824 +4.169617,1.427824 +4.169617,1.427824 +4.169617,1.427824 +1.771114,.5716084 +1.771114,.5716084 +1.771114,.5716084 +1.771114,.5716084 +1.771114,.5716084 +1.771114,.5716084 +1.771114,.5716084 +1.771114,.5716084 +1.771114,.5716084 +1.776894,.5748668 +1.776894,.5748668 +1.776894,.5748668 +1.388238,.3280356 +1.388238,.3280356 +1.388238,.3280356 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +4.01608,1.390306 +4.01608,1.390306 +4.01608,1.390306 +3.671193,1.300517 +3.671193,1.300517 +3.671193,1.300517 +3.671193,1.300517 +3.671193,1.300517 +2.471648,.9048851 +2.471648,.9048851 +2.471648,.9048851 +2.471648,.9048851 +2.471648,.9048851 +4.990189,1.607474 +4.990189,1.607474 +4.990189,1.607474 +4.990189,1.607474 +4.990189,1.607474 +6.542554,1.878328 +6.542554,1.878328 +6.542554,1.878328 +6.542554,1.878328 +6.542554,1.878328 +6.307061,1.84167 +6.307061,1.84167 +6.307061,1.84167 +2.403063,.876744 +2.403063,.876744 +2.403063,.876744 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +2.403063,.876744 +2.403063,.876744 +2.403063,.876744 +3.596795,1.280043 +3.596795,1.280043 +3.596795,1.280043 +3.596795,1.280043 +3.596795,1.280043 +2.511975,.9210694 +2.511975,.9210694 +2.511975,.9210694 +2.511975,.9210694 +2.511975,.9210694 +7.99979,2.079415 +7.99979,2.079415 +7.99979,2.079415 +7.99979,2.079415 +7.99979,2.079415 +3.563227,1.270667 +3.563227,1.270667 +3.563227,1.270667 +3.563227,1.270667 +3.563227,1.270667 +2.306013,.8355199 +2.306013,.8355199 +2.306013,.8355199 +4.253063,1.447639 +4.253063,1.447639 +4.253063,1.447639 +4.253063,1.447639 +4.253063,1.447639 +2.45715,.8990021 +2.45715,.8990021 +2.45715,.8990021 +2.45715,.8990021 +2.45715,.8990021 +3.224301,1.170716 +3.224301,1.170716 +3.224301,1.170716 +3.224301,1.170716 +3.224301,1.170716 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.223934,.7992778 +2.223934,.7992778 +2.223934,.7992778 +2.399705,.8753458 +2.399705,.8753458 +2.399705,.8753458 +2.0573,.7213946 +2.0573,.7213946 +2.0573,.7213946 +3.631849,1.289742 +3.631849,1.289742 +3.631849,1.289742 +1.675936,.516372 +1.675936,.516372 +1.675936,.516372 +4.025428,1.392631 +4.025428,1.392631 +4.025428,1.392631 +4.025428,1.392631 +4.025428,1.392631 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.24171,.8072392 +2.24171,.8072392 +2.24171,.8072392 +2.500918,.9166577 +2.500918,.9166577 +2.500918,.9166577 +1.565594,.4482653 +1.565594,.4482653 +2.24171,.8072392 +2.24171,.8072392 +2.24171,.8072392 +2.24171,.8072392 +2.24171,.8072392 +2.24171,.8072392 +2.568038,.9431421 +2.568038,.9431421 +2.568038,.9431421 +2.301874,.8337236 +2.301874,.8337236 +2.301874,.8337236 +1.607612,.4747497 +1.607612,.4747497 +1.607612,.4747497 +2.428297,.8871901 +2.428297,.8871901 +2.428297,.8871901 +3.476979,1.246164 +3.476979,1.246164 +3.476979,1.246164 +2.428297,.8871901 +2.428297,.8871901 +2.428297,.8871901 +4.850788,1.579141 +4.850788,1.579141 +3.440189,1.235526 +3.440189,1.235526 +3.365051,1.213443 +3.365051,1.213443 +3.365051,1.213443 +3.365051,1.213443 +3.365051,1.213443 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +2.361979,.8595001 +2.361979,.8595001 +2.361979,.8595001 +2.274084,.8215775 +2.274084,.8215775 +2.274084,.8215775 +2.274084,.8215775 +2.274084,.8215775 +2.274084,.8215775 +2.274084,.8215775 +2.274084,.8215775 +2.274084,.8215775 +2.274084,.8215775 +3.598774,1.280593 +3.598774,1.280593 +3.598774,1.280593 +3.598774,1.280593 +3.598774,1.280593 +2.274084,.8215775 +2.274084,.8215775 +2.274084,.8215775 +2.274084,.8215775 +2.274084,.8215775 +3.683861,1.303961 +3.683861,1.303961 +3.683861,1.303961 +2.306126,.8355691 +2.306126,.8355691 +2.306126,.8355691 +1.819728,.598687 +1.819728,.598687 +1.819728,.598687 +1.945226,.6653784 +1.945226,.6653784 +1.945226,.6653784 +1.606261,.4739093 +1.606261,.4739093 +1.606261,.4739093 +3.242997,1.176498 +3.242997,1.176498 +3.242997,1.176498 +1.819728,.598687 +1.819728,.598687 +1.819728,.598687 +4.028799,1.393468 +4.028799,1.393468 +4.028799,1.393468 +1.76163,.5662397 +1.76163,.5662397 +1.76163,.5662397 +2.272469,.8208668 +2.272469,.8208668 +2.272469,.8208668 +1.626685,.4865444 +1.626685,.4865444 +1.626685,.4865444 +2.395661,.8736594 +2.395661,.8736594 +2.395661,.8736594 +2.41823,.883036 +2.41823,.883036 +2.41823,.883036 +2.030142,.7081055 +2.030142,.7081055 +2.030142,.7081055 +1.577508,.4558465 +1.577508,.4558465 +2.104544,.744099 +2.104544,.744099 +2.104544,.744099 +2.104544,.744099 +2.104544,.744099 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +2.676463,.9844963 +2.676463,.9844963 +2.676463,.9844963 +1.802622,.589242 +1.802622,.589242 +1.802622,.589242 +1.802622,.589242 +1.802622,.589242 +1.819604,.5986187 +1.819604,.5986187 +1.819604,.5986187 +1.819604,.5986187 +1.819604,.5986187 +1.819604,.5986187 +1.819604,.5986187 +1.819604,.5986187 +1.819604,.5986187 +1.819604,.5986187 +1.557702,.4432115 +1.557702,.4432115 +1.557702,.4432115 +3.664599,1.298719 +3.664599,1.298719 +3.664599,1.298719 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +1.968767,.6774077 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +1.748245,.5586125 +3.020459,1.105409 +3.020459,1.105409 +3.020459,1.105409 +3.020459,1.105409 +3.020459,1.105409 +2.301808,.8336949 +2.301808,.8336949 +2.301808,.8336949 +2.301808,.8336949 +2.301808,.8336949 +2.301808,.8336949 +2.301808,.8336949 +2.301808,.8336949 +2.301808,.8336949 +2.301808,.8336949 +1.904422,.6441785 +1.904422,.6441785 +1.904422,.6441785 +1.904422,.6441785 +1.904422,.6441785 +4.29607,1.457701 +4.29607,1.457701 +4.29607,1.457701 +2.859518,1.050653 +2.859518,1.050653 +2.859518,1.050653 +5.42977,1.691897 +5.42977,1.691897 +5.42977,1.691897 +1.647615,.4993289 +1.647615,.4993289 +1.647615,.4993289 +1.647615,.4993289 +1.647615,.4993289 +2.005728,.6960073 +2.005728,.6960073 +2.005728,.6960073 +2.005728,.6960073 +2.005728,.6960073 +1.255602,.2276149 +1.255602,.2276149 +1.255602,.2276149 +1.255602,.2276149 +1.255602,.2276149 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +3.693543,1.306586 +3.693543,1.306586 +3.693543,1.306586 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +3.528809,1.26096 +3.528809,1.26096 +3.528809,1.26096 +3.528809,1.26096 +3.528809,1.26096 +3.528809,1.26096 +2.379905,.8670604 +2.379905,.8670604 +2.379905,.8670604 +2.379905,.8670604 +2.379905,.8670604 +2.379905,.8670604 +2.379905,.8670604 +2.379905,.8670604 +2.379905,.8670604 +2.379905,.8670604 +3.184945,1.158435 +3.184945,1.158435 +3.184945,1.158435 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.298477,.8322469 +2.298477,.8322469 +2.298477,.8322469 +5.425708,1.691148 +5.425708,1.691148 +5.425708,1.691148 +2.517977,.9234558 +2.517977,.9234558 +2.517977,.9234558 +2.420931,.8841521 +2.420931,.8841521 +2.420931,.8841521 +2.8781,1.05713 +2.8781,1.05713 +2.8781,1.05713 +4.546378,1.514331 +4.546378,1.514331 +4.546378,1.514331 +2.555399,.9382083 +2.555399,.9382083 +2.555399,.9382083 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +5.863721,1.768785 +5.863721,1.768785 +5.863721,1.768785 +5.652663,1.732127 +5.652663,1.732127 +5.652663,1.732127 +2.93099,1.07534 +2.93099,1.07534 +2.93099,1.07534 +1.416046,.3478688 +1.416046,.3478688 +1.416046,.3478688 +2.247858,.8099776 +2.247858,.8099776 +2.247858,.8099776 +2.247858,.8099776 +2.247858,.8099776 +3.388149,1.220284 +3.388149,1.220284 +3.388149,1.220284 +3.388149,1.220284 +3.388149,1.220284 +1.678155,.5176951 +1.678155,.5176951 +1.678155,.5176951 +1.678155,.5176951 +2.247858,.8099776 +2.247858,.8099776 +2.247858,.8099776 +2.247858,.8099776 +2.247858,.8099776 +1.761921,.5664048 +1.761921,.5664048 +1.761921,.5664048 +1.761921,.5664048 +1.761921,.5664048 +2.247858,.8099776 +2.247858,.8099776 +2.247858,.8099776 +2.247858,.8099776 +2.247858,.8099776 +4.449225,1.49273 +4.449225,1.49273 +4.449225,1.49273 +2.266468,.8182226 +2.266468,.8182226 +2.266468,.8182226 +3.139278,1.143993 +3.139278,1.143993 +3.139278,1.143993 +2.460821,.9004952 +2.460821,.9004952 +2.460821,.9004952 +2.243675,.808115 +2.243675,.808115 +2.243675,.808115 +3.193465,1.161106 +3.193465,1.161106 +3.193465,1.161106 +3.238849,1.175218 +3.238849,1.175218 +3.238849,1.175218 +3.589396,1.277984 +3.589396,1.277984 +3.589396,1.277984 +1.873549,.6278344 +1.873549,.6278344 +1.873549,.6278344 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +2.327173,.8446541 +2.327173,.8446541 +2.327173,.8446541 +2.327173,.8446541 +2.327173,.8446541 +2.305454,.8352774 +2.305454,.8352774 +2.305454,.8352774 +2.305454,.8352774 +2.305454,.8352774 +2.054179,.7198764 +2.054179,.7198764 +2.054179,.7198764 +2.054179,.7198764 +2.054179,.7198764 +1.769963,.5709586 +1.769963,.5709586 +1.769963,.5709586 +2.229765,.8018964 +2.229765,.8018964 +2.229765,.8018964 +2.617731,.962308 +2.617731,.962308 +2.617731,.962308 +3.725866,1.315299 +3.725866,1.315299 +3.3397,1.205881 +3.3397,1.205881 +4.038698,1.395922 +2.564412,.9417292 +2.564412,.9417292 +2.564412,.9417292 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.039237,.7125757 +2.039237,.7125757 +2.039237,.7125757 +1.605342,.4733369 +1.605342,.4733369 +1.605342,.4733369 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +2.94746,1.080944 +2.94746,1.080944 +2.94746,1.080944 +2.94746,1.080944 +2.94746,1.080944 +2.94746,1.080944 +2.537764,.9312832 +2.537764,.9312832 +2.537764,.9312832 +7.258525,1.982177 +7.258525,1.982177 +7.258525,1.982177 +7.879891,2.064314 +7.879891,2.064314 +7.879891,2.064314 +2.817796,1.035955 +2.817796,1.035955 +2.817796,1.035955 +1.665129,.5099028 +1.665129,.5099028 +1.665129,.5099028 +3.773083,1.327892 +3.773083,1.327892 +3.773083,1.327892 +4.535882,1.51202 +4.535882,1.51202 +4.535882,1.51202 +4.535882,1.51202 +4.535882,1.51202 +2.530017,.9282261 +2.530017,.9282261 +2.530017,.9282261 +2.530017,.9282261 +2.530017,.9282261 +3.622629,1.2872 +3.622629,1.2872 +3.622629,1.2872 +3.622629,1.2872 +3.622629,1.2872 +1.576273,.4550635 +1.576273,.4550635 +1.576273,.4550635 +1.576273,.4550635 +1.576273,.4550635 +2.30532,.8352194 +2.02827,.7071834 +3.978158,1.380819 +3.978158,1.380819 +7.052769,1.95342 +7.052769,1.95342 +7.052769,1.95342 +1.8314,.6050808 +1.8314,.6050808 +1.8314,.6050808 +1.8314,.6050808 +1.8314,.6050808 +2.925523,1.073473 +2.925523,1.073473 +2.925523,1.073473 +2.925523,1.073473 +2.925523,1.073473 +1.847268,.6137081 +1.847268,.6137081 +1.847268,.6137081 +2.230788,.8023547 +2.230788,.8023547 +2.230788,.8023547 +1.997763,.6920279 +1.997763,.6920279 +1.997763,.6920279 +2.24683,.8095202 +2.24683,.8095202 +2.24683,.8095202 +3.386599,1.219826 +3.386599,1.219826 +3.386599,1.219826 +2.275398,.8221552 +2.275398,.8221552 +2.275398,.8221552 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.27661,.8226877 +2.27661,.8226877 +1.589968,.4637138 +1.589968,.4637138 +2.959514,1.085025 +2.959514,1.085025 +2.636953,.969624 +2.636953,.969624 +5.323934,1.672212 +5.323934,1.672212 +3.566238,1.271511 +3.566238,1.271511 +3.566238,1.271511 +1.780959,.5771517 +1.780959,.5771517 +1.780959,.5771517 +2.525963,.9266222 +2.525963,.9266222 +2.525963,.9266222 +11.20112,2.416013 +11.20112,2.416013 +11.20112,2.416013 +11.20112,2.416013 +11.20112,2.416013 +3.41961,1.229526 +3.41961,1.229526 +3.41961,1.229526 +3.41961,1.229526 +3.41961,1.229526 +3.387695,1.22015 +3.387695,1.22015 +3.387695,1.22015 +3.387695,1.22015 +3.387695,1.22015 +4.159443,1.425381 +4.159443,1.425381 +4.159443,1.425381 +2.539853,.9321062 +2.539853,.9321062 +2.539853,.9321062 +2.276729,.8227396 +2.276729,.8227396 +2.276729,.8227396 +2.072293,.7286559 +2.072293,.7286559 +2.072293,.7286559 +1.840175,.6098608 +1.840175,.6098608 +1.840175,.6098608 +2.441566,.8926399 +2.441566,.8926399 +2.441566,.8926399 +2.441566,.8926399 +2.441566,.8926399 +2.441566,.8926399 +2.104544,.744099 +2.104544,.744099 +2.104544,.744099 +2.104544,.744099 +2.104544,.744099 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +1.831042,.6048851 +1.831042,.6048851 +1.831042,.6048851 +1.982729,.684474 +1.982729,.684474 +1.982729,.684474 +2.365745,.861093 +2.365745,.861093 +2.365745,.861093 +3.59079,1.278372 +3.59079,1.278372 +3.59079,1.278372 +3.12977,1.14096 +3.12977,1.14096 +3.12977,1.14096 +2.779204,1.022164 +2.779204,1.022164 +2.779204,1.022164 +2.517977,.9234558 +2.517977,.9234558 +2.517977,.9234558 +3.044641,1.113383 +3.044641,1.113383 +3.044641,1.113383 +3.299028,1.193628 +3.299028,1.193628 +3.299028,1.193628 +4.462322,1.495669 +4.462322,1.495669 +4.462322,1.495669 +3.816586,1.339356 +3.816586,1.339356 +3.816586,1.339356 +4.298007,1.458152 +4.298007,1.458152 +4.298007,1.458152 +2.690587,.9897592 +2.690587,.9897592 +2.690587,.9897592 +1.804458,.59026 +1.804458,.59026 +1.804458,.59026 +2.083386,.7339945 +2.083386,.7339945 +2.083386,.7339945 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.420931,.8841521 +2.420931,.8841521 +2.420931,.8841521 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.884428,1.059327 +3.131538,1.141524 +3.131538,1.141524 +3.131538,1.141524 +3.131538,1.141524 +3.131538,1.141524 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.974956,.6805462 +1.974956,.6805462 +1.974956,.6805462 +1.974956,.6805462 +1.974956,.6805462 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.841046,.610334 +1.789367,.5818621 +1.789367,.5818621 +1.789367,.5818621 +2.109877,.7466295 +2.109877,.7466295 +2.109877,.7466295 +7.200135,1.9741 +7.200135,1.9741 +7.200135,1.9741 +2.962099,1.085898 +2.962099,1.085898 +2.962099,1.085898 +2.962099,1.085898 +2.962099,1.085898 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +4.998094,1.609057 +4.998094,1.609057 +4.998094,1.609057 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +3.128846,1.140664 +3.128846,1.140664 +3.128846,1.140664 +3.523715,1.259516 +3.523715,1.259516 +3.523715,1.259516 +4.896616,1.588544 +4.896616,1.588544 +4.896616,1.588544 +3.149908,1.147373 +3.149908,1.147373 +3.149908,1.147373 +3.523715,1.259516 +3.523715,1.259516 +3.523715,1.259516 +2.202779,.7897196 +2.202779,.7897196 +2.202779,.7897196 +3.523715,1.259516 +3.523715,1.259516 +3.523715,1.259516 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +2.361979,.8595001 +2.361979,.8595001 +2.361979,.8595001 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.027928,.7070145 +2.027928,.7070145 +2.027928,.7070145 +1.800779,.5882193 +1.800779,.5882193 +1.800779,.5882193 +3.192553,1.160821 +3.192553,1.160821 +3.192553,1.160821 +2.297432,.8317922 +2.297432,.8317922 +2.297432,.8317922 +1.746877,.5578295 +1.746877,.5578295 +1.746877,.5578295 +1.983911,.6850699 +1.983911,.6850699 +1.983911,.6850699 +3.169147,1.153462 +3.169147,1.153462 +3.169147,1.153462 +1.557702,.4432115 +1.557702,.4432115 +1.557702,.4432115 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.005728,.6960073 +2.005728,.6960073 +2.005728,.6960073 +1.903898,.6439034 +1.903898,.6439034 +1.903898,.6439034 +1.921834,.6532801 +1.921834,.6532801 +1.921834,.6532801 +6.126658,1.812649 +6.126658,1.812649 +6.126658,1.812649 +2.9535,1.082991 +2.9535,1.082991 +2.9535,1.082991 +2.253798,.8126168 +2.253798,.8126168 +2.253798,.8126168 +3.132056,1.14169 +3.132056,1.14169 +3.132056,1.14169 +3.132056,1.14169 +3.132056,1.14169 +2.781234,1.022895 +2.781234,1.022895 +2.781234,1.022895 +2.781234,1.022895 +2.781234,1.022895 +3.132056,1.14169 +3.132056,1.14169 +3.132056,1.14169 +3.132056,1.14169 +3.132056,1.14169 +3.548295,1.266467 +3.548295,1.266467 +3.548295,1.266467 +3.548295,1.266467 +3.548295,1.266467 +4.005817,1.387748 +4.005817,1.387748 +3.538839,1.263799 +3.538839,1.263799 +3.538839,1.263799 +3.538839,1.263799 +3.538839,1.263799 +3.123709,1.139021 +3.123709,1.139021 +3.123709,1.139021 +3.123709,1.139021 +3.123709,1.139021 +5.600268,1.722815 +5.600268,1.722815 +5.600268,1.722815 +5.600268,1.722815 +5.600268,1.722815 +1.756513,.5633303 +1.756513,.5633303 +1.756513,.5633303 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +3.114871,1.136188 +3.114871,1.136188 +3.114871,1.136188 +4.66385,1.539841 +4.66385,1.539841 +4.66385,1.539841 +2.564407,.9417273 +2.772329,1.019688 +2.772329,1.019688 +2.772329,1.019688 +2.772329,1.019688 +2.772329,1.019688 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.77579,1.020936 +2.77579,1.020936 +2.77579,1.020936 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +3.07837,1.1244 +3.07837,1.1244 +3.07837,1.1244 +4.781295,1.564712 +4.781295,1.564712 +4.781295,1.564712 +2.435627,.890204 +2.435627,.890204 +2.435627,.890204 +2.231383,.8026214 +2.259755,.8152564 +2.231383,.8026214 +2.259755,.8152564 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +3.241141,1.175925 +3.241141,1.175925 +3.241141,1.175925 +3.241141,1.175925 +3.241141,1.175925 +1.761729,.5662959 +1.761729,.5662959 +1.761729,.5662959 +2.254948,.8131271 +2.254948,.8131271 +2.254948,.8131271 +1.761729,.5662959 +1.761729,.5662959 +1.74774,.5583236 +1.74774,.5583236 +1.74774,.5583236 +1.74774,.5583236 +1.74774,.5583236 +2.208955,.7925197 +2.208955,.7925197 +2.208955,.7925197 +2.208955,.7925197 +2.208955,.7925197 +5.757807,1.750557 +5.757807,1.750557 +5.757807,1.750557 +3.690878,1.305864 +3.690878,1.305864 +3.690878,1.305864 +3.690878,1.305864 +3.690878,1.305864 +3.690878,1.305864 +2.434767,.889851 +2.434767,.889851 +2.434767,.889851 +3.679884,1.302881 +3.679884,1.302881 +3.679884,1.302881 +3.840522,1.345608 +3.840522,1.345608 +2.732596,1.005252 +2.732596,1.005252 +2.732596,1.005252 +1.803713,.5898471 +1.803713,.5898471 +1.803713,.5898471 +2.337136,.8489261 +2.337136,.8489261 +2.337136,.8489261 +4.005897,1.387767 +4.005897,1.387767 +4.005897,1.387767 +2.276392,.8225917 +2.276392,.8225917 +2.276392,.8225917 +1.984127,.6851789 +1.984127,.6851789 +1.984127,.6851789 +2.246884,.8095444 +2.246884,.8095444 +2.246884,.8095444 +2.246884,.8095444 +2.246884,.8095444 +2.225914,.8001677 +2.225914,.8001677 +2.225914,.8001677 +2.225914,.8001677 +2.225914,.8001677 +7.195349,1.973435 +7.195349,1.973435 +7.195349,1.973435 +3.603978,1.282038 +3.603978,1.282038 +3.603978,1.282038 +3.930997,1.368893 +3.930997,1.368893 +3.930997,1.368893 +1.968199,.6771187 +1.968199,.6771187 +1.968199,.6771187 +2.229765,.8018964 +2.229765,.8018964 +2.229765,.8018964 +6.470748,1.867292 +6.470748,1.867292 +6.470748,1.867292 +2.845982,1.045908 +2.845982,1.045908 +2.845982,1.045908 +1.311742,.2713559 +1.311742,.2713559 +1.311742,.2713559 +1.714995,.53941 +1.714995,.53941 +1.714995,.53941 +1.940797,.6630988 +1.940797,.6630988 +1.940797,.6630988 +2.452959,.8972949 +2.452959,.8972949 +2.452959,.8972949 +4.880743,1.585297 +4.880743,1.585297 +4.880743,1.585297 +3.314088,1.198182 +3.314088,1.198182 +3.314088,1.198182 +4.068218,1.403205 +4.068218,1.403205 +4.068218,1.403205 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +3.39669,1.222802 +3.39669,1.222802 +3.39669,1.222802 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +1.893898,.6386374 +1.893898,.6386374 +1.893898,.6386374 +2.145591,.763415 +2.145591,.763415 +2.145591,.763415 +3.52524,1.259949 +3.52524,1.259949 +3.52524,1.259949 +12.96154,2.561987 +12.96154,2.561987 +12.96154,2.561987 +3.324866,1.201429 +3.324866,1.201429 +3.324866,1.201429 +2.460936,.9005419 +2.460936,.9005419 +2.460936,.9005419 +4.412032,1.484335 +4.412032,1.484335 +4.412032,1.484335 +2.237043,.8051547 +2.237043,.8051547 +2.237043,.8051547 +3.264246,1.183029 +3.264246,1.183029 +3.264246,1.183029 +5.215105,1.651559 +5.215105,1.651559 +5.215105,1.651559 +5.215105,1.651559 +5.215105,1.651559 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +2.635368,.9690229 +2.635368,.9690229 +2.635368,.9690229 +2.362226,.8596044 +2.362226,.8596044 +2.362226,.8596044 +2.34018,.8502278 +2.34018,.8502278 +2.34018,.8502278 +2.362226,.8596044 +2.362226,.8596044 +2.362226,.8596044 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +6.032481,1.797158 +6.032481,1.797158 +6.032481,1.797158 +2.054618,.7200898 +2.054618,.7200898 +2.054618,.7200898 +2.327669,.8448675 +2.327669,.8448675 +2.327669,.8448675 +2.235938,.8046607 +2.235938,.8046607 +2.235938,.8046607 +3.016281,1.104025 +3.016281,1.104025 +3.016281,1.104025 +5.375414,1.681836 +5.375414,1.681836 +5.375414,1.681836 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +9.489471,2.250183 +9.489471,2.250183 +9.489471,2.250183 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +4.416632,1.485377 +4.416632,1.485377 +4.416632,1.485377 +4.416632,1.485377 +4.416632,1.485377 +3.935258,1.369976 +3.935258,1.369976 +3.935258,1.369976 +3.935258,1.369976 +3.935258,1.369976 +2.730132,1.00435 +2.730132,1.00435 +2.730132,1.00435 +2.730132,1.00435 +2.730132,1.00435 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +4.307141,1.460274 +4.307141,1.460274 +4.307141,1.460274 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +4.222634,1.440459 +4.222634,1.440459 +4.222634,1.440459 +1.801376,.5885507 +1.801376,.5885507 +1.801376,.5885507 +1.605042,.4731497 +1.605042,.4731497 +1.605042,.4731497 +5.373893,1.681553 +5.373893,1.681553 +5.373893,1.681553 +2.327193,.8446629 +2.327193,.8446629 +2.327193,.8446629 +2.305474,.8352863 +2.305474,.8352863 +2.305474,.8352863 +1.572293,.4525348 +1.572293,.4525348 +1.572293,.4525348 +1.803894,.5899475 +1.803894,.5899475 +1.803894,.5899475 +1.803894,.5899475 +1.803894,.5899475 +1.803894,.5899475 +3.321893,1.200535 +3.321893,1.200535 +3.321893,1.200535 +3.9492,1.373513 +3.9492,1.373513 +3.9492,1.373513 +2.819475,1.036551 +2.819475,1.036551 +2.819475,1.036551 +1.99224,.6892597 +1.99224,.6892597 +1.99224,.6892597 +5.429204,1.691793 +5.429204,1.691793 +5.429204,1.691793 +3.430743,1.232777 +3.430743,1.232777 +3.430743,1.232777 +2.689093,.9892041 +2.689093,.9892041 +2.689093,.9892041 +3.430743,1.232777 +3.430743,1.232777 +3.430743,1.232777 +3.237141,1.174691 +3.237141,1.174691 +3.237141,1.174691 +3.557537,1.269068 +3.557537,1.269068 +3.557537,1.269068 +2.121167,.7519663 +2.121167,.7519663 +2.121167,.7519663 +2.849472,1.047134 +2.849472,1.047134 +2.849472,1.047134 +1.589374,.4633402 +1.589374,.4633402 +1.589374,.4633402 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +3.668691,1.299835 +3.668691,1.299835 +3.668691,1.299835 +3.668691,1.299835 +3.668691,1.299835 +3.340976,1.206263 +3.340976,1.206263 +3.340976,1.206263 +3.340976,1.206263 +3.340976,1.206263 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +1.459919,.3783807 +1.459919,.3783807 +1.459919,.3783807 +3.245723,1.177338 +3.245723,1.177338 +3.245723,1.177338 +3.245723,1.177338 +3.245723,1.177338 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +1.820705,.5992238 +1.820705,.5992238 +1.820705,.5992238 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.819008,1.036385 +2.819008,1.036385 +2.819008,1.036385 +2.315687,.8397066 +2.315687,.8397066 +2.315687,.8397066 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +4.01608,1.390306 +4.01608,1.390306 +4.01608,1.390306 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +3.642751,1.292739 +3.642751,1.292739 +3.642751,1.292739 +2.301874,.8337236 +2.301874,.8337236 +2.301874,.8337236 +2.568038,.9431421 +2.568038,.9431421 +2.568038,.9431421 +3.020546,1.105438 +3.020546,1.105438 +3.020546,1.105438 +3.601021,1.281217 +3.601021,1.281217 +3.601021,1.281217 +3.801036,1.335274 +3.801036,1.335274 +3.801036,1.335274 +3.801036,1.335274 +3.801036,1.335274 +3.801036,1.335274 +3.178596,1.15644 +3.178596,1.15644 +3.178596,1.15644 +3.765562,1.325897 +3.765562,1.325897 +3.765562,1.325897 +3.601021,1.281217 +3.601021,1.281217 +3.601021,1.281217 +2.822561,1.037645 +2.822561,1.037645 +2.822561,1.037645 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +3.195444,1.161726 +2.539559,.9319904 +2.539559,.9319904 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.613298,1.284621 +3.613298,1.284621 +3.613298,1.284621 +3.691463,1.306023 +3.691463,1.306023 +3.691463,1.306023 +3.691463,1.306023 +1.824622,.6013729 +1.824622,.6013729 +1.824622,.6013729 +2.273452,.8212993 +2.273452,.8212993 +2.273452,.8212993 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.616288,.9617567 +2.616288,.9617567 +2.616288,.9617567 +2.347248,.8532436 +2.347248,.8532436 +2.347248,.8532436 +2.347248,.8532436 +2.385319,.869333 +2.385319,.869333 +2.385319,.869333 +2.27661,.8226877 +2.27661,.8226877 +2.27661,.8226877 +3.727136,1.31564 +3.727136,1.31564 +3.727136,1.31564 +3.727136,1.31564 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.419534,.883575 +2.419534,.883575 +2.419534,.883575 +2.419534,.883575 +2.367641,.861894 +2.367641,.861894 +2.367641,.861894 +2.367641,.861894 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.893506,.6384301 +1.893506,.6384301 +1.893506,.6384301 +1.893506,.6384301 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +3.669281,1.299996 +3.669281,1.299996 +3.669281,1.299996 +2.27661,.8226877 +2.27661,.8226877 +2.27661,.8226877 +2.537764,.9312832 +2.537764,.9312832 +2.537764,.9312832 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.27661,.8226877 +2.27661,.8226877 +2.27661,.8226877 +2.254822,.8130709 +2.254822,.8130709 +2.254822,.8130709 +3.63229,1.289863 +3.63229,1.289863 +3.63229,1.289863 +4.547979,1.514683 +4.547979,1.514683 +4.547979,1.514683 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.274788,.8218867 +2.274788,.8218867 +2.274788,.8218867 +2.311371,.837841 +2.311371,.837841 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.501713,.9169757 +2.501713,.9169757 +2.501713,.9169757 +2.393914,.8729299 +2.393914,.8729299 +2.393914,.8729299 +2.349087,.8540267 +2.349087,.8540267 +2.349087,.8540267 +2.009593,.6979322 +2.009593,.6979322 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +1.820705,.5992238 +1.820705,.5992238 +1.820705,.5992238 +2.172873,.7760501 +2.172873,.7760501 +2.172873,.7760501 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.349087,.8540267 +2.349087,.8540267 +2.349087,.8540267 +3.5174,1.257722 +3.5174,1.257722 +2.643402,.9720669 +2.643402,.9720669 +2.643402,.9720669 +2.963984,1.086534 +2.963984,1.086534 +2.963984,1.086534 +3.194174,1.161329 +3.194174,1.161329 +3.194174,1.161329 +2.25877,.8148203 +2.999762,1.098533 +2.999762,1.098533 +2.586335,.9502417 +2.586335,.9502417 +2.586335,.9502417 +2.999762,1.098533 +2.999762,1.098533 +2.367641,.861894 +2.367641,.861894 +2.367641,.861894 +2.367641,.861894 +2.367641,.861894 +2.367641,.861894 +2.367641,.861894 +2.364333,.8604958 +2.364333,.8604958 +3.711207,1.311357 +3.711207,1.311357 +2.420931,.8841521 +2.420931,.8841521 +2.419435,.8835338 +2.419435,.8835338 +2.349087,.8540267 +2.349087,.8540267 +2.349087,.8540267 +3.815997,1.339202 +3.815997,1.339202 +2.367641,.861894 +2.349087,.8540267 +3.616007,1.28537 +2.349087,.8540267 +2.349087,.8540267 +2.404459,.8773252 +2.404459,.8773252 +1.893506,.6384301 +2.365745,.861093 +2.420478,.8839649 +2.36638,.8613615 +2.36638,.8613615 +1.893506,.6384301 +2.999762,1.098533 +2.365693,.8610711 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +3.734368,1.317579 +3.668431,1.299764 +1.893506,.6384301 +2.367205,.86171 +3.711207,1.311357 +2.348408,.8537377 +2.419435,.8835338 +2.253891,.812658 +2.253891,.812658 +2.253891,.812658 +2.008237,.697257 +2.008237,.697257 +2.008237,.697257 +2.380635,.8673673 +2.380635,.8673673 +2.380635,.8673673 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +2.386956,.870019 +2.386956,.870019 +2.386956,.870019 +2.10695,.7452413 +2.10695,.7452413 +2.10695,.7452413 +3.474844,1.24555 +3.474844,1.24555 +3.474844,1.24555 +3.474844,1.24555 +3.474844,1.24555 +2.457663,.8992108 +2.457663,.8992108 +2.457663,.8992108 +2.457663,.8992108 +2.457663,.8992108 +5.41471,1.689119 +5.41471,1.689119 +5.41471,1.689119 +5.41471,1.689119 +5.41471,1.689119 +3.067221,1.120772 +3.067221,1.120772 +3.067221,1.120772 +3.067221,1.120772 +3.067221,1.120772 +3.56455,1.271038 +3.56455,1.271038 +3.56455,1.271038 +3.56455,1.271038 +3.56455,1.271038 +3.297467,1.193154 +3.297467,1.193154 +3.297467,1.193154 +3.297467,1.193154 +3.297467,1.193154 +2.820295,1.036842 +2.820295,1.036842 +2.820295,1.036842 +2.820295,1.036842 +2.820295,1.036842 +3.56455,1.271038 +3.56455,1.271038 +3.56455,1.271038 +3.56455,1.271038 +3.56455,1.271038 +2.33288,.8471037 +2.33288,.8471037 +2.33288,.8471037 +2.33288,.8471037 +2.33288,.8471037 +2.33288,.8471037 +2.33288,.8471037 +2.33288,.8471037 +2.33288,.8471037 +2.33288,.8471037 +2.33288,.8471037 +2.33288,.8471037 +2.33288,.8471037 +2.33288,.8471037 +2.852907,1.048339 +2.961975,1.085856 +2.498561,.915715 +2.498561,.915715 +2.498561,.915715 +2.498561,.915715 +2.498561,.915715 +2.337363,.8490236 +2.337363,.8490236 +2.337363,.8490236 +2.337363,.8490236 +2.337363,.8490236 +3.326814,1.202015 +3.326814,1.202015 +3.326814,1.202015 +3.326814,1.202015 +3.326814,1.202015 +2.982007,1.092596 +2.982007,1.092596 +2.982007,1.092596 +2.982007,1.092596 +2.982007,1.092596 +3.105603,1.133208 +3.105603,1.133208 +3.105603,1.133208 +7.475399,2.011617 +7.475399,2.011617 +7.475399,2.011617 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +4.01608,1.390306 +4.01608,1.390306 +4.01608,1.390306 +3.291626,1.191382 +3.291626,1.191382 +3.291626,1.191382 +3.291626,1.191382 +3.291626,1.191382 +2.92293,1.072586 +2.92293,1.072586 +3.47525,1.245666 +3.47525,1.245666 +3.47525,1.245666 +3.74992,1.321734 +3.74992,1.321734 +3.74992,1.321734 +3.811864,1.338118 +3.811864,1.338118 +3.811864,1.338118 +3.811864,1.338118 +3.811864,1.338118 +3.260255,1.181805 +3.260255,1.181805 +3.260255,1.181805 +3.260255,1.181805 +3.260255,1.181805 +1.557252,.4429225 +1.557252,.4429225 +1.557252,.4429225 +2.487591,.9113149 +2.487591,.9113149 +2.487591,.9113149 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.882169,1.058543 +2.882169,1.058543 +2.882169,1.058543 +3.426004,1.231395 +3.426004,1.231395 +3.426004,1.231395 +2.006337,.6963109 +2.006337,.6963109 +2.006337,.6963109 +2.540256,.932265 +2.540256,.932265 +2.540256,.932265 +3.603343,1.281862 +3.603343,1.281862 +3.603343,1.281862 +3.82568,1.341736 +3.82568,1.341736 +3.82568,1.341736 +4.589765,1.523829 +4.589765,1.523829 +4.589765,1.523829 +2.781099,1.022846 +2.781099,1.022846 +2.781099,1.022846 +2.781099,1.022846 +2.781099,1.022846 +1.746877,.5578295 +1.746877,.5578295 +1.746877,.5578295 +5.099387,1.62912 +5.099387,1.62912 +5.099387,1.62912 +1.548706,.4374195 +1.548706,.4374195 +1.548706,.4374195 +2.326429,.8443343 +2.326429,.8443343 +2.326429,.8443343 +7.044934,1.952309 +7.044934,1.952309 +7.044934,1.952309 +7.044934,1.952309 +7.044934,1.952309 +2.898617,1.064234 +2.898617,1.064234 +2.898617,1.064234 +2.898617,1.064234 +2.898617,1.064234 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.51995,.9242389 +2.51995,.9242389 +2.51995,.9242389 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +7.124412,1.963527 +7.124412,1.963527 +7.124412,1.963527 +1.586945,.4618111 +1.586945,.4618111 +1.586945,.4618111 +1.409191,.3430159 +1.409191,.3430159 +1.409191,.3430159 +1.869732,.625795 +1.869732,.625795 +1.869732,.625795 +3.240956,1.175868 +3.240956,1.175868 +3.240956,1.175868 +2.327719,.8448887 +2.327719,.8448887 +2.327719,.8448887 +2.277042,.822877 +2.277042,.822877 +2.277042,.822877 +2.104544,.744099 +2.104544,.744099 +2.104544,.744099 +2.384231,.8688767 +2.384231,.8688767 +2.384231,.8688767 +3.128616,1.140591 +3.128616,1.140591 +3.128616,1.140591 +2.384231,.8688767 +2.384231,.8688767 +2.384231,.8688767 +2.359566,.8584779 +2.359566,.8584779 +2.359566,.8584779 +2.453914,.8976842 +2.453914,.8976842 +2.453914,.8976842 +1.647904,.4995041 +1.647904,.4995041 +1.647904,.4995041 +5.314744,1.670485 +5.314744,1.670485 +5.314744,1.670485 +5.448649,1.695368 +5.448649,1.695368 +5.448649,1.695368 +2.453914,.8976842 +2.453914,.8976842 +2.453914,.8976842 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +6.613149,1.88906 +6.613149,1.88906 +6.613149,1.88906 +1.409191,.3430159 +1.409191,.3430159 +1.409191,.3430159 +2.591599,.9522752 +2.591599,.9522752 +2.591599,.9522752 +1.983685,.6849565 +1.983685,.6849565 +1.983685,.6849565 +1.803688,.5898333 +1.803688,.5898333 +1.803688,.5898333 +4.302051,1.459092 +4.302051,1.459092 +4.302051,1.459092 +4.302051,1.459092 +4.302051,1.459092 +3.071388,1.12213 +3.071388,1.12213 +3.071388,1.12213 +3.071388,1.12213 +3.071388,1.12213 +3.499462,1.252609 +3.499462,1.252609 +3.499462,1.252609 +3.499462,1.252609 +3.499462,1.252609 +3.118051,1.137208 +3.118051,1.137208 +3.118051,1.137208 +3.118051,1.137208 +3.118051,1.137208 +3.532429,1.261986 +3.532429,1.261986 +3.532429,1.261986 +3.532429,1.261986 +3.532429,1.261986 +4.422943,1.486805 +4.422943,1.486805 +4.422943,1.486805 +4.422943,1.486805 +4.422943,1.486805 +5.324357,1.672292 +5.324357,1.672292 +5.324357,1.672292 +5.324357,1.672292 +5.324357,1.672292 +3.118051,1.137208 +3.118051,1.137208 +3.118051,1.137208 +3.118051,1.137208 +3.118051,1.137208 +2.168735,.774144 +2.168735,.774144 +2.168735,.774144 +2.390342,.8714366 +2.390342,.8714366 +2.390342,.8714366 +2.390342,.8714366 +2.390342,.8714366 +2.390342,.8714366 +2.434022,.889545 +2.434022,.889545 +2.434022,.889545 +1.799834,.5876946 +1.799834,.5876946 +1.799834,.5876946 +2.052636,.7191248 +2.052636,.7191248 +2.052636,.7191248 +5.097185,1.628688 +5.097185,1.628688 +5.097185,1.628688 +2.026864,.7064897 +2.026864,.7064897 +2.026864,.7064897 +3.820709,1.340436 +3.820709,1.340436 +3.820709,1.340436 +1.570149,.4511707 +1.570149,.4511707 +1.570149,.4511707 +2.380854,.8674593 +2.380854,.8674593 +2.380854,.8674593 +1.801435,.5885834 +1.801435,.5885834 +1.801435,.5885834 +1.760736,.5657316 +2.94768,1.081018 +2.246345,.8093045 +2.92017,1.071642 +1.517518,.4170763 +1.517518,.4170763 +1.517518,.4170763 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +4.629306,1.532407 +4.629306,1.532407 +4.629306,1.532407 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +1.557702,.4432115 +1.557702,.4432115 +1.557702,.4432115 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.028663,.7073771 +2.028663,.7073771 +2.028663,.7073771 +2.877651,1.056974 +2.877651,1.056974 +2.877651,1.056974 +3.240635,1.175769 +3.240635,1.175769 +3.240635,1.175769 +3.939891,1.371153 +3.939891,1.371153 +3.939891,1.371153 +3.939891,1.371153 +3.939891,1.371153 +1.498465,.4044412 +2.293563,.8301064 +2.293563,.8301064 +2.293563,.8301064 +2.293563,.8301064 +2.293563,.8301064 +2.293563,.8301064 +2.145591,.763415 +2.145591,.763415 +3.14102,1.144548 +3.14102,1.144548 +3.14102,1.144548 +2.720647,1.00087 +2.720647,1.00087 +2.720647,1.00087 +3.025359,1.10703 +3.025359,1.10703 +2.145591,.763415 +2.145591,.763415 +2.145591,.763415 +2.828573,1.039772 +2.828573,1.039772 +2.828573,1.039772 +1.538944,.4310962 +1.538944,.4310962 +1.538944,.4310962 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +1.570005,.4510788 +1.570005,.4510788 +1.570005,.4510788 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.413797,.8812012 +2.413797,.8812012 +2.413797,.8812012 +6.257637,1.833803 +6.257637,1.833803 +6.257637,1.833803 +6.257637,1.833803 +6.257637,1.833803 +1.665129,.5099028 +1.665129,.5099028 +1.665129,.5099028 +1.665129,.5099028 +1.665129,.5099028 +1.868814,.6253039 +1.868814,.6253039 +1.868814,.6253039 +1.868814,.6253039 +1.868814,.6253039 +2.361979,.8595001 +2.361979,.8595001 +2.361979,.8595001 +2.361979,.8595001 +2.361979,.8595001 +2.384231,.8688767 +2.384231,.8688767 +2.384231,.8688767 +2.384231,.8688767 +2.384231,.8688767 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.364229,.8604519 +2.364229,.8604519 +2.364229,.8604519 +4.14854,1.422757 +4.14854,1.422757 +4.14854,1.422757 +1.506377,.4097073 +1.506377,.4097073 +1.506377,.4097073 +1.69639,.5285025 +1.69639,.5285025 +1.69639,.5285025 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.761493,.5661618 +1.761493,.5661618 +1.761493,.5661618 +2.275887,.8223696 +2.275887,.8223696 +2.275887,.8223696 +4.666756,1.540464 +4.666756,1.540464 +4.666756,1.540464 +1.761493,.5661618 +1.761493,.5661618 +1.761493,.5661618 +2.275887,.8223696 +2.275887,.8223696 +2.275887,.8223696 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.51995,.9242389 +2.51995,.9242389 +2.51995,.9242389 +3.556343,1.268733 +3.556343,1.268733 +3.556343,1.268733 +3.387695,1.22015 +3.387695,1.22015 +3.387695,1.22015 +5.302611,1.668199 +5.302611,1.668199 +5.302611,1.668199 +3.371147,1.215253 +3.371147,1.215253 +3.371147,1.215253 +4.0582,1.400739 +4.0582,1.400739 +4.0582,1.400739 +3.796381,1.334048 +3.796381,1.334048 +3.796381,1.334048 +3.402905,1.22463 +3.402905,1.22463 +3.402905,1.22463 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.514098,.921914 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.566238,1.271511 +3.566238,1.271511 +3.566238,1.271511 +3.566238,1.271511 +3.566238,1.271511 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +3.566238,1.271511 +3.566238,1.271511 +3.566238,1.271511 +1.606261,.4739093 +1.606261,.4739093 +1.606261,.4739093 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +4.067146,1.402941 +4.067146,1.402941 +4.067146,1.402941 +4.067146,1.402941 +4.067146,1.402941 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.005728,.6960073 +2.005728,.6960073 +2.005728,.6960073 +2.005728,.6960073 +2.005728,.6960073 +1.409191,.3430159 +1.409191,.3430159 +1.409191,.3430159 +1.409191,.3430159 +1.409191,.3430159 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +9.390388,2.239686 +9.390388,2.239686 +9.390388,2.239686 +9.390388,2.239686 +6.61996,1.890089 +2.272973,.8210886 +2.272973,.8210886 +2.272973,.8210886 +2.954785,1.083426 +2.954785,1.083426 +2.954785,1.083426 +2.710677,.9971984 +2.710677,.9971984 +2.710677,.9971984 +2.429729,.8877799 +2.429729,.8877799 +2.429729,.8877799 +5.621149,1.726536 +5.621149,1.726536 +5.621149,1.726536 +5.621149,1.726536 +5.621149,1.726536 +2.687484,.9886054 +2.687484,.9886054 +2.687484,.9886054 +2.687484,.9886054 +2.687484,.9886054 +2.911205,1.068567 +2.911205,1.068567 +2.911205,1.068567 +2.911205,1.068567 +2.911205,1.068567 +2.911205,1.068567 +2.911205,1.068567 +2.911205,1.068567 +2.911205,1.068567 +2.911205,1.068567 +3.714113,1.31214 +3.714113,1.31214 +3.714113,1.31214 +3.714113,1.31214 +3.714113,1.31214 +4.143573,1.421558 +4.143573,1.421558 +4.143573,1.421558 +4.143573,1.421558 +4.143573,1.421558 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +3.388403,1.220359 +3.388403,1.220359 +3.388403,1.220359 +1.823228,.6006087 +1.823228,.6006087 +1.823228,.6006087 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.557702,.4432115 +1.557702,.4432115 +1.557702,.4432115 +1.429087,.3570359 +1.429087,.3570359 +1.429087,.3570359 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.292766,.829759 +2.292766,.829759 +2.292766,.829759 +2.450888,.8964504 +2.450888,.8964504 +2.450888,.8964504 +2.10118,.7424992 +2.10118,.7424992 +2.10118,.7424992 +8.433655,2.13223 +8.433655,2.13223 +8.433655,2.13223 +2.784113,1.023929 +2.784113,1.023929 +2.784113,1.023929 +2.784113,1.023929 +2.784113,1.023929 +1.762492,.5667288 +1.762492,.5667288 +1.762492,.5667288 +1.762492,.5667288 +1.762492,.5667288 +2.675212,.9840285 +2.675212,.9840285 +2.675212,.9840285 +3.413033,1.227601 +3.413033,1.227601 +3.413033,1.227601 +3.413033,1.227601 +3.413033,1.227601 +3.413033,1.227601 +3.614364,1.284916 +3.614364,1.284916 +3.614364,1.284916 +2.172873,.7760501 +2.172873,.7760501 +2.172873,.7760501 +2.152594,.7666734 +2.152594,.7666734 +2.152594,.7666734 +2.172873,.7760501 +2.172873,.7760501 +2.172873,.7760501 +1.91798,.6512724 +1.91798,.6512724 +1.91798,.6512724 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +3.974887,1.379996 +3.974887,1.379996 +3.974887,1.379996 +3.974887,1.379996 +3.974887,1.379996 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +3.974887,1.379996 +3.974887,1.379996 +3.974887,1.379996 +3.974887,1.379996 +3.974887,1.379996 +3.026904,1.10754 +3.026904,1.10754 +3.026904,1.10754 +3.397165,1.222941 +3.397165,1.222941 +3.397165,1.222941 +3.429169,1.232318 +3.429169,1.232318 +3.429169,1.232318 +3.429169,1.232318 +3.429169,1.232318 +3.429169,1.232318 +1.968199,.6771187 +1.968199,.6771187 +1.968199,.6771187 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.062386,1.119195 +3.062386,1.119195 +3.062386,1.119195 +2.231917,.8028609 +2.231917,.8028609 +2.231917,.8028609 +2.384231,.8688767 +1.577508,.4558465 +1.557702,.4432115 +4.631659,1.532915 +1.770474,.5712476 +2.616288,.9617567 +1.657245,.5051566 +1.657245,.5051566 +1.657245,.5051566 +1.657245,.5051566 +1.657245,.5051566 +2.372942,.8641304 +2.372942,.8641304 +2.372942,.8641304 +2.372942,.8641304 +2.372942,.8641304 +2.372942,.8641304 +2.372942,.8641304 +2.372942,.8641304 +2.372942,.8641304 +2.372942,.8641304 +2.882169,1.058543 +2.882169,1.058543 +2.882169,1.058543 +2.568038,.9431421 +2.568038,.9431421 +2.568038,.9431421 +2.301874,.8337236 +2.301874,.8337236 +2.301874,.8337236 +2.301874,.8337236 +2.301874,.8337236 +2.301874,.8337236 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +5.275115,1.663001 +5.275115,1.663001 +5.275115,1.663001 +2.645995,.973047 +2.645995,.973047 +2.645995,.973047 +5.940514,1.781796 +5.940514,1.781796 +5.940514,1.781796 +3.25307,1.179599 +3.25307,1.179599 +3.25307,1.179599 +2.307084,.8359844 +2.307084,.8359844 +2.307084,.8359844 +2.285553,.8266078 +2.285553,.8266078 +2.285553,.8266078 +2.307084,.8359844 +2.307084,.8359844 +2.307084,.8359844 +11.64844,2.455173 +11.64844,2.455173 +2.828198,1.03964 +2.828198,1.03964 +2.828198,1.03964 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.687484,.9886054 +2.687484,.9886054 +2.687484,.9886054 +2.687484,.9886054 +3.044641,1.113383 +3.044641,1.113383 +3.044641,1.113383 +3.044641,1.113383 +3.044641,1.113383 +5.002394,1.609917 +5.002394,1.609917 +5.002394,1.609917 +3.044641,1.113383 +3.044641,1.113383 +3.044641,1.113383 +3.044641,1.113383 +3.044641,1.113383 +2.687484,.9886054 +2.687484,.9886054 +2.687484,.9886054 +2.687484,.9886054 +3.749656,1.321664 +3.749656,1.321664 +3.749656,1.321664 +2.145591,.763415 +2.145591,.763415 +2.145591,.763415 +2.145591,.763415 +2.145591,.763415 +2.145591,.763415 +1.681762,.5198422 +1.681762,.5198422 +1.681762,.5198422 +2.092987,.7385924 +2.092987,.7385924 +2.092987,.7385924 +2.145591,.763415 +2.145591,.763415 +2.145591,.763415 +1.606889,.4742998 +1.606889,.4742998 +1.606889,.4742998 +1.606889,.4742998 +1.606889,.4742998 +5.36574,1.680034 +5.36574,1.680034 +5.36574,1.680034 +6.136629,1.814276 +6.136629,1.814276 +6.136629,1.814276 +4.285404,1.455215 +4.285404,1.455215 +4.285404,1.455215 +2.435436,.8901259 +2.435436,.8901259 +2.699028,.9928918 +2.699028,.9928918 +2.699028,.9928918 +3.487202,1.2491 +3.487202,1.2491 +3.487202,1.2491 +2.699028,.9928918 +2.699028,.9928918 +2.699028,.9928918 +4.593384,1.524617 +4.593384,1.524617 +4.593384,1.524617 +2.790228,1.026123 +2.790228,1.026123 +2.790228,1.026123 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.386458,.8698102 +2.386458,.8698102 +2.386458,.8698102 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.8781,1.05713 +2.8781,1.05713 +2.8781,1.05713 +2.8781,1.05713 +2.8781,1.05713 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +2.243428,.8080049 +2.243428,.8080049 +2.243428,.8080049 +2.243428,.8080049 +2.243428,.8080049 +2.243428,.8080049 +3.04169,1.112413 +3.04169,1.112413 +3.04169,1.112413 +2.406605,.8782171 +2.406605,.8782171 +2.406605,.8782171 +1.605342,.4733369 +1.605342,.4733369 +1.669532,.5125431 +1.669532,.5125431 +1.669532,.5125431 +1.669532,.5125431 +1.669532,.5125431 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.527279,.9271432 +2.527279,.9271432 +2.527279,.9271432 +2.527279,.9271432 +2.527279,.9271432 +2.434218,.8896254 +2.434218,.8896254 +2.434218,.8896254 +2.434218,.8896254 +2.434218,.8896254 +2.465009,.9021955 +2.465009,.9021955 +2.465009,.9021955 +3.375814,1.216637 +3.375814,1.216637 +3.375814,1.216637 +1.721544,.5432217 +1.721544,.5432217 +1.721544,.5432217 +2.465009,.9021955 +2.465009,.9021955 +2.465009,.9021955 +2.175847,.7774178 +2.175847,.7774178 +2.175847,.7774178 +5.322581,1.671958 +5.322581,1.671958 +5.322581,1.671958 +5.322581,1.671958 +5.322581,1.671958 +2.276032,.8224335 +2.276032,.8224335 +2.276032,.8224335 +2.276032,.8224335 +2.276032,.8224335 +2.636282,.9693698 +2.636282,.9693698 +2.636282,.9693698 +2.636282,.9693698 +2.636282,.9693698 +2.276032,.8224335 +2.276032,.8224335 +2.276032,.8224335 +2.276032,.8224335 +2.276032,.8224335 +2.276032,.8224335 +2.276032,.8224335 +2.276032,.8224335 +2.276032,.8224335 +2.276032,.8224335 +2.301874,.8337236 +2.301874,.8337236 +2.301874,.8337236 +2.301874,.8337236 +2.301874,.8337236 +2.568038,.9431421 +2.568038,.9431421 +2.568038,.9431421 +2.568038,.9431421 +2.568038,.9431421 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +2.031848,.7089459 +2.320115,.8416167 +2.320115,.8416167 +2.320115,.8416167 +2.210091,.7930338 +2.210091,.7930338 +2.210091,.7930338 +2.294584,.8305516 +2.294584,.8305516 +2.294584,.8305516 +3.664599,1.298719 +3.664599,1.298719 +3.664599,1.298719 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +4.169617,1.427824 +4.169617,1.427824 +4.169617,1.427824 +4.169617,1.427824 +4.169617,1.427824 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +4.253063,1.447639 +4.253063,1.447639 +4.253063,1.447639 +4.253063,1.447639 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +4.932987,1.595945 +4.932987,1.595945 +4.932987,1.595945 +4.932987,1.595945 +4.932987,1.595945 +4.932987,1.595945 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +3.434223,1.233791 +3.434223,1.233791 +3.434223,1.233791 +4.887994,1.586782 +4.887994,1.586782 +4.887994,1.586782 +7.906694,2.06771 +7.906694,2.06771 +7.906694,2.06771 +4.63032,1.532626 +4.63032,1.532626 +4.63032,1.532626 +2.563907,.9415322 +2.563907,.9415322 +2.563907,.9415322 +2.298171,.8321137 +2.298171,.8321137 +2.298171,.8321137 +1.801358,.5885409 +1.801358,.5885409 +1.801358,.5885409 +3.065391,1.120175 +3.065391,1.120175 +3.065391,1.120175 +3.397165,1.222941 +3.397165,1.222941 +3.397165,1.222941 +2.849968,1.047308 +2.849968,1.047308 +2.849968,1.047308 +2.849968,1.047308 +2.849968,1.047308 +5.502908,1.705277 +5.502908,1.705277 +5.502908,1.705277 +5.502908,1.705277 +5.502908,1.705277 +4.722592,1.552358 +4.722592,1.552358 +4.722592,1.552358 +4.722592,1.552358 +4.722592,1.552358 +5.067488,1.622845 +5.067488,1.622845 +5.067488,1.622845 +1.614597,.4790854 +1.614597,.4790854 +1.614597,.4790854 +2.311876,.8380593 +2.311876,.8380593 +2.311876,.8380593 +6.34487,1.847647 +6.34487,1.847647 +6.34487,1.847647 +3.065391,1.120175 +3.065391,1.120175 +3.065391,1.120175 +6.34487,1.847647 +6.34487,1.847647 +6.34487,1.847647 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.390535,.871517 +2.390535,.871517 +2.390535,.871517 +3.429169,1.232318 +3.429169,1.232318 +3.429169,1.232318 +2.687859,.988745 +2.687859,.988745 +2.687859,.988745 +2.687859,.988745 +2.687859,.988745 +2.687859,.988745 +2.208955,.7925197 +2.208955,.7925197 +2.208955,.7925197 +1.577052,.4555576 +1.577052,.4555576 +1.577052,.4555576 +2.325504,.8439366 +2.325504,.8439366 +2.325504,.8439366 +2.325504,.8439366 +2.325504,.8439366 +2.3038,.8345599 +2.3038,.8345599 +2.3038,.8345599 +2.3038,.8345599 +2.3038,.8345599 +2.325504,.8439366 +2.325504,.8439366 +2.325504,.8439366 +2.325504,.8439366 +2.325504,.8439366 +2.319593,.8413916 +2.319593,.8413916 +2.319593,.8413916 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +2.319593,.8413916 +2.319593,.8413916 +2.319593,.8413916 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +7.908979,2.067999 +7.908979,2.067999 +7.908979,2.067999 +2.51995,.9242389 +2.51995,.9242389 +2.51995,.9242389 +2.51995,.9242389 +2.51995,.9242389 +2.51995,.9242389 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.611465,.4771435 +1.611465,.4771435 +1.611465,.4771435 +1.761804,.5663384 +1.761804,.5663384 +1.761804,.5663384 +2.247708,.8099112 +2.247708,.8099112 +2.247708,.8099112 +2.247708,.8099112 +2.247708,.8099112 +2.247708,.8099112 +2.507609,.9193297 +2.507609,.9193297 +2.507609,.9193297 +2.247708,.8099112 +2.247708,.8099112 +2.247708,.8099112 +2.247708,.8099112 +2.247708,.8099112 +2.247708,.8099112 +2.376373,.8655753 +2.376373,.8655753 +2.376373,.8655753 +2.39876,.874952 +2.39876,.874952 +2.39876,.874952 +2.272534,.8208956 +2.272534,.8208956 +2.272534,.8208956 +1.876022,.6291538 +1.876022,.6291538 +1.876022,.6291538 +1.876022,.6291538 +1.876022,.6291538 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.514098,.921914 +2.514098,.921914 +2.514098,.921914 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +5.803,1.758375 +5.803,1.758375 +5.803,1.758375 +5.803,1.758375 +5.803,1.758375 +3.940313,1.37126 +3.940313,1.37126 +5.002394,1.609917 +5.002394,1.609917 +5.002394,1.609917 +5.002394,1.609917 +5.002394,1.609917 +4.507341,1.505707 +4.507341,1.505707 +4.507341,1.505707 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.45715,.8990021 +2.45715,.8990021 +2.45715,.8990021 +2.168909,.7742244 +2.168909,.7742244 +2.168909,.7742244 +2.741268,1.008421 +2.741268,1.008421 +2.741268,1.008421 +2.390535,.871517 +2.390535,.871517 +2.390535,.871517 +4.914618,1.592214 +4.914618,1.592214 +4.914618,1.592214 +2.277171,.8229341 +2.277171,.8229341 +2.277171,.8229341 +2.341587,.8508288 +2.341587,.8508288 +2.341587,.8508288 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +3.490375,1.250009 +3.490375,1.250009 +3.490375,1.250009 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +1.820705,.5992238 +1.820705,.5992238 +1.820705,.5992238 +1.342195,.2943062 +1.342195,.2943062 +1.342195,.2943062 +1.797845,.5865887 +1.797845,.5865887 +1.797845,.5865887 +2.005728,.6960073 +2.005728,.6960073 +2.005728,.6960073 +1.427109,.355651 +1.427109,.355651 +1.427109,.355651 +12.23918,2.504642 +12.23918,2.504642 +12.23918,2.504642 +6.386316,1.854158 +6.386316,1.854158 +2.253551,.812507 +2.253551,.812507 +2.253551,.812507 +7.451167,2.008371 +7.451167,2.008371 +7.451167,2.008371 +5.187427,1.646238 +5.187427,1.646238 +5.187427,1.646238 +3.841922,1.345973 +3.841922,1.345973 +3.841922,1.345973 +3.731458,1.316799 +3.731458,1.316799 +2.564412,.9417292 +2.564412,.9417292 +2.564412,.9417292 +2.564412,.9417292 +2.564412,.9417292 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.564412,.9417292 +2.564412,.9417292 +2.564412,.9417292 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +4.773312,1.56304 +4.773312,1.56304 +4.773312,1.56304 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +3.068123,1.121066 +3.068123,1.121066 +3.068123,1.121066 +3.443426,1.236467 +3.443426,1.236467 +3.443426,1.236467 +3.443426,1.236467 +3.443426,1.236467 +3.443426,1.236467 +4.250281,1.446985 +4.250281,1.446985 +4.250281,1.446985 +3.437693,1.234801 +3.437693,1.234801 +3.437693,1.234801 +6.789501,1.915377 +6.789501,1.915377 +6.789501,1.915377 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +2.126355,.7544092 +2.126355,.7544092 +2.126355,.7544092 +1.497758,.4039693 +1.497758,.4039693 +1.497758,.4039693 +2.144579,.7629431 +2.144579,.7629431 +2.144579,.7629431 +1.497758,.4039693 +1.497758,.4039693 +1.497758,.4039693 +2.171847,.7755781 +2.171847,.7755781 +2.171847,.7755781 +5.517831,1.707985 +5.517831,1.707985 +5.517831,1.707985 +3.358355,1.211451 +3.358355,1.211451 +3.358355,1.211451 +3.358355,1.211451 +3.358355,1.211451 +3.358355,1.211451 +3.746679,1.32087 +3.746679,1.32087 +3.746679,1.32087 +3.358355,1.211451 +3.358355,1.211451 +3.358355,1.211451 +3.358355,1.211451 +3.358355,1.211451 +3.358355,1.211451 +3.746679,1.32087 +3.746679,1.32087 +3.746679,1.32087 +3.358355,1.211451 +3.358355,1.211451 +3.358355,1.211451 +3.358355,1.211451 +3.358355,1.211451 +3.358355,1.211451 +2.632354,.9678785 +2.632354,.9678785 +2.632354,.9678785 +2.367641,.861894 +2.367641,.861894 +2.367641,.861894 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +2.27661,.8226877 +2.27661,.8226877 +2.27661,.8226877 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +1.557702,.4432115 +1.557702,.4432115 +1.557702,.4432115 +1.557702,.4432115 +1.557702,.4432115 +2.988131,1.094648 +2.988131,1.094648 +2.988131,1.094648 +2.812489,1.03407 +2.812489,1.03407 +2.812489,1.03407 +2.812489,1.03407 +2.812489,1.03407 +2.007937,.6971078 +2.007937,.6971078 +2.007937,.6971078 +2.007937,.6971078 +2.007937,.6971078 +1.585649,.4609935 +1.585649,.4609935 +1.585649,.4609935 +1.585649,.4609935 +1.585649,.4609935 +2.532953,.9293859 +2.532953,.9293859 +2.532953,.9293859 +2.532953,.9293859 +2.532953,.9293859 +2.899455,1.064523 +2.899455,1.064523 +2.899455,1.064523 +2.361979,.8595001 +2.361979,.8595001 +2.361979,.8595001 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +3.169796,1.153667 +3.169796,1.153667 +3.169796,1.153667 +3.642424,1.29265 +3.642424,1.29265 +3.642424,1.29265 +2.58344,.9491217 +2.58344,.9491217 +2.58344,.9491217 +3.096753,1.130354 +3.096753,1.130354 +3.096753,1.130354 +2.104544,.744099 +2.104544,.744099 +2.104544,.744099 +2.450171,.8961578 +2.450171,.8961578 +2.450171,.8961578 +2.77579,1.020936 +2.77579,1.020936 +2.77579,1.020936 +1.699721,.5304643 +1.699721,.5304643 +2.45623,.8986278 +2.45623,.8986278 +2.45623,.8986278 +2.326981,.8445715 +2.326981,.8445715 +2.326981,.8445715 +2.297764,.8319365 +2.297764,.8319365 +2.297764,.8319365 +2.433307,.8892512 +2.433307,.8892512 +2.433307,.8892512 +2.297764,.8319365 +2.297764,.8319365 +2.297764,.8319365 +2.297764,.8319365 +2.297764,.8319365 +2.297764,.8319365 +2.45623,.8986278 +2.45623,.8986278 +2.45623,.8986278 +2.45623,.8986278 +2.45623,.8986278 +2.45623,.8986278 +2.297764,.8319365 +2.297764,.8319365 +2.297764,.8319365 +2.987013,1.094274 +2.987013,1.094274 +2.987013,1.094274 +2.457133,.8989951 +2.457133,.8989951 +2.457133,.8989951 +4.318858,1.462991 +4.318858,1.462991 +4.318858,1.462991 +3.488122,1.249363 +3.488122,1.249363 +3.488122,1.249363 +3.123314,1.138895 +3.123314,1.138895 +3.123314,1.138895 +2.436079,.8903896 +2.436079,.8903896 +2.436079,.8903896 +4.318858,1.462991 +4.318858,1.462991 +4.318858,1.462991 +5.318552,1.671201 +5.318552,1.671201 +5.318552,1.671201 +2.17937,.779036 +2.17937,.779036 +2.17937,.779036 +2.456899,.8989002 +2.456899,.8989002 +2.456899,.8989002 +2.456899,.8989002 +2.456899,.8989002 +1.824436,.601271 +1.824436,.601271 +1.824436,.601271 +1.824436,.601271 +1.824436,.601271 +2.305891,.8354672 +2.305891,.8354672 +2.305891,.8354672 +2.305891,.8354672 +2.305891,.8354672 +3.169796,1.153667 +3.169796,1.153667 +3.169796,1.153667 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +7.526883,2.018481 +7.526883,2.018481 +7.526883,2.018481 +3.373455,1.215937 +3.373455,1.215937 +3.373455,1.215937 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.868814,.6253039 +1.868814,.6253039 +1.868814,.6253039 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.384231,.8688767 +2.384231,.8688767 +2.384231,.8688767 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.8246,.6013609 +1.8246,.6013609 +1.8246,.6013609 +1.8246,.6013609 +1.8246,.6013609 +1.605323,.4733249 +1.605323,.4733249 +1.605323,.4733249 +1.605323,.4733249 +1.605323,.4733249 +2.327824,.8449337 +2.327824,.8449337 +2.327824,.8449337 +2.327824,.8449337 +2.327824,.8449337 +2.327824,.8449337 +2.327824,.8449337 +2.327824,.8449337 +2.327824,.8449337 +2.327824,.8449337 +1.570005,.4510788 +1.570005,.4510788 +1.570005,.4510788 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +2.227046,.800676 +2.227046,.800676 +2.227046,.800676 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +3.240006,1.175575 +3.240006,1.175575 +3.240006,1.175575 +2.250786,.8112797 +2.250786,.8112797 +2.250786,.8112797 +1.786649,.5803419 +1.786649,.5803419 +1.786649,.5803419 +2.012016,.699137 +2.012016,.699137 +2.012016,.699137 +2.279406,.8239147 +2.279406,.8239147 +2.279406,.8239147 +2.27661,.8226877 +2.27661,.8226877 +2.27661,.8226877 +2.27661,.8226877 +2.27661,.8226877 +2.27661,.8226877 +3.240537,1.175739 +3.240537,1.175739 +3.240537,1.175739 +2.27661,.8226877 +2.27661,.8226877 +2.27661,.8226877 +2.850536,1.047507 +2.850536,1.047507 +2.850536,1.047507 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.507964,.9194711 +2.507964,.9194711 +2.507964,.9194711 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +3.702577,1.309029 +3.702577,1.309029 +3.702577,1.309029 +4.679659,1.543225 +4.679659,1.543225 +4.679659,1.543225 +3.281517,1.188306 +3.281517,1.188306 +3.281517,1.188306 +5.442378,1.694216 +5.442378,1.694216 +5.442378,1.694216 +2.327259,.8446912 +2.327259,.8446912 +2.327259,.8446912 +6.895844,1.930919 +6.895844,1.930919 +6.895844,1.930919 +6.895844,1.930919 +6.895844,1.930919 +7.240053,1.979629 +7.240053,1.979629 +7.240053,1.979629 +3.486502,1.248899 +3.486502,1.248899 +3.486502,1.248899 +3.486502,1.248899 +3.486502,1.248899 +2.145591,.763415 +2.145591,.763415 +2.145591,.763415 +2.145591,.763415 +2.145591,.763415 +2.145591,.763415 +2.152594,.7666734 +2.152594,.7666734 +2.152594,.7666734 +1.91798,.6512724 +1.91798,.6512724 +1.91798,.6512724 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +3.637608,1.291326 +3.637608,1.291326 +3.637608,1.291326 +2.564412,.9417292 +2.564412,.9417292 +2.564412,.9417292 +2.328423,.8451911 +2.328423,.8451911 +2.328423,.8451911 +2.178202,.7784997 +2.178202,.7784997 +2.178202,.7784997 +9.72356,2.274552 +9.72356,2.274552 +9.72356,2.274552 +9.72356,2.274552 +9.72356,2.274552 +2.009548,.69791 +2.009548,.69791 +2.009548,.69791 +1.762053,.5664798 +1.762053,.5664798 +1.762053,.5664798 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +8.067162,2.087802 +8.067162,2.087802 +8.067162,2.087802 +9.162507,2.21512 +9.162507,2.21512 +9.162507,2.21512 +8.7269,2.16641 +8.7269,2.16641 +8.7269,2.16641 +3.974887,1.379996 +3.974887,1.379996 +3.974887,1.379996 +2.209594,.7928087 +2.209594,.7928087 +2.209594,.7928087 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +1.993801,.6900427 +1.993801,.6900427 +1.993801,.6900427 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.237689,.8054437 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +2.792689,1.027005 +7.360821,1.996171 +3.995214,1.385097 +9.722332,2.274426 +1.901342,.6425597 +1.901342,.6425597 +1.901342,.6425597 +2.518467,.9236503 +2.518467,.9236503 +2.518467,.9236503 +2.518467,.9236503 +2.518467,.9236503 +2.518467,.9236503 +2.385942,.869594 +2.385942,.869594 +2.385942,.869594 +2.385942,.869594 +2.385942,.869594 +2.385942,.869594 +1.504354,.4083636 +1.504354,.4083636 +1.504354,.4083636 +2.351281,.8549602 +2.351281,.8549602 +2.351281,.8549602 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +2.386458,.8698102 +3.301709,1.19444 +3.301709,1.19444 +3.301709,1.19444 +3.301709,1.19444 +3.301709,1.19444 +4.173006,1.428637 +4.173006,1.428637 +4.173006,1.428637 +4.173006,1.428637 +4.173006,1.428637 +2.411275,.8801556 +2.70623,.9955567 +2.70623,.9955567 +2.70623,.9955567 +3.452606,1.239129 +3.452606,1.239129 +3.452606,1.239129 +3.452606,1.239129 +3.452606,1.239129 +3.452606,1.239129 +2.381,.8675206 +2.381,.8675206 +2.381,.8675206 +3.803467,1.335913 +3.803467,1.335913 +3.803467,1.335913 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.564412,.9417292 +2.564412,.9417292 +2.564412,.9417292 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.02898,.7075331 +2.02898,.7075331 +2.02898,.7075331 +3.052995,1.116123 +3.052995,1.116123 +3.052995,1.116123 +3.66354,1.29843 +3.66354,1.29843 +4.63032,1.532626 +4.63032,1.532626 +4.63032,1.532626 +2.909496,1.06798 +2.909496,1.06798 +2.909496,1.06798 +5.233956,1.655167 +5.233956,1.655167 +5.233956,1.655167 +4.798959,1.568399 +4.798959,1.568399 +4.798959,1.568399 +1.984317,.685275 +1.984317,.685275 +1.984317,.685275 +4.282577,1.454555 +4.282577,1.454555 +4.282577,1.454555 +2.121167,.7519663 +2.121167,.7519663 +2.121167,.7519663 +2.909581,1.068009 +2.909581,1.068009 +2.909581,1.068009 +2.704659,.994976 +2.704659,.994976 +2.704659,.994976 +3.849593,1.347967 +3.849593,1.347967 +3.849593,1.347967 +3.450603,1.238549 +3.450603,1.238549 +3.450603,1.238549 +2.028921,.7075039 +2.028921,.7075039 +2.028921,.7075039 +4.37884,1.476784 +4.37884,1.476784 +4.37884,1.476784 +1.925913,.6554002 +1.925913,.6554002 +1.925913,.6554002 +2.272973,.8210886 +2.272973,.8210886 +2.272973,.8210886 +2.272973,.8210886 +2.272973,.8210886 +3.992084,1.384313 +3.992084,1.384313 +3.992084,1.384313 +3.992084,1.384313 +3.992084,1.384313 +2.407053,.8784032 +2.407053,.8784032 +2.407053,.8784032 +2.407053,.8784032 +2.407053,.8784032 +2.407053,.8784032 +2.407053,.8784032 +2.407053,.8784032 +2.407053,.8784032 +2.407053,.8784032 +4.398483,1.48126 +4.398483,1.48126 +4.398483,1.48126 +5.425955,1.691194 +5.425955,1.691194 +5.425955,1.691194 +1.864676,.6230876 +1.864676,.6230876 +1.766555,.5690312 +1.766555,.5690312 +1.766555,.5690312 +1.766555,.5690312 +1.766555,.5690312 +2.253769,.8126041 +2.253769,.8126041 +1.343251,.295093 +1.343251,.295093 +1.343251,.295093 +1.343251,.295093 +1.343251,.295093 +4.369625,1.474677 +4.369625,1.474677 +4.369625,1.474677 +3.489846,1.249858 +3.489846,1.249858 +3.489846,1.249858 +4.369625,1.474677 +4.369625,1.474677 +4.369625,1.474677 +3.489846,1.249858 +3.489846,1.249858 +3.489846,1.249858 +7.173988,1.970462 +7.173988,1.970462 +7.173988,1.970462 +3.454688,1.239732 +3.454688,1.239732 +3.454688,1.239732 +14.48408,2.67305 +14.48408,2.67305 +14.48408,2.67305 +1.409191,.3430159 +1.409191,.3430159 +1.409191,.3430159 +1.342195,.2943062 +1.409191,.3430159 +1.409191,.3430159 +1.409191,.3430159 +1.423334,.3530019 +1.423334,.3530019 +1.423334,.3530019 +3.241141,1.175925 +3.241141,1.175925 +3.241141,1.175925 +2.8781,1.05713 +2.8781,1.05713 +2.8781,1.05713 +2.23041,.8021854 +2.23041,.8021854 +2.237689,.8054437 +2.237689,.8054437 +1.770474,.5712476 +1.770474,.5712476 +4.025428,1.392631 +4.025428,1.392631 +3.680318,1.302999 +3.680318,1.302999 +3.680318,1.302999 +2.710677,.9971984 +2.710677,.9971984 +2.710677,.9971984 +1.781607,.5775157 +1.781607,.5775157 +1.781607,.5775157 +2.272973,.8210886 +2.272973,.8210886 +2.272973,.8210886 +2.006337,.6963109 +2.006337,.6963109 +2.006337,.6963109 +2.429729,.8877799 +2.429729,.8877799 +2.429729,.8877799 +2.272973,.8210886 +2.272973,.8210886 +1.781607,.5775157 +1.781607,.5775157 +1.781607,.5775157 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +3.365051,1.213443 +3.365051,1.213443 +3.365051,1.213443 +2.8781,1.05713 +2.8781,1.05713 +2.8781,1.05713 +1.557252,.4429225 +1.557252,.4429225 +1.557252,.4429225 +1.557252,.4429225 +1.557252,.4429225 +1.769963,.5709586 +1.769963,.5709586 +1.769963,.5709586 +1.769963,.5709586 +1.769963,.5709586 +2.312187,.8381938 +2.312187,.8381938 +2.312187,.8381938 +6.841091,1.922947 +6.841091,1.922947 +6.841091,1.922947 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +2.48831,.9116039 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +3.144956,1.1458 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +4.222634,1.440459 +4.222634,1.440459 +4.222634,1.440459 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +3.883495,1.356736 +3.883495,1.356736 +3.883495,1.356736 +3.883495,1.356736 +3.883495,1.356736 +3.493269,1.250838 +3.493269,1.250838 +3.493269,1.250838 +3.493269,1.250838 +3.493269,1.250838 +8.198266,2.103923 +8.198266,2.103923 +8.198266,2.103923 +3.550303,1.267033 +3.550303,1.267033 +3.550303,1.267033 +3.505727,1.254398 +3.505727,1.254398 +3.505727,1.254398 +3.517168,1.257656 +3.517168,1.257656 +3.517168,1.257656 +4.600255,1.526112 +4.600255,1.526112 +4.600255,1.526112 +3.177549,1.15611 +3.177549,1.15611 +5.82393,1.761975 +5.82393,1.761975 +2.579119,.9474477 +2.579119,.9474477 +2.579119,.9474477 +2.205898,.7911348 +2.205898,.7911348 +2.205898,.7911348 +2.178202,.7784997 +2.178202,.7784997 +2.178202,.7784997 +3.404866,1.225206 +3.404866,1.225206 +3.404866,1.225206 +3.404866,1.225206 +3.404866,1.225206 +3.608499,1.283292 +3.608499,1.283292 +3.608499,1.283292 +3.608499,1.283292 +3.608499,1.283292 +3.821361,1.340607 +3.821361,1.340607 +3.821361,1.340607 +3.821361,1.340607 +3.821361,1.340607 +2.615532,.9614677 +2.615532,.9614677 +2.615532,.9614677 +2.449463,.8958688 +2.449463,.8958688 +2.449463,.8958688 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +2.319593,.8413916 +2.319593,.8413916 +2.319593,.8413916 +1.557702,.4432115 +1.557702,.4432115 +1.557702,.4432115 +5.102506,1.629732 +5.102506,1.629732 +5.102506,1.629732 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +3.102358,1.132162 +3.102358,1.132162 +3.102358,1.132162 +3.102358,1.132162 +3.55934,1.269575 +3.55934,1.269575 +3.55934,1.269575 +3.55934,1.269575 +3.55934,1.269575 +3.55934,1.269575 +3.55934,1.269575 +3.55934,1.269575 +3.55934,1.269575 +2.006337,.6963109 +2.006337,.6963109 +2.006337,.6963109 +1.80426,.5901508 +1.80426,.5901508 +1.80426,.5901508 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +3.664599,1.298719 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.993225,.6897537 +1.993225,.6897537 +1.993225,.6897537 +2.208955,.7925197 +2.208955,.7925197 +2.208955,.7925197 +2.612334,.9602442 +2.612334,.9602442 +2.612334,.9602442 +3.253477,1.179724 +3.253477,1.179724 +3.253477,1.179724 +1.80857,.5925366 +1.80857,.5925366 +1.80857,.5925366 +2.307373,.8361095 +2.307373,.8361095 +2.307373,.8361095 +4.492963,1.502512 +4.492963,1.502512 +4.492963,1.502512 +3.223003,1.170314 +3.223003,1.170314 +3.223003,1.170314 +3.223003,1.170314 +3.223003,1.170314 +2.297699,.8319083 +2.297699,.8319083 +2.297699,.8319083 +2.297699,.8319083 +2.297699,.8319083 +3.223003,1.170314 +3.223003,1.170314 +3.223003,1.170314 +3.223003,1.170314 +3.223003,1.170314 +2.832846,1.041282 +2.832846,1.041282 +2.832846,1.041282 +2.832846,1.041282 +2.832846,1.041282 +3.239837,1.175523 +3.239837,1.175523 +3.239837,1.175523 +3.239837,1.175523 +3.239837,1.175523 +3.053405,1.116257 +3.053405,1.116257 +3.053405,1.116257 +3.053405,1.116257 +3.053405,1.116257 +1.287044,.2523482 +1.287044,.2523482 +1.287044,.2523482 +2.420931,.8841521 +2.420931,.8841521 +2.420931,.8841521 +1.801713,.5887379 +1.801713,.5887379 +1.801713,.5887379 +2.420931,.8841521 +2.420931,.8841521 +2.420931,.8841521 +4.834005,1.575675 +4.834005,1.575675 +4.834005,1.575675 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.386458,.8698102 +2.386458,.8698102 +2.386458,.8698102 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +3.016226,1.104006 +3.016226,1.104006 +3.016226,1.104006 +1.796091,.5856124 +1.796091,.5856124 +1.796091,.5856124 +1.796091,.5856124 +1.796091,.5856124 +2.022648,.7044076 +2.022648,.7044076 +2.022648,.7044076 +2.022648,.7044076 +2.022648,.7044076 +2.724462,1.002271 +2.724462,1.002271 +2.724462,1.002271 +2.724462,1.002271 +2.724462,1.002271 +2.724462,1.002271 +3.475866,1.245844 +3.475866,1.245844 +3.475866,1.245844 +3.443426,1.236467 +3.443426,1.236467 +3.443426,1.236467 +2.434218,.8896254 +2.434218,.8896254 +2.434218,.8896254 +2.434218,.8896254 +2.434218,.8896254 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.298624,.8323107 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.054779,.7201681 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.008228,.6972525 +2.008228,.6972525 +2.008228,.6972525 +1.589968,.4637138 +1.589968,.4637138 +1.589968,.4637138 +4.553515,1.5159 +4.553515,1.5159 +4.553515,1.5159 +2.27661,.8226877 +2.27661,.8226877 +2.27661,.8226877 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.27661,.8226877 +2.27661,.8226877 +2.27661,.8226877 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.053969,.7197739 +2.053969,.7197739 +2.053969,.7197739 +2.595996,.9539701 +2.595996,.9539701 +2.595996,.9539701 +1.823903,.6009788 +1.823903,.6009788 +2.326934,.8445516 +2.326934,.8445516 +2.326934,.8445516 +1.823903,.6009788 +1.823903,.6009788 +1.823903,.6009788 +1.823903,.6009788 +1.823903,.6009788 +2.326934,.8445516 +2.326934,.8445516 +2.326934,.8445516 +2.326934,.8445516 +2.326934,.8445516 +2.326934,.8445516 +1.817984,.597728 +1.817984,.597728 +1.817984,.597728 +2.904091,1.06612 +2.904091,1.06612 +2.904091,1.06612 +1.817984,.597728 +1.817984,.597728 +1.817984,.597728 +3.015115,1.103638 +3.015115,1.103638 +3.015115,1.103638 +3.517121,1.257643 +3.517121,1.257643 +3.517121,1.257643 +3.595397,1.279655 +3.595397,1.279655 +3.595397,1.279655 +4.01113,1.389073 +4.01113,1.389073 +4.01113,1.389073 +4.286445,1.455458 +4.286445,1.455458 +4.286445,1.455458 +4.810778,1.570859 +4.810778,1.570859 +4.810778,1.570859 +2.722772,1.00165 +2.722772,1.00165 +2.722772,1.00165 +3.06622,1.120446 +3.06622,1.120446 +3.06622,1.120446 +3.612607,1.28443 +3.612607,1.28443 +3.612607,1.28443 +3.612607,1.28443 +3.612607,1.28443 +3.612607,1.28443 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +2.248026,.8100526 +3.693543,1.306586 +3.693543,1.306586 +3.693543,1.306586 +2.367641,.861894 +1.784458,.5791149 +2.367641,.861894 +2.507964,.9194711 +3.602771,1.281703 +3.621956,1.287014 +3.621956,1.287014 +3.621956,1.287014 +3.656078,1.296391 +3.656078,1.296391 +3.656078,1.296391 +3.227195,1.171613 +3.227195,1.171613 +3.227195,1.171613 +3.656078,1.296391 +3.656078,1.296391 +3.656078,1.296391 +3.656078,1.296391 +3.656078,1.296391 +3.656078,1.296391 +4.475643,1.49865 +4.475643,1.49865 +4.475643,1.49865 +2.119749,.7512976 +2.119749,.7512976 +4.443329,1.491404 +4.443329,1.491404 +4.443329,1.491404 +3.168346,1.15321 +3.168346,1.15321 +3.168346,1.15321 +2.327113,.8446285 +2.327113,.8446285 +2.327113,.8446285 +2.327113,.8446285 +2.327113,.8446285 +2.297895,.8319934 +2.297895,.8319934 +2.297895,.8319934 +2.297895,.8319934 +2.297895,.8319934 +2.877187,1.056813 +2.877187,1.056813 +2.877187,1.056813 +2.877187,1.056813 +2.877187,1.056813 +3.636454,1.291009 +3.636454,1.291009 +3.636454,1.291009 +3.636454,1.291009 +3.636454,1.291009 +4.833594,1.57559 +4.833594,1.57559 +4.833594,1.57559 +4.833594,1.57559 +1.824467,.6012879 +1.824467,.6012879 +1.824467,.6012879 +1.824467,.6012879 +1.824467,.6012879 +2.596798,.9542792 +2.596798,.9542792 +2.596798,.9542792 +2.596798,.9542792 +2.596798,.9542792 +2.054604,.7200831 +2.054604,.7200831 +2.054604,.7200831 +2.054604,.7200831 +2.054604,.7200831 +3.585315,1.276846 +3.585315,1.276846 +3.585315,1.276846 +3.585315,1.276846 +3.585315,1.276846 +3.585315,1.276846 +3.585315,1.276846 +3.585315,1.276846 +3.585315,1.276846 +3.585315,1.276846 +2.503957,.9178724 +2.503957,.9178724 +2.503957,.9178724 +2.503957,.9178724 +2.503957,.9178724 +4.660783,1.539183 +4.660783,1.539183 +4.660783,1.539183 +4.660783,1.539183 +4.660783,1.539183 +3.403241,1.224728 +3.403241,1.224728 +3.403241,1.224728 +3.022043,1.105933 +3.022043,1.105933 +3.022043,1.105933 +3.022043,1.105933 +3.022043,1.105933 +3.022043,1.105933 +3.85552,1.349506 +3.85552,1.349506 +3.85552,1.349506 +3.85552,1.349506 +3.85552,1.349506 +3.85552,1.349506 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +1.770474,.5712476 +2.828198,1.03964 +2.828198,1.03964 +2.828198,1.03964 +2.828198,1.03964 +2.828198,1.03964 +2.363858,.8602948 +2.363858,.8602948 +2.363858,.8602948 +1.587427,.4621147 +1.587427,.4621147 +1.587427,.4621147 +2.710677,.9971984 +2.710677,.9971984 +2.710677,.9971984 +2.393914,.8729299 +2.393914,.8729299 +2.393914,.8729299 +1.587427,.4621147 +1.587427,.4621147 +1.587427,.4621147 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +1.968767,.6774077 +4.631659,1.532915 +4.631659,1.532915 +4.631659,1.532915 +4.631659,1.532915 +4.631659,1.532915 +3.529658,1.261201 +3.529658,1.261201 +3.529658,1.261201 +3.529658,1.261201 +3.529658,1.261201 +2.306126,.8355691 +2.306126,.8355691 +2.306126,.8355691 +2.208955,.7925197 +2.208955,.7925197 +2.208955,.7925197 +5.852227,1.766822 +5.852227,1.766822 +5.852227,1.766822 +2.612334,.9602442 +2.612334,.9602442 +2.612334,.9602442 +4.817786,1.572314 +4.817786,1.572314 +4.817786,1.572314 +4.318447,1.462896 +4.318447,1.462896 +4.318447,1.462896 +2.612334,.9602442 +2.612334,.9602442 +2.612334,.9602442 +2.386458,.8698102 +2.386458,.8698102 +2.386458,.8698102 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.546065,.934549 +2.546065,.934549 +2.546065,.934549 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +3.957927,1.37572 +3.957927,1.37572 +3.957927,1.37572 +2.739239,1.00768 +2.739239,1.00768 +2.739239,1.00768 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.966752,1.087468 +2.966752,1.087468 +2.966752,1.087468 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +3.177549,1.15611 +3.177549,1.15611 +3.177549,1.15611 +3.702577,1.309029 +3.702577,1.309029 +3.702577,1.309029 +3.044641,1.113383 +3.044641,1.113383 +3.044641,1.113383 +3.737458,1.318406 +3.737458,1.318406 +3.737458,1.318406 +3.299028,1.193628 +3.299028,1.193628 +3.299028,1.193628 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.258117,.8145314 +2.258117,.8145314 +2.582693,.9488327 +2.582693,.9488327 +2.582693,.9488327 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +3.737458,1.318406 +3.737458,1.318406 +3.737458,1.318406 +3.737458,1.318406 +3.737458,1.318406 +3.737458,1.318406 +2.232493,.8031189 +2.232493,.8031189 +2.232493,.8031189 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +2.821631,1.037315 +1.989171,.6877179 +1.989171,.6877179 +1.989171,.6877179 +4.457616,1.494614 +4.457616,1.494614 +4.457616,1.494614 +4.457616,1.494614 +4.457616,1.494614 +4.847211,1.578403 +4.847211,1.578403 +4.847211,1.578403 +4.847211,1.578403 +4.847211,1.578403 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +2.694509,.991216 +2.694509,.991216 +2.694509,.991216 +2.694509,.991216 +2.694509,.991216 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +3.437652,1.234789 +2.23041,.8021854 +2.23041,.8021854 +2.23041,.8021854 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +1.748245,.5586125 +3.034428,1.110023 +3.034428,1.110023 +3.034428,1.110023 +5.440202,1.693816 +5.440202,1.693816 +5.440202,1.693816 +3.437693,1.234801 +3.437693,1.234801 +3.437693,1.234801 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +1.577508,.4558465 +2.936322,1.077158 +2.936322,1.077158 +2.936322,1.077158 +2.936322,1.077158 +2.936322,1.077158 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.899455,1.064523 +2.899455,1.064523 +2.899455,1.064523 +2.899455,1.064523 +2.899455,1.064523 +2.420931,.8841521 +2.420931,.8841521 +2.420931,.8841521 +3.634455,1.290459 +3.634455,1.290459 +3.634455,1.290459 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +2.848213,1.046692 +3.740507,1.319221 +3.740507,1.319221 +3.740507,1.319221 +3.226768,1.171481 +3.226768,1.171481 +3.226768,1.171481 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +2.26088,.8157539 +1.626685,.4865444 +1.626685,.4865444 +1.626685,.4865444 +1.626685,.4865444 +1.626685,.4865444 +1.287044,.2523482 +1.287044,.2523482 +1.287044,.2523482 +1.287044,.2523482 +1.287044,.2523482 +1.842866,.611322 +1.842866,.611322 +1.842866,.611322 +1.842866,.611322 +1.842866,.611322 +2.699999,.9932514 +2.699999,.9932514 +2.699999,.9932514 +2.327614,.8448438 +2.327614,.8448438 +2.327614,.8448438 +2.327614,.8448438 +2.327614,.8448438 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +3.053405,1.116257 +3.053405,1.116257 +3.053405,1.116257 +3.053405,1.116257 +3.053405,1.116257 +3.45643,1.240236 +3.45643,1.240236 +3.45643,1.240236 +2.857508,1.04995 +2.857508,1.04995 +2.857508,1.04995 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +3.401057,1.224086 +3.401057,1.224086 +3.401057,1.224086 +2.711028,.9973279 +2.711028,.9973279 +2.711028,.9973279 +2.301874,.8337236 +2.301874,.8337236 +2.301874,.8337236 +7.793903,2.053342 +7.793903,2.053342 +7.793903,2.053342 +3.332814,1.203817 +3.332814,1.203817 +3.332814,1.203817 +3.332814,1.203817 +3.332814,1.203817 +3.332814,1.203817 +4.760249,1.5603 +4.760249,1.5603 +4.760249,1.5603 +3.344471,1.207309 +3.344471,1.207309 +3.344471,1.207309 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.597019,.9543642 +2.597019,.9543642 +2.597019,.9543642 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +1.625754,.4859719 +1.625754,.4859719 +1.625754,.4859719 +3.683861,1.303961 +3.683861,1.303961 +3.683861,1.303961 +2.306126,.8355691 +2.306126,.8355691 +2.306126,.8355691 +2.347417,.8533158 +2.347417,.8533158 +2.347417,.8533158 +3.05156,1.115653 +3.05156,1.115653 +3.05156,1.115653 +1.816857,.5971079 +1.816857,.5971079 +1.816857,.5971079 +2.296311,.8313041 +2.296311,.8313041 +2.296311,.8313041 +2.347417,.8533158 +2.347417,.8533158 +2.347417,.8533158 +2.347417,.8533158 +2.347417,.8533158 +2.347417,.8533158 +1.517518,.4170763 +1.517518,.4170763 +1.517518,.4170763 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.936322,1.077158 +2.936322,1.077158 +2.936322,1.077158 +2.936322,1.077158 +2.936322,1.077158 +1.820705,.5992238 +1.820705,.5992238 +1.820705,.5992238 +1.820705,.5992238 +1.820705,.5992238 +1.820705,.5992238 +2.301874,.8337236 +2.301874,.8337236 +2.301874,.8337236 +2.301874,.8337236 +2.301874,.8337236 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +1.669348,.5124334 +1.669348,.5124334 +1.669348,.5124334 +1.669348,.5124334 +1.669348,.5124334 +3.713801,1.312056 +3.713801,1.312056 +3.713801,1.312056 +3.713801,1.312056 +3.713801,1.312056 +5.236591,1.655671 +5.236591,1.655671 +5.236591,1.655671 +5.236591,1.655671 +5.236591,1.655671 +2.259755,.8152564 +2.259755,.8152564 +2.259755,.8152564 +3.217952,1.168745 +3.217952,1.168745 +3.217952,1.168745 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.327784,.8449166 +2.327784,.8449166 +2.327784,.8449166 +1.989387,.6878264 +1.989387,.6878264 +1.989387,.6878264 +1.989387,.6878264 +1.989387,.6878264 +3.466077,1.243023 +3.466077,1.243023 +3.466077,1.243023 +3.466077,1.243023 +2.171847,.7755781 +2.171847,.7755781 +2.171847,.7755781 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +4.222634,1.440459 +4.222634,1.440459 +4.222634,1.440459 +2.393421,.8727238 +2.393421,.8727238 +2.393421,.8727238 +2.393421,.8727238 +2.172873,.7760501 +2.172873,.7760501 +2.172873,.7760501 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.367306,.8617525 +2.367306,.8617525 +2.367306,.8617525 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.539853,.9321062 +2.539853,.9321062 +2.539853,.9321062 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.349087,.8540267 +2.349087,.8540267 +2.349087,.8540267 +3.466077,1.243023 +3.466077,1.243023 +3.466077,1.243023 +3.466077,1.243023 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.349087,.8540267 +2.349087,.8540267 +2.349087,.8540267 +2.349087,.8540267 +1.975837,.6809924 +1.975837,.6809924 +1.975837,.6809924 +3.713801,1.312056 +3.713801,1.312056 +3.713801,1.312056 +3.713801,1.312056 +3.713801,1.312056 +3.713801,1.312056 +3.713801,1.312056 +3.713801,1.312056 +2.361209,.8591737 +2.361209,.8591737 +2.361209,.8591737 +1.916553,.6505283 +1.916553,.6505283 +1.916553,.6505283 +2.349087,.8540267 +2.349087,.8540267 +2.349087,.8540267 +2.362543,.8597387 +2.362543,.8597387 +2.362543,.8597387 +2.362543,.8597387 +2.362543,.8597387 +2.362543,.8597387 +2.362543,.8597387 +2.362543,.8597387 +2.362543,.8597387 +2.362543,.8597387 +2.362543,.8597387 +2.362543,.8597387 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.336711,.8487445 +2.336711,.8487445 +2.336711,.8487445 +4.558243,1.516937 +4.558243,1.516937 +4.558243,1.516937 +2.963984,1.086534 +2.963984,1.086534 +2.963984,1.086534 +4.179322,1.430149 +4.179322,1.430149 +4.179322,1.430149 +1.624191,.4850096 +1.624191,.4850096 +1.624191,.4850096 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +3.401057,1.224086 +3.401057,1.224086 +3.401057,1.224086 +3.537049,1.263293 +3.537049,1.263293 +3.537049,1.263293 +2.014463,.7003528 +2.014463,.7003528 +2.014463,.7003528 +3.539155,1.263888 +3.539155,1.263888 +3.539155,1.263888 +5.280687,1.664056 +5.280687,1.664056 +5.280687,1.664056 +2.348408,.8537377 +2.348408,.8537377 +2.348408,.8537377 +2.258117,.8145314 +2.258117,.8145314 +2.258117,.8145314 +2.301874,.8337236 +2.301874,.8337236 +2.301874,.8337236 +3.45643,1.240236 +3.45643,1.240236 +3.45643,1.240236 +2.25877,.8148203 +2.25877,.8148203 +2.25877,.8148203 +2.393421,.8727238 +2.393421,.8727238 +2.393421,.8727238 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.365742,.8610917 +2.365742,.8610917 +2.365742,.8610917 +3.713801,1.312056 +3.713801,1.312056 +3.713801,1.312056 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.884428,1.059327 +2.884428,1.059327 +2.884428,1.059327 +2.828198,1.03964 +2.828198,1.03964 +2.828198,1.03964 +2.963984,1.086534 +2.963984,1.086534 +2.963984,1.086534 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.27661,.8226877 +2.27661,.8226877 +2.27661,.8226877 +2.317105,.8403186 +2.317105,.8403186 +2.317105,.8403186 +3.583383,1.276307 +3.583383,1.276307 +3.583383,1.276307 +2.327784,.8449166 +2.327784,.8449166 +2.327784,.8449166 +1.287044,.2523482 +1.287044,.2523482 +3.500165,1.25281 +3.500165,1.25281 +3.500165,1.25281 +1.784458,.5791149 +1.784458,.5791149 +1.784458,.5791149 +2.367641,.861894 +2.367641,.861894 +2.367641,.861894 +2.27661,.8226877 +2.27661,.8226877 +2.27661,.8226877 +1.626685,.4865444 +1.626685,.4865444 +1.626685,.4865444 +2.275114,.8220302 +2.275114,.8220302 +2.275114,.8220302 +3.600403,1.281046 +3.600403,1.281046 +3.600403,1.281046 +2.327852,.8449457 +2.327852,.8449457 +2.327852,.8449457 +2.226679,.8005114 +2.226679,.8005114 +2.226679,.8005114 +3.611583,1.284146 +3.611583,1.284146 +3.611583,1.284146 +2.336711,.8487445 +2.336711,.8487445 +2.336711,.8487445 +2.367641,.861894 +2.367641,.861894 +2.367641,.861894 +2.368106,.8620905 +2.368106,.8620905 +2.368106,.8620905 +2.349087,.8540267 +2.349087,.8540267 +2.999762,1.098533 +2.999762,1.098533 +2.363401,.8601019 +2.363401,.8601019 +1.873465,.6277897 +1.873465,.6277897 +2.999762,1.098533 +2.349087,.8540267 +2.349087,.8540267 +2.367641,.861894 +2.367641,.861894 +2.367641,.861894 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.999762,1.098533 +2.348408,.8537377 +2.348408,.8537377 +2.367641,.861894 +2.367641,.861894 +2.367641,.861894 +2.259755,.8152564 +2.259755,.8152564 +2.259755,.8152564 +2.349087,.8540267 +2.349087,.8540267 +2.315713,.8397177 +2.315713,.8397177 +3.466077,1.243023 +3.466077,1.243023 +2.999762,1.098533 +2.999762,1.098533 +1.916553,.6505283 +1.916553,.6505283 +2.367641,.861894 +2.367641,.861894 +2.349087,.8540267 +2.349087,.8540267 +2.349087,.8540267 +2.361209,.8591737 +2.361209,.8591737 +2.349087,.8540267 +2.349087,.8540267 +3.620565,1.28663 +3.620565,1.28663 +2.259755,.8152564 +2.259755,.8152564 +3.742002,1.319621 +3.742002,1.319621 +3.61163,1.284159 +3.713801,1.312056 +3.713801,1.312056 +3.582391,1.276031 +2.418602,.8831897 +2.362543,.8597387 +3.537049,1.263293 +2.420931,.8841521 +2.420931,.8841521 +2.348408,.8537377 +2.999762,1.098533 +3.594636,1.279443 +2.999762,1.098533 +2.999762,1.098533 +2.441279,.892522 +2.441279,.892522 +1.890963,.6370863 +2.349087,.8540267 +2.420684,.8840501 +2.420736,.8840716 +2.362543,.8597387 +2.420314,.8838974 +3.626638,1.288306 +3.626638,1.288306 +2.442793,.8931421 +2.418406,.8831087 +2.420931,.8841521 diff --git a/statsmodels/discrete/tests/test_conditional.py b/statsmodels/discrete/tests/test_conditional.py new file mode 100644 index 0000000..18f4ce4 --- /dev/null +++ b/statsmodels/discrete/tests/test_conditional.py @@ -0,0 +1,324 @@ +import numpy as np +from statsmodels.discrete.conditional_models import ( + ConditionalLogit, ConditionalPoisson, ConditionalMNLogit) +from statsmodels.tools.numdiff import approx_fprime +from numpy.testing import assert_allclose +import pandas as pd + + +def test_logit_1d(): + + y = np.r_[0, 1, 0, 1, 0, 1, 0, 1, 1, 1] + g = np.r_[0, 0, 0, 1, 1, 1, 2, 2, 2, 2] + + x = np.r_[0, 1, 0, 0, 1, 1, 0, 0, 1, 0] + x = x[:, None] + + model = ConditionalLogit(y, x, groups=g) + + # Check the gradient for the denominator of the partial likelihood + for x in -1, 0, 1, 2: + params = np.r_[x, ] + _, grad = model._denom_grad(0, params) + ngrad = approx_fprime(params, lambda x: model._denom(0, x)) + assert_allclose(grad, ngrad) + + # Check the gradient for the loglikelihood + for x in -1, 0, 1, 2: + grad = approx_fprime(np.r_[x, ], model.loglike) + score = model.score(np.r_[x, ]) + assert_allclose(grad, score, rtol=1e-4) + + result = model.fit() + + # From Stata + assert_allclose(result.params, np.r_[0.9272407], rtol=1e-5) + assert_allclose(result.bse, np.r_[1.295155], rtol=1e-5) + + +def test_logit_2d(): + + y = np.r_[0, 1, 0, 1, 0, 1, 0, 1, 1, 1] + g = np.r_[0, 0, 0, 1, 1, 1, 2, 2, 2, 2] + + x1 = np.r_[0, 1, 0, 0, 1, 1, 0, 0, 1, 0] + x2 = np.r_[0, 0, 1, 0, 0, 1, 0, 1, 1, 1] + x = np.empty((10, 2)) + x[:, 0] = x1 + x[:, 1] = x2 + + model = ConditionalLogit(y, x, groups=g) + + # Check the gradient for the denominator of the partial likelihood + for x in -1, 0, 1, 2: + params = np.r_[x, -1.5*x] + _, grad = model._denom_grad(0, params) + ngrad = approx_fprime(params, lambda x: model._denom(0, x)) + assert_allclose(grad, ngrad, rtol=1e-5) + + # Check the gradient for the loglikelihood + for x in -1, 0, 1, 2: + params = np.r_[-0.5*x, 0.5*x] + grad = approx_fprime(params, model.loglike) + score = model.score(params) + assert_allclose(grad, score, rtol=1e-4) + + result = model.fit() + + # From Stata + assert_allclose(result.params, np.r_[1.011074, 1.236758], rtol=1e-3) + assert_allclose(result.bse, np.r_[1.420784, 1.361738], rtol=1e-5) + + result.summary() + + +def test_formula(): + + for j in 0, 1: + + np.random.seed(34234) + n = 200 + y = np.random.randint(0, 2, size=n) + x1 = np.random.normal(size=n) + x2 = np.random.normal(size=n) + g = np.random.randint(0, 25, size=n) + + x = np.hstack((x1[:, None], x2[:, None])) + if j == 0: + model1 = ConditionalLogit(y, x, groups=g) + else: + model1 = ConditionalPoisson(y, x, groups=g) + result1 = model1.fit() + + df = pd.DataFrame({"y": y, "x1": x1, "x2": x2, "g": g}) + if j == 0: + model2 = ConditionalLogit.from_formula( + "y ~ 0 + x1 + x2", groups="g", data=df) + else: + model2 = ConditionalPoisson.from_formula( + "y ~ 0 + x1 + x2", groups="g", data=df) + result2 = model2.fit() + + assert_allclose(result1.params, result2.params, rtol=1e-5) + assert_allclose(result1.bse, result2.bse, rtol=1e-5) + assert_allclose(result1.cov_params(), result2.cov_params(), rtol=1e-5) + assert_allclose(result1.tvalues, result2.tvalues, rtol=1e-5) + + +def test_poisson_1d(): + + y = np.r_[3, 1, 1, 4, 5, 2, 0, 1, 6, 2] + g = np.r_[0, 0, 0, 0, 1, 1, 1, 1, 1, 1] + + x = np.r_[0, 1, 0, 0, 1, 1, 0, 0, 1, 0] + x = x[:, None] + + model = ConditionalPoisson(y, x, groups=g) + + # Check the gradient for the loglikelihood + for x in -1, 0, 1, 2: + grad = approx_fprime(np.r_[x, ], model.loglike) + score = model.score(np.r_[x, ]) + assert_allclose(grad, score, rtol=1e-4) + + result = model.fit() + + # From Stata + assert_allclose(result.params, np.r_[0.6466272], rtol=1e-4) + assert_allclose(result.bse, np.r_[0.4170918], rtol=1e-5) + + +def test_poisson_2d(): + + y = np.r_[3, 1, 4, 8, 2, 5, 4, 7, 2, 6] + g = np.r_[0, 0, 0, 1, 1, 1, 2, 2, 2, 2] + + x1 = np.r_[0, 1, 0, 0, 1, 1, 0, 0, 1, 0] + x2 = np.r_[2, 1, 0, 0, 1, 2, 3, 2, 0, 1] + x = np.empty((10, 2)) + x[:, 0] = x1 + x[:, 1] = x2 + + model = ConditionalPoisson(y, x, groups=g) + + # Check the gradient for the loglikelihood + for x in -1, 0, 1, 2: + params = np.r_[-0.5*x, 0.5*x] + grad = approx_fprime(params, model.loglike) + score = model.score(params) + assert_allclose(grad, score, rtol=1e-4) + + result = model.fit() + + # From Stata + assert_allclose(result.params, np.r_[-.9478957, -.0134279], rtol=1e-3) + assert_allclose(result.bse, np.r_[.3874942, .1686712], rtol=1e-5) + + result.summary() + + +def test_lasso_logistic(): + + np.random.seed(3423948) + + n = 200 + groups = np.arange(10) + groups = np.kron(groups, np.ones(n // 10)) + group_effects = np.random.normal(size=10) + group_effects = np.kron(group_effects, np.ones(n // 10)) + + x = np.random.normal(size=(n, 4)) + params = np.r_[0, 0, 1, 0] + lin_pred = np.dot(x, params) + group_effects + + mean = 1 / (1 + np.exp(-lin_pred)) + y = (np.random.uniform(size=n) < mean).astype(np.int) + + model0 = ConditionalLogit(y, x, groups=groups) + result0 = model0.fit() + + # Should be the same as model0 + model1 = ConditionalLogit(y, x, groups=groups) + result1 = model1.fit_regularized(L1_wt=0, alpha=0) + + assert_allclose(result0.params, result1.params, rtol=1e-3) + + model2 = ConditionalLogit(y, x, groups=groups) + result2 = model2.fit_regularized(L1_wt=1, alpha=0.05) + + # Rxegression test + assert_allclose(result2.params, np.r_[0, 0, 0.55235152, 0], rtol=1e-4) + + # Test with formula + df = pd.DataFrame({"y": y, "x1": x[:, 0], "x2": x[:, 1], "x3": x[:, 2], + "x4": x[:, 3], "groups": groups}) + fml = "y ~ 0 + x1 + x2 + x3 + x4" + model3 = ConditionalLogit.from_formula(fml, groups="groups", data=df) + result3 = model3.fit_regularized(L1_wt=1, alpha=0.05) + assert_allclose(result2.params, result3.params) + + +def test_lasso_poisson(): + + np.random.seed(342394) + + n = 200 + groups = np.arange(10) + groups = np.kron(groups, np.ones(n // 10)) + group_effects = np.random.normal(size=10) + group_effects = np.kron(group_effects, np.ones(n // 10)) + + x = np.random.normal(size=(n, 4)) + params = np.r_[0, 0, 1, 0] + lin_pred = np.dot(x, params) + group_effects + + mean = np.exp(lin_pred) + y = np.random.poisson(mean) + + model0 = ConditionalPoisson(y, x, groups=groups) + result0 = model0.fit() + + # Should be the same as model0 + model1 = ConditionalPoisson(y, x, groups=groups) + result1 = model1.fit_regularized(L1_wt=0, alpha=0) + + assert_allclose(result0.params, result1.params, rtol=1e-3) + + model2 = ConditionalPoisson(y, x, groups=groups) + result2 = model2.fit_regularized(L1_wt=1, alpha=0.2) + + # Regression test + assert_allclose(result2.params, np.r_[0, 0, 0.91697508, 0], rtol=1e-4) + + # Test with formula + df = pd.DataFrame({"y": y, "x1": x[:, 0], "x2": x[:, 1], "x3": x[:, 2], + "x4": x[:, 3], "groups": groups}) + fml = "y ~ 0 + x1 + x2 + x3 + x4" + model3 = ConditionalPoisson.from_formula(fml, groups="groups", data=df) + result3 = model3.fit_regularized(L1_wt=1, alpha=0.2) + assert_allclose(result2.params, result3.params) + + +def gen_mnlogit(n): + + np.random.seed(235) + + g = np.kron(np.ones(5), np.arange(n//5)) + x1 = np.random.normal(size=n) + x2 = np.random.normal(size=n) + xm = np.concatenate((x1[:, None], x2[:, None]), axis=1) + pa = np.array([[0, 1, -1], [0, 2, -1]]) + lpr = np.dot(xm, pa) + pr = np.exp(lpr) + pr /= pr.sum(1)[:, None] + cpr = pr.cumsum(1) + y = 2 * np.ones(n) + u = np.random.uniform(size=n) + y[u < cpr[:, 2]] = 2 + y[u < cpr[:, 1]] = 1 + y[u < cpr[:, 0]] = 0 + + df = pd.DataFrame({"y": y, "x1": x1, + "x2": x2, "g": g}) + return df + + +def test_conditional_mnlogit_grad(): + + df = gen_mnlogit(90) + model = ConditionalMNLogit.from_formula( + "y ~ 0 + x1 + x2", groups="g", data=df) + + # Compare the gradients to numeric gradients + for _ in range(5): + za = np.random.normal(size=4) + grad = model.score(za) + ngrad = approx_fprime(za, model.loglike) + assert_allclose(grad, ngrad, rtol=1e-5, atol=1e-3) + + +def test_conditional_mnlogit_2d(): + + df = gen_mnlogit(90) + model = ConditionalMNLogit.from_formula( + "y ~ 0 + x1 + x2", groups="g", data=df) + result = model.fit() + + # Regression tests + assert_allclose( + result.params, + np.asarray([[0.75592035, -1.58565494], + [1.82919869, -1.32594231]]), + rtol=1e-5, atol=1e-5) + assert_allclose( + result.bse, + np.asarray([[0.68099698, 0.70142727], + [0.65190315, 0.59653771]]), + rtol=1e-5, atol=1e-5) + + +def test_conditional_mnlogit_3d(): + + df = gen_mnlogit(90) + df["x3"] = np.random.normal(size=df.shape[0]) + model = ConditionalMNLogit.from_formula( + "y ~ 0 + x1 + x2 + x3", groups="g", data=df) + result = model.fit() + + # Regression tests + assert_allclose( + result.params, + np.asarray([[ 0.729629, -1.633673], + [ 1.879019, -1.327163], + [-0.114124, -0.109378]]), + atol=1e-5, rtol=1e-5) + + assert_allclose( + result.bse, + np.asarray([[0.682965, 0.60472], + [0.672947, 0.42401], + [0.722631, 0.33663]]), + atol=1e-5, rtol=1e-5) + + # Smoke test + result.summary() diff --git a/statsmodels/discrete/tests/test_constrained.py b/statsmodels/discrete/tests/test_constrained.py new file mode 100644 index 0000000..24f4378 --- /dev/null +++ b/statsmodels/discrete/tests/test_constrained.py @@ -0,0 +1,559 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri May 30 16:22:29 2014 + +Author: Josef Perktold +License: BSD-3 + +""" +from __future__ import division + +from statsmodels.compat.python import StringIO + +import numpy as np +from numpy.testing import assert_allclose, assert_equal, assert_ + +import pandas as pd +import patsy +import pytest + +from statsmodels.discrete.discrete_model import Poisson +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod import families +from statsmodels.base._constraints import fit_constrained + +from statsmodels.tools.tools import add_constant +from statsmodels import datasets + +from .results import results_poisson_constrained as results +from .results import results_glm_logit_constrained as reslogit + + +spector_data = datasets.spector.load(as_pandas=False) +spector_data.exog = add_constant(spector_data.exog, prepend=False) + + +DEBUG = False + +ss='''\ +agecat smokes deaths pyears +1 1 32 52407 +2 1 104 43248 +3 1 206 28612 +4 1 186 12663 +5 1 102 5317 +1 0 2 18790 +2 0 12 10673 +3 0 28 5710 +4 0 28 2585 +5 0 31 1462''' + +data = pd.read_csv(StringIO(ss), delimiter='\t') +data = data.astype(int) +data['logpyears'] = np.log(data['pyears']) + + +class CheckPoissonConstrainedMixin(object): + + def test_basic(self): + res1 = self.res1 + res2 = self.res2 + assert_allclose(res1[0], res2.params[self.idx], rtol=1e-6) + # see below Stata has nan, we have zero + bse1 = np.sqrt(np.diag(res1[1])) + mask = (bse1 == 0) & np.isnan(res2.bse[self.idx]) + assert_allclose(bse1[~mask], res2.bse[self.idx][~mask], rtol=1e-6) + + + def test_basic_method(self): + if hasattr(self, 'res1m'): + res1 = (self.res1m if not hasattr(self.res1m, '_results') + else self.res1m._results) + res2 = self.res2 + assert_allclose(res1.params, res2.params[self.idx], rtol=1e-6) + + # when a parameter is fixed, the Stata has bse=nan, we have bse=0 + mask = (res1.bse == 0) & np.isnan(res2.bse[self.idx]) + assert_allclose(res1.bse[~mask], res2.bse[self.idx][~mask], rtol=1e-6) + + tvalues = res2.params_table[self.idx, 2] + # when a parameter is fixed, the Stata has tvalue=nan, we have tvalue=inf + mask = np.isinf(res1.tvalues) & np.isnan(tvalues) + assert_allclose(res1.tvalues[~mask], tvalues[~mask], rtol=1e-6) + pvalues = res2.params_table[self.idx, 3] + # note most pvalues are very small + # examples so far agree at 8 or more decimal, but rtol is stricter + # see above + mask = (res1.pvalues == 0) & np.isnan(pvalues) + assert_allclose(res1.pvalues[~mask], pvalues[~mask], rtol=5e-5) + + ci_low = res2.params_table[self.idx, 4] + ci_upp = res2.params_table[self.idx, 5] + ci = np.column_stack((ci_low, ci_upp)) + # note most pvalues are very small + # examples so far agree at 8 or more decimal, but rtol is stricter + # see above: nan versus value + assert_allclose(res1.conf_int()[~np.isnan(ci)], ci[~np.isnan(ci)], rtol=5e-5) + + #other + assert_allclose(res1.llf, res2.ll, rtol=1e-6) + assert_equal(res1.df_model, res2.df_m) + # Stata doesn't have df_resid + df_r = res2.N - res2.df_m - 1 + assert_equal(res1.df_resid, df_r) + else: + pytest.skip("not available yet") + + def test_other(self): + # some results may not be valid or available for all models + if hasattr(self, 'res1m'): + res1 = self.res1m + res2 = self.res2 + + if hasattr(res2, 'll_0'): + assert_allclose(res1.llnull, res2.ll_0, rtol=1e-6) + else: + if DEBUG: + import warnings + message = ('test: ll_0 not available, llnull=%6.4F' + % res1.llnull) + warnings.warn(message) + + else: + pytest.skip("not available yet") + + +class TestPoissonConstrained1a(CheckPoissonConstrainedMixin): + + @classmethod + def setup_class(cls): + + cls.res2 = results.results_noexposure_constraint + cls.idx = [7, 3, 4, 5, 6, 0, 1] # 2 is dropped baseline for categorical + + # example without offset + formula = 'deaths ~ logpyears + smokes + C(agecat)' + mod = Poisson.from_formula(formula, data=data) + #res1a = mod1a.fit() + # get start_params, example fails to converge on one py TravisCI + k_vars = len(mod.exog_names) + start_params = np.zeros(k_vars) + start_params[0] = np.log(mod.endog.mean()) + # if we need it, this is desired params + p = np.array([-3.93478643, 1.37276214, 2.33077032, 2.71338891, + 2.71338891, 0.57966535, 0.97254074]) + + constr = 'C(agecat)[T.4] = C(agecat)[T.5]' + lc = patsy.DesignInfo(mod.exog_names).linear_constraint(constr) + cls.res1 = fit_constrained(mod, lc.coefs, lc.constants, + start_params=start_params, + fit_kwds={'method': 'bfgs', + 'disp': 0}) + # TODO: Newton fails + + # test method of Poisson, not monkey patched + cls.res1m = mod.fit_constrained(constr, start_params=start_params, + method='bfgs', disp=0) + + @pytest.mark.smoke + def test_summary(self): + # trailing text in summary, assumes it's the first extra string + # NOTE: see comment about convergence in llnull for self.res1m + summ = self.res1m.summary() + assert_('linear equality constraints' in summ.extra_txt) + + @pytest.mark.smoke + def test_summary2(self): + # trailing text in summary, assumes it's the first extra string + # NOTE: see comment about convergence in llnull for self.res1m + summ = self.res1m.summary2() + assert_('linear equality constraints' in summ.extra_txt[0]) + + +class TestPoissonConstrained1b(CheckPoissonConstrainedMixin): + + @classmethod + def setup_class(cls): + + cls.res2 = results.results_exposure_constraint + #cls.idx = [3, 4, 5, 6, 0, 1] # 2 is dropped baseline for categorical + cls.idx = [6, 2, 3, 4, 5, 0] # 2 is dropped baseline for categorical + + # example without offset + formula = 'deaths ~ smokes + C(agecat)' + mod = Poisson.from_formula(formula, data=data, + #offset=np.log(data['pyears'].values)) + exposure=data['pyears'].values) + #res1a = mod1a.fit() + constr = 'C(agecat)[T.4] = C(agecat)[T.5]' + lc = patsy.DesignInfo(mod.exog_names).linear_constraint(constr) + cls.res1 = fit_constrained(mod, lc.coefs, lc.constants, + fit_kwds={'method': 'newton', + 'disp': 0}) + cls.constraints = lc + # TODO: bfgs fails + # test method of Poisson, not monkey patched + cls.res1m = mod.fit_constrained(constr, method='newton', + disp=0) + + +class TestPoissonConstrained1c(CheckPoissonConstrainedMixin): + + @classmethod + def setup_class(cls): + + cls.res2 = results.results_exposure_constraint + #cls.idx = [3, 4, 5, 6, 0, 1] # 2 is dropped baseline for categorical + cls.idx = [6, 2, 3, 4, 5, 0] # 2 is dropped baseline for categorical + + # example without offset + formula = 'deaths ~ smokes + C(agecat)' + mod = Poisson.from_formula(formula, data=data, + offset=np.log(data['pyears'].values)) + #res1a = mod1a.fit() + constr = 'C(agecat)[T.4] = C(agecat)[T.5]' + lc = patsy.DesignInfo(mod.exog_names).linear_constraint(constr) + cls.res1 = fit_constrained(mod, lc.coefs, lc.constants, + fit_kwds={'method': 'newton', + 'disp': 0}) + cls.constraints = lc + # TODO: bfgs fails + + # test method of Poisson, not monkey patched + cls.res1m = mod.fit_constrained(constr, method='newton', disp=0) + + +class TestPoissonNoConstrained(CheckPoissonConstrainedMixin): + + @classmethod + def setup_class(cls): + + cls.res2 = results.results_exposure_noconstraint + cls.idx = [6, 2, 3, 4, 5, 0] # 1 is dropped baseline for categorical + + # example without offset + formula = 'deaths ~ smokes + C(agecat)' + mod = Poisson.from_formula(formula, data=data, + #exposure=data['pyears'].values) + offset=np.log(data['pyears'].values)) + res1 = mod.fit(disp=0)._results + # res1 is duplicate check, so we can follow the same pattern + cls.res1 = (res1.params, res1.cov_params()) + cls.res1m = res1 + + +class TestPoissonConstrained2a(CheckPoissonConstrainedMixin): + + @classmethod + def setup_class(cls): + + cls.res2 = results.results_noexposure_constraint2 + cls.idx = [7, 3, 4, 5, 6, 0, 1] # 2 is dropped baseline for categorical + + # example without offset + formula = 'deaths ~ logpyears + smokes + C(agecat)' + mod = Poisson.from_formula(formula, data=data) + + # get start_params, example fails to converge on one py TravisCI + k_vars = len(mod.exog_names) + start_params = np.zeros(k_vars) + start_params[0] = np.log(mod.endog.mean()) + # if we need it, this is desired params + p = np.array([-9.43762015, 1.52762442, 2.74155711, 3.58730007, + 4.08730007, 1.15987869, 0.12111539]) + + constr = 'C(agecat)[T.5] - C(agecat)[T.4] = 0.5' + lc = patsy.DesignInfo(mod.exog_names).linear_constraint(constr) + cls.res1 = fit_constrained(mod, lc.coefs, lc.constants, + start_params=start_params, + fit_kwds={'method': 'bfgs', 'disp': 0}) + # TODO: Newton fails + + # test method of Poisson, not monkey patched + cls.res1m = mod.fit_constrained(constr, start_params=start_params, + method='bfgs', disp=0) + + +class TestPoissonConstrained2b(CheckPoissonConstrainedMixin): + + @classmethod + def setup_class(cls): + + cls.res2 = results.results_exposure_constraint2 + #cls.idx = [3, 4, 5, 6, 0, 1] # 2 is dropped baseline for categorical + cls.idx = [6, 2, 3, 4, 5, 0] # 2 is dropped baseline for categorical + + # example without offset + formula = 'deaths ~ smokes + C(agecat)' + mod = Poisson.from_formula(formula, data=data, + #offset=np.log(data['pyears'].values)) + exposure=data['pyears'].values) + #res1a = mod1a.fit() + constr = 'C(agecat)[T.5] - C(agecat)[T.4] = 0.5' + lc = patsy.DesignInfo(mod.exog_names).linear_constraint(constr) + cls.res1 = fit_constrained(mod, lc.coefs, lc.constants, + fit_kwds={'method': 'newton', + 'disp': 0}) + cls.constraints = lc + # TODO: bfgs fails to converge. overflow somewhere? + + # test method of Poisson, not monkey patched + cls.res1m = mod.fit_constrained(constr, method='bfgs', disp=0, + start_params=cls.res1[0]) + + +class TestPoissonConstrained2c(CheckPoissonConstrainedMixin): + + @classmethod + def setup_class(cls): + + cls.res2 = results.results_exposure_constraint2 + #cls.idx = [3, 4, 5, 6, 0, 1] # 2 is dropped baseline for categorical + cls.idx = [6, 2, 3, 4, 5, 0] # 2 is dropped baseline for categorical + + # example without offset + formula = 'deaths ~ smokes + C(agecat)' + mod = Poisson.from_formula(formula, data=data, + offset=np.log(data['pyears'].values)) + + constr = 'C(agecat)[T.5] - C(agecat)[T.4] = 0.5' + lc = patsy.DesignInfo(mod.exog_names).linear_constraint(constr) + cls.res1 = fit_constrained(mod, lc.coefs, lc.constants, + fit_kwds={'method':'newton', + 'disp': 0}) + cls.constraints = lc + # TODO: bfgs fails + + # test method of Poisson, not monkey patched + cls.res1m = mod.fit_constrained(constr, + method='bfgs', disp=0, + start_params=cls.res1[0]) + + +class TestGLMPoissonConstrained1a(CheckPoissonConstrainedMixin): + + @classmethod + def setup_class(cls): + from statsmodels.base._constraints import fit_constrained + + cls.res2 = results.results_noexposure_constraint + cls.idx = [7, 3, 4, 5, 6, 0, 1] # 2 is dropped baseline for categorical + + # example without offset + formula = 'deaths ~ logpyears + smokes + C(agecat)' + mod = GLM.from_formula(formula, data=data, + family=families.Poisson()) + + constr = 'C(agecat)[T.4] = C(agecat)[T.5]' + lc = patsy.DesignInfo(mod.exog_names).linear_constraint(constr) + cls.res1 = fit_constrained(mod, lc.coefs, lc.constants, + fit_kwds={'atol': 1e-10}) + cls.constraints = lc + cls.res1m = mod.fit_constrained(constr, atol=1e-10) + + +class TestGLMPoissonConstrained1b(CheckPoissonConstrainedMixin): + + @classmethod + def setup_class(cls): + from statsmodels.genmod.generalized_linear_model import GLM + from statsmodels.genmod import families + from statsmodels.base._constraints import fit_constrained + + cls.res2 = results.results_exposure_constraint + cls.idx = [6, 2, 3, 4, 5, 0] # 2 is dropped baseline for categorical + + # example with offset + formula = 'deaths ~ smokes + C(agecat)' + mod = GLM.from_formula(formula, data=data, + family=families.Poisson(), + offset=np.log(data['pyears'].values)) + + constr = 'C(agecat)[T.4] = C(agecat)[T.5]' + lc = patsy.DesignInfo(mod.exog_names).linear_constraint(constr) + + cls.res1 = fit_constrained(mod, lc.coefs, lc.constants, + fit_kwds={'atol': 1e-10}) + cls.constraints = lc + cls.res1m = mod.fit_constrained(constr, atol=1e-10)._results + + def test_compare_glm_poisson(self): + res1 = self.res1m + res2 = self.res2 + + formula = 'deaths ~ smokes + C(agecat)' + mod = Poisson.from_formula(formula, data=data, + #offset=np.log(data['pyears'].values)) + exposure=data['pyears'].values) + + constr = 'C(agecat)[T.4] = C(agecat)[T.5]' + res2 = mod.fit_constrained(constr, start_params=self.res1m.params, + method='newton', warn_convergence=False, + disp=0) + + # we get high precision because we use the params as start_params + + # basic, just as check that we have the same model + assert_allclose(res1.params, res2.params, rtol=1e-12) + assert_allclose(res1.bse, res2.bse, rtol=1e-11) + + # check predict, fitted, ... + + predicted = res1.predict() + assert_allclose(predicted, res2.predict(), rtol=1e-10) + assert_allclose(res1.mu, predicted, rtol=1e-10) + assert_allclose(res1.fittedvalues, predicted, rtol=1e-10) + assert_allclose(res2.predict(linear=True), res2.predict(linear=True), + rtol=1e-10) + + +class CheckGLMConstrainedMixin(CheckPoissonConstrainedMixin): + # add tests for some GLM specific attributes + + def test_glm(self): + res2 = self.res2 # reference results + res1 = self.res1m + + #assert_allclose(res1.aic, res2.aic, rtol=1e-10) # far away + # Stata aic in ereturn and in estat ic are very different + # we have the same as estat ic + # see issue #1733 + assert_allclose(res1.aic, res2.infocrit[4], rtol=1e-10) + + assert_allclose(res1.bic, res2.bic, rtol=1e-10) + # bic is deviance based + #assert_allclose(res1.bic, res2.infocrit[5], rtol=1e-10) + assert_allclose(res1.deviance, res2.deviance, rtol=1e-10) + # TODO: which chi2 are these + #assert_allclose(res1.pearson_chi2, res2.chi2, rtol=1e-10) + + +class TestGLMLogitConstrained1(CheckGLMConstrainedMixin): + + @classmethod + def setup_class(cls): + cls.idx = slice(None) + # params sequence same as Stata, but Stata reports param = nan + # and we have param = value = 0 + + #res1ul = Logit(data.endog, data.exog).fit(method="newton", disp=0) + cls.res2 = reslogit.results_constraint1 + + mod1 = GLM(spector_data.endog, spector_data.exog, + family=families.Binomial()) + + constr = 'x1 = 2.8' + cls.res1m = mod1.fit_constrained(constr) + + R, q = cls.res1m.constraints.coefs, cls.res1m.constraints.constants + cls.res1 = fit_constrained(mod1, R, q) + + +class TestGLMLogitConstrained2(CheckGLMConstrainedMixin): + + @classmethod + def setup_class(cls): + cls.idx = slice(None) # params sequence same as Stata + #res1ul = Logit(data.endog, data.exog).fit(method="newton", disp=0) + cls.res2 = reslogit.results_constraint2 + + mod1 = GLM(spector_data.endog, spector_data.exog, + family=families.Binomial()) + + constr = 'x1 - x3 = 0' + cls.res1m = mod1.fit_constrained(constr, atol=1e-10) + + R, q = cls.res1m.constraints.coefs, cls.res1m.constraints.constants + cls.res1 = fit_constrained(mod1, R, q, fit_kwds={'atol': 1e-10}) + cls.constraints_rq = (R, q) + + + def test_predict(self): + # results only available for this case + res2 = self.res2 # reference results + res1 = self.res1m + + predicted = res1.predict() + assert_allclose(predicted, res2.predict_mu, atol=1e-7) + assert_allclose(res1.mu, predicted, rtol=1e-10) + assert_allclose(res1.fittedvalues, predicted, rtol=1e-10) + + @pytest.mark.smoke + def test_summary(self): + # trailing text in summary, assumes it's the first extra string + summ = self.res1m.summary() + assert_('linear equality constraints' in summ.extra_txt) + + @pytest.mark.smoke + def test_summary2(self): + # trailing text in summary, assumes it's the first extra string + summ = self.res1m.summary2() + assert_('linear equality constraints' in summ.extra_txt[0]) + + def test_fit_constrained_wrap(self): + # minimal test + res2 = self.res2 # reference results + + from statsmodels.base._constraints import fit_constrained_wrap + res_wrap = fit_constrained_wrap(self.res1m.model, self.constraints_rq) + assert_allclose(res_wrap.params, res2.params, rtol=1e-6) + assert_allclose(res_wrap.params, res2.params, rtol=1e-6) + + +class TestGLMLogitConstrained2HC(CheckGLMConstrainedMixin): + + @classmethod + def setup_class(cls): + cls.idx = slice(None) # params sequence same as Stata + #res1ul = Logit(data.endog, data.exog).fit(method="newton", disp=0) + cls.res2 = reslogit.results_constraint2_robust + + mod1 = GLM(spector_data.endog, spector_data.exog, + family=families.Binomial()) + + # not used to match Stata for HC + # nobs, k_params = mod1.exog.shape + # k_params -= 1 # one constraint + cov_type = 'HC0' + cov_kwds = {'scaling_factor': 32/31} + # looks like nobs / (nobs - 1) and not (nobs - 1.) / (nobs - k_params)} + constr = 'x1 - x3 = 0' + cls.res1m = mod1.fit_constrained(constr, cov_type=cov_type, + cov_kwds=cov_kwds, atol=1e-10) + + R, q = cls.res1m.constraints.coefs, cls.res1m.constraints.constants + cls.res1 = fit_constrained(mod1, R, q, fit_kwds={'atol': 1e-10, + 'cov_type': cov_type, + 'cov_kwds': cov_kwds}) + cls.constraints_rq = (R, q) + + +def junk(): + # Singular Matrix in mod1a.fit() + + formula1 = 'deaths ~ smokes + C(agecat)' + + formula2 = 'deaths ~ C(agecat) + C(smokes) : C(agecat)' # same as Stata default + + mod = Poisson.from_formula(formula2, data=data, exposure=data['pyears'].values) + + res0 = mod.fit() + + constraints = 'C(smokes)[T.1]:C(agecat)[3] = C(smokes)[T.1]:C(agecat)[4]' + + import patsy + lc = patsy.DesignInfo(mod.exog_names).linear_constraint(constraints) + R, q = lc.coefs, lc.constants + + resc = mod.fit_constrained(R,q, fit_kwds={'method':'bfgs'}) + + # example without offset + formula1a = 'deaths ~ logpyears + smokes + C(agecat)' + mod1a = Poisson.from_formula(formula1a, data=data) + print(mod1a.exog.shape) + + res1a = mod1a.fit() + lc_1a = patsy.DesignInfo(mod1a.exog_names).linear_constraint('C(agecat)[T.4] = C(agecat)[T.5]') + resc1a = mod1a.fit_constrained(lc_1a.coefs, lc_1a.constants, fit_kwds={'method':'newton'}) + print(resc1a[0]) + print(resc1a[1]) diff --git a/statsmodels/discrete/tests/test_count_model.py b/statsmodels/discrete/tests/test_count_model.py new file mode 100644 index 0000000..d34bc7c --- /dev/null +++ b/statsmodels/discrete/tests/test_count_model.py @@ -0,0 +1,559 @@ +from __future__ import division +from statsmodels.compat.scipy import SP_GTE_019 + +import numpy as np +from numpy.testing import (assert_, + assert_equal, assert_array_equal, assert_allclose) +import pytest + +import statsmodels.api as sm +from .results.results_discrete import RandHIE +from .test_discrete import CheckModelMixin + + +class CheckGeneric(CheckModelMixin): + def test_params(self): + assert_allclose(self.res1.params, self.res2.params, atol=1e-5, rtol=1e-5) + + def test_llf(self): + assert_allclose(self.res1.llf, self.res2.llf, atol=1e-5, rtol=1e-5) + + def test_conf_int(self): + assert_allclose(self.res1.conf_int(), self.res2.conf_int, atol=1e-3, rtol=1e-5) + + def test_bse(self): + assert_allclose(self.res1.bse, self.res2.bse, atol=1e-3, rtol=1e-3) + + def test_aic(self): + assert_allclose(self.res1.aic, self.res2.aic, atol=1e-2, rtol=1e-2) + + def test_bic(self): + assert_allclose(self.res1.aic, self.res2.aic, atol=1e-1, rtol=1e-1) + + def test_t(self): + unit_matrix = np.identity(self.res1.params.size) + t_test = self.res1.t_test(unit_matrix) + assert_allclose(self.res1.tvalues, t_test.tvalue) + + def test_fit_regularized(self): + model = self.res1.model + + alpha = np.ones(len(self.res1.params)) + alpha[-2:] = 0 + res_reg = model.fit_regularized(alpha=alpha*0.01, disp=0, maxiter=500) + + assert_allclose(res_reg.params[2:], self.res1.params[2:], + atol=5e-2, rtol=5e-2) + + def test_init_keys(self): + init_kwds = self.res1.model._get_init_kwds() + assert_equal(set(init_kwds.keys()), set(self.init_keys)) + for key, value in self.init_kwds.items(): + assert_equal(init_kwds[key], value) + + def test_null(self): + # call llnull, so null model is attached, side effect of cached attribute + self.res1.llnull + # check model instead of value + exog_null = self.res1.res_null.model.exog + exog_infl_null = self.res1.res_null.model.exog_infl + assert_array_equal(exog_infl_null.shape, + (len(self.res1.model.exog), 1)) + assert_equal(np.ptp(exog_null), 0) + assert_equal(np.ptp(exog_infl_null), 0) + + @pytest.mark.smoke + def test_summary(self): + summ = self.res1.summary() + # GH 4581 + assert 'Covariance Type:' in str(summ) + + +class TestZeroInflatedModel_logit(CheckGeneric): + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + cls.endog = data.endog + exog = sm.add_constant(data.exog[:,1:4], prepend=False) + exog_infl = sm.add_constant(data.exog[:,0], prepend=False) + cls.res1 = sm.ZeroInflatedPoisson(data.endog, exog, + exog_infl=exog_infl, inflation='logit').fit(method='newton', maxiter=500, + disp=0) + # for llnull test + cls.res1._results._attach_nullmodel = True + cls.init_keys = ['exog_infl', 'exposure', 'inflation', 'offset'] + cls.init_kwds = {'inflation': 'logit'} + res2 = RandHIE.zero_inflated_poisson_logit + cls.res2 = res2 + +class TestZeroInflatedModel_probit(CheckGeneric): + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + cls.endog = data.endog + exog = sm.add_constant(data.exog[:,1:4], prepend=False) + exog_infl = sm.add_constant(data.exog[:,0], prepend=False) + cls.res1 = sm.ZeroInflatedPoisson(data.endog, exog, + exog_infl=exog_infl, inflation='probit').fit(method='newton', maxiter=500, + disp=0) + # for llnull test + cls.res1._results._attach_nullmodel = True + cls.init_keys = ['exog_infl', 'exposure', 'inflation', 'offset'] + cls.init_kwds = {'inflation': 'probit'} + res2 = RandHIE.zero_inflated_poisson_probit + cls.res2 = res2 + +class TestZeroInflatedModel_offset(CheckGeneric): + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + cls.endog = data.endog + exog = sm.add_constant(data.exog[:,1:4], prepend=False) + exog_infl = sm.add_constant(data.exog[:,0], prepend=False) + cls.res1 = sm.ZeroInflatedPoisson(data.endog, exog, + exog_infl=exog_infl, offset=data.exog[:,7]).fit(method='newton', + maxiter=500, + disp=0) + # for llnull test + cls.res1._results._attach_nullmodel = True + cls.init_keys = ['exog_infl', 'exposure', 'inflation', 'offset'] + cls.init_kwds = {'inflation': 'logit'} + res2 = RandHIE.zero_inflated_poisson_offset + cls.res2 = res2 + + def test_exposure(self): + # This test mostly the equivalence of offset and exposure = exp(offset) + # use data arrays from class model + model1 = self.res1.model + offset = model1.offset + model3 = sm.ZeroInflatedPoisson(model1.endog, model1.exog, + exog_infl=model1.exog_infl, exposure=np.exp(offset)) + res3 = model3.fit(start_params=self.res1.params, + method='newton', maxiter=500, disp=0) + + assert_allclose(res3.params, self.res1.params, atol=1e-6, rtol=1e-6) + fitted1 = self.res1.predict() + fitted3 = self.res1.predict() + assert_allclose(fitted3, fitted1, atol=1e-6, rtol=1e-6) + + ex = model1.exog + ex_infl = model1.exog_infl + offset = model1.offset + fitted1_0 = self.res1.predict(exog=ex, exog_infl=ex_infl, + offset=offset) + fitted3_0 = res3.predict(exog=ex, exog_infl=ex_infl, + exposure=np.exp(offset)) + assert_allclose(fitted3_0, fitted1_0, atol=1e-6, rtol=1e-6) + + + ex = model1.exog[:10:2] + ex_infl = model1.exog_infl[:10:2] + offset = offset[:10:2] + # # TODO: this raises with shape mismatch, + # # i.e. uses offset or exposure from model -> fix it or not? + # GLM.predict to setting offset and exposure to zero + # fitted1_1 = self.res1.predict(exog=ex, exog_infl=ex_infl) + # fitted3_1 = res3.predict(exog=ex, exog_infl=ex_infl) + # assert_allclose(fitted3_1, fitted1_1, atol=1e-6, rtol=1e-6) + + fitted1_2 = self.res1.predict(exog=ex, exog_infl=ex_infl, + offset=offset) + fitted3_2 = res3.predict(exog=ex, exog_infl=ex_infl, + exposure=np.exp(offset)) + assert_allclose(fitted3_2, fitted1_2, atol=1e-6, rtol=1e-6) + assert_allclose(fitted1_2, fitted1[:10:2], atol=1e-6, rtol=1e-6) + assert_allclose(fitted3_2, fitted1[:10:2], atol=1e-6, rtol=1e-6) + + +class TestZeroInflatedModelPandas(CheckGeneric): + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load_pandas() + cls.endog = data.endog + cls.data = data + exog = sm.add_constant(data.exog.iloc[:,1:4], prepend=False) + exog_infl = sm.add_constant(data.exog.iloc[:,0], prepend=False) + # we don't need to verify convergence here + start_params = np.asarray([0.10337834587498942, -1.0459825102508549, + -0.08219794475894268, 0.00856917434709146, + -0.026795737379474334, 1.4823632430107334]) + model = sm.ZeroInflatedPoisson(data.endog, exog, + exog_infl=exog_infl, inflation='logit') + cls.res1 = model.fit(start_params=start_params, method='newton', + maxiter=500, disp=0) + # for llnull test + cls.res1._results._attach_nullmodel = True + cls.init_keys = ['exog_infl', 'exposure', 'inflation', 'offset'] + cls.init_kwds = {'inflation': 'logit'} + res2 = RandHIE.zero_inflated_poisson_logit + cls.res2 = res2 + + def test_names(self): + param_names = ['inflate_lncoins', 'inflate_const', 'idp', 'lpi', + 'fmde', 'const'] + assert_array_equal(self.res1.model.exog_names, param_names) + assert_array_equal(self.res1.params.index.tolist(), param_names) + assert_array_equal(self.res1.bse.index.tolist(), param_names) + + exog = sm.add_constant(self.data.exog.iloc[:,1:4], prepend=True) + exog_infl = sm.add_constant(self.data.exog.iloc[:,0], prepend=True) + param_names = ['inflate_const', 'inflate_lncoins', 'const', 'idp', + 'lpi', 'fmde'] + model = sm.ZeroInflatedPoisson(self.data.endog, exog, + exog_infl=exog_infl, inflation='logit') + assert_array_equal(model.exog_names, param_names) + + +class TestZeroInflatedPoisson_predict(object): + @classmethod + def setup_class(cls): + expected_params = [1, 0.5] + np.random.seed(123) + nobs = 200 + exog = np.ones((nobs, 2)) + exog[:nobs//2, 1] = 2 + mu_true = exog.dot(expected_params) + cls.endog = sm.distributions.zipoisson.rvs(mu_true, 0.05, + size=mu_true.shape) + model = sm.ZeroInflatedPoisson(cls.endog, exog) + cls.res = model.fit(method='bfgs', maxiter=5000, maxfun=5000, disp=0) + + def test_mean(self): + assert_allclose(self.res.predict().mean(), self.endog.mean(), + atol=1e-2, rtol=1e-2) + + def test_var(self): + assert_allclose((self.res.predict().mean() * + self.res._dispersion_factor.mean()), + self.endog.var(), atol=5e-2, rtol=5e-2) + + def test_predict_prob(self): + res = self.res + endog = res.model.endog + + pr = res.predict(which='prob') + pr2 = sm.distributions.zipoisson.pmf(np.arange(7)[:,None], + res.predict(), 0.05).T + assert_allclose(pr, pr2, rtol=0.05, atol=0.05) + +@pytest.mark.slow +class TestZeroInflatedGeneralizedPoisson(CheckGeneric): + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + cls.endog = data.endog + exog = sm.add_constant(data.exog[:,1:4], prepend=False) + exog_infl = sm.add_constant(data.exog[:,0], prepend=False) + cls.res1 = sm.ZeroInflatedGeneralizedPoisson(data.endog, exog, + exog_infl=exog_infl, p=1).fit(method='newton', maxiter=500, disp=0) + # for llnull test + cls.res1._results._attach_nullmodel = True + cls.init_keys = ['exog_infl', 'exposure', 'inflation', 'offset', 'p'] + cls.init_kwds = {'inflation': 'logit', 'p': 1} + res2 = RandHIE.zero_inflated_generalized_poisson + cls.res2 = res2 + + def test_bse(self): + pass + + def test_conf_int(self): + pass + + def test_bic(self): + pass + + def test_t(self): + unit_matrix = np.identity(self.res1.params.size) + t_test = self.res1.t_test(unit_matrix) + assert_allclose(self.res1.tvalues, t_test.tvalue) + + def test_minimize(self, reset_randomstate): + # check additional optimizers using the `minimize` option + model = self.res1.model + # use the same start_params, but avoid recomputing + start_params = self.res1.mle_settings['start_params'] + + res_ncg = model.fit(start_params=start_params, + method='minimize', min_method="trust-ncg", + maxiter=500, disp=0) + + assert_allclose(res_ncg.params, self.res2.params, + atol=1e-3, rtol=0.04) + assert_allclose(res_ncg.bse, self.res2.bse, + atol=1e-3, rtol=0.6) + assert_(res_ncg.mle_retvals['converged'] is True) + + res_dog = model.fit(start_params=start_params, + method='minimize', min_method="dogleg", + maxiter=500, disp=0) + + assert_allclose(res_dog.params, self.res2.params, + atol=1e-3, rtol=3e-3) + assert_allclose(res_dog.bse, self.res2.bse, + atol=1e-3, rtol=0.6) + assert_(res_dog.mle_retvals['converged'] is True) + + # Ser random_state here to improve reproducibility + random_state = np.random.RandomState(1) + seed = {'seed': random_state} if SP_GTE_019 else {} + res_bh = model.fit(start_params=start_params, + method='basinhopping', niter=500, stepsize=0.1, + niter_success=None, disp=0, interval=1, **seed) + + assert_allclose(res_bh.params, self.res2.params, + atol=1e-4, rtol=1e-4) + assert_allclose(res_bh.bse, self.res2.bse, + atol=1e-3, rtol=0.6) + # skip, res_bh reports converged is false but params agree + #assert_(res_bh.mle_retvals['converged'] is True) + +class TestZeroInflatedGeneralizedPoisson_predict(object): + @classmethod + def setup_class(cls): + expected_params = [1, 0.5, 0.5] + np.random.seed(1234) + nobs = 200 + exog = np.ones((nobs, 2)) + exog[:nobs//2, 1] = 2 + mu_true = exog.dot(expected_params[:-1]) + cls.endog = sm.distributions.zigenpoisson.rvs(mu_true, expected_params[-1], + 2, 0.5, size=mu_true.shape) + model = sm.ZeroInflatedGeneralizedPoisson(cls.endog, exog, p=2) + cls.res = model.fit(method='bfgs', maxiter=5000, maxfun=5000, disp=0) + + def test_mean(self): + assert_allclose(self.res.predict().mean(), self.endog.mean(), + atol=1e-4, rtol=1e-4) + + def test_var(self): + assert_allclose((self.res.predict().mean() * + self.res._dispersion_factor.mean()), + self.endog.var(), atol=0.05, rtol=0.1) + + def test_predict_prob(self): + res = self.res + endog = res.model.endog + + pr = res.predict(which='prob') + pr2 = sm.distributions.zinegbin.pmf(np.arange(12)[:,None], + res.predict(), 0.5, 2, 0.5).T + assert_allclose(pr, pr2, rtol=0.08, atol=0.05) + +class TestZeroInflatedNegativeBinomialP(CheckGeneric): + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + cls.endog = data.endog + exog = sm.add_constant(data.exog[:,1], prepend=False) + exog_infl = sm.add_constant(data.exog[:,0], prepend=False) + # cheating for now, parameters are not well identified in this dataset + # see https://github.com/statsmodels/statsmodels/pull/3928#issuecomment-331724022 + sp = np.array([1.88, -10.28, -0.20, 1.14, 1.34]) + cls.res1 = sm.ZeroInflatedNegativeBinomialP(data.endog, exog, + exog_infl=exog_infl, p=2).fit(start_params=sp, method='nm', + xtol=1e-6, maxiter=5000, disp=0) + # for llnull test + cls.res1._results._attach_nullmodel = True + cls.init_keys = ['exog_infl', 'exposure', 'inflation', 'offset', 'p'] + cls.init_kwds = {'inflation': 'logit', 'p': 2} + res2 = RandHIE.zero_inflated_negative_binomial + cls.res2 = res2 + + def test_params(self): + assert_allclose(self.res1.params, self.res2.params, + atol=1e-3, rtol=1e-3) + + def test_conf_int(self): + pass + + def test_bic(self): + pass + + def test_fit_regularized(self): + model = self.res1.model + + alpha = np.ones(len(self.res1.params)) + alpha[-2:] = 0 + res_reg = model.fit_regularized(alpha=alpha*0.01, disp=0, maxiter=500) + + assert_allclose(res_reg.params[2:], self.res1.params[2:], + atol=1e-1, rtol=1e-1) + + # possibly slow, adds 25 seconds + def test_minimize(self, reset_randomstate): + # check additional optimizers using the `minimize` option + model = self.res1.model + # use the same start_params, but avoid recomputing + start_params = self.res1.mle_settings['start_params'] + + res_ncg = model.fit(start_params=start_params, + method='minimize', min_method="trust-ncg", + maxiter=500, disp=0) + + assert_allclose(res_ncg.params, self.res2.params, + atol=1e-3, rtol=0.03) + assert_allclose(res_ncg.bse, self.res2.bse, + atol=1e-3, rtol=0.06) + assert_(res_ncg.mle_retvals['converged'] is True) + + res_dog = model.fit(start_params=start_params, + method='minimize', min_method="dogleg", + maxiter=500, disp=0) + + assert_allclose(res_dog.params, self.res2.params, + atol=1e-3, rtol=3e-3) + assert_allclose(res_dog.bse, self.res2.bse, + atol=1e-3, rtol=7e-3) + assert_(res_dog.mle_retvals['converged'] is True) + + res_bh = model.fit(start_params=start_params, + method='basinhopping', maxiter=500, + niter_success=3, disp=0) + + assert_allclose(res_bh.params, self.res2.params, + atol=1e-4, rtol=3e-4) + assert_allclose(res_bh.bse, self.res2.bse, + atol=1e-3, rtol=1e-3) + # skip, res_bh reports converged is false but params agree + #assert_(res_bh.mle_retvals['converged'] is True) + + +class TestZeroInflatedNegativeBinomialP_predict(object): + @classmethod + def setup_class(cls): + + expected_params = [1, 1, 0.5] + np.random.seed(987123) + nobs = 500 + exog = np.ones((nobs, 2)) + exog[:nobs//2, 1] = 0 + + prob_infl = 0.15 + mu_true = np.exp(exog.dot(expected_params[:-1])) + cls.endog = sm.distributions.zinegbin.rvs(mu_true, + expected_params[-1], 2, prob_infl, size=mu_true.shape) + model = sm.ZeroInflatedNegativeBinomialP(cls.endog, exog, p=2) + cls.res = model.fit(method='bfgs', maxiter=5000, maxfun=5000, disp=0) + + # attach others + cls.prob_infl = prob_infl + + def test_mean(self): + assert_allclose(self.res.predict().mean(), self.endog.mean(), + rtol=0.01) + + def test_var(self): + # todo check precision + assert_allclose((self.res.predict().mean() * + self.res._dispersion_factor.mean()), + self.endog.var(), rtol=0.2) + + def test_predict_prob(self): + res = self.res + endog = res.model.endog + + pr = res.predict(which='prob') + pr2 = sm.distributions.zinegbin.pmf(np.arange(pr.shape[1])[:,None], + res.predict(), 0.5, 2, self.prob_infl).T + assert_allclose(pr, pr2, rtol=0.1, atol=0.1) + prm = pr.mean(0) + pr2m = pr2.mean(0) + freq = np.bincount(endog.astype(int)) / len(endog) + assert_allclose(((pr2m - prm)**2).mean(), 0, rtol=1e-10, atol=5e-4) + assert_allclose(((prm - freq)**2).mean(), 0, rtol=1e-10, atol=1e-4) + + def test_predict_generic_zi(self): + # These tests don't use numbers from other packages. + # Tests are on closeness of estimated to true/DGP values + # and theoretical relationship between quantities + res = self.res + endog = self.endog + exog = self.res.model.exog + prob_infl = self.prob_infl + nobs = len(endog) + + freq = np.bincount(endog.astype(int)) / len(endog) + probs = res.predict(which='prob') + probsm = probs.mean(0) + assert_allclose(freq, probsm, atol=0.02) + + probs_unique = res.predict(exog=[[1, 0], [1, 1]], + exog_infl=np.asarray([[1], [1]]), + which='prob') + # no default for exog_infl yet + #probs_unique = res.predict(exog=[[1, 0], [1, 1]], which='prob') + + probs_unique2 = probs[[1, nobs-1]] + + assert_allclose(probs_unique, probs_unique2, atol=1e-10) + + probs0_unique = res.predict(exog=[[1, 0], [1, 1]], + exog_infl=np.asarray([[1], [1]]), + which='prob-zero') + assert_allclose(probs0_unique, probs_unique2[:, 0], rtol=1e-10) + + probs_main_unique = res.predict(exog=[[1, 0], [1, 1]], + exog_infl=np.asarray([[1], [1]]), + which='prob-main') + probs_main = res.predict(which='prob-main') + probs_main[[0,-1]] + assert_allclose(probs_main_unique, probs_main[[0,-1]], rtol=1e-10) + assert_allclose(probs_main_unique, 1 - prob_infl, atol=0.01) + + pred = res.predict(exog=[[1, 0], [1, 1]], + exog_infl=np.asarray([[1], [1]])) + pred1 = endog[exog[:, 1] == 0].mean(), endog[exog[:, 1] == 1].mean() + assert_allclose(pred, pred1, rtol=0.05) + + pred_main_unique = res.predict(exog=[[1, 0], [1, 1]], + exog_infl=np.asarray([[1], [1]]), + which='mean-main') + assert_allclose(pred_main_unique, np.exp(np.cumsum(res.params[1:3])), + rtol=1e-10) + + # TODO: why does the following fail, params are not close enough to DGP + # but results are close statistics of simulated data + # what is mu_true in DGP sm.distributions.zinegbin.rvs + # assert_allclose(pred_main_unique, mu_true[[1, -1]] * (1 - prob_infl), rtol=0.01) + + # mean-nonzero + mean_nz = (endog[(exog[:, 1] == 0) & (endog > 0)].mean(), + endog[(exog[:, 1] == 1) & (endog > 0)].mean()) + pred_nonzero_unique = res.predict(exog=[[1, 0], [1, 1]], + exog_infl=np.asarray([[1], [1]]), which='mean-nonzero') + assert_allclose(pred_nonzero_unique, mean_nz, rtol=0.05) + + pred_lin_unique = res.predict(exog=[[1, 0], [1, 1]], + exog_infl=np.asarray([[1], [1]]), + which='linear') + assert_allclose(pred_lin_unique, np.cumsum(res.params[1:3]), rtol=1e-10) + + +class TestZeroInflatedNegativeBinomialP_predict2(object): + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + + cls.endog = data.endog + exog = data.exog + start_params = np.array([ + -2.83983767, -2.31595924, -3.9263248, -4.01816431, -5.52251843, + -2.4351714, -4.61636366, -4.17959785, -0.12960256, -0.05653484, + -0.21206673, 0.08782572, -0.02991995, 0.22901208, 0.0620983, + 0.06809681, 0.0841814, 0.185506, 1.36527888]) + mod = sm.ZeroInflatedNegativeBinomialP( + cls.endog, exog, exog_infl=exog, p=2) + res = mod.fit(start_params=start_params, method="bfgs", + maxiter=1000, disp=0) + + cls.res = res + + def test_mean(self): + assert_allclose(self.res.predict().mean(), self.endog.mean(), + atol=0.02) + + def test_zero_nonzero_mean(self): + mean1 = self.endog.mean() + mean2 = ((1 - self.res.predict(which='prob-zero').mean()) * + self.res.predict(which='mean-nonzero').mean()) + assert_allclose(mean1, mean2, atol=0.2) diff --git a/statsmodels/discrete/tests/test_diagnostic.py b/statsmodels/discrete/tests/test_diagnostic.py new file mode 100644 index 0000000..8acfac4 --- /dev/null +++ b/statsmodels/discrete/tests/test_diagnostic.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Sep 15 13:38:13 2017 + +Author: Josef Perktold +""" + +from __future__ import division + +import numpy as np +from numpy.testing import assert_allclose +import pytest + +from statsmodels.discrete.discrete_model import Poisson +import statsmodels.discrete._diagnostics_count as dia + + +class TestCountDiagnostic(object): + + @classmethod + def setup_class(cls): + + expected_params = [1, 1, 0.5] + np.random.seed(987123) + nobs = 500 + exog = np.ones((nobs, 2)) + exog[:nobs//2, 1] = 0 + # offset is used to create misspecification of the model + # for predicted probabilities conditional moment test + #offset = 0.5 * np.random.randn(nobs) + #range_mix = 0.5 + #offset = -range_mix / 2 + range_mix * np.random.rand(nobs) + offset = 0 + mu_true = np.exp(exog.dot(expected_params[:-1]) + offset) + + endog_poi = np.random.poisson(mu_true / 5) + # endog3 = distr.zigenpoisson.rvs(mu_true, 0, + # 2, 0.01, size=mu_true.shape) + + model_poi = Poisson(endog_poi, exog) + res_poi = model_poi.fit(method='bfgs', maxiter=5000, maxfun=5000) + cls.exog = exog + cls.endog = endog_poi + cls.res = res_poi + cls.nobs = nobs + + def test_count(self): + # partially smoke + tzi1 = dia.test_poisson_zeroinflation(self.res) + + tzi2 = dia.test_poisson_zeroinflation_brock(self.res) + # compare two implementation in special case + assert_allclose(tzi1[:2], (tzi2[0]**2, tzi2[1]), rtol=1e-5) + + tzi3 = dia.test_poisson_zeroinflation(self.res, self.exog) + + # regression test + tzi3_1 = (0.79863597832443878, 0.67077736750318928, 2, 2) + assert_allclose(tzi3, tzi3_1, rtol=5e-4) + + @pytest.mark.matplotlib + def test_probs(self, close_figures): + nobs = self.nobs + probs = self.res.predict_prob() + freq = np.bincount(self.endog) / nobs + + tzi = dia.test_chisquare_prob(self.res, probs[:, :2]) + # regression numbers + tzi1 = (0.387770845, 0.5334734738) + assert_allclose(tzi[:2], tzi1, rtol=5e-5) + + # smoke test for plot + dia.plot_probs(freq, probs.mean(0)) diff --git a/statsmodels/discrete/tests/test_discrete.py b/statsmodels/discrete/tests/test_discrete.py new file mode 100644 index 0000000..256a5f1 --- /dev/null +++ b/statsmodels/discrete/tests/test_discrete.py @@ -0,0 +1,2373 @@ +""" +Tests for discrete models + +Notes +----- +DECIMAL_3 is used because it seems that there is a loss of precision +in the Stata *.dta -> *.csv output, NOT the estimator for the Poisson +tests. +""" +# pylint: disable-msg=E1101 +from statsmodels.compat.python import range + +import os +import warnings + +import numpy as np +import pandas as pd +from numpy.testing import (assert_, assert_raises, assert_almost_equal, + assert_equal, assert_array_equal, assert_allclose, + assert_array_less) +import pytest + +from statsmodels.discrete.discrete_model import (Logit, Probit, MNLogit, + Poisson, NegativeBinomial, + CountModel, GeneralizedPoisson, + NegativeBinomialP) +from statsmodels.discrete.discrete_margins import _iscount, _isdummy +import statsmodels.api as sm +import statsmodels.formula.api as smf +from .results.results_discrete import Spector, DiscreteL1, RandHIE, Anes +from statsmodels.tools.sm_exceptions import (PerfectSeparationError, + SpecificationWarning) +from scipy.stats import nbinom + +try: + import cvxopt # noqa:F401 + has_cvxopt = True +except ImportError: + has_cvxopt = False + + +DECIMAL_14 = 14 +DECIMAL_10 = 10 +DECIMAL_9 = 9 +DECIMAL_4 = 4 +DECIMAL_3 = 3 +DECIMAL_2 = 2 +DECIMAL_1 = 1 +DECIMAL_0 = 0 + + +class CheckModelMixin(object): + # Assertions about the Model object, as opposed to the Results + # Assumes that mixed-in class implements: + # res1 + + def test_fit_regularized_invalid_method(self): + # GH#5224 check we get ValueError when passing invalid "method" arg + model = self.res1.model + + with pytest.raises(ValueError, match=r'is not supported, use either'): + model.fit_regularized(method="foo") + + +class CheckModelResults(CheckModelMixin): + """ + res2 should be the test results from RModelWrap + or the results as defined in model_results_data + """ + + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, DECIMAL_4) + + def test_conf_int(self): + assert_allclose(self.res1.conf_int(), self.res2.conf_int, rtol=8e-5) + + def test_zstat(self): + assert_almost_equal(self.res1.tvalues, self.res2.z, DECIMAL_4) + + def test_pvalues(self): + assert_almost_equal(self.res1.pvalues, self.res2.pvalues, DECIMAL_4) + + def test_cov_params(self): + if not hasattr(self.res2, "cov_params"): + raise pytest.skip("TODO: implement res2.cov_params") + assert_almost_equal(self.res1.cov_params(), + self.res2.cov_params, + DECIMAL_4) + + def test_llf(self): + assert_almost_equal(self.res1.llf, self.res2.llf, DECIMAL_4) + + def test_llnull(self): + assert_almost_equal(self.res1.llnull, self.res2.llnull, DECIMAL_4) + + def test_llr(self): + assert_almost_equal(self.res1.llr, self.res2.llr, DECIMAL_3) + + def test_llr_pvalue(self): + assert_almost_equal(self.res1.llr_pvalue, + self.res2.llr_pvalue, + DECIMAL_4) + + @pytest.mark.xfail(reason="Test has not been implemented for this class.", + strict=True, raises=NotImplementedError) + def test_normalized_cov_params(self): + raise NotImplementedError + + def test_bse(self): + assert_almost_equal(self.res1.bse, self.res2.bse, DECIMAL_4) + + def test_dof(self): + assert_equal(self.res1.df_model, self.res2.df_model) + assert_equal(self.res1.df_resid, self.res2.df_resid) + + def test_aic(self): + assert_almost_equal(self.res1.aic, self.res2.aic, DECIMAL_3) + + def test_bic(self): + assert_almost_equal(self.res1.bic, self.res2.bic, DECIMAL_3) + + def test_predict(self): + assert_almost_equal(self.res1.model.predict(self.res1.params), + self.res2.phat, DECIMAL_4) + + def test_predict_xb(self): + assert_almost_equal(self.res1.model.predict(self.res1.params, + linear=True), + self.res2.yhat, DECIMAL_4) + + def test_loglikeobs(self): + #basic cross check + llobssum = self.res1.model.loglikeobs(self.res1.params).sum() + assert_almost_equal(llobssum, self.res1.llf, DECIMAL_14) + + def test_jac(self): + #basic cross check + jacsum = self.res1.model.score_obs(self.res1.params).sum(0) + score = self.res1.model.score(self.res1.params) + assert_almost_equal(jacsum, score, DECIMAL_9) #Poisson has low precision ? + + +class CheckBinaryResults(CheckModelResults): + def test_pred_table(self): + assert_array_equal(self.res1.pred_table(), self.res2.pred_table) + + def test_resid_dev(self): + assert_almost_equal(self.res1.resid_dev, self.res2.resid_dev, + DECIMAL_4) + + def test_resid_generalized(self): + assert_almost_equal(self.res1.resid_generalized, + self.res2.resid_generalized, DECIMAL_4) + + @pytest.mark.smoke + def test_resid_response(self): + self.res1.resid_response + + +class CheckMargEff(object): + """ + Test marginal effects (margeff) and its options + """ + + def test_nodummy_dydxoverall(self): + me = self.res1.get_margeff() + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_dydx, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_dydx_se, DECIMAL_4) + + me_frame = me.summary_frame() + eff = me_frame["dy/dx"].values + assert_allclose(eff, me.margeff, rtol=1e-13) + assert_equal(me_frame.shape, (me.margeff.size, 6)) + + + def test_nodummy_dydxmean(self): + me = self.res1.get_margeff(at='mean') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_dydxmean, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_dydxmean_se, DECIMAL_4) + + def test_nodummy_dydxmedian(self): + me = self.res1.get_margeff(at='median') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_dydxmedian, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_dydxmedian_se, DECIMAL_4) + + def test_nodummy_dydxzero(self): + me = self.res1.get_margeff(at='zero') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_dydxzero, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_dydxzero, DECIMAL_4) + + def test_nodummy_dyexoverall(self): + me = self.res1.get_margeff(method='dyex') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_dyex, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_dyex_se, DECIMAL_4) + + def test_nodummy_dyexmean(self): + me = self.res1.get_margeff(at='mean', method='dyex') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_dyexmean, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_dyexmean_se, DECIMAL_4) + + def test_nodummy_dyexmedian(self): + me = self.res1.get_margeff(at='median', method='dyex') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_dyexmedian, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_dyexmedian_se, DECIMAL_4) + + def test_nodummy_dyexzero(self): + me = self.res1.get_margeff(at='zero', method='dyex') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_dyexzero, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_dyexzero_se, DECIMAL_4) + + def test_nodummy_eydxoverall(self): + me = self.res1.get_margeff(method='eydx') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_eydx, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_eydx_se, DECIMAL_4) + + def test_nodummy_eydxmean(self): + me = self.res1.get_margeff(at='mean', method='eydx') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_eydxmean, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_eydxmean_se, DECIMAL_4) + + def test_nodummy_eydxmedian(self): + me = self.res1.get_margeff(at='median', method='eydx') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_eydxmedian, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_eydxmedian_se, DECIMAL_4) + + def test_nodummy_eydxzero(self): + me = self.res1.get_margeff(at='zero', method='eydx') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_eydxzero, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_eydxzero_se, DECIMAL_4) + + def test_nodummy_eyexoverall(self): + me = self.res1.get_margeff(method='eyex') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_eyex, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_eyex_se, DECIMAL_4) + + def test_nodummy_eyexmean(self): + me = self.res1.get_margeff(at='mean', method='eyex') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_eyexmean, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_eyexmean_se, DECIMAL_4) + + def test_nodummy_eyexmedian(self): + me = self.res1.get_margeff(at='median', method='eyex') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_eyexmedian, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_eyexmedian_se, DECIMAL_4) + + def test_nodummy_eyexzero(self): + me = self.res1.get_margeff(at='zero', method='eyex') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_eyexzero, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_eyexzero_se, DECIMAL_4) + + def test_dummy_dydxoverall(self): + me = self.res1.get_margeff(dummy=True) + assert_almost_equal(me.margeff, + self.res2.margeff_dummy_dydx, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_dummy_dydx_se, DECIMAL_4) + + def test_dummy_dydxmean(self): + me = self.res1.get_margeff(at='mean', dummy=True) + assert_almost_equal(me.margeff, + self.res2.margeff_dummy_dydxmean, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_dummy_dydxmean_se, DECIMAL_4) + + def test_dummy_eydxoverall(self): + me = self.res1.get_margeff(method='eydx', dummy=True) + assert_almost_equal(me.margeff, + self.res2.margeff_dummy_eydx, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_dummy_eydx_se, DECIMAL_4) + + def test_dummy_eydxmean(self): + me = self.res1.get_margeff(at='mean', method='eydx', dummy=True) + assert_almost_equal(me.margeff, + self.res2.margeff_dummy_eydxmean, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_dummy_eydxmean_se, DECIMAL_4) + + def test_count_dydxoverall(self): + me = self.res1.get_margeff(count=True) + assert_almost_equal(me.margeff, + self.res2.margeff_count_dydx, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_count_dydx_se, DECIMAL_4) + + def test_count_dydxmean(self): + me = self.res1.get_margeff(count=True, at='mean') + assert_almost_equal(me.margeff, + self.res2.margeff_count_dydxmean, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_count_dydxmean_se, DECIMAL_4) + + def test_count_dummy_dydxoverall(self): + me = self.res1.get_margeff(count=True, dummy=True) + assert_almost_equal(me.margeff, + self.res2.margeff_count_dummy_dydxoverall, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_count_dummy_dydxoverall_se, DECIMAL_4) + + def test_count_dummy_dydxmean(self): + me = self.res1.get_margeff(count=True, dummy=True, at='mean') + assert_almost_equal(me.margeff, + self.res2.margeff_count_dummy_dydxmean, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_count_dummy_dydxmean_se, DECIMAL_4) + + +class TestProbitNewton(CheckBinaryResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + cls.res1 = Probit(data.endog, data.exog).fit(method="newton", disp=0) + res2 = Spector.probit + cls.res2 = res2 + + #def test_predict(self): + # assert_almost_equal(self.res1.model.predict(self.res1.params), + # self.res2.predict, DECIMAL_4) + + +class TestProbitBFGS(CheckBinaryResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + cls.res1 = Probit(data.endog, data.exog).fit(method="bfgs", + disp=0) + res2 = Spector.probit + cls.res2 = res2 + + +class TestProbitNM(CheckBinaryResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + res2 = Spector.probit + cls.res2 = res2 + cls.res1 = Probit(data.endog, data.exog).fit(method="nm", + disp=0, maxiter=500) + + +class TestProbitPowell(CheckBinaryResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + res2 = Spector.probit + cls.res2 = res2 + cls.res1 = Probit(data.endog, data.exog).fit(method="powell", + disp=0, ftol=1e-8) + + +class TestProbitCG(CheckBinaryResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + res2 = Spector.probit + cls.res2 = res2 + + # fmin_cg fails to converge on some machines - reparameterize + from statsmodels.tools.transform_model import StandardizeTransform + transf = StandardizeTransform(data.exog) + exog_st = transf(data.exog) + res1_st = Probit(data.endog, + exog_st).fit(method="cg", disp=0, maxiter=1000, + gtol=1e-08) + start_params = transf.transform_params(res1_st.params) + assert_allclose(start_params, res2.params, rtol=1e-5, atol=1e-6) + + cls.res1 = Probit(data.endog, + data.exog).fit(start_params=start_params, + method="cg", maxiter=1000, + gtol=1e-05, disp=0) + + assert_array_less(cls.res1.mle_retvals['fcalls'], 100) + + +class TestProbitNCG(CheckBinaryResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + res2 = Spector.probit + cls.res2 = res2 + cls.res1 = Probit(data.endog, data.exog).fit(method="ncg", + disp=0, avextol=1e-8, + warn_convergence=False) + # converges close enough but warnflag is 2 for precision loss + + +class TestProbitBasinhopping(CheckBinaryResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + res2 = Spector.probit + cls.res2 = res2 + fit = Probit(data.endog, data.exog).fit + np.random.seed(1) + cls.res1 = fit(method="basinhopping", disp=0, niter=5, + minimizer={'method' : 'L-BFGS-B', 'tol' : 1e-8}) + + +class TestProbitMinimizeDefault(CheckBinaryResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + res2 = Spector.probit + cls.res2 = res2 + fit = Probit(data.endog, data.exog).fit + cls.res1 = fit(method="minimize", disp=0, niter=5, tol = 1e-8) + + +class TestProbitMinimizeDogleg(CheckBinaryResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + res2 = Spector.probit + cls.res2 = res2 + fit = Probit(data.endog, data.exog).fit + cls.res1 = fit(method="minimize", disp=0, niter=5, tol = 1e-8, + min_method = 'dogleg') + + +class TestProbitMinimizeAdditionalOptions(CheckBinaryResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + res2 = Spector.probit + cls.res2 = res2 + cls.res1 = Probit(data.endog, data.exog).fit(method="minimize", disp=0, + maxiter=500, + min_method='Nelder-Mead', + xatol=1e-4, fatol=1e-4) + +class CheckLikelihoodModelL1(object): + """ + For testing results generated with L1 regularization + """ + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, DECIMAL_4) + + def test_conf_int(self): + assert_almost_equal( + self.res1.conf_int(), self.res2.conf_int, DECIMAL_4) + + def test_bse(self): + assert_almost_equal(self.res1.bse, self.res2.bse, DECIMAL_4) + + def test_nnz_params(self): + assert_almost_equal( + self.res1.nnz_params, self.res2.nnz_params, DECIMAL_4) + + def test_aic(self): + assert_almost_equal( + self.res1.aic, self.res2.aic, DECIMAL_3) + + def test_bic(self): + assert_almost_equal( + self.res1.bic, self.res2.bic, DECIMAL_3) + + +class TestProbitL1(CheckLikelihoodModelL1): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=True) + alpha = np.array([0.1, 0.2, 0.3, 10]) #/ data.exog.shape[0] + cls.res1 = Probit(data.endog, data.exog).fit_regularized( + method="l1", alpha=alpha, disp=0, trim_mode='auto', + auto_trim_tol=0.02, acc=1e-10, maxiter=1000) + res2 = DiscreteL1.probit + cls.res2 = res2 + + def test_cov_params(self): + assert_almost_equal( + self.res1.cov_params(), self.res2.cov_params, DECIMAL_4) + + +class TestMNLogitL1(CheckLikelihoodModelL1): + + @classmethod + def setup_class(cls): + anes_data = sm.datasets.anes96.load(as_pandas=False) + anes_exog = anes_data.exog + anes_exog = sm.add_constant(anes_exog, prepend=False) + mlogit_mod = sm.MNLogit(anes_data.endog, anes_exog) + alpha = 10. * np.ones((mlogit_mod.J - 1, mlogit_mod.K)) #/ anes_exog.shape[0] + alpha[-1,:] = 0 + cls.res1 = mlogit_mod.fit_regularized( + method='l1', alpha=alpha, trim_mode='auto', auto_trim_tol=0.02, + acc=1e-10, disp=0) + res2 = DiscreteL1.mnlogit + cls.res2 = res2 + + +class TestLogitL1(CheckLikelihoodModelL1): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=True) + cls.alpha = 3 * np.array([0., 1., 1., 1.]) #/ data.exog.shape[0] + cls.res1 = Logit(data.endog, data.exog).fit_regularized( + method="l1", alpha=cls.alpha, disp=0, trim_mode='size', + size_trim_tol=1e-5, acc=1e-10, maxiter=1000) + res2 = DiscreteL1.logit + cls.res2 = res2 + + def test_cov_params(self): + assert_almost_equal( + self.res1.cov_params(), self.res2.cov_params, DECIMAL_4) + + +@pytest.mark.skipif(not has_cvxopt, reason='Skipped test_cvxopt since cvxopt ' + 'is not available') +class TestCVXOPT(object): + + @classmethod + def setup_class(cls): + if not has_cvxopt: + pytest.skip('Skipped test_cvxopt since cvxopt is not available') + cls.data = sm.datasets.spector.load() + cls.data.exog = sm.add_constant(cls.data.exog, prepend=True) + + def test_cvxopt_versus_slsqp(self): + #Compares resutls from cvxopt to the standard slsqp + self.alpha = 3. * np.array([0, 1, 1, 1.]) #/ self.data.endog.shape[0] + res_slsqp = Logit(self.data.endog, self.data.exog).fit_regularized( + method="l1", alpha=self.alpha, disp=0, acc=1e-10, maxiter=1000, + trim_mode='auto') + res_cvxopt = Logit(self.data.endog, self.data.exog).fit_regularized( + method="l1_cvxopt_cp", alpha=self.alpha, disp=0, abstol=1e-10, + trim_mode='auto', auto_trim_tol=0.01, maxiter=1000) + assert_almost_equal(res_slsqp.params, res_cvxopt.params, DECIMAL_4) + + +class TestSweepAlphaL1(object): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=True) + cls.model = Logit(data.endog, data.exog) + cls.alphas = np.array( + [[0.1, 0.1, 0.1, 0.1], + [0.4, 0.4, 0.5, 0.5], + [0.5, 0.5, 1, 1]]) #/ data.exog.shape[0] + cls.res1 = DiscreteL1.sweep + + def test_sweep_alpha(self): + for i in range(3): + alpha = self.alphas[i, :] + res2 = self.model.fit_regularized( + method="l1", alpha=alpha, disp=0, acc=1e-10, + trim_mode='off', maxiter=1000) + assert_almost_equal(res2.params, self.res1.params[i], DECIMAL_4) + + +class CheckL1Compatability(object): + """ + Tests compatability between l1 and unregularized by setting alpha such + that certain parameters should be effectively unregularized, and others + should be ignored by the model. + """ + def test_params(self): + m = self.m + assert_almost_equal( + self.res_unreg.params[:m], self.res_reg.params[:m], DECIMAL_4) + # The last entry should be close to zero + # handle extra parameter of NegativeBinomial + kvars = self.res_reg.model.exog.shape[1] + assert_almost_equal(0, self.res_reg.params[m:kvars], DECIMAL_4) + + def test_cov_params(self): + m = self.m + # The restricted cov_params should be equal + assert_almost_equal( + self.res_unreg.cov_params()[:m, :m], + self.res_reg.cov_params()[:m, :m], + DECIMAL_1) + + def test_df(self): + assert_equal(self.res_unreg.df_model, self.res_reg.df_model) + assert_equal(self.res_unreg.df_resid, self.res_reg.df_resid) + + def test_t_test(self): + m = self.m + kvars = self.kvars + # handle extra parameter of NegativeBinomial + extra = getattr(self, 'k_extra', 0) + t_unreg = self.res_unreg.t_test(np.eye(len(self.res_unreg.params))) + t_reg = self.res_reg.t_test(np.eye(kvars + extra)) + assert_almost_equal(t_unreg.effect[:m], t_reg.effect[:m], DECIMAL_3) + assert_almost_equal(t_unreg.sd[:m], t_reg.sd[:m], DECIMAL_3) + assert_almost_equal(np.nan, t_reg.sd[m]) + assert_allclose(t_unreg.tvalue[:m], t_reg.tvalue[:m], atol=3e-3) + assert_almost_equal(np.nan, t_reg.tvalue[m]) + + def test_f_test(self): + m = self.m + kvars = self.kvars + # handle extra parameter of NegativeBinomial + extra = getattr(self, 'k_extra', 0) + f_unreg = self.res_unreg.f_test(np.eye(len(self.res_unreg.params))[:m]) + f_reg = self.res_reg.f_test(np.eye(kvars + extra)[:m]) + assert_allclose(f_unreg.fvalue, f_reg.fvalue, rtol=3e-5, atol=1e-3) + assert_almost_equal(f_unreg.pvalue, f_reg.pvalue, DECIMAL_3) + + def test_bad_r_matrix(self): + kvars = self.kvars + assert_raises(ValueError, self.res_reg.f_test, np.eye(kvars) ) + + +class TestPoissonL1Compatability(CheckL1Compatability): + + @classmethod + def setup_class(cls): + cls.kvars = 10 # Number of variables + cls.m = 7 # Number of unregularized parameters + rand_data = sm.datasets.randhie.load(as_pandas=False) + rand_exog = rand_data.exog.view(float).reshape(len(rand_data.exog), -1) + rand_exog = sm.add_constant(rand_exog, prepend=True) + # Drop some columns and do an unregularized fit + exog_no_PSI = rand_exog[:, :cls.m] + mod_unreg = sm.Poisson(rand_data.endog, exog_no_PSI) + cls.res_unreg = mod_unreg.fit(method="newton", disp=False) + # Do a regularized fit with alpha, effectively dropping the last column + alpha = 10 * len(rand_data.endog) * np.ones(cls.kvars) + alpha[:cls.m] = 0 + cls.res_reg = sm.Poisson(rand_data.endog, rand_exog).fit_regularized( + method='l1', alpha=alpha, disp=False, acc=1e-10, maxiter=2000, + trim_mode='auto') + + +class TestNegativeBinomialL1Compatability(CheckL1Compatability): + + @classmethod + def setup_class(cls): + cls.kvars = 10 # Number of variables + cls.m = 7 # Number of unregularized parameters + rand_data = sm.datasets.randhie.load(as_pandas=False) + rand_exog = rand_data.exog.view(float).reshape(len(rand_data.exog), -1) + rand_exog_st = (rand_exog - rand_exog.mean(0)) / rand_exog.std(0) + rand_exog = sm.add_constant(rand_exog_st, prepend=True) + # Drop some columns and do an unregularized fit + exog_no_PSI = rand_exog[:, :cls.m] + mod_unreg = sm.NegativeBinomial(rand_data.endog, exog_no_PSI) + cls.res_unreg = mod_unreg.fit(method="newton", disp=False) + # Do a regularized fit with alpha, effectively dropping the last column + alpha = 10 * len(rand_data.endog) * np.ones(cls.kvars + 1) + alpha[:cls.m] = 0 + alpha[-1] = 0 # don't penalize alpha + + mod_reg = sm.NegativeBinomial(rand_data.endog, rand_exog) + cls.res_reg = mod_reg.fit_regularized( + method='l1', alpha=alpha, disp=False, acc=1e-10, maxiter=2000, + trim_mode='auto') + cls.k_extra = 1 # 1 extra parameter in nb2 + + +class TestNegativeBinomialGeoL1Compatability(CheckL1Compatability): + + @classmethod + def setup_class(cls): + cls.kvars = 10 # Number of variables + cls.m = 7 # Number of unregularized parameters + rand_data = sm.datasets.randhie.load(as_pandas=False) + rand_exog = rand_data.exog.view(float).reshape(len(rand_data.exog), -1) + rand_exog = sm.add_constant(rand_exog, prepend=True) + # Drop some columns and do an unregularized fit + exog_no_PSI = rand_exog[:, :cls.m] + mod_unreg = sm.NegativeBinomial(rand_data.endog, exog_no_PSI, + loglike_method='geometric') + cls.res_unreg = mod_unreg.fit(method="newton", disp=False) + # Do a regularized fit with alpha, effectively dropping the last columns + alpha = 10 * len(rand_data.endog) * np.ones(cls.kvars) + alpha[:cls.m] = 0 + mod_reg = sm.NegativeBinomial(rand_data.endog, rand_exog, + loglike_method='geometric') + cls.res_reg = mod_reg.fit_regularized( + method='l1', alpha=alpha, disp=False, acc=1e-10, maxiter=2000, + trim_mode='auto') + + assert_equal(mod_reg.loglike_method, 'geometric') + + +class TestLogitL1Compatability(CheckL1Compatability): + + @classmethod + def setup_class(cls): + cls.kvars = 4 # Number of variables + cls.m = 3 # Number of unregularized parameters + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=True) + # Do a regularized fit with alpha, effectively dropping the last column + alpha = np.array([0, 0, 0, 10]) + cls.res_reg = Logit(data.endog, data.exog).fit_regularized( + method="l1", alpha=alpha, disp=0, acc=1e-15, maxiter=2000, + trim_mode='auto') + # Actually drop the last columnand do an unregularized fit + exog_no_PSI = data.exog[:, :cls.m] + cls.res_unreg = Logit(data.endog, exog_no_PSI).fit(disp=0, tol=1e-15) + + +class TestMNLogitL1Compatability(CheckL1Compatability): + + @classmethod + def setup_class(cls): + cls.kvars = 4 # Number of variables + cls.m = 3 # Number of unregularized parameters + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=True) + alpha = np.array([0, 0, 0, 10]) + cls.res_reg = MNLogit(data.endog, data.exog).fit_regularized( + method="l1", alpha=alpha, disp=0, acc=1e-15, maxiter=2000, + trim_mode='auto') + # Actually drop the last columnand do an unregularized fit + exog_no_PSI = data.exog[:, :cls.m] + cls.res_unreg = MNLogit(data.endog, exog_no_PSI).fit( + disp=0, tol=1e-15, method='bfgs', maxiter=1000) + + def test_t_test(self): + m = self.m + kvars = self.kvars + t_unreg = self.res_unreg.t_test(np.eye(m)) + t_reg = self.res_reg.t_test(np.eye(kvars)) + assert_almost_equal(t_unreg.effect, t_reg.effect[:m], DECIMAL_3) + assert_almost_equal(t_unreg.sd, t_reg.sd[:m], DECIMAL_3) + assert_almost_equal(np.nan, t_reg.sd[m]) + assert_almost_equal(t_unreg.tvalue, t_reg.tvalue[:m, :m], DECIMAL_3) + + @pytest.mark.skip("Skipped test_f_test for MNLogit") + def test_f_test(self): + pass + + +class TestProbitL1Compatability(CheckL1Compatability): + + @classmethod + def setup_class(cls): + cls.kvars = 4 # Number of variables + cls.m = 3 # Number of unregularized parameters + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=True) + alpha = np.array([0, 0, 0, 10]) + cls.res_reg = Probit(data.endog, data.exog).fit_regularized( + method="l1", alpha=alpha, disp=0, acc=1e-15, maxiter=2000, + trim_mode='auto') + # Actually drop the last columnand do an unregularized fit + exog_no_PSI = data.exog[:, :cls.m] + cls.res_unreg = Probit(data.endog, exog_no_PSI).fit(disp=0, tol=1e-15) + + +class CompareL1(object): + """ + For checking results for l1 regularization. + Assumes self.res1 and self.res2 are two legitimate models to be compared. + """ + def test_basic_results(self): + assert_almost_equal(self.res1.params, self.res2.params, DECIMAL_4) + assert_almost_equal(self.res1.cov_params(), self.res2.cov_params(), + DECIMAL_4) + assert_almost_equal(self.res1.conf_int(), self.res2.conf_int(), + DECIMAL_4) + assert_almost_equal(self.res1.pvalues, self.res2.pvalues, DECIMAL_4) + assert_almost_equal(self.res1.pred_table(), self.res2.pred_table(), + DECIMAL_4) + assert_almost_equal(self.res1.bse, self.res2.bse, DECIMAL_4) + assert_almost_equal(self.res1.llf, self.res2.llf, DECIMAL_4) + assert_almost_equal(self.res1.aic, self.res2.aic, DECIMAL_4) + assert_almost_equal(self.res1.bic, self.res2.bic, DECIMAL_4) + assert_almost_equal(self.res1.pvalues, self.res2.pvalues, DECIMAL_4) + + assert_(self.res1.mle_retvals['converged'] is True) + + +class CompareL11D(CompareL1): + """ + Check t and f tests. This only works for 1-d results + """ + def test_tests(self): + restrictmat = np.eye(len(self.res1.params.ravel())) + assert_almost_equal(self.res1.t_test(restrictmat).pvalue, + self.res2.t_test(restrictmat).pvalue, DECIMAL_4) + assert_almost_equal(self.res1.f_test(restrictmat).pvalue, + self.res2.f_test(restrictmat).pvalue, DECIMAL_4) + + +class TestL1AlphaZeroLogit(CompareL11D): + # Compares l1 model with alpha = 0 to the unregularized model. + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=True) + cls.res1 = Logit(data.endog, data.exog).fit_regularized( + method="l1", alpha=0, disp=0, acc=1e-15, maxiter=1000, + trim_mode='auto', auto_trim_tol=0.01) + cls.res2 = Logit(data.endog, data.exog).fit(disp=0, tol=1e-15) + + def test_converged(self): + res = self.res1.model.fit_regularized( + method="l1", alpha=0, disp=0, acc=1e-15, maxiter=1, + trim_mode='auto', auto_trim_tol=0.01) + + # see #2857 + assert_(res.mle_retvals['converged'] is False) + + +class TestL1AlphaZeroProbit(CompareL11D): + # Compares l1 model with alpha = 0 to the unregularized model. + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=True) + cls.res1 = Probit(data.endog, data.exog).fit_regularized( + method="l1", alpha=0, disp=0, acc=1e-15, maxiter=1000, + trim_mode='auto', auto_trim_tol=0.01) + cls.res2 = Probit(data.endog, data.exog).fit(disp=0, tol=1e-15) + + +class TestL1AlphaZeroMNLogit(CompareL1): + + @classmethod + def setup_class(cls): + data = sm.datasets.anes96.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + cls.res1 = MNLogit(data.endog, data.exog).fit_regularized( + method="l1", alpha=0, disp=0, acc=1e-15, maxiter=1000, + trim_mode='auto', auto_trim_tol=0.01) + cls.res2 = MNLogit(data.endog, data.exog).fit(disp=0, tol=1e-15, + method='bfgs', + maxiter=1000) + + +class TestLogitNewton(CheckBinaryResults, CheckMargEff): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + cls.res1 = Logit(data.endog, data.exog).fit(method="newton", disp=0) + res2 = Spector.logit + cls.res2 = res2 + + def test_resid_pearson(self): + assert_almost_equal(self.res1.resid_pearson, + self.res2.resid_pearson, 5) + + def test_nodummy_exog1(self): + me = self.res1.get_margeff(atexog={0 : 2.0, 2 : 1.}) + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_atexog1, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_atexog1_se, DECIMAL_4) + + def test_nodummy_exog2(self): + me = self.res1.get_margeff(atexog={1 : 21., 2 : 0}, at='mean') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_atexog2, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_atexog2_se, DECIMAL_4) + + def test_dummy_exog1(self): + me = self.res1.get_margeff(atexog={0 : 2.0, 2 : 1.}, dummy=True) + assert_almost_equal(me.margeff, + self.res2.margeff_dummy_atexog1, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_dummy_atexog1_se, DECIMAL_4) + + def test_dummy_exog2(self): + me = self.res1.get_margeff(atexog={1 : 21., 2 : 0}, at='mean', + dummy=True) + assert_almost_equal(me.margeff, + self.res2.margeff_dummy_atexog2, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_dummy_atexog2_se, DECIMAL_4) + + +class TestLogitNewtonPrepend(CheckMargEff): + # same as previous version but adjusted for add_constant prepend=True + # bug #3695 + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=True) + cls.res1 = Logit(data.endog, data.exog).fit(method="newton", disp=0) + res2 = Spector.logit + cls.res2 = res2 + cls.slice = np.roll(np.arange(len(cls.res1.params)), 1) #.astype(int) + + def test_resid_pearson(self): + assert_almost_equal(self.res1.resid_pearson, + self.res2.resid_pearson, 5) + + def test_nodummy_exog1(self): + me = self.res1.get_margeff(atexog={1 : 2.0, 3 : 1.}) + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_atexog1, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_atexog1_se, DECIMAL_4) + + def test_nodummy_exog2(self): + me = self.res1.get_margeff(atexog={2 : 21., 3 : 0}, at='mean') + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_atexog2, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_atexog2_se, DECIMAL_4) + + def test_dummy_exog1(self): + me = self.res1.get_margeff(atexog={1 : 2.0, 3 : 1.}, dummy=True) + assert_almost_equal(me.margeff, + self.res2.margeff_dummy_atexog1, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_dummy_atexog1_se, DECIMAL_4) + + def test_dummy_exog2(self): + me = self.res1.get_margeff(atexog={2 : 21., 3 : 0}, at='mean', + dummy=True) + assert_almost_equal(me.margeff, + self.res2.margeff_dummy_atexog2, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_dummy_atexog2_se, DECIMAL_4) + + +class TestLogitBFGS(CheckBinaryResults, CheckMargEff): + + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + res2 = Spector.logit + cls.res2 = res2 + cls.res1 = Logit(data.endog, data.exog).fit(method="bfgs", disp=0) + + +class TestPoissonNewton(CheckModelResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + exog = sm.add_constant(data.exog, prepend=False) + cls.res1 = Poisson(data.endog, exog).fit(method='newton', disp=0) + res2 = RandHIE.poisson + cls.res2 = res2 + + def test_margeff_overall(self): + me = self.res1.get_margeff() + assert_almost_equal(me.margeff, + self.res2.margeff_nodummy_overall, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_nodummy_overall_se, DECIMAL_4) + + def test_margeff_dummy_overall(self): + me = self.res1.get_margeff(dummy=True) + assert_almost_equal(me.margeff, + self.res2.margeff_dummy_overall, DECIMAL_4) + assert_almost_equal(me.margeff_se, + self.res2.margeff_dummy_overall_se, DECIMAL_4) + + def test_resid(self): + assert_almost_equal(self.res1.resid, self.res2.resid, 2) + + def test_predict_prob(self): + cur_dir = os.path.dirname(os.path.abspath(__file__)) + path = os.path.join(cur_dir, "results", "predict_prob_poisson.csv") + probs_res = np.loadtxt(path, delimiter=",") + + # just check the first 100 obs. vs R to save memory + probs = self.res1.predict_prob()[:100] + assert_almost_equal(probs, probs_res, 8) + + @pytest.mark.xfail(reason="res2.cov_params is a zero-dim array of None", + strict=True) + def test_cov_params(self): + super(TestPoissonNewton, self).test_cov_params() + + +class CheckNegBinMixin(object): + # Test methods shared by TestNegativeBinomialXYZ classes + + @pytest.mark.xfail(reason="pvalues do not match, in some cases wrong size", + strict=True, raises=AssertionError) + def test_pvalues(self): + assert_almost_equal(self.res1.pvalues, + self.res2.pvalues, + DECIMAL_4) + + +class TestNegativeBinomialNB2Newton(CheckNegBinMixin, CheckModelResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + exog = sm.add_constant(data.exog, prepend=False) + cls.res1 = NegativeBinomial(data.endog, exog, 'nb2').fit(method='newton', disp=0) + res2 = RandHIE.negativebinomial_nb2_bfgs + cls.res2 = res2 + + #NOTE: The bse is much closer precitions to stata + def test_bse(self): + assert_almost_equal(self.res1.bse, self.res2.bse, DECIMAL_3) + + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, DECIMAL_4) + + def test_alpha(self): + self.res1.bse # attaches alpha_std_err + assert_almost_equal(self.res1.lnalpha, self.res2.lnalpha, + DECIMAL_4) + assert_almost_equal(self.res1.lnalpha_std_err, + self.res2.lnalpha_std_err, DECIMAL_4) + + def test_conf_int(self): + assert_almost_equal(self.res1.conf_int(), self.res2.conf_int, + DECIMAL_3) + + def test_zstat(self): # Low precision because Z vs. t + assert_almost_equal(self.res1.pvalues[:-1], self.res2.pvalues, + DECIMAL_2) + + def test_fittedvalues(self): + assert_almost_equal(self.res1.fittedvalues[:10], + self.res2.fittedvalues[:10], DECIMAL_3) + + def test_predict(self): + assert_almost_equal(self.res1.predict()[:10], + np.exp(self.res2.fittedvalues[:10]), DECIMAL_3) + + def test_predict_xb(self): + assert_almost_equal(self.res1.predict(linear=True)[:10], + self.res2.fittedvalues[:10], DECIMAL_3) + + +class TestNegativeBinomialNB1Newton(CheckNegBinMixin, CheckModelResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + exog = sm.add_constant(data.exog, prepend=False) + model = NegativeBinomial(data.endog, exog, 'nb1') + cls.res1 = model.fit(method="newton", maxiter=100, disp=0) + res2 = RandHIE.negativebinomial_nb1_bfgs + cls.res2 = res2 + + def test_zstat(self): + assert_almost_equal(self.res1.tvalues, self.res2.z, DECIMAL_1) + + def test_lnalpha(self): + self.res1.bse # attaches alpha_std_err + assert_almost_equal(self.res1.lnalpha, self.res2.lnalpha, 3) + assert_almost_equal(self.res1.lnalpha_std_err, + self.res2.lnalpha_std_err, DECIMAL_4) + + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, DECIMAL_4) + + def test_conf_int(self): + # the bse for alpha is not high precision from the hessian + # approximation + assert_almost_equal(self.res1.conf_int(), self.res2.conf_int, + DECIMAL_2) + + @pytest.mark.xfail(reason="Test has not been implemented for this class.", + strict=True, raises=NotImplementedError) + def test_predict(self): + raise NotImplementedError + + @pytest.mark.xfail(reason="Test has not been implemented for this class.", + strict=True, raises=NotImplementedError) + def test_predict_xb(self): + raise NotImplementedError + + +class TestNegativeBinomialNB2BFGS(CheckNegBinMixin, CheckModelResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + exog = sm.add_constant(data.exog, prepend=False) + cls.res1 = NegativeBinomial(data.endog, exog, 'nb2').fit( + method='bfgs', disp=0, + maxiter=1000) + res2 = RandHIE.negativebinomial_nb2_bfgs + cls.res2 = res2 + + #NOTE: The bse is much closer precitions to stata + def test_bse(self): + assert_almost_equal(self.res1.bse, self.res2.bse, DECIMAL_3) + + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, DECIMAL_4) + + def test_alpha(self): + self.res1.bse # attaches alpha_std_err + assert_almost_equal(self.res1.lnalpha, self.res2.lnalpha, + DECIMAL_4) + assert_almost_equal(self.res1.lnalpha_std_err, + self.res2.lnalpha_std_err, DECIMAL_4) + + def test_conf_int(self): + assert_almost_equal(self.res1.conf_int(), self.res2.conf_int, + DECIMAL_3) + + def test_zstat(self): # Low precision because Z vs. t + assert_almost_equal(self.res1.pvalues[:-1], self.res2.pvalues, + DECIMAL_2) + + def test_fittedvalues(self): + assert_almost_equal(self.res1.fittedvalues[:10], + self.res2.fittedvalues[:10], DECIMAL_3) + + def test_predict(self): + assert_almost_equal(self.res1.predict()[:10], + np.exp(self.res2.fittedvalues[:10]), DECIMAL_3) + + def test_predict_xb(self): + assert_almost_equal(self.res1.predict(linear=True)[:10], + self.res2.fittedvalues[:10], DECIMAL_3) + + +class TestNegativeBinomialNB1BFGS(CheckNegBinMixin, CheckModelResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + exog = sm.add_constant(data.exog, prepend=False) + cls.res1 = NegativeBinomial(data.endog, exog, 'nb1').fit(method="bfgs", + maxiter=100, + disp=0) + res2 = RandHIE.negativebinomial_nb1_bfgs + cls.res2 = res2 + + def test_zstat(self): + assert_almost_equal(self.res1.tvalues, self.res2.z, DECIMAL_1) + + def test_lnalpha(self): + self.res1.bse # attaches alpha_std_err + assert_almost_equal(self.res1.lnalpha, self.res2.lnalpha, 3) + assert_almost_equal(self.res1.lnalpha_std_err, + self.res2.lnalpha_std_err, DECIMAL_4) + + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, DECIMAL_4) + + def test_conf_int(self): + # the bse for alpha is not high precision from the hessian + # approximation + assert_almost_equal(self.res1.conf_int(), self.res2.conf_int, + DECIMAL_2) + + @pytest.mark.xfail(reason="Test has not been implemented for this class.", + strict=True, raises=NotImplementedError) + def test_predict(self): + raise NotImplementedError + + @pytest.mark.xfail(reason="Test has not been implemented for this class.", + strict=True, raises=NotImplementedError) + def test_predict_xb(self): + raise NotImplementedError + + +class TestNegativeBinomialGeometricBFGS(CheckNegBinMixin, CheckModelResults): + # Cannot find another implementation of the geometric to cross-check results + # we only test fitted values because geometric has fewer parameters + # than nb1 and nb2 + # and we want to make sure that predict() np.dot(exog, params) works + + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + exog = sm.add_constant(data.exog, prepend=False) + mod = NegativeBinomial(data.endog, exog, 'geometric') + cls.res1 = mod.fit(method='bfgs', disp=0) + res2 = RandHIE.negativebinomial_geometric_bfgs + cls.res2 = res2 + + # the following are regression tests, could be inherited instead + + def test_aic(self): + assert_almost_equal(self.res1.aic, self.res2.aic, DECIMAL_3) + + def test_bic(self): + assert_almost_equal(self.res1.bic, self.res2.bic, DECIMAL_3) + + def test_conf_int(self): + assert_almost_equal(self.res1.conf_int(), self.res2.conf_int, + DECIMAL_3) + + def test_fittedvalues(self): + assert_almost_equal(self.res1.fittedvalues[:10], + self.res2.fittedvalues[:10], DECIMAL_3) + + def test_predict(self): + assert_almost_equal(self.res1.predict()[:10], + np.exp(self.res2.fittedvalues[:10]), DECIMAL_3) + + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, DECIMAL_3) + + def test_predict_xb(self): + assert_almost_equal(self.res1.predict(linear=True)[:10], + self.res2.fittedvalues[:10], DECIMAL_3) + + def test_zstat(self): # Low precision because Z vs. t + assert_almost_equal(self.res1.tvalues, self.res2.z, DECIMAL_1) + + def test_llf(self): + assert_almost_equal(self.res1.llf, self.res2.llf, DECIMAL_1) + + def test_llr(self): + assert_almost_equal(self.res1.llr, self.res2.llr, DECIMAL_2) + + def test_bse(self): + assert_almost_equal(self.res1.bse, self.res2.bse, DECIMAL_3) + + +class CheckMNLogitBaseZero(CheckModelResults): + + def test_margeff_overall(self): + me = self.res1.get_margeff() + assert_almost_equal(me.margeff, self.res2.margeff_dydx_overall, 6) + assert_almost_equal(me.margeff_se, self.res2.margeff_dydx_overall_se, 6) + me_frame = me.summary_frame() + eff = me_frame["dy/dx"].values.reshape(me.margeff.shape, order="F") + assert_allclose(eff, me.margeff, rtol=1e-13) + assert_equal(me_frame.shape, (np.size(me.margeff), 6)) + + def test_margeff_mean(self): + me = self.res1.get_margeff(at='mean') + assert_almost_equal(me.margeff, self.res2.margeff_dydx_mean, 7) + assert_almost_equal(me.margeff_se, self.res2.margeff_dydx_mean_se, 7) + + def test_margeff_dummy(self): + data = self.data + vote = data.data['vote'] + exog = np.column_stack((data.exog, vote)) + exog = sm.add_constant(exog, prepend=False) + res = MNLogit(data.endog, exog).fit(method="newton", disp=0) + me = res.get_margeff(dummy=True) + assert_almost_equal(me.margeff, self.res2.margeff_dydx_dummy_overall, + 6) + assert_almost_equal(me.margeff_se, + self.res2.margeff_dydx_dummy_overall_se, 6) + me = res.get_margeff(dummy=True, method="eydx") + assert_almost_equal(me.margeff, self.res2.margeff_eydx_dummy_overall, + 5) + assert_almost_equal(me.margeff_se, + self.res2.margeff_eydx_dummy_overall_se, 6) + + def test_j(self): + assert_equal(self.res1.model.J, self.res2.J) + + def test_k(self): + assert_equal(self.res1.model.K, self.res2.K) + + def test_endog_names(self): + assert_equal(self.res1._get_endog_name(None,None)[1], + ['y=1', 'y=2', 'y=3', 'y=4', 'y=5', 'y=6']) + + def test_pred_table(self): + # fitted results taken from gretl + pred = [6, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 6, 0, 1, 6, 0, 0, + 1, 1, 6, 0, 1, 0, 1, 1, 1, 0, 0, 1, 1, 6, 0, 0, 6, 6, 0, 0, 1, + 1, 6, 1, 6, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 0, 6, 0, 0, 0, 1, + 1, 0, 0, 6, 6, 6, 6, 1, 0, 5, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, + 6, 0, 6, 6, 1, 0, 1, 1, 6, 5, 1, 0, 0, 0, 5, 0, 0, 6, 0, 1, 0, + 0, 0, 0, 0, 1, 1, 0, 6, 6, 6, 6, 5, 0, 1, 1, 0, 1, 0, 6, 6, 0, + 0, 0, 6, 0, 0, 0, 6, 6, 0, 5, 1, 0, 0, 0, 0, 6, 0, 5, 6, 6, 0, + 0, 0, 0, 6, 1, 0, 0, 1, 0, 1, 6, 1, 1, 1, 1, 1, 0, 0, 0, 6, 0, + 5, 1, 0, 6, 6, 6, 0, 0, 0, 0, 1, 6, 6, 0, 0, 0, 1, 1, 5, 6, 0, + 6, 1, 0, 0, 1, 6, 0, 0, 1, 0, 6, 6, 0, 5, 6, 6, 0, 0, 6, 1, 0, + 6, 0, 1, 0, 1, 6, 0, 1, 1, 1, 6, 0, 5, 0, 0, 6, 1, 0, 6, 5, 5, + 0, 6, 1, 1, 1, 0, 0, 6, 0, 0, 5, 0, 0, 6, 6, 6, 6, 6, 0, 1, 0, + 0, 6, 6, 0, 0, 1, 6, 0, 0, 6, 1, 6, 1, 1, 1, 0, 1, 6, 5, 0, 0, + 1, 5, 0, 1, 6, 6, 1, 0, 0, 1, 6, 1, 5, 6, 1, 0, 0, 1, 1, 0, 6, + 1, 6, 0, 1, 1, 5, 6, 6, 5, 1, 1, 1, 0, 6, 1, 6, 1, 0, 1, 0, 0, + 1, 5, 0, 1, 1, 0, 5, 6, 0, 5, 1, 1, 6, 5, 0, 6, 0, 0, 0, 0, 0, + 0, 1, 6, 1, 0, 5, 1, 0, 0, 1, 6, 0, 0, 6, 6, 6, 0, 2, 1, 6, 5, + 6, 1, 1, 0, 5, 1, 1, 1, 6, 1, 6, 6, 5, 6, 0, 1, 0, 1, 6, 0, 6, + 1, 6, 0, 0, 6, 1, 0, 6, 1, 0, 0, 0, 0, 6, 6, 6, 6, 5, 6, 6, 0, + 0, 6, 1, 1, 6, 0, 0, 6, 6, 0, 6, 6, 0, 0, 6, 0, 0, 6, 6, 6, 1, + 0, 6, 0, 0, 0, 6, 1, 1, 0, 1, 5, 0, 0, 5, 0, 0, 0, 1, 1, 6, 1, + 0, 0, 0, 6, 6, 1, 1, 6, 5, 5, 0, 6, 6, 0, 1, 1, 0, 6, 6, 0, 6, + 5, 5, 6, 5, 1, 0, 6, 0, 6, 1, 0, 1, 6, 6, 6, 1, 0, 6, 0, 5, 6, + 6, 5, 0, 5, 1, 0, 6, 0, 6, 1, 5, 5, 0, 1, 5, 5, 2, 6, 6, 6, 5, + 0, 0, 1, 6, 1, 0, 1, 6, 1, 0, 0, 1, 5, 6, 6, 0, 0, 0, 5, 6, 6, + 6, 1, 5, 6, 1, 0, 0, 6, 5, 0, 1, 1, 1, 6, 6, 0, 1, 0, 0, 0, 5, + 0, 0, 6, 1, 6, 0, 6, 1, 5, 5, 6, 5, 0, 0, 0, 0, 1, 1, 0, 5, 5, + 0, 0, 0, 0, 1, 0, 6, 6, 1, 1, 6, 6, 0, 5, 5, 0, 0, 0, 6, 6, 1, + 6, 0, 0, 5, 0, 1, 6, 5, 6, 6, 5, 5, 6, 6, 1, 0, 1, 6, 6, 1, 6, + 0, 6, 0, 6, 5, 0, 6, 6, 0, 5, 6, 0, 6, 6, 5, 0, 1, 6, 6, 1, 0, + 1, 0, 6, 6, 1, 0, 6, 6, 6, 0, 1, 6, 0, 1, 5, 1, 1, 5, 6, 6, 0, + 1, 6, 6, 1, 5, 0, 5, 0, 6, 0, 1, 6, 1, 0, 6, 1, 6, 0, 6, 1, 0, + 0, 0, 6, 6, 0, 1, 1, 6, 6, 6, 1, 6, 0, 5, 6, 0, 5, 6, 6, 5, 5, + 5, 6, 0, 6, 0, 0, 0, 5, 0, 6, 1, 2, 6, 6, 6, 5, 1, 6, 0, 6, 0, + 0, 0, 0, 6, 5, 0, 5, 1, 6, 5, 1, 6, 5, 1, 1, 0, 0, 6, 1, 1, 5, + 6, 6, 0, 5, 2, 5, 5, 0, 5, 5, 5, 6, 5, 6, 6, 5, 2, 6, 5, 6, 0, + 0, 6, 5, 0, 6, 0, 0, 6, 6, 6, 0, 5, 1, 1, 6, 6, 5, 2, 1, 6, 5, + 6, 0, 6, 6, 1, 1, 5, 1, 6, 6, 6, 0, 0, 6, 1, 0, 5, 5, 1, 5, 6, + 1, 6, 0, 1, 6, 5, 0, 0, 6, 1, 5, 1, 0, 6, 0, 6, 6, 5, 5, 6, 6, + 6, 6, 2, 6, 6, 6, 5, 5, 5, 0, 1, 0, 0, 0, 6, 6, 1, 0, 6, 6, 6, + 6, 6, 1, 0, 6, 1, 5, 5, 6, 6, 6, 6, 6, 5, 6, 1, 6, 2, 5, 5, 6, + 5, 6, 6, 5, 6, 6, 5, 5, 6, 1, 5, 1, 6, 0, 2, 5, 0, 5, 0, 2, 1, + 6, 0, 0, 6, 6, 1, 6, 0, 5, 5, 6, 6, 1, 6, 6, 6, 5, 6, 6, 1, 6, + 5, 6, 1, 1, 0, 6, 6, 5, 1, 0, 0, 6, 6, 5, 6, 0, 1, 6, 0, 5, 6, + 5, 2, 5, 2, 0, 0, 1, 6, 6, 1, 5, 6, 6, 0, 6, 6, 6, 6, 6, 5] + assert_array_equal(self.res1.predict().argmax(1), pred) + + # the rows should add up for pred table + assert_array_equal(self.res1.pred_table().sum(0), np.bincount(pred)) + + # note this is just a regression test, gretl doesn't have a prediction + # table + pred = [[ 126., 41., 2., 0., 0., 12., 19.], + [ 77., 73., 3., 0., 0., 15., 12.], + [ 37., 43., 2., 0., 0., 19., 7.], + [ 12., 9., 1., 0., 0., 9., 6.], + [ 19., 10., 2., 0., 0., 20., 43.], + [ 22., 25., 1., 0., 0., 31., 71.], + [ 9., 7., 1., 0., 0., 18., 140.]] + assert_array_equal(self.res1.pred_table(), pred) + + def test_resid(self): + assert_array_equal(self.res1.resid_misclassified, self.res2.resid) + + @pytest.mark.xfail(reason="res2.cov_params is a zero-dim array of None", + strict=True) + def test_cov_params(self): + super(CheckMNLogitBaseZero, self).test_cov_params() + + +class TestMNLogitNewtonBaseZero(CheckMNLogitBaseZero): + @classmethod + def setup_class(cls): + + data = sm.datasets.anes96.load(as_pandas=False) + cls.data = data + exog = data.exog + exog = sm.add_constant(exog, prepend=False) + cls.res1 = MNLogit(data.endog, exog).fit(method="newton", disp=0) + res2 = Anes.mnlogit_basezero + cls.res2 = res2 + + +class TestMNLogitLBFGSBaseZero(CheckMNLogitBaseZero): + @classmethod + def setup_class(cls): + data = sm.datasets.anes96.load(as_pandas=False) + cls.data = data + exog = data.exog + exog = sm.add_constant(exog, prepend=False) + mymodel = MNLogit(data.endog, exog) + cls.res1 = mymodel.fit(method="lbfgs", disp=0, maxiter=50000, + #m=12, pgtol=1e-7, factr=1e3, # 5 failures + #m=20, pgtol=1e-8, factr=1e2, # 3 failures + #m=30, pgtol=1e-9, factr=1e1, # 1 failure + m=40, pgtol=1e-10, factr=5e0, + loglike_and_score=mymodel.loglike_and_score) + res2 = Anes.mnlogit_basezero + cls.res2 = res2 + + +def test_perfect_prediction(): + cur_dir = os.path.dirname(os.path.abspath(__file__)) + iris_dir = os.path.join(cur_dir, '..', '..', 'genmod', 'tests', 'results') + iris_dir = os.path.abspath(iris_dir) + iris = np.genfromtxt(os.path.join(iris_dir, 'iris.csv'), delimiter=",", + skip_header=1) + y = iris[:,-1] + X = iris[:,:-1] + X = X[y != 2] + y = y[y != 2] + X = sm.add_constant(X, prepend=True) + mod = Logit(y,X) + assert_raises(PerfectSeparationError, mod.fit, maxiter=1000) + #turn off raise PerfectSeparationError + mod.raise_on_perfect_prediction = False + # this will raise if you set maxiter high enough with a singular matrix + from pandas.util.testing import assert_produces_warning + # this is not thread-safe + # py 2.7 and 3.3 don't raise here anymore #4235 + import sys + PY3_g3 = sys.version_info[:2] > (3, 3) + if PY3_g3: + with assert_produces_warning(): + warnings.simplefilter('always') + res = mod.fit(disp=False, maxiter=50) # should not raise but does warn + else: + res = mod.fit(disp=False, maxiter=50) + assert_(not res.mle_retvals['converged']) + + +def test_poisson_predict(): + #GH: 175, make sure poisson predict works without offset and exposure + data = sm.datasets.randhie.load(as_pandas=False) + exog = sm.add_constant(data.exog, prepend=True) + res = sm.Poisson(data.endog, exog).fit(method='newton', disp=0) + pred1 = res.predict() + pred2 = res.predict(exog) + assert_almost_equal(pred1, pred2) + #exta options + pred3 = res.predict(exog, offset=0, exposure=1) + assert_almost_equal(pred1, pred3) + pred3 = res.predict(exog, offset=0, exposure=2) + assert_almost_equal(2*pred1, pred3) + pred3 = res.predict(exog, offset=np.log(2), exposure=1) + assert_almost_equal(2*pred1, pred3) + + +def test_poisson_newton(): + #GH: 24, Newton doesn't work well sometimes + nobs = 10000 + np.random.seed(987689) + x = np.random.randn(nobs, 3) + x = sm.add_constant(x, prepend=True) + y_count = np.random.poisson(np.exp(x.sum(1))) + mod = sm.Poisson(y_count, x) + from pandas.util.testing import assert_produces_warning + # this is not thread-safe + # py 2.7 and 3.3 don't raise here anymore #4235 + import sys + PY3_g3 = sys.version_info[:2] > (3, 3) + if PY3_g3: + with assert_produces_warning(): + warnings.simplefilter('always') + res = mod.fit(start_params=-np.ones(4), method='newton', disp=0) + else: + res = mod.fit(start_params=-np.ones(4), method='newton', disp=0) + + assert_(not res.mle_retvals['converged']) + + +def test_issue_339(): + # make sure MNLogit summary works for J != K. + data = sm.datasets.anes96.load(as_pandas=False) + exog = data.exog + # leave out last exog column + exog = exog[:,:-1] + exog = sm.add_constant(exog, prepend=True) + res1 = sm.MNLogit(data.endog, exog).fit(method="newton", disp=0) + # strip the header from the test + smry = "\n".join(res1.summary().as_text().split('\n')[9:]) + cur_dir = os.path.dirname(os.path.abspath(__file__)) + test_case_file = os.path.join(cur_dir, 'results', 'mn_logit_summary.txt') + with open(test_case_file, 'r') as fd: + test_case = fd.read() + np.testing.assert_equal(smry, test_case[:-1]) + # smoke test for summary2 + res1.summary2() # see #3651 + + +def test_issue_341(): + data = sm.datasets.anes96.load(as_pandas=False) + exog = data.exog + # leave out last exog column + exog = exog[:,:-1] + exog = sm.add_constant(exog, prepend=True) + res1 = sm.MNLogit(data.endog, exog).fit(method="newton", disp=0) + x = exog[0] + np.testing.assert_equal(res1.predict(x).shape, (1,7)) + np.testing.assert_equal(res1.predict(x[None]).shape, (1,7)) + + +def test_iscount(): + X = np.random.random((50, 10)) + X[:,2] = np.random.randint(1, 10, size=50) + X[:,6] = np.random.randint(1, 10, size=50) + X[:,4] = np.random.randint(0, 2, size=50) + X[:,1] = np.random.randint(-10, 10, size=50) # not integers + count_ind = _iscount(X) + assert_equal(count_ind, [2, 6]) + + +def test_isdummy(): + X = np.random.random((50, 10)) + X[:,2] = np.random.randint(1, 10, size=50) + X[:,6] = np.random.randint(0, 2, size=50) + X[:,4] = np.random.randint(0, 2, size=50) + X[:,1] = np.random.randint(-10, 10, size=50) # not integers + count_ind = _isdummy(X) + assert_equal(count_ind, [4, 6]) + + +def test_non_binary(): + y = [1, 2, 1, 2, 1, 2] + X = np.random.randn(6, 2) + np.testing.assert_raises(ValueError, Logit, y, X) + + +def test_mnlogit_factor(): + dta = sm.datasets.anes96.load_pandas() + dta['endog'] = dta.endog.replace(dict(zip(range(7), 'ABCDEFG'))) + exog = sm.add_constant(dta.exog, prepend=True) + mod = sm.MNLogit(dta.endog, exog) + res = mod.fit(disp=0) + # smoke tests + params = res.params + summary = res.summary() + predicted = res.predict(exog.iloc[:5, :]) + + # with patsy + mod = smf.mnlogit('PID ~ ' + ' + '.join(dta.exog.columns), dta.data) + res2 = mod.fit(disp=0) + params_f = res2.params + summary = res2.summary() + assert_allclose(params_f, params, rtol=1e-10) + predicted_f = res2.predict(dta.exog.iloc[:5, :]) + assert_allclose(predicted_f, predicted, rtol=1e-10) + + +def test_formula_missing_exposure(): + # see 2083 + d = {'Foo': [1, 2, 10, 149], 'Bar': [1, 2, 3, np.nan], + 'constant': [1] * 4, 'exposure' : np.random.uniform(size=4), + 'x': [1, 3, 2, 1.5]} + df = pd.DataFrame(d) + + # should work + mod1 = smf.poisson('Foo ~ Bar', data=df, exposure=df['exposure']) + assert_(type(mod1.exposure) is np.ndarray, msg='Exposure is not ndarray') + + # make sure this raises + exposure = pd.Series(np.random.uniform(size=5)) + df.loc[3, 'Bar'] = 4 # nan not relevant for ValueError for shape mismatch + assert_raises(ValueError, sm.Poisson, df.Foo, df[['constant', 'Bar']], + exposure=exposure) + + +def test_predict_with_exposure(): + # Case where CountModel.predict is called with exog = None and exposure + # or offset not-None + # See 3565 + + # Setup copied from test_formula_missing_exposure + import pandas as pd + d = {'Foo': [1, 2, 10, 149], 'Bar': [1, 2, 3, 4], + 'constant': [1] * 4, 'exposure' : [np.exp(1)]*4, + 'x': [1, 3, 2, 1.5]} + df = pd.DataFrame(d) + + mod1 = CountModel.from_formula('Foo ~ Bar', data=df, + exposure=df['exposure']) + + params = np.array([1, .4]) + pred = mod1.predict(params, linear=True) + # No exposure is passed, so default to using mod1.exposure, which + # should have been logged + X = df[['constant', 'Bar']].values # mod1.exog + expected = np.dot(X, params) + 1 + assert_allclose(pred, expected) + # The above should have passed without the current patch. The next + # test would fail under the old code + + pred2 = mod1.predict(params, exposure=[np.exp(2)]*4, linear=True) + expected2 = expected + 1 + assert_allclose(pred2, expected2) + + +def test_binary_pred_table_zeros(): + # see 2968 + nobs = 10 + y = np.zeros(nobs) + y[[1,3]] = 1 + + res = Logit(y, np.ones(nobs)).fit(disp=0) + expected = np.array([[ 8., 0.], [ 2., 0.]]) + assert_equal(res.pred_table(), expected) + + res = MNLogit(y, np.ones(nobs)).fit(disp=0) + expected = np.array([[ 8., 0.], [ 2., 0.]]) + assert_equal(res.pred_table(), expected) + + +class TestGeneralizedPoisson_p2(object): + # Test Generalized Poisson model + + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + mod = GeneralizedPoisson(data.endog, data.exog, p=2) + cls.res1 = mod.fit(method='newton', disp=0) + res2 = RandHIE.generalizedpoisson_gp2 + cls.res2 = res2 + + def test_bse(self): + assert_allclose(self.res1.bse, self.res2.bse, atol=1e-5) + + def test_params(self): + assert_allclose(self.res1.params, self.res2.params, atol=1e-5) + + def test_alpha(self): + assert_allclose(self.res1.lnalpha, self.res2.lnalpha) + assert_allclose(self.res1.lnalpha_std_err, + self.res2.lnalpha_std_err, atol=1e-5) + + def test_conf_int(self): + assert_allclose(self.res1.conf_int(), self.res2.conf_int, + atol=1e-3) + + def test_aic(self): + assert_allclose(self.res1.aic, self.res2.aic) + + def test_bic(self): + assert_allclose(self.res1.bic, self.res2.bic) + + def test_df(self): + assert_equal(self.res1.df_model, self.res2.df_model) + + def test_llf(self): + assert_allclose(self.res1.llf, self.res2.llf) + + def test_wald(self): + result = self.res1.wald_test(np.eye(len(self.res1.params))[:-2]) + assert_allclose(result.statistic, self.res2.wald_statistic) + assert_allclose(result.pvalue, self.res2.wald_pvalue, atol=1e-15) + + def test_t(self): + unit_matrix = np.identity(self.res1.params.size) + t_test = self.res1.t_test(unit_matrix) + assert_allclose(self.res1.tvalues, t_test.tvalue) + + +class TestGeneralizedPoisson_transparams(object): + # Test Generalized Poisson model + + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + cls.res1 = GeneralizedPoisson(data.endog, data.exog, p=2).fit( + method='newton', disp=0) + res2 = RandHIE.generalizedpoisson_gp2 + cls.res2 = res2 + + def test_bse(self): + assert_allclose(self.res1.bse, self.res2.bse, atol=1e-5) + + def test_params(self): + assert_allclose(self.res1.params, self.res2.params, atol=1e-5) + + def test_alpha(self): + assert_allclose(self.res1.lnalpha, self.res2.lnalpha) + assert_allclose(self.res1.lnalpha_std_err, + self.res2.lnalpha_std_err, atol=1e-5) + + def test_conf_int(self): + assert_allclose(self.res1.conf_int(), self.res2.conf_int, + atol=1e-3) + + def test_aic(self): + assert_allclose(self.res1.aic, self.res2.aic) + + def test_bic(self): + assert_allclose(self.res1.bic, self.res2.bic) + + def test_df(self): + assert_equal(self.res1.df_model, self.res2.df_model) + + def test_llf(self): + assert_allclose(self.res1.llf, self.res2.llf) + + +class TestGeneralizedPoisson_p1(object): + # Test Generalized Poisson model + + @classmethod + def setup_class(cls): + cls.data = sm.datasets.randhie.load(as_pandas=False) + cls.data.exog = sm.add_constant(cls.data.exog, prepend=False) + cls.res1 = GeneralizedPoisson( + cls.data.endog, cls.data.exog, p=1).fit(method='newton', disp=0) + + def test_llf(self): + poisson_llf = sm.Poisson( + self.data.endog, self.data.exog).loglike( + self.res1.params[:-1]) + genpoisson_llf = sm.GeneralizedPoisson( + self.data.endog, self.data.exog, p=1).loglike( + list(self.res1.params[:-1]) + [0]) + assert_allclose(genpoisson_llf, poisson_llf) + + def test_score(self): + poisson_score = sm.Poisson( + self.data.endog, self.data.exog).score( + self.res1.params[:-1]) + genpoisson_score = sm.GeneralizedPoisson( + self.data.endog, self.data.exog, p=1).score( + list(self.res1.params[:-1]) + [0]) + assert_allclose(genpoisson_score[:-1], poisson_score, atol=1e-9) + + def test_hessian(self): + poisson_score = sm.Poisson( + self.data.endog, self.data.exog).hessian( + self.res1.params[:-1]) + genpoisson_score = sm.GeneralizedPoisson( + self.data.endog, self.data.exog, p=1).hessian( + list(self.res1.params[:-1]) + [0]) + assert_allclose(genpoisson_score[:-1,:-1], poisson_score, atol=1e-10) + + def test_t(self): + unit_matrix = np.identity(self.res1.params.size) + t_test = self.res1.t_test(unit_matrix) + assert_allclose(self.res1.tvalues, t_test.tvalue) + + def test_fit_regularized(self): + model = self.res1.model + + # don't penalize constant and dispersion parameter + alpha = np.ones(len(self.res1.params)) + alpha[-2:] = 0 + # the first prints currently a warning, irrelevant here + res_reg1 = model.fit_regularized(alpha=alpha*0.01, disp=0) + res_reg2 = model.fit_regularized(alpha=alpha*100, disp=0) + res_reg3 = model.fit_regularized(alpha=alpha*1000, disp=0) + + assert_allclose(res_reg1.params, self.res1.params, atol=5e-5) + assert_allclose(res_reg1.bse, self.res1.bse, atol=1e-5) + + # check shrinkage, regression numbers + assert_allclose((self.res1.params[:-2]**2).mean(), 0.016580955543320779) + assert_allclose((res_reg1.params[:-2]**2).mean(), 0.016580734975068664) + assert_allclose((res_reg2.params[:-2]**2).mean(), 0.010672558641545994) + assert_allclose((res_reg3.params[:-2]**2).mean(), 0.00035544919793048415) + + def test_init_kwds(self): + kwds = self.res1.model._get_init_kwds() + assert_('p' in kwds) + assert_equal(kwds['p'], 1) + + +class TestGeneralizedPoisson_underdispersion(object): + + @classmethod + def setup_class(cls): + cls.expected_params = [1, -0.5, -0.05] + np.random.seed(1234) + nobs = 200 + exog = np.ones((nobs, 2)) + exog[:nobs//2, 1] = 2 + mu_true = np.exp(exog.dot(cls.expected_params[:-1])) + cls.endog = sm.distributions.genpoisson_p.rvs(mu_true, + cls.expected_params[-1], 1, size=len(mu_true)) + model_gp = sm.GeneralizedPoisson(cls.endog, exog, p=1) + cls.res = model_gp.fit(method='nm', xtol=1e-6, maxiter=5000, + maxfun=5000, disp=0) + + def test_basic(self): + res = self.res + endog = res.model.endog + # check random data generation, regression test + assert_allclose(endog.mean(), 1.42, rtol=1e-3) + assert_allclose(endog.var(), 1.2836, rtol=1e-3) + + # check estimation + assert_allclose(res.params, self.expected_params, atol=0.07, rtol=0.1) + assert_(res.mle_retvals['converged'] is True) + assert_allclose(res.mle_retvals['fopt'], 1.418753161722015, rtol=0.01) + + def test_newton(self): + # check newton optimization with start_params + res = self.res + res2 = res.model.fit(start_params=res.params, method='newton', disp=0) + assert_allclose(res.model.score(res.params), + np.zeros(len(res2.params)), atol=0.01) + assert_allclose(res.model.score(res2.params), + np.zeros(len(res2.params)), atol=1e-10) + assert_allclose(res.params, res2.params, atol=1e-4) + + def test_mean_var(self): + assert_allclose(self.res.predict().mean(), self.endog.mean(), + atol=1e-1, rtol=1e-1) + + assert_allclose( + self.res.predict().mean() * self.res._dispersion_factor.mean(), + self.endog.var(), atol=2e-1, rtol=2e-1) + + def test_predict_prob(self): + res = self.res + endog = res.model.endog + freq = np.bincount(endog.astype(int)) + + pr = res.predict(which='prob') + pr2 = sm.distributions.genpoisson_p.pmf(np.arange(6)[:, None], + res.predict(), res.params[-1], 1).T + assert_allclose(pr, pr2, rtol=1e-10, atol=1e-10) + + from scipy import stats + chi2 = stats.chisquare(freq, pr.sum(0)) + assert_allclose(chi2[:], (0.64628806058715882, 0.98578597726324468), + rtol=0.01) + + +class TestNegativeBinomialPNB2Newton(CheckNegBinMixin, CheckModelResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + exog = sm.add_constant(data.exog, prepend=False) + mod = NegativeBinomialP(data.endog, exog, p=2) + cls.res1 = mod.fit(method='newton', disp=0) + res2 = RandHIE.negativebinomial_nb2_bfgs + cls.res2 = res2 + + #NOTE: The bse is much closer precitions to stata + def test_bse(self): + assert_allclose(self.res1.bse, self.res2.bse, + atol=1e-3, rtol=1e-3) + + def test_params(self): + assert_allclose(self.res1.params, self.res2.params, + atol=1e-7) + + def test_alpha(self): + self.res1.bse # attaches alpha_std_err + assert_allclose(self.res1.lnalpha, self.res2.lnalpha) + assert_allclose(self.res1.lnalpha_std_err, + self.res2.lnalpha_std_err, + atol=1e-7) + + def test_conf_int(self): + assert_allclose(self.res1.conf_int(), self.res2.conf_int, + atol=1e-3, rtol=1e-3) + + def test_zstat(self): # Low precision because Z vs. t + assert_allclose(self.res1.pvalues[:-1], self.res2.pvalues, + atol=5e-3, rtol=5e-3) + + def test_fittedvalues(self): + assert_allclose(self.res1.fittedvalues[:10], + self.res2.fittedvalues[:10]) + + def test_predict(self): + assert_allclose(self.res1.predict()[:10], + np.exp(self.res2.fittedvalues[:10])) + + def test_predict_xb(self): + assert_allclose(self.res1.predict(which='linear')[:10], + self.res2.fittedvalues[:10]) + + +class TestNegativeBinomialPNB1Newton(CheckNegBinMixin, CheckModelResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + exog = sm.add_constant(data.exog, prepend=False) + mod = NegativeBinomialP(data.endog, exog, p=1) + cls.res1 = mod.fit(method="newton", maxiter=100, disp=0) + res2 = RandHIE.negativebinomial_nb1_bfgs + cls.res2 = res2 + + def test_zstat(self): + assert_allclose(self.res1.tvalues, self.res2.z, + atol=5e-3, rtol=5e-3) + + def test_lnalpha(self): + self.res1.bse # attaches alpha_std_err + assert_allclose(self.res1.lnalpha, self.res2.lnalpha) + assert_allclose(self.res1.lnalpha_std_err, + self.res2.lnalpha_std_err) + + def test_params(self): + assert_allclose(self.res1.params, self.res2.params) + + def test_conf_int(self): + # the bse for alpha is not high precision from the hessian + # approximation + assert_allclose(self.res1.conf_int(), self.res2.conf_int, + atol=1e-3, rtol=1e-3) + + def test_predict(self): + assert_allclose(self.res1.predict()[:10], + np.exp(self.res2.fittedvalues[:10]), + atol=1e-3, rtol=1e-3) + + def test_predict_xb(self): + assert_allclose(self.res1.predict(which='linear')[:10], + self.res2.fittedvalues[:10], + atol=1e-3, rtol=1e-3) + + +class TestNegativeBinomialPNB2BFGS(CheckNegBinMixin, CheckModelResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + exog = sm.add_constant(data.exog, prepend=False) + cls.res1 = NegativeBinomialP(data.endog, exog, p=2).fit( + method='bfgs', disp=0, + maxiter=1000) + res2 = RandHIE.negativebinomial_nb2_bfgs + cls.res2 = res2 + + #NOTE: The bse is much closer precitions to stata + def test_bse(self): + assert_allclose(self.res1.bse, self.res2.bse, + atol=1e-3, rtol=1e-3) + + def test_params(self): + assert_allclose(self.res1.params, self.res2.params, + atol=1e-3, rtol=1e-3) + + def test_alpha(self): + self.res1.bse # attaches alpha_std_err + assert_allclose(self.res1.lnalpha, self.res2.lnalpha, + atol=1e-5, rtol=1e-5) + assert_allclose(self.res1.lnalpha_std_err, + self.res2.lnalpha_std_err, + atol=1e-5, rtol=1e-5) + + def test_conf_int(self): + assert_allclose(self.res1.conf_int(), self.res2.conf_int, + atol=1e-3, rtol=1e-3) + + def test_zstat(self): # Low precision because Z vs. t + assert_allclose(self.res1.pvalues[:-1], self.res2.pvalues, + atol=5e-3, rtol=5e-3) + + def test_fittedvalues(self): + assert_allclose(self.res1.fittedvalues[:10], + self.res2.fittedvalues[:10], + atol=1e-4, rtol=1e-4) + + def test_predict(self): + assert_allclose(self.res1.predict()[:10], + np.exp(self.res2.fittedvalues[:10]), + atol=1e-3, rtol=1e-3) + + def test_predict_xb(self): + assert_allclose(self.res1.predict(which='linear')[:10], + self.res2.fittedvalues[:10], + atol=1e-3, rtol=1e-3) + + +class TestNegativeBinomialPNB1BFGS(CheckNegBinMixin, CheckModelResults): + + @classmethod + def setup_class(cls): + data = sm.datasets.randhie.load(as_pandas=False) + exog = sm.add_constant(data.exog, prepend=False) + cls.res1 = NegativeBinomialP(data.endog, exog, p=1).fit(method="bfgs", + maxiter=100, + disp=0) + res2 = RandHIE.negativebinomial_nb1_bfgs + cls.res2 = res2 + + def test_bse(self): + assert_allclose(self.res1.bse, self.res2.bse, + atol=5e-3, rtol=5e-3) + + def test_aic(self): + assert_allclose(self.res1.aic, self.res2.aic, + atol=0.5, rtol=0.5) + + def test_bic(self): + assert_allclose(self.res1.bic, self.res2.bic, + atol=0.5, rtol=0.5) + + def test_llf(self): + assert_allclose(self.res1.llf, self.res2.llf, + atol=1e-3, rtol=1e-3) + + def test_llr(self): + assert_allclose(self.res1.llf, self.res2.llf, + atol=1e-3, rtol=1e-3) + + def test_zstat(self): + assert_allclose(self.res1.tvalues, self.res2.z, + atol=0.5, rtol=0.5) + + def test_lnalpha(self): + assert_allclose(self.res1.lnalpha, self.res2.lnalpha, + atol=1e-3, rtol=1e-3) + assert_allclose(self.res1.lnalpha_std_err, + self.res2.lnalpha_std_err, + atol=1e-3, rtol=1e-3) + + def test_params(self): + assert_allclose(self.res1.params, self.res2.params, + atol=5e-2, rtol=5e-2) + + def test_conf_int(self): + # the bse for alpha is not high precision from the hessian + # approximation + assert_allclose(self.res1.conf_int(), self.res2.conf_int, + atol=5e-2, rtol=5e-2) + + def test_predict(self): + assert_allclose(self.res1.predict()[:10], + np.exp(self.res2.fittedvalues[:10]), + atol=5e-3, rtol=5e-3) + + def test_predict_xb(self): + assert_allclose(self.res1.predict(which='linear')[:10], + self.res2.fittedvalues[:10], + atol=5e-3, rtol=5e-3) + + def test_init_kwds(self): + kwds = self.res1.model._get_init_kwds() + assert_('p' in kwds) + assert_equal(kwds['p'], 1) + + +class TestNegativeBinomialPL1Compatability(CheckL1Compatability): + @classmethod + def setup_class(cls): + cls.kvars = 10 # Number of variables + cls.m = 7 # Number of unregularized parameters + rand_data = sm.datasets.randhie.load(as_pandas=False) + rand_exog = rand_data.exog.view(float).reshape(len(rand_data.exog), -1) + rand_exog_st = (rand_exog - rand_exog.mean(0)) / rand_exog.std(0) + rand_exog = sm.add_constant(rand_exog_st, prepend=True) + # Drop some columns and do an unregularized fit + exog_no_PSI = rand_exog[:, :cls.m] + mod_unreg = sm.NegativeBinomialP(rand_data.endog, exog_no_PSI) + cls.res_unreg = mod_unreg.fit(method="newton", disp=0) + # Do a regularized fit with alpha, effectively dropping the last column + alpha = 10 * len(rand_data.endog) * np.ones(cls.kvars + 1) + alpha[:cls.m] = 0 + alpha[-1] = 0 # don't penalize alpha + + mod_reg = sm.NegativeBinomialP(rand_data.endog, rand_exog) + cls.res_reg = mod_reg.fit_regularized( + method='l1', alpha=alpha, disp=False, acc=1e-10, maxiter=2000, + trim_mode='auto') + cls.k_extra = 1 # 1 extra parameter in nb2 + + +class TestNegativeBinomialPPredictProb(object): + + def test_predict_prob_p1(self): + expected_params = [1, -0.5] + np.random.seed(1234) + nobs = 200 + exog = np.ones((nobs, 2)) + exog[:nobs//2, 1] = 2 + mu_true = np.exp(exog.dot(expected_params)) + alpha = 0.05 + size = 1. / alpha * mu_true + prob = size / (size + mu_true) + endog = nbinom.rvs(size, prob, size=len(mu_true)) + + res = sm.NegativeBinomialP(endog, exog).fit(disp=0) + + mu = res.predict() + size = 1. / alpha * mu + prob = size / (size + mu) + + probs = res.predict(which='prob') + assert_allclose(probs, + nbinom.pmf(np.arange(8)[:,None], size, prob).T, + atol=1e-2, rtol=1e-2) + + probs_ex = res.predict(exog=exog[[0, -1]], which='prob') + assert_allclose(probs_ex, probs[[0, -1]], rtol=1e-10, atol=1e-15) + + def test_predict_prob_p2(self): + expected_params = [1, -0.5] + np.random.seed(1234) + nobs = 200 + exog = np.ones((nobs, 2)) + exog[:nobs//2, 1] = 2 + mu_true = np.exp(exog.dot(expected_params)) + alpha = 0.05 + size = 1. / alpha + prob = size / (size + mu_true) + endog = nbinom.rvs(size, prob, size=len(mu_true)) + + res = sm.NegativeBinomialP(endog, exog, p=2).fit(disp=0) + + mu = res.predict() + size = 1. / alpha + prob = size / (size + mu) + + assert_allclose(res.predict(which='prob'), + nbinom.pmf(np.arange(8)[:,None], size, prob).T, + atol=1e-2, rtol=1e-2) + + +class CheckNull(object): + + @classmethod + def _get_data(cls): + x = np.array([ 20., 25., 30., 35., 40., 45., 50.]) + nobs = len(x) + exog = np.column_stack((np.ones(nobs), x)) + endog = np.array([ 469, 5516, 6854, 6837, 5952, 4066, 3242]) + return endog, exog + + def test_llnull(self): + res = self.model.fit(start_params=self.start_params, disp=0) + res._results._attach_nullmodel = True + llf0 = res.llnull + res_null0 = res.res_null + assert_allclose(llf0, res_null0.llf, rtol=1e-6) + + res_null1 = self.res_null + assert_allclose(llf0, res_null1.llf, rtol=1e-6) + # Note default convergence tolerance doesn't get lower rtol + # from different starting values (using bfgs) + assert_allclose(res_null0.params, res_null1.params, rtol=5e-5) + + +class TestPoissonNull(CheckNull): + + @classmethod + def setup_class(cls): + endog, exog = cls._get_data() + cls.model = Poisson(endog, exog) + cls.res_null = Poisson(endog, exog[:, 0]).fit(start_params=[8.5], disp=0) + # use start params to avoid warnings + cls.start_params = [8.5, 0] + + +class TestNegativeBinomialNB1Null(CheckNull): + + @classmethod + def setup_class(cls): + endog, exog = cls._get_data() + cls.model = NegativeBinomial(endog, exog, loglike_method='nb1') + cls.model_null = NegativeBinomial(endog, exog[:, 0], + loglike_method='nb1') + cls.res_null = cls.model_null.fit(start_params=[8, 1000], + method='bfgs', gtol=1e-08, + maxiter=300, disp=0) + # for convergence with bfgs, I needed to round down alpha start_params + cls.start_params = np.array([7.730452, 2.01633068e-02, 1763.0]) + + +class TestNegativeBinomialNB2Null(CheckNull): + + @classmethod + def setup_class(cls): + endog, exog = cls._get_data() + cls.model = NegativeBinomial(endog, exog, loglike_method='nb2') + cls.model_null = NegativeBinomial(endog, exog[:, 0], + loglike_method='nb2') + cls.res_null = cls.model_null.fit(start_params=[8, 0.5], + method='bfgs', gtol=1e-06, + maxiter=300, disp=0) + cls.start_params = np.array([8.07216448, 0.01087238, 0.44024134]) + + +class TestNegativeBinomialNBP2Null(CheckNull): + + @classmethod + def setup_class(cls): + endog, exog = cls._get_data() + cls.model = NegativeBinomialP(endog, exog, p=2) + cls.model_null = NegativeBinomialP(endog, exog[:, 0], p=2) + cls.res_null = cls.model_null.fit(start_params=[8, 1], + method='bfgs', gtol=1e-06, + maxiter=300, disp=0) + cls.start_params = np.array([8.07216448, 0.01087238, 0.44024134]) + + def test_start_null(self): + endog, exog = self.model.endog, self.model.exog + model_nb2 = NegativeBinomial(endog, exog, loglike_method='nb2') + sp1 = model_nb2._get_start_params_null() + sp0 = self.model._get_start_params_null() + assert_allclose(sp0, sp1, rtol=1e-12) + + +class TestNegativeBinomialNBP1Null(CheckNull): + + @classmethod + def setup_class(cls): + endog, exog = cls._get_data() + cls.model = NegativeBinomialP(endog, exog, p=1.) + cls.model_null = NegativeBinomialP(endog, exog[:, 0], p=1) + cls.res_null = cls.model_null.fit(start_params=[8, 1], + method='bfgs', gtol=1e-06, + maxiter=300, disp=0) + cls.start_params = np.array([7.730452, 2.01633068e-02, 1763.0]) + + def test_start_null(self): + endog, exog = self.model.endog, self.model.exog + model_nb2 = NegativeBinomial(endog, exog, loglike_method='nb1') + sp1 = model_nb2._get_start_params_null() + sp0 = self.model._get_start_params_null() + assert_allclose(sp0, sp1, rtol=1e-12) + + +class TestGeneralizedPoissonNull(CheckNull): + + @classmethod + def setup_class(cls): + endog, exog = cls._get_data() + cls.model = GeneralizedPoisson(endog, exog, p=1.5) + cls.model_null = GeneralizedPoisson(endog, exog[:, 0], p=1.5) + cls.res_null = cls.model_null.fit(start_params=[8.4, 1], + method='bfgs', gtol=1e-08, + maxiter=300, disp=0) + cls.start_params = np.array([6.91127148, 0.04501334, 0.88393736]) + + +def test_null_options(): + # this is a "nice" case because we only check that options are used + # correctly + nobs = 10 + exog = np.ones((20, 2)) + exog[:nobs // 2, 1] = 0 + mu = np.exp(exog.sum(1)) + endog = np.random.poisson(mu) # Note no size=nobs in np.random + res = Poisson(endog, exog).fit(start_params=np.log([1, 1]), disp=0) + llnull0 = res.llnull + assert_(hasattr(res, 'res_llnull') is False) + res.set_null_options(attach_results=True) + # default optimization + lln = res.llnull # access to trigger computation + assert_allclose(res.res_null.mle_settings['start_params'], + np.log(endog.mean()), rtol=1e-10) + assert_equal(res.res_null.mle_settings['optimizer'], 'bfgs') + assert_allclose(lln, llnull0) + + res.set_null_options(attach_results=True, start_params=[0.5], method='nm') + lln = res.llnull # access to trigger computation + assert_allclose(res.res_null.mle_settings['start_params'], [0.5], + rtol=1e-10) + assert_equal(res.res_null.mle_settings['optimizer'], 'nm') + + res.summary() # call to fill cache + assert_('prsquared' in res._cache) + assert_equal(res._cache['llnull'], lln) + + assert_('prsquared' in res._cache) + assert_equal(res._cache['llnull'], lln) + + # check setting cache + res.set_null_options(llnull=999) + assert_('prsquared' not in res._cache) + assert_equal(res._cache['llnull'], 999) + + +def test_optim_kwds_prelim(): + # test that fit options for preliminary fit is correctly transmitted + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + filepath = os.path.join(cur_dir, "results", "sm3533.csv") + df = pd.read_csv(filepath) + + features = ['pp'] + X = (df[features] - df[features].mean())/df[features].std() + y = df['num'].values + exog = sm.add_constant(X[features].copy()) + # offset=np.log(df['population'].values + 1) + # offset currently not used + offset = None + + # we use "nm", "bfgs" does not work for Poisson/exp with older scipy + optim_kwds_prelim = dict(method='nm', maxiter=5000) + model = Poisson(y, exog, offset=offset) # + res_poi = model.fit(disp=0, **optim_kwds_prelim) + + model = NegativeBinomial(y, exog, offset=offset) + res = model.fit(disp=0, optim_kwds_prelim=optim_kwds_prelim) + + assert_allclose(res.mle_settings['start_params'][:-1], res_poi.params, + rtol=1e-4) + assert_equal(res.mle_settings['optim_kwds_prelim'], optim_kwds_prelim) + assert_allclose(res.predict().mean(), y.mean(), rtol=0.1) + + # NBP22 and GPP p=1.5 also fail on older scipy with bfgs, use nm instead + optim_kwds_prelim = dict(method='nm', maxiter=5000) + model = NegativeBinomialP(y, exog, offset=offset, p=2) + res = model.fit(disp=0, optim_kwds_prelim=optim_kwds_prelim) + + assert_allclose(res.mle_settings['start_params'][:-1], res_poi.params, + rtol=1e-4) + assert_equal(res.mle_settings['optim_kwds_prelim'], optim_kwds_prelim) + assert_allclose(res.predict().mean(), y.mean(), rtol=0.1) + + # GPP with p=1.5 converges correctly, + # GPP fails when p=2 even with good start_params + model = GeneralizedPoisson(y, exog, offset=offset, p=1.5) + res = model.fit(disp=0, maxiter=200, optim_kwds_prelim=optim_kwds_prelim ) + + assert_allclose(res.mle_settings['start_params'][:-1], res_poi.params, + rtol=1e-4) + assert_equal(res.mle_settings['optim_kwds_prelim'], optim_kwds_prelim) + # rough check that convergence makes sense + assert_allclose(res.predict().mean(), y.mean(), rtol=0.1) + + +def test_unchanging_degrees_of_freedom(): + import warnings + with pytest.warns(None): + data = sm.datasets.randhie.load(as_pandas=False) + # see GH3734 + warnings.simplefilter('error') + model = sm.NegativeBinomial(data.endog, data.exog, loglike_method='nb2') + params = np.array([-0.05654134, -0.21213734, 0.08783102, -0.02991825, + 0.22902315, 0.06210253, 0.06799444, 0.08406794, + 0.18530092, 1.36645186]) + + res1 = model.fit(start_params=params, disp=0) + assert_equal(res1.df_model, 8) + + reg_params = np.array([-0.04854 , -0.15019404, 0.08363671, -0.03032834, 0.17592454, + 0.06440753, 0.01584555, 0. , 0. , 1.36984628]) + + res2 = model.fit_regularized(alpha=100, start_params=reg_params, disp=0) + assert_(res2.df_model != 8) + # If res2.df_model == res1.df_model, then this test is invalid. + + res3 = model.fit(start_params=params, disp=0) + # Test that the call to `fit_regularized` didn't + # modify model.df_model inplace. + assert_equal(res3.df_model, res1.df_model) + assert_equal(res3.df_resid, res1.df_resid) + + +def test_mnlogit_float_name(): + df = pd.DataFrame({"A": [0., 1.1, 0, 0, 1.1], "B": [0, 1, 0, 1, 1]}) + result = smf.mnlogit(formula="A ~ B", data=df).fit() + with pytest.warns(SpecificationWarning, + match='endog contains values are that not int-like'): + summ = result.summary().as_text() + assert 'A=1.1' in summ diff --git a/statsmodels/discrete/tests/test_margins.py b/statsmodels/discrete/tests/test_margins.py new file mode 100644 index 0000000..cc87a8f --- /dev/null +++ b/statsmodels/discrete/tests/test_margins.py @@ -0,0 +1,128 @@ +# -*- coding: utf-8 -*- +""" +Created on Thu Aug 3 21:08:49 2017 + +Author: Josef Perktold +""" + +import numpy as np +from numpy.testing import assert_allclose +from statsmodels.discrete.discrete_model import (Poisson, NegativeBinomial, + NegativeBinomialP) +from statsmodels.tools.tools import add_constant + +import statsmodels.discrete.tests.results.results_count_margins as res_stata + +# load data into module namespace +from statsmodels.datasets.cpunish import load +cpunish_data = load(as_pandas=False) +cpunish_data.exog[:,3] = np.log(cpunish_data.exog[:,3]) +exog = add_constant(cpunish_data.exog, prepend=False) +endog = cpunish_data.endog - 1 # avoid zero-truncation +exog /= np.round(exog.max(0), 3) + +class CheckMarginMixin(object): + rtol_fac = 1 + + def test_margins_table(self): + res1 = self.res1 + sl = self.res1_slice + rf = self.rtol_fac + assert_allclose(self.margeff.margeff, self.res1.params[sl], rtol=1e-5 * rf) + assert_allclose(self.margeff.margeff_se, self.res1.bse[sl], rtol=1e-6 * rf) + assert_allclose(self.margeff.pvalues, self.res1.pvalues[sl], rtol=5e-6 * rf) + assert_allclose(self.margeff.conf_int(), res1.margins_table[sl, 4:6], + rtol=1e-6 * rf) + + +class TestPoissonMargin(CheckMarginMixin): + + @classmethod + def setup_class(cls): + # here we don't need to check convergence from default start_params + start_params = [14.1709, 0.7085, -3.4548, -0.539, 3.2368, -7.9299, + -5.0529] + mod_poi = Poisson(endog, exog) + res_poi = mod_poi.fit(start_params=start_params) + #res_poi = mod_poi.fit(maxiter=100) + marge_poi = res_poi.get_margeff() + cls.res = res_poi + cls.margeff = marge_poi + + cls.rtol_fac = 1 + cls.res1_slice = slice(None, None, None) + cls.res1 = res_stata.results_poisson_margins_cont + + +class TestPoissonMarginDummy(CheckMarginMixin): + + @classmethod + def setup_class(cls): + # here we don't need to check convergence from default start_params + start_params = [14.1709, 0.7085, -3.4548, -0.539, 3.2368, -7.9299, + -5.0529] + mod_poi = Poisson(endog, exog) + res_poi = mod_poi.fit(start_params=start_params) + marge_poi = res_poi.get_margeff(dummy=True) + cls.res = res_poi + cls.margeff = marge_poi + + cls.res1_slice = [0, 1, 2, 3, 5, 6] + cls.res1 = res_stata.results_poisson_margins_dummy + + +class TestNegBinMargin(CheckMarginMixin): + + @classmethod + def setup_class(cls): + # here we don't need to check convergence from default start_params + start_params = [13.1996, 0.8582, -2.8005, -1.5031, 2.3849, -8.5552, + -2.88, 1.14] + mod = NegativeBinomial(endog, exog) + res = mod.fit(start_params=start_params, method='nm', maxiter=2000) + marge = res.get_margeff() + cls.res = res + cls.margeff = marge + + cls.res1_slice = slice(None, None, None) + cls.res1 = res_stata.results_negbin_margins_cont + cls.rtol_fac = 5e1 + # negbin has lower agreement with Stata in this case + + +class TestNegBinMarginDummy(CheckMarginMixin): + + @classmethod + def setup_class(cls): + # here we don't need to check convergence from default start_params + start_params = [13.1996, 0.8582, -2.8005, -1.5031, 2.3849, -8.5552, + -2.88, 1.14] + mod = NegativeBinomial(endog, exog) + res = mod.fit(start_params=start_params, method='nm', maxiter=2000) + marge = res.get_margeff(dummy=True) + cls.res = res + cls.margeff = marge + + cls.res1_slice = cls.res1_slice = [0, 1, 2, 3, 5, 6] + cls.res1 = res_stata.results_negbin_margins_dummy + cls.rtol_fac = 5e1 + + +class TestNegBinPMargin(CheckMarginMixin): + # this is the same as the nb2 version above for NB-P, p=2 + + @classmethod + def setup_class(cls): + # here we don't need to check convergence from default start_params + start_params = [13.1996, 0.8582, -2.8005, -1.5031, 2.3849, -8.5552, + -2.88, 1.14] + mod = NegativeBinomialP(endog, exog) # checks also that default p=2 + res = mod.fit(start_params=start_params, method='nm', maxiter=2000) + marge = res.get_margeff() + cls.res = res + cls.margeff = marge + + cls.res1_slice = slice(None, None, None) + cls.res1 = res_stata.results_negbin_margins_cont + cls.rtol_fac = 5e1 + # negbin has lower agreement with Stata in this case diff --git a/statsmodels/discrete/tests/test_sandwich_cov.py b/statsmodels/discrete/tests/test_sandwich_cov.py new file mode 100644 index 0000000..e3e7d1d --- /dev/null +++ b/statsmodels/discrete/tests/test_sandwich_cov.py @@ -0,0 +1,692 @@ +# -*- coding: utf-8 -*- +""" + +Created on Mon Dec 09 21:29:20 2013 + +Author: Josef Perktold +""" + +import os +import numpy as np +import pandas as pd +import statsmodels.discrete.discrete_model as smd +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod import families +from statsmodels.genmod.families import links +from statsmodels.regression.linear_model import OLS +from statsmodels.base.covtype import get_robustcov_results +import statsmodels.stats.sandwich_covariance as sw +from statsmodels.tools.tools import add_constant + + +from numpy.testing import assert_allclose, assert_equal, assert_ +import statsmodels.tools._testing as smt + + +# get data and results as module global for now, TODO: move to class +from .results import results_count_robust_cluster as results_st + +cur_dir = os.path.dirname(os.path.abspath(__file__)) + +filepath = os.path.join(cur_dir, "results", "ships.csv") +data_raw = pd.read_csv(filepath, index_col=False) +data = data_raw.dropna() + +#mod = smd.Poisson.from_formula('accident ~ yr_con + op_75_79', data=dat) +# Don't use formula for tests against Stata because intercept needs to be last +endog = data['accident'] +exog_data = data['yr_con op_75_79'.split()] +exog = add_constant(exog_data, prepend=False) +group = np.asarray(data['ship'], int) +exposure = np.asarray(data['service']) + + +# TODO get the test methods from regression/tests +class CheckCountRobustMixin(object): + + + def test_basic(self): + res1 = self.res1 + res2 = self.res2 + + if len(res1.params) == (len(res2.params) - 1): + # Stata includes lnalpha in table for NegativeBinomial + mask = np.ones(len(res2.params), np.bool_) + mask[-2] = False + res2_params = res2.params[mask] + res2_bse = res2.bse[mask] + else: + res2_params = res2.params + res2_bse = res2.bse + + assert_allclose(res1._results.params, res2_params, 1e-4) + + assert_allclose(self.bse_rob / self.corr_fact, res2_bse, 6e-5) + + @classmethod + def get_robust_clu(cls): + res1 = cls.res1 + cov_clu = sw.cov_cluster(res1, group) + cls.bse_rob = sw.se_cov(cov_clu) + + cls.corr_fact = cls.get_correction_factor(res1) + + @classmethod + def get_correction_factor(cls, results, sub_kparams=True): + mod = results.model + nobs, k_vars = mod.exog.shape + + if sub_kparams: + # TODO: document why we adjust by k_params for some classes + # but not others. + k_params = len(results.params) + else: + k_params = 0 + + corr_fact = (nobs - 1.) / float(nobs - k_params) + # for bse we need sqrt of correction factor + return np.sqrt(corr_fact) + + + def test_oth(self): + res1 = self.res1 + res2 = self.res2 + assert_allclose(res1._results.llf, res2.ll, 1e-4) + assert_allclose(res1._results.llnull, res2.ll_0, 1e-4) + + + def test_ttest(self): + smt.check_ttest_tvalues(self.res1) + + + def test_waldtest(self): + smt.check_ftest_pvalues(self.res1) + + +class TestPoissonClu(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_poisson_clu + mod = smd.Poisson(endog, exog) + cls.res1 = mod.fit(disp=False) + cls.get_robust_clu() + + +class TestPoissonCluGeneric(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_poisson_clu + mod = smd.Poisson(endog, exog) + cls.res1 = res1 = mod.fit(disp=False) + + debug = False + if debug: + # for debugging + cls.bse_nonrobust = cls.res1.bse.copy() + cls.res1 = res1 = mod.fit(disp=False) + cls.get_robust_clu() + cls.res3 = cls.res1 + cls.bse_rob3 = cls.bse_rob.copy() + cls.res1 = res1 = mod.fit(disp=False) + + from statsmodels.base.covtype import get_robustcov_results + + #res_hc0_ = cls.res1.get_robustcov_results('HC1') + get_robustcov_results(cls.res1._results, 'cluster', + groups=group, + use_correction=True, + df_correction=True, #TODO has no effect + use_t=False, #True, + use_self=True) + cls.bse_rob = cls.res1.bse + + cls.corr_fact = cls.get_correction_factor(cls.res1) + + +class TestPoissonHC1Generic(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_poisson_hc1 + mod = smd.Poisson(endog, exog) + cls.res1 = mod.fit(disp=False) + + from statsmodels.base.covtype import get_robustcov_results + + #res_hc0_ = cls.res1.get_robustcov_results('HC1') + get_robustcov_results(cls.res1._results, 'HC1', use_self=True) + cls.bse_rob = cls.res1.bse + + cls.corr_fact = cls.get_correction_factor(cls.res1, sub_kparams=False) + + +# TODO: refactor xxxFit to full testing results +class TestPoissonCluFit(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + + + cls.res2 = results_st.results_poisson_clu + mod = smd.Poisson(endog, exog) + + # scaling of cov_params_default to match Stata + # TODO should the default be changed? + nobs, k_params = mod.exog.shape + # TODO: this is similar but not identical to logic in + # get_correction_factor; can we de-duplicate? + sc_fact = (nobs-1.) / float(nobs - k_params) + + cls.res1 = mod.fit(disp=False, cov_type='cluster', + cov_kwds=dict(groups=group, + use_correction=True, + scaling_factor=1. / sc_fact, + df_correction=True), #TODO has no effect + use_t=False, #True, + ) + + # The model results, t_test, ... should also work without + # normalized_cov_params, see #2209 + # Note: we cannot set on the wrapper res1, we need res1._results + cls.res1._results.normalized_cov_params = None + + cls.bse_rob = cls.res1.bse + + # backwards compatibility with inherited test methods + cls.corr_fact = 1 + + + def test_basic_inference(self): + res1 = self.res1 + res2 = self.res2 + rtol = 1e-7 + assert_allclose(res1.params, res2.params, rtol=1e-8) + assert_allclose(res1.bse, res2.bse, rtol=rtol) + assert_allclose(res1.tvalues, res2.tvalues, rtol=rtol, atol=1e-8) + assert_allclose(res1.pvalues, res2.pvalues, rtol=rtol, atol=1e-20) + ci = res2.params_table[:, 4:6] + assert_allclose(res1.conf_int(), ci, rtol=5e-7, atol=1e-20) + + +class TestPoissonHC1Fit(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_poisson_hc1 + mod = smd.Poisson(endog, exog) + cls.res1 = mod.fit(disp=False, cov_type='HC1') + + cls.bse_rob = cls.res1.bse + + cls.corr_fact = cls.get_correction_factor(cls.res1, sub_kparams=False) + + +class TestPoissonHC1FitExposure(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_poisson_exposure_hc1 + mod = smd.Poisson(endog, exog, exposure=exposure) + cls.res1 = mod.fit(disp=False, cov_type='HC1') + + cls.bse_rob = cls.res1.bse + + cls.corr_fact = cls.get_correction_factor(cls.res1, sub_kparams=False) + + +class TestPoissonCluExposure(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_poisson_exposure_clu #nonrobust + mod = smd.Poisson(endog, exog, exposure=exposure) + cls.res1 = mod.fit(disp=False) + cls.get_robust_clu() + + +class TestPoissonCluExposureGeneric(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_poisson_exposure_clu #nonrobust + mod = smd.Poisson(endog, exog, exposure=exposure) + cls.res1 = res1 = mod.fit(disp=False) + + from statsmodels.base.covtype import get_robustcov_results + + #res_hc0_ = cls.res1.get_robustcov_results('HC1') + get_robustcov_results(cls.res1._results, 'cluster', + groups=group, + use_correction=True, + df_correction=True, #TODO has no effect + use_t=False, #True, + use_self=True) + cls.bse_rob = cls.res1.bse #sw.se_cov(cov_clu) + + cls.corr_fact = cls.get_correction_factor(cls.res1) + + +class TestGLMPoissonClu(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_poisson_clu + mod = smd.Poisson(endog, exog) + mod = GLM(endog, exog, family=families.Poisson()) + cls.res1 = mod.fit() + cls.get_robust_clu() + + +class TestGLMPoissonCluGeneric(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_poisson_clu + mod = GLM(endog, exog, family=families.Poisson()) + cls.res1 = res1 = mod.fit() + + get_robustcov_results(cls.res1._results, 'cluster', + groups=group, + use_correction=True, + df_correction=True, #TODO has no effect + use_t=False, #True, + use_self=True) + cls.bse_rob = cls.res1.bse + + cls.corr_fact = cls.get_correction_factor(cls.res1) + + +class TestGLMPoissonHC1Generic(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_poisson_hc1 + mod = GLM(endog, exog, family=families.Poisson()) + cls.res1 = mod.fit() + + #res_hc0_ = cls.res1.get_robustcov_results('HC1') + get_robustcov_results(cls.res1._results, 'HC1', use_self=True) + cls.bse_rob = cls.res1.bse + + cls.corr_fact = cls.get_correction_factor(cls.res1, sub_kparams=False) + + +# TODO: refactor xxxFit to full testing results +class TestGLMPoissonCluFit(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_poisson_clu + mod = GLM(endog, exog, family=families.Poisson()) + cls.res1 = res1 = mod.fit(cov_type='cluster', + cov_kwds=dict(groups=group, + use_correction=True, + df_correction=True), #TODO has no effect + use_t=False, #True, + ) + + # The model results, t_test, ... should also work without + # normalized_cov_params, see #2209 + # Note: we cannot set on the wrapper res1, we need res1._results + cls.res1._results.normalized_cov_params = None + + cls.bse_rob = cls.res1.bse + + cls.corr_fact = cls.get_correction_factor(cls.res1) + + +class TestGLMPoissonHC1Fit(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_poisson_hc1 + mod = GLM(endog, exog, family=families.Poisson()) + cls.res1 = mod.fit(cov_type='HC1') + + cls.bse_rob = cls.res1.bse + + cls.corr_fact = cls.get_correction_factor(cls.res1, sub_kparams=False) + + +class TestNegbinClu(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_negbin_clu + mod = smd.NegativeBinomial(endog, exog) + cls.res1 = mod.fit(disp=False, gtol=1e-7) + cls.get_robust_clu() + + +class TestNegbinCluExposure(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_negbin_exposure_clu #nonrobust + mod = smd.NegativeBinomial(endog, exog, exposure=exposure) + cls.res1 = mod.fit(disp=False) + cls.get_robust_clu() + + +# mod_nbe = smd.NegativeBinomial(endog, exog, exposure=data['service']) +# res_nbe = mod_nbe.fit() +# mod_nb = smd.NegativeBinomial(endog, exog) +# res_nb = mod_nb.fit() +# +# cov_clu_nb = sw.cov_cluster(res_nb, group) +# k_params = k_vars + 1 +# print sw.se_cov(cov_clu_nb / ((nobs-1.) / float(nobs - k_params))) +# +# wt = res_nb.wald_test(np.eye(len(res_nb.params))[1:3], cov_p=cov_clu_nb/((nobs-1.) / float(nobs - k_params))) +# print wt +# +# print dir(results_st) + +class TestNegbinCluGeneric(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_negbin_clu + mod = smd.NegativeBinomial(endog, exog) + cls.res1 = res1 = mod.fit(disp=False, gtol=1e-7) + + get_robustcov_results(cls.res1._results, 'cluster', + groups=group, + use_correction=True, + df_correction=True, #TODO has no effect + use_t=False, #True, + use_self=True) + cls.bse_rob = cls.res1.bse + + cls.corr_fact = cls.get_correction_factor(cls.res1) + + +class TestNegbinCluFit(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_negbin_clu + mod = smd.NegativeBinomial(endog, exog) + cls.res1 = res1 = mod.fit(disp=False, cov_type='cluster', + cov_kwds=dict(groups=group, + use_correction=True, + df_correction=True), #TODO has no effect + use_t=False, #True, + gtol=1e-7) + cls.bse_rob = cls.res1.bse + + cls.corr_fact = cls.get_correction_factor(cls.res1) + + +class TestNegbinCluExposureFit(CheckCountRobustMixin): + + @classmethod + def setup_class(cls): + cls.res2 = results_st.results_negbin_exposure_clu #nonrobust + mod = smd.NegativeBinomial(endog, exog, exposure=exposure) + cls.res1 = res1 = mod.fit(disp=False, cov_type='cluster', + cov_kwds=dict(groups=group, + use_correction=True, + df_correction=True), #TODO has no effect + use_t=False, #True, + ) + cls.bse_rob = cls.res1.bse + + cls.corr_fact = cls.get_correction_factor(cls.res1) + + +class CheckDiscreteGLM(object): + # compare GLM with other models, no verified reference results + + def test_basic(self): + res1 = self.res1 + res2 = self.res2 + + assert_equal(res1.cov_type, self.cov_type) + assert_equal(res2.cov_type, self.cov_type) + + rtol = getattr(res1, 'rtol', 1e-13) + assert_allclose(res1.params, res2.params, rtol=rtol) + assert_allclose(res1.bse, res2.bse, rtol=1e-10) + + +class TestGLMLogit(CheckDiscreteGLM): + + @classmethod + def setup_class(cls): + endog_bin = (endog > endog.mean()).astype(int) + cls.cov_type = 'cluster' + + mod1 = GLM(endog_bin, exog, family=families.Binomial()) + cls.res1 = mod1.fit(cov_type='cluster', cov_kwds=dict(groups=group)) + + mod1 = smd.Logit(endog_bin, exog) + cls.res2 = mod1.fit(cov_type='cluster', cov_kwds=dict(groups=group)) + + +class TestGLMProbit(CheckDiscreteGLM): + + @classmethod + def setup_class(cls): + endog_bin = (endog > endog.mean()).astype(int) + cls.cov_type = 'cluster' + + mod1 = GLM(endog_bin, exog, family=families.Binomial(link=links.probit())) + cls.res1 = mod1.fit(method='newton', + cov_type='cluster', cov_kwds=dict(groups=group)) + + mod1 = smd.Probit(endog_bin, exog) + cls.res2 = mod1.fit(cov_type='cluster', cov_kwds=dict(groups=group)) + cls.rtol = 1e-6 + + def test_score_hessian(self): + res1 = self.res1 + res2 = self.res2 + # Note scale is fixed at 1, so we don't need to fix it explicitly + score1 = res1.model.score(res1.params * 0.98) + score2 = res2.model.score(res1.params * 0.98) + assert_allclose(score1, score2, rtol=1e-13) + + hess1 = res1.model.hessian(res1.params) + hess2 = res2.model.hessian(res1.params) + assert_allclose(hess1, hess2, rtol=1e-10) + + +class TestGLMGaussNonRobust(CheckDiscreteGLM): + + @classmethod + def setup_class(cls): + cls.cov_type = 'nonrobust' + + mod1 = GLM(endog, exog, family=families.Gaussian()) + cls.res1 = mod1.fit() + + mod2 = OLS(endog, exog) + cls.res2 = mod2.fit() + + +class TestGLMGaussClu(CheckDiscreteGLM): + + @classmethod + def setup_class(cls): + cls.cov_type = 'cluster' + + mod1 = GLM(endog, exog, family=families.Gaussian()) + cls.res1 = mod1.fit(cov_type='cluster', cov_kwds=dict(groups=group)) + + mod2 = OLS(endog, exog) + cls.res2 = mod2.fit(cov_type='cluster', cov_kwds=dict(groups=group)) + + +class TestGLMGaussHC(CheckDiscreteGLM): + + @classmethod + def setup_class(cls): + cls.cov_type = 'HC0' + + mod1 = GLM(endog, exog, family=families.Gaussian()) + cls.res1 = mod1.fit(cov_type='HC0') + + mod2 = OLS(endog, exog) + cls.res2 = mod2.fit(cov_type='HC0') + + +class TestGLMGaussHAC(CheckDiscreteGLM): + + @classmethod + def setup_class(cls): + + cls.cov_type = 'HAC' + + kwds={'maxlags':2} + mod1 = GLM(endog, exog, family=families.Gaussian()) + cls.res1 = mod1.fit(cov_type='HAC', cov_kwds=kwds) + + mod2 = OLS(endog, exog) + cls.res2 = mod2.fit(cov_type='HAC', cov_kwds=kwds) + + +class TestGLMGaussHAC2(CheckDiscreteGLM): + + @classmethod + def setup_class(cls): + + cls.cov_type = 'HAC' + + # check kernel specified as string + kwds = {'kernel': 'bartlett', 'maxlags': 2} + mod1 = GLM(endog, exog, family=families.Gaussian()) + cls.res1 = mod1.fit(cov_type='HAC', cov_kwds=kwds) + + mod2 = OLS(endog, exog) + kwds2 = {'maxlags': 2} + cls.res2 = mod2.fit(cov_type='HAC', cov_kwds=kwds2) + + +class TestGLMGaussHACUniform(CheckDiscreteGLM): + + @classmethod + def setup_class(cls): + + cls.cov_type = 'HAC' + + kwds={'kernel':sw.weights_uniform, 'maxlags':2} + mod1 = GLM(endog, exog, family=families.Gaussian()) + cls.res1 = mod1.fit(cov_type='HAC', cov_kwds=kwds) + + mod2 = OLS(endog, exog) + cls.res2 = mod2.fit(cov_type='HAC', cov_kwds=kwds) + + #for debugging + cls.res3 = mod2.fit(cov_type='HAC', cov_kwds={'maxlags':2}) + + + def test_cov_options(self): + + # check keyword `weights_func + kwdsa = {'weights_func': sw.weights_uniform, 'maxlags': 2} + res1a = self.res1.model.fit(cov_type='HAC', cov_kwds=kwdsa) + res2a = self.res2.model.fit(cov_type='HAC', cov_kwds=kwdsa) + assert_allclose(res1a.bse, self.res1.bse, rtol=1e-12) + assert_allclose(res2a.bse, self.res2.bse, rtol=1e-12) + + # regression test for bse values + bse = np.array([ 2.82203924, 4.60199596, 11.01275064]) + assert_allclose(res1a.bse, bse, rtol=1e-6) + + assert_(res1a.cov_kwds['weights_func'] is sw.weights_uniform) + + kwdsb = {'kernel': sw.weights_bartlett, 'maxlags': 2} + res1a = self.res1.model.fit(cov_type='HAC', cov_kwds=kwdsb) + res2a = self.res2.model.fit(cov_type='HAC', cov_kwds=kwdsb) + assert_allclose(res1a.bse, res2a.bse, rtol=1e-12) + + # regression test for bse values + bse = np.array([ 2.502264, 3.697807, 9.193303]) + assert_allclose(res1a.bse, bse, rtol=1e-6) + + + +class TestGLMGaussHACUniform2(TestGLMGaussHACUniform): + + @classmethod + def setup_class(cls): + + cls.cov_type = 'HAC' + + kwds={'kernel': sw.weights_uniform, 'maxlags': 2} + mod1 = GLM(endog, exog, family=families.Gaussian()) + cls.res1 = mod1.fit(cov_type='HAC', cov_kwds=kwds) + + # check kernel as string + mod2 = OLS(endog, exog) + kwds2 = {'kernel': 'uniform', 'maxlags': 2} + cls.res2 = mod2.fit(cov_type='HAC', cov_kwds=kwds) + + +class TestGLMGaussHACPanel(CheckDiscreteGLM): + + @classmethod + def setup_class(cls): + cls.cov_type = 'hac-panel' + # time index is just made up to have a test case + time = np.tile(np.arange(7), 5)[:-1] + mod1 = GLM(endog.copy(), exog.copy(), family=families.Gaussian()) + kwds = dict(time=time, + maxlags=2, + kernel=sw.weights_uniform, + use_correction='hac', + df_correction=False) + cls.res1 = mod1.fit(cov_type='hac-panel', cov_kwds=kwds) + cls.res1b = mod1.fit(cov_type='nw-panel', cov_kwds=kwds) + + mod2 = OLS(endog, exog) + cls.res2 = mod2.fit(cov_type='hac-panel', cov_kwds=kwds) + + def test_kwd(self): + # test corrected keyword name + assert_allclose(self.res1b.bse, self.res1.bse, rtol=1e-12) + + +class TestGLMGaussHACPanelGroups(CheckDiscreteGLM): + + @classmethod + def setup_class(cls): + cls.cov_type = 'hac-panel' + # time index is just made up to have a test case + groups = np.repeat(np.arange(5), 7)[:-1] + mod1 = GLM(endog.copy(), exog.copy(), family=families.Gaussian()) + kwds = dict(groups=pd.Series(groups), # check for #3606 + maxlags=2, + kernel=sw.weights_uniform, + use_correction='hac', + df_correction=False) + cls.res1 = mod1.fit(cov_type='hac-panel', cov_kwds=kwds) + + mod2 = OLS(endog, exog) + cls.res2 = mod2.fit(cov_type='hac-panel', cov_kwds=kwds) + + +class TestGLMGaussHACGroupsum(CheckDiscreteGLM): + + @classmethod + def setup_class(cls): + cls.cov_type = 'hac-groupsum' + # time index is just made up to have a test case + time = np.tile(np.arange(7), 5)[:-1] + mod1 = GLM(endog, exog, family=families.Gaussian()) + kwds = dict(time=pd.Series(time), # check for #3606 + maxlags=2, + use_correction='hac', + df_correction=False) + cls.res1 = mod1.fit(cov_type='hac-groupsum', cov_kwds=kwds) + cls.res1b = mod1.fit(cov_type='nw-groupsum', cov_kwds=kwds) + + mod2 = OLS(endog, exog) + cls.res2 = mod2.fit(cov_type='hac-groupsum', cov_kwds=kwds) + + def test_kwd(self): + # test corrected keyword name + assert_allclose(self.res1b.bse, self.res1.bse, rtol=1e-12) diff --git a/statsmodels/distributions/__init__.py b/statsmodels/distributions/__init__.py new file mode 100644 index 0000000..7854210 --- /dev/null +++ b/statsmodels/distributions/__init__.py @@ -0,0 +1,10 @@ +from statsmodels.tools._testing import PytestTester +from .empirical_distribution import ECDF, monotone_fn_inverter, StepFunction +from .edgeworth import ExpandedNormal +from .discrete import genpoisson_p, zipoisson, zigenpoisson, zinegbin + +__all__ = ['test', 'ECDF', 'monotone_fn_inverter', 'StepFunction', + 'ExpandedNormal', 'genpoisson_p', 'zigenpoisson', 'zinegbin', + 'zipoisson'] + +test = PytestTester() diff --git a/statsmodels/distributions/discrete.py b/statsmodels/distributions/discrete.py new file mode 100644 index 0000000..c586106 --- /dev/null +++ b/statsmodels/distributions/discrete.py @@ -0,0 +1,87 @@ +import numpy as np +from scipy.stats import rv_discrete, nbinom +from scipy.special import gammaln +from statsmodels.compat.scipy import _lazywhere + + +class genpoisson_p_gen(rv_discrete): + '''Generalized Poisson distribution + ''' + def _argcheck(self, mu, alpha, p): + return (mu >= 0) & (alpha==alpha) & (p > 0) + + def _logpmf(self, x, mu, alpha, p): + mu_p = mu ** (p - 1.) + a1 = np.maximum(np.nextafter(0, 1), 1 + alpha * mu_p) + a2 = np.maximum(np.nextafter(0, 1), mu + (a1 - 1.) * x) + logpmf_ = np.log(mu) + (x - 1.) * np.log(a2) + logpmf_ -= x * np.log(a1) + gammaln(x + 1.) + a2 / a1 + return logpmf_ + + def _pmf(self, x, mu, alpha, p): + return np.exp(self._logpmf(x, mu, alpha, p)) + +genpoisson_p = genpoisson_p_gen(name='genpoisson_p', + longname='Generalized Poisson') + +class zipoisson_gen(rv_discrete): + '''Zero Inflated Poisson distribution + ''' + def _argcheck(self, mu, w): + return (mu > 0) & (w >= 0) & (w<=1) + + def _logpmf(self, x, mu, w): + return _lazywhere(x != 0, (x, mu, w), + (lambda x, mu, w: np.log(1. - w) + x * np.log(mu) - + gammaln(x + 1.) - mu), + np.log(w + (1. - w) * np.exp(-mu))) + + def _pmf(self, x, mu, w): + return np.exp(self._logpmf(x, mu, w)) + +zipoisson = zipoisson_gen(name='zipoisson', + longname='Zero Inflated Poisson') + +class zigeneralizedpoisson_gen(rv_discrete): + '''Zero Inflated Generalized Poisson distribution + ''' + def _argcheck(self, mu, alpha, p, w): + return (mu > 0) & (w >= 0) & (w<=1) + + def _logpmf(self, x, mu, alpha, p, w): + return _lazywhere(x != 0, (x, mu, alpha, p, w), + (lambda x, mu, alpha, p, w: np.log(1. - w) + + genpoisson_p.logpmf(x, mu, alpha, p)), + np.log(w + (1. - w) * + genpoisson_p.pmf(x, mu, alpha, p))) + + def _pmf(self, x, mu, alpha, p, w): + return np.exp(self._logpmf(x, mu, alpha, p, w)) + +zigenpoisson = zigeneralizedpoisson_gen(name='zigenpoisson', + longname='Zero Inflated Generalized Poisson') + +class zinegativebinomial_gen(rv_discrete): + '''Zero Inflated Generalized Negative Binomial distribution + ''' + def _argcheck(self, mu, alpha, p, w): + return (mu > 0) & (w >= 0) & (w<=1) + + def _logpmf(self, x, mu, alpha, p, w): + s, p = self.convert_params(mu, alpha, p) + return _lazywhere(x != 0, (x, s, p, w), + (lambda x, s, p, w: np.log(1. - w) + + nbinom.logpmf(x, s, p)), + np.log(w + (1. - w) * + nbinom.pmf(x, s, p))) + + def _pmf(self, x, mu, alpha, p, w): + return np.exp(self._logpmf(x, mu, alpha, p, w)) + + def convert_params(self, mu, alpha, p): + size = 1. / alpha * mu**(2-p) + prob = size / (size + mu) + return (size, prob) + +zinegbin = zinegativebinomial_gen(name='zinegbin', + longname='Zero Inflated Generalized Negative Binomial') diff --git a/statsmodels/distributions/edgeworth.py b/statsmodels/distributions/edgeworth.py new file mode 100644 index 0000000..fb548d1 --- /dev/null +++ b/statsmodels/distributions/edgeworth.py @@ -0,0 +1,207 @@ +from __future__ import division, print_function, absolute_import + +import warnings + +import numpy as np +from numpy.polynomial.hermite_e import HermiteE +from statsmodels.compat.scipy import factorial +from scipy.stats import rv_continuous +import scipy.special as special + +# TODO: +# * actually solve (31) of Blinnikov & Moessner +# * numerical stability: multiply factorials in logspace? +# * ppf & friends: Cornish & Fisher series, or tabulate/solve + + +_faa_di_bruno_cache = { + 1: [[(1, 1)]], + 2: [[(1, 2)], [(2, 1)]], + 3: [[(1, 3)], [(2, 1), (1, 1)], [(3, 1)]], + 4: [[(1, 4)], [(1, 2), (2, 1)], [(2, 2)], [(3, 1), (1, 1)], [(4, 1)]]} + + +def _faa_di_bruno_partitions(n): + """ Return all non-negative integer solutions of the diophantine equation + + n*k_n + ... + 2*k_2 + 1*k_1 = n (1) + + Parameters + ---------- + n: int + the r.h.s. of Eq. (1) + + Returns + ------- + partitions: a list of solutions of (1). Each solution is itself + a list of the form `[(m, k_m), ...]` for non-zero `k_m`. + Notice that the index `m` is 1-based. + + Examples: + --------- + >>> _faa_di_bruno_partitions(2) + [[(1, 2)], [(2, 1)]] + >>> for p in _faa_di_bruno_partitions(4): + ... assert 4 == sum(m * k for (m, k) in p) + + """ + if n < 1: + raise ValueError("Expected a positive integer; got %s instead" % n) + try: + return _faa_di_bruno_cache[n] + except KeyError: + # TODO: higher order terms + # solve Eq. (31) from Blinninkov & Moessner here + raise NotImplementedError('Higher order terms not yet implemented.') + + +def cumulant_from_moments(momt, n): + """Compute n-th cumulant given moments. + + Parameters + ---------- + momt: array_like + `momt[j]` contains `(j+1)`-th moment. + These can be raw moments around zero, or central moments + (in which case, `momt[0]` == 0). + n: integer + which cumulant to calculate (must be >1) + + Returns + ------- + kappa: float + n-th cumulant. + + """ + if n < 1: + raise ValueError("Expected a positive integer. Got %s instead." % n) + if len(momt) < n: + raise ValueError("%s-th cumulant requires %s moments, " + "only got %s." % (n, n, len(momt))) + kappa = 0. + for p in _faa_di_bruno_partitions(n): + r = sum(k for (m, k) in p) + term = (-1)**(r - 1) * factorial(r - 1) + for (m, k) in p: + term *= np.power(momt[m - 1] / factorial(m), k) / factorial(k) + kappa += term + kappa *= factorial(n) + return kappa + +## copied from scipy.stats.distributions to avoid the overhead of +## the public methods +_norm_pdf_C = np.sqrt(2*np.pi) +def _norm_pdf(x): + return np.exp(-x**2/2.0) / _norm_pdf_C + +def _norm_cdf(x): + return special.ndtr(x) + +def _norm_sf(x): + return special.ndtr(-x) + + +class ExpandedNormal(rv_continuous): + """Construct the Edgeworth expansion pdf given cumulants. + + Parameters + ---------- + cum: array_like + `cum[j]` contains `(j+1)`-th cumulant: cum[0] is the mean, + cum[1] is the variance and so on. + + Notes + ----- + This is actually an asymptotic rather than convergent series, hence + higher orders of the expansion may or may not improve the result. + In a strongly non-Gaussian case, it is possible that the density + becomes negative, especially far out in the tails. + + Examples + -------- + Construct the 4th order expansion for the chi-square distribution using + the known values of the cumulants: + + >>> import matplotlib.pyplot as plt + >>> from scipy import stats + >>> from scipy.misc import factorial + >>> df = 12 + >>> chi2_c = [2**(j-1) * factorial(j-1) * df for j in range(1, 5)] + >>> edgw_chi2 = ExpandedNormal(chi2_c, name='edgw_chi2', momtype=0) + + Calculate several moments: + >>> m, v = edgw_chi2.stats(moments='mv') + >>> np.allclose([m, v], [df, 2 * df]) + True + + Plot the density function: + >>> mu, sigma = df, np.sqrt(2*df) + >>> x = np.linspace(mu - 3*sigma, mu + 3*sigma) + >>> fig1 = plt.plot(x, stats.chi2.pdf(x, df=df), 'g-', lw=4, alpha=0.5) + >>> fig2 = plt.plot(x, stats.norm.pdf(x, mu, sigma), 'b--', lw=4, alpha=0.5) + >>> fig3 = plt.plot(x, edgw_chi2.pdf(x), 'r-', lw=2) + >>> plt.show() + + References + ---------- + .. [*] E.A. Cornish and R.A. Fisher, Moments and cumulants in the + specification of distributions, Revue de l'Institut Internat. + de Statistique. 5: 307 (1938), reprinted in + R.A. Fisher, Contributions to Mathematical Statistics. Wiley, 1950. + .. [*] http://en.wikipedia.org/wiki/Edgeworth_series + .. [*] S. Blinnikov and R. Moessner, Expansions for nearly Gaussian + distributions, Astron. Astrophys. Suppl. Ser. 130, 193 (1998) + + """ + def __init__(self, cum, name='Edgeworth expanded normal', **kwds): + if len(cum) < 2: + raise ValueError("At least two cumulants are needed.") + self._coef, self._mu, self._sigma = self._compute_coefs_pdf(cum) + self._herm_pdf = HermiteE(self._coef) + if self._coef.size > 2: + self._herm_cdf = HermiteE(-self._coef[1:]) + else: + self._herm_cdf = lambda x: 0. + + # warn if pdf(x) < 0 for some values of x within 4 sigma + r = np.real_if_close(self._herm_pdf.roots()) + r = (r - self._mu) / self._sigma + if r[(np.imag(r) == 0) & (np.abs(r) < 4)].any(): + mesg = 'PDF has zeros at %s ' % r + warnings.warn(mesg, RuntimeWarning) + + kwds.update({'name': name, + 'momtype': 0}) # use pdf, not ppf in self.moment() + super(ExpandedNormal, self).__init__(**kwds) + + def _pdf(self, x): + y = (x - self._mu) / self._sigma + return self._herm_pdf(y) * _norm_pdf(y) / self._sigma + + def _cdf(self, x): + y = (x - self._mu) / self._sigma + return (_norm_cdf(y) + + self._herm_cdf(y) * _norm_pdf(y)) + + def _sf(self, x): + y = (x - self._mu) / self._sigma + return (_norm_sf(y) - + self._herm_cdf(y) * _norm_pdf(y)) + + def _compute_coefs_pdf(self, cum): + # scale cumulants by \sigma + mu, sigma = cum[0], np.sqrt(cum[1]) + lam = np.asarray(cum) + for j, l in enumerate(lam): + lam[j] /= cum[1]**j + + coef = np.zeros(lam.size * 3 - 5) + coef[0] = 1. + for s in range(lam.size - 2): + for p in _faa_di_bruno_partitions(s+1): + term = sigma**(s+1) + for (m, k) in p: + term *= np.power(lam[m+1] / factorial(m+2), k) / factorial(k) + r = sum(k for (m, k) in p) + coef[s + 1 + 2*r] += term + return coef, mu, sigma diff --git a/statsmodels/distributions/empirical_distribution.py b/statsmodels/distributions/empirical_distribution.py new file mode 100644 index 0000000..2cfa4c9 --- /dev/null +++ b/statsmodels/distributions/empirical_distribution.py @@ -0,0 +1,185 @@ +""" +Empirical CDF Functions +""" +import numpy as np +from scipy.interpolate import interp1d + +def _conf_set(F, alpha=.05): + r""" + Constructs a Dvoretzky-Kiefer-Wolfowitz confidence band for the eCDF. + + Parameters + ---------- + F : array-like + The empirical distributions + alpha : float + Set alpha for a (1 - alpha) % confidence band. + + Notes + ----- + Based on the DKW inequality. + + .. math:: P \left( \sup_x \left| F(x) - \hat(F)_n(X) \right| > \epsilon \right) \leq 2e^{-2n\epsilon^2} + + References + ---------- + Wasserman, L. 2006. `All of Nonparametric Statistics`. Springer. + """ + nobs = len(F) + epsilon = np.sqrt(np.log(2./alpha) / (2 * nobs)) + lower = np.clip(F - epsilon, 0, 1) + upper = np.clip(F + epsilon, 0, 1) + return lower, upper + +class StepFunction(object): + """ + A basic step function. + + Values at the ends are handled in the simplest way possible: + everything to the left of x[0] is set to ival; everything + to the right of x[-1] is set to y[-1]. + + Parameters + ---------- + x : array-like + y : array-like + ival : float + ival is the value given to the values to the left of x[0]. Default + is 0. + sorted : bool + Default is False. + side : {'left', 'right'}, optional + Default is 'left'. Defines the shape of the intervals constituting the + steps. 'right' correspond to [a, b) intervals and 'left' to (a, b]. + + Examples + -------- + >>> import numpy as np + >>> from statsmodels.distributions.empirical_distribution import StepFunction + >>> + >>> x = np.arange(20) + >>> y = np.arange(20) + >>> f = StepFunction(x, y) + >>> + >>> print(f(3.2)) + 3.0 + >>> print(f([[3.2,4.5],[24,-3.1]])) + [[ 3. 4.] + [ 19. 0.]] + >>> f2 = StepFunction(x, y, side='right') + >>> + >>> print(f(3.0)) + 2.0 + >>> print(f2(3.0)) + 3.0 + """ + + def __init__(self, x, y, ival=0., sorted=False, side='left'): + + if side.lower() not in ['right', 'left']: + msg = "side can take the values 'right' or 'left'" + raise ValueError(msg) + self.side = side + + _x = np.asarray(x) + _y = np.asarray(y) + + if _x.shape != _y.shape: + msg = "x and y do not have the same shape" + raise ValueError(msg) + if len(_x.shape) != 1: + msg = 'x and y must be 1-dimensional' + raise ValueError(msg) + + self.x = np.r_[-np.inf, _x] + self.y = np.r_[ival, _y] + + if not sorted: + asort = np.argsort(self.x) + self.x = np.take(self.x, asort, 0) + self.y = np.take(self.y, asort, 0) + self.n = self.x.shape[0] + + def __call__(self, time): + + tind = np.searchsorted(self.x, time, self.side) - 1 + return self.y[tind] + +class ECDF(StepFunction): + """ + Return the Empirical CDF of an array as a step function. + + Parameters + ---------- + x : array-like + Observations + side : {'left', 'right'}, optional + Default is 'right'. Defines the shape of the intervals constituting the + steps. 'right' correspond to [a, b) intervals and 'left' to (a, b]. + + Returns + ------- + Empirical CDF as a step function. + + Examples + -------- + >>> import numpy as np + >>> from statsmodels.distributions.empirical_distribution import ECDF + >>> + >>> ecdf = ECDF([3, 3, 1, 4]) + >>> + >>> ecdf([3, 55, 0.5, 1.5]) + array([ 0.75, 1. , 0. , 0.25]) + """ + def __init__(self, x, side='right'): + x = np.array(x, copy=True) + x.sort() + nobs = len(x) + y = np.linspace(1./nobs,1,nobs) + super(ECDF, self).__init__(x, y, side=side, sorted=True) + # TODO: make `step` an arg and have a linear interpolation option? + # This is the path with `step` is True + # If `step` is False, a previous version of the code read + # `return interp1d(x,y,drop_errors=False,fill_values=ival)` + # which would have raised a NameError if hit, so would need to be + # fixed. See GH#5701. + + +def monotone_fn_inverter(fn, x, vectorized=True, **keywords): + """ + Given a monotone function fn (no checking is done to verify monotonicity) + and a set of x values, return an linearly interpolated approximation + to its inverse from its values on x. + """ + x = np.asarray(x) + if vectorized: + y = fn(x, **keywords) + else: + y = [] + for _x in x: + y.append(fn(_x, **keywords)) + y = np.array(y) + + a = np.argsort(y) + + return interp1d(y[a], x[a]) + +if __name__ == "__main__": + #TODO: Make sure everything is correctly aligned and make a plotting + # function + from statsmodels.compat.python import urlopen + import matplotlib.pyplot as plt + nerve_data = urlopen('http://www.statsci.org/data/general/nerve.txt') + nerve_data = np.loadtxt(nerve_data) + x = nerve_data / 50. # was in 1/50 seconds + cdf = ECDF(x) + x.sort() + F = cdf(x) + plt.step(x, F, where='post') + lower, upper = _conf_set(F) + plt.step(x, lower, 'r', where='post') + plt.step(x, upper, 'r', where='post') + plt.xlim(0, 1.5) + plt.ylim(0, 1.05) + plt.vlines(x, 0, .05) + plt.show() diff --git a/statsmodels/distributions/mixture_rvs.py b/statsmodels/distributions/mixture_rvs.py new file mode 100644 index 0000000..0321de2 --- /dev/null +++ b/statsmodels/distributions/mixture_rvs.py @@ -0,0 +1,281 @@ +from statsmodels.compat.python import range +import numpy as np + +def _make_index(prob,size): + """ + Returns a boolean index for given probabilities. + + Notes + --------- + prob = [.75,.25] means that there is a 75% chance of the first column + being True and a 25% chance of the second column being True. The + columns are mutually exclusive. + """ + rv = np.random.uniform(size=(size,1)) + cumprob = np.cumsum(prob) + return np.logical_and(np.r_[0,cumprob[:-1]] <= rv, rv < cumprob) + +def mixture_rvs(prob, size, dist, kwargs=None): + """ + Sample from a mixture of distributions. + + Parameters + ---------- + prob : array-like + Probability of sampling from each distribution in dist + size : int + The length of the returned sample. + dist : array-like + An iterable of distributions objects from scipy.stats. + kwargs : tuple of dicts, optional + A tuple of dicts. Each dict in kwargs can have keys loc, scale, and + args to be passed to the respective distribution in dist. If not + provided, the distribution defaults are used. + + Examples + -------- + Say we want 5000 random variables from mixture of normals with two + distributions norm(-1,.5) and norm(1,.5) and we want to sample from the + first with probability .75 and the second with probability .25. + + >>> from scipy import stats + >>> prob = [.75,.25] + >>> Y = mixture_rvs(prob, 5000, dist=[stats.norm, stats.norm], + ... kwargs = (dict(loc=-1,scale=.5),dict(loc=1,scale=.5))) + """ + if len(prob) != len(dist): + raise ValueError("You must provide as many probabilities as distributions") + if not np.allclose(np.sum(prob), 1): + raise ValueError("prob does not sum to 1") + + if kwargs is None: + kwargs = ({},)*len(prob) + + idx = _make_index(prob,size) + sample = np.empty(size) + for i in range(len(prob)): + sample_idx = idx[...,i] + sample_size = sample_idx.sum() + loc = kwargs[i].get('loc',0) + scale = kwargs[i].get('scale',1) + args = kwargs[i].get('args',()) + sample[sample_idx] = dist[i].rvs(*args, **dict(loc=loc,scale=scale, + size=sample_size)) + return sample + + +class MixtureDistribution(object): + '''univariate mixture distribution + + for simple case for now (unbound support) + does not yet inherit from scipy.stats.distributions + + adding pdf to mixture_rvs, some restrictions on broadcasting + Currently it does not hold any state, all arguments included in each method. + ''' + + #def __init__(self, prob, size, dist, kwargs=None): + + def rvs(self, prob, size, dist, kwargs=None): + return mixture_rvs(prob, size, dist, kwargs=kwargs) + + + def pdf(self, x, prob, dist, kwargs=None): + """ + pdf a mixture of distributions. + + Parameters + ---------- + x : array-like + Array containing locations where the PDF should be evaluated + prob : array-like + Probability of sampling from each distribution in dist + dist : array-like + An iterable of distributions objects from scipy.stats. + kwargs : tuple of dicts, optional + A tuple of dicts. Each dict in kwargs can have keys loc, scale, and + args to be passed to the respective distribution in dist. If not + provided, the distribution defaults are used. + + Examples + -------- + Say we want 5000 random variables from mixture of normals with two + distributions norm(-1,.5) and norm(1,.5) and we want to sample from the + first with probability .75 and the second with probability .25. + + >>> import numpy as np + >>> from scipy import stats + >>> from statsmodels.distributions.mixture_rvs import MixtureDistribution + >>> x = np.arange(-4.0, 4.0, 0.01) + >>> prob = [.75,.25] + >>> mixture = MixtureDistribution() + >>> Y = mixture.pdf(x, prob, dist=[stats.norm, stats.norm], + ... kwargs = (dict(loc=-1,scale=.5),dict(loc=1,scale=.5))) + """ + if len(prob) != len(dist): + raise ValueError("You must provide as many probabilities as distributions") + if not np.allclose(np.sum(prob), 1): + raise ValueError("prob does not sum to 1") + + if kwargs is None: + kwargs = ({},)*len(prob) + + for i in range(len(prob)): + loc = kwargs[i].get('loc',0) + scale = kwargs[i].get('scale',1) + args = kwargs[i].get('args',()) + if i == 0: #assume all broadcast the same as the first dist + pdf_ = prob[i] * dist[i].pdf(x, *args, loc=loc, scale=scale) + else: + pdf_ += prob[i] * dist[i].pdf(x, *args, loc=loc, scale=scale) + return pdf_ + + def cdf(self, x, prob, dist, kwargs=None): + """ + cdf of a mixture of distributions. + + Parameters + ---------- + x : array-like + Array containing locations where the CDF should be evaluated + prob : array-like + Probability of sampling from each distribution in dist + size : int + The length of the returned sample. + dist : array-like + An iterable of distributions objects from scipy.stats. + kwargs : tuple of dicts, optional + A tuple of dicts. Each dict in kwargs can have keys loc, scale, and + args to be passed to the respective distribution in dist. If not + provided, the distribution defaults are used. + + Examples + -------- + Say we want 5000 random variables from mixture of normals with two + distributions norm(-1,.5) and norm(1,.5) and we want to sample from the + first with probability .75 and the second with probability .25. + + >>> import numpy as np + >>> from scipy import stats + >>> from statsmodels.distributions.mixture_rvs import MixtureDistribution + >>> x = np.arange(-4.0, 4.0, 0.01) + >>> prob = [.75,.25] + >>> mixture = MixtureDistribution() + >>> Y = mixture.pdf(x, prob, dist=[stats.norm, stats.norm], + ... kwargs = (dict(loc=-1,scale=.5),dict(loc=1,scale=.5))) + """ + if len(prob) != len(dist): + raise ValueError("You must provide as many probabilities as distributions") + if not np.allclose(np.sum(prob), 1): + raise ValueError("prob does not sum to 1") + + if kwargs is None: + kwargs = ({},)*len(prob) + + for i in range(len(prob)): + loc = kwargs[i].get('loc',0) + scale = kwargs[i].get('scale',1) + args = kwargs[i].get('args',()) + if i == 0: #assume all broadcast the same as the first dist + cdf_ = prob[i] * dist[i].cdf(x, *args, loc=loc, scale=scale) + else: + cdf_ += prob[i] * dist[i].cdf(x, *args, loc=loc, scale=scale) + return cdf_ + + +def mv_mixture_rvs(prob, size, dist, nvars, **kwargs): + """ + Sample from a mixture of multivariate distributions. + + Parameters + ---------- + prob : array-like + Probability of sampling from each distribution in dist + size : int + The length of the returned sample. + dist : array-like + An iterable of distributions instances with callable method rvs. + nvargs : int + dimension of the multivariate distribution, could be inferred instead + kwargs : tuple of dicts, optional + ignored + + Examples + -------- + Say we want 2000 random variables from mixture of normals with two + multivariate normal distributions, and we want to sample from the + first with probability .4 and the second with probability .6. + + import statsmodels.sandbox.distributions.mv_normal as mvd + + cov3 = np.array([[ 1. , 0.5 , 0.75], + [ 0.5 , 1.5 , 0.6 ], + [ 0.75, 0.6 , 2. ]]) + + mu = np.array([-1, 0.0, 2.0]) + mu2 = np.array([4, 2.0, 2.0]) + mvn3 = mvd.MVNormal(mu, cov3) + mvn32 = mvd.MVNormal(mu2, cov3/2., 4) + rvs = mix.mv_mixture_rvs([0.4, 0.6], 2000, [mvn3, mvn32], 3) + + """ + if len(prob) != len(dist): + raise ValueError("You must provide as many probabilities as distributions") + if not np.allclose(np.sum(prob), 1): + raise ValueError("prob does not sum to 1") + + if kwargs is None: + kwargs = ({},)*len(prob) + + idx = _make_index(prob,size) + sample = np.empty((size, nvars)) + for i in range(len(prob)): + sample_idx = idx[...,i] + sample_size = sample_idx.sum() + #loc = kwargs[i].get('loc',0) + #scale = kwargs[i].get('scale',1) + #args = kwargs[i].get('args',()) + # use int to avoid numpy bug with np.random.multivariate_normal + sample[sample_idx] = dist[i].rvs(size=int(sample_size)) + return sample + + + +if __name__ == '__main__': + + from scipy import stats + + obs_dist = mixture_rvs([.25,.75], size=10000, dist=[stats.norm, stats.beta], + kwargs=(dict(loc=-1,scale=.5),dict(loc=1,scale=1,args=(1,.5)))) + + + + nobs = 10000 + mix = MixtureDistribution() +## mrvs = mixture_rvs([1/3.,2/3.], size=nobs, dist=[stats.norm, stats.norm], +## kwargs = (dict(loc=-1,scale=.5),dict(loc=1,scale=.75))) + + mix_kwds = (dict(loc=-1,scale=.25),dict(loc=1,scale=.75)) + mrvs = mix.rvs([1/3.,2/3.], size=nobs, dist=[stats.norm, stats.norm], + kwargs=mix_kwds) + + grid = np.linspace(-4,4, 100) + mpdf = mix.pdf(grid, [1/3.,2/3.], dist=[stats.norm, stats.norm], + kwargs=mix_kwds) + mcdf = mix.cdf(grid, [1/3.,2/3.], dist=[stats.norm, stats.norm], + kwargs=mix_kwds) + + doplot = 1 + if doplot: + import matplotlib.pyplot as plt + plt.figure() + plt.hist(mrvs, bins=50, normed=True, color='red') + plt.title('histogram of sample and pdf') + plt.plot(grid, mpdf, lw=2, color='black') + + plt.figure() + plt.hist(mrvs, bins=50, normed=True, cumulative=True, color='red') + plt.title('histogram of sample and pdf') + plt.plot(grid, mcdf, lw=2, color='black') + + plt.show() diff --git a/statsmodels/distributions/tests/__init__.py b/statsmodels/distributions/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/distributions/tests/test_discrete.py b/statsmodels/distributions/tests/test_discrete.py new file mode 100644 index 0000000..45f3992 --- /dev/null +++ b/statsmodels/distributions/tests/test_discrete.py @@ -0,0 +1,108 @@ +import statsmodels.api as sm +from scipy.stats import poisson, nbinom +from numpy.testing import assert_allclose + + +class TestGenpoisson_p(object): + """ + Test Generalized Poisson Destribution + """ + + def test_pmf_p1(self): + poisson_pmf = poisson.pmf(1, 1) + genpoisson_pmf = sm.distributions.genpoisson_p.pmf(1, 1, 0, 1) + assert_allclose(poisson_pmf, genpoisson_pmf, rtol=1e-15) + + def test_pmf_p2(self): + poisson_pmf = poisson.pmf(2, 2) + genpoisson_pmf = sm.distributions.genpoisson_p.pmf(2, 2, 0, 2) + assert_allclose(poisson_pmf, genpoisson_pmf, rtol=1e-15) + + def test_pmf_p5(self): + poisson_pmf = poisson.pmf(10, 2) + genpoisson_pmf_5 = sm.distributions.genpoisson_p.pmf(10, 2, 1e-25, 5) + assert_allclose(poisson_pmf, genpoisson_pmf_5, rtol=1e-12) + + def test_logpmf_p1(self): + poisson_pmf = poisson.logpmf(5, 2) + genpoisson_pmf = sm.distributions.genpoisson_p.logpmf(5, 2, 0, 1) + assert_allclose(poisson_pmf, genpoisson_pmf, rtol=1e-15) + + def test_logpmf_p2(self): + poisson_pmf = poisson.logpmf(6, 1) + genpoisson_pmf = sm.distributions.genpoisson_p.logpmf(6, 1, 0, 2) + assert_allclose(poisson_pmf, genpoisson_pmf, rtol=1e-15) + +class TestZIPoisson(object): + """ + """ + def test_pmf_zero(self): + poisson_pmf = poisson.pmf(3, 2) + zipoisson_pmf = sm.distributions.zipoisson.pmf(3, 2, 0) + assert_allclose(poisson_pmf, zipoisson_pmf, rtol=1e-12) + + def test_logpmf_zero(self): + poisson_logpmf = poisson.logpmf(5, 1) + zipoisson_logpmf = sm.distributions.zipoisson.logpmf(5, 1, 0) + assert_allclose(poisson_logpmf, zipoisson_logpmf, rtol=1e-12) + + def test_pmf(self): + poisson_pmf = poisson.pmf(2, 2) + zipoisson_pmf = sm.distributions.zipoisson.pmf(2, 2, 0.1) + assert_allclose(poisson_pmf, zipoisson_pmf, rtol=5e-2, atol=5e-2) + + def test_logpmf(self): + poisson_logpmf = poisson.logpmf(7, 3) + zipoisson_logpmf = sm.distributions.zipoisson.logpmf(7, 3, 0.1) + assert_allclose(poisson_logpmf, zipoisson_logpmf, rtol=5e-2, atol=5e-2) + + +class TestZIGeneralizedPoisson(object): + def test_pmf_zero(self): + gp_pmf = sm.distributions.genpoisson_p.pmf(3, 2, 1, 1) + zigp_pmf = sm.distributions.zigenpoisson.pmf(3, 2, 1, 1, 0) + assert_allclose(gp_pmf, zigp_pmf, rtol=1e-12) + + def test_logpmf_zero(self): + gp_logpmf = sm.distributions.genpoisson_p.logpmf(7, 3, 1, 1) + zigp_logpmf = sm.distributions.zigenpoisson.logpmf(7, 3, 1, 1, 0) + assert_allclose(gp_logpmf, zigp_logpmf, rtol=1e-12) + + def test_pmf(self): + gp_pmf = sm.distributions.genpoisson_p.pmf(3, 2, 2, 2) + zigp_pmf = sm.distributions.zigenpoisson.pmf(3, 2, 2, 2, 0.1) + assert_allclose(gp_pmf, zigp_pmf, rtol=5e-2, atol=5e-2) + + def test_logpmf(self): + gp_logpmf = sm.distributions.genpoisson_p.logpmf(2, 3, 0, 2) + zigp_logpmf = sm.distributions.zigenpoisson.logpmf(2, 3, 0, 2, 0.1) + assert_allclose(gp_logpmf, zigp_logpmf, rtol=5e-2, atol=5e-2) + + +class TestZiNBP(object): + """ + Test Truncated Poisson distribution + """ + def test_pmf_p2(self): + n, p = sm.distributions.zinegbin.convert_params(30, 0.1, 2) + nb_pmf = nbinom.pmf(100, n, p) + tnb_pmf = sm.distributions.zinegbin.pmf(100, 30, 0.1, 2, 0.01) + assert_allclose(nb_pmf, tnb_pmf, rtol=1e-5, atol=1e-5) + + def test_logpmf_p2(self): + n, p = sm.distributions.zinegbin.convert_params(10, 1, 2) + nb_logpmf = nbinom.logpmf(200, n, p) + tnb_logpmf = sm.distributions.zinegbin.logpmf(200, 10, 1, 2, 0.01) + assert_allclose(nb_logpmf, tnb_logpmf, rtol=1e-2, atol=1e-2) + + def test_pmf(self): + n, p = sm.distributions.zinegbin.convert_params(1, 0.9, 1) + nb_logpmf = nbinom.pmf(2, n, p) + tnb_pmf = sm.distributions.zinegbin.pmf(2, 1, 0.9, 2, 0.5) + assert_allclose(nb_logpmf, tnb_pmf * 2, rtol=1e-7) + + def test_logpmf(self): + n, p = sm.distributions.zinegbin.convert_params(5, 1, 1) + nb_logpmf = nbinom.logpmf(2, n, p) + tnb_logpmf = sm.distributions.zinegbin.logpmf(2, 5, 1, 1, 0.005) + assert_allclose(nb_logpmf, tnb_logpmf, rtol=1e-2, atol=1e-2) diff --git a/statsmodels/distributions/tests/test_ecdf.py b/statsmodels/distributions/tests/test_ecdf.py new file mode 100644 index 0000000..db316b2 --- /dev/null +++ b/statsmodels/distributions/tests/test_ecdf.py @@ -0,0 +1,44 @@ +import numpy as np +import numpy.testing as npt +from numpy.testing import assert_raises +from statsmodels.distributions import StepFunction, monotone_fn_inverter + +class TestDistributions(object): + + def test_StepFunction(self): + x = np.arange(20) + y = np.arange(20) + f = StepFunction(x, y) + npt.assert_almost_equal(f( np.array([[3.2,4.5],[24,-3.1],[3.0, 4.0]])), + [[ 3, 4], [19, 0], [2, 3]]) + + def test_StepFunctionBadShape(self): + x = np.arange(20) + y = np.arange(21) + assert_raises(ValueError, StepFunction, x, y) + x = np.zeros((2, 2)) + y = np.zeros((2, 2)) + assert_raises(ValueError, StepFunction, x, y) + + def test_StepFunctionValueSideRight(self): + x = np.arange(20) + y = np.arange(20) + f = StepFunction(x, y, side='right') + npt.assert_almost_equal(f( np.array([[3.2,4.5],[24,-3.1],[3.0, 4.0]])), + [[ 3, 4], [19, 0], [3, 4]]) + + def test_StepFunctionRepeatedValues(self): + x = [1, 1, 2, 2, 2, 3, 3, 3, 4, 5] + y = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15] + f = StepFunction(x, y) + npt.assert_almost_equal(f([1, 2, 3, 4, 5]), [0, 7, 10, 13, 14]) + f2 = StepFunction(x, y, side='right') + npt.assert_almost_equal(f2([1, 2, 3, 4, 5]), [7, 10, 13, 14, 15]) + + def test_monotone_fn_inverter(self): + x = [6, 7, 8, 9, 10, 11, 12, 13, 14, 15] + fn = lambda x : 1./x + y = fn(np.array(x)) + f = monotone_fn_inverter(fn, x) + npt.assert_array_equal(f.y, x[::-1]) + npt.assert_array_equal(f.x, y[::-1]) diff --git a/statsmodels/distributions/tests/test_edgeworth.py b/statsmodels/distributions/tests/test_edgeworth.py new file mode 100644 index 0000000..1c55c96 --- /dev/null +++ b/statsmodels/distributions/tests/test_edgeworth.py @@ -0,0 +1,189 @@ +from __future__ import division, print_function, absolute_import + +import warnings + +import numpy as np +from numpy.testing import (assert_equal, assert_raises, + assert_allclose) +import numpy.testing as npt + +from statsmodels.compat.scipy import factorial, factorial2 +from scipy.special import gamma +import scipy.stats as stats + +from statsmodels.distributions.edgeworth import (_faa_di_bruno_partitions, + cumulant_from_moments, ExpandedNormal) + +class TestFaaDiBruno(object): + def test_neg_arg(self): + assert_raises(ValueError, _faa_di_bruno_partitions, -1) + assert_raises(ValueError, _faa_di_bruno_partitions, 0) + + def test_small_vals(self): + for n in range(1, 5): + for ks in _faa_di_bruno_partitions(n): + lhs = sum(m * k for (m, k) in ks) + assert_equal(lhs, n) + + +def _norm_moment(n): + # moments of N(0, 1) + return (1 - n % 2) * factorial2(n - 1) + +def _norm_cumulant(n): + # cumulants of N(0, 1) + try: + return {1: 0, 2: 1}[n] + except KeyError: + return 0 + +def _chi2_moment(n, df): + # (raw) moments of \chi^2(df) + return (2**n) * gamma(n + df/2.) / gamma(df/2.) + +def _chi2_cumulant(n, df): + assert n > 0 + return 2**(n-1) * factorial(n - 1) * df + + +class TestCumulants(object): + def test_badvalues(self): + assert_raises(ValueError, cumulant_from_moments, [1, 2, 3], 0) + assert_raises(ValueError, cumulant_from_moments, [1, 2, 3], 4) + + def test_norm(self): + N = 4 + momt = [_norm_moment(j+1) for j in range(N)] + for n in range(1, N+1): + kappa = cumulant_from_moments(momt, n) + assert_allclose(kappa, _norm_cumulant(n), + atol=1e-12) + + def test_chi2(self): + N = 4 + df = 8 + momt = [_chi2_moment(j+1, df) for j in range(N)] + for n in range(1, N+1): + kappa = cumulant_from_moments(momt, n) + assert_allclose(kappa, _chi2_cumulant(n, df)) + + +class TestExpandedNormal(object): + def test_too_few_cumulants(self): + assert_raises(ValueError, ExpandedNormal, [1]) + + def test_coefficients(self): + with warnings.catch_warnings(): + warnings.simplefilter('ignore', RuntimeWarning) + # 3rd order in n**(1/2) + ne3 = ExpandedNormal([0., 1., 1.]) + assert_allclose(ne3._coef, [1., 0., 0., 1./6]) + + # 4th order in n**(1/2) + ne4 = ExpandedNormal([0., 1., 1., 1.]) + assert_allclose(ne4._coef, [1., 0., 0., 1./6, 1./24, 0., 1./72]) + + # 5th order + ne5 = ExpandedNormal([0., 1., 1., 1., 1.]) + assert_allclose(ne5._coef, [1., 0., 0., 1./6, 1./24, 1./120, + 1./72, 1./144, 0., 1./1296]) + + # adding trailing zeroes increases the order + ne33 = ExpandedNormal([0., 1., 1., 0.]) + assert_allclose(ne33._coef, [1., 0., 0., 1./6, 0., 0., 1./72]) + + def test_normal(self): + # with two cumulants, it's just a gaussian + ne2 = ExpandedNormal([3, 4]) + x = np.linspace(-2., 2., 100) + assert_allclose(ne2.pdf(x), stats.norm.pdf(x, loc=3, scale=2)) + + def test_chi2_moments(self): + # construct the expansion for \chi^2 + N, df = 6, 15 + cum = [_chi2_cumulant(n+1, df) for n in range(N)] + with warnings.catch_warnings(): + warnings.simplefilter("ignore", RuntimeWarning) + ne = ExpandedNormal(cum, name='edgw_chi2') + + # compare the moments + assert_allclose([_chi2_moment(n, df) for n in range(N)], + [ne.moment(n) for n in range(N)]) + + # compare the pdf [fragile!] + # this one is actually not a very good test: there is, strictly + # speaking, no guarantee that the pdfs match point-by-point + # m, s = df, np.sqrt(df) + # x = np.linspace(m - s, m + s, 10) + # assert_allclose(ne.pdf(x), stats.chi2.pdf(x, df), + # atol=1e-4, rtol=1e-5) + + # pdf-cdf roundtrip + check_pdf(ne, arg=(), msg='') + + # cdf-ppf roundtrip + check_cdf_ppf(ne, arg=(), msg='') + + # cdf + sf == 1 + check_cdf_sf(ne, arg=(), msg='') + + # generate rvs & run a KS test + np.random.seed(765456) + rvs = ne.rvs(size=500) + check_distribution_rvs(ne, args=(), alpha=0.01, rvs=rvs) + + def test_pdf_no_roots(self): + with warnings.catch_warnings(): + warnings.simplefilter("error", RuntimeWarning) + ne = ExpandedNormal([0, 1]) + ne = ExpandedNormal([0, 1, 0.1, 0.1]) + + def test_pdf_has_roots(self): + with warnings.catch_warnings(): + warnings.simplefilter("error", RuntimeWarning) + assert_raises(RuntimeWarning, ExpandedNormal, [0, 1, 101]) + + +## stolen verbatim from scipy/stats/tests/test_continuous_extra.py +DECIMAL = 8 + +def check_pdf(distfn, arg, msg): + # compares pdf at median with numerical derivative of cdf + median = distfn.ppf(0.5, *arg) + eps = 1e-6 + pdfv = distfn.pdf(median, *arg) + if (pdfv < 1e-4) or (pdfv > 1e4): + # avoid checking a case where pdf is close to zero + # or huge (singularity) + median = median + 0.1 + pdfv = distfn.pdf(median, *arg) + cdfdiff = (distfn.cdf(median + eps, *arg) - + distfn.cdf(median - eps, *arg))/eps/2.0 + # replace with better diff and better test (more points), + # actually, this works pretty well + npt.assert_almost_equal(pdfv, cdfdiff, + decimal=DECIMAL, err_msg=msg + ' - cdf-pdf relationship') + + +def check_cdf_ppf(distfn, arg, msg): + values = [0.001, 0.5, 0.999] + npt.assert_almost_equal(distfn.cdf(distfn.ppf(values, *arg), *arg), + values, decimal=DECIMAL, err_msg=msg + ' - cdf-ppf roundtrip') + + +def check_cdf_sf(distfn, arg, msg): + values = [0.001, 0.5, 0.999] + npt.assert_almost_equal(distfn.cdf(values, *arg), + 1. - distfn.sf(values, *arg), + decimal=DECIMAL, err_msg=msg +' - sf+cdf == 1') + + +def check_distribution_rvs(distfn, args, alpha, rvs): + ## signature changed to avoid calling a distribution by name + # test from scipy.stats.tests + # this version reuses existing random variables + D,pval = stats.kstest(rvs, distfn.cdf, args=args, N=1000) + if (pval < alpha): + D,pval = stats.kstest(distfn.rvs, distfn.cdf, args=args, N=1000) + npt.assert_(pval > alpha, "D = " + str(D) + "; pval = " + str(pval) + + "; alpha = " + str(alpha) + "\nargs = " + str(args)) diff --git a/statsmodels/distributions/tests/test_mixture.py b/statsmodels/distributions/tests/test_mixture.py new file mode 100644 index 0000000..9610a5f --- /dev/null +++ b/statsmodels/distributions/tests/test_mixture.py @@ -0,0 +1,105 @@ +# Copyright (c) 2013 Ana Martinez Pardo +# License: BSD-3 [see LICENSE.txt] + +import numpy as np +import numpy.testing as npt +from statsmodels.distributions.mixture_rvs import (mv_mixture_rvs, + MixtureDistribution) +import statsmodels.sandbox.distributions.mv_normal as mvd +from scipy import stats + +class TestMixtureDistributions(object): + + def test_mixture_rvs_random(self): + # Test only medium small sample at 1 decimal + np.random.seed(0) + mix = MixtureDistribution() + res = mix.rvs([.75,.25], 1000, dist=[stats.norm, stats.norm], kwargs = + (dict(loc=-1,scale=.5),dict(loc=1,scale=.5))) + npt.assert_almost_equal( + np.array([res.std(),res.mean(),res.var()]), + np.array([1,-0.5,1]), + decimal=1) + + def test_mv_mixture_rvs_random(self): + cov3 = np.array([[ 1. , 0.5 , 0.75], + [ 0.5 , 1.5 , 0.6 ], + [ 0.75, 0.6 , 2. ]]) + mu = np.array([-1, 0.0, 2.0]) + mu2 = np.array([4, 2.0, 2.0]) + mvn3 = mvd.MVNormal(mu, cov3) + mvn32 = mvd.MVNormal(mu2, cov3/2.) + np.random.seed(0) + res = mv_mixture_rvs([0.4, 0.6], 5000, [mvn3, mvn32], 3) + npt.assert_almost_equal( + np.array([res.std(),res.mean(),res.var()]), + np.array([1.874,1.733,3.512]), + decimal=1) + + def test_mixture_pdf(self): + mix = MixtureDistribution() + grid = np.linspace(-4,4, 10) + res = mix.pdf(grid, [1/3.,2/3.], dist=[stats.norm, stats.norm], kwargs= + (dict(loc=-1,scale=.25),dict(loc=1,scale=.75))) + npt.assert_almost_equal( + res, + np.array([ 7.92080017e-11, 1.05977272e-07, 3.82368500e-05, + 2.21485447e-01, 1.00534607e-01, 2.69531536e-01, + 3.21265627e-01, 9.39899015e-02, 6.74932493e-03, + 1.18960201e-04])) + + def test_mixture_cdf(self): + mix = MixtureDistribution() + grid = np.linspace(-4,4, 10) + res = mix.cdf(grid, [1/3.,2/3.], dist=[stats.norm, stats.norm], kwargs= + (dict(loc=-1,scale=.25),dict(loc=1,scale=.75))) + npt.assert_almost_equal( + res, + np.array([ 8.72261646e-12, 1.40592960e-08, 5.95819161e-06, + 3.10250226e-02, 3.46993159e-01, 4.86283549e-01, + 7.81092904e-01, 9.65606734e-01, 9.98373155e-01, + 9.99978886e-01])) + + def test_mixture_rvs_fixed(self): + mix = MixtureDistribution() + np.random.seed(1234) + res = mix.rvs([.15,.85], 50, dist=[stats.norm, stats.norm], kwargs = + (dict(loc=1,scale=.5),dict(loc=-1,scale=.5))) + npt.assert_almost_equal( + res, + np.array([-0.5794956 , -1.72290504, -1.70098664, -1.0504591 , + -1.27412122,-1.07230975, -0.82298983, -1.01775651, + -0.71713085,-0.2271706 ,-1.48711817, -1.03517244, + -0.84601557, -1.10424938, -0.48309963,-2.20022682, + 0.01530181, 1.1238961 , -1.57131564, -0.89405831, + -0.64763969, -1.39271761, 0.55142161, -0.76897013, + -0.64788589,-0.73824602, -1.46312716, 0.00392148, + -0.88651873, -1.57632955,-0.68401028, -0.98024366, + -0.76780384, 0.93160258,-2.78175833,-0.33944719, + -0.92368472, -0.91773523, -1.21504785, -0.61631563, + 1.0091446 , -0.50754008, 1.37770699, -0.86458208, + -0.3040069 ,-0.96007884, 1.10763429, -1.19998229, + -1.51392528, -1.29235911])) + + def test_mv_mixture_rvs_fixed(self): + np.random.seed(1234) + cov3 = np.array([[ 1. , 0.5 , 0.75], + [ 0.5 , 1.5 , 0.6 ], + [ 0.75, 0.6 , 2. ]]) + mu = np.array([-1, 0.0, 2.0]) + mu2 = np.array([4, 2.0, 2.0]) + mvn3 = mvd.MVNormal(mu, cov3) + mvn32 = mvd.MVNormal(mu2, cov3/2) + res = mv_mixture_rvs([0.2, 0.8], 10, [mvn3, mvn32], 3) + npt.assert_almost_equal( + res, + np.array([[-0.23955497, 1.73426482, 0.36100243], + [ 2.52063189, 1.0832677 , 1.89947131], + [ 4.36755379, 2.14480498, 2.22003966], + [ 3.1141545 , 1.21250505, 2.58511199], + [ 4.1980202 , 2.50017561, 1.87324933], + [ 3.48717503, 0.91847424, 2.14004598], + [ 3.55904133, 2.74367622, 0.68619582], + [ 3.60521933, 1.57316531, 0.82784584], + [ 3.86102275, 0.6211812 , 1.33016426], + [ 3.91074761, 2.037155 , 2.22247051]])) diff --git a/statsmodels/duration/__init__.py b/statsmodels/duration/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/duration/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/duration/_kernel_estimates.py b/statsmodels/duration/_kernel_estimates.py new file mode 100644 index 0000000..8b7509a --- /dev/null +++ b/statsmodels/duration/_kernel_estimates.py @@ -0,0 +1,206 @@ +import numpy as np +from statsmodels.duration.hazard_regression import PHReg + + +def _kernel_cumincidence(time, status, exog, kfunc, freq_weights, + dimred=True): + """ + Calculates cumulative incidence functions using kernels. + + Parameters + ---------- + time : array-like + The observed time values + status : array-like + The status values. status == 0 indicates censoring, + status == 1, 2, ... are the events. + exog : array-like + Covariates such that censoring becomes independent of + outcome times conditioned on the covariate values. + kfunc : function + A kernel function + freq_weights : array-like + Optional frequency weights + dimred : boolean + If True, proportional hazards regression models are used to + reduce exog to two columns by predicting overall events and + censoring in two separate models. If False, exog is used + directly for calculating kernel weights without dimension + reduction. + """ + + # Reorder so time is ascending + ii = np.argsort(time) + time = time[ii] + status = status[ii] + exog = exog[ii, :] + nobs = len(time) + + # Convert the unique times to ranks (0, 1, 2, ...) + utime, rtime = np.unique(time, return_inverse=True) + + # Last index where each unique time occurs. + ie = np.searchsorted(time, utime, side='right') - 1 + + ngrp = int(status.max()) + + # All-cause status + statusa = (status >= 1).astype(np.float64) + + if freq_weights is not None: + freq_weights = freq_weights / freq_weights.sum() + + ip = [] + sp = [None] * nobs + n_risk = [None] * nobs + kd = [None] * nobs + for k in range(ngrp): + status0 = (status == k + 1).astype(np.float64) + + # Dimension reduction step + if dimred: + sfe = PHReg(time, exog, status0).fit() + fitval_e = sfe.predict().predicted_values + sfc = PHReg(time, exog, 1 - status0).fit() + fitval_c = sfc.predict().predicted_values + exog2d = np.hstack((fitval_e[:, None], fitval_c[:, None])) + exog2d -= exog2d.mean(0) + exog2d /= exog2d.std(0) + else: + exog2d = exog + + ip0 = 0 + for i in range(nobs): + + if k == 0: + kd1 = exog2d - exog2d[i, :] + kd1 = kfunc(kd1) + kd[i] = kd1 + + # Get the local all-causes survival function + if k == 0: + denom = np.cumsum(kd[i][::-1])[::-1] + num = kd[i] * statusa + rat = num / denom + tr = 1e-15 + ii = np.flatnonzero((denom < tr) & (num < tr)) + rat[ii] = 0 + ratc = 1 - rat + ratc = np.clip(ratc, 1e-10, np.inf) + lrat = np.log(ratc) + prat = np.cumsum(lrat)[ie] + sf = np.exp(prat) + sp[i] = np.r_[1, sf[:-1]] + n_risk[i] = denom[ie] + + # Number of cause-specific deaths at each unique time. + d0 = np.bincount(rtime, weights=status0*kd[i], + minlength=len(utime)) + + # The cumulative incidence function probabilities. Carry + # forward once the effective sample size drops below 1. + ip1 = np.cumsum(sp[i] * d0 / n_risk[i]) + jj = len(ip1) - np.searchsorted(n_risk[i][::-1], 1) + if jj < len(ip1): + ip1[jj:] = ip1[jj - 1] + if freq_weights is None: + ip0 += ip1 + else: + ip0 += freq_weights[i] * ip1 + + if freq_weights is None: + ip0 /= nobs + + ip.append(ip0) + + return utime, ip + + +def _kernel_survfunc(time, status, exog, kfunc, freq_weights): + """ + Estimate the marginal survival function under dependent censoring. + + Parameters + ---------- + time : array-like + The observed times for each subject + status : array-like + The status for each subject (1 indicates event, 0 indicates + censoring) + exog : array-like + Covariates such that censoring is independent conditional on + exog + kfunc : function + Kernel function + freq_weights : array-like + Optional frequency weights + + Returns + ------- + probs : array-like + The estimated survival probabilities + times : array-like + The times at which the survival probabilities are estimated + + References + ---------- + Zeng, Donglin 2004. Estimating Marginal Survival Function by + Adjusting for Dependent Censoring Using Many Covariates. The + Annals of Statistics 32 (4): 1533 55. + doi:10.1214/009053604000000508. + http://arxiv.org/pdf/math/0409180.pdf + """ + + # Dimension reduction step + sfe = PHReg(time, exog, status).fit() + fitval_e = sfe.predict().predicted_values + sfc = PHReg(time, exog, 1 - status).fit() + fitval_c = sfc.predict().predicted_values + exog2d = np.hstack((fitval_e[:, None], fitval_c[:, None])) + + n = len(time) + ixd = np.flatnonzero(status == 1) + + # For consistency with standard KM, only compute the survival + # function at the times of observed events. + utime = np.unique(time[ixd]) + + # Reorder everything so time is ascending + ii = np.argsort(time) + time = time[ii] + status = status[ii] + exog2d = exog2d[ii, :] + + # Last index where each evaluation time occurs. + ie = np.searchsorted(time, utime, side='right') - 1 + + if freq_weights is not None: + freq_weights = freq_weights / freq_weights.sum() + + sprob = 0. + for i in range(n): + + kd = exog2d - exog2d[i, :] + kd = kfunc(kd) + + denom = np.cumsum(kd[::-1])[::-1] + num = kd * status + rat = num / denom + tr = 1e-15 + ii = np.flatnonzero((denom < tr) & (num < tr)) + rat[ii] = 0 + ratc = 1 - rat + ratc = np.clip(ratc, 1e-12, np.inf) + lrat = np.log(ratc) + prat = np.cumsum(lrat)[ie] + prat = np.exp(prat) + + if freq_weights is None: + sprob += prat + else: + sprob += prat * freq_weights[i] + + if freq_weights is None: + sprob /= n + + return sprob, utime diff --git a/statsmodels/duration/api.py b/statsmodels/duration/api.py new file mode 100644 index 0000000..925c598 --- /dev/null +++ b/statsmodels/duration/api.py @@ -0,0 +1,4 @@ +__all__ = ["PHReg", "SurvfuncRight", "survdiff", "CumIncidenceRight"] +from .hazard_regression import PHReg +from .survfunc import (SurvfuncRight, survdiff, + CumIncidenceRight) diff --git a/statsmodels/duration/hazard_regression.py b/statsmodels/duration/hazard_regression.py new file mode 100644 index 0000000..eab6d53 --- /dev/null +++ b/statsmodels/duration/hazard_regression.py @@ -0,0 +1,1723 @@ +""" +Implementation of proportional hazards regression models for duration +data that may be censored ("Cox models"). + +References +---------- +T Therneau (1996). Extending the Cox model. Technical report. +http://www.mayo.edu/research/documents/biostat-58pdf/DOC-10027288 + +G Rodriguez (2005). Non-parametric estimation in survival models. +http://data.princeton.edu/pop509/NonParametricSurvival.pdf + +B Gillespie (2006). Checking the assumptions in the Cox proportional +hazards model. +http://www.mwsug.org/proceedings/2006/stats/MWSUG-2006-SD08.pdf +""" +import numpy as np +from statsmodels.base import model +import statsmodels.base.model as base +from statsmodels.tools.decorators import cache_readonly + + +_predict_docstring = """ + Returns predicted values from the proportional hazards + regression model. + + Parameters + ----------%(params_doc)s + exog : array-like + Data to use as `exog` in forming predictions. If not + provided, the `exog` values from the model used to fit the + data are used.%(cov_params_doc)s + endog : array-like + Duration (time) values at which the predictions are made. + Only used if pred_type is either 'cumhaz' or 'surv'. If + using model `exog`, defaults to model `endog` (time), but + may be provided explicitly to make predictions at + alternative times. + strata : array-like + A vector of stratum values used to form the predictions. + Not used (may be 'None') if pred_type is 'lhr' or 'hr'. + If `exog` is None, the model stratum values are used. If + `exog` is not None and pred_type is 'surv' or 'cumhaz', + stratum values must be provided (unless there is only one + stratum). + offset : array-like + Offset values used to create the predicted values. + pred_type : string + If 'lhr', returns log hazard ratios, if 'hr' returns + hazard ratios, if 'surv' returns the survival function, if + 'cumhaz' returns the cumulative hazard function. + + Returns + ------- + A bunch containing two fields: `predicted_values` and + `standard_errors`. + + Notes + ----- + Standard errors are only returned when predicting the log + hazard ratio (pred_type is 'lhr'). + + Types `surv` and `cumhaz` require estimation of the cumulative + hazard function. +""" + +_predict_params_doc = """ + params : array-like + The proportional hazards model parameters.""" + +_predict_cov_params_docstring = """ + cov_params : array-like + The covariance matrix of the estimated `params` vector, + used to obtain prediction errors if pred_type='lhr', + otherwise optional.""" + + + +class PHSurvivalTime(object): + + def __init__(self, time, status, exog, strata=None, entry=None, + offset=None): + """ + Represent a collection of survival times with possible + stratification and left truncation. + + Parameters + ---------- + time : array_like + The times at which either the event (failure) occurs or + the observation is censored. + status : array_like + Indicates whether the event (failure) occurs at `time` + (`status` is 1), or if `time` is a censoring time (`status` + is 0). + exog : array_like + The exogeneous (covariate) data matrix, cases are rows and + variables are columns. + strata : array_like + Grouping variable defining the strata. If None, all + observations are in a single stratum. + entry : array_like + Entry (left truncation) times. The observation is not + part of the risk set for times before the entry time. If + None, the entry time is treated as being zero, which + gives no left truncation. The entry time must be less + than or equal to `time`. + offset : array-like + An optional array of offsets + """ + + # Default strata + if strata is None: + strata = np.zeros(len(time), dtype=np.int32) + + # Default entry times + if entry is None: + entry = np.zeros(len(time)) + + # Parameter validity checks. + n1, n2, n3, n4 = len(time), len(status), len(strata),\ + len(entry) + nv = [n1, n2, n3, n4] + if max(nv) != min(nv): + raise ValueError("endog, status, strata, and " + + "entry must all have the same length") + if min(time) < 0: + raise ValueError("endog must be non-negative") + if min(entry) < 0: + raise ValueError("entry time must be non-negative") + + # In Stata, this is entry >= time, in R it is >. + if np.any(entry > time): + raise ValueError("entry times may not occur " + + "after event or censoring times") + + # Get the row indices for the cases in each stratum + stu = np.unique(strata) + #sth = {x: [] for x in stu} # needs >=2.7 + sth = dict([(x, []) for x in stu]) + for i,k in enumerate(strata): + sth[k].append(i) + stratum_rows = [np.asarray(sth[k], dtype=np.int32) for k in stu] + stratum_names = stu + + # Remove strata with no events + ix = [i for i,ix in enumerate(stratum_rows) if status[ix].sum() > 0] + self.nstrat_orig = len(stratum_rows) + stratum_rows = [stratum_rows[i] for i in ix] + stratum_names = [stratum_names[i] for i in ix] + + # The number of strata + nstrat = len(stratum_rows) + self.nstrat = nstrat + + # Remove subjects whose entry time occurs after the last event + # in their stratum. + for stx,ix in enumerate(stratum_rows): + last_failure = max(time[ix][status[ix] == 1]) + + # Stata uses < here, R uses <= + ii = [i for i,t in enumerate(entry[ix]) if + t <= last_failure] + stratum_rows[stx] = stratum_rows[stx][ii] + + # Remove subjects who are censored before the first event in + # their stratum. + for stx,ix in enumerate(stratum_rows): + first_failure = min(time[ix][status[ix] == 1]) + + ii = [i for i,t in enumerate(time[ix]) if + t >= first_failure] + stratum_rows[stx] = stratum_rows[stx][ii] + + # Order by time within each stratum + for stx,ix in enumerate(stratum_rows): + ii = np.argsort(time[ix]) + stratum_rows[stx] = stratum_rows[stx][ii] + + if offset is not None: + self.offset_s = [] + for stx in range(nstrat): + self.offset_s.append(offset[stratum_rows[stx]]) + else: + self.offset_s = None + + # Number of informative subjects + self.n_obs = sum([len(ix) for ix in stratum_rows]) + + # Split everything by stratum + self.time_s = [] + self.exog_s = [] + self.status_s = [] + self.entry_s = [] + for ix in stratum_rows: + self.time_s.append(time[ix]) + self.exog_s.append(exog[ix,:]) + self.status_s.append(status[ix]) + self.entry_s.append(entry[ix]) + + self.stratum_rows = stratum_rows + self.stratum_names = stratum_names + + # Precalculate some indices needed to fit Cox models. + # Distinct failure times within a stratum are always taken to + # be sorted in ascending order. + # + # ufailt_ix[stx][k] is a list of indices for subjects who fail + # at the k^th sorted unique failure time in stratum stx + # + # risk_enter[stx][k] is a list of indices for subjects who + # enter the risk set at the k^th sorted unique failure time in + # stratum stx + # + # risk_exit[stx][k] is a list of indices for subjects who exit + # the risk set at the k^th sorted unique failure time in + # stratum stx + self.ufailt_ix, self.risk_enter, self.risk_exit, self.ufailt =\ + [], [], [], [] + + for stx in range(self.nstrat): + + # All failure times + ift = np.flatnonzero(self.status_s[stx] == 1) + ft = self.time_s[stx][ift] + + # Unique failure times + uft = np.unique(ft) + nuft = len(uft) + + # Indices of cases that fail at each unique failure time + #uft_map = {x:i for i,x in enumerate(uft)} # requires >=2.7 + uft_map = dict([(x, i) for i,x in enumerate(uft)]) # 2.6 + uft_ix = [[] for k in range(nuft)] + for ix,ti in zip(ift,ft): + uft_ix[uft_map[ti]].append(ix) + + # Indices of cases (failed or censored) that enter the + # risk set at each unique failure time. + risk_enter1 = [[] for k in range(nuft)] + for i,t in enumerate(self.time_s[stx]): + ix = np.searchsorted(uft, t, "right") - 1 + if ix >= 0: + risk_enter1[ix].append(i) + + # Indices of cases (failed or censored) that exit the + # risk set at each unique failure time. + risk_exit1 = [[] for k in range(nuft)] + for i,t in enumerate(self.entry_s[stx]): + ix = np.searchsorted(uft, t) + risk_exit1[ix].append(i) + + self.ufailt.append(uft) + self.ufailt_ix.append([np.asarray(x, dtype=np.int32) for x in uft_ix]) + self.risk_enter.append([np.asarray(x, dtype=np.int32) for x in risk_enter1]) + self.risk_exit.append([np.asarray(x, dtype=np.int32) for x in risk_exit1]) + + + +class PHReg(model.LikelihoodModel): + """ + Fit the Cox proportional hazards regression model for right + censored data. + + Parameters + ---------- + endog : array-like + The observed times (event or censoring) + exog : 2D array-like + The covariates or exogeneous variables + status : array-like + The censoring status values; status=1 indicates that an + event occured (e.g. failure or death), status=0 indicates + that the observation was right censored. If None, defaults + to status=1 for all cases. + entry : array-like + The entry times, if left truncation occurs + strata : array-like + Stratum labels. If None, all observations are taken to be + in a single stratum. + ties : string + The method used to handle tied times, must be either 'breslow' + or 'efron'. + offset : array-like + Array of offset values + missing : string + The method used to handle missing data + + Notes + ----- + Proportional hazards regression models should not include an + explicit or implicit intercept. The effect of an intercept is + not identified using the partial likelihood approach. + + `endog`, `event`, `strata`, `entry`, and the first dimension + of `exog` all must have the same length + """ + + def __init__(self, endog, exog, status=None, entry=None, + strata=None, offset=None, ties='breslow', + missing='drop', **kwargs): + + # Default is no censoring + if status is None: + status = np.ones(len(endog)) + + super(PHReg, self).__init__(endog, exog, status=status, + entry=entry, strata=strata, + offset=offset, missing=missing, + **kwargs) + + # endog and exog are automatically converted, but these are + # not + if self.status is not None: + self.status = np.asarray(self.status) + if self.entry is not None: + self.entry = np.asarray(self.entry) + if self.strata is not None: + self.strata = np.asarray(self.strata) + if self.offset is not None: + self.offset = np.asarray(self.offset) + + self.surv = PHSurvivalTime(self.endog, self.status, + self.exog, self.strata, + self.entry, self.offset) + self.nobs = len(self.endog) + self.groups = None + + # TODO: not used? + self.missing = missing + + self.df_resid = (np.float(self.exog.shape[0] - + np.linalg.matrix_rank(self.exog))) + self.df_model = np.float(np.linalg.matrix_rank(self.exog)) + + ties = ties.lower() + if ties not in ("efron", "breslow"): + raise ValueError("`ties` must be either `efron` or " + + "`breslow`") + + self.ties = ties + + @classmethod + def from_formula(cls, formula, data, status=None, entry=None, + strata=None, offset=None, subset=None, + ties='breslow', missing='drop', *args, **kwargs): + """ + Create a proportional hazards regression model from a formula + and dataframe. + + Parameters + ---------- + formula : str or generic Formula object + The formula specifying the model + data : array-like + The data for the model. See Notes. + status : array-like + The censoring status values; status=1 indicates that an + event occured (e.g. failure or death), status=0 indicates + that the observation was right censored. If None, defaults + to status=1 for all cases. + entry : array-like + The entry times, if left truncation occurs + strata : array-like + Stratum labels. If None, all observations are taken to be + in a single stratum. + offset : array-like + Array of offset values + subset : array-like + An array-like object of booleans, integers, or index + values that indicate the subset of df to use in the + model. Assumes df is a `pandas.DataFrame` + ties : string + The method used to handle tied times, must be either 'breslow' + or 'efron'. + missing : string + The method used to handle missing data + args : extra arguments + These are passed to the model + kwargs : extra keyword arguments + These are passed to the model with one exception. The + ``eval_env`` keyword is passed to patsy. It can be either a + :class:`patsy:patsy.EvalEnvironment` object or an integer + indicating the depth of the namespace to use. For example, the + default ``eval_env=0`` uses the calling namespace. If you wish + to use a "clean" environment set ``eval_env=-1``. + + Returns + ------- + model : PHReg model instance + """ + + # Allow array arguments to be passed by column name. + if isinstance(status, str): + status = data[status] + if isinstance(entry, str): + entry = data[entry] + if isinstance(strata, str): + strata = data[strata] + if isinstance(offset, str): + offset = data[offset] + + import re + terms = re.split(r"[+\-~]", formula) + for term in terms: + term = term.strip() + if term in ("0", "1"): + import warnings + warnings.warn("PHReg formulas should not include any '0' or '1' terms") + + mod = super(PHReg, cls).from_formula(formula, data, + status=status, entry=entry, strata=strata, + offset=offset, subset=subset, ties=ties, + missing=missing, drop_cols=["Intercept"], *args, + **kwargs) + + return mod + + def fit(self, groups=None, **args): + """ + Fit a proportional hazards regression model. + + Parameters + ---------- + groups : array-like + Labels indicating groups of observations that may be + dependent. If present, the standard errors account for + this dependence. Does not affect fitted values. + + Returns a PHregResults instance. + """ + + # TODO process for missing values + if groups is not None: + if len(groups) != len(self.endog): + msg = ("len(groups) = %d and len(endog) = %d differ" % + (len(groups), len(self.endog))) + raise ValueError(msg) + self.groups = np.asarray(groups) + else: + self.groups = None + + if 'disp' not in args: + args['disp'] = False + fit_rslts = super(PHReg, self).fit(**args) + + if self.groups is None: + cov_params = fit_rslts.cov_params() + else: + cov_params = self.robust_covariance(fit_rslts.params) + + results = PHRegResults(self, fit_rslts.params, cov_params) + + return results + + + def fit_regularized(self, method="elastic_net", alpha=0., + start_params=None, refit=False, **kwargs): + r""" + Return a regularized fit to a linear regression model. + + Parameters + ---------- + method : + Only the `elastic_net` approach is currently implemented. + alpha : scalar or array-like + The penalty weight. If a scalar, the same penalty weight + applies to all variables in the model. If a vector, it + must have the same length as `params`, and contains a + penalty weight for each coefficient. + start_params : array-like + Starting values for `params`. + refit : bool + If True, the model is refit using only the variables that + have non-zero coefficients in the regularized fit. The + refitted model is not regularized. + + + Returns + ------- + A results object. + + Notes + ----- + The penalty is the ``elastic net`` penalty, which is a + combination of L1 and L2 penalties. + + The function that is minimized is: + + .. math:: + + -loglike/n + alpha*((1-L1\_wt)*|params|_2^2/2 + L1\_wt*|params|_1) + + where :math:`|*|_1` and :math:`|*|_2` are the L1 and L2 norms. + + Post-estimation results are based on the same data used to + select variables, hence may be subject to overfitting biases. + + The elastic_net method uses the following keyword arguments: + + maxiter : int + Maximum number of iterations + L1_wt : float + Must be in [0, 1]. The L1 penalty has weight L1_wt and the + L2 penalty has weight 1 - L1_wt. + cnvrg_tol : float + Convergence threshold for line searches + zero_tol : float + Coefficients below this threshold are treated as zero. + """ + + from statsmodels.base.elastic_net import fit_elasticnet + + if method != "elastic_net": + raise ValueError("method for fit_regularied must be elastic_net") + + defaults = {"maxiter" : 50, "L1_wt" : 1, "cnvrg_tol" : 1e-10, + "zero_tol" : 1e-10} + defaults.update(kwargs) + + return fit_elasticnet(self, method=method, + alpha=alpha, + start_params=start_params, + refit=refit, + **defaults) + + + def loglike(self, params): + """ + Returns the log partial likelihood function evaluated at + `params`. + """ + + if self.ties == "breslow": + return self.breslow_loglike(params) + elif self.ties == "efron": + return self.efron_loglike(params) + + def score(self, params): + """ + Returns the score function evaluated at `params`. + """ + + if self.ties == "breslow": + return self.breslow_gradient(params) + elif self.ties == "efron": + return self.efron_gradient(params) + + def hessian(self, params): + """ + Returns the Hessian matrix of the log partial likelihood + function evaluated at `params`. + """ + + if self.ties == "breslow": + return self.breslow_hessian(params) + else: + return self.efron_hessian(params) + + def breslow_loglike(self, params): + """ + Returns the value of the log partial likelihood function + evaluated at `params`, using the Breslow method to handle tied + times. + """ + + surv = self.surv + + like = 0. + + # Loop over strata + for stx in range(surv.nstrat): + + uft_ix = surv.ufailt_ix[stx] + exog_s = surv.exog_s[stx] + nuft = len(uft_ix) + + linpred = np.dot(exog_s, params) + if surv.offset_s is not None: + linpred += surv.offset_s[stx] + linpred -= linpred.max() + e_linpred = np.exp(linpred) + + xp0 = 0. + + # Iterate backward through the unique failure times. + for i in range(nuft)[::-1]: + + # Update for new cases entering the risk set. + ix = surv.risk_enter[stx][i] + xp0 += e_linpred[ix].sum() + + # Account for all cases that fail at this point. + ix = uft_ix[i] + like += (linpred[ix] - np.log(xp0)).sum() + + # Update for cases leaving the risk set. + ix = surv.risk_exit[stx][i] + xp0 -= e_linpred[ix].sum() + + return like + + def efron_loglike(self, params): + """ + Returns the value of the log partial likelihood function + evaluated at `params`, using the Efron method to handle tied + times. + """ + + surv = self.surv + + like = 0. + + # Loop over strata + for stx in range(surv.nstrat): + + # exog and linear predictor for this stratum + exog_s = surv.exog_s[stx] + linpred = np.dot(exog_s, params) + if surv.offset_s is not None: + linpred += surv.offset_s[stx] + linpred -= linpred.max() + e_linpred = np.exp(linpred) + + xp0 = 0. + + # Iterate backward through the unique failure times. + uft_ix = surv.ufailt_ix[stx] + nuft = len(uft_ix) + for i in range(nuft)[::-1]: + + # Update for new cases entering the risk set. + ix = surv.risk_enter[stx][i] + xp0 += e_linpred[ix].sum() + xp0f = e_linpred[uft_ix[i]].sum() + + # Account for all cases that fail at this point. + ix = uft_ix[i] + like += linpred[ix].sum() + + m = len(ix) + J = np.arange(m, dtype=np.float64) / m + like -= np.log(xp0 - J*xp0f).sum() + + # Update for cases leaving the risk set. + ix = surv.risk_exit[stx][i] + xp0 -= e_linpred[ix].sum() + + return like + + def breslow_gradient(self, params): + """ + Returns the gradient of the log partial likelihood, using the + Breslow method to handle tied times. + """ + + surv = self.surv + + grad = 0. + + # Loop over strata + for stx in range(surv.nstrat): + + # Indices of subjects in the stratum + strat_ix = surv.stratum_rows[stx] + + # Unique failure times in the stratum + uft_ix = surv.ufailt_ix[stx] + nuft = len(uft_ix) + + # exog and linear predictor for the stratum + exog_s = surv.exog_s[stx] + linpred = np.dot(exog_s, params) + if surv.offset_s is not None: + linpred += surv.offset_s[stx] + linpred -= linpred.max() + e_linpred = np.exp(linpred) + + xp0, xp1 = 0., 0. + + # Iterate backward through the unique failure times. + for i in range(nuft)[::-1]: + + # Update for new cases entering the risk set. + ix = surv.risk_enter[stx][i] + if len(ix) > 0: + v = exog_s[ix,:] + xp0 += e_linpred[ix].sum() + xp1 += (e_linpred[ix][:,None] * v).sum(0) + + # Account for all cases that fail at this point. + ix = uft_ix[i] + grad += (exog_s[ix,:] - xp1 / xp0).sum(0) + + # Update for cases leaving the risk set. + ix = surv.risk_exit[stx][i] + if len(ix) > 0: + v = exog_s[ix,:] + xp0 -= e_linpred[ix].sum() + xp1 -= (e_linpred[ix][:,None] * v).sum(0) + + return grad + + def efron_gradient(self, params): + """ + Returns the gradient of the log partial likelihood evaluated + at `params`, using the Efron method to handle tied times. + """ + + surv = self.surv + + grad = 0. + + # Loop over strata + for stx in range(surv.nstrat): + + # Indices of cases in the stratum + strat_ix = surv.stratum_rows[stx] + + # exog and linear predictor of the stratum + exog_s = surv.exog_s[stx] + linpred = np.dot(exog_s, params) + if surv.offset_s is not None: + linpred += surv.offset_s[stx] + linpred -= linpred.max() + e_linpred = np.exp(linpred) + + xp0, xp1 = 0., 0. + + # Iterate backward through the unique failure times. + uft_ix = surv.ufailt_ix[stx] + nuft = len(uft_ix) + for i in range(nuft)[::-1]: + + # Update for new cases entering the risk set. + ix = surv.risk_enter[stx][i] + if len(ix) > 0: + v = exog_s[ix,:] + xp0 += e_linpred[ix].sum() + xp1 += (e_linpred[ix][:,None] * v).sum(0) + ixf = uft_ix[i] + if len(ixf) > 0: + v = exog_s[ixf,:] + xp0f = e_linpred[ixf].sum() + xp1f = (e_linpred[ixf][:,None] * v).sum(0) + + # Consider all cases that fail at this point. + grad += v.sum(0) + + m = len(ixf) + J = np.arange(m, dtype=np.float64) / m + numer = xp1 - np.outer(J, xp1f) + denom = xp0 - np.outer(J, xp0f) + ratio = numer / denom + rsum = ratio.sum(0) + grad -= rsum + + # Update for cases leaving the risk set. + ix = surv.risk_exit[stx][i] + if len(ix) > 0: + v = exog_s[ix,:] + xp0 -= e_linpred[ix].sum() + xp1 -= (e_linpred[ix][:,None] * v).sum(0) + + return grad + + def breslow_hessian(self, params): + """ + Returns the Hessian of the log partial likelihood evaluated at + `params`, using the Breslow method to handle tied times. + """ + + surv = self.surv + + hess = 0. + + # Loop over strata + for stx in range(surv.nstrat): + + uft_ix = surv.ufailt_ix[stx] + nuft = len(uft_ix) + + exog_s = surv.exog_s[stx] + + linpred = np.dot(exog_s, params) + if surv.offset_s is not None: + linpred += surv.offset_s[stx] + linpred -= linpred.max() + e_linpred = np.exp(linpred) + + xp0, xp1, xp2 = 0., 0., 0. + + # Iterate backward through the unique failure times. + for i in range(nuft)[::-1]: + + # Update for new cases entering the risk set. + ix = surv.risk_enter[stx][i] + if len(ix) > 0: + xp0 += e_linpred[ix].sum() + v = exog_s[ix,:] + xp1 += (e_linpred[ix][:,None] * v).sum(0) + elx = e_linpred[ix] + xp2 += np.einsum("ij,ik,i->jk", v, v, elx) + + # Account for all cases that fail at this point. + m = len(uft_ix[i]) + hess += m*(xp2 / xp0 - np.outer(xp1, xp1) / xp0**2) + + # Update for new cases entering the risk set. + ix = surv.risk_exit[stx][i] + if len(ix) > 0: + xp0 -= e_linpred[ix].sum() + v = exog_s[ix,:] + xp1 -= (e_linpred[ix][:,None] * v).sum(0) + elx = e_linpred[ix] + xp2 -= np.einsum("ij,ik,i->jk", v, v, elx) + return -hess + + def efron_hessian(self, params): + """ + Returns the Hessian matrix of the partial log-likelihood + evaluated at `params`, using the Efron method to handle tied + times. + """ + + surv = self.surv + + hess = 0. + + # Loop over strata + for stx in range(surv.nstrat): + + exog_s = surv.exog_s[stx] + + linpred = np.dot(exog_s, params) + if surv.offset_s is not None: + linpred += surv.offset_s[stx] + linpred -= linpred.max() + e_linpred = np.exp(linpred) + + xp0, xp1, xp2 = 0., 0., 0. + + # Iterate backward through the unique failure times. + uft_ix = surv.ufailt_ix[stx] + nuft = len(uft_ix) + for i in range(nuft)[::-1]: + + # Update for new cases entering the risk set. + ix = surv.risk_enter[stx][i] + if len(ix) > 0: + xp0 += e_linpred[ix].sum() + v = exog_s[ix,:] + xp1 += (e_linpred[ix][:,None] * v).sum(0) + elx = e_linpred[ix] + xp2 += np.einsum("ij,ik,i->jk", v, v, elx) + + ixf = uft_ix[i] + if len(ixf) > 0: + v = exog_s[ixf,:] + xp0f = e_linpred[ixf].sum() + xp1f = (e_linpred[ixf][:,None] * v).sum(0) + elx = e_linpred[ixf] + xp2f = np.einsum("ij,ik,i->jk", v, v, elx) + + # Account for all cases that fail at this point. + m = len(uft_ix[i]) + J = np.arange(m, dtype=np.float64) / m + c0 = xp0 - J*xp0f + hess += xp2 * np.sum(1 / c0) + hess -= xp2f * np.sum(J / c0) + mat = (xp1[None, :] - np.outer(J, xp1f)) / c0[:, None] + hess -= np.einsum("ij,ik->jk", mat, mat) + + # Update for new cases entering the risk set. + ix = surv.risk_exit[stx][i] + if len(ix) > 0: + xp0 -= e_linpred[ix].sum() + v = exog_s[ix,:] + xp1 -= (e_linpred[ix][:,None] * v).sum(0) + elx = e_linpred[ix] + xp2 -= np.einsum("ij,ik,i->jk", v, v, elx) + + return -hess + + def robust_covariance(self, params): + """ + Returns a covariance matrix for the proportional hazards model + regresion coefficient estimates that is robust to certain + forms of model misspecification. + + Parameters + ---------- + params : ndarray + The parameter vector at which the covariance matrix is + calculated. + + Returns + ------- + The robust covariance matrix as a square ndarray. + + Notes + ----- + This function uses the `groups` argument to determine groups + within which observations may be dependent. The covariance + matrix is calculated using the Huber-White "sandwich" approach. + """ + + if self.groups is None: + raise ValueError("`groups` must be specified to calculate the robust covariance matrix") + + hess = self.hessian(params) + + score_obs = self.score_residuals(params) + + # Collapse + grads = {} + for i,g in enumerate(self.groups): + if g not in grads: + grads[g] = 0. + grads[g] += score_obs[i, :] + grads = np.asarray(list(grads.values())) + + mat = grads[None, :, :] + mat = mat.T * mat + mat = mat.sum(1) + + hess_inv = np.linalg.inv(hess) + cmat = np.dot(hess_inv, np.dot(mat, hess_inv)) + + return cmat + + def score_residuals(self, params): + """ + Returns the score residuals calculated at a given vector of + parameters. + + Parameters + ---------- + params : ndarray + The parameter vector at which the score residuals are + calculated. + + Returns + ------- + The score residuals, returned as a ndarray having the same + shape as `exog`. + + Notes + ----- + Observations in a stratum with no observed events have undefined + score residuals, and contain NaN in the returned matrix. + """ + + surv = self.surv + + score_resid = np.zeros(self.exog.shape, dtype=np.float64) + + # Use to set undefined values to NaN. + mask = np.zeros(self.exog.shape[0], dtype=np.int32) + + w_avg = self.weighted_covariate_averages(params) + + # Loop over strata + for stx in range(surv.nstrat): + + uft_ix = surv.ufailt_ix[stx] + exog_s = surv.exog_s[stx] + nuft = len(uft_ix) + strat_ix = surv.stratum_rows[stx] + + xp0 = 0. + + linpred = np.dot(exog_s, params) + if surv.offset_s is not None: + linpred += surv.offset_s[stx] + linpred -= linpred.max() + e_linpred = np.exp(linpred) + + at_risk_ix = set([]) + + # Iterate backward through the unique failure times. + for i in range(nuft)[::-1]: + + # Update for new cases entering the risk set. + ix = surv.risk_enter[stx][i] + at_risk_ix |= set(ix) + xp0 += e_linpred[ix].sum() + + atr_ix = list(at_risk_ix) + leverage = exog_s[atr_ix, :] - w_avg[stx][i, :] + + # Event indicators + d = np.zeros(exog_s.shape[0]) + d[uft_ix[i]] = 1 + + # The increment in the cumulative hazard + dchaz = len(uft_ix[i]) / xp0 + + # Piece of the martingale residual + mrp = d[atr_ix] - e_linpred[atr_ix] * dchaz + + # Update the score residuals + ii = strat_ix[atr_ix] + score_resid[ii,:] += leverage * mrp[:, None] + mask[ii] = 1 + + # Update for cases leaving the risk set. + ix = surv.risk_exit[stx][i] + at_risk_ix -= set(ix) + xp0 -= e_linpred[ix].sum() + + jj = np.flatnonzero(mask == 0) + if len(jj) > 0: + score_resid[jj, :] = np.nan + + return score_resid + + def weighted_covariate_averages(self, params): + """ + Returns the hazard-weighted average of covariate values for + subjects who are at-risk at a particular time. + + Parameters + ---------- + params : ndarray + Parameter vector + + Returns + ------- + averages : list of ndarrays + averages[stx][i,:] is a row vector containing the weighted + average values (for all the covariates) of at-risk + subjects a the i^th largest observed failure time in + stratum `stx`, using the hazard multipliers as weights. + + Notes + ----- + Used to calculate leverages and score residuals. + """ + + surv = self.surv + + averages = [] + xp0, xp1 = 0., 0. + + # Loop over strata + for stx in range(surv.nstrat): + + uft_ix = surv.ufailt_ix[stx] + exog_s = surv.exog_s[stx] + nuft = len(uft_ix) + + average_s = np.zeros((len(uft_ix), exog_s.shape[1]), + dtype=np.float64) + + linpred = np.dot(exog_s, params) + if surv.offset_s is not None: + linpred += surv.offset_s[stx] + linpred -= linpred.max() + e_linpred = np.exp(linpred) + + # Iterate backward through the unique failure times. + for i in range(nuft)[::-1]: + + # Update for new cases entering the risk set. + ix = surv.risk_enter[stx][i] + xp0 += e_linpred[ix].sum() + xp1 += np.dot(e_linpred[ix], exog_s[ix, :]) + + average_s[i, :] = xp1 / xp0 + + # Update for cases leaving the risk set. + ix = surv.risk_exit[stx][i] + xp0 -= e_linpred[ix].sum() + xp1 -= np.dot(e_linpred[ix], exog_s[ix, :]) + + averages.append(average_s) + + return averages + + def baseline_cumulative_hazard(self, params): + """ + Estimate the baseline cumulative hazard and survival + functions. + + Parameters + ---------- + params : ndarray + The model parameters. + + Returns + ------- + A list of triples (time, hazard, survival) containing the time + values and corresponding cumulative hazard and survival + function values for each stratum. + + Notes + ----- + Uses the Nelson-Aalen estimator. + """ + + # TODO: some disagreements with R, not the same algorithm but + # hard to deduce what R is doing. Our results are reasonable. + + surv = self.surv + rslt = [] + + # Loop over strata + for stx in range(surv.nstrat): + + uft = surv.ufailt[stx] + uft_ix = surv.ufailt_ix[stx] + exog_s = surv.exog_s[stx] + nuft = len(uft_ix) + + linpred = np.dot(exog_s, params) + if surv.offset_s is not None: + linpred += surv.offset_s[stx] + e_linpred = np.exp(linpred) + + xp0 = 0. + h0 = np.zeros(nuft, dtype=np.float64) + + # Iterate backward through the unique failure times. + for i in range(nuft)[::-1]: + + # Update for new cases entering the risk set. + ix = surv.risk_enter[stx][i] + xp0 += e_linpred[ix].sum() + + # Account for all cases that fail at this point. + ix = uft_ix[i] + h0[i] = len(ix) / xp0 + + # Update for cases leaving the risk set. + ix = surv.risk_exit[stx][i] + xp0 -= e_linpred[ix].sum() + + cumhaz = np.cumsum(h0) - h0 + current_strata_surv = np.exp(-cumhaz) + rslt.append([uft, cumhaz, current_strata_surv]) + + return rslt + + def baseline_cumulative_hazard_function(self, params): + """ + Returns a function that calculates the baseline cumulative + hazard function for each stratum. + + Parameters + ---------- + params : ndarray + The model parameters. + + Returns + ------- + A dict mapping stratum names to the estimated baseline + cumulative hazard function. + """ + + from scipy.interpolate import interp1d + surv = self.surv + base = self.baseline_cumulative_hazard(params) + + cumhaz_f = {} + for stx in range(surv.nstrat): + time_h = base[stx][0] + cumhaz = base[stx][1] + time_h = np.r_[-np.inf, time_h, np.inf] + cumhaz = np.r_[cumhaz[0], cumhaz, cumhaz[-1]] + func = interp1d(time_h, cumhaz, kind='zero') + cumhaz_f[self.surv.stratum_names[stx]] = func + + return cumhaz_f + + def predict(self, params, exog=None, cov_params=None, endog=None, + strata=None, offset=None, pred_type="lhr"): + # docstring attached below + + pred_type = pred_type.lower() + if pred_type not in ["lhr", "hr", "surv", "cumhaz"]: + msg = "Type %s not allowed for prediction" % pred_type + raise ValueError(msg) + + class bunch: + predicted_values = None + standard_errors = None + ret_val = bunch() + + # Don't do anything with offset here because we want to allow + # different offsets to be specified even if exog is the model + # exog. + exog_provided = True + if exog is None: + exog = self.exog + exog_provided = False + + lhr = np.dot(exog, params) + if offset is not None: + lhr += offset + # Never use self.offset unless we are also using self.exog + elif self.offset is not None and not exog_provided: + lhr += self.offset + + # Handle lhr and hr prediction first, since they don't make + # use of the hazard function. + + if pred_type == "lhr": + ret_val.predicted_values = lhr + if cov_params is not None: + mat = np.dot(exog, cov_params) + va = (mat * exog).sum(1) + ret_val.standard_errors = np.sqrt(va) + return ret_val + + hr = np.exp(lhr) + + if pred_type == "hr": + ret_val.predicted_values = hr + return ret_val + + # Makes sure endog is defined + if endog is None and exog_provided: + msg = "If `exog` is provided `endog` must be provided." + raise ValueError(msg) + # Use model endog if using model exog + elif endog is None and not exog_provided: + endog = self.endog + + # Make sure strata is defined + if strata is None: + if exog_provided and self.surv.nstrat > 1: + raise ValueError("`strata` must be provided") + if self.strata is None: + strata = [self.surv.stratum_names[0],] * len(endog) + else: + strata = self.strata + + cumhaz = np.nan * np.ones(len(endog), dtype=np.float64) + stv = np.unique(strata) + bhaz = self.baseline_cumulative_hazard_function(params) + for stx in stv: + ix = np.flatnonzero(strata == stx) + func = bhaz[stx] + cumhaz[ix] = func(endog[ix]) * hr[ix] + + if pred_type == "cumhaz": + ret_val.predicted_values = cumhaz + + elif pred_type == "surv": + ret_val.predicted_values = np.exp(-cumhaz) + + return ret_val + + predict.__doc__ = _predict_docstring % {'params_doc': _predict_params_doc, + 'cov_params_doc': _predict_cov_params_docstring} + + def get_distribution(self, params): + """ + Returns a scipy distribution object corresponding to the + distribution of uncensored endog (duration) values for each + case. + + Parameters + ---------- + params : array-like + The proportional hazards model parameters. + + Returns + ------- + A list of objects of type scipy.stats.distributions.rv_discrete + + Notes + ----- + The distributions are obtained from a simple discrete estimate + of the survivor function that puts all mass on the observed + failure times within a stratum. + """ + + # TODO: this returns a Python list of rv_discrete objects, so + # nothing can be vectorized. It appears that rv_discrete does + # not allow vectorization. + + surv = self.surv + bhaz = self.baseline_cumulative_hazard(params) + + # The arguments to rv_discrete_float, first obtained by + # stratum + pk, xk = [], [] + + for stx in range(self.surv.nstrat): + + exog_s = surv.exog_s[stx] + + linpred = np.dot(exog_s, params) + if surv.offset_s is not None: + linpred += surv.offset_s[stx] + e_linpred = np.exp(linpred) + + # The unique failure times for this stratum (the support + # of the distribution). + pts = bhaz[stx][0] + + # The individual cumulative hazards for everyone in this + # stratum. + ichaz = np.outer(e_linpred, bhaz[stx][1]) + + # The individual survival functions. + usurv = np.exp(-ichaz) + z = np.zeros((usurv.shape[0], 1)) + usurv = np.concatenate((usurv, z), axis=1) + + # The individual survival probability masses. + probs = -np.diff(usurv, 1) + + pk.append(probs) + xk.append(np.outer(np.ones(probs.shape[0]), pts)) + + # Pad to make all strata have the same shape + mxc = max([x.shape[1] for x in xk]) + for k in range(self.surv.nstrat): + if xk[k].shape[1] < mxc: + xk1 = np.zeros((xk[k].shape[0], mxc)) + pk1 = np.zeros((pk[k].shape[0], mxc)) + xk1[:, 0:xk[k].shape[1]] = xk[k] + pk1[:, 0:pk[k].shape[1]] = pk[k] + xk[k], pk[k] = xk1, pk1 + + # Put the support points and probabilities into single matrices + xka = np.nan * np.ones((len(self.endog), mxc)) + pka = np.ones((len(self.endog), mxc), dtype=np.float64) / mxc + for stx in range(self.surv.nstrat): + ix = self.surv.stratum_rows[stx] + xka[ix, :] = xk[stx] + pka[ix, :] = pk[stx] + + dist = rv_discrete_float(xka, pka) + + return dist + + +class PHRegResults(base.LikelihoodModelResults): + ''' + Class to contain results of fitting a Cox proportional hazards + survival model. + + PHregResults inherits from statsmodels.LikelihoodModelResults + + Parameters + ---------- + See statsmodels.LikelihoodModelResults + + Attributes + ---------- + model : class instance + PHreg model instance that called fit. + normalized_cov_params : array + The sampling covariance matrix of the estimates + params : array + The coefficients of the fitted model. Each coefficient is the + log hazard ratio corresponding to a 1 unit difference in a + single covariate while holding the other covariates fixed. + bse : array + The standard errors of the fitted parameters. + + See Also + -------- + statsmodels.LikelihoodModelResults + ''' + + def __init__(self, model, params, cov_params, scale=1., covariance_type="naive"): + + # There is no scale parameter, but we need it for + # meta-procedures that work with results. + + self.covariance_type = covariance_type + self.df_resid = model.df_resid + self.df_model = model.df_model + + super(PHRegResults, self).__init__(model, params, scale=1., + normalized_cov_params=cov_params) + + @cache_readonly + def standard_errors(self): + """ + Returns the standard errors of the parameter estimates. + """ + return np.sqrt(np.diag(self.cov_params())) + + @cache_readonly + def bse(self): + """ + Returns the standard errors of the parameter estimates. + """ + return self.standard_errors + + def get_distribution(self): + """ + Returns a scipy distribution object corresponding to the + distribution of uncensored endog (duration) values for each + case. + + Returns + ------- + A list of objects of type scipy.stats.distributions.rv_discrete + + Notes + ----- + The distributions are obtained from a simple discrete estimate + of the survivor function that puts all mass on the observed + failure times wihtin a stratum. + """ + + return self.model.get_distribution(self.params) + + + def predict(self, endog=None, exog=None, strata=None, + offset=None, transform=True, pred_type="lhr"): + # docstring attached below + + return super(PHRegResults, self).predict(exog=exog, + transform=transform, + cov_params=self.cov_params(), + endog=endog, + strata=strata, + offset=offset, + pred_type=pred_type) + + predict.__doc__ = _predict_docstring % {'params_doc': '', + 'cov_params_doc': ''} + + def _group_stats(self, groups): + """ + Descriptive statistics of the groups. + """ + gsizes = np.unique(groups, return_counts=True) + gsizes = gsizes[1] + return gsizes.min(), gsizes.max(), gsizes.mean(), len(gsizes) + + @cache_readonly + def weighted_covariate_averages(self): + """ + The average covariate values within the at-risk set at each + event time point, weighted by hazard. + """ + return self.model.weighted_covariate_averages(self.params) + + @cache_readonly + def score_residuals(self): + """ + A matrix containing the score residuals. + """ + return self.model.score_residuals(self.params) + + @cache_readonly + def baseline_cumulative_hazard(self): + """ + A list (corresponding to the strata) containing the baseline + cumulative hazard function evaluated at the event points. + """ + return self.model.baseline_cumulative_hazard(self.params) + + @cache_readonly + def baseline_cumulative_hazard_function(self): + """ + A list (corresponding to the strata) containing function + objects that calculate the cumulative hazard function. + """ + return self.model.baseline_cumulative_hazard_function(self.params) + + @cache_readonly + def schoenfeld_residuals(self): + """ + A matrix containing the Schoenfeld residuals. + + Notes + ----- + Schoenfeld residuals for censored observations are set to zero. + """ + + surv = self.model.surv + w_avg = self.weighted_covariate_averages + + # Initialize at NaN since rows that belong to strata with no + # events have undefined residuals. + sch_resid = np.nan*np.ones(self.model.exog.shape, dtype=np.float64) + + # Loop over strata + for stx in range(surv.nstrat): + + uft = surv.ufailt[stx] + exog_s = surv.exog_s[stx] + time_s = surv.time_s[stx] + strat_ix = surv.stratum_rows[stx] + + ii = np.searchsorted(uft, time_s) + + # These subjects are censored after the last event in + # their stratum, so have empty risk sets and undefined + # residuals. + jj = np.flatnonzero(ii < len(uft)) + + sch_resid[strat_ix[jj], :] = exog_s[jj, :] - w_avg[stx][ii[jj], :] + + jj = np.flatnonzero(self.model.status == 0) + sch_resid[jj, :] = np.nan + + return sch_resid + + @cache_readonly + def martingale_residuals(self): + """ + The martingale residuals. + """ + + surv = self.model.surv + + # Initialize at NaN since rows that belong to strata with no + # events have undefined residuals. + mart_resid = np.nan*np.ones(len(self.model.endog), dtype=np.float64) + + cumhaz_f_list = self.baseline_cumulative_hazard_function + + # Loop over strata + for stx in range(surv.nstrat): + + cumhaz_f = cumhaz_f_list[stx] + + exog_s = surv.exog_s[stx] + time_s = surv.time_s[stx] + + linpred = np.dot(exog_s, self.params) + if surv.offset_s is not None: + linpred += surv.offset_s[stx] + e_linpred = np.exp(linpred) + + ii = surv.stratum_rows[stx] + chaz = cumhaz_f(time_s) + mart_resid[ii] = self.model.status[ii] - e_linpred * chaz + + return mart_resid + + def summary(self, yname=None, xname=None, title=None, alpha=.05): + """ + Summarize the proportional hazards regression results. + + Parameters + ---------- + yname : string, optional + Default is `y` + xname : list of strings, optional + Default is `x#` for ## in p the number of regressors + title : string, optional + Title for the top table. If not None, then this replaces + the default title + alpha : float + significance level for the confidence intervals + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be + printed or converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary2.Summary : class to hold summary results + """ + + from statsmodels.iolib import summary2 + from collections import OrderedDict + smry = summary2.Summary() + float_format = "%8.3f" + + info = OrderedDict() + info["Model:"] = "PH Reg" + if yname is None: + yname = self.model.endog_names + info["Dependent variable:"] = yname + info["Ties:"] = self.model.ties.capitalize() + info["Sample size:"] = str(self.model.surv.n_obs) + info["Num. events:"] = str(int(sum(self.model.status))) + + if self.model.groups is not None: + mn, mx, avg, num = self._group_stats(self.model.groups) + info["Num groups:"] = "%.0f" % num + info["Min group size:"] = "%.0f" % mn + info["Max group size:"] = "%.0f" % mx + info["Avg group size:"] = "%.1f" % avg + + if self.model.strata is not None: + mn, mx, avg, num = self._group_stats(self.model.strata) + info["Num strata:"] = "%.0f" % num + info["Min stratum size:"] = "%.0f" % mn + info["Max stratum size:"] = "%.0f" % mx + info["Avg stratum size:"] = "%.1f" % avg + + smry.add_dict(info, align='l', float_format=float_format) + + param = summary2.summary_params(self, alpha=alpha) + param = param.rename(columns={"Coef.": "log HR", + "Std.Err.": "log HR SE"}) + param.insert(2, "HR", np.exp(param["log HR"])) + a = "[%.3f" % (alpha / 2) + param.loc[:, a] = np.exp(param.loc[:, a]) + a = "%.3f]" % (1 - alpha / 2) + param.loc[:, a] = np.exp(param.loc[:, a]) + if xname is not None: + param.index = xname + smry.add_df(param, float_format=float_format) + smry.add_title(title=title, results=self) + smry.add_text("Confidence intervals are for the hazard ratios") + + dstrat = self.model.surv.nstrat_orig - self.model.surv.nstrat + if dstrat > 0: + if dstrat == 1: + smry.add_text("1 stratum dropped for having no events") + else: + smry.add_text("%d strata dropped for having no events" % dstrat) + + if self.model.entry is not None: + n_entry = sum(self.model.entry != 0) + if n_entry == 1: + smry.add_text("1 observation has a positive entry time") + else: + smry.add_text("%d observations have positive entry times" % n_entry) + + if self.model.groups is not None: + smry.add_text("Standard errors account for dependence within groups") + + if hasattr(self, "regularized"): + smry.add_text("Standard errors do not account for the regularization") + + return smry + + +class rv_discrete_float(object): + """ + A class representing a collection of discrete distributions. + + Parameters + ---------- + xk : 2d array-like + The support points, should be non-decreasing within each + row. + pk : 2d array-like + The probabilities, should sum to one within each row. + + Notes + ----- + Each row of `xk`, and the corresponding row of `pk` describe a + discrete distribution. + + `xk` and `pk` should both be two-dimensional ndarrays. Each row + of `pk` should sum to 1. + + This class is used as a substitute for scipy.distributions. + rv_discrete, since that class does not allow non-integer support + points, or vectorized operations. + + Only a limited number of methods are implemented here compared to + the other scipy distribution classes. + """ + + def __init__(self, xk, pk): + + self.xk = xk + self.pk = pk + self.cpk = np.cumsum(self.pk, axis=1) + + def rvs(self): + """ + Returns a random sample from the discrete distribution. + + A vector is returned containing a single draw from each row of + `xk`, using the probabilities of the corresponding row of `pk` + """ + + n = self.xk.shape[0] + u = np.random.uniform(size=n) + + ix = (self.cpk < u[:, None]).sum(1) + ii = np.arange(n, dtype=np.int32) + return self.xk[(ii,ix)] + + def mean(self): + """ + Returns a vector containing the mean values of the discrete + distributions. + + A vector is returned containing the mean value of each row of + `xk`, using the probabilities in the corresponding row of + `pk`. + """ + + return (self.xk * self.pk).sum(1) + + def var(self): + """ + Returns a vector containing the variances of the discrete + distributions. + + A vector is returned containing the variance for each row of + `xk`, using the probabilities in the corresponding row of + `pk`. + """ + + mn = self.mean() + xkc = self.xk - mn[:, None] + + return (self.pk * (self.xk - xkc)**2).sum(1) + + def std(self): + """ + Returns a vector containing the standard deviations of the + discrete distributions. + + A vector is returned containing the standard deviation for + each row of `xk`, using the probabilities in the corresponding + row of `pk`. + """ + + return np.sqrt(self.var()) diff --git a/statsmodels/duration/survfunc.py b/statsmodels/duration/survfunc.py new file mode 100644 index 0000000..9378e1e --- /dev/null +++ b/statsmodels/duration/survfunc.py @@ -0,0 +1,809 @@ +import numpy as np +import pandas as pd +from scipy.stats.distributions import chi2, norm +from statsmodels.graphics import utils + + +def _calc_survfunc_right(time, status, weights=None, entry=None, compress=True, + retall=True): + """ + Calculate the survival function and its standard error for a single + group. + """ + + # Convert the unique times to ranks (0, 1, 2, ...) + if entry is None: + utime, rtime = np.unique(time, return_inverse=True) + else: + tx = np.concatenate((time, entry)) + utime, rtime = np.unique(tx, return_inverse=True) + rtime = rtime[0:len(time)] + + # Number of deaths at each unique time. + ml = len(utime) + if weights is None: + d = np.bincount(rtime, weights=status, minlength=ml) + else: + d = np.bincount(rtime, weights=status*weights, minlength=ml) + + # Size of risk set just prior to each event time. + if weights is None: + n = np.bincount(rtime, minlength=ml) + else: + n = np.bincount(rtime, weights=weights, minlength=ml) + if entry is not None: + n = np.cumsum(n) - n + rentry = np.searchsorted(utime, entry, side='left') + if weights is None: + n0 = np.bincount(rentry, minlength=ml) + else: + n0 = np.bincount(rentry, weights=weights, minlength=ml) + n0 = np.cumsum(n0) - n0 + n = n0 - n + else: + n = np.cumsum(n[::-1])[::-1] + + # Only retain times where an event occured. + if compress: + ii = np.flatnonzero(d > 0) + d = d[ii] + n = n[ii] + utime = utime[ii] + + # The survival function probabilities. + sp = 1 - d / n.astype(np.float64) + ii = sp < 1e-16 + sp[ii] = 1e-16 + sp = np.log(sp) + sp = np.cumsum(sp) + sp = np.exp(sp) + sp[ii] = 0 + + if not retall: + return sp, utime, rtime, n, d + + # Standard errors + if weights is None: + # Greenwood's formula + denom = n * (n - d) + denom = np.clip(denom, 1e-12, np.inf) + se = d / denom.astype(np.float64) + se[(n == d) | (n == 0)] = np.nan + se = np.cumsum(se) + se = np.sqrt(se) + locs = np.isfinite(se) | (sp != 0) + se[locs] *= sp[locs] + se[~locs] = np.nan + else: + # Tsiatis' (1981) formula + se = d / (n * n).astype(np.float64) + se = np.cumsum(se) + se = np.sqrt(se) + + return sp, se, utime, rtime, n, d + + +def _calc_incidence_right(time, status, weights=None): + """ + Calculate the cumulative incidence function and its standard error. + """ + + # Calculate the all-cause survival function. + status0 = (status >= 1).astype(np.float64) + sp, utime, rtime, n, d = _calc_survfunc_right(time, status0, weights, + compress=False, retall=False) + + ngrp = int(status.max()) + + # Number of cause-specific deaths at each unique time. + d = [] + for k in range(ngrp): + status0 = (status == k + 1).astype(np.float64) + if weights is None: + d0 = np.bincount(rtime, weights=status0, minlength=len(utime)) + else: + d0 = np.bincount(rtime, weights=status0*weights, + minlength=len(utime)) + d.append(d0) + + # The cumulative incidence function probabilities. + ip = [] + sp0 = np.r_[1, sp[:-1]] / n + for k in range(ngrp): + ip0 = np.cumsum(sp0 * d[k]) + ip.append(ip0) + + # The standard error of the cumulative incidence function. + if weights is not None: + return ip, None, utime + se = [] + da = sum(d) + for k in range(ngrp): + + ra = da / (n * (n - da)) + v = ip[k]**2 * np.cumsum(ra) + v -= 2 * ip[k] * np.cumsum(ip[k] * ra) + v += np.cumsum(ip[k]**2 * ra) + + ra = (n - d[k]) * d[k] / n + v += np.cumsum(sp0**2 * ra) + + ra = sp0 * d[k] / n + v -= 2 * ip[k] * np.cumsum(ra) + v += 2 * np.cumsum(ip[k] * ra) + + se.append(np.sqrt(v)) + + return ip, se, utime + + +def _checkargs(time, status, entry, freq_weights, exog): + + if len(time) != len(status): + raise ValueError("time and status must have the same length") + + if entry is not None and (len(entry) != len(time)): + msg = "entry times and event times must have the same length" + raise ValueError(msg) + + if entry is not None and np.any(entry >= time): + msg = "Entry times must not occur on or after event times" + raise ValueError(msg) + + if freq_weights is not None and (len(freq_weights) != len(time)): + raise ValueError("weights, time and status must have the same length") + + if exog is not None and (exog.shape[0] != len(time)): + raise ValueError("the rows of exog should align with time") + + +class CumIncidenceRight(object): + """ + Estimation and inference for a cumulative incidence function. + + If J = 1, 2, ... indicates the event type, the cumulative + incidence function for cause j is: + + I(t, j) = P(T <= t and J=j) + + Only right censoring is supported. If frequency weights are provided, + the point estimate is returned without a standard error. + + Parameters + ---------- + time : array-like + An array of times (censoring times or event times) + status : array-like + If status >= 1 indicates which event occured at time t. If + status = 0, the subject was censored at time t. + title : string + Optional title used for plots and summary output. + freq_weights : array-like + Optional frequency weights + exog : array-like + Optional, if present used to account for violation of + independent censoring. + bw_factor : float + Band-width multiplier for kernel-based estimation. Only + used if exog is provided. + dimred : boolean + If True, proportional hazards regression models are used to + reduce exog to two columns by predicting overall events and + censoring in two separate models. If False, exog is used + directly for calculating kernel weights without dimension + reduction. + + Attributes + ---------- + times : array-like + The distinct times at which the incidence rates are estimated + cinc : list of arrays + cinc[k-1] contains the estimated cumulative incidence rates + for outcome k=1,2,... + cinc_se : list of arrays + The standard errors for the values in `cinc`. Not available when + exog and/or frequency weights are provided. + + Notes + ----- + When exog is provided, a local estimate of the cumulative incidence + rate around each point is provided, and these are averaged to + produce an estimate of the marginal cumulative incidence + functions. The procedure is analogous to that described in Zeng + (2004) for estimation of the marginal survival function. The + approach removes bias resulting from dependent censoring when the + censoring becomes independent conditioned on the columns of exog. + + References + ---------- + The Stata stcompet procedure: + http://www.stata-journal.com/sjpdf.html?articlenum=st0059 + + Dinse, G. E. and M. G. Larson. 1986. A note on semi-Markov models + for partially censored data. Biometrika 73: 379-386. + + Marubini, E. and M. G. Valsecchi. 1995. Analysing Survival Data + from Clinical Trials and Observational Studies. Chichester, UK: + John Wiley & Sons. + + D. Zeng (2004). Estimating marginal survival function by + adjusting for dependent censoring using many covariates. Annals + of Statistics 32:4. + http://arxiv.org/pdf/math/0409180.pdf + """ + + def __init__(self, time, status, title=None, freq_weights=None, + exog=None, bw_factor=1., dimred=True): + + _checkargs(time, status, None, freq_weights, None) + time = self.time = np.asarray(time) + status = self.status = np.asarray(status) + if freq_weights is not None: + freq_weights = self.freq_weights = np.asarray(freq_weights) + + if exog is not None: + from ._kernel_estimates import _kernel_cumincidence + exog = self.exog = np.asarray(exog) + nobs = exog.shape[0] + kw = nobs**(-1/3.0) * bw_factor + kfunc = lambda x: np.exp(-x**2 / kw**2).sum(1) + x = _kernel_cumincidence(time, status, exog, kfunc, freq_weights, + dimred) + self.times = x[0] + self.cinc = x[1] + return + + x = _calc_incidence_right(time, status, freq_weights) + self.cinc = x[0] + self.cinc_se = x[1] + self.times = x[2] + self.title = "" if not title else title + + +class SurvfuncRight(object): + """ + Estimation and inference for a survival function. + + The survival function S(t) = P(T > t) is the probability that an + event time T is greater than t. + + This class currently only supports right censoring. + + Parameters + ---------- + time : array-like + An array of times (censoring times or event times) + status : array-like + Status at the event time, status==1 is the 'event' + (e.g. death, failure), meaning that the event + occurs at the given value in `time`; status==0 + indicates that censoring has occured, meaning that + the event occurs after the given value in `time`. + entry : array-like, optional An array of entry times for handling + left truncation (the subject is not in the risk set on or + before the entry time) + title : string + Optional title used for plots and summary output. + freq_weights : array-like + Optional frequency weights + exog : array-like + Optional, if present used to account for violation of + independent censoring. + bw_factor : float + Band-width multiplier for kernel-based estimation. Only used + if exog is provided. + + Attributes + ---------- + surv_prob : array-like + The estimated value of the survivor function at each time + point in `surv_times`. + surv_prob_se : array-like + The standard errors for the values in `surv_prob`. Not available + if exog is provided. + surv_times : array-like + The points where the survival function changes. + n_risk : array-like + The number of subjects at risk just before each time value in + `surv_times`. Not available if exog is provided. + n_events : array-like + The number of events (e.g. deaths) that occur at each point + in `surv_times`. Not available if exog is provided. + + Notes + ----- + If exog is None, the standard Kaplan-Meier estimator is used. If + exog is not None, a local estimate of the marginal survival + function around each point is constructed, and these are then + averaged. This procedure gives an estimate of the marginal + survival function that accounts for dependent censoring as long as + the censoring becomes independent when conditioning on the + covariates in exog. See Zeng et al. (2004) for details. + + References + ---------- + D. Zeng (2004). Estimating marginal survival function by + adjusting for dependent censoring using many covariates. Annals + of Statistics 32:4. + http://arxiv.org/pdf/math/0409180.pdf + """ + + def __init__(self, time, status, entry=None, title=None, + freq_weights=None, exog=None, bw_factor=1.): + + _checkargs(time, status, entry, freq_weights, exog) + time = self.time = np.asarray(time) + status = self.status = np.asarray(status) + if freq_weights is not None: + freq_weights = self.freq_weights = np.asarray(freq_weights) + + if entry is not None: + entry = self.entry = np.asarray(entry) + + if exog is not None: + if entry is not None: + raise ValueError("exog and entry cannot both be present") + from ._kernel_estimates import _kernel_survfunc + exog = self.exog = np.asarray(exog) + nobs = exog.shape[0] + kw = nobs**(-1/3.0) * bw_factor + kfunc = lambda x: np.exp(-x**2 / kw**2).sum(1) + x = _kernel_survfunc(time, status, exog, kfunc, freq_weights) + self.surv_prob = x[0] + self.surv_times = x[1] + return + + x = _calc_survfunc_right(time, status, weights=freq_weights, + entry=entry) + + self.surv_prob = x[0] + self.surv_prob_se = x[1] + self.surv_times = x[2] + self.n_risk = x[4] + self.n_events = x[5] + self.title = "" if not title else title + + def plot(self, ax=None): + """ + Plot the survival function. + + Examples + -------- + Change the line color: + + >>> import statsmodels.api as sm + >>> data = sm.datasets.get_rdataset("flchain", "survival").data + >>> df = data.loc[data.sex == "F", :] + >>> sf = sm.SurvfuncRight(df["futime"], df["death"]) + >>> fig = sf.plot() + >>> ax = fig.get_axes()[0] + >>> li = ax.get_lines() + >>> li[0].set_color('purple') + >>> li[1].set_color('purple') + + Don't show the censoring points: + + >>> fig = sf.plot() + >>> ax = fig.get_axes()[0] + >>> li = ax.get_lines() + >>> li[1].set_visible(False) + """ + + return plot_survfunc(self, ax) + + def quantile(self, p): + """ + Estimated quantile of a survival distribution. + + Parameters + ---------- + p : float + The probability point at which the quantile + is determined. + + Returns the estimated quantile. + """ + + # SAS uses a strict inequality here. + ii = np.flatnonzero(self.surv_prob < 1 - p) + + if len(ii) == 0: + return np.nan + + return self.surv_times[ii[0]] + + def quantile_ci(self, p, alpha=0.05, method='cloglog'): + """ + Returns a confidence interval for a survival quantile. + + Parameters + ---------- + p : float + The probability point for which a confidence interval is + determined. + alpha : float + The confidence interval has nominal coverage probability + 1 - `alpha`. + method : string + Function to use for g-transformation, must be ... + + Returns + ------- + lb : float + The lower confidence limit. + ub : float + The upper confidence limit. + + Notes + ----- + The confidence interval is obtained by inverting Z-tests. The + limits of the confidence interval will always be observed + event times. + + References + ---------- + The method is based on the approach used in SAS, documented here: + + http://support.sas.com/documentation/cdl/en/statug/68162/HTML/default/viewer.htm#statug_lifetest_details03.htm + """ + + tr = norm.ppf(1 - alpha / 2) + + method = method.lower() + if method == "cloglog": + g = lambda x: np.log(-np.log(x)) + gprime = lambda x: -1 / (x * np.log(x)) + elif method == "linear": + g = lambda x: x + gprime = lambda x: 1 + elif method == "log": + g = lambda x: np.log(x) + gprime = lambda x: 1 / x + elif method == "logit": + g = lambda x: np.log(x / (1 - x)) + gprime = lambda x: 1 / (x * (1 - x)) + elif method == "asinsqrt": + g = lambda x: np.arcsin(np.sqrt(x)) + gprime = lambda x: 1 / (2 * np.sqrt(x) * np.sqrt(1 - x)) + else: + raise ValueError("unknown method") + + r = g(self.surv_prob) - g(1 - p) + r /= (gprime(self.surv_prob) * self.surv_prob_se) + + ii = np.flatnonzero(np.abs(r) <= tr) + if len(ii) == 0: + return np.nan, np.nan + + lb = self.surv_times[ii[0]] + + if ii[-1] == len(self.surv_times) - 1: + ub = np.inf + else: + ub = self.surv_times[ii[-1] + 1] + + return lb, ub + + def summary(self): + """ + Return a summary of the estimated survival function. + + The summary is a datafram containing the unique event times, + estimated survival function values, and related quantities. + """ + + df = pd.DataFrame(index=self.surv_times) + df.index.name = "Time" + df["Surv prob"] = self.surv_prob + df["Surv prob SE"] = self.surv_prob_se + df["num at risk"] = self.n_risk + df["num events"] = self.n_events + + return df + + def simultaneous_cb(self, alpha=0.05, method="hw", transform="log"): + """ + Returns a simultaneous confidence band for the survival function. + + Parameters + ---------- + alpha : float + `1 - alpha` is the desired simultaneous coverage + probability for the confidence region. Currently alpha + must be set to 0.05, giving 95% simultaneous intervals. + method : string + The method used to produce the simultaneous confidence + band. Only the Hall-Wellner (hw) method is currently + implemented. + transform : string + The used to produce the interval (note that the returned + interval is on the survival probability scale regardless + of which transform is used). Only `log` and `arcsin` are + implemented. + + Returns + ------- + lcb : array-like + The lower confidence limits corresponding to the points + in `surv_times`. + ucb : array-like + The upper confidence limits corresponding to the points + in `surv_times`. + """ + + method = method.lower() + if method != "hw": + msg = "only the Hall-Wellner (hw) method is implemented" + raise ValueError(msg) + + if alpha != 0.05: + raise ValueError("alpha must be set to 0.05") + + transform = transform.lower() + s2 = self.surv_prob_se**2 / self.surv_prob**2 + nn = self.n_risk + if transform == "log": + denom = np.sqrt(nn) * np.log(self.surv_prob) + theta = 1.3581 * (1 + nn * s2) / denom + theta = np.exp(theta) + lcb = self.surv_prob**(1/theta) + ucb = self.surv_prob**theta + elif transform == "arcsin": + k = 1.3581 + k *= (1 + nn * s2) / (2 * np.sqrt(nn)) + k *= np.sqrt(self.surv_prob / (1 - self.surv_prob)) + f = np.arcsin(np.sqrt(self.surv_prob)) + v = np.clip(f - k, 0, np.inf) + lcb = np.sin(v)**2 + v = np.clip(f + k, -np.inf, np.pi/2) + ucb = np.sin(v)**2 + else: + raise ValueError("Unknown transform") + + return lcb, ucb + + +def survdiff(time, status, group, weight_type=None, strata=None, + entry=None, **kwargs): + """ + Test for the equality of two survival distributions. + + Parameters + ---------- + time : array-like + The event or censoring times. + status : array-like + The censoring status variable, status=1 indicates that the + event occured, status=0 indicates that the observation was + censored. + group : array-like + Indicators of the two groups + weight_type : string + The following weight types are implemented: + None (default) : logrank test + fh : Fleming-Harrington, weights by S^(fh_p), + requires exponent fh_p to be provided as keyword + argument; the weights are derived from S defined at + the previous event time, and the first weight is + always 1. + gb : Gehan-Breslow, weights by the number at risk + tw : Tarone-Ware, weights by the square root of the number + at risk + strata : array-like + Optional stratum indicators for a stratified test + entry : array-like + Entry times to handle left truncation. The subject is not in + the risk set on or before the entry time. + + Returns + ------- + chisq : The chi-square (1 degree of freedom) distributed test + statistic value + pvalue : The p-value for the chi^2 test + """ + + # TODO: extend to handle more than two groups + + time = np.asarray(time) + status = np.asarray(status) + group = np.asarray(group) + + gr = np.unique(group) + if len(gr) != 2: + raise ValueError("logrank only supports two groups") + + if strata is None: + obs, var = _survdiff(time, status, group, weight_type, gr, + entry, **kwargs) + else: + strata = np.asarray(strata) + stu = np.unique(strata) + obs, var = 0., 0. + for st in stu: + # could be more efficient? + ii = (strata == st) + obs1, var1 = _survdiff(time[ii], status[ii], group[ii], + weight_type, gr, entry, **kwargs) + obs += obs1 + var += var1 + + zstat = obs / np.sqrt(var) + + # The chi^2 test statistic and p-value. + chisq = zstat**2 + pvalue = 1 - chi2.cdf(chisq, 1) + + return chisq, pvalue + + +def _survdiff(time, status, group, weight_type, gr, entry=None, + **kwargs): + # logrank test for one stratum + + # Get the unique times. + if entry is None: + utimes, rtimes = np.unique(time, return_inverse=True) + else: + utimes, rtimes = np.unique(np.concatenate((time, entry)), + return_inverse=True) + rtimes = rtimes[0:len(time)] + + # Split entry times by group if present (should use pandas groupby) + tse = [(gr[0], None), (gr[1], None)] + if entry is not None: + for k in 0, 1: + ii = (group == gr[k]) + entry1 = entry[ii] + tse[k] = (gr[k], entry1) + + # Event count and risk set size at each time point, per group and overall. + # TODO: should use Pandas groupby + nrisk, obsv = [], [] + ml = len(utimes) + for g, entry0 in tse: + + mk = (group == g) + n = np.bincount(rtimes, weights=mk, minlength=ml) + + ob = np.bincount(rtimes, weights=status*mk, minlength=ml) + obsv.append(ob) + + if entry is not None: + n = np.cumsum(n) - n + rentry = np.searchsorted(utimes, entry0, side='left') + n0 = np.bincount(rentry, minlength=ml) + n0 = np.cumsum(n0) - n0 + nr = n0 - n + else: + nr = np.cumsum(n[::-1])[::-1] + + nrisk.append(nr) + + obs = sum(obsv) + nrisk_tot = sum(nrisk) + + # The variance of event counts in the first group. + r = nrisk[0] / np.clip(nrisk_tot, 1e-10, np.inf) + denom = nrisk_tot - 1 + denom = np.clip(denom, 1e-10, np.inf) + var = obs * r * (1 - r) * (nrisk_tot - obs) / denom + + # The expected number of events in the first group. + exp1 = obs * r + + weights = None + if weight_type is not None: + weight_type = weight_type.lower() + if weight_type == "gb": + weights = nrisk_tot + elif weight_type == "tw": + weights = np.sqrt(nrisk_tot) + elif weight_type == "fh": + if "fh_p" not in kwargs: + msg = "weight_type type 'fh' requires specification of fh_p" + raise ValueError(msg) + fh_p = kwargs["fh_p"] + # Calculate the survivor function directly to avoid the + # overhead of creating a SurvfuncRight object + sp = 1 - obs / nrisk_tot.astype(np.float64) + sp = np.log(sp) + sp = np.cumsum(sp) + sp = np.exp(sp) + weights = sp**fh_p + weights = np.roll(weights, 1) + weights[0] = 1 + else: + raise ValueError("weight_type not implemented") + + # The Z-scale test statistic (compare to normal reference + # distribution). + ix = np.flatnonzero(nrisk_tot > 1) + if weights is None: + obs = np.sum(obsv[0][ix] - exp1[ix]) + var = np.sum(var[ix]) + else: + obs = np.dot(weights[ix], obsv[0][ix] - exp1[ix]) + var = np.dot(weights[ix]**2, var[ix]) + + return obs, var + + +def plot_survfunc(survfuncs, ax=None): + """ + Plot one or more survivor functions. + + Parameters + ---------- + survfuncs : object or array-like + A single SurvfuncRight object, or a list or SurvfuncRight + objects that are plotted together. + + Returns + ------- + A figure instance on which the plot was drawn. + + Examples + -------- + Add a legend: + + >>> import statsmodels.api as sm + >>> from statsmodels.duration.survfunc import plot_survfunc + >>> data = sm.datasets.get_rdataset("flchain", "survival").data + >>> df = data.loc[data.sex == "F", :] + >>> sf0 = sm.SurvfuncRight(df["futime"], df["death"]) + >>> sf1 = sm.SurvfuncRight(3.0 * df["futime"], df["death"]) + >>> fig = plot_survfunc([sf0, sf1]) + >>> ax = fig.get_axes()[0] + >>> ax.set_position([0.1, 0.1, 0.64, 0.8]) + >>> ha, lb = ax.get_legend_handles_labels() + >>> leg = fig.legend((ha[0], ha[1]), (lb[0], lb[1]), 'center right') + + Change the line colors: + + >>> fig = plot_survfunc([sf0, sf1]) + >>> ax = fig.get_axes()[0] + >>> ax.set_position([0.1, 0.1, 0.64, 0.8]) + >>> ha, lb = ax.get_legend_handles_labels() + >>> ha[0].set_color('purple') + >>> ha[1].set_color('orange') + """ + + fig, ax = utils.create_mpl_ax(ax) + + # If we have only a single survival function to plot, put it into + # a list. + try: + assert(type(survfuncs[0]) is SurvfuncRight) + except: + survfuncs = [survfuncs] + + for gx, sf in enumerate(survfuncs): + + # The estimated survival function does not include a point at + # time 0, include it here for plotting. + surv_times = np.concatenate(([0], sf.surv_times)) + surv_prob = np.concatenate(([1], sf.surv_prob)) + + # If the final times are censoring times they are not included + # in the survival function so we add them here + mxt = max(sf.time) + if mxt > surv_times[-1]: + surv_times = np.concatenate((surv_times, [mxt])) + surv_prob = np.concatenate((surv_prob, [surv_prob[-1]])) + + label = getattr(sf, "title", "Group %d" % (gx + 1)) + + li, = ax.step(surv_times, surv_prob, '-', label=label, lw=2, + where='post') + + # Plot the censored points. + ii = np.flatnonzero(np.logical_not(sf.status)) + ti = sf.time[ii] + jj = np.searchsorted(surv_times, ti) - 1 + sp = surv_prob[jj] + ax.plot(ti, sp, '+', ms=12, color=li.get_color(), + label=label + " points") + + ax.set_ylim(0, 1.01) + + return fig diff --git a/statsmodels/duration/tests/__init__.py b/statsmodels/duration/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/duration/tests/results/__init__.py b/statsmodels/duration/tests/results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/duration/tests/results/bmt.csv b/statsmodels/duration/tests/results/bmt.csv new file mode 100644 index 0000000..ad6ec8b --- /dev/null +++ b/statsmodels/duration/tests/results/bmt.csv @@ -0,0 +1,138 @@ +Group,T,Status +ALL,2081,0 +ALL,1602,0 +ALL,1496,0 +ALL,1462,0 +ALL,1433,0 +ALL,1377,0 +ALL,1330,0 +ALL,996,0 +ALL,226,0 +ALL,1199,0 +ALL,1111,0 +ALL,530,0 +ALL,1182,0 +ALL,1167,0 +ALL,418,1 +ALL,383,1 +ALL,276,1 +ALL,104,1 +ALL,609,1 +ALL,172,1 +ALL,487,1 +ALL,662,1 +ALL,194,1 +ALL,230,1 +ALL,526,1 +ALL,122,1 +ALL,129,1 +ALL,74,1 +ALL,122,1 +ALL,86,1 +ALL,466,1 +ALL,192,1 +ALL,109,1 +ALL,55,1 +ALL,1,1 +ALL,107,1 +ALL,110,1 +ALL,332,1 +AML-Low Risk,2569,0 +AML-Low Risk,2506,0 +AML-Low Risk,2409,0 +AML-Low Risk,2218,0 +AML-Low Risk,1857,0 +AML-Low Risk,1829,0 +AML-Low Risk,1562,0 +AML-Low Risk,1470,0 +AML-Low Risk,1363,0 +AML-Low Risk,1030,0 +AML-Low Risk,860,0 +AML-Low Risk,1258,0 +AML-Low Risk,2246,0 +AML-Low Risk,1870,0 +AML-Low Risk,1799,0 +AML-Low Risk,1709,0 +AML-Low Risk,1674,0 +AML-Low Risk,1568,0 +AML-Low Risk,1527,0 +AML-Low Risk,1324,0 +AML-Low Risk,957,0 +AML-Low Risk,932,0 +AML-Low Risk,847,0 +AML-Low Risk,848,0 +AML-Low Risk,1850,0 +AML-Low Risk,1843,0 +AML-Low Risk,1535,0 +AML-Low Risk,1447,0 +AML-Low Risk,1384,0 +AML-Low Risk,414,1 +AML-Low Risk,2204,1 +AML-Low Risk,1063,1 +AML-Low Risk,481,1 +AML-Low Risk,105,1 +AML-Low Risk,641,1 +AML-Low Risk,390,1 +AML-Low Risk,288,1 +AML-Low Risk,421,1 +AML-Low Risk,79,1 +AML-Low Risk,748,1 +AML-Low Risk,486,1 +AML-Low Risk,48,1 +AML-Low Risk,272,1 +AML-Low Risk,1074,1 +AML-Low Risk,381,1 +AML-Low Risk,10,1 +AML-Low Risk,53,1 +AML-Low Risk,80,1 +AML-Low Risk,35,1 +AML-Low Risk,248,1 +AML-Low Risk,704,1 +AML-Low Risk,211,1 +AML-Low Risk,219,1 +AML-Low Risk,606,1 +AML-High Risk,2640,0 +AML-High Risk,2430,0 +AML-High Risk,2252,0 +AML-High Risk,2140,0 +AML-High Risk,2133,0 +AML-High Risk,1238,0 +AML-High Risk,1631,0 +AML-High Risk,2024,0 +AML-High Risk,1345,0 +AML-High Risk,1136,0 +AML-High Risk,845,0 +AML-High Risk,422,1 +AML-High Risk,162,1 +AML-High Risk,84,1 +AML-High Risk,100,1 +AML-High Risk,2,1 +AML-High Risk,47,1 +AML-High Risk,242,1 +AML-High Risk,456,1 +AML-High Risk,268,1 +AML-High Risk,318,1 +AML-High Risk,32,1 +AML-High Risk,467,1 +AML-High Risk,47,1 +AML-High Risk,390,1 +AML-High Risk,183,1 +AML-High Risk,105,1 +AML-High Risk,115,1 +AML-High Risk,164,1 +AML-High Risk,93,1 +AML-High Risk,120,1 +AML-High Risk,80,1 +AML-High Risk,677,1 +AML-High Risk,64,1 +AML-High Risk,168,1 +AML-High Risk,74,1 +AML-High Risk,16,1 +AML-High Risk,157,1 +AML-High Risk,625,1 +AML-High Risk,48,1 +AML-High Risk,273,1 +AML-High Risk,63,1 +AML-High Risk,76,1 +AML-High Risk,113,1 +AML-High Risk,363,1 diff --git a/statsmodels/duration/tests/results/bmt_results.csv b/statsmodels/duration/tests/results/bmt_results.csv new file mode 100644 index 0000000..ebdbbf2 --- /dev/null +++ b/statsmodels/duration/tests/results/bmt_results.csv @@ -0,0 +1,24 @@ +t,s,se,linear,loglog,log,asinsqrt,logit +1,0.97368,0.025967,8.6141,2.37831,9.7871,4.44648,2.47903 +55,0.94737,0.036224,5.4486,2.36375,6.1098,3.60151,2.46635 +74,0.92105,0.043744,3.9103,2.16833,4.3257,2.94398,2.25757 +86,0.89474,0.049784,2.9073,1.89961,3.1713,2.38164,1.97023 +104,0.86842,0.054836,2.1595,1.59196,2.3217,1.87884,1.64297 +107,0.84211,0.059153,1.5571,1.26050,1.6490,1.41733,1.29331 +109,0.81579,0.062886,1.0462,0.91307,1.0908,0.98624,0.93069 +110,0.78947,0.066135,0.5969,0.55415,0.6123,0.57846,0.56079 +122,0.73684,0.071434,–0.1842,–0.18808,–0.1826,–0.18573,–0.18728 +129,0.71053,0.073570,–0.5365,–0.56842,–0.5222,–0.54859,–0.56101 +172,0.68421,0.075405,–0.8725,–0.95372,–0.8330,–0.90178,–0.93247 +192,0.65789,0.076960,–1.1968,–1.34341,–1.1201,–1.24712,–1.30048 +194,0.63158,0.078252,–1.5133,–1.73709,–1.3870,–1.58613,–1.66406 +230,0.60412,0.079522,–1.8345,–2.14672,–1.6432,–1.92995,–2.03291 +276,0.57666,0.080509,–2.1531,–2.55898,–1.8825,–2.26871,–2.39408 +332,0.54920,0.081223,–2.4722,–2.97389,–2.1070,–2.60380,–2.74691 +383,0.52174,0.081672,–2.7948,–3.39146,–2.3183,–2.93646,–3.09068 +418,0.49428,0.081860,–3.1239,–3.81166,–2.5177,–3.26782,–3.42460 +466,0.46682,0.081788,–3.4624,–4.23445,–2.7062,–3.59898,–3.74781 +487,0.43936,0.081457,–3.8136,–4.65971,–2.8844,–3.93103,–4.05931 +526,0.41190,0.080862,–4.1812,–5.08726,–3.0527,–4.26507,–4.35795 +609,0.38248,0.080260,–4.5791,–5.52446,–3.2091,–4.60719,–4.64271 +662,0.35306,0.079296,–5.0059,–5.96222,–3.3546,–4.95358,–4.90900 diff --git a/statsmodels/duration/tests/results/phreg_gentests.py b/statsmodels/duration/tests/results/phreg_gentests.py new file mode 100644 index 0000000..3054f4d --- /dev/null +++ b/statsmodels/duration/tests/results/phreg_gentests.py @@ -0,0 +1,60 @@ +import numpy as np + +""" +Generate data sets for testing Cox proportional hazards regression +models. + +After updating the test data sets, use R to run the survival.R script +to update the R results. +""" + +# The current data may not reflect this seed +np.random.seed(5234) + +# Loop over pairs containing (sample size, number of variables). +for (n, p) in (20, 1), (50, 1), (50, 2), (100, 5), (1000, 10): + + exog = np.random.normal(size=(5*n, p)) + coef = np.linspace(-0.5, 0.5, p) + lpred = np.dot(exog, coef) + expected_survival_time = np.exp(-lpred) + + # Survival times are exponential + survival_time = -np.log(np.random.uniform(size=5*n)) + survival_time *= expected_survival_time + + # Set this to get a reasonable amount of censoring + expected_censoring_time = np.mean(expected_survival_time) + + # Theses are the observation times. + censoring_time = -np.log(np.random.uniform(size=5*n)) + censoring_time *= expected_censoring_time + + # Entry times + entry_time = -np.log(np.random.uniform(size=5*n)) + entry_time *= 0.5*expected_censoring_time + + # 1=failure (death), 0=no failure (no death) + status = 1*(survival_time <= censoring_time) + + # The censoring time of the failure time, whichever comes first + time = np.where(status == 1, survival_time, censoring_time) + + # Round time so that we have ties + time = np.around(time, decimals=1) + + # Only take cases where the entry time is before the failure or + # censoring time. Take exactly n such cases. + ii = np.flatnonzero(entry_time < time) + ii = ii[np.random.permutation(len(ii))[0:n]] + status = status[ii] + time = time[ii] + exog = exog[ii, :] + entry_time = entry_time[ii] + + data = np.concatenate((time[:, None], status[:, None], + entry_time[:, None], exog), + axis=1) + + fname = "results/survival_data_%d_%d.csv" % (n, p) + np.savetxt(fname, data, fmt="%.5f") diff --git a/statsmodels/duration/tests/results/survival.R b/statsmodels/duration/tests/results/survival.R new file mode 100644 index 0000000..82de69e --- /dev/null +++ b/statsmodels/duration/tests/results/survival.R @@ -0,0 +1,68 @@ +library(survival) +library(R2nparray) + +ixd = list(c(20,1), c(50,1), c(50,2), c(100,5), c(1000,10)) + +res = list() + +for (ix in ixd) { + fname = sprintf("results/survival_data_%d_%d.csv", ix[1], ix[2]) + data = read.table(fname) + + time = data[,1] + status = data[,2] + entry = data[,3] + exog = data[,4:dim(data)[2]] + exog = as.matrix(exog) + n = dim(exog)[1] + p = dim(exog)[2] + + # Needs to match the kronecker statement in test_phreg.py + strata = kronecker(seq(5), array(1, n/5)) + + for (ties in c("breslow", "efron")) { + + ti = substr(ties, 1, 3) + + # Base model + surv = Surv(time, status) + md = coxph(surv ~ exog, ties=ties) + tag = sprintf("%d_%d_%s", n, p, ti) + res[[sprintf("coef_%s", tag)]] = md$coef + res[[sprintf("se_%s", tag)]] = sqrt(diag(md$var)) + #bhaz = basehaz(md) + bhaz = survfit(md, type="aalen") + #bhaz = survfit(md, type="efron") + res[[sprintf("time_%s", tag)]] = bhaz$time + res[[sprintf("hazard_%s", tag)]] = -log(bhaz$surv) + + # With entry time + surv = Surv(entry, time, status) + md = coxph(surv ~ exog, ties=ties) + tag = sprintf("%d_%d_et_%s", n, p, ti) + res[[sprintf("coef_%s", tag)]] = md$coef + res[[sprintf("se_%s", tag)]] = sqrt(diag(md$var)) + res[[sprintf("time_%s", tag)]] = c(0) + res[[sprintf("hazard_%s", tag)]] = c(0) + + # With strata + surv = Surv(time, status) + md = coxph(surv ~ exog + strata(strata), ties=ties) + tag = sprintf("%d_%d_st_%s", n, p, ti) + res[[sprintf("coef_%s", tag)]] = md$coef + res[[sprintf("se_%s", tag)]] = sqrt(diag(md$var)) + res[[sprintf("time_%s", tag)]] = c(0) + res[[sprintf("hazard_%s", tag)]] = c(0) + + # With entry time and strata + surv = Surv(entry, time, status) + md = coxph(surv ~ exog + strata(strata), ties=ties) + tag = sprintf("%d_%d_et_st_%s", n, p, ti) + res[[sprintf("coef_%s", tag)]] = md$coef + res[[sprintf("se_%s", tag)]] = sqrt(diag(md$var)) + res[[sprintf("time_%s", tag)]] = c(0) + res[[sprintf("hazard_%s", tag)]] = c(0) + } +} + +R2nparray(res, fname="survival_r_results.py") diff --git a/statsmodels/duration/tests/results/survival_data_1000_10.csv b/statsmodels/duration/tests/results/survival_data_1000_10.csv new file mode 100644 index 0000000..4d7be61 --- /dev/null +++ b/statsmodels/duration/tests/results/survival_data_1000_10.csv @@ -0,0 +1,1000 @@ +2.20000 1.00000 0.61724 -0.55769 0.53610 0.36943 1.27222 1.50100 -0.12360 -1.96969 0.19446 0.51010 0.02451 +4.00000 0.00000 0.07211 0.25464 -0.35689 -0.65315 1.29070 2.10784 -1.08015 -1.10013 0.51913 -1.35782 0.14478 +1.40000 1.00000 0.44822 0.58003 -0.44211 2.40188 -0.64420 1.06588 0.01564 -0.20484 1.17820 -0.05933 -0.20595 +0.50000 1.00000 0.00636 1.21382 0.09781 0.46914 -0.49769 0.52211 -0.20400 -0.35330 1.52768 -0.55526 1.94335 +2.40000 0.00000 0.45299 1.52515 -0.10118 0.43453 1.17629 0.03341 2.54058 -1.54177 0.18589 -0.29454 -0.27507 +0.50000 1.00000 0.03047 -0.51227 0.46126 1.17288 0.84365 0.05497 1.68704 -0.80740 -0.03969 1.01761 0.96855 +0.60000 1.00000 0.02254 2.38102 0.16372 0.02408 -0.45695 -0.42139 0.24483 -0.46658 1.34592 -0.16698 0.16030 +0.40000 0.00000 0.19834 0.37075 0.27571 0.17561 -0.52539 1.12128 1.34544 0.16943 -0.79336 1.67125 0.61738 +1.20000 1.00000 0.02888 -0.25093 -0.20272 -0.55030 -1.07225 -0.23384 -0.61526 0.26331 -0.92035 -0.20961 -0.54408 +0.80000 0.00000 0.38322 -1.60083 -0.68285 -1.48935 2.24038 -1.08571 0.91860 -1.28901 1.28458 -1.34052 0.15455 +0.70000 1.00000 0.49899 0.24645 0.21391 -0.38812 -0.57698 -0.99367 0.39804 0.42150 0.15845 -0.89688 -0.97871 +0.20000 1.00000 0.04449 1.00699 -0.09812 -0.74531 -0.72399 0.67709 -1.49618 0.08465 -0.01884 1.61963 0.63704 +1.70000 0.00000 0.11911 -1.12379 0.60479 0.05384 0.53668 1.05582 -0.02650 0.46632 -1.22204 -0.91967 -0.12464 +0.80000 0.00000 0.70736 -1.32535 -1.48392 0.40817 0.54245 0.52589 -2.24096 1.06386 -1.30732 0.48406 -0.76728 +0.30000 1.00000 0.21839 -0.16116 1.01429 1.98822 -1.63103 1.51877 0.71420 -1.26542 -0.19523 -0.29345 -0.25738 +1.10000 1.00000 0.13444 0.10086 0.90778 0.93187 -0.47899 1.32071 -0.73275 -0.85642 -0.08555 1.16334 0.12531 +0.30000 1.00000 0.07944 -0.64357 0.42648 -0.38013 -0.64211 0.45105 -0.23755 -1.01499 1.19018 -0.79870 0.86741 +1.20000 1.00000 0.17678 1.22821 0.69375 -0.08204 -0.06515 -0.37206 -0.90847 0.20110 -0.10712 1.24427 1.18669 +3.30000 0.00000 0.63612 0.83048 0.51623 -0.30725 0.28668 1.29840 0.89453 1.35904 1.24821 -1.52340 0.02210 +1.70000 0.00000 0.17967 1.48728 -0.98179 -0.17205 0.60989 -0.66084 -1.22882 0.94681 -1.42983 -1.07240 0.03947 +0.20000 1.00000 0.14060 -0.34051 -1.43963 0.27502 -0.90567 0.87136 -0.90789 0.56778 -1.15960 0.91351 -1.00314 +0.20000 1.00000 0.06641 -0.19928 -0.36731 0.89397 0.84483 1.22801 0.64019 1.32367 1.71569 -1.16877 -0.43738 +1.80000 0.00000 1.40485 0.57806 1.21823 -0.33102 -0.70758 0.11314 -0.80432 -2.19486 0.38958 1.14877 -0.48417 +0.40000 1.00000 0.04382 0.05096 0.99463 -0.11308 -0.18949 -1.58033 0.56111 -2.02685 2.17153 -0.53126 0.95653 +0.80000 1.00000 0.77853 0.30823 -0.74766 -0.80125 -1.02869 -0.33454 -0.11097 0.11125 0.15521 -0.33027 -0.11349 +0.20000 1.00000 0.09230 0.19993 -1.37290 0.28852 -0.99227 -0.33308 -0.92476 0.97752 0.92906 -1.42667 -0.17842 +0.30000 0.00000 0.20174 0.90145 -0.32399 0.99409 1.80795 1.11584 -0.42079 0.57662 0.85008 0.54249 -1.33448 +1.10000 0.00000 0.07433 -0.12512 0.02531 -0.91369 -0.45084 0.28431 -0.29162 -1.07533 0.19434 0.75378 -0.77702 +1.00000 1.00000 0.46145 0.40457 0.81231 -0.65551 -1.30441 -0.39547 2.30006 -1.24383 -1.66349 0.28972 -0.48189 +0.60000 1.00000 0.32065 -1.47057 -0.27235 0.22591 0.23103 0.96082 -0.03386 -2.24012 0.28122 0.51545 0.65154 +0.50000 0.00000 0.25740 0.89852 -0.84627 1.03231 0.92781 0.62345 -0.53002 2.17166 -0.84762 -1.17697 1.37519 +0.70000 1.00000 0.26728 0.01672 0.94589 -0.94987 -0.38894 -0.22265 -0.11350 2.37459 0.06065 -1.33097 0.14716 +0.70000 0.00000 0.50150 1.80922 1.51778 -0.61979 -0.22195 0.22494 0.56150 1.41038 -0.05552 0.32786 -0.58039 +2.50000 0.00000 0.49045 0.83981 -0.57183 1.38586 1.54608 -0.37083 -0.71233 -1.48779 -2.15661 -1.34006 0.51544 +2.30000 1.00000 0.10220 0.56316 -0.15995 -1.37081 -0.23635 0.86945 -0.68112 -0.05512 1.44105 -1.14032 0.17601 +0.80000 0.00000 0.15386 -0.05641 0.00698 1.35970 -1.49505 -0.07127 0.75206 1.25451 1.00960 -2.19150 -1.58381 +0.30000 0.00000 0.20899 0.47189 0.03439 -1.10909 -0.72646 -0.57064 0.49575 -0.02468 1.64553 0.08820 -1.74802 +1.50000 0.00000 0.26005 -0.30979 1.55708 0.04519 1.40924 2.10640 -0.67887 -0.27614 0.61303 -0.75696 -2.42120 +0.50000 0.00000 0.47647 0.03873 0.56850 0.62389 -0.60103 0.85510 -0.25514 0.01472 0.25561 0.69803 -0.76283 +0.50000 0.00000 0.10029 0.29256 -0.11039 -0.65402 0.98904 -0.18524 0.51356 -0.37936 -0.01548 -0.46630 -0.69037 +0.80000 0.00000 0.73227 -0.84287 1.07579 -2.30983 2.24255 -0.78086 -0.71297 0.36329 2.31857 -2.09155 -0.42988 +1.10000 1.00000 0.66478 -0.48090 -0.37737 1.18841 1.01447 0.10118 0.26306 0.31614 1.38793 0.52677 -0.23500 +0.10000 1.00000 0.09993 -0.42501 -0.42893 -0.08679 -0.51303 -0.76561 -0.97812 -0.47942 0.50401 1.19724 0.37896 +0.40000 0.00000 0.02132 0.85363 -2.03032 -0.21032 -1.86388 -0.17712 -0.06023 0.23730 -0.05747 -0.49141 -0.59492 +1.30000 1.00000 0.73015 -0.20033 -0.53364 1.64427 -0.64094 -2.10497 0.88635 -0.81696 0.16816 -0.31259 -0.63673 +1.60000 0.00000 0.24884 -0.13516 0.29118 0.78286 0.38359 0.13437 -1.13291 -0.55708 0.28424 2.12825 -0.33668 +0.30000 0.00000 0.06130 -0.80155 -0.26938 -0.02131 0.26252 2.35012 2.69595 0.45638 -0.88787 -0.34754 -1.25935 +0.20000 1.00000 0.06879 -0.03594 0.07137 2.26181 0.96746 0.19547 0.25759 -1.26563 0.31185 0.43839 0.21369 +0.60000 1.00000 0.59358 2.04935 -0.30424 -0.66108 0.30798 -0.63184 -0.48547 0.93856 0.53268 -0.66899 0.35317 +0.20000 1.00000 0.16074 -2.07685 2.10954 2.59192 -1.60720 -0.37301 1.60251 0.05945 1.45938 -0.50836 0.34949 +0.20000 1.00000 0.08517 -1.13384 -1.04117 -2.36658 0.94309 -1.50149 -0.16257 1.02879 -1.21137 -2.04241 -0.03434 +0.30000 1.00000 0.17995 -1.59503 0.18642 -0.54020 0.51362 -0.79789 -0.14350 -0.93135 -2.27129 -0.29814 0.72981 +2.60000 1.00000 0.91573 0.87026 1.10883 0.05655 0.13939 0.17743 -2.41925 1.22067 -1.52242 0.81110 0.30637 +0.30000 1.00000 0.28670 -0.47664 0.28862 -0.91211 0.46332 2.73744 1.37625 -0.89297 -0.18965 2.04583 -0.24316 +0.10000 1.00000 0.02463 0.19580 -0.86287 -1.44295 -1.83444 -0.58274 -0.15113 0.16388 0.26304 -0.31822 -0.49172 +0.90000 0.00000 0.58259 0.26031 1.20138 -0.48431 -1.80565 -0.91469 -0.67820 -0.19139 -0.34316 -1.09843 -0.67124 +0.10000 1.00000 0.01954 -0.45657 0.88331 -0.65184 -1.25290 0.13091 0.17759 -2.21138 1.81611 0.62190 1.94569 +3.50000 1.00000 1.01212 1.39195 -0.42450 0.30235 -0.97606 -1.33319 1.10923 -1.77969 -1.09560 0.16093 1.40142 +0.70000 0.00000 0.45899 -0.11529 1.24143 -1.12147 -0.37257 -0.85146 -0.04134 1.09950 -0.23292 -0.24387 0.42814 +0.70000 1.00000 0.01005 0.98625 0.46120 -0.25261 -0.06216 1.38985 -1.63511 0.82711 1.36053 -0.12956 0.93860 +0.10000 0.00000 0.06188 0.33788 -0.25017 0.02240 -1.14818 0.20593 1.23239 0.53586 0.02116 1.47118 0.71487 +1.50000 0.00000 0.07481 1.45880 0.13808 -0.68422 1.19840 1.03880 -0.16734 0.66926 -1.43712 -1.80100 0.25813 +0.50000 1.00000 0.10980 0.47766 -1.45531 -0.31684 1.18532 1.97556 0.45056 -0.80495 -0.50342 -0.07798 -2.00409 +0.90000 1.00000 0.40818 1.98068 0.89488 0.06603 0.54825 0.50202 0.83223 0.60367 -0.48965 0.84259 0.78089 +0.60000 1.00000 0.08811 0.83371 1.72915 0.12250 -0.50049 0.95996 -1.00916 -0.78073 1.43720 1.46421 -0.15638 +0.40000 0.00000 0.06872 -0.64644 -0.19031 -1.87613 0.83498 1.01219 -1.12158 -0.12305 0.08361 0.14208 0.60038 +1.00000 0.00000 0.91024 0.82217 -1.47016 0.24977 0.06945 -0.10101 -1.23500 -1.17219 -0.01201 0.06957 -0.81433 +0.40000 1.00000 0.09630 0.32206 -0.21303 0.72312 0.82139 -1.46147 -0.47339 0.01365 1.26419 0.62508 0.04829 +1.40000 1.00000 0.59508 -0.25204 0.70924 0.12863 0.39569 -0.26226 1.91710 0.29008 0.90980 -1.70443 1.41947 +1.30000 1.00000 0.26925 0.95353 -0.54838 0.03708 0.80695 -1.73116 -0.09481 -1.19070 1.27154 0.67448 0.94453 +3.10000 0.00000 0.49551 1.76198 -1.17190 0.89388 -0.68775 -0.82192 2.16776 -1.81519 -0.49197 0.32627 -1.48220 +1.30000 1.00000 0.40312 1.42303 1.31907 0.05230 0.14808 -0.85371 -0.08268 -0.31415 -0.83462 -2.33346 0.89933 +0.60000 1.00000 0.56062 0.12606 0.36613 -0.25065 1.74737 0.54024 -1.50968 0.88075 0.99551 0.36235 0.02234 +1.40000 0.00000 1.12312 1.62111 -0.05271 0.85462 1.99328 -0.95174 0.33799 0.21482 1.07215 -1.71928 -0.25125 +0.80000 0.00000 0.04567 0.87732 0.30726 -0.11310 0.00935 -0.72777 0.64841 0.27179 -0.59682 0.17937 -0.79882 +0.50000 1.00000 0.49700 -0.12892 1.70498 1.27126 -0.44879 -0.77952 -0.29405 -0.15313 -1.18383 1.13164 0.12135 +1.50000 0.00000 0.02809 -0.34159 0.12828 0.97597 0.24102 1.31322 0.87890 0.12447 -0.52598 -1.53469 -1.32023 +2.80000 0.00000 0.91942 -0.51853 0.96362 0.20781 1.11869 -1.17815 0.78420 -0.32641 0.04367 0.25444 -1.80276 +2.20000 1.00000 0.15209 0.11677 0.25506 -0.90580 -0.65541 1.61159 -2.04166 0.67123 -0.86008 -0.80309 -0.47633 +1.70000 0.00000 0.53897 -0.76483 0.24680 -0.06752 0.28115 -0.28039 0.98929 -0.04618 -0.07617 -1.27110 -0.43542 +0.30000 1.00000 0.25342 -0.36865 -1.36895 -0.57852 -1.24010 -1.16006 1.00148 -0.12909 -1.11907 -2.65099 1.26662 +0.80000 0.00000 0.70787 -1.15635 -0.90157 1.29859 0.75574 0.16644 0.57186 0.18145 -1.82403 1.06831 -1.91489 +2.40000 0.00000 1.77746 1.49400 0.03187 1.54599 0.16272 -0.53871 -0.69686 0.25683 -0.76584 -0.48619 0.81472 +1.30000 0.00000 0.75132 0.97662 0.86430 0.54683 -0.73482 -1.95987 0.64754 1.82739 -0.81556 -2.01563 0.29016 +0.20000 1.00000 0.08801 -0.03736 0.12160 0.66240 -0.42815 0.41156 0.24933 0.62472 -0.40181 -0.66878 2.16372 +2.80000 0.00000 2.07602 0.93076 -0.20529 -1.16406 0.00629 1.63748 -0.81835 -0.84634 -0.19272 -2.11735 0.15722 +1.10000 0.00000 0.26579 -1.27825 0.55364 1.85670 0.81142 1.36801 -0.48025 -1.42131 -0.67701 -0.27516 1.62169 +0.80000 1.00000 0.71482 -0.33395 -0.20932 -0.13935 -1.10927 0.95986 -1.73525 -0.33638 -0.43780 0.97443 -1.60293 +2.60000 1.00000 0.44690 -2.62991 1.06802 0.10542 0.14743 -0.27650 0.88939 -1.60525 0.35992 -1.77525 -1.06956 +2.60000 0.00000 0.97298 2.20290 0.57394 -1.47597 -0.26401 -1.12682 -0.53432 -0.16734 1.30834 -0.71959 -0.63619 +0.30000 0.00000 0.29372 1.47661 -0.75787 -0.68858 0.48255 1.48518 -1.55068 0.19821 2.28240 0.16158 -0.75720 +0.20000 1.00000 0.17337 -0.65454 0.49182 -2.27478 -0.40236 -0.81987 -0.27001 -0.41169 0.88828 0.61799 0.52557 +0.40000 0.00000 0.00719 -0.76521 1.35812 -0.31781 -1.13900 1.01622 -0.13036 -0.43187 -0.77417 -0.40752 1.47863 +0.70000 0.00000 0.51194 0.86238 -0.00989 2.30806 -1.26985 1.71035 -1.17978 -0.96622 -1.45639 -1.02457 0.56094 +4.20000 1.00000 0.80083 0.07497 1.64179 0.49477 0.54202 -0.93254 2.31501 -0.39701 0.13436 -0.54443 0.46980 +2.70000 0.00000 0.43417 1.05910 -0.14958 1.56718 -0.73549 1.15733 -0.34648 0.02349 1.75677 0.27982 -1.65915 +1.50000 0.00000 0.02045 1.41961 -1.67078 1.52164 -1.19592 0.95035 -1.08666 -1.41903 -1.89439 -0.86194 -0.64884 +0.30000 1.00000 0.01351 0.26678 -0.50789 1.28267 0.15336 -1.75472 -0.74918 -0.08506 0.04178 -0.18185 -1.83142 +2.50000 0.00000 0.07456 1.09485 0.49743 -0.32385 0.67634 -0.03034 0.49741 -0.96481 -0.42071 0.58523 0.08997 +1.80000 1.00000 0.59381 -0.76442 -0.48021 -1.38269 0.60495 0.53631 0.06574 -1.08575 -0.91454 -0.88622 0.38743 +0.40000 1.00000 0.28399 0.09567 -1.18106 -1.35837 0.29573 0.71659 -0.97645 -1.07833 -0.37212 -0.11607 0.03007 +0.30000 0.00000 0.13955 0.42499 -0.21993 -0.74871 0.08216 -0.37837 -0.74119 0.62831 0.86392 0.45604 -1.29506 +1.40000 1.00000 0.20764 1.15291 -0.17852 -1.20665 0.96735 0.28522 1.08336 0.05155 -0.53839 -0.16196 -1.55195 +0.70000 0.00000 0.09606 0.46135 0.68257 -0.89292 -0.67576 -1.38405 0.80949 -0.33061 0.91101 0.31205 -0.52141 +0.50000 1.00000 0.13764 0.57914 0.73110 -0.75427 -1.44021 -0.22513 0.31669 -2.25102 1.15791 -0.74497 1.24190 +1.50000 1.00000 0.07334 0.70024 0.70606 0.22728 -0.08470 0.23770 -1.81575 -0.58336 1.48828 1.35347 0.50668 +1.40000 1.00000 0.24149 0.46755 0.71748 -1.25266 -1.03759 -0.51690 -0.57993 1.35628 -0.53200 -0.01798 0.43953 +1.90000 0.00000 1.58332 1.04515 0.26934 0.68967 0.47602 -1.67805 -0.70660 -1.92104 -2.44487 -0.78016 -0.08947 +1.10000 1.00000 0.66905 1.13182 -0.12878 0.85998 0.41918 0.08136 -0.46119 1.08347 0.73013 0.76389 1.12596 +0.60000 1.00000 0.15310 -0.86660 0.19793 -0.37177 0.38060 -0.37399 -0.42304 -2.70463 -0.26893 -0.10115 0.05031 +2.00000 0.00000 0.32811 -0.68962 2.28747 0.70309 1.77726 0.67451 -0.39243 0.31542 0.28116 -0.95015 -0.33063 +0.30000 1.00000 0.04578 1.09677 0.18570 0.54639 1.52047 -0.44682 -0.47933 -0.46953 0.11459 1.05734 -0.22807 +4.20000 0.00000 0.12646 0.65923 0.12099 -0.07110 0.61661 0.19862 -1.39906 1.32065 0.50983 -1.63159 -1.57018 +1.40000 0.00000 1.10036 1.07413 -0.03850 1.11149 -0.69157 0.00836 0.58810 -1.37906 1.76383 -0.35971 -1.03351 +0.70000 0.00000 0.20116 0.85561 -0.39957 0.57080 1.39615 0.08189 -0.50628 -0.84098 0.48881 -0.58612 -0.15291 +2.00000 0.00000 0.82176 2.11433 0.93282 1.79311 -0.35742 0.25543 -0.88078 -0.86799 -1.51496 -1.26603 0.18133 +1.70000 1.00000 0.78262 -1.94297 0.35351 0.71620 2.09406 0.19198 -1.20357 1.00308 0.14950 -1.18374 0.28556 +0.20000 1.00000 0.06884 -1.46087 0.63419 -0.85284 -1.15756 1.95312 0.81650 1.58726 0.33571 0.44596 1.33227 +1.00000 0.00000 0.62379 0.88066 0.50677 1.00883 0.65805 0.28291 -1.55669 2.06216 -0.81408 0.29812 0.14993 +0.10000 1.00000 0.04282 -1.46762 -1.20065 2.02247 -0.22365 0.73529 2.54643 1.55540 -0.15383 -0.97272 -0.54099 +1.90000 1.00000 0.61175 -0.52513 -0.38409 -0.58707 -0.82428 -1.98392 0.06674 0.35056 0.15044 -0.39197 0.12882 +0.40000 1.00000 0.30324 -0.35344 -0.01725 2.01211 0.74427 -0.41410 -0.54799 -0.00202 0.09607 -0.53669 -0.61148 +2.00000 0.00000 0.87685 1.17390 1.41275 0.78705 -0.58352 1.78227 -2.52103 1.11908 0.35726 1.19634 -2.70581 +1.30000 0.00000 0.00987 -0.34701 -0.90169 -0.05430 0.46310 0.01764 0.43314 -0.18962 -0.88936 -0.09308 -0.81687 +0.50000 1.00000 0.03952 0.47289 -0.85933 0.32105 -0.87985 -1.14532 -0.43672 -0.01510 -0.14838 0.01095 -0.80111 +0.60000 0.00000 0.21255 -1.43584 0.27559 2.39081 0.28578 -1.07018 -3.17251 0.91862 0.95470 -1.41619 -0.89133 +1.10000 1.00000 0.39894 -0.60399 0.03056 -1.17593 -0.83832 0.81076 -1.44544 -1.04736 0.03201 1.35847 -0.33185 +2.30000 1.00000 0.69815 0.28232 1.14855 -0.62873 -0.32722 1.97018 -0.80904 -1.54445 -0.02594 -1.76363 0.26351 +1.00000 1.00000 0.37151 0.44222 -0.47906 1.10785 0.38264 1.08296 -0.65891 1.01732 -2.10841 -0.93645 -0.63516 +0.30000 0.00000 0.12720 -0.92691 0.44397 0.72075 0.20720 -0.65849 -1.87412 0.60497 -1.48825 -0.66308 1.17267 +0.30000 0.00000 0.01780 0.08404 1.26443 0.00384 -0.42726 -0.82147 -0.61815 0.68993 -0.69680 1.35158 -0.51535 +1.10000 0.00000 0.08188 0.13393 0.32966 0.24828 -1.86673 0.58378 0.91474 0.08595 -0.86552 -1.47686 -0.45709 +0.80000 0.00000 0.11305 -1.32514 -0.18001 2.23320 -0.54599 -1.35097 0.13958 -1.08246 -1.20222 2.16812 -1.09491 +2.70000 0.00000 0.40340 0.12145 -0.03427 0.41756 -1.84262 0.20825 0.11143 0.11563 -1.71734 -0.61982 -2.04873 +0.40000 1.00000 0.25573 0.16207 -0.63295 -1.08577 0.72362 -0.39485 1.49596 -0.55991 -0.60471 -2.11945 1.55128 +0.90000 0.00000 0.18052 -0.21351 0.20711 -0.48678 -0.85576 1.05172 0.30428 -0.09626 0.53953 -1.03933 -0.83970 +3.00000 0.00000 0.02793 0.12199 -1.36668 0.16700 0.35381 -0.17582 -0.43478 -0.35462 -0.14964 -1.69213 -0.92712 +0.90000 0.00000 0.16021 -0.15461 0.15570 0.38001 -0.98717 1.33293 -0.06940 -1.49721 -0.06565 1.06423 0.23115 +0.90000 1.00000 0.40586 0.80580 2.42546 -1.27288 -0.69419 1.66917 -0.16038 0.66573 1.37608 -0.79586 0.24515 +0.40000 0.00000 0.26865 1.33105 0.03801 -1.15213 1.12074 -0.74539 -0.32116 0.72513 -2.13522 -1.25561 0.49580 +2.00000 1.00000 0.21050 -0.16289 0.85770 -0.00160 0.28418 2.06806 1.08917 -0.08028 -0.84072 -1.09703 1.72495 +0.40000 1.00000 0.39033 1.76717 -1.56853 -0.72620 0.76812 -0.58209 -1.88715 -0.50485 1.40082 0.04795 0.68152 +0.10000 1.00000 0.00824 -1.85646 -0.31127 -0.53295 0.15634 -0.40158 -0.58530 0.04320 0.65862 0.27053 -0.90698 +1.20000 0.00000 0.09005 -1.50235 -0.30499 -0.22438 -1.21412 -0.15676 -0.57837 0.33534 -1.58310 -0.64785 -0.46215 +0.40000 1.00000 0.34875 -0.08165 0.01447 -1.09632 0.59689 -0.45404 0.00261 0.65614 -0.68964 -1.84695 -0.68076 +0.50000 0.00000 0.14829 -0.71942 -0.25172 -1.14064 0.43252 -0.47800 -0.49941 -1.31965 -0.51106 -1.34027 1.08861 +0.20000 1.00000 0.05003 0.45574 -0.79000 -1.31688 0.32359 0.69657 2.00380 -0.67291 1.04042 0.79662 0.55335 +0.40000 0.00000 0.23937 -0.13889 0.29789 -0.44053 1.42137 -0.01961 1.08950 -0.18659 -0.02759 -0.47577 0.05874 +0.40000 0.00000 0.21439 0.14680 1.07376 0.05133 1.62393 -0.68644 -0.15040 0.05314 -0.24385 0.17771 0.06498 +2.50000 1.00000 0.51498 0.50826 -0.25636 1.52481 -0.08510 -1.36326 -0.44916 1.44823 -1.03232 0.76881 0.08556 +1.10000 0.00000 0.25231 1.20462 0.95526 -0.52231 -0.42703 1.13211 0.05326 -0.07102 0.17185 1.53996 -2.19026 +1.00000 0.00000 0.98569 0.98702 1.92112 -0.03646 0.34946 1.28712 0.49206 -1.21545 -0.71235 -0.71359 0.38280 +5.00000 0.00000 0.36514 1.32067 -0.11704 -0.48106 -0.77811 -1.08408 -2.12092 0.83713 -2.11381 -1.29369 -0.11984 +1.60000 1.00000 1.32106 0.45281 1.15010 -0.38257 -0.14682 0.50548 -0.19286 0.88510 0.17455 -0.46690 -0.50945 +1.40000 1.00000 0.85911 -0.04034 -0.01380 -0.63814 -1.75233 -0.44007 -0.03773 0.19444 -0.31070 -0.49794 0.40814 +0.90000 1.00000 0.58587 1.88058 0.85597 -0.15575 0.23587 0.56936 0.92463 0.16393 -0.15473 1.18872 0.31553 +0.20000 1.00000 0.06285 0.65085 0.07952 -0.39468 -0.27162 -0.02970 1.41836 0.99644 0.35638 -0.82518 0.28948 +0.20000 0.00000 0.13328 0.88066 0.92357 -0.23548 0.74230 -1.06651 0.14576 -0.38101 -0.61486 -1.42605 0.60168 +2.70000 1.00000 0.08387 0.02996 1.39130 -1.25240 -2.31088 1.02681 -2.07972 -0.11298 -1.04167 -0.26845 -0.93112 +0.70000 0.00000 0.65539 -0.44232 1.44002 1.09539 -0.92343 0.52742 0.34328 -0.49499 -1.82141 -0.08164 -1.04844 +1.00000 0.00000 0.06765 -0.51435 0.35253 0.05162 -0.12314 0.58341 -1.41368 1.44480 -2.08420 -0.01317 -0.58998 +1.00000 1.00000 0.98228 0.69296 -0.38748 -3.03333 1.48198 0.99655 -1.14103 -0.49212 -0.04090 -0.78186 -0.27604 +2.20000 1.00000 1.34919 1.10119 -0.74927 -0.78192 -2.18733 -0.85693 -0.26202 -0.67307 -0.50294 -0.59377 -0.73034 +1.60000 1.00000 0.00212 1.47734 0.08775 -0.28268 0.14385 2.08126 -0.90942 -0.49397 0.07878 0.98254 0.00707 +0.60000 0.00000 0.09344 -0.37725 1.17843 0.82059 0.92997 -0.15105 0.14470 -0.11988 1.45642 -0.83175 0.02936 +0.20000 1.00000 0.10328 -2.26922 0.61927 -0.25134 -2.68098 -0.72045 -0.19845 -0.21392 -0.37503 0.79806 -0.25884 +2.60000 0.00000 0.50782 1.53903 -0.44812 -0.32393 0.98989 -0.06916 1.49554 0.06975 0.03153 -0.98194 -0.52916 +1.20000 1.00000 0.45513 0.32838 1.25188 -2.09851 0.98918 0.04952 1.13006 0.90597 1.37279 -0.38600 -1.04595 +0.60000 1.00000 0.35639 -0.67578 1.09638 -1.23040 1.75229 -0.04410 1.26213 -1.57147 -0.78540 0.41686 -0.00986 +0.50000 0.00000 0.36988 -1.39016 -0.24428 0.26198 -0.24481 -0.73518 -0.86397 2.24318 -0.71250 -1.35094 -0.49509 +0.60000 1.00000 0.40236 0.30101 0.63237 0.09977 -2.76941 0.96387 1.24001 1.14469 1.51392 0.95184 -0.15668 +0.40000 1.00000 0.02408 0.46068 -0.41882 -0.85955 0.54199 -0.57839 0.29651 -0.46629 -1.06904 -0.06090 0.87713 +0.30000 1.00000 0.16792 -0.73542 1.11428 -1.55390 0.92762 -0.72227 1.02146 -0.30479 0.15083 -0.79652 -0.43373 +0.80000 0.00000 0.40446 -0.25013 0.31058 -0.05754 0.61603 0.27893 -0.51822 -0.15011 1.34840 -0.20528 -0.84129 +1.30000 1.00000 0.05395 0.85825 -0.79039 -0.12367 0.60386 0.23277 1.38423 0.12782 -0.17165 -1.62858 -0.50728 +0.10000 1.00000 0.06561 -0.74787 0.83250 1.21869 0.31120 0.42984 0.83367 1.82665 1.19822 1.44656 2.13144 +0.50000 0.00000 0.26208 0.12026 0.72387 -0.56642 -0.04395 -0.28445 0.58350 0.19922 1.05322 -1.05197 1.43254 +2.50000 0.00000 1.11054 -0.28665 -0.24169 0.49838 -1.37407 2.32539 0.17557 -0.69824 -0.02025 0.70325 -2.58334 +0.40000 0.00000 0.29083 1.08791 0.64187 1.05860 -0.03464 1.66297 -0.83809 -1.28946 -1.11165 -1.43971 -1.43796 +1.70000 0.00000 0.00721 -0.98468 0.84269 -0.99151 -0.43782 -0.89503 -0.28142 -1.75209 -0.86231 -0.57890 -1.13151 +2.10000 1.00000 0.85621 -0.73250 -1.36076 -0.68611 -0.77395 -0.89833 0.36684 -1.33476 -1.12834 -0.56608 -1.77733 +1.20000 0.00000 0.61570 0.91147 -0.55081 -0.08691 -1.04746 -0.07131 0.03792 1.11201 1.28873 -1.77679 -0.02380 +1.00000 1.00000 0.15255 -0.47531 -1.23875 -1.49602 -0.65709 -0.01216 0.13653 1.45879 1.56789 -1.24419 -0.56616 +1.00000 1.00000 0.57844 0.56142 0.22321 -0.38151 1.12601 -0.14809 0.25750 -0.35760 -2.44658 0.77886 0.79798 +1.60000 0.00000 0.13134 1.17711 -0.00153 -0.35729 -0.08114 0.80303 0.28242 -0.63011 0.92458 -0.04768 0.03576 +0.30000 1.00000 0.25482 0.86840 -2.13604 0.33549 0.69813 -0.51596 1.14897 0.56024 0.00702 -0.64625 0.88679 +0.90000 1.00000 0.37279 0.48398 1.63618 -0.15104 0.74800 -0.30662 1.33929 1.80634 -0.47085 1.05075 0.56652 +0.30000 1.00000 0.07819 -0.69857 1.60345 -1.09418 0.91919 -1.15945 -0.17044 -0.60929 0.16257 -0.61399 -0.61753 +2.30000 0.00000 0.82266 -0.03969 0.90091 0.79275 -0.83881 0.85156 0.13441 -1.07244 0.78396 -1.86042 -2.08783 +2.10000 0.00000 0.10269 -0.22147 0.17138 -0.11109 0.00791 -1.32245 0.21830 -0.72394 0.18492 0.71345 -0.01457 +4.00000 0.00000 0.64473 1.09809 1.59509 -0.16032 -0.17678 -1.69096 0.18298 -0.97594 0.52310 0.26912 -1.60245 +1.30000 0.00000 0.54456 0.25169 2.61494 -0.05461 -0.73199 1.50591 0.32816 1.06045 0.56472 -1.45963 -0.43340 +1.50000 0.00000 0.53025 -0.52032 -0.00102 1.36328 -0.88665 1.13605 -0.14806 -1.41825 0.34001 0.99299 -2.01239 +1.20000 1.00000 0.41996 -0.87343 1.99894 2.02539 0.06520 0.05161 1.59045 0.45069 0.25726 -1.69435 -0.23731 +1.00000 1.00000 0.24357 -0.70947 0.15322 0.93509 -1.26684 0.74673 0.78928 0.70138 -0.21798 -0.02413 1.05860 +0.80000 0.00000 0.70788 0.73869 1.24498 1.00648 0.73811 0.77425 -0.07284 -1.75906 0.61283 -0.53053 -0.22178 +0.60000 1.00000 0.06009 0.27084 -1.48376 1.14782 0.71793 0.06844 -0.59141 0.38953 0.41190 -0.77679 1.32401 +4.10000 0.00000 0.03828 -0.25272 -0.12265 0.41422 -1.46830 0.27749 1.04206 2.60620 -1.71512 -0.54826 -0.45283 +1.40000 0.00000 0.03796 0.71420 0.64172 -1.13408 -0.38212 1.23587 -1.17029 0.80903 1.28074 -1.24988 -0.35711 +1.10000 0.00000 0.19402 0.09967 -0.56727 -0.97914 1.29860 -1.49965 -2.35241 -0.71374 -2.09218 1.86614 -0.58044 +1.50000 1.00000 0.51801 -0.39962 0.86635 -1.36293 0.58049 0.62911 -0.59103 -0.05974 -0.70555 -0.78018 0.60184 +1.90000 0.00000 1.88043 -0.88199 -0.11815 -1.04093 1.85847 -0.19274 -0.77704 -2.33540 0.08945 -0.35394 -2.69119 +0.20000 1.00000 0.15595 0.60562 1.48918 0.43099 0.06393 -0.07581 0.46649 -1.33833 -0.82049 -0.94165 3.43839 +0.90000 0.00000 0.25145 0.82616 0.62646 1.79073 1.15053 -0.21066 0.00125 -0.64561 -1.69657 0.52132 0.61842 +0.80000 1.00000 0.66471 0.30569 -1.39972 -0.14317 -0.59371 -1.16552 0.77134 -1.24254 -1.30292 0.70176 0.74649 +4.90000 0.00000 4.55001 2.18727 1.19637 -0.32897 -0.55537 -0.92427 -0.82154 1.06001 -2.18391 -2.09248 -1.87160 +0.70000 1.00000 0.33560 -0.44312 -0.20496 -0.58961 -1.01931 -0.44845 0.41490 0.41336 2.30799 -1.12325 -1.72092 +1.30000 0.00000 0.29865 -0.06688 0.20624 1.46005 2.02106 0.81249 1.66394 1.62065 -0.11813 -0.73283 0.47006 +1.60000 0.00000 0.50000 0.11585 2.54301 0.55188 -0.62929 0.79657 -0.08640 -0.35044 -1.54259 -0.91203 1.08320 +0.20000 1.00000 0.08306 0.50298 -0.65719 -0.87988 -2.09282 -1.21821 1.82386 0.77197 0.25835 -0.75938 -0.13757 +1.10000 1.00000 0.12474 0.51475 -1.08226 1.05712 1.59329 -0.91517 -1.28442 0.03058 -1.44147 0.91908 -0.39751 +2.10000 1.00000 0.51022 -1.79828 0.36277 -1.11770 -0.06454 1.99851 -1.26503 0.59961 -0.29055 -1.82379 -1.39671 +0.70000 0.00000 0.04827 -1.02179 1.35722 1.87660 -0.06704 1.82421 0.59337 1.38163 -0.48889 -1.19013 -1.05711 +0.80000 1.00000 0.76346 -0.29050 -1.27119 2.01048 0.75332 -1.58214 -0.31968 -1.13548 -0.57071 2.01818 -0.86927 +3.80000 0.00000 0.25305 1.29259 -1.02173 2.20522 -0.04128 1.24868 0.89310 -0.79365 -0.77858 0.45330 -0.61013 +0.60000 1.00000 0.28222 0.24820 0.98382 1.52656 -1.65826 0.64915 0.45435 -1.12425 -1.55473 -2.06208 1.85741 +0.40000 0.00000 0.17713 -0.84474 0.23725 1.46575 -0.53415 -1.07761 2.03019 -0.71110 -0.48147 2.04229 -1.67436 +0.40000 0.00000 0.34505 -0.96393 -2.94909 -0.47932 -0.48042 -1.65673 -1.07543 -1.44406 -1.04268 -0.53088 -0.70941 +0.30000 1.00000 0.13348 -0.48924 1.47720 -1.21762 -0.64999 0.01509 -0.96161 0.09071 0.95351 1.41868 0.29067 +1.00000 0.00000 0.00132 -0.23096 0.43777 -0.68726 0.28643 0.06143 -1.38742 1.15771 0.01809 0.57870 -0.03210 +1.80000 1.00000 1.46976 1.73352 0.76974 -0.62489 -1.87723 0.70252 0.72642 -0.37934 -1.75897 -0.69750 1.51386 +0.20000 1.00000 0.07464 -0.03454 -0.33823 1.37363 -0.78753 0.13906 -0.36997 1.77425 -0.57284 -0.73531 1.13299 +1.30000 0.00000 0.42927 -1.45033 -0.01159 -0.31803 -0.24953 0.75364 -0.68244 0.66568 -0.22708 -0.90056 -0.96017 +1.30000 0.00000 0.53390 1.98346 0.52981 -0.51147 2.06130 -0.94455 -0.51270 -0.32023 -0.96324 -0.67638 -0.46340 +1.20000 1.00000 0.32307 0.06172 0.43329 2.51147 -0.30017 0.35182 -2.07269 0.62346 -0.23488 -0.35916 0.12418 +0.10000 1.00000 0.03816 -0.30701 0.47456 -0.20656 0.38566 0.45525 -1.12687 -0.47949 0.98767 -0.66273 -1.24309 +0.50000 0.00000 0.02244 -0.65000 1.27773 1.73768 0.72064 0.19683 -0.26524 1.17640 0.54623 0.79182 -0.24055 +2.80000 1.00000 0.86613 0.01881 -1.86253 -0.49297 0.19564 -1.39122 0.77280 0.94388 -1.41863 -2.36222 0.53213 +2.00000 1.00000 0.76248 -0.25303 1.41987 2.11070 -1.02312 -0.89568 1.56787 1.27826 1.12410 0.29699 -0.14126 +0.70000 1.00000 0.32474 -1.79160 -0.76991 -0.09087 -0.51056 -1.44735 -2.06473 0.67947 0.01794 0.62414 -0.59647 +0.70000 0.00000 0.40023 -1.57913 2.03268 0.02842 -0.24056 0.13391 -0.12009 0.16641 0.66416 -1.23855 -1.02672 +0.30000 1.00000 0.16448 0.25361 0.05384 -1.16742 -1.98690 0.92827 1.68456 -2.04426 0.55664 0.45098 0.93075 +3.90000 0.00000 0.34159 2.53176 0.43752 -1.80237 -1.36772 0.27904 1.20591 0.33834 -0.05038 0.73901 -1.35472 +0.60000 1.00000 0.58858 -0.38529 0.57508 -1.11289 -2.01318 -0.55322 -0.90015 -0.06835 0.20529 -0.52381 1.22507 +4.30000 0.00000 0.51366 -0.28177 1.75795 0.58593 -0.46891 -1.37246 -0.57434 0.81824 -1.36966 0.33548 -1.16849 +0.80000 1.00000 0.33019 0.22640 -0.35521 2.35335 -0.41426 2.58730 -1.03177 -0.88962 0.45918 0.95746 -0.92880 +2.40000 0.00000 0.98949 1.74745 -1.83826 1.35555 0.13616 1.13256 -0.50299 1.17732 -0.91825 -1.31371 1.02820 +2.20000 0.00000 0.09231 0.09080 1.90507 -0.29217 1.59130 -0.05046 -0.86981 0.45405 -1.10217 0.02812 0.13184 +0.20000 0.00000 0.07966 -1.43974 -0.11493 -0.95070 0.74915 0.83930 -2.45516 -1.16771 0.27741 2.34912 -1.56249 +0.40000 0.00000 0.34514 0.70947 -0.55311 0.32688 2.02732 0.57756 -0.33365 -0.76375 -2.31593 -0.57700 -0.14429 +1.90000 1.00000 0.78956 -0.95270 1.14595 0.52744 -0.88159 -0.69031 0.79890 -1.70431 -1.03652 1.48146 -0.20273 +0.40000 1.00000 0.17257 -1.22750 -0.12986 0.13171 -0.11249 0.48126 -0.31197 -0.89581 1.52334 0.90406 -2.18316 +1.60000 1.00000 0.08868 0.20544 0.56796 -0.97695 -1.60400 -0.89952 0.33984 0.97282 -1.63354 -1.24098 -1.25620 +0.40000 1.00000 0.03785 0.57257 -1.24143 -0.37641 0.26776 -0.00954 0.56400 0.29088 -0.02128 1.67143 -0.26501 +0.60000 1.00000 0.01584 -0.53790 0.07824 -0.15383 -1.50849 0.29570 0.28427 0.04375 -1.02929 -1.20228 0.82278 +4.00000 1.00000 0.17106 0.00500 0.42562 0.00820 0.40286 -0.76928 0.33832 0.28533 -1.33610 -1.98528 -1.32325 +1.30000 1.00000 0.35765 -2.15834 0.98873 0.73167 -0.53829 -0.10578 1.01708 -1.33831 0.39752 -0.81176 -0.54147 +1.10000 1.00000 0.83764 0.09426 0.07396 -1.34841 -0.35914 0.54657 1.75894 -2.08187 -1.49649 0.36832 0.45018 +0.20000 1.00000 0.09800 -0.39267 0.17101 -0.42922 1.76945 -2.36974 1.56871 0.93247 -0.40346 -0.62097 1.16240 +2.90000 1.00000 1.18789 -0.32376 0.13632 -0.15818 -0.31467 0.24390 1.08610 -1.03765 -1.45753 -0.13165 1.60378 +0.50000 0.00000 0.09217 -0.97897 1.53282 -2.03302 2.16523 0.84886 -1.75378 1.31784 -0.91588 -1.01981 0.03157 +0.50000 0.00000 0.20208 -0.14176 -0.42757 -0.77322 0.08286 0.56978 -1.24544 -0.39766 -1.09840 0.21440 -1.32115 +0.80000 1.00000 0.68498 0.76748 0.50557 0.53107 -1.07415 0.20162 -0.18405 -0.62453 0.31385 -0.04871 0.54313 +0.10000 1.00000 0.05662 -0.22507 -0.53241 1.92881 0.20577 0.05748 -0.19032 0.95843 0.35981 0.08875 0.88584 +0.60000 0.00000 0.43325 0.53165 1.73872 0.33418 0.78126 0.34597 0.73342 -0.82235 -0.18501 -0.97950 0.03559 +1.10000 1.00000 0.25777 0.28634 -0.22365 -0.32278 1.63391 -1.03647 2.04703 -0.64077 -1.08041 -0.41686 -0.15689 +0.30000 1.00000 0.06581 -0.37875 -1.30051 1.05990 -0.59542 1.07904 -0.08606 0.61069 0.20605 -0.06950 -0.70859 +1.50000 1.00000 0.20555 -0.90307 -1.56097 -0.86335 0.33615 -0.48511 0.27368 1.23660 -1.48686 0.62807 -1.16456 +0.20000 1.00000 0.15339 1.33886 -0.52687 -0.16687 -0.25357 -0.64926 -0.12737 -0.85968 -0.60375 -1.06853 -0.17955 +0.50000 0.00000 0.06808 0.46040 -0.70688 0.97132 -0.71513 -1.01288 -1.84373 1.33500 -1.36550 0.77659 0.49366 +1.40000 1.00000 0.85388 1.59344 -0.67070 -1.34720 -0.18590 0.38022 -0.87558 1.41293 -1.72103 -0.55148 -0.30543 +5.20000 1.00000 0.04487 0.65351 1.70152 -0.86462 0.01923 1.13323 0.13462 -1.65617 -0.36458 -1.46316 -0.28200 +0.40000 0.00000 0.10641 -0.20481 1.19887 0.84185 0.41577 -0.04928 1.66355 -0.56222 0.47190 -0.16582 0.04577 +0.90000 1.00000 0.18810 0.82276 0.40597 1.08601 -0.11988 0.61940 0.26188 -0.49425 0.26531 0.74612 1.51035 +0.10000 0.00000 0.02379 0.25234 0.55950 0.32496 -0.22454 -0.77136 0.91591 -1.19312 -0.47846 -0.46434 -0.15470 +0.90000 0.00000 0.84986 0.80877 0.43833 0.34500 -0.32691 0.16115 0.36772 0.69414 -0.79098 -0.80809 -1.41615 +3.90000 1.00000 0.32165 -0.41586 0.85432 1.53158 -0.83936 1.09195 0.10820 -0.86834 -0.97641 -1.25143 0.65003 +0.80000 0.00000 0.11147 -0.21177 -0.92316 -1.17554 0.00889 -0.68087 -1.24871 -1.12195 -0.57113 -0.82837 -1.39335 +1.70000 0.00000 0.84071 -0.19802 0.35640 -0.41051 1.65026 0.95552 -0.37154 0.30220 1.26828 -2.01960 0.30956 +0.10000 0.00000 0.03715 -1.25818 1.13948 0.95166 0.57223 -1.73394 0.89863 0.94146 -0.50548 -1.05034 2.02802 +0.40000 0.00000 0.05460 -0.02308 1.41744 -0.43765 -1.29931 1.44363 0.35405 -0.17328 0.19013 -1.35109 0.33481 +4.10000 0.00000 0.38343 0.06618 0.33604 0.54665 -2.44977 -0.35554 -1.21404 -1.54683 -0.27504 0.63557 -2.34753 +0.20000 0.00000 0.06616 1.37411 -2.57626 0.47728 -0.15419 0.50722 0.05922 1.54218 0.22007 -0.36973 -1.03960 +1.10000 0.00000 0.74278 1.76293 1.06214 -1.45747 -1.03015 -0.79088 0.49661 -0.14180 1.11732 -1.78525 -0.25641 +0.10000 1.00000 0.09018 -1.17833 -0.42911 1.92796 -1.18477 -0.28528 0.92847 0.09874 2.35734 0.21591 -1.61233 +0.50000 0.00000 0.36315 0.97437 -0.97670 -0.63666 -0.40240 -0.71595 -0.50576 0.81848 -0.64963 -1.28970 0.32739 +0.40000 0.00000 0.23530 0.54508 1.11671 0.29445 0.07313 1.99263 1.33511 1.46255 -0.51764 1.18931 -0.88122 +0.10000 0.00000 0.09599 -0.05714 2.05383 -0.25974 0.29634 -0.54251 0.17294 -0.64743 -1.50895 -0.96539 -1.14246 +1.10000 1.00000 0.31808 0.48416 -0.72865 -1.12265 -0.48306 2.39604 -0.38743 1.98006 -0.68995 0.89532 -2.97962 +1.20000 1.00000 0.44596 0.97161 -1.26740 1.50916 -1.23407 -0.02654 0.09319 -0.65811 -1.21880 -1.44422 -0.25493 +0.30000 1.00000 0.09737 0.18079 -1.58882 -0.59103 -1.01035 0.49572 -0.89363 -1.13579 -0.71677 0.50098 -1.23906 +0.30000 1.00000 0.18620 0.20475 0.10893 0.01789 -1.31510 0.90592 0.59078 0.22949 -1.17133 0.11467 -0.20652 +0.60000 1.00000 0.15191 -0.22353 1.21033 -1.27996 0.23349 -0.29629 0.82658 -0.76969 -1.36421 0.26695 0.64223 +1.30000 0.00000 0.42086 -0.34416 -0.17319 -2.25413 2.33164 0.92853 0.11798 -1.21293 -1.72135 -1.06921 -0.39895 +0.70000 1.00000 0.14569 1.94707 0.16729 -1.50234 1.00099 -1.54207 -1.00022 -0.44487 -0.24909 1.28355 0.01970 +1.90000 1.00000 1.66518 -0.34603 -1.80916 -0.23269 1.40987 2.19176 -0.16508 -0.07228 0.96494 -1.75104 -1.46848 +2.20000 0.00000 1.02268 0.10816 1.60395 0.28681 -0.46044 0.32585 -0.04200 1.01538 0.79377 -0.31247 0.44867 +3.60000 1.00000 1.97111 1.82589 2.20568 -0.41100 0.42343 0.76246 -1.03097 -0.27688 0.08538 -0.96135 1.94305 +0.30000 1.00000 0.09444 0.30562 0.02778 0.88851 0.23713 0.77082 -0.55814 -1.40150 0.07791 -0.16754 -0.39875 +1.40000 1.00000 0.54439 -0.60652 -1.31389 -0.76518 -1.22577 0.53733 -0.05864 1.19481 -0.22873 -1.93815 -1.87432 +1.50000 0.00000 0.41771 1.06979 0.22939 0.40016 0.07506 -0.69184 -0.09486 0.16931 1.34871 -1.29645 -1.59040 +1.50000 0.00000 0.30340 -1.58930 -0.33068 1.43427 0.67112 0.86815 -0.80432 -1.85202 -0.39385 0.51668 -1.12442 +0.70000 0.00000 0.23071 1.01588 0.74426 0.35911 0.62567 -1.51300 -0.51022 1.65414 -1.26030 -0.14278 -0.78036 +2.20000 0.00000 1.15447 -1.47262 1.45667 -1.26957 -0.74041 1.11352 -0.89508 0.82123 -0.63683 -1.00244 0.05598 +0.30000 0.00000 0.06623 1.37914 2.07736 -1.19992 1.21730 -0.83235 -1.46166 2.10318 -0.28655 -0.84602 0.89117 +2.30000 0.00000 2.22903 1.48135 -0.77557 -0.25199 -0.63230 -0.01732 0.20899 -1.14061 -2.63642 0.31232 -0.73527 +0.20000 1.00000 0.06019 -0.12359 -0.38824 -0.65217 0.03627 0.50653 1.79886 0.58246 0.26921 -0.36965 -0.69307 +0.70000 0.00000 0.10261 0.35756 -0.25503 0.55426 0.13836 0.08887 -0.64809 0.66928 -0.37372 0.88570 -0.23348 +0.10000 1.00000 0.04415 -0.46086 0.99164 1.02736 -1.53043 1.18125 0.92489 -0.33312 -1.62416 0.86570 0.29519 +0.50000 1.00000 0.20317 -0.59911 0.86187 -0.39832 0.04260 0.47536 -0.09966 -0.30217 -0.72322 0.24217 -0.64349 +0.50000 1.00000 0.07260 -0.04850 1.18515 -1.11816 -0.99904 0.21203 -0.40725 -0.29421 0.67663 -1.80576 0.41576 +1.00000 0.00000 0.24518 0.05909 0.43420 -1.55521 -0.28686 0.06605 -0.57593 -1.32388 -0.70928 1.42259 -0.37553 +0.30000 1.00000 0.00910 -0.40374 0.39255 0.58886 0.61965 -2.26197 0.05662 1.70065 0.37232 0.51850 0.93843 +0.60000 1.00000 0.34745 -0.88811 1.31655 -1.54552 -2.40226 -1.34754 -1.76844 -0.47407 0.85154 -0.74226 1.38132 +1.20000 1.00000 0.63103 -0.67947 0.11811 -0.37475 -0.80414 0.30605 0.21053 -0.38903 1.06666 0.08697 0.49228 +0.70000 1.00000 0.23364 0.48848 0.01212 0.21237 0.58374 0.73338 0.63102 0.47609 0.31864 -0.80829 0.86430 +1.50000 1.00000 0.56219 0.30272 0.01761 0.51313 0.57769 -0.36571 -1.55621 0.82909 -0.80239 -1.05614 1.23425 +0.30000 1.00000 0.02978 0.40024 -0.95542 -1.32411 -0.55884 0.74565 -0.12311 1.03639 -0.12748 0.22949 0.50609 +1.40000 0.00000 1.22862 0.86668 -0.68888 1.29509 -0.29101 0.85836 0.12009 0.40098 -1.16420 -0.17156 -0.67495 +0.20000 1.00000 0.05738 -1.23124 -1.02987 0.68446 -0.06570 3.36575 0.86665 -1.42831 0.46492 -0.73068 0.22897 +0.80000 1.00000 0.16919 0.56133 1.07240 -0.89110 0.69877 2.81483 1.19922 -0.11925 -0.06564 -1.48109 0.75791 +0.30000 1.00000 0.18558 0.38241 -0.16491 -0.00576 -0.65205 -0.45846 -0.64260 -0.23280 0.59299 0.36251 1.24109 +1.60000 0.00000 0.01498 1.68967 0.30575 -1.01363 -0.96981 0.99052 0.43194 0.71832 -1.26139 -1.54333 -1.13320 +0.70000 0.00000 0.43423 0.76978 -0.96305 -0.95035 -0.13328 1.74953 -1.52002 0.37449 1.42814 -0.13320 -1.29442 +0.60000 1.00000 0.18485 0.92965 -0.14109 1.29695 -1.34652 -0.08176 0.74003 -0.43832 0.73152 0.24496 0.33254 +3.70000 0.00000 2.95255 0.54527 0.19331 -0.23310 -0.46310 0.89368 -1.68701 0.30899 -0.48979 -0.67434 -0.78669 +2.40000 1.00000 0.48094 0.97852 -1.63861 0.62020 -0.85686 -0.60445 -2.75947 0.13742 1.00089 -1.33001 -1.05028 +0.30000 0.00000 0.00708 0.02154 1.69723 0.46318 -0.75377 0.14879 -0.68637 0.26277 -0.69576 -1.29452 -0.23038 +1.10000 1.00000 0.15960 -0.21766 -0.72201 -0.26364 -0.37505 1.84625 -0.09393 -0.06252 0.09583 -0.19264 1.01371 +1.90000 1.00000 0.08882 -0.52197 1.15204 -1.11571 -0.53267 -1.63407 -1.71492 0.54213 -1.02088 1.05812 -1.04395 +0.40000 1.00000 0.36079 0.42736 -1.18275 1.16549 1.54238 0.02735 -1.30506 -0.31750 -1.27544 0.14799 1.30120 +0.80000 1.00000 0.50191 -0.23418 -1.81871 -1.83992 0.73838 -0.11691 -0.13892 0.67277 0.71325 -1.25715 -0.07216 +1.10000 1.00000 0.44455 -0.30566 -1.00934 1.92578 0.29597 0.46875 -0.32722 -0.32893 0.39784 0.19719 1.84136 +2.70000 1.00000 0.49192 0.86658 0.31698 0.22295 1.24368 0.58487 0.14798 1.22008 -0.19706 0.03838 -0.52329 +1.50000 1.00000 1.01711 -0.53908 1.49873 -0.76347 1.07114 1.82934 1.11616 0.44015 -1.52748 -0.29103 -2.29367 +0.40000 1.00000 0.18532 -0.79525 1.82246 -1.14364 1.46896 -0.47801 -1.48947 0.28803 0.37365 0.41080 -0.48666 +0.20000 1.00000 0.19272 -0.43084 0.15281 -3.11921 0.65169 -0.25691 -1.06729 0.34670 -0.32153 -0.92867 -1.30902 +2.00000 1.00000 0.27611 -0.86599 0.22311 0.41819 -0.04104 -0.34045 0.35365 0.46491 0.24373 -0.51700 -0.85015 +0.50000 0.00000 0.16336 1.02960 0.75062 2.86097 -0.29534 0.92334 -0.05335 -0.75880 -0.20398 -0.30476 0.73377 +0.60000 1.00000 0.03304 1.79941 -0.58145 -1.77630 -1.14282 0.04521 0.08555 -1.61965 0.98524 -0.65615 -0.06223 +0.70000 0.00000 0.10595 -0.23564 -0.69703 1.70770 1.18673 -0.33833 0.09882 0.61622 2.91421 1.28657 0.02243 +0.60000 0.00000 0.36774 0.66831 -0.35946 -0.62385 0.60950 -0.58847 1.73244 -0.24128 -0.39720 1.39003 -2.64115 +0.70000 0.00000 0.57804 0.66675 1.74770 -0.24858 1.18713 -1.07882 0.53177 -2.74271 1.77775 -1.01000 -1.05979 +0.60000 1.00000 0.26226 -0.52038 0.27983 0.82319 -0.31648 1.37898 2.41627 -0.03081 -0.82105 1.60211 1.34683 +1.00000 0.00000 0.25264 2.47587 -0.18848 0.40920 0.96486 -0.71156 -1.24880 -0.16625 -0.84285 -1.09707 0.23039 +0.40000 0.00000 0.26197 0.65460 0.26917 1.14210 2.33431 0.70211 -0.39777 0.05974 -0.43724 1.36021 0.78501 +0.70000 0.00000 0.41036 1.16321 -1.34285 1.82774 1.34659 1.24493 -0.28306 1.24148 1.59091 0.08794 -1.05476 +0.70000 1.00000 0.39666 -0.44207 -0.70135 -0.99239 0.82748 -1.14605 0.12709 -0.80846 0.85338 0.91872 1.00616 +0.80000 1.00000 0.16094 -0.07681 0.60000 0.86898 -0.73290 -0.42338 0.39240 -0.16178 -2.60568 -1.30911 1.27321 +0.50000 0.00000 0.35531 0.56238 1.43256 -0.87227 0.44870 1.76032 0.02771 -1.68432 -0.96361 0.24338 -0.78420 +0.40000 0.00000 0.29202 0.12509 -0.08348 -0.56797 0.55897 -0.39280 -0.31256 0.37874 0.92309 -0.12348 -0.19223 +1.20000 0.00000 0.38037 -1.00185 0.63225 0.07632 0.44429 -1.20668 0.14976 -1.14726 -1.44174 -1.38378 -0.96465 +2.10000 0.00000 0.02910 0.70744 -0.05528 -0.20583 -0.18810 2.05575 1.20890 0.84783 0.55568 -0.11491 -1.45828 +0.40000 0.00000 0.27505 -0.83327 0.44127 -1.13874 0.62971 1.29126 0.40110 0.85790 0.63329 0.72086 -0.60926 +0.80000 1.00000 0.16881 -1.34532 0.23883 1.49950 -2.09200 0.82040 -0.02150 1.42669 0.84952 0.99146 0.55948 +1.40000 1.00000 0.44714 1.28849 -0.25198 -0.27115 0.51487 -2.35464 2.31350 0.73089 -0.73146 -0.43977 -0.12912 +1.30000 0.00000 0.23415 0.18362 0.60205 1.03603 -1.60066 -0.24351 -0.55586 -0.65988 -2.04841 0.07570 -0.43577 +0.60000 1.00000 0.50368 0.34333 0.85640 -1.32394 -0.92953 1.02876 0.20167 -0.63296 0.64270 1.91873 0.38832 +1.80000 0.00000 0.61057 -1.65877 1.12554 -0.26606 1.50156 0.43433 0.09446 -2.03239 0.74413 -0.18307 -0.86286 +0.60000 0.00000 0.37925 -0.36737 1.32977 0.31179 -0.67062 -0.86436 -1.86977 -0.21569 0.79177 -1.03118 0.41663 +2.80000 0.00000 1.01704 1.40630 0.72426 -0.87170 1.48526 -0.17506 -0.38057 -1.46860 1.27013 0.43667 0.97888 +0.80000 1.00000 0.58522 0.02654 0.50204 2.09890 -1.25687 0.84987 0.14864 1.28587 0.17635 0.30118 0.52974 +1.10000 0.00000 0.87524 -0.19427 0.44220 0.00473 0.26974 0.20123 -0.16820 -1.10154 -1.25945 -0.78721 0.58918 +1.10000 1.00000 0.70172 0.42463 0.39561 -0.76338 -0.38576 -0.77086 0.57272 -0.88044 -0.24050 -0.27816 -0.26400 +0.20000 1.00000 0.19768 -0.55493 -0.29148 0.54635 0.94974 -0.30173 1.56025 1.05636 -0.21752 0.62401 0.19693 +1.10000 0.00000 0.66687 2.77543 1.56340 -1.37234 0.11934 -0.20807 -1.53108 1.15961 -0.37652 0.21921 1.35224 +0.30000 1.00000 0.05775 1.08075 -0.29643 -1.26057 0.39036 -1.14641 -0.79128 -0.49078 0.60600 -0.16376 1.08404 +1.00000 1.00000 0.22631 -0.33606 -0.79474 0.35852 0.02228 0.46522 0.05359 1.14539 -0.08795 -0.93939 0.42788 +1.10000 1.00000 0.03291 0.56848 -1.27717 -0.76133 -0.15171 0.32964 -0.73571 -0.78845 -0.38973 1.02191 -0.48356 +1.10000 0.00000 0.06031 1.85709 0.52715 1.01327 1.01465 0.26333 1.33086 0.14318 0.07157 -1.56031 0.58350 +0.60000 1.00000 0.05097 -0.68838 1.29713 -0.26017 0.07404 -0.38291 -2.49437 0.54077 -0.07551 -1.35154 0.78454 +2.30000 1.00000 0.05344 1.65953 0.45679 -1.32345 -1.03592 -0.60036 -0.79165 0.62929 0.97899 -0.39623 -1.29818 +0.70000 1.00000 0.02965 0.03959 -1.20625 -0.23343 1.05328 0.87502 -0.15248 -0.32533 0.72749 -1.26521 -1.17767 +0.20000 1.00000 0.07715 0.25784 -0.95262 -0.79153 -0.72362 0.46171 0.71930 -0.16597 -0.24901 0.03209 -0.16496 +0.20000 1.00000 0.14467 -0.33230 0.48615 -0.69146 -0.78178 0.39621 -1.56788 -0.45223 -0.05965 1.25237 0.56787 +0.60000 1.00000 0.27879 0.69609 0.44461 -1.51477 -1.66483 0.21163 -1.16935 -0.08795 0.13717 1.48144 1.26439 +0.10000 1.00000 0.07556 -0.26552 0.11730 -0.44872 0.41289 -2.32189 -0.70022 -2.05216 -0.86669 0.17349 1.90747 +0.70000 0.00000 0.02525 2.16957 0.30937 1.14120 0.24587 0.24798 -0.73417 -1.23944 0.35338 -2.58042 -0.38128 +1.10000 0.00000 0.16669 0.88975 0.82331 -0.04727 -0.64710 -1.59539 0.22567 0.19827 0.72699 -0.72544 0.36081 +0.30000 0.00000 0.06345 -0.23706 1.02425 0.16055 0.12936 -0.47650 -1.21782 -0.47494 -1.07564 -0.16270 0.63968 +1.00000 0.00000 0.15282 0.42541 0.30152 -1.37985 -1.18106 -2.14608 0.14508 0.61416 -0.80184 -1.44954 1.59978 +1.40000 1.00000 0.28213 0.58182 0.46641 1.44368 -1.10098 -0.45817 -0.34523 -2.61224 0.06026 0.76760 0.27392 +1.60000 0.00000 0.06547 -0.54910 0.70470 0.01480 -0.06198 0.18259 0.24841 1.13554 -0.84216 -1.25357 -0.41991 +1.90000 1.00000 0.51199 -0.69189 -0.90078 0.39557 0.74392 -0.97501 -0.83488 2.32745 -1.11841 -0.51439 0.07481 +2.40000 0.00000 0.31976 0.02618 -0.78191 0.87628 -0.67385 1.15751 0.42163 0.53327 -0.83535 -0.85036 -0.95917 +0.90000 1.00000 0.74640 1.55302 1.89228 -1.61221 -0.48660 1.79421 0.61170 -0.75155 -0.32029 2.21272 -1.04258 +0.50000 1.00000 0.26175 0.28585 -0.45489 -0.61398 -1.05470 1.07746 -0.60834 -1.02210 0.41624 0.86252 1.47063 +1.00000 1.00000 0.64502 -0.12312 -1.79579 0.50137 1.45061 0.61493 -0.02007 -0.60891 0.51547 0.92811 -0.33788 +1.30000 1.00000 0.80265 -1.37542 -0.26297 2.09879 -0.00351 0.45448 -0.41667 -1.43744 -1.53054 1.80732 1.59153 +0.60000 1.00000 0.25324 -0.02814 -0.63317 -0.09116 0.43140 0.55783 -0.58842 -0.90600 0.62258 0.46047 -0.85758 +1.00000 1.00000 0.39402 -1.09843 0.99823 2.27311 0.46028 0.45919 0.92991 0.23911 1.49684 1.96261 0.36582 +0.30000 1.00000 0.07926 -1.04564 -0.27685 0.84065 -0.32837 2.22589 -1.32717 -0.97275 -0.73124 -1.62926 -0.46236 +1.30000 0.00000 0.33045 1.87360 -0.02195 -0.16502 0.35821 1.76992 0.13413 -0.22290 1.05247 -0.58776 1.21437 +0.20000 0.00000 0.10435 -0.75156 -2.29416 0.22825 -1.12098 -0.91088 -0.23812 1.00334 0.56760 -0.20531 -1.23599 +0.60000 0.00000 0.36732 -0.69411 0.81095 -0.47137 0.62931 -0.32337 -0.06992 -1.10499 -0.25500 0.09929 -0.92840 +1.40000 0.00000 0.76631 -0.78140 -0.25584 1.53003 2.03798 -0.34945 -0.16929 0.26312 0.10000 0.02794 -0.00948 +1.50000 0.00000 0.06733 0.53766 0.40326 0.82031 0.21465 1.02957 0.54347 0.95339 -1.97462 -1.05630 -0.45600 +0.50000 0.00000 0.24223 1.85029 0.61634 0.62910 0.50682 1.13604 -0.69570 0.26418 -1.37967 0.70669 -0.43523 +1.30000 1.00000 0.37336 -1.29753 0.50107 1.75459 -1.16314 -0.54525 -0.10143 1.24405 0.67155 -0.52167 -0.11878 +0.50000 0.00000 0.07106 2.12202 0.76369 0.81639 -1.77220 0.90257 -0.18242 1.17917 -2.08409 0.07743 1.45724 +1.50000 1.00000 1.33600 0.82680 0.67065 -0.05326 0.24611 2.07696 -1.40406 -0.20733 0.05926 -0.42020 -0.95597 +0.40000 0.00000 0.34550 -0.25440 -0.97131 0.36240 0.11971 0.24911 1.01494 -1.28954 -0.35238 0.62207 0.28115 +0.30000 1.00000 0.01488 1.21505 -0.43028 -0.68456 0.72715 0.46417 -0.64609 0.54488 -1.33192 -0.70566 -0.64724 +0.90000 0.00000 0.03922 0.57200 1.16872 0.25874 -0.08039 0.35416 0.74137 2.04949 -0.84877 -0.31533 -1.47607 +0.60000 1.00000 0.08834 2.10652 0.56966 0.33619 -0.13360 -0.18783 1.67968 -0.99161 0.48155 0.06802 -0.82418 +1.60000 1.00000 1.33519 -0.87406 0.93290 -2.17732 2.05212 1.14997 0.51834 -0.00867 2.00103 1.16283 -0.78923 +0.40000 1.00000 0.05996 -1.61561 0.15345 1.46676 0.12240 0.37244 -0.82519 -0.37693 -1.06016 0.77975 0.07423 +1.50000 0.00000 0.04413 -0.88606 1.19963 0.44104 0.53512 -0.05849 -2.17100 0.15317 2.64799 -0.13835 -0.13782 +0.40000 0.00000 0.34581 0.32908 -1.75037 -0.59766 -0.74881 2.18127 -0.25403 -0.39932 -0.55599 1.06882 -1.89765 +0.30000 1.00000 0.25746 -1.14545 2.50999 -1.01220 0.47534 -1.37337 0.30691 1.37530 0.52817 3.19339 0.92182 +5.10000 0.00000 0.26463 0.13412 1.41079 3.04814 0.35265 -0.36482 -0.64066 0.45780 -2.40603 -2.17158 0.11866 +1.10000 0.00000 0.59284 0.75163 0.65135 -0.32943 -0.23359 0.71832 0.29820 0.39837 -0.76137 1.11751 -0.61503 +0.50000 0.00000 0.33309 0.05292 -0.05893 -0.67264 0.46089 -0.34511 -0.17258 -1.71515 0.05140 -0.34454 0.98849 +1.80000 1.00000 1.26634 -0.52267 0.01760 2.25378 0.39503 0.75326 -1.17579 -2.53208 -1.40630 -0.00482 -0.97690 +0.30000 1.00000 0.28270 -1.03676 -1.19865 -0.66702 -1.04964 0.57615 -1.07737 1.44819 -0.56458 -1.62348 -0.67231 +0.20000 1.00000 0.01412 -0.71334 0.85943 -1.25346 1.09575 -1.37493 -0.84064 0.01937 2.00551 1.05360 0.58635 +0.40000 1.00000 0.31986 -0.03195 -0.56915 0.08665 0.26618 1.07300 -1.36366 -1.32446 -0.33261 0.50225 0.11000 +0.20000 0.00000 0.02486 0.22875 1.63079 0.68824 -1.06388 0.98348 -0.37465 -0.50038 -0.29531 2.18982 1.47527 +0.50000 0.00000 0.11864 -0.40742 -0.84861 -0.16081 -0.02666 0.11045 0.90540 0.37544 -0.14375 -0.39189 -1.63674 +1.40000 1.00000 0.09757 -0.13485 1.76720 0.21105 0.16459 -0.93362 0.31777 0.09455 0.60130 0.89475 -1.32670 +0.10000 0.00000 0.08406 0.55620 -0.17467 -1.83024 0.11848 1.01231 -0.69249 -1.57369 0.27931 -1.57904 1.07757 +0.90000 1.00000 0.63911 1.44543 0.15343 0.33354 1.04460 0.50516 -1.59591 -0.14296 0.47574 0.11010 -0.06523 +1.80000 0.00000 0.46641 1.15590 -1.23889 -1.01301 1.27947 -0.20298 -0.37144 0.36477 -0.13682 -1.35770 0.04677 +2.10000 1.00000 1.75136 1.31666 -0.30418 0.92202 -1.06392 -0.87338 1.00800 0.43891 -0.91890 -0.22154 -0.92136 +0.20000 1.00000 0.00545 0.76695 0.45929 1.74199 0.96696 -0.82960 0.65998 0.94424 -0.73492 0.60788 0.63396 +1.10000 1.00000 1.03994 -1.08527 0.42661 0.39781 0.61153 -0.43964 0.49523 -1.13553 1.73268 0.89120 -0.38470 +0.50000 1.00000 0.08972 0.00988 -2.14543 1.29159 -0.29460 -0.02035 1.13870 1.71403 -1.59351 -0.11769 2.06649 +0.60000 1.00000 0.12654 -0.78540 -0.00644 0.70118 0.72344 -0.85871 0.09888 0.62861 0.05650 -1.98635 -0.42252 +0.50000 1.00000 0.33337 0.97873 -0.66409 1.98127 0.49228 -0.69633 -0.24924 1.42018 1.65520 1.19693 0.50347 +1.00000 1.00000 0.12364 -0.64832 -1.23510 0.47855 -1.01020 0.23835 -0.70306 -0.48816 0.69794 0.11049 -1.95860 +0.90000 0.00000 0.26414 1.06230 1.25233 -0.39951 -0.31236 0.00951 -0.88479 2.32833 -0.06709 -1.57866 -2.00259 +2.40000 1.00000 0.39908 0.12305 0.26308 1.95116 -0.67976 -0.78978 1.04071 -1.54090 1.49777 -0.10349 -0.68031 +1.50000 0.00000 0.01356 0.91829 2.39225 0.60798 1.60527 2.00554 -2.03352 -0.88303 0.00103 -0.99155 -0.31312 +1.50000 0.00000 0.64626 0.68993 0.80640 1.88628 -0.66298 1.39376 0.81993 -0.42329 -1.16420 -0.31526 0.50955 +0.20000 0.00000 0.13333 0.03358 -0.05923 0.16423 -0.92117 1.28458 -1.47045 -0.97136 0.84685 0.79988 -0.46545 +0.30000 1.00000 0.02038 0.16597 1.37733 -0.24851 0.17968 0.44537 0.68133 0.85406 0.34099 0.26101 1.08751 +0.20000 0.00000 0.16251 0.50442 0.32154 -0.61463 -0.43600 -0.00111 -0.06977 -0.53232 0.15685 -0.97582 -0.67575 +0.40000 0.00000 0.13751 0.64972 -0.36746 -1.03217 -0.56799 -0.03231 -1.26422 0.41095 -0.42200 0.40184 0.05551 +0.40000 1.00000 0.00089 0.24981 -1.53588 -0.48457 -1.11811 -1.64126 -1.75437 -0.98867 -0.28589 -0.71661 0.23349 +1.30000 0.00000 0.30937 -0.46314 2.08028 0.11277 -1.54435 0.88982 -2.49764 -0.01824 -0.45486 0.29212 -2.02819 +0.30000 1.00000 0.16254 -0.12904 -2.01584 0.71360 -0.50288 1.27402 0.14292 0.04879 -1.28041 0.19426 0.01027 +0.70000 1.00000 0.53082 0.40244 -0.99249 -0.71075 -1.28208 1.44183 -1.84479 1.55882 -0.38284 -0.44362 -0.27852 +1.30000 0.00000 0.71095 1.71627 -0.46062 -1.88211 -0.47165 1.36392 2.07475 -2.01694 0.93823 -1.66597 -1.06221 +0.60000 0.00000 0.13651 -1.13685 0.92552 0.73492 0.01293 1.03851 1.01272 -0.56071 -0.02040 -0.19000 -1.03889 +0.50000 0.00000 0.35141 -0.58718 -0.30778 0.60764 -0.60205 0.39853 1.07350 -0.51198 0.85798 0.44821 -0.79363 +2.80000 1.00000 1.78380 0.40894 0.87931 -2.11254 0.80739 -0.05098 0.99256 -2.28316 0.65757 -1.53557 0.85914 +0.10000 1.00000 0.07518 0.27122 -4.28129 0.88633 0.06429 0.55236 -2.26649 -0.09479 1.10333 -0.56349 0.19594 +2.20000 0.00000 0.34588 0.38674 1.13226 0.01634 -0.90998 0.61789 0.69106 -1.72046 0.41759 0.45265 -0.73726 +1.50000 1.00000 0.58904 1.81615 1.19605 0.31631 0.60792 -1.86672 -1.97266 0.50723 0.85712 0.55522 0.39553 +0.30000 1.00000 0.22478 0.48438 0.26414 0.28914 -1.92698 0.07797 -0.07691 0.79481 0.59357 0.68260 0.09654 +0.90000 0.00000 0.25535 1.74668 -0.64495 0.69181 0.36440 0.85196 0.38787 -0.60530 1.61747 1.05564 -0.84156 +0.40000 0.00000 0.12480 -1.06153 -1.17263 1.38251 1.87147 0.55931 2.00665 -0.89662 0.85719 -1.17704 -1.55083 +1.30000 1.00000 0.13271 3.00705 -1.41460 -0.48025 0.59395 -0.21921 -0.29379 -0.24449 1.45330 0.02747 -0.58060 +0.20000 0.00000 0.00505 -0.07486 -0.65281 -0.93902 1.14833 0.71271 0.14756 -1.56016 -0.29277 0.28736 -0.34043 +0.70000 1.00000 0.67732 -0.40952 -0.68376 -0.87619 1.89463 1.18323 -1.44832 0.56353 2.00290 1.35504 -1.05613 +3.20000 0.00000 0.29503 0.88971 0.22497 1.56492 0.42225 0.74103 0.60593 -0.08908 -0.50431 -0.38413 0.30298 +1.50000 1.00000 0.05628 -2.11303 0.64400 0.56280 0.35071 0.81488 0.43878 -0.02028 -0.53337 0.32938 0.53034 +1.00000 0.00000 0.23852 0.21420 2.70581 -1.28932 -0.40020 -0.33500 -2.25368 -0.96797 0.03641 0.75505 -1.05100 +1.60000 1.00000 1.55312 1.11881 1.15675 -1.49225 -0.75384 0.85856 -2.38032 -0.52799 -0.38720 0.44284 -1.09770 +0.30000 0.00000 0.16417 0.84471 1.67024 0.28032 -0.11703 0.01729 -0.33659 0.44464 -0.48609 -1.43478 -1.10533 +0.40000 0.00000 0.38878 0.25018 -1.81263 0.41631 -1.35944 -0.32341 0.79223 0.07969 0.17568 -0.11963 -0.66163 +0.10000 1.00000 0.09020 1.19639 -0.17255 -3.05011 0.52214 -1.40297 -1.85855 0.36818 1.20778 -0.05550 -0.39432 +0.50000 1.00000 0.08286 0.16583 -2.85797 -2.13444 0.19610 0.58546 0.24302 0.27340 -0.89831 0.50451 0.30632 +0.50000 1.00000 0.46690 -0.74182 0.24749 -0.19593 -1.68545 0.09314 0.85276 1.80962 0.64536 -0.25289 0.85565 +2.50000 1.00000 1.24275 -0.95310 -1.19651 2.04548 0.13033 -0.24891 -0.50271 1.07562 -1.33959 -1.54481 -0.14229 +0.60000 0.00000 0.00162 -0.48540 1.27942 0.39851 -1.29531 -1.78363 -1.25128 1.19022 0.19736 0.40237 0.00464 +0.50000 0.00000 0.47978 1.14906 2.35086 -0.01336 0.24353 -0.85233 2.19241 1.87584 0.74348 -0.15398 -1.35875 +1.60000 0.00000 0.83540 0.41346 0.57446 0.60020 0.73843 1.13872 -1.14596 -1.81776 1.08234 1.23742 -0.00912 +1.00000 1.00000 0.39238 0.78714 -1.15406 -0.01149 -0.89360 -0.31185 0.23603 -0.14287 -1.20509 -0.63626 0.23496 +0.40000 1.00000 0.22932 1.19201 -1.79624 -1.20914 0.90484 -0.52639 -0.03425 0.93120 0.36421 0.17059 -0.40441 +1.90000 0.00000 0.33455 1.08918 -0.33909 1.47293 0.54585 -0.06239 0.05630 -0.22977 0.53350 -0.55551 0.66178 +1.60000 0.00000 0.37621 0.78190 0.97165 0.73326 -0.92309 1.37658 -0.38202 1.46972 -2.25818 0.24831 -1.02949 +1.40000 1.00000 0.91462 -0.60409 0.93696 -0.04410 0.84150 -0.44904 0.45368 1.16737 -1.78301 -0.77877 1.24704 +0.70000 0.00000 0.29242 0.16529 -0.06630 -1.67002 0.38315 1.13243 -0.44820 0.14350 0.80552 1.53047 -0.41404 +1.20000 0.00000 0.52353 1.37875 0.29189 0.98684 0.99558 -1.57262 -2.12467 -0.56055 -0.59049 0.45497 -0.19754 +0.40000 0.00000 0.22202 -0.10178 0.20615 0.84635 -1.99647 0.57385 0.37942 0.88262 -0.46804 0.60924 -0.29997 +1.10000 0.00000 0.41794 2.17689 0.82653 -1.03350 -0.88846 -1.14905 -0.86329 0.38111 -0.44506 2.00224 0.43542 +0.80000 1.00000 0.39364 -0.32210 1.28561 0.34433 -1.50234 -1.26956 0.65338 -1.29827 -0.48401 1.60299 -0.74341 +4.00000 1.00000 0.98969 -0.34101 -0.60080 0.06915 0.51836 1.21091 0.47849 -1.10326 -1.05685 -1.03143 0.18055 +1.00000 0.00000 0.90590 0.25514 1.65554 0.16209 -0.13374 -1.03363 -2.01831 -0.67901 -0.85368 -1.81320 -0.28722 +0.40000 0.00000 0.21081 -0.54098 0.10138 -0.22070 -0.08606 -0.42218 1.03756 -0.27246 -0.36876 -0.78952 -1.08489 +0.20000 0.00000 0.13828 -0.96117 0.47433 0.24447 -0.70030 0.11369 1.16737 -0.80770 1.49076 -0.12406 -1.59043 +0.80000 1.00000 0.12202 0.74596 -0.24531 0.54572 -0.10665 0.07680 0.26508 -1.06567 1.04586 0.31198 -1.41367 +0.30000 1.00000 0.25208 -0.07404 -0.44578 0.42996 -0.28075 0.77125 0.34017 -0.53095 1.50089 -0.81629 0.61118 +1.80000 1.00000 0.28969 0.99552 -0.21105 -0.80714 -0.30339 0.42895 0.93787 -0.62111 0.71874 0.17927 -1.17789 +0.20000 1.00000 0.09551 -1.31459 0.84464 -0.66937 0.44394 -2.13913 -1.29136 -0.05275 0.23158 -1.04863 0.20961 +0.30000 0.00000 0.07967 -1.19840 -0.35907 0.41803 -1.07588 -0.34742 0.37793 0.21856 -0.09171 -1.64007 0.83137 +1.30000 1.00000 0.13362 0.46965 -1.45436 0.27316 0.01224 0.07646 -0.61689 -1.31178 2.37356 -0.72240 -1.84551 +0.90000 0.00000 0.22978 1.07550 0.03460 0.48814 1.29976 -1.51491 -3.38835 0.92320 0.46141 0.99877 -1.22213 +0.50000 0.00000 0.05036 -1.58118 -1.57934 0.26098 1.10015 -0.19725 -0.62294 0.52212 0.33005 -1.67839 -0.95211 +2.20000 0.00000 0.91167 0.69526 1.50346 -0.70735 -0.11493 0.63969 -0.01937 1.25464 0.47468 -0.74265 0.20561 +0.90000 1.00000 0.42427 0.75899 -0.65319 -0.04288 1.46623 0.48924 0.71334 0.22965 1.07418 -0.30665 -0.84372 +0.30000 1.00000 0.06147 -1.56923 0.94396 -0.12646 -0.43048 1.56284 2.09311 -1.03756 0.99414 1.49938 1.03866 +1.70000 1.00000 0.25100 0.14047 -0.74003 -1.45033 -0.26153 -1.50387 1.29943 -0.86091 -0.36554 -1.29513 1.52962 +4.40000 0.00000 0.32942 1.32746 1.00420 -0.71990 1.20009 0.87834 -1.71544 -0.68379 -0.11221 0.48723 -0.63348 +0.70000 1.00000 0.13560 0.64594 0.61537 1.94771 0.11091 -0.68565 0.55190 -0.39501 -0.17320 0.90919 -2.08481 +1.70000 0.00000 0.04717 -1.09383 1.18015 -0.73934 -0.09232 0.29285 -0.98540 -0.35405 0.44810 0.07289 -0.62932 +1.10000 0.00000 0.23078 0.85090 0.63335 -0.03785 -0.55746 0.45344 0.09699 -1.29180 1.23401 -0.60007 -1.02535 +0.80000 0.00000 0.12034 2.21850 0.87388 0.19292 0.61909 -0.89292 -0.87292 1.29240 -0.11491 0.66028 1.64331 +1.20000 0.00000 0.95202 -1.81890 1.58176 -0.19033 0.46804 0.05786 -0.90988 -1.14080 -0.09807 -0.24006 0.41607 +0.70000 0.00000 0.31940 0.46317 0.10655 -0.67408 1.81905 1.26492 1.18509 -0.39472 -0.30847 -1.17871 -0.18878 +2.60000 1.00000 2.02613 0.40194 1.55680 1.95927 -1.31427 -0.93531 2.20151 0.80673 0.26105 0.82798 1.12152 +1.00000 1.00000 0.61576 0.10650 -0.42225 -1.35763 -0.00213 -0.76918 -0.29396 -1.86067 0.93234 -1.19190 0.11639 +0.80000 1.00000 0.74511 -0.30872 -0.97375 -1.78367 1.28642 0.69567 -1.92366 0.34152 -0.47503 1.04171 -0.89989 +4.90000 1.00000 0.28029 1.48855 0.35614 0.60478 0.00684 -1.02979 -1.90796 -0.17927 0.65485 -2.30098 -0.41594 +0.10000 0.00000 0.08143 -0.16006 1.80277 0.45806 1.38994 0.50297 1.55319 1.34315 1.13998 -0.48779 1.04333 +0.10000 0.00000 0.06023 0.54413 -0.70422 0.47188 0.64782 0.09877 -0.51145 1.28702 0.91665 -1.39462 -1.20926 +0.20000 1.00000 0.10526 -0.28955 0.42217 -1.14242 -0.70005 -0.93001 -0.56345 1.32146 -0.48733 -0.93196 0.09941 +0.60000 1.00000 0.43489 -2.02256 0.66920 -1.56842 0.89555 -0.66555 -2.70800 -0.17851 -1.39412 -1.77624 0.82096 +1.80000 0.00000 1.03480 1.85153 -1.12742 -0.07151 -1.23791 -1.00928 -1.59943 -1.60286 -0.57055 -0.62804 -0.64059 +0.80000 1.00000 0.23901 -1.24141 0.77820 1.35702 -0.89363 -0.37167 -0.09871 -1.10999 0.04325 1.32833 -0.12358 +0.30000 1.00000 0.23840 1.34375 -0.24944 -0.56804 -0.01729 -0.01459 -0.91655 0.51111 -0.55985 0.15389 0.55761 +0.20000 0.00000 0.14030 0.99975 -0.05193 1.17802 1.45690 0.21105 0.45639 1.54164 0.40413 -0.12875 0.99402 +0.90000 0.00000 0.23075 -0.55732 0.21688 1.74393 -0.73664 0.76383 0.84067 -0.21642 -0.37900 -0.28392 0.21249 +0.20000 1.00000 0.15962 -1.85125 -0.04542 -0.53680 -0.93261 0.43582 0.84837 -0.71793 0.66285 -0.09343 2.00718 +1.40000 0.00000 0.18759 0.07323 0.03251 -0.01383 -1.29285 -0.04571 -0.64333 -1.67534 0.01019 0.20085 -1.83775 +0.90000 0.00000 0.16803 -0.93816 0.78426 1.89771 0.94930 2.38794 -1.73227 0.29806 0.55420 -0.16552 -0.15369 +1.30000 0.00000 0.03552 1.59796 1.92038 0.37003 -0.17195 0.21306 -0.69622 1.03631 -0.20924 -0.88397 -0.34574 +0.90000 0.00000 0.43642 -0.50980 -0.75899 0.08118 -0.83118 -0.38488 -1.13018 0.15689 2.32973 -1.04900 -1.60287 +0.50000 1.00000 0.12780 -0.23931 1.38449 -0.94944 -2.06116 2.14355 0.06903 -0.28626 1.13890 0.25855 0.30637 +1.10000 0.00000 0.75563 1.50119 -0.32184 -0.72249 -0.43277 -1.34307 -0.67825 -0.28042 -0.37069 0.55922 -1.01260 +1.50000 0.00000 0.28788 0.92739 -2.51551 0.19490 1.74565 0.50182 1.37850 1.45755 0.45444 -1.21652 -0.64401 +1.10000 0.00000 0.40413 -1.28265 0.74659 0.19949 0.68555 0.05472 -1.03002 -1.38263 -1.27682 -0.20981 -0.76057 +1.20000 1.00000 0.21942 -0.75840 -1.17412 -0.43697 -0.45779 -0.63898 0.18897 -0.22358 -0.70419 -2.81118 -1.47082 +1.60000 0.00000 0.37203 -1.16151 -0.05004 1.84744 1.13460 -0.89025 -0.66386 1.12333 -1.26422 1.26459 -1.32946 +1.00000 0.00000 0.01331 -0.02732 0.38790 0.75666 0.07481 1.23249 -0.70972 -0.79522 0.09631 0.86061 1.74791 +0.70000 1.00000 0.54781 -1.00074 0.56679 1.27043 -1.56489 -0.07539 0.31941 -0.50400 -0.92011 0.89521 0.36677 +5.70000 0.00000 0.17479 0.73355 1.99711 1.52267 0.47643 0.93417 -0.10097 -0.51725 0.08378 0.45305 1.37353 +0.40000 1.00000 0.21160 0.61651 -0.24566 1.48645 1.68523 -1.04572 -0.67812 0.41917 -0.22586 -1.10162 1.73258 +0.20000 1.00000 0.02043 -0.17701 0.10301 -1.81734 1.35039 1.36324 -0.09084 -1.67290 0.81477 -0.55956 0.27979 +0.60000 1.00000 0.32950 0.62082 -0.29587 1.52326 -0.63835 0.23712 1.88248 -1.19362 -0.20318 2.13993 -0.81971 +0.60000 1.00000 0.59405 0.10532 0.16113 -1.69580 -0.28350 0.04813 0.31768 0.72608 -0.41136 0.28512 -1.28940 +0.80000 1.00000 0.72170 1.12852 -0.54076 0.13377 -0.00002 0.21215 -1.03546 -0.98618 0.82347 -0.87487 0.63823 +0.30000 1.00000 0.21974 -0.46481 0.53126 0.63008 -1.38003 -0.12139 0.02774 0.51898 -0.87177 -0.54949 -0.66415 +0.10000 1.00000 0.03627 0.10696 -0.10916 -0.11752 -0.19361 -2.30936 0.93317 2.30560 0.51606 0.16634 -0.24312 +0.50000 1.00000 0.32980 1.48661 -0.41317 -0.68008 -0.48764 -1.25027 0.19341 0.56844 1.24405 1.15429 -0.42824 +3.70000 0.00000 0.87372 1.46699 0.04080 -1.98177 -1.27554 0.92360 -0.06995 0.90832 0.93749 -0.62304 -1.12554 +2.10000 1.00000 0.65144 0.85992 -1.58531 0.59607 0.17593 0.75380 0.65549 -1.35173 -1.07133 0.94978 0.12576 +2.10000 0.00000 1.00839 -0.25454 0.79924 0.99825 0.03913 -0.09137 1.83063 0.39298 0.83791 0.56232 -1.48450 +0.50000 1.00000 0.47359 1.16566 0.15896 0.59877 -0.09344 1.79744 -1.46058 0.10507 0.45421 0.73610 -1.12193 +0.50000 0.00000 0.49862 -0.07859 0.04995 -1.19991 0.05940 -0.56189 -2.59258 1.14964 -0.36495 -0.50058 -0.11424 +0.70000 1.00000 0.09345 -0.39477 -0.88444 1.69547 0.68842 1.08626 -1.81339 1.48853 -0.32830 1.70522 1.21578 +3.90000 1.00000 0.86515 -1.28025 0.74331 1.05605 1.54133 -0.16083 -0.19642 0.35864 -0.92935 0.46940 -1.23331 +0.90000 0.00000 0.22654 -0.53445 -0.55605 0.75336 1.59294 -0.56531 0.03211 1.19862 0.50034 -0.27439 -2.03137 +0.80000 1.00000 0.11289 2.24248 1.01551 0.61030 -1.66862 -0.44135 0.61392 -0.64875 0.31684 0.06808 0.59169 +2.20000 0.00000 1.63197 1.80260 0.12117 0.32906 1.05693 1.08977 -0.89854 0.17989 -0.52642 0.28903 -2.10019 +0.10000 1.00000 0.07958 0.14124 -0.37730 -0.08567 0.40804 -0.97142 1.97877 0.07369 0.36860 1.22828 0.74648 +0.30000 1.00000 0.18611 -0.45742 -0.62346 0.36518 -1.00243 -0.82447 -1.73522 -1.01194 2.37621 0.12238 -0.41794 +2.20000 1.00000 1.86528 1.20598 -1.67361 -0.63502 -0.04673 1.06959 -0.96733 2.48369 -0.78705 1.48157 0.06055 +2.70000 0.00000 0.32739 0.85542 1.68069 0.46884 -0.04073 -0.59390 0.93872 -0.65883 -1.16570 1.24874 0.02661 +0.90000 1.00000 0.10827 0.49375 -0.42316 1.70334 -0.73416 2.47727 1.08682 -0.76817 0.52934 0.59419 -0.58636 +0.90000 1.00000 0.58011 -0.60713 -0.91069 -0.18273 0.90948 -0.74909 0.33793 2.58095 -0.05754 0.34740 -0.02709 +0.50000 1.00000 0.05322 -0.59499 -0.33158 -0.59713 -1.01310 -0.91348 -1.39350 0.07692 -0.31203 0.04014 -0.65429 +0.30000 0.00000 0.01477 0.86265 0.22204 2.44598 -0.59831 0.02872 0.09730 0.42172 -0.27818 0.11802 -0.35531 +0.60000 1.00000 0.23562 -0.43756 1.03867 -2.35477 1.53327 -0.57975 -2.48328 -0.15243 1.08291 -0.21340 -0.23200 +4.80000 1.00000 0.67291 -0.88203 -0.04331 0.17298 0.42506 -0.98443 -0.55397 -0.28812 -1.72079 -1.13271 -0.27584 +0.30000 1.00000 0.17872 0.61501 -0.68078 -0.50359 1.72862 -0.73695 0.36016 0.43417 -0.49428 -0.10900 -0.44635 +0.40000 1.00000 0.31170 -0.44336 -0.99192 -0.99666 0.31303 -1.79875 -0.55953 -2.30569 0.34854 0.08952 -0.24276 +0.40000 1.00000 0.17193 0.82517 -0.92750 -1.11038 -0.59477 -1.29416 -0.80740 -1.45587 0.73713 -0.31276 1.07457 +1.70000 1.00000 0.68398 0.28116 -0.33579 1.07031 2.21737 -0.27141 -0.53932 -1.40951 -0.92972 -0.11138 1.15320 +2.10000 1.00000 0.53537 -0.19536 0.47714 0.73975 -1.09204 1.99957 -1.72756 -0.45745 0.09324 0.51840 -0.15870 +0.70000 1.00000 0.20747 -0.22053 0.00417 -0.03029 0.42284 -0.63973 1.13266 0.74801 -0.95373 0.36880 -1.23482 +2.40000 0.00000 1.57000 -0.35167 0.93193 0.42088 -0.12565 0.30050 0.01785 1.19016 -1.17470 -1.71630 -1.52489 +1.70000 0.00000 0.26177 1.01207 -0.41957 0.55212 -0.44343 -0.28443 0.60075 -0.74438 -0.89561 -0.89939 0.18041 +2.40000 1.00000 0.03914 1.03153 1.63621 -0.46048 0.32643 0.67911 -0.53416 0.05107 0.67035 -2.02956 0.64725 +1.10000 1.00000 0.41391 1.53289 -0.87778 0.88939 0.65378 -0.11537 -0.41568 1.47918 1.43829 -0.25270 -0.37493 +2.10000 0.00000 1.20542 1.44965 0.16307 -0.55702 -0.80174 0.37224 1.74704 -2.80421 -0.85479 -1.04441 -0.12139 +1.50000 0.00000 0.04073 0.36347 -0.99554 1.36407 -0.63996 1.57678 -0.70050 -0.63798 1.61152 -0.04144 -1.78628 +1.50000 1.00000 0.07895 0.87569 -0.97214 0.43700 -1.11184 0.32807 0.13955 0.06214 -0.60754 0.02259 0.56787 +0.80000 1.00000 0.49552 0.24684 -0.33917 -1.40700 0.57236 -2.13329 -0.98918 0.65916 -0.95663 0.03205 -0.33995 +1.10000 0.00000 0.33277 0.13422 0.17577 0.52540 0.28590 1.07500 -1.15694 -1.66829 0.86665 0.52114 1.28400 +0.20000 0.00000 0.16933 0.40220 -0.12806 -0.70163 0.86882 -1.09273 1.00014 -0.74990 -1.69688 -0.08532 -0.25705 +1.20000 0.00000 0.18725 -0.24551 -0.96170 2.11808 -0.03013 -2.39450 0.57524 -0.95487 0.86499 -1.29233 -1.33661 +1.90000 0.00000 1.07126 1.46224 0.18352 0.19289 0.67124 0.59506 0.89740 0.42262 0.39347 0.26726 -0.84469 +1.20000 0.00000 0.03853 -1.18383 1.00977 1.25894 1.09686 0.09537 0.01072 -1.69382 0.12876 0.16454 -0.07121 +0.40000 1.00000 0.10874 -0.44626 0.55825 -0.20959 0.07237 -0.48590 1.35491 -0.11871 -0.91629 -1.91648 -0.01617 +2.40000 0.00000 0.65451 -0.41811 1.23991 0.80317 -1.72656 -0.75188 0.22846 -2.76000 0.21883 0.30609 -0.71004 +1.90000 0.00000 0.36445 1.09849 0.86648 -2.27000 0.83664 0.13566 -0.30661 0.80931 -1.36031 -0.95670 -1.22885 +0.50000 0.00000 0.27376 2.23004 -1.34218 0.89134 -2.30803 0.73813 -1.80321 1.21080 0.04564 -0.48114 0.22543 +0.30000 1.00000 0.15153 -2.19356 -2.54535 -0.96200 1.53858 -1.08335 0.08557 1.50827 -1.13390 0.33737 0.14873 +0.20000 1.00000 0.06617 -1.09420 -0.94415 -0.58588 0.14827 0.38087 0.60386 0.70341 -1.81700 -1.01998 1.12336 +0.60000 0.00000 0.06558 1.12175 -0.42030 0.16432 1.11880 -1.28898 0.20167 1.81520 -1.05842 1.50318 -0.10664 +1.40000 0.00000 0.94676 2.25130 0.43535 0.14418 -1.33228 1.13367 -1.08020 -0.76528 0.65407 -0.48857 -0.01616 +3.70000 1.00000 0.12341 0.31102 -0.30005 0.54925 0.63588 2.44468 0.38627 -0.68532 -1.58330 0.21285 0.20661 +0.80000 1.00000 0.41718 1.18494 -1.04816 -0.35613 -0.98367 -0.80906 -0.13466 -0.29851 -1.20683 0.22618 -0.99673 +1.40000 0.00000 1.12940 0.51256 0.03637 -1.05598 -0.19409 0.13901 -0.09394 -0.58276 -0.37034 -1.43626 -0.22038 +0.80000 0.00000 0.17661 -0.35823 1.12279 0.54062 -0.37908 0.43796 1.88409 0.87159 -1.53774 -0.58701 0.17612 +0.40000 1.00000 0.32364 -1.55422 -0.52888 -0.41171 -0.02872 -0.75996 -0.96537 0.02664 0.89427 -1.64074 0.35076 +0.10000 1.00000 0.07394 -1.14953 -1.39878 0.29904 -0.28637 2.03077 -1.20060 -0.40652 0.42426 2.03106 1.04767 +2.10000 0.00000 0.71494 1.38469 -0.53472 -0.28086 1.10924 0.55351 -0.10735 0.60026 1.48467 0.62147 -0.42718 +0.70000 0.00000 0.04617 1.23221 -1.47506 1.78576 -0.62496 -2.44383 -0.15617 -0.31353 -0.47320 -0.64379 0.54025 +0.20000 1.00000 0.00206 1.08177 -1.81266 -0.35495 -2.06183 -0.71884 -0.81877 -0.04296 1.62336 0.26940 0.56563 +0.80000 0.00000 0.68144 -0.09062 0.64012 -1.10933 -0.44471 -0.01047 1.50858 0.77464 0.43128 1.02136 -1.04490 +5.80000 0.00000 0.32270 0.41564 0.48583 1.53229 -0.14453 0.79127 0.51677 0.44542 1.07739 0.49386 -1.86053 +0.40000 0.00000 0.07549 2.80056 -1.45334 0.32731 -0.04726 -0.05765 0.06189 -0.94388 -0.51737 -1.55469 -0.44877 +0.20000 0.00000 0.07532 0.21667 -1.03413 -1.40343 -0.29505 -0.56902 -1.67019 1.17539 0.99848 -0.17842 0.64715 +0.50000 1.00000 0.05922 -0.38058 -1.31194 -0.99337 -0.78289 -2.19341 -1.31962 0.52798 0.68495 -0.21941 -0.52588 +0.50000 0.00000 0.21852 -0.21339 0.06829 -0.00152 -0.93912 -0.82441 -0.07435 -1.41201 -0.76817 0.01350 0.59662 +0.60000 1.00000 0.38595 -1.23089 0.28683 -0.66435 0.03714 -1.93628 0.28199 -0.36962 1.81032 0.32928 -2.41782 +1.00000 0.00000 0.23388 -1.65206 -0.61723 1.23580 -1.13274 0.77908 -2.36623 0.40758 -1.84937 -0.93060 -0.95877 +0.20000 0.00000 0.03253 -0.40081 1.80288 -1.03773 0.85240 -1.82446 0.83685 0.87222 -0.39537 0.37686 -1.21573 +2.30000 0.00000 2.05201 1.16512 0.17308 -0.62645 0.54655 0.51306 0.90289 0.41922 -0.89491 -0.89449 0.54630 +0.90000 0.00000 0.83598 0.02331 -0.96590 -0.60233 0.35231 0.50245 -0.65413 0.44017 -0.64069 -1.15854 -0.49249 +0.40000 1.00000 0.20182 -1.64921 1.41137 -0.63390 0.43078 1.77593 -0.38077 2.10146 0.10942 0.28366 -0.57969 +1.00000 0.00000 0.22000 1.28481 0.40218 -0.90789 0.76401 0.02910 0.17544 -0.86043 0.85809 -1.53269 -0.21283 +1.80000 1.00000 0.57194 0.44108 0.08943 -1.52614 -0.23500 -0.16196 1.33640 0.10901 1.02591 -1.28369 -2.13188 +1.60000 1.00000 0.57034 0.24376 -2.44576 1.39598 -0.31153 -0.54565 -0.63443 -0.52934 -1.00695 -1.71959 1.67253 +1.10000 0.00000 0.16439 0.53365 1.85816 2.61257 -0.71256 -0.10015 -0.25522 -1.14096 0.95431 -0.27313 -0.32774 +1.90000 1.00000 0.25833 0.54972 -0.25177 0.80498 1.96717 -0.33583 -0.07693 0.72877 0.55932 -1.16172 0.56328 +0.30000 0.00000 0.08403 1.13342 -0.57102 -1.70452 0.34426 0.00452 -1.40954 -0.90529 -0.95512 -0.16733 -0.45835 +0.40000 1.00000 0.22190 -0.09425 -1.61942 -0.36232 2.52153 0.88543 -0.66843 -0.34850 0.71391 -1.22528 -0.63310 +0.90000 1.00000 0.42896 0.32281 -0.19639 0.55136 0.73327 -0.87264 1.64567 0.91923 1.04170 0.67805 -0.61395 +1.90000 0.00000 0.62910 0.04820 -0.49203 1.02719 0.60491 -1.25815 -0.50067 1.64732 0.56836 -0.96640 -0.17413 +3.70000 0.00000 2.66805 0.82634 -0.43824 -0.08855 -0.73464 -0.09992 0.34788 -1.40367 -1.43515 -1.38529 -0.30729 +0.10000 1.00000 0.03481 -0.07561 -1.83070 1.25293 0.45883 -0.06482 0.09322 -2.07891 -0.40375 -0.22638 -0.24268 +0.70000 0.00000 0.56132 1.74074 -0.15071 -0.06818 -0.03488 0.29643 -0.22057 0.39892 -0.22377 -0.70877 1.13479 +1.00000 1.00000 0.35173 0.31751 0.66901 0.63512 -0.37051 -0.77672 1.38677 0.20859 0.93649 -0.77403 0.40785 +0.70000 1.00000 0.02903 0.48272 -0.19649 -0.10484 -0.84885 -0.68320 0.16949 0.99725 2.07219 -0.76412 0.38308 +6.90000 0.00000 2.05765 1.77051 1.64156 -0.66705 0.62574 -0.05006 -0.12170 0.10344 -0.22481 -0.83492 -0.50257 +0.40000 0.00000 0.39963 0.08896 0.26161 0.26925 0.83716 -0.51487 -1.80671 1.56913 -0.78675 -0.27808 0.03882 +1.30000 0.00000 0.02321 -0.85238 0.57656 -0.78599 0.68559 -0.04328 -1.00745 0.35610 -1.48258 0.30985 0.76111 +0.40000 1.00000 0.24725 0.37168 -2.15214 -0.65334 -0.41948 -0.50027 -0.17345 0.05945 0.19980 -1.62444 0.78081 +0.90000 0.00000 0.41126 0.61922 0.18070 1.60227 0.12809 -0.30277 0.46697 -0.03840 -1.12206 -0.61790 0.45472 +2.70000 0.00000 0.59297 0.72466 0.79118 -0.02878 -0.53273 0.50035 1.50142 1.87727 -1.56864 -0.68589 -0.12948 +0.50000 0.00000 0.48060 0.59352 1.28996 0.43051 -0.95508 -0.81664 -0.40186 -0.91919 -1.98139 -0.02853 1.11251 +1.00000 0.00000 0.10518 0.00348 -1.30987 1.89774 -0.48026 -0.12411 -0.65379 1.39309 -1.41802 -0.09597 0.09597 +0.80000 1.00000 0.01380 0.45225 0.68287 -0.65574 -0.05592 -0.49306 -0.34570 0.28499 0.16821 -0.23044 0.14692 +0.70000 0.00000 0.25547 0.17036 -0.14907 1.52965 -0.91934 -0.62990 -1.51660 -0.90994 -2.03134 0.19034 -1.78174 +1.00000 1.00000 0.09832 -1.34059 -1.73870 -0.95639 0.31102 -0.24022 0.30512 1.20462 -0.43213 -1.30772 -2.19178 +1.20000 1.00000 0.93013 0.16479 1.23841 -1.05485 -0.12505 -0.42433 -0.58223 -0.20306 -1.25894 -0.86690 1.26797 +0.10000 0.00000 0.02811 -0.72640 -0.44930 -0.13619 0.41697 -1.07859 -0.15207 0.18343 -0.58322 1.63725 -0.30048 +0.40000 1.00000 0.37679 -1.48809 0.44095 0.69790 -0.03311 -0.80729 0.32186 0.78259 1.19228 0.64678 -0.59028 +2.30000 1.00000 0.95286 -0.34300 -0.12970 0.54603 1.12220 -0.09620 -1.43118 -0.14911 -1.36907 -0.05830 0.25349 +0.50000 0.00000 0.18850 0.41541 0.36569 0.15719 0.58539 -1.63958 -1.42673 -2.04507 0.01967 -0.19259 -1.54577 +2.80000 0.00000 0.16484 0.72871 0.34656 1.11026 -0.57146 0.50715 1.03719 -1.73474 -1.00243 -0.47391 -1.16183 +0.80000 1.00000 0.05516 0.43215 -0.38307 -0.89107 2.05207 -0.96846 0.60704 -0.69510 -0.30634 0.48421 0.55069 +0.70000 0.00000 0.04196 -0.94070 0.26658 0.06283 -0.89150 0.73424 -0.71597 -0.03316 0.90407 -0.74291 -0.10387 +0.30000 0.00000 0.02526 -1.88104 -0.54499 0.51409 0.76309 -1.26739 -1.27656 0.38090 2.30997 -1.56779 0.38499 +2.00000 1.00000 1.42086 1.69366 0.60970 0.65668 0.42025 0.44793 0.08176 0.09890 -0.74491 0.08637 -0.26459 +0.20000 1.00000 0.01646 0.54417 -1.18107 -0.11736 1.25260 -0.57163 0.24478 0.19555 0.47464 0.38556 -0.56131 +0.40000 1.00000 0.01788 -0.54396 0.99550 0.15129 -1.98108 0.19569 0.87967 -0.81904 0.49607 -1.68436 0.25583 +0.30000 0.00000 0.26090 0.46935 -0.12527 0.25897 1.20006 -1.01176 -0.73698 0.53682 1.80467 1.88398 -0.21920 +1.00000 0.00000 0.07437 0.29691 -2.21821 1.58935 0.49129 -1.55523 0.94391 -0.87066 -1.69857 -1.27298 -0.21739 +0.60000 0.00000 0.14153 -0.52508 0.24718 -0.26255 -0.24005 0.66611 -0.56057 -1.10360 -0.69412 0.49301 0.41016 +0.40000 1.00000 0.28327 -0.85401 1.63169 -1.85734 1.09824 -0.41539 -1.01297 1.24930 1.43923 -0.83920 1.23870 +3.50000 1.00000 2.33931 1.44942 2.42095 -0.47056 1.35769 1.08568 0.63397 -0.30748 -0.12715 -0.12138 -0.43130 +2.70000 0.00000 0.16600 -0.18254 -0.44716 1.36369 0.12310 0.31605 -1.20419 0.22518 1.22665 -0.43415 -0.15076 +1.70000 1.00000 1.43905 -0.66003 0.95685 0.00375 -1.21575 -0.39235 -1.28859 -1.92402 0.13024 0.24241 -0.03824 +1.70000 0.00000 1.00972 -1.36926 0.86057 0.48973 0.70464 0.36699 1.04862 1.23136 0.21101 -0.15410 -0.67379 +1.30000 0.00000 0.50838 0.77836 1.22672 0.18861 -1.35590 -0.04444 0.11107 0.40550 -0.97661 1.07828 -0.56986 +0.80000 0.00000 0.68738 0.04790 0.40761 2.93053 -0.96658 -1.38616 0.48720 -1.45193 -0.11932 -1.00957 -1.01673 +0.60000 0.00000 0.16785 0.26589 0.12371 1.36876 -1.53509 0.02664 2.06755 -1.22545 -1.47297 0.25831 -1.96463 +1.60000 1.00000 1.55677 0.15822 1.47939 -0.02624 2.60823 -0.42890 1.52405 -0.25443 0.31378 0.51453 -0.12513 +0.90000 0.00000 0.89835 -0.00638 0.94289 0.90174 -0.11677 1.37234 2.02133 0.25161 1.34556 -0.36154 -0.02693 +1.30000 0.00000 0.20036 0.05850 -1.37430 -0.00924 0.50919 -0.62175 -1.31851 0.98157 -0.36944 0.30836 -2.05655 +0.20000 1.00000 0.15830 0.52077 -0.76226 0.06250 -1.42947 0.04442 -0.71318 -0.41345 -0.63171 -0.52106 1.00764 +1.60000 1.00000 0.92828 3.43266 -1.78041 0.95398 -2.29790 1.05817 -1.43815 0.17761 -0.91204 0.93735 0.32850 +0.30000 1.00000 0.19585 0.95883 -0.27161 0.34968 -0.18339 0.42548 1.97350 -0.24787 2.90609 0.46719 -0.12381 +1.70000 1.00000 1.07216 0.64389 1.32153 0.92544 1.75558 -0.66276 -0.52792 0.89209 1.92732 1.55212 -1.27856 +1.80000 0.00000 0.11159 -1.53425 1.03426 0.29138 -0.91037 0.46910 0.24600 -0.33380 0.10005 -0.39408 0.40570 +0.90000 1.00000 0.76010 -0.93580 0.52551 0.75454 1.14698 0.65245 1.38544 1.12787 -0.21268 -1.64047 0.58280 +0.30000 1.00000 0.29895 -0.89502 0.40432 -0.01814 -0.14658 -1.77706 0.96012 0.22782 0.60553 0.09374 -0.83817 +1.10000 1.00000 0.42903 0.40037 -1.22516 -0.68064 0.22440 -2.07222 -0.04450 -1.66052 -0.91537 -1.56174 0.57543 +0.60000 1.00000 0.21839 -0.26857 -1.70573 -0.29314 -0.34415 1.63297 -0.14998 1.62284 -1.69297 0.29935 0.51695 +0.70000 1.00000 0.67791 0.48663 0.71656 0.65043 -2.43240 0.58044 1.11211 -0.19832 0.04466 -0.24830 -2.28604 +1.10000 1.00000 0.33948 -0.12745 1.06751 -0.14538 0.75739 -1.40257 0.94975 0.75182 -0.02117 1.07705 -0.43360 +0.70000 1.00000 0.08545 0.62676 -1.35587 -0.75281 -0.55308 -1.25802 0.05534 0.33929 -0.05877 -0.48829 -0.15937 +1.70000 0.00000 1.31654 0.38138 -0.25870 1.14618 2.27287 0.61200 -0.20984 -0.24846 1.29306 -0.56570 -1.08178 +4.60000 1.00000 1.01095 1.47506 0.32877 -0.68843 -1.48897 1.51873 0.48145 -0.30082 -1.53764 -0.41030 -0.56624 +1.00000 1.00000 0.82812 -0.58075 0.43680 -0.32222 -0.94518 -0.18369 0.97411 -1.31919 -0.45696 0.46761 -0.27152 +1.80000 0.00000 0.36609 0.92824 1.45591 0.82342 0.77638 -1.25766 0.98224 1.37800 1.23688 -1.37766 1.23526 +0.90000 1.00000 0.05731 -0.52391 0.28196 0.88839 0.46174 -1.38867 0.84550 0.43263 -0.78803 0.05322 -0.41731 +1.60000 1.00000 0.95104 0.53364 -0.53611 -0.17996 1.23878 2.86410 0.59127 0.96286 -0.67908 -1.10877 -0.53738 +0.60000 1.00000 0.38144 1.68540 0.58189 0.49360 -0.21825 -2.09119 0.40632 1.18136 0.77291 -1.72505 -0.78049 +2.10000 0.00000 0.26197 -0.43426 1.57138 -0.70508 -0.31382 -0.00951 -0.28937 0.05061 1.04911 0.62059 -1.02716 +0.70000 1.00000 0.26666 0.47836 0.08874 0.13933 -1.86515 -0.75740 -0.89016 -2.32697 -1.09100 0.52054 -1.07146 +0.70000 0.00000 0.22074 -0.48387 1.24844 0.57613 1.61883 1.75901 -0.92243 0.86430 0.84984 0.76414 -0.86204 +0.20000 1.00000 0.16826 -0.72750 -0.17476 -0.76131 -1.99981 1.26721 0.97099 0.69639 0.78445 -0.74850 -0.57787 +0.60000 1.00000 0.00208 -0.51594 -0.22009 0.15811 0.02105 0.84330 -0.22446 0.02598 -0.34638 -1.19548 -0.42797 +0.70000 0.00000 0.48542 -0.49069 -1.08668 -0.13941 -0.63629 1.63194 -0.60619 1.36588 1.19720 -0.85615 -2.02566 +1.30000 0.00000 1.18130 0.28652 0.95695 -0.09513 -0.30799 -1.15667 0.30243 1.20563 -0.84300 -0.48094 0.64698 +2.40000 1.00000 1.89560 -0.14493 -0.47784 0.97072 -0.87092 -0.65465 -0.07002 1.09525 1.16881 -0.42816 -1.56605 +1.60000 0.00000 0.61663 0.37137 0.10172 0.47737 0.64477 -0.60606 1.62453 0.64499 0.07966 -0.71373 -0.78559 +1.60000 0.00000 0.06246 -0.64573 0.95735 -0.34110 -0.38933 -0.23741 0.66256 0.20712 -0.63340 -1.28451 -0.89317 +0.40000 1.00000 0.07548 2.13850 -0.16716 0.29517 -0.82024 0.58975 0.72463 0.98633 -1.40183 -1.01691 0.83885 +0.40000 1.00000 0.22290 -1.07820 0.16619 0.30106 0.58756 -0.00946 -0.25374 0.61494 0.96188 -0.21015 -1.01512 +1.00000 1.00000 0.11988 1.32866 -0.31154 -0.14628 1.35274 -1.69925 0.36450 -1.28640 1.70753 -0.43827 -0.84857 +1.00000 0.00000 0.82230 -0.00525 -0.59603 1.10529 0.35865 0.09282 -0.54210 -1.52601 -0.56887 0.75602 1.06802 +1.20000 0.00000 0.19749 -0.86366 -0.60359 0.60335 0.74150 -1.87382 -0.88854 -1.50609 -0.10027 0.65258 -0.15011 +1.60000 0.00000 0.65392 -1.24112 0.52339 -0.20218 1.38899 0.85791 -0.48913 -0.91569 0.63295 1.49983 -0.41072 +0.80000 0.00000 0.12617 0.25105 0.57228 -1.25993 -0.88933 1.11483 0.29404 0.27086 -0.70266 0.12863 -1.06588 +0.70000 1.00000 0.25627 0.23046 -0.59120 0.60547 -0.23231 -0.26049 0.44911 -0.79771 0.91017 1.69604 0.28641 +0.80000 1.00000 0.35760 0.42175 0.68374 0.53902 -1.14421 0.73613 0.69316 0.06799 -0.50939 0.93213 -0.36543 +0.50000 1.00000 0.27716 1.16259 1.30037 -0.31950 0.08730 0.31296 -1.58151 -0.23216 0.71656 0.17577 -0.35409 +0.60000 0.00000 0.47139 1.20821 -1.53912 0.61653 1.63400 0.07366 -0.68728 0.61108 0.19003 -1.13149 -0.95971 +0.50000 0.00000 0.45752 0.26983 1.49841 -0.63108 0.13400 -0.00378 0.50339 -0.28658 -0.96679 -0.73567 2.04127 +1.10000 1.00000 0.30359 0.27558 -0.04195 -0.23707 -0.50746 0.58277 0.92881 -2.07576 0.97809 0.08554 -0.81785 +0.40000 1.00000 0.35572 -1.31236 1.43825 -0.36977 0.25697 -0.13639 0.90506 -0.20679 1.72149 -0.99220 0.88878 +0.60000 1.00000 0.31867 -0.13831 0.25715 -0.70946 0.62570 -0.27583 0.42001 -0.10525 0.77465 -0.75345 -0.56250 +0.70000 1.00000 0.23578 0.56734 -1.13853 0.97581 -0.47823 0.19157 0.29475 -1.63049 0.70353 1.33871 0.48786 +0.50000 1.00000 0.22767 -1.32657 0.45363 1.05506 -0.79358 -1.85434 -0.19276 1.01108 0.55416 0.44559 -0.73791 +1.00000 0.00000 0.82465 1.32064 0.71164 -1.13724 -0.65246 -1.36418 2.68379 -0.03248 0.26586 -2.32308 -0.95052 +1.20000 1.00000 0.37171 0.71296 0.77420 0.23762 0.53560 -0.54614 0.53560 0.64052 -0.84474 0.33769 0.17608 +0.40000 1.00000 0.14725 0.33524 0.47790 -1.31981 0.98594 -1.56465 0.15041 0.70813 0.94435 -0.71110 -1.46358 +2.10000 0.00000 0.26422 0.03557 1.61114 1.08421 -0.42164 -1.45396 1.71423 1.86569 -0.59542 0.91478 -0.90939 +0.70000 0.00000 0.14613 0.66170 -0.50141 1.70596 1.00666 -1.13599 -1.20488 -0.02122 0.06867 -1.69294 1.03502 +0.40000 0.00000 0.30270 1.29234 -0.08930 -0.54162 1.89508 1.20166 1.44914 -1.47928 -0.27921 -2.18034 0.19887 +5.80000 1.00000 1.04841 2.78446 0.48193 -0.23459 0.40274 -0.41987 -1.08787 -0.04626 -0.37453 -0.23019 0.20083 +1.40000 1.00000 0.09703 1.50871 1.80097 1.28367 0.71723 1.09608 -0.51525 0.51855 2.55230 -1.80843 0.25063 +1.10000 1.00000 0.79456 0.82338 1.38515 -1.24256 0.36020 -1.04748 -1.36807 1.62168 -0.30325 1.66174 0.92198 +1.30000 0.00000 0.16942 0.00912 -1.08937 0.55700 0.12030 2.17727 -0.70490 0.43519 -0.16464 -0.82991 -2.58250 +0.80000 0.00000 0.46250 1.84284 0.22444 -1.33573 0.81901 2.62919 -0.18377 -1.10477 -0.58370 -1.66046 -0.99847 +3.40000 0.00000 0.95508 3.34482 0.92111 0.50803 0.14519 1.36643 -0.17410 0.49150 1.01822 -0.12660 0.72181 +1.40000 1.00000 1.09936 0.76349 0.15760 0.39289 1.10843 -1.22147 -0.81644 -0.72810 1.07548 -0.74232 -1.15601 +0.70000 1.00000 0.42026 0.22793 -0.39473 0.71678 -0.73785 -0.46712 1.74880 -1.21801 -1.51506 0.20626 1.31193 +0.40000 1.00000 0.20617 -1.21632 -0.02409 -0.79104 -1.28438 0.61707 -0.60715 1.15426 -0.45442 -0.06981 0.65812 +1.00000 0.00000 0.23008 0.75628 -1.25628 -0.64941 -0.41696 0.91217 2.16080 0.55047 -1.15658 -0.62988 -1.25703 +0.30000 1.00000 0.11672 0.91492 -0.20988 -0.12888 0.02239 0.06967 -0.52324 1.16652 -0.10734 -0.35585 0.05949 +0.40000 1.00000 0.36826 0.40922 -1.55311 -0.31615 -0.76287 -2.02125 -0.84196 0.22142 1.20749 -0.21950 -0.36950 +1.50000 1.00000 0.82799 0.79523 -0.16953 -0.21914 -0.54197 0.12795 -1.20113 -0.06979 1.95330 1.02150 -0.07542 +0.60000 1.00000 0.43019 0.07058 0.29242 0.06546 0.90969 0.62624 -0.98127 -0.71209 -0.17388 -1.43269 1.74201 +0.80000 1.00000 0.23958 0.55087 -1.39004 -0.89153 -0.14092 1.93270 -1.61025 -0.45298 0.32212 -0.18512 0.76854 +2.60000 1.00000 0.40762 1.32906 -1.24066 0.45689 0.56978 0.04224 -0.44356 0.87756 0.29924 -2.00259 0.16336 +4.10000 1.00000 0.22053 0.98921 2.51445 1.31969 -0.33204 0.89721 1.47520 -1.42129 -0.85867 -0.12754 0.46251 +1.00000 1.00000 0.89903 -0.28574 2.73964 0.68692 -1.12436 0.65294 -0.14818 -1.02136 0.74765 -1.42417 -0.71502 +1.50000 0.00000 0.21821 0.43741 -0.99187 -0.28656 0.10611 0.10369 -0.61971 0.13370 0.75564 -0.47463 -0.97909 +0.80000 1.00000 0.06014 -1.28151 -0.44527 1.40164 -1.17340 0.47875 1.36579 1.01283 0.17364 -1.45345 -0.13396 +0.20000 1.00000 0.03714 -0.37192 0.58560 -1.28397 -1.23006 -0.21437 -1.30473 0.60077 1.31183 0.64686 -1.87727 +1.60000 0.00000 0.05648 2.41553 -0.04575 0.92165 -0.66631 -0.17880 -1.13713 -0.66960 -0.42694 0.48765 0.56952 +0.30000 0.00000 0.15244 0.47450 -0.14273 -0.10725 -1.88216 0.20548 0.71140 -0.57430 -0.97283 -3.23897 -0.43271 +0.50000 1.00000 0.05913 0.15058 -0.45804 -1.39974 0.62525 0.08829 -1.15459 0.43364 -0.30207 0.26938 0.04018 +0.80000 0.00000 0.77049 -0.23861 -1.39528 1.75901 0.95825 -0.24735 0.59539 -0.72431 0.05125 -2.28935 -0.47894 +0.80000 0.00000 0.64092 -1.09110 2.08327 0.58529 0.13607 0.09815 0.68141 0.00839 -1.35745 -0.62911 -1.04151 +0.30000 1.00000 0.00513 -0.67448 0.40683 -0.47954 -2.05836 0.24219 0.69055 0.07045 1.87364 -0.37699 -1.69349 +1.00000 1.00000 0.11588 0.31345 -0.52038 -0.12431 1.10062 0.42951 0.55268 -2.40791 -1.48892 -0.49023 1.55831 +0.50000 0.00000 0.20365 -0.21255 1.29892 1.28890 -1.74197 2.17801 -0.75109 0.78584 -0.19357 -0.26726 -1.58539 +1.60000 1.00000 0.42360 -0.09202 0.90726 0.83457 0.72553 -0.39020 -1.37914 0.32096 0.69464 0.97741 -0.38074 +1.20000 0.00000 0.19111 -2.01345 1.22959 0.60755 -1.29836 0.34722 -0.70893 -0.76841 0.62357 0.46924 0.96703 +0.50000 1.00000 0.15474 -0.71576 1.71718 2.31127 -0.89233 1.33219 0.67429 -0.05271 -0.31587 -0.47786 0.17632 +0.80000 0.00000 0.59890 0.37594 0.36656 0.06359 2.23002 -0.23890 1.14541 0.22693 1.36901 -1.09806 -0.56380 +0.80000 0.00000 0.14597 -0.80847 0.74156 0.51969 0.30524 0.98879 -0.36283 2.90465 -0.56741 0.13070 -0.07485 +1.70000 1.00000 1.67838 -0.58680 -0.55209 1.05755 -0.42037 -0.87504 0.82307 -0.76455 -0.48075 -0.04466 0.65911 +0.60000 1.00000 0.00575 -0.30989 -0.71211 1.79634 -0.92107 -0.16723 -0.44375 -0.25649 -0.31548 -0.66831 0.60865 +1.80000 1.00000 0.62810 0.05614 1.13760 -0.35860 1.72402 -0.16421 -0.35977 -0.96953 0.99880 0.60658 -1.51923 +0.80000 0.00000 0.27661 0.53957 0.35271 -0.27684 0.38808 0.47377 0.08677 1.50450 0.55037 0.49955 0.38773 +1.00000 0.00000 0.14372 -0.43486 0.32332 0.54793 1.48227 -0.04962 -0.21003 -0.15536 -0.38250 -0.45578 -0.44590 +1.30000 1.00000 1.08191 0.92686 0.00835 0.82152 0.32865 -1.26096 0.30314 -0.36030 -0.72197 -0.34992 -0.00023 +1.90000 1.00000 0.44859 2.07041 -1.98428 -0.45503 -0.76926 0.06973 0.40204 0.53549 0.96463 0.06056 -0.24746 +0.50000 0.00000 0.28805 -0.05905 0.29316 -0.38380 -0.30000 1.38480 -0.16109 1.05030 -0.75567 -1.17647 -1.52566 +1.20000 1.00000 0.07727 0.17129 -0.86594 0.86633 0.30033 0.90821 -0.34697 1.55952 -0.68668 0.54991 1.85322 +0.70000 1.00000 0.55585 -0.14473 0.32854 -1.79576 1.37049 -1.33240 -0.62037 0.92349 0.26469 -0.01666 -1.74479 +1.10000 0.00000 0.47575 -0.04448 0.61113 -1.09848 1.02462 -0.26687 -0.01809 0.45429 -0.47146 0.10815 0.19765 +0.40000 1.00000 0.21115 1.60444 -1.16010 -0.19948 -0.59982 1.67065 -0.52806 1.06931 -1.25733 1.44633 1.31478 +1.30000 0.00000 0.78342 -0.56616 0.49828 0.10139 -1.29648 -0.03959 -0.95101 -1.26565 -0.13098 1.38687 -0.64903 +1.50000 0.00000 0.15037 -0.21313 -0.23576 0.17185 1.37497 1.05589 0.32585 -0.30718 1.15997 -1.42903 -0.46404 +0.20000 1.00000 0.06559 -0.51244 0.96048 -0.86482 1.42790 0.13423 0.01551 -1.08174 0.84208 0.57561 1.30481 +1.60000 1.00000 0.96725 -0.49974 0.69079 1.76084 2.01735 0.01754 1.19465 0.23088 -0.76979 1.17823 -1.20458 +4.10000 1.00000 0.03391 1.81503 -0.90815 -0.07355 0.95770 -0.42244 -0.02903 0.05166 -0.24848 -0.78510 -0.17660 +0.10000 1.00000 0.06582 -0.36646 0.24020 1.95037 0.67384 0.03645 -0.78332 -0.72557 -0.16236 0.98319 1.26336 +3.80000 1.00000 0.19018 1.25064 2.24772 -0.70893 -0.78139 1.30139 0.58533 -0.71261 1.40558 1.66814 -1.31039 +0.40000 0.00000 0.23370 1.39243 -1.07518 1.13423 -0.83571 0.30956 1.45966 0.18125 0.21815 0.47223 -0.75441 +0.80000 1.00000 0.43713 0.52104 -0.83917 0.24027 0.85884 0.40088 1.14817 0.36462 -1.65515 -0.96048 2.73476 +0.80000 1.00000 0.62717 -0.21866 -0.37546 0.31369 0.66745 0.16314 -0.99042 0.13922 -0.62682 -1.14011 -0.24511 +1.20000 1.00000 0.10122 0.47875 -0.71840 -0.42742 -0.69008 0.77578 -1.44716 -0.63352 -0.07965 0.85682 -0.99047 +2.40000 1.00000 1.76367 0.15137 0.58734 0.38571 1.17090 0.84372 0.64742 -0.36335 1.15192 -1.04641 -1.86349 +0.10000 0.00000 0.01465 -0.79907 -0.20492 -0.57108 -1.78402 -0.20623 1.32242 -1.19384 -0.30461 -0.01686 1.54235 +0.30000 1.00000 0.11023 2.02710 0.34976 -1.10235 0.29751 0.77622 -1.02039 -0.16706 -0.48703 2.87343 0.71147 +1.20000 1.00000 0.07654 0.82419 1.81293 3.46004 -0.68952 0.34241 0.71041 0.13869 -0.30237 -1.23316 -0.43426 +1.00000 0.00000 0.20876 0.87030 2.05951 -2.05484 1.05570 -0.56688 0.54181 -0.45898 0.56536 -0.86765 0.96078 +0.10000 0.00000 0.04351 -1.52610 -0.06585 1.40746 0.92924 -0.76667 -0.20940 0.02776 1.27610 -1.82395 -0.09536 +1.60000 0.00000 0.16433 -0.48058 0.05072 -0.49852 0.73457 -0.17317 -0.21674 -0.37635 -1.26402 -1.46165 0.95452 +0.80000 1.00000 0.02039 -1.11249 0.71918 0.11629 -0.19657 0.50818 -0.33978 0.14163 -0.92404 1.85089 0.12007 +0.70000 0.00000 0.46634 1.17869 -0.45065 -0.08486 2.17451 -0.31383 -1.64252 1.73265 1.07394 -0.64761 -0.50940 +1.70000 1.00000 0.69078 0.93241 -0.86248 1.36121 0.18200 1.01439 2.10765 1.08191 0.26668 -0.27564 -0.12552 +1.30000 1.00000 0.01365 1.57990 -1.21812 0.55562 -1.35256 0.00583 1.08107 1.34170 0.21781 -0.22060 -0.42262 +0.90000 1.00000 0.61654 0.49980 0.20848 1.19771 0.17269 -2.21815 -0.36391 -0.45108 0.57446 2.07777 0.17767 +0.30000 0.00000 0.06943 -0.42108 0.53522 1.67297 0.78460 -0.25444 0.23499 1.46543 0.03064 1.02354 -0.98781 +0.40000 1.00000 0.29413 -0.14459 -0.70676 0.48951 -0.50686 0.58205 0.26024 -0.50646 2.45769 0.03217 -1.58173 +1.00000 1.00000 0.11574 -1.16581 0.18326 0.63506 0.62113 0.76610 -0.25298 1.46853 1.20621 -0.73272 -1.58661 +0.70000 0.00000 0.57524 0.20770 -0.30213 0.59442 -0.03319 -1.03916 -0.22576 -0.23429 -1.41019 0.18938 -0.68581 +3.40000 0.00000 0.85176 -1.83404 1.27577 2.12738 0.60452 -1.83324 -0.72285 -1.06752 0.77624 1.33033 -2.29766 +1.80000 0.00000 0.21049 1.30651 0.36546 1.35974 1.53059 0.15495 1.59716 -0.23095 -1.19779 -0.92654 -1.57521 +1.30000 0.00000 0.09162 3.05342 1.44800 -0.47570 -0.03599 -0.07275 0.27605 -0.95961 0.54054 -1.11485 -0.71002 +4.00000 0.00000 3.68779 -0.22342 -0.77039 0.68914 0.23088 -0.54768 -1.23134 0.15413 -0.64801 0.06430 -1.67907 +0.30000 1.00000 0.26863 0.78103 -0.60854 0.41182 0.32836 -1.98309 -0.42735 0.23333 -0.05181 -0.65826 -0.17748 +0.20000 0.00000 0.03422 -0.66176 -1.88207 0.64725 0.14614 0.58449 -1.81513 1.20296 -1.70427 1.49706 -0.36280 +0.60000 1.00000 0.35422 -0.19225 -1.48532 1.01133 1.26834 0.93148 0.49779 -0.57478 -0.41233 -1.28939 0.67970 +1.00000 1.00000 0.07197 1.63761 -0.53926 -1.30429 -0.19110 -0.30966 -0.14327 1.17693 0.43392 -0.43492 -0.54253 +0.30000 0.00000 0.23607 0.30805 0.50827 1.28320 -0.53986 -0.49648 0.16081 0.36632 -1.06437 -0.07873 0.03505 +0.60000 1.00000 0.22910 1.64210 0.11677 -0.73432 0.58966 1.57928 0.02288 3.05208 2.54307 -0.17116 1.72354 +2.70000 0.00000 1.50852 0.36852 2.29690 -0.55525 -1.08699 -0.50325 -1.52517 -0.86903 -0.27283 0.75719 0.86564 +0.10000 1.00000 0.06327 -0.14808 -0.05276 -0.49828 -0.45473 -2.24788 0.60333 0.28467 -0.09014 -0.10217 1.43113 +1.70000 0.00000 0.95024 1.30785 0.40993 0.41120 0.11194 0.11023 -1.64377 0.37290 -1.76244 -1.44022 -0.76699 +2.50000 1.00000 1.29321 0.59847 0.77940 1.17005 0.30499 0.33493 0.25948 -1.52495 -0.58362 -1.72178 2.44981 +1.50000 1.00000 0.52806 0.84303 0.90489 -1.15749 0.07484 0.57098 -0.13129 0.83797 0.76227 0.99951 0.24543 +0.40000 0.00000 0.24114 2.17427 -0.51106 1.42733 1.21052 0.16760 -2.27380 0.25833 0.00545 0.20716 -0.38068 +0.70000 0.00000 0.55252 -0.57870 1.18087 -0.69039 1.21362 0.93828 -0.00379 1.04105 -3.04358 -0.50440 0.31681 +0.60000 1.00000 0.17101 0.61800 0.07136 1.51402 -0.90678 -0.48994 0.01397 0.13958 0.69695 0.69826 -0.35830 +2.00000 1.00000 1.51464 0.41635 0.24050 0.28207 1.07379 -1.29684 1.85991 -0.53060 1.53029 -1.57388 0.05464 +1.00000 0.00000 0.84789 -0.62231 -0.16668 0.21090 0.33364 0.73162 0.56183 -1.01673 0.62569 0.41510 -0.61431 +0.10000 1.00000 0.03263 -1.69125 -1.30728 0.25103 -0.36525 -0.91739 0.17300 -1.65450 -1.38221 -0.01219 1.48980 +1.30000 0.00000 0.31235 1.75235 -0.83644 0.07622 -2.88672 -0.10353 -1.46937 0.33752 0.14190 -1.37314 -0.15240 +0.80000 0.00000 0.15145 0.83680 0.55017 -0.92706 0.70241 0.50008 -0.03261 0.30300 0.14594 -0.47149 -0.29419 +0.40000 0.00000 0.27991 0.29145 1.04352 -0.25502 -0.37584 -0.70087 -2.45118 0.85291 -0.39481 1.30075 -1.32186 +0.80000 1.00000 0.68612 -0.24631 1.92396 -1.67516 -0.06476 -1.31341 0.08228 -1.14081 -0.16394 0.47635 0.48907 +1.10000 1.00000 0.32660 -0.31988 1.66877 -0.38631 -0.78042 0.86219 -1.43828 -0.33232 -0.59553 -0.76387 0.05509 +1.50000 0.00000 0.06806 0.23834 0.36321 0.97324 -1.73742 1.17724 0.96387 0.04689 0.47764 -2.40649 1.91540 +3.60000 0.00000 0.49338 0.75734 -0.01435 0.06430 0.89680 1.32842 -1.20464 0.18165 -1.38937 -0.75712 -0.25717 +0.40000 1.00000 0.13626 0.72239 0.30463 -0.47323 1.82003 0.48641 -1.36913 -0.04786 1.83378 0.38129 -0.39600 +0.60000 1.00000 0.00276 0.67303 2.21110 1.80691 0.89845 -1.05199 0.75519 1.21388 1.21211 -0.13229 0.47812 +0.40000 0.00000 0.25873 0.00889 0.46749 -2.56626 -1.47614 -0.99630 2.03090 0.52766 0.25078 0.31135 -0.00091 +1.20000 1.00000 0.13790 1.25777 -0.71223 0.12099 2.60764 0.53009 2.28237 -1.10200 -1.08426 0.87922 -0.58214 +0.60000 0.00000 0.20965 -0.93686 0.36012 0.54267 -0.03955 1.02395 -0.18038 -0.70770 -0.11808 0.29766 0.64995 +0.30000 1.00000 0.27762 0.15232 0.02338 -1.15087 -1.61271 0.98838 -0.27965 0.30343 -0.76482 -0.06930 -0.66669 +0.70000 1.00000 0.22653 0.01008 0.45724 -0.89596 0.14799 -1.85117 -0.63660 1.28234 0.40696 -1.71110 1.32079 +0.10000 0.00000 0.06278 1.93861 0.95893 0.27197 -1.08985 -0.80410 0.84778 1.55295 0.25661 -0.97598 0.42806 +3.30000 0.00000 0.07175 1.47285 0.14420 0.26709 1.62522 0.39012 -0.30561 0.47125 0.16670 -0.72928 0.11850 +2.60000 1.00000 0.29761 1.18228 -0.85118 0.64890 -0.79115 0.34278 -1.27897 -1.54584 -0.76702 -0.92755 1.26826 +1.30000 1.00000 1.08510 -0.47809 -1.78954 0.93401 -0.71436 1.14809 0.22754 -0.18773 -1.01920 0.68385 -0.72500 +1.00000 1.00000 0.45652 -0.43086 0.77285 -0.50981 -1.20491 -0.12979 0.52885 -0.82219 0.16584 2.26693 -0.27339 +1.40000 1.00000 1.12946 1.71381 -0.79670 0.17732 0.61103 -1.08055 -1.21345 1.85314 0.35916 -0.18835 0.85578 +1.30000 0.00000 0.63005 -0.35505 -0.05685 0.40660 -0.47578 1.70063 -0.50897 -1.28310 0.29765 -0.79235 -0.88648 +1.40000 1.00000 1.22245 -0.03859 -0.47033 0.67459 0.13310 -0.74907 0.88039 -0.11121 0.13853 -0.25307 -1.04224 +1.10000 0.00000 0.63387 0.71344 1.78648 0.40485 0.55456 1.76852 0.93099 -0.78068 -0.06582 0.11391 0.75498 +0.20000 0.00000 0.13647 0.28569 0.72602 0.97244 -0.06526 -0.54732 1.12157 0.14451 -0.51495 -1.62660 2.33030 +0.70000 1.00000 0.54083 0.27724 0.26130 0.49395 0.98630 0.71755 -0.57904 -0.28504 -1.53212 0.54735 1.25063 +0.80000 0.00000 0.36468 0.11628 2.43520 -1.78194 1.02805 1.05761 -0.12198 0.52151 0.03797 -0.69025 0.38513 +1.90000 0.00000 0.21436 -0.67256 -0.54498 0.21024 1.18195 -0.18849 -1.05782 0.96477 0.55037 -1.35492 -1.77846 +0.30000 0.00000 0.00511 0.85791 1.18302 0.10255 0.61065 -0.14231 -1.25221 -0.52563 -0.85609 -0.59077 1.78223 +1.80000 0.00000 0.55807 -1.18819 0.51377 -1.03441 -0.18416 1.10020 -0.91642 0.44994 -1.04120 1.14044 -1.02499 +0.80000 0.00000 0.49291 -1.08699 -0.48051 -0.67686 -0.81729 0.16521 -1.89325 -1.86433 -0.53021 -0.46267 -0.72306 +0.70000 0.00000 0.23008 -0.89872 -0.51643 1.17519 0.85922 0.60855 -0.67909 -1.34773 0.73467 -0.34888 -0.30830 +0.30000 0.00000 0.02423 1.24985 0.16614 -1.28637 0.57224 -0.84364 -0.39353 -1.74088 1.24013 0.97507 -0.15007 +0.40000 1.00000 0.11208 0.03525 -0.39245 -0.11377 0.63404 0.49347 0.82967 0.78517 -0.91951 -1.75664 0.64045 +0.50000 1.00000 0.08761 -0.33583 1.26800 -0.72976 0.00814 1.32987 -0.11781 -0.66661 -1.10185 2.27882 0.80706 +0.80000 1.00000 0.57171 -0.85473 0.66577 1.36439 0.54393 1.29204 0.52298 -0.49947 0.61281 1.12325 -0.98520 +5.90000 0.00000 0.97490 1.67234 0.39344 -1.01567 2.16253 0.80279 0.61914 -0.45843 0.45193 -0.20418 -1.15520 +0.70000 1.00000 0.23016 1.24650 -0.03458 -0.42057 -1.54388 1.22319 -0.21375 0.48939 0.34747 0.45038 1.34222 +0.80000 0.00000 0.74769 0.85839 1.00208 -1.19187 -0.24232 0.13117 -0.33385 -1.95423 -1.46848 0.45890 -0.21918 +1.00000 0.00000 0.20928 -0.57609 1.34750 0.24074 -0.48346 0.51209 -0.99294 0.29446 -0.75890 -0.23250 0.27144 +0.50000 0.00000 0.07126 2.33266 1.26075 -0.38489 -0.75914 -0.03365 -0.68346 -1.24108 1.49753 -0.59361 1.14823 +1.20000 1.00000 0.22874 1.25185 0.50450 2.50316 0.77947 1.33633 0.15770 -0.34637 1.03892 -0.63850 -0.54986 +1.60000 1.00000 0.09875 -0.71063 -1.46478 1.64192 1.89069 0.25316 0.85041 -1.09798 0.34176 -0.18972 0.21574 +0.70000 1.00000 0.11804 -1.83509 0.05115 -0.01321 1.06461 -1.07933 -1.06559 1.47799 -1.06601 -1.06467 0.15132 +0.40000 1.00000 0.30100 -0.37865 -0.89028 0.80367 0.84436 0.28986 2.07028 1.92842 0.94420 1.02915 1.53462 +1.10000 1.00000 0.72381 -1.39251 -0.62414 0.01521 0.05048 -0.23608 1.31856 0.72546 0.80792 -1.56626 -1.54393 +0.30000 1.00000 0.01019 0.35125 -0.63087 -0.91680 2.22018 1.19039 -1.89882 1.83175 -0.06699 0.68801 0.15075 +1.70000 0.00000 0.73652 0.94774 -1.53453 0.41516 0.28861 -0.03212 0.32367 -0.70823 0.37811 -1.06773 -0.19459 +0.70000 1.00000 0.62700 -2.43666 1.91546 0.07602 -1.88577 -1.81706 0.23790 -0.53740 0.29142 0.92344 -2.05160 +0.20000 0.00000 0.07262 1.00904 -1.49135 -0.27034 -1.76249 0.68368 0.66182 1.38892 1.05108 -0.67303 -1.30416 +0.50000 0.00000 0.23886 0.12038 1.33840 1.53909 -0.70758 0.36123 -2.00352 -2.31136 1.00951 0.40382 -0.61523 +1.30000 1.00000 0.51300 2.03199 -0.48188 -0.24247 -0.12102 -1.71835 0.81646 -1.04706 0.07002 1.35501 0.40669 +0.60000 0.00000 0.02146 0.42489 -0.92674 0.01142 0.32962 -1.02944 0.13242 -1.14959 -0.72369 2.61360 -1.39494 +1.60000 0.00000 0.63545 0.99043 -1.23065 0.15435 -1.32984 1.16857 0.44628 0.05682 1.51927 0.59021 -0.54485 +2.70000 0.00000 0.01835 -0.18491 1.42860 0.65606 0.14236 -1.21349 -1.47502 -1.83849 1.55051 -0.30519 -0.46794 +4.20000 0.00000 0.22506 2.60495 -0.06560 1.60062 1.44777 0.00399 1.05945 0.05074 0.67101 1.79028 -0.80476 +1.60000 0.00000 1.35829 0.64092 0.35310 -0.92032 0.44300 -0.55173 1.43562 0.33740 1.40967 -0.45973 0.01300 +0.90000 0.00000 0.32187 0.87261 0.20152 0.51912 -0.90714 -0.12325 1.79476 -2.35024 -0.02416 -0.57557 -0.22409 +1.10000 0.00000 0.85010 0.34827 0.04765 0.76025 -0.78008 -1.01398 0.70296 1.04130 -1.20253 -0.53496 0.90351 +0.60000 1.00000 0.34151 -0.16032 -0.47344 0.03818 0.46571 -1.51216 -0.85018 -0.64212 -3.14758 0.00861 0.58243 +0.70000 1.00000 0.03435 0.02818 -0.96729 -0.75719 0.28435 -1.10318 -0.12984 0.20352 1.40846 0.73933 -0.69944 +0.40000 1.00000 0.21989 0.24049 0.47456 -0.11273 -0.74866 0.22494 0.23690 -1.18843 0.48282 -0.10750 -1.22481 +0.70000 1.00000 0.47891 0.09086 -0.20616 0.40172 -0.11807 0.46708 -0.14550 2.16133 -0.58469 0.08761 0.43395 +0.50000 1.00000 0.24939 -0.23069 -0.63700 0.10043 -0.34281 -1.54588 -1.03896 0.23795 0.95687 -0.22092 0.45224 +0.10000 1.00000 0.04928 -0.09527 -1.07564 -0.49818 -0.61727 0.23780 -0.26050 -0.34067 0.01433 -0.23006 0.76739 +0.40000 1.00000 0.08136 -0.36548 0.53983 0.52256 -0.22678 1.18279 0.20536 0.61984 -0.41265 0.11361 0.59254 +0.90000 1.00000 0.39365 -0.14344 -0.42689 1.11981 -0.03857 -1.67884 -0.39871 0.33449 0.20846 0.17292 1.27179 +0.30000 0.00000 0.21532 0.60554 -0.76969 -0.30649 -0.97512 -0.46179 3.23782 -0.92099 1.19623 1.44181 -1.55627 +1.70000 1.00000 0.52904 2.68365 0.73854 -0.38156 -0.58455 0.42597 -0.99228 0.82202 -1.58469 -0.13944 0.83958 +0.60000 0.00000 0.40306 -1.19447 0.29891 -0.29689 0.37694 -0.32396 -0.73120 -0.12119 -0.86393 -0.73883 -0.87210 +1.40000 0.00000 0.03815 -0.48555 2.37393 0.59932 -0.25819 0.23685 1.48164 -0.11846 -1.03229 0.30920 -0.66810 +3.10000 1.00000 0.31704 0.97916 -0.50306 1.63739 0.21067 -0.30932 -0.40297 1.00003 -0.18679 1.15505 -0.31920 +0.60000 0.00000 0.36464 1.70963 0.99269 -0.29658 -0.22102 -1.30402 0.32047 -0.55325 -0.41524 1.40212 0.75101 +0.90000 1.00000 0.23286 2.20975 -0.52276 0.31487 1.68649 -1.80536 -1.21530 0.18858 0.93224 0.94172 0.12297 +2.10000 1.00000 0.97309 0.44663 -0.23264 0.70745 0.53847 0.18075 0.37916 -0.94294 -0.23082 -2.39247 0.04361 +0.40000 0.00000 0.31777 -0.59582 0.64211 0.00830 -0.67822 -1.25979 -0.32797 -1.11180 -0.67630 0.84416 -1.75015 +1.90000 1.00000 0.11389 -1.80165 -0.15596 1.91241 0.22360 0.06940 -0.12018 1.36428 -1.20627 -0.78619 0.40490 +0.30000 0.00000 0.23929 -0.98019 0.71055 -0.72496 -1.12062 0.11782 -0.59769 0.45922 -0.67680 0.72624 0.95066 +0.10000 1.00000 0.07913 0.64319 0.49804 -1.58913 -0.17210 0.42973 0.29268 -1.31986 -1.82999 -0.40693 1.54962 +0.20000 1.00000 0.19779 0.33148 0.64139 1.13585 -1.34763 0.42034 0.89613 0.43512 1.38019 0.25660 1.26077 +0.60000 0.00000 0.15505 0.00504 0.02982 -0.49968 0.25175 0.67425 0.46219 0.58000 0.94931 0.47138 0.42203 +0.70000 1.00000 0.38724 -0.92294 1.78199 -0.45740 -1.59572 -0.05220 -1.35045 -1.28891 1.60333 1.62670 -0.32288 +4.40000 0.00000 0.10148 -1.06087 0.31980 1.18524 0.67294 -0.29361 1.32328 -1.08614 -0.21384 -1.11626 -0.66960 +0.40000 0.00000 0.21205 -2.05503 -0.83938 -0.08635 0.01920 -1.50046 -1.42091 0.93423 -0.41873 0.52472 -0.49130 +1.20000 1.00000 0.01571 -0.14218 -0.53189 0.83154 -0.54280 1.64718 1.13428 1.41079 1.00272 -1.89436 -0.82013 +4.30000 1.00000 0.29840 0.39047 -0.36193 -0.34676 0.54955 -1.01782 1.23320 -0.10564 0.78691 -1.99896 -0.72422 +0.40000 1.00000 0.04561 0.46513 0.03276 0.97080 -1.12083 -0.69504 0.94367 0.77264 0.45761 1.09905 -0.48481 +0.30000 1.00000 0.23527 0.13893 -0.67698 0.60305 1.21410 -0.23168 0.18162 1.37595 -1.89980 0.58455 -1.03058 +0.50000 1.00000 0.03250 -0.10396 -0.17825 -0.80434 -0.77527 1.21855 0.38462 -0.41359 -0.17534 0.91177 0.48077 +1.70000 0.00000 0.22080 -2.00607 -0.16880 0.78908 0.93899 -2.23697 -0.47186 -0.26599 -1.15533 0.97597 -1.33541 +2.00000 1.00000 0.22462 -0.32207 1.01036 -0.02014 1.60387 0.92117 2.20242 -0.02353 -0.83061 0.26394 0.43110 +0.30000 1.00000 0.09763 0.13937 -1.64140 1.44841 -1.53911 -1.09693 0.93215 -1.79744 0.47786 0.14638 -0.67843 +0.50000 1.00000 0.47468 -1.05868 0.90051 1.19456 -0.77663 -0.14238 -2.33861 -0.18758 0.48040 0.80136 2.07075 +2.10000 1.00000 0.16622 0.15364 0.59547 1.24025 2.19314 1.34591 -0.81358 -0.91167 0.85894 -0.36306 0.26050 +0.20000 1.00000 0.04171 2.33673 -0.82261 0.62747 0.39372 -0.71791 -1.15031 1.10622 1.14095 -0.03096 -0.47497 +0.70000 1.00000 0.69334 1.75549 0.40474 0.45651 -1.31859 1.19425 0.33629 0.71842 0.79545 0.48068 1.13393 +1.60000 0.00000 0.92100 0.08840 -0.02064 0.66035 0.09917 -0.06088 1.50761 -0.72349 1.09869 -1.09250 -0.72787 +1.40000 0.00000 0.57401 0.73360 0.93655 -1.13481 0.64217 -0.18259 -1.16235 0.78200 0.09578 1.01897 -1.10042 +0.50000 0.00000 0.40108 0.56399 0.69243 -1.84948 -0.35249 0.14541 -0.14232 -1.38975 0.56447 -0.37855 -0.66156 +0.50000 1.00000 0.08420 -2.38245 0.20380 -0.40587 0.57868 0.01155 -0.75604 -0.69997 -0.76780 -0.04641 -0.17146 +1.80000 0.00000 0.71057 -0.42475 0.28539 -0.20078 -0.32477 1.30814 -1.52305 -1.36223 -0.65308 -1.15721 -1.67479 +0.70000 1.00000 0.54581 -0.79583 0.68945 -0.40938 1.30714 0.39494 -0.86136 0.96468 0.37981 0.35708 -1.56360 +0.50000 1.00000 0.08479 -0.23704 -2.36853 0.21677 0.82742 -1.37056 0.41650 0.57948 -0.29881 -0.14777 0.95435 +1.40000 0.00000 0.04858 1.62098 0.55399 -0.71088 0.16537 0.23084 0.04721 -0.80160 -0.37036 0.71292 -0.36980 +0.90000 1.00000 0.44223 0.69712 -0.66020 -1.02107 -1.03968 -0.94000 -0.05073 0.52216 -0.41600 0.29704 -0.14651 +0.20000 0.00000 0.06404 -0.28492 -0.11337 0.31962 1.54157 0.37127 -0.44099 0.64268 0.48107 -0.42470 0.24083 +2.50000 0.00000 0.86339 0.84555 0.98336 0.43426 -0.35524 0.25002 -0.64388 0.03092 -0.69022 -0.22426 -2.05925 +1.30000 0.00000 0.13941 -0.91549 1.05459 -0.30229 1.11287 0.21680 -0.99040 0.56706 -0.11482 1.07554 -0.97839 +1.30000 0.00000 1.16008 -0.88436 0.30746 0.65642 1.15349 -1.06374 -0.47741 0.51826 0.36713 0.60445 -0.09023 +2.90000 0.00000 0.22561 1.06491 0.33620 0.49981 0.08376 -0.65623 -0.70548 0.12343 0.54177 1.00292 -0.44520 +1.20000 0.00000 0.17572 1.27995 1.55255 0.13208 -2.31213 -1.10447 0.30709 -0.82227 0.44535 -0.46226 0.62817 +0.10000 0.00000 0.08218 1.23409 -0.14384 2.06099 1.26601 1.73406 1.45206 -1.05459 -0.25040 0.59435 0.70071 +0.20000 1.00000 0.11230 -1.92646 -0.14995 0.56444 0.05140 -1.82252 0.26424 0.46232 -1.85030 2.07243 -0.20078 +0.30000 1.00000 0.27488 -0.11099 -0.27709 -0.46935 1.25031 -0.28320 1.47313 0.86959 0.75522 -0.04641 0.92801 +0.10000 1.00000 0.04680 -0.21983 0.31557 0.44908 -1.74856 -0.86096 -0.69712 0.67682 -0.91912 0.60088 0.91032 +0.60000 1.00000 0.43928 -0.25896 -0.92844 -0.46440 -1.17506 -0.08587 1.10366 -0.49902 0.04198 -0.45949 0.33407 +0.80000 1.00000 0.20445 0.60216 0.44755 0.03642 2.34203 0.07602 -0.92861 -0.16249 0.19432 0.08362 -0.06280 +2.40000 0.00000 0.65720 0.89076 0.48889 -0.27830 -0.43075 -1.88989 1.03740 1.20989 -0.71868 0.72970 -0.40976 +0.70000 1.00000 0.53551 -0.96042 0.55011 0.21034 -0.45563 -0.04020 0.13981 1.64733 1.17626 0.55026 0.85941 +0.50000 1.00000 0.17612 -0.53230 -0.74261 -0.28282 -1.34140 -0.11978 1.83856 -0.42653 -0.76619 -2.13056 1.15927 +0.10000 0.00000 0.05279 -1.43876 -0.91904 -1.28660 1.45627 -1.53605 -0.13772 -0.12014 -1.11961 -0.04693 -1.16146 +0.30000 1.00000 0.12053 -1.50421 1.18250 0.73438 0.13049 0.73385 0.75861 -0.33390 0.65143 -0.02921 0.62100 +0.50000 1.00000 0.28532 -0.19517 1.18114 -1.35339 -0.29063 1.20088 0.31450 -0.18548 2.87647 -0.73612 1.84248 +2.70000 1.00000 0.26268 1.38494 1.74414 -0.37998 -0.46183 -0.98883 -1.47174 -0.93956 0.50729 -1.00623 -0.91988 +1.30000 0.00000 0.27654 0.97065 0.35385 0.50176 0.00572 -0.02729 -0.68552 1.61030 -0.89726 -0.85749 0.07469 +0.10000 1.00000 0.02577 0.25801 -0.10380 -0.43126 -0.37204 -0.45917 0.83395 -0.95274 0.62202 -1.32051 0.57482 +0.80000 1.00000 0.02529 -0.45755 1.24386 -1.02113 -0.64051 0.70373 1.01338 -0.19148 0.70627 0.67508 0.32351 +1.50000 0.00000 0.07525 0.15543 0.97427 -0.11614 0.10320 1.02957 1.21125 0.22332 -1.48803 -0.40184 0.30885 +1.80000 1.00000 0.50560 -0.16332 0.23598 -0.24711 0.07134 0.87035 -1.01406 1.09791 -0.94216 0.70829 0.06276 +0.50000 1.00000 0.18048 -0.67798 -1.31354 -0.73030 -1.39952 0.68134 -0.16836 -1.86250 -1.31042 -0.21032 -0.99834 +0.40000 0.00000 0.08064 0.89826 -0.05446 0.81280 -0.11819 -1.49979 1.37450 1.07699 0.57002 0.37795 -1.26203 +3.00000 1.00000 0.83123 -0.90258 -0.55334 1.14651 -0.22868 -1.63405 0.34597 0.42649 0.51761 -0.93438 -1.09466 +1.10000 1.00000 0.13882 -0.24209 -0.05947 -1.04969 1.60623 0.88685 -1.22931 2.09444 0.87342 1.20215 -0.50204 +1.10000 1.00000 0.15602 -0.34929 -1.02811 0.58494 0.84176 0.66274 0.97864 -1.21128 1.54766 1.00498 -0.17922 +0.70000 0.00000 0.06762 -0.13825 -0.16718 -0.58170 0.39320 0.58856 -0.10927 -0.08848 1.12438 -0.24281 -1.88088 +1.40000 0.00000 0.30186 2.05412 0.86589 1.54687 -0.15961 -1.38354 0.27315 0.38625 0.22832 -0.11481 0.77556 +1.10000 1.00000 0.89902 0.73698 -0.44485 -0.75391 -1.47051 -0.18714 -0.14417 0.55321 -1.29181 -0.64036 1.40306 +0.60000 1.00000 0.34608 2.54382 1.04366 -0.54795 -0.83492 -0.36182 -0.22231 -1.50016 1.54814 -0.20354 -0.44719 +0.50000 0.00000 0.29632 -0.37174 0.92653 0.07582 -1.11830 0.10205 0.01093 -1.32829 -1.22061 0.92842 -0.88099 +1.20000 0.00000 0.46782 -1.10320 -0.50160 1.85001 0.55472 1.41359 -0.65611 -0.06306 0.73754 -0.60610 -0.28437 +0.20000 1.00000 0.00207 -1.33284 1.05596 -1.64198 -0.12181 -0.99756 1.15729 -0.91018 -1.11450 2.13915 0.52839 +0.60000 0.00000 0.23960 1.72166 -0.91766 0.14233 -2.51683 -1.42285 -0.29877 0.51553 0.42550 -1.10110 0.46576 +0.60000 1.00000 0.45254 -0.21340 -0.95018 -1.93197 1.66001 -2.27360 -0.66379 -0.07282 -1.20011 0.06670 -1.34635 +0.30000 0.00000 0.17508 0.04782 1.22140 -0.25029 -1.54210 -0.61239 -0.38749 -1.83434 0.82215 0.01834 -0.47591 +0.40000 1.00000 0.14743 1.16024 -0.33724 -0.23757 0.20324 -1.13728 -0.69158 -2.35734 2.36227 -0.11399 1.83977 +0.40000 1.00000 0.05977 -0.26137 0.63005 2.23918 0.32914 1.16818 1.45920 -0.50488 0.61158 -0.69791 0.00977 +0.90000 0.00000 0.26469 -0.53794 -1.44163 1.38510 -0.90220 0.81594 -2.74929 2.64114 0.14232 0.00303 -1.13268 +1.10000 0.00000 0.78721 0.95594 -0.08791 1.14831 1.90508 -0.16446 0.30828 -0.31597 -0.97289 -0.74836 -0.45629 +1.90000 0.00000 0.40714 0.28869 0.26408 -0.54844 -1.29401 0.48816 -0.93909 -1.00829 -1.20184 -1.36593 -1.28194 +1.10000 0.00000 0.82541 -1.36921 1.26598 0.94078 1.28625 0.45932 -0.92989 1.88318 -0.22993 0.02964 0.94972 +0.70000 0.00000 0.39744 1.44490 -0.63655 0.18774 1.05447 0.16334 1.00415 -1.50058 0.03385 -1.17894 0.56098 +0.30000 1.00000 0.09922 -0.85833 -0.14211 2.02754 0.17389 1.18752 -0.14411 0.48573 -1.44428 -0.17839 -1.04092 +1.30000 1.00000 0.61860 -0.21922 0.06945 -0.26665 -0.54619 0.53593 0.66266 0.38204 -0.31937 -1.12040 -0.23536 +0.50000 1.00000 0.00991 -0.70146 -1.21262 -0.35735 1.73741 0.11094 -0.94615 1.51233 -0.81372 0.92888 0.80877 +0.40000 0.00000 0.13061 -0.00398 0.48239 0.39765 -0.26512 -0.69912 0.24785 -0.16097 -0.97971 0.40524 0.54638 +2.10000 1.00000 0.68123 -0.16329 -0.28725 0.79996 0.93897 -0.25371 -0.16898 0.69060 -1.81229 1.01470 -1.82545 +1.40000 0.00000 0.31050 0.67841 1.15093 1.10446 1.51291 0.55984 0.99490 0.17072 0.62932 0.09375 -0.43611 +2.80000 1.00000 2.74661 -0.48137 0.43500 -1.21187 0.57839 1.80966 -0.99153 0.80017 -2.26403 1.27318 0.23447 +1.00000 0.00000 0.68609 -1.14471 1.07275 0.73059 -0.82290 0.24756 -1.27167 1.92971 -0.10703 0.66591 -0.89378 +0.30000 1.00000 0.26720 -0.21151 -1.12925 0.80659 0.37817 0.16105 0.66458 -1.02756 -0.43368 0.70226 1.86945 +0.20000 1.00000 0.01068 -1.11949 0.55108 -1.17912 -0.74674 -1.13190 0.54687 -0.04748 -0.65158 -1.00314 0.51139 +0.50000 1.00000 0.06590 0.39083 -1.99256 -0.04854 -1.50416 -1.83215 1.82553 0.58411 0.03448 -0.63830 0.63647 +0.30000 0.00000 0.18542 1.54810 1.59698 -0.55391 0.10763 -0.61231 1.32889 0.51451 -0.60665 0.67104 0.90071 +2.00000 0.00000 0.36035 0.20557 0.78995 -0.82281 1.69678 0.38375 -1.81994 -0.59729 -1.51422 1.09234 0.51738 +2.40000 1.00000 2.06846 0.25349 -0.21835 0.61716 -0.96026 0.49205 1.80235 0.15939 0.52807 -1.35078 -0.06943 +1.20000 0.00000 0.43371 0.53904 -0.31775 -1.63176 1.98101 1.31855 0.61305 -1.02356 0.94438 -0.52072 -0.50295 +0.20000 0.00000 0.07024 0.72932 -0.67900 0.52918 -1.39522 -0.33907 0.35157 -0.95770 -2.18996 -0.58862 0.69042 +0.80000 0.00000 0.07712 0.45468 0.90040 -0.19616 0.41571 -0.90060 1.51679 -0.12981 -0.97294 -0.10945 -1.49618 +0.30000 0.00000 0.03584 1.23598 0.12883 0.38994 0.57260 -1.62470 1.68044 1.26968 -0.64251 -0.60008 0.71153 +0.20000 1.00000 0.13328 -0.94264 -0.95259 0.98208 0.00833 0.26202 0.94758 0.12353 -0.96615 -1.18305 0.86769 +0.50000 1.00000 0.03595 0.45300 -1.07306 0.83564 -0.90996 0.81424 0.32201 0.60061 -0.81453 -1.01389 1.79896 +0.70000 1.00000 0.53531 -0.36458 -0.31083 -1.43401 1.02692 -1.70004 -0.49371 0.28645 -0.25898 -0.40790 0.34461 +1.50000 1.00000 0.20360 1.52043 -0.26607 -1.09538 -0.72628 -0.14364 0.54597 -1.40358 -1.34770 2.04245 -0.06022 +0.20000 0.00000 0.07710 2.33149 -0.15380 -1.14074 -0.60954 0.54024 -1.69359 -2.13615 0.18868 1.39556 -0.85436 +0.40000 1.00000 0.06402 -0.38695 0.12472 -0.36009 -1.66260 -0.37820 -0.44470 1.27690 -1.48605 0.03437 -1.16101 +2.40000 1.00000 0.28470 1.55944 -0.36433 0.05562 0.65430 -2.26211 -1.80336 -0.21820 -1.64530 0.45499 -0.36550 +0.20000 0.00000 0.00551 0.07618 1.13968 0.76878 1.13408 -0.24329 0.41839 0.04609 -1.30930 1.50674 0.15328 +2.30000 1.00000 0.13195 0.12100 -0.62849 0.31748 0.63637 1.57913 -0.89443 0.35607 -1.27215 -1.05086 -0.50072 +1.80000 0.00000 0.08020 0.16672 0.21688 1.13902 1.59670 -0.38312 0.04294 -1.84063 -0.99102 -1.30282 1.16464 +1.20000 0.00000 0.74896 1.38765 0.37669 -1.21934 1.32953 -1.98963 -2.13653 -0.79169 0.01195 0.04070 0.34871 +0.20000 0.00000 0.00791 -1.62358 -0.22414 0.67328 -0.21697 0.29037 -0.13936 0.37456 -0.56370 -1.13378 -0.49195 +0.30000 0.00000 0.00858 0.48653 -0.47418 -1.26140 1.78148 0.17478 1.63168 -0.88460 0.22147 -0.30615 0.66503 +1.10000 1.00000 0.93405 0.77399 0.45708 -0.07950 0.44372 -0.20407 -0.49405 1.29247 0.58411 0.98705 -0.72343 +0.20000 1.00000 0.12498 -0.92650 0.64570 -0.62010 -1.39367 0.45445 -1.66181 -0.70280 -0.70214 -0.13226 -0.05173 +0.20000 1.00000 0.17057 -0.93230 -1.18796 0.27497 0.09378 0.15336 1.46695 -0.49255 -0.85503 -0.75010 -0.04250 +0.60000 0.00000 0.04770 0.34804 0.94995 0.72538 0.12419 0.98893 -1.30715 -0.83709 -1.53859 -1.18164 -0.10363 +3.10000 0.00000 0.24878 -0.27524 0.98860 0.52618 1.68672 -1.63939 2.22568 -1.59679 -0.39047 0.54517 -0.70259 +0.10000 1.00000 0.00119 -0.65400 -1.64149 -1.36859 1.44073 1.66582 -0.14708 0.90595 -0.03035 0.81504 0.10136 +1.40000 1.00000 1.00203 -0.81662 1.33003 -0.98118 -0.97958 -0.92075 -0.61809 1.00900 0.34355 0.76449 -1.27193 +1.10000 0.00000 0.90981 1.91621 -0.83845 1.41652 1.16161 1.64779 -0.75305 -0.83859 0.84296 1.42585 -0.72301 +2.60000 1.00000 0.17914 1.40607 -0.28355 0.06399 -0.47987 -0.82742 -0.24348 -1.63302 -0.65638 1.43838 -1.57279 +3.30000 1.00000 1.36343 0.89757 0.22892 -1.46753 -0.35953 -0.95941 0.14817 0.41190 0.72845 -0.68264 -0.64940 +3.40000 0.00000 0.46038 0.76225 0.08295 -0.82201 -0.08767 -0.20032 0.69771 0.26845 -0.38886 -1.24166 -0.58442 +1.30000 1.00000 0.68943 -0.50308 -0.08961 1.02699 -0.14458 0.93932 -0.37125 -0.48852 -1.49178 0.16634 1.02284 +1.00000 0.00000 0.05161 0.67141 -0.81065 0.13612 1.83266 -0.20170 -1.16810 -0.75463 -2.02271 -1.55125 0.25792 +0.20000 1.00000 0.13066 -1.06267 -0.09016 -0.07905 1.56025 0.68883 -1.53289 1.13700 -1.26008 -0.21611 -0.97764 +4.00000 1.00000 0.94688 -0.70284 -0.68694 1.50505 -0.24536 -0.74781 -0.43438 -0.02517 -0.60913 -1.07802 0.41976 +0.30000 1.00000 0.00132 0.01796 1.26928 0.85887 -0.00670 -0.23357 0.35562 1.08288 -1.59691 3.00638 1.67534 +1.50000 1.00000 1.13608 1.16983 0.77347 0.41651 0.72949 -0.73281 1.17539 1.53487 1.81621 -0.25428 1.62423 +1.60000 0.00000 1.20554 0.05565 -0.52898 -0.14566 0.08737 0.90938 -0.07621 1.08019 -1.68943 0.44843 0.64478 +1.10000 0.00000 0.19445 -0.00957 -1.43771 2.33792 -1.27935 0.41219 -0.77601 -0.73709 -1.88358 -0.37912 -1.49641 +1.60000 1.00000 0.27986 1.50813 -0.51979 1.71542 1.52506 -1.06200 0.27987 2.39909 2.61405 -1.97769 0.29501 +1.40000 0.00000 0.04100 0.58992 0.13231 -0.29243 -0.50992 0.10282 -0.90073 0.00624 -0.65900 1.64648 -0.95289 +1.00000 0.00000 0.83413 0.82804 -0.06205 -1.14134 0.99848 -0.91858 -0.73159 -0.89335 -0.74471 -0.16358 0.77739 +0.70000 0.00000 0.09446 1.48083 0.80258 0.23336 1.19433 -0.68533 0.70738 0.15646 -0.17469 -1.00471 2.03512 +0.40000 0.00000 0.19390 2.40228 0.84566 0.27004 0.30415 0.10103 0.69431 -0.57915 -0.95526 0.33643 0.61523 +0.30000 1.00000 0.01813 -0.36579 -1.43385 -1.14985 0.74714 -1.44873 -2.47962 1.70665 0.31440 0.58379 -0.48322 +0.30000 1.00000 0.23005 0.33267 0.74881 -0.83343 0.12539 0.63773 1.24234 0.05388 0.37529 -1.35082 0.76315 +1.70000 0.00000 0.37298 0.35965 -0.18051 0.63746 1.28644 0.05868 -0.03454 1.67051 0.68689 0.64782 -0.63823 +1.10000 0.00000 0.56399 -0.75068 0.31384 -1.86374 -1.47222 0.16047 -0.09538 -2.27530 -2.15169 0.07035 0.99788 diff --git a/statsmodels/duration/tests/results/survival_data_100_5.csv b/statsmodels/duration/tests/results/survival_data_100_5.csv new file mode 100644 index 0000000..f81d97f --- /dev/null +++ b/statsmodels/duration/tests/results/survival_data_100_5.csv @@ -0,0 +1,100 @@ +2.00000 0.00000 0.04088 1.65888 0.43887 2.16009 1.53852 -0.32477 +0.80000 0.00000 0.64317 -0.01543 1.27200 0.06238 -1.39983 0.28912 +0.70000 0.00000 0.62035 0.01568 1.10189 1.08241 0.28838 0.03060 +0.20000 0.00000 0.00396 1.92122 -0.74627 -0.20202 -0.49432 0.18627 +1.30000 0.00000 0.48061 0.03445 0.62648 -0.05107 0.21468 -1.33564 +0.10000 1.00000 0.00311 -0.42507 -0.02765 0.92646 -1.79002 0.46062 +0.10000 1.00000 0.00360 -1.92760 -0.97652 0.33572 1.09292 0.99413 +0.20000 1.00000 0.16825 -0.92224 -1.46157 -0.83315 1.27701 0.89145 +1.90000 0.00000 0.31681 0.47668 -2.21992 -1.23187 0.17330 -0.71609 +0.20000 1.00000 0.11154 -0.78852 -0.22280 -0.39515 0.49144 0.73336 +0.20000 0.00000 0.08597 0.63231 0.55002 0.32947 0.04749 -0.85148 +0.60000 1.00000 0.07035 -0.98309 0.24301 -0.72338 0.81746 -1.26767 +0.90000 1.00000 0.12016 -0.95699 -0.79824 -0.33108 1.09238 -1.56246 +0.90000 1.00000 0.02773 0.71522 0.92762 -0.58902 1.14907 0.04783 +1.10000 0.00000 0.69469 0.23457 0.83722 -0.50415 0.55788 -0.06246 +1.20000 0.00000 0.75846 -0.48568 0.26540 -0.65537 1.36581 -0.12905 +0.90000 1.00000 0.18518 -0.64696 1.20687 -1.18730 1.23675 -0.30962 +0.40000 1.00000 0.05883 -0.81157 0.13249 -1.84991 0.19780 0.79789 +0.30000 1.00000 0.29091 0.50970 1.45016 0.02051 1.09439 0.66784 +0.90000 0.00000 0.21925 1.25407 -0.55512 0.06966 -0.22258 -1.92762 +0.80000 0.00000 0.52030 -1.82573 -0.96723 3.06176 -0.78653 -1.03201 +0.50000 0.00000 0.31396 -1.50465 0.34928 -0.28756 -0.75276 -1.60910 +2.80000 0.00000 0.50161 -0.51879 1.85085 1.62061 1.62330 0.31456 +0.20000 0.00000 0.17478 0.51892 -2.01221 0.24535 0.33276 -0.00219 +0.70000 1.00000 0.02345 1.01616 -2.08282 0.85616 0.20281 0.85377 +0.50000 0.00000 0.02822 -1.22080 0.43769 -0.94754 -1.30187 0.90808 +0.60000 0.00000 0.35722 1.42375 -0.38970 -0.64537 -1.08120 -0.66272 +0.10000 0.00000 0.01318 -2.32399 -0.32153 -0.64911 2.44607 -0.67781 +0.70000 1.00000 0.33234 -0.86239 2.74390 -0.26652 -1.38002 -1.72868 +0.30000 1.00000 0.01818 -0.00276 -0.73023 -0.07908 -0.36846 0.24726 +2.50000 1.00000 0.12683 -0.20405 1.38441 0.11380 -1.55265 1.61875 +1.90000 1.00000 1.05276 0.46781 0.14070 -2.79994 0.69604 -0.71800 +0.30000 0.00000 0.12424 0.34365 -1.30879 0.06613 -1.80332 0.50442 +2.00000 1.00000 0.16247 -0.31284 -1.08730 -0.08539 0.00160 -1.68699 +2.10000 1.00000 0.19426 -0.31993 0.21405 -0.52766 -1.15955 -1.66554 +0.20000 1.00000 0.01721 0.25259 0.37725 1.05776 0.20531 0.00615 +0.20000 0.00000 0.08898 0.25225 -0.59453 -1.68651 0.01607 -0.13487 +3.30000 1.00000 0.36441 1.58715 0.10576 0.90020 -0.64476 0.16278 +1.60000 1.00000 0.25111 0.25002 0.29993 0.17598 -0.01910 0.14305 +1.00000 1.00000 0.91850 0.51040 -0.37021 -1.11632 0.21391 -0.13709 +1.50000 1.00000 0.85495 1.01267 0.53073 1.60362 0.91206 -0.06950 +1.70000 0.00000 0.98528 -0.03470 0.46678 0.51241 1.81681 -0.87271 +1.50000 0.00000 0.45072 1.22177 -0.33281 -0.21419 0.30984 0.25901 +0.30000 1.00000 0.01095 0.08628 0.06831 -0.55069 -0.98570 -1.47021 +0.70000 1.00000 0.20957 0.09985 0.55591 -0.14907 1.44737 -0.19020 +1.80000 0.00000 0.48048 -0.15396 2.06115 0.73874 -0.63995 0.83598 +1.20000 1.00000 0.05958 1.34778 1.18792 -0.37932 2.49795 0.34569 +1.60000 0.00000 0.37681 0.42462 0.39925 0.31818 -1.24178 -2.10098 +1.60000 0.00000 0.27681 0.43797 0.42857 0.71614 0.47339 -0.69239 +1.50000 0.00000 0.16083 -0.68583 -1.09449 0.14085 0.15615 -2.17219 +0.30000 0.00000 0.11799 0.84516 0.60886 -0.02455 -0.88110 -0.78903 +1.30000 0.00000 0.47439 1.14278 0.22765 0.00355 1.24747 -0.44769 +1.00000 0.00000 0.34329 1.13115 -0.71649 0.20680 -0.62674 0.11690 +0.90000 0.00000 0.07241 0.87043 -0.52193 -1.82556 -0.96574 -0.46303 +1.50000 1.00000 0.40548 0.17182 1.23767 -0.22511 0.92575 -0.99200 +0.70000 0.00000 0.13319 0.64169 0.50024 -1.40025 -0.22809 0.37239 +0.40000 1.00000 0.30444 -1.48351 -0.71597 1.13583 -0.31381 0.17228 +0.40000 0.00000 0.00518 0.78247 0.27451 0.90321 0.88329 0.87831 +0.10000 1.00000 0.06982 -0.40623 -0.59915 0.16943 0.65481 0.74213 +0.20000 1.00000 0.02326 0.98320 -0.33050 -1.45162 1.03546 0.05095 +1.70000 1.00000 0.26671 0.39948 -0.01170 -1.99802 1.09214 0.38202 +0.50000 1.00000 0.20631 1.85586 1.26267 1.09781 0.26681 0.86920 +0.30000 1.00000 0.03166 -1.12012 -2.17322 -0.81189 0.47966 0.66974 +0.40000 0.00000 0.17714 -0.62389 0.11727 0.30922 0.45983 -1.18198 +0.90000 0.00000 0.39204 -1.45848 0.60149 0.40569 -0.14587 -0.41534 +0.30000 0.00000 0.03714 0.83848 0.53119 -0.58428 1.31723 -1.24635 +1.10000 0.00000 0.46379 0.21576 -0.81655 0.31364 -0.27610 -1.03055 +1.40000 0.00000 0.71581 0.88179 2.50473 -1.20963 0.22792 -0.68145 +0.50000 1.00000 0.04560 -0.13862 1.38279 -0.96235 1.86021 0.77598 +0.10000 0.00000 0.05473 0.46752 -1.80012 -0.98436 0.60777 -0.35878 +0.80000 1.00000 0.42481 -0.40098 2.76071 0.74394 1.09659 0.23616 +0.30000 0.00000 0.23718 -0.32013 0.39748 -0.88636 -1.68891 0.75689 +0.50000 0.00000 0.03726 0.59910 -0.14940 -0.01991 -0.28925 0.23417 +0.30000 0.00000 0.12740 0.15096 0.90280 -0.61087 0.48783 1.80243 +0.70000 1.00000 0.63824 0.55312 -0.76756 -1.62404 0.50754 1.83655 +1.60000 0.00000 0.03744 -0.92345 -0.40163 -0.14609 -0.71917 -0.39060 +3.20000 0.00000 0.52178 0.30277 -0.17976 -0.45561 -0.48284 -1.54195 +0.90000 0.00000 0.04532 -0.14812 0.03298 -0.11498 0.09681 -2.37051 +0.80000 0.00000 0.36657 -0.97253 -0.04856 0.14913 0.00607 0.78143 +0.60000 1.00000 0.03655 -0.99128 0.85325 1.24141 -1.52963 1.18147 +0.40000 0.00000 0.01616 1.21142 -2.49815 2.32805 0.95173 0.40863 +0.30000 1.00000 0.00955 -2.06282 -1.01843 -1.49079 0.84123 1.16571 +0.40000 1.00000 0.01111 -0.02352 -1.14282 -1.73493 -0.08088 0.22988 +1.00000 1.00000 0.14784 0.66488 -0.55177 0.29813 1.06110 -0.09346 +0.10000 0.00000 0.01538 -0.01239 -0.38551 0.90332 0.98841 -1.09158 +1.80000 1.00000 1.44280 1.15346 1.52878 -0.78441 0.74890 1.19751 +0.40000 0.00000 0.14388 -0.62050 1.33600 -1.25079 1.04416 1.09523 +0.50000 0.00000 0.25285 0.43475 -0.66619 -1.80572 -1.41659 -0.18333 +0.70000 1.00000 0.12394 0.07814 -0.49443 0.52055 -0.85472 1.47196 +1.00000 0.00000 0.00122 1.35184 -0.75871 -0.33501 -0.20529 1.28920 +0.90000 1.00000 0.41370 0.54683 1.24851 -1.14847 -0.04749 1.60048 +0.10000 1.00000 0.06023 0.32626 -0.11112 -0.10537 0.58654 0.55261 +1.30000 0.00000 0.27967 -0.77736 -0.03111 -3.14766 -0.79793 -0.72638 +0.70000 0.00000 0.36676 -0.77517 0.31001 -1.09973 -1.75452 -0.82917 +0.30000 1.00000 0.13509 -0.12913 1.30423 -1.15341 0.04622 0.52666 +1.80000 0.00000 0.11982 -0.64227 -0.51723 0.64616 -1.48093 -0.81054 +1.10000 1.00000 0.26003 -0.04358 -0.64401 1.67422 -1.79441 -1.28941 +1.00000 0.00000 0.98041 1.36679 0.03887 0.94946 -1.98330 -1.71907 +0.50000 1.00000 0.48143 0.25458 0.05441 0.11660 0.00090 -0.40448 +1.80000 1.00000 0.15619 0.29362 -1.22544 -0.09859 0.02863 -1.39324 diff --git a/statsmodels/duration/tests/results/survival_data_20_1.csv b/statsmodels/duration/tests/results/survival_data_20_1.csv new file mode 100644 index 0000000..8b6910e --- /dev/null +++ b/statsmodels/duration/tests/results/survival_data_20_1.csv @@ -0,0 +1,20 @@ +0.70000 1.00000 0.17884 -0.80807 +0.60000 0.00000 0.23284 -0.10099 +1.40000 1.00000 0.07038 -0.34916 +0.80000 1.00000 0.04943 1.32464 +0.40000 1.00000 0.19263 -1.51983 +0.70000 0.00000 0.11941 0.75329 +0.40000 1.00000 0.16606 0.13835 +1.20000 0.00000 0.05183 0.97574 +1.20000 0.00000 0.27814 1.15109 +0.30000 0.00000 0.26536 -0.07403 +0.50000 1.00000 0.15457 -1.10065 +0.40000 1.00000 0.19745 -0.64876 +0.30000 1.00000 0.07634 0.76335 +1.10000 0.00000 0.25912 0.86522 +0.50000 1.00000 0.00805 -0.27593 +1.50000 0.00000 0.47960 0.24884 +0.10000 0.00000 0.00516 0.33618 +0.20000 0.00000 0.07805 0.39894 +1.30000 1.00000 0.28314 0.19641 +0.70000 0.00000 0.29323 0.70037 diff --git a/statsmodels/duration/tests/results/survival_data_50_1.csv b/statsmodels/duration/tests/results/survival_data_50_1.csv new file mode 100644 index 0000000..0914f4f --- /dev/null +++ b/statsmodels/duration/tests/results/survival_data_50_1.csv @@ -0,0 +1,50 @@ +1.10000 0.00000 0.34994 -0.01447 +0.50000 0.00000 0.19143 0.10335 +0.20000 1.00000 0.07772 -0.23178 +0.40000 1.00000 0.20723 -2.16909 +1.00000 0.00000 0.15399 -0.10232 +0.40000 1.00000 0.03610 -0.49694 +0.40000 1.00000 0.12840 -1.20376 +0.20000 0.00000 0.14323 0.78727 +0.30000 0.00000 0.29799 0.31506 +0.20000 1.00000 0.14530 0.89771 +1.80000 0.00000 0.20163 2.18046 +0.20000 1.00000 0.08723 -0.49941 +0.70000 0.00000 0.62887 0.74497 +1.70000 0.00000 1.26137 0.31418 +1.00000 1.00000 0.61647 1.54372 +0.70000 0.00000 0.16552 1.02511 +0.80000 1.00000 0.24764 0.03132 +0.60000 1.00000 0.31866 -0.75876 +0.10000 0.00000 0.04446 0.16542 +0.40000 0.00000 0.28586 0.12311 +0.50000 1.00000 0.36568 -0.70318 +0.40000 1.00000 0.06591 0.10302 +2.40000 0.00000 0.62202 0.89696 +0.30000 1.00000 0.04989 -2.19325 +0.50000 0.00000 0.14153 0.35311 +1.20000 0.00000 0.32188 0.37552 +1.20000 1.00000 0.43017 0.85034 +0.20000 0.00000 0.08460 0.69427 +0.40000 0.00000 0.11157 1.02984 +1.90000 1.00000 0.82567 0.56098 +0.70000 1.00000 0.03936 -0.32045 +0.40000 1.00000 0.29959 -0.53575 +0.50000 0.00000 0.40070 -2.07033 +2.80000 0.00000 0.47653 -0.13154 +1.70000 0.00000 0.90095 1.60037 +0.70000 0.00000 0.12335 0.39483 +0.80000 0.00000 0.56741 -0.29127 +0.40000 1.00000 0.35975 -0.62702 +0.60000 0.00000 0.34351 -0.60780 +1.00000 0.00000 0.54425 -0.83077 +2.40000 1.00000 0.15080 0.01460 +1.50000 0.00000 0.15170 2.29830 +1.00000 1.00000 0.09671 0.80049 +0.30000 1.00000 0.23474 0.28060 +0.90000 0.00000 0.56784 -0.45666 +1.60000 1.00000 0.73536 0.17942 +0.20000 0.00000 0.19858 1.43121 +0.30000 0.00000 0.10249 0.63181 +0.40000 0.00000 0.15787 -0.86227 +1.10000 1.00000 0.40295 0.73249 diff --git a/statsmodels/duration/tests/results/survival_data_50_2.csv b/statsmodels/duration/tests/results/survival_data_50_2.csv new file mode 100644 index 0000000..631c927 --- /dev/null +++ b/statsmodels/duration/tests/results/survival_data_50_2.csv @@ -0,0 +1,50 @@ +1.00000 1.00000 0.03528 -0.38315 -1.11646 +0.30000 1.00000 0.01149 -2.16263 0.67790 +1.50000 1.00000 1.19729 1.33121 -0.43045 +0.70000 1.00000 0.53896 0.84117 -0.63001 +0.20000 1.00000 0.16054 -0.95780 -0.82060 +0.90000 1.00000 0.30738 -1.08477 -0.06120 +0.40000 0.00000 0.12942 -1.76866 -0.04241 +0.50000 1.00000 0.13266 -0.26914 -1.53422 +0.90000 0.00000 0.15526 -0.81154 -0.36088 +0.60000 0.00000 0.12826 0.33186 0.65154 +0.70000 0.00000 0.22373 0.92204 0.25643 +1.20000 1.00000 0.48185 -0.43982 0.31456 +0.90000 0.00000 0.63365 -1.04665 -2.21337 +0.60000 0.00000 0.07299 -2.42939 0.18910 +1.20000 1.00000 0.69923 -0.29619 0.26199 +0.80000 0.00000 0.10030 0.85841 0.88421 +0.80000 1.00000 0.63120 -0.36353 0.26827 +0.70000 1.00000 0.55604 -1.95990 -0.44759 +1.10000 0.00000 0.40564 0.88427 -1.96625 +0.20000 1.00000 0.03342 0.64777 -0.36391 +0.10000 1.00000 0.06233 -0.64523 0.51863 +1.10000 1.00000 0.04864 2.43561 0.44143 +1.00000 0.00000 0.14794 1.51211 -1.71867 +1.30000 1.00000 0.16023 -0.49040 -0.02378 +0.40000 1.00000 0.24862 0.08828 -0.70830 +0.50000 0.00000 0.12510 1.64139 -0.07560 +1.90000 1.00000 0.57775 0.22910 -0.06035 +0.60000 0.00000 0.21988 -0.61760 -0.84216 +1.50000 0.00000 0.73572 -0.31742 -0.50461 +0.20000 0.00000 0.09880 0.01778 -0.61300 +2.70000 1.00000 0.68267 0.46799 -1.20130 +0.20000 0.00000 0.00640 -0.57452 0.07641 +1.00000 0.00000 0.53120 0.10882 -1.29716 +1.40000 0.00000 0.39915 1.78210 -0.98747 +0.30000 1.00000 0.24249 -0.52481 -0.00631 +1.50000 0.00000 0.90297 -0.15558 -0.41401 +0.60000 0.00000 0.11513 1.91513 0.84025 +2.90000 0.00000 1.22897 0.83216 0.05158 +0.20000 1.00000 0.14026 -0.15508 2.57765 +0.20000 1.00000 0.02342 -0.43017 -0.19378 +0.10000 1.00000 0.01043 -2.09826 1.82889 +1.00000 0.00000 0.12414 -0.15255 -0.78868 +0.10000 0.00000 0.08182 2.05096 -0.00273 +0.70000 0.00000 0.50106 -1.11553 -0.37599 +0.70000 0.00000 0.04540 0.20011 -1.63279 +0.70000 1.00000 0.41003 1.04118 0.07873 +0.40000 1.00000 0.33584 -1.70869 -0.94676 +1.20000 0.00000 0.59698 0.21795 -2.65967 +1.10000 0.00000 0.90747 1.10303 2.21828 +0.20000 0.00000 0.15655 1.50321 0.88795 diff --git a/statsmodels/duration/tests/results/survival_enet_r_results.py b/statsmodels/duration/tests/results/survival_enet_r_results.py new file mode 100644 index 0000000..b94bc60 --- /dev/null +++ b/statsmodels/duration/tests/results/survival_enet_r_results.py @@ -0,0 +1,10 @@ +import numpy as np + +coef_50_2_0 = np.array([-0.6748149, 0.5219471]) + +coef_50_2_1 = np.array([-0.3464841, 0.211115]) + +coef_100_5_0 = np.array([ + -0.4839566, -0.3130558, -0.1239565, 0.3466049, 0.5827503]) + +coef_100_5_1 = np.array([-0.1314948, 0, 0, 0.0324285, 0.2364489]) diff --git a/statsmodels/duration/tests/results/survival_r_results.py b/statsmodels/duration/tests/results/survival_r_results.py new file mode 100644 index 0000000..55f9cf5 --- /dev/null +++ b/statsmodels/duration/tests/results/survival_r_results.py @@ -0,0 +1,442 @@ +import numpy as np + +coef_20_1_bre = np.array([-0.9185611]) + +se_20_1_bre = np.array([0.4706831]) + +time_20_1_bre = np.array([ + 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 1.1, 1.2, 1.3, 1.4, 1.5]) + +hazard_20_1_bre = np.array([ + 0, 0, 0.04139181, 0.1755379, 0.3121216, 0.3121216, 0.4263121, + 0.6196358, 0.6196358, 0.6196358, 0.909556, 1.31083, 1.31083]) + +coef_20_1_et_bre = np.array([-0.8907007]) + +se_20_1_et_bre = np.array([0.4683384]) + +time_20_1_et_bre = np.array([0]) + +hazard_20_1_et_bre = np.array([0]) + +coef_20_1_st_bre = np.array([-0.5766809]) + +se_20_1_st_bre = np.array([0.4418918]) + +time_20_1_st_bre = np.array([0]) + +hazard_20_1_st_bre = np.array([0]) + +coef_20_1_et_st_bre = np.array([-0.5785683]) + +se_20_1_et_st_bre = np.array([0.4388437]) + +time_20_1_et_st_bre = np.array([0]) + +hazard_20_1_et_st_bre = np.array([0]) + +coef_20_1_efr = np.array([-0.9975319]) + +se_20_1_efr = np.array([0.4792421]) + +time_20_1_efr = np.array([ + 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 1.1, 1.2, 1.3, 1.4, 1.5]) + +hazard_20_1_efr = np.array([ + 0, 0, 0.03934634, 0.1663316, 0.2986427, 0.2986427, 0.4119189, + 0.6077373, 0.6077373, 0.6077373, 0.8933041, 1.285732, 1.285732]) + +coef_20_1_et_efr = np.array([-0.9679541]) + +se_20_1_et_efr = np.array([0.4766406]) + +time_20_1_et_efr = np.array([0]) + +hazard_20_1_et_efr = np.array([0]) + +coef_20_1_st_efr = np.array([-0.6345294]) + +se_20_1_st_efr = np.array([0.4455952]) + +time_20_1_st_efr = np.array([0]) + +hazard_20_1_st_efr = np.array([0]) + +coef_20_1_et_st_efr = np.array([-0.6355622]) + +se_20_1_et_st_efr = np.array([0.4423104]) + +time_20_1_et_st_efr = np.array([0]) + +hazard_20_1_et_st_efr = np.array([0]) + +coef_50_1_bre = np.array([-0.6761247]) + +se_50_1_bre = np.array([0.25133]) + +time_50_1_bre = np.array([ + 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, + 1.5, 1.6, 1.7, 1.8, 1.9, 2.4, 2.8]) + +hazard_50_1_bre = np.array([ + 0, 0.04895521, 0.08457461, 0.2073863, 0.2382473, 0.2793018, + 0.3271622, 0.3842953, 0.3842953, 0.5310807, 0.6360276, + 0.7648251, 0.7648251, 0.9294298, 0.9294298, 0.9294298, + 1.206438, 1.555569, 1.555569]) + +coef_50_1_et_bre = np.array([-0.6492871]) + +se_50_1_et_bre = np.array([0.2542493]) + +time_50_1_et_bre = np.array([0]) + +hazard_50_1_et_bre = np.array([0]) + +coef_50_1_st_bre = np.array([-0.7051135]) + +se_50_1_st_bre = np.array([0.2852093]) + +time_50_1_st_bre = np.array([0]) + +hazard_50_1_st_bre = np.array([0]) + +coef_50_1_et_st_bre = np.array([-0.8672546]) + +se_50_1_et_st_bre = np.array([0.3443235]) + +time_50_1_et_st_bre = np.array([0]) + +hazard_50_1_et_st_bre = np.array([0]) + +coef_50_1_efr = np.array([-0.7119322]) + +se_50_1_efr = np.array([0.2533563]) + +time_50_1_efr = np.array([ + 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, + 1.5, 1.6, 1.7, 1.8, 1.9, 2.4, 2.8]) + +hazard_50_1_efr = np.array([ + 0, 0.04773902, 0.08238731, 0.2022993, 0.2327053, 0.2736316, + 0.3215519, 0.3787123, 0.3787123, 0.526184, 0.6323073, + 0.7627338, 0.7627338, 0.9288858, 0.9288858, 0.9288858, + 1.206835, 1.556054, 1.556054]) + +coef_50_1_et_efr = np.array([-0.7103063]) + +se_50_1_et_efr = np.array([0.2598129]) + +time_50_1_et_efr = np.array([0]) + +hazard_50_1_et_efr = np.array([0]) + +coef_50_1_st_efr = np.array([-0.7417904]) + +se_50_1_st_efr = np.array([0.2846437]) + +time_50_1_st_efr = np.array([0]) + +hazard_50_1_st_efr = np.array([0]) + +coef_50_1_et_st_efr = np.array([-0.9276112]) + +se_50_1_et_st_efr = np.array([0.3462638]) + +time_50_1_et_st_efr = np.array([0]) + +hazard_50_1_et_st_efr = np.array([0]) + +coef_50_2_bre = np.array([-0.5935189, 0.5035724]) + +se_50_2_bre = np.array([0.2172841, 0.2399933]) + +time_50_2_bre = np.array([ + 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, + 1.3, 1.4, 1.5, 1.9, 2.7, 2.9]) + +hazard_50_2_bre = np.array([ + 0.02695812, 0.09162381, 0.1309537, 0.1768423, 0.2033353, + 0.2033353, 0.3083449, 0.3547287, 0.4076453, 0.4761318, + 0.5579718, 0.7610905, 0.918962, 0.918962, 1.136173, + 1.605757, 2.457676, 2.457676]) + +coef_50_2_et_bre = np.array([-0.4001465, 0.4415933]) + +se_50_2_et_bre = np.array([0.1992302, 0.2525949]) + +time_50_2_et_bre = np.array([0]) + +hazard_50_2_et_bre = np.array([0]) + +coef_50_2_st_bre = np.array([-0.6574891, 0.4416079]) + +se_50_2_st_bre = np.array([0.2753398, 0.269458]) + +time_50_2_st_bre = np.array([0]) + +hazard_50_2_st_bre = np.array([0]) + +coef_50_2_et_st_bre = np.array([-0.3607069, 0.2731982]) + +se_50_2_et_st_bre = np.array([0.255415, 0.306942]) + +time_50_2_et_st_bre = np.array([0]) + +hazard_50_2_et_st_bre = np.array([0]) + +coef_50_2_efr = np.array([-0.6107485, 0.5309737]) + +se_50_2_efr = np.array([0.2177713, 0.2440535]) + +time_50_2_efr = np.array([ + 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, + 1.3, 1.4, 1.5, 1.9, 2.7, 2.9]) + +hazard_50_2_efr = np.array([ + 0.02610571, 0.08933637, 0.1279094, 0.1731699, 0.19933, + 0.19933, 0.303598, 0.3497025, 0.4023939, 0.4706978, + 0.5519237, 0.7545023, 0.9129989, 0.9129989, 1.13186, + 1.60574, 2.472615, 2.472615]) + +coef_50_2_et_efr = np.array([-0.4092002, 0.4871344]) + +se_50_2_et_efr = np.array([0.1968905, 0.2608527]) + +time_50_2_et_efr = np.array([0]) + +hazard_50_2_et_efr = np.array([0]) + +coef_50_2_st_efr = np.array([-0.6631286, 0.4663285]) + +se_50_2_st_efr = np.array([0.2748224, 0.273603]) + +time_50_2_st_efr = np.array([0]) + +hazard_50_2_st_efr = np.array([0]) + +coef_50_2_et_st_efr = np.array([-0.3656059, 0.2943912]) + +se_50_2_et_st_efr = np.array([0.2540752, 0.3124632]) + +time_50_2_et_st_efr = np.array([0]) + +hazard_50_2_et_st_efr = np.array([0]) + +coef_100_5_bre = np.array([ + -0.529776, -0.2916374, -0.1205425, 0.3493476, 0.6034305]) + +se_100_5_bre = np.array([ + 0.1789305, 0.1482505, 0.1347422, 0.1528205, 0.1647927]) + +time_100_5_bre = np.array([ + 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, + 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.5, 2.8, 3.2, 3.3]) + +hazard_100_5_bre = np.array([ + 0.02558588, 0.05608812, 0.1087773, 0.1451098, 0.1896703, + 0.2235791, 0.3127521, 0.3355107, 0.439452, 0.504983, + 0.5431706, 0.5841462, 0.5841462, 0.5841462, 0.6916466, + 0.7540191, 0.8298704, 1.027876, 1.170335, 1.379306, + 1.648758, 1.943177, 1.943177, 1.943177, 4.727101]) + +coef_100_5_et_bre = np.array([ + -0.4000784, -0.1790941, -0.1378969, 0.3288529, 0.533246]) + +se_100_5_et_bre = np.array([ + 0.1745655, 0.1513545, 0.1393968, 0.1487803, 0.1686992]) + +time_100_5_et_bre = np.array([0]) + +hazard_100_5_et_bre = np.array([0]) + +coef_100_5_st_bre = np.array([ + -0.53019, -0.3225739, -0.1241568, 0.3246598, 0.6196859]) + +se_100_5_st_bre = np.array([ + 0.1954581, 0.1602811, 0.1470644, 0.17121, 0.1784115]) + +time_100_5_st_bre = np.array([0]) + +hazard_100_5_st_bre = np.array([0]) + +coef_100_5_et_st_bre = np.array([ + -0.3977171, -0.2166136, -0.1387623, 0.3251726, 0.5664705]) + +se_100_5_et_st_bre = np.array([ + 0.1951054, 0.1707925, 0.1501968, 0.1699932, 0.1843428]) + +time_100_5_et_st_bre = np.array([0]) + +hazard_100_5_et_st_bre = np.array([0]) + +coef_100_5_efr = np.array([ + -0.5641909, -0.3233021, -0.1234858, 0.3712328, 0.6421963]) + +se_100_5_efr = np.array([ + 0.1804027, 0.1496253, 0.1338531, 0.1529832, 0.1670848]) + +time_100_5_efr = np.array([ + 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, + 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.5, 2.8, 3.2, 3.3]) + +hazard_100_5_efr = np.array([ + 0.02393412, 0.05276399, 0.1028432, 0.1383859, 0.1823461, + 0.2158107, 0.3037825, 0.3264864, 0.4306648, 0.4964367, + 0.5348595, 0.5760305, 0.5760305, 0.5760305, 0.6842238, + 0.7468135, 0.8228841, 1.023195, 1.166635, 1.379361, + 1.652898, 1.950119, 1.950119, 1.950119, 4.910635]) + +coef_100_5_et_efr = np.array([ + -0.4338666, -0.2140139, -0.1397387, 0.3535993, 0.5768645]) + +se_100_5_et_efr = np.array([ + 0.1756485, 0.1527244, 0.138298, 0.1488427, 0.1716654]) + +time_100_5_et_efr = np.array([0]) + +hazard_100_5_et_efr = np.array([0]) + +coef_100_5_st_efr = np.array([ + -0.5530876, -0.3331652, -0.128381, 0.3503472, 0.6397813]) + +se_100_5_st_efr = np.array([ + 0.1969338, 0.1614976, 0.1464088, 0.171299, 0.1800787]) + +time_100_5_st_efr = np.array([0]) + +hazard_100_5_st_efr = np.array([0]) + +coef_100_5_et_st_efr = np.array([ + -0.421153, -0.2350069, -0.1433638, 0.3538863, 0.5934568]) + +se_100_5_et_st_efr = np.array([ + 0.1961729, 0.1724719, 0.1492979, 0.170464, 0.1861849]) + +time_100_5_et_st_efr = np.array([0]) + +hazard_100_5_et_st_efr = np.array([0]) + +coef_1000_10_bre = np.array([ + -0.4699279, -0.464557, -0.308411, -0.2158298, -0.09048563, + 0.09359662, 0.112588, 0.3343705, 0.3480601, 0.5634985]) + +se_1000_10_bre = np.array([ + 0.04722914, 0.04785291, 0.04503528, 0.04586872, 0.04429793, + 0.0446141, 0.04139944, 0.04464292, 0.04559903, 0.04864393]) + +time_1000_10_bre = np.array([ + 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, + 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, + 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, + 3.7, 3.8, 3.9, 4, 4.1, 4.2, 4.3, 4.4, 4.6, 4.8, 4.9, 5, 5.1, + 5.2, 5.7, 5.8, 5.9, 6.9]) + +hazard_1000_10_bre = np.array([ + 0.01610374, 0.04853538, 0.08984849, 0.1311329, 0.168397, + 0.2230488, 0.2755388, 0.3312606, 0.3668702, 0.4146558, + 0.477935, 0.5290705, 0.5831775, 0.6503129, 0.7113068, + 0.7830385, 0.8361717, 0.8910061, 0.9615944, 1.024011, + 1.113399, 1.165349, 1.239827, 1.352902, 1.409548, 1.53197, + 1.601843, 1.682158, 1.714907, 1.751564, 1.790898, 1.790898, + 1.83393, 1.83393, 1.936055, 1.992303, 2.050778, 2.118776, + 2.263056, 2.504999, 2.739343, 2.895514, 3.090349, 3.090349, + 3.391772, 3.728142, 4.152769, 4.152769, 4.152769, 4.725957, + 4.725957, 5.69653, 5.69653, 5.69653]) + +coef_1000_10_et_bre = np.array([ + -0.410889, -0.3929442, -0.2975845, -0.1851533, -0.0918359, + 0.1011997, 0.106735, 0.2899179, 0.3220672, 0.5069589]) + +se_1000_10_et_bre = np.array([ + 0.04696754, 0.04732169, 0.04537707, 0.04605371, 0.04365232, + 0.04450021, 0.04252475, 0.04482007, 0.04562374, 0.04859727]) + +time_1000_10_et_bre = np.array([0]) + +hazard_1000_10_et_bre = np.array([0]) + +coef_1000_10_st_bre = np.array([ + -0.471015, -0.4766859, -0.3070839, -0.2091938, -0.09190845, + 0.0964942, 0.1138269, 0.3307131, 0.3543551, 0.562492]) + +se_1000_10_st_bre = np.array([ + 0.04814778, 0.04841938, 0.04572291, 0.04641227, 0.04502525, + 0.04517603, 0.04203737, 0.04524356, 0.04635037, 0.04920866]) + +time_1000_10_st_bre = np.array([0]) + +hazard_1000_10_st_bre = np.array([0]) + +coef_1000_10_et_st_bre = np.array([ + -0.4165849, -0.4073504, -0.2980959, -0.1765194, -0.09152798, + 0.1013213, 0.1009838, 0.2859668, 0.3247608, 0.5044448]) + +se_1000_10_et_st_bre = np.array([ + 0.04809818, 0.04809499, 0.0460829, 0.04679922, 0.0445294, + 0.04514045, 0.04339298, 0.04580591, 0.04652447, 0.04920744]) + +time_1000_10_et_st_bre = np.array([0]) + +hazard_1000_10_et_st_bre = np.array([0]) + +coef_1000_10_efr = np.array([ + -0.4894399, -0.4839746, -0.3227769, -0.2261293, -0.09318482, + 0.09767154, 0.1173205, 0.3493732, 0.3640146, 0.5879749]) + +se_1000_10_efr = np.array([ + 0.0474181, 0.04811855, 0.04507655, 0.04603044, 0.04440409, + 0.04478202, 0.04136728, 0.04473343, 0.045768, 0.04891375]) + +time_1000_10_efr = np.array([ + 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2, + 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2, 2.1, 2.2, 2.3, 2.4, + 2.5, 2.6, 2.7, 2.8, 2.9, 3, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, + 3.7, 3.8, 3.9, 4, 4.1, 4.2, 4.3, 4.4, 4.6, 4.8, 4.9, 5, 5.1, + 5.2, 5.7, 5.8, 5.9, 6.9]) + +hazard_1000_10_efr = np.array([ + 0.01549698, 0.04680035, 0.08682564, 0.1269429, 0.1632388, + 0.2167291, 0.2682311, 0.3231316, 0.3582936, 0.4054892, 0.4681098, + 0.5188697, 0.5727059, 0.639571, 0.7003012, 0.7718979, 0.825053, + 0.880063, 0.950935, 1.013828, 1.103903, 1.156314, 1.231707, + 1.346235, 1.40359, 1.527475, 1.598231, 1.6795, 1.712779, + 1.750227, 1.790455, 1.790455, 1.834455, 1.834455, 1.938997, + 1.996804, 2.056859, 2.126816, 2.275217, 2.524027, 2.76669, + 2.929268, 3.13247, 3.13247, 3.448515, 3.80143, 4.249649, + 4.249649, 4.249649, 4.851365, 4.851365, 5.877307, 5.877307, 5.877307]) + +coef_1000_10_et_efr = np.array([ + -0.4373066, -0.4131901, -0.3177637, -0.1978493, -0.09679451, + 0.1092037, 0.1136069, 0.3088907, 0.3442007, 0.5394121]) + +se_1000_10_et_efr = np.array([ + 0.04716041, 0.04755342, 0.04546713, 0.04627802, 0.04376583, + 0.04474868, 0.04259991, 0.04491564, 0.04589027, 0.04890847]) + +time_1000_10_et_efr = np.array([0]) + +hazard_1000_10_et_efr = np.array([0]) + +coef_1000_10_st_efr = np.array([ + -0.4911117, -0.4960756, -0.3226152, -0.220949, -0.09478141, + 0.1015735, 0.1195524, 0.3446977, 0.3695904, 0.5878576]) + +se_1000_10_st_efr = np.array([ + 0.04833676, 0.04868554, 0.04578407, 0.04661755, 0.04518267, + 0.04537135, 0.04202183, 0.04531266, 0.0464931, 0.04949831]) + +time_1000_10_st_efr = np.array([0]) + +hazard_1000_10_st_efr = np.array([0]) + +coef_1000_10_et_st_efr = np.array([ + -0.444355, -0.4283278, -0.3198815, -0.1901781, -0.09727039, + 0.1106191, 0.1092104, 0.3034778, 0.3451699, 0.5382381]) + +se_1000_10_et_st_efr = np.array([ + 0.04830664, 0.04833619, 0.04617371, 0.04706401, 0.04472699, + 0.0454208, 0.04350539, 0.04588588, 0.04675675, 0.04950987]) + +time_1000_10_et_st_efr = np.array([0]) + +hazard_1000_10_et_st_efr = np.array([0]) diff --git a/statsmodels/duration/tests/results/survival_regularized.R b/statsmodels/duration/tests/results/survival_regularized.R new file mode 100644 index 0000000..da3fb56 --- /dev/null +++ b/statsmodels/duration/tests/results/survival_regularized.R @@ -0,0 +1,35 @@ +library(glmnet) +library(survival) +library(R2nparray) + +# List containing (sample size, # covariates) for each data set +ixd = list(c(50,2), c(100,5)) + +res = list() + +for (ix in ixd) { + + fname = sprintf("results/survival_data_%d_%d.csv", ix[1], ix[2]) + data = read.table(fname) + + time = data[,1] + status = data[,2] + entry = data[,3] + exog = data[,4:dim(data)[2]] + exog = as.matrix(exog) + n = dim(exog)[1] + p = dim(exog)[2] + + for (k in 1:p) { + exog[,k] = (exog[,k] - mean(exog[,k])) / sd(exog[,k]) + } + + surv = Surv(time, status) + md = glmnet(exog, surv, family="cox", lambda=c(0, 0.1)) + #md1 = coxph(surv ~ exog, ties="breslow") + tag = sprintf("%d_%d", n, p) + res[[sprintf("coef_%s_0", tag)]] = as.vector(coef(md, s=0)) + res[[sprintf("coef_%s_1", tag)]] = as.vector(coef(md, s=0.1)) +} + +R2nparray(res, fname="survival_enet_r_results.py") diff --git a/statsmodels/duration/tests/test_phreg.py b/statsmodels/duration/tests/test_phreg.py new file mode 100644 index 0000000..13011ec --- /dev/null +++ b/statsmodels/duration/tests/test_phreg.py @@ -0,0 +1,416 @@ +import itertools +import os + +import numpy as np +from statsmodels.duration.hazard_regression import PHReg +from numpy.testing import (assert_allclose, + assert_equal, assert_) +import pandas as pd +import pytest + +# TODO: Include some corner cases: data sets with empty strata, strata +# with no events, entry times after censoring times, etc. + +# All the R results +from .results import survival_r_results +from .results import survival_enet_r_results + +""" +Tests of PHReg against R coxph. + +Tests include entry times and stratification. + +phreg_gentests.py generates the test data sets and puts them into the +results folder. + +survival.R runs R on all the test data sets and constructs the +survival_r_results module. +""" + +# Arguments passed to the PHReg fit method. +args = {"method": "bfgs", "disp": 0} + + +def get_results(n, p, ext, ties): + if ext is None: + coef_name = "coef_%d_%d_%s" % (n, p, ties) + se_name = "se_%d_%d_%s" % (n, p, ties) + time_name = "time_%d_%d_%s" % (n, p, ties) + hazard_name = "hazard_%d_%d_%s" % (n, p, ties) + else: + coef_name = "coef_%d_%d_%s_%s" % (n, p, ext, ties) + se_name = "se_%d_%d_%s_%s" % (n, p, ext, ties) + time_name = "time_%d_%d_%s_%s" % (n, p, ext, ties) + hazard_name = "hazard_%d_%d_%s_%s" % (n, p, ext, ties) + coef = getattr(survival_r_results, coef_name) + se = getattr(survival_r_results, se_name) + time = getattr(survival_r_results, time_name) + hazard = getattr(survival_r_results, hazard_name) + return coef, se, time, hazard + +class TestPHReg(object): + + # Load a data file from the results directory + @staticmethod + def load_file(fname): + cur_dir = os.path.dirname(os.path.abspath(__file__)) + data = np.genfromtxt(os.path.join(cur_dir, 'results', fname), + delimiter=" ") + time = data[:,0] + status = data[:,1] + entry = data[:,2] + exog = data[:,3:] + + return time, status, entry, exog + + # Run a single test against R output + @staticmethod + def do1(fname, ties, entry_f, strata_f): + + # Read the test data. + time, status, entry, exog = TestPHReg.load_file(fname) + n = len(time) + + vs = fname.split("_") + n = int(vs[2]) + p = int(vs[3].split(".")[0]) + ties1 = ties[0:3] + + # Needs to match the kronecker statement in survival.R + strata = np.kron(range(5), np.ones(n // 5)) + + # No stratification or entry times + mod = PHReg(time, exog, status, ties=ties) + phrb = mod.fit(**args) + coef_r, se_r, time_r, hazard_r = get_results(n, p, None, ties1) + assert_allclose(phrb.params, coef_r, rtol=1e-3) + assert_allclose(phrb.bse, se_r, rtol=1e-4) + time_h, cumhaz, surv = phrb.baseline_cumulative_hazard[0] + + # Entry times but no stratification + phrb = PHReg(time, exog, status, entry=entry, + ties=ties).fit(**args) + coef, se, time_r, hazard_r = get_results(n, p, "et", ties1) + assert_allclose(phrb.params, coef, rtol=1e-3) + assert_allclose(phrb.bse, se, rtol=1e-3) + + # Stratification but no entry times + phrb = PHReg(time, exog, status, strata=strata, + ties=ties).fit(**args) + coef, se, time_r, hazard_r = get_results(n, p, "st", ties1) + assert_allclose(phrb.params, coef, rtol=1e-4) + assert_allclose(phrb.bse, se, rtol=1e-4) + + # Stratification and entry times + phrb = PHReg(time, exog, status, entry=entry, + strata=strata, ties=ties).fit(**args) + coef, se, time_r, hazard_r = get_results(n, p, "et_st", ties1) + assert_allclose(phrb.params, coef, rtol=1e-3) + assert_allclose(phrb.bse, se, rtol=1e-4) + + #smoke test + time_h, cumhaz, surv = phrb.baseline_cumulative_hazard[0] + + def test_missing(self): + + np.random.seed(34234) + time = 50 * np.random.uniform(size=200) + status = np.random.randint(0, 2, 200).astype(np.float64) + exog = np.random.normal(size=(200,4)) + + time[0:5] = np.nan + status[5:10] = np.nan + exog[10:15,:] = np.nan + + md = PHReg(time, exog, status, missing='drop') + assert_allclose(len(md.endog), 185) + assert_allclose(len(md.status), 185) + assert_allclose(md.exog.shape, np.r_[185,4]) + + def test_formula(self): + + np.random.seed(34234) + time = 50 * np.random.uniform(size=200) + status = np.random.randint(0, 2, 200).astype(np.float64) + exog = np.random.normal(size=(200,4)) + entry = np.zeros_like(time) + entry[0:10] = time[0:10] / 2 + + df = pd.DataFrame({"time": time, "status": status, + "exog1": exog[:, 0], "exog2": exog[:, 1], + "exog3": exog[:, 2], "exog4": exog[:, 3], + "entry": entry}) + + mod1 = PHReg(time, exog, status, entry=entry) + rslt1 = mod1.fit() + + # works with "0 +" on RHS but issues warning + fml = "time ~ exog1 + exog2 + exog3 + exog4" + mod2 = PHReg.from_formula(fml, df, status=status, + entry=entry) + rslt2 = mod2.fit() + + mod3 = PHReg.from_formula(fml, df, status="status", + entry="entry") + rslt3 = mod3.fit() + + assert_allclose(rslt1.params, rslt2.params) + assert_allclose(rslt1.params, rslt3.params) + assert_allclose(rslt1.bse, rslt2.bse) + assert_allclose(rslt1.bse, rslt3.bse) + + def test_formula_cat_interactions(self): + + time = np.r_[1, 2, 3, 4, 5, 6, 7, 8, 9] + status = np.r_[1, 1, 0, 0, 1, 0, 1, 1, 1] + x1 = np.r_[1, 1, 1, 2, 2, 2, 3, 3, 3] + x2 = np.r_[1, 2, 3, 1, 2, 3, 1, 2, 3] + df = pd.DataFrame({"time": time, "status": status, + "x1": x1, "x2": x2}) + + model1 = PHReg.from_formula("time ~ C(x1) + C(x2) + C(x1)*C(x2)", status="status", + data=df) + assert_equal(model1.exog.shape, [9, 8]) + + def test_predict_formula(self): + + n = 100 + np.random.seed(34234) + time = 50 * np.random.uniform(size=n) + status = np.random.randint(0, 2, n).astype(np.float64) + exog = np.random.uniform(1, 2, size=(n, 2)) + + df = pd.DataFrame({"time": time, "status": status, + "exog1": exog[:, 0], "exog2": exog[:, 1]}) + + # Works with "0 +" on RHS but issues warning + fml = "time ~ exog1 + np.log(exog2) + exog1*exog2" + model1 = PHReg.from_formula(fml, df, status=status) + result1 = model1.fit() + + from patsy import dmatrix + dfp = dmatrix(model1.data.design_info, df) + + pr1 = result1.predict() + pr2 = result1.predict(exog=df) + pr3 = model1.predict(result1.params, exog=dfp) # No standard errors + pr4 = model1.predict(result1.params, + cov_params=result1.cov_params(), + exog=dfp) + + prl = (pr1, pr2, pr3, pr4) + for i in range(4): + for j in range(i): + assert_allclose(prl[i].predicted_values, + prl[j].predicted_values) + + prl = (pr1, pr2, pr4) + for i in range(3): + for j in range(i): + assert_allclose(prl[i].standard_errors, prl[j].standard_errors) + + def test_formula_args(self): + + np.random.seed(34234) + n = 200 + time = 50 * np.random.uniform(size=n) + status = np.random.randint(0, 2, size=n).astype(np.float64) + exog = np.random.normal(size=(200, 2)) + offset = np.random.uniform(size=n) + entry = np.random.uniform(0, 1, size=n) * time + + df = pd.DataFrame({"time": time, "status": status, "x1": exog[:, 0], + "x2": exog[:, 1], "offset": offset, "entry": entry}) + model1 = PHReg.from_formula("time ~ x1 + x2", status="status", offset="offset", + entry="entry", data=df) + result1 = model1.fit() + model2 = PHReg.from_formula("time ~ x1 + x2", status=df.status, offset=df.offset, + entry=df.entry, data=df) + result2 = model2.fit() + assert_allclose(result1.params, result2.params) + assert_allclose(result1.bse, result2.bse) + + def test_offset(self): + + np.random.seed(34234) + time = 50 * np.random.uniform(size=200) + status = np.random.randint(0, 2, 200).astype(np.float64) + exog = np.random.normal(size=(200,4)) + + for ties in "breslow", "efron": + mod1 = PHReg(time, exog, status) + rslt1 = mod1.fit() + offset = exog[:,0] * rslt1.params[0] + exog = exog[:, 1:] + + mod2 = PHReg(time, exog, status, offset=offset, ties=ties) + rslt2 = mod2.fit() + + assert_allclose(rslt2.params, rslt1.params[1:]) + + def test_post_estimation(self): + # All regression tests + np.random.seed(34234) + time = 50 * np.random.uniform(size=200) + status = np.random.randint(0, 2, 200).astype(np.float64) + exog = np.random.normal(size=(200,4)) + + mod = PHReg(time, exog, status) + rslt = mod.fit() + mart_resid = rslt.martingale_residuals + assert_allclose(np.abs(mart_resid).sum(), 120.72475743348433) + + w_avg = rslt.weighted_covariate_averages + assert_allclose(np.abs(w_avg[0]).sum(0), + np.r_[7.31008415, 9.77608674,10.89515885, 13.1106801]) + + bc_haz = rslt.baseline_cumulative_hazard + v = [np.mean(np.abs(x)) for x in bc_haz[0]] + w = np.r_[23.482841556421608, 0.44149255358417017, + 0.68660114081275281] + assert_allclose(v, w) + + score_resid = rslt.score_residuals + v = np.r_[ 0.50924792, 0.4533952, 0.4876718, 0.5441128] + w = np.abs(score_resid).mean(0) + assert_allclose(v, w) + + groups = np.random.randint(0, 3, 200) + mod = PHReg(time, exog, status) + rslt = mod.fit(groups=groups) + robust_cov = rslt.cov_params() + v = [0.00513432, 0.01278423, 0.00810427, 0.00293147] + w = np.abs(robust_cov).mean(0) + assert_allclose(v, w, rtol=1e-6) + + s_resid = rslt.schoenfeld_residuals + ii = np.flatnonzero(np.isfinite(s_resid).all(1)) + s_resid = s_resid[ii, :] + v = np.r_[0.85154336, 0.72993748, 0.73758071, 0.78599333] + assert_allclose(np.abs(s_resid).mean(0), v) + + @pytest.mark.smoke + def test_summary(self): + np.random.seed(34234) + time = 50 * np.random.uniform(size=200) + status = np.random.randint(0, 2, 200).astype(np.float64) + exog = np.random.normal(size=(200,4)) + + mod = PHReg(time, exog, status) + rslt = mod.fit() + smry = rslt.summary() + + strata = np.kron(np.arange(50), np.ones(4)) + mod = PHReg(time, exog, status, strata=strata) + rslt = mod.fit() + smry = rslt.summary() + msg = "3 strata dropped for having no events" + assert_(msg in str(smry)) + + groups = np.kron(np.arange(25), np.ones(8)) + mod = PHReg(time, exog, status) + rslt = mod.fit(groups=groups) + smry = rslt.summary() + + entry = np.random.uniform(0.1, 0.8, 200) * time + mod = PHReg(time, exog, status, entry=entry) + rslt = mod.fit() + smry = rslt.summary() + msg = "200 observations have positive entry times" + assert_(msg in str(smry)) + + @pytest.mark.smoke + def test_predict(self): + # All smoke tests. We should be able to convert the lhr and hr + # tests into real tests against R. There are many options to + # this function that may interact in complicated ways. Only a + # few key combinations are tested here. + np.random.seed(34234) + endog = 50 * np.random.uniform(size=200) + status = np.random.randint(0, 2, 200).astype(np.float64) + exog = np.random.normal(size=(200,4)) + + mod = PHReg(endog, exog, status) + rslt = mod.fit() + rslt.predict() + for pred_type in 'lhr', 'hr', 'cumhaz', 'surv': + rslt.predict(pred_type=pred_type) + rslt.predict(endog=endog[0:10], pred_type=pred_type) + rslt.predict(endog=endog[0:10], exog=exog[0:10,:], + pred_type=pred_type) + + @pytest.mark.smoke + def test_get_distribution(self): + np.random.seed(34234) + n = 200 + exog = np.random.normal(size=(n, 2)) + lin_pred = exog.sum(1) + elin_pred = np.exp(-lin_pred) + time = -elin_pred * np.log(np.random.uniform(size=n)) + status = np.ones(n) + status[0:20] = 0 + strata = np.kron(range(5), np.ones(n // 5)) + + mod = PHReg(time, exog, status=status, strata=strata) + rslt = mod.fit() + + dist = rslt.get_distribution() + + fitted_means = dist.mean() + true_means = elin_pred + fitted_var = dist.var() + fitted_sd = dist.std() + sample = dist.rvs() + + def test_fit_regularized(self): + + # Data set sizes + for n,p in (50,2),(100,5): + + # Penalty weights + for js,s in enumerate([0,0.1]): + + coef_name = "coef_%d_%d_%d" % (n, p, js) + params = getattr(survival_enet_r_results, coef_name) + + fname = "survival_data_%d_%d.csv" % (n, p) + time, status, entry, exog = self.load_file(fname) + + exog -= exog.mean(0) + exog /= exog.std(0, ddof=1) + + model = PHReg(time, exog, status=status, ties='breslow') + sm_result = model.fit_regularized(alpha=s) + + # The agreement isn't very high, the issue may be on + # the R side. See below for further checks. + assert_allclose(sm_result.params, params, rtol=0.3) + + # The penalized log-likelihood that we are maximizing. + def plf(params): + llf = model.loglike(params) / len(time) + L1_wt = 1 + llf = llf - s * ((1 - L1_wt)*np.sum(params**2) / 2 + L1_wt*np.sum(np.abs(params))) + return llf + + # Confirm that we are doing better than glmnet. + llf_r = plf(params) + llf_sm = plf(sm_result.params) + assert_equal(np.sign(llf_sm - llf_r), 1) + + +cur_dir = os.path.dirname(os.path.abspath(__file__)) +rdir = os.path.join(cur_dir, 'results') +fnames = os.listdir(rdir) +fnames = [x for x in fnames if x.startswith("survival") + and x.endswith(".csv")] + +ties = ("breslow", "efron") +entry_f = (False, True) +strata_f = (False, True) + + +@pytest.mark.parametrize('fname,ties,entry_f,strata_f', + list(itertools.product(fnames, ties, entry_f, strata_f))) +def test_r(fname, ties, entry_f, strata_f): + TestPHReg.do1(fname, ties, entry_f, strata_f) diff --git a/statsmodels/duration/tests/test_survfunc.py b/statsmodels/duration/tests/test_survfunc.py new file mode 100644 index 0000000..fc59bca --- /dev/null +++ b/statsmodels/duration/tests/test_survfunc.py @@ -0,0 +1,552 @@ +import os + +import numpy as np +from statsmodels.duration.survfunc import ( + SurvfuncRight, survdiff, plot_survfunc, + CumIncidenceRight) +from numpy.testing import assert_allclose +import pandas as pd +import pytest + +# If true, the output is written to a multi-page pdf file. +pdf_output = False + +try: + import matplotlib.pyplot as plt +except ImportError: + pass + + +def close_or_save(pdf, fig): + if pdf_output: + pdf.savefig(fig) + + +""" +library(survival) +ti1 = c(3, 1, 2, 3, 2, 1, 5, 3) +st1 = c(0, 1, 1, 1, 0, 0, 1, 0) +ti2 = c(1, 1, 2, 3, 7, 1, 5, 3, 9) +st2 = c(0, 1, 0, 0, 1, 0, 1, 0, 1) + +ti = c(ti1, ti2) +st = c(st1, st2) +ix = c(rep(1, length(ti1)), rep(2, length(ti2))) +sd = survdiff(Surv(ti, st) ~ ix) +""" + +ti1 = np.r_[3, 1, 2, 3, 2, 1, 5, 3] +st1 = np.r_[0, 1, 1, 1, 0, 0, 1, 0] +times1 = np.r_[1, 2, 3, 5] +surv_prob1 = np.r_[0.8750000, 0.7291667, 0.5468750, 0.0000000] +surv_prob_se1 = np.r_[0.1169268, 0.1649762, 0.2005800, np.nan] +n_risk1 = np.r_[8, 6, 4, 1] +n_events1 = np.r_[1., 1., 1., 1.] + +ti2 = np.r_[1, 1, 2, 3, 7, 1, 5, 3, 9] +st2 = np.r_[0, 1, 0, 0, 1, 0, 1, 0, 1] +times2 = np.r_[1, 5, 7, 9] +surv_prob2 = np.r_[0.8888889, 0.5925926, 0.2962963, 0.0000000] +surv_prob_se2 = np.r_[0.1047566, 0.2518034, 0.2444320, np.nan] +n_risk2 = np.r_[9, 3, 2, 1] +n_events2 = np.r_[1., 1., 1., 1.] + +cur_dir = os.path.dirname(os.path.abspath(__file__)) +fp = os.path.join(cur_dir, 'results', 'bmt.csv') +bmt = pd.read_csv(fp) + + +def test_survfunc1(): + # Test where all times have at least 1 event. + + sr = SurvfuncRight(ti1, st1) + assert_allclose(sr.surv_prob, surv_prob1, atol=1e-5, rtol=1e-5) + assert_allclose(sr.surv_prob_se, surv_prob_se1, atol=1e-5, rtol=1e-5) + assert_allclose(sr.surv_times, times1) + assert_allclose(sr.n_risk, n_risk1) + assert_allclose(sr.n_events, n_events1) + + +def test_survfunc2(): + # Test where some times have no events. + + sr = SurvfuncRight(ti2, st2) + assert_allclose(sr.surv_prob, surv_prob2, atol=1e-5, rtol=1e-5) + assert_allclose(sr.surv_prob_se, surv_prob_se2, atol=1e-5, rtol=1e-5) + assert_allclose(sr.surv_times, times2) + assert_allclose(sr.n_risk, n_risk2) + assert_allclose(sr.n_events, n_events2) + + +def test_survdiff_basic(): + + # Constants taken from R, code above + ti = np.concatenate((ti1, ti2)) + st = np.concatenate((st1, st2)) + groups = np.ones(len(ti)) + groups[0:len(ti1)] = 0 + z, p = survdiff(ti, st, groups) + assert_allclose(z, 2.14673, atol=1e-4, rtol=1e-4) + assert_allclose(p, 0.14287, atol=1e-4, rtol=1e-4) + + +def test_simultaneous_cb(): + + # The exact numbers here are regression tests, but they are close + # to page 103 of Klein and Moeschberger. + + df = bmt.loc[bmt["Group"] == "ALL", :] + sf = SurvfuncRight(df["T"], df["Status"]) + lcb1, ucb1 = sf.simultaneous_cb(transform="log") + lcb2, ucb2 = sf.simultaneous_cb(transform="arcsin") + + ti = sf.surv_times.tolist() + ix = [ti.index(x) for x in (110, 122, 129, 172)] + assert_allclose(lcb1[ix], np.r_[0.43590582, 0.42115592, + 0.4035897, 0.38785927]) + assert_allclose(ucb1[ix], np.r_[0.93491636, 0.89776803, + 0.87922239, 0.85894181]) + + assert_allclose(lcb2[ix], np.r_[0.52115708, 0.48079378, + 0.45595321, 0.43341115]) + assert_allclose(ucb2[ix], np.r_[0.96465636, 0.92745068, + 0.90885428, 0.88796708]) + + +def test_bmt(): + # All tests against SAS + # Results taken from here: + # http://support.sas.com/documentation/cdl/en/statug/68162/HTML/default/viewer.htm#statug_lifetest_details03.htm + + # Confidence intervals for 25% percentile of the survival + # distribution (for "ALL" subjects), taken from the SAS web site + cb = {"linear": [107, 276], + "cloglog": [86, 230], + "log": [107, 332], + "asinsqrt": [104, 276], + "logit": [104, 230]} + + dfa = bmt[bmt.Group == "ALL"] + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + fp = os.path.join(cur_dir, 'results', 'bmt_results.csv') + rslt = pd.read_csv(fp) + + sf = SurvfuncRight(dfa["T"].values, dfa.Status.values) + + assert_allclose(sf.surv_times, rslt.t) + assert_allclose(sf.surv_prob, rslt.s, atol=1e-4, rtol=1e-4) + assert_allclose(sf.surv_prob_se, rslt.se, atol=1e-4, rtol=1e-4) + + for method in "linear", "cloglog", "log", "logit", "asinsqrt": + lcb, ucb = sf.quantile_ci(0.25, method=method) + assert_allclose(cb[method], np.r_[lcb, ucb]) + + +def test_survdiff(): + # Results come from R survival and survMisc packages (survMisc is + # used for non G-rho family tests but does not seem to support + # stratification) + + df = bmt[bmt.Group != "ALL"].copy() + + # Not stratified + stat, p = survdiff(df["T"], df.Status, df.Group) + assert_allclose(stat, 13.44556, atol=1e-4, rtol=1e-4) + stat, p = survdiff(df["T"], df.Status, df.Group, weight_type="gb") + assert_allclose(stat, 15.38787, atol=1e-4, rtol=1e-4) + stat, p = survdiff(df["T"], df.Status, df.Group, weight_type="tw") + assert_allclose(stat, 14.98382, atol=1e-4, rtol=1e-4) + stat, p = survdiff(df["T"], df.Status, df.Group, weight_type="fh", + fh_p=0.5) + assert_allclose(stat, 14.46866, atol=1e-4, rtol=1e-4) + stat, p = survdiff(df["T"], df.Status, df.Group, weight_type="fh", + fh_p=1) + assert_allclose(stat, 14.84500, atol=1e-4, rtol=1e-4) + + # 5 strata + strata = np.arange(df.shape[0]) % 5 + df["strata"] = strata + stat, p = survdiff(df["T"], df.Status, df.Group, strata=df.strata) + assert_allclose(stat, 11.97799, atol=1e-4, rtol=1e-4) + stat, p = survdiff(df["T"], df.Status, df.Group, strata=df.strata, + weight_type="fh", fh_p=0.5) + assert_allclose(stat, 12.6257, atol=1e-4, rtol=1e-4) + stat, p = survdiff(df["T"], df.Status, df.Group, strata=df.strata, + weight_type="fh", fh_p=1) + assert_allclose(stat, 12.73565, atol=1e-4, rtol=1e-4) + + # 8 strata + df["strata"] = np.arange(df.shape[0]) % 8 + stat, p = survdiff(df["T"], df.Status, df.Group, strata=df.strata) + assert_allclose(stat, 12.12631, atol=1e-4, rtol=1e-4) + stat, p = survdiff(df["T"], df.Status, df.Group, strata=df.strata, + weight_type="fh", fh_p=0.5) + assert_allclose(stat, 12.9633, atol=1e-4, rtol=1e-4) + stat, p = survdiff(df["T"], df.Status, df.Group, strata=df.strata, + weight_type="fh", fh_p=1) + assert_allclose(stat, 13.35259, atol=1e-4, rtol=1e-4) + + +@pytest.mark.matplotlib +def test_plot_km(close_figures): + + if pdf_output: + from matplotlib.backends.backend_pdf import PdfPages + pdf = PdfPages("test_survfunc.pdf") + else: + pdf = None + + sr1 = SurvfuncRight(ti1, st1) + sr2 = SurvfuncRight(ti2, st2) + + fig = plot_survfunc(sr1) + close_or_save(pdf, fig) + + fig = plot_survfunc(sr2) + close_or_save(pdf, fig) + + fig = plot_survfunc([sr1, sr2]) + close_or_save(pdf, fig) + + # Plot the SAS BMT data + gb = bmt.groupby("Group") + sv = [] + for g in gb: + s0 = SurvfuncRight(g[1]["T"], g[1]["Status"], title=g[0]) + sv.append(s0) + fig = plot_survfunc(sv) + ax = fig.get_axes()[0] + ax.set_position([0.1, 0.1, 0.64, 0.8]) + ha, lb = ax.get_legend_handles_labels() + fig.legend([ha[k] for k in (0, 2, 4)], + [lb[k] for k in (0, 2, 4)], + 'center right') + close_or_save(pdf, fig) + + # Simultaneous CB for BMT data + ii = bmt.Group == "ALL" + sf = SurvfuncRight(bmt.loc[ii, "T"], bmt.loc[ii, "Status"]) + fig = sf.plot() + ax = fig.get_axes()[0] + ax.set_position([0.1, 0.1, 0.64, 0.8]) + ha, lb = ax.get_legend_handles_labels() + lcb, ucb = sf.simultaneous_cb(transform="log") + plt.fill_between(sf.surv_times, lcb, ucb, color="lightgrey") + lcb, ucb = sf.simultaneous_cb(transform="arcsin") + plt.plot(sf.surv_times, lcb, color="darkgrey") + plt.plot(sf.surv_times, ucb, color="darkgrey") + plt.plot(sf.surv_times, sf.surv_prob - 2*sf.surv_prob_se, color="red") + plt.plot(sf.surv_times, sf.surv_prob + 2*sf.surv_prob_se, color="red") + plt.xlim(100, 600) + close_or_save(pdf, fig) + + if pdf_output: + pdf.close() + + +def test_weights1(): + # tm = c(1, 3, 5, 6, 7, 8, 8, 9, 3, 4, 1, 3, 2) + # st = c(1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0) + # wt = c(1, 2, 3, 2, 3, 1, 2, 1, 1, 2, 2, 3, 1) + # library(survival) + # sf = survfit(Surv(tm, st) ~ 1, weights=wt, err='tsiatis') + + tm = np.r_[1, 3, 5, 6, 7, 8, 8, 9, 3, 4, 1, 3, 2] + st = np.r_[1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 1, 1, 0] + wt = np.r_[1, 2, 3, 2, 3, 1, 2, 1, 1, 2, 2, 3, 1] + + sf = SurvfuncRight(tm, st, freq_weights=wt) + assert_allclose(sf.surv_times, np.r_[1, 3, 6, 7, 9]) + assert_allclose(sf.surv_prob, + np.r_[0.875, 0.65625, 0.51041667, 0.29166667, 0.]) + assert_allclose(sf.surv_prob_se, + np.r_[0.07216878, 0.13307266, 0.20591185, 0.3219071, + 1.05053519]) + + +def test_weights2(): + # tm = c(1, 3, 5, 6, 7, 2, 4, 6, 8, 10) + # st = c(1, 1, 0, 1, 1, 1, 1, 0, 1, 1) + # wt = c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2) + # library(survival) + # sf =s urvfit(Surv(tm, st) ~ 1, weights=wt, err='tsiatis') + + tm = np.r_[1, 3, 5, 6, 7, 2, 4, 6, 8, 10] + st = np.r_[1, 1, 0, 1, 1, 1, 1, 0, 1, 1] + wt = np.r_[1, 1, 1, 1, 1, 2, 2, 2, 2, 2] + tm0 = np.r_[1, 3, 5, 6, 7, 2, 4, 6, 8, 10, 2, 4, 6, 8, 10] + st0 = np.r_[1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1] + + sf0 = SurvfuncRight(tm, st, freq_weights=wt) + sf1 = SurvfuncRight(tm0, st0) + + assert_allclose(sf0.surv_times, sf1.surv_times) + assert_allclose(sf0.surv_prob, sf1.surv_prob) + + assert_allclose(sf0.surv_prob_se, + np.r_[0.06666667, 0.1210311, 0.14694547, + 0.19524829, 0.23183377, + 0.30618115, 0.46770386, 0.84778942]) + + +def test_incidence(): + # Check estimates in R: + # ftime = c(1, 1, 2, 4, 4, 4, 6, 6, 7, 8, 9, 9, 9, 1, 2, 2, 4, 4) + # fstat = c(1, 1, 1, 2, 2, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0) + # cuminc(ftime, fstat) + # + # The standard errors agree with Stata, not with R (cmprisk + # package), which uses a different SE formula from Aalen (1978) + # + # To check with Stata: + # stset ftime failure(fstat==1) + # stcompet ci=ci, compet1(2) + + ftime = np.r_[1, 1, 2, 4, 4, 4, 6, 6, 7, 8, 9, 9, 9, 1, 2, 2, 4, 4] + fstat = np.r_[1, 1, 1, 2, 2, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0] + + ci = CumIncidenceRight(ftime, fstat) + + cinc = [np.array([0.11111111, 0.17037037, 0.17037037, 0.17037037, + 0.17037037, 0.17037037, 0.17037037]), + np.array([0., 0., 0.20740741, 0.20740741, + 0.20740741, 0.20740741, 0.20740741]), + np.array([0., 0., 0., 0.17777778, + 0.26666667, 0.26666667, 0.26666667])] + assert_allclose(cinc[0], ci.cinc[0]) + assert_allclose(cinc[1], ci.cinc[1]) + assert_allclose(cinc[2], ci.cinc[2]) + + cinc_se = [np.array([0.07407407, 0.08976251, 0.08976251, 0.08976251, + 0.08976251, 0.08976251, 0.08976251]), + np.array([0., 0., 0.10610391, 0.10610391, 0.10610391, + 0.10610391, 0.10610391]), + np.array([0., 0., 0., 0.11196147, 0.12787781, + 0.12787781, 0.12787781])] + assert_allclose(cinc_se[0], ci.cinc_se[0]) + assert_allclose(cinc_se[1], ci.cinc_se[1]) + assert_allclose(cinc_se[2], ci.cinc_se[2]) + + # Simple check for frequency weights + weights = np.ones(len(ftime)) + ciw = CumIncidenceRight(ftime, fstat, freq_weights=weights) + assert_allclose(ci.cinc[0], ciw.cinc[0]) + assert_allclose(ci.cinc[1], ciw.cinc[1]) + assert_allclose(ci.cinc[2], ciw.cinc[2]) + + +def test_survfunc_entry_1(): + # times = c(1, 3, 3, 5, 5, 7, 7, 8, 8, 9, 10, 10) + # status = c(1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1) + # entry = c(0, 1, 1, 2, 2, 2, 3, 4, 4, 4, 4, 0) + # sv = Surv(entry, times, event=status) + # sdf = survfit(coxph(sv ~ 1), type='kaplan-meier') + + times = np.r_[1, 3, 3, 5, 5, 7, 7, 8, 8, 9, 10, 10] + status = np.r_[1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1] + entry = np.r_[0, 1, 1, 2, 2, 2, 3, 4, 4, 4, 4, 0] + + sf = SurvfuncRight(times, status, entry=entry) + + assert_allclose(sf.n_risk, np.r_[2, 6, 9, 7, 5, 3, 2]) + assert_allclose(sf.surv_times, np.r_[1, 3, 5, 7, 8, 9, 10]) + assert_allclose(sf.surv_prob, np.r_[ + 0.5000, 0.4167, 0.3241, 0.2778, 0.2222, 0.1481, 0.0741], + atol=1e-4) + assert_allclose(sf.surv_prob_se, np.r_[ + 0.3536, 0.3043, 0.2436, 0.2132, 0.1776, 0.1330, 0.0846], + atol=1e-4) + + +def test_survfunc_entry_2(): + # entry = 0 is equivalent to no entry time + + times = np.r_[1, 3, 3, 5, 5, 7, 7, 8, 8, 9, 10, 10] + status = np.r_[1, 1, 0, 1, 1, 1, 0, 0, 1, 1, 0, 1] + entry = np.r_[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + + sf = SurvfuncRight(times, status, entry=entry) + sf0 = SurvfuncRight(times, status) + + assert_allclose(sf.n_risk, sf0.n_risk) + assert_allclose(sf.surv_times, sf0.surv_times) + assert_allclose(sf.surv_prob, sf0.surv_prob) + assert_allclose(sf.surv_prob_se, sf0.surv_prob_se) + + +def test_survfunc_entry_3(): + # times = c(1, 2, 5, 6, 6, 6, 6, 6, 9) + # status = c(0, 0, 1, 1, 1, 0, 1, 1, 0) + # entry = c(0, 1, 1, 2, 2, 2, 3, 4, 4) + # sv = Surv(entry, times, event=status) + # sdf = survfit(coxph(sv ~ 1), type='kaplan-meier') + + times = np.r_[1, 2, 5, 6, 6, 6, 6, 6, 9] + status = np.r_[0, 0, 1, 1, 1, 0, 1, 1, 0] + entry = np.r_[0, 1, 1, 2, 2, 2, 3, 4, 4] + + sf = SurvfuncRight(times, status, entry=entry) + + assert_allclose(sf.n_risk, np.r_[7, 6]) + assert_allclose(sf.surv_times, np.r_[5, 6]) + assert_allclose(sf.surv_prob, np.r_[0.857143, 0.285714], atol=1e-5) + assert_allclose(sf.surv_prob_se, np.r_[0.13226, 0.170747], atol=1e-5) + + +def test_survdiff_entry_1(): + # entry times = 0 is equivalent to no entry times + ti = np.r_[1, 3, 4, 2, 5, 4, 6, 7, 5, 9] + st = np.r_[1, 1, 0, 1, 1, 0, 1, 1, 0, 0] + gr = np.r_[0, 0, 0, 0, 0, 1, 1, 1, 1, 1] + entry = np.r_[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + z1, p1 = survdiff(ti, st, gr, entry=entry) + z2, p2 = survdiff(ti, st, gr) + assert_allclose(z1, z2) + assert_allclose(p1, p2) + + +def test_survdiff_entry_2(): + # Tests against Stata: + # + # stset time, failure(status) entry(entry) + # sts test group, logrank + + ti = np.r_[5, 3, 4, 2, 5, 4, 6, 7, 5, 9] + st = np.r_[1, 1, 0, 1, 1, 0, 1, 1, 0, 0] + gr = np.r_[0, 0, 0, 0, 0, 1, 1, 1, 1, 1] + entry = np.r_[1, 2, 2, 1, 3, 3, 5, 4, 2, 5] + + # Check with no entry times + z, p = survdiff(ti, st, gr) + assert_allclose(z, 6.694424) + assert_allclose(p, 0.00967149) + + # Check with entry times + z, p = survdiff(ti, st, gr, entry=entry) + assert_allclose(z, 3.0) + assert_allclose(p, 0.083264516) + + +def test_survdiff_entry_3(): + # Tests against Stata: + # + # stset time, failure(status) entry(entry) + # sts test group, logrank + + ti = np.r_[2, 1, 5, 8, 7, 8, 8, 9, 4, 9] + st = np.r_[1, 1, 1, 1, 1, 0, 1, 0, 0, 0] + gr = np.r_[0, 0, 0, 0, 0, 1, 1, 1, 1, 1] + entry = np.r_[1, 1, 2, 2, 3, 3, 2, 1, 2, 0] + + # Check with no entry times + z, p = survdiff(ti, st, gr) + assert_allclose(z, 6.9543024) + assert_allclose(p, 0.008361789) + + # Check with entry times + z, p = survdiff(ti, st, gr, entry=entry) + assert_allclose(z, 6.75082959) + assert_allclose(p, 0.00937041) + + +def test_incidence2(): + # Check that the cumulative incidence functions for all competing + # risks sum to the complementary survival function. + + np.random.seed(2423) + n = 200 + time = -np.log(np.random.uniform(size=n)) + status = np.random.randint(0, 3, size=n) + ii = np.argsort(time) + time = time[ii] + status = status[ii] + ci = CumIncidenceRight(time, status) + statusa = 1*(status >= 1) + sf = SurvfuncRight(time, statusa) + x = 1 - sf.surv_prob + y = (ci.cinc[0] + ci.cinc[1])[np.flatnonzero(statusa)] + assert_allclose(x, y) + + +def test_kernel_survfunc1(): + # Regression test + n = 100 + np.random.seed(3434) + x = np.random.normal(size=(n, 3)) + time = np.random.uniform(size=n) + status = np.random.randint(0, 2, size=n) + + result = SurvfuncRight(time, status, exog=x) + + timex = np.r_[0.30721103, 0.0515439, 0.69246897, 0.16446079, 0.31308528] + sprob = np.r_[0.98948277, 0.98162275, 0.97129237, 0.96044668, 0.95030368] + + assert_allclose(result.time[0:5], timex) + assert_allclose(result.surv_prob[0:5], sprob) + + +def test_kernel_survfunc2(): + # Check that when bandwidth is very large, the kernel procedure + # agrees with standard KM. (Note: the results do not agree + # perfectly when there are tied times). + + n = 100 + np.random.seed(3434) + x = np.random.normal(size=(n, 3)) + time = np.random.uniform(0, 10, size=n) + status = np.random.randint(0, 2, size=n) + + resultkm = SurvfuncRight(time, status) + result = SurvfuncRight(time, status, exog=x, bw_factor=10000) + + assert_allclose(resultkm.surv_times, result.surv_times) + assert_allclose(resultkm.surv_prob, result.surv_prob, rtol=1e-6, atol=1e-6) + + +@pytest.mark.smoke +def test_kernel_survfunc3(): + # cases with tied times + + n = 100 + np.random.seed(3434) + x = np.random.normal(size=(n, 3)) + time = np.random.randint(0, 10, size=n) + status = np.random.randint(0, 2, size=n) + SurvfuncRight(time, status, exog=x, bw_factor=10000) + SurvfuncRight(time, status, exog=x, bw_factor=np.r_[10000, 10000]) + + +def test_kernel_cumincidence1(): + # Check that when the bandwidth is very large, the kernel + # procedure agrees with standard cumulative incidence + # calculations. (Note: the results do not agree perfectly when + # there are tied times). + + n = 100 + np.random.seed(3434) + x = np.random.normal(size=(n, 3)) + time = np.random.uniform(0, 10, size=n) + status = np.random.randint(0, 3, size=n) + + result1 = CumIncidenceRight(time, status) + + for dimred in False, True: + result2 = CumIncidenceRight(time, status, exog=x, bw_factor=10000, + dimred=dimred) + + assert_allclose(result1.times, result2.times) + for k in 0, 1: + assert_allclose(result1.cinc[k], result2.cinc[k], rtol=1e-5) + + +@pytest.mark.smoke +def test_kernel_cumincidence2(): + # cases with tied times + + n = 100 + np.random.seed(3434) + x = np.random.normal(size=(n, 3)) + time = np.random.randint(0, 10, size=n) + status = np.random.randint(0, 3, size=n) + CumIncidenceRight(time, status, exog=x, bw_factor=10000) diff --git a/statsmodels/emplike/__init__.py b/statsmodels/emplike/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/emplike/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/emplike/aft_el.py b/statsmodels/emplike/aft_el.py new file mode 100644 index 0000000..b9eee2b --- /dev/null +++ b/statsmodels/emplike/aft_el.py @@ -0,0 +1,561 @@ +""" + +Accelerated Failure Time (AFT) Model with empirical likelihood inference. + +AFT regression analysis is applicable when the researcher has access +to a randomly right censored dependent variable, a matrix of exogenous +variables and an indicatior variable (delta) that takes a value of 0 if the +observation is censored and 1 otherwise. + +AFT References +-------------- + +Stute, W. (1993). "Consistent Estimation Under Random Censorship when +Covariables are Present." Journal of Multivariate Analysis. +Vol. 45. Iss. 1. 89-103 + +EL and AFT References +--------------------- + +Zhou, Kim And Bathke. "Empirical Likelihood Analysis for the Heteroskedastic +Accelerated Failure Time Model." Manuscript: +URL: www.ms.uky.edu/~mai/research/CasewiseEL20080724.pdf + +Zhou, M. (2005). Empirical Likelihood Ratio with Arbitrarily Censored/ +Truncated Data by EM Algorithm. Journal of Computational and Graphical +Statistics. 14:3, 643-656. + + +""" +from __future__ import division + +import numpy as np +from statsmodels.regression.linear_model import OLS, WLS +from statsmodels.tools import add_constant +#from elregress import ElReg +from scipy import optimize +from scipy.stats import chi2 +from .descriptive import _OptFuncts +import warnings +from statsmodels.tools.sm_exceptions import IterationLimitWarning + +class OptAFT(_OptFuncts): + """ + Provides optimization functions used in estimating and conducting + inference in an AFT model. + + Methods + ------ + + _opt_wtd_nuis_regress: + Function optimized over nuisance parameters to compute + the profile likelihood + + _EM_test: + Uses the modified Em algorithm of Zhou 2005 to maximize the + likelihood of a parameter vector. + + """ + def __init__(self): + pass + + def _opt_wtd_nuis_regress(self, test_vals): + """ + A function that is optimized over nuisance parameters to conduct a + hypothesis test for the parameters of interest + + Parameters + ---------- + + params: 1d array + The regression coefficients of the model. This includes the + nuisance and parameters of interests. + + Returns + ------- + + llr: float + -2 times the log likelihood of the nuisance parameters and the + hypothesized value of the parameter(s) of interest. + + """ + test_params = test_vals.reshape(self.model.nvar, 1) + est_vect = self.model.uncens_exog * (self.model.uncens_endog - + np.dot(self.model.uncens_exog, + test_params)) + eta_star = self._modif_newton(np.zeros(self.model.nvar), est_vect, + self.model._fit_weights) + denom = np.sum(self.model._fit_weights) + np.dot(eta_star, est_vect.T) + self.new_weights = self.model._fit_weights / denom + return -1 * np.sum(np.log(self.new_weights)) + + def _EM_test(self, nuisance_params, params=None, param_nums=None, + b0_vals=None, F=None, survidx=None, uncens_nobs=None, + numcensbelow=None, km=None, uncensored=None, censored=None, + maxiter=None, ftol=None): + """ + Uses EM algorithm to compute the maximum likelihood of a test + + Parameters + ---------- + + Nuisance Params: array + Vector of values to be used as nuisance params. + + maxiter: int + Number of iterations in the EM algorithm for a parameter vector + + Returns + ------- + -2 ''*'' log likelihood ratio at hypothesized values and + nuisance params + + Notes + ----- + Optional parameters are provided by the test_beta function. + """ + iters = 0 + params[param_nums] = b0_vals + + nuis_param_index = np.int_(np.delete(np.arange(self.model.nvar), + param_nums)) + params[nuis_param_index] = nuisance_params + to_test = params.reshape(self.model.nvar, 1) + opt_res = np.inf + diff = np.inf + while iters < maxiter and diff > ftol: + F = F.flatten() + death = np.cumsum(F[::-1]) + survivalprob = death[::-1] + surv_point_mat = np.dot(F.reshape(-1, 1), + 1. / survivalprob[survidx].reshape(1, - 1)) + surv_point_mat = add_constant(surv_point_mat) + summed_wts = np.cumsum(surv_point_mat, axis=1) + wts = summed_wts[np.int_(np.arange(uncens_nobs)), + numcensbelow[uncensored]] + # ^E step + # See Zhou 2005, section 3. + self.model._fit_weights = wts + new_opt_res = self._opt_wtd_nuis_regress(to_test) + # ^ Uncensored weights' contribution to likelihood value. + F = self.new_weights + # ^ M step + diff = np.abs(new_opt_res - opt_res) + opt_res = new_opt_res + iters = iters + 1 + death = np.cumsum(F.flatten()[::-1]) + survivalprob = death[::-1] + llike = -opt_res + np.sum(np.log(survivalprob[survidx])) + wtd_km = km.flatten() / np.sum(km) + survivalmax = np.cumsum(wtd_km[::-1])[::-1] + llikemax = np.sum(np.log(wtd_km[uncensored])) + \ + np.sum(np.log(survivalmax[censored])) + if iters == maxiter: + warnings.warn('The EM reached the maximum number of iterations', + IterationLimitWarning) + return -2 * (llike - llikemax) + + def _ci_limits_beta(self, b0, param_num=None): + """ + Returns the difference between the log likelihood for a + parameter and some critical value. + + Parameters + ---------- + b0: float + Value of a regression parameter + + param_num: int + Parameter index of b0 + """ + return self.test_beta([b0], [param_num])[0] - self.r0 + + +class emplikeAFT(object): + """ + + Class for estimating and conducting inference in an AFT model. + + Parameters + ---------- + + endog: nx1 array + Response variables that are subject to random censoring + + exog: nxk array + Matrix of covariates + + censors: nx1 array + array with entries 0 or 1. 0 indicates a response was + censored. + + Attributes + ---------- + + nobs: float + Number of observations + + endog: array + Endog attay + + exog: array + Exogenous variable matrix + + censors + Censors array but sets the max(endog) to uncensored + + nvar: float + Number of exogenous variables + + uncens_nobs: float + Number of uncensored observations + + uncens_endog: array + Uncensored response variables + + uncens_exog: array + Exogenous variables of the uncensored observations + + Methods + ------- + + params: + Fits model parameters + + test_beta: + Tests if beta = b0 for any vector b0. + + Notes + ----- + + The data is immediately sorted in order of increasing endogenous + variables + + The last observation is assumed to be uncensored which makes + estimation and inference possible. + """ + def __init__(self, endog, exog, censors): + self.nobs = np.shape(exog)[0] + self.endog = endog.reshape(self.nobs, 1) + self.exog = exog.reshape(self.nobs, -1) + self.censors = censors.reshape(self.nobs, 1) + self.nvar = self.exog.shape[1] + idx = np.lexsort((-self.censors[:, 0], self.endog[:, 0])) + self.endog = self.endog[idx] + self.exog = self.exog[idx] + self.censors = self.censors[idx] + self.censors[-1] = 1 # Sort in init, not in function + self.uncens_nobs = int(np.sum(self.censors)) + mask = self.censors.ravel().astype(bool) + self.uncens_endog = self.endog[mask, :].reshape(-1, 1) + self.uncens_exog = self.exog[mask, :] + + + def _is_tied(self, endog, censors): + """ + Indicated if an observation takes the same value as the next + ordered observation. + + Parameters + ---------- + endog: array + Models endogenous variable + censors: array + arrat indicating a censored array + + Returns + ------- + indic_ties: array + ties[i]=1 if endog[i]==endog[i+1] and + censors[i]=censors[i+1] + """ + nobs = int(self.nobs) + endog_idx = endog[np.arange(nobs - 1)] == ( + endog[np.arange(nobs - 1) + 1]) + censors_idx = censors[np.arange(nobs - 1)] == ( + censors[np.arange(nobs - 1) + 1]) + indic_ties = endog_idx * censors_idx # Both true + return np.int_(indic_ties) + + def _km_w_ties(self, tie_indic, untied_km): + """ + Computes KM estimator value at each observation, taking into acocunt + ties in the data. + + Parameters + ---------- + tie_indic: 1d array + Indicates if the i'th observation is the same as the ith +1 + untied_km: 1d array + Km estimates at each observation assuming no ties. + + """ + # TODO: Vectorize, even though it is only 1 pass through for any + # function call + num_same = 1 + idx_nums = [] + for obs_num in np.arange(int(self.nobs - 1))[::-1]: + if tie_indic[obs_num] == 1: + idx_nums.append(obs_num) + num_same = num_same + 1 + untied_km[obs_num] = untied_km[obs_num + 1] + elif tie_indic[obs_num] == 0 and num_same > 1: + idx_nums.append(max(idx_nums) + 1) + idx_nums = np.asarray(idx_nums) + untied_km[idx_nums] = untied_km[idx_nums] + num_same = 1 + idx_nums = [] + return untied_km.reshape(self.nobs, 1) + + def _make_km(self, endog, censors): + """ + + Computes the Kaplan-Meier estimate for the weights in the AFT model + + Parameters + ---------- + endog: nx1 array + Array of response variables + censors: nx1 array + Censor-indicating variable + + Returns + ------- + Kaplan Meier estimate for each observation + + Notes + ----- + + This function makes calls to _is_tied and km_w_ties to handle ties in + the data.If a censored observation and an uncensored observation has + the same value, it is assumed that the uncensored happened first. + + """ + nobs = self.nobs + num = (nobs - (np.arange(nobs) + 1.)) + denom = ((nobs - (np.arange(nobs) + 1.) + 1.)) + km = (num / denom).reshape(nobs, 1) + km = km ** np.abs(censors - 1.) + km = np.cumprod(km) # If no ties, this is kaplan-meier + tied = self._is_tied(endog, censors) + wtd_km = self._km_w_ties(tied, km) + return (censors / wtd_km).reshape(nobs, 1) + + def fit(self): + """ + + Fits an AFT model and returns results instance + + Parameters + ---------- + None + + + Returns + ------- + Results instance. + + Notes + ----- + To avoid dividing by zero, max(endog) is assumed to be uncensored. + """ + return AFTResults(self) + + def predict(self, params, endog=None): + if endog is None: + endog = self.endog + return np.dot(endog, params) + + +class AFTResults(OptAFT): + def __init__(self, model): + self.model = model + + def params(self): + """ + + Fits an AFT model and returns parameters. + + Parameters + ---------- + None + + + Returns + ------- + Fitted params + + Notes + ----- + To avoid dividing by zero, max(endog) is assumed to be uncensored. + """ + self.model.modif_censors = np.copy(self.model.censors) + self.model.modif_censors[-1] = 1 + wts = self.model._make_km(self.model.endog, self.model.modif_censors) + res = WLS(self.model.endog, self.model.exog, wts).fit() + params = res.params + return params + + def test_beta(self, b0_vals, param_nums, ftol=10 ** - 5, maxiter=30, + print_weights=1): + """ + Returns the profile log likelihood for regression parameters + 'param_num' at 'b0_vals.' + + Parameters + ---------- + b0_vals: list + The value of parameters to be tested + + param_num: list + Which parameters to be tested + + maxiter: int, optional + How many iterations to use in the EM algorithm. Default is 30 + + ftol: float, optional + The function tolerance for the EM optimization. + Default is 10''**''-5 + + print_weights: bool + If true, returns the weights tate maximize the profile + log likelihood. Default is False + + Returns + ------- + + test_results: tuple + The log-likelihood and p-pvalue of the test. + + Notes + ----- + + The function will warn if the EM reaches the maxiter. However, when + optimizing over nuisance parameters, it is possible to reach a + maximum number of inner iterations for a specific value for the + nuisance parameters while the resultsof the function are still valid. + This usually occurs when the optimization over the nuisance parameters + selects paramater values that yield a log-likihood ratio close to + infinity. + + Examples + -------- + + >>> import statsmodels.api as sm + >>> import numpy as np + + # Test parameter is .05 in one regressor no intercept model + >>> data=sm.datasets.heart.load(as_pandas=False) + >>> y = np.log10(data.endog) + >>> x = data.exog + >>> cens = data.censors + >>> model = sm.emplike.emplikeAFT(y, x, cens) + >>> res=model.test_beta([0], [0]) + >>> res + (1.4657739632606308, 0.22601365256959183) + + #Test slope is 0 in model with intercept + + >>> data=sm.datasets.heart.load(as_pandas=False) + >>> y = np.log10(data.endog) + >>> x = data.exog + >>> cens = data.censors + >>> model = sm.emplike.emplikeAFT(y, sm.add_constant(x), cens) + >>> res = model.test_beta([0], [1]) + >>> res + (4.623487775078047, 0.031537049752572731) + + """ + censors = self.model.censors + endog = self.model.endog + exog = self.model.exog + uncensored = (censors == 1).flatten() + censored = (censors == 0).flatten() + uncens_endog = endog[uncensored] + uncens_exog = exog[uncensored, :] + reg_model = OLS(uncens_endog, uncens_exog).fit() + llr, pval, new_weights = reg_model.el_test(b0_vals, param_nums, + return_weights=True) # Needs to be changed + km = self.model._make_km(endog, censors).flatten() # when merged + uncens_nobs = self.model.uncens_nobs + F = np.asarray(new_weights).reshape(uncens_nobs) + # Step 0 ^ + params = self.params() + survidx = np.where(censors == 0) + survidx = survidx[0] - np.arange(len(survidx[0])) + numcensbelow = np.int_(np.cumsum(1 - censors)) + if len(param_nums) == len(params): + llr = self._EM_test([], F=F, params=params, + param_nums=param_nums, + b0_vals=b0_vals, survidx=survidx, + uncens_nobs=uncens_nobs, + numcensbelow=numcensbelow, km=km, + uncensored=uncensored, censored=censored, + ftol=ftol, maxiter=25) + return llr, chi2.sf(llr, self.model.nvar) + else: + x0 = np.delete(params, param_nums) + try: + res = optimize.fmin(self._EM_test, x0, + (params, param_nums, b0_vals, F, survidx, + uncens_nobs, numcensbelow, km, uncensored, + censored, maxiter, ftol), full_output=1, + disp=0) + + llr = res[1] + return llr, chi2.sf(llr, len(param_nums)) + except np.linalg.linalg.LinAlgError: + return np.inf, 0 + + def ci_beta(self, param_num, beta_high, beta_low, sig=.05): + """ + Returns the confidence interval for a regression + parameter in the AFT model. + + Parameters + ---------- + + param_num: int + Parameter number of interest + + beta_high: float + Upper bound for the confidence interval + + beta_low: + Lower bound for the confidence interval + + sig: float, optional + Significance level. Default is .05 + + Notes + ----- + If the function returns f(a) and f(b) must have different signs, + consider widening the search area by adjusting beta_low and + beta_high. + + Also note that this process is computational intensive. There + are 4 levels of optimization/solving. From outer to inner: + + 1) Solving so that llr-critical value = 0 + 2) maximizing over nuisance parameters + 3) Using EM at each value of nuisamce parameters + 4) Using the _modified_Newton optimizer at each iteration + of the EM algorithm. + + Also, for very unlikely nuisance parameters, it is possible for + the EM algorithm to not converge. This is not an indicator + that the solver did not find the correct solution. It just means + for a specific iteration of the nuisance parameters, the optimizer + was unable to converge. + + If the user desires to verify the success of the optimization, + it is recommended to test the limits using test_beta. + + """ + params = self.params() + self.r0 = chi2.ppf(1 - sig, 1) + ll = optimize.brentq(self._ci_limits_beta, beta_low, + params[param_num], (param_num)) + ul = optimize.brentq(self._ci_limits_beta, + params[param_num], beta_high, (param_num)) + return ll, ul diff --git a/statsmodels/emplike/api.py b/statsmodels/emplike/api.py new file mode 100644 index 0000000..8965eba --- /dev/null +++ b/statsmodels/emplike/api.py @@ -0,0 +1,15 @@ +""" +api for empirical likelihood + +""" +__all__ = [ + "DescStat", "DescStatUV", "DescStatMV", + "ELOriginRegress", "ANOVA", "emplikeAFT" +] + +# pylint: disable=W0611 + +from .descriptive import DescStat, DescStatUV, DescStatMV +from .originregress import ELOriginRegress +from .elanova import ANOVA +from .aft_el import emplikeAFT diff --git a/statsmodels/emplike/descriptive.py b/statsmodels/emplike/descriptive.py new file mode 100644 index 0000000..75940cd --- /dev/null +++ b/statsmodels/emplike/descriptive.py @@ -0,0 +1,1149 @@ +""" +Empirical likelihood inference on descriptive statistics + +This module conducts hypothesis tests and constructs confidence +intervals for the mean, variance, skewness, kurtosis and correlation. + +If matplotlib is installed, this module can also generate multivariate +confidence region plots as well as mean-variance contour plots. + +See _OptFuncts docstring for technical details and optimization variable +definitions. + +General References: +------------------ +Owen, A. (2001). "Empirical Likelihood." Chapman and Hall + +""" +from __future__ import division + +import numpy as np +from scipy import optimize +from scipy.stats import chi2, skew, kurtosis +from statsmodels.base.optimizer import _fit_newton +import itertools +from statsmodels.graphics import utils + + +def DescStat(endog): + """ + Returns an instance to conduct inference on descriptive statistics + via empirical likelihood. See DescStatUV and DescStatMV for more + information. + + Parameters + ---------- + endog : ndarray + Array of data + + Returns : DescStat instance + If k=1, the function returns a univariate instance, DescStatUV. + If k>1, the function returns a multivariate instance, DescStatMV. + """ + if endog.ndim == 1: + endog = endog.reshape(len(endog), 1) + if endog.shape[1] == 1: + return DescStatUV(endog) + if endog.shape[1] > 1: + return DescStatMV(endog) + + +class _OptFuncts(object): + """ + A class that holds functions that are optimized/solved. + + The general setup of the class is simple. Any method that starts with + _opt_ creates a vector of estimating equations named est_vect such that + np.dot(p, (est_vect))=0 where p is the weight on each + observation as a 1 x n array and est_vect is n x k. Then _modif_Newton is + called to determine the optimal p by solving for the Lagrange multiplier + (eta) in the profile likelihood maximization problem. In the presence + of nuisance parameters, _opt_ functions are optimized over to profile + out the nuisance parameters. + + Any method starting with _ci_limits calculates the log likelihood + ratio for a specific value of a parameter and then subtracts a + pre-specified critical value. This is solved so that llr - crit = 0. + + """ + + def __init__(self, endog): + pass + + def _log_star(self, eta, est_vect, weights, nobs): + """ + Transforms the log of observation probabilities in terms of the + Lagrange multiplier to the log 'star' of the probabilities. + + Parameters + ---------- + eta : float + Lagrange multiplier + + est_vect : ndarray (n,k) + Estimating equations vector + + wts : nx1 array + Observation weights + + Returns + ------ + data_star : array + The weighted logstar of the estimting equations + + Notes + ----- + This function is only a placeholder for the _fit_Newton. + The function value is not used in optimization and the optimal value + is disregarded when computing the log likelihood ratio. + """ + data_star = np.log(weights) + (np.sum(weights) +\ + np.dot(est_vect, eta)) + idx = data_star < 1. / nobs + not_idx = ~idx + nx = nobs * data_star[idx] + data_star[idx] = np.log(1. / nobs) - 1.5 + nx * (2. - nx / 2) + data_star[not_idx] = np.log(data_star[not_idx]) + return data_star + + def _hess(self, eta, est_vect, weights, nobs): + """ + Calculates the hessian of a weighted empirical likelihood + problem. + + Parameters + ---------- + eta : ndarray, (1,m) + Lagrange multiplier in the profile likelihood maximization + + est_vect : ndarray (n,k) + Estimating equations vector + + weights : 1darray + Observation weights + + Returns + ------- + hess : m x m array + Weighted hessian used in _wtd_modif_newton + """ + #eta = np.squeeze(eta) + data_star_doub_prime = np.sum(weights) + np.dot(est_vect, eta) + idx = data_star_doub_prime < 1. / nobs + not_idx = ~idx + data_star_doub_prime[idx] = - nobs ** 2 + data_star_doub_prime[not_idx] = - (data_star_doub_prime[not_idx]) ** -2 + wtd_dsdp = weights * data_star_doub_prime + return np.dot(est_vect.T, wtd_dsdp[:, None] * est_vect) + + def _grad(self, eta, est_vect, weights, nobs): + """ + Calculates the gradient of a weighted empirical likelihood + problem + + Parameters + ---------- + eta : ndarray, (1,m) + Lagrange multiplier in the profile likelihood maximization + + est_vect : ndarray, (n,k) + Estimating equations vector + + weights : 1darray + Observation weights + + Returns + ------- + gradient : ndarray (m,1) + The gradient used in _wtd_modif_newton + """ + #eta = np.squeeze(eta) + data_star_prime = np.sum(weights) + np.dot(est_vect, eta) + idx = data_star_prime < 1. / nobs + not_idx = ~idx + data_star_prime[idx] = nobs * (2 - nobs * data_star_prime[idx]) + data_star_prime[not_idx] = 1. / data_star_prime[not_idx] + return np.dot(weights * data_star_prime, est_vect) + + def _modif_newton(self, eta, est_vect, weights): + """ + Modified Newton's method for maximizing the log 'star' equation. This + function calls _fit_newton to find the optimal values of eta. + + Parameters + ---------- + eta : ndarray, (1,m) + Lagrange multiplier in the profile likelihood maximization + + est_vect : ndarray, (n,k) + Estimating equations vector + + weights : 1darray + Observation weights + + Returns + ------- + params : 1xm array + Lagrange multiplier that maximizes the log-likelihood + """ + nobs = len(est_vect) + f = lambda x0: - np.sum(self._log_star(x0, est_vect, weights, nobs)) + grad = lambda x0: - self._grad(x0, est_vect, weights, nobs) + hess = lambda x0: - self._hess(x0, est_vect, weights, nobs) + kwds = {'tol': 1e-8} + eta = eta.squeeze() + res = _fit_newton(f, grad, eta, (), kwds, hess=hess, maxiter=50, \ + disp=0) + return res[0] + + def _find_eta(self, eta): + """ + Finding the root of sum(xi-h0)/(1+eta(xi-mu)) solves for + eta when computing ELR for univariate mean. + + Parameters + ---------- + eta : float + Lagrange multiplier in the empirical likelihood maximization + + Returns + ------- + llr : float + n times the log likelihood value for a given value of eta + """ + return np.sum((self.endog - self.mu0) / \ + (1. + eta * (self.endog - self.mu0))) + + def _ci_limits_mu(self, mu): + """ + Calculates the difference between the log likelihood of mu_test and a + specified critical value. + + Parameters + ---------- + mu : float + Hypothesized value of the mean. + + Returns + ------- + diff : float + The difference between the log likelihood value of mu0 and + a specified value. + """ + return self.test_mean(mu)[0] - self.r0 + + def _find_gamma(self, gamma): + """ + Finds gamma that satisfies + sum(log(n * w(gamma))) - log(r0) = 0 + + Used for confidence intervals for the mean + + Parameters + ---------- + gamma : float + Lagrange multiplier when computing confidence interval + + Returns + ------- + diff : float + The difference between the log-liklihood when the Lagrange + multiplier is gamma and a pre-specified value + """ + denom = np.sum((self.endog - gamma) ** -1) + new_weights = (self.endog - gamma) ** -1 / denom + return -2 * np.sum(np.log(self.nobs * new_weights)) - \ + self.r0 + + def _opt_var(self, nuisance_mu, pval=False): + """ + This is the function to be optimized over a nuisance mean parameter + to determine the likelihood ratio for the variance + + Parameters + ---------- + nuisance_mu : float + Value of a nuisance mean parameter + + Returns + ------- + llr : float + Log likelihood of a pre-specified variance holding the nuisance + parameter constant + """ + endog = self.endog + nobs = self.nobs + sig_data = ((endog - nuisance_mu) ** 2 \ + - self.sig2_0) + mu_data = (endog - nuisance_mu) + est_vect = np.column_stack((mu_data, sig_data)) + eta_star = self._modif_newton(np.array([1. / nobs, + 1. / nobs]), est_vect, + np.ones(nobs) * (1. / nobs)) + + denom = 1 + np.dot(eta_star, est_vect.T) + self.new_weights = 1. / nobs * 1. / denom + llr = np.sum(np.log(nobs * self.new_weights)) + if pval: # Used for contour plotting + return chi2.sf(-2 * llr, 1) + return -2 * llr + + def _ci_limits_var(self, var): + """ + Used to determine the confidence intervals for the variance. + It calls test_var and when called by an optimizer, + finds the value of sig2_0 that is chi2.ppf(significance-level) + + Parameters + ---------- + var_test : float + Hypothesized value of the variance + + Returns + ------- + diff : float + The difference between the log likelihood ratio at var_test and a + pre-specified value. + """ + return self.test_var(var)[0] - self.r0 + + def _opt_skew(self, nuis_params): + """ + Called by test_skew. This function is optimized over + nuisance parameters mu and sigma + + Parameters + ---------- + nuis_params : 1darray + An array with a nuisance mean and variance parameter + + Returns + ------- + llr : float + The log likelihood ratio of a pre-specified skewness holding + the nuisance parameters constant. + """ + endog = self.endog + nobs = self.nobs + mu_data = endog - nuis_params[0] + sig_data = ((endog - nuis_params[0]) ** 2) - nuis_params[1] + skew_data = ((((endog - nuis_params[0]) ** 3) / + (nuis_params[1] ** 1.5))) - self.skew0 + est_vect = np.column_stack((mu_data, sig_data, skew_data)) + eta_star = self._modif_newton(np.array([1. / nobs, + 1. / nobs, + 1. / nobs]), est_vect, + np.ones(nobs) * (1. / nobs)) + denom = 1. + np.dot(eta_star, est_vect.T) + self.new_weights = 1. / nobs * 1. / denom + llr = np.sum(np.log(nobs * self.new_weights)) + return -2 * llr + + def _opt_kurt(self, nuis_params): + """ + Called by test_kurt. This function is optimized over + nuisance parameters mu and sigma + + Parameters + ---------- + nuis_params : 1darray + An array with a nuisance mean and variance parameter + + Returns + ------- + llr : float + The log likelihood ratio of a pre-speified kurtosis holding the + nuisance parameters constant + """ + endog = self.endog + nobs = self.nobs + mu_data = endog - nuis_params[0] + sig_data = ((endog - nuis_params[0]) ** 2) - nuis_params[1] + kurt_data = (((((endog - nuis_params[0]) ** 4) / \ + (nuis_params[1] ** 2))) - 3) - self.kurt0 + est_vect = np.column_stack((mu_data, sig_data, kurt_data)) + eta_star = self._modif_newton(np.array([1. / nobs, + 1. / nobs, + 1. / nobs]), est_vect, + np.ones(nobs) * (1. / nobs)) + denom = 1 + np.dot(eta_star, est_vect.T) + self.new_weights = 1. / nobs * 1. / denom + llr = np.sum(np.log(nobs * self.new_weights)) + return -2 * llr + + def _opt_skew_kurt(self, nuis_params): + """ + Called by test_joint_skew_kurt. This function is optimized over + nuisance parameters mu and sigma + + Parameters + ---------- + nuis_params : 1darray + An array with a nuisance mean and variance parameter + + Returns + ------ + llr : float + The log likelihood ratio of a pre-speified skewness and + kurtosis holding the nuisance parameters constant. + """ + endog = self.endog + nobs = self.nobs + mu_data = endog - nuis_params[0] + sig_data = ((endog - nuis_params[0]) ** 2) - nuis_params[1] + skew_data = ((((endog - nuis_params[0]) ** 3) / \ + (nuis_params[1] ** 1.5))) - self.skew0 + kurt_data = (((((endog - nuis_params[0]) ** 4) / \ + (nuis_params[1] ** 2))) - 3) - self.kurt0 + est_vect = np.column_stack((mu_data, sig_data, skew_data, kurt_data)) + eta_star = self._modif_newton(np.array([1. / nobs, + 1. / nobs, + 1. / nobs, + 1. / nobs]), est_vect, + np.ones(nobs) * (1. / nobs)) + denom = 1. + np.dot(eta_star, est_vect.T) + self.new_weights = 1. / nobs * 1. / denom + llr = np.sum(np.log(nobs * self.new_weights)) + return -2 * llr + + def _ci_limits_skew(self, skew): + """ + Parameters + ---------- + skew0 : float + Hypothesized value of skewness + + Returns + ------- + diff : float + The difference between the log likelihood ratio at skew and a + pre-specified value. + """ + return self.test_skew(skew)[0] - self.r0 + + def _ci_limits_kurt(self, kurt): + """ + Parameters + ---------- + skew0 : float + Hypothesized value of kurtosis + + Returns + ------- + diff : float + The difference between the log likelihood ratio at kurt and a + pre-specified value. + """ + return self.test_kurt(kurt)[0] - self.r0 + + def _opt_correl(self, nuis_params, corr0, endog, nobs, x0, weights0): + """ + Parameters + ---------- + nuis_params : 1darray + Array containing two nuisance means and two nuisance variances + + Returns + ------- + llr : float + The log-likelihood of the correlation coefficient holding nuisance + parameters constant + """ + mu1_data, mu2_data = (endog - nuis_params[::2]).T + sig1_data = mu1_data ** 2 - nuis_params[1] + sig2_data = mu2_data ** 2 - nuis_params[3] + correl_data = ((mu1_data * mu2_data) - corr0 * + (nuis_params[1] * nuis_params[3]) ** .5) + est_vect = np.column_stack((mu1_data, sig1_data, + mu2_data, sig2_data, correl_data)) + eta_star = self._modif_newton(x0, est_vect, weights0) + denom = 1. + np.dot(est_vect, eta_star) + self.new_weights = 1. / nobs * 1. / denom + llr = np.sum(np.log(nobs * self.new_weights)) + return -2 * llr + + def _ci_limits_corr(self, corr): + return self.test_corr(corr)[0] - self.r0 + + +class DescStatUV(_OptFuncts): + """ + A class to compute confidence intervals and hypothesis tests involving + mean, variance, kurtosis and skewness of a univariate random variable. + + Parameters + ---------- + endog : 1darray + Data to be analyzed + + Attributes + ---------- + endog : 1darray + Data to be analyzed + + nobs : float + Number of observations + """ + + def __init__(self, endog): + self.endog = np.squeeze(endog) + self.nobs = endog.shape[0] + + def test_mean(self, mu0, return_weights=False): + """ + Returns - 2 x log-likelihood ratio, p-value and weights + for a hypothesis test of the mean. + + Parameters + ---------- + mu0 : float + Mean value to be tested + + return_weights : bool + If return_weights is True the funtion returns + the weights of the observations under the null hypothesis. + Default is False + + Returns + ------- + test_results : tuple + The log-likelihood ratio and p-value of mu0 + """ + self.mu0 = mu0 + endog = self.endog + nobs = self.nobs + eta_min = (1. - (1. / nobs)) / (self.mu0 - max(endog)) + eta_max = (1. - (1. / nobs)) / (self.mu0 - min(endog)) + eta_star = optimize.brentq(self._find_eta, eta_min, eta_max) + new_weights = (1. / nobs) * 1. / (1. + eta_star * (endog - self.mu0)) + llr = -2 * np.sum(np.log(nobs * new_weights)) + if return_weights: + return llr, chi2.sf(llr, 1), new_weights + else: + return llr, chi2.sf(llr, 1) + + def ci_mean(self, sig=.05, method='gamma', epsilon=10 ** -8, + gamma_low=-10 ** 10, gamma_high=10 ** 10): + """ + Returns the confidence interval for the mean. + + Parameters + ---------- + sig : float + significance level. Default is .05 + + method : str + Root finding method, Can be 'nested-brent' or + 'gamma'. Default is 'gamma' + + 'gamma' Tries to solve for the gamma parameter in the + Lagrange (see Owen pg 22) and then determine the weights. + + 'nested brent' uses brents method to find the confidence + intervals but must maximize the likelihhod ratio on every + iteration. + + gamma is generally much faster. If the optimizations does not + converge, try expanding the gamma_high and gamma_low + variable. + + gamma_low : float + Lower bound for gamma when finding lower limit. + If function returns f(a) and f(b) must have different signs, + consider lowering gamma_low. + + gamma_high : float + Upper bound for gamma when finding upper limit. + If function returns f(a) and f(b) must have different signs, + consider raising gamma_high. + + epsilon : float + When using 'nested-brent', amount to decrease (increase) + from the maximum (minimum) of the data when + starting the search. This is to protect against the + likelihood ratio being zero at the maximum (minimum) + value of the data. If data is very small in absolute value + (<10 ``**`` -6) consider shrinking epsilon + + When using 'gamma', amount to decrease (increase) the + minimum (maximum) by to start the search for gamma. + If fucntion returns f(a) and f(b) must have differnt signs, + consider lowering epsilon. + + Returns + ------- + Interval : tuple + Confidence interval for the mean + """ + endog = self.endog + sig = 1 - sig + if method == 'nested-brent': + self.r0 = chi2.ppf(sig, 1) + middle = np.mean(endog) + epsilon_u = (max(endog) - np.mean(endog)) * epsilon + epsilon_l = (np.mean(endog) - min(endog)) * epsilon + ulim = optimize.brentq(self._ci_limits_mu, middle, + max(endog) - epsilon_u) + llim = optimize.brentq(self._ci_limits_mu, middle, + min(endog) + epsilon_l) + return llim, ulim + + if method == 'gamma': + self.r0 = chi2.ppf(sig, 1) + gamma_star_l = optimize.brentq(self._find_gamma, gamma_low, + min(endog) - epsilon) + gamma_star_u = optimize.brentq(self._find_gamma, \ + max(endog) + epsilon, gamma_high) + weights_low = ((endog - gamma_star_l) ** -1) / \ + np.sum((endog - gamma_star_l) ** -1) + weights_high = ((endog - gamma_star_u) ** -1) / \ + np.sum((endog - gamma_star_u) ** -1) + mu_low = np.sum(weights_low * endog) + mu_high = np.sum(weights_high * endog) + return mu_low, mu_high + + def test_var(self, sig2_0, return_weights=False): + """ + Returns -2 x log-likelihoog ratio and the p-value for the + hypothesized variance + + Parameters + ---------- + sig2_0 : float + Hypothesized variance to be tested + + return_weights : bool + If True, returns the weights that maximize the + likelihood of observing sig2_0. Default is False + + Returns + ------- + test_results : tuple + The log-likelihood ratio and the p_value of sig2_0 + + Examples + -------- + >>> import numpy as np + >>> import statsmodels.api as sm + >>> random_numbers = np.random.standard_normal(1000)*100 + >>> el_analysis = sm.emplike.DescStat(random_numbers) + >>> hyp_test = el_analysis.test_var(9500) + """ + self.sig2_0 = sig2_0 + mu_max = max(self.endog) + mu_min = min(self.endog) + llr = optimize.fminbound(self._opt_var, mu_min, mu_max, \ + full_output=1)[1] + p_val = chi2.sf(llr, 1) + if return_weights: + return llr, p_val, self.new_weights.T + else: + return llr, p_val + + def ci_var(self, lower_bound=None, upper_bound=None, sig=.05): + """ + Returns the confidence interval for the variance. + + Parameters + ---------- + lower_bound : float + The minimum value the lower confidence interval can + take. The p-value from test_var(lower_bound) must be lower + than 1 - significance level. Default is .99 confidence + limit assuming normality + + upper_bound : float + The maximum value the upper confidence interval + can take. The p-value from test_var(upper_bound) must be lower + than 1 - significance level. Default is .99 confidence + limit assuming normality + + sig : float + The significance level. Default is .05 + + Returns + ------- + Interval : tuple + Confidence interval for the variance + + Examples + -------- + >>> import numpy as np + >>> import statsmodels.api as sm + >>> random_numbers = np.random.standard_normal(100) + >>> el_analysis = sm.emplike.DescStat(random_numbers) + >>> el_analysis.ci_var() + (0.7539322567470305, 1.229998852496268) + >>> el_analysis.ci_var(.5, 2) + (0.7539322567469926, 1.2299988524962664) + + Notes + ----- + If the function returns the error f(a) and f(b) must have + different signs, consider lowering lower_bound and raising + upper_bound. + """ + endog = self.endog + if upper_bound is None: + upper_bound = ((self.nobs - 1) * endog.var()) / \ + (chi2.ppf(.0001, self.nobs - 1)) + if lower_bound is None: + lower_bound = ((self.nobs - 1) * endog.var()) / \ + (chi2.ppf(.9999, self.nobs - 1)) + self.r0 = chi2.ppf(1 - sig, 1) + llim = optimize.brentq(self._ci_limits_var, lower_bound, endog.var()) + ulim = optimize.brentq(self._ci_limits_var, endog.var(), upper_bound) + return llim, ulim + + def plot_contour(self, mu_low, mu_high, var_low, var_high, mu_step, + var_step, + levs=[.2, .1, .05, .01, .001]): + """ + Returns a plot of the confidence region for a univariate + mean and variance. + + Parameters + ---------- + mu_low : float + Lowest value of the mean to plot + + mu_high : float + Highest value of the mean to plot + + var_low : float + Lowest value of the variance to plot + + var_high : float + Highest value of the variance to plot + + mu_step : float + Increments to evaluate the mean + + var_step : float + Increments to evaluate the mean + + levs : list + Which values of significance the contour lines will be drawn. + Default is [.2, .1, .05, .01, .001] + + Returns + ------- + fig : matplotlib figure instance + The contour plot + """ + fig, ax = utils.create_mpl_ax() + ax.set_ylabel('Variance') + ax.set_xlabel('Mean') + mu_vect = list(np.arange(mu_low, mu_high, mu_step)) + var_vect = list(np.arange(var_low, var_high, var_step)) + z = [] + for sig0 in var_vect: + self.sig2_0 = sig0 + for mu0 in mu_vect: + z.append(self._opt_var(mu0, pval=True)) + z = np.asarray(z).reshape(len(var_vect), len(mu_vect)) + ax.contour(mu_vect, var_vect, z, levels=levs) + return fig + + def test_skew(self, skew0, return_weights=False): + """ + Returns -2 x log-likelihood and p-value for the hypothesized + skewness. + + Parameters + ---------- + skew0 : float + Skewness value to be tested + + return_weights : bool + If True, function also returns the weights that + maximize the likelihood ratio. Default is False. + + Returns + ------- + test_results : tuple + The log-likelihood ratio and p_value of skew0 + """ + self.skew0 = skew0 + start_nuisance = np.array([self.endog.mean(), + self.endog.var()]) + + llr = optimize.fmin_powell(self._opt_skew, start_nuisance, + full_output=1, disp=0)[1] + p_val = chi2.sf(llr, 1) + if return_weights: + return llr, p_val, self.new_weights.T + return llr, p_val + + def test_kurt(self, kurt0, return_weights=False): + """ + Returns -2 x log-likelihood and the p-value for the hypothesized + kurtosis. + + Parameters + ---------- + kurt0 : float + Kurtosis value to be tested + + return_weights : bool + If True, function also returns the weights that + maximize the likelihood ratio. Default is False. + + Returns + ------- + test_results : tuple + The log-likelihood ratio and p-value of kurt0 + """ + self.kurt0 = kurt0 + start_nuisance = np.array([self.endog.mean(), + self.endog.var()]) + + llr = optimize.fmin_powell(self._opt_kurt, start_nuisance, + full_output=1, disp=0)[1] + p_val = chi2.sf(llr, 1) + if return_weights: + return llr, p_val, self.new_weights.T + return llr, p_val + + def test_joint_skew_kurt(self, skew0, kurt0, return_weights=False): + """ + Returns - 2 x log-likelihood and the p-value for the joint + hypothesis test for skewness and kurtosis + + Parameters + ---------- + skew0 : float + Skewness value to be tested + kurt0 : float + Kurtosis value to be tested + + return_weights : bool + If True, function also returns the weights that + maximize the likelihood ratio. Default is False. + + Returns + ------- + test_results : tuple + The log-likelihood ratio and p-value of the joint hypothesis test. + """ + self.skew0 = skew0 + self.kurt0 = kurt0 + start_nuisance = np.array([self.endog.mean(), + self.endog.var()]) + + llr = optimize.fmin_powell(self._opt_skew_kurt, start_nuisance, + full_output=1, disp=0)[1] + p_val = chi2.sf(llr, 2) + if return_weights: + return llr, p_val, self.new_weights.T + return llr, p_val + + def ci_skew(self, sig=.05, upper_bound=None, lower_bound=None): + """ + Returns the confidence interval for skewness. + + Parameters + ---------- + sig : float + The significance level. Default is .05 + + upper_bound : float + Maximum value of skewness the upper limit can be. + Default is .99 confidence limit assuming normality. + + lower_bound : float + Minimum value of skewness the lower limit can be. + Default is .99 confidence level assuming normality. + + Returns + ------- + Interval : tuple + Confidence interval for the skewness + + Notes + ----- + If function returns f(a) and f(b) must have different signs, consider + expanding lower and upper bounds + """ + nobs = self.nobs + endog = self.endog + if upper_bound is None: + upper_bound = skew(endog) + \ + 2.5 * ((6. * nobs * (nobs - 1.)) / \ + ((nobs - 2.) * (nobs + 1.) * \ + (nobs + 3.))) ** .5 + if lower_bound is None: + lower_bound = skew(endog) - \ + 2.5 * ((6. * nobs * (nobs - 1.)) / \ + ((nobs - 2.) * (nobs + 1.) * \ + (nobs + 3.))) ** .5 + self.r0 = chi2.ppf(1 - sig, 1) + llim = optimize.brentq(self._ci_limits_skew, lower_bound, skew(endog)) + ulim = optimize.brentq(self._ci_limits_skew, skew(endog), upper_bound) + return llim, ulim + + def ci_kurt(self, sig=.05, upper_bound=None, lower_bound=None): + """ + Returns the confidence interval for kurtosis. + + Parameters + ---------- + + sig : float + The significance level. Default is .05 + + upper_bound : float + Maximum value of kurtosis the upper limit can be. + Default is .99 confidence limit assuming normality. + + lower_bound : float + Minimum value of kurtosis the lower limit can be. + Default is .99 confidence limit assuming normality. + + Returns + ------- + Interval : tuple + Lower and upper confidence limit + + Notes + ----- + For small n, upper_bound and lower_bound may have to be + provided by the user. Consider using test_kurt to find + values close to the desired significance level. + + If function returns f(a) and f(b) must have different signs, consider + expanding the bounds. + """ + endog = self.endog + nobs = self.nobs + if upper_bound is None: + upper_bound = kurtosis(endog) + \ + (2.5 * (2. * ((6. * nobs * (nobs - 1.)) / \ + ((nobs - 2.) * (nobs + 1.) * \ + (nobs + 3.))) ** .5) * \ + (((nobs ** 2.) - 1.) / ((nobs - 3.) *\ + (nobs + 5.))) ** .5) + if lower_bound is None: + lower_bound = kurtosis(endog) - \ + (2.5 * (2. * ((6. * nobs * (nobs - 1.)) / \ + ((nobs - 2.) * (nobs + 1.) * \ + (nobs + 3.))) ** .5) * \ + (((nobs ** 2.) - 1.) / ((nobs - 3.) *\ + (nobs + 5.))) ** .5) + self.r0 = chi2.ppf(1 - sig, 1) + llim = optimize.brentq(self._ci_limits_kurt, lower_bound, \ + kurtosis(endog)) + ulim = optimize.brentq(self._ci_limits_kurt, kurtosis(endog), \ + upper_bound) + return llim, ulim + + +class DescStatMV(_OptFuncts): + """ + A class for conducting inference on multivariate means and correlation. + + Parameters + ---------- + endog : ndarray + Data to be analyzed + + Attributes + ---------- + endog : ndarray + Data to be analyzed + + nobs : float + Number of observations + + """ + + def __init__(self, endog): + self.endog = endog + self.nobs = endog.shape[0] + + def mv_test_mean(self, mu_array, return_weights=False): + """ + Returns -2 x log likelihood and the p-value + for a multivariate hypothesis test of the mean + + Parameters + ---------- + mu_array : 1d array + Hypothesized values for the mean. Must have same number of + elements as columns in endog + + return_weights : bool + If True, returns the weights that maximize the + likelihood of mu_array. Default is False. + + Returns + ------- + test_results : tuple + The log-likelihood ratio and p-value for mu_array + """ + endog = self.endog + nobs = self.nobs + if len(mu_array) != endog.shape[1]: + raise ValueError('mu_array must have the same number of ' + 'elements as the columns of the data.') + mu_array = mu_array.reshape(1, endog.shape[1]) + means = np.ones((endog.shape[0], endog.shape[1])) + means = mu_array * means + est_vect = endog - means + start_vals = 1. / nobs * np.ones(endog.shape[1]) + eta_star = self._modif_newton(start_vals, est_vect, + np.ones(nobs) * (1. / nobs)) + denom = 1 + np.dot(eta_star, est_vect.T) + self.new_weights = 1 / nobs * 1 / denom + llr = -2 * np.sum(np.log(nobs * self.new_weights)) + p_val = chi2.sf(llr, mu_array.shape[1]) + if return_weights: + return llr, p_val, self.new_weights.T + else: + return llr, p_val + + def mv_mean_contour(self, mu1_low, mu1_upp, mu2_low, mu2_upp, step1, step2, + levs=(.001, .01, .05, .1, .2), var1_name=None, + var2_name=None, plot_dta=False): + """ + Creates a confidence region plot for the mean of bivariate data + + Parameters + ---------- + m1_low : float + Minimum value of the mean for variable 1 + m1_upp : float + Maximum value of the mean for variable 1 + mu2_low : float + Minimum value of the mean for variable 2 + mu2_upp : float + Maximum value of the mean for variable 2 + step1 : float + Increment of evaluations for variable 1 + step2 : float + Increment of evaluations for variable 2 + levs : list + Levels to be drawn on the contour plot. + Default = (.001, .01, .05, .1, .2) + plot_dta : bool + If True, makes a scatter plot of the data on + top of the contour plot. Defaultis False. + var1_name : str + Name of variable 1 to be plotted on the x-axis + var2_name : str + Name of variable 2 to be plotted on the y-axis + + Notes + ----- + The smaller the step size, the more accurate the intervals + will be + + If the function returns optimization failed, consider narrowing + the boundaries of the plot + + Examples + -------- + >>> import statsmodels.api as sm + >>> two_rvs = np.random.standard_normal((20,2)) + >>> el_analysis = sm.emplike.DescStat(two_rvs) + >>> contourp = el_analysis.mv_mean_contour(-2, 2, -2, 2, .1, .1) + >>> contourp.show() + """ + if self.endog.shape[1] != 2: + raise ValueError('Data must contain exactly two variables') + fig, ax = utils.create_mpl_ax() + if var2_name is None: + ax.set_ylabel('Variable 2') + else: + ax.set_ylabel(var2_name) + if var1_name is None: + ax.set_xlabel('Variable 1') + else: + ax.set_xlabel(var1_name) + x = np.arange(mu1_low, mu1_upp, step1) + y = np.arange(mu2_low, mu2_upp, step2) + pairs = itertools.product(x, y) + z = [] + for i in pairs: + z.append(self.mv_test_mean(np.asarray(i))[0]) + X, Y = np.meshgrid(x, y) + z = np.asarray(z) + z = z.reshape(X.shape[1], Y.shape[0]) + ax.contour(x, y, z.T, levels=levs) + if plot_dta: + ax.plot(self.endog[:, 0], self.endog[:, 1], 'bo') + return fig + + def test_corr(self, corr0, return_weights=0): + """ + Returns -2 x log-likelihood ratio and p-value for the + correlation coefficient between 2 variables + + Parameters + ---------- + corr0 : float + Hypothesized value to be tested + + return_weights : bool + If true, returns the weights that maximize + the log-likelihood at the hypothesized value + """ + nobs = self.nobs + endog = self.endog + if endog.shape[1] != 2: + raise NotImplementedError('Correlation matrix not yet implemented') + nuis0 = np.array([endog[:, 0].mean(), + endog[:, 0].var(), + endog[:, 1].mean(), + endog[:, 1].var()]) + + x0 = np.zeros(5) + weights0 = np.array([1. / nobs] * int(nobs)) + args = (corr0, endog, nobs, x0, weights0) + llr = optimize.fmin(self._opt_correl, nuis0, args=args, + full_output=1, disp=0)[1] + p_val = chi2.sf(llr, 1) + if return_weights: + return llr, p_val, self.new_weights.T + return llr, p_val + + def ci_corr(self, sig=.05, upper_bound=None, lower_bound=None): + """ + Returns the confidence intervals for the correlation coefficient + + Parameters + ---------- + sig : float + The significance level. Default is .05 + + upper_bound : float + Maximum value the upper confidence limit can be. + Default is 99% confidence limit assuming normality. + + lower_bound : float + Minimum value the lower condidence limit can be. + Default is 99% confidence limit assuming normality. + + Returns + ------- + interval : tuple + Confidence interval for the correlation + + """ + endog = self.endog + nobs = self.nobs + self.r0 = chi2.ppf(1 - sig, 1) + point_est = np.corrcoef(endog[:, 0], endog[:, 1])[0, 1] + if upper_bound is None: + upper_bound = min(.999, point_est + \ + 2.5 * ((1. - point_est ** 2.) / \ + (nobs - 2.)) ** .5) + + if lower_bound is None: + lower_bound = max(- .999, point_est - \ + 2.5 * (np.sqrt((1. - point_est ** 2.) / \ + (nobs - 2.)))) + + llim = optimize.brenth(self._ci_limits_corr, lower_bound, point_est) + ulim = optimize.brenth(self._ci_limits_corr, point_est, upper_bound) + return llim, ulim diff --git a/statsmodels/emplike/elanova.py b/statsmodels/emplike/elanova.py new file mode 100644 index 0000000..5a13212 --- /dev/null +++ b/statsmodels/emplike/elanova.py @@ -0,0 +1,126 @@ +""" +This script contains empirical likelihood ANOVA. + +Currently the script only contains one feature that allows the user to compare +means of multiple groups + +General References +------------------ + +Owen, A. B. (2001). Empirical Likelihood. Chapman and Hall. +""" +from __future__ import division + +from statsmodels.compat.python import range +import numpy as np +from .descriptive import _OptFuncts +from scipy import optimize +from scipy.stats import chi2 + + +class _ANOVAOpt(_OptFuncts): + """ + + Class containing functions that are optimized over when + conducting ANOVA + + """ + def _opt_common_mu(self, mu): + """ + Optimizes the likelihood under the null hypothesis that all groups have + mean mu + + Parameters + ---------- + mu : float + The common mean + + Returns + ------- + llr : float + -2 times the llr ratio, which is the test statistic + """ + nobs = self.nobs + endog = self.endog + num_groups = self.num_groups + endog_asarray = np.zeros((nobs, num_groups)) + obs_num = 0 + for arr_num in range(len(endog)): + new_obs_num = obs_num + len(endog[arr_num]) + endog_asarray[obs_num: new_obs_num, arr_num] = endog[arr_num] - \ + mu + obs_num = new_obs_num + est_vect = endog_asarray + wts = np.ones(est_vect.shape[0]) * (1. / (est_vect.shape[0])) + eta_star = self._modif_newton(np.zeros(num_groups), est_vect, wts) + denom = 1. + np.dot(eta_star, est_vect.T) + self.new_weights = 1. / nobs * 1. / denom + llr = np.sum(np.log(nobs * self.new_weights)) + return -2 * llr + + +class ANOVA(_ANOVAOpt): + """ + A class for ANOVA and comparing means. + + Parameters + ---------- + + endog : list of arrays + endog should be a list containing 1 dimensional arrays. Each array + is the data collected from a certain group. + """ + + def __init__(self, endog): + self.endog = endog + self.num_groups = len(self.endog) + self.nobs = 0 + for i in self.endog: + self.nobs = self.nobs + len(i) + + def compute_ANOVA(self, mu=None, mu_start=0, return_weights=0): + + """ + Returns -2 log likelihood, the pvalue and the maximum likelihood + estimate for a common mean. + + Parameters + ---------- + + mu : float + If a mu is specified, ANOVA is conducted with mu as the + common mean. Otherwise, the common mean is the maximum + empirical likelihood estimate of the common mean. + Default is None. + + mu_start : float + Starting value for commean mean if specific mu is not specified. + Default = 0 + + return_weights : bool + if TRUE, returns the weights on observations that maximize the + likelihood. Default is FALSE + + Returns + ------- + + res: tuple + The log-likelihood, p-value and estimate for the common mean. + """ + if mu is not None: + llr = self._opt_common_mu(mu) + pval = 1 - chi2.cdf(llr, self.num_groups - 1) + if return_weights: + return llr, pval, mu, self.new_weights + else: + return llr, pval, mu + else: + res = optimize.fmin_powell(self._opt_common_mu, mu_start, + full_output=1, disp=False) + llr = res[1] + mu_common = float(res[0]) + pval = 1 - chi2.cdf(llr, self.num_groups - 1) + if return_weights: + return llr, pval, mu_common, self.new_weights + else: + return llr, pval, mu_common diff --git a/statsmodels/emplike/elregress.py b/statsmodels/emplike/elregress.py new file mode 100644 index 0000000..540f822 --- /dev/null +++ b/statsmodels/emplike/elregress.py @@ -0,0 +1,90 @@ +""" +Empirical Likelihood Linear Regression Inference + +The script contains the function that is optimized over nuisance parameters to + conduct inference on linear regression parameters. It is called by eltest +in OLSResults. + + +General References +----------------- + +Owen, A.B.(2001). Empirical Likelihood. Chapman and Hall + +""" +from __future__ import division + +import numpy as np +from statsmodels.emplike.descriptive import _OptFuncts + + + +class _ELRegOpts(_OptFuncts): + """ + + A class that holds functions to be optimized over when conducting + hypothesis tests and calculating confidence intervals. + + Parameters + ---------- + + OLSResults : Results instance + A fitted OLS result + + """ + def __init__(self): + pass + + def _opt_nuis_regress(self, nuisance_params, param_nums=None, + endog=None, exog=None, + nobs=None, nvar=None, params=None, b0_vals=None, + stochastic_exog=None): + """ + A function that is optimized over nuisance parameters to conduct a + hypothesis test for the parameters of interest + + Parameters + ---------- + nuisance_params: 1darray + Parameters to be optimized over + + Returns + ------- + llr : float + -2 x the log-likelihood of the nuisance parameters and the + hypothesized value of the parameter(s) of interest. + """ + params[param_nums] = b0_vals + nuis_param_index = np.int_(np.delete(np.arange(nvar), + param_nums)) + params[nuis_param_index] = nuisance_params + new_params = params.reshape(nvar, 1) + self.new_params = new_params + est_vect = exog * \ + (endog - np.squeeze(np.dot(exog, new_params))).reshape(int(nobs), 1) + if not stochastic_exog: + exog_means = np.mean(exog, axis=0)[1:] + exog_mom2 = (np.sum(exog * exog, axis=0))[1:]\ + / nobs + mean_est_vect = exog[:, 1:] - exog_means + mom2_est_vect = (exog * exog)[:, 1:] - exog_mom2 + regressor_est_vect = np.concatenate((mean_est_vect, mom2_est_vect), + axis=1) + est_vect = np.concatenate((est_vect, regressor_est_vect), + axis=1) + + wts = np.ones(int(nobs)) * (1. / nobs) + x0 = np.zeros(est_vect.shape[1]).reshape(-1, 1) + try: + eta_star = self._modif_newton(x0, est_vect, wts) + denom = 1. + np.dot(eta_star, est_vect.T) + self.new_weights = 1. / nobs * 1. / denom + # the following commented out code is to verify weights + # see open issue #1845 + #self.new_weights /= self.new_weights.sum() + #if not np.allclose(self.new_weights.sum(), 1., rtol=0, atol=1e-10): + # raise RuntimeError('weights do not sum to 1') + llr = np.sum(np.log(nobs * self.new_weights)) + return -2 * llr + except np.linalg.linalg.LinAlgError: + return np.inf diff --git a/statsmodels/emplike/originregress.py b/statsmodels/emplike/originregress.py new file mode 100644 index 0000000..1ee3b06 --- /dev/null +++ b/statsmodels/emplike/originregress.py @@ -0,0 +1,259 @@ +""" +This module implements empirical likelihood regression that is forced through +the origin. + +This is different than regression not forced through the origin because the +maximum empirical likelihood estimate is calculated with a vector of ones in +the exogenous matrix but restricts the intercept parameter to be 0. This +results in significantly more narrow confidence intervals and different +parameter estimates. + +For notes on regression not forced through the origin, see empirical likelihood +methods in the OLSResults class. + +General References +------------------ +Owen, A.B. (2001). Empirical Likelihood. Chapman and Hall. p. 82. + +""" +from __future__ import division + +import numpy as np +from scipy.stats import chi2 +from scipy import optimize +# When descriptive merged, this will be changed +from statsmodels.tools.tools import add_constant +from statsmodels.regression.linear_model import OLS, RegressionResults + + +class ELOriginRegress(object): + """ + Empirical Likelihood inference and estimation for linear regression + through the origin + + Parameters + ---------- + endog: nx1 array + Array of response variables + + exog: nxk array + Array of exogenous variables. Assumes no array of ones + + Attributes + ---------- + endog : nx1 array + Array of response variables + + exog : nxk array + Array of exogenous variables. Assumes no array of ones + + nobs : float + Number of observations + + nvar : float + Number of exogenous regressors + + """ + def __init__(self, endog, exog): + self.endog = endog + self.exog = exog + self.nobs = self.exog.shape[0] + try: + self.nvar = float(exog.shape[1]) + except IndexError: + self.nvar = 1. + + def fit(self): + """ + Fits the model and provides regression results. + + Returns + ------- + Results : class + Empirical likelihood regression class + + """ + exog_with = add_constant(self.exog, prepend=True) + restricted_model = OLS(self.endog, exog_with) + restricted_fit = restricted_model.fit() + restricted_el = restricted_fit.el_test( + np.array([0]), np.array([0]), ret_params=1) + params = np.squeeze(restricted_el[3]) + beta_hat_llr = restricted_el[0] + llf = np.sum(np.log(restricted_el[2])) + return OriginResults(restricted_model, params, beta_hat_llr, llf) + + def predict(self, params, exog=None): + if exog is None: + exog = self.exog + return np.dot(add_constant(exog, prepend=True), params) + + +class OriginResults(RegressionResults): + """ + A Results class for empirical likelihood regression through the origin + + Parameters + ---------- + model : class + An OLS model with an intercept + + params : 1darray + Fitted parameters + + est_llr : float + The log likelihood ratio of the model with the intercept restricted to + 0 at the maximum likelihood estimates of the parameters. + llr_restricted/llr_unrestricted + + llf_el : float + The log likelihood of the fitted model with the intercept restricted to 0. + + Attributes + ---------- + model : class + An OLS model with an intercept + + params : 1darray + Fitted parameter + + llr : float + The log likelihood ratio of the maximum empirical likelihood estimate + + llf_el : float + The log likelihood of the fitted model with the intercept restricted to 0 + + Notes + ----- + IMPORTANT. Since EL estimation does not drop the intercept parameter but + instead estimates the slope parameters conditional on the slope parameter + being 0, the first element for params will be the intercept, which is + restricted to 0. + + IMPORTANT. This class inherits from RegressionResults but inference is + conducted via empirical likelihood. Therefore, any methods that + require an estimate of the covariance matrix will not function. Instead + use el_test and conf_int_el to conduct inference. + + Examples + -------- + >>> import statsmodels.api as sm + >>> data = sm.datasets.bc.load(as_pandas=False) + >>> model = sm.emplike.ELOriginRegress(data.endog, data.exog) + >>> fitted = model.fit() + >>> fitted.params # 0 is the intercept term. + array([ 0. , 0.00351813]) + + >>> fitted.el_test(np.array([.0034]), np.array([1])) + (3.6696503297979302, 0.055411808127497755) + >>> fitted.conf_int_el(1) + (0.0033971871114706867, 0.0036373150174892847) + + # No covariance matrix so normal inference is not valid + >>> fitted.conf_int() + TypeError: unsupported operand type(s) for *: 'instancemethod' and 'float' + + """ + def __init__(self, model, params, est_llr, llf_el): + self.model = model + self.params = np.squeeze(params) + self.llr = est_llr + self.llf_el = llf_el + def el_test(self, b0_vals, param_nums, method='nm', + stochastic_exog=1, return_weights=0): + """ + Returns the llr and p-value for a hypothesized parameter value + for a regression that goes through the origin + + Parameters + ---------- + b0_vals : 1darray + The hypothesized value to be tested + + param_num : 1darray + Which parameters to test. Note this uses python + indexing but the '0' parameter refers to the intercept term, + which is assumed 0. Therefore, param_num should be > 0. + + return_weights : bool + If true, returns the weights that optimize the likelihood + ratio at b0_vals. Default is False + + method : string + Can either be 'nm' for Nelder-Mead or 'powell' for Powell. The + optimization method that optimizes over nuisance parameters. + Default is 'nm' + + stochastic_exog : bool + When TRUE, the exogenous variables are assumed to be stochastic. + When the regressors are nonstochastic, moment conditions are + placed on the exogenous variables. Confidence intervals for + stochastic regressors are at least as large as non-stochastic + regressors. Default is TRUE + + Returns + ------- + res : tuple + pvalue and likelihood ratio + """ + b0_vals = np.hstack((0, b0_vals)) + param_nums = np.hstack((0, param_nums)) + test_res = self.model.fit().el_test(b0_vals, param_nums, method=method, + stochastic_exog=stochastic_exog, + return_weights=return_weights) + llr_test = test_res[0] + llr_res = llr_test - self.llr + pval = chi2.sf(llr_res, self.model.exog.shape[1] - 1) + if return_weights: + return llr_res, pval, test_res[2] + else: + return llr_res, pval + + def conf_int_el(self, param_num, upper_bound=None, + lower_bound=None, sig=.05, method='nm', + stochastic_exog=1): + """ + Returns the confidence interval for a regression parameter when the + regression is forced through the origin + + Parameters + ---------- + param_num : int + The parameter number to be tested. Note this uses python + indexing but the '0' parameter refers to the intercept term + + upper_bound : float + The maximum value the upper confidence limit can be. The + closer this is to the confidence limit, the quicker the + computation. Default is .00001 confidence limit under normality + + lower_bound : float + The minimum value the lower confidence limit can be. + Default is .00001 confidence limit under normality + + sig : float, optional + The significance level. Default .05 + + method : str, optional + Algorithm to optimize of nuisance params. Can be 'nm' or + 'powell'. Default is 'nm'. + + Returns + ------- + ci: tuple + The confidence interval for the parameter 'param_num' + """ + r0 = chi2.ppf(1 - sig, 1) + param_num = np.array([param_num]) + if upper_bound is None: + upper_bound = (np.squeeze(self.model.fit(). + conf_int(.0001)[param_num])[1]) + if lower_bound is None: + lower_bound = (np.squeeze(self.model.fit().conf_int(.00001) + [param_num])[0]) + f = lambda b0: self.el_test(np.array([b0]), param_num, + method=method, + stochastic_exog=stochastic_exog)[0] - r0 + lowerl = optimize.brentq(f, lower_bound, self.params[param_num]) + upperl = optimize.brentq(f, self.params[param_num], upper_bound) + return (lowerl, upperl) diff --git a/statsmodels/emplike/tests/__init__.py b/statsmodels/emplike/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/emplike/tests/results/__init__.py b/statsmodels/emplike/tests/results/__init__.py new file mode 100644 index 0000000..b7e2599 --- /dev/null +++ b/statsmodels/emplike/tests/results/__init__.py @@ -0,0 +1 @@ +# Init for results diff --git a/statsmodels/emplike/tests/results/el_results.py b/statsmodels/emplike/tests/results/el_results.py new file mode 100644 index 0000000..97d51aa --- /dev/null +++ b/statsmodels/emplike/tests/results/el_results.py @@ -0,0 +1,373 @@ +""" +Results from Matlab and R +""" +import numpy as np + + +class DescStatRes(object): + """ + + The results were generated from Bruce Hansen's + MATLAb package: + + Bruce E. Hansen + Department of Economics + Social Science Building + University of Wisconsin + Madison, WI 53706-1393 + bhansen@ssc.wisc.edu + http://www.ssc.wisc.edu/~bhansen/ + + The R results are from Mai Zhou's emplik package + + """ + + def __init__(self): + self.ci_mean = (13.556709, 14.559394) + self.test_mean_14 = (.080675, .776385) + self.test_mean_weights = np.array([[0.01969213], + [0.01911859], + [0.01973982], + [0.01982913], + [0.02004183], + [0.0195765], + [0.01970423], + [0.02015074], + [0.01898431], + [0.02067787], + [0.01878104], + [0.01920531], + [0.01981207], + [0.02031582], + [0.01857329], + [0.01907883], + [0.01943674], + [0.0210042], + [0.0197373], + [0.01997998], + [0.0199233], + [0.01986713], + [0.02017751], + [0.01962176], + [0.0214596], + [0.02118228], + [0.02013767], + [0.01918665], + [0.01908886], + [0.01943081], + [0.01916251], + [0.01868129], + [0.01918334], + [0.01969084], + [0.01984322], + [0.0198977], + [0.02098504], + [0.02132222], + [0.02100581], + [0.01970351], + [0.01942184], + [0.01979781], + [0.02114276], + [0.02096136], + [0.01999804], + [0.02044712], + [0.02174404], + [0.02189933], + [0.02077078], + [0.02082612]]).squeeze() + self.test_var_3 = (.199385, .655218) + self.ci_var = (2.290077, 4.423634) + self.test_var_weights = np.array([[0.020965], + [0.019686], + [0.021011], + [0.021073], + [0.021089], + [0.020813], + [0.020977], + [0.021028], + [0.019213], + [0.02017], + [0.018397], + [0.01996], + [0.021064], + [0.020854], + [0.017463], + [0.019552], + [0.020555], + [0.019283], + [0.021009], + [0.021103], + [0.021102], + [0.021089], + [0.021007], + [0.020879], + [0.017796], + [0.018726], + [0.021038], + [0.019903], + [0.019587], + [0.020543], + [0.019828], + [0.017959], + [0.019893], + [0.020963], + [0.02108], + [0.021098], + [0.01934], + [0.018264], + [0.019278], + [0.020977], + [0.020523], + [0.021055], + [0.018853], + [0.019411], + [0.0211], + [0.02065], + [0.016803], + [0.016259], + [0.019939], + [0.019793]]).squeeze() + self.mv_test_mean = (.7002663, .7045943) + self.mv_test_mean_wts = np.array([[0.01877015], + [0.01895746], + [0.01817092], + [0.01904308], + [0.01707106], + [0.01602806], + [0.0194296], + [0.01692204], + [0.01978322], + [0.01881313], + [0.02011785], + [0.0226274], + [0.01953733], + [0.01874346], + [0.01694224], + [0.01611816], + [0.02297437], + [0.01943187], + [0.01899873], + [0.02113375], + [0.02295293], + [0.02043509], + [0.02276583], + [0.02208274], + [0.02466621], + [0.02287983], + [0.0173136], + [0.01905693], + [0.01909335], + [0.01982534], + [0.01924093], + [0.0179352], + [0.01871907], + [0.01916633], + [0.02022359], + [0.02228696], + [0.02080555], + [0.01725214], + [0.02166185], + [0.01798537], + [0.02103582], + [0.02052757], + [0.03096074], + [0.01966538], + [0.02201629], + [0.02094854], + [0.02127771], + [0.01961964], + [0.02023756], + [0.01774807]]).squeeze() + self.test_skew = (2.498418, .113961) + self.test_skew_wts = np.array([[0.016698], + [0.01564], + [0.01701], + [0.017675], + [0.019673], + [0.016071], + [0.016774], + [0.020902], + [0.016397], + [0.027359], + [0.019136], + [0.015419], + [0.01754], + [0.022965], + [0.027203], + [0.015805], + [0.015565], + [0.028518], + [0.016992], + [0.019034], + [0.018489], + [0.01799], + [0.021222], + [0.016294], + [0.022725], + [0.027133], + [0.020748], + [0.015452], + [0.015759], + [0.01555], + [0.015506], + [0.021863], + [0.015459], + [0.01669], + [0.017789], + [0.018257], + [0.028578], + [0.025151], + [0.028512], + [0.01677], + [0.015529], + [0.01743], + [0.027563], + [0.028629], + [0.019216], + [0.024677], + [0.017376], + [0.014739], + [0.028112], + [0.02842]]).squeeze() + self.test_kurt_0 = (1.904269, .167601) + self.test_corr = (.012025, .912680,) + self.test_corr_weights = np.array([[0.020037], + [0.020108], + [0.020024], + [0.02001], + [0.019766], + [0.019971], + [0.020013], + [0.019663], + [0.019944], + [0.01982], + [0.01983], + [0.019436], + [0.020005], + [0.019897], + [0.020768], + [0.020468], + [0.019521], + [0.019891], + [0.020024], + [0.01997], + [0.019824], + [0.019976], + [0.019979], + [0.019753], + [0.020814], + [0.020474], + [0.019751], + [0.020085], + [0.020087], + [0.019977], + [0.020057], + [0.020435], + [0.020137], + [0.020025], + [0.019982], + [0.019866], + [0.020151], + [0.019046], + [0.020272], + [0.020034], + [0.019813], + [0.01996], + [0.020657], + [0.019947], + [0.019931], + [0.02008], + [0.02035], + [0.019823], + [0.02005], + [0.019497]]).squeeze() + self.test_joint_skew_kurt = (8.753952, .012563) + + +class RegressionResults(object): + """ + Results for EL Regression + """ + def __init__(self): + self.source = 'Matlab' + self.test_beta0 = (1.758104, .184961, np.array([ + 0.04326392, 0.04736749, 0.03573865, 0.04770535, 0.04721684, + 0.04718301, 0.07088816, 0.05631242, 0.04865098, 0.06572099, + 0.04016013, 0.04438627, 0.04042288, 0.03938043, 0.04006474, + 0.04845233, 0.01991985, 0.03623254, 0.03617999, 0.05607242, + 0.0886806])) + + self.test_beta1 = (1.932529, .164482, np.array([ + 0.033328, 0.051412, 0.03395, 0.071695, 0.046433, 0.041303, + 0.033329, 0.036413, 0.03246, 0.037776, 0.043872, 0.037507, + 0.04762, 0.04881, 0.05874, 0.049553, 0.048898, 0.04512, + 0.041142, 0.048121, 0.11252])) + + self.test_beta2 = (.494593, .481866, np.array([ + 0.046287, 0.048632, 0.048772, 0.034769, 0.048416, 0.052447, + 0.053336, 0.050112, 0.056053, 0.049318, 0.053609, 0.055634, + 0.042188, 0.046519, 0.048415, 0.047897, 0.048673, 0.047695, + 0.047503, 0.047447, 0.026279])) + + self.test_beta3 = (3.537250, .060005, np.array([ + 0.036327, 0.070483, 0.048965, 0.087399, 0.041685, 0.036221, + 0.016752, 0.019585, 0.027467, 0.02957, 0.069204, 0.060167, + 0.060189, 0.030007, 0.067371, 0.046862, 0.069814, 0.053041, + 0.053362, 0.041585, 0.033943])) + + self.test_ci_beta0 = (-52.77128837058528, -24.11607348661947) + + self.test_ci_beta1 = (0.41969831751229664, 0.9857167306604057) + + self.test_ci_beta2 = (0.6012045929381431, 2.1847079367275692) + + self.test_ci_beta3 = (-0.3804313225443794, 0.006934528877337928) + + +class ANOVAResults(object): + """ + Results for ANOVA + """ + def __init__(self): + self.source = 'Matlab' + self.compute_ANOVA = (.426163, .51387, np.array([9.582371]), np.array([ + 0.018494, 0.01943, 0.016624, 0.0172, 0.016985, 0.01922, + 0.016532, 0.015985, 0.016769, 0.017631, 0.017677, 0.017984, + 0.017049, 0.016721, 0.016382, 0.016566, 0.015642, 0.015894, + 0.016282, 0.015704, 0.016272, 0.015678, 0.015651, 0.015648, + 0.015618, 0.015726, 0.015981, 0.01635, 0.01586, 0.016443, + 0.016126, 0.01683, 0.01348, 0.017391, 0.011225, 0.017282, + 0.015568, 0.017543, 0.017009, 0.016325, 0.012841, 0.017648, + 0.01558, 0.015994, 0.017258, 0.017664, 0.017792, 0.017772, + 0.017527, 0.017797, 0.017856, 0.017849, 0.017749, 0.017827, + 0.017381, 0.017902, 0.016557, 0.015522, 0.017455, 0.017248])) + + +class AFTRes(object): + """ + Results for the AFT model from package emplik in R written by Mai Zhou + """ + def __init__(self): + self.test_params = np.array([3.77710799, -0.03281745]) + self.test_beta0 = (.132511, 0.7158323) + self.test_beta1 = (.297951, .5851693) + self.test_joint = (11.8068, 0.002730147) + + +class OriginResults(object): + """ + These results are from Bruce Hansen's Matlab package. + To replicate the results, the exogenous variables were scaled + down by 10**-2 and the results were then rescaled. + + These tests must also test likelihood functions because the + llr when conducting hypothesis tests is the MLE while + restricting the intercept to 0. Matlab's generic package always + uses the unrestricted MLE. + """ + def __init__(self): + self.test_params = np.array([0, .00351861]) + self.test_llf = -1719.793173 # llf when testing param = .0034 + self.test_llf_hat = -1717.95833 # llf when origin=0 + self.test_llf_hypoth = -2*(self.test_llf-self.test_llf_hat) + self.test_llf_conf = -1719.879077 # The likelihood func at conf_vals diff --git a/statsmodels/emplike/tests/test_aft.py b/statsmodels/emplike/tests/test_aft.py new file mode 100644 index 0000000..e0a04a4 --- /dev/null +++ b/statsmodels/emplike/tests/test_aft.py @@ -0,0 +1,50 @@ +from __future__ import division + +import numpy as np +from numpy.testing import assert_almost_equal +import pytest + +from statsmodels.datasets import heart +from statsmodels.tools import add_constant +from statsmodels.emplike.aft_el import emplikeAFT +from .results.el_results import AFTRes + + +class GenRes(object): + @classmethod + def setup_class(cls): + data = heart.load(as_pandas=False) + endog = np.log10(data.endog) + exog = add_constant(data.exog) + cls.mod1 = emplikeAFT(endog, exog, data.censors) + cls.res1 = cls.mod1.fit() + cls.res2 = AFTRes() + + +class Test_AFTModel(GenRes): + + def test_params(self): + assert_almost_equal(self.res1.params(), self.res2.test_params, + decimal=4) + + def test_beta0(self): + assert_almost_equal(self.res1.test_beta([4], [0]), + self.res2.test_beta0, decimal=4) + + def test_beta1(self): + assert_almost_equal(self.res1.test_beta([-.04], [1]), + self.res2.test_beta1, decimal=4) + + def test_beta_vect(self): + assert_almost_equal(self.res1.test_beta([3.5, -.035], [0, 1]), + self.res2.test_joint, decimal=4) + + @pytest.mark.slow + def test_betaci(self): + ci = self.res1.ci_beta(1, -.06, 0) + ll = ci[0] + ul = ci[1] + ll_pval = self.res1.test_beta([ll], [1])[1] + ul_pval = self.res1.test_beta([ul], [1])[1] + assert_almost_equal(ul_pval, .050000, decimal=4) + assert_almost_equal(ll_pval, .05000, decimal=4) diff --git a/statsmodels/emplike/tests/test_anova.py b/statsmodels/emplike/tests/test_anova.py new file mode 100644 index 0000000..89cf8d9 --- /dev/null +++ b/statsmodels/emplike/tests/test_anova.py @@ -0,0 +1,26 @@ +from __future__ import division + +from numpy.testing import assert_almost_equal +from statsmodels.datasets import star98 +from statsmodels.emplike.elanova import ANOVA +from .results.el_results import ANOVAResults + + +class TestANOVA(object): + """ + Tests ANOVA difference in means + """ + + @classmethod + def setup_class(cls): + cls.data = star98.load(as_pandas=False).exog[:30, 1:3] + cls.res1 = ANOVA([cls.data[:, 0], cls.data[:, 1]]) + cls.res2 = ANOVAResults() + + def test_anova(self): + assert_almost_equal(self.res1.compute_ANOVA()[:2], + self.res2.compute_ANOVA[:2], 4) + assert_almost_equal(self.res1.compute_ANOVA()[2], + self.res2.compute_ANOVA[2], 4) + assert_almost_equal(self.res1.compute_ANOVA(return_weights=1)[3], + self.res2.compute_ANOVA[3], 4) diff --git a/statsmodels/emplike/tests/test_descriptive.py b/statsmodels/emplike/tests/test_descriptive.py new file mode 100644 index 0000000..63404cf --- /dev/null +++ b/statsmodels/emplike/tests/test_descriptive.py @@ -0,0 +1,117 @@ +from __future__ import division + +import numpy as np +from numpy.testing import assert_almost_equal +from statsmodels.datasets import star98 +from statsmodels.emplike.descriptive import DescStat +from .results.el_results import DescStatRes + + +class GenRes(object): + """ + Reads in the data and creates class instance to be tested + + """ + @classmethod + def setup_class(cls): + data = star98.load(as_pandas=False) + desc_stat_data = data.exog[:50, 5] + mv_desc_stat_data = data.exog[:50, 5:7] # mv = multivariate + cls.res1 = DescStat(desc_stat_data) + cls.res2 = DescStatRes() + cls.mvres1 = DescStat(mv_desc_stat_data) + + +class TestDescriptiveStatistics(GenRes): + @classmethod + def setup_class(cls): + super(TestDescriptiveStatistics, cls).setup_class() + + def test_test_mean(self): + assert_almost_equal(self.res1.test_mean(14), + self.res2.test_mean_14, 4) + + def test_test_mean_weights(self): + assert_almost_equal(self.res1.test_mean(14, return_weights=1)[2], + self.res2.test_mean_weights, 4) + + def test_ci_mean(self): + assert_almost_equal(self.res1.ci_mean(), self.res2.ci_mean, 4) + + def test_test_var(self): + assert_almost_equal(self.res1.test_var(3), + self.res2.test_var_3, 4) + + def test_test_var_weights(self): + assert_almost_equal(self.res1.test_var(3, return_weights=1)[2], + self.res2.test_var_weights, 4) + + def test_ci_var(self): + assert_almost_equal(self.res1.ci_var(), self.res2.ci_var, 4) + + def test_mv_test_mean(self): + assert_almost_equal(self.mvres1.mv_test_mean(np.array([14, 56])), + self.res2.mv_test_mean, 4) + + def test_mv_test_mean_weights(self): + assert_almost_equal(self.mvres1.mv_test_mean(np.array([14, 56]), + return_weights=1)[2], + self.res2.mv_test_mean_wts, 4) + + def test_test_skew(self): + assert_almost_equal(self.res1.test_skew(0), + self.res2.test_skew, 4) + + def test_ci_skew(self): + # This will be tested in a round about way since MATLAB fails when + # computing CI with multiple nuisance parameters. The process is: + # + # (1) Get CI for skewness from ci.skew() + # (2) In MATLAB test the hypotheis that skew=results of test_skew. + # (3) If p-value approx .05, test confirmed + skew_ci = self.res1.ci_skew() + lower_lim = skew_ci[0] + upper_lim = skew_ci[1] + ul_pval = self.res1.test_skew(lower_lim)[1] + ll_pval = self.res1.test_skew(upper_lim)[1] + assert_almost_equal(ul_pval, .050000, 4) + assert_almost_equal(ll_pval, .050000, 4) + + def test_ci_skew_weights(self): + assert_almost_equal(self.res1.test_skew(0, return_weights=1)[2], + self.res2.test_skew_wts, 4) + + def test_test_kurt(self): + assert_almost_equal(self.res1.test_kurt(0), + self.res2.test_kurt_0, 4) + + def test_ci_kurt(self): + # Same strategy for skewness CI + kurt_ci = self.res1.ci_kurt(upper_bound=.5, lower_bound=-1.5) + lower_lim = kurt_ci[0] + upper_lim = kurt_ci[1] + ul_pval = self.res1.test_kurt(upper_lim)[1] + ll_pval = self.res1.test_kurt(lower_lim)[1] + assert_almost_equal(ul_pval, .050000, 4) + assert_almost_equal(ll_pval, .050000, 4) + + def test_joint_skew_kurt(self): + assert_almost_equal(self.res1.test_joint_skew_kurt(0, 0), + self.res2.test_joint_skew_kurt, 4) + + def test_test_corr(self): + assert_almost_equal(self.mvres1.test_corr(.5), + self.res2.test_corr, 4) + + def test_ci_corr(self): + corr_ci = self.mvres1.ci_corr() + lower_lim = corr_ci[0] + upper_lim = corr_ci[1] + ul_pval = self.mvres1.test_corr(upper_lim)[1] + ll_pval = self.mvres1.test_corr(lower_lim)[1] + assert_almost_equal(ul_pval, .050000, 4) + assert_almost_equal(ll_pval, .050000, 4) + + def test_test_corr_weights(self): + assert_almost_equal(self.mvres1.test_corr(.5, return_weights=1)[2], + self.res2.test_corr_weights, 4) diff --git a/statsmodels/emplike/tests/test_origin.py b/statsmodels/emplike/tests/test_origin.py new file mode 100644 index 0000000..eaccf51 --- /dev/null +++ b/statsmodels/emplike/tests/test_origin.py @@ -0,0 +1,45 @@ +from __future__ import division + +from numpy.testing import assert_almost_equal +from statsmodels.emplike.originregress import ELOriginRegress +from statsmodels.datasets import cancer +from .results.el_results import OriginResults +import numpy as np + + +class GenRes(object): + """ + Loads data and creates class instance ot be tested. + + """ + @classmethod + def setup_class(cls): + data = cancer.load(as_pandas=False) + cls.res1 = ELOriginRegress(data.endog, data.exog).fit() + cls.res2 = OriginResults() + + +class TestOrigin(GenRes): + """ + See OriginResults for details on how tests were computed + """ + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.test_params, 4) + + def test_llf(self): + assert_almost_equal(self.res1.llf_el, self.res2.test_llf_hat, 4) + + def test_hypothesis_beta1(self): + assert_almost_equal(self.res1.el_test([.0034], [1])[0], + self.res2.test_llf_hypoth, 4) + + def test_ci_beta(self): + ci = self.res1.conf_int_el(1) + ll = ci[0] + ul = ci[1] + llf_low = np.sum(np.log(self.res1.el_test([ll], [1], + return_weights=1)[2])) + llf_high = np.sum(np.log(self.res1.el_test([ul], [1], + return_weights=1)[2])) + assert_almost_equal(llf_low, self.res2.test_llf_conf, 4) + assert_almost_equal(llf_high, self.res2.test_llf_conf, 4) diff --git a/statsmodels/emplike/tests/test_regression.py b/statsmodels/emplike/tests/test_regression.py new file mode 100644 index 0000000..4d623fe --- /dev/null +++ b/statsmodels/emplike/tests/test_regression.py @@ -0,0 +1,160 @@ +from __future__ import division + +from numpy.testing import assert_almost_equal + +import pytest + +from statsmodels.regression.linear_model import OLS +from statsmodels.tools import add_constant +from .results.el_results import RegressionResults +from statsmodels.datasets import stackloss + + +class GenRes(object): + """ + Loads data and creates class instance ot be tested + + """ + @classmethod + def setup_class(cls): + data = stackloss.load(as_pandas=False) + data.exog = add_constant(data.exog) + cls.res1 = OLS(data.endog, data.exog).fit() + cls.res2 = RegressionResults() + + +@pytest.mark.slow +class TestRegressionPowell(GenRes): + """ + All confidence intervals are tested by conducting a hypothesis + tests at the confidence interval values. + + See Also + -------- + + test_descriptive.py, test_ci_skew + + """ + + @pytest.mark.slow + def test_hypothesis_beta0(self): + beta0res = self.res1.el_test([-30], [0], return_weights=1, + method='powell') + assert_almost_equal(beta0res[:2], self.res2.test_beta0[:2], 4) + assert_almost_equal(beta0res[2], self.res2.test_beta0[2], 4) + + @pytest.mark.slow + def test_hypothesis_beta1(self): + beta1res = self.res1.el_test([.5], [1], return_weights=1, + method='powell') + assert_almost_equal(beta1res[:2], self.res2.test_beta1[:2], 4) + assert_almost_equal(beta1res[2], self.res2.test_beta1[2], 4) + + def test_hypothesis_beta2(self): + beta2res = self.res1.el_test([1], [2], return_weights=1, + method='powell') + assert_almost_equal(beta2res[:2], self.res2.test_beta2[:2], 4) + assert_almost_equal(beta2res[2], self.res2.test_beta2[2], 4) + + def test_hypothesis_beta3(self): + beta3res = self.res1.el_test([0], [3], return_weights=1, + method='powell') + assert_almost_equal(beta3res[:2], self.res2.test_beta3[:2], 4) + assert_almost_equal(beta3res[2], self.res2.test_beta3[2], 4) + + # Confidence interval results obtained through hypothesis testing in Matlab + @pytest.mark.slow + def test_ci_beta0(self): + beta0ci = self.res1.conf_int_el(0, lower_bound=-52.9, + upper_bound=-24.1, method='powell') + assert_almost_equal(beta0ci, self.res2.test_ci_beta0, 3) + # Slightly lower precision. CI was obtained from nm method. + + @pytest.mark.slow + def test_ci_beta1(self): + beta1ci = self.res1.conf_int_el(1, lower_bound=.418, upper_bound=.986, + method='powell') + assert_almost_equal(beta1ci, self.res2.test_ci_beta1, 4) + + @pytest.mark.slow + def test_ci_beta2(self): + beta2ci = self.res1.conf_int_el(2, lower_bound=.59, + upper_bound=2.2, method='powell') + assert_almost_equal(beta2ci, self.res2.test_ci_beta2, 5) + + @pytest.mark.slow + def test_ci_beta3(self): + beta3ci = self.res1.conf_int_el(3, lower_bound=-.39, upper_bound=.01, + method='powell') + assert_almost_equal(beta3ci, self.res2.test_ci_beta3, 6) + + +class TestRegressionNM(GenRes): + """ + All confidence intervals are tested by conducting a hypothesis + tests at the confidence interval values. + + See Also + -------- + + test_descriptive.py, test_ci_skew + + """ + + def test_hypothesis_beta0(self): + beta0res = self.res1.el_test([-30], [0], return_weights=1, + method='nm') + assert_almost_equal(beta0res[:2], self.res2.test_beta0[:2], 4) + assert_almost_equal(beta0res[2], self.res2.test_beta0[2], 4) + + def test_hypothesis_beta1(self): + beta1res = self.res1.el_test([.5], [1], return_weights=1, + method='nm') + assert_almost_equal(beta1res[:2], self.res2.test_beta1[:2], 4) + assert_almost_equal(beta1res[2], self.res2.test_beta1[2], 4) + + @pytest.mark.slow + def test_hypothesis_beta2(self): + beta2res = self.res1.el_test([1], [2], return_weights=1, + method='nm') + assert_almost_equal(beta2res[:2], self.res2.test_beta2[:2], 4) + assert_almost_equal(beta2res[2], self.res2.test_beta2[2], 4) + + @pytest.mark.slow + def test_hypothesis_beta3(self): + beta3res = self.res1.el_test([0], [3], return_weights=1, + method='nm') + assert_almost_equal(beta3res[:2], self.res2.test_beta3[:2], 4) + assert_almost_equal(beta3res[2], self.res2.test_beta3[2], 4) + + # Confidence interval results obtained through hyp testing in Matlab + + @pytest.mark.slow + def test_ci_beta0(self): + # All confidence intervals are tested by conducting a hypothesis + # tests at the confidence interval values since el_test + # is already tested against Matlab + # + # See Also + # -------- + # + # test_descriptive.py, test_ci_skew + + beta0ci = self.res1.conf_int_el(0, method='nm') + assert_almost_equal(beta0ci, self.res2.test_ci_beta0, 6) + + @pytest.mark.slow + def test_ci_beta1(self): + beta1ci = self.res1.conf_int_el(1, method='nm') + assert_almost_equal(beta1ci, self.res2.test_ci_beta1, 6) + + @pytest.mark.slow + def test_ci_beta2(self): + beta2ci = self.res1.conf_int_el(2, lower_bound=.59, upper_bound=2.2, + method='nm') + assert_almost_equal(beta2ci, self.res2.test_ci_beta2, 6) + + @pytest.mark.slow + def test_ci_beta3(self): + beta3ci = self.res1.conf_int_el(3, method='nm') + assert_almost_equal(beta3ci, self.res2.test_ci_beta3, 6) diff --git a/statsmodels/examples/es_misc_poisson2.py b/statsmodels/examples/es_misc_poisson2.py new file mode 100644 index 0000000..4471ba9 --- /dev/null +++ b/statsmodels/examples/es_misc_poisson2.py @@ -0,0 +1,63 @@ + +from __future__ import print_function +import numpy as np + +import statsmodels.api as sm +from statsmodels.miscmodels.count import (PoissonGMLE, PoissonOffsetGMLE, + PoissonZiGMLE) +from statsmodels.discrete.discrete_model import Poisson + + +DEC = 3 + +class Dummy(object): + pass + +self = Dummy() + +# generate artificial data +np.random.seed(98765678) +nobs = 200 +rvs = np.random.randn(nobs,6) +data_exog = rvs +data_exog = sm.add_constant(data_exog, prepend=False) +xbeta = 1 + 0.1*rvs.sum(1) +data_endog = np.random.poisson(np.exp(xbeta)) + +#estimate discretemod.Poisson as benchmark +res_discrete = Poisson(data_endog, data_exog).fit() + +mod_glm = sm.GLM(data_endog, data_exog, family=sm.families.Poisson()) +res_glm = mod_glm.fit() + +#estimate generic MLE +self.mod = PoissonGMLE(data_endog, data_exog) +res = self.mod.fit() +offset = res.params[0] * data_exog[:,0] #1d ??? + +mod1 = PoissonOffsetGMLE(data_endog, data_exog[:,1:], offset=offset) +start_params = np.ones(6)/2. +start_params = res.params[1:] +res1 = mod1.fit(start_params=start_params, method='nm', maxiter=1000, maxfun=1000) + +print('mod2') +mod2 = PoissonZiGMLE(data_endog, data_exog[:,1:], offset=offset) +start_params = np.r_[np.ones(6)/2.,10] +start_params = np.r_[res.params[1:], 20.] #-100] +res2 = mod2.fit(start_params=start_params, method='bfgs', maxiter=1000, maxfun=2000) + +print('mod3') +mod3 = PoissonZiGMLE(data_endog, data_exog, offset=None) +start_params = np.r_[np.ones(7)/2.,10] +start_params = np.r_[res.params, 20.] +res3 = mod3.fit(start_params=start_params, method='nm', maxiter=1000, maxfun=2000) + +print('mod4') +data_endog2 = np.r_[data_endog, np.zeros(nobs)] +data_exog2 = np.r_[data_exog, data_exog] + +mod4 = PoissonZiGMLE(data_endog2, data_exog2, offset=None) +start_params = np.r_[np.ones(7)/2.,10] +start_params = np.r_[res.params, 0.] +res4 = mod4.fit(start_params=start_params, method='nm', maxiter=1000, maxfun=1000) +print(res4.summary()) diff --git a/statsmodels/examples/ex_arch_canada.py b/statsmodels/examples/ex_arch_canada.py new file mode 100644 index 0000000..b52d9b8 --- /dev/null +++ b/statsmodels/examples/ex_arch_canada.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +""" + +Created on Sat Dec 24 07:31:47 2011 + +Author: Josef Perktold +""" + +from __future__ import print_function +import numpy as np +import statsmodels.sandbox.stats.diagnostic as dia + +canada_raw = '''\ + 405.36646642737 929.610513893698 7.52999999999884 386.136109062605 + 404.639833965913 929.803984550587 7.69999999999709 388.135759111711 + 403.814883043744 930.318387567177 7.47000000000116 390.540112911955 + 404.215773188006 931.427687420772 7.2699999999968 393.963817246136 + 405.046713585284 932.662005594273 7.37000000000262 396.764690917547 + 404.416738673847 933.550939726636 7.12999999999738 400.021701616327 + 402.81912737043 933.531526191785 7.40000000000146 400.751498688807 + 401.977334663103 933.076879439814 8.33000000000175 405.733473658807 + 402.089724946428 932.12375320915 8.83000000000175 409.05038628366 + 401.306688373207 930.635939140315 10.429999999993 411.398377747425 + 401.630171263522 929.097059933419 12.1999999999971 413.019421511595 + 401.56375463175 928.563335601161 12.7700000000041 415.166962884156 + 402.815698906973 929.069380060201 12.429999999993 414.662070678749 + 403.142107624713 930.265516098198 12.2299999999959 415.731936138368 + 403.078619166324 931.677031559203 11.6999999999971 416.231468866173 + 403.718785733801 932.138967575148 11.1999999999971 418.14392690728 + 404.866799027579 932.276686471608 11.2700000000041 419.735231229658 + 405.636186735378 932.832783118083 11.4700000000012 420.484186198549 + 405.136285378794 933.733419116009 11.3000000000029 420.930881402259 + 406.024639922986 934.177206176622 11.1699999999983 422.112404525291 + 406.412269729241 934.592839827856 11 423.627805811063 + 406.300932644569 935.606709830033 10.6300000000047 423.988686751336 + 406.335351723382 936.511085968336 10.2700000000041 424.190212657915 + 406.773695329549 937.420090112655 10.1999999999971 426.127043353785 + 405.152547649247 938.415921627889 9.66999999999825 426.857794216679 + 404.929830809648 938.999170021426 9.60000000000582 426.745717993024 + 404.576546350926 939.235354789206 9.60000000000582 426.885793656802 + 404.199492630983 939.679504234357 9.5 428.840253264144 + 405.94985619596 940.249674139969 9.5 430.122322107039 + 405.82209202516 941.435818685214 9.02999999999884 430.230679154048 + 406.446282537108 942.29809597644 8.69999999999709 430.392994893689 + 407.051247525876 943.532223256403 8.13000000000466 432.028420083791 + 407.946023990985 944.34896981513 7.87000000000262 433.388625934544 + 408.179584663105 944.821488789039 7.66999999999825 433.964091817787 + 408.599812740441 945.067136927327 7.80000000000291 434.484384354647 + 409.090560656008 945.80672616174 7.7300000000032 436.156879277168 + 408.704215141145 946.869661504613 7.56999999999971 438.265143944308 + 408.980275213206 946.876612143542 7.56999999999971 438.763587343863 + 408.328690037174 947.249692256472 7.33000000000175 439.949811558539 + 407.885696563307 947.651276093962 7.56999999999971 441.835856392131 + 407.260532233258 948.183970741596 7.62999999999738 443.176872656863 + 406.775150765526 948.349239264364 7.59999999999854 444.359199033223 + 406.179413590339 948.032170661406 8.16999999999825 444.523614807208 + 405.439793348166 947.106483115935 9.19999999999709 446.969404642587 + 403.279970790458 946.079554231134 10.1699999999983 450.158586973168 + 403.364855995771 946.183811678692 10.3300000000017 451.546427290378 + 403.380680430043 946.22579516585 10.3999999999942 452.298351499968 + 404.003182812546 945.997783938785 10.3699999999953 453.120066578834 + 404.47739841708 945.518279080208 10.6000000000058 453.999145996277 + 404.786782762866 945.351397570438 11 454.955176222477 + 405.271003921828 945.291785517556 11.3999999999942 455.482381155116 + 405.382993140508 945.400785900878 11.7299999999959 456.100929020225 + 405.156416006566 945.905809840959 11.070000000007 457.202696739531 + 406.470043094757 945.90347041344 11.6699999999983 457.388589594786 + 406.229308967752 946.319028746014 11.4700000000012 457.779898919191 + 406.726483850871 946.579621275764 11.3000000000029 457.553538085846 + 408.578504884277 946.780032223884 10.9700000000012 458.80240271533 + 409.67671010704 947.628284240641 10.6300000000047 459.05640335985 + 410.385763295936 948.622057553611 10.1000000000058 459.15782324686 + 410.539523677181 949.399183241404 9.66999999999825 459.703720275789 + 410.445258303139 949.948137966398 9.52999999999884 459.703720275789 + 410.625605270832 949.794494142446 9.47000000000116 460.025814162716 + 410.867239714014 949.953380175189 9.5 461.025722503696 + 411.235917829196 950.250239444989 9.27000000000407 461.30391443673 + 410.663655285725 950.538030883093 9.5 461.4030814421 + 410.808508412624 950.787128498243 9.42999999999302 462.927726133156 + 412.115961520089 950.869528648471 9.69999999999709 464.688777934061 + 412.999407129539 950.928132469716 9.89999999999418 465.071700094375 + 412.955056755303 951.845722481401 9.42999999999302 464.285125295526 + 412.82413309368 952.6004761952 9.30000000000291 464.034426099541 + 413.048874899 953.597552755418 8.86999999999534 463.453479461824 + 413.611017876145 954.143388344158 8.77000000000407 465.071700094375 + 413.604781916778 954.542593332134 8.60000000000582 466.088867474481 + 412.968388225217 955.263136106029 8.33000000000175 466.617120754625 + 412.265886525002 956.056052852469 8.16999999999825 465.747796561181 + 412.910594097915 956.79658640007 8.02999999999884 465.899527268299 + 413.829416419695 957.386480451857 7.90000000000146 466.409925351738 + 414.22415210314 958.06341570725 7.87000000000262 466.955244491812 + 415.1677707968 958.716592187518 7.52999999999884 467.628081344681 + 415.701580225863 959.488142422254 6.93000000000029 467.70256230891 + 416.867407108435 960.362493080892 6.80000000000291 469.134788222928 + 417.610399060359 960.783379042937 6.69999999999709 469.336419672322 + 418.002980476361 961.029029939624 6.93000000000029 470.011666329664 + 417.266680178544 961.765709811429 6.87000000000262 469.647234439539''' + +canada = np.array(canada_raw.split(), float).reshape(-1,4) +k=2 +resarch2 = dia.acorr_lm((canada[:,k]-canada[:,k].mean())**2, maxlag=2, autolag=None, store=1) +print(resarch2) +resarch5 = dia.acorr_lm(canada[:,k]**2, maxlag=12, autolag=None, store=1) + +ss = '''\ + ARCH LM-test; Null hypothesis: no ARCH effects + +Chi-squared = %(chi)-8.4f df = %(df)-4d p-value = %(pval)8.4g +''' +resarch = resarch5 +print() +print(ss % dict(chi=resarch[2], df=resarch[-1].resols.df_model, pval=resarch[3])) + + +#R:FinTS: ArchTest(as.vector(Canada[,3]), lag=5) +''' + ARCH LM-test; Null hypothesis: no ARCH effects + +data: as.vector(Canada[, 3]) +Chi-squared = 78.878, df = 5, p-value = 1.443e-15 +''' + +#from ss above +''' + ARCH LM-test; Null hypothesis: no ARCH effects + +Chi-squared = 78.849 df = 5 p-value = 1.461e-15 +''' + +#k=2 +#R +''' + ARCH LM-test; Null hypothesis: no ARCH effects + +data: as.vector(Canada[, 4]) +Chi-squared = 74.6028, df = 5, p-value = 1.121e-14 +''' +#mine +''' + ARCH LM-test; Null hypothesis: no ARCH effects + +Chi-squared = 74.6028 df = 5 p-value = 1.126e-14 +''' + +''' +> ArchTest(as.vector(Canada[,4]), lag=12) + + ARCH LM-test; Null hypothesis: no ARCH effects + +data: as.vector(Canada[, 4]) +Chi-squared = 69.6359, df = 12, p-value = 3.747e-10 +''' + +#mine: +''' + ARCH LM-test; Null hypothesis: no ARCH effects + +Chi-squared = 69.6359 df = 12 p-value = 3.747e-10 +''' diff --git a/statsmodels/examples/ex_emplike_1.py b/statsmodels/examples/ex_emplike_1.py new file mode 100644 index 0000000..8611ef4 --- /dev/null +++ b/statsmodels/examples/ex_emplike_1.py @@ -0,0 +1,99 @@ +""" +This is a basic tutorial on how to conduct basic empirical likelihood +inference for descriptive statistics. If matplotlib is installed +it also generates plots. + +""" + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm +print('Welcome to El') +np.random.seed(634) # No significance of the seed. +# Let's first generate some univariate data. +univariate = np.random.standard_normal(30) + +# Now let's play with it +# Initiate an empirical likelihood descriptive statistics instance +eldescriptive = sm.emplike.DescStat(univariate) + +# Empirical likelihood is (typically) a method of inference, +# not estimation. Therefore, there is no attribute eldescriptive.mean +# However, we can check the mean: +eldescriptive_mean = eldescriptive.endog.mean() #.42 + +#Let's conduct a hypothesis test to see if the mean is 0 +print('Hypothesis test results for the mean:') +print(eldescriptive.test_mean(0)) + + +# The first value is is -2 *log-likelihood ratio, which is distributed +#chi2. The second value is the p-value. + +# Let's see what the variance is: +eldescriptive_var = eldescriptive.endog.var() # 1.01 + +#Let's test if the variance is 1: +print('Hypothesis test results for the variance:') +print(eldescriptive.test_var(1)) + +# Let's test if Skewness and Kurtosis are 0 +print('Hypothesis test results for Skewness:') +print(eldescriptive.test_skew(0)) +print('Hypothesis test results for the Kurtosis:') +print(eldescriptive.test_kurt(0)) +# Note that the skewness and Kurtosis take longer. This is because +# we have to optimize over the nuisance parameters (mean, variance). + +# We can also test for the joint skewness and kurtoses +print(' Joint Skewness-Kurtosis test') +eldescriptive.test_joint_skew_kurt(0, 0) + + +# Let's try and get some confidence intervals +print('Confidence interval for the mean') +print(eldescriptive.ci_mean()) +print('Confidence interval for the variance') +print(eldescriptive.ci_var()) +print('Confidence interval for skewness') +print(eldescriptive.ci_skew()) +print('Confidence interval for kurtosis') +print(eldescriptive.ci_kurt()) + + +# if matplotlib is installed, we can get a contour plot for the mean +# and variance. +mean_variance_contour = eldescriptive.plot_contour(-.5, 1.2, .2, 2.5, .05, .05) +# This returns a figure instance. Just type mean_var_contour.show() +# to see the plot. + +# Once you close the plot, we can start some multivariate analysis. + +x1 = np.random.exponential(2, (30, 1)) +x2 = 2 * x1 + np.random.chisquare(4, (30, 1)) +mv_data = np.concatenate((x1, x2), axis=1) +mv_elmodel = sm.emplike.DescStat(mv_data) +# For multivariate data, the only methods are mv_test_mean, +# mv mean contour and ci_corr and test_corr. + +# Let's test the hypthesis that x1 has a mean of 2 and x2 has a mean of 7 +print('Multivaraite mean hypothesis test') +print(mv_elmodel.mv_test_mean(np.array([2, 7]))) + +# Now let's get the confidence interval for correlation +print('Correlation Coefficient CI') +print(mv_elmodel.ci_corr()) +# Note how this took much longer than previous functions. That is +# because the function is optimizing over 4 nuisance parameters. +# We can also do a hypothesis test for correlation +print('Hypothesis test for correlation') +print(mv_elmodel.test_corr(.7)) + +# Finally, let's create a contour plot for the means of the data +means_contour = mv_elmodel.mv_mean_contour(1, 3, 6,9, .15,.15, plot_dta=1) +# This also returns a fig so we can type mean_contour.show() to see the figure +# Sometimes, the data is very dispersed and we would like to see the confidence +# intervals without the plotted data. Let's see the difference when we set +# plot_dta=0 + +means_contour2 = mv_elmodel.mv_mean_contour(1, 3, 6,9, .05,.05, plot_dta=0) diff --git a/statsmodels/examples/ex_emplike_2.py b/statsmodels/examples/ex_emplike_2.py new file mode 100644 index 0000000..2ca8ea6 --- /dev/null +++ b/statsmodels/examples/ex_emplike_2.py @@ -0,0 +1,92 @@ +""" +This script is a basic tutorial on how to conduct empirical +likelihood estimation and inference in linear regression models. +""" + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm + +# Let's generate some regression data +np.random.seed(100) # no significance of the seed +X = np.random.standard_normal((40, 3)) +X = sm.add_constant(X) +beta = np.arange(1,5) +y = np.dot(X, beta) + np.random.standard_normal(40) +# There are no distributional assumptions on the error. I just chose +# normal errors to demonstrate. + +print('Lets play with EL Regression') + + +# In a model with an intercept, access EL inference through OLS results. + + +elmodel = sm.OLS(y, X) +fitted = elmodel.fit() + + +# Let's test if the intercept is 0 +print('Intercept test') +test0_1 = fitted.el_test(np.array([0]), np.array([0])) +print(test0_1) +# Let's test if beta3 is 4 +print('beta3 test') +test1 = fitted.el_test(np.array([4]), np.array([3])) +print(test1) +# Lets test the hypothesis that beta3=4 and beta2=3 +print('joint beta test') +test2 = fitted.el_test(np.array([3, 4]), np.array([2, 3])) +print(test2) + +# Let's get the confidence intervals for the parameters +print('Confidence Interval for Beta1') +ci_beta1 = fitted.conf_int_el(1) +print(ci_beta1) + +# Of course, we can still see the rest of the RegressionResults +print('R-squared') +print(fitted.rsquared) +print('Params') +print(fitted.params) + +# Now lets check out regression through the origin +print('Origin Regression') +originx = np.random.standard_normal((30, 3)) +originbeta = np.array([[1], [2], [3]]) +originy = np.dot(originx, originbeta) + np.random.standard_normal((30, 1)) + +originmodel = sm.emplike.ELOriginRegress(originy, originx) +# Since in this case, parameter estimates are different then in OLS, +# we need to fit the model. + +originfit = originmodel.fit() + + +print('The fitted parameters') +print(originfit.params) +print('The MSE') +print(originfit.mse_model) +print('The R-squared') +print(originfit.rsquared) + +# Note that the first element of param is 0 and there are 4 params. That is +# because the first param is the intercept term. This is noted in the +# documentation. + +# Now that the model is fitted, we can do some inference. + +print('Test beta1 =1') +test_beta1 = originfit.el_test([1], [1]) +print(test_beta1) + +# A confidence interval for Beta1. +print('confidence interval for beta1') +ci_beta2 = originfit.conf_int_el(1) +print(ci_beta2) + +# Finally, since we initiated an EL model, normal inference is not available +try: + originfit.conf_int() +except: + print('No normal inference available') diff --git a/statsmodels/examples/ex_emplike_3.py b/statsmodels/examples/ex_emplike_3.py new file mode 100644 index 0000000..95d615d --- /dev/null +++ b/statsmodels/examples/ex_emplike_3.py @@ -0,0 +1,28 @@ +""" +This script provides a tutorial on how to use estimate and conduct +inference in an accelerated failure time model using empirical likelihood. + +We will be using the Stanford Heart Transplant data + +""" + +from __future__ import print_function +import statsmodels.api as sm +import numpy as np + +data = sm.datasets.heart.load(as_pandas=False) +# Note this data has endog, exog and censors +# We will take the log (base 10) of the endogenous survival times + +model = sm.emplike.emplikeAFT(np.log10(data.endog), + sm.add_constant(data.exog), data.censors) + +# We need to fit the model to get the parameters +fitted = model.fit() +print(fitted.params()) +test1 = fitted.test_beta([4],[0]) # Test that the intercept is 4 +print(test1) +test2 = fitted.test_beta([-.05], [1]) # Test that the slope is -.05 +print(test2) +ci_beta1 = fitted.ci_beta(1, .1, -.1) +print(ci_beta1) diff --git a/statsmodels/examples/ex_feasible_gls_het.py b/statsmodels/examples/ex_feasible_gls_het.py new file mode 100644 index 0000000..bc98233 --- /dev/null +++ b/statsmodels/examples/ex_feasible_gls_het.py @@ -0,0 +1,124 @@ +# -*- coding: utf-8 -*- +"""Examples for linear model with heteroscedasticity estimated by feasible GLS + +These are examples to check the results during developement. + +The assumptions: + +We have a linear model y = X*beta where the variance of an observation depends +on some explanatory variable Z (`exog_var`). +linear_model.WLS estimated the model for a given weight matrix +here we want to estimate also the weight matrix by two step or iterative WLS + +Created on Wed Dec 21 12:28:17 2011 + +Author: Josef Perktold + +There might be something fishy with the example, but I don't see it. +Or maybe it's supposed to be this way because in the first case I don't +include a constant and in the second case I include some of the same +regressors as in the main equation. + +""" + +from __future__ import print_function +import numpy as np +from numpy.testing import assert_almost_equal + +from statsmodels.regression.linear_model import OLS +from statsmodels.regression.feasible_gls import GLSHet, GLSHet2 + +examples = ['ex1'] + +if 'ex1' in examples: + #from tut_ols_wls + nsample = 1000 + sig = 0.5 + x1 = np.linspace(0, 20, nsample) + X = np.c_[x1, (x1-5)**2, np.ones(nsample)] + np.random.seed(0)#9876789) #9876543) + beta = [0.5, -0.015, 1.] + y_true2 = np.dot(X, beta) + w = np.ones(nsample) + w[nsample*6//10:] = 4 #Note this is the squared value + #y2[:nsample*6/10] = y_true2[:nsample*6/10] + sig*1. * np.random.normal(size=nsample*6/10) + #y2[nsample*6/10:] = y_true2[nsample*6/10:] + sig*4. * np.random.normal(size=nsample*4/10) + y2 = y_true2 + sig*np.sqrt(w)* np.random.normal(size=nsample) + X2 = X[:,[0,2]] + X2 = X + + res_ols = OLS(y2, X2).fit() + print('OLS beta estimates') + print(res_ols.params) + print('OLS stddev of beta') + print(res_ols.bse) + print('\nWLS') + mod0 = GLSHet2(y2, X2, exog_var=w) + res0 = mod0.fit() + print('new version') + mod1 = GLSHet(y2, X2, exog_var=w) + res1 = mod1.iterative_fit(2) + print('WLS beta estimates') + print(res1.params) + print(res0.params) + print('WLS stddev of beta') + print(res1.bse) + #compare with previous version GLSHet2, refactoring check + #assert_almost_equal(res1.params, np.array([ 0.37642521, 1.51447662])) + #this fails ??? more iterations? different starting weights? + + + print(res1.model.weights/res1.model.weights.max()) + #why is the error so small in the estimated weights ? + assert_almost_equal(res1.model.weights/res1.model.weights.max(), 1./w, 14) + print('residual regression params') + print(res1.results_residual_regression.params) + print('scale of model ?') + print(res1.scale) + print('unweighted residual variance, note unweighted mean is not zero') + print(res1.resid.var()) + #Note weighted mean is zero: + #(res1.model.weights * res1.resid).mean() + + doplots = False + if doplots: + import matplotlib.pyplot as plt + plt.figure() + plt.plot(x1, y2, 'o') + plt.plot(x1, y_true2, 'b-', label='true') + plt.plot(x1, res1.fittedvalues, 'r-', label='fwls') + plt.plot(x1, res_ols.fittedvalues, '--', label='ols') + plt.legend() + + #z = (w[:,None] == [1,4]).astype(float) #dummy variable + z = (w[:,None] == np.unique(w)).astype(float) #dummy variable + mod2 = GLSHet(y2, X2, exog_var=z) + res2 = mod2.iterative_fit(2) + print(res2.params) + + import statsmodels.api as sm + z = sm.add_constant(w) + mod3 = GLSHet(y2, X2, exog_var=z) + res3 = mod3.iterative_fit(8) + print(res3.params) + print("np.array(res3.model.history['ols_params'])") + + print(np.array(res3.model.history['ols_params'])) + print("np.array(res3.model.history['self_params'])") + print(np.array(res3.model.history['self_params'])) + + print(np.unique(res2.model.weights)) #for discrete z only, only a few uniques + print(np.unique(res3.model.weights)) + + if doplots: + plt.figure() + plt.plot(x1, y2, 'o') + plt.plot(x1, y_true2, 'b-', label='true') + plt.plot(x1, res1.fittedvalues, '-', label='fwls1') + plt.plot(x1, res2.fittedvalues, '-', label='fwls2') + plt.plot(x1, res3.fittedvalues, '-', label='fwls3') + plt.plot(x1, res_ols.fittedvalues, '--', label='ols') + plt.legend() + + + plt.show() diff --git a/statsmodels/examples/ex_feasible_gls_het_0.py b/statsmodels/examples/ex_feasible_gls_het_0.py new file mode 100644 index 0000000..84cf38e --- /dev/null +++ b/statsmodels/examples/ex_feasible_gls_het_0.py @@ -0,0 +1,174 @@ +# -*- coding: utf-8 -*- +"""Examples for linear model with heteroscedasticity estimated by feasible GLS + +These are examples to check the results during developement. + +The assumptions: + +We have a linear model y = X*beta where the variance of an observation depends +on some explanatory variable Z (`exog_var`). +linear_model.WLS estimated the model for a given weight matrix +here we want to estimate also the weight matrix by two step or iterative WLS + +Created on Wed Dec 21 12:28:17 2011 + +Author: Josef Perktold + +""" + +from __future__ import print_function +import numpy as np +from numpy.testing import assert_almost_equal + +from statsmodels.regression.linear_model import OLS +from statsmodels.regression.feasible_gls import GLSHet, GLSHet2 +from statsmodels.tools.tools import add_constant + +examples = ['ex1'] + +if 'ex1' in examples: + nsample = 300 #different pattern last graph with 100 or 200 or 500 + sig = 0.5 + + np.random.seed(9876789) #9876543) + X = np.random.randn(nsample, 3) + X = np.column_stack((np.ones((nsample,1)), X)) + beta = [1, 0.5, -0.5, 1.] + y_true2 = np.dot(X, beta) + + + x1 = np.linspace(0, 1, nsample) + gamma = np.array([1, 3.]) + #with slope 3 instead of two, I get negative weights, Not correct + # - was misspecified, but the negative weights are still possible with identity link + #gamma /= gamma.sum() #normalize assuming x1.max is 1 + z_true = add_constant(x1) + + winv = np.dot(z_true, gamma) + het_params = sig**2 * np.array([1, 3.]) # for squared + sig2_het = sig**2 * winv + + weights_dgp = 1/winv + weights_dgp /= weights_dgp.max() #should be already normalized - NOT check normalization + #y2[:nsample*6/10] = y_true2[:nsample*6/10] + sig*1. * np.random.normal(size=nsample*6/10) + z0 = np.zeros(nsample) + z0[(nsample * 5)//10:] = 1 #dummy for 2 halfs of sample + z0 = add_constant(z0) + + z1 = add_constant(x1) + + noise = np.sqrt(sig2_het) * np.random.normal(size=nsample) + y2 = y_true2 + noise + + X2 = X[:,[0,2]] #misspecified, missing regressor in main equation + X2 = X #correctly specigied + + res_ols = OLS(y2, X2).fit() + print('OLS beta estimates') + print(res_ols.params) + print('OLS stddev of beta') + print(res_ols.bse) + print('\nWLS') + mod0 = GLSHet2(y2, X2, exog_var=winv) + res0 = mod0.fit() + print('new version') + mod1 = GLSHet(y2, X2, exog_var=winv) + res1 = mod1.iterative_fit(2) + print('WLS beta estimates') + print(res1.params) + print(res0.params) + print('WLS stddev of beta') + print(res1.bse) + #compare with previous version GLSHet2, refactoring check + #assert_almost_equal(res1.params, np.array([ 0.37642521, 1.51447662])) + #this fails ??? more iterations? different starting weights? + + + print(res1.model.weights/res1.model.weights.max()) + #why is the error so small in the estimated weights ? + assert_almost_equal(res1.model.weights/res1.model.weights.max(), weights_dgp, 14) + print('residual regression params') + print(res1.results_residual_regression.params) + print('scale of model ?') + print(res1.scale) + print('unweighted residual variance, note unweighted mean is not zero') + print(res1.resid.var()) + #Note weighted mean is zero: + #(res1.model.weights * res1.resid).mean() + + doplots = True #False + if doplots: + import matplotlib.pyplot as plt + plt.figure() + plt.plot(x1, y2, 'o') + plt.plot(x1, y_true2, 'b-', label='true') + plt.plot(x1, res1.fittedvalues, 'r-', label='fwls') + plt.plot(x1, res_ols.fittedvalues, '--', label='ols') + plt.legend() + + #the next only works if w has finite support, discrete/categorical + #z = (w[:,None] == [1,4]).astype(float) #dummy variable + #z = (w0[:,None] == np.unique(w0)).astype(float) #dummy variable + #changed z0 contains dummy and constant + mod2 = GLSHet(y2, X2, exog_var=z0) + res2 = mod2.iterative_fit(3) + print(res2.params) + + import statsmodels.api as sm + #z = sm.add_constant(w, prepend=True) + z = sm.add_constant(x1/x1.max()) + mod3 = GLSHet(y2, X2, exog_var=z1)#, link=sm.families.links.log()) + res3 = mod3.iterative_fit(20) + error_var_3 = res3.mse_resid/res3.model.weights + print(res3.params) + print("np.array(res3.model.history['ols_params'])") + + print(np.array(res3.model.history['ols_params'])) + print("np.array(res3.model.history['self_params'])") + print(np.array(res3.model.history['self_params'])) + + #Models 2 and 3 are equivalent with different parameterization of Z + print(np.unique(res2.model.weights)) #for discrete z only, only a few uniques + print(np.unique(res3.model.weights)) + + print(res3.summary()) + print('\n\nResults of estimation of weights') + print('--------------------------------') + print(res3.results_residual_regression.summary()) + + if doplots: + plt.figure() + plt.plot(x1, y2, 'o') + plt.plot(x1, y_true2, 'b-', label='true') + plt.plot(x1, res1.fittedvalues, '-', label='fwls1') + plt.plot(x1, res2.fittedvalues, '-', label='fwls2') + plt.plot(x1, res3.fittedvalues, '-', label='fwls3') + plt.plot(x1, res_ols.fittedvalues, '--', label='ols') + plt.legend() + + plt.figure() + plt.ylim(0, 5) + res_e2 = OLS(noise**2, z).fit() + plt.plot(noise**2, 'bo', alpha=0.5, label='dgp error**2') + plt.plot(res_e2.fittedvalues, lw=2, label='ols for noise**2') + #plt.plot(res3.model.weights, label='GLSHet weights') + plt.plot(error_var_3, lw=2, label='GLSHet error var') + plt.plot(res3.resid**2, 'ro', alpha=0.5, label='resid squared') + #plt.plot(weights_dgp, label='DGP weights') + plt.plot(sig**2 * winv, lw=2, label='DGP error var') + plt.legend() + + + plt.show() + + '''Note these are close but maybe biased because of skewed distribution + >>> res3.mse_resid/res3.model.weights[-10:] + array([ 1.03115871, 1.03268209, 1.03420547, 1.03572885, 1.03725223, + 1.03877561, 1.04029899, 1.04182237, 1.04334575, 1.04486913]) + >>> res_e2.fittedvalues[-10:] + array([ 1.0401953 , 1.04171386, 1.04323242, 1.04475098, 1.04626954, + 1.0477881 , 1.04930666, 1.05082521, 1.05234377, 1.05386233]) + >>> sig**2 * w[-10:] + array([ 0.98647295, 0.98797595, 0.98947896, 0.99098196, 0.99248497, + 0.99398798, 0.99549098, 0.99699399, 0.99849699, 1. ]) + ''' diff --git a/statsmodels/examples/ex_generic_mle.py b/statsmodels/examples/ex_generic_mle.py new file mode 100644 index 0000000..3284db9 --- /dev/null +++ b/statsmodels/examples/ex_generic_mle.py @@ -0,0 +1,361 @@ + +from __future__ import print_function +from functools import partial + +import numpy as np +from scipy import stats +import statsmodels.api as sm +from statsmodels.base.model import GenericLikelihoodModel +from statsmodels.tools.numdiff import approx_fprime, approx_hess + + +data = sm.datasets.spector.load(as_pandas=False) +data.exog = sm.add_constant(data.exog, prepend=False) +# in this dir + +probit_mod = sm.Probit(data.endog, data.exog) +probit_res = probit_mod.fit() +loglike = probit_mod.loglike +score = probit_mod.score +mod = GenericLikelihoodModel(data.endog, data.exog*2, loglike, score) +res = mod.fit(method="nm", maxiter = 500) + +def probitloglike(params, endog, exog): + """ + Log likelihood for the probit + """ + q = 2*endog - 1 + X = exog + return np.add.reduce(stats.norm.logcdf(q*np.dot(X,params))) + + +model_loglike = partial(probitloglike, endog=data.endog, exog=data.exog) +mod = GenericLikelihoodModel(data.endog, data.exog, loglike=model_loglike) +res = mod.fit(method="nm", maxiter=500) +print(res) + + +np.allclose(res.params, probit_res.params, rtol=1e-4) +print(res.params, probit_res.params) + +#datal = sm.datasets.longley.load(as_pandas=False) +datal = sm.datasets.ccard.load(as_pandas=False) +datal.exog = sm.add_constant(datal.exog, prepend=False) +# Instance of GenericLikelihood model doesn't work directly, because loglike +# cannot get access to data in self.endog, self.exog + +nobs = 5000 +rvs = np.random.randn(nobs,6) +datal.exog = rvs[:,:-1] +datal.exog = sm.add_constant(datal.exog, prepend=False) +datal.endog = 1 + rvs.sum(1) + +show_error = False +show_error2 = 1#False +if show_error: + def loglike_norm_xb(self, params): + beta = params[:-1] + sigma = params[-1] + xb = np.dot(self.exog, beta) + return stats.norm.logpdf(self.endog, loc=xb, scale=sigma) + + mod_norm = GenericLikelihoodModel(datal.endog, datal.exog, loglike_norm_xb) + res_norm = mod_norm.fit(method="nm", maxiter = 500) + + print(res_norm.params) + +if show_error2: + def loglike_norm_xb(params, endog, exog): + beta = params[:-1] + sigma = params[-1] + #print exog.shape, beta.shape + xb = np.dot(exog, beta) + #print xb.shape, stats.norm.logpdf(endog, loc=xb, scale=sigma).shape + return stats.norm.logpdf(endog, loc=xb, scale=sigma).sum() + + model_loglike3 = partial(loglike_norm_xb, + endog=datal.endog, exog=datal.exog) + mod_norm = GenericLikelihoodModel(datal.endog, datal.exog, model_loglike3) + res_norm = mod_norm.fit(start_params=np.ones(datal.exog.shape[1]+1), + method="nm", maxiter = 5000) + + print(res_norm.params) + +class MygMLE(GenericLikelihoodModel): + # just for testing + def loglike(self, params): + beta = params[:-1] + sigma = params[-1] + xb = np.dot(self.exog, beta) + return stats.norm.logpdf(self.endog, loc=xb, scale=sigma).sum() + + def loglikeobs(self, params): + beta = params[:-1] + sigma = params[-1] + xb = np.dot(self.exog, beta) + return stats.norm.logpdf(self.endog, loc=xb, scale=sigma) + +mod_norm2 = MygMLE(datal.endog, datal.exog) +#res_norm = mod_norm.fit(start_params=np.ones(datal.exog.shape[1]+1), method="nm", maxiter = 500) +res_norm2 = mod_norm2.fit(start_params=[1.]*datal.exog.shape[1]+[1], method="nm", maxiter = 500) +np.allclose(res_norm.params, res_norm2.params) +print(res_norm2.params) + +res2 = sm.OLS(datal.endog, datal.exog).fit() +start_params = np.hstack((res2.params, np.sqrt(res2.mse_resid))) +res_norm3 = mod_norm2.fit(start_params=start_params, method="nm", maxiter = 500, + retall=0) +print(start_params) +print(res_norm3.params) +print(res2.bse) +print(res_norm3.bse) +print('llf', res2.llf, res_norm3.llf) + +bse = np.sqrt(np.diag(np.linalg.inv(res_norm3.model.hessian(res_norm3.params)))) +res_norm3.model.score(res_norm3.params) + +#fprime in fit option cannot be overwritten, set to None, when score is defined +# exception is fixed, but I don't think score was supposed to be called + +res_bfgs = mod_norm2.fit(start_params=start_params, method="bfgs", fprime=None, + maxiter=500, retall=0) + +hb=-approx_hess(res_norm3.params, mod_norm2.loglike, epsilon=-1e-4) +hf=-approx_hess(res_norm3.params, mod_norm2.loglike, epsilon=1e-4) +hh = (hf+hb)/2. +print(np.linalg.eigh(hh)) + +grad = -approx_fprime(res_norm3.params, mod_norm2.loglike, epsilon=-1e-4) +print(grad) +gradb = -approx_fprime(res_norm3.params, mod_norm2.loglike, epsilon=-1e-4) +gradf = -approx_fprime(res_norm3.params, mod_norm2.loglike, epsilon=1e-4) +print((gradb+gradf)/2.) + +print(res_norm3.model.score(res_norm3.params)) +print(res_norm3.model.score(start_params)) +mod_norm2.loglike(start_params/2.) +print(np.linalg.inv(-1*mod_norm2.hessian(res_norm3.params))) +print(np.sqrt(np.diag(res_bfgs.cov_params()))) +print(res_norm3.bse) + +print("MLE - OLS parameter estimates") +print(res_norm3.params[:-1] - res2.params) +print("bse diff in percent") +print((res_norm3.bse[:-1] / res2.bse)*100. - 100) + +''' +Optimization terminated successfully. + Current function value: 12.818804 + Iterations 6 +Optimization terminated successfully. + Current function value: 12.818804 + Iterations: 439 + Function evaluations: 735 +Optimization terminated successfully. + Current function value: 12.818804 + Iterations: 439 + Function evaluations: 735 + +[ 1.6258006 0.05172931 1.42632252 -7.45229732] [ 1.62581004 0.05172895 1.42633234 -7.45231965] +Warning: Maximum number of function evaluations has been exceeded. +[ -1.18109149 246.94438535 -16.21235536 24.05282629 -324.80867176 + 274.07378453] +Warning: Maximum number of iterations has been exceeded +[ 17.57107 -149.87528787 19.89079376 -72.49810777 -50.06067953 + 306.14170418] +Optimization terminated successfully. + Current function value: 506.488765 + Iterations: 339 + Function evaluations: 550 +[ -3.08181404 234.34702702 -14.99684418 27.94090839 -237.1465136 + 284.75079529] +[ -3.08181304 234.34701361 -14.99684381 27.94088692 -237.14649571 + 274.6857294 ] +[ 5.51471653 80.36595035 7.46933695 82.92232357 199.35166485] +llf -506.488764864 -506.488764864 +Optimization terminated successfully. + Current function value: 506.488765 + Iterations: 9 + Function evaluations: 13 + Gradient evaluations: 13 +(array([ 2.41772580e-05, 1.62492628e-04, 2.79438138e-04, + 1.90996240e-03, 2.07117946e-01, 1.28747174e+00]), array([[ 1.52225754e-02, 2.01838216e-02, 6.90127235e-02, + -2.57002471e-04, -5.25941060e-01, -8.47339404e-01], + [ 2.39797491e-01, -2.32325602e-01, -9.36235262e-01, + 3.02434938e-03, 3.95614029e-02, -1.02035585e-01], + [ -2.11381471e-02, 3.01074776e-02, 7.97208277e-02, + -2.94955832e-04, 8.49402362e-01, -5.20391053e-01], + [ -1.55821981e-01, -9.66926643e-01, 2.01517298e-01, + 1.52397702e-03, 4.13805882e-03, -1.19878714e-02], + [ -9.57881586e-01, 9.87911166e-02, -2.67819451e-01, + 1.55192932e-03, -1.78717579e-02, -2.55757014e-02], + [ -9.96486655e-04, -2.03697290e-03, -2.98130314e-03, + -9.99992985e-01, -1.71500426e-05, 4.70854949e-06]])) +[[ -4.91007768e-05 -7.28732630e-07 -2.51941401e-05 -2.50111043e-08 + -4.77484718e-08 -9.72022463e-08]] +[[ -1.64845915e-08 -2.87059265e-08 -2.88764568e-07 -6.82121026e-09 + 2.84217094e-10 -1.70530257e-09]] +[ -4.90678076e-05 -6.71320777e-07 -2.46166110e-05 -1.13686838e-08 + -4.83169060e-08 -9.37916411e-08] +[ -4.56753924e-05 -6.50857146e-07 -2.31756303e-05 -1.70530257e-08 + -4.43378667e-08 -1.75592936e-02] +[[ 2.99386348e+01 -1.24442928e+02 9.67254672e+00 -1.58968536e+02 + -5.91960010e+02 -2.48738183e+00] + [ -1.24442928e+02 5.62972166e+03 -5.00079203e+02 -7.13057475e+02 + -7.82440674e+03 -1.05126925e+01] + [ 9.67254672e+00 -5.00079203e+02 4.87472259e+01 3.37373299e+00 + 6.96960872e+02 7.69866589e-01] + [ -1.58968536e+02 -7.13057475e+02 3.37373299e+00 6.82417837e+03 + 4.84485862e+03 3.21440021e+01] + [ -5.91960010e+02 -7.82440674e+03 6.96960872e+02 4.84485862e+03 + 3.43753691e+04 9.37524459e+01] + [ -2.48738183e+00 -1.05126925e+01 7.69866589e-01 3.21440021e+01 + 9.37524459e+01 5.23915258e+02]] +>>> res_norm3.bse +array([ 5.47162086, 75.03147114, 6.98192136, 82.60858536, + 185.40595756, 22.88919522]) +>>> print res_norm3.model.score(res_norm3.params) +[ -4.90678076e-05 -6.71320777e-07 -2.46166110e-05 -1.13686838e-08 + -4.83169060e-08 -9.37916411e-08] +>>> print res_norm3.model.score(start_params) +[ -4.56753924e-05 -6.50857146e-07 -2.31756303e-05 -1.70530257e-08 + -4.43378667e-08 -1.75592936e-02] +>>> mod_norm2.loglike(start_params/2.) +-598.56178102781314 +>>> print np.linalg.inv(-1*mod_norm2.hessian(res_norm3.params)) +[[ 2.99386348e+01 -1.24442928e+02 9.67254672e+00 -1.58968536e+02 + -5.91960010e+02 -2.48738183e+00] + [ -1.24442928e+02 5.62972166e+03 -5.00079203e+02 -7.13057475e+02 + -7.82440674e+03 -1.05126925e+01] + [ 9.67254672e+00 -5.00079203e+02 4.87472259e+01 3.37373299e+00 + 6.96960872e+02 7.69866589e-01] + [ -1.58968536e+02 -7.13057475e+02 3.37373299e+00 6.82417837e+03 + 4.84485862e+03 3.21440021e+01] + [ -5.91960010e+02 -7.82440674e+03 6.96960872e+02 4.84485862e+03 + 3.43753691e+04 9.37524459e+01] + [ -2.48738183e+00 -1.05126925e+01 7.69866589e-01 3.21440021e+01 + 9.37524459e+01 5.23915258e+02]] +>>> print np.sqrt(np.diag(res_bfgs.cov_params())) +[ 5.10032831 74.34988912 6.96522122 76.7091604 169.8117832 + 22.91695494] +>>> print res_norm3.bse +[ 5.47162086 75.03147114 6.98192136 82.60858536 185.40595756 + 22.88919522] +>>> res_norm3.conf_int +> +>>> res_norm3.conf_int() +array([[0.96421437, 1.01999835], + [0.99251725, 1.04863332], + [0.95721328, 1.01246222], + [0.97134549, 1.02695393], + [0.97050081, 1.02660988], + [0.97773434, 1.03290028], + [0.97529207, 1.01428874]]) + +>>> res_norm3.params +array([ -3.08181304, 234.34701361, -14.99684381, 27.94088692, + -237.14649571, 274.6857294 ]) +>>> res2.params +array([ -3.08181404, 234.34702702, -14.99684418, 27.94090839, + -237.1465136 ]) +>>> +>>> res_norm3.params - res2.params +Traceback (most recent call last): + File "", line 1, in +ValueError: shape mismatch: objects cannot be broadcast to a single shape + +>>> res_norm3.params[:-1] - res2.params +array([ 9.96859735e-07, -1.34122981e-05, 3.72278400e-07, + -2.14645839e-05, 1.78919019e-05]) +>>> +>>> res_norm3.bse[:-1] - res2.bse +array([ -0.04309567, -5.33447922, -0.48741559, -0.31373822, -13.94570729]) +>>> (res_norm3.bse[:-1] / res2.bse) - 1 +array([-0.00781467, -0.06637735, -0.06525554, -0.00378352, -0.06995531]) +>>> (res_norm3.bse[:-1] / res2.bse)*100. - 100 +array([-0.7814667 , -6.6377355 , -6.52555369, -0.37835193, -6.99553089]) +>>> np.sqrt(np.diag(np.linalg.inv(res_norm3.model.hessian(res_bfgs.params)))) +array([ NaN, NaN, NaN, NaN, NaN, NaN]) +>>> np.sqrt(np.diag(np.linalg.inv(-res_norm3.model.hessian(res_bfgs.params)))) +array([ 5.10032831, 74.34988912, 6.96522122, 76.7091604 , + 169.8117832 , 22.91695494]) +>>> res_norm3.bse +array([ 5.47162086, 75.03147114, 6.98192136, 82.60858536, + 185.40595756, 22.88919522]) +>>> res2.bse +array([ 5.51471653, 80.36595035, 7.46933695, 82.92232357, + 199.35166485]) +>>> +>>> bse_bfgs = np.sqrt(np.diag(np.linalg.inv(-res_norm3.model.hessian(res_bfgs.params)))) +>>> (bse_bfgs[:-1] / res2.bse)*100. - 100 +array([ -7.51422527, -7.4858335 , -6.74913633, -7.49275094, -14.8179759 ]) +>>> hb=-approx_hess(res_bfgs.params, mod_norm2.loglike, epsilon=-1e-4) +>>> hf=-approx_hess(res_bfgs.params, mod_norm2.loglike, epsilon=1e-4) +>>> hh = (hf+hb)/2. +>>> bse_bfgs = np.sqrt(np.diag(np.linalg.inv(-hh))) +>>> bse_bfgs +array([ NaN, NaN, NaN, NaN, NaN, NaN]) +>>> bse_bfgs = np.sqrt(np.diag(np.linalg.inv(hh))) +>>> np.diag(hh) +array([ 9.81680159e-01, 1.39920076e-02, 4.98101826e-01, + 3.60955710e-04, 9.57811608e-04, 1.90709670e-03]) +>>> np.diag(np.inv(hh)) +Traceback (most recent call last): + File "", line 1, in +AttributeError: 'module' object has no attribute 'inv' + +>>> np.diag(np.linalg.inv(hh)) +array([ 2.64875153e+01, 5.91578496e+03, 5.13279911e+01, + 6.11533345e+03, 3.33775960e+04, 5.24357391e+02]) +>>> res2.bse**2 +array([ 3.04120984e+01, 6.45868598e+03, 5.57909945e+01, + 6.87611175e+03, 3.97410863e+04]) +>>> bse_bfgs +array([ 5.14660231, 76.91414015, 7.1643556 , 78.20059751, + 182.69536402, 22.89885131]) +>>> bse_bfgs - res_norm3.bse +array([-0.32501855, 1.88266901, 0.18243424, -4.40798785, -2.71059354, + 0.00965609]) +>>> (bse_bfgs[:-1] / res2.bse)*100. - 100 +array([-6.67512508, -4.29511526, -4.0831115 , -5.69415552, -8.35523538]) +>>> (res_norm3.bse[:-1] / res2.bse)*100. - 100 +array([-0.7814667 , -6.6377355 , -6.52555369, -0.37835193, -6.99553089]) +>>> (bse_bfgs / res_norm3.bse)*100. - 100 +array([-5.94007812, 2.50917247, 2.61295176, -5.33599242, -1.46197759, + 0.04218624]) +>>> bse_bfgs +array([ 5.14660231, 76.91414015, 7.1643556 , 78.20059751, + 182.69536402, 22.89885131]) +>>> res_norm3.bse +array([ 5.47162086, 75.03147114, 6.98192136, 82.60858536, + 185.40595756, 22.88919522]) +>>> res2.bse +array([ 5.51471653, 80.36595035, 7.46933695, 82.92232357, + 199.35166485]) +>>> dir(res_bfgs) +['__class__', '__delattr__', '__dict__', '__doc__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__str__', '__weakref__', 'bse', 'conf_int', 'cov_params', 'f_test', 'initialize', 'llf', 'mle_retvals', 'mle_settings', 'model', 'normalized_cov_params', 'params', 'scale', 't', 't_test'] +>>> res_bfgs.scale +1.0 +>>> res2.scale +81083.015420213851 +>>> res2.mse_resid +81083.015420213851 +>>> print np.sqrt(np.diag(np.linalg.inv(-1*mod_norm2.hessian(res_bfgs.params)))) +[ 5.10032831 74.34988912 6.96522122 76.7091604 169.8117832 + 22.91695494] +>>> print np.sqrt(np.diag(np.linalg.inv(-1*res_bfgs.model.hessian(res_bfgs.params)))) +[ 5.10032831 74.34988912 6.96522122 76.7091604 169.8117832 + 22.91695494] + +Is scale a misnomer, actually scale squared, i.e. variance of error term ? +''' + +print(res_norm3.model.score_obs(res_norm3.params).shape) + +jac = res_norm3.model.score_obs(res_norm3.params) +print(np.sqrt(np.diag(np.dot(jac.T, jac)))/start_params) +jac2 = res_norm3.model.score_obs(res_norm3.params, centered=True) + +print(np.sqrt(np.diag(np.linalg.inv(np.dot(jac.T, jac))))) +print(res_norm3.bse) +print(res2.bse) diff --git a/statsmodels/examples/ex_generic_mle_t.py b/statsmodels/examples/ex_generic_mle_t.py new file mode 100644 index 0000000..9bcaa2b --- /dev/null +++ b/statsmodels/examples/ex_generic_mle_t.py @@ -0,0 +1,261 @@ +# -*- coding: utf-8 -*- +""" +Created on Wed Jul 28 08:28:04 2010 + +Author: josef-pktd +""" + + +from __future__ import print_function +import numpy as np + +from scipy import special +import statsmodels.api as sm +from statsmodels.base.model import GenericLikelihoodModel +from statsmodels.tools.numdiff import approx_hess + +#redefine some shortcuts +np_log = np.log +np_pi = np.pi +sps_gamln = special.gammaln + + +def maxabs(arr1, arr2): + return np.max(np.abs(arr1 - arr2)) + +def maxabsrel(arr1, arr2): + return np.max(np.abs(arr2 / arr1 - 1)) + + + +class MyT(GenericLikelihoodModel): + '''Maximum Likelihood Estimation of Poisson Model + + This is an example for generic MLE which has the same + statistical model as discretemod.Poisson. + + Except for defining the negative log-likelihood method, all + methods and results are generic. Gradients and Hessian + and all resulting statistics are based on numerical + differentiation. + + ''' + + def loglike(self, params): + return -self.nloglikeobs(params).sum(0) + + # copied from discretemod.Poisson + def nloglikeobs(self, params): + """ + Loglikelihood of Poisson model + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + The log likelihood of the model evaluated at `params` + + Notes + -------- + .. math:: \\ln L=\\sum_{i=1}^{n}\\left[-\\lambda_{i}+y_{i}x_{i}^{\\prime}\\beta-\\ln y_{i}!\\right] + """ + #print len(params), + beta = params[:-2] + df = params[-2] + scale = params[-1] + loc = np.dot(self.exog, beta) + endog = self.endog + x = (endog - loc)/scale + #next part is stats.t._logpdf + lPx = sps_gamln((df+1)/2) - sps_gamln(df/2.) + lPx -= 0.5*np_log(df*np_pi) + (df+1)/2.*np_log(1+(x**2)/df) + lPx -= np_log(scale) # correction for scale + return -lPx + + +#Example: +np.random.seed(98765678) +nobs = 1000 +rvs = np.random.randn(nobs,5) +data_exog = sm.add_constant(rvs, prepend=False) +xbeta = 0.9 + 0.1*rvs.sum(1) +data_endog = xbeta + 0.1*np.random.standard_t(5, size=nobs) +#print data_endog + +modp = MyT(data_endog, data_exog) +modp.start_value = np.ones(data_exog.shape[1]+2) +modp.start_value[-2] = 10 +modp.start_params = modp.start_value +resp = modp.fit(start_params = modp.start_value) +print(resp.params) +print(resp.bse) + + +hb=-approx_hess(modp.start_value, modp.loglike, epsilon=-1e-4) +tmp = modp.loglike(modp.start_value) +print(tmp.shape) + + +''' +>>> tmp = modp.loglike(modp.start_value) +8 +>>> tmp.shape +(100,) +>>> tmp.sum(0) +-24220.877108016182 +>>> tmp = modp.nloglikeobs(modp.start_value) +8 +>>> tmp.shape +(100, 100) + +>>> params = modp.start_value +>>> beta = params[:-2] +>>> beta.shape +(6,) +>>> np.dot(modp.exog, beta).shape +(100,) +>>> modp.endog.shape +(100, 100) +>>> xbeta.shape +(100,) +>>> +''' + +''' +repr(start_params) array([ 1., 1., 1., 1., 1., 1., 1., 1.]) +Optimization terminated successfully. + Current function value: 91.897859 + Iterations: 108 + Function evaluations: 173 + Gradient evaluations: 173 +[ 1.58253308e-01 1.73188603e-01 1.77357447e-01 2.06707494e-02 + -1.31174789e-01 8.79915580e-01 6.47663840e+03 6.73457641e+02] +[ NaN NaN NaN NaN NaN + 28.26906182 NaN NaN] +() +>>> resp.params +array([ 1.58253308e-01, 1.73188603e-01, 1.77357447e-01, + 2.06707494e-02, -1.31174789e-01, 8.79915580e-01, + 6.47663840e+03, 6.73457641e+02]) +>>> resp.bse +array([ NaN, NaN, NaN, NaN, + NaN, 28.26906182, NaN, NaN]) +>>> resp.jac +Traceback (most recent call last): + File "", line 1, in +AttributeError: 'GenericLikelihoodModelResults' object has no attribute 'jac' + +>>> resp.bsejac +array([ 45243.35919908, 51997.80776897, 41418.33021984, + 42763.46575168, 50101.91631612, 42804.92083525, + 3005625.35649203, 13826948.68708931]) +>>> resp.bsejhj +array([ 1.51643931, 0.80229636, 0.27720185, 0.4711138 , 0.9028682 , + 0.31673747, 0.00524426, 0.69729368]) +>>> resp.covjac +array([[ 2.04696155e+09, 1.46643494e+08, 7.59932781e+06, + -2.39993397e+08, 5.62644255e+08, 2.34300598e+08, + -3.07824799e+09, -1.93425470e+10], + [ 1.46643494e+08, 2.70377201e+09, 1.06005712e+08, + 3.76824011e+08, -1.21778986e+08, 5.38612723e+08, + -2.12575784e+10, -1.69503271e+11], + [ 7.59932781e+06, 1.06005712e+08, 1.71547808e+09, + -5.94451158e+07, -1.44586401e+08, -5.41830441e+06, + 1.25899515e+10, 1.06372065e+11], + [ -2.39993397e+08, 3.76824011e+08, -5.94451158e+07, + 1.82871400e+09, -5.66930891e+08, 3.75061111e+08, + -6.84681772e+09, -7.29993789e+10], + [ 5.62644255e+08, -1.21778986e+08, -1.44586401e+08, + -5.66930891e+08, 2.51020202e+09, -4.67886982e+08, + 1.78890380e+10, 1.75428694e+11], + [ 2.34300598e+08, 5.38612723e+08, -5.41830441e+06, + 3.75061111e+08, -4.67886982e+08, 1.83226125e+09, + -1.27484996e+10, -1.12550321e+11], + [ -3.07824799e+09, -2.12575784e+10, 1.25899515e+10, + -6.84681772e+09, 1.78890380e+10, -1.27484996e+10, + 9.03378378e+12, 2.15188047e+13], + [ -1.93425470e+10, -1.69503271e+11, 1.06372065e+11, + -7.29993789e+10, 1.75428694e+11, -1.12550321e+11, + 2.15188047e+13, 1.91184510e+14]]) +>>> hb +array([[ 33.68732564, -2.33209221, -13.51255321, -1.60840159, + -13.03920385, -9.3506543 , 4.86239173, -9.30409101], + [ -2.33209221, 3.12512611, -6.08530968, -6.79232244, + 3.66804898, 1.26497071, 5.10113409, -2.53482995], + [ -13.51255321, -6.08530968, 31.14883498, -5.01514705, + -10.48819911, -2.62533035, 3.82241581, -12.51046342], + [ -1.60840159, -6.79232244, -5.01514705, 28.40141917, + -8.72489636, -8.82449456, 5.47584023, -18.20500017], + [ -13.03920385, 3.66804898, -10.48819911, -8.72489636, + 9.03650914, 3.65206176, 6.55926726, -1.8233635 ], + [ -9.3506543 , 1.26497071, -2.62533035, -8.82449456, + 3.65206176, 21.41825348, -1.28610793, 4.28101146], + [ 4.86239173, 5.10113409, 3.82241581, 5.47584023, + 6.55926726, -1.28610793, 46.52354448, -32.23861427], + [ -9.30409101, -2.53482995, -12.51046342, -18.20500017, + -1.8233635 , 4.28101146, -32.23861427, 178.61978279]]) +>>> np.linalg.eigh(hb) +(array([ -10.50373649, 0.7460258 , 14.73131793, 29.72453087, + 36.24103832, 41.98042979, 48.99815223, 190.04303734]), array([[-0.40303259, 0.10181305, 0.18164206, 0.48201456, 0.03916688, + 0.00903695, 0.74620692, 0.05853619], + [-0.3201713 , -0.88444855, -0.19867642, 0.02828812, 0.16733946, + -0.21440765, -0.02927317, 0.01176904], + [-0.41847094, 0.00170161, 0.04973298, 0.43276118, -0.55894304, + 0.26454728, -0.49745582, 0.07251685], + [-0.3508729 , -0.08302723, 0.25004884, -0.73495077, -0.38936448, + 0.20677082, 0.24464779, 0.11448238], + [-0.62065653, 0.44662675, -0.37388565, -0.19453047, 0.29084735, + -0.34151809, -0.19088978, 0.00342713], + [-0.15119802, -0.01099165, 0.84377273, 0.00554863, 0.37332324, + -0.17917015, -0.30371283, -0.03635211], + [ 0.15813581, 0.0293601 , 0.09882271, 0.03515962, -0.48768565, + -0.81960996, 0.05248464, 0.22533642], + [-0.06118044, -0.00549223, 0.03205047, -0.01782649, -0.21128588, + -0.14391393, 0.05973658, -0.96226835]])) +>>> np.linalg.eigh(np.linalg.inv(hb)) +(array([-0.09520422, 0.00526197, 0.02040893, 0.02382062, 0.02759303, + 0.03364225, 0.06788259, 1.34043621]), array([[-0.40303259, 0.05853619, 0.74620692, -0.00903695, -0.03916688, + 0.48201456, 0.18164206, 0.10181305], + [-0.3201713 , 0.01176904, -0.02927317, 0.21440765, -0.16733946, + 0.02828812, -0.19867642, -0.88444855], + [-0.41847094, 0.07251685, -0.49745582, -0.26454728, 0.55894304, + 0.43276118, 0.04973298, 0.00170161], + [-0.3508729 , 0.11448238, 0.24464779, -0.20677082, 0.38936448, + -0.73495077, 0.25004884, -0.08302723], + [-0.62065653, 0.00342713, -0.19088978, 0.34151809, -0.29084735, + -0.19453047, -0.37388565, 0.44662675], + [-0.15119802, -0.03635211, -0.30371283, 0.17917015, -0.37332324, + 0.00554863, 0.84377273, -0.01099165], + [ 0.15813581, 0.22533642, 0.05248464, 0.81960996, 0.48768565, + 0.03515962, 0.09882271, 0.0293601 ], + [-0.06118044, -0.96226835, 0.05973658, 0.14391393, 0.21128588, + -0.01782649, 0.03205047, -0.00549223]])) +>>> np.diag(np.linalg.inv(hb)) +array([ 0.01991288, 1.0433882 , 0.00516616, 0.02642799, 0.24732871, + 0.05281555, 0.02236704, 0.00643486]) +>>> np.sqrt(np.diag(np.linalg.inv(hb))) +array([ 0.14111302, 1.02146375, 0.07187597, 0.16256686, 0.49732154, + 0.22981633, 0.14955616, 0.08021756]) +>>> hess = modp.hessian(resp.params) +>>> np.sqrt(np.diag(np.linalg.inv(hess))) +array([ 231.3823423 , 117.79508218, 31.46595143, 53.44753106, + 132.4855704 , NaN, 5.47881705, 90.75332693]) +>>> hb=-approx_hess(resp.params, modp.loglike, epsilon=-1e-4) +>>> np.sqrt(np.diag(np.linalg.inv(hb))) +array([ 31.93524822, 22.0333515 , NaN, 29.90198792, + 38.82615785, NaN, NaN, NaN]) +>>> hb=-approx_hess(resp.params, modp.loglike, epsilon=-1e-8) +>>> np.sqrt(np.diag(np.linalg.inv(hb))) +Traceback (most recent call last): + [...] + raise LinAlgError, 'Singular matrix' +numpy.linalg.linalg.LinAlgError: Singular matrix +>>> resp.params +array([ 1.58253308e-01, 1.73188603e-01, 1.77357447e-01, + 2.06707494e-02, -1.31174789e-01, 8.79915580e-01, + 6.47663840e+03, 6.73457641e+02]) +>>> +''' diff --git a/statsmodels/examples/ex_generic_mle_tdist.py b/statsmodels/examples/ex_generic_mle_tdist.py new file mode 100644 index 0000000..f250c8c --- /dev/null +++ b/statsmodels/examples/ex_generic_mle_tdist.py @@ -0,0 +1,836 @@ +# -*- coding: utf-8 -*- +""" +Created on Wed Jul 28 08:28:04 2010 + +Author: josef-pktd +""" + + +from __future__ import print_function +from statsmodels.compat.python import zip +import numpy as np + +from scipy import stats, special, optimize +import statsmodels.api as sm +from statsmodels.base.model import GenericLikelihoodModel +from statsmodels.tools.numdiff import approx_hess + +#import for kstest based estimation +#should be replace +# FIXME: importing these patches scipy distribution classes in-place. +# Don't do this. +import statsmodels.sandbox.distributions.sppatch # noqa:F401 + + +#redefine some shortcuts +np_log = np.log +np_pi = np.pi +sps_gamln = special.gammaln + + +def maxabs(arr1, arr2): + return np.max(np.abs(arr1 - arr2)) + +def maxabsrel(arr1, arr2): + return np.max(np.abs(arr2 / arr1 - 1)) + +#global +store_params = [] + +class MyT(GenericLikelihoodModel): + '''Maximum Likelihood Estimation of Linear Model with t-distributed errors + + This is an example for generic MLE which has the same + statistical model as discretemod.Poisson. + + Except for defining the negative log-likelihood method, all + methods and results are generic. Gradients and Hessian + and all resulting statistics are based on numerical + differentiation. + + ''' + + + def loglike(self, params): + return -self.nloglikeobs(params).sum(0) + + # copied from discretemod.Poisson + def nloglikeobs(self, params): + """ + Loglikelihood of Poisson model + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + The log likelihood of the model evaluated at `params` + + Notes + -------- + .. math:: \\ln L=\\sum_{i=1}^{n}\\left[-\\lambda_{i}+y_{i}x_{i}^{\\prime}\\beta-\\ln y_{i}!\\right] + """ + #print len(params), + store_params.append(params) + if self.fixed_params is not None: + #print 'using fixed' + params = self.expandparams(params) + + beta = params[:-2] + df = params[-2] + scale = params[-1] + loc = np.dot(self.exog, beta) + endog = self.endog + x = (endog - loc)/scale + #next part is stats.t._logpdf + lPx = sps_gamln((df+1)/2) - sps_gamln(df/2.) + lPx -= 0.5*np_log(df*np_pi) + (df+1)/2.*np_log(1+(x**2)/df) + lPx -= np_log(scale) # correction for scale + return -lPx + + +#Example: +np.random.seed(98765678) +nobs = 1000 +nvars = 6 +df = 5 +rvs = np.random.randn(nobs, nvars-1) +data_exog = sm.add_constant(rvs, prepend=False) +xbeta = 0.9 + 0.1*rvs.sum(1) +data_endog = xbeta + 0.1*np.random.standard_t(df, size=nobs) +print(data_endog.var()) + +res_ols = sm.OLS(data_endog, data_exog).fit() +print(res_ols.scale) +print(np.sqrt(res_ols.scale)) +print(res_ols.params) +kurt = stats.kurtosis(res_ols.resid) +df_fromkurt = 6./kurt + 4 +print(stats.t.stats(df_fromkurt, moments='mvsk')) +print(stats.t.stats(df, moments='mvsk')) + +modp = MyT(data_endog, data_exog) +start_value = 0.1*np.ones(data_exog.shape[1]+2) +#start_value = np.zeros(data_exog.shape[1]+2) +#start_value[:nvars] = sm.OLS(data_endog, data_exog).fit().params +start_value[:nvars] = res_ols.params +start_value[-2] = df_fromkurt #10 +start_value[-1] = np.sqrt(res_ols.scale) #0.5 +modp.start_params = start_value + +#adding fixed parameters + +fixdf = np.nan * np.zeros(modp.start_params.shape) +fixdf[-2] = 100 + +fixone = 0 +if fixone: + modp.fixed_params = fixdf + modp.fixed_paramsmask = np.isnan(fixdf) + modp.start_params = modp.start_params[modp.fixed_paramsmask] +else: + modp.fixed_params = None + modp.fixed_paramsmask = None + + +resp = modp.fit(start_params = modp.start_params, disp=1, method='nm')#'newton') +#resp = modp.fit(start_params = modp.start_params, disp=1, method='newton') +print('\nestimation results t-dist') +print(resp.params) +print(resp.bse) +resp2 = modp.fit(start_params = resp.params, method='Newton') +print('using Newton') +print(resp2.params) +print(resp2.bse) + + +hb=-approx_hess(modp.start_params, modp.loglike, epsilon=-1e-4) +tmp = modp.loglike(modp.start_params) +print(tmp.shape) +#np.linalg.eigh(np.linalg.inv(hb))[0] + +pp=np.array(store_params) +print(pp.min(0)) +print(pp.max(0)) + + + + +##################### Example: Pareto +# estimating scale doesn't work yet, a bug somewhere ? +# fit_ks works well, but no bse or other result statistics yet + + +class MyPareto(GenericLikelihoodModel): + '''Maximum Likelihood Estimation pareto distribution + + first version: iid case, with constant parameters + ''' + + #copied from stats.distribution + def pdf(self, x, b): + return b * x**(-b-1) + + def loglike(self, params): + return -self.nloglikeobs(params).sum(0) + + def nloglikeobs(self, params): + #print params.shape + if self.fixed_params is not None: + #print 'using fixed' + params = self.expandparams(params) + b = params[0] + loc = params[1] + scale = params[2] + #loc = np.dot(self.exog, beta) + endog = self.endog + x = (endog - loc)/scale + logpdf = np_log(b) - (b+1.)*np_log(x) #use np_log(1 + x) for Pareto II + logpdf -= np.log(scale) + #lb = loc + scale + #logpdf[endog>> res_par.params +array([ 7.42705803e+152, 2.17339053e+153]) + +>>> mod_par.loglike(mod_par.start_params) +-1085.1993430947232 +>>> np.log(mod_par.pdf(*mod_par.start_params)) +0.69314718055994529 +>>> mod_par.loglike(mod_par.start_params) +-1085.1993430947232 +>>> np.log(stats.pareto.pdf(y[0],*mod_par.start_params)) +-4.6414308627431353 +>>> mod_par.loglike(mod_par.start_params) +-1085.1993430947232 +>>> mod_par.nloglikeobs(mod_par.start_params)[0] +0.29377232943845044 +>>> mod_par.start_params +array([ 1., 2.]) +>>> np.log(stats.pareto.pdf(y[0],1,9.5,2)) +-1.2806918394368461 +>>> mod_par.fixed_params= None +>>> mod_par.nloglikeobs(np.array([1., 10., 2.]))[0] +0.087533156771285828 +>>> y[0] +12.182956907488885 + +>>> mod_par.endog[0] +12.182956907488885 +>>> np.log(stats.pareto.pdf(y[0],1,10,2)) +-0.86821349410251702 +>>> np.log(stats.pareto.pdf(y[0],1.,10.,2.)) +-0.86821349410251702 +>>> stats.pareto.pdf(y[0],1.,10.,2.) +0.41970067762301644 +>>> mod_par.loglikeobs(np.array([1., 10., 2.]))[0] +-0.087533156771285828 +>>> +''' + +''' +>>> mod_par.nloglikeobs(np.array([1., 10., 2.]))[0] +0.86821349410251691 +>>> np.log(stats.pareto.pdf(y,1.,10.,2.)).sum() +-2627.9403758026938 +''' + + +#''' +#0.0686702747648 +#0.0164150896481 +#0.128121386381 +#[ 0.10370428 0.09921315 0.09676723 0.10457413 0.10201618 0.89964496] +#(array(0.0), array(1.4552599885729827), array(0.0), array(2.5072143354058203)) +#(array(0.0), array(1.6666666666666667), array(0.0), array(6.0)) +#repr(start_params) array([ 0.10370428, 0.09921315, 0.09676723, 0.10457413, 0.10201618, +# 0.89964496, 6.39309417, 0.12812139]) +#Optimization terminated successfully. +# Current function value: -679.951339 +# Iterations: 398 +# Function evaluations: 609 +# +#estimation results t-dist +#[ 0.10400826 0.10111893 0.09725133 0.10507788 0.10086163 0.8996041 +# 4.72131318 0.09825355] +#[ 0.00365493 0.00356149 0.00349329 0.00362333 0.003732 0.00362716 +# 0.72325227 0.00388822] +#repr(start_params) array([ 0.10400826, 0.10111893, 0.09725133, 0.10507788, 0.10086163, +# 0.8996041 , 4.72131318, 0.09825355]) +#Optimization terminated successfully. +# Current function value: -679.950443 +# Iterations 3 +#using Newton +#[ 0.10395383 0.10106762 0.09720665 0.10503384 0.10080599 0.89954546 +# 4.70918964 0.09815885] +#[ 0.00365299 0.00355968 0.00349147 0.00362166 0.00373015 0.00362533 +# 0.72014669 0.00388436] +#() +#[ 0.09992709 0.09786601 0.09387356 0.10229919 0.09756623 0.85466272 +# 4.60459182 0.09661986] +#[ 0.11308292 0.10828401 0.1028508 0.11268895 0.10934726 0.94462721 +# 7.15412655 0.13452746] +#repr(start_params) array([ 1., 2.]) +#Warning: Maximum number of function evaluations has been exceeded. +#repr(start_params) array([ 3.06504406e+302, 3.29325579e+303]) +# +#>>> mod_par.fixed_params +#array([ NaN, 10., NaN]) +#>>> mod_par.start_params +#array([ 1., 2.]) +# +# +#>>> stats.pareto.fit_fr(y, 1., frozen=[np.nan, 10., np.nan]) +#array([ 1.0346268 , 2.00184808]) +# +#>>> stats.pareto.fit_fr(y, frozen=[np.nan, 10., np.nan]) +#array([ 1.03463526, 2.00184809]) +#>>> stats.pareto.pdf(y, 1.03463526, 10, 2.00184809).sum() +#173.33947284555239 +# +#>>> mod_par.loglike((1.03463526, 10, 2.00184809)) +#-962.21623668859741 +#>>> np.log(stats.pareto.pdf(y, 1.03463526, 10, 2.00184809)).sum() +#-inf +#>>> np.log(stats.pareto.pdf(y, 1.03463526, 9, 2.00184809)).sum() +#-3074.5947476137271 +#>>> np.log(stats.pareto.pdf(y, 1.03463526, 10., 2.00184809)).sum() +#-inf +#>>> np.log(stats.pareto.pdf(y, 1.03463526, 9.9, 2.00184809)).sum() +#-2677.3867091635661 +#>>> y.min() +#12.001848089426717 +#>>> np.log(stats.pareto.pdf(y, 1.03463526, loc=9.9, scale=2.00184809)).sum() +#-2677.3867091635661 +#>>> np.log(stats.pareto.pdf(y, 1.03463526, loc=10., scale=2.00184809)).sum() +#-inf +#>>> stats.pareto.logpdf(y, 1.03463526, loc=10., scale=2.00184809).sum() +#-inf +#>>> stats.pareto.logpdf(y, 1.03463526, loc=9.99, scale=2.00184809).sum() +#-2631.6120098202355 +#>>> mod_par.loglike((1.03463526, 9.99, 2.00184809)) +#-963.2513896113644 +#>>> maxabs(y, mod_par.endog) +#0.0 +# +#>>> stats.pareto.a +#1.0 +# +#>>> b, loc, scale = (1.03463526, 9.99, 2.00184809) +#>>> (1-loc)/scale +#-4.4908502522786327 +# +#>>> lb = scale + loc +#>>> lb +#11.991848090000001 +#>>> (lb-loc)/scale == 1 +#False +#>>> (lb-loc)/scale +#1.0000000000000004 +#>>> +#''' + +''' +repr(start_params) array([ 1., 10., 2.]) +Optimization terminated successfully. + Current function value: 2626.436870 + Iterations: 102 + Function evaluations: 210 +Optimization terminated successfully. + Current function value: 0.016555 + Iterations: 16 + Function evaluations: 35 +[ 1.03482659 10.00737039 1.9944777 ] +(1.0596088578825995, 9.9043376069230007, 2.0975104813987118) +>>> 9.9043376069230007 + 2.0975104813987118 +12.001848088321712 +>>> y.min() +12.001848089426717 + +''' + +''' +0.0686702747648 +0.0164150896481 +0.128121386381 +[ 0.10370428 0.09921315 0.09676723 0.10457413 0.10201618 0.89964496] +(array(0.0), array(1.4552599885729829), array(0.0), array(2.5072143354058221)) +(array(0.0), array(1.6666666666666667), array(0.0), array(6.0)) +repr(start_params) array([ 0.10370428, 0.09921315, 0.09676723, 0.10457413, 0.10201618, + 0.89964496, 6.39309417, 0.12812139]) +Optimization terminated successfully. + Current function value: -679.951339 + Iterations: 398 + Function evaluations: 609 + +estimation results t-dist +[ 0.10400826 0.10111893 0.09725133 0.10507788 0.10086163 0.8996041 + 4.72131318 0.09825355] +[ 0.00365493 0.00356149 0.00349329 0.00362333 0.003732 0.00362716 + 0.72329352 0.00388832] +repr(start_params) array([ 0.10400826, 0.10111893, 0.09725133, 0.10507788, 0.10086163, + 0.8996041 , 4.72131318, 0.09825355]) +Optimization terminated successfully. + Current function value: -679.950443 + Iterations 3 +using Newton +[ 0.10395383 0.10106762 0.09720665 0.10503384 0.10080599 0.89954546 + 4.70918964 0.09815885] +[ 0.00365299 0.00355968 0.00349147 0.00362166 0.00373015 0.00362533 + 0.7201488 0.00388437] +() +[ 0.09992709 0.09786601 0.09387356 0.10229919 0.09756623 0.85466272 + 4.60459182 0.09661986] +[ 0.11308292 0.10828401 0.1028508 0.11268895 0.10934726 0.94462721 + 7.15412655 0.13452746] +repr(start_params) array([ 1., 9., 2.]) +Optimization terminated successfully. + Current function value: 2636.129089 + Iterations: 147 + Function evaluations: 279 +Optimization terminated successfully. + Current function value: 0.016555 + Iterations: 16 + Function evaluations: 35 +[ 0.84856418 10.2197801 1.78206799] +(1.0596088578825995, 9.9043376069230007, 2.0975104813987118) +12.0018480891 12.0018480883 12.0018480894 +repr(start_params) array([ 1., 2.]) +Warning: Desired error not necessarily achieveddue to precision loss + Current function value: 2643.549907 + Iterations: 2 + Function evaluations: 13 + Gradient evaluations: 12 +>>> res_parks2 = mod_par.fit_ks() +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2642.465273 + Iterations: 92 + Function evaluations: 172 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2636.639863 + Iterations: 73 + Function evaluations: 136 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2631.568778 + Iterations: 75 + Function evaluations: 133 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2627.821044 + Iterations: 75 + Function evaluations: 135 +repr(start_params) array([ 1., 2.]) +Warning: Maximum number of function evaluations has been exceeded. +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2631.568778 + Iterations: 75 + Function evaluations: 133 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.431596 + Iterations: 58 + Function evaluations: 109 +repr(start_params) array([ 1., 2.]) +Warning: Maximum number of function evaluations has been exceeded. +repr(start_params) array([ 1., 2.]) +Warning: Maximum number of function evaluations has been exceeded. +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.737426 + Iterations: 60 + Function evaluations: 109 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2627.821044 + Iterations: 75 + Function evaluations: 135 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.471666 + Iterations: 48 + Function evaluations: 94 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2627.196314 + Iterations: 66 + Function evaluations: 119 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.578538 + Iterations: 56 + Function evaluations: 103 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.471666 + Iterations: 48 + Function evaluations: 94 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.651702 + Iterations: 67 + Function evaluations: 122 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.737426 + Iterations: 60 + Function evaluations: 109 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.613505 + Iterations: 73 + Function evaluations: 141 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.578538 + Iterations: 56 + Function evaluations: 103 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.632218 + Iterations: 64 + Function evaluations: 119 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.651702 + Iterations: 67 + Function evaluations: 122 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.622789 + Iterations: 63 + Function evaluations: 114 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.613505 + Iterations: 73 + Function evaluations: 141 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.627465 + Iterations: 59 + Function evaluations: 109 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.632218 + Iterations: 64 + Function evaluations: 119 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.625104 + Iterations: 59 + Function evaluations: 108 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.629829 + Iterations: 66 + Function evaluations: 118 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.632218 + Iterations: 64 + Function evaluations: 119 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.632218 + Iterations: 64 + Function evaluations: 119 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.628642 + Iterations: 67 + Function evaluations: 122 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.631023 + Iterations: 68 + Function evaluations: 129 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.630430 + Iterations: 57 + Function evaluations: 108 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.629598 + Iterations: 60 + Function evaluations: 112 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.630430 + Iterations: 57 + Function evaluations: 108 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.630130 + Iterations: 65 + Function evaluations: 122 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.629536 + Iterations: 62 + Function evaluations: 111 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.630130 + Iterations: 65 + Function evaluations: 122 +repr(start_params) array([ 1., 2.]) +Optimization terminated successfully. + Current function value: 2626.629984 + Iterations: 67 + Function evaluations: 123 +Optimization terminated successfully. + Current function value: 0.016560 + Iterations: 18 + Function evaluations: 38 +>>> res_parks2 +(1.0592352626264809, 9.9051580457572399, 2.0966900385041591) +>>> res_parks +(1.0596088578825995, 9.9043376069230007, 2.0975104813987118) +>>> res_par.params +array([ 0.84856418, 10.2197801 , 1.78206799]) +>>> np.sqrt(np.diag(mod_par.hessian(res_par.params))) +array([ NaN, NaN, NaN]) +>>> mod_par.hessian(res_par.params +... ) +array([[ NaN, NaN, NaN], + [ NaN, NaN, NaN], + [ NaN, NaN, NaN]]) +>>> mod_par.hessian(res_parks) +array([[ NaN, NaN, NaN], + [ NaN, NaN, NaN], + [ NaN, NaN, NaN]]) + +>>> mod_par.hessian(np.array(res_parks)) +array([[ NaN, NaN, NaN], + [ NaN, NaN, NaN], + [ NaN, NaN, NaN]]) +>>> mod_par.fixed_params +array([ NaN, 9.90510677, NaN]) +>>> mod_par.fixed_params=None +>>> mod_par.hessian(np.array(res_parks)) +array([[-890.48553491, NaN, NaN], + [ NaN, NaN, NaN], + [ NaN, NaN, NaN]]) +>>> mod_par.loglike(np.array(res_parks)) +-2626.6322080820569 +>>> mod_par.bsejac +Traceback (most recent call last): + [...] +AttributeError: 'MyPareto' object has no attribute 'bsejac' + +>>> hasattr(mod_par, 'start_params') +True +>>> mod_par.start_params +array([ 1., 2.]) +>>> stats.pareto.stats(1., 9., 2., moments='mvsk') +(array(1.#INF), array(1.#INF), array(1.#QNAN), array(1.#QNAN)) +>>> stats.pareto.stats(1., 8., 2., moments='mvsk') +(array(1.#INF), array(1.#INF), array(1.#QNAN), array(1.#QNAN)) +>>> stats.pareto.stats(1., 8., 1., moments='mvsk') +(array(1.#INF), array(1.#INF), array(1.#QNAN), array(1.#QNAN)) +>>> stats.pareto.stats(1., moments='mvsk') +(array(1.#INF), array(1.#INF), array(1.#QNAN), array(1.#QNAN)) +>>> stats.pareto.stats(0.5, moments='mvsk') +(array(1.#INF), array(1.#INF), array(1.#QNAN), array(1.#QNAN)) +>>> stats.pareto.stats(2, moments='mvsk') +(array(2.0), array(1.#INF), array(1.#QNAN), array(1.#QNAN)) +>>> stats.pareto.stats(10, moments='mvsk') +(array(1.1111111111111112), array(0.015432098765432098), array(2.8110568859997356), array(14.828571428571429)) +>>> stats.pareto.rvs(10, size=10) +array([ 1.07716265, 1.18977526, 1.07093 , 1.05157081, 1.15991232, + 1.31015589, 1.06675107, 1.08082475, 1.19501243, 1.34967158]) +>>> r = stats.pareto.rvs(10, size=1000) + +>>> import matplotlib.pyplot as plt +>>> plt.hist(r) +(array([962, 32, 3, 2, 0, 0, 0, 0, 0, 1]), array([ 1.00013046, 1.3968991 , 1.79366773, 2.19043637, 2.587205 , + 2.98397364, 3.38074227, 3.77751091, 4.17427955, 4.57104818, + 4.96781682]), ) +>>> plt.show() + +''' diff --git a/statsmodels/examples/ex_grangercausality.py b/statsmodels/examples/ex_grangercausality.py new file mode 100644 index 0000000..1b8e8e9 --- /dev/null +++ b/statsmodels/examples/ex_grangercausality.py @@ -0,0 +1,42 @@ +# -*- coding: utf-8 -*- +""" + +Created on Sat Jul 06 15:44:57 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function +from statsmodels.compat.python import iteritems +import numpy as np +from numpy.testing import assert_almost_equal +from statsmodels.datasets import macrodata + +import statsmodels.tsa.stattools as tsa_stats + +# some example data +mdata = macrodata.load_pandas().data +mdata = mdata[['realgdp','realcons']].values +data = mdata +data = np.diff(np.log(data), axis=0) + +#R: lmtest:grangertest +r_result = [0.243097, 0.7844328, 195, 2] #f_test +gr = tsa_stats.grangercausalitytests(data[:,1::-1], 2, verbose=False) +assert_almost_equal(r_result, gr[2][0]['ssr_ftest'], decimal=7) +assert_almost_equal(gr[2][0]['params_ftest'], gr[2][0]['ssr_ftest'], + decimal=7) + +lag = 2 +print('\nTest Results for %d lags' % lag) +print() +print('\n'.join(['%-20s statistic: %f6.4 p-value: %f6.4' % (k, res[0], res[1]) + for k, res in iteritems(gr[lag][0]) ])) + +print('\n Results for auxiliary restricted regression with two lags') +print() +print(gr[lag][1][0].summary()) + +print('\n Results for auxiliary unrestricted regression with two lags') +print() +print(gr[lag][1][1].summary()) diff --git a/statsmodels/examples/ex_inter_rater.py b/statsmodels/examples/ex_inter_rater.py new file mode 100644 index 0000000..effc05b --- /dev/null +++ b/statsmodels/examples/ex_inter_rater.py @@ -0,0 +1,111 @@ +# -*- coding: utf-8 -*- +""" + +Created on Mon Dec 10 08:54:02 2012 + +Author: Josef Perktold +""" + +from __future__ import print_function +import numpy as np + +from statsmodels.stats.inter_rater import fleiss_kappa, cohens_kappa + + +table0 = np.asarray('''\ +1 0 0 0 0 14 1.000 +2 0 2 6 4 2 0.253 +3 0 0 3 5 6 0.308 +4 0 3 9 2 0 0.440 +5 2 2 8 1 1 0.330 +6 7 7 0 0 0 0.462 +7 3 2 6 3 0 0.242 +8 2 5 3 2 2 0.176 +9 6 5 2 1 0 0.286 +10 0 2 2 3 7 0.286'''.split(), float).reshape(10,-1) + + +Total = np.asarray("20 28 39 21 32".split('\t'), int) +Pj = np.asarray("0.143 0.200 0.279 0.150 0.229".split('\t'), float) +kappa_wp = 0.210 +table1 = table0[:, 1:-1] + + +print(fleiss_kappa(table1)) +table4 = np.array([[20,5], [10, 15]]) +print('res', cohens_kappa(table4), 0.4) #wikipedia + +table5 = np.array([[45, 15], [25, 15]]) +print('res', cohens_kappa(table5), 0.1304) #wikipedia + +table6 = np.array([[25, 35], [5, 35]]) +print('res', cohens_kappa(table6), 0.2593) #wikipedia +print('res', cohens_kappa(table6, weights=np.arange(2)), 0.2593) #wikipedia +t7 = np.array([[16, 18, 28], + [10, 27, 13], + [28, 20, 24]]) +print(cohens_kappa(t7, weights=[0, 1, 2])) + +table8 = np.array([[25, 35], [5, 35]]) +print('res', cohens_kappa(table8)) + +#SAS example from http://www.john-uebersax.com/stat/saskappa.htm +''' + Statistic Value ASE 95% Confidence Limits + ------------------------------------------------------------ + Simple Kappa 0.3333 0.0814 0.1738 0.4929 + Weighted Kappa 0.2895 0.0756 0.1414 0.4376 +''' +t9 = [[0, 0, 0], + [5, 16, 3], + [8, 12, 28]] +res9 = cohens_kappa(t9) +print('res', res9) +print('res', cohens_kappa(t9, weights=[0, 1, 2])) + + +#check max kappa, constructed by hand, same marginals +table6a = np.array([[30, 30], [0, 40]]) +res = cohens_kappa(table6a) +assert res.kappa == res.kappa_max +#print np.divide(*cohens_kappa(table6)[:2]) +print(res.kappa / res.kappa_max) + + +table10 = [[0, 4, 1], + [0, 8, 0], + [0, 1, 5]] +res10 = cohens_kappa(table10) +print('res10', res10) + + +'''SAS result for table10 + + Simple Kappa Coefficient + -------------------------------- + Kappa 0.4842 + ASE 0.1380 + 95% Lower Conf Limit 0.2137 + 95% Upper Conf Limit 0.7547 + + Test of H0: Kappa = 0 + + ASE under H0 0.1484 + Z 3.2626 + One-sided Pr > Z 0.0006 + Two-sided Pr > |Z| 0.0011 + + Weighted Kappa Coefficient + -------------------------------- + Weighted Kappa 0.4701 + ASE 0.1457 + 95% Lower Conf Limit 0.1845 + 95% Upper Conf Limit 0.7558 + + Test of H0: Weighted Kappa = 0 + + ASE under H0 0.1426 + Z 3.2971 + One-sided Pr > Z 0.0005 + Two-sided Pr > |Z| 0.0010 +''' diff --git a/statsmodels/examples/ex_kde_confint.py b/statsmodels/examples/ex_kde_confint.py new file mode 100644 index 0000000..a47952f --- /dev/null +++ b/statsmodels/examples/ex_kde_confint.py @@ -0,0 +1,77 @@ +# -*- coding: utf-8 -*- +""" + +Created on Mon Dec 16 11:02:59 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function +import numpy as np +from scipy import stats +import matplotlib.pyplot as plt +import statsmodels.nonparametric.api as npar +from statsmodels.sandbox.nonparametric import kernels +from statsmodels.distributions.mixture_rvs import mixture_rvs + +# example from test_kde.py mixture of two normal distributions +np.random.seed(12345) +x = mixture_rvs([.25,.75], size=200, dist=[stats.norm, stats.norm], + kwargs = (dict(loc=-1, scale=.5),dict(loc=1, scale=.5))) + +x.sort() # not needed + +kde = npar.KDEUnivariate(x) +kde.fit('gau') +ci = kde.kernel.density_confint(kde.density, len(x)) + +fig = plt.figure() +ax = fig.add_subplot(1, 1, 1) + +# gh5792. Remove except after matplotlib>2.1 required +try: + ax.hist(x, bins=15, density=True, alpha=0.25) +except AttributeError: + ax.hist(x, bins=15, normed=True, alpha=0.25) + +ax.plot(kde.support, kde.density, lw=2, color='red') +ax.fill_between(kde.support, ci[:,0], ci[:,1], + color='grey', alpha='0.7') +ax.set_title('Kernel Density Gaussian (bw = %4.2f)' % kde.bw) + + +# use all kernels directly + +x_grid = np.linspace(np.min(x), np.max(x), 51) +x_grid = np.linspace(-3, 3, 51) + +kernel_names = ['Biweight', 'Cosine', 'Epanechnikov', 'Gaussian', + 'Triangular', 'Triweight', #'Uniform', + ] + +fig = plt.figure() +for ii, kn in enumerate(kernel_names): + ax = fig.add_subplot(2, 3, ii+1) # without uniform + + # gh5792. Remove except after matplotlib>2.1 required + try: + ax.hist(x, bins=10, density=True, alpha=0.25) + except AttributeError: + ax.hist(x, bins=10, normed=True, alpha=0.25) + + #reduce bandwidth for Gaussian and Uniform which are to large in example + if kn in ['Gaussian', 'Uniform']: + args = (0.5,) + else: + args = () + kernel = getattr(kernels, kn)(*args) + + kde_grid = [kernel.density(x, xi) for xi in x_grid] + confint_grid = kernel.density_confint(kde_grid, len(x)) + + ax.plot(x_grid, kde_grid, lw=2, color='red', label=kn) + ax.fill_between(x_grid, confint_grid[:,0], confint_grid[:,1], + color='grey', alpha='0.7') + ax.legend(loc='upper left') + +plt.show() diff --git a/statsmodels/examples/ex_kde_normalreference.py b/statsmodels/examples/ex_kde_normalreference.py new file mode 100644 index 0000000..037bfac --- /dev/null +++ b/statsmodels/examples/ex_kde_normalreference.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +""" +Author: Padarn Wilson + +Performance of normal reference plug-in estimator vs silverman. Sample is drawn +from a mixture of gaussians. Distribution has been chosen to be reasoanbly close +to normal. +""" + +from __future__ import print_function +import numpy as np +from scipy import stats +import matplotlib.pyplot as plt +import statsmodels.nonparametric.api as npar +from statsmodels.distributions.mixture_rvs import mixture_rvs + +# example from test_kde.py mixture of two normal distributions +np.random.seed(12345) +x = mixture_rvs([.1, .9], size=200, dist=[stats.norm, stats.norm], + kwargs=(dict(loc=0, scale=.5), dict(loc=1, scale=.5))) + +kde = npar.KDEUnivariate(x) + + +kernel_names = ['Gaussian', 'Epanechnikov', 'Biweight', + 'Triangular', 'Triweight', 'Cosine' + ] + +kernel_switch = ['gau', 'epa', 'tri', 'biw', + 'triw', 'cos' + ] + + +def true_pdf(x): + pdf = 0.1 * stats.norm.pdf(x, loc=0, scale=0.5) + pdf += 0.9 * stats.norm.pdf(x, loc=1, scale=0.5) + return pdf + +fig = plt.figure() +for ii, kn in enumerate(kernel_switch): + + ax = fig.add_subplot(2, 3, ii + 1) # without uniform + + # gh5792. Remove except after matplotlib>2.1 required + try: + ax.hist(x, bins=20, density=True, alpha=0.25) + except AttributeError: + ax.hist(x, bins=20, normed=True, alpha=0.25) + + kde.fit(kernel=kn, bw='silverman', fft=False) + ax.plot(kde.support, kde.density) + + kde.fit(kernel=kn, bw='normal_reference', fft=False) + ax.plot(kde.support, kde.density) + + ax.plot(kde.support, true_pdf(kde.support), color='black', linestyle='--') + + ax.set_title(kernel_names[ii]) + + +ax.legend(['silverman', 'normal reference', 'true pdf'], loc='lower right') +ax.set_title('200 points') +plt.show() diff --git a/statsmodels/examples/ex_kernel_regression.py b/statsmodels/examples/ex_kernel_regression.py new file mode 100644 index 0000000..d0c438d --- /dev/null +++ b/statsmodels/examples/ex_kernel_regression.py @@ -0,0 +1,64 @@ +# -*- coding: utf-8 -*- +""" + +Created on Wed Jan 02 09:17:40 2013 + +Author: Josef Perktold based on test file by George Panterov +""" + +from __future__ import print_function +import numpy as np +import numpy.testing as npt +import matplotlib.pyplot as plt + +import statsmodels.nonparametric.api as nparam +#import statsmodels.api as sm +#nparam = sm.nonparametric + + + +italy_gdp = \ + [8.556, 12.262, 9.587, 8.119, 5.537, 6.796, 8.638, + 6.483, 6.212, 5.111, 6.001, 7.027, 4.616, 3.922, + 4.688, 3.957, 3.159, 3.763, 3.829, 5.242, 6.275, + 8.518, 11.542, 9.348, 8.02, 5.527, 6.865, 8.666, + 6.672, 6.289, 5.286, 6.271, 7.94, 4.72, 4.357, + 4.672, 3.883, 3.065, 3.489, 3.635, 5.443, 6.302, + 9.054, 12.485, 9.896, 8.33, 6.161, 7.055, 8.717, + 6.95] + +italy_year = \ + [1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, + 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1952, + 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, + 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1953, 1953, + 1953, 1953, 1953, 1953, 1953, 1953] + +italy_year = np.asarray(italy_year, float) + +model = nparam.KernelReg(endog=[italy_gdp], + exog=[italy_year], reg_type='lc', + var_type='o', bw='cv_ls') + +sm_bw = model.bw +R_bw = 0.1390096 + +sm_mean, sm_mfx = model.fit() +sm_mean2 = sm_mean[0:5] +sm_mfx = sm_mfx[0:5] +R_mean = 6.190486 + +sm_R2 = model.r_squared() +R_R2 = 0.1435323 + +npt.assert_allclose(sm_bw, R_bw, atol=1e-2) +npt.assert_allclose(sm_mean2, R_mean, atol=1e-2) +npt.assert_allclose(sm_R2, R_R2, atol=1e-2) + + +fig = plt.figure() +ax = fig.add_subplot(1,1,1) +ax.plot(italy_year, italy_gdp, 'o') +ax.plot(italy_year, sm_mean, '-') + +plt.show() diff --git a/statsmodels/examples/ex_kernel_regression2.py b/statsmodels/examples/ex_kernel_regression2.py new file mode 100644 index 0000000..9c7a074 --- /dev/null +++ b/statsmodels/examples/ex_kernel_regression2.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +""" + +Created on Wed Jan 02 13:43:44 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function +import numpy as np +import statsmodels.nonparametric.api as nparam + +if __name__ == '__main__': + + np.random.seed(500) + nobs = [250, 1000][0] + sig_fac = 1 + x = np.random.uniform(-2, 2, size=nobs) + x.sort() + y_true = np.sin(x*5)/x + 2*x + y = y_true + sig_fac * (np.sqrt(np.abs(3+x))) * np.random.normal(size=nobs) + + model = nparam.KernelReg(endog=[y], + exog=[x], reg_type='lc', + var_type='c', bw='cv_ls', + defaults=nparam.EstimatorSettings(efficient=True)) + + sm_bw = model.bw + + sm_mean, sm_mfx = model.fit() + + model1 = nparam.KernelReg(endog=[y], + exog=[x], reg_type='lc', + var_type='c', bw='cv_ls') + mean1, mfx1 = model1.fit() + + model2 = nparam.KernelReg(endog=[y], + exog=[x], reg_type='ll', + var_type='c', bw='cv_ls') + + mean2, mfx2 = model2.fit() + + print(model.bw) + print(model1.bw) + print(model2.bw) + + import matplotlib.pyplot as plt + fig = plt.figure() + ax = fig.add_subplot(1,1,1) + ax.plot(x, y, 'o', alpha=0.5) + ax.plot(x, y_true, lw=2, label='DGP mean') + ax.plot(x, sm_mean, lw=2, label='kernel mean') + ax.plot(x, mean2, lw=2, label='kernel mean') + ax.legend() + + plt.show() diff --git a/statsmodels/examples/ex_kernel_regression3.py b/statsmodels/examples/ex_kernel_regression3.py new file mode 100644 index 0000000..53ab58c --- /dev/null +++ b/statsmodels/examples/ex_kernel_regression3.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +"""script to try out Censored kernel regression + +Created on Wed Jan 02 13:43:44 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function +import numpy as np +import statsmodels.nonparametric.api as nparam + +if __name__ == '__main__': + + np.random.seed(500) + nobs = [250, 1000][0] + sig_fac = 1 + x = np.random.uniform(-2, 2, size=nobs) + x.sort() + x2 = x**2 + 0.02 * np.random.normal(size=nobs) + y_true = np.sin(x*5)/x + 2*x - 3 * x2 + y = y_true + sig_fac * (np.sqrt(np.abs(3+x))) * np.random.normal(size=nobs) + cens_side = ['left', 'right', 'random'][2] + if cens_side == 'left': + c_val = 0.5 + y_cens = np.clip(y, c_val, 100) + elif cens_side == 'right': + c_val = 3.5 + y_cens = np.clip(y, -100, c_val) + elif cens_side == 'random': + c_val = 3.5 + 3 * np.random.randn(nobs) + y_cens = np.minimum(y, c_val) + + model = nparam.KernelCensoredReg(endog=[y_cens], + #exog=[np.column_stack((x, x**2))], reg_type='lc', + exog=[x, x2], reg_type='ll', + var_type='cc', bw='aic', #'cv_ls', #[0.23, 434697.22], #'cv_ls', + censor_val=c_val[:,None] + #defaults=nparam.EstimatorSettings(efficient=True) + ) + + sm_bw = model.bw + + sm_mean, sm_mfx = model.fit() + +# model1 = nparam.KernelReg(endog=[y], +# exog=[x], reg_type='lc', +# var_type='c', bw='cv_ls') +# mean1, mfx1 = model1.fit() + + model2 = nparam.KernelReg(endog=[y_cens], + exog=[x, x2], reg_type='ll', + var_type='cc', bw='aic')#, 'cv_ls' + + mean2, mfx2 = model2.fit() + + print(model.bw) + #print model1.bw + print(model2.bw) + + ix = np.argsort(y_cens) + ix_rev = np.zeros(nobs, int) + ix_rev[ix] = np.arange(nobs) + ix_rev = model.sortix_rev + + import matplotlib.pyplot as plt + fig = plt.figure() + ax = fig.add_subplot(1,1,1) + ax.plot(x, y, 'o', alpha=0.5) + ax.plot(x, y_cens, 'o', alpha=0.5) + ax.plot(x, y_true, lw=2, label='DGP mean') + ax.plot(x, sm_mean[ix_rev], lw=2, label='model 0 mean') + ax.plot(x, mean2, lw=2, label='model 2 mean') + ax.legend() + + plt.show() diff --git a/statsmodels/examples/ex_kernel_regression_censored2.py b/statsmodels/examples/ex_kernel_regression_censored2.py new file mode 100644 index 0000000..c93f7e4 --- /dev/null +++ b/statsmodels/examples/ex_kernel_regression_censored2.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +"""script to check KernelCensoredReg based on test file + +Created on Thu Jan 03 20:20:47 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function +import numpy as np +import statsmodels.nonparametric.api as nparam + +if __name__ == '__main__': + #example from test file + nobs = 200 + np.random.seed(1234) + C1 = np.random.normal(size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + noise = 0.1 * np.random.normal(size=(nobs, )) + y = 0.3 +1.2 * C1 - 0.9 * C2 + noise + y[y>0] = 0 # censor the data + model = nparam.KernelCensoredReg(endog=[y], exog=[C1, C2], + reg_type='ll', var_type='cc', + bw='cv_ls', censor_val=0) + sm_mean, sm_mfx = model.fit() + + import matplotlib.pyplot as plt + fig = plt.figure() + ax = fig.add_subplot(1,1,1) + sortidx = np.argsort(y) + ax.plot(y[sortidx], 'o', alpha=0.5) + #ax.plot(x, y_cens, 'o', alpha=0.5) + #ax.plot(x, y_true, lw=2, label='DGP mean') + ax.plot(sm_mean[sortidx], lw=2, label='model 0 mean') + #ax.plot(x, mean2, lw=2, label='model 2 mean') + ax.legend() + + plt.show() diff --git a/statsmodels/examples/ex_kernel_regression_dgp.py b/statsmodels/examples/ex_kernel_regression_dgp.py new file mode 100644 index 0000000..43df3fd --- /dev/null +++ b/statsmodels/examples/ex_kernel_regression_dgp.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +""" + +Created on Sun Jan 06 09:50:54 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function + +if __name__ == '__main__': + + import numpy as np + import matplotlib.pyplot as plt + from statsmodels.nonparametric.api import KernelReg + import statsmodels.sandbox.nonparametric.dgp_examples as dgp + + + seed = np.random.randint(999999) + seed = 430973 + print(seed) + np.random.seed(seed) + + funcs = [dgp.UnivariateFanGijbels1(), + dgp.UnivariateFanGijbels2(), + dgp.UnivariateFanGijbels1EU(), + #dgp.UnivariateFanGijbels2(distr_x=stats.uniform(-2, 4)) + dgp.UnivariateFunc1() + ] + + res = [] + fig = plt.figure() + for i,func in enumerate(funcs): + #f = func() + f = func + model = KernelReg(endog=[f.y], exog=[f.x], reg_type='ll', + var_type='c', bw='cv_ls') + mean, mfx = model.fit() + ax = fig.add_subplot(2, 2, i+1) + f.plot(ax=ax) + ax.plot(f.x, mean, color='r', lw=2, label='est. mean') + ax.legend(loc='upper left') + res.append((model, mean, mfx)) + + fig.suptitle('Kernel Regression') + fig.show() diff --git a/statsmodels/examples/ex_kernel_regression_sigtest.py b/statsmodels/examples/ex_kernel_regression_sigtest.py new file mode 100644 index 0000000..985c321 --- /dev/null +++ b/statsmodels/examples/ex_kernel_regression_sigtest.py @@ -0,0 +1,108 @@ +# -*- coding: utf-8 -*- +"""Kernel Regression and Significance Test + +Warning: SLOW, 11 minutes on my computer + +Created on Thu Jan 03 20:20:47 2013 + +Author: Josef Perktold + +results - this version +---------------------- + +>>> exec(open('ex_kernel_regression_censored1.py').read()) +bw +[ 0.3987821 0.50933458] +[0.39878209999999997, 0.50933457999999998] + +sig_test - default +Not Significant +pvalue +0.11 +test statistic 0.000434305313291 +bootstrap critical values +[ 0.00043875 0.00046808 0.0005064 0.00054151] + +sig_test - pivot=True, nboot=200, nested_res=50 +pvalue +0.01 +test statistic 6.17877171579 +bootstrap critical values +[ 5.5658345 5.74761076 5.87386858 6.46012041] +times: 8.34599995613 20.6909999847 666.373999834 + +""" + +from __future__ import print_function +import time + +import numpy as np +import statsmodels.nonparametric.api as nparam +import statsmodels.nonparametric.kernel_regression as smkr + +if __name__ == '__main__': + t0 = time.time() + #example from test file + nobs = 200 + np.random.seed(1234) + C1 = np.random.normal(size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + noise = np.random.normal(size=(nobs, )) + Y = 0.3 +1.2 * C1 - 0.9 * C2 + noise + #self.write2file('RegData.csv', (Y, C1, C2)) + + #CODE TO PRODUCE BANDWIDTH ESTIMATION IN R + #library(np) + #data <- read.csv('RegData.csv', header=FALSE) + #bw <- npregbw(formula=data$V1 ~ data$V2 + data$V3, + # bwmethod='cv.aic', regtype='lc') + model = nparam.KernelReg(endog=[Y], exog=[C1, C2], + reg_type='lc', var_type='cc', bw='aic') + mean, marg = model.fit() + #R_bw = [0.4017893, 0.4943397] # Bandwidth obtained in R + bw_expected = [0.3987821, 0.50933458] + #npt.assert_allclose(model.bw, bw_expected, rtol=1e-3) + print('bw') + print(model.bw) + print(bw_expected) + + print('\nsig_test - default') + print(model.sig_test([1], nboot=100)) + t1 = time.time() + res0 = smkr.TestRegCoefC(model, [1]) + print('pvalue') + print((res0.t_dist >= res0.test_stat).mean()) + print('test statistic', res0.test_stat) + print('bootstrap critical values') + probs = np.array([0.9, 0.95, 0.975, 0.99]) + bsort0 = np.sort(res0.t_dist) + nrep0 = len(bsort0) + print(bsort0[(probs * nrep0).astype(int)]) + + t2 = time.time() + print('\nsig_test - pivot=True, nboot=200, nested_res=50') + res1 = smkr.TestRegCoefC(model, [1], pivot=True, nboot=200, nested_res=50) + print('pvalue') + print((res1.t_dist >= res1.test_stat).mean()) + print('test statistic', res1.test_stat) + print('bootstrap critical values') + probs = np.array([0.9, 0.95, 0.975, 0.99]) + bsort1 = np.sort(res1.t_dist) + nrep1 = len(bsort1) + print(bsort1[(probs * nrep1).astype(int)]) + t3 = time.time() + + print('times:', t1-t0, t2-t1, t3-t2) + + +# import matplotlib.pyplot as plt +# fig = plt.figure() +# ax = fig.add_subplot(1,1,1) +# ax.plot(x, y, 'o', alpha=0.5) +# ax.plot(x, y_cens, 'o', alpha=0.5) +# ax.plot(x, y_true, lw=2, label='DGP mean') +# ax.plot(x, sm_mean, lw=2, label='model 0 mean') +# ax.plot(x, mean2, lw=2, label='model 2 mean') +# ax.legend() +# +# plt.show() diff --git a/statsmodels/examples/ex_kernel_semilinear_dgp.py b/statsmodels/examples/ex_kernel_semilinear_dgp.py new file mode 100644 index 0000000..e0d4f09 --- /dev/null +++ b/statsmodels/examples/ex_kernel_semilinear_dgp.py @@ -0,0 +1,126 @@ +# -*- coding: utf-8 -*- +""" + +Created on Sun Jan 06 09:50:54 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function + + +if __name__ == '__main__': + + import numpy as np + import matplotlib.pyplot as plt + #from statsmodels.nonparametric.api import KernelReg + import statsmodels.sandbox.nonparametric.kernel_extras as smke + import statsmodels.sandbox.nonparametric.dgp_examples as dgp + + class UnivariateFunc1a(dgp.UnivariateFunc1): + + def het_scale(self, x): + return 0.5 + + seed = np.random.randint(999999) + #seed = 430973 + #seed = 47829 + seed = 648456 #good seed for het_scale = 0.5 + print(seed) + np.random.seed(seed) + + nobs, k_vars = 300, 3 + x = np.random.uniform(-2, 2, size=(nobs, k_vars)) + xb = x.sum(1) / 3 #beta = [1,1,1] + + k_vars_lin = 2 + x2 = np.random.uniform(-2, 2, size=(nobs, k_vars_lin)) + + funcs = [#dgp.UnivariateFanGijbels1(), + #dgp.UnivariateFanGijbels2(), + #dgp.UnivariateFanGijbels1EU(), + #dgp.UnivariateFanGijbels2(distr_x=stats.uniform(-2, 4)) + UnivariateFunc1a(x=xb) + ] + + res = [] + fig = plt.figure() + for i,func in enumerate(funcs): + #f = func() + f = func + y = f.y + x2.sum(1) + model = smke.SemiLinear(y, x2, x, 'ccc', k_vars_lin) + mean, mfx = model.fit() + ax = fig.add_subplot(1, 1, i+1) + f.plot(ax=ax) + xb_est = np.dot(model.exog, model.b) + sortidx = np.argsort(xb_est) #f.x) + ax.plot(f.x[sortidx], mean[sortidx], 'o', color='r', lw=2, label='est. mean') +# ax.plot(f.x, mean0, color='g', lw=2, label='est. mean') + ax.legend(loc='upper left') + res.append((model, mean, mfx)) + + print('beta', model.b) + print('scale - est', (y - (xb_est+mean)).std()) + print('scale - dgp realised, true', (y - (f.y_true + x2.sum(1))).std(), \ + 2 * f.het_scale(1)) + fittedvalues = xb_est + mean + resid = np.squeeze(model.endog) - fittedvalues + print('corrcoef(fittedvalues, resid)', np.corrcoef(fittedvalues, resid)[0,1]) + print('variance of components, var and as fraction of var(y)') + print('fitted values', fittedvalues.var(), fittedvalues.var() / y.var()) + print('linear ', xb_est.var(), xb_est.var() / y.var()) + print('nonparametric', mean.var(), mean.var() / y.var()) + print('residual ', resid.var(), resid.var() / y.var()) + print('\ncovariance decomposition fraction of var(y)') + print(np.cov(fittedvalues, resid) / model.endog.var(ddof=1)) + print('sum', (np.cov(fittedvalues, resid) / model.endog.var(ddof=1)).sum()) + print('\ncovariance decomposition, xb, m, resid as fraction of var(y)') + print(np.cov(np.column_stack((xb_est, mean, resid)), rowvar=False) / model.endog.var(ddof=1)) + + fig.suptitle('Kernel Regression') + fig.show() + + alpha = 0.7 + fig = plt.figure() + ax = fig.add_subplot(1, 1, 1) + ax.plot(f.x[sortidx], f.y[sortidx], 'o', color='b', lw=2, alpha=alpha, label='observed') + ax.plot(f.x[sortidx], f.y_true[sortidx], 'o', color='g', lw=2, alpha=alpha, label='dgp. mean') + ax.plot(f.x[sortidx], mean[sortidx], 'o', color='r', lw=2, alpha=alpha, label='est. mean') + ax.legend(loc='upper left') + + sortidx = np.argsort(xb_est + mean) + fig = plt.figure() + ax = fig.add_subplot(1, 1, 1) + ax.plot(f.x[sortidx], y[sortidx], 'o', color='b', lw=2, alpha=alpha, label='observed') + ax.plot(f.x[sortidx], f.y_true[sortidx], 'o', color='g', lw=2, alpha=alpha, label='dgp. mean') + ax.plot(f.x[sortidx], (xb_est + mean)[sortidx], 'o', color='r', lw=2, alpha=alpha, label='est. mean') + ax.legend(loc='upper left') + ax.set_title('Semilinear Model - observed and total fitted') + + fig = plt.figure() +# ax = fig.add_subplot(1, 2, 1) +# ax.plot(f.x, f.y, 'o', color='b', lw=2, alpha=alpha, label='observed') +# ax.plot(f.x, f.y_true, 'o', color='g', lw=2, alpha=alpha, label='dgp. mean') +# ax.plot(f.x, mean, 'o', color='r', lw=2, alpha=alpha, label='est. mean') +# ax.legend(loc='upper left') + sortidx0 = np.argsort(xb) + ax = fig.add_subplot(1, 2, 1) + ax.plot(f.y[sortidx0], 'o', color='b', lw=2, alpha=alpha, label='observed') + ax.plot(f.y_true[sortidx0], 'o', color='g', lw=2, alpha=alpha, label='dgp. mean') + ax.plot(mean[sortidx0], 'o', color='r', lw=2, alpha=alpha, label='est. mean') + ax.legend(loc='upper left') + ax.set_title('Single Index Model (sorted by true xb)') + + ax = fig.add_subplot(1, 2, 2) + ax.plot(y - xb_est, 'o', color='b', lw=2, alpha=alpha, label='observed') + ax.plot(f.y_true, 'o', color='g', lw=2, alpha=alpha, label='dgp. mean') + ax.plot(mean, 'o', color='r', lw=2, alpha=alpha, label='est. mean') + ax.legend(loc='upper left') + ax.set_title('Single Index Model (nonparametric)') + + plt.figure() + plt.plot(y, xb_est+mean, '.') + plt.title('observed versus fitted values') + + plt.show() diff --git a/statsmodels/examples/ex_kernel_singleindex_dgp.py b/statsmodels/examples/ex_kernel_singleindex_dgp.py new file mode 100644 index 0000000..f6eb9e3 --- /dev/null +++ b/statsmodels/examples/ex_kernel_singleindex_dgp.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- +""" + +Created on Sun Jan 06 09:50:54 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function + + +if __name__ == '__main__': + + import numpy as np + import matplotlib.pyplot as plt + #from statsmodels.nonparametric.api import KernelReg + import statsmodels.sandbox.nonparametric.kernel_extras as smke + import statsmodels.sandbox.nonparametric.dgp_examples as dgp + + class UnivariateFunc1a(dgp.UnivariateFunc1): + + def het_scale(self, x): + return 0.5 + + seed = np.random.randint(999999) + #seed = 430973 + #seed = 47829 + seed = 648456 #good seed for het_scale = 0.5 + print(seed) + np.random.seed(seed) + + nobs, k_vars = 300, 3 + x = np.random.uniform(-2, 2, size=(nobs, k_vars)) + xb = x.sum(1) / 3 #beta = [1,1,1] + + funcs = [#dgp.UnivariateFanGijbels1(), + #dgp.UnivariateFanGijbels2(), + #dgp.UnivariateFanGijbels1EU(), + #dgp.UnivariateFanGijbels2(distr_x=stats.uniform(-2, 4)) + UnivariateFunc1a(x=xb) + ] + + res = [] + fig = plt.figure() + for i,func in enumerate(funcs): + #f = func() + f = func +# mod0 = smke.SingleIndexModel(endog=[f.y], exog=[xb], #reg_type='ll', +# var_type='c')#, bw='cv_ls') +# mean0, mfx0 = mod0.fit() + model = smke.SingleIndexModel(endog=[f.y], exog=x, #reg_type='ll', + var_type='ccc')#, bw='cv_ls') + mean, mfx = model.fit() + ax = fig.add_subplot(1, 1, i+1) + f.plot(ax=ax) + xb_est = np.dot(model.exog, model.b) + sortidx = np.argsort(xb_est) #f.x) + ax.plot(f.x[sortidx], mean[sortidx], 'o', color='r', lw=2, label='est. mean') +# ax.plot(f.x, mean0, color='g', lw=2, label='est. mean') + ax.legend(loc='upper left') + res.append((model, mean, mfx)) + + fig.suptitle('Kernel Regression') + fig.show() + + alpha = 0.7 + fig = plt.figure() + ax = fig.add_subplot(1, 1, 1) + ax.plot(f.x[sortidx], f.y[sortidx], 'o', color='b', lw=2, alpha=alpha, label='observed') + ax.plot(f.x[sortidx], f.y_true[sortidx], 'o', color='g', lw=2, alpha=alpha, label='dgp. mean') + ax.plot(f.x[sortidx], mean[sortidx], 'o', color='r', lw=2, alpha=alpha, label='est. mean') + ax.legend(loc='upper left') + + fig = plt.figure() +# ax = fig.add_subplot(1, 2, 1) +# ax.plot(f.x, f.y, 'o', color='b', lw=2, alpha=alpha, label='observed') +# ax.plot(f.x, f.y_true, 'o', color='g', lw=2, alpha=alpha, label='dgp. mean') +# ax.plot(f.x, mean, 'o', color='r', lw=2, alpha=alpha, label='est. mean') +# ax.legend(loc='upper left') + sortidx0 = np.argsort(xb) + ax = fig.add_subplot(1, 2, 1) + ax.plot(f.y[sortidx0], 'o', color='b', lw=2, alpha=alpha, label='observed') + ax.plot(f.y_true[sortidx0], 'o', color='g', lw=2, alpha=alpha, label='dgp. mean') + ax.plot(mean[sortidx0], 'o', color='r', lw=2, alpha=alpha, label='est. mean') + ax.legend(loc='upper left') + ax.set_title('Single Index Model (sorted by true xb)') + ax = fig.add_subplot(1, 2, 2) + ax.plot(f.y[sortidx], 'o', color='b', lw=2, alpha=alpha, label='observed') + ax.plot(f.y_true[sortidx], 'o', color='g', lw=2, alpha=alpha, label='dgp. mean') + ax.plot(mean[sortidx], 'o', color='r', lw=2, alpha=alpha, label='est. mean') + ax.legend(loc='upper left') + ax.set_title('Single Index Model (sorted by estimated xb)') + plt.show() diff --git a/statsmodels/examples/ex_kernel_test_functional.py b/statsmodels/examples/ex_kernel_test_functional.py new file mode 100644 index 0000000..b05e0b4 --- /dev/null +++ b/statsmodels/examples/ex_kernel_test_functional.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +""" + +Created on Tue Jan 08 19:03:20 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function + + +if __name__ == '__main__': + + import numpy as np + + from statsmodels.regression.linear_model import OLS + #from statsmodels.nonparametric.api import KernelReg + import statsmodels.sandbox.nonparametric.kernel_extras as smke + + seed = np.random.randint(999999) + #seed = 661176 + print(seed) + np.random.seed(seed) + + sig_e = 0.5 #0.1 + nobs, k_vars = 200, 1 + x = np.random.uniform(-2, 2, size=(nobs, k_vars)) + x.sort() + + order = 3 + exog = x**np.arange(order + 1) + beta = np.array([1, 1, 0.1, 0.0])[:order+1] # 1. / np.arange(1, order + 2) + y_true = np.dot(exog, beta) + y = y_true + sig_e * np.random.normal(size=nobs) + endog = y + + print('DGP') + print('nobs=%d, beta=%r, sig_e=%3.1f' % (nobs, beta, sig_e)) + + mod_ols = OLS(endog, exog[:,:2]) + res_ols = mod_ols.fit() + #'cv_ls'[1000, 0.5][0.01, 0.45] + tst = smke.TestFForm(endog, exog[:,:2], bw=[0.01, 0.45], var_type='cc', + fform=lambda x,p: mod_ols.predict(p,x), + estimator=lambda y,x: OLS(y,x).fit().params, + nboot=1000) + + print('bw', tst.bw) + print('tst.test_stat', tst.test_stat) + print(tst.sig) + print('tst.boots_results mean, min, max', (tst.boots_results.mean(), + tst.boots_results.min(), + tst.boots_results.max())) + print('lower tail bootstrap p-value', (tst.boots_results < tst.test_stat).mean()) + print('upper tail bootstrap p-value', (tst.boots_results >= tst.test_stat).mean()) + from scipy import stats + print('aymp.normal p-value (2-sided)', stats.norm.sf(np.abs(tst.test_stat))*2) + print('aymp.normal p-value (upper)', stats.norm.sf(tst.test_stat)) + + do_plot=True + if do_plot: + import matplotlib.pyplot as plt + plt.figure() + plt.plot(x, y, '.') + plt.plot(x, res_ols.fittedvalues) + plt.title('OLS fit') + + plt.figure() + plt.hist(tst.boots_results.ravel(), bins=20) + plt.title('bootstrap histogram or test statistic') + plt.show() diff --git a/statsmodels/examples/ex_kernel_test_functional_li_wang.py b/statsmodels/examples/ex_kernel_test_functional_li_wang.py new file mode 100644 index 0000000..fab9365 --- /dev/null +++ b/statsmodels/examples/ex_kernel_test_functional_li_wang.py @@ -0,0 +1,141 @@ +# -*- coding: utf-8 -*- +"""Example TestFForm with Li Wang DGP1 + +Created on Tue Jan 08 19:03:20 2013 + +Author: Josef Perktold + + +trying to replicate some examples in +Li, Q., and Suojin Wang. 1998. "A Simple Consistent Bootstrap Test for a + Parametric Regression Function." + Journal of Econometrics 87 (1) (November): 145-165. + doi:10.1016/S0304-4076(98)00011-6. + +currently DGP1 + + + + +Monte Carlo with 100 replications +--------------------------------- +results +598948 +time 11.1642833312 +[-0.72505981 0.26514944 0.45681704] +[ 0.74884796 0.22005569 0.3004892 ] +reject at [0.2, 0.1, 0.05] (row 1: normal, row 2: bootstrap) +[[ 0.55 0.24 0.01] + [ 0.29 0.16 0.06]] +bw [ 0.11492364 0.11492364] +tst.test_stat -1.40274609515 +Not Significant +tst.boots_results min, max -2.03386582198 2.32562183511 +lower tail bootstrap p-value 0.077694235589 +aymp.normal p-value (2-sided) 0.160692566481 + +mean and std in Li and Wang for n=1 are -0.764 and 0.621 +results look reasonable now + +Power +----- +true model: quadratic, estimated model: linear +498198 +time 8.4588166674 +[ 0.50374364 0.3991975 0.25373434] +[ 1.21353172 0.28669981 0.25461368] +reject at [0.2, 0.1, 0.05] (row 1: normal, row 2: bootstrap) +[[ 0.66 0.78 0.82] + [ 0.46 0.61 0.74]] +bw [ 0.11492364 0.11492364] +tst.test_stat 0.505426717024 +Not Significant +tst.boots_results min, max -1.67050998463 3.39835350718 +lower tail bootstrap p-value 0.892230576441 +upper tail bootstrap p-value 0.107769423559 +aymp.normal p-value (2-sided) 0.613259157709 +aymp.normal p-value (upper) 0.306629578855 + + +""" + +from __future__ import print_function + + +if __name__ == '__main__': + + import time + + import numpy as np + from scipy import stats + + from statsmodels.regression.linear_model import OLS + #from statsmodels.nonparametric.api import KernelReg + import statsmodels.sandbox.nonparametric.kernel_extras as smke + + seed = np.random.randint(999999) + #seed = 661176 + print(seed) + np.random.seed(seed) + + sig_e = 0.1 #0.5 #0.1 + nobs, k_vars = 100, 1 + + t0 = time.time() + + b_res = [] + for i in range(100): + x = np.random.uniform(0, 1, size=(nobs, k_vars)) + x.sort(0) + + order = 2 + exog = x**np.arange(1, order + 1) + beta = np.array([2, -0.2])[:order+1-1] # 1. / np.arange(1, order + 2) + y_true = np.dot(exog, beta) + y = y_true + sig_e * np.random.normal(size=nobs) + endog = y + + mod_ols = OLS(endog, exog[:,:1]) + #res_ols = mod_ols.fit() + #'cv_ls'[1000, 0.5] + bw_lw = [1./np.sqrt(12.) * nobs**(-0.2)]*2 #(-1. / 5.) + tst = smke.TestFForm(endog, exog[:,:1], bw=bw_lw, var_type='c', + fform=lambda x,p: mod_ols.predict(p,x), + estimator=lambda y,x: OLS(y,x).fit().params, + nboot=399) + b_res.append([tst.test_stat, + stats.norm.sf(tst.test_stat), + (tst.boots_results > tst.test_stat).mean()]) + t1 = time.time() + b_res = np.asarray(b_res) + + print('time', (t1 - t0) / 60.) + print(b_res.mean(0)) + print(b_res.std(0)) + print('reject at [0.2, 0.1, 0.05] (row 1: normal, row 2: bootstrap)') + print((b_res[:,1:,None] >= [0.2, 0.1, 0.05]).mean(0)) + + print('bw', tst.bw) + print('tst.test_stat', tst.test_stat) + print(tst.sig) + print('tst.boots_results min, max', tst.boots_results.min(), tst.boots_results.max()) + print('lower tail bootstrap p-value', (tst.boots_results < tst.test_stat).mean()) + print('upper tail bootstrap p-value', (tst.boots_results >= tst.test_stat).mean()) + from scipy import stats + print('aymp.normal p-value (2-sided)', stats.norm.sf(np.abs(tst.test_stat))*2) + print('aymp.normal p-value (upper)', stats.norm.sf(tst.test_stat)) + + res_ols = mod_ols.fit() + + do_plot=True + if do_plot: + import matplotlib.pyplot as plt + plt.figure() + plt.plot(x, y, '.') + plt.plot(x, res_ols.fittedvalues) + plt.title('OLS fit') + + plt.figure() + plt.hist(tst.boots_results.ravel(), bins=20) + plt.title('bootstrap histogram or test statistic') + plt.show() diff --git a/statsmodels/examples/ex_lowess.py b/statsmodels/examples/ex_lowess.py new file mode 100644 index 0000000..e49173c --- /dev/null +++ b/statsmodels/examples/ex_lowess.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +""" +Created on Mon Oct 31 15:26:06 2011 + +Author: Chris Jordan Squire + +extracted from test suite by josef-pktd +""" + +from __future__ import print_function +import os + +import numpy as np +import matplotlib.pyplot as plt +import statsmodels.api as sm +import statsmodels.nonparametric.tests.results + +# this is just to check direct import +import statsmodels.nonparametric.smoothers_lowess +statsmodels.nonparametric.smoothers_lowess.lowess + +lowess = sm.nonparametric.lowess + +x = np.arange(20.) + +#standard normal noise +noise = np.array([-0.76741118, -0.30754369, + 0.39950921, -0.46352422, -1.67081778, + 0.6595567 , 0.66367639, -2.04388585, + 0.8123281 , 1.45977518, + 1.21428038, 1.29296866, 0.78028477, + -0.2402853 , -0.21721302, + 0.24549405, 0.25987014, -0.90709034, + -1.45688216, -0.31780505]) +y = x + noise + +expected_lowess = np.array([[ 0. , -0.58337912], + [ 1. , 0.61951246], + [ 2. , 1.82221628], + [ 3. , 3.02536876], + [ 4. , 4.22667951], + [ 5. , 5.42387723], + [ 6. , 6.60834945], + [ 7. , 7.7797691 ], + [ 8. , 8.91824348], + [ 9. , 9.94997506], + [ 10. , 10.89697569], + [ 11. , 11.78746276], + [ 12. , 12.62356492], + [ 13. , 13.41538492], + [ 14. , 14.15745254], + [ 15. , 14.92343948], + [ 16. , 15.70019862], + [ 17. , 16.48167846], + [ 18. , 17.26380699], + [ 19. , 18.0466769 ]]) + +actual_lowess = lowess(y, x) +print(actual_lowess) +print(np.max(np.abs(actual_lowess-expected_lowess))) + +plt.plot(y, 'o') +plt.plot(actual_lowess[:,1]) +plt.plot(expected_lowess[:,1]) + +rpath = os.path.split(statsmodels.nonparametric.tests.results.__file__)[0] +rfile = os.path.join(rpath, 'test_lowess_frac.csv') +test_data = np.genfromtxt(open(rfile, 'rb'), + delimiter = ',', names = True) +expected_lowess_23 = np.array([test_data['x'], test_data['out_2_3']]).T +expected_lowess_15 = np.array([test_data['x'], test_data['out_1_5']]).T + +actual_lowess_23 = lowess(test_data['y'], test_data['x'] ,frac = 2./3) +actual_lowess_15 = lowess(test_data['y'], test_data['x'] ,frac = 1./5) + +#plt.show() diff --git a/statsmodels/examples/ex_misc_tarma.py b/statsmodels/examples/ex_misc_tarma.py new file mode 100644 index 0000000..01bd29d --- /dev/null +++ b/statsmodels/examples/ex_misc_tarma.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +""" + +Created on Wed Jul 03 23:01:44 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function +import numpy as np +import matplotlib.pyplot as plt + +from statsmodels.tsa.arima_process import arma_generate_sample, ArmaProcess +from statsmodels.miscmodels.tmodel import TArma +from statsmodels.tsa.arima_model import ARMA +from statsmodels.tsa.arma_mle import Arma + +nobs = 500 +ar = [1, -0.6, -0.1] +ma = [1, 0.7] +dist = lambda n: np.random.standard_t(3, size=n) +np.random.seed(8659567) +x = arma_generate_sample(ar, ma, nobs, sigma=1, distrvs=dist, + burnin=500) + +mod = TArma(x) +order = (2, 1) +res = mod.fit(order=order) +res2 = mod.fit_mle(order=order, start_params=np.r_[res[0], 5, 1], method='nm') + +print(res[0]) +proc = ArmaProcess.from_coeffs(res[0][:order[0]], res[0][:order[1]]) + +print(ar, ma) +proc.nobs = nobs +# TODO: bug nobs is None, not needed ?, used in ArmaProcess.__repr__ +print(proc.ar, proc.ma) + +print(proc.ar_roots(), proc.ma_roots()) + +modn = Arma(x) +resn = modn.fit_mle(order=order) + +moda = ARMA(x, order=order) +resa = moda.fit( trend='nc') + +print('\nparameter estimates') +print('ls ', res[0]) +print('norm', resn.params) +print('t ', res2.params) +print('A ', resa.params) + +print('\nstandard deviation of parameter estimates') +#print 'ls ', res[0] #TODO: not available yet +print('norm', resn.bse) +print('t ', res2.bse) +print('A ', resa.bse) +print('A/t-1', resa.bse / res2.bse[:3] - 1) + +print('other bse') +print(resn.bsejac) +print(resn.bsejhj) +print(res2.bsejac) +print(res2.bsejhj) + +print(res2.t_test(np.eye(len(res2.params)))) + +# TArma has no fittedvalues and resid +# TODO: check if lag is correct or if fitted `x-resid` is shifted +resid = res2.model.geterrors(res2.params) +fv = res[2]['fvec'] #resid returned from leastsq? + +plt.plot(x, 'o', alpha=0.5) +plt.plot(x-resid) +plt.plot(x-fv) +#plt.show() diff --git a/statsmodels/examples/ex_misc_tmodel.py b/statsmodels/examples/ex_misc_tmodel.py new file mode 100644 index 0000000..4e43b53 --- /dev/null +++ b/statsmodels/examples/ex_misc_tmodel.py @@ -0,0 +1,83 @@ + +from __future__ import print_function +import numpy as np + +from scipy import stats +import statsmodels.api as sm +from statsmodels.miscmodels import TLinearModel +from statsmodels.tools.numdiff import approx_hess + +#Example: +#np.random.seed(98765678) +nobs = 50 +nvars = 6 +df = 3 +rvs = np.random.randn(nobs, nvars-1) +data_exog = sm.add_constant(rvs, prepend=False) +xbeta = 0.9 + 0.1*rvs.sum(1) +data_endog = xbeta + 0.1*np.random.standard_t(df, size=nobs) +print('variance of endog:', data_endog.var()) +print('true parameters:', [0.1]*nvars + [0.9]) + +res_ols = sm.OLS(data_endog, data_exog).fit() +print('\nResults with ols') +print('----------------') +print(res_ols.scale) +print(np.sqrt(res_ols.scale)) +print(res_ols.params) +print(res_ols.bse) +kurt = stats.kurtosis(res_ols.resid) +df_fromkurt = 6./kurt + 4 +print('df_fromkurt from ols residuals', df_fromkurt) +print(stats.t.stats(df_fromkurt, moments='mvsk')) +print(stats.t.stats(df, moments='mvsk')) + +modp = TLinearModel(data_endog, data_exog) +start_value = 0.1*np.ones(data_exog.shape[1]+2) +#start_value = np.zeros(data_exog.shape[1]+2) +#start_value[:nvars] = sm.OLS(data_endog, data_exog).fit().params +start_value[:nvars] = res_ols.params +start_value[-2] = df_fromkurt #10 +start_value[-1] = np.sqrt(res_ols.scale) #0.5 +modp.start_params = start_value + +#adding fixed parameters + +fixdf = np.nan * np.zeros(modp.start_params.shape) +fixdf[-2] = 5 + +fixone = 0 +if fixone: + modp.fixed_params = fixdf + modp.fixed_paramsmask = np.isnan(fixdf) + modp.start_params = modp.start_params[modp.fixed_paramsmask] +else: + modp.fixed_params = None + modp.fixed_paramsmask = None + + +print('\nResults with TLinearModel') +print('-------------------------') +resp = modp.fit(start_params = modp.start_params, disp=1, method='nm', + maxfun=10000, maxiter=5000)#'newton') +#resp = modp.fit(start_params = modp.start_params, disp=1, method='newton') + +print('using Nelder-Mead') +print(resp.params) +print(resp.bse) +resp2 = modp.fit(start_params = resp.params, method='Newton') +print('using Newton') +print(resp2.params) +print(resp2.bse) + + +hb=-approx_hess(modp.start_params, modp.loglike, epsilon=-1e-4) +tmp = modp.loglike(modp.start_params) +print(tmp.shape) +print('eigenvalues of numerical Hessian') +print(np.linalg.eigh(np.linalg.inv(hb))[0]) + +#store_params is only available in original test script +##pp=np.array(store_params) +##print pp.min(0) +##print pp.max(0) diff --git a/statsmodels/examples/ex_multivar_kde.py b/statsmodels/examples/ex_multivar_kde.py new file mode 100644 index 0000000..94007b5 --- /dev/null +++ b/statsmodels/examples/ex_multivar_kde.py @@ -0,0 +1,54 @@ +""" +This example illustrates the nonparametric estimation of a +bivariate bi-modal distribution that is a mixture of two normal +distributions. + +author: George Panterov +""" +from __future__ import print_function +import numpy as np +import matplotlib.pyplot as plt +from matplotlib import cm + +import statsmodels.api as sm + +if __name__ == '__main__': + np.random.seed(123456) + + # generate the data + nobs = 500 + BW = 'cv_ml' + + mu1 = [3, 4] + mu2 = [6, 1] + cov1 = np.asarray([[1, 0.7], [0.7, 1]]) + cov2 = np.asarray([[1, -0.7], [-0.7, 1]]) + + ix = np.random.uniform(size=nobs) > 0.5 + V = np.random.multivariate_normal(mu1, cov1, size=nobs) + V[ix, :] = np.random.multivariate_normal(mu2, cov2, size=nobs)[ix, :] + + x = V[:, 0] + y = V[:, 1] + + dens = sm.nonparametric.KDEMultivariate(data=[x, y], var_type='cc', bw=BW, + defaults=sm.nonparametric.EstimatorSettings(efficient=True)) + + supportx = np.linspace(min(x), max(x), 60) + supporty = np.linspace(min(y), max(y), 60) + X, Y = np.meshgrid(supportx, supporty) + + edat = np.column_stack([X.ravel(), Y.ravel()]) + Z = dens.pdf(edat).reshape(X.shape) + + # plot + fig = plt.figure(1) + ax = fig.gca(projection='3d') + surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet, + linewidth=0, antialiased=False) + + fig.colorbar(surf, shrink=0.5, aspect=5) + plt.figure(2) + plt.imshow(Z) + + plt.show() diff --git a/statsmodels/examples/ex_nearest_corr.py b/statsmodels/examples/ex_nearest_corr.py new file mode 100644 index 0000000..953e347 --- /dev/null +++ b/statsmodels/examples/ex_nearest_corr.py @@ -0,0 +1,100 @@ +# -*- coding: utf-8 -*- +"""Find near positive definite correlation and covariance matrices + +Created on Sun Aug 19 15:25:07 2012 +Author: Josef Perktold + + +TODO: + add examples for cov_nearest from script log + +Notes +----- +We are looking at eigenvalues before and after the conversion to psd matrix. +As distance measure for how close the change in the matrix is, we consider +the sum of squared differences (Frobenious norm without taking the square root) + +""" + +from __future__ import print_function +import numpy as np +from statsmodels.stats.correlation_tools import ( + corr_nearest, corr_clipped) + +examples = ['all'] + +if 'all' in examples: + # x0 is positive definite + x0 = np.array([[1, -0.2, -0.9], [-0.2, 1, -0.2], [-0.9, -0.2, 1]]) + # x has negative eigenvalues, not definite + x = np.array([[1, -0.9, -0.9], [-0.9, 1, -0.9], [-0.9, -0.9, 1]]) + #x = np.array([[1, 0.2, 0.2], [0.2, 1, 0.2], [0.2, 0.2, 1]]) + + n_fact = 2 + + print('evals original', np.linalg.eigvalsh(x)) + y = corr_nearest(x, n_fact=100) + print('evals nearest', np.linalg.eigvalsh(y)) + print(y) + + y = corr_nearest(x, n_fact=100, threshold=1e-16) + print('evals nearest', np.linalg.eigvalsh(y)) + print(y) + + y = corr_clipped(x, threshold=1e-16) + print('evals clipped', np.linalg.eigvalsh(y)) + print(y) + + np.set_printoptions(precision=4) + print('\nMini Monte Carlo') + # we are simulating a uniformly distributed symmetric matrix + # and find close positive definite matrix + # original can be far away from positive definite, + # then original and converted matrices can be far apart in norm + # results are printed for visual inspection of different cases + + k_vars = 5 + diag_idx = np.arange(k_vars) + for ii in range(10): + print() + x = np.random.uniform(-1, 1, size=(k_vars, k_vars)) + x = (x + x.T) * 0.5 + x[diag_idx, diag_idx] = 1 + #x_std = np.sqrt(np.diag(x)) + #x = x / x_std / x_std[:,None] + print() + print(np.sort(np.linalg.eigvals(x)), 'original') + + yn = corr_nearest(x, threshold=1e-12, n_fact=200) + print(np.sort(np.linalg.eigvals(yn)), ((yn - x)**2).sum(), 'nearest') + + yc = corr_clipped(x, threshold=1e-12) + print(np.sort(np.linalg.eigvals(yc)), ((yc - x)**2).sum(), 'clipped') + + import time + t0 = time.time() + for _ in range(100): + corr_nearest(x, threshold=1e-15, n_fact=100) + + t1 = time.time() + for _ in range(1000): + corr_clipped(x, threshold=1e-15) + t2 = time.time() + + print('\ntime (nearest, clipped):', t1 - t0, t2 - t1) + +if 'all' in examples: + # example for test case against R + x2 = np.array([ 1, 0.477, 0.644, 0.478, 0.651, 0.826, + 0.477, 1, 0.516, 0.233, 0.682, 0.75, + 0.644, 0.516, 1, 0.599, 0.581, 0.742, + 0.478, 0.233, 0.599, 1, 0.741, 0.8, + 0.651, 0.682, 0.581, 0.741, 1, 0.798, + 0.826, 0.75, 0.742, 0.8, 0.798, 1]).reshape(6,6) + + y1 = corr_nearest(x2, threshold=1e-15, n_fact=200) + y2 = corr_clipped(x2, threshold=1e-15) + print('\nmatrix 2') + print(np.sort(np.linalg.eigvals(x2)), 'original') + print(np.sort(np.linalg.eigvals(y1)), ((y1 - x2)**2).sum(), 'nearest') + print(np.sort(np.linalg.eigvals(y1)), ((y2 - x2)**2).sum(), 'clipped') diff --git a/statsmodels/examples/ex_ols_robustcov.py b/statsmodels/examples/ex_ols_robustcov.py new file mode 100644 index 0000000..469e54b --- /dev/null +++ b/statsmodels/examples/ex_ols_robustcov.py @@ -0,0 +1,63 @@ + +from __future__ import print_function +import numpy as np +from statsmodels.regression.linear_model import OLS +from statsmodels.tools.tools import add_constant +from statsmodels.datasets import macrodata + + +d2 = macrodata.load(as_pandas=False).data +g_gdp = 400*np.diff(np.log(d2['realgdp'])) +g_inv = 400*np.diff(np.log(d2['realinv'])) +exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1]], prepend=False) +res_olsg = OLS(g_inv, exogg).fit() + + + +print(res_olsg.summary()) +res_hc0 = res_olsg.get_robustcov_results('HC1') +print('\n\n') +print(res_hc0.summary()) +print('\n\n') +res_hac4 = res_olsg.get_robustcov_results('HAC', maxlags=4, use_correction=True) +print(res_hac4.summary()) + + +print('\n\n') +tt = res_hac4.t_test(np.eye(len(res_hac4.params))) +print(tt.summary()) +print('\n\n') +print(tt.summary_frame()) + +res_hac4.use_t = False + +print('\n\n') +tt = res_hac4.t_test(np.eye(len(res_hac4.params))) +print(tt.summary()) +print('\n\n') +print(tt.summary_frame()) + +print(vars(res_hac4.f_test(np.eye(len(res_hac4.params))[:-1]))) + +print(vars(res_hac4.wald_test(np.eye(len(res_hac4.params))[:-1], use_f=True))) +print(vars(res_hac4.wald_test(np.eye(len(res_hac4.params))[:-1], use_f=False))) + +# new cov_type can be set in fit method of model + +mod_olsg = OLS(g_inv, exogg) +res_hac4b = mod_olsg.fit(cov_type='HAC', + cov_kwds=dict(maxlags=4, use_correction=True)) +print(res_hac4b.summary()) + +res_hc1b = mod_olsg.fit(cov_type='HC1') +print(res_hc1b.summary()) + +# force t-distribution +res_hc1c = mod_olsg.fit(cov_type='HC1', cov_kwds={'use_t':True}) +print(res_hc1c.summary()) + +# force t-distribution +decade = (d2['year'][1:] // 10).astype(int) # just make up a group variable +res_clu = mod_olsg.fit(cov_type='cluster', + cov_kwds={'groups':decade, 'use_t':True}) +print(res_clu.summary()) diff --git a/statsmodels/examples/ex_outliers_influence.py b/statsmodels/examples/ex_outliers_influence.py new file mode 100644 index 0000000..91d10a4 --- /dev/null +++ b/statsmodels/examples/ex_outliers_influence.py @@ -0,0 +1,122 @@ + +from __future__ import print_function +import numpy as np + +import statsmodels.stats.outliers_influence as oi + + +if __name__ == '__main__': + + import statsmodels.api as sm + + data = np.array('''\ + 64 57 8 + 71 59 10 + 53 49 6 + 67 62 11 + 55 51 8 + 58 50 7 + 77 55 10 + 57 48 9 + 56 42 10 + 51 42 6 + 76 61 12 + 68 57 9'''.split(), float).reshape(-1,3) + varnames = 'weight height age'.split() + + endog = data[:,0] + exog = sm.add_constant(data[:,2]) + + + res_ols = sm.OLS(endog, exog).fit() + + hh = (res_ols.model.exog * res_ols.model.pinv_wexog.T).sum(1) + x = res_ols.model.exog + hh_check = np.diag(np.dot(x, np.dot(res_ols.model.normalized_cov_params, x.T))) + + from numpy.testing import assert_almost_equal + assert_almost_equal(hh, hh_check, decimal=13) + + res = res_ols #alias + + #http://en.wikipedia.org/wiki/PRESS_statistic + #predicted residuals, leave one out predicted residuals + resid_press = res.resid / (1-hh) + ess_press = np.dot(resid_press, resid_press) + + sigma2_est = np.sqrt(res.mse_resid) #can be replace by different estimators of sigma + sigma_est = np.sqrt(sigma2_est) + resid_studentized = res.resid / sigma_est / np.sqrt(1 - hh) + #http://en.wikipedia.org/wiki/DFFITS: + dffits = resid_studentized * np.sqrt(hh / (1 - hh)) + + nobs, k_vars = res.model.exog.shape + #Belsley, Kuh and Welsch (1980) suggest a threshold for abs(DFFITS) + dffits_threshold = 2 * np.sqrt(k_vars/nobs) + + res_ols.df_modelwc = res_ols.df_model + 1 + n_params = res.model.exog.shape[1] + #http://en.wikipedia.org/wiki/Cook%27s_distance + cooks_d = res.resid**2 / sigma2_est / res_ols.df_modelwc * hh / (1 - hh)**2 + #or + #Eubank p.93, 94 + cooks_d2 = resid_studentized**2 / res_ols.df_modelwc * hh / (1 - hh) + #threshold if normal, also Wikipedia + from scipy import stats + alpha = 0.1 + #df looks wrong + print(stats.f.isf(1-alpha, n_params, res.df_resid)) + print(stats.f.sf(cooks_d, n_params, res.df_resid)) + + + print('Cooks Distance') + print(cooks_d) + print(cooks_d2) + + doplot = 0 + if doplot: + import matplotlib.pyplot as plt + fig = plt.figure() +# ax = fig.add_subplot(3,1,1) +# plt.plot(andrew_results.weights, 'o', label='rlm weights') +# plt.legend(loc='lower left') + ax = fig.add_subplot(3,1,2) + plt.plot(cooks_d, 'o', label="Cook's distance") + plt.legend(loc='upper left') + ax2 = fig.add_subplot(3,1,3) + plt.plot(resid_studentized, 'o', label='studentized_resid') + plt.plot(dffits, 'o', label='DFFITS') + leg = plt.legend(loc='lower left', fancybox=True) + leg.get_frame().set_alpha(0.5) #, fontsize='small') + ltext = leg.get_texts() # all the text.Text instance in the legend + plt.setp(ltext, fontsize='small') # the legend text fontsize + + + print(oi.reset_ramsey(res, degree=3)) + + #note, constant in last column + for i in range(1): + print(oi.variance_inflation_factor(res.model.exog, i)) + + infl = oi.OLSInfluence(res_ols) + print(infl.resid_studentized_external) + print(infl.resid_studentized_internal) + print(infl.summary_table()) + print(oi.summary_table(res, alpha=0.05)[0]) + +''' +>>> res.resid +array([ 4.28571429, 4. , 0.57142857, -3.64285714, + -4.71428571, 1.92857143, 10. , -6.35714286, + -11. , -1.42857143, 1.71428571, 4.64285714]) +>>> infl.hat_matrix_diag +array([ 0.10084034, 0.11764706, 0.28571429, 0.20168067, 0.10084034, + 0.16806723, 0.11764706, 0.08403361, 0.11764706, 0.28571429, + 0.33613445, 0.08403361]) +>>> infl.resid_press +array([ 4.76635514, 4.53333333, 0.8 , -4.56315789, + -5.24299065, 2.31818182, 11.33333333, -6.94036697, + -12.46666667, -2. , 2.58227848, 5.06880734]) +>>> infl.ess_press +465.98646628086374 +''' diff --git a/statsmodels/examples/ex_pairwise.py b/statsmodels/examples/ex_pairwise.py new file mode 100644 index 0000000..1bb5cb8 --- /dev/null +++ b/statsmodels/examples/ex_pairwise.py @@ -0,0 +1,204 @@ +# -*- coding: utf-8 -*- +""" + +Created on Sun Mar 24 10:26:39 2013 + +Author: Josef Perktold +""" + + +from __future__ import print_function +from statsmodels.compat.python import BytesIO, asbytes, StringIO +import numpy as np +from numpy.testing import assert_almost_equal, assert_equal + + +ss = '''\ + 43.9 1 1 + 39.0 1 2 + 46.7 1 3 + 43.8 1 4 + 44.2 1 5 + 47.7 1 6 + 43.6 1 7 + 38.9 1 8 + 43.6 1 9 + 40.0 1 10 + 89.8 2 1 + 87.1 2 2 + 92.7 2 3 + 90.6 2 4 + 87.7 2 5 + 92.4 2 6 + 86.1 2 7 + 88.1 2 8 + 90.8 2 9 + 89.1 2 10 + 68.4 3 1 + 69.3 3 2 + 68.5 3 3 + 66.4 3 4 + 70.0 3 5 + 68.1 3 6 + 70.6 3 7 + 65.2 3 8 + 63.8 3 9 + 69.2 3 10 + 36.2 4 1 + 45.2 4 2 + 40.7 4 3 + 40.5 4 4 + 39.3 4 5 + 40.3 4 6 + 43.2 4 7 + 38.7 4 8 + 40.9 4 9 + 39.7 4 10''' + +#idx Treatment StressReduction +ss2 = '''\ +1 mental 2 +2 mental 2 +3 mental 3 +4 mental 4 +5 mental 4 +6 mental 5 +7 mental 3 +8 mental 4 +9 mental 4 +10 mental 4 +11 physical 4 +12 physical 4 +13 physical 3 +14 physical 5 +15 physical 4 +16 physical 1 +17 physical 1 +18 physical 2 +19 physical 3 +20 physical 3 +21 medical 1 +22 medical 2 +23 medical 2 +24 medical 2 +25 medical 3 +26 medical 2 +27 medical 3 +28 medical 1 +29 medical 3 +30 medical 1''' + +ss3 = '''\ +1 24.5 +1 23.5 +1 26.4 +1 27.1 +1 29.9 +2 28.4 +2 34.2 +2 29.5 +2 32.2 +2 30.1 +3 26.1 +3 28.3 +3 24.3 +3 26.2 +3 27.8''' + +ss5 = '''\ +2 - 3 4.340 0.691 7.989 *** +2 - 1 4.600 0.951 8.249 *** +3 - 2 -4.340 -7.989 -0.691 *** +3 - 1 0.260 -3.389 3.909 - +1 - 2 -4.600 -8.249 -0.951 *** +1 - 3 -0.260 -3.909 3.389 ''' + +#accommodate recfromtxt for python 3.2, requires bytes +ss = asbytes(ss) +ss2 = asbytes(ss2) +ss3 = asbytes(ss3) +ss5 = asbytes(ss5) + +dta = np.recfromtxt(BytesIO(ss), names=("Rust","Brand","Replication")) +dta2 = np.recfromtxt(BytesIO(ss2), names = ("idx", "Treatment", "StressReduction")) +dta3 = np.recfromtxt(BytesIO(ss3), names = ("Brand", "Relief")) +dta5 = np.recfromtxt(BytesIO(ss5), names = ('pair', 'mean', 'lower', 'upper', 'sig'), delimiter='\t') +sas_ = dta5[[1,3,2]] + + +if __name__ == '__main__': + import statsmodels.stats.multicomp as multi #incomplete refactoring + + mc = multi.MultiComparison(dta['Rust'], dta['Brand']) + res = mc.tukeyhsd() + print(res[0]) + + mc2 = multi.MultiComparison(dta2['StressReduction'], dta2['Treatment']) + res2 = mc2.tukeyhsd() + print(res2[0]) + + mc2s = multi.MultiComparison(dta2['StressReduction'][3:29], dta2['Treatment'][3:29]) + res2s = mc2s.tukeyhsd() + print(res2s[0]) + res2s_001 = mc2s.tukeyhsd(alpha=0.01) + #R result + tukeyhsd2s = np.array([1.888889,0.8888889,-1,0.2658549,-0.5908785,-2.587133,3.511923,2.368656,0.5871331,0.002837638,0.150456,0.1266072]).reshape(3,4, order='F') + assert_almost_equal(res2s_001[1][4], tukeyhsd2s[:,1:3], decimal=3) + + mc3 = multi.MultiComparison(dta3['Relief'], dta3['Brand']) + res3 = mc3.tukeyhsd() + print(res3[0]) + +# for mci in [mc, mc2, mc3]: +# get_thsd(mci) + + from scipy import stats + print(mc2.allpairtest(stats.ttest_ind, method='b')[0]) + + '''same as SAS: + >>> np.var(mci.groupstats.groupdemean(), ddof=3) + 4.6773333333333351 + >>> var_ = np.var(mci.groupstats.groupdemean(), ddof=3) + >>> tukeyhsd(means, nobs, var_, df=None, alpha=0.05, q_crit=qsturng(0.95, 3, 12))[4] + array([[ 0.95263648, 8.24736352], + [-3.38736352, 3.90736352], + [-7.98736352, -0.69263648]]) + >>> tukeyhsd(means, nobs, var_, df=None, alpha=0.05, q_crit=3.77278)[4] + array([[ 0.95098508, 8.24901492], + [-3.38901492, 3.90901492], + [-7.98901492, -0.69098508]]) + ''' + + ss5 = '''\ + Comparisons significant at the 0.05 level are indicated by ***. + BRAND + Comparison Difference + Between + Means Simultaneous 95% Confidence Limits Sign. + 2 - 3 4.340 0.691 7.989 *** + 2 - 1 4.600 0.951 8.249 *** + 3 - 2 -4.340 -7.989 -0.691 *** + 3 - 1 0.260 -3.389 3.909 - + 1 - 2 -4.600 -8.249 -0.951 *** + 1 - 3 -0.260 -3.909 3.389 ''' + + ss5 = '''\ + 2 - 3 4.340 0.691 7.989 *** + 2 - 1 4.600 0.951 8.249 *** + 3 - 2 -4.340 -7.989 -0.691 *** + 3 - 1 0.260 -3.389 3.909 - + 1 - 2 -4.600 -8.249 -0.951 *** + 1 - 3 -0.260 -3.909 3.389 ''' + + dta5 = np.recfromtxt(StringIO(ss5), names = ('pair', 'mean', 'lower', 'upper', 'sig'), delimiter='\t') + + sas_ = dta5[[1,3,2]] + confint1 = res3[1][4] + confint2 = sas_[['lower','upper']].view(float).reshape((3,2)) + assert_almost_equal(confint1, confint2, decimal=2) + reject1 = res3[1][1] + reject2 = sas_['sig'] == '***' + assert_equal(reject1, reject2) + meandiff1 = res3[1][2] + meandiff2 = sas_['mean'] + assert_almost_equal(meandiff1, meandiff2, decimal=14) diff --git a/statsmodels/examples/ex_pandas.py b/statsmodels/examples/ex_pandas.py new file mode 100644 index 0000000..c3468fb --- /dev/null +++ b/statsmodels/examples/ex_pandas.py @@ -0,0 +1,134 @@ +# -*- coding: utf-8 -*- +"""Examples using Pandas + +""" + + +from __future__ import print_function +from statsmodels.compat.pandas import frequencies +from statsmodels.compat.python import zip +from datetime import datetime + +import numpy as np +import matplotlib.pyplot as plt +import matplotlib as mpl + +from pandas import DataFrame, Series + +import statsmodels.api as sm +import statsmodels.tsa.api as tsa +from statsmodels.tsa.arima_process import arma_generate_sample + + +data = sm.datasets.stackloss.load(as_pandas=False) +X = DataFrame(data.exog, columns=data.exog_name) +X['intercept'] = 1. +Y = Series(data.endog) + +#Example: OLS +model = sm.OLS(Y, X) +results = model.fit() +print(results.summary()) + +print(results.params) +print(results.cov_params()) + +infl = results.get_influence() +print(infl.summary_table()) + +#raise + +#Example RLM +huber_t = sm.RLM(Y, X, M=sm.robust.norms.HuberT()) +hub_results = huber_t.fit() +print(hub_results.params) +print(hub_results.bcov_scaled) +print(hub_results.summary()) + + +def plot_acf_multiple(ys, lags=20): + """ + + """ + from statsmodels.tsa.stattools import acf + # hack + old_size = mpl.rcParams['font.size'] + mpl.rcParams['font.size'] = 8 + + plt.figure(figsize=(10, 10)) + xs = np.arange(lags + 1) + + acorr = np.apply_along_axis(lambda x: acf(x, nlags=lags), 0, ys) + + k = acorr.shape[1] + for i in range(k): + ax = plt.subplot(k, 1, i + 1) + ax.vlines(xs, [0], acorr[:, i]) + + ax.axhline(0, color='k') + ax.set_ylim([-1, 1]) + + # hack? + ax.set_xlim([-1, xs[-1] + 1]) + + mpl.rcParams['font.size'] = old_size + +#Example TSA descriptive + +data = sm.datasets.macrodata.load(as_pandas=False) +mdata = data.data +df = DataFrame.from_records(mdata) +quarter_end = frequencies.BQuarterEnd() +df.index = [quarter_end.rollforward(datetime(int(y), int(q) * 3, 1)) +for y, q in zip(df.pop('year'), df.pop('quarter'))] +logged = np.log(df.loc[:, ['m1', 'realgdp', 'cpi']]) +logged.plot(subplots=True) + +log_difference = logged.diff().dropna() +plot_acf_multiple(log_difference.values) + +#Example TSA VAR + +model = tsa.VAR(log_difference, freq='BQ') +print(model.select_order()) + +res = model.fit(2) +print(res.summary()) +print(res.is_stable()) + +irf = res.irf(20) +irf.plot() + +fevd = res.fevd() +fevd.plot() + +print(res.test_whiteness()) +print(res.test_causality('m1', 'realgdp')) +print(res.test_normality()) + + +#Example TSA ARMA + + +# Generate some data from an ARMA process +arparams = np.array([.75, -.25]) +maparams = np.array([.65, .35]) +# The conventions of the arma_generate function require that we specify a +# 1 for the zero-lag of the AR and MA parameters and that the AR parameters +# be negated. +arparams = np.r_[1, -arparams] +maparam = np.r_[1, maparams] +nobs = 250 +y = arma_generate_sample(arparams, maparams, nobs) +plt.figure() +plt.plot(y) + +# Now, optionally, we can add some dates information. For this example, +# we'll use a pandas time series. +dates = sm.tsa.datetools.dates_from_range('1980m1', length=nobs) +y = Series(y, index=dates) +arma_mod = sm.tsa.ARMA(y, order=(2, 2), freq='M') +arma_res = arma_mod.fit(trend='nc', disp=-1) +print(arma_res.params) + +plt.show() diff --git a/statsmodels/examples/ex_pareto_plot.py b/statsmodels/examples/ex_pareto_plot.py new file mode 100644 index 0000000..24f4682 --- /dev/null +++ b/statsmodels/examples/ex_pareto_plot.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +""" +Created on Sun Aug 01 19:20:16 2010 + +Author: josef-pktd +""" + + +from __future__ import print_function +import numpy as np +from scipy import stats +import matplotlib.pyplot as plt + +nobs = 1000 +r = stats.pareto.rvs(1, size=nobs) + +#rhisto = np.histogram(r, bins=20) +rhisto, e = np.histogram(np.clip(r, 0 , 1000), bins=50) +plt.figure() +plt.loglog(e[:-1]+np.diff(e)/2, rhisto, '-o') +plt.figure() +plt.loglog(e[:-1]+np.diff(e)/2, nobs-rhisto.cumsum(), '-o') +##plt.figure() +##plt.plot(e[:-1]+np.diff(e)/2, rhisto.cumsum(), '-o') +##plt.figure() +##plt.semilogx(e[:-1]+np.diff(e)/2, nobs-rhisto.cumsum(), '-o') + +rsind = np.argsort(r) +rs = r[rsind] +rsf = nobs-rsind.argsort() +plt.figure() +plt.loglog(rs, nobs-np.arange(nobs), '-o') +print(stats.linregress(np.log(rs), np.log(nobs-np.arange(nobs)))) + +plt.show() diff --git a/statsmodels/examples/ex_predict_results.py b/statsmodels/examples/ex_predict_results.py new file mode 100644 index 0000000..45f396a --- /dev/null +++ b/statsmodels/examples/ex_predict_results.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +""" +Created on Sat Dec 20 12:01:13 2014 + +Author: Josef Perktold +License: BSD-3 + +""" + +import numpy as np +from numpy.testing import assert_allclose +from statsmodels.regression.linear_model import WLS + +from statsmodels.tools.tools import add_constant +from statsmodels.sandbox.regression.predstd import wls_prediction_std +from statsmodels.regression._prediction import get_prediction +from statsmodels.genmod._prediction import params_transform_univariate +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod.families import links + + +# from example wls.py + +nsample = 50 +x = np.linspace(0, 20, nsample) +X = np.column_stack((x, (x - 5)**2)) +X = add_constant(X) +beta = [5., 0.5, -0.01] +sig = 0.5 +w = np.ones(nsample) +w[nsample * 6/10:] = 3 +y_true = np.dot(X, beta) +e = np.random.normal(size=nsample) +y = y_true + sig * w * e +X = X[:,[0,1]] + + +# ### WLS knowing the true variance ratio of heteroscedasticity + +mod_wls = WLS(y, X, weights=1./w) +res_wls = mod_wls.fit() + + + +prstd, iv_l, iv_u = wls_prediction_std(res_wls) +pred_res = get_prediction(res_wls) +ci = pred_res.conf_int(obs=True) + +assert_allclose(pred_res.se_obs, prstd, rtol=1e-13) +assert_allclose(ci, np.column_stack((iv_l, iv_u)), rtol=1e-13) + +print(pred_res.summary_frame().head()) + +pred_res2 = res_wls.get_prediction() +ci2 = pred_res2.conf_int(obs=True) + +assert_allclose(pred_res2.se_obs, prstd, rtol=1e-13) +assert_allclose(ci2, np.column_stack((iv_l, iv_u)), rtol=1e-13) + +print(pred_res2.summary_frame().head()) + +res_wls_n = mod_wls.fit(use_t=False) +pred_wls_n = res_wls_n.get_prediction() +print(pred_wls_n.summary_frame().head()) + + +w_sqrt = np.sqrt(w) +mod_glm = GLM(y/w_sqrt, X/w_sqrt[:,None]) +res_glm = mod_glm.fit() +pred_glm = res_glm.get_prediction() +print(pred_glm.summary_frame().head()) + +res_glm_t = mod_glm.fit(use_t=True) +pred_glm_t = res_glm_t.get_prediction() +print(pred_glm_t.summary_frame().head()) + +rates = params_transform_univariate(res_glm.params, res_glm.cov_params()) +print('\nRates exp(params)') +print(rates.summary_frame()) + +rates2 = np.column_stack((np.exp(res_glm.params), + res_glm.bse * np.exp(res_glm.params), + np.exp(res_glm.conf_int()))) +assert_allclose(rates.summary_frame().values, rates2, rtol=1e-13) + + +# with identity transform +pt = params_transform_univariate(res_glm.params, res_glm.cov_params(), link=links.identity()) +print(pt.tvalues) + +assert_allclose(pt.tvalues, res_glm.tvalues, rtol=1e-13) +assert_allclose(pt.se_mean, res_glm.bse, rtol=1e-13) +ptt = pt.t_test() +assert_allclose(ptt[0], res_glm.tvalues, rtol=1e-13) +assert_allclose(ptt[1], res_glm.pvalues, rtol=1e-13) diff --git a/statsmodels/examples/ex_proportion.py b/statsmodels/examples/ex_proportion.py new file mode 100644 index 0000000..3532e48 --- /dev/null +++ b/statsmodels/examples/ex_proportion.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +""" + +Created on Sun Apr 21 07:59:26 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function +from statsmodels.compat.python import lmap +import numpy as np +import matplotlib.pyplot as plt + +import statsmodels.stats.proportion as sms +import statsmodels.stats.weightstats as smw + +from numpy.testing import assert_almost_equal + + +# Region, Eyes, Hair, Count +ss = '''\ +1 blue fair 23 1 blue red 7 1 blue medium 24 +1 blue dark 11 1 green fair 19 1 green red 7 +1 green medium 18 1 green dark 14 1 brown fair 34 +1 brown red 5 1 brown medium 41 1 brown dark 40 +1 brown black 3 2 blue fair 46 2 blue red 21 +2 blue medium 44 2 blue dark 40 2 blue black 6 +2 green fair 50 2 green red 31 2 green medium 37 +2 green dark 23 2 brown fair 56 2 brown red 42 +2 brown medium 53 2 brown dark 54 2 brown black 13''' + +dta0 = np.array(ss.split()).reshape(-1,4) +dta = np.array(lmap(tuple, dta0.tolist()), dtype=[('Region', int), ('Eyes', 'S6'), ('Hair', 'S6'), ('Count', int)]) + +xfair = np.repeat([1,0], [228, 762-228]) + +# comparing to SAS last output at +# http://support.sas.com/documentation/cdl/en/procstat/63104/HTML/default/viewer.htm#procstat_freq_sect028.htm +# confidence interval for tost +ci01 = smw.confint_ztest(xfair, alpha=0.1) +assert_almost_equal(ci01, [0.2719, 0.3265], 4) +res = smw.ztost(xfair, 0.18, 0.38) + +assert_almost_equal(res[1][0], 7.1865, 4) +assert_almost_equal(res[2][0], -4.8701, 4) + +nn = np.arange(200, 351) +pow_z = sms.power_ztost_prop(0.5, 0.72, nn, 0.6, alpha=0.05) +pow_bin = sms.power_ztost_prop(0.5, 0.72, nn, 0.6, alpha=0.05, dist='binom') +plt.plot(nn, pow_z[0], label='normal') +plt.plot(nn, pow_bin[0], label='binomial') +plt.legend(loc='lower right') +plt.title('Proportion Equivalence Test: Power as function of sample size') +plt.xlabel('Number of Observations') +plt.ylabel('Power') + +plt.show() diff --git a/statsmodels/examples/ex_regressionplots.py b/statsmodels/examples/ex_regressionplots.py new file mode 100644 index 0000000..a480fb4 --- /dev/null +++ b/statsmodels/examples/ex_regressionplots.py @@ -0,0 +1,142 @@ +# -*- coding: utf-8 -*- +"""Examples for Regression Plots + +Author: Josef Perktold + +""" + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm +import matplotlib.pyplot as plt + +from statsmodels.sandbox.regression.predstd import wls_prediction_std +import statsmodels.graphics.regressionplots as smrp +from statsmodels.graphics.tests.test_regressionplots import TestPlot + +#example from tut.ols with changes +#fix a seed for these examples +np.random.seed(9876789) + +# OLS non-linear curve but linear in parameters +# --------------------------------------------- + +nsample = 100 +sig = 0.5 +x1 = np.linspace(0, 20, nsample) +x2 = 5 + 3* np.random.randn(nsample) +X = np.c_[x1, x2, np.sin(0.5*x1), (x2-5)**2, np.ones(nsample)] +beta = [0.5, 0.5, 1, -0.04, 5.] +y_true = np.dot(X, beta) +y = y_true + sig * np.random.normal(size=nsample) + +#estimate only linear function, misspecified because of non-linear terms +exog0 = sm.add_constant(np.c_[x1, x2], prepend=False) + +# plt.figure() +# plt.plot(x1, y, 'o', x1, y_true, 'b-') + +res = sm.OLS(y, exog0).fit() +#print res.params +#print res.bse + + +plot_old = 0 #True +if plot_old: + + #current bug predict requires call to model.results + #print res.model.predict + prstd, iv_l, iv_u = wls_prediction_std(res) + plt.plot(x1, res.fittedvalues, 'r-o') + plt.plot(x1, iv_u, 'r--') + plt.plot(x1, iv_l, 'r--') + plt.title('blue: true, red: OLS') + + plt.figure() + plt.plot(res.resid, 'o') + plt.title('Residuals') + + fig2 = plt.figure() + ax = fig2.add_subplot(2,1,1) + #namestr = ' for %s' % self.name if self.name else '' + plt.plot(x1, res.resid, 'o') + ax.set_title('residuals versus exog')# + namestr) + ax = fig2.add_subplot(2,1,2) + plt.plot(x2, res.resid, 'o') + + fig3 = plt.figure() + ax = fig3.add_subplot(2,1,1) + #namestr = ' for %s' % self.name if self.name else '' + plt.plot(x1, res.fittedvalues, 'o') + ax.set_title('Fitted values versus exog')# + namestr) + ax = fig3.add_subplot(2,1,2) + plt.plot(x2, res.fittedvalues, 'o') + + fig4 = plt.figure() + ax = fig4.add_subplot(2,1,1) + #namestr = ' for %s' % self.name if self.name else '' + plt.plot(x1, res.fittedvalues + res.resid, 'o') + ax.set_title('Fitted values plus residuals versus exog')# + namestr) + ax = fig4.add_subplot(2,1,2) + plt.plot(x2, res.fittedvalues + res.resid, 'o') + + # see http://www.itl.nist.gov/div898/software/dataplot/refman1/auxillar/partregr.htm + fig5 = plt.figure() + ax = fig5.add_subplot(2,1,1) + #namestr = ' for %s' % self.name if self.name else '' + res1a = sm.OLS(y, exog0[:,[0,2]]).fit() + res1b = sm.OLS(x1, exog0[:,[0,2]]).fit() + plt.plot(res1b.resid, res1a.resid, 'o') + res1c = sm.OLS(res1a.resid, res1b.resid).fit() + plt.plot(res1b.resid, res1c.fittedvalues, '-') + ax.set_title('Partial Regression plot')# + namestr) + ax = fig5.add_subplot(2,1,2) + #plt.plot(x2, res.fittedvalues + res.resid, 'o') + res2a = sm.OLS(y, exog0[:,[0,1]]).fit() + res2b = sm.OLS(x2, exog0[:,[0,1]]).fit() + plt.plot(res2b.resid, res2a.resid, 'o') + res2c = sm.OLS(res2a.resid, res2b.resid).fit() + plt.plot(res2b.resid, res2c.fittedvalues, '-') + + # see http://www.itl.nist.gov/div898/software/dataplot/refman1/auxillar/ccpr.htm + fig6 = plt.figure() + ax = fig6.add_subplot(2,1,1) + #namestr = ' for %s' % self.name if self.name else '' + x1beta = x1*res.params[1] + x2beta = x2*res.params[2] + plt.plot(x1, x1beta + res.resid, 'o') + plt.plot(x1, x1beta, '-') + ax.set_title('X_i beta_i plus residuals versus exog (CCPR)')# + namestr) + ax = fig6.add_subplot(2,1,2) + plt.plot(x2, x2beta + res.resid, 'o') + plt.plot(x2, x2beta, '-') + + + #print res.summary() + +doplots = 1 +if doplots: + fig1 = smrp.plot_fit(res, 0, y_true=None) + smrp.plot_fit(res, 1, y_true=None) + smrp.plot_partregress_grid(res, exog_idx=[0,1]) + smrp.plot_regress_exog(res, exog_idx=0) + smrp.plot_ccpr(res, exog_idx=0) + smrp.plot_ccpr_grid(res, exog_idx=[0,1]) + +tp = TestPlot() +tp.test_plot_fit() + +fig1 = smrp.plot_partregress_grid(res, exog_idx=[0,1]) +#add lowess +ax = fig1.axes[0] +y0 = ax.get_lines()[0]._y +x0 = ax.get_lines()[0]._x +lres = sm.nonparametric.lowess(y0, x0, frac=0.2) +ax.plot(lres[:,0], lres[:,1], 'r', lw=1.5) +ax = fig1.axes[1] +y0 = ax.get_lines()[0]._y +x0 = ax.get_lines()[0]._x +lres = sm.nonparametric.lowess(y0, x0, frac=0.2) +ax.plot(lres[:,0], lres[:,1], 'r', lw=1.5) + +#plt.show() diff --git a/statsmodels/examples/ex_rootfinding.py b/statsmodels/examples/ex_rootfinding.py new file mode 100644 index 0000000..c1a662e --- /dev/null +++ b/statsmodels/examples/ex_rootfinding.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- +""" + +Created on Sat Mar 23 13:35:51 2013 + +Author: Josef Perktold +""" +from __future__ import print_function +import numpy as np +from statsmodels.tools.rootfinding import brentq_expanding + + +# Warning: module.global, changing this will affect everyone +#import statsmodels.tools.rootfinding as smroots +#smroots.DEBUG = True + +DEBUG = False #True + + + +def func(x, a): + f = (x - a)**3 + if DEBUG: print('evaluating at %g, fval = %f' % (x, f)) + return f + +def func_nan(x, a, b): + x = np.atleast_1d(x) + f = (x - 1.*a)**3 + f[x < b] = np.nan + if DEBUG: print('evaluating at %f, fval = %f' % (x, f)) + return f + + + +def funcn(x, a): + f = -(x - a)**3 + if DEBUG: print('evaluating at %g, fval = %g' % (x, f)) + return f + +def func2(x, a): + f = (x - a)**3 + print('evaluating at %g, fval = %f' % (x, f)) + return f + +if __name__ == '__main__': + run_all = False + if run_all: + print(brentq_expanding(func, args=(0,), increasing=True)) + + print(brentq_expanding(funcn, args=(0,), increasing=False)) + print(brentq_expanding(funcn, args=(-50,), increasing=False)) + + print(brentq_expanding(func, args=(20,))) + print(brentq_expanding(funcn, args=(20,))) + print(brentq_expanding(func, args=(500000,))) + + # one bound + print(brentq_expanding(func, args=(500000,), low=10000)) + print(brentq_expanding(func, args=(-50000,), upp=-1000)) + + print(brentq_expanding(funcn, args=(500000,), low=10000)) + print(brentq_expanding(funcn, args=(-50000,), upp=-1000)) + + # both bounds + # hits maxiter in brentq if bounds too wide + print(brentq_expanding(func, args=(500000,), low=300000, upp=700000)) + print(brentq_expanding(func, args=(-50000,), low= -70000, upp=-1000)) + print(brentq_expanding(funcn, args=(500000,), low=300000, upp=700000)) + print(brentq_expanding(funcn, args=(-50000,), low= -70000, upp=-10000)) + + print(brentq_expanding(func, args=(1.234e30,), xtol=1e10, + increasing=True, maxiter_bq=200)) + + + print(brentq_expanding(func, args=(-50000,), start_low=-10000)) + try: + print(brentq_expanding(func, args=(-500,), start_upp=-100)) + except ValueError: + print('raised ValueError start_upp needs to be positive') + + ''' it still works + raise ValueError('start_upp needs to be positive') + -499.999996336 + ''' + ''' this doesn't work + >>> print(brentq_expanding(func, args=(-500,), start_upp=-1000) + raise ValueError('start_upp needs to be positive') + OverflowError: (34, 'Result too large') + ''' + + try: + print(brentq_expanding(funcn, args=(-50000,), low= -40000, upp=-10000)) + except Exception as e: + print(e) + + val, info = brentq_expanding(func, args=(500,), full_output=True) + print(val) + print(vars(info)) + + # + print(brentq_expanding(func_nan, args=(20,0), increasing=True)) + print(brentq_expanding(func_nan, args=(20,0))) + # In the next point 0 is minumum, below is nan + print(brentq_expanding(func_nan, args=(-20,0), increasing=True)) + print(brentq_expanding(func_nan, args=(-20,0))) diff --git a/statsmodels/examples/ex_sandwich.py b/statsmodels/examples/ex_sandwich.py new file mode 100644 index 0000000..711ba1a --- /dev/null +++ b/statsmodels/examples/ex_sandwich.py @@ -0,0 +1,79 @@ +# -*- coding: utf-8 -*- +"""examples for sandwich estimators of covariance + +Author: Josef Perktold + +""" +from statsmodels.compat.python import lzip +import numpy as np +from numpy.testing import assert_almost_equal + +import statsmodels.api as sm + +import statsmodels.stats.sandwich_covariance as sw + + +nobs = 100 +kvars = 4 #including constant +x = np.random.randn(nobs, kvars-1) +exog = sm.add_constant(x) +params_true = np.ones(kvars) +y_true = np.dot(exog, params_true) +sigma = 0.1 + np.exp(exog[:,-1]) +endog = y_true + sigma * np.random.randn(nobs) + +self = sm.OLS(endog, exog).fit() + +print(self.HC3_se) +print(sw.se_cov(sw.cov_hc3(self))) +#test standalone refactoring +assert_almost_equal(sw.se_cov(sw.cov_hc0(self)), self.HC0_se, 15) +assert_almost_equal(sw.se_cov(sw.cov_hc1(self)), self.HC1_se, 15) +assert_almost_equal(sw.se_cov(sw.cov_hc2(self)), self.HC2_se, 15) +assert_almost_equal(sw.se_cov(sw.cov_hc3(self)), self.HC3_se, 15) +print(self.HC0_se) +print(sw.se_cov(sw.cov_hac_simple(self, nlags=0, use_correction=False))) +#test White as HAC with nlags=0, same as nlags=1 ? +bse_hac0 = sw.se_cov(sw.cov_hac_simple(self, nlags=0, use_correction=False)) +assert_almost_equal(bse_hac0, self.HC0_se, 15) +print(bse_hac0) +#test White as HAC with nlags=0, same as nlags=1 ? +bse_hac0c = sw.se_cov(sw.cov_hac_simple(self, nlags=0, use_correction=True)) +assert_almost_equal(bse_hac0c, self.HC1_se, 15) + +bse_w = sw.se_cov(sw.cov_white_simple(self, use_correction=False)) +print(bse_w) +#test White +assert_almost_equal(bse_w, self.HC0_se, 15) + +bse_wc = sw.se_cov(sw.cov_white_simple(self, use_correction=True)) +print(bse_wc) +#test White +assert_almost_equal(bse_wc, self.HC1_se, 15) + + +groups = np.repeat(np.arange(5), 20) + +idx = np.nonzero(np.diff(groups))[0].tolist() +groupidx = lzip([0]+idx, idx+[len(groups)]) +ngroups = len(groupidx) + +print(sw.se_cov(sw.cov_cluster(self, groups))) +#two strange looking corner cases BUG? +print(sw.se_cov(sw.cov_cluster(self, np.ones(len(endog), int), use_correction=False))) +print(sw.se_cov(sw.cov_crosssection_0(self, np.arange(len(endog))))) +#these results are close to simple (no group) white, 50 groups 2 obs each +groups = np.repeat(np.arange(50), 100//50) +print(sw.se_cov(sw.cov_cluster(self, groups))) +#2 groups with 50 obs each, what was the interpretation again? +groups = np.repeat(np.arange(2), 100//2) +print(sw.se_cov(sw.cov_cluster(self, groups))) + +"http://www.kellogg.northwestern.edu/faculty/petersen/htm/papers/se/test_data.txt" +''' +test <- read.table( + url(paste("http://www.kellogg.northwestern.edu/", + "faculty/petersen/htm/papers/se/", + "test_data.txt",sep="")), + col.names=c("firmid", "year", "x", "y")) +''' diff --git a/statsmodels/examples/ex_sandwich2.py b/statsmodels/examples/ex_sandwich2.py new file mode 100644 index 0000000..2405a5e --- /dev/null +++ b/statsmodels/examples/ex_sandwich2.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +"""Cluster robust standard errors for OLS + +Created on Fri Dec 16 12:52:13 2011 +Author: Josef Perktold +""" + +from statsmodels.compat.python import urlretrieve +import numpy as np +from numpy.testing import assert_almost_equal + +import statsmodels.api as sm +import statsmodels.stats.sandwich_covariance as sw + +#http://www.ats.ucla.edu/stat/stata/seminars/svy_stata_intro/srs.dta + +import statsmodels.iolib.foreign as dta + +try: + srs = dta.genfromdta("srs.dta") + print('using local file') +except IOError: + urlretrieve('http://www.ats.ucla.edu/stat/stata/seminars/svy_stata_intro/srs.dta', 'srs.dta') + print('downloading file') + srs = dta.genfromdta("srs.dta") +# from statsmodels.datasets import webuse +# srs = webuse('srs', 'http://www.ats.ucla.edu/stat/stata/seminars/svy_stata_intro/') +# #does currently not cache file + +y = srs['api00'] +#older numpy don't reorder +#x = srs[['growth', 'emer', 'yr_rnd']].view(float).reshape(len(y), -1) +#force sequence +x = np.column_stack([srs[ii] for ii in ['growth', 'emer', 'yr_rnd']]) +group = srs['dnum'] + +#xx = sm.add_constant(x, prepend=True) +xx = sm.add_constant(x, prepend=False) #const at end for Stata compatibility + +#remove nan observation +mask = (xx!=-999.0).all(1) #nan code in dta file +mask.shape +y = y[mask] +xx = xx[mask] +group = group[mask] + +#run OLS + +res_srs = sm.OLS(y, xx).fit() +print('params ', res_srs.params) +print('bse_OLS ', res_srs.bse) + +#get cluster robust standard errors and compare with STATA + +cov_cr = sw.cov_cluster(res_srs, group.astype(int)) +bse_cr = sw.se_cov(cov_cr) +print('bse_rob ', bse_cr) + +res_stata = np.rec.array( + [('growth', '|', -0.1027121, 0.22917029999999999, -0.45000000000000001, 0.65500000000000003, -0.55483519999999997, 0.34941109999999997), + ('emer', '|', -5.4449319999999997, 0.72939690000000001, -7.46, 0.0, -6.8839379999999997, -4.0059269999999998), + ('yr_rnd', '|', -51.075690000000002, 22.83615, -2.2400000000000002, 0.027, -96.128439999999998, -6.0229350000000004), + ('_cons', '|', 740.3981, 13.460760000000001, 55.0, 0.0, 713.84180000000003, 766.95439999999996)], + dtype=[('exogname', '|S6'), ('del', '|S1'), ('params', 'float'), + ('bse', 'float'), ('tvalues', 'float'), ('pvalues', 'float'), + ('cilow', 'float'), ('ciupp', 'float')]) + +print('diff Stata', bse_cr - res_stata.bse) +assert_almost_equal(bse_cr, res_stata.bse, decimal=6) + +#We see that in this case the robust standard errors of the parameter estimates +#are larger than those of OLS by 8 to 35 % +print('reldiff to OLS', bse_cr/res_srs.bse - 1) diff --git a/statsmodels/examples/ex_sandwich3.py b/statsmodels/examples/ex_sandwich3.py new file mode 100644 index 0000000..931febb --- /dev/null +++ b/statsmodels/examples/ex_sandwich3.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +"""Cluster Robust Standard Errors with Two Clusters + +Created on Sat Dec 17 08:39:16 2011 + +Author: Josef Perktold +""" +from statsmodels.compat.python import urlretrieve +import numpy as np +from numpy.testing import assert_almost_equal + +import statsmodels.api as sm + +import statsmodels.stats.sandwich_covariance as sw + +#requires Petersen's test_data +#http://www.kellogg.northwestern.edu/faculty/petersen/htm/papers/se/test_data.txt +try: + pet = np.genfromtxt("test_data.txt") + print('using local file') +except IOError: + urlretrieve('http://www.kellogg.northwestern.edu/faculty/petersen/htm/papers/se/test_data.txt', + 'test_data.txt') + print('downloading file') + pet = np.genfromtxt("test_data.txt") + + +endog = pet[:,-1] +group = pet[:,0].astype(int) +time = pet[:,1].astype(int) +exog = sm.add_constant(pet[:,2]) +res = sm.OLS(endog, exog).fit() + +cov01, covg, covt = sw.cov_cluster_2groups(res, group, group2=time) + +#Reference number from Petersen +#http://www.kellogg.northwestern.edu/faculty/petersen/htm/papers/se/test_data.htm + +bse_petw = [0.0284, 0.0284] +bse_pet0 = [0.0670, 0.0506] +bse_pet1 = [0.0234, 0.0334] #year +bse_pet01 = [0.0651, 0.0536] #firm and year + +bse_0 = sw.se_cov(covg) +bse_1 = sw.se_cov(covt) +bse_01 = sw.se_cov(cov01) + +print('OLS ', res.bse) +print('het HC0 ', res.HC0_se, bse_petw - res.HC0_se) +print('het firm ', bse_0, bse_0 - bse_pet0) +print('het year ', bse_1, bse_1 - bse_pet1) +print('het firm & year', bse_01, bse_01 - bse_pet01) + +print('relative difference standard error het firm & year to OLS') +print(' ', bse_01 / res.bse) + +#From the last line we see that the cluster and year robust standard errors +#are approximately twice those of OLS + +assert_almost_equal(bse_petw, res.HC0_se, decimal=4) +assert_almost_equal(bse_0, bse_pet0, decimal=4) +assert_almost_equal(bse_1, bse_pet1, decimal=4) +assert_almost_equal(bse_01, bse_pet01, decimal=4) diff --git a/statsmodels/examples/ex_scatter_ellipse.py b/statsmodels/examples/ex_scatter_ellipse.py new file mode 100644 index 0000000..1735f65 --- /dev/null +++ b/statsmodels/examples/ex_scatter_ellipse.py @@ -0,0 +1,50 @@ +'''example for grid of scatter plots with probability ellipses + + +Author: Josef Perktold +License: BSD-3 +''' + + +from statsmodels.compat.python import lrange +import numpy as np +import matplotlib.pyplot as plt + +from statsmodels.graphics.plot_grids import scatter_ellipse + + +nvars = 6 +mmean = np.arange(1.,nvars+1)/nvars * 1.5 +rho = 0.5 +#dcorr = rho*np.ones((nvars, nvars)) + (1-rho)*np.eye(nvars) +r = np.random.uniform(-0.99, 0.99, size=(nvars, nvars)) +##from scipy import stats +##r = stats.rdist.rvs(1, size=(nvars, nvars)) +r = (r + r.T) / 2. +assert np.allclose(r, r.T) +mcorr = r +mcorr[lrange(nvars), lrange(nvars)] = 1 +#dcorr = np.array([[1, 0.5, 0.1],[0.5, 1, -0.2], [0.1, -0.2, 1]]) +mstd = np.arange(1.,nvars+1)/nvars +mcov = mcorr * np.outer(mstd, mstd) +evals = np.linalg.eigvalsh(mcov) +assert evals.min > 0 #assert positive definite + +nobs = 100 +data = np.random.multivariate_normal(mmean, mcov, size=nobs) +dmean = data.mean(0) +dcov = np.cov(data, rowvar=0) +print(dmean) +print(dcov) +dcorr = np.corrcoef(data, rowvar=0) +dcorr[np.triu_indices(nvars)] = 0 +print(dcorr) + +#default +#fig = scatter_ellipse(data, level=[0.5, 0.75, 0.95]) +#used for checking +#fig = scatter_ellipse(data, level=[0.5, 0.75, 0.95], add_titles=True, keep_ticks=True) +#check varnames +varnames = ['var%d' % i for i in range(nvars)] +fig = scatter_ellipse(data, level=0.9, varnames=varnames) +plt.show() diff --git a/statsmodels/examples/ex_univar_kde.py b/statsmodels/examples/ex_univar_kde.py new file mode 100644 index 0000000..d8f9100 --- /dev/null +++ b/statsmodels/examples/ex_univar_kde.py @@ -0,0 +1,156 @@ +""" +This example tests the nonparametric estimator +for several popular univariate distributions with the different +bandwidth selction methods - CV-ML; CV-LS; Scott's rule of thumb. + +Produces six different plots for each distribution +1) Beta +2) f +3) Pareto +4) Laplace +5) Weibull +6) Poisson + +""" + + +from __future__ import print_function +import numpy as np +import scipy.stats as stats +import matplotlib.pyplot as plt +import statsmodels.api as sm + +KDEMultivariate = sm.nonparametric.KDEMultivariate + + +np.random.seed(123456) + +# Beta distribution + +# Parameters +a = 2 +b = 5 +nobs = 250 + +support = np.random.beta(a, b, size=nobs) +rv = stats.beta(a, b) +ix = np.argsort(support) + +dens_normal = KDEMultivariate(data=[support], var_type='c', bw='normal_reference') +dens_cvls = KDEMultivariate(data=[support], var_type='c', bw='cv_ls') +dens_cvml = KDEMultivariate(data=[support], var_type='c', bw='cv_ml') + +plt.figure(1) +plt.plot(support[ix], rv.pdf(support[ix]), label='Actual') +plt.plot(support[ix], dens_normal.pdf()[ix], label='Scott') +plt.plot(support[ix], dens_cvls.pdf()[ix], label='CV_LS') +plt.plot(support[ix], dens_cvml.pdf()[ix], label='CV_ML') +plt.title("Nonparametric Estimation of the Density of Beta Distributed " \ + "Random Variable") +plt.legend(('Actual', 'Scott', 'CV_LS', 'CV_ML')) + +# f distribution +df = 100 +dn = 100 +nobs = 250 + +support = np.random.f(dn, df, size=nobs) +rv = stats.f(df, dn) +ix = np.argsort(support) + +dens_normal = KDEMultivariate(data=[support], var_type='c', bw='normal_reference') +dens_cvls = KDEMultivariate(data=[support], var_type='c', bw='cv_ls') +dens_cvml = KDEMultivariate(data=[support], var_type='c', bw='cv_ml') + +plt.figure(2) +plt.plot(support[ix], rv.pdf(support[ix]), label='Actual') +plt.plot(support[ix], dens_normal.pdf()[ix], label='Scott') +plt.plot(support[ix], dens_cvls.pdf()[ix], label='CV_LS') +plt.plot(support[ix], dens_cvml.pdf()[ix], label='CV_ML') +plt.title("Nonparametric Estimation of the Density of f Distributed " \ + "Random Variable") +plt.legend(('Actual', 'Scott', 'CV_LS', 'CV_ML')) + +# Pareto distribution +a = 2 +nobs = 150 +support = np.random.pareto(a, size=nobs) +rv = stats.pareto(a) +ix = np.argsort(support) + +dens_normal = KDEMultivariate(data=[support], var_type='c', bw='normal_reference') +dens_cvls = KDEMultivariate(data=[support], var_type='c', bw='cv_ls') +dens_cvml = KDEMultivariate(data=[support], var_type='c', bw='cv_ml') +plt.figure(3) +plt.plot(support[ix], rv.pdf(support[ix]), label='Actual') +plt.plot(support[ix], dens_normal.pdf()[ix], label='Scott') +plt.plot(support[ix], dens_cvls.pdf()[ix], label='CV_LS') +plt.plot(support[ix], dens_cvml.pdf()[ix], label='CV_ML') +plt.title("Nonparametric Estimation of the Density of Pareto " \ + "Distributed Random Variable") +plt.legend(('Actual', 'Scott', 'CV_LS', 'CV_ML')) + +# Laplace Distribution +mu = 0 +s = 1 +nobs = 250 + +support = np.random.laplace(mu, s, size=nobs) +rv = stats.laplace(mu, s) +ix = np.argsort(support) + +dens_normal = KDEMultivariate(data=[support], var_type='c', bw='normal_reference') +dens_cvls = KDEMultivariate(data=[support], var_type='c', bw='cv_ls') +dens_cvml = KDEMultivariate(data=[support], var_type='c', bw='cv_ml') + +plt.figure(4) +plt.plot(support[ix], rv.pdf(support[ix]), label='Actual') +plt.plot(support[ix], dens_normal.pdf()[ix], label='Scott') +plt.plot(support[ix], dens_cvls.pdf()[ix], label='CV_LS') +plt.plot(support[ix], dens_cvml.pdf()[ix], label='CV_ML') +plt.title("Nonparametric Estimation of the Density of Laplace " \ + "Distributed Random Variable") +plt.legend(('Actual', 'Scott', 'CV_LS', 'CV_ML')) + +# Weibull Distribution +a = 1 +nobs = 250 + +support = np.random.weibull(a, size=nobs) +rv = stats.weibull_min(a) + +ix = np.argsort(support) +dens_normal = KDEMultivariate(data=[support], var_type='c', bw='normal_reference') +dens_cvls = KDEMultivariate(data=[support], var_type='c', bw='cv_ls') +dens_cvml = KDEMultivariate(data=[support], var_type='c', bw='cv_ml') + +plt.figure(5) +plt.plot(support[ix], rv.pdf(support[ix]), label='Actual') +plt.plot(support[ix], dens_normal.pdf()[ix], label='Scott') +plt.plot(support[ix], dens_cvls.pdf()[ix], label='CV_LS') +plt.plot(support[ix], dens_cvml.pdf()[ix], label='CV_ML') +plt.title("Nonparametric Estimation of the Density of Weibull " \ + "Distributed Random Variable") +plt.legend(('Actual', 'Scott', 'CV_LS', 'CV_ML')) + +# Poisson Distribution +a = 2 +nobs = 250 +support = np.random.poisson(a, size=nobs) +rv = stats.poisson(a) + +ix = np.argsort(support) +dens_normal = KDEMultivariate(data=[support], var_type='o', bw='normal_reference') +dens_cvls = KDEMultivariate(data=[support], var_type='o', bw='cv_ls') +dens_cvml = KDEMultivariate(data=[support], var_type='o', bw='cv_ml') + +plt.figure(6) +plt.plot(support[ix], rv.pmf(support[ix]), label='Actual') +plt.plot(support[ix], dens_normal.pdf()[ix], label='Scott') +plt.plot(support[ix], dens_cvls.pdf()[ix], label='CV_LS') +plt.plot(support[ix], dens_cvml.pdf()[ix], label='CV_ML') +plt.title("Nonparametric Estimation of the Density of Poisson " \ + "Distributed Random Variable") +plt.legend(('Actual', 'Scott', 'CV_LS', 'CV_ML')) + +plt.show() diff --git a/statsmodels/examples/ex_wald_anova.py b/statsmodels/examples/ex_wald_anova.py new file mode 100644 index 0000000..134e879 --- /dev/null +++ b/statsmodels/examples/ex_wald_anova.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +"""Example for wald_test for terms - `wald_anova` + +Created on Mon Dec 15 11:19:23 2014 + +Author: Josef Perktold +License: BSD-3 + +""" + +import numpy as np # noqa:F401 --> needed for patsy + +from statsmodels.formula.api import ols, glm, poisson +from statsmodels.discrete.discrete_model import Poisson + +import statsmodels.stats.tests.test_anova as ttmod +from statsmodels.discrete.discrete_model import NegativeBinomial + + +test = ttmod.TestAnova3() +test.setup_class() + +data = test.data.drop([0,1,2]) +res_ols = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", data).fit(use_t=False) + +res_glm = glm("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", + data).fit() + +res_poi = Poisson.from_formula("Days ~ C(Weight) * C(Duration)", data).fit(cov_type='HC0') +res_poi_2 = poisson("Days ~ C(Weight) + C(Duration)", data).fit(cov_type='HC0') + +print('\nOLS') +print(res_ols.wald_test_terms()) +print('\nGLM') +print(res_glm.wald_test_terms(skip_single=False, combine_terms=['Duration', 'Weight'])) +print('\nPoisson 1') +print(res_poi.wald_test_terms(skip_single=False, combine_terms=['Duration', 'Weight'])) +print('\nPoisson 2') +print(res_poi_2.wald_test_terms(skip_single=False)) + +res_nb2 = NegativeBinomial.from_formula("Days ~ C(Weight) * C(Duration)", data).fit() +print('\nNegative Binomial nb2') +print(res_nb2.wald_test_terms(skip_single=False)) + +res_nb1 = NegativeBinomial.from_formula("Days ~ C(Weight) * C(Duration)", data, + loglike_method='nb1').fit(cov_type='HC0') +print('\nNegative Binomial nb2') +print(res_nb1.wald_test_terms(skip_single=False)) diff --git a/statsmodels/examples/example_discrete_mnl.py b/statsmodels/examples/example_discrete_mnl.py new file mode 100644 index 0000000..816fbed --- /dev/null +++ b/statsmodels/examples/example_discrete_mnl.py @@ -0,0 +1,67 @@ +"""Example: statsmodels.discretemod +""" + +from __future__ import print_function +from statsmodels.compat.python import lrange +import numpy as np +import statsmodels.api as sm +from statsmodels.iolib.summary import ( + table_extend, summary_params_2d, summary_params_2dflat) + + +anes_data = sm.datasets.anes96.load(as_pandas=False) +anes_exog = anes_data.exog +anes_exog = sm.add_constant(anes_exog, prepend=False) +mlogit_mod = sm.MNLogit(anes_data.endog, anes_exog) +mlogit_res = mlogit_mod.fit() + +# The default method for the fit is Newton-Raphson +# However, you can use other solvers +mlogit_res = mlogit_mod.fit(method='bfgs', maxiter=100) +# The below needs a lot of iterations to get it right? +#TODO: Add a technical note on algorithms +#mlogit_res = mlogit_mod.fit(method='ncg') # this takes forever + + +exog_names = [anes_data.exog_name[i] for i in [0, 2]+lrange(5,8)] + ['const'] +endog_names = [anes_data.endog_name+'_%d' % i for i in np.unique(mlogit_res.model.endog)[1:]] +print('\n\nMultinomial') +print(summary_params_2d(mlogit_res, extras=['bse','tvalues'], + endog_names=endog_names, exog_names=exog_names)) +tables, table_all = summary_params_2dflat(mlogit_res, + endog_names=endog_names, + exog_names=exog_names, + keep_headers=True) +tables, table_all = summary_params_2dflat(mlogit_res, + endog_names=endog_names, + exog_names=exog_names, + keep_headers=False) +print('\n\n') +print(table_all) +print('\n\n') +print('\n'.join((str(t) for t in tables))) + +at = table_extend(tables) +print(at) + +print('\n\n') +print(mlogit_res.summary()) +print(mlogit_res.summary(yname='PID')) +#the following is supposed to raise ValueError +#mlogit_res.summary(yname=['PID']) + +endog_names = [anes_data.endog_name+'=%d' % i for i in np.unique(mlogit_res.model.endog)[1:]] +print(mlogit_res.summary(yname='PID', yname_list=endog_names, xname=exog_names)) + + +''' #trying cPickle +from statsmodels.compat.python import cPickle #, copy + +#copy.deepcopy(mlogit_res) #raises exception: AttributeError: 'ResettableCache' object has no attribute '_resetdict' +mnl_res = mlogit_mod.fit(method='bfgs', maxiter=100) +mnl_res.cov_params() +#mnl_res.model.endog = None +#mnl_res.model.exog = None +cPickle.dump(mnl_res, open('mnl_res.dump', 'w')) +mnl_res_l = cPickle.load(open('mnl_res.dump', 'r')) +''' diff --git a/statsmodels/examples/example_enhanced_boxplots.py b/statsmodels/examples/example_enhanced_boxplots.py new file mode 100644 index 0000000..42d09e0 --- /dev/null +++ b/statsmodels/examples/example_enhanced_boxplots.py @@ -0,0 +1,99 @@ + +from __future__ import print_function +import numpy as np +import matplotlib.pyplot as plt + +import statsmodels.api as sm + + +# Necessary to make horizontal axis labels fit +plt.rcParams['figure.subplot.bottom'] = 0.23 + +data = sm.datasets.anes96.load_pandas() +party_ID = np.arange(7) +labels = ["Strong Democrat", "Weak Democrat", "Independent-Democrat", + "Independent-Independent", "Independent-Republican", + "Weak Republican", "Strong Republican"] + +# Group age by party ID. +age = [data.exog['age'][data.endog == id] for id in party_ID] + + +# Create a violin plot. +fig = plt.figure() +ax = fig.add_subplot(111) + +sm.graphics.violinplot(age, ax=ax, labels=labels, + plot_opts={'cutoff_val':5, 'cutoff_type':'abs', + 'label_fontsize':'small', + 'label_rotation':30}) + +ax.set_xlabel("Party identification of respondent.") +ax.set_ylabel("Age") +ax.set_title("US national election '96 - Age & Party Identification") + + +# Create a bean plot. +fig2 = plt.figure() +ax = fig2.add_subplot(111) + +sm.graphics.beanplot(age, ax=ax, labels=labels, + plot_opts={'cutoff_val':5, 'cutoff_type':'abs', + 'label_fontsize':'small', + 'label_rotation':30}) + +ax.set_xlabel("Party identification of respondent.") +ax.set_ylabel("Age") +ax.set_title("US national election '96 - Age & Party Identification") + + +# Create a jitter plot. +fig3 = plt.figure() +ax = fig3.add_subplot(111) + +plot_opts={'cutoff_val':5, 'cutoff_type':'abs', 'label_fontsize':'small', + 'label_rotation':30, 'violin_fc':(0.8, 0.8, 0.8), + 'jitter_marker':'.', 'jitter_marker_size':3, 'bean_color':'#FF6F00', + 'bean_mean_color':'#009D91'} +sm.graphics.beanplot(age, ax=ax, labels=labels, jitter=True, + plot_opts=plot_opts) + +ax.set_xlabel("Party identification of respondent.") +ax.set_ylabel("Age") +ax.set_title("US national election '96 - Age & Party Identification") + + +# Create an asymmetrical jitter plot. +ix = data.exog['income'] < 16 # incomes < $30k +age = data.exog['age'][ix] +endog = data.endog[ix] +age_lower_income = [age[endog == id] for id in party_ID] + +ix = data.exog['income'] >= 20 # incomes > $50k +age = data.exog['age'][ix] +endog = data.endog[ix] +age_higher_income = [age[endog == id] for id in party_ID] + +fig = plt.figure() +ax = fig.add_subplot(111) + +plot_opts['violin_fc'] = (0.5, 0.5, 0.5) +plot_opts['bean_show_mean'] = False +plot_opts['bean_show_median'] = False +plot_opts['bean_legend_text'] = r'Income < \$30k' +plot_opts['cutoff_val'] = 10 +sm.graphics.beanplot(age_lower_income, ax=ax, labels=labels, side='left', + jitter=True, plot_opts=plot_opts) +plot_opts['violin_fc'] = (0.7, 0.7, 0.7) +plot_opts['bean_color'] = '#009D91' +plot_opts['bean_legend_text'] = r'Income > \$50k' +sm.graphics.beanplot(age_higher_income, ax=ax, labels=labels, side='right', + jitter=True, plot_opts=plot_opts) + +ax.set_xlabel("Party identification of respondent.") +ax.set_ylabel("Age") +ax.set_title("US national election '96 - Age & Party Identification") + + +# Show all plots. +plt.show() diff --git a/statsmodels/examples/example_functional_plots.py b/statsmodels/examples/example_functional_plots.py new file mode 100644 index 0000000..79db53e --- /dev/null +++ b/statsmodels/examples/example_functional_plots.py @@ -0,0 +1,52 @@ +'''Functional boxplots and rainbow plots + +see docstrings for an explanation + + +Author: Ralf Gommers + +''' + +from __future__ import print_function +import numpy as np +import matplotlib.pyplot as plt +import statsmodels.api as sm + +#Load the El Nino dataset. Consists of 60 years worth of Pacific Ocean sea +#surface temperature data. + +data = sm.datasets.elnino.load(as_pandas=False) + +#Create a functional boxplot: + +#We see that the years 1982-83 and 1997-98 are outliers; these are +#the years where El Nino (a climate pattern characterized by warming +#up of the sea surface and higher air pressures) occurred with unusual +#intensity. + +fig = plt.figure() +ax = fig.add_subplot(111) +res = sm.graphics.fboxplot(data.raw_data[:, 1:], wfactor=2.58, + labels=data.raw_data[:, 0].astype(int), + ax=ax) + +ax.set_xlabel("Month of the year") +ax.set_ylabel("Sea surface temperature (C)") +ax.set_xticks(np.arange(13, step=3) - 1) +ax.set_xticklabels(["", "Mar", "Jun", "Sep", "Dec"]) +ax.set_xlim([-0.2, 11.2]) + + + +#Create a rainbow plot: + +fig = plt.figure() +ax = fig.add_subplot(111) +res = sm.graphics.rainbowplot(data.raw_data[:, 1:], ax=ax) + +ax.set_xlabel("Month of the year") +ax.set_ylabel("Sea surface temperature (C)") +ax.set_xticks(np.arange(13, step=3) - 1) +ax.set_xticklabels(["", "Mar", "Jun", "Sep", "Dec"]) +ax.set_xlim([-0.2, 11.2]) +plt.show() diff --git a/statsmodels/examples/example_kde.py b/statsmodels/examples/example_kde.py new file mode 100644 index 0000000..1f07177 --- /dev/null +++ b/statsmodels/examples/example_kde.py @@ -0,0 +1,32 @@ + +from __future__ import print_function +import numpy as np +from scipy import stats +from statsmodels.distributions.mixture_rvs import mixture_rvs +from statsmodels.nonparametric.kde import kdensityfft +from statsmodels.nonparametric import bandwidths +import matplotlib.pyplot as plt + + +np.random.seed(12345) +obs_dist = mixture_rvs([.25,.75], size=10000, dist=[stats.norm, stats.norm], + kwargs = (dict(loc=-1,scale=.5),dict(loc=1,scale=.5))) +#.. obs_dist = mixture_rvs([.25,.75], size=10000, dist=[stats.norm, stats.beta], +#.. kwargs = (dict(loc=-1,scale=.5),dict(loc=1,scale=1,args=(1,.5)))) + + +f_hat, grid, bw = kdensityfft(obs_dist, kernel="gauss", bw="scott") + +# Check the plot + +plt.figure() +plt.hist(obs_dist, bins=50, normed=True, color='red') +plt.plot(grid, f_hat, lw=2, color='black') +plt.show() + +# do some timings +# get bw first because they're not streamlined +bw = bandwidths.bw_scott(obs_dist) + +#.. timeit kdensity(obs_dist, kernel="gauss", bw=bw, gridsize=2**10) +#.. timeit kdensityfft(obs_dist, kernel="gauss", bw=bw, gridsize=2**10) diff --git a/statsmodels/examples/example_ols_minimal_comp.py b/statsmodels/examples/example_ols_minimal_comp.py new file mode 100644 index 0000000..c67a581 --- /dev/null +++ b/statsmodels/examples/example_ols_minimal_comp.py @@ -0,0 +1,31 @@ +"""Example: minimal OLS + +add example for new compare methods + +""" + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm + +np.random.seed(765367) +nsample = 100 +x = np.linspace(0,10, 100) +X = sm.add_constant(np.column_stack((x, x**2))) +beta = np.array([10, 1, 0.01]) +y = np.dot(X, beta) + np.random.normal(size=nsample) + +results = sm.OLS(y, X).fit() +print(results.summary()) + +results2 = sm.OLS(y, X[:,:2]).fit() +print(results.compare_f_test(results2)) +print(results.f_test([0,0,1])) + +print(results.compare_lr_test(results2)) + +''' +(1.841903749875428, 0.1778775592033047) + +(1.8810663357027693, 0.17021300121753191, 1.0) +''' diff --git a/statsmodels/examples/example_rpy.py b/statsmodels/examples/example_rpy.py new file mode 100644 index 0000000..0d26c4e --- /dev/null +++ b/statsmodels/examples/example_rpy.py @@ -0,0 +1,49 @@ +'''Just two examples for using rpy + +These examples are mainly for developers. + +# example 1: OLS using LM +# example 2: GLM with binomial family + The second results isn't exactly correct since it assumes that each + obvervation has the same number of trials see datasets/longley for an R script + with the correct syntax. + +See rmodelwrap.py in the tests folder for a convenience wrapper +to make rpy more like statsmodels. Note, however, that rmodelwrap +was created in a very ad hoc manner and due to the idiosyncracies in R +it does not work for all types of R models. + +There are also R scripts included with most of the datasets to run +some basic models for comparisons of results to statsmodels. +''' + +from __future__ import print_function +from statsmodels.compat.python import iterkeys +from rpy import r +import statsmodels.api as sm + + +examples = [1, 2] + +if 1 in examples: + data = sm.datasets.longley.load(as_pandas=False) + y,x = data.endog, sm.add_constant(data.exog, prepend=False) + des_cols = ['x.%d' % (i+1) for i in range(x.shape[1])] + formula = r('y~%s-1' % '+'.join(des_cols)) + frame = r.data_frame(y=y, x=x) + results = r.lm(formula, data=frame) + print(list(iterkeys(results))) + print(results['coefficients']) + +if 2 in examples: + data2 = sm.datasets.star98.load(as_pandas=False) + y2,x2 = data2.endog, sm.add_constant(data2.exog, prepend=False) + y2 = y2[:,0]/y2.sum(axis=1) + des_cols2 = ['x.%d' % (i+1) for i in range(x2.shape[1])] + formula2 = r('y~%s-1' % '+'.join(des_cols2)) + frame2 = r.data_frame(y=y2, x=x2) + results2 = r.glm(formula2, data=frame2, family='binomial') + params_est = [results2['coefficients'][k] for k + in sorted(results2['coefficients'])] + print(params_est) + print(', '.join(['%13.10f']*21) % tuple(params_est)) diff --git a/statsmodels/examples/koul_and_mc.py b/statsmodels/examples/koul_and_mc.py new file mode 100644 index 0000000..a1ea4f7 --- /dev/null +++ b/statsmodels/examples/koul_and_mc.py @@ -0,0 +1,36 @@ +from statsmodels.compat.python import range +import statsmodels.api as sm +import numpy as np + +################## +#Monte Carlo test# +################## +modrand1 = np.random.RandomState(5676576) +modrand2 = np.random.RandomState(1543543) +modrand3 = np.random.RandomState(5738276) +X = modrand1.uniform(0, 5, (1000, 4)) +X = sm.add_constant(X) +beta = np.array([[10], [2], [3], [4], [5]]) +y = np.dot(X, beta) +params = [] +for i in range(10000): + yhat = y + modrand2.standard_normal((1000, 1)) + cens_times = 50 + (modrand3.standard_normal((1000, 1)) * 5) + yhat_observed = np.minimum(yhat, cens_times) + censors = np.int_(yhat < cens_times) + model = sm.emplike.emplikeAFT(yhat_observed, X, censors) + new_params = model.fit().params + params.append(new_params) + +mc_est = np.mean(params, axis=0) # Gives MC parameter estimate + +################## +#Koul replication# +################## + +koul_data = np.genfromtxt('/home/justin/rverify.csv', delimiter=';') +# ^ Change path to where file is located. +koul_y = np.log10(koul_data[:, 0]) +koul_x = sm.add_constant(koul_data[:, 2]) +koul_censors = koul_data[:, 1] +koul_params = sm.emplike.emplikeAFT(koul_y, koul_x, koul_censors).fit().params diff --git a/statsmodels/examples/l1_demo/demo.py b/statsmodels/examples/l1_demo/demo.py new file mode 100644 index 0000000..4cf3628 --- /dev/null +++ b/statsmodels/examples/l1_demo/demo.py @@ -0,0 +1,355 @@ +from __future__ import print_function +from statsmodels.compat.python import range +from optparse import OptionParser +import statsmodels.api as sm +import scipy as sp +from scipy import linalg +from scipy import stats + + +docstr = """ +Demonstrates l1 regularization for likelihood models. +Use different models by setting mode = mnlogit, logit, or probit. + +Examples +------- +$ python demo.py --get_l1_slsqp_results logit + +>>> import demo +>>> demo.run_demo('logit') + +The Story +--------- +The maximum likelihood (ML) solution works well when the number of data +points is large and the noise is small. When the ML solution starts +"breaking", the regularized solution should do better. + +The l1 Solvers +-------------- +The solvers are slower than standard Newton, and sometimes have + convergence issues Nonetheless, the final solution makes sense and + is often better than the ML solution. +The standard l1 solver is fmin_slsqp and is included with scipy. It + sometimes has trouble verifying convergence when the data size is + large. +The l1_cvxopt_cp solver is part of CVXOPT and this package needs to be + installed separately. It works well even for larger data sizes. +""" + + +def main(): + """ + Provides a CLI for the demo. + """ + usage = "usage: %prog [options] mode" + usage += '\n'+docstr + parser = OptionParser(usage=usage) + # base_alpha + parser.add_option("-a", "--base_alpha", + help="Size of regularization param (the param actully used will "\ + "automatically scale with data size in this demo) "\ + "[default: %default]", + dest='base_alpha', action='store', type='float', default=0.01) + # num_samples + parser.add_option("-N", "--num_samples", + help="Number of data points to generate for fit "\ + "[default: %default]", + dest='N', action='store', type='int', default=500) + # get_l1_slsqp_results + parser.add_option("--get_l1_slsqp_results", + help="Do an l1 fit using slsqp. [default: %default]", \ + action="store_true",dest='get_l1_slsqp_results', default=False) + # get_l1_cvxopt_results + parser.add_option("--get_l1_cvxopt_results", + help="Do an l1 fit using cvxopt. [default: %default]", \ + action="store_true",dest='get_l1_cvxopt_results', default=False) + # num_nonconst_covariates + parser.add_option("--num_nonconst_covariates", + help="Number of covariates that are not constant "\ + "(a constant will be prepended) [default: %default]", + dest='num_nonconst_covariates', action='store', + type='int', default=10) + # noise_level + parser.add_option("--noise_level", + help="Level of the noise relative to signal [default: %default]", + dest='noise_level', action='store', type='float', + default=0.2) + # cor_length + parser.add_option("--cor_length", + help="Correlation length of the (Gaussian) independent variables"\ + "[default: %default]", + dest='cor_length', action='store', type='float', + default=2) + # num_zero_params + parser.add_option("--num_zero_params", + help="Number of parameters equal to zero for every target in "\ + "logistic regression examples. [default: %default]", + dest='num_zero_params', action='store', type='int', + default=8) + # num_targets + parser.add_option("-J", "--num_targets", + help="Number of choices for the endogenous response in "\ + "multinomial logit example [default: %default]", + dest='num_targets', action='store', type='int', default=3) + # print_summaries + parser.add_option("-s", "--print_summaries", + help="Print the full fit summary. [default: %default]", \ + action="store_true",dest='print_summaries', default=False) + # save_arrays + parser.add_option("--save_arrays", + help="Save exog/endog/true_params to disk for future use. "\ + "[default: %default]", + action="store_true",dest='save_arrays', default=False) + # load_old_arrays + parser.add_option("--load_old_arrays", + help="Load exog/endog/true_params arrays from disk. "\ + "[default: %default]", + action="store_true",dest='load_old_arrays', default=False) + + (options, args) = parser.parse_args() + + assert len(args) == 1 + mode = args[0].lower() + + run_demo(mode, **options.__dict__) + + +def run_demo(mode, base_alpha=0.01, N=500, get_l1_slsqp_results=False, + get_l1_cvxopt_results=False, num_nonconst_covariates=10, + noise_level=0.2, cor_length=2, num_zero_params=8, num_targets=3, + print_summaries=False, save_arrays=False, load_old_arrays=False): + """ + Run the demo and print results. + + Parameters + ---------- + mode : String + either 'logit', 'mnlogit', or 'probit' + base_alpha : Float + Size of regularization param (the param actually used will + automatically scale with data size in this demo) + N : Integer + Number of data points to generate for fit + get_l1_slsqp_results : boolean, + Do an l1 fit using slsqp. + get_l1_cvxopt_results : boolean + Do an l1 fit using cvxopt + num_nonconst_covariates : Integer + Number of covariates that are not constant + (a constant will be prepended) + noise_level : Float (non-negative) + Level of the noise relative to signal + cor_length : Float (non-negative) + Correlation length of the (Gaussian) independent variables + num_zero_params : Integer + Number of parameters equal to zero for every target in logistic + regression examples. + num_targets : Integer + Number of choices for the endogenous response in multinomial logit + example + print_summaries : Boolean + print the full fit summary. + save_arrays : Boolean + Save exog/endog/true_params to disk for future use. + load_old_arrays + Load exog/endog/true_params arrays from disk. + """ + if mode != 'mnlogit': + print("Setting num_targets to 2 since mode != 'mnlogit'") + num_targets = 2 + models = { + 'logit': sm.Logit, 'mnlogit': sm.MNLogit, 'probit': sm.Probit} + endog_funcs = { + 'logit': get_logit_endog, 'mnlogit': get_logit_endog, + 'probit': get_probit_endog} + # The regularization parameter + # Here we scale it with N for simplicity. In practice, you should + # use cross validation to pick alpha + alpha = base_alpha * N * sp.ones((num_nonconst_covariates+1, num_targets-1)) + alpha[0,:] = 0 # Don't regularize the intercept + + #### Make the data and model + exog = get_exog(N, num_nonconst_covariates, cor_length) + exog = sm.add_constant(exog) + true_params = sp.rand(num_nonconst_covariates+1, num_targets-1) + if num_zero_params: + true_params[-num_zero_params:, :] = 0 + endog = endog_funcs[mode](true_params, exog, noise_level) + + endog, exog, true_params = save_andor_load_arrays( + endog, exog, true_params, save_arrays, load_old_arrays) + model = models[mode](endog, exog) + + #### Get the results and print + results = run_solvers(model, true_params, alpha, + get_l1_slsqp_results, get_l1_cvxopt_results, print_summaries) + + summary_str = get_summary_str(results, true_params, get_l1_slsqp_results, + get_l1_cvxopt_results, print_summaries) + + print(summary_str) + + +def run_solvers(model, true_params, alpha, get_l1_slsqp_results, + get_l1_cvxopt_results, print_summaries): + """ + Runs the solvers using the specified settings and returns a result string. + Works the same for any l1 penalized likelihood model. + """ + results = {} + #### Train the models + # Get ML results + results['results_ML'] = model.fit(method='newton') + # Get l1 results + start_params = results['results_ML'].params.ravel(order='F') + if get_l1_slsqp_results: + results['results_l1_slsqp'] = model.fit_regularized( + method='l1', alpha=alpha, maxiter=1000, + start_params=start_params, retall=True) + if get_l1_cvxopt_results: + results['results_l1_cvxopt_cp'] = model.fit_regularized( + method='l1_cvxopt_cp', alpha=alpha, maxiter=50, + start_params=start_params, retall=True, feastol=1e-5) + + return results + + +def get_summary_str(results, true_params, get_l1_slsqp_results, + get_l1_cvxopt_results, print_summaries): + """ + Gets a string summarizing the results. + """ + #### Extract specific results + results_ML = results['results_ML'] + RMSE_ML = get_RMSE(results_ML, true_params) + if get_l1_slsqp_results: + results_l1_slsqp = results['results_l1_slsqp'] + if get_l1_cvxopt_results: + results_l1_cvxopt_cp = results['results_l1_cvxopt_cp'] + + #### Format summaries + # Short summary + print_str = '\n\n=========== Short Error Summary ============' + print_str += '\n\n The maximum likelihood fit RMS error = %.4f' % RMSE_ML + if get_l1_slsqp_results: + RMSE_l1_slsqp = get_RMSE(results_l1_slsqp, true_params) + print_str += '\n The l1_slsqp fit RMS error = %.4f' % RMSE_l1_slsqp + if get_l1_cvxopt_results: + RMSE_l1_cvxopt_cp = get_RMSE(results_l1_cvxopt_cp, true_params) + print_str += '\n The l1_cvxopt_cp fit RMS error = %.4f' % RMSE_l1_cvxopt_cp + # Parameters + print_str += '\n\n\n============== Parameters =================' + print_str += "\n\nTrue parameters: \n%s" % true_params + # Full summary + if print_summaries: + print_str += '\n' + results_ML.summary().as_text() + if get_l1_slsqp_results: + print_str += '\n' + results_l1_slsqp.summary().as_text() + if get_l1_cvxopt_results: + print_str += '\n' + results_l1_cvxopt_cp.summary().as_text() + else: + print_str += '\n\nThe maximum likelihood params are \n%s' % results_ML.params + if get_l1_slsqp_results: + print_str += '\n\nThe l1_slsqp params are \n%s' % results_l1_slsqp.params + if get_l1_cvxopt_results: + print_str += '\n\nThe l1_cvxopt_cp params are \n%s' % \ + results_l1_cvxopt_cp.params + # Return + return print_str + + +def save_andor_load_arrays( + endog, exog, true_params, save_arrays, load_old_arrays): + if save_arrays: + sp.save('endog.npy', endog) + sp.save('exog.npy', exog) + sp.save('true_params.npy', true_params) + if load_old_arrays: + endog = sp.load('endog.npy') + exog = sp.load('exog.npy') + true_params = sp.load('true_params.npy') + return endog, exog, true_params + + +def get_RMSE(results, true_params): + """ + Gets the (normalized) root mean square error. + """ + diff = results.params.reshape(true_params.shape) - true_params + raw_RMSE = sp.sqrt(((diff)**2).sum()) + param_norm = sp.sqrt((true_params**2).sum()) + return raw_RMSE / param_norm + + +def get_logit_endog(true_params, exog, noise_level): + """ + Gets an endogenous response that is consistent with the true_params, + perturbed by noise at noise_level. + """ + N = exog.shape[0] + ### Create the probability of entering the different classes, + ### given exog and true_params + Xdotparams = sp.dot(exog, true_params) + noise = noise_level * sp.randn(*Xdotparams.shape) + eXB = sp.column_stack((sp.ones(len(Xdotparams)), sp.exp(Xdotparams))) + class_probabilities = eXB / eXB.sum(1)[:, None] + + ### Create the endog + cdf = class_probabilities.cumsum(axis=1) + endog = sp.zeros(N) + for i in range(N): + endog[i] = sp.searchsorted(cdf[i, :], sp.rand()) + + return endog + + +def get_probit_endog(true_params, exog, noise_level): + """ + Gets an endogenous response that is consistent with the true_params, + perturbed by noise at noise_level. + """ + N = exog.shape[0] + ### Create the probability of entering the different classes, + ### given exog and true_params + Xdotparams = sp.dot(exog, true_params) + noise = noise_level * sp.randn(*Xdotparams.shape) + + ### Create the endog + cdf = stats.norm._cdf(-Xdotparams) + endog = sp.zeros(N) + for i in range(N): + endog[i] = sp.searchsorted(cdf[i, :], sp.rand()) + + return endog + + +def get_exog(N, num_nonconst_covariates, cor_length): + """ + Returns an exog array with correlations determined by cor_length. + The covariance matrix of exog will have (asymptotically, as + :math:'N\\to\\inf') + .. math:: Cov[i,j] = \\exp(-|i-j| / cor_length) + + Higher cor_length makes the problem more ill-posed, and easier to screw + up with noise. + BEWARE: With very long correlation lengths, you often get a singular KKT + matrix (during the l1_cvxopt_cp fit) + """ + ## Create the noiseless exog + uncorrelated_exog = sp.randn(N, num_nonconst_covariates) + if cor_length == 0: + exog = uncorrelated_exog + else: + cov_matrix = sp.zeros((num_nonconst_covariates, num_nonconst_covariates)) + j = sp.arange(num_nonconst_covariates) + for i in range(num_nonconst_covariates): + cov_matrix[i,:] = sp.exp(-sp.fabs(i-j) / cor_length) + chol = linalg.cholesky(cov_matrix) # cov_matrix = sp.dot(chol.T, chol) + exog = sp.dot(uncorrelated_exog, chol) + ## Return + return exog + + + +if __name__ == '__main__': + main() diff --git a/statsmodels/examples/l1_demo/short_demo.py b/statsmodels/examples/l1_demo/short_demo.py new file mode 100644 index 0000000..6738a2a --- /dev/null +++ b/statsmodels/examples/l1_demo/short_demo.py @@ -0,0 +1,118 @@ +""" +You can fit your LikelihoodModel using l1 regularization by changing + the method argument and adding an argument alpha. See code for + details. + +The Story +--------- +The maximum likelihood (ML) solution works well when the number of data +points is large and the noise is small. When the ML solution starts +"breaking", the regularized solution should do better. + +The l1 Solvers +-------------- +The standard l1 solver is fmin_slsqp and is included with scipy. It + sometimes has trouble verifying convergence when the data size is + large. +The l1_cvxopt_cp solver is part of CVXOPT and this package needs to be + installed separately. It works well even for larger data sizes. +""" +from __future__ import print_function +from statsmodels.compat.python import range +import statsmodels.api as sm +import matplotlib.pyplot as plt +import numpy as np + + +## Load the data from Spector and Mazzeo (1980) +spector_data = sm.datasets.spector.load(as_pandas=False) +spector_data.exog = sm.add_constant(spector_data.exog) +N = len(spector_data.endog) +K = spector_data.exog.shape[1] + +### Logit Model +logit_mod = sm.Logit(spector_data.endog, spector_data.exog) +## Standard logistic regression +logit_res = logit_mod.fit() + +## Regularized regression + +# Set the reularization parameter to something reasonable +alpha = 0.05 * N * np.ones(K) + +# Use l1, which solves via a built-in (scipy.optimize) solver +logit_l1_res = logit_mod.fit_regularized(method='l1', alpha=alpha, acc=1e-6) + +# Use l1_cvxopt_cp, which solves with a CVXOPT solver +logit_l1_cvxopt_res = logit_mod.fit_regularized( + method='l1_cvxopt_cp', alpha=alpha) + +## Print results +print("============ Results for Logit =================") +print("ML results") +print(logit_res.summary()) +print("l1 results") +print(logit_l1_res.summary()) +print(logit_l1_cvxopt_res.summary()) + +### Multinomial Logit Example using American National Election Studies Data +anes_data = sm.datasets.anes96.load(as_pandas=False) +anes_exog = anes_data.exog +anes_exog = sm.add_constant(anes_exog, prepend=False) +mlogit_mod = sm.MNLogit(anes_data.endog, anes_exog) +mlogit_res = mlogit_mod.fit() + +## Set the regularization parameter. +alpha = 10 * np.ones((mlogit_mod.J - 1, mlogit_mod.K)) + +# Don't regularize the constant +alpha[-1,:] = 0 +mlogit_l1_res = mlogit_mod.fit_regularized(method='l1', alpha=alpha) +print(mlogit_l1_res.params) + +#mlogit_l1_res = mlogit_mod.fit_regularized( +# method='l1_cvxopt_cp', alpha=alpha, abstol=1e-10, trim_tol=1e-6) +#print mlogit_l1_res.params + +## Print results +print("============ Results for MNLogit =================") +print("ML results") +print(mlogit_res.summary()) +print("l1 results") +print(mlogit_l1_res.summary()) +# +# +#### Logit example with many params, sweeping alpha +spector_data = sm.datasets.spector.load(as_pandas=False) +X = spector_data.exog +Y = spector_data.endog + +## Fit +N = 50 # number of points to solve at +K = X.shape[1] +logit_mod = sm.Logit(Y, X) +coeff = np.zeros((N, K)) # Holds the coefficients +alphas = 1 / np.logspace(-0.5, 2, N) + +## Sweep alpha and store the coefficients +# QC check doesn't always pass with the default options. +# Use the options QC_verbose=True and disp=True +# to to see what is happening. It just barely doesn't pass, so I decreased +# acc and increased QC_tol to make it pass +for n, alpha in enumerate(alphas): + logit_res = logit_mod.fit_regularized( + method='l1', alpha=alpha, trim_mode='off', QC_tol=0.1, disp=False, + QC_verbose=True, acc=1e-15) + coeff[n,:] = logit_res.params + +## Plot +plt.figure(1) +plt.clf() +plt.grid() +plt.title('Regularization Path') +plt.xlabel('alpha') +plt.ylabel('Parameter value') +for i in range(K): + plt.plot(alphas, coeff[:,i], label='X'+str(i), lw=3) +plt.legend(loc='best') +plt.show() diff --git a/statsmodels/examples/l1_demo/sklearn_compare.py b/statsmodels/examples/l1_demo/sklearn_compare.py new file mode 100644 index 0000000..e5e0108 --- /dev/null +++ b/statsmodels/examples/l1_demo/sklearn_compare.py @@ -0,0 +1,102 @@ +""" +For comparison with sklearn.linear_model.LogisticRegression + +Computes a regularzation path with both packages. The coefficient values in + either path are related by a "constant" in the sense that for any fixed + value of the constraint C and log likelihood, there exists an l1 + regularization constant alpha such that the optimal solutions should be + the same. Note that alpha(C) is a nonlinear function in general. Here we + find alpha(C) by finding a reparameterization of the statsmodels path that + makes the paths match up. An equation is available, but to use it I would + need to hack the sklearn code to extract the gradient of the log + likelihood. + + +The results "prove" that the regularization paths are the same. Note that + finding the reparameterization is non-trivial since the coefficient paths + are NOT monotonic. As a result, the paths don't match up perfectly. +""" +from __future__ import print_function +from statsmodels.compat.python import range, lrange +from sklearn import linear_model +import statsmodels.api as sm +import numpy as np +import matplotlib.pyplot as plt + +## Decide which dataset to use +# Use either spector or anes96 +use_spector = False + +#### Load data +## The Spector and Mazzeo (1980) data from statsmodels +if use_spector: + spector_data = sm.datasets.spector.load(as_pandas=False) + X = spector_data.exog + Y = spector_data.endog +else: + raise Exception( + "The anes96 dataset is now loaded in as a short version that cannot "\ + "be used here") + anes96_data = sm.datasets.anes96.load_pandas() + Y = anes96_data.exog.vote + +#### Fit and plot results +N = 200 # number of points to solve at +K = X.shape[1] + +## Statsmodels +logit_mod = sm.Logit(Y, X) +sm_coeff = np.zeros((N, K)) # Holds the coefficients +if use_spector: + alphas = 1 / np.logspace(-1, 2, N) # for spector_data +else: + alphas = 1 / np.logspace(-3, 2, N) # for anes96_data +for n, alpha in enumerate(alphas): + logit_res = logit_mod.fit_regularized( + method='l1', alpha=alpha, disp=False, trim_mode='off') + sm_coeff[n,:] = logit_res.params +## Sklearn +sk_coeff = np.zeros((N, K)) +if use_spector: + Cs = np.logspace(-0.45, 2, N) +else: + Cs = np.logspace(-2.6, 0, N) +for n, C in enumerate(Cs): + clf = linear_model.LogisticRegression( + C=C, penalty='l1', fit_intercept=False) + clf.fit(X, Y) + sk_coeff[n, :] = clf.coef_ + +## Get the reparametrization of sm_coeff that makes the paths equal +# Do this by finding one single re-parameterization of the second coefficient +# that makes the path for the second coefficient (almost) identical. This +# same parameterization will work for the other two coefficients since the +# the regularization coefficients (in sk and sm) are related by a constant. +# +# special_X is chosen since this coefficient becomes non-zero before the +# other two...and is relatively monotonic...with both datasets. +sk_special_X = np.fabs(sk_coeff[:,2]) +sm_special_X = np.fabs(sm_coeff[:,2]) +s = np.zeros(N) +# Note that sk_special_X will not always be perfectly sorted... +s = np.searchsorted(sk_special_X, sm_special_X) + +## Plot +plt.figure(2) +plt.clf() +plt.grid() +plt.xlabel('Index in sklearn simulation') +plt.ylabel('Coefficient value') +plt.title('Regularization Paths') +colors = ['b', 'r', 'k', 'g', 'm', 'c', 'y'] +for coeff, name in [(sm_coeff, 'sm'), (sk_coeff, 'sk')]: + if name == 'sk': + ltype = 'x' # linetype + t = lrange(N) # The 'time' parameter + else: + ltype = 'o' + t = s + for i in range(K): + plt.plot(t, coeff[:,i], ltype+colors[i], label=name+'-X'+str(i)) +plt.legend(loc='best') +plt.show() diff --git a/statsmodels/examples/run_all.py b/statsmodels/examples/run_all.py new file mode 100644 index 0000000..34053db --- /dev/null +++ b/statsmodels/examples/run_all.py @@ -0,0 +1,69 @@ +'''run all examples to make sure we don't get an exception + +Note: +If an example contaings plt.show(), then all plot windows have to be closed +manually, at least in my setup. + +uncomment plt.show() to show all plot windows + +''' +from __future__ import print_function +from statsmodels.compat.python import lzip, input +import matplotlib.pyplot as plt #matplotlib is required for many examples + +stop_on_error = True + + +filelist = ['example_glsar.py', 'example_wls.py', 'example_gls.py', + 'example_glm.py', 'example_ols_tftest.py', #'example_rpy.py', + 'example_ols.py', 'example_ols_minimal.py', 'example_rlm.py', + 'example_discrete.py', 'example_predict.py', + 'example_ols_table.py', + 'tut_ols.py', 'tut_ols_rlm.py', 'tut_ols_wls.py'] + +use_glob = True +if use_glob: + import glob + filelist = glob.glob('*.py') + +print(lzip(range(len(filelist)), filelist)) + +for fname in ['run_all.py', 'example_rpy.py']: + filelist.remove(fname) + +#filelist = filelist[15:] + + + +#temporarily disable show +plt_show = plt.show +def noop(*args): + pass +plt.show = noop + +cont = input("""Are you sure you want to run all of the examples? +This is done mainly to check that they are up to date. +(y/n) >>> """) +has_errors = [] +if 'y' in cont.lower(): + for run_all_f in filelist: + try: + print("\n\nExecuting example file", run_all_f) + print("-----------------------" + "-"*len(run_all_f)) + exec(open(run_all_f).read()) + except: + #f might be overwritten in the executed file + print("**********************" + "*"*len(run_all_f)) + print("ERROR in example file", run_all_f) + print("**********************" + "*"*len(run_all_f)) + has_errors.append(run_all_f) + if stop_on_error: + raise + +print('\nModules that raised exception:') +print(has_errors) + +#reenable show after closing windows +plt.close('all') +plt.show = plt_show +plt.show() diff --git a/statsmodels/examples/tests/__init__.py b/statsmodels/examples/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/examples/tests/test_notebooks.py b/statsmodels/examples/tests/test_notebooks.py new file mode 100644 index 0000000..7e30404 --- /dev/null +++ b/statsmodels/examples/tests/test_notebooks.py @@ -0,0 +1,71 @@ +import glob +import io +import os +import sys + +import pytest + +try: + import jupyter_client # noqa: F401 + import nbformat + from nbconvert.preprocessors import ExecutePreprocessor +except ImportError: + pytestmark = pytest.mark.skip(reason='Required packages not available') + +try: + import rpy2 # noqa: F401 + HAS_RPY2 = True +except ImportError: + HAS_RPY2 = False + +try: + import joblib # noqa: F401 + HAS_JOBLIB = True +except ImportError: + HAS_JOBLIB = False + + +KNOWN_FAILURES = [] +JOBLIB_NOTEBOOKS = ['distributed_estimation'] +RPY2_NOTEBOOKS = ['mixed_lm_example', 'robust_models_1'] + +kernel_name = 'python%s' % sys.version_info.major + +head, _ = os.path.split(__file__) +NOTEBOOK_DIR = os.path.join(head, '..', '..', '..', 'examples', 'notebooks') +NOTEBOOK_DIR = os.path.abspath(NOTEBOOK_DIR) + +nbs = sorted(glob.glob(os.path.join(NOTEBOOK_DIR, '*.ipynb'))) +ids = list(map(lambda p: os.path.split(p)[-1], nbs)) + + +@pytest.fixture(params=nbs, ids=ids) +def notebook(request): + return request.param + + +if not nbs: + pytestmark = pytest.mark.skip(reason='No notebooks found so not tests run') + + +@pytest.mark.slow +@pytest.mark.example +def test_notebook(notebook): + fullfile = os.path.abspath(notebook) + _, filename = os.path.split(fullfile) + filename, _ = os.path.splitext(filename) + + if filename in KNOWN_FAILURES: + pytest.skip('{0} is known to fail'.format(filename)) + if filename in RPY2_NOTEBOOKS and not HAS_RPY2: + pytest.skip('{0} since rpy2 is not installed'.format(filename)) + if filename in JOBLIB_NOTEBOOKS and not JOBLIB_NOTEBOOKS: + pytest.skip('{0} since joblib is not installed'.format(filename)) + + with io.open(fullfile, encoding='utf-8') as fp: + nb = nbformat.read(fp, as_version=4) + + ep = ExecutePreprocessor(allow_errors=False, + timeout=20, + kernel_name=kernel_name) + ep.preprocess(nb, {'metadata': {'path': NOTEBOOK_DIR}}) diff --git a/statsmodels/examples/try_2regress.py b/statsmodels/examples/try_2regress.py new file mode 100644 index 0000000..4901ddc --- /dev/null +++ b/statsmodels/examples/try_2regress.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +"""F test for null hypothesis that coefficients in two regressions are the same + +see discussion in http://mail.scipy.org/pipermail/scipy-user/2010-March/024851.html + +Created on Thu Mar 25 22:56:45 2010 +Author: josef-pktd +""" + +from __future__ import print_function +import numpy as np +from numpy.testing import assert_almost_equal +import statsmodels.api as sm + +np.random.seed(87654589) + +nobs = 10 #100 +x1 = np.random.randn(nobs) +y1 = 10 + 15*x1 + 2*np.random.randn(nobs) + +x1 = sm.add_constant(x1, prepend=False) +assert_almost_equal(x1, np.vander(x1[:,0],2), 16) +res1 = sm.OLS(y1, x1).fit() +print(res1.params) +print(np.polyfit(x1[:,0], y1, 1)) +assert_almost_equal(res1.params, np.polyfit(x1[:,0], y1, 1), 14) +print(res1.summary(xname=['x1','const1'])) + +#regression 2 +x2 = np.random.randn(nobs) +y2 = 19 + 17*x2 + 2*np.random.randn(nobs) +#y2 = 10 + 15*x2 + 2*np.random.randn(nobs) # if H0 is true + +x2 = sm.add_constant(x2, prepend=False) +assert_almost_equal(x2, np.vander(x2[:,0],2), 16) + +res2 = sm.OLS(y2, x2).fit() +print(res2.params) +print(np.polyfit(x2[:,0], y2, 1)) +assert_almost_equal(res2.params, np.polyfit(x2[:,0], y2, 1), 14) +print(res2.summary(xname=['x2','const2'])) + + +# joint regression + +x = np.concatenate((x1,x2),0) +y = np.concatenate((y1,y2)) +dummy = np.arange(2*nobs)>nobs-1 +x = np.column_stack((x,x*dummy[:,None])) + +res = sm.OLS(y, x).fit() +print(res.summary(xname=['x','const','x2','const2'])) + +print('\nF test for equal coefficients in 2 regression equations') +#effect of dummy times second regression is zero +#is equivalent to 3rd and 4th coefficient are both zero +print(res.f_test([[0,0,1,0],[0,0,0,1]])) + +print('\nchecking coefficients individual versus joint') +print(res1.params, res2.params) +print(res.params[:2], res.params[:2]+res.params[2:]) +assert_almost_equal(res1.params, res.params[:2], 13) +assert_almost_equal(res2.params, res.params[:2]+res.params[2:], 13) diff --git a/statsmodels/examples/try_fit_constrained.py b/statsmodels/examples/try_fit_constrained.py new file mode 100644 index 0000000..dcfb896 --- /dev/null +++ b/statsmodels/examples/try_fit_constrained.py @@ -0,0 +1,189 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri May 30 22:56:57 2014 + +Author: Josef Perktold +License: BSD-3 + +""" + +import numpy as np +from numpy.testing import assert_allclose, assert_raises + +from statsmodels.base._constraints import (TransformRestriction, + transform_params_constraint, fit_constrained) + + +if __name__ == '__main__': + + + + R = np.array([[1, 1, 0, 0, 0], [0, 0, 1, -1, 0]]) + + + + k_constr, k_vars = R.shape + + m = np.eye(k_vars) - R.T.dot(np.linalg.pinv(R).T) + evals, evecs = np.linalg.eigh(m) + + L = evecs[:, :k_constr] + T = evecs[:, k_constr:] + + print(T.T.dot(np.eye(k_vars))) + + tr = np.column_stack((T, R.T)) + + q = [2, 0] + tr0 = TransformRestriction(R, q) + + p_reduced = [1,1,1] + #round trip test + assert_allclose(tr0.reduce(tr0.expand(p_reduced)), p_reduced, rtol=1e-14) + + + p = tr0.expand(p_reduced) + assert_allclose(R.dot(p), q, rtol=1e-14) + + # inconsistent restrictions + #Ri = np.array([[1, 1, 0, 0, 0], [0, 0, 1, -1, 0], [0, 0, 1, -2, 0]]) + R = np.array([[1, 1, 0, 0, 0], [0, 0, 1, -1, 0], [0, 0, 1, 0, -1]]) + q = np.zeros(R.shape[0]) + tr1 = TransformRestriction(R, q) # bug raises error with q + p = tr1.expand([1,1]) + + # inconsistent restrictions that has a solution with p3=0 + Ri = np.array([[1, 1, 0, 0, 0], [0, 0, 1, -1, 0], [0, 0, 1, -2, 0]]) + tri = TransformRestriction(Ri, [0, 1, 1]) + # Note: the only way this can hold is if variable 3 is zero + p = tri.expand([1,1]) + print(p[[2,3]]) + #array([ 1.00000000e+00, -1.34692639e-17]) + + # inconsistent without any possible solution + Ri2 = np.array([[0, 0, 0, 1, 0], [0, 0, 1, -1, 0], [0, 0, 1, -2, 0]]) + q = [1, 1] + #tri2 = TransformRestriction(Ri2, q) + #p = tri.expand([1,1]) + assert_raises(ValueError, TransformRestriction, Ri2, q) + # L doesn't have full row rank, calculating constant fails with Singular Matrix + + # transform data xr = T x + np.random.seed(1) + x = np.random.randn(10, 5) + xr = tr1.reduce(x) + # roundtrip + x2 = tr1.expand(xr) + # this doesn't hold ? don't use constant? don't need it anyway ? + #assert_allclose(x2, x, rtol=1e-14) + + + from patsy import DesignInfo + + names = 'a b c d'.split() + LC = DesignInfo(names).linear_constraint('a + b = 0') + LC = DesignInfo(names).linear_constraint(['a + b = 0', 'a + 2*c = 1', 'b-a', 'c-a', 'd-a']) + #LC = DesignInfo(self.model.exog_names).linear_constraint(r_matrix) + r_matrix, q_matrix = LC.coefs, LC.constants + + np.random.seed(123) + nobs = 20 + x = 1 + np.random.randn(nobs, 4) + exog = np.column_stack((np.ones(nobs), x)) + endog = exog.sum(1) + np.random.randn(nobs) + + from statsmodels.regression.linear_model import OLS + res2 = OLS(endog, exog).fit() + #transf = TransformRestriction(np.eye(exog.shape[1])[:2], res2.params[:2] / 2) + transf = TransformRestriction([[0, 0, 0,1,1]], res2.params[-2:].sum()) + exog_st = transf.reduce(exog) + res1 = OLS(endog, exog_st).fit() + # need to correct for constant/offset in the optimization + res1 = OLS(endog - exog.dot(transf.constant.squeeze()), exog_st).fit() + params = transf.expand(res1.params).squeeze() + assert_allclose(params, res2.params, rtol=1e-13) + print(res2.params) + print(params) + print(res1.params) + + res3_ols = OLS(endog - exog[:, -1], exog[:, :-2]).fit() + #transf = TransformRestriction(np.eye(exog.shape[1])[:2], res2.params[:2] / 2) + transf3 = TransformRestriction([[0, 0, 0, 1, 0],[0, 0, 0, 0, 1]], [0, 1]) + exog3_st = transf3.reduce(exog) + res3 = OLS(endog, exog3_st).fit() + # need to correct for constant/offset in the optimization + res3 = OLS(endog - exog.dot(transf3.constant.squeeze()), exog3_st).fit() + params = transf3.expand(res3.params).squeeze() + assert_allclose(params[:-2], res3_ols.params, rtol=1e-13) + print(res3.params) + print(params) + print(res3_ols.params) + print(res3_ols.bse) + # the following raises `ValueError: can't test a constant constraint` + #tt = res3.t_test(transf3.transf_mat, transf3.constant.squeeze()) + #print tt.sd + cov_params3 = transf3.transf_mat.dot(res3.cov_params()).dot(transf3.transf_mat.T) + bse3 = np.sqrt(np.diag(cov_params3)) + print(bse3) + + tp = transform_params_constraint(res2.params, res2.normalized_cov_params, + transf3.R, transf3.q) + tp = transform_params_constraint(res2.params, res2.cov_params(), transf3.R, transf3.q) + + import statsmodels.api as sm + rand_data = sm.datasets.randhie.load(as_pandas=False) + rand_exog = rand_data.exog.view(float).reshape(len(rand_data.exog), -1) + rand_exog = sm.add_constant(rand_exog, prepend=False) + + + # Fit Poisson model: + poisson_mod0 = sm.Poisson(rand_data.endog, rand_exog) + poisson_res0 = poisson_mod0.fit(method="newton") + + R = np.zeros((2, 10)) + R[0, -2] = 1 + R[1, -1] = 1 + transfp = TransformRestriction(R, [0, 1]) + poisson_mod = sm.Poisson(rand_data.endog, rand_exog[:, :-2]) + # note wrong offset, why did I put offset in fit ? it's ignored + poisson_res = poisson_mod.fit(method="newton", offset=rand_exog.dot(transfp.constant.squeeze())) + + exogp_st = transfp.reduce(rand_exog) + poisson_modr = sm.Poisson(rand_data.endog, exogp_st) + poisson_resr = poisson_modr.fit(method="newton") + paramsp = transfp.expand(poisson_resr.params).squeeze() + print('\nPoisson') + print(paramsp) + print(poisson_res.params) + # error because I don't use the unconstrained basic model +# tp = transform_params_constraint(poisson_res.params, poisson_res.cov_params(), transfp.R, transfp.q) +# cov_params3 = transf3.transf_mat.dot(res3.cov_params()).dot(transf3.transf_mat.T) +# bse3 = np.sqrt(np.diag(cov_params3)) + + + poisson_mod0 = sm.Poisson(rand_data.endog, rand_exog) + poisson_res0 = poisson_mod0.fit(method="newton") + tp = transform_params_constraint(poisson_res0.params, poisson_res0.cov_params(), transfp.R, transfp.q) + cov_params3 = transf3.transf_mat.dot(res3.cov_params()).dot(transf3.transf_mat.T) + bse3 = np.sqrt(np.diag(cov_params3)) + + # try again same example as it was intended + + poisson_mod = sm.Poisson(rand_data.endog, rand_exog[:, :-2], offset=rand_exog[:, -1]) + poisson_res = poisson_mod.fit(method="newton") + + exogp_st = transfp.reduce(rand_exog) + poisson_modr = sm.Poisson(rand_data.endog, exogp_st, offset=rand_exog.dot(transfp.constant.squeeze())) + poisson_resr = poisson_modr.fit(method="newton") + paramsp = transfp.expand(poisson_resr.params).squeeze() + print('\nPoisson') + print(paramsp) + print(poisson_resr.params) + tp = transform_params_constraint(poisson_res0.params, poisson_res0.cov_params(), transfp.R, transfp.q) + cov_paramsp = transfp.transf_mat.dot(poisson_resr.cov_params()).dot(transfp.transf_mat.T) + bsep = np.sqrt(np.diag(cov_paramsp)) + print(bsep) + p, cov, res_r = fit_constrained(poisson_mod0, transfp.R, transfp.q) + se = np.sqrt(np.diag(cov)) + print(p) + print(se) diff --git a/statsmodels/examples/try_gee.py b/statsmodels/examples/try_gee.py new file mode 100644 index 0000000..32fdae4 --- /dev/null +++ b/statsmodels/examples/try_gee.py @@ -0,0 +1,83 @@ +# -*- coding: utf-8 -*- +""" + +Created on Thu Jul 18 14:57:46 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function +import numpy as np + +from statsmodels.genmod.generalized_estimating_equations import GEE, GEEMargins + +from statsmodels.genmod.families import Gaussian + +from statsmodels.genmod.tests import gee_gaussian_simulation_check as gees + +da,va = gees.gen_gendat_ar0(0.6)() +ga = Gaussian() +lhs = np.array([[0., 1, 1, 0, 0],]) +rhs = np.r_[0.,] + +example = [] +if 'constraint' in example: + md = GEE(da.endog, da.exog, da.group, da.time, ga, va, + constraint=(lhs, rhs)) + mdf = md.fit() + print(mdf.summary()) + + +md2 = GEE(da.endog, da.exog, da.group, da.time, ga, va, + constraint=None) +mdf2 = md2.fit() +print('\n\n') +print(mdf2.summary()) + + +mdf2.use_t = False +mdf2.df_resid = np.diff(mdf2.model.exog.shape) +tt2 = mdf2.t_test(np.eye(len(mdf2.params))) +# need master to get wald_test +#print mdf2.wald_test(np.eye(len(mdf2.params))[1:]) + +mdf2.predict(da.exog.mean(0), offset=0) +# -0.10867809062890971 + +marg2 = GEEMargins(mdf2, ()) +print(marg2.summary()) + + +mdf_nc = md2.fit(cov_type='naive') +mdf_bc = md2.fit(cov_type='bias_reduced') + +mdf_nc.use_t = False +mdf_nc.df_resid = np.diff(mdf2.model.exog.shape) +mdf_bc.use_t = False +mdf_bc.df_resid = np.diff(mdf2.model.exog.shape) + +tt_nc = mdf_nc.t_test(np.eye(len(mdf2.params))) +tt_bc = mdf_bc.t_test(np.eye(len(mdf2.params))) + +print('\nttest robust') +print(tt2) +print('\nttest naive') +print(tt_nc) +print('\nttest bias corrected') +print(tt_bc) + +print("\nbse after fit option ") +bse = np.column_stack((mdf2.bse, mdf2.bse, mdf_nc.bse, mdf_bc.bse)) +print(bse) + +print("\nimplemented `standard_errors`") +bse2 = np.column_stack((mdf2.bse, mdf2.standard_errors(), + mdf2.standard_errors(covariance_type='naive'), + mdf2.standard_errors(covariance_type='bias_reduced'))) +print(bse2) +print("bse and `standard_errors` agree:", np.allclose(bse, bse2)) + +print("\nimplied standard errors in t_test") +bse1 = np.column_stack((mdf2.bse, tt2.sd, tt_nc.sd, tt_bc.sd)) +print(bse1) +print("t_test uses correct cov_params:", np.allclose(bse1, bse2)) diff --git a/statsmodels/examples/try_gof_chisquare.py b/statsmodels/examples/try_gof_chisquare.py new file mode 100644 index 0000000..93ece1a --- /dev/null +++ b/statsmodels/examples/try_gof_chisquare.py @@ -0,0 +1,101 @@ +# -*- coding: utf-8 -*- +""" + +Created on Thu Feb 28 15:37:53 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function +import numpy as np +from scipy import stats +from statsmodels.stats.gof import (chisquare, chisquare_power, + chisquare_effectsize) + +from numpy.testing import assert_almost_equal + + +nobs = 30000 +n_bins = 5 +probs = 1./np.arange(2, n_bins + 2) +probs /= probs.sum() +#nicer +probs = np.round(probs, 2) +probs[-1] = 1 - probs[:-1].sum() +print("probs", probs) +probs_d = probs.copy() +delta = 0.01 +probs_d[0] += delta +probs_d[1] -= delta +probs_cs = probs.cumsum() +#rvs = np.random.multinomial(n_bins, probs, size=10) +#rvs = np.round(np.random.randn(10), 2) +rvs = np.argmax(np.random.rand(nobs,1) < probs_cs, 1) +print(probs) +print(np.bincount(rvs) * (1. / nobs)) + + +freq = np.bincount(rvs) +print(stats.chisquare(freq, nobs*probs)) +print('null', chisquare(freq, nobs*probs)) +print('delta', chisquare(freq, nobs*probs_d)) +chisq_null, pval_null = chisquare(freq, nobs*probs) + +# effect size ? +d_null = ((freq / float(nobs) - probs)**2 / probs).sum() +print(d_null) +d_delta = ((freq / float(nobs) - probs_d)**2 / probs_d).sum() +print(d_delta) +d_null_alt = ((probs - probs_d)**2 / probs_d).sum() +print(d_null_alt) + +print('\nchisquare with value') +chisq, pval = chisquare(freq, nobs*probs_d) +print(stats.ncx2.sf(chisq_null, n_bins, 0.001 * nobs)) +print(stats.ncx2.sf(chisq, n_bins, 0.001 * nobs)) +print(stats.ncx2.sf(chisq, n_bins, d_delta * nobs)) +print(chisquare(freq, nobs*probs_d, value=np.sqrt(d_delta))) +print(chisquare(freq, nobs*probs_d, value=np.sqrt(chisq / nobs))) +print() + +assert_almost_equal(stats.chi2.sf(d_delta * nobs, n_bins - 1), + chisquare(freq, nobs*probs_d)[1], decimal=13) + +crit = stats.chi2.isf(0.05, n_bins - 1) +power = stats.ncx2.sf(crit, n_bins-1, 0.001**2 * nobs) +#> library(pwr) +#> tr = pwr.chisq.test(w =0.001, N =30000 , df = 5-1, sig.level = 0.05, power = NULL) +assert_almost_equal(power, 0.05147563, decimal=7) +effect_size = 0.001 +power = chisquare_power(effect_size, nobs, n_bins, alpha=0.05) +assert_almost_equal(power, 0.05147563, decimal=7) +print(chisquare(freq, nobs*probs, value=0, ddof=0)) +d_null_alt = ((probs - probs_d)**2 / probs).sum() +print(chisquare(freq, nobs*probs, value=np.sqrt(d_null_alt), ddof=0)) + + +#Monte Carlo to check correct size and power of test + +d_delta_r = chisquare_effectsize(probs, probs_d) +n_rep = 10000 +nobs = 3000 +res_boots = np.zeros((n_rep, 6)) +for i in range(n_rep): + rvs = np.argmax(np.random.rand(nobs,1) < probs_cs, 1) + freq = np.bincount(rvs) + res1 = chisquare(freq, nobs*probs) + res2 = chisquare(freq, nobs*probs_d) + res3 = chisquare(freq, nobs*probs_d, value=d_delta_r) + res_boots[i] = [res1[0], res2[0], res3[0], res1[1], res2[1], res3[1]] + +alpha = np.array([0.01, 0.05, 0.1, 0.25, 0.5]) +chi2_power = chisquare_power(chisquare_effectsize(probs, probs_d), 3000, n_bins, + alpha=[0.01, 0.05, 0.1, 0.25, 0.5]) +print((res_boots[:, 3:] < 0.05).mean(0)) +reject_freq = (res_boots[:, 3:, None] < alpha).mean(0) +reject = (res_boots[:, 3:, None] < alpha).sum(0) + +desired = np.column_stack((alpha, chi2_power, alpha)).T + +print('relative difference Monte Carlo rejection and expected (in %)') +print((reject_freq / desired - 1) * 100) diff --git a/statsmodels/examples/try_polytrend.py b/statsmodels/examples/try_polytrend.py new file mode 100644 index 0000000..dd7c323 --- /dev/null +++ b/statsmodels/examples/try_polytrend.py @@ -0,0 +1,63 @@ + + +from __future__ import print_function +import numpy as np +import matplotlib.pyplot as plt +#import statsmodels.linear_model.regression as smreg + +from scipy import special + +import statsmodels.api as sm +from statsmodels.datasets.macrodata import data +dta = data.load(as_pandas=False) +gdp = np.log(dta.data['realgdp']) + + +maxorder = 20 +polybase = special.chebyt +polybase = special.legendre + +t = np.linspace(-1,1,len(gdp)) + +exog = np.column_stack([polybase(i)(t) for i in range(maxorder)]) + +fitted = [sm.OLS(gdp, exog[:, :maxr]).fit().fittedvalues for maxr in + range(2,maxorder)] + +print((np.corrcoef(exog[:,1:6], rowvar=0)*10000).astype(int)) + + +plt.figure() +plt.plot(gdp, 'o') +for i in range(maxorder-2): + plt.plot(fitted[i]) + +plt.figure() +#plt.plot(gdp, 'o') +for i in range(maxorder-4, maxorder-2): + #plt.figure() + plt.plot(gdp - fitted[i]) + plt.title(str(i+2)) + +plt.figure() +plt.plot(gdp, '.') +plt.plot(fitted[-1], lw=2, color='r') +plt.plot(fitted[0], lw=2, color='g') +plt.title('GDP and Polynomial Trend') + +plt.figure() +plt.plot(gdp - fitted[-1], lw=2, color='r') +plt.plot(gdp - fitted[0], lw=2, color='g') +plt.title('Residual GDP minus Polynomial Trend (green: linear, red: legendre(20))') + + +#orthonormalize an exog using QR + +ex2 = t[:,None]**np.arange(6) #np.vander has columns reversed +q2,r2 = np.linalg.qr(ex2, mode='full') +np.max(np.abs(np.dot(q2.T, q2)-np.eye(6))) +plt.figure() +plt.plot(q2, lw=2) + + +plt.show() diff --git a/statsmodels/examples/try_power.py b/statsmodels/examples/try_power.py new file mode 100644 index 0000000..a1d01c7 --- /dev/null +++ b/statsmodels/examples/try_power.py @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- +""" + +Created on Sat Mar 02 14:38:17 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function + +import statsmodels.stats.power as smp + +sigma=1 +d=0.3 +nobs=80 +alpha=0.05 +print(smp.normal_power(d, nobs/2, 0.05)) +print(smp.NormalIndPower().power(d, nobs, 0.05)) +print(smp.NormalIndPower().solve_power(effect_size=0.3, nobs1=80, alpha=0.05, power=None)) +print(0.475100870572638, 'R') + +norm_pow = smp.normal_power(-0.01, nobs/2, 0.05) +norm_pow_R = 0.05045832927039234 +#value from R: >pwr.2p.test(h=0.01,n=80,sig.level=0.05,alternative="two.sided") +print('norm_pow', norm_pow, norm_pow - norm_pow_R) + +norm_pow = smp.NormalIndPower().power(0.01, nobs, 0.05, alternative="larger") +norm_pow_R = 0.056869534873146124 +#value from R: >pwr.2p.test(h=0.01,n=80,sig.level=0.05,alternative="greater") +print('norm_pow', norm_pow, norm_pow - norm_pow_R) + +# Note: negative effect size is same as switching one-sided alternative +# TODO: should I switch to larger/smaller instead of "one-sided" options +norm_pow = smp.NormalIndPower().power(-0.01, nobs, 0.05, alternative="larger") +norm_pow_R = 0.0438089705093578 +#value from R: >pwr.2p.test(h=0.01,n=80,sig.level=0.05,alternative="less") +print('norm_pow', norm_pow, norm_pow - norm_pow_R) + + +#Note: I use n_bins and ddof instead of df +# pwr.chisq.test(w=0.289,df=(4-1),N=100,sig.level=0.05) +chi2_pow = smp.GofChisquarePower().power(0.289, 100, 4, 0.05) +chi2_pow_R = 0.675077657003721 +print('chi2_pow', chi2_pow, chi2_pow - chi2_pow_R) + +chi2_pow = smp.GofChisquarePower().power(0.01, 100, 4, 0.05) +chi2_pow_R = 0.0505845519208533 +print('chi2_pow', chi2_pow, chi2_pow - chi2_pow_R) + +chi2_pow = smp.GofChisquarePower().power(2, 100, 4, 0.05) +chi2_pow_R = 1 +print('chi2_pow', chi2_pow, chi2_pow - chi2_pow_R) + +chi2_pow = smp.GofChisquarePower().power(0.9, 100, 4, 0.05) +chi2_pow_R = 0.999999999919477 +print('chi2_pow', chi2_pow, chi2_pow - chi2_pow_R, 'lower precision ?') + +chi2_pow = smp.GofChisquarePower().power(0.8, 100, 4, 0.05) +chi2_pow_R = 0.999999968205591 +print('chi2_pow', chi2_pow, chi2_pow - chi2_pow_R) + +def cohen_es(*args, **kwds): + print("You better check what's a meaningful effect size for your question.") + + +#BUG: after fixing 2.sided option, 2 rejection areas +tt_pow = smp.TTestPower().power(effect_size=0.01, nobs=nobs, alpha=0.05) +tt_pow_R = 0.05089485285965 +# value from> pwr.t.test(d=0.01,n=80,sig.level=0.05,type="one.sample",alternative="two.sided") +print('tt_pow', tt_pow, tt_pow - tt_pow_R) diff --git a/statsmodels/examples/try_power2.py b/statsmodels/examples/try_power2.py new file mode 100644 index 0000000..14b27ed --- /dev/null +++ b/statsmodels/examples/try_power2.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +""" + +Created on Wed Mar 13 13:06:14 2013 + +Author: Josef Perktold +""" + +from __future__ import print_function +from statsmodels.stats.power import TTestPower, TTestIndPower, tt_solve_power + +if __name__ == '__main__': + effect_size, alpha, power = 0.5, 0.05, 0.8 + + ttest_pow = TTestPower() + print('\nroundtrip - root with respect to all variables') + print('\n calculated, desired') + + nobs_p = ttest_pow.solve_power(effect_size=effect_size, nobs=None, alpha=alpha, power=power) + print('nobs ', nobs_p) + print('effect', ttest_pow.solve_power(effect_size=None, nobs=nobs_p, alpha=alpha, power=power), effect_size) + + print('alpha ', ttest_pow.solve_power(effect_size=effect_size, nobs=nobs_p, alpha=None, power=power), alpha) + print('power ', ttest_pow.solve_power(effect_size=effect_size, nobs=nobs_p, alpha=alpha, power=None), power) + + print('\nroundtrip - root with respect to all variables') + print('\n calculated, desired') + + print('nobs ', tt_solve_power(effect_size=effect_size, nobs=None, alpha=alpha, power=power), nobs_p) + print('effect', tt_solve_power(effect_size=None, nobs=nobs_p, alpha=alpha, power=power), effect_size) + + print('alpha ', tt_solve_power(effect_size=effect_size, nobs=nobs_p, alpha=None, power=power), alpha) + print('power ', tt_solve_power(effect_size=effect_size, nobs=nobs_p, alpha=alpha, power=None), power) + + print('\none sided') + nobs_p1 = tt_solve_power(effect_size=effect_size, nobs=None, alpha=alpha, power=power, alternative='larger') + print('nobs ', nobs_p1) + print('effect', tt_solve_power(effect_size=None, nobs=nobs_p1, alpha=alpha, power=power, alternative='larger'), effect_size) + print('alpha ', tt_solve_power(effect_size=effect_size, nobs=nobs_p1, alpha=None, power=power, alternative='larger'), alpha) + print('power ', tt_solve_power(effect_size=effect_size, nobs=nobs_p1, alpha=alpha, power=None, alternative='larger'), power) + + #start_ttp = dict(effect_size=0.01, nobs1=10., alpha=0.15, power=0.6) + + ttind_solve_power = TTestIndPower().solve_power + + print('\nroundtrip - root with respect to all variables') + print('\n calculated, desired') + + nobs_p2 = ttind_solve_power(effect_size=effect_size, nobs1=None, alpha=alpha, power=power) + print('nobs ', nobs_p2) + print('effect', ttind_solve_power(effect_size=None, nobs1=nobs_p2, alpha=alpha, power=power), effect_size) + print('alpha ', ttind_solve_power(effect_size=effect_size, nobs1=nobs_p2, alpha=None, power=power), alpha) + print('power ', ttind_solve_power(effect_size=effect_size, nobs1=nobs_p2, alpha=alpha, power=None), power) + print('ratio ', ttind_solve_power(effect_size=effect_size, nobs1=nobs_p2, alpha=alpha, power=power, ratio=None), 1) + + print('\ncheck ratio') + print('smaller power', ttind_solve_power(effect_size=effect_size, nobs1=nobs_p2, alpha=alpha, power=0.7, ratio=None), '< 1') + print('larger power ', ttind_solve_power(effect_size=effect_size, nobs1=nobs_p2, alpha=alpha, power=0.9, ratio=None), '> 1') diff --git a/statsmodels/examples/try_tukey_hsd.py b/statsmodels/examples/try_tukey_hsd.py new file mode 100644 index 0000000..0f7d696 --- /dev/null +++ b/statsmodels/examples/try_tukey_hsd.py @@ -0,0 +1,223 @@ +# -*- coding: utf-8 -*- +""" + +Created on Wed Mar 28 15:34:18 2012 + +Author: Josef Perktold +""" + +from __future__ import print_function +from statsmodels.compat.python import StringIO +import numpy as np +from numpy.testing import assert_almost_equal, assert_equal +from scipy import stats + +from statsmodels.stats.libqsturng import qsturng +from statsmodels.stats.multicomp import tukeyhsd +import statsmodels.stats.multicomp as multi + + +ss = '''\ + 43.9 1 1 + 39.0 1 2 + 46.7 1 3 + 43.8 1 4 + 44.2 1 5 + 47.7 1 6 + 43.6 1 7 + 38.9 1 8 + 43.6 1 9 + 40.0 1 10 + 89.8 2 1 + 87.1 2 2 + 92.7 2 3 + 90.6 2 4 + 87.7 2 5 + 92.4 2 6 + 86.1 2 7 + 88.1 2 8 + 90.8 2 9 + 89.1 2 10 + 68.4 3 1 + 69.3 3 2 + 68.5 3 3 + 66.4 3 4 + 70.0 3 5 + 68.1 3 6 + 70.6 3 7 + 65.2 3 8 + 63.8 3 9 + 69.2 3 10 + 36.2 4 1 + 45.2 4 2 + 40.7 4 3 + 40.5 4 4 + 39.3 4 5 + 40.3 4 6 + 43.2 4 7 + 38.7 4 8 + 40.9 4 9 + 39.7 4 10''' + +#idx Treatment StressReduction +ss2 = '''\ +1 mental 2 +2 mental 2 +3 mental 3 +4 mental 4 +5 mental 4 +6 mental 5 +7 mental 3 +8 mental 4 +9 mental 4 +10 mental 4 +11 physical 4 +12 physical 4 +13 physical 3 +14 physical 5 +15 physical 4 +16 physical 1 +17 physical 1 +18 physical 2 +19 physical 3 +20 physical 3 +21 medical 1 +22 medical 2 +23 medical 2 +24 medical 2 +25 medical 3 +26 medical 2 +27 medical 3 +28 medical 1 +29 medical 3 +30 medical 1''' + +ss3 = '''\ +1 24.5 +1 23.5 +1 26.4 +1 27.1 +1 29.9 +2 28.4 +2 34.2 +2 29.5 +2 32.2 +2 30.1 +3 26.1 +3 28.3 +3 24.3 +3 26.2 +3 27.8''' + +cylinders = np.array([8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 6, 6, 6, 4, 4, + 4, 4, 4, 4, 6, 8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 8, 8, 6, 6, 6, 6, 4, 4, 4, 4, 6, 6, + 6, 6, 4, 4, 4, 4, 4, 8, 4, 6, 6, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 6, 6, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4]) +cyl_labels = np.array(['USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'France', + 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'Japan', 'USA', 'USA', 'USA', 'Japan', + 'Germany', 'France', 'Germany', 'Sweden', 'Germany', 'USA', 'USA', 'USA', 'USA', 'USA', 'Germany', + 'USA', 'USA', 'France', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'Germany', + 'Japan', 'USA', 'USA', 'USA', 'USA', 'Germany', 'Japan', 'Japan', 'USA', 'Sweden', 'USA', 'France', + 'Japan', 'Germany', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', + 'Germany', 'Japan', 'Japan', 'USA', 'USA', 'Japan', 'Japan', 'Japan', 'Japan', 'Japan', 'Japan', 'USA', + 'USA', 'USA', 'USA', 'Japan', 'USA', 'USA', 'USA', 'Germany', 'USA', 'USA', 'USA']) + +dta = np.recfromtxt(StringIO(ss), names=("Rust","Brand","Replication")) +dta2 = np.recfromtxt(StringIO(ss2), names = ("idx", "Treatment", "StressReduction")) +dta3 = np.recfromtxt(StringIO(ss3), names = ("Brand", "Relief")) + +#print tukeyhsd(dta['Brand'], dta['Rust']) + +def get_thsd(mci): + var_ = np.var(mci.groupstats.groupdemean(), ddof=len(mci.groupsunique)) + means = mci.groupstats.groupmean + nobs = mci.groupstats.groupnobs + resi = tukeyhsd(means, nobs, var_, df=None, alpha=0.05, q_crit=qsturng(0.95, len(means), (nobs-1).sum())) + print(resi[4]) + var2 = (mci.groupstats.groupvarwithin() * (nobs - 1)).sum() \ + / (nobs - 1).sum() + assert_almost_equal(var_, var2, decimal=14) + return resi + +mc = multi.MultiComparison(dta['Rust'], dta['Brand']) +res = mc.tukeyhsd() +print(res) + +mc2 = multi.MultiComparison(dta2['StressReduction'], dta2['Treatment']) +res2 = mc2.tukeyhsd() +print(res2) + +mc2s = multi.MultiComparison(dta2['StressReduction'][3:29], dta2['Treatment'][3:29]) +res2s = mc2s.tukeyhsd() +print(res2s) +res2s_001 = mc2s.tukeyhsd(alpha=0.01) +#R result +tukeyhsd2s = np.array([1.888889,0.8888889,-1,0.2658549,-0.5908785,-2.587133,3.511923,2.368656,0.5871331,0.002837638,0.150456,0.1266072]).reshape(3,4, order='F') +assert_almost_equal(res2s_001.confint, tukeyhsd2s[:,1:3], decimal=3) + +mc3 = multi.MultiComparison(dta3['Relief'], dta3['Brand']) +res3 = mc3.tukeyhsd() +print(res3) + +tukeyhsd4 = multi.MultiComparison(cylinders, cyl_labels, group_order=["Sweden", "Japan", "Germany", "France", "USA"]) +res4 = tukeyhsd4.tukeyhsd() +print(res4) +try: + import matplotlib.pyplot as plt + fig = res4.plot_simultaneous("USA") + plt.show() +except Exception as e: + print(e) + +for mci in [mc, mc2, mc3]: + get_thsd(mci) + +print(mc2.allpairtest(stats.ttest_ind, method='b')[0]) + +'''same as SAS: +>>> np.var(mci.groupstats.groupdemean(), ddof=3) +4.6773333333333351 +>>> var_ = np.var(mci.groupstats.groupdemean(), ddof=3) +>>> tukeyhsd(means, nobs, var_, df=None, alpha=0.05, q_crit=qsturng(0.95, 3, 12))[4] +array([[ 0.95263648, 8.24736352], + [-3.38736352, 3.90736352], + [-7.98736352, -0.69263648]]) +>>> tukeyhsd(means, nobs, var_, df=None, alpha=0.05, q_crit=3.77278)[4] +array([[ 0.95098508, 8.24901492], + [-3.38901492, 3.90901492], + [-7.98901492, -0.69098508]]) +''' + +ss5 = '''\ +Comparisons significant at the 0.05 level are indicated by ***. +BRAND +Comparison Difference +Between +Means Simultaneous 95% Confidence Limits Sign. +2 - 3 4.340 0.691 7.989 *** +2 - 1 4.600 0.951 8.249 *** +3 - 2 -4.340 -7.989 -0.691 *** +3 - 1 0.260 -3.389 3.909 - +1 - 2 -4.600 -8.249 -0.951 *** +1 - 3 -0.260 -3.909 3.389 ''' + +ss5 = '''\ +2 - 3 4.340 0.691 7.989 *** +2 - 1 4.600 0.951 8.249 *** +3 - 2 -4.340 -7.989 -0.691 *** +3 - 1 0.260 -3.389 3.909 - +1 - 2 -4.600 -8.249 -0.951 *** +1 - 3 -0.260 -3.909 3.389 ''' + +dta5 = np.recfromtxt(StringIO(ss5), names = ('pair', 'mean', 'lower', 'upper', 'sig'), delimiter='\t') + +sas_ = dta5[[1,3,2]] +confint1 = res3.confint +confint2 = sas_[['lower','upper']].view(float).reshape((3,2)) +assert_almost_equal(confint1, confint2, decimal=2) +reject1 = res3.reject +reject2 = sas_['sig'] == '***' +assert_equal(reject1, reject2) +meandiff1 = res3.meandiffs +meandiff2 = sas_['mean'] +assert_almost_equal(meandiff1, meandiff2, decimal=14) diff --git a/statsmodels/examples/tsa/ar1cholesky.py b/statsmodels/examples/tsa/ar1cholesky.py new file mode 100644 index 0000000..1751c57 --- /dev/null +++ b/statsmodels/examples/tsa/ar1cholesky.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +""" +Created on Thu Oct 21 15:42:18 2010 + +Author: josef-pktd +""" + +from __future__ import print_function +import numpy as np +from scipy import linalg + +def tiny2zero(x, eps = 1e-15): + '''replace abs values smaller than eps by zero, makes copy + ''' + mask = np.abs(x.copy()) < eps + x[mask] = 0 + return x + + +nobs = 5 +autocov = 0.8**np.arange(nobs) +#from statsmodels.tsa import arima_process as ap +#autocov = ap.arma_acf([1, -0.8, 0.2], [1])[:10] +autocov = np.array([ 3., 2., 1., 0.4, 0.12, 0.016, -0.0112, + 0.016 , -0.0112 , -0.01216 , -0.007488 , -0.0035584])/3. +autocov = autocov[:nobs] +sigma = linalg.toeplitz(autocov) +sigmainv = linalg.inv(sigma) + +c = linalg.cholesky(sigma, lower=True) +ci = linalg.cholesky(sigmainv, lower=True) + +print(sigma) +print(tiny2zero(ci/ci.max())) + +"this is the text book transformation" +print('coefficient for first observation', np.sqrt(1-autocov[1]**2)) +ci2 = ci[::-1,::-1].T +print(tiny2zero(ci2/ci2.max())) + +print(np.dot(ci/ci.max(), np.ones(nobs))) + +print(np.dot(ci2/ci2.max(), np.ones(nobs))) diff --git a/statsmodels/examples/tsa/arma_plots.py b/statsmodels/examples/tsa/arma_plots.py new file mode 100644 index 0000000..22db579 --- /dev/null +++ b/statsmodels/examples/tsa/arma_plots.py @@ -0,0 +1,77 @@ +'''Plot acf and pacf for some ARMA(1,1) + +''' + + +from __future__ import print_function +import numpy as np +import matplotlib.pyplot as plt +import matplotlib.ticker as mticker + +import statsmodels.tsa.arima_process as tsp +from statsmodels.graphics.tsaplots import plotacf + +np.set_printoptions(precision=2) + + +arcoefs = [0.9, 0., -0.5] #[0.9, 0.5, 0.1, 0., -0.5] +macoefs = [0.9, 0., -0.5] #[0.9, 0.5, 0.1, 0., -0.5] +nsample = 1000 +nburnin = 1000 +sig = 1 + +fig = plt.figure(figsize=(8, 13)) +fig.suptitle('ARMA: Autocorrelation (left) and Partial Autocorrelation (right)') +subplotcount = 1 +nrows = 4 +for arcoef in arcoefs[:-1]: + for macoef in macoefs[:-1]: + ar = np.r_[1., -arcoef] + ma = np.r_[1., macoef] + + #from statsmodels.sandbox.tsa.fftarma import ArmaFft as FftArmaProcess + #y = tsp.arma_generate_sample(ar,ma,nsample, sig, burnin) + #armaprocess = FftArmaProcess(ar, ma, nsample) #TODO: make n optional + #armaprocess.plot4() + armaprocess = tsp.ArmaProcess(ar, ma) + acf = armaprocess.acf(20)[:20] + pacf = armaprocess.pacf(20)[:20] + ax = fig.add_subplot(nrows, 2, subplotcount) + plotacf(acf, ax=ax) +## ax.set_title('Autocorrelation \nar=%s, ma=%rs' % (ar, ma), +## size='xx-small') + ax.text(0.7, 0.6, 'ar =%s \nma=%s' % (ar, ma), + transform=ax.transAxes, + horizontalalignment='left', #'right', + size='xx-small') + ax.set_xlim(-1,20) + subplotcount +=1 + ax = fig.add_subplot(nrows, 2, subplotcount) + plotacf(pacf, ax=ax) +## ax.set_title('Partial Autocorrelation \nar=%s, ma=%rs' % (ar, ma), +## size='xx-small') + ax.text(0.7, 0.6, 'ar =%s \nma=%s' % (ar, ma), + transform=ax.transAxes, + horizontalalignment='left', #'right', + size='xx-small') + ax.set_xlim(-1,20) + subplotcount +=1 + +axs = fig.axes +### turn of the 2nd column y tick labels +##for ax in axs[1::2]:#[:,1].flat: +## for label in ax.get_yticklabels(): label.set_visible(False) + +# turn off all but the bottom xtick labels +for ax in axs[:-2]:#[:-1,:].flat: + for label in ax.get_xticklabels(): label.set_visible(False) + + +# use a MaxNLocator on the first column y axis if you have a bunch of +# rows to avoid bunching; example below uses at most 3 ticks +for ax in axs: #[::2]:#[:,1].flat: + ax.yaxis.set_major_locator( mticker.MaxNLocator(3 )) + + + +plt.show() diff --git a/statsmodels/examples/tsa/compare_arma.py b/statsmodels/examples/tsa/compare_arma.py new file mode 100644 index 0000000..79dea73 --- /dev/null +++ b/statsmodels/examples/tsa/compare_arma.py @@ -0,0 +1,77 @@ +from __future__ import print_function +from time import time +from statsmodels.tsa.arma_mle import Arma +from statsmodels.tsa.api import ARMA +import numpy as np + +print("Battle of the dueling ARMAs") + +y_arma22 = np.loadtxt(r'C:\Josef\eclipsegworkspace\statsmodels-josef-experimental-gsoc\scikits\statsmodels\tsa\y_arma22.txt') + +arma1 = Arma(y_arma22) +arma2 = ARMA(y_arma22) + +print("The actual results from gretl exact mle are") +params_mle = np.array([.826990, -.333986, .0362419, -.792825]) +sigma_mle = 1.094011 +llf_mle = -1510.233 +print("params: ", params_mle) +print("sigma: ", sigma_mle) +print("llf: ", llf_mle) +print("The actual results from gretl css are") +params_css = np.array([.824810, -.337077, .0407222, -.789792]) +sigma_css = 1.095688 +llf_css = -1507.301 + +results = [] +results += ["gretl exact mle", params_mle, sigma_mle, llf_mle] +results += ["gretl css", params_css, sigma_css, llf_css] + +t0 = time() +print("Exact MLE - Kalman filter version using l_bfgs_b") +arma2.fit(order=(2,2), trend='nc') +t1 = time() +print("params: ", arma2.params) +print("sigma: ", arma2.sigma2**.5) +arma2.llf = arma2.loglike(arma2._invtransparams(arma2.params)) +results += ["exact mle kalmanf", arma2.params, arma2.sigma2**.5, arma2.llf] +print('time used:', t1-t0) + +t1=time() +print("CSS MLE - ARMA Class") +arma2.fit(order=(2,2), trend='nc', method="css") +t2=time() +arma2.llf = arma2.loglike_css(arma2._invtransparams(arma2.params)) +print("params: ", arma2.params) +print("sigma: ", arma2.sigma2**.5) +results += ["css kalmanf", arma2.params, arma2.sigma2**.5, arma2.llf] +print('time used:', t2-t1) + +print("Arma.fit_mle results") +# have to set nar and nma manually +arma1.nar = 2 +arma1.nma = 2 +t2=time() +ret = arma1.fit_mle() +t3=time() +print("params, first 4, sigma, last 1 ", ret.params) +results += ["Arma.fit_mle ", ret.params[:4], ret.params[-1], ret.llf] +print('time used:', t3-t2) + +print("Arma.fit method = \"ls\"") +t3=time() +ret2 = arma1.fit(order=(2,0,2), method="ls") +t4=time() +print(ret2[0]) +results += ["Arma.fit ls", ret2[0]] +print('time used:', t4-t3) + +print("Arma.fit method = \"CLS\"") +t4=time() +ret3 = arma1.fit(order=(2,0,2), method="None") +t5=time() +print(ret3) +results += ["Arma.fit other", ret3[0]] +print('time used:', t5-t4) + +for i in results: print(i) diff --git a/statsmodels/examples/tsa/ex_arma.py b/statsmodels/examples/tsa/ex_arma.py new file mode 100644 index 0000000..114a631 --- /dev/null +++ b/statsmodels/examples/tsa/ex_arma.py @@ -0,0 +1,100 @@ +''' + +doesn't seem to work so well anymore even with nobs=1000 ??? +works ok if noise variance is large +''' + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm +from statsmodels.tsa.arima_process import arma_generate_sample +from statsmodels.tsa.arma_mle import Arma as Arma +from statsmodels.tsa.arima_process import ARIMA as ARIMA_old +from statsmodels.sandbox.tsa.garch import Arma as Armamle_old + + +print("\nExample 1") +ar = [1.0, -0.6, 0.1] +ma = [1.0, 0.5, 0.3] +nobs = 1000 +y22 = arma_generate_sample(ar, ma, nobs+1000, 0.5)[-nobs:] +y22 -= y22.mean() +start_params = [0.1, 0.1, 0.1, 0.1] +start_params_lhs = [-0.1, -0.1, 0.1, 0.1] + +print('truelhs', np.r_[ar[1:], ma[1:]]) + + + + + +###bug in current version, fixed in Skipper and 1 more +###arr[1:q,:] = params[p+k:p+k+q] # p to p+q short params are MA coeffs +###ValueError: array dimensions are not compatible for copy +##from statsmodels.tsa.arima import ARMA as ARMA_kf +##arma22 = ARMA_kf(y22, constant=False, order=(2,2)) +##res = arma22.fit(start_params=start_params) +##print res.params + +print('\nARIMA new') +arest2 = Arma(y22) + +naryw = 4 #= 30 +resyw = sm.regression.yule_walker(y22, order=naryw, inv=True) +arest2.nar = naryw +arest2.nma = 0 +e = arest2.geterrors(np.r_[1, -resyw[0]]) +x=sm.tsa.tsatools.lagmat2ds(np.column_stack((y22,e)),3,dropex=1, + trim='both') +yt = x[:,0] +xt = x[:,1:] +res_ols = sm.OLS(yt, xt).fit() +print('hannan_rissannen') +print(res_ols.params) +start_params = res_ols.params +start_params_mle = np.r_[-res_ols.params[:2], + res_ols.params[2:], + #res_ols.scale] + #areste.var()] + np.sqrt(res_ols.scale)] +#need to iterate, ar1 too large ma terms too small +#fix large parameters, if hannan_rissannen are too large +start_params_mle[:-1] = (np.sign(start_params_mle[:-1]) + * np.minimum(np.abs(start_params_mle[:-1]),0.75)) + + +print('conditional least-squares') + +#print rhohat2 +print('with mle') +arest2.nar = 2 +arest2.nma = 2 +# +res = arest2.fit_mle(start_params=start_params_mle, method='nm') #no order in fit +print(res.params) +rhohat2, cov_x2a, infodict, mesg, ier = arest2.fit((2,2)) +print('\nARIMA_old') +arest = ARIMA_old(y22) +rhohat1, cov_x1, infodict, mesg, ier = arest.fit((2,0,2)) +print(rhohat1) +print(np.sqrt(np.diag(cov_x1))) +err1 = arest.errfn(x=y22) +print(np.var(err1)) +print('bse ls, formula not checked') +print(np.sqrt(np.diag(cov_x1))*err1.std()) +print('bsejac for mle') +#print arest2.bsejac +#TODO:check bsejac raises singular matrix linalg error +#in model.py line620: return np.linalg.inv(np.dot(jacv.T, jacv)) + +print('\nyule-walker') +print(sm.regression.yule_walker(y22, order=2, inv=True)) + +print('\nArmamle_old') +arma1 = Armamle_old(y22) +arma1.nar = 2 +arma1.nma = 2 +#arma1res = arma1.fit(start_params=np.r_[-0.5, -0.1, 0.1, 0.1, 0.5], method='fmin') +# maxfun=1000) +arma1res = arma1.fit(start_params=res.params*0.7, method='fmin') +print(arma1res.params) diff --git a/statsmodels/examples/tsa/ex_arma_all.py b/statsmodels/examples/tsa/ex_arma_all.py new file mode 100644 index 0000000..b81b27d --- /dev/null +++ b/statsmodels/examples/tsa/ex_arma_all.py @@ -0,0 +1,75 @@ + + +from __future__ import print_function +import numpy as np +from numpy.testing import assert_almost_equal +import matplotlib.pyplot as plt +import statsmodels.sandbox.tsa.fftarma as fa +from statsmodels.tsa.descriptivestats import TsaDescriptive +from statsmodels.tsa.arma_mle import Arma +from statsmodels.tsa.arima_model import ARMA +from statsmodels.tsa.arima_process import arma_generate_sample +from statsmodels.miscmodels.tmodel import TArma + + +x = fa.ArmaFft([1, -0.5], [1., 0.4], 40).generate_sample(size=200, burnin=1000) +d = TsaDescriptive(x) +d.plot4() + +#d.fit(order=(1,1)) +d.fit((1,1), trend='nc') +print(d.res.params) + +modc = Arma(x) +resls = modc.fit(order=(1,1)) +print(resls[0]) +rescm = modc.fit_mle(order=(1,1), start_params=[-0.4,0.4, 1.]) +print(rescm.params) + +#decimal 1 corresponds to threshold of 5% difference +assert_almost_equal(resls[0] / d.res.params, 1, decimal=1) +assert_almost_equal(rescm.params[:-1] / d.res.params, 1, decimal=1) +#copied to tsa.tests + +plt.figure() +plt.plot(x, 'b-o') +plt.plot(modc.predicted(), 'r-') +plt.figure() +plt.plot(modc.error_estimate) +#plt.show() + + +modct = TArma(x) +reslst = modc.fit(order=(1,1)) +print(reslst[0]) +rescmt = modct.fit_mle(order=(1,1), start_params=[-0.4,0.4, 10, 1.],maxiter=500, + maxfun=500) +print(rescmt.params) + + +mkf = ARMA(x) +##rkf = mkf.fit((1,1)) +##rkf.params +rkf = mkf.fit((1,1), trend='nc') +print(rkf.params) + +np.random.seed(12345) +y_arma22 = arma_generate_sample([1.,-.85,.35, -0.1],[1,.25,-.7], nsample=1000) +##arma22 = ARMA(y_arma22) +##res22 = arma22.fit(trend = 'nc', order=(2,2)) +##print 'kf ',res22.params +##res22css = arma22.fit(method='css',trend = 'nc', order=(2,2)) +##print 'css', res22css.params +mod22 = Arma(y_arma22) +resls22 = mod22.fit(order=(2,2)) +print('ls ', resls22[0]) +resmle22 = mod22.fit_mle(order=(2,2), maxfun=2000) +print('mle', resmle22.params) + +f = mod22.forecast() +f3 = mod22.forecast3(start=900)[-20:] + +print(y_arma22[-10:]) +print(f[-20:]) +print(f3[-109:-90]) +plt.show() diff --git a/statsmodels/examples/tsa/ex_coint.py b/statsmodels/examples/tsa/ex_coint.py new file mode 100644 index 0000000..7da7856 --- /dev/null +++ b/statsmodels/examples/tsa/ex_coint.py @@ -0,0 +1,9 @@ + +from __future__ import print_function +from statsmodels.tsa.tests.test_stattools import TestCoint_t + + +#test whether t-test for cointegration equals that produced by Stata + +tst = TestCoint_t() +print(tst.test_tstat()) diff --git a/statsmodels/examples/tsa/ex_var.py b/statsmodels/examples/tsa/ex_var.py new file mode 100644 index 0000000..0e383a4 --- /dev/null +++ b/statsmodels/examples/tsa/ex_var.py @@ -0,0 +1,46 @@ + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm +from statsmodels.tsa.api import VAR + +# some example data +mdata = sm.datasets.macrodata.load(as_pandas=False).data +mdata = mdata[['realgdp','realcons','realinv']] +names = mdata.dtype.names +data = mdata.view((float,3)) + +use_growthrate = False #True #False +if use_growthrate: + data = 100 * 4 * np.diff(np.log(data), axis=0) + +model = VAR(data, names=names) +res = model.fit(4) + +nobs_all = data.shape[0] + +#in-sample 1-step ahead forecasts +fc_in = np.array([np.squeeze(res.forecast(model.y[t-20:t], 1)) + for t in range(nobs_all-6,nobs_all)]) + +print(fc_in - res.fittedvalues[-6:]) + +#out-of-sample 1-step ahead forecasts +fc_out = np.array([np.squeeze(VAR(data[:t]).fit(2).forecast(data[t-20:t], 1)) + for t in range(nobs_all-6,nobs_all)]) + +print(fc_out - data[nobs_all-6:nobs_all]) +print(fc_out - res.fittedvalues[-6:]) + + +#out-of-sample h-step ahead forecasts +h = 2 +fc_out = np.array([VAR(data[:t]).fit(2).forecast(data[t-20:t], h)[-1] + for t in range(nobs_all-6-h+1,nobs_all-h+1)]) + +print(fc_out - data[nobs_all-6:nobs_all]) #out-of-sample forecast error +print(fc_out - res.fittedvalues[-6:]) + +#import matplotlib.pyplot as plt +res.plot_forecast(20) +#plt.show() diff --git a/statsmodels/examples/tsa/ex_var_reorder.py b/statsmodels/examples/tsa/ex_var_reorder.py new file mode 100644 index 0000000..b9f3fea --- /dev/null +++ b/statsmodels/examples/tsa/ex_var_reorder.py @@ -0,0 +1,6 @@ + +from __future__ import print_function +from statsmodels.tsa.vector_ar.tests.test_var import TestVARResults + +test_VAR = TestVARResults() +test_VAR.test_reorder() diff --git a/statsmodels/examples/tsa/lagpolynomial.py b/statsmodels/examples/tsa/lagpolynomial.py new file mode 100644 index 0000000..e6690e6 --- /dev/null +++ b/statsmodels/examples/tsa/lagpolynomial.py @@ -0,0 +1,47 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Oct 22 08:13:38 2010 + +Author: josef-pktd +License: BSD (3-clause) +""" + +from __future__ import print_function +import numpy as np +from numpy import polynomial as npp + + +class LagPolynomial(npp.Polynomial): + + #def __init__(self, maxlag): + + def pad(self, maxlag): + return LagPolynomial(np.r_[self.coef, np.zeros(maxlag-len(self.coef))]) + + def padflip(self, maxlag): + return LagPolynomial(np.r_[self.coef, np.zeros(maxlag-len(self.coef))][::-1]) + + def flip(self): + '''reverse polynomial coefficients + ''' + return LagPolynomial(self.coef[::-1]) + + def div(self, other, maxlag=None): + '''padded division, pads numerator with zeros to maxlag + ''' + if maxlag is None: + maxlag = max(len(self.coef), len(other.coef)) + 1 + return (self.padflip(maxlag) / other.flip()).flip() + + def filter(self, arr): + return (self * arr).coef[:-len(self.coef)] #trim to end + + + +ar = LagPolynomial([1, -0.8]) +arpad = ar.pad(10) + +ma = LagPolynomial([1, 0.1]) +mapad = ma.pad(10) + +unit = LagPolynomial([1]) diff --git a/statsmodels/examples/tsa/try_ar.py b/statsmodels/examples/tsa/try_ar.py new file mode 100644 index 0000000..6b88b84 --- /dev/null +++ b/statsmodels/examples/tsa/try_ar.py @@ -0,0 +1,80 @@ +# -*- coding: utf-8 -*- +""" +Created on Thu Oct 21 21:45:24 2010 + +Author: josef-pktd +""" + +from __future__ import print_function +import numpy as np +from scipy import signal + +def armaloop(arcoefs, macoefs, x): + '''get arma recursion in simple loop + + for simplicity assumes that ma polynomial is not longer than the ar-polynomial + + Parameters + ---------- + arcoefs : array_like + autoregressive coefficients in right hand side parameterization + macoefs : array_like + moving average coefficients, without leading 1 + + Returns + ------- + y : ndarray + predicted values, initial values are the same as the observed values + e : ndarray + predicted residuals, zero for initial observations + + Notes + ----- + Except for the treatment of initial observations this is the same as using + scipy.signal.lfilter, which is much faster. Written for testing only + ''' + arcoefs_r = np.asarray(arcoefs) + macoefs_r = np.asarray(macoefs) + x = np.asarray(x) + nobs = x.shape[0] + #assume ar longer than ma + arlag = arcoefs_r.shape[0] + malag = macoefs_r.shape[0] + maxlag = max(arlag, malag) + print(maxlag) + y = np.zeros(x.shape, float) + e = np.zeros(x.shape, float) + y[:maxlag] = x[:maxlag] + + #if malag > arlaga: + for t in range(arlag, maxlag): + y[t] = (x[t-arlag:t] * arcoefs_r).sum(0) + (e[:t] * macoefs_r[:t]).sum(0) + e[t] = x[t] - y[t] + + for t in range(maxlag, nobs): + #wrong broadcasting, 1d only + y[t] = (x[t-arlag:t] * arcoefs_r).sum(0) + (e[t-malag:t] * macoefs_r).sum(0) + e[t] = x[t] - y[t] + + return y, e + +arcoefs, macoefs = -np.array([1, -0.8, 0.2])[1:], np.array([1., 0.5, 0.1])[1:] +print(armaloop(arcoefs, macoefs, np.ones(10))) +print(armaloop([0.8], [], np.ones(10))) +print(armaloop([0.8], [], np.arange(2,10))) +y, e = armaloop([0.1], [0.8], np.arange(2,10)) +print(e) +print(signal.lfilter(np.array([1, -0.1]), np.array([1., 0.8]), np.arange(2,10))) + +y, e = armaloop([], [0.8], np.ones(10)) +print(e) +print(signal.lfilter(np.array([1, -0.]), np.array([1., 0.8]), np.ones(10))) + +ic=signal.lfiltic(np.array([1, -0.1]), np.array([1., 0.8]), np.ones([0]), np.array([1])) +print(signal.lfilter(np.array([1, -0.1]), np.array([1., 0.8]), np.ones(10), zi=ic)) + +zi = signal.lfilter_zi(np.array([1, -0.8, 0.2]), np.array([1., 0, 0])) +print(signal.lfilter(np.array([1, -0.1]), np.array([1., 0.8]), np.ones(10), zi=zi)) +print(signal.filtfilt(np.array([1, -0.8]), np.array([1.]), np.ones(10))) + +#todo write examples/test across different versions diff --git a/statsmodels/examples/tut_ols_ancova.py b/statsmodels/examples/tut_ols_ancova.py new file mode 100644 index 0000000..41c0bbd --- /dev/null +++ b/statsmodels/examples/tut_ols_ancova.py @@ -0,0 +1,98 @@ +'''Examples OLS + +Note: uncomment plt.show() to display graphs + +Summary: +======== + +Relevant part of construction of design matrix +xg includes group numbers/labels, +x1 is continuous explanatory variable + +>>> dummy = (xg[:,None] == np.unique(xg)).astype(float) +>>> X = np.c_[x1, dummy[:,1:], np.ones(nsample)] + +Estimate the model + +>>> res2 = sm.OLS(y, X).fit() +>>> print res2.params +[ 1.00901524 3.08466166 -2.84716135 9.94655423] +>>> print res2.bse +[ 0.07499873 0.71217506 1.16037215 0.38826843] +>>> prstd, iv_l, iv_u = wls_prediction_std(res2) + +"Test hypothesis that all groups have same intercept" + +>>> R = [[0, 1, 0, 0], +... [0, 0, 1, 0]] + +>>> print res2.f_test(R) + + +strongly rejected because differences in intercept are very large + +''' + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm +import matplotlib.pyplot as plt +from statsmodels.sandbox.regression.predstd import wls_prediction_std + +#fix a seed for these examples +np.random.seed(98765789) + +#OLS with dummy variables, similar to ANCOVA +#------------------------------------------- + +#construct simulated example: +#3 groups common slope but different intercepts + +nsample = 50 +x1 = np.linspace(0, 20, nsample) +sig = 1. +#suppose observations from 3 groups +xg = np.zeros(nsample, int) +xg[20:40] = 1 +xg[40:] = 2 +#print xg +dummy = (xg[:,None] == np.unique(xg)).astype(float) +#use group 0 as benchmark +X = np.c_[x1, dummy[:,1:], np.ones(nsample)] +beta = [1., 3, -3, 10] +y_true = np.dot(X, beta) +y = y_true + sig * np.random.normal(size=nsample) + +#estimate +#~~~~~~~~ + +res2 = sm.OLS(y, X).fit() +#print "estimated parameters: x d1-d0 d2-d0 constant" +print(res2.params) +#print "standard deviation of parameter estimates" +print(res2.bse) +prstd, iv_l, iv_u = wls_prediction_std(res2) +#print res.summary() + +#plot +#~~~~ + +plt.figure() +plt.plot(x1, y, 'o', x1, y_true, 'b-') +plt.plot(x1, res2.fittedvalues, 'r--.') +plt.plot(x1, iv_u, 'r--') +plt.plot(x1, iv_l, 'r--') +plt.title('3 groups: different intercepts, common slope; blue: true, red: OLS') +plt.show() + + +#Test hypothesis that all groups have same intercept +#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +R = [[0, 1, 0, 0], + [0, 0, 1, 0]] + +# F test joint hypothesis R * beta = 0 +# i.e. coefficient on both dummy variables equal zero +print("Test hypothesis that all groups have same intercept") +print(res2.f_test(R)) diff --git a/statsmodels/examples/tut_ols_rlm_short.py b/statsmodels/examples/tut_ols_rlm_short.py new file mode 100644 index 0000000..21cdc16 --- /dev/null +++ b/statsmodels/examples/tut_ols_rlm_short.py @@ -0,0 +1,63 @@ +'''Examples: comparing OLS and RLM + +robust estimators and outliers + +RLM is less influenced by outliers than OLS and has estimated slope +closer to true slope and not tilted like OLS. + +Note: uncomment plt.show() to display graphs +''' + +from __future__ import print_function +import numpy as np +#from scipy import stats +import statsmodels.api as sm +import matplotlib.pyplot as plt +from statsmodels.sandbox.regression.predstd import wls_prediction_std + +#fix a seed for these examples +np.random.seed(98765789) + +nsample = 50 +x1 = np.linspace(0, 20, nsample) +X = np.c_[x1, np.ones(nsample)] + +sig = 0.3 # smaller error variance makes OLS<->RLM contrast bigger +beta = [0.5, 5.] +y_true2 = np.dot(X, beta) +y2 = y_true2 + sig*1. * np.random.normal(size=nsample) +y2[[39,41,43,45,48]] -= 5 # add some outliers (10% of nsample) + + +# Example: estimate linear function (true is linear) + +plt.figure() +plt.plot(x1, y2, 'o', x1, y_true2, 'b-') + + +res2 = sm.OLS(y2, X).fit() +print("OLS: parameter estimates: slope, constant") +print(res2.params) +print("standard deviation of parameter estimates") +print(res2.bse) +prstd, iv_l, iv_u = wls_prediction_std(res2) +plt.plot(x1, res2.fittedvalues, 'r-') +plt.plot(x1, iv_u, 'r--') +plt.plot(x1, iv_l, 'r--') + + +#compare with robust estimator + +resrlm2 = sm.RLM(y2, X).fit() +print("\nRLM: parameter estimates: slope, constant") +print(resrlm2.params) +print("standard deviation of parameter estimates") +print(resrlm2.bse) +plt.plot(x1, resrlm2.fittedvalues, 'g.-') +plt.title('Data with Outliers; blue: true, red: OLS, green: RLM') + + +# see also help(sm.RLM.fit) for more options and +# module sm.robust.scale for scale options + +plt.show() diff --git a/statsmodels/formula/__init__.py b/statsmodels/formula/__init__.py new file mode 100644 index 0000000..f2f1d74 --- /dev/null +++ b/statsmodels/formula/__init__.py @@ -0,0 +1,6 @@ +__all__ = ['handle_formula_data', 'test'] +from .formulatools import handle_formula_data + +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/formula/api.py b/statsmodels/formula/api.py new file mode 100644 index 0000000..c540685 --- /dev/null +++ b/statsmodels/formula/api.py @@ -0,0 +1,30 @@ +import statsmodels.regression.linear_model as lm_ +import statsmodels.discrete.discrete_model as dm_ +import statsmodels.regression.mixed_linear_model as mlm_ +import statsmodels.genmod.generalized_linear_model as glm_ +import statsmodels.robust.robust_linear_model as roblm_ +import statsmodels.regression.quantile_regression as qr_ +import statsmodels.duration.hazard_regression as hr_ +import statsmodels.genmod.generalized_estimating_equations as gee_ +import statsmodels.gam.generalized_additive_model as gam_ + +gls = lm_.GLS.from_formula +wls = lm_.WLS.from_formula +ols = lm_.OLS.from_formula +glsar = lm_.GLSAR.from_formula +mixedlm = mlm_.MixedLM.from_formula +glm = glm_.GLM.from_formula +rlm = roblm_.RLM.from_formula +mnlogit = dm_.MNLogit.from_formula +logit = dm_.Logit.from_formula +probit = dm_.Probit.from_formula +poisson = dm_.Poisson.from_formula +negativebinomial = dm_.NegativeBinomial.from_formula +quantreg = qr_.QuantReg.from_formula +phreg = hr_.PHReg.from_formula +ordinal_gee = gee_.OrdinalGEE.from_formula +nominal_gee = gee_.NominalGEE.from_formula +gee = gee_.GEE.from_formula +glmgam = gam_.GLMGam.from_formula + +del lm_, dm_, mlm_, glm_, roblm_, qr_, hr_, gee_, gam_ diff --git a/statsmodels/formula/formulatools.py b/statsmodels/formula/formulatools.py new file mode 100644 index 0000000..f57a3ea --- /dev/null +++ b/statsmodels/formula/formulatools.py @@ -0,0 +1,112 @@ +from statsmodels.compat.python import iterkeys +import statsmodels.tools.data as data_util +from patsy import dmatrices, NAAction +import numpy as np + +# if users want to pass in a different formula framework, they can +# add their handler here. how to do it interactively? + +# this is a mutable object, so editing it should show up in the below +formula_handler = {} + + +class NAAction(NAAction): + # monkey-patch so we can handle missing values in 'extra' arrays later + def _handle_NA_drop(self, values, is_NAs, origins): + total_mask = np.zeros(is_NAs[0].shape[0], dtype=bool) + for is_NA in is_NAs: + total_mask |= is_NA + good_mask = ~total_mask + self.missing_mask = total_mask + # "..." to handle 1- versus 2-dim indexing + return [v[good_mask, ...] for v in values] + + +def handle_formula_data(Y, X, formula, depth=0, missing='drop'): + """ + Returns endog, exog, and the model specification from arrays and formula + + Parameters + ---------- + Y : array-like + Either endog (the LHS) of a model specification or all of the data. + Y must define __getitem__ for now. + X : array-like + Either exog or None. If all the data for the formula is provided in + Y then you must explicitly set X to None. + formula : str or patsy.model_desc + You can pass a handler by import formula_handler and adding a + key-value pair where the key is the formula object class and + the value is a function that returns endog, exog, formula object + + Returns + ------- + endog : array-like + Should preserve the input type of Y,X + exog : array-like + Should preserve the input type of Y,X. Could be None. + """ + # half ass attempt to handle other formula objects + if isinstance(formula, tuple(iterkeys(formula_handler))): + return formula_handler[type(formula)] + + na_action = NAAction(on_NA=missing) + + if X is not None: + if data_util._is_using_pandas(Y, X): + result = dmatrices(formula, (Y, X), depth, + return_type='dataframe', NA_action=na_action) + else: + result = dmatrices(formula, (Y, X), depth, + return_type='dataframe', NA_action=na_action) + else: + if data_util._is_using_pandas(Y, None): + result = dmatrices(formula, Y, depth, return_type='dataframe', + NA_action=na_action) + else: + result = dmatrices(formula, Y, depth, return_type='dataframe', + NA_action=na_action) + + # if missing == 'raise' there's not missing_mask + missing_mask = getattr(na_action, 'missing_mask', None) + if not np.any(missing_mask): + missing_mask = None + if len(result) > 1: # have RHS design + design_info = result[1].design_info # detach it from DataFrame + else: + design_info = None + # NOTE: is there ever a case where we'd need LHS design_info? + return result, missing_mask, design_info + + +def _remove_intercept_patsy(terms): + """ + Remove intercept from Patsy terms. + """ + from patsy.desc import INTERCEPT + if INTERCEPT in terms: + terms.remove(INTERCEPT) + return terms + + +def _has_intercept(design_info): + from patsy.desc import INTERCEPT + return INTERCEPT in design_info.terms + + +def _intercept_idx(design_info): + """ + Returns boolean array index indicating which column holds the intercept + """ + from patsy.desc import INTERCEPT + from numpy import array + return array([INTERCEPT == i for i in design_info.terms]) + + +def make_hypotheses_matrices(model_results, test_formula): + """ + """ + from patsy.constraint import linear_constraint + exog_names = model_results.model.exog_names + LC = linear_constraint(test_formula, exog_names) + return LC diff --git a/statsmodels/formula/tests/__init__.py b/statsmodels/formula/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/formula/tests/test_formula.py b/statsmodels/formula/tests/test_formula.py new file mode 100644 index 0000000..c222f90 --- /dev/null +++ b/statsmodels/formula/tests/test_formula.py @@ -0,0 +1,225 @@ +from statsmodels.compat.python import iteritems, StringIO, PY3 +import warnings + +from statsmodels.formula.api import ols +from statsmodels.formula.formulatools import make_hypotheses_matrices +from statsmodels.tools import add_constant +from statsmodels.datasets.longley import load, load_pandas +from statsmodels.datasets import cpunish + +import numpy.testing as npt +from statsmodels.tools.testing import assert_equal +import numpy as np +import pandas as pd +import patsy +import pytest + + +longley_formula = 'TOTEMP ~ GNPDEFL + GNP + UNEMP + ARMED + POP + YEAR' + + +class CheckFormulaOLS(object): + + @classmethod + def setup_class(cls): + cls.data = load(as_pandas=False) + + def test_endog_names(self): + assert self.model.endog_names == 'TOTEMP' + + def test_exog_names(self): + assert self.model.exog_names == ['Intercept', 'GNPDEFL', 'GNP', + 'UNEMP', 'ARMED', 'POP', 'YEAR'] + + def test_design(self): + npt.assert_equal(self.model.exog, + add_constant(self.data.exog, prepend=True)) + + def test_endog(self): + npt.assert_equal(self.model.endog, self.data.endog) + + @pytest.mark.smoke + def test_summary(self): + with warnings.catch_warnings(): + warnings.filterwarnings("ignore", + "kurtosistest only valid for n>=20") + self.model.fit().summary() + + +class TestFormulaPandas(CheckFormulaOLS): + @classmethod + def setup_class(cls): + data = load_pandas().data + cls.model = ols(longley_formula, data) + super(TestFormulaPandas, cls).setup_class() + + +class TestFormulaDict(CheckFormulaOLS): + @classmethod + def setup_class(cls): + data = dict((k, v.tolist()) for k, v in iteritems(load_pandas().data)) + cls.model = ols(longley_formula, data) + super(TestFormulaDict, cls).setup_class() + + +def test_tests(): + formula = 'TOTEMP ~ GNPDEFL + GNP + UNEMP + ARMED + POP + YEAR' + dta = load_pandas().data + results = ols(formula, dta).fit() + test_formula = '(GNPDEFL = GNP), (UNEMP = 2), (YEAR/1829 = 1)' + LC = make_hypotheses_matrices(results, test_formula) + R = LC.coefs + Q = LC.constants + npt.assert_almost_equal(R, [[0, 1, -1, 0, 0, 0, 0], + [0, 0, 0, 1, 0, 0, 0], + [0, 0, 0, 0, 0, 0, 1./1829]], 8) + npt.assert_array_equal(Q, [[0], [2], [1]]) + + +def test_formula_labels(): + # make sure labels pass through patsy as expected + # data(Duncan) from car in R + dta = StringIO('"type","income","education","prestige"\n' + '"accountant","prof",62,86,82\n' + '"pilot","prof",72,76,83\n' + '"architect","prof",75,92,90\n' + '"author","prof",55,90,76\n' + '"chemist","prof",64,86,90\n' + '"minister","prof",21,84,87\n' + '"professor","prof",64,93,93\n' + '"dentist","prof",80,100,90\n' + '"reporter","wc",67,87,52\n' + '"engineer","prof",72,86,88\n' + '"undertaker","prof",42,74,57\n' + '"lawyer","prof",76,98,89\n' + '"physician","prof",76,97,97\n' + '"welfare.worker","prof",41,84,59\n' + '"teacher","prof",48,91,73\n' + '"conductor","wc",76,34,38\n' + '"contractor","prof",53,45,76\n' + '"factory.owner","prof",60,56,81\n' + '"store.manager","prof",42,44,45\n' + '"banker","prof",78,82,92\n' + '"bookkeeper","wc",29,72,39\n' + '"mail.carrier","wc",48,55,34\n' + '"insurance.agent","wc",55,71,41\n' + '"store.clerk","wc",29,50,16\n' + '"carpenter","bc",21,23,33\n' + '"electrician","bc",47,39,53\n' + '"RR.engineer","bc",81,28,67\n' + '"machinist","bc",36,32,57\n' + '"auto.repairman","bc",22,22,26\n' + '"plumber","bc",44,25,29\n' + '"gas.stn.attendant","bc",15,29,10\n' + '"coal.miner","bc",7,7,15\n' + '"streetcar.motorman","bc",42,26,19\n' + '"taxi.driver","bc",9,19,10\n' + '"truck.driver","bc",21,15,13\n' + '"machine.operator","bc",21,20,24\n' + '"barber","bc",16,26,20\n' + '"bartender","bc",16,28,7\n' + '"shoe.shiner","bc",9,17,3\n' + '"cook","bc",14,22,16\n' + '"soda.clerk","bc",12,30,6\n' + '"watchman","bc",17,25,11\n' + '"janitor","bc",7,20,8\n' + '"policeman","bc",34,47,41\n' + '"waiter","bc",8,32,10') + from pandas import read_csv + dta = read_csv(dta) + model = ols("prestige ~ income + education", dta).fit() + assert_equal(model.fittedvalues.index, dta.index) + + +def test_formula_predict(): + # `log` is needed in the namespace for patsy to find + from numpy import log # noqa:F401 + formula = """TOTEMP ~ log(GNPDEFL) + log(GNP) + UNEMP + ARMED + + POP + YEAR""" + data = load_pandas() + dta = load_pandas().data + results = ols(formula, dta).fit() + npt.assert_almost_equal(results.fittedvalues.values, + results.predict(data.exog), 8) + + +def test_formula_predict_series(): + import pandas as pd + import pandas.util.testing as tm + data = pd.DataFrame({"y": [1, 2, 3], "x": [1, 2, 3]}, index=[5, 3, 1]) + results = ols('y ~ x', data).fit() + + result = results.predict(data) + expected = pd.Series([1., 2., 3.], index=[5, 3, 1]) + tm.assert_series_equal(result, expected) + + result = results.predict(data.x) + tm.assert_series_equal(result, expected) + + result = results.predict(pd.Series([1, 2, 3], index=[1, 2, 3], name='x')) + expected = pd.Series([1., 2., 3.], index=[1, 2, 3]) + tm.assert_series_equal(result, expected) + + result = results.predict({"x": [1, 2, 3]}) + expected = pd.Series([1., 2., 3.], index=[0, 1, 2]) + tm.assert_series_equal(result, expected) + + +def test_patsy_lazy_dict(): + class LazyDict(dict): + def __init__(self, data): + self.data = data + + def __missing__(self, key): + return np.array(self.data[key]) + + data = cpunish.load_pandas().data + data = LazyDict(data) + res = ols('EXECUTIONS ~ SOUTH + INCOME', data=data).fit() + + res2 = res.predict(data) + npt.assert_allclose(res.fittedvalues, res2) + + data = cpunish.load_pandas().data + data['INCOME'].loc[0] = None + + data = LazyDict(data) + data.index = cpunish.load_pandas().data.index + res = ols('EXECUTIONS ~ SOUTH + INCOME', data=data).fit() + + res2 = res.predict(data) + assert_equal(res.fittedvalues, res2) # Should lose a record + assert_equal(len(res2) + 1, len(cpunish.load_pandas().data)) + + +def test_patsy_missing_data(): + # Test pandas-style first + data = cpunish.load_pandas().data + data['INCOME'].loc[0] = None + res = ols('EXECUTIONS ~ SOUTH + INCOME', data=data).fit() + res2 = res.predict(data) + # First record will be dropped during fit, but not during predict + assert_equal(res.fittedvalues, res2[1:]) + + # Non-pandas version + data = cpunish.load_pandas().data + data['INCOME'].loc[0] = None + data = data.to_records(index=False) + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter("always") + res2 = res.predict(data) + assert 'ValueWarning' in repr(w[-1].message) + assert 'nan values have been dropped' in repr(w[-1].message) + # Frist record will be dropped in both cases + assert_equal(res.fittedvalues, res2) + + +def test_predict_nondataframe(): + df = pd.DataFrame([[3, 0.030], [10, 0.060], [20, 0.120]], + columns=['BSA', 'Absorbance']) + + model = ols('Absorbance ~ BSA', data=df) + fit = model.fit() + error = patsy.PatsyError if PY3 else TypeError + with pytest.raises(error): + fit.predict([0.25]) diff --git a/statsmodels/gam/__init__.py b/statsmodels/gam/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/gam/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/gam/api.py b/statsmodels/gam/api.py new file mode 100644 index 0000000..0da6261 --- /dev/null +++ b/statsmodels/gam/api.py @@ -0,0 +1,4 @@ + +from .generalized_additive_model import GLMGam # noqa:F401 +from .gam_cross_validation.gam_cross_validation import MultivariateGAMCVPath # noqa:F401,E501 +from .smooth_basis import BSplines, CyclicCubicSplines # noqa:F401 diff --git a/statsmodels/gam/gam_cross_validation/__init__.py b/statsmodels/gam/gam_cross_validation/__init__.py new file mode 100644 index 0000000..4e152aa --- /dev/null +++ b/statsmodels/gam/gam_cross_validation/__init__.py @@ -0,0 +1 @@ +__author__ = 'luca puggini: lucapuggio@gmail.com' diff --git a/statsmodels/gam/gam_cross_validation/cross_validators.py b/statsmodels/gam/gam_cross_validation/cross_validators.py new file mode 100644 index 0000000..ef32257 --- /dev/null +++ b/statsmodels/gam/gam_cross_validation/cross_validators.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +""" +Cross-validation iterators for GAM + +Author: Luca Puggini + +""" + +from __future__ import division + +from abc import ABCMeta, abstractmethod +from statsmodels.compat.python import with_metaclass +import numpy as np + + +class BaseCrossValidator(with_metaclass(ABCMeta)): + """ + The BaseCrossValidator class is a base class for all the iterators that + split the data in train and test as for example KFolds or LeavePOut + """ + def __init__(self): + pass + + @abstractmethod + def split(self): + pass + + +class KFold(BaseCrossValidator): + """ + K-Folds cross validation iterator: + Provides train/test indexes to split data in train test sets + + Parameters + ---------- + k: int + number of folds + shuffle : bool + If true, then the index is shuffled before splitting into train and + test indices. + + Notes + ----- + All folds except for last fold have size trunc(n/k), the last fold has + the remainder. + """ + + def __init__(self, k_folds, shuffle=False): + self.nobs = None + self.k_folds = k_folds + self.shuffle = shuffle + + def split(self, X, y=None, label=None): + """yield index split into train and test sets + """ + # TODO: X and y are redundant, we only need nobs + + nobs = X.shape[0] + index = np.array(range(nobs)) + + if self.shuffle: + np.random.shuffle(index) + + folds = np.array_split(index, self.k_folds) + for fold in folds: + test_index = np.zeros(nobs, dtype=np.bool_) + test_index[fold] = True + train_index = np.logical_not(test_index) + yield train_index, test_index diff --git a/statsmodels/gam/gam_cross_validation/gam_cross_validation.py b/statsmodels/gam/gam_cross_validation/gam_cross_validation.py new file mode 100644 index 0000000..df6728f --- /dev/null +++ b/statsmodels/gam/gam_cross_validation/gam_cross_validation.py @@ -0,0 +1,213 @@ +# -*- coding: utf-8 -*- +""" +Cross-validation classes for GAM + +Author: Luca Puggini + +""" + +from __future__ import division +from abc import ABCMeta, abstractmethod +from statsmodels.compat.python import with_metaclass +import itertools +import numpy as np +from statsmodels.gam.smooth_basis import (GenericSmoothers, + UnivariateGenericSmoother) + + +class BaseCV(with_metaclass(ABCMeta)): + """ + BaseCV class. It computes the cross validation error of a given model. + All the cross validation classes can be derived by this one + (e.g. GamCV, LassoCV,...) + """ + + def __init__(self, cv_iterator, endog, exog): + self.cv_iterator = cv_iterator + self.exog = exog + self.endog = endog + # TODO: cv_iterator.split only needs nobs from endog or exog + self.train_test_cv_indices = self.cv_iterator.split(self.exog, + self.endog, + label=None) + + def fit(self, **kwargs): + # kwargs are the input values for the fit method of the + # cross-validated object + + cv_err = [] + + for train_index, test_index in self.train_test_cv_indices: + cv_err.append(self._error(train_index, test_index, **kwargs)) + + return np.array(cv_err) + + @abstractmethod + def _error(self, train_index, test_index, **kwargs): + # train the model on the train set + # and returns the error on the test set + pass + + +def _split_train_test_smoothers(x, smoother, train_index, test_index): + """split smoothers in test and train sets and create GenericSmoothers + + Note: this does not take exog_linear into account + + """ + train_smoothers = [] + test_smoothers = [] + for smoother in smoother.smoothers: + train_basis = smoother.basis[train_index] + train_der_basis = smoother.der_basis[train_index] + train_der2_basis = smoother.der2_basis[train_index] + train_cov_der2 = smoother.cov_der2 + # TODO: Double check this part. cov_der2 is calculated with all data + train_x = smoother.x[train_index] + + train_smoothers.append( + UnivariateGenericSmoother( + train_x, train_basis, train_der_basis, train_der2_basis, + train_cov_der2, smoother.variable_name + ' train')) + + test_basis = smoother.basis[test_index] + test_der_basis = smoother.der_basis[test_index] + test_cov_der2 = smoother.cov_der2 + # TODO: Double check this part. cov_der2 is calculated with all data + test_x = smoother.x[test_index] + + test_smoothers.append( + UnivariateGenericSmoother( + test_x, test_basis, test_der_basis, train_der2_basis, + test_cov_der2, smoother.variable_name + ' test')) + + train_multivariate_smoothers = GenericSmoothers(x[train_index], + train_smoothers) + test_multivariate_smoothers = GenericSmoothers(x[test_index], + test_smoothers) + + return train_multivariate_smoothers, test_multivariate_smoothers + + +class MultivariateGAMCV(BaseCV): + def __init__(self, smoother, alphas, gam, cost, endog, exog, cv_iterator): + self.cost = cost + self.gam = gam + self.smoother = smoother + self.exog_linear = exog + self.alphas = alphas + self.cv_iterator = cv_iterator + # TODO: super does not do anything with endog, exog, except get nobs + # refactor to clean up what where `exog` and `exog_linear` is attached + super(MultivariateGAMCV, self).__init__(cv_iterator, + endog, + # exog, # not used in super + self.smoother.basis) + + def _error(self, train_index, test_index, **kwargs): + train_smoother, test_smoother = _split_train_test_smoothers( + self.smoother.x, self.smoother, train_index, test_index) + + endog_train = self.endog[train_index] + endog_test = self.endog[test_index] + if self.exog_linear is not None: + exog_linear_train = self.exog_linear[train_index] + exog_linear_test = self.exog_linear[test_index] + else: + exog_linear_train = None + exog_linear_test = None + + gam = self.gam(endog_train, exog=exog_linear_train, + smoother=train_smoother, alpha=self.alphas) + gam_res = gam.fit(**kwargs) + # exog_linear_test and test_smoother.basis will be column_stacked + # but not transformed in predict + endog_est = gam_res.predict(exog_linear_test, test_smoother.basis, + transform=False) + + return self.cost(endog_test, endog_est) + + +class BasePenaltiesPathCV(with_metaclass(ABCMeta)): + """ + Base class for cross validation over a grid of parameters. + + The best parameter is saved in alpha_cv + + This class is currently not used + """ + + def __init__(self, alphas): + self.alphas = alphas + self.alpha_cv = None + self.cv_error = None + self.cv_std = None + + def plot_path(self): + from statsmodels.graphics.utils import _import_mpl + plt = _import_mpl() + plt.plot(self.alphas, self.cv_error, c='black') + plt.plot(self.alphas, self.cv_error + 1.96 * self.cv_std, + c='blue') + plt.plot(self.alphas, self.cv_error - 1.96 * self.cv_std, + c='blue') + + plt.plot(self.alphas, self.cv_error, 'o', c='black') + plt.plot(self.alphas, self.cv_error + 1.96 * self.cv_std, 'o', + c='blue') + plt.plot(self.alphas, self.cv_error - 1.96 * self.cv_std, 'o', + c='blue') + + return + # TODO add return + + +class MultivariateGAMCVPath(object): + """k-fold cross-validation for GAM + + Warning: The API of this class is preliminary and will change. + + Parameters + ---------- + smoother : additive smoother instance + alphas : list of iteratables + list of alpha for smooths. The product space will be used as alpha + grid for cross-validation + gam : model class + model class for creating a model with k-fole training data + cost : function + cost function for the prediction error + endog : array + dependent (response) variable of the model + cv_iterator : instance of cross-validation iterator + + """ + + def __init__(self, smoother, alphas, gam, cost, endog, exog, cv_iterator): + self.cost = cost + self.smoother = smoother + self.gam = gam + self.alphas = alphas + self.alphas_grid = list(itertools.product(*self.alphas)) + self.endog = endog + self.exog = exog + self.cv_iterator = cv_iterator + self.cv_error = np.zeros(shape=(len(self.alphas_grid, ))) + self.cv_std = np.zeros(shape=(len(self.alphas_grid, ))) + self.alpha_cv = None + + def fit(self, **kwargs): + for i, alphas_i in enumerate(self.alphas_grid): + gam_cv = MultivariateGAMCV(smoother=self.smoother, + alphas=alphas_i, + gam=self.gam, + cost=self.cost, + endog=self.endog, + exog=self.exog, + cv_iterator=self.cv_iterator) + cv_err = gam_cv.fit(**kwargs) + self.cv_error[i] = cv_err.mean() + self.cv_std[i] = cv_err.std() + + self.alpha_cv = self.alphas_grid[np.argmin(self.cv_error)] + return self diff --git a/statsmodels/gam/gam_penalties.py b/statsmodels/gam/gam_penalties.py new file mode 100644 index 0000000..acc2cac --- /dev/null +++ b/statsmodels/gam/gam_penalties.py @@ -0,0 +1,309 @@ +# -*- coding: utf-8 -*- +""" +Penalty classes for Generalized Additive Models + +Author: Luca Puggini +Author: Josef Perktold + +""" + +import numpy as np +from scipy.linalg import block_diag +from statsmodels.base._penalties import Penalty + + +class UnivariateGamPenalty(Penalty): + """ + Penalty for smooth term in Generalized Additive Models + + Parameters + ---------- + univariate_smoother : instance + instance of univariate smoother or spline class + alpha : float + default penalty weight, alpha can be provided to each method + weights: + TODO: not used and verified, might be removed + + Attributes + ---------- + Parameters are stored, additionally + nob s: The number of samples used during the estimation + n_columns : number of columns in smoother basis + + """ + + def __init__(self, univariate_smoother, alpha=1, weights=1): + self.weights = weights + self.alpha = alpha + self.univariate_smoother = univariate_smoother + self.nobs = self.univariate_smoother.nobs + self.n_columns = self.univariate_smoother.dim_basis + + def func(self, params, alpha=None): + """evaluate penalization at params + + Parameters + ---------- + params : ndarray + coefficients for the spline basis in the regression model + alpha : float + default penalty weight + + Returns + ------- + func : float + value of the penalty evaluated at params + """ + if alpha is None: + alpha = self.alpha + + f = params.dot(self.univariate_smoother.cov_der2.dot(params)) + return alpha * f / self.nobs + + def deriv(self, params, alpha=None): + """evaluate derivative of penalty with respect to params + + Parameters + ---------- + params : ndarray + coefficients for the spline basis in the regression model + alpha : float + default penalty weight + + Returns + ------- + deriv : ndarray + derivative, gradient of the penalty with respect to params + """ + if alpha is None: + alpha = self.alpha + + d = 2 * alpha * np.dot(self.univariate_smoother.cov_der2, params) + d /= self.nobs + return d + + def deriv2(self, params, alpha=None): + """evaluate second derivative of penalty with respect to params + + Parameters + ---------- + params : ndarray + coefficients for the spline basis in the regression model + alpha : float + default penalty weight + + Returns + ------- + deriv2 : ndarray, 2-Dim + second derivative, hessian of the penalty with respect to params + """ + if alpha is None: + alpha = self.alpha + + d2 = 2 * alpha * self.univariate_smoother.cov_der2 + d2 /= self.nobs + return d2 + + def penalty_matrix(self, alpha=None): + """penalty matrix for the smooth term of a GAM + + Parameters + ---------- + alpha : list of floats or None + penalty weights + + Returns + ------- + penalty matrix + square penalty matrix for quadratic penalization. The number + of rows and columns are equal to the number of columns in the + smooth terms, i.e. the number of parameters for this smooth + term in the regression model + """ + if alpha is None: + alpha = self.alpha + + return alpha * self.univariate_smoother.cov_der2 + + +class MultivariateGamPenalty(Penalty): + """ + Penalty for Generalized Additive Models + + Parameters + ---------- + multivariate_smoother : instance + instance of additive smoother or spline class + alpha : list of float + default penalty weight, list with length equal to the number of smooth + terms. ``alpha`` can also be provided to each method. + weights: array-like + currently not used + is a list of doubles of the same length as alpha or a list + of ndarrays where each component has the length equal to the number + of columns in that component + start_idx : int + number of parameters that come before the smooth terms. If the model + has a linear component, then the parameters for the smooth components + start at ``start_index``. + + Attributes + ---------- + Parameters are stored, additionally + nob s: The number of samples used during the estimation + + dim_basis : number of columns of additive smoother. Number of columns + in all smoothers. + k_variables : number of smooth terms + k_params : total number of parameters in the regression model + + """ + + def __init__(self, multivariate_smoother, alpha, weights=None, + start_idx=0): + + if len(multivariate_smoother.smoothers) != len(alpha): + msg = ('all the input values should be of the same length.' + ' len(smoothers)=%d, len(alphas)=%d') % ( + len(multivariate_smoother.smoothers), len(alpha)) + raise ValueError(msg) + + self.multivariate_smoother = multivariate_smoother + self.dim_basis = self.multivariate_smoother.dim_basis + self.k_variables = self.multivariate_smoother.k_variables + self.nobs = self.multivariate_smoother.nobs + self.alpha = alpha + self.start_idx = start_idx + self.k_params = start_idx + self.dim_basis + + # TODO: Review this, + if weights is None: + # weights should have total length as params + # but it can also be scalar in individual component + self.weights = [1. for _ in range(self.k_variables)] + else: + import warnings + warnings.warn('weights is currently ignored') + self.weights = weights + + self.mask = [np.zeros(self.k_params, dtype=np.bool_) + for _ in range(self.k_variables)] + param_count = start_idx + for i, smoother in enumerate(self.multivariate_smoother.smoothers): + # the mask[i] contains a vector of length k_columns. The index + # corresponding to the i-th input variable are set to True. + self.mask[i][param_count: param_count + smoother.dim_basis] = True + param_count += smoother.dim_basis + + self.gp = [] + for i in range(self.k_variables): + gp = UnivariateGamPenalty(self.multivariate_smoother.smoothers[i], + weights=self.weights[i], + alpha=self.alpha[i]) + self.gp.append(gp) + + def func(self, params, alpha=None): + """evaluate penalization at params + + Parameters + ---------- + params : ndarray + coefficients in the regression model + alpha : float or list of floats + penalty weights + + Returns + ------- + func : float + value of the penalty evaluated at params + """ + if alpha is None: + alpha = [None] * self.k_variables + + cost = 0 + for i in range(self.k_variables): + params_i = params[self.mask[i]] + cost += self.gp[i].func(params_i, alpha=alpha[i]) + + return cost + + def deriv(self, params, alpha=None): + """evaluate derivative of penalty with respect to params + + Parameters + ---------- + params : ndarray + coefficients in the regression model + alpha : list of floats or None + penalty weights + + Returns + ------- + deriv : ndarray + derivative, gradient of the penalty with respect to params + """ + if alpha is None: + alpha = [None] * self.k_variables + + grad = [np.zeros(self.start_idx)] + for i in range(self.k_variables): + params_i = params[self.mask[i]] + grad.append(self.gp[i].deriv(params_i, alpha=alpha[i])) + + return np.concatenate(grad) + + def deriv2(self, params, alpha=None): + """evaluate second derivative of penalty with respect to params + + Parameters + ---------- + params : ndarray + coefficients in the regression model + alpha : list of floats or None + penalty weights + + Returns + ------- + deriv2 : ndarray, 2-Dim + second derivative, hessian of the penalty with respect to params + """ + if alpha is None: + alpha = [None] * self.k_variables + + deriv2 = [np.zeros((self.start_idx, self.start_idx))] + for i in range(self.k_variables): + params_i = params[self.mask[i]] + deriv2.append(self.gp[i].deriv2(params_i, alpha=alpha[i])) + + return block_diag(*deriv2) + + def penalty_matrix(self, alpha=None): + """penalty matrix for generalized additive model + + Parameters + ---------- + alpha : list of floats or None + penalty weights + + Returns + ------- + penalty matrix + block diagonal, square penalty matrix for quadratic penalization. + The number of rows and columns are equal to the number of + parameters in the regression model ``k_params``. + + Notes + ----- + statsmodels does not support backwards compatibility when keywords are + used as positional arguments. The order of keywords might change. + We might need to add a ``params`` keyword if the need arises. + """ + if alpha is None: + alpha = self.alpha + + s_all = [np.zeros((self.start_idx, self.start_idx))] + for i in range(self.k_variables): + s_all.append(self.gp[i].penalty_matrix(alpha=alpha[i])) + + return block_diag(*s_all) diff --git a/statsmodels/gam/generalized_additive_model.py b/statsmodels/gam/generalized_additive_model.py new file mode 100644 index 0000000..2afc954 --- /dev/null +++ b/statsmodels/gam/generalized_additive_model.py @@ -0,0 +1,1026 @@ +# -*- coding: utf-8 -*- +""" +Generalized Additive Models + +Author: Luca Puggini +Author: Josef Perktold + +created on 08/07/2015 +""" + +from __future__ import division +try: + from collections.abc import Iterable +except ImportError: # Python 2.7 + from collections import Iterable +import copy # check if needed when dropping python 2.7 + +import numpy as np +from scipy import optimize +import pandas as pd + +import statsmodels.base.wrapper as wrap + +from statsmodels.discrete.discrete_model import Logit +from statsmodels.genmod.generalized_linear_model import ( + GLM, GLMResults, GLMResultsWrapper, _check_convergence) +import statsmodels.regression.linear_model as lm +# import statsmodels.regression._tools as reg_tools # TODO: use this for pirls +from statsmodels.tools.sm_exceptions import (PerfectSeparationError, + ValueWarning) +from statsmodels.tools.decorators import cache_readonly +from statsmodels.tools.data import _is_using_pandas +from statsmodels.tools.linalg import matrix_sqrt + +from statsmodels.base._penalized import PenalizedMixin +from statsmodels.gam.gam_penalties import MultivariateGamPenalty +from statsmodels.gam.gam_cross_validation.gam_cross_validation import ( + MultivariateGAMCVPath) +from statsmodels.gam.gam_cross_validation.cross_validators import KFold + + +def _transform_predict_exog(model, exog, design_info=None): + """transform exog for predict using design_info + + Note: this is copied from base.model.Results.predict and converted to + standalone function with additional options. + + + """ + + is_pandas = _is_using_pandas(exog, None) + + exog_index = exog.index if is_pandas else None + + if design_info is None: + design_info = getattr(model.data, 'design_info', None) + + if design_info is not None and (exog is not None): + from patsy import dmatrix + if isinstance(exog, pd.Series): + # we are guessing whether it should be column or row + if (hasattr(exog, 'name') and isinstance(exog.name, str) and + exog.name in design_info.describe()): + # assume we need one column + exog = pd.DataFrame(exog) + else: + # assume we need a row + exog = pd.DataFrame(exog).T + orig_exog_len = len(exog) + is_dict = isinstance(exog, dict) + exog = dmatrix(design_info, exog, return_type="dataframe") + if orig_exog_len > len(exog) and not is_dict: + import warnings + if exog_index is None: + warnings.warn('nan values have been dropped', ValueWarning) + else: + exog = exog.reindex(exog_index) + exog_index = exog.index + + if exog is not None: + exog = np.asarray(exog) + if exog.ndim == 1 and (model.exog.ndim == 1 or + model.exog.shape[1] == 1): + exog = exog[:, None] + exog = np.atleast_2d(exog) # needed in count model shape[1] + + return exog, exog_index + + +class GLMGamResults(GLMResults): + """Results class for generalized additive models, GAM. + + This inherits from GLMResults. + + Warning: some inherited methods might not correctly take account of the + penalization + + GLMGamResults inherits from GLMResults + All methods related to the loglikelihood function return the penalized + values. + + Attributes + ---------- + + edf + list of effective degrees of freedom for each column of the design + matrix. + hat_matrix_diag + diagonal of hat matrix + gcv + generalized cross-validation criterion computed as + ``gcv = scale / (1. - hat_matrix_trace / self.nobs)**2`` + cv + cross-validation criterion computed as + ``cv = ((resid_pearson / (1 - hat_matrix_diag))**2).sum() / nobs`` + + Notes + ----- + status: experimental + + """ + + def __init__(self, model, params, normalized_cov_params, scale, **kwds): + + # this is a messy way to compute edf and update scale + # need several attributes to compute edf + self.model = model + self.params = params + self.normalized_cov_params = normalized_cov_params + self.scale = scale + edf = self.edf.sum() + self.df_model = edf - 1 # assume constant + # need to use nobs or wnobs attribute + self.df_resid = self.model.endog.shape[0] - edf + + # we are setting the model df for the case when super is using it + # df in model will be incorrect state when alpha/pen_weight changes + self.model.df_model = self.df_model + self.model.df_resid = self.df_resid + mu = self.fittedvalues + self.scale = scale = self.model.estimate_scale(mu) + super(GLMGamResults, self).__init__(model, params, + normalized_cov_params, scale, + **kwds) + + def _tranform_predict_exog(self, exog=None, exog_smooth=None, + transform=True): + """Transform original explanatory variables for prediction + + Parameters + ---------- + exog : array_like, optional + The values for the linear explanatory variables. + exog_smooth : array_like + values for the variables in the smooth terms + transform : bool, optional + If transform is False, then ``exog`` is returned unchanged and + ``x`` is ignored. It is assumed that exog contains the full + design matrix for the predict observations. + If transform is True, then the basis representation of the smooth + term will be constructed from the provided ``x``. + + Returns + ------- + exog_transformed : ndarray + design matrix for the prediction + + """ + exog_index = None + if transform is False: + # the following allows that either or both exog are not None + if exog_smooth is None: + # exog could be None or array + ex = exog + else: + if exog is None: + ex = exog_smooth + else: + ex = np.column_stack((exog, exog_smooth)) + else: + # transform exog_linear if needed + if exog is not None and hasattr(self.model, 'design_info_linear'): + exog, exog_index = _transform_predict_exog( + self.model, exog, self.model.design_info_linear) + + # create smooth basis + if exog_smooth is not None: + ex_smooth = self.model.smoother.transform(exog_smooth) + if exog is None: + ex = ex_smooth + else: + # TODO: there might be problems is exog_smooth is 1-D + ex = np.column_stack((exog, ex_smooth)) + else: + ex = exog + + return ex, exog_index + + def predict(self, exog=None, exog_smooth=None, transform=True, **kwargs): + """" + compute prediction + + Parameters + ---------- + exog : array_like, optional + The values for the linear explanatory variables + exog_smooth : array_like + values for the variables in the smooth terms + transform : bool, optional + If transform is True, then the basis representation of the smooth + term will be constructed from the provided ``exog``. + kwargs : + Some models can take additional arguments or keywords, see the + predict method of the model for the details. + + Returns + ------- + prediction : ndarray, pandas.Series or pandas.DataFrame + predicted values + """ + ex, exog_index = self._tranform_predict_exog(exog=exog, + exog_smooth=exog_smooth, + transform=transform) + predict_results = super(GLMGamResults, self).predict(ex, + transform=False, + **kwargs) + if exog_index is not None and not hasattr( + predict_results, 'predicted_values'): + if predict_results.ndim == 1: + return pd.Series(predict_results, index=exog_index) + else: + return pd.DataFrame(predict_results, index=exog_index) + else: + return predict_results + + def get_prediction(self, exog=None, exog_smooth=None, transform=True, + **kwargs): + """compute prediction results + + Parameters + ---------- + exog : array_like, optional + The values for which you want to predict. + exog_smooth : array_like + values for the variables in the smooth terms + transform : bool, optional + If transform is True, then the basis representation of the smooth + term will be constructed from the provided ``x``. + kwargs : + Some models can take additional arguments or keywords, see the + predict method of the model for the details. + + Returns + ------- + prediction_results : generalized_linear_model.PredictionResults + The prediction results instance contains prediction and prediction + variance and can on demand calculate confidence intervals and + summary tables for the prediction of the mean and of new + observations. + + """ + ex, exog_index = self._tranform_predict_exog(exog=exog, + exog_smooth=exog_smooth, + transform=transform) + return super(GLMGamResults, self).get_prediction(ex, transform=False, + **kwargs) + + def partial_values(self, smooth_index, include_constant=True): + """contribution of a smooth term to the linear prediction + + Warning: This will be replaced by a predict method + + Parameters + ---------- + smooth_index : int + index of the smooth term within list of smooth terms + include_constant : bool + If true, then the estimated intercept is added to the prediction + and its standard errors. This avoids that the confidence interval + has zero width at the imposed identification constraint, e.g. + either at a reference point or at the mean. + + Returns + ------- + predicted : nd_array + predicted value of linear term. + This is not the expected response if the link function is not + linear. + se_pred : nd_array + standard error of linear prediction + + """ + variable = smooth_index + smoother = self.model.smoother + mask = smoother.mask[variable] + + start_idx = self.model.k_exog_linear + idx = start_idx + np.nonzero(mask)[0] + + # smoother has only smooth parts, not exog_linear + exog_part = smoother.basis[:, mask] + + const_idx = self.model.data.const_idx + if include_constant and const_idx is not None: + idx = np.concatenate(([const_idx], idx)) + exog_part = self.model.exog[:, idx] + + linpred = np.dot(exog_part, self.params[idx]) + # select the submatrix corresponding to a single variable + partial_cov_params = self.cov_params(column=idx) + + covb = partial_cov_params + var = (exog_part * np.dot(covb, exog_part.T).T).sum(1) + se = np.sqrt(var) + + return linpred, se + + def plot_partial(self, smooth_index, plot_se=True, cpr=False, + include_constant=True, ax=None): + """plot the contribution of a smooth term to the linear prediction + + Parameters + ---------- + smooth_index : int + index of the smooth term within list of smooth terms + plot_se : book + If plot_se is true, then the confidence interval for the linear + prediction will be added to the plot. + cpr : bool + If cpr (component plus residual) is true, the a scatter plot of + the partial working residuals will be added to the plot. + include_constant : bool + If true, then the estimated intercept is added to the prediction + and its standard errors. This avoids that the confidence interval + has zero width at the imposed identification constraint, e.g. + either at a reference point or at the mean. + ax : None or matplotlib axis instance + If ax is not None, then the plot will be added to it. + + Returns + ------- + fig : matplotlib Figure instance + + """ + from statsmodels.graphics.utils import _import_mpl, create_mpl_ax + _import_mpl() + + variable = smooth_index + y_est, se = self.partial_values(variable, + include_constant=include_constant) + smoother = self.model.smoother + x = smoother.smoothers[variable].x + sort_index = np.argsort(x) + x = x[sort_index] + y_est = y_est[sort_index] + se = se[sort_index] + + fig, ax = create_mpl_ax(ax) + ax.plot(x, y_est, c='blue', lw=2) + if plot_se: + ax.plot(x, y_est + 1.96 * se, '-', c='blue') + ax.plot(x, y_est - 1.96 * se, '-', c='blue') + if cpr: + # TODO: resid_response doesn't make sense with nonlinear link + # use resid_working ? + cpr_ = y_est + self.resid_working + ax.plot(x, cpr_, '.', lw=2) + + ax.set_xlabel(smoother.smoothers[variable].variable_name) + + return fig + + def test_significance(self, smooth_index): + """hypothesis test that a smooth component is zero. + + This calls `wald_test` to compute the hypothesis test, but uses + effective degrees of freedom. + + Parameters + ---------- + smooth_index : int + index of the smooth term within list of smooth terms + + Returns + ------- + wald_test : ContrastResults instance + the results instance created by `wald_test` + """ + + variable = smooth_index + smoother = self.model.smoother + start_idx = self.model.k_exog_linear + + k_params = len(self.params) + # a bit messy, we need first index plus length of smooth term + mask = smoother.mask[variable] + k_constraints = mask.sum() + idx = start_idx + np.nonzero(mask)[0][0] + constraints = np.eye(k_constraints, k_params, idx) + df_constraints = self.edf[idx: idx + k_constraints].sum() + + return self.wald_test(constraints, df_constraints=df_constraints) + + def get_hat_matrix_diag(self, observed=True, _axis=1): + """ + Compute the diagonal of the hat matrix + + Parameters + ---------- + observed : bool + If true, then observed hessian is used in the hat matrix + computation. If false, then the expected hessian is used. + In the case of a canonical link function both are the same. + This is only relevant for models that implement both observed + and expected Hessian, which is currently only GLM. Other + models only use the observed Hessian. + _axis : int + This is mainly for internal use. By default it returns the usual + diagonal of the hat matrix. If _axis is zero, then the result + corresponds to the effective degrees of freedom, ``edf`` for each + column of exog. + + Returns + ------- + hat_matrix_diag : ndarray + The diagonal of the hat matrix computed from the observed + or expected hessian. + """ + weights = self.model.hessian_factor(self.params, scale=self.scale, + observed=observed) + wexog = np.sqrt(weights)[:, None] * self.model.exog + + # we can use inverse hessian directly instead of computing it from + # WLS/IRLS as in GLM + + # TODO: does `normalized_cov_params * scale` work in all cases? + # this avoids recomputing hessian, check when used for other models. + hess_inv = self.normalized_cov_params * self.scale + # this is in GLM equivalent to the more generic and direct + # hess_inv = np.linalg.inv(-self.model.hessian(self.params)) + hd = (wexog * hess_inv.dot(wexog.T).T).sum(axis=_axis) + return hd + + @cache_readonly + def edf(self): + return self.get_hat_matrix_diag(_axis=0) + + @cache_readonly + def hat_matrix_trace(self): + return self.hat_matrix_diag.sum() + + @cache_readonly + def hat_matrix_diag(self): + return self.get_hat_matrix_diag(observed=True) + + @cache_readonly + def gcv(self): + return self.scale / (1. - self.hat_matrix_trace / self.nobs)**2 + + @cache_readonly + def cv(self): + cv_ = ((self.resid_pearson / (1. - self.hat_matrix_diag))**2).sum() + cv_ /= self.nobs + return cv_ + + +class GLMGamResultsWrapper(GLMResultsWrapper): + pass + + +wrap.populate_wrapper(GLMGamResultsWrapper, GLMGamResults) + + +class GLMGam(PenalizedMixin, GLM): + """Model class for generalized additive models, GAM. + + This inherits from `GLM`. + + Warning: Not all inherited methods might take correctly account of the + penalization. Not all options including offset and exposure have been + verified yet. + + Parameters + ---------- + endog : array_like + exog : array_like or None + This explanatory variables are treated as linear. The model in this + case is a partial linear model. + smoother : instance of additive smoother class such as Bsplines or + CyclicCubicSplines + This is a required keyword argument + alpha : list of floats + penalization weights for smooth terms. The length of the list needs + to be the same as the number of smooth terms in the ``smoother`` + family : instance of GLM family + see GLM + offset : None or array_like + see GLM + exposure : None or array_like + see GLM + missing : 'none' + missing value handling is not supported in this class + kwargs : + extra keywords are used in call to the super classes. + + Notes + ----- + Status: experimental. This has full unit test coverage for the core + results with Gaussian and Poisson (without offset and exposure). Other + options and additional results might not be correctly supported yet. + (Binomial with counts, i.e. with n_trials, is most likely wrong in pirls. + User specified var or freq weights are most likely also not correct for + all results.) + + """ + + _results_class = GLMGamResults + _results_class_wrapper = GLMGamResultsWrapper + + def __init__(self, endog, exog=None, smoother=None, alpha=0, family=None, + offset=None, exposure=None, missing='none', **kwargs): + + # TODO: check usage of hasconst + hasconst = kwargs.get('hasconst', None) + xnames_linear = None + if hasattr(exog, 'design_info'): + self.design_info_linear = exog.design_info + xnames_linear = self.design_info_linear.column_names + + is_pandas = _is_using_pandas(exog, None) + + # TODO: handle data is experimental, see #5469 + # This is a bit wasteful because we need to `handle_data twice` + self.data_linear = self._handle_data(endog, exog, missing, hasconst) + if xnames_linear is None: + xnames_linear = self.data_linear.xnames + if exog is not None: + exog_linear = np.asarray(exog) + k_exog_linear = exog_linear.shape[1] + else: + exog_linear = None + k_exog_linear = 0 + self.k_exog_linear = k_exog_linear + # We need exog_linear for k-fold cross validation + # TODO: alternative is to take columns from combined exog + self.exog_linear = exog_linear + + self.smoother = smoother + self.k_smooths = smoother.k_variables + self.alpha = self._check_alpha(alpha) + penal = MultivariateGamPenalty(smoother, alpha=self.alpha, + start_idx=k_exog_linear) + kwargs.pop('penal', None) + if exog_linear is not None: + exog = np.column_stack((exog_linear, smoother.basis)) + else: + exog = smoother.basis + + # TODO: check: xnames_linear will be None instead of empty list + # if no exog_linear + # can smoother be empty ? I guess not allowed. + if xnames_linear is None: + xnames_linear = [] + xnames = xnames_linear + self.smoother.col_names + + if is_pandas and exog_linear is not None: + # we a dataframe so we can get a PandasData instance for wrapping + exog = pd.DataFrame(exog, index=self.data_linear.row_labels, + columns=xnames) + + super(GLMGam, self).__init__(endog, exog=exog, family=family, + offset=offset, exposure=exposure, + penal=penal, missing=missing, **kwargs) + + if not is_pandas: + # set exog nanmes if not given by pandas DataFrame + self.exog_names[:] = xnames + + # TODO: the generic data handling might attach the design_info from the + # linear part, but this is incorrect for the full model and + # causes problems in wald_test_terms + + if hasattr(self.data, 'design_info'): + del self.data.design_info + # formula also might be attached which causes problems in predict + if hasattr(self, 'formula'): + self.formula_linear = self.formula + self.formula = None + del self.formula + + def _check_alpha(self, alpha): + """check and convert alpha to required list format + + Parameters + ---------- + alpha : scalar, list or array-like + penalization weight + + Returns + ------- + alpha : list + penalization weight, list with length equal to the number of + smooth terms + + """ + if not isinstance(alpha, Iterable): + alpha = [alpha] * len(self.smoother.smoothers) + elif not isinstance(alpha, list): + # we want alpha to be a list + alpha = list(alpha) + return alpha + + def fit(self, start_params=None, maxiter=1000, method='pirls', tol=1e-8, + scale=None, cov_type='nonrobust', cov_kwds=None, use_t=None, + full_output=True, disp=False, max_start_irls=3, **kwargs): + """estimate parameters and create instance of GLMGamResults class + + Parameters + ---------- + most parameters are the same as for GLM + method : optimization method + The special optimization method is "pirls" which uses a penalized + version of IRLS. Other methods are gradient optimizers as used in + base.model.LikelihoodModel. + + Returns + ------- + res : instance of wrapped GLMGamResults + """ + # TODO: temporary hack to remove attribute + # formula also might be attached which in inherited from_formula + # causes problems in predict + if hasattr(self, 'formula'): + self.formula_linear = self.formula + del self.formula + + # TODO: alpha not allowed yet, but is in `_fit_pirls` + # alpha = self._check_alpha() + + if method.lower() in ['pirls', 'irls']: + res = self._fit_pirls(self.alpha, start_params=start_params, + maxiter=maxiter, tol=tol, scale=scale, + cov_type=cov_type, cov_kwds=cov_kwds, + use_t=use_t, **kwargs) + else: + if max_start_irls > 0 and (start_params is None): + res = self._fit_pirls(self.alpha, start_params=start_params, + maxiter=max_start_irls, tol=tol, + scale=scale, + cov_type=cov_type, cov_kwds=cov_kwds, + use_t=use_t, **kwargs) + start_params = res.params + del res + res = super(GLMGam, self).fit(start_params=start_params, + maxiter=maxiter, method=method, + tol=tol, scale=scale, + cov_type=cov_type, cov_kwds=cov_kwds, + use_t=use_t, + full_output=full_output, disp=disp, + max_start_irls=0, + **kwargs) + return res + + # pag 165 4.3 # pag 136 PIRLS + def _fit_pirls(self, alpha, start_params=None, maxiter=100, tol=1e-8, + scale=None, cov_type='nonrobust', cov_kwds=None, use_t=None, + weights=None): + """fit model with penalized reweighted least squares + + """ + # TODO: this currently modifies several attributes + # self.scale, self.scaletype, self.mu, self.weights + # self.data_weights, + # and possibly self._offset_exposure + # several of those might not be necessary, e.g. mu and weights + + # alpha = alpha * len(y) * self.scale / 100 + # TODO: we need to rescale alpha + endog = self.endog + wlsexog = self.exog # smoother.basis + spl_s = self.penal.penalty_matrix(alpha=alpha) + + nobs, n_columns = wlsexog.shape + + # TODO what are these values? + if weights is None: + self.data_weights = np.array([1.] * nobs) + else: + self.data_weights = weights + + if not hasattr(self, '_offset_exposure'): + self._offset_exposure = 0 + + self.scaletype = scale + # TODO: check default scale types + # self.scaletype = 'dev' + # during iteration + self.scale = 1 + + if start_params is None: + mu = self.family.starting_mu(endog) + lin_pred = self.family.predict(mu) + else: + lin_pred = np.dot(wlsexog, start_params) + self._offset_exposure + mu = self.family.fitted(lin_pred) + dev = self.family.deviance(endog, mu) + + history = dict(params=[None, start_params], deviance=[np.inf, dev]) + converged = False + criterion = history['deviance'] + # This special case is used to get the likelihood for a specific + # params vector. + if maxiter == 0: + mu = self.family.fitted(lin_pred) + self.scale = self.estimate_scale(mu) + wls_results = lm.RegressionResults(self, start_params, None) + iteration = 0 + + for iteration in range(maxiter): + + # TODO: is this equivalent to point 1 of page 136: + # w = 1 / (V(mu) * g'(mu)) ? + self.weights = self.data_weights * self.family.weights(mu) + + # TODO: is this equivalent to point 1 of page 136: + # z = g(mu)(y - mu) + X beta ? + wlsendog = (lin_pred + self.family.link.deriv(mu) * (endog - mu) + - self._offset_exposure) + + # this defines the augmented matrix point 2a on page 136 + wls_results = penalized_wls(wlsendog, wlsexog, spl_s, self.weights) + lin_pred = np.dot(wlsexog, wls_results.params).ravel() + lin_pred += self._offset_exposure + mu = self.family.fitted(lin_pred) + + # We don't need to update scale in GLM/LEF models + # We might need it in dispersion models. + # self.scale = self.estimate_scale(mu) + history = self._update_history(wls_results, mu, history) + + if endog.squeeze().ndim == 1 and np.allclose(mu - endog, 0): + msg = "Perfect separation detected, results not available" + raise PerfectSeparationError(msg) + + # TODO need atol, rtol + # args of _check_convergence: (criterion, iteration, atol, rtol) + converged = _check_convergence(criterion, iteration, tol, 0) + if converged: + break + self.mu = mu + self.scale = self.estimate_scale(mu) + glm_results = GLMGamResults(self, wls_results.params, + wls_results.normalized_cov_params, + self.scale, + cov_type=cov_type, cov_kwds=cov_kwds, + use_t=use_t) + + glm_results.method = "PIRLS" + history['iteration'] = iteration + 1 + glm_results.fit_history = history + glm_results.converged = converged + + return GLMGamResultsWrapper(glm_results) + + def select_penweight(self, criterion='aic', start_params=None, + start_model_params=None, + method='basinhopping', **fit_kwds): + """find alpha by minimizing results criterion + + The objective for the minimization can be results attributes like + ``gcv``, ``aic`` or ``bic`` where the latter are based on effective + degrees of freedom. + + Warning: In many case the optimization might converge to a local + optimum or near optimum. Different start_params or using a global + optimizer is recommended, default is basinhopping. + + Parameters + ---------- + criterion='aic' + name of results attribute to be minimized. + Default is 'aic', other options are 'gcv', 'cv' or 'bic'. + start_params : None or array + starting parameters for alpha in the penalization weight + minimization. The parameters are internally exponentiated and + the minimization is with respect to ``exp(alpha)`` + start_model_params : None or array + starting parameter for the ``model._fit_pirls``. + method : 'basinhopping', 'nm' or 'minimize' + 'basinhopping' and 'nm' directly use the underlying scipy.optimize + functions `basinhopping` and `fmin`. 'minimize' provides access + to the high level interface, `scipy.optimize.minimize`. + fit_kwds : keyword arguments + additional keyword arguments will be used in the call to the + scipy optimizer. Which keywords are supported depends on the + scipy optimization function. + + Returns + ------- + alpha : ndarray + penalization parameter found by minimizing the criterion. + Note that this can be only a local (near) optimum. + fit_res : tuple + results returned by the scipy optimization routine. The + parameters in the optimization problem are `log(alpha)` + history : dict + history of calls to pirls and contains alpha, the fit + criterion and the parameters to which pirls converged to for the + given alpha. + + Notes + ----- + In the test cases Nelder-Mead and bfgs often converge to local optima, + see also https://github.com/statsmodels/statsmodels/issues/5381. + + This does not use any analytical derivatives for the criterion + minimization. + + Status: experimental, It is possible that defaults change if there + is a better way to find a global optimum. API (e.g. type of return) + might also change. + + """ + # copy attributes that are changed, so we can reset them + scale_keep = self.scale + scaletype_keep = self.scaletype + # TODO: use .copy() method when available for all types + alpha_keep = copy.copy(self.alpha) + + if start_params is None: + start_params = np.zeros(self.k_smooths) + else: + start_params = np.log(1e-20 + start_params) + + history = {} + history['alpha'] = [] + history['params'] = [start_model_params] + history['criterion'] = [] + + def fun(p): + a = np.exp(p) + res_ = self._fit_pirls(start_params=history['params'][-1], + alpha=a) + history['alpha'].append(a) + history['params'].append(np.asarray(res_.params)) + return getattr(res_, criterion) + + if method == 'nm': + kwds = dict(full_output=True, maxiter=1000, maxfun=2000) + kwds.update(fit_kwds) + fit_res = optimize.fmin(fun, start_params, **kwds) + opt = fit_res[0] + elif method == 'basinhopping': + kwds = dict(minimizer_kwargs={'method': 'Nelder-Mead', + 'options': {'maxiter': 100, 'maxfev': 500}}, + niter=10) + kwds.update(fit_kwds) + fit_res = optimize.basinhopping(fun, start_params, **kwds) + opt = fit_res.x + elif method == 'minimize': + fit_res = optimize.minimize(fun, start_params, **fit_kwds) + opt = fit_res.x + else: + raise ValueError('method not recognized') + + del history['params'][0] # remove the model start_params + + alpha = np.exp(opt) + + # reset attributes that have or might have changed + self.scale = scale_keep + self.scaletype = scaletype_keep + self.alpha = alpha_keep + + return alpha, fit_res, history + + def select_penweight_kfold(self, alphas=None, cv_iterator=None, cost=None, + k_folds=5, k_grid=11): + """find alphas by k-fold cross-validation + + Warning: This estimates ``k_folds`` models for each point in the + grid of alphas. + + Parameters + ---------- + alphas : None or list of arrays + cv_iterator : instance + instance of a cross-validation iterator, by default this is a + KFold instance + cost : function + default is mean squared error. The cost function to evaluate the + prediction error for the left out sample. This should take two + arrays as argument and return one float. + k_folds : int + number of folds if default Kfold iterator is used. + This is ignored if ``cv_iterator`` is not None. + + Returns + ------- + alpha_cv : list of float + Best alpha in grid according to cross-validation + res_cv : instance of MultivariateGAMCVPath + The instance was used for cross-validation and holds the results + + Notes + ----- + The default alphas are defined as + ``alphas = [np.logspace(0, 7, k_grid) for _ in range(k_smooths)]`` + + """ + + if cost is None: + def cost(x1, x2): + return np.linalg.norm(x1 - x2) / len(x1) + + if alphas is None: + alphas = [np.logspace(0, 7, k_grid) for _ in range(self.k_smooths)] + + if cv_iterator is None: + cv_iterator = KFold(k_folds=k_folds, shuffle=True) + + gam_cv = MultivariateGAMCVPath(smoother=self.smoother, alphas=alphas, + gam=GLMGam, cost=cost, endog=self.endog, + exog=self.exog_linear, + cv_iterator=cv_iterator) + gam_cv_res = gam_cv.fit() + + return gam_cv_res.alpha_cv, gam_cv_res + + +class LogitGam(PenalizedMixin, Logit): + """Generalized Additive model for discrete Logit + + This subclasses discrete_model Logit. + + Warning: not all inherited methods might take correctly account of the + penalization + + not verified yet. + + """ + def __init__(self, endog, smoother, alpha, *args, **kwargs): + if not isinstance(alpha, Iterable): + alpha = np.array([alpha] * len(smoother.smoothers)) + + self.smoother = smoother + self.alpha = alpha + self.pen_weight = 1 # TODO: pen weight should not be defined here!! + penal = MultivariateGamPenalty(smoother, alpha=alpha) + + super(LogitGam, self).__init__(endog, smoother.basis, penal=penal, + *args, **kwargs) + + +def penalized_wls(endog, exog, penalty_matrix, weights): + """weighted least squares with quadratic penalty + + Parameters + ---------- + endog : ndarray + response or endogenous variable + exog : ndarray + design matrix, matrix of exogenous or explanatory variables + penalty_matrix : ndarray, 2-Dim square + penality matrix for quadratic penalization. Note, the penalty_matrix + is multiplied by two to match non-pirls fitting methods. + weights : ndarray + weights for WLS + + Returns + ------- + results : Results instance of WLS + """ + y, x, s = endog, exog, penalty_matrix + # TODO: I don't understand why I need 2 * s + aug_y, aug_x, aug_weights = make_augmented_matrix(y, x, 2 * s, weights) + wls_results = lm.WLS(aug_y, aug_x, aug_weights).fit() + # TODO: use MinimalWLS during iterations, less overhead + # However, MinimalWLS does not return normalized_cov_params + # which we need at the end of the iterations + # call would be + # wls_results = reg_tools._MinimalWLS(aug_y, aug_x, aug_weights).fit() + wls_results.params = wls_results.params.ravel() + + return wls_results + + +def make_augmented_matrix(endog, exog, penalty_matrix, weights): + """augment endog, exog and weights with stochastic restriction matrix + + Parameters + ---------- + endog : ndarray + response or endogenous variable + exog : ndarray + design matrix, matrix of exogenous or explanatory variables + penalty_matrix : ndarray, 2-Dim square + penality matrix for quadratic penalization + weights : ndarray + weights for WLS + + Returns + ------- + endog_aug : ndarray + augmented response variable + exog_aug : ndarray + augmented design matrix + weights_aug : ndarray + augmented weights for WLS + """ + y, x, s, = endog, exog, penalty_matrix + nobs = x.shape[0] + + # TODO: needs full because of broadcasting with weights + # check what weights should be doing + rs = matrix_sqrt(s) + x1 = np.vstack([x, rs]) # augmented x + n_samp1es_x1 = x1.shape[0] + + y1 = np.array([0.] * n_samp1es_x1) # augmented y + y1[:nobs] = y + + id1 = np.array([1.] * rs.shape[0]) + w1 = np.concatenate([weights, id1]) + + return y1, x1, w1 diff --git a/statsmodels/gam/smooth_basis.py b/statsmodels/gam/smooth_basis.py new file mode 100644 index 0000000..702f3a9 --- /dev/null +++ b/statsmodels/gam/smooth_basis.py @@ -0,0 +1,1054 @@ +# -*- coding: utf-8 -*- +""" +Spline and other smoother classes for Generalized Additive Models + +Author: Luca Puggini +Author: Josef Perktold + +Created on Fri Jun 5 16:32:00 2015 +""" + +from __future__ import division +# import useful only for development +from abc import ABCMeta, abstractmethod +from statsmodels.compat.python import with_metaclass + +import numpy as np +import pandas as pd +from patsy import dmatrix +from patsy.mgcv_cubic_splines import _get_all_sorted_knots + +from statsmodels.tools.linalg import transf_constraints + + +# Obtain b splines from patsy + +def _equally_spaced_knots(x, df): + n_knots = df - 2 + x_min = x.min() + x_max = x.max() + knots = np.linspace(x_min, x_max, n_knots) + return knots + + +def _R_compat_quantile(x, probs): + # return np.percentile(x, 100 * np.asarray(probs)) + probs = np.asarray(probs) + quantiles = np.asarray([np.percentile(x, 100 * prob) + for prob in probs.ravel(order="C")]) + return quantiles.reshape(probs.shape, order="C") + + +# FIXME: is this copy/pasted? If so, why do we need it? If not, get +# rid of the try/except for scipy import +# from patsy splines.py +def _eval_bspline_basis(x, knots, degree, deriv='all', include_intercept=True): + try: + from scipy.interpolate import splev + except ImportError: # pragma: no cover + raise ImportError("spline functionality requires scipy") + # 'knots' are assumed to be already pre-processed. E.g. usually you + # want to include duplicate copies of boundary knots; you should do + # that *before* calling this constructor. + knots = np.atleast_1d(np.asarray(knots, dtype=float)) + assert knots.ndim == 1 + knots.sort() + degree = int(degree) + x = np.atleast_1d(x) + if x.ndim == 2 and x.shape[1] == 1: + x = x[:, 0] + assert x.ndim == 1 + # XX FIXME: when points fall outside of the boundaries, splev and R seem + # to handle them differently. I don't know why yet. So until we understand + # this and decide what to do with it, I'm going to play it safe and + # disallow such points. + if np.min(x) < np.min(knots) or np.max(x) > np.max(knots): + raise NotImplementedError("some data points fall outside the " + "outermost knots, and I'm not sure how " + "to handle them. (Patches accepted!)") + # Thanks to Charles Harris for explaining splev. It's not well + # documented, but basically it computes an arbitrary b-spline basis + # given knots and degree on some specificed points (or derivatives + # thereof, but we don't use that functionality), and then returns some + # linear combination of these basis functions. To get out the basis + # functions themselves, we use linear combinations like [1, 0, 0], [0, + # 1, 0], [0, 0, 1]. + # NB: This probably makes it rather inefficient (though I haven't checked + # to be sure -- maybe the fortran code actually skips computing the basis + # function for coefficients that are zero). + # Note: the order of a spline is the same as its degree + 1. + # Note: there are (len(knots) - order) basis functions. + + k_const = 1 - int(include_intercept) + n_bases = len(knots) - (degree + 1) - k_const + if deriv in ['all', 0]: + basis = np.empty((x.shape[0], n_bases), dtype=float) + ret = basis + if deriv in ['all', 1]: + der1_basis = np.empty((x.shape[0], n_bases), dtype=float) + ret = der1_basis + if deriv in ['all', 2]: + der2_basis = np.empty((x.shape[0], n_bases), dtype=float) + ret = der2_basis + + for i in range(n_bases): + coefs = np.zeros((n_bases + k_const,)) + # we are skipping the first column of the basis to drop constant + coefs[i + k_const] = 1 + ii = i + if deriv in ['all', 0]: + basis[:, ii] = splev(x, (knots, coefs, degree)) + if deriv in ['all', 1]: + der1_basis[:, ii] = splev(x, (knots, coefs, degree), der=1) + if deriv in ['all', 2]: + der2_basis[:, ii] = splev(x, (knots, coefs, degree), der=2) + + if deriv == 'all': + return basis, der1_basis, der2_basis + else: + return ret + + +def compute_all_knots(x, df, degree): + order = degree + 1 + n_inner_knots = df - order + lower_bound = np.min(x) + upper_bound = np.max(x) + knot_quantiles = np.linspace(0, 1, n_inner_knots + 2)[1:-1] + inner_knots = _R_compat_quantile(x, knot_quantiles) + all_knots = np.concatenate(([lower_bound, upper_bound] * order, + inner_knots)) + return all_knots, lower_bound, upper_bound, inner_knots + + +def make_bsplines_basis(x, df, degree): + ''' make a spline basis for x ''' + + all_knots, _, _, _ = compute_all_knots(x, df, degree) + basis, der_basis, der2_basis = _eval_bspline_basis(x, all_knots, degree) + return basis, der_basis, der2_basis + + +def get_knots_bsplines(x=None, df=None, knots=None, degree=3, + spacing='quantile', lower_bound=None, + upper_bound=None, all_knots=None): + """knots for use in B-splines + + There are two main options for the knot placement + + - quantile spacing with multiplicity of boundary knots + - equal spacing extended to boundary or exterior knots + + The first corresponds to splines as used by patsy. the second is the + knot spacing for P-Splines. + + """ + # based on patsy memorize_finish + if all_knots is not None: + return all_knots + + x_min = x.min() + x_max = x.max() + + if degree < 0: + raise ValueError("degree must be greater than 0 (not %r)" + % (degree,)) + if int(degree) != degree: + raise ValueError("degree must be an integer (not %r)" + % (degree,)) + + # These are guaranteed to all be 1d vectors by the code above + # x = np.concatenate(tmp["xs"]) + if df is None and knots is None: + raise ValueError("must specify either df or knots") + order = degree + 1 + if df is not None: + n_inner_knots = df - order + if n_inner_knots < 0: + raise ValueError("df=%r is too small for degree=%r; must be >= %s" + % (df, degree, + # We know that n_inner_knots is negative; + # if df were that much larger, it would + # have been zero, and things would work. + df - n_inner_knots)) + if knots is not None: + if len(knots) != n_inner_knots: + raise ValueError("df=%s with degree=%r implies %s knots, " + "but %s knots were provided" + % (df, degree, + n_inner_knots, len(knots))) + elif spacing == 'quantile': + # Need to compute inner knots + knot_quantiles = np.linspace(0, 1, n_inner_knots + 2)[1:-1] + inner_knots = _R_compat_quantile(x, knot_quantiles) + elif spacing == 'equal': + # Need to compute inner knots + grid = np.linspace(0, 1, n_inner_knots + 2)[1:-1] + inner_knots = x_min + grid * (x_max - x_min) + diff_knots = inner_knots[1] - inner_knots[0] + else: + raise ValueError("incorrect option for spacing") + if knots is not None: + inner_knots = knots + if lower_bound is None: + lower_bound = np.min(x) + if upper_bound is None: + upper_bound = np.max(x) + + if lower_bound > upper_bound: + raise ValueError("lower_bound > upper_bound (%r > %r)" + % (lower_bound, upper_bound)) + inner_knots = np.asarray(inner_knots) + if inner_knots.ndim > 1: + raise ValueError("knots must be 1 dimensional") + if np.any(inner_knots < lower_bound): + raise ValueError("some knot values (%s) fall below lower bound " + "(%r)" + % (inner_knots[inner_knots < lower_bound], + lower_bound)) + if np.any(inner_knots > upper_bound): + raise ValueError("some knot values (%s) fall above upper bound " + "(%r)" + % (inner_knots[inner_knots > upper_bound], + upper_bound)) + + if spacing == "equal": + diffs = np.arange(1, order + 1) * diff_knots + lower_knots = inner_knots[0] - diffs[::-1] + upper_knots = inner_knots[-1] + diffs + all_knots = np.concatenate((lower_knots, inner_knots, upper_knots)) + else: + all_knots = np.concatenate(([lower_bound, upper_bound] * order, + inner_knots)) + all_knots.sort() + + return all_knots + + +def _get_integration_points(knots, k_points=3): + """add points to each subinterval defined by knots + + inserts k_points between each two consecutive knots + """ + k_points = k_points + 1 + knots = np.unique(knots) + dxi = np.arange(k_points) / k_points + dxk = np.diff(knots) + dx = dxk[:, None] * dxi + x = np.concatenate(((knots[:-1, None] + dx).ravel(), [knots[-1]])) + return x + + +def get_covder2(smoother, k_points=4, integration_points=None, + skip_ctransf=False, deriv=2): + """ + Approximate integral of cross product of second derivative of smoother + + This uses scipy.integrate simps to compute an approximation to the + integral of the smoother derivative cross-product at knots plus k_points + in between knots. + """ + from scipy.integrate import simps + knots = smoother.knots + x = _get_integration_points(knots, k_points=3) + if integration_points is None: + d2 = smoother.transform(x, deriv=deriv, skip_ctransf=skip_ctransf) + else: + x = integration_points + covd2 = simps(d2[:, :, None] * d2[:, None, :], x, axis=0) + return covd2 + + +# TODO: this function should be deleted +def make_poly_basis(x, degree, intercept=True): + ''' + given a vector x returns poly=(1, x, x^2, ..., x^degree) + and its first and second derivative + ''' + + if intercept: + start = 0 + else: + start = 1 + + nobs = len(x) + basis = np.zeros(shape=(nobs, degree + 1 - start)) + der_basis = np.zeros(shape=(nobs, degree + 1 - start)) + der2_basis = np.zeros(shape=(nobs, degree + 1 - start)) + + for i in range(start, degree + 1): + basis[:, i - start] = x ** i + der_basis[:, i - start] = i * x ** (i - 1) + der2_basis[:, i - start] = i * (i - 1) * x ** (i - 2) + + return basis, der_basis, der2_basis + + +# TODO: try to include other kinds of splines from patsy +# x = np.linspace(0, 1, 30) +# df = 10 +# degree = 3 +# from patsy.mgcv_cubic_splines import cc, cr, te +# all_knots, lower, upper, inner = compute_all_knots(x, df, degree) +# result = cc(x, df=df, knots=all_knots, lower_bound=lower, upper_bound=upper, +# constraints=None) +# +# import matplotlib.pyplot as plt +# +# result = np.array(result) +# print(result.shape) +# plt.plot(result.T) +# plt.show() + +class UnivariateGamSmoother(with_metaclass(ABCMeta)): + """Base Class for single smooth component + """ + def __init__(self, x, constraints=None, variable_name='x'): + self.x = x + self.constraints = constraints + self.variable_name = variable_name + self.nobs, self.k_variables = len(x), 1 + + base4 = self._smooth_basis_for_single_variable() + if constraints == 'center': + constraints = base4[0].mean(0)[None, :] + + if constraints is not None and not isinstance(constraints, str): + ctransf = transf_constraints(constraints) + self.ctransf = ctransf + else: + # subclasses might set ctransf directly + # only used if constraints is None + if not hasattr(self, 'ctransf'): + self.ctransf = None + + self.basis, self.der_basis, self.der2_basis, self.cov_der2 = base4 + if self.ctransf is not None: + ctransf = self.ctransf + # transform attributes that are not None + if base4[0] is not None: + self.basis = base4[0].dot(ctransf) + if base4[1] is not None: + self.der_basis = base4[1].dot(ctransf) + if base4[2] is not None: + self.der2_basis = base4[2].dot(ctransf) + if base4[3] is not None: + self.cov_der2 = ctransf.T.dot(base4[3]).dot(ctransf) + + self.dim_basis = self.basis.shape[1] + self.col_names = [self.variable_name + "_s" + str(i) + for i in range(self.dim_basis)] + + @abstractmethod + def _smooth_basis_for_single_variable(self): + return + + +class UnivariateGenericSmoother(UnivariateGamSmoother): + """Generic single smooth component + """ + def __init__(self, x, basis, der_basis, der2_basis, cov_der2, + variable_name='x'): + self.basis = basis + self.der_basis = der_basis + self.der2_basis = der2_basis + self.cov_der2 = cov_der2 + + super(UnivariateGenericSmoother, self).__init__( + x, variable_name=variable_name) + + def _smooth_basis_for_single_variable(self): + return self.basis, self.der_basis, self.der2_basis, self.cov_der2 + + +class UnivariatePolynomialSmoother(UnivariateGamSmoother): + """polynomial single smooth component + """ + def __init__(self, x, degree, variable_name='x'): + self.degree = degree + super(UnivariatePolynomialSmoother, self).__init__( + x, variable_name=variable_name) + + def _smooth_basis_for_single_variable(self): + # TODO: unclear description + """ + given a vector x returns poly=(1, x, x^2, ..., x^degree) + and its first and second derivative + """ + + basis = np.zeros(shape=(self.nobs, self.degree)) + der_basis = np.zeros(shape=(self.nobs, self.degree)) + der2_basis = np.zeros(shape=(self.nobs, self.degree)) + for i in range(self.degree): + dg = i + 1 + basis[:, i] = self.x ** dg + der_basis[:, i] = dg * self.x ** (dg - 1) + if dg > 1: + der2_basis[:, i] = dg * (dg - 1) * self.x ** (dg - 2) + else: + der2_basis[:, i] = 0 + + cov_der2 = np.dot(der2_basis.T, der2_basis) + + return basis, der_basis, der2_basis, cov_der2 + + +class UnivariateBSplines(UnivariateGamSmoother): + """B-Spline single smooth component + + This creates and holds the B-Spline basis function for one + component. + + Parameters + ---------- + x : array, 1-D + underlying explanatory variable for smooth terms. + df : int + numer of basis functions or degrees of freedom + degree : int + degree of the spline + include_intercept : bool + If False, then the basis functions are transformed so that they + do not include a constant. This avoids perfect collinearity if + a constant or several components are included in the model. + constraints : None, string or array + Constraints are used to transform the basis functions to satisfy + those constraints. + `constraints = 'center'` applies a linear transform to remove the + constant and center the basis functions. + variable_name : None or str + The name for the underlying explanatory variable, x, used in for + creating the column and parameter names for the basis functions. + covder2_kwds : None or dict + options for computing the penalty matrix from the second derivative + of the spline. + knot_kwds : None or list of dict + option for the knot selection. + By default knots are selected in the same way as in patsy, however the + number of knots is independent of keeping or removing the constant. + Interior knot selection is based on quantiles of the data and is the + same in patsy and mgcv. Boundary points are at the limits of the data + range. + The available options use with `get_knots_bsplines` are + + - knots : None or array + interior knots + - spacing : 'quantile' or 'equal' + - lower_bound : None or float + location of lower boundary knots, all boundary knots are at the same + point + - upper_bound : None or float + location of upper boundary knots, all boundary knots are at the same + point + - all_knots : None or array + If all knots are provided, then those will be taken as given and + all other options will be ignored. + + """ + def __init__(self, x, df, degree=3, include_intercept=False, + constraints=None, variable_name='x', + covder2_kwds=None, **knot_kwds): + self.degree = degree + self.df = df + self.include_intercept = include_intercept + self.knots = get_knots_bsplines(x, degree=degree, df=df, **knot_kwds) + self.covder2_kwds = (covder2_kwds if covder2_kwds is not None + else {}) + super(UnivariateBSplines, self).__init__( + x, constraints=constraints, variable_name=variable_name) + + def _smooth_basis_for_single_variable(self): + basis, der_basis, der2_basis = _eval_bspline_basis( + self.x, self.knots, self.degree, + include_intercept=self.include_intercept) + # cov_der2 = np.dot(der2_basis.T, der2_basis) + + cov_der2 = get_covder2(self, skip_ctransf=True, + **self.covder2_kwds) + + return basis, der_basis, der2_basis, cov_der2 + + def transform(self, x_new, deriv=0, skip_ctransf=False): + """create the spline basis for new observations + + The main use of this stateful transformation is for prediction + using the same specification of the spline basis. + + Parameters + ---------- + x_new : array + observations of the underlying explanatory variable + deriv : int + which derivative of the spline basis to compute + This is an options for internal computation. + skip_ctransf : bool + whether to skip the constraint transform + This is an options for internal computation. + + Returns + ------- + basis : ndarray + design matrix for the spline basis for given ``x_new`` + """ + + if x_new is None: + x_new = self.x + exog = _eval_bspline_basis(x_new, self.knots, self.degree, + deriv=deriv, + include_intercept=self.include_intercept) + + # ctransf does not exist yet when cov_der2 is computed + ctransf = getattr(self, 'ctransf', None) + if ctransf is not None and not skip_ctransf: + exog = exog.dot(self.ctransf) + return exog + + +class UnivariateCubicSplines(UnivariateGamSmoother): + """Cubic Spline single smooth component + + Cubic splines as described in the wood's book in chapter 3 + """ + + def __init__(self, x, df, constraints=None, transform='domain', + variable_name='x'): + + self.degree = 3 + self.df = df + self.transform_data_method = transform + + self.x = x = self.transform_data(x, initialize=True) + self.knots = _equally_spaced_knots(x, df) + super(UnivariateCubicSplines, self).__init__( + x, constraints=constraints, variable_name=variable_name) + + def transform_data(self, x, initialize=False): + tm = self.transform_data_method + if tm is None: + return x + + if initialize is True: + if tm == 'domain': + self.domain_low = x.min(0) + self.domain_upp = x.max(0) + elif isinstance(tm, tuple): + self.domain_low = tm[0] + self.domain_upp = tm[1] + self.transform_data_method = 'domain' + else: + raise ValueError("transform should be None, 'domain' " + "or a tuple") + self.domain_diff = self.domain_upp - self.domain_low + + if self.transform_data_method == 'domain': + x = (x - self.domain_low) / self.domain_diff + return x + else: + raise ValueError("incorrect transform_data_method") + + def _smooth_basis_for_single_variable(self): + + basis = self._splines_x()[:, :-1] + # demean except for constant, does not affect derivatives + if not self.constraints == 'none': + self.transf_mean = basis[:, 1:].mean(0) + basis[:, 1:] -= self.transf_mean + else: + self.transf_mean = np.zeros(basis.shape[1]) + s = self._splines_s()[:-1, :-1] + if not self.constraints == 'none': + ctransf = np.diag(1/np.max(np.abs(basis), axis=0)) + else: + ctransf = np.eye(basis.shape[1]) + # use np.eye to avoid rescaling + # ctransf = np.eye(basis.shape[1]) + + if self.constraints == 'no-const': + ctransf = ctransf[1:] + + self.ctransf = ctransf + + return basis, None, None, s + + def _rk(self, x, z): + p1 = ((z - 1 / 2) ** 2 - 1 / 12) * ((x - 1 / 2) ** 2 - 1 / 12) / 4 + p2 = ((np.abs(z - x) - 1 / 2) ** 4 - + 1 / 2 * (np.abs(z - x) - 1 / 2) ** 2 + + 7 / 240) / 24. + return p1 - p2 + + def _splines_x(self, x=None): + if x is None: + x = self.x + n_columns = len(self.knots) + 2 + nobs = x.shape[0] + basis = np.ones(shape=(nobs, n_columns)) + basis[:, 1] = x + # for loop equivalent to outer(x, xk, fun=rk) + for i, xi in enumerate(x): + for j, xkj in enumerate(self.knots): + s_ij = self._rk(xi, xkj) + basis[i, j + 2] = s_ij + return basis + + def _splines_s(self): + q = len(self.knots) + 2 + s = np.zeros(shape=(q, q)) + for i, x1 in enumerate(self.knots): + for j, x2 in enumerate(self.knots): + s[i + 2, j + 2] = self._rk(x1, x2) + return s + + def transform(self, x_new): + x_new = self.transform_data(x_new, initialize=False) + exog = self._splines_x(x_new) + exog[:, 1:] -= self.transf_mean + if self.ctransf is not None: + exog = exog.dot(self.ctransf) + return exog + + +class UnivariateCubicCyclicSplines(UnivariateGamSmoother): + """cyclic cubic regression spline single smooth component + + This creates and holds the Cyclic CubicSpline basis function for one + component. + + Parameters + ---------- + x : array, 1-D + underlying explanatory variable for smooth terms. + df : int + numer of basis functions or degrees of freedom + degree : int + degree of the spline + include_intercept : bool + If False, then the basis functions are transformed so that they + do not include a constant. This avoids perfect collinearity if + a constant or several components are included in the model. + constraints : None, string or array + Constraints are used to transform the basis functions to satisfy + those constraints. + `constraints = 'center'` applies a linear transform to remove the + constant and center the basis functions. + variable_name : None or str + The name for the underlying explanatory variable, x, used in for + creating the column and parameter names for the basis functions. + """ + def __init__(self, x, df, constraints=None, variable_name='x'): + self.degree = 3 + self.df = df + self.x = x + self.knots = _equally_spaced_knots(x, df) + super(UnivariateCubicCyclicSplines, self).__init__( + x, constraints=constraints, variable_name=variable_name) + + def _smooth_basis_for_single_variable(self): + basis = dmatrix("cc(x, df=" + str(self.df) + ") - 1", {"x": self.x}) + self.design_info = basis.design_info + n_inner_knots = self.df - 2 + 1 # +n_constraints + # TODO: from CubicRegressionSplines class + all_knots = _get_all_sorted_knots(self.x, n_inner_knots=n_inner_knots, + inner_knots=None, + lower_bound=None, upper_bound=None) + + b, d = self._get_b_and_d(all_knots) + s = self._get_s(b, d) + + return basis, None, None, s + + def _get_b_and_d(self, knots): + """Returns mapping of cyclic cubic spline values to 2nd derivatives. + + .. note:: See 'Generalized Additive Models', Simon N. Wood, 2006, + pp 146-147 + + Parameters + ---------- + knots : ndarray + The 1-d array knots used for cubic spline parametrization, + must be sorted in ascending order. + + Returns + ------- + b, d: ndarrays + arrays for mapping cyclic cubic spline values at knots to + second derivatives. + penalty matrix is equal to ``s = d.T.dot(b^-1).dot(d)`` + """ + h = knots[1:] - knots[:-1] + n = knots.size - 1 + + # b and d are defined such that the penalty matrix is equivalent to: + # s = d.T.dot(b^-1).dot(d) + # reference in particular to pag 146 of Wood's book + b = np.zeros((n, n)) # the b matrix on page 146 of Wood's book + d = np.zeros((n, n)) # the d matrix on page 146 of Wood's book + + b[0, 0] = (h[n - 1] + h[0]) / 3. + b[0, n - 1] = h[n - 1] / 6. + b[n - 1, 0] = h[n - 1] / 6. + + d[0, 0] = -1. / h[0] - 1. / h[n - 1] + d[0, n - 1] = 1. / h[n - 1] + d[n - 1, 0] = 1. / h[n - 1] + + for i in range(1, n): + b[i, i] = (h[i - 1] + h[i]) / 3. + b[i, i - 1] = h[i - 1] / 6. + b[i - 1, i] = h[i - 1] / 6. + + d[i, i] = -1. / h[i - 1] - 1. / h[i] + d[i, i - 1] = 1. / h[i - 1] + d[i - 1, i] = 1. / h[i - 1] + + return b, d + + def _get_s(self, b, d): + return d.T.dot(np.linalg.inv(b)).dot(d) + + def transform(self, x_new): + exog = dmatrix(self.design_info, {"x": x_new}) + if self.ctransf is not None: + exog = exog.dot(self.ctransf) + return exog + + +class AdditiveGamSmoother(with_metaclass(ABCMeta)): + """Base class for additive smooth components + """ + def __init__(self, x, variable_names=None, include_intercept=False, + **kwargs): + + # get pandas names before using asarray + if isinstance(x, pd.DataFrame): + data_names = x.columns.tolist() + elif isinstance(x, pd.Series): + data_names = [x.name] + else: + data_names = None + + x = np.asarray(x) + + if x.ndim == 1: + self.x = x.copy() + self.x.shape = (len(x), 1) + else: + self.x = x + + self.nobs, self.k_variables = self.x.shape + if isinstance(include_intercept, bool): + self.include_intercept = [include_intercept] * self.k_variables + else: + self.include_intercept = include_intercept + + if variable_names is None: + if data_names is not None: + self.variable_names = data_names + else: + self.variable_names = ['x' + str(i) + for i in range(self.k_variables)] + else: + self.variable_names = variable_names + + self.smoothers = self._make_smoothers_list() + self.basis = np.hstack(list(smoother.basis + for smoother in self.smoothers)) + self.dim_basis = self.basis.shape[1] + self.penalty_matrices = [smoother.cov_der2 + for smoother in self.smoothers] + self.col_names = [] + for smoother in self.smoothers: + self.col_names.extend(smoother.col_names) + + self.mask = [] + last_column = 0 + for smoother in self.smoothers: + mask = np.array([False] * self.dim_basis) + mask[last_column:smoother.dim_basis + last_column] = True + last_column = last_column + smoother.dim_basis + self.mask.append(mask) + + @abstractmethod + def _make_smoothers_list(self): + pass + + def transform(self, x_new): + """create the spline basis for new observations + + The main use of this stateful transformation is for prediction + using the same specification of the spline basis. + + Parameters + ---------- + x_new: array + observations of the underlying explanatory variable + + Returns + ------- + basis : ndarray + design matrix for the spline basis for given ``x_new``. + + """ + exog = np.hstack(list(self.smoothers[i].transform(x_new[:, i]) + for i in range(self.k_variables))) + return exog + + +class GenericSmoothers(AdditiveGamSmoother): + """generic class for additive smooth components for GAM + """ + def __init__(self, x, smoothers): + self.smoothers = smoothers + super(GenericSmoothers, self).__init__(x, variable_names=None) + + def _make_smoothers_list(self): + return self.smoothers + + +class PolynomialSmoother(AdditiveGamSmoother): + """additive polynomial components for GAM + """ + def __init__(self, x, degrees, variable_names=None): + self.degrees = degrees + super(PolynomialSmoother, self).__init__(x, + variable_names=variable_names) + + def _make_smoothers_list(self): + smoothers = [] + for v in range(self.k_variables): + uv_smoother = UnivariatePolynomialSmoother( + self.x[:, v], + degree=self.degrees[v], + variable_name=self.variable_names[v]) + smoothers.append(uv_smoother) + return smoothers + + +class BSplines(AdditiveGamSmoother): + """additive smooth components using B-Splines + + This creates and holds the B-Spline basis function for several + components. + + Parameters + ---------- + x : array_like, 1-D or 2-D + underlying explanatory variable for smooth terms. + If 2-dimensional, then observations should be in rows and + explanatory variables in columns. + df : int + numer of basis functions or degrees of freedom + degree : int + degree of the spline + include_intercept : bool + If False, then the basis functions are transformed so that they + do not include a constant. This avoids perfect collinearity if + a constant or several components are included in the model. + constraints : None, string or array + Constraints are used to transform the basis functions to satisfy + those constraints. + `constraints = 'center'` applies a linear transform to remove the + constant and center the basis functions. + variable_names : None or list of strings + The names for the underlying explanatory variables, x used in for + creating the column and parameter names for the basis functions. + If ``x`` is a pandas object, then the names will be taken from it. + knot_kwds : None or list of dict + option for the knot selection. + By default knots are selected in the same way as in patsy, however the + number of knots is independent of keeping or removing the constant. + Interior knot selection is based on quantiles of the data and is the + same in patsy and mgcv. Boundary points are at the limits of the data + range. + The available options use with `get_knots_bsplines` are + + - knots : None or array + interior knots + - spacing : 'quantile' or 'equal' + - lower_bound : None or float + location of lower boundary knots, all boundary knots are at the same + point + - upper_bound : None or float + location of upper boundary knots, all boundary knots are at the same + point + - all_knots : None or array + If all knots are provided, then those will be taken as given and + all other options will be ignored. + + + Attributes + ---------- + smoothers : list of univariate smooth component instances + basis : design matrix, array of spline bases columns for all components + penalty_matrices : list of penalty matrices, one for each smooth term + dim_basis : number of columns in the basis + k_variables : number of smooth components + col_names : created names for the basis columns + + There are additional attributes about the specification of the splines + and some attributes mainly for internal use. + + Notes + ----- + A constant in the spline basis function can be removed in two different + ways. + The first is by dropping one basis column and normalizing the + remaining columns. This is obtained by the default + ``include_intercept=False, constraints=None`` + The second option is by using the centering transform which is a linear + transformation of all basis functions. As a consequence of the + transformation, the B-spline basis functions do not have locally bounded + support anymore. This is obtained ``constraints='center'``. In this case + ``include_intercept`` will be automatically set to True to avoid + dropping an additional column. + + + """ + def __init__(self, x, df, degree, include_intercept=False, + constraints=None, variable_names=None, knot_kwds=None): + self.degrees = degree + self.dfs = df + self.knot_kwds = knot_kwds + # TODO: move attaching constraints to super call + self.constraints = constraints + if constraints == 'center': + include_intercept = True + + super(BSplines, self).__init__(x, include_intercept=include_intercept, + variable_names=variable_names) + + def _make_smoothers_list(self): + smoothers = [] + for v in range(self.k_variables): + kwds = self.knot_kwds[v] if self.knot_kwds else {} + uv_smoother = UnivariateBSplines( + self.x[:, v], + df=self.dfs[v], degree=self.degrees[v], + include_intercept=self.include_intercept[v], + constraints=self.constraints, + variable_name=self.variable_names[v], **kwds) + smoothers.append(uv_smoother) + + return smoothers + + +class CubicSplines(AdditiveGamSmoother): + """additive smooth components using cubic splines as in Wood 2006. + + Note, these splines do NOT use the same spline basis as + ``Cubic Regression Splines``. + + """ + def __init__(self, x, df, constraints='center', transform='domain', + variable_names=None): + self.dfs = df + self.constraints = constraints + self.transform = transform + super(CubicSplines, self).__init__(x, constraints=constraints, + variable_names=variable_names) + + def _make_smoothers_list(self): + smoothers = [] + for v in range(self.k_variables): + uv_smoother = UnivariateCubicSplines( + self.x[:, v], df=self.dfs[v], + constraints=self.constraints, + transform=self.transform, + variable_name=self.variable_names[v]) + smoothers.append(uv_smoother) + + return smoothers + + +class CyclicCubicSplines(AdditiveGamSmoother): + """additive smooth components using cyclic cubic regression splines + + This spline basis is the same as in patsy. + + Parameters + ---------- + x : array_like, 1-D or 2-D + underlying explanatory variable for smooth terms. + If 2-dimensional, then observations should be in rows and + explanatory variables in columns. + df : int + numer of basis functions or degrees of freedom + constraints : None, string or array + Constraints are used to transform the basis functions to satisfy + those constraints. + variable_names : None or list of strings + The names for the underlying explanatory variables, x used in for + creating the column and parameter names for the basis functions. + If ``x`` is a pandas object, then the names will be taken from it. + + """ + def __init__(self, x, df, constraints=None, variable_names=None): + self.dfs = df + # TODO: move attaching constraints to super call + self.constraints = constraints + super(CyclicCubicSplines, self).__init__(x, + variable_names=variable_names) + + def _make_smoothers_list(self): + smoothers = [] + for v in range(self.k_variables): + uv_smoother = UnivariateCubicCyclicSplines( + self.x[:, v], + df=self.dfs[v], constraints=self.constraints, + variable_name=self.variable_names[v]) + smoothers.append(uv_smoother) + + return smoothers + +# class CubicRegressionSplines(BaseCubicSplines): +# # TODO: this class is still not tested +# +# def __init__(self, x, df=10): +# import warnings +# warnings.warn("This class is still not tested and it is probably" +# " not working properly. " +# "I suggest to use another smoother", Warning) +# +# super(CubicRegressionSplines, self).__init__(x, df) +# +# self.basis = dmatrix("cc(x, df=" + str(df) + ") - 1", {"x": x}) +# n_inner_knots = df - 2 + 1 # +n_constraints +# # TODO: ACcording to CubicRegressionSplines class this should be +# # n_inner_knots = df - 2 +# all_knots = _get_all_sorted_knots(x, n_inner_knots=n_inner_knots, +# inner_knots=None, +# lower_bound=None, upper_bound=None) +# +# b, d = self._get_b_and_d(all_knots) +# self.s = self._get_s(b, d) +# +# self.dim_basis = self.basis.shape[1] +# +# def _get_b_and_d(self, knots): +# +# h = knots[1:] - knots[:-1] +# n = knots.size - 1 +# +# # b and d are defined such that the penalty matrix is equivalent to: +# # s = d.T.dot(b^-1).dot(d) +# # reference in particular to pag 146 of Wood's book +# b = np.zeros((n, n)) # the b matrix on page 146 of Wood's book +# d = np.zeros((n, n)) # the d matrix on page 146 of Wood's book +# +# for i in range(n-2): +# d[i, i] = 1/h[i] +# d[i, i+1] = -1/h[i] - 1/h[i+1] +# d[i, i+2] = 1/h[i+1] +# +# b[i, i] = (h[i] + h[i+1])/3 +# +# for i in range(n-3): +# b[i, i+1] = h[i+1]/6 +# b[i+1, i] = h[i+1]/6 +# +# return b, d +# +# def _get_s(self, b, d): +# +# return d.T.dot(np.linalg.pinv(b)).dot(d) diff --git a/statsmodels/gam/tests/__init__.py b/statsmodels/gam/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/gam/tests/results/__init__.py b/statsmodels/gam/tests/results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/gam/tests/results/autos.csv b/statsmodels/gam/tests/results/autos.csv new file mode 100644 index 0000000..95ac3eb --- /dev/null +++ b/statsmodels/gam/tests/results/autos.csv @@ -0,0 +1,206 @@ +"symbol","loss","make","fuel","aspir","doors","style","drive","eng_loc","wb","length","width","height","weight","eng_type","cylinders","eng_cc","fuel.sys","bore","stroke","comp.ratio","hp","rpm","city_mpg","hw_mpg","price" +3,,"alfa-romero","gas","std","two","convertible","rwd","front",88.6,168.8,64.1,48.8,2548,"dohc","four",130,"mpfi",3.47,2.68,9,111,5000,21,27,13495 +3,,"alfa-romero","gas","std","two","convertible","rwd","front",88.6,168.8,64.1,48.8,2548,"dohc","four",130,"mpfi",3.47,2.68,9,111,5000,21,27,16500 +1,,"alfa-romero","gas","std","two","hatchback","rwd","front",94.5,171.2,65.5,52.4,2823,"ohcv","six",152,"mpfi",2.68,3.47,9,154,5000,19,26,16500 +2,164,"audi","gas","std","four","sedan","fwd","front",99.8,176.6,66.2,54.3,2337,"ohc","four",109,"mpfi",3.19,3.4,10,102,5500,24,30,13950 +2,164,"audi","gas","std","four","sedan","4wd","front",99.4,176.6,66.4,54.3,2824,"ohc","five",136,"mpfi",3.19,3.4,8,115,5500,18,22,17450 +2,,"audi","gas","std","two","sedan","fwd","front",99.8,177.3,66.3,53.1,2507,"ohc","five",136,"mpfi",3.19,3.4,8.5,110,5500,19,25,15250 +1,158,"audi","gas","std","four","sedan","fwd","front",105.8,192.7,71.4,55.7,2844,"ohc","five",136,"mpfi",3.19,3.4,8.5,110,5500,19,25,17710 +1,,"audi","gas","std","four","wagon","fwd","front",105.8,192.7,71.4,55.7,2954,"ohc","five",136,"mpfi",3.19,3.4,8.5,110,5500,19,25,18920 +1,158,"audi","gas","turbo","four","sedan","fwd","front",105.8,192.7,71.4,55.9,3086,"ohc","five",131,"mpfi",3.13,3.4,8.3,140,5500,17,20,23875 +0,,"audi","gas","turbo","two","hatchback","4wd","front",99.5,178.2,67.9,52,3053,"ohc","five",131,"mpfi",3.13,3.4,7,160,5500,16,22, +2,192,"bmw","gas","std","two","sedan","rwd","front",101.2,176.8,64.8,54.3,2395,"ohc","four",108,"mpfi",3.5,2.8,8.8,101,5800,23,29,16430 +0,192,"bmw","gas","std","four","sedan","rwd","front",101.2,176.8,64.8,54.3,2395,"ohc","four",108,"mpfi",3.5,2.8,8.8,101,5800,23,29,16925 +0,188,"bmw","gas","std","two","sedan","rwd","front",101.2,176.8,64.8,54.3,2710,"ohc","six",164,"mpfi",3.31,3.19,9,121,4250,21,28,20970 +0,188,"bmw","gas","std","four","sedan","rwd","front",101.2,176.8,64.8,54.3,2765,"ohc","six",164,"mpfi",3.31,3.19,9,121,4250,21,28,21105 +1,,"bmw","gas","std","four","sedan","rwd","front",103.5,189,66.9,55.7,3055,"ohc","six",164,"mpfi",3.31,3.19,9,121,4250,20,25,24565 +0,,"bmw","gas","std","four","sedan","rwd","front",103.5,189,66.9,55.7,3230,"ohc","six",209,"mpfi",3.62,3.39,8,182,5400,16,22,30760 +0,,"bmw","gas","std","two","sedan","rwd","front",103.5,193.8,67.9,53.7,3380,"ohc","six",209,"mpfi",3.62,3.39,8,182,5400,16,22,41315 +0,,"bmw","gas","std","four","sedan","rwd","front",110,197,70.9,56.3,3505,"ohc","six",209,"mpfi",3.62,3.39,8,182,5400,15,20,36880 +2,121,"chevrolet","gas","std","two","hatchback","fwd","front",88.4,141.1,60.3,53.2,1488,"l","three",61,"2bbl",2.91,3.03,9.5,48,5100,47,53,5151 +1,98,"chevrolet","gas","std","two","hatchback","fwd","front",94.5,155.9,63.6,52,1874,"ohc","four",90,"2bbl",3.03,3.11,9.6,70,5400,38,43,6295 +0,81,"chevrolet","gas","std","four","sedan","fwd","front",94.5,158.8,63.6,52,1909,"ohc","four",90,"2bbl",3.03,3.11,9.6,70,5400,38,43,6575 +1,118,"dodge","gas","std","two","hatchback","fwd","front",93.7,157.3,63.8,50.8,1876,"ohc","four",90,"2bbl",2.97,3.23,9.41,68,5500,37,41,5572 +1,118,"dodge","gas","std","two","hatchback","fwd","front",93.7,157.3,63.8,50.8,1876,"ohc","four",90,"2bbl",2.97,3.23,9.4,68,5500,31,38,6377 +1,118,"dodge","gas","turbo","two","hatchback","fwd","front",93.7,157.3,63.8,50.8,2128,"ohc","four",98,"mpfi",3.03,3.39,7.6,102,5500,24,30,7957 +1,148,"dodge","gas","std","four","hatchback","fwd","front",93.7,157.3,63.8,50.6,1967,"ohc","four",90,"2bbl",2.97,3.23,9.4,68,5500,31,38,6229 +1,148,"dodge","gas","std","four","sedan","fwd","front",93.7,157.3,63.8,50.6,1989,"ohc","four",90,"2bbl",2.97,3.23,9.4,68,5500,31,38,6692 +1,148,"dodge","gas","std","four","sedan","fwd","front",93.7,157.3,63.8,50.6,1989,"ohc","four",90,"2bbl",2.97,3.23,9.4,68,5500,31,38,7609 +1,148,"dodge","gas","turbo",,"sedan","fwd","front",93.7,157.3,63.8,50.6,2191,"ohc","four",98,"mpfi",3.03,3.39,7.6,102,5500,24,30,8558 +-1,110,"dodge","gas","std","four","wagon","fwd","front",103.3,174.6,64.6,59.8,2535,"ohc","four",122,"2bbl",3.34,3.46,8.5,88,5000,24,30,8921 +3,145,"dodge","gas","turbo","two","hatchback","fwd","front",95.9,173.2,66.3,50.2,2811,"ohc","four",156,"mfi",3.6,3.9,7,145,5000,19,24,12964 +2,137,"honda","gas","std","two","hatchback","fwd","front",86.6,144.6,63.9,50.8,1713,"ohc","four",92,"1bbl",2.91,3.41,9.6,58,4800,49,54,6479 +2,137,"honda","gas","std","two","hatchback","fwd","front",86.6,144.6,63.9,50.8,1819,"ohc","four",92,"1bbl",2.91,3.41,9.2,76,6000,31,38,6855 +1,101,"honda","gas","std","two","hatchback","fwd","front",93.7,150,64,52.6,1837,"ohc","four",79,"1bbl",2.91,3.07,10.1,60,5500,38,42,5399 +1,101,"honda","gas","std","two","hatchback","fwd","front",93.7,150,64,52.6,1940,"ohc","four",92,"1bbl",2.91,3.41,9.2,76,6000,30,34,6529 +1,101,"honda","gas","std","two","hatchback","fwd","front",93.7,150,64,52.6,1956,"ohc","four",92,"1bbl",2.91,3.41,9.2,76,6000,30,34,7129 +0,110,"honda","gas","std","four","sedan","fwd","front",96.5,163.4,64,54.5,2010,"ohc","four",92,"1bbl",2.91,3.41,9.2,76,6000,30,34,7295 +0,78,"honda","gas","std","four","wagon","fwd","front",96.5,157.1,63.9,58.3,2024,"ohc","four",92,"1bbl",2.92,3.41,9.2,76,6000,30,34,7295 +0,106,"honda","gas","std","two","hatchback","fwd","front",96.5,167.5,65.2,53.3,2236,"ohc","four",110,"1bbl",3.15,3.58,9,86,5800,27,33,7895 +0,106,"honda","gas","std","two","hatchback","fwd","front",96.5,167.5,65.2,53.3,2289,"ohc","four",110,"1bbl",3.15,3.58,9,86,5800,27,33,9095 +0,85,"honda","gas","std","four","sedan","fwd","front",96.5,175.4,65.2,54.1,2304,"ohc","four",110,"1bbl",3.15,3.58,9,86,5800,27,33,8845 +0,85,"honda","gas","std","four","sedan","fwd","front",96.5,175.4,62.5,54.1,2372,"ohc","four",110,"1bbl",3.15,3.58,9,86,5800,27,33,10295 +0,85,"honda","gas","std","four","sedan","fwd","front",96.5,175.4,65.2,54.1,2465,"ohc","four",110,"mpfi",3.15,3.58,9,101,5800,24,28,12945 +1,107,"honda","gas","std","two","sedan","fwd","front",96.5,169.1,66,51,2293,"ohc","four",110,"2bbl",3.15,3.58,9.1,100,5500,25,31,10345 +0,,"isuzu","gas","std","four","sedan","rwd","front",94.3,170.7,61.8,53.5,2337,"ohc","four",111,"2bbl",3.31,3.23,8.5,78,4800,24,29,6785 +1,,"isuzu","gas","std","two","sedan","fwd","front",94.5,155.9,63.6,52,1874,"ohc","four",90,"2bbl",3.03,3.11,9.6,70,5400,38,43, +0,,"isuzu","gas","std","four","sedan","fwd","front",94.5,155.9,63.6,52,1909,"ohc","four",90,"2bbl",3.03,3.11,9.6,70,5400,38,43, +2,,"isuzu","gas","std","two","hatchback","rwd","front",96,172.6,65.2,51.4,2734,"ohc","four",119,"spfi",3.43,3.23,9.2,90,5000,24,29,11048 +0,145,"jaguar","gas","std","four","sedan","rwd","front",113,199.6,69.6,52.8,4066,"dohc","six",258,"mpfi",3.63,4.17,8.1,176,4750,15,19,32250 +0,,"jaguar","gas","std","four","sedan","rwd","front",113,199.6,69.6,52.8,4066,"dohc","six",258,"mpfi",3.63,4.17,8.1,176,4750,15,19,35550 +0,,"jaguar","gas","std","two","sedan","rwd","front",102,191.7,70.6,47.8,3950,"ohcv","twelve",326,"mpfi",3.54,2.76,11.5,262,5000,13,17,36000 +1,104,"mazda","gas","std","two","hatchback","fwd","front",93.1,159.1,64.2,54.1,1890,"ohc","four",91,"2bbl",3.03,3.15,9,68,5000,30,31,5195 +1,104,"mazda","gas","std","two","hatchback","fwd","front",93.1,159.1,64.2,54.1,1900,"ohc","four",91,"2bbl",3.03,3.15,9,68,5000,31,38,6095 +1,104,"mazda","gas","std","two","hatchback","fwd","front",93.1,159.1,64.2,54.1,1905,"ohc","four",91,"2bbl",3.03,3.15,9,68,5000,31,38,6795 +1,113,"mazda","gas","std","four","sedan","fwd","front",93.1,166.8,64.2,54.1,1945,"ohc","four",91,"2bbl",3.03,3.15,9,68,5000,31,38,6695 +1,113,"mazda","gas","std","four","sedan","fwd","front",93.1,166.8,64.2,54.1,1950,"ohc","four",91,"2bbl",3.08,3.15,9,68,5000,31,38,7395 +3,150,"mazda","gas","std","two","hatchback","rwd","front",95.3,169,65.7,49.6,2380,"rotor","two",70,"4bbl",,,9.4,101,6000,17,23,10945 +3,150,"mazda","gas","std","two","hatchback","rwd","front",95.3,169,65.7,49.6,2380,"rotor","two",70,"4bbl",,,9.4,101,6000,17,23,11845 +3,150,"mazda","gas","std","two","hatchback","rwd","front",95.3,169,65.7,49.6,2385,"rotor","two",70,"4bbl",,,9.4,101,6000,17,23,13645 +3,150,"mazda","gas","std","two","hatchback","rwd","front",95.3,169,65.7,49.6,2500,"rotor","two",80,"mpfi",,,9.4,135,6000,16,23,15645 +1,129,"mazda","gas","std","two","hatchback","fwd","front",98.8,177.8,66.5,53.7,2385,"ohc","four",122,"2bbl",3.39,3.39,8.6,84,4800,26,32,8845 +0,115,"mazda","gas","std","four","sedan","fwd","front",98.8,177.8,66.5,55.5,2410,"ohc","four",122,"2bbl",3.39,3.39,8.6,84,4800,26,32,8495 +1,129,"mazda","gas","std","two","hatchback","fwd","front",98.8,177.8,66.5,53.7,2385,"ohc","four",122,"2bbl",3.39,3.39,8.6,84,4800,26,32,10595 +0,115,"mazda","gas","std","four","sedan","fwd","front",98.8,177.8,66.5,55.5,2410,"ohc","four",122,"2bbl",3.39,3.39,8.6,84,4800,26,32,10245 +0,,"mazda","diesel","std",,"sedan","fwd","front",98.8,177.8,66.5,55.5,2443,"ohc","four",122,"idi",3.39,3.39,22.7,64,4650,36,42,10795 +0,115,"mazda","gas","std","four","hatchback","fwd","front",98.8,177.8,66.5,55.5,2425,"ohc","four",122,"2bbl",3.39,3.39,8.6,84,4800,26,32,11245 +0,118,"mazda","gas","std","four","sedan","rwd","front",104.9,175,66.1,54.4,2670,"ohc","four",140,"mpfi",3.76,3.16,8,120,5000,19,27,18280 +0,,"mazda","diesel","std","four","sedan","rwd","front",104.9,175,66.1,54.4,2700,"ohc","four",134,"idi",3.43,3.64,22,72,4200,31,39,18344 +-1,93,"mercedes-benz","diesel","turbo","four","sedan","rwd","front",110,190.9,70.3,56.5,3515,"ohc","five",183,"idi",3.58,3.64,21.5,123,4350,22,25,25552 +-1,93,"mercedes-benz","diesel","turbo","four","wagon","rwd","front",110,190.9,70.3,58.7,3750,"ohc","five",183,"idi",3.58,3.64,21.5,123,4350,22,25,28248 +0,93,"mercedes-benz","diesel","turbo","two","hardtop","rwd","front",106.7,187.5,70.3,54.9,3495,"ohc","five",183,"idi",3.58,3.64,21.5,123,4350,22,25,28176 +-1,93,"mercedes-benz","diesel","turbo","four","sedan","rwd","front",115.6,202.6,71.7,56.3,3770,"ohc","five",183,"idi",3.58,3.64,21.5,123,4350,22,25,31600 +-1,,"mercedes-benz","gas","std","four","sedan","rwd","front",115.6,202.6,71.7,56.5,3740,"ohcv","eight",234,"mpfi",3.46,3.1,8.3,155,4750,16,18,34184 +3,142,"mercedes-benz","gas","std","two","convertible","rwd","front",96.6,180.3,70.5,50.8,3685,"ohcv","eight",234,"mpfi",3.46,3.1,8.3,155,4750,16,18,35056 +0,,"mercedes-benz","gas","std","four","sedan","rwd","front",120.9,208.1,71.7,56.7,3900,"ohcv","eight",308,"mpfi",3.8,3.35,8,184,4500,14,16,40960 +1,,"mercedes-benz","gas","std","two","hardtop","rwd","front",112,199.2,72,55.4,3715,"ohcv","eight",304,"mpfi",3.8,3.35,8,184,4500,14,16,45400 +1,,"mercury","gas","turbo","two","hatchback","rwd","front",102.7,178.4,68,54.8,2910,"ohc","four",140,"mpfi",3.78,3.12,8,175,5000,19,24,16503 +2,161,"mitsubishi","gas","std","two","hatchback","fwd","front",93.7,157.3,64.4,50.8,1918,"ohc","four",92,"2bbl",2.97,3.23,9.4,68,5500,37,41,5389 +2,161,"mitsubishi","gas","std","two","hatchback","fwd","front",93.7,157.3,64.4,50.8,1944,"ohc","four",92,"2bbl",2.97,3.23,9.4,68,5500,31,38,6189 +2,161,"mitsubishi","gas","std","two","hatchback","fwd","front",93.7,157.3,64.4,50.8,2004,"ohc","four",92,"2bbl",2.97,3.23,9.4,68,5500,31,38,6669 +1,161,"mitsubishi","gas","turbo","two","hatchback","fwd","front",93,157.3,63.8,50.8,2145,"ohc","four",98,"spdi",3.03,3.39,7.6,102,5500,24,30,7689 +3,153,"mitsubishi","gas","turbo","two","hatchback","fwd","front",96.3,173,65.4,49.4,2370,"ohc","four",110,"spdi",3.17,3.46,7.5,116,5500,23,30,9959 +3,153,"mitsubishi","gas","std","two","hatchback","fwd","front",96.3,173,65.4,49.4,2328,"ohc","four",122,"2bbl",3.35,3.46,8.5,88,5000,25,32,8499 +3,,"mitsubishi","gas","turbo","two","hatchback","fwd","front",95.9,173.2,66.3,50.2,2833,"ohc","four",156,"spdi",3.58,3.86,7,145,5000,19,24,12629 +3,,"mitsubishi","gas","turbo","two","hatchback","fwd","front",95.9,173.2,66.3,50.2,2921,"ohc","four",156,"spdi",3.59,3.86,7,145,5000,19,24,14869 +3,,"mitsubishi","gas","turbo","two","hatchback","fwd","front",95.9,173.2,66.3,50.2,2926,"ohc","four",156,"spdi",3.59,3.86,7,145,5000,19,24,14489 +1,125,"mitsubishi","gas","std","four","sedan","fwd","front",96.3,172.4,65.4,51.6,2365,"ohc","four",122,"2bbl",3.35,3.46,8.5,88,5000,25,32,6989 +1,125,"mitsubishi","gas","std","four","sedan","fwd","front",96.3,172.4,65.4,51.6,2405,"ohc","four",122,"2bbl",3.35,3.46,8.5,88,5000,25,32,8189 +1,125,"mitsubishi","gas","turbo","four","sedan","fwd","front",96.3,172.4,65.4,51.6,2403,"ohc","four",110,"spdi",3.17,3.46,7.5,116,5500,23,30,9279 +-1,137,"mitsubishi","gas","std","four","sedan","fwd","front",96.3,172.4,65.4,51.6,2403,"ohc","four",110,"spdi",3.17,3.46,7.5,116,5500,23,30,9279 +1,128,"nissan","gas","std","two","sedan","fwd","front",94.5,165.3,63.8,54.5,1889,"ohc","four",97,"2bbl",3.15,3.29,9.4,69,5200,31,37,5499 +1,128,"nissan","diesel","std","two","sedan","fwd","front",94.5,165.3,63.8,54.5,2017,"ohc","four",103,"idi",2.99,3.47,21.9,55,4800,45,50,7099 +1,128,"nissan","gas","std","two","sedan","fwd","front",94.5,165.3,63.8,54.5,1918,"ohc","four",97,"2bbl",3.15,3.29,9.4,69,5200,31,37,6649 +1,122,"nissan","gas","std","four","sedan","fwd","front",94.5,165.3,63.8,54.5,1938,"ohc","four",97,"2bbl",3.15,3.29,9.4,69,5200,31,37,6849 +1,103,"nissan","gas","std","four","wagon","fwd","front",94.5,170.2,63.8,53.5,2024,"ohc","four",97,"2bbl",3.15,3.29,9.4,69,5200,31,37,7349 +1,128,"nissan","gas","std","two","sedan","fwd","front",94.5,165.3,63.8,54.5,1951,"ohc","four",97,"2bbl",3.15,3.29,9.4,69,5200,31,37,7299 +1,128,"nissan","gas","std","two","hatchback","fwd","front",94.5,165.6,63.8,53.3,2028,"ohc","four",97,"2bbl",3.15,3.29,9.4,69,5200,31,37,7799 +1,122,"nissan","gas","std","four","sedan","fwd","front",94.5,165.3,63.8,54.5,1971,"ohc","four",97,"2bbl",3.15,3.29,9.4,69,5200,31,37,7499 +1,103,"nissan","gas","std","four","wagon","fwd","front",94.5,170.2,63.8,53.5,2037,"ohc","four",97,"2bbl",3.15,3.29,9.4,69,5200,31,37,7999 +2,168,"nissan","gas","std","two","hardtop","fwd","front",95.1,162.4,63.8,53.3,2008,"ohc","four",97,"2bbl",3.15,3.29,9.4,69,5200,31,37,8249 +0,106,"nissan","gas","std","four","hatchback","fwd","front",97.2,173.4,65.2,54.7,2324,"ohc","four",120,"2bbl",3.33,3.47,8.5,97,5200,27,34,8949 +0,106,"nissan","gas","std","four","sedan","fwd","front",97.2,173.4,65.2,54.7,2302,"ohc","four",120,"2bbl",3.33,3.47,8.5,97,5200,27,34,9549 +0,128,"nissan","gas","std","four","sedan","fwd","front",100.4,181.7,66.5,55.1,3095,"ohcv","six",181,"mpfi",3.43,3.27,9,152,5200,17,22,13499 +0,108,"nissan","gas","std","four","wagon","fwd","front",100.4,184.6,66.5,56.1,3296,"ohcv","six",181,"mpfi",3.43,3.27,9,152,5200,17,22,14399 +0,108,"nissan","gas","std","four","sedan","fwd","front",100.4,184.6,66.5,55.1,3060,"ohcv","six",181,"mpfi",3.43,3.27,9,152,5200,19,25,13499 +3,194,"nissan","gas","std","two","hatchback","rwd","front",91.3,170.7,67.9,49.7,3071,"ohcv","six",181,"mpfi",3.43,3.27,9,160,5200,19,25,17199 +3,194,"nissan","gas","turbo","two","hatchback","rwd","front",91.3,170.7,67.9,49.7,3139,"ohcv","six",181,"mpfi",3.43,3.27,7.8,200,5200,17,23,19699 +1,231,"nissan","gas","std","two","hatchback","rwd","front",99.2,178.5,67.9,49.7,3139,"ohcv","six",181,"mpfi",3.43,3.27,9,160,5200,19,25,18399 +0,161,"peugot","gas","std","four","sedan","rwd","front",107.9,186.7,68.4,56.7,3020,"l","four",120,"mpfi",3.46,3.19,8.4,97,5000,19,24,11900 +0,161,"peugot","diesel","turbo","four","sedan","rwd","front",107.9,186.7,68.4,56.7,3197,"l","four",152,"idi",3.7,3.52,21,95,4150,28,33,13200 +0,,"peugot","gas","std","four","wagon","rwd","front",114.2,198.9,68.4,58.7,3230,"l","four",120,"mpfi",3.46,3.19,8.4,97,5000,19,24,12440 +0,,"peugot","diesel","turbo","four","wagon","rwd","front",114.2,198.9,68.4,58.7,3430,"l","four",152,"idi",3.7,3.52,21,95,4150,25,25,13860 +0,161,"peugot","gas","std","four","sedan","rwd","front",107.9,186.7,68.4,56.7,3075,"l","four",120,"mpfi",3.46,2.19,8.4,95,5000,19,24,15580 +0,161,"peugot","diesel","turbo","four","sedan","rwd","front",107.9,186.7,68.4,56.7,3252,"l","four",152,"idi",3.7,3.52,21,95,4150,28,33,16900 +0,,"peugot","gas","std","four","wagon","rwd","front",114.2,198.9,68.4,56.7,3285,"l","four",120,"mpfi",3.46,2.19,8.4,95,5000,19,24,16695 +0,,"peugot","diesel","turbo","four","wagon","rwd","front",114.2,198.9,68.4,58.7,3485,"l","four",152,"idi",3.7,3.52,21,95,4150,25,25,17075 +0,161,"peugot","gas","std","four","sedan","rwd","front",107.9,186.7,68.4,56.7,3075,"l","four",120,"mpfi",3.46,3.19,8.4,97,5000,19,24,16630 +0,161,"peugot","diesel","turbo","four","sedan","rwd","front",107.9,186.7,68.4,56.7,3252,"l","four",152,"idi",3.7,3.52,21,95,4150,28,33,17950 +0,161,"peugot","gas","turbo","four","sedan","rwd","front",108,186.7,68.3,56,3130,"l","four",134,"mpfi",3.61,3.21,7,142,5600,18,24,18150 +1,119,"plymouth","gas","std","two","hatchback","fwd","front",93.7,157.3,63.8,50.8,1918,"ohc","four",90,"2bbl",2.97,3.23,9.4,68,5500,37,41,5572 +1,119,"plymouth","gas","turbo","two","hatchback","fwd","front",93.7,157.3,63.8,50.8,2128,"ohc","four",98,"spdi",3.03,3.39,7.6,102,5500,24,30,7957 +1,154,"plymouth","gas","std","four","hatchback","fwd","front",93.7,157.3,63.8,50.6,1967,"ohc","four",90,"2bbl",2.97,3.23,9.4,68,5500,31,38,6229 +1,154,"plymouth","gas","std","four","sedan","fwd","front",93.7,167.3,63.8,50.8,1989,"ohc","four",90,"2bbl",2.97,3.23,9.4,68,5500,31,38,6692 +1,154,"plymouth","gas","std","four","sedan","fwd","front",93.7,167.3,63.8,50.8,2191,"ohc","four",98,"2bbl",2.97,3.23,9.4,68,5500,31,38,7609 +-1,74,"plymouth","gas","std","four","wagon","fwd","front",103.3,174.6,64.6,59.8,2535,"ohc","four",122,"2bbl",3.35,3.46,8.5,88,5000,24,30,8921 +3,,"plymouth","gas","turbo","two","hatchback","rwd","front",95.9,173.2,66.3,50.2,2818,"ohc","four",156,"spdi",3.59,3.86,7,145,5000,19,24,12764 +3,186,"porsche","gas","std","two","hatchback","rwd","front",94.5,168.9,68.3,50.2,2778,"ohc","four",151,"mpfi",3.94,3.11,9.5,143,5500,19,27,22018 +3,,"porsche","gas","std","two","hardtop","rwd","rear",89.5,168.9,65,51.6,2756,"ohcf","six",194,"mpfi",3.74,2.9,9.5,207,5900,17,25,32528 +3,,"porsche","gas","std","two","hardtop","rwd","rear",89.5,168.9,65,51.6,2756,"ohcf","six",194,"mpfi",3.74,2.9,9.5,207,5900,17,25,34028 +3,,"porsche","gas","std","two","convertible","rwd","rear",89.5,168.9,65,51.6,2800,"ohcf","six",194,"mpfi",3.74,2.9,9.5,207,5900,17,25,37028 +1,,"porsche","gas","std","two","hatchback","rwd","front",98.4,175.7,72.3,50.5,3366,"dohcv","eight",203,"mpfi",3.94,3.11,10,288,5750,17,28, +0,,"renault","gas","std","four","wagon","fwd","front",96.1,181.5,66.5,55.2,2579,"ohc","four",132,"mpfi",3.46,3.9,8.7,,,23,31,9295 +2,,"renault","gas","std","two","hatchback","fwd","front",96.1,176.8,66.6,50.5,2460,"ohc","four",132,"mpfi",3.46,3.9,8.7,,,23,31,9895 +3,150,"saab","gas","std","two","hatchback","fwd","front",99.1,186.6,66.5,56.1,2658,"ohc","four",121,"mpfi",3.54,3.07,9.31,110,5250,21,28,11850 +2,104,"saab","gas","std","four","sedan","fwd","front",99.1,186.6,66.5,56.1,2695,"ohc","four",121,"mpfi",3.54,3.07,9.3,110,5250,21,28,12170 +3,150,"saab","gas","std","two","hatchback","fwd","front",99.1,186.6,66.5,56.1,2707,"ohc","four",121,"mpfi",2.54,2.07,9.3,110,5250,21,28,15040 +2,104,"saab","gas","std","four","sedan","fwd","front",99.1,186.6,66.5,56.1,2758,"ohc","four",121,"mpfi",3.54,3.07,9.3,110,5250,21,28,15510 +3,150,"saab","gas","turbo","two","hatchback","fwd","front",99.1,186.6,66.5,56.1,2808,"dohc","four",121,"mpfi",3.54,3.07,9,160,5500,19,26,18150 +2,104,"saab","gas","turbo","four","sedan","fwd","front",99.1,186.6,66.5,56.1,2847,"dohc","four",121,"mpfi",3.54,3.07,9,160,5500,19,26,18620 +2,83,"subaru","gas","std","two","hatchback","fwd","front",93.7,156.9,63.4,53.7,2050,"ohcf","four",97,"2bbl",3.62,2.36,9,69,4900,31,36,5118 +2,83,"subaru","gas","std","two","hatchback","fwd","front",93.7,157.9,63.6,53.7,2120,"ohcf","four",108,"2bbl",3.62,2.64,8.7,73,4400,26,31,7053 +2,83,"subaru","gas","std","two","hatchback","4wd","front",93.3,157.3,63.8,55.7,2240,"ohcf","four",108,"2bbl",3.62,2.64,8.7,73,4400,26,31,7603 +0,102,"subaru","gas","std","four","sedan","fwd","front",97.2,172,65.4,52.5,2145,"ohcf","four",108,"2bbl",3.62,2.64,9.5,82,4800,32,37,7126 +0,102,"subaru","gas","std","four","sedan","fwd","front",97.2,172,65.4,52.5,2190,"ohcf","four",108,"2bbl",3.62,2.64,9.5,82,4400,28,33,7775 +0,102,"subaru","gas","std","four","sedan","fwd","front",97.2,172,65.4,52.5,2340,"ohcf","four",108,"mpfi",3.62,2.64,9,94,5200,26,32,9960 +0,102,"subaru","gas","std","four","sedan","4wd","front",97,172,65.4,54.3,2385,"ohcf","four",108,"2bbl",3.62,2.64,9,82,4800,24,25,9233 +0,102,"subaru","gas","turbo","four","sedan","4wd","front",97,172,65.4,54.3,2510,"ohcf","four",108,"mpfi",3.62,2.64,7.7,111,4800,24,29,11259 +0,89,"subaru","gas","std","four","wagon","fwd","front",97,173.5,65.4,53,2290,"ohcf","four",108,"2bbl",3.62,2.64,9,82,4800,28,32,7463 +0,89,"subaru","gas","std","four","wagon","fwd","front",97,173.5,65.4,53,2455,"ohcf","four",108,"mpfi",3.62,2.64,9,94,5200,25,31,10198 +0,85,"subaru","gas","std","four","wagon","4wd","front",96.9,173.6,65.4,54.9,2420,"ohcf","four",108,"2bbl",3.62,2.64,9,82,4800,23,29,8013 +0,85,"subaru","gas","turbo","four","wagon","4wd","front",96.9,173.6,65.4,54.9,2650,"ohcf","four",108,"mpfi",3.62,2.64,7.7,111,4800,23,23,11694 +1,87,"toyota","gas","std","two","hatchback","fwd","front",95.7,158.7,63.6,54.5,1985,"ohc","four",92,"2bbl",3.05,3.03,9,62,4800,35,39,5348 +1,87,"toyota","gas","std","two","hatchback","fwd","front",95.7,158.7,63.6,54.5,2040,"ohc","four",92,"2bbl",3.05,3.03,9,62,4800,31,38,6338 +1,74,"toyota","gas","std","four","hatchback","fwd","front",95.7,158.7,63.6,54.5,2015,"ohc","four",92,"2bbl",3.05,3.03,9,62,4800,31,38,6488 +0,77,"toyota","gas","std","four","wagon","fwd","front",95.7,169.7,63.6,59.1,2280,"ohc","four",92,"2bbl",3.05,3.03,9,62,4800,31,37,6918 +0,81,"toyota","gas","std","four","wagon","4wd","front",95.7,169.7,63.6,59.1,2290,"ohc","four",92,"2bbl",3.05,3.03,9,62,4800,27,32,7898 +0,91,"toyota","gas","std","four","wagon","4wd","front",95.7,169.7,63.6,59.1,3110,"ohc","four",92,"2bbl",3.05,3.03,9,62,4800,27,32,8778 +0,91,"toyota","gas","std","four","sedan","fwd","front",95.7,166.3,64.4,53,2081,"ohc","four",98,"2bbl",3.19,3.03,9,70,4800,30,37,6938 +0,91,"toyota","gas","std","four","hatchback","fwd","front",95.7,166.3,64.4,52.8,2109,"ohc","four",98,"2bbl",3.19,3.03,9,70,4800,30,37,7198 +0,91,"toyota","diesel","std","four","sedan","fwd","front",95.7,166.3,64.4,53,2275,"ohc","four",110,"idi",3.27,3.35,22.5,56,4500,34,36,7898 +0,91,"toyota","diesel","std","four","hatchback","fwd","front",95.7,166.3,64.4,52.8,2275,"ohc","four",110,"idi",3.27,3.35,22.5,56,4500,38,47,7788 +0,91,"toyota","gas","std","four","sedan","fwd","front",95.7,166.3,64.4,53,2094,"ohc","four",98,"2bbl",3.19,3.03,9,70,4800,38,47,7738 +0,91,"toyota","gas","std","four","hatchback","fwd","front",95.7,166.3,64.4,52.8,2122,"ohc","four",98,"2bbl",3.19,3.03,9,70,4800,28,34,8358 +0,91,"toyota","gas","std","four","sedan","fwd","front",95.7,166.3,64.4,52.8,2140,"ohc","four",98,"2bbl",3.19,3.03,9,70,4800,28,34,9258 +1,168,"toyota","gas","std","two","sedan","rwd","front",94.5,168.7,64,52.6,2169,"ohc","four",98,"2bbl",3.19,3.03,9,70,4800,29,34,8058 +1,168,"toyota","gas","std","two","hatchback","rwd","front",94.5,168.7,64,52.6,2204,"ohc","four",98,"2bbl",3.19,3.03,9,70,4800,29,34,8238 +1,168,"toyota","gas","std","two","sedan","rwd","front",94.5,168.7,64,52.6,2265,"dohc","four",98,"mpfi",3.24,3.08,9.4,112,6600,26,29,9298 +1,168,"toyota","gas","std","two","hatchback","rwd","front",94.5,168.7,64,52.6,2300,"dohc","four",98,"mpfi",3.24,3.08,9.4,112,6600,26,29,9538 +2,134,"toyota","gas","std","two","hardtop","rwd","front",98.4,176.2,65.6,52,2540,"ohc","four",146,"mpfi",3.62,3.5,9.3,116,4800,24,30,8449 +2,134,"toyota","gas","std","two","hardtop","rwd","front",98.4,176.2,65.6,52,2536,"ohc","four",146,"mpfi",3.62,3.5,9.3,116,4800,24,30,9639 +2,134,"toyota","gas","std","two","hatchback","rwd","front",98.4,176.2,65.6,52,2551,"ohc","four",146,"mpfi",3.62,3.5,9.3,116,4800,24,30,9989 +2,134,"toyota","gas","std","two","hardtop","rwd","front",98.4,176.2,65.6,52,2679,"ohc","four",146,"mpfi",3.62,3.5,9.3,116,4800,24,30,11199 +2,134,"toyota","gas","std","two","hatchback","rwd","front",98.4,176.2,65.6,52,2714,"ohc","four",146,"mpfi",3.62,3.5,9.3,116,4800,24,30,11549 +2,134,"toyota","gas","std","two","convertible","rwd","front",98.4,176.2,65.6,53,2975,"ohc","four",146,"mpfi",3.62,3.5,9.3,116,4800,24,30,17669 +-1,65,"toyota","gas","std","four","sedan","fwd","front",102.4,175.6,66.5,54.9,2326,"ohc","four",122,"mpfi",3.31,3.54,8.7,92,4200,29,34,8948 +-1,65,"toyota","diesel","turbo","four","sedan","fwd","front",102.4,175.6,66.5,54.9,2480,"ohc","four",110,"idi",3.27,3.35,22.5,73,4500,30,33,10698 +-1,65,"toyota","gas","std","four","hatchback","fwd","front",102.4,175.6,66.5,53.9,2414,"ohc","four",122,"mpfi",3.31,3.54,8.7,92,4200,27,32,9988 +-1,65,"toyota","gas","std","four","sedan","fwd","front",102.4,175.6,66.5,54.9,2414,"ohc","four",122,"mpfi",3.31,3.54,8.7,92,4200,27,32,10898 +-1,65,"toyota","gas","std","four","hatchback","fwd","front",102.4,175.6,66.5,53.9,2458,"ohc","four",122,"mpfi",3.31,3.54,8.7,92,4200,27,32,11248 +3,197,"toyota","gas","std","two","hatchback","rwd","front",102.9,183.5,67.7,52,2976,"dohc","six",171,"mpfi",3.27,3.35,9.3,161,5200,20,24,16558 +3,197,"toyota","gas","std","two","hatchback","rwd","front",102.9,183.5,67.7,52,3016,"dohc","six",171,"mpfi",3.27,3.35,9.3,161,5200,19,24,15998 +-1,90,"toyota","gas","std","four","sedan","rwd","front",104.5,187.8,66.5,54.1,3131,"dohc","six",171,"mpfi",3.27,3.35,9.2,156,5200,20,24,15690 +-1,,"toyota","gas","std","four","wagon","rwd","front",104.5,187.8,66.5,54.1,3151,"dohc","six",161,"mpfi",3.27,3.35,9.2,156,5200,19,24,15750 +2,122,"volkswagen","diesel","std","two","sedan","fwd","front",97.3,171.7,65.5,55.7,2261,"ohc","four",97,"idi",3.01,3.4,23,52,4800,37,46,7775 +2,122,"volkswagen","gas","std","two","sedan","fwd","front",97.3,171.7,65.5,55.7,2209,"ohc","four",109,"mpfi",3.19,3.4,9,85,5250,27,34,7975 +2,94,"volkswagen","diesel","std","four","sedan","fwd","front",97.3,171.7,65.5,55.7,2264,"ohc","four",97,"idi",3.01,3.4,23,52,4800,37,46,7995 +2,94,"volkswagen","gas","std","four","sedan","fwd","front",97.3,171.7,65.5,55.7,2212,"ohc","four",109,"mpfi",3.19,3.4,9,85,5250,27,34,8195 +2,94,"volkswagen","gas","std","four","sedan","fwd","front",97.3,171.7,65.5,55.7,2275,"ohc","four",109,"mpfi",3.19,3.4,9,85,5250,27,34,8495 +2,94,"volkswagen","diesel","turbo","four","sedan","fwd","front",97.3,171.7,65.5,55.7,2319,"ohc","four",97,"idi",3.01,3.4,23,68,4500,37,42,9495 +2,94,"volkswagen","gas","std","four","sedan","fwd","front",97.3,171.7,65.5,55.7,2300,"ohc","four",109,"mpfi",3.19,3.4,10,100,5500,26,32,9995 +3,,"volkswagen","gas","std","two","convertible","fwd","front",94.5,159.3,64.2,55.6,2254,"ohc","four",109,"mpfi",3.19,3.4,8.5,90,5500,24,29,11595 +3,256,"volkswagen","gas","std","two","hatchback","fwd","front",94.5,165.7,64,51.4,2221,"ohc","four",109,"mpfi",3.19,3.4,8.5,90,5500,24,29,9980 +0,,"volkswagen","gas","std","four","sedan","fwd","front",100.4,180.2,66.9,55.1,2661,"ohc","five",136,"mpfi",3.19,3.4,8.5,110,5500,19,24,13295 +0,,"volkswagen","diesel","turbo","four","sedan","fwd","front",100.4,180.2,66.9,55.1,2579,"ohc","four",97,"idi",3.01,3.4,23,68,4500,33,38,13845 +0,,"volkswagen","gas","std","four","wagon","fwd","front",100.4,183.1,66.9,55.1,2563,"ohc","four",109,"mpfi",3.19,3.4,9,88,5500,25,31,12290 +-2,103,"volvo","gas","std","four","sedan","rwd","front",104.3,188.8,67.2,56.2,2912,"ohc","four",141,"mpfi",3.78,3.15,9.5,114,5400,23,28,12940 +-1,74,"volvo","gas","std","four","wagon","rwd","front",104.3,188.8,67.2,57.5,3034,"ohc","four",141,"mpfi",3.78,3.15,9.5,114,5400,23,28,13415 +-2,103,"volvo","gas","std","four","sedan","rwd","front",104.3,188.8,67.2,56.2,2935,"ohc","four",141,"mpfi",3.78,3.15,9.5,114,5400,24,28,15985 +-1,74,"volvo","gas","std","four","wagon","rwd","front",104.3,188.8,67.2,57.5,3042,"ohc","four",141,"mpfi",3.78,3.15,9.5,114,5400,24,28,16515 +-2,103,"volvo","gas","turbo","four","sedan","rwd","front",104.3,188.8,67.2,56.2,3045,"ohc","four",130,"mpfi",3.62,3.15,7.5,162,5100,17,22,18420 +-1,74,"volvo","gas","turbo","four","wagon","rwd","front",104.3,188.8,67.2,57.5,3157,"ohc","four",130,"mpfi",3.62,3.15,7.5,162,5100,17,22,18950 +-1,95,"volvo","gas","std","four","sedan","rwd","front",109.1,188.8,68.9,55.5,2952,"ohc","four",141,"mpfi",3.78,3.15,9.5,114,5400,23,28,16845 +-1,95,"volvo","gas","turbo","four","sedan","rwd","front",109.1,188.8,68.8,55.5,3049,"ohc","four",141,"mpfi",3.78,3.15,8.7,160,5300,19,25,19045 +-1,95,"volvo","gas","std","four","sedan","rwd","front",109.1,188.8,68.9,55.5,3012,"ohcv","six",173,"mpfi",3.58,2.87,8.8,134,5500,18,23,21485 +-1,95,"volvo","diesel","turbo","four","sedan","rwd","front",109.1,188.8,68.9,55.5,3217,"ohc","six",145,"idi",3.01,3.4,23,106,4800,26,27,22470 +-1,95,"volvo","gas","turbo","four","sedan","rwd","front",109.1,188.8,68.9,55.5,3062,"ohc","four",141,"mpfi",3.78,3.15,9.5,114,5400,19,25,22625 diff --git a/statsmodels/gam/tests/results/autos_exog.csv b/statsmodels/gam/tests/results/autos_exog.csv new file mode 100644 index 0000000..57d20a8 --- /dev/null +++ b/statsmodels/gam/tests/results/autos_exog.csv @@ -0,0 +1,204 @@ +"(Intercept)","fuelgas","drivefwd","driverwd","s(weight).1","s(weight).2","s(weight).3","s(weight).4","s(weight).5","s(hp).1","s(hp).2","s(hp).3","s(hp).4" +1,1,0,1,-0.139023785013158,-0.310045111153985,0.898562601042527,0.0993781198362582,-0.203005778741669,-0.309379581813845,0.244311672983049,0.604045105494342,-0.18387872007762 +1,1,0,1,-0.139023785013158,-0.310045111153985,0.898562601042527,0.0993781198362582,-0.203005778741669,-0.309379581813845,0.244311672983049,0.604045105494342,-0.18387872007762 +1,1,0,1,-0.0914760952323142,-0.0646964764894899,-0.0910136076188947,0.961878092795054,-0.0740089267650717,-0.183120914509933,-0.210526818213197,-0.0362149781675571,0.83199710377942 +1,1,1,0,-0.248901911619885,0.704649512889156,0.0871238828191662,-0.105061716751373,-0.179993454168965,-0.396939213791445,0.637358327230382,0.128865142226062,-0.202252489513442 +1,1,0,0,-0.0916622692700592,-0.0638544271784535,-0.0937332111637273,0.961236166554007,-0.0716890420123529,-0.231278459838985,0.0441722638698464,0.788946795487384,-0.15313034195916 +1,1,1,0,-0.167543841938132,-0.207857111421496,0.890101242239367,-0.0303947473043097,-0.18703951232547,-0.326989910357186,0.294774499477605,0.552687264867173,-0.188979855248646 +1,1,1,0,-0.0958365957465055,-0.0504975450881066,-0.14207641771158,0.938819144216502,-0.0215468168660548,-0.326989910357186,0.294774499477605,0.552687264867173,-0.188979855248646 +1,1,1,0,-0.136530773589878,-0.0700269032706519,-0.243247774650214,0.565731177669065,0.33900706322592,-0.326989910357186,0.294774499477605,0.552687264867173,-0.188979855248646 +1,1,1,0,-0.235638033127381,-0.186671085549835,-0.180919457817449,-0.0989547496006865,0.77017578568006,-0.0326074121819519,-0.382128783736084,0.616494424710744,0.437278318317078 +1,1,0,0,-0.204850178727511,-0.157320358391112,-0.200263446642062,0.0615861516927559,0.678107842679267,-0.291414132073094,-0.13669576382277,-0.293985581784303,0.951533737540584 +1,1,0,1,-0.25429889742861,0.388799757806922,0.427949755020585,-0.138596086491746,-0.174368085620441,-0.392647171027141,0.666072071816544,0.0801277813691585,-0.201402336722102 +1,1,0,1,-0.25429889742861,0.388799757806922,0.427949755020585,-0.138596086491746,-0.174368085620441,-0.392647171027141,0.666072071816544,0.0801277813691585,-0.201402336722102 +1,1,0,1,-0.0848910728866195,-0.233529808137445,0.357019030168828,0.769182091159355,-0.223779102857216,-0.121434907466849,-0.203978055753174,0.962273999425075,-0.069266573421613 +1,1,0,1,-0.0843182678433562,-0.139359718000239,0.112828935243583,0.920954358041794,-0.176500653996706,-0.121434907466849,-0.203978055753174,0.962273999425075,-0.069266573421613 +1,1,0,1,-0.206594062000273,-0.159181272153924,-0.199024649960737,0.0514944020788216,0.684128924547047,-0.121434907466849,-0.203978055753174,0.962273999425075,-0.069266573421613 +1,1,0,1,-0.413219330683449,-0.267187057177253,-0.148768906266044,-0.606656348635831,0.973747158682649,-0.83319706604039,0.0121025330561959,-0.936180037408275,1.0836269474841 +1,1,0,1,-0.633623192601095,-0.28751855684178,-0.18800477122324,-0.844500420279013,0.902643107194635,-0.83319706604039,0.0121025330561959,-0.936180037408275,1.0836269474841 +1,1,0,1,-0.804642202721428,-0.277136988907814,-0.254325875108679,-0.868598345460238,0.688590745638957,-0.83319706604039,0.0121025330561959,-0.936180037408275,1.0836269474841 +1,1,1,0,-0.53117233311762,-0.420595221166354,-0.413228941645066,-0.205453400298066,-0.532720806257686,-0.613974476457741,-0.57117690928073,-0.296847987761651,-0.406230119896668 +1,1,1,0,0.784761236588994,-0.643641130516612,-0.128622469363953,-0.102494049521372,-0.359361550224614,0.671954533919943,-0.389198717794594,-0.13946949300269,-0.223993606024992 +1,1,1,0,0.830795922688437,-0.581286275919734,-0.124575114727177,-0.102331402078086,-0.325126024732046,0.671954533919943,-0.389198717794594,-0.13946949300269,-0.223993606024992 +1,1,1,0,0.788074320278876,-0.640702386202036,-0.128172067891136,-0.102505189011642,-0.357368445009551,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.788074320278876,-0.640702386202036,-0.128172067891136,-0.102505189011642,-0.357368445009551,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.410441623532349,0.391965023577265,-0.304606218733912,-0.0609259340345066,-0.197856049857247,-0.396939213791445,0.637358327230382,0.128865142226062,-0.202252489513442 +1,1,1,0,0.844509922987237,-0.422047273530176,-0.138108516911142,-0.099212654864314,-0.273694497126118,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.826495143842828,-0.341392536440423,-0.150807698039492,-0.096613767390826,-0.25686214258403,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.826495143842828,-0.341392536440423,-0.150807698039492,-0.096613767390826,-0.25686214258403,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.14116994676385,0.70269722632964,-0.331004272720332,-0.0495315173897048,-0.19073652412862,-0.396939213791445,0.637358327230382,0.128865142226062,-0.202252489513442 +1,1,1,0,-0.147347316315511,-0.285155194875064,0.905312543377992,0.0537487906847236,-0.197605372532992,0.0542179622097043,0.527141443220177,-0.250528575564286,-0.178994769920848 +1,1,1,0,-0.0894031522500194,-0.0761607136862434,-0.0560254644058233,0.965822234626992,-0.100342921989853,-0.0681512402859172,-0.331853282139005,0.392571603319942,0.589226449836313 +1,1,1,0,0.317829032227525,-0.683059581667123,-0.2275709192943,-0.10582957674328,-0.510386413977265,0.108470692285552,-0.591567955210119,-0.182894782125768,-0.334900231769787 +1,1,1,0,0.665134654641417,-0.697602232150099,-0.150076415526403,-0.101894955965251,-0.414600287026252,0.634470078233938,-0.125895003156647,-0.17753919549849,-0.189902638572696 +1,1,1,0,0.70998394538926,-0.685389037559515,-0.141252138250284,-0.102090816237376,-0.396552595775686,0.241366460921518,-0.580846643449481,-0.166716464896167,-0.315766653632806 +1,1,1,0,0.848599520987413,-0.505400196335632,-0.128405272513174,-0.101239319275407,-0.296555816450792,0.634470078233938,-0.125895003156647,-0.17753919549849,-0.189902638572696 +1,1,1,0,0.848492849894777,-0.458027746949924,-0.133400433442589,-0.100179078748811,-0.282742398100568,0.634470078233938,-0.125895003156647,-0.17753919549849,-0.189902638572696 +1,1,1,0,0.796125750510973,-0.253105948260124,-0.167244729153342,-0.0931874435877993,-0.242594353589951,0.634470078233938,-0.125895003156647,-0.17753919549849,-0.189902638572696 +1,1,1,0,0.768344697355125,-0.187839954009861,-0.180676963869824,-0.0903230297353153,-0.234189527796963,0.634470078233938,-0.125895003156647,-0.17753919549849,-0.189902638572696 +1,1,1,0,-0.0329026023390422,0.839166937542586,-0.289387400119479,-0.0516945726909615,-0.188383569172202,0.167251221742654,0.431371898539167,-0.25203889098838,-0.177105631511899 +1,1,1,0,-0.183907973427526,0.854344685533117,-0.144911160935835,-0.071208886707944,-0.185167638873453,0.167251221742654,0.431371898539167,-0.25203889098838,-0.177105631511899 +1,1,1,0,-0.21151236255625,0.823119195441093,-0.0814334702585534,-0.0807478921218756,-0.183735531358311,0.167251221742654,0.431371898539167,-0.25203889098838,-0.177105631511899 +1,1,1,0,-0.259650759277966,0.524769977524571,0.291059174049316,-0.128686065547896,-0.176167764518324,0.167251221742654,0.431371898539167,-0.25203889098838,-0.177105631511899 +1,1,1,0,-0.203417423793736,-0.0249983122272687,0.781538704175917,-0.111140118680605,-0.176729429181351,-0.392647171027141,0.666072071816544,0.0801277813691585,-0.201402336722102 +1,1,1,0,-0.191977873002342,0.84760194654171,-0.128965789160345,-0.073589971850645,-0.184812284767432,-0.384531851424367,0.690212789793726,0.0336350279899078,-0.200201870983882 +1,1,0,1,-0.248901911619885,0.704649512889156,0.0871238828191662,-0.105061716751373,-0.179993454168965,0.569582486910304,-0.0165410421929142,-0.196605950701576,-0.183553742012903 +1,1,1,0,0.784761236588994,-0.643641130516612,-0.128622469363953,-0.102494049521372,-0.359361550224614,0.671954533919943,-0.389198717794594,-0.13946949300269,-0.223993606024992 +1,1,1,0,0.830795922688437,-0.581286275919734,-0.124575114727177,-0.102331402078086,-0.325126024732046,0.671954533919943,-0.389198717794594,-0.13946949300269,-0.223993606024992 +1,1,0,1,-0.0836860160856176,-0.191919602183949,0.247557883335597,0.84608489285954,-0.208286957430798,-0.0544975619287633,0.608894325811862,-0.238806827796111,-0.181790093583343 +1,1,0,1,-0.53117233311762,-0.420595221166355,-0.413228941645067,-0.205453400298066,-0.532720806257686,-0.669874879864626,-0.0110645387922637,-0.804874631377444,1.08997668135866 +1,1,0,1,-0.53117233311762,-0.420595221166355,-0.413228941645067,-0.205453400298066,-0.532720806257686,-0.669874879864626,-0.0110645387922637,-0.804874631377444,1.08997668135866 +1,1,0,1,-0.809600486462347,-0.320082610355678,-0.446098088531197,-0.338306148419331,-0.379882008008814,-1.80368599427692,-0.390875055034135,-0.682251512744007,-0.254116766644703 +1,1,1,0,0.809008319608499,-0.618054331965766,-0.12574273123073,-0.102524039597017,-0.343521671355998,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.821456006319349,-0.599589943620367,-0.124812287177829,-0.102459164144184,-0.333772753273854,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.826866894028626,-0.589621380937096,-0.124608897401584,-0.102397019878102,-0.328952723959457,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.849273444773466,-0.491216116238614,-0.12973609966235,-0.100949070255043,-0.292161664836252,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.84930855663428,-0.476471553772426,-0.131274738465811,-0.100622200008264,-0.287836527318914,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,0,1,-0.258745099647616,0.478536963499903,0.338891826426267,-0.132825205502722,-0.175450577380539,-0.392647171027141,0.666072071816544,0.0801277813691585,-0.201402336722102 +1,1,0,1,-0.258745099647616,0.478536963499903,0.338891826426267,-0.132825205502722,-0.175450577380539,-0.392647171027141,0.666072071816544,0.0801277813691585,-0.201402336722102 +1,1,0,1,-0.25764102908867,0.448998994934343,0.368728977810048,-0.135060810428916,-0.175048346620959,-0.392647171027141,0.666072071816544,0.0801277813691585,-0.201402336722102 +1,1,0,1,-0.173090353573366,-0.183071749365553,0.879382886045248,-0.0479075016659986,-0.184774351654545,-0.0197826159663477,-0.403906023747221,0.804197013282004,0.284629138013563 +1,1,1,0,-0.25764102908867,0.448998994934343,0.368728977810048,-0.135060810428916,-0.175048346620959,0.279953260324637,0.325352284713094,-0.245369780141274,-0.176369818936561 +1,1,1,0,-0.246801673830052,0.296863340432488,0.514606603176221,-0.141151203010815,-0.17371695896883,0.279953260324637,0.325352284713094,-0.245369780141274,-0.176369818936561 +1,1,1,0,-0.25764102908867,0.448998994934343,0.368728977810048,-0.135060810428916,-0.175048346620959,0.279953260324637,0.325352284713094,-0.245369780141274,-0.176369818936561 +1,1,1,0,-0.246801673830052,0.296863340432488,0.514606603176221,-0.141151203010815,-0.17371695896883,0.279953260324637,0.325352284713094,-0.245369780141274,-0.176369818936561 +1,0,1,0,-0.222681255727732,0.0972464706524227,0.687570181354256,-0.131834172524948,-0.174324141733863,0.46997572295451,-0.535289042673455,-0.143966044482415,-0.276738492575983 +1,1,1,0,-0.236885139296449,0.204834950330011,0.596989464111478,-0.139756221477629,-0.17360297182033,0.279953260324637,0.325352284713094,-0.245369780141274,-0.176369818936561 +1,1,0,1,-0.0904580285782478,-0.296281057886973,0.537735744192505,0.614754682177975,-0.234996924238072,-0.137237633943536,-0.169848869297852,0.944627856636222,-0.0867686183622541 +1,0,0,1,-0.0858543829476553,-0.250342448424821,0.402890970718824,0.733212802001592,-0.228165674393909,0.688903610622884,-0.31510983502357,-0.147368675354294,-0.210011236381499 +1,0,0,1,-0.81675135602076,-0.275826465067068,-0.260335988497299,-0.865097208499416,0.667147995713917,-0.0934344999852417,-0.263064348410977,0.984019929524619,-0.0302807371340742 +1,0,0,1,-0.974708022353498,-0.257397213794593,-0.39750384513848,-0.629277390429171,0.076557274429346,-0.0934344999852417,-0.263064348410977,0.984019929524619,-0.0302807371340742 +1,0,0,1,-0.792235811707657,-0.278411857359326,-0.248383290940236,-0.871379396762207,0.709498968784525,-0.0934344999852417,-0.263064348410977,0.984019929524619,-0.0302807371340742 +1,0,0,1,-0.973158159667765,-0.259007726111454,-0.406653035427026,-0.60055479120508,0.0248007411808889,-0.0934344999852417,-0.263064348410977,0.984019929524619,-0.0302807371340742 +1,1,0,1,-0.974412323479645,-0.256883009381052,-0.392672651810966,-0.643376827484651,0.102656603837349,-0.199549906041397,-0.197167216173873,-0.0817925277433581,0.85471713562579 +1,1,0,1,-0.960877090805172,-0.257054815397226,-0.363529890519993,-0.716690672020917,0.247446556076433,-0.199549906041397,-0.197167216173873,-0.0817925277433581,0.85471713562579 +1,1,0,1,-0.88477141576319,-0.293204033305513,-0.444447813961757,-0.408259602809695,-0.282968891356515,-0.888960798552554,0.017215889868799,-0.973264296485007,1.07542393428985 +1,1,0,1,-0.970684933830338,-0.256372212519756,-0.379923320002023,-0.677685461725027,0.168329448627203,-0.888960798552554,0.017215889868799,-0.973264296485007,1.07542393428985 +1,1,0,1,-0.116333471769925,-0.0467479522006178,-0.230732199339139,0.755517600801533,0.183265770368729,-0.643441830714407,-0.0161152877689698,-0.779963973496397,1.0882120150647 +1,1,1,0,0.83830813681794,-0.56134053066066,-0.124928128988268,-0.102127019795361,-0.316621101534785,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.849189432942294,-0.494097532321738,-0.129453423323558,-0.1010099920994,-0.293035086240342,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.806161759127852,-0.2794898272669,-0.162102538838712,-0.0942686358852878,-0.246475947712608,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.33777754207858,0.484955843290285,-0.318836103556845,-0.0567005282443679,-0.195208902012101,-0.396939213791445,0.637358327230382,0.128865142226062,-0.202252489513442 +1,1,1,0,-0.259702266807693,0.536099371198906,0.279110832690886,-0.127554049561202,-0.176359651567482,-0.211227907421406,-0.00327815223970673,0.828086356798001,-0.142546346799794 +1,1,1,0,-0.241624713001586,0.742870126468166,0.0379910370016866,-0.098282336042557,-0.181050669628285,0.0542179622097043,0.527141443220177,-0.250528575564286,-0.178994769920848 +1,1,1,0,-0.093433184900508,-0.0570361237546013,-0.116891666989404,0.953365956023534,-0.0499851029371305,-0.0681512402859172,-0.331853282139005,0.392571603319942,0.589226449836313 +1,1,1,0,-0.120857255082901,-0.0510167556056221,-0.236739985479827,0.712000990097414,0.221398549815596,-0.0681512402859172,-0.331853282139005,0.392571603319942,0.589226449836313 +1,1,1,0,-0.123026490129202,-0.0533295754741335,-0.238787026163908,0.691263325401006,0.23895958383479,-0.0681512402859172,-0.331853282139005,0.392571603319942,0.589226449836313 +1,1,1,0,-0.259508570042564,0.563967718558021,0.249305724174967,-0.124572893626046,-0.176858659854503,0.0542179622097043,0.527141443220177,-0.250528575564286,-0.178994769920848 +1,1,1,0,-0.249600756266527,0.327623093265522,0.486103385369486,-0.140702133901262,-0.173879542445916,0.0542179622097043,0.527141443220177,-0.250528575564286,-0.178994769920848 +1,1,1,0,-0.250639880932784,0.33990665074625,0.474584667945087,-0.140405706567016,-0.173960409307796,-0.211227907421406,-0.00327815223970673,0.828086356798001,-0.142546346799794 +1,1,1,0,-0.250639880932784,0.33990665074625,0.474584667945087,-0.140405706567016,-0.173960409307796,-0.211227907421406,-0.00327815223970673,0.828086356798001,-0.142546346799794 +1,1,1,0,0.807646752314507,-0.619794519274717,-0.125873341527889,-0.102526593007225,-0.344503723325099,0.653034701056878,-0.421118253953427,-0.137398981819198,-0.231820065843675 +1,0,1,0,0.783007683959427,-0.221127413740308,-0.173706906777312,-0.091816552565798,-0.238274822727718,-0.105115746320224,-0.59585302717522,-0.212113602243466,-0.361681245925084 +1,1,1,0,0.83830813681794,-0.56134053066066,-0.124928128988268,-0.102127019795361,-0.316621101534785,0.653034701056878,-0.421118253953427,-0.137398981819198,-0.231820065843675 +1,1,1,0,0.848153408329793,-0.510918562991763,-0.127930330753004,-0.101345568544956,-0.298332015581119,0.653034701056878,-0.421118253953427,-0.137398981819198,-0.231820065843675 +1,1,1,0,0.768344697355125,-0.187839954009861,-0.180676963869824,-0.0903230297353153,-0.234189527796963,0.653034701056878,-0.421118253953427,-0.137398981819198,-0.231820065843675 +1,1,1,0,0.849238008498467,-0.473454727448902,-0.131607717189328,-0.100552272852711,-0.286980090081745,0.653034701056878,-0.421118253953427,-0.137398981819198,-0.231820065843675 +1,1,1,0,0.759263293499563,-0.168225764873469,-0.184890102394296,-0.0894129790366529,-0.231963621406053,0.653034701056878,-0.421118253953427,-0.137398981819198,-0.231820065843675 +1,1,1,0,0.842246037492458,-0.408255703613484,-0.140086739697869,-0.098808777995828,-0.270503719055176,0.653034701056878,-0.421118253953427,-0.137398981819198,-0.231820065843675 +1,1,1,0,0.737020889587132,-0.12261819036102,-0.194924059613765,-0.0872250005711973,-0.22724049482778,0.653034701056878,-0.421118253953427,-0.137398981819198,-0.231820065843675 +1,1,1,0,0.799593993035456,-0.262005119883792,-0.165490308392741,-0.0935572944211629,-0.243870181683568,0.653034701056878,-0.421118253953427,-0.137398981819198,-0.231820065843675 +1,1,1,0,-0.237719894708091,0.758542343133021,0.0168194086231798,-0.0952672749379533,-0.181517152633606,-0.334466871532207,0.730883860166405,-0.0884687011644546,-0.195120478630277 +1,1,1,0,-0.208243272870998,0.828194280168862,-0.0904558013653902,-0.079388398736214,-0.183940940302739,-0.334466871532207,0.730883860166405,-0.0884687011644546,-0.195120478630277 +1,1,1,0,-0.244792935122686,-0.193987704194037,-0.176351879781528,-0.139971533520421,0.792285011944284,-0.152345836211969,-0.238037728104453,0.0573293542802079,0.783496114899083 +1,1,1,0,-0.508998335171386,-0.282325989404233,-0.158754291970731,-0.74362962420689,0.972730155597568,-0.152345836211969,-0.238037728104453,0.0573293542802079,0.783496114899083 +1,1,1,0,-0.211021510059959,-0.163799668799208,-0.195945136160523,0.02643231168003,0.698953307830625,-0.152345836211969,-0.238037728104453,0.0573293542802079,0.783496114899083 +1,1,0,1,-0.221106564226792,-0.173746385161936,-0.1893278254369,-0.0277340041120503,0.73034657427187,-0.291414132073094,-0.13669576382277,-0.293985581784303,0.951533737540584 +1,1,0,1,-0.29387451677055,-0.225046218805582,-0.159271313989745,-0.321899174382161,0.881388399836659,-1.33600918242452,0.0164415729792198,-1.16082243272746,0.917813624542305 +1,1,0,1,-0.29387451677055,-0.225046218805582,-0.159271313989745,-0.321899174382161,0.881388399836659,-0.291414132073094,-0.13669576382277,-0.293985581784303,0.951533737540584 +1,1,0,1,-0.17825269704631,-0.126129161385487,-0.220263455876052,0.231737885295277,0.572278979242962,-0.334466871532207,0.730883860166405,-0.0884687011644546,-0.195120478630277 +1,0,0,1,-0.367707467442303,-0.255046473631309,-0.149022626271507,-0.516934030446369,0.953682576051492,-0.276887503907068,0.727235369453576,-0.151492402017025,-0.191121103167138 +1,1,0,1,-0.413219330683449,-0.267187057177253,-0.148768906266044,-0.606656348635831,0.973747158682649,-0.334466871532207,0.730883860166405,-0.0884687011644546,-0.195120478630277 +1,0,0,1,-0.705507447939065,-0.285190625359789,-0.212066059988022,-0.870387055286227,0.830476932147129,-0.276887503907068,0.727235369453576,-0.151492402017025,-0.191121103167138 +1,1,0,1,-0.22489288514106,-0.17727408131747,-0.187001677759317,-0.047051171919277,0.741318903928743,-0.276887503907068,0.727235369453576,-0.151492402017025,-0.191121103167138 +1,0,0,1,-0.444590007393987,-0.273505701342996,-0.150628129029619,-0.658411241246967,0.979260232198943,-0.276887503907068,0.727235369453576,-0.151492402017025,-0.191121103167138 +1,1,0,1,-0.49274369174938,-0.280567265519547,-0.156203756643941,-0.724538358987615,0.97646583241488,-0.276887503907068,0.727235369453576,-0.151492402017025,-0.191121103167138 +1,0,0,1,-0.779548955426292,-0.279641821164454,-0.242517843831256,-0.873418395534675,0.729845206010945,-0.276887503907068,0.727235369453576,-0.151492402017025,-0.191121103167138 +1,1,0,1,-0.22489288514106,-0.17727408131747,-0.187001677759317,-0.047051171919277,0.741318903928743,-0.334466871532207,0.730883860166405,-0.0884687011644546,-0.195120478630277 +1,0,0,1,-0.444590007393987,-0.273505701342996,-0.150628129029619,-0.658411241246967,0.979260232198943,-0.276887503907068,0.727235369453576,-0.151492402017025,-0.191121103167138 +1,1,0,1,-0.283289734710958,-0.21930840754118,-0.162078129853121,-0.287148240376609,0.865663873699195,-0.0442085048025801,-0.36471933837975,0.530121733150291,0.498649930811432 +1,1,1,0,0.83830813681794,-0.56134053066066,-0.124928128988268,-0.102127019795361,-0.316621101534785,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.410441623532349,0.391965023577265,-0.304606218733912,-0.0609259340345066,-0.197856049857247,-0.396939213791445,0.637358327230382,0.128865142226062,-0.202252489513442 +1,1,1,0,0.844509922987237,-0.422047273530176,-0.138108516911142,-0.099212654864314,-0.273694497126118,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.826495143842828,-0.341392536440423,-0.150807698039492,-0.096613767390826,-0.25686214258403,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,0.14116994676385,0.70269722632964,-0.331004272720332,-0.0495315173897048,-0.19073652412862,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,-0.147347316315511,-0.285155194875064,0.905312543377992,0.0537487906847236,-0.197605372532992,0.0542179622097043,0.527141443220177,-0.250528575564286,-0.178994769920848 +1,1,0,1,-0.0905764351828991,-0.0691662607303994,-0.0769663595989971,0.964371763222842,-0.0853230961578062,-0.0681512402859172,-0.331853282139005,0.392571603319942,0.589226449836313 +1,1,0,1,-0.0852741822263074,-0.119056945712746,0.0604372377262536,0.942468905832502,-0.158728064272577,-0.0513329625956083,-0.35456151861636,0.485172884451777,0.529112161977071 +1,1,0,1,-0.0838907215162029,-0.154167371038265,0.150731795426592,0.902451250731617,-0.187211709669359,-1.51879661045195,-0.0041229830545968,-1.18840217339564,0.807667428259524 +1,1,0,1,-0.0838907215162029,-0.154167371038265,0.150731795426592,0.902451250731617,-0.187211709669359,-1.51879661045195,-0.0041229830545968,-1.18840217339564,0.807667428259524 +1,1,0,1,-0.0877649069288256,-0.0887899353726335,-0.0202480684958495,0.96338616163152,-0.122027368156438,-1.51879661045195,-0.0041229830545968,-1.18840217339564,0.807667428259524 +1,1,0,1,-0.613013064494969,-0.28754240711913,-0.182056528531642,-0.83291412786555,0.919064864748876,-0.61397447645774,-0.57117690928073,-0.296847987761651,-0.406230119896667 +1,1,1,0,-0.093048574322756,-0.311863651436643,0.589247277049517,0.564069123382165,-0.235403192928877,-0.326989910357186,0.294774499477605,0.552687264867173,-0.188979855248646 +1,1,1,0,-0.0864410470505888,-0.258532174947872,0.425744076168071,0.714488009216007,-0.22993969857412,-0.326989910357186,0.294774499477605,0.552687264867173,-0.188979855248646 +1,1,1,0,-0.0851509453550802,-0.23862556240429,0.370791674712937,0.758609399709141,-0.225215657216314,-0.326989910357186,0.294774499477605,0.552687264867173,-0.188979855248646 +1,1,1,0,-0.0839688560250618,-0.150833266629699,0.142207054578651,0.906806133413988,-0.184940570554868,-0.326989910357186,0.294774499477605,0.552687264867173,-0.188979855248646 +1,1,1,0,-0.0889311880248947,-0.079414662888436,-0.0466045130440036,0.965719278790898,-0.106486411387509,-0.291414132073094,-0.13669576382277,-0.293985581784303,0.951533737540584 +1,1,1,0,-0.0965389207133547,-0.0490437414873674,-0.148370606859779,0.933950457004341,-0.0134480754491373,-0.291414132073094,-0.13669576382277,-0.293985581784303,0.951533737540584 +1,1,1,0,0.700777011372844,-0.0536152495492674,-0.210498642304192,-0.0837744280790977,-0.221085358367912,0.653034701056878,-0.421118253953427,-0.137398981819198,-0.231820065843675 +1,1,1,0,0.444051636709641,0.34678672437236,-0.296615816591473,-0.0631075108095232,-0.199344584375957,0.686143661339796,-0.272655955101724,-0.153287697266405,-0.203982643719817 +1,1,0,0,-0.0467336316460686,0.846427442830274,-0.28243993071766,-0.0524586849057233,-0.18819628254845,0.686143661339796,-0.272655955101724,-0.153287697266405,-0.203982643719817 +1,1,1,0,0.33777754207858,0.484955843290285,-0.318836103556845,-0.0567005282443679,-0.195208902012101,0.387675121610205,0.212849194686216,-0.23255324909585,-0.177034472774904 +1,1,1,0,0.145328740435258,0.698670639086587,-0.331251563201442,-0.0496012732530684,-0.190803198425965,0.387675121610205,0.212849194686216,-0.23255324909585,-0.177034472774904 +1,1,1,0,-0.250881415440045,0.691059054963212,0.103908741826708,-0.107299235909719,-0.179641710418258,-0.240379578640459,0.71528373295022,-0.176601010935985,-0.189110734348692 +1,1,0,0,-0.25764102908867,0.448998994934343,0.368728977810048,-0.135060810428916,-0.175048346620959,0.387675121610205,0.212849194686216,-0.23255324909585,-0.177034472774904 +1,1,0,0,-0.165228508481834,-0.217784889676986,0.893811893488111,-0.0224255744853071,-0.188065866573722,-0.309379581813845,0.244311672983049,0.604045105494342,-0.18387872007762 +1,1,1,0,-0.185975079098689,0.852771370956325,-0.140995654576852,-0.0717915463084197,-0.185080829120543,0.387675121610205,0.212849194686216,-0.23255324909585,-0.177034472774904 +1,1,1,0,-0.212320979202136,0.028931207754567,0.741441597194064,-0.122178629925285,-0.175409513611148,-0.240379578640459,0.71528373295022,-0.176601010935985,-0.189110734348692 +1,1,0,0,-0.240420468661883,0.235391223077569,0.570119009465058,-0.140705444339083,-0.173574756085866,0.387675121610205,0.212849194686216,-0.23255324909585,-0.177034472774904 +1,1,0,0,-0.0950223624492196,-0.321089744422199,0.622432631099441,0.529574963250816,-0.235036811451102,-0.309379581813845,0.244311672983049,0.604045105494342,-0.18387872007762 +1,1,1,0,0.830796032303038,-0.356939979913242,-0.148163247797349,-0.097157362141495,-0.259787507933975,0.36293434656643,-0.562475149950103,-0.153615473592221,-0.296208299079507 +1,1,1,0,0.729073812249159,-0.106998935178342,-0.198418066473673,-0.0864565864753659,-0.225751545751515,0.36293434656643,-0.562475149950103,-0.153615473592221,-0.296208299079507 +1,1,1,0,0.786912102772568,-0.230396807214031,-0.171809173465451,-0.0922205329479295,-0.239485493560573,0.36293434656643,-0.562475149950103,-0.153615473592221,-0.296208299079507 +1,1,1,0,-0.163837413184377,0.86514875563084,-0.178022426649996,-0.0663505062119477,-0.185889459276292,0.36293434656643,-0.562475149950103,-0.153615473592221,-0.296208299079507 +1,1,0,0,-0.185975079098689,0.852771370956325,-0.140995654576852,-0.0717915463084197,-0.185080829120543,0.36293434656643,-0.562475149950103,-0.153615473592221,-0.296208299079507 +1,1,0,0,-0.260747845725332,-0.205438623455508,-0.16956640203534,-0.205423438886843,0.826154974963704,0.36293434656643,-0.562475149950103,-0.153615473592221,-0.296208299079507 +1,1,1,0,0.597701306621763,0.121150382668442,-0.250128562337785,-0.0746772660734565,-0.209298661443294,0.671954533919943,-0.389198717794594,-0.13946949300269,-0.223993606024992 +1,1,1,0,0.489343880256663,0.283672477244161,-0.284554211117827,-0.0662554249812623,-0.201675339443467,0.671954533919943,-0.389198717794594,-0.13946949300269,-0.223993606024992 +1,0,1,0,-0.151589567117108,0.868608681112702,-0.194800681998994,-0.0639438932094405,-0.186248424067984,-0.0325543330756847,-0.595803517270545,-0.201776189012541,-0.353095709024357 +1,0,1,0,-0.151589567117108,0.868608681112702,-0.194800681998994,-0.0639438932094405,-0.186248424067984,-0.0325543330756847,-0.595803517270545,-0.201776189012541,-0.353095709024357 +1,1,1,0,0.548839477111197,0.196611988897125,-0.266589855887291,-0.0707302109031524,-0.20543698766819,0.671954533919943,-0.389198717794594,-0.13946949300269,-0.223993606024992 +1,1,1,0,0.435695609068449,0.358148486296258,-0.298680880053116,-0.0625524936328893,-0.198956771091773,0.671954533919943,-0.389198717794594,-0.13946949300269,-0.223993606024992 +1,1,1,0,0.359275286511086,0.458108748778043,-0.315083283472997,-0.0578768014605898,-0.195919458156652,0.671954533919943,-0.389198717794594,-0.13946949300269,-0.223993606024992 +1,1,0,1,0.234304364179642,0.60613596556145,-0.330781201539959,-0.0520290101465642,-0.192472402374897,0.671954533919943,-0.389198717794594,-0.13946949300269,-0.223993606024992 +1,1,0,1,0.0880148228193949,0.751487822804089,-0.325323571579397,-0.0490493769596806,-0.189950113281105,0.671954533919943,-0.389198717794594,-0.13946949300269,-0.223993606024992 +1,1,0,1,-0.124890511157771,0.87031398752504,-0.225025156841945,-0.0597317815374915,-0.186890739759789,-0.290725336485052,0.193588743784497,0.653740667481695,-0.177805389417391 +1,1,0,1,-0.20485031427667,0.832998003239873,-0.0993143823991987,-0.0780526760837136,-0.184142359271378,-0.290725336485052,0.193588743784497,0.653740667481695,-0.177805389417391 +1,1,0,1,-0.144068378778051,-0.295508153651977,0.903689395197294,0.0708628765933384,-0.19966202422365,-0.211227907421406,-0.00327815223970673,0.828086356798001,-0.142546346799794 +1,1,0,1,-0.146683717161132,-0.287305432137423,0.905087524428074,0.0571259748688411,-0.198014052556055,-0.211227907421406,-0.00327815223970673,0.828086356798001,-0.142546346799794 +1,1,0,1,-0.137195474473244,-0.314871236239548,0.89586277757086,0.110408011018725,-0.204269856389394,-0.211227907421406,-0.00327815223970673,0.828086356798001,-0.142546346799794 +1,1,0,1,-0.0888004684286815,-0.283410020364472,0.498001001939496,0.651701432037949,-0.233870123043632,-0.211227907421406,-0.00327815223970673,0.828086356798001,-0.142546346799794 +1,1,0,1,-0.0845829650100315,-0.22667969470348,0.338659638361136,0.782971335675782,-0.221697958164547,-0.211227907421406,-0.00327815223970673,0.828086356798001,-0.142546346799794 +1,1,0,1,-0.148240457555597,-0.0859607292233354,-0.240017959208332,0.463376648463754,0.414675004760294,-0.211227907421406,-0.00327815223970673,0.828086356798001,-0.142546346799794 +1,1,1,0,-0.239725253983054,0.750811946008301,0.0273499846723698,-0.0967733639790673,-0.181284401771895,-0.1542463943273,0.672863953369963,-0.214841641610971,-0.185244461919313 +1,0,1,0,-0.190034716301304,-0.0993353357311751,0.832226520615257,-0.0889788125294595,-0.179489912253798,0.686143661339796,-0.272655955101724,-0.153287697266405,-0.203982643719817 +1,1,1,0,-0.244367739965278,0.272244434145234,0.537070588056035,-0.141195755936201,-0.173629675304042,-0.1542463943273,0.672863953369963,-0.214841641610971,-0.185244461919313 +1,1,1,0,-0.244367739965278,0.272244434145234,0.537070588056035,-0.141195755936201,-0.173629675304042,-0.1542463943273,0.672863953369963,-0.214841641610971,-0.185244461919313 +1,1,1,0,-0.209665857901695,0.0124332216642535,0.753957638533102,-0.119164121067099,-0.175764187361274,-0.1542463943273,0.672863953369963,-0.214841641610971,-0.185244461919313 +1,1,0,1,-0.148833273944155,-0.0867773545067636,-0.239747789111588,0.458372012887381,0.418266673766754,-0.311593672878031,-0.125882167572076,-0.333276327910675,0.967608238748141 +1,1,0,1,-0.175300316072783,-0.122365100519236,-0.22250425372098,0.252593298879145,0.558752401527022,-0.311593672878031,-0.125882167572076,-0.333276327910675,0.967608238748141 +1,1,0,1,-0.2844527760774,-0.219961118903975,-0.161749276600641,-0.291070916106835,0.867473246928857,-0.216652126322308,-0.184204612404575,-0.126360884560655,0.876323215419867 +1,1,0,1,-0.308384404826982,-0.232226334698137,-0.156055844184887,-0.366316188744884,0.900418085110714,-0.216652126322308,-0.184204612404575,-0.126360884560655,0.876323215419867 +1,0,1,0,-0.113432188580129,0.869118305111845,-0.235910216789294,-0.058263773627455,-0.187123718221959,-0.326197648910852,-0.589475120444883,-0.246151326683662,-0.384619063021893 +1,1,1,0,0.068090681541286,0.768384625291073,-0.321856224804695,-0.0490861287430317,-0.189680502792573,0.223934203424107,0.379407938210247,-0.249599763469172,-0.176578113208774 +1,0,1,0,-0.122066285377204,0.870113524872079,-0.22780974421351,-0.0593533983760504,-0.186950134507066,-0.326197648910852,-0.589475120444883,-0.246151326683662,-0.384619063021893 +1,1,1,0,0.0562956895284889,0.777991692570956,-0.319415244286454,-0.0491710207644028,-0.189525469873857,0.223934203424107,0.379407938210247,-0.249599763469172,-0.176578113208774 +1,1,1,0,-0.151589567117108,0.868608681112702,-0.194800681998994,-0.0639438932094405,-0.186248424067984,0.223934203424107,0.379407938210247,-0.249599763469172,-0.176578113208774 +1,0,1,0,-0.232233356291881,0.776910583604769,-0.00899456366874779,-0.0915260885248976,-0.182093091300109,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,-0.20485031427667,0.832998003239873,-0.0993143823991987,-0.0780526760837136,-0.184142359271378,-0.384531851424367,0.690212789793726,0.0336350279899078,-0.200201870983882 +1,1,1,0,-0.092376110983281,0.8645486775449,-0.253362187332769,-0.0559813918491243,-0.187505008843963,-0.0544975619287633,0.608894325811862,-0.238806827796111,-0.181790093583343 +1,1,1,0,0.0217041641015041,0.804304338465131,-0.310402032710934,-0.0497215596053181,-0.189083283522138,-0.0544975619287633,0.608894325811862,-0.238806827796111,-0.181790093583343 +1,1,1,0,-0.0923596298824049,-0.3081539068789,0.576550105197207,0.576872069216427,-0.235412917092644,-0.326989910357186,0.294774499477605,0.552687264867173,-0.188979855248646 +1,0,1,0,-0.1217612930179,-0.344636077229118,0.851850495886507,0.22075120686685,-0.215906931678333,0.627684442897047,-0.44981525863423,-0.136518817919165,-0.240117821582632 +1,1,1,0,-0.130223483915109,-0.330908035689596,0.881023237359289,0.156185672240024,-0.209329236641211,0.0542179622097043,0.527141443220177,-0.250528575564286,-0.178994769920848 +1,1,0,1,-0.11713088045468,-0.0474368477363423,-0.231983919375972,0.747831170017374,0.190141966822093,-0.251396839492321,0.093087746837397,0.746582201089963,-0.162493388612393 +1,1,0,1,-0.189042313660334,-0.139397309456806,-0.212002921408064,0.158942100776795,0.618541280681509,-0.251396839492321,0.093087746837397,0.746582201089963,-0.162493388612393 +1,1,0,1,-0.127113051514641,-0.0580361644414323,-0.241464094313564,0.652555996192228,0.27085663428766,-0.251396839492321,0.093087746837397,0.746582201089963,-0.162493388612393 +1,1,0,1,-0.195532309196186,-0.146982098229823,-0.20709158187116,0.117669365845721,0.644117736646362,-0.251396839492321,0.093087746837397,0.746582201089963,-0.162493388612393 +1,1,0,1,-0.198027951755875,-0.149815665760247,-0.20523216969626,0.102286616770701,0.653529003809678,-0.332329114943078,-0.115484849559365,-0.371540346925703,0.982621991056606 +1,1,0,1,-0.315801274007592,-0.235619331014825,-0.154669276163839,-0.387713558549091,0.909116408785669,-0.332329114943078,-0.115484849559365,-0.371540346925703,0.982621991056606 +1,1,0,1,-0.135487785843916,-0.0686455069795286,-0.243287758254393,0.575161149350269,0.331801585282514,-0.251396839492321,0.093087746837397,0.746582201089963,-0.162493388612393 +1,1,0,1,-0.201408526248766,-0.153578905978681,-0.202747213956494,0.0818736025852438,0.665915136239769,-0.291414132073094,-0.13669576382277,-0.293985581784303,0.951533737540584 +1,1,0,1,-0.172404979463572,-0.118622601073384,-0.224676509238548,0.2734451903834,0.545104644205578,-0.020116554444416,-0.403711766475425,0.835583974434018,0.254813829578463 +1,0,0,1,-0.39504377583778,-0.262799852854701,-0.148418436704109,-0.573076407263177,0.967574213436487,-0.38143333657,0.4853989306059,0.338446888195271,-0.200906206125371 +1,1,0,1,-0.212819745663075,-0.165631748235664,-0.194723095183886,0.0164795230522496,0.704788859153936,-0.251396839492321,0.093087746837397,0.746582201089963,-0.162493388612393 diff --git a/statsmodels/gam/tests/results/autos_predict.csv b/statsmodels/gam/tests/results/autos_predict.csv new file mode 100644 index 0000000..3319e23 --- /dev/null +++ b/statsmodels/gam/tests/results/autos_predict.csv @@ -0,0 +1,204 @@ +"Row.names","fit","se_fit","fit_fuel","fit_drive","fit_s_weight_","fit_s_hp.","se.fit_fuel","se.fit_drive","se.fit_s_weight_","se.fit_s_hp." +"1",21.004548567169,0.649519352132203,-5.50835061626544,0.349134075065761,-0.902275636536362,-1.69410479656783,0.869683830970338,1.16962114106829,0.488886043190229,0.43074651017384 +"2",21.004548567169,0.649519352132203,-5.50835061626544,0.349134075065761,-0.902275636536362,-1.69410479656783,0.869683830970338,1.16962114106829,0.488886043190229,0.43074651017384 +"3",17.5473336413035,0.709550131736671,-5.50835061626544,0.349134075065761,-0.884485760350586,-5.16910959861911,0.869683830970338,1.16962114106829,0.607746765656761,0.669555582200214 +"4",23.8236245327462,0.549217350050236,-5.50835061626544,2.26427481485242,-0.282828733844595,-1.40961647346905,0.869683830970338,1.13288820668981,0.396038361473169,0.413608877914912 +"5",20.5971370582494,1.20101076585147,-5.50835061626544,0,-0.886322219716511,-1.76833564724154,0.869683830970338,0,0.607940574830884,0.484632914499167 +"6",22.9575019065619,0.629105324365256,-5.50835061626544,2.26427481485242,-0.882164993453344,-1.67640284004462,0.869683830970338,1.13288820668981,0.480268197482854,0.421114505367306 +"7",22.9112393291261,0.74324347256785,-5.50835061626544,2.26427481485242,-0.928427570889108,-1.67640284004462,0.869683830970338,1.13288820668981,0.609057160014945,0.421114505367306 +"8",22.5400534356611,0.752733773995113,-5.50835061626544,2.26427481485242,-1.29961346435408,-1.67640284004462,0.869683830970338,1.13288820668981,0.567740929509605,0.421114505367306 +"9",19.9060234556058,0.82063046437278,-5.50835061626544,2.26427481485242,-1.86282342243759,-3.74722286201646,0.869683830970338,1.13288820668981,0.606472322530057,0.620255562838003 +"10",15.9598686097551,1.24248402751315,-5.50835061626544,0,-1.7258076726293,-5.56611864282297,0.869683830970338,0,0.582200991153939,0.712802207522622 +"11",21.6513680561646,0.640509963404774,-5.50835061626544,0.349134075065761,-0.602159644498791,-1.34740129960982,0.869683830970338,1.16962114106829,0.389312960047548,0.417732051220209 +"12",21.6513680561646,0.640509963404774,-5.50835061626544,0.349134075065761,-0.602159644498791,-1.34740129960982,0.869683830970338,1.16962114106829,0.389312960047548,0.417732051220209 +"13",20.7929660850649,0.658678820795793,-5.50835061626544,0.349134075065761,-0.822230501384852,-1.98573241382346,0.869683830970338,1.16962114106829,0.526588513099908,0.571096082364816 +"14",20.7937306692736,0.668992932447666,-5.50835061626544,0.349134075065761,-0.821465917176062,-1.98573241382346,0.869683830970338,1.16962114106829,0.575267897372841,0.571096082364816 +"15",19.8808678651192,0.674894389059121,-5.50835061626544,0.349134075065761,-1.7343287213305,-1.98573241382346,0.869683830970338,1.16962114106829,0.583481538840699,0.571096082364816 +"16",15.5785003051782,0.792133439825666,-5.50835061626544,0.349134075065761,-2.33639187949101,-5.68603681560396,0.869683830970338,1.16962114106829,0.71808054568933,0.838384757221971 +"17",15.3219301888596,0.792658700755679,-5.50835061626544,0.349134075065761,-2.59296199580958,-5.68603681560396,0.869683830970338,1.16962114106829,0.783974598700206,0.838384757221971 +"18",15.3092218691904,0.800832520842299,-5.50835061626544,0.349134075065761,-2.6056703154788,-5.68603681560396,0.869683830970338,1.16962114106829,0.82969616937928,0.838384757221971 +"19",29.9922107220159,1.27985443719578,-5.50835061626544,2.26427481485242,-0.0410638992246279,4.51720488118068,0.869683830970338,1.13288820668981,0.937546179111698,0.913881738209463 +"20",32.5019571400682,0.508590693910516,-5.50835061626544,2.26427481485242,3.01232902272087,3.97355837728754,0.869683830970338,1.13288820668981,0.680363908740043,0.534765381683266 +"21",32.5724059547672,0.486078304629877,-5.50835061626544,2.26427481485242,3.08277783741986,3.97355837728754,0.869683830970338,1.13288820668981,0.685536701853504,0.534765381683266 +"22",32.7276376640408,0.499724587328897,-5.50835061626544,2.26427481485242,3.01798544004276,4.19358248393821,0.869683830970338,1.13288820668981,0.680767373820968,0.544398176987015 +"23",32.7276376640408,0.499724587328897,-5.50835061626544,2.26427481485242,3.01798544004276,4.19358248393821,0.869683830970338,1.13288820668981,0.680767373820968,0.544398176987015 +"24",25.9848683675008,0.757653391023714,-5.50835061626544,2.26427481485242,1.87841510091001,-1.40961647346905,0.869683830970338,1.13288820668981,0.527058848171753,0.413608877914912 +"25",32.7623585668068,0.453340067110306,-5.50835061626544,2.26427481485242,3.0527063428088,4.19358248393821,0.869683830970338,1.13288820668981,0.678403443544068,0.544398176987015 +"26",32.6974662186181,0.443908634157654,-5.50835061626544,2.26427481485242,2.9878139946201,4.19358248393821,0.869683830970338,1.13288820668981,0.668257380293192,0.544398176987015 +"27",32.6974662186181,0.443908634157654,-5.50835061626544,2.26427481485242,2.9878139946201,4.19358248393821,0.869683830970338,1.13288820668981,0.668257380293192,0.544398176987015 +"28",25.2546718815291,0.68597798223565,-5.50835061626544,2.26427481485242,1.14821861493837,-1.40961647346905,0.869683830970338,1.13288820668981,0.47939581816617,0.413608877914912 +"29",25.1109336981712,0.663738984523165,-5.50835061626544,2.26427481485242,-0.899408499667344,0.494272457778679,0.869683830970338,1.13288820668981,0.488056565410108,0.377299809541995 +"30",20.350671381353,0.730154875487619,-5.50835061626544,2.26427481485242,-0.864559344553536,-4.30083901415325,0.869683830970338,1.13288820668981,0.604319386166777,0.624661934207019 +"31",32.2724160710234,0.74791247487053,-5.50835061626544,2.26427481485242,2.05040962218676,4.70593670877685,0.869683830970338,1.13288820668981,0.684285922515228,0.6387965732152 +"32",31.3370549426245,0.601599151456544,-5.50835061626544,2.26427481485242,2.78709708242788,3.03388812013679,0.869683830970338,1.13288820668981,0.668666803411033,0.474141232839186 +"33",33.0626722553068,0.583590889719175,-5.50835061626544,2.26427481485242,2.87489597255554,4.67170654269146,0.869683830970338,1.13288820668981,0.672196287910318,0.604936288448374 +"34",31.6409681448983,0.511526112437091,-5.50835061626544,2.26427481485242,3.09101028470166,3.03388812013679,0.869683830970338,1.13288820668981,0.684865294083399,0.474141232839186 +"35",31.6236083971108,0.501031864660223,-5.50835061626544,2.26427481485242,3.07365053691419,3.03388812013679,0.869683830970338,1.13288820668981,0.681785419132435,0.474141232839186 +"36",31.4458720343771,0.461724780249504,-5.50835061626544,2.26427481485242,2.89591417418046,3.03388812013679,0.869683830970338,1.13288820668981,0.654109382868222,0.474141232839186 +"37",31.3675794284496,0.45079500975384,-5.50835061626544,2.26427481485242,2.81762156825295,3.03388812013679,0.869683830970338,1.13288820668981,0.642210454307614,0.474141232839186 +"38",27.0647297628439,0.478381647682682,-5.50835061626544,2.26427481485242,0.63193102032319,0.916729002460873,0.869683830970338,1.13288820668981,0.458718213454062,0.372146323211337 +"39",26.5270453294041,0.481433525474968,-5.50835061626544,2.26427481485242,0.0942465868834396,0.916729002460873,0.869683830970338,1.13288820668981,0.430079598566785,0.372146323211337 +"40",26.3973077445363,0.48062499934841,-5.50835061626544,2.26427481485242,-0.0354909979843732,0.916729002460873,0.869683830970338,1.13288820668981,0.419224939739561,0.372146323211337 +"41",25.9407989245175,0.493676366048399,-5.50835061626544,2.26427481485242,-0.491999818003239,0.916729002460873,0.869683830970338,1.13288820668981,0.384478048743048,0.372146323211337 +"42",23.3472883282653,0.571256613146658,-5.50835061626544,2.26427481485242,-0.821380112184751,-1.34740129960982,0.869683830970338,1.13288820668981,0.4491564117662,0.417732051220209 +"43",24.2987885015037,0.578091733091256,-5.50835061626544,2.26427481485242,0.0585521279109184,-1.27583336646707,0.869683830970338,1.13288820668981,0.427280172816069,0.421618368743583 +"44",25.9593034021923,0.812653718700242,-5.50835061626544,0.349134075065761,-0.282828733844595,2.6412031357637,0.869683830970338,1.16962114106829,0.396038361473169,0.44486691381084 +"45",32.5019571400682,0.508590693910516,-5.50835061626544,2.26427481485242,3.01232902272087,3.97355837728754,0.869683830970338,1.13288820668981,0.680363908740043,0.534765381683266 +"46",32.5724059547672,0.486078304629877,-5.50835061626544,2.26427481485242,3.08277783741986,3.97355837728754,0.869683830970338,1.13288820668981,0.685536701853504,0.534765381683266 +"47",22.8785859850231,0.866386259109898,-5.50835061626544,0.349134075065761,-0.816461938842425,0.0941189235923379,0.869683830970338,1.16962114106829,0.547798102014427,0.389714929549714 +"48",17.7199298603853,1.09962688215938,-5.50835061626544,0.349134075065761,-0.0410638992246275,-5.83993524066325,0.869683830970338,1.16962114106829,0.937546179111698,0.808146380060192 +"49",17.7199298603853,1.09962688215938,-5.50835061626544,0.349134075065761,-0.0410638992246275,-5.83993524066325,0.869683830970338,1.16962114106829,0.937546179111698,0.808146380060192 +"50",25.1827397489488,1.56480070634685,-5.50835061626544,0.349134075065761,-0.956859684742682,2.53867043341835,0.869683830970338,1.16962114106829,1.0122265930856,1.43217619559486 +"51",32.7618152203348,0.490878236041951,-5.50835061626544,2.26427481485242,3.05216299633673,4.19358248393821,0.869683830970338,1.13288820668981,0.683290973128509,0.544398176987015 +"52",32.7802513538977,0.485129551136923,-5.50835061626544,2.26427481485242,3.07059912989968,4.19358248393821,0.869683830970338,1.13288820668981,0.684674632179213,0.544398176987015 +"53",32.7875418113377,0.482405724373982,-5.50835061626544,2.26427481485242,3.07788958733969,4.19358248393821,0.869683830970338,1.13288820668981,0.685202750273695,0.544398176987015 +"54",32.7968726194617,0.463039955066802,-5.50835061626544,2.26427481485242,3.08722039546368,4.19358248393821,0.869683830970338,1.13288820668981,0.684125261512292,0.544398176987015 +"55",32.7916046109617,0.460804966423255,-5.50835061626544,2.26427481485242,3.08195238696363,4.19358248393821,0.869683830970338,1.13288820668981,0.683186094884872,0.544398176987015 +"56",21.720862287724,0.64554110426096,-5.50835061626544,0.349134075065761,-0.532665412939358,-1.34740129960982,0.869683830970338,1.16962114106829,0.384959083497507,0.417732051220209 +"57",21.720862287724,0.64554110426096,-5.50835061626544,0.349134075065761,-0.532665412939358,-1.34740129960982,0.869683830970338,1.16962114106829,0.384959083497507,0.417732051220209 +"58",21.6967321199045,0.643484270004901,-5.50835061626544,0.349134075065761,-0.556795580758822,-1.34740129960982,0.869683830970338,1.16962114106829,0.385913931162851,0.417732051220209 +"59",19.5321344471992,0.857784322812326,-5.50835061626544,0.349134075065761,-0.875170063843787,-3.1936244892302,0.869683830970338,1.16962114106829,0.476740231818784,0.62473266990169 +"60",26.3113436094207,0.523141931060122,-5.50835061626544,2.26427481485242,-0.556795580758822,1.3520694501197,0.869683830970338,1.13288820668981,0.385913931162851,0.377087383088028 +"61",26.2049425238528,0.54997066806042,-5.50835061626544,2.26427481485242,-0.663196666326698,1.3520694501197,0.869683830970338,1.13288820668981,0.397872920013644,0.377087383088028 +"62",26.3113436094207,0.523141931060122,-5.50835061626544,2.26427481485242,-0.556795580758822,1.3520694501197,0.869683830970338,1.13288820668981,0.385913931162851,0.377087383088028 +"63",26.2049425238528,0.54997066806042,-5.50835061626544,2.26427481485242,-0.663196666326698,1.3520694501197,0.869683830970338,1.13288820668981,0.397872920013644,0.377087383088028 +"64",34.761619272218,0.945656583020611,0,2.26427481485242,-0.769763173648178,4.50696208954095,0,1.13288820668981,0.427086504087985,0.563881767707707 +"65",26.1519458210188,0.569273053340131,-5.50835061626544,2.26427481485242,-0.716193369160713,1.3520694501197,0.869683830970338,1.13288820668981,0.409848147267737,0.377087383088028 +"66",20.8222153823699,0.657435753563869,-5.50835061626544,0.349134075065761,-0.843887554187645,-1.93482606371563,0.869683830970338,1.16962114106829,0.498657187051586,0.558898656216532 +"67",31.9900270085929,1.17697722138986,0,0.349134075065761,-0.826512744453834,3.70726013650814,0,1.16962114106829,0.518473645554743,0.520878916831573 +"68",24.405381202644,0.975823111986282,0,0.349134075065761,-2.59834649358339,-2.10555192031118,0,1.16962114106829,0.83407480640219,0.591578217449872 +"69",24.9577107604945,1.1372016954821,0,0.349134075065761,-2.04601693573297,-2.10555192031118,0,1.16962114106829,0.966988599474856,0.591578217449872 +"70",24.3919956530759,0.968700127244844,0,0.349134075065761,-2.61173204315157,-2.10555192031118,0,1.16962114106829,0.82546331474947,0.591578217449872 +"71",25.039952630748,1.15458513925185,0,0.349134075065761,-1.96377506547944,-2.10555192031118,0,1.16962114106829,0.977724458089438,0.591578217449872 +"72",16.2685728058112,0.934380833769646,-5.50835061626544,0.349134075065761,-2.08498754467986,-5.24736864978206,0.869683830970338,1.16962114106829,0.961357263369874,0.67663122261607 +"73",16.0795095033341,0.886228958871656,-5.50835061626544,0.349134075065761,-2.27405084715706,-5.24736864978206,0.869683830970338,1.16962114106829,0.928438530278448,0.67663122261607 +"74",16.7075106577198,1.04847152836572,-5.50835061626544,0.349134075065761,-1.28584147573276,-5.60757686682063,0.869683830970338,1.16962114106829,1.01768367934515,0.848929503059603 +"75",15.8171544729281,0.916295223914319,-5.50835061626544,0.349134075065761,-2.17619766052445,-5.60757686682063,0.869683830970338,1.16962114106829,0.94670202339958,0.848929503059603 +"76",16.6192936920852,0.777378944195527,-5.50835061626544,0.349134075065761,-1.12857945826625,-5.85305584992174,0.869683830970338,1.16962114106829,0.586825185422717,0.803091425054481 +"77",32.8003021681362,0.475711411986802,-5.50835061626544,2.26427481485242,3.09064994413815,4.19358248393821,0.869683830970338,1.13288820668981,0.685970709551112,0.544398176987015 +"78",32.797748184977,0.463489854890823,-5.50835061626544,2.26427481485242,3.08809596097898,4.19358248393821,0.869683830970338,1.13288820668981,0.684288944305352,0.544398176987015 +"79",32.6349010845587,0.437726014804747,-5.50835061626544,2.26427481485242,2.92524886056068,4.19358248393821,0.869683830970338,1.13288820668981,0.658606006027941,0.544398176987015 +"80",25.7924909685626,0.736501664804244,-5.50835061626544,2.26427481485242,1.68603770197181,-1.40961647346905,0.869683830970338,1.13288820668981,0.51122641945857,0.413608877914912 +"81",23.2424821743454,0.716137498153581,-5.50835061626544,2.26427481485242,-0.481431603413022,-1.79215596230137,0.869683830970338,1.13288820668981,0.38455727969849,0.500170302500962 +"82",25.789949233207,0.477416280185277,-5.50835061626544,2.26427481485242,-0.220392964631535,0.494272457778679,0.869683830970338,1.13288820668981,0.401740723208882,0.377299809541995 +"83",20.3112053801174,0.729765182091992,-5.50835061626544,2.26427481485242,-0.904025345789156,-4.30083901415325,0.869683830970338,1.13288820668981,0.609075978817762,0.624661934207019 +"84",20.0460645789539,0.713994773671788,-5.50835061626544,2.26427481485242,-1.16916614695271,-4.30083901415325,0.869683830970338,1.13288820668981,0.581533961437666,0.624661934207019 +"85",20.0270855052995,0.71340707233099,-5.50835061626544,2.26427481485242,-1.18814522060708,-4.30083901415325,0.869683830970338,1.13288820668981,0.579177786900096,0.624661934207019 +"86",25.5560451169277,0.481393766466368,-5.50835061626544,2.26427481485242,-0.454297080910768,0.494272457778679,0.869683830970338,1.13288820668981,0.385096375748397,0.377299809541995 +"87",25.3665772494804,0.510529719559943,-5.50835061626544,2.26427481485242,-0.643764948358082,0.494272457778679,0.869683830970338,1.13288820668981,0.394591988912159,0.377299809541995 +"88",23.0881751184945,0.705398868611727,-5.50835061626544,2.26427481485242,-0.635738659263965,-1.79215596230137,0.869683830970338,1.13288820668981,0.393394755424498,0.500170302500962 +"89",23.0881751184945,0.705398868611727,-5.50835061626544,2.26427481485242,-0.635738659263965,-1.79215596230137,0.869683830970338,1.13288820668981,0.393394755424498,0.500170302500962 +"90",32.6552760550777,0.49412896193492,-5.50835061626544,2.26427481485242,3.05004152068094,4.08916479433697,0.869683830970338,1.13288820668981,0.683131216995614,0.539926195860466 +"91",38.5885786897091,1.04163739819193,0,2.26427481485242,2.85850831420156,4.70565001918229,0,1.13288820668981,0.648404372572002,0.706641358677691 +"92",32.6958844785349,0.477515239458115,-5.50835061626544,2.26427481485242,3.09064994413815,4.08916479433697,0.869683830970338,1.13288820668981,0.685970709551112,0.539926195860466 +"93",32.6973515345131,0.467362542719789,-5.50835061626544,2.26427481485242,3.0921170001163,4.08916479433697,0.869683830970338,1.13288820668981,0.685107359419246,0.539926195860466 +"94",32.4228561026497,0.428000761898797,-5.50835061626544,2.26427481485242,2.81762156825295,4.08916479433697,0.869683830970338,1.13288820668981,0.642210454307614,0.539926195860466 +"95",32.6859541251975,0.461055706894862,-5.50835061626544,2.26427481485242,3.08071959080071,4.08916479433697,0.869683830970338,1.13288820668981,0.682973679318904,0.539926195860466 +"96",32.3979114481525,0.426513359034723,-5.50835061626544,2.26427481485242,2.79267691375574,4.08916479433697,0.869683830970338,1.13288820668981,0.638456152660619,0.539926195860466 +"97",32.6484534372014,0.451558625021733,-5.50835061626544,2.26427481485242,3.04321890280458,4.08916479433697,0.869683830970338,1.13288820668981,0.676901708743066,0.539926195860466 +"98",32.3376919579,0.423511394743263,-5.50835061626544,2.26427481485242,2.73245742350317,4.08916479433697,0.869683830970338,1.13288820668981,0.629490807572508,0.539926195860466 +"99",32.5112046932192,0.434580631915795,-5.50835061626544,2.26427481485242,2.90597015882239,4.08916479433697,0.869683830970338,1.13288820668981,0.655648711206953,0.539926195860466 +"100",24.3284137896243,0.533280108700473,-5.50835061626544,2.26427481485242,-0.191456631590189,-0.996199318845329,0.869683830970338,1.13288820668981,0.40449147585711,0.427677295119379 +"101",24.5010339021139,0.551239008608386,-5.50835061626544,2.26427481485242,-0.0188365191005985,-0.996199318845329,0.869683830970338,1.13288820668981,0.420715737656424,0.427677295119379 +"102",18.6181129527206,0.790435293270592,-5.50835061626544,2.26427481485242,-1.89854515007303,-4.99941163726618,0.869683830970338,1.13288820668981,0.613888571268161,0.656165444175108 +"103",18.0362752753782,0.922675836676518,-5.50835061626544,2.26427481485242,-2.48038282741542,-4.99941163726618,0.869683830970338,1.13288820668981,0.752319033614187,0.656165444175108 +"104",18.7611281988252,0.761214957707137,-5.50835061626544,2.26427481485242,-1.75552990396843,-4.99941163726618,0.869683830970338,1.13288820668981,0.586811489561478,0.656165444175108 +"105",16.2332214068507,0.617474943972475,-5.50835061626544,0.349134075065761,-1.80158895059952,-5.56611864282297,0.869683830970338,1.16962114106829,0.594712979434115,0.712802207522622 +"106",16.9773232025641,0.951525305134009,-5.50835061626544,0.349134075065761,-2.06167543282626,-4.56193036488282,0.869683830970338,1.16962114106829,0.651246073958569,0.961766922122445 +"107",15.9731349246239,0.64869448817231,-5.50835061626544,0.349134075065761,-2.06167543282626,-5.56611864282297,0.869683830970338,1.16962114106829,0.651246073958569,0.712802207522622 +"108",21.0217954920039,0.754355197275324,-5.50835061626544,0.349134075065761,-1.58293418942392,-0.996199318845329,0.869683830970338,1.16962114106829,0.566174798103157,0.427677295119379 +"109",26.1156457381381,0.951892957753333,0,0.349134075065761,-2.24675753054129,-0.746876347859247,0,1.16962114106829,0.696427929074205,0.423654398284457 +"110",20.2683378019368,0.818732188902343,-5.50835061626544,0.349134075065761,-2.33639187949101,-0.996199318845329,0.869683830970338,1.16962114106829,0.71808054568933,0.427677295119379 +"111",25.7415567147232,0.951704187081788,0,0.349134075065761,-2.62084655395619,-0.746876347859247,0,1.16962114106829,0.800928230927322,0.423654398284457 +"112",21.0359417231121,0.777496128131261,-5.50835061626544,0.349134075065761,-1.81811092930177,-0.746876347859247,0.869683830970338,1.16962114106829,0.597754155034199,0.423654398284457 +"113",25.9727268091403,0.946764720941088,0,0.349134075065761,-2.38967645953906,-0.746876347859247,0,1.16962114106829,0.730759138515221,0.423654398284457 +"114",20.3943405939113,0.854028025891714,-5.50835061626544,0.349134075065761,-2.45971205850265,-0.746876347859247,0.869683830970338,1.16962114106829,0.747357546164098,0.423654398284457 +"115",25.7458646877865,0.967574652983293,0,0.349134075065761,-2.61653858089286,-0.746876347859247,0,1.16962114106829,0.821370162737337,0.423654398284457 +"116",20.7866187521261,0.757336068724991,-5.50835061626544,0.349134075065761,-1.81811092930177,-0.996199318845329,0.869683830970338,1.16962114106829,0.597754155034199,0.427677295119379 +"117",25.9727268091403,0.946764720941088,0,0.349134075065761,-2.38967645953906,-0.746876347859247,0,1.16962114106829,0.730759138515221,0.423654398284457 +"118",17.6001327624937,0.647023712388719,-5.50835061626544,0.349134075065761,-2.02987846433663,-3.97091777344286,0.869683830970338,1.16962114106829,0.643645012316883,0.620400457506683 +"119",32.8003021681362,0.475711411986802,-5.50835061626544,2.26427481485242,3.09064994413815,4.19358248393821,0.869683830970338,1.13288820668981,0.685970709551112,0.544398176987015 +"120",25.9848683675008,0.757653391023714,-5.50835061626544,2.26427481485242,1.87841510091001,-1.40961647346905,0.869683830970338,1.13288820668981,0.527058848171753,0.413608877914912 +"121",32.7623585668068,0.453340067110306,-5.50835061626544,2.26427481485242,3.0527063428088,4.19358248393821,0.869683830970338,1.13288820668981,0.678403443544068,0.544398176987015 +"122",32.6974662186181,0.443908634157654,-5.50835061626544,2.26427481485242,2.9878139946201,4.19358248393821,0.869683830970338,1.13288820668981,0.668257380293192,0.544398176987015 +"123",30.8578708389364,0.544779522246604,-5.50835061626544,2.26427481485242,1.14821861493837,4.19358248393821,0.869683830970338,1.13288820668981,0.47939581816617,0.544398176987015 +"124",25.1109336981712,0.663738984523165,-5.50835061626544,2.26427481485242,-0.899408499667344,0.494272457778679,0.869683830970338,1.13288820668981,0.488056565410108,0.377299809541995 +"125",18.4243844238235,0.663909500617124,-5.50835061626544,0.349134075065761,-0.875705562296372,-4.30083901415325,0.869683830970338,1.16962114106829,0.606567910284768,0.624661934207019 +"126",18.6901588121711,0.670749850407269,-5.50835061626544,0.349134075065761,-0.828807672218454,-4.08196251588361,0.869683830970338,1.16962114106829,0.58550302991057,0.621228004040603 +"127",18.8705075658236,1.09826384476829,-5.50835061626544,0.349134075065761,-0.818317409824904,-3.91210402462466,0.869683830970338,1.16962114106829,0.567590607665327,1.03240727670911 +"128",18.8705075658236,1.09826384476829,-5.50835061626544,0.349134075065761,-0.818317409824904,-3.91210402462466,0.869683830970338,1.16962114106829,0.567590607665327,1.03240727670911 +"129",18.8391432005516,1.09151945407427,-5.50835061626544,0.349134075065761,-0.849681775096902,-3.91210402462466,0.869683830970338,1.16962114106829,0.599439520555629,1.03240727670911 +"130",25.5382842212068,1.35078965910036,-5.50835061626544,0.349134075065761,-2.57984966024704,4.51720488118067,0.869683830970338,1.16962114106829,0.779190935093395,0.913881738209462 +"133",22.9876451193181,0.618737869859135,-5.50835061626544,2.26427481485242,-0.85202178069711,-1.67640284004462,0.869683830970338,1.13288820668981,0.493079433154421,0.421114505367306 +"134",23.0106786974917,0.637036704832328,-5.50835061626544,2.26427481485242,-0.828988202523467,-1.67640284004462,0.869683830970338,1.13288820668981,0.514658087999585,0.421114505367306 +"135",23.0162522388934,0.645539465405429,-5.50835061626544,2.26427481485242,-0.823414661121809,-1.67640284004462,0.869683830970338,1.13288820668981,0.524092888135919,0.421114505367306 +"136",23.0207789212643,0.689155469282553,-5.50835061626544,2.26427481485242,-0.818887978750926,-1.67640284004462,0.869683830970338,1.13288820668981,0.569329150041041,0.421114505367306 +"137",19.089762570891,0.806569513805393,-5.50835061626544,2.26427481485242,-0.860188526345875,-5.56611864282297,0.869683830970338,1.13288820668981,0.603146025306678,0.712802207522622 +"138",19.0143628969972,0.798063617808627,-5.50835061626544,2.26427481485242,-0.935588200239683,-5.56611864282297,0.869683830970338,1.13288820668981,0.608802609680019,0.712802207522622 +"139",32.2412761938411,0.420320121027995,-5.50835061626544,2.26427481485242,2.63604165944432,4.08916479433697,0.869683830970338,1.13288820668981,0.615500125575919,0.539926195860466 +"140",31.0385495411278,0.424750197792368,-5.50835061626544,2.26427481485242,1.96665449038282,3.55582531068513,0.869683830970338,1.13288820668981,0.535215686684584,0.511529944920386 +"141",27.3955715964001,1.1393557697005,-5.50835061626544,0,0.587951360507605,3.55582531068513,0.869683830970338,0,0.456956173959973,0.511529944920386 +"142",28.9929821352676,0.436835360203489,-5.50835061626544,2.26427481485242,1.68603770197181,1.79087469323592,0.869683830970338,1.13288820668981,0.51122641945857,0.392503913898165 +"143",28.4669069027581,0.447001088841185,-5.50835061626544,2.26427481485242,1.15996246946233,1.79087469323592,0.869683830970338,1.13288820668981,0.47993349734316,0.392503913898165 +"144",24.6116363817429,0.504659306742246,-5.50835061626544,2.26427481485242,-0.30283067510105,-0.601602683215887,0.869683830970338,1.13288820668981,0.39432351696884,0.418768836317804 +"145",24.4858740376845,1.10298264594186,-5.50835061626544,0,-0.556795580758822,1.79087469323592,0.869683830970338,0,0.385913931162851,0.392503913898165 +"146",20.6728765003695,1.17705827489867,-5.50835061626544,0,-0.884813628270097,-1.69410479656783,0.869683830970338,0,0.481571076700425,0.43074651017384 +"147",27.3921916953824,0.50314454693731,-5.50835061626544,2.26427481485242,0.0852472620866834,1.79087469323592,0.869683830970338,1.13288820668981,0.429388410173276,0.392503913898165 +"148",24.1147336760463,0.564806168579419,-5.50835061626544,2.26427481485242,-0.799733380797592,-0.601602683215887,0.869683830970338,1.13288820668981,0.43923593090354,0.418768836317804 +"149",24.343274182113,1.11076373076415,-5.50835061626544,0,-0.699395436330323,1.79087469323592,0.869683830970338,0,0.405542571998215,0.392503913898165 +"150",20.7000885755945,1.15182935565521,-5.50835061626544,0,-0.857601553045068,-1.69410479656783,0.869683830970338,0,0.490171947088859,0.43074651017384 +"151",33.1244157967126,0.505119457565732,-5.50835061626544,2.26427481485242,3.001951570816,4.60639448583679,0.869683830970338,1.13288820668981,0.670450979192272,0.580390112191979 +"152",32.8336333620815,0.496478664327338,-5.50835061626544,2.26427481485242,2.71116913618491,4.60639448583679,0.869683830970338,1.13288820668981,0.62636031224748,0.580390112191979 +"153",32.9920126390847,0.499567462877776,-5.50835061626544,2.26427481485242,2.86954841318812,4.60639448583679,0.869683830970338,1.13288820668981,0.650084588540675,0.580390112191979 +"154",30.2999205570251,0.727883380344872,-5.50835061626544,2.26427481485242,0.1774563311285,4.60639448583679,0.869683830970338,1.13288820668981,0.436018429693394,0.580390112191979 +"155",27.9434366731309,1.17015956217556,-5.50835061626544,0,0.0852472620866834,4.60639448583679,0.869683830970338,0,0.429388410173276,0.580390112191979 +"156",25.901872766703,1.36724797916714,-5.50835061626544,0,-1.95631664434121,4.60639448583679,0.869683830970338,0,0.62657298341931,0.580390112191979 +"157",31.8563686399972,0.417398349254653,-5.50835061626544,2.26427481485242,2.36674052264985,3.97355837728754,0.869683830970338,1.13288820668981,0.57940843612898,0.534765381683266 +"158",31.5746349882091,0.429486914140687,-5.50835061626544,2.26427481485242,2.08500687086173,3.97355837728754,0.869683830970338,1.13288820668981,0.547059962890435,0.534765381683266 +"159",35.9618700819352,0.963166469942588,0,2.26427481485242,0.225326292845036,4.71212343276485,0,1.13288820668981,0.439097257618197,0.681930667104372 +"160",35.9618700819352,0.963166469942588,0,2.26427481485242,0.225326292845036,4.71212343276485,0,1.13288820668981,0.439097257618197,0.681930667104372 +"161",31.7294432183181,0.421329925376259,-5.50835061626544,2.26427481485242,2.23981510097072,3.97355837728754,0.869683830970338,1.13288820668981,0.564118682614948,0.534765381683266 +"162",31.4343815980496,0.439676974443646,-5.50835061626544,2.26427481485242,1.94475348070229,3.97355837728754,0.869683830970338,1.13288820668981,0.533137696181035,0.534765381683266 +"163",31.2328418455797,0.4581914422132,-5.50835061626544,2.26427481485242,1.74321372823239,3.97355837728754,0.869683830970338,1.13288820668981,0.51565820776924,0.534765381683266 +"164",28.9813939977873,0.80523495895345,-5.50835061626544,0.349134075065761,1.4069066202266,3.97355837728754,0.869683830970338,1.16962114106829,0.4926796616698,0.534765381683266 +"165",28.5706563886196,0.830758569765025,-5.50835061626544,0.349134075065761,0.996169011058896,3.97355837728754,0.869683830970338,1.16962114106829,0.472858675489428,0.534765381683266 +"166",22.2139680792338,0.822039252333058,-5.50835061626544,0.349134075065761,0.324306765260487,-1.71126768629989,0.869683830970338,1.16962114106829,0.444802080946827,0.442228802838203 +"167",21.8876755747752,0.784166183381993,-5.50835061626544,0.349134075065761,-0.00198573919807132,-1.71126768629989,0.869683830970338,1.16962114106829,0.422198044892407,0.442228802838203 +"168",20.9079122814468,0.70356376245126,-5.50835061626544,0.349134075065761,-0.900860756524987,-1.79215596230137,0.869683830970338,1.16962114106829,0.488545333052794,0.500170302500962 +"169",20.9090378216557,0.706163795387998,-5.50835061626544,0.349134075065761,-0.899735216316131,-1.79215596230137,0.869683830970338,1.16962114106829,0.488172847244612,0.500170302500962 +"170",20.9062407138043,0.695992001948739,-5.50835061626544,0.349134075065761,-0.902532324167534,-1.79215596230137,0.869683830970338,1.16962114106829,0.488891398857328,0.500170302500962 +"171",20.9706506987092,0.625017902015631,-5.50835061626544,0.349134075065761,-0.838122339262638,-1.79215596230137,0.869683830970338,1.16962114106829,0.503771981262913,0.500170302500962 +"172",20.9879766669518,0.628716561940255,-5.50835061626544,0.349134075065761,-0.820796371019956,-1.79215596230137,0.869683830970338,1.16962114106829,0.529986690199245,0.500170302500962 +"173",20.4210722011206,0.619994275183941,-5.50835061626544,0.349134075065761,-1.38770083685115,-1.79215596230137,0.869683830970338,1.16962114106829,0.562568825767839,0.500170302500962 +"174",25.0357402279734,0.496785701419762,-5.50835061626544,2.26427481485242,-0.206017019507525,-0.274312492578926,0.869683830970338,1.13288820668981,0.403102268720651,0.405080562832172 +"175",33.7317832897695,0.971770179293854,0,2.26427481485242,-0.848462377240902,3.55582531068513,0,1.13288820668981,0.462771761355499,0.511529944920386 +"176",24.5636591734379,0.516729517930988,-5.50835061626544,2.26427481485242,-0.678098074042991,-0.274312492578926,0.869683830970338,1.13288820668981,0.400774902179845,0.405080562832172 +"177",24.5636591734379,0.516729517930988,-5.50835061626544,2.26427481485242,-0.678098074042991,-0.274312492578926,0.869683830970338,1.13288820668981,0.400774902179845,0.405080562832172 +"178",24.4352186173888,0.568275482669776,-5.50835061626544,2.26427481485242,-0.806538630092094,-0.274312492578926,0.869683830970338,1.13288820668981,0.442252954669545,0.405080562832172 +"179",16.5933420559858,0.632665056261083,-5.50835061626544,0.349134075065761,-1.39196588087644,-5.61562106341094,0.869683830970338,1.16962114106829,0.56241955009585,0.719867106453153 +"180",16.4198495673815,0.617287188353269,-5.50835061626544,0.349134075065761,-1.56545836948076,-5.61562106341094,0.869683830970338,1.16962114106829,0.56496974895457,0.719867106453153 +"181",16.2466577973972,0.628433892030754,-5.50835061626544,0.349134075065761,-2.03345168022485,-5.32081952265112,0.869683830970338,1.16962114106829,0.64449381464278,0.683841461026833 +"182",16.1773107971794,0.639785953996621,-5.50835061626544,0.349134075065761,-2.1027986804426,-5.32081952265112,0.869683830970338,1.16962114106829,0.661204334994035,0.683841461026833 +"183",36.0419670870806,1.05177693435372,0,2.26427481485242,0.365026381619153,4.65252034913622,0,1.13288820668981,0.446927469003622,0.790507973292411 +"184",27.587574802487,0.467525574834587,-5.50835061626544,2.26427481485242,0.938127629789063,1.13337743263816,0.869683830970338,1.13288820668981,0.470529110209691,0.373267649049925 +"185",36.0113695318588,1.05164241066877,0,2.26427481485242,0.334428826397277,4.65252034913622,0,1.13288820668981,0.445341324346694,0.790507973292411 +"186",27.5529061241702,0.468050934062226,-5.50835061626544,2.26427481485242,0.903458951472252,1.13337743263816,0.869683830970338,1.13288820668981,0.469168227588881,0.373267649049925 +"187",26.874773465543,0.481380719969274,-5.50835061626544,2.26427481485242,0.225326292845036,1.13337743263816,0.869683830970338,1.13288820668981,0.439097257618197,0.373267649049925 +"188",35.0637606006545,0.88154627978962,0,2.26427481485242,-0.154242239609014,4.19358248393821,0,1.13288820668981,0.408065138430046,0.544398176987015 +"189",24.2382506343947,0.571366369861924,-5.50835061626544,2.26427481485242,-0.00198573919807132,-1.27583336646707,0.869683830970338,1.13288820668981,0.422198044892407,0.421618368743583 +"190",26.0478993943493,0.513078647175252,-5.50835061626544,2.26427481485242,0.437710730697163,0.0941189235923379,0.869683830970338,1.13288820668981,0.450458278480562,0.389714929549714 +"191",26.410486404923,0.525170098514826,-5.50835061626544,2.26427481485242,0.800297741270846,0.0941189235923379,0.869683830970338,1.13288820668981,0.465202916994977,0.389714929549714 +"192",22.9897132929568,0.619725377230666,-5.50835061626544,2.26427481485242,-0.849953607058391,-1.67640284004462,0.869683830970338,1.13288820668981,0.494337552161111,0.421114505367306 +"193",34.3193522047873,1.03250115786,0,2.26427481485242,-0.898650635476128,4.19358248393821,0,1.13288820668981,0.486920307936768,0.544398176987015 +"194",25.1081637415881,0.683378465055591,-5.50835061626544,2.26427481485242,-0.902178456250419,0.494272457778679,0.869683830970338,1.13288820668981,0.488389516726165,0.377299809541995 +"195",20.7175936254211,0.633513459889602,-5.50835061626544,0.349134075065761,-1.13583363246452,-1.74750174238751,0.869683830970338,1.16962114106829,0.585859830430115,0.469534740094465 +"196",20.2094853957776,0.626160485754005,-5.50835061626544,0.349134075065761,-1.64394186210802,-1.74750174238751,0.869683830970338,1.16962114106829,0.57170738456355,0.469534740094465 +"197",20.6303570870384,0.623796742856903,-5.50835061626544,0.349134075065761,-1.22307017084725,-1.74750174238751,0.869683830970338,1.16962114106829,0.575108305606442,0.469534740094465 +"198",20.1748401170183,0.630412190585406,-5.50835061626544,0.349134075065761,-1.67858714086738,-1.74750174238751,0.869683830970338,1.16962114106829,0.575736031138042,0.469534740094465 +"199",16.2488918889965,0.623226215719736,-5.50835061626544,0.349134075065761,-1.69151944325406,-5.66051766802258,0.869683830970338,1.16962114106829,0.577397546316842,0.726805165895554 +"200",15.8175998307867,0.666213001838902,-5.50835061626544,0.349134075065761,-2.12281150146391,-5.66051766802258,0.869683830970338,1.16962114106829,0.666086098604563,0.726805165895554 +"201",20.5620302518023,0.618146636526072,-5.50835061626544,0.349134075065761,-1.29139700608333,-1.74750174238751,0.869683830970338,1.16962114106829,0.568414498562089,0.469534740094465 +"202",16.3261082186955,0.611442333177494,-5.50835061626544,0.349134075065761,-1.70870213875466,-5.56611864282297,0.869683830970338,1.16962114106829,0.579733609674551,0.712802207522622 +"203",18.9665065706825,0.617318576741415,-5.50835061626544,0.349134075065761,-1.54797884924838,-3.08644358034234,0.869683830970338,1.16962114106829,0.563937079297684,0.625614234472955 +"204",25.2242411455669,0.889843960281993,0,0.349134075065761,-2.30246150991615,-1.58257696105551,0,1.16962114106829,0.709932893308799,0.403711417557156 +"205",20.0894603782658,0.643174400143785,-5.50835061626544,0.349134075065761,-1.76396687961988,-1.74750174238751,0.869683830970338,1.16962114106829,0.588192146299829,0.469534740094465 diff --git a/statsmodels/gam/tests/results/cubic_cyclic_splines_from_mgcv.csv b/statsmodels/gam/tests/results/cubic_cyclic_splines_from_mgcv.csv new file mode 100644 index 0000000..8f39898 --- /dev/null +++ b/statsmodels/gam/tests/results/cubic_cyclic_splines_from_mgcv.csv @@ -0,0 +1,401 @@ +"","y","x0","x2","f","f0","f2","s(x0)","s(x2)","y_est" +"1",7.12834119189363,0.18488225992769,0.415244054514915,8.3864294832725,1.09742724507315,3.85308359377173,-0.227044191415553,0.674474485272424,8.28070979061934 +"2",2.96831168814625,0.702374035958201,0.531438757665455,7.5170006011403,1.60922136489573,2.78685791023355,0.255586357247631,-0.546809755954686,7.54205609805542 +"3",3.97799386611165,0.573326334822923,0.00324621424078941,3.30811955616867,1.94716784653429,0.000331139107656992,0.440904418692589,-3.26552447997573,5.00865943547933 +"4",10.434571523234,0.168051920365542,0.252099723322317,10.8619475362468,1.00752822352788,8.78226882747801,-0.2914439516815,5.05254717714343,12.5943827222244 +"5",14.5701431124503,0.943839338840917,0.155228920048103,14.633227915587,0.351039955408613,6.92331409450211,-0.387243895292977,3.40087054502693,10.8469061464964 +"6",4.43222337124671,0.943474958650768,0.878839791286737,5.82439046032278,0.353293651164888,0.152830508081872,-0.386402747045483,-2.93309471949142,4.51378203022557 +"7",14.6204982526083,0.129158976720646,0.203511162893847,12.6836562466463,0.789443318976297,8.66213887096385,-0.415971510965674,4.97405136137178,12.3913593471686 +"8",10.8619407133103,0.833448815625161,0.583528404124081,6.06924346948678,0.999371549079984,3.09947825772663,-0.0693035351092078,-0.0357121494960873,7.72826381215717 +"9",7.35948772806806,0.468018515501171,0.804473386378959,4.40724629164454,1.98991370630921,1.02111497118379,0.488534666504273,-2.62696428099709,5.69484988226965 +"10",14.6503664798744,0.54998374171555,0.264716582372785,15.5847448140098,1.97539265899078,8.58236765178851,0.461156042313852,4.87735106608389,13.1717866051602 +"11",8.55978117165571,0.55267406697385,0.405742728384212,9.73867187952596,1.97267864903617,4.10072468921772,0.45907213146249,0.926732922735185,9.21908455096015 +"12",8.35466583847241,0.23889475944452,0.380358448717743,10.3297099823746,1.36402369645126,4.86471238772196,0.000590560790525739,1.66376630647815,9.49763636403114 +"13",13.0426397323725,0.760513313114643,0.240951270796359,12.7212252447601,1.36674133286988,8.88753695162683,0.133581590581301,5.14871550313379,13.1155765904776 +"14",-0.691359790313367,0.180820100707933,0.842069704318419,2.69988170895038,1.07600071904564,0.468494599643343,-0.243052271536763,-2.92529904209468,4.66492818313103 +"15",3.67339912901921,0.405282181221992,0.00709935487248003,3.98208631548489,1.91210661097774,0.00333207359919532,0.450863140055415,-3.20577521515017,5.07836742166771 +"16",6.26398380113838,0.853548452956602,0.476415365468711,7.39247205280711,0.888059478714279,2.85675522996195,-0.132044059288684,-0.435344215558095,7.26589122191569 +"17",0.821827261733445,0.976398489437997,0.874515716219321,4.59477726781584,0.148156824168708,0.178659271005004,-0.453272850724276,-2.93477125481843,4.44523539121976 +"18",5.91515263392194,0.225825461093336,0.566878651967272,6.61882693003148,1.30283558925834,2.98816859162351,-0.0553401870834273,-0.243767560923847,7.5341717487552 +"19",8.58747748043002,0.444809229113162,0.500824617221951,7.97897991952371,1.97001221586527,2.74514826424787,0.481364385464492,-0.58150361708599,7.73314026514097 +"20",2.93507113356496,0.0749794247094542,0.874521149788052,5.57765902948977,0.46676502034473,0.178625065833263,-0.509354310163179,-2.93476865361885,4.38915653298044 +"21",7.04267669630848,0.661898758495227,0.524293957278132,9.95714151688145,1.74683477040237,2.76243807096948,0.32520024805337,-0.575157940172633,7.58332180464321 +"22",8.17450810256642,0.387549542589113,0.0925511021632701,5.87951317694955,1.87649039025807,3.00169546388112,0.428976494916497,0.12399981451995,8.38625580619892 +"23",10.9711677544227,0.836889176862314,0.134571503615007,8.54609745347932,0.980589247123112,5.74345064624302,-0.0799823561431264,2.38292940767438,10.1362265482937 +"24",5.74682142317176,0.150501440744847,0.0430209250189364,5.42964575108459,0.910787117034434,0.51293655414988,-0.352396960858087,-2.19509543975371,5.28578709615067 +"25",8.19506298090425,0.34727224893868,0.579527264460921,11.7199071712819,1.77416678456263,3.07316926538295,0.358203882062032,-0.0872800457941511,8.10420333303035 +"26",5.74550125256406,0.488773231394589,0.0749190652277321,5.22515168967992,1.99875616072095,1.9300758088639,0.488882126296113,-0.782337171844845,7.53982445121373 +"27",6.4912475835067,0.149246862856671,0.109240429243073,6.16709110469951,0.903762129706801,4.09973180296336,-0.35647497920724,1.02215954430674,8.49896406186197 +"28",2.02564241541326,0.357062590075657,0.0269805011339486,5.06258487711001,1.80171885669055,0.149405116356797,0.378248880337533,-2.73928381138134,5.47224456571866 +"29",6.05624393356524,0.962644048267975,0.44965722411871,6.43108327136691,0.234175962529181,3.16163281863248,-0.427691149470868,-0.0778081992291847,7.32778014806242 +"30",7.35648519220135,0.132372003281489,0.802779154153541,2.98981683298994,0.807951573832067,1.05073758168675,-0.407231394697638,-2.60055202413871,4.82549607792612 +"31",7.73841587934375,0.0104145254008472,0.0946207772940397,7.05166719048879,0.0654247188755601,3.13519714453325,-0.489506740298803,0.233914285839761,7.57768704230343 +"32",11.16031183532,0.164642242016271,0.0217266413383186,7.29294602620088,0.988964149622058,0.0823341584224072,-0.303823936824518,-2.8867538803087,4.64270167962925 +"33",6.14291646383901,0.810192144475877,0.865996729349717,7.26459770094121,1.12316803365629,0.237915803430657,0.00122136530161028,-2.93924296613439,4.89525789592969 +"34",6.84569343399892,0.868861036840826,0.582203940721229,5.80647637281992,0.800858425140461,3.09083152246907,-0.179759900158571,-0.0528355864977668,7.60068401010613 +"35",12.1670478736339,0.514281762996688,0.156790239037946,10.2051907798347,1.99798724677353,7.0035719476132,0.482181868158047,3.47189407595649,11.787355440877 +"36",9.07687568397104,0.627196286572143,0.514403509441763,9.85580121169106,1.84243421606922,2.74230822364921,0.377092094877167,-0.594465088452681,7.61590650318696 +"37",4.52506817763415,0.844429003074765,0.942464028950781,2.23255052786033,0.939028788913965,0.00378076495941939,-0.10350114369795,-3.25052927879017,4.47924907427435 +"38",5.90894052971257,0.284870574250817,0.859073282685131,7.53752029668025,1.56035223460714,0.294680379714631,0.182649695446557,-2.94144316307794,5.07448602913109 +"39",12.5600956886201,0.667225647717714,0.614471670007333,11.7226370556387,1.73029204701211,3.26491664932042,0.316593330958169,0.343018513498667,8.49289134121931 +"40",7.78666657790817,0.150469752028584,0.621229486307129,6.91089641032163,0.910609850325356,3.2866595828649,-0.352500453560122,0.40993211012494,7.89071115332729 +"41",9.46545246159186,0.981727862264961,0.770207359222695,5.4870728963481,0.114744186086783,1.66809061900321,-0.462191460324963,-1.89195408360505,5.47913395283246 +"42",7.98476818990058,0.297010735142976,0.559223463525996,6.01791431289043,1.60692295848185,2.93757237908054,0.223664683278722,-0.329720741751714,7.72722343828948 +"43",11.1200064496787,0.115084075368941,0.104635148309171,9.09930032317762,0.707443821606678,3.79344153155655,-0.450412246730918,0.772236667231655,8.15510391726321 +"44",7.30261009433391,0.163200871786103,0.160728369606659,11.169407228114,0.981082328019653,7.19964107180246,-0.308983147019698,3.64646501351835,11.1707613632611 +"45",2.87897797947591,0.944041808135808,0.921017819782719,1.90309896512445,0.349787481435473,0.0196405975699546,-0.387710386242896,-3.06511975416904,4.38044935635053 +"46",4.56230671587923,0.794863823568448,0.858829384669662,5.48732308540155,1.20152456833077,0.296825240600543,0.045185436985577,-2.94146379939242,4.93700113435563 +"47",8.53881970579713,0.974687897600234,0.768369293771684,8.86136639419322,0.158873067826235,1.70447635553069,-0.450289403883873,-1.84339620377278,5.53959388910582 +"48",4.93052811071351,0.349088410614058,0.0215932258870453,4.90165802072237,1.77940542967064,0.0809369981820827,0.362066133809751,-2.89028396311736,5.30506166745486 +"49",0.270686793170807,0.501969880890101,0.900029808748513,4.93793383795017,1.99996170180611,0.0626735071088702,0.486348894722708,-2.95308264891301,5.36654574257217 +"50",5.71210355748669,0.810397262685001,0.422055596718565,6.35430171593611,1.12210142554194,3.69003414925473,0.000616726730590114,0.503921781101617,8.33781800459468 +"51",2.53128215708563,0.00710903806611896,0.815620528068393,4.78048853310418,0.0446636903106026,0.835224352119575,-0.485428354525846,-2.76874325841101,4.57910788382561 +"52",11.4926312964725,0.0146939109545201,0.165990423876792,11.9852222949765,0.0922917789715572,7.4468022408786,-0.494406760805011,3.86869288188452,11.207565617842 +"53",8.68476179911405,0.683403422823176,0.702329544350505,7.08010363495876,1.67710124423092,2.87253314956795,0.289476396635597,-0.0452516285740291,8.07750426482404 +"54",6.73659637293068,0.929720221785828,0.146583809517324,8.20893089692994,0.438001876525029,6.45461407451929,-0.353194874814998,2.99091995100899,10.4710045729565 +"55",9.21770380421483,0.27540119853802,0.783650883939117,8.02488924068983,1.52244785450626,1.40489550117418,0.148222545756795,-2.22409900987289,5.75740303264638 +"56",14.4557299443291,0.811859695473686,0.222305322065949,15.2902765975517,1.1144833443304,8.89369973773696,-0.00370510835045028,5.16649982016122,12.9960742085732 +"57",12.2572130653199,0.785878912778571,0.117966502672061,7.95608146922934,1.24617072429099,4.67872413075527,0.0696626502002105,1.49652497285633,9.39946711981901 +"58",6.22584451710024,0.988902155542746,0.950626030098647,7.15273358679738,0.069715687278549,0.00166006540399627,-0.473269741513118,-3.31713835361983,4.04287140162952 +"59",9.69148685885844,0.613952909596264,0.635327411815524,12.3962109076492,1.87320346829871,3.30867225411244,0.394805010871761,0.515426234498925,8.74351074213316 +"60",9.42944806845091,0.710185730131343,0.470433705253527,8.04556742347047,1.5795945074448,2.9075480190875,0.24088726327446,-0.373996306382343,7.70017045365459 +"61",14.5117548482216,0.770027856575325,0.120422721607611,12.7444990900551,1.32249243512379,4.84022974292302,0.110466490755785,1.62959074547729,9.57333673299555 +"62",3.77016047504039,0.886984157143161,0.480194857809693,4.55330602030726,0.695274009794026,2.82962097733328,-0.234923173511836,-0.468788017438374,7.12956830581226 +"63",9.88206417488313,0.625121729681268,0.368039822205901,8.1782611130773,1.84746623443466,5.27882636887808,0.379947621064081,2.04327864431639,10.2565057621429 +"64",7.1766677724709,0.260300035355613,0.909002645174041,4.14389561448924,1.45922709994699,0.0397578064966064,0.0894699429639232,-2.98704272485729,4.9357067148691 +"65",7.42248797588892,0.859073117841035,0.152872634120286,9.36504424256162,0.85682447224995,6.79956912585794,-0.149319816588541,3.29184820858167,10.9758078887556 +"66",10.1485902164303,0.437488002004102,0.855542484438047,6.89794340627103,1.96155585240588,0.326709056578361,0.47751685015887,-2.94121645096222,5.36957989595912 +"67",3.62016622162486,0.388144757598639,0.907381367171183,4.5752315755478,1.87778098726909,0.043342314038314,0.429798725561298,-2.97936907507379,5.28370914724998 +"68",4.30892699558775,0.461501105222851,0.899858920136467,6.50254130890964,1.98538944255742,0.0631869486821995,0.487270128657175,-2.9526231116384,5.36792651378125 +"69",5.09544681637421,0.218675193376839,0.514945505419746,5.10024259506228,1.2684231999236,2.74295924966819,-0.0860525761696088,-0.594021648245105,7.15320527234776 +"70",3.5585406469164,0.0659355104435235,0.416780355619267,6.64055771241882,0.411328688272775,3.81522773836023,-0.514380177571105,0.635210800809181,7.95411012000055 +"71",4.33368716400954,0.275701026665047,0.469175448641181,5.78242614908194,1.52366885180659,2.91947792487642,0.149344060225429,-0.359760168387252,7.62286338860065 +"72",14.5356060977966,0.310381097486243,0.197256424231455,12.6050234663958,1.65550587476979,8.52922947243198,0.264867346541892,4.85732076542652,12.9554676087309 +"73",8.50725572418713,0.0421755260322243,0.329779473599046,8.67946607315439,0.264221954221749,6.65010684790565,-0.514669351070528,3.23759786240691,10.5562080080989 +"74",3.05193726872436,0.184673463227227,0.955389225622639,2.25592630331203,1.09633024004265,0.000954228587224394,-0.227873637685364,-3.35090833135085,4.25449752772626 +"75",7.27353502907227,0.183373228181154,0.584825026104227,8.13547386477907,1.08948828827588,3.10787346487156,-0.233022893958094,-0.0189162731246036,7.58134032967977 +"76",9.51125705038021,0.755462416447699,0.618567775702104,9.57059611408074,1.38973764647855,3.27888967600212,0.145454486921361,0.384650814898765,8.36338479858259 +"77",7.98044425341438,0.288059732178226,0.495288227219135,7.26470411849091,1.57280872445203,2.75774190950887,0.193763000211852,-0.5625576127922,7.46448488418212 +"78",3.8613617638211,0.867844662396237,0.518186261644587,4.60509218830614,0.806706064506162,2.7479812808865,-0.176613732071042,-0.589869682870235,7.06679608182119 +"79",9.04195840674055,0.402642735978588,0.325241371290758,10.4646404809475,1.90717858318917,6.8126620880265,0.447941978215536,3.37533116190207,11.6565526368801 +"80",11.3176550783191,0.57268500351347,0.552817386575043,10.2209400350733,1.9480839709215,2.89713257519834,0.441524826261918,-0.394069307438176,7.88073501558621 +"81",5.57746907153493,0.350642574951053,0.0177831065375358,4.37760140563906,1.78384236530111,0.0469998947374887,0.365318857381645,-2.98645502517672,5.2121433289674 +"82",10.7089342379867,0.671998928301036,0.0569726510439068,7.31780529358022,1.71505677645042,1.02858968922083,0.308747295015251,-1.62299584132185,6.51903095045587 +"83",13.6571243065725,0.0250503565184772,0.388734344625846,12.1155012617111,0.157233613474221,4.5977655364454,-0.504403092589657,1.4123604064242,8.74123681059701 +"84",10.9298527278191,0.401101037859917,0.110059214755893,10.7966901796164,1.90423943643175,4.15423091781406,0.446182044855503,1.06667413179352,9.34613567341149 +"85",5.26730746401318,0.199976529926062,0.0580943147651851,8.06050154575457,1.17545119822299,1.07764342728173,-0.165426765196352,-1.57359258295257,6.09426014861355 +"86",13.0282305387151,0.856525000883266,0.192604857496917,11.9666222575096,0.871263497384077,8.41204789943322,-0.141356728813058,4.75216503834802,12.4440878062974 +"87",6.25704041344159,0.971515428507701,0.616521884920076,7.57746873617257,0.178735069001125,3.27220766816418,-0.444604358141298,0.364249284308461,7.75292442292963 +"88",8.68443629833225,0.323722436791286,0.593625131761655,7.51507864331743,1.70107242202133,3.16245936494946,0.30198079092488,0.0948660699372665,8.23012635762462 +"89",13.6483049073844,0.733191433362663,0.597685679094866,9.45100652107302,1.48688608926549,3.1858347759718,0.194732642330126,0.146473703935412,8.17448584302801 +"90",6.21937364251209,0.340068240184337,0.906595766311511,7.99224105280809,1.75281987927375,0.0451630788196472,0.342226940013073,-2.97590980322301,5.19959663355253 +"91",5.13014510798447,0.976755184587091,0.445523936068639,5.14460379671451,0.145921707720964,3.22690244770683,-0.45388764674917,-0.00337218761908523,7.37601966239422 +"92",8.05861485185061,0.397016411880031,0.721286036539823,7.86032344855436,1.8962365932119,2.58791568484136,0.441326163668435,-0.518341415005878,7.75626424542503 +"93",11.5725567304553,0.379998879274353,0.237508250167593,13.7154100193651,1.85955037953241,8.90528267393742,0.418001888234871,5.16613031120149,13.4174116961988 +"94",13.9766053111115,0.560387630248442,0.142295781057328,15.5089339950817,1.96411666779555,6.20803608251261,0.452730378336641,2.77834144029124,11.0643513153904 +"95",6.4797647181746,0.463808179134503,0.856655673589557,5.69638525391661,1.98708624050246,0.316383557218597,0.487783019051646,-2.94141691107098,5.37964560474314 +"96",3.62657709003994,0.19677682663314,0.0750631871633232,4.62049469182669,1.15912647046669,1.93821371435813,-0.178730121268437,-0.775201471673765,6.87934790382027 +"97",4.57665512063523,0.426943402737379,0.0216751468833536,3.916732640639,1.94755412266648,0.0817931645635993,0.470571273038917,-2.88811767397721,5.41573309582418 +"98",13.3001958677107,0.0930251874960959,0.122391620650887,11.6661170174252,0.576209821230247,4.96893603267958,-0.490424619199982,1.73593235344691,9.0787872310094 +"99",6.20591413655337,0.11530912690796,0.693578774109483,5.60081186648355,0.708766268379784,2.98233938411781,-0.449913138178701,0.139131614481954,7.52249797306572 +"100",7.745920462763,0.440031654201448,0.460468353936449,8.04916041660353,1.96461175986552,3.01413521413869,0.478942802916956,-0.248314501889865,8.06390779778956 +"101",14.1021991423141,0.200934729538858,0.270201246719807,13.6427330954648,1.18031684977566,8.47153889922809,-0.161422052683049,4.7816970703382,12.4535545144176 +"102",10.2813460846881,0.42763907276094,0.455095182172954,8.09638876999082,1.94854389761995,3.08325474062275,0.471081593583821,-0.168055742093356,8.13630534825294 +"103",4.85137979029549,0.980599981732666,0.510476477444172,4.84561910645056,0.121818460626604,2.73927004280688,-0.460352121991785,-0.595505461800383,6.7774219129703 +"104",11.2331632022045,0.828922125510871,0.219658464426175,11.498307953323,1.02390634597027,8.87601460017627,-0.0553240074792956,5.15295110754734,12.9309065968305 +"105",8.05260375002677,0.286973854992539,0.400094258133322,8.18838612588441,1.56858507506298,4.2585171091223,0.190006383687947,1.08366123695617,9.10694711740658 +"106",9.33894930857719,0.595916896825656,0.729184883181006,8.72718022643302,1.90988412545435,2.45324261987448,0.416872339493148,-0.735929861084577,7.51422197517104 +"107",11.3182047318057,0.898971946211532,0.163844325579703,10.0878180746118,0.624174059028064,7.34809659955898,-0.270044879831358,3.77965547591613,11.3428900928472 +"108",4.73874157490368,0.453377000289038,0.963441944448277,4.63632861429927,1.97858472775457,0.00031696377230766,0.484883845375713,-3.39525878136241,4.92290456077577 +"109",3.9649347048795,0.1474177793134,0.943138560513034,5.85514936702963,0.893495082777238,0.00355032388601139,-0.362348626504584,-3.25633286066963,4.21459800958825 +"110",9.18786398409187,0.128676982596517,0.358087731990963,10.3344495888554,0.786659865149204,5.62781222563495,-0.417255542619866,2.35488723041407,9.77091118455668 +"111",12.8837794672158,0.024656337685883,0.393948743119836,8.53408723261004,0.154765462799114,4.43857421193184,-0.50407279973324,1.25950410532075,8.58871080234998 +"112",11.8118264742873,0.736311374930665,0.256241421215236,11.4076998289433,1.47370429027262,8.72559668283347,0.188116925312551,5.00234672675146,13.0237431488265 +"113",13.9516122652434,0.373358564451337,0.306597534567118,11.440633437613,1.84378773092434,7.45561833792291,0.407502072678857,3.91851330628709,12.1592948757284 +"114",11.892123844867,0.574376940494403,0.131582422880456,9.75996429141057,1.94565000618449,5.55752034172672,0.439880506739928,2.22635457816025,10.4995145816626 +"115",5.27839621078377,0.825328013394028,0.98111131368205,3.21507751051791,1.04323931000869,7.36447253930748e-06,-0.0442948419401687,-3.40965154966564,4.37933310515666 +"116",13.5799585768086,0.813695673830807,0.598525822162628,7.56232500196031,1.10488610960234,3.19049811073118,-0.00915722605510878,0.157022284511709,7.98114455521907 +"117",7.66339524998881,0.872696340316907,0.748547380324453,8.20193400251302,0.778719233086051,2.09439709653888,-0.191591760850198,-1.29020547052064,6.35148226539163 +"118",7.36159546628271,0.1105548995547,0.0719438814558089,5.27780046174909,0.680755224768617,1.76491577989765,-0.460083020837121,-0.928427780340491,6.44476869558486 +"119",6.93045136830125,0.952700236812234,0.580856277374551,5.75063536937142,0.296100666220448,3.08196751037115,-0.40704475599005,-0.0702097568303019,7.35602498394212 +"120",9.65305775209362,0.569002080941573,0.614933087024838,11.0874771954474,1.95319171197669,3.266608330069,0.445019197992293,0.347862514566768,8.62616120932153 +"121",10.4972108152365,0.0368684707209468,0.485181445255876,9.20705647567851,0.231133823823045,2.79954299149337,-0.512367398668583,-0.506727583359819,6.81418451473407 +"122",5.88180565263779,0.245290916413069,0.783235180657357,3.91907345984506,1.39313766165549,1.41291232764871,0.0276342883159553,-2.21453385886434,5.64637992621408 +"123",5.62261933806897,0.978884799173102,0.546176499687135,5.50408502375625,0.132573440736761,2.85808328683254,-0.457505203451883,-0.452029192013686,6.9237451012969 +"124",8.20873583575179,0.885737232398242,0.616609779186547,8.17332250915743,0.702614661615158,3.27250708540437,-0.231198736731536,0.365142255127408,7.96722301515834 +"125",8.50540594354726,0.240982897812501,0.398970876354724,7.77600541513004,1.37358959037599,4.29079433572698,0.00945278288661558,1.1154269842921,8.95815926394118 +"126",9.059700233597,0.757211570162326,0.220897037768736,11.3283423100923,1.38181320875141,8.88488593673442,0.141373358145332,5.15981840978197,13.1344712646898 +"127",11.5306589685846,0.562836518744007,0.249966160627082,11.8261135460404,1.96115696382214,8.80785969755125,0.45060494444639,5.07545054098153,13.3593349821904 +"128",15.0286717097366,0.305103095248342,0.248722158139572,14.5050208984474,1.63667181818745,8.82162057802707,0.249090234183014,5.0878497150051,13.1702194459506 +"129",3.62599095487477,0.693654086906463,0.826910610077903,3.9840971462186,1.64114739470629,0.664945478875193,0.271467509995178,-2.86185442728347,5.24289257947418 +"130",11.9655639418966,0.335945603903383,0.588559790281579,10.8097380264364,1.74019907920462,3.13160187550166,0.332605283203761,0.0295168991688044,8.19540167913504 +"131",4.54850901081974,0.206109444377944,0.689006573520601,5.4156116883568,1.2064076228614,3.03371767250592,-0.139649672543402,0.224507538278963,7.91813736249803 +"132",5.21002469426818,0.919276255881414,0.934218391077593,7.27116841996101,0.501783037770287,0.00766637720423495,-0.326221325865849,-3.17756831421467,4.32948985668195 +"133",10.8243173721166,0.0228124498389661,0.671412567840889,10.3384643615193,0.14321218127411,3.19085232499221,-0.502473462659871,0.468018716752612,7.79882475085521 +"134",1.10200948383847,0.963759744539857,0.840596231399104,2.03665140182798,0.227212630716121,0.485891795242692,-0.429898406048996,-2.92161515210041,4.48176593861306 +"135",11.4013261007861,0.315865243552253,0.472115368815139,8.44601102722776,1.67459329804481,2.89228376498971,0.280598380383811,-0.392296502812339,7.72158137433394 +"136",4.18231613472072,0.665608417475596,0.546338079730049,9.46095265896809,1.7353658172588,2.85899090647145,0.319223187856843,-0.45072861214397,7.70177407247534 +"137",8.05510835905159,0.533543303376064,0.90352713316679,6.10549770071501,1.98890545562197,0.0528224483199729,0.472407875138575,-2.96393893890645,5.3417484329946 +"138",4.44169081984614,0.817796719493344,0.969267520820722,2.80615465116428,1.08331637919386,0.000119535212859179,-0.0214349252535394,-3.41444527442225,4.39739929708668 +"139",2.08529132785908,0.185263509862125,0.0870215415488929,6.3907665868345,1.09942909019544,2.65146356601602,-0.225527864995526,-0.16658714023421,7.44116449153273 +"140",11.1475163475674,0.399517551530153,0.597765780985355,10.8666863382026,1.90117412089356,3.18628208553969,0.444332944602727,0.147481612526283,8.42509405389148 +"141",2.7861019783759,0.178453260334209,0.939952106913552,2.07472599924968,1.06343540992362,0.00474438675210804,-0.252250066404976,-3.22860877961948,4.35242065073802 +"142",13.6881095743828,0.285434210672975,0.126566371880472,13.5970357084397,1.56256516526625,5.23908039075362,0.184631556302796,1.96011825285023,9.97802930591549 +"143",5.31741296198959,0.629469827050343,0.926261703018099,4.46868024445987,1.83682967381885,0.0138439680907987,0.373929012658608,-3.10783953125918,5.0993689781619 +"144",6.11495952698483,0.300100281601772,0.0245150162372738,8.55639281422205,1.61840426481419,0.114948270131787,0.233549998597184,-2.8105190084651,5.25631048689456 +"145",7.74137768871564,0.443673961563036,0.823366520227864,5.41364065690061,1.96876909094297,0.71629751316949,0.480819080842048,-2.83746760408892,5.47663097351561 +"146",3.34624228524107,0.730200940044597,0.820631313370541,3.30236990954456,1.49938690537335,0.757265140979666,0.200990399418338,-2.81572236395642,5.21854753222438 +"147",2.96534961203185,0.668163536582142,0.0955632287077606,6.17033249098786,1.72732911809592,3.19635231610587,0.315061546186712,0.284145861294429,8.43248690424361 +"148",8.19157942756263,0.311657001264393,0.0596761875785887,7.26853999010067,1.6599906978363,1.14862312236188,0.268587098443486,-1.50313619843394,6.59873039677201 +"149",8.6488380863824,0.478578082984313,0.608956641051918,8.55190545777144,1.99547256223515,3.24252520365169,0.489395213158231,0.282420388326986,8.60509509824768 +"150",10.6969390116775,0.291410150937736,0.358118778094649,11.9753458164291,1.58572500284194,5.62670823337117,0.205176851504398,2.35391170909561,10.3923680573625 +"151",14.2533401492178,0.182174213463441,0.212094453861937,16.5115672005491,1.08316285306962,8.79876647416693,-0.237746600222372,5.09030361758766,12.6858365141278 +"152",6.58979339672035,0.360762583091855,0.618435505079105,7.13597241997315,1.81168901028829,3.27847603033119,0.385334914436177,0.383356557386064,8.60197096858471 +"153",6.53607102012508,0.903800030937418,0.353117618011311,9.0431309623322,0.595282778407846,5.80550735431394,-0.283807682599684,2.51114406601438,10.0606158801772 +"154",8.56593417417295,0.394047617446631,0.844442341709509,5.19732618772515,1.8902239305916,0.441263053589911,0.437619324082108,-2.9303023711868,5.34059644965778 +"155",15.2737689196621,0.779880527406931,0.272385245654732,15.1551468649212,1.27542628966122,8.42371604188693,0.0854521486764344,4.7406087912599,12.6593404366988 +"156",5.43145610533808,0.284158946480602,0.962502768728882,4.28251879575274,1.55755127820775,0.000365129669804719,0.180136544779559,-3.39106461623576,4.62235142530627 +"157",2.61121151427066,0.853720766957849,0.00760855153203011,2.88314156925264,0.88708925359705,0.00408071337812991,-0.132583392029956,-3.19708693150915,4.50360917322336 +"158",8.28147378025705,0.172242468455806,0.496044375933707,6.99427372699582,1.03018518870647,2.75560543336061,-0.275903464871997,-0.565623805785619,6.99175222610485 +"159",8.75048134065555,0.0792641821317375,0.303963934537023,10.9026422964851,0.492900418224209,7.54175049482366,-0.505958629322393,3.99131902055102,11.3186398879911 +"160",11.0564308880546,0.292064977344126,0.099967755144462,11.2078166271679,1.58822896068526,3.48466184699652,0.20737655375115,0.520207853271719,8.56086390378534 +"161",13.3973803516144,0.840371177764609,0.141885310411453,14.232221021184,0.961462989841532,6.18398318265752,-0.0908276699054969,2.75771104767193,10.5001628745289 +"162",0.326869956383643,0.945268080569804,0.903049586340785,1.42606791665275,0.34219876075771,0.0540953469022428,-0.390521975298194,-2.96228776866584,4.48046975279843 +"163",8.12826219720991,0.0449652001261711,0.554629281163216,7.60046034441429,0.281585989503259,2.90833534562543,-0.515548132405514,-0.376674666517189,6.94105669783977 +"164",5.4595139137365,0.758382907602936,0.594052111497149,7.13991744589642,1.37648319194753,3.16497893029053,0.138622383578556,0.100334249275609,8.07223612961664 +"165",13.893864878667,0.296887998003513,0.185394271044061,15.8510044894815,1.60646371170786,8.1995696278457,0.223267393407552,4.55783569224712,12.6143825824171 +"166",2.08915952657456,0.651054438902065,0.883408362045884,3.77430843990287,1.77899548272853,0.128475938489171,0.342216729913258,-2.93261962655374,5.24287660012199 +"167",5.66666497840968,0.0849897842854261,0.468688981607556,5.15060890834275,0.527684187392306,2.92420754367395,-0.500367666207089,-0.354130957317424,6.97878087323796 +"168",3.04666032250377,0.975481075001881,0.959689968731254,3.16993043771862,0.153904647930889,0.000545694270617269,-0.451679986276266,-3.37686992735652,4.00472958312969 +"169",10.0511534416103,0.0136249314527959,0.944737322861329,6.27959216455776,0.0855818299598157,0.00304820125413386,-0.493223644787989,-3.26991478465147,4.07014106732301 +"170",12.6702503357949,0.538869451731443,0.314743722556159,10.4056809507583,1.9851071831509,7.18089618658806,0.469046105849371,3.68643205604863,11.9887576586605 +"171",14.4373546383548,0.965781801613048,0.114289686316624,11.3734306366335,0.214585425738929,4.4354588223243,-0.433840773586416,1.29677966236399,8.69621838554004 +"172",7.16735439519954,0.101073444122449,0.525504657998681,6.5861100111428,0.624445004029644,2.76603287257728,-0.477939402941023,-0.571189916886432,6.78415017693501 +"173",6.52685011943089,0.25675134267658,0.0482292044907808,7.93538417530203,1.44388864955276,0.684311820971795,0.0751063239466202,-1.99120483118816,5.91718098952093 +"174",4.93163094078534,0.895147221162915,0.772821844788268,7.28421915395359,0.646959621294471,1.61643039190016,-0.258980406417279,-1.95987487650635,5.61442421383884 +"175",5.05962355294375,0.387944190762937,0.527643352048472,7.38200161367967,1.87734683404011,2.77293861708998,0.429522355885178,-0.563342340405588,7.69945951224206 +"176",6.53449415592656,0.794285444775596,0.674511657562107,9.69545012353198,1.20442775245838,3.16794789687646,0.046791606726168,0.435972033681172,8.31604313716981 +"177",11.4786453657618,0.349396759876981,0.171516932779923,15.5674979293421,1.78028910299169,7.68725307593958,0.362715312208873,4.08713995250321,12.2831347614746 +"178",2.3091523517772,0.138744306750596,0.953361469553784,1.85066747472213,0.844413113364136,0.00121711844856771,-0.388994919282086,-3.33710861998887,4.10717595749151 +"179",12.5992516537477,0.650508983526379,0.170753609389067,11.9599739602034,1.78055889203007,7.65524071534082,0.343054185312439,4.05793622068072,12.2342699027556 +"180",6.22620891613972,0.544004307826981,0.659396967152134,6.71459904493879,1.98091912165929,3.26015343679889,0.465546161299171,0.546000342176968,8.84482600023861 +"181",4.36901379075179,0.945244047325104,0.807319219456986,2.61011589499358,0.342347538353665,0.97213015586613,-0.390467099734588,-2.66841547978755,4.77439691724034 +"182",7.42191369497547,0.57174574653618,0.163384499261156,10.5797286365228,1.94941140115977,7.32656870071277,0.442427085723668,3.76028708242595,12.0359936649121 +"183",6.37170117305054,0.953633589204401,0.562986994627863,7.48602414055685,0.290299602565009,2.96222527374666,-0.409055292132974,-0.288540937608602,7.13568326702089 +"184",7.94842561601129,0.780252998694777,0.412214461248368,8.44720956110706,1.27362274005704,3.92954529266579,0.0844842591027986,0.75319246204363,8.6709562179089 +"185",2.41185545359076,0.11828445433639,0.902525570942089,3.70017161427447,0.726216315289157,0.0555179369014958,-0.443152498574207,-2.96053895223334,4.42958804595492 +"186",8.71812869875712,0.837111808825284,0.455087962327525,8.60796246097465,0.97936984077061,3.08335316878082,-0.0806747618017936,-0.167941903638852,7.58466283132183 +"187",5.97892970420108,0.0871593176852912,0.139089935924858,8.81998720581041,0.540820386270328,6.01820786231399,-0.497927612877658,2.6160115632436,9.95136344712841 +"188",4.30592310037202,0.748599962564185,0.798090466298163,3.7454596995814,1.42042006547072,1.13439292669776,0.161160527811972,-2.52104625492308,5.47339376965136 +"189",8.26358127802459,0.0651816572062671,0.652757127070799,10.136228843188,0.406692195705059,3.28527548504198,-0.514671246137407,0.560205319733544,7.87881357035861 +"190",6.85569057187856,0.0776955692563206,0.477963302284479,7.57616883602097,0.483342586883615,2.84518360180612,-0.507279063198547,-0.449534830788217,6.87646560277571 +"191",4.62001211044272,0.105083768488839,0.489614740246907,5.48761255379662,0.64833276984391,2.77811965022388,-0.47079085561609,-0.534647752128714,6.82784088901767 +"192",5.40422970604856,0.406686355127022,0.91844050004147,4.34281772998051,1.91467474643983,0.0230908813698341,0.452370175341988,-3.04568089528164,5.23996877682282 +"193",8.98132042472625,0.97496451321058,0.104550529969856,7.7053699983863,0.157140473211627,3.78782360598003,-0.450775770053864,0.767654119975814,8.15015784668442 +"194",12.2384527455073,0.164833495859057,0.391365415183827,6.57289586550156,0.990008459571895,4.51673239182975,-0.303136010895734,1.33484345205443,8.86498693792116 +"195",11.5427692520761,0.503050235565752,0.17471737228334,10.8537234487563,1.99990817452504,7.81720604799617,0.486051415192036,4.20603413382003,12.5253650457745 +"196",15.7304683213593,0.201554203871638,0.216759763890877,14.4197968511661,1.18345679497451,8.85112281472613,-0.158828232733632,5.13319694854361,12.8076482125725 +"197",2.69095766660161,0.199721848359331,0.422036694828421,6.05056707020632,1.17415615448825,3.69046932007962,-0.166489634216466,0.504382095315542,8.17117195786155 +"198",1.97530240184256,0.178135111229494,0.984907931415364,2.64624420730127,1.06174189130067,1.99928450818809e-06,-0.25347891207616,-3.39321995995157,4.18658062473474 +"199",5.73374681651016,0.273866681847721,0.556566108483821,6.0750436823378,1.51617768079247,2.92052697255126,0.142452543921734,-0.357358449682531,7.61837359100167 +"200",6.82432256895498,0.1306202406995,0.179121345514432,9.83789030675655,0.797870840957214,7.98457724518093,-0.412035288484381,4.3598306389895,11.7810748472676 +"201",10.8074379627438,0.858691586414352,0.322833693120629,9.87503709813119,0.858989955865624,6.89821278397541,-0.148128195079056,3.44767934215794,11.1328306438414 +"202",5.46362107008324,0.645160361891612,0.044683248270303,3.55428825787334,1.79561164817481,0.564817499068695,0.351169653630295,-2.13135274536282,6.05309640502994 +"203",4.53318490548806,0.602798665873706,0.731687974883243,6.42759760606631,1.89660566206702,2.40892741716279,0.408742082474463,-0.806453120234473,7.43556845900246 +"204",4.58772409871542,0.971980711910874,0.492423130199313,4.5105979183097,0.175823114846668,2.76706374789028,-0.44545037537573,-0.549550130352234,6.83827899103451 +"205",14.1725310564882,0.376657233573496,0.235632494091988,15.834295668001,1.85171877423164,8.91188255652009,0.412818512474133,5.17303801546442,13.419136024701 +"206",8.72285353306887,0.819114487152547,0.126034506596625,7.60851002374118,1.07634714368671,5.20489775482967,-0.0254072135026907,1.93167160997748,9.73954389323726 +"207",10.3915970101457,0.226738759549335,0.279774357099086,10.6158024277055,1.30718407273612,8.24744739134144,-0.0514167728063648,4.58983869143039,12.3717014153865 +"208",0.87957356103756,0.206508502364159,0.921807960607111,2.79484893692627,1.20840650846888,0.0186660228420888,-0.137961501792496,-3.07130773255908,4.62401026241089 +"209",7.96896572430282,0.194289194187149,0.585632596397772,8.90511224634814,1.14635368121029,3.11306404783769,-0.188992387477943,-0.00844523409785983,7.63584187518667 +"210",12.929587623183,0.240568205481395,0.350823562359437,10.8400741866654,1.37169454948087,5.88807438938653,0.00769513712246455,2.58326377950425,10.4242384133892 +"211",5.02919781715535,0.979721972020343,0.893432515673339,5.022586026664,0.127324445139109,0.0848133998552822,-0.458902247840251,-2.93961744574377,4.43475980317845 +"212",14.4590892898578,0.524250150891021,0.275044727604836,12.3057985750046,1.99419879020799,8.3627821388182,0.477601319499593,4.68838227872661,12.9992630949887 +"213",14.2137121239123,0.826370720751584,0.221272713737562,13.0974251264342,1.03764410604689,8.88736928076497,-0.0474874546898129,5.16171749104071,12.9475095331134 +"214",12.3958031866074,0.670885495841503,0.301245874259621,11.0118680219912,1.71864522530054,7.62906376020643,0.310588649711286,4.06515237441442,12.2090205208882 +"215",6.73566510246716,0.977714836830273,0.887447157641873,5.42011697158716,0.13990745105069,0.109331519964973,-0.455529075197889,-2.93385676122078,4.4438936603438 +"216",9.08101831359865,0.0576484517659992,0.170867978129536,9.73509333705071,0.360239030910237,7.66006188733789,-0.516534046624789,4.0623321436327,11.3790775937704 +"217",12.3148056055373,0.336741157341748,0.126242727739736,12.9238805929127,1.74265733648833,5.21828872551759,0.334489413898475,1.94281264485916,10.1105815555201 +"218",7.13223414369336,0.0126070096157491,0.145286483457312,10.2420519641754,0.079191469947688,6.380938918842,-0.492071573097732,2.92719170009736,10.2683996237621 +"219",6.41075849320638,0.362856285646558,0.929243098711595,3.47016962791091,1.8172224250418,0.0111960955017092,0.389227723652498,-3.13350994217255,5.08899727824242 +"220",9.55103223699052,0.209694300312549,0.0527124027721584,9.22636333661413,1.2242958379397,0.852230261043079,-0.124444350372387,-1.80626020240226,5.90257494398782 +"221",5.8386379137539,0.152120635611936,0.0664937521796674,6.42693311027864,0.919832841244605,1.47745688235836,-0.347075464055508,-1.18959683628213,6.29660719642483 +"222",7.18901871095922,0.935812409734353,0.790176905458793,5.47679632782623,0.40057481186847,1.28054316551605,-0.368244929309371,-2.36724556102801,5.09778900642509 +"223",5.57387933995365,0.40109295793809,0.556372927967459,6.71931175619072,1.90422391485752,2.91930162827978,0.446172716433532,-0.359317394516294,7.92013481867971 +"224",12.3550717320897,0.485836445586756,0.257445320487022,12.6966959994063,1.99802042208597,8.7074369951596,0.489161994939105,4.9863743007274,13.308815792429 +"225",3.87687877982444,0.681486446177587,0.0598067208193243,4.68902312077722,1.68363303994669,1.15457300265338,0.292769818564488,-1.49728202298466,6.62876729234229 +"226",6.42869502211201,0.854035486467183,0.761961632408202,3.76747483298873,0.885316534272504,1.83142471343986,-0.133568391129214,-1.66961227463528,6.03009883099798 +"227",-1.13918576053869,0.912917171837762,0.985238047782332,1.58993165020225,0.540357677387787,1.75729912762741e-06,-0.309125627072593,-3.3914074158149,4.13274645387498 +"228",18.8322988713763,0.475857608020306,0.232479837723076,15.9701571477866,1.99425020795669,8.91799710457917,0.489311365012519,5.18043408266546,13.5030249444404 +"229",8.81647643769406,0.713680299697444,0.616073642158881,6.60328988693828,1.56603184808883,3.270663713188,0.234159450075965,0.359672909002709,8.42711185584115 +"230",5.8062295392422,0.829753480385989,0.82774131372571,3.24395686062539,1.01941575383214,0.65319745479785,-0.0578845427561793,-2.86698321283146,4.90841174117483 +"231",8.84594598394241,0.675797854550183,0.671669385163113,8.80916843747609,1.70265565373256,3.18903268172789,0.302412484125335,0.465554836245395,8.6012468171332 +"232",10.6776680116934,0.339701652759686,0.362262127455324,9.37010285416872,1.75170950891593,5.48015873664833,0.341385597209767,2.22386259003137,10.3985276840036 +"233",9.3717279082331,0.890829901676625,0.965483136475086,6.58180895158583,0.672567390294698,0.00022983152974154,-0.246329017519648,-3.40336462755103,4.18358585169179 +"234",6.52117574471329,0.528829259332269,0.85786680271849,5.94408039436927,1.99180271900758,0.305387911948684,0.475150886308581,-2.94149595264921,5.36693443042184 +"235",8.10148931936547,0.874337470624596,0.737517719622701,6.05751736791144,0.769211125034952,2.30304769716669,-0.196632993057873,-0.97266395428947,6.66398254941513 +"236",7.12501720883781,0.258656927850097,0.723582489416003,7.78386579871968,1.45214755761603,2.54962058915527,0.0828420155300557,-0.580696953386995,7.33542455890553 +"237",3.54104016479785,0.542446065926924,0.495109336683527,7.65710058096658,1.98224457814079,2.75826697781929,0.466634866091414,-0.561809889301307,7.73810447355258 +"238",5.03956946532766,0.216001205379143,0.0090853429865092,2.68076337351045,1.25538861835046,0.00684520572100872,-0.0975164011298739,-3.17086160641084,4.56490148922176 +"239",6.99742107447999,0.216720590135083,0.791309111984447,4.83687633212272,1.25890406975064,1.25929240820688,-0.0944343389094837,-2.39065155180472,5.34819360604827 +"240",10.1650844114559,0.474040792323649,0.0774376934859902,6.74250949323308,1.99335275184075,2.07402652826779,0.489202515268521,-0.656889163874119,7.66559284815687 +"241",4.28489871365194,0.892734028398991,0.559645003871992,5.45694350211064,0.661288216335102,2.9403063566687,-0.251929369225411,-0.325222586999913,7.25612754053715 +"242",7.84049237582303,0.301716960035264,0.697106800973415,10.7324401428901,1.62435143402318,2.93984649145967,0.238634729062914,0.0679267078934939,8.13984093371888 +"243",7.1734373095085,0.555218979716301,0.793073002481833,8.8040799853763,1.96998163055392,1.226399840127,0.457039581681751,-2.42621536442421,5.86410371402002 +"244",5.32696120831095,0.755216216668487,0.756172250024974,5.07810418917611,1.39084967648058,1.94569281380158,0.146026349880404,-1.50779290343045,6.47151294321243 +"245",6.91716640328169,0.956425424199551,0.65849306806922,8.70915194617363,0.2729328137397,3.2641191099443,-0.414980810558252,0.549073459540706,7.96737214574492 +"246",5.44079901899838,0.954311485867947,0.513834197074175,6.4791852088871,0.286084704904952,2.74168394536224,-0.410506319285199,-0.59485293997376,6.82792023750351 +"247",7.14307771464797,0.333364723483101,0.556701492983848,8.26659721679399,1.73214941421058,2.92138689669352,0.326402021896526,-0.355981411013795,7.8037001076452 +"248",5.70610230660257,0.516684105619788,0.900188666302711,6.5255747423841,1.99725333194724,0.0621989558434371,0.481174391815377,-2.95351554746011,5.36093834111774 +"249",9.90199057263109,0.148189591243863,0.458727905293927,7.36194093377736,0.897831049951195,3.03562205703395,-0.359880615359307,-0.223289286155917,7.25010959524724 +"250",4.27827087775049,0.356819598935544,0.998233716702089,3.26301155901195,1.80105554930515,5.95589112848e-12,0.377774218538031,-3.26552447997573,4.94552923532477 +"251",6.472824321144,0.704566315049306,0.758639414561912,7.56894900894284,1.60100393084033,1.89709311005718,0.251507540822785,-1.57721227524916,6.5075747623361 +"252",8.08057244464118,0.0804056408815086,0.366009632823989,8.18940214751478,0.49984801399267,5.34912725153394,-0.504941098566659,2.10660087018085,9.43493926837666 +"253",5.14061367254469,0.251560875913128,0.851000521797687,7.09026710440528,1.42113132073685,0.37102696901751,0.0537914383370045,-2.93891477769418,4.9481561574053 +"254",1.92544398805179,0.0514353215694427,0.712846649345011,4.95001546181278,0.321773079175641,2.72194446733634,-0.516679541840939,-0.297378031940311,7.01922192298122 +"255",8.40782260573999,0.738525302615017,0.519592084456235,11.1994655813435,1.4642644602621,2.75074568483983,0.183367475825336,-0.587275153420467,7.42937181916734 +"256",1.59884952075254,0.0137585073243827,0.0423618387430906,3.11855265334653,0.0864203356126549,0.493104367427008,-0.493372985182009,-2.22001254356646,5.119893968014 +"257",6.20596302846305,0.0423548372928053,0.96031067497097,6.73539667879503,0.265338682989319,0.000500727763105523,-0.514732783427805,-3.38020463215118,3.93834208118348 +"258",6.50561237786139,0.281820128671825,0.452528855297714,8.20708935569012,1.54829096453746,3.11918401062094,0.171790751076687,-0.12657985252594,7.87849039531322 +"259",5.57483796116179,0.0407166101504117,0.520820441655815,5.1365511800249,0.255132918190697,2.75344226741269,-0.51411810548524,-0.584618561861894,6.73454282941533 +"260",9.56301445362816,0.632280522491783,0.186955406796187,11.359977622908,1.82977148176593,8.24873619626202,0.369970489737104,4.60303485806876,12.8062848445683 +"261",3.37896227063795,0.754841333255172,0.0193997251335531,6.69549052194795,1.3925413437308,0.0600214988489152,0.146895900937449,-2.94675472013366,5.03342067756626 +"262",11.2330160325874,0.0509465073700994,0.192370351636782,11.509843660228,0.318741401003438,8.40572621069008,-0.51663914143435,4.74643851896405,12.0630788742922 +"263",12.6061546378687,0.629663853673264,0.355459752492607,10.0927476474301,1.83634703173424,5.72154478132995,0.373657452647653,2.43749578002697,10.6444327294371 +"264",15.0836129660705,0.357108945958316,0.288275173632428,16.1635257505863,1.80184527785969,8.01963000751201,0.378339301790944,4.39601862970506,12.6076374282585 +"265",2.48049263545751,0.808141406625509,0.954780137864873,3.46605036599236,1.1338060907639,0.00102788059067684,0.00724504382643922,-3.34686001220544,4.49366452838347 +"266",8.03067457672127,0.671664241468534,0.594576227013022,5.93069128367273,1.7161376367233,3.168052729271,0.309301507792227,0.107034703151562,8.24961570770626 +"267",6.73935473200106,0.0218871515244246,0.874991813441738,4.95045334563237,0.137412687727305,0.1756790793054,-0.501637821063214,-2.9345470049151,4.39709467078416 +"268",6.13006704536398,0.689538966864347,0.723769654985517,5.26389902165093,1.6557876316788,2.54646727272172,0.27877970205749,-0.585814834789614,7.52624436403035 +"269",9.34139147718244,0.887354608625174,0.458341122372076,9.18701253254345,0.693091099355307,3.04051425615968,-0.236027243576296,-0.21760191233687,7.3796503408493 +"270",8.15995320950429,0.537209264701232,0.636479692999274,6.51645759469446,1.98635079612157,3.30893615068879,0.470123542639561,0.521607868913853,8.82501090831588 +"271",12.3472646009314,0.885026358533651,0.303035995922983,10.4140356639189,0.706794761055944,7.57174584312406,-0.229069891232703,4.01667986632189,11.6208894718517 +"272",3.20085965764582,0.914174510864541,0.957928294083104,2.75458503427534,0.532747190781068,0.000691247917793388,-0.312544012665126,-3.36681848175339,4.15391700234395 +"273",7.87514728636197,0.848979947157204,0.936205095611513,5.66084514201858,0.913686949615122,0.00652871268880538,-0.117741309621664,-3.19532162854388,4.52021655859693 +"274",11.1796241165567,0.293509235838428,0.156131871277466,9.61709986805311,1.59372781266028,6.96990069302852,0.21219236453495,3.44206655505387,11.4875384163513 +"275",7.38820620245059,0.784186411648989,0.372258520917967,9.06108931047183,1.25447072643382,5.13446134811604,0.0741617792429998,1.91228898145548,9.81973025746096 +"276",8.68678546048597,0.493701990693808,0.825098739005625,8.10250256661586,1.99960853568997,0.690951213266945,0.488177355185186,-2.84990426699444,5.47155258495322 +"277",9.26725950564213,0.982573993271217,0.894503128482029,6.64263863571846,0.109436145864132,0.0808862210023331,-0.463554126875457,-2.94124450973865,4.42848086014837 +"278",7.21038670565318,0.243201080709696,0.014919285196811,7.05295130766498,1.3836864688088,0.028573419445755,0.0188329415627727,-3.05269160450866,4.79942083381658 +"279",9.68972359166115,0.0729995195288211,0.742581224767491,6.50364181744077,0.454659491445404,2.20843666531387,-0.510700218329055,-1.11834615242855,6.20423312600487 +"280",2.7748705837562,0.231656596530229,0.0647113677114248,4.2082336486962,1.33041346695367,1.38802823026449,-0.030314330407329,-1.27305224071158,6.52991292564356 +"281",10.1168855574145,0.279911691555753,0.536692324560136,7.47336870979724,1.54067274624838,2.80935838619472,0.16488299301476,-0.518520952523865,7.47964153725337 +"282",9.4560483107348,0.970960318809375,0.498718291521072,4.3254736208973,0.18220869664425,2.74911419904201,-0.443589556793924,-0.575248701263245,6.8144412387053 +"283",11.0411449288406,0.658995781559497,0.474551951512694,8.30170106208409,1.75564434973466,2.87153724521707,0.329822913203354,-0.417347208944345,7.74575520102148 +"284",14.5298084469058,0.670112134423107,0.268144310917705,12.2197325702919,1.72112529628376,8.5146882215885,0.311863600019614,4.81885848999269,12.9640015867748 +"285",11.3269868976982,0.209838527487591,0.201564811402932,11.0670936912564,1.22501228859216,8.62380779075567,-0.123830846980555,4.9406952691221,12.650143918904 +"286",0.222530958634096,0.990622452227399,0.773453313857317,3.19199738319178,0.0589123476788253,1.6039757294036,-0.475763143223457,-1.97606454506951,5.3814518084695 +"287",3.7282799595256,0.53408810053952,0.958072581328452,5.25363035975645,1.98854248980706,0.000678268061507344,0.472076702506604,-3.36767335656366,4.93768284270541 +"288",5.24190162641436,0.574372727656737,0.577234108000994,7.81816900433835,1.94565613492948,3.05787904752128,0.439884631303496,-0.116542987945313,8.15662114012065 +"289",11.541540366177,0.772239736514166,0.166751269018278,13.4046804451625,1.31203500357017,7.48108903359492,0.104948275209519,3.89970997553638,11.8379377475084 +"290",8.5070423653765,0.357089430792257,0.0817670363467187,7.95460697265631,1.80179206100625,2.329504694098,0.378301240749401,-0.437770694402286,7.77381004310959 +"291",6.23206438116776,0.256661231862381,0.714425090467557,6.37005408737076,1.44349682076259,2.69771964869145,0.0747392636606038,-0.337604341847598,7.57041441857548 +"292",8.23269497869425,0.316445876378566,0.145573613466695,9.20912525911611,1.67658517306868,6.39731583279522,0.282224808743312,2.94134164793593,11.0568459534417 +"293",8.32416981575189,0.744443612871692,0.326131327776238,10.3360188052407,1.43868323021077,6.7809078443354,0.170442123009243,3.34845603905424,11.352177658826 +"294",2.12291314729107,0.499665975570679,0.973094961140305,3.1302720681181,1.99999889882545,5.62003748775168e-05,0.486938481984836,-3.41989105409335,4.90032692465396 +"295",15.3600263758104,0.708809185307473,0.136128195794299,12.7606106604918,1.58488479307572,5.83900837630844,0.243511170420181,2.46375331450277,10.5405439816854 +"296",8.73711950018368,0.414896452100947,0.313534565735608,10.9244711325662,1.92894305623237,7.2223830864732,0.460536606184212,3.72146909706361,12.0152852000103 +"297",7.46108795809948,0.209911216050386,0.104810514487326,9.94631549978665,1.22537327480956,3.80508603374259,-0.123521602169258,0.781735032474336,8.49149292706755 +"298",6.55471175942686,0.0808626485522836,0.115289124427363,8.47526038571055,0.502627837144231,4.50172669788554,-0.504520251352286,1.35111910133183,8.67987834674201 +"299",4.02957526685521,0.159290118375793,0.984484651824459,4.62203064382356,0.959596349114719,2.34907888346997e-06,-0.322751197872463,-3.39545210043705,4.11507619845295 +"300",9.53277579679209,0.504089607624337,0.616871093399823,8.12513136570764,1.99983493421752,3.27339078636087,0.485752646087798,0.36778851959531,8.68682066244558 +"301",11.542534041277,0.835440672235563,0.633147458313033,10.6846093146396,0.988511299110681,3.30750987952256,-0.0754812305404021,0.502632274727595,8.26043054094966 +"302",14.4608417672839,0.487449982902035,0.258377277292311,16.7314227552739,1.9984457097571,8.69286976984052,0.489021291877959,4.97359354483064,13.2958943334711 +"303",6.70026971004241,0.432731891516596,0.7043740414083,9.25911504175948,1.95550601767579,2.84479329271969,0.474592158756963,-0.091884994743642,8.21598666077579 +"304",12.5568104719267,0.880691584665328,0.200170952128246,12.3621294074104,0.732207162269688,8.59467766254003,-0.216006726622601,4.91517127569242,12.5324440458323 +"305",2.73168599938694,0.764911714009941,0.831070266198367,3.99046818404331,1.34643526135726,0.607238745843816,0.123019712631393,-2.88542858886323,5.07087062053064 +"306",13.2645599223941,0.0548609865363687,0.23954917746596,10.3551021048998,0.342997726662006,8.89563460933786,-0.516751650956163,5.15653770257067,12.473065548377 +"307",9.54394320548957,0.199217760702595,0.922454906394705,7.73276404636173,1.17159067715478,0.0178959203129144,-0.168591389993599,-3.07644690685908,4.58824119990979 +"308",2.70050439926388,0.686824688687921,0.994719476671889,3.94889549661313,1.66529282385626,4.09070937468749e-09,0.283541508062765,-3.31068936766307,4.80613163716217 +"309",11.8812052557076,0.89925071503967,0.433975759893656,11.3016759265832,0.622509747740396,3.43530104147865,-0.270845845372482,0.229371708569794,7.79180535995978 +"310",6.94072161295675,0.045738689834252,0.462063670158386,4.29630553272924,0.286396722596249,2.99519573618147,-0.515750584492709,-0.270441696500946,7.04708721576881 +"311",6.23259848215608,0.0896180924028158,0.784722708631307,8.225884392865,0.555677493937109,1.38427372788695,-0.49494483277248,-2.24852506038126,5.08980960360873 +"312",2.16700291450075,0.440876809414476,0.849485129583627,3.72765408454448,1.9655993597548,0.386599364532103,0.479395473822704,-2.93753635207994,5.37513861850524 +"313",11.016370179835,0.777965647634119,0.265573306940496,11.2648493095108,1.28467074047118,8.56595749591678,0.0904021597726747,4.86314251307111,12.7868241696063 +"314",9.26462786481945,0.140085093677044,0.184626432834193,10.8428615070658,0.852042326931896,8.17474942059793,-0.385009938831674,4.53499306751149,11.9832626254423 +"315",3.80153478029074,0.678748692618683,0.977755479281768,6.62280518931047,1.69285556768796,1.89191300009103e-05,0.297434553776974,-3.41776051221573,4.71295353832372 +"316",8.76498835038717,0.0475980096962303,0.315603911876678,8.97265895589493,0.29795382293296,7.15124857434082,-0.516163194935848,3.6613955954706,10.9785118972972 +"317",8.92749709070548,0.605647755786777,0.930730486288667,6.55424834451734,1.89084846661384,0.0100310651580178,0.405270255901894,-3.1465663671431,5.09198338552126 +"318",7.96500953471343,0.45014444203116,0.460302937077358,7.91040351389034,1.97551845085091,3.0161403380213,0.483678627852441,-0.245975837833414,8.0709822867815 +"319",7.05208268426177,0.747780841076747,0.565429175272584,7.40086423902934,1.4240385773831,2.97846509293818,0.163003301516748,-0.260681268815337,7.73560152946388 +"320",4.30235663945495,0.177149523049593,0.75580653292127,4.72580541283348,1.05648884658104,1.95288111696478,-0.257274219206108,-1.49745237111403,6.07855290644233 +"321",8.65056519115086,0.65485711558722,0.771063379244879,9.9735384680668,1.76795117508193,1.65116169845594,0.336328627352713,-1.9143458219711,6.25526230214408 +"322",14.7048139220631,0.164108450291678,0.386776611208916,11.5639116293058,0.986047580654626,4.65896601352642,-0.305739801835251,1.47052055546265,8.99806025038987 +"323",20.5189874796727,0.26171372202225,0.222294196952134,16.6891656188729,1.46528704180864,8.89363539772071,0.0951396310506607,5.16645170256358,13.0948708303767 +"324",5.06817851911331,0.0950373853556812,0.0975954020395875,5.7462157206943,0.58830516134369,3.3289032636942,-0.487541093223971,0.392809401036763,7.73854780457526 +"325",2.48119280283383,0.394460162613541,0.928054177900776,3.957244236848,1.89106930205907,0.0122003183136223,0.438143427932233,-3.12318199497887,5.14824092971583 +"326",11.2157268575794,0.21321823168546,0.337013771524653,12.4440696309992,1.24172870833666,6.38859882066985,-0.109421510636378,3.01495686227369,10.7388148483998 +"327",7.14048691257929,0.640531400451437,0.0878528200555593,6.36811570970996,1.80822995464351,2.70343768063937,0.358049294208538,-0.123216956283674,8.06811183468733 +"328",10.4982609351169,0.257619656389579,0.113426668802276,13.2041028116113,1.44765840306116,4.3781692911241,0.0786375847630841,1.24984210926218,9.16175919078773 +"329",7.87218705445584,0.0946140429005027,0.111639449838549,5.90637202799481,0.585762382462738,4.25937662520525,-0.48816105562963,1.15262112236926,8.4977395635021 +"330",15.2843938236953,0.0703983413986862,0.240447912365198,11.1713092577127,0.438728716551512,8.8905806928503,-0.512257458104173,5.15163804667074,12.472660085329 +"331",4.73855442219677,0.188356303144246,0.924856626195833,2.42059912544313,1.11561000539805,0.0152473358721698,-0.213142424466796,-3.09604314734401,4.52409392495167 +"332",3.67770784239227,0.87313848733902,0.854288979200646,4.46597023637895,0.776159621811344,0.338588142783452,-0.192951311488243,-2.94083124023992,4.69949694503431 +"333",2.10717516648587,0.98110359441489,0.996416725683957,2.03011697295836,0.118659892783298,4.06969098180299e-10,-0.461176636230708,-3.28997266379868,4.08213019673309 +"334",11.1912731594065,0.390919700963423,0.573269640561193,11.4947658626437,1.8837111289444,3.03122727084691,0.433550385054397,-0.166366586251665,8.1004632955652 +"335",7.19261901868387,0.0178985111415386,0.917751843109727,5.94507704845664,0.112400409213839,0.024086125039065,-0.497787016448046,-3.0406976713101,4.29479480900433 +"336",0.67705801052742,0.0445446039084345,0.971780526917428,2.15509220897317,0.27896938409911,7.37179973840205e-05,-0.515430498886618,-3.41871426630419,3.89913473157166 +"337",2.55646633510642,0.107764253392816,0.864752684952691,3.02629374812329,0.66424211167465,0.247534794029359,-0.465680319454897,-2.93981715900817,4.4277820182994 +"338",9.48906261327111,0.570300949504599,0.373710860963911,9.78083716765727,1.95142015982445,5.08534085198668,0.443800174453274,1.86741189967839,10.1444915708941 +"339",8.28881657449457,0.839018759317696,0.392924327170476,8.24846184951609,0.968905470154243,4.46939804848487,-0.0866114736490088,1.28928500517763,9.03595302829109 +"340",10.7893906712738,0.815029826015234,0.302610285114497,10.1755378171189,1.0978889988868,7.58544284347045,-0.0131368005635263,4.02826180363411,11.8484044998331 +"341",1.6963359468318,0.861848484026268,0.875388256739825,3.3762892488831,0.841035289449185,0.173223531535946,-0.157978859085551,-2.93436630587618,4.74093433180074 +"342",4.14689981752418,0.853166818618774,0.919808819657192,3.08946466091853,0.890207368637173,0.0212062876830797,-0.130849497805724,-3.05585266344084,4.64657733551591 +"343",11.8290712858121,0.799504384864122,0.764340559253469,10.1882951383768,1.17808839127995,1.78430685178675,0.0321500133039288,-1.73488012752185,6.13054938254455 +"344",4.55107822733008,0.0197318226564676,0.954289121553302,4.0804024100254,0.123899311721726,0.00109050394761665,-0.499606708742526,-3.34353499335083,3.99013779466912 +"345",8.90918225279318,0.522671096259728,0.525734692113474,6.28610342396377,1.99492937854185,2.76674191232862,0.478396485633299,-0.57039709986884,7.74127888252693 +"346",-2.99209781772629,0.363511834526435,0.812384461518377,5.15835268156129,1.81893881439134,0.887487624882357,0.39042933035339,-2.73313475365665,5.49057407345921 +"347",12.3583899287022,0.62698481651023,0.472212609136477,10.6733720809027,1.8429507408737,2.89142482393211,0.377384520007013,-0.393329369111955,7.81733464765753 +"348",5.95216500366717,0.915917906211689,0.909895022865385,4.05936101667041,0.52218094919525,0.0378817392953617,-0.317253118727984,-2.99158275533727,4.52444362269722 +"349",6.2532527839311,0.182820469839498,0.883916945196688,3.85712618336687,1.08657411155479,0.125944614952093,-0.235203544371285,-2.93267871538795,4.66539723700323 +"350",3.99769160795537,0.448590318439528,0.78543156106025,5.13109132796412,1.97397172882372,1.37067521883066,0.483046534822376,-2.26448887463652,6.05183715694832 +"351",5.16868333165862,0.257141285808757,0.128273353679106,8.45530379460297,1.44558290478716,5.34827419715244,0.0766934423421626,2.05115436190663,9.96112730101127 +"352",11.3539344135632,0.594118564389646,0.289729104842991,12.0781801064986,1.9132071594925,7.97825326826469,0.418936364530937,4.36090071441785,12.6131165757113 +"353",6.10323527474453,0.396485476987436,0.856526208575815,4.44474369981153,1.8951733942534,0.317573625898808,0.440674260411422,-2.94140009658805,5.33255366058584 +"354",13.1525210817664,0.873604407999665,0.336089336080477,14.2301021331575,0.773460763340278,6.42211913909141,-0.194382888574732,3.0435853547853,10.682481962973 +"355",10.1481128350808,0.174981040414423,0.520393417216837,11.1033612547998,1.04489555546337,2.75247546350466,-0.265562315522801,-0.585583159416735,6.98213402182293 +"356",10.0707639831157,0.809510399354622,0.181294560898095,11.4580848297116,1.12670973283162,8.06220139351525,0.00322821857911707,4.43132077075027,12.2678284860919 +"357",8.97057793320988,0.794222777010873,0.790394956246018,5.56336468497716,1.20474207597796,1.27644239114434,0.0469653821112755,-2.37178780038999,5.50845707848375 +"358",5.13059582801211,0.604884260566905,0.563907021889463,5.9249940043965,1.89240614930097,2.96832464793104,0.406206634982338,-0.278143846503855,7.96134228524095 +"359",2.85431850570938,0.0521602521184832,0.910183421568945,5.06548493120066,0.326267777042636,0.0372898094740192,-0.516725687584048,-2.99309918574284,4.32345462343558 +"360",10.0474131916676,0.691322281723842,0.923455620184541,8.83550002093998,1.64947702163543,0.0167528065445691,0.275624830032734,-3.08451734844576,5.02438697834944 +"361",13.8188887475339,0.151410281192511,0.290930409217253,10.8114352837385,0.915867322566933,7.94357268495259,-0.349418075576005,4.33148132936913,11.8153427505556 +"362",9.07366725683079,0.200573988491669,0.437914396636188,7.04254670946449,1.1784862921423,3.35993054485642,-0.162930807756803,0.146072165578875,7.81642085458454 +"363",7.08368270204269,0.103487114887685,0.736869905376807,4.53798760562394,0.638834313969767,2.31498451984535,-0.473709108858096,-0.954090466531904,6.40547992137247 +"364",4.14852869979833,0.012661857996136,0.94318240811117,6.39272188991572,0.0795358210487005,0.00353573661059901,-0.492134279585221,-3.25670870974633,4.08443650743092 +"365",9.03094416481812,0.652539103291929,0.372655788203701,9.94290167735445,1.77471362244393,5.12099440784944,0.33992817405249,1.90000140994179,10.0732090807567 +"366",7.06883748067444,0.242039749631658,0.0196202660445124,4.84682786832394,1.37840859126441,0.0619523702674271,0.0139265902547422,-2.9412116538909,4.90599443312632 +"367",3.41631725252482,0.12893533706665,0.801264123991132,3.47302183784076,0.788152053555392,1.077505847357,-0.41656817434859,-2.57587283795151,4.84083848446237 +"368",3.73212320453537,0.0583229728508741,0.00805668556131423,2.91979425873501,0.364407044012538,0.00482322797116981,-0.516443619505929,-3.18928979417868,4.12754608307786 +"369",9.0446792531361,0.706828978611156,0.506798200309277,10.4542573147313,1.5924430370064,2.73920163479908,0.247260179012749,-0.592975713855334,7.48756396191989 +"370",6.42608920331631,0.0305523870047182,0.103799587115645,7.14673610599508,0.191671688094093,3.73799276194507,-0.508585260527664,0.72700537816044,8.05169961439525 +"371",7.47148146766214,0.880324190948159,0.372392780147493,6.98661343819704,0.734354813955167,5.12990754440694,-0.214893443147804,1.90813531827761,9.52652137189228 +"372",5.91644821822456,0.0163111232686788,0.797900030622259,2.68295630983188,0.10244096414375,1.1378401039845,-0.496144051685501,-2.51762550883321,4.81950993624376 +"373",12.8787113505281,0.51006367104128,0.187864230014384,13.0957856694255,1.99900051464739,8.27655601358158,0.483799224851068,4.62856877172451,12.945647493338 +"374",6.65999818282765,0.644336043624207,0.707357286475599,6.80171915520363,1.79788656401295,2.80296045007815,0.352404643133802,-0.162091971759404,8.02359216813687 +"375",8.18094130999271,0.696770017966628,0.370172306196764,9.49251078305828,1.62987933460597,5.20554971894659,0.265854188741919,1.97695594228514,10.0760896277895 +"376",10.7948002641182,0.65793322189711,0.352191052399576,8.95147554901468,1.75883240132155,5.83882026747036,0.331502750728794,2.5402772277424,10.7050594752337 +"377",9.10070137198408,0.256520541151986,0.495802453253418,10.5107145864981,1.44288482414954,2.75627441871513,0.0741659475039619,-0.564659390547165,7.34278605371927 +"378",13.077059128373,0.997772415168583,0.316260900115594,11.334371066422,0.0139962140401328,7.12853230760339,-0.485428354525846,3.64221347810444,10.9900646203411 +"379",7.31720786869268,0.692743511404842,0.924121809890494,6.57893993480074,1.64441063953705,0.0160233953675375,0.273095324563216,-3.08996649486964,5.01640832645605 +"380",4.14553841390247,0.050650333520025,0.407308240653947,6.46833798244935,0.31690413281956,4.05835588250739,-0.516611035649378,0.884112068503304,8.2007805296164 +"381",8.32318567748431,0.101665382971987,0.225301343249157,12.6799060793339,0.627977254156651,8.90798431540568,-0.476922300090175,5.17678850651178,12.5331457031841 +"382",11.6756987683142,0.480166190303862,0.157511479454115,11.2143768971667,1.99611875094223,7.04016900102137,0.489400655289477,3.50436356194584,11.8270437139978 +"383",9.80250157892355,0.469402798917145,0.690121093066409,11.1818063327483,1.99076730006703,3.02158349185024,0.488730296931828,0.204447710518312,8.52645750421261 +"384",10.038256935945,0.26619590446353,0.408082694979385,9.13836495800216,1.48430881405787,4.03762029330971,0.112901152295095,0.863175151548687,8.80935580060626 +"385",16.7105577697823,0.0892610601149499,0.192707575159147,14.8436668046374,0.553522168635201,8.41480440519495,-0.495392394394994,4.75466039273355,12.092547495101 +"386",1.66428590292769,0.611460734857246,0.813842216739431,3.89049735988072,1.87863277503279,0.863763864813255,0.397998628591906,-2.74970858126348,5.4815695440909 +"387",9.85936743040148,0.394997322699055,0.455590084893629,10.0051608460246,1.89216526865649,3.07654334933646,0.438821481707866,-0.175820512673775,8.09628046579656 +"388",4.59240497619319,0.539619093062356,0.806352156447247,4.11768905422987,1.9845279430074,0.988664791891066,0.468550885257808,-2.65474706470892,5.64708331731135 +"389",9.08033949289069,0.861605958081782,0.579053814290091,6.39009971718011,0.842417597269501,3.07002284892736,-0.157222895324708,-0.0933431801013843,7.58271342133638 +"390",4.39891903743915,0.752407587366179,0.970640147803351,2.83720196433787,1.40347658289949,9.22983555974524e-05,0.152505623225775,-3.41709820169755,4.5686869182907 +"391",7.76090244771684,0.758213603869081,0.0499366230797023,5.67803757389467,1.37725474036515,0.746076366821831,0.139020903798343,-1.92176231917206,6.05053808138875 +"392",14.7597132904136,0.923896053107455,0.247958487831056,13.9051981612286,0.473632558589555,8.82963897169049,-0.33832855877902,5.09510746436654,12.59005840235 +"393",3.23626506699794,0.328969847410917,0.784063768573105,4.4983137376703,1.71818020292517,1.3969432853694,0.31551644745982,-2.23354890675938,5.91524703746291 +"394",3.13757948066646,0.156375913182274,0.570472833700478,5.32353590208016,0.943491119407611,3.01235870732311,-0.332785101530236,-0.200752607386964,7.29974178784527 +"395",10.6479686896438,0.215196318458766,0.439226890914142,10.287771317249,1.25144773978732,3.33579890875881,-0.100962685736203,0.119192859627258,7.85150967065353 +"396",4.52433799093305,0.112823529634625,0.548878187779337,5.11642453061976,0.694140908466676,2.87355309963357,-0.455328588185517,-0.429559314302916,6.94839159427404 +"397",6.75206990082609,0.195784424664453,0.0590249181259423,5.53334624690233,1.15403941067906,1.11914771196659,-0.182832972774027,-1.53225328771972,6.11819323626873 +"398",6.81152672037255,0.857661027694121,0.429245780454949,8.45848009643978,0.864832989903012,3.53163058776979,-0.144908203141127,0.334427477860584,8.02279877148193 +"399",13.874912682093,0.22770716319792,0.142380580073223,12.688615108893,1.3117831727608,6.21299568220015,-0.0472576520888378,2.7825976145943,10.5686194592679 +"400",9.80836313459695,0.767020934959874,0.093200899893418,8.57815770718647,1.33660619337118,3.04348520440322,0.117879721834851,0.158447553942182,8.1096067725395 diff --git a/statsmodels/gam/tests/results/gam_PIRLS_results.csv b/statsmodels/gam/tests/results/gam_PIRLS_results.csv new file mode 100644 index 0000000..f4a83c9 --- /dev/null +++ b/statsmodels/gam/tests/results/gam_PIRLS_results.csv @@ -0,0 +1,101 @@ +"","x","y","spl_x.1","spl_x.2","spl_x.3","spl_x.4","spl_x.5","spl_x.6","y_est_spl_x" +"1",0.793394400272518,-0.103439256447113,1,0.793394400272518,-0.00103215059520571,-0.00103425422055772,0.000324619225117226,0.00139167298206486,-0.117190380706134 +"2",-0.4689826737158,-0.360765296205963,1,-0.4689826737158,0.000771636359864357,-0.0148370956229878,-0.014523576769994,-0.0020396684708808,-0.314568153154053 +"3",-0.25575220072642,0.161998730889208,1,-0.25575220072642,-0.000361601825820788,-0.00967792183157166,-0.00818952235322178,0.00205757900341747,-0.0880456875656283 +"4",0.145706726703793,-0.0976709425261999,1,0.145706726703793,0.00134935779815461,-0.000882887261049003,-0.00194542709447698,-0.00067260788849897,-0.081779030041705 +"5",0.816415579989552,-0.127853078474422,1,0.816415579989552,-0.000912609425791651,-0.00137949633333962,-0.000117067294388089,0.00140600233097937,-0.0976626874038646 +"6",-0.596636137925088,-0.543347907710341,1,-0.596636137925088,0.00216075684032479,-0.0191316666637297,-0.0214381561909154,-0.00953180084463294,-0.575877934017772 +"7",0.796779369935393,-0.0671917842286813,1,0.796779369935393,-0.00101589514888143,-0.00108502444361123,0.000260982847291931,0.00139636725095289,-0.114193662444759 +"8",0.889350537210703,-0.104779920790591,1,0.889350537210703,-0.000408121495381089,-0.00246435822069889,-0.00162431968397878,0.00122679841246487,-0.0477184024356014 +"9",0.321595584973693,-0.292553135853709,1,0.321595584973693,0.000827697009590294,0.00211560512090516,0.000651527501844171,-0.00129141281012924,-0.00858352914665586 +"10",0.258228087797761,-0.17582408423776,1,0.258228087797761,0.00122212443272284,0.00122817333603578,-0.000263681380113434,-0.00122051883436016,-0.0384501067434995 +"11",-0.876427459064871,-1.40545812315742,1,-0.876427459064871,0.00412558237066236,-0.0370041210327639,-0.0524328987519666,-0.0491721704594647,-1.43457532968313 +"12",-0.588050850201398,-0.550258570286632,1,-0.588050850201398,0.00206067770918509,-0.0187931432279532,-0.0208670770935913,-0.0088655306893404,-0.555347076126121 +"13",-0.646886494942009,-0.783224558888972,1,-0.646886494942009,0.00274165411373043,-0.0212984466483001,-0.0251466048650558,-0.0139779124960727,-0.70415856486293 +"14",0.374045693315566,-0.0991599123662977,1,0.374045693315566,0.000415392807033041,0.00259918803092034,0.00135124916897315,-0.00121475411935643,-0.00477528367563806 +"15",-0.231792563572526,-0.147678366179563,1,-0.231792563572526,-0.000365612584785316,-0.00915608369411398,-0.00771686661103536,0.00209769815587036,-0.0773889003329878 +"16",0.539682839997113,-0.109844508347252,1,0.539682839997113,-0.000843616117221091,0.00228607998896216,0.00275394211280232,-0.000292222335324111,-0.174087079527625 +"17",-0.00460151582956314,-0.142531110853436,1,-0.00460151582956314,0.000570861919344926,-0.00416943224833664,-0.00413262336944202,0.00064447642939228,-0.0702839919841123 +"18",0.435237016528845,-0.0703896515699115,1,0.435237016528845,-9.15184440299758e-05,0.00279161864587245,0.0020506804117739,-0.000980091428848491,-0.043875872883637 +"19",0.983812189660966,0.00917330301731541,1,0.983812189660966,0.00044372706913843,-0.00383457354732662,-0.00370521246254954,0.0007023078407574,-0.00091365494851299 +"20",-0.239929641131312,-0.064849260077647,1,-0.239929641131312,-0.000367040080699133,-0.00933297585718042,-0.00787393357984356,0.00209064962226095,-0.08071868119618 +"21",0.554890442639589,-0.135135108401181,1,0.554890442639589,-0.000928936578781481,0.00214748525406973,0.00278411953293097,-0.000171495898234151,-0.190951902420298 +"22",0.869410462211818,-0.0729754706302979,1,0.869410462211818,-0.000563132024712828,-0.00216988396170081,-0.00119940183663305,0.00130359804818499,-0.0597928888432044 +"23",-0.575714957434684,-0.587168125514028,1,-0.575714957434684,0.00191737613220674,-0.0183213767043855,-0.0200763038958786,-0.00795312510175011,-0.526574702871697 +"24",0.303347532171756,-0.0760226449432968,1,0.303347532171756,0.00095665617660904,0.00189004436563126,0.000393729327363935,-0.00128947955898483,-0.0153833125688738 +"25",-0.748889808077365,-0.914426697598691,1,-0.748889808077365,0.00375154082936351,-0.0268975068647393,-0.0349065324983187,-0.0262666545359936,-1.00357031823378 +"26",-0.465558662544936,-0.207555409036773,1,-0.465558662544936,0.00073940360642418,-0.0147397833604799,-0.0143788957596388,-0.0019024028914121,-0.308881531813178 +"27",-0.227771814912558,-0.0493196532749243,1,-0.227771814912558,-0.00036386200890473,-0.00906877110357801,-0.00764048997368325,0.00209880686147911,-0.0758506222398328 +"28",-0.973219333682209,-1.88072163737797,1,-0.973219333682209,0.0031464543242893,-0.047818068551577,-0.0707586607524036,-0.0734610769476482,-1.78329795855974 +"29",-0.235224085859954,-0.159552243100788,1,-0.235224085859954,-0.000366561164717213,-0.00923064773305327,-0.00778268957408375,0.00209552062531171,-0.0787574989997661 +"30",0.73938169144094,-0.286234818540117,1,0.73938169144094,-0.00122645011530028,-0.000228333756897168,0.00126655633122764,0.00121039814456934,-0.16739874823214 +"31",-0.319302006624639,-0.21421676774371,1,-0.319302006624639,-0.000227650998094869,-0.0110882845641555,-0.00961900330455814,0.00162577672770012,-0.129641386189863 +"32",-0.0358397690579295,0.124077785808101,1,-0.0358397690579295,0.000375247839167075,-0.00486638965878548,-0.00458120603268107,0.000944080565016891,-0.0652178638798844 +"33",0.199131650850177,0.0454570540755436,1,0.199131650850177,0.00140083824247975,0.000183486318262825,-0.00114635855969168,-0.000995643184582346,-0.0684572995896104 +"34",-0.0129173859022558,-0.0221205769141588,1,-0.0129173859022558,0.000518296498220789,-0.00435512018889087,-0.00425185294768173,0.000724759134630175,-0.068894137824438 +"35",-0.627564797177911,-0.683477200655312,1,-0.627564797177911,0.00252051803375182,-0.0204258053097824,-0.0236439068543802,-0.0121543049774647,-0.65322171082347 +"36",0.654746637213975,-0.189905764670634,1,0.654746637213975,-0.00127176664448856,0.000975842029958382,0.00236606356649559,0.000647643362471139,-0.226330811730645 +"37",0.336933476384729,0.0244246109946,1,0.336933476384729,0.00071235321668398,0.00228369040702985,0.000863225676364958,-0.00128150800978893,-0.0047180753371828 +"38",0.588479721453041,-0.170090724963637,1,0.588479721453041,-0.00108846419179005,0.00179833839938335,0.00276773802292355,0.00010407339160438,-0.219400454240484 +"39",-0.784112748224288,-0.971329158215319,1,-0.784112748224288,0.00398805723188173,-0.029294354673643,-0.0390913939551181,-0.0316759625983379,-1.1174142431115 +"40",0.447421892080456,-0.0459511551955996,1,0.447421892080456,-0.000190060950736172,0.00278095973835033,0.00216940243547843,-0.000916464465528477,-0.0570713586725403 +"41",-0.177451140712947,0.092854580388672,1,-0.177451140712947,-0.00028578473504339,-0.00797792773736204,-0.00674457669590331,0.00199465926362925,-0.0622040527017584 +"42",0.641892588231713,-0.234875809573866,1,0.641892588231713,-0.00125074269347698,0.00114636774369862,0.00248042625924829,0.000545300517703114,-0.229829757537174 +"43",0.29412038763985,-0.0602262921629653,1,0.29412038763985,0.00101774550989541,0.00176615563349796,0.000261306341140729,-0.00128280248678744,-0.0195392972476684 +"44",0.56586552457884,-0.227098677552617,1,0.56586552457884,-0.000985589778815873,0.00203955378780485,0.00279184111564092,-8.25219182671179e-05,-0.201760710788245 +"45",0.106072623282671,0.0495679659141707,1,0.106072623282671,0.00120684524622787,-0.00172287725914365,-0.00253167605663262,-0.000370970159977645,-0.083679709938642 +"46",0.0594391603954136,0.0086487497136965,1,0.0594391603954136,0.00096542795607365,-0.00274321216515791,-0.00321172546921274,3.54013270724883e-05,-0.0801558043915433 +"47",0.578712463378906,-0.169310002608791,1,0.578712463378906,-0.00104638518185775,0.00190546718771546,0.00278499341191665,2.30776372740917e-05,-0.212630236411703 +"48",-0.953337595332414,-1.62969705480577,1,-0.953337595332414,0.00346715330726034,-0.0453343590259988,-0.0665891024046133,-0.0679237775912425,-1.71125200170991 +"49",-0.0455398699268699,0.0207336351023194,1,-0.0455398699268699,0.000316123827121599,-0.00508232889884811,-0.00472115807990627,0.00103531732453216,-0.063781433919067 +"50",0.4646274773404,-0.0159211274446845,1,0.4646274773404,-0.000325792668341277,0.00274146541957896,0.0023228963001503,-0.000818057409332407,-0.0776273283570729 +"51",0.385463112965226,-0.01312308542265,1,0.385463112965226,0.000320985267061291,0.00266760628432907,0.00149299496641283,-0.00118235949228037,-0.00808752157228426 +"52",-0.0447607557289302,-0.0797708667343499,1,-0.0447607557289302,0.000320831924213327,-0.00506499614426507,-0.00470989940858247,0.00102803608542968,-0.0638933391217859 +"53",0.722418953664601,-0.206465525603793,1,0.722418953664601,-0.00126125584319228,2.10904999602401e-05,0.00152880676841304,0.00111906896754403,-0.182561772720297 +"54",-0.123805785551667,-0.0125675215557291,1,-0.123805785551667,-9.90086633391332e-05,-0.00680982387550459,-0.00588263356776337,0.0016921159754712,-0.0575863544700233 +"55",-0.510405445937067,-0.506519918044833,1,-0.510405445937067,0.0011880049814671,-0.0160774028549442,-0.0164264133221993,-0.00394226998779457,-0.388881024258178 +"56",-0.858641905710101,-1.31264146054036,1,-0.858641905710101,0.00416592875082228,-0.0353405889568238,-0.0495730342607608,-0.0454005424066696,-1.37178053846414 +"57",-0.801067679654807,-1.28383705257632,1,-0.801067679654807,0.00407124757943199,-0.0305475913620432,-0.0412741393251364,-0.0345169377470859,-1.1738129916191 +"58",-0.3674565856345,-0.0220951957883863,1,-0.3674565856345,-6.09472777490403e-06,-0.0122059195582174,-0.0109201196667653,0.000911652261505469,-0.175221549809339 +"59",0.0372685263864696,-0.0514068387982451,1,0.0372685263864696,0.000833365425611206,-0.00323527935683714,-0.00353170210589408,0.00024224538953213,-0.0771056023299588 +"60",0.324010152835399,0.0968625631535521,1,0.324010152835399,0.000809919373606216,0.00214341380799429,0.000685179969055814,-0.00129054964858238,-0.00785154433554897 +"61",-0.186339625623077,-0.0824446142917552,1,-0.186339625623077,-0.00030687786213962,-0.00817065085431442,-0.0068956061648687,0.00202753920121293,-0.0638991232567546 +"62",0.825751848518848,-0.216042593704842,1,0.825751848518848,-0.000858280553063576,-0.00151934475959365,-0.000301712723155476,0.00140063034440172,-0.0903078546709018 +"63",-0.412793254479766,-0.238199241005914,1,-0.412793254479766,0.000292790115133695,-0.0133232105172325,-0.0123655063754176,-0.000136443495259783,-0.230019057808337 +"64",-0.0818685474805534,-0.00450364598038476,1,-0.0818685474805534,0.000107063438808786,-0.00588779067382435,-0.00525113298025754,0.0013620881396648,-0.0594652932119096 +"65",-0.335210651624948,-0.31805079394357,1,-0.335210651624948,-0.000165773699240686,-0.0114513554832783,-0.0100252149616506,0.00143096265264304,-0.143302433394229 +"66",0.30174093414098,0.0418002802276831,1,0.30174093414098,0.000967507750540467,0.00186893177945798,0.000370763815033235,-0.00128859242898053,-0.016076614745273 +"67",-0.483966438565403,-0.459539743848081,1,-0.483966438565403,0.000916834611155345,-0.0152718390636639,-0.0151786515462467,-0.00267533434511646,-0.340272750418159 +"68",-0.0429095034487545,0.031641489439312,1,-0.0429095034487545,0.000332048860421634,-0.0050238033971368,-0.00468316090525846,0.00101070030846662,-0.0641617973314143 +"69",0.532621341291815,-0.0831089685952327,1,0.532621341291815,-0.000801437538914628,0.00234580000907889,0.00273262756290511,-0.000347053031666997,-0.165655344395664 +"70",-0.831506171263754,-1.25250269824033,1,-0.831506171263754,0.00416084061279908,-0.0329734400028143,-0.0454849058414309,-0.0400256062731608,-1.27734800358453 +"71",0.750642660073936,-0.15238318728363,1,0.750642660073936,-0.00119630701445136,-0.000395224547215449,0.00108280714787011,0.00126296964069926,-0.156938755640129 +"72",-0.321854124311358,-0.11716254473005,1,-0.321854124311358,-0.000218485777657273,-0.0111461815542523,-0.00968271168070803,0.00159709084848461,-0.13174201937032 +"73",0.678880700375885,-0.254866414532634,1,0.678880700375885,-0.00129155226379799,0.000644875828340615,0.00211006179316004,0.000831185594575581,-0.214913605728958 +"74",-0.306633021682501,-0.203175936688767,1,-0.306633021682501,-0.000268822090861167,-0.0108026439366529,-0.00931060659539795,0.00175422575944368,-0.119720423444416 +"75",-0.332450138404965,-0.258643026229375,1,-0.332450138404965,-0.000177319740613072,-0.0113879692241572,-0.00995314871931554,0.00146754066667227,-0.140834619146779 +"76",-0.0472975098527968,0.155666306827773,1,-0.0472975098527968,0.000305530942292407,-0.00512142278549686,-0.00474656961015234,0.0010517103895036,-0.0635313995294743 +"77",0.784396671690047,0.0171258615942928,1,0.784396671690047,-0.0010730865201323,-0.000899349192568567,0.000491401548702581,0.00137497221827669,-0.125327238327847 +"78",0.728678941261023,-0.117799610502858,1,0.728678941261023,-0.00124990305471348,-7.06420269992437e-05,0.00143414872755803,0.00115436546574151,-0.177074528133768 +"79",-0.220020913053304,-0.18235035900194,1,-0.220020913053304,-0.000358557725128344,-0.00890059356278133,-0.00749546082048836,0.00209667319732415,-0.0730811555870012 +"80",0.554641397669911,-0.137376719771016,1,0.554641397669911,-0.000927602121706871,0.00214985988753093,0.00278380441210068,-0.000173498678062706,-0.190692219020855 +"81",0.921235994435847,0.0843221261995921,1,0.921235994435847,-0.000138557318356172,-0.00293117564022863,-0.00231735138446086,0.00107280340443389,-0.0303529945520009 +"82",-0.130681030452251,-0.0668790696057744,1,-0.130681030452251,-0.000128212807795061,-0.00696016627645638,-0.00598910834759699,0.00173951273516509,-0.0576903223512326 +"83",0.425029357429594,-0.0240767767678492,1,0.425029357429594,-7.81032571576597e-06,0.00278880984310056,0.00194534610389149,-0.00102930733588355,-0.0339333829216321 +"84",-0.200011262204498,-0.145406112660533,1,-0.200011262204498,-0.000333352101137395,-0.00846691068109748,-0.00713353230148295,0.00206669294007022,-0.0670847501878113 +"85",-0.349295696243644,-0.0956869025039284,1,-0.349295696243644,-0.000101614383281653,-0.0117775684853847,-0.0104037592109737,0.00122544787000226,-0.156539064167153 +"86",0.514174296054989,-0.224024181239802,1,0.514174296054989,-0.000684115445329171,0.00248677490953636,0.00265648675988982,-0.000485865151712533,-0.142359596741397 +"87",-0.594615489710122,-0.686975046530618,1,-0.594615489710122,0.00213718848390229,-0.019051218020993,-0.0213021861061787,-0.00937263968933575,-0.57100859321405 +"88",0.422242444939911,-0.198696821318199,1,0.422242444939911,1.5186290264752e-05,0.00278611217892118,0.00191570693621617,-0.00104207677156846,-0.0314193530773043 +"89",-0.756616157945246,-1.09258484445617,1,-0.756616157945246,0.00381004070568126,-0.0274004360422326,-0.0357854583327939,-0.0273979554295646,-1.02813466981214 +"90",-0.509022972080857,-0.482062539050234,1,-0.509022972080857,0.00117339695742415,-0.0160339734190321,-0.0163581257988811,-0.00387124395876978,-0.386236644182944 +"91",-0.713391241151839,-0.797863541521345,1,-0.713391241151839,0.00344311278558543,-0.0247399507093508,-0.0311349577499762,-0.0214490382655055,-0.893911740824496 +"92",-0.52074116980657,-0.405530306917023,1,-0.52074116980657,0.00129856440267103,-0.0164069641246748,-0.0169480379099964,-0.00449058631174609,-0.409009081829485 +"93",-0.882131245452911,-1.49696592020682,1,-0.882131245452911,0.00410468283045139,-0.0375572607815857,-0.0533813878360864,-0.0504247482966737,-1.45484205939198 +"94",0.284576517064124,-0.166588012710247,1,0.284576517064124,0.00107757996161468,0.00163150849266357,0.000123099224599593,-0.00127186764982371,-0.0242265591855056 +"95",0.752538425382227,-0.241733869065439,1,0.752538425382227,-0.00119068541070752,-0.000423403006107356,0.0010511608712751,0.00127113229008767,-0.155159938596974 +"96",0.557829354889691,-0.214370845140615,1,0.557829354889691,-0.000944522054550624,0.002119208749705,0.00278737502019266,-0.00014780408018927,-0.19397014396412 +"97",0.594617651775479,-0.255303104512693,1,0.594617651775479,-0.00111302129677805,0.00172887350462622,0.0027513433885823,0.000155154859403823,-0.222916272211593 +"98",-0.0894510927610099,-0.053534664395958,1,-0.0894510927610099,6.65958840633273e-05,-0.00605514635809549,-0.0053633957073234,0.00142623909429152,-0.0588403331851999 +"99",-0.179831835906953,0.00901847852351005,1,-0.179831835906953,-0.00029172824835678,-0.00802955994673962,-0.00678476091668893,0.00200401415453968,-0.0626297991449589 +"100",0.621740485541523,-0.264269531971665,1,0.621740485541523,-0.00120343352074614,0.00140407916687444,0.00262610628982605,0.000380647624021813,-0.231014778192772 diff --git a/statsmodels/gam/tests/results/logit_gam_mgcv.csv b/statsmodels/gam/tests/results/logit_gam_mgcv.csv new file mode 100644 index 0000000..09ca2c0 --- /dev/null +++ b/statsmodels/gam/tests/results/logit_gam_mgcv.csv @@ -0,0 +1,201 @@ +"","x","y","y_est" +"1",-10,0,0.872773934309234 +"2",-9.89949748743719,0,0.914587328782016 +"3",-9.79899497487437,1,0.956147534160093 +"4",-9.69849246231156,1,0.997201361348758 +"5",-9.59798994974874,1,1.03749562125331 +"6",-9.49748743718593,1,1.07677712477903 +"7",-9.39698492462312,1,1.11479268283124 +"8",-9.2964824120603,1,1.1512891063152 +"9",-9.19597989949749,1,1.18601320613623 +"10",-9.09547738693467,1,1.21871179319962 +"11",-8.99497487437186,1,1.24913167841065 +"12",-8.89447236180905,1,1.27701967267464 +"13",-8.79396984924623,0,1.30212258689686 +"14",-8.69346733668342,1,1.32418723198261 +"15",-8.5929648241206,1,1.3429604188372 +"16",-8.49246231155779,1,1.35818895836591 +"17",-8.39195979899498,0,1.36961966147404 +"18",-8.29145728643216,1,1.37699933906688 +"19",-8.19095477386935,1,1.38007480204973 +"20",-8.09045226130653,0,1.37859286132787 +"21",-7.98994974874372,1,1.37230032780662 +"22",-7.8894472361809,1,1.36094401239126 +"23",-7.78894472361809,1,1.34427072598708 +"24",-7.68844221105528,1,1.32213697950808 +"25",-7.58793969849246,1,1.29501313254974 +"26",-7.48743718592965,0,1.26358294550573 +"27",-7.38693467336683,1,1.22853039302752 +"28",-7.28643216080402,0,1.1905394497666 +"29",-7.18592964824121,1,1.15029409037445 +"30",-7.08542713567839,1,1.10847828950257 +"31",-6.98492462311558,0,1.06577602180244 +"32",-6.88442211055276,1,1.02287126192554 +"33",-6.78391959798995,1,0.980447984523354 +"34",-6.68341708542714,1,0.939190164247379 +"35",-6.58291457286432,0,0.899781775749094 +"36",-6.48241206030151,1,0.862906793679986 +"37",-6.38190954773869,1,0.829249192691541 +"38",-6.28140703517588,1,0.799492947435244 +"39",-6.18090452261307,1,0.774322032562581 +"40",-6.08040201005025,1,0.754420422725038 +"41",-5.97989949748744,1,0.740472092574101 +"42",-5.87939698492462,0,0.733161016761255 +"43",-5.77889447236181,1,0.733171169937986 +"44",-5.67839195979899,1,0.741186526755779 +"45",-5.57788944723618,0,0.757891061866122 +"46",-5.47738693467337,0,0.783825768321446 +"47",-5.37688442211055,1,0.81839612350124 +"48",-5.27638190954774,0,0.860466108874879 +"49",-5.17587939698492,1,0.908896371063943 +"50",-5.07537688442211,1,0.962547556690015 +"51",-4.9748743718593,0,1.02028031237468 +"52",-4.87437185929648,1,1.08095528473951 +"53",-4.77386934673367,1,1.1434331204061 +"54",-4.67336683417085,1,1.20657446599603 +"55",-4.57286432160804,1,1.26923996813087 +"56",-4.47236180904523,1,1.33029027343222 +"57",-4.37185929648241,1,1.38858602852165 +"58",-4.2713567839196,1,1.44298788002074 +"59",-4.17085427135678,0,1.49235647455108 +"60",-4.07035175879397,1,1.53555245873425 +"61",-3.96984924623116,1,1.57143647919183 +"62",-3.86934673366834,1,1.59886918254541 +"63",-3.76884422110553,0,1.61671121541656 +"64",-3.66834170854271,1,1.62382322442687 +"65",-3.5678391959799,1,1.61906585619792 +"66",-3.46733668341709,1,1.60129975735129 +"67",-3.36683417085427,0,1.56938557450856 +"68",-3.26633165829146,1,1.52228903292485 +"69",-3.16582914572864,0,1.46019739696999 +"70",-3.06532663316583,1,1.38408602076526 +"71",-2.96482412060301,1,1.29494339326115 +"72",-2.8643216080402,1,1.19375800340811 +"73",-2.76381909547739,1,1.08151834015664 +"74",-2.66331658291457,0,0.959212892457185 +"75",-2.56281407035176,1,0.827830149260236 +"76",-2.46231155778894,1,0.688358599516262 +"77",-2.36180904522613,1,0.541786732175736 +"78",-2.26130653266332,1,0.389103036189131 +"79",-2.1608040201005,1,0.23129600050692 +"80",-2.06030150753769,0,0.0693541140795766 +"81",-1.95979899497487,1,-0.0957341341424275 +"82",-1.85929648241206,0,-0.262980255208617 +"83",-1.75879396984925,1,-0.431395760168519 +"84",-1.65829145728643,1,-0.599992160071661 +"85",-1.55778894472362,0,-0.76778096596757 +"86",-1.4572864321608,1,-0.933773688905772 +"87",-1.35678391959799,0,-1.09698183993579 +"88",-1.25628140703517,0,-1.25641693010716 +"89",-1.15577889447236,0,-1.41109047046941 +"90",-1.05527638190955,0,-1.5600238850824 +"91",-0.954773869346733,0,-1.70241655636777 +"92",-0.854271356783919,0,-1.83762179597183 +"93",-0.753768844221105,0,-1.96499799100219 +"94",-0.653266331658291,0,-2.08390352856645 +"95",-0.552763819095476,0,-2.19369679577221 +"96",-0.452261306532662,0,-2.29373617972709 +"97",-0.351758793969848,0,-2.38338006753869 +"98",-0.251256281407034,0,-2.46198684631461 +"99",-0.15075376884422,0,-2.52891490316247 +"100",-0.0502512562814061,0,-2.58352262518986 +"101",0.0502512562814079,0,-2.6251683995044 +"102",0.150753768844222,0,-2.65321061321369 +"103",0.251256281407036,0,-2.66700765342533 +"104",0.35175879396985,0,-2.66591790724694 +"105",0.452261306532664,0,-2.64929976178612 +"106",0.552763819095478,0,-2.61651160415047 +"107",0.653266331658292,0,-2.5669118214476 +"108",0.753768844221106,0,-2.49985880078512 +"109",0.85427135678392,0,-2.41471092927063 +"110",0.954773869346734,0,-2.31082659401174 +"111",1.05527638190955,0,-2.18756418211606 +"112",1.15577889447236,0,-2.04432087552674 +"113",1.25628140703518,0,-1.88167043080889 +"114",1.35678391959799,0,-1.70154684844915 +"115",1.4572864321608,0,-1.50595990009734 +"116",1.55778894472362,1,-1.29691935740326 +"117",1.65829145728643,0,-1.07643499201674 +"118",1.75879396984925,1,-0.846516575587594 +"119",1.85929648241206,0,-0.60917387976564 +"120",1.95979899497488,0,-0.366416676200693 +"121",2.06030150753769,1,-0.120254736542572 +"122",2.1608040201005,1,0.127302167558909 +"123",2.26130653266332,0,0.37424426445393 +"124",2.36180904522613,1,0.618561782492676 +"125",2.46231155778895,1,0.858244950025329 +"126",2.56281407035176,1,1.09128399540207 +"127",2.66331658291457,1,1.31566914697309 +"128",2.76381909547739,1,1.52939063308856 +"129",2.8643216080402,0,1.73043868209868 +"130",2.96482412060302,1,1.91680352235361 +"131",3.06532663316583,1,2.08647538220355 +"132",3.16582914572864,1,2.23744448999868 +"133",3.26633165829146,1,2.36770107408919 +"134",3.36683417085427,1,2.47525668488848 +"135",3.46733668341709,1,2.55940219660391 +"136",3.5678391959799,1,2.62141143532344 +"137",3.66834170854271,1,2.66272880364089 +"138",3.76884422110553,1,2.68479870415008 +"139",3.86934673366834,1,2.68906553944483 +"140",3.96984924623116,0,2.67697371211895 +"141",4.07035175879397,1,2.64996762476627 +"142",4.17085427135678,1,2.6094916799806 +"143",4.2713567839196,1,2.55699028035576 +"144",4.37185929648241,1,2.49390782848557 +"145",4.47236180904523,1,2.42168872696384 +"146",4.57286432160804,1,2.3417773783844 +"147",4.67336683417085,1,2.25561818534107 +"148",4.77386934673367,1,2.16465555042766 +"149",4.87437185929648,1,2.07033387623799 +"150",4.9748743718593,0,1.97409756536587 +"151",5.07537688442211,1,1.87739102040514 +"152",5.17587939698493,1,1.7816586439496 +"153",5.27638190954774,1,1.68834483859308 +"154",5.37688442211055,0,1.59889400692939 +"155",5.47738693467337,1,1.51475055155235 +"156",5.57788944723618,1,1.4373555314731 +"157",5.678391959799,1,1.36760709146401 +"158",5.77889447236181,1,1.30526488639263 +"159",5.87939698492462,1,1.24994521501885 +"160",5.97989949748744,0,1.20126437610251 +"161",6.08040201005025,1,1.15883866840349 +"162",6.18090452261307,1,1.12228439068165 +"163",6.28140703517588,1,1.09121784169686 +"164",6.38190954773869,1,1.06525532020898 +"165",6.48241206030151,1,1.04401312497788 +"166",6.58291457286432,0,1.02710755476343 +"167",6.68341708542714,1,1.01415490832548 +"168",6.78391959798995,0,1.0047714844239 +"169",6.88442211055277,1,0.998573581818567 +"170",6.98492462311558,1,0.995177499269337 +"171",7.08542713567839,0,0.994199535536078 +"172",7.18592964824121,1,0.995255989378654 +"173",7.28643216080402,1,0.997963159556932 +"174",7.38693467336683,1,1.00193734483078 +"175",7.48743718592965,1,1.00679484396005 +"176",7.58793969849246,1,1.01215195570463 +"177",7.68844221105528,1,1.01762497882437 +"178",7.78894472361809,0,1.02283030609777 +"179",7.88944723618091,0,1.02747797286506 +"180",7.98994974874372,1,1.03154737785938 +"181",8.09045226130653,1,1.03506605735562 +"182",8.19095477386935,0,1.03806154762869 +"183",8.29145728643216,1,1.0405613849535 +"184",8.39195979899498,0,1.04259310560495 +"185",8.49246231155779,1,1.04418424585794 +"186",8.5929648241206,1,1.04536234198738 +"187",8.69346733668342,1,1.04615493026816 +"188",8.79396984924623,1,1.0465895469752 +"189",8.89447236180905,1,1.0466937283834 +"190",8.99497487437186,1,1.04649501076765 +"191",9.09547738693468,1,1.04602093040287 +"192",9.19597989949749,1,1.04529902356396 +"193",9.2964824120603,1,1.04435682652581 +"194",9.39698492462312,0,1.04322187556335 +"195",9.49748743718593,1,1.04192170695146 +"196",9.59798994974874,0,1.04048385696505 +"197",9.69849246231156,0,1.03893586187903 +"198",9.79899497487437,1,1.03730525796829 +"199",9.89949748743719,1,1.03561958150775 +"200",10,1,1.03390636877231 diff --git a/statsmodels/gam/tests/results/motorcycle.csv b/statsmodels/gam/tests/results/motorcycle.csv new file mode 100644 index 0000000..7f67739 --- /dev/null +++ b/statsmodels/gam/tests/results/motorcycle.csv @@ -0,0 +1,134 @@ +"times","accel" +2.4,0 +2.6,-1.3 +3.2,-2.7 +3.6,0 +4,-2.7 +6.2,-2.7 +6.6,-2.7 +6.8,-1.3 +7.8,-2.7 +8.2,-2.7 +8.8,-1.3 +8.8,-2.7 +9.6,-2.7 +10,-2.7 +10.2,-5.4 +10.6,-2.7 +11,-5.4 +11.4,0 +13.2,-2.7 +13.6,-2.7 +13.8,0 +14.6,-13.3 +14.6,-5.4 +14.6,-5.4 +14.6,-9.3 +14.6,-16 +14.6,-22.8 +14.8,-2.7 +15.4,-22.8 +15.4,-32.1 +15.4,-53.5 +15.4,-54.9 +15.6,-40.2 +15.6,-21.5 +15.8,-21.5 +15.8,-50.8 +16,-42.9 +16,-26.8 +16.2,-21.5 +16.2,-50.8 +16.2,-61.7 +16.4,-5.4 +16.4,-80.4 +16.6,-59 +16.8,-71 +16.8,-91.1 +16.8,-77.7 +17.6,-37.5 +17.6,-85.6 +17.6,-123.1 +17.6,-101.9 +17.8,-99.1 +17.8,-104.4 +18.6,-112.5 +18.6,-50.8 +19.2,-123.1 +19.4,-85.6 +19.4,-72.3 +19.6,-127.2 +20.2,-123.1 +20.4,-117.9 +21.2,-134 +21.4,-101.9 +21.8,-108.4 +22,-123.1 +23.2,-123.1 +23.4,-128.5 +24,-112.5 +24.2,-95.1 +24.2,-81.8 +24.6,-53.5 +25,-64.4 +25,-57.6 +25.4,-72.3 +25.4,-44.3 +25.6,-26.8 +26,-5.4 +26.2,-107.1 +26.2,-21.5 +26.4,-65.6 +27,-16 +27.2,-45.6 +27.2,-24.2 +27.2,9.5 +27.6,4 +28.2,12 +28.4,-21.5 +28.4,37.5 +28.6,46.9 +29.4,-17.4 +30.2,36.2 +31,75 +31.2,8.1 +32,54.9 +32,48.2 +32.8,46.9 +33.4,16 +33.8,45.6 +34.4,1.3 +34.8,75 +35.2,-16 +35.2,-54.9 +35.4,69.6 +35.6,34.8 +35.6,32.1 +36.2,-37.5 +36.2,22.8 +38,46.9 +38,10.7 +39.2,5.4 +39.4,-1.3 +40,-21.5 +40.4,-13.3 +41.6,30.8 +41.6,-10.7 +42.4,29.4 +42.8,0 +42.8,-10.7 +43,14.7 +44,-1.3 +44.4,0 +45,10.7 +46.6,10.7 +47.8,-26.8 +47.8,-14.7 +48.8,-13.3 +50.6,0 +52,10.7 +53.2,-14.7 +55,-2.7 +55,10.7 +55.4,-2.7 +57.6,10.7 diff --git a/statsmodels/gam/tests/results/prediction_from_mgcv.csv b/statsmodels/gam/tests/results/prediction_from_mgcv.csv new file mode 100644 index 0000000..462e13a --- /dev/null +++ b/statsmodels/gam/tests/results/prediction_from_mgcv.csv @@ -0,0 +1,1001 @@ +"","y","x","y_est","y_est_se","y_mgcv_gcv","ybin","ybin_est" +"1",0.142812140447488,0.793394400272518,0.240162891125199,0.0727774246085751,0.202504497567297,1,2.80215910233023 +"2",0.310815654067748,-0.4689826737158,0.237523599867245,0.0692843582619557,0.25938174027492,1,4.76829031516366 +"3",0.391822221472993,-0.25575220072642,0.222303460260718,0.0659435925729936,0.225405369546522,1,4.13196462174571 +"4",-0.31564251728292,0.145706726703793,-0.147338974953318,0.070787300379104,-0.150865919934165,0,-2.76904461427896 +"5",0.291723857813829,0.816415579989552,0.296864851952355,0.073519710911563,0.270870660276045,1,3.51800700251983 +"6",0.211596329969987,-0.596636137925088,0.123471853888314,0.0711556124438933,0.167716700471031,1,2.87455008904439 +"7",0.217825681101387,0.796779369935393,0.248362687604932,0.0728769646796179,0.212217553770418,1,2.9072624829074 +"8",0.773530416683312,0.889350537210703,0.488728090614368,0.0826799292184896,0.517648377054857,1,5.79932257012994 +"9",-0.129361590171525,0.321595584973693,-0.261514157155437,0.0715836635760781,-0.270033115811854,0,-4.68088426980368 +"10",-0.277243657185333,0.258228087797761,-0.232674989745358,0.0703495353042416,-0.238867854986527,0,-4.2034342270061 +"11",-0.532507127295933,-0.876427459064871,-0.447144738440737,0.0836455988060007,-0.478982603042564,0,-5.15034364054281 +"12",0.272735278851403,-0.588050850201398,0.134498007394806,0.0714759888507994,0.177382105942016,1,3.05494335652585 +"13",0.206211437832287,-0.646886494942009,0.04984668341312,0.0694819783751709,0.0998895411228572,1,1.6948311285695 +"14",-0.197450909913744,0.374045693315566,-0.271610628198009,0.0700184991757453,-0.283075530939405,0,-4.84074925924998 +"15",0.146413991957002,-0.231792563572526,0.208202081167745,0.0652645508174295,0.211659885431815,1,3.80152089612654 +"16",-0.171403976645203,0.539682839997113,-0.202190698459472,0.0712935761828031,-0.233031631438549,0,-3.68103496096943 +"17",-0.00308176758799501,-0.00460151582956314,0.0037568240145973,0.067556996481459,0.00573906309757116,0,-0.198025970644924 +"18",-0.0853500671320284,0.435237016528845,-0.265167192616357,0.0678308882188937,-0.281726099977399,0,-4.72264629197585 +"19",0.835133980515517,0.983812189660966,0.754326520490115,0.124745297037501,0.879509503490876,1,8.77269543459087 +"20",0.21556967951783,-0.239929641131312,0.2132144707049,0.0654324802973513,0.216522032130307,1,3.91789801789166 +"21",-0.315691079183842,0.554890442639589,-0.186975151912598,0.0717053369969465,-0.220610975766217,0,-3.43386644005502 +"22",0.346695117146689,0.869410462211818,0.434708476598399,0.0784459095507887,0.446315329353419,1,5.17390810918573 +"23",0.194486342072129,-0.575714957434684,0.149513177429495,0.0718717289032965,0.190324786454537,1,3.3020218370821 +"24",-0.270862336816578,0.303347532171756,-0.254940809818138,0.0714632659118076,-0.2626754375902,0,-4.57305772666498 +"25",-0.141007659724895,-0.748889808077365,-0.142642561576728,0.0713311103063146,-0.101981291437582,0,-1.17240416531613 +"26",0.418715056862234,-0.465558662544936,0.239152443327262,0.069137120937369,0.260440014254774,1,4.79501963737068 +"27",0.212887903198702,-0.227771814912558,0.205643302536315,0.0652082702777111,0.209184193243898,1,3.74254951256492 +"28",-0.738491365478343,-0.973219333682209,-0.705095713589494,0.12723343837602,-0.822375267265181,0,-8.2838589936849 +"29",0.111071602278403,-0.235224085859954,0.210343215307968,0.0653267219676851,0.213734534679699,1,3.85109287698973 +"30",0.0444742321564831,0.73938169144094,0.116285552060491,0.0710582105301227,0.0632403856537194,1,1.146066028104 +"31",0.113800535328753,-0.319302006624639,0.249163763352164,0.0685290973036261,0.25333458184366,1,4.7933624762937 +"32",0.179837012207379,-0.0358397690579295,0.036381603446778,0.0665349701021646,0.03974277976724,1,0.373534575309249 +"33",-0.281475150213087,0.199131650850177,-0.192371524936822,0.0695850633305177,-0.197090156478305,0,-3.52798736562951 +"34",0.160337565534314,-0.0129173859022558,0.012477781635726,0.0671857120060497,0.0148404504890481,1,-0.0463948300604101 +"35",0.0341278773294424,-0.627564797177911,0.0799487323341692,0.0699906290087476,0.128292486531771,1,2.17179564949947 +"36",-0.102825563242387,0.654746637213975,-0.0481724578244263,0.0700930334086219,-0.100371240764993,0,-1.24751253056934 +"37",-0.547947459942368,0.336933476384729,-0.265858442822589,0.07141130604589,-0.275125005817547,0,-4.75131005576947 +"38",-0.205575410523522,0.588479721453041,-0.14762207334355,0.07167214237817,-0.187971744323535,0,-2.8000498330385 +"39",-0.17860927883206,-0.784112748224288,-0.220786592468213,0.0724244879996631,-0.193413406907354,0,-2.24554751425493 +"40",-0.460195151874698,0.447421892080456,-0.261342957321624,0.0678050948396821,-0.279172955528524,0,-4.65750867643354 +"41",0.137494281288247,-0.177451140712947,0.169377730966035,0.0658944957260424,0.17416537753739,1,2.93629051758661 +"42",-0.147603339917433,0.641892588231713,-0.0696081488722525,0.0703446227443767,-0.119947264699915,0,-1.57563947129331 +"43",-0.427192417578844,0.29412038763985,-0.251061973065577,0.0712982884854486,-0.258439008194841,0,-4.50903174403014 +"44",-0.113622057127464,0.56586552457884,-0.174978463307336,0.0718282900003084,-0.210751840879863,0,-3.23971604699175 +"45",-0.224971193054134,0.106072623282671,-0.110004421837387,0.0717960825921976,-0.112502280098287,0,-2.1377664786596 +"46",-0.0809155848213806,0.0594391603954136,-0.0631440468532074,0.0712030106961297,-0.0640413981730968,0,-1.34335038527886 +"47",-0.134654646526718,0.578712463378906,-0.159867258592066,0.0717982740733589,-0.198226707208652,0,-2.99627130583177 +"48",-0.832092490713972,-0.953337595332414,-0.651201855839033,0.115840286408483,-0.749901190377126,0,-7.6363398625724 +"49",0.119788403993886,-0.0455398699268699,0.0464040092440038,0.0664330235778139,0.0501545811559198,1,0.551820569672818 +"50",-0.251122957219539,0.4646274773404,-0.254425139535563,0.0680663437679339,-0.274212958251406,0,-4.54099611048528 +"51",-0.122090072131424,0.385463112965226,-0.271961641250097,0.0694676825056516,-0.284227493942815,0,-4.84440193239475 +"52",-0.021686797994974,-0.0447607557289302,0.0456016189390583,0.0664375578386428,0.0493218302648029,0,0.537492630309444 +"53",-0.0844392342498933,0.722418953664601,0.0802629687396412,0.0705503469504568,0.0253469107273512,0,0.6406745127848 +"54",0.155887850401077,-0.123805785551667,0.123285731809138,0.0672327521825938,0.128809422418886,1,1.98629409785645 +"55",0.224985565432689,-0.510405445937067,0.212138415497622,0.0712374023295091,0.241199731173167,1,4.34550234697024 +"56",-0.436981128068385,-0.858641905710101,-0.40156387945953,0.0794796321203835,-0.419761531807412,0,-4.58230419632462 +"57",-0.177373641993096,-0.801067679654807,-0.260230215498954,0.0730821561188125,-0.24131807986426,0,-2.76997796379248 +"58",0.316716696833687,-0.3674565856345,0.257876259645749,0.0684491878059869,0.265691462651724,1,5.03740462413545 +"59",-0.0352865486114058,0.0372685263864696,-0.0401548594437679,0.0700255351088216,-0.0401048656676985,0,-0.952350466852568 +"60",-0.192501853343024,0.324010152835399,-0.262271129316363,0.0715746296787047,-0.270902161371635,0,-4.69322109261126 +"61",0.24884369545125,-0.186339625623077,0.176320893895235,0.0656259981041564,0.180888669810652,1,3.08653999758296 +"62",0.383711465322975,0.825751848518848,0.320455005729651,0.07393845166406,0.300064947769196,1,3.80897211563131 +"63",0.368690870460136,-0.412793254479766,0.255698306974327,0.0679564815496416,0.268929742494889,1,5.05020368411944 +"64",0.210159103094992,-0.0818685474805534,0.0831521045828388,0.0667529546591891,0.0880880829889259,1,1.22009144066544 +"65",0.246222868057897,-0.335210651624948,0.253228318732361,0.0687124604740754,0.258327541944781,1,4.89997553578895 +"66",-0.290809232432289,0.30174093414098,-0.254291659915942,0.0714387770940441,-0.261962241542666,0,-4.56235883883311 +"67",0.134525407653048,-0.483966438565403,0.229565171966579,0.0699833082499875,0.253971273255959,1,4.63660788609997 +"68",0.0189861843537874,-0.0429095034487545,0.043693142294482,0.0664508326911592,0.0473405430928621,1,0.503452860039943 +"69",-0.323113261176359,0.532621341291815,-0.208706453459727,0.0710234139278152,-0.238317374193873,0,-3.78721864349065 +"70",-0.277181205679754,-0.831506171263754,-0.333650594429533,0.0753494658574132,-0.332884393720983,0,-3.722582828237 +"71",0.0753917190785081,0.750642660073936,0.140987136586411,0.0714270551559307,0.0898989030139028,1,1.48645407258839 +"72",0.199427373118511,-0.321854124311358,0.249891898645349,0.0685775029872374,0.25419196360707,1,4.81218218355487 +"73",-0.150832688747111,0.678880700375885,-0.00529641510337737,0.0698971102420809,-0.0600193357851926,0,-0.602270180299868 +"74",0.255044936623086,-0.306633021682501,0.245128751107989,0.0681764785636672,0.24877187979107,1,4.69033491636479 +"75",0.199240354302033,-0.332450138404965,0.252604717632085,0.0686998723931417,0.25752221585795,1,4.88330601184217 +"76",-0.0788089741033753,-0.0472975098527968,0.0482123523274043,0.0664250437357628,0.0520307853077151,0,0.584147626270415 +"77",0.0398428562507606,0.784396671690047,0.218607028833134,0.0725102116679728,0.177265661831331,1,2.52316730936305 +"78",0.155269152817495,0.728678941261023,0.0933879626438993,0.0707277839001087,0.0390188778822558,1,0.826050350668588 +"79",0.130994636697233,-0.220020913053304,0.200561267496708,0.0651512190557774,0.204275777599712,1,3.62627876214254 +"80",-0.289613321190112,0.554641397669911,-0.187237487413486,0.0717007960548614,-0.220825903905123,0,-3.43811935723573 +"81",0.613250456087117,0.921235994435847,0.57695191313558,0.093016559839781,0.636265954767453,1,6.80141808834305 +"82",0.0686987586295608,-0.130681030452251,0.129557986062289,0.0671806828485975,0.135074010686449,1,2.11074310753294 +"83",-0.315860475936177,0.425029357429594,-0.267700716068208,0.0679862698996988,-0.28326494835089,0,-4.76632050962843 +"84",0.152751514726959,-0.200011262204498,0.186567712748688,0.0653075223564137,0.190782570150117,1,3.31177353268895 +"85",0.203761875871871,-0.349295696243644,0.255863564903632,0.0686736090443908,0.262018525430769,1,4.97301602065608 +"86",-0.351697896434864,0.514174296054989,-0.224117436295886,0.0701698404384672,-0.250710493244963,0,-4.03932908692588 +"87",0.245612588670305,-0.594615489710122,0.126109069571241,0.071233133762913,0.170040656672746,1,2.91761293553142 +"88",-0.282561573016586,0.422242444939911,-0.268287848951347,0.0680486978536351,-0.283591275082085,0,-4.77653838551666 +"89",-0.254040728835678,-0.756616157945246,-0.159316945054627,0.0715869464069862,-0.121051445736555,0,-1.40570913143727 +"90",0.325855129050325,-0.509022972080857,0.213159124922896,0.0711772210594816,0.241973215302345,1,4.36259163930374 +"91",-0.186720484868894,-0.713391241151839,-0.0696303149803495,0.0701008270017257,-0.0214107655560303,0,-0.122392814054673 +"92",0.198188950230129,-0.52074116980657,0.204116704121914,0.0716483330706978,0.235035699929118,1,4.21117839290385 +"93",-0.519497624509656,-0.882131245452911,-0.461920280205252,0.0852507031880465,-0.498311409182051,0,-5.33318525795914 +"94",-0.33232508496232,0.284576517064124,-0.246673722957907,0.0710765272643809,-0.253705717263233,0,-4.43636138746223 +"95",0.128574503090932,0.752538425382227,0.145205919781695,0.0714900098968781,0.0945069327914284,1,1.5440855480718 +"96",-0.361205942304253,0.557829354889691,-0.183846099417416,0.0717529073901443,-0.218045413616609,0,-3.38316155947554 +"97",-0.0222098436382402,0.594617651775479,-0.139598171703302,0.0715570180881706,-0.181195372942854,0,-2.67202415594737 +"98",0.124760542877135,-0.0894510927610099,0.0906194972264329,0.0668891114507679,0.0957334019952126,1,1.35929280497196 +"99",0.338186737355625,-0.179831835906953,0.171258489636302,0.0658192682953514,0.175988512867337,1,2.97680296525409 +"100",-0.0766392524574893,0.621740485541523,-0.101179824528634,0.0708644198392864,-0.148069526454252,0,-2.06554991507819 +"101",-0.360159963778412,0.209866580553353,-0.200515165962361,0.0695525182770002,-0.205475666835791,0,-3.66484268344163 +"102",-0.185419056150623,0.309447856154293,-0.257303244365871,0.0715375524264781,-0.265288203822707,0,-4.61192810926941 +"103",0.287864853101215,-0.293605456128716,0.240268469028311,0.0676587173050301,0.243553674001404,1,4.56839840109658 +"104",0.368097739628627,-0.459479708224535,0.241872831024562,0.0688918617544401,0.262159376743968,1,4.83940269862735 +"105",1.03561671994519,0.985368122346699,0.758774886274053,0.125680121876549,0.885651542052775,1,8.82175209645772 +"106",-0.183093003343676,0.266986528877169,-0.237625123863582,0.0705947625393217,-0.244080166082575,0,-4.28595370629545 +"107",0.259326267444765,-0.573583729565144,0.152007046061955,0.0719289925359502,0.192449367362829,1,3.34320979225133 +"108",-0.131370762770722,-0.74125530384481,-0.126435218786149,0.0710667597700194,-0.0836830410843658,0,-0.943313615893599 +"109",0.202015505082504,-0.0437639313749969,0.0445743131793969,0.0664442653759294,0.0482554350275551,1,0.519162715306307 +"110",0.195694881855638,0.848148939665407,0.378309371720317,0.0755845723937569,0.373219575570076,1,4.50836109573384 +"111",-0.370171528544239,0.19752193428576,-0.191121792316068,0.069597365824639,-0.19580464985835,0,-3.50697266972097 +"112",0.645946605428978,0.952341389842331,0.664635576829476,0.107168044427064,0.755977896597866,1,7.78076945203659 +"113",-0.173358868198146,0.463585023768246,-0.25489569130243,0.0680410862652858,-0.274559273388012,0,-4.54888328698842 +"114",0.128714733413199,-0.286546175833791,0.237343039368062,0.0673377145703248,0.240504729070845,1,4.4959246673455 +"115",0.0934915975260562,-0.137052618898451,0.135281878353919,0.0670855921777353,0.140762436952824,1,2.2256400616336 +"116",0.0152805122196315,-0.703576878644526,-0.0505316407392333,0.0698079393226261,-0.00112980535156287,1,0.159875645353952 +"117",-0.921681259071673,-0.973844849038869,-0.706795008882097,0.127606437686359,-0.824663319261689,0,-8.304246868005 +"118",-0.479332947531617,0.431132132187486,-0.266258747634394,0.0678791421309503,-0.282410127910905,0,-4.74139438184105 +"119",-0.0893490036418192,-0.793631528504193,-0.242794463634249,0.0727622872638684,-0.220016855435936,0,-2.53939013421798 +"120",0.0972688922064875,-0.107431302778423,0.107973774036814,0.0671637970058935,0.113389528461384,1,1.68836477990699 +"121",-0.183160818853579,0.280202090274543,-0.244537879115824,0.0709626139700035,-0.251419580097092,0,-4.40091918562037 +"122",0.920466977143591,0.983677240088582,0.753940740840575,0.124664466045345,0.878976882439905,1,8.76844067972957 +"123",-0.0442116676201162,-0.00881284428760409,0.00817536011645649,0.0673608673406254,0.0103510705954101,0,-0.12129447957053 +"124",0.0414598580640469,-0.0313009512610734,0.0316699264323377,0.0666178058065337,0.0348411218582999,1,0.290205154845943 +"125",0.177476020528848,-0.653115330263972,0.0396820694017281,0.0693803214502575,0.0900962941046537,1,1.53549144656239 +"126",-0.395550550983867,0.509641889017075,-0.227552950500547,0.0699430862114575,-0.253446547146162,0,-4.09574530008961 +"127",-0.0250770107080505,-0.0922090215608478,0.0933147628495386,0.0669379844813286,0.0984863019817933,0,1.40987000922695 +"128",0.107838223589085,0.0223395675420761,-0.024533978989492,0.0690971609912075,-0.0238038482478612,1,-0.685451371113402 +"129",0.0941276840756388,-0.584909773431718,0.138414594766139,0.0715856095571891,0.180782777171236,1,3.1192374458158 +"130",0.224593261490704,-0.542683714535087,0.184760426049645,0.0721914494074866,0.219656826195643,1,3.88748782678609 +"131",-0.320195758062661,0.191423992626369,-0.186322020918227,0.0696610568350937,-0.190870171326563,0,-3.42623355065648 +"132",-0.0742308741050914,0.149744396563619,-0.150975585083639,0.0706613813618177,-0.154596840499693,0,-2.83044565972298 +"133",-0.305147730592812,-0.845871239434928,-0.369339448295681,0.0772289681904058,-0.378314329674453,0,-4.17658014533124 +"134",-0.701222636133812,-0.928918840829283,-0.585473946185595,0.103323653045414,-0.661879427938677,0,-6.84303615138671 +"135",-0.0835965128830474,0.285590984392911,-0.247157977374858,0.0711020142544713,-0.254225512145009,0,-4.44439103647937 +"136",0.351556512974254,0.857230399269611,0.4022352117352,0.0766216103914531,0.404036094842822,1,4.79245746533861 +"137",-0.210267400119949,0.196184844709933,-0.190078180575957,0.0696090321652341,-0.194731398753679,0,-3.48942151306273 +"138",-0.00804368188574951,0.121801496017724,-0.125151140451173,0.0714844963117762,-0.128084175044436,0,-2.39406860928693 +"139",-0.00590680981301113,0.0520554478280246,-0.0555238005409776,0.0708569737161128,-0.0561167243130318,0,-1.21391505044173 +"140",0.941421721043509,0.970190447755158,0.715425804753754,0.116803376312096,0.825845015807847,1,8.34326607132063 +"141",0.131343487428642,0.0152836446650326,-0.0171292089527066,0.0686607996376064,-0.0160716066230381,1,-0.558444275751255 +"142",-0.243474299111968,0.365576157346368,-0.270910516580812,0.0704145774600986,-0.281821029210077,0,-4.830680833108 +"143",-0.121388997171822,0.203082435298711,-0.195407546654689,0.0695630270808723,-0.200214464909265,0,-3.57902542654425 +"144",0.173247918269661,-0.522262644488364,0.202877258972977,0.0717019577062183,0.23407089779141,1,4.19042642887317 +"145",0.303820427809966,-0.483668146654963,0.229736935085506,0.0699688197307042,0.254091571228234,1,4.63946357997914 +"146",-0.29661503917832,0.458619246724993,-0.25704555845684,0.0679369043922556,-0.276127407565891,0,-4.58498097594992 +"147",0.220753317691545,-0.0948583371937275,0.0958929668719343,0.0669836006123198,0.101116155699226,1,1.45842456226456 +"148",0.0963778063739441,-0.649746463168412,0.0452070770675913,0.0694311338238868,0.095431961822367,1,1.62199281130469 +"149",-0.250161372597587,0.493396539241076,-0.238752698693409,0.0691424340776436,-0.262270297460027,0,-4.28033193820003 +"150",-0.196503874216084,-0.790024719201028,-0.234413508787509,0.0726266407490313,-0.209847156366219,0,-2.42787045247894 +"151",-0.157419495934216,0.729089898057282,0.0942565616254893,0.0707399048581058,0.0399291162439679,0,0.838268467867189 +"152",-0.304462616538171,0.229289943352342,-0.214362662152604,0.0697089753924872,-0.219783051071945,0,-3.89717405781751 +"153",0.0850547660182411,0.114319077692926,-0.117995231517062,0.071654527972008,-0.120726441421381,1,-2.27301221535246 +"154",0.332781908159194,-0.342445361893624,0.254696937738138,0.0687122458873287,0.260312030480258,1,4.94000495923356 +"155",0.0960573375516674,-0.0937371090985835,0.0948031586730035,0.0669644943339967,0.100004939147238,1,1.43787943030056 +"156",-0.0167338028396246,0.000881945248693228,-0.00200089680152572,0.0678350356597548,-0.000272452583335275,0,-0.297742653715005 +"157",0.10200034231792,-0.638267277739942,0.0635443805368908,0.0696756548899998,0.112926162581099,1,1.9109311646621 +"158",-0.0149627767120908,0.0592612056061625,-0.0629608875223506,0.0711953769005479,-0.0638510558481774,0,-1.340240684067 +"159",-0.298342397712088,-0.849448508583009,-0.378320743236447,0.0778008605359179,-0.389827755701047,0,-4.29003701323789 +"160",0.170732795965268,-0.444488134700805,0.247657856728331,0.0683953541945312,0.265547984837895,1,4.93211255492465 +"161",0.181014681694214,-0.574600961524993,0.150820439304883,0.0719021403441355,0.191439374261854,1,3.32360701720689 +"162",0.145314808763865,-0.430419038049877,0.251916454616463,0.0680947223136056,0.26766389646221,1,4.99754079006233 +"163",0.153691350209435,0.790188205894083,0.232441509683481,0.0726828912003898,0.193414771400974,1,2.70267131266969 +"164",0.155920350379395,-0.107529353350401,0.108066933495381,0.0671648664795728,0.113483832370001,1,1.69015439472334 +"165",-0.353483613553034,0.559969779569656,-0.181528664312088,0.0717806768777887,-0.21614278585946,0,-3.34563681545221 +"166",0.222962861058389,0.761238069739193,0.164784777169961,0.0717782829961229,0.116102947970852,1,1.80961941764113 +"167",0.281115292991455,-0.173751580994576,0.166425004376095,0.0660147741822723,0.171299879894441,1,2.87296636258407 +"168",-0.4565008415534,-0.872383038979024,-0.436712503251452,0.0825877052430685,-0.465372465381228,0,-5.02088566223472 +"169",0.284648677558563,-0.329025016631931,0.251782932797263,0.068673596890194,0.256486811541623,1,4.861553444395 +"170",-0.134077458106682,0.447451893240213,-0.261332452547574,0.067805250602877,-0.279165696057921,0,-4.65733065326728 +"171",0.197898520185696,-0.324769333004951,0.250688343498904,0.0686235209145024,0.255145397725585,1,4.832877919348 +"172",-0.319039326608446,0.260828244965523,-0.234174496482556,0.070421378898107,-0.240443610652222,0,-4.22844602760277 +"173",-0.16416460895307,0.681229108013213,-0.000945921054769719,0.0699000387166752,-0.0558350190676723,0,-0.537630536189117 +"174",-0.0870921606182352,0.712263329420239,0.0593994051908952,0.0702973459728181,0.00393072946556672,0,0.343094334033629 +"175",0.125623833157376,-0.217281437944621,0.198718861112505,0.0651472879124717,0.202498268987376,1,3.5844019880413 +"176",0.248895447070036,-0.239012228790671,0.212660614822832,0.0654100458103361,0.21598379105813,1,3.90498180837891 +"177",0.104175353799447,0.790890851989388,0.234129875876587,0.0727036528522338,0.195397654843952,1,2.72446819209161 +"178",-0.267977535288952,0.288631525821984,-0.248584167808593,0.0711759224317866,-0.255759814108985,0,-4.46802528858703 +"179",-0.242530776644721,0.482157297432423,-0.245499036272858,0.0686473033631353,-0.267488912750217,0,-4.39212311710192 +"180",-0.320789164778362,0.210606893058866,-0.201064288831949,0.0695534662127969,-0.206041727053701,0,-3.67406533231419 +"181",0.383596582934333,0.806163222994655,0.271346345567232,0.0731605577082398,0.2397659102248,1,3.19891494007509 +"182",0.402903035017454,-0.412539689801633,0.25574036223268,0.0679563284564583,0.2689370972484,1,5.05072444778316 +"183",-0.0338847578595577,-0.617479780223221,0.0947826451606412,0.0703452723166981,0.141952206598985,0,2.40960044840079 +"184",0.102119285804306,0.772901886608452,0.191588245880336,0.072155531909641,0.146231875452323,1,2.16798103684318 +"185",-0.0439995535886094,0.00667897146195173,-0.00809074997028617,0.0681531753371385,-0.00663206775264791,0,-0.402901409021928 +"186",0.120508261655669,0.754115086048841,0.1487276557856,0.0715423980345953,0.0983659185612339,1,1.5920822399084 +"187",0.0239290524025172,-0.621612755116075,0.0887775030006365,0.07019452227628,0.136449666855714,1,2.31311391814185 +"188",-0.278720195140796,0.516206104774028,-0.222532793601049,0.0702704285833104,-0.249444704266222,0,-4.01333557416133 +"189",-0.189650002229028,0.448997785337269,-0.260783867590386,0.0678147306229356,-0.278785116228713,0,-4.64803950045403 +"190",0.609519336780682,0.887449636589736,0.483536077592467,0.0822044005949874,0.510743717654982,1,5.73965509682397 +"191",-0.0706340521346376,0.0952931740321219,-0.0994074375383108,0.0718895516172692,-0.101580760309976,0,-1.95830824102792 +"192",-0.237904482498279,0.423487735446543,-0.268031001192483,0.068019786769595,-0.283450402951337,0,-4.77206263226144 +"193",0.135528331709148,-0.222189800348133,0.202002931768303,0.0651603284099861,0.205667270125586,1,3.65914837486268 +"194",-0.263375937946011,-0.79825374763459,-0.253607818106203,0.0729538938361354,-0.233205186994033,0,-2.68261630132108 +"195",0.509888414246393,0.854604177176952,0.395290209488892,0.0762953481101663,0.395060190563038,1,4.71027257707677 +"196",0.277072043509359,-0.433534999378026,0.251069423813452,0.0681466251988055,0.267281761326489,1,4.98484519406627 +"197",-0.237504809330514,0.181146317627281,-0.178004965978129,0.0698263153692661,-0.18232773592075,0,-3.28622566726433 +"198",-0.00376077298733413,-0.779278790112585,-0.209748734196571,0.0722723952150796,-0.18019867618908,0,-2.09691438279533 +"199",-0.107817371207485,0.68101406423375,-0.00134558789488735,0.069899603365058,-0.0562201143182884,0,-0.543562379716739 +"200",0.380551391658738,-0.364072631113231,0.257622045451034,0.0684998480212466,0.265103641851055,1,5.0279602448414 +"201",-0.145510778536734,0.565702673979104,-0.175162665050654,0.0718275266993353,-0.210903729469279,0,-3.24269166387384 +"202",0.301844936869757,-0.464983585290611,0.239419166917469,0.0691129965355539,0.260611373093185,1,4.79938656090385 +"203",0.175280573132499,-0.562709430232644,0.164265096169154,0.0721537531912117,0.202785679463679,1,3.54623484121745 +"204",0.0551211505986568,0.0335936727933586,-0.0363174482691322,0.069800732150407,-0.0361022810165364,1,-0.886897979562113 +"205",0.100563507861674,-0.462098815944046,0.240727539829082,0.0689948149703871,0.261443444517519,1,4.82076177632233 +"206",0.0202405930016763,-0.637663345318288,0.0644879868618092,0.0696913699644998,0.113817378790146,1,1.92587577059975 +"207",-0.0614500559851225,0.0371522749774158,-0.0400335590348422,0.0700184972716655,-0.0399783677804607,0,-0.950282521947377 +"208",-0.106000638041507,0.125565871596336,-0.128715254763497,0.0713870428282714,-0.131746603268993,0,-2.45434142152098 +"209",-0.064109626095871,-0.741686291061342,-0.127342960508635,0.0710819070245596,-0.0847016842911862,0,-0.956204906177498 +"210",0.227139361214114,-0.48726479196921,0.227629427429019,0.0701442049390743,0.252606417642555,1,4.60439542997778 +"211",-0.299573930092677,0.435870551969856,-0.264989952643747,0.0678251912460166,-0.281612671567183,0,-4.71961005411648 +"212",0.695868213382109,0.922819872852415,0.581383586374073,0.0936448901681201,0.642279774196652,1,6.85125009898603 +"213",-0.289459223567064,-0.799718306865543,-0.257050874967021,0.0730194557994312,-0.237419823895285,0,-2.72806948269017 +"214",-0.453679513279686,0.526445379015058,-0.2141235576137,0.0707565101842002,-0.242693042818881,0,-3.87567302169363 +"215",0.542774922030724,0.895932709332556,0.506769955391186,0.0844481131126357,0.541714152344424,1,6.00600045853031 +"216",-0.033369282020045,0.637269376777112,-0.0770732574302587,0.0704538078843831,-0.126672477097849,0,-1.69077053274506 +"217",0.368707950320783,-0.383415338583291,0.258310771091301,0.0682009933652272,0.267839618864923,1,5.06611146222079 +"218",-0.274784308615236,0.299158920999616,-0.253225099058549,0.0713954899186048,-0.260794347986387,0,-4.54476541010913 +"219",0.57804653501475,0.906710902228951,0.536514048743518,0.0877552615784219,0.58161746648504,1,6.34465181748812 +"220",0.738304676238347,0.907465300057083,0.53860471541468,0.0880059229689493,0.584432123526794,1,6.36836465716417 +"221",0.190119128510098,-0.320041593164206,0.249377728395937,0.0685439173165173,0.253585209217355,1,4.79888366612197 +"222",0.247542877322811,-0.475051779765636,0.234463883251232,0.0695585868939557,0.257344495767464,1,4.71784242218912 +"223",0.118529214359637,-0.669092133641243,0.0126113768641846,0.0692791172353437,0.0635273346864282,1,1.1154050547194 +"224",0.201164955958185,-0.35566388675943,0.25674965593115,0.0686109146947982,0.263449807019531,1,4.99942446800827 +"225",-0.0666294265175495,0.0202504131011665,-0.0223425421448068,0.0689668051451891,-0.0215157045381151,0,-0.64790021552491 +"226",0.428116362713506,0.847936942707747,0.377753916915795,0.0755633143805362,0.372507774439846,1,4.50173252919466 +"227",-0.0942391172972993,0.0219193967059255,-0.0240933170585192,0.069070891047457,-0.0233437576486583,0,-0.677902816771668 +"228",0.316822131212283,-0.388585280627012,0.258176332470783,0.0681284135178313,0.268307617017762,1,5.06979036878668 +"229",-0.705386671566243,-0.907078226096928,-0.52732949025535,0.093828970768705,-0.584524505997491,0,-6.13623328511619 +"230",-0.0463989339678486,-0.16428748331964,0.15870887601156,0.0663308327141322,0.163790802304534,0,2.70908808559671 +"231",0.0637681964162031,0.708003004547209,0.0508076883302349,0.0702066617100446,-0.00477574064417954,1,0.219513995701539 +"232",0.235206472218653,-0.305538644548506,0.244747839422781,0.0681381060542293,0.248353995875367,1,4.6807011164121 +"233",-0.107387836252576,-0.737115358933806,-0.117760030932873,0.0709203793099152,-0.0739851855027452,0,-0.819751986007215 +"234",0.167214419435506,-0.251026270911098,0.219681746853938,0.0657682994173979,0.222831415564917,1,4.06979971882909 +"235",-0.127294892738184,0.262840456794947,-0.235317675706556,0.0704776620584718,-0.241646700103572,0,-4.24750589101379 +"236",0.0900497036515999,-0.21984213264659,0.200441759374273,0.065150705216463,0.204160454585005,1,3.62355801479143 +"237",-0.174172057561478,0.379255697596818,-0.271856012386785,0.0697672594548015,-0.283678598927915,0,-4.84383862723328 +"238",-0.3739971830755,0.378826824948192,-0.271841191679736,0.0697880177694924,-0.283633845058377,0,-4.84367421930933 +"239",-0.120937846519733,0.109801246318966,-0.113630503044944,0.0717387636177211,-0.116235372339305,0,-2.19914688313847 +"240",0.113703528493105,-0.140751184429973,0.138563954142176,0.0670119912607293,0.14401239508521,1,2.2920939113251 +"241",0.150240705441674,-0.0945598743855953,0.0956030591235127,0.0669785463228399,0.100820614264781,1,1.45295616067001 +"242",0.0934453381115394,-0.387113482225686,0.258228506176919,0.0681482620563891,0.268186025342596,1,5.0690238430513 +"243",-0.174650452800768,0.156707888003439,-0.157165613813701,0.0704483094407834,-0.160946547412687,0,-2.9349184934301 +"244",0.271130938258842,0.820740608498454,0.307752403488728,0.0736998822743799,0.284294673365396,1,3.65275221591925 +"245",0.0401469099161925,-0.714791835751384,-0.0723952690833707,0.0701458903113828,-0.0243743957734831,1,-0.162996798953986 +"246",0.272329885476061,-0.169904749374837,0.163316526949381,0.0661426757411285,0.168278628176589,1,2.80666912572003 +"247",0.0934349312694547,-0.578148498665541,0.146629230055013,0.071801822896303,0.187858893885171,1,3.25444351908071 +"248",0.169402622991559,-0.142499258276075,0.140104594527371,0.0669729968587376,0.145535097639628,1,2.32343159550586 +"249",-0.0134971238505139,-0.734620049595833,-0.11257015715241,0.0708316637004276,-0.0682157432427571,0,-0.745519805559738 +"250",0.197162909494643,-0.0798071082681417,0.081108118981835,0.0667168042029963,0.0859909979865886,1,1.18221557742704 +"251",0.495832641230037,0.885914118494838,0.47934825314607,0.0818316487451553,0.505181560323103,1,5.69146342699328 +"252",-0.121578402296508,0.523947723209858,-0.216240311351206,0.0706421109599097,-0.244397588120103,0,-3.91028324773613 +"253",0.440974067823847,0.865819657687098,0.425091212834013,0.0778523213824791,0.433742769669536,1,5.06140466493296 +"254",0.0287391546142456,-0.0586430048570037,0.0598196009225925,0.0664432249520853,0.0640532919648615,1,0.792905333900613 +"255",-0.138158033611361,0.207176135387272,-0.198505797123419,0.0695525408169493,-0.203405054478048,0,-3.63108877782949 +"256",0.0582978907603213,-0.0300206388346851,0.0303386090798018,0.0666453184068777,0.033455416126656,1,0.266712819565486 +"257",-0.137003806804439,-0.78238736698404,-0.216835962620335,0.0723691270672589,-0.18867344224709,0,-2.19244957252908 +"258",0.348145071482914,-0.504546334035695,0.216380473361503,0.0709758157385594,0.244396418969335,1,4.4165112924777 +"259",-0.0256256930024014,-0.00297093857079744,0.00204512491752066,0.067637120103669,0.00395208598647741,0,-0.227701660661836 +"260",0.19765516488302,-0.254266583826393,0.221487991115581,0.0658866560990816,0.224603543040207,1,4.11259115314612 +"261",0.424454588753078,0.869382740464061,0.434634093200576,0.0784411401536648,0.446217930381857,1,5.1730394104544 +"262",0.05949584413412,0.0479721557348967,-0.0512929428050737,0.0706428696479569,-0.0517123387392762,1,-1.14198863856475 +"263",0.462915015077388,-0.365710656624287,0.257752091917533,0.0684756283400534,0.265393827524873,1,5.03267820408255 +"264",0.36537620567627,-0.444067941047251,0.247801308540363,0.0683839459208915,0.265625873099203,1,4.93436873213623 +"265",-0.0908610695424624,0.575081015471369,-0.164254244178543,0.0718238879439453,-0.2018768319563,0,-3.06680586451931 +"266",-0.0952511876151605,0.404925025068223,-0.270949424700359,0.0686031558468549,-0.284731607315065,0,-4.82385783598 +"267",0.0114025796451981,-0.669944722671062,0.0111270021835268,0.0692803007349437,0.0620502077431607,1,1.0925506586863 +"268",-0.597882580164789,-0.871084922458977,-0.433372235813226,0.0822621635406576,-0.461021396026628,0,-4.97936877638058 +"269",-0.356063641194024,0.509411243256181,-0.227724120656169,0.0699314978657502,-0.253582556428923,0,-4.09855847386992 +"270",-0.187447342810881,0.240820066072047,-0.222006484770167,0.069918221693017,-0.227719574219919,0,-4.02517224822199 +"271",0.0859737709085063,-0.660846466664225,0.0267604077975702,0.069302134401219,0.077501906019185,1,1.33419478599115 +"272",-0.738493245972952,-0.875571895390749,-0.444934732131149,0.0834162796974766,-0.476096764865021,0,-5.12294443876065 +"273",-0.0557383826485634,-0.78194146277383,-0.21581692802697,0.0723550312994096,-0.187452632801386,0,-2.17873538815731 +"274",0.188113231839733,-0.236567296553403,0.211170511211782,0.0653545297297907,0.21453701120061,1,3.87030248124368 +"275",0.0771093808018219,-0.661378170829266,0.0258594124071777,0.0692987614531707,0.0766177286428622,1,1.32021171149408 +"276",0.312746778263467,-0.402694915886968,0.257107201723573,0.067985992377408,0.268991897506625,1,5.06576823605168 +"277",0.0181016059644499,-0.615580929908901,0.0975069325990693,0.0704165388434568,0.144436150738856,1,2.45346915512131 +"278",0.185889879829514,-0.485659957397729,0.228579643038177,0.0700657840772811,0.253278452718294,1,4.62021428098329 +"279",0.222668899709446,-0.637536354362965,0.0646861312039969,0.0696947082182449,0.114004409130121,1,1.92901487781796 +"280",0.242461862949897,-0.0453725806437433,0.0462317631413383,0.0664339451038137,0.0499758304236525,1,0.54874401750622 +"281",-0.155207471264224,0.541474085766822,-0.200482857437693,0.0713550530378562,-0.231642550963383,0,-3.65323877136146 +"282",-0.666492219286693,-0.944425755180418,-0.627142024455611,0.111063455744482,-0.717623605513932,0,-7.34651051045081 +"283",-0.225122648802497,0.0546215539798141,-0.0581767467329064,0.0709837148861777,-0.0588769061953518,0,-1.25899189514454 +"284",0.224789229108798,0.760638137813658,0.163423164699146,0.071758516166703,0.114589819391402,1,1.79125554344187 +"285",0.333472076535075,-0.253873256035149,0.22127075322773,0.0658718547620737,0.224390131128222,1,4.10743587292428 +"286",-0.609304807313454,-0.904081736691296,-0.519411136403571,0.092666549668982,-0.574037312852748,0,-6.03951251382503 +"287",-0.0134945680744034,-0.722743506543338,-0.0882767799171,0.0704128564841647,-0.041531248918966,0,-0.394942005574842 +"288",0.358385124434644,-0.357015759218484,0.256912890866123,0.0685949152944708,0.263734013762645,1,5.0044990189086 +"289",0.24762635382582,-0.690336777362972,-0.0255463628277842,0.0694976553661468,0.0248975525596446,1,0.533884569327481 +"290",-0.171324510711705,-0.735543655697256,-0.114487685503766,0.070864522375833,-0.0703445942950751,0,-0.772973951129054 +"291",0.313998548400848,-0.557388144545257,0.169976221874947,0.0722158703737329,0.20753973956158,1,3.64112616833404 +"292",0.357191047762215,-0.54723840765655,0.180338341552991,0.0722312256410755,0.216062123435417,1,3.81370390766144 +"293",0.0274727735088521,-0.73716693231836,-0.117867606395115,0.0709222103779338,-0.0741050296771435,1,-0.821288195221445 +"294",0.853054423139455,0.963126920629293,0.695295959218582,0.11287616619891,0.798121232151265,1,8.12063235975991 +"295",0.247974930169905,-0.345972546376288,0.255325054778828,0.0686965402031385,0.261211988384832,1,4.95759719178971 +"296",0.00261549674123848,0.0138789941556752,-0.0156541542839257,0.0685756581144643,-0.0145311357808834,0,-0.533100550123867 +"297",-0.180453860949599,0.362885029520839,-0.270610843033878,0.0705346641177815,-0.281352029559994,0,-4.82618419185489 +"298",-0.336536207842207,-0.801661793608218,-0.261632183881998,0.0731104924188366,-0.243039003459786,0,-2.78843892353018 +"299",-0.245618890701245,-0.762194883543998,-0.171523722196542,0.0717624184038694,-0.135169073885021,0,-1.57496565381097 +"300",-0.625754472146459,-0.899120680987835,-0.506336297915544,0.0908200443823824,-0.556749068220376,0,-5.87952841208148 +"301",0.264590864741746,0.858507839497179,0.405620851843448,0.076788497330399,0.408420578850164,1,4.83244180641536 +"302",-0.430488028680705,0.347424465697259,-0.268180849936525,0.0711324980094017,-0.27801014511757,0,-4.78839008039232 +"303",-0.115793622866999,-0.810284289065748,-0.282123869748047,0.0735789556120995,-0.268323641166656,0,-3.05698284924591 +"304",-0.0771661937371063,-0.0148077583871782,0.0144576393586952,0.0671106562816297,0.0169057813489593,0,-0.0118640637905218 +"305",0.0255379317147337,-0.0768963187001646,0.0782123562753117,0.0666673432829085,0.0830169706736094,1,1.12871508473729 +"306",0.105005873991119,-0.249566938262433,0.218855994924914,0.0657177682133148,0.222022910140949,1,4.05029142271786 +"307",0.964159591819288,0.982198439072818,0.749713715507992,0.123781350832585,0.873141354020514,1,8.72181678677111 +"308",0.157667147710883,-0.647298572584987,0.0491810745653275,0.0694742242137293,0.0992513420921432,1,1.68437042027433 +"309",-0.0153675123972998,0.626870417036116,-0.0933828679619413,0.0707238000823686,-0.141201942812887,0,-1.94383543987532 +"310",-0.469045179129484,-0.863106725737453,-0.412932696910766,0.0804086417059791,-0.434471101713557,0,-4.72458897669513 +"311",0.307422344290895,-0.199100506491959,0.185901919428723,0.0653241286528012,0.190140417854212,1,3.29701078073954 +"312",-0.00798647866307628,-0.717711348552257,-0.0781900706063281,0.0702419057430389,-0.030608082813729,0,-0.247880736947405 +"313",0.0218650515413909,-0.613380275201052,0.100636740278964,0.0705004185192665,0.147280279096712,1,2.5039419848823 +"314",0.0688317251700631,0.682703433558345,0.0018011628297174,0.0699039302630367,-0.0531842869192468,1,-0.496893485156741 +"315",-0.118314973053851,0.439827976748347,-0.263829438699708,0.0678003507498012,-0.280856360595712,0,-4.6997768089367 +"316",0.343952387920289,-0.465575833804905,0.239144448995401,0.0691378440510865,0.26043486950991,1,4.7948887042562 +"317",-0.0330589818583294,-0.00999671034514904,0.009416760919315,0.067308675408687,0.0116465741206327,0,-0.0997024224784738 +"318",-0.459934889525007,-0.83377220435068,-0.339238928150106,0.0756044968552835,-0.339962385135083,0,-3.79402253315684 +"319",0.246063014558498,-0.292231518775225,0.239714942005767,0.067597823368072,0.242972417016522,1,4.55463639462119 +"320",0.579803129708848,0.938417610712349,0.62522892537018,0.100378183624016,0.702004195995659,1,7.3422087048159 +"321",-0.399792678936062,0.249428379349411,-0.227416883156022,0.0701181219085065,-0.23336090039944,0,-4.11563889354564 +"322",-0.187456864229292,0.32923649949953,-0.263816822470354,0.0715324942347988,-0.272697501249509,0,-4.71833692450473 +"323",0.239632514999839,-0.375020687002689,0.258240666421917,0.0683305098762918,0.266839845316684,1,5.05427263884471 +"324",0.13531022181565,-0.18862077454105,0.178067640077447,0.0655636183817248,0.182577282172886,1,3.12463873525065 +"325",0.896810304910859,0.992154743056744,0.778185192580771,0.129816347502653,0.912460365888448,1,9.0357342525905 +"326",0.137716098473762,0.710164712741971,0.0551551894824982,0.0702514277064663,-0.000378387312963024,1,0.282122397666577 +"327",0.427169511946633,0.907096792012453,0.537583329016508,0.0878831673157986,0.583056879537492,1,6.35678126451932 +"328",-0.181691637092446,0.624610184691846,-0.0968386008693405,0.07078542410949,-0.144251962121849,0,-1.99772295781346 +"329",-0.148238023033037,0.564364231657237,-0.176669559863376,0.0718200873336899,-0.212145633909842,0,-3.26704100930265 +"330",0.29316659590593,-0.464243742171675,0.239759421214155,0.0690822302846318,0.260829140319722,1,4.80495291840023 +"331",-0.297602278987567,0.524303059093654,-0.215941754983158,0.0706585817094914,-0.244157363177951,0,-3.90540002639971 +"332",0.861371014352946,0.972623178269714,0.722366220667097,0.118187725172273,0.835411934490775,1,8.41995101872325 +"333",0.252853812747703,-0.412788901943713,0.25569903179045,0.0679564785103561,0.268929871288772,1,5.05021267976827 +"334",0.353299686813417,-0.201297786086798,0.187504030090392,0.065285336759509,0.191685531885974,1,3.33256508125085 +"335",-0.127449609218681,0.624263047706336,-0.0973665037585452,0.0707949428961593,-0.144717016969033,0,-2.00596307057478 +"336",-0.429476183942094,-0.845696661621332,-0.368902071918952,0.0772021780803874,-0.377754432494967,0,-4.1710471823975 +"337",0.350746829085141,-0.272606380283833,0.230984128842946,0.0666779069644583,0.234030525342851,1,4.34040621752119 +"338",-0.0154490005864165,-0.114815065637231,0.114940855464335,0.0672243981118272,0.120426412596152,0,1.82295436917484 +"339",0.093104798049795,-0.686571734957397,-0.0186081932104644,0.069431657765218,0.0320228026507347,1,0.638694316654124 +"340",-0.0324371958685932,0.164410540368408,-0.16388702460666,0.0702256301599049,-0.16784107430169,0,-3.04829926981652 +"341",0.60599315422338,0.940324357710779,0.630611868254744,0.101266536553928,0.709362175323467,1,7.40225123975785 +"342",0.930046840254232,0.97899966686964,0.740573157327327,0.121888121269057,0.860525665160501,1,8.62096847365672 +"343",0.200261647285089,-0.647095927037299,0.0495085196953871,0.0694780195982617,0.0995653573334163,1,1.68951608122317 +"344",0.0286789969949306,0.0842608488164842,-0.0884012372635924,0.0718550224348924,-0.0902165385564687,1,-1.77180038338607 +"345",0.359010551053362,-0.231392215937376,0.207949709408368,0.0652581393422522,0.211415545154808,1,3.79569156767647 +"346",-0.0730506986090236,0.352328101638705,-0.269081034162442,0.0709632797305392,-0.279188588702315,0,-4.80256870915584 +"347",0.284959424805998,-0.46141244051978,0.241031591362661,0.0689674215077597,0.261634688675116,1,4.82571734622697 +"348",-0.0236861081522624,-0.0614981153048575,0.0627210472050873,0.0664648304657319,0.067052476258583,0,0.845449290557546 +"349",0.0150792387017091,-0.656399835366756,0.0342334946719949,0.0693404829007172,0.0848053896515162,1,1.45043966685285 +"350",0.295317920725265,-0.261621075216681,0.225446203660992,0.0661830543123653,0.228507279647833,1,4.20695241859204 +"351",-0.424865745326608,0.450810545124114,-0.260122305803541,0.0678294690453424,-0.278322524608053,0,-4.63684900963703 +"352",0.0776826552511224,-0.0277017913758755,0.0279250436045252,0.0666998075435657,0.0309425079092695,1,0.224180862872134 +"353",-0.571009725804581,-0.872395066544414,-0.436743470790036,0.0825907532199621,-0.465412819515194,0,-5.02127041207728 +"354",-0.292992926015616,0.569092459976673,-0.171290286200275,0.0718372051336884,-0.207706895284352,0,-3.18017587658209 +"355",0.188828698212178,-0.163356728386134,0.157937679051098,0.0663618188314381,0.163038488071097,1,2.69283601058931 +"356",0.759756135332721,0.962036169599742,0.692190740357676,0.112282536600658,0.793848110580012,1,8.08625676707191 +"357",0.187632810530212,-0.434232088271528,0.250872490086077,0.0681593901130026,0.267189608262571,1,4.98186536795979 +"358",-0.0885150799880686,0.695764299016446,0.0266648820457854,0.0700064444467729,-0.0288897678591983,0,-0.13097488431411 +"359",-0.189383266624371,-0.835521538276225,-0.343563860389208,0.0758114768484249,-0.345449594473962,0,-3.84921882606139 +"360",0.0134163574499087,0.772917501162738,0.191624545899336,0.0721560259343403,0.146273122426869,1,2.1684623174232 +"361",0.066670765409899,-0.0561385382898152,0.0572677169678922,0.066429513390393,0.0614133340282704,1,0.746815076929635 +"362",-0.220566980525245,-0.781798073090613,-0.215489408015193,0.0723505156325613,-0.187060422318068,0,-2.17432604068068 +"363",0.555470470285705,-0.333444030955434,0.252833234045863,0.0687052638139899,0.257815184620628,1,4.88939640032994 +"364",-0.0759781514315651,0.674833138473332,-0.0127214228946766,0.069901489957149,-0.0671223056886237,0,-0.712945471572657 +"365",0.450451103872214,-0.446300316601992,0.247027603223192,0.0684462087311332,0.265201539080342,1,4.92216876395595 +"366",-0.0771472072770096,0.174070282839239,-0.172119825509727,0.0699779360029548,-0.176287446648082,0,-3.18708346454668 +"367",-0.219203135499862,0.673464539460838,-0.0152109564340644,0.0699056596042553,-0.069493031283398,0,-0.750153824899415 +"368",-0.352659720577729,-0.85769195202738,-0.399151673830427,0.0792917511220506,-0.416646093144637,0,-4.55205952097393 +"369",-0.202525879382034,0.405557486694306,-0.27088176708077,0.068578508136139,-0.284716576138767,0,-4.82261538015165 +"370",-0.269350614466201,0.397649074438959,-0.271569141746677,0.068905390582401,-0.284761338568727,0,-4.83553343115589 +"371",-0.123851930786283,-0.0720752379857004,0.0733923306266136,0.0665913552746765,0.0780591601329238,0,1.04006216911684 +"372",0.346659762101698,-0.126137779094279,0.125424102158532,0.0672211547671827,0.130948859998768,1,2.02855292082128 +"373",-0.139281332502788,0.124353575520217,-0.127570156748994,0.0714191807073814,-0.130570066549026,0,-2.43497821108944 +"374",0.26160618733899,0.856966452673078,0.401536271832834,0.0765878037036906,0.403131663029559,1,4.78419650496366 +"375",0.35060428108364,-0.539067171514034,0.188171739291592,0.0721401897642865,0.222411131764171,1,3.94445579591337 +"376",0.187214070568869,-0.556372491177171,0.171044618647288,0.0722237054143069,0.208424653056869,1,3.65889688336266 +"377",0.175998308554192,-0.159568213392049,0.154776320169837,0.0664863539597362,0.159950826642316,1,2.62645450974286 +"378",0.181261640878116,-0.332958388607949,0.252722135561222,0.0687027519707371,0.257672455343874,1,4.88643294105202 +"379",-0.131899747120216,0.72961510065943,0.095367873255693,0.0707554722195251,0.0410946883297536,0,0.853891661158297 +"380",0.0906598788064567,-0.645610928535461,0.0519008646497939,0.0695068808758301,0.101856387842774,1,1.72713817062796 +"381",0.0884557644444684,-0.0133625427260995,0.0129441121730443,0.067167711948662,0.015326947124672,1,-0.0382652452141227 +"382",0.133315233528948,-0.140573266427964,0.138406765180141,0.0670158142518695,0.143856934602409,1,2.288901734296 +"383",-0.121523396807077,0.12852768599987,-0.131501885638669,0.0713058297808372,-0.134609187701179,0,-2.50145611645631 +"384",-0.229177557671796,0.312324631027877,-0.258360401311035,0.071561436004709,-0.266467449392771,0,-4.62928407802521 +"385",0.836284270147085,0.95710812555626,0.678173416657963,0.109645557799883,0.774572014756676,1,7.93096016006559 +"386",0.202099783492097,-0.535677703097463,0.191289043063392,0.0720771781777378,0.224912887077441,1,3.99654827688077 +"387",0.209468300614496,-0.518376807682216,0.206012818746616,0.0715611836789782,0.236505558206354,1,4.24292786887966 +"388",-0.24855382113005,0.593672167975456,-0.140850558978511,0.0715762818754849,-0.18225611165393,0,-2.69197697368578 +"389",-0.217754170965914,0.663343430031091,-0.0332873852967692,0.0699777586238343,-0.0865441499091713,0,-1.02182574635637 +"390",-0.294908727456276,-0.772984587121755,-0.195520902419016,0.0720840452373646,-0.163299946209185,0,-1.90399714370021 +"391",0.586003225213288,0.926624032668769,0.592043954469748,0.0951966895170782,0.656764204137688,1,6.97095456803842 +"392",-0.0707560836053351,-0.705354200676084,-0.0539542048186423,0.0698576081947245,-0.00473976192082502,0,0.109060807654716 +"393",-0.0505119747471946,-0.712746114470065,-0.0683600400804491,0.0700803083302948,-0.0200515426519577,0,-0.103716424334777 +"394",0.258209240327871,0.850459870416671,0.384373476340756,0.0758246867653833,0.381001522446841,1,4.58062768783029 +"395",-0.103106192130166,0.0140712051652372,-0.0158560131620819,0.0685872648751662,-0.0147419489242636,0,-0.536569693651742 +"396",0.18225569201836,-0.690297965891659,-0.0254744611650252,0.0694969203958714,0.0249716219868498,1,0.53496861639466 +"397",0.284725187023195,-0.303395895753056,0.24398735123113,0.068059882467837,0.247524899421491,1,4.6615093155003 +"398",-0.22821512083676,0.319642051588744,-0.260882091968215,0.0715863310085179,-0.269311851874681,0,-4.67056716584025 +"399",0.267299476195525,-0.376455251127481,0.258277721473687,0.0683078384210797,0.26703140861614,1,5.05680925272211 +"400",0.152765776988194,-0.296853181440383,0.241546140196883,0.0677987211029553,0.244904245560827,1,4.60025669194951 +"401",-0.0536252074033205,-0.704308586195111,-0.0519387335519025,0.0698281867202363,-0.00261264241673356,0,0.138972318154716 +"402",-0.290688065329451,0.317755218129605,-0.26025504870705,0.0715850770686677,-0.268599889637992,0,-4.66031895943581 +"403",0.13889164963077,-0.629860070999712,0.076487613233979,0.069916989310855,0.125072965179604,1,2.11657037910008 +"404",0.588741955704676,0.908756273798645,0.54218494704616,0.0884406711331274,0.589255040170563,1,6.40894637379533 +"405",0.39250557878319,0.795696984045208,0.245735380374588,0.072845131092264,0.209098630489948,1,2.87364776191197 +"406",0.476171752974946,0.887394108809531,0.48338453928945,0.0821907443547596,0.510542337585482,1,5.73791227150884 +"407",-0.343190825799323,0.44738150248304,-0.261357091052971,0.067804886839571,-0.279182721122896,0,-4.65774820566945 +"408",0.0605090413147843,-0.259285868145525,0.224210852754853,0.0660851740038289,0.227285609271419,1,4.17741398889732 +"409",-0.307078708120252,0.562035080511123,-0.179261904557065,0.0718021025097558,-0.214279496330766,0,-3.30895736995471 +"410",-0.63188903058856,-0.977700982708484,-0.717274364469671,0.129923306866621,-0.838776346141518,0,-8.42994820729332 +"411",0.515517271049803,0.880617424380034,0.464946204652025,0.0806229095466646,0.486102959996251,1,5.5252764170466 +"412",1.02930082537549,0.987498452421278,0.764866613113784,0.126968421015021,0.894063915988105,1,8.88892009545582 +"413",0.259583323454088,-0.285188509617001,0.236757393163523,0.0672741324280447,0.239900591042648,1,4.48149031848137 +"414",-0.23449663285299,0.495270126964897,-0.237548999286454,0.0692312903166679,-0.261330366600741,0,-4.26043829049383 +"415",-0.200309209346763,0.585818047635257,-0.151023032462501,0.0717140729132739,-0.190830142339273,0,-2.85444798649982 +"416",-0.216425592088994,0.41171801276505,-0.270106342202758,0.068354342056115,-0.284465218234759,0,-4.8085964849723 +"417",0.192557306185555,-0.0483499225229025,0.0492938987920188,0.066421733561246,0.0531525371923757,1,0.603506340535673 +"418",0.100824210189608,-0.0106909479945898,0.0101445716266109,0.0672786923571344,0.0124060466168401,1,-0.0870362429871586 +"419",0.248538171295406,-0.383895102422684,0.25830402955897,0.068193949107216,0.267887841341006,1,5.066568897181 +"420",-0.260745007677278,0.390024492517114,-0.271908458979461,0.0692513688114685,-0.284512196895908,0,-4.84263812483265 +"421",-0.252370842823073,0.645586611237377,-0.0635498166930092,0.0702638073310375,-0.114454497657673,0,-1.48252976978019 +"422",0.239968379296432,-0.13056471850723,0.129452692353045,0.0671820143476096,0.134969117826615,1,2.10864142159833 +"423",0.151968329267629,0.0294653056189418,-0.0319998256614684,0.0695439336725789,-0.0315971563823532,1,-0.813171085468188 +"424",-0.407819868461032,0.326021935325116,-0.262881207791132,0.071562128102462,-0.271607180955488,0,-4.70314716372023 +"425",-0.0151119206645864,-0.713666826952249,-0.0701735848994146,0.0701096387970212,-0.0219925242087344,0,-0.130376064300905 +"426",0.162831308016301,-0.311025212518871,0.246606142919995,0.0683187835317509,0.25041110564725,1,4.7278408543168 +"427",0.0553352576526187,-0.188472835347056,0.177954800924858,0.0655675668340458,0.182468228435722,1,3.12217391667491 +"428",-0.204751019200095,-0.829377988353372,-0.328416837880396,0.075122964106053,-0.326268167152788,0,-3.65555133217703 +"429",0.546605008935611,0.865143856499344,0.423285229261085,0.0777459790193822,0.431386493093645,1,5.04023554562231 +"430",0.146167773451651,0.676768133416772,-0.00918338915711511,0.0698979098570296,-0.0637437624367105,1,-0.660152699433178 +"431",0.165180599011501,0.758866592310369,0.159412286426763,0.0717000085945981,0.11014238927364,1,1.7370721242133 +"432",0.26978789265675,0.871424935292453,0.440119330201285,0.0788004127891938,0.453406884761068,1,5.23704048753545 +"433",-0.346403277661368,-0.855078733060509,-0.392528270602162,0.0787922981198106,-0.408102122802731,0,-4.46891217692631 +"434",0.144577809448409,-0.242481118999422,0.214739592571174,0.065499357825172,0.218005655676497,1,3.95353899123304 +"435",-0.094767673972119,0.0757298455573618,-0.0797912015634238,0.0717248468924693,-0.0813096205218692,0,-1.62581466478071 +"436",-0.171607418863272,-0.789899722672999,-0.234123967679991,0.0726221274529533,-0.209496652590273,0,-2.42400952296094 +"437",-0.157008179600971,0.603375411126763,-0.127716458464082,0.0713569480327046,-0.171073613130818,0,-2.48328682105365 +"438",-0.179673908399291,0.479283491615206,-0.247094622992152,0.0685338858324441,-0.268708635327255,0,-4.4186447691277 +"439",-0.607047081885066,-0.895701973233372,-0.497352709204125,0.0896049571574215,-0.544891897199194,0,-5.76939442744623 +"440",-0.0321763556638656,-0.0356608536094427,0.0361961203922006,0.066537803453188,0.0395498951958794,0,0.370248523079611 +"441",0.367144238827098,0.841035681311041,0.359751097661079,0.0749376708984107,0.349531753248029,1,4.28603565042415 +"442",-0.53718960825914,-0.916943142190576,-0.553503235086372,0.0979002207507171,-0.619274563619442,0,-6.45510190627629 +"443",0.232907549224969,-0.412016401998699,0.255826058457099,0.0679561660970536,0.268951321842454,1,5.05177797388711 +"444",-0.0685957951987364,0.00170097453519702,-0.00286118416035363,0.0678785755235672,-0.00117078423387798,0,-0.312616724370267 +"445",-0.299360680433013,0.219497870188206,-0.207529069159175,0.0695965919729215,-0.212713234327985,0,-3.78258624201635 +"446",0.186775854031122,-0.471501900814474,0.236280421009003,0.06939631153611,0.258561299253225,1,4.74782673796792 +"447",0.118170980799362,-0.153802780900151,0.149897762634498,0.0666677562125428,0.155173707439457,1,2.52477328997722 +"448",0.112278539012976,-0.266872767359018,0.228150420569433,0.0664136800705451,0.231193871442674,1,4.27190251046921 +"449",0.570470127990883,0.88501064479351,0.476886829718837,0.0816170504746767,0.501915358002448,1,5.66311111032079 +"450",-0.30549618911306,-0.752552869729698,-0.150514082426517,0.0714541227470031,-0.110952910970057,0,-1.2828431205038 +"451",-0.427304795990986,-0.859934641513973,-0.404850296533234,0.0797407830331042,-0.424009230591362,0,-4.62347853211151 +"452",0.528512572356012,0.928634075913578,0.597685717362991,0.0960406468874458,0.664439802465757,1,7.03421394622421 +"453",0.233554723797094,-0.114979783538729,0.115095136622228,0.0672252454624884,0.120581864457343,1,1.82595248099612 +"454",0.17340661797214,-0.259455239400268,0.224301127720913,0.066092163724692,0.227374775595971,1,4.17956979547549 +"455",0.0913356486467048,-0.71762982616201,-0.0780276882674152,0.0702391894987445,-0.030432987530608,1,-0.245506061343322 +"456",-0.567992324076968,-0.891619141213596,-0.486653375477313,0.0882158284835166,-0.530794093718952,0,-5.63799099044205 +"457",-0.274026915685768,0.315656138584018,-0.2595384703601,0.0715793881750997,-0.267790244563667,0,-4.64859278447172 +"458",-0.250749696305876,0.15632383339107,-0.156826979724024,0.070459835324496,-0.160599193636176,0,-2.92920451593283 +"459",0.566739692661759,0.974203527905047,0.726876678884474,0.119095323520959,0.841631306162431,1,8.46976907090916 +"460",-0.0250802061893272,0.207584802992642,-0.198812393886034,0.0695521865874374,-0.203720923702634,0,-3.63623968020236 +"461",-0.588482168322865,-0.870100162457675,-0.430840960813833,0.0820197175014248,-0.457726350420863,0,-4.947885181341 +"462",0.315062027865089,-0.675781836267561,0.000857906722194768,0.0693060717773866,0.0517741299241042,1,0.934956029500866 +"463",0.0815252790609214,-0.0492041590623558,0.0501710927978189,0.0664198408350735,0.0540621252326559,1,0.619220882679383 +"464",-1.03731497933533,-0.996134330518544,-0.767425854874464,0.141365028435339,-0.906362767306625,0,-9.03107862275138 +"465",0.183761639332735,-0.117081713862717,0.117059394296307,0.0672339163541385,0.122559541374419,1,1.86419315427078 +"466",0.347588627616404,-0.478140525519848,0.232821352956902,0.0697034114115593,0.256227479940934,1,4.69065846904699 +"467",0.448653344374312,0.876827490981668,0.454683945764538,0.0798300211967265,0.472557412266368,1,5.40641181422586 +"468",-0.257166427560349,0.431666567455977,-0.266122194846918,0.0678717567007016,-0.282326054556599,0,-4.73904401602231 +"469",0.246271669595876,-0.673829043284059,0.00431404157128365,0.0692940451779363,0.0552437364768241,1,0.987895056355794 +"470",-0.0931312349837619,-0.0476239630952477,0.0485479422035686,0.0664239004642948,0.0523788813764258,0,0.590152421654631 +"471",-0.275232302080031,0.380513445939869,-0.271893888257826,0.0697063731683056,-0.283804771231657,0,-4.84422747944673 +"472",0.156668314269436,-0.0782096409238875,0.0795202729916208,0.0666893904502515,0.0843606696864203,1,1.15285662704383 +"473",0.456904810222429,0.910293476656079,0.546452183903988,0.088967869504472,0.59500806944767,1,6.45727283023426 +"474",-0.450454749374876,0.425080244895071,-0.267689580934554,0.0679852069469665,-0.283258617735698,0,-4.76612716549047 +"475",0.323735458939432,-0.205704133491963,0.190673533196084,0.0652211419339481,0.194741421317777,1,3.40321121839522 +"476",-0.204063745575301,-0.764558775816113,-0.176737870070913,0.0718343238759832,-0.141239752337783,0,-1.64686775658166 +"477",0.135183320211787,-0.519767453894019,0.20490199347499,0.0716129903499182,0.235645361842706,1,4.22432730230285 +"478",0.0384312151292263,0.727261133026332,0.090397845236427,0.0706863851119636,0.0358905864791218,1,0.78394261070506 +"479",0.0684131906846575,-0.128047196660191,0.127166700361779,0.0672070588222425,0.132689534769026,1,2.06311866608122 +"480",-0.0516229341752609,-0.00426389602944255,0.00340244334409747,0.0675734011321228,0.00536911089529296,0,-0.20417207672392 +"481",-0.412724408503557,0.383855344261974,-0.27195389461397,0.0695449286599779,-0.284103124779127,0,-4.84458290209661 +"482",-0.329188786888704,0.520626563578844,-0.218989370035733,0.0704853908237908,-0.246606435598411,0,-3.95527320899605 +"483",0.119232464572097,-0.689197554718703,-0.0234391439830054,0.0694765487808836,0.0270663142824162,1,0.565673089378905 +"484",0.033844780198634,0.698914186097682,0.0328013992853882,0.0700488524422642,-0.0228095951771344,1,-0.0414383692009395 +"485",0.469869223125642,0.893635638058186,0.500462622253861,0.0838094992439697,0.533288384480457,1,5.93386116944882 +"486",0.0757722475466761,0.176838380750269,-0.174437072858262,0.0699152765061055,-0.178665456766143,1,-3.22612711764663 +"487",0.143589364392605,0.00450163055211306,-0.00580326108470073,0.0680310525005275,-0.004243142891324,1,-0.363437103697556 +"488",0.0688700722231828,-0.620440164580941,0.090491745103696,0.0702366194007616,0.138024236108585,1,2.34062718721165 +"489",-0.991488809037023,-0.996326283551753,-0.767948346892653,0.14148696010213,-0.907067094957583,0,-9.03733945936633 +"490",-0.217522868158294,0.755156124476343,0.151059475710285,0.0715769817441816,0.100927209656371,0,1.62380549196239 +"491",0.0437530261694994,-0.731777324341238,-0.106693730317397,0.0707305203501857,-0.0617122519603643,1,-0.661185721401133 +"492",-0.728878084826863,-0.954517551697791,-0.654392688181493,0.116489218017994,-0.754186009516824,0,-7.67473650150937 +"493",0.426893828611324,0.878273412119597,0.458594860450821,0.0801255406890984,0.477714630213622,1,5.45175587873137 +"494",0.252683144835056,-0.414102554321289,0.255475635889378,0.067958053051974,0.268886954328594,1,5.04740800651407 +"495",0.0748194385134598,-0.671346851158887,0.00867721440169123,0.0692836873427422,0.059607811483542,1,1.05487323976867 +"496",0.287110991455311,-0.201794888358563,0.187864501011665,0.0652771709854922,0.192033130877013,1,3.34057907584495 +"497",-0.0171995821823872,-0.0808491758070886,0.0821420803313236,0.0667349838946444,0.0870520461740285,0,1.20136350328089 +"498",0.233980054087997,-0.131938302889466,0.130694331948172,0.0671653306801866,0.136205444412843,1,2.13345220185308 +"499",0.0416100071099232,0.0340196527540684,-0.0367625728075516,0.0698270110899615,-0.0365666409402842,1,-0.894493668263932 +"500",-0.0986557702994332,0.692491505295038,0.020346204002408,0.0699694839784459,-0.0351155753655781,0,-0.223489904590534 +"501",-0.547390730631437,-0.889671427197754,-0.481560893579268,0.0875770712930363,-0.524093553850578,0,-5.57535457992976 +"502",0.0783008551986204,0.108354122377932,-0.112225686797847,0.0717623895857314,-0.114789326205385,1,-2.17536853146299 +"503",-0.285444526319463,0.376550475135446,-0.271746346889421,0.0698980465661703,-0.283381598969135,0,-4.84253126061631 +"504",-0.391917388796667,0.316115107387304,-0.259696855025449,0.0715810112813644,-0.267968853215312,0,-4.65118588878221 +"505",-0.404265896161364,0.326685450505465,-0.263078288525846,0.0715569936098965,-0.271835889988799,0,-4.70635023511114 +"506",0.0482372095248435,-0.055531594902277,0.0566483584160657,0.0664269679972442,0.0607723116672058,1,0.735645698554907 +"507",0.741037882453704,0.939056332223117,0.627031588082134,0.10067424208982,0.704467700708855,1,7.36232117179723 +"508",0.205679455378643,-0.195605874527246,0.183324663903966,0.0653944859843809,0.187653941707782,1,3.24003365384241 +"509",-0.0421768634733231,0.699104207567871,0.0331733147337162,0.0700516205188073,-0.0224400217092343,0,-0.0360217032362726 +"510",-0.44036053613578,0.513289814814925,-0.224798625195989,0.0701257989609318,-0.251253907607296,0,-4.05050834811989 +"511",-0.109635641558868,0.0652024387381971,-0.0690614753643639,0.0714288897441763,-0.0701869621057908,0,-1.44378971648394 +"512",0.182370459940665,0.748299321625382,0.135796182231417,0.0713494010589251,0.0842510568293953,1,1.41534036193949 +"513",-0.166796337922106,-0.0657697687856853,0.0670459132519818,0.0665079193893699,0.0715180177693395,0,0.924057570158671 +"514",-0.858899221158234,-0.98374308925122,-0.733704958926835,0.133610661479111,-0.860912577176602,0,-8.62695288664616 +"515",-0.413791174002464,0.455534009262919,-0.25830538387972,0.0678860387093959,-0.277034101702594,0,-4.60618684012304 +"516",-0.292517003405528,0.433178957551718,-0.26572675400491,0.0678526380676623,-0.282080060534804,0,-4.7322460073938 +"517",-0.00382083846621986,-0.62514725793153,0.083560290373973,0.0700713290278975,0.131638955436022,0,2.22952678572794 +"518",-0.160208669640952,0.292134553659707,-0.250180010663313,0.071255825525347,-0.257483241167315,0,-4.49444418743415 +"519",-0.142047532843163,0.0839585596695542,-0.0880975589480945,0.0718520146489956,-0.0899026506819149,0,-1.76665264875738 +"520",0.300099714233301,-0.329358480405062,0.251865267756991,0.0686766916890489,0.256589361798819,1,4.86372325066886 +"521",-0.313866887316007,0.275817446410656,-0.242320206904527,0.0708432793633363,-0.249055928914711,0,-4.36407673144714 +"522",-0.205896338648699,0.658402127679437,-0.0418962659746967,0.070038290179968,-0.0945645820360714,0,-1.15213592701793 +"523",-0.422888856846049,0.417950396891683,-0.269105265292506,0.0681605143547008,-0.284015855938584,0,-4.79085467127135 +"524",0.131724186892815,-0.302899298258126,0.243808339047366,0.0680411955513779,0.247330693167345,1,4.65699966942937 +"525",-0.113626860025143,-0.743344250135124,-0.130843012962128,0.0711399664988792,-0.0886362472343826,0,-1.0058438567927 +"526",0.339956518816009,-0.223843022249639,0.203091658170558,0.0651708487822166,0.206718540834077,1,3.68403058536612 +"527",0.456616721614546,0.856355096679181,0.399918180787907,0.0765103798306096,0.401038786816489,1,4.76506325534937 +"528",-0.221383948673431,0.608781542629004,-0.120130835236464,0.0712184241372465,-0.164554982666353,0,-2.3633325974766 +"529",-0.216404610384358,0.517393614165485,-0.221593811412589,0.0703287616137922,-0.248693608726914,0,-3.99794127749403 +"530",0.515033112306373,0.914499777834862,0.558151200494378,0.0904631475384056,0.610805673012277,1,6.58953473494982 +"531",0.878495497456885,0.987827757373452,0.765808377968534,0.127168408781375,0.895364566414918,1,8.89930299871647 +"532",-0.177813882996362,0.212881989311427,-0.202741519142165,0.0695589456765843,-0.207771255213123,0,-3.70223028710183 +"533",-0.458129044911362,-0.941245669033378,-0.618575057309122,0.109414652939618,-0.706145194959581,0,-7.24316712999012 +"534",0.280054326896902,-0.327109284233302,0.251300235667625,0.0686535096756846,0.255890432758017,1,4.8488707779653 +"535",0.278842437867716,-0.44468382652849,0.247590703823885,0.0684007167532428,0.265511397521511,1,4.93105545261103 +"536",-0.36216629654863,-0.765604899730533,-0.179053199804799,0.0718657579932874,-0.143943023261417,0,-1.67872095563998 +"537",-0.49376397215778,-0.913563481997699,-0.54451873649315,0.0964638798744781,-0.607332005493377,0,-6.34578474963893 +"538",0.349316092348953,-0.259380428586155,0.224261266516072,0.0660890742009542,0.227335401857009,1,4.17861783882957 +"539",0.0944715284737343,-0.32624338241294,0.251076657151828,0.0686431203397496,0.25561684922244,1,4.84301688888765 +"540",0.0963193618523989,-0.652694893069565,0.0403751158302138,0.0693861173542296,0.0907672203255277,1,1.54632785759843 +"541",-0.298381095037049,0.243546559009701,-0.223748079733336,0.0699780448520535,-0.22953306908193,0,-4.05430623816464 +"542",0.199140530527017,-0.204312745016068,0.189678990703349,0.0652393891431131,0.193782618848153,1,3.38099928820454 +"543",0.552414959687061,0.911351537331939,0.549391913514884,0.0893367451840098,0.598974264650345,1,6.4905388784339 +"544",-0.146465638741005,0.306698886211962,-0.256258846612753,0.0715078901950267,-0.264129580814741,0,-4.59475758218298 +"545",0.283929761495015,-0.34251256659627,0.254709446844066,0.0687120358896818,0.26032959600335,1,4.94035194499204 +"546",0.169820635291783,-0.605706572998315,0.111317924717731,0.070799987619278,0.156908853266794,1,2.67678339708893 +"547",-0.102540339044815,-0.769315350335091,-0.18730375927562,0.0719759344750695,-0.153613087484288,0,-1.79186336135532 +"548",0.778278730141956,0.991930957417935,0.777544992397204,0.129678506159509,0.911575976111748,1,9.02867812216259 +"549",0.0958405874771684,-0.241446549538523,0.214123899172237,0.0654714545833233,0.217406440465099,1,3.93913750660693 +"550",0.016495517284991,0.123976185452193,-0.127213157897443,0.0714290441159703,-0.130203238115888,1,-2.42894117995315 +"551",-0.244721701820841,0.465436035301536,-0.254055551266487,0.0680867214001054,-0.273940240914306,0,-4.53480445714907 +"552",0.114856193945366,0.741611105855554,0.121126777775863,0.0711300828079963,0.0684218466784116,1,1.21317442838186 +"553",-0.278883992146682,0.14434051932767,-0.146100809974527,0.0708299841251837,-0.149595519428171,0,-2.74813535570031 +"554",-0.675316443791349,-0.977927858009934,-0.717891098837674,0.130060531510695,-0.83960707389146,0,-8.43734461210072 +"555",0.206686180796845,0.812630522530526,0.287395487159147,0.073377795294325,0.259268062297386,1,3.40014893817922 +"556",-0.175397756986748,0.541307263076305,-0.200642857027458,0.0713494586718344,-0.231772747392121,0,-3.65584226127565 +"557",0.18288486702725,-0.234990753233433,0.210198880911717,0.0653220887095242,0.213594582821266,1,3.84774467558891 +"558",-0.166172037292707,-0.811908222269267,-0.286012925441421,0.0736806745433705,-0.273149059216993,0,-3.10768617839652 +"559",-0.651768121488686,-0.900692832190543,-0.510474868787678,0.091394587335667,-0.562217392727976,0,-5.93020657288951 +"560",-0.0139200796500177,0.642324636224657,-0.068903853206343,0.0703348573057844,-0.11931032722471,0,-1.56480025008172 +"561",0.0131256162589626,0.658648608718067,-0.0414702371236695,0.0700348970656068,-0.0941691879519095,1,-1.14567322067594 +"562",-0.329267303422843,0.309465751517564,-0.257309934052969,0.0715377240621522,-0.265295644850096,0,-4.6120380174694 +"563",-0.223466514841062,-0.734344373922795,-0.111998602187421,0.0708218535656662,-0.0675818377361704,0,-0.737330418578495 +"564",0.293142616544937,-0.316380197647959,0.248294983984772,0.0684641277012851,0.252327340208319,1,4.77101327049437 +"565",-0.499368122817738,0.462743157986552,-0.255270816645824,0.0680215328546926,-0.274834605754786,0,-4.55517434715005 +"566",0.339489967881915,0.814582832157612,0.292272785850621,0.0734493614182318,0.265235467607279,1,3.46093181099981 +"567",-0.196032276565662,0.392393998801708,-0.271836721174729,0.0691413462900618,-0.28462013043289,0,-4.84098909046593 +"568",0.31957539244546,-0.516841555479914,0.20722454785407,0.071502247992681,0.237440884952397,1,4.26321885842816 +"569",-0.274538250709645,0.288214457221329,-0.248390784998675,0.0711660192871498,-0.255551458950805,0,-4.46482190114853 +"570",0.452253421621626,-0.438499572686851,0.249607286805176,0.0682466906038831,0.266571893694296,1,4.96250922203161 +"571",0.60340665266501,0.915273041464388,0.560305371617695,0.0907463807866861,0.613718431048232,1,6.61385286514474 +"572",-0.0517550750871291,-0.683208086527884,-0.0124730989782754,0.0693820929252451,0.0382860262308052,0,0.731716428468103 +"573",0.115695190407272,-0.163322016596794,0.15790887579201,0.0663629721578387,0.163010383313534,1,2.69222946145924 +"574",0.125595839250545,-0.495980405248702,0.222190134109625,0.0705699574970872,0.248690522063976,1,4.51365697902039 +"575",-0.384296861039548,-0.811219464521855,-0.284362331754397,0.0736369585345458,-0.271100045213278,0,-3.0861765887609 +"576",-0.07185220455159,0.655435539316386,-0.0469957147925966,0.0700820940798687,-0.0992851296512654,0,-1.22960597603464 +"577",-0.0456949551039143,0.0506110074929893,-0.0540284375983852,0.0707828905904635,-0.0545603696824387,0,-1.18849901387786 +"578",-0.313847390623369,0.335495254956186,-0.265498448025161,0.0714394655115754,-0.274691214756481,0,-4.74551642947205 +"579",0.149229654936968,-0.183444480411708,0.174083133713587,0.0657094344970054,0.178723838803485,1,3.03790791402307 +"580",-0.0573647468657236,0.68517980678007,0.00644274042949022,0.0699140203752035,-0.0486904026905525,0,-0.428201871993408 +"581",-0.2914190873571,0.474610935896635,-0.249577563727286,0.0683635243107916,-0.270593033567062,0,-4.45998777788386 +"582",0.424539699822187,-0.303551197983325,0.244043121121678,0.0680656844567846,0.247585475217563,1,4.66291487094604 +"583",0.4905228643862,0.89787635486573,0.512115825282283,0.0850066057118149,0.548865710905067,1,6.06705027801758 +"584",-0.173922915930966,0.293358379974961,-0.250725498169314,0.0712822528686484,-0.258074084560165,0,-4.50346764792424 +"585",-0.710396387333027,-0.92944446625188,-0.58688165013644,0.103573194416916,-0.663758948954784,0,-6.86008205265423 +"586",-0.284692818972703,0.192896911408752,-0.187490769951026,0.0696432328505155,-0.192071357807109,0,-3.44589778322707 +"587",0.0657305473566866,-0.169363996945322,0.16287648170278,0.0661607832295805,0.167850527913004,1,2.79731425217964 +"588",-0.349978802089751,-0.846205923706293,-0.370178188791509,0.0772806156770713,-0.379388231378915,0,-4.18718846188725 +"589",-0.112924404355535,0.0560977584682405,-0.0597007211493464,0.0710536110925745,-0.0604618938091618,0,-1.28487861484579 +"590",0.672348693870538,0.924666617065668,0.586555859264598,0.0943907347540678,0.649304272755155,1,6.90935798611916 +"591",-0.237886107632059,0.417480102274567,-0.269188462898158,0.068173878225316,-0.284056653166553,0,-4.7923190494503 +"592",-0.0309682159088037,0.106951407156885,-0.110860933507281,0.071783632146294,-0.113384243588164,0,-2.15226630603461 +"593",0.139872893001592,-0.514086782000959,0.209360502625351,0.0713922090639402,0.239081695908792,1,4.29898707431635 +"594",-0.0758318208328153,0.55608505802229,-0.1857106487989,0.0717260065262757,-0.21957463550007,0,-3.4133706586943 +"595",-0.439276498956131,0.303881886880845,-0.255154240315597,0.0714709768590825,-0.262910341093775,0,-4.57657376114842 +"596",-0.276597483012626,0.660491407848895,-0.0382737347294519,0.0700107565235391,-0.0911975133235788,0,-1.09722998824474 +"597",-0.131080106084588,0.297101894859225,-0.252354987845394,0.0713577406579632,-0.259844892763096,0,-4.53039959338832 +"598",0.164319594103728,-0.040328411385417,0.0410279126068989,0.0664753279118749,0.044572272635435,1,0.456005864273929 +"599",-0.105880624052644,-0.00987178878858685,0.00928578488183246,0.0673141197700442,0.0115098956557843,0,-0.101981250919072 +"600",0.262180858087303,-0.240254817064852,0.213410090277641,0.0654406389735631,0.216712203599577,1,3.92246339246477 +"601",-0.0361039985619275,-0.0990291256457567,0.0999294295613781,0.0670512947783372,0.105226322371548,0,1.53479630490007 +"602",0.0272980568313477,0.628503500949591,-0.090866070710648,0.0706797474327686,-0.138974382983845,1,-1.90464793571541 +"603",0.409931821986711,0.857554451562464,0.403093598131505,0.0766634305353543,0.405147185678623,1,4.80259991610308 +"604",-0.0104749846122656,-0.705037909559906,-0.0533439526207186,0.069848648813252,-0.00409531240597934,0,0.118113838703894 +"605",-0.284551531327334,0.499643329996616,-0.234650629835216,0.0694435490752656,-0.259057968212649,0,-4.21259465412216 +"606",0.645847155082353,0.951314699370414,0.661722590577075,0.106644208854861,0.751980091013222,1,7.74842355741629 +"607",0.847251830336789,0.949584926944226,0.656817214157574,0.105769699667954,0.745250584994138,1,7.69392972402734 +"608",0.245208548129746,-0.298748859670013,0.242271798607735,0.0678775177867967,0.245677338431638,1,4.61841023105551 +"609",0.242206226866124,-0.212101886048913,0.195170748725639,0.0651626147172713,0.199076819647048,1,3.50416085304043 +"610",0.483957986826583,0.901902018114924,0.523213631851276,0.0862163654545612,0.563740895510142,1,6.1935240802733 +"611",-0.230130086804788,-0.786703360732645,-0.226740805979003,0.0725104286055942,-0.200578225089524,0,-2.32536828018516 +"612",0.468963594380955,0.869520233012736,0.435003035820459,0.0784648239949947,0.446701054455942,1,5.17734794933569 +"613",0.0740013271217928,-0.307675800286233,0.245486968167913,0.0682119982402075,0.24916655707153,1,4.69940795914446 +"614",-0.160821428939961,0.0661212117411196,-0.0700021317771198,0.0714608459759311,-0.0711631459573639,0,-1.45975189860176 +"615",-0.139539848228425,0.0775885987095535,-0.0816740211225359,0.0717613585239107,-0.0832587047677084,0,-1.65774453634442 +"616",-0.214769002626137,0.429435899481177,-0.266681158942284,0.0679047394763609,-0.282667114538219,0,-4.74867510035796 +"617",0.0797131611184893,-0.188418999779969,0.177913723104653,0.0655690071300343,0.182428527653424,1,3.1212767527381 +"618",-0.0847680046401103,-0.694423717446625,-0.0331618817575153,0.0695811336328583,0.0170253480424776,0,0.419318185975861 +"619",0.295435791832657,-0.319534477312118,0.249231277464376,0.0685338257778497,0.253413549918963,1,4.7951038478445 +"620",-0.29742031258923,0.25330969505012,-0.22977063525632,0.0702175120756929,-0.235822720949756,0,-4.15495628834161 +"621",-0.4015777053103,-0.885254643391818,-0.470041558790059,0.0861860903575374,-0.508960256806579,0,-5.43343807098733 +"622",-0.177372708234658,0.703335279598832,0.0415049415267647,0.0701192576224515,-0.0141286885504633,0,0.0850263486223053 +"623",0.156664982175525,-0.574709308333695,0.150693652316283,0.0718992280945492,0.191331361115213,1,3.32151304368505 +"624",-0.308535590843541,0.536496860906482,-0.205173192291829,0.0711768975881018,-0.235453940336049,0,-3.72961176463409 +"625",-0.0940240111242152,-0.727024827618152,-0.0969558298625461,0.0705622466200496,-0.0510035585769973,0,-0.520775996720602 +"626",0.335810041709006,-0.350269719026983,0.256011550977696,0.0686655231814053,0.262247231720242,1,4.97732259415358 +"627",-0.143551032034305,0.242152587510645,-0.222860863432869,0.0699470198163112,-0.228608954378413,0,-4.0394660582962 +"628",0.1786862135529,-0.488035502843559,0.227167443336458,0.0701819259495993,0.252278298075272,1,4.59670034808773 +"629",-0.418206558600192,0.269751597661525,-0.239127639817904,0.0706731176626513,-0.245668722914532,0,-4.31097128400759 +"630",-0.0484435344464877,-0.0286557860672474,0.028918362370221,0.0666766633941658,0.0319768248047287,0,0.241676263929704 +"631",0.603115368705871,0.876353833358735,0.453403968896059,0.0797350693009342,0.470870885580766,1,5.39155919732083 +"632",0.0140287509207285,0.715003074146807,0.064975037618198,0.0703607663872055,0.00961601589665695,1,0.422969343060709 +"633",0.135595063005075,-0.258232924621552,0.223647271595034,0.0660421242956497,0.226729321331042,1,4.16396515277471 +"634",0.269846243123478,-0.371596340090036,0.258110776340321,0.0683847089273021,0.266348584734997,1,5.04736333576902 +"635",-0.00742132937937984,0.657068719621748,-0.044194776732429,0.0700573070491256,-0.0966950968204869,0,-1.18702869053381 +"636",0.279314794336038,-0.0963169736787677,0.0973077796821425,0.0670079355454755,0.102557816582237,1,1.48514350331603 +"637",0.322504425555367,-0.368243175558746,0.257927315471037,0.0684371007442349,0.265821600077717,1,5.03943201557788 +"638",-0.335578644457975,-0.804382924921811,-0.268069996063107,0.0732463278873069,-0.25095647247713,0,-2.87306357066024 +"639",-0.220002984215171,-0.870198926888406,-0.431094725004662,0.0820438579069677,-0.458056596732715,0,-4.95104231605961 +"640",-0.261299388809216,0.378914732951671,-0.271844308428047,0.0697837632117139,-0.283643090130694,0,-4.84370923606173 +"641",-0.118062941409507,0.336101207882166,-0.265651333878721,0.071427914770428,-0.274875096318441,0,-4.74797814042032 +"642",0.380403186806681,0.80909329559654,0.278596886449373,0.0732557063704534,0.248550482680893,1,3.29006331071579 +"643",0.0680454837877428,-0.396613459102809,0.257695181663008,0.0680352000310732,0.268805093845229,1,5.07003009295597 +"644",0.595671782947357,0.865617409348488,0.424550597912115,0.0778203200446191,0.433037269536195,1,5.05506919386903 +"645",0.161551489137037,-0.596033965237439,0.124260466542352,0.071178818284005,0.168412436748476,1,2.88742171624131 +"646",-0.268647907727714,0.584757511969656,-0.152364817515692,0.0717292883541244,-0.191955671193485,0,-2.87593125597951 +"647",0.224113038606126,-0.550738982390612,0.176843751235784,0.072242132963337,0.213203090745318,1,3.75544984748366 +"648",-0.706540131310905,-0.938486857805401,-0.611151628753537,0.108009243064229,-0.69620580981367,0,-7.15355078788323 +"649",0.0377220260000888,0.724068082403392,0.0837012125649942,0.0705956948262437,0.0289135393911712,1,0.689372451367004 +"650",-0.283522373307809,0.370215010363609,-0.271339890280575,0.0702003729675923,-0.282549958445784,0,-4.83696589506399 +"651",0.648451337589645,0.884149819146842,0.474543422583812,0.0814158220928405,0.498807844592471,1,5.63609915059664 +"652",-0.161487112705374,0.351707520894706,-0.268973706077073,0.0709858867186524,-0.279045493938869,0,-4.80088620329881 +"653",-0.00616838127788936,0.686240296810865,0.00844093083477077,0.0699196982548737,-0.046749945413482,0,-0.398684162776757 +"654",0.175922252506345,-0.276211630087346,0.232701515606153,0.066848122403031,0.235762453085889,1,4.38215469116787 +"655",0.319816482680156,-0.215268229600042,0.197349754003651,0.0651497409576461,0.201177829374156,1,3.55337651050059 +"656",-0.0613476325783406,0.135374795179814,-0.137882420877465,0.0711062501305516,-0.141160968574898,0,-2.60930027620873 +"657",-0.293697111618806,-0.809695732779801,-0.280716665967492,0.0735432337241693,-0.266579672871495,0,-3.03861639288783 +"658",0.104037218189563,-0.612431856803596,0.101976471045859,0.0705369323406888,0.148494587014274,1,2.52557127770918 +"659",-0.189432674844561,0.176132786087692,-0.173848216490175,0.0699308557638381,-0.17806112332807,0,-3.21620621845823 +"660",-0.263776516387583,0.503008336294442,-0.232335391789786,0.0696103055740001,-0.257234305022475,0,-4.17443221313796 +"661",0.0970005363640953,0.734477574471384,0.105722613784855,0.0709033449188187,0.0520082331575698,1,0.99897444336092 +"662",0.311711291280797,-0.256408525630832,0.222661173577745,0.0659692510784577,0.225757468794675,1,4.14047377767923 +"663",-0.148221195735945,0.597629099152982,-0.135569645240427,0.0714923634586418,-0.177775464205443,0,-2.60791804922398 +"664",-0.663226046108312,-0.883371214848012,-0.465141871415754,0.0856172588128093,-0.502533590460561,0,-5.37297432022768 +"665",-0.180763063259957,0.246871418785304,-0.225836922940395,0.0700555130124429,-0.231711127838552,0,-4.08923310687922 +"666",0.350524986741432,-0.286717186681926,0.237416284123277,0.0673456916196827,0.240580420411253,1,4.49773160965769 +"667",-0.29560056961837,0.17585586477071,-0.173616770308508,0.0699370445960916,-0.177823600985688,0,-3.21230671734479 +"668",0.117184656999896,0.827569284010679,0.325084642230017,0.0740342123164205,0.30584059160256,1,3.86565358819785 +"669",0.246071698293633,-0.601115634199232,0.117533858051119,0.0709809218700066,0.162456285120625,1,2.77778446398415 +"670",0.187468319253405,-0.261832752265036,0.225557187618037,0.0661920817712069,0.228617196750412,1,4.20961015903917 +"671",-0.210752194897161,0.342816655524075,-0.26722691479353,0.0712700594887754,-0.276803679785614,0,-4.77323062377496 +"672",-0.25154767379063,0.536289101466537,-0.205365237103815,0.0711689793211341,-0.235609755003187,0,-3.73274121044564 +"673",0.129830702238659,0.0444965520873666,-0.0476833397290529,0.0704501778286196,-0.047952462014901,1,-1.08058049103358 +"674",0.0292560312972999,0.656150036025792,-0.0457722805887513,0.0700710499733774,-0.0981546531705799,1,-1.21100070469277 +"675",0.0117234187023384,0.0541923893615603,-0.0577333902408957,0.0709629714044039,-0.0584157176867793,1,-1.25145990854162 +"676",0.0804230314909605,0.0035096500068903,-0.00476114184594978,0.0679764290452251,-0.00315484879246355,1,-0.345444141872068 +"677",0.247719967875051,-0.160053360275924,0.155183140613262,0.0664705867447317,0.16034850447919,1,2.6349751735822 +"678",0.347206313903473,-0.275403433479369,0.232320890071086,0.0668097964417063,0.235377683420182,1,4.37288644075288 +"679",-0.193833483373569,-0.753142179455608,-0.151786152471423,0.0714736336705444,-0.112407946457605,0,-1.30063982529944 +"680",0.431476252467437,-0.40367694105953,0.25699400361622,0.0679800973529106,0.269006422288736,1,5.06472012846799 +"681",0.126843919271951,-0.446647020522505,0.246904877295279,0.0684562415519521,0.265133303352267,1,4.92022681660179 +"682",-0.401627799183346,0.582912062760442,-0.15468152180492,0.0717536298479849,-0.193896111611109,0,-2.91305216707844 +"683",-0.230427378921451,0.556362604256719,-0.185415413095395,0.0717305462549596,-0.219332585771858,0,-3.40858628883576 +"684",0.0526377067571481,-0.712425438687205,-0.0677293923344804,0.0700701670941811,-0.0193772799964451,1,-0.094439069511474 +"685",0.00924179663691994,0.0310523011721671,-0.0336603398308224,0.0696430332720457,-0.0333299708324899,0,-0.841536721669984 +"686",-0.120874348004007,0.194480970967561,-0.188741065350615,0.0696257842517045,-0.193356603407948,0,-3.46693109135375 +"687",-0.000802029419160558,0.0116860480047762,-0.0133508729506761,0.0684443165468592,-0.012125648310021,0,-0.493495886269534 +"688",0.144393911336761,-0.227800733875483,0.20566189723692,0.0652086103926986,0.20920217181783,1,3.74297700984791 +"689",0.156236181579609,-0.147803798317909,0.144737267663716,0.0668400628383041,0.150103179953864,1,2.4182153876302 +"690",-0.704547538926777,-0.976480530574918,-0.713957039060164,0.129186836038234,-0.83430824299417,0,-8.39016143477163 +"691",0.313989013463465,0.838663540780544,0.353599297404138,0.0747504169220762,0.341723780043673,1,4.21193476686991 +"692",-0.299002043561853,-0.841120613738894,-0.357468915546367,0.0765359968990629,-0.363145318261732,0,-4.02615045564518 +"693",0.0349795183192406,0.0147485095076263,-0.0165672800764124,0.0686282768484655,-0.0154847617106353,1,-0.548791246856775 +"694",0.00765393002453077,0.640343233942986,-0.0721244502439874,0.0703802834976476,-0.122219457406692,0,-1.61439791855031 +"695",-0.290482129664198,0.1967908362858,-0.190551783257538,0.0696035827558655,-0.195218426397195,0,-3.49738669885135 +"696",0.107530808543033,-0.151692947838455,0.148092496200332,0.0667306188793566,0.15340200279786,1,2.48737991161144 +"697",-0.0861032851996159,0.118620541412383,-0.122120397756039,0.0715609867083564,-0.124968712795517,0,-2.342804461718 +"698",-0.233414016911028,0.578188944142312,-0.160505273884259,0.0718027358886103,-0.19875830863476,0,-3.00652191217318 +"699",0.0960292506690808,-0.664569484069943,0.020418545144235,0.0692839883540132,0.071261883697586,1,1.23591838875095 +"700",0.69997339805498,0.940903460141271,0.632247637945699,0.101539031573944,0.711599116256388,1,7.42048788311139 +"701",-0.043235488582847,-0.0529938032850623,0.054054867369475,0.0664197618640477,0.058086926181915,0,0.688945968348799 +"702",0.248316185008904,0.859486411791295,0.408217662244976,0.0769200505554623,0.411787349880625,1,4.86307505246628 +"703",0.311603336995136,0.80187854077667,0.260806622421535,0.0730283488704879,0.227075294640119,1,3.0656963168394 +"704",-0.238237195125314,0.501764375716448,-0.23319992758857,0.0695483953665708,-0.257916106298572,0,-4.18867696450392 +"705",-0.188961238372331,0.353137544821948,-0.269218141938553,0.0709333052601558,-0.279372590833408,0,-4.80471439145693 +"706",-0.474769736642784,0.296026891563088,-0.251893112568412,0.0713369284289535,-0.259342033072871,0,-4.52276944954391 +"707",-0.283601650597448,-0.853506260551512,-0.388551527547318,0.0785038936763859,-0.402979683360374,0,-4.41891681512951 +"708",0.180061646490259,-0.152883163187653,0.1491121984834,0.0666954282694847,0.154403018732232,1,2.50848605754563 +"709",-0.106649624535173,0.061648728325963,-0.0654160655565411,0.0712946074821389,-0.0664019276743962,0,-1.3819203520075 +"710",0.556607906336416,0.885409524664283,0.47797329679725,0.0817113645570567,0.50335677728852,1,5.67562827591842 +"711",-0.243546618842304,0.42444911878556,-0.267826630854388,0.0679985870192404,-0.283336187844475,0,-4.76850790541616 +"712",-0.204813508452667,0.448981150984764,-0.26078984683218,0.0678146134534461,-0.2787892794946,0,-4.64814070980942 +"713",0.112279044523318,-0.059742764569819,0.0609382005718829,0.0664508190894711,0.0652098816674071,1,0.813144796873511 +"714",-0.0999825022889979,-0.759435488376766,-0.165468533277591,0.0716766543255878,-0.128149431230579,0,-1.49116847042537 +"715",-0.188859829439416,0.56619534175843,-0.174604836380876,0.0718297423842643,-0.210443702896359,0,-3.23368099428804 +"716",0.0592928635802442,-0.123685205820948,0.123174864575905,0.0672331880627458,0.128698398951326,1,1.98410776702746 +"717",0.177588444997652,-0.137088040355593,0.135313453891971,0.0670849478514749,0.140793743665553,1,2.22627740320299 +"718",-0.796238903332612,-0.945004242006689,-0.62870153748568,0.11136663174498,-0.71971398680887,0,-7.365314319441 +"719",0.131725788171492,-0.706876314245164,-0.0568980680160523,0.069901426308729,-0.00785337319797508,1,0.0654339424726331 +"720",0.158075572269634,-0.154809684026986,0.150755569808244,0.0666370085502781,0.156014800084118,1,2.54258554648201 +"721",-0.0847829808356389,0.534274348523468,-0.207212110415133,0.0710903370572919,-0.23710718017642,0,-3.76284655406182 +"722",-0.987861515811129,-0.990467109251767,-0.752000759225982,0.13778887436427,-0.885570242572954,0,-8.84623776936155 +"723",-0.209700404534133,0.207191383000463,-0.198517245268307,0.0695525253419321,-0.20341684839608,0,-3.63128111342948 +"724",0.340611234401127,0.811154521070421,0.283718021526036,0.0733257567701642,0.254781009624838,1,3.35420621221786 +"725",-0.158673186828518,0.413323063869029,-0.269869461112405,0.0683010612130531,-0.284368329283014,0,-4.80437088737547 +"726",0.147267916657059,-0.474925681483001,0.234529712221153,0.0695527410651965,0.257388942216363,1,4.71893055878619 +"727",0.0741818577195685,0.702152438927442,0.0391660461539895,0.0700992078755824,-0.0164681078360391,1,0.0511023244885798 +"728",0.368921915404042,-0.332788969855756,0.252683126124011,0.0687018207183877,0.257622473208804,1,4.8853935179869 +"729",-0.19295505929047,0.156568535137922,-0.157042779457866,0.0704524877594414,-0.160820550226907,0,-2.93284585358085 +"730",0.200075556806781,-0.134453739505261,0.13295772572977,0.067129482665337,0.138455889892049,1,2.17883377173512 +"731",-0.610820078333814,-0.896809353958815,-0.500260237525031,0.0899933848988361,-0.548727491470818,0,-5.80505849999924 +"732",-0.31846316750953,0.459606575779617,-0.256630136250275,0.067955454684743,-0.275826330741206,0,-4.5779973257372 +"733",-0.112255937477502,0.0963408285751939,-0.100444459605297,0.0718856226465329,-0.102650369368983,0,-1.97587509544572 +"734",-0.318538230284828,0.50244397111237,-0.232728877085734,0.069582184749598,-0.257544739139475,0,-4.18091477328244 +"735",-0.404540379371431,-0.898457670584321,-0.504592340996973,0.0905807167173318,-0.554445875972186,0,-5.85816215935245 +"736",-0.275416218698822,0.429932424798608,-0.266559238168232,0.0678969085735726,-0.282593438410405,0,-4.74657203806093 +"737",0.229600235184255,-0.404611086472869,0.25688158944857,0.0679750587127081,0.269016165039179,1,5.06363015067605 +"738",0.106735678720976,-0.433045580517501,0.251206060880547,0.0681379149438185,0.267345001221677,1,4.9869067850377 +"739",-0.0788782799384265,0.659754254855216,-0.0395547889285218,0.0700201516303765,-0.0923895292018193,0,-1.11663458846881 +"740",-0.382738225770419,-0.827209249604493,-0.323098105515889,0.074904643924927,-0.319557346298036,0,-3.58730534598583 +"741",-0.657485650667161,-0.914685762021691,-0.547500243012157,0.0969361066373562,-0.611293563858234,0,-6.3820771998338 +"742",0.211327733587902,-0.302518382202834,0.243670324682111,0.0680267248620351,0.24718120260632,1,4.65352485590439 +"743",-0.25158197913344,0.0846720202825963,-0.088814125526591,0.071858929618084,-0.0906432782827796,0,-1.77879922158365 +"744",-0.152180902845683,0.218921727035195,-0.207117525635962,0.0695920489782262,-0.212288091452459,0,-3.77568111487679 +"745",0.286332073141369,-0.457255803048611,0.242813630590639,0.0688079151503771,0.262737978837628,1,4.85465922676844 +"746",0.219928043542568,-0.589538136031479,0.132621465288098,0.071422429709334,0.175746663226379,1,3.02417809243701 +"747",0.124054200310506,-0.236735703423619,0.211273802759358,0.0653581519314324,0.214637240934642,1,3.87270308967096 +"748",-0.132716750372789,-0.0548837692476809,0.0559868915350255,0.0664245962221912,0.0600875867872425,0,0.723724189063475 +"749",0.127087673391263,0.671035899780691,-0.019602376788299,0.0699163773679347,-0.073661638975989,1,-0.815909917180799 +"750",0.0296173203979802,-0.757057007402182,-0.160276497125388,0.0716011099425866,-0.122156403595016,1,-1.41906121355573 +"751",-0.311256254795433,0.35161624988541,-0.268957759270314,0.0709891837728853,-0.27902430038659,0,-4.80063601065161 +"752",-0.138510177814925,-0.00662956014275551,0.00588510997596298,0.0674605506042243,0.00796070371003254,0,-0.16108985841291 +"753",0.217399086047629,0.80447549559176,0.267185791028739,0.073107666870091,0.234744927331745,1,3.14643057092312 +"754",-0.105670338393484,0.102527933660895,-0.106537976700113,0.0718392829350559,-0.10893167945936,0,-2.07907546749902 +"755",-0.285609103028228,-0.742870646994561,-0.129841902208787,0.0711234175943708,-0.0875097361237788,0,-0.991656630144032 +"756",0.083441389484413,-0.115980428643525,0.116031283478709,0.0672298743624304,0.121524752312826,1,1.8441614373154 +"757",0.156366577516811,-0.615404607262462,0.097758790209572,0.0704232116370927,0.144665398342813,1,2.4575278084593 +"758",0.293820756973716,-0.130198755767196,0.129121211381349,0.0671861046037957,0.134638838374005,1,2.10202779769913 +"759",0.105776604951438,-0.549733194056898,0.177856385716772,0.0722407887676797,0.214033163964924,1,3.77232513227453 +"760",0.886640989093241,0.922192564234138,0.57962789558742,0.0933947760195879,0.639896742768636,1,6.83151316923294 +"761",0.226462950620533,-0.103145069908351,0.103885026452565,0.0671111605905234,0.109245215662564,1,1.61007508599996 +"762",-0.220672271584582,0.554289970546961,-0.187606917898959,0.0716942524356671,-0.221128531845385,0,-3.4441089541611 +"763",0.00668091623787814,-0.683560451027006,-0.0131129721244134,0.0693868559485753,0.0376344286325183,0,0.721999418410124 +"764",0.0953954178881406,0.733617165125906,0.103881722254303,0.0708767221819173,0.0500609658604141,1,0.973245663396755 +"765",0.308273280123781,-0.587708788458258,0.134927592803964,0.0714881650044202,0.177755944419531,1,3.06198990454816 +"766",0.252778038724111,-0.644100633915514,0.0543209521386348,0.0695381017231415,0.104168257962523,1,1.76524555507679 +"767",0.0857021791866894,-0.67021770728752,0.01065088872611,0.0692808198557356,0.0615759761811517,1,1.08522408716386 +"768",-0.205067389919023,0.130537954624742,-0.133384203108902,0.071248763758898,-0.136542390689676,0,-2.53327613647915 +"769",-0.157142683040349,0.454362042248249,-0.258768782727048,0.0678695761157955,-0.277365008294456,0,-4.61399777878363 +"770",0.202180125450245,0.75183797813952,0.143645160069527,0.0714667412392347,0.0928002955925281,1,1.52278163649519 +"771",-0.331890667047448,0.4168487675488,-0.269298178011156,0.068192153004582,-0.284109647516804,0,-4.79425255670322 +"772",-0.0614250945483547,-0.0450735781341791,0.045923845208115,0.066435663004055,0.0496562669841746,0,0.543245308368403 +"773",-0.1284399312157,0.640559987165034,-0.0717733029687583,0.0703752356088216,-0.121902698832033,0,-1.60898620038432 +"774",-0.805828668282492,-0.966775578446686,-0.687601605055097,0.123439483908907,-0.798828770806055,0,-8.0738807680932 +"775",0.937938265564627,0.992222202476114,0.778378180343665,0.129857917906548,0.912726966118633,1,9.03786130084612 +"776",-0.335480801559967,0.269789671525359,-0.23914812404837,0.0706741954314398,-0.245690403357148,0,-4.31131225205291 +"777",0.0518492717735992,-0.14304923824966,0.140587891118235,0.066960205465161,0.146012397301026,1,2.33328106801622 +"778",-0.653525292100343,-0.943214134313166,-0.62387676479299,0.110431678382863,-0.713247692165699,0,-7.30713120765858 +"779",-0.178542087234209,0.506665401160717,-0.229734807656166,0.0697934851699991,-0.255177852784235,0,-4.13162111509271 +"780",0.22014018707856,-0.58273204928264,0.141092724138535,0.0716584476002114,0.183098169088093,1,3.16326491709755 +"781",0.92836716441273,0.998910810332745,0.797515505256675,0.134020513594764,0.939166750801589,1,9.24876115149446 +"782",0.24990166050456,0.814498386345804,0.292061514561541,0.0734461966520067,0.264976593214797,1,3.45830235339083 +"783",-0.384513838557117,0.424930063541979,-0.267722400572245,0.0679883520144867,-0.283277262452771,0,-4.76669707120474 +"784",-0.175475950777286,0.461865767836571,-0.255657134952656,0.0680019660795113,-0.275117430237433,0,-4.56165634145356 +"785",-0.124792915857024,-0.055024157743901,0.0561302701413535,0.0664250796996021,0.0602360173307106,0,0.726307645940168 +"786",0.0123120798187773,0.72502137394622,0.0856950631027969,0.0706223841538313,0.0309866845748489,1,0.717568161758741 +"787",0.0454020083347455,-0.669169755186886,0.0124764010980199,0.0692791975061227,0.0633931044106621,1,1.11332610364826 +"788",-0.277168204784761,0.240855851210654,-0.222029509111113,0.0699189837893685,-0.227743535132061,0,-4.02555748358657 +"789",0.518218298572995,-0.415337210055441,0.255257177671116,0.0679607493798051,0.268839197065544,1,5.04460791024465 +"790",0.307599658338579,-0.0877165324054658,0.0889185529513002,0.0668579502877693,0.0939942358541303,1,1.32746744668128 +"791",-0.643832615065992,-0.90872158203274,-0.531678653624531,0.0944813524779985,-0.590289882529263,0,-6.18930537290033 +"792",0.15315074225269,-0.644676495809108,0.0533997442841368,0.0695259775972988,0.103288923151305,1,1.75073414729307 +"793",-0.465304959875343,-0.884135864209384,-0.467130173244471,0.0858464437382262,-0.505140793568468,0,-5.3975179889516 +"794",0.560144061386876,0.888820467051119,0.487279439931542,0.0825457554881692,0.515720906752342,1,5.782683241811 +"795",0.30123569474104,-0.314513051416725,0.247720256612123,0.0684172081171321,0.251669486505007,1,4.75628308527488 +"796",-0.103088892293294,0.0359011413529515,-0.0387276901468843,0.0699424255986652,-0.0386164442544344,0,-0.928015826812345 +"797",-0.435800210457935,0.250490670558065,-0.22806645296781,0.0701448339863925,-0.234039792030669,0,-4.12649193197848 +"798",0.190369605364091,-0.525470292661339,0.200214518046756,0.0718082522398896,0.231987964260354,1,4.14585158392261 +"799",0.0347785237045649,0.0322478287853301,-0.0349106303488363,0.0697173983135961,-0.0346345476951221,1,-0.862885556716565 +"800",-0.210409205606654,0.613083655480295,-0.113958886728548,0.0711029703064782,-0.159217743103413,0,-2.26605100366921 +"801",0.279958410928912,-0.303470531012863,0.244014165843035,0.0680626733093755,0.247554020428609,1,4.66218508158959 +"802",-0.0575979636242123,0.717374905943871,0.0698335955749661,0.0704186785996087,0.0145927297148234,0,0.492364302617081 +"803",-0.661633681333773,-0.931122477632016,-0.591377971821155,0.104376076776588,-0.66976417199117,0,-6.91450957671605 +"804",0.777435039438187,0.941994291730225,0.635329991625603,0.102055691791845,0.71581551927149,1,7.45484073057177 +"805",-0.24760936056634,0.490220272447914,-0.240741456166608,0.0689953508549157,-0.263817880792319,0,-4.31323324084988 +"806",0.162870528794163,-0.453489516396075,0.244340908102691,0.0686735007382453,0.263657004661197,1,4.87930078901915 +"807",-0.148687426383706,0.354212203063071,-0.269395120170801,0.0708926814498488,-0.279612254988932,0,-4.80747752577946 +"808",0.240540388007241,-0.304105063900352,0.244241189887044,0.0680862109379513,0.247800894812813,1,4.6679091105533 +"809",0.406682008741697,0.894041043240577,0.501574944310947,0.083920522700675,0.53477334178881,1,5.94659195203768 +"810",0.186631211628964,-0.322752450127155,0.250141346097375,0.0685927250840796,0.254488729655384,1,4.81865075401731 +"811",-0.697389850045873,-0.936573592014611,-0.606008338786833,0.107048543578552,-0.689323272905655,0,-7.09142191873132 +"812",0.15834004572815,-0.29282840481028,0.239956360079356,0.0676243887052755,0.243225657912988,1,4.56063571597148 +"813",0.0188606477933925,-0.225752824451774,0.204338319762207,0.0651868580838561,0.207922847333699,1,3.71258564211753 +"814",0.136010518662492,-0.286105679813772,0.237153833543646,0.0673171328687119,0.240309342592164,1,4.49125871873095 +"815",0.625684058308061,0.919937212020159,0.573321013301739,0.0925092078690757,0.631342216565159,1,6.76055914307504 +"816",0.21395366526737,-0.232523590326309,0.208661525546741,0.0652767148205933,0.212104808897192,1,3.8121405772165 +"817",0.0556798803212923,0.0926752421073616,-0.0968096995753897,0.0718941253584656,-0.0989005553384033,1,-1.91429856923114 +"818",0.311303261161589,0.850646951701492,0.384865130066637,0.0758448086693054,0.381633323332213,1,4.58647883029114 +"819",0.234768789742506,0.833719054237008,0.340837871696958,0.0744009063226127,0.325600431310015,1,4.05754618223423 +"820",0.171192377725873,-0.51453401427716,0.209017072502947,0.0714104305634819,0.238818576531847,1,4.29323610610499 +"821",-0.174051956071551,0.43418167764321,-0.265457219608377,0.0678414235678401,-0.281910375522529,0,-4.72761918455563 +"822",0.158398134994411,-0.302107928320765,0.243520926066909,0.0680110013462478,0.247019610584111,1,4.64976538644864 +"823",-0.120904461808098,0.108566701412201,-0.112432252017719,0.0717590263785051,-0.115001971763489,0,-2.17886504858337 +"824",-0.049689451214713,0.485944826155901,-0.243315962983534,0.0688057546540429,-0.265810321117262,0,-4.35588989981997 +"825",-0.246249444237778,0.639396637212485,-0.073654603735078,0.0704025459380242,-0.123598535493009,0,-1.63799134335401 +"826",-0.0158017596728856,0.739314530044794,0.116140089266532,0.0710560579589282,0.0630850261424222,0,1.14404665663202 +"827",-0.718598160284067,-0.928269731346518,-0.583736025778222,0.103016784897431,-0.659559405474094,0,-6.82198779113279 +"828",0.0463178746558649,-0.559951193165034,0.167249151161691,0.0721902713762385,0.205274639423852,1,3.59579340870503 +"829",0.246601364463761,-0.266053580678999,0.227735394956118,0.066376867829812,0.230780356076046,1,4.26190806266402 +"830",0.0617509452647308,-0.388607115950435,0.258175474837181,0.0681281245573207,0.268309350734793,1,5.06980005712649 +"831",-0.307425700415267,0.455660915002227,-0.258254704958269,0.0678879165057527,-0.276997823920908,0,-4.60533297420847 +"832",-0.36112626319058,0.399457532446831,-0.271442261484084,0.0688273105858056,-0.284778471496241,0,-4.83307996033854 +"833",0.209830024937996,0.820121853612363,0.306190449207618,0.0736727680954726,0.282363465124699,1,3.63347030604145 +"834",0.0805726755947467,0.691205219365656,0.0178788831217038,0.0699569841626358,-0.0375370415008135,1,-0.25970348505744 +"835",-0.143050634884195,0.557089280337095,-0.184639831387493,0.0717419663350228,-0.218696564078399,0,-3.39601959244009 +"836",0.357903235121769,-0.198313143569976,0.185324363716424,0.0653390738755567,0.189583312120365,1,3.2842190677978 +"837",-0.0447065156902325,0.153609317727387,-0.154424226331288,0.0705421592627686,-0.158134532984229,0,-2.88865686448794 +"838",-0.355210705821526,-0.847281107679009,-0.372874826548824,0.0774491106874588,-0.382842776184501,0,-4.22127721050042 +"839",0.0196782365398922,0.745949701406062,0.130617925443989,0.0712718633067764,0.0786412468980598,1,1.3441790185018 +"840",0.628703849762096,0.912571471184492,0.552783967247192,0.0897681134640533,0.603553605517178,1,6.52889713181737 +"841",0.016492087108289,0.0110621596686542,-0.0126955200168625,0.0684073394561198,-0.0114412068434315,1,-0.482220159302524 +"842",0.344218275149529,0.848732727579772,0.379839696063441,0.0756437727576108,0.375181523078702,1,4.52661535843637 +"843",-0.199714343635737,-0.730972934514284,-0.105037908970311,0.0707019343810756,-0.0598853410451773,0,-0.637368566407626 +"844",0.309356151410564,-0.522525993641466,0.202661188805072,0.0717110358706933,0.233902390809637,1,4.18680897181641 +"845",-0.0626722257950784,-0.020074755884707,0.0199673846599491,0.0669211012063899,0.0226512122306097,0,0.0844543045875065 +"846",-0.0753328141220395,-0.0518798064440489,0.0529145339725694,0.066418405344211,0.0569056002851406,0,0.668448118706725 +"847",0.128983843553331,-0.130011681932956,0.128951655201053,0.0671881370994982,0.134469861271907,1,2.09864650519931 +"848",-0.685312148723931,-0.921502079814672,-0.565650038588071,0.0999045105283465,-0.635442539307861,0,-6.60267987586566 +"849",-0.145651147696564,0.288662030361593,-0.248598283759771,0.0711766436679653,-0.255775026941694,0,-4.46825910328684 +"850",-0.313129559621709,0.431134400423616,-0.266258171590475,0.0678791100947492,-0.282409774234764,0,-4.74138446364737 +"851",0.356178598380163,-0.296666557434946,0.241473897287023,0.0677908405177177,0.244827529486809,1,4.59845181791979 +"852",0.560618955758869,0.893113497644663,0.499030549134228,0.0836675686685312,0.531377168710751,1,5.9174651853078 +"853",-0.236280681922488,0.4862130144611,-0.243157913807692,0.0688173311281811,-0.265688389162192,0,-4.35326898409516 +"854",-0.57456847733006,-0.898428159300238,-0.504514734675951,0.0905701050390597,-0.554343399054691,0,-5.85721120621519 +"855",0.932097434018556,0.96072956174612,0.688472249477501,0.111576119784026,0.78873241847376,1,8.04507969362052 +"856",0.159251513210125,-0.564355094917119,0.162460449789815,0.072127735396414,0.201275211708172,1,3.51628805876606 +"857",-0.734936399823214,-0.927607995923609,-0.581964865964491,0.102705430838928,-0.657195461456231,0,-6.80053242386029 +"858",0.280297711123626,-0.478592269122601,0.232576272091757,0.0697248334718411,0.256059535510119,1,4.68659722990347 +"859",-0.249369800989984,0.440831571817398,-0.263520459715239,0.0677970151686595,-0.280651431964792,0,-4.69450889392936 +"860",0.447723882117314,-0.504211637657136,0.216616187632528,0.0709604021487451,0.24457261631529,1,4.42045562364534 +"861",0.226422843718769,-0.530168416909873,0.196192237379205,0.0719459411722363,0.228816533177238,1,4.0785432203334 +"862",-0.719975069892877,-0.957976314239204,-0.663752224863573,0.118412475507227,-0.766759524596119,0,-7.78731428454232 +"863",0.257693352796894,-0.470758744515479,0.236651108267116,0.0693629894039267,0.258807028438787,1,4.75393370681986 +"864",-0.117255142202895,0.383603238966316,-0.271951432835856,0.0695570735090966,-0.284082491821969,0,-4.84459050973525 +"865",-0.624805412801262,-0.930661217775196,-0.590141646907728,0.104154433287765,-0.668112671496327,0,-6.8995467667117 +"866",-0.397880479260354,-0.874427740927786,-0.441981896579288,0.0831142541606378,-0.472243111720558,0,-5.08631439740216 +"867",0.216053802411708,-0.204587816260755,0.189876069657314,0.0652356308793286,0.193972620526534,1,3.38539759115917 +"868",-0.0715356074097962,-0.0199431502260268,0.0198298436257146,0.0669254785231446,0.0225078303157733,0,0.0820457804387881 +"869",-0.28701233814541,0.26209749514237,-0.234897346305062,0.0704568233938566,-0.24120415704807,0,-4.24049873955345 +"870",-0.212643730766095,0.446808624546975,-0.261556510036471,0.0678021466354313,-0.279320295790293,0,-4.66112863732094 +"871",-0.469978450690514,-0.846468415111303,-0.370836232730343,0.0773213881687642,-0.380230964416865,0,-4.19550947012268 +"872",0.272334405962607,-0.157107838895172,0.152704284006825,0.066565247401257,0.157923746472219,1,2.58315588783859 +"873",0.624317889577597,0.947453371714801,0.650776785509574,0.104706188460711,0.736968710817195,1,7.62678309389896 +"874",-0.251645634568377,0.627611566800624,-0.0922427267634052,0.0707037516982824,-0.140193483032394,0,-1.92607687588794 +"875",0.100793583891765,-0.552464554086328,0.175090360824916,0.0722411083963519,0.211762749247894,1,3.72624042038531 +"876",0.0297277550758675,-0.0205153883434832,0.0204278372650138,0.0669065814975181,0.0231312016576172,1,0.0925190011861197 +"877",-0.780246667157694,-0.977319614030421,-0.716237700788892,0.129692861711322,-0.837380016668867,0,-8.41751531834831 +"878",0.101481422378591,-0.482795406132936,0.230236343825525,0.0699265077204338,0.254440563969089,1,4.64776401431457 +"879",0.0487351591694755,-0.0908024562522769,0.0919415848725938,0.0669131938319285,0.0970842164003144,1,1.3840791578229 +"880",-0.250709389454163,0.481953376438469,-0.245613982965849,0.0686390533085401,-0.267576992894881,0,-4.39403260769628 +"881",0.750130202577564,0.981320023536682,0.747203218913201,0.123259102239776,0.869675954506121,1,8.69412236500053 +"882",0.234170959637204,-0.335590107832104,0.253311322144608,0.0687136160020635,0.258436184869076,1,4.90220669090385 +"883",0.498598956773816,0.889582810923457,0.489363086112752,0.0827391072572485,0.518493489917972,1,5.80661405314242 +"884",0.756441829417112,0.92370683979243,0.583867082460311,0.0940013384501878,0.64565187275879,1,6.87915780956089 +"885",0.28663702563058,0.798554999288172,0.252683499434941,0.0729292940627575,0.217360668074295,1,2.96241860908059 +"886",-0.116398282701995,-0.0145683297887444,0.0142069402253464,0.0671199616126762,0.0166442804228912,0,-0.0162388014256873 +"887",-0.313736985331704,0.569870955776423,-0.170389663186916,0.0718376214168615,-0.206962224490507,0,-3.16564821044551 +"888",-0.235485682461018,0.606238094158471,-0.123723387830911,0.0712846972530758,-0.167647804934308,0,-2.42008964901988 +"889",-0.47705606945839,0.35553524736315,-0.269605068713016,0.0708414202919502,-0.279900050347308,0,-4.81074499657475 +"890",-0.270944800922158,0.162555157206953,-0.162280402213499,0.0702775829946992,-0.166193032306804,0,-3.02120372578613 +"891",0.341332680160238,-0.338663825299591,0.253959366211286,0.0687180747411174,0.259297736896678,1,4.91974291667464 +"892",-1.02770637964218,-0.997370686847717,-0.770791199404341,0.142151261977834,-0.910899313170865,0,-9.07140428166835 +"893",-0.365997028974748,-0.868396071717143,-0.426466191772247,0.0816093286171516,-0.452036146605781,0,-4.89342745778762 +"894",-0.227962024436412,-0.828096165321767,-0.325271412619154,0.0749924325651621,-0.322297900021433,0,-3.61520713151407 +"895",-0.948898349663902,-0.973780566360801,-0.706620368394589,0.127568068351314,-0.82442816453624,0,-8.30215162176492 +"896",0.211489309850496,-0.32850875146687,0.251654475349981,0.0686685722725508,0.256327306297526,1,4.85817205139256 +"897",0.0688479749852338,-0.761471366975456,-0.169932768934718,0.071740128146964,-0.133321558878908,1,-1.55297965353511 +"898",-0.208935589128456,0.187190890777856,-0.182930377101944,0.0697206618593048,-0.187385556060039,0,-3.36915439315938 +"899",-0.637572638151147,-0.925374648533762,-0.575991512268416,0.101665770728706,-0.649226324941588,0,-6.72813913029416 +"900",-0.791971454667477,-0.980856416281313,-0.725853662631765,0.131840623481825,-0.850333743799082,0,-8.53282598057381 +"901",0.0444042511012193,-0.676807748153806,-0.000966067873077195,0.0693137423728388,0.0499385095716316,1,0.907058617140661 +"902",-0.0640830621949453,0.663797976449132,-0.0324882850476382,0.0699729994703757,-0.0857964014424338,0,-1.00976027315602 +"903",-0.353773276710096,0.533685508649796,-0.207746590439114,0.0710667379204046,-0.23754017609695,0,-3.7715623162037 +"904",0.46716649596742,-0.454439367167652,0.24396353499441,0.068706449282655,0.263432409313287,1,4.87322796729741 +"905",0.0612968138958288,-0.623673402238637,0.0857449345918802,0.0701219888677068,0.133656779561654,1,2.26450068674142 +"906",0.100595229206095,-0.548476330470294,0.179112092033933,0.0722370749264922,0.215060677609269,1,3.79325697636869 +"907",-0.525624363644854,-0.876059264875948,-0.446193450809354,0.0835465459401384,-0.477740236653886,0,-5.13855144356717 +"908",-0.308189648287378,-0.880199518054724,-0.456908087974852,0.0846922022739597,-0.49174797289439,0,-5.27122697178052 +"909",-0.107478509331298,-0.66906226798892,0.0126633013105356,0.0692790878181551,0.063578967738818,0,1.11620485731189 +"910",-0.412730214148785,-0.854024228174239,-0.389860717225564,0.0785978957145801,-0.404665426476343,0,-4.43538199239212 +"911",-0.73742427129383,-0.914228216279298,-0.546284464967488,0.0967430113910956,-0.60967795512144,0,-6.36728000411383 +"912",-0.147789212250172,0.0449225446209311,-0.0481261474219691,0.0704742568273024,-0.0484138074825819,0,-1.08811606891144 +"913",-0.188644524861135,0.578462978824973,-0.160171540390417,0.0718004319160501,-0.198480270502383,0,-3.00115969609326 +"914",-0.223714118280434,0.38950669625774,-0.271920109224072,0.0692756544269743,-0.284484964572552,0,-4.84293163994359 +"915",-0.268917066835204,-0.86684790533036,-0.422497834547486,0.0812464970149076,-0.446879651994194,0,-4.84397869639493 +"916",-0.867604082136444,-0.964084506966174,-0.680302434139828,0.12188244933723,-0.78900967974649,0,-7.98621765067603 +"917",0.156220798542108,-0.115683153271675,0.115753366484767,0.0672285929906323,0.121244899338952,1,1.83875262406332 +"918",-0.234254866009778,-0.684795833658427,-0.0153615712659393,0.0694043546156553,0.0353415986325882,0,0.687880377201055 +"919",-0.255678922465042,0.437720231711864,-0.264459004235076,0.0678112674873511,-0.281269440210949,0,-4.71052638952591 +"920",-0.107362951739592,0.407883665058762,-0.270613827088157,0.0684903727109337,-0.284644068760777,0,-4.81773101583556 +"921",0.194931251712074,0.770452609751374,0.185907995745784,0.0720776373825493,0.139792316704685,1,2.09253481394197 +"922",0.254870735697409,-0.349477969575673,0.255891598811336,0.0686721408960364,0.262061590823085,1,4.9738292672973 +"923",0.71344490550718,0.941763133276254,0.634676687811273,0.10194583973353,0.714921720443578,1,7.44756087540322 +"924",0.795258668439348,0.969640532508492,0.713857432408773,0.116492638087141,0.823683659202388,1,8.3259320948617 +"925",-0.596451337595898,-0.921630564611405,-0.56599281183817,0.0999620898552211,-0.635899139148537,0,-6.60684094556761 +"926",0.232259654887629,0.787142576184124,0.225148032468862,0.0725924767293831,0.184879132458109,1,2.60823746652209 +"927",0.0399901440988659,0.644798302557319,-0.0648496147553754,0.0702805298946304,-0.115635598712638,1,-1.50248157963109 +"928",-0.480024447764654,0.448489385657012,-0.260965862512856,0.0678112984096293,-0.278911689548165,0,-4.6511206600206 +"929",0.273877326328615,-0.422159724403173,0.253900662342539,0.0679977036012867,0.268444275544441,1,5.02626477857821 +"930",-0.0632532794165158,0.00389720918610692,-0.00516828488157467,0.0679976916176126,-0.00358002856046226,0,-0.352474831556969 +"931",0.109623072783241,-0.143305997364223,0.140813285091859,0.0669541506307694,0.146234934584329,1,2.33787762866522 +"932",-0.227719510395198,0.220032032113522,-0.207909698077771,0.0696010158031871,-0.213106499140181,0,-3.78897225546132 +"933",0.312793379575298,0.85222634812817,0.389020163452369,0.0760188644472831,0.386977906381024,1,4.63588069010522 +"934",0.268291389757286,-0.519753484521061,0.204913214606256,0.0716124776408607,0.235654064162948,1,4.22451519337232 +"935",0.19458064241608,-0.456236332189292,0.243235216441291,0.0687705477251834,0.262994274258237,1,4.8614776844439 +"936",-0.418866899578507,0.470007292926311,-0.251889950304831,0.0682144735859619,-0.272330738919348,0,-4.49857793710894 +"937",-0.139937389485274,0.503091746009886,-0.232277059571553,0.0696144659737756,-0.257188268055642,0,-4.17347131955368 +"938",0.390015149807068,0.861183841712773,0.412728749558164,0.0771560175867437,0.417643803318919,1,4.91621872761933 +"939",0.0536894697288482,-0.0745394504629076,0.0758596386601935,0.0666291183032566,0.080598139476435,1,1.0853813230354 +"940",0.0249869979460463,0.721382353454828,0.0781089193976832,0.0705223984054156,0.0231178137902938,1,0.610116025347536 +"941",0.154239431150992,-0.375927160959691,0.258265276667514,0.0683161731543445,0.266961874040547,1,5.05590007070158 +"942",0.247383971590487,-0.583921973127872,0.13963316556646,0.0716189926050995,0.181837306326313,1,3.13926394602002 +"943",0.383523330177607,0.841654934454709,0.361360131875033,0.074988784714748,0.351577678852801,1,4.30538325374757 +"944",-0.673765125350486,-0.894526231568307,-0.49426826680932,0.0891979839390547,-0.540825013775437,0,-5.73153970359234 +"945",0.194181076018121,-0.177689137868583,0.16956643520512,0.0658868883063589,0.174348370330642,1,2.94034904734131 +"946",0.060367772489172,-0.0873175696469843,0.0885266998468668,0.0668507592628417,0.093593379370566,1,1.32014575346551 +"947",0.24098613471898,-0.168279504869133,0.161991688892941,0.0661971407622262,0.166989439740601,1,2.7785272980387 +"948",-0.28564646010431,0.340706903487444,-0.266755489010072,0.0713253727931906,-0.276219457219589,0,-4.76569945560696 +"949",-0.214956559482466,0.513808160088956,-0.224400052669587,0.0701516255535028,-0.250936001618869,0,-4.04396681320976 +"950",0.426983759050395,0.823302628938109,0.314235068196175,0.0738174401371734,0.292328650661989,1,3.7326076857737 +"951",0.0643140161788026,0.63990417169407,-0.0728348660549555,0.070390565926513,-0.122859979802046,1,-1.62534950624591 +"952",-0.368532989024322,-0.81270029488951,-0.287913161716336,0.0737320172488549,-0.275509803173532,0,-3.13243098208623 +"953",0.0980009749815229,-0.644187837373465,0.0541815753834232,0.0695362484496945,0.104035270218822,1,1.76304955233387 +"954",-0.375182127641741,0.284429160412401,-0.246603034194445,0.0710727933420525,-0.253629887848805,0,-4.43518906902954 +"955",0.138108722840942,0.748565987683833,0.136385566179182,0.0713582245056239,0.08489109273503,1,1.42342584870258 +"956",-0.141432652849729,0.184626700822264,-0.180852639485388,0.069762623557136,-0.185251623823405,0,-3.33417695998173 +"957",0.203655655572252,-0.475135615561157,0.23442006400145,0.0695624765536486,0.257314895734492,1,4.71711804056004 +"958",0.0403723039434898,0.767504528164864,0.179107270139077,0.0719828655005483,0.132121142343423,1,2.001853236794 +"959",0.373421961464936,-0.624621307477355,0.0843413813840376,0.070089285207398,0.132360963111027,1,2.24202674045989 +"960",0.020373556715571,-0.0222660354338586,0.0222564126986224,0.066850975913274,0.0250370980336532,1,0.124570025274753 +"961",-0.874323253970312,-0.98035902576521,-0.724501088129327,0.131537159560861,-0.848511481467318,0,-8.51660843092962 +"962",0.150171993472661,-0.279131913557649,0.23405567514848,0.0669870210890997,0.237135966544919,1,4.41520186684423 +"963",0.26334128613092,-0.115676618181169,0.115747255080959,0.0672285639251646,0.121238744741791,1,1.83863371320301 +"964",0.0316058293668168,-0.748541557230055,-0.141897402178194,0.0713192688998349,-0.101134854462421,1,-1.16192147060938 +"965",-0.206253525002433,0.248729095328599,-0.226987092471155,0.0701007560658129,-0.232911910680202,0,-4.10845690127872 +"966",0.281049368381962,-0.39513733657077,0.257808712660899,0.0680501613997966,0.268734850630735,1,5.07048635941719 +"967",0.323653703848502,-0.520725543610752,0.204129355289494,0.0716477721016051,0.235045531749755,1,4.21139021967054 +"968",0.212367383175456,-0.282740472815931,0.235682842038546,0.0671585714261698,0.238796817146011,1,4.45506728982614 +"969",0.169879233899713,0.785820825025439,0.221995371626453,0.0725529778872129,0.181204659490121,1,2.56727971237881 +"970",0.721578818206036,0.981254530139267,0.747016051727082,0.123220234510867,0.869417608511042,1,8.69205752174044 +"971",-0.217973557636607,0.464842394925654,-0.254327295294695,0.0680716934866959,-0.274140819170143,0,-4.53935666933612 +"972",1.21032231158501,0.985576176550239,0.759369764535783,0.12580551899056,0.886472977044738,1,8.82831185486327 +"973",-0.0466191825424239,0.0795787242241204,-0.0836857715405094,0.0717953546783661,-0.0853404130831043,0,-1.69185712308585 +"974",0.00419817447071476,-0.132396476343274,0.131107603976997,0.0671593047794884,0.136616665190872,0,2.14172358196871 +"975",0.760212683539407,0.92934734839946,0.599689178474174,0.0963440715231518,0.66716712046188,1,7.05666340396497 +"976",0.0671151509053637,-0.703360713552684,-0.0501164715626521,0.0698020126698568,-0.000692633677323876,1,0.166046524085229 +"977",-0.399854627829916,-0.867013888433576,-0.422923011757726,0.0812849431135364,-0.447431894110761,0,-4.84927903401833 +"978",-0.762056829112055,-0.951497023925185,-0.646226911125029,0.114835527091077,-0.743222403538488,0,-7.57645621346589 +"979",-0.142599721438405,0.2248464836739,-0.211299723129358,0.069649921279856,-0.216611668394035,0,-3.84583063736907 +"980",-0.31829811007301,0.393217496108264,-0.271804691001596,0.0691035829820863,-0.284651215474138,0,-4.84029821697477 +"981",-0.32560794859273,0.602283774409443,-0.129225038609278,0.0713837385136097,-0.172364673584827,0,-2.50719328898999 +"982",0.0207736381145273,-0.724539432208985,-0.0919066210693003,0.070475173076132,-0.0454845914399598,1,-0.447648852632721 +"983",0.0760831613523219,-0.680430354550481,-0.00745209891395367,0.0693481525262897,0.0433857471787731,1,0.808086224980861 +"984",0.999585156905905,0.977667185943574,0.736766844712238,0.12110656901337,0.855273631869908,1,8.57896048913183 +"985",0.0641495977609023,-0.202708608936518,0.188525162269545,0.065262763176962,0.192670162029247,1,3.35528064200029 +"986",-0.0152324617151595,-0.624176367651671,0.0850008697443891,0.0701045820823031,0.132970080414188,0,2.25258457040731 +"987",-0.120844419500681,-0.0445435177534819,0.0453778047952835,0.0664389325737422,0.0490895206580431,0,0.533497822659153 +"988",-0.00845831203633671,0.0884680454619229,-0.0926164233343757,0.0718851489499701,-0.0945715526946103,0,-1.84324384297505 +"989",0.36835273786989,-0.343684038612992,0.254924125529185,0.0687078056313837,0.260633186037081,1,4.94632681051919 +"990",0.925439563107405,0.999861187301576,0.800234924422307,0.134618206480845,0.942924088291598,1,9.27872791866588 +"991",-0.0691058332654721,0.0555636719800532,-0.0591495405499159,0.0710285871836794,-0.0598886973371698,0,-1.27551667844689 +"992",-0.195611274619547,-0.732530983630568,-0.108247929347823,0.0707573238491324,-0.0634292813981925,0,-0.683519537094062 +"993",0.206060931295594,-0.122919864486903,0.122470490014625,0.067235586626507,0.127992802909461,1,1.97022787594347 +"994",-0.375886414575821,0.241587879601866,-0.222499533804098,0.0699347108359535,-0.228232759589956,0,-4.03342133295782 +"995",0.188951394100895,-0.594175175763667,0.126680312970918,0.0712498850337396,0.17054304007204,1,2.92694767998707 +"996",0.0193531991613668,-0.731660454533994,-0.106452963906501,0.0707263655059849,-0.0614464550299414,1,-0.657724039375207 +"997",-0.219763089272701,0.55366799607873,-0.188258602637155,0.0716822837340163,-0.221662255102467,0,-3.45467613783501 +"998",-0.21451558934989,0.271899697370827,-0.240274594161269,0.0707337966998637,-0.246883662751375,0,-4.33005832558093 +"999",0.206364433507704,-0.435727406758815,0.25044084280166,0.0681881919449853,0.266983666951987,1,4.97530104613227 +"1000",0.0803400626266812,-0.617481087800115,0.0947807616264508,0.0703452236366206,0.141950486563733,1,2.40957013901761 diff --git a/statsmodels/gam/tests/results/results_mpg_bs.py b/statsmodels/gam/tests/results/results_mpg_bs.py new file mode 100644 index 0000000..6db323d --- /dev/null +++ b/statsmodels/gam/tests/results/results_mpg_bs.py @@ -0,0 +1,1274 @@ +import numpy as np +from statsmodels.tools.tools import Bunch + + +mpg_bs = Bunch() + +mpg_bs.smooth0 = Bunch() +mpg_bs.smooth0.term = 'weight' +mpg_bs.smooth0.bs_dim = 12 +mpg_bs.smooth0.dim = 1 +mpg_bs.smooth0.p_order = np.array([ + 3, 2 + ]) +mpg_bs.smooth0.by = 'NA' +mpg_bs.smooth0.label = 's(weight)' +mpg_bs.smooth0.sp = -1 +mpg_bs.smooth0.m = np.array([ + 3, 2 + ]) +mpg_bs.smooth0.knots = np.array([ + 1488, 1488, 1488, 1488, 1953.22222222, 2118.77777778, 2275, + 2383.88888889, 2515.55555556, 2757.33333333, 3016.44444444, + 3208.11111111, 4066, 4066, 4066, 4066 + ]) +mpg_bs.smooth0.rank = 10 +mpg_bs.smooth0.null_space_dim = 1 +mpg_bs.smooth0.df = 11 +mpg_bs.smooth0.S_scale = 2.44395544177397e-06 +mpg_bs.smooth0.vn = 'weight' +mpg_bs.smooth0.first_para = 5 +mpg_bs.smooth0.last_para = 15 +mpg_bs.smooth0.S = np.array([ + 0.130569121544375, -0.0191732921244136, 0.0202548028417763, + 0.0393112950002946, 0.032061392663319, 0.0241651485426007, + 0.0238771778381105, 0.0389406835250852, 0.0171569521441248, + 0.00680570834700402, 0.00541920498010491, -0.0191732921244136, + 0.0631473273216884, -0.0592997810399249, 0.0178641542128365, + 0.00461438941034586, 0.00793912465273829, 0.00408821971418319, + -0.000681869049168392, 0.00213834646721613, 0.000935846814259467, + 0.000163463753965317, 0.0202548028417763, -0.0592997810399249, + 0.201022514824508, -0.186241322892132, 0.00284878067469136, + 0.0287314367063779, 0.00263260805442764, -0.00708846456492193, + 0.00065385484055723, 0.000395067932117418, -0.000586348849229599, + 0.0393112950002947, 0.0178641542128365, -0.186241322892132, + 0.479322071007576, -0.286380917395105, 0.0563704638942206, + 0.0348887744557148, 0.0255203052273876, 0.0138979985789615, + 0.00560832050247454, 0.00383270204450356, 0.032061392663319, + 0.00461438941034587, 0.00284878067469137, -0.286380917395105, + 0.414581586658592, -0.181289913269406, -0.00412646444222532, + -0.00354719180127285, -0.00206283566879658, -0.000685858743449883, + -0.00142523589453221, 0.0241651485426007, 0.00793912465273829, + 0.0287314367063779, 0.0563704638942206, -0.181289913269406, + 0.213321319885371, -0.0483506678191679, 0.0110304252072989, + 0.0122299348640366, 0.00357726593043956, 0.00234383478372281, + 0.0238771778381105, 0.00408821971418319, 0.00263260805442764, + 0.0348887744557148, -0.00412646444222533, -0.0483506678191679, + 0.0999220996092033, -0.0356092452156359, 0.00921547832469341, + 0.00389860712399989, 0.00147745030481206, 0.0389406835250852, + -0.000681869049168392, -0.00708846456492192, 0.0255203052273876, + -0.00354719180127286, 0.0110304252072989, -0.0356092452156359, + 0.0574427000604467, -0.0102653399490586, -0.000311188772793241, + 0.00285258581655637, 0.0171569521441248, 0.00213834646721613, + 0.000653854840557233, 0.0138979985789615, -0.00206283566879658, + 0.0122299348640366, 0.00921547832469341, -0.0102653399490586, + 0.0189789273643945, -0.0062453384832703, 0.00255839876648785, + 0.00680570834700402, 0.000935846814259467, 0.000395067932117419, + 0.00560832050247454, -0.000685858743449884, 0.00357726593043956, + 0.00389860712399989, -0.000311188772793241, -0.0062453384832703, + 0.0211496391608495, -0.0111654555301857, 0.00541920498010491, + 0.000163463753965317, -0.000586348849229599, 0.00383270204450356, + -0.00142523589453221, 0.00234383478372281, 0.00147745030481206, + 0.00285258581655637, 0.00255839876648785, -0.0111654555301857, + 0.00794139033444708 + ]).reshape(11, 11, order='F') + +mpg_bs.coefficients = np.array([ + 29.6272774569595, -6.21365498504518, 1.43986598470837, 1.01128095138012, + 20.1053719083286, -1.26007449980292, -5.26871981200625, + -4.544036357677, -7.60063071956733, -5.01036711884368, + -6.96226144900638, -9.06722069409647, -8.81829781369916, + -7.9145836553663, -6.28068941724657, 5.09307848346347, + 1.90848821039499, -0.646225516186639, -1.50240395085899, + -4.19244286007642, -5.72993924243941, -6.83323296859843, + -5.77088950575513, -4.29112523442438 + ]) +mpg_bs.fitted_values = np.array([ + 21.9396113442978, 21.9396113442978, 18.7594768791121, 23.978775547494, + 19.6605284085114, 22.5415570425591, 21.4364029092864, 21.5001397125411, + 19.345544773382, 17.3284985371825, 23.0829354555269, 23.0829354555269, + 20.5257074462847, 20.350418275392, 20.0920273672739, 16.3475493433762, + 15.2683918200041, 14.6016645854518, 48.1414677548395, 34.6770647570973, + 33.3220963193152, 34.9078179723597, 34.9078179723597, 25.7413956426768, + 31.8998747894453, 31.4406608644666, 31.4406608644666, 25.4076816004152, + 24.637322541799, 19.5423694752458, 43.7120662014648, 36.1794319009933, + 37.8600814894106, 31.3973345386248, 30.9527603762328, 29.8740452948944, + 29.6825700516209, 26.8853631419929, 26.3600803699054, 26.1773024038522, + 25.3856227340742, 23.3020193188726, 24.7100852851954, 26.4172597325081, + 34.6770647570973, 33.3220963193152, 23.0296498930938, 14.7476201253168, + 14.7476201253168, 14.0557212409125, 34.34782143196, 33.965299405798, + 33.7800699350403, 32.4689563918131, 32.329358068477, 23.1906404151376, + 23.1906404151376, 23.1512875039068, 20.6941238423555, 25.5363151316018, + 25.3886549365523, 25.5363151316018, 25.3886549365523, 34.4607486893619, + 25.3326646650999, 20.7768158749875, 31.8441811103844, 23.0217104934054, + 22.4301358955383, 23.1106217353394, 22.4200843547568, 14.7491664060278, + 14.8191667947128, 14.012803756677, 13.9581303982076, 18.1760880728356, + 33.3190101477328, 32.4975851853098, 31.1829311245072, 25.6555703896226, + 22.6046524037776, 25.6230700315092, 19.5479517982215, 19.6165588348237, + 19.6186479966108, 25.1994604891903, 24.8987688972877, 22.3628638356355, + 22.3628638356355, 34.2300125601631, 39.2885271153262, 33.1621106074804, + 32.5172901213345, 30.742747639841, 32.1452590079292, 30.6934785442198, + 31.6517339944659, 30.5907093672281, 30.9641455088909, 24.6266167464042, + 24.9022880874316, 18.78153275305, 17.1521355867311, 19.0141306741668, + 18.231718904575, 16.8216593127165, 17.7202420891745, 22.0561680452922, + 27.2153336488053, 20.5096211586017, 25.567299743712, 21.9831410020533, + 26.7629956266796, 20.2961667790902, 25.2853678595518, 21.7669720922915, + 26.7629956266796, 18.4910047689371, 33.3190101477328, 25.7413956426768, + 31.8998747894453, 31.4406608644666, 29.7789375739066, 24.637322541799, + 19.1142432042937, 19.2193336362723, 17.6365280620964, 17.6365280620964, + 17.579806089837, 15.8168257322192, 21.8960566915, 21.7074289198647, + 21.6525958338155, 21.4785952775663, 18.9756522798894, 18.9897722666541, + 30.4602645168316, 29.3805961723331, 27.2238321670602, 27.9694092954432, + 27.7274373142384, 24.7585135497211, 24.3629123288499, 21.0288767895242, + 26.8745904429808, 24.038604652806, 24.1756501080763, 20.4312780252146, + 32.4709598995115, 31.6700176166953, 31.9735144592214, 30.0023513412019, + 28.4464554097632, 25.3419682258173, 30.061904278659, 29.8978667285749, + 37.2387365989938, 37.2387365989938, 29.9813024611395, 29.8303048561215, + 29.7392162621016, 29.1611058213974, 28.9573381148783, 23.6489155519235, + 23.2515846177326, 21.6472193877583, 21.6596390100383, 21.6094248571684, + 20.9701064457552, 20.8066296061343, 20.6663348110776, 25.161054576378, + 33.0089371917933, 24.3712852430277, 24.3712852430277, 24.2659916432858, + 18.5704777306123, 18.4763039586984, 17.9248313386425, 17.7576418795043, + 38.0290768582748, 27.2115396047694, 37.9994882599177, 27.1914558802737, + 26.6487573286281, 34.7866136817861, 24.6246815506878, 26.2295193582235, + 26.4988154777346, 21.8800181352396, 33.5183981701922, 24.5373651901876, + 20.8017272859603, 20.6222748754003, 20.8111189208126, 20.5838532565161, + 18.3170655814092, 17.5023519244001, 20.8093138226564, 18.3617172827568, + 19.5919656568361, 26.0100107405061, 20.4732985733418 + ]) +mpg_bs.linear_predictors = mpg_bs.fitted_values +mpg_bs.deviance = 871.169775911354 +mpg_bs.null_deviance = 8721.1724137931 +mpg_bs.iter = 1 +mpg_bs.weights = np.array([ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + ]) +mpg_bs.prior_weights = np.array([ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + ]) +mpg_bs.df_null = 202 +mpg_bs.y = np.array([ + 21, 21, 19, 24, 18, 19, 19, 19, 17, 16, 23, 23, 21, 21, 20, 16, 16, 15, + 47, 38, 38, 37, 31, 24, 31, 31, 31, 24, 24, 19, 49, 31, 38, 30, 30, 30, + 30, 27, 27, 27, 27, 24, 25, 24, 38, 38, 24, 15, 15, 13, 30, 31, 31, 31, + 31, 17, 17, 17, 16, 26, 26, 26, 26, 36, 26, 19, 31, 22, 22, 22, 22, 16, + 16, 14, 14, 19, 37, 31, 31, 24, 23, 25, 19, 19, 19, 25, 25, 23, 23, 31, + 45, 31, 31, 31, 31, 31, 31, 31, 31, 27, 27, 17, 17, 19, 19, 17, 19, 19, + 28, 19, 25, 19, 28, 19, 25, 19, 28, 18, 37, 24, 31, 31, 31, 24, 19, 19, + 17, 17, 17, 17, 21, 21, 21, 21, 19, 19, 31, 26, 26, 32, 28, 26, 24, 24, + 28, 25, 23, 23, 35, 31, 31, 31, 27, 27, 30, 30, 34, 38, 38, 28, 28, 29, + 29, 26, 26, 24, 24, 24, 24, 24, 24, 29, 30, 27, 27, 27, 20, 19, 20, 19, + 37, 27, 37, 27, 27, 37, 26, 24, 24, 19, 33, 25, 23, 23, 24, 24, 17, 17, + 23, 19, 18, 26, 19 + ]) +mpg_bs.residuals = mpg_bs.y - mpg_bs.fitted_values +mpg_bs.sig2 = 4.70648213227865 +mpg_bs.edf_all = np.array([ + 0.999999999999898, 1.00000000000005, 1.00000000000003, 1.00000000000002, + 0.715182726327133, 0.945523457125076, 0.933952133938362, + 0.910787981046657, 0.918439669310707, 0.936922915439925, + 0.967620005020078, 0.978502846618072, 0.979593620228742, + 0.973114724412765, 0.993928896515985, 0.206529848573726, + 0.134722764346217, 0.130032558435079, 0.214058208629181, + 0.428628830751172, 0.480753053928721, 0.728730191076721, + 0.464984912297227, 0.858004843431828 + ]) +mpg_bs.edf1 = np.array([ + 0.999999999999765, 1.00000000000012, 1.00000000000008, 1.00000000000005, + 0.895328939039617, 0.985281018312391, 0.980485303917254, + 0.985115307594987, 0.979973329752608, 0.991029113855046, + 0.996293301947028, 0.996456521529546, 0.997881056094132, + 0.998369079216076, 0.999638164901435, 0.263857404503542, + 0.167489975859197, 0.241183045516588, 0.33714799512247, + 0.51312433111897, 0.537892914498989, 0.811390270624644, + 0.600430783273412, 0.922162336898961 + ]) +mpg_bs.hat = np.array([ + 0.078074509536494, 0.078074509536494, 0.065030323239247, + 0.0401345230539626, 0.168187944335173, 0.0664399958506056, + 0.0736573430018038, 0.0780134136835909, 0.070154483540544, + 0.180767093886445, 0.0664593954539867, 0.0664593954539867, + 0.0594553974001933, 0.0675038468082751, 0.0536944450768444, + 0.0970468595627894, 0.125358300385429, 0.125631704260218, + 0.944302622125637, 0.0519142263263012, 0.0379831848669348, + 0.0493844279965059, 0.0493844279965059, 0.0949083347321329, + 0.0309819618026538, 0.029589102491272, 0.029589102491272, + 0.0670447385890157, 0.0842123937662785, 0.0687733897932081, + 0.422927507867707, 0.1328199698695, 0.096736475340286, + 0.0419915413707043, 0.0396238084435642, 0.0346918436236485, + 0.0363065585955308, 0.0491064279890273, 0.0441863897171056, + 0.0388360718854439, 0.0414457600258062, 0.0451305758954266, + 0.0505018876352514, 0.0744589274009074, 0.0519142263263012, + 0.0379831848669348, 0.101629248471346, 0.436525380451652, + 0.436525380451652, 0.410550032148353, 0.0425422548236529, + 0.039274955616929, 0.0380389889031733, 0.0330421266803994, + 0.0325988284653424, 0.066244431441902, 0.066244431441902, + 0.0666221560337819, 0.0952529331187707, 0.046598430925228, + 0.0484713995290722, 0.046598430925228, 0.0484713995290722, + 0.11544865825422, 0.0480259855055657, 0.0566600271329405, + 0.137824712103277, 0.112620492286817, 0.182195648532627, + 0.11200306230358, 0.188335501134619, 0.169514959934583, + 0.158055134563875, 0.160687809078496, 0.168998857825895, + 0.0681007619372312, 0.0357408884807467, 0.0331290501952606, + 0.0300353569162307, 0.0866855568546318, 0.0663539796978426, + 0.0330200310685004, 0.0646249177791591, 0.0586792000782014, + 0.0592011499253728, 0.0382030583658832, 0.0445521201486119, + 0.067008407725231, 0.067008407725231, 0.0432898262619123, + 0.12461566211325, 0.0358742808101827, 0.03362714942096, + 0.0325446423810936, 0.0323846714084075, 0.0335509666038901, + 0.0303353227561161, 0.0362607404205336, 0.0298241376272862, + 0.0362837776795306, 0.0432688893651977, 0.0709252762463711, + 0.147397446518277, 0.0723900341977973, 0.0517894283747262, + 0.106665126964701, 0.0503219409131233, 0.0834357951937577, + 0.100818501015755, 0.105292582127573, 0.104194456647628, + 0.0762380011365815, 0.105895524421508, 0.131464943163143, + 0.105727045973233, 0.0727635750299144, 0.105895524421508, + 0.0437337708748914, 0.0357408884807467, 0.0949083347321329, + 0.0309819618026538, 0.029589102491272, 0.0529778772840967, + 0.0842123937662785, 0.0607153181824941, 0.0672240685836559, + 0.144807911379215, 0.144807911379215, 0.141129878619691, + 0.688420146600013, 0.0609351365077056, 0.0626297831888101, + 0.0648027622574709, 0.0759997034218865, 0.0782103847541935, + 0.0707477713155958, 0.0410921970518355, 0.0589697594313821, + 0.152256577677227, 0.056765876958851, 0.0440206300688631, + 0.0331810206918762, 0.145634415508243, 0.171438771769591, + 0.045261532361592, 0.041840944187868, 0.143150260376584, + 0.156242430028033, 0.0410741399980494, 0.0522187899853102, + 0.0442706334210004, 0.0971923907649902, 0.165585071470526, + 0.238054218005531, 0.0532738449881275, 0.0604428830039113, + 0.111392476904907, 0.111392476904907, 0.057580243342699, + 0.0605291866378679, 0.0573770911039481, 0.0885019494515106, + 0.0862447970676653, 0.0955397769716847, 0.081739783220223, + 0.0812965346829218, 0.0809796720150843, 0.0813844390983633, + 0.0553602073413133, 0.0595903222287986, 0.0580738296478883, + 0.0331472062547294, 0.117186329269605, 0.0421565210307805, + 0.0421565210307805, 0.0431360897292105, 0.0601728243619919, + 0.0608147839961041, 0.0469900387599093, 0.0511099791683115, + 0.133968859142191, 0.0454828817219972, 0.134269192729732, + 0.045677409250904, 0.0484924110945302, 0.0915494575563987, + 0.0473953480872363, 0.0521826902889385, 0.0499074879741539, + 0.0607510996298348, 0.138895050565221, 0.0906618240478993, + 0.0545651794730959, 0.0588322152774606, 0.0555824719807064, + 0.0578268424764083, 0.0579806773332134, 0.0555747554696179, + 0.0570504628526928, 0.0556475846732603, 0.0510369790482531, + 0.105422478219541, 0.0549738873644795 + ]) +mpg_bs.R = np.array([ + -14.247806848775, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -12.8440820360878, 0.373532783001862, -4.2296607322892, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -8.28197639485442, 7.02914411540082, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5.33415428821132, -6.28488179729956, + 0.275366266013156, 0.350799946868301, -0.320832128978794, + -0.400140439924557, -2.75411074826349, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 6.93889390390723e-18, 0.232054372832382, + -0.059045600449299, 0.180812355115842, 0.128163547439293, + 0.144886567744466, -0.0269730574249025, -0.184599966726543, + 0.118427787192217, 0.122053978888216, -0.0642672707517637, + 0.0681043144407656, -0.060071867550458, -0.150958262500398, + 0.0229223735842404, 0.0444276150539449, -0.348767846881924, + 0.400671529738335, -0.0077479495898858, -0.0233519344455665, + -0.0016530657606304, 0.252520737261296, -0.0010134977318948, + -0.440010476997986, -2.77555756156289e-17, 1.09497230004704, + -0.214931983948417, 0.930799141411998, 0.550394857028419, + 0.709391063166251, -0.109782318058198, -0.842294484569631, + 0.695883635886005, 0.497451233152266, -0.43887148186347, + 0.581743977285481, -0.402315830184767, -0.709015800353095, + 0.0516077442049284, 0.028185898732357, -0.352543779422061, + 1.27839021341958, 0, 0, 0, 0, 0, 0, -1.38777878078145e-16, + 1.46496369379118, -0.201247454925983, 1.35850779046971, + 0.280404550518566, 1.0970677381965, -0.0446546144567612, + 0.111447137155272, 1.10339850569991, 0.314461688316244, + -0.822981973569381, 0.910711177150427, -0.465095093337983, + -0.492817626024387, -0.0302680940522306, -0.250587565379533, + 1.36321225401071, 0, 0, 0, 0, 0, 0, 0, -5.55111512312578e-17, + 0.636539976078798, 0.334849603625203, -0.801543168266999, + -0.153261416776597, 0.590531348112483, 0.179469236924221, + 2.6920602822558, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.52655665885959e-16, 0.386544461276061, 0.0617187417679946, + -3.3375034414008, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.22044604925031e-16, -0.268086271294675, 0.0357997911433628, + -0.811541848512822, -0.417713567994733, -0.549046879404324, + 0.191376270418331, -0.760481136635749, 1.0789013415145, + -0.49182262459782, 0.630320008138126, 0.0469111147236198, + 1.777708468755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.52655665885959e-16, + -0.638506225101581, -0.252213861766942, 0.590961092489265, + -0.376498675165681, -1.05466211118764, 0.161726074180775, + -0.307990147500367, 0.53052971421346, -0.419174109920259, + 2.18021214925427, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2.4980018054066e-16, -1.88284158749395, -0.158199593825249, + 1.30601514580108, -0.263143162777336, -1.19466765891104, + -0.0392202790218998, -0.553059650646982, -2.5833579317638, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7.63278329429795e-17, + -1.03018120754794, 0.633410571283583, 0.425787563324548, + -0.117069541181738, -0.15949862209609, -0.203120611440518, + -0.24794544312747, -0.577954387092811, -0.392668668150195, + -0.742414613515821, -0.0517296981247248, -0.180774236277864, + -0.0985346957439217, -0.0346679818369825, -0.522507884861262, + -0.444065964414515, -0.178453142391426, 0.368705729297475, + 0.951128380630708, 0, 0, 0, 0, -1.35308431126191e-16, + -0.465120271023632, 0.406195493272399, 0.070203506724658, + 0.112046096976311, -0.200096302157889, -0.152715842062604, + 0.0104383470658289, 0.342550835873512, -0.273815544285267, + -0.401207001497804, -0.040780018432021, -0.303740748176209, + -0.0609839545858858, 0.319068530448539, -0.260734203657871, + -0.260132352451617, -0.0932586655435074, 0.203432578212413, + 0.317497529276374, -0.83938821954848, 0, 0, 0, -4.85722573273506e-17, + -0.390650961425867, 0.0330907911134603, 0.00733620315637045, + 0.228118285854502, -0.0868790621492882, -0.191943985560395, + 0.0744153770730219, 0.343145769098306, -0.095185581001596, + -0.223303572468095, -0.150287745525581, -0.158778635381907, + 0.0110735369943658, 1.59565825328421, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -1.11022302462516e-16, 0.274167363775303, 0.474667692897905, + 0.106124488726352, 0.284328629467105, 0.186661254435535, + 0.187571744571793, 0.20413327819365, -0.0397206127231053, + 0.383068904117848, 0.0739013097506463, -0.570930211792512, + 0.0925572774037632, -0.322045428454689, -0.0206704824306383, + 0.138827717514351, 0.305979392429139, 0.329598188006108, + 0.056917317683023, 0.166351113868783, -0.0429579563012386, + 0.698123470574497, 0, 0, 2.77555756156289e-17, 1.28869031811426, + 0.159462695223405, 0.94874511527323, 1.22041060990194, + 1.23041883682224, 0.214295232212795, -0.421272049466657, + 0.484873150940021, 1.22340399746876, -0.126213059047102, + 0.586508858858053, 0.0387247897517475, -1.73048932450117, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 3.33066907387547e-16, 1.38101651269374, + -0.161333143580265, 0.26879941823133, 1.5843908766769, + 1.56675922898707, 0.130712348793346, -0.15459448409081, + 0.322441342868708, 0.032841704236906, -0.040628028706388, + 1.95780421180254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -4.71844785465692e-16, 0.547361386973655, -0.0560623687491847, + -1.42773410582977, -0.319295075080351, 1.10930671785576, + -0.249435864270354, 0.376460682854174, -0.859698359693027, + -2.22778539317977, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -1.16573417585641e-15, -0.680782403896811, -0.0829421876833989, + -1.06575902669119, -3.08847910097662, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, -3.05311331771918e-16, -1.73716924091107, + -0.427903820099444, 0.508003939493925, 0.0674537346537795, + -3.01780655906657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -8.32667268468867e-17, -0.907178653618356, -0.442910523756854, + 0.50555822069335, 0.912713271576068, -0.893880669315821, + -0.303415799851323, 0.00713986966174707, -0.565052960394418, + -0.0893598475014228, 0.1719971566722, -0.455461128044599, + -0.0927359754631413, 0.109881340577719, 0.546762409477948, + -1.42658278966991, 0, 0, 0, 0, 0, 0, 0, 0, -5.89805981832114e-17, + -0.358468733615153, -0.156326542139889, 0.124611476610136, + 0.261720342968014, 0.0035504239879391, -0.178906878260252, + -0.00818092652923195, -0.0665839339476971, 0.00890831066007731, + 0.21700219401572, -0.192545410574642, -0.0251881401918565, + 0.0596236111422667, 0.356927030887266, -0.559501871586496, + 0.00939356269184223, 0.00808635023879492, 0.174506073397661, + -0.00768811220727605, -0.0824771518664715, 0.00281995201714263, + 0.552896914606241, 0, -8.15320033709099e-17, -0.153937258650552, + -0.0600660535926754, 0.0307742140033325, 0.0538665072365687, + 0.107288075694366, -0.0951443583796005, -0.0122161530644771, + 0.00205111921342145, 0.00850795594637679, 0.0131768142662108, + -0.0351898170323615, -0.00506295245698965, 0.000521970211206223, + 0.172268163286512, 0.0600225535087082, -0.0453855401632395, + -0.0806877659326075, 1.10081916052039, 0, 0, 0, 0, 0 + ]).reshape(24, 24, order='F') + +mpg_bs.sp = np.array([ + 0.830689464223685, 425.361212061649 + ]) +mpg_bs.nsdf = 4 +mpg_bs.Ve = np.array([ + 1.18849578741713, -0.569737725624008, -0.680858316482058, + -0.683616810254248, 0.377412685416274, 0.162104128449963, + 0.0284282197471564, -0.170886673387626, -0.194448131082813, + -0.235607054710811, -0.334637151301396, -0.298355349820224, + -0.598813240305989, -0.484066776146491, -0.222539433922648, + -0.343523840336231, -0.124699240656557, 0.0511301117304156, + 0.112522894520982, 0.282177537241417, 0.387281538045199, + 0.418871839073582, 0.402617068797253, 0.425257369102146, + -0.569737725624005, 0.510619669380942, 0.112546264990929, + 0.117538151789885, -0.278500464239846, -0.106503131214755, + -0.0142727895051468, 0.119693314820498, 0.122566162544252, + 0.141792166493477, 0.258713037741001, 0.167091968978498, + 0.548140901913199, 0.402802042938447, 0.176247371186236, + 0.253097604219116, 0.0912014747571045, -0.0380177304877867, + -0.0817277273105231, -0.204215321526615, -0.280746382175004, + -0.319748198891912, -0.318839637675066, -0.346791704585694, + -0.680858316482058, 0.112546264990932, 0.638516918399206, + 0.556227307650149, -0.149549094619738, -0.0901476474252184, + -0.0314272288120588, 0.0594285832238709, 0.0785867343964528, + 0.126531869912634, 0.115344796918859, 0.183217693464862, + 0.163894193990623, 0.162198493812758, 0.106799415384204, + 0.109314043840205, 0.039603794069169, -0.0171925190894075, + -0.0379071720667663, -0.0926771979192517, -0.125253415978965, + -0.130401583734828, -0.0977251095986251, -0.0934734674925854, + -0.683616810254247, 0.117538151789886, 0.55622730765015, + 0.679340900017709, -0.105294697611617, -0.0365742456166672, + 0.0072290114551591, 0.0759677008568446, 0.102238529018836, + 0.0914408551091774, 0.0917917075151983, 0.110113392915614, + 0.0251287873829862, 0.0712284135539027, 0.00420927820895315, + 0.138413432144903, 0.0519845825338026, -0.0183348782823596, + -0.0449069366586222, -0.118088511396914, -0.163969226310945, + -0.146443105973786, -0.155948004456154, -0.155717037163534, + 0.377412685416275, -0.278500464239846, -0.149549094619738, + -0.105294697611618, 8.01906586668495, -2.27352940533633, + 0.45239432853495, -0.433803454982267, -0.321923610858328, + -0.318990687433886, -0.433465009208203, -0.525137481608645, + -0.506872937415426, -0.438726607538563, -0.289330429361372, + -0.318378214065367, -0.101315898912012, 0.0702660843270244, + 0.125057219633613, 0.2769143210106, 0.359103233667746, + 0.354041831289896, 0.282213763036391, 0.281665967664165, + 0.162104128449962, -0.106503131214755, -0.0901476474252181, + -0.0365742456166671, -2.27352940533632, 2.37285683619595, + -0.213131606980922, 0.767615270864913, 0.45140474706449, + 0.349810131981814, 0.213475199524978, 0.508125482025884, + 0.103391649249744, -0.128745904515542, -0.0765211944825074, + -0.14210598704292, -0.0700821910069956, -0.00835991045569704, + 0.0238183516288048, 0.114417262260653, 0.189728622537479, + 0.1859026399357, 0.137259047130605, 0.138169217600521, + 0.0284282197471565, -0.0142727895051469, -0.0314272288120594, + 0.00722901145515861, 0.45239432853495, -0.213131606980925, + 1.48167014860297, 0.358254593363372, 0.821714985190383, + 0.435917484658345, 0.483749368795539, 0.794954101917704, + 0.324483058344503, 0.0820494696682664, 0.0547331327769316, + 0.0486413023665632, -0.000893288118834948, -0.0422342223315039, + -0.0525140148744463, -0.0607809292570511, -0.0402549081797533, + 0.0356219564069622, 0.00604280956565075, 0.0117467988521824, + -0.170886673387627, 0.119693314820499, 0.0594285832238702, + 0.0759677008568449, -0.433803454982266, 0.767615270864913, + 0.358254593363373, 1.13763489477576, 0.451943034662882, + 0.597170540589345, 0.419838151190159, 0.780586637924992, + 0.403663838323704, 0.203586408121847, 0.0871329612292375, + 0.109134911376121, 0.0232034159348934, -0.0477316317501318, + -0.0695234156209474, -0.112765387491885, -0.112306705383561, + -0.0376954736643469, -0.0615606161698961, -0.0647075752932795, + -0.194448131082812, 0.122566162544252, 0.0785867343964518, + 0.102238529018836, -0.321923610858328, 0.451404747064489, + 0.821714985190384, 0.451943034662882, 1.30968147581624, + 0.280173059312136, 0.785275069851208, 0.944589724869548, + 0.582120239085169, 0.251692801313291, 0.177417447612862, + 0.236534565581584, 0.063697071092112, -0.0798064294015515, + -0.128298735246426, -0.232002717105217, -0.259819418835401, + -0.132041678675547, -0.144238622217655, -0.135794945401223, + -0.235607054710811, 0.141792166493477, 0.126531869912634, + 0.0914408551091777, -0.318990687433885, 0.349810131981813, + 0.435917484658346, 0.597170540589345, 0.280173059312136, + 1.40453967538731, -0.0549248400788445, 0.887407266694885, + 0.182255134228699, 0.44876824071208, 0.0819989625257823, + 0.195295673825192, 0.0572040232059282, -0.0577601415985759, + -0.09986577100187, -0.199632793168151, -0.245270473624566, + -0.071594291206518, -0.0275251080861387, -0.0486598136301801, + -0.334637151301396, 0.258713037741001, 0.115344796918858, + 0.0917917075151987, -0.433465009208205, 0.213475199524978, + 0.483749368795539, 0.419838151190159, 0.785275069851208, + -0.0549248400788439, 1.62111742405635, 0.489616865304753, + 1.19779245625055, 0.0892464546337603, 0.446642767986137, + 0.34570878083834, 0.130478144837288, -0.0410385359578811, + -0.100929223732173, -0.277310119566828, -0.401938968295842, + -0.433555535429798, -0.425894949004986, -0.422397788871241, + -0.298355349820222, 0.167091968978497, 0.18321769346486, + 0.110113392915613, -0.525137481608645, 0.508125482025883, + 0.794954101917703, 0.780586637924992, 0.944589724869547, + 0.887407266694884, 0.489616865304751, 2.00741767223713, + -0.341867060574754, 1.35779003650178, 0.290856050655419, + 0.357337142424838, 0.13148384296731, -0.0486525097265586, + -0.111064872524035, -0.295277046615757, -0.433706834878977, + -0.484441193814012, -0.171094901190814, -0.0593737345467254, + -0.598813240305986, 0.548140901913199, 0.16389419399062, + 0.0251287873829865, -0.506872937415427, 0.103391649249744, + 0.324483058344504, 0.403663838323703, 0.582120239085168, + 0.182255134228698, 1.19779245625054, -0.341867060574751, + 3.99861269607432, -2.00886429180448, 0.881002722046794, + 0.356715486780007, 0.114035128649945, -0.081859095815927, + -0.144619951057461, -0.29572669309598, -0.350426493349162, + -0.371609126526997, -0.613212031156679, -0.829918754600024, + -0.484066776146489, 0.402802042938446, 0.162198493812755, + 0.0712284135539022, -0.438726607538561, -0.128745904515543, + 0.0820494696682656, 0.203586408121846, 0.251692801313291, + 0.448768240712079, 0.0892464546337585, 1.35779003650177, + -2.00886429180448, 5.69767997552633, -0.950166465577867, + 0.386516976943115, 0.162579206564945, -0.0135283061654258, + -0.0788824543667668, -0.297040770247142, -0.492669425332621, + -0.562105275521641, -0.341961974289066, -0.336529822591599, + -0.222539433922648, 0.176247371186237, 0.106799415384203, + 0.0042092782089533, -0.289330429361373, -0.0765211944825078, + 0.0547331327769319, 0.0871329612292375, 0.177417447612863, + 0.0819989625257824, 0.446642767986138, 0.29085605065542, + 0.881002722046795, -0.950166465577866, 2.43458440656306, + 0.225417044852558, 0.100628997996125, 0.00778427056629371, + -0.0196130120822873, -0.124385518181094, -0.214499024431833, + -0.511121699992081, -0.620166616003633, -0.60645532848849, + -0.343523840336231, 0.253097604219116, 0.109314043840204, + 0.138413432144904, -0.318378214065368, -0.14210598704292, + 0.0486413023665631, 0.109134911376121, 0.236534565581584, + 0.195295673825192, 0.34570878083834, 0.357337142424838, + 0.356715486780007, 0.386516976943115, 0.225417044852558, + 0.39392854398882, 0.127125584382261, -0.0886497989809537, + -0.161435653471641, -0.34944548551855, -0.449697110002955, + -0.376881691271306, -0.321387399770619, -0.313722205092763, + -0.124699240656557, 0.0912014747571047, 0.0396037940691688, + 0.0519845825338027, -0.101315898912011, -0.0700821910069957, + -0.000893288118835158, 0.0232034159348933, 0.063697071092112, + 0.0572040232059281, 0.130478144837288, 0.13148384296731, + 0.114035128649945, 0.162579206564945, 0.100628997996125, + 0.127125584382261, 0.0574406818774124, -0.00173302682023446, + -0.0287499587058463, -0.104275328896744, -0.161636207057517, + -0.160756204797398, -0.130142697810604, -0.13018206203756, + 0.0511301117304161, -0.038017730487787, -0.0171925190894076, + -0.01833487828236, 0.0702660843270248, -0.0083599104556969, + -0.0422342223315041, -0.0477316317501321, -0.0798064294015518, + -0.057760141598576, -0.0410385359578815, -0.0486525097265592, + -0.0818590958159274, -0.0135283061654262, 0.00778427056629371, + -0.0886497989809539, -0.00173302682023456, 0.0682701229991469, + 0.0825822726440073, 0.0985048806897502, 0.0706692739185619, + -0.000645718260510867, 0.0195562281836991, 0.0117075505963419, + 0.112522894520982, -0.0817277273105231, -0.0379071720667655, + -0.044906936658622, 0.125057219633614, 0.0238183516288047, + -0.0525140148744461, -0.0695234156209473, -0.128298735246425, + -0.0998657710018698, -0.100929223732172, -0.111064872524035, + -0.144619951057461, -0.0788824543667667, -0.0196130120822869, + -0.161435653471641, -0.0287499587058462, 0.0825822726440071, + 0.117052981020959, 0.17162156214383, 0.155502600429989, + 0.0424939853288228, 0.0710929826375929, 0.0587657751998833, + 0.282177537241414, -0.204215321526614, -0.0926771979192491, + -0.118088511396912, 0.276914321010599, 0.114417262260653, + -0.0607809292570516, -0.112765387491884, -0.232002717105217, + -0.19963279316815, -0.277310119566827, -0.295277046615757, + -0.295726693095979, -0.297040770247141, -0.124385518181093, + -0.349445485518549, -0.104275328896744, 0.0985048806897497, + 0.17162156214383, 0.342091764619944, 0.401295877515778, + 0.209313810556492, 0.220115583303013, 0.210671136673818, + 0.387281538045201, -0.280746382175005, -0.125253415978966, + -0.163969226310947, 0.359103233667747, 0.18972862253748, + -0.040254908179753, -0.112306705383561, -0.259819418835401, + -0.245270473624566, -0.401938968295843, -0.433706834878978, + -0.350426493349163, -0.492669425332622, -0.214499024431833, + -0.449697110002955, -0.161636207057517, 0.0706692739185617, + 0.15550260042999, 0.40129587751578, 0.587032652011506, + 0.368781744389901, 0.258422103020345, 0.320444922617658, + 0.418871839073582, -0.319748198891913, -0.130401583734826, + -0.146443105973786, 0.354041831289896, 0.185902639935701, + 0.035621956406963, -0.0376954736643463, -0.132041678675547, + -0.0715942912065177, -0.433555535429798, -0.484441193814012, + -0.371609126526998, -0.562105275521643, -0.511121699992081, + -0.376881691271307, -0.160756204797398, -0.000645718260511014, + 0.0424939853288234, 0.209313810556494, 0.3687817443899, + 1.11545557505271, 0.290647701203176, 0.0774280344372213, + 0.402617068797252, -0.318839637675066, -0.0977251095986237, + -0.155948004456154, 0.282213763036391, 0.137259047130605, + 0.00604280956565094, -0.0615606161698963, -0.144238622217655, + -0.0275251080861385, -0.425894949004986, -0.171094901190814, + -0.613212031156679, -0.341961974289066, -0.620166616003633, + -0.321387399770619, -0.130142697810604, 0.0195562281836988, + 0.0710929826375929, 0.220115583303014, 0.258422103020344, + 0.290647701203175, 1.86569693342601, 1.41062610423399, + 0.425257369102145, -0.346791704585695, -0.0934734674925844, + -0.155717037163535, 0.281665967664164, 0.138169217600522, + 0.0117467988521817, -0.0647075752932792, -0.135794945401224, + -0.0486598136301801, -0.422397788871241, -0.0593737345467268, + -0.829918754600025, -0.3365298225916, -0.60645532848849, + -0.313722205092763, -0.13018206203756, 0.0117075505963417, + 0.0587657751998836, 0.210671136673819, 0.320444922617657, + 0.077428034437221, 1.41062610423399, 3.20765551205844 + ]).reshape(24, 24, order='F') + +mpg_bs.Vp = np.array([ + 1.226257739946, -0.598954657895286, -0.693991747115123, + -0.693738296346539, 0.404255923420743, 0.152502921378066, + 0.00918450889439832, -0.209302670605415, -0.240267712628183, + -0.262649114511732, -0.365619814022882, -0.327688080888645, + -0.677140166341306, -0.482724236080649, -0.237502268332879, + -0.394504397805591, -0.124407237788995, 0.0889824986249079, + 0.166767589068027, 0.334266702799051, 0.407758566331903, + 0.47826420385775, 0.385179621333107, 0.448761523202594, + -0.598954657895286, 0.53430888394443, 0.121729206748625, + 0.124279255191775, -0.304552854849217, -0.0916575260440732, + 0.0065056153509031, 0.150496284941485, 0.162046172228289, + 0.162469531644191, 0.286540735503703, 0.191866647181026, + 0.613174101669279, 0.400604659764261, 0.188505316042605, + 0.296392591782633, 0.0853113158261075, -0.0756702387932951, + -0.125698012402281, -0.246372406481652, -0.300946575673317, + -0.369984827436232, -0.300763838199813, -0.36676854858092, + -0.693991747115123, 0.121729206748625, 0.644395132027891, + 0.560069134869483, -0.154206546410626, -0.0936367010188792, + -0.0316633843634197, 0.0722647584400985, 0.0888778951412027, + 0.136117294041357, 0.119855730051766, 0.191533981589997, + 0.18839422518101, 0.161358399661349, 0.111490691845143, + 0.122188815638708, 0.0452150644285857, -0.0220226812226592, + -0.0556777449240322, -0.106839588557335, -0.124419677875331, + -0.15802574281452, -0.0722707700506129, -0.105116727222253, + -0.693738296346539, 0.124279255191775, 0.560069134869483, + 0.6841791124165, -0.107031678165138, -0.0412583559665033, + 0.00896442684349225, 0.0844786906931047, 0.113582954198454, + 0.0990000691857173, 0.100538046096834, 0.115895712613785, + 0.0397115077690524, 0.074237842466752, 0.00737613155330012, + 0.150345634380864, 0.0566752746370431, -0.0212778570711782, + -0.0563304001336339, -0.13372261621447, -0.171318995103557, + -0.141228583028678, -0.192417498343195, -0.152318039573587, + 0.404255923420743, -0.304552854849217, -0.154206546410626, + -0.107031678165138, 11.9670976422831, -3.61736029523771, + 1.34326036379293, -0.494153536158182, 0.0834074623603979, + -0.226433455900482, -0.192957457020386, -0.209244998351617, + -0.379519786733706, -0.389683690480388, -0.230781621465011, + -0.316949554505238, -0.0794032910847186, 0.0892123902485899, + 0.134636493675703, 0.25972163924313, 0.34046358953534, + 0.359567685263677, 0.241143867637169, 0.283588971081093, + 0.152502921378066, -0.0916575260440732, -0.0936367010188792, + -0.0412583559665033, -3.61736029523771, 2.970388896856, + -0.526929630639825, 0.882729262382722, 0.311472631824992, + 0.378478323406872, 0.140426378273093, 0.456737474558485, + 0.0613966244883271, -0.122964335843988, -0.0922074692604644, + -0.128708029908938, -0.124621699881393, -0.0591566177055406, + 0.0184560491961697, 0.113879979649421, 0.164485847186027, + 0.18744932016437, 0.127614304692519, 0.147051420502851, + 0.00918450889439832, 0.0065056153509031, -0.0316633843634197, + 0.00896442684349225, 1.34326036379293, -0.526929630639825, + 1.81242957779768, 0.322362109775063, 1.0323933349731, + 0.457360886283924, 0.600444054321793, 0.91370612119665, + 0.434301465723446, 0.088055761039491, 0.0848436101740658, + 0.12744269016312, -0.0422129416844794, -0.135413959815355, + -0.118116683956611, -0.140107289290965, -0.104129953113642, + -0.0176599234366945, -0.0234972191406761, -0.00396736798305567, + -0.209302670605415, 0.150496284941485, 0.0722647584400985, + 0.0844786906931047, -0.494153536158182, 0.882729262382722, + 0.322362109775063, 1.27384764314234, 0.436524282156763, + 0.700073089805124, 0.42086785868429, 0.839439528040047, + 0.457304590724931, 0.226988664621102, 0.0985281278677041, + 0.149735868306737, 0.00757050756523659, -0.0912854085559435, + -0.113724893986152, -0.155881623417337, -0.140317119716309, + -0.0713406095842423, -0.0716633370687491, -0.0803273684693989, + -0.240267712628183, 0.162046172228289, 0.0888778951412027, + 0.113582954198454, 0.0834074623603979, 0.311472631824992, + 1.0323933349731, 0.436524282156763, 1.53314803627766, 0.25417552361178, + 0.924685362467373, 1.02972297718702, 0.744949808908217, + 0.233388656964272, 0.217427541094708, 0.336055700676656, + 0.03743876914053, -0.176903580046802, -0.226786128357071, + -0.334988155952527, -0.319776388666983, -0.219028256501927, + -0.17608697725841, -0.170430448469263, -0.262649114511732, + 0.162469531644191, 0.136117294041357, 0.0990000691857173, + -0.226433455900482, 0.378478323406872, 0.457360886283924, + 0.700073089805124, 0.25417552361178, 1.5644915898195, + -0.0975959025442556, 0.97584002950171, 0.168966508584049, + 0.522744745835193, 0.0695516714823915, 0.233037922998919, + 0.0395396435819605, -0.095915399510004, -0.131051837524492, + -0.237143604722523, -0.301242506702221, -0.0532025767899828, + -0.0391505765515488, -0.0655180027477513, -0.365619814022882, + 0.286540735503703, 0.119855730051766, 0.100538046096834, + -0.192957457020386, 0.140426378273093, 0.600444054321793, + 0.42086785868429, 0.924685362467373, -0.0975959025442556, + 1.75709614368116, 0.519892887281196, 1.34059888676236, + 0.0494466626673817, 0.484653667289698, 0.4084580005862, + 0.114791375213036, -0.095987442819961, -0.154931741342113, + -0.33903979770467, -0.45909753833617, -0.453485705029258, + -0.522724292505745, -0.433667169565367, -0.327688080888645, + 0.191866647181026, 0.191533981589997, 0.115895712613785, + -0.209244998351617, 0.456737474558485, 0.91370612119665, + 0.839439528040047, 1.02972297718702, 0.97584002950171, + 0.519892887281196, 2.13968207395045, -0.336164257008457, + 1.46238357432731, 0.283248342097559, 0.418961909633758, + 0.100598943813762, -0.113838923311929, -0.163977417541771, + -0.348791715965874, -0.506114865794541, -0.545497271000249, + -0.0923819541519448, -0.0813491527908169, -0.677140166341306, + 0.613174101669279, 0.18839422518101, 0.0397115077690524, + -0.379519786733706, 0.0613966244883271, 0.434301465723446, + 0.457304590724931, 0.744949808908217, 0.168966508584049, + 1.34059888676236, -0.336164257008457, 4.35482101642386, + -2.21992012490562, 0.9807810786271, 0.462108282803803, + 0.102236590809152, -0.17410468003079, -0.266734242517673, + -0.42033089744795, -0.347661934619728, -0.575867027882068, + -0.498450427127264, -0.934477998886557, -0.482724236080649, + 0.400604659764261, 0.161358399661349, 0.074237842466752, + -0.389683690480388, -0.122964335843988, 0.088055761039491, + 0.226988664621102, 0.233388656964272, 0.522744745835193, + 0.0494466626673817, 1.46238357432731, -2.21992012490562, + 5.99371147921815, -1.04859890355395, 0.398421384908712, + 0.156461542733891, -0.019434665724302, -0.0755469444958039, + -0.280486183344505, -0.58136563218615, -0.484634147345514, + -0.356292120764518, -0.321958833095722, -0.237502268332879, + 0.188505316042605, 0.111490691845143, 0.00737613155330012, + -0.230781621465011, -0.0922074692604644, 0.0848436101740658, + 0.0985281278677041, 0.217427541094708, 0.0695516714823915, + 0.484653667289698, 0.283248342097559, 0.9807810786271, + -1.04859890355395, 2.48580346896528, 0.24501910446873, + 0.0969773944957306, -0.0119475871587249, -0.0484689252547535, + -0.149760547646666, -0.199911474519641, -0.552166680756775, + -0.678892603460011, -0.5732539695505, -0.394504397805591, + 0.296392591782633, 0.122188815638708, 0.150345634380864, + -0.316949554505238, -0.128708029908938, 0.12744269016312, + 0.149735868306737, 0.336055700676656, 0.233037922998919, + 0.4084580005862, 0.418961909633758, 0.462108282803803, + 0.398421384908712, 0.24501910446873, 0.498918611844292, + 0.101227030650827, -0.178108615875722, -0.244469114785688, + -0.433333724585524, -0.51389265638907, -0.438018959207985, + -0.33953374106696, -0.343184385441028, -0.124407237788995, + 0.0853113158261075, 0.0452150644285857, 0.0566752746370431, + -0.0794032910847186, -0.124621699881393, -0.0422129416844794, + 0.00757050756523659, 0.03743876914053, 0.0395396435819605, + 0.114791375213036, 0.100598943813762, 0.102236590809152, + 0.156461542733891, 0.0969773944957306, 0.101227030650827, + 0.11580938727038, 0.0398795020188062, -0.0127386826369836, + -0.078440365893966, -0.126321924455581, -0.142568428815273, + -0.128344286246162, -0.12956213066101, 0.0889824986249079, + -0.0756702387932951, -0.0220226812226592, -0.0212778570711782, + 0.0892123902485899, -0.0591566177055406, -0.135413959815355, + -0.0912854085559435, -0.176903580046802, -0.095915399510004, + -0.095987442819961, -0.113838923311929, -0.17410468003079, + -0.019434665724302, -0.0119475871587249, -0.178108615875722, + 0.0398795020188062, 0.193099358293502, 0.160470436488742, + 0.175008323309716, 0.136917954502474, 0.0674161405311557, + 0.0279662107609871, 0.0326656898702012, 0.166767589068027, + -0.125698012402281, -0.0556777449240322, -0.0563304001336339, + 0.134636493675703, 0.0184560491961697, -0.118116683956611, + -0.113724893986152, -0.226786128357071, -0.131051837524492, + -0.154931741342113, -0.163977417541771, -0.266734242517673, + -0.0755469444958039, -0.0484689252547535, -0.244469114785688, + -0.0127386826369836, 0.160470436488742, 0.226474480900493, + 0.241440219382646, 0.201381320129549, 0.122080977992512, + 0.081142778241122, 0.0898255256880958, 0.334266702799051, + -0.246372406481652, -0.106839588557335, -0.13372261621447, + 0.25972163924313, 0.113879979649421, -0.140107289290965, + -0.155881623417337, -0.334988155952527, -0.237143604722523, + -0.33903979770467, -0.348791715965874, -0.42033089744795, + -0.280486183344505, -0.149760547646666, -0.433333724585524, + -0.078440365893966, 0.175008323309716, 0.241440219382646, + 0.46452011571498, 0.431899381842666, 0.29910894777825, + 0.240131184980999, 0.241496481383994, 0.407758566331903, + -0.300946575673317, -0.124419677875331, -0.171318995103557, + 0.34046358953534, 0.164485847186027, -0.104129953113642, + -0.140317119716309, -0.319776388666983, -0.301242506702221, + -0.45909753833617, -0.506114865794541, -0.347661934619728, + -0.58136563218615, -0.199911474519641, -0.51389265638907, + -0.126321924455581, 0.136917954502474, 0.201381320129549, + 0.431899381842666, 0.744405673993396, 0.24778593600495, + 0.4134406891463, 0.339886403782703, 0.47826420385775, + -0.369984827436232, -0.15802574281452, -0.141228583028678, + 0.359567685263677, 0.18744932016437, -0.0176599234366945, + -0.0713406095842423, -0.219028256501927, -0.0532025767899828, + -0.453485705029258, -0.545497271000249, -0.575867027882068, + -0.484634147345514, -0.552166680756775, -0.438018959207985, + -0.142568428815273, 0.0674161405311557, 0.122080977992512, + 0.29910894777825, 0.24778593600495, 1.6826091216262, + -0.575046038411989, 0.249267438526421, 0.385179621333107, + -0.300763838199813, -0.0722707700506129, -0.192417498343195, + 0.241143867637169, 0.127614304692519, -0.0234972191406761, + -0.0716633370687491, -0.17608697725841, -0.0391505765515488, + -0.522724292505745, -0.0923819541519448, -0.498450427127264, + -0.356292120764518, -0.678892603460011, -0.33953374106696, + -0.128344286246162, 0.0279662107609871, 0.081142778241122, + 0.240131184980999, 0.4134406891463, -0.575046038411989, + 4.04150194703527, 0.746794237585425, 0.448761523202594, + -0.36676854858092, -0.105116727222253, -0.152318039573587, + 0.283588971081093, 0.147051420502851, -0.00396736798305567, + -0.0803273684693989, -0.170430448469263, -0.0655180027477513, + -0.433667169565367, -0.0813491527908169, -0.934477998886557, + -0.321958833095722, -0.5732539695505, -0.343184385441028, + -0.12956213066101, 0.0326656898702012, 0.0898255256880958, + 0.241496481383994, 0.339886403782703, 0.249267438526421, + 0.746794237585425, 3.59868564812178 + ]).reshape(24, 24, order='F') + +mpg_bs.rV = np.array([ + -0.0297518795017788, -0.0279144173114223, -0.0184650622756606, + -0.0101929107895547, -5.5865624793419e-05, -0.000249849893142171, + -0.000309898734480696, -5.42025622874735e-06, -2.22599252448511e-05, + 6.60370601160911e-05, 4.41786063148996e-05, 0.000264079369629404, + 0.000312739927356773, 0.000166746800984281, 6.22512704032769e-05, + 0.00023873784102746, -0.000189663494086306, -0.000244118781964904, + -5.82504534029272e-05, 0.000142876370789319, 0.000217254008213435, + 4.53282887363646e-05, 1.82517606339378e-05, 8.58792421331435e-06, + 0.000370322487453743, 0.000201992910699855, -0.000469164613014575, + 0.000774270041235595, -5.68115342516726e-05, -0.000380679224700556, + -0.000422010861587262, 0.000101142157681932, 0.000187113782707615, + 0.000120435765907176, 0.000158193260135929, 0.000318437252371348, + 0.000133569503239669, 5.14508949733296e-05, 3.72708649769547e-05, + 0.0481141951754968, -0.0112467428647124, 0.0133577786074344, + 0.00971188595873735, 0.0144420339639255, 0.0153033177968391, + 0.006359918898083, 0.00184703219892869, 0.000682133802387619, + -0.000618858940479052, -0.00012511342698143, 0.00231285339396231, + -0.00300932642921946, 0.000227034785457444, 0.00126423894576831, + 0.00172845539987259, -1.90970302574768e-05, -0.000518679088367633, + -0.000314832607266587, -0.000362678746564177, -0.00132787136055019, + -0.000746870682613774, -0.000241398551814824, -0.000143617623861035, + -0.00996822090390736, -0.0382661384394529, 0.0513779162167389, + -0.0396501876325656, -0.00490503889374995, -0.00956222014702774, + -0.00419055937855679, -0.00120170608842117, -0.000442360718664101, + 0.00823791090945297, 0.00500218745429801, -0.0517063795773348, + 0.0587814382937658, -0.00240356824834935, -0.0116880128887736, + -0.015836689892777, -0.00705290752700762, -0.0039889034038224, + 0.00281650986526543, 0.00772245566351641, 0.0200045321896821, + 0.00964527245902078, 0.00407247631168687, 0.00331966549593053, + -0.00966284279156194, -0.0244550895551929, -0.0152784731227065, + -0.00892356302821995, 0.00598614795507797, 0.0158743389962298, + 0.00817417514516272, 0.00287736815670271, 0.00110289732817891, + -0.00103701249016703, -0.000122137810058872, 0.00491339128850968, + -0.00573539965315568, -0.000796427359226435, -0.00388683923076641, + -0.00364002687200746, 0.00340316885739129, 0.00523232146797231, + 0.000284396807821315, -0.0011396146450857, -0.0013542090929267, + -0.000300937391353895, -0.000115763147393071, -0.000113504718932038, + -0.0103409915589158, -0.0589537326887811, 0.000653338095905729, + 0.0678869795656213, -0.0576789285604959, 0.00122346111634506, + -0.00217093925795169, -0.000950153161210469, -0.000423266456563166, + 0.000873934414598948, 0.00266494641426755, -0.0160583032713915, + 0.0167861190077875, 0.00321515210369582, 0.0158650063077605, + 0.0144562648728826, -0.013440701985568, -0.0245813860385962, + -0.00906420988685205, 0.00147317779331179, 0.0113275107771079, + 0.00436237793605965, 0.00281967623170031, 0.00331841030626531, + 0.00926071280185207, 0.0652218789424438, 0.0488676855220674, + -0.0072693899726496, -0.0844631836304519, 0.0520383960295573, + 0.0176119917063159, 0.0050650149241255, 0.00173077764428115, + -0.0178422395520497, 0.0122414128180879, 0.0530935081682878, + -0.0700498524474214, -0.00205958513348335, -0.0151068167123392, + -0.0306537850616411, -0.0330147097107778, -0.0291440083012776, + 0.0131315762801279, 0.0479834543078199, 0.0494812459172924, + -0.00647839147888454, -0.00707071034488417, -0.00646049648120873, + -0.00466121288355426, -0.0485035049559369, -0.0749934388385525, + -0.0682272537597176, -0.0210539362448509, 0.103013289479923, + 0.0200363284031645, -0.00191733491201945, -0.00488933018302833, + 0.0021827419970009, 0.011596465584245, -0.0155626706843001, + -0.00907106241734132, -0.0122285794757302, -0.0645401411913822, + -0.0840936295641952, 0.0442913399580051, 0.142338108122544, + 0.0765593704205363, 0.0182446328667233, -0.0695935839925863, + -0.0356318919794637, -0.00586377697109934, -0.000387720862907859, + -0.0219182358925276, 0.0350060947556832, 0.035455153691358, + -0.0031346913093081, -0.00606431483213071, 0.0744278437298835, + -0.0182229735631128, -0.00495131827816417, -0.00206650282892026, + -0.0969804831618052, 0.180887878378089, -0.0859863312102999, + -0.0609843554208379, 0.00613665590152679, 0.0296030378774339, + 0.0222065834111922, -0.0578738162737623, -0.00993826601192342, + 0.0247694369149481, 0.0422289709919424, 0.00870315910426681, + -0.0486402858772571, -0.0339176010353395, -0.00725340819016587, + -0.0277893072125588, 0.00738941478298226, 0.0360521314155386, + 0.0453211474077115, 0.0414500649801317, -0.0160358299801778, + 0.024230734733359, 0.0112559983037238, 0.00198150289794027, + 0.0109534489965432, -0.0247890865548996, -0.0123156930059525, + 0.0511677755860601, 0.0152213730389165, 0.0828149195741336, + 0.097348221323021, -0.0623669711182891, -0.039401135913146, + 0.117141213376684, 0.0779973249031316, -0.167651800783608, + -0.0541136339904111, 0.013955651874827, 0.0203115237423255, + 0.0300361102737562, -0.0341507246067295, -0.0570717986255995, + -0.0329428638477796, -0.0291234190210299, 0.0135950582743237, + -0.0694590225085228, -0.00876695808804125, -0.00155150163487863, + -0.0415052621951564, 0.0855413818045413, -0.0567489326054377, + -0.0124458922312971, -0.00849044899817017, -0.020202207151624, + 0.0791647388775217, 0.184676364774685, -0.00395852520670578, + -0.11284909647847, -0.0836319344577794, -0.0813903370310093, + -0.0387960849097079, 0.00490532414058196, 0.0302521473022626, + 0.0308252615863213, -0.0365395275622032, -0.0797417067400042, + -0.074085098207374, -0.0482177700552885, 0.0419597883633913, + -0.00238151885267258, 0.00195645701970412, 0.00191752776718316, + 0.0220696134622902, -0.032189920392082, 0.00758470649527134, + 0.00885780502368493, -0.0328712034530519, -0.116584971692872, + 0.0126625346626522, 0.18030014524035, -0.174387401016797, + 0.0280216194648148, 0.206880690893945, 0.0111317590905542, + -0.0604125476723619, -0.0402701113502636, -0.0411940611934523, + -0.0292431192114974, 0.0287905486343225, 0.0603522262221798, + 0.05380622472953, 0.0381256769879428, -0.00877866079967804, + -0.0114198930646073, 0.00290846811747617, -0.00936224527565544, + -0.00280843716449172, -0.00498629441063645, 0.0179721340474412, + -0.00861873414462067, 0.00565208536719023, -0.0144866624993919, + -0.0744953444072861, 0.00894509365512418, 0.0188715647674098, + 0.0196999853322494, 0.0901680207441546, -0.0749065688345394, + -0.00838753112833702, 0.0531697564511473, 0.136959461408073, + 0.043435117577396, -0.000485715784516, -0.0344794393341381, + -0.0460327568324399, -0.0675385675778985, -0.146473249882646, + 0.278372094764221, 0.120489449499735, 0.0188465131812548, + 0.0715025240762291, 0.00799416409681597, -0.105021738754416, + -0.0426408431374772, 0.0331758188834319, 0.0290793232106494, + -0.152422969531859, -0.00411226278463431, 0.0169944032769387, + -0.0129986174021856, 0.0347047561592154, 0.0623646729345188, + -0.118206811803022, -0.140694522708572, -0.140683762744576, + 0.158094209672232, 0.0203620052526992, -0.0727348020063609, + -0.0884287943888251, -0.151955239271556, -0.178956415657029, + -0.099476919504814, -0.0320494342177646, -0.0236748823993347, + -0.154971928176839, -0.0330459295223386, 0.173731829954425, + 0.217169238800757, 0.054629549842133, 0.164557995022997, + -0.0388578143313742, -0.00960551120542888, 0.147879602189961, + -0.272183551848361, 0.176820407653075, 0.0079050431715667, + -0.183982203945459, -0.0775309023980952, -0.0135909620051159, + -0.033800534622957, -0.00767215662608992, 0.0139341286859032, + 0.0215587946038859, 0.0361091178670791, 0.0433219068631611, + -0.000962112014663084, 0.0162979158854552, -0.0476608330744487, + 0.0628596343632427, 0.0333630844392246, -0.0844837951002203, + -0.114740877395659, 0.150283648331406, 0.280085162961297, + -0.282164998837566, 0.124839802199115, -0.0933873943147368, + -0.0824336720662143, 0.102655758878417, -0.0583274276749742, + 0.142228337313126, 0.171933875689057, 0.135946640527651, + -0.0271990653138554, 0.0020746672622744, 0.0280363329077379, + 0.0361726682845661, 0.0480894942387795, 0.0514325292442759, + -0.140942452660974, -0.0230057637890896, 0.0922577554817711, + -0.262236828942001, 0.0740944233948668, 0.197601525405761, + 0.207334066529231, 0.0946452985476689, 0.118327385420593, + -0.186208569630427, 0.172171406366479, -0.168836309107086, + 0.296396954609535, -0.228737880107238, 0.0103931906647384, + 0.0340260435380178, -0.0826979747389254, -0.105218425287459, + 0.0115530411165066, 0.0021601328799856, -0.00794017743252516, + -0.0160157183232517, -0.0217791382952013, -0.0210064613984729, + 0.0604954298804515, -0.0134611171569919, 0.0107077476297973, + 0.0192096848992328, -0.0359539928007615, 0.0184131758362472, + 0.00718334337401242, -0.00513274287181537, -0.0395478786695696, + -0.0338833714451987, -0.0101066402795655, -0.0702469691868337, + 0.0899019452166869, -0.130857170784601, 0.194797566536871, + -0.293985247792722, -0.127956937593321, 0.538381198123075, + 0.0132062121841276, 0.0166577109173017, 0.0204570452515256, + 0.0210302553780223, 0.00948829280246407, -0.00259466527516782, + -0.169050776708552, 0.0176449742622338, -0.0277900221053683, + -0.177046985121443, 0.0823278124705666, 0.111508059634237, + 0.0974492057959729, -0.0803727412741088, -0.256237431105662, + -0.0589818545148105, -0.137232151521597, -0.0356995098286272, + -0.101362799946221, 0.0644887385614398, -0.0672851177363907, + 0.0652912510995767, 0.0426358861206711, 0.0600691466471638, + 0.0852565075962193, 0.0328913153615828, -0.0134924524347108, + -0.0339518938589891, -0.074055543117041, -0.0878817068993808, + -0.164392063467643, -0.118882970850557, 0.567291815602786, + 0.147055341317559, -0.0948604513437437, -0.0732028485321263, + -0.0481401820760952, 0.0538839024444461, 0.241400054042709, + 0.16755779144261, 0.159482918490435, 0.14059723990491, + 0.122190788139167, 0.0330484822016492, 0.155417089643274, + -0.123967330958311, -0.133730317847849, 0.0123153144117149, + -0.0572155235331402, -0.0322422402398889, -0.00516798160954242, + 0.0112436179619514, 0.0389807303731987, 0.0330850630219065, + 0.327209565123676, -0.530425233903229, 0.32825889338139, + -0.0476988900717266, 0.0370773036879646, 0.00647572364840762, + 0.0274282286286442, -0.0482426726846349, -0.211521604729665, + -0.264316078930412, -0.218782113040786, -0.251492880093616, + -0.193646739359928, -0.0968005854286071, -0.305314578727092, + -0.0974925243314355, 0.121045535316297, 0.072269403918501, + 0.0019236279382869, 0.0268726912598391, 0.0370657911406326, + 0.0297657267836094, 0.017596390730566, -0.021527152312842, + 0.147079124119788, -0.632808359857734, -0.380412144540749, + -0.277096815862218, 0.191496518567932, 0.110751871116004, + 0.104890944779502, 0.151215885925301, -0.0937289078155581, + 0.274319394407329, 0.198603116965817, 0.329834669046153, + 0.227801827008104, 0.33668362438987, 0.454974005598239, + 0.229550331629555, 0.607282526089242, 0.149507241400591, + 0.229720790556087, 0.0621158786424302, -0.0595549536705348, + -0.0938159474177122, -0.191483104083124, -0.252967102522184, + -0.219249991152887, -0.339524784291672, -0.353176242378271, + 0.0813353348970341, -0.0654587134463156, -0.0246701130782029, + -0.0207301123061629, -0.0315039164064682, 0.0212813111780791, + -0.0768046947818802, -0.0393295302908703, -0.116127290200662, + 0.0435247410072016, -0.245414122054282, 0.158908303150518, + -0.816734417627416, 0.881877093561075, -0.364638309241683, + -0.056786256722417, -0.00968527020423421, 0.0265910927732837, + 0.0380557354124225, 0.053493718904318, 0.0242576056241561, + 0.0557321652408447, 0.162137334893874, 0.217365341750675, + 0.0816311056865962, -0.0596536181056574, -0.0310250346933758, + -0.0258598033359973, 1.57157757262447, -0.551846529931971, + 0.178630089646898, -0.121940697227273, -0.025984796272873, + -0.0676047713589873, -0.0647127382787066, -0.0818438736871805, + -0.0939009139216642, -0.0902348993636832, -0.0508630584433755, + -0.0609219372551081, -0.013009064200119, 0.0192798284833754, + 0.0264362938415028, 0.0497024606324435, 0.0643121575768081, + 0.0663163083142627, 0.0640123302445087, 0.0750880869238639 + ]).reshape(24, 24, order='F') + +mpg_bs.gcv_ubre = 5.16162045425616 +mpg_bs.aic = 909.585145453506 +mpg_bs.rank = 24 +mpg_bs.gcv_ubre_dev = 5.16162045425363 +mpg_bs.method = 'GCV' +mpg_bs.cmX = np.array([ + 1, 0.901477832512315, 0.58128078817734, 0.374384236453202, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ]) +mpg_bs.assign = np.array([ + 0, 1, 2, 2 + ]) +mpg_bs.offset = np.array([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ]) +mpg_bs.df_residual = 185.099985812547 +mpg_bs.min_edf = 6 +mpg_bs.optimizer = 'magic' +mpg_bs.p_coeff = np.array([ + 29.6272774569595, -6.21365498504518, 1.43986598470837, 1.01128095138012 + ]) +mpg_bs.se = np.array([ + 1.10736522428059, 0.730964352033962, 0.802742257532199, + 0.82715120287436, 3.45934930908735, 1.72348162068993, 1.34626504738022, + 1.128648591521, 1.23820355203725, 1.25079638223793, 1.32555503230954, + 1.46276521490991, 2.08682079164069, 2.44820576733618, 1.57664310132803, + 0.706341710395395, 0.340307783146933, 0.439430720698385, + 0.475893350342798, 0.681557125789893, 0.862789472579143, + 1.29715423972101, 2.01034871279469, 1.89702020234941 + ]) +mpg_bs.p_t = np.array([ + 26.7547479434413, -8.50062655963349, 1.7936840513851, 1.22260712172806 + ]) +mpg_bs.p_pv = np.array([ + 1.61958620027156e-65, 6.17307801841172e-15, 0.0744959485685591, + 0.223032563883354 + ]) +mpg_bs.residual_df = 185.099985812547 +mpg_bs.m = 2 +mpg_bs.chi_sq = np.array([ + 132.00007563458, 69.3539925351537 + ]) +mpg_bs.s_pv = np.array([ + 4.72304400617769e-18, 6.21718617954453e-12 + ]) +mpg_bs.scale = 4.70648213227865 +mpg_bs.r_sq = 0.890988350463498 +mpg_bs.n = 203 +mpg_bs.dev_expl = 0.900108639690056 +mpg_bs.edf = np.array([ + 10.2535689759835, 3.64644521146987 + ]) +mpg_bs.dispersion = 4.70648213227865 +mpg_bs.pTerms_pv = np.array([ + 6.1730780184117e-15, 0.175815884801339 + ]) +mpg_bs.pTerms_chi_sq = np.array([ + 72.2606519063463, 3.50949117352962 + ]) +mpg_bs.pTerms_df = np.array([ + 1, 2 + ]) +mpg_bs.cov_unscaled = np.array([ + 0.260546562269068, -0.127261644910421, -0.147454452733496, + -0.147400601308703, 0.0858934363413853, 0.0324027409627562, + 0.001951459420489, -0.0444711495173745, -0.051050382403525, + -0.0558058242079355, -0.0776843093730959, -0.0696248432860819, + -0.143873948165499, -0.102565827833482, -0.0504628003799288, + -0.0838215012227384, -0.0264331690405809, 0.0189063712819891, + 0.0354335965549041, 0.0710226222907629, 0.086637653107266, + 0.101618191765279, 0.081840238740399, 0.0953496710685112, + -0.127261644910421, 0.11352616857503, 0.025864159966478, + 0.026405976204483, -0.0647092342623571, -0.0194747421679251, + 0.0013822670878288, 0.0319763850603683, 0.034430423334006, + 0.0345203757451707, 0.0608821466756475, 0.0407664667130339, + 0.130282891645105, 0.0851176416918229, 0.0400522748720902, + 0.0629753993433594, 0.0181263443541013, -0.0160778765682171, + -0.0267074236912963, -0.0523474645302372, -0.0639429975967239, + -0.0786117565174105, -0.063904170832196, -0.077928384358563, + -0.147454452733496, 0.025864159966478, 0.136916515120372, + 0.118999524300398, -0.0327647151474401, -0.0198952632533516, + -0.00672761172219511, 0.015354304214709, 0.0188841458743991, + 0.0289212388819706, 0.0254660969027705, 0.0406957842836357, + 0.0400286710723789, 0.0342842902886422, 0.0236887528118937, + 0.0259618144092581, 0.00960697675201729, -0.00467922337824681, + -0.0118300130244149, -0.022700519316666, -0.0264358122220455, + -0.0335761909581523, -0.0153555815191469, -0.022334457938622, + -0.147400601308703, 0.026405976204483, 0.118999524300398, + 0.145369533589466, -0.0227413331564733, -0.0087662833528124, + 0.00190469794456696, 0.0179494340611051, 0.0241333019028084, + 0.0210348337470021, 0.0213616121916855, 0.0246247004357953, + 0.00843762000002028, 0.0157735311385979, 0.00156722820696845, + 0.0319443758959039, 0.0120419610749916, -0.00452096841614408, + -0.011968684582334, -0.028412434692433, -0.0364006470838577, + -0.0300072493763622, -0.0408835076677611, -0.0323634585859656, + 0.0858934363413853, -0.0647092342623571, -0.0327647151474401, + -0.0227413331564733, 2.54268417598119, -0.76859110341217, + 0.285406451366382, -0.104994244590691, 0.0177218270496262, + -0.0481109774851848, -0.0409982342644028, -0.0444588957252262, + -0.0806376771582389, -0.0827972314624984, -0.0490348449178703, + -0.0673431972324915, -0.0168710490878408, 0.0189552170264795, + 0.0286066089048379, 0.0551838149903664, 0.0723392929084603, + 0.0763983959054345, 0.0512365416163641, 0.0602549766706101, + 0.0324027409627562, -0.0194747421679251, -0.0198952632533516, + -0.0087662833528124, -0.76859110341217, 0.631127201457765, + -0.111958277080447, 0.187556063652864, 0.066179499479836, + 0.0804163944044619, 0.0298368025897733, 0.0970443447402095, + 0.0130451200626575, -0.0261265914515338, -0.0195915902087622, + -0.0273469708991807, -0.0264787364275103, -0.0125691792814477, + 0.00392141065820518, 0.0241964117675904, 0.0349487881953121, + 0.0398279043446865, 0.0271145839091361, 0.0312444446552389, + 0.001951459420489, 0.0013822670878288, -0.00672761172219511, + 0.00190469794456696, 0.285406451366382, -0.111958277080447, + 0.385092204083263, 0.0684932186535236, 0.21935562612521, + 0.0971768028496673, 0.127578101317701, 0.194137807287134, + 0.0922773004373818, 0.0187094646414516, 0.0180269695686678, + 0.0270781204690177, -0.00896910696738203, -0.028771799405471, + -0.0250965967014997, -0.0297690048221073, -0.0221247951627148, + -0.00375225549366836, -0.00499252275484576, -0.000842958258748316, + -0.0444711495173745, 0.0319763850603683, 0.015354304214709, + 0.0179494340611051, -0.104994244590691, 0.187556063652864, + 0.0684932186535236, 0.270658127947807, 0.0927495887348496, + 0.148746573370328, 0.0894230227281297, 0.178358167405521, + 0.0971648415678839, 0.0482289443030786, 0.0209345589972529, + 0.031814817117821, 0.00160852784573758, -0.0193956772787635, + -0.0241634602639173, -0.033120623649721, -0.0298135881052149, + -0.0151579476090994, -0.015226518459989, -0.0170673905077609, + -0.051050382403525, 0.034430423334006, 0.0188841458743991, + 0.0241333019028084, 0.0177218270496262, 0.066179499479836, + 0.21935562612521, 0.0927495887348496, 0.32575243954775, + 0.0540054156093696, 0.196470598735639, 0.21878824740985, + 0.158281660903183, 0.0495887693620706, 0.0461974644721407, + 0.0714027358930935, 0.00795472458798096, -0.0375872201518705, + -0.0481859108317218, -0.0711759115486841, -0.0679438229402484, + -0.0465375731482666, -0.0374137141732135, -0.03621185498621, + -0.0558058242079355, 0.0345203757451707, 0.0289212388819706, + 0.0210348337470021, -0.0481109774851848, 0.0804163944044619, + 0.0971768028496673, 0.148746573370328, 0.0540054156093696, + 0.332412095881484, -0.0207364863609935, 0.207339580194955, + 0.0359008074045836, 0.111069102387542, 0.0147778467074979, + 0.0495142478924261, 0.00840110351440287, -0.0203794249747989, + -0.0278449665463922, -0.0503865940754587, -0.0640058749264548, + -0.0113041068243097, -0.00831843730650562, -0.0139208013344843, + -0.0776843093730959, 0.0608821466756475, 0.0254660969027705, + 0.0213616121916855, -0.0409982342644028, 0.0298368025897733, + 0.127578101317701, 0.0894230227281297, 0.196470598735639, + -0.0207364863609935, 0.373335347781393, 0.1104631596741, + 0.284840959571074, 0.0105060767846668, 0.102975779715763, + 0.0867862639453907, 0.0243900586439621, -0.0203947322272078, + -0.0329187994318598, -0.0720367757012015, -0.0975457943816516, + -0.0963534317742545, -0.111064756608917, -0.0921425296807421, + -0.0696248432860819, 0.0407664667130339, 0.0406957842836357, + 0.0246247004357953, -0.0444588957252262, 0.0970443447402095, + 0.194137807287134, 0.178358167405521, 0.21878824740985, + 0.207339580194955, 0.1104631596741, 0.454624497408751, + -0.0714258011738595, 0.310716907708582, 0.0601826022359559, + 0.089018060168629, 0.0213745513074023, -0.0241876884076926, + -0.0348407606643524, -0.0741087942465015, -0.107535703221613, + -0.11590339783913, -0.0196286635230926, -0.0172844920058013, + -0.143873948165499, 0.130282891645105, 0.0400286710723789, + 0.00843762000002028, -0.0806376771582389, 0.0130451200626575, + 0.0922773004373818, 0.0971648415678839, 0.158281660903183, + 0.0359008074045836, 0.284840959571074, -0.0714258011738595, + 0.925281535981413, -0.471672910363488, 0.208389419328838, + 0.0981854960490571, 0.0217225069458946, -0.0369925296936159, + -0.0566738032825664, -0.0893089330064972, -0.073868746305302, + -0.12235614875335, -0.105907217560377, -0.198551268786848, + -0.102565827833482, 0.0851176416918229, 0.0342842902886422, + 0.0157735311385979, -0.0827972314624984, -0.0261265914515338, + 0.0187094646414516, 0.0482289443030786, 0.0495887693620706, + 0.111069102387542, 0.0105060767846668, 0.310716907708582, + -0.471672910363488, 1.27350137762369, -0.222798870596428, + 0.0846537549088317, 0.0332438408000797, -0.00412934016917062, + -0.016051679868851, -0.059595718301114, -0.123524453263925, + -0.10297163225623, -0.0757024271527446, -0.0684075332800308, + -0.0504628003799288, 0.0400522748720902, 0.0236887528118937, + 0.00156722820696845, -0.0490348449178703, -0.0195915902087622, + 0.0180269695686678, 0.0209345589972529, 0.0461974644721407, + 0.0147778467074979, 0.102975779715763, 0.0601826022359559, + 0.208389419328838, -0.222798870596428, 0.52816592076634, + 0.0520599245003621, 0.0206050701500866, -0.00253853872657549, + -0.0102983340619392, -0.0318200608092311, -0.0424757746658764, + -0.117320466802546, -0.144246293596641, -0.121800944620384, + -0.0838215012227384, 0.0629753993433594, 0.0259618144092581, + 0.0319443758959039, -0.0673431972324915, -0.0273469708991807, + 0.0270781204690177, 0.031814817117821, 0.0714027358930935, + 0.0495142478924261, 0.0867862639453907, 0.089018060168629, + 0.0981854960490571, 0.0846537549088317, 0.0520599245003621, + 0.106006694134147, 0.0215080027514771, -0.037843257632743, + -0.0519430665866201, -0.0920716816523268, -0.109188273097782, + -0.0930671671318803, -0.0721417252895369, -0.0729173883583565, + -0.0264331690405809, 0.0181263443541013, 0.00960697675201729, + 0.0120419610749916, -0.0168710490878408, -0.0264787364275103, + -0.00896910696738203, 0.00160852784573758, 0.00795472458798096, + 0.00840110351440287, 0.0243900586439621, 0.0213745513074023, + 0.0217225069458946, 0.0332438408000797, 0.0206050701500866, + 0.0215080027514771, 0.0246063586380409, 0.00847331422875254, + -0.00270662509257549, -0.0166664535611419, -0.0268399881068754, + -0.0302919303225419, -0.0272696852211407, -0.0275284441796622, + 0.0189063712819891, -0.0160778765682171, -0.00467922337824681, + -0.00452096841614408, 0.0189552170264795, -0.0125691792814477, + -0.028771799405471, -0.0193956772787635, -0.0375872201518705, + -0.0203794249747989, -0.0203947322272078, -0.0241876884076926, + -0.0369925296936159, -0.00412934016917062, -0.00253853872657549, + -0.037843257632743, 0.00847331422875254, 0.0410283844422061, + 0.0340956221608027, 0.0371845294194256, 0.0290913575478051, + 0.0143241042112522, 0.00594206245237508, 0.00694057449961806, + 0.0354335965549041, -0.0267074236912963, -0.0118300130244149, + -0.011968684582334, 0.0286066089048379, 0.00392141065820518, + -0.0250965967014997, -0.0241634602639173, -0.0481859108317218, + -0.0278449665463922, -0.0329187994318598, -0.0348407606643524, + -0.0566738032825664, -0.016051679868851, -0.0102983340619392, + -0.0519430665866201, -0.00270662509257549, 0.0340956221608027, + 0.0481196941867164, 0.0512995083369737, 0.0427880770540714, + 0.025938901829721, 0.0172406430026829, 0.0190854917034619, + 0.0710226222907629, -0.0523474645302372, -0.022700519316666, + -0.028412434692433, 0.0551838149903664, 0.0241964117675904, + -0.0297690048221073, -0.033120623649721, -0.0711759115486841, + -0.0503865940754587, -0.0720367757012015, -0.0741087942465015, + -0.0893089330064972, -0.059595718301114, -0.0318200608092311, + -0.0920716816523268, -0.0166664535611419, 0.0371845294194256, + 0.0512995083369737, 0.0986979452294408, 0.0917669226619505, + 0.0635525514325997, 0.0510213739757127, 0.0513114624886664, + 0.086637653107266, -0.0639429975967239, -0.0264358122220455, + -0.0364006470838577, 0.0723392929084603, 0.0349487881953121, + -0.0221247951627148, -0.0298135881052149, -0.0679438229402484, + -0.0640058749264548, -0.0975457943816516, -0.107535703221613, + -0.073868746305302, -0.123524453263925, -0.0424757746658764, + -0.109188273097782, -0.0268399881068754, 0.0290913575478051, + 0.0427880770540714, 0.0917669226619505, 0.158166046969139, + 0.0526478012750861, 0.0878449503315404, 0.072216656566408, + 0.101618191765279, -0.0786117565174105, -0.0335761909581523, + -0.0300072493763622, 0.0763983959054345, 0.0398279043446865, + -0.00375225549366836, -0.0151579476090994, -0.0465375731482666, + -0.0113041068243097, -0.0963534317742545, -0.11590339783913, + -0.12235614875335, -0.10297163225623, -0.117320466802546, + -0.0930671671318803, -0.0302919303225419, 0.0143241042112522, + 0.025938901829721, 0.0635525514325997, 0.0526478012750861, + 0.357508872728168, -0.122181710723627, 0.0529625804413154, + 0.081840238740399, -0.063904170832196, -0.0153555815191469, + -0.0408835076677611, 0.0512365416163641, 0.0271145839091361, + -0.00499252275484576, -0.015226518459989, -0.0374137141732135, + -0.00831843730650562, -0.111064756608917, -0.0196286635230926, + -0.105907217560377, -0.0757024271527446, -0.144246293596641, + -0.0721417252895369, -0.0272696852211407, 0.00594206245237508, + 0.0172406430026829, 0.0510213739757127, 0.0878449503315404, + -0.122181710723627, 0.858709718521459, 0.158673552049344, + 0.0953496710685112, -0.077928384358563, -0.022334457938622, + -0.0323634585859656, 0.0602549766706101, 0.0312444446552389, + -0.000842958258748316, -0.0170673905077609, -0.03621185498621, + -0.0139208013344843, -0.0921425296807421, -0.0172844920058013, + -0.198551268786848, -0.0684075332800308, -0.121800944620384, + -0.0729173883583565, -0.0275284441796622, 0.00694057449961806, + 0.0190854917034619, 0.0513114624886664, 0.072216656566408, + 0.0529625804413154, 0.158673552049344, 0.764623246615722 + ]).reshape(24, 24, order='F') + +mpg_bs.cov_scaled = mpg_bs.cov_unscaled * mpg_bs.scale + +mpg_bs.p_table = np.array([ + 29.6272774569595, -6.21365498504518, 1.43986598470837, 1.01128095138012, + 1.10736522428059, 0.730964352033962, 0.802742257532199, + 0.82715120287436, 26.7547479434413, -8.50062655963349, 1.7936840513851, + 1.22260712172806, 1.61958620027156e-65, 6.17307801841172e-15, + 0.0744959485685591, 0.223032563883354 + ]).reshape(4, 4, order='F') + +mpg_bs.pTerms_table = np.array([ + 1, 2, 72.2606519063463, 1.75474558676481, 6.1730780184117e-15, + 0.175815884801339 + ]).reshape(2, 3, order='F') + +mpg_bs.s_table = np.array([ + 10.2535689759835, 3.64644521146987, 10.8058511361601, 4.39467905741677, + 12.2156111509682, 15.7813555049275, 4.72304400617769e-18, + 6.21718617954453e-12 + ]).reshape(2, 4, order='F') + +mpg_bs.method = 'GCV' +mpg_bs.sp_criterion = 5.16162045425616 +mpg_bs.rank = 24 +mpg_bs.np = 24 +mpg_bs.params = np.array([ + 29.6272774569595, -6.21365498504518, 1.43986598470837, 1.01128095138012, + 20.1053719083286, -1.26007449980292, -5.26871981200625, + -4.544036357677, -7.60063071956733, -5.01036711884368, + -6.96226144900638, -9.06722069409647, -8.81829781369916, + -7.9145836553663, -6.28068941724657, 5.09307848346347, + 1.90848821039499, -0.646225516186639, -1.50240395085899, + -4.19244286007642, -5.72993924243941, -6.83323296859843, + -5.77088950575513, -4.29112523442438 + ]) diff --git a/statsmodels/gam/tests/results/results_mpg_bs_poisson.py b/statsmodels/gam/tests/results/results_mpg_bs_poisson.py new file mode 100644 index 0000000..b38dfa5 --- /dev/null +++ b/statsmodels/gam/tests/results/results_mpg_bs_poisson.py @@ -0,0 +1,1628 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + + +mpg_bs_poisson = Bunch() + +mpg_bs_poisson.smooth0 = Bunch() +mpg_bs_poisson.smooth0.term = 'weight' +mpg_bs_poisson.smooth0.bs_dim = 12 +mpg_bs_poisson.smooth0.dim = 1 +mpg_bs_poisson.smooth0.p_order = np.array([ + 3, 2 + ]) +mpg_bs_poisson.smooth0.by = 'NA' +mpg_bs_poisson.smooth0.label = 's(weight)' +mpg_bs_poisson.smooth0.sp = -1 +mpg_bs_poisson.smooth0.m = np.array([ + 3, 2 + ]) +mpg_bs_poisson.smooth0.knots = np.array([ + 1488, 1488, 1488, 1488, 1953.22222222, 2118.77777778, 2275, + 2383.88888889, 2515.55555556, 2757.33333333, 3016.44444444, + 3208.11111111, 4066, 4066, 4066, 4066 + ]) +mpg_bs_poisson.smooth0.rank = 10 +mpg_bs_poisson.smooth0.null_space_dim = 1 +mpg_bs_poisson.smooth0.df = 11 +mpg_bs_poisson.smooth0.S_scale = 2.44395544177397e-06 +mpg_bs_poisson.smooth0.vn = 'weight' +mpg_bs_poisson.smooth0.first_para = 5 +mpg_bs_poisson.smooth0.last_para = 15 +mpg_bs_poisson.smooth0.S = np.array([ + 0.130569121544375, -0.0191732921244136, 0.0202548028417763, + 0.0393112950002946, 0.032061392663319, 0.0241651485426007, + 0.0238771778381105, 0.0389406835250852, 0.0171569521441248, + 0.00680570834700402, 0.00541920498010491, -0.0191732921244136, + 0.0631473273216884, -0.0592997810399249, 0.0178641542128365, + 0.00461438941034586, 0.00793912465273829, 0.00408821971418319, + -0.000681869049168392, 0.00213834646721613, 0.000935846814259467, + 0.000163463753965317, 0.0202548028417763, -0.0592997810399249, + 0.201022514824508, -0.186241322892132, 0.00284878067469136, + 0.0287314367063779, 0.00263260805442764, -0.00708846456492193, + 0.00065385484055723, 0.000395067932117418, -0.000586348849229599, + 0.0393112950002947, 0.0178641542128365, -0.186241322892132, + 0.479322071007576, -0.286380917395105, 0.0563704638942206, + 0.0348887744557148, 0.0255203052273876, 0.0138979985789615, + 0.00560832050247454, 0.00383270204450356, 0.032061392663319, + 0.00461438941034587, 0.00284878067469137, -0.286380917395105, + 0.414581586658592, -0.181289913269406, -0.00412646444222532, + -0.00354719180127285, -0.00206283566879658, -0.000685858743449883, + -0.00142523589453221, 0.0241651485426007, 0.00793912465273829, + 0.0287314367063779, 0.0563704638942206, -0.181289913269406, + 0.213321319885371, -0.0483506678191679, 0.0110304252072989, + 0.0122299348640366, 0.00357726593043956, 0.00234383478372281, + 0.0238771778381105, 0.00408821971418319, 0.00263260805442764, + 0.0348887744557148, -0.00412646444222533, -0.0483506678191679, + 0.0999220996092033, -0.0356092452156359, 0.00921547832469341, + 0.00389860712399989, 0.00147745030481206, 0.0389406835250852, + -0.000681869049168392, -0.00708846456492192, 0.0255203052273876, + -0.00354719180127286, 0.0110304252072989, -0.0356092452156359, + 0.0574427000604467, -0.0102653399490586, -0.000311188772793241, + 0.00285258581655637, 0.0171569521441248, 0.00213834646721613, + 0.000653854840557233, 0.0138979985789615, -0.00206283566879658, + 0.0122299348640366, 0.00921547832469341, -0.0102653399490586, + 0.0189789273643945, -0.0062453384832703, 0.00255839876648785, + 0.00680570834700402, 0.000935846814259467, 0.000395067932117419, + 0.00560832050247454, -0.000685858743449884, 0.00357726593043956, + 0.00389860712399989, -0.000311188772793241, -0.0062453384832703, + 0.0211496391608495, -0.0111654555301857, 0.00541920498010491, + 0.000163463753965317, -0.000586348849229599, 0.00383270204450356, + -0.00142523589453221, 0.00234383478372281, 0.00147745030481206, + 0.00285258581655637, 0.00255839876648785, -0.0111654555301857, + 0.00794139033444708 + ]).reshape(11, 11, order='F') + +mpg_bs_poisson.coefficients = np.array([ + 3.38155196812657, -0.2398057983025, 0.0385574655971876, + 0.0308789097162079, 0.322087207070371, 0.114222640046661, + -0.0703319473834318, -0.0932993942273026, -0.164529819124519, + -0.150860338924587, -0.19827414261489, -0.318132823476157, + -0.277920321049033, -0.291752287584618, -0.335850782440607, + 0.147266917321495, 0.0655746640077953, 0.00329634588440575, + -0.0178203244735351, -0.0949069908870388, -0.162736107333124, + -0.267760412623755, -0.31426029441775, -0.36537967845964 + ]) +mpg_bs_poisson.residuals = np.array([ + -0.0597164611104715, -0.0597164611104715, 0.0070681780740447, + -0.0244130279937029, -0.109459035981563, -0.167042459441988, + -0.105640645333752, -0.0887544418878843, -0.0954712805695528, + -0.0784623437350325, -0.0430169241934606, -0.0430169241934606, + 0.0030916078609633, 0.0137773951290736, 0.0148539285398903, + -0.0370396919392229, -0.0112736908607727, -0.052100214301857, + 0.05696516521011, 0.132586599766586, 0.152452919091744, + 0.0958117450422904, -0.0818874568564589, -0.0996285128088896, + -0.039947957328768, -0.0297876572186078, -0.0297876572186078, + -0.0757627215899457, -0.0131089324697808, -0.0233738731200743, + 0.286760172557162, -0.0814957361302606, 0.0714671532989226, + -0.0558415218265038, -0.0484787948859533, -0.0236434176492324, + -0.0172259149323173, 0.00318143181414277, 0.0231117802042631, + 0.0285924230117791, 0.0524599141234474, 0.0116354361716793, + -0.00558296033674166, -0.0940825558878515, 0.132586599766586, + 0.152452919091744, 0.0461585732431811, 0.036440559843717, + 0.036440559843717, 0.00758219423801565, -0.105282911203192, + -0.0708600665943635, -0.0685585970304921, -0.0501105407364437, + -0.0478013558335348, -0.295992218769999, -0.295992218769999, + -0.294876506179699, -0.243930144705301, 0.010594364536701, + 0.0184495378782166, 0.010594364536701, 0.0184495378782166, + 0.0421491667369525, 0.0230515193544041, -0.102317831424696, + -0.00921877268202032, -0.04273337969419, -0.00119636037327275, + -0.0461713804461907, 0.00242207736643074, -0.00206774027200307, + -0.0119510982296829, -0.0463162166023352, -0.0776191103317818, + 0.0686101070886802, 0.118868895618542, -0.0505723217649421, + -0.0228687782317891, -0.0931020215865397, -0.0139373055232768, + -0.0329425423946335, -0.019547742575587, -0.00462341430485536, + -0.0037863985625175, -0.0209367502247506, -0.00850079663664394, + -0.00363892191661508, -0.00363892191661508, -0.0725184022338961, + 0.0701390830766382, -0.0591199977863917, -0.0498592974299408, + -0.0100344019333893, -0.0438341236186641, -0.00819025184245747, + -0.0345607099570335, -0.00404629308005688, -0.017423468562916, + 0.0751572654869439, 0.0669394971058765, -0.0679255314192151, + -0.0349740550587878, 0.0355822453431487, 0.0642764024494471, + 0.0402581086152893, 0.0766500282298974, -0.108739714671304, + 0.0579475740333115, -0.0762240417848723, -0.0158254364629684, + -0.106391902749726, 0.0681088212932508, -0.073453881324304, + -0.00607566275315818, -0.100457295597509, 0.0681088212932508, + -0.0228550021478378, 0.118868895618542, -0.0996285128088896, + -0.039947957328768, -0.0297876572186078, 0.0607856968972396, + -0.0131089324697808, -0.0146135261048062, -0.0264261656715257, + -0.0145337592605999, -0.0145337592605999, -0.0064905487190714, + 0.226809817977968, -0.0459953733057028, -0.0386603873101858, + -0.0363408944476897, -0.0267731783454677, 0.00999638170999839, + 0.0169931451495056, 0.00192444906825173, -0.120308776123272, + -0.0400164322133238, 0.130247697154032, 0.00746981127430812, + 0.0306709674011021, -0.0372819368771609, 0.0976557161110208, + 0.0465873287478877, 0.0269883944212412, -0.0674146853454123, + 0.0873341779571093, 0.0693951026504345, -0.0280641297469413, + -0.0392924504624044, 0.0735437039091389, -0.0247046596041458, + 0.171463552666685, -0.013091147087648, -0.000813946803385424, + -0.0956269920449824, 0.0107698324203134, 0.25732769645148, + -0.0621561621420588, -0.0549179845713752, -0.00160856625504557, + 0.0126062678583092, 0.0705449231002744, 0.0842095493097967, + 0.0883081440038147, 0.0872170109597095, 0.0912812221820642, + 0.123175492931149, 0.131142517763956, 0.184711504210098, + 0.136459914352958, -0.0929831907336212, 0.0885449049874016, + 0.0885449049874016, 0.102638885670704, 0.104987186006888, + 0.0567660298014965, 0.121868643941937, 0.0694291967778775, + -0.0353205301526058, -0.0107460163888975, -0.0342456641975604, + -0.00957686458378415, 0.0143852426645283, 0.0450346063721021, + 0.0367753899157743, -0.0896986969406739, -0.101104390140708, + -0.136305098940538, 0.00460226286555798, 0.0351388253204785, + 0.116934978569832, 0.13995662419881, 0.170013018072364, + 0.191118649321067, -0.0478214884195327, -0.0295329898984451, + 0.124455798890416, 0.0603367500448151, -0.0610962381564639, + 0.0212222309861203, -0.0538512733755478 + ]) +mpg_bs_poisson.fitted_values = np.array([ + 22.3336888624052, 22.3336888624052, 18.8666471780851, 24.6005745142783, + 20.2124334840001, 22.8102863289666, 21.2442570213741, 20.8505817458946, + 18.7943175653995, 17.3622856225417, 24.0338628565774, 24.0338628565774, + 20.9352763351109, 20.7146066788422, 19.7072696252699, 16.6154304243557, + 16.1824357783393, 15.8244576339389, 44.4669337713292, 33.5515182749217, + 32.9731474236258, 33.764923735666, 33.764923735666, 26.6556641802072, + 32.2899161942785, 31.9517683223134, 31.9517683223134, 25.9673576911837, + 24.3187934206985, 19.4547324478203, 38.080134157885, 33.7505237802536, + 35.4653895670086, 31.7743267613674, 31.5284618343364, 30.7264789753035, + 30.5258354446067, 26.9143737550779, 26.3900783105141, 26.2494642153229, + 25.6541837248854, 23.723961361835, 25.1403576194408, 26.4924802541156, + 33.5515182749217, 32.9731474236258, 22.9410728104038, 14.4726099895799, + 14.4726099895799, 12.9021732165794, 33.5301520174866, 33.3641886280506, + 33.2817500931026, 32.6353763563543, 32.5562320319588, 24.1474603736604, + 24.1474603736604, 24.1092519948462, 21.1620657641, 25.7274341836643, + 25.5290017158504, 25.7274341836643, 25.5290017158504, 34.5439992172317, + 25.4141648862486, 21.1656203778165, 31.2884410253879, 22.9821029307089, + 22.0263514540474, 23.0649401255032, 21.9468430481884, 16.0331523948941, + 16.1935304733726, 14.6799182745066, 15.1781115120846, 17.7801050860014, + 33.0691112648595, 32.6512494955146, 31.725523972003, 26.4638366952653, + 23.3250888902206, 25.8516180226821, 19.3788120289629, 19.0882529015196, + 19.0722150074884, 25.5346117891147, 25.2143419936145, 23.0840008767134, + 23.0840008767134, 33.4238437448952, 42.0506088522863, 32.9478785042368, + 32.6267466662015, 31.3142194643355, 32.4211528205977, 31.2559944662652, + 32.1097352466569, 31.1259446946281, 31.5497052984366, 25.1126052594469, + 25.3060272613759, 18.2388860257967, 17.6161066851271, 18.3471666161138, + 17.8525051915754, 16.3420980420225, 17.6473315393281, 21.3181270530784, + 26.4663398142244, 20.5677576159384, 25.401997700644, 21.2621170941322, + 26.2145573950957, 20.5062647363485, 25.1528200519264, 21.1218432510333, + 26.2145573950957, 18.4210122751131, 33.0691112648595, 26.6556641802072, + 32.2899161942785, 31.9517683223134, 29.2236217839983, 24.3187934206985, + 19.2817747181913, 19.5157258032775, 17.2507177792766, 17.2507177792766, + 17.1110601696662, 13.8570785388883, 22.01247186061, 21.8445175074418, + 21.7919385382283, 21.5777037097056, 18.8119485812727, 18.6825251385611, + 30.9404566669959, 29.5558251512617, 27.0837969236757, 28.3123779686312, + 27.7923960466705, 25.2262854221658, 24.92941694908, 21.8647793180832, + 26.7536202960708, 24.343020949218, 24.662622967121, 21.1526506443608, + 32.7287827606976, 31.8951084621752, 32.2678842431506, 28.8763278915599, + 27.6839218662126, 23.048092224925, 30.3979439554833, 30.0244382955741, + 37.5951069978098, 37.5951069978098, 30.2228290263917, 29.8557167725841, + 29.6270583323936, 29.0467235793694, 28.6389694795548, 24.2866968391243, + 23.9806041337226, 22.052577785282, 22.0747097939672, 21.9924979117765, + 21.3679875950349, 21.2174855273261, 20.2580965194576, 25.5178380106008, + 33.0754619909028, 24.8037539620954, 24.8037539620954, 24.4867112441592, + 18.0997574028658, 17.9793818727964, 17.8273990524644, 17.7664870729599, + 38.3547086431239, 27.2932941866366, 38.3120205919209, 27.2610756297141, + 26.6171064644809, 35.4055260700386, 25.0777557539364, 26.3648968966003, + 26.6994295408305, 21.998508937234, 32.8488210905178, 24.1513499334353, + 20.5920670775752, 20.1762062799231, 20.5125922782815, 20.1491262131442, + 17.8537950533904, 17.5173394077775, 20.4543389101606, 17.9188356898853, + 19.171293940347, 25.4596886075362, 20.0814094711999 + ]) +mpg_bs_poisson.linear_predictors = np.array([ + 3.10609624980832, 3.10609624980832, 2.93739566357681, 3.20276979690456, + 3.00629793406294, 3.12721158899991, 3.05608660102651, 3.03738184933733, + 2.9335545669874, 2.85430036085041, 3.17946378824737, 3.17946378824737, + 3.04143559905492, 3.03083908808588, 2.98098758418526, 2.81033180724024, + 2.78392644284256, 2.76155669470604, 3.79474585164685, 3.51308211648978, + 3.4956935157856, 3.51942250434414, 3.51942250434414, 3.28300166762353, + 3.4747549893589, 3.46422752584326, 3.46422752584326, 3.25684027583847, + 3.19124944323147, 2.96809035398114, 3.63969273297066, 3.51899593661304, + 3.56855727914211, 3.45865862916789, 3.45089068817213, 3.42512479018631, + 3.41857338881492, 3.2926604842363, 3.27298811794221, 3.26764557798449, + 3.24470666649875, 3.1664855653221, 3.2244744281779, 3.27686092872792, + 3.51308211648978, 3.4956935157856, 3.13292887653641, 2.67225789684402, + 2.67225789684402, 2.55739576358026, 3.51244509424318, 3.50748312800355, + 3.50500920150253, 3.48539686431283, 3.48296881060363, 3.18417921405787, + 3.18417921405787, 3.18259566702687, 3.05221022812765, 3.24755790051531, + 3.23981512809367, 3.24755790051531, 3.23981512809367, 3.54223385111242, + 3.23530669126982, 3.05237818503949, 3.44324873302594, 3.13471577957874, + 3.09223952994195, 3.13831372110367, 3.08862330449352, 2.77465860323819, + 2.78461180897998, 2.68648045603917, 2.71985435790984, 2.87808014041708, + 3.49859965227091, 3.48588312437807, 3.45712152952405, 3.27577914799641, + 3.14952955766808, 3.25237319174925, 2.96418030576864, 2.94907311450918, + 2.9482325642825, 3.24003485689474, 3.22741295935692, 3.13913977482799, + 3.13913977482799, 3.50926952986597, 3.73887386555994, 3.4949268735718, + 3.48513240187112, 3.44407229037009, 3.47881107460801, 3.44221118070723, + 3.46915926286833, 3.43804170595891, 3.45156424816504, 3.22336992164832, + 3.23104259903575, 2.90355590963404, 2.86881363611135, 2.90947515473725, + 2.88214384524492, 2.79374448033398, 2.87058458437584, 3.05955774614591, + 3.27587372992023, 3.02372468537151, 3.23482782056342, 3.0569269490534, + 3.26631488223122, 3.02073043635419, 3.22497001956098, 3.05030773017343, + 3.26631488223122, 2.91349198453504, 3.49859965227091, 3.28300166762353, + 3.4747549893589, 3.46422752584326, 3.37497734744367, 3.19124944323147, + 2.9591603346448, 2.97122059201258, 2.84785375300452, 2.84785375300452, + 2.83972504797555, 2.62879618791377, 3.09160919548466, 3.08394997506595, + 3.0815401095808, 3.07166054590621, 2.93449223078504, 2.92758860238871, + 3.43206460479669, 3.38628085306311, 3.29893564957711, 3.34329909307524, + 3.32476245978116, 3.22788652320362, 3.21604850974011, 3.08487709188384, + 3.2866698023555, 3.1922451944518, 3.20528885733209, 3.05176522361415, + 3.48825489749758, 3.46245265828934, 3.47407243971087, 3.36302215537105, + 3.32085180663105, 3.13758299920276, 3.41437497308165, 3.4020116599001, + 3.62687390889084, 3.62687390889084, 3.40859756683735, 3.39637633817112, + 3.38868807661617, 3.36890569137327, 3.35476835958596, 3.18992874525813, + 3.17724534251483, 3.09342950142183, 3.09443260003746, 3.09070139119307, + 3.06189389526813, 3.05482563075123, 3.00855454176395, 3.23937773743491, + 3.49879167788239, 3.21099501115507, 3.21099501115507, 3.19813057220198, + 2.89589853502537, 2.88922564985387, 2.88073654644261, 2.8773139339888, + 3.64687730106182, 3.30664103782876, 3.64576370051983, 3.30545988365993, + 3.28155410925581, 3.56686791163023, 3.22198122826548, 3.27203346235845, + 3.28464219966599, 3.09097467548117, 3.49191585663117, 3.18434027640117, + 3.02490590830647, 3.00450400319504, 3.0210389550426, 3.00316092334049, + 2.88221609366084, 2.86319121368963, 3.01819503162959, 2.88585243277332, + 2.95341405297199, 3.23709636239996, 2.99979448514897 + ]) +mpg_bs_poisson.deviance = 37.5688885982924 +mpg_bs_poisson.null_deviance = 337.261844954099 +mpg_bs_poisson.iter = 2 +mpg_bs_poisson.weights = np.array([ + 22.3336888624052, 22.3336888624052, 18.8666471780852, 24.6005745142783, + 20.2124334840002, 22.8102863289666, 21.2442570213741, 20.8505817458947, + 18.7943175653996, 17.3622856225417, 24.0338628565775, 24.0338628565775, + 20.935276335111, 20.7146066788423, 19.70726962527, 16.6154304243558, + 16.1824357783394, 15.8244576339389, 44.4669337713293, 33.5515182749217, + 32.9731474236259, 33.7649237356661, 33.7649237356661, 26.6556641802073, + 32.2899161942786, 31.9517683223135, 31.9517683223135, 25.9673576911838, + 24.3187934206986, 19.4547324478204, 38.0801341578851, 33.7505237802537, + 35.4653895670087, 31.7743267613674, 31.5284618343365, 30.7264789753035, + 30.5258354446068, 26.9143737550779, 26.3900783105142, 26.249464215323, + 25.6541837248854, 23.7239613618351, 25.1403576194409, 26.4924802541157, + 33.5515182749217, 32.9731474236259, 22.9410728104039, 14.47260998958, + 14.47260998958, 12.9021732165794, 33.5301520174867, 33.3641886280507, + 33.2817500931026, 32.6353763563543, 32.5562320319589, 24.1474603736604, + 24.1474603736604, 24.1092519948462, 21.1620657641001, 25.7274341836644, + 25.5290017158505, 25.7274341836644, 25.5290017158505, 34.5439992172318, + 25.4141648862487, 21.1656203778166, 31.2884410253879, 22.982102930709, + 22.0263514540475, 23.0649401255033, 21.9468430481884, 16.0331523948941, + 16.1935304733727, 14.6799182745067, 15.1781115120846, 17.7801050860015, + 33.0691112648596, 32.6512494955146, 31.7255239720031, 26.4638366952653, + 23.3250888902207, 25.8516180226822, 19.3788120289629, 19.0882529015196, + 19.0722150074884, 25.5346117891148, 25.2143419936146, 23.0840008767135, + 23.0840008767135, 33.4238437448953, 42.0506088522863, 32.9478785042369, + 32.6267466662016, 31.3142194643356, 32.4211528205978, 31.2559944662652, + 32.1097352466569, 31.1259446946282, 31.5497052984367, 25.112605259447, + 25.306027261376, 18.2388860257968, 17.6161066851272, 18.3471666161139, + 17.8525051915755, 16.3420980420226, 17.6473315393282, 21.3181270530784, + 26.4663398142245, 20.5677576159385, 25.4019977006441, 21.2621170941323, + 26.2145573950958, 20.5062647363486, 25.1528200519265, 21.1218432510334, + 26.2145573950958, 18.4210122751131, 33.0691112648596, 26.6556641802073, + 32.2899161942786, 31.9517683223135, 29.2236217839984, 24.3187934206986, + 19.2817747181913, 19.5157258032775, 17.2507177792766, 17.2507177792766, + 17.1110601696662, 13.8570785388883, 22.0124718606101, 21.8445175074419, + 21.7919385382284, 21.5777037097057, 18.8119485812728, 18.6825251385612, + 30.940456666996, 29.5558251512618, 27.0837969236757, 28.3123779686313, + 27.7923960466706, 25.2262854221659, 24.9294169490801, 21.8647793180832, + 26.7536202960709, 24.343020949218, 24.6626229671211, 21.1526506443609, + 32.7287827606977, 31.8951084621753, 32.2678842431507, 28.87632789156, + 27.6839218662126, 23.048092224925, 30.3979439554834, 30.0244382955742, + 37.5951069978099, 37.5951069978099, 30.2228290263918, 29.8557167725842, + 29.6270583323937, 29.0467235793695, 28.6389694795549, 24.2866968391243, + 23.9806041337226, 22.0525777852821, 22.0747097939672, 21.9924979117766, + 21.3679875950349, 21.2174855273262, 20.2580965194577, 25.5178380106008, + 33.0754619909028, 24.8037539620955, 24.8037539620955, 24.4867112441593, + 18.0997574028658, 17.9793818727964, 17.8273990524644, 17.7664870729599, + 38.3547086431239, 27.2932941866367, 38.312020591921, 27.2610756297141, + 26.6171064644809, 35.4055260700387, 25.0777557539365, 26.3648968966003, + 26.6994295408305, 21.9985089372341, 32.8488210905178, 24.1513499334354, + 20.5920670775753, 20.1762062799232, 20.5125922782816, 20.1491262131442, + 17.8537950533905, 17.5173394077776, 20.4543389101607, 17.9188356898853, + 19.1712939403471, 25.4596886075362, 20.0814094712 + ]) +mpg_bs_poisson.working_weights = np.array([ + 22.3336888624052, 22.3336888624052, 18.8666471780852, 24.6005745142783, + 20.2124334840002, 22.8102863289666, 21.2442570213741, 20.8505817458947, + 18.7943175653996, 17.3622856225417, 24.0338628565775, 24.0338628565775, + 20.935276335111, 20.7146066788423, 19.70726962527, 16.6154304243558, + 16.1824357783394, 15.8244576339389, 44.4669337713293, 33.5515182749217, + 32.9731474236259, 33.7649237356661, 33.7649237356661, 26.6556641802073, + 32.2899161942786, 31.9517683223135, 31.9517683223135, 25.9673576911838, + 24.3187934206986, 19.4547324478204, 38.0801341578851, 33.7505237802537, + 35.4653895670087, 31.7743267613674, 31.5284618343365, 30.7264789753035, + 30.5258354446068, 26.9143737550779, 26.3900783105142, 26.249464215323, + 25.6541837248854, 23.7239613618351, 25.1403576194409, 26.4924802541157, + 33.5515182749217, 32.9731474236259, 22.9410728104039, 14.47260998958, + 14.47260998958, 12.9021732165794, 33.5301520174867, 33.3641886280507, + 33.2817500931026, 32.6353763563543, 32.5562320319589, 24.1474603736604, + 24.1474603736604, 24.1092519948462, 21.1620657641001, 25.7274341836644, + 25.5290017158505, 25.7274341836644, 25.5290017158505, 34.5439992172318, + 25.4141648862487, 21.1656203778166, 31.2884410253879, 22.982102930709, + 22.0263514540475, 23.0649401255033, 21.9468430481884, 16.0331523948941, + 16.1935304733727, 14.6799182745067, 15.1781115120846, 17.7801050860015, + 33.0691112648596, 32.6512494955146, 31.7255239720031, 26.4638366952653, + 23.3250888902207, 25.8516180226822, 19.3788120289629, 19.0882529015196, + 19.0722150074884, 25.5346117891148, 25.2143419936146, 23.0840008767135, + 23.0840008767135, 33.4238437448953, 42.0506088522863, 32.9478785042369, + 32.6267466662016, 31.3142194643356, 32.4211528205978, 31.2559944662652, + 32.1097352466569, 31.1259446946282, 31.5497052984367, 25.112605259447, + 25.306027261376, 18.2388860257968, 17.6161066851272, 18.3471666161139, + 17.8525051915755, 16.3420980420226, 17.6473315393282, 21.3181270530784, + 26.4663398142245, 20.5677576159385, 25.4019977006441, 21.2621170941323, + 26.2145573950958, 20.5062647363486, 25.1528200519265, 21.1218432510334, + 26.2145573950958, 18.4210122751131, 33.0691112648596, 26.6556641802073, + 32.2899161942786, 31.9517683223135, 29.2236217839984, 24.3187934206986, + 19.2817747181913, 19.5157258032775, 17.2507177792766, 17.2507177792766, + 17.1110601696662, 13.8570785388883, 22.0124718606101, 21.8445175074419, + 21.7919385382284, 21.5777037097057, 18.8119485812728, 18.6825251385612, + 30.940456666996, 29.5558251512618, 27.0837969236757, 28.3123779686313, + 27.7923960466706, 25.2262854221659, 24.9294169490801, 21.8647793180832, + 26.7536202960709, 24.343020949218, 24.6626229671211, 21.1526506443609, + 32.7287827606977, 31.8951084621753, 32.2678842431507, 28.87632789156, + 27.6839218662126, 23.048092224925, 30.3979439554834, 30.0244382955742, + 37.5951069978099, 37.5951069978099, 30.2228290263918, 29.8557167725842, + 29.6270583323937, 29.0467235793695, 28.6389694795549, 24.2866968391243, + 23.9806041337226, 22.0525777852821, 22.0747097939672, 21.9924979117766, + 21.3679875950349, 21.2174855273262, 20.2580965194577, 25.5178380106008, + 33.0754619909028, 24.8037539620955, 24.8037539620955, 24.4867112441593, + 18.0997574028658, 17.9793818727964, 17.8273990524644, 17.7664870729599, + 38.3547086431239, 27.2932941866367, 38.312020591921, 27.2610756297141, + 26.6171064644809, 35.4055260700387, 25.0777557539365, 26.3648968966003, + 26.6994295408305, 21.9985089372341, 32.8488210905178, 24.1513499334354, + 20.5920670775753, 20.1762062799232, 20.5125922782816, 20.1491262131442, + 17.8537950533905, 17.5173394077776, 20.4543389101607, 17.9188356898853, + 19.1712939403471, 25.4596886075362, 20.0814094712 + ]) +mpg_bs_poisson.prior_weights = np.array([ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + ]) +mpg_bs_poisson.df_null = 202 +mpg_bs_poisson.y = np.array([ + 21, 21, 19, 24, 18, 19, 19, 19, 17, 16, 23, 23, 21, 21, 20, 16, 16, 15, + 47, 38, 38, 37, 31, 24, 31, 31, 31, 24, 24, 19, 49, 31, 38, 30, 30, 30, + 30, 27, 27, 27, 27, 24, 25, 24, 38, 38, 24, 15, 15, 13, 30, 31, 31, 31, + 31, 17, 17, 17, 16, 26, 26, 26, 26, 36, 26, 19, 31, 22, 22, 22, 22, 16, + 16, 14, 14, 19, 37, 31, 31, 24, 23, 25, 19, 19, 19, 25, 25, 23, 23, 31, + 45, 31, 31, 31, 31, 31, 31, 31, 31, 27, 27, 17, 17, 19, 19, 17, 19, 19, + 28, 19, 25, 19, 28, 19, 25, 19, 28, 18, 37, 24, 31, 31, 31, 24, 19, 19, + 17, 17, 17, 17, 21, 21, 21, 21, 19, 19, 31, 26, 26, 32, 28, 26, 24, 24, + 28, 25, 23, 23, 35, 31, 31, 31, 27, 27, 30, 30, 34, 38, 38, 28, 28, 29, + 29, 26, 26, 24, 24, 24, 24, 24, 24, 29, 30, 27, 27, 27, 20, 19, 20, 19, + 37, 27, 37, 27, 27, 37, 26, 24, 24, 19, 33, 25, 23, 23, 24, 24, 17, 17, + 23, 19, 18, 26, 19 + ]) +mpg_bs_poisson.rV = np.array([ + 0, 0, 0, 0, -8.9130297985463e-05, -0.000176684273823698, + 0.0011584583691732, -0.00390049177471793, 0.00344010782379437, + -0.00135790861015704, -0.000111385074008239, -0.000176972060004861, + -9.86203908496754e-05, -3.64890558944375e-05, -3.08026950210881e-05, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1.00732908209018e-08, + -1.9968429523216e-08, 1.3092616450685e-07, -4.40824151599687e-07, + 3.88792670366615e-07, -1.53467548605631e-07, -1.25884718098402e-08, + -2.00009544217366e-08, -1.11458381757212e-08, -4.12390489107036e-09, + -3.48124613097974e-09, 0.000484189713776837, 0.00176326319300196, + -0.00213289729840957, 0.00171891163782342, 0.000158871132568822, + 0.000404028755237099, 0.000172315861842303, 4.89726562858341e-05, + 1.83249073133473e-05, 0, 0, 0, 0, -0.000254544577467626, + -0.001035854174059, 0.0046293795015643, -0.00326301657903083, + -0.00369019497478088, 0.00424113890068213, -0.00111478223779753, + -8.31563834028823e-05, 3.46682153808709e-06, -1.64898555754477e-05, + -9.07732254822129e-06, 6.0169393955401e-07, 2.19117578684648e-06, + -2.65051351077577e-06, 2.13606089860863e-06, 1.97426328806317e-07, + 5.0207934310591e-07, 2.14133854581071e-07, 6.08574483361064e-08, + 2.27720361659973e-08, 0, 0, 0, 0, -8.67530824448457e-07, + -3.50085835082344e-06, 1.5704337049189e-05, -1.1558369799142e-05, + -1.18261820387094e-05, 1.40035677392858e-05, -3.75511703912262e-06, + -3.06863463308056e-07, -4.02009554224386e-09, -6.10721916028877e-08, + -3.5318767498273e-08, -0.000382530042043907, -0.00255975045612884, + -2.99883291413828e-06, 0.00294330517341526, -0.00281607442586145, + 0.000253368944788171, -0.000122754106081541, -4.2763005163725e-05, + -1.30236129168315e-05, 0, 0, 0, 0, -0.00966644355174144, + 0.00269105367197029, -0.00334645589725531, -0.00234181093625769, + -0.00216540983679256, -0.00066383484979213, -0.00237599704209698, + -0.0025908794761289, -0.00118961452521134, -0.00047380312071635, + -0.000383619934532888, 5.15841833882531e-08, -1.94845144065131e-07, + -7.80952028852524e-07, 1.59403673671029e-06, -8.65625953468978e-07, + 2.30856760369028e-07, 2.27477703785993e-08, 3.88153165550371e-09, + 2.42916435116361e-09, 0, 0, 0, 0, 0.00206071513456646, + 0.00259032221886972, -0.00462767183063042, -0.000812824166230881, + 0.00327127979674583, 0.00636775605071208, -0.00706904029020125, + 0.0038451705444942, -4.78467478660841e-05, 3.51536747705564e-06, + 0.000141313878548576, 2.10782460099238e-07, 3.38869931168823e-06, + 2.86390520594828e-06, -8.91501199000953e-06, 6.11375240450779e-06, + -1.11044209821123e-06, 4.49490645479527e-08, 3.046867980894e-08, + 4.71123050344579e-09, 0, 0, 0, 0, 0.00216388091005572, + 0.0072785576896648, -0.00311587959475874, -0.00239308716572744, + 0.00144238479341897, 0.00678208940398299, 0.00874004674289753, + -0.00685793621788863, 0.0033588493044311, 0.000612698808337676, + 0.000171678666979125, -6.30057645838362e-07, -5.07268731106957e-06, + -1.24429998247157e-06, 8.00582245681437e-06, -6.61366914887778e-06, + 8.37690225444627e-07, -1.92360546261274e-07, -7.34241156464652e-08, + -2.03835562953002e-08, 0, 0, 0, 0, -2.2318052171308e-05, + 1.00187730987837e-06, 5.83061748307947e-05, -3.45050041792168e-05, + -5.05331594075182e-05, 9.27165882205839e-06, 7.16977964102637e-05, + -5.71805931575351e-05, 1.06595362126306e-05, 1.37331425262819e-06, + -1.03861037743204e-06, -6.16816513887191e-05, -0.00397223763403223, + -0.00331945740763105, 0.00040255086143712, 0.00378466857534277, + -0.00325030280975968, -0.000271335113409458, -7.80253442210804e-05, + -4.36513398991459e-05, 0, 0, 0, 0, 0.00182160098394648, + 0.0140353939250751, 0.00184333025785555, -0.00371605504172841, + -0.00536561351594821, -0.00495181859482273, 0.00458467528732412, + 0.0128362620543724, -0.00605747342330702, 0.00204832461339022, + -7.6277769152395e-05, -4.19141107502209e-06, -0.000129533993153208, + -9.63657701282369e-05, 4.2472204591931e-05, 7.84167279344425e-05, + -8.63726646261737e-05, -8.24485498650714e-06, -2.44196733700831e-06, + -1.2846096191467e-06, 0, 0, 0, 0, -0.000111854458371005, + -0.0030362002288163, -0.00103705133742332, 0.000437977493539271, + 0.00133786612382401, 0.00225092840905142, 0.000927619479306194, + -0.00201944800380486, -0.0101339323949803, 0.0226636304940929, + -0.0123761853740514, 1.01542617077534e-06, 2.85681463258814e-05, + 2.05230490131649e-05, -8.90719228375958e-06, -1.70051211426309e-05, + 1.88733138779214e-05, 1.83051339841541e-06, 5.41785688208812e-07, + 2.8339017949807e-07, 0, 0, 0, 0, 4.65402191088959e-05, + 0.000191816594322909, -4.54028851717489e-06, -3.18890377626848e-05, + -5.7674071220918e-05, -3.79391537768814e-05, 2.39849167980979e-05, + 0.000203747166481438, -0.000106995289962793, 7.69291581175877e-05, + -2.64037729668823e-05, -0.00177978600426665, 0.00388593763522146, + 0.00772623228480497, 0.00736829029955221, 0.00358935560508782, + -0.00791584614212573, 0.00260070979940973, 0.000494193187052966, + -5.16890264935234e-06, 0, 0, 0, 0, -0.000752774096418275, + 0.0145172326131151, 0.0135584669346244, 0.0084247696435658, + 0.00341964710536383, -0.00534543003921537, -0.0119819810541305, + -0.00576414999763685, 0.0175467982472431, 0.00703564364103214, + -0.0075588975595249, 0.000162124661698533, -0.000517363075356893, + -0.000843527567273272, -0.000640702296616474, -0.000228240599694238, + 0.000629209863537068, -0.000252521203049104, -4.90223702087604e-05, + -1.08712652734942e-06, 0, 0, 0, 0, -0.00572677403360511, + 0.00870397569070348, 0.0156669586701219, 0.0147970077092393, + 0.0140991545215927, 0.00845910163493166, 0.000446479103855692, + -0.00616089183508052, -0.0303069331722817, -0.0036612206130011, + 0.0217792101261298, 0.000189946466274698, -0.000505169752388413, + -0.000908200445697714, -0.000760865821994572, -0.000317806093180382, + 0.000783677174543439, -0.000284599371195069, -5.46600275429753e-05, + -3.4861779513484e-07, 0, 0, 0, 0, 0.000154872794432739, + 0.000347867145902534, -0.000103102401856294, -0.000392898983966799, + -0.000575837864553121, -0.000562899412506052, -9.71872572167717e-05, + 0.000520814308366405, 0.00099813091123171, 2.08971401302817e-05, + -0.000592020227328858, -0.00410594365252939, -9.93367498970981e-05, + 0.0033499368419802, 0.00467254784048401, 0.00668857971950258, + 0.0067164286612312, -0.0212771297885921, 0.0294716435709253, + -0.0154755121605764, 0, 0, 0, 0, -0.000206206119749145, + 0.00205597864873973, 0.00168384931295861, 0.000749679428496663, + 8.41486634926737e-05, -0.000706726922678021, -0.000617139988013067, + 0.000167185618961349, 0.000492348623290797, 8.87037243629349e-05, + 0.000157329110308255, -0.0116748017186726, -0.00163015109322018, + 0.00682422864381095, 0.00998251986633975, 0.016148092859733, + 0.0177601065922889, -0.017874797540282, -0.0213772410986876, + 0.0157985614102532, 0, 0, 0, 0, 0.037193198873555, + 0.000276975159045285, -0.0237629718390942, -0.0244127800075447, + -0.0310757874145892, -0.0255575206850703, -0.026673251680601, + -0.0350111136488692, -0.00886521071472492, 0.0245404712666937, + 0.0463326363220799, -0.00253188718079104, -0.000653429116975908, + 0.0011620482733327, 0.00211589034759339, 0.00367778201322326, + 0.0040677604350883, -0.00507376363738053, -0.00223095373191136, + 0.00206213937427957, 0, 0, 0, 0, 0.00873021053727884, + 0.00788912587315529, 0.00315035854914982, 0.000729499906725857, + -0.00328134349842095, -0.00644376475504463, -0.0116331903146275, + -0.015288226128054, -0.00792058428914374, 0.00838656968634575, + 0.0196142787782849, -0.0222070071311449, -0.0085523948160152, + 0.00197984349190124, 0.00552409581369225, 0.0173231753198411, + 0.0269502786230045, 0.0444699184443161, -0.00195308066417439, + -0.0363223282917489, 0, 0, 0, 0, 0.00169163794738931, + -0.00383399031151375, -0.00585177655081489, -0.00499725225479528, + -0.00415592538210646, -0.00148907462126999, 0.00173577250006001, + 0.00294429784532539, 0.00458477957640236, -0.000484638769799792, + -0.00384943847580776, 0.00842349237381884, 0.00485500145690797, + 0.00281845357221204, 0.00271275264035418, -0.000438520740299198, + -0.00382130619094318, -0.017249675475828, -0.0858405600961884, + -0.135935077467396, -0.014351805995054, 0, 0, 0, 0.00040660604880189, + 0.000316745017030137, 3.28762155221662e-05, -7.65210725613372e-05, + -0.000234228657698133, -0.000311673452153201, -0.000437967535817843, + -0.000585886587938954, -0.000192461378311277, 0.000391244883140083, + 0.000693129601873483, 0.00416984196146825, 0.00191987715157721, + 0.000233531125633939, -0.000325479295859366, -0.00247433282397362, + -0.00446616198281691, -0.00803899886321839, -0.0106982256522182, + -0.0133066416160238, 0.0144487468289665, 0, 0, -0.039021573780305, + 0.00178251131609767, -0.00314872170017292, -0.00526317798364386, + -0.00471582757742263, -0.00426509391962734, -0.0021098532647336, + 0.000449733415313781, 0.00250944131155914, 0.00679139580304206, + 0.000266584356546392, -0.00499157509254186, -0.0129502842323007, + -0.00584017124814522, -0.00038900758484735, 0.00154888351611733, + 0.00854704220691514, 0.0147435174902231, 0.0220373114764713, + 0.0277678791681642, 0.0330732757720991, 0.0673687811308531, 0, + -0.0727577715645542, -0.0660767215034692, 0.0046318104807724, + 0.00279923327002594, -0.000344618926583256, -0.00145801819850269, + -0.00309674677991799, -0.0036486478609869, -0.00464834984362868, + -0.00576615440314964, -0.00207127569768669, 0.00378666514448286, + 0.00764068847822383, 8.88247243745535e-06, 7.70568572451843e-05, + 0.000176716367242848, 0.000255560590323436, 0.000237005166038077, + 4.52872126430998e-05, -0.000545209712186102, -0.00184078849724724, + -0.00263833664383721, 0.0503224185461385, -0.0469900909623995, + -0.00485618033033583, -0.0146940851269257, 0.00309766417715181, + 0.00358739721584392, 0.00126780489916931, -4.04115178473884e-05, + -0.00135981454962773, -0.00215240226396701, -0.00310950655627377, + -0.004402851468672, -0.00541141005760902, 0.00216272414867472, + 0.00871843645875338, -0.011066944059589, -0.00438326526061835, + 0.000734116197365618, 0.00238488961743991, 0.0079891741761364, + 0.0124369238374935, 0.0172500599680547, 0.018005707666409, + 0.0201741350091917, 0.0401636589575239, -0.0318988645890763, + -0.01850999070435, -0.00394626508026133, 0.0551382157508856, + 0.0217807180807445, -0.00622899826733438, -0.00923850673879829, + -0.0212137461370569, -0.020091132050748, -0.0314646112389824, + -0.0563797107234094, -0.0618781724522286, -0.0809883829460941, + -0.101451533937108, -0.0294660248157941, -0.0129461041972885, + -0.000317118828092305, 0.00404893245763359, 0.0193119490827826, + 0.0326887256219942, 0.0524397613334577, 0.0599889895213543, + 0.0707562479561827, -0.00014417166463547, 0.000112486137657318, + 2.93195506570937e-05, 7.11989286865333e-05, 0.000298020443190303, + 7.43500900776159e-05, -0.000123025591619351, -0.000150144864483587, + -0.000213602220981072, -0.000182287600073906, -0.000196294549615607, + -0.000273238798774471, -0.000134016463849165, -5.87892574426707e-05, + -3.61576064062375e-05, 0.00212707138394515, -0.000435955193172209, + 0.000604997293885961, 0.000392867571322303, 0.000561225223337066, + 0.00056952076942879, 0.000186965781647446, 2.43190236830834e-05, + -1.49153748573756e-05 + ]).reshape(24, 24, order='F') + +mpg_bs_poisson.db_drho = np.array([ + -0.00955607829508903, 0.00430986949109399, 0.00462834751450597, + 0.00835107524076425, -0.0333302515945607, 0.00139610358751732, + 0.0263076303556022, 0.0268343416489505, 0.0314648272214792, + 0.0226413860328889, 0.0162437421056309, 0.0181827810783155, + 0.000275213760239914, 0.00115455787426117, 0.00197111543707827, + 0.00493118340740466, 0.00145534674747094, -0.00147150121604032, + -0.00260852436899397, -0.00515405425200522, -0.00625733949412647, + -0.00215131919228267, 0.000695879282559118, 0.00245613544165302, + 0.0165502705938555, -0.0120739288987487, -0.00539618833686599, + -0.00676715282188502, 0.0196760486043603, 0.00772600754507691, + -0.00364486556122667, -0.00558444320663137, -0.0105223419591228, + -0.0104699677543541, -0.0139344474571075, -0.0207299030874315, + -0.0154990384672306, -0.0114599389957355, -0.0101038003601939, + -0.020380893865003, -0.00665329046642183, 0.00475504810058412, + 0.00904455059277683, 0.0203739259385563, 0.026657106982953, + 0.0214205189927133, -0.0170394753092789, -0.0478344361350309 + ]).reshape(24, 2, order='F') + +mpg_bs_poisson.dw_drho = np.array([ + 0.198451577496262, 0.198451577496262, 0.0211323116265804, + 0.176795914312368, -0.158842940220042, 0.136552595840399, + -0.0788956246522186, -0.145800287459428, -0.18078320916676, + -0.227604968605315, 0.270528113197353, 0.270528113197353, + 0.0871931177612735, 0.0488040223227676, -0.11212062083582, + -0.0921466191935143, -0.0872523607945422, -0.0726475180150896, + -2.03674569674128, -0.399858629869372, -0.294145790144752, + -0.384037673792421, -0.384037673792421, 0.0374542295773345, + -0.126689730715761, -0.0732225659783105, -0.0732225659783105, + 0.103260641535857, 0.179088091909104, -0.0488091379129944, + -0.947578113843131, -0.606019988745503, -0.473334587346908, + -0.236955919521633, -0.195526007765597, -0.0688010780860252, + -0.0392834493026195, 0.189928469830611, 0.21717147287679, + 0.222511836808396, 0.234040644079886, 0.168755657511205, + 0.169728133790599, 0.366698379522312, -0.399858629869372, + -0.294145790144752, 0.121380760680706, 0.00910595279608145, + 0.00910595279608145, 0.0340607755348701, -0.340709976973792, + -0.310583848151182, -0.295779107765152, -0.18359861595662, + -0.170364313792911, 0.271469840167182, 0.271469840167182, + 0.271257913696808, 0.204605902971062, 0.242930319240712, + 0.240554295492994, 0.242930319240712, 0.240554295492994, + 0.290076687028269, 0.237905640625681, 0.114993524063036, + 0.152699599788878, -0.24062847407969, -0.177222382324359, + -0.245297972873039, -0.1716897049522, -0.0498413922857943, + -0.0602427120173084, -0.00606488931871212, -0.0365248804113624, + -0.0161146042525035, -0.258096696454203, -0.186266616268125, + -0.0387572286849415, 0.0575914455113098, 0.157609243121204, + 0.220346301053061, -0.0626777547324119, -0.113851702484695, + -0.116475605634303, 0.22526164753013, 0.223826799079261, + 0.156828878422261, 0.156828878422261, -0.348685874833428, + -0.0903521318069049, -0.263248163466929, -0.207718489967913, + -0.00114280263869193, -0.173123855988071, 0.00717472807613134, + -0.122226134658981, 0.025464920617837, -0.0355698249808467, + 0.187431184982238, 0.181218694001414, -0.170463957448774, + -0.182265636600245, -0.162639928396832, -0.08984634445544, + -0.0728162435542022, -0.102375349892814, -0.083518458576145, + -0.26562651277574, -0.124224763801435, -0.247398017325716, + -0.0987361747211609, -0.267357057917193, -0.121190412683788, + -0.235390425297552, -0.102224269330431, -0.267357057917193, + -0.11647321800326, -0.258096696454203, 0.0374542295773345, + -0.126689730715761, -0.0732225659783105, 0.25371891049452, + 0.179088091909104, 0.0189353803356997, 0.0439242698170608, + 0.0885475465440703, 0.0885475465440703, 0.0627230661721545, + -0.0267785017213478, 0.0513972263582553, 0.0260420185827092, + 0.0176322762568806, -0.0186260827562727, -0.0357699577049284, + -0.0594521157329645, 0.0508444244300699, 0.142346989140971, + 0.125278734192754, 0.126468071771089, 0.17321276456908, + 0.200109710036431, 0.127527720685718, 0.0276890383196247, + 0.23637704520406, 0.191366461532249, 0.124763311559562, + -0.0443449571558454, -0.0475135961354155, 0.074234409804811, + 0.0216623623678642, 0.352213438519467, 0.21463189015559, + -0.189097828932044, 0.100405735385079, 0.144407665462729, + 0.336395360175917, 0.336395360175917, 0.12155167143745, + 0.16287496031754, 0.18641467013746, 0.32607579411487, + 0.357175125935867, 0.224343769580642, 0.237299332647382, + 0.196244695452164, 0.198230836612474, 0.190617207491118, + 0.111580641946218, 0.0872289438148001, -0.0809563578119795, + 0.204355413307292, 0.209639717051386, 0.207342466515434, + 0.207342466515434, 0.197169181872743, -0.0572474800374093, + -0.0728827033179431, -0.10460003726393, -0.107196252644019, + 0.361813401969034, 0.175102284300755, 0.363949986843691, + 0.177442308769387, 0.215769343564575, 0.261298864778967, + 0.172202480804323, 0.184076703337005, 0.163188602303023, + 0.0493811888871374, 0.175827850286979, 0.163383083228185, + -0.0462305614889876, -0.10500182436349, -0.0595021447805033, + -0.107718395073629, -0.081368118853961, -0.10288400064567, + -0.0687391241662543, -0.0840863186508532, -0.0922241572577749, + -0.279777090829456, -0.113889925777426, 0.0930136922441679, + 0.0930136922441679, 0.0582604661375774, 0.181541045905811, + 0.160535840342632, 0.138401158506572, 0.0244932126510834, + 0.00542933620282285, 0.0633164368215588, 0.128659554552638, + 0.101233497721208, 0.101233497721208, 0.0760249394180194, + 0.0608979020662987, 0.012262059474567, -0.0816046841286946, + -0.0831343394498383, -0.0814694950097439, -0.109232145394468, + 0.0770377761224491, 0.041925391053174, 0.0274589171017179, + 0.0274589171017179, 0.347617575580373, -0.0596237774820829, + -0.0794752848265101, -0.0794752848265101, 0.2925962616859, + -0.0887185089091997, 0.101775115170702, -0.0645242547362925, + 0.27126368025602, -0.137133999832565, 0.1427646918224, + 0.12693641285656, 0.0754012256843574, 0.0625093748503227, + 0.0612182250236711, 0.022647781585492, 0.0122598524089968, + -0.031821546967195, 0.0950948808259056, 0.194301250561357, + -0.176407422753569, 0.0770377761224491, 0.041925391053174, + -0.162369831909575, -0.0320855187783016, -0.0320855187783016, + -0.553307949537856, 0.0135199811625741, 0.00368762745876068, + -0.00119025497296702, -0.0393155997407192, -0.0439714980600599, + 0.110325691275902, 0.110325691275902, 0.107266760517285, + 0.18135826013452, -0.070138627603902, -0.084586374173829, + -0.070138627603902, -0.084586374173829, -0.18934706121959, + -0.0929298188222547, 0.0852655356749052, -0.179394458894588, + 0.279166751287957, 0.275139241012056, 0.279948761371457, + 0.275155694583494, 0.0121935242055421, 0.0105151849876446, + -0.0734774746915535, -0.0830825997308687, -0.0261494773912439, + -0.0137546788196909, -0.0383815439915174, -0.092751399768813, + 0.332355694092576, 0.245345164899538, 0.0254896012212449, + 0.0970805551002128, 0.0811025946105638, 0.0803177348400819, + 0.00164450882011678, -0.0224311131933797, 0.224672875336535, + 0.224672875336535, 0.0383303142014232, -0.0317090718898804, + 0.0098303983136882, -0.00933161038990583, -0.0873586528394907, + -0.0215767942260494, -0.0908195449342244, -0.040099049184707, + -0.0985530505261142, -0.0733677092344781, 0.141756395019668, + 0.157166003405932, 0.0508331038597551, 0.0390688659098563, + 0.0540369357658138, 0.0099459590057849, -0.177557776337536, + 0.00493496128474215, -0.130643486152668, 0.113817128307549, + -0.142574086775631, 0.100786016919189, -0.15587973038, + 0.109227489252925, -0.163440665982954, 0.099878533303345, + -0.135287923148148, 0.109227489252925, 0.0333059944181948, + -0.0137546788196909, 0.347617575580373, -0.0596237774820829, + -0.0794752848265101, -0.241561147836771, -0.0887185089091997, + 0.0730471534751108, 0.0835002138786142, -0.189280927404009, + -0.189280927404009, -0.19628855825041, -0.837484070977975, + 0.0753082580083826, 0.0630294638001513, 0.0592929776175618, + 0.0447029449409758, 0.0723308379811164, 0.0645975264797624, + -0.109593771541039, -0.0811243820180713, -0.0188474302547651, + 0.0685021880400987, 0.0321368032444232, 0.0966486930237446, + 0.0363801672252788, 0.255050941838437, -0.0415198183216256, + 0.0275908041907373, 0.0158480616637525, 0.194606530344896, + -0.220059902653218, -0.265372977366032, -0.245100901081693, + -0.434187429432454, -0.274154387736992, -0.498079277975881, + -0.113234390595495, -0.13592301549537, -0.27298841850198, + -0.27298841850198, -0.123853386260785, -0.146226945009001, + -0.160255725328499, -0.220696627341507, -0.245525340689894, + 0.265599932544055, 0.240132044079803, 0.12044536185896, + 0.122242899082191, 0.11558414739394, 0.0672807026649379, + 0.0565215464236424, 0.00320786060661828, 0.0811815737084521, + 0.00442292020833086, 0.0259650355832699, 0.0259650355832699, + 0.00159130624929899, 0.0167237159821922, 0.0123103421759687, + 0.0151464759374235, 0.0138398492897789, -0.378259152221767, + 0.0663775142988527, -0.380910748552257, 0.0640455341462561, + 0.0171809160567121, 0.0133244698759663, 0.189239788364039, + 0.105896755907438, 0.131163117931394, 0.0742692098161327, + -0.17392768225168, -0.100700445594839, 0.0036126603654632, + -0.0123831512006035, 5.23650575074128e-05, -0.0132043382182284, + 0.00660287534316686, -0.00167186752805072, -0.00240546718672251, + 0.0118803438893343, 0.0424368089424911, 0.219430516658537, + -0.0151485147157889 + ]).reshape(203, 2, order='F') + +mpg_bs_poisson.aic = 1077.25052939687 +mpg_bs_poisson.rank = 24 +mpg_bs_poisson.sp = np.array([ + 40491.3940640059, 232455.530262537 + ]) +mpg_bs_poisson.gcv_ubre = -0.733688545240377 +mpg_bs_poisson.scale = 1 +mpg_bs_poisson.method = 'UBRE' +mpg_bs_poisson.Vp = np.array([ + 0.00909877938596195, -0.0036458463607326, -0.00588941030822462, + -0.00591326964084843, 0.00270235043019556, 0.00119384910564329, + -0.000286097332788069, -0.000538328684681065, -0.00118730774061063, + -0.00118703780057675, -0.00172055345918883, -0.00282973019584382, + -0.00279619972795585, -0.00289060805206229, -0.00320325258490701, + -0.00198704716570621, -0.000847222204131792, 2.70515273679747e-05, + 0.000326844162490547, 0.00135256413351957, 0.0022188465918784, + 0.00337126604512471, 0.00374620280538731, 0.00434814343158575, + -0.0036458463607326, 0.00322561886385797, 0.000818643340518427, + 0.00081636578104383, -0.00190437247620751, -0.000863343934846812, + 0.000139109866047115, 0.000296579927149878, 0.000740568197543185, + 0.000742005374071472, 0.00114977928877198, 0.00200530841336703, + 0.00222811101992064, 0.0024818042434364, 0.00282650455393769, + 0.00146020870965775, 0.000618887019138287, -2.43124025263358e-05, + -0.000241178336099445, -0.000991378139936192, -0.00162708135143005, + -0.00248332970180653, -0.00275966775911108, -0.00320503008932793, + -0.00588941030822462, 0.000818643340518427, 0.00565989642595176, + 0.00495199955352287, -0.00137264214791527, -0.000624245731910545, + 0.000134212108893823, 0.000277278672318982, 0.000624575880555572, + 0.00064780126403512, 0.000935707806932052, 0.00148449349573531, + 0.00132234065473106, 0.00121308059577345, 0.00127960812345634, + 0.000598575017370257, 0.000255298927663316, -1.05348849084324e-05, + -0.000105109656554569, -0.000413488381353818, -0.000668742250888912, + -0.00101475517128789, -0.00106390221980279, -0.00121570767202619, + -0.00591326964084843, 0.00081636578104383, 0.00495199955352287, + 0.00612031056002729, -0.000638697385813232, -0.000200756794681808, + 0.000234092062788641, 0.000317400792863984, 0.000474734639710034, + 0.000434320019657147, 0.000459443487096387, 0.000570251932991725, + 0.000195546004426462, 2.72052297316331e-05, -3.78499050833033e-05, + 0.000783804355084115, 0.000338266801002889, -5.98980579055969e-06, + -0.00012832043843202, -0.000542743279532203, -0.000890014730820339, + -0.00128430664220486, -0.00146322120108432, -0.00169190306471577, + 0.00270235043019556, -0.00190437247620751, -0.00137264214791527, + -0.000638697385813232, 0.00467632009472188, 0.00125238169504067, + -0.00129877704188898, -0.0015159828401994, -0.00244941224999582, + -0.00216501742563322, -0.00281375885789835, -0.00449408146252495, + -0.00364816304284394, -0.00343278843606667, -0.0037656405854337, + -0.0019530192987073, -0.000823926841909847, 5.56765347348377e-05, + 0.000369977630385713, 0.00139228419735132, 0.00223783577417036, + 0.00315107722344203, 0.00316419340408527, 0.00352917384733862, + 0.00119384910564329, -0.000863343934846812, -0.000624245731910545, + -0.000200756794681808, 0.00125238169504067, 0.00114727766243173, + 0.000242162647776926, 4.77172748392219e-06, -0.00037150498020405, + -0.000523254030404203, -0.000886617935612452, -0.00140688678525427, + -0.00151777207774812, -0.00163789857683012, -0.0018417095344788, + -0.000869233941992018, -0.000381264599266638, -2.19177180982826e-06, + 0.000134563688210397, 0.000592929102356622, 0.000989340528530486, + 0.00149625051966445, 0.00155348190492993, 0.00176000748685542, + -0.000286097332788069, 0.000139109866047115, 0.000134212108893823, + 0.000234092062788641, -0.00129877704188898, 0.000242162647776926, + 0.0011787952545672, 0.00103397353567405, 0.00113707718574448, + 0.000747670650180816, 0.000637468318331369, 0.000963934771472604, + 0.000259239399462997, -3.13740933986805e-05, -9.8258454258689e-05, + 0.000164389952506784, 4.78756078126526e-05, -4.80106456474847e-05, + -8.33829838965235e-05, -0.000166890570625039, -0.000205380711729347, + -9.50907045530586e-05, 1.1901907320833e-05, 7.14426605544705e-05, + -0.000538328684681065, 0.000296579927149878, 0.000277278672318982, + 0.000317400792863984, -0.0015159828401994, 4.77172748392219e-06, + 0.00103397353567405, 0.00107361395477902, 0.00125357393902288, + 0.000898511162091638, 0.000812608069611423, 0.00117847586239195, + 0.000443230767944589, 0.00015806917585112, 0.000106018646194562, + 0.000333721015978061, 0.000120100408758941, -5.31389194723373e-05, + -0.000117871111748406, -0.000291886194606976, -0.000404124403497883, + -0.000356618262057166, -0.000229210620899383, -0.000185219275316426, + -0.00118730774061063, 0.000740568197543185, 0.000624575880555572, + 0.000474734639710034, -0.00244941224999582, -0.00037150498020405, + 0.00113707718574448, 0.00125357393902288, 0.00175782412570737, + 0.00141365990412939, 0.00148450143229436, 0.00216483804024586, + 0.00123800831660394, 0.000907681260528922, 0.000916494035161101, + 0.000815197396104502, 0.000324866910653185, -6.44236841260061e-05, + -0.000207212018218033, -0.000635132377386486, -0.000959491791422852, + -0.00113713913236256, -0.000994541303512086, -0.00102792706388811, + -0.00118703780057675, 0.000742005374071472, 0.00064780126403512, + 0.000434320019657147, -0.00216501742563322, -0.000523254030404203, + 0.000747670650180816, 0.000898511162091638, 0.00141365990412939, + 0.00136045936923501, 0.0014680793668956, 0.00203686187559336, + 0.00119847526169048, 0.000904176981254769, 0.000896852593619694, + 0.000848078442321369, 0.000345820664123864, -5.15527865984296e-05, + -0.000197519992775655, -0.000645609416220365, -0.000997761381187661, + -0.0012404390560521, -0.00109680508351927, -0.00113967714137046, + -0.00172055345918883, 0.00114977928877198, 0.000935707806932052, + 0.000459443487096387, -0.00281375885789835, -0.000886617935612452, + 0.000637468318331369, 0.000812608069611423, 0.00148450143229436, + 0.0014680793668956, 0.00217084016500343, 0.0029750070358662, + 0.00208433309826413, 0.00172182542303662, 0.00174611536201217, + 0.00129960828944164, 0.000548751370569655, -3.79946139891241e-05, + -0.000250001401133244, -0.00093656323979694, -0.00150718818010699, + -0.00208363853621429, -0.00197367970588831, -0.00213273444541255, + -0.00282973019584382, 0.00200530841336703, 0.00148449349573531, + 0.000570251932991725, -0.00449408146252495, -0.00140688678525427, + 0.000963934771472604, 0.00117847586239195, 0.00216483804024586, + 0.00203686187559336, 0.0029750070358662, 0.00501513876862512, + 0.00399535121928084, 0.00350598390589745, 0.00362456785335549, + 0.00212078488398862, 0.000906131205084277, -3.6454396313134e-05, + -0.000372397355810615, -0.0014864096281366, -0.00242880305206317, + -0.00353282386838665, -0.00350718581597741, -0.00389458456296836, + -0.00279619972795585, 0.00222811101992064, 0.00132234065473106, + 0.000195546004426462, -0.00364816304284394, -0.00151777207774812, + 0.000259239399462997, 0.000443230767944589, 0.00123800831660394, + 0.00119847526169048, 0.00208433309826413, 0.00399535121928084, + 0.0054507568567451, 0.00470241993895167, 0.00493055279786896, + 0.00201853749109608, 0.000885809556650048, 1.83923039664673e-05, + -0.000283050691529295, -0.00133250331426772, -0.00225236010538653, + -0.00359833596867777, -0.00395366352736832, -0.00461628776343853, + -0.00289060805206229, 0.0024818042434364, 0.00121308059577345, + 2.72052297316331e-05, -0.00343278843606667, -0.00163789857683012, + -3.13740933986805e-05, 0.00015806917585112, 0.000907681260528922, + 0.000904176981254769, 0.00172182542303662, 0.00350598390589745, + 0.00470241993895167, 0.0078325224613628, 0.00915323598243506, + 0.00210730280021935, 0.000947137882568041, 7.05701947291954e-05, + -0.000224872498960712, -0.00130765819682263, -0.00228758006518242, + -0.0039547935932424, -0.00485413154696321, -0.00588024148548991, + -0.00320325258490701, 0.00282650455393769, 0.00127960812345634, + -3.78499050833033e-05, -0.0037656405854337, -0.0018417095344788, + -9.8258454258689e-05, 0.000106018646194562, 0.000916494035161101, + 0.000896852593619694, 0.00174611536201217, 0.00362456785335549, + 0.00493055279786896, 0.00915323598243506, 0.0136836741339633, + 0.00237864146497212, 0.00108182905868904, 0.000109069014228716, + -0.000213065408232925, -0.00142680000774472, -0.00254134923813102, + -0.00458047582769968, -0.00592196661560628, -0.00727888553074047, + -0.00198704716570621, 0.00146020870965775, 0.000598575017370257, + 0.000783804355084115, -0.0019530192987073, -0.000869233941992018, + 0.000164389952506784, 0.000333721015978061, 0.000815197396104502, + 0.000848078442321369, 0.00129960828944164, 0.00212078488398862, + 0.00201853749109608, 0.00210730280021935, 0.00237864146497212, + 0.0019076370303838, 0.000759586105406085, -0.000122960434399537, + -0.000420867297024075, -0.00139652592551323, -0.0021704465936693, + -0.00288314395021324, -0.00291742522906299, -0.00325655842738453, + -0.000847222204131792, 0.000618887019138287, 0.000255298927663316, + 0.000338266801002889, -0.000823926841909847, -0.000381264599266638, + 4.78756078126526e-05, 0.000120100408758941, 0.000324866910653185, + 0.000345820664123864, 0.000548751370569655, 0.000906131205084277, + 0.000885809556650048, 0.000947137882568041, 0.00108182905868904, + 0.000759586105406085, 0.0003656939785206, 2.82567281665219e-05, + -0.000101646821262282, -0.000512930233362397, -0.000872443999184792, + -0.00131618762009045, -0.00140260317866891, -0.00159801030917644, + 2.70515273679747e-05, -2.43124025263358e-05, -1.05348849084324e-05, + -5.98980579055969e-06, 5.56765347348377e-05, -2.19177180982826e-06, + -4.80106456474847e-05, -5.31389194723373e-05, -6.44236841260061e-05, + -5.15527865984296e-05, -3.79946139891241e-05, -3.6454396313134e-05, + 1.83923039664673e-05, 7.05701947291954e-05, 0.000109069014228716, + -0.000122960434399537, 2.82567281665219e-05, 0.000149057409866348, + 0.000158033153508944, 0.000181471124454999, 0.000130884181218961, + -0.00015302847096016, -0.000310903996678885, -0.000420681148041455, + 0.000326844162490547, -0.000241178336099445, -0.000105109656554569, + -0.00012832043843202, 0.000369977630385713, 0.000134563688210397, + -8.33829838965235e-05, -0.000117871111748406, -0.000207212018218033, + -0.000197519992775655, -0.000250001401133244, -0.000372397355810615, + -0.000283050691529295, -0.000224872498960712, -0.000213065408232925, + -0.000420867297024075, -0.000101646821262282, 0.000158033153508944, + 0.000255704147038991, 0.000426656151552186, 0.000483132475498153, + 0.000219787363688364, 1.1439794023618e-05, -9.02272784316804e-05, + 0.00135256413351957, -0.000991378139936192, -0.000413488381353818, + -0.000542743279532203, 0.00139228419735132, 0.000592929102356622, + -0.000166890570625039, -0.000291886194606976, -0.000635132377386486, + -0.000645609416220365, -0.00093656323979694, -0.0014864096281366, + -0.00133250331426772, -0.00130765819682263, -0.00142680000774472, + -0.00139652592551323, -0.000512930233362397, 0.000181471124454999, + 0.000426656151552186, 0.00117095478565454, 0.00164149083642214, + 0.00169588353149587, 0.00141489783224005, 0.00143202572023981, + 0.0022188465918784, -0.00162708135143005, -0.000668742250888912, + -0.000890014730820339, 0.00223783577417036, 0.000989340528530486, + -0.000205380711729347, -0.000404124403497883, -0.000959491791422852, + -0.000997761381187661, -0.00150718818010699, -0.00242880305206317, + -0.00225236010538653, -0.00228758006518242, -0.00254134923813102, + -0.0021704465936693, -0.000872443999184792, 0.000130884181218961, + 0.000483132475498153, 0.00164149083642214, 0.00265334294416382, + 0.00305296134009041, 0.00272287720213162, 0.00283652481021948, + 0.00337126604512471, -0.00248332970180653, -0.00101475517128789, + -0.00128430664220486, 0.00315107722344203, 0.00149625051966445, + -9.50907045530586e-05, -0.000356618262057166, -0.00113713913236256, + -0.0012404390560521, -0.00208363853621429, -0.00353282386838665, + -0.00359833596867777, -0.0039547935932424, -0.00458047582769968, + -0.00288314395021324, -0.00131618762009045, -0.00015302847096016, + 0.000219787363688364, 0.00169588353149587, 0.00305296134009041, + 0.00667821352504447, 0.00531692615725814, 0.00566170373323159, + 0.00374620280538731, -0.00275966775911108, -0.00106390221980279, + -0.00146322120108432, 0.00316419340408527, 0.00155348190492993, + 1.1901907320833e-05, -0.000229210620899383, -0.000994541303512086, + -0.00109680508351927, -0.00197367970588831, -0.00350718581597741, + -0.00395366352736832, -0.00485413154696321, -0.00592196661560628, + -0.00291742522906299, -0.00140260317866891, -0.000310903996678885, + 1.1439794023618e-05, 0.00141489783224005, 0.00272287720213162, + 0.00531692615725814, 0.0135149981987308, 0.0166147008644102, + 0.00434814343158575, -0.00320503008932793, -0.00121570767202619, + -0.00169190306471577, 0.00352917384733862, 0.00176000748685542, + 7.14426605544705e-05, -0.000185219275316426, -0.00102792706388811, + -0.00113967714137046, -0.00213273444541255, -0.00389458456296836, + -0.00461628776343853, -0.00588024148548991, -0.00727888553074047, + -0.00325655842738453, -0.00159801030917644, -0.000420681148041455, + -9.02272784316804e-05, 0.00143202572023981, 0.00283652481021948, + 0.00566170373323159, 0.0166147008644102, 0.0269823093695889 + ]).reshape(24, 24, order='F') + +mpg_bs_poisson.hat = np.array([ + 0.0278593212349963, 0.027859321234996, 0.0271835195981152, + 0.0165279929083336, 0.106781936158984, 0.0194662437332315, + 0.032295750296588, 0.0392619596780691, 0.0387156790274354, + 0.114565355904326, 0.0347318387160548, 0.0347318387160548, + 0.0228149079107915, 0.0217158582339006, 0.0226951242421406, + 0.0312506509654928, 0.0318481724122817, 0.0352629615723995, + 0.229347195519636, 0.0253668202191401, 0.0208533777040901, + 0.0247060214667431, 0.0247060214667431, 0.0261095683466317, + 0.016415969487458, 0.0154908151248992, 0.0154908151248992, + 0.0215702656628941, 0.0246341814860533, 0.033024840861246, + 0.0660866602564387, 0.040500099040622, 0.0329890825445826, + 0.0196669792093725, 0.0180524070739387, 0.0141322217010847, + 0.0134767343098439, 0.0123733758938561, 0.0132174514515368, + 0.0135856020119763, 0.0160613943332619, 0.0171673739746131, + 0.0162889185023652, 0.0485512446138166, 0.02536682021914, + 0.0208533777040901, 0.0404724478456156, 0.135373825547302, + 0.135373825547302, 0.192162273241016, 0.0228948602165343, + 0.0217338579929625, 0.0211927837843807, 0.0177283103805098, + 0.0173951893767073, 0.0355359517267947, 0.0355359517267947, + 0.0352622341187835, 0.0386500855278607, 0.017655808362093, + 0.0190761298888524, 0.017655808362093, 0.0190761298888524, + 0.0752191165687181, 0.0199904451725522, 0.0238501163229081, + 0.0891159763302456, 0.0657836672940597, 0.0963530173668623, + 0.0646615754412069, 0.100691872326665, 0.06033845881374, + 0.051792376639415, 0.0842503682370257, 0.052617884986705, + 0.0355957283088215, 0.0199032628746703, 0.017797453185194, + 0.0150732837773955, 0.0247293015271973, 0.0239780538499133, + 0.0139263614080384, 0.03309919684783, 0.0341928110637857, + 0.0342941422407387, 0.015130443108706, 0.0168053218757406, + 0.022918472066971, 0.022918472066971, 0.0230879899045791, + 0.105985842333657, 0.019847007766673, 0.0180867449319177, + 0.0142596333538319, 0.0171312035471302, 0.0142156281620368, + 0.0159333133036568, 0.0141551440885177, 0.0145460670838214, + 0.0147268920838561, 0.0148410373945601, 0.0406040382229733, + 0.0500664761273972, 0.0395694935907428, 0.0222494280433288, + 0.0489485080155037, 0.0217807712860658, 0.0417801872726058, + 0.0616984761864518, 0.0552866936833232, 0.0686076962087453, + 0.0474517838023861, 0.0621959473606664, 0.0633944902963094, + 0.0726748960865953, 0.0445267766286251, 0.0621959473606664, + 0.0190408664090557, 0.0199032628746703, 0.0261095683466317, + 0.016415969487458, 0.0154908151248992, 0.020050321292679, + 0.0246341814860533, 0.0234112464358267, 0.0243908733143132, + 0.0861043314604194, 0.0861043314604194, 0.081590807360981, + 0.302520797377801, 0.0232324062134501, 0.0247834182699543, + 0.0253300650870489, 0.0278009383597399, 0.0414535179805262, + 0.0409418131857217, 0.014157417875456, 0.0130282960809025, + 0.138598903485126, 0.0119217227225527, 0.0118879906828549, + 0.0141551657727111, 0.123783953258847, 0.11912545095407, + 0.0142268306190214, 0.0172399619813334, 0.121846395543782, + 0.110470500089909, 0.0201551990336182, 0.0206310745751254, + 0.0201536865625068, 0.0381417658252338, 0.147146341940793, + 0.19291538753225, 0.0138996856259478, 0.0145038473004087, + 0.0816344563835501, 0.0816344563835501, 0.0141422035219747, + 0.0148789474728842, 0.0154853081668733, 0.0606395671173926, + 0.0600386292911446, 0.0489884539186971, 0.0451161294598349, + 0.0286513771162332, 0.0288498072754457, 0.0281198522360051, + 0.0237262441315675, 0.0231072922711262, 0.0233676261568825, + 0.013768548515088, 0.0737736816925903, 0.0160520266152111, + 0.0160520266152111, 0.0178865660055972, 0.0246890354271123, + 0.0236757874745378, 0.0207029571112752, 0.0208006880192332, + 0.0871658869688338, 0.0121224793768177, 0.0871468068056535, + 0.012134436832306, 0.0130273070409246, 0.0770270710340484, + 0.0161554288190356, 0.0130060409476929, 0.0131560893519169, + 0.0233495425653485, 0.076546096962634, 0.026653503029336, + 0.0232595679594293, 0.025927102793454, 0.0236164317298477, + 0.0261567967057281, 0.0234612845321249, 0.0224086568560985, + 0.023932672432481, 0.0226000918010269, 0.0185252878980513, + 0.0596358457431316, 0.0267683181821813 + ]) +mpg_bs_poisson.Ve = np.array([ + 0.00872816910147373, -0.00339468396176873, -0.00574795519757804, + -0.00574495699516135, 0.00224716621100421, 0.000990731701491968, + -0.000189207067857561, -0.000360006731927612, -0.000886141060022117, + -0.000893283809269308, -0.00139841232780236, -0.0024252281957883, + -0.00248459469487803, -0.00272342482840153, -0.00317621552813653, + -0.00157392814822113, -0.000726932119992933, -9.18102761507539e-05, + 0.000118849290312744, 0.000936311632940437, 0.00169780728892799, + 0.00302963699787248, 0.00399780133211975, 0.00495376916948824, + -0.00339468396176873, 0.00304577329137564, 0.00073225495104467, + 0.000711491834517779, -0.00160491657736677, -0.000740799055737486, + 6.70583600031394e-05, 0.000178733920236327, 0.000549296431166237, + 0.00056281173695013, 0.00095383610203774, 0.00175022827549142, + 0.00196954338218556, 0.00232358726439227, 0.00278825293492344, + 0.00117312403915761, 0.000540827007066709, 6.60591721757886e-05, + -9.18905851433959e-05, -0.000701585089614169, -0.00126800242591629, + -0.00224803934627821, -0.0029510939846369, -0.00364975898650794, + -0.00574795519757804, 0.000732254951044672, 0.00559376431953148, + 0.0048832815861983, -0.00121036529463201, -0.000522618964878643, + 0.000129331466175766, 0.000229756269964103, 0.000520627200771865, + 0.000528242761654376, 0.000793896658595473, 0.00131409709061904, + 0.00123306001882202, 0.00121204524436677, 0.00133977901167853, + 0.000447066868582399, 0.000206656393910154, 2.68120895197694e-05, + -3.23982830841326e-05, -0.000264147901782724, -0.000480668169091168, + -0.000866639543186555, -0.00114766823435088, -0.00142207357353394, + -0.00574495699516135, 0.000711491834517781, 0.0048832815861983, + 0.00602768596209419, -0.000389954497461, -0.000109284543659045, + 0.000153323471341307, 0.000194516540158586, 0.000286655256402351, + 0.00026181962881677, 0.000286745600159159, 0.000364719729750488, + 0.000127132330375839, -3.57259747391055e-05, -0.000113354870958816, + 0.000604247534774847, 0.00027994556193377, 3.70691109006243e-05, + -4.34292704409193e-05, -0.000357747093695074, -0.000651937681315584, + -0.0011691635350969, -0.00154193389436139, -0.0019129550615053, + 0.00224716621100421, -0.00160491657736676, -0.001210365294632, + -0.000389954497460996, 0.00347808865504033, 0.00132323474863319, + -0.000620379681534514, -0.000875315126296074, -0.00166180989091369, + -0.00157415573423987, -0.00219719238769074, -0.00359642853432569, + -0.00322310081671098, -0.00324508176487169, -0.0036754827978078, + -0.00145489369244191, -0.000673422622792495, -8.44792620426521e-05, + 0.000114439223651904, 0.00087738477088068, 0.0015899315444895, + 0.00279655824015247, 0.00351931576929605, 0.00428313495351485, + 0.000990731701491967, -0.000740799055737486, -0.000522618964878641, + -0.000109284543659043, 0.00132323474863319, 0.000655127288184895, + -3.31949485214243e-05, -0.000155323487931888, -0.000485224036488008, + -0.000525887940251636, -0.000857444735942005, -0.0014710758798172, + -0.00151889596210613, -0.00162673243857201, -0.00186770956717347, + -0.000670576872257768, -0.000305910136989141, -3.36803230282656e-05, + 5.49951643130221e-05, 0.000401887575890236, 0.000723619175878996, + 0.00128476848340608, 0.00167460705387823, 0.00206379845655073, + -0.000189207067857561, 6.70583600031395e-05, 0.000129331466175766, + 0.000153323471341307, -0.000620379681534514, -3.3194948521424e-05, + 0.000422458211239026, 0.000450910733051421, 0.000553014417977397, + 0.000427638664078662, 0.000375078726813327, 0.000462151976988038, + 4.37628716599336e-05, -0.000142399734941993, -0.000215753222618727, + 6.94222854016504e-05, 3.58176880944216e-05, 8.26729602061187e-06, + -4.16972909429667e-06, -4.68178715508534e-05, -9.04312099550322e-05, + -0.000138757953946595, -6.84432214995606e-05, -3.56841324345881e-05, + -0.00036000673192761, 0.000178733920236327, 0.000229756269964101, + 0.000194516540158584, -0.000875315126296073, -0.000155323487931888, + 0.00045091073305142, 0.000513445751471091, 0.000684361386829758, + 0.000564523613103732, 0.000557127530201139, 0.000728321718348602, + 0.000247319319788527, 3.11813102293091e-05, -3.58495709368964e-05, + 0.000176725478403447, 8.40441853814431e-05, 1.2884063367738e-05, + -1.32156712780233e-05, -0.000111399922319692, -0.000207007843868899, + -0.000346549982398979, -0.000324707449587645, -0.000345070178668886, + -0.000886141060022115, 0.000549296431166237, 0.000520627200771863, + 0.000286655256402349, -0.00166180989091369, -0.000485224036488007, + 0.000553014417977398, 0.000684361386829759, 0.00104717798807282, + 0.000930183695210662, 0.00108239688315768, 0.00156796247592839, + 0.000988503792692421, 0.000743709136203547, 0.000748419274879713, + 0.000519816001740406, 0.000241988207312757, 3.16745566880191e-05, + -4.08380043721362e-05, -0.000317995564807066, -0.000580057658691823, + -0.00100671784474982, -0.00116031132861809, -0.00136423560665091, + -0.000893283809269305, 0.000562811736950129, 0.000528242761654373, + 0.000261819628816767, -0.00157415573423987, -0.000525887940251636, + 0.000427638664078662, 0.000564523613103732, 0.000930183695210662, + 0.000867331523647151, 0.00106939619159995, 0.00155756066124217, + 0.0010416712048185, 0.000776436361361746, 0.000757354625789488, + 0.000541961987886794, 0.000250102803056663, 2.95822869438755e-05, + -4.5444100946543e-05, -0.000331604928389911, -0.000598935425865254, + -0.00104269195496842, -0.00123615285468088, -0.00147065125925875, + -0.00139841232780236, 0.00095383610203774, 0.00079389665859547, + 0.000286745600159156, -0.00219719238769074, -0.000857444735942005, + 0.000375078726813327, 0.00055712753020114, 0.00108239688315768, + 0.00106939619159995, 0.00149905346295801, 0.0023405849562749, + 0.00191121806564683, 0.00164358471205581, 0.0017027266462958, + 0.000904783145661926, 0.000415377716654449, 4.56470624574401e-05, + -7.92803869682595e-05, -0.000552385079626244, -0.000988604209615911, + -0.00171872712720447, -0.00215133730382456, -0.00261401889078434, + -0.0024252281957883, 0.00175022827549142, 0.00131409709061904, + 0.000364719729750487, -0.00359642853432569, -0.0014710758798172, + 0.000462151976988038, 0.000728321718348603, 0.00156796247592839, + 0.00155756066124217, 0.0023405849562749, 0.0039088898099519, + 0.00364159235175025, 0.00349905560597342, 0.0038280072030944, + 0.00160819428106233, 0.00074093038951584, 8.64602484454594e-05, + -0.000134359425008037, -0.000974546598810599, -0.0017520858786637, + -0.00305919315908029, -0.00391522429010944, -0.00478876794679771, + -0.00248459469487803, 0.00196954338218556, 0.00123306001882202, + 0.000127132330375837, -0.00322310081671099, -0.00151889596210613, + 4.37628716599345e-05, 0.000247319319788529, 0.000988503792692423, + 0.00104167120481851, 0.00191121806564683, 0.00364159235175025, + 0.00427747479690955, 0.00482928519286143, 0.00563321398275932, + 0.00171333375611591, 0.000795214335892069, 0.000106073729510994, + -0.000123743108712854, -0.00101566834189828, -0.00185063249872698, + -0.00330927681181626, -0.00437251673625904, -0.00540106432140404, + -0.00272342482840152, 0.00232358726439227, 0.00121204524436677, + -3.57259747391077e-05, -0.0032450817648717, -0.00162673243857201, + -0.000142399734941992, 3.1181310229311e-05, 0.000743709136203549, + 0.000776436361361748, 0.00164358471205581, 0.00349905560597342, + 0.00482928519286144, 0.00679529287071828, 0.00867848826510314, + 0.00191454657067405, 0.000893686518678206, 0.000131097434522782, + -0.000120621416599359, -0.0011120366898956, -0.00204532106563245, + -0.00375476941624536, -0.00508809209712206, -0.00637650927364873, + -0.00317621552813653, 0.00278825293492344, 0.00133977901167853, + -0.000113354870958815, -0.00367548279780781, -0.00186770956717347, + -0.000215753222618726, -3.58495709368943e-05, 0.000748419274879716, + 0.00075735462578949, 0.0017027266462958, 0.0038280072030944, + 0.00563321398275933, 0.00867848826510315, 0.0114797679780233, + 0.00225266160157913, 0.00105267921968938, 0.000157467497218995, + -0.000137250335155586, -0.00130186657852725, -0.00239998833772016, + -0.00442972809291755, -0.00604742087075733, -0.00762459540851679, + -0.00157392814822113, 0.00117312403915761, 0.000447066868582396, + 0.000604247534774846, -0.00145489369244191, -0.000670576872257768, + 6.94222854016507e-05, 0.000176725478403448, 0.000519816001740407, + 0.000541961987886795, 0.000904783145661927, 0.00160819428106233, + 0.00171333375611591, 0.00191454657067405, 0.00225266160157912, + 0.00138295707156965, 0.000624543916825117, 4.93371286792608e-05, + -0.000145621616781563, -0.0008685953533989, -0.00152273289335141, + -0.00253967960701902, -0.00314876360829266, -0.0038150828662408, + -0.000726932119992933, 0.000540827007066709, 0.000206656393910153, + 0.000279945561933769, -0.000673422622792496, -0.000305910136989141, + 3.58176880944217e-05, 8.40441853814434e-05, 0.000241988207312757, + 0.000250102803056663, 0.000415377716654449, 0.00074093038951584, + 0.000795214335892069, 0.000893686518678206, 0.00105267921968938, + 0.000624543916825117, 0.000287643505998226, 3.39635762765042e-05, + -5.12049900753606e-05, -0.000377085568870121, -0.000679123650043239, + -0.00119117072751177, -0.00153274854087477, -0.00188156469729417, + -9.18102761507542e-05, 6.60591721757888e-05, 2.68120895197695e-05, + 3.70691109006244e-05, -8.44792620426523e-05, -3.36803230282657e-05, + 8.26729602061192e-06, 1.2884063367738e-05, 3.16745566880192e-05, + 2.95822869438756e-05, 4.56470624574404e-05, 8.64602484454597e-05, + 0.000106073729510994, 0.000131097434522782, 0.000157467497218995, + 4.9337128679261e-05, 3.39635762765042e-05, 2.66906844580494e-05, + 2.64717949099258e-05, 2.6942083569786e-06, -3.43810706259764e-05, + -0.000187245806988418, -0.000361958427993108, -0.00049570481303046, + 0.000118849290312744, -9.18905851433959e-05, -3.23982830841322e-05, + -4.34292704409189e-05, 0.000114439223651904, 5.49951643130221e-05, + -4.16972909429665e-06, -1.32156712780234e-05, -4.08380043721362e-05, + -4.54441009465431e-05, -7.92803869682594e-05, -0.000134359425008036, + -0.000123743108712854, -0.000120621416599359, -0.000137250335155585, + -0.000145621616781563, -5.12049900753606e-05, 2.64717949099258e-05, + 5.63250510334895e-05, 0.000136116105336803, 0.000188342525646407, + 0.000141805903619892, -5.6569241879348e-06, -8.72594247231751e-05, + 0.000936311632940437, -0.000701585089614169, -0.000264147901782722, + -0.000357747093695073, 0.000877384770880681, 0.000401887575890236, + -4.68178715508535e-05, -0.000111399922319692, -0.000317995564807066, + -0.000331604928389912, -0.000552385079626245, -0.000974546598810599, + -0.00101566834189828, -0.0011120366898956, -0.00130186657852725, + -0.0008685953533989, -0.000377085568870121, 2.69420835697873e-06, + 0.000136116105336803, 0.000596700760715439, 0.000993015790871507, + 0.00145969880241004, 0.00156609372992679, 0.00178733690750938, + 0.00169780728892799, -0.0012680024259163, -0.000480668169091165, + -0.000651937681315582, 0.0015899315444895, 0.000723619175878997, + -9.04312099550323e-05, -0.000207007843868899, -0.000580057658691824, + -0.000598935425865255, -0.000988604209615911, -0.0017520858786637, + -0.00185063249872698, -0.00204532106563245, -0.00239998833772016, + -0.00152273289335141, -0.000679123650043239, -3.43810706259762e-05, + 0.000188342525646407, 0.000993015790871507, 0.00171294384116696, + 0.0027222383901314, 0.00310105715221944, 0.00362843568148568, + 0.00302963699787247, -0.00224803934627821, -0.000866639543186551, + -0.0011691635350969, 0.00279655824015248, 0.00128476848340608, + -0.000138757953946596, -0.000346549982398981, -0.00100671784474982, + -0.00104269195496842, -0.00171872712720447, -0.00305919315908029, + -0.00330927681181626, -0.00375476941624536, -0.00442972809291755, + -0.00253967960701902, -0.00119117072751177, -0.000187245806988417, + 0.000141805903619892, 0.00145969880241004, 0.0027222383901314, + 0.00515370886632995, 0.0065551716667555, 0.00794460693942517, + 0.00399780133211975, -0.00295109398463691, -0.00114766823435088, + -0.00154193389436139, 0.00351931576929606, 0.00167460705387823, + -6.8443221499562e-05, -0.000324707449587647, -0.00116031132861809, + -0.00123615285468089, -0.00215133730382457, -0.00391522429010945, + -0.00437251673625905, -0.00508809209712206, -0.00604742087075734, + -0.00314876360829266, -0.00153274854087477, -0.000361958427993108, + -5.65692418793445e-06, 0.00156609372992679, 0.00310105715221944, + 0.00655517166675551, 0.0113123859861714, 0.0152750741086272, + 0.00495376916948825, -0.00364975898650795, -0.00142207357353394, + -0.0019129550615053, 0.00428313495351486, 0.00206379845655074, + -3.56841324345902e-05, -0.000345070178668888, -0.00136423560665091, + -0.00147065125925876, -0.00261401889078435, -0.00478876794679772, + -0.00540106432140405, -0.00637650927364873, -0.0076245954085168, + -0.00381508286624081, -0.00188156469729417, -0.00049570481303046, + -8.72594247231747e-05, 0.00178733690750939, 0.00362843568148569, + 0.00794460693942518, 0.0152750741086272, 0.0213508475270903 + ]).reshape(24, 24, order='F') + +mpg_bs_poisson.edf_all = np.array([ + 1, 1, 1, 0.999999999999997, 0.138685243481343, 0.168020596767126, + 0.0480405022511898, 0.18786734224937, 0.263638943922787, + 0.146831418768435, 0.125821886761792, 0.418244018451644, + 0.291958034715267, 0.259042421165291, 0.491718306066333, + 0.0608764913352002, 0.0736205393644838, 0.0110857218278732, + 0.028133863911819, 0.110523411158202, 0.279890851829335, + 0.403214040630245, 0.283218020486634, 0.455736703811175 + ]) +mpg_bs_poisson.edf1 = np.array([ + 1, 1, 1, 1, 0.165131311402747, 0.216628750997608, 0.129858492449922, + 0.280058095563882, 0.341868441797401, 0.189284980057434, + 0.176944029164426, 0.479986234409329, 0.34393973921471, + 0.289638759873068, 0.596490313025557, 0.0984847261596164, + 0.0965664680726603, 0.0206746315637887, 0.0529176753037307, + 0.200932398735361, 0.350970375831462, 0.461975872101362, + 0.300898156007137, 0.569596548903937 + ]) +mpg_bs_poisson.R = np.array([ + -71.5821206726932, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -63.1163195158524, 1.95757286856305, -23.03254478422, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -46.8273357718321, 34.0470354731819, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21.8490313684801, -30.0505437246368, + 1.40770182956625, 1.68556625008646, -2.33893485610153, + -1.33644268314491, 1.21748327751584, -13.039284154087, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.477512967307601, 1.36236539597893, + -0.516947348486553, 1.07236058110657, 1.08928898765604, + -0.965998498019831, -0.580778688841, -0.103016956860158, + 0.0184449837168278, 0.361357837171709, -0.464334724997202, + -1.02057754551832, -0.299987104352742, 1.80074339194746, + -0.807813756458929, 2.40827617334435, -0.068186720122408, + 0.0120341609759849, -0.0714580439975603, 1.60007697893804, + -0.0315471704511174, 0.00174858263390992, -2.55467758285728, 0, + -1.94900954154811, 6.19817892188406, -1.8514278254703, + 5.39525477464455, 6.19207697202972, -4.25530534923462, + -2.51014242072305, -0.586660999222762, 1.17041680362472, + 2.12445724226536, -2.39192663928419, -4.04595116579218, + -1.79447003222895, 0.804202405659664, -2.11710630419854, + 7.37240445494639, 0, 0, 0, 0, 0, 0, 0, 0, -2.21982688976771, + 7.7395352430774, -1.6751571140575, 7.56715279972929, 7.30080835108233, + 1.30107966459169, -1.80079225151029, -0.806502495251811, + 3.32849433060211, 3.92547834938874, -3.50082013772898, + -2.24037842904234, -1.52868797203916, -8.53164933157901, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -0.779934937130817, 2.62565093082503, 2.37073115328689, + -4.28817123758634, -0.080751581857798, 14.6440439255311, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -0.00721786546787323, + 0.98127850057242, 0.642005259909329, -16.9010047937415, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.559947748920377, + -1.80166368984726, 0.489168077483038, -4.15787304705626, + -1.16413896794078, -4.1032957977653, 0.00909265186432576, + 0.752308897124599, 1.84302277997761, 3.63848082642309, + 5.19246694919925, 0.48720611571256, 9.04725561644245, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1.33514967817744, -3.49667821149016, -0.949152089498797, + 2.33399066330522, -2.80504453980125, -2.10518798719649, + -0.343186214002096, 0.309526050154829, 0.661705900096051, + 0.315536573689153, 11.3726887141719, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 2.73373491518617, -9.14611149382971, -0.463450746514161, + 5.26288495850026, -4.16738776540214, -3.20802369644502, + 2.78287983487152, -0.0939459297044367, -0.834978565680418, + -12.2261879092477, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1.10004440041883, -4.93728604305982, 2.91932210864771, + 1.89037492948015, -0.932939049536182, -1.38193812679339, + 2.80775419027974, -0.601410745457799, 0.180123074039231, + -2.26092553127237, -2.77311967088501, -0.0475111049957128, + -0.298723876097052, 0.49295938848852, -2.50496710148361, + -0.363824334720354, -2.26911551733168, -0.800331975389022, + 4.71516553087557, 0, 0, 0, 0, 0, 0.521119657625995, -2.05376381949499, + 1.7637835270072, 0.382058703847093, -0.157138929322969, + -0.352470776826791, 0.442095459819672, -0.620896142051542, + -0.457143594021276, 1.11701211900279, -0.771197137215035, + 0.382509579433449, -0.637920544080794, -0.19636944712839, + -2.76095163778409, -0.0947648491593383, -1.60128758325565, + 1.05889279565606, 1.78283600847369, 0.0827697362327962, + 0.218447667335008, 3.56313091806667, 0, 0, 0.631212637260466, + -1.43181573732286, 0.231747714762957, 0.0817399534247477, + -0.0191900919104383, 0.00315244044777415, -0.211271235128332, + -0.654119719624449, -0.857096543383966, 1.01894195349241, + -0.341970246302318, 0.20866595535429, -0.226607932020836, + -0.382067742181455, -1.16014914733138, 0.313204150352656, + -2.23313682027299, 5.8383560790515, 0, 0, 0, 0, 0, 0, + -0.77739992608371, 1.70512529554269, 3.26377154649538, + 0.616731997782261, -1.22884035403489, 1.42732927607925, + -1.78350620625032, 1.34408727146986, -2.22109103908636, + 0.374505046759324, -0.766005558718678, -2.75743149949993, + -0.0443578352818244, -1.12197437067228, 2.10278895946825, + 2.07430877165134, 0.881169500456017, 0.203003516625478, + 0.627165413354841, 4.0985822451904, 0, 0, 0, 0, -2.61037802516482, + 7.10140197572962, 0.597866576138827, 5.21643971120884, + 9.17062486512179, -1.56538905540272, -5.72360591829728, + 0.857449637772138, -0.644155500096225, 0.949492249967968, + -2.26262138985532, -10.5362935297102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -2.26318396694959, 6.97084348380242, -1.5006632362559, + 1.66744909447148, 15.7888497366534, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0.0496774228639256, 1.86310661230033, + -0.8272677443453, -7.44929919853572, 0.995164284588838, + 3.01067551468633, 13.2219405804393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1.18880771256503, -4.58559767759348, -0.974627218954948, + -5.46919176135887, -7.86735032370101, 0.861962770166428, + 2.69197570190762, -0.734283418223097, 12.644321994236, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3.07623547346335, -8.62932481974462, + -2.13857134893133, 1.5825646709196, -6.58768256173109, + -2.58784289247216, -4.30598759996588, -1.26625993853579, + -2.48907995763337, -4.65911790973383, 4.62545007584609, + 3.11445832767583, 2.20915643341365, -3.26733566329173, + -7.7493938227666, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1.87720554340571, + -3.76749683704365, -1.73164309687615, 1.81639739721087, + -1.47932696365048, -0.948605303989834, -0.410383046915831, + -1.05087501851937, -4.8979223147175, -3.30035763721004, + 1.46248036466027, 0.437677409315923, -0.0283492883614992, + -1.55967175361477, -0.671687000238254, 0.218048691423501, + -6.70295046711722, 0, 0, 0, 0, 0, 0, 0, 0.625033934606065, + -1.35783399962003, -0.576223529002243, 0.453104537893816, + -0.0700080316501341, -0.132805233101403, 0.0232107773508051, + -0.533797950669129, -1.2242088732616, -0.292185501092755, + 0.653783193502416, -0.203012833152524, -0.233292506440238, + -0.257179556553545, 0.701886900587847, 0.180875662130529, + -2.78710370715732, 0.501821705771827, 0.199861513010874, + 0.0705449671051595, 0.65845009000007, 0.271741081238087, + 0.0296247577347264, 2.29204423094291, 0.295179535981046, + -0.498021301042363, -0.191083976072719, 0.10022620819189, + 0.149938173134123, -0.000647738071340076, 0.0932506134932401, + -0.255992650247112, -0.173965873880064, 0.0746464264713858, + -0.0438028632249015, -0.161854602228138, -0.0578372113962488, + 0.157297649723395, 0.195127506637709, -0.126981325801707, + -0.201542068281104, 0.633451731139413, 1.23686433543792, + 0.0741286829376448, 3.93651436085439, 0, 0, 0 + ]).reshape(24, 24, order='F') + +mpg_bs_poisson.nsdf = 4 +mpg_bs_poisson.sig2 = 1 +mpg_bs_poisson.cmX = np.array([ + 1, 0.901477832512315, 0.58128078817734, 0.374384236453202, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ]) +mpg_bs_poisson.assign = np.array([ + 0, 1, 2, 2 + ]) +mpg_bs_poisson.offset = np.array([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ]) +mpg_bs_poisson.df_residual = 194.753831641044 +mpg_bs_poisson.min_edf = 6 +mpg_bs_poisson.optimizer = np.array([ + 'outer', 'newton' + ]) +mpg_bs_poisson.p_coeff = np.array([ + 3.38155196812657, -0.2398057983025, 0.0385574655971876, + 0.0308789097162079 + ]) +mpg_bs_poisson.se = np.array([ + 0.0953875221712041, 0.0567945319890742, 0.0752322831366413, + 0.0782324137428169, 0.0683836244631848, 0.0338714874552585, + 0.0343335878487408, 0.0327660488124372, 0.0419264132225423, + 0.036884405501987, 0.0465922758083723, 0.0708176444724415, + 0.0738292412039099, 0.0885015393163463, 0.116977237674529, + 0.0436765043288013, 0.0191231267976919, 0.0122089069890121, + 0.0159907519222515, 0.0342192166136885, 0.0515106100154504, + 0.0817203372793118, 0.116254024441009, 0.164262927556978 + ]) +mpg_bs_poisson.p_t = np.array([ + 35.4506741673956, -4.22233954403625, 0.512512235301397, + 0.394707362829427 + ]) +mpg_bs_poisson.p_pv = np.array([ + 2.83211381163377e-275, 2.41779512472801e-05, 0.608292559428079, + 0.693058868325634 + ]) +mpg_bs_poisson.residual_df = 194.753831641044 +mpg_bs_poisson.m = 2 +mpg_bs_poisson.chi_sq = np.array([ + 24.0890023854214, 12.9900133623474 + ]) +mpg_bs_poisson.s_pv = np.array([ + 4.50054787026542e-05, 0.0019804834204652 + ]) +mpg_bs_poisson.scale = 1 +mpg_bs_poisson.r_sq = 0.88083178283537 +mpg_bs_poisson.n = 203 +mpg_bs_poisson.dev_expl = 0.888606170071194 +mpg_bs_poisson.edf = np.array([ + 2.53986871460058, 1.70629964435497 + ]) +mpg_bs_poisson.dispersion = 1 +mpg_bs_poisson.pTerms_pv = np.array([ + 2.41779512472801e-05, 0.874926047858207 + ]) +mpg_bs_poisson.pTerms_chi_sq = np.array([ + 17.8281512251323, 0.267231825859481 + ]) +mpg_bs_poisson.pTerms_df = np.array([ + 1, 2 + ]) +mpg_bs_poisson.cov_unscaled = np.array([ + 0.00909877938596195, -0.0036458463607326, -0.00588941030822462, + -0.00591326964084843, 0.00270235043019556, 0.00119384910564329, + -0.000286097332788069, -0.000538328684681065, -0.00118730774061063, + -0.00118703780057675, -0.00172055345918883, -0.00282973019584382, + -0.00279619972795585, -0.00289060805206229, -0.00320325258490701, + -0.00198704716570621, -0.000847222204131792, 2.70515273679747e-05, + 0.000326844162490547, 0.00135256413351957, 0.0022188465918784, + 0.00337126604512471, 0.00374620280538731, 0.00434814343158575, + -0.0036458463607326, 0.00322561886385797, 0.000818643340518427, + 0.00081636578104383, -0.00190437247620751, -0.000863343934846812, + 0.000139109866047115, 0.000296579927149878, 0.000740568197543185, + 0.000742005374071472, 0.00114977928877198, 0.00200530841336703, + 0.00222811101992064, 0.0024818042434364, 0.00282650455393769, + 0.00146020870965775, 0.000618887019138287, -2.43124025263358e-05, + -0.000241178336099445, -0.000991378139936192, -0.00162708135143005, + -0.00248332970180653, -0.00275966775911108, -0.00320503008932793, + -0.00588941030822462, 0.000818643340518427, 0.00565989642595176, + 0.00495199955352287, -0.00137264214791527, -0.000624245731910545, + 0.000134212108893823, 0.000277278672318982, 0.000624575880555572, + 0.00064780126403512, 0.000935707806932052, 0.00148449349573531, + 0.00132234065473106, 0.00121308059577345, 0.00127960812345634, + 0.000598575017370257, 0.000255298927663316, -1.05348849084324e-05, + -0.000105109656554569, -0.000413488381353818, -0.000668742250888912, + -0.00101475517128789, -0.00106390221980279, -0.00121570767202619, + -0.00591326964084843, 0.00081636578104383, 0.00495199955352287, + 0.00612031056002729, -0.000638697385813232, -0.000200756794681808, + 0.000234092062788641, 0.000317400792863984, 0.000474734639710034, + 0.000434320019657147, 0.000459443487096387, 0.000570251932991725, + 0.000195546004426462, 2.72052297316331e-05, -3.78499050833033e-05, + 0.000783804355084115, 0.000338266801002889, -5.98980579055969e-06, + -0.00012832043843202, -0.000542743279532203, -0.000890014730820339, + -0.00128430664220486, -0.00146322120108432, -0.00169190306471577, + 0.00270235043019556, -0.00190437247620751, -0.00137264214791527, + -0.000638697385813232, 0.00467632009472188, 0.00125238169504067, + -0.00129877704188898, -0.0015159828401994, -0.00244941224999582, + -0.00216501742563322, -0.00281375885789835, -0.00449408146252495, + -0.00364816304284394, -0.00343278843606667, -0.0037656405854337, + -0.0019530192987073, -0.000823926841909847, 5.56765347348377e-05, + 0.000369977630385713, 0.00139228419735132, 0.00223783577417036, + 0.00315107722344203, 0.00316419340408527, 0.00352917384733862, + 0.00119384910564329, -0.000863343934846812, -0.000624245731910545, + -0.000200756794681808, 0.00125238169504067, 0.00114727766243173, + 0.000242162647776926, 4.77172748392219e-06, -0.00037150498020405, + -0.000523254030404203, -0.000886617935612452, -0.00140688678525427, + -0.00151777207774812, -0.00163789857683012, -0.0018417095344788, + -0.000869233941992018, -0.000381264599266638, -2.19177180982826e-06, + 0.000134563688210397, 0.000592929102356622, 0.000989340528530486, + 0.00149625051966445, 0.00155348190492993, 0.00176000748685542, + -0.000286097332788069, 0.000139109866047115, 0.000134212108893823, + 0.000234092062788641, -0.00129877704188898, 0.000242162647776926, + 0.0011787952545672, 0.00103397353567405, 0.00113707718574448, + 0.000747670650180816, 0.000637468318331369, 0.000963934771472604, + 0.000259239399462997, -3.13740933986805e-05, -9.8258454258689e-05, + 0.000164389952506784, 4.78756078126526e-05, -4.80106456474847e-05, + -8.33829838965235e-05, -0.000166890570625039, -0.000205380711729347, + -9.50907045530586e-05, 1.1901907320833e-05, 7.14426605544705e-05, + -0.000538328684681065, 0.000296579927149878, 0.000277278672318982, + 0.000317400792863984, -0.0015159828401994, 4.77172748392219e-06, + 0.00103397353567405, 0.00107361395477902, 0.00125357393902288, + 0.000898511162091638, 0.000812608069611423, 0.00117847586239195, + 0.000443230767944589, 0.00015806917585112, 0.000106018646194562, + 0.000333721015978061, 0.000120100408758941, -5.31389194723373e-05, + -0.000117871111748406, -0.000291886194606976, -0.000404124403497883, + -0.000356618262057166, -0.000229210620899383, -0.000185219275316426, + -0.00118730774061063, 0.000740568197543185, 0.000624575880555572, + 0.000474734639710034, -0.00244941224999582, -0.00037150498020405, + 0.00113707718574448, 0.00125357393902288, 0.00175782412570737, + 0.00141365990412939, 0.00148450143229436, 0.00216483804024586, + 0.00123800831660394, 0.000907681260528922, 0.000916494035161101, + 0.000815197396104502, 0.000324866910653185, -6.44236841260061e-05, + -0.000207212018218033, -0.000635132377386486, -0.000959491791422852, + -0.00113713913236256, -0.000994541303512086, -0.00102792706388811, + -0.00118703780057675, 0.000742005374071472, 0.00064780126403512, + 0.000434320019657147, -0.00216501742563322, -0.000523254030404203, + 0.000747670650180816, 0.000898511162091638, 0.00141365990412939, + 0.00136045936923501, 0.0014680793668956, 0.00203686187559336, + 0.00119847526169048, 0.000904176981254769, 0.000896852593619694, + 0.000848078442321369, 0.000345820664123864, -5.15527865984296e-05, + -0.000197519992775655, -0.000645609416220365, -0.000997761381187661, + -0.0012404390560521, -0.00109680508351927, -0.00113967714137046, + -0.00172055345918883, 0.00114977928877198, 0.000935707806932052, + 0.000459443487096387, -0.00281375885789835, -0.000886617935612452, + 0.000637468318331369, 0.000812608069611423, 0.00148450143229436, + 0.0014680793668956, 0.00217084016500343, 0.0029750070358662, + 0.00208433309826413, 0.00172182542303662, 0.00174611536201217, + 0.00129960828944164, 0.000548751370569655, -3.79946139891241e-05, + -0.000250001401133244, -0.00093656323979694, -0.00150718818010699, + -0.00208363853621429, -0.00197367970588831, -0.00213273444541255, + -0.00282973019584382, 0.00200530841336703, 0.00148449349573531, + 0.000570251932991725, -0.00449408146252495, -0.00140688678525427, + 0.000963934771472604, 0.00117847586239195, 0.00216483804024586, + 0.00203686187559336, 0.0029750070358662, 0.00501513876862512, + 0.00399535121928084, 0.00350598390589745, 0.00362456785335549, + 0.00212078488398862, 0.000906131205084277, -3.6454396313134e-05, + -0.000372397355810615, -0.0014864096281366, -0.00242880305206317, + -0.00353282386838665, -0.00350718581597741, -0.00389458456296836, + -0.00279619972795585, 0.00222811101992064, 0.00132234065473106, + 0.000195546004426462, -0.00364816304284394, -0.00151777207774812, + 0.000259239399462997, 0.000443230767944589, 0.00123800831660394, + 0.00119847526169048, 0.00208433309826413, 0.00399535121928084, + 0.0054507568567451, 0.00470241993895167, 0.00493055279786896, + 0.00201853749109608, 0.000885809556650048, 1.83923039664673e-05, + -0.000283050691529295, -0.00133250331426772, -0.00225236010538653, + -0.00359833596867777, -0.00395366352736832, -0.00461628776343853, + -0.00289060805206229, 0.0024818042434364, 0.00121308059577345, + 2.72052297316331e-05, -0.00343278843606667, -0.00163789857683012, + -3.13740933986805e-05, 0.00015806917585112, 0.000907681260528922, + 0.000904176981254769, 0.00172182542303662, 0.00350598390589745, + 0.00470241993895167, 0.0078325224613628, 0.00915323598243506, + 0.00210730280021935, 0.000947137882568041, 7.05701947291954e-05, + -0.000224872498960712, -0.00130765819682263, -0.00228758006518242, + -0.0039547935932424, -0.00485413154696321, -0.00588024148548991, + -0.00320325258490701, 0.00282650455393769, 0.00127960812345634, + -3.78499050833033e-05, -0.0037656405854337, -0.0018417095344788, + -9.8258454258689e-05, 0.000106018646194562, 0.000916494035161101, + 0.000896852593619694, 0.00174611536201217, 0.00362456785335549, + 0.00493055279786896, 0.00915323598243506, 0.0136836741339633, + 0.00237864146497212, 0.00108182905868904, 0.000109069014228716, + -0.000213065408232925, -0.00142680000774472, -0.00254134923813102, + -0.00458047582769968, -0.00592196661560628, -0.00727888553074047, + -0.00198704716570621, 0.00146020870965775, 0.000598575017370257, + 0.000783804355084115, -0.0019530192987073, -0.000869233941992018, + 0.000164389952506784, 0.000333721015978061, 0.000815197396104502, + 0.000848078442321369, 0.00129960828944164, 0.00212078488398862, + 0.00201853749109608, 0.00210730280021935, 0.00237864146497212, + 0.0019076370303838, 0.000759586105406085, -0.000122960434399537, + -0.000420867297024075, -0.00139652592551323, -0.0021704465936693, + -0.00288314395021324, -0.00291742522906299, -0.00325655842738453, + -0.000847222204131792, 0.000618887019138287, 0.000255298927663316, + 0.000338266801002889, -0.000823926841909847, -0.000381264599266638, + 4.78756078126526e-05, 0.000120100408758941, 0.000324866910653185, + 0.000345820664123864, 0.000548751370569655, 0.000906131205084277, + 0.000885809556650048, 0.000947137882568041, 0.00108182905868904, + 0.000759586105406085, 0.0003656939785206, 2.82567281665219e-05, + -0.000101646821262282, -0.000512930233362397, -0.000872443999184792, + -0.00131618762009045, -0.00140260317866891, -0.00159801030917644, + 2.70515273679747e-05, -2.43124025263358e-05, -1.05348849084324e-05, + -5.98980579055969e-06, 5.56765347348377e-05, -2.19177180982826e-06, + -4.80106456474847e-05, -5.31389194723373e-05, -6.44236841260061e-05, + -5.15527865984296e-05, -3.79946139891241e-05, -3.6454396313134e-05, + 1.83923039664673e-05, 7.05701947291954e-05, 0.000109069014228716, + -0.000122960434399537, 2.82567281665219e-05, 0.000149057409866348, + 0.000158033153508944, 0.000181471124454999, 0.000130884181218961, + -0.00015302847096016, -0.000310903996678885, -0.000420681148041455, + 0.000326844162490547, -0.000241178336099445, -0.000105109656554569, + -0.00012832043843202, 0.000369977630385713, 0.000134563688210397, + -8.33829838965235e-05, -0.000117871111748406, -0.000207212018218033, + -0.000197519992775655, -0.000250001401133244, -0.000372397355810615, + -0.000283050691529295, -0.000224872498960712, -0.000213065408232925, + -0.000420867297024075, -0.000101646821262282, 0.000158033153508944, + 0.000255704147038991, 0.000426656151552186, 0.000483132475498153, + 0.000219787363688364, 1.1439794023618e-05, -9.02272784316804e-05, + 0.00135256413351957, -0.000991378139936192, -0.000413488381353818, + -0.000542743279532203, 0.00139228419735132, 0.000592929102356622, + -0.000166890570625039, -0.000291886194606976, -0.000635132377386486, + -0.000645609416220365, -0.00093656323979694, -0.0014864096281366, + -0.00133250331426772, -0.00130765819682263, -0.00142680000774472, + -0.00139652592551323, -0.000512930233362397, 0.000181471124454999, + 0.000426656151552186, 0.00117095478565454, 0.00164149083642214, + 0.00169588353149587, 0.00141489783224005, 0.00143202572023981, + 0.0022188465918784, -0.00162708135143005, -0.000668742250888912, + -0.000890014730820339, 0.00223783577417036, 0.000989340528530486, + -0.000205380711729347, -0.000404124403497883, -0.000959491791422852, + -0.000997761381187661, -0.00150718818010699, -0.00242880305206317, + -0.00225236010538653, -0.00228758006518242, -0.00254134923813102, + -0.0021704465936693, -0.000872443999184792, 0.000130884181218961, + 0.000483132475498153, 0.00164149083642214, 0.00265334294416382, + 0.00305296134009041, 0.00272287720213162, 0.00283652481021948, + 0.00337126604512471, -0.00248332970180653, -0.00101475517128789, + -0.00128430664220486, 0.00315107722344203, 0.00149625051966445, + -9.50907045530586e-05, -0.000356618262057166, -0.00113713913236256, + -0.0012404390560521, -0.00208363853621429, -0.00353282386838665, + -0.00359833596867777, -0.0039547935932424, -0.00458047582769968, + -0.00288314395021324, -0.00131618762009045, -0.00015302847096016, + 0.000219787363688364, 0.00169588353149587, 0.00305296134009041, + 0.00667821352504447, 0.00531692615725814, 0.00566170373323159, + 0.00374620280538731, -0.00275966775911108, -0.00106390221980279, + -0.00146322120108432, 0.00316419340408527, 0.00155348190492993, + 1.1901907320833e-05, -0.000229210620899383, -0.000994541303512086, + -0.00109680508351927, -0.00197367970588831, -0.00350718581597741, + -0.00395366352736832, -0.00485413154696321, -0.00592196661560628, + -0.00291742522906299, -0.00140260317866891, -0.000310903996678885, + 1.1439794023618e-05, 0.00141489783224005, 0.00272287720213162, + 0.00531692615725814, 0.0135149981987308, 0.0166147008644102, + 0.00434814343158575, -0.00320503008932793, -0.00121570767202619, + -0.00169190306471577, 0.00352917384733862, 0.00176000748685542, + 7.14426605544705e-05, -0.000185219275316426, -0.00102792706388811, + -0.00113967714137046, -0.00213273444541255, -0.00389458456296836, + -0.00461628776343853, -0.00588024148548991, -0.00727888553074047, + -0.00325655842738453, -0.00159801030917644, -0.000420681148041455, + -9.02272784316804e-05, 0.00143202572023981, 0.00283652481021948, + 0.00566170373323159, 0.0166147008644102, 0.0269823093695889 + ]).reshape(24, 24, order='F') + +mpg_bs_poisson.cov_scaled = mpg_bs_poisson.cov_unscaled + +mpg_bs_poisson.p_table = np.array([ + 3.38155196812657, -0.2398057983025, 0.0385574655971876, + 0.0308789097162079, 0.0953875221712041, 0.0567945319890742, + 0.0752322831366413, 0.0782324137428169, 35.4506741673956, + -4.22233954403625, 0.512512235301397, 0.394707362829427, + 2.83211381163377e-275, 2.41779512472801e-05, 0.608292559428079, + 0.693058868325634 + ]).reshape(4, 4, order='F') + +mpg_bs_poisson.pTerms_table = np.array([ + 1, 2, 17.8281512251323, 0.267231825859481, 2.41779512472801e-05, + 0.874926047858207 + ]).reshape(2, 3, order='F') + +mpg_bs_poisson.s_table = np.array([ + 2.53986871460058, 1.70629964435497, 3.20982914795608, 2.15301685267905, + 24.0890023854214, 12.9900133623474, 4.50054787026542e-05, + 0.0019804834204652 + ]).reshape(2, 4, order='F') + +mpg_bs_poisson.method = 'UBRE' +mpg_bs_poisson.sp_criterion = -0.733688545240377 +mpg_bs_poisson.rank = 24 +mpg_bs_poisson.np = 24 +mpg_bs_poisson.params = np.array([ + 3.38155196812657, -0.2398057983025, 0.0385574655971876, + 0.0308789097162079, 0.322087207070371, 0.114222640046661, + -0.0703319473834318, -0.0932993942273026, -0.164529819124519, + -0.150860338924587, -0.19827414261489, -0.318132823476157, + -0.277920321049033, -0.291752287584618, -0.335850782440607, + 0.147266917321495, 0.0655746640077953, 0.00329634588440575, + -0.0178203244735351, -0.0949069908870388, -0.162736107333124, + -0.267760412623755, -0.31426029441775, -0.36537967845964 + ]) diff --git a/statsmodels/gam/tests/results/results_mpg_bs_poisson.r b/statsmodels/gam/tests/results/results_mpg_bs_poisson.r new file mode 100644 index 0000000..c8dfdb5 --- /dev/null +++ b/statsmodels/gam/tests/results/results_mpg_bs_poisson.r @@ -0,0 +1,49 @@ + +source("M:\\josef_new\\eclipse_ws\\statsmodels\\statsmodels_py34_pr\\tools\\R2nparray\\R\\R2nparray.R") +library('mgcv') +library('gamair') +d = data(mpg) + +#gam_a = gam(city.mpg ~ fuel + drive + s(weight,bs="cc",k=7) + s(hp,bs="cc",k=6), data = mpg, +# sp = c(6.46225497484073, 0.81532465890585)) + + +#gam_a = gam(city.mpg ~ fuel + drive + s(weight,bs="bs",k=7) + s(hp,bs="bs",k=6), data = mpg) + +sm_knots_w = c(1488., 1488., 1488., 1488., 1953.22222222, 2118.77777778, 2275., 2383.88888889, 2515.55555556, 2757.33333333, 3016.44444444, 3208.11111111, 4066., 4066., 4066., 4066.) +sm_knots_hp = c(48.0, 48.0, 48.0, 48.0, 68.0, 73.0, 88.0, 101.0, 116.0, 152.28571428571428, 288.0, 288.0, 288.0, 288.0) + +knots_w <- data.frame(weight=sm_knots_w) +knots_h <- data.frame(hp=sm_knots_hp) +gam_a = gam(city.mpg ~ fuel + drive + s(weight,bs="bs",k=12) + s(hp,bs="bs",k=10), data = mpg, knots=c(knots_w, knots_h), family=poisson) + + +pls = gam_a + +fname = "results_mpg_bs_poisson.py" +append = FALSE #TRUE + +#redirect output to file +sink(file=fname, append=append) +write_header() +mod_name = "mpg_bs_poisson." +cat("\nmpg_bs_poisson = Bunch()\n") +cat(paste("\n", mod_name, "smooth0 = Bunch()\n", sep="")) + +sm1 <- gam_a$smooth[[1]] +cat_items(sm1, prefix=paste(mod_name, "smooth0.", sep="")) +#, blacklist=c()) +cat("\n") +cat(convert.numeric(pls$smooth[[1]]$S[[1]], name=paste(mod_name, "smooth0.S", sep=""))) +cat("\n") +cat_items(pls, prefix=mod_name, blacklist=c("eq", "control")) +cat("\n") +pls_summ = summary(pls) +cat_items(pls_summ, prefix=mod_name, blacklist=c("eq", "control")) + +params = coef(pls) +cat("\n") +cat(convert.numeric(params, name=paste(mod_name, "params", sep=""))) + +# stop redirecting output +sink() diff --git a/statsmodels/gam/tests/results/results_pls.py b/statsmodels/gam/tests/results/results_pls.py new file mode 100644 index 0000000..87aafe9 --- /dev/null +++ b/statsmodels/gam/tests/results/results_pls.py @@ -0,0 +1,417 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + + +pls5 = Bunch() + +pls5.smooth = Bunch() +pls5.smooth.term = 'times' +pls5.smooth.bs_dim = 7 +pls5.smooth.dim = 1 +pls5.smooth.by = 'NA' +pls5.smooth.label = 's(times)' +pls5.smooth.sp = 1 +pls5.smooth.BD = np.array([ + -0.0322305472050642, 0.0332895629742452, -0.00907144581575865, + 0.00386174436551668, -0.00624916066961505, 0.0181385348730838, + 0.0292384327901831, -0.0717740723184547, 0.054914261809955, + -0.0158383049768667, 0.00626042823599089, -0.0103543594891998, + -0.011074996356557, 0.0526128870346165, -0.0930190975208449, + 0.0595200902721069, -0.0135721686724522, 0.00600098849448633, + 0.00625687187895293, -0.0145166841858048, 0.0594020303618183, + -0.0946831790103269, 0.0511018949689336, -0.0114519440129956, + -0.00994300967116444, 0.00619931821053046, -0.0156728054209229, + 0.0550549724656574, -0.0669161912708059, 0.0271416199423184, + 0.0177532485636497, -0.00581101171513275, 0.00344705658575325, + -0.00791532311608746, 0.0293751974079486, -0.0294748398076931 + ]).reshape(6, 6, order='F') + +pls5.smooth.xp = np.array([ + 2.4, 11.2, 17.8, 24.8, 31.2, 41, 57.6 + ]) +pls5.smooth.rank = 5 +pls5.smooth.df = 5 +pls5.smooth.null_space_dim = 0 +pls5.smooth.S_scale = 0.0263073404164214 +pls5.smooth.vn = 'times' +pls5.smooth.first_para = 1 +pls5.smooth.last_para = 5 +pls5.smooth.S = np.array([ + 1.63230340200229, -0.830028815742871, 0.901802118895566, + -0.00398686659390206, 0.518361615576888, -0.830028815742871, + 1.06825930315182, -1.16452750566645, 0.27022513792646, + -0.156140353580413, 0.901802118895566, -1.16452750566645, + 1.99828270457965, -1.0130803218067, 0.537502835084835, + -0.00398686659390202, 0.27022513792646, -1.0130803218067, + 1.00336165100886, -0.42156685405732, 0.518361615576888, + -0.156140353580413, 0.537502835084835, -0.42156685405732, + 0.53026887882367 + ]).reshape(5, 5, order='F') + +pls5.coefficients = np.array([ + 20.036025308233, -62.6817097954891, -51.0985219408637, + 42.0072653496657, 22.0294169083686 + ]) +pls5.residuals = np.array([ + -27.9959461270327, -29.9873153013088, -33.4871658551864, + -32.1806279683964, -36.2429080803179, -42.1809749693548, + -42.7967018255375, -41.6315122829302, -43.3634717352437, + -43.0512160670889, -40.6362776289091, -42.0362776289091, + -39.5456492135197, -37.7626842421689, -39.4270272919089, + -34.3534190712615, -34.2581579025003, -25.620485822405, + -9.20474188594053, -4.25666047069376, 0.973620269858165, + -1.98289744771254, 5.91710255228746, 5.91710255228746, + 2.01710255228746, -4.68289744771254, -11.4828974477125, + 11.2258684745284, -1.09750724577815, -10.3975072457782, + -31.7975072457782, -33.1975072457782, -15.9436533005046, + 2.75634669949536, 5.28012541131612, -24.0198745886839, + -13.6327100060003, 2.46728999399974, 10.2113015518619, + -19.0886984481381, -29.9886984481382, 28.7056211892181, + -46.2943788107819, -22.5562899896158, -32.2809708803244, + -52.3809708803244, -38.9809708803244, 9.5618305244081, + -38.5381694755919, -76.0381694755919, -54.8381694755919, + -50.1747823609389, -55.4747823609389, -57.1466027401597, + 4.55339725984031, -64.0315014095472, -25.5086559459592, + -12.2086559459592, -66.1950864997126, -60.0191254292233, + -54.3517512165439, -69.7295615244473, -37.7403864731789, + -44.8180470316897, -59.986700874309, -65.3734281515862, + -72.1088351546469, -60.8834427039697, -45.3341377885245, + -32.0341377885245, -7.8297215083258, -23.3552855597822, + -16.5552855597822, -36.3779785846358, -8.37797858463581, + 6.39642948584952, 22.0623645725674, -82.6278644992308, + 2.97213550076917, -44.1880620398212, -4.09724591449898, + -36.9460977704119, -15.5460977704119, 18.1539022295881, + 6.0922444071392, 4.22670173667689, -32.5314729126827, 26.4685270873173, + 32.6407254849959, -44.0843113342156, -1.69362292204985, + 27.696595904506, -41.2062580917222, -0.884830576710961, + -7.58483057671096, -13.0853931943938, -45.7920300180993, + -16.8154499346668, -61.2575969312418, 12.8304879487218, + -77.4317921021069, -116.331792102107, 8.65836551460932, + -25.5758467119592, -28.2758467119592, -95.7639644866625, + -35.4639644866625, -2.21637929151667, -38.4163792915167, + -36.3347820148442, -41.7779999343159, -58.240721990024, + -47.6160223101961, 3.1108829637715, -38.3891170362285, + 5.46970557944417, -22.2450916690901, -32.9450916690901, + -6.74997284201094, -19.2369803024212, -16.7419595489538, + -4.46697733958345, -1.48504457098591, -37.8385180985158, + -25.7385180985158, -24.0434946415046, -11.5970529121364, + -2.67189343191111, -30.2794900717192, -22.6274495550672, + -9.22744955506716, -23.7435355032739, -17.2959461270327 + ]) +pls5.fitted_values = np.array([ + 27.9959461270327, 28.6873153013088, 30.7871658551864, 32.1806279683964, + 33.5429080803179, 39.4809749693548, 40.0967018255375, 40.3315122829302, + 40.6634717352437, 40.3512160670889, 39.3362776289091, 39.3362776289091, + 36.8456492135197, 35.0626842421689, 34.0270272919089, 31.6534190712615, + 28.8581579025003, 25.620485822405, 6.50474188594053, 1.55666047069376, + -0.973620269858165, -11.3171025522875, -11.3171025522875, + -11.3171025522875, -11.3171025522875, -11.3171025522875, + -11.3171025522875, -13.9258684745284, -21.7024927542218, + -21.7024927542218, -21.7024927542218, -21.7024927542218, + -24.2563466994954, -24.2563466994954, -26.7801254113161, + -26.7801254113161, -29.2672899939997, -29.2672899939997, + -31.7113015518619, -31.7113015518619, -31.7113015518619, + -34.1056211892181, -34.1056211892181, -36.4437100103842, + -38.7190291196756, -38.7190291196756, -38.7190291196756, + -47.0618305244081, -47.0618305244081, -47.0618305244081, + -47.0618305244081, -48.9252176390611, -48.9252176390611, + -55.3533972598403, -55.3533972598403, -59.0684985904528, + -60.0913440540408, -60.0913440540408, -61.0049135002874, + -63.0808745707767, -63.5482487834561, -64.2704384755527, + -64.1596135268211, -63.5819529683103, -63.113299125691, + -57.7265718484138, -56.3911648453531, -51.6165572960303, + -49.7658622114755, -49.7658622114755, -45.6702784916742, + -41.0447144402178, -41.0447144402178, -35.9220214153642, + -35.9220214153642, -33.1964294858495, -27.4623645725674, + -24.4721355007692, -24.4721355007692, -21.4119379601788, + -11.902754085501, -8.65390222958812, -8.65390222958812, + -8.65390222958812, -2.0922444071392, 7.77329826332311, + 11.0314729126827, 11.0314729126827, 14.2592745150041, 26.6843113342156, + 37.8936229220499, 47.303404095494, 49.3062580917222, 55.784830576711, + 55.784830576711, 59.9853931943938, 61.7920300180993, 62.4154499346668, + 62.5575969312418, 62.1695120512782, 61.4317921021069, 61.4317921021069, + 60.9416344853907, 60.3758467119592, 60.3758467119592, 58.2639644866625, + 58.2639644866625, 49.1163792915167, 49.1163792915167, 41.7347820148442, + 40.4779999343159, 36.740721990024, 34.3160223101961, 27.6891170362285, + 27.6891170362285, 23.9302944205558, 22.2450916690901, 22.2450916690901, + 21.4499728420109, 17.9369803024212, 16.7419595489538, 15.1669773395835, + 12.1850445709859, 11.0385180985158, 11.0385180985158, 10.7434946415046, + 11.5970529121364, 13.3718934319111, 15.5794900717192, 19.9274495550672, + 19.9274495550672, 21.0435355032739, 27.9959461270327 + ]) +pls5.linear_predictors = np.array([ + 27.9959461270327, 28.6873153013088, 30.7871658551864, 32.1806279683964, + 33.5429080803179, 39.4809749693548, 40.0967018255375, 40.3315122829302, + 40.6634717352437, 40.3512160670889, 39.3362776289091, 39.3362776289091, + 36.8456492135197, 35.0626842421689, 34.0270272919089, 31.6534190712615, + 28.8581579025003, 25.620485822405, 6.50474188594053, 1.55666047069376, + -0.973620269858165, -11.3171025522875, -11.3171025522875, + -11.3171025522875, -11.3171025522875, -11.3171025522875, + -11.3171025522875, -13.9258684745284, -21.7024927542218, + -21.7024927542218, -21.7024927542218, -21.7024927542218, + -24.2563466994954, -24.2563466994954, -26.7801254113161, + -26.7801254113161, -29.2672899939997, -29.2672899939997, + -31.7113015518619, -31.7113015518619, -31.7113015518619, + -34.1056211892181, -34.1056211892181, -36.4437100103842, + -38.7190291196756, -38.7190291196756, -38.7190291196756, + -47.0618305244081, -47.0618305244081, -47.0618305244081, + -47.0618305244081, -48.9252176390611, -48.9252176390611, + -55.3533972598403, -55.3533972598403, -59.0684985904528, + -60.0913440540408, -60.0913440540408, -61.0049135002874, + -63.0808745707767, -63.5482487834561, -64.2704384755527, + -64.1596135268211, -63.5819529683103, -63.113299125691, + -57.7265718484138, -56.3911648453531, -51.6165572960303, + -49.7658622114755, -49.7658622114755, -45.6702784916742, + -41.0447144402178, -41.0447144402178, -35.9220214153642, + -35.9220214153642, -33.1964294858495, -27.4623645725674, + -24.4721355007692, -24.4721355007692, -21.4119379601788, + -11.902754085501, -8.65390222958812, -8.65390222958812, + -8.65390222958812, -2.0922444071392, 7.77329826332311, + 11.0314729126827, 11.0314729126827, 14.2592745150041, 26.6843113342156, + 37.8936229220499, 47.303404095494, 49.3062580917222, 55.784830576711, + 55.784830576711, 59.9853931943938, 61.7920300180993, 62.4154499346668, + 62.5575969312418, 62.1695120512782, 61.4317921021069, 61.4317921021069, + 60.9416344853907, 60.3758467119592, 60.3758467119592, 58.2639644866625, + 58.2639644866625, 49.1163792915167, 49.1163792915167, 41.7347820148442, + 40.4779999343159, 36.740721990024, 34.3160223101961, 27.6891170362285, + 27.6891170362285, 23.9302944205558, 22.2450916690901, 22.2450916690901, + 21.4499728420109, 17.9369803024212, 16.7419595489538, 15.1669773395835, + 12.1850445709859, 11.0385180985158, 11.0385180985158, 10.7434946415046, + 11.5970529121364, 13.3718934319111, 15.5794900717192, 19.9274495550672, + 19.9274495550672, 21.0435355032739, 27.9959461270327 + ]) +pls5.deviance = 180391.104352065 +pls5.null_deviance = 395017.34 +pls5.iter = 1 +pls5.weights = np.array([ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + ]) +pls5.prior_weights = np.array([ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 + ]) +pls5.df_null = 133 +pls5.y = np.array([ + 0, -1.3, -2.7, 0, -2.7, -2.7, -2.7, -1.3, -2.7, -2.7, -1.3, -2.7, -2.7, + -2.7, -5.4, -2.7, -5.4, 0, -2.7, -2.7, 0, -13.3, -5.4, -5.4, -9.3, -16, + -22.8, -2.7, -22.8, -32.1, -53.5, -54.9, -40.2, -21.5, -21.5, -50.8, + -42.9, -26.8, -21.5, -50.8, -61.7, -5.4, -80.4, -59, -71, -91.1, -77.7, + -37.5, -85.6, -123.1, -101.9, -99.1, -104.4, -112.5, -50.8, -123.1, + -85.6, -72.3, -127.2, -123.1, -117.9, -134, -101.9, -108.4, -123.1, + -123.1, -128.5, -112.5, -95.1, -81.8, -53.5, -64.4, -57.6, -72.3, + -44.3, -26.8, -5.4, -107.1, -21.5, -65.6, -16, -45.6, -24.2, 9.5, 4, + 12, -21.5, 37.5, 46.9, -17.4, 36.2, 75, 8.1, 54.9, 48.2, 46.9, 16, + 45.6, 1.3, 75, -16, -54.9, 69.6, 34.8, 32.1, -37.5, 22.8, 46.9, 10.7, + 5.4, -1.3, -21.5, -13.3, 30.8, -10.7, 29.4, 0, -10.7, 14.7, -1.3, 0, + 10.7, 10.7, -26.8, -14.7, -13.3, 0, 10.7, -14.7, -2.7, 10.7, -2.7, 10.7 + ]) +pls5.sig2 = 1405.72589061551 +pls5.edf = np.array([ + 0.893973446261888, 0.964904681210716, 0.910197466057859, + 0.951689945168155, 0.953288730104318 + ]) +pls5.edf1 = np.array([ + 0.981711944544246, 0.996264240571943, 0.982938111847731, + 0.994003453703398, 0.993140527833467 + ]) +pls5.hat = np.array([ + 0.0648926406262456, 0.0631966900584761, 0.0577531173208777, + 0.054095436609033, 0.050646403216983, 0.0414030519922767, + 0.0419393714799485, 0.0424407004729246, 0.0466884028411439, + 0.0488322930145467, 0.0519315914083648, 0.0519315914083648, + 0.0547480920171652, 0.0551378158184696, 0.055000499312335, + 0.0539763060097797, 0.0518779851195461, 0.0486811707669425, + 0.0278002106937094, 0.0236664981666194, 0.0218678587405494, + 0.0168702076728429, 0.0168702076728429, 0.0168702076728429, + 0.0168702076728429, 0.0168702076728429, 0.0168702076728429, + 0.0162099114442375, 0.0155969292014215, 0.0155969292014215, + 0.0155969292014215, 0.0155969292014215, 0.0158045134149012, + 0.0158045134149012, 0.0161857205884225, 0.0161857205884225, + 0.016715730291764, 0.016715730291764, 0.0173667434517008, + 0.0173667434517008, 0.0173667434517008, 0.0181085269560167, + 0.0181085269560167, 0.01890902644145, 0.0197350472655703, + 0.0197350472655703, 0.0197350472655703, 0.0226344032048916, + 0.0226344032048916, 0.0226344032048916, 0.0226344032048916, + 0.0231064605220144, 0.0231064605220144, 0.0236010474476975, + 0.0236010474476975, 0.0229362836765587, 0.0226341946832984, + 0.0226341946832984, 0.022331993508414, 0.0216507968090011, + 0.0215654072946402, 0.022307353392817, 0.0227976525538385, + 0.0241408042749582, 0.0249779152827976, 0.0312910194327127, + 0.0323419434967748, 0.0349400511510723, 0.0355272516690269, + 0.0355272516690269, 0.0361324218251331, 0.0358606650811796, + 0.0358606650811796, 0.0347553939582878, 0.0347553939582878, + 0.0339600300427633, 0.0320525342614235, 0.0310119683533198, + 0.0310119683533198, 0.0299615237560085, 0.0270931967217139, + 0.0263353031813311, 0.0263353031813311, 0.0263353031813311, + 0.0252733837531764, 0.0250806228807981, 0.0254302543661375, + 0.0254302543661375, 0.0259902742331093, 0.0301636177707758, + 0.0364915828338694, 0.0429804641044596, 0.044338813283762, + 0.0478470725808693, 0.0478470725808693, 0.0481431076555552, + 0.0465422084456883, 0.0448254504760713, 0.0416389240869886, + 0.0393309802887003, 0.0370523590709184, 0.0370523590709184, + 0.0359684768956268, 0.0349434963301099, 0.0349434963301099, + 0.0323665679080144, 0.0323665679080144, 0.0312847023217674, + 0.0312847023217674, 0.0364198732168461, 0.037600534161656, + 0.0414170598382483, 0.0440177673095073, 0.0505139848525673, + 0.0505139848525673, 0.0529266400408666, 0.0535167237447347, + 0.0535167237447347, 0.0536669701648488, 0.0531784414477218, + 0.0525292698619672, 0.0512621693606931, 0.0477153739370841, + 0.04661692338803, 0.04661692338803, 0.0475945362276516, + 0.054093097958197, 0.0620671413133406, 0.0689518115696408, + 0.0748549607794503, 0.0748549607794503, 0.0749105486240515, + 0.0648926406262456 + ]) +pls5.R = np.array([ + 0.419812589435278, -0.402017675646454, 0.488999441150794, + 3.98552866496736, 0, 4.86284047828201, 0, 0, 0, 0, -0.642048459345638, + 4.51912765154044, 0, 0, 0, -0.287016774143419, 0.0590176744049711, + 4.48152596952222, 0, 0, -0.881192283208667, -0.721748467517155, + 0.141530733755857, -0.975518963486962, 3.68675964176163 + ]).reshape(5, 5, order='F') + +pls5.sp = None +pls5.nsdf = 0 +pls5.Ve = np.array([ + 72.3041357618152, 1.66913532916499, 0.502555357170923, + -6.08025176950849, 12.003156582929, 1.66913532916499, 60.8548565958852, + 15.0519202741408, 3.17016170151452, 18.3724060596875, + 0.502555357170922, 15.0519202741408, 59.9017269122546, + 5.31826437849191, 9.33171431050043, -6.08025176950849, + 3.17016170151452, 5.31826437849191, 64.066598433814, 0.697025995194202, + 12.003156582929, 18.3724060596875, 9.33171431050043, 0.697025995194202, + 90.4171907271362 + ]).reshape(5, 5, order='F') + +pls5.Vp = np.array([ + 82.3434717904795, -0.200148537531833, 5.72440590880333, + -8.16239095841476, 17.8905796109278, -0.200148537531833, + 62.7551455396847, 13.6184531397824, 3.34367783462779, 18.6689815079065, + 5.72440590880333, 13.6184531397824, 65.7343350358227, 1.64716527529062, + 13.483565756752, -8.16239095841476, 3.34367783462779, 1.64716527529062, + 67.4465665922581, -2.30098498787076, 17.8905796109278, + 18.6689815079065, 13.483565756752, -2.30098498787076, 96.3416133118078 + ]).reshape(5, 5, order='F') + +pls5.rV = np.array([ + -0.0392296145497642, -0.148679582608057, 0.0918117471236096, + 0.00695938411477142, 0.0468995189236096, -0.00179994351487469, + 0.056193728117226, 0.144936306168724, -0.104973822562831, + -0.0915159363023183, -0.112299188421777, 0.00531211090361532, + -0.0656150416863762, -0.150002132732638, 0.073614883684395, + 0.168793284880097, -0.101999375560153, -0.0661656482881794, + -0.11825783453015, -0.035090842164745, 0.126224824188388, + 0.0945889794789336, 0.0929660567115005, -0.020649293225403, + 0.226516853583393 + ]).reshape(5, 5, order='F') + +pls5.gcv_ubre = 1456.9270648002 +pls5.aic = 1348.0527067527 +pls5.rank = 5 +pls5.gcv_ubre_dev = 1456.92706480021 +pls5.method = 'GCV' +pls5.full_sp = 1 +pls5.cmX = np.array([ + 0, 0, 0, 0, 0 + ]) +pls5.model = np.array([ + 0, -1.3, -2.7, 0, -2.7, -2.7, -2.7, -1.3, -2.7, -2.7, -1.3, -2.7, -2.7, + -2.7, -5.4, -2.7, -5.4, 0, -2.7, -2.7, 0, -13.3, -5.4, -5.4, -9.3, -16, + -22.8, -2.7, -22.8, -32.1, -53.5, -54.9, -40.2, -21.5, -21.5, -50.8, + -42.9, -26.8, -21.5, -50.8, -61.7, -5.4, -80.4, -59, -71, -91.1, -77.7, + -37.5, -85.6, -123.1, -101.9, -99.1, -104.4, -112.5, -50.8, -123.1, + -85.6, -72.3, -127.2, -123.1, -117.9, -134, -101.9, -108.4, -123.1, + -123.1, -128.5, -112.5, -95.1, -81.8, -53.5, -64.4, -57.6, -72.3, + -44.3, -26.8, -5.4, -107.1, -21.5, -65.6, -16, -45.6, -24.2, 9.5, 4, + 12, -21.5, 37.5, 46.9, -17.4, 36.2, 75, 8.1, 54.9, 48.2, 46.9, 16, + 45.6, 1.3, 75, -16, -54.9, 69.6, 34.8, 32.1, -37.5, 22.8, 46.9, 10.7, + 5.4, -1.3, -21.5, -13.3, 30.8, -10.7, 29.4, 0, -10.7, 14.7, -1.3, 0, + 10.7, 10.7, -26.8, -14.7, -13.3, 0, 10.7, -14.7, -2.7, 10.7, -2.7, + 10.7, 2.4, 2.6, 3.2, 3.6, 4, 6.2, 6.6, 6.8, 7.8, 8.2, 8.8, 8.8, 9.6, + 10, 10.2, 10.6, 11, 11.4, 13.2, 13.6, 13.8, 14.6, 14.6, 14.6, 14.6, + 14.6, 14.6, 14.8, 15.4, 15.4, 15.4, 15.4, 15.6, 15.6, 15.8, 15.8, 16, + 16, 16.2, 16.2, 16.2, 16.4, 16.4, 16.6, 16.8, 16.8, 16.8, 17.6, 17.6, + 17.6, 17.6, 17.8, 17.8, 18.6, 18.6, 19.2, 19.4, 19.4, 19.6, 20.2, 20.4, + 21.2, 21.4, 21.8, 22, 23.2, 23.4, 24, 24.2, 24.2, 24.6, 25, 25, 25.4, + 25.4, 25.6, 26, 26.2, 26.2, 26.4, 27, 27.2, 27.2, 27.2, 27.6, 28.2, + 28.4, 28.4, 28.6, 29.4, 30.2, 31, 31.2, 32, 32, 32.8, 33.4, 33.8, 34.4, + 34.8, 35.2, 35.2, 35.4, 35.6, 35.6, 36.2, 36.2, 38, 38, 39.2, 39.4, 40, + 40.4, 41.6, 41.6, 42.4, 42.8, 42.8, 43, 44, 44.4, 45, 46.6, 47.8, 47.8, + 48.8, 50.6, 52, 53.2, 55, 55, 55.4, 57.6 + ]).reshape(133, 2, order='F') + +pls5.assign = None +pls5.offset = np.array([ + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 + ]) +pls5.df_residual = 128.325945731197 +pls5.min_edf = 0 +pls5.optimizer = 'magic' +pls5.p_coeff = None +pls5.se = np.array([ + 9.07433037697435, 7.92181453580458, 8.10767136950078, 8.21258586513761, + 9.81537637137811 + ]) +pls5.p_t = None +pls5.p_pv = None +pls5.residual_df = 128.325945731197 +pls5.m = 1 +pls5.chi_sq = 147.917821150898 +pls5.s_pv = 8.54761661656479e-25 +pls5.scale = 1405.72589061551 +pls5.r_sq = 0.687640791604775 +pls5.n = 133 +pls5.dev_expl = 0.543333706940396 +pls5.edf = 4.67405426880294 +pls5.dispersion = 1405.72589061551 +pls5.pTerms_pv = None +pls5.pTerms_chi_sq = None +pls5.pTerms_df = None +pls5.cov_unscaled = np.array([ + 0.0585771894365725, -0.000142380914279238, 0.00407220635759709, + -0.0058065309979037, 0.0127269332736656, -0.000142380914279238, + 0.0446425195399984, 0.00968784400337069, 0.00237861296924945, + 0.0132806698891575, 0.00407220635759709, 0.00968784400337069, + 0.0467618441651097, 0.00117175424190942, 0.00959188832386668, + -0.0058065309979037, 0.00237861296924945, 0.00117175424190942, + 0.0479798850135184, -0.00163686605136315, 0.0127269332736656, + 0.0132806698891575, 0.00959188832386668, -0.00163686605136315, + 0.0685351347335742 + ]).reshape(5, 5, order='F') + +pls5.cov_scaled = np.array([ + 82.3434717904795, -0.200148537531833, 5.72440590880333, + -8.16239095841476, 17.8905796109278, -0.200148537531833, + 62.7551455396847, 13.6184531397824, 3.34367783462779, 18.6689815079065, + 5.72440590880333, 13.6184531397824, 65.7343350358227, 1.64716527529062, + 13.483565756752, -8.16239095841476, 3.34367783462779, 1.64716527529062, + 67.4465665922581, -2.30098498787076, 17.8905796109278, + 18.6689815079065, 13.483565756752, -2.30098498787076, 96.3416133118078 + ]).reshape(5, 5, order='F') + +pls5.s_table = np.array([ + 4.67405426880294, 5, 29.5835642301796, 8.54761661656479e-25 + ]).reshape(1, 4, order='F') + +pls5.method = 'GCV' +pls5.sp_criterion = 1456.9270648002 +pls5.rank = 5 +pls5.np = 5 +pls5.params = np.array([ + 20.036025308233, -62.6817097954891, -51.0985219408637, + 42.0072653496657, 22.0294169083686 + ]) diff --git a/statsmodels/gam/tests/test_gam.py b/statsmodels/gam/tests/test_gam.py new file mode 100644 index 0000000..0245774 --- /dev/null +++ b/statsmodels/gam/tests/test_gam.py @@ -0,0 +1,808 @@ +# pylint: disable=F841 +""" +unit test for GAM + +Author: Luca Puggini + +Created on 08/07/2015 +""" + +from __future__ import division +import os +import numpy as np +from numpy.testing import assert_allclose +import pandas as pd +from scipy.linalg import block_diag +import pytest + +from statsmodels.tools.linalg import matrix_sqrt +from statsmodels.gam.smooth_basis import ( + UnivariatePolynomialSmoother, PolynomialSmoother, BSplines, + GenericSmoothers, UnivariateCubicSplines, CyclicCubicSplines) +from statsmodels.gam.generalized_additive_model import ( + GLMGam, LogitGam, make_augmented_matrix, penalized_wls) +from statsmodels.gam.gam_cross_validation.gam_cross_validation import ( + MultivariateGAMCV, MultivariateGAMCVPath, _split_train_test_smoothers) +from statsmodels.gam.gam_penalties import (UnivariateGamPenalty, + MultivariateGamPenalty) +from statsmodels.gam.gam_cross_validation.cross_validators import KFold +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod.families.family import Gaussian +from statsmodels.genmod.generalized_linear_model import lm + +sigmoid = np.vectorize(lambda x: 1.0 / (1.0 + np.exp(-x))) + + +def polynomial_sample_data(): + """A polynomial of degree 4 + + poly = ax^4 + bx^3 + cx^2 + dx + e + second der = 12ax^2 + 6bx + 2c + integral from -1 to 1 of second der^2 is + (288 a^2)/5 + 32 a c + 8 (3 b^2 + c^2) + the gradient of the integral is der + [576*a/5 + 32 * c, 48*b, 32*a + 16*c, 0, 0] + + Returns + ------- + poly : smoother instance + y : ndarray + generated function values, demeaned + + """ + n = 10000 + x = np.linspace(-1, 1, n) + y = 2 * x ** 3 - x + y -= y.mean() + + degree = [4] + pol = PolynomialSmoother(x, degree) + + return pol, y + + +def integral(params): + d, c, b, a = params + itg = (288 * a ** 2) / 5 + (32 * a * c) + 8 * (3 * b ** 2 + c ** 2) + itg /= 2 + return itg + + +def grad(params): + d, c, b, a = params + grd = np.array([576 * a / 5 + 32 * c, 48 * b, 32 * a + 16 * c, 0]) + grd = grd[::-1] + return grd / 2 + + +def hessian(params): + hess = np.array([[576 / 5, 0, 32, 0], + [0, 48, 0, 0], + [32, 0, 16, 0], + [0, 0, 0, 0] + ]) + return hess / 2 + + +def cost_function(params, pol, y, alpha): + # this should be the MSE or log likelihood value + lin_pred = np.dot(pol.basis, params) + gaussian = Gaussian() + expval = gaussian.link.inverse(lin_pred) + loglike = gaussian.loglike(y, expval) + + # this is the vale of the GAM penalty. For the example polynomial + itg = integral(params) + + # return the cost function of the GAM for the given polynomial + return loglike - alpha * itg, loglike, itg + + +def test_gam_penalty(): + """ + test the func method of the gam penalty + :return: + """ + pol, y = polynomial_sample_data() + univ_pol = pol.smoothers[0] + alpha = 1 + gp = UnivariateGamPenalty(alpha=alpha, univariate_smoother=univ_pol) + + for _ in range(10): + params = np.random.randint(-2, 2, 4) + gp_score = gp.func(params) + itg = integral(params) + assert_allclose(gp_score, itg, atol=1.e-1) + + +def test_gam_gradient(): + # test the gam gradient for the example polynomial + np.random.seed(1) + pol, y = polynomial_sample_data() + + alpha = 1 + smoother = pol.smoothers[0] + gp = UnivariateGamPenalty(alpha=alpha, univariate_smoother=smoother) + + for _ in range(10): + params = np.random.uniform(-2, 2, 4) + params = np.array([1, 1, 1, 1]) + gam_grad = gp.deriv(params) + grd = grad(params) + + assert_allclose(gam_grad, grd, rtol=1.e-2, atol=1.e-2) + + +def test_gam_hessian(): + # test the deriv2 method of the gam penalty + np.random.seed(1) + pol, y = polynomial_sample_data() + univ_pol = pol.smoothers[0] + alpha = 1 + gp = UnivariateGamPenalty(alpha=alpha, univariate_smoother=univ_pol) + + for _ in range(10): + params = np.random.randint(-2, 2, 5) + gam_der2 = gp.deriv2(params) + hess = hessian(params) + hess = np.flipud(hess) + hess = np.fliplr(hess) + assert_allclose(gam_der2, hess, atol=1.e-13, rtol=1.e-3) + + +def test_approximation(): + np.random.seed(1) + poly, y = polynomial_sample_data() + alpha = 1 + for _ in range(10): + params = np.random.uniform(-1, 1, 4) + cost, err, itg = cost_function(params, poly, y, alpha) + glm_gam = GLMGam(y, smoother=poly, alpha=alpha) + # TODO: why do we need pen_weight=1 + gam_loglike = glm_gam.loglike(params, scale=1, pen_weight=1) + assert_allclose(err - itg, cost, rtol=1e-10) + assert_allclose(gam_loglike, cost, rtol=0.1) + + +def test_gam_glm(): + cur_dir = os.path.dirname(os.path.abspath(__file__)) + file_path = os.path.join(cur_dir, "results", "prediction_from_mgcv.csv") + data_from_r = pd.read_csv(file_path) + # dataset used to train the R model + x = data_from_r.x.values + y = data_from_r.y.values + + df = [10] + degree = [3] + bsplines = BSplines(x, degree=degree, df=df, include_intercept=True) + # y_mgcv is obtained from R with the following code + # g = gam(y~s(x, k = 10, bs = "cr"), data = data, scale = 80) + y_mgcv = np.asarray(data_from_r.y_est) + + alpha = 0.1 # chosen by trial and error + + glm_gam = GLMGam(y, smoother=bsplines, alpha=alpha) + res_glm_gam = glm_gam.fit(method='bfgs', max_start_irls=0, + disp=1, maxiter=10000, maxfun=5000) + y_gam0 = np.dot(bsplines.basis, res_glm_gam.params) + y_gam = np.asarray(res_glm_gam.fittedvalues) + assert_allclose(y_gam, y_gam0, rtol=1e-10) + + # plt.plot(x, y_gam, '.', label='gam') + # plt.plot(x, y_mgcv, '.', label='mgcv') + # plt.plot(x, y, '.', label='y') + # plt.legend() + # plt.show() + + assert_allclose(y_gam, y_mgcv, atol=1.e-2) + + +def test_gam_discrete(): + cur_dir = os.path.dirname(os.path.abspath(__file__)) + file_path = os.path.join(cur_dir, "results", "prediction_from_mgcv.csv") + data_from_r = pd.read_csv(file_path) + # dataset used to train the R model + x = data_from_r.x.values + y = data_from_r.ybin.values + + df = [10] + degree = [5] + bsplines = BSplines(x, degree=degree, df=df, include_intercept=True) + + # y_mgcv is obtained from R with the following code + # g = gam(y~s(x, k = 10, bs = "cr"), data = data, scale = 80) + y_mgcv = data_from_r.ybin_est + + alpha = 0.00002 + # gp = UnivariateGamPenalty(alpha=alpha, univariate_smoother=bsplines) + # lg_gam = LogitGam(y, bsplines.basis, penal=gp) + # + lg_gam = LogitGam(y, bsplines, alpha=alpha) + res_lg_gam = lg_gam.fit(maxiter=10000) + y_gam = np.dot(bsplines.basis, res_lg_gam.params) + y_gam = sigmoid(y_gam) + y_mgcv = sigmoid(y_mgcv) + + # plt.plot(x, y_gam, label='gam') + # plt.plot(x, y_mgcv, label='mgcv') + # plt.plot(x, y, '.', label='y') + # plt.ylim(-0.4, 1.4) + # plt.legend() + # plt.show() + + assert_allclose(y_gam, y_mgcv, rtol=1.e-10, atol=1.e-1) + + +def multivariate_sample_data(seed=1): + n = 1000 + x1 = np.linspace(-1, 1, n) + x2 = np.linspace(-10, 10, n) + x = np.vstack([x1, x2]).T + np.random.seed(seed) + y = x1 * x1 * x1 + x2 + np.random.normal(0, 0.01, n) + degree1 = 4 + degree2 = 3 + degrees = [degree1, degree2] + pol = PolynomialSmoother(x, degrees) + return x, y, pol + + +def test_multivariate_penalty(): + alphas = [1, 2] + weights = [1, 1] + np.random.seed(1) + x, y, pol = multivariate_sample_data() + + univ_pol1 = UnivariatePolynomialSmoother(x[:, 0], degree=pol.degrees[0]) + univ_pol2 = UnivariatePolynomialSmoother(x[:, 1], degree=pol.degrees[1]) + + gp1 = UnivariateGamPenalty(alpha=alphas[0], univariate_smoother=univ_pol1) + gp2 = UnivariateGamPenalty(alpha=alphas[1], univariate_smoother=univ_pol2) + with pytest.warns(UserWarning, match="weights is currently ignored"): + mgp = MultivariateGamPenalty(multivariate_smoother=pol, alpha=alphas, + weights=weights) + + for i in range(10): + params1 = np.random.randint(-3, 3, pol.smoothers[0].dim_basis) + params2 = np.random.randint(-3, 3, pol.smoothers[1].dim_basis) + params = np.concatenate([params1, params2]) + c1 = gp1.func(params1) + c2 = gp2.func(params2) + c = mgp.func(params) + assert_allclose(c, c1 + c2, atol=1.e-10, rtol=1.e-10) + + d1 = gp1.deriv(params1) + d2 = gp2.deriv(params2) + d12 = np.concatenate([d1, d2]) + d = mgp.deriv(params) + assert_allclose(d, d12) + + h1 = gp1.deriv2(params1) + h2 = gp2.deriv2(params2) + h12 = block_diag(h1, h2) + h = mgp.deriv2(params) + assert_allclose(h, h12) + + +def test_generic_smoother(): + x, y, poly = multivariate_sample_data() + alphas = [0.4, 0.7] + weights = [1, 1] # noqa: F841 + + gs = GenericSmoothers(poly.x, poly.smoothers) + gam_gs = GLMGam(y, smoother=gs, alpha=alphas) + gam_gs_res = gam_gs.fit() + + gam_poly = GLMGam(y, smoother=poly, alpha=alphas) + gam_poly_res = gam_poly.fit() + + assert_allclose(gam_gs_res.params, gam_poly_res.params) + + +def test_multivariate_gam_1d_data(): + cur_dir = os.path.dirname(os.path.abspath(__file__)) + file_path = os.path.join(cur_dir, "results", "prediction_from_mgcv.csv") + data_from_r = pd.read_csv(file_path) + # dataset used to train the R model + x = data_from_r.x.values + y = data_from_r.y + + df = [10] + degree = [3] + bsplines = BSplines(x, degree=degree, df=df) + # y_mgcv is obtained from R with the following code + # g = gam(y~s(x, k = 10, bs = "cr"), data = data, scale = 80) + y_mgcv = data_from_r.y_est + + # alpha is by manually adjustment to reduce discrepancy in fittedvalues + alpha = [0.0168 * 0.0251 / 2 * 500] + gp = MultivariateGamPenalty(bsplines, alpha=alpha) # noqa: F841 + + glm_gam = GLMGam(y, exog=np.ones((len(y), 1)), smoother=bsplines, + alpha=alpha) + # "nm" converges to a different params, "bfgs" params are close to pirls + # res_glm_gam = glm_gam.fit(method='nm', max_start_irls=0, + # disp=1, maxiter=10000, maxfun=5000) + res_glm_gam = glm_gam.fit(method='pirls', max_start_irls=0, + disp=1, maxiter=10000) + y_gam = res_glm_gam.fittedvalues + + # plt.plot(x, y_gam, '.', label='gam') + # plt.plot(x, y_mgcv, '.', label='mgcv') + # plt.plot(x, y, '.', label='y') + # plt.legend() + # plt.show() + + assert_allclose(y_gam, y_mgcv, atol=0.01) + + +def test_multivariate_gam_cv(): + # SMOKE test + # no test is performed. It only checks that there isn't any runtime error + + def cost(x1, x2): + return np.linalg.norm(x1 - x2) / len(x1) + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + file_path = os.path.join(cur_dir, "results", "prediction_from_mgcv.csv") + data_from_r = pd.read_csv(file_path) + # dataset used to train the R model + x = data_from_r.x.values + y = data_from_r.y.values + + df = [10] + degree = [5] + bsplines = BSplines(x, degree=degree, df=df) + # y_mgcv is obtained from R with the following code + # g = gam(y~s(x, k = 10, bs = "cr"), data = data, scale = 80) + + alphas = [0.0251] + alphas = [2] + cv = KFold(3) + + gp = MultivariateGamPenalty(bsplines, alpha=alphas) # noqa: F841 + gam_cv = MultivariateGAMCV(smoother=bsplines, alphas=alphas, gam=GLMGam, + cost=cost, endog=y, exog=None, cv_iterator=cv) + gam_cv_res = gam_cv.fit() # noqa: F841 + + +def test_multivariate_gam_cv_path(): + def sample_metric(y1, y2): + return np.linalg.norm(y1 - y2) / len(y1) + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + file_path = os.path.join(cur_dir, "results", "prediction_from_mgcv.csv") + + data_from_r = pd.read_csv(file_path) + + # dataset used to train the R model + x = data_from_r.x.values + y = data_from_r.y.values + se_from_mgcv = data_from_r.y_est_se # noqa: F841 + y_mgcv = data_from_r.y_mgcv_gcv # noqa: F841 + + df = [10] + degree = [6] + + bsplines = BSplines(x, degree=degree, df=df, include_intercept=True) + + gam = GLMGam + alphas = [np.linspace(0, 2, 10)] + k = 3 + cv = KFold(k_folds=k, shuffle=True) + + # Note: kfold cv uses random shuffle + np.random.seed(123) + gam_cv = MultivariateGAMCVPath(smoother=bsplines, alphas=alphas, gam=gam, + cost=sample_metric, endog=y, exog=None, + cv_iterator=cv) + gam_cv_res = gam_cv.fit() # noqa: F841 + + glm_gam = GLMGam(y, smoother=bsplines, alpha=gam_cv.alpha_cv) + res_glm_gam = glm_gam.fit(method='irls', max_start_irls=0, + disp=1, maxiter=10000) + y_est = res_glm_gam.predict(bsplines.basis) + + # plt.plot(x, y, '.', label='y') + # plt.plot(x, y_est, '.', label='y est') + # plt.plot(x, y_mgcv, '.', label='y mgcv') + # plt.legend() + # plt.show() + + # The test compares to result obtained with GCV and not KFOLDS CV. + # This is because MGCV does not support KFOLD CV + assert_allclose(data_from_r.y_mgcv_gcv, y_est, atol=1.e-1, rtol=1.e-1) + + # Note: kfold cv uses random shuffle + np.random.seed(123) + alpha_cv, res_cv = glm_gam.select_penweight_kfold(alphas=alphas, k_folds=3) + assert_allclose(alpha_cv, gam_cv.alpha_cv, rtol=1e-12) + + +def test_train_test_smoothers(): + n = 6 + x = np.zeros(shape=(n, 2)) + x[:, 0] = range(6) + x[:, 1] = range(6, 12) + poly = PolynomialSmoother(x, degrees=[3, 3]) + train_index = list(range(3)) + test_index = list(range(3, 6)) + train_smoother, test_smoother = _split_train_test_smoothers(poly.x, poly, + train_index, + test_index) + + expected_train_basis = [[0., 0., 0., 6., 36., 216.], + [1., 1., 1., 7., 49., 343.], + [2., 4., 8., 8., 64., 512.]] + assert_allclose(train_smoother.basis, expected_train_basis) + + expected_test_basis = [[3., 9., 27., 9., 81., 729.], + [4., 16., 64., 10., 100., 1000.], + [5., 25., 125., 11., 121., 1331.]] + assert_allclose(test_smoother.basis, expected_test_basis) + + +def test_get_sqrt(): + n = 1000 + np.random.seed(1) + x = np.random.normal(0, 1, (n, 3)) + x2 = np.dot(x.T, x) + + sqrt_x2 = matrix_sqrt(x2) + + x2_reconstruction = np.dot(sqrt_x2.T, sqrt_x2) + assert_allclose(x2_reconstruction, x2) + + +def test_make_augmented_matrix(): + np.random.seed(1) + n = 500 + x = np.random.uniform(-1, 1, (n, 3)) + s = np.dot(x.T, x) + y = np.array(list(range(n))) + w = np.random.uniform(0, 1, n) + nobs, n_columns = x.shape + + # matrix_sqrt removes redundant rows, + # if alpha is zero, then no augmentation is needed + alpha = 0 + aug_y, aug_x, aug_w = make_augmented_matrix(y, x, alpha * s, w) + expected_aug_x = x + assert_allclose(aug_x, expected_aug_x) + expected_aug_y = y + expected_aug_y[:nobs] = y + assert_allclose(aug_y, expected_aug_y) + expected_aug_w = w + assert_allclose(aug_w, expected_aug_w) + + alpha = 1 + aug_y, aug_x, aug_w = make_augmented_matrix(y, x, s, w) + rs = matrix_sqrt(alpha * s) + # alternative version to matrix_sqrt using cholesky is not available + # rs = sp.linalg.cholesky(alpha * s) + assert_allclose(np.dot(rs.T, rs), alpha * s) + expected_aug_x = np.vstack([x, rs]) + assert_allclose(aug_x, expected_aug_x) + expected_aug_y = np.zeros(shape=(nobs + n_columns,)) + expected_aug_y[:nobs] = y + assert_allclose(aug_y, expected_aug_y) + expected_aug_w = np.concatenate((w, [1] * n_columns), axis=0) + assert_allclose(aug_w, expected_aug_w) + + +def test_penalized_wls(): + np.random.seed(1) + n = 20 + p = 3 + x = np.random.normal(0, 1, (n, 3)) + y = x[:, 1] - x[:, 2] + np.random.normal(0, .1, n) + y -= y.mean() + + weights = np.ones(shape=(n,)) + s = np.random.normal(0, 1, (p, p)) + + pen_wls_res = penalized_wls(y, x, 0 * s, weights) + ls_res = lm.OLS(y, x).fit() + + assert_allclose(ls_res.params, pen_wls_res.params) + + +def test_cyclic_cubic_splines(): + cur_dir = os.path.dirname(os.path.abspath(__file__)) + file_path = os.path.join(cur_dir, "results", + "cubic_cyclic_splines_from_mgcv.csv") + data_from_r = pd.read_csv(file_path) + + x = data_from_r[['x0', 'x2']].values + y = data_from_r['y'].values + y_est_mgcv = data_from_r[['y_est']].values # noqa: F841 + s_mgcv = data_from_r[['s(x0)', 's(x2)']].values + + dfs = [10, 10] + ccs = CyclicCubicSplines(x, df=dfs) + alpha = [0.05 / 2, 0.0005 / 2] + # TODO: if alpha changes in pirls this should be updated + + gam = GLMGam(y, smoother=ccs, alpha=alpha) + gam_res = gam.fit(method='pirls') + + s0 = np.dot(ccs.basis[:, ccs.mask[0]], + gam_res.params[ccs.mask[0]]) + # TODO: Mean has to be removed + # removing mean could be replaced by options for intercept handling + s0 -= s0.mean() + + s1 = np.dot(ccs.basis[:, ccs.mask[1]], + gam_res.params[ccs.mask[1]]) + s1 -= s1.mean() # TODO: Mean has to be removed + + # plt.subplot(2, 1, 1) + # plt.plot(x[:, 0], s0, '.', label='s0') + # plt.plot(x[:, 0], s_mgcv[:, 0], '.', label='s0_mgcv') + # plt.legend(loc='best') + # + # plt.subplot(2, 1, 2) + # plt.plot(x[:, 1], s1, '.', label='s1_est') + # plt.plot(x[:, 1], s_mgcv[:, 1], '.', label='s1_mgcv') + # plt.legend(loc='best') + # plt.show() + + assert_allclose(s0, s_mgcv[:, 0], atol=0.02) + assert_allclose(s1, s_mgcv[:, 1], atol=0.33) + + +def test_multivariate_cubic_splines(): + np.random.seed(0) + from statsmodels.gam.smooth_basis import CubicSplines + + n = 500 + x1 = np.linspace(-3, 3, n) + x2 = np.linspace(0, 1, n)**2 + + x = np.vstack([x1, x2]).T + y1 = np.sin(x1) / x1 + y2 = x2 * x2 + y0 = y1 + y2 + # need small enough noise variance to get good estimate for this test + y = y0 + np.random.normal(0, .3 / 2, n) + y -= y.mean() + y0 -= y0.mean() + + alphas = [1e-3, 1e-3] + cs = CubicSplines(x, df=[10, 10], constraints='center') + + gam = GLMGam(y, exog=np.ones((n, 1)), smoother=cs, alpha=alphas) + gam_res = gam.fit(method='pirls') + + y_est = gam_res.fittedvalues + y_est -= y_est.mean() + + # cut the tails + index = list(range(50, n - 50)) + y_est = y_est[index] + y0 = y0[index] + y = y[index] + + # plt.plot(y_est, label='y est') + # plt.plot(y0, label='y0') + # plt.plot(y, '.', label='y') + # plt.legend(loc='best') + # plt.show() + + assert_allclose(y_est, y0, atol=0.04) + + +def test_glm_pirls_compatibility(): + np.random.seed(0) + + n = 500 + x1 = np.linspace(-3, 3, n) + x2 = np.random.rand(n) + + x = np.vstack([x1, x2]).T + y1 = np.sin(x1) / x1 + y2 = x2 * x2 + y0 = y1 + y2 + y = y0 + np.random.normal(0, .3, n) + y -= y.mean() + y0 -= y0.mean() + + # TODO: we have now alphas == alphas_glm + alphas = [5.75] * 2 + alphas_glm = [1.2] * 2 # noqa: F841 + # using constraints avoids singular exog. + cs = BSplines(x, df=[10, 10], degree=[3, 3], constraints='center') + + gam_pirls = GLMGam(y, smoother=cs, alpha=alphas) + gam_glm = GLMGam(y, smoother=cs, alpha=alphas) + + gam_res_glm = gam_glm.fit(method='nm', max_start_irls=0, + disp=1, maxiter=20000, maxfun=10000) + gam_res_glm = gam_glm.fit(start_params=gam_res_glm.params, + method='bfgs', max_start_irls=0, + disp=1, maxiter=20000, maxfun=10000) + gam_res_pirls = gam_pirls.fit() + + y_est_glm = np.dot(cs.basis, gam_res_glm.params) + y_est_glm -= y_est_glm.mean() + y_est_pirls = np.dot(cs.basis, gam_res_pirls.params) + y_est_pirls -= y_est_pirls.mean() + + # plt.plot(y_est_pirls) + # plt.plot(y_est_glm) + # plt.plot(y, '.') + # plt.show() + assert_allclose(gam_res_glm.params, gam_res_pirls.params, atol=5e-5, + rtol=5e-5) + assert_allclose(y_est_glm, y_est_pirls, atol=5e-5) + + +def test_zero_penalty(): + x, y, poly = multivariate_sample_data() + alphas = [0, 0] + gam_gs = GLMGam(y, smoother=poly, alpha=alphas) + gam_gs_res = gam_gs.fit() + y_est_gam = gam_gs_res.predict() + + glm = GLM(y, poly.basis).fit() + y_est = glm.predict() + + assert_allclose(y_est, y_est_gam) + + +def test_spl_s(): + # matrix from R + spl_s_R = [[0, 0, 0.000000000, 0.000000000, 0.000000000, 0.000000000], + [0, 0, 0.000000000, 0.000000000, 0.000000000, 0.000000000], + [0, 0, 0.001400000, 0.000200000, -0.001133333, -0.001000000], + [0, 0, 0.000200000, 0.002733333, 0.001666667, -0.001133333], + [0, 0, -0.001133333, 0.001666667, 0.002733333, 0.000200000], + [0, 0, -0.001000000, -0.001133333, 0.000200000, 0.001400000]] + + np.random.seed(1) + x = np.random.normal(0, 1, 10) + xk = np.array([0.2, .4, .6, .8]) + cs = UnivariateCubicSplines(x, df=4) + cs.knots = xk + + spl_s = cs._splines_s() + assert_allclose(spl_s_R, spl_s, atol=4.e-10) + + +def test_partial_values2(): + np.random.seed(0) + n = 1000 + x = np.random.uniform(0, 1, (n, 2)) + x = x - x.mean() + y = x[:, 0] * x[:, 0] + np.random.normal(0, .01, n) + y -= y.mean() + alpha = 0.0 + # BUG: mask is incorrect if exog is not None, start_idx missing + # bsplines = BSplines(x, degree=[3] * 2, df=[10] * 2) + # glm_gam = GLMGam(y, exog=np.ones((len(y), 1)), smoother=bsplines, + # alpha=alpha) + bsplines = BSplines(x, degree=[3] * 2, df=[10] * 2, + include_intercept=[True, False]) + glm_gam = GLMGam(y, smoother=bsplines, alpha=alpha) + res_glm_gam = glm_gam.fit(method='pirls', max_start_irls=0, + disp=0, maxiter=5000) + glm = GLM(y, bsplines.basis) # noqa: F841 + + # case with constant column in exog is currently wrong + # ex = np.column_stack((np.zeros((len(y), 1)), bsplines.smoothers[0].basis, + # np.zeros_like(bsplines.smoothers[1].basis) )) + ex = np.column_stack((bsplines.smoothers[0].basis, + np.zeros_like(bsplines.smoothers[1].basis))) + + y_est = res_glm_gam.predict(ex, transform=False) + y_partial_est, se = res_glm_gam.partial_values(0) + + assert_allclose(y_est, y_partial_est, atol=0.05) + assert se.min() < 100 + # TODO: sometimes the SE reported by partial_values is very large. + # This should be double checked + + +def test_partial_values(): + # this test is only approximate because we don't use the same spline + # basis functions (knots) as mgcv + cur_dir = os.path.dirname(os.path.abspath(__file__)) + file_path = os.path.join(cur_dir, "results", "prediction_from_mgcv.csv") + + data_from_r = pd.read_csv(file_path) + + # dataset used to train the R model + x = data_from_r.x.values + y = data_from_r.y.values + se_from_mgcv = data_from_r.y_est_se + df = [10] + degree = [6] + bsplines = BSplines(x, degree=degree, df=df, include_intercept=True) + + # TODO: alpha found by trial and error to pass assert + alpha = 0.025 / 115 * 500 + glm_gam = GLMGam(y, smoother=bsplines, alpha=alpha) + res_glm_gam = glm_gam.fit(maxiter=10000, method='bfgs') + # TODO: if IRLS is used res_glm_gam has not partial_values. + + univ_bsplines = bsplines.smoothers[0] # noqa: F841 + hat_y, se = res_glm_gam.partial_values(0) + + assert_allclose(hat_y, data_from_r["y_est"], rtol=0, atol=0.008) + # TODO: bug missing scale + bug_fact = np.sqrt(res_glm_gam.scale) * 0.976 # this is = 0.106 + assert_allclose(se, se_from_mgcv * bug_fact, rtol=0, atol=0.008) + + +@pytest.mark.matplotlib +def test_partial_plot(): + # verify that plot and partial_values method agree + # the model only has one component so partial values is the same as + # fittedvalues + # Generate a plot to visualize analyze the result. + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + file_path = os.path.join(cur_dir, "results", "prediction_from_mgcv.csv") + + data_from_r = pd.read_csv(file_path) + + # dataset used to train the R model + x = data_from_r.x.values + y = data_from_r.y.values + se_from_mgcv = data_from_r.y_est_se # noqa: F841 + df = [10] + degree = [6] + bsplines = BSplines(x, degree=degree, df=df) + + alpha = 0.03 + glm_gam = GLMGam(y, smoother=bsplines, alpha=alpha) + res_glm_gam = glm_gam.fit(maxiter=10000, method='bfgs') + fig = res_glm_gam.plot_partial(0) + xp, yp = fig.axes[0].get_children()[0].get_data() + # Note xp and yp are sorted by x + sort_idx = np.argsort(x) + hat_y, se = res_glm_gam.partial_values(0) + # assert that main plot line is the prediction + assert_allclose(xp, x[sort_idx]) + assert_allclose(yp, hat_y[sort_idx]) + + # Uncomment to visualize the plot + # import matplotlib.pyplot as plt + # res_glm_gam.plot_partial(0) + # plt.plot(x, y, '.') + # plt.show() + + +def test_cov_params(): + + np.random.seed(0) + n = 1000 + x = np.random.uniform(0, 1, (n, 2)) + x = x - x.mean() + y = x[:, 0] * x[:, 0] + np.random.normal(0, .01, n) + y -= y.mean() + + bsplines = BSplines(x, degree=[3] * 2, df=[10] * 2, constraints='center') + alpha = [0, 0] + glm_gam = GLMGam(y, smoother=bsplines, alpha=alpha) + res_glm_gam = glm_gam.fit(method='pirls', max_start_irls=0, + disp=0, maxiter=5000) + glm = GLM(y, bsplines.basis) + res_glm = glm.fit() + + assert_allclose(res_glm.cov_params(), res_glm_gam.cov_params(), + rtol=0.0025) + + alpha = 1e-13 + glm_gam = GLMGam(y, smoother=bsplines, alpha=alpha) + res_glm_gam = glm_gam.fit(method='pirls', max_start_irls=0, + disp=0, maxiter=5000) + + assert_allclose(res_glm.cov_params(), res_glm_gam.cov_params(), + atol=1e-10) + + res_glm_gam = glm_gam.fit(method='bfgs', max_start_irls=0, + disp=0, maxiter=5000, maxfun=5000) + + assert_allclose(res_glm.cov_params(), res_glm_gam.cov_params(), + rtol=1e-4, atol=1e-8) diff --git a/statsmodels/gam/tests/test_penalized.py b/statsmodels/gam/tests/test_penalized.py new file mode 100644 index 0000000..885cb7b --- /dev/null +++ b/statsmodels/gam/tests/test_penalized.py @@ -0,0 +1,664 @@ +# -*- coding: utf-8 -*- +""" +unit test for GAM + +Author: Josef Perktold + +""" + +import os + +import numpy as np +from numpy.testing import assert_allclose, assert_equal, assert_ +import pandas as pd + +import patsy + +from statsmodels.discrete.discrete_model import Poisson, Logit, Probit +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod.families import family +from statsmodels.sandbox.regression.penalized import TheilGLS +from statsmodels.base._penalized import PenalizedMixin +import statsmodels.base._penalties as smpen + +from statsmodels.gam.smooth_basis import (BSplines, CyclicCubicSplines) +from statsmodels.gam.generalized_additive_model import ( + GLMGam, GLMGamResults, GLMGamResultsWrapper) + +from statsmodels.tools.linalg import matrix_sqrt, transf_constraints + +from .results import results_pls, results_mpg_bs, results_mpg_bs_poisson + + +class PoissonPenalized(PenalizedMixin, Poisson): + pass + + +class LogitPenalized(PenalizedMixin, Logit): + pass + + +class ProbitPenalized(PenalizedMixin, Probit): + pass + + +class GLMPenalized(PenalizedMixin, GLM): + pass + + +cur_dir = os.path.dirname(os.path.abspath(__file__)) + +file_path = os.path.join(cur_dir, "results", "motorcycle.csv") +data_mcycle = pd.read_csv(file_path) + +file_path = os.path.join(cur_dir, "results", "autos.csv") +df_autos_ = pd.read_csv(file_path) +df_autos = df_autos_[['city_mpg', 'fuel', 'drive', 'weight', 'hp']].dropna() + + +class CheckGAMMixin(object): + + @classmethod + def _init(cls): + # TODO: CyclicCubicSplines raises when using pandas + cc_h = CyclicCubicSplines(np.asarray(data_mcycle['times']), df=[6]) + + constraints = np.atleast_2d(cc_h.basis.mean(0)) + transf = transf_constraints(constraints) + + exog = cc_h.basis.dot(transf) + penalty_matrix = transf.T.dot(cc_h.penalty_matrices[0]).dot(transf) + restriction = matrix_sqrt(penalty_matrix) + return exog, penalty_matrix, restriction + + def test_params(self): + res1 = self.res1 + res2 = self.res2 + assert_allclose(res1.params, res2.params, rtol=1e-5) + assert_allclose(np.asarray(res1.cov_params()), + res2.Vp * self.covp_corrfact, rtol=1e-6, atol=1e-9) + + assert_allclose(res1.scale, res2.scale * self.covp_corrfact, + rtol=1e-8) + + assert_allclose(np.asarray(res1.bse), + res2.se * np.sqrt(self.covp_corrfact), + rtol=1e-6, atol=1e-9) + + def test_fitted(self): + res1 = self.res1 + res2 = self.res2 + assert_allclose(res1.fittedvalues, res2.fitted_values, + rtol=self.rtol_fitted) + + +class TestTheilPLS5(CheckGAMMixin): + + cov_type = 'data-prior' + + @classmethod + def setup_class(cls): + exog, penalty_matrix, restriction = cls._init() + endog = data_mcycle['accel'] + modp = TheilGLS(endog, exog, r_matrix=restriction) + # scaling of penweith in R mgcv + s_scale_r = 0.02630734 + # Theil penweight uses preliminary sigma2_e to scale penweight + sigma_e = 1405.7950179165323 + cls.pw = pw = 1 / sigma_e / s_scale_r + cls.res1 = modp.fit(pen_weight=pw, cov_type=cls.cov_type) + cls.res2 = results_pls.pls5 + + cls.rtol_fitted = 1e-7 + cls.covp_corrfact = 0.99786932844203202 + + def test_cov_robust(self): + res1 = self.res1 + res2 = self.res2 + pw = res1.penalization_factor + res1 = res1.model.fit(pen_weight=pw, cov_type='sandwich') + assert_allclose(np.asarray(res1.cov_params()), + res2.Ve * self.covp_corrfact, rtol=1e-4) + + +class TestGLMPenalizedPLS5(CheckGAMMixin): + + cov_type = 'nonrobust' + + @classmethod + def setup_class(cls): + exog, penalty_matrix, restriction = cls._init() + endog = data_mcycle['accel'] + pen = smpen.L2ContraintsPenalty(restriction=restriction) + mod = GLMPenalized(endog, exog, family=family.Gaussian(), + penal=pen) + # scaling of penweight in R mgcv + s_scale_r = 0.02630734 + # set pen_weight to correspond to R mgcv example + cls.pw = mod.pen_weight = 1 / s_scale_r / 2 + cls.res1 = mod.fit(cov_type=cls.cov_type, method='bfgs', maxiter=100, + disp=0, trim=False, scale='x2') + cls.res2 = results_pls.pls5 + + cls.rtol_fitted = 1e-5 + # edf is currently not available with PenalizedMixin + # need correction for difference in scale denominator + cls.covp_corrfact = 1.0025464444310588 + + def _test_cov_robust(self): + # TODO: HC0 differs from Theil sandwich, difference is large + res1 = self.res1 + res2 = self.res2 + pw = res1.model.pen_weight + res1 = res1.model.fit(pen_weight=pw, cov_type='HC0') + assert_allclose(np.asarray(res1.cov_params()), + res2.Ve * self.covp_corrfact, rtol=1e-4) + + +class TestGAM5Pirls(CheckGAMMixin): + + cov_type = 'nonrobust' + + @classmethod + def setup_class(cls): + s_scale = 0.0263073404164214 + + x = data_mcycle['times'].values + endog = data_mcycle['accel'] + cc = CyclicCubicSplines(x, df=[6], constraints='center') + gam_cc = GLMGam(endog, smoother=cc, alpha=1 / s_scale / 2) + cls.res1 = gam_cc.fit() + cls.res2 = results_pls.pls5 + + cls.rtol_fitted = 1e-12 + # cls.covp_corrfact = 1.0025464444310588 # without edf + # edf is implemented + cls.covp_corrfact = 1 + + +class TestGAM5Bfgs(CheckGAMMixin): + + cov_type = 'nonrobust' + + @classmethod + def setup_class(cls): + s_scale = 0.0263073404164214 + + x = data_mcycle['times'].values + endog = data_mcycle['accel'] + cc = CyclicCubicSplines(x, df=[6], constraints='center') + gam_cc = GLMGam(endog, smoother=cc, alpha=1 / s_scale / 2) + cls.res1 = gam_cc.fit(method='bfgs') + cls.res2 = results_pls.pls5 + + cls.rtol_fitted = 1e-5 + # cls.covp_corrfact = 1.0025464444310588 # without edf + # edf is implemented + cls.covp_corrfact = 1 + + def test_predict(self): + res1 = self.res1 + res2 = self.res2 + predicted = res1.predict(None, res1.model.smoother.x[2:4]) + assert_allclose(predicted, res1.fittedvalues[2:4], + rtol=1e-13) + assert_allclose(predicted, res2.fitted_values[2:4], + rtol=self.rtol_fitted) + + +class TestGAM6Pirls(object): + + @classmethod + def setup_class(cls): + s_scale = 0.0263073404164214 + + cc = CyclicCubicSplines(data_mcycle['times'].values, df=[6]) + gam_cc = GLMGam(data_mcycle['accel'], smoother=cc, + alpha=1 / s_scale / 2) + cls.res1 = gam_cc.fit() + + def test_fitted(self): + res1 = self.res1 + pred = res1.get_prediction() + self.rtol_fitted = 1e-7 + pls6_fittedvalues = np.array([ + 2.45008146537851, 3.14145063965465, 5.24130119353225, + 6.63476330674223, 7.99704341866374, 13.9351103077006, + 14.5508371638833, 14.785647621276, 15.1176070735895, + 14.8053514054347, 13.790412967255, 13.790412967255, + 11.2997845518655, 9.51681958051473, 8.4811626302547]) + assert_allclose(res1.fittedvalues[:15], pls6_fittedvalues, + rtol=self.rtol_fitted) + assert_allclose(pred.predicted_mean[:15], pls6_fittedvalues, + rtol=self.rtol_fitted) + + predicted = res1.predict(None, res1.model.smoother.x[2:4]) + assert_allclose(predicted, pls6_fittedvalues[2:4], + rtol=self.rtol_fitted) + + +class TestGAM6Bfgs(object): + + @classmethod + def setup_class(cls): + s_scale = 0.0263073404164214 + + cc = CyclicCubicSplines(data_mcycle['times'].values, df=[6]) + gam_cc = GLMGam(data_mcycle['accel'], smoother=cc, + alpha=1 / s_scale / 2) + cls.res1 = gam_cc.fit(method='bfgs') + + def test_fitted(self): + res1 = self.res1 + pred = res1.get_prediction() + self.rtol_fitted = 1e-5 + pls6_fittedvalues = np.array([ + 2.45008146537851, 3.14145063965465, 5.24130119353225, + 6.63476330674223, 7.99704341866374, 13.9351103077006, + 14.5508371638833, 14.785647621276, 15.1176070735895, + 14.8053514054347, 13.790412967255, 13.790412967255, + 11.2997845518655, 9.51681958051473, 8.4811626302547]) + assert_allclose(res1.fittedvalues[:15], pls6_fittedvalues, + rtol=self.rtol_fitted) + assert_allclose(pred.predicted_mean[:15], pls6_fittedvalues, + rtol=self.rtol_fitted) + + +class TestGAM6Bfgs0(object): + + @classmethod + def setup_class(cls): + s_scale = 0.0263073404164214 # noqa: F841 + + cc = CyclicCubicSplines(data_mcycle['times'].values, df=[6]) + gam_cc = GLMGam(data_mcycle['accel'], smoother=cc, + alpha=0) + cls.res1 = gam_cc.fit(method='bfgs') + + def test_fitted(self): + res1 = self.res1 + pred = res1.get_prediction() + self.rtol_fitted = 1e-5 + pls6_fittedvalues = np.array([ + 2.63203377595747, 3.41285892739456, 5.78168657308338, + 7.35344779586831, 8.89178704316853, 15.7035642157176, + 16.4510219628328, 16.7474993878412, 17.3397025587698, + 17.1062522298643, 16.1786066072489, 16.1786066072489, + 13.7402485937614, 11.9531909618517, 10.9073964111009]) + assert_allclose(res1.fittedvalues[:15], pls6_fittedvalues, + rtol=self.rtol_fitted) + assert_allclose(pred.predicted_mean[:15], pls6_fittedvalues, + rtol=self.rtol_fitted) + + +pls6_fittedvalues = np.array([ + 2.45008146537851, 3.14145063965465, 5.24130119353225, + 6.63476330674223, 7.99704341866374, 13.9351103077006, + 14.5508371638833, 14.785647621276, 15.1176070735895, + 14.8053514054347, 13.790412967255, 13.790412967255, + 11.2997845518655, 9.51681958051473, 8.4811626302547]) + +pls6_exog = np.array([ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, -0.334312615555276, -0.302733562622373, + -0.200049479196403, -0.12607681525989, -0.0487229716135211, + 0.397628373646056, 0.475396222437879, 0.51311526571058, + 0.685638355361239, 0.745083051531164, -0.633518318499726, + -0.634362488928233, -0.635472088268483, -0.634802453890957, + -0.632796625534419, -0.589886140629009, -0.574834708734556, + -0.566315983948608, -0.51289784236512, -0.486061743835595, + -0.353449234316442, -0.348107090921062, -0.328814083307981, + -0.313617048982477, -0.296913301955505, -0.191949693921079, + -0.173001127145111, -0.163813487426548, -0.12229019995063, + -0.108463798212062, -0.33613551740577, -0.327911471033406, + -0.303620832999443, -0.287786799373968, -0.272279566127816, + -0.194325957984873, -0.18175817334823, -0.175688807660186, + -0.147654475500976, -0.137597948224942, -0.406564043706154, + -0.409594429953082, -0.412391645561287, -0.409453786864986, + -0.403086590828732, -0.322579243114146, -0.302545882788086, + -0.29221622484174, -0.239207291311699, -0.218194346676734 + ]).reshape(10, 6, order='F') + + +class TestGAM6ExogBfgs(object): + + @classmethod + def setup_class(cls): + s_scale = 0.0263073404164214 + nobs = data_mcycle['times'].shape[0] + cc = CyclicCubicSplines(data_mcycle['times'].values, df=[6], + constraints='center') + gam_cc = GLMGam(data_mcycle['accel'], np.ones((nobs, 1)), + smoother=cc, alpha=1 / s_scale / 2) + cls.res1 = gam_cc.fit(method='bfgs') + + def test_fitted(self): + res1 = self.res1 + pred = res1.get_prediction() + self.rtol_fitted = 1e-5 + + assert_allclose(res1.fittedvalues[:15], pls6_fittedvalues, + rtol=self.rtol_fitted) + assert_allclose(pred.predicted_mean[:15], pls6_fittedvalues, + rtol=self.rtol_fitted) + + def test_exog(self): + exog = self.res1.model.exog + assert_allclose(exog[:10], pls6_exog, + rtol=1e-13) + + +class TestGAM6ExogPirls(object): + + @classmethod + def setup_class(cls): + s_scale = 0.0263073404164214 + nobs = data_mcycle['times'].shape[0] + cc = CyclicCubicSplines(data_mcycle['times'].values, df=[6], + constraints='center') + gam_cc = GLMGam(data_mcycle['accel'], np.ones((nobs, 1)), + smoother=cc, alpha=1 / s_scale / 2) + cls.res1 = gam_cc.fit(method='pirls') + + def test_fitted(self): + res1 = self.res1 + pred = res1.get_prediction() + self.rtol_fitted = 1e-5 + + assert_allclose(res1.fittedvalues[:15], pls6_fittedvalues, + rtol=self.rtol_fitted) + assert_allclose(pred.predicted_mean[:15], pls6_fittedvalues, + rtol=self.rtol_fitted) + + def test_exog(self): + exog = self.res1.model.exog + assert_allclose(exog[:10], pls6_exog, + rtol=1e-13) + + +class TestGAMMPG(object): + + @classmethod + def setup_class(cls): + + sp = np.array([6.46225497484073, 0.81532465890585]) + s_scale = np.array([2.95973613706629e-07, 0.000126203730141359]) + + x_spline = df_autos[['weight', 'hp']].values + exog = patsy.dmatrix('fuel + drive', data=df_autos) + cc = CyclicCubicSplines(x_spline, df=[6, 5], constraints='center') + # TODO alpha needs to be list + gam_cc = GLMGam(df_autos['city_mpg'], exog=exog, smoother=cc, + alpha=(1 / s_scale * sp / 2).tolist()) + cls.res1a = gam_cc.fit() + gam_cc = GLMGam(df_autos['city_mpg'], exog=exog, smoother=cc, + alpha=(1 / s_scale * sp / 2).tolist()) + cls.res1b = gam_cc.fit(method='newton') + + def test_exog(self): + file_path = os.path.join(cur_dir, "results", "autos_exog.csv") + df_exog = pd.read_csv(file_path) + res2_exog = df_exog.values + for res1 in [self.res1a, self.res1b]: + exog = res1.model.exog + # exog contains zeros + assert_allclose(exog, res2_exog, atol=1e-14) + + def test_fitted(self): + file_path = os.path.join(cur_dir, "results", "autos_predict.csv") + df_pred = pd.read_csv(file_path, index_col="Row.names") + df_pred.index = df_pred.index - 1 + res2_fittedvalues = df_pred["fit"].values + res2_se_mean = df_pred["se_fit"].values + for res1 in [self.res1a, self.res1b]: + pred = res1.get_prediction() + self.rtol_fitted = 1e-5 + + assert_allclose(res1.fittedvalues, res2_fittedvalues, + rtol=1e-10) + assert_allclose(pred.predicted_mean, res2_fittedvalues, + rtol=1e-10) + + # TODO: no edf, edf corrected df_resid + # scale estimate differs + # corr_fact = np.sqrt(191.669417019567 / 190) # without edf + # edf is implemented + corr_fact = 1 + assert_allclose(pred.se_mean, res2_se_mean * corr_fact, rtol=1e-10) + + +class TestGAMMPGBS(CheckGAMMixin): + # This has matching results from mgcv + + @classmethod + def setup_class(cls): + + sp = np.array([0.830689464223685, 425.361212061649]) + cls.s_scale = s_scale = np.array([2.443955e-06, 0.007945455]) + + x_spline = df_autos[['weight', 'hp']].values + # We need asarray to remove the design_info + # If design_info is attached, + # then exog_linear will also be transformed in predict. + cls.exog = np.asarray(patsy.dmatrix('fuel + drive', data=df_autos)) + bs = BSplines(x_spline, df=[12, 10], degree=[3, 3], + variable_names=['weight', 'hp'], + constraints='center', + include_intercept=True) + # TODO alpha needs to be list + alpha0 = 1 / s_scale * sp / 2 + gam_bs = GLMGam(df_autos['city_mpg'], exog=cls.exog, smoother=bs, + alpha=(alpha0).tolist()) + cls.res1a = gam_bs.fit(use_t=True) + + cls.res1b = gam_bs.fit(method='newton', use_t=True) + cls.res1 = cls.res1a._results + cls.res2 = results_mpg_bs.mpg_bs + + cls.rtol_fitted = 1e-8 + cls.covp_corrfact = 1 # not needed + + # for checking that alpha model attribute is unchanged, same as alpha0 + cls.alpha = [169947.78222669504, 26767.58046340008] + + @classmethod + def _init(cls): + pass + + def test_edf(self): + res1 = self.res1 + res2 = self.res2 + assert_allclose(res1.edf, res2.edf_all, rtol=1e-6) + hat = res1.get_hat_matrix_diag() + assert_allclose(hat, res2.hat, rtol=1e-6) + + def test_smooth(self): + res1 = self.res1 + res2 = self.res2 + smoothers = res1.model.smoother.smoothers + pen_matrix0 = smoothers[0].cov_der2 + assert_allclose(pen_matrix0, res2.smooth0.S * res2.smooth0.S_scale, + rtol=1e-6) + + def test_predict(self): + res1 = self.res1 + res2 = self.res2 + predicted = res1.predict(self.exog[2:4], res1.model.smoother.x[2:4]) + assert_allclose(predicted, res1.fittedvalues[2:4], + rtol=1e-13) + assert_allclose(predicted, res2.fitted_values[2:4], + rtol=self.rtol_fitted) + + def test_crossval(self): + # includes some checks that penalization in the model is unchanged + mod = self.res1.model + assert_equal(mod.alpha, self.alpha) # assert unchanged + assert_allclose(self.res1.scale, 4.7064821354391118, rtol=1e-13) + + alpha_aic = mod.select_penweight()[0] + # regression number, but in the right ball park + assert_allclose(alpha_aic, [112487.81362014, 129.89155677], rtol=1e-3) + assert_equal(mod.alpha, self.alpha) # assert unchanged + assert_equal(mod.penal.start_idx, 4) + pm = mod.penal.penalty_matrix() + assert_equal(pm[:, :4], 0) + assert_equal(pm[:4, :], 0) + assert_allclose(self.res1.scale, 4.7064821354391118, rtol=1e-13) + + np.random.seed(987125) + alpha_cv, _ = mod.select_penweight_kfold(k_folds=3, k_grid=6) + # regression number, but in the right ball park + assert_allclose(alpha_cv, [10000000.0, 630.957344480193], rtol=1e-5) + assert_equal(mod.alpha, self.alpha) # assert unchanged + assert_equal(mod.penal.start_idx, 4) + pm = mod.penal.penalty_matrix() + assert_equal(pm[:, :4], 0) + assert_equal(pm[:4, :], 0) + assert_allclose(self.res1.scale, 4.7064821354391118, rtol=1e-13) + + +class TestGAMMPGBSPoisson(CheckGAMMixin): + # This has matching results from mgcv + + @classmethod + def setup_class(cls): + + sp = np.array([40491.3940640059, 232455.530262537]) + # s_scale is same as before + cls.s_scale = s_scale = np.array([2.443955e-06, 0.007945455]) + + x_spline = df_autos[['weight', 'hp']].values + cls.exog = patsy.dmatrix('fuel + drive', data=df_autos) + bs = BSplines(x_spline, df=[12, 10], degree=[3, 3], + variable_names=['weight', 'hp'], + constraints='center', + include_intercept=True) + # TODO alpha needs to be list + alpha0 = 1 / s_scale * sp / 2 + gam_bs = GLMGam(df_autos['city_mpg'], exog=cls.exog, smoother=bs, + family=family.Poisson(), alpha=alpha0) + + xnames = cls.exog.design_info.column_names + gam_bs.smoother.col_names + gam_bs.exog_names[:] = xnames + cls.res1a = gam_bs.fit(use_t=False) + + cls.res1b = gam_bs.fit(method='newton', use_t=True) + cls.res1 = cls.res1a._results + cls.res2 = results_mpg_bs_poisson.mpg_bs_poisson + + cls.rtol_fitted = 1e-8 + cls.covp_corrfact = 1 # not needed + + @classmethod + def _init(cls): + pass + + def test_edf(self): + res1 = self.res1 + res2 = self.res2 + assert_allclose(res1.edf, res2.edf_all, rtol=1e-6) + hat = res1.get_hat_matrix_diag() + assert_allclose(hat, res2.hat, rtol=1e-6) + assert_allclose(res1.aic, res2.aic, rtol=1e-8) + assert_allclose(res1.deviance, res2.deviance, rtol=1e-8) + assert_allclose(res1.df_resid, res2.residual_df, rtol=1e-8) + + def test_smooth(self): + res1 = self.res1 + res2 = self.res2 + + smoothers = res1.model.smoother.smoothers + pen_matrix0 = smoothers[0].cov_der2 + assert_allclose(pen_matrix0, res2.smooth0.S * res2.smooth0.S_scale, + rtol=1e-6) + + def test_predict(self): + res1 = self.res1 + res2 = self.res2 + # this uses transform also for exog_linear + # predicted = res1.predict(self.exog[2:4], res1.model.smoother.x[2:4]) + predicted = res1.predict(df_autos.iloc[2:4], + res1.model.smoother.x[2:4]) + assert_allclose(predicted, res1.fittedvalues[2:4], + rtol=1e-13) + assert_allclose(predicted, res2.fitted_values[2:4], + rtol=self.rtol_fitted) + + # linpred = res1.predict(self.exog[2:4], res1.model.smoother.x[2:4], + # linear=True) + linpred = res1.predict(df_autos.iloc[2:4], res1.model.smoother.x[2:4], + linear=True) + assert_allclose(linpred, res2.linear_predictors[2:4], + rtol=self.rtol_fitted) + + assert_equal(predicted.index.values, [2, 3]) + assert_equal(linpred.index.values, [2, 3]) + + def test_wald(self): + res1 = self.res1 + res2 = self.res2 + wtt = res1.wald_test_terms(skip_single=True, + combine_terms=['fuel', 'drive', + 'weight', 'hp']) + # mgcv has term test for linear part + assert_allclose(wtt.statistic[:2], res2.pTerms_chi_sq, rtol=1e-7) + assert_allclose(wtt.pvalues[:2], res2.pTerms_pv, rtol=1e-6) + assert_equal(wtt.df_constraints[:2], res2.pTerms_df) + + def test_select_alpha(self): + res1 = self.res1 + alpha_mgcv = res1.model.alpha + res_s = res1.model.select_penweight() + assert_allclose(res_s[0], alpha_mgcv, rtol=5e-5) + + +class TestGAMMPGBSPoissonFormula(TestGAMMPGBSPoisson): + # This is the same as the previous but with from_formula + + @classmethod + def setup_class(cls): + + sp = np.array([40491.3940640059, 232455.530262537]) + # s_scale is same as before + cls.s_scale = s_scale = np.array([2.443955e-06, 0.007945455]) + + cls.exog = patsy.dmatrix('fuel + drive', data=df_autos) + + x_spline = df_autos[['weight', 'hp']].values + bs = BSplines(x_spline, df=[12, 10], degree=[3, 3], + variable_names=['weight', 'hp'], + constraints='center', + include_intercept=True) + + alpha0 = 1 / s_scale * sp / 2 + gam_bs = GLMGam.from_formula('city_mpg ~ fuel + drive', df_autos, + smoother=bs, family=family.Poisson(), + alpha=alpha0) + + cls.res1a = gam_bs.fit(use_t=False) + + cls.res1b = gam_bs.fit(method='newton', use_t=True) + cls.res1 = cls.res1a._results + cls.res2 = results_mpg_bs_poisson.mpg_bs_poisson + + cls.rtol_fitted = 1e-8 + cls.covp_corrfact = 1 # not needed + + def test_names_wrapper(self): + res1a = self.res1a + xnames = ['Intercept', 'fuel[T.gas]', 'drive[T.fwd]', 'drive[T.rwd]', + 'weight_s0', 'weight_s1', 'weight_s2', 'weight_s3', + 'weight_s4', 'weight_s5', 'weight_s6', 'weight_s7', + 'weight_s8', 'weight_s9', 'weight_s10', + 'hp_s0', 'hp_s1', 'hp_s2', 'hp_s3', 'hp_s4', 'hp_s5', + 'hp_s6', 'hp_s7', 'hp_s8'] + + assert_equal(res1a.model.exog_names, xnames) + assert_equal(res1a.model.design_info_linear.column_names, + xnames[:4]) + + assert_equal(res1a.fittedvalues[2:4].index.values, [2, 3]) + assert_equal(res1a.params.index.values, xnames) + assert_(isinstance(res1a.params, pd.Series)) + + assert_(isinstance(res1a, GLMGamResultsWrapper)) + assert_(isinstance(res1a._results, GLMGamResults)) diff --git a/statsmodels/gam/tests/test_smooth_basis.py b/statsmodels/gam/tests/test_smooth_basis.py new file mode 100644 index 0000000..f694d1d --- /dev/null +++ b/statsmodels/gam/tests/test_smooth_basis.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +""" +unit test for spline and other smoother classes + +Author: Luca Puggini + +""" + +import numpy as np +from numpy.testing import assert_allclose, assert_equal +from statsmodels.gam.smooth_basis import (UnivariatePolynomialSmoother, + PolynomialSmoother) + + +def test_univariate_polynomial_smoother(): + x = np.linspace(0, 1, 5) + pol = UnivariatePolynomialSmoother(x, degree=3) + assert_equal(pol.basis.shape, (5, 3)) + assert_allclose(pol.basis[:, 2], x.ravel() ** 3) + + +def test_multivariate_polynomial_basis(): + np.random.seed(1) + x = np.random.normal(0, 1, (10, 2)) + degrees = [3, 4] + mps = PolynomialSmoother(x, degrees) + for i, deg in enumerate(degrees): + uv_basis = UnivariatePolynomialSmoother(x[:, i], degree=deg).basis + assert_allclose(mps.smoothers[i].basis, uv_basis) diff --git a/statsmodels/genmod/__init__.py b/statsmodels/genmod/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/genmod/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/genmod/_prediction.py b/statsmodels/genmod/_prediction.py new file mode 100644 index 0000000..dea7ef2 --- /dev/null +++ b/statsmodels/genmod/_prediction.py @@ -0,0 +1,271 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Dec 19 11:29:18 2014 + +Author: Josef Perktold +License: BSD-3 + +""" + +import numpy as np +from scipy import stats + + +# this is similar to ContrastResults after t_test, partially copied and adjusted +class PredictionResults(object): + + def __init__(self, predicted_mean, var_pred_mean, var_resid=None, + df=None, dist=None, row_labels=None, linpred=None, link=None): + # TODO: is var_resid used? drop from arguments? + self.predicted_mean = predicted_mean + self.var_pred_mean = var_pred_mean + self.df = df + self.var_resid = var_resid + self.row_labels = row_labels + self.linpred = linpred + self.link = link + + if dist is None or dist == 'norm': + self.dist = stats.norm + self.dist_args = () + elif dist == 't': + self.dist = stats.t + self.dist_args = (self.df,) + else: + self.dist = dist + self.dist_args = () + + @property + def se_obs(self): + raise NotImplementedError + return np.sqrt(self.var_pred_mean + self.var_resid) + + @property + def se_mean(self): + return np.sqrt(self.var_pred_mean) + + @property + def tvalues(self): + return self.predicted_mean / self.se_mean + + def t_test(self, value=0, alternative='two-sided'): + '''z- or t-test for hypothesis that mean is equal to value + + Parameters + ---------- + value : array_like + value under the null hypothesis + alternative : string + 'two-sided', 'larger', 'smaller' + + Returns + ------- + stat : ndarray + test statistic + pvalue : ndarray + p-value of the hypothesis test, the distribution is given by + the attribute of the instance, specified in `__init__`. Default + if not specified is the normal distribution. + + ''' + # assumes symmetric distribution + stat = (self.predicted_mean - value) / self.se_mean + + if alternative in ['two-sided', '2-sided', '2s']: + pvalue = self.dist.sf(np.abs(stat), *self.dist_args)*2 + elif alternative in ['larger', 'l']: + pvalue = self.dist.sf(stat, *self.dist_args) + elif alternative in ['smaller', 's']: + pvalue = self.dist.cdf(stat, *self.dist_args) + else: + raise ValueError('invalid alternative') + return stat, pvalue + + def conf_int(self, method='endpoint', alpha=0.05, **kwds): + """ + Returns the confidence interval of the value, `effect` of the + constraint. + + This is currently only available for t and z tests. + + Parameters + ---------- + alpha : float, optional + The significance level for the confidence interval. + ie., The default `alpha` = .05 returns a 95% confidence interval. + + kwds : extra keyword arguments + currently ignored, only for compatibility, consistent signature + + Returns + ------- + ci : ndarray, (k_constraints, 2) + The array has the lower and the upper limit of the confidence + interval in the columns. + + """ + tmp = np.linspace(0, 1, 6) + is_linear = (self.link.inverse(tmp) == tmp).all() + if method == 'endpoint' and not is_linear: + ci_linear = self.linpred.conf_int(alpha=alpha, obs=False) + ci = self.link.inverse(ci_linear) + elif method == 'delta' or is_linear: + se = self.se_mean + q = self.dist.ppf(1 - alpha / 2., *self.dist_args) + lower = self.predicted_mean - q * se + upper = self.predicted_mean + q * se + ci = np.column_stack((lower, upper)) + # if we want to stack at a new last axis, for lower.ndim > 1 + # np.concatenate((lower[..., None], upper[..., None]), axis=-1) + + return ci + + def summary_frame(self, what='all', alpha=0.05): + """Summary frame""" + # TODO: finish and cleanup + import pandas as pd + from collections import OrderedDict + #ci_obs = self.conf_int(alpha=alpha, obs=True) # need to split + ci_mean = self.conf_int(alpha=alpha) + to_include = OrderedDict() + to_include['mean'] = self.predicted_mean + to_include['mean_se'] = self.se_mean + to_include['mean_ci_lower'] = ci_mean[:, 0] + to_include['mean_ci_upper'] = ci_mean[:, 1] + + self.table = to_include + #OrderedDict doesn't work to preserve sequence + # pandas dict doesn't handle 2d_array + #data = np.column_stack(list(to_include.values())) + #names = .... + res = pd.DataFrame(to_include, index=self.row_labels, + columns=to_include.keys()) + return res + + +def get_prediction_glm(self, exog=None, transform=True, weights=None, + row_labels=None, linpred=None, link=None, + pred_kwds=None): + """ + compute prediction results + + Parameters + ---------- + exog : array-like, optional + The values for which you want to predict. + transform : bool, optional + If the model was fit via a formula, do you want to pass + exog through the formula. Default is True. E.g., if you fit + a model y ~ log(x1) + log(x2), and transform is True, then + you can pass a data structure that contains x1 and x2 in + their original form. Otherwise, you'd need to log the data + first. + weights : array_like, optional + Weights interpreted as in WLS, used for the variance of the predicted + residual. + args, kwargs : + Some models can take additional arguments or keywords, see the + predict method of the model for the details. + + Returns + ------- + prediction_results : generalized_linear_model.PredictionResults + The prediction results instance contains prediction and prediction + variance and can on demand calculate confidence intervals and summary + tables for the prediction of the mean and of new observations. + + """ + + # prepare exog and row_labels, based on base Results.predict + if transform and hasattr(self.model, 'formula') and exog is not None: + from patsy import dmatrix + exog = dmatrix(self.model.data.design_info, + exog) + + if exog is not None: + if row_labels is None: + row_labels = getattr(exog, 'index', None) + if callable(row_labels): + row_labels = None + + exog = np.asarray(exog) + if exog.ndim == 1 and (self.model.exog.ndim == 1 or + self.model.exog.shape[1] == 1): + exog = exog[:, None] + exog = np.atleast_2d(exog) # needed in count model shape[1] + else: + exog = self.model.exog + if weights is None: + weights = getattr(self.model, 'weights', None) + + if row_labels is None: + row_labels = getattr(self.model.data, 'row_labels', None) + + # need to handle other arrays, TODO: is delegating to model possible ? + if weights is not None: + weights = np.asarray(weights) + if (weights.size > 1 and + (weights.ndim != 1 or weights.shape[0] == exog.shape[1])): + raise ValueError('weights has wrong shape') + + ### end + + pred_kwds['linear'] = False + predicted_mean = self.model.predict(self.params, exog, **pred_kwds) + + covb = self.cov_params() + + link_deriv = self.model.family.link.inverse_deriv(linpred.predicted_mean) + var_pred_mean = link_deriv**2 * (exog * np.dot(covb, exog.T).T).sum(1) + var_resid = self.scale # self.mse_resid / weights + + # TODO: check that we have correct scale, Refactor scale #??? + # special case for now: + if self.cov_type == 'fixed scale': + var_resid = self.cov_kwds['scale'] + + if weights is not None: + var_resid /= weights + + dist = ['norm', 't'][self.use_t] + return PredictionResults(predicted_mean, var_pred_mean, var_resid, + df=self.df_resid, dist=dist, + row_labels=row_labels, linpred=linpred, link=link) + + +def params_transform_univariate(params, cov_params, link=None, transform=None, + row_labels=None): + """ + results for univariate, nonlinear, monotonicaly transformed parameters + + This provides transformed values, standard errors and confidence interval + for transformations of parameters, for example in calculating rates with + `exp(params)` in the case of Poisson or other models with exponential + mean function. + + """ + + from statsmodels.genmod.families import links + if link is None and transform is None: + link = links.Log() + + if row_labels is None and hasattr(params, 'index'): + row_labels = params.index + + params = np.asarray(params) + + predicted_mean = link.inverse(params) + link_deriv = link.inverse_deriv(params) + var_pred_mean = link_deriv**2 * np.diag(cov_params) + # TODO: do we want covariance also, or just var/se + + dist = stats.norm + + # TODO: need ci for linear prediction, method of `lin_pred + linpred = PredictionResults(params, np.diag(cov_params), dist=dist, + row_labels=row_labels, link=links.identity()) + + res = PredictionResults(predicted_mean, var_pred_mean, dist=dist, + row_labels=row_labels, linpred=linpred, link=link) + + return res diff --git a/statsmodels/genmod/_tweedie_compound_poisson.py b/statsmodels/genmod/_tweedie_compound_poisson.py new file mode 100644 index 0000000..5a0c0c0 --- /dev/null +++ b/statsmodels/genmod/_tweedie_compound_poisson.py @@ -0,0 +1,95 @@ +""" +Private experimental module for miscellaneous Tweedie functions. + +References +---------- + +Dunn, Peter K. and Smyth, Gordon K. 2001. Tweedie family densities: methods of + evaluation. In Proceedings of the 16th International Workshop on + Statistical Modelling, Odense, Denmark, 2–6 July. + +Jørgensen, B., Demétrio, C.G.B., Kristensen, E., Banta, G.T., Petersen, H.C., + Delefosse, M.: Bias-corrected Pearson estimating functions for Taylor’s + power law applied to benthic macrofauna data. Stat. Probab. Lett. 81, + 749–758 (2011) + +Smyth G.K. and Jørgensen B. 2002. Fitting Tweedie's compound Poisson model to + insurance claims data: dispersion modelling. ASTIN Bulletin 32: 143–157 +""" +import numpy as np +from scipy._lib._util import _lazywhere as lazywhere +from scipy.special import gammaln + + +def _theta(mu, p): + return np.where(p == 1, np.log(mu), mu ** (1 - p) / (1 - p)) + + +def _alpha(p): + return (2 - p) / (1 - p) + + +def _logWj(y, j, p, phi): + alpha = _alpha(p) + logz = (-alpha * np.log(y) + alpha * np.log(p - 1) - (1 - alpha) * + np.log(phi) - np.log(2 - p)) + return (j * logz - gammaln(1 + j) - gammaln(-alpha * j)) + + +def kappa(mu, p): + return mu ** (2 - p) / (2 - p) + + +@np.vectorize +def _sumw(y, j_l, j_u, logWmax, p, phi): + j = np.arange(j_l, j_u + 1) + sumw = np.sum(np.exp(_logWj(y, j, p, phi) - logWmax)) + return sumw + + +def logW(y, p, phi): + alpha = _alpha(p) + jmax = y ** (2 - p) / ((2 - p) * phi) + logWmax = np.array((1 - alpha) * jmax) + tol = logWmax - 37 # Machine accuracy for 64 bit. + j = np.ceil(jmax) + while (_logWj(y, np.ceil(j), p, phi) > tol).any(): + j = np.where(_logWj(y, j, p, phi) > tol, j + 1, j) + j_u = j + j = np.floor(jmax) + j = np.where(j > 1, j, 1) + while (_logWj(y, j, p, phi) > tol).any() and (j > 1).any(): + j = np.where(_logWj(y, j, p, phi) > tol, j - 1, 1) + j_l = j + sumw = _sumw(y, j_l, j_u, logWmax, p, phi) + return logWmax + np.log(sumw) + + +def density_at_zero(y, mu, p, phi): + return np.exp(-(mu ** (2 - p)) / (phi * (2 - p))) + + +def density_otherwise(y, mu, p, phi): + theta = _theta(mu, p) + logd = logW(y, p, phi) - np.log(y) + (1 / phi * (y * theta - kappa(mu, p))) + return np.exp(logd) + + +def series_density(y, mu, p, phi): + density = lazywhere(np.array(y) > 0, + (y, mu, p, phi), + f=density_otherwise, + f2=density_at_zero) + return density + + +if __name__ == '__main__': + from scipy import stats + n = stats.poisson.rvs(.1, size=10000000) + y = stats.gamma.rvs(.1, scale=30000, size=10000000) + y = n * y + mu = stats.gamma.rvs(10, scale=30, size=10000000) + import time + t = time.time() + out = series_density(y=y, mu=mu, p=1.5, phi=20) + print('That took {} seconds'.format(time.time() - t)) diff --git a/statsmodels/genmod/api.py b/statsmodels/genmod/api.py new file mode 100644 index 0000000..ddf61d7 --- /dev/null +++ b/statsmodels/genmod/api.py @@ -0,0 +1,10 @@ +__all__ = [ + "GLM", "GEE", "OrdinalGEE", "NominalGEE", + "BinomialBayesMixedGLM", "PoissonBayesMixedGLM", + "families", "cov_struct" +] +from .generalized_linear_model import GLM +from .generalized_estimating_equations import GEE, OrdinalGEE, NominalGEE +from .bayes_mixed_glm import BinomialBayesMixedGLM, PoissonBayesMixedGLM +from . import families +from . import cov_struct diff --git a/statsmodels/genmod/bayes_mixed_glm.py b/statsmodels/genmod/bayes_mixed_glm.py new file mode 100644 index 0000000..ae756c1 --- /dev/null +++ b/statsmodels/genmod/bayes_mixed_glm.py @@ -0,0 +1,1189 @@ +r""" +Bayesian inference for generalized linear mixed models. + +Currently only families without additional scale or shape parameters +are supported (binomial and Poisson). + +Two estimation approaches are supported: Laplace approximation +('maximum a posteriori'), and variational Bayes (mean field +approximation to the posterior distribution). + +All realizations of random effects are modeled to be mutually +independent in this implementation. + +The `exog_vc` matrix is the design matrix for the random effects. +Every column of `exog_vc` corresponds to an independent realization of +a random effect. These random effects have mean zero and an unknown +standard deviation. The standard deviation parameters are constrained +to be equal within subsets of the columns. When not using formulas, +these subsets are specified through the parameter `ident`. `ident` +must have the same length as the number of columns of `exog_vc`, and +two columns whose `ident` values are equal have the same standard +deviation. When formulas are used, the columns of `exog_vc` derived +from a common formula are constrained to have the same standard +deviation. + +In many applications, `exog_vc` will be sparse. A sparse matrix may +be passed when constructing a model class. If a dense matrix is +passed, it will be converted internally to a sparse matrix. There +currently is no way to avoid creating a temporary dense version of +`exog_vc` when using formulas. + +Model and parameterization +-------------------------- +The joint density of data and parameters factors as: + +.. math:: + + p(y | vc, fep) p(vc | vcp) p(vcp) p(fe) + +The terms :math:`p(vcp)` and :math:`p(fe)` are prior distributions +that are taken to be Gaussian (the :math:`vcp` parameters are log +standard deviations so the standard deviations have log-normal +distributions). The random effects distribution :math:`p(vc | vcp)` +is independent Gaussian (random effect realizations are independent +within and between values of the `ident` array). The model +:math:`p(y | vc, fep)` depends on the specific GLM being fit. +""" + +from __future__ import division +import numpy as np +from scipy.optimize import minimize +from scipy import sparse +import statsmodels.base.model as base +from statsmodels.iolib import summary2 +from statsmodels.genmod import families +import pandas as pd +import warnings +import patsy + +# Gauss-Legendre weights +glw = [ + [0.2955242247147529, -0.1488743389816312], + [0.2955242247147529, 0.1488743389816312], + [0.2692667193099963, -0.4333953941292472], + [0.2692667193099963, 0.4333953941292472], + [0.2190863625159820, -0.6794095682990244], + [0.2190863625159820, 0.6794095682990244], + [0.1494513491505806, -0.8650633666889845], + [0.1494513491505806, 0.8650633666889845], + [0.0666713443086881, -0.9739065285171717], + [0.0666713443086881, 0.9739065285171717], +] + +_init_doc = r""" + Fit a generalized linear mixed model using Bayesian methods. + + The class implements the Laplace approximation to the posterior + distribution (`fit_map`) and a variational Bayes approximation to + the posterior (`fit_vb`). See the two fit method docstrings for + more information about the fitting approaches. + + Parameters + ---------- + endog : array-like + Vector of response values. + exog : array-like + Array of covariates for the fixed effects part of the mean + structure. + exog_vc : array-like + Array of covariates for the random part of the model. A + scipy.sparse array may be provided, or else the passed + array will be converted to sparse internally. + ident : array-like + Array of integer labels showing which random terms (columns + of `exog_vc`) have a common variance. + vcp_p : float + Prior standard deviation for variance component parameters + (the prior standard deviation of log(s) is vcp_p, where s is + the standard deviation of a random effect). + fe_p : float + Prior standard deviation for fixed effects parameters. + family : statsmodels.genmod.families instance + The GLM family. + fep_names : list of strings + The names of the fixed effects parameters (corresponding to + columns of exog). If None, default names are constructed. + vcp_names : list of strings + The names of the variance component parameters (corresponding + to distinct labels in ident). If None, default names are + constructed. + vc_names : list of strings + The names of the random effect realizations. + + Returns + ------- + MixedGLMResults object + + Notes + ----- + There are three types of values in the posterior distribution: + fixed effects parameters (fep), corresponding to the columns of + `exog`, random effects realizations (vc), corresponding to the + columns of `exog_vc`, and the standard deviations of the random + effects realizations (vcp), corresponding to the unique integer + labels in `ident`. + + All random effects are modeled as being independent Gaussian + values (given the variance structure parameters). Every column of + `exog_vc` has a distinct realized random effect that is used to + form the linear predictors. The elements of `ident` determine the + distinct variance structure parameters. Two random effect + realizations that have the same value in `ident` have the same + variance. When fitting with a formula, `ident` is constructed + internally (each element of `vc_formulas` yields a distinct label + in `ident`). + + The random effect standard deviation parameters (`vcp`) have + log-normal prior distributions with mean 0 and standard deviation + `vcp_p`. + + Note that for some families, e.g. Binomial, the posterior mode may + be difficult to find numerically if `vcp_p` is set to too large of + a value. Setting `vcp_p` to 0.5 seems to work well. + + The prior for the fixed effects parameters is Gaussian with mean 0 + and standard deviation `fe_p`. + + Examples + --------{example} + + + References + ---------- + Introduction to generalized linear mixed models: + https://stats.idre.ucla.edu/other/mult-pkg/introduction-to-generalized-linear-mixed-models + + SAS documentation: + https://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_intromix_a0000000215.htm + + An assessment of estimation methods for generalized linear mixed + models with binary outcomes + https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3866838/ + """ + +# The code in the example should be identical to what appears in +# the test_doc_examples unit test +_logit_example = """ + A binomial (logistic) random effects model with random intercepts + for villages and random slopes for each year within each village: + + >>> random = {"a": '0 + C(Village)', "b": '0 + C(Village)*year_cen'} + >>> model = BinomialBayesMixedGLM.from_formula( + 'y ~ year_cen', random, data) + >>> result = model.fit_vb() +""" + +# The code in the example should be identical to what appears in +# the test_doc_examples unit test +_poisson_example = """ + A Poisson random effects model with random intercepts for villages + and random slopes for each year within each village: + + >>> random = {"a": '0 + C(Village)', "b": '0 + C(Village)*year_cen'} + >>> model = PoissonBayesMixedGLM.from_formula( + 'y ~ year_cen', random, data) + >>> result = model.fit_vb() +""" + + +class _BayesMixedGLM(base.Model): + def __init__(self, + endog, + exog, + exog_vc=None, + ident=None, + family=None, + vcp_p=1, + fe_p=2, + fep_names=None, + vcp_names=None, + vc_names=None, + **kwargs): + + if exog.ndim == 1: + if isinstance(exog, np.ndarray): + exog = exog[:, None] + else: + exog = pd.DataFrame(exog) + + if exog.ndim != 2: + msg = "'exog' must have one or two columns" + raise ValueError(msg) + + if exog_vc.ndim == 1: + if isinstance(exog_vc, np.ndarray): + exog_vc = exog_vc[:, None] + else: + exog_vc = pd.DataFrame(exog_vc) + + if exog_vc.ndim != 2: + msg = "'exog_vc' must have one or two columns" + raise ValueError(msg) + + ident = np.asarray(ident) + if ident.ndim != 1: + msg = "ident must be a one-dimensional array" + raise ValueError(msg) + + if len(ident) != exog_vc.shape[1]: + msg = "len(ident) should match the number of columns of exog_vc" + raise ValueError(msg) + + if not np.issubdtype(ident.dtype, np.integer): + msg = "ident must have an integer dtype" + raise ValueError(msg) + + # Get the fixed effects parameter names + if fep_names is None: + if hasattr(exog, "columns"): + fep_names = exog.columns.tolist() + else: + fep_names = ["FE_%d" % (k + 1) for k in range(exog.shape[1])] + + # Get the variance parameter names + if vcp_names is None: + vcp_names = ["VC_%d" % (k + 1) for k in range(int(max(ident)) + 1)] + else: + if len(vcp_names) != len(set(ident)): + msg = "The lengths of vcp_names and ident should be the same" + raise ValueError(msg) + + if not sparse.issparse(exog_vc): + exog_vc = sparse.csr_matrix(exog_vc) + + ident = ident.astype(np.int) + vcp_p = float(vcp_p) + fe_p = float(fe_p) + + # Number of fixed effects parameters + if exog is None: + k_fep = 0 + else: + k_fep = exog.shape[1] + + # Number of variance component structure parameters and + # variance component realizations. + if exog_vc is None: + k_vc = 0 + k_vcp = 0 + else: + k_vc = exog_vc.shape[1] + k_vcp = max(ident) + 1 + + # power might be better but not available in older scipy + exog_vc2 = exog_vc.multiply(exog_vc) + + super(_BayesMixedGLM, self).__init__(endog, exog, **kwargs) + + self.exog_vc = exog_vc + self.exog_vc2 = exog_vc2 + self.ident = ident + self.family = family + self.k_fep = k_fep + self.k_vc = k_vc + self.k_vcp = k_vcp + self.fep_names = fep_names + self.vcp_names = vcp_names + self.vc_names = vc_names + self.fe_p = fe_p + self.vcp_p = vcp_p + self.names = fep_names + vcp_names + if vc_names is not None: + self.names += vc_names + + def _unpack(self, vec): + + ii = 0 + + # Fixed effects parameters + fep = vec[:ii + self.k_fep] + ii += self.k_fep + + # Variance component structure parameters (standard + # deviations). These are on the log scale. The standard + # deviation for random effect j is exp(vcp[ident[j]]). + vcp = vec[ii:ii + self.k_vcp] + ii += self.k_vcp + + # Random effect realizations + vc = vec[ii:] + + return fep, vcp, vc + + def logposterior(self, params): + """ + The overall log-density: log p(y, fe, vc, vcp). + + This differs by an additive constant from the log posterior + log p(fe, vc, vcp | y). + """ + + fep, vcp, vc = self._unpack(params) + + # Contributions from p(y | x, vc) + lp = 0 + if self.k_fep > 0: + lp += np.dot(self.exog, fep) + if self.k_vc > 0: + lp += self.exog_vc.dot(vc) + + mu = self.family.link.inverse(lp) + ll = self.family.loglike(self.endog, mu) + + if self.k_vc > 0: + + # Contributions from p(vc | vcp) + vcp0 = vcp[self.ident] + s = np.exp(vcp0) + ll -= 0.5 * np.sum(vc**2 / s**2) + np.sum(vcp0) + + # Contributions from p(vc) + ll -= 0.5 * np.sum(vcp**2 / self.vcp_p**2) + + # Contributions from p(fep) + if self.k_fep > 0: + ll -= 0.5 * np.sum(fep**2 / self.fe_p**2) + + return ll + + def logposterior_grad(self, params): + """ + The gradient of the log posterior. + """ + + fep, vcp, vc = self._unpack(params) + + lp = 0 + if self.k_fep > 0: + lp += np.dot(self.exog, fep) + if self.k_vc > 0: + lp += self.exog_vc.dot(vc) + + mu = self.family.link.inverse(lp) + + score_factor = (self.endog - mu) / self.family.link.deriv(mu) + score_factor /= self.family.variance(mu) + + te = [None, None, None] + + # Contributions from p(y | x, z, vc) + if self.k_fep > 0: + te[0] = np.dot(score_factor, self.exog) + if self.k_vc > 0: + te[2] = self.exog_vc.transpose().dot(score_factor) + + if self.k_vc > 0: + # Contributions from p(vc | vcp) + # vcp0 = vcp[self.ident] + # s = np.exp(vcp0) + # ll -= 0.5 * np.sum(vc**2 / s**2) + np.sum(vcp0) + vcp0 = vcp[self.ident] + s = np.exp(vcp0) + u = vc**2 / s**2 - 1 + te[1] = np.bincount(self.ident, weights=u) + te[2] -= vc / s**2 + + # Contributions from p(vcp) + # ll -= 0.5 * np.sum(vcp**2 / self.vcp_p**2) + te[1] -= vcp / self.vcp_p**2 + + # Contributions from p(fep) + if self.k_fep > 0: + te[0] -= fep / self.fe_p**2 + + te = [x for x in te if x is not None] + + return np.concatenate(te) + + def _get_start(self): + start_fep = np.zeros(self.k_fep) + start_vcp = np.ones(self.k_vcp) + start_vc = np.random.normal(size=self.k_vc) + start = np.concatenate((start_fep, start_vcp, start_vc)) + return start + + @classmethod + def from_formula(cls, + formula, + vc_formulas, + data, + family=None, + vcp_p=1, + fe_p=2): + """ + Fit a BayesMixedGLM using a formula. + + Parameters + ---------- + formula : string + Formula for the endog and fixed effects terms (use ~ to + separate dependent and independent expressions). + vc_formulas : dictionary + vc_formulas[name] is a one-sided formula that creates one + collection of random effects with a common variance + prameter. If using categorical (factor) variables to + produce variance components, note that generally `0 + ...` + should be used so that an intercept is not included. + data : data frame + The data to which the formulas are applied. + family : genmod.families instance + A GLM family. + vcp_p : float + The prior standard deviation for the logarithms of the standard + deviations of the random effects. + fe_p : float + The prior standard deviation for the fixed effects parameters. + """ + + ident = [] + exog_vc = [] + vcp_names = [] + j = 0 + for na, fml in vc_formulas.items(): + mat = patsy.dmatrix(fml, data, return_type='dataframe') + exog_vc.append(mat) + vcp_names.append(na) + ident.append(j * np.ones(mat.shape[1], dtype=np.integer)) + j += 1 + exog_vc = pd.concat(exog_vc, axis=1) + vc_names = exog_vc.columns.tolist() + + ident = np.concatenate(ident) + + model = super(_BayesMixedGLM, cls).from_formula( + formula, + data=data, + family=family, + subset=None, + exog_vc=exog_vc, + ident=ident, + vc_names=vc_names, + vcp_names=vcp_names, + fe_p=fe_p, + vcp_p=vcp_p) + + return model + + def fit(self, method="BFGS", minim_opts=None): + """ + fit is equivalent to fit_map. + + See fit_map for parameter information. + + Use `fit_vb` to fit the model using variational Bayes. + """ + self.fit_map(method, minim_opts) + + def fit_map(self, method="BFGS", minim_opts=None, scale_fe=False): + """ + Construct the Laplace approximation to the posterior + distribution. + + Parameters + ---------- + method : string + Optimization method for finding the posterior mode. + minim_opts : dict-like + Options passed to scipy.minimize. + scale_fe : bool + If True, the columns of the fixed effects design matrix + are centered and scaled to unit variance before fitting + the model. The results are back-transformed so that the + results are presented on the original scale. + + Returns + ------- + BayesMixedGLMResults instance. + """ + + if scale_fe: + mn = self.exog.mean(0) + sc = self.exog.std(0) + self._exog_save = self.exog + self.exog = self.exog.copy() + ixs = np.flatnonzero(sc > 1e-8) + self.exog[:, ixs] -= mn[ixs] + self.exog[:, ixs] /= sc[ixs] + + def fun(params): + return -self.logposterior(params) + + def grad(params): + return -self.logposterior_grad(params) + + start = self._get_start() + + r = minimize(fun, start, method=method, jac=grad, options=minim_opts) + if not r.success: + msg = ("Laplace fitting did not converge, |gradient|=%.6f" % + np.sqrt(np.sum(r.jac**2))) + warnings.warn(msg) + + from statsmodels.tools.numdiff import approx_fprime + hess = approx_fprime(r.x, grad) + cov = np.linalg.inv(hess) + + params = r.x + + if scale_fe: + self.exog = self._exog_save + del self._exog_save + params[ixs] /= sc[ixs] + cov[ixs, :][:, ixs] /= np.outer(sc[ixs], sc[ixs]) + + return BayesMixedGLMResults(self, params, cov, optim_retvals=r) + + def predict(self, params, exog=None, linear=False): + """ + Return the fitted mean structure. + + Parameters + ---------- + params : array-like + The parameter vector, may be the full parameter vector, or may + be truncated to include only the mean parameters. + exog : array-like + The design matrix for the mean structure. If omitted, use the + model's design matrix. + linear : bool + If True, return the linear predictor without passing through the + link function. + + Returns + ------- + A 1-dimensional array of predicted values + """ + + if exog is None: + exog = self.exog + + q = exog.shape[1] + pr = np.dot(exog, params[0:q]) + + if not linear: + pr = self.family.link.inverse(pr) + + return pr + + +class _VariationalBayesMixedGLM(object): + """ + A mixin providing generic (not family-specific) methods for + variational Bayes mean field fitting. + """ + + # Integration range (from -rng to +rng). The integrals are with + # respect to a standard Gaussian distribution so (-5, 5) will be + # sufficient in many cases. + rng = 5 + + verbose = False + + # Returns the mean and variance of the linear predictor under the + # given distribution parameters. + def _lp_stats(self, fep_mean, fep_sd, vc_mean, vc_sd): + + tm = np.dot(self.exog, fep_mean) + tv = np.dot(self.exog**2, fep_sd**2) + tm += self.exog_vc.dot(vc_mean) + tv += self.exog_vc2.dot(vc_sd**2) + + return tm, tv + + def vb_elbo_base(self, h, tm, fep_mean, vcp_mean, vc_mean, fep_sd, vcp_sd, + vc_sd): + """ + Returns the evidence lower bound (ELBO) for the model. + + This function calculates the family-specific ELBO function + based on information provided from a subclass. + + Parameters + ---------- + h : function mapping 1d vector to 1d vector + The contribution of the model to the ELBO function can be + expressed as y_i*lp_i + Eh_i(z), where y_i and lp_i are + the response and linear predictor for observation i, and z + is a standard normal rangom variable. This formulation + can be achieved for any GLM with a canonical link + function. + """ + + # p(y | vc) contributions + iv = 0 + for w in glw: + z = self.rng * w[1] + iv += w[0] * h(z) * np.exp(-z**2 / 2) + iv /= np.sqrt(2 * np.pi) + iv *= self.rng + iv += self.endog * tm + iv = iv.sum() + + # p(vc | vcp) * p(vcp) * p(fep) contributions + iv += self._elbo_common(fep_mean, fep_sd, vcp_mean, vcp_sd, vc_mean, + vc_sd) + + r = (iv + np.sum(np.log(fep_sd)) + np.sum(np.log(vcp_sd)) + np.sum( + np.log(vc_sd))) + + return r + + def vb_elbo_grad_base(self, h, tm, tv, fep_mean, vcp_mean, vc_mean, fep_sd, + vcp_sd, vc_sd): + """ + Return the gradient of the ELBO function. + + See vb_elbo_base for parameters. + """ + + fep_mean_grad = 0. + fep_sd_grad = 0. + vcp_mean_grad = 0. + vcp_sd_grad = 0. + vc_mean_grad = 0. + vc_sd_grad = 0. + + # p(y | vc) contributions + for w in glw: + z = self.rng * w[1] + u = h(z) * np.exp(-z**2 / 2) / np.sqrt(2 * np.pi) + r = u / np.sqrt(tv) + fep_mean_grad += w[0] * np.dot(u, self.exog) + vc_mean_grad += w[0] * self.exog_vc.transpose().dot(u) + fep_sd_grad += w[0] * z * np.dot(r, self.exog**2 * fep_sd) + v = self.exog_vc2.multiply(vc_sd).transpose().dot(r) + v = np.squeeze(np.asarray(v)) + vc_sd_grad += w[0] * z * v + + fep_mean_grad *= self.rng + vc_mean_grad *= self.rng + fep_sd_grad *= self.rng + vc_sd_grad *= self.rng + fep_mean_grad += np.dot(self.endog, self.exog) + vc_mean_grad += self.exog_vc.transpose().dot(self.endog) + + (fep_mean_grad_i, fep_sd_grad_i, vcp_mean_grad_i, vcp_sd_grad_i, + vc_mean_grad_i, vc_sd_grad_i) = self._elbo_grad_common( + fep_mean, fep_sd, vcp_mean, vcp_sd, vc_mean, vc_sd) + + fep_mean_grad += fep_mean_grad_i + fep_sd_grad += fep_sd_grad_i + vcp_mean_grad += vcp_mean_grad_i + vcp_sd_grad += vcp_sd_grad_i + vc_mean_grad += vc_mean_grad_i + vc_sd_grad += vc_sd_grad_i + + fep_sd_grad += 1 / fep_sd + vcp_sd_grad += 1 / vcp_sd + vc_sd_grad += 1 / vc_sd + + mean_grad = np.concatenate((fep_mean_grad, vcp_mean_grad, + vc_mean_grad)) + sd_grad = np.concatenate((fep_sd_grad, vcp_sd_grad, vc_sd_grad)) + + if self.verbose: + print( + "|G|=%f" % np.sqrt(np.sum(mean_grad**2) + np.sum(sd_grad**2))) + + return mean_grad, sd_grad + + def fit_vb(self, + mean=None, + sd=None, + fit_method="BFGS", + minim_opts=None, + scale_fe=False, + verbose=False): + """ + Fit a model using the variational Bayes mean field approximation. + + Parameters + ---------- + mean : array-like + Starting value for VB mean vector + sd : array-like + Starting value for VB standard deviation vector + fit_method : string + Algorithm for scipy.minimize + minim_opts : dict-like + Options passed to scipy.minimize + scale_fe : bool + If true, the columns of the fixed effects design matrix + are centered and scaled to unit variance before fitting + the model. The results are back-transformed so that the + results are presented on the original scale. + verbose : bool + If True, print the gradient norm to the screen each time + it is calculated. + + Notes + ----- + The goal is to find a factored Gaussian approximation + q1*q2*... to the posterior distribution, approximately + minimizing the KL divergence from the factored approximation + to the actual posterior. The KL divergence, or ELBO function + has the form + + E* log p(y, fe, vcp, vc) - E* log q + + where E* is expectation with respect to the product of qj. + + References + ---------- + Blei, Kucukelbir, McAuliffe (2017). Variational Inference: A + review for Statisticians + https://arxiv.org/pdf/1601.00670.pdf + """ + + self.verbose = verbose + + if scale_fe: + mn = self.exog.mean(0) + sc = self.exog.std(0) + self._exog_save = self.exog + self.exog = self.exog.copy() + ixs = np.flatnonzero(sc > 1e-8) + self.exog[:, ixs] -= mn[ixs] + self.exog[:, ixs] /= sc[ixs] + + n = self.k_fep + self.k_vcp + self.k_vc + ml = self.k_fep + self.k_vcp + self.k_vc + if mean is None: + m = np.zeros(n) + else: + if len(mean) != ml: + raise ValueError( + "mean has incorrect length, %d != %d" % (len(mean), ml)) + m = mean.copy() + if sd is None: + s = -0.5 + 0.1 * np.random.normal(size=n) + else: + if len(sd) != ml: + raise ValueError( + "sd has incorrect length, %d != %d" % (len(sd), ml)) + + # s is parameterized on the log-scale internally when + # optimizing the ELBO function (this is transparent to the + # caller) + s = np.log(sd) + + # Don't allow the variance parameter starting mean values to + # be too small. + i1, i2 = self.k_fep, self.k_fep + self.k_vcp + m[i1:i2] = np.where(m[i1:i2] < -1, -1, m[i1:i2]) + + # Don't allow the posterior standard deviation starting values + # to be too small. + s = np.where(s < -1, -1, s) + + def elbo(x): + n = len(x) // 2 + return -self.vb_elbo(x[:n], np.exp(x[n:])) + + def elbo_grad(x): + n = len(x) // 2 + gm, gs = self.vb_elbo_grad(x[:n], np.exp(x[n:])) + gs *= np.exp(x[n:]) + return -np.concatenate((gm, gs)) + + start = np.concatenate((m, s)) + mm = minimize( + elbo, start, jac=elbo_grad, method=fit_method, options=minim_opts) + if not mm.success: + warnings.warn("VB fitting did not converge") + + n = len(mm.x) // 2 + params = mm.x[0:n] + va = np.exp(2 * mm.x[n:]) + + if scale_fe: + self.exog = self._exog_save + del self._exog_save + params[ixs] /= sc[ixs] + va[ixs] /= sc[ixs]**2 + + return BayesMixedGLMResults(self, params, va, mm) + + # Handle terms in the ELBO that are common to all models. + def _elbo_common(self, fep_mean, fep_sd, vcp_mean, vcp_sd, vc_mean, vc_sd): + + iv = 0 + + # p(vc | vcp) contributions + m = vcp_mean[self.ident] + s = vcp_sd[self.ident] + iv -= np.sum((vc_mean**2 + vc_sd**2) * np.exp(2 * (s**2 - m))) / 2 + iv -= np.sum(m) + + # p(vcp) contributions + iv -= 0.5 * (vcp_mean**2 + vcp_sd**2).sum() / self.vcp_p**2 + + # p(b) contributions + iv -= 0.5 * (fep_mean**2 + fep_sd**2).sum() / self.fe_p**2 + + return iv + + def _elbo_grad_common(self, fep_mean, fep_sd, vcp_mean, vcp_sd, vc_mean, + vc_sd): + + # p(vc | vcp) contributions + m = vcp_mean[self.ident] + s = vcp_sd[self.ident] + u = vc_mean**2 + vc_sd**2 + ve = np.exp(2 * (s**2 - m)) + dm = u * ve - 1 + ds = -2 * u * ve * s + vcp_mean_grad = np.bincount(self.ident, weights=dm) + vcp_sd_grad = np.bincount(self.ident, weights=ds) + + vc_mean_grad = -vc_mean.copy() * ve + vc_sd_grad = -vc_sd.copy() * ve + + # p(vcp) contributions + vcp_mean_grad -= vcp_mean / self.vcp_p**2 + vcp_sd_grad -= vcp_sd / self.vcp_p**2 + + # p(b) contributions + fep_mean_grad = -fep_mean.copy() / self.fe_p**2 + fep_sd_grad = -fep_sd.copy() / self.fe_p**2 + + return (fep_mean_grad, fep_sd_grad, vcp_mean_grad, vcp_sd_grad, + vc_mean_grad, vc_sd_grad) + + +class BayesMixedGLMResults(object): + """ + Class to hold results from a Bayesian estimation of a Mixed GLM model. + + Attributes + ---------- + fe_mean : array-like + Posterior mean of the fixed effects coefficients. + fe_sd : array-like + Posterior standard deviation of the fixed effects coefficients + vcp_mean : array-like + Posterior mean of the logged variance component standard + deviations. + vcp_sd : array-like + Posterior standard deviation of the logged variance component + standard deviations. + vc_mean : array-like + Posterior mean of the random coefficients + vc_sd : array-like + Posterior standard deviation of the random coefficients + """ + + def __init__(self, model, params, cov_params, optim_retvals=None): + + self.model = model + self.params = params + self._cov_params = cov_params + self.optim_retvals = optim_retvals + + self.fe_mean, self.vcp_mean, self.vc_mean = (model._unpack(params)) + + if cov_params.ndim == 2: + cp = np.diag(cov_params) + else: + cp = cov_params + self.fe_sd, self.vcp_sd, self.vc_sd = model._unpack(cp) + self.fe_sd = np.sqrt(self.fe_sd) + self.vcp_sd = np.sqrt(self.vcp_sd) + self.vc_sd = np.sqrt(self.vc_sd) + + def cov_params(self): + + if hasattr(self.model.data, "frame"): + # Return the covariance matrix as a dataframe or series + na = (self.model.fep_names + self.model.vcp_names + + self.model.vc_names) + if self._cov_params.ndim == 2: + return pd.DataFrame(self._cov_params, index=na, columns=na) + else: + return pd.Series(self._cov_params, index=na) + + # Return the covariance matrix as a ndarray + return self._cov_params + + def summary(self): + + df = pd.DataFrame() + m = self.model.k_fep + self.model.k_vcp + df["Type"] = (["M" for k in range(self.model.k_fep)] + + ["V" for k in range(self.model.k_vcp)]) + + df["Post. Mean"] = self.params[0:m] + + if self._cov_params.ndim == 2: + v = np.diag(self._cov_params)[0:m] + df["Post. SD"] = np.sqrt(v) + else: + df["Post. SD"] = np.sqrt(self._cov_params[0:m]) + + # Convert variance parameters to natural scale + df["SD"] = np.exp(df["Post. Mean"]) + df["SD (LB)"] = np.exp(df["Post. Mean"] - 2 * df["Post. SD"]) + df["SD (UB)"] = np.exp(df["Post. Mean"] + 2 * df["Post. SD"]) + df["SD"] = ["%.3f" % x for x in df.SD] + df["SD (LB)"] = ["%.3f" % x for x in df["SD (LB)"]] + df["SD (UB)"] = ["%.3f" % x for x in df["SD (UB)"]] + df.loc[df.index < self.model.k_fep, "SD"] = "" + df.loc[df.index < self.model.k_fep, "SD (LB)"] = "" + df.loc[df.index < self.model.k_fep, "SD (UB)"] = "" + + df.index = self.model.fep_names + self.model.vcp_names + + summ = summary2.Summary() + summ.add_title(self.model.family.__class__.__name__ + + " Mixed GLM Results") + summ.add_df(df) + + summ.add_text("Parameter types are mean structure (M) and " + "variance structure (V)") + summ.add_text("Variance parameters are modeled as log " + "standard deviations") + + return summ + + def random_effects(self, term=None): + """ + Posterior mean and standard deviation of random effects. + + Parameters + ---------- + term : int or None + If None, results for all random effects are returned. If + an integer, returns results for a given set of random + effects. The value of `term` refers to an element of the + `ident` vector, or to a position in the `vc_formulas` + list. + + Returns + ------- + Data frame of posterior means and posterior standard + deviations of random effects. + """ + + z = self.vc_mean + s = self.vc_sd + na = self.model.vc_names + + if term is not None: + termix = self.model.vcp_names.index(term) + ii = np.flatnonzero(self.model.ident == termix) + z = z[ii] + s = s[ii] + na = [na[i] for i in ii] + + x = pd.DataFrame({"Mean": z, "SD": s}) + + if na is not None: + x.index = na + + return x + + def predict(self, exog=None, linear=False): + """ + Return predicted values for the mean structure. + + Parameters + ---------- + exog : array-like + The design matrix for the mean structure. If None, + use the model's design matrix. + linear : bool + If True, returns the linear predictor, otherwise + transform the linear predictor using the link function. + + Returns + ------- + A one-dimensional array of fitted values. + """ + + return self.model.predict(self.params, exog, linear) + + +class BinomialBayesMixedGLM(_VariationalBayesMixedGLM, _BayesMixedGLM): + + __doc__ = _init_doc.format(example=_logit_example) + + def __init__(self, + endog, + exog, + exog_vc, + ident, + vcp_p=1, + fe_p=2, + fep_names=None, + vcp_names=None, + vc_names=None): + + super(BinomialBayesMixedGLM, self).__init__( + endog, + exog, + exog_vc=exog_vc, + ident=ident, + vcp_p=vcp_p, + fe_p=fe_p, + family=families.Binomial(), + fep_names=fep_names, + vcp_names=vcp_names, + vc_names=vc_names) + + if not np.all(np.unique(endog) == np.r_[0, 1]): + msg = "endog values must be 0 and 1, and not all identical" + raise ValueError(msg) + + @classmethod + def from_formula(cls, formula, vc_formulas, data, vcp_p=1, fe_p=2): + + fam = families.Binomial() + x = _BayesMixedGLM.from_formula( + formula, vc_formulas, data, family=fam, vcp_p=vcp_p, fe_p=fe_p) + + # Copy over to the intended class structure + mod = BinomialBayesMixedGLM( + x.endog, + x.exog, + exog_vc=x.exog_vc, + ident=x.ident, + vcp_p=x.vcp_p, + fe_p=x.fe_p, + fep_names=x.fep_names, + vcp_names=x.vcp_names, + vc_names=x.vc_names) + mod.data = x.data + + return mod + + def vb_elbo(self, vb_mean, vb_sd): + """ + Returns the evidence lower bound (ELBO) for the model. + """ + + fep_mean, vcp_mean, vc_mean = self._unpack(vb_mean) + fep_sd, vcp_sd, vc_sd = self._unpack(vb_sd) + tm, tv = self._lp_stats(fep_mean, fep_sd, vc_mean, vc_sd) + + def h(z): + return -np.log(1 + np.exp(tm + np.sqrt(tv) * z)) + + return self.vb_elbo_base(h, tm, fep_mean, vcp_mean, vc_mean, fep_sd, + vcp_sd, vc_sd) + + def vb_elbo_grad(self, vb_mean, vb_sd): + """ + Returns the gradient of the model's evidence lower bound (ELBO). + """ + + fep_mean, vcp_mean, vc_mean = self._unpack(vb_mean) + fep_sd, vcp_sd, vc_sd = self._unpack(vb_sd) + tm, tv = self._lp_stats(fep_mean, fep_sd, vc_mean, vc_sd) + + def h(z): + u = tm + np.sqrt(tv) * z + x = np.zeros_like(u) + ii = np.flatnonzero(u > 0) + uu = u[ii] + x[ii] = 1 / (1 + np.exp(-uu)) + ii = np.flatnonzero(u <= 0) + uu = u[ii] + x[ii] = np.exp(uu) / (1 + np.exp(uu)) + return -x + + return self.vb_elbo_grad_base(h, tm, tv, fep_mean, vcp_mean, vc_mean, + fep_sd, vcp_sd, vc_sd) + + +class PoissonBayesMixedGLM(_VariationalBayesMixedGLM, _BayesMixedGLM): + + __doc__ = _init_doc.format(example=_poisson_example) + + def __init__(self, + endog, + exog, + exog_vc, + ident, + vcp_p=1, + fe_p=2, + fep_names=None, + vcp_names=None, + vc_names=None): + + super(PoissonBayesMixedGLM, self).__init__( + endog=endog, + exog=exog, + exog_vc=exog_vc, + ident=ident, + vcp_p=vcp_p, + fe_p=fe_p, + family=families.Poisson(), + fep_names=fep_names, + vcp_names=vcp_names, + vc_names=vc_names) + + @classmethod + def from_formula(cls, + formula, + vc_formulas, + data, + vcp_p=1, + fe_p=2, + vcp_names=None, + vc_names=None): + + fam = families.Poisson() + x = _BayesMixedGLM.from_formula( + formula, + vc_formulas, + data, + family=fam, + vcp_p=vcp_p, + fe_p=fe_p) + + # Copy over to the intended class structure + mod = PoissonBayesMixedGLM( + endog=x.endog, + exog=x.exog, + exog_vc=x.exog_vc, + ident=x.ident, + vcp_p=x.vcp_p, + fe_p=x.fe_p, + fep_names=x.fep_names, + vcp_names=x.vcp_names, + vc_names=x.vc_names) + mod.data = x.data + + return mod + + def vb_elbo(self, vb_mean, vb_sd): + """ + Returns the evidence lower bound (ELBO) for the model. + """ + + fep_mean, vcp_mean, vc_mean = self._unpack(vb_mean) + fep_sd, vcp_sd, vc_sd = self._unpack(vb_sd) + tm, tv = self._lp_stats(fep_mean, fep_sd, vc_mean, vc_sd) + + def h(z): + return -np.exp(tm + np.sqrt(tv) * z) + + return self.vb_elbo_base(h, tm, fep_mean, vcp_mean, vc_mean, fep_sd, + vcp_sd, vc_sd) + + def vb_elbo_grad(self, vb_mean, vb_sd): + """ + Returns the gradient of the model's evidence lower bound (ELBO). + """ + + fep_mean, vcp_mean, vc_mean = self._unpack(vb_mean) + fep_sd, vcp_sd, vc_sd = self._unpack(vb_sd) + tm, tv = self._lp_stats(fep_mean, fep_sd, vc_mean, vc_sd) + + def h(z): + y = -np.exp(tm + np.sqrt(tv) * z) + return y + + return self.vb_elbo_grad_base(h, tm, tv, fep_mean, vcp_mean, vc_mean, + fep_sd, vcp_sd, vc_sd) diff --git a/statsmodels/genmod/cov_struct.py b/statsmodels/genmod/cov_struct.py new file mode 100644 index 0000000..05dcd18 --- /dev/null +++ b/statsmodels/genmod/cov_struct.py @@ -0,0 +1,1438 @@ +""" +Covariance models and estimators for GEE. + +Some details for the covariance calculations can be found in the Stata +docs: + +http://www.stata.com/manuals13/xtxtgee.pdf +""" + +from statsmodels.compat.python import iterkeys, itervalues, zip, range +from statsmodels.stats.correlation_tools import cov_nearest +import numpy as np +import pandas as pd +from scipy import linalg as spl +from collections import defaultdict +from statsmodels.tools.sm_exceptions import (ConvergenceWarning, OutputWarning, + NotImplementedWarning) +import warnings + + +class CovStruct(object): + """ + Base class for correlation and covariance structures. + + An implementation of this class takes the residuals from a + regression model that has been fit to grouped data, and uses + them to estimate the within-group dependence structure of the + random errors in the model. + + The current state of the covariance structure is represented + through the value of the `dep_params` attribute. + + The default state of a newly-created instance should always be + the identity correlation matrix. + """ + + def __init__(self, cov_nearest_method="clipped"): + + # Parameters describing the dependency structure + self.dep_params = None + + # Keep track of the number of times that the covariance was + # adjusted. + self.cov_adjust = [] + + # Method for projecting the covariance matrix if it is not + # PSD. + self.cov_nearest_method = cov_nearest_method + + def initialize(self, model): + """ + Called by GEE, used by implementations that need additional + setup prior to running `fit`. + + Parameters + ---------- + model : GEE class + A reference to the parent GEE class instance. + """ + self.model = model + + def update(self, params): + """ + Update the association parameter values based on the current + regression coefficients. + + Parameters + ---------- + params : array-like + Working values for the regression parameters. + """ + raise NotImplementedError + + def covariance_matrix(self, endog_expval, index): + """ + Returns the working covariance or correlation matrix for a + given cluster of data. + + Parameters + ---------- + endog_expval: array-like + The expected values of endog for the cluster for which the + covariance or correlation matrix will be returned + index: integer + The index of the cluster for which the covariane or + correlation matrix will be returned + + Returns + ------- + M: matrix + The covariance or correlation matrix of endog + is_cor: bool + True if M is a correlation matrix, False if M is a + covariance matrix + """ + raise NotImplementedError + + def covariance_matrix_solve(self, expval, index, stdev, rhs): + """ + Solves matrix equations of the form `covmat * soln = rhs` and + returns the values of `soln`, where `covmat` is the covariance + matrix represented by this class. + + Parameters + ---------- + expval: array-like + The expected value of endog for each observed value in the + group. + index: integer + The group index. + stdev : array-like + The standard deviation of endog for each observation in + the group. + rhs : list/tuple of array-like + A set of right-hand sides; each defines a matrix equation + to be solved. + + Returns + ------- + soln : list/tuple of array-like + The solutions to the matrix equations. + + Notes + ----- + Returns None if the solver fails. + + Some dependence structures do not use `expval` and/or `index` + to determine the correlation matrix. Some families + (e.g. binomial) do not use the `stdev` parameter when forming + the covariance matrix. + + If the covariance matrix is singular or not SPD, it is + projected to the nearest such matrix. These projection events + are recorded in the fit_history attribute of the GEE model. + + Systems of linear equations with the covariance matrix as the + left hand side (LHS) are solved for different right hand sides + (RHS); the LHS is only factorized once to save time. + + This is a default implementation, it can be reimplemented in + subclasses to optimize the linear algebra according to the + struture of the covariance matrix. + """ + + vmat, is_cor = self.covariance_matrix(expval, index) + if is_cor: + vmat *= np.outer(stdev, stdev) + + # Factor the covariance matrix. If the factorization fails, + # attempt to condition it into a factorizable matrix. + threshold = 1e-2 + success = False + cov_adjust = 0 + for itr in range(20): + try: + vco = spl.cho_factor(vmat) + success = True + break + except np.linalg.LinAlgError: + vmat = cov_nearest(vmat, method=self.cov_nearest_method, + threshold=threshold) + threshold *= 2 + cov_adjust += 1 + msg = "At least one covariance matrix was not PSD " + msg += "and required projection." + warnings.warn(msg) + + self.cov_adjust.append(cov_adjust) + + # Last resort if we still can't factor the covariance matrix. + if not success: + warnings.warn( + "Unable to condition covariance matrix to an SPD " + "matrix using cov_nearest", ConvergenceWarning) + vmat = np.diag(np.diag(vmat)) + vco = spl.cho_factor(vmat) + + soln = [spl.cho_solve(vco, x) for x in rhs] + return soln + + def summary(self): + """ + Returns a text summary of the current estimate of the + dependence structure. + """ + raise NotImplementedError + + +class Independence(CovStruct): + """ + An independence working dependence structure. + """ + + # Nothing to update + def update(self, params): + return + + def covariance_matrix(self, expval, index): + dim = len(expval) + return np.eye(dim, dtype=np.float64), True + + def covariance_matrix_solve(self, expval, index, stdev, rhs): + v = stdev ** 2 + rslt = [] + for x in rhs: + if x.ndim == 1: + rslt.append(x / v) + else: + rslt.append(x / v[:, None]) + return rslt + + update.__doc__ = CovStruct.update.__doc__ + covariance_matrix.__doc__ = CovStruct.covariance_matrix.__doc__ + covariance_matrix_solve.__doc__ = CovStruct.covariance_matrix_solve.__doc__ + + def summary(self): + return ("Observations within a cluster are modeled " + "as being independent.") + + +class Exchangeable(CovStruct): + """ + An exchangeable working dependence structure. + """ + + def __init__(self): + + super(Exchangeable, self).__init__() + + # The correlation between any two values in the same cluster + self.dep_params = 0. + + def update(self, params): + + endog = self.model.endog_li + + nobs = self.model.nobs + + varfunc = self.model.family.variance + + cached_means = self.model.cached_means + + has_weights = self.model.weights is not None + weights_li = self.model.weights + + residsq_sum, scale = 0, 0 + fsum1, fsum2, n_pairs = 0., 0., 0. + for i in range(self.model.num_group): + expval, _ = cached_means[i] + stdev = np.sqrt(varfunc(expval)) + resid = (endog[i] - expval) / stdev + f = weights_li[i] if has_weights else 1. + + ssr = np.sum(resid * resid) + scale += f * ssr + fsum1 += f * len(endog[i]) + + residsq_sum += f * (resid.sum() ** 2 - ssr) / 2 + ngrp = len(resid) + npr = 0.5 * ngrp * (ngrp - 1) + fsum2 += f * npr + n_pairs += npr + + ddof = self.model.ddof_scale + scale /= (fsum1 * (nobs - ddof) / float(nobs)) + residsq_sum /= scale + self.dep_params = residsq_sum / \ + (fsum2 * (n_pairs - ddof) / float(n_pairs)) + + def covariance_matrix(self, expval, index): + dim = len(expval) + dp = self.dep_params * np.ones((dim, dim), dtype=np.float64) + np.fill_diagonal(dp, 1) + return dp, True + + def covariance_matrix_solve(self, expval, index, stdev, rhs): + + k = len(expval) + c = self.dep_params / (1. - self.dep_params) + c /= 1. + self.dep_params * (k - 1) + + rslt = [] + for x in rhs: + if x.ndim == 1: + x1 = x / stdev + y = x1 / (1. - self.dep_params) + y -= c * sum(x1) + y /= stdev + else: + x1 = x / stdev[:, None] + y = x1 / (1. - self.dep_params) + y -= c * x1.sum(0) + y /= stdev[:, None] + rslt.append(y) + + return rslt + + update.__doc__ = CovStruct.update.__doc__ + covariance_matrix.__doc__ = CovStruct.covariance_matrix.__doc__ + covariance_matrix_solve.__doc__ = CovStruct.covariance_matrix_solve.__doc__ + + def summary(self): + return ("The correlation between two observations in the " + + "same cluster is %.3f" % self.dep_params) + + +class Nested(CovStruct): + """ + A nested working dependence structure. + + A working dependence structure that captures a nested hierarchy of + groups. Each level of grouping contributes to the random error + structure of the model. + + When using this working covariance structure, `dep_data` of the + GEE instance should contain a n_obs x k matrix of 0/1 indicators, + corresponding to the k subgroups nested under the top-level + `groups` of the GEE instance. These subgroups should be nested + from left to right, so that two observations with the same value + for column j of `dep_data` should also have the same value for all + columns j' < j (this only applies to observations in the same + top-level cluster given by the `groups` argument to GEE). + + Examples + -------- + Suppose our data are student test scores, and the students are in + classrooms, nested in schools, nested in school districts. The + school district is the highest level of grouping, so the school + district id would be provided to GEE as `groups`, and the school + and classroom id's would be provided to the Nested class as the + `dep_data` argument, e.g. + + 0 0 # School 0, classroom 0, student 0 + 0 0 # School 0, classroom 0, student 1 + 0 1 # School 0, classroom 1, student 0 + 0 1 # School 0, classroom 1, student 1 + 1 0 # School 1, classroom 0, student 0 + 1 0 # School 1, classroom 0, student 1 + 1 1 # School 1, classroom 1, student 0 + 1 1 # School 1, classroom 1, student 1 + + Labels lower in the hierarchy are recycled, so that student 0 in + classroom 0 is different fro student 0 in classroom 1, etc. + + Notes + ----- + The calculations for this dependence structure involve all pairs + of observations within a group (that is, within the top level + `group` structure passed to GEE). Large group sizes will result + in slow iterations. + + The variance components are estimated using least squares + regression of the products r*r', for standardized residuals r and + r' in the same group, on a matrix of indicators defining which + variance components are shared by r and r'. + """ + + def initialize(self, model): + """ + Called on the first call to update + + `ilabels` is a list of n_i x n_i matrices containing integer + labels that correspond to specific correlation parameters. + Two elements of ilabels[i] with the same label share identical + variance components. + + `designx` is a matrix, with each row containing dummy + variables indicating which variance components are associated + with the corresponding element of QY. + """ + + super(Nested, self).initialize(model) + + if self.model.weights is not None: + warnings.warn("weights not implemented for nested cov_struct, " + "using unweighted covariance estimate", + NotImplementedWarning) + + # A bit of processing of the nest data + id_matrix = np.asarray(self.model.dep_data) + if id_matrix.ndim == 1: + id_matrix = id_matrix[:, None] + self.id_matrix = id_matrix + + endog = self.model.endog_li + designx, ilabels = [], [] + + # The number of layers of nesting + n_nest = self.id_matrix.shape[1] + + for i in range(self.model.num_group): + ngrp = len(endog[i]) + glab = self.model.group_labels[i] + rix = self.model.group_indices[glab] + + # Determine the number of common variance components + # shared by each pair of observations. + ix1, ix2 = np.tril_indices(ngrp, -1) + ncm = (self.id_matrix[rix[ix1], :] == + self.id_matrix[rix[ix2], :]).sum(1) + + # This is used to construct the working correlation + # matrix. + ilabel = np.zeros((ngrp, ngrp), dtype=np.int32) + ilabel[(ix1, ix2)] = ncm + 1 + ilabel[(ix2, ix1)] = ncm + 1 + ilabels.append(ilabel) + + # This is used to estimate the variance components. + dsx = np.zeros((len(ix1), n_nest + 1), dtype=np.float64) + dsx[:, 0] = 1 + for k in np.unique(ncm): + ii = np.flatnonzero(ncm == k) + dsx[ii, 1:k + 1] = 1 + designx.append(dsx) + + self.designx = np.concatenate(designx, axis=0) + self.ilabels = ilabels + + svd = np.linalg.svd(self.designx, 0) + self.designx_u = svd[0] + self.designx_s = svd[1] + self.designx_v = svd[2].T + + def update(self, params): + + endog = self.model.endog_li + + nobs = self.model.nobs + dim = len(params) + + if self.designx is None: + self._compute_design(self.model) + + cached_means = self.model.cached_means + + varfunc = self.model.family.variance + + dvmat = [] + scale = 0. + for i in range(self.model.num_group): + + expval, _ = cached_means[i] + + stdev = np.sqrt(varfunc(expval)) + resid = (endog[i] - expval) / stdev + + ix1, ix2 = np.tril_indices(len(resid), -1) + dvmat.append(resid[ix1] * resid[ix2]) + + scale += np.sum(resid ** 2) + + dvmat = np.concatenate(dvmat) + scale /= (nobs - dim) + + # Use least squares regression to estimate the variance + # components + vcomp_coeff = np.dot(self.designx_v, np.dot(self.designx_u.T, + dvmat) / self.designx_s) + + self.vcomp_coeff = np.clip(vcomp_coeff, 0, np.inf) + self.scale = scale + + self.dep_params = self.vcomp_coeff.copy() + + def covariance_matrix(self, expval, index): + + dim = len(expval) + + # First iteration + if self.dep_params is None: + return np.eye(dim, dtype=np.float64), True + + ilabel = self.ilabels[index] + + c = np.r_[self.scale, np.cumsum(self.vcomp_coeff)] + vmat = c[ilabel] + vmat /= self.scale + return vmat, True + + update.__doc__ = CovStruct.update.__doc__ + covariance_matrix.__doc__ = CovStruct.covariance_matrix.__doc__ + + def summary(self): + """ + Returns a summary string describing the state of the + dependence structure. + """ + + dep_names = ["Groups"] + if hasattr(self.model, "_dep_data_names"): + dep_names.extend(self.model._dep_data_names) + else: + dep_names.extend(["Component %d:" % (k + 1) for k in range(len(self.vcomp_coeff) - 1)]) + if hasattr(self.model, "_groups_name"): + dep_names[0] = self.model._groups_name + dep_names.append("Residual") + + vc = self.vcomp_coeff.tolist() + vc.append(self.scale - np.sum(vc)) + + smry = pd.DataFrame({"Variance": vc}, index=dep_names) + + return smry + + +class Stationary(CovStruct): + """ + A stationary covariance structure. + + The correlation between two observations is an arbitrary function + of the distance between them. Distances up to a given maximum + value are included in the covariance model. + + Parameters + ---------- + max_lag : float + The largest distance that is included in the covariance model. + grid : bool + If True, the index positions in the data (after dropping missing + values) are used to define distances, and the `time` variable is + ignored. + """ + + def __init__(self, max_lag=1, grid=False): + + super(Stationary, self).__init__() + self.max_lag = max_lag + self.grid = grid + self.dep_params = np.zeros(max_lag + 1) + + def initialize(self, model): + + super(Stationary, self).initialize(model) + + # Time used as an index needs to be integer type. + if not self.grid: + time = self.model.time[:, 0].astype(np.int32) + self.time = self.model.cluster_list(time) + + def update(self, params): + + if self.grid: + self.update_grid(params) + else: + self.update_nogrid(params) + + def update_grid(self, params): + + endog = self.model.endog_li + cached_means = self.model.cached_means + varfunc = self.model.family.variance + + dep_params = np.zeros(self.max_lag + 1) + for i in range(self.model.num_group): + + expval, _ = cached_means[i] + stdev = np.sqrt(varfunc(expval)) + resid = (endog[i] - expval) / stdev + + dep_params[0] += np.sum(resid * resid) / len(resid) + for j in range(1, self.max_lag + 1): + v = resid[j:] + dep_params[j] += np.sum(resid[0:-j] * v) / len(v) + + dep_params /= dep_params[0] + self.dep_params = dep_params + + def update_nogrid(self, params): + + endog = self.model.endog_li + cached_means = self.model.cached_means + varfunc = self.model.family.variance + + dep_params = np.zeros(self.max_lag + 1) + dn = np.zeros(self.max_lag + 1) + resid_ssq = 0 + resid_ssq_n = 0 + for i in range(self.model.num_group): + + expval, _ = cached_means[i] + stdev = np.sqrt(varfunc(expval)) + resid = (endog[i] - expval) / stdev + + j1, j2 = np.tril_indices(len(expval), -1) + dx = np.abs(self.time[i][j1] - self.time[i][j2]) + ii = np.flatnonzero(dx <= self.max_lag) + j1 = j1[ii] + j2 = j2[ii] + dx = dx[ii] + + vs = np.bincount(dx, weights=resid[j1] * resid[j2], + minlength=self.max_lag + 1) + vd = np.bincount(dx, minlength=self.max_lag + 1) + + resid_ssq += np.sum(resid**2) + resid_ssq_n += len(resid) + + ii = np.flatnonzero(vd > 0) + if len(ii) > 0: + dn[ii] += 1 + dep_params[ii] += vs[ii] / vd[ii] + + i0 = np.flatnonzero(dn > 0) + dep_params[i0] /= dn[i0] + resid_msq = resid_ssq / resid_ssq_n + dep_params /= resid_msq + self.dep_params = dep_params + + def covariance_matrix(self, endog_expval, index): + + if self.grid: + return self.covariance_matrix_grid(endog_expval, index) + + j1, j2 = np.tril_indices(len(endog_expval), -1) + dx = np.abs(self.time[index][j1] - self.time[index][j2]) + ii = np.flatnonzero(dx <= self.max_lag) + j1 = j1[ii] + j2 = j2[ii] + dx = dx[ii] + + cmat = np.eye(len(endog_expval)) + cmat[j1, j2] = self.dep_params[dx] + cmat[j2, j1] = self.dep_params[dx] + + return cmat, True + + def covariance_matrix_grid(self, endog_expval, index): + + from scipy.linalg import toeplitz + r = np.zeros(len(endog_expval)) + r[0] = 1 + r[1:self.max_lag + 1] = self.dep_params[1:] + return toeplitz(r), True + + def covariance_matrix_solve(self, expval, index, stdev, rhs): + + if not self.grid: + return super(Stationary, self).covariance_matrix_solve( + expval, index, stdev, rhs) + + from statsmodels.tools.linalg import stationary_solve + r = np.zeros(len(expval)) + r[0:self.max_lag] = self.dep_params[1:] + return [stationary_solve(r, x) for x in rhs] + + update.__doc__ = CovStruct.update.__doc__ + covariance_matrix.__doc__ = CovStruct.covariance_matrix.__doc__ + covariance_matrix_solve.__doc__ = CovStruct.covariance_matrix_solve.__doc__ + + def summary(self): + + lag = np.arange(self.max_lag + 1) + return pd.DataFrame({"Lag": lag, "Cov": self.dep_params}) + + +class Autoregressive(CovStruct): + """ + A first-order autoregressive working dependence structure. + + The dependence is defined in terms of the `time` component of the + parent GEE class, which defaults to the index position of each + value within its cluster, based on the order of values in the + input data set. Time represents a potentially multidimensional + index from which distances between pairs of observations can be + determined. + + The correlation between two observations in the same cluster is + dep_params^distance, where `dep_params` contains the (scalar) + autocorrelation parameter to be estimated, and `distance` is the + distance between the two observations, calculated from their + corresponding time values. `time` is stored as an n_obs x k + matrix, where `k` represents the number of dimensions in the time + index. + + The autocorrelation parameter is estimated using weighted + nonlinear least squares, regressing each value within a cluster on + each preceeding value in the same cluster. + + Parameters + ---------- + dist_func: function from R^k x R^k to R^+, optional + A function that computes the distance between the two + observations based on their `time` values. + + References + ---------- + B Rosner, A Munoz. Autoregressive modeling for the analysis of + longitudinal data with unequally spaced examinations. Statistics + in medicine. Vol 7, 59-71, 1988. + """ + + def __init__(self, dist_func=None): + + super(Autoregressive, self).__init__() + + # The function for determining distances based on time + if dist_func is None: + self.dist_func = lambda x, y: np.abs(x - y).sum() + else: + self.dist_func = dist_func + + self.designx = None + + # The autocorrelation parameter + self.dep_params = 0. + + def update(self, params): + + if self.model.weights is not None: + warnings.warn("weights not implemented for autoregressive " + "cov_struct, using unweighted covariance estimate", + NotImplementedWarning) + + endog = self.model.endog_li + time = self.model.time_li + + # Only need to compute this once + if self.designx is not None: + designx = self.designx + else: + designx = [] + for i in range(self.model.num_group): + + ngrp = len(endog[i]) + if ngrp == 0: + continue + + # Loop over pairs of observations within a cluster + for j1 in range(ngrp): + for j2 in range(j1): + designx.append(self.dist_func(time[i][j1, :], + time[i][j2, :])) + + designx = np.array(designx) + self.designx = designx + + scale = self.model.estimate_scale() + varfunc = self.model.family.variance + cached_means = self.model.cached_means + + # Weights + var = 1. - self.dep_params ** (2 * designx) + var /= 1. - self.dep_params ** 2 + wts = 1. / var + wts /= wts.sum() + + residmat = [] + for i in range(self.model.num_group): + + expval, _ = cached_means[i] + stdev = np.sqrt(scale * varfunc(expval)) + resid = (endog[i] - expval) / stdev + + ngrp = len(resid) + for j1 in range(ngrp): + for j2 in range(j1): + residmat.append([resid[j1], resid[j2]]) + + residmat = np.array(residmat) + + # Need to minimize this + def fitfunc(a): + dif = residmat[:, 0] - (a ** designx) * residmat[:, 1] + return np.dot(dif ** 2, wts) + + # Left bracket point + b_lft, f_lft = 0., fitfunc(0.) + + # Center bracket point + b_ctr, f_ctr = 0.5, fitfunc(0.5) + while f_ctr > f_lft: + b_ctr /= 2 + f_ctr = fitfunc(b_ctr) + if b_ctr < 1e-8: + self.dep_params = 0 + return + + # Right bracket point + b_rgt, f_rgt = 0.75, fitfunc(0.75) + while f_rgt < f_ctr: + b_rgt = b_rgt + (1. - b_rgt) / 2 + f_rgt = fitfunc(b_rgt) + if b_rgt > 1. - 1e-6: + raise ValueError( + "Autoregressive: unable to find right bracket") + + from scipy.optimize import brent + self.dep_params = brent(fitfunc, brack=[b_lft, b_ctr, b_rgt]) + + def covariance_matrix(self, endog_expval, index): + ngrp = len(endog_expval) + if self.dep_params == 0: + return np.eye(ngrp, dtype=np.float64), True + idx = np.arange(ngrp) + cmat = self.dep_params ** np.abs(idx[:, None] - idx[None, :]) + return cmat, True + + def covariance_matrix_solve(self, expval, index, stdev, rhs): + # The inverse of an AR(1) covariance matrix is tri-diagonal. + + k = len(expval) + soln = [] + + # LHS has 1 column + if k == 1: + return [x / stdev ** 2 for x in rhs] + + # LHS has 2 columns + if k == 2: + mat = np.array([[1, -self.dep_params], [-self.dep_params, 1]]) + mat /= (1. - self.dep_params ** 2) + for x in rhs: + if x.ndim == 1: + x1 = x / stdev + else: + x1 = x / stdev[:, None] + x1 = np.dot(mat, x1) + if x.ndim == 1: + x1 /= stdev + else: + x1 /= stdev[:, None] + soln.append(x1) + return soln + + # LHS has >= 3 columns: values c0, c1, c2 defined below give + # the inverse. c0 is on the diagonal, except for the first + # and last position. c1 is on the first and last position of + # the diagonal. c2 is on the sub/super diagonal. + c0 = (1. + self.dep_params ** 2) / (1. - self.dep_params ** 2) + c1 = 1. / (1. - self.dep_params ** 2) + c2 = -self.dep_params / (1. - self.dep_params ** 2) + soln = [] + for x in rhs: + flatten = False + if x.ndim == 1: + x = x[:, None] + flatten = True + x1 = x / stdev[:, None] + + z0 = np.zeros((1, x.shape[1])) + rhs1 = np.concatenate((x[1:, :], z0), axis=0) + rhs2 = np.concatenate((z0, x[0:-1, :]), axis=0) + + y = c0 * x + c2 * rhs1 + c2 * rhs2 + y[0, :] = c1 * x[0, :] + c2 * x[1, :] + y[-1, :] = c1 * x[-1, :] + c2 * x[-2, :] + + y /= stdev[:, None] + + if flatten: + y = np.squeeze(y) + + soln.append(y) + + return soln + + update.__doc__ = CovStruct.update.__doc__ + covariance_matrix.__doc__ = CovStruct.covariance_matrix.__doc__ + covariance_matrix_solve.__doc__ = CovStruct.covariance_matrix_solve.__doc__ + + def summary(self): + + return ("Autoregressive(1) dependence parameter: %.3f\n" % + self.dep_params) + + +class CategoricalCovStruct(CovStruct): + """ + Parent class for covariance structure for categorical data models. + + Attributes + ---------- + nlevel : int + The number of distinct levels for the outcome variable. + ibd : list + A list whose i^th element ibd[i] is an array whose rows + contain integer pairs (a,b), where endog_li[i][a:b] is the + subvector of binary indicators derived from the same ordinal + value. + """ + + def initialize(self, model): + + super(CategoricalCovStruct, self).initialize(model) + + self.nlevel = len(model.endog_values) + self._ncut = self.nlevel - 1 + + from numpy.lib.stride_tricks import as_strided + b = np.dtype(np.int64).itemsize + + ibd = [] + for v in model.endog_li: + jj = np.arange(0, len(v) + 1, self._ncut, dtype=np.int64) + jj = as_strided(jj, shape=(len(jj) - 1, 2), strides=(b, b)) + ibd.append(jj) + + self.ibd = ibd + + +class GlobalOddsRatio(CategoricalCovStruct): + """ + Estimate the global odds ratio for a GEE with ordinal or nominal + data. + + References + ---------- + PJ Heagerty and S Zeger. "Marginal Regression Models for Clustered + Ordinal Measurements". Journal of the American Statistical + Association Vol. 91, Issue 435 (1996). + + Thomas Lumley. Generalized Estimating Equations for Ordinal Data: + A Note on Working Correlation Structures. Biometrics Vol. 52, + No. 1 (Mar., 1996), pp. 354-361 + http://www.jstor.org/stable/2533173 + + Notes + ----- + The following data structures are calculated in the class: + + 'ibd' is a list whose i^th element ibd[i] is a sequence of integer + pairs (a,b), where endog_li[i][a:b] is the subvector of binary + indicators derived from the same ordinal value. + + `cpp` is a dictionary where cpp[group] is a map from cut-point + pairs (c,c') to the indices of all between-subject pairs derived + from the given cut points. + """ + + def __init__(self, endog_type): + super(GlobalOddsRatio, self).__init__() + self.endog_type = endog_type + self.dep_params = 0. + + def initialize(self, model): + + super(GlobalOddsRatio, self).initialize(model) + + if self.model.weights is not None: + warnings.warn("weights not implemented for GlobalOddsRatio " + "cov_struct, using unweighted covariance estimate", + NotImplementedWarning) + + # Need to restrict to between-subject pairs + cpp = [] + for v in model.endog_li: + + # Number of subjects in this group + m = int(len(v) / self._ncut) + i1, i2 = np.tril_indices(m, -1) + + cpp1 = {} + for k1 in range(self._ncut): + for k2 in range(k1 + 1): + jj = np.zeros((len(i1), 2), dtype=np.int64) + jj[:, 0] = i1 * self._ncut + k1 + jj[:, 1] = i2 * self._ncut + k2 + cpp1[(k2, k1)] = jj + + cpp.append(cpp1) + + self.cpp = cpp + + # Initialize the dependence parameters + self.crude_or = self.observed_crude_oddsratio() + if self.model.update_dep: + self.dep_params = self.crude_or + + def pooled_odds_ratio(self, tables): + """ + Returns the pooled odds ratio for a list of 2x2 tables. + + The pooled odds ratio is the inverse variance weighted average + of the sample odds ratios of the tables. + """ + + if len(tables) == 0: + return 1. + + # Get the sampled odds ratios and variances + log_oddsratio, var = [], [] + for table in tables: + lor = np.log(table[1, 1]) + np.log(table[0, 0]) -\ + np.log(table[0, 1]) - np.log(table[1, 0]) + log_oddsratio.append(lor) + var.append((1 / table.astype(np.float64)).sum()) + + # Calculate the inverse variance weighted average + wts = [1 / v for v in var] + wtsum = sum(wts) + wts = [w / wtsum for w in wts] + log_pooled_or = sum([w * e for w, e in zip(wts, log_oddsratio)]) + + return np.exp(log_pooled_or) + + def covariance_matrix(self, expected_value, index): + + vmat = self.get_eyy(expected_value, index) + vmat -= np.outer(expected_value, expected_value) + return vmat, False + + def observed_crude_oddsratio(self): + """ + To obtain the crude (global) odds ratio, first pool all binary + indicators corresponding to a given pair of cut points (c,c'), + then calculate the odds ratio for this 2x2 table. The crude + odds ratio is the inverse variance weighted average of these + odds ratios. Since the covariate effects are ignored, this OR + will generally be greater than the stratified OR. + """ + + cpp = self.cpp + endog = self.model.endog_li + + # Storage for the contingency tables for each (c,c') + tables = {} + for ii in iterkeys(cpp[0]): + tables[ii] = np.zeros((2, 2), dtype=np.float64) + + # Get the observed crude OR + for i in range(len(endog)): + + # The observed joint values for the current cluster + yvec = endog[i] + endog_11 = np.outer(yvec, yvec) + endog_10 = np.outer(yvec, 1. - yvec) + endog_01 = np.outer(1. - yvec, yvec) + endog_00 = np.outer(1. - yvec, 1. - yvec) + + cpp1 = cpp[i] + for ky in iterkeys(cpp1): + ix = cpp1[ky] + tables[ky][1, 1] += endog_11[ix[:, 0], ix[:, 1]].sum() + tables[ky][1, 0] += endog_10[ix[:, 0], ix[:, 1]].sum() + tables[ky][0, 1] += endog_01[ix[:, 0], ix[:, 1]].sum() + tables[ky][0, 0] += endog_00[ix[:, 0], ix[:, 1]].sum() + + return self.pooled_odds_ratio(list(itervalues(tables))) + + def get_eyy(self, endog_expval, index): + """ + Returns a matrix V such that V[i,j] is the joint probability + that endog[i] = 1 and endog[j] = 1, based on the marginal + probabilities of endog and the global odds ratio `current_or`. + """ + + current_or = self.dep_params + ibd = self.ibd[index] + + # The between-observation joint probabilities + if current_or == 1.0: + vmat = np.outer(endog_expval, endog_expval) + else: + psum = endog_expval[:, None] + endog_expval[None, :] + pprod = endog_expval[:, None] * endog_expval[None, :] + pfac = np.sqrt((1. + psum * (current_or - 1.)) ** 2 + + 4 * current_or * (1. - current_or) * pprod) + vmat = 1. + psum * (current_or - 1.) - pfac + vmat /= 2. * (current_or - 1) + + # Fix E[YY'] for elements that belong to same observation + for bdl in ibd: + evy = endog_expval[bdl[0]:bdl[1]] + if self.endog_type == "ordinal": + vmat[bdl[0]:bdl[1], bdl[0]:bdl[1]] =\ + np.minimum.outer(evy, evy) + else: + vmat[bdl[0]:bdl[1], bdl[0]:bdl[1]] = np.diag(evy) + + return vmat + + def update(self, params): + """ + Update the global odds ratio based on the current value of + params. + """ + + cpp = self.cpp + cached_means = self.model.cached_means + + # This will happen if all the clusters have only + # one observation + if len(cpp[0]) == 0: + return + + tables = {} + for ii in cpp[0]: + tables[ii] = np.zeros((2, 2), dtype=np.float64) + + for i in range(self.model.num_group): + + endog_expval, _ = cached_means[i] + + emat_11 = self.get_eyy(endog_expval, i) + emat_10 = endog_expval[:, None] - emat_11 + emat_01 = -emat_11 + endog_expval + emat_00 = 1. - (emat_11 + emat_10 + emat_01) + + cpp1 = cpp[i] + for ky in iterkeys(cpp1): + ix = cpp1[ky] + tables[ky][1, 1] += emat_11[ix[:, 0], ix[:, 1]].sum() + tables[ky][1, 0] += emat_10[ix[:, 0], ix[:, 1]].sum() + tables[ky][0, 1] += emat_01[ix[:, 0], ix[:, 1]].sum() + tables[ky][0, 0] += emat_00[ix[:, 0], ix[:, 1]].sum() + + cor_expval = self.pooled_odds_ratio(list(itervalues(tables))) + + self.dep_params *= self.crude_or / cor_expval + if not np.isfinite(self.dep_params): + self.dep_params = 1. + warnings.warn("dep_params became inf, resetting to 1", + ConvergenceWarning) + + update.__doc__ = CovStruct.update.__doc__ + covariance_matrix.__doc__ = CovStruct.covariance_matrix.__doc__ + + def summary(self): + + return "Global odds ratio: %.3f\n" % self.dep_params + + +class OrdinalIndependence(CategoricalCovStruct): + """ + An independence covariance structure for ordinal models. + + The working covariance between indicators derived from different + observations is zero. The working covariance between indicators + derived form a common observation is determined from their current + mean values. + + There are no parameters to estimate in this covariance structure. + """ + + def covariance_matrix(self, expected_value, index): + + ibd = self.ibd[index] + n = len(expected_value) + vmat = np.zeros((n, n)) + + for bdl in ibd: + ev = expected_value[bdl[0]:bdl[1]] + vmat[bdl[0]:bdl[1], bdl[0]:bdl[1]] =\ + np.minimum.outer(ev, ev) - np.outer(ev, ev) + + return vmat, False + + # Nothing to update + def update(self, params): + pass + + +class NominalIndependence(CategoricalCovStruct): + """ + An independence covariance structure for nominal models. + + The working covariance between indicators derived from different + observations is zero. The working covariance between indicators + derived form a common observation is determined from their current + mean values. + + There are no parameters to estimate in this covariance structure. + """ + + def covariance_matrix(self, expected_value, index): + + ibd = self.ibd[index] + n = len(expected_value) + vmat = np.zeros((n, n)) + + for bdl in ibd: + ev = expected_value[bdl[0]:bdl[1]] + vmat[bdl[0]:bdl[1], bdl[0]:bdl[1]] =\ + np.diag(ev) - np.outer(ev, ev) + + return vmat, False + + # Nothing to update + def update(self, params): + pass + + +class Equivalence(CovStruct): + """ + A covariance structure defined in terms of equivalence classes. + + An 'equivalence class' is a set of pairs of observations such that + the covariance of every pair within the equivalence class has a + common value. + + Parameters + ---------- + pairs : dict-like + A dictionary of dictionaries, where `pairs[group][label]` + provides the indices of all pairs of observations in the group + that have the same covariance value. Specifically, + `pairs[group][label]` is a tuple `(j1, j2)`, where `j1` and `j2` + are integer arrays of the same length. `j1[i], j2[i]` is one + index pair that belongs to the `label` equivalence class. Only + one triangle of each covariance matrix should be included. + Positions where j1 and j2 have the same value are variance + parameters. + labels : array-like + An array of labels such that every distinct pair of labels + defines an equivalence class. Either `labels` or `pairs` must + be provided. When the two labels in a pair are equal two + equivalence classes are defined: one for the diagonal elements + (corresponding to variances) and one for the off-diagonal + elements (corresponding to covariances). + return_cov : boolean + If True, `covariance_matrix` returns an estimate of the + covariance matrix, otherwise returns an estimate of the + correlation matrix. + + Notes + ----- + Using `labels` to define the class is much easier than using + `pairs`, but is less general. + + Any pair of values not contained in `pairs` will be assigned zero + covariance. + + The index values in `pairs` are row indices into the `exog` + matrix. They are not updated if missing data are present. When + using this covariance structure, missing data should be removed + before constructing the model. + + If using `labels`, after a model is defined using the covariance + structure it is possible to remove a label pair from the second + level of the `pairs` dictionary to force the corresponding + covariance to be zero. + + Examples + -------- + The following sets up the `pairs` dictionary for a model with two + groups, equal variance for all observations, and constant + covariance for all pairs of observations within each group. + + >> pairs = {0: {}, 1: {}} + >> pairs[0][0] = (np.r_[0, 1, 2], np.r_[0, 1, 2]) + >> pairs[0][1] = np.tril_indices(3, -1) + >> pairs[1][0] = (np.r_[3, 4, 5], np.r_[3, 4, 5]) + >> pairs[1][2] = 3 + np.tril_indices(3, -1) + """ + + def __init__(self, pairs=None, labels=None, return_cov=False): + + super(Equivalence, self).__init__() + + if (pairs is None) and (labels is None): + raise ValueError( + "Equivalence cov_struct requires either `pairs` or `labels`") + + if (pairs is not None) and (labels is not None): + raise ValueError( + "Equivalence cov_struct accepts only one of `pairs` " + "and `labels`") + + if pairs is not None: + import copy + self.pairs = copy.deepcopy(pairs) + + if labels is not None: + self.labels = np.asarray(labels) + + self.return_cov = return_cov + + def _make_pairs(self, i, j): + """ + Create arrays containing all unique ordered pairs of i, j. + + The arrays i and j must be one-dimensional containing non-negative + integers. + """ + + mat = np.zeros((len(i) * len(j), 2), dtype=np.int32) + + # Create the pairs and order them + f = np.ones(len(j)) + mat[:, 0] = np.kron(f, i).astype(np.int32) + f = np.ones(len(i)) + mat[:, 1] = np.kron(j, f).astype(np.int32) + mat.sort(1) + + # Remove repeated rows + try: + dtype = np.dtype((np.void, mat.dtype.itemsize * mat.shape[1])) + bmat = np.ascontiguousarray(mat).view(dtype) + _, idx = np.unique(bmat, return_index=True) + except TypeError: + # workaround for old numpy that can't call unique with complex + # dtypes + rs = np.random.RandomState(4234) + bmat = np.dot(mat, rs.uniform(size=mat.shape[1])) + _, idx = np.unique(bmat, return_index=True) + mat = mat[idx, :] + + return mat[:, 0], mat[:, 1] + + def _pairs_from_labels(self): + + from collections import defaultdict + pairs = defaultdict(lambda: defaultdict(lambda: None)) + + model = self.model + + df = pd.DataFrame({"labels": self.labels, "groups": model.groups}) + gb = df.groupby(["groups", "labels"]) + + ulabels = np.unique(self.labels) + + for g_ix, g_lb in enumerate(model.group_labels): + + # Loop over label pairs + for lx1 in range(len(ulabels)): + for lx2 in range(lx1 + 1): + + lb1 = ulabels[lx1] + lb2 = ulabels[lx2] + + try: + i1 = gb.groups[(g_lb, lb1)] + i2 = gb.groups[(g_lb, lb2)] + except KeyError: + continue + + i1, i2 = self._make_pairs(i1, i2) + + clabel = str(lb1) + "/" + str(lb2) + + # Variance parameters belong in their own equiv class. + jj = np.flatnonzero(i1 == i2) + if len(jj) > 0: + clabelv = clabel + "/v" + pairs[g_lb][clabelv] = (i1[jj], i2[jj]) + + # Covariance parameters + jj = np.flatnonzero(i1 != i2) + if len(jj) > 0: + i1 = i1[jj] + i2 = i2[jj] + pairs[g_lb][clabel] = (i1, i2) + + self.pairs = pairs + + def initialize(self, model): + + super(Equivalence, self).initialize(model) + + if self.model.weights is not None: + warnings.warn("weights not implemented for equalence cov_struct, " + "using unweighted covariance estimate", + NotImplementedWarning) + + if not hasattr(self, 'pairs'): + self._pairs_from_labels() + + # Initialize so that any equivalence class containing a + # variance parameter has value 1. + self.dep_params = defaultdict(lambda: 0.) + self._var_classes = set([]) + for gp in self.model.group_labels: + for lb in self.pairs[gp]: + j1, j2 = self.pairs[gp][lb] + if np.any(j1 == j2): + if not np.all(j1 == j2): + warnings.warn( + "equivalence class contains both variance " + "and covariance parameters", OutputWarning) + self._var_classes.add(lb) + self.dep_params[lb] = 1 + + # Need to start indexing at 0 within each group. + # rx maps olds indices to new indices + rx = -1 * np.ones(len(self.model.endog), dtype=np.int32) + for g_ix, g_lb in enumerate(self.model.group_labels): + ii = self.model.group_indices[g_lb] + rx[ii] = np.arange(len(ii), dtype=np.int32) + + # Reindex + for gp in self.model.group_labels: + for lb in self.pairs[gp].keys(): + a, b = self.pairs[gp][lb] + self.pairs[gp][lb] = (rx[a], rx[b]) + + def update(self, params): + + endog = self.model.endog_li + varfunc = self.model.family.variance + cached_means = self.model.cached_means + dep_params = defaultdict(lambda: [0., 0., 0.]) + n_pairs = defaultdict(lambda: 0) + dim = len(params) + + for k, gp in enumerate(self.model.group_labels): + expval, _ = cached_means[k] + stdev = np.sqrt(varfunc(expval)) + resid = (endog[k] - expval) / stdev + for lb in self.pairs[gp].keys(): + if (not self.return_cov) and lb in self._var_classes: + continue + jj = self.pairs[gp][lb] + dep_params[lb][0] += np.sum(resid[jj[0]] * resid[jj[1]]) + if not self.return_cov: + dep_params[lb][1] += np.sum(resid[jj[0]] ** 2) + dep_params[lb][2] += np.sum(resid[jj[1]] ** 2) + n_pairs[lb] += len(jj[0]) + + if self.return_cov: + for lb in dep_params.keys(): + dep_params[lb] = dep_params[lb][0] / (n_pairs[lb] - dim) + else: + for lb in dep_params.keys(): + den = np.sqrt(dep_params[lb][1] * dep_params[lb][2]) + dep_params[lb] = dep_params[lb][0] / den + for lb in self._var_classes: + dep_params[lb] = 1. + + self.dep_params = dep_params + self.n_pairs = n_pairs + + def covariance_matrix(self, expval, index): + dim = len(expval) + cmat = np.zeros((dim, dim)) + g_lb = self.model.group_labels[index] + + for lb in self.pairs[g_lb].keys(): + j1, j2 = self.pairs[g_lb][lb] + cmat[j1, j2] = self.dep_params[lb] + + cmat = cmat + cmat.T + np.fill_diagonal(cmat, cmat.diagonal() / 2) + + return cmat, not self.return_cov + + update.__doc__ = CovStruct.update.__doc__ + covariance_matrix.__doc__ = CovStruct.covariance_matrix.__doc__ diff --git a/statsmodels/genmod/families/__init__.py b/statsmodels/genmod/families/__init__.py new file mode 100644 index 0000000..a45a9e4 --- /dev/null +++ b/statsmodels/genmod/families/__init__.py @@ -0,0 +1,21 @@ +""" +This module contains the one-parameter exponential families used +for fitting GLMs and GAMs. + +These families are described in + + P. McCullagh and J. A. Nelder. "Generalized linear models." + Monographs on Statistics and Applied Probability. + Chapman & Hall, London, 1983. + +""" + +from statsmodels.genmod.families import links +from .family import Gaussian, Family, Poisson, Gamma, \ + InverseGaussian, Binomial, NegativeBinomial, Tweedie +from statsmodels.tools._testing import PytestTester + +__all__ = ['test', 'links', 'Family', 'Gamma', 'Gaussian', 'Poisson', + 'InverseGaussian', 'Binomial', 'NegativeBinomial', 'Tweedie'] + +test = PytestTester() diff --git a/statsmodels/genmod/families/family.py b/statsmodels/genmod/families/family.py new file mode 100644 index 0000000..37ed067 --- /dev/null +++ b/statsmodels/genmod/families/family.py @@ -0,0 +1,1555 @@ +''' +The one parameter exponential family distributions used by GLM. +''' +# TODO: quasi, quasibinomial, quasipoisson +# see +# http://www.biostat.jhsph.edu/~qli/biostatistics_r_doc/library/stats/html/family.html +# for comparison to R, and McCullagh and Nelder + + +import warnings +import inspect +import numpy as np +from scipy import special +from . import links as L +from . import varfuncs as V + +FLOAT_EPS = np.finfo(float).eps + + +class Family(object): + """ + The parent class for one-parameter exponential families. + + Parameters + ---------- + link : a link function instance + Link is the linear transformation function. + See the individual families for available links. + variance : a variance function + Measures the variance as a function of the mean probabilities. + See the individual families for the default variance function. + + See Also + -------- + :ref:`links` + """ + # TODO: change these class attributes, use valid somewhere... + valid = [-np.inf, np.inf] + links = [] + + def _setlink(self, link): + """ + Helper method to set the link for a family. + + Raises a ``ValueError`` exception if the link is not available. Note + that the error message might not be that informative because it tells + you that the link should be in the base class for the link function. + + See statsmodels.genmod.generalized_linear_model.GLM for a list of + appropriate links for each family but note that not all of these are + currently available. + """ + # TODO: change the links class attribute in the families to hold + # meaningful information instead of a list of links instances such as + # [, + # , + # ] + # for Poisson... + self._link = link + if not isinstance(link, L.Link): + raise TypeError("The input should be a valid Link object.") + if hasattr(self, "links"): + validlink = max([isinstance(link, _) for _ in self.links]) + if not validlink: + errmsg = "Invalid link for family, should be in %s. (got %s)" + raise ValueError(errmsg % (repr(self.links), link)) + + def _getlink(self): + """ + Helper method to get the link for a family. + """ + return self._link + + # link property for each family is a pointer to link instance + link = property(_getlink, _setlink, doc="Link function for family") + + def __init__(self, link, variance): + if inspect.isclass(link): + warnmssg = "Calling Family(..) with a link class as argument " + warnmssg += "is deprecated.\n" + warnmssg += "Use an instance of a link class instead." + lvl = 2 if type(self) is Family else 3 + warnings.warn(warnmssg, + category=DeprecationWarning, stacklevel=lvl) + self.link = link() + else: + self.link = link + self.variance = variance + + def starting_mu(self, y): + r""" + Starting value for mu in the IRLS algorithm. + + Parameters + ---------- + y : array + The untransformed response variable. + + Returns + ------- + mu_0 : array + The first guess on the transformed response variable. + + Notes + ----- + .. math:: + + \mu_0 = (Y + \overline{Y})/2 + + Only the Binomial family takes a different initial value. + """ + return (y + y.mean())/2. + + def weights(self, mu): + r""" + Weights for IRLS steps + + Parameters + ---------- + mu : array-like + The transformed mean response variable in the exponential family + + Returns + ------- + w : array + The weights for the IRLS steps + + Notes + ----- + .. math:: + + w = 1 / (g'(\mu)^2 * Var(\mu)) + """ + return 1. / (self.link.deriv(mu)**2 * self.variance(mu)) + + def deviance(self, endog, mu, var_weights=1., freq_weights=1., scale=1.): + r""" + The deviance function evaluated at (endog, mu, var_weights, + freq_weights, scale) for the distribution. + + Deviance is usually defined as twice the loglikelihood ratio. + + Parameters + ---------- + endog : array-like + The endogenous response variable + mu : array-like + The inverse of the link function at the linear predicted values. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + freq_weights : array-like + 1d array of frequency weights. The default is 1. + scale : float, optional + An optional scale argument. The default is 1. + + Returns + ------- + Deviance : array + The value of deviance function defined below. + + Notes + ----- + Deviance is defined + + .. math:: + + D = 2\sum_i (freq\_weights_i * var\_weights * + (llf(endog_i, endog_i) - llf(endog_i, \mu_i))) + + where y is the endogenous variable. The deviance functions are + analytically defined for each family. + + Internally, we calculate deviance as: + + .. math:: + D = \sum_i freq\_weights_i * var\_weights * resid\_dev_i / scale + """ + resid_dev = self._resid_dev(endog, mu) + return np.sum(resid_dev * freq_weights * var_weights / scale) + + def resid_dev(self, endog, mu, var_weights=1., scale=1.): + r""" + The deviance residuals + + Parameters + ---------- + endog : array-like + The endogenous response variable + mu : array-like + The inverse of the link function at the linear predicted values. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float, optional + An optional scale argument. The default is 1. + + Returns + ------- + resid_dev : float + Deviance residuals as defined below. + + Notes + ----- + The deviance residuals are defined by the contribution D_i of + observation i to the deviance as + + .. math:: + resid\_dev_i = sign(y_i-\mu_i) \sqrt{D_i} + + D_i is calculated from the _resid_dev method in each family. + Distribution-specific documentation of the calculation is available + there. + """ + resid_dev = self._resid_dev(endog, mu) + resid_dev *= var_weights / scale + return np.sign(endog - mu) * np.sqrt(np.clip(resid_dev, 0., np.inf)) + + def fitted(self, lin_pred): + r""" + Fitted values based on linear predictors lin_pred. + + Parameters + ---------- + lin_pred : array + Values of the linear predictor of the model. + :math:`X \cdot \beta` in a classical linear model. + + Returns + ------- + mu : array + The mean response variables given by the inverse of the link + function. + """ + fits = self.link.inverse(lin_pred) + return fits + + def predict(self, mu): + """ + Linear predictors based on given mu values. + + Parameters + ---------- + mu : array + The mean response variables + + Returns + ------- + lin_pred : array + Linear predictors based on the mean response variables. The value + of the link function at the given mu. + """ + return self.link(mu) + + def loglike_obs(self, endog, mu, var_weights=1., scale=1.): + r""" + The log-likelihood function for each observation in terms of the fitted + mean response for the distribution. + + Parameters + ---------- + endog : array + Usually the endogenous response variable. + mu : array + Usually but not always the fitted mean response variable. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float + The scale parameter. The default is 1. + + Returns + ------- + ll_i : float + The value of the loglikelihood evaluated at + (endog, mu, var_weights, scale) as defined below. + + Notes + ----- + This is defined for each family. endog and mu are not restricted to + ``endog`` and ``mu`` respectively. For instance, you could call + both ``loglike(endog, endog)`` and ``loglike(endog, mu)`` to get the + log-likelihood ratio. + """ + raise NotImplementedError + + def loglike(self, endog, mu, var_weights=1., freq_weights=1., scale=1.): + r""" + The log-likelihood function in terms of the fitted mean response. + + Parameters + ---------- + endog : array + Usually the endogenous response variable. + mu : array + Usually but not always the fitted mean response variable. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + freq_weights : array-like + 1d array of frequency weights. The default is 1. + scale : float + The scale parameter. The default is 1. + + Returns + ------- + ll : float + The value of the loglikelihood evaluated at + (endog, mu, var_weights, freq_weights, scale) as defined below. + + Notes + ----- + Where :math:`ll_i` is the by-observation log-likelihood: + + .. math:: + ll = \sum(ll_i * freq\_weights_i) + + ``ll_i`` is defined for each family. endog and mu are not restricted + to ``endog`` and ``mu`` respectively. For instance, you could call + both ``loglike(endog, endog)`` and ``loglike(endog, mu)`` to get the + log-likelihood ratio. + """ + ll_obs = self.loglike_obs(endog, mu, var_weights, scale) + return np.sum(ll_obs * freq_weights) + + def resid_anscombe(self, endog, mu, var_weights=1., scale=1.): + r""" + The Anscombe residuals + + Parameters + ---------- + endog : array + The endogenous response variable + mu : array + The inverse of the link function at the linear predicted values. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float, optional + An optional argument to divide the residuals by sqrt(scale). + The default is 1. + + See Also + -------- + statsmodels.genmod.families.family.Family : `resid_anscombe` for the + individual families for more information + + Notes + ----- + Anscombe residuals are defined by + + .. math:: + resid\_anscombe_i = \frac{A(y)-A(\mu)}{A'(\mu)\sqrt{Var[\mu]}} * + \sqrt(var\_weights) + + where :math:`A'(y)=v(y)^{-\frac{1}{3}}` and :math:`v(\mu)` is the + variance function :math:`Var[y]=\frac{\phi}{w}v(mu)`. + The transformation :math:`A(y)` makes the residuals more normal + distributed. + """ + raise NotImplementedError + + def _clean(self, x): + """ + Helper function to trim the data so that it is in (0,inf) + + Notes + ----- + The need for this function was discovered through usage and its + possible that other families might need a check for validity of the + domain. + """ + return np.clip(x, FLOAT_EPS, np.inf) + + +class Poisson(Family): + """ + Poisson exponential family. + + Parameters + ---------- + link : a link instance, optional + The default link for the Poisson family is the log link. Available + links are log, identity, and sqrt. See statsmodels.families.links for + more information. + + Attributes + ---------- + Poisson.link : a link instance + The link function of the Poisson instance. + Poisson.variance : varfuncs instance + ``variance`` is an instance of + statsmodels.genmod.families.varfuncs.mu + + See Also + -------- + statsmodels.genmod.families.family.Family + :ref:`links` + """ + links = [L.log, L.identity, L.sqrt] + variance = V.mu + valid = [0, np.inf] + safe_links = [L.Log, ] + + def __init__(self, link=None): + if link is None: + link = L.log() + super(Poisson, self).__init__(link=link, variance=Poisson.variance) + + def _resid_dev(self, endog, mu): + r""" + Poisson deviance residuals + + Parameters + ---------- + endog : array + The endogenous response variable. + mu : array + The inverse of the link function at the linear predicted values. + + Returns + ------- + resid_dev : float + Deviance residuals as defined below. + + Notes + ----- + .. math:: + + resid\_dev_i = 2 * (endog_i * \ln(endog_i / \mu_i) - + (endog_i - \mu_i)) + """ + endog_mu = self._clean(endog / mu) + resid_dev = endog * np.log(endog_mu) - (endog - mu) + return 2 * resid_dev + + def loglike_obs(self, endog, mu, var_weights=1., scale=1.): + r""" + The log-likelihood function for each observation in terms of the fitted + mean response for the Poisson distribution. + + Parameters + ---------- + endog : array + Usually the endogenous response variable. + mu : array + Usually but not always the fitted mean response variable. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float + The scale parameter. The default is 1. + + Returns + ------- + ll_i : float + The value of the loglikelihood evaluated at + (endog, mu, var_weights, scale) as defined below. + + Notes + ----- + .. math:: + ll_i = var\_weights_i / scale * (endog_i * \ln(\mu_i) - \mu_i - + \ln \Gamma(endog_i + 1)) + """ + return var_weights / scale * (endog * np.log(mu) - mu - + special.gammaln(endog + 1)) + + def resid_anscombe(self, endog, mu, var_weights=1., scale=1.): + r""" + The Anscombe residuals + + Parameters + ---------- + endog : array + The endogenous response variable + mu : array + The inverse of the link function at the linear predicted values. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float, optional + An optional argument to divide the residuals by sqrt(scale). + The default is 1. + + Returns + ------- + resid_anscombe : array + The Anscome residuals for the Poisson family defined below + + Notes + ----- + .. math:: + + resid\_anscombe_i = (3/2) * (endog_i^{2/3} - \mu_i^{2/3}) / + \mu_i^{1/6} * \sqrt(var\_weights) + """ + resid = ((3 / 2.) * (endog**(2 / 3.) - mu**(2 / 3.)) / + (mu ** (1 / 6.) * scale ** 0.5)) + resid *= np.sqrt(var_weights) + return resid + + +class Gaussian(Family): + """ + Gaussian exponential family distribution. + + Parameters + ---------- + link : a link instance, optional + The default link for the Gaussian family is the identity link. + Available links are log, identity, and inverse. + See statsmodels.genmod.families.links for more information. + + Attributes + ---------- + Gaussian.link : a link instance + The link function of the Gaussian instance + Gaussian.variance : varfunc instance + ``variance`` is an instance of + statsmodels.genmod.families.varfuncs.constant + + See Also + -------- + statsmodels.genmod.families.family.Family + :ref:`links` + """ + + links = [L.log, L.identity, L.inverse_power] + variance = V.constant + safe_links = links + + def __init__(self, link=None): + if link is None: + link = L.identity() + super(Gaussian, self).__init__(link=link, variance=Gaussian.variance) + + def _resid_dev(self, endog, mu): + r""" + Gaussian deviance residuals + + Parameters + ---------- + endog : array + The endogenous response variable. + mu : array + The inverse of the link function at the linear predicted values. + + Returns + ------- + resid_dev : float + Deviance residuals as defined below. + + Notes + -------- + .. math:: + + resid\_dev_i = (endog_i - \mu_i) ** 2 + """ + return (endog - mu) ** 2 + + def loglike_obs(self, endog, mu, var_weights=1., scale=1.): + r""" + The log-likelihood function for each observation in terms of the fitted + mean response for the Gaussian distribution. + + Parameters + ---------- + endog : array + Usually the endogenous response variable. + mu : array + Usually but not always the fitted mean response variable. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float + The scale parameter. The default is 1. + + Returns + ------- + ll_i : float + The value of the loglikelihood evaluated at + (endog, mu, var_weights, scale) as defined below. + + Notes + ----- + If the link is the identity link function then the + loglikelihood function is the same as the classical OLS model. + + .. math:: + + llf = -nobs / 2 * (\log(SSR) + (1 + \log(2 \pi / nobs))) + + where + + .. math:: + + SSR = \sum_i (Y_i - g^{-1}(\mu_i))^2 + + If the links is not the identity link then the loglikelihood + function is defined as + + .. math:: + + ll_i = -1 / 2 \sum_i * var\_weights * ((Y_i - mu_i)^2 / scale + + \log(2 * \pi * scale)) + """ + ll_obs = -var_weights * (endog - mu) ** 2 / scale + ll_obs += -np.log(scale / var_weights) - np.log(2 * np.pi) + ll_obs /= 2 + return ll_obs + + def resid_anscombe(self, endog, mu, var_weights=1., scale=1.): + r""" + The Anscombe residuals + + Parameters + ---------- + endog : array + The endogenous response variable + mu : array + The inverse of the link function at the linear predicted values. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float, optional + An optional argument to divide the residuals by sqrt(scale). + The default is 1. + + Returns + ------- + resid_anscombe : array + The Anscombe residuals for the Gaussian family defined below + + Notes + ----- + For the Gaussian distribution, Anscombe residuals are the same as + deviance residuals. + + .. math:: + + resid\_anscombe_i = (Y_i - \mu_i) / \sqrt{scale} * + \sqrt(var\_weights) + """ + resid = (endog - mu) / scale ** 0.5 + resid *= np.sqrt(var_weights) + return resid + + +class Gamma(Family): + """ + Gamma exponential family distribution. + + Parameters + ---------- + link : a link instance, optional + The default link for the Gamma family is the inverse link. + Available links are log, identity, and inverse. + See statsmodels.genmod.families.links for more information. + + Attributes + ---------- + Gamma.link : a link instance + The link function of the Gamma instance + Gamma.variance : varfunc instance + ``variance`` is an instance of + statsmodels.genmod.family.varfuncs.mu_squared + + See Also + -------- + statsmodels.genmod.families.family.Family + :ref:`links` + """ + links = [L.log, L.identity, L.inverse_power] + variance = V.mu_squared + safe_links = [L.Log, ] + + def __init__(self, link=None): + if link is None: + link = L.inverse_power() + super(Gamma, self).__init__(link=link, variance=Gamma.variance) + + def _resid_dev(self, endog, mu): + r""" + Gamma deviance residuals + + Parameters + ---------- + endog : array + The endogenous response variable. + mu : array + The inverse of the link function at the linear predicted values. + + Returns + ------- + resid_dev : float + Deviance residuals as defined below. + + Notes + ----- + .. math:: + + resid\_dev_i = 2 * ((endog_i - \mu_i) / \mu_i - + \log(endog_i / \mu_i)) + """ + endog_mu = self._clean(endog / mu) + resid_dev = -np.log(endog_mu) + (endog - mu) / mu + return 2 * resid_dev + + def loglike_obs(self, endog, mu, var_weights=1., scale=1.): + r""" + The log-likelihood function for each observation in terms of the fitted + mean response for the Gamma distribution. + + Parameters + ---------- + endog : array + Usually the endogenous response variable. + mu : array + Usually but not always the fitted mean response variable. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float + The scale parameter. The default is 1. + + Returns + ------- + ll_i : float + The value of the loglikelihood evaluated at + (endog, mu, var_weights, scale) as defined below. + + Notes + ----- + .. math:: + + ll_i = var\_weights_i / scale * (\ln(var\_weights_i * endog_i / + (scale * \mu_i)) - (var\_weights_i * endog_i) / + (scale * \mu_i)) - \ln \Gamma(var\_weights_i / scale) - \ln(\mu_i) + """ + endog_mu = self._clean(endog / mu) + weight_scale = var_weights / scale + ll_obs = weight_scale * np.log(weight_scale * endog_mu) + ll_obs -= weight_scale * endog_mu + ll_obs -= special.gammaln(weight_scale) + np.log(endog) + return ll_obs + + # in Stata scale is set to equal 1 for reporting llf + # in R it's the dispersion, though there is a loss of precision vs. + # our results due to an assumed difference in implementation + + def resid_anscombe(self, endog, mu, var_weights=1., scale=1.): + r""" + The Anscombe residuals + + Parameters + ---------- + endog : array + The endogenous response variable + mu : array + The inverse of the link function at the linear predicted values. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float, optional + An optional argument to divide the residuals by sqrt(scale). + The default is 1. + + Returns + ------- + resid_anscombe : array + The Anscombe residuals for the Gamma family defined below + + Notes + ----- + .. math:: + + resid\_anscombe_i = 3 * (endog_i^{1/3} - \mu_i^{1/3}) / \mu_i^{1/3} + / \sqrt{scale} * \sqrt(var\_weights) + """ + resid = 3 * (endog**(1/3.) - mu**(1/3.)) / mu**(1/3.) / scale ** 0.5 + resid *= np.sqrt(var_weights) + return resid + + +class Binomial(Family): + """ + Binomial exponential family distribution. + + Parameters + ---------- + link : a link instance, optional + The default link for the Binomial family is the logit link. + Available links are logit, probit, cauchy, log, and cloglog. + See statsmodels.genmod.families.links for more information. + + Attributes + ---------- + Binomial.link : a link instance + The link function of the Binomial instance + Binomial.variance : varfunc instance + ``variance`` is an instance of + statsmodels.genmod.families.varfuncs.binary + + See Also + -------- + statsmodels.genmod.families.family.Family + :ref:`links` + + Notes + ----- + endog for Binomial can be specified in one of three ways: + A 1d array of 0 or 1 values, indicating failure or success + respectively. + A 2d array, with two columns. The first column represents the + success count and the second column represents the failure + count. + A 1d array of proportions, indicating the proportion of + successes, with parameter `var_weights` containing the + number of trials for each row. + """ + + links = [L.logit, L.probit, L.cauchy, L.log, L.cloglog, L.identity] + variance = V.binary # this is not used below in an effort to include n + + # Other safe links, e.g. cloglog and probit are subclasses + safe_links = [L.Logit, L.CDFLink] + + def __init__(self, link=None): # , n=1.): + if link is None: + link = L.logit() + # TODO: it *should* work for a constant n>1 actually, if freq_weights + # is equal to n + self.n = 1 + # overwritten by initialize if needed but always used to initialize + # variance since endog is assumed/forced to be (0,1) + super(Binomial, self).__init__(link=link, + variance=V.Binomial(n=self.n)) + + def starting_mu(self, y): + r""" + The starting values for the IRLS algorithm for the Binomial family. + A good choice for the binomial family is :math:`\mu_0 = (Y_i + 0.5)/2` + """ + return (y + .5)/2 + + def initialize(self, endog, freq_weights): + ''' + Initialize the response variable. + + Parameters + ---------- + endog : array + Endogenous response variable + freq_weights : array + 1d array of frequency weights + + Returns + ------- + If `endog` is binary, returns `endog` + + If `endog` is a 2d array, then the input is assumed to be in the format + (successes, failures) and + successes/(success + failures) is returned. And n is set to + successes + failures. + ''' + # if not np.all(np.asarray(freq_weights) == 1): + # self.variance = V.Binomial(n=freq_weights) + if (endog.ndim > 1 and endog.shape[1] > 1): + y = endog[:, 0] + # overwrite self.freq_weights for deviance below + self.n = endog.sum(1) + return y*1./self.n, self.n + else: + return endog, np.ones(endog.shape[0]) + + def _resid_dev(self, endog, mu): + r""" + Binomial deviance residuals + + Parameters + ---------- + endog : array + The endogenous response variable. + mu : array + The inverse of the link function at the linear predicted values. + + Returns + ------- + resid_dev : float + Deviance residuals as defined below. + + Notes + ----- + .. math:: + + resid\_dev_i = 2 * n * (endog_i * \ln(endog_i /\mu_i) + + (1 - endog_i) * \ln((1 - endog_i) / (1 - \mu_i))) + """ + endog_mu = self._clean(endog / mu) + n_endog_mu = self._clean((1. - endog) / (1. - mu)) + resid_dev = endog * np.log(endog_mu) + (1 - endog) * np.log(n_endog_mu) + return 2 * self.n * resid_dev + + def loglike_obs(self, endog, mu, var_weights=1., scale=1.): + r""" + The log-likelihood function for each observation in terms of the fitted + mean response for the Binomial distribution. + + Parameters + ---------- + endog : array + Usually the endogenous response variable. + mu : array + Usually but not always the fitted mean response variable. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float + The scale parameter. The default is 1. + + Returns + ------- + ll_i : float + The value of the loglikelihood evaluated at + (endog, mu, var_weights, scale) as defined below. + + Notes + ----- + If the endogenous variable is binary: + + .. math:: + + ll_i = \sum_i (y_i * \log(\mu_i/(1-\mu_i)) + \log(1-\mu_i)) * + var\_weights_i + + If the endogenous variable is binomial: + + .. math:: + + ll_i = \sum_i var\_weights_i * (\ln \Gamma(n+1) - + \ln \Gamma(y_i + 1) - \ln \Gamma(n_i - y_i +1) + y_i * + \log(\mu_i / (n_i - \mu_i)) + n * \log(1 - \mu_i/n_i)) + + where :math:`y_i = Y_i * n_i` with :math:`Y_i` and :math:`n_i` as + defined in Binomial initialize. This simply makes :math:`y_i` the + original number of successes. + """ + n = self.n # Number of trials + y = endog * n # Number of successes + + # note that mu is still in (0,1), i.e. not converted back + return (special.gammaln(n + 1) - special.gammaln(y + 1) - + special.gammaln(n - y + 1) + y * np.log(mu / (1 - mu)) + + n * np.log(1 - mu)) * var_weights + + def resid_anscombe(self, endog, mu, var_weights=1., scale=1.): + r''' + The Anscombe residuals + + Parameters + ---------- + endog : array + The endogenous response variable + mu : array + The inverse of the link function at the linear predicted values. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float, optional + An optional argument to divide the residuals by sqrt(scale). + The default is 1. + + Returns + ------- + resid_anscombe : array + The Anscombe residuals as defined below. + + Notes + ----- + .. math:: + + n^{2/3}*(cox\_snell(endog)-cox\_snell(mu)) / + (mu*(1-mu/n)*scale^3)^{1/6} * \sqrt(var\_weights) + + where cox_snell is defined as + cox_snell(x) = betainc(2/3., 2/3., x)*betainc(2/3.,2/3.) + where betainc is the incomplete beta function as defined in scipy, + which uses a regularized version (with the unregularized version, one + would just have :math:`cox_snell(x) = Betainc(2/3., 2/3., x)`). + + The name 'cox_snell' is idiosyncratic and is simply used for + convenience following the approach suggested in Cox and Snell (1968). + Further note that + :math:`cox\_snell(x) = \frac{3}{2}*x^{2/3} * + hyp2f1(2/3.,1/3.,5/3.,x)` + where hyp2f1 is the hypergeometric 2f1 function. The Anscombe + residuals are sometimes defined in the literature using the + hyp2f1 formulation. Both betainc and hyp2f1 can be found in scipy. + + References + ---------- + Anscombe, FJ. (1953) "Contribution to the discussion of H. Hotelling's + paper." Journal of the Royal Statistical Society B. 15, 229-30. + + Cox, DR and Snell, EJ. (1968) "A General Definition of Residuals." + Journal of the Royal Statistical Society B. 30, 248-75. + ''' + endog = endog * self.n # convert back to successes + mu = mu * self.n # convert back to successes + + def cox_snell(x): + return special.betainc(2/3., 2/3., x) * special.beta(2/3., 2/3.) + + resid = (self.n ** (2/3.) * (cox_snell(endog * 1. / self.n) - + cox_snell(mu * 1. / self.n)) / + (mu * (1 - mu * 1. / self.n) * scale ** 3) ** (1 / 6.)) + resid *= np.sqrt(var_weights) + return resid + + +class InverseGaussian(Family): + """ + InverseGaussian exponential family. + + Parameters + ---------- + link : a link instance, optional + The default link for the inverse Gaussian family is the + inverse squared link. + Available links are inverse_squared, inverse, log, and identity. + See statsmodels.genmod.families.links for more information. + + Attributes + ---------- + InverseGaussian.link : a link instance + The link function of the inverse Gaussian instance + InverseGaussian.variance : varfunc instance + ``variance`` is an instance of + statsmodels.genmod.families.varfuncs.mu_cubed + + See Also + -------- + statsmodels.genmod.families.family.Family + :ref:`links` + + Notes + ----- + The inverse Guassian distribution is sometimes referred to in the + literature as the Wald distribution. + + """ + + links = [L.inverse_squared, L.inverse_power, L.identity, L.log] + variance = V.mu_cubed + safe_links = [L.inverse_squared, L.Log, ] + + def __init__(self, link=None): + if link is None: + link = L.inverse_squared() + super(InverseGaussian, self).__init__( + link=link, variance=InverseGaussian.variance) + + def _resid_dev(self, endog, mu): + r""" + Inverse Gaussian deviance residuals + + Parameters + ---------- + endog : array + The endogenous response variable. + mu : array + The inverse of the link function at the linear predicted values. + + Returns + ------- + resid_dev : float + Deviance residuals as defined below. + + Notes + ----- + .. math:: + + resid\_dev_i = 1 / (endog_i * \mu_i^2) * (endog_i - \mu_i)^2 + """ + return 1. / (endog * mu ** 2) * (endog - mu) ** 2 + + def loglike_obs(self, endog, mu, var_weights=1., scale=1.): + r""" + The log-likelihood function for each observation in terms of the fitted + mean response for the Inverse Gaussian distribution. + + Parameters + ---------- + endog : array + Usually the endogenous response variable. + mu : array + Usually but not always the fitted mean response variable. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float + The scale parameter. The default is 1. + + Returns + ------- + ll_i : float + The value of the loglikelihood evaluated at + (endog, mu, var_weights, scale) as defined below. + + Notes + ----- + .. math:: + + ll_i = -1/2 * (var\_weights_i * (endog_i - \mu_i)^2 / + (scale * endog_i * \mu_i^2) + \ln(scale * \endog_i^3 / + var\_weights_i) - \ln(2 * \pi)) + """ + ll_obs = -var_weights * (endog - mu) ** 2 / (scale * endog * mu ** 2) + ll_obs += -np.log(scale * endog ** 3 / var_weights) - np.log(2 * np.pi) + ll_obs /= 2 + return ll_obs + + def resid_anscombe(self, endog, mu, var_weights=1., scale=1.): + r""" + The Anscombe residuals + + Parameters + ---------- + endog : array + The endogenous response variable + mu : array + The inverse of the link function at the linear predicted values. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float, optional + An optional argument to divide the residuals by sqrt(scale). + The default is 1. + + Returns + ------- + resid_anscombe : array + The Anscombe residuals for the inverse Gaussian distribution as + defined below + + Notes + ----- + .. math:: + + resid\_anscombe_i = \log(Y_i / \mu_i) / \sqrt{\mu_i * scale} * + \sqrt(var\_weights) + """ + resid = np.log(endog / mu) / np.sqrt(mu * scale) + resid *= np.sqrt(var_weights) + return resid + + +class NegativeBinomial(Family): + r""" + Negative Binomial exponential family. + + Parameters + ---------- + link : a link instance, optional + The default link for the negative binomial family is the log link. + Available links are log, cloglog, identity, nbinom and power. + See statsmodels.genmod.families.links for more information. + alpha : float, optional + The ancillary parameter for the negative binomial distribution. + For now ``alpha`` is assumed to be nonstochastic. The default value + is 1. Permissible values are usually assumed to be between .01 and 2. + + Attributes + ---------- + NegativeBinomial.link : a link instance + The link function of the negative binomial instance + NegativeBinomial.variance : varfunc instance + ``variance`` is an instance of + statsmodels.genmod.families.varfuncs.nbinom + + See Also + -------- + statsmodels.genmod.families.family.Family + :ref:`links` + + Notes + ----- + Power link functions are not yet supported. + + Parameterization for :math:`y=0, 1, 2, \ldots` is + + .. math:: + + f(y) = \frac{\Gamma(y+\frac{1}{\alpha})}{y!\Gamma(\frac{1}{\alpha})} + \left(\frac{1}{1+\alpha\mu}\right)^{\frac{1}{\alpha}} + \left(\frac{\alpha\mu}{1+\alpha\mu}\right)^y + + with :math:`E[Y]=\mu\,` and :math:`Var[Y]=\mu+\alpha\mu^2`. + """ + links = [L.log, L.cloglog, L.identity, L.nbinom, L.Power] + # TODO: add the ability to use the power links with an if test + # similar to below + variance = V.nbinom + safe_links = [L.Log, ] + + def __init__(self, link=None, alpha=1.): + self.alpha = 1. * alpha # make it at least float + if link is None: + link = L.log() + super(NegativeBinomial, self).__init__( + link=link, variance=V.NegativeBinomial(alpha=self.alpha)) + + def _resid_dev(self, endog, mu): + r""" + Negative Binomial deviance residuals + + Parameters + ---------- + endog : array + The endogenous response variable. + mu : array + The inverse of the link function at the linear predicted values. + + Returns + ------- + resid_dev : float + Deviance residuals as defined below. + + Notes + ----- + .. math:: + + resid_dev_i = 2 * (endog_i * \ln(endog_i / + \mu_i) - (endog_i + 1 / \alpha) * \ln((endog_i + 1 / \alpha) / + (\mu_i + 1 / \alpha))) + """ + endog_mu = self._clean(endog / mu) + endog_alpha = endog + 1 / self.alpha + mu_alpha = mu + 1 / self.alpha + resid_dev = endog * np.log(endog_mu) + resid_dev -= endog_alpha * np.log(endog_alpha / mu_alpha) + return 2 * resid_dev + + def loglike_obs(self, endog, mu, var_weights=1., scale=1.): + r""" + The log-likelihood function for each observation in terms of the fitted + mean response for the Negative Binomial distribution. + + Parameters + ---------- + endog : array + Usually the endogenous response variable. + mu : array + Usually but not always the fitted mean response variable. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float + The scale parameter. The default is 1. + + Returns + ------- + ll_i : float + The value of the loglikelihood evaluated at + (endog, mu, var_weights, scale) as defined below. + + Notes + ----- + Defined as: + + .. math:: + + llf = \sum_i var\_weights_i / scale * (Y_i * \log{(\alpha * \mu_i / + (1 + \alpha * \mu_i))} - \log{(1 + \alpha * \mu_i)}/ + \alpha + Constant) + + where :math:`Constant` is defined as: + + .. math:: + + Constant = \ln \Gamma{(Y_i + 1/ \alpha )} - \ln \Gamma(Y_i + 1) - + \ln \Gamma{(1/ \alpha )} + + constant = (special.gammaln(endog + 1 / self.alpha) - + special.gammaln(endog+1)-special.gammaln(1/self.alpha)) + return (endog * np.log(self.alpha * mu / (1 + self.alpha * mu)) - + np.log(1 + self.alpha * mu) / self.alpha + + constant) * var_weights / scale + """ + ll_obs = endog * np.log(self.alpha * mu) + ll_obs -= (endog + 1 / self.alpha) * np.log(1 + self.alpha * mu) + ll_obs += special.gammaln(endog + 1 / self.alpha) + ll_obs -= special.gammaln(1 / self.alpha) + ll_obs -= special.gammaln(endog + 1) + return var_weights / scale * ll_obs + + def resid_anscombe(self, endog, mu, var_weights=1., scale=1.): + r""" + The Anscombe residuals + + Parameters + ---------- + endog : array + The endogenous response variable + mu : array + The inverse of the link function at the linear predicted values. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float, optional + An optional argument to divide the residuals by sqrt(scale). + The default is 1. + + Returns + ------- + resid_anscombe : array + The Anscombe residuals as defined below. + + Notes + ----- + Anscombe residuals for Negative Binomial are the same as for Binomial + upon setting :math:`n=-\frac{1}{\alpha}`. Due to the negative value of + :math:`-\alpha*Y` the representation with the hypergeometric function + :math:`H2F1(x) = hyp2f1(2/3.,1/3.,5/3.,x)` is advantageous + + .. math:: + + resid\_anscombe_i = \frac{3}{2} * + (Y_i^(2/3)*H2F1(-\alpha*Y_i) - \mu_i^(2/3)*H2F1(-\alpha*\mu_i)) + / (\mu_i * (1+\alpha*\mu_i) * scale^3)^(1/6) * \sqrt(var\_weights) + + Note that for the (unregularized) Beta function, one has + :math:`Beta(z,a,b) = z^a/a * H2F1(a,1-b,a+1,z)` + """ + def hyp2f1(x): + return special.hyp2f1(2 / 3., 1 / 3., 5 / 3., x) + + resid = (3 / 2. * (endog ** (2 / 3.) * hyp2f1(-self.alpha * endog) - + mu ** (2 / 3.) * hyp2f1(-self.alpha * mu)) / + (mu * (1 + self.alpha * mu) * + scale ** 3) ** (1 / 6.)) + resid *= np.sqrt(var_weights) + return resid + + +class Tweedie(Family): + """ + Tweedie family. + + Parameters + ---------- + link : a link instance, optional + The default link for the Tweedie family is the log link. + Available links are log and Power. + See statsmodels.genmod.families.links for more information. + var_power : float, optional + The variance power. The default is 1. + eql : bool + If True, the Extended Quasi-Likelihood is used, else the + likelihood is used (however the latter is not implemented). + If eql is True, var_power must be between 1 and 2. + + Attributes + ---------- + Tweedie.link : a link instance + The link function of the Tweedie instance + Tweedie.variance : varfunc instance + ``variance`` is an instance of + statsmodels.genmod.families.varfuncs.Power + Tweedie.var_power : float + The power of the variance function. + + See Also + -------- + statsmodels.genmod.families.family.Family + :ref:`links` + + Notes + ----- + Logliklihood function not implemented because of the complexity of + calculating an infinite series of summations. The variance power can be + estimated using the ``estimate_tweedie_power`` function that is part of the + statsmodels.genmod.generalized_linear_model.GLM class. + """ + links = [L.log, L.Power] + variance = V.Power(power=1.5) + safe_links = [L.log, L.Power] + + def __init__(self, link=None, var_power=1., eql=False): + self.var_power = var_power + self.eql = eql + if eql and (var_power < 1 or var_power > 2): + raise ValueError("Tweedie: if EQL=True then var_power must fall " + "between 1 and 2") + if link is None: + link = L.log() + super(Tweedie, self).__init__( + link=link, variance=V.Power(power=var_power * 1.)) + + def _resid_dev(self, endog, mu): + r""" + Tweedie deviance residuals + + Parameters + ---------- + endog : array + The endogenous response variable. + mu : array + The inverse of the link function at the linear predicted values. + + Returns + ------- + resid_dev : float + Deviance residuals as defined below. + + Notes + ----- + When :math:`p = 1`, + + .. math:: + + dev_i = \mu_i + + when :math:`endog_i = 0` and + + .. math:: + + dev_i = endog_i * \log(endog_i / \mu_i) + (\mu_i - endog_i) + + otherwise. + + When :math:`p = 2`, + + .. math:: + + dev_i = (endog_i - \mu_i) / \mu_i - \log(endog_i / \mu_i) + + For all other p, + + .. math:: + + dev_i = endog_i^{2 - p} / ((1 - p) * (2 - p)) - + endog_i * \mu_i^{1 - p} / (1 - p) + \mu_i^{2 - p} / + (2 - p) + + The deviance residual is then + + .. math:: + + resid\_dev_i = 2 * dev_i + """ + p = self.var_power + if p == 1: + dev = np.where(endog == 0, + mu, + endog * np.log(endog / mu) + (mu - endog)) + elif p == 2: + endog1 = self._clean(endog) + dev = ((endog - mu) / mu) - np.log(endog1 / mu) + else: + dev = (endog ** (2 - p) / ((1 - p) * (2 - p)) - + endog * mu ** (1-p) / (1 - p) + mu ** (2 - p) / (2 - p)) + return 2 * dev + + def loglike_obs(self, endog, mu, var_weights=1., scale=1.): + r""" + The log-likelihood function for each observation in terms of the fitted + mean response for the Tweedie distribution. + + Parameters + ---------- + endog : array + Usually the endogenous response variable. + mu : array + Usually but not always the fitted mean response variable. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float + The scale parameter. The default is 1. + + Returns + ------- + ll_i : float + The value of the loglikelihood evaluated at + (endog, mu, var_weights, scale) as defined below. + + Notes + ----- + If eql is True, the Extended Quasi-Likelihood is used. At present, + this method returns NaN if eql is False. When the actual likelihood + is implemented, it will be accessible by setting eql to False. + + References + ---------- + JA Nelder, D Pregibon (1987). An extended quasi-likelihood function. + Biometrika 74:2, pp 221-232. https://www.jstor.org/stable/2336136 + """ + if not self.eql: + # We have not yet implemented the actual likelihood + return np.nan + + # Equations 9-10 or Nelder and Pregibon + p = self.var_power + llf = np.log(2 * np.pi * scale) + p * np.log(mu) - np.log(var_weights) + llf /= -2 + + if p == 1: + u = endog * np.log(endog / mu) - (endog - mu) + u *= var_weights / scale + elif p == 2: + yr = endog / mu + u = yr - np.log(yr) - 1 + u *= var_weights / scale + else: + u = (endog ** (2 - p) + - (2 - p) * endog * mu ** (1 - p) + + (1 - p) * mu ** (2 - p)) + u *= var_weights / (scale * (1 - p) * (2 - p)) + llf -= u + + return llf + + def resid_anscombe(self, endog, mu, var_weights=1., scale=1.): + r""" + The Anscombe residuals + + Parameters + ---------- + endog : array + The endogenous response variable + mu : array + The inverse of the link function at the linear predicted values. + var_weights : array-like + 1d array of variance (analytic) weights. The default is 1. + scale : float, optional + An optional argument to divide the residuals by sqrt(scale). + The default is 1. + + Returns + ------- + resid_anscombe : array + The Anscombe residuals as defined below. + + Notes + ----- + When :math:`p = 3`, then + + .. math:: + + resid\_anscombe_i = \log(endog_i / \mu_i) / \sqrt{\mu_i * scale} * + \sqrt(var\_weights) + + Otherwise, + + .. math:: + + c = (3 - p) / 3 + + .. math:: + + resid\_anscombe_i = (1 / c) * (endog_i^c - \mu_i^c) / \mu_i^{p / 6} + / \sqrt{scale} * \sqrt(var\_weights) + """ + if self.var_power == 3: + resid = np.log(endog / mu) / np.sqrt(mu * scale) + else: + c = (3. - self.var_power) / 3. + resid = ((1. / c) * (endog ** c - mu ** c) / + mu ** (self.var_power / 6.)) / scale ** 0.5 + resid *= np.sqrt(var_weights) + return resid diff --git a/statsmodels/genmod/families/links.py b/statsmodels/genmod/families/links.py new file mode 100644 index 0000000..59bbd4a --- /dev/null +++ b/statsmodels/genmod/families/links.py @@ -0,0 +1,1008 @@ +''' +Defines the link functions to be used with GLM and GEE families. +''' + +import numpy as np +import scipy.stats +FLOAT_EPS = np.finfo(float).eps + + +class Link(object): + """ + A generic link function for one-parameter exponential family. + + `Link` does nothing, but lays out the methods expected of any subclass. + """ + + def __call__(self, p): + """ + Return the value of the link function. This is just a placeholder. + + Parameters + ---------- + p : array-like + Probabilities + + Returns + ------- + g(p) : array-like + The value of the link function g(p) = z + """ + return NotImplementedError + + def inverse(self, z): + """ + Inverse of the link function. Just a placeholder. + + Parameters + ---------- + z : array-like + `z` is usually the linear predictor of the transformed variable + in the IRLS algorithm for GLM. + + Returns + ------- + g^(-1)(z) : array + The value of the inverse of the link function g^(-1)(z) = p + + + """ + return NotImplementedError + + def deriv(self, p): + """ + Derivative of the link function g'(p). Just a placeholder. + + Parameters + ---------- + p : array-like + + Returns + ------- + g'(p) : array + The value of the derivative of the link function g'(p) + """ + return NotImplementedError + + def deriv2(self, p): + """Second derivative of the link function g''(p) + + implemented through numerical differentiation + """ + from statsmodels.tools.numdiff import approx_fprime_cs + # TODO: workaround proplem with numdiff for 1d + return np.diag(approx_fprime_cs(p, self.deriv)) + + def inverse_deriv(self, z): + """ + Derivative of the inverse link function g^(-1)(z). + + Parameters + ---------- + z : array-like + `z` is usually the linear predictor for a GLM or GEE model. + + Returns + ------- + g'^(-1)(z) : array + The value of the derivative of the inverse of the link function + + Notes + ----- + This reference implementation gives the correct result but is + inefficient, so it can be overriden in subclasses. + """ + return 1 / self.deriv(self.inverse(z)) + + def inverse_deriv2(self, z): + """ + Second derivative of the inverse link function g^(-1)(z). + + Parameters + ---------- + z : array-like + `z` is usually the linear predictor for a GLM or GEE model. + + Returns + ------- + g'^(-1)(z) : array + The value of the second derivative of the inverse of the link + function + + Notes + ----- + This reference implementation gives the correct result but is + inefficient, so it can be overriden in subclasses. + """ + iz = self.inverse(z) + return -self.deriv2(iz) / self.deriv(iz)**3 + + +class Logit(Link): + """ + The logit transform + + Notes + ----- + call and derivative use a private method _clean to make trim p by + machine epsilon so that p is in (0,1) + + Alias of Logit: + logit = Logit() + """ + + def _clean(self, p): + """ + Clip logistic values to range (eps, 1-eps) + + Parameters + ---------- + p : array-like + Probabilities + + Returns + ------- + pclip : array + Clipped probabilities + """ + return np.clip(p, FLOAT_EPS, 1. - FLOAT_EPS) + + def __call__(self, p): + """ + The logit transform + + Parameters + ---------- + p : array-like + Probabilities + + Returns + ------- + z : array + Logit transform of `p` + + Notes + ----- + g(p) = log(p / (1 - p)) + """ + p = self._clean(p) + return np.log(p / (1. - p)) + + def inverse(self, z): + """ + Inverse of the logit transform + + Parameters + ---------- + z : array-like + The value of the logit transform at `p` + + Returns + ------- + p : array + Probabilities + + Notes + ----- + g^(-1)(z) = exp(z)/(1+exp(z)) + """ + z = np.asarray(z) + t = np.exp(-z) + return 1. / (1. + t) + + def deriv(self, p): + + """ + Derivative of the logit transform + + Parameters + ---------- + p: array-like + Probabilities + + Returns + ------- + g'(p) : array + Value of the derivative of logit transform at `p` + + Notes + ----- + g'(p) = 1 / (p * (1 - p)) + + Alias for `Logit`: + logit = Logit() + """ + p = self._clean(p) + return 1. / (p * (1 - p)) + + def inverse_deriv(self, z): + """ + Derivative of the inverse of the logit transform + + Parameters + ---------- + z : array-like + `z` is usually the linear predictor for a GLM or GEE model. + + Returns + ------- + g'^(-1)(z) : array + The value of the derivative of the inverse of the logit function + + """ + t = np.exp(z) + return t/(1 + t)**2 + + def deriv2(self, p): + """ + Second derivative of the logit function. + + Parameters + ---------- + p : array-like + probabilities + + Returns + ------- + g''(z) : array + The value of the second derivative of the logit function + """ + v = p * (1 - p) + return (2*p - 1) / v**2 + + +class logit(Logit): + pass + + +class Power(Link): + """ + The power transform + + Parameters + ---------- + power : float + The exponent of the power transform + + Notes + ----- + Aliases of Power: + inverse = Power(power=-1) + sqrt = Power(power=.5) + inverse_squared = Power(power=-2.) + identity = Power(power=1.) + """ + + def __init__(self, power=1.): + self.power = power + + def __call__(self, p): + """ + Power transform link function + + Parameters + ---------- + p : array-like + Mean parameters + + Returns + ------- + z : array-like + Power transform of x + + Notes + ----- + g(p) = x**self.power + """ + if self.power == 1: + return p + else: + return np.power(p, self.power) + + def inverse(self, z): + """ + Inverse of the power transform link function + + Parameters + ---------- + `z` : array-like + Value of the transformed mean parameters at `p` + + Returns + ------- + `p` : array + Mean parameters + + Notes + ----- + g^(-1)(z`) = `z`**(1/`power`) + """ + if self.power == 1: + return z + else: + return np.power(z, 1. / self.power) + + def deriv(self, p): + """ + Derivative of the power transform + + Parameters + ---------- + p : array-like + Mean parameters + + Returns + ------- + g'(p) : array + Derivative of power transform of `p` + + Notes + ----- + g'(`p`) = `power` * `p`**(`power` - 1) + """ + if self.power == 1: + return np.ones_like(p) + else: + return self.power * np.power(p, self.power - 1) + + def deriv2(self, p): + """ + Second derivative of the power transform + + Parameters + ---------- + p : array-like + Mean parameters + + Returns + ------- + g''(p) : array + Second derivative of the power transform of `p` + + Notes + ----- + g''(`p`) = `power` * (`power` - 1) * `p`**(`power` - 2) + """ + if self.power == 1: + return np.zeros_like(p) + else: + return self.power * (self.power - 1) * np.power(p, self.power - 2) + + def inverse_deriv(self, z): + """ + Derivative of the inverse of the power transform + + Parameters + ---------- + z : array-like + `z` is usually the linear predictor for a GLM or GEE model. + + Returns + ------- + g^(-1)'(z) : array + The value of the derivative of the inverse of the power transform + function + """ + if self.power == 1: + return np.ones_like(z) + else: + return np.power(z, (1 - self.power)/self.power) / self.power + + def inverse_deriv2(self, z): + """ + Second derivative of the inverse of the power transform + + Parameters + ---------- + z : array-like + `z` is usually the linear predictor for a GLM or GEE model. + + Returns + ------- + g^(-1)'(z) : array + The value of the derivative of the inverse of the power transform + function + """ + if self.power == 1: + return np.zeros_like(z) + else: + return ((1 - self.power) * + np.power(z, (1 - 2*self.power)/self.power) / self.power**2) + + +class inverse_power(Power): + """ + The inverse transform + + Notes + ----- + g(p) = 1/p + + Alias of statsmodels.family.links.Power(power=-1.) + """ + def __init__(self): + super(inverse_power, self).__init__(power=-1.) + + +class sqrt(Power): + """ + The square-root transform + + Notes + ----- + g(`p`) = sqrt(`p`) + + Alias of statsmodels.family.links.Power(power=.5) + """ + def __init__(self): + super(sqrt, self).__init__(power=.5) + + +class inverse_squared(Power): + r""" + The inverse squared transform + + Notes + ----- + g(`p`) = 1/(`p`\*\*2) + + Alias of statsmodels.family.links.Power(power=2.) + """ + def __init__(self): + super(inverse_squared, self).__init__(power=-2.) + + +class identity(Power): + """ + The identity transform + + Notes + ----- + g(`p`) = `p` + + Alias of statsmodels.family.links.Power(power=1.) + """ + def __init__(self): + super(identity, self).__init__(power=1.) + + +class Log(Link): + """ + The log transform + + Notes + ----- + call and derivative call a private method _clean to trim the data by + machine epsilon so that p is in (0,1). log is an alias of Log. + """ + + def _clean(self, x): + return np.clip(x, FLOAT_EPS, np.inf) + + def __call__(self, p, **extra): + """ + Log transform link function + + Parameters + ---------- + x : array-like + Mean parameters + + Returns + ------- + z : array + log(x) + + Notes + ----- + g(p) = log(p) + """ + x = self._clean(p) + return np.log(x) + + def inverse(self, z): + """ + Inverse of log transform link function + + Parameters + ---------- + z : array + The inverse of the link function at `p` + + Returns + ------- + p : array + The mean probabilities given the value of the inverse `z` + + Notes + ----- + g^{-1}(z) = exp(z) + """ + return np.exp(z) + + def deriv(self, p): + """ + Derivative of log transform link function + + Parameters + ---------- + p : array-like + Mean parameters + + Returns + ------- + g'(p) : array + derivative of log transform of x + + Notes + ----- + g'(x) = 1/x + """ + p = self._clean(p) + return 1. / p + + def deriv2(self, p): + """ + Second derivative of the log transform link function + + Parameters + ---------- + p : array-like + Mean parameters + + Returns + ------- + g''(p) : array + Second derivative of log transform of x + + Notes + ----- + g''(x) = -1/x^2 + """ + p = self._clean(p) + return -1. / p**2 + + def inverse_deriv(self, z): + """ + Derivative of the inverse of the log transform link function + + Parameters + ---------- + z : array + The inverse of the link function at `p` + + Returns + ------- + g^(-1)'(z) : array + The value of the derivative of the inverse of the log function, + the exponential function + """ + return np.exp(z) + + +class log(Log): + """ + The log transform + + Notes + ----- + log is a an alias of Log. + """ + pass + + +# TODO: the CDFLink is untested +class CDFLink(Logit): + """ + The use the CDF of a scipy.stats distribution + + CDFLink is a subclass of logit in order to use its _clean method + for the link and its derivative. + + Parameters + ---------- + dbn : scipy.stats distribution + Default is dbn=scipy.stats.norm + + Notes + ----- + The CDF link is untested. + """ + + def __init__(self, dbn=scipy.stats.norm): + self.dbn = dbn + + def __call__(self, p): + """ + CDF link function + + Parameters + ---------- + p : array-like + Mean parameters + + Returns + ------- + z : array + (ppf) inverse of CDF transform of p + + Notes + ----- + g(`p`) = `dbn`.ppf(`p`) + """ + p = self._clean(p) + return self.dbn.ppf(p) + + def inverse(self, z): + """ + The inverse of the CDF link + + Parameters + ---------- + z : array-like + The value of the inverse of the link function at `p` + + Returns + ------- + p : array + Mean probabilities. The value of the inverse of CDF link of `z` + + Notes + ----- + g^(-1)(`z`) = `dbn`.cdf(`z`) + """ + return self.dbn.cdf(z) + + def deriv(self, p): + """ + Derivative of CDF link + + Parameters + ---------- + p : array-like + mean parameters + + Returns + ------- + g'(p) : array + The derivative of CDF transform at `p` + + Notes + ----- + g'(`p`) = 1./ `dbn`.pdf(`dbn`.ppf(`p`)) + """ + p = self._clean(p) + return 1. / self.dbn.pdf(self.dbn.ppf(p)) + + def deriv2(self, p): + """ + Second derivative of the link function g''(p) + + implemented through numerical differentiation + """ + from statsmodels.tools.numdiff import approx_fprime + p = np.atleast_1d(p) + # Note: special function for norm.ppf does not support complex + return np.diag(approx_fprime(p, self.deriv, centered=True)) + + def inverse_deriv(self, z): + """ + Derivative of the inverse of the CDF transformation link function + + Parameters + ---------- + z : array + The inverse of the link function at `p` + + Returns + ------- + g^(-1)'(z) : array + The value of the derivative of the inverse of the logit function + """ + return 1/self.deriv(self.inverse(z)) + + +class probit(CDFLink): + """ + The probit (standard normal CDF) transform + + Notes + ----- + g(p) = scipy.stats.norm.ppf(p) + + probit is an alias of CDFLink. + """ + pass + + +class cauchy(CDFLink): + """ + The Cauchy (standard Cauchy CDF) transform + + Notes + ----- + g(p) = scipy.stats.cauchy.ppf(p) + + cauchy is an alias of CDFLink with dbn=scipy.stats.cauchy + """ + + def __init__(self): + super(cauchy, self).__init__(dbn=scipy.stats.cauchy) + + def deriv2(self, p): + """ + Second derivative of the Cauchy link function. + + Parameters + ---------- + p: array-like + Probabilities + + Returns + ------- + g''(p) : array + Value of the second derivative of Cauchy link function at `p` + """ + a = np.pi * (p - 0.5) + d2 = 2 * np.pi**2 * np.sin(a) / np.cos(a)**3 + return d2 + + +class CLogLog(Logit): + """ + The complementary log-log transform + + CLogLog inherits from Logit in order to have access to its _clean method + for the link and its derivative. + + Notes + ----- + CLogLog is untested. + """ + def __call__(self, p): + """ + C-Log-Log transform link function + + Parameters + ---------- + p : array + Mean parameters + + Returns + ------- + z : array + The CLogLog transform of `p` + + Notes + ----- + g(p) = log(-log(1-p)) + """ + p = self._clean(p) + return np.log(-np.log(1 - p)) + + def inverse(self, z): + """ + Inverse of C-Log-Log transform link function + + + Parameters + ---------- + z : array-like + The value of the inverse of the CLogLog link function at `p` + + Returns + ------- + p : array + Mean parameters + + Notes + ----- + g^(-1)(`z`) = 1-exp(-exp(`z`)) + """ + return 1 - np.exp(-np.exp(z)) + + def deriv(self, p): + """ + Derivative of C-Log-Log transform link function + + Parameters + ---------- + p : array-like + Mean parameters + + Returns + ------- + g'(p) : array + The derivative of the CLogLog transform link function + + Notes + ----- + g'(p) = - 1 / ((p-1)*log(1-p)) + """ + p = self._clean(p) + return 1. / ((p - 1) * (np.log(1 - p))) + + def deriv2(self, p): + """ + Second derivative of the C-Log-Log ink function + + Parameters + ---------- + p : array-like + Mean parameters + + Returns + ------- + g''(p) : array + The second derivative of the CLogLog link function + """ + p = self._clean(p) + fl = np.log(1 - p) + d2 = -1 / ((1 - p)**2 * fl) + d2 *= 1 + 1 / fl + return d2 + + def inverse_deriv(self, z): + """ + Derivative of the inverse of the C-Log-Log transform link function + + Parameters + ---------- + z : array-like + The value of the inverse of the CLogLog link function at `p` + + Returns + ------- + g^(-1)'(z) : array + The derivative of the inverse of the CLogLog link function + """ + return np.exp(z - np.exp(z)) + + +class cloglog(CLogLog): + """ + The CLogLog transform link function. + + Notes + ----- + g(`p`) = log(-log(1-`p`)) + + cloglog is an alias for CLogLog + cloglog = CLogLog() + """ + pass + + +class NegativeBinomial(Link): + ''' + The negative binomial link function + + Parameters + ---------- + alpha : float, optional + Alpha is the ancillary parameter of the Negative Binomial link + function. It is assumed to be nonstochastic. The default value is 1. + Permissible values are usually assumed to be in (.01, 2). + ''' + + def __init__(self, alpha=1.): + self.alpha = alpha + + def _clean(self, x): + return np.clip(x, FLOAT_EPS, np.inf) + + def __call__(self, p): + ''' + Negative Binomial transform link function + + Parameters + ---------- + p : array-like + Mean parameters + + Returns + ------- + z : array + The negative binomial transform of `p` + + Notes + ----- + g(p) = log(p/(p + 1/alpha)) + ''' + p = self._clean(p) + return np.log(p/(p + 1/self.alpha)) + + def inverse(self, z): + ''' + Inverse of the negative binomial transform + + Parameters + ---------- + z : array-like + The value of the inverse of the negative binomial link at `p`. + + Returns + ------- + p : array + Mean parameters + + Notes + ----- + g^(-1)(z) = exp(z)/(alpha*(1-exp(z))) + ''' + return -1/(self.alpha * (1 - np.exp(-z))) + + def deriv(self, p): + ''' + Derivative of the negative binomial transform + + Parameters + ---------- + p : array-like + Mean parameters + + Returns + ------- + g'(p) : array + The derivative of the negative binomial transform link function + + Notes + ----- + g'(x) = 1/(x+alpha*x^2) + ''' + return 1/(p + self.alpha * p**2) + + def deriv2(self, p): + ''' + Second derivative of the negative binomial link function. + + Parameters + ---------- + p : array-like + Mean parameters + + Returns + ------- + g''(p) : array + The second derivative of the negative binomial transform link + function + + Notes + ----- + g''(x) = -(1+2*alpha*x)/(x+alpha*x^2)^2 + ''' + numer = -(1 + 2 * self.alpha * p) + denom = (p + self.alpha * p**2)**2 + return numer / denom + + def inverse_deriv(self, z): + ''' + Derivative of the inverse of the negative binomial transform + + Parameters + ---------- + z : array-like + Usually the linear predictor for a GLM or GEE model + + Returns + ------- + g^(-1)'(z) : array + The value of the derivative of the inverse of the negative + binomial link + ''' + t = np.exp(z) + return t / (self.alpha * (1-t)**2) + + +class nbinom(NegativeBinomial): + """ + The negative binomial link function. + + Notes + ----- + g(p) = log(p/(p + 1/alpha)) + + nbinom is an alias of NegativeBinomial. + nbinom = NegativeBinomial(alpha=1.) + """ + pass diff --git a/statsmodels/genmod/families/tests/__init__.py b/statsmodels/genmod/families/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/genmod/families/tests/test_link.py b/statsmodels/genmod/families/tests/test_link.py new file mode 100644 index 0000000..6a95c3d --- /dev/null +++ b/statsmodels/genmod/families/tests/test_link.py @@ -0,0 +1,120 @@ +""" +Test functions for genmod.families.links +""" +from statsmodels.compat.python import range +import numpy as np +from numpy.testing import assert_allclose, assert_equal +import statsmodels.genmod.families as families +from statsmodels.tools import numdiff as nd + +# Family instances +links = families.links +logit = links.Logit() +inverse_power = links.inverse_power() +sqrt = links.sqrt() +inverse_squared = links.inverse_squared() +identity = links.identity() +log = links.log() +probit = links.probit() +cauchy = links.cauchy() +cloglog = links.CLogLog() +negbinom = links.NegativeBinomial() + +# TODO: parametrize all these tess +Links = [logit, inverse_power, sqrt, inverse_squared, identity, + log, probit, cauchy, cloglog, negbinom] + + +def get_domainvalue(link): + """ + Get a value in the domain for a given family. + """ + z = -np.log(np.random.uniform(0, 1)) + if isinstance(link, links.CLogLog): # prone to overflow + z = min(z, 3) + elif isinstance(link, links.NegativeBinomial): + # domain is negative numbers + z = -z + return z + + +def test_inverse(): + # Logic check that link.inverse(link) and link(link.inverse) + # are the identity. + np.random.seed(3285) + + for link in Links: + for k in range(10): + p = np.random.uniform(0, 1) # In domain for all families + d = link.inverse(link(p)) + assert_allclose(d, p, atol=1e-8, err_msg=str(link)) + + z = get_domainvalue(link) + d = link(link.inverse(z)) + assert_allclose(d, z, atol=1e-8, err_msg=str(link)) + + +def test_deriv(): + # Check link function derivatives using numeric differentiation. + + np.random.seed(24235) + + for link in Links: + for k in range(10): + p = np.random.uniform(0, 1) + d = link.deriv(p) + da = nd.approx_fprime(np.r_[p], link) + assert_allclose(d, da, rtol=1e-6, atol=1e-6, + err_msg=str(link)) + + +def test_deriv2(): + # Check link function second derivatives using numeric differentiation. + + np.random.seed(24235) + + for link in Links: + # TODO: Resolve errors with the numeric derivatives + if isinstance(link, links.probit): + continue + for k in range(10): + p = np.random.uniform(0, 1) + p = np.clip(p, 0.01, 0.99) + if isinstance(link, links.cauchy): + p = np.clip(p, 0.03, 0.97) + d = link.deriv2(p) + da = nd.approx_fprime(np.r_[p], link.deriv) + assert_allclose(d, da, rtol=1e-6, atol=1e-6, + err_msg=str(link)) + + +def test_inverse_deriv(): + # Logic check that inverse_deriv equals 1/link.deriv(link.inverse) + + np.random.seed(24235) + + for link in Links: + for k in range(10): + z = -np.log(np.random.uniform()) # In domain for all families + d = link.inverse_deriv(z) + f = 1 / link.deriv(link.inverse(z)) + assert_allclose(d, f, rtol=1e-8, atol=1e-10, + err_msg=str(link)) + + +def test_invlogit_stability(): + z = [1123.4910007309222, 1483.952316802719, 1344.86033748641, + 706.339159002542, 1167.9986375146532, 663.8345826933115, + 1496.3691686913917, 1563.0763842182257, 1587.4309332296314, + 697.1173174974248, 1333.7256198289665, 1388.7667560586933, + 819.7605431778434, 1479.9204150555015, 1078.5642245164856, + 480.10338454985896, 1112.691659145772, 534.1061908007274, + 918.2011296406588, 1280.8808515887802, 758.3890788775948, + 673.503699841035, 1556.7043357878208, 819.5269028006679, + 1262.5711060356423, 1098.7271535253608, 1482.811928490097, + 796.198809756532, 893.7946963941745, 470.3304989319786, + 1427.77079226037, 1365.2050226373822, 1492.4193201661922, + 871.9922191949931, 768.4735925445908, 732.9222777654679, + 812.2382651982667, 495.06449978924525] + zinv = logit.inverse(z) + assert_equal(zinv, np.ones_like(z)) diff --git a/statsmodels/genmod/families/varfuncs.py b/statsmodels/genmod/families/varfuncs.py new file mode 100644 index 0000000..bd2361b --- /dev/null +++ b/statsmodels/genmod/families/varfuncs.py @@ -0,0 +1,283 @@ +""" +Variance functions for use with the link functions in statsmodels.family.links +""" +import numpy as np +FLOAT_EPS = np.finfo(float).eps + + +class VarianceFunction(object): + """ + Relates the variance of a random variable to its mean. Defaults to 1. + + Methods + ------- + call + Returns an array of ones that is the same shape as `mu` + + Notes + ----- + After a variance function is initialized, its call method can be used. + + Alias for VarianceFunction: + constant = VarianceFunction() + + See Also + -------- + statsmodels.genmod.families.family + """ + + def __call__(self, mu): + """ + Default variance function + + Parameters + ---------- + mu : array-like + mean parameters + + Returns + ------- + v : array + ones(mu.shape) + """ + mu = np.asarray(mu) + return np.ones(mu.shape, np.float64) + + def deriv(self, mu): + """ + Derivative of the variance function v'(mu) + """ + return np.zeros_like(mu) + + +constant = VarianceFunction() +constant.__doc__ = """ +The call method of constant returns a constant variance, i.e., a vector of +ones. + +constant is an alias of VarianceFunction() +""" + + +class Power(object): + """ + Power variance function + + Parameters + ---------- + power : float + exponent used in power variance function + + Methods + ------- + call + Returns the power variance + + Notes + ----- + Formulas + V(mu) = numpy.fabs(mu)**power + + Aliases for Power: + mu = Power() + mu_squared = Power(power=2) + mu_cubed = Power(power=3) + """ + + def __init__(self, power=1.): + self.power = power + + def __call__(self, mu): + """ + Power variance function + + Parameters + ---------- + mu : array-like + mean parameters + + Returns + ------- + variance : array + numpy.fabs(mu)**self.power + """ + return np.power(np.fabs(mu), self.power) + + def deriv(self, mu): + """ + Derivative of the variance function v'(mu) + + May be undefined at zero. + """ + + der = self.power * np.fabs(mu) ** (self.power - 1) + ii = np.flatnonzero(mu < 0) + der[ii] *= -1 + return der + + +mu = Power() +mu.__doc__ = """ +Returns np.fabs(mu) + +Notes +----- +This is an alias of Power() +""" +mu_squared = Power(power=2) +mu_squared.__doc__ = """ +Returns np.fabs(mu)**2 + +Notes +----- +This is an alias of statsmodels.family.links.Power(power=2) +""" +mu_cubed = Power(power=3) +mu_cubed.__doc__ = """ +Returns np.fabs(mu)**3 + +Notes +----- +This is an alias of statsmodels.family.links.Power(power=3) +""" + + +class Binomial(object): + """ + Binomial variance function + + Parameters + ---------- + n : int, optional + The number of trials for a binomial variable. The default is 1 for + p in (0,1) + + Methods + ------- + call + Returns the binomial variance + + Notes + ----- + Formulas : + + V(mu) = p * (1 - p) * n + + where p = mu / n + + Alias for Binomial: + binary = Binomial() + + A private method _clean trims the data by machine epsilon so that p is + in (0,1) + """ + + def __init__(self, n=1): + self.n = n + + def _clean(self, p): + return np.clip(p, FLOAT_EPS, 1 - FLOAT_EPS) + + def __call__(self, mu): + """ + Binomial variance function + + Parameters + ---------- + mu : array-like + mean parameters + + Returns + ------- + variance : array + variance = mu/n * (1 - mu/n) * self.n + """ + p = self._clean(mu / self.n) + return p * (1 - p) * self.n + + # TODO: inherit from super + def deriv(self, mu): + """ + Derivative of the variance function v'(mu) + """ + return 1 - 2*mu + + +binary = Binomial() +binary.__doc__ = """ +The binomial variance function for n = 1 + +Notes +----- +This is an alias of Binomial(n=1) +""" + + +class NegativeBinomial(object): + ''' + Negative binomial variance function + + Parameters + ---------- + alpha : float + The ancillary parameter for the negative binomial variance function. + `alpha` is assumed to be nonstochastic. The default is 1. + + Methods + ------- + call + Returns the negative binomial variance + + Notes + ----- + Formulas : + + V(mu) = mu + alpha*mu**2 + + Alias for NegativeBinomial: + nbinom = NegativeBinomial() + + A private method _clean trims the data by machine epsilon so that p is + in (0,inf) + ''' + + def __init__(self, alpha=1.): + self.alpha = alpha + + def _clean(self, p): + return np.clip(p, FLOAT_EPS, np.inf) + + def __call__(self, mu): + """ + Negative binomial variance function + + Parameters + ---------- + mu : array-like + mean parameters + + Returns + ------- + variance : array + variance = mu + alpha*mu**2 + """ + p = self._clean(mu) + return p + self.alpha*p**2 + + def deriv(self, mu): + """ + Derivative of the negative binomial variance function. + """ + + p = self._clean(mu) + return 1 + 2 * self.alpha * p + + +nbinom = NegativeBinomial() +nbinom.__doc__ = """ +Negative Binomial variance function. + +Notes +----- +This is an alias of NegativeBinomial(alpha=1.) +""" diff --git a/statsmodels/genmod/generalized_estimating_equations.py b/statsmodels/genmod/generalized_estimating_equations.py new file mode 100644 index 0000000..6a7ccf1 --- /dev/null +++ b/statsmodels/genmod/generalized_estimating_equations.py @@ -0,0 +1,3255 @@ +""" +Procedures for fitting marginal regression models to dependent data +using Generalized Estimating Equations. + +References +---------- +KY Liang and S Zeger. "Longitudinal data analysis using +generalized linear models". Biometrika (1986) 73 (1): 13-22. + +S Zeger and KY Liang. "Longitudinal Data Analysis for Discrete and +Continuous Outcomes". Biometrics Vol. 42, No. 1 (Mar., 1986), +pp. 121-130 + +A Rotnitzky and NP Jewell (1990). "Hypothesis testing of regression +parameters in semiparametric generalized linear models for cluster +correlated data", Biometrika, 77, 485-497. + +Xu Guo and Wei Pan (2002). "Small sample performance of the score +test in GEE". +http://www.sph.umn.edu/faculty1/wp-content/uploads/2012/11/rr2002-013.pdf + +LA Mancl LA, TA DeRouen (2001). A covariance estimator for GEE with +improved small-sample properties. Biometrics. 2001 Mar;57(1):126-34. +""" +from __future__ import division +from statsmodels.compat.python import range, lzip, zip + +import numpy as np +from scipy import stats +import pandas as pd +import patsy +from collections import defaultdict +from statsmodels.tools.decorators import cache_readonly +import statsmodels.base.model as base +# used for wrapper: +import statsmodels.regression.linear_model as lm +import statsmodels.base.wrapper as wrap + +from statsmodels.genmod import families +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod import cov_struct as cov_structs + +import statsmodels.genmod.families.varfuncs as varfuncs +from statsmodels.genmod.families.links import Link + +from statsmodels.tools.sm_exceptions import (ConvergenceWarning, + DomainWarning, + IterationLimitWarning, + ValueWarning) +import warnings + +from statsmodels.graphics._regressionplots_doc import ( + _plot_added_variable_doc, + _plot_partial_residuals_doc, + _plot_ceres_residuals_doc) +from statsmodels.discrete.discrete_margins import ( + _get_margeff_exog, _check_margeff_args, _effects_at, margeff_cov_with_se, + _check_at_is_all, _transform_names, _check_discrete_args, + _get_dummy_index, _get_count_index) + + +class ParameterConstraint(object): + """ + A class for managing linear equality constraints for a parameter + vector. + """ + + def __init__(self, lhs, rhs, exog): + """ + Parameters + ---------- + lhs : ndarray + A q x p matrix which is the left hand side of the + constraint lhs * param = rhs. The number of constraints is + q >= 1 and p is the dimension of the parameter vector. + rhs : ndarray + A 1-dimensional vector of length q which is the right hand + side of the constraint equation. + exog : ndarray + The n x p exognenous data for the full model. + """ + + # In case a row or column vector is passed (patsy linear + # constraints passes a column vector). + rhs = np.atleast_1d(rhs.squeeze()) + + if rhs.ndim > 1: + raise ValueError("The right hand side of the constraint " + "must be a vector.") + + if len(rhs) != lhs.shape[0]: + raise ValueError("The number of rows of the left hand " + "side constraint matrix L must equal " + "the length of the right hand side " + "constraint vector R.") + + self.lhs = lhs + self.rhs = rhs + + # The columns of lhs0 are an orthogonal basis for the + # orthogonal complement to row(lhs), the columns of lhs1 are + # an orthogonal basis for row(lhs). The columns of lhsf = + # [lhs0, lhs1] are mutually orthogonal. + lhs_u, lhs_s, lhs_vt = np.linalg.svd(lhs.T, full_matrices=1) + self.lhs0 = lhs_u[:, len(lhs_s):] + self.lhs1 = lhs_u[:, 0:len(lhs_s)] + self.lhsf = np.hstack((self.lhs0, self.lhs1)) + + # param0 is one solution to the underdetermined system + # L * param = R. + self.param0 = np.dot(self.lhs1, np.dot(lhs_vt, self.rhs) / + lhs_s) + + self._offset_increment = np.dot(exog, self.param0) + + self.orig_exog = exog + self.exog_fulltrans = np.dot(exog, self.lhsf) + + def offset_increment(self): + """ + Returns a vector that should be added to the offset vector to + accommodate the constraint. + + Parameters + ---------- + exog : array-like + The exogeneous data for the model. + """ + + return self._offset_increment + + def reduced_exog(self): + """ + Returns a linearly transformed exog matrix whose columns span + the constrained model space. + + Parameters + ---------- + exog : array-like + The exogeneous data for the model. + """ + return self.exog_fulltrans[:, 0:self.lhs0.shape[1]] + + def restore_exog(self): + """ + Returns the full exog matrix before it was reduced to + satisfy the constraint. + """ + return self.orig_exog + + def unpack_param(self, params): + """ + Converts the parameter vector `params` from reduced to full + coordinates. + """ + + return self.param0 + np.dot(self.lhs0, params) + + def unpack_cov(self, bcov): + """ + Converts the covariance matrix `bcov` from reduced to full + coordinates. + """ + + return np.dot(self.lhs0, np.dot(bcov, self.lhs0.T)) + + +_gee_init_doc = """ + Marginal regression model fit using Generalized Estimating Equations. + + GEE can be used to fit Generalized Linear Models (GLMs) when the + data have a grouped structure, and the observations are possibly + correlated within groups but not between groups. + + Parameters + ---------- + endog : array-like + 1d array of endogenous values (i.e. responses, outcomes, + dependent variables, or 'Y' values). + exog : array-like + 2d array of exogeneous values (i.e. covariates, predictors, + independent variables, regressors, or 'X' values). A `nobs x + k` array where `nobs` is the number of observations and `k` is + the number of regressors. An intercept is not included by + default and should be added by the user. See + `statsmodels.tools.add_constant`. + groups : array-like + A 1d array of length `nobs` containing the group labels. + time : array-like + A 2d array of time (or other index) values, used by some + dependence structures to define similarity relationships among + observations within a cluster. + family : family class instance +%(family_doc)s + cov_struct : CovStruct class instance + The default is Independence. To specify an exchangeable + structure use cov_struct = Exchangeable(). See + statsmodels.genmod.cov_struct.CovStruct for more + information. + offset : array-like + An offset to be included in the fit. If provided, must be + an array whose length is the number of rows in exog. + dep_data : array-like + Additional data passed to the dependence structure. + constraint : (ndarray, ndarray) + If provided, the constraint is a tuple (L, R) such that the + model parameters are estimated under the constraint L * + param = R, where L is a q x p matrix and R is a + q-dimensional vector. If constraint is provided, a score + test is performed to compare the constrained model to the + unconstrained model. + update_dep : bool + If true, the dependence parameters are optimized, otherwise + they are held fixed at their starting values. + weights : array-like + An array of weights to use in the analysis. The weights must + be constant within each group. These correspond to + probability weights (pweights) in Stata. + %(extra_params)s + + See Also + -------- + statsmodels.genmod.families.family + :ref:`families` + :ref:`links` + + Notes + ----- + Only the following combinations make sense for family and link :: + + + ident log logit probit cloglog pow opow nbinom loglog logc + Gaussian | x x x + inv Gaussian | x x x + binomial | x x x x x x x x x + Poission | x x x + neg binomial | x x x x + gamma | x x x + + Not all of these link functions are currently available. + + Endog and exog are references so that if the data they refer + to are already arrays and these arrays are changed, endog and + exog will change. + + The "robust" covariance type is the standard "sandwich estimator" + (e.g. Liang and Zeger (1986)). It is the default here and in most + other packages. The "naive" estimator gives smaller standard + errors, but is only correct if the working correlation structure + is correctly specified. The "bias reduced" estimator of Mancl and + DeRouen (Biometrics, 2001) reduces the downard bias of the robust + estimator. + + The robust covariance provided here follows Liang and Zeger (1986) + and agrees with R's gee implementation. To obtain the robust + standard errors reported in Stata, multiply by sqrt(N / (N - g)), + where N is the total sample size, and g is the average group size. + + Examples + -------- + %(example)s +""" + +_gee_family_doc = """\ + The default is Gaussian. To specify the binomial + distribution use `family=sm.families.Binomial()`. Each family + can take a link instance as an argument. See + statsmodels.genmod.families.family for more information.""" + +_gee_ordinal_family_doc = """\ + The only family supported is `Binomial`. The default `Logit` + link may be replaced with `probit` if desired.""" + +_gee_nominal_family_doc = """\ + The default value `None` uses a multinomial logit family + specifically designed for use with GEE. Setting this + argument to a non-default value is not currently supported.""" + +_gee_fit_doc = """ + Fits a marginal regression model using generalized estimating + equations (GEE). + + Parameters + ---------- + maxiter : integer + The maximum number of iterations + ctol : float + The convergence criterion for stopping the Gauss-Seidel + iterations + start_params : array-like + A vector of starting values for the regression + coefficients. If None, a default is chosen. + params_niter : integer + The number of Gauss-Seidel updates of the mean structure + parameters that take place prior to each update of the + dependence structure. + first_dep_update : integer + No dependence structure updates occur before this + iteration number. + cov_type : string + One of "robust", "naive", or "bias_reduced". + ddof_scale : scalar or None + The scale parameter is estimated as the sum of squared + Pearson residuals divided by `N - ddof_scale`, where N + is the total sample size. If `ddof_scale` is None, the + number of covariates (including an intercept if present) + is used. + scaling_factor : scalar + The estimated covariance of the parameter estimates is + scaled by this value. Default is 1, Stata uses N / (N - g), + where N is the total sample size and g is the average group + size. + + Returns + ------- + An instance of the GEEResults class or subclass + + Notes + ----- + If convergence difficulties occur, increase the values of + `first_dep_update` and/or `params_niter`. Setting + `first_dep_update` to a greater value (e.g. ~10-20) causes the + algorithm to move close to the GLM solution before attempting + to identify the dependence structure. + + For the Gaussian family, there is no benefit to setting + `params_niter` to a value greater than 1, since the mean + structure parameters converge in one step. +""" + +_gee_results_doc = """ + Attributes + ---------- + + cov_params_default : ndarray + default covariance of the parameter estimates. Is chosen among one + of the following three based on `cov_type` + cov_robust : ndarray + covariance of the parameter estimates that is robust + cov_naive : ndarray + covariance of the parameter estimates that is not robust to + correlation or variance misspecification + cov_robust_bc : ndarray + covariance of the parameter estimates that is robust and bias + reduced + converged : bool + indicator for convergence of the optimization. + True if the norm of the score is smaller than a threshold + cov_type : string + string indicating whether a "robust", "naive" or "bias_reduced" + covariance is used as default + fit_history : dict + Contains information about the iterations. + fittedvalues : array + Linear predicted values for the fitted model. + dot(exog, params) + model : class instance + Pointer to GEE model instance that called `fit`. + normalized_cov_params : array + See GEE docstring + params : array + The coefficients of the fitted model. Note that + interpretation of the coefficients often depends on the + distribution family and the data. + scale : float + The estimate of the scale / dispersion for the model fit. + See GEE.fit for more information. + score_norm : float + norm of the score at the end of the iterative estimation. + bse : array + The standard errors of the fitted GEE parameters. +""" + +_gee_example = """ + Logistic regression with autoregressive working dependence: + + >>> import statsmodels.api as sm + >>> family = sm.families.Binomial() + >>> va = sm.cov_struct.Autoregressive() + >>> model = sm.GEE(endog, exog, group, family=family, cov_struct=va) + >>> result = model.fit() + >>> print(result.summary()) + + Use formulas to fit a Poisson GLM with independent working + dependence: + + >>> import statsmodels.api as sm + >>> fam = sm.families.Poisson() + >>> ind = sm.cov_struct.Independence() + >>> model = sm.GEE.from_formula("y ~ age + trt + base", "subject", \ + data, cov_struct=ind, family=fam) + >>> result = model.fit() + >>> print(result.summary()) + + Equivalent, using the formula API: + + >>> import statsmodels.api as sm + >>> import statsmodels.formula.api as smf + >>> fam = sm.families.Poisson() + >>> ind = sm.cov_struct.Independence() + >>> model = smf.gee("y ~ age + trt + base", "subject", \ + data, cov_struct=ind, family=fam) + >>> result = model.fit() + >>> print(result.summary()) +""" + +_gee_ordinal_example = """ + Fit an ordinal regression model using GEE, with "global + odds ratio" dependence: + + >>> import statsmodels.api as sm + >>> gor = sm.cov_struct.GlobalOddsRatio("ordinal") + >>> model = sm.OrdinalGEE(endog, exog, groups, cov_struct=gor) + >>> result = model.fit() + >>> print(result.summary()) + + Using formulas: + + >>> import statsmodels.formula.api as smf + >>> model = smf.ordinal_gee("y ~ x1 + x2", groups, data, + cov_struct=gor) + >>> result = model.fit() + >>> print(result.summary()) +""" + +_gee_nominal_example = """ + Fit a nominal regression model using GEE: + + >>> import statsmodels.api as sm + >>> import statsmodels.formula.api as smf + >>> gor = sm.cov_struct.GlobalOddsRatio("nominal") + >>> model = sm.NominalGEE(endog, exog, groups, cov_struct=gor) + >>> result = model.fit() + >>> print(result.summary()) + + Using formulas: + + >>> import statsmodels.api as sm + >>> model = sm.NominalGEE.from_formula("y ~ x1 + x2", groups, + data, cov_struct=gor) + >>> result = model.fit() + >>> print(result.summary()) + + Using the formula API: + + >>> import statsmodels.formula.api as smf + >>> model = smf.nominal_gee("y ~ x1 + x2", groups, data, + cov_struct=gor) + >>> result = model.fit() + >>> print(result.summary()) +""" + + +def _check_args(endog, exog, groups, time, offset, exposure): + + if endog.size != exog.shape[0]: + raise ValueError("Leading dimension of 'exog' should match " + "length of 'endog'") + + if groups.size != endog.size: + raise ValueError("'groups' and 'endog' should have the same size") + + if time is not None and (time.size != endog.size): + raise ValueError("'time' and 'endog' should have the same size") + + if offset is not None and (offset.size != endog.size): + raise ValueError("'offset and 'endog' should have the same size") + + if exposure is not None and (exposure.size != endog.size): + raise ValueError("'exposure' and 'endog' should have the same size") + + +class GEE(base.Model): + + __doc__ = ( + " Estimation of marginal regression models using Generalized\n" + " Estimating Equations (GEE).\n" + _gee_init_doc % + {'extra_params': base._missing_param_doc, + 'family_doc': _gee_family_doc, + 'example': _gee_example}) + + cached_means = None + + def __init__(self, endog, exog, groups, time=None, family=None, + cov_struct=None, missing='none', offset=None, + exposure=None, dep_data=None, constraint=None, + update_dep=True, weights=None, **kwargs): + + if family is not None: + if not isinstance(family.link, tuple(family.safe_links)): + import warnings + msg = ("The {0} link function does not respect the " + "domain of the {1} family.") + warnings.warn(msg.format(family.link.__class__.__name__, + family.__class__.__name__), + DomainWarning) + + groups = np.asarray(groups) # in case groups is pandas + + if "missing_idx" in kwargs and kwargs["missing_idx"] is not None: + # If here, we are entering from super.from_formula; missing + # has already been dropped from endog and exog, but not from + # the other variables. + ii = ~kwargs["missing_idx"] + groups = groups[ii] + if time is not None: + time = time[ii] + if offset is not None: + offset = offset[ii] + if exposure is not None: + exposure = exposure[ii] + del kwargs["missing_idx"] + + _check_args(endog, exog, groups, time, offset, exposure) + + self.missing = missing + self.dep_data = dep_data + self.constraint = constraint + self.update_dep = update_dep + + self._fit_history = defaultdict(list) + + # Pass groups, time, offset, and dep_data so they are + # processed for missing data along with endog and exog. + # Calling super creates self.exog, self.endog, etc. as + # ndarrays and the original exog, endog, etc. are + # self.data.endog, etc. + super(GEE, self).__init__(endog, exog, groups=groups, + time=time, offset=offset, + exposure=exposure, weights=weights, + dep_data=dep_data, missing=missing, + **kwargs) + + self._init_keys.extend(["update_dep", "constraint", "family", + "cov_struct"]) + + # Handle the family argument + if family is None: + family = families.Gaussian() + else: + if not issubclass(family.__class__, families.Family): + raise ValueError("GEE: `family` must be a genmod " + "family instance") + self.family = family + + # Handle the cov_struct argument + if cov_struct is None: + cov_struct = cov_structs.Independence() + else: + if not issubclass(cov_struct.__class__, cov_structs.CovStruct): + raise ValueError("GEE: `cov_struct` must be a genmod " + "cov_struct instance") + + self.cov_struct = cov_struct + + # Handle the offset and exposure + self._offset_exposure = None + if offset is not None: + self._offset_exposure = self.offset.copy() + self.offset = offset + if exposure is not None: + if not isinstance(self.family.link, families.links.Log): + raise ValueError( + "exposure can only be used with the log link function") + if self._offset_exposure is not None: + self._offset_exposure += np.log(exposure) + else: + self._offset_exposure = np.log(exposure) + self.exposure = exposure + + # Handle the constraint + self.constraint = None + if constraint is not None: + if len(constraint) != 2: + raise ValueError("GEE: `constraint` must be a 2-tuple.") + if constraint[0].shape[1] != self.exog.shape[1]: + raise ValueError( + "GEE: the left hand side of the constraint must have " + "the same number of columns as the exog matrix.") + self.constraint = ParameterConstraint(constraint[0], + constraint[1], + self.exog) + + if self._offset_exposure is not None: + self._offset_exposure += self.constraint.offset_increment() + else: + self._offset_exposure = ( + self.constraint.offset_increment().copy()) + self.exog = self.constraint.reduced_exog() + + # Create list of row indices for each group + group_labels, ix = np.unique(self.groups, return_inverse=True) + se = pd.Series(index=np.arange(len(ix))) + gb = se.groupby(ix).groups + dk = [(lb, np.asarray(gb[k])) for k, lb in enumerate(group_labels)] + self.group_indices = dict(dk) + self.group_labels = group_labels + + # Convert the data to the internal representation, which is a + # list of arrays, corresponding to the groups. + self.endog_li = self.cluster_list(self.endog) + self.exog_li = self.cluster_list(self.exog) + + if self.weights is not None: + self.weights_li = self.cluster_list(self.weights) + self.weights_li = [x[0] for x in self.weights_li] + self.weights_li = np.asarray(self.weights_li) + + self.num_group = len(self.endog_li) + + # Time defaults to a 1d grid with equal spacing + if self.time is not None: + self.time = np.asarray(self.time, np.float64) + if self.time.ndim == 1: + self.time = self.time[:, None] + self.time_li = self.cluster_list(self.time) + else: + self.time_li = \ + [np.arange(len(y), dtype=np.float64)[:, None] + for y in self.endog_li] + self.time = np.concatenate(self.time_li) + + if self._offset_exposure is not None: + self.offset_li = self.cluster_list(self._offset_exposure) + else: + self.offset_li = None + if constraint is not None: + self.constraint.exog_fulltrans_li = \ + self.cluster_list(self.constraint.exog_fulltrans) + + self.family = family + + self.cov_struct.initialize(self) + + # Total sample size + group_ns = [len(y) for y in self.endog_li] + self.nobs = sum(group_ns) + # The following are column based, not on rank see #1928 + self.df_model = self.exog.shape[1] - 1 # assumes constant + self.df_resid = self.nobs - self.exog.shape[1] + + # Skip the covariance updates if all groups have a single + # observation (reduces to fitting a GLM). + maxgroup = max([len(x) for x in self.endog_li]) + if maxgroup == 1: + self.update_dep = False + + # Override to allow groups and time to be passed as variable + # names. + @classmethod + def from_formula(cls, formula, groups, data, subset=None, + time=None, offset=None, exposure=None, + *args, **kwargs): + """ + Create a GEE model instance from a formula and dataframe. + + Parameters + ---------- + formula : str or generic Formula object + The formula specifying the model + groups : array-like or string + Array of grouping labels. If a string, this is the name + of a variable in `data` that contains the grouping labels. + data : array-like + The data for the model. + subset : array-like + An array-like object of booleans, integers, or index + values that indicate the subset of the data to used when + fitting the model. + time : array-like or string + The time values, used for dependence structures involving + distances between observations. If a string, this is the + name of a variable in `data` that contains the time + values. + offset : array-like or string + The offset values, added to the linear predictor. If a + string, this is the name of a variable in `data` that + contains the offset values. + exposure : array-like or string + The exposure values, only used if the link function is the + logarithm function, in which case the log of `exposure` + is added to the offset (if any). If a string, this is the + name of a variable in `data` that contains the offset + values. + %(missing_param_doc)s + args : extra arguments + These are passed to the model + kwargs : extra keyword arguments + These are passed to the model with two exceptions. `dep_data` + is processed as described below. The ``eval_env`` keyword is + passed to patsy. It can be either a + :class:`patsy:patsy.EvalEnvironment` object or an integer + indicating the depth of the namespace to use. For example, the + default ``eval_env=0`` uses the calling namespace. + If you wish to use a "clean" environment set ``eval_env=-1``. + + Optional arguments + ------------------ + dep_data : string or array-like + Data used for estimating the dependence structure. See + specific dependence structure classes (e.g. Nested) for + details. If `dep_data` is a string, it is interpreted as + a formula that is applied to `data`. If it is an array, it + must be an array of strings corresponding to column names in + `data`. Otherwise it must be an array-like with the same + number of rows as data. + + Returns + ------- + model : GEE model instance + + Notes + ----- + `data` must define __getitem__ with the keys in the formula + terms args and kwargs are passed on to the model + instantiation. E.g., a numpy structured or rec array, a + dictionary, or a pandas DataFrame. + """ % {'missing_param_doc': base._missing_param_doc} + + groups_name = "Groups" + if isinstance(groups, str): + groups_name = groups + groups = data[groups] + + if isinstance(time, str): + time = data[time] + + if isinstance(offset, str): + offset = data[offset] + + if isinstance(exposure, str): + exposure = data[exposure] + + dep_data = kwargs.get("dep_data") + dep_data_names = None + if dep_data is not None: + if isinstance(dep_data, str): + dep_data = patsy.dmatrix(dep_data, data, + return_type='dataframe') + dep_data_names = dep_data.columns.tolist() + else: + dep_data_names = list(dep_data) + dep_data = data[dep_data] + kwargs["dep_data"] = np.asarray(dep_data) + + model = super(GEE, cls).from_formula(formula, data=data, subset=subset, + groups=groups, time=time, + offset=offset, + exposure=exposure, + *args, **kwargs) + + if dep_data_names is not None: + model._dep_data_names = dep_data_names + model._groups_name = groups_name + + return model + + def cluster_list(self, array): + """ + Returns `array` split into subarrays corresponding to the + cluster structure. + """ + + if array.ndim == 1: + return [np.array(array[self.group_indices[k]]) + for k in self.group_labels] + else: + return [np.array(array[self.group_indices[k], :]) + for k in self.group_labels] + + def compare_score_test(self, submodel): + """ + Perform a score test for the given submodel against this model. + + Parameters + ---------- + submodel : GEEResults instance + A fitted GEE model that is a submodel of this model. + + Returns + ------- + A dictionary with keys "statistic", "p-value", and "df", + containing the score test statistic, its chi^2 p-value, + and the degrees of freedom used to compute the p-value. + + Notes + ----- + The score test can be performed without calling 'fit' on the + larger model. The provided submodel must be obtained from a + fitted GEE. + + This method performs the same score test as can be obtained by + fitting the GEE with a linear constraint and calling `score_test` + on the results. + + References + ---------- + Xu Guo and Wei Pan (2002). "Small sample performance of the score + test in GEE". + http://www.sph.umn.edu/faculty1/wp-content/uploads/2012/11/rr2002-013.pdf + """ + + # Check consistency between model and submodel (not a comprehensive + # check) + submod = submodel.model + if self.exog.shape[0] != submod.exog.shape[0]: + msg = "Model and submodel have different numbers of cases." + raise ValueError(msg) + if self.exog.shape[1] == submod.exog.shape[1]: + msg = "Model and submodel have the same number of variables" + warnings.warn(msg) + if not isinstance(self.family, type(submod.family)): + msg = "Model and submodel have different GLM families." + warnings.warn(msg) + if not isinstance(self.cov_struct, type(submod.cov_struct)): + warnings.warn("Model and submodel have different GEE covariance " + "structures.") + if not np.equal(self.weights, submod.weights).all(): + msg = "Model and submodel should have the same weights." + warnings.warn(msg) + + # Get the positions of the submodel variables in the + # parent model + qm, qc = _score_test_submodel(self, submodel.model) + if qm is None: + msg = "The provided model is not a submodel." + raise ValueError(msg) + + # Embed the submodel params into a params vector for the + # parent model + params_ex = np.dot(qm, submodel.params) + + # Attempt to preserve the state of the parent model + cov_struct_save = self.cov_struct + import copy + cached_means_save = copy.deepcopy(self.cached_means) + + # Get the score vector of the submodel params in + # the parent model + self.cov_struct = submodel.cov_struct + self.update_cached_means(params_ex) + _, score = self._update_mean_params() + if score is None: + msg = "Singular matrix encountered in GEE score test" + warnings.warn(msg, ConvergenceWarning) + return None + + if not hasattr(self, "ddof_scale"): + self.ddof_scale = self.exog.shape[1] + + if not hasattr(self, "scaling_factor"): + self.scaling_factor = 1 + + _, ncov1, cmat = self._covmat() + scale = self.estimate_scale() + cmat = cmat / scale ** 2 + score2 = np.dot(qc.T, score) / scale + + amat = np.linalg.inv(ncov1) + + bmat_11 = np.dot(qm.T, np.dot(cmat, qm)) + bmat_22 = np.dot(qc.T, np.dot(cmat, qc)) + bmat_12 = np.dot(qm.T, np.dot(cmat, qc)) + + amat_11 = np.dot(qm.T, np.dot(amat, qm)) + amat_12 = np.dot(qm.T, np.dot(amat, qc)) + + score_cov = bmat_22 - np.dot(amat_12.T, + np.linalg.solve(amat_11, bmat_12)) + score_cov -= np.dot(bmat_12.T, + np.linalg.solve(amat_11, amat_12)) + score_cov += np.dot(amat_12.T, + np.dot(np.linalg.solve(amat_11, bmat_11), + np.linalg.solve(amat_11, amat_12))) + + # Attempt to restore state + self.cov_struct = cov_struct_save + self.cached_means = cached_means_save + + from scipy.stats.distributions import chi2 + score_statistic = np.dot(score2, + np.linalg.solve(score_cov, score2)) + score_df = len(score2) + score_pvalue = 1 - chi2.cdf(score_statistic, score_df) + return {"statistic": score_statistic, + "df": score_df, + "p-value": score_pvalue} + + def estimate_scale(self): + """ + Estimate the dispersion/scale. + + The scale parameter for binomial, Poisson, and multinomial + families is fixed at 1, otherwise it is estimated from + the data. + """ + + if isinstance(self.family, (families.Binomial, families.Poisson, + _Multinomial)): + return 1. + + endog = self.endog_li + cached_means = self.cached_means + nobs = self.nobs + varfunc = self.family.variance + + scale = 0. + fsum = 0. + for i in range(self.num_group): + + if len(endog[i]) == 0: + continue + + expval, _ = cached_means[i] + + f = self.weights_li[i] if self.weights is not None else 1. + + sdev = np.sqrt(varfunc(expval)) + resid = (endog[i] - expval) / sdev + + scale += f * np.sum(resid ** 2) + fsum += f * len(endog[i]) + + scale /= (fsum * (nobs - self.ddof_scale) / float(nobs)) + + return scale + + def mean_deriv(self, exog, lin_pred): + """ + Derivative of the expected endog with respect to the parameters. + + Parameters + ---------- + exog : array-like + The exogeneous data at which the derivative is computed. + lin_pred : array-like + The values of the linear predictor. + + Returns + ------- + The value of the derivative of the expected endog with respect + to the parameter vector. + + Notes + ----- + If there is an offset or exposure, it should be added to + `lin_pred` prior to calling this function. + """ + + idl = self.family.link.inverse_deriv(lin_pred) + dmat = exog * idl[:, None] + return dmat + + def mean_deriv_exog(self, exog, params, offset_exposure=None): + """ + Derivative of the expected endog with respect to exog. + + Parameters + ---------- + exog : array-like + Values of the independent variables at which the derivative + is calculated. + params : array-like + Parameter values at which the derivative is calculated. + offset_exposure : array-like, optional + Combined offset and exposure. + + Returns + ------- + The derivative of the expected endog with respect to exog. + """ + + lin_pred = np.dot(exog, params) + if offset_exposure is not None: + lin_pred += offset_exposure + + idl = self.family.link.inverse_deriv(lin_pred) + dmat = np.outer(idl, params) + return dmat + + def _update_mean_params(self): + """ + Returns + ------- + update : array-like + The update vector such that params + update is the next + iterate when solving the score equations. + score : array-like + The current value of the score equations, not + incorporating the scale parameter. If desired, + multiply this vector by the scale parameter to + incorporate the scale. + """ + + endog = self.endog_li + exog = self.exog_li + + cached_means = self.cached_means + + varfunc = self.family.variance + + bmat, score = 0, 0 + for i in range(self.num_group): + + expval, lpr = cached_means[i] + resid = endog[i] - expval + dmat = self.mean_deriv(exog[i], lpr) + sdev = np.sqrt(varfunc(expval)) + + rslt = self.cov_struct.covariance_matrix_solve(expval, i, + sdev, (dmat, resid)) + if rslt is None: + return None, None + vinv_d, vinv_resid = tuple(rslt) + + f = self.weights_li[i] if self.weights is not None else 1. + + bmat += f * np.dot(dmat.T, vinv_d) + score += f * np.dot(dmat.T, vinv_resid) + + update = np.linalg.solve(bmat, score) + + self._fit_history["cov_adjust"].append( + self.cov_struct.cov_adjust) + + return update, score + + def update_cached_means(self, mean_params): + """ + cached_means should always contain the most recent calculation + of the group-wise mean vectors. This function should be + called every time the regression parameters are changed, to + keep the cached means up to date. + """ + + endog = self.endog_li + exog = self.exog_li + offset = self.offset_li + + linkinv = self.family.link.inverse + + self.cached_means = [] + + for i in range(self.num_group): + + if len(endog[i]) == 0: + continue + + lpr = np.dot(exog[i], mean_params) + if offset is not None: + lpr += offset[i] + expval = linkinv(lpr) + + self.cached_means.append((expval, lpr)) + + def _covmat(self): + """ + Returns the sampling covariance matrix of the regression + parameters and related quantities. + + Returns + ------- + cov_robust : array-like + The robust, or sandwich estimate of the covariance, which + is meaningful even if the working covariance structure is + incorrectly specified. + cov_naive : array-like + The model-based estimate of the covariance, which is + meaningful if the covariance structure is correctly + specified. + cmat : array-like + The center matrix of the sandwich expression, used in + obtaining score test results. + """ + + endog = self.endog_li + exog = self.exog_li + varfunc = self.family.variance + cached_means = self.cached_means + + # Calculate the naive (model-based) and robust (sandwich) + # covariances. + bmat, cmat = 0, 0 + for i in range(self.num_group): + + expval, lpr = cached_means[i] + resid = endog[i] - expval + dmat = self.mean_deriv(exog[i], lpr) + sdev = np.sqrt(varfunc(expval)) + + rslt = self.cov_struct.covariance_matrix_solve( + expval, i, sdev, (dmat, resid)) + if rslt is None: + return None, None, None, None + vinv_d, vinv_resid = tuple(rslt) + + f = self.weights_li[i] if self.weights is not None else 1. + + bmat += f * np.dot(dmat.T, vinv_d) + dvinv_resid = f * np.dot(dmat.T, vinv_resid) + cmat += np.outer(dvinv_resid, dvinv_resid) + + scale = self.estimate_scale() + + bmati = np.linalg.inv(bmat) + cov_naive = bmati * scale + cov_robust = np.dot(bmati, np.dot(cmat, bmati)) + + cov_naive *= self.scaling_factor + cov_robust *= self.scaling_factor + return cov_robust, cov_naive, cmat + + # Calculate the bias-corrected sandwich estimate of Mancl and + # DeRouen. + def _bc_covmat(self, cov_naive): + + cov_naive = cov_naive / self.scaling_factor + endog = self.endog_li + exog = self.exog_li + varfunc = self.family.variance + cached_means = self.cached_means + scale = self.estimate_scale() + + bcm = 0 + for i in range(self.num_group): + + expval, lpr = cached_means[i] + resid = endog[i] - expval + dmat = self.mean_deriv(exog[i], lpr) + sdev = np.sqrt(varfunc(expval)) + + rslt = self.cov_struct.covariance_matrix_solve( + expval, i, sdev, (dmat,)) + if rslt is None: + return None + vinv_d = rslt[0] + vinv_d /= scale + + hmat = np.dot(vinv_d, cov_naive) + hmat = np.dot(hmat, dmat.T).T + + f = self.weights_li[i] if self.weights is not None else 1. + + aresid = np.linalg.solve(np.eye(len(resid)) - hmat, resid) + rslt = self.cov_struct.covariance_matrix_solve( + expval, i, sdev, (aresid,)) + if rslt is None: + return None + srt = rslt[0] + srt = f * np.dot(dmat.T, srt) / scale + bcm += np.outer(srt, srt) + + cov_robust_bc = np.dot(cov_naive, np.dot(bcm, cov_naive)) + cov_robust_bc *= self.scaling_factor + + return cov_robust_bc + + def predict(self, params, exog=None, offset=None, + exposure=None, linear=False): + """ + Return predicted values for a marginal regression model fit + using GEE. + + Parameters + ---------- + params : array-like + Parameters / coefficients of a marginal regression model. + exog : array-like, optional + Design / exogenous data. If exog is None, model exog is + used. + offset : array-like, optional + Offset for exog if provided. If offset is None, model + offset is used. + exposure : array-like, optional + Exposure for exog, if exposure is None, model exposure is + used. Only allowed if link function is the logarithm. + linear : bool + If True, returns the linear predicted values. If False, + returns the value of the inverse of the model's link + function at the linear predicted values. + + Returns + ------- + An array of fitted values + + Notes + ----- + Using log(V) as the offset is equivalent to using V as the + exposure. If exposure U and offset V are both provided, then + log(U) + V is added to the linear predictor. + """ + + # TODO: many paths through this, not well covered in tests + + if exposure is not None: + if not isinstance(self.family.link, families.links.Log): + raise ValueError( + "exposure can only be used with the log link function") + + # This is the combined offset and exposure + _offset = 0. + + # Using model exog + if exog is None: + exog = self.exog + + if not isinstance(self.family.link, families.links.Log): + # Don't need to worry about exposure + if offset is None: + if self._offset_exposure is not None: + _offset = self._offset_exposure.copy() + else: + _offset = offset + + else: + if offset is None and exposure is None: + if self._offset_exposure is not None: + _offset = self._offset_exposure + elif offset is None and exposure is not None: + _offset = np.log(exposure) + if hasattr(self, "offset"): + _offset = _offset + self.offset + elif offset is not None and exposure is None: + _offset = offset + if hasattr(self, "exposure"): + _offset = offset + np.log(self.exposure) + else: + _offset = offset + np.log(exposure) + + # exog is provided: this is simpler than above because we + # never use model exog or exposure if exog is provided. + else: + if offset is not None: + _offset = _offset + offset + if exposure is not None: + _offset += np.log(exposure) + + lin_pred = _offset + np.dot(exog, params) + + if not linear: + return self.family.link.inverse(lin_pred) + + return lin_pred + + def _starting_params(self): + + model = GLM(self.endog, self.exog, family=self.family, + offset=self._offset_exposure, + freq_weights=self.weights) + result = model.fit() + return result.params + + def fit(self, maxiter=60, ctol=1e-6, start_params=None, + params_niter=1, first_dep_update=0, + cov_type='robust', ddof_scale=None, scaling_factor=1.): + # Docstring attached below + + # Subtract this number from the total sample size when + # normalizing the scale parameter estimate. + if ddof_scale is None: + self.ddof_scale = self.exog.shape[1] + else: + if not ddof_scale >= 0: + raise ValueError( + "ddof_scale must be a non-negative number or None") + self.ddof_scale = ddof_scale + + self.scaling_factor = scaling_factor + + self._fit_history = defaultdict(list) + + if self.weights is not None and cov_type == 'naive': + raise ValueError("when using weights, cov_type may not be naive") + + if start_params is None: + mean_params = self._starting_params() + else: + start_params = np.asarray(start_params) + mean_params = start_params.copy() + + self.update_cached_means(mean_params) + + del_params = -1. + num_assoc_updates = 0 + for itr in range(maxiter): + + update, score = self._update_mean_params() + if update is None: + warnings.warn("Singular matrix encountered in GEE update", + ConvergenceWarning) + break + mean_params += update + self.update_cached_means(mean_params) + + # L2 norm of the change in mean structure parameters at + # this iteration. + del_params = np.sqrt(np.sum(score ** 2)) + + self._fit_history['params'].append(mean_params.copy()) + self._fit_history['score'].append(score) + self._fit_history['dep_params'].append( + self.cov_struct.dep_params) + + # Don't exit until the association parameters have been + # updated at least once. + if (del_params < ctol and + (num_assoc_updates > 0 or self.update_dep is False)): + break + + # Update the dependence structure + if (self.update_dep and (itr % params_niter) == 0 + and (itr >= first_dep_update)): + self._update_assoc(mean_params) + num_assoc_updates += 1 + + if del_params >= ctol: + warnings.warn("Iteration limit reached prior to convergence", + IterationLimitWarning) + + if mean_params is None: + warnings.warn("Unable to estimate GEE parameters.", + ConvergenceWarning) + return None + + bcov, ncov, _ = self._covmat() + if bcov is None: + warnings.warn("Estimated covariance structure for GEE " + "estimates is singular", ConvergenceWarning) + return None + bc_cov = None + if cov_type == "bias_reduced": + bc_cov = self._bc_covmat(ncov) + + if self.constraint is not None: + x = mean_params.copy() + mean_params, bcov = self._handle_constraint(mean_params, bcov) + if mean_params is None: + warnings.warn("Unable to estimate constrained GEE " + "parameters.", ConvergenceWarning) + return None + + y, ncov = self._handle_constraint(x, ncov) + if y is None: + warnings.warn("Unable to estimate constrained GEE " + "parameters.", ConvergenceWarning) + return None + + if bc_cov is not None: + y, bc_cov = self._handle_constraint(x, bc_cov) + if x is None: + warnings.warn("Unable to estimate constrained GEE " + "parameters.", ConvergenceWarning) + return None + + scale = self.estimate_scale() + + # kwargs to add to results instance, need to be available in __init__ + res_kwds = dict(cov_type=cov_type, + cov_robust=bcov, + cov_naive=ncov, + cov_robust_bc=bc_cov) + + # The superclass constructor will multiply the covariance + # matrix argument bcov by scale, which we don't want, so we + # divide bcov by the scale parameter here + results = GEEResults(self, mean_params, bcov / scale, scale, + cov_type=cov_type, use_t=False, + attr_kwds=res_kwds) + + # attributes not needed during results__init__ + results.fit_history = self._fit_history + self.fit_history = defaultdict(list) + results.score_norm = del_params + results.converged = (del_params < ctol) + results.cov_struct = self.cov_struct + results.params_niter = params_niter + results.first_dep_update = first_dep_update + results.ctol = ctol + results.maxiter = maxiter + + # These will be copied over to subclasses when upgrading. + results._props = ["cov_type", "use_t", + "cov_params_default", "cov_robust", + "cov_naive", "cov_robust_bc", + "fit_history", + "score_norm", "converged", "cov_struct", + "params_niter", "first_dep_update", "ctol", + "maxiter"] + + return GEEResultsWrapper(results) + + fit.__doc__ = _gee_fit_doc + + def _update_regularized(self, params, pen_wt, scad_param, eps): + + sn, hm = 0, 0 + + for i in range(self.num_group): + + expval, _ = self.cached_means[i] + resid = self.endog_li[i] - expval + sdev = np.sqrt(self.family.variance(expval)) + + ex = self.exog_li[i] * sdev[:, None]**2 + rslt = self.cov_struct.covariance_matrix_solve( + expval, i, sdev, (resid, ex)) + sn0 = rslt[0] + sn += np.dot(ex.T, sn0) + hm0 = rslt[1] + hm += np.dot(ex.T, hm0) + + # Wang et al. divide sn here by num_group, but that + # seems to be incorrect + + ap = np.abs(params) + clipped = np.clip(scad_param * pen_wt - ap, 0, np.inf) + en = pen_wt * clipped * (ap > pen_wt) + en /= (scad_param - 1) * pen_wt + en += pen_wt * (ap <= pen_wt) + en /= eps + ap + + hm.flat[::hm.shape[0] + 1] += self.num_group * en + hm *= self.estimate_scale() + sn -= self.num_group * en * params + + return np.linalg.solve(hm, sn), hm + + def _regularized_covmat(self, mean_params): + + self.update_cached_means(mean_params) + + ma = 0 + + for i in range(self.num_group): + + expval, _ = self.cached_means[i] + resid = self.endog_li[i] - expval + sdev = np.sqrt(self.family.variance(expval)) + + ex = self.exog_li[i] * sdev[:, None]**2 + rslt = self.cov_struct.covariance_matrix_solve( + expval, i, sdev, (resid,)) + ma0 = np.dot(ex.T, rslt[0]) + ma += np.outer(ma0, ma0) + + return ma + + def fit_regularized(self, pen_wt, scad_param=3.7, maxiter=100, + ddof_scale=None, update_assoc=5, + ctol=1e-5, ztol=1e-3, eps=1e-6): + """ + Regularized estimation for GEE. + + Parameters + ---------- + pen_wt : float + The penalty weight (a non-negative scalar). + scad_param : float + Non-negative scalar determining the shape of the Scad + penalty. + maxiter : integer + The maximum number of iterations. + ddof_scale : integer + Value to subtract from `nobs` when calculating the + denominator degrees of freedom for t-statistics, defaults + to the number of columns in `exog`. + update_assoc : integer + The dependence parameters are updated every `update_assoc` + iterations of the mean structure parameter updates. + ctol : float + Convergence criterion, default is one order of magnitude + smaller than proposed in section 3.1 of Wang et al. + ztol : float + Coefficients smaller than this value are treated as + being zero, default is based on section 5 of Wang et al. + eps : non-negative scalar + Numerical constant, see section 3.2 of Wang et al. + + Returns + ------- + GEEResults instance. Note that not all methods of the results + class make sense when the model has been fit with regularization. + + Notes + ----- + This implementation assumes that the link is canonical. + + References + ---------- + Wang L, Zhou J, Qu A. (2012). Penalized generalized estimating + equations for high-dimensional longitudinal data analysis. + Biometrics. 2012 Jun;68(2):353-60. + doi: 10.1111/j.1541-0420.2011.01678.x. + https://www.ncbi.nlm.nih.gov/pubmed/21955051 + http://users.stat.umn.edu/~wangx346/research/GEE_selection.pdf + """ + + mean_params = np.zeros(self.exog.shape[1]) + self.update_cached_means(mean_params) + converged = False + fit_history = defaultdict(list) + + # Subtract this number from the total sample size when + # normalizing the scale parameter estimate. + if ddof_scale is None: + self.ddof_scale = self.exog.shape[1] + else: + if not ddof_scale >= 0: + raise ValueError( + "ddof_scale must be a non-negative number or None") + self.ddof_scale = ddof_scale + + for itr in range(maxiter): + + update, hm = self._update_regularized( + mean_params, pen_wt, scad_param, eps) + if update is None: + msg = "Singular matrix encountered in regularized GEE update", + warnings.warn(msg, ConvergenceWarning) + break + if np.sqrt(np.sum(update**2)) < ctol: + converged = True + break + mean_params += update + fit_history['params'].append(mean_params.copy()) + self.update_cached_means(mean_params) + + if itr != 0 and (itr % update_assoc == 0): + self._update_assoc(mean_params) + + if not converged: + msg = "GEE.fit_regularized did not converge" + warnings.warn(msg) + + mean_params[np.abs(mean_params) < ztol] = 0 + + self._update_assoc(mean_params) + ma = self._regularized_covmat(mean_params) + cov = np.linalg.solve(hm, ma) + cov = np.linalg.solve(hm, cov.T) + + # kwargs to add to results instance, need to be available in __init__ + res_kwds = dict(cov_type="robust", cov_robust=cov) + + scale = self.estimate_scale() + rslt = GEEResults(self, mean_params, cov, scale, + regularized=True, attr_kwds=res_kwds) + rslt.fit_history = fit_history + + return GEEResultsWrapper(rslt) + + def _handle_constraint(self, mean_params, bcov): + """ + Expand the parameter estimate `mean_params` and covariance matrix + `bcov` to the coordinate system of the unconstrained model. + + Parameters + ---------- + mean_params : array-like + A parameter vector estimate for the reduced model. + bcov : array-like + The covariance matrix of mean_params. + + Returns + ------- + mean_params : array-like + The input parameter vector mean_params, expanded to the + coordinate system of the full model + bcov : array-like + The input covariance matrix bcov, expanded to the + coordinate system of the full model + """ + + # The number of variables in the full model + red_p = len(mean_params) + full_p = self.constraint.lhs.shape[1] + mean_params0 = np.r_[mean_params, np.zeros(full_p - red_p)] + + # Get the score vector under the full model. + save_exog_li = self.exog_li + self.exog_li = self.constraint.exog_fulltrans_li + import copy + save_cached_means = copy.deepcopy(self.cached_means) + self.update_cached_means(mean_params0) + _, score = self._update_mean_params() + + if score is None: + warnings.warn("Singular matrix encountered in GEE score test", + ConvergenceWarning) + return None, None + + _, ncov1, cmat = self._covmat() + scale = self.estimate_scale() + cmat = cmat / scale ** 2 + score2 = score[red_p:] / scale + amat = np.linalg.inv(ncov1) + + bmat_11 = cmat[0:red_p, 0:red_p] + bmat_22 = cmat[red_p:, red_p:] + bmat_12 = cmat[0:red_p, red_p:] + amat_11 = amat[0:red_p, 0:red_p] + amat_12 = amat[0:red_p, red_p:] + + score_cov = bmat_22 - np.dot(amat_12.T, + np.linalg.solve(amat_11, bmat_12)) + score_cov -= np.dot(bmat_12.T, + np.linalg.solve(amat_11, amat_12)) + score_cov += np.dot(amat_12.T, + np.dot(np.linalg.solve(amat_11, bmat_11), + np.linalg.solve(amat_11, amat_12))) + + from scipy.stats.distributions import chi2 + score_statistic = np.dot(score2, + np.linalg.solve(score_cov, score2)) + score_df = len(score2) + score_pvalue = 1 - chi2.cdf(score_statistic, score_df) + self.score_test_results = {"statistic": score_statistic, + "df": score_df, + "p-value": score_pvalue} + + mean_params = self.constraint.unpack_param(mean_params) + bcov = self.constraint.unpack_cov(bcov) + + self.exog_li = save_exog_li + self.cached_means = save_cached_means + self.exog = self.constraint.restore_exog() + + return mean_params, bcov + + def _update_assoc(self, params): + """ + Update the association parameters + """ + + self.cov_struct.update(params) + + def _derivative_exog(self, params, exog=None, transform='dydx', + dummy_idx=None, count_idx=None): + """ + For computing marginal effects, returns dF(XB) / dX where F(.) + is the fitted mean. + + transform can be 'dydx', 'dyex', 'eydx', or 'eyex'. + + Not all of these make sense in the presence of discrete regressors, + but checks are done in the results in get_margeff. + """ + # This form should be appropriate for group 1 probit, logit, + # logistic, cloglog, heckprob, xtprobit. + offset_exposure = None + if exog is None: + exog = self.exog + offset_exposure = self._offset_exposure + + margeff = self.mean_deriv_exog(exog, params, offset_exposure) + + if 'ex' in transform: + margeff *= exog + if 'ey' in transform: + margeff /= self.predict(params, exog)[:, None] + if count_idx is not None: + from statsmodels.discrete.discrete_margins import ( + _get_count_effects) + margeff = _get_count_effects(margeff, exog, count_idx, transform, + self, params) + if dummy_idx is not None: + from statsmodels.discrete.discrete_margins import ( + _get_dummy_effects) + margeff = _get_dummy_effects(margeff, exog, dummy_idx, transform, + self, params) + return margeff + + def qic(self, params, scale, cov_params): + """ + Returns quasi-information criteria and quasi-likelihood values. + + Parameters + ---------- + params : array-like + The GEE estimates of the regression parameters. + scale : scalar + Estimated scale parameter + cov_params : array-like + An estimate of the covariance matrix for the + model parameters. Conventionally this is the robust + covariance matrix. + + Returns + ------- + ql : scalar + The quasi-likelihood value + qic : scalar + A QIC that can be used to compare the mean and covariance + structures of the model. + qicu : scalar + A simplified QIC that can be used to compare mean structures + but not covariance structures + + Notes + ----- + The quasi-likelihood used here is obtained by numerically evaluating + Wedderburn's integral representation of the quasi-likelihood function. + This approach is valid for all families and links. Many other + packages use analytical expressions for quasi-likelihoods that are + valid in special cases where the link function is canonical. These + analytical expressions may omit additive constants that only depend + on the data. Therefore, the numerical values of our QL and QIC values + will differ from the values reported by other packages. However only + the differences between two QIC values calculated for different models + using the same data are meaningful. Our QIC should produce the same + QIC differences as other software. + + When using the QIC for models with unknown scale parameter, use a + common estimate of the scale parameter for all models being compared. + + References + ---------- + .. [*] W. Pan (2001). Akaike's information criterion in generalized + estimating equations. Biometrics (57) 1. + """ + + varfunc = self.family.variance + + means = [] + omega = 0.0 + # omega^-1 is the model-based covariance assuming independence + + for i in range(self.num_group): + expval, lpr = self.cached_means[i] + means.append(expval) + dmat = self.mean_deriv(self.exog_li[i], lpr) + omega += np.dot(dmat.T, dmat) / scale + + means = np.concatenate(means) + + # The quasi-likelihood, use change of variables so the integration is + # from -1 to 1. + du = means - self.endog + nstep = 10000 + qv = np.empty(nstep) + xv = np.linspace(-0.99999, 1, nstep) + for i, g in enumerate(xv): + u = self.endog + (g + 1) * du / 2.0 + vu = varfunc(u) + qv[i] = -np.sum(du**2 * (g + 1) / vu) + qv /= (4 * scale) + + from scipy.integrate import trapz + ql = trapz(qv, dx=xv[1] - xv[0]) + + qicu = -2 * ql + 2 * self.exog.shape[1] + qic = -2 * ql + 2 * np.trace(np.dot(omega, cov_params)) + + return ql, qic, qicu + + +class GEEResults(base.LikelihoodModelResults): + + __doc__ = ( + "This class summarizes the fit of a marginal regression model " + "using GEE.\n" + _gee_results_doc) + + def __init__(self, model, params, cov_params, scale, + cov_type='robust', use_t=False, regularized=False, + **kwds): + + super(GEEResults, self).__init__( + model, params, normalized_cov_params=cov_params, + scale=scale) + + # not added by super + self.df_resid = model.df_resid + self.df_model = model.df_model + self.family = model.family + + attr_kwds = kwds.pop('attr_kwds', {}) + self.__dict__.update(attr_kwds) + + # we don't do this if the cov_type has already been set + # subclasses can set it through attr_kwds + if not (hasattr(self, 'cov_type') and + hasattr(self, 'cov_params_default')): + self.cov_type = cov_type # keep alias + covariance_type = self.cov_type.lower() + allowed_covariances = ["robust", "naive", "bias_reduced"] + if covariance_type not in allowed_covariances: + msg = ("GEE: `cov_type` must be one of " + + ", ".join(allowed_covariances)) + raise ValueError(msg) + + if cov_type == "robust": + cov = self.cov_robust + elif cov_type == "naive": + cov = self.cov_naive + elif cov_type == "bias_reduced": + cov = self.cov_robust_bc + + self.cov_params_default = cov + else: + if self.cov_type != cov_type: + raise ValueError('cov_type in argument is different from ' + 'already attached cov_type') + + def standard_errors(self, cov_type="robust"): + """ + This is a convenience function that returns the standard + errors for any covariance type. The value of `bse` is the + standard errors for whichever covariance type is specified as + an argument to `fit` (defaults to "robust"). + + Parameters + ---------- + cov_type : string + One of "robust", "naive", or "bias_reduced". Determines + the covariance used to compute standard errors. Defaults + to "robust". + """ + + # Check covariance_type + covariance_type = cov_type.lower() + allowed_covariances = ["robust", "naive", "bias_reduced"] + if covariance_type not in allowed_covariances: + msg = ("GEE: `covariance_type` must be one of " + + ", ".join(allowed_covariances)) + raise ValueError(msg) + + if covariance_type == "robust": + return np.sqrt(np.diag(self.cov_robust)) + elif covariance_type == "naive": + return np.sqrt(np.diag(self.cov_naive)) + elif covariance_type == "bias_reduced": + if self.cov_robust_bc is None: + raise ValueError( + "GEE: `bias_reduced` covariance not available") + return np.sqrt(np.diag(self.cov_robust_bc)) + + # Need to override to allow for different covariance types. + @cache_readonly + def bse(self): + return self.standard_errors(self.cov_type) + + @cache_readonly + def resid(self): + """ + Returns the residuals, the endogeneous data minus the fitted + values from the model. + """ + return self.model.endog - self.fittedvalues + + def score_test(self): + """ + Return the results of a score test for a linear constraint. + + Returns + ------- + Adictionary containing the p-value, the test statistic, + and the degrees of freedom for the score test. + + Notes + ----- + See also GEE.compare_score_test for an alternative way to perform + a score test. GEEResults.score_test is more general, in that it + supports testing arbitrary linear equality constraints. However + GEE.compare_score_test might be easier to use when comparing + two explicit models. + + References + ---------- + Xu Guo and Wei Pan (2002). "Small sample performance of the score + test in GEE". + http://www.sph.umn.edu/faculty1/wp-content/uploads/2012/11/rr2002-013.pdf + """ + + if not hasattr(self.model, "score_test_results"): + msg = "score_test on results instance only available when " + msg += " model was fit with constraints" + raise ValueError(msg) + + return self.model.score_test_results + + @cache_readonly + def resid_split(self): + """ + Returns the residuals, the endogeneous data minus the fitted + values from the model. The residuals are returned as a list + of arrays containing the residuals for each cluster. + """ + sresid = [] + for v in self.model.group_labels: + ii = self.model.group_indices[v] + sresid.append(self.resid[ii]) + return sresid + + @cache_readonly + def resid_centered(self): + """ + Returns the residuals centered within each group. + """ + cresid = self.resid.copy() + for v in self.model.group_labels: + ii = self.model.group_indices[v] + cresid[ii] -= cresid[ii].mean() + return cresid + + @cache_readonly + def resid_centered_split(self): + """ + Returns the residuals centered within each group. The + residuals are returned as a list of arrays containing the + centered residuals for each cluster. + """ + sresid = [] + for v in self.model.group_labels: + ii = self.model.group_indices[v] + sresid.append(self.centered_resid[ii]) + return sresid + + def qic(self, scale=None): + """ + Returns the QIC and QICu information criteria. + + For families with a scale parameter (e.g. Gaussian), provide + as the scale argument the estimated scale from the largest + model under consideration. + + If the scale parameter is not provided, the estimated scale + parameter is used. Doing this does not allow comparisons of + QIC values between models. + """ + + # It is easy to forget to set the scale parameter. Sometimes + # this is intentional, so we warn. + if scale is None: + warnings.warn("QIC values obtained using scale=None are not " + "appropriate for comparing models") + + if scale is None: + scale = self.scale + + _, qic, qicu = self.model.qic(self.params, scale, + self.cov_params()) + + return qic, qicu + + # FIXME: alias to be removed, temporary backwards compatibility + split_resid = resid_split + centered_resid = resid_centered + split_centered_resid = resid_centered_split + + @cache_readonly + def resid_response(self): + return self.model.endog - self.fittedvalues + + @cache_readonly + def resid_pearson(self): + val = self.model.endog - self.fittedvalues + val = val / np.sqrt(self.family.variance(self.fittedvalues)) + return val + + @cache_readonly + def resid_working(self): + val = self.resid_response + val = val * self.family.link.deriv(self.fittedvalues) + return val + + @cache_readonly + def resid_anscombe(self): + return self.family.resid_anscombe(self.model.endog, self.fittedvalues) + + @cache_readonly + def resid_deviance(self): + return self.family.resid_dev(self.model.endog, self.fittedvalues) + + @cache_readonly + def fittedvalues(self): + """ + Returns the fitted values from the model. + """ + return self.model.family.link.inverse(np.dot(self.model.exog, + self.params)) + + def plot_added_variable(self, focus_exog, resid_type=None, + use_glm_weights=True, fit_kwargs=None, + ax=None): + # Docstring attached below + + from statsmodels.graphics.regressionplots import plot_added_variable + + fig = plot_added_variable(self, focus_exog, + resid_type=resid_type, + use_glm_weights=use_glm_weights, + fit_kwargs=fit_kwargs, ax=ax) + + return fig + + plot_added_variable.__doc__ = _plot_added_variable_doc % { + 'extra_params_doc': ''} + + def plot_partial_residuals(self, focus_exog, ax=None): + # Docstring attached below + + from statsmodels.graphics.regressionplots import plot_partial_residuals + + return plot_partial_residuals(self, focus_exog, ax=ax) + + plot_partial_residuals.__doc__ = _plot_partial_residuals_doc % { + 'extra_params_doc': ''} + + def plot_ceres_residuals(self, focus_exog, frac=0.66, cond_means=None, + ax=None): + # Docstring attached below + + from statsmodels.graphics.regressionplots import plot_ceres_residuals + + return plot_ceres_residuals(self, focus_exog, frac, + cond_means=cond_means, ax=ax) + + plot_ceres_residuals.__doc__ = _plot_ceres_residuals_doc % { + 'extra_params_doc': ''} + + def conf_int(self, alpha=.05, cols=None, cov_type=None): + """ + Returns confidence intervals for the fitted parameters. + + Parameters + ---------- + alpha : float, optional + The `alpha` level for the confidence interval. i.e., The + default `alpha` = .05 returns a 95% confidence interval. + cols : array-like, optional + `cols` specifies which confidence intervals to return + cov_type : string + The covariance type used for computing standard errors; + must be one of 'robust', 'naive', and 'bias reduced'. + See `GEE` for details. + + Notes + ----- + The confidence interval is based on the Gaussian distribution. + """ + # super doesn't allow to specify cov_type and method is not + # implemented, + # FIXME: remove this method here + if cov_type is None: + bse = self.bse + else: + bse = self.standard_errors(cov_type=cov_type) + params = self.params + dist = stats.norm + q = dist.ppf(1 - alpha / 2) + + if cols is None: + lower = self.params - q * bse + upper = self.params + q * bse + else: + cols = np.asarray(cols) + lower = params[cols] - q * bse[cols] + upper = params[cols] + q * bse[cols] + return np.asarray(lzip(lower, upper)) + + def summary(self, yname=None, xname=None, title=None, alpha=.05): + """ + Summarize the GEE regression results + + Parameters + ---------- + yname : string, optional + Default is `y` + xname : list of strings, optional + Default is `var_##` for ## in p the number of regressors + title : string, optional + Title for the top table. If not None, then this replaces + the default title + alpha : float + significance level for the confidence intervals + cov_type : string + The covariance type used to compute the standard errors; + one of 'robust' (the usual robust sandwich-type covariance + estimate), 'naive' (ignores dependence), and 'bias + reduced' (the Mancl/DeRouen estimate). + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be + printed or converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary.Summary : class to hold summary results + """ + + top_left = [('Dep. Variable:', None), + ('Model:', None), + ('Method:', ['Generalized']), + ('', ['Estimating Equations']), + ('Family:', [self.model.family.__class__.__name__]), + ('Dependence structure:', + [self.model.cov_struct.__class__.__name__]), + ('Date:', None), + ('Covariance type: ', [self.cov_type, ]) + ] + + NY = [len(y) for y in self.model.endog_li] + + top_right = [('No. Observations:', [sum(NY)]), + ('No. clusters:', [len(self.model.endog_li)]), + ('Min. cluster size:', [min(NY)]), + ('Max. cluster size:', [max(NY)]), + ('Mean cluster size:', ["%.1f" % np.mean(NY)]), + ('Num. iterations:', ['%d' % + len(self.fit_history['params'])]), + ('Scale:', ["%.3f" % self.scale]), + ('Time:', None), + ] + + # The skew of the residuals + skew1 = stats.skew(self.resid) + kurt1 = stats.kurtosis(self.resid) + skew2 = stats.skew(self.centered_resid) + kurt2 = stats.kurtosis(self.centered_resid) + + diagn_left = [('Skew:', ["%12.4f" % skew1]), + ('Centered skew:', ["%12.4f" % skew2])] + + diagn_right = [('Kurtosis:', ["%12.4f" % kurt1]), + ('Centered kurtosis:', ["%12.4f" % kurt2]) + ] + + if title is None: + title = self.model.__class__.__name__ + ' ' +\ + "Regression Results" + + # Override the exog variable names if xname is provided as an + # argument. + if xname is None: + xname = self.model.exog_names + + if yname is None: + yname = self.model.endog_names + + # Create summary table instance + from statsmodels.iolib.summary import Summary + smry = Summary() + smry.add_table_2cols(self, gleft=top_left, gright=top_right, + yname=yname, xname=xname, + title=title) + smry.add_table_params(self, yname=yname, xname=xname, + alpha=alpha, use_t=False) + smry.add_table_2cols(self, gleft=diagn_left, + gright=diagn_right, yname=yname, + xname=xname, title="") + + return smry + + def get_margeff(self, at='overall', method='dydx', atexog=None, + dummy=False, count=False): + """Get marginal effects of the fitted model. + + Parameters + ---------- + at : str, optional + Options are: + + - 'overall', The average of the marginal effects at each + observation. + - 'mean', The marginal effects at the mean of each regressor. + - 'median', The marginal effects at the median of each regressor. + - 'zero', The marginal effects at zero for each regressor. + - 'all', The marginal effects at each observation. If `at` is 'all' + only margeff will be available. + + Note that if `exog` is specified, then marginal effects for all + variables not specified by `exog` are calculated using the `at` + option. + method : str, optional + Options are: + + - 'dydx' - dy/dx - No transformation is made and marginal effects + are returned. This is the default. + - 'eyex' - estimate elasticities of variables in `exog` -- + d(lny)/d(lnx) + - 'dyex' - estimate semielasticity -- dy/d(lnx) + - 'eydx' - estimate semeilasticity -- d(lny)/dx + + Note that tranformations are done after each observation is + calculated. Semi-elasticities for binary variables are computed + using the midpoint method. 'dyex' and 'eyex' do not make sense + for discrete variables. + atexog : array-like, optional + Optionally, you can provide the exogenous variables over which to + get the marginal effects. This should be a dictionary with the key + as the zero-indexed column number and the value of the dictionary. + Default is None for all independent variables less the constant. + dummy : bool, optional + If False, treats binary variables (if present) as continuous. This + is the default. Else if True, treats binary variables as + changing from 0 to 1. Note that any variable that is either 0 or 1 + is treated as binary. Each binary variable is treated separately + for now. + count : bool, optional + If False, treats count variables (if present) as continuous. This + is the default. Else if True, the marginal effect is the + change in probabilities when each observation is increased by one. + + Returns + ------- + effects : ndarray + the marginal effect corresponding to the input options + + Notes + ----- + When using after Poisson, returns the expected number of events + per period, assuming that the model is loglinear. + """ + + if self.model.constraint is not None: + warnings.warn("marginal effects ignore constraints", + ValueWarning) + + return GEEMargins(self, (at, method, atexog, dummy, count)) + + def plot_isotropic_dependence(self, ax=None, xpoints=10, + min_n=50): + """ + Create a plot of the pairwise products of within-group + residuals against the corresponding time differences. This + plot can be used to assess the possible form of an isotropic + covariance structure. + + Parameters + ---------- + ax : Matplotlib axes instance + An axes on which to draw the graph. If None, new + figure and axes objects are created + xpoints : scalar or array-like + If scalar, the number of points equally spaced points on + the time difference axis used to define bins for + calculating local means. If an array, the specific points + that define the bins. + min_n : integer + The minimum sample size in a bin for the mean residual + product to be included on the plot. + """ + + from statsmodels.graphics import utils as gutils + + resid = self.model.cluster_list(self.resid) + time = self.model.cluster_list(self.model.time) + + # All within-group pairwise time distances (xdt) and the + # corresponding products of scaled residuals (xre). + xre, xdt = [], [] + for re, ti in zip(resid, time): + ix = np.tril_indices(re.shape[0], 0) + re = re[ix[0]] * re[ix[1]] / self.scale ** 2 + xre.append(re) + dists = np.sqrt(((ti[ix[0], :] - ti[ix[1], :]) ** 2).sum(1)) + xdt.append(dists) + + xre = np.concatenate(xre) + xdt = np.concatenate(xdt) + + if ax is None: + fig, ax = gutils.create_mpl_ax(ax) + else: + fig = ax.get_figure() + + # Convert to a correlation + ii = np.flatnonzero(xdt == 0) + v0 = np.mean(xre[ii]) + xre /= v0 + + # Use the simple average to smooth, since fancier smoothers + # that trim and downweight outliers give biased results (we + # need the actual mean of a skewed distribution). + if np.isscalar(xpoints): + xpoints = np.linspace(0, max(xdt), xpoints) + dg = np.digitize(xdt, xpoints) + dgu = np.unique(dg) + hist = np.asarray([np.sum(dg == k) for k in dgu]) + ii = np.flatnonzero(hist >= min_n) + dgu = dgu[ii] + dgy = np.asarray([np.mean(xre[dg == k]) for k in dgu]) + dgx = np.asarray([np.mean(xdt[dg == k]) for k in dgu]) + + ax.plot(dgx, dgy, '-', color='orange', lw=5) + ax.set_xlabel("Time difference") + ax.set_ylabel("Product of scaled residuals") + + return fig + + def sensitivity_params(self, dep_params_first, + dep_params_last, num_steps): + """ + Refits the GEE model using a sequence of values for the + dependence parameters. + + Parameters + ---------- + dep_params_first : array-like + The first dep_params in the sequence + dep_params_last : array-like + The last dep_params in the sequence + num_steps : int + The number of dep_params in the sequence + + Returns + ------- + results : array-like + The GEEResults objects resulting from the fits. + """ + + model = self.model + + import copy + cov_struct = copy.deepcopy(self.model.cov_struct) + + # We are fixing the dependence structure in each run. + update_dep = model.update_dep + model.update_dep = False + + dep_params = [] + results = [] + for x in np.linspace(0, 1, num_steps): + + dp = x * dep_params_last + (1 - x) * dep_params_first + dep_params.append(dp) + + model.cov_struct = copy.deepcopy(cov_struct) + model.cov_struct.dep_params = dp + rslt = model.fit(start_params=self.params, + ctol=self.ctol, + params_niter=self.params_niter, + first_dep_update=self.first_dep_update, + cov_type=self.cov_type) + results.append(rslt) + + model.update_dep = update_dep + + return results + + # FIXME: alias to be removed, temporary backwards compatibility + params_sensitivity = sensitivity_params + + +class GEEResultsWrapper(lm.RegressionResultsWrapper): + _attrs = { + 'centered_resid': 'rows', + } + _wrap_attrs = wrap.union_dicts(lm.RegressionResultsWrapper._wrap_attrs, + _attrs) +wrap.populate_wrapper(GEEResultsWrapper, GEEResults) # noqa:E305 + + +class OrdinalGEE(GEE): + + __doc__ = ( + " Estimation of ordinal response marginal regression models\n" + " using Generalized Estimating Equations (GEE).\n" + + _gee_init_doc % {'extra_params': base._missing_param_doc, + 'family_doc': _gee_ordinal_family_doc, + 'example': _gee_ordinal_example}) + + def __init__(self, endog, exog, groups, time=None, family=None, + cov_struct=None, missing='none', offset=None, + dep_data=None, constraint=None, **kwargs): + + if family is None: + family = families.Binomial() + else: + if not isinstance(family, families.Binomial): + raise ValueError("ordinal GEE must use a Binomial family") + + if cov_struct is None: + cov_struct = cov_structs.OrdinalIndependence() + + endog, exog, groups, time, offset = self.setup_ordinal( + endog, exog, groups, time, offset) + + super(OrdinalGEE, self).__init__(endog, exog, groups, time, + family, cov_struct, missing, + offset, dep_data, constraint) + + def setup_ordinal(self, endog, exog, groups, time, offset): + """ + Restructure ordinal data as binary indicators so that they can + be analysed using Generalized Estimating Equations. + """ + + self.endog_orig = endog.copy() + self.exog_orig = exog.copy() + self.groups_orig = groups.copy() + if offset is not None: + self.offset_orig = offset.copy() + else: + self.offset_orig = None + offset = np.zeros(len(endog)) + if time is not None: + self.time_orig = time.copy() + else: + self.time_orig = None + time = np.zeros((len(endog), 1)) + + exog = np.asarray(exog) + endog = np.asarray(endog) + groups = np.asarray(groups) + time = np.asarray(time) + offset = np.asarray(offset) + + # The unique outcomes, except the greatest one. + self.endog_values = np.unique(endog) + endog_cuts = self.endog_values[0:-1] + ncut = len(endog_cuts) + + nrows = ncut * len(endog) + exog_out = np.zeros((nrows, exog.shape[1]), + dtype=np.float64) + endog_out = np.zeros(nrows, dtype=np.float64) + intercepts = np.zeros((nrows, ncut), dtype=np.float64) + groups_out = np.zeros(nrows, dtype=groups.dtype) + time_out = np.zeros((nrows, time.shape[1]), + dtype=np.float64) + offset_out = np.zeros(nrows, dtype=np.float64) + + jrow = 0 + zipper = zip(exog, endog, groups, time, offset) + for (exog_row, endog_value, group_value, time_value, + offset_value) in zipper: + + # Loop over thresholds for the indicators + for thresh_ix, thresh in enumerate(endog_cuts): + + exog_out[jrow, :] = exog_row + endog_out[jrow] = (int(endog_value > thresh)) + intercepts[jrow, thresh_ix] = 1 + groups_out[jrow] = group_value + time_out[jrow] = time_value + offset_out[jrow] = offset_value + jrow += 1 + + exog_out = np.concatenate((intercepts, exog_out), axis=1) + + # exog column names, including intercepts + xnames = ["I(y>%.1f)" % v for v in endog_cuts] + if type(self.exog_orig) == pd.DataFrame: + xnames.extend(self.exog_orig.columns) + else: + xnames.extend(["x%d" % k for k in range(1, exog.shape[1] + 1)]) + exog_out = pd.DataFrame(exog_out, columns=xnames) + + # Preserve the endog name if there is one + if type(self.endog_orig) == pd.Series: + endog_out = pd.Series(endog_out, name=self.endog_orig.name) + + return endog_out, exog_out, groups_out, time_out, offset_out + + def _starting_params(self): + model = GEE(self.endog, self.exog, self.groups, + time=self.time, family=families.Binomial(), + offset=self.offset, exposure=self.exposure) + result = model.fit() + return result.params + + def fit(self, maxiter=60, ctol=1e-6, start_params=None, + params_niter=1, first_dep_update=0, + cov_type='robust'): + + rslt = super(OrdinalGEE, self).fit(maxiter, ctol, start_params, + params_niter, first_dep_update, + cov_type=cov_type) + + rslt = rslt._results # use unwrapped instance + res_kwds = dict(((k, getattr(rslt, k)) for k in rslt._props)) + # Convert the GEEResults to an OrdinalGEEResults + ord_rslt = OrdinalGEEResults(self, rslt.params, + rslt.cov_params() / rslt.scale, + rslt.scale, + cov_type=cov_type, + attr_kwds=res_kwds) + # for k in rslt._props: + # setattr(ord_rslt, k, getattr(rslt, k)) + + return OrdinalGEEResultsWrapper(ord_rslt) + + fit.__doc__ = _gee_fit_doc + + +class OrdinalGEEResults(GEEResults): + + __doc__ = ( + "This class summarizes the fit of a marginal regression model" + "for an ordinal response using GEE.\n" + + _gee_results_doc) + + def plot_distribution(self, ax=None, exog_values=None): + """ + Plot the fitted probabilities of endog in an ordinal model, + for specifed values of the predictors. + + Parameters + ---------- + ax : Matplotlib axes instance + An axes on which to draw the graph. If None, new + figure and axes objects are created + exog_values : array-like + A list of dictionaries, with each dictionary mapping + variable names to values at which the variable is held + fixed. The values P(endog=y | exog) are plotted for all + possible values of y, at the given exog value. Variables + not included in a dictionary are held fixed at the mean + value. + + Example: + -------- + We have a model with covariates 'age' and 'sex', and wish to + plot the probabilities P(endog=y | exog) for males (sex=0) and + for females (sex=1), as separate paths on the plot. Since + 'age' is not included below in the map, it is held fixed at + its mean value. + + >>> ev = [{"sex": 1}, {"sex": 0}] + >>> rslt.distribution_plot(exog_values=ev) + """ + + from statsmodels.graphics import utils as gutils + + if ax is None: + fig, ax = gutils.create_mpl_ax(ax) + else: + fig = ax.get_figure() + + # If no covariate patterns are specified, create one with all + # variables set to their mean values. + if exog_values is None: + exog_values = [{}, ] + + exog_means = self.model.exog.mean(0) + ix_icept = [i for i, x in enumerate(self.model.exog_names) if + x.startswith("I(")] + + for ev in exog_values: + + for k in ev.keys(): + if k not in self.model.exog_names: + raise ValueError("%s is not a variable in the model" + % k) + + # Get the fitted probability for each level, at the given + # covariate values. + pr = [] + for j in ix_icept: + + xp = np.zeros_like(self.params) + xp[j] = 1. + for i, vn in enumerate(self.model.exog_names): + if i in ix_icept: + continue + # User-specified value + if vn in ev: + xp[i] = ev[vn] + # Mean value + else: + xp[i] = exog_means[i] + + p = 1 / (1 + np.exp(-np.dot(xp, self.params))) + pr.append(p) + + pr.insert(0, 1) + pr.append(0) + pr = np.asarray(pr) + prd = -np.diff(pr) + + ax.plot(self.model.endog_values, prd, 'o-') + + ax.set_xlabel("Response value") + ax.set_ylabel("Probability") + ax.set_ylim(0, 1) + + return fig + + +def _score_test_submodel(par, sub): + """ + Return transformation matrices for design matrices. + + Parameters + ---------- + par : instance + The parent model + sub : instance + The sub-model + + Returns + ------- + qm : array-like + Matrix mapping the design matrix of the parent to the design matrix + for the sub-model. + qc : array-like + Matrix mapping the design matrix of the parent to the orthogonal + complement of the columnspace of the submodel in the columnspace + of the parent. + + Notes + ----- + Returns None, None if the provided submodel is not actually a submodel. + """ + + x1 = par.exog + x2 = sub.exog + + u, s, vt = np.linalg.svd(x1, 0) + + # Get the orthogonal complement of col(x2) in col(x1). + a, _, _ = np.linalg.svd(x2, 0) + a = u - np.dot(a, np.dot(a.T, u)) + x2c, sb, _ = np.linalg.svd(a, 0) + x2c = x2c[:, sb > 1e-12] + + # x1 * qm = x2 + qm = np.dot(vt.T, np.dot(u.T, x2) / s[:, None]) + + e = np.max(np.abs(x2 - np.dot(x1, qm))) + if e > 1e-8: + return None, None + + # x1 * qc = x2c + qc = np.dot(vt.T, np.dot(u.T, x2c) / s[:, None]) + + return qm, qc + + +class OrdinalGEEResultsWrapper(GEEResultsWrapper): + pass +wrap.populate_wrapper(OrdinalGEEResultsWrapper, OrdinalGEEResults) # noqa:E305 + + +class NominalGEE(GEE): + + __doc__ = ( + " Estimation of nominal response marginal regression models\n" + " using Generalized Estimating Equations (GEE).\n" + + _gee_init_doc % {'extra_params': base._missing_param_doc, + 'family_doc': _gee_nominal_family_doc, + 'example': _gee_nominal_example}) + + def __init__(self, endog, exog, groups, time=None, family=None, + cov_struct=None, missing='none', offset=None, + dep_data=None, constraint=None, **kwargs): + + endog, exog, groups, time, offset = self.setup_nominal( + endog, exog, groups, time, offset) + + if family is None: + family = _Multinomial(self.ncut + 1) + + if cov_struct is None: + cov_struct = cov_structs.NominalIndependence() + + super(NominalGEE, self).__init__( + endog, exog, groups, time, family, cov_struct, missing, + offset, dep_data, constraint) + + def _starting_params(self): + model = GEE(self.endog, self.exog, self.groups, + time=self.time, family=families.Binomial(), + offset=self.offset, exposure=self.exposure) + result = model.fit() + return result.params + + def setup_nominal(self, endog, exog, groups, time, offset): + """ + Restructure nominal data as binary indicators so that they can + be analysed using Generalized Estimating Equations. + """ + + self.endog_orig = endog.copy() + self.exog_orig = exog.copy() + self.groups_orig = groups.copy() + if offset is not None: + self.offset_orig = offset.copy() + else: + self.offset_orig = None + offset = np.zeros(len(endog)) + if time is not None: + self.time_orig = time.copy() + else: + self.time_orig = None + time = np.zeros((len(endog), 1)) + + exog = np.asarray(exog) + endog = np.asarray(endog) + groups = np.asarray(groups) + time = np.asarray(time) + offset = np.asarray(offset) + + # The unique outcomes, except the greatest one. + self.endog_values = np.unique(endog) + endog_cuts = self.endog_values[0:-1] + ncut = len(endog_cuts) + self.ncut = ncut + + nrows = len(endog_cuts) * exog.shape[0] + ncols = len(endog_cuts) * exog.shape[1] + exog_out = np.zeros((nrows, ncols), dtype=np.float64) + endog_out = np.zeros(nrows, dtype=np.float64) + groups_out = np.zeros(nrows, dtype=np.float64) + time_out = np.zeros((nrows, time.shape[1]), + dtype=np.float64) + offset_out = np.zeros(nrows, dtype=np.float64) + + jrow = 0 + zipper = zip(exog, endog, groups, time, offset) + for (exog_row, endog_value, group_value, time_value, + offset_value) in zipper: + + # Loop over thresholds for the indicators + for thresh_ix, thresh in enumerate(endog_cuts): + + u = np.zeros(len(endog_cuts), dtype=np.float64) + u[thresh_ix] = 1 + exog_out[jrow, :] = np.kron(u, exog_row) + endog_out[jrow] = (int(endog_value == thresh)) + groups_out[jrow] = group_value + time_out[jrow] = time_value + offset_out[jrow] = offset_value + jrow += 1 + + # exog names + if isinstance(self.exog_orig, pd.DataFrame): + xnames_in = self.exog_orig.columns + else: + xnames_in = ["x%d" % k for k in range(1, exog.shape[1] + 1)] + xnames = [] + for tr in endog_cuts: + xnames.extend(["%s[%.1f]" % (v, tr) for v in xnames_in]) + exog_out = pd.DataFrame(exog_out, columns=xnames) + exog_out = pd.DataFrame(exog_out, columns=xnames) + + # Preserve endog name if there is one + if isinstance(self.endog_orig, pd.Series): + endog_out = pd.Series(endog_out, name=self.endog_orig.name) + + return endog_out, exog_out, groups_out, time_out, offset_out + + def mean_deriv(self, exog, lin_pred): + """ + Derivative of the expected endog with respect to the parameters. + + Parameters + ---------- + exog : array-like + The exogeneous data at which the derivative is computed, + number of rows must be a multiple of `ncut`. + lin_pred : array-like + The values of the linear predictor, length must be multiple + of `ncut`. + + Returns + ------- + The derivative of the expected endog with respect to the + parameters. + """ + + expval = np.exp(lin_pred) + + # Reshape so that each row contains all the indicators + # corresponding to one multinomial observation. + expval_m = np.reshape(expval, (len(expval) // self.ncut, + self.ncut)) + + # The normalizing constant for the multinomial probabilities. + denom = 1 + expval_m.sum(1) + denom = np.kron(denom, np.ones(self.ncut, dtype=np.float64)) + + # The multinomial probabilities + mprob = expval / denom + + # First term of the derivative: denom * expval' / denom^2 = + # expval' / denom. + dmat = mprob[:, None] * exog + + # Second term of the derivative: -expval * denom' / denom^2 + ddenom = expval[:, None] * exog + dmat -= mprob[:, None] * ddenom / denom[:, None] + + return dmat + + def mean_deriv_exog(self, exog, params, offset_exposure=None): + """ + Derivative of the expected endog with respect to exog for the + multinomial model, used in analyzing marginal effects. + + Parameters + ---------- + exog : array-like + The exogeneous data at which the derivative is computed, + number of rows must be a multiple of `ncut`. + lpr : array-like + The linear predictor values, length must be multiple of + `ncut`. + + Returns + ------- + The value of the derivative of the expected endog with respect + to exog. + + Notes + ----- + offset_exposure must be set at None for the multinoial family. + """ + + if offset_exposure is not None: + warnings.warn("Offset/exposure ignored for the multinomial family", + ValueWarning) + + lpr = np.dot(exog, params) + expval = np.exp(lpr) + + expval_m = np.reshape(expval, (len(expval) // self.ncut, + self.ncut)) + + denom = 1 + expval_m.sum(1) + denom = np.kron(denom, np.ones(self.ncut, dtype=np.float64)) + + bmat0 = np.outer(np.ones(exog.shape[0]), params) + + # Masking matrix + qmat = [] + for j in range(self.ncut): + ee = np.zeros(self.ncut, dtype=np.float64) + ee[j] = 1 + qmat.append(np.kron(ee, np.ones(len(params) // self.ncut))) + qmat = np.array(qmat) + qmat = np.kron(np.ones((exog.shape[0] // self.ncut, 1)), qmat) + bmat = bmat0 * qmat + + dmat = expval[:, None] * bmat / denom[:, None] + + expval_mb = np.kron(expval_m, np.ones((self.ncut, 1))) + expval_mb = np.kron(expval_mb, np.ones((1, self.ncut))) + + dmat -= expval[:, None] * (bmat * expval_mb) / denom[:, None] ** 2 + + return dmat + + def fit(self, maxiter=60, ctol=1e-6, start_params=None, + params_niter=1, first_dep_update=0, + cov_type='robust'): + + rslt = super(NominalGEE, self).fit(maxiter, ctol, start_params, + params_niter, first_dep_update, + cov_type=cov_type) + if rslt is None: + warnings.warn("GEE updates did not converge", + ConvergenceWarning) + return None + + rslt = rslt._results # use unwrapped instance + res_kwds = dict(((k, getattr(rslt, k)) for k in rslt._props)) + # Convert the GEEResults to a NominalGEEResults + nom_rslt = NominalGEEResults(self, rslt.params, + rslt.cov_params() / rslt.scale, + rslt.scale, + cov_type=cov_type, + attr_kwds=res_kwds) + # for k in rslt._props: + # setattr(nom_rslt, k, getattr(rslt, k)) + + return NominalGEEResultsWrapper(nom_rslt) + + fit.__doc__ = _gee_fit_doc + + +class NominalGEEResults(GEEResults): + + __doc__ = ( + "This class summarizes the fit of a marginal regression model" + "for a nominal response using GEE.\n" + + _gee_results_doc) + + def plot_distribution(self, ax=None, exog_values=None): + """ + Plot the fitted probabilities of endog in an nominal model, + for specifed values of the predictors. + + Parameters + ---------- + ax : Matplotlib axes instance + An axes on which to draw the graph. If None, new + figure and axes objects are created + exog_values : array-like + A list of dictionaries, with each dictionary mapping + variable names to values at which the variable is held + fixed. The values P(endog=y | exog) are plotted for all + possible values of y, at the given exog value. Variables + not included in a dictionary are held fixed at the mean + value. + + Example: + -------- + We have a model with covariates 'age' and 'sex', and wish to + plot the probabilities P(endog=y | exog) for males (sex=0) and + for females (sex=1), as separate paths on the plot. Since + 'age' is not included below in the map, it is held fixed at + its mean value. + + >>> ex = [{"sex": 1}, {"sex": 0}] + >>> rslt.distribution_plot(exog_values=ex) + """ + + from statsmodels.graphics import utils as gutils + + if ax is None: + fig, ax = gutils.create_mpl_ax(ax) + else: + fig = ax.get_figure() + + # If no covariate patterns are specified, create one with all + # variables set to their mean values. + if exog_values is None: + exog_values = [{}, ] + + link = self.model.family.link.inverse + ncut = self.model.family.ncut + + k = int(self.model.exog.shape[1] / ncut) + exog_means = self.model.exog.mean(0)[0:k] + exog_names = self.model.exog_names[0:k] + exog_names = [x.split("[")[0] for x in exog_names] + + params = np.reshape(self.params, + (ncut, len(self.params) // ncut)) + + for ev in exog_values: + + exog = exog_means.copy() + + for k in ev.keys(): + if k not in exog_names: + raise ValueError("%s is not a variable in the model" + % k) + + ii = exog_names.index(k) + exog[ii] = ev[k] + + lpr = np.dot(params, exog) + pr = link(lpr) + pr = np.r_[pr, 1 - pr.sum()] + + ax.plot(self.model.endog_values, pr, 'o-') + + ax.set_xlabel("Response value") + ax.set_ylabel("Probability") + ax.set_xticks(self.model.endog_values) + ax.set_xticklabels(self.model.endog_values) + ax.set_ylim(0, 1) + + return fig + + +class NominalGEEResultsWrapper(GEEResultsWrapper): + pass +wrap.populate_wrapper(NominalGEEResultsWrapper, NominalGEEResults) # noqa:E305 + + +class _MultinomialLogit(Link): + """ + The multinomial logit transform, only for use with GEE. + + Notes + ----- + The data are assumed coded as binary indicators, where each + observed multinomial value y is coded as I(y == S[0]), ..., I(y == + S[-1]), where S is the set of possible response labels, excluding + the largest one. Thererefore functions in this class should only + be called using vector argument whose length is a multiple of |S| + = ncut, which is an argument to be provided when initializing the + class. + + call and derivative use a private method _clean to trim p by 1e-10 + so that p is in (0, 1) + """ + + def __init__(self, ncut): + self.ncut = ncut + + def inverse(self, lpr): + """ + Inverse of the multinomial logit transform, which gives the + expected values of the data as a function of the linear + predictors. + + Parameters + ---------- + lpr : array-like (length must be divisible by `ncut`) + The linear predictors + + Returns + ------- + prob : array + Probabilities, or expected values + """ + + expval = np.exp(lpr) + + denom = 1 + np.reshape(expval, (len(expval) // self.ncut, + self.ncut)).sum(1) + denom = np.kron(denom, np.ones(self.ncut, dtype=np.float64)) + + prob = expval / denom + + return prob + + +class _Multinomial(families.Family): + """ + Pseudo-link function for fitting nominal multinomial models with + GEE. Not for use outside the GEE class. + """ + + links = [_MultinomialLogit, ] + variance = varfuncs.binary + safe_links = [_MultinomialLogit, ] + + def __init__(self, nlevels): + """ + Parameters + ---------- + nlevels : integer + The number of distinct categories for the multinomial + distribution. + """ + self.initialize(nlevels) + + def initialize(self, nlevels): + self.ncut = nlevels - 1 + self.link = _MultinomialLogit(self.ncut) + + +class GEEMargins(object): + """ + Estimated marginal effects for a regression model fit with GEE. + + Parameters + ---------- + results : GEEResults instance + The results instance of a fitted discrete choice model + args : tuple + Args are passed to `get_margeff`. This is the same as + results.get_margeff. See there for more information. + kwargs : dict + Keyword args are passed to `get_margeff`. This is the same as + results.get_margeff. See there for more information. + """ + + def __init__(self, results, args, kwargs={}): + self._cache = {} + self.results = results + self.get_margeff(*args, **kwargs) + + def _reset(self): + self._cache = {} + + @cache_readonly + def tvalues(self): + _check_at_is_all(self.margeff_options) + return self.margeff / self.margeff_se + + def summary_frame(self, alpha=.05): + """ + Returns a DataFrame summarizing the marginal effects. + + Parameters + ---------- + alpha : float + Number between 0 and 1. The confidence intervals have the + probability 1-alpha. + + Returns + ------- + frame : DataFrames + A DataFrame summarizing the marginal effects. + """ + _check_at_is_all(self.margeff_options) + from pandas import DataFrame + names = [_transform_names[self.margeff_options['method']], + 'Std. Err.', 'z', 'Pr(>|z|)', + 'Conf. Int. Low', 'Cont. Int. Hi.'] + ind = self.results.model.exog.var(0) != 0 # True if not a constant + exog_names = self.results.model.exog_names + var_names = [name for i, name in enumerate(exog_names) if ind[i]] + table = np.column_stack((self.margeff, self.margeff_se, self.tvalues, + self.pvalues, self.conf_int(alpha))) + return DataFrame(table, columns=names, index=var_names) + + @cache_readonly + def pvalues(self): + _check_at_is_all(self.margeff_options) + return stats.norm.sf(np.abs(self.tvalues)) * 2 + + def conf_int(self, alpha=.05): + """ + Returns the confidence intervals of the marginal effects + + Parameters + ---------- + alpha : float + Number between 0 and 1. The confidence intervals have the + probability 1-alpha. + + Returns + ------- + conf_int : ndarray + An array with lower, upper confidence intervals for the marginal + effects. + """ + _check_at_is_all(self.margeff_options) + me_se = self.margeff_se + q = stats.norm.ppf(1 - alpha / 2) + lower = self.margeff - q * me_se + upper = self.margeff + q * me_se + return np.asarray(lzip(lower, upper)) + + def summary(self, alpha=.05): + """ + Returns a summary table for marginal effects + + Parameters + ---------- + alpha : float + Number between 0 and 1. The confidence intervals have the + probability 1-alpha. + + Returns + ------- + Summary : SummaryTable + A SummaryTable instance + """ + _check_at_is_all(self.margeff_options) + results = self.results + model = results.model + title = model.__class__.__name__ + " Marginal Effects" + method = self.margeff_options['method'] + top_left = [('Dep. Variable:', [model.endog_names]), + ('Method:', [method]), + ('At:', [self.margeff_options['at']]), ] + + from statsmodels.iolib.summary import (Summary, summary_params, + table_extend) + exog_names = model.exog_names[:] # copy + smry = Summary() + + const_idx = model.data.const_idx + if const_idx is not None: + exog_names.pop(const_idx) + + J = int(getattr(model, "J", 1)) + if J > 1: + yname, yname_list = results._get_endog_name(model.endog_names, + None, all=True) + else: + yname = model.endog_names + yname_list = [yname] + + smry.add_table_2cols(self, gleft=top_left, gright=[], + yname=yname, xname=exog_names, title=title) + + # NOTE: add_table_params is not general enough yet for margeff + # could use a refactor with getattr instead of hard-coded params + # tvalues etc. + table = [] + conf_int = self.conf_int(alpha) + margeff = self.margeff + margeff_se = self.margeff_se + tvalues = self.tvalues + pvalues = self.pvalues + if J > 1: + for eq in range(J): + restup = (results, margeff[:, eq], margeff_se[:, eq], + tvalues[:, eq], pvalues[:, eq], conf_int[:, :, eq]) + tble = summary_params(restup, yname=yname_list[eq], + xname=exog_names, alpha=alpha, + use_t=False, + skip_header=True) + tble.title = yname_list[eq] + # overwrite coef with method name + header = ['', _transform_names[method], 'std err', 'z', + 'P>|z|', + '[%3.1f%% Conf. Int.]' % (100 - alpha * 100)] + tble.insert_header_row(0, header) + # from IPython.core.debugger import Pdb; Pdb().set_trace() + table.append(tble) + + table = table_extend(table, keep_headers=True) + else: + restup = (results, margeff, margeff_se, tvalues, pvalues, conf_int) + table = summary_params(restup, yname=yname, xname=exog_names, + alpha=alpha, use_t=False, skip_header=True) + header = ['', _transform_names[method], 'std err', 'z', + 'P>|z|', '[%3.1f%% Conf. Int.]' % (100 - alpha * 100)] + table.insert_header_row(0, header) + + smry.tables.append(table) + return smry + + def get_margeff(self, at='overall', method='dydx', atexog=None, + dummy=False, count=False): + + self._reset() # always reset the cache when this is called + # TODO: if at is not all or overall, we can also put atexog values + # in summary table head + method = method.lower() + at = at.lower() + _check_margeff_args(at, method) + self.margeff_options = dict(method=method, at=at) + results = self.results + model = results.model + params = results.params + exog = model.exog.copy() # copy because values are changed + effects_idx = exog.var(0) != 0 + const_idx = model.data.const_idx + + if dummy: + _check_discrete_args(at, method) + dummy_idx, dummy = _get_dummy_index(exog, const_idx) + else: + dummy_idx = None + + if count: + _check_discrete_args(at, method) + count_idx, count = _get_count_index(exog, const_idx) + else: + count_idx = None + + # get the exogenous variables + exog = _get_margeff_exog(exog, at, atexog, effects_idx) + + # get base marginal effects, handled by sub-classes + effects = model._derivative_exog(params, exog, method, + dummy_idx, count_idx) + effects = _effects_at(effects, at) + + if at == 'all': + self.margeff = effects[:, effects_idx] + else: + # Set standard error of the marginal effects by Delta method. + margeff_cov, margeff_se = margeff_cov_with_se( + model, params, exog, results.cov_params(), at, + model._derivative_exog, dummy_idx, count_idx, + method, 1) + + # don't care about at constant + self.margeff_cov = margeff_cov[effects_idx][:, effects_idx] + self.margeff_se = margeff_se[effects_idx] + self.margeff = effects[effects_idx] diff --git a/statsmodels/genmod/generalized_linear_model.py b/statsmodels/genmod/generalized_linear_model.py new file mode 100644 index 0000000..e20d2df --- /dev/null +++ b/statsmodels/genmod/generalized_linear_model.py @@ -0,0 +1,1964 @@ +""" +Generalized linear models currently supports estimation using the one-parameter +exponential families + +References +---------- +Gill, Jeff. 2000. Generalized Linear Models: A Unified Approach. + SAGE QASS Series. + +Green, PJ. 1984. "Iteratively reweighted least squares for maximum + likelihood estimation, and some robust and resistant alternatives." + Journal of the Royal Statistical Society, Series B, 46, 149-192. + +Hardin, J.W. and Hilbe, J.M. 2007. "Generalized Linear Models and + Extensions." 2nd ed. Stata Press, College Station, TX. + +McCullagh, P. and Nelder, J.A. 1989. "Generalized Linear Models." 2nd ed. + Chapman & Hall, Boca Rotan. +""" +import numpy as np +from . import families +from statsmodels.tools.decorators import cache_readonly + +import statsmodels.base.model as base +import statsmodels.regression.linear_model as lm +import statsmodels.base.wrapper as wrap +import statsmodels.regression._tools as reg_tools + +from statsmodels.graphics._regressionplots_doc import ( + _plot_added_variable_doc, + _plot_partial_residuals_doc, + _plot_ceres_residuals_doc) + +# need import in module instead of lazily to copy `__doc__` +from . import _prediction as pred +from statsmodels.genmod._prediction import PredictionResults + +from statsmodels.tools.sm_exceptions import (PerfectSeparationError, + DomainWarning, + HessianInversionWarning) + +from numpy.linalg.linalg import LinAlgError + +__all__ = ['GLM', 'PredictionResults'] + + +def _check_convergence(criterion, iteration, atol, rtol): + return np.allclose(criterion[iteration], criterion[iteration + 1], + atol=atol, rtol=rtol) + + +class GLM(base.LikelihoodModel): + __doc__ = """ + Generalized Linear Models class + + GLM inherits from statsmodels.base.model.LikelihoodModel + + Parameters + ---------- + endog : array-like + 1d array of endogenous response variable. This array can be 1d or 2d. + Binomial family models accept a 2d array with two columns. If + supplied, each observation is expected to be [success, failure]. + exog : array-like + A nobs x k array where `nobs` is the number of observations and `k` + is the number of regressors. An intercept is not included by default + and should be added by the user (models specified using a formula + include an intercept by default). See `statsmodels.tools.add_constant`. + family : family class instance + The default is Gaussian. To specify the binomial distribution + family = sm.family.Binomial() + Each family can take a link instance as an argument. See + statsmodels.family.family for more information. + offset : array-like or None + An offset to be included in the model. If provided, must be + an array whose length is the number of rows in exog. + exposure : array-like or None + Log(exposure) will be added to the linear prediction in the model. + Exposure is only valid if the log link is used. If provided, it must be + an array with the same length as endog. + freq_weights : array-like + 1d array of frequency weights. The default is None. If None is selected + or a blank value, then the algorithm will replace with an array of 1's + with length equal to the endog. + WARNING: Using weights is not verified yet for all possible options + and results, see Notes. + var_weights : array-like + 1d array of variance (analytic) weights. The default is None. If None + is selected or a blank value, then the algorithm will replace with an + array of 1's with length equal to the endog. + WARNING: Using weights is not verified yet for all possible options + and results, see Notes. + %(extra_params)s + + Attributes + ---------- + df_model : float + Model degrees of freedom is equal to p - 1, where p is the number + of regressors. Note that the intercept is not reported as a + degree of freedom. + df_resid : float + Residual degrees of freedom is equal to the number of observation n + minus the number of regressors p. + endog : array + See Notes. Note that `endog` is a reference to the data so that if + data is already an array and it is changed, then `endog` changes + as well. + exposure : array-like + Include ln(exposure) in model with coefficient constrained to 1. Can + only be used if the link is the logarithm function. + exog : array + See Notes. Note that `exog` is a reference to the data so that if + data is already an array and it is changed, then `exog` changes + as well. + freq_weights : array + See Notes. Note that `freq_weights` is a reference to the data so that + if data is already an array and it is changed, then `freq_weights` + changes as well. + var_weights : array + See Notes. Note that `var_weights` is a reference to the data so that + if data is already an array and it is changed, then `var_weights` + changes as well. + iteration : int + The number of iterations that fit has run. Initialized at 0. + family : family class instance + The distribution family of the model. Can be any family in + statsmodels.families. Default is Gaussian. + mu : array + The mean response of the transformed variable. `mu` is the value of + the inverse of the link function at lin_pred, where lin_pred is the + linear predicted value of the WLS fit of the transformed variable. + `mu` is only available after fit is called. See + statsmodels.families.family.fitted of the distribution family for more + information. + n_trials : array + See Notes. Note that `n_trials` is a reference to the data so that if + data is already an array and it is changed, then `n_trials` changes + as well. `n_trials` is the number of binomial trials and only available + with that distribution. See statsmodels.families.Binomial for more + information. + normalized_cov_params : array + The p x p normalized covariance of the design / exogenous data. + This is approximately equal to (X.T X)^(-1) + offset : array-like + Include offset in model with coefficient constrained to 1. + scale : float + The estimate of the scale / dispersion of the model fit. Only + available after fit is called. See GLM.fit and GLM.estimate_scale + for more information. + scaletype : str + The scaling used for fitting the model. This is only available after + fit is called. The default is None. See GLM.fit for more information. + weights : array + The value of the weights after the last iteration of fit. Only + available after fit is called. See statsmodels.families.family for + the specific distribution weighting functions. + + Examples + -------- + >>> import statsmodels.api as sm + >>> data = sm.datasets.scotland.load(as_pandas=False) + >>> data.exog = sm.add_constant(data.exog) + + Instantiate a gamma family model with the default link function. + + >>> gamma_model = sm.GLM(data.endog, data.exog, + ... family=sm.families.Gamma()) + + >>> gamma_results = gamma_model.fit() + >>> gamma_results.params + array([-0.01776527, 0.00004962, 0.00203442, -0.00007181, 0.00011185, + -0.00000015, -0.00051868, -0.00000243]) + >>> gamma_results.scale + 0.0035842831734919055 + >>> gamma_results.deviance + 0.087388516416999198 + >>> gamma_results.pearson_chi2 + 0.086022796163805704 + >>> gamma_results.llf + -83.017202161073527 + + See Also + -------- + statsmodels.genmod.families.family.Family + :ref:`families` + :ref:`links` + + Notes + ----- + Only the following combinations make sense for family and link: + + ============= ===== === ===== ====== ======= === ==== ====== ====== ==== + Family ident log logit probit cloglog pow opow nbinom loglog logc + ============= ===== === ===== ====== ======= === ==== ====== ====== ==== + Gaussian x x x x x x x x x + inv Gaussian x x x + binomial x x x x x x x x x + Poission x x x + neg binomial x x x x + gamma x x x + Tweedie x x x + ============= ===== === ===== ====== ======= === ==== ====== ====== ==== + + Not all of these link functions are currently available. + + Endog and exog are references so that if the data they refer to are already + arrays and these arrays are changed, endog and exog will change. + + Statsmodels supports two separte definitions of weights: frequency weights + and variance weights. + + Frequency weights produce the same results as repeating observations by the + frequencies (if those are integers). Frequency weights will keep the number + of observations consistent, but the degrees of freedom will change to + reflect the new weights. + + Variance weights (referred to in other packages as analytic weights) are + used when ``endog`` represents an an average or mean. This relies on the + assumption that that the inverse variance scales proportionally to the + weight--an observation that is deemed more credible should have less + variance and therefore have more weight. For the ``Poisson`` family--which + assumes that occurences scale proportionally with time--a natural practice + would be to use the amount of time as the variance weight and set ``endog`` + to be a rate (occurrances per period of time). Similarly, using a + compound Poisson family, namely ``Tweedie``, makes a similar assumption + about the rate (or frequency) of occurences having variance proportional to + time. + + Both frequency and variance weights are verified for all basic results with + nonrobust or heteroscedasticity robust ``cov_type``. Other robust + covariance types have not yet been verified, and at least the small sample + correction is currently not based on the correct total frequency count. + + Currently, all residuals are not weighted by frequency, although they may + incorporate ``n_trials`` for ``Binomial`` and ``var_weights`` + + +---------------+----------------------------------+ + | Residual Type | Applicable weights | + +===============+==================================+ + | Anscombe | ``var_weights`` | + +---------------+----------------------------------+ + | Deviance | ``var_weights`` | + +---------------+----------------------------------+ + | Pearson | ``var_weights`` and ``n_trials`` | + +---------------+----------------------------------+ + | Reponse | ``n_trials`` | + +---------------+----------------------------------+ + | Working | ``n_trials`` | + +---------------+----------------------------------+ + + WARNING: Loglikelihood and deviance are not valid in models where + scale is equal to 1 (i.e., ``Binomial``, ``NegativeBinomial``, and + ``Poisson``). If variance weights are specified, then results such as + ``loglike`` and ``deviance`` are based on a quasi-likelihood + interpretation. The loglikelihood is not correctly specified in this case, + and statistics based on it, such AIC or likelihood ratio tests, are not + appropriate. + + """ % {'extra_params': base._missing_param_doc} + + def __init__(self, endog, exog, family=None, offset=None, + exposure=None, freq_weights=None, var_weights=None, + missing='none', **kwargs): + + if (family is not None) and not isinstance(family.link, + tuple(family.safe_links)): + + import warnings + warnings.warn(("The %s link function does not respect the domain " + "of the %s family.") % + (family.link.__class__.__name__, + family.__class__.__name__), + DomainWarning) + + if exposure is not None: + exposure = np.log(exposure) + if offset is not None: # this should probably be done upstream + offset = np.asarray(offset) + + if freq_weights is not None: + freq_weights = np.asarray(freq_weights) + if var_weights is not None: + var_weights = np.asarray(var_weights) + + self.freq_weights = freq_weights + self.var_weights = var_weights + + super(GLM, self).__init__(endog, exog, missing=missing, + offset=offset, exposure=exposure, + freq_weights=freq_weights, + var_weights=var_weights, **kwargs) + self._check_inputs(family, self.offset, self.exposure, self.endog, + self.freq_weights, self.var_weights) + if offset is None: + delattr(self, 'offset') + if exposure is None: + delattr(self, 'exposure') + + self.nobs = self.endog.shape[0] + + # things to remove_data + self._data_attr.extend(['weights', 'mu', 'freq_weights', + 'var_weights', 'iweights', '_offset_exposure', + 'n_trials']) + # register kwds for __init__, offset and exposure are added by super + self._init_keys.append('family') + + self._setup_binomial() + # internal usage for recreating a model + if 'n_trials' in kwargs: + self.n_trials = kwargs['n_trials'] + + # Construct a combined offset/exposure term. Note that + # exposure has already been logged if present. + offset_exposure = 0. + if hasattr(self, 'offset'): + offset_exposure = self.offset + if hasattr(self, 'exposure'): + offset_exposure = offset_exposure + self.exposure + self._offset_exposure = offset_exposure + + self.scaletype = None + + def initialize(self): + """ + Initialize a generalized linear model. + """ + self.df_model = np.linalg.matrix_rank(self.exog) - 1 + + if (self.freq_weights is not None) and \ + (self.freq_weights.shape[0] == self.endog.shape[0]): + self.wnobs = self.freq_weights.sum() + self.df_resid = self.wnobs - self.df_model - 1 + else: + self.wnobs = self.exog.shape[0] + self.df_resid = self.exog.shape[0] - self.df_model - 1 + + def _check_inputs(self, family, offset, exposure, endog, freq_weights, + var_weights): + + # Default family is Gaussian + if family is None: + family = families.Gaussian() + self.family = family + + if exposure is not None: + if not isinstance(self.family.link, families.links.Log): + raise ValueError("exposure can only be used with the log " + "link function") + elif exposure.shape[0] != endog.shape[0]: + raise ValueError("exposure is not the same length as endog") + + if offset is not None: + if offset.shape[0] != endog.shape[0]: + raise ValueError("offset is not the same length as endog") + + if freq_weights is not None: + if freq_weights.shape[0] != endog.shape[0]: + raise ValueError("freq weights not the same length as endog") + if len(freq_weights.shape) > 1: + raise ValueError("freq weights has too many dimensions") + + # internal flag to store whether freq_weights were not None + self._has_freq_weights = (self.freq_weights is not None) + if self.freq_weights is None: + self.freq_weights = np.ones((endog.shape[0])) + # TODO: check do we want to keep None as sentinel for freq_weights + + if np.shape(self.freq_weights) == () and self.freq_weights > 1: + self.freq_weights = (self.freq_weights * + np.ones((endog.shape[0]))) + + if var_weights is not None: + if var_weights.shape[0] != endog.shape[0]: + raise ValueError("var weights not the same length as endog") + if len(var_weights.shape) > 1: + raise ValueError("var weights has too many dimensions") + + # internal flag to store whether var_weights were not None + self._has_var_weights = (var_weights is not None) + if var_weights is None: + self.var_weights = np.ones((endog.shape[0])) + # TODO: check do we want to keep None as sentinel for var_weights + self.iweights = np.asarray(self.freq_weights * self.var_weights) + + def _get_init_kwds(self): + # this is a temporary fixup because exposure has been transformed + # see #1609, copied from discrete_model.CountModel + kwds = super(GLM, self)._get_init_kwds() + if 'exposure' in kwds and kwds['exposure'] is not None: + kwds['exposure'] = np.exp(kwds['exposure']) + return kwds + + def loglike_mu(self, mu, scale=1.): + """ + Evaluate the log-likelihood for a generalized linear model. + """ + return self.family.loglike(self.endog, mu, self.var_weights, + self.freq_weights, scale) + + def loglike(self, params, scale=None): + """ + Evaluate the log-likelihood for a generalized linear model. + """ + lin_pred = np.dot(self.exog, params) + self._offset_exposure + expval = self.family.link.inverse(lin_pred) + if scale is None: + scale = self.estimate_scale(expval) + llf = self.family.loglike(self.endog, expval, self.var_weights, + self.freq_weights, scale) + return llf + + def score_obs(self, params, scale=None): + """score first derivative of the loglikelihood for each observation. + + Parameters + ---------- + params : ndarray + parameter at which score is evaluated + scale : None or float + If scale is None, then the default scale will be calculated. + Default scale is defined by `self.scaletype` and set in fit. + If scale is not None, then it is used as a fixed scale. + + Returns + ------- + score_obs : ndarray, 2d + The first derivative of the loglikelihood function evaluated at + params for each observation. + + """ + + score_factor = self.score_factor(params, scale=scale) + return score_factor[:, None] * self.exog + + def score(self, params, scale=None): + """score, first derivative of the loglikelihood function + + Parameters + ---------- + params : ndarray + parameter at which score is evaluated + scale : None or float + If scale is None, then the default scale will be calculated. + Default scale is defined by `self.scaletype` and set in fit. + If scale is not None, then it is used as a fixed scale. + + Returns + ------- + score : ndarray_1d + The first derivative of the loglikelihood function calculated as + the sum of `score_obs` + + """ + score_factor = self.score_factor(params, scale=scale) + return np.dot(score_factor, self.exog) + + def score_factor(self, params, scale=None): + """weights for score for each observation + + This can be considered as score residuals. + + Parameters + ---------- + params : ndarray + parameter at which score is evaluated + scale : None or float + If scale is None, then the default scale will be calculated. + Default scale is defined by `self.scaletype` and set in fit. + If scale is not None, then it is used as a fixed scale. + + Returns + ------- + score_factor : ndarray_1d + A 1d weight vector used in the calculation of the score_obs. + The score_obs are obtained by `score_factor[:, None] * exog` + + """ + mu = self.predict(params) + if scale is None: + scale = self.estimate_scale(mu) + + score_factor = (self.endog - mu) / self.family.link.deriv(mu) + score_factor /= self.family.variance(mu) + score_factor *= self.iweights * self.n_trials + + if not scale == 1: + score_factor /= scale + + return score_factor + + def hessian_factor(self, params, scale=None, observed=True): + """Weights for calculating Hessian + + Parameters + ---------- + params : ndarray + parameter at which Hessian is evaluated + scale : None or float + If scale is None, then the default scale will be calculated. + Default scale is defined by `self.scaletype` and set in fit. + If scale is not None, then it is used as a fixed scale. + observed : bool + If True, then the observed Hessian is returned. If false then the + expected information matrix is returned. + + Returns + ------- + hessian_factor : ndarray, 1d + A 1d weight vector used in the calculation of the Hessian. + The hessian is obtained by `(exog.T * hessian_factor).dot(exog)` + """ + + # calculating eim_factor + mu = self.predict(params) + if scale is None: + scale = self.estimate_scale(mu) + + eim_factor = 1 / (self.family.link.deriv(mu)**2 * + self.family.variance(mu)) + eim_factor *= self.iweights * self.n_trials + + if not observed: + if not scale == 1: + eim_factor /= scale + return eim_factor + + # calculating oim_factor, eim_factor is with scale=1 + + score_factor = self.score_factor(params, scale=1.) + if eim_factor.ndim > 1 or score_factor.ndim > 1: + raise RuntimeError('something wrong') + + tmp = self.family.variance(mu) * self.family.link.deriv2(mu) + tmp += self.family.variance.deriv(mu) * self.family.link.deriv(mu) + + tmp = score_factor * tmp + # correct for duplicatee iweights in oim_factor and score_factor + tmp /= self.iweights * self.n_trials + oim_factor = eim_factor * (1 + tmp) + + if tmp.ndim > 1: + raise RuntimeError('something wrong') + + if not scale == 1: + oim_factor /= scale + + return oim_factor + + def hessian(self, params, scale=None, observed=None): + """Hessian, second derivative of loglikelihood function + + Parameters + ---------- + params : ndarray + parameter at which Hessian is evaluated + scale : None or float + If scale is None, then the default scale will be calculated. + Default scale is defined by `self.scaletype` and set in fit. + If scale is not None, then it is used as a fixed scale. + observed : bool + If True, then the observed Hessian is returned (default). + If false then the expected information matrix is returned. + + Returns + ------- + hessian : ndarray + Hessian, i.e. observed information, or expected information matrix. + """ + if observed is None: + if getattr(self, '_optim_hessian', None) == 'eim': + observed = False + else: + observed = True + + tmp = getattr(self, '_tmp_like_exog', np.empty_like(self.exog)) + + factor = self.hessian_factor(params, scale=scale, observed=observed) + np.multiply(self.exog.T, factor, out=tmp.T) + return -tmp.T.dot(self.exog) + + def information(self, params, scale=None): + """ + Fisher information matrix. + """ + return self.hessian(params, scale=scale, observed=False) + + def _deriv_mean_dparams(self, params): + """ + Derivative of the expected endog with respect to the parameters. + + Parameters + ---------- + params : ndarray + parameter at which score is evaluated + + Returns + ------- + The value of the derivative of the expected endog with respect + to the parameter vector. + """ + lin_pred = self.predict(params, linear=True) + idl = self.family.link.inverse_deriv(lin_pred) + dmat = self.exog * idl[:, None] + return dmat + + def _deriv_score_obs_dendog(self, params, scale=None): + """derivative of score_obs w.r.t. endog + + Parameters + ---------- + params : ndarray + parameter at which score is evaluated + scale : None or float + If scale is None, then the default scale will be calculated. + Default scale is defined by `self.scaletype` and set in fit. + If scale is not None, then it is used as a fixed scale. + + Returns + ------- + derivative : ndarray_2d + The derivative of the score_obs with respect to endog. This + can is given by `score_factor0[:, None] * exog` where + `score_factor0` is the score_factor without the residual. + + """ + mu = self.predict(params) + if scale is None: + scale = self.estimate_scale(mu) + + score_factor = 1 / self.family.link.deriv(mu) + score_factor /= self.family.variance(mu) + score_factor *= self.iweights * self.n_trials + + if not scale == 1: + score_factor /= scale + + return score_factor[:, None] * self.exog + + def score_test(self, params_constrained, k_constraints=None, + exog_extra=None, observed=True): + """score test for restrictions or for omitted variables + + The covariance matrix for the score is based on the Hessian, i.e. + observed information matrix or optionally on the expected information + matrix.. + + Parameters + ---------- + params_constrained : array_like + estimated parameter of the restricted model. This can be the + parameter estimate for the current when testing for omitted + variables. + k_constraints : int or None + Number of constraints that were used in the estimation of params + restricted relative to the number of exog in the model. + This must be provided if no exog_extra are given. If exog_extra is + not None, then k_constraints is assumed to be zero if it is None. + exog_extra : None or array_like + Explanatory variables that are jointly tested for inclusion in the + model, i.e. omitted variables. + observed : bool + If True, then the observed Hessian is used in calculating the + covariance matrix of the score. If false then the expected + information matrix is used. + + Returns + ------- + chi2_stat : float + chisquare statistic for the score test + p-value : float + P-value of the score test based on the chisquare distribution. + df : int + Degrees of freedom used in the p-value calculation. This is equal + to the number of constraints. + + Notes + ----- + not yet verified for case with scale not equal to 1. + + """ + + if exog_extra is None: + if k_constraints is None: + raise ValueError('if exog_extra is None, then k_constraints' + 'needs to be given') + + score = self.score(params_constrained) + hessian = self.hessian(params_constrained, observed=observed) + + else: + # exog_extra = np.asarray(exog_extra) + if k_constraints is None: + k_constraints = 0 + + ex = np.column_stack((self.exog, exog_extra)) + k_constraints += ex.shape[1] - self.exog.shape[1] + + score_factor = self.score_factor(params_constrained) + score = (score_factor[:, None] * ex).sum(0) + hessian_factor = self.hessian_factor(params_constrained, + observed=observed) + hessian = -np.dot(ex.T * hessian_factor, ex) + + from scipy import stats + # TODO check sign, why minus? + chi2stat = -score.dot(np.linalg.solve(hessian, score[:, None])) + pval = stats.chi2.sf(chi2stat, k_constraints) + # return a stats results instance instead? Contrast? + return chi2stat, pval, k_constraints + + def _update_history(self, tmp_result, mu, history): + """ + Helper method to update history during iterative fit. + """ + history['params'].append(tmp_result.params) + history['deviance'].append(self.family.deviance(self.endog, mu, + self.var_weights, + self.freq_weights, + self.scale)) + return history + + def estimate_scale(self, mu): + """ + Estimates the dispersion/scale. + + Type of scale can be chose in the fit method. + + Parameters + ---------- + mu : array + mu is the mean response estimate + + Returns + ------- + Estimate of scale + + Notes + ----- + The default scale for Binomial, Poisson and Negative Binomial + families is 1. The default for the other families is Pearson's + Chi-Square estimate. + + See Also + -------- + statsmodels.genmod.generalized_linear_model.GLM.fit + """ + if not self.scaletype: + if isinstance(self.family, (families.Binomial, families.Poisson, + families.NegativeBinomial)): + return 1. + else: + return self._estimate_x2_scale(mu) + + if isinstance(self.scaletype, float): + return np.array(self.scaletype) + + if isinstance(self.scaletype, str): + if self.scaletype.lower() == 'x2': + return self._estimate_x2_scale(mu) + elif self.scaletype.lower() == 'dev': + return (self.family.deviance(self.endog, mu, self.var_weights, + self.freq_weights, 1.) / + (self.df_resid)) + else: + raise ValueError("Scale %s with type %s not understood" % + (self.scaletype, type(self.scaletype))) + else: + raise ValueError("Scale %s with type %s not understood" % + (self.scaletype, type(self.scaletype))) + + def _estimate_x2_scale(self, mu): + resid = np.power(self.endog - mu, 2) * self.iweights + return np.sum(resid / self.family.variance(mu)) / self.df_resid + + def estimate_tweedie_power(self, mu, method='brentq', low=1.01, high=5.): + """ + Tweedie specific function to estimate scale and the variance parameter. + The variance parameter is also referred to as p, xi, or shape. + + Parameters + ---------- + mu : array-like + Fitted mean response variable + method : str, defaults to 'brentq' + Scipy optimizer used to solve the Pearson equation. Only brentq + currently supported. + low : float, optional + Low end of the bracketing interval [a,b] to be used in the search + for the power. Defaults to 1.01. + high : float, optional + High end of the bracketing interval [a,b] to be used in the search + for the power. Defaults to 5. + + Returns + ------- + power : float + The estimated shape or power + """ + if method == 'brentq': + from scipy.optimize import brentq + + def psi_p(power, mu): + scale = ((self.iweights * (self.endog - mu) ** 2 / + (mu ** power)).sum() / self.df_resid) + return (np.sum(self.iweights * ((self.endog - mu) ** 2 / + (scale * (mu ** power)) - 1) * + np.log(mu)) / self.freq_weights.sum()) + power = brentq(psi_p, low, high, args=(mu)) + else: + raise NotImplementedError('Only brentq can currently be used') + return power + + def predict(self, params, exog=None, exposure=None, offset=None, + linear=False): + """ + Return predicted values for a design matrix + + Parameters + ---------- + params : array-like + Parameters / coefficients of a GLM. + exog : array-like, optional + Design / exogenous data. Is exog is None, model exog is used. + exposure : array-like, optional + Exposure time values, only can be used with the log link + function. See notes for details. + offset : array-like, optional + Offset values. See notes for details. + linear : bool + If True, returns the linear predicted values. If False, + returns the value of the inverse of the model's link function at + the linear predicted values. + + Returns + ------- + An array of fitted values + + Notes + ----- + Any `exposure` and `offset` provided here take precedence over + the `exposure` and `offset` used in the model fit. If `exog` + is passed as an argument here, then any `exposure` and + `offset` values in the fit will be ignored. + + Exposure values must be strictly positive. + """ + + # Use fit offset if appropriate + if offset is None and exog is None and hasattr(self, 'offset'): + offset = self.offset + elif offset is None: + offset = 0. + + if exposure is not None and not isinstance(self.family.link, + families.links.Log): + raise ValueError("exposure can only be used with the log link " + "function") + + # Use fit exposure if appropriate + if exposure is None and exog is None and hasattr(self, 'exposure'): + # Already logged + exposure = self.exposure + elif exposure is None: + exposure = 0. + else: + exposure = np.log(exposure) + + if exog is None: + exog = self.exog + + linpred = np.dot(exog, params) + offset + exposure + if linear: + return linpred + else: + return self.family.fitted(linpred) + + def get_distribution(self, params, scale=1, exog=None, exposure=None, + offset=None): + """ + Returns a random number generator for the predictive distribution. + + Parameters + ---------- + params : array-like + The model parameters. + scale : scalar + The scale parameter. + exog : array-like + The predictor variable matrix. + + Returns + ------- + gen + Frozen random number generator object. Use the ``rvs`` method to + generate random values. + + Notes + ----- + Due to the behavior of ``scipy.stats.distributions objects``, the + returned random number generator must be called with ``gen.rvs(n)`` + where ``n`` is the number of observations in the data set used + to fit the model. If any other value is used for ``n``, misleading + results will be produced. + """ + + fit = self.predict(params, exog, exposure, offset, linear=False) + + import scipy.stats.distributions as dist + + if isinstance(self.family, families.Gaussian): + return dist.norm(loc=fit, scale=np.sqrt(scale)) + + elif isinstance(self.family, families.Binomial): + return dist.binom(n=1, p=fit) + + elif isinstance(self.family, families.Poisson): + return dist.poisson(mu=fit) + + elif isinstance(self.family, families.Gamma): + alpha = fit / float(scale) + return dist.gamma(alpha, scale=scale) + + else: + raise ValueError("get_distribution not implemented for %s" % + self.family.name) + + def _setup_binomial(self): + # this checks what kind of data is given for Binomial. + # family will need a reference to endog if this is to be removed from + # preprocessing + self.n_trials = np.ones((self.endog.shape[0])) # For binomial + if isinstance(self.family, families.Binomial): + tmp = self.family.initialize(self.endog, self.freq_weights) + self.endog = tmp[0] + self.n_trials = tmp[1] + self._init_keys.append('n_trials') + + def fit(self, start_params=None, maxiter=100, method='IRLS', tol=1e-8, + scale=None, cov_type='nonrobust', cov_kwds=None, use_t=None, + full_output=True, disp=False, max_start_irls=3, **kwargs): + """ + Fits a generalized linear model for a given family. + + Parameters + ---------- + start_params : array-like, optional + Initial guess of the solution for the loglikelihood maximization. + The default is family-specific and is given by the + ``family.starting_mu(endog)``. If start_params is given then the + initial mean will be calculated as ``np.dot(exog, start_params)``. + maxiter : int, optional + Default is 100. + method : string + Default is 'IRLS' for iteratively reweighted least squares. + Otherwise gradient optimization is used. + tol : float + Convergence tolerance. Default is 1e-8. + scale : string or float, optional + `scale` can be 'X2', 'dev', or a float + The default value is None, which uses `X2` for Gamma, Gaussian, + and Inverse Gaussian. + `X2` is Pearson's chi-square divided by `df_resid`. + The default is 1 for the Binomial and Poisson families. + `dev` is the deviance divided by df_resid + cov_type : string + The type of parameter estimate covariance matrix to compute. + cov_kwds : dict-like + Extra arguments for calculating the covariance of the parameter + estimates. + use_t : bool + If True, the Student t-distribution is used for inference. + full_output : bool, optional + Set to True to have all available output in the Results object's + mle_retvals attribute. The output is dependent on the solver. + See LikelihoodModelResults notes section for more information. + Not used if methhod is IRLS. + disp : bool, optional + Set to True to print convergence messages. Not used if method is + IRLS. + max_start_irls : int + The number of IRLS iterations used to obtain starting + values for gradient optimization. Only relevant if + `method` is set to something other than 'IRLS'. + atol : float, optional + (available with IRLS fits) The absolute tolerance criterion that + must be satisfied. Defaults to ``tol``. Convergence is attained + when: :math:`rtol * prior + atol > abs(current - prior)` + rtol : float, optional + (available with IRLS fits) The relative tolerance criterion that + must be satisfied. Defaults to 0 which means ``rtol`` is not used. + Convergence is attained when: + :math:`rtol * prior + atol > abs(current - prior)` + tol_criterion : str, optional + (available with IRLS fits) Defaults to ``'deviance'``. Can + optionally be ``'params'``. + wls_method : str, optional + (available with IRLS fits) options are 'lstsq', 'pinv' and 'qr' + specifies which linear algebra function to use for the irls + optimization. Default is `lstsq` which uses the same underlying + svd based approach as 'pinv', but is faster during iterations. + 'lstsq' and 'pinv' regularize the estimate in singular and + near-singular cases by truncating small singular values based + on `rcond` of the respective numpy.linalg function. 'qr' is + only valied for cases that are not singular nor near-singular. + optim_hessian : {'eim', 'oim'}, optional + (available with scipy optimizer fits) When 'oim'--the default--the + observed Hessian is used in fitting. 'eim' is the expected Hessian. + This may provide more stable fits, but adds assumption that the + Hessian is correctly specified. + + Notes + ----- + If method is 'IRLS', then an additional keyword 'attach_wls' is + available. This is currently for internal use only and might change + in future versions. If attach_wls' is true, then the final WLS + instance of the IRLS iteration is attached to the results instance + as `results_wls` attribute. + + """ + self.scaletype = scale + + if method.lower() == "irls": + if cov_type.lower() == 'eim': + cov_type = 'nonrobust' + return self._fit_irls(start_params=start_params, maxiter=maxiter, + tol=tol, scale=scale, cov_type=cov_type, + cov_kwds=cov_kwds, use_t=use_t, **kwargs) + else: + self._optim_hessian = kwargs.get('optim_hessian') + self._tmp_like_exog = np.empty_like(self.exog) + fit_ = self._fit_gradient(start_params=start_params, + method=method, + maxiter=maxiter, + tol=tol, scale=scale, + full_output=full_output, + disp=disp, cov_type=cov_type, + cov_kwds=cov_kwds, use_t=use_t, + max_start_irls=max_start_irls, + **kwargs) + del self._optim_hessian + del self._tmp_like_exog + return fit_ + + def _fit_gradient(self, start_params=None, method="newton", + maxiter=100, tol=1e-8, full_output=True, + disp=True, scale=None, cov_type='nonrobust', + cov_kwds=None, use_t=None, max_start_irls=3, + **kwargs): + """ + Fits a generalized linear model for a given family iteratively + using the scipy gradient optimizers. + """ + + # fix scale during optimization, see #4616 + scaletype = self.scaletype + self.scaletype = 1. + + if (max_start_irls > 0) and (start_params is None): + irls_rslt = self._fit_irls(start_params=start_params, + maxiter=max_start_irls, + tol=tol, scale=1., cov_type='nonrobust', + cov_kwds=None, use_t=None, + **kwargs) + start_params = irls_rslt.params + del irls_rslt + + rslt = super(GLM, self).fit(start_params=start_params, tol=tol, + maxiter=maxiter, full_output=full_output, + method=method, disp=disp, **kwargs) + + # reset scaletype to original + self.scaletype = scaletype + + mu = self.predict(rslt.params) + scale = self.estimate_scale(mu) + + if rslt.normalized_cov_params is None: + cov_p = None + else: + cov_p = rslt.normalized_cov_params / scale + + if cov_type.lower() == 'eim': + oim = False + cov_type = 'nonrobust' + else: + oim = True + + try: + cov_p = np.linalg.inv(-self.hessian(rslt.params, observed=oim)) / scale + except LinAlgError: + from warnings import warn + warn('Inverting hessian failed, no bse or cov_params ' + 'available', HessianInversionWarning) + cov_p = None + + results_class = getattr(self, '_results_class', GLMResults) + results_class_wrapper = getattr(self, '_results_class_wrapper', GLMResultsWrapper) + glm_results = results_class(self, rslt.params, + cov_p, + scale, + cov_type=cov_type, cov_kwds=cov_kwds, + use_t=use_t) + + # TODO: iteration count is not always available + history = {'iteration': 0} + if full_output: + glm_results.mle_retvals = rslt.mle_retvals + if 'iterations' in rslt.mle_retvals: + history['iteration'] = rslt.mle_retvals['iterations'] + glm_results.method = method + glm_results.fit_history = history + + return results_class_wrapper(glm_results) + + def _fit_irls(self, start_params=None, maxiter=100, tol=1e-8, + scale=None, cov_type='nonrobust', cov_kwds=None, + use_t=None, **kwargs): + """ + Fits a generalized linear model for a given family using + iteratively reweighted least squares (IRLS). + """ + attach_wls = kwargs.pop('attach_wls', False) + atol = kwargs.get('atol') + rtol = kwargs.get('rtol', 0.) + tol_criterion = kwargs.get('tol_criterion', 'deviance') + wls_method = kwargs.get('wls_method', 'lstsq') + atol = tol if atol is None else atol + + endog = self.endog + wlsexog = self.exog + if start_params is None: + start_params = np.zeros(self.exog.shape[1], np.float) + mu = self.family.starting_mu(self.endog) + lin_pred = self.family.predict(mu) + else: + lin_pred = np.dot(wlsexog, start_params) + self._offset_exposure + mu = self.family.fitted(lin_pred) + self.scale = self.estimate_scale(mu) + dev = self.family.deviance(self.endog, mu, self.var_weights, + self.freq_weights, self.scale) + if np.isnan(dev): + raise ValueError("The first guess on the deviance function " + "returned a nan. This could be a boundary " + " problem and should be reported.") + + # first guess on the deviance is assumed to be scaled by 1. + # params are none to start, so they line up with the deviance + history = dict(params=[np.inf, start_params], deviance=[np.inf, dev]) + converged = False + criterion = history[tol_criterion] + # This special case is used to get the likelihood for a specific + # params vector. + if maxiter == 0: + mu = self.family.fitted(lin_pred) + self.scale = self.estimate_scale(mu) + wls_results = lm.RegressionResults(self, start_params, None) + iteration = 0 + for iteration in range(maxiter): + self.weights = (self.iweights * self.n_trials * + self.family.weights(mu)) + wlsendog = (lin_pred + self.family.link.deriv(mu) * (self.endog-mu) + - self._offset_exposure) + wls_mod = reg_tools._MinimalWLS(wlsendog, wlsexog, + self.weights, check_endog=True, + check_weights=True) + wls_results = wls_mod.fit(method=wls_method) + lin_pred = np.dot(self.exog, wls_results.params) + lin_pred += self._offset_exposure + mu = self.family.fitted(lin_pred) + history = self._update_history(wls_results, mu, history) + self.scale = self.estimate_scale(mu) + if endog.squeeze().ndim == 1 and np.allclose(mu - endog, 0): + msg = "Perfect separation detected, results not available" + raise PerfectSeparationError(msg) + converged = _check_convergence(criterion, iteration + 1, atol, + rtol) + if converged: + break + self.mu = mu + + if maxiter > 0: # Only if iterative used + wls_method2 = 'pinv' if wls_method == 'lstsq' else wls_method + wls_model = lm.WLS(wlsendog, wlsexog, self.weights) + wls_results = wls_model.fit(method=wls_method2) + + glm_results = GLMResults(self, wls_results.params, + wls_results.normalized_cov_params, + self.scale, + cov_type=cov_type, cov_kwds=cov_kwds, + use_t=use_t) + + glm_results.method = "IRLS" + glm_results.mle_settings = {} + glm_results.mle_settings['wls_method'] = wls_method + glm_results.mle_settings['optimizer'] = glm_results.method + if (maxiter > 0) and (attach_wls is True): + glm_results.results_wls = wls_results + history['iteration'] = iteration + 1 + glm_results.fit_history = history + glm_results.converged = converged + return GLMResultsWrapper(glm_results) + + def fit_regularized(self, method="elastic_net", alpha=0., + start_params=None, refit=False, **kwargs): + r""" + Return a regularized fit to a linear regression model. + + Parameters + ---------- + method : + Only the `elastic_net` approach is currently implemented. + alpha : scalar or array-like + The penalty weight. If a scalar, the same penalty weight + applies to all variables in the model. If a vector, it + must have the same length as `params`, and contains a + penalty weight for each coefficient. + start_params : array-like + Starting values for `params`. + refit : bool + If True, the model is refit using only the variables that + have non-zero coefficients in the regularized fit. The + refitted model is not regularized. + + Returns + ------- + An array, or a GLMResults object of the same type returned by `fit`. + + Notes + ----- + The penalty is the ``elastic net`` penalty, which is a + combination of L1 and L2 penalties. + + The function that is minimized is: + + .. math:: + + -loglike/n + alpha*((1-L1\_wt)*|params|_2^2/2 + L1\_wt*|params|_1) + + where :math:`|*|_1` and :math:`|*|_2` are the L1 and L2 norms. + + Post-estimation results are based on the same data used to + select variables, hence may be subject to overfitting biases. + + The elastic_net method uses the following keyword arguments: + + maxiter : int + Maximum number of iterations + L1_wt : float + Must be in [0, 1]. The L1 penalty has weight L1_wt and the + L2 penalty has weight 1 - L1_wt. + cnvrg_tol : float + Convergence threshold for line searches + zero_tol : float + Coefficients below this threshold are treated as zero. + """ + + if kwargs.get("L1_wt", 1) == 0: + return self._fit_ridge(alpha, start_params) + + from statsmodels.base.elastic_net import fit_elasticnet + + if method != "elastic_net": + raise ValueError("method for fit_regularied must be elastic_net") + + defaults = {"maxiter": 50, "L1_wt": 1, "cnvrg_tol": 1e-10, + "zero_tol": 1e-10} + defaults.update(kwargs) + + result = fit_elasticnet(self, method=method, + alpha=alpha, + start_params=start_params, + refit=refit, + **defaults) + + self.mu = self.predict(result.params) + self.scale = self.estimate_scale(self.mu) + + return result + + def _fit_ridge(self, alpha, start_params, method="newton-cg"): + + if start_params is None: + start_params = np.zeros(self.exog.shape[1]) + + def fun(x): + return -(self.loglike(x) / self.nobs - alpha * np.sum(x**2) / 2) + + def grad(x): + return -(self.score(x) / self.nobs - alpha * x) + + from scipy.optimize import minimize + from statsmodels.base.elastic_net import (RegularizedResults, + RegularizedResultsWrapper) + + mr = minimize(fun, start_params, jac=grad, method=method) + params = mr.x + + if not mr.success: + import warnings + ngrad = np.sqrt(np.sum(mr.jac**2)) + msg = "GLM ridge optimization may have failed, |grad|=%f" % ngrad + warnings.warn(msg) + + results = RegularizedResults(self, params) + results = RegularizedResultsWrapper(results) + + return results + + def fit_constrained(self, constraints, start_params=None, **fit_kwds): + """fit the model subject to linear equality constraints + + The constraints are of the form `R params = q` + where R is the constraint_matrix and q is the vector of + constraint_values. + + The estimation creates a new model with transformed design matrix, + exog, and converts the results back to the original parameterization. + + + Parameters + ---------- + constraints : formula expression or tuple + If it is a tuple, then the constraint needs to be given by two + arrays (constraint_matrix, constraint_value), i.e. (R, q). + Otherwise, the constraints can be given as strings or list of + strings. + see t_test for details + start_params : None or array_like + starting values for the optimization. `start_params` needs to be + given in the original parameter space and are internally + transformed. + **fit_kwds : keyword arguments + fit_kwds are used in the optimization of the transformed model. + + Returns + ------- + results : Results instance + + """ + + from patsy import DesignInfo + from statsmodels.base._constraints import fit_constrained + + # same pattern as in base.LikelihoodModel.t_test + lc = DesignInfo(self.exog_names).linear_constraint(constraints) + R, q = lc.coefs, lc.constants + + # TODO: add start_params option, need access to tranformation + # fit_constrained needs to do the transformation + params, cov, res_constr = fit_constrained(self, R, q, + start_params=start_params, + fit_kwds=fit_kwds) + # create dummy results Instance, TODO: wire up properly + res = self.fit(start_params=params, maxiter=0) # we get a wrapper back + res._results.params = params + res._results.cov_params_default = cov + cov_type = fit_kwds.get('cov_type', 'nonrobust') + if cov_type != 'nonrobust': + res._results.normalized_cov_params = cov / res_constr.scale + else: + res._results.normalized_cov_params = None + res._results.scale = res_constr.scale + k_constr = len(q) + res._results.df_resid += k_constr + res._results.df_model -= k_constr + res._results.constraints = lc + res._results.k_constr = k_constr + res._results.results_constrained = res_constr + return res + + +class GLMResults(base.LikelihoodModelResults): + """ + Class to contain GLM results. + + GLMResults inherits from statsmodels.LikelihoodModelResults + + Attributes + ---------- + df_model : float + See GLM.df_model + df_resid : float + See GLM.df_resid + fit_history : dict + Contains information about the iterations. Its keys are `iterations`, + `deviance` and `params`. + model : class instance + Pointer to GLM model instance that called fit. + nobs : float + The number of observations n. + normalized_cov_params : array + See GLM docstring + params : array + The coefficients of the fitted model. Note that interpretation + of the coefficients often depends on the distribution family and the + data. + pvalues : array + The two-tailed p-values for the parameters. + scale : float + The estimate of the scale / dispersion for the model fit. + See GLM.fit and GLM.estimate_scale for more information. + stand_errors : array + The standard errors of the fitted GLM. #TODO still named bse + + See Also + -------- + statsmodels.base.model.LikelihoodModelResults + """ + + def __init__(self, model, params, normalized_cov_params, scale, + cov_type='nonrobust', cov_kwds=None, use_t=None): + super(GLMResults, self).__init__( + model, + params, + normalized_cov_params=normalized_cov_params, + scale=scale) + self.family = model.family + self._endog = model.endog + self.nobs = model.endog.shape[0] + self._freq_weights = model.freq_weights + self._var_weights = model.var_weights + self._iweights = model.iweights + if isinstance(self.family, families.Binomial): + self._n_trials = self.model.n_trials + else: + self._n_trials = 1 + self.df_resid = model.df_resid + self.df_model = model.df_model + self._cache = {} + # are these intermediate results needed or can we just + # call the model's attributes? + + # for remove data and pickle without large arrays + self._data_attr.extend(['results_constrained', '_freq_weights', + '_var_weights', '_iweights']) + self.data_in_cache = getattr(self, 'data_in_cache', []) + self.data_in_cache.extend(['null', 'mu']) + self._data_attr_model = getattr(self, '_data_attr_model', []) + self._data_attr_model.append('mu') + + # robust covariance + from statsmodels.base.covtype import get_robustcov_results + if use_t is None: + self.use_t = False # TODO: class default + else: + self.use_t = use_t + + # temporary warning + ct = (cov_type == 'nonrobust') or (cov_type.upper().startswith('HC')) + if self.model._has_freq_weights and not ct: + import warnings + from statsmodels.tools.sm_exceptions import SpecificationWarning + warnings.warn('cov_type not fully supported with freq_weights', + SpecificationWarning) + + if self.model._has_var_weights and not ct: + import warnings + from statsmodels.tools.sm_exceptions import SpecificationWarning + warnings.warn('cov_type not fully supported with var_weights', + SpecificationWarning) + + if cov_type == 'nonrobust': + self.cov_type = 'nonrobust' + self.cov_kwds = {'description': 'Standard Errors assume that the' + + ' covariance matrix of the errors is correctly ' + + 'specified.'} + + else: + if cov_kwds is None: + cov_kwds = {} + get_robustcov_results(self, cov_type=cov_type, use_self=True, + use_t=use_t, **cov_kwds) + + @cache_readonly + def resid_response(self): + """ + Respnose residuals. The response residuals are defined as + `endog` - `fittedvalues` + """ + return self._n_trials * (self._endog-self.mu) + + @cache_readonly + def resid_pearson(self): + """ + Pearson residuals. The Pearson residuals are defined as + (`endog` - `mu`)/sqrt(VAR(`mu`)) where VAR is the distribution + specific variance function. See statsmodels.families.family and + statsmodels.families.varfuncs for more information. + """ + return (np.sqrt(self._n_trials) * (self._endog-self.mu) * + np.sqrt(self._var_weights) / + np.sqrt(self.family.variance(self.mu))) + + @cache_readonly + def resid_working(self): + """ + Working residuals. The working residuals are defined as + `resid_response`/link'(`mu`). See statsmodels.family.links for the + derivatives of the link functions. They are defined analytically. + """ + # Isn't self.resid_response is already adjusted by _n_trials? + val = (self.resid_response * self.family.link.deriv(self.mu)) + val *= self._n_trials + return val + + @cache_readonly + def resid_anscombe(self): + """ + Anscombe residuals. See statsmodels.families.family for distribution- + specific Anscombe residuals. Currently, the unscaled residuals are + provided. In a future version, the scaled residuals will be provided. + """ + import warnings + warnings.warn('Anscombe residuals currently unscaled. In a future ' + 'release, they will be scaled.', category=FutureWarning) + return self.family.resid_anscombe(self._endog, self.fittedvalues, + var_weights=self._var_weights, + scale=1.) + + @cache_readonly + def resid_anscombe_scaled(self): + """ + Scaled Anscombe residuals. See statsmodels.families.family for + distribution-specific Anscombe residuals. + """ + return self.family.resid_anscombe(self._endog, self.fittedvalues, + var_weights=self._var_weights, + scale=self.scale) + + @cache_readonly + def resid_anscombe_unscaled(self): + """ + Unscaled Anscombe residuals. See statsmodels.families.family for + distribution-specific Anscombe residuals. + """ + return self.family.resid_anscombe(self._endog, self.fittedvalues, + var_weights=self._var_weights, + scale=1.) + + @cache_readonly + def resid_deviance(self): + """ + Deviance residuals. See statsmodels.families.family for distribution- + specific deviance residuals. + """ + dev = self.family.resid_dev(self._endog, self.fittedvalues, + var_weights=self._var_weights, + scale=1.) + return dev + + @cache_readonly + def pearson_chi2(self): + """ + Pearson's Chi-Squared statistic is defined as the sum of the squares + of the Pearson residuals. + """ + chisq = (self._endog - self.mu)**2 / self.family.variance(self.mu) + chisq *= self._iweights * self._n_trials + chisqsum = np.sum(chisq) + return chisqsum + + @cache_readonly + def fittedvalues(self): + """ + Linear predicted values for the fitted model. + dot(exog, params) + """ + return self.mu + + @cache_readonly + def mu(self): + """ + See GLM docstring. + """ + return self.model.predict(self.params) + + @cache_readonly + def null(self): + """ + Fitted values of the null model + """ + endog = self._endog + model = self.model + exog = np.ones((len(endog), 1)) + + kwargs = model._get_init_kwds() + kwargs.pop('family') + if hasattr(self, '_offset_exposure'): + return GLM(endog, exog, family=self.family, + **kwargs).fit().fittedvalues + else: + # correct if fitted is identical across observations + wls_model = lm.WLS(endog, exog, + weights=self._iweights * self._n_trials) + return wls_model.fit().fittedvalues + + @cache_readonly + def deviance(self): + """ + See statsmodels.families.family for the distribution-specific deviance + functions. + """ + return self.family.deviance(self._endog, self.mu, self._var_weights, + self._freq_weights) + + @cache_readonly + def null_deviance(self): + """The value of the deviance function for the model fit with a constant + as the only regressor.""" + return self.family.deviance(self._endog, self.null, self._var_weights, + self._freq_weights) + + @cache_readonly + def llnull(self): + """ + Log-likelihood of the model fit with a constant as the only regressor + """ + return self.family.loglike(self._endog, self.null, + var_weights=self._var_weights, + freq_weights=self._freq_weights, + scale=self.scale) + + @cache_readonly + def llf(self): + """ + Value of the loglikelihood function evalued at params. + See statsmodels.families.family for distribution-specific + loglikelihoods. + """ + _modelfamily = self.family + if (isinstance(self.family, families.Gaussian) and + isinstance(self.family.link, families.links.Power) and + (self.family.link.power == 1.)): + scale = (np.power(self._endog - self.mu, 2) * self._iweights).sum() + scale /= self.model.wnobs + else: + scale = self.scale + val = _modelfamily.loglike(self._endog, self.mu, + var_weights=self._var_weights, + freq_weights=self._freq_weights, + scale=scale) + return val + + @cache_readonly + def aic(self): + """ + Akaike Information Criterion + -2 * `llf` + 2*(`df_model` + 1) + """ + return -2 * self.llf + 2 * (self.df_model + 1) + + @cache_readonly + def bic(self): + """ + Bayes Information Criterion + `deviance` - `df_resid` * log(`nobs`) + """ + return (self.deviance - + (self.model.wnobs - self.df_model - 1) * + np.log(self.model.wnobs)) + + def get_prediction(self, exog=None, exposure=None, offset=None, + transform=True, linear=False, + row_labels=None): + + import statsmodels.regression._prediction as linpred + + pred_kwds = {'exposure': exposure, 'offset': offset, 'linear': True} + + # two calls to a get_prediction duplicates exog generation if patsy + res_linpred = linpred.get_prediction(self, exog=exog, + transform=transform, + row_labels=row_labels, + pred_kwds=pred_kwds) + + pred_kwds['linear'] = False + res = pred.get_prediction_glm(self, exog=exog, transform=transform, + row_labels=row_labels, + linpred=res_linpred, + link=self.model.family.link, + pred_kwds=pred_kwds) + + return res + + get_prediction.__doc__ = pred.get_prediction_glm.__doc__ + + def get_hat_matrix_diag(self, observed=True): + """ + Compute the diagonal of the hat matrix + + Parameters + ---------- + observed : bool + If true, then observed hessian is used in the hat matrix + computation. If false, then the expected hessian is used. + In the case of a canonical link function both are the same. + + Returns + ------- + hat_matrix_diag : ndarray + The diagonal of the hat matrix computed from the observed + or expected hessian. + """ + weights = self.model.hessian_factor(self.params, observed=observed) + wexog = np.sqrt(weights)[:, None] * self.model.exog + + hd = (wexog * np.linalg.pinv(wexog).T).sum(1) + return hd + + def get_influence(self, observed=True): + """ + Get an instance of GLMInfluence with influence and outlier measures + + Parameters + ---------- + observed : bool + If true, then observed hessian is used in the hat matrix + computation. If false, then the expected hessian is used. + In the case of a canonical link function both are the same. + + Returns + ------- + infl : GLMInfluence instance + The instance has methods to calculate the main influence and + outlier measures as attributes. + + See Also + -------- + statsmodels.stats.outliers_influence.GLMInfluence + """ + from statsmodels.stats.outliers_influence import GLMInfluence + + weights = self.model.hessian_factor(self.params, observed=observed) + weights_sqrt = np.sqrt(weights) + wexog = weights_sqrt[:, None] * self.model.exog + wendog = weights_sqrt * self.model.endog + + # using get_hat_matrix_diag has duplicated computation + hat_matrix_diag = self.get_hat_matrix_diag(observed=observed) + infl = GLMInfluence(self, endog=wendog, exog=wexog, + resid=self.resid_pearson, + hat_matrix_diag=hat_matrix_diag) + return infl + + def remove_data(self): + # GLM has alias/reference in result instance + self._data_attr.extend([i for i in self.model._data_attr + if '_data.' not in i]) + super(self.__class__, self).remove_data() + + # TODO: what are these in results? + self._endog = None + self._freq_weights = None + self._var_weights = None + self._iweights = None + self._n_trials = None + + remove_data.__doc__ = base.LikelihoodModelResults.remove_data.__doc__ + + def plot_added_variable(self, focus_exog, resid_type=None, + use_glm_weights=True, fit_kwargs=None, + ax=None): + # Docstring attached below + + from statsmodels.graphics.regressionplots import plot_added_variable + + fig = plot_added_variable(self, focus_exog, + resid_type=resid_type, + use_glm_weights=use_glm_weights, + fit_kwargs=fit_kwargs, ax=ax) + + return fig + + plot_added_variable.__doc__ = _plot_added_variable_doc % { + 'extra_params_doc': ''} + + def plot_partial_residuals(self, focus_exog, ax=None): + # Docstring attached below + + from statsmodels.graphics.regressionplots import plot_partial_residuals + + return plot_partial_residuals(self, focus_exog, ax=ax) + + plot_partial_residuals.__doc__ = _plot_partial_residuals_doc % { + 'extra_params_doc': ''} + + def plot_ceres_residuals(self, focus_exog, frac=0.66, cond_means=None, + ax=None): + # Docstring attached below + + from statsmodels.graphics.regressionplots import plot_ceres_residuals + + return plot_ceres_residuals(self, focus_exog, frac, + cond_means=cond_means, ax=ax) + + plot_ceres_residuals.__doc__ = _plot_ceres_residuals_doc % { + 'extra_params_doc': ''} + + def summary(self, yname=None, xname=None, title=None, alpha=.05): + """ + Summarize the Regression Results + + Parameters + ---------- + yname : string, optional + Default is `y` + xname : list of strings, optional + Default is `var_##` for ## in p the number of regressors + title : string, optional + Title for the top table. If not None, then this replaces the + default title + alpha : float + significance level for the confidence intervals + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary.Summary : class to hold summary results + """ + + top_left = [('Dep. Variable:', None), + ('Model:', None), + ('Model Family:', [self.family.__class__.__name__]), + ('Link Function:', [self.family.link.__class__.__name__]), + ('Method:', [self.method]), + ('Date:', None), + ('Time:', None), + ('No. Iterations:', + ["%d" % self.fit_history['iteration']]), + ] + + top_right = [('No. Observations:', None), + ('Df Residuals:', None), + ('Df Model:', None), + ('Scale:', ["%#8.5g" % self.scale]), + ('Log-Likelihood:', None), + ('Deviance:', ["%#8.5g" % self.deviance]), + ('Pearson chi2:', ["%#6.3g" % self.pearson_chi2]) + ] + + if hasattr(self, 'cov_type'): + top_left.append(('Covariance Type:', [self.cov_type])) + + if title is None: + title = "Generalized Linear Model Regression Results" + + # create summary tables + from statsmodels.iolib.summary import Summary + smry = Summary() + smry.add_table_2cols(self, gleft=top_left, gright=top_right, + yname=yname, xname=xname, title=title) + smry.add_table_params(self, yname=yname, xname=xname, alpha=alpha, + use_t=self.use_t) + + if hasattr(self, 'constraints'): + smry.add_extra_txt(['Model has been estimated subject to linear ' + 'equality constraints.']) + return smry + + def summary2(self, yname=None, xname=None, title=None, alpha=.05, + float_format="%.4f"): + """Experimental summary for regression Results + + Parameters + ---------- + yname : string + Name of the dependent variable (optional) + xname : List of strings of length equal to the number of parameters + Names of the independent variables (optional) + title : string, optional + Title for the top table. If not None, then this replaces the + default title + alpha : float + significance level for the confidence intervals + float_format: string + print format for floats in parameters summary + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary2.Summary : class to hold summary results + """ + self.method = 'IRLS' + from statsmodels.iolib import summary2 + smry = summary2.Summary() + smry.add_base(results=self, alpha=alpha, float_format=float_format, + xname=xname, yname=yname, title=title) + if hasattr(self, 'constraints'): + smry.add_text('Model has been estimated subject to linear ' + 'equality constraints.') + + return smry + + +class GLMResultsWrapper(lm.RegressionResultsWrapper): + _attrs = { + 'resid_anscombe': 'rows', + 'resid_deviance': 'rows', + 'resid_pearson': 'rows', + 'resid_response': 'rows', + 'resid_working': 'rows' + } + _wrap_attrs = wrap.union_dicts(lm.RegressionResultsWrapper._wrap_attrs, + _attrs) + + +wrap.populate_wrapper(GLMResultsWrapper, GLMResults) + +if __name__ == "__main__": + import statsmodels.api as sm + data = sm.datasets.longley.load(as_pandas=False) + # data.exog = add_constant(data.exog) + GLMmod = GLM(data.endog, data.exog).fit() + GLMT = GLMmod.summary(returns='tables') + # GLMT[0].extend_right(GLMT[1]) + # print(GLMT[0]) + # print(GLMT[2]) + GLMTp = GLMmod.summary(title='Test GLM') + + """ +From Stata +. webuse beetle +. glm r i.beetle ldose, family(binomial n) link(cloglog) + +Iteration 0: log likelihood = -79.012269 +Iteration 1: log likelihood = -76.94951 +Iteration 2: log likelihood = -76.945645 +Iteration 3: log likelihood = -76.945645 + +Generalized linear models No. of obs = 24 +Optimization : ML Residual df = 20 + Scale parameter = 1 +Deviance = 73.76505595 (1/df) Deviance = 3.688253 +Pearson = 71.8901173 (1/df) Pearson = 3.594506 + +Variance function: V(u) = u*(1-u/n) [Binomial] +Link function : g(u) = ln(-ln(1-u/n)) [Complementary log-log] + + AIC = 6.74547 +Log likelihood = -76.94564525 BIC = 10.20398 + +------------------------------------------------------------------------------ + | OIM + r | Coef. Std. Err. z P>|z| [95% Conf. Interval] +-------------+---------------------------------------------------------------- + beetle | + 2 | -.0910396 .1076132 -0.85 0.398 -.3019576 .1198783 + 3 | -1.836058 .1307125 -14.05 0.000 -2.09225 -1.579867 + | + ldose | 19.41558 .9954265 19.50 0.000 17.46458 21.36658 + _cons | -34.84602 1.79333 -19.43 0.000 -38.36089 -31.33116 +------------------------------------------------------------------------------ +""" diff --git a/statsmodels/genmod/qif.py b/statsmodels/genmod/qif.py new file mode 100644 index 0000000..d12155b --- /dev/null +++ b/statsmodels/genmod/qif.py @@ -0,0 +1,514 @@ +import numpy as np +from collections import defaultdict +import statsmodels.base.model as base +from statsmodels.genmod import families +from statsmodels.genmod.families import links +from statsmodels.genmod.families import varfuncs +import statsmodels.regression.linear_model as lm +import statsmodels.base.wrapper as wrap +from statsmodels.tools.decorators import cache_readonly + + +class QIFCovariance(object): + """ + A covariance model for quadratic inference function regression. + + The mat method returns a basis matrix B such that the inverse + of the working covariance lies in the linear span of the + basis matrices. + + Subclasses should set the number of basis matrices `num_terms`, + so that `mat(d, j)` for j=0, ..., num_terms-1 gives the basis + of dimension d.` + """ + + def mat(self, dim, term): + """ + Returns the term'th basis matrix, which is a dim x dim + matrix. + """ + raise NotImplementedError + + +class QIFIndependence(QIFCovariance): + """ + Independent working covariance for QIF regression. This covariance + model gives identical results to GEE with the independence working + covariance. When using QIFIndependence as the working covariance, + the QIF value will be zero, and cannot be used for chi^2 testing, or + for model selection using AIC, BIC, etc. + """ + + def __init__(self): + self.num_terms = 1 + + def mat(self, dim, term): + if term == 0: + return np.eye(dim) + else: + return None + + +class QIFExchangeable(QIFCovariance): + """ + Exchangeable working covariance for QIF regression. + """ + + def __init__(self): + self.num_terms = 2 + + def mat(self, dim, term): + if term == 0: + return np.eye(dim) + elif term == 1: + return np.ones((dim, dim)) + else: + return None + + +class QIFAutoregressive(QIFCovariance): + """ + Autoregressive working covariance for QIF regression. + """ + + def __init__(self): + self.num_terms = 3 + + def mat(self, dim, term): + + if dim < 3: + msg = ("Groups must have size at least 3 for " + + "autoregressive covariance.") + raise ValueError(msg) + + if term == 0: + return np.eye(dim) + elif term == 1: + mat = np.zeros((dim, dim)) + mat.flat[1::(dim+1)] = 1 + mat += mat.T + return mat + elif term == 2: + mat = np.zeros((dim, dim)) + mat[0, 0] = 1 + mat[dim-1, dim-1] = 1 + return mat + else: + return None + + +class QIF(base.Model): + """ + Fit a regression model using quadratic inference functions (QIF). + + QIF is an alternative to GEE that can be more efficient, and that + offers different approaches for model selection and inference. + + Parameters + ---------- + endog : array-like + The dependent variables of the regression. + exog : array-like + The independent variables of the regression. + groups : array-like + Labels indicating which group each observation belongs to. + Observations in different groups should be independent. + family : genmod family + An instance of a GLM family. + cov_struct : QIFCovariance instance + An instance of a QIFCovariance. + + References + ---------- + A. Qu, B. Lindsay, B. Li (2000). Improving Generalized Estimating + Equations using Quadratic Inference Functions, Biometrika 87:4. + www.jstor.org/stable/2673612 + """ + + def __init__(self, endog, exog, groups, family=None, + cov_struct=None, missing='none', **kwargs): + + # Handle the family argument + if family is None: + family = families.Gaussian() + else: + if not issubclass(family.__class__, families.Family): + raise ValueError("QIF: `family` must be a genmod " + "family instance") + self.family = family + + self._fit_history = defaultdict(list) + + # Handle the cov_struct argument + if cov_struct is None: + cov_struct = QIFIndependence() + else: + if not isinstance(cov_struct, QIFCovariance): + raise ValueError( + "QIF: `cov_struct` must be a QIFCovariance instance") + self.cov_struct = cov_struct + + groups = np.asarray(groups) + + super(QIF, self).__init__(endog, exog, groups=groups, + missing=missing, **kwargs) + + self.group_names = list(set(groups)) + self.nobs = len(self.endog) + + groups_ix = defaultdict(list) + for i, g in enumerate(groups): + groups_ix[g].append(i) + self.groups_ix = [groups_ix[na] for na in self.group_names] + + self._check_args(groups) + + def _check_args(self, groups): + + if len(groups) != len(self.endog): + msg = "QIF: groups and endog should have the same length" + raise ValueError(msg) + + if len(self.endog) != self.exog.shape[0]: + msg = ("QIF: the length of endog should be equal to the " + "number of rows of exog.") + raise ValueError(msg) + + def objective(self, params): + """ + Calculate the gradient of the QIF objective function. + + Parameters + ---------- + params : array-like + The model parameters at which the gradient is evaluated. + + Returns + ------- + grad : array-like + The gradient vector of the QIF objective function. + gn_deriv : array-like + The gradients of each estimating equation with + respect to the parameter. + """ + + endog = self.endog + exog = self.exog + lpr = np.dot(exog, params) + mean = self.family.link.inverse(lpr) + va = self.family.variance(mean) + + # Mean derivative + idl = self.family.link.inverse_deriv(lpr) + idl2 = self.family.link.inverse_deriv2(lpr) + vd = self.family.variance.deriv(mean) + + m = self.cov_struct.num_terms + p = exog.shape[1] + + d = p * m + gn = np.zeros(d) + gi = np.zeros(d) + gi_deriv = np.zeros((d, p)) + gn_deriv = np.zeros((d, p)) + cn_deriv = [0] * p + cmat = np.zeros((d, d)) + + fastvar = self.family.variance is varfuncs.constant + fastlink = isinstance(self.family.link, links.identity) + + for ix in self.groups_ix: + sd = np.sqrt(va[ix]) + resid = endog[ix] - mean[ix] + sresid = resid / sd + deriv = exog[ix, :] * idl[ix, None] + + jj = 0 + for j in range(m): + # The derivative of each term in (5) of Qu et al. + # There are four terms involving beta in a product. + # Iterated application of the product rule gives + # the gradient as a sum of four terms. + c = self.cov_struct.mat(len(ix), j) + crs1 = np.dot(c, sresid) / sd + gi[jj:jj+p] = np.dot(deriv.T, crs1) + crs2 = np.dot(c, -deriv / sd[:, None]) / sd[:, None] + gi_deriv[jj:jj+p, :] = np.dot(deriv.T, crs2) + if not (fastlink and fastvar): + for k in range(p): + m1 = np.dot(exog[ix, :].T, + idl2[ix] * exog[ix, k] * crs1) + if not fastvar: + vx = -0.5 * vd[ix] * deriv[:, k] / va[ix]**1.5 + m2 = np.dot(deriv.T, vx * np.dot(c, sresid)) + m3 = np.dot(deriv.T, np.dot(c, vx * resid) / sd) + else: + m2, m3 = 0, 0 + gi_deriv[jj:jj+p, k] += m1 + m2 + m3 + jj += p + + for j in range(p): + u = np.outer(gi, gi_deriv[:, j]) + cn_deriv[j] += u + u.T + + gn += gi + gn_deriv += gi_deriv + + cmat += np.outer(gi, gi) + + ngrp = len(self.groups_ix) + gn /= ngrp + gn_deriv /= ngrp + cmat /= ngrp**2 + + qif = np.dot(gn, np.linalg.solve(cmat, gn)) + + gcg = np.zeros(p) + for j in range(p): + cn_deriv[j] /= len(self.groups_ix)**2 + u = np.linalg.solve(cmat, cn_deriv[j]).T + u = np.linalg.solve(cmat, u) + gcg[j] = np.dot(gn, np.dot(u, gn)) + + grad = 2 * np.dot(gn_deriv.T, np.linalg.solve(cmat, gn)) - gcg + + return qif, grad, cmat, gn, gn_deriv + + def estimate_scale(self, params): + """ + Estimate the dispersion/scale. + + The scale parameter for binomial and Poisson families is + fixed at 1, otherwise it is estimated from the data. + """ + + if isinstance(self.family, (families.Binomial, families.Poisson)): + return 1. + + if hasattr(self, "ddof_scale"): + ddof_scale = self.ddof_scale + else: + ddof_scale = self.exog[1] + + lpr = np.dot(self.exog, params) + mean = self.family.link.inverse(lpr) + resid = self.endog - mean + scale = np.sum(resid**2) / (self.nobs - ddof_scale) + + return scale + + @classmethod + def from_formula(cls, formula, groups, data, subset=None, + *args, **kwargs): + """ + Create a QIF model instance from a formula and dataframe. + + Parameters + ---------- + formula : str or generic Formula object + The formula specifying the model + groups : array-like or string + Array of grouping labels. If a string, this is the name + of a variable in `data` that contains the grouping labels. + data : array-like + The data for the model. + subset : array-like + An array-like object of booleans, integers, or index + values that indicate the subset of the data to used when + fitting the model. + + Returns + ------- + model : QIF model instance + """ + + if isinstance(groups, str): + groups = data[groups] + + model = super(QIF, cls).from_formula( + formula, data=data, subset=subset, + groups=groups, *args, **kwargs) + + return model + + def fit(self, maxiter=100, start_params=None, tol=1e-6, gtol=1e-4, + ddof_scale=None): + """ + Fit a GLM to correlated data using QIF. + + Parameters + ---------- + maxiter : integer + Maximum number of iterations. + start_params : array-like, optional + Starting values + tol : float + Convergence threshold for difference of successive + estimates. + gtol : float + Convergence threshold for gradient. + ddof_scale : int, optional + Degrees of freedom for the scale parameter + + Returns + ------- + QIFResults object + """ + + if ddof_scale is None: + self.ddof_scale = self.exog.shape[1] + else: + self.ddof_scale = ddof_scale + + if start_params is None: + params = np.zeros(self.exog.shape[1]) + else: + params = start_params + + for _ in range(maxiter): + + qif, grad, cmat, _, gn_deriv = self.objective(params) + + gnorm = np.sqrt(np.sum(grad * grad)) + self._fit_history["qif"].append(qif) + self._fit_history["gradnorm"].append(gnorm) + + if gnorm < gtol: + break + + cjac = 2 * np.dot(gn_deriv.T, np.linalg.solve(cmat, gn_deriv)) + step = np.linalg.solve(cjac, grad) + + snorm = np.sqrt(np.sum(step * step)) + self._fit_history["stepnorm"].append(snorm) + if snorm < tol: + break + params -= step + + vcov = np.dot(gn_deriv.T, np.linalg.solve(cmat, gn_deriv)) + vcov = np.linalg.inv(vcov) + scale = self.estimate_scale(params) + + rslt = QIFResults(self, params, vcov / scale, scale) + rslt.fit_history = self._fit_history + self._fit_history = defaultdict(list) + + return QIFResultsWrapper(rslt) + + +class QIFResults(base.LikelihoodModelResults): + """Results class for QIF Regression""" + def __init__(self, model, params, cov_params, scale, + use_t=False, **kwds): + + super(QIFResults, self).__init__( + model, params, normalized_cov_params=cov_params, + scale=scale) + + self.qif, _, _, _, _ = self.model.objective(params) + + @cache_readonly + def aic(self): + """ + An AIC-like statistic for models fit using QIF. + """ + if isinstance(self.model.cov_struct, QIFIndependence): + msg = "AIC not available with QIFIndependence covariance" + raise ValueError(msg) + df = self.model.exog.shape[1] + return self.qif + 2*df + + @cache_readonly + def bic(self): + """ + A BIC-like statistic for models fit using QIF. + """ + if isinstance(self.model.cov_struct, QIFIndependence): + msg = "BIC not available with QIFIndependence covariance" + raise ValueError(msg) + df = self.model.exog.shape[1] + return self.qif + np.log(self.model.nobs)*df + + @cache_readonly + def fittedvalues(self): + """ + Returns the fitted values from the model. + """ + return self.model.family.link.inverse( + np.dot(self.model.exog, self.params)) + + def summary(self, yname=None, xname=None, title=None, alpha=.05): + """ + Summarize the QIF regression results + + Parameters + ---------- + yname : string, optional + Default is `y` + xname : list of strings, optional + Default is `var_##` for ## in p the number of regressors + title : string, optional + Title for the top table. If not None, then this replaces + the default title + alpha : float + significance level for the confidence intervals + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be + printed or converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary.Summary : class to hold summary results + """ + + top_left = [('Dep. Variable:', None), + ('Method:', ['QIF']), + ('Family:', [self.model.family.__class__.__name__]), + ('Covariance structure:', + [self.model.cov_struct.__class__.__name__]), + ('Date:', None), + ('Time:', None), + ] + + NY = [len(y) for y in self.model.groups_ix] + + top_right = [('No. Observations:', [sum(NY)]), + ('No. clusters:', [len(NY)]), + ('Min. cluster size:', [min(NY)]), + ('Max. cluster size:', [max(NY)]), + ('Mean cluster size:', ["%.1f" % np.mean(NY)]), + ('Scale:', ["%.3f" % self.scale]), + ] + + if title is None: + title = self.model.__class__.__name__ + ' ' +\ + "Regression Results" + + # Override the exog variable names if xname is provided as an + # argument. + if xname is None: + xname = self.model.exog_names + + if yname is None: + yname = self.model.endog_names + + # Create summary table instance + from statsmodels.iolib.summary import Summary + smry = Summary() + smry.add_table_2cols(self, gleft=top_left, gright=top_right, + yname=yname, xname=xname, + title=title) + smry.add_table_params(self, yname=yname, xname=xname, + alpha=alpha, use_t=False) + + return smry + + +class QIFResultsWrapper(lm.RegressionResultsWrapper): + pass + + +wrap.populate_wrapper(QIFResultsWrapper, QIFResults) diff --git a/statsmodels/genmod/tests/__init__.py b/statsmodels/genmod/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/genmod/tests/gee_categorical_simulation_check.py b/statsmodels/genmod/tests/gee_categorical_simulation_check.py new file mode 100644 index 0000000..d34d24f --- /dev/null +++ b/statsmodels/genmod/tests/gee_categorical_simulation_check.py @@ -0,0 +1,288 @@ +""" +Assesment of Generalized Estimating Equations using simulation. + +This script checks ordinal and nominal models for multinomial data. + +See the generated file "gee_categorical_simulation_check.txt" for +results. +""" +from statsmodels.compat.python import lrange +import numpy as np +from scipy import stats +from statsmodels.genmod.generalized_estimating_equations import GEE,\ + gee_setup_ordinal, gee_setup_nominal,\ + gee_ordinal_starting_values, Multinomial +from statsmodels.genmod.families import Binomial +from statsmodels.genmod.cov_struct import GlobalOddsRatio +from .gee_gaussian_simulation_check import GEE_simulator + + +class ordinal_simulator(GEE_simulator): + + # The thresholds where the latent continuous process is cut to + # obtain the categorical values. + thresholds = None + + + def true_params(self): + return np.concatenate((self.thresholds, self.params)) + + + def starting_values(self, nconstraints): + beta = gee_ordinal_starting_values(self.endog, + len(self.params)) + if nconstraints > 0: + m = self.exog_ex.shape[1] - nconstraints + beta = beta[0:m] + + return beta + + + def print_dparams(self, dparams_est): + OUT.write("Odds ratio estimate: %8.4f\n" % dparams_est[0]) + OUT.write("Odds ratio truth: %8.4f\n" % + self.dparams[0]) + OUT.write("\n") + + + def simulate(self): + + endog, exog, group, time = [], [], [], [] + + for i in range(self.ngroups): + + gsize = np.random.randint(self.group_size_range[0], + self.group_size_range[1]) + + group.append([i,] * gsize) + + time1 = np.random.normal(size=(gsize,2)) + time.append(time1) + + exog1 = np.random.normal(size=(gsize, len(self.params))) + exog.append(exog1) + + lp = np.dot(exog1, self.params) + + z = np.random.uniform(size=gsize) + z = np.log(z / (1 - z)) + lp + endog1 = np.array([np.sum(x > self.thresholds) for x in z]) + endog.append(endog1) + + self.exog = np.concatenate(exog, axis=0) + self.endog = np.concatenate(endog) + self.time = np.concatenate(time, axis=0) + self.group = np.concatenate(group) + self.offset = np.zeros(len(self.endog), dtype=np.float64) + + +class nominal_simulator(GEE_simulator): + + def starting_values(self, nconstraints): + return None + + def true_params(self): + return np.concatenate(self.params[:-1]) + + def print_dparams(self, dparams_est): + OUT.write("Odds ratio estimate: %8.4f\n" % dparams_est[0]) + OUT.write("Odds ratio truth: %8.4f\n" % self.dparams[0]) + OUT.write("\n") + + def simulate(self): + + endog, exog, group, time = [], [], [], [] + + for i in range(self.ngroups): + + gsize = np.random.randint(self.group_size_range[0], + self.group_size_range[1]) + + group.append([i,] * gsize) + + time1 = np.random.normal(size=(gsize,2)) + time.append(time1) + + exog1 = np.random.normal(size=(gsize, len(self.params[0]))) + exog.append(exog1) + + # Probabilities for each outcome + prob = [np.exp(np.dot(exog1, p)) for p in self.params] + prob = np.vstack(prob).T + prob /= prob.sum(1)[:, None] + + m = len(self.params) + endog1 = [] + for k in range(gsize): + pdist = stats.rv_discrete(values=(lrange(m), + prob[k,:])) + endog1.append(pdist.rvs()) + + endog.append(np.asarray(endog1)) + + self.exog = np.concatenate(exog, axis=0) + self.endog = np.concatenate(endog).astype(np.int32) + self.time = np.concatenate(time, axis=0) + self.group = np.concatenate(group) + self.offset = np.zeros(len(self.endog), dtype=np.float64) + + + +def gendat_ordinal(): + + os = ordinal_simulator() + os.params = np.r_[0., 1] + os.ngroups = 200 + os.thresholds = [1, 0, -1] + os.dparams = [1.,] + os.simulate() + + data = np.concatenate((os.endog[:,None], os.exog, + os.group[:,None]), axis=1) + + os.endog_ex, os.exog_ex, os.intercepts, os.nthresh = \ + gee_setup_ordinal(data, 0) + + os.group_ex = os.exog_ex[:,-1] + os.exog_ex = os.exog_ex[:,0:-1] + + os.exog_ex = np.concatenate((os.intercepts, os.exog_ex), + axis=1) + + va = GlobalOddsRatio(4, "ordinal") + + lhs = np.array([[0., 0., 0, 1., 0.], [0., 0, 0, 0, 1]]) + rhs = np.r_[0., 1] + + return os, va, Binomial(), (lhs, rhs) + + +def gendat_nominal(): + + ns = nominal_simulator() + + # The last component of params must be identically zero + ns.params = [np.r_[0., 1], np.r_[-1., 0], np.r_[0., 0]] + ns.ngroups = 200 + ns.dparams = [1., ] + ns.simulate() + + data = np.concatenate((ns.endog[:,None], ns.exog, + ns.group[:,None]), axis=1) + + ns.endog_ex, ns.exog_ex, ns.exog_ne, ns.nlevel = \ + gee_setup_nominal(data, 0, [3,]) + + ns.group_ex = ns.exog_ne[:,0] + + va = GlobalOddsRatio(3, "nominal") + + lhs = np.array([[0., 1., 1, 0],]) + rhs = np.r_[0.,] + + return ns, va, Multinomial(3), (lhs, rhs) + + +if __name__ == '__main__': + + nrep = 100 + + OUT = open("gee_categorical_simulation_check.txt", "w") + + np.set_printoptions(formatter={'all': lambda x: "%8.3f" % x}, + suppress=True) + + # Loop over data generating models + gendats = [gendat_nominal, gendat_ordinal] + + for jg,gendat in enumerate(gendats): + + dparams = [] + params = [] + std_errors = [] + pvalues = [] + + for j in range(nrep): + + da, va, mt, constraint = gendat() + + beta = da.starting_values(0) + + md = GEE(da.endog_ex, da.exog_ex, da.group_ex, None, + mt, va) + mdf = md.fit(start_params = beta) + + if mdf is None: + continue + + scale_inv = 1 / md.estimate_scale() + + dparams.append(np.r_[va.dparams, scale_inv]) + + params.append(np.asarray(mdf.params)) + std_errors.append(np.asarray(mdf.standard_errors)) + + da, va, mt, constraint = gendat() + + beta = da.starting_values(constraint[0].shape[0]) + + md = GEE(da.endog_ex, da.exog_ex, da.group_ex, None, + mt, va, constraint=constraint) + mdf = md.fit(start_params = beta) + + if mdf is None: + continue + + score = md.score_test_results + pvalues.append(score["p-value"]) + + dparams_mean = np.array(sum(dparams) / len(dparams)) + + OUT.write("%s data.\n" % ("Nominal", "Ordinal")[jg]) + OUT.write("%d runs converged successfully.\n" % len(pvalues)) + + OUT.write("Checking dependence parameters:\n") + da.print_dparams(dparams_mean) + + params = np.array(params) + eparams = params.mean(0) + sdparams = params.std(0) + std_errors = np.array(std_errors) + std_errors = std_errors.mean(0) + true_params = da.true_params() + + OUT.write("Checking parameter values:\n") + OUT.write("Observed: ") + OUT.write(np.array_str(eparams) + "\n") + OUT.write("Expected: ") + OUT.write(np.array_str(true_params) + "\n") + OUT.write("Absolute difference: ") + OUT.write(np.array_str(eparams - true_params) + "\n") + OUT.write("Relative difference: ") + OUT.write(np.array_str((eparams - true_params) / true_params) + + "\n") + OUT.write("\n") + + OUT.write("Checking standard errors:\n") + OUT.write("Observed: ") + OUT.write(np.array_str(sdparams) + "\n") + OUT.write("Expected: ") + OUT.write(np.array_str(std_errors) + "\n") + OUT.write("Absolute difference: ") + OUT.write(np.array_str(sdparams - std_errors) + "\n") + OUT.write("Relative difference: ") + OUT.write(np.array_str((sdparams - std_errors) / std_errors) + + "\n") + OUT.write("\n") + + OUT.write("Checking constrained estimation:\n") + OUT.write("Observed Expected\n") + + pvalues.sort() + for q in np.arange(0.1, 0.91, 0.1): + OUT.write("%10.3f %10.3f\n" % + (pvalues[int(q*len(pvalues))], q)) + + OUT.write("=" * 80 + "\n\n") + + OUT.close() diff --git a/statsmodels/genmod/tests/gee_categorical_simulation_check.txt b/statsmodels/genmod/tests/gee_categorical_simulation_check.txt new file mode 100644 index 0000000..66ac059 --- /dev/null +++ b/statsmodels/genmod/tests/gee_categorical_simulation_check.txt @@ -0,0 +1,5 @@ +Nominal data. +99 runs converged successfully. +Checking dependence parameters: +Odds ratio estimate: 1.0028 +Odds ratio truth: 1.0000 diff --git a/statsmodels/genmod/tests/gee_gaussian_simulation_check.py b/statsmodels/genmod/tests/gee_gaussian_simulation_check.py new file mode 100644 index 0000000..0ac4341 --- /dev/null +++ b/statsmodels/genmod/tests/gee_gaussian_simulation_check.py @@ -0,0 +1,337 @@ +""" +Assesment of Generalized Estimating Equations using simulation. + +This script checks Gaussian models. + +See the generated file "gee_gaussian_simulation_check.txt" for +results. +""" +from statsmodels.compat.python import range, lrange, zip +import scipy +import numpy as np +from itertools import product +from statsmodels.genmod.families import Gaussian +from statsmodels.genmod.generalized_estimating_equations import GEE +from statsmodels.genmod.cov_struct import Autoregressive, Nested + +class GEE_simulator(object): + + # + # Parameters that must be defined + # + + # Number of groups + ngroups = None + + # Standard deviation of the pure errors + error_sd = None + + # The regression coefficients + params = None + + # The parameters defining the dependence structure + dep_params = None + + # The true scale parameter + scale = None + + # + # Output parameters + # + + # Matrix of exogeneous data (rows are cases, columns are + # variables) + exog = None + + # Matrix of endogeneous data (len(endog) = exog.shape[0]) + endog = None + + # Matrix of time information (time.shape[0] = len(endog)) + time = None + + # Group labels (len(groups) = len(endog)) + group = None + + # Group sizes are random within this range + group_size_range = [4, 11] + + # dparams_est is dparams with scale_inv appended + def print_dparams(self, dparams_est): + raise NotImplementedError + + +class AR_simulator(GEE_simulator): + + # The distance function for determining AR correlations. + distfun = [lambda x, y: np.sqrt(np.sum((x-y)**2)),] + + + def print_dparams(self, dparams_est): + OUT.write("AR coefficient estimate: %8.4f\n" % + dparams_est[0]) + OUT.write("AR coefficient truth: %8.4f\n" % + self.dep_params[0]) + OUT.write("Error variance estimate: %8.4f\n" % + dparams_est[1]) + OUT.write("Error variance truth: %8.4f\n" % + self.error_sd**2) + OUT.write("\n") + + def simulate(self): + + endog, exog, group, time = [], [], [], [] + + for i in range(self.ngroups): + + gsize = np.random.randint(self.group_size_range[0], + self.group_size_range[1]) + + group.append([i,] * gsize) + + time1 = np.random.normal(size=(gsize,2)) + time.append(time1) + + exog1 = np.random.normal(size=(gsize, 5)) + exog1[:,0] = 1 + exog.append(exog1) + + # Pairwise distances within the cluster + distances = scipy.spatial.distance.cdist(time1, time1, + self.distfun[0]) + + # Pairwise correlations within the cluster + correlations = self.dep_params[0]**distances + correlations_sr = np.linalg.cholesky(correlations) + + errors = np.dot(correlations_sr, np.random.normal(size=gsize)) + + endog1 = np.dot(exog1, self.params) + errors * self.error_sd + endog.append(endog1) + + self.exog = np.concatenate(exog, axis=0) + self.endog = np.concatenate(endog) + self.time = np.concatenate(time, axis=0) + self.group = np.concatenate(group) + + + +class Nested_simulator(GEE_simulator): + + # Vector containing list of nest sizes (used instead of + # group_size_range). + nest_sizes = None + + # Matrix of nest id's (an output parameter) + id_matrix = None + + + def print_dparams(self, dparams_est): + for j in range(len(self.nest_sizes)): + OUT.write("Nest %d variance estimate: %8.4f\n" % \ + (j+1, dparams_est[j])) + OUT.write("Nest %d variance truth: %8.4f\n" % \ + (j+1, self.dep_params[j])) + + OUT.write("Error variance estimate: %8.4f\n" % \ + (dparams_est[-1] - sum(dparams_est[0:-1]))) + OUT.write("Error variance truth: %8.4f\n" % + self.error_sd**2) + OUT.write("\n") + + + def simulate(self): + + group_effect_var = self.dep_params[0] + + vcomp = self.dep_params[1:] + vcomp.append(0) + + endog, exog, group, id_matrix = [], [], [], [] + + for i in range(self.ngroups): + + iterators = [lrange(n) for n in self.nest_sizes] + + # The random effects + variances = [np.sqrt(v)*np.random.normal(size=n) + for v,n in zip(vcomp, self.nest_sizes)] + + gpe = np.random.normal() * np.sqrt(group_effect_var) + + nest_all = [] + for j in self.nest_sizes: + nest_all.append(set()) + + for nest in product(*iterators): + + group.append(i) + + # The sum of all random effects that apply to this + # unit + ref = gpe + sum([v[j] for v,j in zip(variances, nest)]) + + exog1 = np.random.normal(size=5) + exog1[0] = 1 + exog.append(exog1) + + error = ref + self.error_sd * np.random.normal() + + endog1 = np.dot(exog1, self.params) + error + endog.append(endog1) + + for j in range(len(nest)): + nest_all[j].add(tuple(nest[0:j+1])) + + nest1 = [len(x)-1 for x in nest_all] + id_matrix.append(nest1[0:-1]) + + self.exog = np.array(exog) + self.endog = np.array(endog) + self.group = np.array(group) + self.id_matrix = np.array(id_matrix) + self.time = np.zeros_like(self.endog) + + + +def gen_gendat_ar0(ar): + def gendat_ar0(msg = False): + ars = AR_simulator() + ars.ngroups = 200 + ars.params = np.r_[0, -1, 1, 0, 0.5] + ars.error_sd = 2 + ars.dep_params = [ar,] + ars.simulate() + return ars, Autoregressive() + return gendat_ar0 + +def gen_gendat_ar1(ar): + def gendat_ar1(): + ars = AR_simulator() + ars.ngroups = 200 + ars.params = np.r_[0, -0.8, 1.2, 0, 0.5] + ars.error_sd = 2 + ars.dep_params = [ar,] + ars.simulate() + return ars, Autoregressive() + return gendat_ar1 + +def gendat_nested0(): + ns = Nested_simulator() + ns.error_sd = 1. + ns.params = np.r_[0., 1, 1, -1, -1] + ns.ngroups = 50 + ns.nest_sizes = [10, 5] + ns.dep_params = [2., 1.] + ns.simulate() + return ns, Nested(ns.id_matrix) + +def gendat_nested1(): + ns = Nested_simulator() + ns.error_sd = 2. + ns.params = np.r_[0, 1, 1.3, -0.8, -1.2] + ns.ngroups = 50 + ns.nest_sizes = [10, 5] + ns.dep_params = [1., 3.] + ns.simulate() + return ns, Nested(ns.id_matrix) + + +if __name__ == "__main__": + + try: + np.set_printoptions(formatter={'all': lambda x: "%8.3f" % x}, + suppress=True) + except TypeError: + # older numpy versions do not have formatter option + pass + + OUT = open("gee_gaussian_simulation_check.txt", "w") + + nrep = 100 + + gendats = [gen_gendat_ar0(ar) for ar in (0, 0.3, 0.6)] + gendats.extend([gen_gendat_ar1(ar) for ar in (0, 0.3, 0.6)]) + gendats.extend([gendat_nested0, gendat_nested1]) + + lhs = np.array([[0., 1, 1, 0, 0],]) + rhs = np.r_[0.,] + + # Loop over data generating models + for gendat in gendats: + + pvalues = [] + params = [] + std_errors = [] + dep_params = [] + + for j in range(nrep): + + da,va = gendat() + ga = Gaussian() + + md = GEE(da.endog, da.exog, da.group, da.time, ga, va) + mdf = md.fit() + + scale_inv = 1 / md.estimate_scale() + dep_params.append(np.r_[va.dep_params, scale_inv]) + params.append(np.asarray(mdf.params)) + std_errors.append(np.asarray(mdf.standard_errors())) + + da,va = gendat() + ga = Gaussian() + + md = GEE(da.endog, da.exog, da.group, da.time, ga, va, + constraint=(lhs, rhs)) + mdf = md.fit() + score = md.score_test_results + pvalue = score["p-value"] + pvalues.append(pvalue) + + dparams_mean = np.array(sum(dep_params) / len(dep_params)) + OUT.write("Checking dependence parameters:\n") + da.print_dparams(dparams_mean) + + params = np.array(params) + eparams = params.mean(0) + sdparams = params.std(0) + std_errors = np.array(std_errors) + std_errors = std_errors.mean(0) + + OUT.write("Checking parameter values:\n") + OUT.write("Observed: ") + OUT.write(np.array_str(eparams) + "\n") + OUT.write("Expected: ") + OUT.write(np.array_str(da.params) + "\n") + OUT.write("Absolute difference: ") + OUT.write(np.array_str(eparams - da.params) + "\n") + OUT.write("Relative difference: ") + OUT.write(np.array_str((eparams - da.params) / da.params) + + "\n") + OUT.write("\n") + + OUT.write("Checking standard errors\n") + OUT.write("Observed: ") + OUT.write(np.array_str(sdparams) + "\n") + OUT.write("Expected: ") + OUT.write(np.array_str(std_errors) + "\n") + OUT.write("Absolute difference: ") + OUT.write(np.array_str(sdparams - std_errors) + "\n") + OUT.write("Relative difference: ") + OUT.write(np.array_str((sdparams - std_errors) / std_errors) + + "\n") + OUT.write("\n") + + pvalues.sort() + OUT.write("Checking constrained estimation:\n") + OUT.write("Left hand side:\n") + OUT.write(np.array_str(lhs) + "\n") + OUT.write("Right hand side:\n") + OUT.write(np.array_str(rhs) + "\n") + OUT.write("Observed p-values Expected Null p-values\n") + for q in np.arange(0.1, 0.91, 0.1): + OUT.write("%20.3f %20.3f\n" % + (pvalues[int(q*len(pvalues))], q)) + + OUT.write("=" * 80 + "\n\n") + + OUT.close() diff --git a/statsmodels/genmod/tests/gee_gaussian_simulation_check.txt b/statsmodels/genmod/tests/gee_gaussian_simulation_check.txt new file mode 100644 index 0000000..6209230 --- /dev/null +++ b/statsmodels/genmod/tests/gee_gaussian_simulation_check.txt @@ -0,0 +1,283 @@ +Checking dependence parameters: +AR coefficient estimate: 0.0000 +AR coefficient truth: 0.0000 +Error variance estimate: 4.0006 +Error variance truth: 4.0000 + +Checking parameter values: +Observed: [ -0.005 -1.007 1.008 -0.003 0.494] +Expected: [ 0.000 -1.000 1.000 0.000 0.500] +Absolute difference: [ -0.005 -0.007 0.008 -0.003 -0.006] +Relative difference: [ -inf 0.007 0.008 -inf -0.012] + +Checking standard errors +Observed: [ 0.054 0.056 0.056 0.052 0.053] +Expected: [ 0.053 0.053 0.054 0.053 0.053] +Absolute difference: [ 0.001 0.003 0.002 -0.001 -0.001] +Relative difference: [ 0.023 0.052 0.042 -0.025 -0.012] + +Checking constrained estimation: +Left hand side: +[[ 0.000 1.000 1.000 0.000 0.000]] +Right hand side: +[ 0.000] +Observed p-values Expected Null p-values + 0.169 0.100 + 0.284 0.200 + 0.406 0.300 + 0.488 0.400 + 0.600 0.500 + 0.679 0.600 + 0.732 0.700 + 0.810 0.800 + 0.910 0.900 +================================================================================ + +Checking dependence parameters: +AR coefficient estimate: 0.3766 +AR coefficient truth: 0.3000 +Error variance estimate: 3.9845 +Error variance truth: 4.0000 + +Checking parameter values: +Observed: [ -0.005 -1.002 0.998 -0.003 0.492] +Expected: [ 0.000 -1.000 1.000 0.000 0.500] +Absolute difference: [ -0.005 -0.002 -0.002 -0.003 -0.008] +Relative difference: [ -inf 0.002 -0.002 -inf -0.017] + +Checking standard errors +Observed: [ 0.082 0.055 0.056 0.055 0.054] +Expected: [ 0.080 0.054 0.053 0.053 0.053] +Absolute difference: [ 0.002 0.002 0.002 0.002 0.001] +Relative difference: [ 0.026 0.034 0.044 0.034 0.020] + +Checking constrained estimation: +Left hand side: +[[ 0.000 1.000 1.000 0.000 0.000]] +Right hand side: +[ 0.000] +Observed p-values Expected Null p-values + 0.152 0.100 + 0.268 0.200 + 0.347 0.300 + 0.437 0.400 + 0.517 0.500 + 0.585 0.600 + 0.705 0.700 + 0.826 0.800 + 0.915 0.900 +================================================================================ + +Checking dependence parameters: +AR coefficient estimate: 0.6689 +AR coefficient truth: 0.6000 +Error variance estimate: 4.0118 +Error variance truth: 4.0000 + +Checking parameter values: +Observed: [ -0.009 -0.998 0.996 -0.002 0.493] +Expected: [ 0.000 -1.000 1.000 0.000 0.500] +Absolute difference: [ -0.009 0.002 -0.004 -0.002 -0.007] +Relative difference: [ -inf -0.002 -0.004 -inf -0.014] + +Checking standard errors +Observed: [ 0.102 0.050 0.046 0.050 0.044] +Expected: [ 0.106 0.048 0.048 0.048 0.048] +Absolute difference: [ -0.004 0.001 -0.002 0.002 -0.004] +Relative difference: [ -0.040 0.031 -0.039 0.044 -0.075] + +Checking constrained estimation: +Left hand side: +[[ 0.000 1.000 1.000 0.000 0.000]] +Right hand side: +[ 0.000] +Observed p-values Expected Null p-values + 0.064 0.100 + 0.126 0.200 + 0.191 0.300 + 0.329 0.400 + 0.474 0.500 + 0.609 0.600 + 0.676 0.700 + 0.840 0.800 + 0.934 0.900 +================================================================================ + +Checking dependence parameters: +AR coefficient estimate: 0.0000 +AR coefficient truth: 0.0000 +Error variance estimate: 3.9885 +Error variance truth: 4.0000 + +Checking parameter values: +Observed: [ -0.005 -0.798 1.195 0.005 0.505] +Expected: [ 0.000 -0.800 1.200 0.000 0.500] +Absolute difference: [ -0.005 0.002 -0.005 0.005 0.005] +Relative difference: [ -inf -0.002 -0.004 inf 0.011] + +Checking standard errors +Observed: [ 0.044 0.047 0.054 0.059 0.057] +Expected: [ 0.053 0.053 0.053 0.053 0.053] +Absolute difference: [ -0.009 -0.005 0.001 0.006 0.004] +Relative difference: [ -0.178 -0.098 0.014 0.106 0.071] + +Checking constrained estimation: +Left hand side: +[[ 0.000 1.000 1.000 0.000 0.000]] +Right hand side: +[ 0.000] +Observed p-values Expected Null p-values + 0.000 0.100 + 0.000 0.200 + 0.000 0.300 + 0.000 0.400 + 0.000 0.500 + 0.000 0.600 + 0.000 0.700 + 0.000 0.800 + 0.000 0.900 +================================================================================ + +Checking dependence parameters: +AR coefficient estimate: 0.3810 +AR coefficient truth: 0.3000 +Error variance estimate: 3.9966 +Error variance truth: 4.0000 + +Checking parameter values: +Observed: [ -0.000 -0.797 1.200 -0.002 0.499] +Expected: [ 0.000 -0.800 1.200 0.000 0.500] +Absolute difference: [ -0.000 0.003 0.000 -0.002 -0.001] +Relative difference: [ -inf -0.004 0.000 -inf -0.002] + +Checking standard errors +Observed: [ 0.086 0.062 0.044 0.058 0.053] +Expected: [ 0.080 0.053 0.053 0.054 0.054] +Absolute difference: [ 0.006 0.008 -0.009 0.004 -0.001] +Relative difference: [ 0.074 0.158 -0.165 0.081 -0.010] + +Checking constrained estimation: +Left hand side: +[[ 0.000 1.000 1.000 0.000 0.000]] +Right hand side: +[ 0.000] +Observed p-values Expected Null p-values + 0.000 0.100 + 0.000 0.200 + 0.000 0.300 + 0.000 0.400 + 0.000 0.500 + 0.000 0.600 + 0.000 0.700 + 0.000 0.800 + 0.000 0.900 +================================================================================ + +Checking dependence parameters: +AR coefficient estimate: 0.6660 +AR coefficient truth: 0.6000 +Error variance estimate: 4.0002 +Error variance truth: 4.0000 + +Checking parameter values: +Observed: [ -0.007 -0.793 1.201 -0.006 0.501] +Expected: [ 0.000 -0.800 1.200 0.000 0.500] +Absolute difference: [ -0.007 0.007 0.001 -0.006 0.001] +Relative difference: [ -inf -0.009 0.001 -inf 0.003] + +Checking standard errors +Observed: [ 0.109 0.048 0.046 0.047 0.049] +Expected: [ 0.106 0.048 0.048 0.048 0.048] +Absolute difference: [ 0.002 -0.000 -0.001 -0.001 0.002] +Relative difference: [ 0.023 -0.007 -0.029 -0.018 0.034] + +Checking constrained estimation: +Left hand side: +[[ 0.000 1.000 1.000 0.000 0.000]] +Right hand side: +[ 0.000] +Observed p-values Expected Null p-values + 0.000 0.100 + 0.000 0.200 + 0.000 0.300 + 0.000 0.400 + 0.000 0.500 + 0.000 0.600 + 0.000 0.700 + 0.000 0.800 + 0.000 0.900 +================================================================================ + +Checking dependence parameters: +Nest 1 variance estimate: 1.9752 +Nest 1 variance truth: 2.0000 +Nest 2 variance estimate: 1.0013 +Nest 2 variance truth: 1.0000 +Error variance estimate: 1.0089 +Error variance truth: 1.0000 + +Checking parameter values: +Observed: [ 0.024 1.002 0.999 -1.000 -1.001] +Expected: [ 0.000 1.000 1.000 -1.000 -1.000] +Absolute difference: [ 0.024 0.002 -0.001 -0.000 -0.001] +Relative difference: [ inf 0.002 -0.001 0.000 0.001] + +Checking standard errors +Observed: [ 0.219 0.024 0.022 0.021 0.020] +Expected: [ 0.204 0.021 0.022 0.021 0.022] +Absolute difference: [ 0.016 0.002 0.001 -0.001 -0.002] +Relative difference: [ 0.077 0.104 0.026 -0.041 -0.089] + +Checking constrained estimation: +Left hand side: +[[ 0.000 1.000 1.000 0.000 0.000]] +Right hand side: +[ 0.000] +Observed p-values Expected Null p-values + 0.000 0.100 + 0.000 0.200 + 0.000 0.300 + 0.000 0.400 + 0.000 0.500 + 0.000 0.600 + 0.000 0.700 + 0.000 0.800 + 0.000 0.900 +================================================================================ + +Checking dependence parameters: +Nest 1 variance estimate: 0.9614 +Nest 1 variance truth: 1.0000 +Nest 2 variance estimate: 3.0497 +Nest 2 variance truth: 3.0000 +Error variance estimate: 4.0144 +Error variance truth: 4.0000 + +Checking parameter values: +Observed: [ 0.007 0.999 1.297 -0.799 -1.200] +Expected: [ 0.000 1.000 1.300 -0.800 -1.200] +Absolute difference: [ 0.007 -0.001 -0.003 0.001 0.000] +Relative difference: [ inf -0.001 -0.002 -0.001 -0.000] + +Checking standard errors +Observed: [ 0.142 0.047 0.044 0.044 0.040] +Expected: [ 0.163 0.044 0.043 0.043 0.042] +Absolute difference: [ -0.021 0.003 0.001 0.001 -0.002] +Relative difference: [ -0.129 0.077 0.015 0.015 -0.052] + +Checking constrained estimation: +Left hand side: +[[ 0.000 1.000 1.000 0.000 0.000]] +Right hand side: +[ 0.000] +Observed p-values Expected Null p-values + 0.000 0.100 + 0.000 0.200 + 0.000 0.300 + 0.000 0.400 + 0.000 0.500 + 0.000 0.600 + 0.000 0.700 + 0.000 0.800 + 0.000 0.900 +================================================================================ diff --git a/statsmodels/genmod/tests/gee_poisson_simulation_check.py b/statsmodels/genmod/tests/gee_poisson_simulation_check.py new file mode 100644 index 0000000..086174a --- /dev/null +++ b/statsmodels/genmod/tests/gee_poisson_simulation_check.py @@ -0,0 +1,284 @@ +""" +Assesment of Generalized Estimating Equations using simulation. + +This script checks Poisson models. + +See the generated file "gee_poisson_simulation_check.txt" for results. +""" + +from __future__ import print_function +import numpy as np +from statsmodels.genmod.families import Poisson +from .gee_gaussian_simulation_check import GEE_simulator +from statsmodels.genmod.generalized_estimating_equations import GEE +from statsmodels.genmod.cov_struct import Exchangeable,Independence + + +class Exchangeable_simulator(GEE_simulator): + """ + Simulate exchangeable Poisson data. + + The data within a cluster are simulated as y_i = z_c + z_i. The + z_c, and {z_i} are independent Poisson random variables with + expected values e_c and {e_i}, respectively. In order for the + pairwise correlation to be equal to `f` for all pairs, we need + + e_c / sqrt((e_c + e_i) * (e_c + e_j)) = f for all i, j. + + By setting all e_i = e within a cluster, these equations can be + satisfied. We thus need + + e_c * (1 - f) = f * e, + + which can be solved (non-uniquely) for e and e_c. + """ + + scale_inv = 1. + + def print_dparams(self, dparams_est): + OUT.write("Estimated common pairwise correlation: %8.4f\n" % + dparams_est[0]) + OUT.write("True common pairwise correlation: %8.4f\n" % + self.dparams[0]) + OUT.write("Estimated inverse scale parameter: %8.4f\n" % + dparams_est[1]) + OUT.write("True inverse scale parameter: %8.4f\n" % + self.scale_inv) + OUT.write("\n") + + + def simulate(self): + + endog, exog, group, time = [], [], [], [] + + # Get a basis for the orthogonal complement to params. + f = np.sum(self.params**2) + u,s,vt = np.linalg.svd(np.eye(len(self.params)) - + np.outer(self.params, self.params) / f) + params0 = u[:,np.flatnonzero(s > 1e-6)] + + for i in range(self.ngroups): + + gsize = np.random.randint(self.group_size_range[0], + self.group_size_range[1]) + + group.append([i,] * gsize) + + time1 = np.random.normal(size=(gsize, 2)) + time.append(time1) + + e_c = np.random.uniform(low=1, high=10) + e = e_c * (1 - self.dparams[0]) / self.dparams[0] + + common = np.random.poisson(e_c) + unique = np.random.poisson(e, gsize) + endog1 = common + unique + endog.append(endog1) + + lpr = np.log(e_c + e) * np.ones(gsize) + + # Create an exog matrix so that E[Y] = log(dot(exog1, params)) + exog1 = np.outer(lpr, self.params) / np.sum(self.params**2) + emat = np.random.normal(size=(len(lpr), params0.shape[1])) + exog1 += np.dot(emat, params0.T) + + exog.append(exog1) + + self.exog = np.concatenate(exog, axis=0) + self.endog = np.concatenate(endog) + self.time = np.concatenate(time, axis=0) + self.group = np.concatenate(group) + + +class Overdispersed_simulator(GEE_simulator): + """ + Use the negative binomial distribution to check GEE estimation + using the overdispered Poisson model with independent dependence. + + Simulating + X = np.random.negative_binomial(n, p, size) + then EX = (1 - p) * n / p + Var(X) = (1 - p) * n / p**2 + + These equations can be inverted as follows: + + p = E / V + n = E * p / (1 - p) + + dparams[0] is the common correlation coefficient + """ + + + def print_dparams(self, dparams_est): + OUT.write("Estimated inverse scale parameter: %8.4f\n" % + dparams_est[0]) + OUT.write("True inverse scale parameter: %8.4f\n" % + self.scale_inv) + OUT.write("\n") + + + def simulate(self): + + endog, exog, group, time = [], [], [], [] + + # Get a basis for the orthogonal complement to params. + f = np.sum(self.params**2) + u,s,vt = np.linalg.svd(np.eye(len(self.params)) - + np.outer(self.params, self.params) / f) + params0 = u[:,np.flatnonzero(s > 1e-6)] + + for i in range(self.ngroups): + + gsize = np.random.randint(self.group_size_range[0], + self.group_size_range[1]) + + group.append([i,] * gsize) + + time1 = np.random.normal(size=(gsize, 2)) + time.append(time1) + + exog1 = np.random.normal(size=(gsize, len(self.params))) + exog.append(exog1) + + E = np.exp(np.dot(exog1, self.params)) + V = E * self.scale_inv + + p = E / V + n = E * p / (1 - p) + + endog1 = np.random.negative_binomial(n, p, gsize) + endog.append(endog1) + + self.exog = np.concatenate(exog, axis=0) + self.endog = np.concatenate(endog) + self.time = np.concatenate(time, axis=0) + self.group = np.concatenate(group) + + + +def gendat_exchangeable(): + exs = Exchangeable_simulator() + exs.params = np.r_[2., 0.2, 0.2, -0.1, -0.2] + exs.ngroups = 200 + exs.dparams = [0.3,] + exs.simulate() + return exs, Exchangeable() + +def gendat_overdispersed(): + exs = Overdispersed_simulator() + exs.params = np.r_[2., 0.2, 0.2, -0.1, -0.2] + exs.ngroups = 200 + exs.scale_inv = 2. + exs.dparams = [] + exs.simulate() + return exs, Independence() + + +if __name__ == "__main__": + + np.set_printoptions(formatter={'all': lambda x: "%8.3f" % x}, + suppress=True) + + OUT = open("gee_poisson_simulation_check.txt", "w") + + nrep = 100 + + gendats = [gendat_exchangeable, gendat_overdispersed] + + lhs = np.array([[0., 1, -1, 0, 0],]) + rhs = np.r_[0.0,] + + # Loop over data generating models + for gendat in gendats: + + pvalues = [] + params = [] + std_errors = [] + dparams = [] + + for j in range(nrep): + + da, va = gendat() + ga = Poisson() + + # Poisson seems to be more sensitive to starting values, + # so we run the independence model first. + md = GEE(da.endog, da.exog, da.group, da.time, ga, + Independence()) + mdf = md.fit() + + md = GEE(da.endog, da.exog, da.group, da.time, ga, va) + mdf = md.fit(start_params = mdf.params) + if mdf is None or (not mdf.converged): + print("Failed to converge") + continue + + scale_inv = 1. / md.estimate_scale() + dparams.append(np.r_[va.dparams, scale_inv]) + params.append(np.asarray(mdf.params)) + std_errors.append(np.asarray(mdf.standard_errors)) + + da,va = gendat() + ga = Poisson() + + md = GEE(da.endog, da.exog, da.group, da.time, ga, va, + constraint=(lhs, rhs)) + mdf = md.fit() + if mdf is None or (not mdf.converged): + print("Failed to converge") + continue + + score = md.score_test_results + pvalue = score["p-value"] + pvalues.append(pvalue) + + dparams_mean = np.array(sum(dparams) / len(dparams)) + OUT.write("Results based on %d successful fits out of %d data sets.\n\n" + % (len(dparams), nrep)) + OUT.write("Checking dependence parameters:\n") + da.print_dparams(dparams_mean) + + params = np.array(params) + eparams = params.mean(0) + sdparams = params.std(0) + std_errors = np.array(std_errors) + std_errors = std_errors.mean(0) + + OUT.write("Checking parameter values:\n") + OUT.write("Observed: ") + OUT.write(np.array_str(eparams) + "\n") + OUT.write("Expected: ") + OUT.write(np.array_str(da.params) + "\n") + OUT.write("Absolute difference: ") + OUT.write(np.array_str(eparams - da.params) + "\n") + OUT.write("Relative difference: ") + OUT.write(np.array_str((eparams - da.params) / da.params) + + "\n") + OUT.write("\n") + + OUT.write("Checking standard errors\n") + OUT.write("Observed: ") + OUT.write(np.array_str(sdparams) + "\n") + OUT.write("Expected: ") + OUT.write(np.array_str(std_errors) + "\n") + OUT.write("Absolute difference: ") + OUT.write(np.array_str(sdparams - std_errors) + "\n") + OUT.write("Relative difference: ") + OUT.write(np.array_str((sdparams - std_errors) / std_errors) + + "\n") + OUT.write("\n") + + pvalues.sort() + OUT.write("Checking constrained estimation:\n") + OUT.write("Left hand side:\n") + OUT.write(np.array_str(lhs) + "\n") + OUT.write("Right hand side:\n") + OUT.write(np.array_str(rhs) + "\n") + OUT.write("Observed p-values Expected Null p-values\n") + for q in np.arange(0.1, 0.91, 0.1): + OUT.write("%20.3f %20.3f\n" % + (pvalues[int(q*len(pvalues))], q)) + + OUT.write("=" * 80 + "\n\n") + + OUT.close() diff --git a/statsmodels/genmod/tests/gee_poisson_simulation_check.txt b/statsmodels/genmod/tests/gee_poisson_simulation_check.txt new file mode 100644 index 0000000..069b1f8 --- /dev/null +++ b/statsmodels/genmod/tests/gee_poisson_simulation_check.txt @@ -0,0 +1,67 @@ +Results based on 100 successful fits out of 100 data sets.Checking dependence parameters: +Estimated common pairwise correlation: 0.2993 +True common pairwise correlation: 0.3000 +Estimated inverse scale parameter: 1.0104 +True inverse scale parameter: 1.0000 + +Checking parameter values: +Observed: [ 1.999 0.198 0.200 -0.100 -0.200] +Expected: [ 2.000 0.200 0.200 -0.100 -0.200] +Absolute difference: [ -0.001 -0.002 -0.000 0.000 0.000] +Relative difference: [ -0.000 -0.009 -0.000 -0.004 -0.002] + +Checking standard errors +Observed: [ 0.007 0.006 0.006 0.006 0.006] +Expected: [ 0.007 0.006 0.006 0.006 0.006] +Absolute difference: [ 0.000 0.000 0.000 0.000 -0.000] +Relative difference: [ 0.046 0.050 0.077 0.042 -0.007] + +Checking constrained estimation: +Left hand side: +[[ 0.000 1.000 -1.000 0.000 0.000]] +Right hand side: +[ 0.000] +Observed p-values Expected Null p-values + 0.127 0.100 + 0.206 0.200 + 0.250 0.300 + 0.329 0.400 + 0.403 0.500 + 0.484 0.600 + 0.565 0.700 + 0.645 0.800 + 0.832 0.900 +================================================================================ + +Results based on 98 successful fits out of 100 data sets.Checking dependence parameters: +Estimated inverse scale parameter: 1.9792 +True inverse scale parameter: 2.0000 + +Checking parameter values: +Observed: [ 2.001 0.198 0.199 -0.100 -0.199] +Expected: [ 2.000 0.200 0.200 -0.100 -0.200] +Absolute difference: [ 0.001 -0.002 -0.001 0.000 0.001] +Relative difference: [ 0.000 -0.010 -0.007 -0.004 -0.004] + +Checking standard errors +Observed: [ 0.007 0.014 0.016 0.016 0.014] +Expected: [ 0.007 0.014 0.014 0.013 0.013] +Absolute difference: [ 0.000 0.001 0.002 0.002 0.001] +Relative difference: [ 0.010 0.057 0.150 0.185 0.043] + +Checking constrained estimation: +Left hand side: +[[ 0.000 1.000 -1.000 0.000 0.000]] +Right hand side: +[ 0.000] +Observed p-values Expected Null p-values + 0.096 0.100 + 0.147 0.200 + 0.241 0.300 + 0.281 0.400 + 0.459 0.500 + 0.530 0.600 + 0.649 0.700 + 0.849 0.800 + 0.879 0.900 +================================================================================ diff --git a/statsmodels/genmod/tests/gee_simulation_check.py b/statsmodels/genmod/tests/gee_simulation_check.py new file mode 100644 index 0000000..90e5760 --- /dev/null +++ b/statsmodels/genmod/tests/gee_simulation_check.py @@ -0,0 +1,339 @@ +""" +Assesment of Generalized Estimating Equations using simulation. + +Only Gaussian models are currently checked. + +See the generated file "gee_simulation_check.txt" for results. +""" +from statsmodels.compat.python import range, lrange, zip +import scipy +import numpy as np +from itertools import product +from statsmodels.genmod.families import Gaussian +from statsmodels.genmod.generalized_estimating_equations import GEE +from statsmodels.genmod.cov_struct import Autoregressive, Nested + +np.set_printoptions(formatter={'all': lambda x: "%8.3f" % x}, + suppress=True) + + +OUT = open("gee_simulation_check.txt", "w") + +class GEE_simulator(object): + + # + # Parameters that must be defined + # + + # Number of groups + ngroups = None + + # Standard deviation of the pure errors + error_sd = None + + # The regression coefficients + params = None + + # The parameters defining the dependence structure + dparams = None + + + # + # Output parameters + # + + # Matrix of exogeneous data (rows are cases, columns are + # variables) + exog = None + + # Matrix of endogeneous data (len(endog) = exog.shape[0]) + endog = None + + # Matrix of time information (time.shape[0] = len(endog)) + time = None + + # Group labels (len(groups) = len(endog)) + group = None + + # Group sizes are random within this range + group_size_range = [4, 11] + + # dparams_est is dparams with scale_inv appended + def print_dparams(self, dparams_est): + raise NotImplementedError + + +class AR_simulator(GEE_simulator): + + # The distance function for determining AR correlations. + distfun = [lambda x, y: np.sqrt(np.sum((x-y)**2)),] + + + def print_dparams(self, dparams_est): + OUT.write("AR coefficient estimate: %8.4f\n" % + dparams_est[0]) + OUT.write("AR coefficient truth: %8.4f\n" % + self.dparams[0]) + OUT.write("Error variance estimate: %8.4f\n" % + dparams_est[1]) + OUT.write("Error variance truth: %8.4f\n" % + self.error_sd**2) + OUT.write("\n") + + def simulate(self): + + endog, exog, group, time = [], [], [], [] + + for i in range(self.ngroups): + + gsize = np.random.randint(self.group_size_range[0], + self.group_size_range[1]) + + group.append([i,] * gsize) + + time1 = np.random.normal(size=(gsize,2)) + time.append(time1) + + exog1 = np.random.normal(size=(gsize, 5)) + exog1[:,0] = 1 + exog.append(exog1) + + # Pairwise distances within the cluster + distances = scipy.spatial.distance.cdist(time1, time1, + self.distfun[0]) + + # Pairwise correlations within the cluster + correlations = self.dparams[0]**distances + correlations_sr = np.linalg.cholesky(correlations) + + errors = np.dot(correlations_sr, np.random.normal(size=gsize)) + + endog1 = np.dot(exog1, self.params) + errors * self.error_sd + endog.append(endog1) + + self.exog = np.concatenate(exog, axis=0) + self.endog = np.concatenate(endog) + self.time = np.concatenate(time, axis=0) + self.group = np.concatenate(group) + + + +class Nested_simulator(GEE_simulator): + + # Vector containing list of nest sizes (used instead of + # group_size_range). + nest_sizes = None + + # Matrix of nest id's (an output parameter) + id_matrix = None + + + def print_dparams(self, dparams_est): + for j in range(len(self.nest_sizes)): + OUT.write("Nest %d variance estimate: %8.4f\n" % \ + (j+1, dparams_est[j])) + OUT.write("Nest %d variance truth: %8.4f\n" % \ + (j+1, self.dparams[j])) + + OUT.write("Error variance estimate: %8.4f\n" % \ + (dparams_est[-1] - sum(dparams_est[0:-1]))) + OUT.write("Error variance truth: %8.4f\n" % + self.error_sd**2) + OUT.write("\n") + + + def simulate(self): + + group_effect_var = self.dparams[0] + + vcomp = self.dparams[1:] + vcomp.append(0) + + endog, exog, group, id_matrix = [], [], [], [] + + for i in range(self.ngroups): + + iterators = [lrange(n) for n in self.nest_sizes] + + # The random effects + variances = [np.sqrt(v)*np.random.normal(size=n) + for v,n in zip(vcomp, self.nest_sizes)] + + gpe = np.random.normal() * np.sqrt(group_effect_var) + + nest_all = [] + for j in self.nest_sizes: + nest_all.append(set()) + + for nest in product(*iterators): + + group.append(i) + + # The sum of all random effects that apply to this + # unit + ref = gpe + sum([v[j] for v,j in zip(variances, nest)]) + + exog1 = np.random.normal(size=5) + exog1[0] = 1 + exog.append(exog1) + + error = ref + self.error_sd * np.random.normal() + + endog1 = np.dot(exog1, self.params) + error + endog.append(endog1) + + for j in range(len(nest)): + nest_all[j].add(tuple(nest[0:j+1])) + + nest1 = [len(x)-1 for x in nest_all] + id_matrix.append(nest1[0:-1]) + + self.exog = np.array(exog) + self.endog = np.array(endog) + self.group = np.array(group) + self.id_matrix = np.array(id_matrix) + self.time = np.zeros_like(self.endog) + + + + + + + +def check_constraint(da, va, ga): + """ + Check the score testing of the parameter constraints. + """ + + + + + +def gen_gendat_ar0(ar): + def gendat_ar0(msg = False): + ars = AR_simulator() + ars.ngroups = 200 + ars.params = np.r_[0, -1, 1, 0, 0.5] + ars.error_sd = 2 + ars.dparams = [ar,] + ars.simulate() + return ars, Autoregressive() + return gendat_ar0 + +def gen_gendat_ar1(ar): + def gendat_ar1(): + ars = AR_simulator() + ars.ngroups = 200 + ars.params = np.r_[0, -0.8, 1.2, 0, 0.5] + ars.error_sd = 2 + ars.dparams = [ar,] + ars.simulate() + return ars, Autoregressive() + return gendat_ar1 + +def gendat_nested0(): + ns = Nested_simulator() + ns.error_sd = 1. + ns.params = np.r_[0., 1, 1, -1, -1] + ns.ngroups = 50 + ns.nest_sizes = [10, 5] + ns.dparams = [2., 1.] + ns.simulate() + return ns, Nested(ns.id_matrix) + +def gendat_nested1(): + ns = Nested_simulator() + ns.error_sd = 2. + ns.params = np.r_[0, 1, 1.3, -0.8, -1.2] + ns.ngroups = 50 + ns.nest_sizes = [10, 5] + ns.dparams = [1., 3.] + ns.simulate() + return ns, Nested(ns.id_matrix) + + +nrep = 100 + +gendats = [gen_gendat_ar0(ar) for ar in (0, 0.3, 0.6)] +gendats.extend([gen_gendat_ar1(ar) for ar in (0, 0.3, 0.6)]) +gendats.extend([gendat_nested0, gendat_nested1]) + +lhs = np.array([[0., 1, 1, 0, 0],]) +rhs = np.r_[0.,] + +# Loop over data generating models +for gendat in gendats: + + pvalues = [] + params = [] + std_errors = [] + dparams = [] + + for j in range(nrep): + + da,va = gendat() + ga = Gaussian() + + md = GEE(da.endog, da.exog, da.group, da.time, ga, va) + mdf = md.fit() + + scale_inv = 1 / md.estimate_scale() + dparams.append(np.r_[va.dparams, scale_inv]) + params.append(np.asarray(mdf.params)) + std_errors.append(np.asarray(mdf.standard_errors)) + + da,va = gendat() + ga = Gaussian() + + md = GEE(da.endog, da.exog, da.group, da.time, ga, va, + constraint=(lhs, rhs)) + mdf = md.fit() + score = md.score_test_results + pvalue = score["p-value"] + pvalues.append(pvalue) + + dparams_mean = np.array(sum(dparams) / len(dparams)) + OUT.write("Checking dependence parameters:\n") + da.print_dparams(dparams_mean) + + params = np.array(params) + eparams = params.mean(0) + sdparams = params.std(0) + std_errors = np.array(std_errors) + std_errors = std_errors.mean(0) + + OUT.write("Checking parameter values:\n") + OUT.write("Observed: ") + OUT.write(np.array_str(eparams) + "\n") + OUT.write("Expected: ") + OUT.write(np.array_str(da.params) + "\n") + OUT.write("Absolute difference: ") + OUT.write(np.array_str(eparams - da.params) + "\n") + OUT.write("Relative difference: ") + OUT.write(np.array_str((eparams - da.params) / da.params) + "\n") + OUT.write("\n") + + OUT.write("Checking standard errors\n") + OUT.write("Observed: ") + OUT.write(np.array_str(sdparams) + "\n") + OUT.write("Expected: ") + OUT.write(np.array_str(std_errors) + "\n") + OUT.write("Absolute difference: ") + OUT.write(np.array_str(sdparams - std_errors) + "\n") + OUT.write("Relative difference: ") + OUT.write(np.array_str((sdparams - std_errors) / std_errors) + "\n") + OUT.write("\n") + + pvalues.sort() + OUT.write("Checking constrained estimation:\n") + OUT.write("Left hand side:\n") + OUT.write(np.array_str(lhs) + "\n") + OUT.write("Right hand side:\n") + OUT.write(np.array_str(rhs) + "\n") + OUT.write("Observed p-values Expected Null p-values\n") + for q in np.arange(0.1, 0.91, 0.1): + OUT.write("%20.3f %20.3f\n" % (pvalues[int(q*len(pvalues))], q)) + + OUT.write("=" * 80 + "\n\n") + +OUT.close() diff --git a/statsmodels/genmod/tests/results/__init__.py b/statsmodels/genmod/tests/results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/genmod/tests/results/elastic_net.R b/statsmodels/genmod/tests/results/elastic_net.R new file mode 100644 index 0000000..e3196ac --- /dev/null +++ b/statsmodels/genmod/tests/results/elastic_net.R @@ -0,0 +1,37 @@ +library(glmnet) +library(R2nparray) + +rslt = list() + +for (dtype in c("binomial", "poisson")) { + + ik = 0 + + data = read.csv(sprintf("enet_%s.csv", dtype)) + + endog = data[, 1] + exog = data[, 2:dim(data)[2]] + exog = as.matrix(exog) + + for (k in 1:dim(exog)[2]) { + exog[,k] = exog[,k] - mean(exog[,k]) + exog[,k] = exog[,k] / sd(exog[,k]) + } + + for (alpha in c(0, 0.5, 1)) { + + fit = glmnet(exog, endog, family=dtype, intercept=FALSE, + standardize=FALSE, alpha=alpha) + + for (q in c(0.3, 0.5, 0.7)) { + ii = round(q * length(fit$lambda)) + coefs = coef(fit, s=fit$lambda[ii]) + coefs = coefs[2:length(coefs)] + rname = sprintf("rslt_%s_%d", dtype, ik) + ik = ik + 1 + rslt[[rname]] = c(alpha, fit$lambda[ii], coefs) + } + } +} + +R2nparray(rslt, fname="glmnet_r_results.py") diff --git a/statsmodels/genmod/tests/results/elastic_net_generate_tests.py b/statsmodels/genmod/tests/results/elastic_net_generate_tests.py new file mode 100644 index 0000000..753803e --- /dev/null +++ b/statsmodels/genmod/tests/results/elastic_net_generate_tests.py @@ -0,0 +1,24 @@ +import numpy as np + +""" +Generate data sets for testing elastic net fits of GLMs. +""" + +n = 200 +p = 5 + +# Logistic +exog = np.random.normal(size=(n, p)) +lin_pred = exog.sum(1) * 0.2 +exp_val = 1 / (1 + np.exp(-lin_pred)) +endog = 1 * (np.random.uniform(size=n) < exp_val) +mat = np.concatenate((endog[:, None], exog), axis=1) +np.savetxt("enet_binomial.csv", mat, fmt="%.2f", delimiter=",") + +# Poisson +exog = np.random.normal(size=(n, p)) +lin_pred = exog.sum(1) * 0.2 +exp_val = np.exp(lin_pred) +endog = np.random.poisson(exp_val) +mat = np.concatenate((endog[:, None], exog), axis=1) +np.savetxt("enet_poisson.csv", mat, fmt="%.2f", delimiter=",") diff --git a/statsmodels/genmod/tests/results/enet_binomial.csv b/statsmodels/genmod/tests/results/enet_binomial.csv new file mode 100644 index 0000000..3884d20 --- /dev/null +++ b/statsmodels/genmod/tests/results/enet_binomial.csv @@ -0,0 +1,200 @@ +0.00,0.42,0.45,0.24,-0.28,0.68 +0.00,0.62,0.12,0.94,-1.49,-0.53 +1.00,-1.32,-0.69,-0.30,0.50,0.82 +0.00,0.25,-1.27,0.28,2.00,-0.61 +1.00,0.51,0.08,0.21,1.00,-1.36 +1.00,1.88,-0.63,-0.53,-2.08,0.16 +1.00,-0.67,1.09,1.43,0.26,0.73 +0.00,-1.61,-1.07,-1.37,-0.17,0.10 +0.00,1.08,1.04,0.78,-0.62,-2.36 +1.00,-1.32,-0.69,1.24,-1.05,0.29 +0.00,-0.26,1.46,-0.92,1.75,-1.52 +1.00,-0.67,0.63,0.18,1.80,0.70 +0.00,0.12,-0.91,-1.25,-1.49,1.57 +0.00,-1.31,-0.79,0.45,-0.30,-0.98 +1.00,-0.33,1.97,-0.99,-0.23,-1.76 +0.00,1.50,0.95,0.47,-1.14,-0.92 +0.00,1.21,0.22,-0.79,-0.54,0.23 +1.00,-0.12,0.38,0.34,-0.79,-0.66 +1.00,0.32,-0.02,-0.10,1.46,-1.05 +1.00,1.44,-0.47,1.08,0.05,-0.78 +0.00,0.10,-0.57,-0.09,-0.24,-0.19 +0.00,1.30,-0.99,-1.25,-0.36,-0.20 +0.00,-0.48,-0.64,0.56,0.48,1.40 +0.00,0.28,0.39,-2.01,-1.74,-0.47 +1.00,0.51,1.81,0.81,-0.86,0.68 +1.00,-3.04,0.21,-0.67,-0.09,0.56 +1.00,1.44,0.74,0.55,1.14,0.35 +1.00,2.15,-0.07,1.84,0.75,0.03 +1.00,-3.68,1.72,1.68,0.18,-0.23 +0.00,-0.93,0.01,-0.62,0.11,-0.59 +0.00,-0.04,1.09,0.31,0.84,1.33 +0.00,0.69,0.37,-1.40,-0.12,-1.20 +1.00,-0.66,0.48,0.68,-1.03,-1.74 +0.00,0.00,1.83,-0.07,0.35,-0.92 +0.00,1.32,-2.05,1.24,1.00,-0.39 +0.00,-1.17,-1.28,0.31,1.45,1.00 +0.00,-0.64,0.35,-0.86,1.26,-2.51 +1.00,-1.16,-1.45,-0.83,-0.23,1.59 +1.00,1.34,0.57,-0.38,0.14,-0.90 +0.00,-0.01,-0.96,1.03,-2.48,-1.42 +1.00,0.06,0.19,-0.76,-0.15,0.15 +0.00,-1.00,-1.96,-1.18,-0.75,0.74 +0.00,-1.27,0.15,-0.86,-0.20,-0.39 +1.00,-0.90,2.16,1.72,-0.69,-0.68 +1.00,-1.34,1.88,-0.47,-0.28,-1.31 +1.00,-1.13,-0.74,0.09,0.52,0.06 +1.00,1.03,0.17,-1.08,1.79,-0.47 +0.00,-0.16,-0.93,0.45,-1.58,-0.38 +1.00,-0.51,0.02,-0.84,-0.68,1.24 +1.00,0.58,-0.65,0.17,1.20,-0.09 +1.00,0.65,0.42,-0.14,1.14,-0.62 +1.00,0.58,1.51,-0.10,1.55,0.99 +0.00,1.15,-0.47,-0.85,0.63,0.04 +1.00,-1.32,-0.95,0.23,2.30,0.71 +0.00,0.37,-0.04,-1.43,-0.05,-0.10 +1.00,0.50,-0.28,0.69,2.27,1.33 +0.00,-1.05,-2.08,-1.63,0.57,-0.24 +1.00,0.70,0.40,0.35,0.20,-0.11 +1.00,-0.14,-1.21,-0.04,-0.52,0.21 +1.00,-1.38,-2.20,-0.43,0.44,-0.44 +1.00,-0.77,0.23,-0.12,0.11,1.24 +0.00,0.17,-1.04,-1.90,0.26,-0.77 +1.00,1.36,0.67,0.47,0.61,1.16 +1.00,-1.70,1.42,0.77,1.77,1.68 +0.00,-0.91,-0.25,-0.40,-0.24,1.15 +0.00,-1.43,-1.82,-1.24,-1.42,-0.74 +0.00,-0.62,-0.71,-3.27,0.86,0.73 +0.00,-0.66,-0.50,0.34,-0.41,-1.24 +0.00,-0.65,-2.60,0.80,0.64,0.10 +1.00,0.63,-0.29,1.92,0.50,0.51 +0.00,-0.27,0.12,-1.15,0.19,-1.93 +1.00,-1.27,-1.13,-1.23,1.63,1.30 +0.00,-0.68,0.47,-0.27,1.25,-0.29 +0.00,-1.88,-1.73,-0.32,0.67,-0.94 +1.00,0.73,0.62,-1.24,0.16,-0.24 +0.00,-0.54,-1.90,-0.45,1.56,1.27 +1.00,1.28,-0.12,-0.53,1.03,0.91 +0.00,-0.07,-0.11,-2.01,-0.34,-0.61 +1.00,-0.21,-0.02,1.21,-0.16,0.34 +1.00,1.10,-1.87,-0.51,-0.63,0.81 +1.00,2.25,-1.74,-0.88,-0.53,0.53 +1.00,-1.34,0.60,0.03,0.35,0.85 +0.00,-1.04,-0.84,-0.24,-1.17,-1.57 +0.00,1.88,-0.66,0.87,-0.46,0.17 +0.00,-2.24,-0.81,-0.36,1.00,0.12 +0.00,-1.28,0.77,-0.64,-1.20,-0.24 +1.00,1.31,-1.58,0.15,-0.83,0.91 +1.00,0.56,-0.89,-0.01,-0.05,1.59 +0.00,-0.17,-0.18,-0.20,0.87,-0.53 +0.00,0.54,0.58,0.41,1.58,0.77 +0.00,-0.53,-0.24,-0.49,-0.35,-0.04 +1.00,0.79,0.54,-0.27,0.28,-0.26 +0.00,-1.20,-1.04,-0.69,-1.32,0.76 +1.00,0.21,0.06,-0.37,0.87,-0.75 +0.00,0.70,1.24,0.75,-0.17,-0.78 +1.00,0.20,1.47,-0.70,-2.32,-0.76 +1.00,-0.20,-1.14,1.11,-2.40,-0.38 +0.00,0.43,0.35,0.43,-1.37,-0.40 +0.00,-0.27,0.64,0.54,-0.65,-0.48 +1.00,1.07,0.77,-0.44,-0.05,-0.41 +1.00,-0.51,-1.70,-0.46,-1.45,0.54 +0.00,-1.23,-0.34,-1.83,-1.21,-1.57 +0.00,0.11,-0.68,0.65,0.25,0.14 +0.00,-0.04,-0.81,1.11,0.41,0.47 +1.00,-0.90,0.57,-0.92,0.51,-0.58 +1.00,1.34,-1.06,0.33,-0.50,-0.22 +0.00,-0.91,-1.85,0.02,-1.67,-0.73 +0.00,-1.43,-0.42,1.75,-0.49,0.08 +1.00,0.75,0.14,-0.55,0.03,-0.82 +0.00,2.21,-0.48,-2.20,-1.09,1.67 +1.00,0.71,-1.50,-0.71,0.05,2.14 +1.00,-2.32,0.26,-0.69,-1.01,0.27 +1.00,-0.38,0.59,1.06,0.74,-0.03 +1.00,-0.99,-0.17,-0.08,-0.76,-0.11 +0.00,1.29,-1.86,0.33,0.16,-0.06 +0.00,0.58,-1.56,-0.97,0.42,1.93 +0.00,-0.96,-0.20,-1.60,-0.47,0.53 +0.00,0.82,0.12,-0.56,1.02,0.85 +0.00,-1.38,-0.13,0.94,0.40,0.70 +0.00,-0.58,-1.20,-1.64,0.03,-0.85 +0.00,-0.52,-0.76,0.44,1.26,0.55 +1.00,-1.28,0.61,-0.35,-1.13,-0.12 +1.00,-1.20,2.10,0.62,-1.67,-0.33 +0.00,-0.90,-0.69,-0.98,-1.63,0.84 +1.00,1.75,2.48,-0.04,0.00,0.25 +0.00,-0.48,1.86,-2.13,0.87,-0.20 +1.00,0.22,0.66,0.59,0.79,2.09 +1.00,0.52,1.85,-0.32,-0.78,-0.77 +0.00,1.00,-0.59,-1.02,1.88,0.60 +1.00,-1.33,0.05,-0.07,0.96,1.66 +0.00,-0.13,0.88,0.25,-0.20,1.22 +1.00,-0.55,-0.62,-0.81,0.16,0.75 +1.00,-0.60,1.66,-0.90,1.04,1.07 +1.00,2.19,0.83,0.03,-2.03,0.19 +1.00,1.27,-2.35,1.26,-0.56,-0.79 +1.00,1.20,-0.71,-0.37,-0.30,2.33 +0.00,0.17,-1.56,1.28,0.16,-0.06 +1.00,0.04,-0.52,1.09,-1.00,0.46 +1.00,0.75,-0.58,0.15,-1.85,-0.36 +1.00,0.68,1.69,1.54,0.60,0.47 +1.00,-0.38,0.66,1.25,0.18,0.59 +1.00,-0.28,1.11,1.86,0.37,-0.53 +0.00,1.25,-1.66,1.22,-0.69,-0.47 +0.00,-1.14,-0.42,0.88,0.64,0.41 +0.00,0.39,0.91,0.15,0.30,0.34 +0.00,0.96,-0.68,1.63,-0.30,0.01 +0.00,-0.39,-1.36,0.71,-1.62,0.65 +0.00,0.04,-0.98,0.63,0.61,0.33 +0.00,-0.27,1.83,-1.77,0.91,0.79 +0.00,-0.80,-0.01,-0.81,-0.73,0.51 +0.00,-0.86,-1.16,-0.98,-0.54,1.07 +1.00,0.12,-0.35,0.97,1.27,-0.65 +1.00,-0.50,-1.27,0.53,2.28,1.71 +1.00,0.22,-0.10,0.28,0.10,1.48 +0.00,-0.10,-0.56,0.34,-0.25,0.85 +0.00,0.05,-0.97,-2.22,0.72,-0.69 +0.00,-0.20,0.19,-1.82,1.34,-1.21 +1.00,-0.36,0.23,-0.33,0.13,0.21 +1.00,-0.39,-1.46,-0.82,0.27,0.57 +1.00,-0.12,-1.23,-1.97,0.81,-0.08 +0.00,0.54,1.61,-0.27,-0.97,-0.70 +0.00,-0.20,-0.82,0.61,-2.51,-0.53 +1.00,-0.23,0.68,1.84,2.21,0.30 +1.00,-0.80,0.63,-0.12,-1.27,-0.17 +1.00,0.81,-0.14,1.02,0.20,-0.16 +1.00,1.52,-1.64,-0.31,0.84,-0.41 +1.00,-0.14,0.63,0.39,-0.01,-0.17 +0.00,0.62,1.66,0.60,-1.59,-1.81 +0.00,-1.14,0.27,0.16,-0.94,-0.11 +1.00,-1.13,-0.45,1.02,-1.19,-0.45 +0.00,0.38,0.04,-0.26,0.71,0.42 +1.00,1.35,0.23,-1.55,-1.19,-2.59 +1.00,0.87,0.57,-0.51,-0.70,-0.29 +0.00,-0.60,0.06,-0.34,0.43,-0.34 +0.00,0.80,-0.07,1.16,-0.54,-2.22 +0.00,0.70,-1.24,-1.00,-1.43,-0.92 +1.00,-1.11,-0.92,-0.51,-0.93,-0.18 +1.00,-0.29,-0.69,0.41,0.84,1.10 +1.00,0.45,0.92,-0.83,1.22,0.64 +0.00,-0.83,-0.74,1.30,-0.79,0.96 +1.00,-0.41,0.24,-0.12,-0.96,-0.51 +0.00,0.52,-1.95,-0.44,1.06,-0.69 +1.00,-0.54,1.29,1.56,1.16,-1.01 +1.00,-0.39,-0.41,0.25,-0.22,0.45 +0.00,-0.97,0.90,-0.17,0.01,0.03 +1.00,-2.52,1.53,-3.83,2.25,-0.13 +1.00,0.42,-0.44,3.15,-1.38,-1.99 +1.00,1.38,-0.39,-0.54,-0.37,1.21 +1.00,-1.21,1.33,0.99,-1.83,0.80 +0.00,-0.39,-0.50,0.68,-0.39,-0.13 +0.00,-1.36,-0.00,0.35,-1.09,0.60 +0.00,-0.22,-0.02,0.92,0.35,0.07 +1.00,-0.58,-0.34,-1.03,-1.53,0.81 +1.00,-0.07,-1.50,-0.04,0.86,0.78 +0.00,-0.89,-1.18,-0.21,-1.15,0.40 +0.00,0.31,-0.97,-0.09,0.67,0.33 +0.00,1.15,0.43,-0.43,-0.54,-1.09 +1.00,-0.78,0.44,0.44,0.54,1.40 +1.00,-1.08,-0.68,0.26,-0.26,-2.14 +0.00,0.27,2.21,-0.58,-0.37,0.84 diff --git a/statsmodels/genmod/tests/results/enet_poisson.csv b/statsmodels/genmod/tests/results/enet_poisson.csv new file mode 100644 index 0000000..ae86b45 --- /dev/null +++ b/statsmodels/genmod/tests/results/enet_poisson.csv @@ -0,0 +1,200 @@ +0.00,-0.55,0.38,1.26,-1.33,-0.74 +1.00,0.74,0.89,-1.55,-0.26,-0.81 +1.00,0.71,0.64,2.57,-2.68,0.50 +0.00,-0.98,0.47,0.17,0.32,-2.49 +2.00,0.18,-0.52,-1.01,0.04,-0.87 +1.00,0.39,0.54,0.19,0.76,-0.91 +0.00,-0.35,0.30,-2.02,-0.16,-1.16 +0.00,-2.13,-0.60,-1.42,0.47,0.13 +1.00,0.04,-0.81,1.61,0.91,1.04 +1.00,-1.06,0.40,-1.11,1.76,-0.65 +0.00,-1.82,0.20,-1.87,-0.38,-1.54 +1.00,-0.11,-0.15,-0.99,2.31,-1.11 +1.00,-0.17,-0.37,-0.85,0.07,2.76 +1.00,1.28,-1.07,-0.26,0.62,0.96 +3.00,-0.59,1.92,1.04,-0.48,0.69 +1.00,0.42,0.05,1.47,-0.74,0.91 +3.00,0.76,1.23,1.53,-1.09,3.17 +0.00,0.23,0.28,0.60,1.13,0.05 +3.00,1.10,-1.38,0.27,0.82,0.47 +0.00,-0.87,-0.78,-0.47,1.55,-1.25 +1.00,0.22,-0.46,-0.10,-2.41,2.14 +1.00,-2.31,0.31,-1.17,-0.52,1.06 +1.00,-1.42,1.02,2.48,-0.11,1.07 +1.00,0.28,1.25,0.83,0.48,-1.04 +0.00,-0.48,0.24,-0.44,1.00,1.06 +3.00,-0.30,-0.92,0.96,0.33,2.13 +0.00,1.20,-0.39,0.03,-0.55,-1.21 +1.00,-0.10,-0.68,0.11,-1.40,-0.35 +1.00,-1.16,0.73,-0.53,0.14,0.08 +1.00,-1.74,-0.43,-0.84,0.35,-2.00 +2.00,0.48,0.33,0.46,0.34,-0.14 +2.00,-0.41,0.13,0.65,-0.76,1.13 +3.00,0.61,-0.48,1.36,1.34,0.68 +0.00,1.12,-2.13,-0.99,-1.13,-0.29 +2.00,-1.71,0.91,-0.63,0.48,-0.48 +1.00,-1.19,0.02,-0.21,0.51,0.67 +3.00,1.09,-0.63,0.82,-0.27,-1.37 +3.00,1.46,1.03,-0.84,-0.66,-0.38 +5.00,1.84,1.02,1.67,-0.97,0.69 +2.00,0.30,1.62,-1.31,2.28,-0.43 +0.00,0.50,-0.04,-0.99,0.24,-0.86 +0.00,-0.75,1.09,0.22,1.85,0.77 +1.00,1.36,-0.40,-0.52,0.15,-0.18 +2.00,-1.14,0.19,0.36,0.60,-2.80 +1.00,0.54,-1.31,-0.34,-1.65,1.17 +0.00,1.82,-0.44,-0.76,0.99,-0.24 +0.00,-0.19,-0.41,1.63,1.14,-0.50 +4.00,1.01,0.72,0.97,0.90,1.68 +1.00,-1.40,0.12,1.25,1.86,-0.14 +0.00,-0.36,0.64,0.23,-0.71,-2.03 +2.00,0.00,0.92,-0.16,0.08,0.47 +1.00,-0.38,-2.33,1.56,-0.86,-0.31 +0.00,-1.03,-1.43,0.72,0.97,-1.50 +4.00,0.97,1.11,-0.89,0.29,0.89 +0.00,0.66,-1.89,-1.69,1.10,-1.02 +1.00,0.24,0.47,-1.71,1.10,-1.43 +0.00,-0.14,-0.69,0.38,-0.50,-0.11 +2.00,0.02,0.88,-1.96,-0.12,0.94 +2.00,-0.38,-0.27,1.16,0.48,1.98 +1.00,0.22,1.57,-0.77,0.53,0.88 +4.00,0.13,0.49,1.35,-0.23,1.48 +2.00,0.41,-2.89,1.12,-0.00,1.79 +1.00,-1.47,1.51,0.11,0.41,0.68 +2.00,-0.58,1.42,0.43,0.62,1.34 +1.00,0.35,0.71,0.30,-2.30,1.33 +2.00,0.42,-0.55,2.37,0.76,0.70 +1.00,-0.65,0.19,-1.47,-0.08,-0.63 +1.00,-0.75,-1.08,-0.14,1.10,-1.14 +3.00,1.48,-1.65,0.97,-0.25,-0.48 +4.00,-0.42,-1.86,-1.33,-0.63,0.28 +2.00,1.61,-1.08,-0.18,-1.78,0.49 +2.00,-0.45,0.02,1.47,0.80,0.58 +1.00,-1.11,1.13,0.17,1.12,0.49 +1.00,1.61,0.16,1.27,-1.95,-0.00 +4.00,-0.67,0.76,1.21,2.99,-0.07 +0.00,-0.16,-0.75,-0.38,-0.71,-1.44 +2.00,-0.29,0.61,0.88,-0.11,0.31 +0.00,-0.14,0.03,-0.63,-1.06,-0.01 +0.00,0.68,0.53,-0.84,1.04,-1.03 +1.00,-0.96,1.24,0.57,-0.01,0.34 +2.00,-0.01,-0.11,0.19,0.46,0.23 +0.00,1.66,-1.70,-0.25,1.15,-0.84 +0.00,-1.43,0.61,-0.84,2.37,0.35 +0.00,-0.08,-1.17,1.60,-0.85,-2.67 +1.00,0.85,0.70,1.40,-0.46,-0.87 +0.00,-0.22,-0.88,-1.94,0.37,1.33 +2.00,-0.84,1.32,-1.02,-0.21,0.93 +3.00,-1.25,0.65,0.75,1.01,-1.05 +0.00,0.84,-1.04,0.08,-0.24,1.48 +0.00,0.32,-0.69,0.83,-0.29,-1.36 +0.00,0.72,-0.44,-1.80,-0.37,0.33 +0.00,-2.29,-0.09,0.28,-0.99,0.85 +2.00,1.01,-1.89,0.66,-0.11,-0.19 +1.00,0.07,-0.78,-0.65,0.87,1.86 +1.00,0.13,-1.87,0.38,-0.84,-0.38 +1.00,1.14,-0.59,1.22,2.11,1.43 +0.00,-1.29,1.29,0.87,-1.83,1.59 +0.00,-1.14,-2.02,0.17,0.08,-2.81 +1.00,-0.02,-1.71,2.18,0.66,1.10 +1.00,-0.69,-0.79,0.27,0.14,-1.79 +2.00,-0.22,-0.65,-0.09,1.15,-0.47 +0.00,-0.35,0.12,0.36,-0.00,1.00 +0.00,-0.47,1.60,-1.96,0.11,0.88 +2.00,0.29,0.33,0.73,-0.55,0.34 +0.00,-0.25,-1.42,0.76,-1.71,-0.60 +2.00,-0.48,0.83,0.19,-1.23,-0.61 +1.00,-2.01,0.45,-0.78,0.64,1.34 +1.00,-0.34,-2.13,1.11,0.30,-1.44 +0.00,-1.29,1.85,1.03,2.08,-0.67 +1.00,1.44,-0.45,-0.58,0.76,1.95 +1.00,-0.07,-0.15,0.19,2.36,0.60 +1.00,0.37,1.25,-0.67,1.64,-1.62 +4.00,0.51,-0.72,0.82,-0.02,1.77 +1.00,-0.26,-0.14,0.05,1.64,0.72 +2.00,1.88,0.38,-0.50,0.67,0.55 +2.00,-1.71,-1.24,0.44,1.06,1.13 +1.00,0.30,1.03,-0.50,0.88,0.78 +2.00,-0.15,1.82,-0.96,0.14,-0.31 +0.00,0.88,-0.33,-1.65,-1.40,-0.09 +1.00,0.97,-0.95,-0.94,-1.24,-0.31 +1.00,1.29,-1.08,0.01,0.39,0.49 +2.00,-0.22,0.27,1.00,0.47,0.25 +0.00,-0.11,-1.03,-1.13,-2.08,-0.15 +1.00,0.31,-1.72,0.23,1.15,0.74 +3.00,0.04,0.92,1.23,-0.51,-0.76 +0.00,-0.79,0.91,-1.62,-0.01,-0.79 +5.00,1.37,-0.86,2.21,0.87,0.23 +2.00,1.35,-0.51,-2.27,0.46,1.89 +0.00,1.17,-0.37,0.60,1.29,-0.44 +2.00,-0.46,-1.17,1.10,1.61,0.38 +0.00,0.82,0.66,-0.48,-0.52,0.36 +0.00,-1.04,-0.38,-2.27,-0.51,-1.08 +4.00,0.18,-0.20,0.48,1.22,1.19 +6.00,1.58,0.59,0.56,0.04,0.34 +2.00,1.99,0.31,0.77,0.23,-0.12 +1.00,-0.89,1.15,-0.97,0.29,0.60 +0.00,0.08,0.18,1.04,1.09,0.21 +1.00,0.13,-1.82,1.29,1.21,1.16 +1.00,1.60,0.76,-0.37,0.69,-1.22 +0.00,1.43,-0.60,-1.89,-1.00,0.78 +0.00,-0.37,-0.40,0.17,-0.64,0.31 +0.00,0.39,0.90,-0.97,-0.47,0.87 +2.00,0.98,-0.64,-1.86,0.68,0.60 +0.00,1.05,-0.40,0.24,-0.65,0.69 +2.00,1.28,-0.66,1.18,-0.64,0.90 +0.00,-0.03,-1.60,-0.76,-0.46,-0.57 +3.00,1.81,-0.33,-0.25,1.47,1.59 +3.00,0.94,-1.43,0.54,0.31,0.03 +1.00,-0.85,1.07,0.98,-2.15,-0.79 +3.00,1.60,-1.28,1.15,0.10,-0.33 +1.00,2.01,-0.29,1.21,0.50,-1.70 +1.00,-1.23,1.40,-1.12,-1.08,0.25 +0.00,0.01,2.06,0.57,-0.42,-0.56 +1.00,-0.45,0.75,1.28,-0.39,0.30 +1.00,-0.08,-1.03,0.64,-0.02,0.78 +0.00,1.13,0.08,0.16,0.73,-0.09 +2.00,-2.34,0.61,0.44,0.90,0.65 +0.00,-2.00,1.51,-1.33,1.11,-0.59 +0.00,-0.50,-0.01,0.67,-0.19,0.50 +1.00,-0.89,0.61,0.36,1.33,0.69 +0.00,0.92,1.10,-0.47,-1.66,0.64 +2.00,0.80,-0.24,-0.91,1.46,1.74 +2.00,0.69,-0.20,-0.91,-0.91,0.21 +0.00,-0.46,0.43,0.47,0.40,-0.58 +1.00,1.24,-0.76,-0.41,0.88,-0.27 +0.00,-0.15,-1.04,0.63,0.51,-2.06 +2.00,-1.55,-0.59,1.03,-0.31,1.49 +1.00,0.23,-0.45,0.60,0.22,-1.05 +2.00,-0.21,-1.30,1.60,-0.72,1.09 +2.00,0.35,-1.89,1.42,-1.77,-0.14 +0.00,-2.33,0.16,-1.60,-1.17,-0.16 +0.00,0.37,-1.10,0.43,1.19,-1.41 +4.00,-0.32,1.94,0.49,0.14,1.12 +1.00,-1.03,1.27,0.49,-0.55,0.07 +2.00,-0.83,0.66,1.13,0.16,-1.13 +0.00,-1.17,-0.10,-0.09,-0.09,-0.49 +0.00,-1.17,-0.07,-0.10,1.42,-1.77 +0.00,1.66,-1.07,-0.96,1.12,-1.98 +0.00,2.75,1.14,-0.05,0.58,0.14 +1.00,-1.06,0.66,-0.98,1.17,0.02 +0.00,-1.02,-0.36,0.06,0.67,-0.29 +2.00,0.28,0.73,-0.62,-0.56,1.98 +0.00,-0.17,-2.83,-1.42,-0.19,-0.77 +2.00,1.64,-0.91,-1.54,-2.04,1.41 +1.00,1.48,0.46,-0.46,-0.71,-1.07 +0.00,0.02,0.93,2.02,-0.84,1.44 +1.00,0.13,-0.27,1.43,0.22,-1.15 +1.00,0.26,-1.04,0.11,0.18,0.46 +2.00,0.51,-1.22,-0.03,0.11,0.86 +3.00,-1.07,-1.32,-0.11,-0.03,-0.11 +4.00,-1.67,1.23,0.01,-0.85,-0.45 +1.00,0.99,1.07,-0.37,0.38,0.95 +1.00,-1.77,-0.72,-0.54,-0.05,1.08 +0.00,-0.80,-0.03,-0.00,0.92,1.12 +2.00,-0.77,-0.08,-0.41,2.02,-0.62 +0.00,0.80,0.03,0.90,-1.62,-0.40 +0.00,1.06,1.06,-0.73,-0.11,0.04 +1.00,0.25,-0.36,-0.44,0.40,-0.13 +1.00,0.38,-0.47,-1.65,0.47,-0.13 +5.00,1.12,0.34,-0.87,1.43,0.07 diff --git a/statsmodels/genmod/tests/results/epil.csv b/statsmodels/genmod/tests/results/epil.csv new file mode 100644 index 0000000..829c4ec --- /dev/null +++ b/statsmodels/genmod/tests/results/epil.csv @@ -0,0 +1,237 @@ +"","y","trt","base","age","V4","subject","period","lbase","lage" +"1",5,"placebo",11,31,0,1,1,-0.756353788717556,0.114203695299265 +"2",3,"placebo",11,31,0,1,2,-0.756353788717556,0.114203695299265 +"3",3,"placebo",11,31,0,1,3,-0.756353788717556,0.114203695299265 +"4",3,"placebo",11,31,1,1,4,-0.756353788717556,0.114203695299265 +"5",3,"placebo",11,30,0,2,1,-0.756353788717556,0.0814138724762743 +"6",5,"placebo",11,30,0,2,2,-0.756353788717556,0.0814138724762743 +"7",3,"placebo",11,30,0,2,3,-0.756353788717556,0.0814138724762743 +"8",3,"placebo",11,30,1,2,4,-0.756353788717556,0.0814138724762743 +"9",2,"placebo",6,25,0,3,1,-1.36248959228787,-0.10090768431768 +"10",4,"placebo",6,25,0,3,2,-1.36248959228787,-0.10090768431768 +"11",0,"placebo",6,25,0,3,3,-1.36248959228787,-0.10090768431768 +"12",5,"placebo",6,25,1,3,4,-1.36248959228787,-0.10090768431768 +"13",4,"placebo",8,36,0,4,1,-1.07480751983609,0.263735429270229 +"14",4,"placebo",8,36,0,4,2,-1.07480751983609,0.263735429270229 +"15",1,"placebo",8,36,0,4,3,-1.07480751983609,0.263735429270229 +"16",4,"placebo",8,36,1,4,4,-1.07480751983609,0.263735429270229 +"17",7,"placebo",66,22,0,5,1,1.0354056805105,-0.228741055827565 +"18",18,"placebo",66,22,0,5,2,1.0354056805105,-0.228741055827565 +"19",9,"placebo",66,22,0,5,3,1.0354056805105,-0.228741055827565 +"20",21,"placebo",66,22,1,5,4,1.0354056805105,-0.228741055827565 +"21",5,"placebo",27,29,0,6,1,0.141587804488402,0.047512320800593 +"22",2,"placebo",27,29,0,6,2,0.141587804488402,0.047512320800593 +"23",8,"placebo",27,29,0,6,3,0.141587804488402,0.047512320800593 +"24",7,"placebo",27,29,1,6,4,0.141587804488402,0.047512320800593 +"25",6,"placebo",12,31,0,7,1,-0.669342411727926,0.114203695299265 +"26",4,"placebo",12,31,0,7,2,-0.669342411727926,0.114203695299265 +"27",0,"placebo",12,31,0,7,3,-0.669342411727926,0.114203695299265 +"28",2,"placebo",12,31,1,7,4,-0.669342411727926,0.114203695299265 +"29",40,"placebo",52,42,0,8,1,0.796994657065501,0.417886109097487 +"30",20,"placebo",52,42,0,8,2,0.796994657065501,0.417886109097487 +"31",21,"placebo",52,42,0,8,3,0.796994657065501,0.417886109097487 +"32",12,"placebo",52,42,1,8,4,0.796994657065501,0.417886109097487 +"33",5,"placebo",23,37,0,9,1,-0.018754845586777,0.291134403458343 +"34",6,"placebo",23,37,0,9,2,-0.018754845586777,0.291134403458343 +"35",6,"placebo",23,37,0,9,3,-0.018754845586777,0.291134403458343 +"36",5,"placebo",23,37,1,9,4,-0.018754845586777,0.291134403458343 +"37",14,"placebo",10,28,0,10,1,-0.851663968521881,0.0124210009893226 +"38",13,"placebo",10,28,0,10,2,-0.851663968521881,0.0124210009893226 +"39",6,"placebo",10,28,0,10,3,-0.851663968521881,0.0124210009893226 +"40",0,"placebo",10,28,1,10,4,-0.851663968521881,0.0124210009893226 +"41",26,"placebo",52,36,0,11,1,0.796994657065501,0.263735429270229 +"42",12,"placebo",52,36,0,11,2,0.796994657065501,0.263735429270229 +"43",6,"placebo",52,36,0,11,3,0.796994657065501,0.263735429270229 +"44",22,"placebo",52,36,1,11,4,0.796994657065501,0.263735429270229 +"45",12,"placebo",33,24,0,12,1,0.342258499950553,-0.141729678837935 +"46",6,"placebo",33,24,0,12,2,0.342258499950553,-0.141729678837935 +"47",8,"placebo",33,24,0,12,3,0.342258499950553,-0.141729678837935 +"48",4,"placebo",33,24,1,12,4,0.342258499950553,-0.141729678837935 +"49",4,"placebo",18,23,0,13,1,-0.263877303619762,-0.184289293256731 +"50",4,"placebo",18,23,0,13,2,-0.263877303619762,-0.184289293256731 +"51",6,"placebo",18,23,0,13,3,-0.263877303619762,-0.184289293256731 +"52",2,"placebo",18,23,1,13,4,-0.263877303619762,-0.184289293256731 +"53",7,"placebo",42,36,0,14,1,0.583420556767442,0.263735429270229 +"54",9,"placebo",42,36,0,14,2,0.583420556767442,0.263735429270229 +"55",12,"placebo",42,36,0,14,3,0.583420556767442,0.263735429270229 +"56",14,"placebo",42,36,1,14,4,0.583420556767442,0.263735429270229 +"57",16,"placebo",87,26,0,15,1,1.31165905713866,-0.061686971164399 +"58",24,"placebo",87,26,0,15,2,1.31165905713866,-0.061686971164399 +"59",10,"placebo",87,26,0,15,3,1.31165905713866,-0.061686971164399 +"60",9,"placebo",87,26,1,15,4,1.31165905713866,-0.061686971164399 +"61",11,"placebo",50,26,0,16,1,0.75777394391222,-0.061686971164399 +"62",0,"placebo",50,26,0,16,2,0.75777394391222,-0.061686971164399 +"63",0,"placebo",50,26,0,16,3,0.75777394391222,-0.061686971164399 +"64",5,"placebo",50,26,1,16,4,0.75777394391222,-0.061686971164399 +"65",0,"placebo",18,28,0,17,1,-0.263877303619762,0.0124210009893226 +"66",0,"placebo",18,28,0,17,2,-0.263877303619762,0.0124210009893226 +"67",3,"placebo",18,28,0,17,3,-0.263877303619762,0.0124210009893226 +"68",3,"placebo",18,28,1,17,4,-0.263877303619762,0.0124210009893226 +"69",37,"placebo",111,31,0,18,1,1.55528113979641,0.114203695299265 +"70",29,"placebo",111,31,0,18,2,1.55528113979641,0.114203695299265 +"71",28,"placebo",111,31,0,18,3,1.55528113979641,0.114203695299265 +"72",29,"placebo",111,31,1,18,4,1.55528113979641,0.114203695299265 +"73",3,"placebo",18,32,0,19,1,-0.263877303619762,0.145952393613845 +"74",5,"placebo",18,32,0,19,2,-0.263877303619762,0.145952393613845 +"75",2,"placebo",18,32,0,19,3,-0.263877303619762,0.145952393613845 +"76",5,"placebo",18,32,1,19,4,-0.263877303619762,0.145952393613845 +"77",3,"placebo",20,21,0,20,1,-0.158516787961936,-0.275261071462458 +"78",0,"placebo",20,21,0,20,2,-0.158516787961936,-0.275261071462458 +"79",6,"placebo",20,21,0,20,3,-0.158516787961936,-0.275261071462458 +"80",7,"placebo",20,21,1,20,4,-0.158516787961936,-0.275261071462458 +"81",3,"placebo",12,29,0,21,1,-0.669342411727926,0.047512320800593 +"82",4,"placebo",12,29,0,21,2,-0.669342411727926,0.047512320800593 +"83",3,"placebo",12,29,0,21,3,-0.669342411727926,0.047512320800593 +"84",4,"placebo",12,29,1,21,4,-0.669342411727926,0.047512320800593 +"85",3,"placebo",9,21,0,22,1,-0.957024484179707,-0.275261071462458 +"86",4,"placebo",9,21,0,22,2,-0.957024484179707,-0.275261071462458 +"87",3,"placebo",9,21,0,22,3,-0.957024484179707,-0.275261071462458 +"88",4,"placebo",9,21,1,22,4,-0.957024484179707,-0.275261071462458 +"89",2,"placebo",17,32,0,23,1,-0.321035717459711,0.145952393613845 +"90",3,"placebo",17,32,0,23,2,-0.321035717459711,0.145952393613845 +"91",3,"placebo",17,32,0,23,3,-0.321035717459711,0.145952393613845 +"92",5,"placebo",17,32,1,23,4,-0.321035717459711,0.145952393613845 +"93",8,"placebo",28,25,0,24,1,0.177955448659277,-0.10090768431768 +"94",12,"placebo",28,25,0,24,2,0.177955448659277,-0.10090768431768 +"95",2,"placebo",28,25,0,24,3,0.177955448659277,-0.10090768431768 +"96",8,"placebo",28,25,1,24,4,0.177955448659277,-0.10090768431768 +"97",18,"placebo",55,30,0,25,1,0.853084123716544,0.0814138724762743 +"98",24,"placebo",55,30,0,25,2,0.853084123716544,0.0814138724762743 +"99",76,"placebo",55,30,0,25,3,0.853084123716544,0.0814138724762743 +"100",25,"placebo",55,30,1,25,4,0.853084123716544,0.0814138724762743 +"101",2,"placebo",9,40,0,26,1,-0.957024484179707,0.369095944928055 +"102",1,"placebo",9,40,0,26,2,-0.957024484179707,0.369095944928055 +"103",2,"placebo",9,40,0,26,3,-0.957024484179707,0.369095944928055 +"104",1,"placebo",9,40,1,26,4,-0.957024484179707,0.369095944928055 +"105",3,"placebo",10,19,0,27,1,-0.851663968521881,-0.375344530019441 +"106",1,"placebo",10,19,0,27,2,-0.851663968521881,-0.375344530019441 +"107",4,"placebo",10,19,0,27,3,-0.851663968521881,-0.375344530019441 +"108",2,"placebo",10,19,1,27,4,-0.851663968521881,-0.375344530019441 +"109",13,"placebo",47,22,0,28,1,0.695898540194132,-0.228741055827565 +"110",15,"placebo",47,22,0,28,2,0.695898540194132,-0.228741055827565 +"111",13,"placebo",47,22,0,28,3,0.695898540194132,-0.228741055827565 +"112",12,"placebo",47,22,1,28,4,0.695898540194132,-0.228741055827565 +"113",11,"progabide",76,18,0,29,1,1.1764842787704,-0.429411751289717 +"114",14,"progabide",76,18,0,29,2,1.1764842787704,-0.429411751289717 +"115",9,"progabide",76,18,0,29,3,1.1764842787704,-0.429411751289717 +"116",8,"progabide",76,18,1,29,4,1.1764842787704,-0.429411751289717 +"117",8,"progabide",38,32,0,30,1,0.483337098210459,0.145952393613845 +"118",7,"progabide",38,32,0,30,2,0.483337098210459,0.145952393613845 +"119",9,"progabide",38,32,0,30,3,0.483337098210459,0.145952393613845 +"120",4,"progabide",38,32,1,30,4,0.483337098210459,0.145952393613845 +"121",0,"progabide",19,20,0,31,1,-0.209810082349486,-0.32405123563189 +"122",4,"progabide",19,20,0,31,2,-0.209810082349486,-0.32405123563189 +"123",3,"progabide",19,20,0,31,3,-0.209810082349486,-0.32405123563189 +"124",0,"progabide",19,20,1,31,4,-0.209810082349486,-0.32405123563189 +"125",3,"progabide",10,30,0,32,1,-0.851663968521881,0.0814138724762743 +"126",6,"progabide",10,30,0,32,2,-0.851663968521881,0.0814138724762743 +"127",1,"progabide",10,30,0,32,3,-0.851663968521881,0.0814138724762743 +"128",3,"progabide",10,30,1,32,4,-0.851663968521881,0.0814138724762743 +"129",2,"progabide",19,18,0,33,1,-0.209810082349486,-0.429411751289717 +"130",6,"progabide",19,18,0,33,2,-0.209810082349486,-0.429411751289717 +"131",7,"progabide",19,18,0,33,3,-0.209810082349486,-0.429411751289717 +"132",4,"progabide",19,18,1,33,4,-0.209810082349486,-0.429411751289717 +"133",4,"progabide",24,24,0,34,1,0.0238047688320189,-0.141729678837935 +"134",3,"progabide",24,24,0,34,2,0.0238047688320189,-0.141729678837935 +"135",1,"progabide",24,24,0,34,3,0.0238047688320189,-0.141729678837935 +"136",3,"progabide",24,24,1,34,4,0.0238047688320189,-0.141729678837935 +"137",22,"progabide",31,30,0,35,1,0.279738142969219,0.0814138724762743 +"138",17,"progabide",31,30,0,35,2,0.279738142969219,0.0814138724762743 +"139",19,"progabide",31,30,0,35,3,0.279738142969219,0.0814138724762743 +"140",16,"progabide",31,30,1,35,4,0.279738142969219,0.0814138724762743 +"141",5,"progabide",14,35,0,36,1,-0.515191731900668,0.235564552303532 +"142",4,"progabide",14,35,0,36,2,-0.515191731900668,0.235564552303532 +"143",7,"progabide",14,35,0,36,3,-0.515191731900668,0.235564552303532 +"144",4,"progabide",14,35,1,36,4,-0.515191731900668,0.235564552303532 +"145",2,"progabide",11,27,0,37,1,-0.756353788717556,-0.023946643181552 +"146",4,"progabide",11,27,0,37,2,-0.756353788717556,-0.023946643181552 +"147",0,"progabide",11,27,0,37,3,-0.756353788717556,-0.023946643181552 +"148",4,"progabide",11,27,1,37,4,-0.756353788717556,-0.023946643181552 +"149",3,"progabide",67,20,0,38,1,1.05044355787504,-0.32405123563189 +"150",7,"progabide",67,20,0,38,2,1.05044355787504,-0.32405123563189 +"151",7,"progabide",67,20,0,38,3,1.05044355787504,-0.32405123563189 +"152",7,"progabide",67,20,1,38,4,1.05044355787504,-0.32405123563189 +"153",4,"progabide",41,22,0,39,1,0.559323005188381,-0.228741055827565 +"154",18,"progabide",41,22,0,39,2,0.559323005188381,-0.228741055827565 +"155",2,"progabide",41,22,0,39,3,0.559323005188381,-0.228741055827565 +"156",5,"progabide",41,22,1,39,4,0.559323005188381,-0.228741055827565 +"157",2,"progabide",7,28,0,40,1,-1.20833891246061,0.0124210009893226 +"158",1,"progabide",7,28,0,40,2,-1.20833891246061,0.0124210009893226 +"159",1,"progabide",7,28,0,40,3,-1.20833891246061,0.0124210009893226 +"160",0,"progabide",7,28,1,40,4,-1.20833891246061,0.0124210009893226 +"161",0,"progabide",22,23,0,41,1,-0.0632066081576108,-0.184289293256731 +"162",2,"progabide",22,23,0,41,2,-0.0632066081576108,-0.184289293256731 +"163",4,"progabide",22,23,0,41,3,-0.0632066081576108,-0.184289293256731 +"164",0,"progabide",22,23,1,41,4,-0.0632066081576108,-0.184289293256731 +"165",5,"progabide",13,40,0,42,1,-0.58929970405439,0.369095944928055 +"166",4,"progabide",13,40,0,42,2,-0.58929970405439,0.369095944928055 +"167",0,"progabide",13,40,0,42,3,-0.58929970405439,0.369095944928055 +"168",3,"progabide",13,40,1,42,4,-0.58929970405439,0.369095944928055 +"169",11,"progabide",46,33,0,43,1,0.674392334973168,0.176724052280599 +"170",14,"progabide",46,33,0,43,2,0.674392334973168,0.176724052280599 +"171",25,"progabide",46,33,0,43,3,0.674392334973168,0.176724052280599 +"172",15,"progabide",46,33,1,43,4,0.674392334973168,0.176724052280599 +"173",10,"progabide",36,21,0,44,1,0.429269876940183,-0.275261071462458 +"174",5,"progabide",36,21,0,44,2,0.429269876940183,-0.275261071462458 +"175",3,"progabide",36,21,0,44,3,0.429269876940183,-0.275261071462458 +"176",8,"progabide",36,21,1,44,4,0.429269876940183,-0.275261071462458 +"177",19,"progabide",38,35,0,45,1,0.483337098210459,0.235564552303532 +"178",7,"progabide",38,35,0,45,2,0.483337098210459,0.235564552303532 +"179",6,"progabide",38,35,0,45,3,0.483337098210459,0.235564552303532 +"180",7,"progabide",38,35,1,45,4,0.483337098210459,0.235564552303532 +"181",1,"progabide",7,25,0,46,1,-1.20833891246061,-0.10090768431768 +"182",1,"progabide",7,25,0,46,2,-1.20833891246061,-0.10090768431768 +"183",2,"progabide",7,25,0,46,3,-1.20833891246061,-0.10090768431768 +"184",3,"progabide",7,25,1,46,4,-1.20833891246061,-0.10090768431768 +"185",6,"progabide",36,26,0,47,1,0.429269876940183,-0.061686971164399 +"186",10,"progabide",36,26,0,47,2,0.429269876940183,-0.061686971164399 +"187",8,"progabide",36,26,0,47,3,0.429269876940183,-0.061686971164399 +"188",8,"progabide",36,26,1,47,4,0.429269876940183,-0.061686971164399 +"189",2,"progabide",11,25,0,48,1,-0.756353788717556,-0.10090768431768 +"190",1,"progabide",11,25,0,48,2,-0.756353788717556,-0.10090768431768 +"191",0,"progabide",11,25,0,48,3,-0.756353788717556,-0.10090768431768 +"192",0,"progabide",11,25,1,48,4,-0.756353788717556,-0.10090768431768 +"193",102,"progabide",151,22,0,49,1,1.863030775299,-0.228741055827565 +"194",65,"progabide",151,22,0,49,2,1.863030775299,-0.228741055827565 +"195",72,"progabide",151,22,0,49,3,1.863030775299,-0.228741055827565 +"196",63,"progabide",151,22,1,49,4,1.863030775299,-0.228741055827565 +"197",4,"progabide",22,32,0,50,1,-0.0632066081576108,0.145952393613845 +"198",3,"progabide",22,32,0,50,2,-0.0632066081576108,0.145952393613845 +"199",2,"progabide",22,32,0,50,3,-0.0632066081576108,0.145952393613845 +"200",4,"progabide",22,32,1,50,4,-0.0632066081576108,0.145952393613845 +"201",8,"progabide",41,25,0,51,1,0.559323005188381,-0.10090768431768 +"202",6,"progabide",41,25,0,51,2,0.559323005188381,-0.10090768431768 +"203",5,"progabide",41,25,0,51,3,0.559323005188381,-0.10090768431768 +"204",7,"progabide",41,25,1,51,4,0.559323005188381,-0.10090768431768 +"205",1,"progabide",32,35,0,52,1,0.3114868412838,0.235564552303532 +"206",3,"progabide",32,35,0,52,2,0.3114868412838,0.235564552303532 +"207",1,"progabide",32,35,0,52,3,0.3114868412838,0.235564552303532 +"208",5,"progabide",32,35,1,52,4,0.3114868412838,0.235564552303532 +"209",18,"progabide",56,21,0,53,1,0.871102629219222,-0.275261071462458 +"210",11,"progabide",56,21,0,53,2,0.871102629219222,-0.275261071462458 +"211",28,"progabide",56,21,0,53,3,0.871102629219222,-0.275261071462458 +"212",13,"progabide",56,21,1,53,4,0.871102629219222,-0.275261071462458 +"213",6,"progabide",24,41,0,54,1,0.0238047688320189,0.393788557518427 +"214",3,"progabide",24,41,0,54,2,0.0238047688320189,0.393788557518427 +"215",4,"progabide",24,41,0,54,3,0.0238047688320189,0.393788557518427 +"216",0,"progabide",24,41,1,54,4,0.0238047688320189,0.393788557518427 +"217",3,"progabide",16,32,0,55,1,-0.381660339276146,0.145952393613845 +"218",5,"progabide",16,32,0,55,2,-0.381660339276146,0.145952393613845 +"219",4,"progabide",16,32,0,55,3,-0.381660339276146,0.145952393613845 +"220",3,"progabide",16,32,1,55,4,-0.381660339276146,0.145952393613845 +"221",1,"progabide",22,26,0,56,1,-0.0632066081576108,-0.061686971164399 +"222",23,"progabide",22,26,0,56,2,-0.0632066081576108,-0.061686971164399 +"223",19,"progabide",22,26,0,56,3,-0.0632066081576108,-0.061686971164399 +"224",8,"progabide",22,26,1,56,4,-0.0632066081576108,-0.061686971164399 +"225",2,"progabide",25,21,0,57,1,0.0646267633522741,-0.275261071462458 +"226",3,"progabide",25,21,0,57,2,0.0646267633522741,-0.275261071462458 +"227",0,"progabide",25,21,0,57,3,0.0646267633522741,-0.275261071462458 +"228",1,"progabide",25,21,1,57,4,0.0646267633522741,-0.275261071462458 +"229",0,"progabide",13,36,0,58,1,-0.58929970405439,0.263735429270229 +"230",0,"progabide",13,36,0,58,2,-0.58929970405439,0.263735429270229 +"231",0,"progabide",13,36,0,58,3,-0.58929970405439,0.263735429270229 +"232",0,"progabide",13,36,1,58,4,-0.58929970405439,0.263735429270229 +"233",1,"progabide",12,37,0,59,1,-0.669342411727926,0.291134403458343 +"234",4,"progabide",12,37,0,59,2,-0.669342411727926,0.291134403458343 +"235",3,"progabide",12,37,0,59,3,-0.669342411727926,0.291134403458343 +"236",2,"progabide",12,37,1,59,4,-0.669342411727926,0.291134403458343 diff --git a/statsmodels/genmod/tests/results/gee_generate_tests.py b/statsmodels/genmod/tests/results/gee_generate_tests.py new file mode 100644 index 0000000..6c202a6 --- /dev/null +++ b/statsmodels/genmod/tests/results/gee_generate_tests.py @@ -0,0 +1,225 @@ +from statsmodels.compat.python import range +import numpy as np +from scipy.stats.distributions import norm + + +def generate_logistic(): + + # Number of clusters + nclust = 100 + + # Regression coefficients + beta = np.array([1, -2, 1], dtype=np.float64) + + # Covariate correlations + r = 0.4 + + # Cluster effects of covariates + rx = 0.5 + + # Within-cluster outcome dependence + re = 0.3 + + p = len(beta) + + OUT = open("gee_logistic_1.csv", "w") + + for i in range(nclust): + + n = np.random.randint(3, 6) # Cluster size + + x = np.random.normal(size=(n, p)) + x = rx*np.random.normal() + np.sqrt(1-rx**2)*x + x[:, 2] = r*x[:, 1] + np.sqrt(1-r**2)*x[:, 2] + pr = 1/(1+np.exp(-np.dot(x, beta))) + z = re*np.random.normal() +\ + np.sqrt(1-re**2)*np.random.normal(size=n) + u = norm.cdf(z) + y = 1*(u < pr) + + for j in range(n): + OUT.write("%d, %d," % (i, y[j])) + OUT.write(",".join(["%.3f" % b for b in x[j, :]]) + "\n") + + OUT.close() + + +def generate_linear(): + + # Number of clusters + nclust = 100 + + # Regression coefficients + beta = np.array([1, -2, 1], dtype=np.float64) + + # Within cluster covariate correlations + r = 0.4 + + # Between cluster covariate effects + rx = 0.5 + + # Within-cluster outcome dependence + # re = 0.3 + + p = len(beta) + + OUT = open("gee_linear_1.csv", "w") + + for i in range(nclust): + + n = np.random.randint(3, 6) # Cluster size + + x = np.random.normal(size=(n, p)) + x = rx*np.random.normal() + np.sqrt(1-rx**2)*x + x[:, 2] = r*x[:, 1] + np.sqrt(1-r**2)*x[:, 2] + # TODO: should `e` be used somewhere? + # e = np.sqrt(1-re**2)*np.random.normal(size=n) + re*np.random.normal() + y = np.dot(x, beta) + np.random.normal(size=n) + + for j in range(n): + OUT.write("%d, %d," % (i, y[j])) + OUT.write(",".join(["%.3f" % b for b in x[j, :]]) + "\n") + + OUT.close() + + +def generate_nested_linear(): + + # Number of clusters (clusters have 10 values, partitioned into 2 + # subclusters of size 5). + nclust = 200 + + # Regression coefficients + beta = np.array([1, -2, 1], dtype=np.float64) + + # Top level cluster variance component + v1 = 1 + + # Subcluster variance component + v2 = 0.5 + + # Error variance component + v3 = 1.5 + + p = len(beta) + + OUT = open("gee_nested_linear_1.csv", "w") + + for i in range(nclust): + + x = np.random.normal(size=(10, p)) + y = np.dot(x, beta) + + y += np.sqrt(v1)*np.random.normal() + y[0:5] += np.sqrt(v2)*np.random.normal() + y[5:10] += np.sqrt(v2)*np.random.normal() + y += np.sqrt(v3)*np.random.normal(size=10) + + for j in range(10): + OUT.write("%d, %.3f," % (i, y[j])) + OUT.write(",".join(["%.3f" % b for b in x[j, :]]) + "\n") + + OUT.close() + + +def generate_ordinal(): + + # Regression coefficients + beta = np.zeros(5, dtype=np.float64) + beta[2] = 1 + beta[4] = -1 + + rz = 0.5 + + OUT = open("gee_ordinal_1.csv", "w") + + for i in range(200): + + n = np.random.randint(3, 6) # Cluster size + + x = np.random.normal(size=(n, 5)) + for j in range(5): + x[:, j] += np.random.normal() + pr = np.dot(x, beta) + pr = np.array([1, 0, -0.5]) + pr[:, None] + pr = 1 / (1 + np.exp(-pr)) + + z = rz*np.random.normal() +\ + np.sqrt(1-rz**2)*np.random.normal(size=n) + u = norm.cdf(z) + + y = (u[:, None] > pr).sum(1) + + for j in range(n): + OUT.write("%d, %d," % (i, y[j])) + OUT.write(",".join(["%.3f" % b for b in x[j, :]]) + "\n") + + OUT.close() + + +def generate_nominal(): + + # Regression coefficients + beta1 = np.r_[0.5, 0.5] + beta2 = np.r_[-1, -0.5] + p = len(beta1) + + rz = 0.5 + + OUT = open("gee_nominal_1.csv", "w") + + for i in range(200): + + n = np.random.randint(3, 6) # Cluster size + + x = np.random.normal(size=(n, p)) + x[:, 0] = 1 + for j in range(1, x.shape[1]): + x[:, j] += np.random.normal() + pr1 = np.exp(np.dot(x, beta1))[:, None] + pr2 = np.exp(np.dot(x, beta2))[:, None] + den = 1 + pr1 + pr2 + pr = np.hstack((pr1/den, pr2/den, 1/den)) + cpr = np.cumsum(pr, 1) + + z = rz*np.random.normal() +\ + np.sqrt(1-rz**2)*np.random.normal(size=n) + u = norm.cdf(z) + + y = (u[:, None] > cpr).sum(1) + + for j in range(n): + OUT.write("%d, %d," % (i, y[j])) + OUT.write(",".join(["%.3f" % b for b in x[j, :]]) + "\n") + + OUT.close() + + +def generate_poisson(): + + # Regression coefficients + beta = np.zeros(5, dtype=np.float64) + beta[2] = 0.5 + beta[4] = -0.5 + + nclust = 100 + + OUT = open("gee_poisson_1.csv", "w") + + for i in range(nclust): + + n = np.random.randint(3, 6) # Cluster size + + x = np.random.normal(size=(n, 5)) + for j in range(5): + x[:, j] += np.random.normal() + lp = np.dot(x, beta) + E = np.exp(lp) + y = [np.random.poisson(e) for e in E] + y = np.array(y) + + for j in range(n): + OUT.write("%d, %d," % (i, y[j])) + OUT.write(",".join(["%.3f" % b for b in x[j, :]]) + "\n") + + OUT.close() diff --git a/statsmodels/genmod/tests/results/gee_linear_1.csv b/statsmodels/genmod/tests/results/gee_linear_1.csv new file mode 100644 index 0000000..58eafcf --- /dev/null +++ b/statsmodels/genmod/tests/results/gee_linear_1.csv @@ -0,0 +1,413 @@ +0,-3,0.030,2.837,1.190 +0,0,0.214,0.523,-0.125 +0,1,1.084,-0.411,-0.038 +0,2,-0.826,-0.483,1.285 +1,-1,-1.305,1.182,1.151 +1,4,0.216,-3.028,-2.207 +1,0,-1.650,-0.704,0.738 +1,-1,-0.409,-0.934,-1.236 +1,3,-0.230,-2.591,-1.539 +2,0,-0.155,-0.792,-1.291 +2,0,-0.284,-1.262,-1.525 +2,-3,-1.263,0.283,-2.494 +2,0,-0.645,-0.916,-1.378 +3,0,0.350,1.186,2.401 +3,0,1.813,2.413,2.090 +3,-3,0.394,3.115,1.293 +3,0,1.141,1.649,1.440 +3,1,1.542,0.308,0.832 +4,-2,-0.341,0.759,-0.684 +4,-3,-0.751,0.553,0.097 +4,-2,-0.563,1.430,0.164 +4,2,-0.903,-0.629,0.476 +5,0,0.962,1.113,0.563 +5,0,-0.073,0.521,0.169 +5,0,1.054,1.206,1.446 +6,3,1.074,-0.240,0.064 +6,0,-1.210,-1.041,-0.241 +6,0,-0.143,0.085,1.459 +6,2,0.846,0.933,2.384 +6,0,-0.228,0.009,0.451 +7,1,-0.382,-0.383,0.713 +7,3,3.025,0.286,-0.539 +7,0,0.949,0.385,0.780 +7,-3,-0.606,0.406,-0.928 +7,-2,-0.328,1.432,1.849 +8,0,1.428,1.485,0.621 +8,0,-1.557,0.607,1.012 +8,0,-0.210,0.130,0.120 +9,6,2.767,-0.873,1.314 +9,-3,-0.680,1.671,0.937 +9,0,1.614,1.696,1.856 +9,0,-0.510,1.076,1.843 +10,-3,-0.339,1.619,0.494 +10,0,1.844,2.027,1.619 +10,0,-0.430,-0.227,1.028 +10,0,-0.300,0.389,0.958 +10,0,0.339,0.174,1.104 +11,1,0.152,-0.426,-0.498 +11,0,0.207,-1.311,-0.869 +11,1,0.277,0.491,0.444 +11,0,0.913,-0.860,-0.407 +11,-3,-0.470,1.637,0.263 +12,4,0.215,-2.830,-0.807 +12,0,-0.780,-0.573,0.247 +12,3,1.014,0.258,1.297 +13,2,-0.630,-1.532,-0.569 +13,0,-0.253,1.022,-0.149 +13,-1,-1.063,-0.902,0.145 +13,0,-0.564,0.636,1.333 +14,3,-0.382,-0.768,1.064 +14,2,0.096,-0.177,1.600 +14,0,-0.094,0.339,0.846 +15,0,0.431,0.656,1.432 +15,0,-0.219,0.304,0.954 +15,-2,0.425,1.777,1.273 +15,2,1.172,0.220,0.089 +15,0,0.649,0.586,1.072 +16,-3,0.263,1.529,0.457 +16,-1,-2.094,-0.797,-0.536 +16,0,-2.000,-1.162,-0.823 +17,0,0.096,1.306,1.975 +17,0,-0.543,0.060,0.247 +17,-1,0.249,0.388,-0.915 +17,1,1.909,0.022,0.778 +17,2,0.517,-0.845,0.599 +18,0,0.606,0.917,1.788 +18,2,1.910,0.660,1.102 +18,-1,0.285,1.546,1.722 +18,0,0.375,1.632,2.082 +19,-3,-1.261,0.509,0.322 +19,0,-1.008,-0.351,-1.014 +19,0,-0.837,-0.189,0.071 +19,0,-0.440,0.207,-1.393 +19,0,-1.210,0.461,0.325 +20,1,0.840,-0.179,0.627 +20,0,-0.470,-1.252,-1.420 +20,0,0.169,1.262,1.314 +20,-2,-1.128,-0.565,-1.748 +20,1,0.329,-0.674,-1.374 +21,-2,-0.477,1.216,1.407 +21,-3,-0.254,1.130,0.329 +21,-1,-0.471,0.519,-0.116 +21,-2,-0.692,-1.170,-2.637 +21,2,0.321,-1.079,-1.050 +22,-1,-0.808,1.420,1.975 +22,-2,-0.822,0.870,0.565 +22,0,0.039,0.747,1.961 +22,0,1.452,2.245,2.003 +23,1,-0.599,-1.084,-0.906 +23,-4,-1.176,-0.431,-1.107 +23,-5,-1.518,2.511,1.327 +24,0,0.217,-0.565,0.004 +24,0,1.395,-0.311,0.630 +24,4,-0.196,-1.387,0.350 +24,1,0.723,-1.214,-0.273 +24,0,0.377,0.069,0.822 +25,0,0.002,0.114,-0.053 +25,0,0.191,-0.474,-0.655 +25,-1,0.058,-0.215,-0.611 +25,-2,0.309,0.728,-0.642 +25,0,-0.819,0.013,0.800 +26,0,-0.188,-0.908,-0.995 +26,0,0.632,-0.243,-0.651 +26,0,-0.873,-0.270,-0.045 +26,-2,-1.268,-0.505,0.548 +27,-1,0.926,0.719,0.082 +27,0,1.415,-0.095,-0.181 +27,0,-0.424,1.147,1.432 +27,0,0.557,-0.024,-0.682 +28,0,-1.155,-1.115,-1.264 +28,-3,-2.139,0.056,-1.051 +28,-1,-0.892,-1.125,-2.081 +29,2,0.414,-1.407,-0.632 +29,0,-0.365,1.160,1.398 +29,4,1.788,-1.631,-2.412 +30,1,1.283,0.915,1.572 +30,0,0.090,0.321,0.886 +30,5,0.817,-1.633,-0.517 +30,-1,-0.014,0.602,0.363 +31,0,0.865,-0.600,0.306 +31,-1,-0.789,-0.110,-1.439 +31,-3,-2.297,0.289,-0.876 +32,-3,-1.574,0.433,0.236 +32,2,0.664,-1.547,-1.349 +32,0,-0.287,-0.000,-1.621 +33,1,0.281,-0.985,-0.188 +33,-1,-0.458,-0.309,-1.853 +33,-4,-0.953,1.130,-0.849 +33,0,0.725,-0.502,-1.524 +33,1,0.428,-0.217,0.747 +34,0,0.451,0.712,1.303 +34,0,1.121,0.516,-0.490 +34,-2,-1.127,0.490,0.560 +34,2,1.987,0.224,1.993 +34,-1,0.049,0.924,0.595 +35,-3,-0.355,0.617,-0.064 +35,-1,-1.629,-1.847,-1.783 +35,-1,-1.245,0.209,-0.647 +35,0,-0.573,-1.328,-2.419 +35,0,0.896,-0.164,-0.993 +36,-2,-0.356,0.703,0.358 +36,-1,-0.413,1.307,1.805 +36,0,0.811,1.690,0.755 +37,-2,-0.536,0.065,-1.342 +37,0,-0.033,-1.463,-1.764 +37,0,-0.588,-1.120,-1.813 +37,1,0.107,-1.175,-1.241 +38,-4,-2.420,1.307,0.899 +38,0,0.273,1.218,1.753 +38,2,0.605,-0.480,0.806 +39,2,-0.803,-1.301,-0.213 +39,3,0.736,0.496,0.833 +39,0,1.044,1.258,1.102 +39,-1,-1.288,0.081,0.303 +40,2,-0.123,-1.519,0.015 +40,3,-0.487,-1.743,-0.130 +40,-2,-0.777,0.143,-1.143 +41,-1,1.476,1.017,0.325 +41,0,1.358,1.273,1.328 +41,0,1.167,0.155,-0.395 +41,0,-1.567,-0.674,0.715 +41,0,-0.216,1.217,0.784 +42,-1,-0.762,1.428,1.829 +42,0,-0.549,0.364,-0.738 +42,-2,0.164,0.447,-0.534 +42,0,0.338,1.093,1.442 +42,-2,-0.514,1.260,0.291 +43,1,0.942,1.290,1.820 +43,-1,0.774,2.004,1.735 +43,1,1.046,0.652,0.526 +43,0,1.307,1.598,0.872 +43,-1,1.467,0.707,-0.026 +44,-1,1.162,1.313,0.943 +44,-2,0.009,0.918,0.089 +44,1,2.069,0.379,0.519 +44,0,0.863,0.691,0.919 +45,2,-0.155,-1.572,-0.283 +45,0,-0.784,-0.656,0.537 +45,1,-0.559,-1.519,-1.429 +45,-5,0.230,1.115,-2.844 +46,-4,-1.044,0.566,-0.475 +46,1,-0.231,-1.166,-0.224 +46,0,-1.441,-0.631,-1.108 +47,0,1.403,-0.058,-0.875 +47,-4,0.545,1.817,-0.189 +47,0,-0.076,-0.892,-0.671 +47,1,1.715,-0.178,0.088 +48,1,-0.405,0.090,0.226 +48,-2,0.345,1.131,0.465 +48,-1,-0.115,0.348,0.250 +48,-1,-0.126,0.777,1.620 +48,0,0.107,0.498,1.996 +49,1,0.551,-1.173,-0.583 +49,1,0.606,-0.379,0.292 +49,0,0.542,-0.135,-0.542 +50,0,0.550,1.276,2.690 +50,0,0.414,0.782,-0.381 +50,2,-0.905,-1.125,0.441 +51,-2,0.214,1.650,-0.455 +51,3,-0.268,-0.910,0.755 +51,0,-0.392,-0.961,0.343 +52,1,0.528,-0.212,1.034 +52,0,1.091,0.156,1.679 +52,0,-0.280,0.010,0.038 +52,0,1.452,0.047,-2.182 +52,-4,-1.112,1.696,0.724 +53,3,0.395,-1.497,-0.198 +53,0,-0.437,-1.298,-0.868 +53,0,-0.246,0.399,-0.677 +54,0,0.226,0.943,1.278 +54,0,0.346,1.485,2.516 +54,-2,1.086,0.426,-0.997 +54,-1,0.300,1.967,1.165 +55,1,0.316,0.290,1.284 +55,2,1.055,-0.146,1.621 +55,3,2.087,-0.294,0.856 +55,0,1.554,1.749,1.729 +55,-2,-1.472,0.792,0.124 +56,0,-0.678,-0.846,-1.456 +56,3,-0.250,-2.661,-1.876 +56,0,-1.789,-2.278,-2.426 +56,0,-0.890,-1.529,-3.279 +57,1,1.453,-0.338,0.265 +57,-6,0.458,2.942,0.473 +57,0,-0.744,1.249,1.627 +58,-2,-0.457,-1.006,-2.610 +58,3,0.986,0.240,1.001 +58,0,0.727,0.053,-0.660 +58,0,0.675,0.629,1.241 +59,-1,0.725,1.056,0.545 +59,0,-0.430,-1.142,-1.627 +59,-1,-0.288,0.160,-0.374 +59,2,0.259,-1.254,-0.887 +60,1,1.664,0.919,0.558 +60,-1,0.204,0.769,0.434 +60,2,0.428,-1.369,-0.632 +60,2,1.194,-0.175,1.845 +60,-3,-0.381,0.040,-1.164 +61,-1,0.378,0.804,0.288 +61,1,0.674,0.768,-0.066 +61,1,0.271,-0.245,0.306 +61,2,1.339,0.671,0.507 +61,0,-0.856,-0.147,-0.194 +62,-2,1.235,2.274,0.918 +62,1,0.414,0.227,1.627 +62,3,1.485,-0.494,1.073 +63,-1,0.041,1.734,2.183 +63,0,1.383,1.062,0.384 +63,-3,1.128,2.072,1.542 +63,-4,-0.697,2.083,1.369 +63,0,-0.080,0.840,0.486 +64,-1,0.691,1.127,0.366 +64,0,1.849,1.202,1.457 +64,-2,0.182,1.558,0.885 +64,0,0.712,1.050,1.855 +65,0,0.787,0.196,-0.326 +65,0,1.520,0.684,-0.302 +65,0,0.709,1.309,1.767 +65,0,0.619,0.483,-0.051 +65,0,1.224,1.328,0.898 +66,3,-0.928,-0.762,3.085 +66,1,0.339,0.241,1.159 +66,-2,0.405,1.454,-0.272 +67,0,-0.231,1.379,0.341 +67,1,0.316,1.550,2.271 +67,1,0.880,-1.143,-0.809 +67,2,0.445,0.272,1.186 +67,0,0.712,1.258,2.381 +68,1,0.007,-2.005,-2.135 +68,0,1.204,-0.065,-0.255 +68,-1,-0.529,-0.272,-1.790 +69,-2,-0.486,0.640,0.361 +69,-1,-0.549,0.306,-0.522 +69,0,1.355,1.118,0.480 +69,0,0.558,0.571,-0.165 +69,1,0.488,-0.009,1.331 +70,0,0.285,1.218,1.947 +70,-1,1.566,2.147,0.384 +70,-1,-1.698,0.064,0.873 +70,3,1.442,-0.169,1.002 +70,0,-0.196,0.827,1.501 +71,0,-0.046,0.113,1.065 +71,-4,-0.866,1.140,-0.054 +71,2,-0.777,-0.935,-0.167 +71,-1,-1.353,-0.654,-1.548 +72,0,-0.499,-0.748,-0.986 +72,-2,-1.583,-0.584,-2.184 +72,0,-1.698,-1.912,-1.649 +72,0,-2.409,-1.761,-1.848 +72,3,0.015,-2.776,-1.420 +73,0,0.579,0.593,1.584 +73,2,-0.009,-0.164,0.314 +73,0,0.971,-0.488,-0.069 +73,-1,0.782,0.446,-0.328 +74,0,-0.706,-0.964,-0.379 +74,-2,-0.897,2.142,1.693 +74,-3,-1.562,1.000,-0.210 +74,1,0.630,-0.975,-1.183 +74,0,0.445,0.076,-0.676 +75,0,-0.190,-0.239,-0.799 +75,0,-0.198,0.826,1.873 +75,-1,0.900,-0.370,0.194 +75,-1,1.245,1.361,1.360 +76,0,0.253,-0.019,1.097 +76,1,0.076,-1.600,-0.615 +76,-1,0.771,0.042,-1.269 +76,-1,-0.634,-0.580,-0.778 +76,-1,-1.742,-0.000,0.937 +77,1,0.533,0.439,1.512 +77,0,-0.161,-0.331,-0.430 +77,0,-1.033,0.073,-0.141 +77,1,-0.976,-0.934,-0.484 +78,0,0.831,0.385,-0.538 +78,-4,0.176,2.884,0.506 +78,-1,0.980,0.640,0.036 +78,1,0.771,0.702,1.070 +78,0,-0.406,0.138,-0.376 +79,-2,-2.304,-1.307,-1.823 +79,0,-0.500,0.018,0.130 +79,1,-1.185,-1.094,-1.262 +79,4,2.031,-1.344,-0.421 +79,0,-0.329,-0.360,0.900 +80,-1,-0.964,1.187,-0.181 +80,3,0.444,-0.574,-1.109 +80,1,0.357,-0.269,0.200 +81,0,0.441,1.130,1.282 +81,-1,1.443,1.393,0.687 +81,-4,-0.284,2.689,0.848 +81,2,0.093,0.346,1.788 +82,-1,-0.661,0.538,0.535 +82,-2,-0.162,0.776,0.936 +82,-1,-0.274,1.029,-0.684 +82,2,-0.487,-1.635,-1.420 +83,-1,-0.480,-0.213,-0.373 +83,-2,0.600,1.874,0.448 +83,2,2.415,0.998,1.735 +83,1,-0.062,0.268,0.136 +83,-3,-1.188,1.518,0.620 +84,-1,-1.609,-0.534,-0.791 +84,-1,-0.727,0.570,0.091 +84,-2,-1.016,0.001,-1.141 +84,-2,-1.262,0.819,0.160 +85,0,0.101,-0.739,-1.617 +85,0,-1.203,-0.835,-0.877 +85,-1,0.571,0.594,-0.749 +86,-3,-0.481,0.282,-2.499 +86,-4,-1.516,1.115,-0.276 +86,-3,-0.876,0.095,-1.235 +86,2,0.461,-0.927,0.063 +86,0,-1.297,-1.270,-0.653 +87,0,1.213,-0.671,-1.188 +87,-2,-0.086,0.311,-0.830 +87,1,0.273,-0.442,0.548 +88,0,0.106,-0.039,0.054 +88,-1,0.907,1.242,0.707 +88,-1,-0.807,0.906,1.002 +88,0,0.467,0.728,0.776 +88,-5,-0.573,1.302,0.277 +89,-1,-1.312,-0.319,-1.173 +89,1,0.487,0.399,1.021 +89,0,0.690,0.778,-0.113 +89,-1,-1.173,-0.008,-0.070 +90,-1,0.744,0.368,-0.152 +90,0,0.413,1.316,1.720 +90,0,-0.647,-0.065,-0.737 +90,-3,-0.407,1.240,1.091 +91,3,1.682,-0.273,-0.452 +91,0,-0.264,0.326,-0.163 +91,-3,-1.413,0.676,-0.765 +91,3,-1.270,-0.251,0.288 +91,2,0.870,-1.583,-1.714 +92,1,0.212,-1.355,-0.368 +92,-1,-0.498,0.281,-0.969 +92,0,0.473,0.160,1.129 +92,2,-0.427,-1.277,-0.019 +93,-1,-0.301,-0.092,-0.192 +93,1,-0.495,-1.250,-0.373 +93,0,0.476,-0.677,-1.553 +93,1,-1.652,-2.059,-0.781 +94,-3,-1.284,0.975,-0.539 +94,0,0.569,0.942,1.021 +94,0,0.232,0.404,0.093 +94,0,0.406,0.820,-0.875 +94,0,-0.077,0.543,0.087 +95,-1,1.356,1.288,0.912 +95,0,0.672,1.008,1.024 +95,2,1.680,0.458,2.040 +96,0,0.050,0.889,1.225 +96,0,1.119,0.030,-0.337 +96,0,1.899,-0.387,-1.658 +97,0,1.293,0.832,-0.040 +97,1,1.595,0.319,0.473 +97,0,0.103,1.536,1.153 +97,-1,0.777,1.519,1.583 +98,0,0.351,-0.611,-0.273 +98,0,0.973,0.566,0.284 +98,-1,2.024,1.648,0.468 +98,1,-0.721,-0.675,0.101 +99,3,1.259,-0.260,1.210 +99,1,1.138,0.877,0.510 +99,3,1.125,-0.527,0.802 +99,1,1.816,-0.389,-0.458 +99,1,1.702,0.465,0.034 diff --git a/statsmodels/genmod/tests/results/gee_logistic_1.csv b/statsmodels/genmod/tests/results/gee_logistic_1.csv new file mode 100644 index 0000000..6ef8e06 --- /dev/null +++ b/statsmodels/genmod/tests/results/gee_logistic_1.csv @@ -0,0 +1,405 @@ +0,1,1.548,-0.529,-1.202 +0,0,0.084,1.312,0.019 +0,1,-0.796,-1.706,-0.408 +1,0,-0.536,-0.584,-1.022 +1,0,0.548,0.282,-0.690 +1,0,-0.462,0.585,1.156 +1,0,-2.028,-0.104,-0.561 +1,0,-0.080,-0.493,-0.480 +2,1,0.004,1.750,1.630 +2,1,-1.373,0.071,0.546 +2,0,-0.190,0.917,0.506 +2,1,0.404,-0.881,0.791 +3,0,-1.302,-2.123,-1.336 +3,1,0.275,-0.970,-0.268 +3,1,-0.259,-0.495,0.065 +3,0,-0.895,0.427,-0.774 +3,1,0.826,-0.625,-0.789 +4,0,-1.778,-0.547,0.418 +4,0,0.676,-0.173,-0.544 +4,0,-0.729,0.618,-1.447 +4,0,-1.055,-0.485,-0.700 +5,1,1.345,-0.244,1.710 +5,1,1.660,0.891,0.799 +5,1,0.707,0.177,0.956 +5,0,1.400,0.316,-1.201 +5,1,1.514,0.793,-0.114 +6,1,0.871,-0.043,0.990 +6,1,0.497,0.737,0.292 +6,1,0.309,0.976,0.684 +6,1,0.038,-0.959,1.215 +7,0,-0.031,0.269,-0.201 +7,0,-0.338,0.668,1.651 +7,0,1.543,-0.087,-1.226 +7,1,1.150,0.821,0.456 +7,0,0.080,0.955,-0.585 +8,0,-2.154,1.197,1.599 +8,1,0.179,-1.007,0.011 +8,1,0.707,-0.092,-0.073 +9,1,0.060,-0.416,-0.363 +9,0,-0.027,0.273,0.663 +9,1,-0.930,-1.240,-0.947 +9,1,0.526,-0.078,-1.761 +10,1,0.282,-2.120,-2.174 +10,0,-1.283,-1.305,-0.416 +10,1,-0.150,0.681,1.477 +10,1,-0.446,0.312,0.467 +11,1,-1.358,-2.584,-1.192 +11,1,-1.144,-1.840,-1.196 +11,0,-1.756,-1.496,-3.135 +11,0,-1.745,0.107,-0.689 +11,1,0.773,-1.712,-0.566 +12,1,0.996,-0.681,-0.304 +12,0,1.894,0.397,-0.186 +12,0,2.059,1.827,1.490 +12,1,0.502,0.975,1.379 +12,0,0.206,-0.787,0.001 +13,1,0.328,-0.472,-0.703 +13,1,2.125,1.206,0.904 +13,0,0.002,0.592,0.472 +14,1,0.393,-1.771,-1.430 +14,1,0.846,-0.817,0.201 +14,0,0.285,-1.236,-1.672 +14,1,0.627,-1.362,-1.710 +14,1,0.052,-0.083,2.465 +15,0,-0.049,0.936,0.476 +15,1,-0.392,0.497,0.896 +15,0,0.363,0.334,-2.107 +15,0,0.133,-0.544,-1.103 +15,1,-0.675,0.200,0.057 +16,0,0.536,1.171,0.326 +16,1,-0.162,1.383,1.281 +16,0,0.827,-0.565,-0.925 +17,1,-0.438,-1.934,-1.293 +17,0,-0.847,-0.662,-0.179 +17,1,-0.468,-0.796,-0.746 +17,0,-0.302,0.502,-0.842 +17,1,-1.568,-1.071,-0.219 +18,1,-1.696,0.184,-0.086 +18,1,0.396,-0.845,-0.942 +18,1,0.588,-0.931,-1.260 +19,0,1.963,0.652,0.257 +19,1,1.016,0.271,-0.146 +19,1,1.266,0.247,0.274 +20,1,-1.034,-1.098,-1.370 +20,0,-2.120,-1.285,-1.005 +20,1,-1.476,-3.622,-2.686 +20,1,-0.708,-1.223,-1.488 +20,0,-0.111,-1.985,-3.268 +21,1,-0.922,-0.077,1.386 +21,0,-1.296,0.533,1.064 +21,1,-1.402,0.719,0.290 +21,0,-0.704,0.481,0.075 +21,1,-0.092,-0.753,-0.095 +22,0,-0.072,1.679,0.841 +22,0,0.919,0.915,0.836 +22,1,0.656,0.305,-0.128 +22,0,0.073,0.921,0.699 +23,1,-0.273,0.183,-0.506 +23,1,0.196,-0.776,-0.279 +23,0,0.154,0.251,0.407 +23,0,-1.238,0.343,0.204 +24,0,1.212,0.636,0.737 +24,1,-0.693,0.136,2.490 +24,1,-0.018,-0.208,1.494 +25,0,-1.159,-0.273,-1.149 +25,1,0.935,-0.507,-0.146 +25,1,1.750,-0.484,-0.838 +26,0,-0.399,1.233,0.271 +26,0,-0.644,1.642,0.949 +26,1,1.163,-0.348,-1.010 +26,1,1.168,-2.201,-0.559 +27,1,-0.450,-0.739,1.097 +27,0,0.868,0.065,-0.440 +27,0,0.288,1.105,1.994 +27,0,0.358,1.687,0.045 +27,1,1.880,0.636,0.818 +28,0,-0.905,0.613,0.510 +28,0,-0.280,-0.034,0.712 +28,0,-1.111,0.526,0.096 +28,1,2.047,0.258,1.244 +28,1,-0.156,-0.169,-0.174 +29,0,-0.960,-0.745,-0.938 +29,1,-2.192,-2.973,0.025 +29,0,-0.202,0.534,-1.675 +29,1,-0.817,-1.304,-0.451 +29,1,-1.388,-1.915,-2.432 +30,1,0.742,0.211,-0.108 +30,1,0.617,0.611,0.879 +30,0,0.759,-0.121,-0.573 +30,1,-0.760,-0.813,-0.040 +31,1,0.513,0.936,-0.024 +31,1,0.206,0.567,0.555 +31,1,0.380,0.378,0.106 +32,0,-0.249,1.422,1.140 +32,0,0.111,-0.171,-1.012 +32,0,-1.243,-1.328,-0.496 +32,1,0.366,-0.396,-0.616 +33,0,0.524,0.179,-0.348 +33,1,0.101,0.360,1.011 +33,1,0.329,-1.218,-0.952 +34,0,-1.359,-0.920,-1.708 +34,1,-2.244,-0.773,0.222 +34,0,-0.676,-0.451,-1.480 +35,1,1.043,0.850,0.611 +35,1,-0.376,1.303,1.833 +35,0,-0.178,0.520,-0.960 +36,0,0.674,-0.063,-0.193 +36,0,0.185,1.276,-0.165 +36,1,0.740,-0.298,-0.306 +36,1,0.553,0.123,0.410 +36,1,-1.300,0.233,1.447 +37,1,-1.893,-1.619,-0.034 +37,1,-0.955,-0.344,-0.659 +37,0,-0.453,-1.925,-0.566 +37,1,-0.066,-0.048,-1.278 +38,1,0.073,1.901,1.075 +38,1,0.707,-0.534,0.725 +38,1,-0.132,-0.712,0.225 +38,1,1.712,-0.371,0.022 +38,0,-1.594,0.900,1.108 +39,1,1.522,0.600,2.198 +39,1,2.067,0.839,0.428 +39,1,0.903,0.150,1.970 +40,1,0.186,-0.016,1.459 +40,1,0.315,0.415,-0.100 +40,0,-0.162,-0.147,1.305 +40,1,0.800,-0.037,-1.897 +41,1,3.318,-2.128,-1.639 +41,1,0.421,-0.392,0.236 +41,0,-1.503,0.870,-1.712 +41,0,1.225,2.190,0.421 +41,0,-0.247,0.524,1.334 +42,1,0.094,0.634,1.815 +42,0,0.788,2.015,1.196 +42,1,0.007,-0.035,0.198 +43,0,-1.633,-1.032,-1.123 +43,0,-1.261,-0.870,0.647 +43,0,-1.316,0.487,-2.478 +43,1,-0.155,-1.666,-0.578 +44,0,-0.538,1.551,1.148 +44,0,-1.021,0.439,0.229 +44,1,0.521,-0.333,0.872 +44,0,0.820,-0.104,-1.519 +44,1,-0.273,-0.668,1.887 +45,1,1.069,-0.461,0.686 +45,0,-0.450,1.918,0.448 +45,0,-1.357,0.394,1.221 +46,1,0.349,-0.263,-0.243 +46,0,-0.266,1.219,-0.978 +46,1,-0.926,-0.860,-0.041 +46,1,-1.821,-0.773,-1.373 +46,1,-1.232,-0.480,-1.162 +47,1,-1.074,-0.071,0.805 +47,1,1.558,-1.422,-0.596 +47,1,-0.336,-1.018,0.457 +47,1,-0.072,0.028,-0.864 +48,1,0.327,-1.873,-2.254 +48,1,-0.876,-1.410,-0.010 +48,0,0.037,0.613,-0.477 +48,0,-0.951,0.515,-1.375 +48,1,0.358,0.011,0.226 +49,1,-0.630,-1.009,-0.900 +49,1,-0.224,-1.513,-1.778 +49,1,0.339,-0.213,-0.205 +49,0,-0.892,-0.176,-0.229 +49,0,-0.493,-0.625,-1.609 +50,1,0.553,-1.131,-0.299 +50,1,-0.561,-0.657,-0.064 +50,1,0.509,-0.544,-0.511 +50,0,0.084,0.238,0.477 +51,1,0.261,1.333,0.410 +51,0,0.949,2.030,0.562 +51,1,1.240,-0.929,0.418 +52,1,-0.662,-1.578,-0.536 +52,0,-0.729,-0.217,0.023 +52,1,1.456,0.318,0.298 +52,1,0.774,1.178,0.631 +53,0,0.567,0.298,-0.115 +53,1,0.171,-1.003,-1.263 +53,0,-0.455,0.677,-0.505 +53,1,0.040,-1.087,-0.880 +54,0,-0.779,-0.215,-0.318 +54,1,-0.112,0.689,-0.054 +54,0,1.037,-0.298,-1.121 +54,0,-1.304,-1.379,0.065 +54,1,0.162,-0.120,-0.395 +55,0,0.311,0.797,0.030 +55,1,0.806,0.952,0.201 +55,1,1.746,-0.739,0.726 +55,0,-0.549,-0.645,-0.257 +56,0,-0.644,-1.239,-0.655 +56,1,-1.110,-0.353,-0.500 +56,1,0.525,-1.847,-0.641 +57,0,-0.443,0.567,-0.837 +57,0,-1.126,-0.298,0.410 +57,1,-1.115,0.075,-0.067 +58,1,0.788,0.324,1.564 +58,1,0.626,-0.193,1.219 +58,0,0.116,1.274,0.907 +58,1,0.843,0.793,1.189 +59,1,0.394,-1.005,-0.232 +59,1,0.769,-1.460,-0.101 +59,1,0.779,0.378,-0.002 +60,0,-1.374,-1.201,-1.303 +60,0,0.115,-0.593,-0.957 +60,0,-0.567,0.206,-0.422 +61,0,-3.465,-0.162,-1.189 +61,0,-0.894,-1.233,-1.080 +61,1,-1.479,-1.797,-1.108 +61,0,-1.028,-0.698,-1.060 +61,1,0.423,-1.090,-1.960 +62,0,-0.831,-1.068,-0.869 +62,1,-0.479,-1.970,-0.993 +62,0,-1.571,-0.116,0.645 +62,1,-0.330,-1.617,-0.731 +63,0,0.840,1.718,0.948 +63,0,-0.553,1.923,0.587 +63,0,0.447,0.991,-0.490 +63,0,1.054,0.827,0.195 +63,1,0.175,0.159,2.262 +64,1,0.749,-0.018,0.987 +64,1,0.870,1.326,2.189 +64,0,-1.511,-0.550,-0.211 +65,1,0.110,-0.616,0.677 +65,0,0.035,-0.452,-0.834 +65,0,-0.535,-0.946,-2.080 +66,0,-0.244,0.607,-0.180 +66,0,-0.158,-0.592,-0.390 +66,0,-0.831,0.007,-0.742 +66,0,-2.702,-0.173,-0.627 +66,1,0.127,-1.284,-1.134 +67,1,-0.019,-0.011,0.629 +67,1,0.342,0.030,-0.052 +67,1,0.029,-1.448,-1.414 +67,0,-0.908,-0.654,0.621 +67,1,1.046,-0.615,1.091 +68,0,1.226,1.539,1.281 +68,1,0.607,-0.017,0.445 +68,0,0.034,0.540,-0.123 +68,0,-0.472,1.462,0.152 +68,0,0.071,-0.296,0.501 +69,0,0.171,0.077,-0.250 +69,0,-1.505,0.892,0.494 +69,0,-1.323,-0.118,-2.233 +70,0,-0.241,-1.165,-1.026 +70,0,0.049,-0.135,-1.815 +70,1,-1.034,-1.699,-0.633 +70,0,-1.023,-0.640,-1.268 +70,0,-0.526,-0.900,-0.125 +71,1,-1.258,0.278,0.976 +71,0,-0.227,0.418,0.196 +71,1,0.861,-0.645,-0.325 +71,0,0.723,1.198,0.735 +71,1,1.383,0.266,-0.367 +72,1,1.051,0.205,1.127 +72,0,0.189,0.341,1.646 +72,0,0.419,1.143,1.203 +73,1,0.273,0.602,0.232 +73,1,0.026,-1.156,-0.154 +73,0,-0.146,1.330,0.929 +73,1,0.441,-0.742,0.088 +74,1,1.077,0.468,-0.853 +74,1,0.762,-0.734,-0.792 +74,0,0.527,1.874,1.111 +75,0,-1.184,-0.760,-0.354 +75,1,-0.562,-0.668,0.498 +75,1,-1.899,-1.153,-0.412 +76,0,0.299,0.394,-0.508 +76,1,-0.173,-0.463,-1.483 +76,1,0.989,1.104,1.273 +76,0,0.056,0.255,0.541 +76,0,-0.791,1.418,0.620 +77,1,1.378,0.369,1.177 +77,1,0.838,-1.108,0.643 +77,1,0.290,-0.577,-0.108 +77,1,0.232,-0.693,-0.408 +77,1,0.088,-0.056,0.251 +78,1,0.372,-0.891,-0.664 +78,1,0.465,-1.149,-0.877 +78,0,0.006,0.769,-0.335 +78,1,0.099,-1.169,-0.556 +78,0,-1.657,-0.537,-0.883 +79,0,-0.416,1.591,-0.134 +79,0,0.736,1.799,0.627 +79,1,0.861,-0.259,1.117 +80,0,1.034,1.587,0.848 +80,0,-0.073,0.096,1.879 +80,0,0.255,2.103,1.678 +81,0,-0.805,0.800,-0.431 +81,0,0.871,0.838,0.186 +81,1,0.132,-0.404,-0.703 +81,0,-0.538,-1.135,0.052 +81,0,-0.377,-0.380,-0.070 +82,1,0.126,-0.976,-0.559 +82,1,1.340,-0.905,0.349 +82,0,-0.595,0.833,0.392 +82,0,0.250,1.137,0.648 +83,1,0.630,-2.457,-0.912 +83,0,-0.722,-0.160,-0.791 +83,0,-0.792,-1.037,-1.090 +83,1,2.366,0.454,0.712 +83,0,-1.206,0.467,0.636 +84,0,-0.824,0.080,0.236 +84,0,-0.465,1.221,0.450 +84,0,-0.038,-0.846,-1.597 +84,0,0.338,-0.219,-0.462 +84,0,-1.183,0.710,0.367 +85,0,-0.232,1.064,1.111 +85,0,-0.718,-0.957,-0.499 +85,1,0.108,-0.307,0.549 +85,0,1.065,1.185,-0.365 +86,0,-0.152,-0.335,0.460 +86,0,0.136,0.340,0.139 +86,1,0.625,-1.260,-1.055 +86,1,-0.639,-0.283,0.615 +86,0,-1.311,-1.058,-1.331 +87,1,0.722,1.639,2.768 +87,0,1.323,2.400,2.418 +87,0,0.510,1.850,1.053 +87,1,2.412,1.368,1.987 +88,1,1.233,-0.295,-0.576 +88,0,-0.495,-0.028,0.195 +88,1,-1.346,-1.850,-1.998 +88,1,0.262,-0.740,0.519 +88,1,-0.945,-1.215,-0.444 +89,1,0.712,1.025,0.635 +89,0,-0.119,1.420,2.225 +89,1,-0.739,-0.875,0.020 +90,0,-0.138,-0.556,-1.433 +90,0,-0.449,-1.425,-1.333 +90,1,-1.222,-0.166,0.305 +91,0,-0.012,0.647,1.009 +91,0,1.981,1.315,1.321 +91,1,0.161,-0.306,0.903 +91,0,-0.310,-0.933,-0.584 +91,0,-0.537,1.372,0.731 +92,1,1.447,-1.860,-0.807 +92,0,-0.665,0.582,0.603 +92,0,-0.572,-0.251,-0.438 +92,0,-1.938,-0.438,-2.119 +92,0,-1.318,-0.096,-1.238 +93,0,0.144,0.112,-1.106 +93,0,-0.699,-0.236,-1.634 +93,0,-0.646,-0.373,-1.453 +93,0,-1.280,-0.266,-0.613 +93,0,-0.700,-0.774,-0.306 +94,1,0.416,-0.308,-0.984 +94,1,1.229,1.059,0.690 +94,0,0.545,-0.163,-0.516 +95,0,0.581,0.231,0.004 +95,0,0.116,0.108,-0.864 +95,1,0.137,-1.301,-2.356 +96,1,-0.778,-1.520,-0.577 +96,1,0.491,-0.398,0.452 +96,1,-0.217,-0.623,0.954 +97,0,0.805,0.473,-0.568 +97,1,0.241,0.721,0.991 +97,0,-0.278,0.807,-1.064 +98,1,-0.931,-1.886,-1.640 +98,0,-1.223,-1.645,-1.548 +98,0,-2.199,-0.865,-0.425 +98,1,-0.356,-2.400,-0.766 +99,1,0.540,-0.949,-0.317 +99,0,-0.658,-1.097,-2.819 +99,0,-0.823,-0.994,-1.202 diff --git a/statsmodels/genmod/tests/results/gee_nested_linear_1.csv b/statsmodels/genmod/tests/results/gee_nested_linear_1.csv new file mode 100644 index 0000000..33e09b0 --- /dev/null +++ b/statsmodels/genmod/tests/results/gee_nested_linear_1.csv @@ -0,0 +1,2000 @@ +0,3.555,1.199,0.059,1.130 +0,-1.932,-0.209,0.104,0.154 +0,-0.961,1.548,0.720,-1.118 +0,-2.512,-1.410,1.016,1.808 +0,-0.531,-1.475,-1.541,-0.610 +0,-0.197,0.651,-0.448,-0.891 +0,-5.847,0.074,0.085,-1.532 +0,3.189,1.164,-1.529,-0.604 +0,-0.267,-1.741,-0.825,0.212 +0,2.032,0.549,-0.265,-1.050 +1,-1.737,-0.048,-0.201,-0.029 +1,0.119,-0.429,-1.147,-0.249 +1,-2.736,-1.246,0.123,-0.251 +1,4.327,0.498,-2.278,0.012 +1,-4.897,-0.910,0.376,-2.148 +1,0.676,-0.877,0.049,2.119 +1,0.028,-0.415,-1.078,-0.014 +1,-0.137,-0.752,0.038,1.154 +1,-1.310,1.039,-0.009,-0.697 +1,-2.164,0.677,1.009,0.637 +2,-5.710,-0.272,1.629,0.169 +2,-3.091,-1.769,1.115,1.575 +2,-4.943,-0.633,0.554,-1.574 +2,-3.391,0.759,1.065,-0.743 +2,-0.767,0.170,-1.541,0.539 +2,-1.014,-0.059,1.613,1.193 +2,-1.596,0.033,-0.311,-2.007 +2,1.276,-1.096,-1.193,-0.128 +2,-0.325,-1.142,-0.371,-0.252 +2,2.357,0.414,-1.068,-1.283 +3,-2.311,-0.779,-0.278,-0.114 +3,0.103,0.369,0.256,-0.198 +3,1.130,-0.849,-0.856,-0.332 +3,-6.202,-2.862,1.362,-0.363 +3,2.227,-0.227,-1.043,-0.170 +3,4.652,1.414,-1.053,1.268 +3,0.337,-1.221,-1.443,0.955 +3,-0.130,1.232,-0.709,-1.398 +3,-0.366,-0.678,-0.492,0.556 +3,1.204,1.346,-1.010,-1.518 +4,-1.265,0.124,-0.149,-0.300 +4,-1.199,0.228,0.611,-0.079 +4,0.628,0.089,-1.674,0.052 +4,-0.472,1.304,-1.302,0.108 +4,-4.492,0.262,0.930,-1.037 +4,-0.944,0.587,-0.162,-0.763 +4,-3.531,-0.055,0.162,-1.404 +4,-0.909,-0.798,-0.323,0.697 +4,-2.097,0.092,-0.195,-0.398 +4,1.630,0.044,-0.676,-0.509 +5,-4.008,-2.551,0.366,1.321 +5,2.798,0.703,-1.319,1.090 +5,-0.155,-0.367,-0.835,0.488 +5,5.894,2.020,-1.278,0.159 +5,-3.664,-1.118,1.325,0.222 +5,-1.521,0.577,0.522,0.711 +5,-3.070,-0.428,-1.694,-0.495 +5,3.033,0.039,-1.129,2.174 +5,-3.380,-0.767,0.859,0.746 +5,-3.643,-1.269,0.125,0.065 +6,-2.632,0.017,1.234,-0.793 +6,1.026,-0.254,-0.033,0.189 +6,1.701,-0.450,-1.090,-0.367 +6,-1.065,-0.611,0.096,-1.408 +6,3.246,1.448,0.227,1.086 +6,1.493,-0.024,-1.622,-2.181 +6,0.245,0.374,-0.562,-0.555 +6,-0.158,0.593,0.338,-0.102 +6,1.751,0.481,-0.329,-0.473 +6,-2.010,-1.133,-0.816,-2.882 +7,-1.178,1.092,0.069,-2.243 +7,-5.792,0.359,1.630,-0.988 +7,-0.731,-0.440,0.143,0.181 +7,-3.726,0.142,0.064,-0.052 +7,-6.753,-0.060,2.089,-0.986 +7,-1.617,0.062,0.346,1.232 +7,0.059,-0.309,-0.743,-0.258 +7,-0.605,1.117,-0.487,-0.099 +7,7.393,1.259,-2.581,0.606 +7,2.359,1.047,0.059,1.366 +8,0.265,0.668,-0.057,0.031 +8,1.257,-1.058,-0.790,-0.224 +8,-2.505,-1.310,-0.308,-0.736 +8,0.672,-0.451,0.362,0.352 +8,-0.927,-0.123,0.206,-0.747 +8,1.263,-1.698,-1.257,0.832 +8,2.256,-1.313,-1.671,0.457 +8,-2.443,-3.037,0.203,1.980 +8,0.143,-0.061,-0.137,-0.270 +8,-1.598,-3.912,-0.342,0.527 +9,3.314,1.670,-1.302,-0.232 +9,0.278,1.789,0.226,0.079 +9,2.222,-1.317,-1.433,0.947 +9,1.024,0.947,0.574,0.732 +9,1.957,2.011,-1.341,-1.052 +9,1.621,-0.176,-0.060,0.005 +9,-1.451,-1.145,0.911,0.566 +9,-1.400,0.381,1.060,-1.147 +9,0.145,-1.098,0.331,0.389 +9,2.956,0.506,-0.916,-0.035 +10,1.672,0.472,-0.772,-0.045 +10,-8.217,-0.421,2.400,-1.378 +10,-2.216,0.229,-0.028,0.756 +10,0.446,-0.890,-0.700,-0.573 +10,-0.431,-0.881,-0.752,0.104 +10,1.409,1.576,-0.344,0.341 +10,-6.699,-0.596,1.589,0.737 +10,-1.349,-0.593,-0.039,0.999 +10,-1.130,1.110,-0.503,-0.739 +10,-4.945,-0.156,0.660,-0.746 +11,-0.951,-0.458,0.085,-1.109 +11,-4.795,-1.096,2.592,0.336 +11,0.005,0.488,0.215,0.007 +11,-0.827,-0.245,0.514,-0.681 +11,1.102,-1.066,-1.824,-0.570 +11,0.754,-0.464,-0.591,-0.030 +11,-3.030,0.709,1.184,-0.662 +11,0.986,0.245,-0.231,-0.321 +11,0.839,0.327,-0.443,1.164 +11,-2.439,-1.034,0.572,1.674 +12,-0.168,-0.641,-0.495,1.315 +12,2.040,1.640,-0.525,1.323 +12,-4.766,0.669,0.859,-1.509 +12,1.651,1.109,0.229,1.623 +12,1.179,-0.658,-1.131,-0.021 +12,0.415,0.820,-0.628,0.696 +12,-1.392,-0.389,-0.248,0.012 +12,2.935,3.590,-0.669,-0.241 +12,-2.433,-0.334,0.705,-0.432 +12,-3.376,-0.613,1.015,0.974 +13,2.432,1.233,-0.311,-0.117 +13,-3.744,0.764,1.342,-0.388 +13,0.132,0.088,-0.305,-0.629 +13,-0.656,0.690,0.702,0.559 +13,0.616,0.295,-0.582,-1.244 +13,-1.358,0.707,-0.016,0.730 +13,-4.949,-0.977,0.643,-0.197 +13,2.960,-0.884,-1.114,1.671 +13,-5.414,-1.102,1.379,0.518 +13,-4.659,-0.397,1.342,1.261 +14,3.714,0.490,-1.491,-0.164 +14,0.795,-0.852,-0.042,0.501 +14,3.703,2.132,0.303,0.498 +14,-1.788,-0.084,0.919,-2.540 +14,5.794,0.128,-1.358,0.572 +14,1.695,-1.020,0.405,1.464 +14,1.401,1.850,1.280,0.045 +14,1.162,0.392,-0.071,0.057 +14,0.873,-0.862,0.354,-0.106 +14,-2.050,-0.148,0.441,-1.662 +15,-0.460,-0.272,0.439,2.434 +15,-4.777,-1.597,-0.019,-1.777 +15,-4.936,-1.168,1.582,-0.367 +15,-1.082,0.795,-0.240,-0.507 +15,0.683,0.031,-0.807,1.160 +15,-3.935,-1.208,1.608,1.341 +15,1.526,-1.457,-1.986,-0.078 +15,4.144,1.177,-0.853,1.167 +15,-0.746,-0.349,-0.342,-0.318 +15,0.971,0.628,0.705,1.804 +16,2.044,0.977,0.414,0.321 +16,0.899,-0.232,1.518,2.053 +16,2.505,0.248,0.048,0.067 +16,1.524,-0.352,0.149,0.037 +16,1.346,-0.107,-0.211,0.588 +16,0.142,-0.616,0.171,0.323 +16,2.283,1.387,-0.795,-1.118 +16,-4.264,-0.201,2.045,-0.188 +16,1.806,0.695,-1.934,-0.058 +16,-2.731,-0.354,0.161,-1.960 +17,-5.006,-0.683,0.933,-1.915 +17,0.424,-1.500,0.805,2.137 +17,1.074,0.573,0.289,0.370 +17,-3.532,1.905,1.481,-2.909 +17,1.789,0.749,-0.338,-0.325 +17,0.191,-0.099,-0.937,0.012 +17,2.033,-0.122,-1.110,0.723 +17,-0.593,0.416,-0.457,0.103 +17,0.110,-0.461,-0.190,0.422 +17,-2.387,-0.752,0.683,-0.354 +18,-2.443,-1.169,-0.795,0.677 +18,-7.287,-0.814,1.982,-0.053 +18,-2.102,-1.394,-0.967,1.812 +18,-4.473,-1.324,0.432,1.228 +18,-11.366,-0.989,3.247,-0.175 +18,1.544,2.189,-0.789,0.087 +18,-1.751,-0.174,-0.038,0.068 +18,-3.297,-1.105,-1.011,-0.436 +18,-7.069,-0.374,1.392,0.047 +18,-0.054,1.551,-0.946,-0.752 +19,7.029,1.473,-2.048,0.779 +19,4.920,0.154,-1.412,0.808 +19,-0.550,-2.410,-0.520,0.953 +19,3.900,1.355,-0.744,-0.236 +19,-1.422,0.129,0.383,-0.889 +19,0.137,-0.205,-0.584,0.798 +19,1.138,-0.246,-1.437,-0.739 +19,1.463,-1.438,-1.213,1.056 +19,1.116,0.546,0.397,0.995 +19,-1.766,-0.997,0.740,-0.245 +20,-3.186,0.542,0.980,-0.801 +20,-4.199,-1.009,-0.054,-1.156 +20,-4.278,-0.557,1.203,-0.684 +20,5.984,3.221,-1.764,2.410 +20,-4.028,0.807,1.350,-0.660 +20,-6.853,-1.464,2.340,0.781 +20,3.714,0.486,-0.632,-0.260 +20,-5.971,-1.468,0.908,0.518 +20,-0.268,-0.221,-0.785,-1.447 +20,-1.536,0.426,0.205,0.649 +21,2.715,0.236,-0.788,0.055 +21,1.400,-0.120,0.158,0.662 +21,-4.348,-1.281,1.412,-0.503 +21,-2.298,-0.638,0.399,-0.530 +21,1.747,1.113,-1.288,-0.264 +21,-0.403,-0.672,0.125,1.116 +21,-1.100,-0.825,0.711,1.383 +21,1.525,-0.557,-0.184,0.236 +21,0.347,-0.308,-0.802,-0.451 +21,1.814,1.336,-0.638,-0.360 +22,1.508,0.998,-0.830,-1.504 +22,1.484,-0.551,-1.479,-0.659 +22,3.538,-0.114,-0.086,2.646 +22,-2.897,-0.413,-1.033,-2.192 +22,0.858,1.215,0.119,1.151 +22,2.180,1.421,0.100,-0.040 +22,0.172,-1.642,-0.632,-0.535 +22,1.408,-0.757,-1.048,1.292 +22,2.211,-0.330,-1.776,0.409 +22,-1.350,-1.026,0.538,0.722 +23,1.031,-0.951,-0.763,0.171 +23,-1.039,-0.599,-0.154,-0.095 +23,3.548,0.852,-0.927,1.278 +23,-4.160,-0.730,0.834,-0.839 +23,-3.684,-0.283,1.274,-1.198 +23,-1.689,-0.535,-1.462,0.004 +23,-8.015,-0.212,1.294,-1.186 +23,1.572,0.097,-1.187,0.799 +23,-4.676,-0.250,0.071,-1.909 +23,-1.166,1.113,-0.133,-0.002 +24,0.764,-0.910,-1.219,0.499 +24,0.544,0.606,-0.648,-0.352 +24,-4.941,-0.140,2.125,-0.621 +24,-6.073,-0.574,1.828,-0.496 +24,-0.466,1.760,0.662,0.577 +24,-3.807,-1.731,1.423,-1.273 +24,-5.325,-1.466,1.450,-0.033 +24,-0.690,0.558,0.205,-0.157 +24,2.937,0.463,-1.522,0.121 +24,-1.075,1.120,0.665,-0.027 +25,0.586,-1.934,0.487,-0.078 +25,4.579,0.122,-0.277,0.801 +25,5.319,0.346,-0.193,1.011 +25,-1.373,-0.579,0.667,0.203 +25,2.632,0.858,0.686,-0.232 +25,4.598,-1.548,-1.837,-0.674 +25,5.499,-0.534,-0.498,1.739 +25,-2.761,-0.833,1.159,-0.296 +25,1.194,-0.407,0.694,0.223 +25,1.862,0.488,0.699,-0.765 +26,-2.278,1.778,0.548,-1.161 +26,0.870,0.760,-1.173,-0.532 +26,-3.284,-0.174,0.420,-0.480 +26,-6.972,-1.281,2.018,-0.467 +26,3.189,0.225,-1.302,1.663 +26,-2.874,-1.918,-0.219,0.276 +26,0.860,-0.780,-0.033,0.718 +26,1.313,-0.295,-0.902,1.275 +26,1.157,1.364,0.100,0.182 +26,-1.504,0.325,1.028,-0.045 +27,3.006,0.060,-0.121,-0.249 +27,0.183,-0.031,-0.707,-1.023 +27,3.847,1.094,-1.035,-0.390 +27,4.337,0.764,-0.615,0.423 +27,0.152,-0.982,-0.063,-0.033 +27,2.437,0.412,-0.364,-0.368 +27,-2.428,-0.094,1.137,-0.567 +27,0.800,-1.248,-0.388,0.574 +27,3.406,0.146,-1.183,0.331 +27,2.004,-0.677,0.265,1.677 +28,1.218,-1.053,-0.145,1.227 +28,3.904,-0.052,-2.160,-1.443 +28,-2.239,-2.323,0.272,-1.011 +28,3.020,-0.515,-0.376,0.714 +28,5.075,-0.297,-0.631,0.237 +28,2.268,-1.948,-1.254,0.089 +28,-1.514,-0.537,0.633,-1.026 +28,3.999,0.556,-0.521,1.129 +28,-4.332,-0.673,1.321,-0.764 +28,-2.075,-0.152,0.708,-0.501 +29,0.749,1.557,-0.051,-0.443 +29,2.148,-0.326,0.021,0.759 +29,-6.026,-0.897,2.084,0.849 +29,0.460,0.019,-1.251,1.172 +29,-7.443,1.312,2.446,-0.731 +29,0.274,-1.671,-0.836,-0.304 +29,-3.548,0.369,1.813,-0.785 +29,-2.818,1.139,1.711,-1.980 +29,3.842,1.420,-0.526,0.405 +29,4.859,-0.643,-0.606,-0.086 +30,2.421,-0.744,-1.395,-0.906 +30,-0.696,-0.731,-0.376,-0.029 +30,3.166,0.299,-1.012,1.032 +30,4.993,1.226,-1.205,-0.836 +30,3.875,1.269,-0.259,0.762 +30,4.867,1.039,-0.137,-1.045 +30,4.115,-0.624,-0.459,0.869 +30,6.375,-0.349,-1.435,0.347 +30,-0.728,-0.545,-0.010,-0.193 +30,0.927,1.298,-0.089,-1.020 +31,-3.947,-0.332,1.426,-0.562 +31,-2.447,0.092,1.628,-1.118 +31,-2.073,-0.910,0.338,0.841 +31,1.755,0.404,-0.643,0.832 +31,2.661,0.117,-1.310,1.046 +31,0.522,0.829,1.584,0.150 +31,-2.025,-2.689,0.753,-1.073 +31,0.506,-0.310,0.162,0.622 +31,4.054,1.132,-0.580,2.055 +31,2.594,0.300,0.573,-0.240 +32,1.198,0.040,0.300,0.814 +32,4.111,-1.564,-0.946,1.113 +32,-0.007,0.903,0.308,-0.246 +32,6.223,0.437,-1.392,0.446 +32,-1.751,-0.853,0.846,1.091 +32,2.951,0.198,-0.096,-0.556 +32,3.107,1.627,0.439,1.354 +32,4.755,0.683,-1.247,0.132 +32,10.134,3.965,-1.666,0.474 +32,1.898,-0.160,-0.214,-0.242 +33,-0.141,-0.278,-0.155,-0.571 +33,-0.996,-1.091,0.040,0.504 +33,1.504,0.393,0.657,-0.153 +33,3.001,0.390,-0.657,1.333 +33,0.941,0.271,-0.446,-1.725 +33,0.140,-0.442,0.229,0.537 +33,3.236,0.328,-0.038,0.448 +33,6.092,1.119,-0.804,1.873 +33,3.721,-0.717,-0.142,2.595 +33,1.872,0.091,-0.006,0.001 +34,3.583,-0.027,-2.152,-0.173 +34,-2.981,-0.739,1.147,-0.598 +34,2.100,-1.109,-1.017,0.582 +34,2.951,0.373,0.187,1.662 +34,2.882,1.156,-0.985,-0.972 +34,1.156,0.920,0.132,0.126 +34,2.573,-0.382,-1.781,-2.263 +34,1.473,0.621,-1.212,-0.265 +34,5.465,0.662,-1.223,0.489 +34,5.761,0.732,-2.506,0.829 +35,-2.336,-0.206,0.577,0.777 +35,4.871,-0.408,-2.271,1.154 +35,0.054,-0.563,-0.635,-0.173 +35,-0.718,0.040,-0.482,-0.285 +35,1.458,0.690,0.257,2.124 +35,-2.909,-0.156,0.350,-1.078 +35,-5.051,-0.395,1.348,0.297 +35,-2.713,0.172,-0.134,0.072 +35,-4.350,-1.311,0.539,0.095 +35,-2.454,-2.899,-0.426,1.397 +36,-0.158,-1.846,-0.715,0.257 +36,0.411,1.673,-0.356,-0.249 +36,3.991,1.254,-1.384,0.284 +36,1.486,0.416,-0.279,-0.120 +36,4.728,1.904,-0.946,1.852 +36,-2.483,0.276,1.012,0.518 +36,-5.030,1.029,0.715,-1.634 +36,-3.989,-1.963,-0.021,0.161 +36,-3.877,-1.499,0.100,1.274 +36,-3.071,-2.605,-1.029,0.126 +37,-0.481,1.261,-0.041,-1.054 +37,-0.280,0.953,0.995,-1.270 +37,1.312,-0.694,0.187,0.732 +37,2.492,1.729,0.429,0.816 +37,6.964,0.319,-2.145,0.875 +37,-0.598,-0.614,1.727,0.933 +37,2.982,-1.482,-0.915,1.534 +37,1.650,1.285,-0.242,-0.789 +37,2.137,-0.484,-2.203,-0.665 +37,-0.009,-0.363,0.704,-1.062 +38,0.317,0.303,-0.577,-0.749 +38,3.891,0.415,-1.177,-0.152 +38,-4.492,-0.658,1.430,0.433 +38,2.864,-1.204,-2.236,-0.772 +38,4.384,-0.841,-2.680,0.508 +38,0.624,-0.348,-0.111,-0.728 +38,-3.318,-0.742,0.363,-1.583 +38,-3.131,1.271,0.796,-1.355 +38,1.950,1.277,-0.007,-0.700 +38,3.155,0.502,-0.795,0.329 +39,-1.211,-0.979,0.331,-0.469 +39,-4.067,-0.159,1.359,0.535 +39,4.327,0.806,-0.777,-0.669 +39,-3.758,-0.782,1.569,-0.240 +39,7.226,0.050,-1.749,0.073 +39,1.780,1.213,-0.297,-1.216 +39,2.834,-0.541,-1.777,0.554 +39,6.643,1.478,-1.060,2.442 +39,-0.760,-1.351,-0.009,-0.098 +39,3.779,0.365,-0.432,0.830 +40,5.014,1.494,-1.301,-1.205 +40,-2.441,-0.950,0.232,-1.089 +40,-1.263,0.610,-0.081,-2.875 +40,2.074,-1.062,-1.241,-0.316 +40,0.245,0.294,-0.347,-0.554 +40,-4.439,-1.165,0.763,0.160 +40,0.040,0.881,-0.325,0.722 +40,-0.883,-0.369,-0.130,-0.485 +40,-1.842,0.359,0.509,-0.682 +40,4.585,0.431,-2.152,-0.169 +41,1.781,0.638,-0.336,0.027 +41,1.474,2.097,0.598,0.485 +41,-2.119,0.380,1.233,0.304 +41,-0.548,-2.106,-0.974,0.401 +41,3.341,2.235,-0.377,1.456 +41,-4.529,0.323,2.301,-1.094 +41,1.258,1.326,0.378,0.213 +41,2.814,-0.438,-2.110,1.209 +41,0.278,0.155,0.147,-0.006 +41,-4.087,-0.532,0.709,-0.729 +42,-2.211,0.481,1.081,-1.780 +42,-2.757,0.180,1.169,-1.293 +42,-1.046,0.240,0.307,0.498 +42,-2.904,1.120,1.137,-0.470 +42,1.695,0.292,-0.626,-0.327 +42,-2.384,-0.807,0.623,0.557 +42,-4.496,-0.886,1.166,-0.600 +42,0.058,0.616,0.081,-0.806 +42,0.260,-1.820,-1.419,-0.667 +42,3.068,0.870,-1.344,0.798 +43,-2.124,-1.929,0.848,-0.894 +43,0.206,-2.501,0.122,1.085 +43,5.186,-0.080,-0.907,0.700 +43,3.018,0.053,1.252,2.824 +43,1.428,0.397,1.355,0.415 +43,-3.196,-1.850,-0.301,0.822 +43,-1.019,0.158,0.874,-0.286 +43,0.425,1.158,-0.194,-1.587 +43,0.740,0.479,-1.304,-1.844 +43,1.136,0.538,0.120,1.588 +44,3.600,-0.038,-1.212,-0.453 +44,6.946,2.042,-1.447,-0.632 +44,7.595,0.708,-1.386,-0.009 +44,6.710,-0.225,-1.176,0.721 +44,3.273,-0.326,0.045,1.660 +44,-5.731,-0.511,1.708,-1.851 +44,4.389,0.148,-0.908,0.793 +44,2.834,0.343,-1.669,-1.035 +44,-1.799,-0.337,0.228,0.017 +44,1.170,-2.062,-0.767,0.818 +45,0.535,-0.820,-0.120,-0.251 +45,-6.234,-1.400,2.038,-0.128 +45,0.862,0.349,-0.632,-0.677 +45,-0.236,-0.003,0.534,-0.129 +45,3.584,1.475,-1.010,-1.060 +45,4.264,1.444,-1.158,-0.119 +45,0.041,-0.102,0.392,0.673 +45,2.597,1.774,-0.472,0.050 +45,-1.500,-1.223,0.040,0.902 +45,-0.500,-1.243,-0.457,-0.437 +46,-3.335,-0.801,-0.762,-0.712 +46,1.953,2.025,-0.292,0.883 +46,-2.169,1.766,1.335,-0.565 +46,-3.729,-0.686,0.743,-0.804 +46,2.780,0.527,-0.906,1.164 +46,6.556,0.297,-1.815,1.370 +46,-1.609,-0.345,0.981,0.927 +46,-0.479,-0.444,-0.010,0.066 +46,-1.349,0.186,0.305,1.527 +46,0.427,-1.811,-0.997,0.470 +47,0.135,0.513,-0.224,-1.768 +47,2.827,1.184,0.131,0.239 +47,8.605,1.734,-0.725,1.701 +47,-6.415,0.082,1.629,-1.931 +47,5.864,-1.981,-1.910,0.421 +47,-5.495,-0.913,1.293,-0.806 +47,-1.632,0.881,0.510,-1.140 +47,3.177,-0.576,-0.877,-0.745 +47,1.892,0.120,-0.349,1.455 +47,-0.720,-1.703,-0.815,-1.099 +48,-5.151,-1.746,1.280,-0.668 +48,4.809,0.595,-3.003,-1.287 +48,0.397,-0.747,-0.390,-0.737 +48,-2.244,-0.242,0.772,0.183 +48,0.880,-0.328,-0.213,-0.017 +48,0.603,-0.584,-0.656,1.018 +48,-3.848,-0.831,0.209,-0.247 +48,1.590,0.133,-0.661,-0.065 +48,-2.572,-1.216,-0.505,0.419 +48,3.667,0.411,-1.495,-0.365 +49,1.970,-1.740,-0.791,1.613 +49,1.575,1.404,0.656,0.483 +49,1.800,1.813,-0.095,-0.166 +49,1.488,-0.372,-0.366,-0.538 +49,0.458,0.368,0.737,0.692 +49,3.625,0.186,-1.420,-0.338 +49,-1.437,0.089,-0.215,0.272 +49,2.828,-1.598,-1.775,0.039 +49,-2.733,0.038,-0.085,-1.766 +49,-1.147,-0.780,0.020,-0.541 +50,-3.664,-0.473,0.427,-1.311 +50,3.995,2.014,-0.950,0.343 +50,-1.559,-0.777,0.422,0.969 +50,-1.640,1.174,1.295,-2.164 +50,3.898,-1.331,-1.070,0.207 +50,1.047,1.415,0.205,0.343 +50,-2.494,0.313,0.096,0.419 +50,0.679,-0.030,-1.707,-1.256 +50,3.094,0.275,-1.096,0.316 +50,-1.785,2.583,0.174,-0.071 +51,1.880,0.126,0.633,0.501 +51,2.235,2.046,-0.435,-1.561 +51,2.130,-0.518,-0.084,1.507 +51,-0.025,1.209,0.393,-0.868 +51,3.092,0.832,-0.492,-0.361 +51,2.464,0.769,0.285,0.629 +51,-0.887,-0.232,-0.299,-1.320 +51,-2.278,0.595,-0.608,-0.468 +51,2.465,-0.760,-1.043,0.104 +51,1.200,-0.541,-0.786,0.585 +52,-0.585,-0.681,-1.111,0.206 +52,-0.001,0.313,-0.011,-0.330 +52,-2.064,0.172,0.468,-0.206 +52,2.236,0.813,0.343,0.332 +52,-5.225,1.958,3.055,-0.615 +52,-3.143,1.679,1.273,-1.067 +52,-1.666,-0.841,0.036,-0.260 +52,-3.680,-1.081,1.373,0.535 +52,4.455,-0.226,-1.404,1.075 +52,2.333,0.251,-0.597,-1.127 +53,1.574,0.724,-0.656,0.448 +53,-1.908,0.820,0.905,0.435 +53,4.639,2.302,-1.682,1.163 +53,-4.378,-2.057,0.433,-0.252 +53,0.423,-0.429,-0.394,0.559 +53,4.757,0.330,-2.044,0.957 +53,1.930,0.938,-0.258,0.739 +53,-0.164,-0.028,-0.642,-0.852 +53,0.087,2.305,0.669,-0.422 +53,-0.576,-1.828,-0.541,-0.020 +54,-1.900,-1.350,0.123,0.785 +54,1.552,-0.502,-0.884,0.923 +54,-3.983,1.371,1.807,-0.840 +54,4.666,-0.440,-1.302,1.481 +54,-4.322,-1.508,1.918,0.929 +54,-1.038,-1.173,0.327,1.551 +54,-4.185,-0.224,0.993,0.116 +54,1.527,1.558,0.605,0.695 +54,1.338,0.968,0.345,-0.464 +54,5.425,-2.053,-2.113,2.459 +55,-2.041,0.143,0.838,0.899 +55,-5.906,-0.649,0.859,0.636 +55,-0.896,-1.464,-1.813,0.638 +55,-3.709,1.788,0.937,0.156 +55,2.463,2.194,-0.830,1.480 +55,-0.661,0.618,-1.593,-1.310 +55,2.459,0.481,-1.046,1.488 +55,-1.561,1.402,0.546,-0.768 +55,-3.503,0.114,-0.341,-1.008 +55,-6.849,0.283,1.591,-0.483 +56,1.726,-0.215,-0.550,2.576 +56,-2.531,0.206,-0.413,-1.930 +56,-1.994,-2.159,-0.905,-0.459 +56,-0.821,-0.038,-0.598,0.487 +56,-4.719,-0.904,0.487,-0.920 +56,-5.948,-0.669,0.693,-0.097 +56,-1.048,-0.228,-0.459,0.112 +56,-0.620,0.112,-0.292,0.960 +56,-2.081,-0.091,1.384,1.528 +56,-1.761,-1.839,-0.629,-1.320 +57,0.075,0.467,0.845,0.766 +57,-1.729,1.307,0.509,-1.556 +57,-0.937,0.778,1.274,0.821 +57,5.041,-0.089,-1.535,1.051 +57,1.743,-0.828,0.088,0.310 +57,1.353,0.478,0.249,0.758 +57,-0.945,-0.071,0.324,0.404 +57,-2.857,1.384,1.623,-0.149 +57,-0.854,0.076,-0.622,-1.393 +57,-0.190,-0.219,-0.249,-0.150 +58,-3.036,-0.306,1.597,-1.592 +58,7.755,0.893,-1.651,0.322 +58,7.854,-0.447,-1.569,0.130 +58,-0.794,-1.871,-0.461,-0.656 +58,4.460,0.821,-0.762,0.254 +58,5.812,-0.264,-0.898,1.560 +58,-0.897,1.103,0.409,-0.920 +58,-2.883,-0.141,2.812,0.343 +58,0.281,0.397,0.221,-1.115 +58,2.691,0.417,-1.845,-1.678 +59,-2.474,1.756,1.723,1.503 +59,-0.786,0.826,0.857,-0.713 +59,-2.271,1.845,1.499,0.080 +59,-4.252,1.104,1.623,0.665 +59,2.237,0.154,-1.419,0.490 +59,2.842,0.312,-0.154,1.273 +59,-4.701,-0.538,1.046,1.008 +59,-0.690,0.112,-0.376,-0.141 +59,1.104,0.714,-0.717,0.733 +59,-6.472,-0.481,1.267,1.689 +60,-2.874,0.599,1.304,0.255 +60,-2.459,-1.345,0.875,1.478 +60,1.603,0.676,-0.272,1.598 +60,3.231,-0.427,-0.429,2.720 +60,-2.503,-0.052,-0.118,-1.575 +60,-2.147,-0.008,-0.506,-1.255 +60,-2.164,-1.288,0.106,-0.602 +60,-2.965,-1.093,-1.143,-0.555 +60,-0.039,0.664,1.032,1.310 +60,-1.669,-0.476,0.421,0.370 +61,-4.431,-1.143,1.485,-0.066 +61,0.890,-0.286,-0.027,1.377 +61,0.293,-0.333,-1.025,-0.153 +61,1.080,-1.457,-1.168,0.245 +61,3.126,0.463,-1.801,-0.027 +61,2.397,0.551,-0.397,0.453 +61,-2.897,-1.072,-0.260,-2.388 +61,-0.874,0.259,0.219,-0.349 +61,-4.387,-2.514,0.178,0.207 +61,-0.889,-0.206,0.455,-0.464 +62,3.146,0.616,-1.598,1.413 +62,1.374,0.541,-0.696,0.837 +62,-1.677,2.261,1.487,1.797 +62,-9.820,-0.180,1.344,-3.170 +62,-2.031,0.406,-0.900,-1.686 +62,1.744,-0.709,-1.613,0.925 +62,-1.406,-1.508,-1.203,0.778 +62,-4.337,-0.513,0.232,-0.540 +62,-2.969,0.084,-0.774,-1.351 +62,-4.210,0.734,0.801,0.073 +63,-3.706,-1.056,0.179,-0.258 +63,-3.948,-0.141,1.649,-0.450 +63,-5.833,-1.710,1.148,-0.294 +63,-3.023,0.794,1.400,-0.328 +63,-3.104,-0.238,0.374,-0.960 +63,-5.653,-0.413,1.419,-0.177 +63,2.825,0.370,-1.225,0.539 +63,-0.205,0.370,-0.349,0.105 +63,-4.344,0.070,0.558,-1.173 +63,3.806,0.298,-0.934,1.361 +64,-2.995,0.299,1.120,0.222 +64,3.819,3.240,-1.010,0.512 +64,1.129,-0.386,-1.883,-0.942 +64,-5.746,-2.489,1.593,0.456 +64,2.208,0.463,-1.417,-0.243 +64,-0.899,-0.657,0.095,0.155 +64,4.256,0.950,-1.954,-0.644 +64,-2.527,1.123,0.970,0.884 +64,-1.091,1.201,0.390,-1.054 +64,-2.696,0.350,1.312,0.142 +65,0.468,-1.677,0.010,0.463 +65,8.450,0.629,-2.047,1.215 +65,-0.024,1.440,0.163,-1.295 +65,4.694,0.981,-0.400,-0.606 +65,1.320,0.985,0.872,-0.505 +65,-2.195,0.760,0.875,-0.859 +65,-0.134,0.630,1.300,0.950 +65,1.870,-0.784,-1.029,-0.220 +65,-3.341,-0.469,0.546,-1.459 +65,-1.630,0.863,0.907,-0.960 +66,-2.512,-0.266,0.644,-1.435 +66,-1.546,-0.858,-0.451,-1.863 +66,2.164,1.008,0.618,-0.367 +66,-0.657,0.531,0.874,0.896 +66,-7.163,0.755,1.817,-1.287 +66,2.219,0.435,-1.981,0.605 +66,-2.108,1.111,0.165,-1.495 +66,0.637,-1.642,-1.713,0.271 +66,0.571,0.023,-0.271,-0.303 +66,4.315,0.373,-1.033,1.028 +67,-1.577,-1.953,-0.351,0.074 +67,2.137,2.228,0.618,0.713 +67,-0.259,0.507,1.456,0.528 +67,2.180,1.110,1.030,2.691 +67,-1.018,1.019,1.209,0.163 +67,-0.502,-0.677,-1.197,-0.372 +67,-5.064,-0.811,1.649,0.261 +67,-2.345,-0.010,0.925,-0.420 +67,-0.438,-0.711,-0.296,0.060 +67,-6.666,-0.973,1.661,0.378 +68,1.789,-1.080,-0.912,0.662 +68,2.694,0.182,-1.935,0.481 +68,-2.016,-1.505,-0.344,-0.266 +68,-0.087,1.678,0.111,0.310 +68,0.509,-0.203,0.132,1.852 +68,2.158,-0.430,-1.563,0.192 +68,2.538,-0.098,-0.748,0.544 +68,0.443,1.596,0.479,0.305 +68,-1.354,1.501,-0.140,0.651 +68,-4.017,1.332,1.213,-0.111 +69,-1.160,-0.994,-0.320,0.304 +69,-1.066,0.078,-0.369,-0.123 +69,-3.455,-2.185,0.341,-0.378 +69,-7.344,0.058,1.153,-1.763 +69,-0.815,-1.649,-0.564,-0.365 +69,-0.368,0.483,-0.655,-0.495 +69,3.920,0.088,-2.260,0.285 +69,3.544,-0.051,-1.580,-0.127 +69,0.540,1.121,0.378,-0.494 +69,-1.766,-1.680,1.333,-0.677 +70,0.505,-2.132,0.116,-0.128 +70,0.136,-2.086,-0.340,0.302 +70,-3.264,-0.247,0.609,-1.172 +70,0.404,1.904,0.231,-0.945 +70,-1.648,0.425,0.601,-1.868 +70,-2.909,0.399,0.914,-0.530 +70,0.130,0.087,-0.093,0.267 +70,-1.463,0.078,0.993,-1.703 +70,0.322,-0.408,-0.394,0.348 +70,2.110,-0.427,-0.602,0.527 +71,-2.352,-2.310,0.237,0.080 +71,-1.733,-1.087,0.237,-0.841 +71,2.554,-0.567,-0.957,0.912 +71,-3.456,-0.867,2.520,0.552 +71,-0.757,0.504,1.407,0.084 +71,0.515,0.650,0.666,0.628 +71,-1.751,0.336,1.438,0.933 +71,-0.180,0.071,0.393,0.108 +71,-0.238,0.581,-0.718,-0.513 +71,2.051,-1.057,-2.949,-1.085 +72,-6.198,-2.431,0.698,-1.339 +72,-0.762,-1.867,-0.588,1.275 +72,-0.885,-0.434,-0.137,-0.402 +72,-4.173,-0.335,0.993,0.225 +72,0.543,0.209,-0.378,1.474 +72,-3.284,0.274,1.394,0.495 +72,1.142,0.009,0.200,1.215 +72,0.763,1.810,-0.078,-1.112 +72,-6.039,-0.708,1.110,0.094 +72,-2.611,-0.343,-0.092,-1.483 +73,2.261,1.463,-1.092,0.401 +73,-9.199,-0.284,1.951,-1.369 +73,5.924,2.285,-1.207,0.592 +73,-6.053,-0.520,0.388,-0.258 +73,-2.715,-0.584,-1.259,-1.696 +73,-1.393,-0.675,-0.124,0.748 +73,0.016,-0.983,-0.356,0.325 +73,-4.934,-1.859,0.342,0.239 +73,1.975,0.753,-0.368,0.738 +73,2.399,0.910,-1.242,-0.936 +74,-3.831,-0.450,1.332,-0.491 +74,-2.370,-0.220,0.171,-1.711 +74,0.361,-0.590,-0.197,-0.255 +74,-1.935,-1.019,1.140,0.775 +74,6.135,-0.678,-2.944,1.388 +74,2.752,0.982,-0.022,-1.240 +74,-6.363,-2.525,1.626,-1.948 +74,-0.044,0.331,-0.152,0.063 +74,2.534,-0.240,-0.449,0.901 +74,-1.740,-1.053,1.390,0.383 +75,-0.103,-0.550,-0.491,0.431 +75,1.159,-0.587,-0.766,1.055 +75,0.361,-0.417,0.051,-0.314 +75,-1.968,-0.683,-0.043,-0.092 +75,0.302,1.069,1.601,2.402 +75,1.462,0.662,-1.385,-1.588 +75,1.729,-1.630,-0.524,1.932 +75,-2.485,0.685,0.049,-0.733 +75,-2.368,-0.202,-0.353,-0.991 +75,0.861,1.239,0.258,0.003 +76,0.079,-0.262,-0.767,-0.455 +76,3.358,1.165,0.225,2.377 +76,-1.728,-1.453,0.077,-0.715 +76,-0.690,0.951,-0.111,-0.638 +76,-2.702,-0.934,0.940,0.876 +76,1.708,-0.120,-1.204,0.177 +76,1.030,0.136,-1.206,-0.778 +76,3.450,0.616,-0.250,1.930 +76,3.211,-0.881,-0.352,1.963 +76,1.049,0.894,0.276,2.085 +77,-2.008,-0.197,-0.228,0.933 +77,-5.884,-1.617,0.940,-0.698 +77,-5.632,-1.403,0.296,-1.125 +77,-2.229,0.805,-0.627,-1.038 +77,-2.273,1.540,0.873,0.508 +77,-2.848,-0.157,0.717,1.029 +77,-0.702,-1.660,-0.779,0.201 +77,3.758,1.748,-0.580,1.098 +77,-1.856,-1.737,0.173,1.830 +77,4.175,0.855,-0.334,1.928 +78,-6.126,-0.308,1.590,-0.064 +78,2.012,-0.103,-1.603,0.858 +78,-1.806,-0.709,-1.165,1.556 +78,-4.015,-1.540,-0.858,-0.733 +78,-4.064,-0.989,0.492,-0.135 +78,3.969,0.472,-0.202,1.616 +78,-0.202,-0.301,0.843,0.571 +78,-0.988,0.883,0.313,-1.922 +78,-1.037,0.267,0.941,-0.487 +78,0.216,-0.667,0.142,2.078 +79,-5.819,1.749,0.594,-1.080 +79,0.952,1.733,-0.164,-0.208 +79,-4.258,-1.089,-0.363,-0.162 +79,6.662,-0.424,-3.015,3.278 +79,-4.843,-1.898,0.597,1.031 +79,-2.060,0.905,-0.048,-0.121 +79,-7.295,-1.295,1.905,0.156 +79,-2.954,0.402,0.039,-1.023 +79,-5.308,-0.638,0.638,-0.869 +79,-0.916,-0.090,-0.749,-1.479 +80,-2.441,0.520,0.431,-1.029 +80,-1.315,0.129,0.251,-1.574 +80,-3.015,-0.952,0.097,-1.162 +80,1.581,0.990,-1.243,-1.140 +80,1.556,1.765,0.218,0.484 +80,2.332,1.181,-0.604,0.703 +80,-2.282,-0.812,0.855,-0.306 +80,-0.836,-1.404,-0.638,-0.011 +80,-1.535,-0.909,-0.191,-0.527 +80,-5.520,0.723,2.488,-1.129 +81,-1.830,0.155,1.039,-2.495 +81,3.005,0.439,-1.595,0.106 +81,-4.380,-1.220,0.931,1.132 +81,3.925,1.654,-0.826,-0.834 +81,0.490,0.962,0.499,-0.313 +81,2.340,-0.132,-0.427,-0.597 +81,-3.939,-1.169,0.918,-0.972 +81,3.428,0.167,0.482,0.793 +81,2.457,-0.274,-0.548,-1.251 +81,1.670,0.105,0.682,-0.048 +82,4.656,0.341,-1.466,-0.020 +82,2.453,-0.598,-0.879,0.585 +82,4.198,0.292,-0.891,1.523 +82,0.981,-0.564,-0.226,1.833 +82,-1.615,0.363,1.307,0.625 +82,1.657,-2.018,-0.054,-0.468 +82,-2.971,-1.262,1.126,-0.618 +82,1.763,-0.072,-1.046,-0.771 +82,2.067,1.024,0.246,-0.397 +82,5.828,-0.021,-1.961,-0.887 +83,-2.209,-1.498,0.574,0.200 +83,-5.588,-1.989,0.937,-0.774 +83,-1.136,0.674,0.952,0.131 +83,-1.935,-1.700,0.534,0.161 +83,-3.567,-1.518,-0.337,-0.828 +83,2.354,-0.520,-0.168,1.217 +83,-0.032,0.693,-0.320,-0.139 +83,-3.320,-2.033,0.748,-0.153 +83,-0.601,0.828,0.456,-0.816 +83,-1.409,-3.310,-0.285,2.011 +84,-3.929,0.348,-0.531,-2.952 +84,-4.121,-0.257,0.406,-0.594 +84,-1.069,1.365,-0.445,-0.954 +84,-2.144,-0.068,-0.320,0.590 +84,-1.840,-0.736,0.238,0.829 +84,-1.111,0.443,0.412,0.598 +84,0.924,1.686,0.178,0.283 +84,3.254,0.983,-1.199,0.778 +84,1.728,-1.360,-0.046,0.491 +84,-0.374,-0.188,-0.230,-0.066 +85,0.606,-0.259,1.321,0.925 +85,7.176,0.513,-1.508,2.212 +85,-1.193,1.021,0.749,-0.021 +85,1.726,2.851,0.451,-1.272 +85,-5.578,-0.004,3.052,-0.879 +85,1.767,-0.067,-0.259,-0.221 +85,-2.564,-0.843,0.863,0.185 +85,-2.548,-0.796,-0.205,-0.340 +85,-0.434,-0.351,0.041,0.492 +85,0.388,0.030,0.168,-0.014 +86,0.094,-0.866,-0.290,1.217 +86,3.301,1.402,-0.121,-0.416 +86,-3.511,0.149,2.777,-1.295 +86,3.018,-0.431,-0.614,1.391 +86,-0.028,1.299,0.950,-0.386 +86,0.567,-0.528,-0.125,1.022 +86,0.387,0.744,0.265,-0.025 +86,-0.006,0.709,0.084,0.572 +86,3.578,-0.393,-0.486,1.559 +86,-3.285,-0.756,2.053,0.611 +87,4.731,0.532,-0.226,2.548 +87,-0.657,-0.412,0.947,1.211 +87,-4.734,-0.830,1.115,-1.103 +87,1.456,0.442,0.084,-0.528 +87,4.756,0.920,-1.346,-0.972 +87,0.821,-0.853,-1.141,1.121 +87,0.314,0.297,-0.782,-0.805 +87,-2.199,0.050,1.533,0.899 +87,-3.158,0.211,0.749,0.783 +87,0.254,1.471,-0.579,-0.251 +88,-0.865,0.168,1.200,0.642 +88,2.451,1.370,-0.274,-0.242 +88,0.312,-1.181,0.664,-0.112 +88,-5.395,-0.112,2.361,0.185 +88,-3.367,-0.485,0.644,0.024 +88,1.195,1.153,-0.518,-2.101 +88,1.551,0.515,-0.734,-0.886 +88,-2.132,0.275,0.973,-0.666 +88,1.786,0.425,-0.507,1.020 +88,-0.462,1.246,1.628,-0.804 +89,2.312,0.820,-0.371,-0.658 +89,-4.450,-0.863,0.318,0.312 +89,-2.346,-0.474,1.364,1.379 +89,0.152,-0.901,-0.621,-0.187 +89,2.896,1.603,-0.152,0.963 +89,4.602,1.910,-0.469,0.871 +89,-3.902,-0.714,-0.305,-0.776 +89,1.855,-0.269,-0.154,0.196 +89,-2.482,-0.836,0.649,0.176 +89,-3.053,-0.761,1.485,0.608 +90,-6.035,-0.432,0.251,-0.863 +90,1.492,0.832,-1.281,1.144 +90,-3.158,-0.905,-0.441,-1.495 +90,-2.837,1.323,-1.088,-1.365 +90,-5.454,-0.180,-0.516,-2.322 +90,-4.642,0.548,0.757,0.157 +90,-2.400,-0.203,0.221,-0.581 +90,-1.076,-0.006,-0.578,0.602 +90,-1.746,1.691,-0.011,-1.032 +90,-4.686,0.977,0.279,-1.075 +91,-0.134,0.622,0.043,0.840 +91,2.256,-0.572,-0.749,1.375 +91,0.396,1.052,1.615,-0.181 +91,-0.094,-0.544,-1.093,-1.235 +91,-0.559,-0.206,0.458,0.300 +91,-3.244,-0.862,0.963,1.264 +91,1.182,0.731,0.078,-0.166 +91,-0.760,-0.328,0.669,1.268 +91,-5.022,-0.198,1.453,-1.667 +91,-1.189,0.317,0.952,-0.401 +92,0.580,0.888,1.033,1.164 +92,1.151,-0.687,-0.473,0.065 +92,0.638,0.210,0.654,0.130 +92,6.303,0.448,-2.154,0.038 +92,10.819,1.068,-2.702,0.719 +92,1.840,-0.368,-0.862,0.656 +92,0.818,0.313,-1.135,-1.209 +92,1.714,0.479,-1.777,-0.647 +92,-3.757,-1.726,1.294,-0.103 +92,2.867,-0.200,-0.367,1.559 +93,-1.075,0.737,0.683,0.387 +93,-1.809,-0.192,1.225,1.253 +93,-0.162,0.718,-0.864,-1.996 +93,-0.086,0.800,-0.760,0.345 +93,0.277,-0.310,-0.578,0.628 +93,1.038,0.223,-0.851,-0.123 +93,0.096,2.373,1.025,0.263 +93,2.424,0.321,-1.386,-0.968 +93,5.238,1.276,-1.405,-0.091 +93,-0.541,-0.579,0.121,0.774 +94,-1.807,0.770,1.650,0.646 +94,-1.648,0.233,0.561,-1.161 +94,-0.516,-0.139,-0.222,-0.606 +94,-1.644,-0.304,0.246,-0.916 +94,3.475,-0.042,-1.237,1.457 +94,-1.850,-0.391,1.486,0.723 +94,1.006,0.340,-0.705,0.871 +94,-1.020,-0.365,-0.471,0.809 +94,4.580,2.225,-1.202,-0.200 +94,-0.687,-0.569,0.684,0.523 +95,2.804,0.196,-0.594,0.440 +95,-0.051,1.191,0.500,0.752 +95,3.468,0.263,-0.570,0.267 +95,3.511,0.291,-0.645,1.487 +95,0.147,-0.069,-0.055,-0.422 +95,-1.176,0.338,0.728,0.625 +95,-3.518,0.026,0.956,0.229 +95,1.703,0.511,-0.103,0.764 +95,1.575,0.867,-1.132,0.097 +95,3.817,-0.037,-1.496,1.547 +96,-6.757,1.237,2.496,0.803 +96,-0.048,-0.285,0.283,1.723 +96,-2.052,-1.054,0.310,0.081 +96,-0.007,1.248,0.582,0.685 +96,-3.161,0.926,0.366,-1.011 +96,0.632,-0.137,-0.067,-1.231 +96,0.250,-0.482,0.221,-0.671 +96,0.879,0.428,-0.225,-1.159 +96,0.724,-0.468,1.086,2.674 +96,-1.573,-0.328,0.813,0.170 +97,1.169,-0.655,0.056,0.658 +97,3.806,2.158,-0.927,-0.323 +97,-1.313,-2.615,0.139,-0.456 +97,2.646,0.018,-0.956,-0.439 +97,0.050,-1.130,-0.616,-0.887 +97,-2.652,-0.453,0.642,0.385 +97,-3.565,0.654,1.795,-0.327 +97,0.896,1.009,0.958,0.189 +97,-3.316,0.398,1.637,-1.229 +97,2.441,1.499,-0.374,-0.620 +98,-1.405,0.612,0.079,-1.122 +98,-2.941,-1.028,1.913,-0.509 +98,3.193,1.168,-1.521,-2.237 +98,-4.622,-0.978,1.839,-1.000 +98,0.185,0.659,0.991,2.953 +98,-4.008,-1.294,1.003,-0.390 +98,-1.857,-1.240,-0.299,-1.865 +98,-0.406,0.958,0.529,0.067 +98,1.283,-0.802,0.600,1.152 +98,-7.966,-0.242,2.226,-1.481 +99,-2.571,2.002,0.371,-0.166 +99,-2.924,0.065,-0.034,-0.482 +99,0.137,0.299,-0.754,-0.868 +99,-2.847,0.779,-0.981,-0.540 +99,-5.385,-0.866,0.915,-0.089 +99,-0.454,0.435,-1.368,0.557 +99,-5.394,0.128,1.273,-1.093 +99,-6.883,0.039,2.217,-0.760 +99,-1.998,-0.373,-0.110,0.279 +99,-3.484,-0.270,0.246,-0.002 +100,-7.087,-0.600,0.463,-0.620 +100,-1.886,-1.771,-0.796,1.421 +100,-4.757,-0.067,-0.247,0.368 +100,-0.149,1.066,0.341,1.617 +100,-4.014,0.477,0.520,1.457 +100,-1.022,2.134,0.000,-0.885 +100,0.773,0.077,-1.151,0.090 +100,-4.506,0.940,2.135,0.141 +100,3.558,0.064,-2.049,0.733 +100,-1.154,-0.330,0.284,0.868 +101,-3.250,0.475,1.767,-1.083 +101,2.638,0.845,-0.576,1.867 +101,-1.530,0.569,0.612,0.277 +101,-0.874,-0.574,-0.296,0.148 +101,-6.408,-0.515,0.451,-2.040 +101,4.064,1.397,-0.700,0.223 +101,1.426,0.048,0.188,-0.982 +101,1.379,-0.289,0.687,1.812 +101,0.994,0.640,-0.503,-0.723 +101,4.370,0.626,-1.172,-0.831 +102,-4.626,0.884,2.596,0.302 +102,-3.741,-1.861,0.571,-0.545 +102,-0.996,-1.187,-2.024,-1.703 +102,1.295,-0.103,-0.417,0.056 +102,-1.520,-0.189,-1.102,0.365 +102,0.891,0.023,-0.687,0.964 +102,4.007,1.979,0.251,0.490 +102,-3.814,-1.175,0.793,-0.128 +102,0.732,1.256,-0.176,0.183 +102,-4.669,-1.436,0.532,-0.348 +103,-3.578,-1.417,1.690,0.213 +103,2.926,-0.161,-0.811,0.682 +103,5.683,1.922,-0.644,1.270 +103,-5.110,-1.453,1.143,-0.864 +103,-0.669,-0.004,0.248,1.772 +103,3.036,1.107,-1.158,-1.330 +103,-2.228,-0.258,-0.514,-0.905 +103,-3.765,-1.047,1.031,-0.041 +103,-1.167,-0.074,0.733,0.282 +103,3.295,0.101,-2.898,-1.013 +104,0.599,-0.642,0.071,-0.097 +104,2.437,1.440,-0.901,-1.464 +104,-1.320,-0.844,-0.332,0.009 +104,2.702,1.833,1.595,1.750 +104,-0.647,0.637,-0.200,0.371 +104,1.581,0.875,-0.251,-0.822 +104,1.297,-0.538,0.385,-0.135 +104,0.497,0.567,0.714,0.961 +104,5.281,1.114,-1.471,-0.423 +104,0.429,-0.427,0.438,0.235 +105,-0.075,-0.377,0.233,0.032 +105,-0.008,0.870,-0.787,-0.014 +105,-1.805,0.464,0.386,0.087 +105,-1.564,0.990,0.720,-0.553 +105,0.097,0.471,0.092,0.387 +105,1.363,0.286,-0.516,-0.878 +105,2.158,0.008,-0.615,-0.272 +105,-1.390,-1.953,-0.063,1.072 +105,3.214,0.896,-0.728,0.165 +105,0.292,-0.213,0.598,-0.092 +106,-4.407,0.190,1.269,-0.941 +106,0.873,0.207,-1.625,-1.286 +106,-1.247,-0.976,0.347,-0.160 +106,-2.016,-0.461,1.074,-0.123 +106,-2.333,-1.475,-1.130,-1.305 +106,-3.574,0.743,1.230,-1.348 +106,-0.225,-0.374,-0.139,-0.335 +106,0.171,1.254,-0.084,-1.127 +106,-0.640,-0.137,1.057,-0.230 +106,-0.333,0.566,-0.133,-1.560 +107,1.983,-0.735,-1.415,-1.435 +107,1.655,-0.716,-0.074,0.697 +107,1.150,1.343,1.233,0.214 +107,-0.625,0.040,2.119,1.563 +107,-1.128,-0.125,1.087,1.409 +107,1.367,0.237,0.308,0.749 +107,0.387,-0.409,-0.229,-0.092 +107,3.943,0.563,-0.448,0.228 +107,2.859,0.163,0.204,0.562 +107,1.316,0.045,1.054,-0.316 +108,0.678,-0.004,-0.847,-0.998 +108,-2.830,0.509,0.400,-1.209 +108,-3.589,-1.894,0.457,0.408 +108,-4.282,0.952,1.241,-3.157 +108,2.738,-0.358,-1.049,0.665 +108,1.696,1.070,-0.380,0.203 +108,2.566,-0.823,-0.874,-0.366 +108,-3.044,0.501,1.537,-0.908 +108,-0.628,-0.115,-0.454,-1.450 +108,-2.061,-1.412,-0.411,-0.484 +109,3.495,0.895,-0.821,-0.717 +109,1.285,-0.291,0.099,0.157 +109,2.031,-0.467,-0.728,0.661 +109,-0.780,-0.225,-0.022,-0.877 +109,-0.180,-1.162,0.023,0.553 +109,-2.237,-0.848,0.569,-0.918 +109,-0.302,0.180,0.765,0.267 +109,-2.529,1.125,1.416,-2.126 +109,-4.125,0.659,1.906,-0.651 +109,-1.774,-1.177,0.391,0.633 +110,1.277,-0.056,0.048,0.218 +110,2.150,0.729,0.571,2.470 +110,-1.645,0.778,1.537,2.191 +110,1.882,0.661,-0.495,-1.252 +110,0.482,1.266,-0.525,-3.117 +110,-2.728,-0.118,0.105,-0.375 +110,-1.472,-0.664,-0.745,0.104 +110,2.318,0.945,-0.527,0.676 +110,-7.732,0.817,2.809,-1.853 +110,0.921,-0.470,-0.713,0.194 +111,-2.592,0.536,0.702,0.603 +111,-1.206,-0.017,0.274,1.012 +111,-3.046,-0.024,0.037,0.098 +111,1.533,1.257,-1.068,-0.805 +111,-3.113,0.158,0.449,0.280 +111,-3.204,0.226,-0.224,-0.714 +111,-0.276,0.214,-0.171,0.297 +111,-4.681,-0.524,0.228,-1.293 +111,3.001,2.159,-1.117,1.272 +111,-1.571,1.362,0.144,-0.491 +112,-1.363,0.285,0.426,-1.155 +112,-2.094,-0.554,0.785,0.118 +112,3.246,0.698,-1.494,-1.482 +112,5.205,2.803,-0.511,1.702 +112,-1.788,-0.297,0.530,0.079 +112,1.335,0.260,0.375,-0.300 +112,-0.672,-1.587,0.547,-0.792 +112,4.900,-0.525,-1.359,-1.271 +112,0.852,-0.487,-0.397,0.001 +112,2.302,-0.768,-0.476,0.515 +113,3.351,-1.462,-1.301,-0.887 +113,-1.231,-1.532,-0.413,1.017 +113,-2.011,0.595,0.999,-0.051 +113,2.865,0.384,-1.844,-0.147 +113,-0.333,0.062,0.863,-0.939 +113,3.297,0.283,-1.448,-0.819 +113,-0.543,-0.117,1.171,-0.314 +113,4.399,-0.191,-0.712,0.321 +113,5.240,-0.134,-2.415,0.228 +113,-1.111,0.519,0.488,-1.859 +114,0.075,-0.363,-0.713,-1.119 +114,-2.079,-1.178,1.945,1.691 +114,-2.373,-0.955,-0.124,0.097 +114,-3.619,-1.342,0.420,0.365 +114,6.590,0.342,-2.164,1.129 +114,2.757,-0.686,-0.402,0.863 +114,-0.003,-0.628,-0.532,-2.095 +114,3.244,-0.533,-0.078,1.849 +114,7.313,2.968,-1.222,0.080 +114,-0.583,-0.282,-0.892,-1.702 +115,5.231,0.491,-1.422,-0.389 +115,-4.483,-0.102,1.422,-0.254 +115,0.564,0.250,0.239,-0.934 +115,4.562,1.178,-0.736,1.027 +115,1.893,-1.127,-0.878,1.825 +115,4.777,-0.680,-2.024,-0.324 +115,1.793,-1.585,-0.011,1.406 +115,2.135,0.664,-0.726,-0.822 +115,6.124,0.774,-2.213,-0.109 +115,-2.695,-1.536,1.558,0.205 +116,-0.298,-0.044,-0.356,-1.101 +116,-1.415,-2.640,-1.106,-0.943 +116,-2.626,1.732,0.228,0.819 +116,-4.190,-0.441,1.543,0.019 +116,-6.450,-0.150,0.210,-1.701 +116,4.290,-0.118,-0.596,0.090 +116,3.710,0.644,-1.231,-0.524 +116,5.326,0.319,-0.378,1.017 +116,3.552,-0.244,-0.274,0.429 +116,2.409,1.246,0.087,0.554 +117,-3.510,0.025,1.729,-1.137 +117,1.717,0.406,-0.819,-0.803 +117,1.579,0.874,-0.266,-0.287 +117,2.632,0.359,-1.228,-0.446 +117,-0.934,-0.080,0.298,0.647 +117,3.636,-0.869,-1.186,0.892 +117,-0.953,-0.323,-0.398,0.035 +117,1.822,2.503,0.983,0.529 +117,-1.162,-0.262,0.223,-0.824 +117,-4.449,-0.965,1.439,-0.759 +118,1.427,0.362,-1.074,-1.702 +118,2.373,-2.322,-0.920,0.083 +118,3.944,0.569,-0.776,1.586 +118,0.276,-0.157,0.266,-0.840 +118,-4.256,-0.730,0.024,-1.476 +118,-0.823,-0.723,1.088,-0.983 +118,-0.745,-0.724,0.200,-0.328 +118,2.670,-0.535,-1.203,1.679 +118,-1.127,-0.014,0.510,-0.796 +118,3.674,0.795,-0.075,2.215 +119,-0.259,-0.011,-0.335,0.662 +119,-1.087,-0.446,-0.139,0.918 +119,-5.336,-0.902,-1.058,-2.252 +119,-4.049,-1.028,-0.744,0.259 +119,-3.193,0.791,-1.073,-3.004 +119,-5.987,-0.588,0.001,-0.512 +119,-1.798,0.872,1.022,1.686 +119,0.029,1.886,0.296,1.225 +119,-1.642,-0.685,-1.210,0.015 +119,-2.636,-0.967,0.309,1.279 +120,-6.934,-0.910,0.896,-0.738 +120,1.008,0.417,-1.468,-0.314 +120,-3.432,0.406,0.358,-0.908 +120,-6.057,0.571,0.779,-1.208 +120,-1.562,0.216,0.869,0.109 +120,0.412,1.053,0.237,-0.319 +120,-2.766,0.405,0.934,0.600 +120,-3.247,0.530,0.765,-1.679 +120,-0.361,-0.915,0.051,0.875 +120,-2.146,-0.443,0.443,-0.100 +121,2.712,0.381,-1.467,-0.175 +121,0.352,0.608,0.005,-0.996 +121,-1.689,-0.517,0.047,-1.773 +121,0.307,-0.928,-0.287,-0.284 +121,3.261,0.185,-0.388,0.686 +121,3.883,1.578,-0.371,0.992 +121,3.532,0.640,-0.270,0.058 +121,6.680,0.708,-1.467,0.417 +121,3.094,0.565,-1.003,-0.250 +121,0.080,-1.368,0.495,-0.543 +122,0.725,-0.569,0.575,1.394 +122,2.762,0.053,-0.596,0.502 +122,0.922,0.580,0.621,2.422 +122,-0.719,-2.162,0.517,0.978 +122,3.497,1.696,-0.500,-0.041 +122,-1.030,0.302,0.319,-0.044 +122,-1.254,-0.704,1.720,0.812 +122,-0.278,-0.089,0.844,-0.698 +122,0.264,0.619,0.141,-1.561 +122,5.685,0.186,-1.548,0.057 +123,-4.541,-1.413,2.011,-0.991 +123,1.404,-0.508,-0.847,-0.944 +123,-0.029,1.747,1.156,0.494 +123,1.203,-1.308,-1.599,1.339 +123,2.097,0.012,-0.093,0.561 +123,-0.858,0.609,0.975,1.331 +123,2.570,-0.203,0.303,1.016 +123,0.232,-1.063,-0.958,-1.362 +123,1.585,-1.011,-0.622,-0.447 +123,-3.551,-0.594,1.644,-1.392 +124,-6.854,-0.496,1.115,-0.628 +124,0.308,0.160,-0.693,0.019 +124,-4.326,-0.986,-1.466,-1.201 +124,-1.815,1.489,-0.094,-0.319 +124,-2.570,-0.131,0.685,1.315 +124,-1.075,0.180,0.062,-1.575 +124,1.916,0.206,-0.612,0.557 +124,2.195,1.332,-0.426,0.360 +124,-0.644,1.073,-0.245,-0.270 +124,-6.403,-0.604,1.281,-0.524 +125,-0.985,-0.174,-0.396,0.078 +125,-0.234,2.151,0.230,-0.902 +125,4.112,0.569,-2.494,-1.591 +125,-6.095,-1.135,2.036,0.068 +125,-0.841,-0.039,0.866,1.168 +125,-3.203,0.264,0.843,-1.005 +125,5.067,0.018,-0.453,2.571 +125,0.593,0.781,0.366,-0.549 +125,-0.628,1.090,1.318,0.723 +125,0.409,0.602,0.457,0.442 +126,-3.997,0.558,0.573,-1.716 +126,-6.155,1.028,2.677,0.510 +126,-1.013,2.870,1.838,1.560 +126,-1.629,0.042,-0.687,0.470 +126,-5.318,-0.847,1.021,-0.100 +126,-1.303,-1.850,-0.055,1.614 +126,-2.754,-0.707,0.115,-0.385 +126,-2.229,-0.605,-0.067,-0.616 +126,0.867,0.443,-1.431,0.451 +126,-2.450,0.482,-0.494,-0.962 +127,-1.162,1.263,0.671,-0.127 +127,-1.825,0.716,1.137,-0.382 +127,-0.988,0.689,0.250,-0.456 +127,-4.699,0.186,2.471,0.587 +127,-3.415,-0.468,0.444,-0.364 +127,0.245,-1.526,-0.623,0.677 +127,4.078,-0.235,-0.341,1.024 +127,0.937,0.198,-0.338,-0.942 +127,1.464,0.381,-0.331,-0.412 +127,-4.727,-0.842,0.881,-1.915 +128,2.911,-0.856,-0.847,1.222 +128,-0.774,-0.527,0.925,2.185 +128,-0.972,1.745,0.341,-1.917 +128,0.164,1.761,0.912,1.481 +128,-0.067,0.369,-0.703,-0.674 +128,-4.687,-1.288,0.063,-1.934 +128,-1.478,0.740,0.326,-0.543 +128,-3.222,-0.320,0.475,-0.091 +128,3.322,-0.310,-0.523,2.172 +128,5.264,-0.661,-2.300,1.681 +129,-0.125,-1.825,0.591,1.672 +129,-0.389,-0.689,-0.585,-1.214 +129,-7.974,-1.620,0.790,-1.446 +129,-1.346,0.341,0.384,-0.270 +129,1.441,0.243,-1.065,0.914 +129,-2.394,0.567,0.547,-0.762 +129,-0.951,-0.336,-0.426,-1.487 +129,-1.618,0.242,-0.323,0.472 +129,4.307,-1.051,-0.943,2.107 +129,0.851,-0.169,-0.977,0.037 +130,2.739,0.235,-0.880,-0.482 +130,2.367,-2.169,-1.221,1.712 +130,2.442,2.112,1.239,1.282 +130,5.283,1.713,-0.424,-0.027 +130,4.151,0.647,-0.215,0.100 +130,2.635,1.982,-0.513,0.353 +130,1.107,1.123,1.200,1.114 +130,4.129,-1.041,-0.238,1.143 +130,-1.608,-2.053,-0.250,0.531 +130,-0.907,-0.145,0.498,-0.449 +131,-0.388,0.912,-0.254,0.052 +131,-0.802,-0.558,0.250,1.895 +131,-2.246,-1.399,0.032,0.877 +131,-3.274,-0.762,-0.138,-1.180 +131,-0.425,-1.013,-1.242,0.877 +131,-2.816,-0.506,0.722,0.185 +131,-4.351,-1.902,0.260,-1.866 +131,0.516,-0.036,-0.444,-0.195 +131,1.082,1.182,0.930,1.082 +131,-3.906,1.501,1.831,-0.230 +132,0.274,-1.626,-1.339,-1.101 +132,-4.955,-0.749,1.028,-0.039 +132,3.969,0.125,-1.870,-0.526 +132,-1.829,-0.739,0.488,-0.829 +132,1.084,-1.911,0.775,1.332 +132,6.592,3.811,-1.061,-1.174 +132,3.584,0.056,-1.641,-0.462 +132,2.940,1.492,0.089,1.205 +132,1.413,1.316,0.121,1.522 +132,-0.114,-0.249,0.268,-0.638 +133,1.899,1.055,-0.725,-1.330 +133,-3.703,-2.905,-0.922,-0.712 +133,-0.860,-0.511,-0.077,0.151 +133,0.327,-1.544,-1.264,-0.722 +133,5.761,3.218,-0.680,-0.285 +133,-1.664,-0.938,0.329,0.782 +133,1.930,1.231,-1.158,-0.652 +133,-0.578,0.070,-0.800,-0.241 +133,-1.146,-0.791,0.244,-0.069 +133,-1.478,-0.276,-0.389,-1.643 +134,-2.494,-0.186,1.936,-0.492 +134,1.078,-0.358,-0.305,-0.565 +134,0.666,0.974,0.749,0.845 +134,0.626,0.798,1.041,2.016 +134,2.362,0.356,-0.632,-0.257 +134,2.409,-0.057,-2.043,-1.113 +134,1.139,-0.598,-0.577,0.067 +134,-2.084,-2.276,-0.421,0.826 +134,0.292,-0.471,-0.868,-0.964 +134,0.946,2.074,0.984,0.112 +135,2.733,2.076,-0.246,-0.206 +135,-1.765,-0.771,-0.010,-0.459 +135,0.627,0.270,-0.027,-0.416 +135,3.774,0.120,-1.318,-0.196 +135,-1.844,-1.889,-0.320,-0.101 +135,2.669,-1.628,-0.862,-0.599 +135,2.581,-1.485,-0.167,-0.163 +135,0.661,0.124,0.649,-0.566 +135,2.165,-0.595,-0.692,-0.923 +135,5.976,0.191,-1.550,1.345 +136,-5.352,-0.766,0.572,-2.291 +136,3.755,1.172,-1.279,0.674 +136,-2.129,0.418,0.799,-0.947 +136,3.447,1.280,-0.081,-0.068 +136,0.578,0.295,0.713,0.291 +136,-0.068,1.109,0.904,0.806 +136,-0.597,-0.134,-0.013,0.948 +136,-1.216,-0.279,-1.111,-1.234 +136,-1.952,-1.084,-0.115,0.629 +136,-3.021,-0.664,0.568,-0.196 +137,2.406,1.739,0.573,-0.026 +137,-0.370,-0.219,0.016,-1.235 +137,-2.726,0.954,-0.249,-1.565 +137,-0.723,-1.132,-1.130,1.185 +137,-0.411,1.688,-1.085,-0.610 +137,5.469,1.703,-1.896,-0.626 +137,-1.731,0.109,0.335,0.381 +137,0.852,1.048,1.398,0.622 +137,2.496,1.482,-0.284,-1.431 +137,-2.046,0.013,-0.621,0.318 +138,-4.921,-1.797,1.316,-0.519 +138,0.745,-1.130,-1.076,-0.280 +138,1.699,1.118,0.717,0.224 +138,2.059,-0.516,-0.203,0.703 +138,1.134,1.270,-0.042,1.200 +138,3.317,2.072,-0.542,-0.536 +138,1.334,0.686,1.343,1.603 +138,-4.370,1.013,1.893,-2.051 +138,1.889,0.330,1.206,-0.258 +138,1.410,-0.700,-0.508,-0.212 +139,-3.361,-0.674,1.267,0.269 +139,-1.926,0.395,1.746,0.532 +139,-1.947,-0.675,-0.205,0.151 +139,-1.083,0.264,0.102,-0.403 +139,-4.798,-1.189,0.677,-0.459 +139,4.884,1.526,0.057,0.225 +139,0.244,-0.445,0.941,0.234 +139,4.914,1.319,-0.658,-0.372 +139,7.124,0.393,-1.904,0.909 +139,3.093,-0.543,-1.305,1.657 +140,-0.218,-1.051,0.307,2.264 +140,-2.117,-1.581,-0.207,0.390 +140,0.981,0.726,-1.316,-2.256 +140,-3.010,0.340,0.697,0.049 +140,-1.472,-0.167,0.686,0.210 +140,3.525,-0.794,-1.549,1.171 +140,-0.774,1.418,0.926,0.265 +140,-5.441,-1.207,1.208,0.931 +140,-0.656,-1.430,-1.038,-0.442 +140,1.110,-0.532,-0.198,0.727 +141,0.654,0.959,0.593,-0.184 +141,2.037,-0.199,0.233,1.610 +141,4.572,0.544,-0.731,1.858 +141,6.342,1.440,-0.691,0.173 +141,0.016,2.241,0.370,-1.340 +141,-0.807,1.300,2.451,0.116 +141,-0.126,-0.716,0.355,-1.018 +141,5.995,0.050,-0.894,0.350 +141,-0.367,1.823,0.768,-2.099 +141,3.059,0.644,-0.192,-0.403 +142,-1.261,1.762,-0.829,-1.038 +142,-2.910,0.221,0.367,1.027 +142,-1.902,0.295,-0.242,-0.558 +142,-2.997,0.812,-0.270,-1.107 +142,-1.286,0.879,-0.515,0.301 +142,-0.383,0.369,-0.276,-0.456 +142,0.281,0.018,-1.556,-0.542 +142,-4.307,0.685,0.395,-1.393 +142,-0.550,1.428,-0.454,-1.338 +142,-4.425,-0.922,0.605,0.011 +143,2.333,-1.122,0.202,0.801 +143,5.768,0.049,-1.472,0.035 +143,-1.639,-0.188,1.588,0.166 +143,-1.613,-2.460,0.457,-0.162 +143,-2.915,-0.955,0.987,-0.730 +143,1.102,-0.314,0.466,0.906 +143,1.042,-0.731,1.088,1.212 +143,2.297,-0.217,0.464,0.124 +143,0.270,-0.299,0.547,-1.664 +143,1.754,-1.817,-0.493,-0.437 +144,-1.891,1.006,-0.603,-0.978 +144,-0.947,-0.085,0.279,0.835 +144,0.273,0.060,-0.713,1.691 +144,0.602,-1.666,-1.753,0.357 +144,-1.997,-0.936,-0.206,0.773 +144,-1.610,-0.328,0.721,1.489 +144,-8.376,0.917,2.286,0.388 +144,3.774,1.055,-2.377,0.163 +144,-4.136,1.121,0.449,-0.033 +144,-3.827,0.831,0.242,-0.675 +145,1.514,0.467,-1.308,0.104 +145,-4.924,0.455,1.554,-0.127 +145,-3.616,0.116,-0.311,0.068 +145,-5.659,-0.676,1.332,-0.275 +145,-5.011,0.435,2.760,0.395 +145,2.710,0.831,0.279,0.678 +145,0.882,-0.542,0.036,-1.238 +145,-5.060,-2.963,0.952,-0.685 +145,2.120,-1.090,-1.468,-0.107 +145,3.587,1.219,0.555,1.909 +146,-0.261,0.481,-0.080,1.261 +146,3.193,0.243,-0.579,0.809 +146,-1.180,-0.361,0.403,-0.102 +146,-3.197,0.630,-0.139,-1.291 +146,-0.157,0.236,-0.613,-1.696 +146,-7.153,0.403,1.569,-1.854 +146,-4.556,-1.589,0.439,-0.970 +146,-3.393,1.566,1.155,-0.376 +146,-0.564,0.517,-0.524,0.640 +146,1.701,-0.985,-1.345,1.044 +147,1.306,0.322,0.407,0.532 +147,-1.624,1.594,0.600,-1.756 +147,3.121,-0.021,-0.871,-1.696 +147,3.118,-1.305,-2.094,-0.543 +147,1.019,-1.919,0.027,-1.150 +147,4.570,0.527,-1.103,1.339 +147,-1.641,0.272,0.586,0.469 +147,2.160,0.513,0.007,1.394 +147,-2.357,1.087,0.872,-0.269 +147,1.077,-0.056,-0.699,-1.249 +148,-2.165,-0.087,-0.502,-1.127 +148,1.461,-0.249,-1.104,-0.132 +148,-0.649,-0.985,0.364,1.930 +148,1.617,-0.468,-0.606,-0.513 +148,4.846,0.374,-1.062,1.083 +148,0.751,-0.675,0.484,-0.288 +148,0.604,-0.550,-1.202,-1.644 +148,-0.683,-0.615,0.076,-1.053 +148,0.178,1.486,1.516,0.721 +148,-4.154,-1.528,1.284,-0.957 +149,4.227,0.774,-1.145,0.222 +149,-3.530,-1.885,0.289,-1.953 +149,2.327,1.025,-0.752,-1.934 +149,4.669,0.164,-0.765,0.222 +149,4.005,0.532,-0.388,1.622 +149,3.737,0.702,-1.153,1.342 +149,-1.875,1.197,0.854,1.142 +149,-1.795,-0.444,0.792,1.821 +149,2.485,0.527,-0.989,0.809 +149,-1.633,-1.126,-0.292,0.143 +150,-4.899,-2.448,0.362,-0.910 +150,-1.196,0.613,0.548,-0.431 +150,-2.267,2.780,1.331,-0.590 +150,-1.225,-1.078,1.167,2.112 +150,-2.721,0.247,0.978,0.392 +150,1.496,-0.167,0.092,0.217 +150,-0.002,-0.484,-0.746,-0.702 +150,3.028,-0.049,-0.008,0.643 +150,-0.102,0.062,0.370,0.987 +150,2.183,0.544,0.597,0.048 +151,-3.486,-1.023,1.586,0.910 +151,-2.932,0.508,1.014,-0.835 +151,-6.036,0.813,0.429,-0.947 +151,-4.295,1.127,0.553,-1.166 +151,4.498,1.186,-1.461,1.216 +151,-0.105,0.604,0.197,0.551 +151,-0.796,0.067,-0.667,-0.127 +151,-0.813,1.477,-1.182,-2.047 +151,-0.980,0.734,-0.936,-0.605 +151,0.651,-0.214,-0.044,1.402 +152,-2.125,-0.944,0.745,0.820 +152,-5.842,-0.982,0.525,-0.819 +152,-4.763,1.371,0.753,-0.718 +152,0.986,0.933,-0.075,1.251 +152,-4.607,-0.451,-0.039,0.935 +152,-1.417,0.779,-0.519,-0.064 +152,-3.043,0.638,0.747,0.333 +152,-3.335,-0.006,0.861,1.428 +152,-1.122,2.048,-0.721,-1.570 +152,-3.070,-0.876,0.324,1.276 +153,-4.393,-0.662,1.111,-0.162 +153,4.690,-0.176,-2.173,-0.609 +153,-3.521,-0.181,0.624,-0.208 +153,-4.830,0.487,1.445,-0.048 +153,-1.531,0.083,-0.264,0.070 +153,-0.751,0.471,0.682,-0.332 +153,-1.841,0.624,1.527,0.846 +153,-0.765,-0.342,-1.045,-1.501 +153,0.787,-0.745,-0.851,-0.094 +153,6.147,-0.082,-1.666,0.946 +154,-1.962,-0.448,0.868,-0.516 +154,3.544,0.467,-0.207,0.794 +154,1.293,-1.250,0.261,0.594 +154,0.585,-0.024,-0.069,-1.668 +154,1.369,0.336,-1.254,-0.059 +154,1.126,-2.569,-0.758,1.015 +154,3.606,0.877,-0.687,2.202 +154,6.642,1.689,-0.851,1.645 +154,-3.274,-1.415,1.315,0.417 +154,-2.068,-0.866,1.813,1.594 +155,-0.694,0.150,0.539,-0.313 +155,-0.641,1.428,2.077,0.820 +155,4.344,2.349,-0.937,-1.917 +155,1.231,-0.862,-0.334,0.227 +155,4.491,-0.246,-1.249,0.198 +155,1.970,0.338,-0.241,-1.053 +155,6.844,1.231,-0.485,0.826 +155,-1.881,-1.583,-0.510,-1.892 +155,5.599,-0.138,-1.103,1.652 +155,5.117,-0.334,-1.141,1.600 +156,-2.902,1.087,0.656,-0.590 +156,-4.818,-0.963,0.896,1.246 +156,-1.599,-0.275,0.047,0.735 +156,0.153,0.116,-0.327,0.288 +156,-4.536,-1.881,0.615,-0.554 +156,2.506,1.200,-0.665,-0.936 +156,-4.363,-1.229,1.658,-0.279 +156,0.718,-0.709,-0.080,0.214 +156,-1.047,-0.176,-0.118,-0.889 +156,-1.149,0.471,0.587,0.155 +157,-4.610,-1.296,0.455,-1.073 +157,-0.636,0.061,-0.046,1.118 +157,-2.377,-0.141,-0.602,-0.691 +157,-2.597,-1.675,-0.085,0.357 +157,-3.067,0.038,0.028,-1.452 +157,0.661,0.028,-0.784,-0.369 +157,-4.713,-0.919,1.158,1.509 +157,-2.335,-1.361,0.123,0.564 +157,1.649,0.776,-1.521,-0.382 +157,3.241,-0.449,-0.843,0.137 +158,4.691,0.011,-0.598,1.830 +158,4.421,0.243,-0.871,0.671 +158,2.472,-0.054,0.287,1.751 +158,1.049,-0.051,0.641,-0.963 +158,-1.464,0.232,1.478,0.004 +158,0.002,0.637,0.752,0.307 +158,6.876,0.630,-1.205,1.123 +158,1.329,1.451,-0.049,-0.164 +158,-2.077,-2.107,0.701,0.325 +158,3.891,0.172,0.436,1.312 +159,-0.823,-1.313,-1.368,-1.425 +159,1.892,0.360,-0.065,0.839 +159,2.418,0.380,0.221,1.822 +159,-4.392,0.663,2.105,-1.375 +159,1.612,1.377,0.873,0.879 +159,1.218,0.469,-0.714,0.375 +159,-1.501,-1.094,-0.785,-0.553 +159,-4.134,-1.313,0.167,1.113 +159,-1.439,-0.727,1.036,1.639 +159,-4.243,0.374,0.427,-0.486 +160,-1.155,0.347,-0.157,-0.930 +160,-0.223,0.108,-1.602,-1.309 +160,3.973,-1.585,-2.735,1.081 +160,-4.079,-1.054,1.243,1.052 +160,1.326,-0.122,-1.959,-0.817 +160,-0.286,-0.119,-0.735,0.369 +160,2.993,0.257,-1.627,0.720 +160,-4.606,-0.479,0.501,-1.538 +160,-1.562,2.367,1.126,0.694 +160,-4.327,2.165,0.906,-2.263 +161,3.442,1.303,-0.105,0.825 +161,-3.102,-0.700,0.312,-0.652 +161,-0.138,1.818,0.637,-1.572 +161,2.081,1.313,-0.295,-1.348 +161,1.755,-1.173,-1.262,1.592 +161,-1.140,-0.366,0.829,0.925 +161,3.977,-0.069,-0.849,1.285 +161,3.277,-0.014,-0.573,0.554 +161,2.572,0.116,-1.485,0.432 +161,4.253,0.642,-2.236,-1.101 +162,1.790,0.773,-0.960,-0.662 +162,0.224,-0.137,1.245,2.066 +162,2.676,0.813,-0.585,-0.535 +162,2.231,-0.134,-1.209,0.024 +162,2.591,1.326,0.007,1.186 +162,0.516,-1.138,0.560,-0.163 +162,0.748,-1.105,-0.597,-1.558 +162,1.031,0.616,0.073,-0.098 +162,-3.009,-1.572,1.483,-0.361 +162,0.488,-0.549,-0.279,-0.087 +163,-3.447,1.400,2.168,-0.339 +163,-0.238,0.615,-0.008,-0.529 +163,-2.080,0.242,-0.048,-0.264 +163,-3.588,-0.191,1.220,-0.680 +163,-0.862,-1.883,-0.442,-0.098 +163,-0.889,0.983,1.330,1.548 +163,-3.610,-0.310,0.704,0.640 +163,1.401,-0.032,0.051,0.908 +163,4.509,0.949,-1.514,1.843 +163,-1.975,-1.128,0.491,-0.240 +164,-4.913,-1.304,0.815,-1.917 +164,1.494,-0.824,0.804,1.080 +164,-0.234,-0.967,0.136,0.222 +164,0.452,-0.805,-0.197,-0.429 +164,-4.216,-1.183,1.305,0.995 +164,0.003,-0.469,-0.189,-0.502 +164,-0.239,-1.139,-0.958,-1.384 +164,-0.490,0.647,1.715,0.439 +164,-2.632,-0.709,1.119,-1.118 +164,0.556,0.515,0.969,-0.288 +165,2.165,1.045,-0.117,0.344 +165,4.209,1.219,0.449,0.877 +165,0.144,0.746,0.230,-0.682 +165,-1.441,0.413,1.271,-1.168 +165,3.671,0.344,-0.454,2.288 +165,0.727,-1.197,0.068,-0.089 +165,-6.128,-0.722,1.395,-0.484 +165,1.938,-0.486,-2.168,-0.445 +165,-3.016,-1.484,-0.062,-0.778 +165,0.949,1.112,-0.466,0.288 +166,1.599,1.802,-1.059,-1.627 +166,-2.559,0.701,-0.632,-0.986 +166,2.103,-1.183,-0.983,1.625 +166,-4.004,-2.591,-0.458,-0.269 +166,-3.809,-1.109,1.348,-0.066 +166,-1.692,-0.515,0.333,-1.272 +166,-5.378,0.056,1.924,-1.633 +166,-1.398,-1.050,1.351,-0.266 +166,1.036,-0.508,0.594,1.279 +166,-2.741,-0.863,0.647,-1.752 +167,-2.163,0.193,1.295,0.471 +167,-6.664,-1.421,1.538,-0.544 +167,-0.422,0.159,-0.336,-0.337 +167,0.610,1.545,-0.467,-1.398 +167,1.402,-0.224,-0.070,0.672 +167,0.053,-0.443,-1.448,-0.564 +167,-2.997,1.021,0.718,-1.411 +167,6.286,0.971,-2.228,-0.113 +167,0.438,1.787,-0.265,-0.751 +167,-1.507,0.453,0.427,1.754 +168,1.358,-0.105,-0.689,-1.881 +168,-0.109,-1.347,0.094,-0.463 +168,-0.557,-0.379,0.450,1.653 +168,2.018,0.203,-0.291,-0.997 +168,1.444,-0.499,-0.019,-0.532 +168,1.566,-0.735,-1.555,-1.124 +168,2.410,-0.556,-0.103,-0.161 +168,-0.027,-0.449,0.689,-0.514 +168,-3.885,-0.217,1.770,-1.756 +168,7.011,0.426,-1.205,1.099 +169,2.783,-0.504,-1.296,0.618 +169,1.620,0.142,-0.841,-1.197 +169,-1.087,-0.559,0.451,1.174 +169,-1.666,-1.284,1.280,0.978 +169,4.328,0.754,-1.582,-1.431 +169,-3.058,-1.357,0.587,0.418 +169,-0.552,0.178,-0.161,0.377 +169,-7.710,-0.731,2.116,-2.190 +169,-3.435,-0.922,1.795,0.929 +169,0.116,-0.883,-2.308,-2.141 +170,2.403,0.880,-1.289,-0.891 +170,-1.620,1.109,2.211,-0.085 +170,5.376,0.570,-0.323,1.520 +170,-1.338,-1.413,0.067,-0.325 +170,1.890,0.672,0.791,0.741 +170,-2.057,-0.391,0.853,1.227 +170,-1.421,0.221,0.257,-0.794 +170,3.947,0.016,-0.083,2.574 +170,-4.074,-1.177,1.419,-0.332 +170,0.498,-1.793,-0.212,0.307 +171,-2.815,-0.924,0.483,-0.637 +171,-1.376,0.924,0.246,-0.172 +171,3.425,0.461,-1.821,-0.595 +171,-3.246,-1.525,0.149,-0.421 +171,0.802,-0.611,-1.325,-0.244 +171,-0.881,-1.186,-0.245,0.984 +171,0.542,1.068,-0.341,-1.283 +171,2.012,0.081,-0.246,1.149 +171,-1.171,-0.288,0.614,0.155 +171,-1.852,0.159,1.128,-1.331 +172,-1.176,1.405,1.828,-0.519 +172,3.909,-1.161,-1.949,0.635 +172,-0.941,1.007,1.005,-0.336 +172,4.101,0.329,-0.422,1.544 +172,1.370,-0.432,0.196,0.426 +172,-1.030,-1.242,-0.272,0.215 +172,0.631,0.224,-0.655,-0.680 +172,-1.364,-1.210,0.080,-0.292 +172,1.479,-1.464,-0.455,0.347 +172,0.342,-0.351,-0.087,0.698 +173,-2.697,-0.248,1.192,0.527 +173,-1.457,-0.718,-0.627,0.175 +173,-3.896,-0.178,1.532,0.374 +173,-0.907,0.469,0.550,0.750 +173,1.842,-0.331,-0.681,0.376 +173,-0.371,-2.054,-0.887,-1.011 +173,2.207,-0.486,-1.221,0.527 +173,1.107,-0.349,-1.025,-0.429 +173,-1.446,-0.180,1.333,0.688 +173,-0.654,0.553,0.792,0.728 +174,-4.177,0.214,1.307,-1.158 +174,-1.742,0.567,1.247,-1.154 +174,2.309,1.756,-0.765,-0.926 +174,-1.191,-1.288,0.722,1.166 +174,-0.599,-0.275,-0.598,0.561 +174,3.233,-0.826,0.070,0.181 +174,-0.588,-0.440,0.946,0.799 +174,1.364,-0.747,-0.754,0.272 +174,0.459,0.294,0.291,-0.499 +174,1.128,-0.212,-0.220,-0.134 +175,-0.111,-0.280,0.400,0.815 +175,5.323,1.175,-0.462,1.639 +175,3.833,0.536,-0.403,0.484 +175,2.777,1.008,0.140,1.113 +175,2.365,0.645,-0.467,0.465 +175,0.493,-1.682,-0.666,0.379 +175,0.556,-0.419,-0.082,0.150 +175,-3.943,-0.242,1.375,-0.043 +175,-0.066,1.033,0.167,-1.175 +175,3.772,0.805,-0.760,0.357 +176,2.094,0.906,-0.544,1.654 +176,2.441,0.855,-0.268,0.610 +176,1.891,1.973,0.486,0.274 +176,2.294,2.177,-0.067,0.537 +176,1.547,0.801,-0.643,-1.450 +176,-0.493,-1.456,0.459,-0.512 +176,1.480,1.929,1.344,0.716 +176,3.812,0.425,-0.858,-0.041 +176,3.517,-0.123,-2.316,-1.105 +176,0.529,-1.167,-0.270,0.574 +177,1.362,-0.761,-0.312,0.975 +177,1.131,2.493,1.424,0.342 +177,-2.873,0.272,0.646,-0.236 +177,2.895,1.180,-0.102,0.596 +177,1.471,0.921,-0.592,-0.431 +177,1.566,-2.265,-1.322,1.513 +177,-1.444,-0.838,-0.740,-0.803 +177,-1.260,-0.711,-0.338,0.090 +177,-1.429,-0.813,0.274,-0.391 +177,-2.146,-1.030,0.472,0.023 +178,2.898,1.196,-0.648,1.465 +178,-5.403,-1.601,0.792,-0.821 +178,-1.107,-1.133,-0.788,0.012 +178,2.444,-0.357,-0.115,1.246 +178,-0.784,-1.304,0.409,0.968 +178,5.151,-0.900,-1.854,1.062 +178,4.362,1.498,-0.264,1.233 +178,3.985,1.021,-2.187,-1.288 +178,-3.103,0.061,0.945,-1.076 +178,1.846,0.084,-0.829,-0.503 +179,3.057,-0.111,-0.857,1.104 +179,-0.317,-1.762,-0.299,-0.138 +179,1.940,-1.112,-1.109,0.425 +179,-1.385,0.636,-0.053,-0.520 +179,-4.743,-0.403,0.353,-0.559 +179,-4.165,-0.848,0.319,-2.215 +179,-2.446,0.067,1.435,0.136 +179,2.142,0.723,-0.539,-0.343 +179,-1.661,0.875,-0.653,-2.136 +179,0.057,0.927,0.502,-0.208 +180,0.774,-0.189,0.581,-0.749 +180,-0.817,1.860,2.151,-0.475 +180,4.243,-1.070,-1.950,0.987 +180,1.624,1.229,-0.365,-0.386 +180,3.450,1.652,-0.811,-0.473 +180,1.745,1.229,-0.458,0.005 +180,-0.765,0.133,-0.179,-1.017 +180,-0.266,-0.767,-1.076,-0.579 +180,-2.333,0.578,0.291,-1.121 +180,-0.683,-0.044,0.532,-1.083 +181,3.594,-0.236,0.603,0.539 +181,4.216,1.386,0.519,0.379 +181,3.101,-0.686,-0.601,-0.714 +181,1.358,0.309,0.158,-1.823 +181,2.163,0.617,1.239,-0.002 +181,-0.064,-0.702,0.009,0.174 +181,1.410,-0.709,0.101,-0.478 +181,-4.849,-1.062,0.978,-3.014 +181,3.989,-1.290,-0.415,0.075 +181,5.121,-0.804,-1.252,0.834 +182,-2.162,0.800,0.401,-3.176 +182,3.330,0.589,0.089,0.354 +182,-0.749,0.214,0.088,0.287 +182,2.642,0.091,-0.340,0.002 +182,0.585,-1.090,-0.220,0.554 +182,0.056,0.989,1.046,-0.254 +182,-5.317,-0.569,1.062,-1.101 +182,2.021,0.261,-1.718,-0.606 +182,1.088,-0.723,0.793,2.206 +182,0.840,1.249,-0.252,-1.083 +183,0.248,1.138,-0.694,-1.522 +183,-5.273,-0.264,0.933,-0.525 +183,0.848,0.441,0.059,-0.529 +183,1.133,1.741,0.747,0.135 +183,-0.456,-0.838,-1.090,-0.913 +183,-4.527,0.147,1.978,-0.208 +183,4.024,1.118,-0.428,0.136 +183,-2.665,-0.332,0.580,-0.393 +183,-0.661,-0.659,-0.354,-0.674 +183,-2.630,-0.345,0.711,-0.772 +184,-1.726,0.322,-0.109,-0.711 +184,-2.076,-0.481,0.076,1.548 +184,-3.555,-1.704,1.784,-0.369 +184,0.113,0.444,0.586,0.277 +184,-1.048,1.095,1.710,0.571 +184,-4.873,1.086,1.557,-0.709 +184,4.201,-0.615,-1.079,0.885 +184,-0.054,-0.196,0.325,1.293 +184,5.746,-0.307,-2.507,-1.174 +184,2.139,0.619,-1.477,-1.868 +185,0.010,0.040,1.554,0.033 +185,2.072,-0.400,-0.100,0.257 +185,5.120,0.973,0.135,1.873 +185,3.287,-0.317,-1.534,-1.476 +185,-0.666,0.917,1.684,-0.574 +185,0.516,-0.608,0.756,0.420 +185,7.015,0.295,-0.771,0.073 +185,3.908,-1.291,-1.776,0.321 +185,3.274,0.873,0.449,0.138 +185,7.185,-1.016,-1.885,-0.097 +186,-0.370,0.788,0.444,0.225 +186,1.474,-0.301,-0.044,-0.147 +186,2.517,0.703,-0.233,-0.604 +186,-1.856,-0.458,1.015,0.204 +186,2.994,0.247,-0.470,0.231 +186,-1.939,-1.478,0.470,0.033 +186,-3.844,-0.480,1.529,0.571 +186,-0.345,1.173,0.009,-1.928 +186,1.442,-0.673,-1.050,-0.693 +186,4.713,0.278,-1.958,-0.136 +187,0.460,0.958,0.570,0.367 +187,-0.969,0.454,0.476,-0.256 +187,-1.098,0.414,0.148,-1.553 +187,-0.320,0.650,-0.572,-2.317 +187,-0.562,-0.781,-0.560,0.869 +187,-3.497,-0.569,1.577,-0.543 +187,1.485,0.675,-0.446,0.136 +187,1.218,-1.617,-1.288,-0.248 +187,-0.060,-0.634,-0.274,0.320 +187,-2.399,-0.563,0.574,-0.217 +188,1.132,-0.462,-1.335,0.232 +188,-2.232,-0.119,1.351,0.517 +188,-0.268,0.626,-0.065,-0.400 +188,-2.189,0.119,0.404,-0.445 +188,-4.616,-3.220,0.147,-0.422 +188,-2.259,-0.380,-0.422,-0.974 +188,-1.631,0.655,1.417,1.549 +188,-7.691,1.455,2.368,-1.608 +188,-0.863,0.031,0.600,0.796 +188,1.247,-0.262,-0.904,0.094 +189,-2.074,-0.190,-0.681,-1.938 +189,-1.558,-0.469,0.015,-0.442 +189,-2.306,0.847,-0.454,-0.713 +189,-0.311,-0.777,-0.433,0.212 +189,-3.604,-0.001,1.744,-0.140 +189,-0.505,1.685,1.459,1.997 +189,-3.862,-0.098,1.274,1.232 +189,-6.133,-1.599,1.039,-0.070 +189,-5.428,-0.668,0.705,0.179 +189,-10.108,-1.827,1.867,-1.034 +190,-2.216,-1.612,-0.291,-2.102 +190,-0.121,-0.313,-0.242,0.920 +190,-1.297,0.696,0.633,-0.648 +190,-3.471,-0.238,1.038,-0.344 +190,-0.126,0.898,0.868,0.871 +190,-0.403,-0.825,0.492,0.717 +190,-0.968,0.453,-1.394,-1.553 +190,-1.836,-0.490,-0.355,0.403 +190,-1.706,0.899,0.547,-0.316 +190,-3.294,-0.555,0.185,-1.146 +191,1.923,-0.539,-0.313,-1.303 +191,1.876,0.887,2.043,-0.808 +191,-6.460,-0.887,3.611,0.359 +191,3.829,1.079,0.568,1.070 +191,2.523,0.546,1.279,1.002 +191,3.621,0.122,-0.412,-0.051 +191,5.073,1.418,-0.216,-0.108 +191,1.216,-1.009,0.087,-1.733 +191,4.191,-0.423,0.090,2.051 +191,5.695,0.158,-1.961,-0.522 +192,4.234,0.194,-1.917,1.632 +192,0.244,0.197,-0.215,0.017 +192,3.412,-1.520,-2.391,1.215 +192,-2.784,-0.685,0.059,-0.224 +192,-3.575,0.582,1.015,-1.278 +192,1.350,-0.198,0.057,-0.007 +192,-4.012,-1.235,1.263,-0.301 +192,2.695,-1.146,-1.486,1.586 +192,-1.245,-0.805,0.458,-0.309 +192,-0.318,0.756,1.393,0.526 +193,-6.401,0.037,1.231,0.171 +193,-3.466,0.602,0.495,-0.082 +193,-1.311,-1.138,-0.170,0.637 +193,-6.144,-1.061,1.371,-1.065 +193,5.099,0.346,-2.305,-0.249 +193,1.957,1.253,-0.617,-1.721 +193,2.949,-0.218,-0.914,1.161 +193,-2.087,-1.101,0.145,-0.279 +193,-3.257,-0.577,0.153,-0.602 +193,-4.192,0.653,1.203,-2.108 +194,7.707,0.721,-2.373,0.454 +194,-0.392,1.817,1.435,0.333 +194,-1.771,-0.747,-0.334,-0.057 +194,-4.465,-2.117,0.991,0.680 +194,-2.270,-0.711,0.710,-1.604 +194,0.734,0.936,0.822,-0.102 +194,-1.590,0.526,-0.399,-2.103 +194,-0.917,-1.023,-0.218,0.424 +194,-2.136,-0.611,0.075,0.508 +194,2.558,-0.940,-0.860,2.123 +195,-1.189,0.455,1.597,-0.161 +195,-0.535,-0.175,-0.550,-0.398 +195,1.143,-0.152,-1.003,0.027 +195,1.998,1.491,-0.606,-0.730 +195,-1.248,0.209,0.559,-0.504 +195,2.116,1.781,0.274,1.411 +195,-1.032,-1.042,1.067,0.608 +195,-0.329,0.448,0.593,0.465 +195,0.851,-1.805,-0.442,0.387 +195,0.426,0.624,-0.023,-1.418 +196,-4.718,-1.329,0.263,-0.070 +196,-6.072,-2.179,1.522,1.245 +196,-4.162,-0.350,1.294,-0.016 +196,4.827,-0.356,-1.817,2.184 +196,-3.300,-1.104,0.711,0.367 +196,0.704,-0.300,-0.475,1.476 +196,-1.391,0.091,0.621,0.048 +196,-3.298,-0.373,1.340,-0.060 +196,-3.410,-0.387,0.043,-0.383 +196,3.337,1.668,-0.336,2.427 +197,0.946,-0.056,0.278,-0.080 +197,-1.452,-1.240,0.095,-1.081 +197,3.749,-0.461,-1.701,0.388 +197,-0.016,1.277,0.767,-1.105 +197,2.741,1.816,0.196,0.487 +197,2.122,0.421,-0.826,-1.820 +197,-1.790,-1.121,-0.534,-0.571 +197,3.181,0.074,-1.045,-1.721 +197,-3.104,0.195,1.177,2.087 +197,-0.077,-0.869,-0.679,-0.277 +198,-0.327,-0.758,-0.690,0.163 +198,-1.470,1.411,-0.255,-0.789 +198,-3.611,-0.190,0.783,0.832 +198,-2.040,-1.023,0.396,1.395 +198,-10.358,-0.422,3.738,-0.411 +198,-4.440,0.340,0.525,-0.173 +198,-3.695,-1.790,-1.435,-1.710 +198,0.337,-0.123,-1.248,0.964 +198,-7.204,0.233,0.991,-0.893 +198,3.294,-0.284,-2.250,0.397 +199,0.209,-0.338,-0.928,-0.653 +199,-2.233,0.198,2.039,-0.112 +199,0.236,-0.275,0.808,1.848 +199,-0.952,1.062,1.990,0.026 +199,5.404,1.248,-1.654,-0.814 +199,1.144,0.969,-0.805,-0.675 +199,-2.672,0.099,1.367,0.634 +199,-0.238,1.501,-0.038,-1.119 +199,-1.562,-1.780,-0.412,-2.243 +199,1.166,-0.651,-0.727,-0.390 diff --git a/statsmodels/genmod/tests/results/gee_nominal_1.csv b/statsmodels/genmod/tests/results/gee_nominal_1.csv new file mode 100644 index 0000000..61831f2 --- /dev/null +++ b/statsmodels/genmod/tests/results/gee_nominal_1.csv @@ -0,0 +1,796 @@ +0,0,1.000,1.475 +0,0,1.000,0.138 +0,0,1.000,2.927 +0,0,1.000,1.017 +1,0,1.000,0.076 +1,1,1.000,-1.118 +1,1,1.000,-0.269 +1,2,1.000,0.166 +2,2,1.000,-2.091 +2,2,1.000,-1.240 +2,2,1.000,-1.378 +3,0,1.000,-1.000 +3,0,1.000,0.092 +3,1,1.000,-0.193 +3,0,1.000,-1.190 +3,0,1.000,-1.997 +4,2,1.000,-0.713 +4,0,1.000,2.201 +4,0,1.000,0.784 +4,0,1.000,0.897 +5,0,1.000,0.972 +5,0,1.000,-2.645 +5,0,1.000,-0.516 +6,2,1.000,-0.599 +6,2,1.000,-1.253 +6,0,1.000,-0.835 +6,2,1.000,-2.284 +7,0,1.000,0.618 +7,2,1.000,-0.273 +7,2,1.000,-0.710 +7,2,1.000,-1.349 +8,2,1.000,0.501 +8,0,1.000,-0.011 +8,0,1.000,-1.164 +8,0,1.000,0.527 +8,0,1.000,1.335 +9,0,1.000,-0.163 +9,2,1.000,-0.897 +9,0,1.000,-0.952 +9,0,1.000,0.649 +10,2,1.000,-0.851 +10,2,1.000,-1.984 +10,2,1.000,-2.171 +10,0,1.000,-2.171 +10,2,1.000,-0.732 +11,2,1.000,-0.252 +11,2,1.000,0.701 +11,2,1.000,0.089 +11,0,1.000,-0.534 +12,2,1.000,-0.812 +12,2,1.000,0.160 +12,2,1.000,-0.828 +12,2,1.000,-1.652 +12,0,1.000,-0.049 +13,1,1.000,-1.951 +13,2,1.000,-0.891 +13,1,1.000,-0.287 +13,0,1.000,-0.800 +13,0,1.000,-0.866 +14,0,1.000,1.120 +14,0,1.000,-1.670 +14,1,1.000,-1.206 +15,0,1.000,-0.410 +15,1,1.000,0.177 +15,2,1.000,1.369 +16,0,1.000,0.274 +16,0,1.000,0.075 +16,1,1.000,-0.881 +17,0,1.000,1.716 +17,2,1.000,-0.492 +17,2,1.000,-0.588 +17,0,1.000,0.485 +17,0,1.000,-0.238 +18,0,1.000,-1.256 +18,1,1.000,-2.376 +18,2,1.000,-1.734 +18,0,1.000,-0.613 +19,0,1.000,0.133 +19,1,1.000,-1.427 +19,2,1.000,0.361 +19,0,1.000,-0.710 +20,0,1.000,-0.102 +20,2,1.000,-1.338 +20,0,1.000,-0.029 +20,1,1.000,-0.668 +21,0,1.000,0.163 +21,0,1.000,-2.079 +21,0,1.000,-0.763 +21,0,1.000,-0.932 +22,1,1.000,-2.361 +22,0,1.000,-1.655 +22,1,1.000,-1.996 +23,2,1.000,0.182 +23,0,1.000,0.566 +23,1,1.000,0.089 +24,0,1.000,0.829 +24,1,1.000,-0.297 +24,2,1.000,1.072 +24,2,1.000,0.917 +25,0,1.000,-0.551 +25,1,1.000,-2.078 +25,2,1.000,-1.142 +25,0,1.000,0.329 +25,0,1.000,-1.970 +26,0,1.000,1.284 +26,0,1.000,0.646 +26,0,1.000,-0.050 +26,2,1.000,0.718 +26,0,1.000,0.360 +27,2,1.000,1.177 +27,2,1.000,1.286 +27,0,1.000,2.906 +27,0,1.000,2.115 +27,0,1.000,0.201 +28,0,1.000,0.756 +28,2,1.000,-0.524 +28,1,1.000,-0.361 +28,2,1.000,-0.289 +28,2,1.000,0.369 +29,0,1.000,-0.890 +29,2,1.000,2.756 +29,0,1.000,0.437 +29,0,1.000,1.588 +30,0,1.000,0.751 +30,0,1.000,-0.842 +30,2,1.000,-0.315 +30,2,1.000,-1.483 +31,2,1.000,0.519 +31,0,1.000,0.168 +31,0,1.000,2.127 +31,2,1.000,1.832 +32,0,1.000,-0.477 +32,0,1.000,-1.329 +32,0,1.000,0.503 +33,2,1.000,0.433 +33,2,1.000,2.072 +33,0,1.000,0.794 +34,0,1.000,0.677 +34,0,1.000,-0.892 +34,0,1.000,1.389 +34,2,1.000,-1.231 +35,0,1.000,-0.226 +35,2,1.000,0.155 +35,0,1.000,3.580 +35,0,1.000,3.507 +36,2,1.000,-1.247 +36,0,1.000,-2.402 +36,0,1.000,-0.779 +37,1,1.000,-0.609 +37,0,1.000,0.945 +37,0,1.000,-1.659 +37,1,1.000,-0.662 +37,0,1.000,1.728 +38,0,1.000,-0.264 +38,0,1.000,0.904 +38,0,1.000,1.688 +38,0,1.000,1.438 +39,2,1.000,-1.521 +39,1,1.000,-3.016 +39,2,1.000,-1.856 +40,0,1.000,-0.759 +40,0,1.000,0.047 +40,1,1.000,-0.881 +41,2,1.000,-0.321 +41,1,1.000,-1.006 +41,2,1.000,1.627 +42,1,1.000,0.686 +42,1,1.000,-1.251 +42,0,1.000,2.030 +43,1,1.000,-1.102 +43,1,1.000,-0.949 +43,0,1.000,1.679 +44,0,1.000,2.274 +44,0,1.000,1.746 +44,0,1.000,1.715 +44,2,1.000,1.867 +44,1,1.000,2.484 +45,0,1.000,0.651 +45,1,1.000,-3.481 +45,0,1.000,-1.690 +45,2,1.000,-0.186 +46,1,1.000,-0.923 +46,0,1.000,1.899 +46,0,1.000,0.579 +47,2,1.000,-2.307 +47,2,1.000,0.277 +47,0,1.000,-0.436 +47,2,1.000,-0.104 +48,1,1.000,-0.424 +48,0,1.000,0.138 +48,0,1.000,1.778 +49,0,1.000,1.339 +49,0,1.000,1.124 +49,0,1.000,-0.570 +49,0,1.000,1.298 +49,2,1.000,-0.953 +50,0,1.000,1.322 +50,0,1.000,0.586 +50,0,1.000,1.163 +50,1,1.000,-1.802 +50,0,1.000,-0.098 +51,2,1.000,-1.831 +51,0,1.000,1.912 +51,0,1.000,-0.228 +52,0,1.000,-1.884 +52,1,1.000,0.504 +52,0,1.000,0.769 +53,0,1.000,0.129 +53,0,1.000,-2.211 +53,0,1.000,-1.698 +54,0,1.000,3.268 +54,0,1.000,0.242 +54,0,1.000,0.199 +54,0,1.000,-0.574 +55,2,1.000,0.036 +55,0,1.000,1.233 +55,1,1.000,0.685 +56,2,1.000,0.258 +56,2,1.000,-1.485 +56,2,1.000,0.544 +56,1,1.000,-0.616 +57,1,1.000,-0.968 +57,0,1.000,-0.213 +57,0,1.000,-0.375 +57,0,1.000,-0.681 +58,2,1.000,0.020 +58,0,1.000,0.040 +58,2,1.000,-0.325 +59,1,1.000,-1.415 +59,2,1.000,1.128 +59,1,1.000,-0.364 +59,0,1.000,-0.838 +59,1,1.000,-0.650 +60,0,1.000,1.146 +60,0,1.000,0.808 +60,0,1.000,-0.096 +60,0,1.000,0.666 +60,1,1.000,0.641 +61,2,1.000,-1.996 +61,2,1.000,-1.793 +61,1,1.000,-1.670 +61,1,1.000,-2.383 +61,0,1.000,0.346 +62,1,1.000,-3.547 +62,2,1.000,-0.661 +62,1,1.000,-3.652 +62,0,1.000,-3.175 +63,1,1.000,-0.149 +63,2,1.000,0.391 +63,2,1.000,-2.173 +63,1,1.000,-1.390 +63,2,1.000,-0.742 +64,2,1.000,1.240 +64,0,1.000,1.547 +64,0,1.000,0.746 +64,2,1.000,2.389 +65,1,1.000,-1.486 +65,0,1.000,0.881 +65,2,1.000,-1.472 +65,1,1.000,0.139 +65,0,1.000,-1.880 +66,2,1.000,2.194 +66,2,1.000,0.250 +66,2,1.000,0.158 +66,1,1.000,1.800 +66,2,1.000,1.607 +67,2,1.000,-1.633 +67,0,1.000,-0.932 +67,0,1.000,0.619 +67,0,1.000,-1.481 +68,2,1.000,-1.108 +68,0,1.000,-0.467 +68,2,1.000,-0.952 +68,2,1.000,-2.143 +69,2,1.000,0.088 +69,0,1.000,-0.528 +69,2,1.000,-1.250 +70,2,1.000,-0.961 +70,1,1.000,-1.414 +70,2,1.000,1.147 +70,1,1.000,-1.501 +70,0,1.000,-0.164 +71,1,1.000,-2.239 +71,0,1.000,0.597 +71,2,1.000,0.439 +71,1,1.000,-1.114 +72,1,1.000,-0.380 +72,2,1.000,-1.032 +72,2,1.000,0.681 +72,1,1.000,0.106 +72,0,1.000,1.075 +73,0,1.000,-0.231 +73,0,1.000,1.358 +73,0,1.000,-1.241 +73,0,1.000,0.019 +74,0,1.000,1.171 +74,2,1.000,-0.858 +74,2,1.000,0.348 +75,0,1.000,0.938 +75,0,1.000,0.857 +75,2,1.000,1.374 +76,0,1.000,0.114 +76,0,1.000,-0.149 +76,2,1.000,-0.074 +77,2,1.000,0.627 +77,0,1.000,0.530 +77,0,1.000,-0.289 +77,2,1.000,-0.251 +78,0,1.000,1.215 +78,2,1.000,0.119 +78,0,1.000,0.672 +79,2,1.000,-0.432 +79,2,1.000,-1.050 +79,2,1.000,0.396 +80,0,1.000,1.067 +80,2,1.000,0.937 +80,0,1.000,1.224 +80,0,1.000,0.895 +80,0,1.000,0.361 +81,0,1.000,1.445 +81,0,1.000,2.212 +81,2,1.000,1.662 +81,0,1.000,0.963 +82,0,1.000,0.116 +82,2,1.000,0.877 +82,0,1.000,2.621 +83,2,1.000,1.041 +83,1,1.000,0.452 +83,2,1.000,-2.219 +83,2,1.000,0.223 +83,0,1.000,0.337 +84,0,1.000,0.484 +84,2,1.000,1.549 +84,0,1.000,-0.067 +84,2,1.000,1.410 +85,0,1.000,1.664 +85,0,1.000,-1.169 +85,2,1.000,-0.416 +86,2,1.000,-0.266 +86,2,1.000,-0.268 +86,0,1.000,0.191 +86,2,1.000,-0.687 +86,2,1.000,-0.503 +87,0,1.000,0.234 +87,0,1.000,-0.732 +87,1,1.000,0.950 +88,1,1.000,-2.424 +88,2,1.000,-1.490 +88,2,1.000,-2.415 +88,1,1.000,-1.691 +89,0,1.000,0.418 +89,0,1.000,0.061 +89,1,1.000,1.029 +90,0,1.000,3.351 +90,2,1.000,2.027 +90,0,1.000,3.832 +91,0,1.000,0.769 +91,0,1.000,1.305 +91,0,1.000,0.606 +92,2,1.000,-1.040 +92,0,1.000,-0.865 +92,2,1.000,-1.565 +92,1,1.000,-2.138 +93,0,1.000,-0.044 +93,1,1.000,-1.784 +93,1,1.000,-0.543 +93,0,1.000,-1.288 +94,0,1.000,-0.808 +94,1,1.000,-2.140 +94,0,1.000,0.555 +94,0,1.000,-0.398 +95,1,1.000,-0.655 +95,0,1.000,2.253 +95,0,1.000,0.485 +96,2,1.000,1.500 +96,2,1.000,-0.002 +96,0,1.000,-1.496 +96,1,1.000,0.763 +96,2,1.000,0.995 +97,0,1.000,0.411 +97,2,1.000,0.134 +97,0,1.000,-0.768 +98,2,1.000,1.450 +98,2,1.000,1.064 +98,0,1.000,0.215 +99,1,1.000,-1.298 +99,0,1.000,1.668 +99,2,1.000,1.418 +99,0,1.000,2.144 +99,1,1.000,-0.056 +100,0,1.000,0.046 +100,0,1.000,0.904 +100,0,1.000,1.325 +100,0,1.000,-0.110 +100,0,1.000,0.312 +101,2,1.000,-1.413 +101,0,1.000,0.094 +101,0,1.000,1.618 +101,0,1.000,0.455 +102,1,1.000,-1.131 +102,1,1.000,-1.742 +102,2,1.000,-0.478 +102,2,1.000,0.719 +103,0,1.000,1.371 +103,0,1.000,0.670 +103,0,1.000,0.945 +103,0,1.000,2.671 +104,1,1.000,-0.508 +104,2,1.000,-1.130 +104,0,1.000,0.300 +105,2,1.000,-1.782 +105,2,1.000,-0.912 +105,2,1.000,-0.140 +105,0,1.000,-1.002 +105,2,1.000,-1.205 +106,2,1.000,-1.962 +106,1,1.000,0.412 +106,0,1.000,-0.925 +106,1,1.000,-1.270 +106,2,1.000,-2.175 +107,0,1.000,-1.078 +107,2,1.000,-0.286 +107,0,1.000,0.202 +107,0,1.000,0.224 +108,2,1.000,-1.622 +108,1,1.000,-0.395 +108,2,1.000,0.186 +108,0,1.000,-0.125 +109,1,1.000,-2.673 +109,2,1.000,-0.014 +109,0,1.000,-0.221 +109,2,1.000,-2.271 +110,0,1.000,1.149 +110,1,1.000,0.025 +110,0,1.000,-0.759 +110,0,1.000,-1.471 +111,0,1.000,1.515 +111,0,1.000,0.637 +111,0,1.000,0.464 +111,0,1.000,2.839 +111,0,1.000,1.831 +112,0,1.000,-0.611 +112,0,1.000,1.830 +112,0,1.000,1.496 +112,0,1.000,2.519 +113,1,1.000,-1.938 +113,2,1.000,-1.037 +113,2,1.000,0.202 +113,1,1.000,-2.020 +114,0,1.000,2.408 +114,0,1.000,0.597 +114,1,1.000,-0.590 +115,2,1.000,-0.750 +115,0,1.000,0.442 +115,0,1.000,0.422 +116,1,1.000,-0.083 +116,0,1.000,-0.513 +116,0,1.000,0.362 +116,0,1.000,0.524 +117,0,1.000,1.313 +117,2,1.000,0.025 +117,0,1.000,0.205 +117,0,1.000,2.452 +118,1,1.000,0.315 +118,0,1.000,-0.548 +118,1,1.000,0.091 +118,2,1.000,0.310 +118,2,1.000,-1.234 +119,0,1.000,1.466 +119,2,1.000,1.033 +119,0,1.000,1.640 +119,2,1.000,0.300 +119,0,1.000,1.913 +120,2,1.000,-0.539 +120,2,1.000,-0.967 +120,2,1.000,-0.953 +120,0,1.000,-0.024 +121,1,1.000,-2.215 +121,0,1.000,-0.459 +121,0,1.000,0.135 +121,0,1.000,-1.383 +122,0,1.000,1.115 +122,0,1.000,-0.072 +122,2,1.000,0.193 +122,2,1.000,-1.227 +122,0,1.000,0.751 +123,0,1.000,1.748 +123,0,1.000,1.026 +123,0,1.000,-0.267 +123,0,1.000,0.077 +123,0,1.000,1.817 +124,0,1.000,-1.166 +124,0,1.000,-0.614 +124,2,1.000,-0.890 +124,1,1.000,-0.778 +124,0,1.000,1.503 +125,0,1.000,1.116 +125,0,1.000,0.451 +125,0,1.000,1.554 +125,2,1.000,-2.100 +125,0,1.000,1.255 +126,0,1.000,2.423 +126,0,1.000,2.138 +126,0,1.000,2.744 +126,0,1.000,1.293 +127,2,1.000,0.102 +127,0,1.000,2.466 +127,0,1.000,1.744 +128,0,1.000,-0.628 +128,0,1.000,-1.369 +128,2,1.000,-0.322 +128,1,1.000,-0.172 +129,0,1.000,0.312 +129,2,1.000,0.935 +129,1,1.000,0.006 +130,0,1.000,0.380 +130,1,1.000,0.398 +130,0,1.000,0.186 +130,1,1.000,0.364 +130,0,1.000,1.734 +131,2,1.000,1.414 +131,0,1.000,0.393 +131,0,1.000,0.155 +131,0,1.000,-1.011 +132,0,1.000,-2.653 +132,0,1.000,-2.054 +132,0,1.000,-2.296 +132,1,1.000,-2.348 +133,0,1.000,-0.670 +133,2,1.000,-0.888 +133,0,1.000,0.288 +134,2,1.000,-0.258 +134,0,1.000,2.408 +134,0,1.000,-0.046 +134,0,1.000,0.862 +135,0,1.000,-1.022 +135,0,1.000,0.293 +135,2,1.000,2.122 +136,2,1.000,0.112 +136,1,1.000,-1.964 +136,0,1.000,-2.122 +137,2,1.000,0.060 +137,2,1.000,-0.781 +137,1,1.000,-1.149 +137,2,1.000,-0.031 +138,1,1.000,-2.752 +138,2,1.000,-3.268 +138,0,1.000,0.227 +138,0,1.000,0.006 +139,0,1.000,-0.772 +139,2,1.000,0.688 +139,2,1.000,0.256 +139,2,1.000,0.516 +140,0,1.000,2.178 +140,0,1.000,-0.574 +140,1,1.000,-1.224 +140,0,1.000,-0.370 +140,0,1.000,1.367 +141,0,1.000,0.929 +141,0,1.000,1.904 +141,0,1.000,2.914 +141,0,1.000,-0.472 +142,2,1.000,0.430 +142,0,1.000,0.677 +142,0,1.000,1.363 +143,1,1.000,-1.409 +143,2,1.000,-2.559 +143,2,1.000,-1.040 +143,2,1.000,-0.298 +144,2,1.000,-2.056 +144,2,1.000,0.661 +144,2,1.000,0.538 +144,2,1.000,-0.262 +145,0,1.000,-0.453 +145,2,1.000,-1.947 +145,1,1.000,-2.594 +146,2,1.000,-0.236 +146,0,1.000,2.493 +146,0,1.000,2.919 +146,0,1.000,1.433 +146,2,1.000,2.912 +147,0,1.000,0.775 +147,0,1.000,1.890 +147,0,1.000,0.411 +148,0,1.000,-0.481 +148,1,1.000,-0.300 +148,0,1.000,-2.157 +148,1,1.000,-0.464 +148,2,1.000,-1.895 +149,2,1.000,2.008 +149,0,1.000,0.013 +149,0,1.000,1.728 +149,2,1.000,0.901 +149,0,1.000,-0.708 +150,0,1.000,0.066 +150,0,1.000,0.543 +150,0,1.000,1.039 +151,1,1.000,-3.010 +151,2,1.000,-4.037 +151,1,1.000,-2.819 +152,2,1.000,0.358 +152,2,1.000,-0.501 +152,0,1.000,-0.817 +152,0,1.000,0.322 +153,2,1.000,-0.876 +153,2,1.000,-2.604 +153,2,1.000,-1.220 +153,2,1.000,-2.184 +154,1,1.000,-2.603 +154,2,1.000,-1.519 +154,2,1.000,-3.194 +155,0,1.000,-0.657 +155,2,1.000,0.509 +155,0,1.000,0.693 +155,0,1.000,2.184 +155,1,1.000,-1.977 +156,2,1.000,-1.498 +156,1,1.000,-3.052 +156,2,1.000,-0.875 +157,0,1.000,2.820 +157,0,1.000,2.315 +157,0,1.000,2.014 +157,0,1.000,0.644 +158,0,1.000,0.395 +158,0,1.000,1.137 +158,0,1.000,2.056 +158,0,1.000,2.447 +158,0,1.000,0.001 +159,0,1.000,-0.202 +159,2,1.000,-1.140 +159,0,1.000,1.024 +159,0,1.000,0.467 +160,2,1.000,-0.034 +160,2,1.000,0.280 +160,2,1.000,1.478 +160,0,1.000,2.195 +161,1,1.000,-0.438 +161,1,1.000,-1.830 +161,1,1.000,-0.933 +161,2,1.000,-2.017 +161,1,1.000,-2.736 +162,2,1.000,-0.174 +162,2,1.000,0.585 +162,2,1.000,-0.619 +162,1,1.000,-2.374 +162,2,1.000,-1.929 +163,2,1.000,0.110 +163,0,1.000,0.477 +163,0,1.000,0.848 +164,1,1.000,-0.736 +164,0,1.000,2.182 +164,2,1.000,-0.827 +164,0,1.000,0.735 +165,2,1.000,1.160 +165,2,1.000,0.759 +165,0,1.000,1.885 +166,1,1.000,0.197 +166,0,1.000,0.270 +166,2,1.000,-0.397 +166,2,1.000,-0.107 +167,0,1.000,-0.545 +167,2,1.000,-0.263 +167,0,1.000,0.159 +167,0,1.000,-0.977 +168,0,1.000,1.762 +168,2,1.000,1.537 +168,0,1.000,4.402 +169,0,1.000,0.696 +169,0,1.000,4.117 +169,0,1.000,2.790 +169,0,1.000,3.231 +170,0,1.000,0.191 +170,2,1.000,-0.010 +170,2,1.000,-0.455 +170,2,1.000,-1.711 +170,0,1.000,-1.032 +171,2,1.000,-2.764 +171,2,1.000,-0.750 +171,2,1.000,1.077 +171,0,1.000,-2.195 +172,0,1.000,1.970 +172,0,1.000,2.016 +172,2,1.000,0.941 +173,1,1.000,-0.086 +173,2,1.000,0.506 +173,1,1.000,-1.248 +173,2,1.000,-1.694 +174,0,1.000,2.525 +174,2,1.000,-0.173 +174,0,1.000,0.857 +174,0,1.000,1.043 +174,0,1.000,0.390 +175,2,1.000,3.132 +175,2,1.000,0.778 +175,0,1.000,0.923 +175,0,1.000,0.949 +175,0,1.000,-0.923 +176,0,1.000,0.464 +176,2,1.000,-2.819 +176,0,1.000,0.816 +177,0,1.000,-1.937 +177,0,1.000,0.264 +177,1,1.000,0.292 +177,0,1.000,0.761 +178,0,1.000,2.097 +178,0,1.000,3.443 +178,0,1.000,2.385 +178,2,1.000,1.823 +178,0,1.000,1.672 +179,1,1.000,-1.571 +179,2,1.000,0.029 +179,1,1.000,0.151 +179,2,1.000,-2.026 +180,0,1.000,-0.362 +180,2,1.000,-1.020 +180,1,1.000,-1.158 +181,1,1.000,0.928 +181,2,1.000,0.142 +181,1,1.000,-0.782 +181,0,1.000,-0.329 +182,0,1.000,-1.152 +182,0,1.000,-0.944 +182,2,1.000,0.233 +182,0,1.000,-0.030 +183,2,1.000,0.590 +183,1,1.000,-2.246 +183,1,1.000,-0.883 +183,2,1.000,2.296 +183,2,1.000,0.208 +184,0,1.000,0.037 +184,0,1.000,0.944 +184,0,1.000,3.103 +184,0,1.000,0.629 +185,0,1.000,-0.736 +185,1,1.000,0.202 +185,1,1.000,-0.270 +185,0,1.000,-0.437 +185,0,1.000,0.272 +186,0,1.000,0.055 +186,0,1.000,-1.273 +186,1,1.000,-2.153 +186,2,1.000,-2.021 +186,0,1.000,-0.955 +187,0,1.000,-0.647 +187,0,1.000,1.505 +187,2,1.000,0.846 +187,1,1.000,-1.096 +188,0,1.000,0.460 +188,2,1.000,-0.191 +188,1,1.000,-0.325 +188,1,1.000,-2.159 +189,0,1.000,-0.182 +189,1,1.000,-1.364 +189,0,1.000,-0.224 +189,1,1.000,-1.192 +190,0,1.000,1.308 +190,0,1.000,0.817 +190,0,1.000,0.338 +191,2,1.000,1.625 +191,2,1.000,1.292 +191,1,1.000,-0.576 +191,2,1.000,0.126 +191,2,1.000,1.995 +192,2,1.000,0.521 +192,1,1.000,-0.913 +192,2,1.000,-1.091 +192,2,1.000,2.038 +193,1,1.000,-1.040 +193,0,1.000,0.654 +193,1,1.000,-1.634 +193,0,1.000,1.731 +193,1,1.000,-0.665 +194,0,1.000,1.406 +194,1,1.000,1.581 +194,2,1.000,1.349 +194,0,1.000,2.240 +194,1,1.000,2.662 +195,0,1.000,-1.619 +195,0,1.000,-0.780 +195,0,1.000,-1.138 +196,0,1.000,1.138 +196,2,1.000,-0.065 +196,0,1.000,0.823 +196,0,1.000,-2.381 +197,0,1.000,0.076 +197,0,1.000,-0.814 +197,0,1.000,0.424 +197,0,1.000,0.682 +197,0,1.000,-0.220 +198,0,1.000,0.725 +198,0,1.000,1.346 +198,0,1.000,0.202 +198,0,1.000,0.733 +199,0,1.000,1.456 +199,0,1.000,-0.553 +199,2,1.000,-1.150 diff --git a/statsmodels/genmod/tests/results/gee_ordinal_1.csv b/statsmodels/genmod/tests/results/gee_ordinal_1.csv new file mode 100644 index 0000000..e58bf64 --- /dev/null +++ b/statsmodels/genmod/tests/results/gee_ordinal_1.csv @@ -0,0 +1,787 @@ +0,0,2.251,2.041,-1.501,-1.147,-0.433 +0,2,0.215,-1.273,0.135,-0.197,0.417 +0,2,0.136,0.113,0.474,-1.289,-0.377 +1,1,0.966,-2.022,-0.435,-1.223,-0.527 +1,3,-0.117,0.550,1.941,-0.019,-2.657 +1,0,-0.951,-0.527,-1.873,0.473,-2.011 +2,3,0.277,0.925,2.816,-0.899,1.056 +2,3,0.035,-0.229,1.185,-0.311,0.902 +2,3,0.440,0.133,1.756,-0.016,0.500 +3,3,0.868,-0.754,-0.894,-1.028,2.192 +3,0,-1.001,-0.830,-1.543,0.503,1.229 +3,0,2.311,-0.757,1.704,-0.320,3.680 +3,1,4.323,2.032,0.801,-1.132,3.055 +3,0,2.113,-1.076,-1.092,-3.103,2.000 +4,0,0.007,-0.781,-2.066,-0.237,-0.067 +4,0,1.171,0.781,-3.251,-0.986,-2.385 +4,3,2.046,1.256,-0.947,0.026,-2.245 +4,0,2.879,0.094,-0.595,-0.409,0.508 +4,0,0.037,-0.241,-1.553,1.628,0.449 +5,3,-2.871,1.822,0.237,-0.432,0.228 +5,1,-3.868,-0.811,2.130,0.918,1.281 +5,0,-3.912,-1.338,-0.446,-0.521,1.377 +5,3,-0.986,1.656,-0.007,-0.441,1.044 +6,3,-1.514,-2.445,0.379,-0.899,-0.089 +6,3,-0.195,-3.202,1.212,0.481,-0.391 +6,0,-1.059,-2.607,0.959,-2.117,2.108 +7,1,0.485,-0.443,-0.547,-0.075,-0.078 +7,3,-0.420,-1.742,0.164,-0.436,-0.494 +7,3,-1.355,-0.052,-0.056,-1.413,-0.578 +8,0,2.195,1.420,0.041,0.428,3.149 +8,0,2.334,0.435,0.059,0.542,1.388 +8,1,2.071,-2.443,0.851,0.990,-0.027 +8,3,1.700,0.993,1.295,0.194,1.523 +9,3,3.830,-0.952,3.751,1.065,2.321 +9,3,2.278,-0.484,3.006,1.467,1.316 +9,3,0.914,-1.116,3.736,1.996,-2.064 +9,3,0.173,-1.478,3.455,3.475,0.912 +10,0,-0.412,-0.743,-2.259,2.149,-0.589 +10,3,-0.682,0.018,0.843,-1.160,-3.366 +10,0,1.628,0.593,-2.497,0.115,-1.974 +11,0,-3.358,1.123,0.353,1.786,2.011 +11,1,1.395,-0.707,1.023,1.981,2.288 +11,0,-0.968,1.559,1.313,0.341,1.518 +11,1,-0.285,0.464,-0.305,1.510,1.080 +11,1,-0.039,0.610,1.404,2.511,1.965 +12,3,-1.186,1.281,1.578,-0.354,0.061 +12,0,1.555,-0.862,0.080,-1.077,-0.155 +12,0,-1.393,-0.623,0.340,0.015,2.331 +12,1,-1.530,-0.539,0.951,-0.139,1.839 +12,0,-0.221,1.504,-0.063,-1.812,1.352 +13,3,0.007,0.752,2.563,-2.424,-0.878 +13,3,-0.446,1.856,2.794,-1.396,-2.815 +13,3,0.097,0.427,1.011,-1.942,-1.929 +13,3,-1.575,-0.044,2.334,-2.570,-1.812 +14,1,-0.616,2.320,-0.588,1.126,-1.184 +14,1,0.438,0.757,0.493,-0.484,1.062 +14,1,1.052,1.832,-0.387,0.451,-0.147 +15,1,1.355,-0.042,-0.694,-0.122,-0.735 +15,1,0.979,-0.276,0.707,-0.544,-1.354 +15,0,-0.828,0.129,-0.811,-0.151,-1.792 +16,0,-0.762,2.996,-2.671,0.033,4.265 +16,0,-1.407,-1.107,-1.656,-1.021,1.935 +16,0,0.003,-0.350,-2.151,2.217,2.298 +16,0,-1.697,1.506,-1.508,0.331,1.895 +16,0,-1.061,0.614,-1.682,-2.739,3.202 +17,3,-0.041,0.415,-0.623,1.192,0.487 +17,0,-1.134,-0.490,-0.751,3.395,0.532 +17,3,-0.216,2.585,-1.239,1.551,0.157 +17,0,-0.361,0.030,-0.921,0.055,-0.051 +17,3,-1.334,0.433,0.209,0.335,-1.531 +18,3,-1.064,0.526,0.251,-0.739,0.186 +18,3,0.751,1.017,-0.723,0.158,-0.338 +18,3,-0.540,0.199,1.159,-1.966,1.009 +18,3,-1.987,-0.759,0.904,-0.164,1.333 +19,0,-1.388,-0.173,-0.209,-0.410,1.216 +19,0,-0.487,0.022,-0.946,-0.001,-0.105 +19,2,1.981,0.801,-0.005,-0.939,0.462 +19,0,2.236,-0.380,-1.078,-0.525,0.718 +19,1,0.237,-2.356,-1.197,0.334,0.366 +20,0,0.206,0.110,-0.135,-3.120,1.245 +20,3,-0.335,1.583,-0.616,-2.127,-0.185 +20,3,-0.460,-0.118,1.160,-0.501,0.571 +21,3,-1.816,1.851,1.177,1.046,-0.544 +21,3,-0.051,0.682,0.568,2.785,-1.857 +21,3,-2.003,0.229,3.051,1.277,-1.733 +21,3,-0.672,-0.007,1.715,1.304,-1.263 +22,3,-0.719,-0.929,-0.308,1.675,-1.530 +22,0,-1.403,-0.596,0.477,0.158,-0.174 +22,0,-1.809,-3.092,-0.685,0.718,0.203 +23,0,-0.258,0.497,2.166,-0.022,0.318 +23,3,-1.524,-0.616,0.635,1.454,-0.621 +23,3,-1.901,-1.241,0.421,-0.533,-0.385 +23,3,0.062,-1.145,0.150,-0.934,1.036 +24,2,0.082,0.201,0.840,-0.437,0.412 +24,1,0.808,1.065,2.043,-0.201,1.865 +24,1,1.347,1.259,0.170,0.490,0.703 +24,3,-0.360,0.025,1.612,-0.226,-0.520 +24,3,2.326,1.188,2.005,0.691,1.173 +25,2,1.867,-1.150,-0.352,-0.014,-0.639 +25,3,1.692,-0.009,-0.453,-1.126,-1.584 +25,3,0.246,-0.381,-0.367,0.099,-2.630 +25,3,-0.248,-0.529,0.094,0.839,-1.674 +25,3,0.705,0.169,-0.612,0.640,-2.309 +26,3,1.449,-1.531,0.912,-1.060,-0.960 +26,3,2.255,0.372,0.016,-1.293,1.026 +26,0,1.537,-1.534,-1.242,0.715,1.066 +26,3,0.657,-1.286,1.562,-0.697,-0.650 +27,3,-0.729,-1.643,-0.921,-0.637,-1.131 +27,2,0.386,-0.392,-2.481,1.362,-0.647 +27,3,0.072,-2.183,-1.866,0.515,-1.471 +27,3,1.394,-0.480,-1.407,0.222,-0.437 +28,3,-3.082,0.601,-0.484,-1.469,-0.614 +28,3,-0.065,-1.156,-1.371,-0.186,-1.472 +28,3,-0.133,0.694,-1.235,-0.682,-1.340 +28,0,-0.580,1.070,-1.805,-1.613,-0.881 +28,1,-1.100,0.271,0.074,-0.016,0.465 +29,0,-0.150,0.038,-1.087,0.143,0.150 +29,0,-0.406,2.044,-0.909,-2.613,-0.953 +29,0,1.700,0.870,0.181,-1.322,1.200 +29,3,0.837,0.230,-0.523,-0.651,-0.099 +30,3,-0.302,-0.068,1.352,-0.877,-1.532 +30,3,2.098,-0.038,2.812,-0.264,-1.541 +30,3,1.293,0.467,3.059,-1.878,-0.789 +30,3,1.978,2.083,1.659,1.351,-0.944 +31,0,-1.474,3.162,0.592,-0.816,1.686 +31,3,-1.055,0.988,0.686,0.736,0.571 +31,0,-2.143,1.181,-2.153,-1.434,1.488 +31,3,-0.057,2.546,0.876,-0.001,0.376 +31,0,-1.059,1.324,-1.392,-0.251,0.839 +32,3,-0.900,-1.507,0.664,1.247,-2.168 +32,3,-0.094,2.012,-0.947,1.795,-1.806 +32,3,-0.108,0.580,0.692,-0.271,-0.480 +33,2,1.326,-0.722,-2.113,0.139,-2.157 +33,0,-0.248,-1.567,-0.211,1.158,1.699 +33,3,2.077,-0.046,-0.060,1.273,0.143 +33,1,0.843,0.782,-1.146,2.448,-0.281 +33,3,-0.341,-0.230,0.150,-0.490,-2.207 +34,0,1.569,-0.747,-1.638,-1.398,-0.044 +34,1,0.408,2.580,-0.146,-1.555,0.058 +34,3,-0.029,-0.974,-0.061,-2.742,-0.830 +34,3,0.113,0.185,0.286,0.478,-0.479 +34,3,0.552,-0.101,0.500,-1.134,-0.549 +35,0,-1.743,-0.457,-2.536,0.789,2.682 +35,0,-1.085,2.474,-1.689,-1.737,2.080 +35,0,-0.366,0.072,-1.238,-1.033,3.229 +36,0,1.248,-1.394,-1.491,1.885,2.336 +36,0,-0.157,1.507,-0.951,0.606,0.866 +36,0,-0.283,-0.672,-0.947,-0.025,0.316 +36,3,-0.570,-1.851,-0.754,-0.123,-0.408 +37,0,-0.846,-1.049,0.636,1.788,1.890 +37,0,-2.984,0.256,-0.441,0.366,0.618 +37,0,-2.170,0.398,-0.511,-0.884,2.821 +37,0,-0.662,-0.935,-0.507,-0.916,4.329 +38,3,1.164,-0.887,2.169,0.360,-2.447 +38,0,3.868,-0.534,-1.261,-0.491,0.397 +38,3,0.652,-3.315,0.516,-2.345,-2.902 +39,0,-0.902,1.367,-2.265,-1.651,0.581 +39,0,-3.015,2.276,-1.966,-0.874,-1.122 +39,3,-2.882,1.595,-0.661,-1.707,-0.345 +39,1,-1.728,2.322,-0.399,-1.617,0.667 +40,0,0.523,1.321,-2.472,-0.642,4.348 +40,0,0.573,0.792,-2.756,0.078,2.295 +40,0,1.700,0.090,-3.160,-0.632,2.721 +40,0,2.717,0.163,-0.856,0.335,3.012 +40,0,2.382,-1.010,-4.469,-1.540,4.283 +41,0,1.680,3.934,-0.136,-1.003,1.471 +41,2,3.165,1.500,-0.696,-1.964,-0.015 +41,0,2.605,4.024,-0.249,-1.222,-0.345 +41,3,1.659,3.434,-0.334,-1.776,-1.104 +41,0,2.436,1.533,-1.372,-0.610,0.114 +42,3,1.362,0.361,0.076,-0.654,-0.041 +42,0,2.330,-1.323,-0.396,-0.922,-0.552 +42,0,0.612,-0.528,-0.600,-0.452,-1.074 +42,3,2.708,-0.614,1.498,-0.266,-0.578 +42,0,1.069,-0.388,-0.380,-0.622,0.270 +43,0,0.810,0.109,-0.482,-2.034,1.432 +43,1,0.122,0.650,1.135,-2.405,0.557 +43,3,0.303,1.491,-1.125,0.101,0.139 +43,0,1.784,2.107,-1.902,-0.706,-0.781 +43,3,-0.430,2.486,0.279,0.731,-0.992 +44,1,0.274,2.254,0.293,1.302,-1.576 +44,1,-1.536,1.722,0.086,0.147,-0.048 +44,3,-0.660,0.926,-0.263,0.337,-3.024 +45,0,0.638,2.293,-2.727,1.367,-2.838 +45,0,2.333,0.580,-3.676,2.485,-0.867 +45,1,0.311,2.863,-1.394,0.978,0.520 +46,3,-0.536,-1.408,1.718,0.701,-3.082 +46,0,-1.029,-0.307,-1.391,-0.121,-0.977 +46,3,-2.691,-0.206,0.952,-0.595,-2.686 +46,1,-2.416,1.037,-0.615,1.544,-0.424 +46,3,-0.117,0.405,0.485,1.102,-2.027 +47,3,-2.621,0.162,3.709,0.162,1.042 +47,3,-0.904,0.965,2.577,-0.714,1.145 +47,3,-0.134,1.852,1.811,-2.008,0.856 +47,0,-1.074,0.252,0.793,-2.739,1.319 +47,3,-1.217,1.258,2.500,-1.567,-0.240 +48,3,1.264,0.466,-0.383,2.873,-0.572 +48,3,1.706,0.983,0.207,-0.290,0.111 +48,3,3.347,2.453,-1.182,0.768,-1.115 +48,0,0.597,0.741,-1.309,1.814,-0.542 +48,3,2.028,2.015,-1.532,-0.110,-1.585 +49,3,0.937,-0.614,2.181,-0.781,-2.092 +49,3,0.524,1.072,1.598,-0.399,-0.174 +49,3,0.235,2.098,0.766,-2.366,-1.457 +50,3,-0.134,-1.241,1.375,-1.829,-1.689 +50,3,0.708,-0.350,-0.251,-1.099,-1.671 +50,3,0.018,-2.887,1.906,-1.857,-2.891 +51,2,-1.177,-1.744,1.398,-0.839,1.631 +51,3,0.542,-1.437,1.734,-1.895,0.255 +51,3,0.433,-1.856,1.959,-0.549,-0.592 +51,3,0.159,-2.432,3.163,-3.458,-0.617 +52,3,0.917,-2.848,0.975,-1.692,-0.827 +52,3,4.082,-3.611,-0.060,-1.440,-1.777 +52,2,2.874,-3.231,0.349,-4.445,-1.122 +53,1,2.446,2.489,-0.843,-1.022,0.660 +53,0,2.461,0.819,-0.005,0.207,0.972 +53,0,1.862,1.333,-1.341,-0.376,0.360 +54,1,-2.239,0.181,0.263,-3.742,1.403 +54,0,-1.348,0.103,-1.512,-0.530,0.284 +54,3,-2.021,-1.084,-0.257,-2.296,0.641 +54,0,-1.397,-1.509,-0.711,-1.164,1.292 +55,3,-0.840,0.459,1.358,-0.808,-1.591 +55,1,0.090,-1.098,0.741,-1.044,-0.985 +55,3,0.170,-0.810,1.532,-1.118,0.777 +55,1,-1.193,1.133,-1.178,-0.973,-1.207 +56,0,0.673,0.875,-2.663,-0.110,1.675 +56,3,0.483,2.045,0.321,0.930,0.554 +56,1,1.703,2.340,-1.414,0.249,0.451 +56,3,3.148,0.030,-0.673,-2.044,-0.509 +56,0,2.435,0.467,-0.511,-0.481,1.470 +57,3,1.307,0.032,1.965,0.325,-1.044 +57,3,1.477,0.636,1.780,0.519,0.649 +57,0,0.969,1.701,1.562,1.777,2.693 +58,1,-1.991,2.099,-1.235,-3.338,1.691 +58,0,-1.294,0.801,-1.536,-5.260,0.240 +58,0,1.087,-0.616,-1.443,-5.497,0.873 +59,2,1.435,1.120,-1.357,-1.004,-1.109 +59,1,0.406,0.931,-2.413,-0.419,-0.631 +59,3,2.337,1.257,1.181,-2.238,-2.474 +60,3,2.382,0.889,0.114,0.441,-0.651 +60,3,1.435,0.927,-0.078,2.349,-1.099 +60,3,2.689,2.127,0.348,2.717,-2.908 +60,3,2.592,-0.667,0.716,2.757,-0.644 +61,3,-1.896,2.103,0.766,2.309,0.353 +61,3,-0.711,1.214,1.696,2.460,0.872 +61,0,-2.583,2.446,-0.049,0.764,2.278 +62,1,0.697,-0.010,-0.255,-1.363,-2.090 +62,2,1.199,-0.516,1.976,-2.891,-2.246 +62,3,1.119,-0.842,2.215,-3.999,-0.908 +62,3,0.830,-1.216,2.689,-3.101,0.423 +62,3,1.314,-0.168,1.177,-3.017,-1.921 +63,0,-0.592,1.594,-1.223,-0.867,-0.292 +63,1,-0.967,-0.448,-1.087,-1.210,0.317 +63,3,1.202,2.298,0.861,-2.620,-1.530 +63,3,-0.229,0.823,-1.333,-1.424,-2.558 +64,0,0.643,1.244,0.236,0.918,0.851 +64,0,-0.595,-1.311,-1.902,1.609,1.071 +64,0,0.853,1.392,-0.676,0.346,-0.104 +64,0,-1.915,1.581,-0.591,0.913,0.823 +65,0,1.963,1.763,1.028,-0.585,1.013 +65,2,1.843,1.093,1.343,-0.592,0.573 +65,0,0.139,2.607,0.159,-0.646,2.035 +65,0,0.821,0.757,-0.691,-0.318,0.280 +66,0,1.064,-0.505,-1.167,1.672,-0.908 +66,1,1.226,-1.644,-0.140,2.591,0.794 +66,3,-0.164,0.551,-0.315,1.777,-2.656 +66,0,0.849,-1.408,-1.408,0.634,0.660 +67,3,-0.662,-1.006,1.308,-0.556,0.135 +67,1,0.639,1.014,0.839,-1.638,0.315 +67,3,0.933,1.089,0.362,-0.669,0.143 +67,3,-0.462,0.024,-0.239,-1.056,-1.005 +68,3,1.143,-0.711,0.580,0.683,0.685 +68,0,0.674,-0.933,-0.021,-1.275,1.334 +68,1,-0.164,0.793,0.338,-0.225,1.849 +69,3,-0.537,0.429,1.070,-0.019,2.106 +69,1,-1.663,-1.481,1.507,0.683,2.016 +69,0,-1.488,0.185,0.177,2.093,2.428 +70,1,-0.362,0.562,0.055,-0.462,-0.119 +70,0,-0.722,2.063,0.045,-1.391,-0.879 +70,3,1.310,1.719,0.567,-0.888,-2.828 +70,3,-0.945,0.740,-0.488,-1.366,-2.837 +71,3,0.995,-1.828,0.767,-1.817,-3.112 +71,2,0.737,-0.335,-0.360,-0.834,-4.443 +71,3,-0.103,-1.086,1.448,-0.079,-2.440 +72,3,0.538,0.976,0.183,2.886,-1.716 +72,3,0.444,-0.574,0.671,1.650,-2.928 +72,3,-0.587,1.208,0.117,2.337,-0.353 +72,3,4.349,-0.973,1.541,0.487,-0.945 +73,0,-1.062,0.103,2.362,2.154,0.878 +73,0,-0.439,-1.979,1.323,-0.502,1.395 +73,2,-2.308,-0.694,0.266,0.259,-0.640 +73,3,-0.791,-2.199,1.321,-1.164,1.448 +74,0,0.879,-1.555,1.129,0.012,2.553 +74,0,0.218,0.867,-0.409,1.014,2.106 +74,0,0.199,0.272,0.272,1.584,2.345 +75,3,-0.013,0.414,1.868,0.331,-0.086 +75,3,-1.355,0.615,-0.639,0.453,0.185 +75,3,-0.806,-1.941,1.365,0.931,0.293 +75,1,-0.584,1.245,-0.741,-0.263,-0.632 +76,3,-0.526,0.413,1.587,-1.150,-0.281 +76,1,0.573,0.413,-0.631,-0.452,1.212 +76,1,1.605,-1.166,0.777,-1.345,-0.290 +76,2,-1.266,-0.028,1.400,-2.024,-0.383 +77,1,0.127,-1.413,-1.198,-1.972,-0.107 +77,0,-0.635,-0.655,-0.501,-1.203,0.244 +77,3,0.007,-1.308,0.124,-2.593,-1.231 +77,1,-0.609,-1.040,-0.852,-3.274,-0.859 +77,0,-0.290,-1.161,-3.154,-0.613,-0.652 +78,1,1.110,2.754,0.975,-2.438,1.188 +78,0,1.234,0.582,0.171,-1.092,-0.599 +78,0,1.594,4.232,1.503,0.147,1.591 +78,1,1.884,1.577,-0.748,0.134,-0.565 +78,1,0.977,1.992,0.099,0.135,-1.023 +79,0,-1.403,-2.374,-2.155,1.847,-1.464 +79,3,-0.206,-1.880,0.065,0.277,-0.457 +79,3,-0.990,-2.294,0.598,-1.195,-0.518 +80,3,1.087,0.521,0.564,-0.038,-0.975 +80,1,0.889,0.909,1.697,-1.085,1.143 +80,0,1.282,2.200,1.601,-0.200,1.076 +80,3,2.404,0.139,0.293,0.500,-0.628 +80,3,1.546,1.051,1.095,-0.150,0.217 +81,3,-1.272,0.603,-0.448,-1.404,-2.019 +81,3,0.686,0.945,0.015,-2.092,-1.207 +81,3,0.423,1.449,1.720,-1.811,0.516 +81,0,-0.022,-0.989,-0.298,-1.054,0.575 +82,3,-1.921,0.024,-0.859,0.765,-1.773 +82,3,-0.366,1.072,0.287,-0.448,-1.941 +82,3,-0.672,-1.056,1.177,-0.394,-2.765 +82,3,-0.207,-0.650,0.351,-1.827,-2.826 +82,1,-1.789,2.601,-1.320,-3.007,-0.900 +83,1,1.107,1.784,0.073,1.656,1.218 +83,0,1.342,0.822,-1.068,1.410,1.985 +83,1,1.243,1.437,-0.206,1.346,0.313 +83,3,0.367,1.802,3.143,1.343,-1.936 +84,3,0.781,-0.042,-1.759,-0.585,-0.866 +84,0,0.850,1.110,-1.142,-1.219,1.211 +84,3,-0.458,-0.328,-0.535,0.503,0.349 +85,3,1.014,-0.429,1.099,1.782,-0.942 +85,3,0.329,-1.282,0.849,0.540,-2.237 +85,3,-0.235,-0.870,-0.369,2.669,-0.188 +86,0,1.749,0.050,-2.251,0.360,-0.682 +86,1,-0.989,0.511,-1.832,1.180,0.206 +86,1,1.444,-0.076,-1.974,1.442,-0.273 +86,0,-1.160,-1.810,-1.331,0.014,0.728 +87,3,1.877,-0.730,1.391,0.122,2.120 +87,3,2.840,-4.326,1.302,-1.133,1.665 +87,0,0.962,-1.642,-0.160,2.384,0.320 +88,1,-1.733,-2.755,-1.286,-2.354,0.511 +88,0,-2.246,-0.584,0.205,-0.715,1.867 +88,0,-1.193,0.837,-0.198,-1.441,0.397 +89,0,0.912,0.985,-1.922,-1.643,1.184 +89,0,0.625,-0.161,-1.532,-0.513,0.452 +89,1,0.203,0.242,-0.855,-0.826,-1.535 +90,3,0.918,1.002,0.299,0.733,0.110 +90,0,-0.851,-1.035,-0.372,0.158,0.832 +90,3,1.339,-0.708,1.746,3.792,0.355 +90,0,-0.704,-0.329,0.262,2.280,1.084 +91,0,0.978,0.084,-0.483,-1.566,-0.564 +91,0,1.188,-1.111,-1.387,1.617,-0.149 +91,0,0.619,2.850,-0.787,0.831,2.082 +92,2,-1.751,-0.184,-1.363,-1.111,-0.924 +92,0,0.294,-0.699,-3.174,-1.371,-0.993 +92,0,0.354,-0.019,-3.931,0.300,-0.162 +93,3,0.940,3.068,1.535,-0.376,-0.666 +93,3,1.279,-1.337,1.104,0.562,-0.457 +93,3,0.115,0.361,-0.091,-0.541,0.208 +93,3,0.873,1.182,-0.088,-0.053,1.644 +94,2,0.357,-1.433,-1.402,-1.468,-1.386 +94,0,-0.505,-0.870,-1.248,-0.398,-0.800 +94,3,-0.520,1.106,-0.948,-2.593,-2.156 +94,0,-1.532,-0.207,-1.405,-0.458,-0.401 +95,2,2.079,2.104,0.624,-0.017,-0.822 +95,3,0.730,1.668,0.404,-2.631,1.226 +95,3,1.358,0.214,1.500,-0.123,-0.564 +95,1,-1.695,0.853,-0.390,-0.272,-1.579 +96,3,1.335,0.799,-0.339,-0.542,1.759 +96,0,-1.031,-1.822,-0.766,0.197,2.739 +96,3,-0.762,0.187,-0.561,1.706,0.424 +97,3,-2.477,-0.416,-0.104,0.311,-2.010 +97,3,-0.638,-0.571,2.818,1.439,0.713 +97,0,1.272,-1.134,0.186,1.607,-0.148 +97,1,-1.858,-0.507,-0.397,1.692,-0.488 +97,3,-0.981,-0.178,2.324,1.392,-2.775 +98,3,0.478,-1.823,0.392,-1.094,-2.676 +98,3,-0.154,0.281,-0.851,0.944,-0.146 +98,3,1.608,1.479,1.556,-0.139,-1.885 +98,3,-1.709,-1.370,-1.047,-0.523,-2.364 +99,0,-1.458,-0.980,-0.297,0.015,-0.316 +99,0,-1.145,-3.101,-1.887,1.413,-0.757 +99,3,0.602,-1.038,0.196,1.522,-1.907 +100,2,0.479,0.958,0.104,-0.800,0.367 +100,1,0.821,0.309,0.434,-1.932,0.368 +100,1,1.289,1.032,0.105,-1.959,2.166 +100,0,2.362,-0.193,-0.688,-1.034,2.872 +100,0,1.988,0.086,-1.536,-0.621,1.202 +101,0,0.018,0.749,-0.853,0.030,2.573 +101,0,-0.035,-0.933,0.259,1.275,1.451 +101,3,-2.691,-0.977,1.504,0.848,0.177 +102,3,1.010,-0.798,0.717,0.288,-2.515 +102,3,1.186,-1.386,0.350,0.007,-1.755 +102,0,1.097,-2.611,-2.162,0.347,-1.241 +102,3,2.500,-2.032,0.390,-2.236,-2.442 +102,3,-0.548,-1.573,0.837,0.406,-1.828 +103,1,0.796,-1.782,-0.309,-0.518,0.266 +103,0,0.196,-2.643,0.085,-0.996,1.281 +103,0,-0.448,-1.288,0.575,0.821,1.740 +103,0,0.389,-2.551,-0.879,2.172,2.545 +104,0,-0.860,1.209,-2.600,-0.749,0.440 +104,0,1.733,0.111,-2.232,0.591,-0.137 +104,3,1.894,0.445,-1.824,0.677,-0.489 +104,3,3.642,0.815,-0.803,-0.431,0.049 +104,3,1.714,1.343,-0.101,0.672,-1.298 +105,1,1.624,-0.210,0.815,-0.373,0.879 +105,0,0.754,-0.112,-0.763,0.469,0.564 +105,3,0.494,-0.191,1.618,2.098,-0.045 +106,0,-2.917,1.283,-2.260,0.468,1.082 +106,3,-0.394,0.667,-0.358,0.188,3.891 +106,0,-1.205,-0.647,-1.564,-2.192,2.203 +106,0,1.027,1.101,0.156,0.112,0.087 +107,3,-0.879,0.957,1.069,0.071,-1.097 +107,0,-1.430,0.104,-0.661,0.241,-0.095 +107,1,-2.692,-0.628,-0.058,-0.562,0.764 +107,3,-0.427,-1.059,1.650,0.879,-0.814 +108,0,1.525,-0.919,-2.225,-0.587,-0.806 +108,3,-0.082,-2.993,-0.784,0.032,-0.197 +108,1,2.377,-0.322,-1.864,1.237,-0.079 +108,3,2.135,-1.627,-1.077,1.041,-1.385 +109,3,2.137,0.641,0.879,1.114,-1.045 +109,3,0.961,3.464,0.310,0.167,0.987 +109,0,1.214,1.694,-0.045,1.808,1.779 +109,0,-0.980,2.171,0.820,0.258,2.101 +110,2,-1.591,2.216,0.991,1.451,1.197 +110,0,1.419,1.056,-1.398,2.196,1.900 +110,0,-2.192,1.150,-0.196,-0.731,0.743 +111,3,-0.976,1.149,-1.282,1.438,-2.719 +111,3,0.769,0.216,-0.050,-0.646,-0.801 +111,3,1.425,0.310,1.086,-1.287,-0.088 +111,1,0.621,0.048,-1.143,-1.271,0.216 +112,3,-0.679,-2.026,2.182,1.441,0.706 +112,3,0.175,-2.507,2.810,1.000,1.147 +112,3,-0.958,-1.679,0.512,0.769,-0.962 +112,3,0.815,-0.258,2.168,2.437,0.158 +113,0,-0.751,-1.449,0.375,1.580,-0.742 +113,3,-0.730,-1.175,0.933,-0.058,-2.051 +113,0,0.192,-0.658,-2.669,1.393,-2.330 +113,0,-1.715,-0.142,-2.635,-1.051,-0.330 +114,3,-2.977,1.569,0.139,1.659,0.304 +114,2,0.461,0.172,-0.477,1.343,-0.098 +114,3,-0.089,-0.398,0.628,0.905,-0.282 +115,3,2.063,-1.172,0.449,-0.821,-0.701 +115,2,-1.394,-1.784,-1.749,1.523,-1.946 +115,1,-0.045,-1.340,-1.139,-2.747,-0.596 +115,3,1.604,0.685,0.768,-0.386,-1.094 +115,0,-0.727,-0.831,-1.638,0.413,0.487 +116,2,1.870,0.695,0.717,0.771,-0.725 +116,0,2.755,-0.266,-0.668,0.797,1.576 +116,3,1.960,-0.487,-1.025,0.840,-0.985 +116,0,1.326,-1.382,-1.210,-0.749,2.355 +116,0,1.648,-0.218,0.311,-0.662,2.042 +117,3,-0.541,1.532,1.090,-0.235,-0.044 +117,3,2.885,-1.406,0.124,-1.133,-1.126 +117,3,1.877,-2.496,0.605,-1.157,-0.158 +117,3,1.477,-0.897,0.749,-1.848,-0.952 +117,3,1.569,-0.474,1.234,-0.215,0.032 +118,3,1.650,-1.779,0.335,0.181,-3.391 +118,3,0.934,0.707,0.873,-0.598,-3.931 +118,3,1.424,-1.796,0.347,-0.283,-2.928 +119,3,-2.308,1.023,1.075,1.772,-2.165 +119,3,-1.260,-1.134,0.747,1.807,0.293 +119,3,-1.150,0.886,1.163,-0.674,-0.060 +120,0,-1.218,1.036,-0.701,1.572,0.651 +120,0,-1.703,1.353,-0.677,1.327,0.926 +120,0,-0.102,2.153,-0.891,0.653,0.513 +120,0,-1.923,0.789,-0.524,-1.359,1.451 +120,0,-2.063,0.521,-2.434,-0.387,-1.068 +121,3,-0.688,0.337,0.971,-0.428,-1.242 +121,3,-2.271,0.916,-0.007,-0.644,-2.237 +121,3,0.251,0.444,1.371,0.711,-0.579 +122,3,-2.206,-0.861,1.073,0.719,0.125 +122,3,-1.018,1.140,1.154,-0.209,-1.340 +122,3,-1.814,0.488,2.330,1.009,-1.979 +123,0,0.041,1.693,-1.532,-0.021,-0.379 +123,2,-0.603,-0.813,0.452,1.163,-0.924 +123,3,0.598,0.523,1.302,1.195,-0.990 +124,0,-1.151,-4.004,-3.323,-0.229,-0.770 +124,1,0.022,-2.545,-1.300,0.669,-1.020 +124,3,-2.073,-1.885,-0.996,-1.261,-3.913 +124,0,-0.545,-2.511,-1.803,-0.338,-1.205 +125,1,0.204,0.464,-0.692,-1.205,-1.380 +125,2,0.142,1.716,0.919,0.786,0.160 +125,3,-0.091,0.926,1.085,-3.688,-2.203 +125,2,0.274,0.712,0.113,-2.600,-0.118 +125,2,0.299,0.587,-0.455,-1.457,-1.191 +126,0,-1.287,0.015,-0.280,-1.734,0.654 +126,0,-0.583,-1.129,-0.671,-2.156,0.216 +126,0,-1.269,-0.454,-0.602,-1.422,0.314 +127,2,-0.139,-3.498,-2.445,1.517,-3.260 +127,1,-0.768,0.749,-1.964,2.761,-3.214 +127,3,2.213,0.595,0.120,2.225,-0.585 +127,0,-1.313,-0.734,-0.796,1.286,1.186 +128,0,-0.877,-2.435,-2.736,1.304,3.278 +128,0,-1.139,-1.440,0.352,-0.345,1.608 +128,0,-0.034,-1.121,-1.044,0.861,0.567 +128,0,-0.148,-0.300,-1.972,-0.372,1.161 +129,3,0.169,0.205,-0.812,2.300,-0.632 +129,1,-0.013,0.551,-0.672,2.319,-1.758 +129,0,1.082,0.190,-2.296,1.018,-1.720 +129,3,0.494,0.549,-0.984,1.331,-1.341 +129,1,-0.175,-1.767,-1.635,1.066,-0.708 +130,0,2.423,-0.567,-3.457,0.298,-0.092 +130,0,1.717,1.165,-1.767,-1.819,-0.412 +130,0,1.590,-0.665,-0.766,-1.765,0.183 +130,0,1.409,0.263,-0.910,0.176,-0.682 +130,0,0.714,0.899,-2.199,-1.406,0.475 +131,3,-0.135,1.269,-3.417,0.426,-2.367 +131,3,-2.483,0.404,-1.169,-1.649,-1.677 +131,3,-0.247,-0.134,-0.632,-0.225,-0.933 +131,3,-0.562,2.340,-1.399,0.330,-2.975 +132,1,-3.436,1.227,-1.201,1.591,-0.573 +132,0,-3.110,0.954,-0.547,1.299,1.951 +132,0,-2.753,-0.840,-0.798,-0.859,0.841 +132,3,-3.277,0.328,-0.019,0.214,0.877 +132,3,-2.049,-0.578,-0.048,-1.055,0.783 +133,3,0.364,1.604,1.356,-3.778,0.442 +133,3,0.714,1.985,0.767,-0.466,0.352 +133,3,1.147,2.619,0.433,-1.486,-1.106 +133,3,-0.358,2.153,0.134,-0.586,-0.335 +134,3,-0.749,-0.296,-1.767,-0.844,-2.911 +134,3,-2.504,-0.049,-1.790,-1.536,-0.480 +134,3,0.099,-0.721,0.164,0.551,-1.860 +135,3,-0.139,0.346,-0.223,-0.554,-1.636 +135,3,1.264,-0.103,1.693,-1.637,-0.921 +135,3,1.768,0.270,-0.046,-1.000,-0.705 +136,3,-2.460,-0.035,1.531,0.192,1.000 +136,3,1.382,0.495,0.643,2.128,-0.711 +136,3,-2.230,0.670,0.419,1.890,-1.078 +137,1,4.097,0.540,0.212,1.543,1.510 +137,0,2.834,0.620,-0.236,1.142,2.312 +137,0,3.932,-0.854,-1.090,-0.379,3.997 +137,1,2.043,-0.776,-1.181,0.875,0.015 +137,0,1.713,0.108,-1.363,-0.352,1.344 +138,0,-0.382,-0.169,-1.351,-1.039,0.282 +138,0,-1.088,0.502,-1.455,0.776,0.631 +138,0,2.377,2.136,-2.330,0.020,1.260 +138,0,1.584,1.889,-0.128,-0.501,1.124 +138,1,1.993,0.631,-0.592,1.035,3.376 +139,1,-0.505,3.733,0.775,-1.352,1.394 +139,3,-0.424,1.926,-1.021,0.064,-1.690 +139,3,-0.111,-0.387,-0.139,-0.853,-2.159 +140,3,2.160,-0.747,0.977,0.772,-0.298 +140,3,2.785,1.478,2.243,-0.143,-0.749 +140,3,0.269,1.227,1.933,0.497,0.221 +140,3,2.251,-1.694,2.038,0.296,-0.932 +140,3,0.918,-1.366,1.447,1.080,0.370 +141,3,0.408,-2.265,0.317,1.307,-0.828 +141,3,0.447,-0.852,4.245,0.944,-0.691 +141,3,0.535,-0.852,0.365,-1.610,0.303 +141,0,-0.170,0.011,0.473,0.837,0.519 +142,0,1.235,0.909,-0.613,-2.065,2.612 +142,2,0.990,1.254,1.929,-2.441,2.398 +142,0,0.420,-0.034,3.209,-2.292,2.975 +142,0,1.411,2.685,1.345,-2.635,0.019 +142,3,-0.396,1.103,1.605,-3.118,0.484 +143,0,-0.641,-0.535,-1.015,2.459,2.174 +143,0,0.311,1.323,0.159,-0.855,1.079 +143,0,-0.531,1.218,0.247,-1.975,1.363 +143,2,0.231,1.198,1.439,-0.413,2.345 +143,1,1.241,1.689,0.826,-0.983,0.444 +144,0,0.501,-0.212,-0.485,-0.546,0.064 +144,0,0.290,-0.456,1.345,-2.318,2.600 +144,0,2.900,0.701,1.691,-3.227,0.732 +145,3,-0.444,1.498,1.698,2.001,2.299 +145,1,-1.595,-0.710,1.093,0.362,0.635 +145,3,0.906,1.364,1.684,0.420,0.109 +145,3,-1.227,1.780,1.185,1.706,-0.148 +146,0,2.788,0.184,-1.675,-1.623,-1.016 +146,3,0.130,0.865,-0.189,-1.535,-1.029 +146,0,0.841,2.209,-1.351,-0.550,-0.315 +147,0,1.908,-2.269,2.341,-1.251,3.364 +147,1,3.478,0.916,1.636,-1.854,0.853 +147,3,1.198,0.082,0.902,0.099,1.339 +147,3,0.638,-0.829,3.691,-1.567,0.312 +147,0,2.339,-0.025,3.174,0.148,1.504 +148,0,-1.064,-0.379,0.097,0.613,3.423 +148,0,1.415,0.408,0.008,0.965,3.160 +148,0,-0.828,0.407,-0.113,0.781,3.454 +149,3,0.721,3.008,-2.780,-0.790,-2.606 +149,0,2.396,1.752,-1.284,-0.693,1.524 +149,0,0.652,1.451,-4.768,0.439,-1.203 +150,3,-1.186,-1.967,0.903,-1.600,0.926 +150,0,-1.156,-2.979,-0.885,-0.598,0.622 +150,3,-0.730,-1.823,2.007,-0.152,0.822 +150,3,-1.548,-3.785,2.642,-0.052,-0.940 +151,0,-0.807,0.287,-0.822,-1.652,0.408 +151,3,-0.140,-0.690,-0.126,-1.978,0.140 +151,3,-0.507,-0.723,0.521,0.346,-0.376 +151,3,-1.114,-1.242,-0.026,-0.380,-1.418 +151,3,1.376,-0.280,-0.315,-0.364,-1.108 +152,0,1.241,0.150,-1.644,0.725,-0.424 +152,1,0.046,2.573,-0.988,0.467,1.041 +152,0,0.024,1.955,-3.466,1.355,1.664 +152,0,1.310,0.023,-2.217,0.369,2.114 +152,0,0.241,0.408,-1.841,1.459,1.345 +153,3,-1.933,0.491,0.667,-0.253,0.336 +153,0,-1.436,1.425,-0.688,-1.161,0.507 +153,3,-1.920,1.110,-0.242,0.470,-0.122 +153,0,-0.205,-0.497,-1.803,-1.077,1.289 +154,3,1.143,-0.138,0.879,-2.198,0.128 +154,2,0.929,0.869,0.458,0.308,1.032 +154,0,0.390,0.727,-0.666,-0.123,1.833 +154,1,1.365,-0.743,0.496,-1.188,1.604 +154,2,1.848,-0.730,0.275,0.178,0.962 +155,3,-0.047,1.903,0.318,-1.838,0.339 +155,3,-0.062,2.339,0.911,0.371,-2.339 +155,3,-0.039,3.063,0.149,-1.166,-0.810 +155,1,0.550,1.715,-0.840,-0.014,-0.191 +155,0,-0.719,1.124,-0.510,-0.974,0.133 +156,0,1.658,-2.364,-0.305,-1.303,-0.861 +156,3,1.596,-0.641,0.808,0.897,-1.844 +156,0,1.437,-0.151,-1.099,0.391,-0.899 +157,1,-2.398,1.000,0.286,-0.488,-2.161 +157,3,-2.122,2.956,-1.093,0.223,-1.629 +157,3,-3.343,0.350,0.785,1.157,-3.112 +158,2,-1.198,-1.993,1.405,-1.007,-0.373 +158,0,0.522,0.682,0.649,-0.697,2.552 +158,3,-0.508,1.116,0.009,-0.205,0.742 +159,0,2.386,1.557,-0.383,-0.936,0.951 +159,1,2.206,0.401,-0.275,1.492,1.651 +159,0,1.212,1.792,-0.542,-0.426,1.447 +159,0,1.728,1.405,-1.729,-0.654,-0.602 +159,1,1.358,1.629,0.873,0.322,0.406 +160,3,2.099,0.427,2.453,2.109,-0.083 +160,3,-0.230,-1.396,2.938,2.710,0.967 +160,3,-1.292,0.950,1.096,3.372,-1.505 +161,3,0.045,1.270,0.331,-2.133,-2.610 +161,3,-1.333,0.652,1.125,0.465,-2.381 +161,1,-2.065,0.173,-1.495,-1.296,-0.877 +161,3,1.379,0.262,-2.287,0.774,-4.017 +161,3,1.486,-2.368,0.155,1.414,-3.064 +162,3,0.671,0.086,1.934,0.116,-0.992 +162,3,1.527,-0.836,-0.386,1.357,-2.509 +162,3,2.471,-1.969,2.200,-1.062,-0.266 +162,3,0.995,-2.304,1.331,-0.198,-0.337 +163,3,-0.820,1.325,-0.337,-1.330,-1.507 +163,3,0.063,0.126,0.790,-0.235,-2.175 +163,1,-0.124,-1.557,-1.332,0.838,-1.719 +163,3,-1.017,-0.418,-2.084,-0.737,-2.358 +164,3,0.717,-0.559,1.383,0.400,-2.886 +164,3,-0.807,-0.399,3.138,1.258,-2.738 +164,3,-0.275,2.211,1.929,1.974,-2.804 +165,3,-1.783,-0.622,-0.414,-1.466,-0.731 +165,1,0.173,-1.007,-0.228,-0.814,-0.590 +165,1,-0.200,-1.005,-1.177,-1.408,-1.153 +166,1,-0.663,-1.783,-0.769,-0.894,0.046 +166,0,-0.842,0.570,-0.743,2.119,-0.379 +166,3,1.389,0.973,1.166,-0.558,-0.023 +167,3,3.277,0.598,3.551,-0.857,-1.374 +167,3,1.432,0.924,0.965,-1.430,-1.690 +167,3,1.690,0.300,0.809,-2.272,-3.489 +168,0,-1.500,1.650,-0.436,3.251,-0.052 +168,3,-2.573,0.863,-0.234,2.108,-1.353 +168,0,1.189,1.353,-2.623,0.498,-1.145 +168,1,0.637,0.969,0.490,1.850,-0.304 +168,0,-0.943,1.046,0.069,0.898,0.010 +169,0,1.310,2.549,1.505,0.237,0.170 +169,0,0.303,0.262,0.334,-0.371,0.993 +169,3,0.682,3.013,0.238,-0.070,-1.370 +169,3,0.601,0.963,1.419,0.938,-1.700 +170,3,-1.373,-1.059,2.467,-0.352,-2.084 +170,3,-0.842,0.645,0.402,-0.048,-2.521 +170,2,-3.836,1.001,-1.300,-0.248,-1.706 +170,3,-3.580,-0.530,1.538,-0.970,-1.583 +171,3,-1.357,-0.678,1.783,1.263,2.233 +171,0,-1.228,1.193,0.572,1.124,3.645 +171,0,0.100,2.151,0.290,1.067,1.043 +171,2,-0.560,1.164,-0.395,3.820,0.094 +172,3,-1.608,0.227,0.243,1.486,-0.901 +172,1,-1.977,0.554,-1.540,-0.097,0.520 +172,1,-2.802,-0.339,-1.587,0.297,-0.408 +172,0,-1.616,1.836,-0.994,-0.579,1.531 +173,3,-3.676,-0.286,1.189,1.776,-0.382 +173,1,-2.701,0.361,1.374,0.768,1.295 +173,3,-3.954,0.131,2.665,-1.615,0.337 +173,1,-3.597,1.692,1.937,-1.086,2.327 +173,0,-3.324,1.520,0.529,1.440,1.007 +174,3,2.993,1.537,0.353,1.990,-1.645 +174,1,1.412,-0.459,0.035,1.837,0.072 +174,3,1.978,1.074,-1.335,-0.466,-0.572 +175,1,-0.636,1.270,2.992,1.021,1.860 +175,0,1.546,3.505,-0.440,-0.413,1.841 +175,3,0.049,1.288,0.941,-1.389,0.925 +175,0,-1.177,2.804,0.877,-1.363,2.648 +175,3,0.290,0.184,0.849,0.006,0.396 +176,0,-2.478,-3.280,0.118,0.188,1.488 +176,3,-2.952,0.524,3.634,-1.651,1.753 +176,0,-1.595,0.406,0.827,-2.061,2.908 +176,2,-2.377,0.120,1.871,-0.987,1.719 +176,2,-2.156,-1.604,0.185,0.402,-0.503 +177,1,-1.513,0.278,-1.517,-0.447,-2.413 +177,0,-3.137,0.337,-2.083,-0.116,1.925 +177,1,-0.787,-0.227,-2.580,0.576,-0.511 +177,1,0.199,1.018,1.003,3.064,0.447 +177,3,-2.446,2.508,-0.836,-0.384,-1.670 +178,3,-0.089,-0.927,1.137,-0.355,0.346 +178,2,0.188,-2.616,1.135,-0.432,0.960 +178,3,-0.473,0.521,-0.002,-1.395,0.646 +178,3,0.539,0.247,1.026,-1.850,0.989 +179,2,1.672,2.319,0.366,0.325,-0.595 +179,3,1.648,-0.932,1.583,1.283,0.277 +179,3,-1.139,-1.284,1.783,2.048,-1.149 +179,0,0.355,1.615,0.711,2.350,0.652 +180,3,0.340,-0.863,1.285,0.554,-0.018 +180,1,0.272,-1.149,0.691,0.759,0.462 +180,3,-0.401,0.749,2.009,1.034,-1.260 +180,3,1.930,-0.193,1.508,0.361,-1.562 +181,0,-0.362,0.667,0.161,-1.863,1.661 +181,2,-0.022,1.095,-0.542,-1.271,-1.138 +181,3,1.291,0.723,0.729,-0.849,0.543 +182,3,-0.000,2.003,-0.715,0.302,-0.885 +182,3,-2.738,2.221,-1.302,-1.037,-2.133 +182,3,-2.372,2.372,0.840,-1.924,-1.727 +182,3,-0.809,0.643,1.612,-1.019,-2.551 +183,0,0.773,-0.247,0.328,0.766,0.225 +183,1,-0.755,-1.214,-0.106,-1.715,-2.033 +183,3,-2.947,-0.993,0.923,-0.851,-0.133 +183,0,-0.170,0.705,-1.724,-1.688,0.096 +184,0,0.097,0.929,-0.264,-0.029,2.380 +184,3,-1.354,0.381,2.728,0.133,-0.295 +184,1,-0.671,-0.033,-0.333,-0.237,0.098 +184,3,-0.876,0.093,2.407,3.023,0.787 +185,1,-0.810,-0.570,0.863,-0.681,1.083 +185,0,0.084,-3.071,0.701,-0.462,1.017 +185,0,-0.446,-1.983,0.264,0.489,-0.139 +186,3,0.331,-1.387,1.926,-1.607,-0.230 +186,3,-0.255,0.931,2.253,-0.791,0.786 +186,2,0.803,-0.198,1.292,-1.593,-1.678 +186,0,1.352,-0.119,0.645,-2.624,0.748 +187,3,0.002,0.542,-2.521,-2.215,-0.727 +187,3,-1.175,-2.607,-2.168,-2.338,-0.368 +187,3,-2.230,0.586,-0.817,-1.140,-0.625 +188,3,1.147,-0.643,3.065,0.831,-3.503 +188,3,0.824,0.336,1.085,2.934,-2.900 +188,3,-0.657,0.033,1.509,1.177,0.111 +189,3,-0.252,0.091,2.198,0.094,-0.181 +189,0,3.062,-1.644,0.301,0.894,-0.402 +189,0,0.766,-0.451,-1.074,0.758,0.281 +189,3,1.363,-0.380,-1.721,-1.560,-2.595 +189,0,0.264,-0.508,-1.991,0.857,-1.018 +190,2,0.354,2.164,1.315,2.869,1.747 +190,0,-1.349,2.479,0.276,0.947,-0.889 +190,3,-0.246,0.957,0.606,-0.846,-0.890 +190,3,-2.057,1.623,1.668,1.590,-1.383 +190,0,0.060,2.207,0.220,0.229,-0.484 +191,3,0.624,0.229,-1.151,-1.374,-2.259 +191,3,-1.006,-0.705,-1.121,-0.513,-3.793 +191,3,1.960,0.460,0.803,0.568,-1.902 +192,0,-1.287,1.048,-1.946,1.663,0.596 +192,3,-0.487,1.134,0.124,3.091,-2.060 +192,2,-0.376,-0.143,0.695,1.670,-0.849 +192,1,0.957,-0.218,-1.940,0.705,-0.577 +192,1,-0.605,1.937,-0.328,1.379,-0.552 +193,3,0.483,0.290,1.008,-0.760,1.946 +193,3,-0.767,1.951,1.785,2.105,0.866 +193,3,-1.086,1.470,1.237,0.991,0.246 +194,3,0.253,-0.211,3.301,-0.949,-0.763 +194,3,1.383,1.297,3.870,-1.100,-1.919 +194,2,0.663,1.061,2.675,0.168,-1.472 +195,0,1.591,0.232,-2.673,-1.815,-1.724 +195,0,1.441,-1.518,-2.079,-1.319,-0.623 +195,1,-1.504,-2.018,-0.158,-1.826,0.745 +196,0,0.462,0.395,0.286,0.962,0.422 +196,0,2.118,0.222,0.622,2.667,0.125 +196,1,0.257,0.558,0.984,0.828,-0.042 +196,0,0.115,-0.418,0.422,-0.346,-0.198 +196,3,0.371,-1.526,0.772,-0.558,0.114 +197,1,-0.595,0.182,1.660,-1.964,0.587 +197,1,0.717,2.608,0.085,0.584,0.101 +197,3,-0.743,1.002,1.141,0.564,-0.332 +197,1,1.239,2.137,0.282,-1.674,0.447 +197,0,0.718,1.075,0.878,-0.649,1.074 +198,1,-1.111,1.118,-0.746,-0.462,1.093 +198,0,-0.056,1.894,-2.264,-0.204,0.402 +198,0,0.641,0.408,-2.025,-0.978,1.231 +199,0,-1.408,0.725,-3.293,2.348,-0.205 +199,2,0.616,0.482,-0.695,1.251,0.828 +199,1,-0.370,1.067,-1.060,0.632,2.041 +199,3,1.817,-0.130,-1.663,0.543,0.827 diff --git a/statsmodels/genmod/tests/results/gee_poisson_1.csv b/statsmodels/genmod/tests/results/gee_poisson_1.csv new file mode 100644 index 0000000..08fee18 --- /dev/null +++ b/statsmodels/genmod/tests/results/gee_poisson_1.csv @@ -0,0 +1,399 @@ +0,2,0.044,-1.944,2.178,-1.691,1.217 +0,1,0.166,0.108,0.849,-0.728,1.182 +0,1,0.085,1.086,0.915,1.447,2.845 +1,3,0.981,-0.561,-0.956,0.362,-0.527 +1,0,-0.821,0.069,-0.886,-0.552,-0.149 +1,1,0.135,1.290,-0.612,0.355,-0.021 +1,1,-0.186,-0.030,-0.526,0.557,-0.558 +2,1,-0.391,-4.376,-1.124,0.612,-1.324 +2,0,1.173,-3.144,-2.369,-1.176,-0.416 +2,0,-0.913,-3.283,-2.843,-1.422,-1.144 +2,1,0.754,-2.505,-0.984,-0.659,-0.224 +2,0,0.566,-2.923,-1.896,0.604,0.223 +3,1,-2.310,1.610,0.992,-0.426,0.053 +3,6,-1.450,1.220,2.457,-2.203,0.643 +3,8,1.394,-1.082,2.256,-1.345,-1.569 +3,0,-0.902,-0.821,-0.403,-2.099,-0.278 +4,4,-1.836,1.599,-2.260,-0.558,-1.336 +4,7,-0.052,-1.184,1.223,-1.584,-0.635 +4,2,-0.370,0.459,-0.141,-0.047,-1.226 +4,3,-0.280,0.313,1.574,-2.396,-1.382 +4,4,-0.527,0.199,1.486,0.199,-0.545 +5,0,-1.127,-0.596,-0.841,1.963,3.568 +5,2,1.370,0.046,0.586,0.191,1.172 +5,1,-1.389,0.393,1.389,1.202,2.256 +5,1,-1.256,-0.201,-0.475,0.482,1.248 +5,0,0.574,0.050,-1.126,0.537,1.481 +6,7,1.316,2.539,2.540,-1.258,-1.396 +6,4,-1.354,0.528,2.451,2.115,0.114 +6,1,0.810,-0.246,0.063,0.062,0.637 +7,0,-0.630,0.509,1.271,0.595,1.842 +7,3,-1.820,-0.058,2.170,-0.361,1.437 +7,0,-0.160,-1.044,0.680,-0.678,1.511 +8,1,-0.716,0.171,0.213,0.149,-0.432 +8,0,-1.039,-1.262,-0.415,-0.657,0.591 +8,4,0.421,-0.423,0.639,0.146,-0.456 +9,5,-0.546,3.096,-1.098,-1.693,-2.755 +9,1,-0.233,1.780,0.833,-2.080,1.562 +9,1,-0.857,2.404,0.464,-3.263,2.044 +9,2,-0.803,2.465,-1.846,-1.601,-0.821 +10,3,2.027,-0.455,0.189,1.624,-1.011 +10,3,3.125,0.455,-0.386,0.663,-0.456 +10,0,2.443,-1.703,-0.855,0.919,2.322 +10,0,1.292,1.489,-0.982,-0.783,0.620 +10,1,3.769,-0.866,-0.212,1.066,1.504 +11,0,1.046,0.104,-0.014,-0.394,0.538 +11,0,1.647,-0.614,-1.885,-0.166,1.048 +11,0,-0.756,-0.890,-1.294,0.813,2.638 +11,1,0.334,-0.872,-0.362,0.685,1.432 +11,0,-0.647,0.463,-1.356,-0.746,4.072 +12,0,-0.096,0.576,-0.298,-2.021,-1.067 +12,0,0.426,-0.435,-0.562,-0.518,0.158 +12,0,0.363,0.158,-0.078,-0.157,-0.158 +13,1,0.333,0.958,1.453,1.085,0.358 +13,2,0.931,-1.524,-0.777,1.854,-2.560 +13,7,0.172,0.848,1.279,1.234,-0.723 +13,2,0.180,-2.070,0.376,-0.476,-0.466 +14,1,0.127,0.351,-0.398,-0.167,-1.155 +14,1,0.293,0.166,-0.661,0.005,0.008 +14,1,-0.467,0.907,-0.527,-1.192,-0.161 +14,9,-0.812,2.363,2.727,0.786,-0.942 +15,0,-0.347,-1.468,1.359,-0.410,0.607 +15,0,1.100,-1.531,-0.154,-0.295,2.609 +15,1,0.487,-1.657,0.315,0.317,0.104 +15,0,0.302,-3.395,-0.446,1.236,2.714 +15,0,2.029,-1.188,0.396,1.032,2.268 +16,1,1.133,-0.600,1.401,1.871,-0.526 +16,4,1.570,0.151,1.725,0.667,-2.335 +16,0,-0.423,0.371,-0.825,-0.068,-0.671 +16,1,-0.121,0.661,0.343,0.197,-0.523 +17,1,-0.825,2.387,-1.431,0.990,0.266 +17,1,0.233,1.366,0.322,2.735,-1.008 +17,0,-0.357,1.484,-1.161,1.548,0.401 +17,2,-2.097,0.452,-0.963,2.389,-2.222 +17,0,0.573,2.523,-0.315,2.031,-0.828 +18,3,3.245,-0.412,0.910,-0.088,-2.425 +18,0,0.892,2.733,-1.249,1.190,-1.444 +18,0,3.510,2.724,0.616,-0.380,-0.698 +19,2,-1.857,-0.358,0.400,0.743,-2.233 +19,2,-2.196,-1.225,1.317,-2.173,-1.884 +19,0,0.527,-0.456,0.647,0.860,-0.824 +20,0,-0.662,2.372,-0.213,0.912,1.116 +20,0,0.499,1.061,0.190,0.295,2.212 +20,0,-1.777,0.796,-0.807,-0.137,0.420 +20,1,0.276,2.640,-0.874,-0.211,-0.418 +21,4,-0.214,-2.134,0.493,-0.437,-0.997 +21,2,-2.811,-1.921,-0.058,0.363,-1.010 +21,3,-0.558,-2.065,0.145,1.676,-2.602 +21,3,-2.317,-1.860,0.026,-1.201,-3.038 +21,9,-0.762,-0.012,1.612,1.408,-2.572 +22,1,-1.787,2.937,0.022,0.099,0.356 +22,0,-0.817,2.268,1.054,0.916,-0.676 +22,2,-0.621,3.184,-0.472,0.422,-1.300 +23,5,-1.680,-2.801,3.249,-0.434,-0.179 +23,2,-2.770,-3.191,0.935,0.308,-0.496 +23,1,-1.729,-2.063,0.825,0.430,-1.919 +23,4,-2.937,-2.522,-0.449,0.897,-2.168 +23,1,-2.158,-0.575,-0.544,1.067,-1.443 +24,5,0.886,-1.741,2.038,-0.983,-0.645 +24,1,1.723,-0.160,0.215,1.270,0.550 +24,5,-0.331,-0.514,2.155,1.623,0.785 +24,0,0.384,-0.017,-0.431,0.412,2.708 +25,0,1.030,-0.839,-3.573,-0.613,0.049 +25,0,0.641,-1.617,1.163,-1.806,1.842 +25,0,-1.579,-1.314,-1.181,-2.155,-0.260 +26,0,-1.938,0.060,-0.614,-1.926,-0.159 +26,1,-1.951,-0.223,-2.192,0.101,-0.125 +26,0,-1.460,0.832,-0.694,-0.688,0.241 +26,3,-2.055,-0.348,-1.061,-0.772,-1.987 +27,1,-1.249,-0.154,-0.895,1.388,2.826 +27,1,-0.784,-0.230,0.381,0.190,1.018 +27,0,0.626,1.623,-1.462,1.957,0.805 +27,1,-0.003,-0.392,-0.484,3.324,1.867 +28,2,-0.619,0.762,-0.368,2.700,0.089 +28,1,1.826,0.516,0.037,-1.679,-1.007 +28,0,1.249,-2.051,-0.271,2.145,-2.278 +28,1,1.417,0.143,0.497,0.779,0.412 +29,1,-0.445,-2.649,0.413,1.582,-0.897 +29,1,-0.945,-0.918,-1.376,3.543,-0.143 +29,2,-0.504,-1.076,1.309,1.894,-0.330 +29,1,-0.773,0.800,-0.582,3.577,0.957 +30,0,-0.836,-0.502,-0.778,-0.193,2.344 +30,0,-1.141,0.095,-2.593,-1.294,1.384 +30,0,0.125,1.140,0.340,-3.002,0.046 +30,0,-1.908,-1.934,-2.078,-0.816,-0.466 +31,0,-0.436,1.926,0.850,-0.726,2.645 +31,1,0.064,1.243,0.772,-0.727,2.833 +31,2,-1.676,1.738,0.204,-1.005,0.873 +31,2,-0.419,0.134,4.280,1.445,1.868 +31,0,-0.559,-1.266,0.083,-1.109,2.702 +32,0,2.162,2.265,-2.703,0.501,-0.885 +32,0,0.912,3.868,-0.796,0.392,0.563 +32,0,1.701,2.087,-2.191,-1.476,1.852 +32,0,-0.112,2.632,-0.388,0.910,1.455 +32,0,1.618,2.864,0.298,-0.969,0.275 +33,1,0.171,-1.529,-3.034,1.606,-1.257 +33,0,0.822,0.562,-2.300,0.663,0.263 +33,0,-0.304,-0.365,-1.826,-0.307,1.486 +33,0,1.171,-0.542,-2.006,1.748,1.395 +33,0,0.363,0.728,-2.173,-0.356,0.769 +34,0,0.487,1.139,-1.393,-2.261,2.380 +34,0,0.268,-0.748,-0.839,-0.257,-0.132 +34,0,-0.709,0.706,-0.064,-1.308,1.653 +35,3,2.421,0.001,0.005,1.621,-3.110 +35,4,0.163,1.222,1.968,0.924,-1.362 +35,4,0.990,1.669,-0.078,1.851,-1.410 +35,4,-0.465,0.388,1.349,-0.403,-1.136 +35,1,0.159,0.480,1.492,0.355,-0.559 +36,3,-0.280,-1.501,1.350,-1.551,0.289 +36,0,-0.514,-2.882,-1.437,-1.457,1.593 +36,3,-0.683,-0.834,1.597,-0.418,-1.147 +36,1,3.871,-3.209,0.170,-1.187,-0.804 +36,2,0.271,-2.104,-1.342,-2.134,-1.256 +37,3,0.333,0.072,-0.719,0.893,-1.148 +37,0,0.642,-1.669,-0.664,-0.431,1.207 +37,0,0.737,-0.558,-1.023,1.299,0.731 +37,1,1.349,-1.115,-0.406,1.503,-1.293 +38,3,0.604,0.511,1.001,-0.853,-0.241 +38,1,-1.121,0.464,0.652,-1.740,1.256 +38,6,-1.573,-0.342,2.460,-0.315,-0.539 +38,4,0.178,0.169,1.330,0.032,0.077 +38,1,-0.105,-0.299,1.094,-0.565,-0.525 +39,0,1.418,0.441,-1.647,2.784,0.534 +39,0,1.834,-0.916,-1.083,0.794,0.426 +39,0,2.298,-1.713,-2.095,1.675,1.097 +39,1,1.205,-1.920,0.354,3.532,0.392 +40,6,-0.127,1.656,0.633,-0.709,-2.331 +40,1,1.114,0.135,-0.776,0.742,-0.256 +40,0,3.084,-1.765,-0.638,-0.140,-0.197 +40,1,1.458,0.271,-0.903,-0.290,-1.920 +41,1,-0.001,0.564,-0.284,-2.181,-0.791 +41,4,-0.256,0.381,1.362,-0.644,0.019 +41,0,1.442,-0.064,0.059,1.256,-0.329 +41,1,0.689,1.299,0.087,-1.861,0.324 +42,1,2.204,0.587,-0.215,1.798,-1.147 +42,0,2.796,1.675,-0.747,0.348,-0.249 +42,2,1.285,-0.232,-0.893,1.375,-0.344 +42,0,2.522,0.827,-0.236,0.343,-0.117 +43,3,-0.876,0.544,-0.888,2.547,-1.345 +43,1,-0.676,0.459,0.653,0.240,0.684 +43,0,-0.404,0.353,0.314,2.557,0.210 +44,3,2.733,-1.122,0.165,0.805,-2.388 +44,0,-0.511,0.285,-0.216,1.613,-0.602 +44,0,1.453,1.085,-0.850,3.200,-0.743 +45,1,-1.137,-0.205,-0.702,-0.322,-2.291 +45,6,-1.671,-0.337,2.598,2.366,-0.231 +45,1,0.982,-0.628,0.694,0.595,0.409 +45,7,-0.250,-0.388,-0.097,1.313,-3.654 +46,4,1.522,1.144,1.769,-0.153,-1.040 +46,2,1.056,-0.067,0.274,0.454,0.366 +46,4,-0.311,2.907,1.852,-0.730,-1.052 +47,0,-2.385,-0.345,-1.266,-1.990,-2.767 +47,3,-1.898,-0.646,-0.124,-0.477,-3.042 +47,9,-1.911,0.349,0.734,0.066,-3.769 +47,0,-0.925,0.752,-0.416,-1.470,-1.603 +47,2,-1.527,0.409,-0.512,-0.018,-1.016 +48,2,-1.031,-2.579,-0.669,-2.591,-0.823 +48,1,0.555,-3.137,-2.007,-2.526,-1.213 +48,2,-1.764,-2.412,-0.308,-2.230,-1.503 +49,0,-1.319,-0.739,-1.816,-0.781,0.092 +49,4,0.734,-1.690,0.712,-1.185,-1.340 +49,0,-0.594,-0.694,-1.293,0.800,0.076 +50,1,-0.701,-2.689,-0.465,-2.033,1.011 +50,0,-0.273,-0.078,0.052,-1.591,1.250 +50,0,-1.756,-0.379,0.827,-4.061,0.903 +50,0,-0.378,0.318,-0.403,-1.957,0.426 +51,7,0.074,4.902,3.130,1.105,0.402 +51,4,0.067,2.519,0.729,3.211,-2.726 +51,6,-0.375,2.703,0.740,0.453,-1.382 +52,1,-0.828,1.303,0.841,-0.236,0.472 +52,1,0.474,0.085,0.774,0.573,0.740 +52,1,-0.328,-0.194,0.473,1.487,0.136 +52,6,0.296,0.990,2.878,-0.525,0.896 +53,0,0.033,3.132,-1.005,0.051,0.556 +53,0,-2.035,-0.399,-0.302,-0.743,0.522 +53,0,0.528,0.790,-1.577,-1.718,2.279 +54,0,0.558,-2.951,-2.227,-0.484,0.706 +54,0,0.928,-0.937,-2.818,-0.143,-1.996 +54,1,-0.221,-4.696,-0.204,-0.395,-0.106 +55,0,0.385,-0.567,-3.185,-1.866,0.571 +55,1,0.654,0.060,-2.197,-0.628,1.955 +55,0,-1.046,3.095,-2.062,-0.217,0.544 +55,1,-1.024,-0.319,-3.029,-3.055,0.467 +56,0,0.122,0.450,1.586,-1.655,1.394 +56,0,-0.867,1.028,-1.273,-3.739,0.789 +56,2,1.803,-0.453,-0.034,-2.391,-0.881 +56,0,-1.382,1.039,-1.428,-3.204,-0.561 +57,0,0.006,-0.515,-1.096,-0.707,2.174 +57,1,-1.996,-1.880,-0.440,-1.100,-0.014 +57,1,-1.085,-1.100,0.280,-1.343,0.862 +57,0,1.713,-0.004,0.424,-0.942,0.069 +57,1,-0.710,-1.584,-1.317,0.221,0.323 +58,1,1.370,-0.138,-2.298,-0.553,-0.816 +58,3,-1.318,1.857,-0.671,-2.087,-2.159 +58,1,-0.716,0.321,-1.648,-1.533,-1.617 +58,0,-1.417,0.452,-3.960,-2.305,-1.785 +58,0,0.246,-1.079,-2.026,-3.528,-1.026 +59,3,-0.760,0.105,1.095,-1.530,-0.266 +59,0,0.371,0.994,1.455,-1.974,1.809 +59,2,0.430,2.295,2.120,-2.343,0.134 +59,0,0.776,0.976,1.622,-0.927,1.879 +59,1,-1.369,-0.193,1.242,0.839,-0.453 +60,3,4.065,-0.859,0.297,-1.336,-1.015 +60,10,2.758,-0.547,1.568,-2.880,-2.020 +60,1,1.261,-0.010,0.535,-0.527,0.309 +60,3,1.866,-1.058,0.602,-2.418,-1.514 +61,1,-0.620,-0.854,0.456,-1.389,1.419 +61,3,-0.030,1.004,2.976,0.660,0.317 +61,2,-1.403,0.133,0.420,-0.355,0.460 +61,1,0.531,1.596,3.288,-1.686,2.302 +62,8,0.363,-1.551,2.280,0.832,1.509 +62,0,0.350,-1.382,0.019,0.619,2.208 +62,1,-0.174,0.346,2.720,0.495,3.133 +63,2,1.766,0.925,1.092,-0.805,1.298 +63,1,0.639,0.018,1.180,-2.427,1.871 +63,0,3.252,1.088,0.253,-2.307,0.609 +63,0,2.505,0.614,1.469,-1.681,1.020 +64,1,0.950,-0.035,-0.684,-1.169,-1.217 +64,3,0.693,-0.361,0.672,-0.636,0.282 +64,0,1.115,0.797,-2.802,0.401,-1.132 +65,4,0.275,-0.140,1.169,0.162,0.394 +65,3,1.337,0.064,1.713,-0.656,0.213 +65,1,0.957,2.029,-1.271,0.720,0.086 +65,1,0.429,-1.374,-0.203,1.921,-0.092 +65,0,-0.328,0.046,-2.460,-1.046,-0.755 +66,0,1.813,-3.137,-2.012,-1.798,-0.796 +66,0,1.490,-2.010,-1.243,-0.064,-1.215 +66,2,-0.143,-2.665,-2.869,-1.426,-2.205 +66,0,3.464,-1.743,-1.619,-0.035,-0.110 +67,0,0.472,-1.619,-0.239,0.321,1.064 +67,1,-0.197,-0.089,-0.062,-1.040,0.766 +67,0,1.090,-0.313,-0.970,0.336,-0.397 +67,1,0.497,-2.245,-0.887,0.993,-0.922 +67,1,1.224,-0.560,-0.279,0.804,-0.759 +68,0,0.096,-2.668,-1.718,-0.079,-0.381 +68,1,-1.622,-0.081,-0.967,0.685,1.423 +68,3,-0.616,-1.122,-0.168,-0.937,-0.441 +68,2,-1.143,-2.188,-0.676,-0.486,-0.761 +68,0,-1.167,-0.881,0.236,-0.381,-0.694 +69,0,2.240,-0.569,-1.555,-1.292,1.223 +69,0,0.995,1.505,-0.962,-0.046,1.677 +69,0,-0.319,0.823,-0.682,-1.694,3.254 +69,0,1.443,-0.218,-0.709,-3.050,1.033 +69,0,-0.409,0.090,0.452,0.282,2.727 +70,1,-0.545,1.643,1.090,-1.526,0.403 +70,0,0.290,0.654,-0.079,-0.636,1.909 +70,2,-0.760,0.480,3.118,-0.098,0.812 +70,0,1.853,-0.196,-0.085,-0.396,0.643 +70,4,-0.917,1.343,1.352,-0.316,-1.306 +71,1,1.664,-0.290,-0.502,1.287,0.548 +71,5,-0.289,-1.041,1.647,2.385,-1.323 +71,5,0.573,-0.397,2.123,0.868,-2.041 +71,1,-1.083,-2.345,0.670,-1.333,0.767 +72,0,-0.304,0.582,0.215,-1.545,2.028 +72,0,-1.672,-0.218,0.539,-2.073,1.500 +72,1,-2.239,1.413,-0.563,0.115,1.238 +72,1,-1.177,0.263,0.023,-1.034,-0.061 +72,0,-1.400,-0.234,0.741,0.132,0.934 +73,0,1.795,0.869,-2.855,-2.320,-1.499 +73,1,-0.720,-1.265,-1.158,-2.049,0.204 +73,2,1.011,-1.342,-1.009,-0.624,-1.244 +73,2,2.875,-0.647,0.025,-1.655,0.307 +74,0,-0.805,-0.791,-1.965,0.176,0.878 +74,1,1.301,0.508,0.786,0.807,1.104 +74,0,0.409,0.564,-3.757,2.828,1.627 +74,0,-2.083,0.552,-2.713,2.022,1.646 +75,5,-2.130,-1.118,2.457,-0.315,-0.689 +75,0,-0.862,-2.880,-0.299,0.153,0.535 +75,0,-2.799,-0.865,-0.792,0.244,-1.799 +76,0,-0.297,-1.109,-1.249,-0.989,0.795 +76,0,0.102,-1.247,-0.156,-1.167,1.052 +76,0,1.402,-1.539,-1.497,-0.846,0.046 +77,0,-0.635,1.171,-0.413,1.615,0.125 +77,4,0.920,0.322,0.025,-0.333,-2.197 +77,1,-1.162,-0.289,-0.357,1.456,-0.002 +78,2,-0.345,0.014,-1.094,-1.834,-2.501 +78,6,-0.495,2.418,0.089,-0.068,-1.881 +78,1,-1.336,1.229,-1.718,-0.308,-1.524 +79,2,-0.720,-1.228,-0.472,-1.753,-0.911 +79,0,-0.419,-0.208,-0.989,1.293,0.067 +79,3,0.052,2.346,0.659,0.070,-0.334 +80,1,-0.143,0.314,-0.646,1.368,0.235 +80,6,-0.948,2.176,0.446,1.872,-0.700 +80,0,0.306,2.026,-0.030,0.005,0.666 +80,2,0.347,-0.019,1.277,-0.974,0.593 +81,0,0.485,2.376,-0.786,-0.797,0.476 +81,0,2.388,1.743,1.328,1.241,1.797 +81,2,-0.765,2.716,-0.315,0.223,1.256 +82,1,1.734,1.281,1.599,2.638,0.855 +82,1,0.281,2.128,2.063,2.345,-0.135 +82,0,1.012,1.999,0.577,-1.205,0.352 +82,0,2.282,2.483,-0.122,0.812,-1.022 +82,0,4.576,2.810,0.416,1.402,-0.304 +83,0,-1.466,-0.946,-0.817,-1.451,-1.794 +83,2,-0.666,-0.367,0.273,0.115,-0.933 +83,4,-1.288,-1.433,0.074,-2.209,-2.601 +84,3,-2.296,1.037,1.754,-0.952,0.165 +84,2,-2.577,-1.802,0.862,0.355,1.494 +84,0,0.371,1.187,2.288,1.167,0.808 +84,6,-0.700,0.845,0.596,1.881,-1.221 +84,1,-0.122,-0.460,0.356,0.880,-0.438 +85,2,2.119,1.355,0.190,-1.783,-1.432 +85,0,0.858,0.938,-2.647,-0.408,-0.950 +85,1,0.543,2.148,-1.812,0.694,-0.780 +85,0,1.200,1.434,-1.874,0.500,1.473 +86,3,-1.057,1.006,0.567,0.579,-0.096 +86,0,0.761,0.460,-0.315,1.509,-1.302 +86,5,-0.251,0.087,2.529,-1.174,0.358 +87,0,-0.252,-0.925,-1.363,-3.981,1.203 +87,1,-0.582,0.099,-0.398,-2.394,-1.240 +87,4,-0.158,0.117,1.543,-1.683,-0.580 +87,0,-0.375,-1.924,0.416,-3.112,-0.740 +87,2,0.844,0.357,1.652,-3.609,1.473 +88,0,-0.593,3.962,0.536,-1.544,0.623 +88,0,0.773,3.426,1.525,-0.153,3.468 +88,0,0.593,1.069,0.661,0.008,2.123 +88,0,0.908,2.217,0.161,-2.068,1.557 +89,0,-0.602,-0.223,-1.754,-1.102,-1.207 +89,2,-0.787,-0.192,-0.229,0.866,-2.249 +89,0,0.109,-0.323,-0.454,1.320,-0.993 +89,1,-2.041,-2.210,-0.503,-0.843,-3.446 +90,3,-0.353,-1.171,-0.866,1.005,-2.537 +90,1,-0.716,1.455,-1.802,1.374,-1.856 +90,0,-0.976,1.394,-0.957,-0.075,-1.844 +91,0,-1.973,0.291,-1.676,-1.424,-0.792 +91,0,-1.563,0.403,-2.159,-0.764,1.207 +91,0,-1.518,0.731,-1.636,0.353,-0.536 +91,0,-0.101,0.680,-2.370,-0.345,-0.398 +91,0,-1.011,0.409,-2.058,-0.205,0.060 +92,0,-2.415,-1.791,-0.450,-2.636,1.995 +92,0,-2.221,-1.315,-1.120,-0.812,1.386 +92,1,-2.399,-1.551,-0.719,-4.046,3.617 +93,0,1.189,-2.017,-0.395,-0.163,2.380 +93,0,2.021,-1.031,-0.803,-1.713,1.896 +93,0,-0.500,-0.710,-0.627,-1.537,-0.789 +93,0,-1.131,-1.099,-1.683,0.924,1.265 +93,0,2.130,-0.533,-0.556,-0.487,2.657 +94,0,1.500,-0.859,-0.567,1.305,0.439 +94,0,1.064,-1.928,-0.644,-0.538,1.413 +94,0,2.110,-0.218,-1.280,0.017,0.723 +95,2,2.565,-0.540,-0.479,-0.127,-1.485 +95,0,1.740,-0.772,-0.751,1.379,0.509 +95,0,1.319,0.182,-0.057,1.167,0.885 +95,0,1.696,1.284,-1.454,-0.408,0.869 +95,2,1.844,1.291,-0.158,-1.528,0.056 +96,9,-1.655,0.606,1.194,0.852,-2.510 +96,6,-0.768,-0.602,0.695,1.756,-3.062 +96,8,-1.362,-0.026,1.009,-0.130,-1.716 +96,4,-3.110,-2.347,1.142,-1.360,-0.448 +97,3,0.681,-2.470,0.824,1.107,0.139 +97,0,0.709,-0.841,-0.717,2.738,0.550 +97,0,0.108,-1.622,-1.384,0.117,1.169 +97,2,1.373,-0.990,0.173,0.460,1.228 +97,1,1.180,-1.348,-0.681,0.227,-0.573 +98,0,-2.012,0.512,-0.710,-0.376,-0.351 +98,2,-1.044,-1.220,-0.822,-1.828,-0.051 +98,1,0.157,1.521,-1.119,-2.876,0.156 +99,1,-1.166,-1.048,-0.451,1.889,1.145 +99,2,-1.464,-1.031,1.480,2.166,0.059 +99,1,-1.869,-0.900,0.706,0.465,1.603 diff --git a/statsmodels/genmod/tests/results/glm_test_resids.py b/statsmodels/genmod/tests/results/glm_test_resids.py new file mode 100644 index 0000000..58bc8c9 --- /dev/null +++ b/statsmodels/genmod/tests/results/glm_test_resids.py @@ -0,0 +1,36 @@ +''' +This file contains the residuals for testing GLM. + +All residuals were obtained with Stata. + +The residuals are column ordered as + +Pearson, Deviance, Working, Anscombe, and Response Residuals +''' + + +import numpy as np + +# TODO: wrap super-long lines. maybe put these in csv files? +lbw = [-.67369007, -.86512534, -.06703079, -.93506245, -.31217507, -.38301082, -.52323205, -.01427243, -.55879206, -.12793027, -.68788286, -.88025592, -.07003063, -.95205459, -.32119762, -.96932399, -1.1510657, -.12098923, -1.2626094, -.48442686, -1.017216, -1.1919416, -.12709645, -1.3106868, -.50853393, -.56992387, -.75002865, -.04537362, -.80685236, -.24517662, -.38236113, -.52240243, -.01419429, -.5578939, -.12755193, -.70541551, -.89874491, -.07371959, -.97286469, -.33226988, -.53129095, -.70516948, -.03779124, -.75734471, -.22013309, -.59687896, -.78068461, -.05087588, -.84082824, -.26268069, -.72944938, -.92372831, -.07872676, -1.0010676, -.34729955, -.48089188, -.64503581, -.02865125, -.6913447, -.18782188, -1.7509231, -1.6748694, -.13984667, -1.9107428, -.75404181, -1.0993874, -1.2588746, -.13558784, -1.3901949, -.54723527, -.73406378, -.9284774, -.0796795, -1.0064397, -.35016393, -.73406378, -.9284774, -.0796795, -1.0064397, -.35016393, -.91970083, -1.1071944, -.11376204, -1.2113902, -.45824406, -.58253395, -.76443611, -.04792993, -.8228052, -.25336683, -.87010277, -1.0617464, -.10565948, -1.1587271, -.43087357, -.55091811, -.72809506, -.04159148, -.78261562, -.23284101, -.50228984, -.67078749, -.03241138, -.71955949, -.20146616, -.56681231, -.74645574, -.04474827, -.80290024, -.24315597, -.16739043, -.23509228, -.00072263, -.24969795, -.02725586, -.53429779, -.70869969, -.03836573, -.76123202, -.22207692, -.81310524, -1.0074762, -.09536044, -1.0963421, -.39800383, -.24319644, -.339003, -.00294417, -.36060255, -.05584178, -.62985338, -.81746346, -.05776093, -.88175202, -.28403447, -.27289888, -.37902784, -.00447115, -.403468, -.06931188, -.73980785, -.9343678, -.08086098, -1.0131078, -.35371946, -.79896487, -.99366645, -.09266053, -1.0805507, -.3896279, -.79896487, -.99366645, -.09266053, -1.0805507, -.3896279, -.95715693, -1.140454, -.11930111, -1.2501848, -.47812002, -1.2258645, -1.3545388, -.14405247, -1.5056478, -.60043853, -.27739012, -.38504179, -.00474005, -.40991694, -.07144772, -.65459114, -.84453257, -.06298676, -.91198968, -.29995988, -.46709275, -.62825848, -.02633193, -.67300059, -.17910031, -.54303849, -.71892471, -.04005189, -.77249964, -.22773411, -.54176628, -.71743989, -.03980502, -.77086265, -.22691015, -.25756493, -.35841857, -.00362961, -.38138453, -.06221253, -.55956791, -.73810992, -.04330137, -.79367479, -.2384528, -.69600671, -.88885063, -.07174285, -.96172188, -.32633864, -.23256318, -.32457262, -.00249768, -.34516994, -.05131047, -.64757466, -.83690034, -.06150185, -.90345369, -.2954536, -.28195528, -.39114407, -.00502406, -.41646289, -.07364416, -1.1570243, -1.3035317, -.14010172, -1.443813, -.57241299, -1.1570243, -1.3035317, -.14010172, -1.443813, -.57241299, -.30030789, -.41556527, -.00627721, -.44268348, -.08272435, -.55114605, -.72835967, -.04163627, -.78290767, -.23298882, -.3806923, -.52027022, -.01399469, -.5555858, -.12658158, -1.1987876, -1.33477, -.1426768, -1.4816055, -.58967487, -.94149929, -1.12666, -.11704805, -1.2340685, -.46989562, -.53813037, -.71318989, -.03910216, -.76617855, -.22455631, -.55398245, -.73164922, -.04219494, -.78653899, -.2348285, -.6479873, -.83735019, -.06158914, -.90395657, -.29571887, -.62689671, -.81419816, -.0571388, -.87811137, -.28212464, -.67810985, -.86985289, -.06796584, -.94036802, -.31499013, -1.4692211, -1.5166623, -.14786328, -1.7067836, -.68340511, -.40499087, -.55113968, -.01705699, -.58904006, -.14090647, -.67731506, -.86900381, -.06779774, -.93941488, -.31448425, -.62489302, -.81198168, -.0567176, -.87564093, -.28082972, -.62489302, -.81198168, -.0567176, -.87564093, -.28082972, -.57609901, -.75709845, -.04662119, -.81467722, -.24918728, -.60844593, -.79367679, -.0532758, -.85526404, -.27018297, -.29839126, -.41302333, -.00613785, -.43995243, -.08175784, -1.3570687, -1.4452542, -.14780947, -1.6172873, -.64808999, -.78708367, -.98195509, -.0903525, -1.0671844, -.38252574, -.5858308, -.76818375, -.04860366, -.82695911, -.25550797, -.31665807, -.43716753, -.00754852, -.46591063, -.09113411, -.82908669, -1.0229172, -.09834616, -1.1140383, -.40736693, -.69616804, -.88902083, -.07177681, -.96191342, -.32644055, -1.0915205, -1.2526359, -.13488154, -1.3827415, -.54367425, -.64853308, -.837945, -.0617046, -.90462156, -.29606968, -.94223393, -1.1273107, -.11715578, -1.2348278, -.47028421, -.816023, -1.0103085, -.09591088, -1.0995849, -.39972155, -.57856847, -.75991792, -.04712242, -.81779956, -.25079125, -.32734654, -.45120803, -.00846067, -.48102477, -.09678472, -.31077092, -.42940642, -.00707363, -.45756203, -.08807264, -.61538501, -.80142385, -.05472422, -.86388252, -.27467837, -1.1456594, -1.2948703, -.13930185, -1.4333765, -.5675742, -.21863111, -.30558898, -.00198616, -.32488425, -.045619, -.34650082, -.47620326, -.01025864, -.50796716, -.10719293, -.22518959, -.31453605, -.00221689, -.33444271, -.04826292, -.56093617, -.73968913, -.04357365, -.79541979, -.23934092, -.56471813, -.74404709, -.04432868, -.80023684, -.24179618, -.5589041, -.73734327, -.04316945, -.79282776, -.23802197, -.98405074, -1.1637857, -.12295866, -1.2775329, -.49196179, -.67623178, -.86784578, -.06756859, -.9381151, -.31379451, -.34443674, -.47352019, -.01005474, -.50507281, -.10605469, -.20538064, -.28745723, -.00157184, -.30552538, -.04047396, -.36261354, -.49705954, -.01193509, -.53048488, -.11620849, -.33216574, -.45751709, -.00889321, -.48782091, -.09937016, -.52834459, -.70170398, -.03723117, -.75353006, -.21822964, -.65107472, -.84071206, -.06224241, -.90771574, -.29770265, -2.2838855, -1.9116213, -.11327561, -2.2332026, -.83912829, -.57856847, -.75991792, -.04712242, -.81779956, -.25079125, -.30573921, -.4227577, -.00668307, -.45041336, -.08548557, -.26475363, -.36809496, -.0040096, -.39174994, -.06550308, -.50724876, -.67670909, -.03330933, -.72605772, -.2046457, -.50724876, -.67670909, -.03330933, -.72605772, -.2046457, -.29708892, -.41129496, -.00604429, -.43809571, -.08110349, -.39538836, -.53898588, -.01580695, -.57585866, -.13519643, -.95811737, -1.141295, -.11943637, -1.2511687, -.47862055, -.79777479, -.99249783, -.09243093, -1.0792158, -.38891913, -.4007824, -.54582043, -.01650278, -.58326946, -.1383964, -.59547213, -.77909775, -.05058538, -.83906658, -.26176764, -.67961214, -.87145655, -.06828352, -.9421685, -.31594589, -.35903387, -.49243968, -.01154966, -.52549403, -.11418612, -.25982794, -.36146745, -.00374651, -.38464992, -.06324112, -.63086237, -.8185763, -.0579734, -.88299313, -.28468594, -.52587777, -.6987977, -.03676448, -.75033205, -.21663702, -.19948442, -.27936589, -.00140862, -.29689136, -.03827107, -.61183026, -.7974596, -.05398148, -.85947135, -.27237604, -.50385167, -.67265442, -.03269316, -.72160779, -.20246694, -.48499858, -.65000311, -.02935791, -.69678155, -.19042999, -.42040434, -.57052211, -.01917023, -.61008878, -.15019447, -.48053382, -.64460216, -.02858999, -.69087017, -.18759474, -.37464721, -.51253189, -.01328506, -.54721232, -.12308435, -.49531764, -.66243224, -.03116534, -.71039719, -.19700616, -.36160926, -.49576422, -.01182621, -.52908537, -.11564002, -.75971278, -.95459728, -.08491171, -1.0360505, -.36595033, -.29016492, -.40209055, -.00556233, -.42821114, -.07765727, -.40546611, -.55173962, -.01712019, -.58969106, -.14119063, -.39648646, -.54037876, -.01594727, -.57736865, -.13584627, -.35179057, -.48306766, -.01079245, -.51537461, -.11012759, -.33522775, -.46151868, -.00917494, -.49213296, -.10102472, -.33337344, -.45909602, -.00900368, -.48952221, -.10002166, -.28349954, -.39320584, -.00512259, -.41867509, -.07439288, -.62237174, -.80918847, -.05618813, -.87252863, -.27919958, -.37781929, -.51659535, -.01365481, -.55160868, -.12491598, -.26957183, -.37456618, -.00427859, -.39868504, -.06774594, .61566918, .80174036, .05478366, .86423481, .27486236, 2.1552118, 1.8605156, .11994504, 2.1616254, .82285014, .6958925, .88873013, .07171881, .96158626, .32626648, .48936001, .65526554, .03011636, .70254431, .19320564, .94341916, 1.1283597, .11732917, 1.2360523, .47091059, 2.317558, 1.9244575, .11155378, 2.2513666, .84304062, 1.0055755, 1.1821359, .12569111, 1.2991214, .50277997, 1.1758629, 1.3177365, .14133315, 1.4609684, .58029986, .77665994, .97159873, .08829985, 1.0553839, .37624776, .92862761, 1.1152029, .11512854, 1.2207114, .46304378, 1.7104194, 1.6537851, .14148619, 1.8830756, .74525762, .51347062, .68411403, .03444926, .73418924, .20864293, 1.7302647, 1.6641798, .14069739, 1.8966961, .7496129, 1.7159282, 1.656683, .14127016, 1.886869, .74647663, 1.4097427, 1.4794559, .14814617, 1.659967, .66525789, 2.0442483, 1.8136166, .12572138, 2.0969416, .80691071, 1.7479484, 1.6733383, .13997094, 1.9087284, .75341056, 1.7094805, 1.6532902, .14152278, 1.8824281, .74504908, 1.4965596, 1.5332827, .14752494, 1.7278315, .69132856, 1.1936562, 1.330981, .14239054, 1.4770087, .58759741, .82652693, 1.0204559, .09787281, 1.1112146, .40587474, 2.2245013, 1.8884508, .11633994, 2.2006058, .83188774, 1.0349547, 1.206727, .12914052, 1.3281647, .51717209, 1.3170894, 1.4184715, .14713645, 1.5840959, .63433244, 3.1267629, 2.1805419, .07637108, 2.631322, .90720675, .57215628, .7525877, .04582366, .809684, .24662647, .86627248, 1.0581685, .10499903, 1.1545978, .42871115, .94218582, 1.1272681, .11714873, 1.2347781, .47025877, 1.1156811, 1.2716852, .13698079, 1.405528, .55451496, .53496988, .70948787, .03849454, .76210013, .22251157, 1.4497097, 1.5046175, .14802749, 1.6915825, .6775918, 1.2233611, 1.3527267, .14393463, 1.5034398, .59945723, 1.545073, 1.5620618, .14664053, 1.7644793, .70477532, 2.020635, 1.803272, .12694042, 2.0827983, .80326447, .59611095, .7798185, .05071725, .83986668, .26218226, .85655928, 1.0490513, .1033029, 1.144086, .42319688, 1.1157473, 1.2717369, .13698625, 1.40559, .55454427, 1.5187563, 1.5465618, .1471632, 1.7447092, .69757645, 1.2580261, 1.3775399, .14540261, 1.5337471, .61279777, 2.2387897, 1.8940894, .11559989, 2.2085158, .83367096, 1.4987735, 1.5346157, .14749226, 1.7295233, .69195908, .87949714, 1.0704799, .10725881, 1.1688167, .43614806, .81628943, 1.0105668, .09596102, 1.0998807, .39987821, 1.0340841, 1.2060057, .12904294, 1.327311, .51675179, 1.7490122, 1.6738861, .13992657, 1.9094491, .75363655, 1.6803635, 1.6378022, .14262258, 1.8622063, .73846784, 1.8051113, 1.7022925, .13748913, 1.9469661, .7651715, 1.5637979, 1.5729326, .14621078, 1.7783904, .70976331, 1.1993095, 1.3351545, .14270545, 1.4820722, .58988546, 1.3197815, 1.4202979, .1471939, 1.5863531, .63527917, .71898726, .91290406, .07655565, .98883657, .34077931, 1.5103554, 1.5415584, .14730892, 1.7383434, .69523097, 3.0022063, 2.1465826, .08091665, 2.5788383, .90013225, .64440768, .83344364, .06083212, .89959036, .29341668, 1.5019795, 1.5365427, .14744358, 1.7319699, .69286925, 1.3305489, 1.4275696, .1474058, 1.5953487, .63903614, .90521582, 1.094089, .11148405, 1.1961638, .45037299, .6236701, .81062745, .05646071, .87413186, .28003914, .71234937, .90599551, .07517106, .9810397, .3366244] # noqa:E501 + +lbw_resids = np.array(lbw).astype(float).reshape(-1, 5) + +cpunish = [.29883413, .29637762, 62.478695, .29638095, 1.7736344, .280627, .27622019, 6.5853375, .27623151, .80342558, 4.0930531, 2.9777878, 6.1503069, 3.0157174, 4.6881034, .16338859, .16114971, 1.1563983, .16115474, .31370176, .63595872, .59618385, 1.9109264, .59656954, .91769973, .9059739, .8066189, .99577089, .80822353, .9349684, .0532905, .0529548, .14244545, .05295515, .07395759, -.26830664, -.2766384, -1.0082872, -.27668319, -.41714051, -.62341484, -.68349824, -1.5652763, -.68459104, -.84732188, -1.1015655, -1.2743561, -5.3400286, -1.279951, -1.8643241, -1.2006618, -1.4021282, -6.6206839, -1.40923, -2.1211989, -1.2797534, -1.505173, -7.8054171, -1.5136295, -2.3382067, -.960585, -1.0954134, -3.8587164, -1.0992211, -1.5269969, .10846917, .10649195, .0921891, .10649783, .1027458, .02088367, .02081086, .02023963, .0208109, .02066675, .63647875, .56713011, .24880139, .56824372, .4653791, -.69597083, -.77000601, -1.9377178, -.77151335, -.97909358] # noqa:E501 + +cpunish_resids = np.array(cpunish).astype(float).reshape(-1, 5) + +scotvote = [.04317472, .04256856, -8338.93, .04256786, 2.4956853, -.01827077, -.01838325, 2762.4019, -.01838319, -.97334528, .05609817, .05508221, -7252.03, .05508069, 2.8365188, -.02280193, -.02297758, 4525.3102, -.02297747, -1.3300374, -.02505649, -.02526888, 8767.023, -.02526873, -1.7656214, -.1421743, -.14953291, 26174.801, -.14950069, -8.0880132, -.01973673, -.01986809, 5888.0406, -.01986801, -1.318784, .06763015, .06616299, -19473.553, .06616036, 4.4658962, .0202078, .02007327, -3928.3996, .02007319, 1.1706255, -.00841611, -.00843983, 2127.7741, -.00843983, -.53216875, -.04429363, -.04496504, 6971.3512, -.04496419, -2.3914787, .01158536, .01154092, -2667.3324, .01154091, .71006619, .05538677, .05439602, -15077.849, .05439455, 3.5896364, .09018494, .08760809, -23064.91, .087602, 5.7245313, .06595122, .06455471, -14747.68, .06455226, 4.0030388, .00220373, .00220212, -923.58004, .00220212, .16491647, .09775671, .09474141, -17697.14, .09473373, 5.5300885, -.0669005, -.06845346, 24989.253, -.06845044, -4.8180428, .05194846, .05107522, -13846.987, .05107401, 3.3432347, .01298505, .01292927, -1828.3796, .01292925, .67554021, .02257874, .02241101, -5988.3279, .02241091, 1.4506691, .01474752, .01467564, -5311.9833, .01467562, 1.0492967, .03640993, .03597719, -3483.054, .03597677, 1.665201, -.06613827, -.06765534, 10963.702, -.06765242, -3.633186, -.05046726, -.05134215, 15165.308, -.05134088, -3.3803129, -.02546479, -.02568421, 3585.6787, -.02568405, -1.3248006, -.08159133, -.08392239, 14470.556, -.08391679, -4.5841388, -.0330796, -.03345156, 6495.2667, -.03345121, -1.9226747, .00327289, .00326933, -1001.1863, .00326933, .22052594, -.02631155, -.02654593, 5824.1466, -.02654575, -1.5916286, .01183737, .01179098, -4763.0477, .01179097, .87390689, -.03325649, -.03363248, 11219.87, -.03363212, -2.3151557] # noqa:E501 + +scotvote_resids = np.array(scotvote).astype(float).reshape(-1, 5) + +star98 = [-1.3375372, -1.3342565, -3674.3805, -1.3343393, -18.732624, .97808463, .99272841, 197.05157, .99291658, 5.7338226, 4.2825696, 4.29447, 7304.117, 4.2983582, 51.167264, .20665475, .20689409, 283.85261, .20689456, 2.2971775, -3.4397844, -3.7418743, -184.10712, -3.7732602, -12.963164, -8.8955127, -8.7070478, -94493.01, -8.7156529, -195.54523, 1.3093612, 1.3040684, 6904.5348, 1.3041169, 22.790356, -2.3354095, -2.3171211, -6891.6853, -2.3175198, -33.497868, -4.9509734, -4.9716533, -7444.4706, -4.9782445, -56.720276, -4.3896461, -4.3936251, -19119.121, -4.3958412, -71.687315, 2.6246727, 2.6002292, 33800.262, 2.6004266, 61.52101, 1.0381778, 1.0655404, 147.40536, 1.0658131, 5.4160865, -5.371452, -5.4255371, -8735.5422, -5.433774, -63.167122, -7.5162302, -7.6600055, -16610.436, -7.6793193, -97.902488, -4.3246609, -4.217551, -1806.9456, -4.2260371, -32.330796, .71999176, .72316703, 1710.1519, .7231808, 9.6064571, .83376421, .83436314, 761.12734, .83440607, 8.0881266, .41765273, .41667589, 28.903009, .41670531, 1.7147122, -.97120884, -.97003594, -4270.4621, -.97005936, -15.911094, -.78556304, -.78233445, -114.9327, -.78245171, -4.1393793, .4683723, .46647357, 82.954347, .46649502, 2.6303115, -3.16957, -3.1551738, -3676.7765, -3.1571205, -33.303456, -.38920026, -.38921763, -264.25346, -.38922293, -3.4207576, -1.0390527, -1.0501682, -142.6529, -1.0504701, -5.3602524, -.49574502, -.50267378, -24.102686, -.50273464, -1.80937, -2.2481933, -2.4896172, -69.551199, -2.5023778, -7.0576042, -1.3995564, -1.4016203, -7695.0826, -1.4016817, -24.701957, -.76201728, -.76276852, -248.87895, -.76283364, -5.2477435, -5.8106439, -5.7357935, -3949.2359, -5.7521318, -51.088192, -1.820624, -1.8167933, -25414.833, -1.816864, -43.837178, -2.7775306, -2.8101272, -5091.1243, -2.8111605, -33.992033, -3.1071576, -3.1348341, -28006.635, -3.1353206, -64.66399, 11.837296, 12.808605, 52779.155, 12.870791, 194.83, -3.9656907, -3.9744174, -4008.7749, -3.9787813, -39.800004, -4.5046818, -4.5023142, -3336.6423, -4.5100703, -40.757978, -.38346895, -.38304692, -125.48142, -.38305507, -2.6424896, 5.6273411, 5.681476, 71231.288, 5.6838456, 131.14722, -1.5145537, -1.5377442, -638.15567, -1.5381844, -11.35443, 2.2753821, 2.2209277, 373.39831, 2.2231916, 12.457389, -4.8882434, -4.9340401, -177334.75, -4.9347866, -161.82036, -1.4349869, -1.4382502, -490.99346, -1.438675, -10.03669, -.96129188, -.96925001, -1132.2858, -.96930259, -10.152092, -.59602753, -.61535222, -10.219633, -.61556693, -1.5369367, -1.6921098, -1.7682293, -209.62528, -1.7697022, -8.4352944, -2.065882, -2.0983974, -2413.6559, -2.0989602, -21.758492, 1.706241, 1.6722477, 619.3497, 1.6727942, 12.171354, -2.2661248, -2.4109784, -229.55882, -2.4155989, -10.563809, 1.813806, 1.7981115, 2640.4014, 1.7984068, 20.556565, 2.8637417, 2.7708527, 953.89903, 2.7734059, 19.851349, -1.8653504, -1.9698798, -174.47052, -1.9724197, -8.4673524, 3.0149566, 2.8208287, 242.43232, 2.82676, 13.013203, .45187706, .45323648, 89.545212, .45325533, 2.6344764, 2.7424901, 2.5741674, 100.25966, 2.5823554, 9.102041, .80475572, .80568002, 162.81099, .8057857, 4.7242981, -1.7931126, -1.8014064, -550.80513, -1.8023078, -12.098672, .41003106, .4090133, 40.285464, .40903525, 1.8920269, -8.1724325, -8.1912034, -1099.8395, -8.3432365, -41.880384, .33393717, .33561525, 16.178174, .33563459, 1.2173618, -4.2543897, -4.4474257, -2759.1931, -4.4560182, -36.825802, -3.0294284, -3.1254693, -2652.9286, -3.1277555, -28.983377, 2.6466251, 2.5383754, 209.60581, 2.5434964, 11.365696, -.53150465, -.53394445, -574.22139, -.53395369, -5.4537827, -4.5786254, -4.9826244, -850.48142, -5.0141021, -26.124321, .6145684, .61269984, 172.28365, .61273633, 4.0221801, -3.0290547, -3.4019779, -93.787279, -3.4386297, -9.5115812, 3.4030858, 3.4990013, 870.1726, 3.5068227, 21.599833, -1.814412, -1.8483025, -1673.4079, -1.8487382, -17.661376, -4.9709195, -5.139411, -1528.4106, -5.1619673, -33.550925, -2.8711722, -2.8576622, -758.19886, -2.8615509, -18.420463, -1.3502232, -1.3640438, -478.67408, -1.3643946, -9.5561658, -4.3706639, -4.4505896, -1448.8143, -4.4640268, -30.248407, -3.367544, -3.3462251, -2374.7355, -3.3494443, -29.974177, -1.8700967, -1.9265107, -533.05459, -1.9276199, -12.307408, -5.8411431, -5.7888752, -6974.89, -5.8005435, -61.969456, -3.0671616, -3.3185696, -465.64228, -3.3281753, -16.362208, .33866907, .33869449, 36.748824, .33870635, 1.6153433, .00332937, .0033292, .68084286, .0033292, .01961509, -2.1948692, -2.3506102, -201.54464, -2.3551288, -9.9021502, 1.2513472, 1.2525696, 331.50739, 1.2529014, 8.0367961, .2431842, .2423829, 57.23407, .24238525, 1.5014416, 2.3344863, 2.3363314, 519.08023, 2.3387547, 14.142919, 2.9247512, 2.9590047, 454.57521, 2.965438, 15.72514, -2.0556046, -2.0645602, -122.36309, -2.0686323, -8.026198, -3.6416917, -3.8107525, -127.30076, -3.8522025, -11.907277, -2.3465563, -2.3399588, -18062.323, -2.3401837, -46.331731, 3.1328605, 3.2237462, 4682.5244, 3.2254621, 35.819599, 2.6706612, 2.6160849, 4114.3045, 2.6168714, 30.844519, 2.3338673, 2.2998076, 5737.2307, 2.300211, 31.498137, 4.7426743, 4.4878081, 2137.1449, 4.4958392, 36.36025, -2.7264016, -2.7602159, -7855.6752, -2.7609288, -38.796069, -.25073542, -.24982419, -109.74435, -.24982577, -1.9037263, -1.8471557, -1.8428066, -5142.1808, -1.8430239, -25.984725, -2.15461, -2.1580564, -8379.8765, -2.1583395, -33.883764, -3.232046, -3.2299069, -4022.416, -3.2319278, -34.76541, 4.3258916, 4.4036403, 5374.9301, 4.4089414, 46.505897, 2.3506664, 2.3436886, 8472.7811, 2.3440641, 36.041483, -3.0103866, -3.0330376, -2827.8239, -3.0350909, -29.48259, 3.8880208, 3.8515615, 20380.935, 3.8528134, 67.539901, .30206136, .30102793, 111.56376, .30103128, 2.1672275, -.47552074, -.47774865, -535.52925, -.47775487, -4.947366, -1.2969297, -1.2873699, -448.58874, -1.2876585, -9.1038917, 5.4016685, 5.4129828, 75706.187, 5.4148884, 130.23541, -3.5207455, -3.4746651, -5392.0206, -3.4767282, -40.582638, 6.437813, 6.0694683, 9426.0253, 6.0779522, 73.102984, 2.9362577, 3.0932929, 995.57798, 3.0975282, 20.474872, 4.2903354, 4.4294349, 8449.8125, 4.4332812, 53.778645, 5.1739607, 5.1278401, 217916.35, 5.1285599, 180.01638, .04642506, .04642284, 27682.162, .04642284, 3.9075241, -4.2469413, -4.4455028, -6600.8666, -4.4499328, -49.194645, 3.5858353, 3.4955032, 2596.2005, 3.4987392, 32.198796, .74407075, .74065699, 3880.9731, .74066495, 12.903961, -4.087085, -4.1499899, -22604.866, -4.1515694, -72.278605, 4.9820244, 5.2840996, 5480.4086, 5.2940433, 51.429016, -1.4564105, -1.474377, -3103.33, -1.4744978, -18.741249, 2.7224042, 2.6837853, 10471.442, 2.6842648, 42.655062, 11.319421, 10.709754, 60422.779, 10.731002, 197.82585, 3.265598, 3.5595753, 597.22517, 3.5699894, 18.53622, -.9650115, -.96312035, -2380.073, -.96315384, -13.038223, 2.164339, 2.2153405, 1004.0559, 2.2165899, 16.754681, -.56780325, -.56618426, -454.15837, -.56619838, -5.2706926, -4.3053348, -4.2507666, -30890.39, -4.252092, -83.038422, -1.0564439, -1.0620748, -1721.3294, -1.0621333, -12.431369, -2.7316132, -2.7880892, -10933.338, -2.7886254, -43.370763, -1.5756134, -1.5805061, -12197.933, -1.5805756, -31.169406, 3.4853323, 3.4765582, 18127.864, 3.4775218, 60.387216, -3.0310116, -2.9837067, -9935.8247, -2.9844447, -45.025621, 5.4190658, 5.3833057, 3745.6544, 5.3969484, 47.913605, .836042, .83757213, 275.67062, .83765787, 5.7758454, 3.1916149, 3.3119053, 1458.2745, 3.3162779, 24.582162, -.13107013, -.13101089, -163.9307, -.13101103, -1.4121774, -.02167956, -.0216849, -4.2146913, -.0216849, -.12559013, 5.7062833, 5.5425845, 17395.771, 5.5473779, 82.74024, 3.9674132, 4.0510658, 5756.4774, 4.0547538, 44.914913, 1.0082364, 1.0081202, 580.6423, 1.0082229, 8.3883747, -.1607903, -.16067812, -7.4258153, -.16068035, -.57688327, -2.1794238, -2.168514, -892.76271, -2.1697763, -16.18601, 2.4158395, 2.3602945, 63.041821, 2.3699707, 7.1656397, .88352525, .8834159, 284.48156, .8835178, 6.0556954, 1.4023926, 1.4004412, 1876.6768, 1.4005975, 15.454071, -2.6481201, -2.6598485, -739.97358, -2.6629483, -17.312662, -.04596256, -.04598842, -1.0216786, -.04598851, -.12923324, -4.8706759, -4.9160841, -1506.657, -4.9347237, -32.940558, -.14989449, -.15037145, -4.8188818, -.15037368, -.47662029, -.70456375, -.70836868, -629.50443, -.70839399, -6.7859886, -2.9238357, -3.0439268, -353.87052, -3.0525781, -14.462724, -1.3816671, -1.416089, -245.24501, -1.4166886, -7.7648965, -2.6389059, -2.6411431, -299.06009, -2.6466421, -12.770329, 1.6796181, 1.6292513, 50.990814, 1.6319631, 5.2396749, -4.6907555, -4.0071153, -50.243176, -4.0598436, -10.340008, -2.4520787, -2.4202063, -255.88275, -2.424463, -11.544362, -.56336474, -.55902069, -125.96524, -.55905011, -3.4193484, -1.5439833, -1.5530797, -3645.9363, -1.5532245, -20.560393, -.35769835, -.35628075, -66.699031, -.3562898, -2.0435462, -5.8985411, -6.0079377, -4913.6259, -6.0258256, -55.500526, 4.7314097, 4.4310616, 685.04579, 4.4478122, 24.844689, -.83919065, -.84650215, -46.818948, -.84679291, -3.2066211, -.03089159, -.03089176, -160.02828, -.03089177, -.53451397, .88361004, .88295033, 130.47124, .8831211, 4.6703062, 2.3335326, 2.3548024, 2642.7267, 2.3556438, 24.323534, 4.4071647, 4.4439502, 69380.031, 4.444919, 110.45474, 3.2787794, 3.2745315, 66934.736, 3.2748563, 89.610449, 1.6362845, 1.6715687, 384.84329, 1.6724119, 10.10029, 6.3093651, 6.3182562, 32186.911, 6.3242009, 108.61343, 3.611326, 3.6092834, 40001.62, 3.6099395, 80.501442, 5.2158338, 5.266765, 49709.38, 5.2690472, 110.58476, 2.1901909, 2.1664396, 22261.835, 2.166564, 47.443309, -.52967183, -.52891298, -6096.2169, -.5289149, -11.958904, 1.7552088, 1.7533111, 7659.1081, 1.7534507, 28.682165, 9.3002312, 9.6458876, 70515.872, 9.6628501, 182.70824, -1.6751411, -1.6596802, -2489.8995, -1.6599057, -19.117372, .15967588, .15973638, 131.71812, .1597367, 1.4975272, -6.7038594, -6.8116189, -2053.7136, -6.8628644, -45.192173, 3.2862183, 3.307876, 3814.1386, 3.3101871, 34.535289, -3.5011058, -3.4842254, -2091.8209, -3.4883111, -29.487977, -5.918473, -6.0585339, -22523.518, -6.065055, -92.402812, -5.6222517, -5.9653862, -3338.7985, -5.9887053, -47.257447, -3.5602535, -3.6713991, -1269.7128, -3.6786167, -25.247736, -.92430902, -.9254755, -10749.074, -.92548614, -20.941212, -5.2384521, -5.3357226, -29922.325, -5.3390592, -93.641227, 3.9600059, 3.9203361, 15722.094, 3.9219252, 62.704786, -6.5203802, -6.6896631, -28737.546, -6.6976513, -106.90512, -6.2106413, -6.3132951, -73040.278, -6.3167014, -141.2359, -.20342402, -.2036375, -744.52393, -.20363773, -3.134929, 3.0717208, 2.997104, 1083.974, 3.0004496, 21.706716, -2.578223, -2.5895842, -34704.883, -2.589796, -61.330595, 2.1154631, 2.0707695, 913.4727, 2.0717072, 15.989522, -4.4212059, -4.6762251, -5267.8305, -4.6824606, -46.871022, -6.0308154, -6.1288048, -22200.014, -6.1357161, -93.118315, 2.0010941, 2.0050502, 8179.9494, 2.0052698, 31.995965, -4.7215135, -4.7224521, -10299.541, -4.7268107, -61.234115, -.61478931, -.61724539, -936.8533, -.61725705, -7.0747006, -1.7242039, -1.7260096, -31850.535, -1.7260607, -45.578987, 4.2597077, 4.2708827, 15752.019, 4.2731622, 65.871661, .13878808, .13874551, 110.47553, .13874572, 1.2862443, .06198083, .0619749, 17.679469, .06197494, .40800109, -.51497256, -.5153046, -11904.695, -.51530576, -14.669956, -5.0832571, -5.0614461, -115983.47, -5.0625443, -144.17615, 4.8631068, 4.9376385, 4604.7975, 4.9466392, 47.754326, .41687368, .41579762, 354.31543, .41580291, 3.9488109, 1.5740145, 1.5668996, 233.56283, 1.5678388, 8.3331091, -1.0156158, -1.0212038, -1092.6454, -1.0212729, -10.406692, 2.7223636, 2.7077122, 1547.9597, 2.7096859, 22.553674, -1.7144195, -1.7151036, -21079.76, -1.7151695, -39.570052, -1.1877669, -1.1941703, -5141.3335, -1.1942127, -19.357357, -9.1433754, -9.5217086, -84411.705, -9.5357864, -191.8103, -2.4873675, -2.4944945, -5322.7872, -2.4951476, -32.053319, -.52446998, -.52526652, -67.958396, -.52530591, -2.6539626, 2.3976154, 2.3905626, 12988.353, 2.3908659, 42.108622, 2.1940034, 2.1651172, 9681.0591, 2.1653379, 35.98591, -6.109209, -6.0299691, -7699.0563, -6.0425009, -65.988636, 3.8079023, 3.7502112, 44419.258, 3.7508204, 86.360332, -1.8819326, -1.8918879, -6906.1083, -1.8920842, -29.027781, -5.8802911, -5.9010268, -11508.862, -5.910263, -73.554629, .3642416, .36357882, 103.13817, .36358642, 2.3918439, -.1875515, -.18754808, -248.0582, -.18754846, -2.0587245, -3.2885067, -3.3249747, -12471.058, -3.3260255, -51.282232, -3.4245938, -3.5766289, -292.02275, -3.5949103, -15.073413, 1.6999336, 1.6998475, 5830.6976, 1.6999974, 25.636662, 2.7145418, 2.692024, 7781.6473, 2.6926642, 38.561584, 2.3688876, 2.4300853, 676.72969, 2.4324331, 15.601561, 8.4394979, 8.3138999, 61224.725, 8.3239664, 163.37541, 4.634536, 4.6071471, 7022.4616, 4.6122045, 53.231327, .9590249, .97735056, 38.64247, .97790484, 3.2878214, -2.041165, -2.0676384, -416.51119, -2.0694518, -12.016951, 7.3712772, 7.5493285, 83124.524, 7.5553493, 165.29951, 1.0943632, 1.095498, 1564.5913, 1.0955701, 12.328435, 15.712534, 15.419989, 1246536, 15.432621, 675.14817, .75482542, .7538249, 6187.394, .75383208, 15.219496, 1.5411183, 1.5461771, 2717.0765, 1.5463534, 18.617639, .05192873, .05191976, 257.80525, .05191977, .88586806, 6.9659606, 6.7887171, 14554.668, 6.8007292, 89.054275, -1.3180532, -1.3173208, -35718.803, -1.3173384, -39.59019, 3.1417625, 3.1357097, 1099.7541, 3.140007, 22.14186, -2.2540263, -2.2575945, -4491.5963, -2.2581012, -28.364354, -3.6364072, -3.6980171, -1193.2561, -3.7057156, -25.08185, -8.9597209, -9.0798549, -92417.588, -9.0911537, -195.03589, 1.3128072, 1.3119967, 6846.1057, 1.3120487, 22.765744, 5.0951244, 5.2515277, 1418.9377, 5.277164, 33.272924, -6.6168923, -6.7651375, -71965.581, -6.7695384, -146.60349, 1.4743967, 1.4749183, 3777.6522, 1.4750374, 20.175155, .88203319, .88612343, 873.71372, .88617114, 8.7925127, 10.232282, 10.227907, 24708.303, 10.269468, 137.27643, 2.4994204, 2.522306, 4996.1112, 2.52301, 31.484991, -.33601015, -.33565892, -94.016495, -.33566501, -2.1977061, 1.2014409, 1.201799, 1306.5399, 1.2019131, 12.354993, -.1917435, -.19167108, -12.795383, -.19167405, -.7777348, -1.1541729, -1.1510202, -841.79482, -1.1511491, -10.389213, -3.3155305, -3.322033, -7755.1242, -3.3234863, -44.011375, 1.638263, 1.6289084, 699.83365, 1.6294247, 12.338263, -2.3074323, -2.3163968, -5852.6398, -2.3168634, -31.468056, -2.9464432, -2.9898088, -4559.9816, -2.9912043, -34.081582, .64340142, .64392566, 1516.8902, .64393612, 8.5632652, 1.8216221, 1.8737544, 1093.3062, 1.8743269, 15.365716, -4.1484683, -4.1550817, -54011.578, -4.1559855, -97.59348, -2.0098146, -2.0067011, -6797.1668, -2.0069487, -30.168008, -3.0886434, -3.0641784, -6766.3444, -3.0653206, -40.114053, 3.1034238, 3.0604395, 12317.888, 3.0611532, 49.136717, -4.2798863, -4.165237, -2660.4643, -4.1713732, -36.526436, -2.7642694, -2.7673322, -601.62921, -2.7714243, -16.627612, -4.1354083, -4.150768, -3169.2294, -4.1567748, -37.843982, 2.085076, 2.110033, 337.53611, 2.1122867, 11.363741, 4.0312289, 4.1372091, 3906.6743, 4.1424073, 39.892756, -.2784614, -.27871515, -124.55464, -.27871771, -2.1295931, .91847241, .91775794, 6536.0012, .91777237, 17.666402, -6.5936505, -6.4164512, -4117.1251, -6.4394331, -56.3571, -3.7873428, -3.7775824, -15933.885, -3.7790071, -61.140686, -3.1255338, -3.1497479, -17261.446, -3.1504428, -55.246977, -.88895885, -.88950053, -146.0698, -.88966377, -4.8690165, 2.8107448, 2.8179615, 2663.2443, 2.8195846, 27.606919, -3.4316528, -3.4093229, -6258.9413, -3.4111217, -41.927843, .32348352, .32327145, 142.66038, .32327548, 2.4622713, 2.4586408, 2.4836465, 1053.3637, 2.4855562, 18.534868, -2.0863466, -2.1097879, -3798.3528, -2.1102179, -25.475501, 1.347211, 1.3375771, 207.73027, 1.3381379, 7.2242097, 1.2748403, 1.2586908, 390.71981, 1.2589676, 8.5952597, 4.663177, 4.6237577, 10949.742, 4.6275274, 61.980617, -1.0236763, -1.0387965, -129.94316, -1.0390997, -5.1446941, .65592571, .64964267, 88.122068, .64970828, 3.3594228, -2.8938186, -2.9083096, -7662.4106, -2.9092097, -40.034648, -.69787881, -.70020831, -245.99605, -.70025591, -4.929801, .91412968, .90636729, 27.986161, .90687785, 2.8596946, -.23737615, -.2370982, -8.2266245, -.23710685, -.77392452, 9.7240867, 8.4710294, 1709.1431, 8.5511321, 54.470164, 5.1143944, 4.797313, 1780.4902, 4.8086774, 35.978469, -1.3933966, -1.4279007, -342.37443, -1.428383, -8.7273744, -6.1643948, -6.2380461, -53226.802, -6.2421242, -126.46502, -1.1072716, -1.133251, -137.57627, -1.1336345, -5.5252331, 2.9131647, 2.6591858, 117.336, 2.6660231, 9.9858979, -.703409, -.69788492, -30.466814, -.69806848, -2.4702882, -1.3796104, -1.4028155, -502.94299, -1.4031774, -9.8554675, 3.4481209, 3.4947658, 2211.4348, 3.4988676, 29.735805, -5.1424068, -5.0932624, -28852.779, -5.0960527, -91.377689, 1.1658373, 1.1641565, 5674.2865, 1.1641943, 19.757366, 7.2585799, 7.4634011, 40841.836, 7.4728428, 129.10296, -.29489292, -.29380271, -90.475766, -.2938062, -1.9889338, 2.1286688, 2.1307039, 3118.6032, 2.1312262, 24.176426, 6.4743187, 6.7041785, 10245.251, 6.7206537, 75.44612, -.18655471, -.1872321, -8.1187575, -.18723562, -.65619663, -1.7840986, -1.807568, -1161.9624, -1.8081095, -15.464763, -3.9600761, -4.0954915, -885.68765, -4.109497, -24.037865, -2.3068248, -2.3243811, -3915.5288, -2.3249968, -27.517346, -7.0204058, -7.1839731, -15774.818, -7.1997808, -91.952371, 3.1544948, 3.0861172, 655.79074, 3.091473, 18.687088] # noqa:E501 + +star98_resids = np.array(star98).astype(float).reshape(-1, 5) + +invgauss = [.21946682, .19838235, -.13116093, .19804544, .2329114, -.68724239, -1.20786, .29727304, -1.1461406, -.6548399, -.02508381, -.02537231, .00493116, -.02537176, -.01837619, .13333854, .12526482, -.06542915, .12518341, .13250661, -.1828634, -.20290189, .11601121, -.20253671, -.19796778, -.18576541, -.20700925, .14184774, -.20660529, -.21392459, -.01680541, -.01694517, .00684574, -.01694497, -.01569578, .01580889, .01566406, -.0337669, .01566384, .02565121, .40499508, .3419356, -.19304143, .3403085, .39859025, .04500324, .04404018, -.01918807, .04403675, .04267593, -.35003226, -.43573938, .19717053, -.43227509, -.36421909, -.44886321, -.59409509, .14983417, -.58638517, -.3923042, .35983219, .3103634, -.12058593, .30923487, .3149021, .61634589, .48829837, -.21846474, .48391242, .54956633, -.19586429, -.21798637, .08445516, -.21757089, -.18643276, -.67768345, -1.0811333, .12589839, -1.0427999, -.4871933, -.43106322, -.55561146, .10528459, -.54969041, -.3394889, .27120489, .24173716, -.08854081, .24120493, .23528243, -.05090118, -.0522168, .02073681, -.05221113, -.04754183, .38145175, .32775094, -.09872406, .32649672, .30627443, -.06122628, -.06313667, .02402832, -.06312674, -.05647762, -.27729954, -.32438509, .10631392, -.3230591, -.25380849, -.17498754, -.19254711, .083475, -.19225397, -.17226626, -.04475333, -.04570496, .01064837, -.04570159, -.03493987, 2.1079261, 1.2436278, -.36382129, 1.1877369, 1.4786871, -.59050542, -.85032246, .09040464, -.83176757, -.3980059, -.27481622, -.32238792, .13093539, -.32102242, -.27043148, -.32072485, -.38688683, .12794677, -.38462801, -.29746887, -.49304951, -.6674332, .11797934, -.65734004, -.38566096, .06418319, .06232442, -.01895976, .06231545, .05385613, -.15233039, -.16429293, .03637778, -.16413654, -.11907294, .14306921, .13431256, -.04142349, .1342233, .11924944, .50771239, .41922154, -.11900574, .41666974, .39440688, -.33686723, -.4055089, .07946929, -.40319374, -.26225008, -.12603683, -.13365709, .01972519, -.13358036, -.08557535, -.28690375, -.33635948, .09007555, -.3349458, -.24568, -.38061163, -.49506721, .36307402, -.48940939, -.47205916, -.61802926, -.99345317, .28705958, -.95710777, -.60303156, .33500504, .29312132, -.0745651, .29225169, .25579345, .09993473, .09567799, -.02142368, .09564778, .0753562, -.77390406, -1.5092293, .24944552, -1.4025957, -.66853885, -.56372333, -.81484888, .13961703, -.79670113, -.4460328, -.58464894, -.89675035, .25143829, -.86997468, -.55601168, -.79699816, -1.5367111, .18308007, -1.4316205, -.61498129, 1.2612303, .8616029, -.25955307, .84110028, .93817023, .16274853, .15026277, -.14167113, .15010333, .19578609, -.43961546, -.5730583, .12125264, -.56640134, -.36054187, .11414296, .10838846, -.03769438, .10834013, .09940349, .234557, .21059654, -.14686052, .21018955, .25281953, -.58416576, -.89122107, .23552975, -.86525941, -.5437292, .25647739, .23192464, -.03632729, .23153369, .1684433, -.45074863, -.58662315, .09520965, -.57989069, -.33821532, .19326576, .17842124, -.03625637, .17823145, .13939313, .56053862, .45568773, -.12652518, .45244681, .43000418, -.19469865, -.21453127, .03993593, -.2141952, -.14466825, -.19716704, -.21788899, .04601467, -.21752674, -.15294373, -.43999815, -.58606522, .20411479, -.57811493, -.42914302, .01566139, .01554434, -.00569429, .01554419, .01408348, -.2383123, -.26955511, .05428065, -.26887452, -.18336762, -.64722983, -.99421314, .113679, -.96432537, -.45667696, -.19029977, -.21185782, .10882145, -.21145172, -.19900944, .52360533, .42760203, -.17110953, .42469226, .45439907, .53511334, .43209168, -.26125299, .42881606, .53087744, .06765918, .06581012, -.00721243, .0658017, .04041926, -.33830509, -.4080903, .08346023, -.40570789, -.26732662, .25358176, .2261832, -.14274032, .2256911, .26379764, .64897923, .50000076, -.52550319, .49437774, .76211817, -.40741312, -.51148167, .07673901, -.50709672, -.2942425, -.36424337, -.45859178, .20539539, -.45456159, -.37914151, .03219191, .03166734, -.02244757, .03166592, .03596645, .09131316, .08775474, -.01880635, .08773163, .06794128, .09544249, .09147182, -.02468448, .0914443, .07661477, -.26565384, -.30975165, .12756023, -.30853737, -.26209526, -.67698377, -1.2354946, .45589181, -1.1640047, -.74762319, -.5849103, -.89192114, .2316015, -.86599792, -.54114872, -.41648676, -.52673306, .08059767, -.52192252, -.30351836, .60186248, .4774551, -.247836, .47321483, .56415222, -.48771891, -.68555533, .27302358, -.67248587, -.5064343, -.23870823, -.27432787, .13922256, -.27344544, -.25128012, -.46352127, -.61110291, .10542772, -.60338992, -.3564851, -.15315845, -.16768992, .15638745, -.16746051, -.19431423, -.11028172, -.11661361, .03746978, -.11655305, -.09695557, -.09766739, -.10260147, .03416514, -.10255995, -.08670367, -.25865969, -.3031103, .20195439, -.30184354, -.30008683, -.29530742, -.35636228, .25145118, -.35427322, -.3526502, -.43655156, -.59436743, .35324208, -.58503774, -.51253616, -.0260924, -.02641737, .00727071, -.0264167, -.02147229, -.68007447, -1.2304932, .41095371, -1.1612362, -.72440028, -.55540409, -.806563, .16968559, -.78815111, -.47130029, .08496324, .08153547, -.0466319, .08151243, .08764458, .25291318, .2275826, -.06526919, .22716071, .20287431, -.3459101, -.43509049, .30138239, -.43129855, -.41625371, -.17190125, -.1890793, .09316763, -.18879372, -.17658387, -.20852324, -.23414686, .09714721, -.23362349, -.20366813, .59134795, .48223124, -.06984852, .47890327, .36555927, -.25589175, -.30711218, .63498647, -.30541476, -.43648469, -.03186028, -.03232117, .005511, -.03232006, -.02236591, -.25594521, -.28948219, .03054559, -.28875201, -.158766, -.51359911, -.70176826, .10370339, -.69049933, -.37962706, .19992662, .18358969, -.05191884, .18336752, .16070599, -.03252799, -.03304344, .01041198, -.03304208, -.02803448, .87784986, .65610395, -.17025957, .64692494, .6402172, .25557659, .22823559, -.12059263, .22774936, .25068651, -.31197284, -.37536793, .1441638, -.37323551, -.30388314, -.49409432, -.69358795, .24006401, -.68046772, -.48939432, .29230454, .26153551, -.03469097, .26099704, .18098358, -.43107557, -.55170049, .08647818, -.54614283, -.31794191, 1.1243036, .79861683, -.16621181, .78325509, .74900784, .94243785, .66779165, -.7453546, .6547638, 1.098077, -.00547659, -.00548998, .0009586, -.00548998, -.00385978, -.48125962, -.64802831, .12750168, -.63856528, -.38943494, .08075752, .07765921, -.04328822, .0776394, .08265236, -.01733649, -.01747477, .003682, -.01747458, -.01303203, .37106276, .31699846, -.18163582, .31569208, .36844733, .08082038, .0777816, -.03548928, .07776256, .0773968, .04414503, .04321061, -.02021886, .04320732, .04287296, .29116544, .25845228, -.07178838, .25784145, .23003183, .28895977, .2544519, -.1475, .25376729, .29095931, -.17460846, -.18979305, .02755812, -.18957327, -.11888764, -.2784603, -.3217463, .05463276, -.32062952, -.20386214, -.48120414, -.65896058, .18281081, -.64823028, -.43910009, .43919416, .36448122, -.28435028, .3623776, .47870238, .29138147, .25700789, -.12079888, .25633418, .27374041, -.62673306, -1.0166031, .28405348, -.9780172, -.6065479, -.38350618, -.48318203, .13895444, -.47891006, -.34446813, -.15554825, -.16871708, .05613268, -.16853152, -.13952714, -.5004515, -.69034345, .15487883, -.67857984, -.42649638, .01693351, .01677943, -.01832247, .0167792, .02190295, -.2479185, -.28563098, .1182882, -.28467869, -.24407863, 2.2482611, 1.2402532, -1.3060192, 1.1700227, 2.3635113, .20602966, .18306043, -1.0509977, .18263483, .44685205, .58486763, .47239982, -.12643067, .46882798, .44224799, -.22978171, -.26822207, .43025548, -.2671554, -.35683089, -.04893299, -.05008781, .01291673, -.05008327, -.03954838, -.31992822, -.38629891, .13558557, -.38402033, -.30277234, .23281539, .21056172, -.07755681, .21020792, .20334075, -.40389696, -.50231576, .06081306, -.49835653, -.27072146, -.4149099, -.53505755, .14485935, -.52933329, -.36809624, -.19484302, -.21478077, .04112692, -.21444139, -.14616452, -.59354453, -.92007961, .2558687, -.89126164, -.56491693, -.22649251, -.25446097, .05203575, -.25388691, -.17477522, .11308923, .10712155, -.06333083, .1070691, .11744356, 2.1570618, 1.2739476, -.29396154, 1.2169135, 1.3985625, -.36661502, -.45229019, .100595, -.44898252, -.30015274, -.13090653, -.14049298, .06964604, -.14037609, -.13364407, 1.034831, .73728361, -.28908361, .72334743, .85230971, .01234337, .01225937, -.01630469, .01225927, .01706357, -.02041978, -.02062125, .00657333, -.02062092, -.01763217, .25698133, .23093649, -.06508868, .23049756, .20485482, -.18856169, -.21000433, .12057066, -.20959888, -.20467251, -.61349066, -.96438489, .23401299, -.93226802, -.56056842, -.13403576, -.14335573, .03787054, -.14324782, -.11081307, -.28087233, -.32981483, .11523373, -.32840075, -.26295161, -.22715035, -.25568596, .0578659, -.25509017, -.18142335, -.10101297, -.10622081, .03092045, -.10617609, -.08577157, -.54132787, -.75073436, .09183236, -.73751806, -.37755669, 2.2315997, 1.2410837, -1.1229495, 1.1726349, 2.236356, -.25446228, -.29017245, .05324106, -.28934008, -.19033026, 1.3392881, .8691534, -.84530931, .84265167, 1.447431, -.14885417, -.16179664, .098637, -.16160935, -.16350484, -.181369, -.19915316, .05233794, -.19886303, -.15100486, -.31967023, -.39613132, .35022326, -.3931111, -.41520234, -.24715716, -.28116998, .05816391, -.28039245, -.19225457, 1.4170507, .91116127, -.71593757, .88220543, 1.421975, -.07102628, -.07327601, .00833581, -.07326414, -.04381323, .09590878, .09172196, -.03769426, .09169151, .08851306, -.39687496, -.49270953, .06599145, -.48888849, -.27496348, .03874853, .03795295, -.04323879, .03795023, .05063739, -.44362887, -.57774381, .11003445, -.57107979, -.35118241, -.37567437, -.4721807, .15220406, -.46809172, -.3502352, -.80446806, -1.7538868, .34012519, -1.5881386, -.76072695, -.31456215, -.37615399, .10474692, -.37415682, -.27470173, 1.4262995, .92384058, -.54235857, .89542537, 1.3019051, -.07533168, -.07813108, .02041389, -.07811374, -.06141913, -.25107743, -.28541588, .04897872, -.28463574, -.18346403, -.23182627, -.25881558, .02763425, -.25829316, -.14374773, -.55699071, -.79988016, .13780416, -.7826818, -.44055089, -.60340691, -.87652356, .08783114, -.85648447, -.39991377, -.59608332, -.88509811, .13627737, -.86245829, -.45922187, .16977873, .1570718, -.0786399, .15691349, .16550578, -.42714799, -.58248304, .4346435, -.57324717, -.54130243, -.07064828, -.07297453, .01213357, -.07296177, -.04947745, -.45992196, -.62723585, .2410807, -.61728428, -.46721873, .63399242, .50020189, -.21266542, .49554878, .55500684, -.5474725, -.83875274, .41875875, -.81384186, -.63082104, -.73538742, -1.3490981, .24474851, -1.269732, -.6420874, -.16915226, -.18683668, .15054797, -.18652915, -.20499983, -.46165077, -.62756406, .21855899, -.61781118, -.45332389, -.2516681, -.29165745, .14377037, -.29060301, -.26309863, 1.1349967, .77223199, -.69151736, .75346989, 1.2122925, -.07717557, -.08009098, .01934847, -.08007263, -.06131199, -.19818136, -.22060833, .07801391, -.22018631, -.18299641, .94335083, .66547504, -.86786046, .65216005, 1.1559582, 1.2301549, .84702958, -.24236003, .82768642, .90185533, -.52846413, -.74437682, .14929506, -.73001422, -.4368867, .00926399, .00922251, -.00363285, .00922248, .00854328, -.2320652, -.26378555, .09157412, -.26306529, -.21445734, -.61930279, -.98844461, .26019757, -.95333125, -.58440389, -.29300103, -.34646666, .11354046, -.34484973, -.26913673, -.63014989, -1.0083751, .23337426, -.97216438, -.57015144, .20438505, .18552944, -.15192759, .18524006, .2332679, .21299143, .19454797, -.0567153, .19428223, .172644, .32055523, .28060605, -.10244481, .27977921, .2761268, .35875689, .30637082, -.24389494, .30510224, .39744566, -.04853752, -.04991749, .06914812, -.04991095, -.06881057, -.01334856, -.01343572, .0050181, -.01343563, -.01213797, -.14104088, -.15198247, .06106202, -.15184115, -.13443027, 1.2296562, .8493208, -.21855297, .83024186, .87106662, -.0963121, -.10139637, .05513227, -.10135166, -.10075483, -.62115306, -.91519607, .08714316, -.89268037, -.40664945, .14955772, .14007855, -.04106003, .1399785, .12246791, .11541852, .10981708, -.02383052, .1097718, .08594847, -.30922027, -.36994709, .12261091, -.36797216, -.28621892, -.22920988, -.26126886, .11985453, -.26052408, -.23265749, -.4513332, -.58769819, .09554269, -.58092621, -.3389019, .47641919, .39138423, -.26324856, .38887407, .4925589, .89197557, .65519863, -.29946105, .64492007, .78107383, 1.8294421, 1.1029936, -.61660499, 1.0572978, 1.6040754, -.05912358, -.06104126, .04432384, -.06103089, -.06767002, .89695457, .66603428, -.18647887, .65629947, .66947368, -.54183869, -.81568954, .35721411, -.79337711, -.5941547, -.51559503, -.75180669, .3284956, -.7342743, -.55897493, .80389009, .6029852, -.29722955, .5947539, .72695095, -.15169744, -.16470762, .07603953, -.16452191, -.15182454, -.03221923, -.03273869, .01307928, -.0327373, -.03005717, .38336443, .32796541, -.12744674, .32663763, .33460117, -.34412063, -.41857653, .10036856, -.41591208, -.28752991, -.42144896, -.54963099, .17197579, -.54322411, -.39384841, -.39443481, -.5054271, .18219352, -.50028514, -.38415321, .55944951, .45919047, -.07643799, .45621914, .36303934, 1.500497, .95328728, -.65308846, .92136018, 1.4327071, -.08420238, -.08775548, .02464356, -.0877305, -.0704359, 1.187384, .80804761, -.4785498, .78843669, 1.1050447, -.00053604, -.00053618, .00021674, -.00053618, -.00049941, .74469897, .5666345, -.30080407, .5596433, .6935723, -.62972476, -1.0104427, .24209007, -.9737469, -.57690306, -.41289899, -.56940561, .71719622, -.55972, -.62534336, -.23785253, -.26611685, .02630208, -.26555848, -.14383962, -.25942357, -.29728791, .0608765, -.29637023, -.20160416, .77751978, .5882403, -.27139008, .58067893, .68973503, .50988209, .41425932, -.27861761, .41129613, .52520158, .47834714, .39842639, -.11605974, .39621571, .37589451, -.31169033, -.36764786, .06178849, -.36598262, -.22897852, -.50561712, -.71680521, .23888637, -.70245612, -.49615987, .07689107, .07409474, -.03850472, .0740778, .07693051, -.68130941, -1.198946, .32210533, -1.1374172, -.66871166, -.37679723, -.48160687, .24461181, -.47680598, -.41106226, -.05865463, -.06050934, .0379785, -.06049957, -.06393286, -.10330301, -.10876277, .0317849, -.1087147, -.08786695, -.02583652, -.02617324, .01174462, -.02617251, -.02502912, -.34649878, -.43728814, .32933222, -.43336602, -.42922916, -.04844241, -.04961063, .01689242, -.04960594, -.04295936, .47898364, .38890618, -.47525159, .38610723, .60191011, -.22712013, -.2526591, .02497461, -.25218155, -.13709239, 1.2311459, .82439862, -.61134541, .80270725, 1.228321, .55495383, .45373311, -.10086472, .45068091, .39606001, .0672676, .06540267, -.00864428, .06539406, .04276846, -.29326405, -.34657704, .1098119, -.34497071, -.26631708, -.64305896, -1.0798608, .33211549, -1.0329773, -.65004023, .95204054, .69087213, -.28404316, .67917358, .80150901, -.01583657, -.01596697, .01008165, -.01596679, -.01716437, -.17308181, -.19085442, .10896987, -.19055084, -.18690163, .23851663, .21641591, -.04621634, .21607525, .17389522, -.24236265, -.27736187, .09702571, -.27652257, -.22505193, -.32758453, -.39962436, .16585724, -.39700471, -.32895543, -.10080331, -.1064483, .06253581, -.10639565, -.10831853, -.57352885, -.8450014, .16488262, -.82421587, -.47691224, -.39773343, -.49071245, .05253993, -.48712159, -.25521208, .91120002, .66483476, -.32773333, .65395074, .81644327, 1.7449753, 1.0830833, -.39014084, 1.0430876, 1.3343712, -.45729182, -.60007962, .10469619, -.59275748, -.35246493, -.29580673, -.35005361, .10891897, -.34840495, -.26712624, -.31002337, -.37474369, .18190652, -.37250797, -.32700599, .18654161, .16983522, -.23194817, .1695863, .25273038, .91688764, .68605732, -.11477754, .67653306, .57788273, -.01737575, -.01751493, .00375574, -.01751474, -.01313825, -.33514683, -.40624829, .1086914, -.40375278, -.29011163, .05586841, .05451575, -.01074254, .05451029, .04062779, -.30097629, -.37288715, .56313912, -.37004973, -.46727236, -.06435532, -.06635487, .01555102, -.06634452, -.05050324, 1.683168, 1.047478, -.48188034, 1.0092125, 1.397681, -.51668519, -.69861335, .07909412, -.68812903, -.3482374, -.3657535, -.45711543, .15771009, -.45334944, -.34814125, -.48537817, -.62511791, .03986077, -.61849789, -.26581452, .00862779, .0085919, -.00329303, .00859188, .00788512, -.09503767, -.09982766, .04167813, -.09978744, -.09097246, .34723869, .2989993, -.18031461, .29788735, .35164602, -.46695991, -.61665162, .10343267, -.60877636, -.35597184, -.6871968, -1.1533617, .19424251, -1.1033873, -.56821432, -.46411708, -.65869919, .4833767, -.64543078, -.59273004, .70606231, .53756757, -.4486713, .53096464, .76480042, -.1556854, -.16978277, .09499918, -.16957033, -.16637263, -.66226392, -1.106026, .24847245, -1.0589874, -.60180641, -.23801501, -.2678183, .03885581, -.26719805, -.16389469, .04557001, .04440477, -.09133413, .04439981, .07238921, -.13911314, -.15088159, .13631851, -.15071588, -.17408996, 1.4387663, .91624473, -.85058109, .88587159, 1.5213953, -.43092071, -.57464196, .247748, -.56678388, -.45145205, .5834262, .47102589, -.13195491, .46744966, .4478602, -.8064445, -1.732115, .31001814, -1.5742397, -.73879173, -.05975525, -.06163017, .03062133, -.06162037, -.060247, .71311673, .54503254, -.35108538, .53852405, .70944924, -.28330589, -.33648226, .18082704, -.33482854, -.30732757, 2.9488587, 1.4905628, -1.324286, 1.3809095, 2.8451592, .34215535, .29829967, -.08280641, .29736632, .2686459, -.71592919, -1.2115151, .15170411, -1.1573919, -.53776083, .26341899, .23734718, -.04160406, .23691803, .17939897, -.05988568, -.06166873, .01917075, -.06165989, -.0516145, .16575998, .15401103, -.05504816, .15387239, .14462523, -.2465342, -.28298038, .10048665, -.28208579, -.23030193, .12586652, .1184744, -.07679535, .11840209, .13450191, .43413164, .3614944, -.25643955, .35948236, .45893653, -.52625753, -.75904535, .23348343, -.74233574, -.50570149, -.14582805, -.15667334, .0332696, -.15653905, -.11226729, -.22907482, -.26222842, .15482408, -.26143162, -.25328399, 1.7668508, 1.06039, -.92693076, 1.0156843, 1.7953909, -.38041178, -.48183652, .17407242, -.47737956, -.36933683, .34341296, .29508741, -.22770138, .29395921, .37729091, -.61407417, -1.0983528, .84764951, -1.0388203, -.8614485, -.2614967, -.30345824, .1135654, -.30234096, -.24949939, .34180776, .30303645, -.02205434, .3023056, .17272796, -.21350013, -.23815688, .05022845, -.23768342, -.16605757, -.59242453, -.9486729, .38552786, -.91450675, -.64682074, .00673239, .00671055, -.00252798, .00671053, .00611947, -.18127834, -.20054203, .09815037, -.20020155, -.18615353, -.34896946, -.42871336, .12887359, -.42570187, -.31544448, .08732154, .08409452, -.01621272, .08407465, .06276385, .6832916, .53295434, -.19975321, .52750902, .57136282, .9849395, .70606212, -.34240244, .6931893, .87256004, .30984234, .27086184, -.14914363, .27004744, .30594175, -.48199152, -.65029366, .1315505, -.64067268, -.39391311, -.02940279, -.0297881, .00438273, -.02978726, -.01964191, 1.2810312, .87739896, -.20992257, .85679861, .88322127, .40334006, .33972436, -.23154519, .3380619, .42234708, .33373729, .29244946, -.06847789, .29160111, .24800662, .85773527, .62214992, -.66591624, .61158506, .99323507, -.27468661, -.32545858, .20809911, -.32390347, -.31549446, 1.098823, .76927863, -.33563801, .75321846, .93236407, -.12836792, -.13758065, .06917673, -.13747056, -.13161367, -.58997764, -.87334667, .14130656, -.85134695, -.46162339, -.25807961, -.29852855, .10648919, -.29747642, -.24207372, -.07161748, -.07431661, .03448991, -.07429966, -.07072724, -.68686562, -1.1449784, .18213472, -1.0966257, -.55597521, 1.0381346, .73468237, -.35969612, .7202469, .91866611, -.35002969, -.43067728, .13277318, -.42760686, -.31923956, -.09843121, -.10336873, .03025306, -.10332747, -.08369284, -.2136089, -.24242867, .16133335, -.24178269, -.24509302, -.14422786, -.15540111, .05049805, -.15525701, -.12807596, -.23448965, -.26958699, .16418619, -.26871486, -.26234412, -.43457455, -.57663471, .20609226, -.56901747, -.42697923, .08298978, .07996368, -.02144022, .0799453, .06659416, -.39977868, -.50144619, .08679864, -.49718097, -.30273367, -.13581469, -.14577451, .05247304, -.1456529, -.12462922, -.64910803, -1.1625603, .54974883, -1.0992702, -.77376561, -.62123103, -1.0200733, .34793076, -.97942937, -.64517327, -.29854263, -.3501201, .06657682, -.34864249, -.22809823, -.47160741, -.64448325, .20578781, -.6341249, -.45068208, .20952869, .1925899, -.03197042, .192362, .14106582, -.23112507, -.27006012, .43147481, -.26897224, -.35855836, .20444175, .18740119, -.05319557, .18716482, .16444281, -.20074735, -.22195347, .04144814, -.22158087, -.14948981, -.24836117, -.2923441, .3454659, -.2910528, -.34930183, .60977539, .48693719, -.16141134, .4828544, .49328882, .03950956, .03876269, -.01720066, .03876034, .03772766, 1.0726371, .75963628, -.26993955, .74477062, .85323247, -.32400804, -.39286452, .14409017, -.39044371, -.31159607, .00748171, .00745607, -.00178383, .00745605, .00584514, -.22912932, -.26145243, .12801995, -.26069511, -.2377696, -.24334288, -.27329276, .02858448, -.27268006, -.15015249, .98857169, .70159971, -.47998489, .68803709, .97894426, -.256986, -.29198901, .0394474, -.29119699, -.17336275, 1.1512684, .79469328, -.37803586, .77678348, 1.0007034, 1.3369505, .9007234, -.258813, .87772621, .9744261, -.03528889, -.03584243, .00496118, -.03584098, -.02311871, -.51846139, -.75303337, .29505226, -.73582911, -.54131982, -.36417282, -.44940308, .10714898, -.44610779, -.30517178, .43107619, .36539202, -.09131403, .36373302, .32376149, -.66455363, -1.036643, .11220702, -1.0032585, -.46277515, -.43139516, -.56290179, .14466203, -.55631411, -.37761134, -.0166183, -.01675004, .00489267, -.01674987, -.01392888, -.20746924, -.23084471, .05229881, -.23040676, -.16512383, .17001751, .15829983, -.03393058, .15816537, .12518036, -.40028781, -.48875604, .03449272, -.48552314, -.22275837, -.28769553, -.33586097, .07163674, -.33452343, -.22803981, .01172257, .01166066, -.00246261, .01166061, .00877992, -.16326594, -.17786135, .05868567, -.1776442, -.14625737, -.13097163, -.14039217, .05998306, -.14027934, -.12719529, -.05808555, -.0596823, .01229087, -.05967498, -.04360968, -.37410184, -.47392831, .20004904, -.46953796, -.38257394, -.34349912, -.42429369, .17668618, -.4211545, -.34675916, -.01492567, -.01503391, .00523041, -.01503377, -.01325799, .29068996, .25753057, -.08563828, .25690199, .24369839, -.332227, -.40395491, .13108667, -.40139353, -.30701019, -.40595735, -.51559944, .11220129, -.51072004, -.33316769, -.61518924, -.9272341, .13160628, -.90172302, -.46356221, .14075706, .13276657, -.0224764, .13269102, .09621269, -.48528515, -.67101151, .20765385, -.65941019, -.46073866, -.05503443, -.05643122, .00948432, -.05642531, -.03858647, 1.750071, 1.0774354, -.48320668, 1.0363146, 1.4357917, 1.4174127, .91338448, -.6681414, .88463772, 1.3898364, -.38540542, -.48559742, .13375997, -.48130239, -.34124314, -.56868899, -.78925933, .06278987, -.77530311, -.34373446, .34710641, .29833116, -.20567282, .29719408, .36731956, .07638697, .07404525, -.00804917, .07403329, .04545761, -.56149623, -.87177074, .40701726, -.84427383, -.63549505, -.24999416, -.28689392, .08886123, -.2859896, -.22311769, -.23430048, -.26493238, .06090427, -.26426693, -.18839731, .78760525, .61138863, -.07971736, .60490119, .46245203, -.29943973, -.35798383, .1537833, -.35608827, -.30212454, 1.5718706, .99354646, -.52506383, .95953593, 1.3741218, -.10596756, -.11224654, .06689919, -.11218458, -.11453342, -.54909035, -.76884924, .09845905, -.75451782, -.39011359, -.32609736, -.39539043, .1367698, -.39295453, -.30754235, -.15012378, -.1619647, .04234255, -.16180922, -.12404197, -.39565971, -.50809383, .18877217, -.50283487, -.38952668, -.57553404, -.86613075, .21942925, -.84247579, -.52580193, .12683929, .1198912, -.03643842, .11982781, .10544655, .02270402, .022484, -.00311723, .02248365, .01475712, -.24123189, -.27379475, .0612082, -.2730645, -.19241386, .21800662, .19905626, -.04898011, .19878217, .16697946, -.60306868, -.92619133, .19955451, -.89837386, -.52554314, .41430026, .35401909, -.07404215, .35256447, .29402199, -.13443697, -.14357866, .03083635, -.14347514, -.10368362, .14783533, .13784002, -.08570558, .1377275, .15530968, -.29406624, -.35009529, .14884304, -.34832685, -.29526793, -.57288525, -.86310269, .23129864, -.83940462, -.53347342, .50213207, .4154233, -.11637213, .41294565, .38860194, .63428636, .49900067, -.24276877, .49424647, .58022689, .08921615, .085661, -.02803146, .08563739, .07641657, -.58928721, -.91068237, .26052254, -.8825479, -.56560049, .04359302, .04262897, -.03360468, .04262541, .05036025, -.19631908, -.21918695, .10491377, -.21874408, -.2007224, .2626382, .23384393, -.12598651, .23331921, .25903391, -.03942293, -.04011796, .00570469, -.04011591, -.02607673, .02482358, .02453316, -.00854861, .02453259, .02192224, .25193872, .22580348, -.09755285, .2253527, .23135911, -.48866528, -.68518697, .25676136, -.67231132, -.49681444, -.37802814, -.47936239, .18933894, -.4748858, -.3782446, -.34102701, -.4160608, .12063284, -.41333092, -.30387224, 1.7724731, 1.034292, -1.968235, .98591764, 2.3125373, -.36586314, -.44618456, .06774468, -.44326864, -.26273273, .12187065, .11574187, -.02178408, .11569052, .08649463, -.31911072, -.37837669, .0648449, -.37655279, -.23637209, -.27682526, -.3188125, .04792746, -.31775533, -.19439061, -.64054568, -1.0224526, .1989004, -.98611584, -.54649805, .03933659, .03869117, -.00481294, .0386894, .02460431, -.33307454, -.40186308, .09530847, -.39951192, -.27653373, .09703165, .0931105, -.01637223, .0930841, .06755459, .8318686, .61155395, -.50656838, .602011, .88836719, -.21584148, -.24218836, .07010333, -.24165377, -.18693021, -.4291746, -.58532861, .4197218, -.57603933, -.53672668, .69636682, .54924672, -.10184715, .54412435, .4622586, -.001548, -.00154914, .00048186, -.00154914, -.00132179, -.08304844, -.08639793, .01876542, -.08637542, -.06373095, -.35078789, -.43258938, .14120095, -.42943789, -.32632644, .06817824, .06586494, -.05215659, .06585186, .07856159, -.13281122, -.14139016, .02233949, -.14129787, -.09236858, -.63619981, -1.0325971, .25367231, -.99330654, -.58997015, -.42647757, -.55722192, .16400666, -.55063623, -.39074607, -.51893985, -.73844766, .2072769, -.72335158, -.48150963, -.16373659, -.17750708, .03532237, -.17731432, -.12372489, .54251637, .43383208, -.38354983, .43023926, .60891849, -.50161375, -.7221246, .33194245, -.70639005, -.55073654, -.15861102, -.17244583, .06087459, -.17224499, -.14522596, -.16836261, -.18502635, .10210102, -.18475196, -.17954933, 1.4866833, .95698828, -.47154365, .92672422, 1.2774079, 1.2911355, .88861684, -.16713676, .86827564, .82290279, -.09839541, -.10358873, .04638835, -.10354307, -.09648568, -.09096955, -.09470469, .01053519, -.09467913, -.05586694, -.49810824, -.67926422, .12716917, -.66849219, -.39812529, 1.6610055, 1.0605991, -.24860647, 1.0258457, 1.1111214, -.16366309, -.17883711, .07673274, -.178603, -.16019073, .6569265, .51131516, -.30129419, .5060029, .63829009, 1.0982562, .76135435, -.47545138, .74458407, 1.0467617, -.51409591, -.71837177, .16042185, -.7051421, -.43933312, -.1187299, -.12597206, .03420609, -.12589849, -.09879869, .45654377, .38446577, -.08691705, .38258035, .33090242, -.28488554, -.33901862, .18828181, -.33731459, -.31265093, .21830474, .19756622, -.1216919, .19723853, .22636329, .33133138, .28878174, -.10937445, .28787446, .28850743, .08039078, .07735885, -.03813546, .07733979, .07899334, -.02966155, -.03009056, .00975126, -.03008952, -.02579246, -.32653548, -.39441319, .11670383, -.39207824, -.2919613, -.33337953, -.4151742, .29501499, -.41186149, -.40325892, -.49720072, -.70191556, .25332848, -.68819645, -.50033302, -.09483072, -.09969709, .04929172, -.09965549, -.09606548, -.2383112, -.26735905, .03140062, -.2667705, -.15278675, .17384791, .16100567, -.0570078, .16084775, .15104317, -.29885783, -.34988492, .06073773, -.34844004, -.22138046, -.48540272, -.66641093, .17968785, -.65538423, -.43912117, -.19823386, -.21968728, .05525572, -.21930114, -.16315021, -.30018563, -.35623518, .10974338, -.35450114, -.27043488, -.56089125, -.85613782, .32826685, -.83114068, -.59111428, -.42403669, -.58488574, .58203682, -.57492417, -.59373927, -.2883768, -.34128525, .13392627, -.33967655, -.28136633, -.51613294, -.7059601, .10185868, -.69454947, -.37860272, .65757961, .50757101, -.43543632, .50194344, .72213286, 1.1870079, .82628202, -.22119967, .80848295, .8542282, .27860199, .24704089, -.11164627, .24644671, .25879004, -.24053122, -.27385251, .07592384, -.27308575, -.20634013, -.16078607, -.17692895, .16496248, -.17665932, -.20431677, -.32128487, -.38526072, .09923591, -.38315146, -.27362754, -.2883748, -.33796112, .08496367, -.33654718, -.24176455, .64638334, .50812646, -.216429, .50325443, .56551212, -.19898496, -.22156649, .07717696, -.22114037, -.18283221, .15496505, .14454288, -.05577738, .14442617, .13888389, .00633671, .0063181, -.00166539, .00631809, .00511397, -.4739938, -.66681795, .34836642, -.65404427, -.53893601, .36246502, .31161843, -.14269332, .31043506, .33469966, -.22925888, -.26072451, .10405145, -.26000712, -.22197811, .4886355, .39530087, -.49041548, .3923561, .61638879, .2447423, .22157177, -.04705109, .22120688, .17796691, .45818104, .37993539, -.21221618, .37772388, .44664338, -.32099268, -.38539684, .10526541, -.3832575, -.27889153, -.12972388, -.1380267, .02500792, -.1379382, -.09441677, -.31683287, -.37357803, .05330802, -.37189334, -.22037433, 1.4682062, .96749296, -.25056919, .94000071, 1.0260706, -.07950166, -.08302061, .05841841, -.08299466, -.09038799, -.06855711, -.07085819, .01818478, -.07084532, -.05549847, -.21092744, -.23694868, .09130626, -.2364151, -.20103217, -.61472947, -.96513955, .22680609, -.93316874, -.55550025, .4952139, .40151315, -.39233881, .39858411, .57733201, .05935325, .05752996, -.06177101, .05752063, .07578232, .28816721, .25615663, -.06903522, .25556563, .22549138, -.06973866, -.07231299, .03575098, -.07229716, -.07032154, .76735159, .58759668, -.17989453, .58067771, .59613632, .0214232, .02120572, -.00758547, .02120535, .01909533, -.59843416, -.92357982, .22634383, -.89521849, -.54526857, .38819962, .32571873, -.39803505, .32405296, .49319709, -.19707937, -.21731471, .03854351, -.21696909, -.14413006, -.40534384, -.51980512, .14965248, -.51448429, -.36637038, .75387704, .56679094, -.45130491, .55917749, .8005105, -.50903893, -.73255746, .29339799, -.71662576, -.53373995, -.4447331, -.59350981, .19587434, -.58535142, -.42631978, -.56118785, -.82137873, .1770618, -.80184537, -.48134573, .05405625, .05269526, -.02015385, .05268955, .04901849, .5064457, .41581461, -.16660501, .41313237, .44048178, -.41284779, -.55286364, .38436762, -.54508282, -.50790861, -.29817206, -.34948804, .06544106, -.34802351, -.226606, .29133822, .25698419, -.12039233, .25631115, .27340592, .11252154, .10660969, -.06318201, .10655795, .11695845, -.13277124, -.14234073, .05467631, -.14222589, -.12445501, -.55454265, -.79811435, .14813201, -.78074838, -.44996936, 1.3072545, .89034916, -.21571659, .86883081, .90339553, 1.0007486, .71681392, -.31062265, .70368218, .8536982, -.16159869, -.17579135, .0553703, -.17558389, -.14247134, -.07081385, -.07343344, .03221049, -.07341729, -.06861535, -.16043381, -.1744756, .05708551, -.17427105, -.14323503, -.51880592, -.72619974, .15403705, -.71269002, -.4360688, -.38869728, -.48193385, .07466007, -.47824067, -.28256202, .0204857, .02029921, -.00401082, .02029892, .01498723, -.67349836, -1.0435125, .0925214, -1.0108993, -.43783966, 1.1593064, .803795, -.30685635, .78610388, .93782224, .39465662, .33338519, -.22956766, .33180876, .41507492, -.35065788, -.42865261, .10374909, -.42578449, -.29439279, -.11717109, -.12449126, .04628912, -.1244151, -.10832199, -.08785581, -.09195866, .04124202, -.09192674, -.08602743, -.58266706, -.93449817, .44822709, -.90062578, -.67265083, .02376894, .02349106, -.01201546, .02349052, .02385595, -.67355988, -1.0792605, .13905122, -1.0402924, -.50155559, .71359203, .53745127, -.6508134, .53032017, .87189093, -.43603228, -.5650238, .11086531, -.55874855, -.34803344, .20930669, .19143418, -.05646736, .19118023, .17039803, -.35727676, -.44590583, .18199924, -.44227724, -.35950343, 1.6753869, 1.0630095, -.2812032, 1.0272074, 1.1643767, .4908936, .40681268, -.12660653, .4044293, .3936893, -.14652734, -.15811187, .05238908, -.1579594, -.13102959, .31785778, .27544281, -.23317764, .27450336, .36118319, -.27537691, -.32558569, .18544645, -.32406848, -.30411267, -.48698873, -.6811047, .25166251, -.66849482, -.49237438, .29298545, .25481961, -.34254518, .25399422, .38887795, .00874662, .0087142, -.00103607, .00871418, .00541211, .78880147, .57458812, -1.1066426, .56508469, 1.1125621, -.2651808, -.31172182, .19198616, -.31036754, -.30000467, -.07367286, -.07638552, .02255351, -.07636888, -.06255851, -.68976582, -1.1810856, .2285198, -1.1260085, -.60133857, -.44284919, -.59496177, .23586881, -.58640379, -.45227655, 1.1574275, .80210806, -.31606556, .78440858, .94608814, -.45541674, -.59502664, .09697116, -.58799469, -.34263378, -.09223334, -.09669847, .03780678, -.09666246, -.08632273, -.0124833, -.01256213, .00636916, -.01256204, -.01256773, 1.4158797, .92342387, -.46411344, .89589567, 1.229992, .97228034, .70692751, -.2229686, .69509957, .74981174, -.34006705, -.42291708, .24050992, -.41958476, -.3817368, -.26819996, -.30448753, .02667655, -.30367188, -.15656416, -.26398234, -.30512656, .08536277, -.30406224, -.22828782, -.55825751, -.82607513, .21860396, -.80530605, -.51457939, -.16766537, -.18511605, .15606077, -.18481393, -.20625453, -.01272429, -.01280849, .00828946, -.0128084, -.01389764, .3518566, .29863266, -.42628281, .29729802, .47259205, .5556532, .45481888, -.09389467, .45179348, .38704327, -.37533789, -.47597869, .20081775, -.47153154, -.38390665, -.2823153, -.33137866, .10855139, -.32996482, -.25864936, -.44365506, -.59286463, .20595612, -.58464003, -.43281123, -.19042374, -.21159373, .09372189, -.21120235, -.18942519, -.46299754, -.59724988, .06074254, -.59084525, -.29641041, -.34330638, -.42155001, .14437466, -.41860282, -.3240621, -.36794163, -.45993492, .15125125, -.45613947, -.34469021, -.25669541, -.29799002, .13410812, -.29688775, -.26047963, .15008009, .14024978, -.05537051, .14014256, .13561828, -.30648333, -.37209994, .23626267, -.36977611, -.35406223, -.05142546, -.05292612, .0545165, -.05291883, -.066065, -.03417275, -.03472592, .00845988, -.03472443, -.02703449, -.11575649, -.1223337, .02332548, -.12227146, -.08550347, .60106468, .48320686, -.12932211, .4793917, .45378319, -.4304812, -.55710014, .1186265, -.55097481, -.35294473, -.08322226, -.08720463, .07806581, -.08717289, -.10264157, -.23064543, -.26357348, .13260161, -.26279277, -.24163296, .21330742, .19475851, -.05853626, .19449012, .17464479, -.57475093, -.93020323, .55395287, -.89521359, -.71529863, .87328648, .66049213, -.10854342, .65198361, .5490969, -.22979168, -.26014119, .07675841, -.25947518, -.20088223, .28003539, .24793189, -.12181976, .24732031, .26733625, -.55613717, -.87231013, .49950373, -.8435344, -.67604799, -.29221015, -.34113387, .06326927, -.3397752, -.22107407, -.23656182, -.27398163, .22836836, -.27299935, -.29456767, -.19604252, -.21782828, .07403688, -.21742568, -.17853618, -.60083484, -.94430253, .27580695, -.91288147, -.58395826, -.00547621, -.00549046, .00166924, -.00549045, -.0046434, -.0213368, -.02153555, .00277666, -.02153524, -.01362293, .12983826, .12254873, -.03846697, .12248057, .10905388, .31152157, .27198549, -.15725302, .27115229, .31251323, -.24926324, -.28712409, .11206531, -.28616946, -.24058722, -.44366991, -.58611229, .15714355, -.57860731, -.39550214, -.27923967, -.3282771, .12752518, -.32684934, -.27093185, .29608578, .26082062, -.11793087, .26012283, .27447168, .23601646, .21220039, -.1228077, .21180075, .23917368, -.08213268, -.08616873, .10838062, -.08613569, -.11350227, .00044752, .00044743, -.0001309, .00044743, .00037429, 1.4203149, .94835746, -.21382878, .92305453, .95196682, -.09720393, -.10232543, .05039981, -.10228048, -.09838801, .06584662, .06388567, -.0200944, .06387594, .0558544, .41548604, .34920225, -.20852496, .34745044, .41600668, 1.0305757, .73735664, -.25589049, .72375941, .81610862, .00590486, .00588968, -.00088055, .00588967, .00394519, -.46055261, -.63089786, .26150477, -.62060224, -.48049555, .10013784, .09518753, -.0887687, .09514677, .12119799, .93052524, .68548374, -.19069824, .67492748, .69121158, .02028512, .02010138, -.00414368, .02010111, .01505187, 1.8098205, 1.0718835, -1.1072545, 1.0243916, 1.9357509, .8189776, .59083974, -1.1819009, .58047062, 1.1660532, -.46953787, -.63012622, .14410389, -.62112897, -.39903928, -.21602006, -.24713774, .23918854, -.24639336, -.28156986, -.03863364, -.0393815, .01520532, -.03937909, -.0356713, -.04683537, -.04784446, .00830017, -.04784083, -.03314527, 1.3220231, .88728977, -.32077514, .8642057, 1.0388901, -.24859345, -.28562577, .09940402, -.28470988, -.23074791, -.29160799, -.34358073, .10003715, -.34204517, -.25719551, -.25501821, -.29229893, .07063503, -.29139397, -.20944219, -.29785083, -.35675225, .17350525, -.3548235, -.31341041, -.0198085, -.02000469, .0086732, -.02000437, -.01895123, .09321496, .08888984, -.08523493, .08885641, .11399162, -.20218426, -.22416563, .04888082, -.22376818, -.15869176, -.73340024, -1.2432168, .12718219, -1.1873251, -.51528337, -.05938582, -.06107651, .0139319, -.06106849, -.04614614, -.27714991, -.32583833, .13577607, -.32442021, -.27527128, 1.819109, 1.1065563, -.50113102, 1.0622646, 1.4913042, .13080335, .1234575, -.03635812, .12338879, .10755313, -.24344208, -.28111843, .15508732, -.28015061, -.26391609, -.02966079, -.03009801, .01152855, -.03009694, -.0272724, -.06254188, -.06450144, .02100664, -.06449121, -.05477421, -.43209991, -.55131104, .07773608, -.54589413, -.30733144, .40490703, .34078423, -.23531005, .33910179, .42572292, -.41954719, -.53913051, .1203157, -.53352059, -.34858175, -.3628394, -.45381439, .17222083, -.4500505, -.35660015, -.38457428, -.49468597, .24817228, -.4894975, -.4187112, .03240107, .03191414, -.01011152, .03191292, .02768992, -.41006257, -.52671335, .1427386, -.52125149, -.36343262, -.67063163, -1.041895, .09911552, -1.0089364, -.4467315, -.12851451, -.13757402, .05927542, -.13746768, -.12510356, -.3719938, -.45990369, .09630487, -.45647218, -.29871009, -.40347027, -.50311655, .0668771, -.49905461, -.27923949, -.19335674, -.21772217, .21485219, -.21721188, -.25232647, .07437463, .07189301, -.02219004, .07187921, .06261512, -.03557874, -.03622088, .01592149, -.03621895, -.03428716, .20918056, .19145159, -.05255341, .19120155, .16629959, .27805743, .2480225, -.06810202, .2474832, .21918947, .18468983, .16511164, -1.4715482, .16476661, .4647615, -.2575353, -.29550811, .06952078, -.29457847, -.20970368, .01467121, .01457715, -.00238058, .01457705, .01008204, -.41285416, -.51797618, .06762362, -.5135607, -.28460373, .35563681, .3062542, -.14814418, .30511644, .33463858, -.25857056, -.2980628, .08700149, -.29706156, -.22658871, 2.3143122, 1.2965813, -.6925129, 1.2267849, 1.9502962, 1.2885501, .83343651, -1.2770734, .8076381, 1.6186371, -.12692213, -.13723212, .20535844, -.13709271, -.18773233, .26923237, .23674265, -.29097175, .23609135, .34810623, -.1644801, -.17959486, .06874828, -.17936372, -.15494332, -.12573299, -.13397529, .03906078, -.13388531, -.10728931, .32052335, .27885662, -.1631772, .27795737, .32245536, 1.2204833, .84285618, -.23326903, .82390706, .88576173, -.24900477, -.28478904, .07541898, -.28393504, -.21068907, -.40704517, -.51038658, .07434913, -.50605829, -.29098037, .21943066, .20003196, -.05533431, .19974663, .17466519, -.45510119, -.58233022, .05571458, -.57647363, -.28471145, -.81117623, -1.520445, .13085642, -1.4248404, -.55635477, -.77218206, -1.5102336, .25867285, -1.4026493, -.67567847, -.5463344, -.74681291, .06381628, -.73478848, -.33648021, -.01488634, -.01499325, .0049014, -.01499312, -.01295115, -.39951562, -.5232236, .29350692, -.51693138, -.45419111, -.59765957, -.94833892, .32290001, -.9154673, -.61329384, -.31116488, -.36913016, .08102167, -.36734095, -.25034415, -.55419425, -.77405012, .08721173, -.7598334, -.37697248, .06660237, .0644445, -.04062329, .06443285, .07116418, .37840857, .32086525, -.25307749, .31941476, .41693513, -.01836144, -.01852658, .00675922, -.01852633, -.01657983, .8405879, .62836978, -.23908668, .61958976, .69649374, -.09265738, -.09706769, .03161807, -.09703272, -.08157839, -.20843404, -.23371337, .08828977, -.23320372, -.19722376, -.22152769, -.24561922, .02358758, -.24518348, -.13228881, -.00989398, -.0099387, .00206509, -.00993866, -.00739441, .34746868, .29703509, -.29418024, .29582103, .41415058, -.48286069, -.64976738, .12240594, -.6403194, -.38502778, -.06895623, -.07133693, .02209925, -.07132323, -.05945452, .16298072, .14999578, -.20560011, .1498236, .22187512, .24080838, .22023406, -.01850433, .21994155, .12898786, -.51551132, -.72856997, .19351423, -.71423974, -.46853256, .21480614, .19587928, -.06340083, .19560181, .18019364, .08752845, .08406782, -.03029766, .08404503, .07743058, .30806368, .27219212, -.06720695, .27149809, .23365499, .94688487, .68427465, -.34730971, .67238853, .85397881, -.43233564, -.569952, .18376994, -.56276164, -.4095581, -.53267009, -.7582047, .16905304, -.7426797, -.4577797, .04102751, .0401968, -.02405138, .040194, .04326202, -.56663295, -.80273476, .09480533, -.78673008, -.39338893, -.37045646, -.48178134, .44890056, -.47628198, -.49760511, -.10084367, -.10569215, .01747511, -.10565331, -.07083518, .04704931, .04606637, -.0107544, .04606295, .0362444, .32137416, .27952841, -.16267221, .27862382, .32269216, -.31983522, -.38614446, .13531918, -.38386942, -.30251528, .17817824, .16448048, -.07009303, .1643052, .16448945, -.1103941, -.11668311, .03483861, -.11662343, -.0946951, -.00013749, -.0001375, .00007475, -.0001375, -.00014138, -.13713359, -.14713003, .04626945, -.1470087, -.12028293, -.47766001, -.68544176, .46513064, -.67076398, -.5965052, -.40203327, -.50607888, .09272902, -.50163829, -.3106394, -.28636274, -.33857538, .13562985, -.33699759, -.2812372, .18113612, .16722005, -.06103794, .16704209, .15881079, .43928596, .36876772, -.14358666, .36689253, .38125269, -.49480076, -.68495104, .18182103, -.67302608, -.44652414, -.34704893, -.41596757, .05255445, -.41370144, -.23306316, -.21356853, -.24021161, .0899185, -.23965917, -.20167459, -.03935419, -.04006861, .00747542, -.04006645, -.02850247, .92015694, .68409902, -.14473168, .6741813, .62580515, .51444621, .42340162, -.12858296, .42073645, .40828597, -.25471088, -.29339574, .09420566, -.29242042, -.2303566, -.13162226, -.14058773, .03703192, -.14048603, -.10866465, 1.5256867, .97351753, -.50109969, .941521, 1.3262588, -.25711545, -.29990523, .16870733, -.29872397, -.28149678, -.57010669, -.84199052, .17948291, -.82102463, -.48863937, -.2481663, -.27941, .02898028, -.27875625, -.15282911, -.39585463, -.49543135, .08761031, -.49129838, -.30168396, .26396598, .23625542, -.07620485, .23577178, .2198043, .20345859, .18405327, -.22285928, .18374541, .26424347, -.63319563, -1.0172999, .23504772, -.98016198, -.57335106, .09770997, .09358417, -.02358854, .09355515, .07665425, .97657256, .70907665, -.22678578, .69711179, .75628407, .62465015, .49899984, -.13068314, .49482956, .46720529, .90636958, .66285383, -.31254602, .65216034, .80078919, .4695421, .39186196, -.11990305, .38973403, .37532121, .40342544, .34071291, -.19540737, .33909737, .3991773, .13367782, .12613466, -.03201812, .12606377, .10459594, -.40380903, -.51029971, .10080706, -.50567009, -.32034971, -.0388306, -.0395016, .00540108, -.03949967, -.02534854, -.66782547, -1.0553002, .12645645, -1.019358, -.48316891, .31847072, .27670872, -.18917586, .27579959, .3372963, .07277888, .07021524, -.04413034, .07020019, .07761149, .46503517, .38825082, -.1265806, .38615148, .37971368, -.42325907, -.5547309, .18842624, -.54802331, -.40718769, .26700903, .23807593, -.09743584, .23755477, .24039949, -.51371982, -.70883681, .12629997, -.69673812, -.40547302, -.11243706, -.11977953, .09256012, -.11969968, -.13276725, -.28640328, -.33759131, .11782752, -.33607475, -.26837635, .27297517, .24431756, -.05828916, .24381737, .20556761, -.82425343, -1.4558008, .07241172, -1.3801574, -.46165774, .23197297, .21044408, -.05870715, .2101117, .18486949, .98806998, .70637739, -.36917964, .6932897, .89663231, .23381589, .21149227, -.07404639, .21113776, .20079858, -.33833613, -.40485254, .06012981, -.40268701, -.2396655, .68204589, .52634513, -.3281514, .52049998, .67335458, 1.5731096, 1.0056366, -.37080283, .97284989, 1.2243258, -.45257303, -.60588142, .18307374, -.59737163, -.42170731, .01959294, .01939979, -.0118505, .01939947, .02087638, .67430133, .52815406, -.18288737, .52293729, .5499298, -.49980304, -.70102851, .21568603, -.68783051, -.47586445, -.03464258, -.035257, .01690984, -.03525518, -.03436608, .80105849, .59930949, -.3399519, .59098201, .75844712, -.10945449, -.11524755, .02024744, -.11519648, -.07857585, .19586527, .18014534, -.05092761, .17993536, .15750683, -.59356161, -.84972679, .07853711, -.83176759, -.38107651, -.26176648, -.30059589, .06376126, -.29963959, -.20597048, -.52670437, -.7444074, .16303326, -.72976361, -.44889698, -.25229583, -.28607887, .04027129, -.28532731, -.17243096, -.54254012, -.79819515, .2514942, -.77870402, -.5290222, -.54033162, -.76807782, .14728081, -.75246839, -.44139998, -.56976056, -.84612526, .1959766, -.824468, -.50296719, .17571897, .1618744, -.10052461, .16169285, .18378634, -.01966618, -.01984563, .0044382, -.01984536, -.01508547, -.46794437, -.64572302, .2668698, -.63469658, -.48892167, .90744845, .66879756, -.22886194, .65852951, .72235247, -.19712819, -.22030293, .10889611, -.21984998, -.20378863, 1.3898858, .91141256, -.45367215, .88491521, 1.2057116, .27466983, .24204683, -.20858318, .24140311, .31572604, -.66945557, -1.0585014, .12489742, -1.0223593, -.48195777, -.0883628, -.09218563, .02068614, -.09215807, -.06861454, .25378339, .22880327, -.05290206, .22839435, .18958748, -.33129648, -.39813119, .08484429, -.39589913, -.26507092, -.6846758, -1.1753391, .24822923, -1.1200304, -.61510741, .51773831, .42045386, -.25244933, .41743344, .51342255, -.36495, -.44294497, .05775645, -.44018761, -.24871334, -.27098725, -.31689904, .12582319, -.31560895, -.26438053, .2238209, .20271648, -.09220094, .20238547, .20982418, -.3300101, -.39369167, .06458042, -.39165629, -.24139509, .23984243, .21485965, -.1510369, .21442699, .25901308, -.58287734, -.86283572, .15567784, -.84110082, -.47293745, .61384652, .48385407, -.28790581, .47931763, .60089696, -.48279673, -.65891216, .1660104, -.6484094, -.42615211, -.29051501, -.34520187, .15087778, -.34349632, -.29421455, -.35458256, -.45526794, .45161194, -.45056198, -.4842579, -.40514188, -.52326343, .18270347, -.51759809, -.39143863, .28227816, .25174487, -.0612721, .25119586, .21373835, -.0049285, -.0049399, .00134475, -.00493989, -.00402749, -.41690016, -.54134562, .16759997, -.53523816, -.38766449, .16950891, .15707999, -.06473905, .15692828, .15495078, -.01036676, -.01041726, .0027779, -.01041722, -.00842062, -.30324818, -.36382787, .16105665, -.3618242, -.30941048, .15392032, .14362663, -.05565588, .14351201, .13815851, -.29522033, -.37007469, .96310443, -.36694351, -.55165213, .05217972, .05099639, -.010079, .05099192, .03800293, -.55561286, -.79246508, .12499179, -.77605455, -.42574742, .0664843, .06432465, -.04222881, .06431296, .0720044, -.46157157, -.62567311, .20595031, -.61612713, -.4443824, -.01948926, -.01968341, .0103965, -.01968309, -.01991449, .04701158, .04605471, -.0084959, .04605146, .03348752, -.33983184, -.42133979, .21858269, -.41811148, -.36959376, -.42373944, -.55543162, .18732468, -.54870924, -.40670008, -.26879735, -.31220996, .0954347, -.31104661, -.23980712, -.16985211, -.18538364, .0511324, -.1851473, -.14342428, -.76538156, -1.4801955, .25816143, -1.3780855, -.6712626, -.20615384, -.23331385, .17956462, -.2327193, -.24805304, -.66010257, -1.0703162, .18677226, -1.0297548, -.54599468, -.46155485, -.6202997, .17067579, -.61135728, -.41739719, -.34629564, -.4234232, .11569795, -.42058323, -.30274936, 1.9389514, 1.1104311, -1.5930197, 1.0549485, 2.2880297, -.21333669, -.242139, .16379957, -.24149298, -.24612626, -.10510642, -.11071165, .02982542, -.11066186, -.08702119, -.6117049, -.89174243, .08338052, -.87097166, -.39663666, .31011561, .27181763, -.120844, .27103209, .28538695, -.36212946, -.46228943, .32447926, -.45772692, -.43986042, .15267489, .14266294, -.04883894, .14255362, .13155594, -.71536372, -1.2602705, .22012304, -1.1953498, -.60848485, -.69349745, -1.2647863, .37401124, -1.1917575, -.71121591, -.20114185, -.22287933, .048648, -.22248863, -.15789437, .00818593, .00815596, -.00158002, .00815594, .00596041, -.27911439, -.31827421, .02536087, -.31736167, -.15809551, -.06383529, -.06626514, .09420362, -.06624972, -.09156716, .29710195, .26185165, -.11004677, .26115681, .26882693, .06272224, .06087881, -.02618575, .06086978, .05906263, .28103164, .25195927, -.03951707, .25145921, .18412315, .32293377, .28161776, -.12886881, .28074006, .29954926, -.04032292, -.04122905, .03967449, -.04122566, -.0505299, .55452718, .45644487, -.07007543, .45357528, .35060153, -.57105625, -.87833166, .31484532, -.85177237, -.58996784, -.47576149, -.66833331, .32920971, -.65563788, -.53018455, -.31204797, -.37164481, .09411346, -.36975933, -.26365832, -.71218064, -1.169247, .11644927, -1.1226855, -.49066193, -.47393724, -.63823842, .14448975, -.62891155, -.40188602, .85134458, .61467274, -.84160252, .60393653, 1.0685198, .2930939, .25736519, -.16470283, .25664173, .30472976, -.28096243, -.32780374, .08403295, -.32650837, -.23673295, .17636294, .16247957, -.09677612, .16229766, .18191602, -.55304167, -.79089422, .13581671, -.77427408, -.43634798, .29560585, .2614625, -.0856697, .2608072, .24646831, .71711943, .55042914, -.27892472, .544061, .65952814, .45420572, .37979882, -.13932181, .37778024, .3859385, -.21270616, -.23893976, .08520051, -.23840197, -.19755018, -.32082581, -.38921207, .15911656, -.38680062, -.31995924, .14448218, .13517863, -.06333295, .13507888, .13828107, -.54260781, -.83635851, .48731543, -.81082247, -.65958496, -.38975271, -.48967674, .11197595, -.4854512, -.32402437, .37023932, .3182899, -.12073292, .31708058, .32107532, -.18500597, -.20527146, .1053769, -.20490228, -.19321861, -.55421986, -.81212618, .19929405, -.79269647, -.49654983, -.67388566, -1.107452, .18308313, -1.0631829, -.54989982, -.55371898, -.78864307, .12530861, -.77244018, -.42513798, -.79523549, -1.5748272, .22103194, -1.4586535, -.65387116, -.03865596, -.03944844, .02498407, -.03944573, -.04210904, .47907012, .39687889, -.15691782, .39454529, .4160704, .27169184, .24131765, -.11841986, .24075329, .25953898, .95433089, .67386839, -.76430692, .66045863, 1.1166025, -.16884494, -.18472779, .06701134, -.18447918, -.15633329, -.58048226, -.90027987, .30768568, -.87201929, -.59188645, .09702386, .09255906, -.05712252, .09252484, .1024546, -.09443758, -.09917476, .04213729, -.09913517, -.09092056, .1002742, .0954982, -.06121954, .0954603, .10717648, .46457249, .38602337, -.16876349, .383825, .41764295, -.52327451, -.73053254, .1368673, -.71715104, -.42162817, -.17938365, -.19985912, .18494243, -.1994705, -.22832007, .0704082, .06802469, -.03945309, .06801125, .07313397, .46637499, .39102241, -.09593579, .38900583, .34686492, 2.2831696, 1.2679097, -.97165757, 1.1976462, 2.1637472, .16763493, .15594166, -.04285017, .15580586, .13404085, .38504135, .33230165, -.06731415, .33110289, .27125872, -.03192792, -.03249649, .03365936, -.03249481, -.04094105, .40354763, .34531342, -.08321158, .34391962, .30037777, -.25298261, -.29074769, .08774405, -.28981173, -.22394584, -.29640711, -.35472974, .17429654, -.35282939, -.31287102, -.25858823, -.29943226, .11084943, -.29836165, -.24565579, 1.6440042, 1.0388676, -.36960944, 1.0032659, 1.2594849, .01411087, .01401799, -.00412915, .01401789, .01180319, -.29628554, -.35629179, .21293068, -.35428001, -.33437185, -.44348277, -.58416217, .14689832, -.57683638, -.38660438, -.49725279, -.69591546, .21562404, -.68298171, -.4741989, .40373151, .34334675, -.12464552, .34184937, .34379322, -.32419631, -.39015905, .10692326, -.38793747, -.28221024, -.2352134, -.26889074, .11577911, -.26808997, -.23398864, .22479707, .2035298, -.09219838, .20319513, .21043188, -.37924183, -.46888179, .0826318, -.46538209, -.28752121, .04450384, .04354595, -.0221385, .04354251, .0444281, -.26490466, -.30975349, .15010926, -.30849416, -.27618848, -.24704163, -.28358762, .09933805, -.28268997, -.22973578, .0313423, .03087196, -.01301685, .03087078, .02946225, .16039389, .14846934, -.11584567, .14832176, .1813128, .39469993, .34213706, -.04033536, .34097517, .23249663, .00097178, .00097136, -.00017334, .00097136, .00068922, -.73712058, -1.3740473, .27048396, -1.2890906, -.66488959, .04697925, .04595206, -.01661782, .04594831, .0418606, 1.0069131, .70432784, -.69585313, .68955374, 1.1216151, -.19507028, -.2158063, .05472894, -.21543967, -.1608952, -.5307784, -.74514525, .1355714, -.73104293, -.42430177, -.38706565, -.4910044, .15845866, -.48640487, -.36210824, .50030571, .40543876, -.37112231, .40246703, .57060993, .45510098, .37989814, -.15183835, .37784045, .39768787, .18191051, .1664679, -.16334546, .16624975, .22111467, .43450774, .36581801, -.13111312, .36401887, .36718962, -.43012689, -.58741161, .42400243, -.57800973, -.5393415, .41487081, .35305325, -.09603176, .35152603, .32093978, -.48219771, -.63422421, .07253155, -.62635458, -.32309909, -.2116386, -.23718223, .07532369, -.23666973, -.18896605, -.20662098, -.23126894, .08351743, -.23078014, -.19247987, .10914574, .10398608, -.02889256, .10394545, .08829644, -.79287517, -1.4584816, .13679515, -1.3719497, -.55612204, -.38544108, -.5007257, .31775297, -.4950568, -.45534986, .85446108, .62898569, -.38836301, .61925316, .82772132, -.23429899, -.26513387, .0639893, -.26445959, -.19152526, -.61137671, -.92184413, .13907551, -.89643443, -.47021825, -.44567629, -.61384907, .37975934, -.60348654, -.53234418, -.33107748, -.40075158, .11352917, -.39832555, -.29196598, -.05769032, -.05933543, .01781526, -.05932762, -.04912954, .48038593, .3914733, -.38220613, .38875341, .56083624, 1.5607517, .97473808, -.79440657, .93964577, 1.57005, -.46211161, -.61760459, .14906972, -.60902956, -.39930467, -.16693896, -.18823996, .7643983, -.18778827, -.34926498, -.02861234, -.02902708, .01326052, -.02902608, -.02789754, -.44776451, -.56447321, .04096984, -.55945726, -.25421307, .71796375, .54719255, -.37553979, .54052169, .72883686, -.3381459, -.41177679, .12047936, -.40912526, -.30203015, .28135613, .24837388, -.14928807, .24773149, .28698285, -.07450749, -.0774421, .03656232, -.07742284, -.07404366, .22981909, .20861652, -.05946391, .20829112, .18450943, .21651875, .19623524, -.11233909, .19591916, .2192051, .35450331, .30766748, -.08719146, .30664031, .27984325, -.28768706, -.33654921, .07936459, -.33517283, -.23595679, -.21308212, -.24374959, .26516187, -.24301661, -.28876532, -.22045538, -.25038035, .13113803, -.24970553, -.23359669, -.35033088, -.42664505, .09100318, -.42389582, -.28163144, .40066749, .33973627, -.16029453, .3382003, .37196804, -.53478631, -.750588, .12707463, -.73640291, -.41733339, 1.5182092, .98331944, -.32964134, .95306749, 1.1496835, .12071306, .11451876, -.0286122, .11446581, .09412318, -.5278798, -.72723082, .0984675, -.71493766, -.38001231, -.15113552, -.1647059, .11267369, -.16450312, -.17266138, .43814029, .3651026, -.22810829, .36308682, .44408471, .22195374, .20053065, -.12584989, .20018673, .23145643, -.08587505, -.09002097, .06542431, -.08998762, -.09881762, -.4150392, -.52973121, .1083907, -.52451128, -.3342464, -.18745209, -.21157255, .32214316, -.21105678, -.28289145, .3139836, .27330586, -.18531653, .27243091, .33183284, -.55439278, -.78393005, .10918544, -.76846502, -.40639025, -.17200928, -.1904243, .15818232, -.1900964, -.21074821, .1193529, .11320535, -.03249434, .11315261, .09746183, .8489274, .63186865, -.26325452, .62277833, .72396179, -.7463687, -1.4410382, .31228717, -1.3421037, -.70333731, .16040263, .1498098, -.03528531, .14969332, .12199695, -.13309942, -.14242628, .04265966, -.14231745, -.11476247, -.33564918, -.41114434, .15851291, -.40833741, -.3293229, -.57516097, -.82379133, .10189629, -.80633307, -.40699498, 1.9283559, 1.0953586, -2.0707035, 1.0390683, 2.487945, -.50510217, -.72836955, .32299386, -.71235445, -.5482697, -.07564846, -.07868182, .03768843, -.07866156, -.07555782, -.45992691, -.63164958, .27849917, -.62117591, -.490242, -.08926896, -.09371519, .06229344, -.0936783, -.0997603, .40149657, .33357001, -.54631879, .33166777, .5605486, .31817766, .28187554, -.0416558, .28118725, .20355493, .0714031, .0690895, -.02329649, .06907701, .06193244, .01487609, .0147739, -.00399054, .01477378, .01208778, -.64250012, -.99031771, .12607992, -.96008254, -.47040737, -.44938868, -.61231852, .28473992, -.60265935, -.48630366, -.02857917, -.02899295, .01324853, -.02899195, -.02786756, -.32723235, -.38792416, .05253607, -.38605889, -.22407841, -.23049008, -.26139683, .08387148, -.2607083, -.20732401, .02034739, .02014464, -.00965928, .02014431, .0199985, .16228071, .15160581, -.03091546, .15148889, .11764672, -.44013133, -.57620864, .1340597, -.56929752, -.37310489, -.67392705, -1.1627933, .29520191, -1.1070738, -.64484942, .12211996, .11635374, -.01163097, .11630838, .07026512, .73267565, .57461918, -.08861483, .56900298, .45651317, .20424855, .18696722, -.06249721, .18672391, .17340816, -.47129773, -.62648378, .11234339, -.61810387, -.36817651, -.29860653, -.35164583, .08079693, -.35008403, -.24333682, -.21556065, -.24278656, .09161459, -.24221506, -.20419473, -.51458917, -.73255356, .22330137, -.71754403, -.4908486, -.10226342, -.10752412, .02751104, -.10747904, -.08317495, -.40297264, -.51423312, .13650671, -.5091737, -.35392538, .14037235, .12878312, -.97673804, .12862389, .33764248, .25369103, .22958608, -.03666321, .22920511, .16773495, -.18176296, -.1998888, .05867076, -.19958808, -.15709203, 2.6324636, 1.4174223, -.68768306, 1.330773, 2.1202205, .58834522, .47112941, -.18710233, .46727544, .50596975, .03624121, .03565592, -.00801153, .03565435, .02760898, -.41267811, -.56402326, .60021257, -.55495088, -.58909587, .19496184, .17785134, -.13216935, .17760148, .21578438, -.41292923, -.5134589, .05065796, -.50941832, -.25850939, -.14911381, -.16095503, .04718856, -.16079849, -.12802678, -.65109408, -1.0373099, .17069642, -1.0007378, -.52502579, -.3148101, -.37004318, .04855218, -.3684365, -.21270548, -.47336597, -.7393653, 1.7208247, -.71541858, -.91703708, -.67644548, -1.0496617, .09109062, -1.0166348, -.43684069, -.08417269, -.08763556, .01993774, -.08761182, -.06561696, .53337724, .44236198, -.06233408, .43979156, .32855507, -.22685081, -.2545495, .04718868, -.25398732, -.16934907, -.44340949, -.56335271, .05592508, -.55800675, -.28016606, -.05488186, -.05637341, .0175327, -.05636666, -.04726926, 2.4118393, 1.3067879, -1.1813467, 1.2284419, 2.3953447, -.27912404, -.32391867, .06743894, -.32272583, -.21903411, -.16399678, -.1790167, .06855064, -.17878778, -.15449131, .3684578, .31069431, -.44509544, .30919378, .49440883, -.20177726, -.22252927, .0323358, -.22217424, -.13808697, -.24144046, -.27291117, .04683885, -.27222954, -.17609706, .08488658, .08138022, -.05886781, .08135609, .09466628, -.41163198, -.53121895, .1574401, -.52550326, -.37646203, -.27044505, -.31588476, .12050904, -.31461843, -.26025708, .54361565, .44949553, -.06363569, .44679912, .33504634, -.07609006, -.07890912, .01836399, -.07889172, -.05968762, -.42941341, -.55344993, .10837757, -.54755483, -.34190612, -.29898625, -.36363006, .30759952, -.36131838, -.38028223, -.5437877, -.77611569, .15019369, -.75998426, -.44618347, .29246074, .25673817, -.17125863, .25601341, .30827564, -.44169266, -.6107842, .44160929, -.60021904, -.55646287, -.31832995, -.38001544, .08867623, -.37803567, -.26193733, -.42639324, -.55165045, .12705299, -.54559852, -.35882153, -.22168002, -.24825043, .04932021, -.24772101, -.16923986, -.6888711, -1.191829, .25390767, -1.1341642, -.62229157, -.25067882, -.29078606, .15589837, -.28972126, -.26958907, 3.265403, 1.5807553, -1.6408632, 1.4501572, 3.2708351, .56486373, .45419056, -.21051909, .45061071, .51215681, -.37352746, -.47202432, .18797241, -.46774257, -.37433152, -.27755529, -.32002637, .05003166, -.31894761, -.19754133, -.49857145, -.67428638, .10578841, -.66415091, -.37466314, .28115665, .24908246, -.11190598, .24847442, .26057136, .1589048, .14792772, -.05963129, .14780147, .14440849, -.47405353, -.64409933, .17490553, -.63412198, -.42838024, -.13721991, -.14771917, .06807197, -.14758543, -.13686031, .6298221, .49558253, -.25459055, .4908683, .58672693, .71120398, .53979997, -.48343931, .53301877, .78786796, .34151436, .29531036, -.15310071, .29427292, .32931262, -.05270446, -.05400628, .01059308, -.05400092, -.03889696, -.40095972, -.51656558, .18547566, -.51108099, -.39069645, -.4825293, -.64925046, .12278168, -.63981687, -.38524497, -.40415788, -.51307116, .11465483, -.50823475, -.3345863, -.51995196, -.73782877, .19427069, -.72297937, -.47183255, -.2727901, -.31298492, .04365442, -.31200154, -.18659721, -.61114354, -.93441405, .16903524, -.90691829, -.50168514, -.05718684, -.05888843, .02756893, -.05887999, -.05649552, .19846387, .18235099, -.05154158, .18213327, .15953289, .27316878, .24263868, -.11302719, .24207159, .25646318, .79524934, .61537976, -.08505513, .60868768, .47560424, -.64619972, -1.1533024, .5537232, -1.0912406, -.77330725, -.06110944, -.06323229, .06123938, -.06322, -.0770476, -.25456872, -.29095935, .06078663, -.29009543, -.19898304, .80642094, .60885258, -.22094136, .60091152, .65989809, -.07770532, -.08078349, .02742688, -.08076317, -.06918882, -.39200663, -.50803439, .26059399, -.50238694, -.43104943, -.41608515, -.54343058, .19780547, -.53702654, -.4091453, .01959221, .01939402, -.01500015, .01939369, .02258209, -.4843194, -.70996538, .58947512, -.69294681, -.65150797, .27704727, .24549705, -.12354784, .24489998, .26668032, -.18512321, -.20297368, .03896519, -.2026873, -.1387425, -.58340675, -.95305195, .54431923, -.91584025, -.71824982, -.05064422, -.0519641, .02320251, -.05195837, -.04918978, -.10498592, -.11048641, .02597161, -.1104384, -.08303547, .03076093, .03037519, -.0029039, .03037439, .01764697, -.27453419, -.320173, .09908578, -.31891446, -.24626994, -.6515159, -1.0879259, .28282864, -1.0416812, -.62153817, 1.1185769, .77445081, -.42916624, .75727466, 1.0240687, -.29643247, -.34584272, .05465022, -.34447659, -.2125647, -.43005446, -.56105373, .14764261, -.55449628, -.37939902, 1.3035537, .86413849, -.53615763, .84026778, 1.2214062, -.00727818, -.00730541, .00444327, -.0073054, -.00777904, .50568017, .42080919, -.07849208, .41845109, .34240169, .13657359, .12810776, -.06811048, .12802037, .13645594, .27213105, .24419565, -.04711691, .24371883, .1910972, -.14401073, -.15511006, .04904375, -.15496764, -.12670714, -.37686308, -.47572429, .16942939, -.47144855, -.36374355, .49380072, .4177612, -.03477605, .41582054, .25692392, -.28516746, -.33369409, .08630964, -.33232458, -.24122913, .97391875, .69658602, -.40726979, .6837152, .91759819, -.21114652, -.23343958, .02756059, -.23304809, -.13494666, -.29165038, -.34397952, .10471634, -.34242316, -.26116993, -.58799905, -.82637479, .06098265, -.81063597, -.34806726, -.35016862, -.43149749, .13948816, -.4283766, -.32461899, -.24855748, -.28638194, .11620649, -.28542645, -.24305507, -.200873, -.22581347, .1416515, -.22529878, -.22526727, -.34760689, -.43057069, .17667238, -.42730057, -.34950909, .27784106, .24623086, -.11950815, .24563322, .26424501, -.46968014, -.63421204, .16478695, -.62477722, -.41736792, -.42899731, -.5617414, .16536614, -.55499416, -.39336457, 1.4741272, .92062396, -1.2549725, .88747771, 1.7602649, -.71867437, -1.3147704, .28797293, -1.238103, -.66754723, -.23630516, -.26771612, .06438934, -.26702239, -.19301755, -.69865357, -1.095912, .08057587, -1.0597512, -.42846917, -.20400243, -.22783466, .07890274, -.22737177, -.18726829, -.43507294, -.57736139, .2047588, -.5697285, -.42638205, .15163145, .14294262, -.01358769, .1428597, .08549054, -.18178759, -.20127684, .10274721, -.20092933, -.18936927, -.03970462, -.04048841, .01449916, -.04048583, -.03575622, .82309233, .62042315, -.20085387, .61223751, .64804093, -.08206623, -.08566274, .04166731, -.08563648, -.08248687, .23351298, .2094973, -.16347416, .20908661, .26123642, .15860602, .14748292, -.07042477, .14735304, .15245146, 1.6272688, 1.0189635, -.52624399, .98267852, 1.4072738, -.22717082, -.25504722, .04845067, -.25447862, -.17100611, .28653685, .25667722, -.036564, .25615987, .18175299, -.06460075, -.06706285, .08656299, -.06704721, -.08973168, -.62309338, -.94821141, .13582043, -.92091239, -.47246227, .80073602, .61230895, -.13591818, .60502432, .55859291, .54252045, .43717936, -.26000679, .43380193, .53491195, .10315753, .09825575, -.04769827, .09821694, .10050281, .24287792, .21804105, -.11237509, .21761873, .23667845, -.60679496, -1.017633, .52159417, -.97366697, -.72691264, -.51011918, -.72644897, .24094299, -.71153491, -.50052894, -.43564899, -.5752175, .17956829, -.56787922, -.40848649, .92055114, .68129428, -.17295236, .67111579, .66427938, -.25796805, -.29608321, .06963428, -.29514817, -.21005272, -.25954779, -.30800237, .3510023, -.30650352, -.3616248, -.59309259, -.91584086, .24492653, -.88764721, -.55646383, -.32028489, -.39380116, .26357164, -.39101263, -.37815269, -.40280123, -.51869574, .17653327, -.51320867, -.38548964, .84240279, .63857918, -.1315783, .63048471, .57159, -.28482944, -.33538536, .11730721, -.33389774, -.26699809, -.26469685, -.29909258, .02193167, -.29834988, -.14538951, -.16829622, -.18504933, .10711601, -.18477188, -.18239421, -.68122663, -1.181775, .28440964, -1.124054, -.64148403, -.04533664, -.04639939, .02243329, -.04639524, -.04517941, .29240118, .25983222, -.06324136, .25922929, .22113788, .46460339, .386555, -.15627043, .3843845, .40709007, -.03342123, -.03395251, .00861708, -.0339511, -.02680063, -.58233764, -.97883278, .74133018, -.93618291, -.79517698, -.3064705, -.37392751, .28431409, -.37147234, -.37658982, -.04459337, -.04551063, .0082021, -.04550749, -.03195203, -.36942726, -.4525769, .07394099, -.44948329, -.27226451, .48085019, .38595972, -.834553, .38286876, .72806111, -.54557937, -.75687435, .0868044, -.74352401, -.37247392, .48304522, .39320996, -.38772464, .39044886, .56560034, -.24937674, -.28868329, .14594659, -.28765513, -.26281205, -.18936532, -.21054859, .10276849, -.21015454, -.19460932, -.39239613, -.49923999, .15489548, -.49444712, -.36266534, .64937485, .51498667, -.13699943, .51040089, .48705713, -.4322005, -.56615195, .15731694, -.55933261, -.38879918, -.20355937, -.22802606, .09965492, -.2275372, -.20213289, -.21615618, -.24310274, .08121952, -.24254441, -.19652082, .07510881, .07273854, -.01211125, .07272608, .05150708, -.71129699, -1.2136775, .17291108, -1.1577944, -.55930871, .6737645, .53227367, -.12282293, .52737612, .48132885, -.29373897, -.34934204, .14356277, -.34759832, -.29151774, -.42744692, -.5608199, .1788832, -.55398534, -.40282955, -.39712056, -.52312548, .35588397, -.51656221, -.48238566, -.23751271, -.27111622, .09811775, -.27032661, -.22286939, -.03277917, -.03329781, .00965973, -.03329644, -.02748297, .26410406, .23514991, -.12046309, .23462228, .25614038, -.03434575, -.03491003, .00925617, -.03490848, -.02795133, .13494873, .12713604, -.0381914, .12706071, .11162918, .13203413, .124881, -.02372015, .12481645, .09386563, -.04551417, -.04654707, .0164027, -.04654316, -.04080809, -.05219991, -.05359129, .02212956, -.05358511, -.04940612, -.30252488, -.36302665, .16540026, -.36102338, -.3116708, -.51426378, -.75157197, .34771465, -.73383667, -.56868916, -.29887443, -.35190646, .0796393, -.35034647, -.24231389, -.09053879, -.09499873, .05072437, -.09496213, -.09403843, -.0300005, -.03044045, .01005493, -.03043937, -.02625561, 1.6115429, 1.0243185, -.36370126, .99008196, 1.2361927, -.156591, -.16938555, .0400831, -.16921153, -.12526843, 1.811829, 1.0941374, -.63649492, 1.0490886, 1.610719, -.49368734, -.6757864, .14772967, -.66480961, -.41603886, -.02370091, -.02395868, .00473214, -.02395822, -.0174531, .04561786, .04461905, -.02129833, .0446154, .04458771, -.26417627, -.30595708, .09429969, -.30486051, -.23610723, -.0931778, -.09753532, .02606962, -.09750137, -.07678267, .28507257, .25241947, -.1046605, .25179795, .25718239, .28034666, .24551492, -.28948403, .24479617, .35701116, .53782825, .44234603, -.09356962, .4395423, .37828346, -.61897765, -.97253054, .21661137, -.94021132, -.54956668, .78421678, .60406353, -.11669902, .5972591, .52358816, -.03882953, -.03957842, .01413856, -.03957601, -.03493439, -.06523687, -.06717864, .00964069, -.06716901, -.04345517, -.21282534, -.23992597, .1078811, -.23935247, -.21379982, .90192707, .66502038, -.23618664, .65483939, .72701392, .38244456, .3281245, -.1068623, .32684464, .31501446, .18015634, .16623594, -.06756239, .1660569, .16368593, -.36356599, -.4638294, .30871312, -.45927525, -.43376103, -.09210566, -.09668124, .04745514, -.09664337, -.0930312, .17131159, .15900884, -.04825369, .15886175, .1414853, .49760355, .41055199, -.14611893, .40803251, .41671053, -.26615826, -.30743391, .07708907, -.3063715, -.22187118, -.3927741, -.49119506, .09098666, -.48712552, -.30392363, -.09436583, -.09907181, .04037083, -.09903271, -.08958647, -.46225941, -.62276812, .17801784, -.61364244, -.42372915, -.68894344, -1.1023655, .11421352, -1.0627932, -.47683876, .54551863, .44161588, -.1962092, .43834684, .4887906, -.45635762, -.61845001, .2243287, -.60902965, -.45377631, .51392807, .42380904, -.11608231, .42119474, .39433643, -.49514556, -.65991554, .08047553, -.6509263, -.3404499, -.4747132, -.64891854, .19645604, -.63846945, -.4457103, -.26195285, -.29994651, .05379271, -.29903144, -.19471522, -.6243963, -.99875786, .24995553, -.96295355, -.57979055, -.40910507, -.53396084, .22267832, -.52769928, -.4208486, -.2342998, -.26726459, .10501295, -.26649427, -.22591179, 2.4407724, 1.317305, -1.1861326, 1.237361, 2.4177196, .48137182, .39179562, -.40147968, .38904091, .57088894, .88347144, .63016669, -.98224625, .61833459, 1.1531305, -.37748634, -.47241194, .12786077, -.46847326, -.33153033, .6029886, .47870953, -.23536225, .4744856, .55521561, .25692875, .2299286, -.09565444, .22945687, .23287356, -.02006736, -.02023643, .00185917, -.02023619, -.01144046, -.10153493, -.10651411, .01952647, -.10647343, -.07384054, 1.0620669, .75307903, -.27944874, .73844545, .85745625, .30155225, .26708188, -.06531001, .2664271, .22816287, .17414172, .16255392, -.01972152, .16242552, .10615131, .04052029, .03973302, -.01811988, .03973047, .03904003, .0995454, .09467985, -.08338736, .09464023, .11822905, -.1098009, -.11547485, .01617159, -.11542601, -.0730575, -.44427463, -.6062158, .32152264, -.59656536, -.50255261, -.33979962, -.40986904, .08038145, -.40747774, -.26477513, -.6619722, -.98266748, .05866829, -.95756575, -.37185274, .04999817, .04877268, -.02928264, .04876768, .05270472, -.1508781, -.16430411, .10638183, -.16410528, -.16919335, .43989814, .37692724, -.0381013, .37543202, .24522121, .33284499, .28780745, -.18836734, .28679605, .34687517, .19602769, .18000773, -.06084173, .17978985, .16722023, -.4337603, -.57396928, .19590909, -.56653304, -.41930309, .00823044, .00819827, -.00273524, .00819824, .00718275, .89286471, .65491122, -.31419723, .64454243, .79420855, -.485029, -.66434467, .17236992, -.6535117, -.43285486, -.19591362, -.22008743, .16508003, -.21959164, -.23314061, .29846968, .2648503, -.06051499, .26422096, .22091802, -.51177164, -.7090097, .14101934, -.69660593, -.4195854, -.08107079, -.08478746, .06715827, -.08475907, -.09592963, -.51330833, -.7044032, .11384153, -.6927808, -.39146756, -.28434784, -.34314381, .3405642, -.34113181, -.38046054, -.22041142, -.25004037, .12217904, -.24937866, -.22812084, -.28288225, -.33456338, .15166649, -.33299857, -.28954118, -.38045734, -.48755831, .24374344, -.48259472, -.41322979, .02184406, .02163048, -.00460415, .02163014, .0163788, .55876591, .45226093, -.16342586, .44890758, .46730833, -.08268958, -.08625577, .03425598, -.08623014, -.07766451, -.24595302, -.28107306, .07941274, -.28024022, -.21258935, -.20771709, -.23236015, .07678811, -.23187411, -.18782618, .07956144, .07648132, -.05316748, .07646146, .08763827, -.11617647, -.12358576, .05869661, -.12350707, -.11658064, .69686488, .5196206, -1.1872426, .51223505, 1.0486298, -.58188967, -.86594781, .17081948, -.84355226, -.48724743, 2.0124807, 1.144415, -1.4286583, 1.0858262, 2.2619028, .59690036, .47855196, -.15696886, .47467906, .4818173, .36272796, .31308576, -.1075188, .31195833, .30471383, .03595038, .03534871, -.01187403, .03534703, .03130966, -.22580188, -.25143769, .02816139, -.25095373, -.14213895, -.38006128, -.47956806, .15642695, -.47527259, -.356191, 1.1166041, .76410384, -.64917324, .74608095, 1.1741665, .20199822, .18591811, -.03661377, .18570506, .14403118, -.32867868, -.4062999, .25813875, -.40327202, -.38206925, .05677936, .0553442, -.01411033, .05533815, .04497619, -.36806787, -.454488, .1005, -.45113609, -.30085043, -.53506292, -.79438171, .32265847, -.77407627, -.56954441, .19071785, .17381953, -.17391407, .17357042, .23301424, -.51589241, -.74151215, .25824814, -.72549233, -.51609362, -.03413597, -.03468197, .00768145, -.03468051, -.02615969, .08910428, .08519312, -.07159331, .08516452, .1043678, .35987379, .30913411, -.16000503, .30794728, .34606262, .18489821, .17040005, -.06371003, .17021083, .16331813, 1.3405019, .88402, -.50635538, .8589904, 1.2208813, -.46237474, -.60429991, .08655541, -.59714239, -.3332505, .4514692, .38508298, -.04198612, .38346423, .25770965, .41235874, .34998624, -.11971637, .34842228, .34401548, -.30686678, -.36928716, .16563904, -.36718543, -.31479717, 1.0163954, .70515236, -.86009015, .68968476, 1.2112481, -.24796447, -.28380914, .0814219, -.28294869, -.21553446, .24538016, .22206756, -.04780098, .22169915, .17921812, -.4291345, -.58654611, .43946985, -.57710826, -.54498178, -.39186361, -.51057574, .30062526, -.5046651, -.45196879, .79404903, .60254896, -.2020656, .59496774, .6339753, -.36717171, -.44859111, .07036081, -.44560604, -.26670618, -.62796841, -.97958516, .17653188, -.94803646, -.51829408, -.40685157, -.52591145, .18066974, -.52018042, -.39107718, .31378064, .2751345, -.1068019, .27434394, .27602839, -.5145653, -.72052957, .16563167, -.70709631, -.44430867, -.44366138, -.57130426, .08146556, -.56526133, -.31771357, -.09743412, -.10210125, .02230239, -.102064, -.0750933, -.67463913, -1.1652336, .2955002, -1.1091912, -.64552085, -.0532977, -.05477754, .02666406, -.0547707, -.05330784, .01125144, .0111872, -.0069488, .01118714, .01207217, 1.0424593, .7658664, -.08546767, .75386482, .57058019, -.23966601, -.27400878, .10024656, -.27319153, -.22582436, -.15102731, -.16293533, .04024455, -.16277902, -.12244734, .10883711, .10360373, -.03484788, .10356181, .09381093, -.63749651, -1.0657947, .34067459, -1.0202847, -.65179114, .21462438, .19252866, -.32449832, .19215043, .31036079, .28543484, .25359926, -.07780585, .25300912, .23317684, .60037273, .47535329, -.27759935, .47106133, .58492043, -.64629577, -1.0650438, .26333326, -1.0220094, -.6036698, -.24043518, -.272045, .05163505, -.27135449, -.18140818, -.43766527, -.5607036, .07881634, -.55500896, -.31139393, -.10886067, -.1144656, .01680504, -.11441753, -.07357617, -.21659505, -.24163923, .04517702, -.24115776, -.16183839, .24558099, .21864978, -.21619087, .21815888, .29654159, .87538756, .6420736, -.36843874, .63190621, .82654279, .03268513, .03214741, -.02171152, .03214594, .03593136, -.33085539, -.39571874, .07053734, -.39361288, -.24902435, -.54252751, -.80913275, .30893409, -.78798062, -.56656071, -.29883582, -.34835188, .04910994, -.34699085, -.20623145, .82533579, .60997673, -.43779671, .60078017, .84175935, -.08115594, -.08467064, .04121902, -.08464528, -.08158108, -.30067698, -.35725161, .11424508, -.35548796, -.27438221, .06741546, .06518607, -.04474214, .06517379, .07408926, 1.003046, .72197825, -.25434616, .70913157, .79989373, -.58070163, -.84229962, .11654776, -.82319219, -.42836436, .75923582, .58481682, -.15124806, .5782288, .55867306, .0059764, .0059584, -.00334034, .00595839, .0062025, -.53090015, -.75600972, .17492552, -.74049255, -.46199395, -.22335222, -.25544049, .17958825, -.25467492, -.26167535, -.22948451, -.25824195, .05233589, -.25764301, -.17664938, .30963181, .27345875, -.06687207, .27275659, .23405719, 1.0611246, .74180213, -.46722051, .72619033, 1.0170951, -.29408863, -.34962585, .13988706, -.34788828, -.28923754, -.25860882, -.30081882, .14020602, -.29967581, -.26568138, -.22592201, -.25446235, .06302462, -.25386314, -.18598836, -.3826994, -.47233224, .07239276, -.4688642, -.27678777, .01947673, .01928047, -.01518198, .01928014, .02258379, -.38497259, -.48883332, .17038615, -.48421616, -.36963631, -.08148694, -.08518986, .05985012, -.08516183, -.09263114, -.04295891, -.04403539, .06160084, -.0440309, -.06103436, -.01471251, -.0148122, .00320525, -.01481209, -.01115378, .71449982, .53710627, -.69745866, .52988413, .89299886, .08013108, .07729919, -.02108105, .07728251, .06469063, .5593455, .44200533, -.53719308, .43794786, .69530214, -.29161723, -.34587494, .13500442, -.34420219, -.28422882, -.3444663, -.41820437, .09269602, -.41559328, -.28019574, .81332359, .62275131, -.11332632, .61541416, .53124621, -.23053501, -.26431372, .16104974, -.2634919, -.25772384, -.61349953, -.9545587, .20593769, -.92416238, -.53719435, .9104401, .6520594, -.66452249, .64010651, 1.032795, -.05516897, -.05661534, .01231837, -.05660902, -.04216878, -.56883995, -.87662871, .33321132, -.84988566, -.59966676, -.36478423, -.45367681, .13740888, -.45010064, -.33192424, -.1586423, -.17112781, .02675512, -.17096423, -.11043115, -.38205142, -.4887402, .22432994, -.48383445, -.40307602, .49535731, .41246085, -.08944291, .41016421, .35275325, -.06313745, -.06522226, .03054947, -.06521079, -.0624505, .34982979, .30320269, -.10692491, .30217114, .29689815, -.67251333, -1.1316017, .2367678, -1.0821006, -.59829882, -.59172716, -.97634716, .54039043, -.93670332, -.72331402, 1.8266434, 1.0903129, -.82764403, 1.0433883, 1.7676396, -.24588016, -.28664541, .23477248, -.28552426, -.3050526, -.5845798, -.88896881, .22408002, -.86346038, -.53502439, .13148771, .12328602, -.09816614, .12320082, .15028675, 2.4346548, 1.3699725, -.41157278, 1.2972916, 1.6960962, .36246503, .31062852, -.17737731, .30939885, .35987645, 1.3994869, .91006275, -.55827647, .88256762, 1.2979929, -.45624974, -.60016264, .1132157, -.59270962, -.36122736, -.25496413, -.29439606, .10658785, -.29338385, -.24019574, -.05767819, -.05933659, .01916141, -.05932864, -.05032999, -.80431809, -1.602386, .2093638, -1.4822075, -.64703695, 1.5617118, 1.0233385, -.18272086, .99348606, .96236533, -.70968552, -1.3600232, .44467442, -1.2686575, -.76512902, .64399969, .50980783, -.15969945, .50519804, .50976292, -.42577082, -.56001156, .19633848, -.55306239, -.4144407, .19852298, .18141046, -.09500672, .18116502, .19564494, -.01755235, -.01770992, .00953801, -.01770969, -.01804622, .71490024, .54777169, -.30852084, .54135133, .68066767, .25055792, .22421576, -.11747822, .22375532, .24524559, .7455487, .56404977, -.37980282, .55679912, .7502052, -.46599585, -.64242384, .27075063, -.63151757, -.48991551, 1.2948213, .83888233, -1.1669167, .81310832, 1.5757834, .37068888, .31372161, -.33695531, .31227059, .45241863, -.40780079, -.51476393, .09005722, -.51013837, -.31056193, .04838708, .04727737, -.02046467, .04727313, .04576124, -.65958483, -1.0877235, .22545378, -1.04365, -.5810448, -.41448109, -.51966116, .06413362, -.51525789, -.28035506, -.53221661, -.77934505, .27260226, -.76076586, -.53651117, .37895608, .32426337, -.13780978, .32295415, .34079714, -.35423027, -.44100622, .17977977, -.4374971, -.35599786, .43251987, .36024553, -.26019905, .35824609, .46002624, -.1780144, -.19759107, .14782681, -.19723303, -.21081321, -.00010377, -.00010378, .00002836, -.00010378, -.00008485, -.15775022, -.17083021, .04249013, -.17064969, -.12835694, -.05827104, -.06000977, .02430356, -.06000112, -.05485318, 1.1849863, .83572134, -.14128063, .818976, .73481794, -.59052793, -.96984829, .52299476, -.93117582, -.71450083, .9399917, .68377155, -.28694805, .67236428, .7974322, -.44002698, -.57087568, .10634001, -.56447783, -.34532533, -.21863606, -.24528179, .0624941, -.24474199, -.1814558, .56326566, .46109889, -.08372362, .45803496, .37592526, -.07591432, -.07896422, .03725001, -.0789438, -.07543992, -.77818641, -1.6795659, .42244103, -1.5246549, -.79981177, -.04399159, -.04503607, .03189906, -.04503194, -.04979462, -.1002894, -.10618355, .09715338, -.10612585, -.12502571, -.46154278, -.65298739, .47775225, -.64006615, -.58823684, .19297036, .17688747, -.08435038, .17666441, .18451545, 1.2567799, .84235571, -.50274465, .82029379, 1.1667164, .23807226, .21413629, -.110251, .2137361, .23206521, -.63972256, -.9226105, .04888754, -.90231089, -.34203496, -.65083021, -1.0839922, .27791095, -1.0383617, -.61748113, .01714389, .01700946, -.00427506, .01700929, .01359556, -.1753322, -.19645065, .33425428, -.1960278, -.2739114, 1.1513607, .79169637, -.43119065, .77348673, 1.0456204, -.48785477, -.68179512, .24456376, -.66922912, -.48827865, .21072881, .19254487, -.05959303, .19228378, .17427073, .35612601, .30303134, -.3278876, .30171888, .43650323, -.27023169, -.3144702, .10075437, -.31326871, -.24505043, .61318693, .48210992, -.3274334, .47749362, .62677681, .41111143, .33301644, -1.8253585, .33056576, .85133226, -.19481353, -.21503613, .04602194, -.21468694, -.15173218, -.03987817, -.04063046, .0094143, -.04062809, -.03105247, -.10009869, -.10514249, .027462, -.10510015, -.08194824, -.11716349, -.12448007, .04615095, -.12440397, -.10820942, -.17640093, -.1928184, .04341165, -.19256414, -.13927698, -.73754475, -1.344323, .22748136, -1.2668483, -.62784271, -.06202451, -.06398783, .02451098, -.06397748, -.05734634, -.21830102, -.24652744, .09873847, -.24592095, -.21112644, -.42028158, -.55096001, .20057009, -.54428635, -.41380172, .27692872, .24786499, -.05178603, .24735786, .19952295, -.16056965, -.17558293, .09551896, -.17534935, -.17014355, -.06538395, -.06758339, .02707714, -.06757106, -.0614033, .40472269, .34596206, -.08711496, .34454716, .30559479, -.01948248, -.01970221, .0312953, -.01970179, -.02874744, -.74044391, -1.4313084, .33547729, -1.332702, -.71651588, -.00959026, -.00963341, .00254421, -.00963338, -.00776392, .58290382, .46866275, -.16430017, .46496644, .48152696, .78990971, .5990838, -.21558183, .59151686, .64555366, -.60878353, -.904121, .11544082, -.88097363, -.44066146, -.19234382, -.2135101, .07997263, -.21312274, -.18087392, .09349877, .08945988, -.04175847, .08943082, .09004552, -.56760591, -.82023065, .13154508, -.80199044, -.43927128, -.18688935, -.20644692, .06830505, -.20610648, -.16835162, .13621984, .12805562, -.04984456, .12797412, .12275603, 1.0490177, .72713028, -.68918444, .71110319, 1.1489744, -.45100013, -.59470485, .13184149, -.58718889, -.37711905, .13526372, .12645504, -.12005451, .12635952, .16377856, -.28818669, -.33167944, .03350251, -.33058978, -.17720872, -.13060375, -.1398183, .0524589, -.13971005, -.12140973, .9378045, .67753716, -.3788192, .66574952, .87343154, .27098326, .24004014, -.15183279, .23945297, .28146658, -.33485349, -.3970462, .04412781, -.39513215, -.21469273, .6194375, .49775346, -.10398783, .49380734, .43052909, -.14296602, -.15368801, .04171745, -.15355413, -.11947338, .43258663, .35935961, -.30280431, .35730782, .48392651, .37175276, .31861271, -.14411522, .31735271, .34151995, -.32665016, -.38884006, .06387642, -.38687864, -.23887944, -.42561232, -.55795914, .18142126, -.55119973, -.40356688, -.35105423, -.42195308, .05378071, -.41958271, -.23666551, -.02320392, -.02345492, .00534224, -.02345447, -.01791811, -.33682582, -.40497783, .0758356, -.4026951, -.25816932, -.12414077, -.13332723, .11586673, -.13321404, -.1528525, 2.3019877, 1.257505, -1.3917948, 1.1840291, 2.4524702, -.17247345, -.18734391, .02840135, -.18713052, -.11910715, .08731105, .08419405, -.01168084, .08417551, .05626188, -.26263879, -.30489683, .11180706, -.30376866, -.24892718, -.2910695, -.35171965, .29755042, -.34962839, -.36942645, -.72868997, -1.3252187, .2462431, -1.2493896, -.63947939, -.12607099, -.13517712, .08419329, -.13506761, -.13883936, -.303988, -.36124323, .1053936, -.35945659, -.269062, -.4509924, -.60030839, .16495918, -.59220241, -.40636377, .34727781, .30690118, -.02535243, .30612116, .18286666, -.64879747, -.98327508, .09287628, -.95550747, -.42761313, .06005547, .05833297, -.02946512, .05832474, .05967803, .11741206, .11047067, -.14296951, .11040233, .15796697, -.08041936, -.08379401, .03396093, -.08377041, -.07601692, 1.7225341, 1.03418, -1.1239065, .99064126, 1.8823424, -.10868496, -.11435385, .01896727, -.11430459, -.07652287, -.31637263, -.37839743, .10091835, -.37638371, -.2723533, -.20938853, -.23213658, .0367331, -.23172556, -.14768321, -.28102192, -.32840365, .09088428, -.32707863, -.24303364, -.13782043, -.14790602, .04587562, -.14778313, -.12034084, .10434784, .09932503, -.04931338, .09928476, .10240486, .45772778, .38254781, -.13504668, .380503, .38392184, -.11546231, -.12233721, .03505027, -.12226903, -.09776887, -.44973591, -.58508369, .09599035, -.57838802, -.33862907, .16888733, .15759416, -.02645707, .15746842, .11470666, .32593828, .28649726, -.06498227, .28570446, .2399009, .27186575, .24233951, -.08641709, .24180647, .23376503, .12746131, .1202375, -.04891426, .12016931, .11670087, -.5525436, -.79779884, .16088526, -.78013652, -.4614165, -.33745452, -.41627007, .19449844, -.41322893, -.353828, -.38523263, -.47686709, .07595916, -.47326717, -.2825002, -.29919216, -.35416709, .10080245, -.35249308, -.26230134, -.32859982, -.39187088, .06583404, -.38985297, -.24225443, 1.2230258, .85610896, -.14322376, .83822182, .7538856, -.59484282, -.91957581, .24273238, -.89112381, -.55588811, .22316516, .20054443, -.20153153, .20016315, .27177443, -.34353237, -.42417631, .17430392, -.42104902, -.34521593, 1.0013204, .70813496, -.49237704, .69416568, .99576753, 1.286023, .85588024, -.52633007, .83267972, 1.2029896, -.14232183, -.15297857, .0427016, -.15284572, -.12004362, -.11923524, -.12690099, .05092533, -.12681891, -.11313345, .07967895, .07688418, -.02053429, .07686785, .06388501, -.5240686, -.76737404, .30816235, -.74908509, -.55317424, -.57784358, -.86110674, .1843253, -.83868528, -.49744512, -.32958216, -.40011504, .13174724, -.39761812, -.30589072, .41448584, .34574843, -.33455967, .343861, .48622915, -.32944976, -.41067335, .33465253, -.40736804, -.41725431, -.09503026, -.09919597, .012917, -.09916555, -.06156092, -.42105309, -.55299201, .20696821, -.54620281, -.41866737, -.07923867, -.08247432, .03034594, -.08245231, -.07249949, -.16577435, -.17985874, .03469311, -.17965957, -.12400407, .19949934, .1827653, -.06902931, .18253172, .17646103, -.43920686, -.57872277, .16003694, -.57144777, -.39524175, -.56513879, -.84885229, .24699657, -.82588278, -.54035235, -.06286303, -.06491442, .02858863, -.06490327, -.06090758, .92549746, .67323857, -.32473992, .6620081, .82244219, -.38988726, -.47979843, .05636151, -.47637231, -.2578083, .09979014, .09573364, -.01384403, .09570617, .06508626, .09280064, .0889795, -.0279896, .08895329, .07841086, -.46107866, -.59994216, .07899674, -.59306763, -.32264856, .83347527, .60020541, -1.0995866, .58955563, 1.1517236, .27905983, .24569371, -.19753739, .24503095, .31334636, -.63810006, -1.0087097, .18285623, -.97429886, -.5300365, -.17291354, -.18879898, .04598416, -.18855612, -.14009805, -.51416831, -.73501209, .24166843, -.71959983, -.50367861, -.11603496, -.12331911, .05205844, -.12324295, -.11191791, .25114639, .22198601, -.33394605, .22142343, .34795258, -.35430121, -.44161092, .18647538, -.43805958, -.36041173, -.4297934, -.56245513, .16054818, -.55572832, -.38998834, -.24832551, -.28509038, .09585265, -.28418665, -.22780274, -.5430595, -.8236341, .38944718, -.80029361, -.61243189, .14951981, .14066735, -.02096909, .14058006, .09787438, -.26030761, -.30529244, .19969441, -.30400333, -.3002317, -.41187027, -.5222738, .09534316, -.51739668, -.31862522, .40355256, .33678618, -.40298382, .33495712, .5082054, -.75255175, -1.3894944, .21360879, -1.3060837, -.62312324, -.35507276, -.43263695, .08326328, -.42983496, -.27587102, -.72634868, -1.3135867, .24178343, -1.2397681, -.63423315, 1.1376892, .77830075, -.56460273, .75991464, 1.1348542, .0124268, .01235574, -.00318039, .01235567, .00994053, -.17977795, -.19706609, .04822297, -.19678947, -.14607826, .13164445, .12436625, -.02962392, .12429923, .10088484, 1.6590308, 1.0177654, -.82102101, .97836656, 1.6533484, .35423886, .30348345, -.21771826, .30227719, .37946561, -.39745053, -.50183363, .1115254, -.49731392, -.327836, .16236895, .15037561, -.09838355, .15022813, .17310893, .6958186, .53635626, -.29431717, .53034734, .6580808, -.46773645, -.6351434, .19230175, -.62534201, -.43819951, .10162678, .09719379, -.0235417, .09716157, .0786372, 1.2254236, .83616209, -.33996754, .81614444, 1.0069625, -.44736095, -.58481213, .11337566, -.57787362, -.35668813, -.53040638, -.77530138, .27230976, -.75698926, -.53510239, -.20596997, -.22932212, .05814066, -.22888187, -.17023123, .52440326, .4238883, -.29085357, .42070618, .54284818, -.27039535, -.31848645, .18037432, -.31706852, -.29766953, -.18413097, -.20127687, .03093094, -.20101119, -.12800461, .2078039, .18889883, -.11508173, .1886127, .21500469, -.55328036, -.78200973, .11006953, -.76662156, -.4069389, -.31123454, -.37880878, .22941672, -.37638232, -.3542231, -.65927093, -.99075659, .0725532, -.96387989, -.39805047, .07618853, .07372323, -.01368779, .07370993, .05416444, -.32168303, -.39510162, .24521041, -.39233234, -.37023295, -.52044113, -.72706987, .1447913, -.71369831, -.42806058, -.19292174, -.21699692, .20331068, -.21649757, -.24735319, -.37437819, -.47321524, .1859494, -.46891375, -.37354989, .58338252, .47340146, -.10114556, .46997579, .40985278, -.31178488, -.3671897, .05737334, -.36555753, -.22343443, -.44979931, -.62005397, .35883752, -.60953178, -.52559974, .29013402, .25421375, -.21161293, .25347515, .32904591, -.0471581, -.04825397, .01517686, -.04824973, -.04071692, -.39545673, -.49608618, .09505087, -.49186199, -.30978568, .54435985, .45148952, -.05282739, .44886723, .31517645, .13502896, .12765483, -.02143779, .12758775, .09212014, -.3240423, -.3860241, .07033396, -.38406021, -.24535759, .0219324, .02171037, -.00612701, .02170999, .01806413, -.13135208, -.1397574, .02259516, -.13966782, -.09203926, .35984601, .3131645, -.06318754, .31215909, .25388182, -.53692255, -.78844182, .26544966, -.76937333, -.53490725, .99283801, .71110543, -.33171189, .69807369, .86799243, -.30811339, -.36535786, .08606506, -.36359554, -.25376166, .35941228, .30921429, -.14533974, .30805106, .33486267, .46119255, .38419514, -.15408706, .38206689, .40319974, .25617752, .22887855, -.11355209, .22839493, .24609477, .3881024, .33229798, -.10916489, .33096708, .32038232, -.01142538, -.01148719, .00325243, -.01148713, -.00946949, -.0663644, -.06831127, .00741754, -.06830176, -.04027665, -.31479598, -.3845116, .23897448, -.38195885, -.36180949, .13188749, .12507852, -.01495072, .12501997, .08042043, .05560787, .05414142, -.02479536, .05413498, .05352512, .030057, .02968142, -.00338286, .02968064, .01828388, -.60764607, -.92798542, .17422059, -.90082532, -.50482821, -.49611384, -.65425635, .06163571, -.64598206, -.31189496, .19595611, .17969821, -.07121758, .17947373, .17618879, -.53300603, -.79124424, .33222942, -.77102963, -.57364618, .21233509, .19291969, -.10206777, .19262435, .20956595, -.12690115, -.1343304, .01431673, -.13425796, -.07725649, -.32844644, -.40427048, .22379228, -.40137809, -.36413974, -.14290203, -.15448587, .07820742, -.15432956, -.14727134, .79360616, .58955236, -.48783917, .58096063, .8501696, -.02949369, -.02992309, .01081226, -.02992205, -.0265951, .27831796, .24559747, -.16801173, .24495834, .29635848, 1.0478477, .76214648, -.12083589, .7494232, .64260005, .06339373, .06158523, -.0181729, .06157663, .05266421, -.5938279, -.89957497, .18744172, -.87422318, -.50941588, .03644298, .03580721, -.01562572, .03580536, .0346231, -.49944896, -.6882761, .15428926, -.67661922, -.42538546, -.68855705, -1.1334562, .15684956, -1.0878507, -.52982329, -.08804256, -.09199457, .02906246, -.09196501, -.07666242, 1.9829382, 1.1470288, -1.0173005, 1.0916852, 2.0000117, .16729735, .15551127, -.04810313, .15537303, .13912136, -.6912127, -1.1040963, .10905673, -1.0647441, -.47058199, -.65126541, -1.1420625, .44827384, -1.0841523, -.72448568, -.18475545, -.20375577, .06541737, -.20343072, -.16467937, -.07713194, -.07963294, .00526849, -.07961942, -.03972479, .01740949, .01725609, -.0109489, .01725586, .01879278, 1.2196292, .85291889, -.15144619, .83500453, .7666221, -.22496394, -.25705245, .16083384, -.25629232, -.25344151, -.36823714, -.46294364, .17993716, -.45892631, -.36542816, 1.2520815, .81943768, -1.1127505, .7953967, 1.5166929, .5370179, .42882249, -.44677811, .42522593, .63635551, -.45893868, -.62841097, .26653623, -.6181842, -.48242728, 2.0020663, 1.154226, -1.0311665, 1.0978758, 2.021957, -.66655028, -1.1886375, .42913662, -1.1248503, -.72515437, -.5154665, -.75240451, .33467992, -.73476249, -.56236746, .11044802, .10446565, -.09872336, .10441168, .13404643, 2.1970641, 1.2481317, -.72708268, 1.1840148, 1.9146957, -.25675981, -.2990706, .15898926, -.29791395, -.27572996, -.25669536, -.29556425, .08661654, -.29458722, -.22515881, .52513525, .4277973, -.19081609, .42481538, .47213092, .15974061, .14921456, -.03568551, .14909907, .12211926, -.52570614, -.79242904, .4633627, -.77061806, -.63505653, .80623824, .58389749, -1.1584851, .57388804, 1.1462581, .03130321, .03083991, -.01157539, .03083876, .02830834, -.10999839, -.11631162, .03812945, -.11625126, -.09735414, -.46938615, -.62540527, .12257532, -.61690292, -.37800528, -.45977529, -.62819148, .25115588, -.61810743, -.47353804, -.24400514, -.29017483, .63139896, -.28872754, -.42206299, -.22238072, -.25076942, .07736622, -.25016715, -.197057, .41225613, .35139209, -.09092106, .34990208, .31381684, .90104234, .65879176, -.33084962, .64814686, .81292475, 1.4268219, .9417433, -.29915977, .91518567, 1.0679664, -.01131892, -.01138296, .0052341, -.0113829, -.01102793, -.26064096, -.29777716, .04913562, -.29689842, -.18829434, -.35225204, -.43891739, .19332433, -.43539782, -.3633634, .27755578, .24944605, -.03488256, .24897266, .17516458, -.05249628, -.05408881, .06457515, -.05408076, -.07086811, .15270366, .14295055, -.03751237, .14284682, .12049466, 1.6640434, 1.0233537, -.74645815, .98412553, 1.6049257, .40173966, .34399464, -.08248412, .34261792, .29860467, -.2012955, -.22591292, .12425093, -.22541249, -.21593975, -.55241944, -.81052705, .20869867, -.79100738, -.50314813, 1.2167787, .81596409, -.64037158, .79464724, 1.2377371, .31859384, .2793104, -.0957355, .2785059, .26885983, .33521642, .29137558, -.12189482, .29042371, .30145462, .35923737, .31063323, -.10219573, .30954184, .29767469, .49244921, .3958823, -.63755836, .39275613, .67622457, 1.0662749, .74466625, -.46536687, .72890881, 1.0190323, .23051376, .20778465, -.11628489, .20741193, .23119707, -.05407944, -.05548359, .01328741, -.05547751, -.04267546, -.62813954, -.98581439, .18994331, -.95321309, -.53119677, -.18373719, -.2011591, .03627741, -.20088423, -.13479904, .18184522, .16675393, -.12985588, .1665455, .20478515, -.31872585, -.37518492, .04704902, -.37352689, -.21222916, .84887233, .62383422, -.43685389, .61407755, .85707136, -.05261579, -.05387151, .00796703, -.05386652, -.03533347, -.50035039, -.71049219, .26736812, -.69613862, -.51155936, -.46632367, -.61629176, .1065549, -.60837729, -.35919155, -.41396762, -.52929026, .11631992, -.52400002, -.34161659, .56533161, .45487973, -.20191777, .45131692, .50536329, -.25961398, -.30166258, .12862217, -.30053261, -.25882168, .14486225, .13424498, -.22657748, .13411544, .21186167, -.56682674, -.86925212, .32130125, -.84331965, -.59103657, .5047258, .41021238, -.29671218, .40728788, .53271157, -.43155757, -.55417099, .09413043, -.5484369, -.32729987, .34146008, .29564578, -.1397251, .29462552, .31939499, .59808647, .48391487, -.09662502, .48031482, .41040803, .2006377, .183359, -.08645239, .18311139, .1909314, .44366264, .36673917, -.32881307, .36453234, .50585757, -.35790142, -.43681098, .08310658, -.43393424, -.27716013, -.49074253, -.68009252, .1985023, -.66817166, -.45726466, .20408678, .18766665, -.03758255, .18744678, .14629023, .92820989, .65798031, -.82939554, .64517405, 1.1264053, -.14206865, -.15283617, .047763, -.15270031, -.12446275, -.17969653, -.19767623, .06598571, -.19737695, -.16212616, -.47137633, -.61977806, .0862388, -.61210679, -.33714968, -.28911174, -.34384457, .16312479, -.34212796, -.30099582, -.00763281, -.00766442, .00752714, -.0076644, -.00957215, .34143269, .29614602, -.12301585, .29514894, .30610265, 2.0719664, 1.2126712, -.52023762, 1.1565606, 1.6468943, -.11800533, -.12555996, .05344356, -.12547942, -.11417636, -.66888109, -1.1786054, .37739535, -1.1178522, -.69637225, .00530837, .0052956, -.00113352, .00529559, .00399755, .15362842, .1433758, -.05533638, .14326187, .13771924, .42707403, .35920849, -.15986646, .35742182, .38779115, -.46487744, -.65646177, .43587838, -.64361114, -.57326763, -.01626688, -.01640278, .00924814, -.01640259, -.01697843, -.027476, -.02784189, .00868304, -.02784108, -.0235796, .19189844, .17681613, -.04846485, .17661883, .15282694, .22330594, .20058569, -.20863098, .2002013, .27504459, .11559231, .10934324, -.06731977, .10928697, .12162145, -.47747168, -.62350706, .06552056, -.61616792, -.31028988, .8575602, .61127476, -1.2773277, .5997524, 1.2339205, -.24769378, -.28838884, .20749059, -.28727965, -.29418433, -.16802838, -.18300456, .04553388, -.18278242, -.13699666, .15586551, .14451023, -.11872882, .14437251, .17934753, -.39223346, -.50201694, .1843519, -.49695755, -.38422796, .80113557, .59491977, -.45929526, .58622787, .83851595, -.24191424, -.27667143, .09486526, -.27584213, -.22309338, .18432121, .16997179, -.0607232, .16978585, .16039042, -.40278614, -.52507026, .24440944, -.51896897, -.42963435, .19255907, .17757771, -.04252925, .17738371, .14664994, -.0972408, -.10219865, .03820438, -.10215654, -.08973187, -.30184289, -.35995233, .12973145, -.35809935, -.28699813, -.80655346, -1.6474722, .23707035, -1.5153139, -.67565426, -.36549402, -.45446948, .13440814, -.45089353, -.32991751, -.35756411, -.45140667, .25876731, -.44734612, -.40446637, .47443587, .39805103, -.0802688, .39601394, .33060589, -.64139492, -1.0346158, .22190249, -.99622053, -.56730211, -.35327017, -.4485241, .33766234, -.4442919, -.43843867, .38580316, .32347057, -.43729991, .32180248, .50681211, -.45169795, -.60091255, .1608026, -.5928297, -.40334168, .99548762, .72054504, -.2191243, .7081499, .75729325, 1.8464371, 1.1114614, -.59910169, 1.0651319, 1.5985756, .39118858, .33428279, -.1169012, .33290991, .32951392, -.26737891, -.31403027, .17241748, -.31268067, -.29104169, -.35472347, -.43250975, .08609581, -.42968906, -.2787815, .20292213, .18425357, -.15632118, .18396786, .2343701, .38315112, .3261751, -.17731209, .3247703, .37339587, -.4203798, -.53885631, .11049479, -.5333593, -.33927498, -.39280184, -.50479736, .20418445, -.49954177, -.39792378, .01409337, .01399707, -.00585487, .01399697, .01324928, -.6652952, -1.0134974, .08156506, -.98417555, -.41640983, .34348687, .29084513, -.60061687, .28950793, .52137387, .09977508, .09541015, -.02804863, .09537833, .08234969, .32918421, .28875075, -.07066353, .28792585, .24833301, -.49353903, -.6871202, .20734724, -.67473867, -.46571878, .77392484, .60155546, -.08642675, .59523764, .46956088, .11597648, .10966911, -.06949822, .10961197, .12319163, -.22418407, -.24900933, .02464014, -.24855216, -.13529889, .0048323, .00481904, -.00792244, .00481903, .00717903, 1.5612954, 1.0050419, -.31845894, .97326169, 1.157936, -.04439821, -.04534558, .0116988, -.04534221, -.03586197, -.18287636, -.20228267, .09051079, -.20194015, -.182256, .79991917, .59627529, -.39894571, .58778217, .79924268, .00045295, .00045286, -.00012532, .00045286, .00037187, -.35045702, -.43580879, .18862591, -.43237702, -.3591702, .48168833, .40506154, -.06181568, .40304207, .30611667, 1.2102909, .82323981, -.41739621, .803211, 1.0693487, -.59017082, -.91634263, .27345193, -.88743255, -.57538096, -.37675981, -.47045792, .12095176, -.46661229, -.32503025, .06803516, .06595983, -.01939384, .06594928, .056414, -.06959904, -.07232338, .05983358, -.07230561, -.08337973, .21772388, .1987227, -.05156152, .19844678, .16971593, 1.6833678, 1.0531665, -.41182571, 1.0155263, 1.3264794, -.34527398, -.42174351, .11413824, -.4189433, -.30078969, -.62314999, -.96597584, .1733497, -.93571986, -.51252229, .6459985, .5037073, -.31753546, .49854781, .64233524, .81444581, .60869635, -.31055794, .60017873, .74410178, -.4908851, -.63379759, .03898724, -.62695296, -.26585044, .62883787, .49981679, -.15887697, .49545104, .5008674, -.47123649, -.64525963, .2157823, -.63475768, -.45762303, -.43045432, -.56726321, .18859397, -.56012565, -.41191156, -.27800518, -.32605338, .11807445, -.32467635, -.2632877, .02531747, .02500971, -.01037265, .02500908, .02369118, .8807169, .65205874, -.24272019, .64234114, .72210916, -.47195945, -.64065297, .1776242, -.63078898, -.42931939, .49944805, .41097781, -.16469959, .40838569, .43474479, 1.5756966, .961067, -1.4644167, .92300166, 1.9373732, -.62905627, -1.0322172, .31250029, -.99119942, -.62770146, -.43233827, -.55683313, .10072474, -.55093416, -.33517466, 1.2574772, .8430771, -.49561225, .82102893, 1.1616022, -.48191348, -.65985959, .18026216, -.64912206, -.43747936, .96451145, .70037123, -.24978434, .68855868, .77458662, .10390185, .09900718, -.04141969, .09896877, .0963447, .17782342, .1633702, -.12549832, .16317469, .199472, .90103943, .64142578, -.9021328, .62924252, 1.1356975, -.31685644, -.37539119, .06613533, -.37359927, -.23680791, -.36576202, -.45473746, .13299164, -.45116409, -.32891512, .3946375, .33626288, -.13179614, .33483111, .34496614, -.05564079, -.05737795, .05191923, -.05736891, -.06850384, .07746079, .07480482, -.0207498, .07478964, .06291235, -.62763543, -.9961985, .21906113, -.96162467, -.55676262, -.67538326, -1.2113217, .40482453, -1.1450707, -.71746238, -.19995235, -.22180501, .05561306, -.22140782, -.16444472, .03704984, .03639979, -.01443181, .03639789, .03409112, -.51650857, -.76312406, .39772971, -.74408523, -.59647333, .98171505, .70792313, -.2820108, .6954651, .81612286, -.2277101, -.25742923, .07554275, -.25678472, -.19860757, -.6677642, -1.1054215, .21255838, -1.0599649, -.57444902, .82422176, .61613989, -.27973166, .60753116, .724358, .25536475, .22807412, -.12009092, .22758927, .25020003, .13012242, .12202695, -.10400311, .12194308, .15214588, .09729097, .0929002, -.04630879, .09286719, .09570754, .05400697, .05259462, -.0289588, .05258847, .05528026, .02411581, .02383889, -.00908, .02383836, .02194016, -.49513117, -.69291152, .22291771, -.68003738, -.4781216, -.46304413, -.61997017, .15285491, -.61125577, -.40319771, -.18833279, -.20618262, .02966943, -.20590112, -.12815347, -.5643813, -.85531534, .28315697, -.83116451, -.56502478, -.08363191, -.08715286, .02552147, -.08712817, -.07094034, -.47398851, -.65328525, .23517562, -.64221102, -.47277297, -.26479649, -.30521694, .07162969, -.30419273, -.21576575, -.19257033, -.21268103, .05290569, -.21233169, -.15772616, -.42206694, -.53104639, .06193518, -.52640571, -.28048524, .27418477, .24533224, -.05768892, .24482746, .20546428, -.32017836, -.38448403, .10816775, -.38234583, -.28095531, -.11235979, -.11823478, .01483804, -.11818361, -.07209018, .0987543, .09404778, -.06959045, .09401042, .11072114, -.01475371, -.0148639, .00745724, -.01486376, -.01480711, -.31418685, -.38182471, .20098822, -.37941624, -.34108205, .11799586, .11146733, -.07163686, .11140716, .12588289, -.30637716, -.3637908, .09558214, -.36200816, -.26180213, -.10448745, -.11077222, .0847169, -.11070926, -.12275602, 1.2126604, .82725729, -.37262864, .8074287, 1.0310068, -.39751424, -.50920053, .1695837, -.50403422, -.37702762, .41730243, .35889083, -.04510874, .35753432, .25045566, -.73638278, -1.3570324, .25051513, -1.2760582, -.6476749, .55540527, .45719388, -.06897275, .45432127, .3491209, -.30721199, -.36229287, .0687354, -.36065586, -.23497893, .10505872, .10057482, -.01463721, .10054293, .06862002, -.45382873, -.60844735, .18506012, -.5998169, -.42400951, .39661504, .33831796, -.11781938, .336897, .33342259, -.69147439, -1.1808634, .21853097, -1.1263227, -.59342395, -.24741436, -.28045005, .04610236, -.27971718, -.17804686, -.36931264, -.45432927, .08596562, -.45109528, -.28622949, 1.3455919, .89213672, -.41397432, .86750981, 1.1444848, -.47951866, -.66313969, .22918427, -.65166375, -.47236235, .71520118, .54505314, -.38833921, .53840534, .73513296, -.25160521, -.28897301, .0883052, -.28805159, -.22360689, -.21586978, -.24025429, .03882649, -.23979626, -.15352553, 1.9366852, 1.1229873, -1.1507855, 1.0692654, 2.0513864, -.54191503, -.81867924, .37498983, -.79590578, -.60390778, -.60797965, -.93124681, .18049629, -.90361689, -.51100536, .35254522, .30358918, -.15896092, .30246118, .34060421, -.24892482, -.28657929, .10995939, -.28563373, -.23885421, -.73517526, -1.2292916, .10907361, -1.176769, -.49035486, -.09636889, -.10089282, .0205596, -.10085744, -.07255035, -.38028061, -.49216014, .32033143, -.4867466, -.45249381, -.18871952, -.20901105, .07789747, -.20864818, -.1770363, -.06614495, -.06841276, .02905101, -.0683998, -.06334732, -.62411409, -.97774934, .19561035, -.94566456, -.53413365, .27120071, .24281427, -.05949607, .24232028, .20607879, .85585921, .61733359, -.8366515, .60648742, 1.0701872, -.16357957, -.17802555, .05246843, -.17781323, -.1410789, -.17076048, -.18878456, .15029066, -.18846812, -.20617955, .52263905, .42910139, -.12966468, .42633288, .41376314, .08575312, .08269529, -.01334224, .08267713, .05811026, -.14597352, -.15759015, .05691445, -.15743625, -.13435904, -.12458284, -.13295752, .05161702, -.13286377, -.11701632, .11494773, .10876673, -.06680556, .10871137, .1208596, -.04256321, -.04346356, .01520077, -.04346039, -.03804709, -.45536737, -.58326447, .0570685, -.57735027, -.28711117, .47626078, .39404241, -.17708947, .39169372, .43149006, -.24311822, -.27871269, .10466917, -.27784737, -.23129235, 1.3476211, .87277805, -.85701703, .8459194, 1.4601082, -.37467502, -.46905263, .13720983, -.4651302, -.33773409, -.07708257, -.08018609, .03357444, -.08016527, -.07361794, -.01385604, -.01394893, .00470857, -.01394883, -.01218239, -.72719396, -1.3517217, .29532086, -1.2688687, -.67848703, .44571038, .37514843, -.10875349, .37329763, .3509077, -.57534299, -.86862449, .23022732, -.84453497, -.53417083, -.0754074, -.07835789, .03140045, -.07833865, -.07094655, .75644486, .57398438, -.29853542, .5667599, .69907988, -.6168851, -.94901454, .17024164, -.92029119, -.50602051, -.46962782, -.64565932, .24080845, -.63488224, -.47359064, .72610874, .56301499, -.16076249, .55698784, .55344273, -.10814219, -.11418864, .03518046, -.11413233, -.09370741, .46426286, .38453431, -.20407356, .38226845, .44474889, -.31314903, -.38903031, .44926615, -.38599444, -.44498491, -.16918239, -.18372589, .03236222, -.1835178, -.1228173, .01922199, .0190669, -.00221987, .01906669, .01179374, .69393246, .54025406, -.19213669, .5346523, .56984696, -.47386179, -.65599758, .2572133, -.64457328, -.48701491, .1456625, .13616929, -.06689435, .13606627, .14159187, -.70347527, -1.3807153, .55747473, -1.2813738, -.82019595, .00383646, .00382933, -.00148007, .00382933, .00351878, -.1768471, -.19414626, .06286135, -.19386472, -.15783495, -.13496417, -.14390135, .02406649, -.1438028, -.09571057, .37122856, .32016044, -.09463934, .31899469, .29657063, .60928212, .48199407, -.25714196, .47761034, .57581097, -.41880282, -.56645291, .42755189, -.55793354, -.53130757, -.42053034, -.55369854, .22244575, -.54677554, -.42849879, -.15715324, -.17157183, .09775847, -.17135169, -.16902218, -.09228049, -.09672915, .03634801, -.09669343, -.08522692, -.08995605, -.09397528, .02353244, -.09394536, -.07248574, -.44885439, -.58736729, .11330178, -.58034539, -.35740385, -.30551624, -.37255546, .28556142, -.37012293, -.37635647, -.03486108, -.03547902, .01599897, -.03547719, -.03387931, -.2946841, -.35200734, .16882458, -.35016057, -.30836118, .13931681, .13093625, -.043177, .1308523, .11878543, -.19643866, -.21786169, .06304702, -.21747313, -.16945309, .97520508, .69987126, -.35556831, .68719635, .87777185, -.17457684, -.19174755, .07274891, -.19146657, -.16428954, -.20695989, -.23150806, .07894116, -.23102399, -.18910454, .09175883, .0878384, -.0436685, .08781049, .09026055, -.6726609, -1.1472366, .26916505, -1.0944988, -.62452094, -.62009308, -.98610435, .24679913, -.95160491, -.57468403, .9143014, .67645561, -.18494444, .66632846, .67621274, -.40823923, -.51398966, .0825203, -.50947217, -.30186082, .49533274, .39542199, -.86503165, .39209712, .75153986, -.41646708, -.57351884, .65089757, -.56384747, -.60893088, -.24832842, -.28228688, .05344114, -.28151545, -.18749348, -.4291716, -.56977636, .23074298, -.56222093, -.43968348, -.52430276, -.75504356, .23433078, -.73856158, -.50505795, -.35502192, -.43176704, .07773553, -.42902312, -.26960004, .73259343, .57037824, -.12427138, .56446619, .51094683, -.17483804, -.19012333, .02844008, -.18990093, -.12024792, -.47873773, -.65338446, .17767818, -.6429686, -.4334641, -.42915684, -.55172088, .10159999, -.54596001, -.33449162, .07254078, .07037383, -.00953335, .07036304, .04646722, .13886356, .1304756, -.04616793, .13039122, .12120364, 1.9186054, 1.103383, -1.5492848, 1.049048, 2.2510105, .81907795, .58317424, -1.9232965, .57210785, 1.3716466, -.44373902, -.58942003, .17882664, -.58157592, -.41295794, .132741, .12487617, -.05473605, .12479856, .12448142, .16258569, .15136781, -.04905618, .15123894, .13739243, .33106334, .28830953, -.11710154, .28739283, .29498839, .12174071, .11518179, -.04300579, .11512293, .10842836, .18150841, .16802615, -.04268629, .16785944, .1411575, -.55181879, -.78094168, .11503991, -.76546234, -.41224668, .31092362, .27182326, -.14438697, .2710067, .30335779, .4898463, .40123648, -.24767545, .39858616, .49167434, .04020691, .03953763, -.00461499, .03953577, .02461883, .69779258, .53039763, -.52893557, .52380457, .80160759, -.41938765, -.528942, .07014561, -.52422331, -.2911302, 1.5500093, .99414196, -.37744285, .96219521, 1.2195041, -.23120537, -.26211582, .08002466, -.26142923, -.20452665, -.5337862, -.75033499, .13270693, -.73602772, -.42288223, -.34890203, -.42568049, .10060014, -.42288671, -.29041019, .09510716, .09097446, -.03856102, .09094454, .0886887, -.42043796, -.53892978, .11036636, -.5334321, -.33917476, -.12595244, -.13532881, .10828799, -.13521259, -.15089487, -.31032226, -.37071943, .11203737, -.36877261, -.27840237, .16780569, .15577563, -.05594822, .15563205, .14660312, -.31007558, -.3713279, .12483464, -.36932432, -.28846962, .78557461, .5899677, -.33984865, .58198177, .74856607, 1.0796956, .75859235, -.34035392, .74306646, .92580842, .27211903, .24110835, -.14370344, .24052108, .27712242, -.52540352, -.73146819, .1256489, -.71828911, -.41088935, -.60747742, -.97426243, .32098258, -.9389528, -.61876239, -.43523416, -.56928385, .14331067, -.56250104, -.3786618, -.66214695, -1.0529658, .14597953, -1.0161294, -.50397645, -.37668723, -.47345942, .14901598, -.46935893, -.34839737, .27174319, .24340092, -.05638588, .24290944, .20269322, .0586777, .05722555, -.00890276, .05721956, .03943062, .27677671, .24694797, -.06897282, .24641357, .21944331, .0637317, .06189966, -.01870783, .06189089, .05336478, 1.0814839, .75717338, -.38058322, .74136982, .96199595, -.65943831, -1.0712433, .19220718, -1.0303401, -.55087024, -.18011189, -.19751596, .0493431, -.19723615, -.14738289, .46231409, .37982102, -.33361411, .3773866, .5224558, -.56942431, -.85763161, .24175842, -.83411749, -.53921405, -.35493969, -.44571691, .2330656, -.44188734, -.38869215, -.37534646, -.48492178, .33926643, -.47965973, -.45724101, -.41212714, -.53947528, .22608188, -.53301102, -.42506244, -.89109482, -1.8088793, .10306442, -1.6661471, -.54701034, .84612011, .63633926, -.17695167, .62780994, .63277537, -.12382645, -.13164325, .03240452, -.13156107, -.0997901, 1.1076252, .76777951, -.44561598, .75085943, 1.0302093, .3311406, .2893973, -.08957051, .28852346, .26981948, .02920011, .02877719, -.01654502, .02877617, .03044309, .07314809, .0706297, -.03411092, .07061526, .0714677, -.35913427, -.43718768, .07348821, -.43438211, -.26663703, -.18609667, -.20641976, .09821248, -.20605065, -.18947764, .50919209, .4142026, -.26402946, .41127427, .51540492, -.26690924, -.30841311, .07685443, -.30734196, -.22206257, .02042216, .02021503, -.01102855, .02021468, .02095321, .7002997, .53833717, -.31546173, .53217977, .67636561, 1.2941374, .88132159, -.23467786, .86000984, .92289924, .00143183, .00143077, -.00093378, .00143077, .00156442, .80324755, .60017028, -.3506458, .59175704, .76771346, -.34282415, -.4202402, .13739525, -.41735056, -.31845507, .17602685, .16229011, -.08993897, .16211168, .17730129, -.18038496, -.19597926, .02026541, -.19575488, -.10966347, -.30741981, -.36447461, .08698474, -.36271998, -.25428003, -.07797062, -.08103614, .02503701, -.08101606, -.06727053, .80370036, .60024571, -.3553498, .59180636, .77142102, .49751879, .41508697, -.07680567, .41282555, .3362643, -.12394241, -.13270282, .08092548, -.13259972, -.13547268, .0907716, .087107, -.0276548, .08708235, .07695441, -.58551063, -.89305963, .23048889, -.8670732, -.54065039, -.4436628, -.58751169, .16649328, -.57985969, -.40319108, -.01064029, -.01069679, .00486865, -.01069674, -.01033035, -.76349743, -1.3671158, .14976747, -1.2927466, -.55892588, -.41942955, -.54623956, .17243998, -.53993799, -.3929422, .07188648, .06969326, -.0125059, .06968211, .05056071, -.45634065, -.62180242, .25193005, -.6119925, -.47166041, .66568185, .5216652, -.19801412, .51653357, .55986914, -.04302486, -.04399902, .02521296, -.04399534, -.04536256, -.59939806, -.92172055, .2130805, -.89387717, -.5349766, -.46198986, -.61219946, .12241772, -.60418739, -.37386349, -.44136021, -.58987474, .21532139, -.58168434, -.43775843, .15531067, .14510439, -.04349201, .14499271, .12802084, -.1605713, -.17470648, .05934997, -.17449939, -.14518735, .45124764, .38064244, -.08599328, .37881183, .327171, -.28769159, -.33737083, .08922817, -.33594827, -.2453553, -.30543375, -.35768158, .05171439, -.35619939, -.21289158, -.00282118, -.00282495, .0008457, -.00282495, -.00237886, .04404652, .04315387, -.01374418, .04315085, .03764067, -.66277922, -1.0501904, .13883223, -1.0140043, -.49592883, .94359123, .67929441, -.41216658, .66721909, .90203527, -.60937317, -.98748869, .35184524, -.95015357, -.63931679, -.35004111, -.42969838, .12236166, -.42670244, -.31067369, -.17253268, -.18766663, .03247046, -.18744569, -.12457199, .56866536, .4582866, -.17765109, .45474887, .48615021, -.64104987, -.98195742, .11824463, -.95281519, -.45976054, .13859401, .13062588, -.0288178, .13054959, .10344907, .13036798, .12305608, -.0368677, .12298778, .10781338, -.22676671, -.25854605, .13248042, -.25780633, -.2388435, .371507, .32034478, -.09523099, .31917562, .29733596, 1.2071602, .81655811, -.51291364, .7961247, 1.1434083, .89070081, .66413745, -.16685752, .65469612, .64211551, -.60394234, -.96084765, .30641235, -.92716896, -.60688873, -.26604872, -.30950626, .11235654, -.30832857, -.25148779, .65899032, .52076457, -.14448362, .51598551, .50065155, -.17951486, -.19802609, .08409235, -.19770856, -.17565578, .68945354, .53699955, -.19838414, .53145064, .57347653, .01497978, .01488627, -.00158129, .01488618, .00891971, -.65161336, -1.0159802, .13055012, -.98332859, -.48039198, .3362121, .29120925, -.15401533, .29020943, .32654287, -.37880467, -.48944216, .31617826, -.48412663, -.44936325, .63868806, .51567573, -.06375307, .51176294, .37328131, .06884034, .06676215, -.01600538, .06675169, .05333276, -.17402133, -.19051874, .05593966, -.1902585, -.15019366, -.1912367, -.21227567, .08358483, -.21189074, -.18285212, -.43253467, -.55538081, .09223564, -.54963788, -.32557936, .1682158, .15649153, -.04134298, .15635548, .13275629, -.6224555, -1.0180922, .32847661, -.97814722, -.63374862, -.53997585, -.76271418, .13218644, -.7477607, -.42558717, -.63427137, -1.0088441, .2064307, -.97352075, -.54969042, .13276369, .12501016, -.04742027, .12493475, .11868182, -.42174769, -.54921003, .16462506, -.5428784, -.38833851, -.24126988, -.27460897, .07270986, -.27384373, -.20380265, .17335348, .16131178, -.03141992, .16117251, .12360425, .4376146, .36594902, -.18691447, .36400544, .41522693, -.59768424, -.90289008, .17116733, -.87777946, -.49636158, -.40429612, -.53254623, .30793577, -.52586762, -.46518935, .43090041, .36636087, -.07523678, .36475822, .30343896, .62725403, .48691579, -.4924925, .48174928, .72907496, -.40588037, -.52052606, .14833886, -.51519516, -.36561753, -.03740417, -.03810963, .01568498, -.03810741, -.03527373, .27306715, .24349892, -.08080338, .2429667, .22926239, -.49496985, -.67615602, .13869254, -.6653144, -.40808146, -.79113899, -1.4054818, .10558115, -1.3310049, -.50937855, -.43097213, -.55555191, .10576207, -.54962668, -.33995344, -.4032534, -.5112142, .11204773, -.50645073, -.33153525, -.33314549, -.40137054, .08986394, -.39905799, -.27120297, .2407433, .2169849, -.08291416, .21659496, .21261262, .24101098, .21640297, -.11760103, .21598518, .23905891, .20000383, .1830665, -.07461323, .18282781, .18140148, -.22538443, -.25428686, .07188698, -.25367093, -.1940183, -.32149179, -.39624663, .27840685, -.39337475, -.38608527, .87040729, .62890561, -.68543035, .6179705, 1.0126968, -.09850354, -.10349707, .03284711, -.1034549, -.08606177, -.13904173, -.15016113, .08736364, -.1500131, -.15004344, 1.8567607, 1.0760962, -1.6345595, 1.0245247, 2.2420615, .25420233, .22854457, -.06799885, .22811392, .20636223, -.42601637, -.55519167, .15490018, -.54875438, -.38309942, -.42006046, -.54070736, .12484348, -.53500515, -.35318845, -.34038517, -.41888298, .1670363, -.4158917, -.33826784, .10732772, .10202788, -.0504268, .10198429, .10512477, 2.4165453, 1.2773864, -2.1690413, 1.1947914, 2.9369456, .58770343, .45938875, -.60368314, .45477576, .74711106, .22404849, .20314341, -.08197069, .20281894, .20189438, .06774159, .06578282, -.01213391, .06577339, .04811131, -.05276523, -.05416643, .01965723, -.05416023, -.04783539, -.05982267, -.06179001, .04541919, -.06177923, -.06875965, -.09655933, -.10173287, .06111632, -.1016867, -.10445403, .29990152, .26387987, -.11665314, .26316113, .27582137, -.28520689, -.33843405, .16472851, -.33678811, -.29925374, -.22646097, -.25959206, .18367603, -.25878722, -.26608664, -.43394393, -.55488155, .0799881, -.54933148, -.31115316, -.13630458, -.14645735, .05782735, -.14633144, -.1290411, -.61471548, -.98815853, .29978608, -.95200201, -.60962568, .27042842, .2433076, -.03873781, .24285529, .17827477, -.3037132, -.3548468, .04833258, -.35341891, -.20736356, 1.3275166, .89183862, -.30062782, .86874653, 1.0194823, -.12083708, -.12842762, .03783723, -.12834821, -.10338319, .17329023, .16132223, -.02974094, .16118461, .12133264, -.55179382, -.87702595, .62383453, -.8464111, -.72424308, -.66512486, -1.1011503, .21960267, -1.0558538, -.5791948, -.30685317, -.36060847, .05895314, -.35904713, -.22308278, -.33302732, -.39716754, .05925522, -.39512139, -.23599644, .23219186, .20987025, -.08413126, .20951333, .20855813, -.35602639, -.43601762, .09821201, -.43304672, -.29200234, -.14141661, -.15399593, .17806271, -.1538097, -.19239832, -.09296937, -.09735512, .02855205, -.09732065, -.07902825, -.4456744, -.58277989, .11773478, -.57585032, -.36029374, 3.1329873, 1.621228, -.46042711, 1.5096314, 2.0830645, -.2042655, -.22627432, .04202093, -.22587992, -.15192477, -.06201938, -.06392066, .01862458, -.06391094, -.05232675, .34632572, .29817015, -.18601059, .29705915, .35468737, .21401773, .19464961, -.08608469, .194358, .19904524, .45136307, .37960871, -.1031863, .3777189, .34772402, .37285458, .31822787, -.18611474, .31690065, .3726461, -.49299048, -.66634587, .11428475, -.65636839, -.381562, -.41513381, -.520888, .06491106, -.51644384, -.2817788, -.37195651, -.46926504, .18495104, -.46506769, -.37127044, -.18813731, -.20902544, .10218763, -.20863978, -.1934013, -.42736786, -.58745043, .51011007, -.57765619, -.57117064, -.49915342, -.6604927, .06368884, -.65193616, -.31660698, 1.3670951, .91160504, -.30307787, .88712478, 1.0424628, -.49474038, -.7113154, .36275486, -.6959238, -.56208153, .7613852, .58098624, -.22289997, .57396562, .63696605, -.17319968, -.19279796, .22909499, -.1924292, -.23954103, .45265479, .378838, -.13576636, .37684438, .38175565, .93930293, .68862464, -.21360169, .67768683, .72235166, .22161701, .20016359, -.13135934, .19981818, .23454835, .15032335, .14023016, -.06996913, .14011732, .14677873, .3406974, .29533657, -.13054502, .29433411, .31177597, -.16307222, -.17810303, .07541958, -.17787248, -.1588881, -.54862673, -.79377698, .17620597, -.77600914, -.47337085, -.32634377, -.3857118, .04692816, -.38392179, -.21541274, -.15373157, -.16730443, .08605123, -.16710499, -.15962629, .9011882, .66456837, -.23643424, .65440352, .72687063, -.34509771, -.42555341, .16069105, -.42245448, -.33700417, -.16367701, -.17758625, .03848037, -.17738952, -.12727649, -.56470257, -.89463205, .4988797, -.86382843, -.68268724, .20397399, .18495038, -.1729023, .18465524, .24321673, -.3193625, -.38720281, .16127484, -.38481872, -.32042138, -.56406387, -.92260115, .72246827, -.88640048, -.77179468, .58923877, .46784371, -.28158811, .46371946, .58041993, -.59126872, -.86740855, .12090897, -.84653375, -.43888707, -.21570205, -.24209371, .07172638, -.24155697, -.18828071, -.52204454, -.74049644, .18677028, -.72562754, -.46692912, -.28620727, -.34438183, .28781731, -.3424245, -.36127347, -.24656188, -.2814314, .07253135, -.28061238, -.20660264, -.67681799, -1.1496091, .24645424, -1.0975441, -.60893372, -.26112484, -.3008458, .07808969, -.2998428, -.22000879, -.27114812, -.31363221, .07156776, -.31252748, -.21913926, .54582258, .45257873, -.05252811, .44994244, .31514343, .48766246, .4031505, -.15344342, .40072711, .41789994, -.24193248, -.280044, .18522885, -.27904766, -.27885322, -.21380309, -.24358292, .20279659, -.24289395, -.26467091, .59744826, .49250182, -.03553001, .48945219, .29381592, -.05153952, -.05300573, .04300642, -.05299877, -.06113379, -.43004264, -.59907074, .6310609, -.5882379, -.61570796, -.26585761, -.31380878, .22782518, -.31237523, -.31815833, .28391941, .25156111, -.10242141, .25094826, .25464607, -.00320243, -.00320713, .00070621, -.00320713, -.00243766, -.63603531, -1.0387713, .27203655, -.99825208, -.60377237, .25766098, .23140991, -.06735573, .23096518, .20757129, -.45820457, -.59541584, .08024045, -.58866089, -.3229838, -.18203541, -.19956372, .04409411, -.19928289, -.14296864, -.02065128, -.02085557, .00614934, -.02085524, -.0173747, .01775183, .01759911, -.00752808, .0175989, .01680352, -.30643849, -.36765483, .1481102, -.36563012, -.30299389, -.081806, -.08524442, .03003035, -.08522034, -.07379953, -.35109893, -.44246114, .28372612, -.43854089, -.41203057, .29228106, .25830425, -.10052206, .25764797, .25800666, -.12973689, -.13987802, .12660355, -.13974606, -.16213158, -.35944159, -.44852369, .17236722, -.44487993, -.35447078, -.19235849, -.21056665, .02480166, -.21027986, -.12243657, .3134934, .27464565, -.11503931, .27384613, .28277718, .24534764, .22013787, -.1090143, .21970717, .2358807, .06643198, .06432928, -.03325946, .06431819, .06646095, .67429179, .50146604, -1.718607, .4942113, 1.1604705, -.56591225, -.83989574, .20500954, -.81846328, -.50827735, -.56831985, -.85025465, .22302449, -.82768488, -.52423105, -.53897792, -.75946483, .12838518, -.74478013, -.42094848, -.37473684, -.46835206, .12996716, -.46449282, -.33172037, -.30393718, -.36528954, .1697736, -.36323935, -.31537162, -.72871779, -1.1633648, .07100675, -1.121995, -.42248969, .73993752, .56423112, -.28858573, .55737846, .68113257, -.63001589, -.92832045, .07789064, -.90547362, -.39543286, -.49481042, -.70976714, .34837384, -.69460179, -.55460579, -.12128416, -.12906781, .04379504, -.12898462, -.10881473, -.23925667, -.26926298, .03771911, -.26863752, -.16284453, -.28141339, -.33034739, .11180667, -.3289365, -.26065281, -.58607202, -.8867257, .20466395, -.86188206, -.51998535, .61486753, .49307432, -.12233617, .48909245, .45225426, .03891069, .03825868, -.00637663, .03825686, .02682788, -.07801938, -.08098829, .01887476, -.08096947, -.06124991, -.26574199, -.30695533, .07809122, -.30589447, -.22259609, .55197529, .44772379, -.16106236, .44447072, .46126918, .08014856, .0772757, -.02407156, .07725855, .0676252, .53949228, .43100368, -.42056321, .42740402, .62557192, .31646791, .27733569, -.10418963, .27653203, .27532012, -.38349065, -.49156583, .23031385, -.48655163, -.40764914, -.11154803, -.11815096, .04400122, -.11808586, -.10307172, -.33397972, -.40069318, .07436371, -.39848681, -.25504124, -.34494433, -.41725684, .07966411, -.41474851, -.26664303, -.04882811, -.05004658, .02132962, -.05004152, -.04667858, -.66432154, -1.0115412, .08200189, -.98233962, -.41674478, .52050265, .43235813, -.06925066, .42988738, .33478546, -.74032013, -1.3684431, .24557522, -1.2860082, -.64568081, 1.2339346, .82646407, -.59570105, .80474385, 1.219591, .19545939, .18091742, -.02399317, .18073731, .12238933, .24345009, .2190794, -.08809054, .21867369, .21857126, -.30556093, -.3698442, .21518371, -.36760659, -.34251401, .87359409, .6485596, -.23214682, .63906773, .70762641, -.24616913, -.27982425, .05720681, -.2790599, -.19068431, .56084516, .4533764, -.16931747, .44997509, .47403009, 1.4051818, .92171756, -.41174286, .89495768, 1.175909, -.37948801, -.48217879, .19474988, -.47760011, -.38279633, -.19345345, -.21595798, .11683694, -.21552271, -.20602553, -.13327704, -.14214321, .02763418, -.14204499, -.09938688, -.19513424, -.2178728, .1104413, -.21743226, -.20336498, -.45336283, -.61008216, .20274556, -.60121035, -.43680847, .19905702, .18149646, -.1180615, .18123871, .21071612, .31701275, .27459232, -.24571319, .27365014, .36689121, .21517695, .19551065, -.09133669, .19521163, .20374592, -.31500546, -.37694124, .10656824, -.37492464, -.27654426, -.23886428, -.27613613, .1915309, -.27517089, -.27959136, -.11233747, -.119213, .05476638, -.11914292, -.11139468, -.65407609, -1.0550305, .18964903, -1.0158838, -.54543842, .23118901, .20950059, -.06747548, .20916214, .1932132, -.1629926, -.1762519, .02808787, -.17607234, -.11427771, .79802628, .60927836, -.14947944, .60194532, .57528354, .07555839, .07326083, -.00813483, .07324919, .04528782, -.29706245, -.35368369, .13760561, -.35189589, -.28959244, -.72628919, -1.1778543, .08714156, -1.1331839, -.45132718, -.59367952, -.92112343, .25838665, -.89215596, -.56684989, -.20404943, -.22927129, .1208015, -.2287531, -.21586937, -.52120876, -.75620574, .27790989, -.73902735, -.53249942, .05033043, .04909361, -.02844995, .04908854, .05243134, -.29237643, -.35807637, .47522164, -.35563591, -.43311541, .33116746, .28590579, -.21937196, .28487922, .36372136, -.41170629, -.5238152, .1055138, -.51878584, -.32948685, -.63828799, -.99745234, .15843317, -.965077, -.50540145, -.10852217, -.1145968, .0345321, -.11454016, -.0933462, -.62646586, -1.0304966, .33150961, -.98915117, -.63842073, .29006217, .2571871, -.08128721, .2565679, .23915427, -.20755921, -.23202555, .07356903, -.23154608, -.18507013, -.45843701, -.61452581, .17006626, -.6058187, -.41502013, -.57597609, -.85161759, .16821868, -.83029147, -.481472, .04791798, .04670435, -.05588205, .04669922, .06354769, 1.1140451, .77362432, -.39965379, .75674035, .99733217, .35442451, .30496469, -.16100425, .30381952, .34327192, -.30706359, -.3659546, .11018847, -.36408372, -.2749208, .01808864, .0179398, -.00431744, .0179396, .01413696, -.60604805, -.9519488, .25558281, -.92035188, -.57260955, -.47452351, -.65396514, .23265321, -.64288539, -.47143104, .03411148, .03356251, -.01259434, .03356103, .03083204, -.07142736, -.07441505, .08533555, -.07439423, -.09549114, -.13154852, -.14018265, .02747933, -.14008828, -.09834132, -.62578576, -.88953038, .04548333, -.87145497, -.32903684, -.54757952, -.84248913, .44234536, -.81697698, -.64253278, .1637329, .15304981, -.02654703, .15293374, .11248793, -.4752366, -.63874586, .13538532, -.62953183, -.39397964, .01884909, .01868321, -.00573015, .01868297, .01596831, -.1200169, -.12775865, .04966883, -.12767549, -.11268504, -.55066135, -.76724507, .087634, -.75335539, -.37597354, -.23388905, -.26350406, .04859864, -.26288086, -.17453852, .16733075, .15538363, -.05492886, .15524162, .14543224, -.24782997, -.28972217, .2529601, -.28854769, -.31438602, -.26174758, -.3045396, .12880019, -.30337895, -.26035781, -.71588996, -1.2542213, .20860676, -1.1908268, -.59797584, 1.1727991, .80654265, -.37037706, .7880042, 1.0062528, -.33457229, -.4067131, .12284605, -.40414026, -.30184945, -.00193528, -.00193703, .00053265, -.00193703, -.00158606, -.12463975, -.13330898, .06790085, -.13320858, -.12825455, -.22502702, -.25179013, .04124696, -.25126096, -.16105112, -.43691789, -.58198797, .21613564, -.57409059, -.4353635, -.32437967, -.38294517, .04671202, -.38119255, -.21421767, .0610175, .05930711, -.02091476, .05929912, .05380185, -.52215097, -.72854958, .13774574, -.71524927, -.42192324, -.18028465, -.19698008, .03506657, -.1967228, -.13160738, -.56020464, -.81533228, .16414995, -.79650289, -.46880049, .07701309, .07456865, -.01046854, .07455572, .04989019, -.4750142, -.65555976, .23728386, -.64435686, -.47486533, -.37174818, -.46250316, .11951458, -.45884551, -.32086045, -.14379597, -.15490357, .05053412, -.15476073, -.12785058, -.33433065, -.40662203, .12589755, -.40403667, -.3041818, .43777177, .36727412, -.15315095, .36539361, .3886408, -.42384435, -.54687488, .12396355, -.54099947, -.35446955, 2.3286877, 1.266299, -1.4264423, 1.1912351, 2.4917372, -.10755589, -.116195, .70570879, -.11607948, -.2536927, -.32505471, -.38866237, .08022933, -.38660108, -.2568968, .6430193, .50937731, -.15644778, .50479796, .50576542, -.02916294, -.02958909, .01222266, -.02958805, -.02749705, -.14202469, -.15306323, .0586341, -.1529204, -.13324042, -.49993967, -.67956219, .11535547, -.66900637, -.38633833, .50595567, .41368356, -.21097591, .41090154, .47624373, -.44157422, -.57764708, .12804833, -.57075842, -.36824522, .1977206, .18065707, -.09933826, .18041203, .19803873, -.56356418, -.83113681, .19258517, -.81059027, -.49641687, 1.0006511, .69854209, -.78505558, .68372653, 1.1627828, 1.2057068, .82210315, -.39678269, .80234749, 1.0487904, .24652153, .22211218, -.07101267, .22171024, .20512811, -.04790089, -.04915003, .03641648, -.0491446, -.05508141, .15522884, .14495182, -.04703418, .14483852, .13135989, .07175052, .06957892, -.01177297, .06956797, .04949052, .54797755, .4387557, -.33223197, .43516301, .58434004, -.30887057, -.3727549, .17603496, -.37056818, -.32264677, -.45451581, -.60069191, .13085035, -.59297729, -.37812404, .77121364, .57993385, -.373342, .57215398, .76294884, -.31715249, -.37584449, .06644612, -.37404464, -.23732598, -.02251018, -.02274116, .00426729, -.02274076, -.01629222, .86506483, .64873029, -.166787, .63986126, .62964607, .27920442, .24757064, -.1098991, .24697501, .25780395, -.16780749, -.18289662, .04934262, -.18267082, -.14059125, -.42845453, -.55207963, .10960382, -.54621033, -.3426797, .02776211, .02740527, -.00827402, .0274045, .02336417, .14395688, .13526741, -.03436767, .13518006, .11251617, .3819375, .32415477, -.22152545, .32270561, .40130947, -.20414445, -.23017274, .1519752, -.22962123, -.23310914, -.42852011, -.57253543, .27074448, -.56460271, -.46328049, -.28122228, -.32706559, .07105758, -.32582573, -.22399928, .77587467, .58943555, -.23157891, .58208049, .65328705, -.21408721, -.24228755, .1325768, -.24167033, -.22991095, -.42270633, -.5491531, .15197741, -.54293455, -.37870018, -.32252737, -.39730027, .26610493, -.3944361, -.38112902, .14527998, .13575976, -.07214054, .13565588, .14494625, -.30306188, -.35596113, .06347804, -.35443015, -.22676292, .78586715, .59766323, -.19976323, .59026271, .62721236, -.40255526, -.51028533, .11332277, -.50553393, -.33240387, -.15995616, -.17365697, .04924995, -.17346164, -.13608573, .02366448, .02340901, -.00600155, .02340855, .01887248, -.55138361, -.81593512, .24152275, -.79541699, -.52759246, .26282695, .23557989, -.06906473, .23511023, .21210067, -.46382619, -.63459868, .24090026, -.62432279, -.46974187, -.27765198, -.32380274, .09043777, -.32253025, -.24069134, -.25639371, -.2954045, .09055007, -.2944192, -.22833781, -.7448588, -1.3224353, .17011573, -1.252506, -.57364181, -.64967696, -1.0348946, .17338872, -.99843094, -.52700563, -.56631178, -.92534445, .69228997, -.88918071, -.76291545, 1.1090896, .74963186, -1.0368868, .73079915, 1.3663591, 1.0910584, .74952844, -.68464578, .73220369, 1.1768758, -.42938471, -.55158796, .09903492, -.54586356, -.33177004, -.61135726, -.92674886, .14990638, -.90054882, -.48211068, -.46009899, -.6280147, .24467719, -.61799632, -.4696511, .30668884, .2693635, -.11258485, .26860894, .27667418, .0195704, .01937981, -.01069719, .0193795, .02016042, -.10546512, -.11103137, .02661959, -.11098243, -.08397494, .81530195, .60637084, -.37528177, .59760197, .7931247, -.189364, -.20871692, .05116993, -.2083879, -.15424575, .77752047, .58711835, -.2940486, .57946865, .70842019, .43963306, .37255515, -.07923969, .37085871, .31288481, 1.1103624, .76321561, -.58380289, .74562605, 1.1291247, -.10208709, -.10731007, .0266489, -.10726556, -.08220224, -.29090748, -.33895313, .05949824, -.33763678, -.21594739, -.45835551, -.60551112, .1210955, -.59775789, -.37055639, -.34599044, -.42026402, .09118512, -.41762664, -.27948643, -.0164071, -.01657064, .04143263, -.01657037, -.02815002, .26081024, .23418477, -.06243106, .23373279, .20402967, -.60770311, -.96990944, .30261078, -.93545769, -.6068748, -.55443466, -.79473823, .13854266, -.77782203, -.43998522, .37219421, .32009456, -.11269455, .31888459, .31488892, -.17241024, -.190336, .12382657, -.19002598, -.19453152, -.12420242, -.13145783, .01669931, -.13138724, -.08016712, -.26109642, -.31959136, 1.1518632, -.31742495, -.53952417, -.24023407, -.27136395, .04665643, -.27069363, -.17528182, -.35782071, -.43620289, .07974605, -.43336357, -.27333173, -.26774043, -.31200026, .11632177, -.31078653, -.25548945, -.04456046, -.04549267, .00956196, -.04548942, -.03361182, .49812955, .41154842, -.13410754, .40905847, .40524961, -.3289724, -.39793901, .11643419, -.39554666, -.29318594, -.0815082, -.08483096, .02386864, -.08480839, -.06819513, -.51891927, -.73602425, .19577587, -.72124959, -.47242142, -.21719685, -.24376479, .06774354, -.24322459, -.18558163, .76571451, .58865994, -.15398813, .58193013, .56521932, .4376258, .37165203, -.0715995, .37000322, .3015657, -.25937774, -.292798, .02421402, -.29208242, -.14824752, .0352206, .0346677, -.00775126, .03466626, .02679159, -.16637039, -.18048157, .03326114, -.18028235, -.12256687, -.59109533, -.89118856, .18194713, -.86663372, -.50284031, -.18898344, -.20749119, .03729979, -.20718963, -.1386313, .02497347, .02466619, -.01292686, .02466556, .0252635, -.38914559, -.49490244, .16359863, -.49016719, -.36729185, -.46840968, -.62844631, .14603499, -.61948898, -.40017155, .4877303, .39793513, -.31740591, .39520248, .53251865, .29130866, .25850627, -.07324233, .25789241, .23165036, .22166568, .20114086, -.08244524, .20082472, .20084645, 2.9151703, 1.4835375, -1.2322409, 1.3764449, 2.7564566, -.70920357, -1.2739795, .27735089, -1.2039408, -.6534321, -.32750475, -.39863738, .15298162, -.39608222, -.3201608, -.14402642, -.15481446, .03892847, -.15467992, -.1173259, .38918005, .33111505, -.16254333, .32967869, .36652204, -.21949453, -.24508302, .04323825, -.24458705, -.16090956, .41702782, .35051293, -.20191108, .3487554, .41257864, -.43528291, -.57853342, .21153592, -.57080205, -.43117389, .36872555, .31084288, -.44941036, .30933727, .49624161, .27868132, .24719459, -.10826872, .24660338, .25620223, -.4355134, -.55827797, .08336106, -.55258096, -.31622686, .26096066, .23215072, -.14285506, .23162207, .2689626, -.62632795, -.99641748, .22888971, -.96149863, -.56418295, -.33556505, -.40664182, .10646655, -.4041511, -.28835813, .30085296, .26298602, -.18970776, .26219454, .3250433, -.54939152, -.84099645, .40271441, -.81611374, -.62411367, .38021192, .32812647, -.07458243, .32694241, .2783381, 1.7252034, 1.0676948, -.46538082, 1.0277966, 1.4044503, -.19943526, -.22237773, .08409164, -.2219389, -.18842082, -.23917223, -.27312948, .09523011, -.27232878, -.22168787, -.05133649, -.05276053, .03569616, -.05275394, -.05730176, -.44571787, -.625897, .55096848, -.61403325, -.60268764, .07902772, .07631622, -.01778952, .07630072, .06056909, -.48695547, -.66943809, .17997538, -.65826864, -.44029173, -.5015471, -.69896654, .18581227, -.68629642, -.4538468, -.36894206, -.46120792, .14823186, -.45740031, -.34300145, 1.1919129, .80877467, -.51160041, .78885357, 1.1327915, -.1832353, -.2018709, .06410404, -.20155561, -.16267141, .17691426, .16462548, -.02669745, .16448336, .11867024, -.35743235, -.45470307, .32569601, -.45034197, -.43659295, -.60044702, -.94377322, .27752394, -.91235823, -.5849157, -.16844988, -.185647, .12942661, -.18535495, -.194386, -.51190636, -.69445151, .09151857, -.68380167, -.3633346, -.3966205, -.49924595, .10322674, -.49486679, -.31904909, -.16643226, -.1838773, .17485578, -.18357315, -.2131711, -.42483516, -.54021187, .08073315, -.53504938, -.30773314, .27024082, .2429945, -.04119511, .24253769, .18188317, -.02732081, -.02770222, .01377701, -.02770133, -.02739832, -.64574301, -1.0066211, .139991, -.97429942, -.48874596, -.15692684, -.17371656, .3280044, -.17341778, -.25279474, -.3044152, -.36912754, .23781199, -.36685174, -.35323642, -.34371398, -.42078217, .12841466, -.41792556, -.3118983, 1.6382384, 1.0091422, -.80651337, .97071305, 1.629791, .32333333, .28196211, -.12773934, .28108315, .29891787, -.6486216, -1.1799054, .62609594, -1.1123358, -.80764015, -.05268509, -.05407984, .01937159, -.05407369, -.04755435, -.65649156, -1.0278427, .12953118, -.99420396, -.48152725, -.49644253, -.67568219, .12540798, -.66509895, -.39539488, -.42369386, -.56064885, .23639241, -.5533852, -.43946331, -.31568126, -.37433512, .07090762, -.3725293, -.24177246, -.03604488, -.0367347, .0239648, -.0367325, -.03963665, 1.7779317, 1.0780795, -.6589181, 1.0343903, 1.609029, -.22416269, -.25456814, .11412351, -.25388299, -.22551595, -.29931665, -.34529826, .02814393, -.34412575, -.17148474, -.4639905, -.62394085, .16580432, -.61491038, -.41484068, 1.0202515, .74670774, -.1177282, .73471942, .6258088, .31428151, .27060095, -.40244129, .26959364, .42998839, .43546456, .36427333, -.19055585, .36234588, .41653609, .0530618, .05177225, -.01680511, .05176703, .04556994, .37512674, .32097724, -.14977056, .31968081, .34801997, -.33165414, -.40802138, .2035771, -.40511567, -.35512119, -.27099835, -.31105942, .04712533, -.31007614, -.19057792, .84549607, .63445801, -.19512218, .62582196, .65341125, .52953109, .42744625, -.28889301, .42419612, .5451508, -.35787252, -.44242206, .13101812, -.43912261, -.32255666, 1.565082, .99618567, -.44049465, .96309072, 1.2922551, .01590784, .01579678, -.002703, .01579666, .0111011, -.19789672, -.22062798, .08844495, -.22019384, -.19063095, -.49807721, -.66188378, .07169645, -.65304871, -.32888218, -.51127417, -.70449968, .12768509, -.69257559, -.4056573, .23609158, .21258804, -.10623156, .21219892, .22793701, -.62344177, -.92780618, .09841196, -.903808, -.42451192, -.00219294, -.00219531, .00092301, -.00219531, -.00207061, -.30067078, -.35935201, .14702875, -.35745532, -.29844999, .8594222, .64902826, -.13141685, .64057786, .579026, .12380921, .11709195, -.0402474, .11703125, .10725674, -.10546415, -.11144036, .04804157, -.11138395, -.10223955, .18980596, .17448034, -.06963094, .17427439, .1711922, .33915942, .29019959, -.33561519, .28902735, .42582039, -.47809611, -.63421765, .0954486, -.62585506, -.35205457, .46050232, .37626187, -.46494908, .37371435, .58205811, -.19188464, -.21328153, .09022851, -.21288476, -.18799721, -.14004254, -.15082998, .06105184, -.15069164, -.13378772, -.63847208, -.94753507, .07803487, -.92336221, -.39920948, .95378281, .66766463, -1.0455829, .65371749, 1.2390699, -.20426911, -.22687891, .05168475, -.22646273, -.16277933, -.31442982, -.37939876, .15159173, -.37717711, -.31063543, .54623381, .44410214, -.1547877, .4409466, .45203757, -.21514947, -.24273071, .10401452, -.24214313, -.21274932, -.35426764, -.44264986, .20194656, -.43901117, -.37009209, .82616424, .61806297, -.26609819, .60947213, .71351247, -.22787564, -.25728937, .06914327, -.25665846, -.19292651, -.44612431, -.58219534, .1109507, -.57537538, -.35347384, -.50342186, -.68985899, .12921207, -.67857699, -.40308726, -.40225981, -.52014785, .19960342, -.51446514, -.40123957, .3748698, .32022487, -.16829833, .31890384, .36165147, -.03682105, -.03745628, .0081431, -.03745445, -.02805459, -.11224373, -.11921681, .06233209, -.11914466, -.11623992, .48933125, .40309301, -.1825126, .4005789, .44378871, .50617895, .41662813, -.14577638, .41400756, .42115482, -.68286009, -1.1935643, .29826066, -1.1337193, -.65277444, .26372656, .23429089, -.14764108, .23374485, .27385141, -.30292479, -.35960796, .10358983, -.35785057, -.26689407, -.47864969, -.70247932, .65971775, -.6855383, -.67113194, -.8591855, -1.828234, .17816862, -1.6653902, -.64073487, .63037315, .4976202, -.21686082, .49301243, .5565047, .31491042, .27564262, -.11882244, .27482942, .28670427, -.05953758, -.0612827, .0175488, -.06127418, -.04992138, -.02611477, -.02646331, .01329718, -.02646253, -.02627367, -.03845548, -.03924331, .02589129, -.03924062, -.04246522, -.54115058, -.88743131, 1.0351439, -.85225139, -.84636104, .43871747, .36637039, -.19874796, .36439484, .42452263, -.32518622, -.39204624, .1120159, -.38977106, -.28720455, .08669957, .08301252, -.0657326, .08298639, .0996051, -.52946363, -.7424546, .13539611, -.72849602, -.42341816, -.35463884, -.44294099, .197771, -.43931257, -.36778025, .05956428, .05767069, -.08298128, .05766066, .08381607, .27637345, .24603888, -.08481906, .24548546, .23487602, .10126586, .0965923, -.04171717, .09655637, .09493441, -.20165523, -.22350769, .04867788, -.22311385, -.15819529, -.59301261, -.9032179, .20418431, -.87710891, -.52367286, 1.0002739, .70795258, -.48261024, .69404949, .9884502, .68971676, .53373595, -.26524847, .52793335, .6319385, .26733013, .2406546, -.04028707, .24021194, .17923817, -.09247594, -.09661992, .01933908, -.09658899, -.0691578, 3.1534746, 1.6498702, -.33316187, 1.5398841, 1.8782554, -.03687639, -.03759705, .02397922, -.03759471, -.04025198, .16865744, .15532297, -.14458957, .15514749, .20186421, -.0629505, -.06490254, .01824187, -.06489246, -.05248469, -.04566691, -.04670114, .01568647, -.04669724, -.04029515, -.30024899, -.35187102, .06147214, -.35039921, -.22295839, .44713673, .37417976, -.15072949, .37220829, .39207545, -.38964399, -.48801251, .10174088, -.48391521, -.31377655, -.20806832, -.23193291, .05856947, -.23147779, -.17180576, -.80197519, -1.728815, .33003233, -1.5698303, -.75157003, -.22493557, -.25485809, .09607418, -.25419673, -.2134278, .61567023, .48534926, -.27956948, .48080332, .59621837, .67565472, .53953802, -.07108595, .53501365, .40187205, -.22402695, -.2529698, .07977056, -.25234843, -.20005883, -.58713112, -.87147522, .15294644, -.84922579, -.47243985, -.2097378, -.2336, .05164782, -.23314857, -.16563235, .19383372, .17561329, -.28216284, .17532839, .27677668, -.30775953, -.37072754, .16836223, -.36859513, -.31712652, -.55845233, -.82821557, .22547442, -.80715832, -.5200357, -.48173993, -.65274949, .14501692, -.64281641, -.4067785, -.20631742, -.23034376, .07037134, -.22987856, -.18162092, .01722956, .01709981, -.00284339, .01709964, .01190706, -.50259861, -.71746511, .28297405, -.70253704, -.52288525, -.43860781, -.58692132, .23285178, -.57870299, -.44745987, -.49294772, -.75400097, .94856672, -.73177275, -.77250246, -.2956642, -.34372594, .04664959, -.34242972, -.20129134, .75824791, .56477418, -.63159017, .55668761, .89886803, -.16455147, -.17953845, .06385487, -.1793113, -.15121999, -.06715729, -.06937811, .01888228, -.06936587, -.05543154, -.25611633, -.29248375, .05512596, -.29162611, -.19338386, -.4484982, -.6017206, .20663079, -.59314527, -.43643088, .49001226, .40718898, -.10974037, .40487174, .37491841, .26582446, .23732234, -.09021163, .23681431, .23361146, .06417361, .06214931, -.0424689, .06213867, .07045924, -.7154646, -1.2402209, .19080603, -1.1798076, -.58022904, 1.0394541, .74139814, -.26787516, .7274744, .83340808, -.39417377, -.51589875, .32166883, -.50972365, -.46409278, -.61776147, -.89675706, .0719622, -.8763298, -.38012405, -.43892263, -.58650386, .22408423, -.57837098, -.44198318, -.54239803, -.80619127, .29432686, -.78546692, -.55739795, -.27040424, -.30848465, .03359927, -.30759395, -.17000523, .57419404, .46268639, -.16543964, .45911074, .47781778, -.68581634, -1.135315, .17172741, -1.0886275, -.54462188, -.34139566, -.42360091, .21612927, -.42033238, -.36933448, .0853953, .0824384, -.01043778, .08242134, .05339517, -.21619342, -.2416878, .05326242, -.24118797, -.17075703, -.44157444, -.56401782, .06743461, -.5584264, -.29737668, -.54566286, -.76580672, .10804706, -.75133917, -.40071037, -.04885488, -.05010196, .0258448, -.05009666, -.04978208, -.52937813, -.72281265, .08020824, -.71125816, -.35557154, -.15359523, -.16708456, .0831097, -.16688739, -.15769299, .281392, .25203696, -.04275163, .25152781, .18917717, .32510889, .28270529, -.15110887, .28178711, .31729206, .20049988, .1832802, -.08451732, .18303411, .18940931, -.36695035, -.45313792, .10320753, -.44979389, -.30291352, .24205785, .21883404, -.0590665, .21846343, .19057672, -.09088204, -.09561142, .07783583, -.09557042, -.10873981, -.25150964, -.28558731, .045075, -.28482024, -.17865904, -.00952394, -.00956779, .00330535, -.00956775, -.00843258, .67717919, .51789168, -.51667663, .511736, .77962425, .17864499, .16455835, -.08882114, .16437347, .17831013, -.51061737, -.70687969, .14149135, -.69456938, -.41942118, -.28657751, -.34044444, .1665885, -.33876688, -.30133743, -.28221276, -.33334084, .14577777, -.33180557, -.28529328, -.42132649, -.54541981, .14204046, -.53940876, -.36945356, .44669922, .37958304, -.05846924, .37791122, .28575638, -.51843687, -.7084093, .09629695, -.69703059, -.37268744, .45617133, .38087787, -.14702021, .37882003, .39405273, .07299621, .07070188, -.0146483, .07068986, .05384424, .58596406, .47540614, -.09861585, .47195975, .40760506, .16315184, .15127378, -.08181999, .15112982, .16331439, -.46449785, -.61387484, .10993518, -.60599177, -.36200233, .19590249, .18100889, -.02932253, .18082041, .13105002, .2810031, .24973033, -.08613577, .24915188, .23871438, -.32960657, -.3937932, .06943555, -.39172308, -.24709722, -.10210757, -.10728008, .02449268, -.10723643, -.07993324, 1.2668389, .83885135, -.6987135, .81555408, 1.3089527, -.6118378, -.89520819, .0882217, -.87395637, -.40422764, .28569954, .24990732, -.2725118, .24916265, .35433289, -.23296601, -.2679531, .1772762, -.26708079, -.26797145, -.49168361, -.67846887, .17956065, -.66688454, -.44279652, -.43464789, -.57365231, .18103311, -.56635612, -.40896648, -.49266584, -.69301951, .25528938, -.67975126, -.49856588, -.24159749, -.27477112, .06863202, -.27401445, -.20010005, .57495002, .46345077, -.16091507, .45988025, .473837, -.18558717, -.20350099, .03850485, -.20321329, -.13842476, -.28784884, -.34272358, .17726758, -.34099062, -.30855275, -.42518782, -.57472746, .37366669, -.56611923, -.51312755, .71594311, .55700096, -.15451504, .55119351, .54106893, -.53498212, -.78679833, .27983439, -.76761996, -.54308759, 1.2211648, .81159155, -.83263031, .78944466, 1.3541816, -.39157239, -.50049687, .1798729, -.49550727, -.38066237, -.25771982, -.29547854, .06597874, -.29455997, -.20617842, .08135206, .07857934, -.01324417, .07856359, .05596682, .33362239, .29226352, -.07023612, .29141197, .2500539, -.13737328, -.14905414, .15702344, -.14888882, -.18096712, -.54291883, -.8808448, .8979184, -.84738204, -.80893239, -.01555449, -.0156845, .01329394, -.01568431, -.01859795, -.38549884, -.49459904, .22669162, -.48951636, -.40691516, -.04629879, -.04735416, .01486959, -.04735015, -.03994748, .47226516, .3981615, -.06173938, .3962348, .30198684, .87022528, .64867769, -.20340832, .63943767, .67538907, -.21432724, -.23950269, .05541127, -.23901104, -.17202608, -.64035317, -.9763625, .11206724, -.94799889, -.45128331, .76228245, .56808727, -.59220036, .55998289, .88289726, -.09002458, -.09426775, .03667102, -.09423443, -.08407981, .25452787, .22714058, -.13257364, .22665071, .25801956, .17830097, .16453833, -.07262131, .16436151, .16652029, -.2825473, -.33145422, .10482735, -.33005048, -.25579711, -.06221518, -.06415457, .02096438, -.0641445, -.05454667, -.56131494, -.82533879, .1898616, -.80524424, -.49275017, -.48135059, -.6330343, .07334239, -.62518623, -.32391871, .09367239, .08847607, -.46591083, .08842806, .20145838, .10862107, .10318687, -.05201347, .10314159, .10706758, .33147718, .28637689, -.20703543, .28535854, .35699378, -.30722738, -.36423445, .08729372, -.36248165, -.2544745, -.4464405, -.58938251, .14713627, -.58187114, -.38853097, -.3595744, -.43830994, .0764879, -.43545891, -.2704374, -.47142656, -.64148963, .18875409, -.63145648, -.43777553, .24541312, .2193413, -.15494364, .21888083, .26525674, -.58105231, -.8517778, .13736909, -.83135845, -.45267151, .30260782, .26488207, -.16305991, .26410097, .31025051, .0110551, .01100583, -.00084519, .01100579, .00591159, .55766006, .44579524, -.31282394, .44209253, .5794594, 1.9648421, 1.1338703, -1.1671211, 1.078703, 2.080976, .63151996, .49431858, -.31861049, .48940976, .63341461, -.00529967, -.00531398, .00302975, -.00531397, -.00554172, 1.5962708, 1.0010143, -.58776838, .9655851, 1.441506, .26608829, .23716281, -.10363647, .23664013, .24483004, -.48514944, -.66757355, .18890618, -.65637103, -.44635021, -.6358893, -.99466112, .16524883, -.96224017, -.51126234, -.2331373, -.26443297, .07716899, -.26373501, -.20318834, -.14935425, -.15984336, .01727818, -.1597207, -.0916898, .54322304, .43989854, -.19956951, .43665203, .49018519, -.0810468, -.08489645, .09067803, -.08486599, -.10600702, -.12204413, -.1296683, .03339678, -.12958898, -.09982886, -.67868636, -1.0744986, .11370098, -1.0376058, -.47138687, .19493357, .1792266, -.05507847, .17901596, .16116165, -.51870631, -.74207038, .22827026, -.72644398, -.49709661, -.23973607, -.27482379, .11680039, -.27397107, -.23767328, -.09872373, -.1036863, .03006509, -.10364474, -.08368453, .02495051, .02466855, -.00597504, .02466801, .01952135, .42384999, .36061221, -.08212641, .3590479, .30901465, -.15758965, -.17049964, .03890342, -.17032359, -.12455402, .59322598, .4858421, -.05397439, .48262808, .33616516, -.2563769, -.2964207, .10952121, -.29538267, -.2432738, -.4295476, -.54556631, .07142896, -.5404029, -.29760643, -.21958413, -.24341005, .02487112, -.24298009, -.1338574, -.04369004, -.04461727, .01269149, -.04461399, -.03645602, -.41874456, -.53823887, .12305241, -.5326267, -.35075685, .08686166, .08333116, -.04195716, .08330726, .08586789, -.36585313, -.44874397, .0834805, -.44563985, -.28167148, .11738607, .11131056, -.03890136, .11125819, .1023472, .35560178, .30706947, -.12216902, .30597027, .3137904, -.5001129, -.68949032, .15398961, -.67778162, -.42548656, -.10989825, -.11711279, .11600216, -.11703392, -.14098055, .4155222, .35125894, -.14542226, .3496118, .36893494, .40291287, .34473955, -.08477213, .34334647, .30192688, .50625566, .40947481, -.3731945, .40641881, .57619348, 1.0466268, .73464619, -.45180424, .71952893, .99660106, .26278628, .23239288, -.2228496, .23180878, .31338803, 1.7372719, 1.0744682, -.44852277, 1.0342114, 1.3937451, .16804624, .15619421, -.04693619, .15605505, .13839863, -.53752217, -.76754263, .1661654, -.75154682, -.45791808, .26624036, .23623799, -.15168422, .23567611, .27808191, -.41351894, -.5389088, .19659927, -.53265997, -.40663139, .34152217, .29540574, -.1498275, .29437223, .32695384, -.21282338, -.2392076, .08820191, -.23866394, -.19991662, -.31649299, -.38506154, .19778463, -.38260458, -.34091824, -.31911672, -.37587714, .04794976, -.37420349, -.21374953, -.63312167, -.96191132, .11690475, -.93442706, -.45423316, .43790732, .36528248, -.21563707, .36328821, .435685, -.52274944, -.78805245, .48544747, -.76635138, -.64256904, .43509123, .36497234, -.16228704, .36310054, .39460098, -.18794604, -.20805059, .0773634, -.20769289, -.17614783, -.23528413, -.26922367, .12199881, -.26841067, -.23815349, -.06893757, -.0714488, .03501924, -.07143356, -.06930261, .63560786, .49760006, -.30028077, .49266523, .62370422, -.62637435, -1.0223308, .30532748, -.98255517, -.6210901, -.30282195, -.36667935, .23495172, -.36445139, -.3505859, .50248074, .41563777, -.11690826, .41315421, .38937794, -.28604093, -.33368086, .07229241, -.33236472, -.22785559, -.22829199, -.25807182, .07373359, -.25742632, -.19734475, -.34891329, -.43526124, .21662708, -.43173433, -.37502417, -.22221942, -.24911494, .05207149, -.24857382, -.17260949, .30981925, .26856423, -.27955636, .26765239, .37720032, -.49456353, -.73670042, .63630577, -.71755689, -.67771434, -.26229629, -.30278254, .08375827, -.30174529, -.2258815, -.71632293, -1.2291807, .17229669, -1.1714199, -.56127394, .34154982, .30050952, -.04139624, .29969031, .2129608, .40727218, .34399589, -.17999362, .3423667, .39085788, .29875967, .26253723, -.13319591, .26180772, .28755545, -.45451117, -.60090033, .13199155, -.59316343, -.37921754, -.15765517, -.17200332, .08940932, -.17178602, -.16441562, -.18737951, -.20661345, .05759028, -.20628502, -.15932153, -.54151616, -.75482553, .10101945, -.74112589, -.38983959, .6651935, .49731305, -1.5474206, .49036965, 1.1104818, -.17299421, -.18933473, .05700241, -.18907791, -.15054353, .16132823, .15041734, -.04274356, .15029447, .13054908, .05094474, .04957028, -.06186615, .0495641, .0684795, 1.1153546, .77050647, -.47416692, .75321395, 1.0566449, .53865389, .44629203, -.06102288, .44367111, .32838308, .62185488, .50062682, -.0916739, .49672481, .41388969, 1.9581085, 1.1624729, -.55199188, 1.11142, 1.6176283, -.58435992, -.85176758, .11996326, -.83194145, -.4343232, -.49004157, -.69481161, .30752332, -.68089287, -.52859692, -.51441607, -.68946586, .06744246, -.67970639, -.32925382, -.38732235, -.49348365, .17910101, -.4886905, -.37736161, .14886954, .13826206, -.13712314, .13813622, .18249494, .09452706, .0902796, -.055915, .09024781, .09997472, -.15180546, -.16290956, .02109803, -.16277432, -.09907153, -.33392116, -.4061755, .12774464, -.40358964, -.30541254, .05084907, .04963439, -.02011871, .04962956, .04703257, .61427892, .47335157, -.8091448, .46803555, .84839055, .24274327, .21785063, -.11626167, .21742618, .23928767, .34508271, .29991148, -.09760403, .29892987, .28539611, -.50345497, -.68080084, .09757147, -.67057633, -.36707773, .39094818, .33256386, -.15846872, .33111825, .36453338, -.47564646, -.65682294, .23756413, -.64555746, -.47547366, -.43167621, -.55455928, .09503768, -.54880177, -.32840821, -.25949473, -.29454994, .03433652, -.2937632, -.16660235, -.42367156, -.54572744, .11877438, -.5399414, -.34935781, 2.0599325, 1.2169396, -.42155479, 1.1625164, 1.5294314, .54481395, .43884998, -.2566489, .435447, .53409923, .10119038, .09684596, -.02091624, .09681488, .07538137, -.1659091, -.18089615, .05603981, -.18067085, -.14557575, -.30496663, -.35659426, .04862747, -.35514469, -.20835572, .0622492, .0606153, -.00962284, .06060815, .04209207, -.41547887, -.54296427, .20320623, -.53653718, -.41243448, -.51611985, -.72804946, .18522928, -.71388374, -.46211165, -.06014845, -.06200558, .02530336, -.06199603, -.05678308, -.34475253, -.42606263, .17467911, -.42289495, -.34628097, -.64888003, -1.1024683, .34623735, -1.0524864, -.66309778, -.32206743, -.37928227, .04416306, -.37759727, -.20924781, 1.3792933, .9000614, -.56238908, .87329777, 1.2886254, -.56508561, -.80608492, .10943776, -.78937982, -.41191591, -.31537858, -.39182458, .4253564, -.38876515, -.43901813, .65138603, .51238252, -.19751333, .50749525, .55135895, -.21618638, -.24094113, .04258046, -.24046981, -.15847678, -.37262516, -.45418704, .0573607, -.4512348, -.25161098, .36262864, .31224063, -.12775718, .31107892, .32268579, .57799027, .46468136, -.17640708, .46101422, .49030052, -.5556686, -.82697831, .24725136, -.80558398, -.53448247, -.16644817, -.18401825, .18451181, -.18370976, -.21703881, -.54039333, -.76743451, .14469157, -.75192128, -.43883144, .44948898, .3741224, -.19910448, .37203039, .43170099, -.14057355, -.15093678, .04156937, -.15080958, -.11799679, -.58037643, -.87051895, .19566406, -.84712209, -.5089247, -.6227822, -.95735035, .15617349, -.92847585, -.49480783, -.57804723, -.82733256, .09670195, -.80986804, -.40129519, .78448866, .58944179, -.33672365, .58149008, .74557668, 1.054146, .74435402, -.34479284, .72954213, .91508885, -.34208617, -.40985682, .05801577, -.40763371, -.23856992, .25856674, .23084893, -.11230974, .23035499, .24671615, -.68810825, -1.1657844, .21064479, -1.113482, -.58429398, .62564676, .50140734, -.10983529, .49733552, .44137741, -.42905605, -.57230462, .25804445, -.56446446, -.45630041, -.02524752, -.02554976, .00666823, -.02554916, -.0204092, -.51515661, -.7777138, .55681303, -.75615134, -.66609982, .37998884, .32840472, -.067694, .32724257, .26938533, -.03708866, -.03776797, .01298699, -.0377659, -.03293621, .15859075, .14863505, -.0233522, .14853098, .10551264, .15149813, .14148303, -.05629751, .14137279, .13722859, -.2374756, -.27021291, .08110957, -.26946325, -.20914461, -.16377675, -.17747129, .03366691, -.17728068, -.12178092, -.40330466, -.50351353, .06974952, -.49940434, -.28310393, -.47998837, -.65494177, .17318064, -.64451623, -.43052356, -.5687609, -.80815922, .09701883, -.79177286, -.39741888, -.5474604, -.80926025, .25159329, -.78901937, -.53228573, .36179061, .311102, -.14281246, .30992376, .33437738, .07301298, .07053646, -.03005509, .07052247, .06843045, -.54009147, -.75365861, .10532974, -.73989159, -.39461345, -.07667632, -.07981353, .0401393, -.07979214, -.07785875, -.52343237, -.73890811, .16773808, -.7244704, -.45129543, -.40856945, -.52653791, .16097394, -.52093341, -.37737441, .52423996, .42917274, -.14830522, .42632233, .43359296, -.36437603, -.45830694, .19866664, -.45431343, -.37504627, .06421078, .06229403, -.02512568, .0622845, .05917268, -.17963938, -.19752144, .06356216, -.19722529, -.16008252, .01168468, .01162184, -.00298217, .01162178, .00933825, .01270297, .01262402, -.00567896, .01262394, .01223779, .12822104, .12126438, -.03041667, .12120151, .10000462, .34992171, .30594363, -.05573344, .30502576, .23898054, -.18220258, -.2012022, .08142686, -.20087264, -.17551015, -.51643924, -.73663542, .22456911, -.72137604, -.49295373, -.13668587, -.14635447, .03722035, -.14624059, -.1116227, -.08592909, -.08959026, .02273354, -.08956428, -.06950123, -.29890749, -.35627346, .13731366, -.3544498, -.2905845, -.14127667, -.15344908, .1393806, -.15327452, -.17719756, -.08596702, -.08951136, .01715288, -.08948702, -.06329124, -.17241445, -.19288784, .34314038, -.19248367, -.27324342, -.10304256, -.10825622, .02254455, -.10821227, -.07822909, .23801067, .21452616, -.09067178, .21414079, .21738605, .00781653, .00778987, -.00120038, .00778985, .00527383, .45498075, .37550619, -.29374233, .37320943, .49544356, -.30898377, -.36656602, .08595257, -.36478792, -.25412852, 1.3919557, .93074907, -.23987551, .90608786, .97593806, .90259427, .66739667, -.20993602, .65736604, .69935986, .86892751, .65294884, -.14804341, .64414622, .60691619, -.27612326, -.32454883, .1382021, -.32314074, -.27621687, -.6634974, -1.1259087, .2863091, -1.0750947, -.63170531, -.13891881, -.14945591, .05751103, -.14932285, -.1304471, .56019835, .45185643, -.19152775, .4483963, .49353177, -.64258415, -1.1112944, .44130738, -1.0576033, -.71429411, -.49223171, -.69701834, .28999517, -.68315682, -.51990019, -.06630194, -.06856965, .02792265, -.06855672, -.06261519, .95455463, .69116295, -.30250445, .67929908, .81995077, -.44260523, -.57963155, .12921138, -.5726631, -.36993147, -.57961396, -.8695938, .19844934, -.84619337, -.51088024, .39122666, .33156949, -.20012735, .3300616, .39421315, .08841621, .08509843, -.01697395, .08507768, .06426269, -.26051347, -.3008352, .09023165, -.29979934, -.23050645, -.18984637, -.21023619, .07363499, -.20987196, -.1744374, -.1977214, -.22011883, .08009159, -.21969695, -.18432097, -.59209368, -.86580004, .11361261, -.84531004, -.43027468, 1.0007412, .72745756, -.17853491, .71526918, .70979383, -.19851116, -.22191649, .10527669, -.2214577, -.20244669, -.2998424, -.34861962, .04191862, -.34730313, -.19606843, -.23239053, -.26236909, .05883541, -.26172644, -.18522597, 1.3247754, .90085441, -.20449846, .8789053, .8953679, -.07615355, -.07884554, .01222015, -.07882968, -.05213895, -.35850781, -.43313761, .05580867, -.43056679, -.24298324, -.16909033, -.18442839, .04974666, -.18419685, -.14169151, .25692835, .23019802, -.08599227, .22973564, .22475248, -.48906897, -.65652377, .1046771, -.64713167, -.36858752, -.10909284, -.11484912, .02026746, -.11479852, -.0784285, .0486299, .04746228, -.03015713, .04745761, .05224872, -.52512392, -.76920343, .30500905, -.75083593, -.5520208, -.02634513, -.02675419, .04700672, -.02675313, -.04025906, -.37580779, -.48457198, .31869806, -.47939288, -.44817435, .45408324, .38201788, -.09643806, .38012303, .34133682, .16371874, .15235593, -.04922592, .15222463, .13818902, .01009116, .01004427, -.00255849, .01004423, .00804696, .74603482, .56862893, -.27543584, .56170049, .67430474, -.22530933, -.25282642, .04992479, -.2522678, -.17177826, -.54387407, -.77710046, .15291264, -.76084916, -.44890733, .5275074, .43433477, -.10276098, .43161257, .38527584, -.05335427, -.05465682, .00867738, -.05465152, -.0366932, -.39039911, -.4915102, .11784698, -.48719165, -.32995549, -.18714887, -.20426998, .02362404, -.20400933, -.11828223, .3187253, .27982556, -.08532863, .27903696, .25881291, .12342615, .11646371, -.06042813, .1163983, .1225635, -.57222779, -.84842244, .18480835, -.82687967, -.49464827, .93255535, .67231233, -.42919888, .66046383, .90715035, .45855083, .37478395, -.47297595, .37225421, .58373358, .3395952, .29600141, -.0894222, .29507223, .27424127, .13959118, .13104366, -.05065634, .13095649, .1254469, .03360636, .03312423, -.0049253, .03312307, .02232383, .00180669, .00180514, -.00057417, .00180514, .00155338, -.32231295, -.38924918, .12868142, -.38694878, -.29902015, -.63662885, -1.04481, .28445515, -1.0032658, -.6132047, -.31414915, -.38190875, .20377712, -.37949137, -.34262502, .20454735, .18679783, -.08010264, .18654155, .18854782, -.3243895, -.38470337, .05731274, -.38284517, -.22933565, -.23104776, -.26402797, .13061165, -.26324615, -.24069763, .10205012, .09755886, -.02480805, .09752593, .08024474, -.07631875, -.07914865, .01805655, -.07913117, -.05947152, .27159428, .24281548, -.06699882, .24230851, .21460811, -.26951922, -.31386735, .1067351, -.31265676, -.24936696, -.01261613, -.01268603, .00182045, -.01268596, -.0083372, -.57893745, -.86150815, .17777217, -.83923332, -.49209885, .24501166, .21950425, -.12662078, .21906274, .2477248, .45667656, .37687392, -.28649241, .37456678, .49255363, -.07951973, -.08237394, .00984906, -.08235687, -.04994111, .06942818, .06716607, -.03072466, .06715379, .06665962, .79464256, .59417293, -.37102405, .58588489, .77670941, -.07309122, -.07630684, .10873895, -.07628327, -.10512722, -.27563222, -.31881566, .06273292, -.31769282, -.21202895, .17641173, .1643809, -.02272453, .1642443, .11225178, -.29277417, -.35056993, .19670598, -.34868067, -.32307575, .69660075, .53600357, -.31559827, .52991679, .67407905, 1.0327953, .74571352, -.17910779, .73269197, .72564519, -.39980428, -.49586405, .06023685, -.49205284, -.26803759, -.59287685, -.91220485, .2342961, -.88457847, -.54816084, .27674917, .24756534, -.0547607, .2470537, .20318449, -.17734954, -.19375534, .03964697, -.1935028, -.1356126, .0558028, .05430399, -.02862857, .05429728, .05628343, -.11720558, -.12416229, .03029124, -.12409352, -.09406207, .51045502, .41547288, -.25090773, .4125521, .50755877, .0747963, .07216217, -.03538748, .07214671, .07343109, -.42009588, -.56549866, .37571022, -.5572574, -.50994885, -.57154547, -.8812774, .32309047, -.85432632, -.59541335, -.26265359, -.30331547, .08464909, -.30227065, -.22688528, 1.8542891, 1.1343047, -.36603667, 1.0898937, 1.3603056, .17316308, .16018471, -.06810967, .16002279, .15985141, -.57386658, -.85162255, .1830963, -.82990081, -.4940571, -.27591827, -.31915467, .06229918, -.31803025, -.21168549, -.52559745, -.7623008, .25837044, -.74501665, -.52262852, -.13829099, -.14848161, .04722347, -.14835658, -.12178446, .0830565, .07987642, -.03392164, .07985613, .07763985, 1.2875637, .85976724, -.46793907, .83683432, 1.1576721, -.69746722, -1.1603542, .15792818, -1.1117194, -.53560639, -.20963124, -.23636886, .12325868, -.23580212, -.22126862, -.16887024, -.18536799, .0900327, -.18509983, -.1725224, .02403166, .02376895, -.00595373, .02376847, .01901643, -.48195017, -.63325837, .07103345, -.62545807, -.32074931, .31232972, .27525572, -.07414351, .2745246, .24365571, .1673552, .155558, -.04825875, .15541955, .13930333, -.62837383, -1.0043814, .23556385, -.96848532, -.57085385, .2660056, .23771925, -.08215224, .23721919, .22653935, -.67000496, -1.1240995, .23703154, -1.0754592, -.5970317, .61591255, .48971449, -.18441502, .48544991, .51914435, .03259064, .03199139, -.06210725, .03198955, .050908, -.50043132, -.72604011, .38463098, -.70954942, -.57754754, .18283235, .16856457, -.06639599, .16837925, .16434606, -.15025921, -.16169425, .03152725, -.16154937, -.11249488, -.31241386, -.3780408, .1783969, -.37575979, -.32655723, 1.303822, .86084416, -.60888903, .83660576, 1.2744855, .69195681, .52797272, -.48035167, .5215896, .77193801, 1.261634, .84300644, -.53901197, .82059233, 1.1971955, -.35212988, -.43131017, .10782961, -.42836703, -.29903677, -.27241679, -.32385492, .25784259, -.3222458, -.33699035, .16284675, .15181856, -.04018553, .15169421, .12869232, -.43131531, -.57213497, .21730541, -.56459337, -.43241102, .5068062, .41628461, -.16187428, .41361066, .43647954, -.41792042, -.55391493, .27432955, -.54665519, -.45761114, -.33688825, -.41594368, .20329602, -.41287909, -.35868251, -.59286939, -.87463123, .12900077, -.85297499, -.44927624, -.26509378, -.30409919, .05431984, -.30314626, -.19690761, .110943, .10576846, -.02226059, .10572826, .08183181, -.40357001, -.52012977, .17796044, -.51459058, -.38701733, .55572376, .45209093, -.130598, .44889726, .43207733, .22159764, .20188713, -.0544899, .20159543, .17491435, .51081102, .40964654, -.53803045, .40633965, .65481576, -.20711017, -.23205584, .08816765, -.23155637, -.19629717, .07329426, .07115667, -.00700367, .07114629, .04221809, .1190697, .11262297, -.05389371, .11256483, .11518348, -.02651643, -.02685975, .00900583, -.02685901, -.02330923, .46224268, .38664271, -.11878693, .38459507, .37026522, -.30832079, -.36700403, .10118452, -.36515374, -.26794762, .59328448, .46800323, -.36463604, .4636433, .6355336, -.65286707, -1.0805997, .25421176, -1.0361892, -.60065494, .150074, .1397441, -.09089028, .13962572, .15997525, -.12434117, -.13281068, .0583834, -.13271461, -.12176331, 1.1347334, .78499853, -.39354633, .76751259, 1.004472, .06335567, .06159726, -.01410533, .06158913, .04837951, .04946144, .04837481, -.01150543, .04837083, .03832558, -.50081414, -.73378689, .44749073, -.7162414, -.60774641, -.06709695, -.06921612, .01282192, -.06920497, -.04869258, -.08395361, -.08776157, .04641813, -.0877328, -.08681581, .00709072, .00706405, -.00633969, .00706404, .00860649, -.01384978, -.01393683, .00266246, -.01393674, -.01007085, -.31333024, -.37345682, .09410699, -.37154563, -.26437405, .3459756, .30014247, -.10917801, .29913459, .29676912, .05033621, .04904892, -.04126522, .04904343, .05935515, .27297642, .23839854, -.44293958, .23767122, .40414907, -.22933082, -.27152466, .85380151, -.27023816, -.44782045, -.35040168, -.41739729, .03751391, -.41527542, -.20962909, .28805578, .25385397, -.14204666, .25317931, .28672886, -.65490533, -1.0599143, .19490193, -1.0200478, -.5508936, -.47018372, -.61418078, .07468916, -.60693471, -.32082947, -.47721825, -.63924909, .12138493, -.63023495, -.38095729, 1.3476126, .88016734, -.65872221, .85410151, 1.3374805, -.40137402, -.50502353, .09267038, -.50060927, -.3102343, -.11566665, -.12280419, .04637906, -.12273083, -.10746228, -.64272384, -1.0352977, .21481796, -.99709771, -.56197432, 1.1198415, .78055866, -.33657388, .76386521, .94509292, -.37840693, -.47789095, .16625793, -.47357901, -.36244616, .35985366, .31101251, -.10441355, .30991237, .30015546, -.51498973, -.74001592, .26070601, -.72405173, -.51712166, -.4990457, -.68787284, .15597986, -.67620687, -.42670368, -.36024144, -.4345239, .05036177, -.4319889, -.23556248, .10090429, .09583676, -.09734933, .09579437, .12562056, .10500037, .1005026, -.01522613, .1004705, .06950249, -.55590106, -.80661548, .16621952, -.78828286, -.46834836, .97445552, .71012257, -.20075028, .69840821, .72510918, .07514112, .07271582, -.01493122, .07270277, .05524507, -.47107749, -.65198934, .26838357, -.64065111, -.49202844, .4069781, .35245994, -.03370757, .35124777, .22351148, -.49908369, -.72063411, .36333215, -.70467725, -.56566615, .79057675, .59611118, -.27347639, .58826455, .69921805, .08300378, .07991925, -.02564544, .07990015, .07069879, 1.3209475, .88013486, -.40927206, .85640889, 1.1261711, 1.1385706, .77137101, -.77741171, .75222023, 1.2631851, -.14866611, -.16067507, .05542297, -.16051359, -.13480767, -.44572032, -.58061113, .1066508, -.5739016, -.34863661, 1.2907402, .84279895, -.93782602, .81780937, 1.4619863, 1.0002664, .6747233, -2.5314396, .65760149, 1.7174192, .16224712, .1507751, -.06376113, .15064005, .14973155, -.58306357, -.88826504, .23450017, -.86256129, -.54225262, -.60546947, -.94470352, .2370439, -.91424776, -.55806026, -.04588784, -.04702499, .03300025, -.04702029, -.05179813, -.12428197, -.13234103, .03921224, -.132254, -.1065997, -.25465265, -.29114693, .06175708, -.29027839, -.20008032, -.22189215, -.24960362, .06676593, -.24902841, -.18733672, -.04215724, -.04303719, .01460919, -.04303412, -.03730784, -.46370116, -.61126413, .10478294, -.60355598, -.35584892, -.1524219, -.16487794, .04980965, -.1647085, -.1322755, 1.0631753, .75853504, -.22129347, .74431333, .79384572, .55206403, .44506498, -.22111313, .44164051, .51271318, -.11179798, -.11844282, .04470382, -.11837704, -.10377215, -.28236901, -.3243892, .03560427, -.32335101, -.17839748, -.62694557, -1.1149174, .68460729, -1.0556368, -.81341166, .01335705, .0132603, -.01529862, .01326018, .01760764, .04115702, .04034471, -.01850457, .04034204, .03972516, .01838351, .01821034, -.01302698, .01821006, .02064953, .26479015, .23667301, -.08394001, .23617666, .22747529, .48889433, .4011329, -.22931042, .39852767, .4785874, .5222803, .43058076, -.10359255, .4279173, .38375608, -.30676865, -.3580404, .04235269, -.35661899, -.19976113, -.34268654, -.41891825, .12481144, -.41611461, -.30833737, -.07302125, -.0755844, .01610214, -.07556941, -.05558241, -.53696253, -.74382336, .0957976, -.73081965, -.38085313, -.42031073, -.54401294, .14415932, -.53802518, -.37068461, -.01591942, -.01604737, .00779645, -.0160472, -.01580983, -.0188094, -.01896496, .0026473, -.01896475, -.0123271, .70188734, .54645815, -.17523172, .54079296, .55683413, -.3441711, -.41329873, .06069805, -.41100009, -.2431744, -.04686378, -.0479702, .01831092, -.04796584, -.04316565, -.56945387, -.80345967, .08467915, -.78780703, -.38010874, .82247946, .62664704, -.128373, .61898959, .55793629, .10768572, .10302446, -.01375552, .10299085, .06832942, -.19258597, -.21414592, .09032336, -.21374456, -.18852102, -.32378256, -.40978659, .61736445, -.4060211, -.50585515, .46677348, .39278085, -.07630821, .39083757, .3215668, .05401344, .05258224, -.03271933, .05257593, .05758102, -.22367683, -.25427639, .12370828, -.253581, -.23132554, -.44651825, -.61106296, .32816171, -.6011534, -.5076902, -.48923259, -.68118483, .22278358, -.66890378, -.47422158, -.39463212, -.51350542, .2746272, -.50761948, -.44060843, .65042399, .51832042, -.10674184, .51389442, .44866197, -.48063527, -.6859908, .40332796, -.67173158, -.57118028, .21558589, .1973213, -.04111851, .19706381, .15635173, 1.2116469, .8244019, -.40966174, .80437457, 1.063496, -.29438491, -.36331022, .58922179, -.36064427, -.46742646, -.20520111, -.22818804, .05463765, -.22775983, -.16632613, .35596893, .30277928, -.33753765, .30146157, .44061452, .08897616, .08515727, -.05836642, .08512997, .09740475, 1.4483664, .95547149, -.26974832, .92846127, 1.0421139, .04825085, .04712187, -.02522913, .04711747, .04897571, -.20903291, -.23002077, .02022173, -.2296702, -.12089988, -.5890277, -.89836948, .21952511, -.87223592, -.53406635, -.29072761, -.34975442, .25196987, -.34777063, -.34923443, .31366216, .27510212, -.10497666, .27431477, .27437782, -.49735208, -.65677986, .06244199, -.64839273, -.31377009, -.00493755, -.00495056, .00428246, -.00495055, -.00593265, -.14535234, -.15625504, .03659025, -.15611888, -.11563247, -.5964309, -.90336615, .18057337, -.87792773, -.50458537, -.00992831, -.00998084, .00820446, -.00998079, -.01173843, -.05324062, -.05451998, .00769293, -.05451486, -.03519946, .74723262, .58871995, -.06104652, .58317891, .40850826, .92386917, .66813996, -.41115462, .65658666, .88869357, .4894384, .40733204, -.10135246, .40505181, .36482685, .59609854, .48339414, -.08819533, .47987366, .3972256, -.23882443, -.26915205, .04202611, -.26851201, -.16861733, .40116282, .33785748, -.24326036, .33620229, .42780668, .0479421, .04685654, -.01956438, .04685244, .0448033, .53941314, .43976727, -.14773511, .43672479, .44135249, 3.8526804, 1.8217191, -.75647537, 1.6619172, 2.8213064, -.12455221, -.13244019, .03175268, -.132357, -.09950336, -.52318843, -.72541264, .12008382, -.71265968, -.40359296, .13619695, .12835979, -.03341989, .12828468, .10742943, -.09062037, -.09500845, .04362382, -.09497306, -.08948189, -.22329489, -.25168974, .0727166, -.25108967, -.19355618, .67370954, .53136698, -.13281006, .52641064, .49400967, -.20243394, -.22276238, .02616932, -.22242277, -.12896238, -.27365042, -.32240267, .16586027, -.32096284, -.29177956, -.05991093, -.06182501, .03502458, -.06181482, -.06311584, .07493902, .07205309, -.08161657, .07203458, .09714224, -.57627448, -.84764461, .15470794, -.82696848, -.46838228, .09873071, .09432918, -.03659185, .09429649, .08935242, .27590214, .24526493, -.09739294, .24469949, .24567212, -.38698872, -.49057608, .15557606, -.4860064, -.35985134, -.06259506, -.06461343, .02669906, -.06460259, -.05936567, -.06550517, -.06768315, .02414352, -.06767108, -.05917349, -.55225301, -.80145349, .17567744, -.7832224, -.47497861, -.00714523, -.00717403, .01000028, -.00717401, -.0100699, 1.2602841, .82671822, -.98172356, .80272251, 1.4610061, 1.043912, .73341473, -.44646877, .71840001, .99094516, -.43132456, -.5662489, .16893532, -.55931775, -.39760601, .39438992, .33470387, -.17201905, .33320649, .37683629, -.50414255, -.67732771, .0836691, -.66758313, -.34906041, 1.8470935, 1.1320365, -.35763665, 1.0880446, 1.3463251, .6694033, .51885462, -.3132809, .51328419, .65480684, -.2755584, -.31846568, .06013792, -.31735681, -.20902677, -.53109785, -.70632029, .04370179, -.69684025, -.29104452, -.38016339, -.48416495, .20549193, -.47947802, -.39017112, -.21644843, -.24806102, .26047917, -.24729436, -.29007076, .22464717, .204938, -.04238525, .20465029, .16233627, .18255798, .16745986, -.12147509, .16725206, .20080427, .18834064, .17271266, -.09791501, .17249686, .19080473, -.35425951, -.4428542, .20514244, -.43919807, -.37202848, .21969688, .1999514, -.0650006, .19965615, .18444422, .122713, .11616948, -.03648803, .11611136, .10319386, -.42723475, -.55833711, .1626259, -.5517272, -.39010748, -.02451718, -.02479725, .00557298, -.02479671, -.0188518, -.04687689, -.04802464, .02506269, -.04801996, -.04793563, .05305057, .05167392, -.03107604, .05166797, .05592577, -.31050077, -.37292577, .13922555, -.37084803, -.29942733, .20887052, .1890275, -.17334826, .18871394, .24730596, .12160078, .11432671, -.12128972, .11425424, .15307663, -.4786629, -.6404824, .11557347, -.63151775, -.37553397, .69538074, .5308133, -.45327777, .52441604, .75964948, .07554328, .07283333, -.03894072, .07281713, .07631476, -.16002451, -.17249543, .02306356, -.17233363, -.10570847, .28745241, .25362713, -.13105163, .25296582, .27874138, -.31900993, -.38422716, .12564022, -.38202034, -.29461557, .15846756, .14444768, -.75377929, .14424131, .33577754, .67802328, .53342129, -.14224838, .52834012, .50760066, .32227808, .27988621, -.17800649, .27896053, .33315203, -.689705, -1.2063613, .27705579, -1.1457302, -.64117216, .50862172, .41457705, -.23910062, .41170299, .4982724, -.55756118, -.81008919, .16580611, -.79154937, -.46889096, .6659468, .51830268, -.27094785, .51291508, .6217249, .54504791, .4418793, -.18302942, .43865311, .47731683, -.23168171, -.26098984, .05206213, -.26037367, -.17746463, 1.5564676, .98481622, -.55095472, .95125094, 1.3872094, -.21817516, -.24439497, .05716511, -.24387114, -.1758965, -.11225338, -.1190164, .04839388, -.11894854, -.10684144, .79514812, .59562841, -.34278122, .58742223, .75679984, -.21647274, -.24183736, .0502126, -.24134324, -.16757776, -.35997872, -.44684088, .14337273, -.44338005, -.33369529, .40854687, .34382458, -.21996117, .34212582, .4187485, -.1530492, -.16604881, .06557914, -.16586503, -.14537374, -.14413865, -.15581035, .07238166, -.15565302, -.14434657, -.09408929, -.09840609, .02053462, -.09837309, -.07137273, -.39301475, -.48727188, .06827468, -.48353887, -.27629252, -.24605572, -.28276665, .10912952, -.28185731, -.23641755, -.74467796, -1.2573597, .10835057, -1.2016485, -.49347603, -.4022203, -.52233619, .22385208, -.5164387, -.4168435, .06682166, .06472335, -.02944639, .06471237, .06406668, .57766322, .46671261, -.13758116, .46319305, .45114152, -.01968855, -.01987486, .00607468, -.01987457, -.01676204, -.72534761, -1.3803908, .35614986, -1.2895402, -.72097197, -.39755281, -.50932555, .17015997, -.50415182, -.37747861, .05541468, .0540372, -.01466541, .05403149, .04482545, -.33090587, -.40446483, .16434529, -.40176137, -.33016579, -.0854305, -.08925077, .03581858, -.08922231, -.08056037, -.20923584, -.23549068, .11068174, -.23494313, -.2132027, -.38497634, -.48980343, .18049086, -.48510088, -.37680596, -.55067069, -.77949325, .11744861, -.76402275, -.41452806, .3514565, .30426126, -.11196786, .30320938, .30242813, -.36442407, -.45596798, .1683269, -.45217357, -.35492169, .55862248, .45711991, -.09137459, .45407064, .38491433, .98757975, .71248778, -.26417743, .69998509, .80172117, -.17833263, -.19639535, .07713576, -.196091, -.16992181, -.01980995, -.02000314, .0075547, -.02000282, -.01809969, .01791458, .01776767, -.00452259, .01776747, .01426517, .12051318, .11439804, -.02599857, .11434635, .09106458, -.57040743, -.83976402, .17023686, -.81918687, -.48026911, -.48418655, -.65617892, .13978045, -.64618233, -.40318153, -.41376686, -.53658243, .17206738, -.53058805, -.3891168, -.39736418, -.52230491, .33561927, -.51585445, -.47324363, .789415, .61140354, -.08671464, .60479997, .47633342, -.45273112, -.61077915, .21682458, -.6017464, -.44627895, .04048982, .0397188, -.01513165, .03971635, .03674537, -.63470698, -.9674859, .11984384, -.93941626, -.45877254, .2618683, .2330883, -.13239143, .23256256, .26283624, .19377173, .17770167, -.07757214, .17747988, .17993081, .58723259, .47367768, -.13114675, .47005153, .44888588, .69307845, .53813346, -.219424, .53243351, .59514982, -.57764781, -.86068256, .18440667, -.83828911, -.49740593, -.26782449, -.31198634, .1139541, -.31077833, -.2537972, -.70868634, -1.1711819, .1297819, -1.1233345, -.50704995, .4606641, .38328251, -.16715777, .38113069, .41397594, -.19014589, -.20787589, .02417353, -.20760079, -.12046142, -.37788839, -.4836057, .24762906, -.478736, -.41354195, -.17801827, -.19425086, .03434979, -.19400454, -.12960679, -.48308859, -.65038326, .12323755, -.64089631, -.38601917, .25848821, .23234614, -.06074086, .23190649, .2009698, .11192558, .10615829, -.05454158, .10610878, .11096997, 2.2103467, 1.2399104, -.96744817, 1.1734462, 2.1144277, .54133925, .44631372, -.07756959, .44355424, .35690572, -.32947276, -.39838731, .11327762, -.39600213, -.29080668, -.06956448, -.07214855, .03847715, -.07213256, -.07194534, .34574032, .29872866, -.1467757, .2976678, .32738698, -.36442537, -.44325897, .06336404, -.44043841, -.25626936, -.52417636, -.76654556, .30147977, -.7483973, -.54922168, -.10294317, -.1082127, .02503518, -.10816776, -.08095778, -.44853287, -.60675929, .24784799, -.59762437, -.46373298, .54811133, .43721149, -.40008915, .43350971, .62178672, -.77339733, -1.4128057, .15830115, -1.3308055, -.57425723, .00311698, .00311258, -.00065575, .00311257, .00233568, .16546273, .15367022, -.05901408, .1535303, .14784115, 1.0782845, .74165035, -.72184466, .72461628, 1.1884479, -.14325199, -.15333407, .02454582, -.15321592, -.10024659, -.54106483, -.74855613, .0879214, -.7355701, -.37199839, -.01554362, -.01565892, .00462261, -.01565877, -.01307195, .23435681, .21389756, -.02870592, .21360038, .14663992, -.21589488, -.24409962, .11654564, -.24348735, -.22148122, -.40602043, -.51951841, .13874424, -.51429434, -.35764068, .01460532, .0145034, -.0053337, .01450328, .01315306, .47378981, .39536301, -.11230566, .39321344, .36943187, .17730636, .1633511, -.09257247, .16316828, .17988164, .58137418, .47440216, -.07731488, .4711487, .37388226, -.43695412, -.55995752, .0805111, -.55425701, -.31327025, .62747558, .50448334, -.09127002, .50050337, .41576756, -.37398313, -.47031284, .16050385, -.46622059, -.35541833, -.38488016, -.48811777, .16465811, -.48355422, -.36538837, .16882954, .15590683, -.10322184, .15574218, .18053697, -.05819763, -.05994739, .02620706, -.05993863, -.05620215, -.00378748, -.00379413, .00093389, -.00379412, -.00299233, -.45740353, -.60989175, .15335998, -.60155781, -.40035663, .96274755, .69683538, -.28652439, .68484684, .80985166, .05958472, .05779674, -.04800426, .0577878, .0698543, -.61316876, -.97866302, .28179435, -.94389586, -.59617547, -.21870465, -.24783391, .12138522, -.24718931, -.22644911, 1.2191264, .82944004, -.39078432, .80928401, 1.0512069, .19790549, .18076257, -.1024348, .18051548, .20020015, -.3915342, -.49898009, .16549726, -.49412317, -.37021448, -.05989271, -.06170904, .02243475, -.06169987, -.05439592, -.60835317, -.9374616, .19454908, -.90887105, -.52415159, .93726962, .66527905, -.73159374, .65242844, 1.0872841, -.77961717, -1.3707204, .10873488, -1.3005904, -.50939407, .51118936, .41853336, -.180392, .41575656, .45513157, .10664256, .10189676, -.01941382, .10186158, .07614956, .54394214, .44253993, -.15439524, .43941602, .45039107, -.04468064, -.04568047, .01682746, -.04567674, -.04065329, .42232032, .35761426, -.11465577, .35597103, .3445376, -.11373807, -.12003518, .0216566, -.1199771, -.08244114, -.24970214, -.28577578, .07665105, -.28491036, -.21222549, .14967316, .13887169, -.14929294, .13874192, .18841655, -.04416694, -.04517034, .02105742, -.04516655, -.04347203, .09550975, .09136204, -.03706601, .09133203, .08777425, -.60345573, -.90964065, .15374561, -.88460156, -.4819935, -.39335361, -.4858555, .05967075, -.48226216, -.26431345, .91188654, .67179381, -.22367346, .66145241, .71918731, .0893321, .08542113, -.06841059, .08539261, .10297287, 1.0542231, .74207457, -.38557647, .72704413, .94987954, -.80140281, -1.4468496, .10861552, -1.3659914, -.51865018, -.65661096, -1.0909152, .25248002, -1.045425, -.60157682, .77179132, .59281922, -.15014697, .58599761, .56344143, -.07764923, -.08065276, .02253154, -.08063341, -.06476868, -.06175517, -.06377033, .03294705, -.06375937, -.06310509, .50650259, .41570612, -.16991997, .41301447, .44341725, -.40926117, -.52588389, .14652362, -.52041418, -.36613921, -.45927482, -.61604101, .17002452, -.60727483, -.41549163, 1.0567886, .74734019, -.3202118, .73259505, .89429581, -.11140128, -.11790377, .03960864, -.11784055, -.09943366, -.30337178, -.36215487, .13026612, -.36026837, -.2883615, -.42253305, -.55498618, .20169408, -.54816798, -.41605253, -.25977024, -.30503888, .21535438, -.30373086, -.3074592, .32950947, .28807868, -.09057868, .28721359, .26993794, -.18003178, -.19723229, .04531631, -.19695886, -.14321691, .09805314, .09330175, -.08653726, .09326339, .1185001, -.49089533, -.70725054, .399791, -.69177447, -.57758194, 1.1664585, .8161681, -.21232685, .79907572, .83289675, -.4644781, -.64735139, .34389256, -.63561204, -.52941278, -.41856481, -.55305757, .25163428, -.54596576, -.44508375, 1.1278749, .7967161, -.19805737, .78089615, .79575792, .34566979, .29986766, -.1102072, .29886025, .29752327, -.37267293, -.46647729, .14254855, -.4625815, -.34083917, .24961853, .22378361, -.10251373, .22333903, .23376988, .53624914, .43791335, -.14162413, .43493246, .43347777, .02897433, .02856922, -.01272993, .02856828, .027752, .08015478, .07737286, -.01771104, .07735678, .06105356, -.50476571, -.70753251, .19691235, -.69426216, -.46468738, -.40522231, -.52445365, .19283833, -.51868373, -.39859944, -.30219412, -.35872948, .10546732, -.35697701, -.26806492, -.35942658, -.45131409, .21023945, -.44743922, -.37872287, .26996379, .24234186, -.04851345, .24187193, .19194099, .4646472, .38552663, -.18330676, .38329676, .42935683, -.3275455, -.38444346, .03295657, -.38280459, -.19194278, -.55860279, -.78929956, .10141245, -.77379405, -.39851299, -.05774895, -.05942333, .02039347, -.05941524, -.05142841, -.08416668, -.08876627, .21614889, -.0887244, -.14521823, -.51076446, -.69909851, .11233086, -.6877496, -.38843958, -.50295582, -.68588962, .11774145, -.67501102, -.39054674, -.15478959, -.16820163, .07018808, -.16800822, -.14982776, .23271758, .20738762, -.3068774, .20692933, .32152723, -.37941033, -.46960824, .08548247, -.46606675, -.29087638, -.25435962, -.29035462, .05680228, -.28950863, -.19443034, .06588453, .06368361, -.05917427, .06367135, .08008969, .01837002, .01819873, -.01193611, .01819846, .02004645, -.40509825, -.51115711, .09388126, -.50657893, -.3135041, .39800708, .33995085, -.1050213, .33854642, .32163477, -.07725479, -.08029924, .02749215, -.08027925, -.06897576, -.20637628, -.22811815, .0325346, -.22773717, -.14046399, .08154315, .07840933, -.04072179, .07838927, .08150995, 1.1910859, .80960517, -.48571352, .78983713, 1.1128384, .26456618, .23553114, -.12012076, .23500149, .25619594, .23971249, .21576538, -.09755645, .21536754, .22381495, .12466272, .11807848, -.02929845, .11802056, .09692801, -.04478352, -.04579575, .01802714, -.04579193, -.04166114, .08461206, .08145068, -.02316046, .081431, .06921718, -.11222889, -.11827756, .01927437, -.11822326, -.0785971, .66826592, .5290729, -.11819708, .52429317, .47261967, -.02497361, -.02526647, .00606328, -.0252659, -.01962908, -.18560142, -.20481407, .06635467, -.20448324, -.16596685, -.42062705, -.55511035, .23495048, -.54805336, -.43644907, .37335652, .32316837, -.06983945, .32204863, .26902507, .44395122, .37075775, -.18027585, .36875953, .41420248, -.10149399, -.10627658, .01402168, -.10623904, -.06610539, 1.6776906, 1.0774226, -.19261374, 1.0429959, 1.0273387, -.03187361, -.03248491, .06531512, -.03248296, -.05100766, .06182835, .06003111, -.02647815, .0600224, .05871706, -.48307609, -.64353785, .09701343, -.63479909, -.35642185, -.81096394, -1.6544539, .22537601, -1.5221645, -.66677645, -.4026664, -.51871387, .17880383, -.51321067, -.38704892, -.06926005, -.07178871, .03438955, -.07177333, -.06909936, -.66360562, -1.0288145, .10497055, -.9965726, -.45217429, -.33803354, -.41156213, .11995102, -.40891704, -.30152119, .22568917, .19695072, -2.1495738, .19634307, .60274637, -.10028386, -.10594532, .06968719, -.10589208, -.1119133, -.33326482, -.40322095, .10587404, -.4007912, -.2865054, .01988369, .0196859, -.01143858, .01968557, .02083525, -.17025897, -.1869918, .08834197, -.1867182, -.17237424, .23507155, .21421042, -.03318566, .2139024, .15421509, -.28474643, -.33233788, .07686481, -.33101849, -.2318594, -.58720124, -.87273312, .15584735, -.85030475, -.47544591, -.61495582, -.98260761, .27888785, -.9475382, -.59527248, -.56243197, -.80025237, .10867358, -.78390244, -.40966732, -.14077564, -.15085131, .03234317, -.15073124, -.10863152, -.18260914, -.20079369, .05591265, -.20049242, -.15507021, -.24439112, -.29069365, .62906119, -.28924033, -.42198587, -.73811111, -1.2279392, .10035927, -1.176477, -.47820082, -.50644645, -.72439785, .27553577, -.70915905, -.52090479, -.17399597, -.19079487, .06462178, -.19052501, -.15757806, -.44498495, -.60721357, .31775135, -.59754437, -.5011134, .07172271, .06957196, -.01082252, .06956122, .04810873, .21509852, .19535678, -.09567971, .19505536, .20687511, .02863796, .02827191, -.00613238, .02827113, .02158645, .25546167, .22796332, -.12927557, .22747127, .25648737, -.34061627, -.41792931, .14965998, -.4150289, -.32625373, .77469004, .57754495, -.51279666, .56932591, .85063591, .39144017, .32691917, -.49215888, .32515813, .53229866, .59615035, .45419211, -1.6874646, .4486407, 1.0624914, -.17837085, -.19626745, .07154096, -.19596873, -.16573371, -.1003708, -.10577087, .04640926, -.10572247, -.09778746, -.09795612, -.1029221, .03435635, -.10288016, -.08703623, .09295039, .08865096, -.08461053, .08861783, .11349732, -.4072643, -.54113581, .3577372, -.53391891, -.49141559, .65382402, .50566575, -.41751741, .5001435, .70937429, -.5575895, -.85145524, .34610208, -.82654647, -.59926805, -.10217966, -.10730779, .02252941, -.10726492, -.07777433, -.06366886, -.06577556, .02907765, -.06576394, -.06177525, -.43525928, -.57286957, .16729571, -.56572687, -.39872208, -.49811105, -.67619761, .11554628, -.6657818, -.38560806, .50090974, .40769452, -.29216005, .4048278, .52729857, .86268364, .61965343, -.9182124, .60848892, 1.1097507, -.62052198, -.92951709, .11244186, -.90469252, -.44240917, -.06257593, -.06445174, .01429789, -.06444237, -.04819909, -.34703233, -.42965766, .176219, -.42640866, -.34882494, -.05892985, -.06083489, .04422308, -.06082463, -.0674709, -.24691258, -.28168847, .06957238, -.28087497, -.20394721, -.36903059, -.45514355, .09453386, -.45182378, -.29528907, -.18309023, -.20412071, .16476016, -.20371905, -.22270887, -.44482225, -.61975687, .4830332, -.60853947, -.57604975, -.08058226, -.08362613, .01368654, -.08360697, -.05622561, .20211563, .18364076, -.15093069, .18335982, .23103039, -.26383763, -.30228513, .05257534, -.30135479, -.19416094, .50169006, .41084605, -.20709964, .4081262, .47064499, .85690669, .62910114, -.42150416, .619198, .85224863, -.67448662, -1.1321169, .2257037, -1.0830488, -.58998158, -.24488697, -.28097606, .10361773, -.28009299, -.23163195, -.39807196, -.49524433, .06909688, -.4913284, -.27977175, -.33216003, -.39639229, .06221035, -.39433499, -.2394395, -.38177713, -.48617498, .19811154, -.48147219, -.38653296, -.08027696, -.08357483, .02877727, -.08355226, -.07184896, -.36011292, -.4494137, .1704529, -.4457589, -.35359322, .22393373, .20272089, -.09636476, .20238664, .21300792, .01812136, .01797578, -.00342167, .01797558, .01309834, 1.0445171, .75843336, -.13225875, .74563807, .66083825, -.22269522, -.25013243, .05856105, -.24957055, -.17975744, -.60386461, -.91304686, .15964353, -.88754515, -.48830011, .10351565, .09820456, -.09771299, .09815917, .12793758, .18780321, .17260011, -.07782076, .17239528, .17640484, .39839468, .33369914, -.35895544, .3319591, .48480363, -.56902707, -.872537, .31107061, -.84651874, -.58620782, .52082414, .42577496, -.16874438, .42290727, .45069269, -.27582253, -.32232201, .10543888, -.32102181, -.25221065, .13055037, .12300944, -.04868599, .12293689, .1183941, -.70347537, -1.2040031, .1943892, -1.1479507, -.57729789, .31150776, .27687318, -.03738351, .27623316, .19358986, -.26786344, -.30662368, .04423454, -.30569231, -.18515671, -.10166485, -.10788655, .12161541, -.10782314, -.13597323, -.28141867, -.32648367, .06218693, -.32528622, -.2143606, .12675404, .11969532, -.04304958, .11962985, .11142283, .00564854, .00563403, -.00124235, .00563403, .00429585, .70315729, .55232744, -.11447213, .54699757, .48373952, -.57315138, -.83876186, .14921006, -.81883073, -.46109342, -.32012522, -.38622687, .13072175, -.38396798, -.29923051, .19846144, .18343456, -.02536435, .18324517, .12595111, .40129512, .33990812, -.16938496, .33835163, .37926625, -.22856924, -.25983375, .10393876, -.25912335, -.22145273, -.01674834, -.01690274, .01757409, -.0169025, -.02144283, .451725, .37640179, -.17925774, .37432235, .41823341, -.5069588, -.73016766, .30740562, -.7142168, -.54062448, .14639697, .13762086, -.02806901, .13753324, .10635889, .54156343, .43020691, -.53963023, .42643087, .68151431, -.00369693, -.00370369, .00164843, -.00370369, -.00355845, -.00518422, -.0051979, .00293264, -.0051979, -.00540197, .52562602, .42180305, -.41413477, .41841804, .61165772, -.34805066, -.41861733, .0591539, -.41624897, -.24290294, .19213086, .17635487, -.07498533, .17613929, .17690231, .59949237, .46575827, -.68085713, .4608489, .78804516, -.269149, -.31443131, .12642314, -.31316769, -.26360119, -.08055403, -.08380109, .02383641, -.08377928, -.06763141, -.52710152, -.74389095, .15786241, -.72937786, -.44432329, .23318428, .21130044, -.06324005, .21095881, .19016923, -.347374, -.41668089, .05385617, -.41439143, -.23511844, .73367753, .56669864, -.17585896, .56044855, .57420678, .17500619, .16226928, -.04652948, .16211496, .14178219, .94605452, .68612388, -.30550686, .67446351, .81776358, .50546688, .41903062, -.09826981, .4165844, .36893103, -.18998405, -.20998685, .06278385, -.20963655, -.16548961, .37311908, .31743209, -.22857165, .31605411, .39925383, -.01912069, -.01932781, .02543713, -.01932743, -.02649527, .31556855, .27535671, -.14827811, .27450587, .30909939, .39197774, .33229297, -.19381106, .33078654, .39052046, -.6211055, -.94356796, .13609918, -.91661946, -.47177916, -.39929942, -.51206168, .16883709, -.50681948, -.37759979, -.50640822, -.68089631, .08212162, -.6710497, -.34793357, -.05687068, -.05829852, .00664011, -.05829255, -.03502091, -.14211899, -.15451163, .14617386, -.15433177, -.1807457, -.20880173, -.23566553, .13577928, -.23509118, -.22791726, -.12352715, -.13063606, .01541625, -.13056792, -.07777581, -.43868933, -.59652185, .33072572, -.58723422, -.50304176, -.29153569, -.3398282, .05973137, -.33850118, -.21654026, .13964675, .13118796, -.04536704, .13110264, .12095134, -.03966402, -.04042777, .01176078, -.04042532, -.0333237, .75850883, .58647238, -.12878309, .58005447, .52917993, .15005071, .14060256, -.03747029, .14050349, .11905046, -.68233406, -1.0671377, .09382966, -1.0323789, -.44373267, -.27654892, -.3235601, .10951834, -.32223473, -.25587052, -.28516153, -.33071434, .05497475, -.32950686, -.2075511, -.26369445, -.30841731, .15767347, -.30715932, -.27989612, .3169408, .27673987, -.13613017, .27589314, .30128688, 1.0952246, .78043927, -.18254339, .76570135, .75939459, .13669411, .12921327, -.01984136, .12914508, .0905108, .330727, .28661029, -.16907958, .28563349, .33318605, -.63230002, -.9027777, .04523618, -.88397517, -.33071515, -.52766834, -.77382029, .29878069, -.75523288, -.55000698, -.05007151, -.05137913, .02586399, -.05137344, -.05061769, -.42531462, -.5499931, .12801344, -.54398146, -.35911653, -.1297289, -.13839983, .03563857, -.13830332, -.10625301, -.21443397, -.24183356, .10423078, -.24125174, -.2124244, .46625586, .38202951, -.3615271, .3795137, .53968434, 1.2041013, .79553721, -1.1263728, .7732085, 1.4836999, -.26296011, -.30456318, .09809341, -.30347089, -.23849715, -.31697151, -.37666494, .07536004, -.37480244, -.24740237, -.22314465, -.2540796, .13911348, -.25336724, -.24017293, -.31576921, -.38059817, .14030666, -.37839529, -.30358662, -.35073082, -.4215313, .05400701, -.4191653, -.23685142, -.09403073, -.09858561, .03256135, -.09854885, -.08319374, -.27935476, -.32542194, .08138768, -.3241617, -.23332805, -.62213469, -.92903391, .1052494, -.90459631, -.43351702, -.14938662, -.16149883, .05493428, -.16133536, -.1348442, -.20664992, -.23418287, .19152947, -.23357339, -.25385089, -.26586532, -.30991069, .12496911, -.30870023, -.26044659, -.25807377, -.29778868, .09331687, -.29677423, -.23164662, -.30314598, -.36319764, .15247232, -.36122789, -.30374435, .24775518, .22381456, -.05283603, .22342979, .18649558, -.24843365, -.28577432, .1066353, -.28484257, -.23611157, -.70001612, -1.1721137, .16366661, -1.1217738, -.5433363, -.16368619, -.1785629, .06550496, -.1783379, -.15197638, -.22438792, -.25222303, .0580311, -.25164911, -.18012055, 1.4120916, .91321611, -.61659021, .88493049, 1.3497421, -.08394263, -.08770191, .04174102, -.08767387, -.08378882, .11246524, .10698612, -.0304348, .10694165, .09165279, .73968257, .56947986, -.19038664, .56304099, .59281486, 1.4090884, .91290803, -.5933184, .88485893, 1.3306528, -.2440235, -.28366336, .21559238, -.28259501, -.29501374, -.24924191, -.28846526, .14492164, -.28744088, -.26210086, -.24698227, -.28058286, .05372172, -.27982347, -.18714167, -.45857664, -.62671937, .25786659, -.61664209, -.47688791, -.61800719, -1.0276645, .41359248, -.98467025, -.68107755, -.39285108, -.49992802, .15444424, -.4951199, -.36259282, -.40121812, -.53012827, .35290152, -.52333129, -.48433762, -.54848998, -.78129082, .13547929, -.76522807, -.43359084, -.42025715, -.56786194, .4070682, -.55937626, -.52389284, .34029902, .29960747, -.04043193, .29879914, .21077801, -.80333773, -1.5357323, .16225583, -1.433301, -.59384834, .35708367, .31125712, -.05966209, .31028061, .24779325, -.5847827, -.85951985, .13601524, -.83863343, -.45310849, -.40549831, -.53574142, .32356278, -.52887632, -.473866, -.40787468, -.51196956, .0756231, -.50758728, -.29303038, .0808268, .07791694, -.02345714, .07789948, .06742257, .11103542, .10540773, -.04950461, .10536021, .10687257, -.15895282, -.17356782, .09076858, -.1733442, -.16615013, -.48207555, -.64863346, .1236818, -.63920946, -.38594196, -.41828669, -.54416709, .17141096, -.53793991, -.39144633, -.25512486, -.2982931, .20198933, -.29708165, -.29736372, -.37029916, -.46148307, .13034527, -.45777687, -.32941516, .47744139, .39992459, -.08417699, .39784011, .33730376, -.00934437, -.00938289, .00143207, -.00938286, -.00630035, -.02772804, -.02810658, .0100532, -.02810572, -.02491098, -.10725828, -.11332995, .04162304, -.1132727, -.09856933, -.59832789, -.92792556, .24138858, -.89880156, -.55702549, -.57759115, -.85775157, .17569523, -.83579705, -.4894147, -.33794661, -.40552683, .06817076, -.40328937, -.24971317, -.62978867, -1.0370275, .32123178, -.99525298, -.6339856, -.68597933, -1.1991312, .28782311, -1.1389871, -.64703221, -.49037436, -.67011574, .15054169, -.65934682, -.41678694, .55890967, .45229089, -.16472336, .44893128, .46862216, .32741952, .28625396, -.09524658, .28539446, .27333558, -.35087844, -.43207793, .13403453, -.42897309, -.32076479, 1.5813168, .97846186, -.93921735, .94187025, 1.6747293, -.44018906, -.55989131, .06126661, -.55452844, -.28741589, .06129037, .05954432, -.02349401, .05953603, .05609497, -.46163541, -.60840753, .10801341, -.60074747, -.35840053, -.29875723, -.36047311, .2278336, -.3583632, -.34389686, 1.4552584, .95668254, -.2900742, .92919281, 1.0710419, .53780487, .43727525, -.17474037, .43416999, .46582655, .41170242, .34757772, -.16990823, .34592261, .38619243, -.12477915, -.13336909, .06188318, -.13327062, -.12444064, -.35026659, -.42755531, .09928534, -.42473541, -.28989286, -.49730549, -.6883825, .17444435, -.67640159, -.44188691, -.20168938, -.22264205, .03508153, -.22227998, -.14184854, -.3716121, -.4675208, .17101449, -.46343851, -.36147717, .10483886, .09985598, -.04200895, .09981653, .09738053, -.31658804, -.37002846, .03532148, -.36853229, -.19202272, -.47864818, -.68117839, .39635932, -.66724558, -.5663053, -.62571462, -1.0136703, .28378283, -.97539099, -.60569814, -.43625711, -.56745388, .1219175, -.56096812, -.35935776, -.3768037, -.50466399, .80072945, -.49755497, -.61035434, 1.0621417, .75963392, -.20403967, .74559242, .77215265, .0328903, .03226835, -.07481728, .03226639, .05449908, -.17185771, -.18674733, .03037659, -.18653262, -.12151663, .0236511, .02340173, -.00486029, .02340129, .01758457, -.43862113, -.57065469, .11743041, -.56412149, -.35617482, .46269548, .38383737, -.19158832, .38161295, .43450674, .18951731, .17559938, -.02694152, .17542923, .12461872, -.32747899, -.41462936, .5704933, -.41080661, -.49645796, .25758844, .23049773, -.09449579, .23002404, .23232632, .31758568, .27759082, -.12377705, .2767544, .2922788, -.34218485, -.42648063, .24580193, -.423053, -.38611109, -.4088183, -.51638855, .09005913, -.51172227, -.3110805, -.80521678, -1.4050351, .07860527, -1.335001, -.46712786, -.8546913, -2.0223329, .29883109, -1.7923761, -.75862086, .69311103, .53298743, -.33765129, .52690642, .6871233, 1.1947123, .81219341, -.47164122, .7923775, 1.1042214, -.40009891, -.49501237, .0551297, -.49129354, -.26036552, -.4081933, -.521855, .12978439, -.5166433, -.35101693, -.45795604, -.64026731, .40870837, -.62843877, -.55551659, .08164061, .07866174, -.02459797, .07864363, .06895735, -.04035683, -.04125175, .03510488, -.04124844, -.04853747, .14532344, .13313101, -.87268265, .13296079, .33280197, -.50026008, -.68636627, .13933804, -.67505498, -.41162063, .57392939, .47021874, -.06886095, .46711995, .35664815, -.73827282, -1.4743277, .4215619, -1.3630265, -.77168792, -.58281782, -.84274163, .1075697, -.82393788, -.41808238, -.00065633, -.00065654, .00029299, -.00065654, -.00063199, .75288704, .57253124, -.28254898, .56543741, .68421794, -.29174285, -.34598048, .13379398, -.34430968, -.28345819, -.01213181, -.01219526, .00148818, -.0121952, -.00759473, 1.1875734, .80992775, -.44442331, .79048795, 1.0782412, -.59310681, -.94491404, .35995501, -.91160125, -.63267598, -.49983984, -.69911699, .2045385, -.68616942, -.46754376, -.43655652, -.55970174, .08213568, -.55398313, -.31517198, .06577544, .06384116, -.01799947, .06383169, .0538029, .65614772, .51896186, -.14355175, .51423367, .49813522, -.73470229, -1.2324181, .11317359, -1.1791277, -.4962105, -.45860398, -.61939807, .20045514, -.61016967, -.43850473, -.35747689, -.4564202, .36142831, -.45190998, -.45204607, .56119242, .44767566, -.33020406, .4438875, .59248679, .63886023, .49972097, -.29988187, .49473085, .6255528, .22006193, .19891531, -.12866661, .19857732, .23184367, -.70226265, -1.2038878, .20010291, -1.1475115, -.58222946, .31365132, .27515623, -.10312727, .27437149, .27275073, -.25744216, -.29712234, .09625626, -.29610719, -.23367169, .2909643, .25914074, -.05412012, .25856219, .20926152, 1.448869, .96127786, -.22405255, .93483027, .97981942, -.63537241, -.98650244, .1514761, -.95538216, -.49637542, .06547446, .06338746, -.03991762, .06337638, .06994868, -.45136775, -.59744329, .14350211, -.58968686, -.38813527, -.18090053, -.19645099, .01893559, -.1962285, -.10741448, -.01422981, -.01433352, .00801671, -.0143334, -.01480726, -.28676242, -.33361277, .06176315, -.33234288, -.2165715, -.03810031, -.0389361, .05062011, -.03893305, -.05277198, -.45690859, -.60877016, .15199966, -.60049491, -.39888137, .49643102, .41044933, -.13213891, .4079852, .40233967, -.52586306, -.76036553, .24477965, -.74340229, -.51347213, -.5924395, -.87061468, .12222478, -.8494784, -.44105467, .28472938, .25311973, -.07550306, .25253648, .23047281, -.80915386, -1.5112437, .13010558, -1.4172483, -.5543653, -.34930171, -.42981181, .13533621, -.42674549, -.32083505, .27165529, .24119811, -.1222478, .24063059, .26228239, -.591751, -.94386109, .3716657, -.91042169, -.63848911, .48929003, .40475457, -.1440689, .40233778, .41012004, -.3686661, -.47023772, .27450567, -.46562852, -.42100046, .0078351, .00780773, -.00146312, .00780771, .00564243, 1.2654177, .83530349, -.77888165, .8117597, 1.356198, .39521216, .3377571, -.10694825, .33637183, .32207333, -.49057537, -.67009995, .14870434, -.65936082, -.4151978, -.19877268, -.22288743, .12935537, -.22240111, -.21702475, -.58216871, -.87924513, .21055823, -.85481939, -.52259668, -.2297186, -.25718772, .03643411, -.25664167, -.15666675, -.31661211, -.37751449, .08802402, -.37557404, -.26035269, -.27206636, -.32236391, .22499123, -.32082303, -.32174744, .16440459, .15357079, -.02835786, .15345192, .11530384, .00103929, .0010388, -.00021298, .0010388, .00077199, -.33083111, -.39558536, .06980408, -.39348639, -.24814632, -.12046646, -.12864033, .07287372, -.12854797, -.12836435, -.43725155, -.55670313, .06651499, -.55132732, -.29408356, -.3054157, -.35349905, .02859342, -.35224275, -.17472684, 1.1598261, .80217503, -.33297464, .78428477, .96399688, -.59378871, -.8659557, .10641497, -.84574523, -.42179251, .05247017, .05130234, -.00809786, .051298, .03546024, .70684525, .55549519, -.1072906, .55015624, .47505816, .31151861, .27466035, -.07308972, .27393582, .24207582, -.6991559, -1.3535436, .53619384, -1.2598869, -.80630612, .03458053, .0339866, -.0205769, .0339849, .03664582, .82682948, .60682106, -.56819092, .59724861, .919289, -.10284804, -.10861681, .0539691, -.10856291, -.10451752, -.3197203, -.38921434, .18637731, -.38671619, -.33650213, .97145615, .70037602, -.30919677, .68803492, .83567443, .0025278, .00252482, -.0006883, .00252482, .00206426, .05788055, .05636685, -.01664403, .05636025, .04813392, -.52883627, -.73940217, .1293742, -.7257381, -.41671588, -.39248162, -.48165016, .04845533, -.47830192, -.24622761, -.3925012, -.51354987, .33019403, -.50741698, -.46683176, -.56031347, -.81448204, .16065483, -.79579414, -.46550959, .22330768, .2037657, -.04331321, .20348115, .1628618, 1.2671633, .85776025, -.33976017, .83637302, 1.029491, -.43456787, -.5717868, .1681824, -.56467313, -.39900217, -.24206258, -.28093407, .21175835, -.27989831, -.29168132, -.42873818, -.5629535, .1780476, -.55605376, -.40301091, -.49242361, -.6598997, .09536759, -.65056734, -.35895184, .13989783, .13073676, -.09689245, .13063687, .1559483, .7407564, .55949554, -.42875698, .55221846, .77779296, -.18645751, -.20665062, .09067891, -.2062869, -.18474187, -.55840691, -.85765763, .36963806, -.8318906, -.61315379, .31715448, .27514663, -.21852665, .27422302, .35293281, -.7165565, -1.2868527, .25484644, -1.2161667, -.63964128, .974585, .69060403, -.56893569, .67713489, 1.0262288, -.32192358, -.38577559, .09508929, -.38367856, -.27011937, -.5998119, -.89087792, .13017601, -.86805931, -.45414761, .43858688, .3659991, -.20787794, .3640099, .43084054, -.15953623, -.17482537, .12207043, -.17458157, -.18384551, -.25385373, -.2911425, .07588293, -.29023302, -.21385221, -.39446492, -.49894205, .12492114, -.49438067, -.33876165, .0306346, .03018139, -.01370242, .03018027, .02951779, 1.4738252, .93933028, -.68459262, .90830075, 1.4380855, -.29050831, -.34106826, .08722709, -.33960921, -.24509409, .59850856, .47340936, -.29846146, .46909894, .59797954, 2.4104501, 1.2709452, -2.3575449, 1.1881433, 3.0145935, -.67469976, -1.0052526, .05320747, -.97910221, -.36453668, -.46940231, -.66813162, .46465258, -.65445295, -.58940833, -.27271976, -.32287399, .2127947, -.32134546, -.3163307, -.35825387, -.45985633, .41275096, -.45511323, -.47318753, .18800499, .17256188, -.08955579, .17235077, .18499251, .15566192, .1440027, -.15870237, .14385733, .19739041, -.39539076, -.49323855, .07964831, -.48924201, -.29202489, .59827041, .48136068, -.12866286, .47758885, .4516057, .00012764, .00012763, -.00005284, .00012763, .00011986, -.60613341, -.91044242, .14108794, -.88580433, -.46977018, .14661279, .13790178, -.02540357, .13781558, .10298078, 1.1334289, .79676324, -.22650754, .78050387, .83489861, -.2907386, -.33234446, .02116708, -.33135568, -.15295562, .37710646, .3241227, -.1058066, .32288766, .31104524, -.02883914, -.02924234, .0090557, -.0292414, -.0246967, -.02005801, -.02024287, .00414231, -.02024259, -.01493767, .23177615, .21016051, -.06218017, .20982518, .1883388, .76446302, .58331524, -.21613315, .57626475, .6321519, -.48101958, -.66892298, .24911215, -.65695167, -.48668744, -.04201194, -.04284543, .00963797, -.04284267, -.03240313, .18774025, .17117493, -.18893547, .17093174, .23703879, .74734106, .56677162, -.33648461, .55961035, .72167938, -.6591305, -1.0723949, .19621188, -1.0311942, -.55449721, -.22167818, -.24704873, .03470137, -.24656593, -.15052461, .04388406, .04306384, -.00668581, .04306129, .02953016, -.22977463, -.26124438, .1006082, -.2605284, -.21983112, -.51127357, -.75846885, .45884498, -.73915675, -.62134702, -.19452091, -.21545657, .06160036, -.21508181, -.16705082, .58082574, .4560683, -.53736887, .45165396, .71306875, .28466945, .2499898, -.2065418, .24928803, .32228485, .14022023, .13136471, -.06636631, .13127158, .13767857, -.39441849, -.54777294, 1.1885606, -.53804669, -.71777547, -.2854344, -.33754261, .14041345, -.33596604, -.28389023, -.10232612, -.10792736, .04591567, -.10787629, -.09870094, -.22298031, -.24819432, .03019943, -.24772022, -.14427373, -.49189513, -.65191499, .07435375, -.64337513, -.33013581, .54129734, .44473221, -.09421088, .44188313, .38077428, -.3141839, -.38136968, .19219353, -.37899305, -.33603064, .52910353, .42971918, -.21126421, .42663465, .49088423, -.62464995, -.97954638, .19663399, -.94726566, -.53536996, .75256547, .56658394, -.4322483, .55904583, .78816526, -.55772974, -.84573248, .31387839, -.82178593, -.58015808, .15164157, .14298332, -.01310932, .14290099, .08447903, .0153214, .01520807, -.00617892, .01520793, .01426198, .47089409, .38773578, -.25429813, .38530659, .48314024, -.05675135, -.0582369, .00969293, -.05823042, -.03967155, .11061595, .10520062, -.03643206, .10515646, .09624609, .01416898, .01406766, -.00848756, .01406754, .01504862, -.24161691, -.27095853, .02734499, -.27036622, -.1472496, .01455121, .0144392, -.0134194, .01443906, .01784516, .46859083, .3934604, -.08443875, .39146497, .33346719, -.22719214, -.25977519, .15469994, -.25899916, -.25182697, .15358846, .14319541, -.06368345, .14307831, .1442972, .3556438, .31156832, -.04197952, .31066111, .21980252, .17859891, .16500587, -.0621345, .16483366, .15826084, -.37956082, -.48827711, .27626347, -.48315254, -.43016864, .3731618, .31932929, -.15510458, .31804123, .35087276, -.18786051, -.208419, .0925445, -.20804484, -.18693209, .81327041, .60721746, -.32707028, .59866332, .75633409, -.16706276, -.18441847, .15832612, -.18411855, -.20675084, .94132863, .70605769, -.08417635, .69641767, .53035606, -.33784023, -.41811617, .21561216, -.41496577, -.366473, -.13640498, -.14617173, .04176048, -.14605529, -.11582935, 1.6127625, 1.014966, -.48695071, .97957604, 1.3631761, -.53208943, -.78188964, .28847348, -.76291209, -.54664039, 1.6146371, 1.0290688, -.32997947, .99507393, 1.1982725, -.77581268, -1.3487554, .10245997, -1.2823816, -.49777452, -.49310456, -.7287983, .57941269, -.71058407, -.65558954, .1963589, .18089863, -.0410606, .18069602, .14684262, -.69517518, -1.2632614, .3566579, -1.1911621, -.7011702, -.03665689, -.03735259, .01946688, -.03735039, -.03740066, -.09244805, -.09707926, .04940959, -.09704061, -.09452476, -.31164636, -.3733888, .12230389, -.37136336, -.28747371, -.1985375, -.22173589, .09819529, -.22128522, -.19781926, -.26318965, -.31195439, .29793548, -.31045717, -.34559168, -.34121537, -.41643027, .12159344, -.41368879, -.30478887, -.30756931, -.37637527, .30765907, -.37383066, -.38755074, -.19443444, -.21632326, .08733718, -.21591349, -.18761109, -.54927006, -.77451596, .11179131, -.75947913, -.40707082, -.13259001, -.14222483, .05905857, -.14210826, -.1275787, .13708588, .12851652, -.07184424, .12842731, .13925233, -.12015573, -.12784866, .04628493, -.12776663, -.11015043, -.36949224, -.44524532, .0395459, -.44267477, -.22102804, .70993199, .54609802, -.27478998, .53988256, .6518607, .77662021, .58105767, -.43460627, .5729868, .80633304, -.54946963, -.91417902, 1.0649076, -.87585537, -.86313045, .02407643, .02380893, -.0068007, .02380844, .01990318, .29569801, .25968919, -.1517248, .25896081, .29825962, -.368871, -.46224996, .16047575, -.45835003, -.35215145, .52276536, .42167726, -.33247035, .41844923, .56641164, -.44749152, -.63940798, .72845226, -.62603375, -.66323419, -.65579296, -1.0719928, .2150347, -1.0300301, -.56975833, -.6022482, -.93903725, .24527004, -.90885475, -.56243868, .4680247, .38561959, -.25765354, .38321946, .48328267, .16268144, .15218796, -.02493842, .15207525, .10969622, .19373071, .17705278, -.11399762, .17681387, .20453811, .19253084, .17717772, -.05471559, .17697395, .15948282, -.47507919, -.64150947, .15042388, -.63196539, -.40796816, .30893445, .26958626, -.17485314, .26875407, .3219675, .95742478, .68410067, -.48450958, .67138558, .96127408, -.00020088, -.0002009, .00004746, -.0002009, -.00015646, -.41655101, -.53772901, .14433722, -.5319297, -.36862227, .69049373, .5340279, -.26978312, .52819607, .63599653, -.19829589, -.2207681, .07851276, -.22034462, -.18345627, -.34670537, -.41593531, .05499794, -.41364655, -.23646445, -.37843404, -.47587802, .14570374, -.47173978, -.34686491, -.08398264, -.08753776, .02584999, -.08751269, -.07144248, .76964305, .57764319, -.41079793, .56979036, .78658498, .03622165, .03556509, -.02337097, .03556311, .03943493, -.26755896, -.31635395, .23388636, -.31487911, -.322323, -.01255189, -.0126362, .01056077, -.01263611, -.01492959, -.30845422, -.36666675, .09509106, -.36484664, -.26253288, 1.338161, .87983412, -.56482266, .85457017, 1.2646964, -.33926235, -.41223079, .10806819, -.40963487, -.29192172, -.15645295, -.16877968, .03016566, -.16861799, -.1138772, -.20904858, -.23396862, .0756621, -.23347476, -.18770144, -.44183262, -.59607991, .26353094, -.58726416, -.46858932, .19758775, .18025388, -.11825369, .18000086, .20979167, -.36086085, -.44873655, .14915824, -.44520369, -.33867691, -.02459151, -.02489064, .00947921, -.02489003, -.02254884, -.70225898, -1.1268567, .10123357, -1.0859291, -.46392707, .16521037, .15188618, -.2088498, .15170734, .22506755, 1.1967308, .81044147, -.5290354, .79027901, 1.1486011, .14631725, .13723089, -.03995947, .13713693, .11960433, -.07734385, -.08035544, .02459876, -.0803359, -.06651684, -.64371163, -1.0402404, .22002504, -1.0013503, -.56705903, 1.5524088, .97495273, -.70290097, .94065939, 1.5019153, -.28060654, -.32433074, .05227474, -.32319997, -.20191681, -.40252318, -.52402258, .23730785, -.51799455, -.42524703, .19208406, .17463573, -.21253742, .17437205, .25031258, -.44132255, -.56914823, .0885403, -.56305679, -.32550755, .84461867, .6380791, -.14874639, .62979241, .59648464, .43705352, .37012395, -.08664179, .36842511, .32107677, -.41079452, -.52282583, .10842605, -.51779244, -.33199966, -.09970087, -.10475503, .02981724, -.10471235, -.08400371, -.30064167, -.3554778, .09212965, -.35382014, -.25537356, -.85525691, -1.8855153, .219699, -1.7025483, -.68498925, 1.1113579, .77408623, -.36683635, .7574659, .96769112, -.44689844, -.59398737, .17145775, -.58604801, -.40913654, .20610637, .18756321, -.10950147, .18728566, .21031856, .55131358, .44116271, -.32611823, .43753094, .58308807, -.17439685, -.19111203, .05991796, -.19084547, -.15389391, -.013729, -.0138198, .00449467, -.0138197, -.01192162, -.63042134, -.99667387, .20170184, -.96265864, -.54325102, -.62553683, -.9774335, .18596994, -.9457211, -.52600859, -.28148494, -.3432292, .54867406, -.34098958, -.44301481, .17822118, .16438191, -.07745754, .16420303, .17008687, -.36264389, -.44273912, .075674, -.43981411, -.27100615, -.08051297, -.08340306, .00892393, -.08338577, -.04872733, -.45501394, -.63376352, .40062633, -.6223134, -.54946449, -.18714207, -.20608581, .05220646, -.20576681, -.15406324, .43589437, .36399211, -.20999187, .36202815, .43052495, -.21860384, -.24612779, .07998934, -.24555183, -.19699683, .63163106, .47671587, -1.5831303, .47048265, 1.0809971, .27460516, .2445488, -.08665917, .24400198, .23555228, .01103839, .01098239, -.00276905, .01098235, .00877117, -.46884904, -.63417799, .17350826, -.6246366, -.42410371, -.60840711, -.91799413, .1460026, -.89260785, -.47635023, .27226217, .24193171, -.11211278, .24137013, .25520347, .56206722, .45804978, -.10865281, .45486822, .40946409, 2.2574775, 1.2763903, -.66359112, 1.2097591, 1.8911493, .45320571, .37170034, -.42998167, .36927644, .56107841, .42725895, .36167879, -.10665048, .36001042, .33894174, .00697976, .00695695, -.00202444, .00695693, .00582111, -.70044707, -1.2553482, .30065116, -1.1868559, -.66570401, -.48982143, -.67466904, .17847675, -.66327803, -.4407873, .15351535, .14273853, -.09234347, .14261257, .16327258, -.43391792, -.57738764, .22288376, -.56960922, -.43783237, -.54102287, -.75076049, .0933284, -.73749592, -.37945332, -.63054991, -.95239523, .11130689, -.92592675, -.44565317, -.04260425, -.04347693, .01139051, -.04347395, -.0345801, .26530286, .23776463, -.06493007, .23728936, .20908357, -.51412507, -.72472348, .18861556, -.71067954, -.46371203, .34446129, .29870085, -.11665038, .29769178, .30250484, -.29797033, -.34568092, .03933844, -.3444133, -.19116032, -.60360127, -.9037539, .139343, -.87967138, -.46652166, .40768739, .34950269, -.06766524, .34812523, .28228213, -.37466846, -.4792952, .26222624, -.47448427, -.41911526, -.46921854, -.64741377, .26058549, -.63636552, -.48593351, -.56433279, -.85554398, .2847436, -.83134645, -.56604572, -.08634594, -.09071815, .09333165, -.09068127, -.11164714, -.02003637, -.02024106, .01041608, -.02024071, -.0202982, .59132009, .47419447, -.16713741, .47036531, .48893333, -.46173172, -.5978794, .06874143, -.59127716, -.30832542, -.58402034, -.85039333, .11854149, -.83070586, -.43243294, -.55914576, -.8353297, .24877737, -.8133109, -.53781178, .44547946, .36764891, -.34860404, .36539922, .51721676, -.26127152, -.30681979, .20622582, -.30550317, -.30421857, -.61504732, -.97835053, .26432744, -.9440826, -.58478528, .08355641, .08052772, -.01918686, .08050943, .06446606, -.40578931, -.53826007, .35378452, -.53116637, -.48841614, -.35961484, -.43178716, .04249367, -.42938916, -.22233602, -.38258441, -.47359501, .08030352, -.47001936, -.28646597, .89314566, .66428211, -.18076181, .65467732, .66068395, .27105607, .24028062, -.14248256, .23969994, .2756153, -.40391258, -.50923, .09366305, -.504702, -.31264946, -.23916345, -.27116805, .06147544, -.27045649, -.1915904, -.33892144, -.41893695, .20154034, -.41581661, -.35908452, .15639155, .1463535, -.03254967, .14624621, .11677084, .29300078, .25715597, -.17167031, .2564276, .30890214, -.05759414, -.05909465, .0082698, -.05908813, -.03799799, .4806042, .39766338, -.16403827, .39529483, .42317185, .81670299, .60790134, -.3583561, .59915753, .78191167, .30851868, .27094305, -.10821653, .27018287, .27413354, .57166398, .45582386, -.29121752, .45195147, .57523202, -.4046238, -.53201139, .29259045, -.52542633, -.45757715, -.24679736, -.2798083, .0476481, -.2790747, -.1797155, .79474976, .59957038, -.25654982, .59170708, .68689049, -.20744948, -.23045703, .04637853, -.23003268, -.15863191, .21771334, .19694262, -.13002563, .19661302, .23099877, .78607735, .60277702, -.13957481, .59575277, .55665896, -.61240994, -.96393736, .24113132, -.9316551, -.56553049, -.34004814, -.42724245, .33384104, -.42355466, -.42581097, -.18712246, -.20885844, .15076754, -.20843865, -.21937976, .15013306, .14052878, -.04365754, .14042647, .12531815, -.06555559, -.06780034, .03087027, -.06778753, -.06425841, -.45532588, -.6032533, .13688155, -.59536894, -.38430249, -.47866281, -.62154923, .05551102, -.61453651, -.29409627, .10379618, .0992905, -.01897395, .09925791, .0742193, .27525161, .24445907, -.10746921, .24388656, .25346885, .44000184, .36911396, -.14780521, .36722222, .38536853, -.08764775, -.09186995, .05454247, -.09183606, -.0942791, .39856408, .34084917, -.09559651, .33946304, .3120011, -.28915418, -.34830523, .27694204, -.34630242, -.35910872, -.54668736, -.81965483, .31385788, -.79766835, -.57246249, -.13214671, -.14110555, .03451977, -.14100441, -.10643151, -.05303343, -.0543188, .00855113, -.05431361, -.03636785, .37518581, .32519639, -.06085479, .32409083, .25779383, -.20416909, -.2255121, .0333895, -.22514098, -.14067167, -.73453935, -1.3261482, .21807897, -1.252033, -.6173877, -.51285193, -.69944573, .1009299, -.68834599, -.37584716, -.34356943, -.41990334, .12127341, -.41709935, -.30592024, -.61185903, -1.0170268, .4461753, -.97454363, -.69387209, -.74680096, -1.3323688, .17349841, -1.2607571, -.57842236, .70162212, .55215776, -.10661961, .54691156, .47172752, .52578771, .42595277, -.25362418, .42282123, .51953384, .05380708, .05250817, -.01411749, .05250294, .04339991, .60789505, .48050614, -.27229875, .47610578, .586018, -.03696114, -.03765362, .01627638, -.03765146, -.03542905, .06786725, .06552571, -.06338565, .06551225, .08358221, -.24636214, -.28486146, .15119768, -.28386295, -.26377949, 1.5507848, .96230871, -1.010033, .9267362, 1.6936469, -.64427637, -1.112392, .42573289, -1.0589588, -.70702896, .40112431, .33692308, -.28696759, .33522086, .45200191, .22752738, .20598175, -.08452806, .20564237, .20607853, -.41029188, -.51805874, .08653263, -.51339204, -.30770313, -.3352269, -.40292353, .07774257, -.4006604, -.25949094, -.09823975, -.10297479, .021997, -.10293677, -.07516044, -.45906155, -.6389501, .36820685, -.62745478, -.53738792, .54875732, .4442739, -.18633969, .44098771, .48235339, -.46390271, -.61090183, .10182795, -.60325493, -.352574, -.13586222, -.14521798, .03140487, -.1451107, -.10505292, 1.5325827, .95475011, -.98943472, .92001987, 1.6688667, -.0180165, -.01817654, .00704904, -.01817631, -.01660225, .1074245, .10219496, -.04359798, .10215255, .10020768, .91324351, .66341484, -.38068255, .65225386, .85951881, -.13804802, -.14753983, .02729999, -.14743116, -.10133302, .09347746, .08949071, -.03700553, .08946238, .08647757, -.50931142, -.72863446, .26424161, -.71329046, -.51562347, -.53793659, -.76080839, .13943669, -.74578287, -.43213862, -.25884982, -.29723551, .06959389, -.2962904, -.21049039, .86831329, .63220778, -.52265542, .62172045, .92370391, -.65285423, -1.0173435, .12767231, -.98472881, -.47744101, -.45934698, -.6418679, .39489684, -.63004719, -.55029867, -.23191228, -.26444189, .11144756, -.26368404, -.22886674, .09519918, .09137385, -.01806198, .09134824, .06892137, 1.6758455, 1.0134619, -1.1410758, .97196346, 1.8575371, -.21193295, -.23870482, .10506008, -.23814276, -.21132695, .16828151, .15522648, -.1214123, .1550579, .19016117, .49347086, .40570005, -.19050999, .40311803, .45271365, -.31551801, -.38082435, .14918844, -.37858735, -.30969759, -.30187324, -.37396933, .54845442, -.37112573, -.46409468, -.46016208, -.61586466, .15922752, -.60723147, -.40702703, -.08661744, -.09036911, .02450479, -.09034204, -.07164137, -.25151268, -.28898407, .09061437, -.28805721, -.22548394, -.04191402, -.04290011, .04338401, -.04289625, -.05341863, .08469815, .08157622, -.02018716, .08155704, .06616338, -.31034085, -.37216383, .1313238, -.37012469, -.29355114, -.45803461, -.62017743, .21375366, -.61078472, -.44762402, .49980632, .4166992, -.07721613, .41441121, .33789402, -.56384813, -.81737021, .1460957, -.79888631, -.4528947, -.48061948, -.6559582, .17221889, -.64550075, -.43010171, .14620871, .13680497, -.05692722, .13670426, .13451338, .26422407, .23781698, -.04497363, .23737809, .18449201, -.43463765, -.59962418, .47955395, -.58939942, -.56585791, -.07744555, -.08062791, .03843585, -.08060612, -.07725379, .54920956, .44158076, -.26428657, .43809866, .54224275, -.58678218, -.89783355, .23639882, -.87132354, -.54602146, -.27075858, -.31760637, .14700409, -.31626226, -.27829664, -.62999685, -1.0615455, .40474533, -1.0148667, -.68490373, -.45134316, -.59439733, .12701407, -.58695388, -.37264776, .05554217, .05405862, -.02821365, .05405202, .05583566, -.58017052, -.89710684, .29732825, -.86932041, -.58495954, -.08213309, -.0853622, .0165121, -.08534104, -.06062097, -.17602733, -.19292472, .05629284, -.19265484, -.15166351, 1.8124182, 1.1240987, -.29446015, 1.0824607, 1.2460184, -.46757378, -.61606444, .09686109, -.60832329, -.34857258, -.70077091, -1.2435629, .27604516, -1.1779104, -.64722321, -.1823987, -.20009761, .04608985, -.19981187, -.14528683, .15408466, .14388699, -.0497265, .14377461, .13316156, -.51644298, -.7288862, .18606273, -.71466167, -.46299686, -.14773155, -.15945679, .05062292, -.15930187, -.13024906, .08229583, .07941547, -.01553589, .07939868, .05948041, .69703697, .52883327, -.57770487, .5221705, .8249277, -.04851095, -.04963147, .01148373, -.04962715, -.0378092, .24278042, .21941664, -.05953089, .21904267, .19145493, .671777, .52784301, -.16253492, .52276247, .52740266, -.15617841, -.17052382, .10367119, -.17030455, -.17164982, 1.5544976, .96906503, -.8655973, .93391329, 1.611296, -.28513785, -.3342719, .09440154, -.33286791, -.24852664, -.46089739, -.60530758, .10034894, -.59787735, -.34934169, 1.3867149, .93965444, -.1596063, .91634674, .84986798, .99046183, .70838601, -.35652627, .69529365, .88769888, -.08002395, -.08323765, .02434802, -.08321615, -.06781273, -.40573327, -.51545943, .11362931, -.51056997, -.33445206, -.40648123, -.52178853, .15049556, -.5164044, -.3677434, .66919291, .51936908, -.29608372, .51384969, .64246439, .39119646, .33692167, -.06846835, .33567223, .27569987, -.44122326, -.59962437, .3120213, -.59032278, -.49527189, -.13558433, -.1446097, .02421351, -.14450965, -.09619864, .0099352, .00988846, -.00324443, .00988842, .00862, -.42082174, -.53340542, .07930414, -.52844146, -.30397701, .96329528, .67781139, -.80426813, .66405317, 1.1428342, -.0708706, -.07339878, .02347869, -.07338375, -.06178438, -.32322952, -.4044075, .4388475, -.40104347, -.45094324, -.05908515, -.06087455, .02471536, -.06086552, -.05567385, -.06013292, -.0621644, .05487635, -.06215297, -.07348747, .47440157, .39775455, -.083663, .3957034, .3351855, -.47880308, -.63947157, .11047014, -.63063467, -.36999534, -.39057774, -.49590363, .15135669, -.49122338, -.35876951, .11513068, .10932827, -.03507222, .10927956, .09760194, -.02055911, -.02077991, .01319937, -.02077952, -.02234587, .27033978, .24057006, -.10481223, .24002518, .24836322, -.43174396, -.5558757, .10088222, -.55000281, -.33504185, -.28981713, -.34109702, .09986907, -.33959278, -.25599788, .49827704, .41348828, -.10395794, .41110027, .37234295, -.66452107, -1.0741235, .17103461, -1.033928, -.53257058, .86372263, .64400865, -.21357962, .63485223, .68303999, -.57246645, -.81588755, .09712925, -.79906265, -.39929453, -.25150833, -.28811492, .07642183, -.28723019, -.21303488, 1.1257878, .77787497, -.43700417, .76043632, 1.0346883, .08991045, .08629892, -.02843603, .08627475, .0771803, -.49263698, -.68520543, .20655261, -.67292912, -.46455617, -.09048578, -.09431884, .01431767, -.09429178, -.06166248, .15430815, .14356173, -.08180471, .14343712, .15734829, .97131033, .70646202, -.22186017, .69466674, .74806921, .18003708, .16590468, -.07972372, .16572004, .17289422, -.29781107, -.3528204, .10849739, -.35113661, -.2679849, -.21547121, -.24222419, .08081257, -.24167209, -.19577736, -.42192978, -.54243744, .11643098, -.53677288, -.34609312, .33540017, .29160407, -.11927025, .29065466, .29938467, -.44351758, -.57901057, .11739654, -.57220895, -.35878614, .16268658, .15236957, -.02106035, .15226062, .10368907, .28590306, .25449007, -.06539078, .25391638, .22028996, .23972163, .21592341, -.09129711, .21553052, .21892759, -.06197495, -.06390928, .02185816, -.06389922, -.05516861, -.6571649, -1.0257757, .12369826, -.99264783, -.47451226, -.07585836, -.07859974, .0152187, -.07858323, -.05595061, -.53839137, -.73995489, .08017422, -.727629, -.35954532, -.39484051, -.49202145, .07777106, -.48807333, -.2894435, .12160171, .11546501, -.02293981, .11541343, .08786847, -.33319858, -.42175107, .49249551, -.41787197, -.47820362, .12191667, .11533611, -.04328711, .11527694, .10876894, -.26129947, -.30723369, .21850026, -.30589492, -.3101604, .08817333, .08467038, -.0299148, .0846472, .07748129, .81469793, .60845971, -.31873043, .59990492, .75072737, .40253592, .34314298, -.10928505, .34168986, .32839763, -.47822963, -.66079171, .23024887, -.64941592, -.47224441, -.48937212, -.65862684, .11032834, -.6490406, -.37525963, .04390026, .04301507, -.01346779, .04301209, .03730384, -.51180504, -.71021291, .14550164, -.69766505, -.42400306, .69894703, .54186216, -.21977156, .53605376, .59882051, -.60590729, -.95447584, .26523247, -.92239875, -.57963733, -.28623331, -.33707983, .11342964, -.33558246, -.26489004, -.43329208, -.55524493, .08603306, -.549594, -.31848254, -.34106626, -.41442309, .10358315, -.41181335, -.28884546, -.34568306, -.42566848, .15087844, -.4226105, -.33037293, -.42486998, -.56263495, .23547429, -.5553061, -.43970547, -.75007176, -1.3815232, .21532873, -1.2992251, -.6234178, -.48305465, -.67351797, .25326371, -.6612743, -.49075548, -.4925107, -.6685222, .12619137, -.65823188, -.39412169, .03483665, .03426099, -.0135819, .0342594, .03206425, -.19559532, -.21772783, .08660362, -.21731139, -.18782828, -.35443248, -.43511509, .11098173, -.43207961, -.30323745, -.38942924, -.47511672, .0417335, -.4719991, -.2330544, -.3169427, -.3911817, .32732977, -.38830899, -.40363827, .87763202, .63066908, -.78726522, .61933602, 1.0664127, -.17403822, -.1918899, .10340688, -.1915853, -.18434141, -.6464664, -1.0192215, .15955964, -.9848451, -.51091461, -.65026946, -1.094346, .31035396, -1.0464465, -.6402624, -.60132335, -.96744638, .36099189, -.93192504, -.63911821, -.2453341, -.27893539, .05957132, -.2781709, -.19283876, -.00191244, -.00191422, .00075416, -.00191422, -.00176694, .36734483, .31925054, -.05931416, .31820521, .25202603, .22426428, .20539334, -.02796272, .20512909, .14115942, -.17674076, -.19368182, .05387904, -.19341163, -.1498676, -.13031518, -.13912861, .03784719, -.13902935, -.10873045, -.44782118, -.60051686, .20683888, -.59198702, -.43613788, -.00159905, -.00160024, .00040897, -.00160024, -.00127884, .41485687, .3471336, -.2760776, .34530268, .45633724, -.18260258, -.20092326, .05929216, -.20061747, -.15812979, -.11701754, -.1239598, .03056328, -.1238912, -.09424189, .1495302, .13983215, -.05168332, .13972741, .13221459, .20380671, .18589445, -.09405106, .18563252, .19843132, -.13218807, -.14162562, .0524459, -.14151343, -.1223795, .41633297, .35056555, -.18295125, .34884422, .39879435, -.40341564, -.51561001, .14153119, -.51047173, -.35847803, -.01089955, -.01096055, .00642133, -.0109605, -.01151218, -.27456939, -.31871107, .07790851, -.31753356, -.22732108, -.23174712, -.2617172, .06128696, -.26107315, -.18741697, .71778654, .56038029, -.12906297, .55469721, .51043536, .09040699, .08684762, -.02246169, .08682428, .07160755, -.42823472, -.57659012, .32392831, -.56817405, -.49160265, -.73344797, -1.2893331, .17694924, -1.2234043, -.57527094, .19918849, .18194076, -.09690683, .18169226, .19738052, -.31398027, -.38360774, .24614757, -.38105488, -.36476242, -.43606549, -.55891246, .08221844, -.55321494, -.31504135, -.07099877, -.07359873, .02893663, -.07358286, -.06632234, -.00646293, -.00648357, .00279196, -.00648356, -.00615553, -.51680267, -.73973336, .23720371, -.72411136, -.50226586, -.51801861, -.73542479, .20179385, -.72058524, -.47666092, -.31510981, -.37479678, .08222015, -.3729238, -.25369429, -.29745244, -.35137603, .09614113, -.34975579, -.25719239, -.7350391, -1.336973, .23001115, -1.2604332, -.62873348, .45611517, .38510575, -.07446771, .38327377, .31408632, .50450701, .41745884, -.11098301, .41497349, .3837134, -.54620251, -.77488586, .13042447, -.75931257, -.42693866, .1362107, .12821241, -.04075766, .12813419, .11478555, -.30235082, -.35349385, .05179581, -.35205906, -.21156751, -.3467653, -.43121179, .20520569, -.42781666, -.36680075, -.09358901, -.09788313, .02144084, -.0978503, -.07215069, -.5109863, -.71815973, .1875663, -.70447986, -.46096481, .23676848, .21228508, -.15500948, .21186412, .25902718, .20057903, .18446754, -.04245899, .18425215, .15061107, -.29042894, -.33880521, .06405475, -.33746858, -.22108216, -.61377622, -.96433791, .23168023, -.93229385, -.55887287, 1.9333925, 1.1448055, -.65698359, 1.0940393, 1.6998406, .62427481, .48959503, -.31924866, .4848092, .62898009, -.2687731, -.31553849, .16220444, -.31418928, -.28616825, .1688125, .15653835, -.06146817, .15638978, .15187857, 1.5577789, 1.0099456, -.2602146, .97901267, 1.0809139, .34211411, .29468124, -.19859652, .29359004, .35956814, -.37676295, -.46575044, .08665975, -.46227877, -.29084477, -.04356825, -.04456409, .02476282, -.0445603, -.04546984, .54015646, .43791248, -.1967464, .43471516, .48602505, -.22783589, -.25506306, .03873162, -.25452215, -.15901814, 1.6325194, 1.0312477, -.39506806, .99585434, 1.2817585, -.3395014, -.41625668, .14967692, -.41338841, -.32555372, -.5985588, -.92194884, .22020632, -.8938893, -.54036989, .78260351, .58753605, -.35527209, .57956426, .75780632, .40960714, .34094308, -.41757968, .33903753, .51939942, -.30710287, -.36661182, .11817014, -.36470194, -.28142877, -.17108852, -.18604524, .03381223, -.18582762, -.12555919, .11350844, .10731254, -.08557291, .10725621, .130159, 1.2408357, .7831263, -3.6426137, .75614678, 2.2385007, -.21783895, -.24568367, .09213761, -.24509219, -.20602156, .35676019, .30760557, -.13237542, .30648176, .32299567, -.47339603, -.65544184, .25993722, -.6440178, -.48840777, .99117112, .71254419, -.29305528, .6997705, .83194052, -.26696039, -.30860822, .07857154, -.30752986, -.2237328, -.51142055, -.74194832, .32302645, -.72510054, -.55285106, -.1879375, -.20968483, .14143173, -.20926642, -.21537795, -.33121455, -.40057121, .10942298, -.39816807, -.28848226, -.05952037, -.06115745, .0101589, -.06114995, -.0415977, .2214726, .20056696, -.10145905, .20023871, .21510654, .82994407, .61060408, -.50085881, .60112256, .88365144, .65665325, .50334461, -.59829855, .49746269, .80205973, .39092314, .33477803, -.10168134, .33344053, .31440155, .04051729, .03977174, -.01095703, .03976946, .0330117, .43090563, .35541749, -.46982053, .3532297, .55878161, .54113558, .44306617, -.11419461, .44012757, .40590954, .32541581, .28493424, -.0890398, .28409788, .26617289, .16749253, .15455772, -.12037301, .15439145, .18902388, -.4913407, -.6389941, .04688347, -.63170005, -.28288185, -.17514395, -.19160083, .04955168, -.19134353, -.1448637, .36564359, .31353362, -.15904747, .31230171, .34905261, -.62117094, -.96637706, .18616163, -.93562098, -.52373806, -.08114134, -.08447644, .02653013, -.0844536, -.07042895, .18348311, .1698388, -.03959452, .1696699, .13866039, -.1807133, -.19767585, .03826057, -.19741091, -.13570231, 1.6634134, 1.0265519, -.67645138, .98775055, 1.5527051, -.07647688, -.07923264, .01391425, -.07921609, -.05459884, .11829654, .11159352, -.08867616, .11153026, .1353922, 1.2923946, .8523698, -.67641718, .82824634, 1.312235, -.24728027, -.28598105, .1483619, -.28497583, -.2627708, -.21988658, -.25062573, .16645027, -.24991198, -.252486, -.2755918, -.31879509, .06308192, -.31767107, -.21240064, -.41555938, -.5461046, .23334534, -.53937065, -.4319483, -.46232233, -.63073909, .23301535, -.62070869, -.46355517, 1.0525976, .74403674, -.33602878, .72931862, .90638017, -.27406865, -.32789422, .32204228, -.32614366, -.36437944, .24627717, .22025092, -.14244988, .21979366, .2585315, -.49882646, -.67117749, .09412654, -.66142541, -.36047932, -.757155, -1.2849575, .09964465, -1.2269459, -.48523396, .01601422, .01588458, -.00985738, .01588441, .01716331, -.04840384, -.04964864, .02969185, -.04964331, -.0518174, .7899999, .60188253, -.17742938, .59452606, .60502019, .05872464, .05722597, -.01179111, .05721959, .04332533, .26990213, .23861572, -.18437104, .23801312, .29948732, -.21574816, -.24002871, .03790984, -.23957432, -.1522505, .08911037, .08538963, -.04426576, .08536375, .088917, -.17054948, -.18884314, .17185955, -.18851678, -.21542767, -.42724009, -.5588158, .16613186, -.55215875, -.39289422, -.53907287, -.73960392, .07661012, -.72741674, -.35443535, -.12371115, -.13191876, .04904969, -.13182807, -.11450593, .26584066, .23718158, -.09554028, .23666799, .2381331, -.07193602, -.07471814, .04147278, -.07470021, -.0754331, -.16794376, -.18242318, .03513074, -.1822154, -.12560733, .51446722, .4240492, -.11827354, .42142039, .39707968, .18001221, .16650009, -.05070766, .16633125, .14867427, -.1651066, -.18166399, .13222778, -.18138776, -.19317927, -.4040671, -.50783038, .08478384, -.50343544, -.30251716, -.35656546, -.43438462, .08002697, -.43157594, -.27301194, -.46168852, -.60815213, .10651153, -.60052466, -.35675899, .75767365, .57522385, -.28807777, .56801151, .6915677, .03096169, .03049283, -.01560224, .03049165, .03104241, -.60133479, -.99043463, .46627864, -.95049615, -.69604298, -.70618049, -1.2061333, .18489381, -1.1503995, -.56919525, .24609655, .22195569, -.06527636, .22156185, .19921972, -.52063409, -.77721393, .43550804, -.75680191, -.61805974, -.58453743, -.85844221, .13471332, -.8376708, -.45153186, .12094395, .11458282, -.03583559, .11452709, .10158688, .02002306, .01982647, -.00959622, .01982615, .01974227, .91966288, .6663239, -.39775707, .654931, .87626421, -.38085913, -.4691169, .070183, -.46573763, -.27306344, .05913795, .05757364, -.0155936, .05756674, .04777892, .25105429, .22456662, -.12004839, .22410201, .24734732, .19938372, .18269231, -.06796318, .18245978, .17548003, .18622686, .17193903, -.04823291, .17175657, .14956135, -.41397735, -.53665434, .16968061, -.53067629, -.3874406, .04709547, .0461403, -.00810289, .04613707, .03300218, -.19518562, -.21806268, .11519254, -.21761688, -.20627662, .29378722, .25870416, -.12913736, .25800816, .28143789, .01902191, .0188538, -.00554078, .01885355, .0158868, -.40164753, -.51436671, .15502383, -.50915843, -.36844518, .64695473, .52158013, -.06206705, .51756806, .37314672, .12682621, .12003312, -.02927752, .11997251, .09802287, -.19410383, -.21635595, .101727, -.21593179, -.19717181, -.67811503, -1.0999621, .15124977, -1.0582101, -.51813606, -.46257479, -.60401555, .08429428, -.59690919, -.33041823, -.3608694, -.46488093, .42992296, -.45994804, -.48199247, -.65122871, -1.0610844, .21954844, -1.0200803, -.5710522, -.67258585, -1.1766601, .33936915, -1.1174798, -.67463044, -.08720266, -.09116938, .0350974, -.09113932, -.08111879, -.00509289, -.00510486, .00119871, -.00510485, -.00396178, .45291532, .38054444, -.1065549, .37862873, .35227283, -.08207081, -.08518451, .01227092, -.08516483, -.05488179, -.24891045, -.29268088, .32299783, -.29140477, -.34206236, -.20663337, -.23348496, .1590604, -.23290514, -.23859664, .57358388, .45987294, -.21555813, .45615226, .52151015, .45636142, .37899664, -.20081928, .37682578, .43733853, -.20636515, -.22662807, .01883135, -.22629705, -.11705629, 1.1532973, .79180972, -.44832937, .77345009, 1.0604819, -.54038446, -.75598549, .110033, -.74196735, -.40054645, .34928336, .29803513, -.31908381, .2967882, .42700227, -.40210016, -.5032936, .07752103, -.49909166, -.29266627, -.25093777, -.30070727, .69736222, -.29907283, -.44450176, -.30426825, -.35877733, .07382058, -.35715861, -.2390967, -.14970123, -.16509879, .35249769, -.16483534, -.25092601, .02307411, .02283149, -.00577354, .02283107, .01831923, -.41932088, -.54145072, .13788425, -.53559902, -.36465252, -.34474458, -.42026974, .10748187, -.41753365, -.29452356, -.55799517, -.82395329, .21253264, -.80345531, -.50961105, .12961953, .12247884, -.03238179, .12241332, .10285465, -.33018576, -.39064385, .04471248, -.38880923, -.21362815, .73731356, .54577692, -1.0140553, .53763244, 1.0330754, -.18154748, -.20014871, .07311945, -.19983167, -.16892001, -.42498663, -.55452806, .16297509, -.54803939, -.38901581, -.00600484, -.0060217, .00158229, -.00602169, -.00485035, .61450549, .49157276, -.13907971, .48751452, .47182589, -.04702735, -.04815478, .02034566, -.04815028, -.04481268, -.16008101, -.17544448, .12013535, -.17519914, -.18328495, -.51264618, -.67570017, .04680861, -.66718712, -.29084644, -.22284727, -.24995451, .05288025, -.2494064, -.17382519, .1777406, .16335742, -.12044423, .16316371, .19669641, -.1437142, -.15404958, .02850149, -.15392582, -.10559232, -.24474757, -.28229458, .13943231, -.28133846, -.25562897, -.78642972, -1.4467791, .14614317, -1.3609128, -.56542644, -.19407858, -.21476424, .05819234, -.21439754, -.16366294, -.64387251, -1.048366, .23861404, -1.0079661, -.58269584, .29829784, .26117414, -.17942885, .26040684, .31725428, 1.4900327, .92632316, -1.3171175, .89233917, 1.8016982, .45972549, .37377608, -.61421176, .37112074, .63794284, -.2861039, -.33632444, .1046803, -.33486287, -.25781855, .14937027, .13895727, -.10718929, .13883641, .16848836, .19463101, .17693388, -.19324726, .17666618, .24463719, .79355468, .60572762, -.15788247, .59842521, .58367695, .31042585, .27243172, -.1086875, .27165932, .27566087, .04135138, .04049242, -.02863879, .04048945, .04609512, -.32145068, -.38395426, .08396824, -.38194144, -.25889554, -.73562767, -1.4450777, .39204252, -1.3408506, -.75143789, -.36532791, -.44937262, .09336057, -.44617764, -.29209205, -.39892618, -.50704603, .1318741, -.50221789, -.34752938, -.32060474, -.38784896, .14354275, -.38551527, -.30901795, -.1765428, -.19355136, .05657903, -.19327871, -.15221654, 2.3394378, 1.3473676, -.30483287, 1.2813555, 1.4943016, -.31096282, -.37087833, .10283438, -.36896617, -.27093291, 1.0859783, .75577531, -.45440743, .739474, 1.0233855, .19720267, .18057479, -.07989068, .18034148, .18384447, -.3246465, -.38443762, .0533124, -.38261275, -.22398893, -.35286254, -.44059746, .20400798, -.43699738, -.37036456, -.11130243, -.11825382, .06964829, -.11818152, -.1199453, -.06994831, -.07243064, .02493993, -.07241596, -.06249231, -.07509116, -.0781089, .04074936, -.0780887, -.07716899, 1.166492, .82525978, -.14316975, .80901539, .730379, -.58856584, -.87216233, .14631541, -.850078, -.46626919, -.15170571, -.16421673, .05562899, -.16404499, -.13680806, -.23642523, -.26953091, .09431982, -.26876095, -.21928396, 1.2246902, .82709598, -.48183993, .80623267, 1.1306506, -.31617484, -.37923159, .11402568, -.37714942, -.28354963, .61648186, .48125335, -.43749454, .47636965, .69281042, -.64138809, -1.0544577, .27300116, -1.0122425, -.60787193, .00472718, .00471616, -.00215465, .00471616, .00458357, -.61747777, -.97556422, .23622717, -.94236336, -.56476464, -.31496282, -.3808278, .16217289, -.37854867, -.31805992, -.37219955, -.47069992, .1978299, -.46640289, -.37986085, -.71138226, -1.2460676, .21902671, -1.1831298, -.6052169, 1.0772525, .76792309, -.20551361, .75345346, .78133124, -.1475719, -.15801087, .02016759, -.15788791, -.0957702, -.0727345, -.07519354, .01205448, -.07517969, -.0503369, -.08809982, -.09235631, .05365101, -.09232205, -.09408477, -.18005295, -.19752633, .05116633, -.19724419, -.1491437, -.38072892, -.48875079, .25433663, -.48370594, -.41933091, -.36413263, -.46052622, .23616567, -.45631989, -.39712021, -.68556971, -1.1161577, .14429661, -1.0731609, -.51380279, -.71979819, -1.214295, .14099908, -1.1606648, -.52669103, .13541721, .12781347, -.02750881, .12774236, .1002959, -.19155512, -.21398675, .13296114, -.21355002, -.21368831, -.02946115, -.02991134, .0167019, -.0299102, -.03072075, .07547686, .07294779, -.02053261, .07293367, .06161701, -.18542571, -.20554424, .09615491, -.2051812, -.18769258, -.180983, -.19856682, .04954349, -.19828258, -.1480576, .20548708, .18394425, -.55711593, .18356875, .36100638, .30564407, .27130693, -.04864899, .27066583, .20869495, -.4335402, -.55447739, .08104884, -.5489223, -.31232867, .00480665, .00479632, -.00090624, .00479632, .00347259, -.47371878, -.64231774, .16830858, -.63250006, -.42272619, .78206513, .5938595, -.22169969, .58642411, .64728216, -.24252746, -.29054001, .90449951, -.28896615, -.47386365, .33614965, .29324886, -.09098586, .29233972, .27396164, -.02459471, -.02489137, .00878931, -.02489077, -.02198988, -.32686367, -.40010855, .19120171, -.3973953, -.34441735, .45452702, .38874174, -.03322338, .38716258, .23944057, -.61526369, -.92187408, .12080582, -.89722331, -.45055396, -.32979795, -.40438668, .18921242, -.40159837, -.34526974, .01276038, .01267508, -.01062279, .01267499, .01512395, .67025524, .53061827, -.11573048, .5258223, .47023982, .01231046, .0122366, -.00530102, .01223653, .0117124, -.53343753, -.76247714, .17972208, -.74649829, -.46766284, .79134069, .60363712, -.16613213, .59632443, .59256619, .1153121, .10893029, -.08634822, .10887146, .13193025, -.16037794, -.17487406, .07385238, -.17465601, -.15603712, .9654928, .69826557, -.28863239, .68619382, .81337542, -.06134382, -.06330359, .02897981, -.06329316, -.06019435, .00244078, .00243787, -.00102986, .00243787, .00230651, 1.5691233, .98842673, -.5897572, .95409789, 1.4267213, .04228714, .0414951, -.00917155, .04149263, .0320108, 1.3228095, .90357051, -.17791923, .88205697, .85391732, -.01503735, -.01515156, .00743688, -.01515142, -.01498262, .5965217, .48228649, -.1026045, .4786732, .41797436, .06534403, .06314579, -.06755126, .06313346, .08324506, -.49513241, -.70830816, .33087258, -.693397, -.54539501, -.4677422, -.65885271, .39645944, -.64613953, -.55771709, -.20531295, -.22935246, .07626127, -.22888449, -.18594688, .33563435, .29252514, -.09882365, .29160579, .28132472, .31064422, .27186077, -.1343201, .27105662, .29595966, -.55097263, -.7914575, .15102473, -.77441451, -.45093372, -.55340313, -.78297871, .11190365, -.76748207, -.40924731, -.29572207, -.35195959, .14044925, -.35018791, -.29069594, 1.0988318, .77682481, -.23706795, .76147012, .83033837, -.28297883, -.33497381, .15739575, -.33339057, -.29320878, -.35137446, -.43606491, .17272374, -.43269435, -.34938759, .12066639, .11377046, -.08228424, .11370482, .1338155, -.44701492, -.58502391, .11740855, -.57802441, -.36068209, -.30824166, -.36985169, .14184369, -.36781286, -.29982941, 1.2625632, .85442377, -.35283047, .83309177, 1.0400019, -.61868489, -.94808588, .15795341, -.9198961, -.49449967, .29443171, .26202895, -.05259633, .26143623, .20892234, -.27616623, -.32253796, .10147059, -.32124646, -.24921286, -.40471255, -.5251753, .20886682, -.51927976, -.40900718, .33381072, .28756209, -.23980506, .28649889, .37667168, -.09207871, -.09583497, .0090507, -.09580943, -.05353982, .56006342, .45844305, -.08799057, .45539449, .38075608, -.58850091, -.85505713, .10766838, -.83548634, -.42092444, -.18128359, -.19814108, .03465984, -.19788023, -.13158039, -.31121101, -.37485349, .15347266, -.3726993, -.30978256, -.45361014, -.59288488, .10104785, -.58585906, -.34645023, -.01900502, -.0191797, .00622152, -.01917943, -.01650268, .52994269, .43020798, -.21359841, .42710669, .49320629, -.21196157, -.24338567, .34360046, -.24261218, -.3137131, -.25544256, -.29826036, .18707452, -.29706989, -.29009732, -.48657066, -.68175257, .26214621, -.66899595, -.49883296, -.42367461, -.53713506, .07560392, -.53212753, -.30052439, .98389218, .71258108, -.23523613, .70036802, .76938376, .47483615, .39254505, -.18996527, .39018529, .44082267, -.1376024, -.14743101, .03818127, -.14731411, -.11307783, .21915281, .19975787, -.05652117, .19947229, .17575664, -.34172702, -.41941311, .14731614, -.41649423, -.32524677, -.49610192, -.67810347, .13786304, -.66718982, -.40788702, -.16061155, -.17489035, .0640399, -.17467908, -.14894002, -.035485, -.03613234, .01785704, -.03613037, -.03556119, -.10011507, -.10571042, .0649818, -.10565833, -.1092128, -.04909337, -.05051213, .07267563, -.0505053, -.07049444, -.54435295, -.76508557, .11316441, -.7505084, -.4062877, -.11677946, -.12383066, .03591921, -.12375975, -.09931844, -.65726608, -1.0940232, .25523702, -1.0480806, -.60416009, -.29905577, -.35263585, .08481753, -.35104457, -.24755593, -.19437406, -.21352226, .03118789, -.21320842, -.13307532, -.27081395, -.31241964, .06270018, -.31135865, -.20951427, .15849984, .14778562, -.04899389, .14766503, .13502366, -.26566333, -.30965233, .12526537, -.30844405, -.26052021, -.68532103, -1.1922166, .27796429, -1.1334119, -.63914938, -.10471729, -.11043262, .03724848, -.11038066, -.09348138, .00803161, .00800338, -.00126996, .00800336, .00547195, -.07886452, -.08222875, .04562021, -.08220484, -.08279108, -.67807343, -1.1186664, .18148905, -1.0732677, -.55056841, -.17595583, -.19625729, .2342868, -.19586783, -.24389059, -.18978248, -.21062799, .08775934, -.21024721, -.18490353, -.23427545, -.27119856, .24041235, -.27023282, -.29772373, .08337657, .07982728, -.09072793, .07980211, .10804874, -.61638855, -.95161513, .17947302, -.92234774, -.51472994, .20711321, .18931154, -.06572243, .18905694, .17798623, -.3158705, -.38265762, .17068702, -.3803213, -.32415263, -.13189491, -.140452, .0244726, -.14035955, -.09478117, -.16764576, -.18354498, .07563673, -.18329408, -.16200035, -.74333211, -1.3062087, .15845589, -1.2395043, -.55945873, -.04221584, -.04305493, .009424, -.04305215, -.03226552, -.72568875, -1.1692499, .08157792, -1.1260602, -.44126669, 1.77338, 1.061003, -.98213706, 1.0157412, 1.8348557, .36294902, .31489956, -.07387521, .31384364, .26899239, -.16160544, -.17445902, .02511073, -.17428883, -.10946294, -.70185702, -1.1708789, .15445141, -1.1212862, -.53387517, .52140835, .42384374, -.22667406, .42082704, .49765602, -.59259514, -.90874925, .2250736, -.88164116, -.54070067, -.40948553, -.52396608, .12972269, -.51869615, -.35170161, .20816448, .18841311, -.17581014, .18810139, .24791095, .20215826, .18342302, -.17387828, .18313418, .24222526, .11115793, .10565635, -.03894939, .10561099, .09873486, -.04123664, -.04213836, .02615007, -.04213508, -.04463647, -.50670895, -.6690676, .05365911, -.66052978, -.30203936, .15720202, .14634125, -.0650782, .14621632, .14761391, -.1834838, -.20188296, .05681243, -.20157602, -.15639502, .44790692, .37157338, -.24828478, .36942029, .46357344, -.49986366, -.69590579, .18716349, -.68336807, -.45392568, .03891738, .03824744, -.00816765, .03824552, .02913878, -.55877496, -.7915482, .10588122, -.77577269, -.40436565, -.39515345, -.48937289, .06294872, -.48566269, -.26988753, .90903762, .66431873, -.31404331, .65355199, .80363915, .23699414, .21462184, -.05905524, .21427054, .1878976, -.22644866, -.25608388, .08060168, -.25543944, -.20219537, -.51409536, -.72513605, .19086976, -.71103345, -.4655341, -.09390425, -.09808598, .01622865, -.09805496, -.06590135, -.18293775, -.20044297, .04035424, -.20016426, -.13926499, .30686752, .26943475, -.11489929, .26867629, .2786654, .25941202, .23225778, -.08495427, .2317852, .22528476, -.29289941, -.33915755, .04087848, -.33794516, -.19141997, -.55640335, -.82344801, .22498141, -.80273028, -.51838453, -.23501333, -.26804386, .10169991, -.2672728, -.22396416, .80660885, .61166026, -.18348059, .60392645, .62036702, .63597057, .50273699, -.1890479, .49813604, .53475965, -.17831489, -.19376152, .02258637, -.19353881, -.11282809, .15788542, .14683688, -.07146351, .14670816, .15273297, .31437664, .27629039, -.08785822, .27552393, .25896295, -.02119928, -.02142054, .00801789, -.02142015, -.01931572, -.213974, -.24075384, .0907402, -.24019679, -.20254301, .57300032, .4618039, -.16673832, .45824071, .4784006, -.69990914, -1.2024454, .20969585, -1.1456999, -.59006663, -.43663688, -.57937163, .19843595, -.5717182, -.42295782, -.6999281, -1.1796357, .17473638, -1.1277224, -.55527322, -.33628019, -.40642213, .0943844, -.40400116, -.27740286, .09676137, .09286071, -.01635389, .09283451, .0674039, 1.8018275, 1.1002365, -.48487958, 1.0568529, 1.4656494, -.1943912, -.21310284, .02600456, -.21280316, -.12525957, -.17430367, -.19142964, .07306846, -.19114968, -.16435806, .26648034, .23882517, -.0625431, .23834798, .20709992, -.08958401, -.0935379, .02193978, -.09350883, -.07061675, -.39875508, -.51947359, .26043558, -.513467, -.43589403, .51016929, .41311266, -.33056636, .4100625, .55621038, -.16540808, -.18191671, .12555404, -.1816426, -.19010405, .50464921, .40235926, -.79250121, .39893887, .739043, -.32848361, -.39668106, .11034615, -.394338, -.28769889, .21190257, .19356919, -.05856727, .19330527, .17390783, .61856884, .48325688, -.4108685, .47838328, .6799907, -.12318035, -.13091587, .03237189, -.13083497, -.09940929, -.16718999, -.18387022, .11490442, -.18359337, -.18589274, -.00552738, -.00554152, .00133074, -.00554152, -.00433233, -.34750055, -.42763568, .14151549, -.42458214, -.32452513, -.34545728, -.4196014, .09219207, -.41696914, -.2802232, -.49934896, -.69915736, .21022035, -.68612969, -.47152459, 1.0062373, .71246557, -.45343421, .6985066, .97195996, -.40626462, -.5176477, .12244208, -.51261747, -.34318337, -.42870959, -.56598503, .20357239, -.55877089, -.42139731, 1.1220376, .80928424, -.09607301, .79506088, .62308708, -.57000283, -.84169848, .17929395, -.82075725, -.48840851, -.57962635, -.9324093, .48360729, -.8981939, -.68750051, -.34757552, -.43013201, .17133745, -.42689337, -.34593424, -.40116626, -.51722287, .18855829, -.5116987, -.39298395, -.1318524, -.14315117, .23189101, -.14299002, -.2005226, .34696024, .30208288, -.08187864, .30111914, .27013862, .68635505, .53431463, -.21049749, .52877116, .5831651, .53415328, .43106998, -.272978, .4277847, .53805889, -.55241711, -.80281608, .17929285, -.78441849, -.47830957, -.15357511, -.16710791, .08543382, -.16690944, -.15913553, -.37272554, -.46913947, .16937978, -.46502656, -.36104108, -.11396473, -.12090322, .04674349, -.12083286, -.10668353, -.16232168, -.17592145, .03673375, -.1757318, -.12462814, .3351197, .29115699, -.12639674, .29019958, .30506233, -.68757701, -1.1034464, .12006062, -1.0633468, -.4841996, .28062883, .24683379, -.20418777, .24615772, .31801048, -.63868948, -1.0709972, .34581798, -1.0247459, -.65587191, -.58877059, -.91706114, .29009841, -.88772079, -.58589868, .81611024, .61280088, -.25217023, .60449659, .69514247, -.05579265, -.05736679, .02123494, -.05735938, -.05094228, .13043956, .12285477, -.05233093, .12278132, .12120923, -.20919899, -.2352261, .10393811, -.2346879, -.20875714, -.56744871, -.81155064, .11068618, -.79449026, -.41462824, -.1940966, -.21434157, .04919301, -.21399033, -.15475917, .44182534, .36408877, -.40500544, .36182622, .54075104, -.01865539, -.01882854, .00787443, -.01882827, -.01763137, -.08065021, -.08465838, .13779541, -.08462519, -.1214764, .43433084, .36925957, -.07083523, .36764328, .29897868, -.33521405, -.41214582, .18289228, -.40922816, -.34510925, -.12262503, -.13071836, .05044404, -.1306294, -.11490335, .23473909, .21374147, -.0364345, .21342897, .15894171, -.33774469, -.41738767, .20562881, -.41428549, -.3606592, -.36903476, -.46565002, .19791216, -.46147956, -.37775684, .06340986, .06144898, -.03875127, .06143887, .0677969, .33058378, .28722357, -.14068763, .28627944, .31329226, -.26984463, -.31387478, .09954822, -.31268285, -.24383555, .18696495, .17099738, -.13956152, .17077045, .21368401, -.52960263, -.7515304, .16771962, -.73640445, -.45481842, -.28316653, -.334515, .14281789, -.33297169, -.28398724, .36771133, .31898127, -.06732474, .3179093, .26307095, -.02603472, -.02636435, .00855866, -.02636365, -.02263848, .12908829, .12155656, -.05880958, .12148337, .12514608, -.24843362, -.28399314, .07459121, -.28314787, -.2095943, .29605613, .25933735, -.18357246, .25858099, .31807427, .53914806, .43730331, -.19476862, .43412486, .48378792, -.40364205, -.51834327, .16088398, -.51297832, -.37426441, -.21349457, -.24323462, .20531619, -.2425465, -.26550678, .51045144, .41854975, -.16824595, .41581371, .44425039, .0641572, .06226, -.02314806, .06225065, .05754555, 1.0415381, .76123549, -.10527893, .74890682, .61128058, .49465947, .41079497, -.1055044, .40844152, .37236691, .39576095, .33863294, -.09758524, .3372652, .31267513, -.30237268, -.37541857, .58287022, -.37250493, -.47412805, .31545764, .27616088, -.11590711, .27534789, .28466936, -.61214837, -1.0049153, .39043097, -.96491339, -.66388963, -.34251752, -.43626109, .4745376, -.43203465, -.48108528, .4715008, .38702078, -.29953, .3845176, .51067555, .46184264, .38043816, -.290303, .37806466, .49845183, .25935317, .23285363, -.06588961, .23240341, .20695537, -.35230193, -.43826698, .18310789, -.43480406, -.35688013, -.32328653, -.38029361, .04067316, -.37862702, -.20409752, -.13313177, -.14309375, .07244864, -.14296964, -.13694343, .33611667, .29069772, -.17158709, .28967912, .3384529, -.30067393, -.35833911, .13036976, -.35650718, -.28672538, -.09645221, -.10094237, .01903377, -.10090755, -.07074999, .06671792, .06454695, -.04173267, .06453518, .07188921, .6182557, .49486798, -.12857452, .49080423, .46150214, .17507007, .16115999, -.11280864, .16097604, .19051627, -.15839997, -.17079417, .02584927, -.17063272, -.10905933, -.25464138, -.30430441, .5528601, -.30270031, -.41543308, .8334476, .61380438, -.46533053, .60433542, .86466799, -.57173845, -.81511966, .0986911, -.79827964, -.401083, .20398599, .18794113, -.02996711, .18773108, .13561004, -.47896225, -.63114888, .08014446, -.62321102, -.33253347, -.08587928, -.09012595, .07993469, -.09009097, -.10564462, -.11145971, -.1181655, .05063144, -.1180983, -.1079515, -.05762836, -.0593631, .02864716, -.0593544, -.0575168, -.39564628, -.50560667, .16467577, -.50057398, -.37218422, -.8186431, -1.5612468, .13726219, -1.4578464, -.56875258, -.4298262, -.56849767, .20837131, -.56115667, -.42541999, -.29717354, -.34824523, .06655057, -.34678971, -.22737045, -.2663489, -.30960182, .10678396, -.30843645, -.24744534, .62238915, .4899456, -.27428963, .48530168, .59674365, -.46663198, -.60878868, .07689304, -.60167196, -.32232106, 1.08491, .75534841, -.45134348, .73909341, 1.0204104, .26931269, .24231221, -.03990889, .24186205, .17955787, .47043431, .39382938, -.09807516, .39176342, .35144902, -.00905558, -.0090941, .00243494, -.00909407, -.00736406, .20377738, .18745498, -.0363535, .18723738, .14453157, .62720037, .50051111, -.133264, .49628922, .47153994, .41297257, .34729489, -.2110996, .34556443, .41602549, -.58715294, -.89322081, .21747192, -.86754487, -.53126584, -.50533386, -.71893342, .25540897, -.70425374, -.50715531, -.14009154, -.1512005, .07686636, -.15105385, -.14449851, -.59694963, -.94176184, .30421971, -.90990987, -.60075525, -.39574995, -.49862122, .10815252, -.49421175, -.3235709, -.02203916, -.0222661, .00521286, -.02226571, -.01717245, -.5643388, -.84952657, .25781957, -.82629313, -.54761487, -.46143087, -.59850049, .0722647, -.59180533, -.31336933, .06867264, .06640179, -.03857597, .06638928, .07139012, 1.4069938, .91911624, -.46391089, .89191944, 1.2246622, .01437706, .01427343, -.00812206, .01427331, .01497427, -.24825838, -.28976038, .23058706, -.28860956, -.30518107, -.45187503, -.58313209, .07457827, -.57685962, -.31229114, .25773194, .23150697, -.06631236, .23106325, .20653183, -.52978301, -.73966925, .12414029, -.72611493, -.41150925, -.58921908, -.91838301, .29081526, -.8889123, -.58667862, .25824659, .23058882, -.11231133, .2300964, .24651362, .40403531, .34235158, -.15679228, .34079063, .37130526, .27361868, .24458212, -.06414271, .24406985, .21256394, -.10496889, -.11072481, .03798771, -.11067224, -.0942464, .09818183, .09312006, -.15636528, .09307659, .14445886, -.52659025, -.77067499, .29419098, -.75235543, -.54643058, -.17248065, -.19014623, .10983932, -.18984525, -.18696323, .65251306, .50119818, -.57530002, .49543065, .78831708, -.23637986, -.27195111, .16012657, -.27106246, -.26156007, -.22305026, -.25038868, .05559303, -.24983171, -.17685551, .4107871, .34630393, -.18930093, .34462669, .39976562, .2216956, .20296372, -.03198751, .20270035, .14650132, -.54044385, -.77070257, .15552789, -.75475731, -.44955187, .15455827, .14435313, -.04740392, .14424093, .13132364, -.2975832, -.34559306, .04196399, -.34430789, -.19515268, -.30919006, -.36357347, .05707774, -.36198757, -.22181076, .1470479, .13773376, -.04671594, .13763552, .12641664, -.27668337, -.32180148, .08112549, -.32058084, -.23158894, -.34043974, -.42537637, .27778143, -.42187937, -.4008094, .98571709, .72132124, -.15599688, .70972918, .67176416, -.53744887, -.77628212, .20199067, -.75906314, -.48866572, .76475491, .58244415, -.23356688, .57530701, .64887633, .4292717, .36394447, -.09307895, .36229654, .32492415, -.20931072, -.23535541, .10360539, -.23481677, -.20860839, -.55941465, -.8232608, .19772633, -.8031278, -.49833424, -.78218099, -1.4146044, .13373406, -1.3351006, -.54696833, -.39557156, -.50125184, .12896442, -.49659865, -.34301782, .55608386, .4539049, -.10853815, .45080137, .40640995, .00168945, .00168803, -.0008074, .00168803, .00166419, -.63501826, -1.036189, .27290696, -.99591278, -.60377113, .74239142, .54687025, -1.1635979, .53844638, 1.086508, -.20609582, -.23159291, .11227057, -.23106861, -.21206944, .38679794, .32601357, -.31028056, .32443082, .45281168, -.15855635, -.17295887, .08414102, -.17274116, -.16173413, -.27333304, -.32138804, .1525336, -.3199873, -.28352624, -.44275803, -.58484206, .15931926, -.57735932, -.39677447, -.02067804, -.02090629, .016071, -.02090587, -.02395321, -.12558298, -.13447685, .07401916, -.13437197, -.1326616, .16734546, .15439342, -.12396971, .15422656, .19077633, -.21300708, -.23931334, .08510621, -.23877333, -.19766348, -.58182647, -.85676257, .14576395, -.83574557, -.46212099, -.18692859, -.20567212, .04893615, -.20535946, -.15066201, -.4993853, -.67374138, .09900201, -.66377543, -.36687251, -.58389203, -.90928901, .30932041, -.88022178, -.59525249, -.18699099, -.20657095, .06832535, -.20622992, -.16842934, -.50695147, -.71397244, .20763442, -.70020786, -.4743374, -.04559305, -.04668013, .02485613, -.04667581, -.04692672, .21231924, .19457061, -.04049855, .19432371, .15398652, -.36578368, -.46398373, .24873611, -.45963919, -.40526506, .33809673, .29409674, -.10778097, .29314608, .29099443, .57700922, .45883265, -.309139, .4548408, .59044996, .00642141, .00640259, -.0014665, .00640258, .00494528, -.69472872, -1.2290276, .28823549, -1.1648157, -.65283383, -.70671288, -1.2777091, .30036925, -1.2059735, -.66945876, .21664136, .19702405, -.07857647, .19672851, .19465628, .02260057, .02233772, -.01714393, .02233721, .02596927, -.4978844, -.6832303, .14528112, -.67195796, -.41606904, .9373839, .69029883, -.18226697, .67964474, .68421247, -.15536107, -.1676527, .03298504, -.16749081, -.11677337, .0753751, .07282344, -.02287026, .07280904, .06381444, -.48360754, -.66005986, .16400979, -.64953463, -.42490838, .17651917, .1645224, -.02184892, .16438664, .1108361, .14902537, .13901636, -.07521762, .13890443, .14949385, -.11372673, -.12063143, .04645204, -.12056161, -.10631306, .38962092, .32846824, -.28859996, .32687783, .44415743, -.13831529, -.14874468, .05677358, -.14861375, -.12951068, .45014415, .37964011, -.08873034, .3778103, .33006676, -.59932926, -.88869049, .12781384, -.8661144, -.45114168, -.07285928, -.07618779, .15321854, -.07616245, -.11760804, .76961802, .57911231, -.36943314, .57137871, .7592278, .66658241, .5152085, -.36793387, .50955464, .68892057, -.62358675, -.97685879, .19677698, -.94481243, -.53489189, -.58088849, -.90231318, .31211268, -.87379199, -.59498906, .10412954, .09960377, -.01871541, .099571, .07403875, -.23137148, -.26715256, .2316752, -.26623412, -.29163729, -.0382953, -.03912356, .04295741, -.03912058, -.05013254, -.54583794, -.7822518, .15643182, -.76562044, -.45341322, -.62053932, -.92182829, .09946152, -.89819597, -.42469248, -.64636966, -.9678868, .08069936, -.94208274, -.40702462, -.24688153, -.28801846, .2355242, -.28688146, -.30620639, -.27727563, -.32345202, .09267822, -.32217641, -.2424434, .23571931, .21441825, -.03915749, .21409801, .16325947, .02579881, .02546094, -.01766667, .0254602, .02865022, .01018719, .01013478, -.00596942, .01013474, .01074048, -.23096241, -.26423235, .14006962, -.26343648, -.24631197, -.71367779, -1.1606493, .10338586, -1.1161336, -.47224261, .31282919, .27725536, -.04603387, .27658309, .20808495, -.05945849, -.06112264, .0119089, -.06111488, -.04383051, .51297607, .4271129, -.06779652, .42473358, .32921317, .00025261, .00025258, -.00020794, .00025258, .00029828, -.3127226, -.37298985, .09843749, -.37106606, -.26802154, -.00170261, -.00170402, .00066826, -.00170402, -.00157061, 1.1611366, .79812769, -.40803169, .77973498, 1.0323577, -.59119608, -.88733313, .1703966, -.8634081, -.49202217, -.02362601, -.023929, .02083461, -.02392835, -.02854514, .05530985, .05393895, -.01449093, .05393329, .04459064, .47259754, .38931982, -.24069738, .38689234, .47551194, -.33479564, -.41306924, .20857697, -.41004602, -.36026216, -.21943083, -.24744835, .08621337, -.24685385, -.20248832, .57101126, .46007865, -.17379503, .45652008, .48393337, -.0316426, -.03215089, .01463176, -.03214953, -.03082882, -.2881194, -.33455702, .05396576, -.33331514, -.20769742, 1.2161216, .816381, -.62139287, .79516325, 1.2249455, .18269367, .16919124, -.03852079, .16902511, .1370011, .14266762, .1341986, -.03132067, .13411488, .10843529, -.00524903, -.00526237, .00190546, -.00526237, -.00471768, .75192761, .57366542, -.24827375, .56672404, .6547934, -.20089528, -.22412975, .0826315, -.22368296, -.18823702, .34601415, .29494433, -.36799881, .29369444, .44499457, -.10867453, -.11453236, .02495986, -.11447976, -.08385119, .28694097, .25478952, -.07838203, .25419079, .23457256, .427035, .3673767, -.03670304, .36599389, .23743951, -.62148672, -.9681708, .1885892, -.93717387, -.52618303, -.00869881, -.00873551, .00312224, -.00873548, -.00778883, .07610759, .07323409, -.05970733, .07321602, .08843778, -.00509814, -.00511164, .00345547, -.00511163, -.00564227, .28586233, .2547403, -.05935707, .25417708, .21327443, 1.6615841, 1.0644756, -.22420563, 1.0300949, 1.0737596, -.11622361, -.12359196, .05572119, -.12351416, -.11460749, -.47749766, -.67181146, .32901169, -.65893501, -.53136703, -.19254828, -.2121792, .04394746, -.21184626, -.14825671, -.04649595, -.04755493, .01426885, -.04755091, -.03951388, -.07931842, -.08260539, .03410218, -.08258269, -.07542583, -.26884138, -.31519171, .15172867, -.31386657, -.27991744, -.24944187, -.2824923, .0407766, -.28176471, -.17184092, -.40601813, -.52475388, .18290599, -.51904222, -.39214763, .45282614, .37853673, -.14522169, .37651843, .39051838, .01715587, .01697844, -.05316215, .01697813, .03151273, .34733492, .30333315, -.06454921, .3024075, .24973108, .02556932, .02523941, -.01655107, .0252387, .0278675, -.1494024, -.16187134, .06915062, -.16169812, -.14560638, -.26773939, -.31135008, .10467388, -.31017154, -.24665937, -.35702969, -.44172636, .13711975, -.43840783, -.32697375, -.01508935, -.01520375, .00711999, -.01520361, -.01480074, -.27394964, -.31595297, .05636073, -.31488397, -.20375863, -.10874203, -.11488613, .03671461, -.11482831, -.09540136, .76481258, .58966962, -.13679373, .58307459, .54291946, -.3530344, -.43827726, .16826872, -.43487874, -.34744746, -.64654178, -1.0535779, .23292136, -1.0128438, -.57962107, -.13580059, -.14604153, .06581002, -.14591295, -.13439253, .35804975, .31001552, -.09546595, .30894596, .29034994, -.18155178, -.19938011, .05251883, -.19908883, -.15128017, -.45439126, -.62707997, .33824226, -.61636569, -.51884695, .15608272, .14581403, -.04227721, .14570154, .12723755, -.46485105, -.63744583, .24797994, -.62697558, -.47499757, -.45553411, -.5845954, .06002834, -.57857639, -.29206267, -.54320935, -.79196175, .21592063, -.77350635, -.50321418, -.48736189, -.67165321, .18788473, -.66027432, -.44689779, -.56800422, -.82241252, .13509182, -.80393212, -.44339153, -.11162201, -.11845271, .05756639, -.11838309, -.11278021, -.04907169, -.05018343, .00885214, -.05017923, -.03493387, -.10962828, -.11590109, .03819445, -.11584131, -.0971908, -.45160058, -.58885072, .0985034, -.58199558, -.34250223, -.1994024, -.22374977, .13241529, -.22325561, -.21918439, -.22905152, -.26273431, .17412391, -.26191188, -.26338129, -.10781419, -.11381191, .03456585, -.11375634, -.09297004, -.30423076, -.36129752, .10179414, -.35952395, -.26610498, -.1425758, -.15224961, .0189258, -.15214031, -.09163442, 1.9216935, 1.1866063, -.20976514, 1.1418559, 1.1571168, -.13575323, -.14470404, .02217588, -.14460576, -.0934983, 1.1687913, .81092704, -.28073579, .79314467, .91537822, .38176342, .32608969, -.14618068, .32474321, .34927664, -.2598243, -.29725508, .05464092, -.2963596, -.19467156, -.5464075, -.77583871, .13201835, -.76017113, -.42877804, -.61671174, -1.0006056, .32406862, -.96258745, -.62701386, -.42496381, -.56190555, .22665969, -.5546644, -.4342129, -.00255548, -.00255854, .00071623, -.00255854, -.00210705, .34223009, .29781075, -.09495459, .29685356, .28122944, -.45673818, -.58402781, .05310595, -.57818627, -.28086822, .12762718, .12045632, -.04446452, .12038922, .11314707, -.32207242, -.39951794, .34140655, -.39644283, -.41374838, .44372967, .37334388, -.1152856, .37149414, .35673632, .19218058, .17660794, -.06536837, .17639793, .16902031, -.14463536, -.15745123, .14423191, -.15726224, -.18205954, -.35681123, -.43234864, .06492199, -.42970297, -.25474144, -.78585143, -1.3684292, .09378862, -1.3007048, -.4874765, -.43056416, -.5679701, .19280781, -.56077272, -.41502742, -.1194873, -.12628985, .0183943, -.12622535, -.08068366, 1.1504472, .78712309, -.51432053, .76854013, 1.1083215, .66994874, .51588221, -.41716434, .51005709, .72078672, -.50174162, -.74091841, .49762731, -.72248226, -.63042219, .0980341, .09337897, -.0712195, .09334215, .11103531, -.30095346, -.36594052, .28942734, -.36361946, -.37427379, -.28916199, -.34238757, .13404999, -.340764, -.28196361, -.31635819, -.39324606, .42212845, -.39016088, -.43881109, .01227257, .01219951, -.00506124, .01219944, .0115094, 2.3768308, 1.3307905, -.56859495, 1.2590067, 1.8589876, -.21238201, -.24031481, .13972587, -.23970439, -.23272734, -.0683085, -.07075601, .032727, -.0707414, -.06734343, -.67175986, -1.0412262, .09493018, -1.0086275, -.44084658, .04463719, .04369266, -.01844834, .04368933, .04189161, -.28367342, -.33030346, .0703631, -.32903186, -.22456259, .20751412, .18880873, -.10576337, .18852821, .20884313, -.39639779, -.53145541, .5463898, -.5239165, -.55581681, -.53396651, -.76610369, .19014519, -.74971475, -.47684928, -.41388794, -.52473636, .0911924, -.51984373, -.3149571, -.0474799, -.04858814, .0149372, -.04858383, -.0406855, .01555976, .01544743, -.00437587, .0154473, .01284399, -.54760283, -.84791733, .48049955, -.82149155, -.6605182, -.20115182, -.22518278, .10467438, -.22470551, -.20384783, -.63784704, -.95934541, .09561186, -.93321814, -.42689881, .90776996, .66918714, -.22617176, .6589283, .71968093, -.06315845, -.06515324, .0208039, -.06514274, -.05495567, -.23762773, -.27339367, .15373728, -.27249999, -.25894119, -.50295249, -.69954311, .17494849, -.68701101, -.44565424, .01552274, .01541147, -.00418046, .01541134, .01262981, 2.1068331, 1.1889219, -1.2133041, 1.1264521, 2.2084453, .47868198, .39622289, -.16575858, .39387229, .42351298, -.02986399, -.03032427, .01615749, -.03032309, -.0306596, -.20453409, -.22636955, .03872599, -.22598184, -.14797487, -.14510921, -.15728345, .09104008, -.15711344, -.15651316, .70931453, .54673599, -.25286811, .54060879, .63367599, -.53000475, -.74513956, .14089154, -.73091807, -.42936319, -.21910342, -.24687749, .0826378, -.24629237, -.19945076, -.41493285, -.52361045, .07768675, -.51891737, -.29907322, 2.6560511, 1.3993556, -1.105995, 1.3079768, 2.498918, -.41589553, -.54146745, .18302736, -.53523562, -.39857021, -.5526323, -.80926377, .20181019, -.78996847, -.49767811, -.13207272, -.14097686, .03313644, -.14087689, -.10495118, .14448753, .13515265, -.06544272, .13505222, .13980328, -.85325759, -1.7623394, .16079813, -1.6167939, -.61634485, .76115922, .57533086, -.33446264, .56788681, .72908173, -.4445706, -.6065932, .31952327, -.59693944, -.50173145, .05289442, .05153665, -.02874207, .05153084, .0543821, -.17820591, -.19853626, .19416859, -.1981506, -.23103852, -.4801718, -.67039242, .27251422, -.65810878, -.50088438, .7304052, .55833536, -.28785848, .55167589, .67470239, -.16887215, -.18469715, .06495133, -.18445039, -.15473125, .35410875, .30570854, -.12846339, .30461071, .31819564, .19684382, .18046651, -.07068492, .18023976, .17627881, -.20643774, -.23348809, .17055485, -.23289913, -.24405671, 1.22551, .8353436, -.35199394, .81523741, 1.0187469, .17923756, .16578231, -.0525377, .16561417, .15000982, .01548457, .01536218, -.01038154, .01536202, .0170751, -.19320256, -.2148948, .0900355, -.21448979, -.18872228, .32956715, .28787909, -.09663489, .28700342, .27585694, -.45938766, -.62492575, .23072715, -.61516994, -.46007551, -.02945698, -.02988319, .01034191, -.02988217, -.02618197, -.67370006, -1.1813745, .34180682, -1.121476, -.67698851, -.02907156, -.02947386, .00775848, -.02947293, -.02358203, -.38428138, -.47793117, .09063364, -.47416337, -.29913877, -.23046223, -.26119584, .08058798, -.26051489, -.20456591, -.12846248, -.13685096, .03186268, -.13675974, -.10169236, -.30992245, -.36335987, .04867032, -.36183198, -.21066874, .22387009, .20364682, -.05894499, .20334289, .18078249, -.17917948, -.19985379, .20268227, -.19945716, -.23521992, -.21841171, -.24833161, .15119244, -.24765074, -.24342806, .4118637, .34607627, -.22690728, .34433546, .42539771, .20921569, .19135775, -.05644292, .1911041, .17032406, -.04141178, -.04225313, .01331006, -.04225028, -.03573984, -.08967166, -.09381787, .032207, -.09378593, -.08030888, -.43040966, -.57519442, .26278401, -.56721212, -.46004218, -.35010686, -.43150226, .14059672, -.42837577, -.32543841, -.45224038, -.61066644, .22306877, -.60158155, -.45019687, -.15280789, -.16560823, .05946739, -.16542975, -.14056163, .22920489, .20747095, -.08083996, .20712815, .20403341, -.02695281, -.02729756, .00709777, -.02729683, -.02176641, -.48806489, -.66592024, .15134011, -.6553242, -.41621053, -.07485465, -.07759823, .01909723, -.07758147, -.05981535, -.55354816, -.81424305, .21356234, -.79437836, -.50771714, -.52719084, -.76911913, .2772692, -.75113379, -.53615346, .05684705, .05526936, -.03355884, .05526206, .06008291, 1.7973129, 1.1092567, -.36345079, 1.06734, 1.329151, -.29913733, -.36026582, .2095762, -.35819823, -.33473752, .84441039, .63750804, -.15314645, .62919077, .60221008, 1.5300133, .9606923, -.79434177, .92687173, 1.5493253, -.35610485, -.467774, .79408433, -.46202371, -.58616174, .82406803, .61953257, -.22184624, .61120781, .67040318, -.33473208, -.42123435, .39786289, -.41754776, -.4467378, -.59704681, -.89013644, .1428792, -.86690615, -.46702334, -.27033676, -.31698804, .1460948, -.31565307, -.27743313, 1.0258857, .7403491, -.19262469, .72738144, .74013901, 1.1604516, .81467254, -.19669616, .79792351, .80914553, .71885488, .54399465, -.50294544, .5370146, .80404022, .05144662, .0500942, -.04484664, .05008827, .06191909, .47392482, .39353593, -.1494817, .39127892, .40645485, .22266008, .20231271, -.06938075, .20200337, .19018864, .25539674, .2288861, -.08805858, .22842855, .22563724, -.19568251, -.2165339, .05437877, -.21616435, -.16088707, .86800737, .63454643, -.44857999, .6242839, .8776181, -.44093685, -.57926714, .14407138, -.572141, -.38263688, -.38796266, -.48874054, .12624104, -.48442371, -.33620446, .54666874, .44328732, -.17675284, .44005735, .47273195, 2.0300788, 1.1682836, -.96824133, 1.1108888, 1.998388, .20015608, .18332403, -.06902249, .18308848, .17684227, .6704618, .53159956, -.10716473, .52685744, .45843382, -.44458745, -.58919121, .16678779, -.58147544, -.40398901, .54446718, .43989513, -.22082431, .436578, .50777747, .33144135, .28713208, -.17030141, .28614888, .33446746, .39694643, .34039606, -.08209858, .33905965, .29576253, -.42074543, -.5470025, .16075656, -.54077417, -.3846619, -.34132884, -.41326123, .08979717, -.41075309, -.2755579, .27126712, .24182145, -.08746021, .24129014, .23435718, .44037707, .37447891, -.06255576, .37284401, .28950022, -.14644983, -.15791575, .04864516, -.1577663, -.12778576, .83887112, .62380912, -.30053485, .61477927, .75065164, -.58971609, -.84195736, .07898515, -.82442391, -.38014896, -.14693144, -.15819566, .04001161, -.15805189, -.11999096, -.35444119, -.4312898, .08034526, -.42853408, -.27228656, .0737336, .07125403, -.02561239, .07124013, .06530358, -.14687879, -.15771931, .02953682, -.1575861, -.10841864, -.14879663, -.16058595, .04713587, -.16043045, -.12779756, .255008, .22848792, -.09093051, .22802936, .22783254, .52932208, .43116877, -.17994595, .42816069, .46544749, -.57678802, -.83528755, .11985366, -.81649906, -.43043204, -.43909753, -.55885675, .06365748, -.55347575, -.29062556, .59572477, .47490671, -.21164208, .47086457, .53158712, 1.3566666, .89996404, -.38104577, .8751849, 1.1193978, .23076888, .20661165, -.21673278, .20619121, .28473205, -.34028239, -.4117036, .08954949, -.40922324, -.27474134, -.37062089, -.45756657, .09456789, -.4541971, -.29617234, .38295285, .32751843, -.13106841, .32618755, .3374993, -.37335462, -.47661172, .25405495, -.47190847, -.41374577, -.15304894, -.16668687, .09593084, -.16648462, -.16502496, .1042071, .09911783, -.05736882, .09907642, .10760526, -.46824434, -.62851306, .14796752, -.61952704, -.40183444, .5037424, .41082186, -.25088311, .4079888, .50308281, .84808535, .63314877, -.23483142, .62422333, .6964476, 1.0502609, .7772032, -.06052008, .76558315, .51110244, -.53151373, -.76676609, .21629309, -.74987, -.49625002, .02620452, .02584242, -.02552688, .02584158, .03272855, .2398854, .21542703, -.12027352, .21501237, .24010574, -.22643811, -.25247045, .03030234, -.25197283, -.1459268, .1166085, .11048453, -.04729675, .11043096, .10875283, 1.3431452, .89781391, -.32261633, .87398692, 1.0519314, -.00187006, -.00187161, .000327, -.00187161, -.00131753, -.15164755, -.16445306, .06738007, -.16427307, -.14579549, .08269046, .07945194, -.04361586, .0794308, .08417732, .08617637, .08305152, -.0150427, .08303264, .06067978, .2798524, .25006393, -.05532456, .24953681, .20540075, -.30467726, -.36042436, .08464232, -.3587339, -.25047586, .30195525, .26443918, -.15980555, .26366505, .30772941, 1.340299, .89487285, -.34074742, .87098951, 1.0697657, -.26049778, -.3020933, .1130195, -.30099117, -.24846419, .0397316, .03898097, -.01635773, .03897861, .03723989, -.34632342, -.41654823, .06160529, -.41419106, -.24539775, -.37410872, -.45578874, .0546393, -.45283957, -.2482239, -.04034842, -.04111172, .0087849, -.04110931, -.03058252, -.12428565, -.13264089, .05264014, -.13254735, -.11759703, -.72785825, -1.2666293, .17219649, -1.2040833, -.56717355, 1.8408131, 1.1261187, -.38746129, 1.0820371, 1.3796192, -.18881786, -.20840084, .05869633, -.20806299, -.16115447, .06242098, .06068176, -.0164772, .06067368, .05044965, .41261605, .34419064, -.34676838, .34231182, .49059213, .60428656, .48029853, -.21858193, .47610295, .54247123, -.30322308, -.36506293, .18549386, -.36297539, -.32431075, .1572132, .1467182, -.04614981, .14660154, .13164144, -.39806354, -.51019956, .1704672, -.50499905, -.37802908, -.2302522, -.26219035, .10869935, -.26145448, -.22588541, -.05024085, -.05158971, .03198843, -.05158368, -.05445599, -.55766118, -.84608885, .31656254, -.82207079, -.58175945, -.24070252, -.2759872, .11441098, -.27512835, -.23667533, -.16040658, -.17378822, .03903075, -.1736024, -.12617125, -.06634171, -.06855248, .02223805, -.06854021, -.05806307, 1.3592493, .8944937, -.48455987, .86891532, 1.2142979, -.28906615, -.34194426, .12870891, -.34034118, -.27810643, -.50352365, -.69691907, .15762218, -.68479707, -.43075371, -.69471901, -1.0704718, .06720278, -1.0378355, -.40180178, .21847797, .19887323, -.06684954, .19858055, .18548747, -.5428572, -.75471105, .0941741, -.74122646, -.3814558, .03577835, .03513084, -.02541775, .03512889, .04022251, .21380327, .19363341, -.13368382, .1933169, .23034521, -.32240633, -.39064823, .14593547, -.3882585, -.31188847, .66465513, .52295291, -.16608129, .5179753, .52744981, -.32430575, -.39326332, .14356266, -.39083764, -.31140597, .05393036, .05264785, -.01205061, .05264277, .04123207, -.0028317, -.00283571, .00140141, -.00283571, -.00282204, -.02135293, -.02156446, .00476595, -.02156411, -.01631917, .10786111, .10313359, -.01531064, .10309907, .07088991, -.47964118, -.64280246, .11783585, -.63370878, -.37848336, -.39842251, -.51601229, .22492566, -.51030478, -.41487657, -.09905477, -.10351316, .01158226, -.10347973, -.06102737, -.24547459, -.27872479, .0546228, -.27797657, -.18741558, .10888075, .10361494, -.03673675, .10357251, .09550168, -.66853058, -1.0972597, .19254359, -1.0536153, -.55624639, -.26737067, -.31576114, .22301942, -.31430952, -.3171028, 1.0645332, .73086408, -.85099415, .71391715, 1.2447773, .22606207, .20453712, -.09427344, .20419621, .21279345, -.43314942, -.58895264, .36564343, -.57978648, -.51576802, -.23247676, -.25948378, .02658345, -.25896213, -.14216744, .48348128, .39798279, -.20933574, .39548186, .4608337, .17081161, .15847915, -.05211926, .15833091, .14488419, -.51725932, -.74111587, .2395372, -.72537996, -.50420429, 1.1637011, .7996095, -.40572604, .78114865, 1.0319261, .517248, .42450814, -.14397092, .42175838, .42550122, .20377275, .18713122, -.04431389, .18690503, .15439055, .37960426, .31476553, -.95803217, .31293262, .65116455, .26374504, .23715653, -.04998972, .2367108, .19087972, .16509569, .15369065, -.04393403, .15355947, .13379324, -.14878344, -.16056319, .04689619, -.16040793, -.12757304, .03112964, .03070085, -.0062502, .03069987, .02296628, -.45146616, -.6190492, .3128399, -.60888544, -.50334703, .01026683, .01021352, -.00610921, .01021347, .01088001, -.03831364, -.0390543, .01605932, -.03905191, -.03612612, .24916831, .2203365, -.34282994, .21978215, .3491656, .20605202, .18741517, -.11593127, .18713473, .21431939, .26738299, .23812242, -.10704603, .23759018, .24828817, -.07107709, -.07356866, .0197543, -.0735541, -.05844091, .23730441, .21182058, -.22739701, .21136564, .29476469, -.27485574, -.31636297, .04916292, -.31532239, -.1951158, -.19505071, -.21275145, .01592398, -.21248413, -.10660859, .70056918, .54467763, -.18947516, .53896875, .57081421, 1.6429994, 1.0053109, -.95644829, .96598995, 1.7284445, -.46441552, -.63262118, .21761309, -.62265912, -.45447446, .14443729, .13599906, -.02424701, .13591696, .10038811, -.52960941, -.79336663, .39957719, -.77217395, -.60745488, -.33390194, -.4038831, .10318464, -.4014562, -.28442056, -.2285471, -.25905302, .0867362, -.25837651, -.20847818, 1.2125627, .7984311, -1.1857801, .77566244, 1.5164014, -.32860078, -.40410853, .21625493, -.40124137, -.36011765, -.21919949, -.24554758, .05514477, -.24502109, -.17434298, .39846564, .33805359, -.16176033, .33653529, .37173027, .14472573, .13684479, -.01196691, .13677331, .07943914, -.62022414, -.92676789, .10887495, -.90231422, -.43754068, -.14261973, -.1536374, .05400271, -.1534957, -.12999748, -.01461438, -.01471576, .0041704, -.01471564, -.01212242, .99225736, .70501776, -.44703681, .69147821, .95838641, -.48755881, -.66838696, .16829922, -.65742882, -.43091212, -.3777599, -.48123749, .2179296, -.47656828, -.3962105, .20800236, .18925086, -.10391383, .18896962, .20794411, -.19079329, -.213611, .16107615, -.21315735, -.22719345, .31904245, .27589917, -.26252013, .2749309, .37667186, .04010878, .0393186, -.02236594, .039316, .04159413, -.02494808, -.02525158, .00845639, -.02525096, -.02191609, .8212072, .60966564, -.38077433, .60074282, .80081903, -.24368044, -.27772481, .07283286, -.2769348, -.2052735, .66968971, .52729017, -.15116308, .5223009, .51373718, -.22175179, -.25047303, .08820703, -.24985487, -.2054735, -.38644071, -.47499015, .05802841, -.47163706, -.25878879, .01919507, .01902635, -.00490186, .01902611, .01534347, -.3713334, -.4571303, .08430312, -.45385478, -.28540871, .14357274, .13569087, -.01381273, .13561879, .08288664, -.13841049, -.1481505, .03228135, -.14803637, -.10734288, .87551684, .66655617, -.08041144, .65836644, .49769004, .91127172, .66035816, -.42523081, .64907921, .89053331, -.30803484, -.37574199, .27045591, -.3732811, -.37162825, -.00678639, -.00681114, .00619686, -.00681113, -.00829519, -.27461572, -.32156385, .12059118, -.32023279, -.26298568, -.27504152, -.31881524, .07147225, -.31765917, -.22113356, .73670468, .57617649, -.09651916, .57041651, .47142231, -.47160338, -.6449074, .20866342, -.63449845, -.45276903, .01841131, .01823494, -.0149963, .01823466, .02166346, -.5864559, -.87238967, .15950373, -.84987263, -.47872986, -.23419911, -.26584045, .07806246, -.26513025, -.20458835, -.06042102, -.06234982, .03249908, -.06233956, -.06190976, -.56688868, -.98333402, 1.2357693, -.93532088, -.92609242, -.64334619, -.99313137, .12726082, -.96260133, -.47228562, -.37870995, -.50850668, .81436117, -.50121973, -.61586685, -.72441698, -1.1832351, .09617001, -1.1370623, -.46560286, -.22634773, -.25477515, .0594121, -.25418177, -.18259368, .42793116, .35498325, -.35874136, .35292514, .50837762, .47199579, .39193388, -.15444486, .38968604, .40978862, 1.1985705, .83253909, -.22061912, .81439502, .85901372, .23502298, .2116479, -.10906943, .21126127, .22925451, -.39761407, -.50587964, .1393689, -.50102296, -.35321552, -.30317936, -.36865385, .27304678, -.36631514, -.36888312, .52891415, .4286696, -.23649281, .42553087, .50957264, .09077196, .08692412, -.04414515, .08689695, .08993709, -.14416059, -.1568803, .14318278, -.15669352, -.18121937, .73647886, .57278216, -.12516194, .56679404, .51397376, -.30020097, -.35901216, .15278503, -.35710415, -.3019801, -.30970783, -.36488812, .0616491, -.36325833, -.22783496, -.13090644, -.14142637, .14714733, -.14128564, -.17148842, 1.7228459, 1.0583109, -.58431917, 1.0175577, 1.5137622, -.22877864, -.25919887, .08362009, -.25852681, -.20609013, -.82510806, -1.6126582, .1515493, -1.4979969, -.59092886, -.64003893, -1.0073362, .1692274, -.97361338, -.51757245, -.13130595, -.14057566, .05050397, -.1404667, -.12031177, -.18244628, -.19973106, .03812658, -.19945858, -.13640887, .02164936, .0214168, -.01169166, .02141638, .02221257, .50690309, .41969105, -.10328319, .41720801, .37581131, 1.0020303, .7351515, -.12375838, .72352927, .62871736] # noqa:E501 + +invgauss_resids = np.asarray(invgauss).astype(float).reshape(-1, 5) + +wfs_resids = [-1.168096, -1.274198, -22.17336, -1.276003, -3.11599, 1.11769, 1.074522, 93.39722, 1.074787, 4.886437, .7295976, .715076, 143.1204, .7151231, 4.239254, .6471395, .6355711, 124.1729, .6356048, 3.732567, .5949094, .5789607, 24.55698, .5790298, 2.056012, -.8578523, -.8829973, -123.7017, -.8831246, -4.498492, .9996619, .9733517, 207.696, .9734635, 5.92077, -.3647809, -.3685094, -82.85051, -.3685159, -2.225631, -.5218114, -.5276356, -268.2977, -.5276466, -4.180369, -.9659918, -.9815653, -1084.813, -.981608, -10.04078, .3903325, .3878348, 390.8879, .3878375, 3.905176, -.1136672, -.1140306, -24.22441, -.1140308, -.6789552, 1.404348, 1.344308, 166.2025, 1.344715, 6.894916, .6979978, .6888638, 444.2878, .6888834, 6.004232, -.4536614, -.4585339, -171.4895, -.4585427, -3.280201, -.1426753, -.1432245, -34.60201, -.1432249, -.8897463, 4.041986, 3.678221, 839.28, 3.683146, 23.93493, -.4076838, -.4104721, -420.7155, -.4104753, -4.119822, 1.037925, 1.021274, 1152.838, 1.021318, 10.74897, 1.002495, .9780589, 268.3886, .9781554, 6.461147, -1.810334, -1.851575, -4981.573, -1.851736, -25.3685, -1.028229, -1.038076, -6328.413, -1.038092, -18.84335, -.3727405, -.3743742, -1096.784, -.3743754, -5.341272, .5779432, .5697695, 164.1083, .5697884, 3.798688, 1.083387, 1.055122, 294.6827, 1.055241, 7.019516, .2389214, .2379634, 227.0207, .237964, 2.348868, -.6575496, -.6669395, -330.597, -.6669623, -5.228599, -1.223007, -1.27265, -208.9083, -1.273003, -6.785854, .5404838, .534834, 319.6869, .5348437, 4.536944, -2.227986, -2.295954, -5036.329, -2.296313, -29.24016, .2379562, .2370335, 247.2598, .2370341, 2.410178, 1.05744, 1.030792, 298.8007, 1.030901, 6.939011, .3025656, .3017648, 2051.827, .3017652, 5.726993, -.1662367, -.1664337, -2143.633, -.1664338, -3.898237, .9615754, .9505365, 2399.173, .9505573, 13.04196, .6036977, .5925143, 84.08839, .5925481, 3.12938, -.4469533, -.4512659, -221.0249, -.451273, -3.534449, .9504169, .9381722, 1602.909, .9381981, 11.31303, -1.58407, -1.647805, -602.1467, -1.648254, -11.47494, -.5808498, -.5975259, -27.5484, -.5976085, -2.102526, -.6490194, -.6557381, -799.9641, -.6557499, -6.958708, .6957488, .6903502, 2190.347, .6903571, 10.19701, .1750624, .174529, 150.309, .1745293, 1.663886, .1572418, .1562937, 12.33672, .1562946, .6731502, -.6408126, -.6436554, -9244.279, -.6436575, -15.59954, 1.101677, 1.092417, 10778.35, 1.09243, 23.56244, -.4992968, -.5028596, -835.3172, -.5028639, -5.927292, -.9280973, -1.02178, -6.907707, -1.023576, -1.812064, .6339129, .6277187, 744.4614, .6277287, 6.688065, -.6707486, -.6785607, -647.0199, -.6785761, -6.627439, -1.38237, -1.427934, -602.4287, -1.428195, -10.48056, -1.459774, -1.554047, -125.0777, -1.555148, -6.435521, -1.093153, -1.111322, -1629.418, -1.111374, -12.48719, -.3837357, -.3857544, -717.1755, -.3857562, -4.726757, -.5606073, -.5670648, -326.075, -.5670773, -4.679632, .8169871, .7887753, 38.50973, .7889313, 2.951211, 1.275712, 1.265811, 24735.07, 1.265823, 34.27201, .0862263, .0861666, 766.7436, .0861666, 1.786392, .3344287, .3328024, 485.5152, .3328038, 3.786779, -1.345582, -1.471176, -36.61779, -1.473379, -4.047349, .4774571, .4752944, 2502.141, .475296, 8.29329, .349272, .3477617, 824.9081, .3477628, 4.651336, -.5002936, -.5066125, -158.1673, -.506626, -3.408177, -1.247884, -1.411017, -12.7456, -1.415246, -2.707506, -1.673559, -1.700277, -10051.77, -1.70035, -30.4211, .3986639, .3972206, 2398.038, .3972214, 7.250311, 1.482003, 1.444616, 1148.828, 1.444769, 13.61396, .0587717, .0587566, 3267.75, .0587566, 2.243168, .4706421, .4689196, 4507.782, .4689206, 9.994969, -1.157463, -1.186371, -642.0396, -1.186495, -9.510254] # noqa:E501 +wfs_resids = np.asarray(wfs_resids).astype(float).reshape(-1, 5) diff --git a/statsmodels/genmod/tests/results/glmnet_r_results.py b/statsmodels/genmod/tests/results/glmnet_r_results.py new file mode 100644 index 0000000..0303c78 --- /dev/null +++ b/statsmodels/genmod/tests/results/glmnet_r_results.py @@ -0,0 +1,55 @@ +import numpy as np + +rslt_binomial_0 = np.array([ + 0, 6.618737, 0.004032037, 0.01433665, 0.01265635, 0.006173346, 0.01067706]) + +rslt_binomial_1 = np.array([ + 0, 1.029661, 0.02180239, 0.07769613, 0.06756466, 0.03156418, 0.05851878]) + +rslt_binomial_2 = np.array([ + 0, 0.1601819, 0.07111087, 0.2544921, 0.2110318, 0.08577924, 0.1984383]) + +rslt_binomial_3 = np.array([ + 0.5, 0.05343991, 0.004990061, 0.2838563, 0.2167881, 0.02370156, 0.2096612]) + +rslt_binomial_4 = np.array([ + 0.5, 0.02313286, 0.0708914, 0.3791042, 0.2938332, 0.07506391, 0.2982251]) + +rslt_binomial_5 = np.array([ + 0.5, 0.009124078, 0.106681, 0.4327268, 0.3362166, 0.1019452, 0.3479955]) + +rslt_binomial_6 = np.array([ + 1, 0.02932512, 0, 0.3085764, 0.2300801, 0.01143652, 0.2291531]) + +rslt_binomial_7 = np.array([ + 1, 0.01269414, 0.07022348, 0.396642, 0.3044255, 0.07151663, 0.31301]) + +rslt_binomial_8 = np.array([ + 1, 0.005494992, 0.1049623, 0.4385186, 0.3391729, 0.09907393, 0.3527401]) + +rslt_poisson_0 = np.array([ + 0, 23.5349, 0.009251658, 0.003730997, 0.01266164, 0.003439135, 0.0141719]) + +rslt_poisson_1 = np.array([ + 0, 3.661269, 0.04842557, 0.02095708, 0.06550316, 0.02029514, 0.07300782]) + +rslt_poisson_2 = np.array([ + 0, 0.5695749, 0.1440462, 0.07208017, 0.182649, 0.07511376, 0.2018242]) + +rslt_poisson_3 = np.array([ + 0.5, 0.1577593, 0.1247603, 0.02857521, 0.185693, 0.03840622, 0.2200925]) + +rslt_poisson_4 = np.array([ + 0.5, 0.05669575, 0.187629, 0.08842012, 0.2348627, 0.09736964, 0.2628845]) + +rslt_poisson_5 = np.array([ + 0.5, 0.0185653, 0.2118078, 0.1121067, 0.2534181, 0.1204543, 0.2784761]) + +rslt_poisson_6 = np.array([ + 1, 0.07887965, 0.1339927, 0.0322772, 0.1969884, 0.0439019, 0.2339252]) + +rslt_poisson_7 = np.array([ + 1, 0.02834788, 0.1927163, 0.09160406, 0.2398164, 0.1010126, 0.2682158]) + +rslt_poisson_8 = np.array([ + 1, 0.0101877, 0.2126847, 0.1123439, 0.2544153, 0.1208601, 0.2796794]) diff --git a/statsmodels/genmod/tests/results/igaussident_resids.csv b/statsmodels/genmod/tests/results/igaussident_resids.csv new file mode 100644 index 0000000..8256b33 --- /dev/null +++ b/statsmodels/genmod/tests/results/igaussident_resids.csv @@ -0,0 +1,3676 @@ +.064289,.0594801,1.152063,.0594202,1.152063 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.9013395,.4918179,16.15206,.462978,16.15206 +.064289,.0594801,1.152063,.0594202,1.152063 +-.3409358,-.8321366,-4.957226,-.7311729,-4.957226 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.7158609,.4269431,11.59742,.4085118,11.59742 +.1200924,.1047548,2.152063,.1044296,2.152063 +.678126,.4071116,12.15206,.3899685,12.15206 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.6223226,.383848,11.15206,.3693074,11.15206 +-.3409358,-.8321366,-4.957226,-.7311729,-4.957226 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +.678126,.4071116,12.15206,.3899685,12.15206 +-.3486648,-.8185734,-4.511871,-.7270422,-4.511871 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +-.3565811,-.8026257,-4.066515,-.7208934,-4.066515 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +.5665193,.3595589,10.15206,.347465,10.15206 +-.3409358,-.8321366,-4.957226,-.7311729,-4.957226 +.5665193,.3595589,10.15206,.347465,10.15206 +.1387993,.1218112,1.37884,.1214658,1.37884 +.5107159,.3341175,9.152063,.324298,9.152063 +.7339293,.4294565,13.15206,.4095696,13.15206 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.3409358,-.8321366,-4.957226,-.7311729,-4.957226 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.678126,.4071116,12.15206,.3899685,12.15206 +1.151295,.6287713,9.824195,.5920053,9.824195 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.3645199,-.7836041,-3.62116,-.7120315,-3.62116 +.5107159,.3341175,9.152063,.324298,9.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +6.132267,1.593842,69.93349,1.19723,69.93349 +1.012946,.5301469,18.15206,.4948412,18.15206 +.2316991,.1828133,4.152063,.1811134,4.152063 +.1200924,.1047548,2.152063,.1044296,2.152063 +.5013845,.339805,6.488129,.331384,6.488129 +.2837797,.2165023,4.597418,.2138826,4.597418 +.1603279,.1352277,2.597418,.1345765,2.597418 +.4407907,.3158543,4.378839,.3100816,4.378839 +.5202903,.3531052,5.933485,.3444154,5.933485 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +1.124553,.5663409,20.15206,.524251,20.15206 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.3409358,-.8321366,-4.957226,-.7311729,-4.957226 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +1.626783,.7095096,29.15206,.6341852,29.15206 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.3309667,.2556262,2.824195,.2528057,2.824195 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.039556,-.0415314,-.511871,-.041515,-.511871 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +.5107159,.3341175,9.152063,.324298,9.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.0084856,.008393,.1520631,.0083928,.1520631 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +.0084856,.008393,.1520631,.0083928,.1520631 +.0986021,.0882102,1.597418,.0880281,1.597418 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.1149985,.1020452,1.488129,.1018027,1.488129 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.5202903,.3531052,5.933485,.3444154,5.933485 +-.3334791,-.843813,-5.402582,-.7337776,-5.402582 +-.0206026,-.0210504,-.1758051,-.0210488,-.1758051 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.039556,-.0415314,-.511871,-.041515,-.511871 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.263856,-.4010768,-2.62116,-.3895907,-2.62116 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.0717173,.0661602,1.042774,.0660885,1.042774 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.2549821,-.3684383,-2.175805,-.3602484,-2.175805 +.064289,.0594801,1.152063,.0594202,1.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +.1200924,.1047548,2.152063,.1044296,2.152063 +.0717173,.0661602,1.042774,.0660885,1.042774 +-.3645199,-.7836041,-3.62116,-.7120315,-3.62116 +.0717173,.0661602,1.042774,.0660885,1.042774 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0717173,.0661602,1.042774,.0660885,1.042774 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +.7897327,.4509728,14.15206,.4282142,14.15206 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +-.0058326,-.0058712,-.0665157,-.0058712,-.0665157 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.4407907,.3158543,4.378839,.3100816,4.378839 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.3486648,-.8185734,-4.511871,-.7270422,-4.511871 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.263856,-.4010768,-2.62116,-.3895907,-2.62116 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.5013845,.339805,6.488129,.331384,6.488129 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +.0381354,.0366623,.3788396,.0366528,.3788396 +-.263856,-.4010768,-2.62116,-.3895907,-2.62116 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.5107159,.3341175,9.152063,.324298,9.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1149985,.1020452,1.488129,.1018027,1.488129 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.039556,-.0415314,-.511871,-.041515,-.511871 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +.3401269,.2585065,3.37884,.2552908,3.37884 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.0029418,.0029313,.0427737,.0029313,.0427737 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.3486648,-.8185734,-4.511871,-.7270422,-4.511871 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.2549821,-.3684383,-2.175805,-.3602484,-2.175805 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +.5107159,.3341175,9.152063,.324298,9.152063 +1.794193,.751825,32.15206,.6647726,32.15206 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0368762,.0352675,.5974184,.0352558,.5974184 +.6223226,.383848,11.15206,.3693074,11.15206 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +.213777,.1783427,1.824195,.1773702,1.824195 +.3433058,.2491663,6.152063,.2449511,6.152063 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.2316991,.1828133,4.152063,.1811134,4.152063 +.4241073,.3002126,5.488129,.2943222,5.488129 +.5013845,.339805,6.488129,.331384,6.488129 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.1149985,.1020452,1.488129,.1018027,1.488129 +.1603279,.1352277,2.597418,.1345765,2.597418 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.0206026,-.0210504,-.1758051,-.0210488,-.1758051 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +.064289,.0594801,1.152063,.0594202,1.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +.0084856,.008393,.1520631,.0083928,.1520631 +.0084856,.008393,.1520631,.0083928,.1520631 +.5665193,.3595589,10.15206,.347465,10.15206 +.0965872,.0882683,.8241949,.0881491,.8241949 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +.3433058,.2491663,6.152063,.2449511,6.152063 +.7339293,.4294565,13.15206,.4095696,13.15206 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +.3433058,.2491663,6.152063,.2449511,6.152063 +.7897327,.4509728,14.15206,.4282142,14.15206 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.5306833,.3467107,8.597419,.3364574,8.597419 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.4689574,.317137,7.597418,.309191,7.597418 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0986021,.0882102,1.597418,.0880281,1.597418 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +.213777,.1783427,1.824195,.1773702,1.824195 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.2220538,.1776789,3.597418,.1762155,3.597418 +.0717173,.0661602,1.042774,.0660885,1.042774 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0206026,-.0210504,-.1758051,-.0210488,-.1758051 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +.0818546,.075218,.9334843,.0751285,.9334843 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +.5665193,.3595589,10.15206,.347465,10.15206 +.1200924,.1047548,2.152063,.1044296,2.152063 +.678126,.4071116,12.15206,.3899685,12.15206 +.5665193,.3595589,10.15206,.347465,10.15206 +.0965872,.0882683,.8241949,.0881491,.8241949 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +.4549125,.3073705,8.152063,.2996354,8.152063 +1.012946,.5301469,18.15206,.4948412,18.15206 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.0058326,-.0058712,-.0665157,-.0058712,-.0665157 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.678126,.4071116,12.15206,.3899685,12.15206 +.0029418,.0029313,.0427737,.0029313,.0427737 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.1200924,.1047548,2.152063,.1044296,2.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.5924091,.374748,9.597419,.3619633,9.597419 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0717173,.0661602,1.042774,.0660885,1.042774 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +.0029418,.0029313,.0427737,.0029313,.0427737 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.4326032,.3079246,4.933485,.3020721,4.933485 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.5107159,.3341175,9.152063,.324298,9.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.064289,.0594801,1.152063,.0594202,1.152063 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.5306833,.3467107,8.597419,.3364574,8.597419 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1603279,.1352277,2.597418,.1345765,2.597418 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +.064289,.0594801,1.152063,.0594202,1.152063 +.2316991,.1828133,4.152063,.1811134,4.152063 +.5414546,.3680761,5.378839,.3590935,5.378839 +.0986021,.0882102,1.597418,.0880281,1.597418 +.4481565,.3237836,3.824195,.3181508,3.824195 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1013791,-.1130495,-.7304498,-.1128261,-.7304498 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +-.263856,-.4010768,-2.62116,-.3895907,-2.62116 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +.5665193,.3595589,10.15206,.347465,10.15206 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.7332162,.4444633,9.488129,.4264302,9.488129 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.3486648,-.8185734,-4.511871,-.7270422,-4.511871 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +1.309475,.6590779,14.93348,.6100154,14.93348 +1.291963,.6172617,23.15206,.5645132,23.15206 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.1603279,.1352277,2.597418,.1345765,2.597418 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +4.472755,1.25486,80.15206,.9713796,80.15206 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0717173,.0661602,1.042774,.0660885,1.042774 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +.0084856,.008393,.1520631,.0083928,.1520631 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +.1200924,.1047548,2.152063,.1044296,2.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +.2875024,.2171855,5.152063,.2143638,5.152063 +.1200924,.1047548,2.152063,.1044296,2.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +.2220538,.1776789,3.597418,.1762155,3.597418 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +.0377213,.0361543,.488129,.0361435,.488129 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.0084856,.008393,.1520631,.0083928,.1520631 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.2316991,.1828133,4.152063,.1811134,4.152063 +.3468194,.2552284,5.042774,.251272,5.042774 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0818546,.075218,.9334843,.0751285,.9334843 +.1149985,.1020452,1.488129,.1018027,1.488129 +.0084856,.008393,.1520631,.0083928,.1520631 +.3309667,.2556262,2.824195,.2528057,2.824195 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +2.129014,.8305237,38.15206,.7194568,38.15206 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.5665193,.3595589,10.15206,.347465,10.15206 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.064289,.0594801,1.152063,.0594202,1.152063 +.2394631,.1945652,2.37884,.1931742,2.37884 +.064289,.0594801,1.152063,.0594202,1.152063 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.1200924,.1047548,2.152063,.1044296,2.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +.0818546,.075218,.9334843,.0751285,.9334843 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.1377923,-.1625678,-1.175805,-.1618294,-1.175805 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +.2394631,.1945652,2.37884,.1931742,2.37884 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1377923,-.1625678,-1.175805,-.1618294,-1.175805 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.3721718,-.7605252,-3.175805,-.699448,-3.175805 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0206026,-.0210504,-.1758051,-.0210488,-.1758051 +.2316991,.1828133,4.152063,.1811134,4.152063 +.1695417,.1442388,1.933484,.1436127,1.933484 +.2695529,.2109465,3.488129,.2088481,3.488129 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +.2316991,.1828133,4.152063,.1811134,4.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +.0377213,.0361543,.488129,.0361435,.488129 +.1149985,.1020452,1.488129,.1018027,1.488129 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +.0368762,.0352675,.5974184,.0352558,.5974184 +.4843704,.3278898,7.042774,.3197159,7.042774 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +.0368762,.0352675,.5974184,.0352558,.5974184 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.678126,.4071116,12.15206,.3899685,12.15206 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0368762,.0352675,.5974184,.0352558,.5974184 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.0818546,.075218,.9334843,.0751285,.9334843 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.4326032,.3079246,4.933485,.3020721,4.933485 +.5414546,.3680761,5.378839,.3590935,5.378839 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.039556,-.0415314,-.511871,-.041515,-.511871 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.5665193,.3595589,10.15206,.347465,10.15206 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +.0368762,.0352675,.5974184,.0352558,.5974184 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +.0986021,.0882102,1.597418,.0880281,1.597418 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.3433058,.2491663,6.152063,.2449511,6.152063 +.0818546,.075218,.9334843,.0751285,.9334843 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +.1758957,.1455577,3.152063,.1446918,3.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +.1200924,.1047548,2.152063,.1044296,2.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +1.346765,.6823877,13.37884,.6325223,13.37884 +.1404928,.1212359,2.042774,.1207979,2.042774 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0965872,.0882683,.8241949,.0881491,.8241949 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +.0374109,.0361284,.2695502,.0361211,.2695502 +.5665193,.3595589,10.15206,.347465,10.15206 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +1.347766,.6334519,24.15206,.5770435,24.15206 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.7897327,.4509728,14.15206,.4282142,14.15206 +.4843704,.3278898,7.042774,.3197159,7.042774 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +.064289,.0594801,1.152063,.0594202,1.152063 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.0084856,.008393,.1520631,.0083928,.1520631 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.263856,-.4010768,-2.62116,-.3895907,-2.62116 +.0368762,.0352675,.5974184,.0352558,.5974184 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +.1200924,.1047548,2.152063,.1044296,2.152063 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.2695529,.2109465,3.488129,.2088481,3.488129 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +1.23616,.600697,22.15206,.5515581,22.15206 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +.2875024,.2171855,5.152063,.2143638,5.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.3334791,-.843813,-5.402582,-.7337776,-5.402582 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.2780438,.2146028,4.042774,.2122223,4.042774 +.2316991,.1828133,4.152063,.1811134,4.152063 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.3455056,.2523725,5.597418,.2482699,5.597418 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +1.23616,.600697,22.15206,.5515581,22.15206 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2316991,.1828133,4.152063,.1811134,4.152063 +.0374109,.0361284,.2695502,.0361211,.2695502 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1377923,-.1625678,-1.175805,-.1618294,-1.175805 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1603279,.1352277,2.597418,.1345765,2.597418 +.0818546,.075218,.9334843,.0751285,.9334843 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2549821,-.3684383,-2.175805,-.3602484,-2.175805 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +1.57098,.6948906,28.15206,.6234201,28.15206 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +1.40357,.6492903,25.15206,.5891758,25.15206 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +.0084856,.008393,.1520631,.0083928,.1520631 +.5665193,.3595589,10.15206,.347465,10.15206 +.2875024,.2171855,5.152063,.2143638,5.152063 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.064289,.0594801,1.152063,.0594202,1.152063 +.0377213,.0361543,.488129,.0361435,.488129 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.1922757,.1595985,2.488129,.1586793,2.488129 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.1603279,.1352277,2.597418,.1345765,2.597418 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +1.012946,.5301469,18.15206,.4948412,18.15206 +.3433058,.2491663,6.152063,.2449511,6.152063 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1762009,.1521962,1.26955,.1516534,1.26955 +.2875024,.2171855,5.152063,.2143638,5.152063 +.1922757,.1595985,2.488129,.1586793,2.488129 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2572289,.2047054,2.933484,.2029365,2.933484 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +.0084856,.008393,.1520631,.0083928,.1520631 +.0717173,.0661602,1.042774,.0660885,1.042774 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2549821,-.3684383,-2.175805,-.3602484,-2.175805 +.6223226,.383848,11.15206,.3693074,11.15206 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.0206026,-.0210504,-.1758051,-.0210488,-.1758051 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +.1404928,.1212359,2.042774,.1207979,2.042774 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +-.039556,-.0415314,-.511871,-.041515,-.511871 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +.1758957,.1455577,3.152063,.1446918,3.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.6421184,.4161926,6.378839,.4034303,6.378839 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0029418,.0029313,.0427737,.0029313,.0427737 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.064289,.0594801,1.152063,.0594202,1.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +.6223226,.383848,11.15206,.3693074,11.15206 +.0084856,.008393,.1520631,.0083928,.1520631 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1013791,-.1130495,-.7304498,-.1128261,-.7304498 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +1.180356,.5837326,21.15206,.5381484,21.15206 +.0381354,.0366623,.3788396,.0366528,.3788396 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0058326,-.0058712,-.0665157,-.0058712,-.0665157 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.039556,-.0415314,-.511871,-.041515,-.511871 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.1377923,-.1625678,-1.175805,-.1618294,-1.175805 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +.0986021,.0882102,1.597418,.0880281,1.597418 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +.1149985,.1020452,1.488129,.1018027,1.488129 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +.5107159,.3341175,9.152063,.324298,9.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.4072315,.2857901,6.597418,.2799032,6.597418 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.3401269,.2585065,3.37884,.2552908,3.37884 +-.3565811,-.8026257,-4.066515,-.7208934,-4.066515 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.064289,.0594801,1.152063,.0594202,1.152063 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.5107159,.3341175,9.152063,.324298,9.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.7775868,.4513876,12.59742,.4298794,12.59742 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +.0029418,.0029313,.0427737,.0029313,.0427737 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +.1603279,.1352277,2.597418,.1345765,2.597418 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.1200924,.1047548,2.152063,.1044296,2.152063 +.1200924,.1047548,2.152063,.1044296,2.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0377213,.0361543,.488129,.0361435,.488129 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2316991,.1828133,4.152063,.1811134,4.152063 +.0029418,.0029313,.0427737,.0029313,.0427737 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +.0717173,.0661602,1.042774,.0660885,1.042774 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.0717173,.0661602,1.042774,.0660885,1.042774 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.2572289,.2047054,2.933484,.2029365,2.933484 +.0084856,.008393,.1520631,.0083928,.1520631 +.0084856,.008393,.1520631,.0083928,.1520631 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.5924091,.374748,9.597419,.3619633,9.597419 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0029418,.0029313,.0427737,.0029313,.0427737 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +.1758957,.1455577,3.152063,.1446918,3.152063 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.5107159,.3341175,9.152063,.324298,9.152063 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.1200924,.1047548,2.152063,.1044296,2.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +1.274157,.6377655,16.48813,.5895627,16.48813 +.5107159,.3341175,9.152063,.324298,9.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.8455361,.4717378,15.15206,.4459912,15.15206 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.3991092,.2791307,7.152063,.2732706,7.152063 +.0381354,.0366623,.3788396,.0366528,.3788396 +-.3409358,-.8321366,-4.957226,-.7311729,-4.957226 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.9441099,.5424179,9.378839,.5156149,9.378839 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.3455056,.2523725,5.597418,.2482699,5.597418 +.3433058,.2491663,6.152063,.2449511,6.152063 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.4072315,.2857901,6.597418,.2799032,6.597418 +-.2549821,-.3684383,-2.175805,-.3602484,-2.175805 +.0374109,.0361284,.2695502,.0361211,.2695502 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.6223226,.383848,11.15206,.3693074,11.15206 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.2316991,.1828133,4.152063,.1811134,4.152063 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +.0717173,.0661602,1.042774,.0660885,1.042774 +.2875024,.2171855,5.152063,.2143638,5.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2549821,-.3684383,-2.175805,-.3602484,-2.175805 +.6223226,.383848,11.15206,.3693074,11.15206 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.1387993,.1218112,1.37884,.1214658,1.37884 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.3409358,-.8321366,-4.957226,-.7311729,-4.957226 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.3468194,.2552284,5.042774,.251272,5.042774 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.3645199,-.7836041,-3.62116,-.7120315,-3.62116 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +.2092683,.1702567,3.042774,.1690549,3.042774 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +.1387993,.1218112,1.37884,.1214658,1.37884 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +-.0058326,-.0058712,-.0665157,-.0058712,-.0665157 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +.2220538,.1776789,3.597418,.1762155,3.597418 +.0986021,.0882102,1.597418,.0880281,1.597418 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.1377923,-.1625678,-1.175805,-.1618294,-1.175805 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1013791,-.1130495,-.7304498,-.1128261,-.7304498 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.7897327,.4509728,14.15206,.4282142,14.15206 +.2875024,.2171855,5.152063,.2143638,5.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.0368762,.0352675,.5974184,.0352558,.5974184 +.3433058,.2491663,6.152063,.2449511,6.152063 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0058326,-.0058712,-.0665157,-.0058712,-.0665157 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.0818546,.075218,.9334843,.0751285,.9334843 +.4326032,.3079246,4.933485,.3020721,4.933485 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.2092683,.1702567,3.042774,.1690549,3.042774 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +1.580023,.7067504,25.59742,.6358985,25.59742 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.0818546,.075218,.9334843,.0751285,.9334843 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.3486648,-.8185734,-4.511871,-.7270422,-4.511871 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.678126,.4071116,12.15206,.3899685,12.15206 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +-.263856,-.4010768,-2.62116,-.3895907,-2.62116 +.2572289,.2047054,2.933484,.2029365,2.933484 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +.678126,.4071116,12.15206,.3899685,12.15206 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.9013395,.4918179,16.15206,.462978,16.15206 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.3991092,.2791307,7.152063,.2732706,7.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1149985,.1020452,1.488129,.1018027,1.488129 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.5665193,.3595589,10.15206,.347465,10.15206 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0029418,.0029313,.0427737,.0029313,.0427737 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.0206026,-.0210504,-.1758051,-.0210488,-.1758051 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +1.221787,.6309189,13.93348,.5872274,13.93348 +.0377213,.0361543,.488129,.0361435,.488129 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.064289,.0594801,1.152063,.0594202,1.152063 +.1200924,.1047548,2.152063,.1044296,2.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +.678126,.4071116,12.15206,.3899685,12.15206 +.0084856,.008393,.1520631,.0083928,.1520631 +.0965872,.0882683,.8241949,.0881491,.8241949 +.5107159,.3341175,9.152063,.324298,9.152063 +1.012946,.5301469,18.15206,.4948412,18.15206 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.5107159,.3341175,9.152063,.324298,9.152063 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.678126,.4071116,12.15206,.3899685,12.15206 +-.263856,-.4010768,-2.62116,-.3895907,-2.62116 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.3433058,.2491663,6.152063,.2449511,6.152063 +.2780438,.2146028,4.042774,.2122223,4.042774 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1922757,.1595985,2.488129,.1586793,2.488129 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.1758957,.1455577,3.152063,.1446918,3.152063 +.0368762,.0352675,.5974184,.0352558,.5974184 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +.2316991,.1828133,4.152063,.1811134,4.152063 +.5531459,.3608259,8.042773,.3500788,8.042773 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0381354,.0366623,.3788396,.0366528,.3788396 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.064289,.0594801,1.152063,.0594202,1.152063 +.1200924,.1047548,2.152063,.1044296,2.152063 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0029418,.0029313,.0427737,.0029313,.0427737 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +.5107159,.3341175,9.152063,.324298,9.152063 +.1200924,.1047548,2.152063,.1044296,2.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.3991092,.2791307,7.152063,.2732706,7.152063 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.690697,.4214534,10.04277,.4047881,10.04277 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.213777,.1783427,1.824195,.1773702,1.824195 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +.5531459,.3608259,8.042773,.3500788,8.042773 +.0084856,.008393,.1520631,.0083928,.1520631 +.2394631,.1945652,2.37884,.1931742,2.37884 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +.0084856,.008393,.1520631,.0083928,.1520631 +.0084856,.008393,.1520631,.0083928,.1520631 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.7339293,.4294565,13.15206,.4095696,13.15206 +.064289,.0594801,1.152063,.0594202,1.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +.7897327,.4509728,14.15206,.4282142,14.15206 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0374109,.0361284,.2695502,.0361211,.2695502 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1387993,.1218112,1.37884,.1214658,1.37884 +-.0058326,-.0058712,-.0665157,-.0058712,-.0665157 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.1758957,.1455577,3.152063,.1446918,3.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.0377213,.0361543,.488129,.0361435,.488129 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0368762,.0352675,.5974184,.0352558,.5974184 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0377213,.0361543,.488129,.0361435,.488129 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0029418,.0029313,.0427737,.0029313,.0427737 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +.0374109,.0361284,.2695502,.0361211,.2695502 +.0084856,.008393,.1520631,.0083928,.1520631 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.6223226,.383848,11.15206,.3693074,11.15206 +-.3334791,-.843813,-5.402582,-.7337776,-5.402582 +1.347766,.6334519,24.15206,.5770435,24.15206 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.3334791,-.843813,-5.402582,-.7337776,-5.402582 +.0818546,.075218,.9334843,.0751285,.9334843 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.3455056,.2523725,5.597418,.2482699,5.597418 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.039556,-.0415314,-.511871,-.041515,-.511871 +.1695417,.1442388,1.933484,.1436127,1.933484 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.5924091,.374748,9.597419,.3619633,9.597419 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +.1149985,.1020452,1.488129,.1018027,1.488129 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0986021,.0882102,1.597418,.0880281,1.597418 +-.0206026,-.0210504,-.1758051,-.0210488,-.1758051 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0717173,.0661602,1.042774,.0660885,1.042774 +.0084856,.008393,.1520631,.0083928,.1520631 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0374109,.0361284,.2695502,.0361211,.2695502 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1149985,.1020452,1.488129,.1018027,1.488129 +.1758957,.1455577,3.152063,.1446918,3.152063 +.2220538,.1776789,3.597418,.1762155,3.597418 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0368762,.0352675,.5974184,.0352558,.5974184 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0986021,.0882102,1.597418,.0880281,1.597418 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.6956646,.4342931,7.933485,.4186322,7.933485 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.2394631,.1945652,2.37884,.1931742,2.37884 +.064289,.0594801,1.152063,.0594202,1.152063 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +.0084856,.008393,.1520631,.0083928,.1520631 +.064289,.0594801,1.152063,.0594202,1.152063 +.2316991,.1828133,4.152063,.1811134,4.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +.0381354,.0366623,.3788396,.0366528,.3788396 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.064289,.0594801,1.152063,.0594202,1.152063 +.213777,.1783427,1.824195,.1773702,1.824195 +.678126,.4071116,12.15206,.3899685,12.15206 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.7897327,.4509728,14.15206,.4282142,14.15206 +.1603279,.1352277,2.597418,.1345765,2.597418 +.1200924,.1047548,2.152063,.1044296,2.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0717173,.0661602,1.042774,.0660885,1.042774 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0058326,-.0058712,-.0665157,-.0058712,-.0665157 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1762009,.1521962,1.26955,.1516534,1.26955 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +.4549125,.3073705,8.152063,.2996354,8.152063 +.4241073,.3002126,5.488129,.2943222,5.488129 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +.0029418,.0029313,.0427737,.0029313,.0427737 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1695417,.1442388,1.933484,.1436127,1.933484 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.2780438,.2146028,4.042774,.2122223,4.042774 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.3401269,.2585065,3.37884,.2552908,3.37884 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2875024,.2171855,5.152063,.2143638,5.152063 +.7313609,.4708592,5.26955,.4559795,5.26955 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0377213,.0361543,.488129,.0361435,.488129 +.0084856,.008393,.1520631,.0083928,.1520631 +.654135,.4014399,10.59742,.3859225,10.59742 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +.064289,.0594801,1.152063,.0594202,1.152063 +.1695417,.1442388,1.933484,.1436127,1.933484 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.4549125,.3073705,8.152063,.2996354,8.152063 +.1695417,.1442388,1.933484,.1436127,1.933484 +.1762009,.1521962,1.26955,.1516534,1.26955 +-.0478814,-.0501049,-.2850945,-.0500877,-.2850945 +-.2549821,-.3684383,-2.175805,-.3602484,-2.175805 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0986021,.0882102,1.597418,.0880281,1.597418 +.0084856,.008393,.1520631,.0083928,.1520631 +.6223226,.383848,11.15206,.3693074,11.15206 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.9571428,.5112708,17.15206,.4792416,17.15206 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.4537809,.3312667,3.26955,.3258617,3.26955 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +1.268485,.6692829,10.82419,.6257678,10.82419 +-.3565811,-.8026257,-4.066515,-.7208934,-4.066515 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0206026,-.0210504,-.1758051,-.0210488,-.1758051 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +.2875024,.2171855,5.152063,.2143638,5.152063 +.3991092,.2791307,7.152063,.2732706,7.152063 +1.347766,.6334519,24.15206,.5770435,24.15206 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.2875024,.2171855,5.152063,.2143638,5.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0029418,.0029313,.0427737,.0029313,.0427737 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.3401269,.2585065,3.37884,.2552908,3.37884 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +.5202903,.3531052,5.933485,.3444154,5.933485 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +2.57544,.9257494,46.15206,.7819858,46.15206 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +.0084856,.008393,.1520631,.0083928,.1520631 +.2837797,.2165023,4.597418,.2138826,4.597418 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.2837797,.2165023,4.597418,.2138826,4.597418 +.1200924,.1047548,2.152063,.1044296,2.152063 +.1922757,.1595985,2.488129,.1586793,2.488129 +1.06875,.5484905,19.15206,.509829,19.15206 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0084856,.008393,.1520631,.0083928,.1520631 +.2875024,.2171855,5.152063,.2143638,5.152063 +.9013395,.4918179,16.15206,.462978,16.15206 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +.2394631,.1945652,2.37884,.1931742,2.37884 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.3991092,.2791307,7.152063,.2732706,7.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +2.098659,.8771978,23.93349,.7750893,23.93349 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1695417,.1442388,1.933484,.1436127,1.933484 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.3486648,-.8185734,-4.511871,-.7270422,-4.511871 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.7897327,.4509728,14.15206,.4282142,14.15206 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1387993,.1218112,1.37884,.1214658,1.37884 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0368762,.0352675,.5974184,.0352558,.5974184 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +.0368762,.0352675,.5974184,.0352558,.5974184 +.1758957,.1455577,3.152063,.1446918,3.152063 +.1200924,.1047548,2.152063,.1044296,2.152063 +.6559389,.4115749,8.488129,.3970432,8.488129 +.0084856,.008393,.1520631,.0083928,.1520631 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +1.347766,.6334519,24.15206,.5770435,24.15206 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.678126,.4071116,12.15206,.3899685,12.15206 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.1387993,.1218112,1.37884,.1214658,1.37884 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.5107159,.3341175,9.152063,.324298,9.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +1.012946,.5301469,18.15206,.4948412,18.15206 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0377213,.0361543,.488129,.0361435,.488129 +.1603279,.1352277,2.597418,.1345765,2.597418 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.8970235,.5022837,13.04277,.4751971,13.04277 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1377923,-.1625678,-1.175805,-.1618294,-1.175805 +.2220538,.1776789,3.597418,.1762155,3.597418 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.2695529,.2109465,3.488129,.2088481,3.488129 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1387993,.1218112,1.37884,.1214658,1.37884 +.1200924,.1047548,2.152063,.1044296,2.152063 +.0965872,.0882683,.8241949,.0881491,.8241949 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.2092683,.1702567,3.042774,.1690549,3.042774 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0986021,.0882102,1.597418,.0880281,1.597418 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.4241073,.3002126,5.488129,.2943222,5.488129 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +.064289,.0594801,1.152063,.0594202,1.152063 +.0381354,.0366623,.3788396,.0366528,.3788396 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +.0986021,.0882102,1.597418,.0880281,1.597418 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.5924091,.374748,9.597419,.3619633,9.597419 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.2316991,.1828133,4.152063,.1811134,4.152063 +.1695417,.1442388,1.933484,.1436127,1.933484 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +.1404928,.1212359,2.042774,.1207979,2.042774 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.4326032,.3079246,4.933485,.3020721,4.933485 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0058326,-.0058712,-.0665157,-.0058712,-.0665157 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.3149909,.2483722,2.26955,.2460503,2.26955 +.1603279,.1352277,2.597418,.1345765,2.597418 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0084856,.008393,.1520631,.0083928,.1520631 +.2316991,.1828133,4.152063,.1811134,4.152063 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0058326,-.0058712,-.0665157,-.0058712,-.0665157 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0368762,.0352675,.5974184,.0352558,.5974184 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +.064289,.0594801,1.152063,.0594202,1.152063 +.7339293,.4294565,13.15206,.4095696,13.15206 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2092683,.1702567,3.042774,.1690549,3.042774 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.3486648,-.8185734,-4.511871,-.7270422,-4.511871 +.0818546,.075218,.9334843,.0751285,.9334843 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.678126,.4071116,12.15206,.3899685,12.15206 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.263856,-.4010768,-2.62116,-.3895907,-2.62116 +.5107159,.3341175,9.152063,.324298,9.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1377923,-.1625678,-1.175805,-.1618294,-1.175805 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1013791,-.1130495,-.7304498,-.1128261,-.7304498 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0818546,.075218,.9334843,.0751285,.9334843 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.263856,-.4010768,-2.62116,-.3895907,-2.62116 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +.0818546,.075218,.9334843,.0751285,.9334843 +.064289,.0594801,1.152063,.0594202,1.152063 +.1695417,.1442388,1.933484,.1436127,1.933484 +.2220538,.1776789,3.597418,.1762155,3.597418 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2220538,.1776789,3.597418,.1762155,3.597418 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2549821,-.3684383,-2.175805,-.3602484,-2.175805 +.0377213,.0361543,.488129,.0361435,.488129 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.4689574,.317137,7.597418,.309191,7.597418 +-.3645199,-.7836041,-3.62116,-.7120315,-3.62116 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.1200924,.1047548,2.152063,.1044296,2.152063 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2549821,-.3684383,-2.175805,-.3602484,-2.175805 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +1.40357,.6492903,25.15206,.5891758,25.15206 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.2316991,.1828133,4.152063,.1811134,4.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +.4241073,.3002126,5.488129,.2943222,5.488129 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.344916,.2587896,3.933484,.2552638,3.933484 +.0965872,.0882683,.8241949,.0881491,.8241949 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.0084856,.008393,.1520631,.0083928,.1520631 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +-.1377923,-.1625678,-1.175805,-.1618294,-1.175805 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.2092683,.1702567,3.042774,.1690549,3.042774 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0058326,-.0058712,-.0665157,-.0058712,-.0665157 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.1695417,.1442388,1.933484,.1436127,1.933484 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0084856,.008393,.1520631,.0083928,.1520631 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1013791,-.1130495,-.7304498,-.1128261,-.7304498 +-.1377923,-.1625678,-1.175805,-.1618294,-1.175805 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1377923,-.1625678,-1.175805,-.1618294,-1.175805 +.0377213,.0361543,.488129,.0361435,.488129 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0029418,.0029313,.0427737,.0029313,.0427737 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.2316991,.1828133,4.152063,.1811134,4.152063 +.5665193,.3595589,10.15206,.347465,10.15206 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.2721603,-.4697121,-3.957226,-.4471826,-3.957226 +.678126,.4071116,12.15206,.3899685,12.15206 +.2394631,.1945652,2.37884,.1931742,2.37884 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +.1404928,.1212359,2.042774,.1207979,2.042774 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0717173,.0661602,1.042774,.0660885,1.042774 +.1922757,.1595985,2.488129,.1586793,2.488129 +.5107159,.3341175,9.152063,.324298,9.152063 +-.0935197,-.1052514,-1.066516,-.1050068,-1.066516 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.0377213,.0361543,.488129,.0361435,.488129 +.2695529,.2109465,3.488129,.2088481,3.488129 +.1758957,.1455577,3.152063,.1446918,3.152063 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0717173,.0661602,1.042774,.0660885,1.042774 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +.1758957,.1455577,3.152063,.1446918,3.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +.2695529,.2109465,3.488129,.2088481,3.488129 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +1.385675,.7078991,11.82419,.6573504,11.82419 +.1758957,.1455577,3.152063,.1446918,3.152063 +.4549125,.3073705,8.152063,.2996354,8.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +1.012946,.5301469,18.15206,.4948412,18.15206 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +1.291963,.6172617,23.15206,.5645132,23.15206 +1.653554,.7368513,24.04277,.6623362,24.04277 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +.1758957,.1455577,3.152063,.1446918,3.152063 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.0368762,.0352675,.5974184,.0352558,.5974184 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.4549125,.3073705,8.152063,.2996354,8.152063 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.5665193,.3595589,10.15206,.347465,10.15206 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.5925709,.4046466,4.26955,.3949974,4.26955 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +-.3645199,-.7836041,-3.62116,-.7120315,-3.62116 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +.1758957,.1455577,3.152063,.1446918,3.152063 +.0084856,.008393,.1520631,.0083928,.1520631 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +.0368762,.0352675,.5974184,.0352558,.5974184 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.039556,-.0415314,-.511871,-.041515,-.511871 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +.0377213,.0361543,.488129,.0361435,.488129 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1168332,-.1371468,-1.511871,-.1365612,-1.511871 +.1603279,.1352277,2.597418,.1345765,2.597418 +.2875024,.2171855,5.152063,.2143638,5.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +.4072315,.2857901,6.597418,.2799032,6.597418 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +.8455361,.4717378,15.15206,.4459912,15.15206 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.0717173,.0661602,1.042774,.0660885,1.042774 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +.0377213,.0361543,.488129,.0361435,.488129 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +.1758957,.1455577,3.152063,.1446918,3.152063 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.2033848,-.2866024,-2.957226,-.281059,-2.957226 +.2220538,.1776789,3.597418,.1762155,3.597418 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.8455361,.4717378,15.15206,.4459912,15.15206 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.0058326,-.0058712,-.0665157,-.0058712,-.0665157 +-.1377923,-.1625678,-1.175805,-.1618294,-1.175805 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +.5107159,.3341175,9.152063,.324298,9.152063 +.3433058,.2491663,6.152063,.2449511,6.152063 +.0368762,.0352675,.5974184,.0352558,.5974184 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +-.2549821,-.3684383,-2.175805,-.3602484,-2.175805 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.3433058,.2491663,6.152063,.2449511,6.152063 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.5107159,.3341175,9.152063,.324298,9.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.0717173,.0661602,1.042774,.0660885,1.042774 +-.0658337,-.0718597,-.9572263,-.0717679,-.9572263 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +.0965872,.0882683,.8241949,.0881491,.8241949 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.2100274,-.3068264,-3.402582,-.2996006,-3.402582 +-.1346093,-.1642733,-1.957226,-.1631924,-1.957226 +-.039556,-.0415314,-.511871,-.041515,-.511871 +.0084856,.008393,.1520631,.0083928,.1520631 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0865756,-.0979688,-1.402582,-.0977197,-1.402582 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.0084856,.008393,.1520631,.0083928,.1520631 +.0084856,.008393,.1520631,.0083928,.1520631 +.0084856,.008393,.1520631,.0083928,.1520631 +.2316991,.1828133,4.152063,.1811134,4.152063 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.2713876,-.4505308,-3.511871,-.4318017,-3.511871 +.0368762,.0352675,.5974184,.0352558,.5974184 +.7897327,.4509728,14.15206,.4282142,14.15206 +.0084856,.008393,.1520631,.0083928,.1520631 +.2880172,.2334572,1.714906,.2317498,1.714906 +.1404928,.1212359,2.042774,.1207979,2.042774 +.1758957,.1455577,3.152063,.1446918,3.152063 +.0374109,.0361284,.2695502,.0361211,.2695502 +.064289,.0594801,1.152063,.0594202,1.152063 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +.5653462,.385091,4.824195,.3757893,4.824195 +.3991092,.2791307,7.152063,.2732706,7.152063 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.039556,-.0415314,-.511871,-.041515,-.511871 +.7897327,.4509728,14.15206,.4282142,14.15206 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +.1758957,.1455577,3.152063,.1446918,3.152063 +.2875024,.2171855,5.152063,.2143638,5.152063 +1.459373,.6647973,26.15206,.6009349,26.15206 +-.0625284,-.0672083,-.6211604,-.06715,-.6211604 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.2705312,-.50059,-4.847937,-.4703354,-4.847937 +-.2717533,-.486225,-4.402582,-.4598424,-4.402582 +-.1812069,-.235488,-2.066516,-.2328148,-2.066516 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.1589245,-.2079412,-2.847937,-.2054576,-2.847937 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +-.1631922,-.2025416,-1.62116,-.200975,-1.62116 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +.1200924,.1047548,2.152063,.1044296,2.152063 +-.268894,-.4279774,-3.066516,-.4129501,-3.066516 +.0029418,.0029313,.0427737,.0029313,.0427737 +-.0248497,-.0256698,-.4025816,-.0256653,-.4025816 +-.1941104,-.2631102,-2.511871,-.259097,-2.511871 +.064289,.0594801,1.152063,.0594202,1.152063 +-.3263345,-.8539706,-5.847937,-.7352132,-5.847937 +.064289,.0594801,1.152063,.0594202,1.152063 +-.1483015,-.187626,-2.402582,-.1859072,-2.402582 +-.0473177,-.0505508,-.8479369,-.050514,-.8479369 +-.1031211,-.120682,-1.847937,-.120186,-1.847937 +-.0206026,-.0210504,-.1758051,-.0210488,-.1758051 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.0058326,-.0058712,-.0665157,-.0058712,-.0665157 +-.2147278,-.3244199,-3.847937,-.3153918,-3.847937 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +.3023081,.2300153,4.21086,.2271767,4.21086 +1.307403,.642112,18.21086,.5910361,18.21086 +.6612704,.4108095,9.21086,.3956947,9.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +.0151382,.0148698,.2108601,.014869,.2108601 +.7330629,.4409489,10.21086,.422518,10.21086 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +.1340736,.1171437,1.656215,.1167887,1.656215 +.0582021,.0549267,.546926,.054896,.546926 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.1340736,.1171437,1.656215,.1167887,1.656215 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +.7621819,.5085961,3.328347,.4949848,3.328347 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.2959773,.2280665,3.656215,.2255045,3.656215 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.0751906,.0709566,.3283472,.0709169,.3283472 +.3741006,.2713932,5.21086,.2667892,5.21086 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +.0650888,.061425,.4376366,.0613907,.4376366 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2029782,-.2533981,-1.117008,-.2513312,-1.117008 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.1016078,.0918079,1.101571,.0916507,1.101571 +.1587231,.1350213,2.21086,.1344345,2.21086 +.0093688,.0092731,.1015707,.009273,.1015707 +.123677,.1107268,.9922814,.1105013,.9922814 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.3810951,-.7192875,-2.562363,-.6731001,-2.562363 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.232916,.2006459,.7737026,.199904,.7737026 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.5238857,.3775982,2.882992,.370934,2.882992 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0151382,.0148698,.2108601,.014869,.2108601 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.0751906,.0709566,.3283472,.0709169,.3283472 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.367465,-.775436,-3.453074,-.7077873,-3.453074 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.6612704,.4108095,9.21086,.3956947,9.21086 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +.991179,.6123406,4.328347,.5892943,4.328347 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +.0151382,.0148698,.2108601,.014869,.2108601 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +.0151382,.0148698,.2108601,.014869,.2108601 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +.0869306,.0790553,1.21086,.0789366,1.21086 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.0093688,.0092731,.1015707,.009273,.1015707 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.3769291,.2755397,4.656216,.2710823,4.656216 +.1340736,.1171437,1.656215,.1167887,1.656215 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +.0151382,.0148698,.2108601,.014869,.2108601 +.0650888,.061425,.4376366,.0613907,.4376366 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +.0151382,.0148698,.2108601,.014869,.2108601 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.1604538,.1416409,.882992,.1412745,.882992 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +.0650888,.061425,.4376366,.0613907,.4376366 +-.2029782,-.2533981,-1.117008,-.2513312,-1.117008 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.0482147,-.050872,-.4530739,-.0508476,-.4530739 +.1587231,.1350213,2.21086,.1344345,2.21086 +.2305156,.1848784,3.21086,.1833871,3.21086 +.0151382,.0148698,.2108601,.014869,.2108601 +.1604538,.1416409,.882992,.1412745,.882992 +.0151382,.0148698,.2108601,.014869,.2108601 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.3741006,.2713932,5.21086,.2667892,5.21086 +.0582021,.0549267,.546926,.054896,.546926 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.0151382,.0148698,.2108601,.014869,.2108601 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +.1646189,.1418189,1.546926,.1412949,1.546926 +.0151382,.0148698,.2108601,.014869,.2108601 +.1016078,.0918079,1.101571,.0916507,1.101571 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +-.3595873,-.7958529,-3.898429,-.7179135,-3.898429 +.3729551,.2821995,2.992281,.2785753,2.992281 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0151382,.0148698,.2108601,.014869,.2108601 +.0151382,.0148698,.2108601,.014869,.2108601 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.3828036,-.6256999,-1.671653,-.6012149,-1.671653 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.5176855,.3454629,7.21086,.3362196,7.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.0151382,.0148698,.2108601,.014869,.2108601 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +-.3595873,-.7958529,-3.898429,-.7179135,-3.898429 +.7330629,.4409489,10.21086,.422518,10.21086 +-.3828036,-.6256999,-1.671653,-.6012149,-1.671653 +.3741006,.2713932,5.21086,.2667892,5.21086 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +.0151382,.0148698,.2108601,.014869,.2108601 +-.3438242,-.8272628,-4.78914,-.7298161,-4.78914 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +.3741006,.2713932,5.21086,.2667892,5.21086 +-.3595873,-.7958529,-3.898429,-.7179135,-3.898429 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.5331848,.389747,2.328347,.3834404,2.328347 +.5331848,.389747,2.328347,.3834404,2.328347 +.4578809,.3191396,5.656216,.3123125,5.656216 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +.3741006,.2713932,5.21086,.2667892,5.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.123677,.1107268,.9922814,.1105013,.9922814 +.6612704,.4108095,9.21086,.3956947,9.21086 +-.02783,-.0287708,-.3437845,-.0287655,-.3437845 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0482147,-.050872,-.4530739,-.0508476,-.4530739 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +.7330629,.4409489,10.21086,.422518,10.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.3748792,-.7504815,-3.007719,-.6934423,-3.007719 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +.3023081,.2300153,4.21086,.2271767,4.21086 +.1604538,.1416409,.882992,.1412745,.882992 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0582021,.0549267,.546926,.054896,.546926 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.2138168,.1804787,1.437637,.1796173,1.437637 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +.4975942,.3521915,3.992281,.3452767,3.992281 +.1587231,.1350213,2.21086,.1344345,2.21086 +.5238857,.3775982,2.882992,.370934,2.882992 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.5112727,.364731,3.437637,.3578881,3.437637 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.0093688,.0092731,.1015707,.009273,.1015707 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.0582021,.0549267,.546926,.054896,.546926 +.1340736,.1171437,1.656215,.1167887,1.656215 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.1646189,.1418189,1.546926,.1412949,1.546926 +-.367465,-.775436,-3.453074,-.7077873,-3.453074 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.6600007,.4404215,4.437637,.4286361,4.437637 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +.2860859,.2238617,3.101571,.221633,3.101571 +.2710357,.216176,2.546926,.2143441,2.546926 +.0151382,.0148698,.2108601,.014869,.2108601 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.3438242,-.8272628,-4.78914,-.7298161,-4.78914 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.0151382,.0148698,.2108601,.014869,.2108601 +.5176855,.3454629,7.21086,.3362196,7.21086 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +.0650888,.061425,.4376366,.0613907,.4376366 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +.3625448,.2793542,2.437637,.2762155,2.437637 +-.2029782,-.2533981,-1.117008,-.2513312,-1.117008 +.2138168,.1804787,1.437637,.1796173,1.437637 +-.3748792,-.7504815,-3.007719,-.6934423,-3.007719 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0482147,-.050872,-.4530739,-.0508476,-.4530739 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.0151382,.0148698,.2108601,.014869,.2108601 +.0151382,.0148698,.2108601,.014869,.2108601 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.3828036,-.6256999,-1.671653,-.6012149,-1.671653 +.0151382,.0148698,.2108601,.014869,.2108601 +.0151382,.0148698,.2108601,.014869,.2108601 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.3595873,-.7958529,-3.898429,-.7179135,-3.898429 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +.0151382,.0148698,.2108601,.014869,.2108601 +.0151382,.0148698,.2108601,.014869,.2108601 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.0151382,.0148698,.2108601,.014869,.2108601 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +.2150255,.1757395,2.656215,.1745529,2.656215 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.0093688,.0092731,.1015707,.009273,.1015707 +-.3748792,-.7504815,-3.007719,-.6934423,-3.007719 +.1587231,.1350213,2.21086,.1344345,2.21086 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +1.163818,.5970087,16.21086,.5548727,16.21086 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +1.666365,.7445231,23.21086,.6696882,23.21086 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +.5112727,.364731,3.437637,.3578881,3.437637 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +.5331848,.389747,2.328347,.3834404,2.328347 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.3625448,.2793542,2.437637,.2762155,2.437637 +-.3595873,-.7958529,-3.898429,-.7179135,-3.898429 +-.0482147,-.050872,-.4530739,-.0508476,-.4530739 +.0151382,.0148698,.2108601,.014869,.2108601 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.9484404,.5235284,13.21086,.4939418,13.21086 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.3729551,.2821995,2.992281,.2785753,2.992281 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.1646189,.1418189,1.546926,.1412949,1.546926 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.02783,-.0287708,-.3437845,-.0287655,-.3437845 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.5176855,.3454629,7.21086,.3362196,7.21086 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +-.0482147,-.050872,-.4530739,-.0508476,-.4530739 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.3438242,-.8272628,-4.78914,-.7298161,-4.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.0482147,-.050872,-.4530739,-.0508476,-.4530739 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +.5112727,.364731,3.437637,.3578881,3.437637 +.7621819,.5085961,3.328347,.4949848,3.328347 +.3023081,.2300153,4.21086,.2271767,4.21086 +.0151382,.0148698,.2108601,.014869,.2108601 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.0482147,-.050872,-.4530739,-.0508476,-.4530739 +.6612704,.4108095,9.21086,.3956947,9.21086 +.3741006,.2713932,5.21086,.2667892,5.21086 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +.1604538,.1416409,.882992,.1412745,.882992 +.4838693,.3403586,4.546926,.3334374,4.546926 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.3438242,-.8272628,-4.78914,-.7298161,-4.78914 +.1587231,.1350213,2.21086,.1344345,2.21086 +.1587231,.1350213,2.21086,.1344345,2.21086 +.7330629,.4409489,10.21086,.422518,10.21086 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.445893,.3097042,6.21086,.3029525,6.21086 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.123677,.1107268,.9922814,.1105013,.9922814 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +1.092025,.5733635,15.21086,.5355382,15.21086 +-.3595873,-.7958529,-3.898429,-.7179135,-3.898429 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.0869306,.0790553,1.21086,.0789366,1.21086 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.589478,.3790623,8.21086,.3670201,8.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.0869306,.0790553,1.21086,.0789366,1.21086 +.1587231,.1350213,2.21086,.1344345,2.21086 +.8766479,.4971597,12.21086,.4714706,12.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.02783,-.0287708,-.3437845,-.0287655,-.3437845 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.3810951,-.7192875,-2.562363,-.6731001,-2.562363 +.445893,.3097042,6.21086,.3029525,6.21086 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +.3741006,.2713932,5.21086,.2667892,5.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +1.881743,.8003727,26.21086,.7106016,26.21086 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0869306,.0790553,1.21086,.0789366,1.21086 +.0151382,.0148698,.2108601,.014869,.2108601 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.7330629,.4409489,10.21086,.422518,10.21086 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.0151382,.0148698,.2108601,.014869,.2108601 +.589478,.3790623,8.21086,.3670201,8.21086 +1.881743,.8003727,26.21086,.7106016,26.21086 +1.450988,.6846744,20.21086,.6243032,20.21086 +.0650888,.061425,.4376366,.0613907,.4376366 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.3748792,-.7504815,-3.007719,-.6934423,-3.007719 +.7330629,.4409489,10.21086,.422518,10.21086 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +.3729551,.2821995,2.992281,.2785753,2.992281 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.3023081,.2300153,4.21086,.2271767,4.21086 +.0582021,.0549267,.546926,.054896,.546926 +.0751906,.0709566,.3283472,.0709169,.3283472 +.3741006,.2713932,5.21086,.2667892,5.21086 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.3748792,-.7504815,-3.007719,-.6934423,-3.007719 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0650888,.061425,.4376366,.0613907,.4376366 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.0093688,.0092731,.1015707,.009273,.1015707 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.02783,-.0287708,-.3437845,-.0287655,-.3437845 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +.1604538,.1416409,.882992,.1412745,.882992 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.0482147,-.050872,-.4530739,-.0508476,-.4530739 +.3741006,.2713932,5.21086,.2667892,5.21086 +.0093688,.0092731,.1015707,.009273,.1015707 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.0869306,.0790553,1.21086,.0789366,1.21086 +.1587231,.1350213,2.21086,.1344345,2.21086 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.0869306,.0790553,1.21086,.0789366,1.21086 +.5176855,.3454629,7.21086,.3362196,7.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +.0093688,.0092731,.1015707,.009273,.1015707 +.4838693,.3403586,4.546926,.3334374,4.546926 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +.123677,.1107268,.9922814,.1105013,.9922814 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0151382,.0148698,.2108601,.014869,.2108601 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +.0151382,.0148698,.2108601,.014869,.2108601 +.0869306,.0790553,1.21086,.0789366,1.21086 +1.020233,.5488976,14.21086,.5152602,14.21086 +1.020233,.5488976,14.21086,.5152602,14.21086 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +.1938469,.1621579,2.101571,.1613,2.101571 +-.02783,-.0287708,-.3437845,-.0287655,-.3437845 +-.3810951,-.7192875,-2.562363,-.6731001,-2.562363 +.5238857,.3775982,2.882992,.370934,2.882992 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +.2305156,.1848784,3.21086,.1833871,3.21086 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.0151382,.0148698,.2108601,.014869,.2108601 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.0151382,.0148698,.2108601,.014869,.2108601 +.1587231,.1350213,2.21086,.1344345,2.21086 +.0869306,.0790553,1.21086,.0789366,1.21086 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +.1340736,.1171437,1.656215,.1167887,1.656215 +.0751906,.0709566,.3283472,.0709169,.3283472 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.0869306,.0790553,1.21086,.0789366,1.21086 +.0650888,.061425,.4376366,.0613907,.4376366 +-.3828036,-.6256999,-1.671653,-.6012149,-1.671653 +.589478,.3790623,8.21086,.3670201,8.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +.3741006,.2713932,5.21086,.2667892,5.21086 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +.0531218,.0501328,.6562154,.0501048,.6562154 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0151382,.0148698,.2108601,.014869,.2108601 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.2305156,.1848784,3.21086,.1833871,3.21086 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.0869306,.0790553,1.21086,.0789366,1.21086 +.2860859,.2238617,3.101571,.221633,3.101571 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +-.3516372,-.8128667,-4.343784,-.7249908,-4.343784 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.2710357,.216176,2.546926,.2143441,2.546926 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +.3741006,.2713932,5.21086,.2667892,5.21086 +.1587231,.1350213,2.21086,.1344345,2.21086 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.1587231,.1350213,2.21086,.1344345,2.21086 +.5388327,.3595736,6.656216,.3499527,6.656216 +.1587231,.1350213,2.21086,.1344345,2.21086 +.0869306,.0790553,1.21086,.0789366,1.21086 +.2483161,.2029448,1.992281,.2015743,1.992281 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +.3741006,.2713932,5.21086,.2667892,5.21086 +-.02783,-.0287708,-.3437845,-.0287655,-.3437845 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.2305156,.1848784,3.21086,.1833871,3.21086 +.1587231,.1350213,2.21086,.1344345,2.21086 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +.3741006,.2713932,5.21086,.2667892,5.21086 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +.0151382,.0148698,.2108601,.014869,.2108601 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.3774525,.2816094,3.546926,.2776222,3.546926 +.8048554,.4696782,11.21086,.4477146,11.21086 +.9484404,.5235284,13.21086,.4939418,13.21086 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.02783,-.0287708,-.3437845,-.0287655,-.3437845 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.1587231,.1350213,2.21086,.1344345,2.21086 +.3625448,.2793542,2.437637,.2762155,2.437637 +.0869306,.0790553,1.21086,.0789366,1.21086 +.445893,.3097042,6.21086,.3029525,6.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.4705639,.329342,5.101571,.3224552,5.101571 +.0869306,.0790553,1.21086,.0789366,1.21086 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.0681247,-.0718756,-.2262975,-.0718412,-.2262975 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +.0869306,.0790553,1.21086,.0789366,1.21086 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.0869306,.0790553,1.21086,.0789366,1.21086 +.2305156,.1848784,3.21086,.1833871,3.21086 +.2305156,.1848784,3.21086,.1833871,3.21086 +.7056017,.4708467,3.882992,.4582465,3.882992 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +1.881743,.8003727,26.21086,.7106016,26.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.4578809,.3191396,5.656216,.3123125,5.656216 +-.2610483,-.3895254,-2.453074,-.3793175,-2.453074 +.0531218,.0501328,.6562154,.0501048,.6562154 +-.0482147,-.050872,-.4530739,-.0508476,-.4530739 +-.0482147,-.050872,-.4530739,-.0508476,-.4530739 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +.0151382,.0148698,.2108601,.014869,.2108601 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +.445893,.3097042,6.21086,.3029525,6.21086 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +.589478,.3790623,8.21086,.3670201,8.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.2029782,-.2533981,-1.117008,-.2513312,-1.117008 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.562803,.3755679,6.101571,.3655188,6.101571 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.3023081,.2300153,4.21086,.2271767,4.21086 +.0151382,.0148698,.2108601,.014869,.2108601 +.3741006,.2713932,5.21086,.2667892,5.21086 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.1340736,.1171437,1.656215,.1167887,1.656215 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.2610483,-.3895254,-2.453074,-.3793175,-2.453074 +2.09712,.8528964,29.21086,.7478458,29.21086 +-.3748792,-.7504815,-3.007719,-.6934423,-3.007719 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.3810951,-.7192875,-2.562363,-.6731001,-2.562363 +.1340736,.1171437,1.656215,.1167887,1.656215 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.367465,-.775436,-3.453074,-.7077873,-3.453074 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.2305156,.1848784,3.21086,.1833871,3.21086 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.3438242,-.8272628,-4.78914,-.7298161,-4.78914 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.2029782,-.2533981,-1.117008,-.2513312,-1.117008 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.3810951,-.7192875,-2.562363,-.6731001,-2.562363 +-.2029782,-.2533981,-1.117008,-.2513312,-1.117008 +.1587231,.1350213,2.21086,.1344345,2.21086 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +-.3846942,-.6791795,-2.117008,-.6439368,-2.117008 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.2610483,-.3895254,-2.453074,-.3793175,-2.453074 +-.2610483,-.3895254,-2.453074,-.3793175,-2.453074 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.123677,.1107268,.9922814,.1105013,.9922814 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.0531218,.0501328,.6562154,.0501048,.6562154 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.3810951,-.7192875,-2.562363,-.6731001,-2.562363 +.0151382,.0148698,.2108601,.014869,.2108601 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +.0151382,.0148698,.2108601,.014869,.2108601 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +.3729551,.2821995,2.992281,.2785753,2.992281 +.3741006,.2713932,5.21086,.2667892,5.21086 +.3741006,.2713932,5.21086,.2667892,5.21086 +.0582021,.0549267,.546926,.054896,.546926 +.3769291,.2755397,4.656216,.2710823,4.656216 +.1587231,.1350213,2.21086,.1344345,2.21086 +.5176855,.3454629,7.21086,.3362196,7.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.0151382,.0148698,.2108601,.014869,.2108601 +.0151382,.0148698,.2108601,.014869,.2108601 +.0531218,.0501328,.6562154,.0501048,.6562154 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +.7007363,.4329274,8.656216,.4166366,8.656216 +.3041877,.2486003,1.328347,.246921,1.328347 +.2483161,.2029448,1.992281,.2015743,1.992281 +.0151382,.0148698,.2108601,.014869,.2108601 +.2138168,.1804787,1.437637,.1796173,1.437637 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.0531218,.0501328,.6562154,.0501048,.6562154 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +.0093688,.0092731,.1015707,.009273,.1015707 +.123677,.1107268,.9922814,.1105013,.9922814 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.589478,.3790623,8.21086,.3670201,8.21086 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +.1016078,.0918079,1.101571,.0916507,1.101571 +.0582021,.0549267,.546926,.054896,.546926 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.5176855,.3454629,7.21086,.3362196,7.21086 +1.80995,.7821549,25.21086,.6974062,25.21086 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.2305156,.1848784,3.21086,.1833871,3.21086 +.3741006,.2713932,5.21086,.2667892,5.21086 +.0151382,.0148698,.2108601,.014869,.2108601 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.1587231,.1350213,2.21086,.1344345,2.21086 +.1340736,.1171437,1.656215,.1167887,1.656215 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.3846942,-.6791795,-2.117008,-.6439368,-2.117008 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.3041877,.2486003,1.328347,.246921,1.328347 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.0751906,.0709566,.3283472,.0709169,.3283472 +-.0482147,-.050872,-.4530739,-.0508476,-.4530739 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +.2710357,.216176,2.546926,.2143441,2.546926 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.3438242,-.8272628,-4.78914,-.7298161,-4.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.2305156,.1848784,3.21086,.1833871,3.21086 +.0151382,.0148698,.2108601,.014869,.2108601 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.1646189,.1418189,1.546926,.1412949,1.546926 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.2150255,.1757395,2.656215,.1745529,2.656215 +-.3748792,-.7504815,-3.007719,-.6934423,-3.007719 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +.3023081,.2300153,4.21086,.2271767,4.21086 +.7621819,.5085961,3.328347,.4949848,3.328347 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.7621819,.5085961,3.328347,.4949848,3.328347 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +.0151382,.0148698,.2108601,.014869,.2108601 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +1.163818,.5970087,16.21086,.5548727,16.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.2029782,-.2533981,-1.117008,-.2513312,-1.117008 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.123677,.1107268,.9922814,.1105013,.9922814 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +.0582021,.0549267,.546926,.054896,.546926 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.2305156,.1848784,3.21086,.1833871,3.21086 +.3625448,.2793542,2.437637,.2762155,2.437637 +-.3810951,-.7192875,-2.562363,-.6731001,-2.562363 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +.3741006,.2713932,5.21086,.2667892,5.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +.2483161,.2029448,1.992281,.2015743,1.992281 +-.2029782,-.2533981,-1.117008,-.2513312,-1.117008 +.0151382,.0148698,.2108601,.014869,.2108601 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.3828036,-.6256999,-1.671653,-.6012149,-1.671653 +.0650888,.061425,.4376366,.0613907,.4376366 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.367465,-.775436,-3.453074,-.7077873,-3.453074 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.3741006,.2713932,5.21086,.2667892,5.21086 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.02783,-.0287708,-.3437845,-.0287655,-.3437845 +.8048554,.4696782,11.21086,.4477146,11.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.0869306,.0790553,1.21086,.0789366,1.21086 +.8766479,.4971597,12.21086,.4714706,12.21086 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.0151382,.0148698,.2108601,.014869,.2108601 +.0151382,.0148698,.2108601,.014869,.2108601 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +.0151382,.0148698,.2108601,.014869,.2108601 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.2610483,-.3895254,-2.453074,-.3793175,-2.453074 +.3023081,.2300153,4.21086,.2271767,4.21086 +.0093688,.0092731,.1015707,.009273,.1015707 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +.2305156,.1848784,3.21086,.1833871,3.21086 +.7621819,.5085961,3.328347,.4949848,3.328347 +-.0482147,-.050872,-.4530739,-.0508476,-.4530739 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.7330629,.4409489,10.21086,.422518,10.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2029782,-.2533981,-1.117008,-.2513312,-1.117008 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +.3741006,.2713932,5.21086,.2667892,5.21086 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +1.163818,.5970087,16.21086,.5548727,16.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.367465,-.775436,-3.453074,-.7077873,-3.453074 +.1646189,.1418189,1.546926,.1412949,1.546926 +-.2029782,-.2533981,-1.117008,-.2513312,-1.117008 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2029782,-.2533981,-1.117008,-.2513312,-1.117008 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +1.092025,.5733635,15.21086,.5355382,15.21086 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +.1604538,.1416409,.882992,.1412745,.882992 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.3774525,.2816094,3.546926,.2776222,3.546926 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +.1587231,.1350213,2.21086,.1344345,2.21086 +.1646189,.1418189,1.546926,.1412949,1.546926 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +.5331848,.389747,2.328347,.3834404,2.328347 +1.163818,.5970087,16.21086,.5548727,16.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +.1340736,.1171437,1.656215,.1167887,1.656215 +-.0482147,-.050872,-.4530739,-.0508476,-.4530739 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.2610483,-.3895254,-2.453074,-.3793175,-2.453074 +.0151382,.0148698,.2108601,.014869,.2108601 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +.0869306,.0790553,1.21086,.0789366,1.21086 +.1340736,.1171437,1.656215,.1167887,1.656215 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +.232916,.2006459,.7737026,.199904,.7737026 +.3741006,.2713932,5.21086,.2667892,5.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.1587231,.1350213,2.21086,.1344345,2.21086 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.3748792,-.7504815,-3.007719,-.6934423,-3.007719 +.0751906,.0709566,.3283472,.0709169,.3283472 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.1016078,.0918079,1.101571,.0916507,1.101571 +.2710357,.216176,2.546926,.2143441,2.546926 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +.0093688,.0092731,.1015707,.009273,.1015707 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.3595873,-.7958529,-3.898429,-.7179135,-3.898429 +.0151382,.0148698,.2108601,.014869,.2108601 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +.2305156,.1848784,3.21086,.1833871,3.21086 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.589478,.3790623,8.21086,.3670201,8.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.0869306,.0790553,1.21086,.0789366,1.21086 +.589478,.3790623,8.21086,.3670201,8.21086 +.0151382,.0148698,.2108601,.014869,.2108601 +.1587231,.1350213,2.21086,.1344345,2.21086 +.0650888,.061425,.4376366,.0613907,.4376366 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +.123677,.1107268,.9922814,.1105013,.9922814 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.2029782,-.2533981,-1.117008,-.2513312,-1.117008 +.123677,.1107268,.9922814,.1105013,.9922814 +1.23561,.6199043,17.21086,.5733476,17.21086 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.2610483,-.3895254,-2.453074,-.3793175,-2.453074 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +.0582021,.0549267,.546926,.054896,.546926 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.4838693,.3403586,4.546926,.3334374,4.546926 +.590286,.3939059,5.546926,.3833659,5.546926 +-.2673483,-.4183992,-2.898429,-.4047313,-2.898429 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.3595873,-.7958529,-3.898429,-.7179135,-3.898429 +.2710357,.216176,2.546926,.2143441,2.546926 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +.3769291,.2755397,4.656216,.2710823,4.656216 +.1587231,.1350213,2.21086,.1344345,2.21086 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +1.995965,.8423971,24.65622,.74633,24.65622 +.0582021,.0549267,.546926,.054896,.546926 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.2323671,-.3101193,-1.562363,-.3058547,-1.562363 +.6612704,.4108095,9.21086,.3956947,9.21086 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0151382,.0148698,.2108601,.014869,.2108601 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.02783,-.0287708,-.3437845,-.0287655,-.3437845 +1.25075,.6982957,6.882992,.6602709,6.882992 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +.445893,.3097042,6.21086,.3029525,6.21086 +.1587231,.1350213,2.21086,.1344345,2.21086 +.0531218,.0501328,.6562154,.0501048,.6562154 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.0582021,.0549267,.546926,.054896,.546926 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +.0650888,.061425,.4376366,.0613907,.4376366 +.2305156,.1848784,3.21086,.1833871,3.21086 +.7330629,.4409489,10.21086,.422518,10.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.3023081,.2300153,4.21086,.2271767,4.21086 +.0650888,.061425,.4376366,.0613907,.4376366 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.5176855,.3454629,7.21086,.3362196,7.21086 +.0151382,.0148698,.2108601,.014869,.2108601 +.1646189,.1418189,1.546926,.1412949,1.546926 +.0869306,.0790553,1.21086,.0789366,1.21086 +.3783249,.2791079,4.101571,.2748505,4.101571 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0650888,.061425,.4376366,.0613907,.4376366 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.367465,-.775436,-3.453074,-.7077873,-3.453074 +.0869306,.0790553,1.21086,.0789366,1.21086 +.2959773,.2280665,3.656215,.2255045,3.656215 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +.5331848,.389747,2.328347,.3834404,2.328347 +.0869306,.0790553,1.21086,.0789366,1.21086 +.2305156,.1848784,3.21086,.1833871,3.21086 +.3741006,.2713932,5.21086,.2667892,5.21086 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +.0151382,.0148698,.2108601,.014869,.2108601 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.0869306,.0790553,1.21086,.0789366,1.21086 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0212622,-.0216729,-.1170081,-.0216716,-.1170081 +.2483161,.2029448,1.992281,.2015743,1.992281 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.3516372,-.8128667,-4.343784,-.7249908,-4.343784 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +2.240705,.8863206,31.21086,.7709416,31.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.3741006,.2713932,5.21086,.2667892,5.21086 +.7330629,.4409489,10.21086,.422518,10.21086 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +-.3691655,-.5508237,-1.226297,-.5363927,-1.226297 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +-.2706854,-.4424603,-3.343785,-.4251429,-3.343785 +-.0828702,-.0917059,-.8984293,-.0915492,-.8984293 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +.0151382,.0148698,.2108601,.014869,.2108601 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +.991179,.6123406,4.328347,.5892943,4.328347 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.2138168,.1804787,1.437637,.1796173,1.437637 +.0751906,.0709566,.3283472,.0709169,.3283472 +-.1751093,-.2237572,-1.898429,-.2215315,-1.898429 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +.5176855,.3454629,7.21086,.3362196,7.21086 +.445893,.3097042,6.21086,.3029525,6.21086 +-.2610483,-.3895254,-2.453074,-.3793175,-2.453074 +.445893,.3097042,6.21086,.3029525,6.21086 +.1938469,.1621579,2.101571,.1613,2.101571 +-.3748792,-.7504815,-3.007719,-.6934423,-3.007719 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +.1938469,.1621579,2.101571,.1613,2.101571 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0681247,-.0718756,-.2262975,-.0718412,-.2262975 +-.0836392,-.0911419,-.5623633,-.0910299,-.5623633 +.1646189,.1418189,1.546926,.1412949,1.546926 +-.02783,-.0287708,-.3437845,-.0287655,-.3437845 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +-.2029782,-.2533981,-1.117008,-.2513312,-1.117008 +.0582021,.0549267,.546926,.054896,.546926 +-.1546315,-.1883941,-1.453074,-.1871749,-1.453074 +-.2029782,-.2533981,-1.117008,-.2513312,-1.117008 +-.367465,-.775436,-3.453074,-.7077873,-3.453074 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.2610483,-.3895254,-2.453074,-.3793175,-2.453074 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 +-.3748792,-.7504815,-3.007719,-.6934423,-3.007719 +-.2610483,-.3895254,-2.453074,-.3793175,-2.453074 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +.0151382,.0148698,.2108601,.014869,.2108601 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0482147,-.050872,-.4530739,-.0508476,-.4530739 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.3023081,.2300153,4.21086,.2271767,4.21086 +-.1256011,-.1451715,-1.007719,-.1446654,-1.007719 +-.3516372,-.8128667,-4.343784,-.7249908,-4.343784 +-.2502402,-.3542343,-2.007719,-.3472027,-2.007719 +.1646189,.1418189,1.546926,.1412949,1.546926 +.1016078,.0918079,1.101571,.0916507,1.101571 +-.000962,-.000963,-.0077187,-.000963,-.0077187 +.2305156,.1848784,3.21086,.1833871,3.21086 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.0151382,.0148698,.2108601,.014869,.2108601 +-.1538065,-.1777664,-.6716527,-.177147,-.6716527 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.2720317,-.4628195,-3.78914,-.4417326,-3.78914 +.445893,.3097042,6.21086,.3029525,6.21086 +-.2002393,-.2781606,-2.78914,-.2732145,-2.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.1284468,-.1545255,-1.78914,-.1536491,-1.78914 +-.0566543,-.0609614,-.7891399,-.0609069,-.7891399 +.4975942,.3521915,3.992281,.3452767,3.992281 +.1604538,.1416409,.882992,.1412745,.882992 +-.1087818,-.1257334,-1.343785,-.125295,-1.343785 +.1938469,.1621579,2.101571,.1613,2.101571 +-.1897336,-.2532259,-2.343785,-.2497431,-2.343785 diff --git a/statsmodels/genmod/tests/results/inv_gaussian.csv b/statsmodels/genmod/tests/results/inv_gaussian.csv new file mode 100644 index 0000000..c611b32 --- /dev/null +++ b/statsmodels/genmod/tests/results/inv_gaussian.csv @@ -0,0 +1,25001 @@ +xig,x1,x2 +1.2733455,.49838599,1.3452648 +.3134754,.4823677,.74737328 +.79428208,1.136941,.14203239 +1.1283428,.1553426,.38986253 +.85636687,.48609028,1.4195813 +.8847369,.01187518,.84863965 +.93978618,.59263364,.83107964 +1.4064734,.20782785,2.4136595 +1.3880192,.45899967,.88479622 +1.0078955,.34310947,.46912135 +.66262165,.55882829,1.3560229 +.5218216,.83938895,.87164671 +1.2298233,1.3686679,1.833663 +1.4759632,1.0145688,1.3128653 +.78120167,.95606991,1.5949664 +.31531516,1.2625565,.21471553 +.51332919,.840604,.16322012 +1.1449052,1.3422888,1.7304837 +.90796108,.14451251,.02378754 +1.1701425,.69556794,.04121212 +.89112379,.70804283,.96610346 +.68888678,.28537203,.15814583 +.81733916,1.210205,2.239869 +.81293272,1.4899738,1.2692067 +2.2681783,2.0214993,1.3764563 +.37072985,1.5086601,.10230105 +.71890326,.88390672,1.649674 +.6535868,.2333771,.14298123 +.46327858,1.3480884,1.02747 +.94348579,.66535475,.29169035 +.72949058,.95472274,.31374849 +1.0049225,.60514897,.13809601 +1.2394609,1.1118678,.5508297 +.5840114,1.2164422,.75518542 +.68692879,1.5018362,.15566363 +.65607601,.7520919,.58255358 +.68230522,.66422663,2.3351979 +.38072431,1.1493521,2.0816592 +1.0911888,.93677118,.10547662 +.90381013,1.9432397,1.8229329 +.23850096,1.1184735,1.2997025 +.40942881,.94033327,.37675141 +.41106111,.17151647,.17630774 +.22629062,.98208984,.26666849 +1.7591356,1.1231629,.23875602 +1.3269091,.24311131,1.4521669 +.51562837,.73523005,.26164772 +1.0113478,1.1558606,1.4190539 +1.3040747,.09702838,.69747585 +.40957397,.52268401,.68505095 +.92400471,1.6172428,.06064388 +.48751691,1.1276329,.31490952 +.94364294,1.5692507,.7941354 +1.2680056,1.1867089,.59132319 +.67569624,1.8616588,1.5608065 +.69129427,.84536517,.05981247 +.55434136,.4454891,.8110717 +.94573446,.89643545,1.152246 +.65631943,1.2017119,.64112795 +.3358859,1.6225885,.70712986 +.83127453,.21114306,.75474855 +1.3642193,.52669191,.26292523 +1.5255932,.61268446,1.2048996 +.74973744,2.1856576,.14462351 +.58739059,1.1504032,.74578956 +1.290478,.46526436,1.1862457 +1.8752015,.36522982,1.5703948 +.51072855,1.6269648,.90917244 +.64794364,.83812189,1.8610901 +1.112681,.55187984,1.6856715 +.8890492,1.0396307,.09029044 +.9403497,1.3734125,1.2609945 +.72895431,.01236389,.09329716 +.32078286,.16266402,.93063771 +.40832929,1.0454454,1.5916128 +.50630291,1.8307221,1.3498077 +1.5219328,.17909104,.10683985 +.51898703,.40564437,1.069521 +.78352958,.63637831,1.5537738 +.48293844,.85003058,.00387173 +.9776358,.54665131,2.212449 +.82076994,.34693225,.02162786 +.83698422,.41178172,.19939613 +.8040226,.30773443,1.4142718 +.77293882,.19148093,1.328417 +.60037195,.10739162,1.1047747 +.85669273,.91602619,.61099672 +.3185928,.34594921,1.0886341 +.42501146,.87614455,.74634721 +1.1085747,.3013476,.84815286 +1.0661915,.91270297,.42565466 +.71509525,.38025247,1.7005304 +.84149479,.24775679,.73012968 +.78074882,.38711056,.7136833 +1.0912359,2.2220268,.56337882 +.9911217,.30899654,2.7307592 +.76750841,1.48779,.42095281 +.56857878,2.1489988,.46647397 +.43787452,1.022287,.00675213 +1.0252245,.91895868,.45178267 +.87760819,.85513764,.8102264 +1.4504405,1.9178199,1.5127834 +1.2378898,.3858159,.73454077 +.67875408,.6837785,1.2333427 +.50425401,.5256823,1.0394662 +.90742802,2.0896044,.34075789 +.49838274,2.1549011,2.0304314 +1.5117923,1.7729988,.47294019 +2.2053466,.19530876,1.2303293 +.78809682,1.4490284,.38466545 +.47893276,.86706042,.40545079 +1.098234,.52809011,1.2163333 +.81370465,1.0217578,.13832927 +1.3637428,.17020273,.41227016 +1.0489533,.77792365,1.3082673 +1.023569,.42769367,.75553382 +1.0846368,.83443862,.1750094 +1.2955672,.35876622,.8263157 +.65506481,1.9960225,1.0711334 +.60843612,1.2417011,.32545078 +.50168288,.51061263,.54575751 +1.5378082,.34396953,1.1957299 +1.2329599,.23682276,.22389742 +.37186387,.45079078,.77777492 +.5864635,.48540367,.40449372 +.79057155,.71465153,.80933939 +.47238469,.64078717,.35057822 +1.2090479,.93746557,2.9905007 +.74556892,.01168868,.0805714 +3.3974004,.3275735,.99069555 +2.1223967,.06601037,2.8290068 +1.2722367,1.0925172,.31145217 +.98417697,.22576485,2.3199768 +.82811506,.95206863,.55004348 +.66115085,.47725103,.6993171 +1.117051,.41080917,.09503466 +.49517148,1.8322383,.63519233 +.5551943,.71939428,.74967004 +.67943876,1.5080662,.99859764 +.40266449,.18367801,.20270257 +.66652435,1.5805658,1.3454515 +1.1429506,.74654928,1.684442 +2.1476736,2.0242383,.6732362 +.57500842,1.2130184,1.1106066 +.88024923,.60620609,1.3442089 +1.7309653,1.0865462,.92403325 +1.2580228,.12017206,1.7578231 +.88915041,.6067209,.37480971 +1.0645868,.80648507,.1895511 +.85150611,.33355647,1.157238 +.38106193,.40666125,.36654777 +.77006039,.68019062,.21777937 +.69404689,.63630279,.92359797 +.67941152,.90357391,.37831068 +.81092219,.51245754,.09523559 +.40891155,1.762466,.86043135 +3.2377764,.72910483,1.4684531 +.63366167,1.1129685,.26376055 +2.5005625,.12978538,.76934474 +.90107869,.56289873,1.6267069 +.73401275,.67435395,.25526755 +.77523095,.03247888,1.3753836 +.65354797,.92970928,.23246942 +2.4242904,.27558197,.65833243 +.68082983,2.5508017,1.1341968 +1.0364206,.52430484,.63788752 +.50801089,1.602997,.51542679 +1.2459387,.10210391,1.5237113 +.50455786,.77646231,.08501461 +.60409533,.47097801,.60132047 +.20268789,.37065216,.50270396 +.63892743,.98703286,1.1325025 +2.2428822,.43695212,.41488483 +.81131911,1.8581822,2.2442053 +.6277999,1.2067448,.24704511 +.58340487,2.3580051,.83910508 +.41471028,1.1408222,.73546482 +.36024455,1.900738,.6556919 +.38116075,1.3512178,.91988354 +1.1486561,.94073722,1.7006733 +.62974478,.49816086,2.1205951 +.73914742,1.3484246,.14956174 +.54333032,.02949978,.2793122 +1.4701229,.88218228,.95907734 +.4682588,.04288269,.90702693 +.27143381,.60989336,.45179418 +.93171221,.42808836,1.8160496 +.53461487,.53087572,1.0020171 +.76695603,.46543408,1.2112911 +2.2571937,.04768274,.56455101 +.79647026,.83648473,.21906048 +.76524701,.41708625,.44782961 +2.3010648,.42390977,1.8535923 +1.7149068,2.1113443,1.9036779 +.4439638,.87475556,.56810426 +.95598132,.91152516,1.3312334 +.73429735,.63203466,.8399294 +.37766619,.75635484,1.1856976 +.67579961,1.2432138,1.9053654 +.36532081,.81157698,1.0367854 +1.3253884,.49869194,1.6861679 +1.0419905,.95682712,.57910292 +1.1814503,.65107115,.43908463 +1.4681059,.40043944,1.373784 +1.1931673,.28297666,2.1367039 +.92644857,.2404203,.03778257 +.83407363,.34130841,.4948499 +1.6657213,2.1268988,1.6492326 +.92976577,.80418842,1.8251003 +.34730951,1.9395031,.61161749 +.99773849,.7626706,.30041212 +.9075132,1.2472645,.47100617 +.66355503,.30648361,.26280981 +.77734506,.68187672,1.4506248 +.48723334,1.2555631,.55113438 +1.515018,.10336108,.50282595 +1.6963653,.61420252,.47802072 +2.5201639,1.2263507,1.5893465 +1.026514,.12381971,1.0232694 +1.492301,2.0431551,1.9232595 +.46922007,.01344845,.62863329 +.49635699,.30451574,1.0991715 +1.6620816,.61701982,.68287766 +.84873396,1.4519641,2.764144 +.92469047,1.1474434,1.8240888 +1.2478948,.49752126,.24692614 +.59958841,.72400849,.36881958 +.56200084,.38974203,.46883827 +.59839263,.40762039,.73495668 +1.11258,1.6711768,.04518515 +2.4023568,.43529133,.67423956 +.81735994,.89897082,.69181876 +2.0582631,.36872302,.40684392 +.95340113,.40365592,.47606331 +1.6472625,.14250558,.00355546 +.3663641,.57297509,.68182503 +.69346942,.07288006,1.9692397 +.57128298,2.3558262,.57936526 +.6436618,.94844689,.25915568 +1.6129735,1.4839411,2.1268035 +1.5451327,.18582035,.63248404 +1.2274544,1.0382178,.50309631 +.58518994,1.221582,.31692406 +.49133135,.07595902,.17858512 +1.0772724,.1056644,.33647941 +.31892304,.16727797,.34432341 +.64867923,.17022392,.88691483 +.99519376,.02129352,.61442949 +.80985479,.90858973,.82038768 +.95402732,.85881389,1.5184873 +.72420197,.53371482,2.0951812 +.88008243,.5778829,.49215526 +1.7664132,.07223155,1.320333 +.57713824,2.0894906,.07996295 +2.2267908,.08882198,.2911764 +1.1946725,1.7333555,1.0025163 +.78216673,1.7583705,.00628615 +.67144671,.35687834,.2396875 +.3571843,1.0911754,2.1665649 +1.6931061,.94158459,.81164439 +1.0379784,.28909678,1.0701041 +.86564443,.86724979,2.0942054 +.98394675,1.922512,1.5186624 +.72674586,.27842445,.23102413 +.67383255,.27026213,.65248607 +.94078575,.71259525,1.7918777 +.40736572,.809092,.48953773 +.48873051,1.7567225,.09213346 +1.7458551,.76549427,.89414036 +2.1705996,1.1055048,.42089941 +.48818462,1.1056057,.48089173 +.6671436,1.5346256,2.3279353 +.70918748,.86019963,1.9670217 +1.4771243,.02937029,1.5236795 +1.3129872,2.0623182,.46854043 +.81683244,1.2532965,.60091414 +.61816892,1.445846,1.9028354 +.84929769,1.6110097,.93657788 +.87351077,.25141934,2.3654612 +.80028837,.81342128,.08809462 +2.2811413,.66027244,.21193344 +.42047921,1.6254547,.31242104 +.61949322,.15331835,.14846346 +.40355455,2.711205,.11757394 +.94964264,.8801717,1.2209954 +.88030376,.4827339,.7739176 +1.3600899,.31505601,.7775485 +.47852372,1.2472903,.65268481 +.3127413,.83755425,.50229624 +.58438685,.11687021,1.4634394 +1.8195193,.14444885,.8065795 +.87888334,.06403119,.5964882 +.33636849,.62417278,.725306 +.61588819,1.4669083,.21686289 +1.4338227,.72659158,3.2884557 +.98719028,.01856996,1.2072976 +2.5593249,.10905043,.62591343 +.58006444,.34804353,1.0104039 +1.286234,.92171361,.11886189 +.20446887,.28708442,.16660735 +.94523174,.27361471,.67971828 +1.7060177,.33080656,.71194238 +.74842937,.0624933,.66594527 +3.8215756,.25543,.40870937 +1.1197276,1.4892363,1.3096209 +.28855498,.9855535,.06714827 +.95347195,1.4708355,.12685498 +.85404684,.81956213,.74632213 +1.0577068,.44467318,.14947717 +.72530715,.49368775,.65394765 +1.1797326,1.4291593,3.056179 +1.4966739,.36765457,1.0905295 +.46808544,.58873955,.98669655 +.72772399,.9898856,.26352652 +.81598488,.2429417,1.0809268 +2.8061308,.46522037,1.0659253 +.61115906,.25360895,.44015253 +1.4420216,.06892278,.73756845 +.39170901,.39946075,2.3112368 +.71967556,.21319203,.26987672 +.807163,3.5210011,.56989178 +.67968921,.92371574,.22093463 +.4134919,.52210185,1.5247982 +.94446557,.69186481,.84893509 +.83169596,.76049988,1.6523253 +.61943796,.36240211,.22165284 +.86516606,1.3865894,.4365748 +1.4589355,.64689098,.2350444 +1.7949697,.48172006,.31246078 +1.2975314,.33511407,.67929138 +.48021286,1.1706906,1.0219987 +.74454015,2.4933459,1.7959964 +1.6636619,1.4980798,.28407873 +1.4535214,.58123048,1.4281038 +1.0684319,1.7815979,1.4174201 +2.0959566,.23303941,1.271439 +.78124338,.34278007,1.433311 +1.8286334,.73725046,.4955999 +.88517259,.48943295,1.1558292 +.38749485,1.1915689,.7477608 +.71614055,.28735566,.30585841 +.92096852,.75474191,1.4362996 +.31256334,.64656178,.0102072 +1.8403939,.91365767,1.0838475 +.62122235,.23935802,.05389927 +.81381238,.9885595,.96210051 +.85089987,.42253835,1.5725227 +.79579713,1.2928926,1.7889708 +.81535724,.23269742,1.1168215 +.56133483,.94003074,1.7423881 +.93011804,.67510913,.00008716 +.52806169,1.4879882,1.0352966 +.81968261,.46240246,.49248927 +.35048111,.58136315,2.0234394 +.38035779,.11535889,.54725782 +.60765303,1.0941003,.39383742 +.51951459,.29879262,.43305805 +.9092267,1.7507593,.52844604 +.981556,.17133365,2.2189383 +1.0293381,1.1488649,.87070453 +.67207375,1.2908342,.54949896 +.90599021,.33684785,2.207039 +1.3614911,1.4789219,1.5059683 +1.00743,.259234,.35745676 +1.7117379,.97282983,.4738696 +.66269964,.70233511,1.1957778 +.8541059,1.0755736,.52756033 +.78721445,.30293096,.88120266 +.57463262,2.0011388,.14671762 +1.9724412,.02690049,.13946482 +.59582238,1.4770702,.05325879 +1.9114954,.7994777,.7647385 +1.7843093,1.2593305,.32112892 +.73119218,1.7244772,.23069827 +.48786097,.21433159,.75243797 +.58367021,.93035837,.76027678 +1.1500165,1.0783974,.23358727 +.32287042,1.4305475,.24883131 +.53744221,.68972102,.61162486 +.8750397,.67800435,.30698928 +.69369987,1.4996101,1.4271 +.94056344,1.0377179,.00351876 +.45380391,2.5478128,.01135281 +.62844246,1.4713792,1.3466362 +.83351008,1.0907872,.23429865 +.78302589,.39264366,.2210119 +.85348896,.59580206,1.0583539 +.78244709,1.0080236,.10397535 +.63246731,.24513244,.70234614 +.659558,1.2270269,2.40427 +.91079308,.83945848,.97371267 +1.1327939,.84962519,.6176786 +.64172551,.5258619,.64843599 +.54340577,1.1447008,1.0042627 +.36450616,1.7222703,1.4193507 +.87217644,1.4400728,.10380858 +.50524943,.32885708,.45024582 +.75063775,1.5164292,.46202707 +2.3121677,.93511834,.62427165 +2.3768237,.13991393,.28965167 +.58082724,1.0827053,1.3919461 +.37114393,2.1125741,.1357146 +1.4057744,.16689892,.73389538 +.75295498,2.1433496,.02754916 +.45053928,.79050497,2.1744262 +.70386031,1.363101,1.9467192 +.67630711,.76194672,.17115134 +1.1636469,2.2125711,.0084599 +.70384398,.30081372,.73256804 +2.2883872,.41612735,.11041533 +.93865529,.76709242,1.9181191 +.40610353,1.6862998,.88005716 +.65415502,.22036539,.21654201 +.756492,.6048348,.07803075 +.60011259,.03846438,.12875122 +.41572795,.22241154,.03358283 +.98958252,1.1448352,1.0928862 +.7651105,1.7764356,.25021823 +.66765736,1.0267222,.59065743 +1.0041146,1.2747329,.73818064 +.38680599,.77464991,.73639154 +1.0896494,1.5240689,.57840254 +.73731306,.90419475,.12261914 +1.1887376,.0714482,.52584573 +.70745454,.28851122,.68485162 +.4201204,.40798057,.48103706 +1.2315316,1.0844329,.47321866 +1.5225684,.36660961,.30116147 +.97832558,.8691852,.79521098 +.40741968,.15557375,.19953268 +1.1513433,.06094135,.95096793 +.81417518,.35008046,.89035969 +1.2498639,.59177477,1.1355566 +.73308835,1.636455,.16140684 +.94240056,.38251673,.1140196 +1.1761328,.20617771,.03515998 +.51427246,.32068139,.80815388 +.62213709,.76582686,1.5263639 +.62210754,.55182736,.47485116 +3.5065421,.12903253,1.5661715 +.53918598,1.2919001,.25848207 +.88215308,1.3503495,.2658635 +.58228721,1.7957186,1.4172833 +.59564448,1.9522505,1.2604793 +.35305271,.65169648,.37758011 +.75598413,2.3895694,.98288901 +.60682638,.62304625,.14369539 +.85308132,1.3789609,.15392124 +1.933148,.1593916,.76500126 +.72164955,.53138885,.2582287 +.62404316,.13207094,1.4092182 +1.2232235,2.2565343,1.3114307 +.8987193,.67116754,.41803234 +.77446577,1.6321006,1.3965337 +.62662722,.46691656,.58134331 +1.1776762,.19177405,1.1755278 +.69261335,1.5657501,.4815312 +.36097982,.68184233,.950105 +.55258821,.80743951,1.1049515 +.46980747,1.2210599,1.9251402 +.7058856,1.3895318,.84137404 +1.6889362,.05699417,.81492461 +.51352811,.05731071,.71356363 +.79769204,.57638155,.68464422 +.86427023,.42575777,1.2382449 +2.1812116,.8281849,.74185826 +1.5635041,1.8057533,.11533892 +.89053295,.26881417,.52218081 +.66663535,2.0098354,.11435402 +.4631276,.91175792,.3982789 +1.876002,1.7696546,.50441783 +.82561446,.5322763,.98684075 +1.6192868,.09769015,.16343064 +2.0152538,.49659924,.77457012 +.46120036,.65553982,.39525261 +.78589731,1.0226212,.87911994 +1.1377875,1.1171134,.01961007 +.7513113,.03388577,.6693523 +1.2508238,.83283096,1.8321666 +1.2003705,.94651689,1.0409766 +1.0673708,.25368694,.50616722 +.88523742,.74053381,.66103513 +.63614262,.5827313,.55179666 +.73200465,.04704682,1.1215604 +.5038625,.49585817,1.070101 +.91259624,.08551431,.36562328 +.59073582,1.9749442,.47721318 +1.0615595,.40636849,.05347208 +.59730378,1.2137711,.36901615 +.4962589,.31033379,.13268157 +.71507628,.84963172,.49208211 +.6623508,.45204357,.36265048 +.44449323,.30450673,.96149809 +.65784922,.99165056,3.3719531 +.70236056,1.5298326,2.7670163 +.4347547,1.5779289,.94703626 +1.7865516,.14669029,.87563856 +1.6572861,1.831772,1.2488707 +1.2108016,.72961368,1.0460124 +.69649439,.77982054,.64422527 +.96887874,.05405409,1.3309824 +.62486199,1.3260521,1.5810773 +.64734828,.65541398,.26791975 +1.4802595,.75827999,.73197561 +.76229075,.59336032,.73613708 +1.0684467,.53007204,.47142477 +.87193479,.89396176,.43503831 +.55043637,.02112151,.80873304 +1.2829568,.50665624,.60935691 +.75673633,.12441239,.19223891 +1.7838608,.19270211,1.5523465 +.98660365,1.1397172,.08684117 +1.4297845,.05393945,.10264728 +.63163679,1.0504173,1.2141305 +.7147154,1.1027137,.02762738 +.56465735,1.7070451,.7369551 +1.813588,1.6870213,.74164691 +.99893416,.27078267,1.2582955 +.81309993,.83060033,.34256033 +.76744262,1.0449499,1.7625082 +.37918807,.31469272,.13378892 +1.6850313,.01075843,.90030447 +1.2527077,.33384669,1.8534797 +1.0746528,1.3622358,1.0558532 +.93524277,.79879906,1.6267356 +1.4412221,.87503471,.12449223 +.94527472,.53032091,.43810196 +.39459048,1.2163804,1.8086422 +1.6662302,.25452019,1.6914065 +.66759494,1.7812946,1.289224 +.56845649,.70963541,.84680111 +1.8413354,.10164105,.63312278 +.49835378,.69611752,1.6417994 +.54588411,.17569846,.22872195 +.42140097,.6972514,.49448975 +.98588131,.24148843,.02303894 +1.3516461,.76217921,.70145607 +.64023727,.04542669,1.1876669 +.60618553,1.0517354,.27685582 +1.2319387,.25255355,.24603258 +1.1430764,.19627654,.69740088 +.83333931,.42022672,.54147457 +.41998939,.6343063,.00536485 +1.6850447,1.9362827,1.0939152 +1.7531673,.95904517,.93050675 +.77697514,.58032869,.45989609 +.91057853,.94515,1.6752265 +.7839553,.38150682,.18007846 +.45456682,.58148968,.1519441 +.52591595,1.1304364,.0677229 +.82690818,1.1624624,.17705103 +.31260563,1.7786333,.25591267 +1.8060124,.73533395,.16592615 +1.4492754,.90257235,2.0290496 +.59555058,.71857397,.3911385 +.84067341,.34390329,.32298294 +.90004996,.55844099,1.0362523 +.42782238,.25225374,1.2926515 +1.0262948,1.2137149,2.3497612 +.31998415,1.5146506,.95245827 +2.0147906,.02728995,1.1271572 +.51243489,.76446887,.12306844 +1.0422732,.68231873,.11501199 +.64464716,.92463248,1.8423691 +1.9489838,2.0222925,1.2980066 +1.2568881,.89734657,.39651604 +.79715384,.88614687,1.0993236 +1.4501044,.02340433,.81006214 +.76429746,.11536021,.84542617 +.51498482,.20234007,.56599517 +1.5966311,.41476282,2.1443423 +.73154761,2.1900335,.51529441 +2.3702447,.19447524,1.9601022 +.78573065,.28794456,1.2669848 +.83415268,.52186234,.11237519 +.3112568,.780158,.74890109 +.56186555,.16831349,.55705915 +1.8203171,.69083983,.15856986 +.48457308,1.8496186,1.6367067 +.87048535,1.0112741,1.5975377 +.99193644,.19930479,.53816134 +2.1404305,.96037875,1.0509385 +1.5907688,1.1035004,.48122318 +.69836905,.07796764,.85327519 +.54191871,2.3275275,.15251496 +.67940433,.78487766,.70554839 +.43255559,.39195466,.39216025 +.94182882,1.1555705,3.1877405 +1.04667,.00836496,.60078457 +1.6899374,.20665306,1.8122456 +1.1728284,1.3011446,.01795014 +.63125566,.02201352,.30122399 +.68465388,.42923555,.42315902 +.55082697,.38145557,.69697668 +.80707586,.8316438,1.6138737 +.44639748,1.7208617,.00549008 +.6382093,.94040296,1.5191418 +.61272431,.36142137,.43206267 +.74932441,.08114127,.36660396 +1.0702993,.9279613,1.2387856 +.74692386,.13542931,1.0852083 +1.1156938,.37939691,1.9590539 +.82834486,2.2474708,2.7310757 +.73162865,1.1129772,.16477404 +1.2829046,1.2381496,.56175778 +.52305037,.6107692,.03530093 +1.0474238,.06181541,1.2272852 +.78987886,.52573184,1.3305521 +1.0498296,1.4791295,1.590402 +.441715,.13970897,1.4037383 +1.2830385,1.9419129,.22818089 +.71338147,.75613331,.72306484 +1.2368708,.26340266,.36350074 +.46296953,.4365711,1.8438128 +.60921313,1.332804,.74859289 +.86285936,.69205643,2.4011576 +.7610082,1.1315585,1.6527752 +.39722726,.29322207,.51736003 +.89121078,.51547535,.09137543 +.72784817,1.8023782,.12630026 +.99926351,.964593,.83745871 +1.3146343,.47856014,1.0225461 +.73607161,1.0758067,1.8890476 +.53074292,.30509913,.03292669 +.70913409,.09660344,.15360006 +1.2251932,.54548422,.70227803 +1.248072,.33270222,.81287662 +1.1271756,.29735474,2.0759198 +.88806158,1.2949507,1.4041103 +1.7178422,2.3475126,1.5633698 +.90971653,.53915656,1.1787227 +.95193949,1.4315505,1.7446399 +1.4168419,.0619306,.26160076 +1.6720527,.79693676,.12450043 +.76820091,1.7955074,.5398552 +.54816815,.32559526,.94914245 +1.2569011,.36291511,1.6931273 +1.5114156,1.2782471,.50722052 +.83466451,1.0466255,.08129912 +2.9816168,.15905715,.7719731 +2.4316564,.28847117,2.1609257 +.49817604,1.2478433,1.4261133 +.91167085,.01161021,1.3510021 +.91253368,.42151901,.45545771 +.76099727,1.3277152,.20101299 +1.8904601,1.1836766,.76533388 +.72080307,.35305695,.36322355 +.66249698,1.0395866,1.28997 +.66754917,1.3738191,1.4220618 +.72111953,.32217841,.98559326 +.95198483,1.4149648,2.4507722 +1.2575497,.09647847,1.2553437 +.69219421,1.4153847,1.1740129 +.27503738,1.5369086,.5166783 +.79907116,1.0272001,.40042096 +.72020467,.63143693,1.2448418 +2.3672388,1.166004,1.0350783 +.98523297,.68251627,.18451063 +.79139413,.14913342,.819036 +.91829775,.43486338,.45475699 +.86061013,.51212057,.29504157 +.48946712,1.2802604,.15757655 +1.4597085,.03511491,.4644012 +.53520853,1.17251,1.1387637 +.63190299,.08894676,.2103544 +.63962316,.22787422,.98135066 +.92824074,.9253388,.88160121 +.55924329,.87296559,1.0201622 +.31600588,2.0620303,.99290923 +.85712298,.94008158,1.6917299 +.56521508,.74778378,.13600762 +.50318698,1.9161715,1.0706348 +.94185132,.0961843,1.5077915 +.95421423,1.5123687,1.8401809 +.94136277,.04728567,.02707467 +1.0244826,.77193317,.10780235 +1.0725321,1.0317939,.51446821 +2.3148455,.1414556,3.2202575 +.66228905,.63789875,.03638435 +.78881431,1.6280193,.48947077 +.49575797,1.5452392,.36773253 +1.294878,1.1739927,1.9218132 +.68915258,.98502554,1.1508924 +2.8424761,1.2193955,1.3187905 +2.7828492,.65530596,2.3695235 +1.1104464,.2948855,2.2958314 +1.5349394,.03538956,1.3635351 +.80601895,.46063471,.64289334 +.79235634,.65898173,.39174689 +1.3264698,.21767956,.56741596 +1.6933501,1.1235874,.04193646 +.68389856,1.0335529,1.0108395 +.50851151,1.5112735,.6160837 +1.0335588,1.3389097,1.1384088 +.446761,1.9036099,.10911073 +.22136726,1.4432411,.13942247 +.23916526,.45292365,.18274798 +.38740103,3.0184268,1.9608363 +.89838889,.86014522,.87983577 +.63508148,.18946911,1.1114683 +.40407044,.21175716,.65985706 +.61468601,1.1639144,.89948449 +.39647665,1.6392843,.41965041 +1.1163204,.12435747,.70449546 +1.4837073,.03931019,.69765576 +.91763954,.60050189,.64421492 +1.5786714,.73952197,.33987115 +.83702933,.59275048,.47366333 +.76659133,.44018019,.63155546 +.57684805,2.5155304,.73497909 +.81615302,1.1853726,.38788755 +1.5383113,.17287299,1.2868855 +.47486996,.88706292,.33682612 +.84643285,.73715516,.60025566 +1.4502047,.2992925,2.0270752 +.78854358,2.8087722,.0266328 +.46975159,.86514663,1.1605791 +1.0696579,1.1879996,1.231587 +.99895924,.8786427,1.0187246 +1.0653352,1.161367,.45903177 +1.7874479,1.3750336,2.032522 +.5550028,.76722795,1.2275074 +.44614478,.70933632,.52900591 +1.0792492,.60303202,1.5021444 +.39066669,1.9613341,1.1790497 +.71979061,.11032481,1.6388913 +.71935858,1.3785466,.22926914 +.87659093,1.5986877,1.3653225 +1.3254244,.75753669,1.5300806 +.66104898,1.4565283,2.4607104 +1.1125926,.97570717,1.4531142 +.80809704,.64283834,.39693356 +1.0186428,.87364632,1.8632653 +.79602216,.73884935,.71314845 +.56315362,.03947956,1.2367026 +.53139474,.83285998,.00796039 +.70679441,.39701068,.76156919 +1.0748554,.78800637,.79902527 +1.2911179,1.0548214,1.2150546 +.48732428,1.1078269,1.55475 +.5338072,1.8603326,.70313053 +.76084435,.12092604,.04471485 +.77797885,1.4644525,.63935844 +1.3991707,2.4087774,1.8047836 +1.2654876,1.0947948,.67717481 +.70483826,1.0997262,1.5533075 +.77138256,.656928,.16620941 +2.2370985,1.0422323,1.202669 +.78076161,.13496356,.84018057 +.41366878,.882944,.82433855 +.57101023,2.6096826,1.2234264 +.53265846,.93111166,.08085087 +1.1049039,.91500644,.68984989 +1.4546231,.21013587,1.6952557 +.36260431,1.0928977,1.548408 +.92726641,.85625113,.16294686 +1.5995935,.9416799,.22104 +1.2911801,1.3677161,.72255421 +1.7215396,.43920643,.21895107 +1.2366171,1.3091207,1.1148361 +1.3921448,.07390253,.21985094 +.95371837,.81338343,.06635106 +.53662013,.86940855,.26810884 +.72717342,1.8169784,.36402562 +.32274874,1.1994269,.15322325 +1.3763262,.92386196,2.101982 +1.121403,.28240798,.97974176 +1.2533157,1.275165,1.2039939 +.56733565,.81574901,1.4021037 +1.1728055,.30246385,.08938573 +.448591,.8451706,.18743068 +.98440717,.68165788,2.1641009 +.68920902,.44772822,.58913357 +1.0332957,.97638562,.07053614 +.21781636,2.6110908,.19986511 +1.0444474,1.2235494,.93913869 +1.8339449,.26012495,.06097882 +1.1042908,.55032175,.23780256 +.55497634,1.6497919,.78931472 +1.6648411,.66726893,1.2769681 +2.0704329,1.2860594,.87859942 +.53229254,.255265,.20958523 +1.0640832,.43004094,1.2416632 +1.4228385,.96856269,.64321599 +.49194438,1.4567239,2.498645 +.96030576,.95193035,1.8158416 +1.7226625,.13456028,.08441198 +.72317056,1.502458,.63522812 +1.0222649,.84766923,.32627908 +.36313706,1.9358453,.4201454 +.64633243,.9128723,.28681388 +.45002053,.54795937,.18370896 +.60346492,1.62981,.44454354 +.45429739,.32046757,.58440978 +.43247227,.61496105,.01758193 +.41726661,.38798796,.12137747 +1.2141639,.41111797,1.1157719 +.82287963,1.0760316,.39139814 +.54074513,.32278801,.95142135 +1.58127,1.3757577,1.2051074 +.81861128,.42042502,1.0737118 +2.1152958,1.10718,1.3064247 +1.4130452,.64679002,1.984627 +.32130595,1.146219,.01671888 +.77620599,1.0553832,.44596191 +1.0128992,1.0198987,.08634863 +.59677609,.71446198,.05017285 +.31595184,.42562526,.2980381 +1.5078576,.31697249,.66977186 +.52570769,1.4943697,.17524127 +.71929924,.11616507,.21928961 +1.1676869,.41501083,.53269649 +.57043934,1.4521479,.69775534 +1.3116141,.22669492,.94034519 +.39699265,.69449171,.11346794 +1.5867832,.98448427,1.802363 +.49401538,.40562684,.15248294 +.71425714,.55278212,1.2061309 +.7466897,.40020329,2.2201373 +.58588342,.27772967,.45663827 +1.0444879,1.2450625,.5969241 +.87004236,.87294557,.48481256 +.56502046,.55021279,.72896056 +1.0968422,.59519606,.70876679 +.86214373,.68817216,.1097539 +.70409137,.26925592,.7340514 +1.0686687,1.0987449,1.5055245 +.96544258,.06582449,2.5165484 +.84749048,1.1236316,.0706657 +.41162726,1.0551621,.34578337 +1.1266178,.17023013,.85231867 +.53063388,.14873476,.20443337 +.99457893,.36901676,.92139701 +.831088,1.2010484,.0274627 +.68797117,.19310559,.91351884 +.56630904,1.2070403,2.0941077 +.68693322,.60028497,.56979706 +.74995215,1.3617132,1.5886448 +.24497822,.59855224,.45967644 +.8832234,.36448,1.6717101 +.33515832,.69440851,.24665852 +.51775896,.37948129,.25509816 +.61155504,1.0285044,1.2142835 +3.4047125,.73124274,2.2506362 +.85387944,.69175511,2.081804 +.79469843,.85953316,.55079924 +.35251071,1.7220703,.12943888 +1.2314941,1.0592007,1.5848303 +.69855478,.03696578,1.1204988 +1.0370701,.82762933,.75927848 +.28925101,.58011497,.2286543 +.30574532,.81495971,1.7437329 +.69306625,1.0917775,.59186095 +.81531509,1.3565566,.48838265 +.52648553,2.9190285,.88310451 +1.1803318,.69437951,2.9169244 +1.2043292,.84523309,1.0977238 +1.0197766,.23414155,.23253632 +.93846603,1.6842864,.15887146 +1.2506719,.69273098,.97132615 +1.1118042,.29239508,1.7060701 +1.0872506,1.7999086,.0266031 +.43198997,.1741609,.62666015 +.54469184,.15632447,.96113592 +.63008624,1.0687894,1.0649304 +.28939829,1.8150828,.8489109 +.49400403,1.2611366,1.4354037 +2.2320692,.32658721,1.7738429 +1.3310244,.48497614,1.2189214 +.65535356,1.196928,1.277257 +1.2027985,.20186816,.66854075 +.41750561,1.3134965,1.0286275 +1.1323289,.79834297,.4883699 +1.6052452,.57712425,.71248657 +1.2830443,.97125243,.9265062 +.75436499,.20185129,.09412987 +.67823924,.20622853,.50056099 +1.1094594,.0933406,.07140559 +.4794135,.34863158,1.685249 +.56012509,.80710504,.48447526 +1.2304641,.52191981,.24975511 +.83616081,.69854573,1.6264111 +.432817,.53380899,.47621236 +.32333607,.79100003,.3271804 +.41334387,1.0703667,.38818644 +.22379823,.67078807,.16325393 +1.0165902,.24418087,1.0131872 +1.3263577,.59971676,.39945228 +1.2294919,.12067178,.1099675 +2.2269691,.04190861,.97202684 +.79363464,.16817165,.01538592 +.42116841,.21135917,.62629957 +1.1394304,.30556543,.97320937 +.88409488,.11154805,.13741824 +1.1525549,.08292847,.6313946 +1.3491106,.77172066,.9257103 +.44426974,.76798297,.19671655 +.94614695,.10719186,1.4330014 +1.0987795,.58480183,1.3940079 +1.167752,1.4171718,.76741157 +3.1285656,.18472047,.18015573 +.99552728,1.13308,.79999979 +1.0630017,1.7034943,.8397651 +1.1393586,.27706277,1.7675921 +1.1217033,1.9037206,1.6504542 +.69799183,.32475092,.02481421 +.72382432,.47563001,1.2776478 +.72071878,.12483076,.086021 +2.0967443,1.6164138,1.3555546 +.89956643,.98780127,.85151367 +.74958711,.59760053,1.8138699 +.52595265,.46607032,.18253442 +.49464887,1.589372,2.7467915 +1.2421933,.79070683,.6154383 +.62947124,.80490349,.78388877 +.762537,.06239888,.22794521 +1.1673628,.15709155,.05947729 +.54392809,1.2044977,.53354838 +1.0432931,.11136144,.33495501 +.75201083,.15823929,.6441743 +.72299967,.85158984,1.272487 +.98906177,.64370047,.96049447 +1.2664728,.11712924,.95560023 +.93519089,2.3095783,.21782712 +.79598224,1.640582,.7830539 +.26866703,.29672339,.09033875 +.96783617,1.2873049,1.800089 +2.1961848,.19431086,1.0276145 +.71860239,1.0138511,.8029246 +.43703781,.84218843,.27400132 +.5944304,.1466738,.0371335 +1.6622243,.05602933,.8854199 +1.3117093,.71098724,.63918599 +1.3600695,.17141864,1.365688 +1.261034,.64090037,.29501839 +.62347584,.08901139,1.3420388 +1.1636413,1.3345029,.92078919 +.4426275,1.9494964,.84353022 +.73827489,1.1446355,1.5556903 +.76135663,.48741801,.62640852 +.95650539,1.2225081,1.0440095 +.23330172,2.342008,1.9528988 +.66217743,.05089591,1.029528 +1.8067481,.0511428,.06286733 +.68272768,1.3310168,1.312411 +.36922961,.86416505,.02966884 +.59342318,.0028277,.98947372 +.62763989,.54994064,.40677352 +.84931888,1.0536484,1.0897725 +1.6695783,.44306312,1.6853968 +2.5740178,.06228475,.28703764 +.50789944,.78128395,.69386512 +1.2865401,.26115935,3.1108166 +.95537736,.30100162,.54895866 +.43143113,2.5846038,.30685549 +1.7389078,.32472015,.80758234 +.62543468,.95077227,1.2086005 +1.3002712,.17974618,.5711252 +.92180184,.32263283,.69138324 +1.0483262,1.0101898,.60750469 +1.2274594,.73026811,1.5242579 +1.1339845,.82042713,.14383289 +.64025299,.83597558,.44365296 +.93584716,.02774461,1.5216993 +.8057585,.07416002,.5731885 +.58294184,1.151092,.87074687 +1.3236263,.38640885,.42431405 +.43028799,1.162923,.6765959 +1.980486,1.1026321,.34101044 +.94127559,1.1903035,.71978833 +.42322107,1.2561798,.21439384 +.92016818,.09905152,.97037933 +1.4531093,.3229289,.79624603 +1.2597991,.19143702,.70504569 +.99929005,.25765134,1.288179 +.53135593,1.1491608,.87994086 +1.0327969,.01688066,1.8574328 +1.369381,.89094759,2.0321173 +.40659714,1.1761109,.21750072 +.93425845,.28613205,1.6047954 +.9711056,.69582095,.16055492 +1.6232455,.9827654,.97121702 +.25784734,.21970184,.21074633 +.95521434,1.1280934,.42032234 +.79114219,.94564955,.97613378 +.65807204,.09519053,.21244163 +.38708899,1.5793123,.65344115 +3.6730833,.83584482,2.7977996 +.50792343,.06217231,.66832054 +.9236432,.58120094,1.1842606 +.55323079,.49533755,1.3611905 +.97713015,.36617909,1.3521748 +1.8097169,.22359825,1.9781041 +.9460176,1.7732962,.09325279 +.97142836,.53728132,.27857123 +.88286118,1.2185589,1.0679999 +.34192533,1.2049826,.2597989 +.56773597,.63783275,1.6910029 +.95546318,.61277656,1.1112241 +.55281694,2.3716414,1.7983013 +.72449501,.37321588,.21109669 +1.0085343,.12522467,.27599433 +.92464996,1.1482424,.07749553 +.5226017,.7073747,.43552768 +.32617529,.20941793,.27923148 +.7620463,2.5829025,.45358907 +1.1860172,2.0297991,.29622981 +1.0700253,.6060882,.26310412 +.48004084,1.0660889,.50990243 +.62911011,1.1177344,.90647306 +.76033741,1.570105,2.6739813 +.47815326,.54103948,.85911887 +.78815265,.8195935,.35577788 +.56319025,.6448144,.55209328 +2.1328597,.57765152,3.9339677 +.92668343,1.6480763,.17839861 +.75023916,1.0128793,1.1125409 +2.9858773,.92372051,.474383 +1.4103024,.64990034,.42630992 +.86173511,1.070797,.32958383 +.67870107,.15348228,1.9262913 +1.2857757,.30733171,1.2016604 +.47330419,1.9776923,.24954725 +.77532168,1.0666379,1.1666143 +.34131998,.83061197,.31506577 +.55728734,1.7094062,.48604155 +.63699474,.02359983,2.5218274 +.31028475,2.0216284,.63072062 +.78140876,.85398097,.11209619 +1.0525171,2.5189634,1.0625356 +.65357859,1.0624283,.15749287 +.45616597,1.9750776,.33591757 +.85797686,.51014545,.18431454 +3.3907802,.11383826,.31183721 +.631731,.85019797,.15402046 +.80648457,.49728485,.70905669 +1.7109654,.1025061,1.6210902 +.63849444,1.5547479,.32097352 +.63416973,1.1655473,.15789162 +1.1700683,.50536182,1.5934497 +.56573425,.67849034,.86176506 +.71446847,.37663512,.61259217 +1.0592743,1.9931254,.12059661 +.79087097,1.3535887,1.058421 +.51714864,1.0654672,.6477116 +.79363247,.38312082,1.9274861 +.43025762,.74973389,.29099201 +1.3440085,.07632381,.55122789 +.61001724,.70902965,2.4777567 +.61616797,.8648629,.51810083 +.5325227,1.0145548,.94028586 +.66607603,1.1218628,.43791215 +.31218977,.76636092,.94564232 +.78008973,.23295815,.93156863 +4.2719438,1.0034862,1.9603938 +1.4489409,.8918096,1.1941096 +.62710303,1.0014502,1.9593132 +.59960669,1.3548013,.29739867 +.45189938,1.4221278,.85731028 +1.2111445,.65888467,.90524077 +1.0826266,.45762519,.42561589 +.5063107,.4322677,.34567659 +.86139186,.54484633,1.1111574 +1.540574,.21263565,.1313667 +1.8584982,.25328433,1.1084257 +1.3053496,.28096927,.45147751 +.77777099,1.1880128,.29319369 +.59216541,.33318623,.60348664 +.47536993,1.4094902,1.2871866 +.547081,.82556886,.4889892 +.46547717,.22811835,.00327734 +.58974112,1.5948136,.38902872 +.37503034,.92864184,.61662008 +.935429,.60854784,1.1747375 +1.0240611,.88169493,.38475574 +1.215266,.42928256,.56693005 +1.1854461,2.3598292,.47015598 +.3538648,.76465197,2.3700645 +1.0900322,.25272848,1.6585436 +.64956027,1.0932859,.56316598 +1.5347678,1.3109828,1.2836631 +.85634041,.39388389,.18571985 +.63429271,.27585377,1.1144796 +.57970429,.82416231,1.5380209 +1.1218929,.02300605,.87259733 +.56708475,.16799335,1.7480882 +1.2415758,.67470706,1.1511601 +.68634325,1.1661413,.37513257 +.43043985,.430878,1.8850865 +.93157156,.32733397,.57524444 +.77220534,.99043363,.46421552 +.7080677,2.4504183,.18199816 +.68385933,.27339468,.01452787 +.3475468,.29460482,.41578876 +1.9669177,.85574953,1.18739 +.58857867,2.1623029,1.8148827 +.54044707,.98390335,1.1912066 +2.17894,1.3424358,2.2008672 +1.037588,.94033888,2.17631 +1.1134945,1.7396085,.55963533 +1.1358816,.03333474,.19883813 +.98114036,1.306924,.09777563 +.79149332,.72180533,.70201935 +.61291137,.42584863,.7178343 +.90382104,3.2678106,.49160562 +.65321493,.84602013,.67131888 +1.8786642,.47753029,.67426997 +.60702185,1.8442037,.21138645 +.66788292,.27407548,.00507001 +.35693585,2.2191036,.10759528 +.62612692,.64607294,.88375831 +.74213169,.60738116,1.1170225 +.85413755,.79147393,2.1345243 +.65413577,.11677226,.38267468 +1.2313499,.45157821,.68124273 +.50692845,.58012606,.50889137 +.55046544,.33977373,.26695481 +2.8858078,.40649702,1.7156034 +.28444461,.20931973,.10829606 +.68078988,1.1693871,1.0158451 +.29336671,2.0711035,.21064663 +.75726935,.63353756,.80300042 +.56025607,.49968454,.93503625 +.76796414,2.5669872,.19613133 +.83824512,.35771899,.99932879 +.89679727,.37144383,.2151333 +1.5006879,.79133593,.072242 +.92092728,.10638012,.36212854 +1.3388965,.05226437,.79143057 +1.1264118,.16252216,.22017903 +2.3149818,.72002588,.5888594 +.65650287,1.196534,.46414651 +.91999835,1.8494555,.14762056 +1.1551808,.58393748,2.6099124 +.35906404,1.389756,.86843925 +1.3451629,1.9144261,1.1359204 +1.5255404,.43268025,.8472266 +1.0832719,.40015671,.7233837 +1.2195885,.03198902,.06115462 +.40104685,.55096062,1.989387 +.48689813,.34865715,.66943725 +.5495028,.36742842,.44810437 +1.4687964,1.6018233,.85692261 +.66193076,1.1630913,.98263407 +.88583698,.03717858,1.6351936 +.40192769,.32300216,.37169695 +.73893473,.02576537,.98172997 +.58564911,.29846026,.44067265 +1.3437546,1.9248499,.91202865 +.69081813,.43801488,.5737263 +.5253021,2.662339,.06457805 +.8726997,.30326491,1.0953024 +.31923447,.31957152,.38651596 +.95250719,.02573285,.17121332 +1.0512231,1.4119093,.88832049 +1.3227596,.76350888,.75098931 +.83634026,1.1306463,.81618821 +.43563758,.00088507,1.5000244 +.77064751,.47807705,1.9624811 +.76877684,1.465346,.55258164 +.54364388,1.3460343,.56680284 +2.0466377,.37053892,2.5047793 +.40286566,1.7309359,.61725902 +1.6765164,.55131051,1.8931319 +.77278997,.1295982,.64628554 +.82376816,.33122339,.88278773 +.58616281,.38987789,.40426527 +1.3125683,1.7051695,1.352459 +.54308095,.3741684,.21341528 +.79318984,.72895401,1.4193221 +.74196406,.29415857,.13363479 +.82915677,1.5050363,.24954684 +.29261442,.89893723,.2568095 +1.2804682,1.4514998,.50287133 +.7034346,.34939668,.732389 +.55839772,.18469925,.14805665 +.65606622,.23951958,1.4856851 +.73559442,.16568312,.08887353 +.8616713,.71083748,.36825917 +1.2359356,.02432846,.02107152 +.84372051,.67740207,.1037055 +.99282536,1.2129537,1.1815447 +.89041666,1.2247083,.05357211 +.88901367,.79954672,.95956915 +.91458718,.67367201,1.0538784 +.70838364,.51932357,1.2343606 +.50067595,.06669617,.7639721 +.62716632,.95051975,.56935978 +.93156731,.76456221,1.7176297 +.88869088,1.0012876,1.1719321 +2.0741648,1.2081842,.62962233 +.73648539,1.049765,.65320502 +2.5352789,.46521758,.30449399 +.4761455,.89442403,.73326443 +.79801146,1.1221438,.15684671 +1.0294756,.8212334,1.4998763 +.69174109,.57324351,.53214994 +.80217339,.85572232,.5116344 +1.1908462,.3915568,.26227242 +1.5318842,.65172904,2.4162174 +1.169173,1.7967632,.99409589 +.37420282,.98072394,1.2254166 +1.2874869,2.3242323,1.4862002 +.89701856,.40579221,.27111664 +.71926558,1.8075583,.5340692 +.78925039,1.4254869,2.7361946 +1.5931395,.90958588,.45467033 +1.1937159,.98474367,.74113095 +1.1017688,.91685438,1.2518094 +.69113276,.38648259,1.6759058 +.91365677,.34184598,.8121344 +1.0217563,.88352454,.57713784 +1.3051626,.789205,.50149775 +.66387095,.77773939,.44988473 +.53892144,.88982908,.12142961 +.8763571,.35333798,.49396483 +.51990081,.31698455,.22399249 +.30561495,2.0228178,1.2632575 +1.4182038,.37244283,.18590222 +.54244923,.12192526,.33278855 +1.2324632,.94147539,.15112714 +.438567,1.7584727,.72934194 +.51313286,.28294854,.30361102 +.62585896,1.6077578,1.1063216 +.37199814,.46980057,.57578666 +.59819794,.17982468,.6150238 +.75007661,.19416245,.29464098 +3.4114131,.53445707,1.0556445 +1.6913084,.24760823,1.4004497 +2.3474595,.46207533,2.1678098 +.58556543,.79772913,.82742971 +1.5016744,1.3128748,2.0452426 +1.1694394,.44444019,.38586301 +.67610621,2.896767,.91621922 +.73485725,1.2848205,.34922785 +1.7244981,.99705422,.62350869 +1.0585009,1.6474923,1.3163476 +.82507317,2.075097,.15568921 +1.014535,.56430676,.9573805 +1.2397361,.10657072,1.1524664 +.68909044,1.5470982,.05443284 +.58308949,.44611293,1.5514125 +.58200282,.91414875,.21726214 +.30894926,2.4952076,.02470478 +1.0884753,.03493962,.47692708 +.91017924,.26712434,1.1894779 +.92255685,2.6969875,.30003315 +1.3747829,.38068559,1.0428675 +1.0666783,.44561008,.00521101 +.55835165,1.3804542,2.4465125 +.92040901,.43301356,.12998245 +1.7191181,.31511494,.03754502 +.49408109,1.3070264,1.8452556 +.88983123,.61756838,2.0815128 +1.0391704,1.0492902,.06635251 +.45639846,1.3345446,1.3393613 +1.0228011,.53195216,1.9032228 +.44326043,1.3032302,.75667257 +.83378483,.03299866,1.4855782 +.79506357,.00356654,.32840777 +.72609094,.58828661,1.3251875 +.64340224,.16072646,.84887674 +.84171795,1.2371808,.50673651 +1.3549733,.89009333,.67433056 +.8814002,.33381148,.39726583 +.69479836,.43586994,.07341284 +.74726925,.89198238,1.177998 +1.1542199,.30960868,1.1834633 +.88573735,.25658087,.62411445 +2.3617841,.21543872,2.2063233 +.40114723,.96495217,.81752932 +3.3429089,.03020624,.77290182 +1.3487533,1.0297385,.6811084 +1.1950228,.57792634,.14183454 +.94328533,.91003754,.97642728 +.59235861,2.0181869,.37682137 +.60148707,.45393159,.60115332 +2.2082453,.38049952,1.087433 +.94215936,1.2199476,.06980192 +.72348579,.99272462,2.6571242 +.90108334,.76935711,.07687662 +.57335832,.69189714,.16023379 +.47296942,.16663937,.76215969 +1.375877,.24405406,1.5175541 +.48416638,1.0048422,1.9560838 +.81126719,1.0402995,.31971076 +1.215533,.08963132,1.0626661 +1.3203109,.93797143,1.6199694 +1.0839114,.71953927,.72248607 +2.160469,.47038383,.46180036 +.470617,1.2821737,.27097813 +.94583628,2.4387819,.10517152 +1.2302225,.65417419,.23255882 +.70235819,.11667994,.48695198 +2.3352843,.36960518,1.6406842 +.69525537,.3856538,.01903336 +.99023204,1.1462073,.13422544 +.62773292,.21392274,1.6166791 +.64783617,.80504815,2.2847474 +1.4946057,.98882658,.5293734 +.54135191,1.4718894,.67665749 +.36159035,.88475733,.5748374 +.58290494,1.0864112,1.8851517 +1.194118,.47814764,.26182289 +.46245935,.61508747,.38973 +.48271532,1.5268814,.65880256 +.76551453,.95027841,.20044263 +.32549391,.53573028,.86713736 +.94681895,.46681656,.98553695 +1.060129,.34942192,1.1302202 +1.2397018,3.0589721,.73764369 +.73529256,.34578904,.43733856 +.74703861,.95119914,.57065364 +.9995108,.64927694,.43989346 +.36310226,.29820136,.79684519 +1.5891291,.12947957,1.9254194 +1.1070578,.82290137,.39238027 +1.5676874,.13586861,.24713685 +.35186261,.63477134,.90746997 +.64737177,1.2974524,.6638376 +.4855823,1.6431649,.81430501 +.69657762,2.1856142,1.3469465 +.66158275,1.0899399,.21412105 +1.4304916,.4538419,1.8474065 +1.7889894,.5845976,.87957238 +1.1010931,.30987206,1.1745883 +.57841418,1.2206036,.5065269 +.46275782,.32568167,.95409044 +.57470345,1.8576932,.94036035 +1.8549819,.10368861,.43357035 +.92190821,.15237263,.44559683 +.66643195,.3779761,.30705424 +1.1390424,.231729,1.0324031 +1.6598459,.94024853,.43334547 +.3880429,1.64174,1.106961 +1.3737289,1.1881118,.26970211 +1.0312676,.68071112,1.5625367 +.44948986,.61678217,.44282634 +.84966828,.82421862,2.3873788 +.66327301,1.5218039,1.22108 +1.0638779,1.1958644,.49533318 +1.989238,.37044368,.57911027 +.69973513,.41371488,.79943754 +.75246882,.5421387,1.2611262 +.69239645,1.9982047,2.5635951 +.52894818,1.7444342,1.1325203 +1.126291,.17355306,1.1701021 +.60362594,.58133033,.96881144 +.99658148,.36845655,1.4336214 +1.2027726,.31323812,2.1984738 +.82027179,.99934939,.16355596 +2.053287,.353755,1.8062204 +.9317063,1.1433042,.88672085 +1.8514027,.33274262,1.7468657 +.69880839,.24809942,.45163822 +.59118881,.64756144,.04647427 +1.2840613,1.9991838,.69782886 +.81943184,.58956967,1.7564021 +.37806632,.74708395,.71714361 +2.1204935,.09648623,.93418701 +.79381424,1.0147907,.25409123 +.43614282,.07256752,.54500979 +.60708228,.26426753,.08480095 +.67501258,1.5156612,.39888031 +.63328267,.86787039,1.9820277 +1.1501999,1.3783198,.34447545 +.9302828,.20188176,.44855265 +1.1932953,1.0006321,.97161083 +.32670778,.62546619,.59775453 +.41992468,.48574814,1.9550774 +2.7459874,.42038665,.72244445 +.84955432,.5341694,2.1021005 +.4076315,.5745884,.67891909 +1.2434634,.02786424,.84422425 +2.4819505,1.4840978,.34875661 +1.3551097,.28206127,.61332836 +2.2490407,.50393916,.63044231 +.49459837,1.1699907,.79521293 +.72080592,.3202198,.39022921 +.86282288,.60067482,.43132817 +.21793262,.69075133,.04613067 +1.6865112,2.3246449,.71624853 +.28629805,.03312004,.5834969 +1.3654633,1.0565936,.58928432 +.56773911,.68392307,1.2297566 +1.1859566,.16710599,.36608044 +1.0006247,.24692905,.7331095 +1.6484844,.54958967,.86412071 +1.2310605,.38203012,.71618826 +1.7543647,.53162297,1.1342631 +.54401836,.47825041,1.262528 +2.7156598,.88191488,2.6509212 +1.5944743,.0694574,1.1986272 +.52337544,.89377994,.00801692 +1.0092477,.33029586,.43062321 +.3379068,.48586444,.28459724 +.49019782,1.5987365,.29639369 +.46886108,.03397056,.24706054 +1.272487,.34577111,.16037003 +.64732601,.18841584,.50923861 +1.5019862,.05465162,.5564646 +.90852619,.67330633,2.1613967 +.874314,1.055063,.81690181 +.74320766,1.1222877,.90406759 +.9056512,1.0147402,1.6372362 +1.4620019,2.2476981,.64098972 +.42096708,.18715177,1.3751332 +1.6935804,.97939654,.93058871 +.505485,.94577374,.32682695 +.70169062,1.4345029,1.6034119 +1.13963,1.5072877,.01065067 +.92038968,.48408777,.98218565 +.21862976,.04052945,.35946068 +1.0363188,.49257363,1.6380666 +1.0332969,.34097357,1.7731305 +.58727454,.69649477,2.5000182 +1.1550882,.73646752,1.2249999 +2.1183521,1.1066203,1.7218768 +1.2151723,.52463439,.9505218 +.31671291,3.420407,1.1062649 +.34805973,.23330908,.27411597 +.87035408,1.1051244,.69017436 +1.0724623,.03627517,1.9961652 +1.9834165,.29650187,.13120573 +.51230051,.34622486,.77184213 +1.0553203,.56374659,.01000915 +1.5818118,.12410894,1.3144439 +.69181986,.37901358,.27092228 +1.6414979,.02654505,.30602448 +2.4759818,.12625672,2.8472004 +.6947914,1.2603843,.83781288 +.81534421,.80767223,.02038831 +.79318495,.75036052,.27659616 +.84016939,.48805203,.57697101 +.71497433,1.2472713,.91438491 +.27036129,.80200452,.63363922 +.89171646,.60413055,.79252341 +.76684142,.12054458,.1789123 +.57589308,1.2793882,2.3652677 +1.0032031,1.8921832,1.3672967 +.8692213,.17823549,.76079401 +.89758588,.41293203,.53915281 +1.1347941,1.023798,.17660051 +1.2673469,.22050896,2.1541949 +.26182253,.30829938,.52039055 +.86086406,1.0108168,.66765795 +1.3619319,1.077667,.92853464 +1.5196714,.70682559,.18604748 +.36551129,1.4355367,.58256094 +.77896527,1.6131393,2.7095187 +1.065269,.25287555,.39386977 +.40365695,.95836951,.24604198 +.76437672,.37110477,.21624093 +1.0557274,.59596569,.62381199 +2.2115301,.50323518,1.5057576 +.51044807,.71412319,.35612878 +1.2997929,.21251603,1.4238119 +.54590639,1.9558168,.02995558 +.8310908,1.0776525,1.6776696 +1.8271299,.20574498,.11758352 +1.3070939,.16510593,.63761007 +.52885413,1.9043273,.35043756 +1.2151683,1.6641346,.65316006 +.76773479,.83863795,.57639993 +1.5615595,.07479327,.83185351 +1.2865405,.23267806,.08524491 +.57282377,1.0938974,.05025663 +.56159661,.43964077,.64256683 +.53218252,1.4950038,.07966372 +.823775,1.1959797,.65771973 +.579359,1.0156166,.27661089 +.99593246,.06152482,1.2200386 +3.4955891,.5873078,1.5244299 +.66217946,1.7065921,.67397085 +.80230397,2.1407697,.82464717 +.715958,.53652659,.81467921 +.80282521,.12755696,1.4587633 +.27714028,1.3735502,1.8600945 +.92758887,.05672752,.72678044 +.65279584,.7292609,.75290102 +.52652637,1.0489602,1.4392794 +.83495284,2.9180908,.0124543 +.32973331,1.7927582,.40979201 +1.0554837,.08163678,.2568033 +1.3766826,.18526082,1.7797445 +.88714603,.77116587,1.2221553 +2.9432735,.36141369,1.2393824 +.7149108,1.5301054,.52235789 +.63259235,.49007579,.14491921 +.64467001,1.4535906,.39924841 +.66468403,.64850983,.46009495 +.79321052,.3652756,.01132508 +1.0899525,.15286691,.31763501 +1.273308,.74092545,.42510493 +.7972666,1.2165594,1.3455887 +.4890166,1.4130475,.85621193 +.88737726,1.6224435,.37586785 +1.0551012,1.4547246,.752247 +1.1380043,.78836334,.67480379 +1.0595969,.30002101,.18645252 +.42536722,.74522189,.40322101 +.67826295,.30823766,.94284633 +.53069935,1.0898076,.06513506 +.65370862,.63295584,.51927536 +.57383221,1.3323153,.5446979 +1.4781768,2.1889707,.47482377 +.39996269,.68116969,.9939851 +1.4121681,.70983483,2.3436274 +.65804857,.10795975,.36379354 +1.9920671,.58858877,1.1742812 +2.1594686,.35818666,.41772163 +.77266907,.78269455,.53786214 +.85245249,.21965338,.24990869 +.92693692,.87378113,.35223123 +.48351647,.28689352,.93752447 +.40750211,.43632113,.04807392 +.64559383,.35007185,.35722982 +1.5985264,.30664503,1.4602792 +.75334363,.3212062,1.799503 +.68711778,1.7800525,.22502233 +.57755167,.0626155,.22586404 +.86996547,.42892913,.41463311 +.70003108,1.4148246,.80830049 +1.0979106,.48539352,.30931061 +.53685816,.67293561,.7539381 +.43019029,.17747958,.21747938 +.91824569,.8487827,1.5012343 +1.7467574,.47740869,.32399193 +.50118609,1.9921765,.79928077 +.81717275,1.9837984,.65646883 +.97216242,.92953129,.81407501 +.46555152,1.2993101,.05414942 +2.3923387,.05462974,1.6382837 +1.3936642,.00634863,.72556365 +.35360885,.73847046,.35497975 +.7289999,1.0856874,.80828266 +.48267386,.08532251,.18601184 +.86428592,.66330306,1.1418473 +1.5907359,.03513544,1.6121869 +.65105326,.8526448,1.7696305 +.54727419,.25649964,.05396143 +.71631263,.51472634,.58491236 +.47101324,.2850101,1.2473842 +.85177402,1.6225751,.03943124 +.7995668,.35758363,1.4784083 +.52408799,.84536628,.03955428 +1.6743689,.11218795,1.4006977 +.25865299,.85766838,.54809748 +.56926345,1.0449858,.43137563 +.27932429,.82038171,.83145868 +2.1331923,.6889618,1.371532 +.8716622,.83471444,.265298 +.72468369,.6607476,.06272386 +.93831557,1.0325442,.30578856 +2.6510637,.23540159,.54925238 +1.4263952,.20701352,.86578992 +.55169073,1.1563614,1.0600599 +1.2167336,.32393651,1.0534032 +1.6215891,.35511064,.47553243 +.51924537,1.1379285,1.8315511 +.92147998,.99944731,.31892366 +1.8842691,.78990561,.37361379 +.50315731,1.0910503,.70374151 +.47079134,.3984896,.90798743 +.71045977,.90272584,.61664349 +1.5661616,.3346186,.92590099 +.76849307,.31743892,1.1948175 +.65674753,1.8782124,1.0407772 +1.2379745,.13566558,.56484325 +.40787038,1.5923149,.99441594 +.73585947,.05548193,.8750241 +.31630791,2.1178645,.13388574 +.85072063,1.2952931,.18084258 +.72800879,.00707065,.83745694 +.44979367,.80854936,.4136699 +.9328521,.11701647,1.478742 +.62497459,.6642141,1.3284318 +1.2001364,1.7180759,.84252955 +.57737656,1.3639871,.37121495 +.58380726,.01503305,.91800236 +1.4165692,.13562076,1.0036191 +.86601531,1.1009913,1.2649126 +.53999773,.86021996,.15934581 +1.0098463,2.3555535,.11306172 +.86709054,1.5203202,.2314239 +.58538255,1.3397637,.76743825 +.89672364,1.1268528,.99670904 +.69686463,1.3590793,.17329439 +1.0464013,1.5610509,.59554845 +.4625889,.31529129,.69144818 +1.7822987,.35738857,.00499828 +.62487696,.83430559,.46931344 +1.2887913,.48065836,.61507448 +1.3175066,.74437877,.70233424 +1.2196806,.58418285,.97674865 +1.2003799,1.0777046,.92383936 +.87287317,.56005898,.0184069 +.67654667,2.2667026,.45571923 +.7354277,.32356031,1.4016945 +.79949712,2.4377084,.81241143 +1.0283971,.2150432,.32267507 +.73621347,2.2857036,.51385069 +.37892014,1.1948052,1.1784538 +.42197314,2.3013697,.87441486 +1.1077534,.2626042,.00927381 +.47656021,.2259232,.92252669 +1.2008527,.01533034,.10058467 +.64105521,2.3479026,.63415613 +.70705643,.1547865,.93461342 +.8730099,.16476825,.5971795 +1.8971383,.4977284,1.3899099 +.90676297,.36719265,.21537312 +1.3391178,.00436421,.47147799 +1.3644192,2.6422317,1.2394257 +.93638049,.82811245,.51732809 +.39341815,.48367256,.11058167 +1.0010478,.24944524,.31101066 +.47313441,.92960067,.86703249 +.30988301,1.2706957,.76569132 +.8351943,.58019265,.38081873 +3.0057436,.15285206,.46409749 +1.0234286,.66876735,.23701993 +.30331364,1.4401363,.06848713 +.34912757,.78000177,2.0768352 +.76149898,1.2000131,1.6448309 +.60279266,3.2471069,.32397774 +1.0710855,.31773031,1.102276 +1.5004074,1.8735423,.10182841 +.82926286,.24219728,1.1655895 +.6294799,.12324558,.32452171 +2.6530375,.07765494,1.1825967 +1.7561561,.95246562,2.6670431 +.55140827,1.0322601,2.2601061 +3.0285694,.44933057,1.0052239 +.33263298,.06489555,.68399196 +.49740629,.34407307,1.2003952 +1.2718437,.25480929,1.5096956 +2.8270664,.64144618,.49659444 +.77293786,.13831774,.75405313 +.69116145,.52196754,.3224995 +1.4036552,.32147489,.114957 +.95819553,.92180697,.08781331 +.49920419,.07053763,1.1584169 +2.4106431,.42147067,2.3957833 +.96346362,.25219739,.02573282 +.8244643,.53818792,.40819956 +.48758372,.82495708,.29558399 +.54631946,.30652398,.84943035 +1.0188979,.38101386,2.89662 +.72550698,.63449418,.58931672 +1.1475097,1.1995507,.55563177 +1.7466163,.25355146,.013868 +1.8923421,1.1387883,.31575246 +.97175914,.24500393,.44396005 +.61683021,1.4156368,.53071965 +.65755675,.12247929,.52576976 +.91091526,1.9227937,.2300809 +1.1505983,.14105141,1.7121584 +.97440491,.77416331,.05751173 +2.5810988,.28531018,.4604668 +1.1191475,1.0020533,.0144312 +.83199044,.59307081,1.5683815 +.43646975,.44256922,.41197031 +2.2491874,.54834148,1.2211835 +1.1618754,.78528417,.54592136 +1.2331296,.38836476,.23697415 +1.179888,1.3411653,1.4244052 +1.9116589,.50459418,2.4273188 +1.9892723,.36127794,.54603045 +1.2331723,.35721475,.80273428 +.81127108,.7750552,.05958352 +.36306815,.69392819,.39526291 +.67864277,1.236569,.33317944 +1.2872099,.23894265,1.1579675 +.5503036,1.527676,.02636099 +1.8635002,.6137944,1.3001407 +.7315219,1.733515,.47434882 +.50332025,.12305402,.48113652 +.48109182,.97331597,.23759678 +.53817888,.99486449,.77220147 +1.4333326,.38858176,.20060965 +.73914274,.35653744,.76953028 +1.5003034,.36423251,2.3848993 +.4372386,.13238871,.59814975 +1.5693431,.26369509,.89529896 +.50434529,1.0997774,.34756569 +1.2758373,.32228941,.35270301 +1.1883871,1.4295901,.11917907 +1.1584141,.21972948,.26679576 +1.5972567,.52161036,1.7230452 +.56613234,.92809727,.19633954 +.49672272,.70138268,1.0133442 +.94723082,1.2960408,.25079213 +2.2641173,.12330307,1.2722687 +.79111257,.64778496,.54148415 +.77157723,1.1210931,1.5772345 +.4626293,1.2770877,.19857411 +.72622346,.04906961,.44025891 +1.1533485,.2461503,1.6257162 +1.2358708,1.0430777,1.3978635 +2.5049629,.83738848,.22430461 +.86407335,.22193697,.36401609 +.33084355,.00403308,.35908056 +.83172763,1.5338596,1.075094 +1.0674318,.42852706,.28993387 +1.3254895,.28781884,.11461419 +.57668328,.00755957,1.1289198 +1.0119745,.08198968,.51229974 +.87949134,.47699693,.10111848 +1.0120099,.76124744,.10114049 +1.4240848,.36847,1.7744748 +1.1560984,.41236239,1.147717 +.43997278,1.925335,.51681224 +2.5084456,.01807828,1.7084212 +.82732517,.11072908,1.1599733 +.73574335,.81098647,.35725155 +1.2774181,.11567584,1.0321255 +.60211864,.07639068,.16986849 +1.8693851,.24781954,.82509991 +.72434324,.31491845,.25617566 +1.0718458,.55481597,.33086815 +.61432356,.00342311,.4781966 +.98061002,.92268568,.06041532 +.85810181,.27121191,.18113983 +.67994012,.97385497,1.6208803 +.21298925,.5588791,.08864221 +.60408934,.92267504,1.2226699 +.6811732,.26597736,1.2268048 +1.116605,2.0225496,1.3213876 +.35412133,.55204513,.42914595 +.71643529,.51754647,2.07353 +1.7062768,.13267308,1.5981324 +.52395062,.77188116,.88452619 +1.5906267,1.2331892,.61129721 +2.5069519,.39806742,.01582876 +1.2214322,.75481496,.47870969 +.76711999,.59576523,1.6431032 +.57284536,1.0487631,.52296277 +1.3351873,.17826985,1.1613947 +1.3563493,.02634376,.05134641 +.52756712,.72769905,.13570473 +.61075044,.5389591,1.1827968 +.97291149,.92590066,1.4695655 +.31529803,2.4906057,1.1716307 +1.8421405,.12359678,2.0674046 +.96223603,1.4762533,1.640695 +1.0770323,.95386904,.04359406 +.49633976,.20410116,.19047096 +1.1862466,2.0852739,.12581738 +1.1642478,.0217492,.49079805 +.57885695,2.1063786,.10875709 +1.3091694,.16496519,2.0755548 +1.97728,2.0544549,1.893447 +.8314575,.68164768,.05856218 +.81548122,.48496976,.99913318 +1.7986788,.28705798,.65611362 +.87715377,1.0576695,.84990491 +.65733675,.17931731,.59490258 +1.0452916,2.2737148,.93049394 +1.9901227,.60902496,.52519347 +.4078416,.0605546,.1152506 +.58120192,.95154912,.99027506 +.93902425,.56183034,.02470348 +1.0446092,.08389608,1.1479323 +1.0167048,1.0913105,.53926424 +2.1796076,1.025449,.50028307 +.6113599,.49291369,.22662647 +.36531382,1.0123045,.78060891 +1.6385512,.97988165,1.8786899 +1.6856591,.47611517,.49100152 +.39856292,2.8291156,.19680989 +1.3601237,.85323235,.26781283 +.52302383,.16038677,.27344931 +.55916009,.10618201,.09361617 +.70110028,.81058882,1.3041039 +.9803952,.20662009,.14665887 +1.5981231,1.1949757,1.0882245 +.50950395,.2987773,.14522054 +1.3463974,.98016318,1.0993909 +3.0850699,.14047784,1.3565747 +.37086221,.86517607,1.6908653 +.50873961,1.0427568,.41120639 +2.1101041,.29419249,.22879963 +.50006609,.43296645,.3746812 +1.638576,1.0798714,.73520068 +1.047248,.5903468,.78480356 +1.2790698,.1520551,.98355856 +2.302541,.38482821,1.8953924 +.58674045,1.4723951,.90509558 +.60274354,1.0762136,1.4762697 +1.259189,.46759044,.20270426 +1.0802168,.06091519,1.2186018 +.93341349,1.0533653,.76704283 +.3664642,.63016327,.58823637 +.32365388,.71671021,1.7434947 +.71335536,1.0557511,.85847196 +.98011748,1.1046532,1.6659719 +.50424365,.22942463,1.252973 +1.7002473,1.1474489,1.0974629 +.71426255,1.2161666,1.5374398 +.33007251,.48622908,.13342124 +1.6418581,.87575889,.97221111 +1.2366709,.0224669,.07373399 +1.2620157,.2008089,1.2554587 +1.0848278,.17511585,.37071473 +1.0709367,.07224796,.3955063 +.96085316,.72297848,.91046585 +.49884279,.56990073,.98005383 +.50866708,.80803518,.79146017 +.64548184,1.7474652,.61779215 +.43573518,.94752284,1.8567786 +.82514112,1.1136963,1.1718482 +.52551664,.11688178,.34029471 +.65662997,1.1042888,.88163011 +.71767993,1.1593168,1.0167524 +.4810426,1.6403087,.21120966 +1.0304796,1.0920935,.2407036 +.6356102,.88643541,.9817863 +.6718022,1.871328,.29767223 +1.189957,.08043505,.85220947 +.98760423,.07968786,.30610437 +.71520165,.05132108,.64938024 +1.1699617,.02935154,.52576498 +.63868573,.72122315,.51311138 +.99064709,.54535619,1.8968183 +1.9284664,.46867426,.02479952 +.58831241,.47154337,.70161832 +.96197487,2.3677546,.52169795 +.27031019,.58503128,.45334275 +1.0829201,2.3672832,.99179624 +.6013822,1.1887008,.57262211 +.82141922,1.6450806,.05946218 +.5316923,.29413357,.29521191 +1.2241618,.78388624,.51781773 +.30965554,.51040055,.16140207 +.62499764,1.58077,.79637605 +.5575199,1.2543727,.79033576 +2.0421846,.71677773,.47451358 +.51766344,.27692175,.56161294 +1.7536269,.66271718,1.4809959 +.70075854,.70687564,.73798266 +.64323139,1.2507007,.10365565 +3.0904903,.08369113,.58857745 +.47097132,.20780487,1.0539175 +.37961156,.93338933,.78583212 +1.3178942,.15627718,.23751534 +.73398963,.08273621,.06675783 +.27303502,1.9884357,.87200649 +.75501394,1.1775337,.43068743 +.67040073,.13153169,1.2052727 +.7812538,.40816767,.52424054 +.90825308,.39168736,.61267762 +.36727966,.77866858,.62671434 +1.0387911,1.1549687,.46178137 +2.230847,.16505921,1.4680998 +.76497772,.72878554,.58698905 +.92771361,.28394784,1.5409581 +1.269552,.95543294,.40812555 +.8296091,1.6045009,.32323654 +.81186768,.22039721,.07448953 +.84207247,.15920592,.08285622 +1.1548595,.12656219,.62928625 +.88990319,.48817446,.37987893 +.44817905,1.8491884,.08822218 +1.367795,.56102411,.59340589 +.73601058,.20779751,.24371187 +2.5150086,.37471138,1.2227303 +.59540584,.47012508,.39871038 +.89618838,.13005448,.12559323 +.90557692,1.0624523,1.3112946 +.2763462,.34001933,.36995001 +1.2035367,.93569792,.33214124 +.4175339,.23795984,.15724902 +.88921622,.30403467,.35351807 +1.6478617,.77154579,1.0915721 +.3702588,.83153189,.43646973 +.53202696,.06472034,.30439397 +1.387855,1.1320764,.44393436 +.81519903,.76297049,.67899386 +1.4165274,.12035016,.12529454 +.81896386,.20290608,2.0002231 +.68491898,1.8708533,1.3906969 +.73384633,2.3193151,.6624991 +1.4467684,1.0026893,.75248469 +.53140539,.01421975,.3118922 +1.1228736,.34280702,.60752068 +.2875645,.35679916,1.5242049 +.94752301,.55719405,.66038311 +.76914461,.42767518,.26116162 +.69952221,1.3382188,.23726113 +1.1575469,.91966393,.4090707 +1.5388436,.40142842,.55475053 +.64059347,.01367088,1.2518121 +.58409402,.39301023,.95007631 +.88071415,.29833107,1.0497627 +.8631434,.42065454,.45544601 +.7934416,1.0226576,.65598416 +.50168055,.8967787,.3441192 +.77279352,.25341269,1.5677263 +.94725662,.48665475,.86549383 +.72234606,.34770864,1.0039145 +1.0179512,.9516059,.91377641 +.73672805,.7178585,.56863379 +1.8100034,.5253085,.48921999 +.79602946,.38558908,.50188051 +.75251874,.33160269,.23122992 +1.0793451,.74268744,1.3931456 +.32718011,.49856948,.62681574 +.37588026,.69951704,.97837533 +1.494042,1.1384014,.22076171 +.51584045,1.1868797,.30625025 +2.0719332,.07859879,1.9850289 +.6792936,.04309835,1.8054275 +.64166937,1.0413629,.20774138 +.57657952,.53392852,1.2320351 +.4703195,.54748805,.92606463 +.56275739,1.1676266,.47968637 +1.2974041,1.4112042,.22730172 +.65891407,1.4015397,.08861958 +.50245214,.98412357,1.3520239 +.51243569,1.233968,.79551533 +.78955993,1.7289544,.02561049 +1.0345137,.37334744,.0233454 +3.3634112,.44313989,1.7068328 +2.7818378,.27698311,2.6244595 +.54024521,.46941041,.5881349 +1.0825567,.20433353,.15499836 +1.0312198,1.4470432,1.7474426 +1.2209562,.30029806,.02149235 +1.0341307,1.0519059,1.3731709 +.98683507,1.1096054,.55498272 +.41108303,1.6542934,1.2297413 +1.287069,.11660507,.22034584 +1.4941607,.42827481,.93482804 +.74568934,2.4449615,.86806149 +1.8984822,.29535067,1.348673 +.49286682,1.6170405,.55768677 +2.0717521,.86401896,.19807589 +.71698604,.90586517,1.0676149 +.43330365,1.1804276,.81859783 +.59444508,.92374998,.70279431 +1.0431758,.75945981,1.1225809 +.5274167,1.0215801,.66218873 +.9771125,.1650301,1.2942327 +.6517912,.5176945,.45537641 +1.060487,.79114573,.78218945 +.66452039,.74995106,1.091687 +1.7169074,.20624946,.25005569 +1.8283763,.64537465,.39907273 +1.289343,.02170129,.27814291 +.43794173,.79246292,.02485723 +.3935841,.33785854,.84880443 +.53268921,.5084792,.24627322 +.32964825,.92103604,.0528294 +.60088624,.55239945,.7013664 +1.0251638,1.0272594,.08757574 +.80662788,1.7043866,.42790232 +1.0760771,.95952729,.4262365 +.94174632,1.2600859,1.3491908 +1.8869116,.54947404,.45990549 +.33611575,.69982975,.32373944 +.72747288,.68915096,.16299871 +1.6074022,.57113355,1.7723517 +.42509623,.3047651,.39195343 +.67373902,.42031613,1.3555154 +.68338141,.16684166,1.3664204 +.59575405,.78241758,1.7141564 +.17528433,2.284681,.60521582 +1.4566827,1.169491,.36440423 +.7662062,.9151815,.46316635 +1.9830532,.21293416,.12267309 +1.1422026,.8501994,.42362709 +1.0586239,.29284814,.88659448 +1.0560935,.43299348,.79810623 +.55329101,1.224509,.40639793 +.82259786,.44554177,1.0407587 +1.5235227,.10486949,.3962702 +.66252569,.9552888,.75655069 +1.0382146,.19265108,.62464998 +1.6534492,.31380721,.51960993 +1.721107,1.5934634,.7440996 +1.0623829,.02669837,.63549614 +1.7379996,.82216373,1.376918 +.63357612,.3051668,.28136963 +1.1821222,.25810656,.64660862 +.60797841,2.1888102,.33305211 +.62687759,.6973552,.25202212 +.83900982,.59870348,.35498751 +1.7444629,.79829989,1.3578691 +1.1064241,1.7608583,.58167034 +.92562293,.24793248,1.0359951 +.97270889,.61419417,.26815412 +.40759591,.40701667,.42971194 +.53503017,.22968726,.0149177 +.97015505,.04643011,.06674175 +.25333916,1.7049192,1.1596438 +.56450117,.71074449,1.0617811 +.84144074,1.9736317,1.3126476 +.55059679,.36566204,.97396776 +1.4508736,.58801277,.16785852 +.99053957,.00474356,.42345965 +.39202319,.48209336,.35942193 +.4945377,.7001633,.10512137 +.55679371,.66182605,1.2921235 +1.0071505,.62454907,.09711391 +.78987502,.76930219,.95661428 +1.1342324,1.1341331,.05295369 +.65396042,1.140594,1.2559642 +.57323831,1.7358617,.8069427 +.89015632,.49311475,.0140692 +.93816853,.82362964,.69807764 +.32827314,1.7184407,1.3577723 +1.8724553,.31359255,.46167598 +.39317955,.43414824,1.172667 +.61286895,.52635784,.40438458 +.68024912,1.1938029,.12635161 +1.3869103,.72475171,.52244096 +.34147447,1.1879487,.06058397 +.92630046,1.2076898,.41815275 +.98886458,1.0113723,.81661899 +.79635289,.47073707,1.2580806 +1.1593618,.79256437,.19313477 +2.1078833,.81892291,1.3198947 +1.4461121,1.3413872,.37965789 +.39636103,1.2340055,2.3927344 +.71168415,.43061984,.6085949 +1.333254,1.3911113,.88577684 +.80996085,.43601947,.81182267 +1.4579275,.66583432,.23339169 +.71669708,2.2834213,.2862493 +.33569637,1.6395691,1.0983733 +1.3072769,.31596382,.55452541 +.67124758,.34134098,1.5704343 +1.0723153,2.6004536,.6571892 +.89686301,1.2240067,.73270829 +.75630272,.65057693,.45077318 +.78770068,.46350044,.73295792 +.50190024,1.041246,.18391473 +.98675829,.92237254,.32574933 +.37831033,.37049384,.90540017 +.42766249,.80444291,.10360404 +.35930572,.65041639,.47713156 +1.0466575,.34988007,.1309354 +.55812781,.47759801,.54020186 +.68978635,1.1991924,1.2981698 +.92172248,1.2806854,.17909124 +1.3808237,.59451643,.92548215 +.38716083,.60841405,.11920601 +.63285562,.17524964,1.1393192 +1.0949609,1.5778466,.60980383 +1.834559,.23522033,1.2917344 +.56710538,.84028942,1.0616261 +.92638481,.37600438,.49664467 +1.1192328,1.298819,1.4370062 +.47116794,.93463025,.65726383 +.23625466,1.9151085,.41016301 +.51376272,1.7275568,1.7729751 +.54607384,.80225027,.39942857 +.60064414,.81100387,.34655625 +1.1331114,.34671021,.04970786 +1.2336519,.42387052,.8636751 +1.1183916,.58587212,.64482883 +.71090656,.44395366,.06158654 +.74373378,.02663382,1.0548925 +2.1189078,.02733606,.92142718 +.82785287,.64417005,.5176707 +.90203447,.18097773,.85438679 +3.3760128,.24679603,1.474331 +1.0765917,1.1119121,.86925481 +.5485592,.27689289,.03594817 +.53764488,.89172623,.71319982 +.65758092,.26525183,.58801293 +1.0913939,.30241275,.57650097 +4.0757976,.00068839,1.057489 +1.9206152,.03080365,1.2906101 +1.1348367,.56859558,.57420773 +.84413844,1.580029,.68556216 +.88886566,.24839107,.03390795 +1.0285063,.04991,.90876899 +.94933577,.42051852,1.2977159 +1.2215492,.22278486,.07409274 +.73331678,.01305484,.41442286 +.84740374,.03732605,.9818869 +.48995975,1.3511323,.35273648 +.83510995,.38013446,.52634762 +.38484672,.76848324,1.4836661 +.93573245,2.0066842,.79731347 +.56801273,1.4928883,.18894163 +1.8580919,.90718618,.09587371 +.79784162,.68084161,.44838416 +.90983385,1.3437813,.1391841 +.47453377,.12667712,1.5841472 +.33270611,.97274303,1.0886323 +.58543633,1.1124908,.03600682 +.5588509,1.4623101,.4547495 +1.1394947,.60096126,.61276938 +.58419667,.68552983,.1724324 +1.0354194,.21674978,1.8761353 +.81832131,.98201237,.94858581 +.50751899,1.1844116,.9705315 +2.8448442,1.6435989,.22168309 +.66897293,1.4895652,.8980126 +.84056239,.80262624,.57575472 +1.3707192,.24083447,.70214297 +1.1518444,.4395674,.53063814 +1.1880977,1.3620394,.93926326 +1.3722733,.23034011,.55543761 +.46141888,.95889214,.24768459 +.49056999,1.7283156,.56107616 +.62749952,1.1387774,2.1855276 +.82516578,.14258106,.54429823 +.64215118,.52972395,2.3765251 +.42162177,2.1088046,.6146208 +1.8771195,1.2765965,.70770302 +.52671812,.40529108,1.4974451 +1.5248194,.67719201,.29284385 +1.0017927,.13332332,1.7830826 +1.2744009,.7508774,.47977395 +1.5617382,1.2059465,.64470895 +1.2730795,.14700177,.69858535 +1.1309963,.17839974,.3359337 +1.2543509,.38146081,.33014566 +.82393249,.4328778,.78277738 +.43295221,.4766918,.13558835 +.54269461,1.6676313,.19826792 +.86577588,.40995898,1.0771539 +1.5933557,.75189975,.17493952 +.64729881,.01365504,.03978926 +.71834046,.90685341,.18883828 +.45215288,.3672974,1.6963211 +1.3676813,.12199874,1.1969183 +.6817878,.03223106,.21898969 +.46069227,.73839109,2.8360969 +1.5704172,.35447029,.70111578 +.38092049,1.18028,.32495717 +.72506325,.80593346,.80319052 +.46138638,.36054232,.15353689 +.80671067,.25495268,1.6670823 +.68220263,.74080643,.41830025 +.32302946,.50324974,.44682921 +.67205223,.61339198,.2254788 +.64850641,1.4449589,1.4379811 +1.0085232,2.6436732,.6014626 +1.3200982,.62657163,.36118016 +.82045883,.1476676,1.0972363 +.88823752,.28894049,1.6513968 +.916857,3.5615692,.27740766 +1.0594061,.88907724,2.5570155 +.65459946,.12306585,1.8812772 +.80902911,.03022859,1.0467696 +1.184671,.30547754,.07130493 +.83123533,1.249537,.64543029 +.36211838,.62187142,.97737641 +1.073361,1.1894841,.95490358 +.46905699,1.2933753,.1055405 +.70828033,.76494142,.00665397 +.87383582,1.1003948,1.0934578 +.98086496,.49059806,.72459815 +.68949816,.24160136,.51815775 +.85983939,1.0426092,1.4351803 +.70055466,.1421924,1.1656148 +1.1782164,.32996552,.01657882 +.99807704,.23032693,1.5834055 +.63628833,.11726615,.27994349 +.61750917,2.3515652,1.0859692 +1.2163409,.29653257,.09006456 +1.2099885,.05491574,.02755196 +1.0667516,.95892636,1.8735908 +2.5965908,.09481852,2.3679502 +.42261853,.82181002,1.0103215 +.4233578,.70367528,.9581157 +.42713509,.84561989,.11088405 +.59020797,1.1743536,1.555645 +.7095544,.38934649,1.0364878 +.2728086,3.0939926,1.4586061 +1.6274229,.88709661,1.2764347 +.33764061,2.2230655,.71725898 +.5244164,.10061869,.88722329 +.82141256,.58107666,.56992079 +.61091513,1.4737985,.12680442 +.68954007,.36655337,.37494764 +.40335131,.56569308,.47317825 +1.267085,1.143389,.18579853 +.80727762,1.5728556,.41897238 +.78976134,1.6363172,1.5737393 +.66600102,.66575914,.2807054 +1.3484726,.77349314,.45895923 +.96053698,1.2744277,1.4261622 +1.7292981,.08731516,1.0148198 +1.1866428,.5105043,.24962386 +.63391936,.15469433,.73397395 +.84560537,.67474116,.91615893 +.58042109,.89244569,.02652105 +.57563243,1.2885104,.83223279 +.92375348,.56770886,.91968114 +.31607057,1.963135,.24365483 +1.0799104,1.7271495,.06168754 +.26716806,.60763639,.44068741 +2.2118264,.12887546,.31293939 +.85429987,1.9729244,.24292807 +1.1492263,.47739248,.38732329 +.73656607,.12542537,.93229064 +1.5765793,.76503283,.22872267 +.6527558,1.0490795,.41630378 +1.3679706,1.3305499,1.5387927 +2.0639386,.82191504,.55563254 +.62300717,.95219519,1.90502 +.83684334,.09712483,.63939656 +.72294885,1.3776447,.71701299 +.82456087,.17128417,.66567352 +.53869787,.52108525,.87959595 +1.2493923,.33473879,1.0379068 +1.4692096,.28951472,1.3708051 +1.1680088,.64164536,.998567 +.64030452,.81428846,.85471436 +.83107008,.86480208,2.4565409 +.88300245,.93819432,1.7888635 +.34051652,1.0588354,.95884137 +1.080464,1.1698808,1.1737636 +.67493808,1.4244028,.29606507 +1.3792597,1.5991812,.8438715 +.75617243,2.1825501,.17390619 +.69357233,.23180342,.4233444 +.27687941,2.4432414,1.0145057 +.40279043,.20966966,.26760278 +.82238499,.55647605,1.4344588 +.48189057,.37057321,.92341158 +1.0800694,1.0252058,2.2022682 +.86637832,.13227829,2.0076097 +1.4282257,.55919153,1.6195034 +.5324995,1.435783,1.351679 +.3504792,.73446303,.01112052 +.81110566,.86213855,.81003357 +.37426117,.19979415,.60259831 +1.1184292,1.2323089,1.1939599 +.74132491,.41144025,.22605071 +.52080132,1.2207604,1.7775052 +.4059109,.72880953,.38049113 +1.2706225,.31778979,1.9665308 +1.9262088,.8100058,.96902696 +1.3221825,.17421946,.28365551 +.65401604,.41403785,.25611889 +.86260112,.81963731,.06903688 +.39026052,.35970623,.47811838 +.52421956,.29330403,.63696071 +.96566589,.56028151,.57774378 +1.1180811,.02062172,1.4602753 +.72535422,1.0068365,.06829147 +.32241038,3.0835695,.29223425 +.46996391,.02206326,.94863764 +.89108598,1.5805386,.40164696 +.48850929,.70815715,.28696705 +.91128995,.58848312,.21701918 +.84616178,.92934925,1.4684139 +.3994074,1.912368,.94489472 +.64818566,1.4587902,.86879745 +1.0561629,.48149606,.19111001 +.85746643,.85149834,2.761279 +.73609934,.43217596,.89370626 +.28895872,.61154561,.16406975 +1.9091861,.82112944,.71973079 +.63183532,.6547707,.73677109 +.87417028,1.0053591,.74349161 +.89098785,.04933764,.38137047 +.63906445,2.2893291,2.0278066 +.56226334,.48865354,1.0048848 +.54412898,1.7082972,.2759223 +.9733233,.4192411,.17039629 +.44562088,.74111618,.16846485 +.67913149,1.1278448,.09702405 +.41922937,.69308388,.32349019 +.79857731,1.8395942,.33247241 +.52492572,.07553411,.27779538 +.58566129,1.5491448,2.0702024 +.79678514,.86369254,1.0232835 +.63475859,.47042189,.45564004 +1.3123468,.8196392,.93451057 +.53319394,.54795096,.0577966 +3.5378873,.72265499,1.7895179 +1.518248,.04899357,2.9486486 +.59791036,.75913092,.04189212 +1.3578514,.98249094,.40946702 +.93404848,.20834618,.19352273 +.82508885,.15325943,.06526827 +.45576774,.93508573,.1931247 +1.4367006,.96819146,1.5529311 +.51773142,.77918096,.45517206 +1.1991111,.37721769,.83161199 +.42248422,.81102596,.86999703 +2.2680754,.88363649,2.4590058 +1.9600274,1.0534573,1.2270849 +1.0897959,.54149274,.01183457 +1.0425107,.08608517,.97592179 +1.0260245,.47515685,.0055053 +.8301554,1.9902096,1.1746228 +1.6281031,.22497965,.87606034 +.70687104,.74862496,1.7176619 +.50642829,.59261789,.1026287 +1.7557916,.06860073,.20928136 +.58690975,1.2670104,.54480664 +.78982989,1.4409012,.59145658 +1.4388014,1.1075232,.0366423 +1.2060292,.30883544,.25259921 +.74812808,1.4073417,1.618375 +.51895351,1.6383242,1.7122453 +.91474916,.81075893,.57351852 +.96102239,1.1493964,.66378916 +1.4348434,.50096589,1.3005729 +.85937332,.68342533,2.0212593 +.59009175,.07317069,.66897202 +.63527391,1.1675047,.83432238 +1.5449656,.72869429,.42894686 +.81877622,.0215099,.54370719 +.55063243,1.0069502,1.3284405 +.73660113,.18198454,1.2668994 +1.1434142,.74748774,1.4780324 +.59742672,1.0144711,.08909178 +1.487632,1.0585839,.65243412 +.54775359,.84441757,.50534229 +.76177244,.96484154,.92325277 +.87885191,1.0019556,.54487916 +.44343122,.38532757,.59619963 +1.0788924,.67249522,.03561463 +.53874288,.14017264,.46273838 +.66846755,1.0953896,1.2806701 +.69731256,.55540411,.47798628 +.26654894,1.6348799,1.4284446 +.34277926,1.1891899,1.003121 +.45686184,.11029977,1.6493403 +2.5155676,.16380609,1.4065687 +2.2286482,.42798522,1.2973845 +.51025898,1.0984837,.48652772 +.3714501,.93192188,.3373038 +.5441421,.11036823,.44997719 +1.2103163,.32955307,.15033345 +1.04016,.49967022,1.1985344 +.77509245,.86676143,.28981621 +1.7749073,.1136562,.19883003 +.71794309,.92293468,.55235707 +1.6482576,.49530724,.50910996 +1.1100153,1.4555664,.47869451 +2.1403582,.60900757,1.3288284 +.78331401,1.060311,.71878115 +.60389187,1.2717692,.49027318 +.49727342,.85130633,.37050699 +.5878703,1.405235,1.3628723 +1.4050207,.20534236,2.5591417 +1.053039,.86511896,.15810162 +.39221631,.43880541,.92679504 +.41716803,1.0909366,.66961009 +1.2094126,.92265657,.81029961 +.88927382,.17461623,1.0507192 +.66670135,2.2108858,.96683381 +1.0828088,.21066335,2.9949787 +.63518429,1.5435445,.84200322 +.56230281,.95937561,.14947815 +.71376843,.23319321,.30664374 +.79501999,1.1027417,.31090682 +1.2767218,1.751751,2.0372042 +.63290959,.42553194,.24843766 +.81971306,.86562018,.63300327 +.46691218,.78099141,1.0190503 +.71485738,.58026659,.25858383 +1.3819899,1.5953591,1.0287059 +1.0817299,1.4030682,.10823509 +.54046263,3.0840848,1.282224 +.86009128,1.3798886,.87517422 +.69313483,1.3799881,.62494979 +.39496404,.49225104,.07108421 +.67474534,1.297748,.4424543 +1.0329911,.44019702,.99746905 +.59490985,.80175539,1.2686846 +.500183,.62290169,.33448682 +1.5928381,.84793777,2.1119777 +1.0899779,1.2034335,.88715933 +1.1372085,.61542577,.69198864 +3.719823,.70723045,1.1087629 +.2934292,.20038618,.04439745 +.66483346,.47619228,.87902344 +.75491105,.71802632,.18370439 +1.3273221,.83622478,1.318223 +.65211829,1.0660689,.0198128 +1.4054534,.13371118,.32686661 +.56252291,.07841501,.23391507 +1.7152124,.00468669,1.4554859 +1.2016772,1.011448,1.4928251 +.49162455,2.0185883,1.6586468 +1.2893018,.56971882,1.3273077 +.36852449,.67783617,.76874445 +.61550704,.97549291,1.0079615 +1.3779534,.92749994,2.20526 +.46461876,.22497786,1.1721177 +1.0906035,1.6460738,1.0536138 +2.2763048,.64399963,.04571552 +.77441294,.32300618,.41166313 +.72896241,.65839411,.90507278 +1.0187368,.56222178,1.6999848 +.62011065,.00652051,1.4755608 +.89806185,.89620067,.06094892 +.49475688,.29217107,.09672247 +.48169896,.93750433,1.2644137 +.6095575,.64288842,.89479356 +2.0994438,.57687326,.90302366 +.76103664,.40118525,.18050597 +.8849476,1.5693856,.16836734 +.7060799,.17838058,1.3982003 +.39776492,.57576035,1.0390661 +.90579176,.55152274,1.8301454 +.43235587,1.6481403,.80296898 +.5458954,1.0205235,.6400484 +.96622734,.25954357,1.7316485 +.49882537,1.1200504,.01994264 +.94988288,1.9151026,.82174521 +.97449225,.40256185,.88377553 +.3417719,.95193781,.0655099 +1.1213966,.06783507,2.1411745 +.75101024,.63449721,2.0038887 +.62539865,.69425107,.84309284 +2.6263505,1.1150938,2.1251017 +1.2479209,.47285232,.55541145 +.34976212,.03410496,1.2154468 +.88642017,.34227404,.17651067 +.33179218,1.1601619,.19368581 +.46383237,.88610746,.32668646 +.58519791,.66011991,1.5224411 +.59531728,1.1407828,.49619468 +1.0257378,.12280971,.83891778 +2.5446483,.25888345,.04230184 +.77850463,.3543621,.81375692 +.51832567,2.5691824,.38119692 +.51323095,.29956791,.0412336 +1.3477297,1.9628872,.01745033 +1.662408,.248035,1.952222 +1.3873438,.78594569,1.3162045 +.94907584,.44305549,.04466401 +1.2992468,.83758047,1.2333004 +.69151105,.39060849,1.1945484 +.60022929,1.5988396,.63612392 +1.4955494,1.4869814,1.1880312 +1.5647202,.5127411,1.218853 +.6105224,.90438547,1.1806205 +2.1723729,.63596795,.12926615 +.79785083,1.6866211,.72837538 +.78474014,.68855474,1.1802025 +.42939697,1.7573853,.36314133 +.45138771,.84601242,.22690278 +1.2047758,.97768444,1.7137779 +.34946735,1.7355848,.6023038 +.96038386,.46780043,.66918217 +.69661985,.02346894,.14604062 +1.3475563,1.6399144,.33520499 +1.0160137,.64923904,.47246989 +.87727164,.26323989,.44916479 +1.104696,.26261538,.02836077 +1.5896294,.29600084,1.7200422 +.46339389,1.3143665,.50298216 +1.751081,.33293592,1.812794 +.79845064,.4385911,.82337003 +.83621028,.33892938,.50364657 +.33199575,2.811102,1.7389022 +2.4296654,.96041184,3.0482215 +.69675727,1.0243178,.57961835 +.68130328,.34969092,.70841102 +1.3334868,.65447869,.17815848 +.77979963,.51160164,1.0051438 +.65946922,.33298238,.96902031 +1.620407,.67585313,.50057828 +.70201778,.64074198,.306991 +.50277683,1.2177131,.88660683 +.4591855,1.251792,1.0237038 +.59706886,.15118823,.40226342 +1.3380037,.33906477,.55886374 +.80614859,.88955429,.00405536 +.90735659,.20607425,.69637845 +1.3807368,.42230555,.34968569 +1.3057783,.71799029,.32936075 +.31763335,.07597702,.03340233 +1.2992847,.59243198,1.4061879 +.65214943,.72160287,.71032587 +.58160558,.747947,2.9374826 +.18162318,1.0601392,.14520989 +1.4767722,.55624483,.42490957 +1.2260629,.63770273,.76109462 +.83927349,1.0938892,1.0589527 +.97777854,.52374053,1.1192144 +1.0258927,.09924511,.81604646 +.50102391,.58174488,2.9823643 +1.4028344,.32589769,.55187465 +.63332865,.77194732,.81630781 +1.1965288,.42297506,1.57894 +.43814853,.72894724,.07278106 +.65677347,.64688835,1.4978019 +1.3395403,.65569806,2.7833265 +1.1320877,.84170963,.69424799 +1.0528055,.51705849,.71665534 +.69239948,1.0895403,.58309267 +.39677126,.52931295,.37818663 +1.9805543,.56903519,1.1050052 +1.5752809,.77936706,1.054444 +.94528452,1.5699327,.16525768 +.75474299,1.3515845,.69243098 +2.5861635,2.2872161,.29602615 +1.0198784,.01294096,.60610575 +1.3291548,.57278631,2.0249956 +.83335599,.6154992,.15866957 +.87966177,1.2285543,1.6331861 +.59706866,1.2464612,.44738626 +1.3081965,.66253487,.57372703 +.5517924,1.1015825,.79379757 +.70833982,.71098965,.26477543 +.20607747,.17871599,.10495606 +.7521677,.86934582,1.4206946 +1.5750428,.81621108,1.439748 +1.1091259,2.4977402,.66065096 +.72727971,1.1191048,1.5106617 +.39267603,1.391004,1.3097402 +.68873694,1.167006,.771261 +1.5448181,.08151575,1.7975689 +.70306263,.12263985,.5205755 +.43356092,.26513601,.2236667 +.48658917,1.3959147,1.6501756 +.73689491,.87481924,.98098654 +.79357161,1.6066936,.50027493 +.5038459,.30721603,.90182762 +.56595006,.15997624,.53643278 +.57666545,.06263302,2.0527607 +.57260758,1.487108,.15318364 +2.0189672,.32930049,1.545837 +.79401172,.21540716,.05611827 +.8244871,.76975577,.36801285 +.63580853,1.3490769,.76263407 +.54555034,.3179482,.56862325 +1.2114581,.89265047,.04159258 +1.1510975,.39879104,.11260253 +1.1347354,.03231097,.66859195 +.2894137,1.5077672,1.5754525 +1.696456,1.0552208,.67912369 +.65091541,.14263146,1.1803883 +.34331679,2.1017519,.29978501 +.56266001,1.2255308,2.3884437 +.46095465,.32102428,.86422177 +.56388741,2.3847074,1.0250788 +1.3625308,1.2448911,1.279831 +.31292559,.74874072,.05798449 +.68450527,.2633824,1.0149077 +.78461057,1.9770856,.23626936 +.68370104,1.1010386,.65352727 +.47093126,1.5440416,.15854104 +.41325162,1.1057325,.10511962 +.96283064,.13737739,.48959641 +.41139073,2.1665463,1.2565313 +.86001482,.01529477,.30844528 +.95660578,1.6905973,.40713825 +1.301198,.59727052,1.0881026 +1.1521843,.74824502,1.1773893 +.57706939,.89820362,.60021928 +1.0432195,.97185043,.39746288 +1.0183028,.16835312,1.294854 +.61746409,1.4642566,.47846556 +.91363447,.3721108,.1114696 +1.8780933,.36482398,1.4834718 +1.1770601,.18336943,.46378796 +.45765338,.90660886,.58116431 +.73271044,.06632446,.5210879 +.72197059,.00398984,.20783794 +.54668409,.75817766,.74624093 +1.0281835,2.5499131,1.4919705 +.42978954,1.3795984,.42513132 +1.3010742,.77055844,.67258746 +.87022476,1.2942416,.48040073 +1.1926823,1.4939691,.35375765 +1.1639785,.35978625,.79695489 +.48487097,1.301315,.91616107 +.89593845,1.7432444,.45696839 +1.1356852,.52921945,.12850199 +.5781448,1.1294562,.31124629 +.76946818,1.0057516,.41661703 +2.3309939,.51615227,1.2435278 +.35433794,2.0361286,.87065295 +1.5086752,.22916018,1.5511236 +.82984729,.29521167,1.3541196 +.4897682,.41912104,.30115479 +.5512447,.37911658,.48924661 +.50940209,.54650039,1.1908926 +.68183483,.70559606,.27591815 +1.352858,.62972852,.10517156 +.68402723,1.5743524,1.0731334 +.73884096,.20605013,.86727682 +.62039374,.19737693,1.3829284 +1.3707593,1.0811941,.28688598 +.46698768,.08461868,.37496946 +2.4255408,.22909891,1.0695766 +.60067558,.13077192,.22592236 +.65560261,1.6963106,1.8185749 +.83527293,1.3991455,.08673402 +1.0751774,1.4544078,.89510499 +1.020739,.10054751,1.5505719 +.49559003,.26705406,2.2686328 +1.1079238,.18106904,1.3148642 +.62978667,.16290318,.71418195 +.86636895,.76320888,.65180147 +1.0442104,1.8740877,.27021165 +1.5199187,1.0985891,.51996711 +.69163752,.91788859,.43928886 +.3406461,1.3088265,.13159482 +1.9857804,.10024982,1.0331221 +.87139757,.35232185,.39801239 +1.2671443,.40008827,.93605912 +1.1219725,.17005199,.06934452 +.68004586,.34196152,.19417919 +.86149365,1.2491906,1.6300031 +.42406147,.65679616,.57053981 +.44400195,1.5578386,.1765883 +1.867615,.04484762,2.774825 +1.0975101,.40381758,.79369262 +1.4076759,.0191263,.55316544 +.62750043,.75679045,.36863249 +.52300687,.38319436,.02248597 +.55658764,1.1595864,.39075385 +.51405206,.8225258,1.2117331 +1.3184606,.66981927,1.7429429 +.39399416,1.5155832,1.2995309 +1.3270178,.44398692,1.0737947 +.66472276,2.944901,.25120107 +1.605353,.09220728,.50821889 +3.1200017,.33672142,1.043965 +1.6354137,.00727452,.17235511 +1.0246798,.41932657,1.1294256 +2.3757778,.82425032,1.0479073 +1.1908333,.28914857,.19627086 +.49959679,.64492825,.83683157 +.35339001,1.3669395,1.2606647 +.7092244,.77220506,.7326539 +.63064014,2.3323909,.69193193 +1.4239869,.71064548,.83859901 +1.0899966,.11247675,1.5456786 +.77480474,.6740563,.13315258 +.31289512,1.6091602,.54819976 +1.0420416,.68872837,.23323954 +.47493304,.44845951,.71870633 +.75658217,.71751798,1.3900707 +.81198766,1.0270072,1.0111018 +.86861105,.79490168,.03262196 +1.1190636,1.8666112,1.4178942 +.73028964,1.0031384,.4820428 +1.0209514,2.4716291,.08201905 +.72235667,.83903409,1.3663846 +.48537959,1.4695772,.27520693 +.58508532,2.3061668,.57250879 +.84986525,.73643111,.38208877 +.53783976,.92072321,.74012749 +1.078226,.25119869,.53435891 +.55835066,.84795437,.0081913 +1.0150014,.56375631,.35957726 +1.2337819,.39403443,.12979258 +.47238013,1.5265763,1.9355542 +1.0396453,.76238302,2.6436871 +1.2927188,.67598443,.67644216 +1.1269392,1.0462204,.15800081 +1.6662917,.11884631,.98929874 +1.9644769,.44855516,.6825834 +1.437958,.01490881,1.0045406 +2.2571418,.70417074,.05087887 +1.0170205,1.2192413,1.1627443 +.44073956,.62461625,.31898547 +1.3075176,.18541523,.70219644 +.58223359,.11318257,.257011 +1.2983097,.94808053,1.6131333 +.75923302,.72608477,1.1048829 +.70989152,1.0544821,2.4196829 +.55179492,1.9571035,.85400181 +.34718855,1.5553462,.72550227 +1.4322989,.09904748,.29469447 +.50492599,.22672193,1.5109168 +1.3315556,.65059632,.7611133 +.781552,1.2779433,2.0861634 +.76996027,.22287839,.60888283 +.93422436,.10945367,.3685571 +1.6111796,.03949182,.1127426 +.3732778,.34959497,.72801076 +.75198043,.2611481,1.3211659 +1.2330389,.99319521,.31853773 +.63146326,1.4861134,1.4090072 +.71010643,.41059074,.02853874 +.67426332,.34124933,1.1240026 +.6723874,1.0117281,.36962981 +1.5173865,.17200645,1.3733817 +.55600505,.2271256,1.9200726 +.67927918,.41702242,.01559477 +.28864469,.88942758,.21373244 +.9428054,1.9334976,.12969099 +1.3638054,.09866915,.09636567 +1.2623949,.52182805,.87520033 +.50704536,1.0810308,1.0023653 +.86397136,.14394869,.61979987 +.73817941,1.0086557,.99826525 +.41340846,1.7522609,1.1085237 +2.517746,.20447489,2.4854564 +.76095021,.37490647,.00708752 +.99892739,1.2426611,1.0823866 +1.2864614,.02351211,1.4850494 +2.0212378,.54542637,.82812053 +1.0473584,2.3104782,.58097705 +1.1761975,2.026312,.92082176 +2.4980579,.90436189,.61653923 +.38619535,1.1710822,.31865921 +.5231901,.25939527,.99369729 +.4134418,2.0573619,.60965581 +.60541943,.11948471,.21773235 +1.3279111,.08425962,1.2432091 +1.1380353,.16219667,.72261344 +.65331498,1.6217189,.00964642 +.63682835,.48571386,.51482024 +.99634783,.49451783,.59736268 +2.0885765,.29661401,2.07253 +1.2297746,.35899449,.71328893 +1.1664786,.84522241,.51759301 +.44300916,1.2872284,.37445528 +1.3189663,.35232984,.38846376 +.52428413,.13931143,.39245242 +.50496064,1.6427345,1.3497575 +.57761831,1.7550655,.09452982 +.52999016,1.1518271,1.0497938 +2.3493763,1.0372916,.06928908 +1.5209447,.28964106,.55827321 +.89715057,1.2166124,.41871218 +.77095256,.93882241,1.0757988 +.56735907,1.8486037,.83570241 +.81248275,1.7076427,.48980746 +.58267458,.68249684,1.3338811 +.46684954,.55108514,.50331094 +.90555951,.12706457,.05419879 +.65667248,.29718847,.70231355 +.35145687,.07073427,.38437991 +.54089291,1.9823503,.61724708 +2.2443074,.26822473,.24834468 +.3980428,1.3631747,.50938221 +.80769588,.26164183,2.0365868 +1.4461686,.95771725,.87666065 +.6545251,1.1912478,.24499138 +.5180597,1.5723884,.2335149 +1.2478351,.76626858,.85290814 +1.3864103,1.4047027,1.6965356 +.43993503,.05178672,.024584 +.97650653,.10085799,1.5132496 +.43158116,.90670881,.50170749 +1.4051413,.09879404,.10085371 +.77184145,.71050382,.37540723 +.4072167,.34809714,.00734282 +.36302023,.75247163,.0682533 +.38273675,1.6424133,.60398455 +1.7122293,.60579404,.95513944 +1.8250894,.75807165,.68176423 +.54784808,1.5456734,.46896232 +1.2159233,.39811542,.60337804 +.31241138,1.1375932,1.2218155 +1.2338555,1.2855177,.09839354 +.58559602,.11910893,.67216445 +.84736115,.95650435,.55934111 +.52076163,.44405562,2.1000582 +1.0644493,1.311649,.18670679 +.89095668,.33998496,.07209669 +.86762283,1.7793465,.47224832 +1.0734061,.29819303,.11856421 +.70965005,1.4354019,1.9939858 +.69898251,1.0576902,.11786759 +.50674089,1.4820721,.41017216 +.49953609,1.0154741,1.3510142 +.39001212,1.6757798,.71998043 +.44914897,.27545008,.48743864 +1.283203,.49141201,.58719915 +1.0261379,.2505103,.23486875 +.41660231,2.0404355,1.7485792 +.93239574,.2148611,.6110437 +.45457672,.80860551,.72884113 +.5710536,.57550393,.73501323 +1.3147123,.68753759,.23388532 +.64438206,.57253267,1.3255318 +1.0061557,.28917163,.20552581 +.76595428,.74232264,.8186831 +.87052831,.72228069,.05606967 +.98767344,.75717099,1.304399 +.94731109,1.0862614,.53433149 +1.0145031,1.5001002,.20443807 +.79985032,.1211631,.15771043 +.47649449,.4967694,.78325619 +.76205775,1.2376968,1.1374167 +.79859567,1.7960093,2.0760539 +.69076513,.60020993,1.071916 +.98583408,.59092546,2.24754 +.75205323,1.4921584,.82182141 +1.086063,.50609282,2.8843951 +.75398378,1.0254531,.2215001 +1.1587484,.25384934,.0886307 +.77453668,1.7445832,.53666047 +1.5538865,.18453582,.90398803 +.62370432,.77321075,.34973983 +1.7651577,1.3221394,.11185592 +1.5429641,1.055867,.43071482 +1.3941374,1.333841,.10040267 +.72400913,.01476905,.17176899 +.33609005,.9105944,1.5144386 +.82847261,.26831059,.27792675 +1.4125318,.7499651,.76098616 +.35878409,.02831194,.71889163 +.51723076,.0694928,.54893186 +.89996215,.12309995,.04915421 +1.7235822,.42097591,.00623494 +.51736719,2.2184116,3.0636906 +.40841183,.36607497,.07224123 +1.3992958,.45019583,.99479664 +.87264721,1.4290516,.60439673 +.691149,.3410093,.05123768 +.77069259,.29550709,.19949234 +.76996978,.57603363,.7902586 +.37802097,1.2367268,.25649901 +1.5051109,1.6488185,.79827676 +.81072684,.29816712,.78363155 +.55730405,1.8514129,.44196139 +.67442528,.70454542,.00484978 +1.6655135,1.4722232,.06132172 +.72467096,1.9239783,.99019 +.52860416,1.8383267,.74611205 +.74713437,.84094731,.59898124 +1.1394166,.60714587,.4587748 +.45957139,1.0841979,.27085919 +.72408397,1.4056612,.47264225 +1.1012632,.54662688,1.4921939 +.48184085,.13391119,.64153131 +1.2864493,.13796477,2.1137198 +.6763982,.03402827,1.039007 +1.1680695,1.2663499,.57901109 +1.0313233,1.2779791,1.4350527 +.86797217,1.4831686,1.4113122 +1.6091321,.63860579,.71881538 +.66278516,.97860968,.16947176 +.43100397,.58856835,.0414397 +1.1962907,1.3317288,.46853654 +.74243862,1.4491215,.17385009 +.56396254,.99514476,.93416474 +.61818744,1.8605338,.13226578 +1.129201,.69070414,.11218552 +1.1178986,.32736652,.69578902 +.41279266,1.1184079,1.3038674 +1.8889053,.25342439,.45044978 +1.7583195,.20977282,1.6184304 +1.1414311,1.4224983,1.3919396 +1.0567005,.37948271,.21681186 +.78363955,1.8319943,.55278249 +.90575046,.77823548,.65609907 +.65220165,.75147989,1.0781064 +.362113,.13968141,.19071159 +.7169266,.37879189,1.2614676 +1.1356971,1.2417619,1.9235888 +.56426715,1.6303724,.73777873 +.78695585,.04180994,.43036956 +.93217104,1.2567751,.90164973 +.78733699,1.1865737,.70855452 +1.0693146,.87318026,.24611594 +.70014283,.38386878,.39979313 +.75034977,1.9201604,.66390315 +.40522072,1.7595015,2.349237 +1.2550936,.22190209,.60131947 +1.5442649,.10255585,.71056426 +.68342729,1.8416139,.03587504 +1.0398954,.06725851,.04226024 +1.7616072,.23431019,.44236352 +1.1690602,.01834499,1.7076009 +.62751503,1.4270816,1.0453013 +.85204531,2.0131184,.4731146 +.74478445,.44675718,1.4389826 +1.6524073,.10433057,.15276626 +1.515972,1.7954514,.9826525 +.49796842,1.7337642,.45975508 +.40090355,.25453784,.16259613 +1.0170191,1.2513931,.36570616 +.70059347,1.0457109,.31285019 +1.0620172,.08701885,.345485 +.76953435,.94921571,.49490668 +1.5037726,.02923141,.16566621 +1.0612255,.51072672,.96451608 +.62798966,.34112853,1.6660014 +.43223656,.02829361,.40598785 +.68013149,.62206022,.40495361 +2.1737091,1.5566952,.9094573 +1.1079222,.16952694,.00012995 +.41093365,.42905326,.03544595 +.62637189,1.3752448,.93181006 +.47360214,.56840046,1.1373476 +.79696834,.87932793,.99154828 +1.0336754,.36827447,.43185565 +2.089233,.35447273,.17477785 +.3029803,.86144289,.01313776 +.81540622,.48097614,1.2871345 +.84184414,.10657585,.44752736 +.87453614,.79336968,.11267303 +.4415211,1.7978837,.50853633 +1.0910955,.8753945,.15611095 +1.0241775,.65775409,.22370544 +.36714988,.81435117,1.0663412 +1.1250059,.60937665,.2894246 +.32897241,.86996324,1.0483545 +1.4114481,.6003406,.20468643 +1.3971674,.12181581,2.1499301 +.52271292,.42159997,1.5965286 +1.0957488,1.057003,1.439129 +.71201229,1.0624967,.18015027 +.70340034,.2225733,.77296416 +2.2594285,.54638832,1.0050838 +1.847583,.01825546,.71727464 +2.1628485,.48758465,.73329676 +.59773338,.84249691,.69078864 +.81537201,.71953618,2.4244574 +.9834618,1.0049069,.48428265 +.56928186,.19622504,.5104029 +1.3416867,.42480558,.03011916 +.60474141,.0598109,.70538689 +.68399392,.14146961,.71794956 +.38191881,2.0954465,2.1354485 +.62327139,1.6240589,1.1299881 +.89819144,1.1812556,.27650157 +.5854485,.37560097,.59120458 +1.277619,.94291842,.25283207 +1.0290107,.74367881,.00496318 +1.8348807,.04726368,1.3523714 +.76858677,.52144602,.78749402 +.73450441,2.555583,.41651403 +1.0933046,.42324253,.7256594 +.89433708,.96746746,1.1389727 +1.2327708,1.396346,1.2870746 +.64273014,.74388818,.66336412 +1.6824621,.02612127,.53982686 +.34529218,.68170174,.903096 +1.2034891,.26262048,.94213847 +.86436704,.41187518,.77259107 +1.9263979,.88078524,1.0266299 +.88382344,.98223466,.18806305 +.88194782,1.2893149,.85161097 +.52996089,.09106181,1.2141468 +.75886478,1.3625624,.47208361 +.93578536,.26825904,.80102026 +1.1464713,.07921273,1.1936482 +.7985575,1.3292903,.42831234 +.62854278,.69696823,.38567642 +1.1995496,.78933166,.6607781 +1.1754949,.18852846,1.2695904 +1.7031545,.30356481,2.314481 +1.1144672,.14322101,2.7547779 +.50036857,2.2462319,.26893371 +1.2836555,.53402663,1.0810151 +.34020577,.78946822,.53193716 +.45423491,1.7019582,.56033285 +.47958621,.81260962,.21075545 +2.3324619,.05501746,.20217273 +.53198859,1.0516245,.4046791 +.84467289,.76168383,1.1049427 +.35240846,.38148493,.04921635 +1.8381488,.70492568,.40157214 +.60923313,.33022191,.5026069 +1.1862503,.62189985,.1731173 +.48563627,.05685944,.26771137 +.47415648,.54156452,.19344181 +.51780747,2.1362345,.95514309 +1.2828889,.35209313,1.7877508 +.82902335,1.5644744,.03818181 +.42368481,1.0329409,.98116443 +1.5462688,1.3091653,.57671792 +.8698442,1.4705923,.77198134 +.53740571,.27802127,.86905489 +.89414593,2.6740888,.08423945 +.52140477,.09669304,.93066796 +1.6206128,.31677021,.00490418 +.9692498,.72514049,.49895154 +2.0252806,.46153495,.03008445 +2.3348805,.03130209,.71533912 +.80203876,.62457677,.71317888 +.50029695,.78123263,.00595689 +2.5485862,.30212273,1.2979126 +3.1512803,.13464893,2.4336257 +1.0976207,.5115317,.61469897 +.4105227,.2083281,.11374102 +.3890326,.88840087,1.2863269 +1.0323227,.1978713,1.0945984 +.79614558,1.2204838,1.4373032 +.65139249,1.0457748,.51558888 +.70594269,.75203772,.48896631 +.88445382,.34023154,.05091771 +.48235878,1.0921111,.42365832 +.77754286,.60328204,.40091566 +1.6168855,1.0729839,.17811716 +1.4646103,.32442435,.31483128 +.84777705,.97890858,1.4909489 +.55789064,1.8885373,.17910094 +.37615022,.12527875,1.5384794 +1.2198548,.42322596,2.1345006 +1.016395,.81502859,1.4192376 +1.1012236,.55316273,1.712505 +1.1311697,.64467421,.4100045 +1.4644828,.33156085,.62591596 +1.1980248,1.4125145,.66245234 +.55151571,2.1041023,.85804793 +.62367013,.75327247,.89778953 +.77808356,1.130341,.43055056 +.41446771,1.416542,.37979011 +.5489657,.43297718,.19646903 +.97959541,.25274915,.56190073 +.74216965,2.6033664,1.8178481 +1.4138173,1.3417609,1.1194242 +.5501101,1.5416897,.57289771 +.90350873,.33524871,.28565427 +.38366761,1.6984737,.35643644 +1.3299761,1.7317285,.56187549 +.80674314,1.9178172,.27413898 +.79735754,.41398734,.77430274 +.84056875,.47424544,2.7855216 +1.1015945,1.6026219,.46552448 +1.1011432,.01160799,.49017025 +.79134338,.35190648,.9522524 +.58167386,.3957943,1.4838164 +.50521718,.17611459,.29155631 +.63562608,.49278616,1.5761203 +1.2293577,1.9584131,1.1178447 +.55076509,.51823258,1.896729 +.96356488,1.2734091,.3062207 +1.9802226,.75427108,.74530334 +.89359561,.66130559,3.1695142 +.70300891,.80387139,.30334808 +1.5934424,.15348886,1.4069031 +1.1595999,.1269133,.8252538 +1.8450689,1.2343897,.17084347 +1.058966,.03708303,.2886559 +.57328338,2.3244487,.04542693 +.40271808,.23496641,.01052646 +.78078832,.00762144,1.0217594 +1.1890341,.66914133,.57040466 +.421813,1.8858248,.16010922 +1.1242749,.13330424,1.2492521 +.74292991,1.1051659,.71304774 +.38992013,1.1348385,1.1924344 +1.1063855,.17841595,1.2627164 +.72371924,1.5682286,.03397528 +1.0771036,3.3591984,1.2646074 +1.8631469,.1695775,.23714367 +1.1869291,1.3196594,.60917824 +1.1601464,1.7084494,.35907525 +.6242776,1.3565774,.23311119 +1.4716082,.40756368,1.2053339 +1.0006656,.56734519,.78898612 +1.3161537,2.0241207,2.5678729 +3.6337468,1.7491978,1.2420391 +.76147231,.70857574,.0286968 +.43752512,1.1033795,.4831635 +.96112677,1.2277341,.87208763 +.90212498,1.1724485,2.1882514 +.71555886,.85567548,.84825637 +1.3071681,1.3906213,.60657093 +.611415,1.7901198,.08277079 +.75191279,.03425437,.53189058 +.97223658,.49835848,1.3089737 +1.2860096,.35781754,1.9542056 +.40254263,.99782263,.67207743 +1.0249793,.74810838,.92392508 +1.1712235,.45757887,.30071655 +.59283487,.61170906,.83978421 +.90593707,1.1327451,1.892728 +.87530169,.32891602,.15733643 +.42941463,.93647625,.94335321 +1.2469411,.19356649,1.9557708 +2.5645486,.38145481,1.5437497 +1.9568266,.85760952,1.4020779 +.54957395,.66967849,.89302163 +1.3469395,.81521741,1.362804 +.43358461,1.8827319,1.0140155 +2.1562424,1.6939511,1.1047978 +1.6402167,.62276619,1.146605 +.62272201,.92456058,.0332731 +.37861892,2.6695259,.05029207 +.62730264,.08269405,.42812304 +.9254611,.45929873,2.2594624 +.96760915,1.1370261,.03094783 +1.2663729,.74910801,1.9687444 +1.1995079,.05098097,.30371862 +.66113674,.02672451,.44335808 +1.0743843,.9383061,.7870436 +.99412098,.80360063,.55546121 +.55108505,.50372345,.53726309 +.82045669,1.0396238,.34395449 +.96706529,.26519805,.7381955 +1.0917385,.04017337,.48666038 +.67665361,.70162197,1.2098418 +1.3664989,.47220005,1.7981841 +1.3189419,.46158504,2.0287873 +.47510702,1.0576211,.52617528 +1.8203523,.09095828,.75051542 +1.0831115,.61081001,1.2976391 +.65277975,1.8041983,.45131703 +1.2584351,.86979194,1.5436782 +.65373228,.75235855,1.0529438 +1.9854872,.11337288,2.869525 +1.33209,1.0379045,.13558315 +1.3555213,.30170488,.8595577 +.31134803,.26475535,.2130661 +1.4846608,.2009681,.39469576 +.42205813,1.4304818,1.6853058 +1.5769502,.54329154,.73982156 +1.3926546,.80021223,.81367881 +.65970483,1.0224276,.2840102 +2.3133309,.40943527,.21969306 +.69033626,.88323169,.40849692 +.86075342,.26037231,.34101875 +1.7243838,.30454242,.42051431 +.67551515,1.2346008,.74598362 +.61701639,.34499632,.34092124 +1.435327,.09668949,.44655599 +.82090684,.20734569,.2338767 +.85661489,.04178061,.22629574 +.76038098,1.3492595,.7986198 +.51433789,1.5807355,.60065017 +.73729515,.32200928,.50542587 +.26661401,2.2195604,1.2289484 +.60724942,.4165658,1.0793578 +1.0363883,.22836965,.32465323 +1.2991992,1.1139918,.59413341 +.88151183,.68649347,.42626494 +.27500233,.2011129,.47345237 +.58856859,.10121535,.04057386 +.91298562,.89133756,.44666853 +.66834263,.22210812,.53165849 +.88106442,.31961261,.39472798 +.79939691,.02201829,.28162656 +.6089948,.7248388,1.3337883 +.4129846,1.0014134,.1126043 +1.2071194,.96812,1.003584 +.6276185,.00877845,.01622337 +1.1650386,1.9187229,1.0367389 +1.6719513,1.066595,.78760449 +.79838326,.10126724,.0605665 +.92348335,.34142672,.24854784 +.87337143,.93136785,.40672142 +.92067966,1.4091161,.87672767 +.41139165,.54345215,.09495313 +.48191765,1.3321303,1.4414736 +.57076153,.28622551,.31886389 +.65031922,.48317009,1.8426613 +1.1903974,2.1070423,.10794155 +.54419723,.19602375,.41953862 +.97410125,.59177915,.65901605 +.34663575,1.4886787,.66666876 +1.2652989,.93097798,1.8404771 +1.1317258,.72479526,1.0353279 +1.2849069,1.3328459,.82772348 +1.4985828,.81836828,.72016353 +.40769821,.63095756,.40048326 +.71097408,.46089055,.6773771 +.29290302,1.5430531,.68053652 +1.3452135,.39198123,.23917498 +.61717216,2.0218633,.44614852 +.64840791,.05359007,.69149784 +.6796918,1.2168021,.23571098 +.47508309,.75383463,.11183138 +1.0464953,.90130472,.17763379 +1.1052699,.01888542,.13154355 +3.085284,.56829967,.92444478 +1.1144174,1.6372327,.1325778 +.62933896,.79528196,.85439111 +.95074325,.09091742,.48211461 +1.2916768,.12303096,.06429903 +.53451618,1.4971141,.45247218 +.48238346,.35082468,1.0160593 +.77104436,.92784207,.30991279 +.55873364,.69608611,1.5709319 +1.7095017,.11874733,.97440238 +.2457214,1.1651217,.30011789 +.82733324,1.0730343,.20610813 +1.0755181,.3180478,.07059364 +2.2554482,.07798938,.76885063 +.68797074,1.3436074,.13425103 +.40698435,1.5098164,.28070427 +.87788948,1.0165237,.93952082 +.87819961,2.0939014,.45377999 +.79569542,.45440445,1.0956696 +.56125459,.75039726,.76068848 +.94571383,.98594827,1.3224997 +1.2165925,1.1613545,.66773193 +1.1895413,.07860019,.36090691 +1.1189334,2.380015,1.2366838 +.48777222,1.7522956,1.0745127 +1.1758065,1.6551205,.21093852 +.61120782,.70610895,1.1356664 +.60055752,.59576354,.93081968 +1.2262483,.27182908,.97410302 +.92080658,.17471017,.26832666 +.85162683,1.0634924,.58792991 +.51466566,1.0179381,1.2027242 +1.7009563,.5825718,.15918332 +1.1816855,.1925323,1.2519538 +.3852622,.90920114,1.6294397 +.79702077,.41424258,1.0705419 +1.9571334,.47937848,.13617982 +1.2079151,.48261978,1.0738134 +.59314668,1.0344135,1.6982777 +.88344303,.46225577,.43029703 +.38130456,.82704988,.75761138 +2.1913262,.40918725,1.5966842 +.24358284,2.1584054,.98775852 +1.3806181,.58659091,.53253518 +.87504737,1.5018745,.58986766 +1.3321666,.96942821,.74947287 +.89831495,.90897112,1.246144 +1.2176358,1.3740051,1.3760664 +.72446944,1.373875,.48266391 +.68503151,.85738557,.72299531 +1.3542864,.05047592,1.2880199 +.94601109,1.1553947,2.1400982 +1.0330233,.89577098,1.282251 +.3788625,.72103,.04964312 +.50285502,1.7064736,.43115462 +1.572813,.93234837,.33890438 +1.2023419,.2131126,1.2155057 +1.8827557,.81435847,1.0164059 +.22954651,1.9116135,.45291886 +.34173507,.58186707,.6982727 +1.3742144,1.1440273,.12669396 +.82133645,1.4596759,1.6828502 +.95141514,.34924876,.88598116 +1.3585567,.39697833,.0850164 +.56232208,.64825834,.67343419 +.51989917,.5178321,.50668382 +1.7889641,1.1971479,1.3065247 +.8276,.82166271,.97164161 +.67837488,.6364262,1.0110758 +.57369628,.29131504,.58527182 +.81146002,.14388034,1.2050171 +1.1454538,1.0354952,.79493887 +.71532879,.80516784,.17226164 +1.253088,.15138569,1.3058865 +.53692592,.06905846,1.044935 +1.6317762,1.330378,.28055567 +.5617414,.17192651,1.091436 +.59672024,.62804023,1.588572 +1.5882836,1.4283061,.35645085 +1.2023658,1.0807793,1.2082167 +.60137096,.42158442,.39897023 +1.1909812,.25770987,.24333487 +1.3012388,1.0593096,.74447546 +.99942595,.06216418,.0195388 +.89509515,.95765885,.12455494 +.48165297,.3964937,.3928726 +.5904748,.57399613,1.0890905 +.65514965,.53033556,.40822946 +.65675517,.02955565,.46512549 +.98854314,1.8441604,1.1705888 +1.3780593,.7464939,1.0456895 +.50832922,2.4644288,.44090403 +.39989754,1.3330257,.27798672 +.87420565,1.097072,1.4538707 +1.2933174,.34325862,2.822108 +.44473345,.97437298,.14271713 +.45426924,1.1427879,.603399 +.82868619,.49566556,.8595059 +1.5620147,.06843651,1.6626297 +.54678058,1.1571014,.53330233 +.64157795,1.0247709,.27241976 +1.2191029,.34072667,1.6710845 +1.079996,.37841686,1.2634578 +.52942019,1.3315046,.91835341 +1.1892253,.89894802,.45343363 +.85823984,.61651773,.6038048 +.63329102,2.0188372,1.1088467 +1.0812385,.65429295,1.3201805 +2.0685482,.45046193,.57697754 +1.2349914,.51489186,.89654513 +1.1790985,.56951347,.78760446 +.94248287,.80665541,.00746954 +.91130014,.23076281,.15588064 +.9439077,.78474808,.3332898 +.71002311,1.5452421,.5041376 +1.2664146,1.2886323,.12505042 +.83205622,1.1919396,.78171144 +.76220139,.827139,.99284404 +.58847317,.49975529,1.2354089 +1.0727597,2.282473,2.0714089 +1.3690154,.75627971,1.1198367 +.68528282,1.6766628,.08992509 +1.7484482,2.4937401,.95678568 +1.3171499,.00546639,2.010128 +1.0248816,.17757934,.17921412 +.46009631,1.4613023,.78344922 +.21086907,1.5344781,1.7192827 +.58692422,.85712966,1.4719246 +.92935328,.14409335,.39063441 +.32216365,1.6847564,.51687842 +.62510669,.5444116,.46799026 +2.5276807,.0117145,3.0752948 +.96397477,.2429824,1.123774 +.61762046,.48678844,.13016322 +1.0524902,.54120994,1.3594822 +.83589127,.23656838,.634732 +.90922249,1.8326879,.43860848 +.64012948,1.3222499,1.2694919 +.39326665,.7867516,.26493668 +.38327355,.22820522,.37783375 +.39987747,1.6211877,.96808797 +.7326711,1.0499215,.38930774 +.74167812,1.0922906,1.1406584 +1.0172821,.33168434,2.803212 +.27053001,1.8443096,.3417996 +.49803818,.49260432,1.1778508 +.77848342,.3483241,.20776915 +.58130158,.02846895,.77864693 +.81437227,1.7563292,.50498198 +1.1812226,.40016249,.65172989 +.84983246,1.4843424,.99311468 +1.2591623,.15674593,.44704355 +.64543402,.77558852,1.3052005 +1.914968,.7643266,1.9880039 +1.759719,.19888364,1.8422291 +2.532477,.08598773,2.4400778 +.78645855,.31986396,.30934085 +.8849794,.30158876,.54575222 +.83719151,.34986313,.09328025 +1.2559098,.21327921,1.4596933 +.64198054,.3332182,1.6270197 +1.7652425,.05671193,.65628146 +.44996274,.22954611,.9223297 +.75587079,1.6310824,1.3325653 +.91829742,.26669183,.46014466 +.5445019,.69930323,.90904947 +.45749362,1.0037581,.33013765 +1.5621184,.74708633,1.753335 +2.2925632,.66231695,2.4739404 +.35566753,1.2190315,.06734376 +.79207507,2.0382655,2.156439 +.6546158,.62378882,1.2946734 +1.0269578,.10365802,.98842825 +.6763913,1.5724568,1.8193357 +.56661051,.82254103,.24557864 +.91679261,.14401739,1.3192608 +.6120393,.13908974,1.5563763 +.7304515,1.5880277,.54952772 +1.3242636,.38515342,1.48838 +.62095005,1.4832809,.80238865 +1.4289534,.19246476,.13572457 +1.8486214,.27693569,.61329384 +.32464414,.38994404,.06699184 +.73194972,.80111169,1.2798498 +.51071546,1.8314206,1.0500566 +.5645165,1.3767167,.44269635 +.62175462,1.1489959,2.2790355 +.85687443,.47096126,.356567 +.63430033,.02845115,.09630863 +1.1802106,.88895858,1.4702341 +.8185085,1.3029195,.33197191 +1.3978138,2.237912,.82236303 +.68717247,.68822304,.06564643 +.3796568,.82663748,.32760564 +1.2796076,.72871256,2.4373819 +1.135522,.46504842,.63421978 +1.62462,.24637044,1.5053902 +.43382103,.61682198,1.4098538 +1.3587772,.57044539,.32333676 +.68987225,.29068028,.16187681 +1.0553115,.56757748,.61115818 +.29923332,1.1220686,.96298081 +.92183204,1.9280098,.08682841 +.59662232,1.6455526,.57220715 +1.0779421,.54351726,2.4040272 +.61969443,1.2098592,.57918743 +1.0290683,.74929467,.7458316 +.83748172,.93126305,.06521306 +1.263042,1.3620076,.01975296 +.4039005,.82619755,.29049546 +.65676823,.18323567,.09809257 +.86445124,2.1413877,.67870875 +1.3423267,.54416303,.81219685 +.75768135,.31268133,.5350534 +1.157629,.21031286,1.64135 +1.3681739,.19265127,.05924124 +.50317088,.5947659,1.5426163 +.91451349,1.6260276,.95586217 +1.8471167,.13554102,1.4399552 +.97131061,.70616088,1.2076103 +1.0224062,.39994233,1.0768358 +1.7179955,.21460327,1.2596167 +.54388955,1.5990245,.57123242 +1.1233376,.49563099,.5724042 +1.988037,.48771649,2.2403304 +.72260956,.43342899,.812098 +.82233602,1.0009825,.90029153 +.44802941,1.2013421,1.2881993 +1.0630615,1.7321944,2.019031 +.53577246,1.6579531,.40898507 +1.4234695,.83212588,.10195039 +1.0108337,.65836334,.03770986 +1.7251823,.62895151,.42166351 +1.179584,1.8968015,1.4813459 +.74659627,.40695354,.07106277 +1.445421,.49394789,1.3775224 +1.2164248,.01984896,1.5852097 +1.2953856,.73228315,1.3512399 +1.3880404,.74972327,1.474456 +.36071702,1.6007719,1.2621024 +.58583437,1.3784407,2.3188421 +.4306951,1.9300555,1.0319697 +.68879142,2.1435602,.38293787 +.99309883,.76585728,2.6168051 +.83221997,.77751827,1.9838675 +.65683066,1.975355,.30183231 +.59250599,.01713114,.83930903 +.60361854,1.1041188,.19279968 +1.0295803,.40250627,.02651412 +.85704727,.57233146,.13245336 +1.3157942,1.5949363,.56094711 +.9760791,.8419856,.21943945 +.3068806,1.698351,.11441767 +.69363798,.30947449,.26572774 +.60158715,1.2393513,.27393046 +.7606562,.48079067,1.314396 +1.2680826,.32829501,.45636814 +1.5427813,1.5629069,.45003142 +.85019608,1.7655984,.40358478 +1.3381368,.26486672,.65981021 +.31844811,3.2800969,.58014289 +.47802062,.70549389,1.6290297 +.95664112,.10012033,.38101906 +.53422335,.82410382,.6195008 +.76913985,.73322632,.24880929 +.78131812,.2450873,.5346186 +1.6420957,.08685808,1.0061851 +2.633058,.03121706,1.1684382 +.69847975,.52873616,.5417456 +.60032412,1.3317824,.98224494 +.81007473,.50999463,1.434688 +.67052463,.35395046,.56642177 +.53287202,1.4480516,.01039114 +.83841639,.50474991,.34582542 +.65357044,1.2030945,1.229588 +.3524684,1.3784809,.16059518 +.79915618,.62487252,.68598682 +.89314616,.66933224,2.3058406 +.72591918,.68232504,1.26188 +.69886414,.46863261,.370111 +.69757114,1.1655884,2.2541336 +1.0139877,1.3244494,.69440406 +.73054283,.15216861,.13775326 +.30124304,1.2792019,.84607704 +.79974399,.49421292,.61914418 +.68360518,1.0828311,.73727287 +2.3200851,.79033738,1.3200653 +.91498925,.19961451,.49328537 +.96412494,1.2280369,1.1055335 +1.4556261,1.3353788,1.1810123 +2.2931904,.80917105,1.2850516 +.83984129,.86942354,2.6011993 +.77200482,.26720905,.88348508 +.64398996,1.1063851,.35234685 +.54955844,.79881871,1.785563 +.38585105,.3506956,1.2597781 +.58537625,.69267697,.94185846 +.64939796,.01753711,1.0600422 +.42135959,1.2819501,.98580496 +.63439964,.08643392,1.3143129 +.937402,1.9890658,.16332723 +.22370906,1.0778322,.10765535 +1.0316072,1.3356352,.04758348 +.39049517,.98845121,.30922843 +.63559234,.63040941,2.0271682 +.50912273,2.0690659,1.6625043 +.95355764,.77992573,.45833013 +1.0817196,.89683583,1.5510039 +.86381288,.5428845,1.3501827 +.47625124,.73178509,.08569736 +.56530436,.67073596,.98338885 +.81016962,.12437822,1.1040658 +.59555397,.44055106,.26417259 +1.1305367,2.0170515,1.4286435 +.76261149,1.5324908,.14833207 +.90615656,.31979226,.10741625 +.84666754,.67690132,.88774788 +.39640832,.45643645,.56687952 +.4060277,.79105223,.58337614 +.56761331,1.3286813,.5562974 +.37045217,.1852063,.5122344 +.31474965,.11412267,.0258573 +.4804853,.60936181,.27624168 +1.3577976,.56534045,.10632371 +1.1599356,.83972405,.57140627 +.62116819,.45769443,.46139488 +2.7137332,.11063532,.63641816 +.46521323,1.9553261,.61532338 +.99875357,.42804082,.41487621 +.48631994,1.2467814,.78952486 +.75445086,.08342433,.97567891 +1.8862044,1.2660139,.41164745 +1.3744829,.78247414,.71148132 +1.3444455,.32802844,.37949965 +.87374995,.36966267,.79499484 +.59161435,.97589785,.7580088 +.48236833,.61802109,.5767603 +.64900227,1.5972192,.63390701 +.62025724,.1395839,.24514388 +1.0493724,1.0617066,1.6442391 +.52451449,2.2527647,.42440668 +.55233247,.75623253,2.3068312 +.37285998,.43562605,.75169469 +.51937403,.82413888,.45208875 +.76890072,.10415135,2.2220873 +1.5806535,1.8185433,1.3079895 +1.454777,.01439495,2.1228075 +.67216158,1.409718,.34137743 +.83828909,1.5842257,1.0657989 +.51421896,.80682311,.32149281 +1.3934675,.24850353,.24260701 +.8807948,1.8598885,.50922375 +.82321411,.18608342,2.1762085 +1.1658271,.52344291,.49832457 +1.2384236,.82882275,1.1700595 +.69773513,.07221259,.8664509 +.5223991,1.2422714,.62967593 +.22845462,2.3672237,.15575546 +.16496441,.59816747,.53421206 +1.6813557,.00602488,.10782191 +2.0530662,.16602564,.0010547 +.49058398,1.8185567,.33735498 +.5532739,1.5531913,2.0535274 +.58188936,.52967478,2.002865 +.96250193,.60933744,.23479509 +1.0824039,.2952653,1.5451438 +2.0702033,.3551023,3.4492481 +.46645958,.62933517,.09340047 +1.0848543,2.0277597,.265827 +.25826304,.24580371,.81477559 +.38326231,1.6867018,.96100278 +.97448822,1.3109962,2.2996427 +1.6224489,.29696596,.13624301 +.69751963,.14014745,.23977626 +.72420334,2.0306975,.34474347 +2.015883,.22531163,.00143381 +.41132032,.7436807,1.812359 +.48890329,.31230206,.33474974 +.48959735,1.2501434,.22708133 +.92844014,.8415243,.43496174 +1.3303404,1.3997559,.89586172 +.27357496,1.9890797,.98637099 +.53205956,.2378471,.32644628 +.71733615,.09024173,1.3772683 +1.6293256,.31087192,.98179159 +1.6116175,.03647707,.09560353 +1.2672247,.7544088,1.7705644 +.30030107,.7004221,.27351169 +1.1838084,.4023581,.05195873 +.70378445,.40189092,.31782099 +1.0119859,1.3859827,.44045085 +1.7502697,2.3987235,1.736127 +.35186952,1.3651961,1.0492336 +1.1150018,.14537631,.74164985 +.51614223,.63925457,.40653232 +.59903644,2.1601725,.0342493 +1.0120667,.06609413,.46839431 +.61274324,1.3834618,.82630407 +1.1897857,.05381121,1.6449018 +.51455076,.54006769,.32504122 +1.2716122,.7350324,.1785463 +.47075683,.35195591,.64876531 +.38036597,1.2344376,.44582063 +1.0990164,1.2167728,1.0377496 +.22279383,1.6983838,.58962045 +.62406832,.76822252,1.0491521 +1.2391461,.48012012,.81741427 +.41349617,.32715562,1.117155 +1.2991091,1.1184302,1.1008389 +.67152839,.61084899,1.8907654 +.80907168,1.8879975,1.3558987 +2.4034699,.08127512,.64159545 +1.1945416,.82347237,.37648931 +.47954773,.70374828,.41831228 +.84329062,.19269093,.93124056 +.40796506,.57663402,.56522664 +.6181288,1.6217762,.41124427 +.61736806,1.8672393,2.3197828 +.7965573,.15949045,1.229645 +.90468461,1.381439,.22132248 +.82096702,1.0143801,.03162025 +.57738647,1.6892781,1.3241301 +.91487874,.81305045,1.9320748 +.47355997,1.545163,.14886556 +.51442065,2.4185746,.09368501 +1.8480028,.65022875,.20013858 +.37432642,1.2155425,.03023345 +.80557033,1.5163203,.14016183 +1.2423283,1.8645338,.71776328 +1.0873124,.83106786,.0472587 +.29341851,.10948345,1.030906 +1.0760757,.37545887,1.1166388 +1.9925139,.40911079,1.4060115 +.90627505,.38182388,.91605694 +.69819141,.42852366,1.178398 +1.7401759,.72076724,.55582671 +.87573438,1.2372898,1.1365598 +.93245993,.91020231,.67228564 +.43640887,.78663588,.06991333 +.48661652,1.8898754,.11222915 +.65573696,.47584817,1.8238717 +.41824506,.70136136,.28937463 +.97309565,1.585957,.91494733 +1.9001738,.82636511,.36019941 +.54566414,.30077827,.20460823 +.84068595,.25953702,1.488609 +.55657331,.40973773,.53877164 +.4510106,1.1934337,.20357659 +1.2310423,.49095595,1.5655157 +1.8108534,.26115834,.8650341 +.80911453,.42850971,.86605841 +.45118303,.13446872,.85307444 +1.4267923,.63283148,1.8132305 +.28745327,.63535621,.63653944 +2.061251,.05011399,.49889417 +.61949535,.68471108,.32639997 +.37657233,2.0627688,2.069963 +1.4190309,.20376382,.41466365 +.91531844,.34805531,1.4574322 +.67812438,.80573775,.57112422 +.56472949,.63870098,.39704422 +1.0050639,.16004889,.22937471 +2.4218531,.06286176,.12397601 +.64776485,.90003907,.7509477 +1.5973902,.03388658,.1997127 +4.1753837,.4194819,1.9272169 +.2988302,2.9907571,.45956041 +.57448728,.35382758,1.82468 +.78762036,.5234994,1.8021271 +.7306326,.39442469,2.0898061 +1.1742815,.24530102,.49857354 +1.3689448,.38108456,1.9121482 +.5250507,1.1470009,.22525611 +1.280644,1.0483438,.21857789 +.95904643,.78205808,1.2037266 +.37397534,1.7919835,1.7590222 +.89315503,1.3557004,.18778654 +1.6505282,1.7296899,1.254029 +.49873555,3.006874,.16106613 +1.1905531,.62102988,.095208 +.87709118,.68945995,.47004164 +.80666789,1.0223416,.06629764 +1.05913,.73929798,.20461955 +1.5131534,1.0838288,.94660106 +.52115255,.71979866,1.5021676 +.80862297,1.5793674,1.3396284 +1.4052141,.08031363,1.3533511 +1.6986548,.57623421,.9915606 +.33665517,1.007323,.92509384 +.62201907,1.4560835,.07390431 +.79743252,1.7472415,.51755723 +.75110666,.43598607,.68673454 +.51746992,.17804786,1.3768891 +.73643542,.4440547,.04625199 +1.8596118,.11611523,1.3065811 +1.4085421,.2084962,1.1270735 +1.1255576,.28004858,.54954988 +.7728009,.00941657,2.3527232 +.71249992,.61298038,1.2189634 +.87753891,.69803868,1.2047472 +.60380476,1.7506152,.16056031 +.43642523,1.7567049,.5109283 +1.1717342,1.3726021,.23092087 +.70980466,.64135628,1.64083 +1.442129,.73534081,1.0492377 +.36691737,.58175824,.28139648 +1.8194581,.53617395,1.3477767 +.44647446,1.1672419,2.4508087 +.76152859,3.5727941,1.8708312 +.96761603,.69564534,.99718368 +1.5004034,.69218235,1.5247845 +.74798222,1.2963253,.03986607 +1.0076486,.55338983,.32774156 +1.0560199,.21025332,.82986953 +.57156663,2.8947951,1.6304619 +1.1635714,.00199242,1.0966138 +1.1305551,1.235004,.08058578 +.8192137,.0880287,.81331152 +1.1035496,.15399122,.07493797 +.94537078,2.1370582,.40800963 +1.0808247,.41956385,.20202581 +.65685313,.05096683,.84796734 +1.3106453,.47706854,.66179597 +.80977048,.28277544,.62647382 +1.7090991,.32194719,.31837982 +.94593711,.36687736,1.7906862 +1.2125128,2.8067314,.62018052 +.68925916,.12455863,.77761484 +.78089495,.55707283,.17596705 +2.2571421,.52032193,.07910224 +.47150873,.2813287,.79115632 +2.0179703,1.6351491,1.1430117 +.24612999,1.835473,.23329896 +.55350983,.28420066,1.9151611 +.97072972,1.8398068,1.5719789 +.30457074,.47093065,1.037324 +.97608053,.25592073,.709864 +.92039544,.24553035,.70214007 +.6601241,.22181409,.08991882 +.79976753,.06786092,.24632373 +.85352924,.81443252,2.8250271 +.62271062,.82502777,.98236393 +.77905395,.01501509,1.2278158 +.78885436,.54488509,.93070764 +.41187662,1.1057343,.17816405 +.84706283,.14627536,.1967761 +1.1497605,.64120987,1.381256 +.83353618,.36177113,.30523233 +.48892241,2.6034423,.91155048 +1.5965566,.80819579,1.1192197 +1.8316792,.16780774,.64039975 +.48818008,.34861393,2.5750188 +.90072287,.96945776,.73839161 +1.3040266,.30696633,.74207557 +.61739803,.28674598,.40569439 +1.6213253,.30216758,1.0921011 +.63670009,.60909502,2.8684007 +.34074727,.75861497,.6880827 +.39299331,.45981323,.59128953 +1.5049001,.57625966,1.3486705 +.87865387,1.469728,.03604129 +1.2413911,.15374339,.69875813 +1.0414973,.90768938,.64100165 +.4954875,.93936602,.93843837 +1.3498981,.35865921,1.0033454 +1.9639526,.79181966,1.5914313 +.84637515,1.185403,.70280721 +.55311875,.35046231,.06914274 +1.5826623,.51027813,.60096434 +.76600931,.36111144,.35837416 +.53836037,1.558368,.29748873 +.5967181,.34466434,.27342395 +.82635414,.62744592,.31461087 +1.8012068,1.5242302,3.0039928 +1.0977343,.2516611,1.0239776 +.80985453,.09626639,1.1933643 +1.1076724,.1600216,1.2549614 +.63557532,.50436694,.09626237 +2.2277533,.36484665,.48904924 +.61274198,.47881427,.12159163 +.69528455,1.8226499,1.3253483 +.74300686,.81761726,1.0009118 +.57138609,.51226415,1.3670228 +1.2505554,.00451658,.45767851 +.61990792,.63159251,.92950607 +.92127863,.44504526,.45662276 +.29459509,1.7923695,.43062251 +1.453969,.07524621,1.6258178 +2.1216063,.10845814,.11450417 +.99385155,1.1058063,.90652884 +.83783455,.68685486,.49310143 +.35188969,.92336229,1.0729088 +2.4801121,.3519244,.59779366 +.60108488,1.274171,.24324644 +.61204315,.05217334,.51886123 +1.4433688,.32048532,1.9067078 +.49083036,1.4719937,.80007342 +1.3895197,1.5068329,.50610219 +1.1352488,1.1347069,.16043384 +.5356452,1.3432936,1.2547773 +.80806779,1.1654419,1.2203526 +.64154119,.54005678,.14741054 +.17744258,1.6183663,1.6862233 +1.8795379,.67793534,.55683978 +.53370697,.45906867,.47254586 +1.2238972,1.0579099,2.1557399 +1.6211509,.17201829,.74032739 +.76610758,.87300569,.99296827 +.89826598,.47434659,.17248969 +.36230036,.79172896,.69498822 +.36488664,.50285006,.01316966 +.91001924,.12792896,2.1829183 +1.1394228,.56009777,.89638675 +.55249811,1.2118242,.43493509 +.66676424,2.8606561,1.4970726 +.58452741,.28317196,1.5401 +.72432209,.97386167,.71780532 +1.4222959,.71578037,1.3667082 +.73597306,.46439972,.38672457 +2.511781,.10704709,2.375539 +1.1383402,.76770664,.62189196 +.866667,1.194843,.86623203 +.51121443,1.4243432,2.1394467 +.37313285,.89883505,.2250231 +1.2129844,.1521672,.05832811 +1.2190912,1.4028359,.57587 +2.7798078,.67838909,.30416175 +1.7140505,.36575618,1.7901446 +1.1958926,.80436021,.15065568 +.89184088,.69691346,.30742618 +.30094891,.22880303,.27583015 +.49130916,.76991183,.92864857 +1.2052084,.60106556,1.5408949 +.56817274,.46896611,1.0358537 +.4099431,1.9026574,1.1607759 +.34779462,1.3705679,.26715518 +.83554609,.81885753,.33994077 +1.0622858,1.2724545,.94632003 +.46979957,.30896972,.11196456 +1.2195582,1.1368315,1.4380306 +.55268588,1.8318307,.22560627 +.3756768,1.4155855,1.0601858 +1.0649378,1.4463317,.22782935 +.65848468,.5487052,1.6855997 +.53767634,.21119089,.70569747 +.4359768,.05261301,.25423767 +1.0752246,.34250394,1.9171181 +.98839475,.1579482,.49638676 +1.3698835,.78381409,.40539652 +.45565064,2.5221558,1.8442277 +.38602028,1.3715377,.6499424 +.43658727,.12086051,.14889125 +1.6218801,.06957967,.98841212 +.80256432,.03195471,.93311592 +.38213782,.17619462,.18341746 +.90566923,.9725128,.24849068 +.643097,.39475278,1.7275628 +.50340468,1.9450516,.06562512 +.53810969,1.1042006,.25627192 +1.4786105,1.2002151,.33356379 +1.2867976,1.070243,2.1595483 +.53038799,1.3886117,1.0227628 +.67096294,.83766513,.28096342 +.68019355,.42878965,1.2116591 +.9397978,1.1621178,.33854705 +1.344763,.54103922,1.3895316 +.71986065,2.0761324,.92980509 +1.3418276,.51065791,.3262322 +1.7533063,.7838897,1.31761 +1.1983786,.355384,.10340343 +1.5793887,.43833996,.96615129 +.6278698,.11930799,.96131603 +.62968477,1.2340262,.26827687 +1.5942333,.76684404,.6693262 +.67758472,.87569813,.00664289 +1.2712776,.09013936,.60853283 +1.3511383,1.5986536,.69458402 +.38276248,.20097671,.05887844 +.73595226,.08319695,1.3262086 +.89247253,.4099307,1.6438132 +1.0118447,.54052705,.03143317 +.92250606,.15029452,.30650815 +.50879851,1.186633,1.2700808 +.42862897,2.3196728,.67737108 +.87385158,1.3515091,.33038932 +1.1999889,1.1415769,1.7371516 +1.3007761,.5485127,.3608592 +.9555448,.7161554,1.8032571 +1.1613875,.89119873,.21000528 +.7962876,.10422037,1.3314469 +.45872745,.12495687,.60604358 +.75921898,1.0546375,.7102083 +.74127223,1.4055777,.07016634 +1.036459,1.5033127,.2636248 +.63941783,1.5571868,.38469174 +.2732381,1.03485,.96875748 +.43700741,1.1185393,.11178924 +.61962105,1.1625814,1.5709813 +.39360145,.47402241,1.6130873 +.26496445,.97863579,.28866067 +1.2391926,1.4911082,.04831598 +1.5115885,.01842948,.11244772 +.90989531,1.0129922,.64553684 +1.5618796,.13540411,.1876748 +.93674217,.71566213,1.201416 +1.2325355,.16572848,1.4086916 +.78281401,.08582359,.64507746 +2.7541556,.31852128,1.1592708 +.35689356,.20904514,.98471452 +1.5348666,.27440475,1.2246321 +1.1422011,.26803303,.063684 +.51775046,1.6291003,1.2145712 +.58356338,1.2791543,.8257525 +.76134362,1.4101825,.97366453 +.57334929,.06901676,1.0230312 +1.3999603,.49503669,.2872782 +.48024172,1.2864187,.70007297 +.73738832,.88685147,.11068244 +2.7273041,.59257863,1.6392157 +.93035643,.72523762,.99105832 +1.0549037,.26197052,.2280544 +1.8199049,.30692243,.36073252 +.71239736,1.2608415,.38118938 +1.0359107,.80432102,1.1567051 +.49262176,.17861039,.53013791 +.43202238,.97919027,.55590133 +.66071978,1.400111,1.400415 +1.9657915,.49796241,1.3561797 +.33427167,1.1113247,.08180061 +.57769085,.14240797,1.25337 +.76235912,.50854986,.98883396 +.8751913,1.419262,.55471368 +2.9285688,.36428746,1.3110528 +.78676589,.38500243,.82185225 +1.2750626,.00018656,.74326358 +1.3968645,.31576633,.22673622 +.67796616,.39964425,.763272 +.86795773,.31399652,2.4490545 +.51442971,.5083159,.35068829 +.80948666,1.715195,2.0857548 +.70427526,.93708304,1.2067796 +1.1220805,.80778209,2.7004902 +.91435867,1.1260814,.61771656 +.67004833,.37033825,.5037842 +.53716544,.60256392,1.1050272 +1.1081809,2.2046373,1.3835473 +.41119082,.90922989,.4289048 +.49853647,1.0836564,1.4597534 +1.0804488,.26063521,.14425277 +.97154408,1.4479977,.30333989 +.62644525,.36837246,1.9894579 +.92109485,.02471389,.1746876 +1.533768,.01231696,.09710636 +.40711525,.21592824,.13076566 +.74017863,.41351094,1.0318024 +.37238622,.77950237,1.9683112 +.50744362,.76732063,.36564608 +1.0593553,.525885,1.11888 +.42053592,.00323394,.19264185 +.75609264,1.2446845,.39598059 +.75379246,.55862251,.27392173 +2.0249704,1.6587176,.54849519 +.47359822,.98797277,.01248531 +.30116325,.51789042,.63080927 +.71399641,.95754895,.45612286 +1.040452,.70606627,.55924975 +.46676226,.43145642,.29567431 +.78921385,.87643186,.9936222 +.86485404,1.5324762,.74505987 +1.9437816,.347269,1.5711377 +.80910315,1.3368288,.98066715 +1.0450173,1.4083568,1.1958272 +1.3784325,1.0006028,.42846603 +.89334683,.01122726,.6353613 +2.6355088,.23405906,.75138271 +.66392961,.41529735,.08998737 +.48197043,1.2034629,.52978037 +1.5713788,2.3442478,.69593803 +1.8172757,.29426643,.0466583 +.82767742,.70205374,.4235372 +.5446963,.8099782,.43146394 +.56766858,1.369059,2.0407427 +1.6156563,.40540004,.6511886 +1.0676438,1.3211634,.15405812 +.58481042,.85258151,2.2489273 +.69930035,1.2457669,.07488785 +.91829678,.51900166,.24754885 +.50108323,1.323255,.36327127 +2.2635166,.20409981,1.3235404 +.85080423,.75600585,.70530967 +.79761051,.09929486,1.7516022 +.90545565,.232963,.23414673 +1.069568,.20623032,1.4504274 +1.1284647,1.3120873,.15908531 +.47209667,1.128648,.54172295 +.58617294,.30017211,.20612666 +.99333431,.80565083,.61290054 +1.0347847,.34432396,1.1830741 +1.1934062,.68512099,.90072797 +.50942355,.87700056,.11982948 +.66461041,.64905252,.5956273 +1.1958137,1.5493316,1.0426218 +.33023367,1.0324499,.63506838 +1.538201,1.2779545,.98129104 +.38719971,1.3236419,.07012657 +.68219019,.47080449,.00389731 +1.9799862,.19819066,.02571981 +.98040857,.84760885,.77063871 +.49707268,.53814,.78853573 +.71272874,1.6437446,.44389283 +1.17044,.16480843,.54270096 +1.5882818,1.0894734,.44595309 +1.1462666,.31071823,.48213927 +.66408036,.56936915,.56697723 +.74232194,1.1029121,1.5872314 +.53017133,1.1603051,1.0287205 +1.2264511,.29723277,.02698276 +.50940739,.80436702,.29035998 +.84429554,1.9156868,.31353273 +1.0607504,1.1793422,.61122077 +1.1602293,.51033406,.55021887 +.87020522,.42951148,.24835494 +.33033855,1.9832097,1.5492628 +.76038281,1.2166916,.33997072 +.40447287,1.6346565,.24576808 +.52356434,1.4712571,.74963731 +.8931151,1.1981047,.14060645 +.79414603,.18142717,1.994365 +1.035516,.68381711,.72038351 +.81090739,.00988991,.97576977 +.99491158,1.1726551,1.5064769 +1.6976702,.34290207,.30196698 +1.2014968,.96330047,.63601645 +.51939451,.12353753,.2984478 +.46251733,.94011003,.14392633 +.93443845,.9031648,.80413507 +.45808029,.58040902,.05206506 +1.5008795,.57964485,.27510871 +.39124541,.46674748,.74168503 +.6847601,.62367884,.83322141 +.49597776,2.0712316,1.8522438 +.60628126,.59470948,.22607232 +.63987839,.26215608,.36751866 +.58343959,.73311267,1.6427069 +.26057947,.54113532,.00345989 +.51984445,.9652827,1.965922 +.46781713,.77915984,.16789732 +.97827927,.3222233,.25786299 +.78552019,.64365296,1.0818581 +.59798683,.56964917,.24801721 +.47709953,2.2685714,.31266807 +.77128018,.41962906,1.9982124 +2.2051108,.0211038,1.0934447 +.85474623,.73740726,1.7664138 +.34389273,.74912461,.0238638 +.34945171,.3550006,.69974344 +.40235655,.43185333,1.2327339 +.65886968,1.0918317,.60162251 +.94684755,.81143377,1.161885 +1.0299091,1.6691315,.54919023 +.87561665,2.3829511,1.0332899 +.74600728,.81755432,.63593055 +.77754925,.72024039,.35243817 +.5463928,.62181592,1.1207949 +.86031467,.84930459,.28999115 +1.5219312,.14761034,.88505379 +.75039726,.79826223,.73855589 +.77138089,.75042132,.16169095 +1.0534423,.32042235,.00978194 +1.1807698,.33492346,.60221821 +.8275199,.25552838,.17215926 +1.3705091,.36649148,.56827031 +.56580832,.46465681,.3007225 +1.0256161,.00440828,.43163491 +.65438749,.75845277,.36853074 +.680603,.75126285,.19255466 +1.3071393,1.6321924,.79024223 +.92766825,.88525212,.28512116 +.60476167,.00136505,.81584578 +.27521816,1.5384405,1.3906107 +1.1913202,.12370752,.31750206 +.74034668,.27569314,1.3624496 +.49010945,1.130945,.01812547 +.88927006,.23393336,.18573565 +.96187926,.49753719,.77224314 +.47889287,.34526336,.61090872 +.46937899,.35968315,.32371447 +.61173685,.77529923,.20416265 +.65040599,.47161402,.14006881 +.2723619,.71294398,.50482025 +1.0938859,1.4486346,.18421581 +1.2169337,1.2321304,.60782998 +.42160566,.83538335,.09845654 +1.0069618,.80480882,.57169294 +.57661214,1.7214572,.81449687 +.6713563,.01480615,.45771341 +.76861909,1.0599057,.40015685 +.47265991,.60968309,.65493804 +1.3207577,.06436513,.70945293 +.97673952,1.0231431,.13223341 +.61261669,1.0656468,.31442855 +.38056626,.9566321,1.3365578 +2.6175928,1.0029211,1.2039503 +1.6339986,.02082834,.22060208 +.75652628,.26765743,.94545867 +1.0838328,.48402493,.41209927 +1.8646867,1.3212638,.02100569 +1.3932974,.30894028,.95596626 +.55067059,1.0912221,.46657621 +.98341999,.17381381,.67729862 +1.4180468,.62650999,.66951264 +.62781567,1.6161066,.60268954 +2.1328284,.9259162,.2944042 +.64686667,.61886948,1.0291637 +.39372188,.39872019,.27937006 +1.7365695,.69588825,1.2224137 +1.6909363,.19007459,1.5678745 +.66203034,.54612555,.63526714 +.68805482,1.6203057,1.0271968 +1.2257052,.14897809,1.0768788 +3.7204339,.40467591,3.0439615 +.75747779,.50419695,.74409599 +1.2588614,.6930946,.82711834 +.53262254,.11356961,.51054044 +1.7217474,.59256709,.16253834 +.66517192,1.3717355,1.5563203 +.50045192,.28720386,1.0541726 +.87973403,.02452375,.84998595 +.62354216,.75373833,.69529924 +.74593601,1.3559179,.14528833 +1.1958507,.13800135,.23393488 +1.9263404,.09210331,.62908298 +1.9447111,.01859842,1.110169 +1.1792278,.94350801,.49981458 +.90535016,.75751591,.25608139 +1.7479407,.01739121,1.3421645 +1.2314698,1.0929773,.25002629 +1.1407876,.92737574,.58939174 +1.2729861,.60681242,1.8304895 +.40918529,2.5767703,.4494222 +.7362723,.69768196,.25235892 +1.3185693,.18480898,.22172404 +.36874916,.59512373,.19734452 +.83949696,.38655892,.0115339 +.96832815,1.2228631,.54184813 +.69045879,1.3930051,.79916112 +2.5078279,.31249757,.32300849 +.74419644,1.3278911,.27475781 +1.2295528,.16347262,1.0945787 +2.3224435,.31676138,.79430499 +.7785673,.35784802,1.0984166 +.84405715,.00788304,.82867249 +.62820639,1.7353185,1.6150203 +.59417398,.1880752,.68265457 +.53822179,.24491805,.59881123 +1.8114846,1.0658739,1.1841758 +.84472275,.00998699,1.4210596 +1.2914345,.33488178,.99673978 +.44481366,1.2235906,.18723802 +.25808908,1.7750425,.11313186 +1.064445,.1013922,.67791292 +.99466167,.36896271,1.1544787 +1.4420904,1.021753,.28144562 +.8598093,1.550462,.94360815 +1.3712898,.06158803,.77060599 +.64038663,1.3171013,.15785221 +1.0874698,.26709919,.61308475 +.9530867,.21897168,1.6048986 +.55276739,.89708771,1.288516 +.40168867,1.7376697,.28803378 +.83525164,.90506722,1.341264 +1.1673824,.83229621,1.0128982 +.95671902,.19888941,.74625189 +.69834246,1.1666288,.35985208 +1.2385006,1.3034088,.84765819 +1.0289578,1.136006,1.0322386 +.91718136,.03801559,.96497694 +.52199617,.98842325,.04676256 +.56392919,1.328582,.83257519 +.48531561,1.3048788,.85904626 +1.6325216,.72950298,.9418193 +1.0327797,.0807229,.30262822 +.4063755,1.0754721,2.7876422 +.2968961,1.0632601,.73116058 +1.0678158,1.2052045,1.0175431 +.50309417,.09496855,1.129563 +.39034915,1.8363493,1.8141336 +.99181705,.56482318,.1173331 +1.0103713,.37036289,.7349398 +1.8445516,.24457049,.31863391 +.52799854,2.4087518,2.2577044 +.91523339,.75397501,.19054067 +1.2374792,.00793577,.07779027 +1.0938662,.76342187,.77892171 +1.0135699,1.8457832,2.1155583 +.56935469,.56066996,.78546347 +.82193925,1.4883098,.40669771 +.83125527,.35212897,1.0610869 +1.2532145,.77737793,1.3091971 +.90274613,.56500616,.07934902 +.57565596,.31568948,.2261268 +1.0660466,2.339028,.04102253 +.94021713,.92029125,.16764334 +.81333787,.38290331,.91581693 +.31764713,1.3957865,.93789137 +.46865766,1.3097816,.24651337 +.73081947,.24640854,1.8637326 +.3450871,.86604825,.94063338 +.32739513,.56220341,1.1725088 +.87181157,.45443429,.55863647 +.84187074,.94429462,.25914636 +1.1980217,1.2415956,.7937599 +.7098216,1.8480172,.64246352 +.89400301,.08879554,1.6807445 +.86203649,.20225906,1.2035211 +1.4600309,.24398895,.04357859 +1.4093526,.07807779,.05116856 +.56817775,3.1169757,1.2559975 +2.006083,.61055232,.77162846 +.41848395,1.514876,.91661354 +1.5703233,.14542967,1.3422861 +.51647736,1.3051644,.39260214 +1.0194889,.1515592,2.5430919 +.61245554,1.0332405,.49402868 +1.1601385,.32390013,2.7114815 +.87572854,.84039271,.22138775 +.54642462,.92239487,.9892346 +.6058341,1.000647,1.0151919 +.43171251,.27173573,.12048994 +.95996286,.94839013,.41218081 +.53442666,1.9000519,.42938381 +2.2852163,.289215,2.1084575 +.78415538,.21184007,.12283441 +.5537301,.43595579,.42996944 +.86247297,1.0818885,.77981581 +1.3103277,1.6883825,1.5020784 +.92354011,.07492623,.01352091 +.91115348,.25775655,1.2661624 +.39447978,2.630399,.3815036 +.6735393,.79133162,.00364863 +1.2665882,.19351,.99591352 +.70865265,1.0854511,.07275569 +.77379542,.1063986,.55973126 +.23713347,1.4290601,.51553733 +.72891981,.82175736,.60679402 +.3529138,.64566293,.73915756 +1.3591836,.50587161,1.3693161 +2.936685,.41704472,1.7867627 +1.8820433,.20341325,1.9208747 +.67513552,.30770001,.10420719 +1.2520921,.24438077,1.1751671 +1.4093181,.09978443,1.3708791 +1.3985009,1.8862182,1.5242258 +1.1995322,.48339095,.33028649 +1.1211812,.5532318,1.6776817 +.60675011,.98902574,.59192099 +.26283937,.01482879,.2815233 +.56934707,1.3059711,1.1109477 +.56462005,.67528626,.55524766 +.66674094,.30057934,.48442782 +.75367157,.50889946,.18896251 +2.2359838,1.8164242,.15573693 +.64129256,.51416854,.26572334 +1.9845817,.58327633,.86598655 +1.1381597,.573722,.78631773 +.55681841,1.7214499,.69272318 +.66243468,.39868642,1.1109605 +.93117495,.01660118,.55162537 +.86511939,1.1481676,1.5657609 +.94119411,.09333623,.4540228 +1.4622665,1.8936824,.0996708 +.38990299,.80079218,.13434683 +.79660349,.5787599,.59712722 +.73177774,.38185957,.41059239 +2.0787811,.86196721,1.2484186 +.64641804,.63618485,.66664923 +1.7737367,.46149974,1.5495593 +.35698029,.19053813,.19093913 +.98422636,.13777967,.22421038 +.37748095,.80537342,1.0908697 +.68848486,.1820567,.5230857 +.63381507,.86187628,1.8032455 +.29263632,.68472355,.41844488 +1.5885882,1.1612382,.10476046 +.65380952,1.68499,.07081522 +.73206644,1.519829,.35606772 +.95070649,.08462731,.63035421 +.73285875,.62710669,.13527106 +.64716864,.71908335,1.9207691 +.66239759,.02541515,.62448023 +.31127816,1.3012115,.6184517 +.28532284,1.8397616,1.3988819 +.91889806,1.3692298,.64794922 +.86192952,.30559414,1.2348652 +.9975829,.23675019,.7864108 +.93510686,.6217817,.02530025 +.82044107,.01350366,.23175874 +.7266481,1.2103752,1.1004216 +1.8169802,.13662322,2.4956374 +.98410359,1.4837008,.17293969 +.49129919,1.3727669,.43054081 +.80861689,1.744274,1.1232031 +.50415848,.79986803,.93087754 +1.5288055,1.1770154,1.1205965 +1.089026,.00390467,2.5049975 +1.1464736,.6938321,.14341099 +.90609432,.82835513,.99419728 +.69107187,.29738907,.94782323 +.8917075,3.0130174,.188701 +.36188427,1.3085148,.44792623 +.68576597,.47221481,1.2306568 +1.1350803,.33978001,1.5639099 +1.2598016,1.9092177,1.1752768 +.97905679,.75647872,1.232763 +.44834571,.46607487,.21855264 +1.4171768,1.4295896,.84309762 +1.2258354,.14390368,1.0577613 +.82583637,.28154716,.50212372 +1.7053682,.77126459,.50918785 +.92727419,.01830864,.07451526 +.96528774,.31309991,.39512968 +2.3652654,.23569755,.0288637 +.86261115,1.5393847,1.125197 +1.6008458,1.7109201,.06707842 +.98258956,.47156316,.97365017 +1.2068628,1.442175,.32277629 +1.2584177,.93751792,2.9326619 +.52118442,.11112007,.82578593 +.56672804,.72226215,2.2784428 +.75013759,1.0623337,1.494589 +1.1703095,1.1201885,1.1039587 +1.2641918,.23624388,.30314461 +.4240268,.80186281,.36734486 +.4085195,1.3095011,.52816119 +.69794096,.35161185,.68476285 +1.6599648,1.1099807,.33786471 +.73074892,.17161436,.636968 +.64683913,.14311596,.37098226 +1.2052034,.29465705,1.187894 +.50601707,1.0731439,.75642253 +.68189275,.52498667,.93951007 +1.9187289,.68820193,.20708386 +.36675383,.94477553,.45778196 +1.0044712,2.0002861,1.4352696 +.68461447,.69570527,.81192861 +.59805474,.64369795,1.358972 +1.4605365,.4373075,1.5244434 +.64310555,2.4466932,.32407864 +1.1539227,2.185798,1.3995595 +.37885703,1.6643323,.8964012 +.676067,1.7315915,1.1384116 +.68715512,.73093193,1.4359138 +.48909905,1.2972191,.7570837 +.89367049,.71120826,.59914558 +1.4464409,.68018032,.96821747 +.98501137,.32537487,2.3527589 +.79841572,.43966139,1.5576068 +.51789823,.39317996,.98197015 +.49483765,1.4551583,.45002712 +1.6181674,.86779012,.15997324 +1.3924789,.5888491,.7890788 +.76426155,1.0398432,.82437169 +1.0389534,.7100779,.05904546 +.6423382,.43823895,.66143516 +.46974539,1.0947567,.92678019 +.80200722,.82311556,1.2046443 +.96586975,.69067478,1.3992886 +.9504867,.38848188,1.2799194 +1.2022894,.39787489,2.3860689 +.41652704,1.0208722,.0809956 +.79833556,.67568764,.39996743 +.34122165,.27060877,.15700396 +.63406271,1.2180399,1.195629 +.64371918,1.5126704,.24877916 +.63322853,1.3903967,1.022056 +1.033667,.4954481,.08607621 +.72653142,.27767973,.53842957 +.3154157,.32557568,.34146645 +.8336426,.50141849,.39548732 +.7797432,1.7372215,.61027142 +.95013181,.53510867,1.3576788 +.31977312,.8100018,.32658873 +.99927103,.01666901,1.5804824 +.79788344,.11823023,.21552165 +.87552775,.00702381,1.2465134 +1.296689,.38594663,2.0038144 +.37205147,1.0798858,1.006236 +1.0818835,.6024171,.33605099 +.69325187,.88598038,1.8750656 +.70750511,1.8382527,1.2486515 +.81542197,.58644241,1.0137738 +.26795637,.97404056,.0619074 +.80367518,1.2697691,.71296723 +.27647334,2.0303626,.04965743 +2.8578347,.15395631,.5978705 +1.0879528,1.123781,.21087132 +.6618088,1.5124374,.15339939 +.29941076,.9512785,.10265867 +1.4670512,.17839555,.20910411 +.40003125,.33300624,.22523408 +.5518588,1.4726383,1.9004909 +1.3714618,.06509529,1.0892517 +1.3703366,.02942755,1.0504637 +1.0227662,.48632841,.33719714 +1.0095991,.15510117,.82248745 +.40623792,2.1990779,.14549843 +1.1065274,.13356628,.03507055 +.74258519,.58884995,.25807917 +1.4867577,.21133449,.70279024 +.48382803,.39185937,.30262342 +.85369167,1.3321394,.6666782 +.40167736,1.4275014,.56610702 +.50566525,1.5555359,.30484603 +1.7247661,.46678134,.272483 +1.0445193,1.1745319,.81350679 +.72506343,1.3431965,1.9136622 +.47045734,.45580313,.40075801 +.72381788,1.2648142,.01665561 +.6944656,1.2234853,.59927937 +1.2164176,.79812949,1.0346797 +1.1355357,.55227929,.31358883 +.56166822,1.9444378,.60428153 +.43552722,.51546808,.67764419 +.74444157,.25510289,.33865169 +1.4598086,1.1816779,.60172065 +1.4256298,.85557812,.64847864 +.62420403,1.8167196,.06452987 +1.1308568,.21300551,.3468498 +1.1376986,1.1541196,1.0467368 +.92053706,.93071093,1.2938251 +.76151722,.42476482,.60596031 +1.3650622,1.2257791,1.2677555 +.30236083,.88700568,.72262535 +.5560461,.83743495,1.4795176 +.30170319,1.429853,1.2780745 +.60217258,.68297255,.20761636 +.85322198,1.5698187,.50262399 +2.3370368,1.1007938,.86320198 +.6207703,1.7637997,.14513842 +.7972313,.40540248,.54899772 +1.0523979,.86168708,.1032432 +.78271549,.78983644,.07834412 +.62527149,.13225446,.82801778 +1.6155044,.37964752,1.261282 +.90710598,.12270769,1.0396079 +2.0286382,.07094461,1.8607088 +.62771253,.48497744,.24641304 +1.0504819,.93367938,.6240237 +1.7451387,.04508152,.69736322 +.76740026,.80907143,.28193373 +.8873586,.06664064,.78907429 +.84576301,1.153012,.69098775 +.63089683,.59981721,.84347543 +.58955094,1.2185373,1.0558727 +.49097407,.16138794,.11744311 +1.9491191,.51178316,.87699477 +.55042005,1.2778814,1.4401231 +.56719912,.13286783,.29026716 +1.2986942,2.7504677,.35187813 +.41372498,.78799143,.65134417 +.43301172,.51881097,1.8896643 +.65091522,.13362775,.35890259 +.59337187,.01005524,.05041317 +1.1219404,.0668998,1.9711 +1.1164652,.91703101,.21652337 +1.4802395,.53783906,.14517819 +1.5429275,.58694151,1.2395215 +.43012705,1.2282247,1.5123571 +.86485881,.34567125,.95087876 +.61794905,.17131056,.27908998 +.85025621,.31650724,.34681363 +.71385252,1.5618382,1.2737682 +1.2443366,.24723048,.05667878 +.30733284,1.3149684,.13628429 +1.4049518,.64628842,1.9201966 +.36198371,.3374703,.89010134 +.4108468,.10297645,.30283391 +1.5937085,.91493351,.84111064 +.89022658,.64692713,.79507986 +1.0734591,.7608731,1.1045411 +.78983428,.54508182,1.1142996 +.39662201,1.2870549,.39155406 +.70509669,1.1253859,.76574268 +1.6849402,.37060868,1.7526696 +.94543096,.13523647,.075356 +1.1925102,.37400218,2.4949719 +1.0785928,1.4465582,.17735459 +.67447454,.44690754,1.1003337 +.84266339,.23030085,.19717519 +.93002563,1.4352589,.01106358 +.68407462,.4450028,1.2793245 +.6379383,.03859398,.33515866 +1.1134044,.12942604,.71677845 +1.2781103,1.164475,1.9456032 +.69082841,.46584318,.40591376 +1.3068209,.14285623,1.0511892 +.44867558,1.1974174,1.4038438 +.71794404,.566174,1.1789161 +1.0629861,1.6542122,.88024844 +.88838505,.78933894,.74891166 +1.1046818,.64957232,1.1455174 +.68325754,.48956039,.01121371 +1.3670602,.4344176,1.2898032 +1.4141057,.42020732,.28094147 +.57660619,.16745433,.02247702 +.89094055,.18488151,1.4822187 +1.3558041,.52690643,.28161232 +.98760546,.77122067,.91088877 +1.3122681,2.3927269,.32829065 +1.1998831,1.0441538,.1896693 +1.1672962,1.2021233,.83775775 +.87556621,.13937991,2.1927613 +1.2184964,1.0041144,1.3676579 +.39169435,.18979085,.89415448 +.77309371,.42306019,2.357895 +1.5653257,.06108953,.65590459 +1.5506223,.31517455,1.096834 +1.0672689,1.4111247,1.28636 +.65176461,.44089631,1.0058653 +.53182723,1.852216,.10638827 +.88205379,.0989698,.46895725 +1.3430813,.43612176,.96586642 +.68210312,.94245745,1.5809269 +.74259747,1.2345987,.32823111 +1.1229169,.53244201,1.4804996 +1.2843832,1.0199471,.0802778 +1.2485027,.4151223,1.3164174 +.67066034,1.9024916,1.0006911 +.97041213,.10946218,2.2515413 +1.8894875,.63379995,1.4761873 +.38842749,1.3141273,.10213367 +.89732826,1.9376087,.75035972 +.45153872,1.3509332,.07942329 +1.0424367,.09582492,1.2781409 +.87095344,.09743394,.14524531 +.94119222,.09292514,.30048576 +.58788065,.33993393,.41732409 +.21567439,1.3480326,.0800613 +.56773419,.10016199,.26868854 +.60916161,.94498645,.13579456 +.70466127,.44100012,.52682877 +1.5690815,.60058283,.99549663 +.45908382,1.3794024,.08637439 +1.9803725,.31013132,.36269594 +.94274623,1.7175403,.38025841 +1.1747821,1.2656415,.5294654 +.86386798,.97909778,.64204166 +.93984409,1.3724919,.30028306 +1.2983545,1.5995039,1.180487 +1.4209478,.55452019,1.1815225 +.40422693,1.1210913,1.5947088 +.49524622,.1778583,.48292315 +.87636492,.1985667,.66244898 +.40349032,.38197043,.86527713 +.55080678,.69501661,.16787043 +.82958318,1.1363721,.61740013 +.43252987,.65382835,1.1583485 +.45925177,1.517449,.18581936 +1.0976001,.63288485,1.4848182 +2.1362869,1.0122947,1.156996 +1.0424784,.13522552,.59760053 +.84236232,.12203046,1.3225251 +.46938624,1.3416189,.02284271 +1.0692703,.69077551,.01857791 +.43348623,1.005375,.35816335 +.41044493,.01092559,.14000705 +1.2159907,.30126785,.43122838 +1.3165433,.4079147,.40306342 +1.0576402,1.0412661,.42390407 +.83643873,.39127531,.23244369 +1.4380848,.09969165,1.9274247 +.47853226,.17067129,.64272272 +.86825886,.56057576,1.5598289 +1.9226516,.49658624,1.9265305 +.80825157,.50248479,1.552143 +.67980861,.80820015,.15394015 +1.3817979,.11101308,.19617022 +.90517723,2.0664205,.92725195 +.43492433,.9181223,.68828813 +1.028409,1.4246605,1.7432907 +.5596685,1.9096271,.5737964 +.57956843,1.6860061,.96028371 +1.0305454,.46205698,.08563006 +.65656826,1.1545338,1.156441 +.71416552,.13595004,1.1681575 +1.4461838,1.8517905,.81926529 +.44986785,.66597872,.80409884 +1.5451207,.69973372,.42772082 +1.1554755,1.0060893,.16355335 +.78915339,.04523153,.20695217 +.42748157,.54705182,.46459881 +.24086911,1.6575716,.69380293 +.56632522,.91424185,.95620751 +1.2177745,1.4065124,.60851498 +.99167137,.01651041,.09221667 +.36314934,.92898366,1.5398685 +2.3755488,.35604083,2.3723701 +.80716152,.33084396,.88853942 +1.563577,1.2413979,3.1357452 +.85158296,.2144858,.63394392 +.74118323,.10517412,.52282443 +.53273007,.79656981,.951057 +1.0790319,.4401729,1.6462462 +.90457134,.20254306,.78940819 +1.2820668,.04739933,.86788293 +.75371854,1.0030826,1.5329612 +.39552517,.73462916,.03380393 +.71540605,1.1973276,.97245521 +.44730595,1.288408,.43748769 +.41767677,.0185575,.27792075 +.7642479,.91830209,1.2017508 +.48229993,.4166692,.52454571 +.97248057,.82311421,1.7769042 +.96121333,1.5903868,.87759977 +.66545653,.05885599,.75867257 +1.195815,.52355447,.20389942 +1.6059195,.06595833,.38275 +.84512829,.92141934,.14273355 +.30654824,.11238581,.00113902 +.29508192,.79876788,1.2841605 +1.1258028,.31881196,.10642991 +1.1230205,.00610212,.82853386 +.4711372,.7528971,.42187887 +1.4948916,1.4084126,.6016941 +.70990089,2.0239534,1.9433362 +.95875468,.72517245,.45908391 +.49244111,.63103376,.5296779 +.84409877,1.9454574,.22085605 +1.1515885,.2867891,.67677849 +.84974158,.87939295,1.3530303 +1.5354213,.29069955,1.30613 +.82758843,.49557258,.67092684 +1.1432095,1.5016758,.80645081 +.37635256,1.0392035,.18044028 +1.2584437,.21416892,2.4105628 +1.7502071,.60614081,1.1626668 +1.7111386,.00341145,.32092461 +.3678829,.65986207,.42742112 +.42112893,.34356323,.88790807 +.87066891,1.6447239,.81165975 +.87523186,.11238611,1.4045994 +1.1465606,.22388737,1.7496438 +.43025039,1.1392887,1.0774378 +.35191847,1.4438879,.12171428 +.3276468,2.1591995,.63441363 +.84817796,.36196262,1.7906424 +.67194866,.76566427,.74157797 +.94606788,1.322481,.00719848 +1.1010389,.22053357,1.0608081 +1.0466285,.1566362,.69705856 +.79751731,.17458494,.78571681 +.28710738,1.7219012,.31874361 +.97008606,1.8160183,.53636304 +.77220381,1.6485222,1.1137135 +1.0732368,1.973855,.48496058 +1.1174558,.12062681,1.1530647 +.63425629,.43877853,.02365364 +.94605311,1.1952815,1.8442832 +1.9569804,.47255778,.31835447 +.39275807,.65687061,.22103229 +1.1058415,.27776472,1.5325138 +.91080919,.81561858,.2864884 +1.4796189,.0966807,.35011314 +.68982634,.16190077,.80635098 +.74535136,.45738539,.51666786 +1.3794918,.78855498,.58016469 +.95195159,.17586122,.3193137 +.59627113,1.579985,.80916445 +2.2297768,.01488859,.20842846 +.962406,1.3328,.67996803 +.94127891,1.7194369,1.4807273 +.9266049,.33972647,.14585481 +1.5667038,.74421117,.67693333 +.76930285,.17297084,.09362641 +1.6276019,.22923464,1.6925669 +.75739085,1.5620481,1.3113134 +1.1088644,.7717194,.30505961 +.91361539,2.8992909,.63473499 +.36877635,.49034472,.0361533 +.92119481,.84358021,1.0305902 +1.1937202,.98169773,2.6356452 +1.064302,.09180568,.81299094 +1.0358729,2.1185852,2.0559025 +1.8212228,1.7024192,.06198103 +.87610075,.02207269,.10799433 +.54249604,.60947906,1.7711741 +.69181524,.89874556,.10038361 +.85768706,.61967968,.29404675 +.89158356,.34321615,.48513977 +.7473635,.36569591,1.0112513 +.60817742,1.5896862,.44205796 +.58494584,.31339078,.51894401 +1.296543,.48201255,.14197796 +1.5313662,.05315892,2.4536729 +1.0523008,1.3705425,.41024384 +1.0869244,.20643473,.94757325 +.83738237,.30185802,.54810077 +.70013769,.58016741,.7281337 +.61608562,.99683593,1.4436185 +.97240706,.09316025,.20723273 +.61715384,1.2046918,.38490316 +.82104018,.42291523,.14527071 +1.3386883,1.8053525,1.0874947 +.6419742,.0631837,.17150298 +.35012649,.41367975,.2635273 +.85868305,.58997286,1.1506543 +1.1599487,1.7822438,2.0695073 +.734218,1.3244475,1.4322148 +.5736147,.23293431,1.2093781 +.99988801,.93431153,.57840056 +.53950165,.14860632,.5242768 +.45147578,1.8859141,.31709516 +.44707785,.82729497,1.2060938 +.49695535,.82512503,1.1417439 +.40440289,.90337322,.21117003 +.89412526,.24466703,.63872391 +.76234543,2.0513918,1.554673 +.82566751,.9508176,1.1622972 +.48914525,1.3158522,.73694981 +.84590526,.46680793,1.4569003 +.83419443,.7026478,2.0868266 +.81299491,.94630913,.97796885 +.64849935,.8177072,.83756886 +.65311222,1.9284479,.41711678 +1.8701811,2.2490603,.34191002 +.68639592,1.8304427,.87379889 +1.7650328,.9168858,.25977941 +1.2917089,.39031664,.34474457 +.63025476,1.3238896,.65712044 +.42198887,1.4127121,1.1676557 +.38409197,.37093228,.89884853 +.58024459,.05525137,.35573887 +.87719042,.66050877,.16387962 +1.1585569,.78634579,.36744606 +.44227368,2.1301889,.34472722 +1.036002,.3058152,.00001275 +.76799138,.24597314,1.7185414 +1.2213443,1.0145093,.62506228 +1.0869715,1.0866605,1.3568948 +.98374562,.11726799,1.4080491 +.54406347,1.3160299,.25353547 +.23987135,2.3422449,.81475371 +.56076912,.3656828,.60206292 +.68899462,1.5785777,.24480058 +2.0837588,.32886483,.53263508 +1.7707565,.29561921,1.0464848 +.53397435,.59685288,2.2651266 +1.1976009,.09978637,.9331032 +.78217582,.63386589,2.2912695 +.7013708,.43987276,.79969408 +.80493675,.194773,1.9038448 +.96961049,.18173098,.11450413 +2.7078791,.97445435,.35358044 +.83015811,.43017363,1.3762965 +.92321551,.26048996,.53638132 +.31433076,1.9887864,.72303461 +1.0004534,.29273888,.31870647 +.63118531,.86786302,.24980944 +1.2131082,.2015377,.54030327 +.69694057,.17536044,1.9058014 +.45050299,.68618999,.73071617 +.51855598,.99629033,.18689581 +.86148071,1.42347,1.7967883 +.89280778,.60569428,.07291367 +.47261092,.34101878,1.639613 +.80506759,.69198435,1.4604112 +.33823771,1.6950179,.37448589 +1.5762771,.92011314,.35473767 +.85646886,.4793868,.19462511 +.79999391,.27373548,1.0680269 +.47687623,.46852207,.289906 +.8841666,.75228656,.23701591 +3.2403454,.06991375,.51201868 +1.3451214,.51823681,.37011043 +.98702329,.30843669,.83647843 +.65792579,2.2817843,2.1032983 +.895216,.17513877,.8414763 +1.5612579,1.0978226,1.474745 +.43965733,1.2925842,1.1801559 +.73982048,.40590113,.34256327 +.50482266,1.8080203,1.2189533 +3.4590782,.69477876,1.0575893 +.5734614,.98956175,1.6937525 +.43487774,.99292641,1.3350255 +.75297414,1.0121156,.53734227 +1.1180716,.02035531,.00093825 +.18871668,1.7935203,1.2106768 +1.7007853,.12265442,.12879552 +.58224636,.00429888,.74489896 +1.0730455,.29163237,.81360515 +.95794234,.13288534,1.5494317 +.52766992,.1379024,.61013124 +1.6231913,.4970866,.5942797 +.78863427,.86167183,1.2029711 +1.2493858,.67727463,.75278604 +1.1053569,.30161996,.05495423 +.87401015,.72987837,2.2560883 +1.9028433,1.1171945,1.0426232 +1.0381069,.92107896,.73508706 +1.0844316,.77519675,2.0275076 +.79575765,.85664067,1.5602707 +1.1640213,.77260325,.46830972 +.54092245,.54642786,1.1359257 +.89825247,.30208578,.00927571 +.32626297,.22252469,.5701289 +.84619629,.84823213,.38865884 +.5470792,.996815,.35885981 +.71904489,.90567464,1.0885773 +.75404668,1.1454797,.7499429 +.56242361,1.5899304,.32456555 +1.0479577,.7128804,.113078 +.96370104,.42847818,2.1286389 +.83154227,.17203111,.9900413 +1.4471864,.38635148,1.0077493 +1.0421996,.7510888,.23893547 +.87072814,.56915,.30374348 +.84881204,.45007114,.32287893 +.58534482,.16188638,.77373123 +.62701877,.80709971,1.189752 +.54678844,.39805023,.83646706 +.8052704,.65421419,.85248099 +1.1294095,.97332184,1.2282867 +.84543861,1.6592821,1.8187934 +.48305994,.52156671,.14002336 +.80130249,.7124727,.03749459 +.43629507,.95240696,1.3726053 +.47514847,.19840223,.58947347 +1.0976798,.22671697,.83556712 +2.1469259,1.2877724,.48912513 +.74310634,.14944472,.96771347 +1.400443,1.5163506,.60554215 +2.5577224,.10895062,.40579713 +.80793545,.18266378,2.4079475 +1.5418656,1.0505313,.77353668 +.76545093,.20358307,1.7837764 +.38193583,.78448595,.01215295 +.73999126,.30520442,.82869775 +1.5445467,1.529839,.72553749 +1.5954663,1.3378818,.09294174 +1.8815578,.15195592,.97015986 +1.1933945,.28916813,1.5370988 +1.3091378,.50724444,.15141919 +1.0904352,.93754319,.90026927 +1.146363,.55742031,.43171253 +.71674554,.82305353,.43719213 +1.884986,.22630168,.60924019 +.5271513,1.11547,1.3235237 +.5727505,.88204676,.89407636 +1.3804002,.70790253,.56658961 +2.9879536,.16513129,.35639043 +1.0975989,.83805072,.9377047 +1.2345649,2.0453922,1.1974073 +.53416665,.44611516,.40427261 +1.4623329,.32659893,.34322173 +1.340545,.09080579,.35500191 +1.1176408,1.3797945,.71432204 +.55731411,.58558179,.69224966 +.59145706,.85356218,.36461696 +1.1414549,1.1013662,1.269495 +1.0455484,2.2881434,1.2785505 +.78533678,.44963745,.15885156 +1.6792519,.7982505,.9450939 +.36608307,2.1735169,.88730128 +.75369599,.67874867,.13030811 +.56650621,1.2479414,.71236702 +.9875515,.61538634,.5516746 +.70834533,1.1988077,.31405079 +.77575409,.63608382,.39298241 +1.1554622,.99036397,1.281589 +1.3832878,.43925045,.189163 +.39230094,1.0929163,.20964372 +.46885246,1.8514787,.5545643 +1.4584579,.62173814,.60976066 +1.9991106,.95397377,.69755076 +1.435107,.4919698,2.004016 +.59233306,.83837571,.33797914 +.56497289,.75098501,.10723314 +1.256717,.94338098,1.1117437 +.65713559,.0356594,.71791152 +.88648373,.06152644,.6352431 +1.1292286,.30827903,.86583192 +.50122516,.59416752,.31212906 +1.5022097,.26795088,.61921293 +1.5733796,.79088631,.37095513 +1.1297935,3.8405946,.63526167 +.45901535,.5635985,.77677984 +1.1924855,.26890106,1.6506061 +1.240718,.28222892,.65678926 +.60016173,1.7323141,.08952986 +1.0633209,.6746998,.97059155 +1.9015871,1.0033317,.41556359 +.79046142,1.4809485,.43933065 +.82830956,.1810409,.25479714 +1.096129,.89493557,1.849583 +.8521548,1.7177364,.86112114 +1.0190714,1.1688656,.21457121 +.62709843,1.3112401,1.3161829 +1.3204375,.01734342,.27403566 +1.9302137,.79765598,.18261503 +.72049732,.39678263,.59882433 +.9949812,.45906315,.61097407 +.5494046,1.3032594,.16743669 +.51250604,1.5425443,.02061614 +.80073031,1.0901881,.32567672 +.84619553,.3042209,.3863655 +.2796237,.8891509,.17247116 +2.2047061,1.6548541,1.255776 +.73861832,.63220254,.34488454 +.91811396,.65487805,.01453701 +1.6129111,.90047541,2.5876127 +1.4730558,1.0096261,1.3456746 +.7215312,.32053276,1.0627744 +1.0200289,.63728318,.22701032 +.58812978,.15989605,.1472998 +.76143078,.25724066,.50379247 +1.0007221,.15547108,.82955941 +.44684569,.61637717,1.4726825 +.75213934,.05854409,.15814134 +.72593187,.83957352,.15216062 +.85691126,.51297135,.29230958 +2.1418765,.36639298,.15672626 +.69645495,.44547667,.73522601 +.47041499,.76368659,.59705386 +.29237239,2.9377084,1.1502623 +1.0820996,.7806713,.57763556 +.40892991,1.4127882,.29407099 +1.1214057,.17590552,1.0365595 +1.2812819,.1831349,.85044709 +.66624287,.20238228,.32777149 +1.3845992,.81722592,.17635331 +.66189731,.30487135,.4710061 +.87735076,1.1846272,.56197606 +.9949029,.33701663,.73243319 +.81959267,.87551781,.00215952 +.82681661,1.6580037,.14084015 +.4754426,.92803108,.33497208 +.61246933,.51864808,1.2873384 +.66301867,2.1160652,.33830564 +.64792985,1.0934317,.38708533 +1.0118064,.7031618,.6488381 +.32838827,1.2125698,1.2206879 +.80334304,.11728235,1.1657609 +2.3546887,.4062394,1.6258727 +1.1732706,.8637505,1.3649181 +.60765793,.10697943,1.1640218 +.57829896,2.0665907,.17339905 +1.4293562,.67713298,1.100146 +1.0409414,1.7212538,2.2663564 +.47889823,.55618229,1.0073306 +1.9549326,.31786399,.02326119 +1.3034476,.63376272,.09980212 +.98548376,1.3313872,.75725167 +2.0841434,.16860951,2.4924318 +.99696994,1.2349897,.21993287 +1.0030184,1.2788742,1.1579368 +.77497337,.47869894,.09850172 +.83944417,1.0697878,.07737703 +.57186688,.30902318,1.2384546 +1.0503099,.39827093,1.1577446 +.92543884,.66862053,1.0230798 +1.6014196,.2373346,2.0154319 +1.2408921,.10250007,.53177604 +1.2000936,.53109336,.68638685 +.81921622,.75725848,.31892317 +1.4502908,.07760594,1.2841604 +.60066188,1.7719545,1.0274537 +.56188375,2.8155942,.28232126 +1.4431744,1.0447191,.77386283 +2.7628211,.48157283,1.2717065 +.53120379,.71288787,1.3112337 +.88502485,1.3197762,.03260909 +.48828017,.07007357,.93584314 +.61416899,.63032439,.32852294 +.73208923,.29554638,.15615793 +2.6771549,.070433,1.2980674 +.70284305,.27393013,1.095256 +.68409702,.82779359,.21169963 +1.326484,.32886862,.34912895 +.74982654,2.6589912,.05049999 +.35492388,1.4453695,.38621867 +.81009421,.57625592,.6574152 +.87069868,1.6135866,1.9223405 +1.9354981,.16959305,.25998611 +.49004866,.93199595,1.1090721 +.63609145,.52291141,1.3312035 +1.2077574,.68883098,1.3830918 +.89626015,.57848023,2.0137894 +1.4937318,.20889766,1.3115646 +1.0661328,.15596401,.61307832 +.89532605,.7468163,.73720117 +1.7841984,.1254145,.23343882 +.6866785,1.0210435,.95881417 +1.3517389,1.0549192,.35385124 +.74496887,.23687686,.14359735 +.50664635,1.5646908,.14495787 +.87664608,1.5771192,1.5978349 +.55366892,1.764981,1.6478837 +.77621936,2.698741,.69956538 +.73677446,.97389717,.2898191 +1.1839094,2.6229367,.39013874 +1.8753034,.24722392,.46456718 +.76165704,.55641915,2.0286054 +1.1349125,.13479545,1.3225192 +.70857771,.70052008,1.1688513 +.64351097,.67940777,.02168315 +1.2140044,2.146367,.76782664 +.52042597,.18087982,.24664531 +1.1362029,.25370661,1.3778402 +.39471757,1.0724123,.83679814 +.70923821,.39540698,.0684965 +.95444973,.25797651,.73552137 +.46099669,.01887432,2.0920296 +.34149372,1.0507555,.00335328 +.7670203,.65460805,3.2249667 +.27916,2.2603746,1.0155389 +.68398179,1.4572525,1.4470446 +1.6300732,.03268085,1.0203873 +1.319872,.4013702,.03988896 +1.6598757,1.517952,.64944086 +1.212824,.64743222,1.1756726 +.57088388,1.5103481,2.1830982 +.77082269,.33380251,1.6623414 +1.4850427,.3787326,.62277458 +1.083796,1.0022952,1.9000009 +.98354672,.06184844,1.3029509 +1.3007546,1.7781939,.89389271 +.70196699,.41759536,.92711991 +.58707968,1.518764,.86343486 +1.0257552,.08897266,1.5090962 +2.4311244,.5212023,.33190001 +.72665103,.58609764,.60376929 +.20954947,1.2933451,.23875484 +.35040779,.82397907,.32309988 +.8230591,.73032903,.96635121 +.68735942,1.2756754,.55375856 +1.0394816,.04159205,.35250986 +1.194961,1.3383333,.60022654 +1.3616258,2.3529031,.94787594 +.3457165,1.0072048,1.0204671 +.46635164,.60816441,1.4339773 +1.0823167,.33527612,.62796138 +1.2636759,.00201937,1.0618518 +1.8311993,.20704703,.79667856 +1.7552397,.06024203,.86234602 +.78505214,1.4984435,1.0617315 +1.8346339,.57641005,.49323777 +1.1056089,.66909658,1.016181 +.52864807,.98361442,1.7224784 +1.0936682,.90646043,.57546147 +1.4373978,2.1160715,3.5912197 +1.2973415,.02998114,.40076299 +.43587928,1.4855401,.48226271 +.5328098,.3482175,.35069734 +1.2385171,.65480171,1.0445835 +.62579064,2.2726237,1.6125171 +.37813296,.34449879,.76659507 +.59696492,1.9369736,1.1086651 +.43720226,.69292079,1.4822255 +.99133048,.61228135,2.5600113 +2.7578582,.87987323,.6387946 +.82537516,.76308733,.68605665 +1.2969498,.03123274,.03095156 +.63768065,.49043825,1.7745958 +1.1290194,1.2516489,2.2837208 +.60143822,.9236533,2.0404879 +1.0533971,.32081001,.76366876 +.81698159,1.2031321,.46931375 +.49398969,.86733197,1.7679491 +.82577868,.49939607,.11172275 +2.0296595,.91767023,1.838531 +.83562772,.57649033,.10744026 +1.9166821,.6376192,1.388086 +.62571863,.66714411,.36554068 +1.1224353,1.2366423,.11603413 +.64717811,2.1239761,1.5941806 +.628173,1.9896813,.43507412 +.95912127,.00352317,.86768828 +.9405675,.32093875,.48266624 +.7041777,.46319454,1.1996635 +1.4772669,.79125665,.82604723 +1.0993133,1.5267727,.18595015 +.85955206,.02236547,1.0090421 +.77410982,.88153714,1.180712 +.3687424,.6363626,.41151212 +.5423469,.86779338,.93228016 +.71309482,.04385884,.81936005 +.73120529,.40114338,.90100998 +1.480735,.48756695,1.2195032 +.68572685,.57683953,.32398097 +1.6120602,1.0658345,.87234331 +.99790849,.75741467,.59136993 +.66499246,.858649,1.4562418 +.37886414,.55601763,.3127979 +1.0720918,.08474508,1.8492238 +1.971429,.46517569,1.0052857 +1.1081796,.33022695,1.5540611 +.58382074,.12625249,1.1423497 +1.5740661,.40911917,.75154691 +1.1627342,.12899764,.04772163 +.66519463,.29696728,.52801413 +.43272395,.30803212,.85076752 +.93674524,.0574818,1.6260923 +1.2316083,1.3044285,.26749766 +.66570617,2.143313,1.7532773 +.30454198,.32475911,.11009503 +.72525468,.97801035,.18491169 +.66700494,.14848625,.44302884 +.35781168,1.0504277,.94003548 +.66298637,.25896061,.89081862 +.64881772,.57207609,.29266533 +.59881091,.4969669,.70608813 +.77250297,1.8519176,.88255954 +.27931677,.56435418,.05015162 +.5272954,1.1426903,.04648039 +1.1430794,.0912022,2.0111693 +.6586237,1.2859799,1.4066465 +1.6574489,.10732304,.06416664 +.56132021,.23813398,3.0800891 +.57011295,1.3267054,.83375398 +.74011851,.44975227,.91798278 +.48581214,.39372685,.15275444 +.6844999,1.8406585,.71511943 +.52570624,1.0779819,.23627785 +.70322186,.8328094,.28334673 +.82830367,.05787077,.63020489 +.75659147,.60644717,.9499532 +.44596581,.70395116,.0803273 +1.4991871,.39456733,.74317344 +1.0847804,.77998216,.23482766 +.89654904,.22634532,1.1830134 +.40310521,.94347145,1.0658165 +.44700199,1.3710142,.0451242 +.69228461,.74927823,.72023915 +.54079611,2.4639758,.07896599 +.62173828,.92093337,1.2305823 +1.1907225,.40515516,.96161474 +.40919593,1.8327859,1.4040637 +.51271713,1.0305833,.91473157 +.28878903,.30980619,1.4629106 +.79213961,.29689922,1.5847148 +1.0160991,.29592171,1.1747287 +1.858867,1.0077981,.80270718 +.81246199,.54607214,.17158006 +.6375435,1.7237661,.22096941 +.77193032,.22512937,.57818779 +.59378202,.43725462,1.5918746 +.88460089,.49737881,.01917926 +1.2653674,.31525731,.39248941 +1.1783097,.47465451,1.2321073 +.63689359,.02335781,.28415655 +1.7984721,.11448366,.78055041 +.5890315,.26530359,.78731677 +.97310366,.21969806,.82411825 +1.4716392,1.5427524,.10426221 +.69667122,.57234183,.09323236 +.25361433,1.5336485,.31067059 +.5867862,.21158098,.18946693 +.90123976,.07470156,.12659655 +1.213919,.69455222,1.3095053 +.50269546,.09977476,.48597587 +1.4159391,.83681725,1.2829088 +.29607819,.86634755,1.1326543 +.61913522,.4811996,.12909468 +.90785227,.76235467,2.25177 +.71579448,.35100324,.08492891 +.44332587,1.1113058,1.3667325 +1.5492066,1.1476889,.95368901 +.34544127,2.0432292,.03822727 +.72902886,.21973528,.73867209 +.37304707,.99602816,.20894372 +1.7852121,1.6121873,.87951466 +.47899322,1.1495526,1.4584873 +.65458326,1.7426328,.12490208 +2.3396756,1.0121456,.72588919 +.32255472,2.5494666,.83963014 +.88032819,.11546628,.42057003 +1.0603174,1.7064955,.12546317 +.84013224,.13194311,.11599193 +.43213697,1.0458219,1.2976245 +.59036872,1.3927871,.8729225 +1.1860544,.15606352,.10495783 +1.1727845,.82092904,.57323074 +1.0701285,.51648288,1.0273891 +.6122609,1.9887227,.49236691 +.93889452,.89940127,.16170404 +1.8025361,.9690524,1.0991169 +1.0383275,2.037141,.29967995 +.85410852,.44920143,.75629772 +1.8129381,.45976618,1.8179122 +.88314345,2.1262775,.12813347 +.44889708,.57432372,1.1343946 +.39877331,.30291666,.69059617 +.45210602,.82405715,.79410155 +.67554774,.40543561,.22484804 +1.0830243,.16244204,.55159942 +.62614632,2.4045614,.70585456 +1.5128916,.83121061,1.2606134 +.98548974,.32873951,.05595707 +1.4438305,.25335031,.52159746 +.82528883,.59096001,.36292373 +1.2915456,.09661808,.34423643 +.45861882,.54729486,.24916069 +.6533932,1.0962694,.59872413 +.93843726,1.0727366,.26628028 +2.0250842,.12975417,.30199033 +1.7647664,.84256162,1.158956 +1.6248994,.28332438,1.8386502 +.70759889,.59215274,2.4795218 +.23399236,.44941611,.59015406 +1.2010205,1.5248182,.67655175 +.93512807,.32748667,.42943459 +.82127597,.889559,.64515097 +1.8031774,.0276325,.58292551 +.25942487,1.0830279,.45831341 +.76957649,2.4941852,1.4807373 +.60127388,1.2174706,.32129591 +.50314388,.8967949,1.0065148 +.78636546,.72672883,1.6205729 +.46094191,1.6671581,.52102118 +.43856381,.38297786,.96161868 +.6406516,1.0565932,1.51342 +.96320639,.10109885,.30183822 +2.1998257,.76008859,.58334712 +1.3072564,.85207891,1.5742022 +.37720432,1.4301214,.08347675 +.6901138,.55100695,.60763591 +.70896592,.25694648,.79406204 +2.2466759,.78893125,.98869169 +.76073661,.26639589,.04488728 +.48843141,.19355463,1.3692041 +1.8007265,1.3169392,2.957033 +.88399963,.87469988,.78739078 +.49140662,.59640762,.43070246 +.98803949,1.74397,1.0699548 +.63433764,.77839705,.13465012 +1.8089698,.80752846,1.4802409 +1.1108405,.89280148,.2572391 +.46957833,.91598702,.86725062 +.46754954,2.0483906,.56178032 +1.2309348,.33265893,2.3749953 +.83920503,.62474109,.79857703 +1.0631835,.50445419,.16099222 +.72000253,.42559205,.03478803 +.88877617,1.7901791,.51451442 +1.5297218,3.2245167,.18593642 +.80837648,.18735874,.28564484 +1.2477765,.99057046,.64339576 +1.3668302,.07747581,.55541377 +.32199946,1.3953774,.63074684 +.61476782,1.4733217,1.2566646 +.74908794,1.6650032,.93190363 +1.0258541,.42787237,.07952859 +1.2772053,.49779433,1.5812486 +.88617623,.53854866,1.3771439 +1.2424527,.07791264,.90338674 +.7888844,.12582923,1.964423 +.76487431,.26576746,.20129377 +.56030642,.36981307,.72757852 +.92989167,.20832775,1.2863428 +1.7696083,.34620634,.34724901 +.41783663,.36778677,.02145102 +1.0470969,.0097598,.69159028 +.57915219,.66136524,.56450238 +.40199191,.97675378,2.4715132 +.35045138,.36274283,1.2747534 +.7315745,.68178661,2.64896 +.77906867,.0350941,.17238711 +1.6315424,.6206878,.1770486 +.4466052,.68951923,1.2641274 +1.473791,.44615423,.88236719 +.74827021,.68521319,.69072323 +1.4669998,.0634396,1.8751621 +.85116202,.5402039,.43300823 +.81802523,.31557287,3.2698305 +1.1160581,.34890071,1.0944871 +1.4855828,.5309718,1.3649611 +.35239742,1.3935463,.05659625 +.79315919,.03146981,.80057041 +1.1637823,.46694142,1.7442649 +1.7820326,.83578567,1.4269196 +.44424315,.62919182,.10087186 +.67311605,.19855402,.62751018 +.47893766,.43973946,.4901392 +.48636656,1.4703725,1.4189356 +1.8104106,.51899936,1.4339097 +.763461,.72555837,.38743909 +.41547221,.79143903,.2842058 +1.2328628,.18188521,.85739762 +.48892649,1.881593,.59543306 +.87536904,.36068688,.69524233 +.65776179,.84399777,1.3347259 +1.2641292,1.2519345,2.4412641 +.81383733,.50988001,.64138702 +1.5817637,1.2990176,.16370971 +.85898331,.34487195,1.7049286 +1.2826557,1.3395103,.18780254 +.73667927,1.8120343,.36583434 +.55595405,.83101531,.4461618 +1.40961,.66001697,1.3241975 +.96427142,.24466518,.47941728 +1.3526563,1.2712045,.05536815 +.9088093,.48230091,.7214526 +1.0920463,.2695949,1.1954408 +.62963995,.93061193,.68145727 +1.0909677,.12448801,.37286856 +.8075301,.8093552,.2493866 +1.1291061,.80025484,.30528436 +.51260099,1.9851337,.69988047 +.70362871,.97126592,.22635257 +.37700753,.06427856,.09767112 +.28114916,2.2018104,3.2556476 +.60323042,.06646298,.44122565 +.60225589,1.0503086,1.2606688 +.80533734,.65312774,.48684857 +.93473878,.79523548,.21568511 +.38635901,1.3217476,1.2110371 +.97378782,.39960346,.8039336 +.45670923,.84624468,.56089746 +.38434214,.97559167,.38890107 +.30235153,1.8599213,.91772947 +.8077132,.85317494,.15676439 +.58744469,.09640733,.26314048 +1.6206422,.05635009,.97853104 +1.3178196,.27226967,1.0738221 +1.523082,.24739186,1.0571651 +.7553551,.31599128,.21271465 +.9297138,1.4820465,1.2559724 +.66964134,1.2528443,.36878021 +1.1706587,.03183799,1.0703019 +.99617647,1.2793838,.41711761 +.7211779,.83978311,.16874621 +.36478783,1.0753265,.72925341 +.70594517,1.7221664,.46805098 +1.1166631,1.2528894,2.1653862 +.44327317,1.7735473,.71175487 +.53918695,.92416709,.2410636 +1.390645,1.193502,1.235897 +.72532291,1.068896,.2034934 +.79946261,.54196146,.031077 +.49323925,1.4343642,.54639152 +.23871504,2.9001924,.69302187 +1.4835269,1.3876345,2.731837 +.84017834,.26622942,.3900405 +1.0563005,1.6311697,.41693125 +.87316234,1.0102928,.98122009 +1.2483539,.56642442,.49281068 +.74065707,2.1291513,1.3143344 +.27111968,.38447059,.51744334 +1.0922728,.10286704,.77058599 +.99115159,.70159378,.16621554 +1.0477067,.31643522,.18044827 +.76012355,.07628384,.58520072 +.51965624,.40492571,.27267536 +.76370366,1.0588698,1.1774872 +1.5368793,1.4063808,.2600324 +.75406659,.6717319,.19771348 +1.9807272,1.1848426,.91682205 +.33608388,.49023847,1.1562305 +.32839208,.88563283,.14685789 +1.256007,2.4368508,.17305394 +1.8019758,.25108588,.5250421 +.89174192,.24088518,.91052213 +.36602595,1.5956342,1.1279261 +1.4893881,.57438971,1.2209971 +.92478314,.48225175,1.4638511 +.69288092,3.0224943,.55294141 +1.4057286,.421289,1.5936421 +.82903367,1.3552033,.21037205 +.64178483,.55036521,.43182207 +.62141544,.25747745,.39867425 +1.0304978,1.1300768,.90656122 +.72024141,.28037878,1.0307499 +.55601779,.34274503,.70760791 +2.4424481,.80403513,.48338876 +.89115635,1.030798,.85053543 +.41728398,1.0954909,.24682478 +1.2251779,1.113288,.56748799 +.82184091,.15706325,1.157396 +.5374941,.40346822,.14313791 +2.0534988,.2299217,1.3970283 +1.5624695,1.9254009,1.3792585 +.7511586,.37253223,.80442488 +.73161424,.54615075,1.168475 +.52944183,1.4195547,1.9138365 +1.5662599,.28443902,1.3535587 +1.1852532,.05464379,1.7938741 +.42616604,1.1077749,.32885541 +1.2106941,1.2266127,1.8572068 +1.2386766,.28959475,.79769951 +1.0711973,2.0991176,.09623216 +.53839073,.13634195,.02651907 +.63641799,1.2747478,.04168674 +.5318579,1.0655044,.10108665 +.74801829,.39227091,.21813436 +.33566843,1.5623874,.03954501 +.46771943,1.4332325,.23800662 +.98129845,.96014794,.2308718 +.80287179,.61579982,1.0452334 +.43508581,.1077242,1.4647759 +.97903165,1.4176601,.20775483 +.6128604,.72531789,.72550725 +.52530789,.30424171,.00271389 +.75488791,.6020144,1.4935575 +.62702532,.05277675,.34782598 +.76593663,.13292185,.08301404 +.59416089,1.1840238,.45312528 +1.0105914,1.549377,.00184043 +.32742118,.03463348,.1880149 +1.0139386,.15527406,1.0472592 +.90730798,.9163424,1.4815526 +.90447797,.00461721,.31270703 +.96196063,.70283504,.97626605 +.63458207,.3822731,1.6987606 +.58300473,1.7567531,1.5373377 +.62727872,.31322317,.49416274 +.55923709,.89823154,.57664866 +.81532137,.2020011,.01104724 +.47849121,.09128634,1.1267893 +1.1341365,.21067992,.76981627 +.41020677,1.5051935,1.4709953 +.48737685,1.8829692,1.0298661 +.31999253,1.7529388,.3973853 +.68453079,.76753285,.21219779 +.80710801,1.0538129,1.6679591 +.78544165,1.0938854,.09368917 +.45224997,2.2164069,1.7486372 +.18077848,.91189817,.05595621 +.67169564,.92113207,1.2023412 +.98520725,.33130386,2.1604613 +.69766963,1.7314431,.10150233 +1.1124622,.42494323,.35244739 +.89443268,1.0150412,1.0974305 +1.3882941,.64642449,.50255697 +.52645213,.1821875,.15545475 +.61197634,.33592223,.03577751 +.7716784,1.2766784,.34853895 +.51866747,.49143385,.90891866 +.49569069,1.3213378,.0894532 +1.0641835,.3567736,.1417207 +.75826192,.66515273,1.7499664 +.70091796,.17154147,.30313585 +1.5283647,.20077665,.635107 +.52789613,1.4186256,.66156567 +.98281925,.6837401,.43583712 +.9926735,.65129837,1.6154025 +1.0994445,.047546,1.4996682 +1.1144796,.130324,.19560976 +.68411563,1.4070305,.70714136 +1.0237891,1.7221857,1.5794127 +.50244613,1.6507791,.09250602 +.32975233,1.0046864,.9705241 +.9039583,.1031066,1.2089033 +.40719379,.70496792,.05906443 +.96890634,.24773596,.35647804 +.48400839,1.5350944,2.203147 +1.2311045,.61730741,.37382226 +.73721217,.6897977,.35009723 +.82417406,.56759904,1.753213 +1.7189243,1.3012819,.03599012 +2.6651315,.16551907,.57376613 +.71575125,.68639393,.05177666 +.66811623,1.3916013,.1843009 +.47293826,.21294683,.78839312 +.65739986,.43244152,.63211541 +1.1806673,1.2436317,.75926768 +.8394337,.00219105,.13041585 +.44101397,1.2893551,.11901153 +1.1395034,.17042156,.29942899 +.78670648,.81279628,2.2115773 +.94959648,.66889409,.19170654 +.47056537,.64887605,.75902052 +.79267114,.86989957,1.3511883 +.92199511,.33464083,.52010273 +.95691735,.29625903,.30801739 +1.4508668,.31812846,.75486149 +.47105385,.0280425,.17395409 +.47888699,.78706892,1.1239819 +.80788701,.57781307,.8255841 +.53387875,.34461993,1.948842 +.55100306,1.2804131,.17332555 +.80158525,.04341062,.39988519 +.97613123,.68114109,1.0006099 +.59965769,1.5090765,1.1264402 +.50089461,1.0152305,.29891839 +1.183272,.40441705,.52331341 +.45736049,1.7801833,.67761812 +2.5695526,.26508216,.91234454 +.52189689,2.7835561,.2728737 +1.3625661,.2218102,1.3089509 +.47253543,1.4052875,.95410024 +.54825824,1.5619184,.41394984 +.69199971,1.4278816,.3065205 +.53136166,1.4006261,.04524163 +2.0465688,.64078669,.25854895 +.65840481,.17049479,2.280478 +2.2809193,1.3952679,.32397513 +1.8241214,.32233406,.51588099 +.83985822,.75360695,1.4134095 +.5351459,.30002295,1.7365104 +.60515031,.93695165,.64850823 +.64017854,.40177497,3.1586543 +.34014612,1.9017757,1.2117797 +.20106154,.84991441,.62629069 +.45474903,1.9158164,.53590368 +.89021007,.56983824,.34348732 +.43373219,.32872952,.35279227 +.83323305,.43375545,.35366017 +.40089192,1.0953187,.2358882 +.51461269,1.0311896,1.5672946 +.42845534,1.3244478,.01557732 +.77158908,1.6720455,.99614237 +1.1658466,2.3349393,1.0038348 +1.0869679,.11716319,.01427818 +1.2322216,1.4813042,.14374248 +.79064018,.41128628,.82311879 +.73061031,1.0135823,.74681392 +1.2957948,.76264213,.18536348 +1.3167075,.02094051,1.0854865 +.994708,1.5655978,.50123578 +.29684003,.81297024,.59732822 +.63936943,.07054595,1.0502569 +.38586374,.11333591,.5601748 +.82919466,1.2211026,.96648246 +1.2326709,2.3605554,.3371837 +1.0335382,1.0005524,1.1616234 +1.2811792,.6996358,.09616194 +1.01174,.32972551,.90283127 +.44316188,2.0163788,.08987282 +.29261059,1.3987221,.20244535 +.39919285,.06228964,.31003416 +1.1443809,.19334748,.94451644 +.52139557,.37570353,.12560618 +1.2089288,.00426751,1.7476465 +.79945251,.6445464,.30515563 +.61108474,1.2145883,2.0358478 +.93169899,.28064006,.73819996 +.75672906,.91110917,1.1200009 +.64554348,.8995736,.61450409 +.53975329,.08621706,.36329479 +1.1073035,.07949913,.10988114 +.93560969,.92991244,1.5375865 +.73882093,1.2439275,1.7294121 +1.2709222,.38307069,1.2302966 +1.3427034,.55254479,1.5932379 +1.2835449,2.0985246,.11640822 +.93915087,.58654452,.78091104 +3.2085658,.05828703,1.9281243 +.65892548,2.0698771,1.1895606 +1.0371564,.27465234,1.6977414 +1.0849947,1.3696521,.36318347 +1.2545175,1.202819,1.0050871 +1.107133,.03949311,.72290685 +.62782935,2.5742227,.65771734 +2.0809338,.63233991,.44657413 +1.4792707,1.6678055,.531415 +.89966199,.01220062,.25124548 +.77441595,.90993716,.13209122 +.59178743,.58655921,.40688802 +.50058149,.25073936,1.0305735 +.65284997,.29384907,1.0176309 +1.2295839,1.204687,.44858773 +.75114627,.24682649,.5680501 +1.1443697,.75221974,1.268585 +.77386747,.52085884,.00685676 +1.0180213,.05857326,.31785825 +2.2687322,.29487174,.04678768 +.92369588,.20226014,.47807589 +.75627355,1.1691388,.3854892 +.50271217,1.1801387,.19836274 +1.2283144,.86967772,.37596519 +1.4931868,.42794592,.68933663 +1.0602479,.52345432,1.7103749 +.76323801,.62674874,.13108576 +.42977814,.40756489,.15248575 +.5384932,.96085727,.64385298 +1.0565791,1.5073522,.45445902 +.71889626,.05583179,.42199197 +1.2149837,.87278689,1.9355586 +.49318099,1.8624291,.65468465 +1.7873694,.048871,.96531717 +1.0590873,.39857644,1.5914567 +.74704454,.36706486,.55284149 +.2089998,.57540571,.0219594 +.44073021,.67067058,.20531954 +.64887211,1.2937468,.07379702 +.63412752,.34653522,.38388732 +.94786919,.20023937,.923707 +.92717832,.72541696,.76780796 +1.4475744,.179002,1.7693654 +.94510985,.74780226,.76230028 +.83536813,.68403548,2.3309742 +.55131583,.53414781,.26045137 +3.0584256,1.3336952,.81923019 +.48316621,1.5309505,.29657153 +.67696285,1.8010772,.15552387 +1.2103594,.36424114,1.0747959 +.90468685,.13532591,.84927799 +1.0957487,1.177756,2.1468152 +.70638589,.37272191,.59660841 +.65138461,1.1335796,1.1375748 +.80736678,.13838458,1.4450399 +.36390405,.81718489,.43524199 +.75425401,1.7243328,1.1467056 +1.4799509,.96944148,.74933246 +.57648793,2.4263378,.21593325 +1.0037374,.91105878,.52330591 +.63561345,2.3280425,1.0386155 +.94368211,1.2354352,.7121724 +.55316001,1.1973594,2.4451972 +1.2136054,.98936533,.66206006 +.83075716,1.3221559,2.2559556 +.70513758,1.0730214,.45255972 +.26302014,.67567068,.99993344 +1.128568,.49618764,.60883896 +.54978972,.90504106,.85188611 +.84396276,.51028619,1.2239061 +1.4075259,1.8648591,.18414342 +.46336802,.6446798,.63818814 +.74814894,1.6163098,.33377886 +1.6591547,.01480019,.90703606 +.43196386,1.0372909,1.2755392 +.45025436,1.851044,.23101628 +1.4620246,.85443598,.57754508 +.99999339,1.2847083,.54203282 +1.1823705,2.0546026,.1825292 +.27746544,.49900243,1.8153343 +.4197347,.67548809,1.0533227 +2.0313904,.75395057,.43876873 +.92206085,.92725768,1.4446376 +1.0569454,.11213359,.12587149 +.73757961,.70017773,.64605965 +.55328293,.01390492,.51396202 +.7280525,1.1739082,.11222995 +.61549838,.40087916,.74392772 +.40590657,1.4860542,1.1354177 +.30993817,.60430657,.59314749 +1.7315922,1.1975053,.5622462 +1.1765102,.34842094,.81511774 +.70424032,1.8843376,.283724 +.50202113,1.2391908,1.0372328 +1.0940387,.45882381,1.2299576 +2.5187971,.13188629,1.7176848 +.59019739,1.6365982,.30580547 +.70749578,.54740821,.09843383 +.79688198,2.5301179,.73506062 +.71813788,1.177454,.99670199 +.98700689,.40601559,1.3154899 +3.5794319,1.6131874,.87394056 +1.0376669,.4995235,.15031897 +.33749413,1.56862,.21654613 +1.7023758,1.1615486,.75684479 +.58476525,.83853461,1.133402 +.31331609,.90271949,.12795985 +.36424741,1.3930718,.78367372 +.85809992,.02241004,1.3040134 +.62586025,.29044379,.82865983 +.39173244,1.4998296,1.9949659 +1.1585862,.37703039,.63287809 +1.2044326,1.6285313,.11279758 +.28054367,1.512407,.32569749 +.78828705,1.2431555,.333955 +.66472394,.26799306,1.0169444 +.71704451,1.0512327,.42976852 +.73044399,1.4117022,.39740374 +.38994016,.90427033,1.4729166 +1.5212364,.85508641,.140754 +.86247829,.46445581,.23455967 +.97680736,.30213602,.04893712 +.57164995,.58487646,1.3835422 +.98478303,1.7652552,.10914768 +.66208299,.55900891,.86867955 +.96732715,.36527129,3.0586523 +1.2093875,.5399171,.99842902 +.63375682,.57585048,.77749463 +2.1146474,.81207675,.68158595 +.54040691,2.2359744,1.0730858 +.45037368,1.5500356,.33533797 +.86604952,.20040551,.0535479 +.89355988,.14628694,.07358125 +.54444992,.67029255,.74485083 +.76074774,.56657231,.12828203 +.81922217,1.0708833,.78047076 +2.732898,.4897662,.98629911 +1.065728,.56053564,.83977696 +1.262135,1.19074,.71981806 +.64825149,1.4959703,1.1879139 +1.3948123,.0676109,1.3234693 +1.4348962,1.2513968,.63345617 +.58247501,.13848711,1.4536634 +.9951684,.48624375,.5845425 +.77619923,1.2118714,1.1007843 +1.0987695,1.8292272,.73679363 +.63283513,1.1167912,.29780151 +.78203268,.27941944,.11499318 +2.0972856,1.1880969,2.2339923 +.31905595,1.2112431,.51438709 +.64197845,.56236127,.00980837 +.7655989,1.7956169,.81835923 +.69775063,.21693118,.03164209 +.98675143,.05593448,.31776368 +.90837919,.00017954,.61913259 +1.3331679,.91874401,1.0818383 +.74005282,.84039384,.17422497 +1.6761805,.35396057,1.0344639 +2.016623,.69575695,.48904923 +1.4691185,.86055647,.85660087 +.55457794,.11221198,.77737084 +.50235406,1.3771572,1.2388921 +.39490834,1.4489111,.22612615 +1.3938744,.70637863,.75916036 +.49376282,.24536052,.28390463 +.56576664,.75161813,.19427285 +.5375568,.97869969,2.5723379 +.79662574,.14023036,.74331774 +.39545621,.42671655,.45310897 +.5547333,.33620598,.23703926 +.87559397,.35038429,.5724902 +1.0677031,.13293685,.96589322 +1.8506763,.08314762,.13633752 +.33834681,1.5245195,.58835058 +1.6017979,1.0609566,1.120835 +.93755295,.64358462,1.0151066 +1.1979424,1.1088964,1.0537797 +.43957763,1.6206659,.3569324 +.47873128,.27288342,.58749599 +.8773477,.91440497,.06991581 +.52382951,1.1994776,.33340011 +1.1721012,.79448555,.05481611 +.84076034,.16306381,.92257676 +.44594119,.67860266,.31415485 +.41165957,.20481607,.38780453 +1.0477314,1.0409692,1.3851006 +.74303897,2.5638949,1.1921067 +.51388245,1.3328893,1.2582045 +1.3917875,.25622443,.59932095 +.93819949,.39514519,.66141266 +.96781051,.17499006,.24299821 +.47763912,.56064133,.19449206 +1.8342957,.7012428,.72913859 +.78357854,.57452936,.14407648 +1.0970243,.54358029,2.101638 +.20166411,2.257732,.38825518 +2.3592521,.49562394,.33017264 +.4839253,1.5578739,.85379554 +1.3873118,.43114215,1.0317169 +1.2200142,.74420322,1.1113325 +1.0067729,.01582437,1.2319762 +.73652631,.22136686,.61982876 +.491952,.90495046,.52502306 +.85353915,.92850107,.7520204 +.66270654,1.3327953,1.2957251 +1.4751127,.15114891,.87346469 +.7033495,.87361411,1.3039398 +1.0716326,.19334435,1.0947137 +1.3861921,1.4201254,.81357268 +2.0030622,.34876495,.973482 +.80776851,1.2053112,.01706097 +1.2610268,1.0149313,1.2526348 +1.9739136,.10072938,.22012097 +1.3106899,.60398764,.61547517 +2.2957817,.66545746,2.18647 +.93009454,1.2044605,1.4577861 +1.9954107,.36198164,.90989367 +1.6148702,.1617042,1.2700683 +1.3102228,2.0050669,1.1666854 +.87185486,1.9963774,.14793364 +.55231326,.59119971,1.0144057 +.6490876,.92324661,1.652502 +.7882461,.42507749,.13711647 +.95827431,.58545055,.55611846 +1.1945136,.77620884,.74144607 +.7557536,.07248821,.02364554 +.47480301,1.1736746,1.1683938 +.75311793,1.3713023,.62831815 +.34467194,.60430848,.38776752 +2.0139201,1.0725255,.14841464 +.69699318,.5581268,.42273019 +1.5236857,.09738544,.03582035 +.46394966,.29499147,.29069173 +.8655781,.25039297,1.0027036 +.55290071,1.2253228,.11555189 +.86084686,.2157452,.29650555 +.83461789,.4093832,2.1095895 +.59572693,.53284332,.63539441 +.63772974,.812413,.34042836 +1.0126909,.46255156,1.9887341 +1.4245471,.13339872,1.1728561 +.43175772,.86966033,.87212632 +.9371769,1.0440688,1.5550758 +1.2621402,.10155689,.96389053 +.42223436,1.7760971,1.2710322 +.88991203,.47740799,1.1025974 +.28766287,1.2879927,.22777381 +1.7202667,1.1433678,1.1514136 +.93964001,.16272637,1.1199783 +1.0943611,.0817256,1.949118 +1.1101583,.49265169,1.3011307 +.94083881,.01923797,.41086558 +.60999787,.5554497,1.224066 +.85526352,.71952179,.89719476 +.68132573,1.1461072,.32046377 +1.8515203,.30026043,1.377075 +1.0292356,1.0618739,1.1922516 +2.8973411,.16150016,1.260479 +.77387626,.7524388,.71210104 +.63686771,.67501185,1.0957515 +.58908921,.98429114,.26675828 +2.1584934,1.1187651,1.0012613 +2.254375,.23961766,1.1988327 +.65533727,1.2727589,.49629092 +1.1111117,.84362797,.00310336 +1.2021322,.05108114,.6822877 +1.4902275,.90083375,.45202595 +.99811993,.17532279,.72474461 +1.4155231,.81262799,.20145424 +.59355121,1.7240344,.7126988 +1.0990048,.89662108,1.9530487 +.62249168,1.445815,1.1111897 +1.417191,1.4025207,.89505032 +2.5931796,.40697768,.59609898 +.78487698,.16379306,1.1504563 +1.1580828,1.0393572,1.2207037 +1.9971563,.7227198,1.7010998 +.4139834,1.3959854,.42278764 +1.4931747,.33172916,.00471325 +1.5102183,.24167572,1.7472375 +1.3141477,.07915006,.28054127 +.6866358,1.3187393,.51065932 +.41645629,1.4258502,.52219956 +1.2153688,.32052256,1.8031878 +.86692532,1.4800399,.14772354 +.61217733,.52883305,1.2474203 +.71676763,.79337099,.91043082 +1.3238895,.06006407,.52553453 +1.3116201,.03415325,.69331196 +1.3674432,1.1250287,.14566099 +.48684813,.71316867,.32621134 +3.2328313,.92468915,2.3623191 +1.2577455,.60178333,.75591483 +.53671608,.50672092,.74081816 +1.4436496,.42502793,.610077 +.749007,1.130614,2.1002236 +.82331957,.38288414,1.161361 +1.2494135,.38054119,.47416938 +.66380139,2.2567656,1.4367331 +.82906611,.98917684,.78555482 +1.1869051,.56466077,.26928498 +.56692495,.16072367,.12768461 +.9319639,.0103254,1.6337404 +.52597951,1.0283811,1.1450954 +.53507183,2.5304439,.82317323 +.71313378,1.078339,.838869 +1.0165036,.66122257,1.5340085 +.52929657,.38274242,.86386558 +1.2445794,.85971989,1.3248089 +1.6892224,.73076492,.14992718 +1.6109138,.61548429,1.7821721 +.34508707,.86845837,.99347809 +1.4698531,.81541149,1.5953844 +1.1642522,.85707505,1.3196396 +.64541689,2.3636653,.37452854 +1.1650899,.15003386,1.938528 +1.0204919,.57638858,.53254361 +.56170953,.61472358,1.5724329 +.62404486,1.2534993,.50981481 +1.5018537,.19630614,.22649833 +.30157531,1.7123861,1.1229534 +1.4832511,.22736116,.2199802 +1.0502745,1.9932018,1.2016708 +.7234119,.33955713,.26105969 +.85693611,.36606641,.87877643 +1.6730351,1.4421554,.46548765 +1.918263,.14604857,.39080218 +1.1951945,.29329989,1.6004728 +1.4236448,1.8628743,.72211533 +.83687355,1.2767619,.23340903 +1.3828541,.44554829,.06135653 +.43100705,1.8329244,1.869748 +1.6351823,1.0088464,.2029064 +.48848946,1.0643193,.59626293 +1.3762497,1.9704186,.22997733 +1.0484252,1.9450594,.63673576 +1.141831,.363323,1.6343699 +.58851161,.28378087,.03270094 +.52937072,1.7508344,.60600206 +.74520089,2.1632241,1.0830367 +1.0992081,.62839392,.61290812 +.59366142,.0329857,.48846298 +.8271914,.80153793,.33074343 +.56483439,.24048601,.10732828 +.87247979,.44091345,.15291939 +1.9080878,.55507418,.33040489 +.54576899,.66467437,.30898559 +.59903131,.70192326,.27412554 +.36236402,.87011511,.39124192 +1.2408096,.16345101,.67914673 +.42743818,1.1976732,.65211704 +.75071415,1.0359924,.1957959 +.43604071,1.4747773,.37222019 +1.5003569,1.1445993,.81980914 +1.5820384,1.2363958,.33407734 +.67897159,.01913425,.02428253 +.98349994,.06033667,.52773527 +.55950382,.9074105,.40843642 +.7679609,.56095641,.2478685 +2.0076569,.21800936,1.0258316 +.60701243,.84254819,.36236269 +.73392911,1.5477993,.66635154 +.92036308,1.8698718,.57386183 +.35496888,1.1638682,.33705943 +.68360534,.477099,.18969526 +.68826039,1.1384933,.42598764 +2.2618499,.53346922,1.5113704 +1.2262727,.22611684,1.3441707 +2.0288446,.04827103,1.4610763 +1.0981161,.69284936,1.2918662 +1.292102,.69434987,.75558303 +.88693102,.2393873,.93890839 +2.0246266,.78932386,1.4011172 +1.7002696,.30657686,1.638007 +.58645475,.12190955,.27998574 +1.4824487,.99565915,.22457152 +.70994516,.9625062,.5428062 +.90485191,1.2435517,.28281593 +1.1249835,.36150072,.69526404 +1.2567838,1.4527907,.2737801 +1.8504103,.34767006,.06852605 +.99130219,.16789583,.58062599 +3.7477877,.11657433,1.4795567 +.48730366,.6028223,.3053534 +.51537663,1.0834535,.92619725 +1.646241,.97347654,1.5087793 +.47232387,2.1086549,.03860974 +.33304061,.64520242,.18085327 +.6495146,.47383954,.82501527 +.68382796,.31976528,.04958456 +.45570351,.04355368,.05028091 +1.0125462,.16065158,.15852179 +.86508671,1.0743968,1.3848102 +.78883531,1.473956,.76209409 +.45735883,1.3451029,.46587915 +1.5475999,.40714213,1.3696868 +.81477323,1.707921,1.1808763 +1.1404324,.39999692,2.143845 +2.0239782,.53833281,.60442237 +.51640084,.60380434,.37497526 +.60632754,1.1612158,2.074504 +.71410181,.12808926,.88889866 +.57724332,.14548853,1.2460715 +1.096687,1.242872,.77012534 +.32066033,2.07217,1.0618322 +.84705583,.49900179,.04281564 +2.5696747,.75713199,.66334974 +2.1000864,.81915319,2.7750897 +.7441809,.75766707,1.1051233 +3.1766548,.09041678,.66865959 +.60715652,1.2554411,1.2801468 +1.4852611,1.3024582,.6420957 +.59217806,.1814684,.98682306 +1.1529288,.19535266,1.5337402 +.65195701,.08529821,1.498522 +1.1015891,1.2627556,.39915656 +.80674882,.24473732,.06545664 +.50544826,.76962429,.59542601 +1.1973934,.80498952,1.1123788 +.63476014,.13774475,1.0118022 +.92995472,1.038261,.24008405 +2.8493197,.32115421,.01590974 +.66858665,.33459077,.56312515 +.54451462,1.9123481,1.5388389 +1.2880136,.38961463,2.35802 +1.2443322,.88188557,.11450672 +.7786206,.57090447,.8955719 +.74126385,2.6833067,.56016579 +1.0984424,1.3683227,.76330823 +.50880223,.26266031,1.0636064 +1.5805563,1.5355602,.32422496 +1.6086707,.61464477,.06191674 +.57399679,.4331724,.3688457 +1.052197,.29373676,.80854916 +.98164282,.18492306,.17188773 +.74814955,.48830615,1.7558538 +1.0118932,.55395715,.32727172 +.93436676,.55746278,.98165315 +1.4414049,2.1245298,.74391143 +1.2335732,.04204307,.69385556 +.64883128,2.0181419,1.8726249 +.50855407,1.1962693,1.0017516 +1.1491336,.72669138,.33953615 +.71258075,.8644099,1.3865966 +.39466795,2.1042166,.07244525 +.71391022,.79304028,.64179482 +.9968469,.91628565,.80284329 +.453098,.3542301,.43685524 +.92826748,1.3817668,.6751587 +.45496462,.07398393,.31311247 +.64435948,2.9327965,1.1967768 +.68493383,.33772234,.81005908 +.44664205,.86039892,2.2609597 +1.364882,.80647417,.60116724 +.87402317,1.7867581,.0089775 +.68417567,.88997098,.28796068 +.41366134,.24580971,.07686438 +.4887671,.94337035,.66070668 +1.2282401,.65245504,1.2334848 +.55879188,.31427707,.29715419 +.55347088,.0743199,.51538337 +1.6555717,.20148894,.35885623 +.93543689,.19909878,.94962362 +1.4641518,.09771677,.61659759 +1.4027857,.72994769,.40775201 +1.4391623,.62252183,.63697657 +.43448791,.0733646,.27010757 +1.2770261,.07218323,1.3484195 +.50857188,.99353368,.27034656 +1.6408552,.855818,.16681367 +.3530232,.39036362,.06626969 +1.288962,.52859664,.24345416 +.48797699,1.2396701,.60011768 +1.9151617,1.7368474,.22432471 +1.2750907,.16052729,.45629102 +.89801556,1.721638,.8316167 +1.2564012,.4817716,1.1141407 +1.0905204,1.200235,.41010879 +.91214456,.06919941,.29280008 +1.1415747,.11020198,1.0518177 +.90188131,1.1101246,.57467921 +.98262493,.64434435,.11069846 +.65979629,.43663062,.46573561 +.92504913,.58052717,.98637278 +1.0015203,1.3707084,1.0607115 +1.020854,.31006627,.36709691 +.42754834,.86788298,.91406419 +2.875503,.01139133,1.6208046 +.50847803,.53625513,.10009075 +.66711892,.88123655,1.0003243 +.59402145,1.7804512,1.446642 +.78249432,.96876674,1.6211954 +1.241933,.2793054,.88416185 +1.2094019,2.1236411,1.2449118 +1.0994702,.12341277,.8556591 +.53952967,.9585823,.11292093 +.53167155,.96043173,.34622017 +1.0972262,.17805619,.65496415 +.95656836,.22816763,2.237955 +.69261593,1.1828487,.45533429 +.5765456,1.3401674,.49383932 +.42154531,.73081222,.66649479 +3.0376189,.47392188,1.8138149 +.86175098,1.534417,.43717916 +.60185637,1.4172422,1.3961395 +1.2638911,.46762125,.68356128 +.56723173,.37241596,.06539619 +.79623521,1.0776508,.91935164 +1.0732428,1.2158464,.57118786 +.56894064,.24274707,.86807522 +1.1405007,.72635467,.2428626 +.69687703,1.363622,.92317302 +.81524488,.60027809,.61268364 +.40103936,.51683715,.51618286 +1.0816114,.77203896,.35083906 +.99417357,.23188296,.70717619 +.23735419,.67069097,.77968224 +1.5022321,.80200846,.27114098 +1.3502218,1.0800236,.24379254 +1.2398453,1.4305028,.34164472 +.55762785,2.114325,.03513698 +1.0670967,.93293269,.08566257 +1.0861186,.36280768,.90831712 +1.262089,.08096731,.79965771 +.31353126,1.8356873,.47146736 +1.231892,.5024497,.45193258 +.23185312,1.456825,.52686093 +.57881293,1.0891221,.16652687 +1.5002537,.00559151,.84901114 +.83219464,.5589621,1.3913522 +.42324434,.63273949,.21440376 +1.1882533,.56691661,.1957847 +.95603514,.26165872,.73402502 +1.6914357,.10974,1.4848659 +.50100495,.03027833,.79415972 +.5281053,.05275753,1.1946517 +.49369465,.64516729,.1199573 +1.894435,.14389972,.3127924 +.37651744,1.2791626,.58696881 +.47645386,1.8291817,1.5033759 +.75743255,.05347698,.55452774 +1.0899644,1.1609927,.08860454 +.41837676,1.217346,.73415538 +.33200063,.25026816,.11505617 +.30941934,.27374825,.85654261 +2.44576,.06572853,.38679324 +.91475365,.21915588,.71760913 +.81547115,.77749834,2.360242 +.84702479,.13460489,1.7201158 +.40858753,.6653232,.03546438 +1.336157,.48315606,.77779684 +1.466264,.4992101,2.3583343 +.46683746,2.0908074,.43737361 +.63709978,2.3126232,.487492 +.9063555,.9739524,1.0133394 +1.2562606,.38945052,.60608705 +1.7407828,1.9647194,.15007546 +.83631523,.03176631,1.0273323 +.48438094,1.4630568,.42142212 +1.2944405,.76959444,.36517296 +1.1277419,.54135545,.13751834 +1.2048824,.59755415,.48338631 +.62473978,1.2739486,1.2465462 +.32042824,.23993985,.41564568 +.57230682,.4620507,.26003884 +1.2398805,.07176949,1.2238534 +.58055573,1.1605613,.79381028 +.93880067,.8212894,.86255755 +1.3199251,.56296163,.30762105 +1.1327112,.00664141,.73693457 +.88228959,1.5807954,1.1696808 +.43444233,1.7594357,.26822465 +.6459805,.74214347,1.7020141 +.71645142,1.162038,.41195318 +.80172976,.94726727,2.533639 +.52908898,.15892341,.54067616 +2.2535892,2.1410284,1.1940739 +1.0779554,1.4552458,.90154245 +1.5513235,.21315722,.53538257 +1.2860382,.12681861,1.1301205 +1.3783192,.76051678,.64403278 +.85670943,.89258515,.23365574 +.96691327,.18925283,.80610013 +.87945527,.4312248,3.2291841 +.72408333,1.5614063,2.1362901 +2.0070366,.45869725,.34103316 +.76139365,.66125165,1.5525822 +1.1347922,.54681658,1.345199 +1.2953771,.74356309,.37072028 +2.1639158,.4644686,1.6325162 +.31935099,.69215659,.25939373 +1.1972967,1.290766,.35768656 +.52044148,.28415576,.56090742 +.28062451,1.6755958,.70997539 +1.4856611,1.2600394,1.7883156 +.45519812,.62957547,1.38425 +.47233624,.40475681,.4958209 +.60875134,1.1182139,.41854604 +.70163524,.42026612,.54212117 +.5767758,.10019764,1.3076475 +1.0358151,1.2348366,.60761788 +.70307027,.17654081,.72615161 +1.0060792,.02814562,1.3061058 +.71517572,.85652356,.54380978 +.53958334,1.4414136,1.1004971 +.5192907,1.972156,1.627982 +2.0947258,.30672389,.19095601 +.92721812,.96733535,.49127481 +1.0022068,.99275458,1.4302664 +1.0135131,.15914536,1.2719941 +.96926055,.49233087,.6394799 +1.4681383,.38911182,.33159897 +1.0662562,.11226593,1.295441 +.96171127,.11771933,1.544777 +.54594902,.63670247,.23712332 +.41356534,1.06222,.52937274 +.23049058,1.5926448,.13182125 +.87304064,1.1368286,.69591624 +1.1384159,1.3872401,.57136873 +.65702925,.65534067,.10358615 +.67874191,1.7349624,.03860759 +.58516358,.28989232,.80131363 +.73999936,2.3346479,.10394861 +.69238764,1.6715079,1.3921507 +.77996363,1.3068495,.25961295 +.96690134,.76687189,1.0660454 +.89912364,.01659208,1.2189282 +.9668742,.29834061,.52256431 +.83536684,1.4434689,1.2318399 +1.6878511,.09846218,1.4051768 +1.0911597,.07601739,1.07573 +1.9530961,.09799845,1.5827806 +.78906658,.96164198,.3680261 +.61685232,.56981037,.77351899 +.76293443,1.5322845,1.250211 +2.5873424,.24966514,.9860645 +.9000805,.16080312,.07947537 +1.0324008,.44058081,.82040574 +.27931452,1.1577946,1.2986259 +1.534172,1.4147912,.45422153 +1.4257267,.12371393,.63169063 +.71490303,1.4077477,.80097493 +.812652,1.184716,.02080012 +1.1383337,1.4265211,1.5044706 +1.1186807,.64027615,.83688197 +1.3397436,.56468288,.67090427 +1.4080878,1.3856492,.18429605 +.78498425,1.650888,.15879347 +.52711664,1.7571027,.13953402 +1.1677583,.95034541,.2982378 +.56271249,.51454646,.351981 +1.8595074,.15171626,.4857161 +.43870553,1.1460664,.95865783 +.81676477,.84786052,.79263668 +1.5586041,1.1109073,.35848252 +.64184343,1.5788772,1.0184613 +.61453944,.62450333,.44354066 +1.6701198,1.7777131,.84530182 +1.5176829,1.4325239,1.7428628 +.94012124,.56297282,1.2705963 +.65058597,.26232243,.48409496 +1.7914216,.8484307,.51784311 +.7148464,.63956884,2.0832215 +2.0273863,.7483238,.87049281 +1.0454685,.22418577,1.4274535 +1.0853784,1.8472413,.91663387 +1.1373421,1.6138822,2.7626485 +.70268774,2.3218623,.6206845 +1.4638354,.38498652,.16250991 +1.3840683,1.0777221,1.9042016 +.74801286,1.1345882,.72175623 +1.4114517,.89940929,.67063535 +.36229844,.10034746,.55591852 +.47919559,.25943026,1.1627019 +1.0795177,.09586067,.14750659 +.33442453,.71724511,.12527435 +1.5937037,.1575727,1.0746279 +1.5679463,.07815147,.87482273 +.66779756,1.5797549,1.322209 +1.3833304,.57945378,.78761983 +.8842052,1.4447221,.8820593 +.51534166,.21199516,.33655256 +.70952028,1.1346001,1.2434666 +2.1079305,.22132282,3.4943822 +.50317527,1.0274952,.60431304 +.61037805,1.0390077,.44361424 +1.3853104,.31856208,1.8059237 +.43685152,.7860609,.3041565 +.52497876,1.5137596,.22619682 +.66471062,.64817452,2.0666915 +.87085734,.02574293,1.1388561 +.27490386,1.4997898,.5281436 +.6265126,.98439014,.07613651 +.54059876,1.2158871,.49481956 +.93547785,1.2730883,1.5981827 +.52505724,1.0628474,.85068507 +.90635476,1.4233988,.88057221 +1.5471187,.71619826,2.1448931 +1.4060128,.61842516,2.0574099 +.53948604,1.9555385,.72176103 +1.3414484,1.6142588,.78344217 +.55302179,.41499001,.22202136 +.9631273,.71159569,1.1322477 +.74264419,.71170298,1.1947662 +.46573197,1.2433374,1.0828093 +.49889556,.07309822,.12808295 +.5083689,.91754503,1.4322816 +1.2526669,.02988143,1.4876507 +1.5312513,.18596053,.37154981 +3.991863,.44112696,1.2721842 +.71150802,.39363396,.50326346 +1.3873793,.50480027,.23234094 +1.4434274,.5631677,1.2089595 +.76787025,.67557374,.62927934 +.4557173,1.3254478,.79903985 +.75976052,1.2199489,1.217904 +.87313594,1.2840765,.14017724 +.58103686,1.0632762,.64048378 +.52426083,.03465077,.05857596 +.61060105,1.4651899,.82272706 +.6446072,1.0458616,.56284555 +1.1088088,1.7392168,.51447602 +.86352025,.39863528,.7634151 +.56482655,.10594373,1.0579243 +.78451772,.82663221,.83900828 +.94557071,1.1303931,.40370184 +.47679562,1.1638472,1.0962689 +.48254544,1.1034665,.62454415 +1.4630534,1.3452933,.82947281 +2.8533363,.74682799,2.1282434 +.58921523,1.6119856,1.2922826 +1.4587716,.03736728,1.0160198 +.34995954,.00532628,.31523174 +.89280665,1.6880361,1.49823 +.6938972,2.0199124,.5980802 +1.241906,.60291731,.2126449 +1.0954483,.73517031,2.2937877 +.81732802,.28128586,.85578375 +.83031076,.67634353,.16676756 +.79135343,.03777475,1.6399348 +.62661499,.60488698,.26279088 +1.3743714,1.0578869,.364919 +.833931,.75063529,.8923276 +1.5726636,.21429495,1.196038 +.72391665,.53313258,.25322633 +1.208745,.19760045,.68810807 +.60934744,.10480829,1.1030018 +.58522403,.73725615,1.3246344 +.89016746,.88946636,.43350342 +.48820528,.3805061,.83500141 +.4297658,1.231536,1.2204312 +1.6461633,1.538325,1.4071213 +.83947659,.06124618,.47947919 +.79767673,.56361657,.538122 +.34953817,1.8948246,.43589231 +1.2818349,.64482133,.20255996 +1.3724901,.33621123,2.0690867 +2.4003298,.53268261,.33738389 +1.4816329,.19401285,1.1859429 +.73331442,1.1681777,.35500659 +1.0459517,.20289154,.54856172 +1.0621873,.4661652,.85006601 +.47793599,1.3325274,.4706561 +.87934645,.16877253,1.2360116 +1.6038786,.81991096,.28910882 +.51997347,.21847633,.55884577 +1.9690392,1.092268,2.0568858 +.93440108,2.6703496,1.0266275 +.70377923,.12289433,1.1731465 +.62473004,1.0187202,.56843792 +.72470362,1.6656731,1.049772 +.88394423,.57127984,1.1791527 +.8372978,1.379918,.41153389 +.88204395,.57073581,.46724358 +.43856063,1.5119856,.24138485 +.6549322,.95762571,.92328187 +.47308422,1.8918858,2.0353819 +.6749827,1.007363,1.0497488 +.90136678,1.4345008,.91173919 +.7671215,.97334048,.47734208 +2.2378604,.10840215,.98670314 +.57554118,.43886792,.67595196 +1.002646,.11217649,1.01025 +.25936666,2.9854866,1.3214613 +.98669429,.08847769,.6146437 +1.2468471,.15455297,.96974414 +.71378332,.62552453,.89217018 +.82422516,.4755169,.96783279 +.45212976,1.6167388,.44424829 +.22493069,1.1961572,.07215611 +1.257747,1.2365517,.61650518 +.77910811,.05892446,.56285606 +1.2456662,.022067,.96377862 +.77602589,.11901841,.83798569 +.80400323,1.0575896,.76836702 +2.3619938,.36193607,.95739827 +1.828248,.77379734,1.2590553 +1.1451308,.91895511,.30188878 +1.2226409,.41331188,.69811963 +.97774434,1.0963867,.64615906 +.76147487,.02785045,1.0126195 +1.0661696,.18738818,1.6507769 +1.1850685,.17219447,.18348014 +1.3051773,.12683918,.23577622 +1.0425028,.41216506,.49696956 +.59416761,.37194101,.03234388 +.83825375,.13980548,1.0157595 +2.5042124,1.2759245,1.3024828 +.30421809,.31585088,1.0925389 +1.7283728,.50831297,.96666455 +.84472421,.39778306,.3795518 +.78319825,.0830342,1.3407127 +1.7244531,.63071053,.48131843 +1.857915,.12823773,.09420429 +1.0357407,1.1936068,.52643388 +1.2930085,.94215536,.05412738 +.72332353,.44775876,.50404987 +.9373802,1.7495234,.22272624 +1.4143267,.06885187,1.4332491 +.88335149,.23728397,.48994527 +1.5229995,.43862514,2.5227123 +.70311323,1.6490637,.47463242 +.41256329,1.4864745,.79094142 +1.3356388,.83223185,.91172944 +.33751597,.53247834,.33840722 +.91702848,1.01092,1.1798591 +.36719506,.6790981,.93872949 +.16411107,1.471106,.01614905 +.86400898,.65484942,.53729751 +3.8692761,.1483774,1.2875354 +.68702793,.90851631,.36060848 +.82475069,.97229253,2.345284 +.66178315,.86156584,.18010852 +1.5967634,.77296949,.51400252 +.53847291,.8463113,1.2008568 +2.4766107,.46635484,.09817856 +.36565497,2.3576037,.99140594 +1.0436286,.02987822,.60278547 +.73103795,.13637029,.91806301 +.37191445,1.7763077,.42694942 +1.0847149,.28514119,.41533468 +1.4350686,.13071088,.1165278 +1.9520883,1.1822264,2.8691902 +.96883439,.86375921,.95740741 +1.8901199,.178274,1.3351259 +1.199521,.24819645,.07651402 +.83803661,1.3172398,1.2483295 +.68358601,.5471665,.49777173 +.63269993,1.1597731,.28070915 +.62125609,1.2631877,.29338228 +.71236952,.47694447,.04243221 +1.0580347,.71978184,.56682954 +1.1817816,.34355135,.16432732 +1.106979,2.3909734,.44972189 +.79721994,1.8416681,.47852612 +.34508559,1.7920442,2.323288 +.71572172,.40836947,.78735382 +1.1161241,.68071233,1.1666931 +1.5474756,.65580423,.1338391 +.97362186,1.2186103,2.496491 +1.4267909,.56076372,.12166072 +.89849915,.79797448,1.2576265 +.77437377,.32552722,1.0977182 +.88723787,.53865033,.88109871 +1.0978626,.27276891,1.08078 +.55064337,.49449589,.11528343 +.46867539,.0514478,.05228905 +.7718102,1.6110437,1.4360817 +.57223835,.79548197,.21394492 +.47381942,1.1545643,1.2543106 +.86010118,.58195955,.28640985 +.72847957,.98453732,1.0776584 +.70900053,.71672542,2.069007 +.57984694,1.3735443,.81129756 +1.099648,.75954867,.64702908 +.50666775,.02357712,.61229098 +.4990709,.25835247,.44941247 +.67968413,.86853854,1.1727195 +1.3012817,1.7540138,.78846376 +1.2051711,.08008708,.94406509 +.56981837,2.6743195,1.7097135 +.30699211,1.5582088,.79962891 +.50606779,2.0013878,1.2770982 +.30365369,2.0119867,1.1092574 +.6103746,.32426407,.36594751 +1.6937399,.44714176,1.7625945 +.4717961,.3637162,.54525523 +.82295108,2.5088434,1.2114163 +1.2061253,.08453426,.84097306 +.85579705,.67218438,.70763104 +.36922946,1.3392484,.31830209 +.79829047,1.0066112,1.1111487 +1.4970165,.81751354,1.4169178 +.94354833,.63524102,1.3368165 +.57972527,1.7288352,.8366352 +.80256456,.14890319,.56014495 +2.6913045,.14131887,1.5374151 +.54650627,.40207364,.96811656 +.48871171,2.21822,.42869705 +.71580403,.92019788,.93061494 +.7241809,.96970958,.21876985 +.28895708,1.2737369,1.5768624 +1.1821343,.74723713,.20133356 +1.1543441,.04100734,.21648918 +.83555117,.68427291,1.0627761 +1.5580242,.10172883,.8301032 +.5462862,1.2238103,.78314706 +.92337807,.11665962,1.4048202 +.60895694,1.8854912,1.1447044 +.77575634,.95719666,3.253515 +1.2648751,.52413658,.55520685 +.61030208,2.0799079,.99979933 +1.3519899,.03311364,.27088162 +.72281504,.13399181,1.9903205 +.48107945,.00231679,.87502908 +.6133232,.19911569,.27756964 +.55395102,.57488939,.06023633 +.51275397,.65959267,.84639174 +.60806713,.83913924,.23475728 +1.411252,.50897584,.57364786 +.82355495,.26559894,.16440157 +.90417219,.8924888,.87132943 +1.4789421,.30710395,1.3594976 +.40362932,1.4851975,.00931141 +1.0556665,.17286149,.09574647 +.79639399,.4314305,.24679582 +.72297975,1.7432973,.6366621 +1.6407127,.13214521,1.865481 +2.9736958,.38660369,2.5738052 +1.0218461,.28835531,1.1262981 +.76586796,.23745612,.66924095 +.29332538,2.1765541,1.3568972 +.38065747,.41650995,.72765987 +1.33772,.12933167,.40990835 +1.200581,1.0706377,.10080969 +.57467767,.37448329,.78344972 +1.9335454,.15913557,1.3911014 +.60744744,1.3358146,1.7234583 +.63574331,1.8474407,.24709112 +1.2019811,.46533433,.38414519 +.40948594,1.395549,.20715837 +.8828242,.92842971,1.3671507 +.35397414,1.0398731,1.2952911 +.53901237,.09404883,.09354601 +.76338702,1.3835302,.26502505 +1.5025887,.13213565,.20275981 +1.4214137,.34161868,1.322055 +.32211141,1.0279524,.07566004 +1.4174581,.42796029,.86016124 +1.5562175,.21120711,.6235261 +1.0809112,2.8399442,1.0053982 +.81571307,1.8376957,1.2673237 +.47033158,.01235731,.066119 +.71102385,.8589317,1.6055688 +.43381635,.16620366,1.2512336 +1.2373213,.19977962,.82809133 +1.0362287,.20756707,2.1110637 +.73846489,.62504956,.38328062 +.42528377,.39374858,.20429117 +.45577057,.51244582,.22451509 +.63086047,.98132499,.64555289 +.94690737,.57909859,2.0181844 +1.1986968,.22215104,1.8067702 +.62574078,.93097353,.95330643 +.87479946,.23435874,.71213601 +.47631751,1.1884331,.36599309 +.5317684,1.3417512,.47161722 +1.032148,.23436615,1.7686615 +.54001495,.59231861,.83794824 +.76585836,.58852489,.72692921 +2.3218326,.93147137,.46286153 +.81257999,1.1127,.61725208 +2.2005195,.07697098,1.9778194 +2.2123948,.68718412,.5900238 +1.8824832,.19912412,.64112098 +.58397105,1.8243165,.41045376 +.92239873,.45120117,.53844193 +1.143251,.55093212,.46855741 +.4546048,1.241644,1.7262648 +.41126702,.13981923,.37504477 +.69505715,.10889989,.19020007 +.76885013,1.5745898,.2200689 +.64150465,.58666483,1.521657 +1.5313251,.11064605,.73817619 +1.9141819,.94966692,.23221038 +.81503599,1.1181619,1.0962103 +.39701801,.84148844,.2251991 +1.3343032,.55290669,.82825634 +.79062825,.48566167,.08165331 +.83901592,.56383841,1.0038318 +.92583014,.36982208,1.5350214 +.60478349,.79866432,.22840402 +1.246987,1.1398971,2.6415363 +1.675111,.93402342,.73528956 +.69963073,.1353035,1.0218503 +1.1561243,.82937028,.49544374 +1.141644,1.5970828,.64887419 +.62675276,.87492544,.48423693 +1.3480874,.01480339,1.3109109 +1.5266233,.12508387,.58367129 +.97001965,.64655219,.29505986 +.63503625,.62210336,1.7816182 +.38004649,.61740686,.11793796 +.80325473,.10167532,.18541206 +.69655006,1.0567774,.0020899 +1.3273132,.12526114,1.6044621 +1.1396068,.4064872,1.3745153 +1.0772382,.04218752,.06790903 +1.0490038,.88508851,.20138162 +.48392416,.79703345,1.2382053 +.88368843,.33937302,1.7167114 +2.6757717,1.2491426,.06274491 +.66980076,1.0014727,.21347846 +.73182142,1.3469741,1.4407031 +1.8120535,.17479906,1.3045619 +.94401832,.12286764,.8840116 +1.6664981,.3536808,.58015187 +.67524707,.6800591,.19199291 +2.6649518,.17616225,1.9453187 +.43043872,.28385407,.19684356 +.78978975,.39550233,1.8877091 +.77735852,.21011299,.28776255 +.98713347,1.4689809,.24146622 +2.3488341,.50194693,1.2655873 +.72017138,1.2882626,2.09121 +1.2331547,.7788618,.67753857 +.9156385,1.0079632,.07835778 +.45889208,1.2875685,.36286596 +.49854342,1.7825759,.5820384 +.78121774,.50154669,.48662252 +1.2263558,.26361918,1.6329128 +.64277569,.75626059,.82784375 +.95584508,.51426443,.13760818 +.67812284,.43967828,1.6180945 +3.697284,.16316742,.32513439 +.94043924,.55024803,.58555328 +.77433888,2.1977381,.87626422 +.33575533,.68660874,1.1714152 +.93463782,.57954517,1.2329778 +.8839913,1.6887295,1.4088259 +.40921527,.36279502,1.4929206 +1.1229595,1.4986624,.76558912 +.46673697,.26765876,.45416712 +.91616027,.33864027,.19326037 +1.4034146,.46553501,.59985358 +.76880281,.00998697,1.2806981 +.89576952,.7582023,.60726983 +1.0972649,.00270175,1.2788783 +1.2500836,1.6947561,1.3171168 +1.0405417,.39607641,.03830056 +.50084021,.2744011,.20511774 +.42194322,.24414397,1.0993593 +1.3768829,.5601242,.50299922 +.43380104,.47996529,.00094829 +.80200775,.23892221,.07515895 +1.0109868,.72344494,1.0968509 +1.2307952,.87324129,.7134997 +.90221246,.06352384,.03922664 +.98488534,.60909778,.56058383 +1.1694763,.36725314,.65552214 +.29233752,.16677784,.22614767 +1.5709927,2.0082891,.47922236 +.55766928,.56153902,.61694246 +1.0200869,.10905309,.08134891 +.39989258,1.4076151,.30454091 +.78323542,.73984151,.07425088 +1.2961182,.77060526,.37387801 +.61957996,.48784115,.87791479 +.38184068,.21845065,.26947543 +1.5598244,1.0361115,1.9451475 +.64435305,1.0896978,.43934735 +1.0128108,1.826591,.26123415 +.47546951,1.3110448,.23586893 +.46859816,.06948023,.89266181 +.94905485,.01743385,2.3284186 +1.2001166,.90601275,.06402414 +2.0503951,.11233553,1.8382092 +2.6713827,1.0897656,1.9244021 +1.1891953,1.5191015,1.3389615 +1.7064524,.15869647,1.5999441 +.61318015,.6720144,1.2963997 +.9365814,.87492927,.61442248 +2.1087199,.50561453,.51640743 +.99375963,.08359825,1.5869977 +1.2448373,.82236317,1.1566015 +1.131376,.79741232,.52166839 +1.4190066,1.6766001,1.2399656 +.59827878,1.2260887,1.8142122 +1.0216096,.27102024,.65629694 +.70190593,.2111728,.74169018 +1.5426969,.83569204,2.9320817 +1.287998,.78827526,.17207239 +.96333145,.38422331,1.8627357 +1.1395696,.96470011,.48947963 +1.413978,.5800816,.93206571 +.76902981,1.2566976,1.0887762 +1.6022366,.10434421,1.529735 +.5470279,.94237292,1.3016887 +.40613385,.52536572,1.808781 +.5626446,.4689616,.32783571 +.91116329,.50808369,.77673454 +1.0612852,.3483177,.5014923 +.7401684,.8308754,.55196153 +.35303142,1.9830817,.17284355 +1.2814961,.28264814,.40946421 +1.9736456,.26077976,.40990844 +.72934401,.79877858,.20572232 +1.8243667,.4509157,.2408354 +1.5197542,1.1558309,1.3806517 +1.5662206,1.1089247,.49289279 +.69106222,.18902481,.83290767 +2.3923351,.10841329,1.56547 +.32963875,1.7508059,.06045727 +1.7754053,.16544686,1.3208957 +1.3402619,.41449136,.22890375 +2.0227332,1.290789,1.1962827 +1.2144408,.75118209,.43791028 +1.348857,.31438195,.73785499 +2.7176052,.1704897,.16603807 +.96524251,.10582197,.18315794 +1.5524201,.63968943,1.4007873 +.74969484,.42006208,1.1519813 +.40880512,.66439342,1.0246613 +.52438498,.75566697,.9219823 +1.2433942,.02148316,.49355672 +.63854288,1.0326456,.0186757 +.5470202,1.6380956,.3494303 +1.1831359,1.0191666,.19615074 +.92773337,.97608201,.30631959 +.32509406,.18129007,1.0795031 +.82030148,.40505888,.34289728 +.46740906,1.4579597,1.1174349 +.83153416,1.3247768,.87294564 +.6825184,.35826646,1.212586 +1.4115591,.2702153,.78267597 +1.1440039,1.0144311,.5585576 +.70112483,.96776571,.36673872 +1.7277149,.47006469,.71571482 +1.3688421,.81417867,.06068921 +2.6050471,.32871954,.18025264 +1.1571215,1.0417712,.56741384 +1.4731413,1.3159413,.02916136 +1.0294387,.27961584,.26896733 +.30803912,1.6050111,.96380942 +1.0318074,1.0806002,.4615893 +.91172719,1.9930449,.37831023 +.83986649,.70346412,.79288884 +1.1546596,1.3905615,.63737898 +.65599272,2.6896814,.36091894 +.64516636,1.4121682,2.7941054 +.3281577,1.1297522,.66646264 +1.187864,.34664362,.345717 +1.5300826,.14573323,.93575996 +2.3228875,1.1242056,1.1422706 +.28615666,.0273279,1.8500529 +1.6455929,.03252432,.44170351 +.89813658,.83937169,.4006193 +.74309853,.42036369,.34662973 +.9102813,1.4231938,.1365761 +1.2772442,.61650934,.06230507 +1.8382231,.40422104,.63548559 +.44576158,.20485529,.1672771 +.88064679,.0181571,.04741261 +2.2814776,.77876468,.4209352 +1.3738391,.263225,.31822997 +1.0561898,.5943918,.66648423 +1.0361986,.15781798,.68469652 +.50123714,1.8511531,.76436201 +.45099206,.65579868,.52639668 +.8373764,.87815438,2.2724981 +1.2631656,.5476739,.55900565 +.731065,.70074074,.4657169 +.58987499,2.7028508,.70602676 +.73825218,1.486511,.09440479 +1.772896,.00143713,.47656213 +.37441696,1.96404,.76949835 +1.0132885,.47766721,.72424242 +.59091174,2.2730888,.47424405 +1.3983963,.0239971,.77644509 +.74554343,1.4576334,.08284144 +1.7014476,.15606321,.30508644 +.92694078,1.0914611,2.0129578 +1.0548045,.04289757,.85111173 +.37532256,.87426901,.18980212 +.76458048,.26357262,.62215563 +1.2158368,1.0231791,.46938071 +.55413717,.54843854,.46423851 +.48048888,1.857122,1.7108755 +1.0460874,.15116433,.5580367 +.84776917,.09730698,.20671423 +1.4368599,1.2487184,.22243829 +2.667558,.62727814,2.8716414 +1.0104825,.17269076,1.0531987 +2.1023304,1.0023015,.88264303 +.64299957,.91725318,.10393804 +.6147925,.01508518,1.5375968 +.63481197,1.3717473,.78636863 +.30099764,1.4086303,1.1093039 +1.385428,1.6843038,.3070781 +1.0946001,.18357284,.8489968 +1.0755522,1.032965,1.3832392 +.60853094,.73956302,.15385147 +.72099489,.04357678,1.3128475 +.79234077,.73690382,.58515191 +.54094452,1.853969,.77534125 +.47794458,1.5491252,.08054835 +.4699013,1.0740665,.30499113 +1.1080614,1.016325,1.1928891 +.9177129,.06345584,.13067349 +.63543775,.24274674,.04753913 +.99740769,.32555756,.74797758 +2.0121432,1.0696534,.76848341 +.96541588,.29882399,.6449733 +.99839555,.19931464,.5828055 +.98928293,.4702838,.67504241 +4.2684954,.90844746,.77808105 +1.3049824,.6107222,.24161404 +.93564913,.92941623,.29254847 +.74612267,.85955168,1.1368071 +.87843829,.06363101,.24227943 +.57035721,.70706411,.50375475 +1.1522335,.111196,.51159035 +.68228803,.4342383,1.2490125 +.38473799,.41305048,.73851504 +1.9325742,2.0157954,.02739136 +1.1468985,.36789976,.24481412 +.64003721,.91023536,.53108409 +1.0346143,1.091969,1.4458056 +2.0494722,1.21443,.45222212 +.48278443,.36159585,.13069587 +1.1515167,.43228193,3.0118711 +1.1663828,.65190552,.4284695 +1.1161712,1.4036263,3.0718028 +1.1287815,1.154062,.85540299 +.27633472,1.6485749,.1212831 +.4686736,.72415183,.11090596 +.55079749,.40014515,1.0288833 +.48176857,1.7820934,2.0274145 +1.0225525,.16262483,.42427225 +.38177728,1.0815807,.42577003 +.55075249,1.1367727,.19347034 +.96202118,1.1572893,.86842305 +.46679656,.34741913,1.4057646 +.34631601,.74065669,.63505353 +1.5800749,.0131655,2.4832035 +1.6499544,.82875018,2.7134594 +1.0006091,.13897669,.76459915 +.49554225,.4966632,.46508537 +.73880113,.51393187,.29432838 +.29216022,.99566048,.93616748 +.77475882,.07481701,.62906906 +1.4839783,1.9046225,.41193211 +1.4554182,.23808598,.46952975 +.47161447,.93123809,.43553335 +1.5334173,.82811025,.11414326 +.77468258,1.1015703,.47581991 +1.5863045,1.3806902,.60997757 +.50738518,.1434046,1.2321107 +.83104639,.55942893,1.5733938 +.99125355,1.8116609,.84913691 +.24122683,1.171526,.39322911 +1.0348281,.22366086,1.2596852 +.49310923,.802429,.19937953 +.27963533,1.7430428,.04533236 +.44175147,.63515589,.79466074 +1.3560503,.13742904,.26698906 +.46788091,.90689307,.77523586 +.82254701,1.0246477,.38937709 +.94321689,.20530004,.15844515 +2.1130714,.10791008,.14545463 +.23490117,1.3966736,.51304142 +.64286627,.38121037,.72643612 +1.4194732,.86309382,.28839185 +1.7527164,.00754363,.72899662 +.65648101,1.4242285,.1681135 +.51693529,1.7104839,.22874389 +.8791587,.6276236,1.4886476 +.38700064,1.0403398,1.3365885 +.65002484,.650459,.44382854 +.55182641,.35437526,1.0336384 +.54656084,.99508956,2.0306501 +.77175453,1.5526195,.29240074 +.66579959,.21808421,.18418479 +.65540953,.94179672,.5663313 +.77333125,.34438121,.44811823 +.61802871,.72562256,.53194892 +2.5731545,.04099558,.21935577 +.83155765,.39799804,1.5750437 +1.1298426,.14194962,1.780035 +1.9481598,.31421467,1.4157529 +.41600105,1.9052732,1.0747008 +1.1441707,.43044821,.91255534 +.34527252,.79056546,.58563175 +1.1315604,.23313178,1.7586112 +.48728148,2.5296928,.25758032 +.26553242,1.2372338,.36781089 +1.8451029,1.4901516,.18167343 +1.2918955,.56752413,.06646844 +1.0700675,.18357374,.83787582 +.44287656,.94459598,.52326673 +.6412194,.69513643,1.0487613 +1.2003831,1.3639603,.54501637 +.5302554,1.5996908,1.2745652 +1.1592319,.7612414,1.7572746 +1.1758484,.70512628,.98325812 +1.1678969,.64419382,1.0937888 +.89381936,1.0729671,1.9658902 +.82678212,.67668404,2.4747796 +.66091115,.22998321,.09152326 +1.302825,.41503429,.36250302 +.62282775,.50683742,1.2321152 +1.1096683,.39039751,1.0790251 +.32025473,1.0765437,.49183263 +1.4851489,1.6754629,.64783771 +.92397996,.10593745,1.3405437 +.98034499,.57273076,2.2284692 +1.9186502,.29941755,.11345127 +2.0551503,.18329412,.62774496 +.60312576,1.6125615,.03202652 +1.3406594,.05104203,.48773196 +.71833875,1.1421192,1.0960343 +.28440993,1.1152787,1.2424555 +.91310079,.03210717,1.1209956 +.93736166,.2947042,.93895888 +.74975913,.34873728,.61376618 +.94165811,1.4913541,.24712971 +1.4482877,.49336021,.06725814 +1.6855749,.3314262,1.0108646 +.42480227,1.2422838,1.2932708 +.49165381,2.5336794,.39795157 +.80840262,1.0894668,.38068618 +1.4051628,.56199314,1.0317953 +.78936407,2.7031107,1.2470695 +.66966138,.70404241,.51756194 +.93042774,.95788463,1.4139081 +.9535936,1.1401499,.12378266 +1.1514194,1.3586764,1.7695247 +1.8769864,.82478335,1.0992546 +.57094409,2.2081061,.79723409 +.8394895,.80728615,.2533808 +.90029434,1.0356547,1.0098096 +.30470234,.16470484,1.517095 +.53988068,.98255149,.53673807 +1.0394354,.84378324,.0606004 +.32785863,.39713953,.95641676 +.99166554,1.0354098,.65419778 +.40164434,1.1737021,1.0483689 +.89458537,.09951628,1.5940365 +.70664088,.84873074,1.3228695 +1.2695231,1.2940032,.6172582 +.51395636,2.1605249,1.4049626 +.37043431,.30816807,.16632884 +.5653751,1.1034205,.29964505 +1.0915672,.09719089,.90413785 +.39113803,.43878825,.39368843 +1.5360678,.20351207,.9133419 +1.3348793,.58769682,1.2769874 +1.7493064,.77208668,1.5861919 +2.3026364,1.6732938,.33638425 +.25118756,1.6339482,.85712368 +1.5073743,1.551164,1.4145525 +.81577766,.69543506,1.993518 +1.1655886,.29011204,.10916723 +.52841626,1.5952404,1.4019849 +1.0639323,.22359381,.77419152 +.6361237,2.8762693,1.8205953 +2.0588444,1.0480512,1.4049091 +.73152768,1.0306189,.27223153 +.80165195,.83652972,.0262122 +1.1410278,.59137945,.95020251 +1.1411218,.73193661,.65131945 +.69020534,1.1416788,.93592374 +1.1948842,.25703585,.93322611 +1.1658231,.33188894,1.8492508 +.41882043,.82715248,.48957595 +1.2445536,1.1029534,.971629 +.62280558,.74687111,.46181686 +.36094185,.82453901,1.9396137 +1.6393079,1.804446,.61538996 +.70384695,2.0485617,.57134785 +.6144803,.81256456,2.457808 +.38108687,1.4562794,1.0330831 +.60597231,1.1439085,.30373808 +1.1018746,.6908924,.57748638 +1.3733733,.02493021,1.8245335 +.66148596,.01866683,.37692562 +.41274971,.89302401,1.6258181 +.37092291,.95806233,1.36641 +2.4527087,.00464381,.09103428 +.97792876,.18256436,.58686376 +1.118353,.28114101,.74063313 +.48655517,.32772494,.10710334 +.31352104,.03538909,.97385848 +.44139995,.63652144,1.1859026 +.60096399,2.0601331,.38711355 +1.1709405,.17942007,2.9800261 +1.133251,.12555498,1.2691901 +.32461001,.65279809,.81355465 +.63560458,.44214442,.35428826 +.75907132,1.2691114,.63113908 +.95896384,.63641532,1.739699 +.43913024,1.1825921,.33603564 +.47753785,1.900455,1.2591678 +.54733163,.18376773,1.1562867 +.73471075,.31320265,.555325 +.73223232,.37724272,1.0340287 +.31548525,1.1623471,1.5760565 +.94527821,1.685131,.45928301 +.72782199,.53314428,.01404078 +.85448683,.77896173,1.5908184 +2.0773232,1.806611,.41623104 +.80030849,.78637754,.38521544 +1.1027544,.11260085,2.2927932 +.814757,.80091013,.80814392 +1.1492001,.02490645,.43480028 +.49747459,.79801694,.26147738 +.42585716,1.9355206,2.2955871 +.39396166,1.1081726,.48370995 +.69781235,.39195828,1.4042258 +.81416584,1.4932452,.61480077 +1.1858873,1.2320564,.09066336 +1.0939137,.99616675,1.0710264 +.87952845,.525162,.70645006 +1.4083125,1.569246,.91733567 +.4260746,1.8907691,.71946227 +.77796841,2.2458519,1.7831719 +.42271001,.87838226,.51695771 +.47595217,.50107381,.29586085 +1.2034139,.20562017,1.5699014 +.69123108,.95071898,.21420754 +.9742353,.20756703,1.6374386 +.67743992,.74481143,.52900754 +1.1887155,.53591212,1.0117304 +1.160987,.35636254,1.190403 +1.1876868,2.5343387,.42400608 +.66349157,.54353032,.02869052 +.62773806,.25438109,1.7655725 +1.3958479,.99282856,.37092944 +1.9973294,.03674034,.83849144 +2.4779682,.00968671,1.6542284 +.54071759,.05031198,.06304299 +.78809005,1.4334403,.30146996 +.54471471,.58338468,.24030663 +.69582512,.19786658,1.1922024 +.8427548,.75195348,.42661335 +1.2525729,.55651609,1.3189395 +.66598411,.41370449,1.017655 +.57965225,2.0917003,.40510422 +.35250174,.60635644,.91702696 +.91663453,.70722644,.13524717 +.64571083,1.3331149,.6074359 +1.0791183,.8731136,1.7201865 +.57692039,.52785283,.73545584 +.49311766,.1489901,.69462955 +.49149255,1.4937363,.83861081 +.44601658,1.1461593,.28675457 +.89628248,.03196461,.07070341 +.91418586,.17085515,.5483435 +1.1686121,.0945755,.3713 +1.3400989,.25319657,.31124677 +1.0628071,2.2756982,.25674423 +.70127509,.9475047,1.2135654 +.90651134,1.1937531,1.280549 +.95616064,.71874397,.61577809 +2.513287,.33645092,.66906899 +1.6109115,.07973391,1.1802856 +.49896472,.90201716,.74059539 +1.6764691,.75579035,.71183788 +1.2648259,.30505275,.4066557 +.61085569,.72278289,.72515823 +.67420876,1.1746041,1.9221901 +.63748943,1.6299354,1.8880303 +.65414591,.21890044,.07492033 +.47999419,1.4369853,.89649857 +.54032497,.38646311,.38278687 +.72125331,.27378391,.76183264 +.34254481,.88973292,.86197231 +.87480821,.62868605,.55291873 +1.3190311,.13387257,.13643325 +.9146291,.42186625,.42140863 +1.0552824,.1769788,.8253 +2.5670345,.01384576,.60200849 +.97763971,1.090599,.88784335 +.84082286,1.0513381,.15756629 +.76102828,.09808618,.16572389 +1.7270523,.41341661,.70354103 +.70030203,1.7838191,.35025544 +.60899917,1.7333904,1.1970326 +.91021824,1.1380478,1.4892345 +.70006665,.82706497,.23133312 +.68879878,.87962785,.12540586 +1.0030459,.39888465,.75802408 +1.5605719,.651999,.57965005 +1.2077948,.6666682,1.7181779 +.6507087,.58101158,.75910026 +1.5847015,1.2197307,.1686733 +.76007501,.24906019,.78158182 +.55960028,.30125413,1.1299188 +.51202551,.88447852,.14949999 +.92447256,.48571562,.59975495 +1.3593897,.22424066,.35693399 +.5221643,.70468022,1.7935573 +2.3486925,.23739627,2.4524542 +2.1941061,.42607189,1.0554808 +.48873376,1.8554908,1.381411 +1.9601533,.55279008,.75409275 +.71348939,1.4919342,.73393177 +.83852483,.72592062,2.3363281 +1.180516,.15896773,2.6686378 +1.5959245,1.3166963,.79285574 +1.1204069,.27933002,1.0185248 +1.3706197,.39038595,1.6693513 +1.2956337,1.3667086,.60698302 +1.1509155,1.0366205,.48324581 +.64349254,.72393672,.76646247 +.79756569,.51541618,.00413691 +.94918137,2.4908863,1.1513653 +1.2315998,.17607896,.98537051 +.68351635,.41525989,.48341351 +.88840268,1.3094315,1.7296102 +.91659174,1.1932855,1.0748548 +.25086187,.49190215,.32960215 +1.4523181,1.8482998,1.4533902 +.7417003,.62107455,1.5703586 +.83794475,1.7941783,1.9470397 +.61227975,.20589805,.0291968 +.34665413,.50671912,.85070823 +.50247431,1.2385577,.10244721 +1.8468195,.57817974,1.8497215 +.78149307,1.3543982,1.2262193 +.88963372,1.4157768,.53179743 +.73370551,.02675419,1.9821871 +.47457922,.23352988,.17065922 +.68700842,1.7333675,.44664168 +.89200671,.28836828,.20254799 +.57712788,.74939143,.38891222 +.72337181,2.6669312,.54766048 +.4866047,.25916518,.03168508 +.84567157,.18610317,.05278593 +.77288618,.64599145,1.0984148 +.56214875,.20576275,1.8421855 +.91453779,.83329685,.95129343 +.52896432,.36364999,.04743623 +1.3532147,.27020433,2.0730233 +.6835113,.57324867,.88454689 +.52812078,1.7166537,.68696795 +.45582184,.49951828,1.8710274 +.87799615,.25821709,1.4145091 +.88369625,.78636772,.0612852 +1.643179,.03130279,.10717844 +.56591588,2.4149311,.26594159 +.51519818,1.1290402,.90755014 +1.1494277,.00484117,2.057756 +1.2994819,.63738906,.45036333 +1.1880579,1.6499057,1.9260272 +1.0642523,.68713617,3.820991 +.99484198,.24396638,.22937833 +1.1739004,.61584312,.245694 +2.0586076,1.3064484,1.6419463 +.52844248,1.8071351,.63805101 +2.6884068,.15869519,1.6657713 +.74020506,.31278791,.17305177 +.67033965,.65989377,.0836927 +.75298763,.37991684,.10685877 +1.3323883,.28132067,.78787251 +.60768722,.76720101,.34308443 +.60388797,1.5684108,.8587975 +1.668545,.10109098,.97004306 +.43676003,.59170816,.43587003 +1.8358855,.00681134,3.0397032 +.98662336,.70941221,1.2156197 +.60800267,.88401551,1.4071097 +.84397816,1.2076766,1.2596656 +.96064266,.8345529,.55941406 +.33948965,1.4492392,.44709409 +.96201413,.84249278,.43719408 +.96375976,.12438131,.25935115 +.79549473,1.3992999,1.169028 +1.4998704,1.2063243,.0882401 +.8604101,.3630218,.14828795 +1.2012124,1.3685949,.27422172 +.87995143,1.1145809,.27911609 +.67361348,.1410088,1.4427261 +.94837003,.36744068,.4638126 +.53041497,.3136323,.3076487 +1.5753543,1.2884997,.61472664 +.62358055,.17584715,.44558019 +.778198,1.8218977,.41728523 +.95442488,.40144624,.46080325 +.62272592,.58912782,1.5048754 +.76628286,.15726326,.87410797 +3.3575274,.05270002,2.1490174 +.29228162,2.2220545,2.5880334 +1.5987495,.74929141,.47412163 +1.7741641,1.2078298,1.7799851 +.60070114,1.0250579,.65943635 +.52006342,.47995808,1.0161313 +.47733637,.36299471,.48573145 +.71201131,.38768544,.32302159 +.63534016,.85585785,1.2142065 +.75525451,.73968926,2.0990471 +1.4125189,.7319183,1.1847958 +.35006577,1.9897073,1.0591395 +1.7735512,.77985537,1.1356025 +1.7740371,.29999888,2.4127352 +.49193524,.06687663,.18250145 +.61719551,1.0030238,.23961658 +.48920244,1.2071325,.11913559 +1.0102289,.84225276,.52616019 +1.1322936,.45085592,1.6524379 +1.5190006,.91399867,.94922152 +.42641595,.33193985,.89649251 +.75482875,.5273134,.51581749 +.70985724,.49712005,.83661812 +1.3437725,.72846614,1.2097078 +.36427159,.06914166,.13711422 +1.1982354,.3712425,.56991661 +1.8438349,.344873,.54258159 +1.3246075,.35223731,.45742268 +.92629493,.0641143,.94263029 +1.1394376,.08573734,1.3764644 +.42799282,1.4136762,.7827303 +.48954042,.99103137,.84655718 +.50614987,.13407227,.63942077 +1.194954,1.0464615,1.8143538 +.47616261,1.7736483,2.1571851 +.30700442,2.1298739,.15546494 +.72696166,.27434347,.87767075 +1.5350084,.14038254,.39297515 +1.456795,.00809387,1.7636251 +1.0054051,.58991669,.83001879 +1.0492548,.55007275,.5857449 +.52162556,.37506239,.53335038 +.45122427,.11190141,.86838699 +1.3319587,1.2059718,.62140266 +2.3940932,.56759307,1.6126875 +1.9367686,1.1216856,.99531 +.80250573,1.5144045,.24636444 +.82423257,.66854384,.93153281 +1.1526699,.94559225,1.5296823 +.88685204,.79712025,.36536725 +.46087166,.79352493,.34941154 +.48990054,.80857591,.31155211 +1.5396493,.39382204,.03125675 +.41370831,.79308173,1.3780197 +.992438,1.1386721,1.875978 +.34280175,1.8918075,.53945716 +1.1935115,.0337491,.17670191 +.74830742,.73552748,.31941561 +.66059386,.12314271,1.5479507 +.40292608,1.4259163,.83578856 +.72491451,2.0568767,1.5996037 +.62863179,.54072124,2.3784406 +.32505777,.36372403,.31877537 +.94349891,.24660648,.69632593 +1.6543227,1.1267504,.42976208 +.46149811,.35489715,.9891917 +.58851957,1.293448,.64117617 +1.3064155,.18238765,.00321686 +.90138448,1.4590424,1.1961659 +.4777755,1.1349815,1.7191518 +.79512337,.75783248,.03468261 +1.3139934,.29528575,.56688195 +.5636978,.49321043,1.0147302 +.81439482,.55811862,2.3006877 +1.5005356,1.3253113,1.7681298 +2.0549138,.26436838,.97229313 +1.5180193,.79366875,1.0234371 +1.1260188,.22692683,1.0447367 +.63096563,.58062177,1.1985539 +.67525266,.38983025,.26675001 +.95784593,1.4140834,.33776395 +1.3937772,.6091124,.5222076 +.57627153,1.7161298,.95762825 +.86300345,.19377264,.53720987 +1.0027543,.38116179,.12753994 +1.0722688,.02850552,1.0293963 +.60633853,1.5618782,1.1854483 +.71739293,1.2405596,.00721156 +.6244246,.15620934,.30794767 +.56704173,3.3090222,1.1092502 +.94481311,.08135694,.01373316 +.40548893,1.2282689,.28599779 +.550434,.3024723,1.0065651 +.99698957,.35624428,.88221211 +.8913062,.25341494,1.7333202 +.74751688,.83028466,.42732522 +.87845493,.12158808,1.5026842 +1.8694145,.64424922,1.5024074 +.53919043,1.2633175,.60696186 +1.4431728,1.7525686,.11367903 +1.3140973,.33225499,2.1578483 +.33258012,1.1346497,1.3784516 +.97406587,1.7946386,1.5079277 +.41400326,.84884083,1.1128511 +.72375703,1.8581688,1.1626356 +1.2218151,.21345918,.60856468 +1.2015434,.02503714,1.8376935 +1.0856388,.25809706,.97069041 +1.032256,1.9095888,1.6628914 +2.2337756,.44699747,1.9791753 +.73400203,1.1753744,1.3630934 +.50770308,.23684258,.44282296 +1.0795875,.22612773,.4697697 +.81362916,.66911032,.5168045 +.60069493,.70699378,.54549114 +.67247358,.84850941,.28915285 +.46547208,.9464522,1.1310393 +.50258648,.58489315,.91878704 +1.0687627,.7194567,2.1395889 +.24218562,.86866552,.62744271 +1.2723191,.58009706,1.7754099 +.47696321,1.7833789,.12063002 +.66599045,.69951131,.62838584 +.77534754,.4454217,1.2335499 +.68713896,.89895969,.7430472 +.87311823,.26106038,.31382163 +.80489444,1.4521632,1.8138496 +.32091803,1.0874173,.08440456 +.44919518,1.4181503,.80441259 +.72144006,1.0319338,.94142875 +.93077483,.81279501,.52101697 +.90349427,.73160943,1.0809174 +1.0464422,.30229002,.64887233 +2.174541,.21096003,1.7423175 +.69890221,1.4407369,.70427317 +1.5821873,.38896576,.62151451 +.92318619,.39660065,.99164339 +.83151383,.63845826,.72732532 +.57863785,.44928518,.31348702 +.73125025,.44810145,.0422412 +.6315864,.76586583,.82989243 +1.5323321,.69963089,.02459977 +.93807798,.68491575,.37898765 +1.0849491,1.0202752,1.9570041 +.46481536,1.7427331,.48606527 +1.4904177,.46273606,.98658479 +.91145304,.23179715,1.0938464 +1.5705051,.72957797,.04032056 +.72073388,.323442,1.1225388 +1.2896262,.35635744,.48033501 +.59209858,.42571037,.04626193 +1.9468453,1.0091386,1.3211468 +.65942438,.15617648,.43895863 +.7197266,.14637773,.54124454 +1.2616304,.61638064,2.3092912 +1.7194066,.07910649,.0171561 +1.1728823,.06576158,.27260283 +1.178235,.14722577,1.893873 +1.4946402,1.1196354,.26602198 +.87438761,1.0524734,.6830609 +.68250533,1.4612483,.43362929 +.36292655,1.9966891,.80340552 +.97754112,.22678188,.77891155 +.60362062,.17147792,1.0724193 +.32936889,2.6090021,.29824619 +.36650635,.58195187,.05810484 +.75862493,2.4890647,1.084385 +.31312494,.13418219,.35760294 +.7531402,1.8247386,.29183553 +.65386265,.56197259,.49631972 +1.0209483,.62130162,.88442433 +1.7041699,.20173882,1.2707809 +.72575136,.62150081,.76565343 +.89388989,.90223633,.20314891 +1.2647742,1.0897226,1.0145383 +.59751131,.8722623,2.7083138 +.61716314,.37257637,.19056781 +.59519754,1.0459134,.12575025 +.63981722,.11888664,.77523651 +.41345374,.23986086,.08691214 +.69813676,1.1712556,.03555701 +.78177976,.32193314,.55542183 +.69648512,.06832362,1.6192389 +.81148458,.39929631,.57956036 +1.0467908,.16713058,.41928245 +.45318718,1.0389468,.18069572 +.84032108,.16311076,.1725007 +1.3832104,.06698469,.00280828 +.76492736,.12525025,.31358053 +.48380921,1.442617,1.0712685 +.86849231,1.2312023,.29652772 +1.8269522,.08204003,.31479329 +1.4035466,.57595342,1.36266 +1.0171043,.68316211,1.2607516 +.57899452,.33058147,.30854229 +.35642526,.19507318,.25057413 +.91618242,.32949686,.85998496 +.76468664,.7693867,1.7691811 +.26640587,2.0272446,.02471695 +1.3566355,1.8343287,.26017656 +.52298333,2.0016412,.96382502 +.80027765,.07298509,.34975264 +.65605013,.90712399,.61370039 +.59543099,.05371511,.70051053 +.88211245,1.4050728,.53734049 +1.1828391,.25943541,.55897985 +.5952043,1.188573,.48927583 +.98908829,2.0058474,.23691671 +.49136211,1.3654443,.65359489 +.89499148,.06356465,.6223192 +.8005407,.5884852,.7263254 +1.5007864,1.0164661,.18861743 +1.8425607,.86408449,.67446779 +1.4853624,1.9916371,.60934808 +.65898705,.18673928,.35663711 +1.0321012,.87612583,1.391669 +.6936586,1.3133032,1.5380818 +.71146554,1.0401044,.15888567 +.73186718,.55532489,.20368104 +.73533569,.37358099,.41005806 +1.3549965,1.2568271,.29502828 +.91118319,1.0145647,.48953431 +.54474266,.12517183,1.5560748 +.81168541,.70807056,2.1532505 +.45803125,1.2001805,.06508532 +1.4269073,1.512059,2.0351078 +.33497963,.75293831,.79614444 +.56933346,.5201233,.57159944 +1.0272657,.99390728,.04066449 +1.439546,.96044022,.83302988 +2.3302515,.42067336,.48693694 +1.1587385,1.9582104,.70641621 +1.4762173,1.4705082,.55338626 +1.2025729,1.1639676,1.2485232 +.54076325,.85489809,.67494229 +1.6252266,1.0205334,.50929596 +1.2509275,1.0047716,1.9474395 +.36984292,.87128256,.39287949 +.94039739,.75144456,.72905874 +.38685074,.93054577,.50986579 +.87317241,.43580583,.02265537 +.7096091,1.4138902,.7705054 +.72627927,.51280071,.39773993 +.24170949,.88923323,2.4745543 +.75285388,1.0495725,1.1584143 +1.3218669,.93270937,1.0433342 +.85006625,.77579222,.59714777 +1.3160272,.33010145,1.2798555 +.83174933,.25832792,.49992366 +.49907556,1.2944199,.58335573 +2.3478062,.69544466,.45468554 +1.4777074,.34826434,1.0914386 +1.0007031,1.2520578,.55110437 +.49253568,1.5411757,.58908952 +.80997997,.96701726,.63465745 +1.0613258,1.0024787,2.1378798 +.28815223,.04347451,.83594626 +1.925715,.50596209,1.118761 +.51606925,.89523548,1.2792245 +.99696046,1.0470794,.29138534 +.44768791,1.365467,.13126814 +.65282159,.94493765,2.5607962 +.6275961,.79185208,.90060857 +1.5936973,1.1587643,1.3504793 +1.2719152,.29095273,1.3727177 +1.0399944,1.2466256,.24295412 +1.3706366,.61672684,.91859071 +1.9170133,.49854702,2.6856529 +1.0952387,.15668048,1.2308649 +.48331887,1.1545546,.34019656 +.90145925,.32118297,2.4325944 +.76534113,.51727165,.19086518 +.62378288,1.2151993,.1645496 +.60079451,1.420214,.39835077 +.96840636,.56327342,.45878013 +.84413569,.95572414,.92900891 +.70337643,.47169665,.32630521 +.47401446,.77416171,.10711903 +1.1920274,1.6270101,.85645251 +.78019572,.8553203,.9963774 +1.0615187,.61328627,.35068808 +.43304008,1.3454206,.02152946 +1.3213921,1.246889,1.5686561 +.48361906,.02109737,.08373967 +.996764,.16946663,.71111438 +.52946165,.23775675,.44872824 +.81417623,.51601968,.4091413 +.34753042,2.7580799,.04345602 +1.4599607,1.3814174,1.5028087 +.92300984,1.274834,1.0505859 +.3481651,.12732682,.3005627 +.83422352,.82425824,.24685912 +.6108001,1.4967859,2.5773395 +1.9339821,.18948945,.66331034 +.60316841,.58647182,1.6843102 +.69067965,.69755722,.82333125 +.59100321,1.1671546,.22917028 +.96929465,.09243601,.92970369 +.91654415,.34543981,.19879246 +.7484514,1.2641729,.16754047 +1.7344668,1.0753456,1.8321519 +.4121837,1.3602971,1.4610675 +.37019066,.86337307,.29000083 +.53769082,1.0074698,.12534388 +.94731916,1.0292334,2.9782591 +.83162581,1.2225065,.83767197 +1.3312695,.54163182,.41044437 +.76735665,.95863885,1.5723519 +1.6011103,1.2287313,1.3270942 +1.3052657,.03681421,.59111048 +.49197784,1.3232634,1.1437594 +.5953639,1.0475841,.67567214 +1.1737809,1.5649122,.55840628 +1.3131203,.23329632,.20478058 +.74782729,2.5926104,2.0491921 +.38216215,1.5324399,.47211606 +.40125806,.87341626,.26051452 +.39987115,.36087647,.14011668 +.5666623,.94822857,.44977501 +1.4797849,.50961553,.06406053 +.99611968,.63999166,1.428446 +1.0551408,1.3082819,.08705169 +.71227826,.5185779,.10907808 +.82261546,1.1072654,.57310855 +.99842503,.91123745,1.0799516 +.87809696,.23906039,.88172693 +.50288779,1.3617175,.3418556 +.95295269,1.562058,.78629255 +2.7234312,.29414712,.67455478 +.7370645,.93632718,.47354659 +1.0500325,1.409717,.40062195 +.66486241,.87381693,2.2794127 +2.3569356,.83426258,1.6234417 +.5076716,.89190532,.13925222 +.7572057,.39724112,1.9143931 +.56144757,1.7821917,.26955255 +1.5247189,.09292487,.46469418 +.29346818,.67144854,.21088867 +.78803458,1.488415,.24005871 +.50993577,1.1054069,.50104449 +1.1607318,.76251818,.30176278 +.56555874,.52610993,.37261657 +1.1788194,.42819043,2.0228921 +.53884741,.17662576,.22517526 +1.0084448,2.4428615,.12215864 +1.3838012,1.7195361,1.2829942 +1.1390503,1.4477992,.33903222 +1.6437505,.35125,1.8270376 +.47254994,.11145411,.43188625 +.66578155,.25418665,.63631236 +.91543214,.28352532,1.6741926 +.76191339,.96797864,1.3065976 +1.4397189,1.1397028,.13548688 +.74271116,.10228858,.25891571 +.70096581,.00922687,.11733908 +1.5308516,.30461089,1.1467442 +.99722743,.57739022,1.0003411 +1.3857732,1.6270209,.65392729 +.73096967,.23018536,1.2535306 +1.1807986,1.4453475,.23849508 +.9288914,.97537931,1.0930596 +.57524511,.30649483,1.8652369 +.61649469,.19950321,.58707618 +1.9384988,.71492442,.32818767 +.56958827,.28960964,.51429393 +1.2609641,.40900811,.39077396 +1.0902713,.03413539,.55848464 +1.3282264,.70398145,.88625385 +1.0777222,.32643441,.71334208 +1.5152068,.07746257,.23761335 +1.333914,.21752729,1.250436 +1.2054456,.22449181,.06649003 +.50607228,.76098679,.70745847 +.63287197,.21559857,.13804756 +1.151726,1.5255851,1.7797627 +.54912816,.95858698,.5213518 +.41638165,1.4450781,.3301497 +.53322704,.40568235,.98018824 +1.1656267,.04915933,.39515761 +.32730152,.34099731,1.1241121 +1.4824366,.02899979,.75326052 +1.1761408,.13205002,2.5224223 +.61238089,.1248016,.10122473 +.80558,.39447685,2.030183 +.33612248,1.2833863,.93289872 +.57377796,1.5005703,1.1597261 +.89691781,.27918236,.32119672 +.42406013,.40518992,.73881294 +.69908572,.53532555,.68003402 +.50907845,.93594389,.49087836 +.91075036,.1618465,1.0613433 +.87877582,.82534857,.40100624 +.35316794,1.4833912,1.1948392 +.34201298,2.0002356,.3514595 +.74608171,.80514207,.56864264 +1.0666116,.18519163,.36467248 +.35761865,.23583789,.13307658 +.82356057,1.7176375,.31859025 +.70998715,.18310472,.22416639 +.4049266,.76859745,.28128464 +.53091517,.81663986,.66548068 +.60661893,.10855219,.08716701 +.38130467,1.1432594,.12249326 +.47021226,.42645246,.0358781 +.5682597,.34387567,.90672491 +1.0115689,.64175633,.41885019 +.93382417,.61671907,.17184531 +.44697052,.44817268,.13610301 +.54749776,.83212801,1.0582359 +.45018394,.04708739,.9672099 +1.6704199,.15389464,.6033005 +.94302598,.02680699,.00596875 +.44553419,.52067718,.41090073 +.95104516,.32681562,1.4683092 +.92932238,.22148255,1.0349492 +.81992408,1.5109927,.13850779 +2.1652022,.06080515,.73744494 +.78353579,.57096296,.77844561 +.5766616,1.1846505,2.2072838 +.48161936,1.6219832,.01567498 +1.8139541,.62499975,1.4236573 +1.4169455,.90838388,.040389 +.47722683,.45645381,.47367793 +2.3268179,.15322852,.6138919 +1.0967729,.75158955,.46198051 +.40426057,1.5630693,.14708341 +.79708205,.33346501,1.717926 +.6688259,.20926545,.45116842 +.49344096,1.1736691,.39384726 +.73397819,1.5839963,.42058026 +.72164962,1.2707351,.18170068 +1.1212844,.04277549,.45888092 +.65226569,1.7219201,.01890313 +.39052213,1.616405,1.010399 +.22831954,1.5845612,.5989449 +1.17753,.15118406,1.6108055 +.96413934,.09792494,.12587253 +.83405378,.16309604,.66722202 +.55308401,.15218253,.48865893 +.61694132,.22543639,.50891999 +1.0180483,1.4716337,.70243345 +.5474672,1.13608,.71151493 +.74886504,1.7517921,.45184771 +.60231214,1.3558504,.67622213 +1.3146302,1.2137649,.94755048 +.44292557,.71318586,.00125453 +1.5887135,.76111978,.82361729 +.79135091,.57805689,.14729086 +.43546287,.20100052,1.1642505 +.60815742,1.267193,.26968618 +.46412245,1.1964605,.17939091 +.57137631,2.2623435,.44842613 +.6746796,.42623551,.08183317 +.86421522,1.5927322,.02017026 +.92582717,.53568664,1.1852625 +.68473181,.64104595,.01155374 +.80459039,.70370441,1.0902991 +1.5563472,.58591625,.02559106 +.90287228,.13797156,.37999121 +.76973029,1.0354144,1.259413 +.85849763,.27733681,.29356458 +.48665581,1.18118,.79293015 +.52896145,.50151229,1.1066243 +1.3797251,.33726531,.79880266 +.49974151,.59188436,.96240417 +.40862128,.68972712,.27742723 +.27597992,2.0554937,.30688072 +.84658353,.50644931,.49762098 +.2465515,3.6294092,.50281686 +1.093036,1.0949896,2.2228644 +.36623697,.44587089,.46415853 +.71527837,.71672591,.27244201 +.91632296,.29103608,.3899763 +.22901005,.28744153,.68611947 +.56994836,.28292389,.05776507 +.32411292,1.7881385,.45328866 +1.1813585,.9091251,2.5298489 +.62093967,2.5782191,1.2127795 +1.2367249,2.6668257,.58699881 +.64851933,2.1374025,.12771474 +.66727009,.82575776,.82454734 +1.9739602,.44502578,.87310846 +1.8986133,1.1169237,.72210354 +.59880781,.03200074,1.0928259 +2.0429301,.22038936,.36398205 +1.4227005,.2392401,.73797804 +.73893887,.40258377,2.2419508 +.49429371,1.7572818,.22008603 +.89290196,2.2280942,.78384464 +1.0317804,.15543394,1.2007221 +.8741028,.28665448,.79667821 +1.0083693,.43877198,.60736598 +1.1034507,.3980893,1.0366433 +.87158733,.34679143,1.05624 +.33096866,.78064587,.19704639 +.66106164,.39785953,1.3060465 +.91426737,.65115515,2.0154522 +.66939867,.69115511,.35276522 +.23731434,.82115149,2.1117091 +.70437334,.74486154,1.409602 +1.6664866,.74937851,1.6918887 +1.509374,.67411542,.46620709 +.63681825,.37496371,.76752706 +.78501578,1.024477,1.205464 +.81606537,.39769414,.8171546 +1.6776551,1.4298343,.68074572 +1.4740908,.24774614,.17068221 +.88776043,.05346017,.34344941 +1.0541531,.33508827,.85437667 +1.1788589,.64953454,2.2794818 +.4642392,.54426794,.41450005 +.45474626,1.4616574,1.2242135 +.34326236,2.1146454,1.0524387 +1.0686726,.82637955,.33274132 +.21985313,1.1722897,.55197883 +.7146992,.48420572,.51229472 +.9742243,1.0545114,.80876112 +1.3415618,.71646499,1.2004665 +.9523609,.97769846,.21746273 +.4235158,2.053867,.5270754 +.3972109,.94339106,.18920987 +1.2141952,.7290572,.12639837 +1.994209,.26744415,.54818721 +.31662555,1.0924341,.16088876 +2.7809302,.17944202,2.1304768 +.68981607,.65971482,.31983225 +.97449329,1.043995,.30055395 +.31136716,1.6512172,.16590523 +.34712295,.77094584,.18218004 +.48839542,.03111353,.6607621 +.65073564,1.2715952,1.9663469 +2.6870986,.0712153,1.4723979 +1.4986897,.55163848,1.1106101 +.37753623,1.7185798,1.6504301 +.75511128,1.1103104,1.7058573 +1.500355,.39772063,.02468331 +.68483996,.27909345,.30719381 +.60113717,.41560862,.86943522 +.77452025,.46543792,1.1526178 +1.0023063,.61275579,1.5512075 +.61086156,1.3335049,.42869742 +.46982904,1.3169615,.44954638 +.36774841,.77641378,1.6149459 +.79703807,.21893835,.6622374 +.52271329,.66279697,.92049409 +.60099745,.5863937,.91642953 +.72689302,.85518451,.09642927 +.59494936,1.2459103,.28499225 +1.2193555,.14502946,.10199781 +1.2636798,.73312596,.58183411 +.71169972,.41702912,.59990592 +.6945673,1.5484684,.61398631 +.6146325,1.0755874,.74205697 +.55090365,.21210159,.45974674 +.66250448,1.1555945,.90858954 +1.3530147,1.7443343,.36875516 +1.0045123,.94087852,.61004387 +.71151352,1.4292465,1.4913664 +.6764422,.12745389,.40978631 +.64508453,.30104672,1.4754233 +.49235587,1.2810451,.210461 +.80848375,.14490472,1.0830214 +.69512119,.58558161,.59037334 +.6510954,.96498712,.27273169 +.69616315,.3568606,.92330748 +1.6424548,1.4387972,.40385817 +1.8838581,.79964421,2.344548 +1.1010684,.45312472,.22896644 +.46432453,1.1693966,.19144049 +.83759869,1.7228843,.35311659 +1.0429425,.08179988,.87543799 +.70493809,.89025999,.95513024 +1.1038924,.48719214,.14042126 +.61433186,.1992471,.49505826 +2.1793198,.19577399,.31367739 +.98894806,.5075279,.04774063 +.8983129,.39984356,.34471796 +1.0198604,.33607377,.68048344 +.89897168,.179649,.50551588 +1.0016348,.90060345,.24960821 +.99801541,.7581776,1.0719196 +.41775411,.17362045,.2386407 +1.516276,.69706939,.8113852 +.74322159,1.3811929,.54680115 +1.8801552,.36053575,1.0471624 +1.1614453,.955207,1.8072038 +.36713229,1.1480934,.09973226 +.50365914,1.1646292,.97443572 +.35248869,.23842138,.12194658 +1.2058752,.09606468,.05767478 +.49901118,.55646298,.06311112 +.68368548,.08836608,1.0920387 +.75393894,.73559891,.62498544 +.9043051,.4267446,.81050201 +.83068932,1.0083528,.7488963 +.62228579,.06090245,.35286654 +.84460453,.00631533,.02344778 +1.9422508,.21861475,1.5543727 +1.020251,.29242152,.411764 +.50066469,1.4811047,.1015206 +.55386914,1.0385377,1.0775436 +1.4847189,.02523402,1.2544018 +1.6121417,1.6940002,2.8204137 +.47791639,.29924637,1.0801058 +.59532666,.92552721,.76680598 +.7338038,.69133452,.78227353 +.49769888,2.4139438,.84398949 +.27720122,1.1075788,.12773035 +.83739916,1.2056778,.2616499 +.34265909,.51581809,.68535611 +1.2426147,1.6386774,.66776046 +1.1601619,.6118126,.19800579 +.37986851,.72632087,.62364054 +1.1168643,.65521318,1.9338018 +1.1324477,.08568002,.25239803 +1.665331,.69677453,1.9099513 +1.0938122,.28224098,1.3921985 +1.1787508,.57126699,2.3341625 +.77712083,1.5766444,.81271617 +1.3385724,.49768623,.09581706 +1.0909396,.80497918,.23984337 +.4975206,.72505698,.30262301 +1.4546536,.38128559,.12521944 +1.763723,.55545299,.46688673 +1.0459978,1.1119121,.28121279 +1.3216824,1.0044958,1.2881041 +1.7132933,.06460332,.06671447 +1.2373217,.58620511,.86366835 +.30477458,1.7192658,1.7686258 +.60695189,1.1338563,.53821291 +.6095188,1.3118132,.75573509 +.56318701,.66974093,.36142797 +.91785185,1.194921,.50038957 +.69268709,.37966593,1.0576621 +.41467275,.89891442,.94232691 +.59744045,1.8307795,.48670079 +.43208985,1.1118214,.57264666 +.69040422,.53206995,1.5609728 +.98673745,.5955588,1.9956538 +.30718701,1.9071751,.28874462 +.59625757,.87482406,.18909594 +.47209199,.9431848,.59530778 +1.3588161,.05529573,1.0368887 +.35003827,.53043478,.83678462 +.41908689,1.0717814,.44467031 +1.0438953,.9057514,.30748781 +.61599922,1.0517022,1.0346321 +.9008054,.57797928,.06812855 +.83485683,.15162833,.23683651 +.60933154,1.4327487,.85619552 +1.0042315,.76097658,1.2958673 +1.5031428,.25274951,.40840199 +.39181703,1.1700558,.2443398 +1.1166246,.26190507,1.282746 +.46781367,1.5652514,.86035634 +.90525072,.70637336,.80445538 +1.4932382,1.3882279,.87792001 +.33746424,.0914564,.65990125 +.43042816,.86381736,1.10946 +.64242149,.93986487,.56649151 +.49084033,.88239091,.22042885 +1.5991264,.37464352,1.4242254 +2.0338175,.29870588,.60689252 +1.262518,.7564373,.27079349 +.67663858,.06848397,.77320403 +1.1023091,.27877728,.23000383 +1.4404735,1.4367686,.5504325 +.98998309,.74249251,.21587615 +.98071088,.27599804,1.3083772 +.83435202,.36254031,.4404729 +.68048331,.36537535,.17125069 +.68098803,2.1545921,.87434974 +1.7230325,.59371016,1.5182979 +.4633443,.65203584,.40307805 +.58439559,.6823969,1.744284 +.48137261,.86068266,.54651992 +1.366736,.26270175,1.0327361 +.61684297,.58245916,.18607809 +.45072112,.54477643,1.0102752 +1.0691128,.4910122,.32836758 +.44551374,1.2783563,1.092447 +.73669306,.78390617,.68752237 +.57996348,.3425126,.65665146 +.40829786,.45889164,1.0453969 +.55117647,.36173265,1.1726939 +1.0714506,.77556259,.72689854 +.7710091,.92949083,.87559647 +.5722894,.76945356,.22547375 +1.0461694,.68948146,1.4880737 +.56477617,.38463283,.220192 +.97714151,.04468837,1.6189745 +.79543338,1.6044331,1.6178551 +.43704311,.19891184,.64185482 +1.2934375,1.0185952,.01717497 +.32752241,1.2671958,.81107901 +.40741731,.86355288,.18152984 +.52974372,.78401619,.0378881 +.86889003,1.4039592,1.3687557 +.58610483,.41244994,.16443819 +.84518431,.05876231,.75462313 +2.3973374,1.6755464,.60508286 +.44056261,1.4885468,.77853519 +.61183919,.22365944,.11981967 +1.4368216,1.5814475,2.4717874 +.52518811,.76522136,1.563375 +.48786105,.10337291,.61442046 +.54491768,.59085895,.54837274 +.57868176,.58294331,.910661 +1.0025826,.39939892,.20375552 +1.5828817,.51986543,1.433052 +.43667342,.91593896,.54880399 +.29560664,1.8011603,1.1486133 +.55430568,1.5818626,.28964817 +.80178779,1.1004332,.24085092 +.3412901,2.029976,.26646609 +.5097357,.30199289,1.1461807 +.52667813,1.6705548,.01400578 +1.0593781,1.6700893,1.2707615 +.80548958,1.2151755,.98408684 +.76084998,.40822202,1.5623304 +.39879335,.38255031,.83446815 +2.0844791,.12306372,1.0539027 +.77471608,2.2922551,.48596968 +.91620165,.20480224,.24980567 +1.25641,.44152545,.24213496 +.92566188,1.7215438,.9552688 +.63771357,.90443554,1.2658854 +.69484439,1.4827739,1.8316781 +1.0892095,1.4690356,.49805623 +.60755285,.06540974,1.3303945 +.65630409,.31761006,1.8219823 +.86954347,.36187032,.02828005 +.68640519,.85966134,.72847086 +.36972901,1.015876,.3528067 +.8373073,.59531949,.10387099 +1.37764,.10170539,2.3812053 +.62981338,.17015974,.26966672 +.57355327,.84926518,.09947854 +1.5528826,.2916892,.95044624 +.85232963,.41960678,.98616417 +.66845705,1.5280216,.93121064 +.21684173,1.5466048,1.0653042 +.37215606,1.063691,.74675357 +.78904431,1.5283888,1.1847648 +.83116496,.29384888,.0332037 +.39540558,.50257647,.1981677 +1.1425609,.74896696,.99753016 +1.9737938,.64172552,.03971633 +1.3919211,.55921064,1.0552501 +.97341938,.60206366,.90022326 +1.8630603,.07459763,.61529859 +.71529378,.32822591,1.4289977 +3.3039519,.36527897,.42617365 +.55315676,2.2962724,.84189394 +1.543902,.37803805,.4754829 +.62568771,.44460102,.02491273 +.46862326,.89939988,.6456861 +1.2118851,1.114404,.00419241 +.43166878,.20571355,.54774516 +1.2785951,1.3830337,.44865096 +.61343048,1.0137319,.10318846 +.47163607,1.0008242,2.2689081 +1.7729663,.10461232,.25056403 +.6058101,1.0000608,.40187288 +1.1985779,.94045694,.49288565 +.74590781,.49318724,.00580824 +1.4695109,.21306516,.82287644 +.7546281,.75029885,.8974657 +.8729319,.38405142,.29676111 +.87016514,.03322109,1.5988169 +.78339972,.57149833,1.3212966 +.39926513,1.4808269,.6283576 +.48059832,.37284663,1.3133046 +1.5771729,2.1780175,.57107241 +.59492365,.65874407,.0697789 +1.1992473,.16006303,1.8828331 +1.0885973,.36218333,.09306302 +1.1719505,.58131401,.73495637 +1.0218963,.96613423,.17997271 +.64937624,.76283609,2.6660427 +.44558628,2.3392038,1.4337458 +.42672332,.43075918,1.7601147 +.68061082,1.6575787,.7803033 +1.0915244,1.0247472,.66328912 +.51594159,.99522938,.41080823 +.62520355,.83150132,.34466714 +.93192196,.38439561,2.3222062 +.40119228,1.8767467,1.6199658 +.32558445,.97076549,.51193992 +.60196711,.64298613,.29166551 +1.7378492,.11894237,2.2859589 +1.148306,1.4962075,1.3481578 +1.7369564,.15424723,.00225356 +.65337962,.14565855,.56324451 +.47386477,2.0010944,1.5416159 +.86836716,.37519943,.24787968 +.77730677,.79268762,.04035137 +.79385911,.44272527,1.3184245 +.53410914,.11999727,.41489042 +1.0516504,.07102453,.72126615 +.90144178,.06846733,.50149092 +1.1073897,2.2388288,.80062401 +2.8677827,.28382372,1.2517967 +.32914768,1.0854038,.57360059 +.78090665,2.4090153,1.2475039 +.85710677,.46228034,1.5178951 +.64045156,.95607611,.48889715 +.35362015,.68110968,.89231922 +.6699256,1.1253349,1.0060939 +.37236004,1.5818696,.50304638 +1.1037581,.50848318,1.862858 +1.6888885,.60821165,.12564143 +3.0947714,.2495025,.46880957 +.61701215,.51537978,1.1622258 +.49255046,1.1769418,1.177887 +.32331658,2.3746054,.95185497 +.42935529,.18966837,1.4651399 +.62011365,.9367204,.90074189 +1.0779892,.53363829,1.878068 +.74086086,.74911629,.67181507 +.80685749,.7122127,.67863845 +1.492923,.23235537,2.0810342 +.92143617,2.5980825,1.8643866 +.99517464,.05476165,.13471261 +2.3754143,.38340041,2.1916347 +.66199139,.91115886,.78987929 +.51429785,.25841097,.23553122 +.79392455,2.297331,1.4287279 +.55972857,1.1837858,2.2227015 +.79069459,.27854609,.348872 +.88592958,.68600178,1.4141256 +1.432539,.27257606,.47140777 +1.1416646,.42770422,.37864945 +1.0055697,2.0354305,.12311004 +.47405457,1.8380599,.08637304 +.79097732,.63114539,.17644017 +3.0880118,.14993271,1.2315698 +1.1348585,.61814027,.60169705 +.93633998,.44682476,.06646238 +.60108713,.51559263,.27624062 +.82967741,.65948889,.02279373 +.93152419,.28307229,.66751614 +.38189397,1.7593135,.24905269 +1.1800577,.51692232,.15618059 +.79355604,.27014742,.47802595 +.93314955,.91240605,.95819121 +.74578264,.33708627,.01492556 +1.0589735,.65678828,1.4779964 +.71619448,2.4525288,.71502904 +1.0121306,.08414361,.75614767 +.70803282,.99220661,1.4874135 +.8463686,.17729329,2.5231789 +1.2330491,.96378341,2.3485482 +.50500279,1.3016886,1.3204252 +.97988963,1.3759258,.47633637 +.92763484,1.2461101,.65670437 +.51651047,2.1118294,.730455 +1.2425458,2.4029187,.49139612 +.52164298,1.2998587,1.2340987 +.63245372,.68648292,1.0803851 +.81812364,.43872504,.38595507 +.53696606,.30310912,.44743762 +.52408111,1.3973493,.93490685 +.50686225,2.679769,1.2315121 +1.029732,.65017264,1.0994037 +1.0792463,.62631835,.30491874 +.56021228,1.0535366,.69418855 +.80032531,1.178276,.88253179 +.84924478,.55160378,.88993404 +.3230677,1.0178202,.52911257 +3.0545094,.97726363,.94970102 +.71362742,.56173976,.66373013 +1.637258,.55502621,1.2805935 +1.0087711,1.8156165,.38338275 +.72378369,.77740394,.90122803 +1.6592971,.11377586,.1323437 +1.8451839,1.2256073,.28393673 +1.0578961,.91283333,.39254253 +3.4137546,.0979821,.4666527 +.54949071,.56517456,1.0740707 +.74343709,1.2895147,.81719494 +1.0659496,.92949102,1.0384238 +.45334537,1.0152837,.85732885 +1.2339685,1.2898286,.81483249 +.78852938,.87848726,1.6544941 +.33888392,2.0209657,.4317044 +.93616394,.52853911,.21726293 +.24509336,1.1311479,.74417358 +.84776752,.83739106,.86217196 +.87775537,.40289474,.32745082 +1.0129552,.95355862,.26578497 +.51563883,.30940408,.12107653 +.71049812,.83891487,.31170495 +.5476571,.65122113,1.2110637 +.85807682,.6526269,.84450094 +.7534039,.17572909,.09641328 +.9848399,1.5797772,.48588866 +.74437362,1.6984527,1.3972172 +.56542107,.08479883,.47424765 +1.1462353,1.2979326,.81814031 +1.0812326,.06856416,.21087014 +.76408391,1.1737361,.77691864 +1.0905298,.18552068,.37270973 +.46087568,.83311596,.70288729 +2.3152625,1.2205784,3.0580621 +.71137516,1.1417329,.75787052 +.39855156,1.161248,1.5343857 +.58287897,2.2014719,.53760488 +.84198026,.29595779,1.3680338 +1.9800677,.83779102,.46208112 +1.5757374,.54407164,1.1803012 +.79481047,.87339522,.94081921 +.43707662,4.2382645,1.930213 +.44450145,2.0311528,.14077596 +1.3174095,.48641613,.50666833 +1.1095172,.68295226,.86950323 +.72456205,1.6195586,.14478282 +1.3906425,.10180552,.36781552 +.65891903,.09534541,.20996941 +.74952263,.94037745,1.7344072 +.97529279,.41666602,1.1423323 +.93154593,.19322449,.5708362 +.84152173,.91434144,1.9155584 +.54782173,.28077264,.95517037 +1.2582251,.26982,.38535711 +.55603458,1.2751381,.44932749 +.39058392,1.4853726,2.0418703 +.8209047,.59998206,.75285469 +.71140227,2.9517996,.60756952 +1.7337156,1.2449757,1.0271681 +.86539433,.19526988,.23682833 +.78554102,1.229386,.25137463 +.3722285,.65127449,.37344711 +.88051099,.4211681,1.4354427 +1.7167516,.64106203,1.5274572 +1.1475339,1.4580054,.32295934 +.78528515,1.5022793,1.2995818 +.78726802,.17995582,.81203913 +.50551282,1.4054162,.61656599 +.68913298,.66334315,.24023894 +.98556724,.8048981,1.2288629 +1.8796399,.92870819,1.523849 +.3530473,1.7417003,.44588528 +.40651318,.67845857,.88456889 +1.3349107,.63222018,.57679297 +1.4860846,.42777965,.29728475 +1.0439466,.47445492,1.2083068 +.76195747,.14011275,1.0851506 +.48695417,.13273522,.78092116 +.89368533,.90078764,.31897519 +1.2811351,1.3221387,.50397684 +.27902832,1.4070221,.31616766 +1.619172,.01330933,.49083663 +.57171714,.9039683,.42293135 +1.3998741,.36651513,1.1793952 +1.2033841,.19713823,.22171936 +1.2426077,.64149944,1.0349723 +.22374688,1.1791478,.11390566 +.74048484,.0634742,.54696954 +.64765332,1.3297013,.42173055 +.5090881,.7638163,.35454744 +1.1154199,1.8214053,.41348183 +.48924137,.4404148,.5125996 +1.554408,1.2558259,.77744974 +1.0407054,.94506819,.46710262 +.36332783,2.0379076,.32630747 +.48650492,1.5772282,1.3289676 +.91150133,2.2987966,.2065885 +.63602955,.65746389,1.0516631 +.9228703,.01092664,.63818689 +.32571355,1.4412881,.34258568 +.6860875,2.9223176,.98824587 +.30792762,.00089477,.04660273 +1.307688,.39841579,.14297401 +.58727198,.87639622,1.4576581 +.76412865,.97894415,.01591119 +.94402248,2.6478931,1.573401 +.81061629,.78517297,1.9215566 +1.5766793,.59976412,.4687693 +.80173886,.85681005,1.815692 +.51263423,1.4860041,1.1750118 +1.1852828,2.2181323,1.5031855 +.58198349,.86212303,.62562566 +1.2784295,.92989896,.59587975 +1.9498144,2.1079554,1.2860332 +.76084734,.32822833,.43711188 +1.0178636,.67923446,.18085636 +.41468467,.81096592,.8102295 +.68647449,1.1529841,1.1936212 +1.8105368,.64062072,.05760508 +1.0111726,1.6636787,1.0617848 +1.2681394,1.3513611,2.1447328 +.9048257,1.6077764,.14380327 +.95608022,1.3496181,1.7556882 +.72001689,.03370695,.31530804 +.38878556,1.5092445,.7328423 +.57749629,.80918378,.187291 +.63647271,1.7497073,1.3336464 +1.1452547,.04759004,.42669415 +.82315073,.45976571,1.7350115 +.46950176,1.5284744,.93355641 +1.434708,.62870604,1.1971057 +.90626147,.80128501,.81794729 +.73219455,.08784127,.97258148 +.57161331,1.8279928,.29658014 +.73189831,.11034822,.14846513 +.31292786,1.1652343,.09428489 +.4078804,.85492864,1.5208486 +.38342031,.04675065,.41837558 +.89079483,1.45195,.43646457 +.88721627,.8290196,.63961801 +.34368193,1.0712034,.91214897 +.60491203,1.0301781,.31280446 +1.3998601,.47402655,.00822837 +.50444292,1.4644551,.99070713 +.24442241,1.1770864,.06582938 +1.0547544,.61443016,.54006281 +1.3372194,.05031153,.05281284 +.40611354,.79663916,1.4225326 +1.0642764,.22484156,.18493103 +.42946783,1.6973673,.82465837 +.63592775,.23194346,.19101439 +1.1010363,.27765187,1.0372425 +.80586876,1.4433963,1.6702349 +.66398371,.0861059,.01896047 +1.0270693,.07024151,.97241318 +.57586897,.6257696,2.202477 +1.182937,.30732302,1.5909713 +.65618997,.7968501,1.7030779 +1.1324254,.24546548,.57183629 +.61410327,1.1336115,.80930813 +.56810625,.24012448,.02593037 +1.222234,2.2563156,.66473119 +.78906262,1.6133722,.60660084 +1.346299,1.0260026,.37847179 +.31366726,.88026017,1.1676008 +.3392868,.35485187,.42481135 +.89816956,2.6674515,2.1483932 +.54886308,1.1920035,.57547773 +1.435604,.02076337,2.2094601 +1.0380837,.41177906,.8509581 +.77603189,.54119966,.44939384 +.70950703,.22478439,.78432259 +.38487272,.64784425,1.8008135 +.56282775,.20198444,.39104999 +.42093981,.39656603,.39351775 +.47377551,1.543974,.01048895 +1.237522,.21339737,.80194078 +.66026647,1.0123013,.00055033 +1.2139393,.76162477,.20661405 +2.1967816,.15491988,.22362865 +.68753563,.06937633,.56441572 +.9191929,2.4124032,2.4670428 +.5247958,1.5943706,.70976929 +1.0525568,1.7384391,2.0517052 +.82219802,.41614677,1.5634262 +1.3206938,.87785044,2.0348745 +.76455435,.50521345,.44342291 +1.0667892,.64189258,.64396326 +.99892094,.99643732,.12554053 +.64641191,.97442879,1.513806 +.55061778,.83490149,1.5121586 +1.0625226,.53071421,.2104862 +.55152029,.60958757,.10784124 +.83095249,2.265831,.950081 +1.4047518,.59353033,.25469594 +.59424468,1.887298,.97001469 +.81501998,.93832357,1.2981051 +.83227887,1.0811065,.50739881 +.96271991,.46367056,.70787498 +.67051808,.30738757,.35891455 +.39217566,.65260641,.15548959 +.40837442,.5230915,1.7644349 +.44384168,.65555033,.74036458 +.61182041,.42052676,.03131675 +.70146669,.46718772,.98969561 +.54135833,.03370597,.35436951 +.28330985,1.5633577,1.5072733 +.46422654,.31492926,1.1580452 +1.6910224,.83327925,.00552254 +.41601304,.99109094,.01770766 +1.6077513,1.0718745,1.0583053 +1.150673,.28929919,.54259502 +1.7645961,.10061031,1.1169543 +.92436415,.10144376,.58958714 +1.200294,1.2355125,.59646297 +1.9166769,1.0788165,2.6456182 +.57632206,2.1790634,2.0956332 +.85336532,1.5369299,.85125887 +.76189425,1.3853917,.23983132 +.93617704,.20991546,.28524197 +.89925074,1.3458431,.67162398 +1.4905067,.56774374,1.5831353 +.57296156,.36516611,.21915198 +.75608301,2.5649839,.30770213 +.72667175,1.3817154,.33159202 +.49780955,1.1525237,.81731984 +1.2092746,.64575571,.54117682 +.46485108,1.2275039,1.3277043 +.76903671,3.1981611,.57327044 +.94787923,.36630889,.93720197 +.78943535,.06409933,.91220321 +.43783681,1.9473397,.42694401 +.92301394,.54664097,.20335867 +1.3343744,.92685491,1.224195 +.59965976,1.3537983,.14510764 +1.4916574,.12017602,1.2710762 +.21377682,2.1964068,.59464588 +1.1156842,.061106,1.1916411 +.36390569,.71342062,.55002841 +.8356404,.8892776,.95188715 +.66086717,1.3532083,.08404355 +1.0873299,1.5549363,.65575817 +1.0311179,.74795006,1.0450419 +1.9860201,.27181898,1.2103206 +1.6757816,.40940515,1.6118392 +.43433002,.28256825,.0218635 +.94789402,.27700072,1.2926865 +.76788958,.79799698,1.1409331 +.58851126,.3883141,.33132416 +.50356873,1.5909819,.35578299 +.59383992,.45401439,1.0811002 +.89801333,.07706473,.70701137 +1.0316365,.65993353,.35118446 +.69380681,.01874989,.68309066 +1.026464,.93863408,1.1969586 +1.0115185,.0984216,1.6406096 +.31649757,1.3824332,.62669038 +1.3395877,1.2017974,1.2173037 +.78128556,1.2156125,.67832326 +.74310772,.23784519,.48091043 +1.5273557,1.1515534,1.4321703 +1.1940163,.07416823,.3471668 +.71031033,.20646311,.68608953 +.26322809,.36179535,1.3320231 +.99634727,.39441663,.72049522 +1.5798333,1.7824207,.95512463 +.70998887,.39691984,1.334818 +.54733104,.10249634,.06720413 +1.0537985,.17754575,.2704223 +.81297739,.22909335,.6724675 +.4168107,.7396332,1.1586893 +1.9487723,.20120319,.17523794 +1.0987273,.49345308,.77994546 +2.5767929,.11423134,1.6456794 +.98640787,.76175965,.25840892 +.89566088,.35781504,.89849337 +2.3101717,.67287186,.89245637 +1.6783383,.23706121,1.5655167 +1.3635236,.03343896,1.9587413 +.84051379,.0332763,2.1848652 +.98073798,1.7082846,.76550653 +.50200966,1.3146668,2.8411018 +1.5661109,.08085809,2.3414214 +.67363397,.24656099,.580864 +.69643996,1.3909136,.93853761 +1.890635,.16658969,1.666377 +1.958649,.26874677,.59916704 +1.9538852,.84266535,.79266083 +.44687568,1.0419633,.0880803 +1.170297,1.2713832,1.0759638 +.58558882,.38400174,.49190419 +1.1525039,1.114765,1.300936 +.75440307,.63955295,.43773293 +.46780684,.85125902,.23681736 +.84730396,1.4078483,.07453653 +.7386751,.01347094,.07085614 +.98431024,.01681272,.69133651 +2.9600769,1.4315209,1.3533899 +.68219469,.26663391,.62642901 +.72115865,.26943644,.40473745 +2.0861161,.13192889,.78606624 +1.1502972,.09123577,1.4995319 +1.1251038,.01073414,.37790273 +.77861104,1.1769734,.5907576 +.44337079,.62069513,.75965439 +1.1365797,1.4931628,.0854456 +2.0023245,.03914616,2.0049396 +1.0547572,.01705092,.20552541 +.84789405,.30330061,.28896901 +.48087408,.02609732,1.1724326 +.43880677,.65524287,.10479275 +1.8079863,.86378719,1.7324068 +.57588409,.15404932,.61901658 +.35345359,.30246707,.77457987 +.50358606,2.0816042,.79852377 +.8677936,.11591488,.30742442 +1.012235,.14836346,1.2765422 +.96227902,1.1820051,.81518316 +.7960209,.28691076,1.9120457 +2.7832321,1.1417945,.42938142 +1.6668184,.4844674,.99178251 +.75216736,.65930527,.97527178 +1.1764233,.87058692,.1152763 +.5354055,.03173866,.27725869 +.83669166,.15684018,.28738958 +1.0157329,.68348386,2.3542979 +.92560357,1.0102635,.2014457 +1.0915019,.12164865,.87700126 +.32367708,1.5074895,.65147122 +.4448944,.5767429,.1447255 +.34046889,.94609722,.08128725 +.490812,.85083578,.31516667 +.25551491,1.7729762,.81281841 +.53259686,.85199177,1.2921967 +.6763498,.4429648,.15219952 +1.3046012,.65319517,.08203373 +.53819841,.18007781,.40167382 +1.3070159,1.0066161,.53402186 +.95064717,.41880509,.38876976 +.78270171,.12554599,1.1429237 +1.2077823,1.3753412,1.2152278 +.33307056,1.5158048,.74898715 +2.2972647,.52684132,1.7447576 +1.9889076,.40278722,.62346095 +1.9003394,.07534532,.59326143 +.34588476,.5997774,.39352158 +1.3848391,.19341777,.65338248 +.4866094,1.4769768,.17689952 +.72677696,.56944265,1.0796162 +.97312029,.15803085,.26357945 +1.6770397,.32598195,.73019003 +3.0828438,.33148027,.50958167 +.53978217,.18858981,.06856689 +1.8359513,.24949013,.6270244 +.55139061,.21901532,.66594662 +.53120757,1.1132875,1.2073776 +1.3604415,.86499452,.44762316 +1.4100932,.28476938,.21105136 +.5317353,1.41746,.10591902 +.35807332,1.7052541,.44198972 +.44591303,.00083606,.62313331 +1.5236728,.76468648,.04255063 +.72440922,.42656059,.02414543 +.73692786,.1969044,.38403794 +.67085897,.31547314,1.0618144 +2.1289201,.00727525,.92214303 +.83484051,.9365747,.27943891 +1.4582086,.42770235,.14894348 +.60423985,2.632713,.1815459 +1.3231255,.8059688,.60831076 +.74067333,1.004399,.99278036 +.7335507,.11964148,.69886876 +.61472818,.41714821,.57707312 +1.137233,.18288462,.26872759 +.55577561,.71466678,.82123976 +.34499519,2.0482713,.07691842 +1.1857159,.3515483,.2531631 +1.3126346,.86186097,.78023273 +.70496784,1.3466144,.02746819 +.80611587,.24862795,.03480795 +1.0419786,1.1803205,.22367077 +.43638112,.7663279,1.2585562 +1.4064567,.36692107,1.4663623 +1.6750222,1.0388907,1.4213236 +.38554069,.62712483,.33980381 +.38007966,.05931829,.33031338 +.85701212,.23845349,.33613195 +1.4786104,.56168204,1.2830694 +1.0748568,2.2040816,1.0451015 +.48763681,1.994629,1.7134518 +1.1708599,.33579193,.53622808 +1.4442291,1.3583403,.42435972 +.46502917,.55244661,.13023506 +1.8339693,.19512302,1.1384803 +.9468369,.13267278,.15396403 +.73327736,.30412774,2.0869615 +1.2589682,.10342949,1.9796736 +.32950329,1.6539137,1.4017712 +.99450094,1.5020955,1.3541543 +.42167515,.11025273,.07469132 +.49379249,1.2870401,2.0007292 +.63858807,.77247546,1.7410305 +1.1319762,.10916838,.94319496 +.61506713,1.7278862,1.9149115 +.45596362,1.7422465,1.9031208 +.55977068,.15454113,.28271189 +1.0455512,.41456556,1.8043565 +1.146696,.79334514,.34850078 +.52537046,1.6682201,.07005638 +.60348809,.85753284,.14614927 +1.7364425,.63701359,.08930606 +1.8354809,.48358341,.88929074 +.71854178,.36415234,.32665028 +.92896808,.71965305,.00076818 +2.1495859,.03222462,1.1051794 +.55947426,.65330578,1.0013556 +.4323414,1.9958776,.04603591 +1.1176813,1.4419434,1.3932616 +.99414408,.95404676,1.0417476 +1.0499161,1.4753687,.17971689 +.48588429,.51113135,1.5547702 +.84550192,1.2094298,.21257662 +.65263457,.63949305,.30934035 +.79290738,.33640342,1.2574682 +.54673202,1.8489152,.57730258 +1.0233927,.97820741,.6789448 +.33906101,1.2299204,.12771359 +.63224042,2.8438105,1.705091 +.52886074,.75885043,.60977697 +.71331299,.47041217,.23006475 +1.1036448,.0083311,1.0368225 +1.7023252,.22409734,1.0066049 +.45684042,.7471557,.24228845 +.50728536,1.203658,.89912382 +.52542282,2.5508588,.71432776 +.67558243,1.9095825,.3053206 +1.0786687,.12323818,1.1259563 +1.5754653,.36698878,1.2005333 +1.2139596,.15071803,.35595134 +.40790358,.32594184,1.9646264 +.53203962,.71076602,.12283687 +.47787359,.48266772,.89799438 +.58515266,1.1860984,1.1913127 +1.3560085,.75163581,.46297806 +.53281318,.82110722,1.4960469 +1.0548592,.15171306,1.5743854 +.81411684,1.7223677,1.4484671 +1.1938087,.30310589,.19097463 +1.192741,.21129405,.17451559 +.75899672,1.2419331,.82784879 +.6374576,1.8619317,.91451349 +.44619783,.4919511,.01682262 +.48676596,1.016314,.40128148 +1.0262709,.14499535,.27350617 +1.1861885,.16331249,1.2325801 +2.2942538,.38247592,.48889353 +.85355646,.61764498,1.6375257 +.50980799,1.278777,.29614012 +1.1398388,1.9680992,.3960092 +1.9046205,.8304337,1.2445858 +.87173536,.32872371,.66490222 +2.0480913,.98587448,1.0592145 +.77299797,1.1990445,.27866106 +.37258799,.92391239,1.0006353 +.45918285,1.5978562,.71282981 +2.3619335,.05039088,.24353454 +.39396251,.26278374,.08104844 +1.8585588,.51678988,.32269789 +.48543293,1.3091433,.96542171 +1.5687305,.42162177,.62088816 +.50056857,.20667432,.79511053 +.60993877,1.0747486,.56051621 +1.5955571,1.1066353,1.1917326 +.72446861,2.5016278,.91472237 +.65059142,.02257329,.8548867 +.73070276,.18703439,.82622486 +1.1264166,.67277123,.13468606 +1.2113956,.52728027,1.5949436 +.78712526,.28106918,.0968602 +.94145997,.66741615,1.6472806 +1.0954378,1.8365617,.02243568 +.44531892,.46709231,.83176536 +.82590238,.59641505,.26896118 +.60970799,2.3779952,1.3423091 +1.0839253,.57236835,.29045551 +1.08553,.05119174,.98016221 +.35995648,.56951999,.17797189 +.80942276,.79188416,.739691 +.86087265,.63038067,1.275026 +.53404867,.866855,.53209025 +.62392452,.42424381,.38531759 +.89884572,.56616936,.27225837 +.87199319,1.2087332,1.1686478 +.85784963,2.8609857,.73594506 +1.3131563,1.275769,1.9422994 +.68350256,.09357748,1.4982703 +1.1943808,1.1793543,.26941153 +2.1922287,.29989653,1.116309 +1.3082946,1.178197,1.3840065 +1.1113702,.50065059,1.9818397 +1.3383851,2.2420446,2.3648687 +.85174954,1.9054286,.39733451 +1.129548,.43810268,2.5157195 +1.441278,1.509342,.66813457 +.7255826,.81301011,.23648842 +1.0450212,.0038373,2.3080157 +1.1054451,1.0574794,1.2490296 +.45652571,1.2939899,.89678706 +1.1320308,.04545738,1.0351427 +1.0045427,.48358449,1.6361806 +.73067428,.03111618,.85563651 +.9075105,.43921892,.95644906 +.45477493,.35751494,.77993388 +.79356556,2.8708533,.22020986 +.46057191,2.0228225,1.2274254 +.54476132,.96381363,1.0407849 +1.0445949,.08157871,.04754359 +.51373178,1.0181191,.39457112 +.2243129,1.4619459,.77278401 +.54747435,.13058052,1.0562786 +1.0083437,.70440173,1.1334688 +.88595883,.74651968,1.1561514 +.5197623,.20360818,.18498941 +.50207686,.92640805,1.0854036 +.99810029,.0455252,3.4521324 +1.1951986,.18817193,.68836072 +1.8554518,.91690063,2.0925599 +1.7851735,.09115076,.29708702 +.44102123,.95727975,1.2543157 +.86045738,1.3314396,.35523279 +.76553783,1.6424116,.94004993 +1.0169114,.45977034,.93161177 +1.2856241,.55383372,1.4754196 +.83504826,1.6660218,.07642833 +1.6337218,1.699747,.05984007 +.98855504,.25684297,.16606373 +.74471199,1.3923451,1.5143552 +.59190466,1.1416195,1.3069012 +.51123432,2.5162145,1.0903823 +.4287568,.68421925,.88664074 +1.0621152,.78039116,.75343923 +.71162825,.94351661,.63121965 +.64934633,.11045863,.04400389 +.6590141,.76228929,1.1274099 +1.947319,1.5154784,1.2109174 +1.3182594,.06418468,.18862662 +.4448112,.39947473,.44120012 +1.5931178,1.9578012,1.0670696 +.92577296,.02509758,.81107075 +.37191726,1.3854178,.98019231 +1.3395129,.27117458,.29291725 +.82135854,.34848711,.33452343 +.56298594,.9481405,.20094716 +.64649229,.20195604,.10571592 +.53218878,.74410616,.72534453 +.59017107,.93688963,.8805462 +.88269337,1.3244887,.81594257 +.44544463,1.034225,.41986385 +1.0834509,1.2170397,.64858084 +.49270929,.56024573,.38228127 +.43753896,.44702784,.46987415 +1.0577981,1.2249352,.49261012 +1.1129117,1.0615008,.64650688 +.42530777,.03538565,.07824858 +.45932319,.74515031,1.1323152 +2.4337966,1.6465091,.77930235 +2.0973645,.20452708,1.4372669 +1.9009487,.17209676,.21357099 +2.0278298,1.1185096,.26905762 +.85528289,1.0189744,.7570553 +1.0350345,.29261478,.39094093 +2.6422247,.07033411,.30420029 +.5140029,1.066023,.07795963 +1.3934558,.17803739,.31633266 +1.4523115,.17894269,1.1052272 +.67948211,1.463158,.48501001 +.65778312,.91792615,.68402465 +.99563847,.29704757,2.0359843 +.6086198,1.1123892,.97031487 +.97176865,.1031163,.68594548 +3.172715,.07331014,.54312566 +.66290605,1.6013314,.30082313 +.52191917,1.6711335,1.4397747 +1.4082474,.11296385,.45664121 +.70603199,.51632009,.95465464 +.90887164,.24682122,.46270406 +.48803218,.87589175,2.0652667 +1.4091699,.65454137,.24426516 +1.0313178,.1335253,.35719454 +1.3822809,.55087071,.57031661 +.46318477,1.2562246,.10602722 +.84124991,.72300082,.24744611 +.72005416,1.157234,1.0185656 +1.1581306,.32385789,3.4205553 +1.1062855,1.4217344,2.5219381 +1.2628957,.37980036,1.3896668 +.54907046,1.4532248,2.2864334 +.47013967,1.2530119,1.2287858 +1.5702758,.04819764,1.0995112 +.71714987,.5576588,.05748551 +.88696413,.39828477,.86230246 +.56942363,.43028907,.32020357 +1.194354,2.0997082,.26225915 +.49712269,.66819234,.67758129 +.54577257,.75752552,.47854348 +.55554812,1.0136775,.99391563 +1.2356904,.27607987,.13491326 +.64654905,1.1353353,.20603382 +.68977894,.98343752,.82935937 +.4185756,1.440873,.15235404 +.51801703,.16443431,.39994747 +.6789779,.5482287,1.0365555 +.59075355,2.5261331,2.4092286 +.28745651,1.5833844,.17520858 +.56223016,.67544825,.39073222 +1.1292924,1.40262,.41181671 +.7952998,.07094655,1.5683521 +.58899793,.63165059,.55742037 +.41000838,.77660809,.52923036 +.4143729,1.0843637,.09216096 +.60813212,1.0751661,.65359106 +.4638498,.89542929,.23079008 +.87237547,.78703007,.39552888 +.90016571,.3193321,.68314355 +.8557197,.84700131,1.3836115 +1.5359344,.27196633,1.7061837 +1.1998291,.28060531,.21234199 +.72729596,.57600911,.45360463 +.53358145,1.0184684,2.0419656 +1.1495088,.96618169,2.5000018 +1.3144638,1.196933,.42830172 +1.4898759,.75460823,1.1911906 +.45499791,.63338397,.90683149 +1.0808516,.15370296,.00132095 +.60608328,.89410116,.45706944 +.83524618,.86106646,.44413656 +.72323731,1.9581175,.95039689 +1.9249132,.07822717,.75027004 +.9666377,.83028074,3.2435743 +.43641777,.36480394,.39645667 +.4195825,.09094996,1.7874976 +.74472813,.28079986,.20860033 +.61020936,.09517121,.692579 +.77131368,1.8274923,.21127301 +1.6067464,.140329,.6828836 +1.7686029,.42627639,.32541021 +1.8905737,.13478385,.29612997 +1.405894,.87703519,.70319283 +.44415226,1.8298393,.47193776 +.33506658,.43027816,.07489457 +.52297481,.26344526,.01190135 +1.1373273,.42360934,1.5305132 +1.3312783,.91587062,1.7751241 +1.0410896,1.5157656,.26608781 +1.4480413,.29716426,.32438721 +.3719933,1.7984758,1.090611 +1.138133,.61494499,1.2161427 +1.4537901,.30528947,.69439308 +.46470688,2.4677522,1.04113 +.43600904,2.1068578,.99017465 +1.1794371,1.0822301,1.443628 +2.2879771,.44622975,.64715892 +.83039767,.98064963,.84536739 +.80287262,1.6696984,.2133798 +.97500494,.40712243,1.9619799 +.45550386,.14264939,.10375282 +.57711838,1.948537,.60913161 +1.1469246,.77060927,1.6292497 +1.7211792,.75091236,.42999725 +.41171325,.5355055,.53850641 +.97286873,.19363805,.30972112 +.80297553,.77145153,.28321563 +.4470903,1.1346274,1.6393474 +1.3915772,.02676164,.71137971 +.79863347,1.2380587,.1271012 +.96938515,1.1903338,.11833457 +1.4998255,1.6174386,2.3163467 +.93455349,.12541608,1.4459555 +1.2592145,1.0184489,.95519548 +.93858633,1.2308372,.28543483 +.71921677,.5691937,1.5062947 +.41445547,.91731958,.26125513 +1.5565691,.50849537,1.0546989 +.99581961,.91298561,.20558919 +.33116335,2.0528966,.14246533 +.44532875,.84073702,.34597492 +2.178776,.6245389,.6367874 +.40246591,.49722636,.71098424 +.49144091,.80917368,.80381215 +1.6976921,.10409301,.78340753 +.79345409,1.2703867,.8570724 +.41725463,1.2149675,.44892438 +1.5577132,.06371071,.01689731 +1.6395686,.97946324,1.5638839 +.63510756,.09946512,.16027211 +1.2465467,.17283226,.82421806 +1.2058207,.12364465,.61848685 +.8580398,.19404364,.27610869 +1.1860249,.78878315,1.0646518 +1.8869189,.43344444,1.5333035 +1.5164096,.83481771,1.8775071 +1.0210204,.00817693,.70060562 +.78599051,3.0671883,.73489247 +.66606637,1.8540357,.96150092 +2.2154842,.387052,2.0575265 +1.3110835,.25252997,.79290264 +.42777353,1.2550294,1.08497 +1.285393,1.3965969,.46368365 +.5779004,.77327605,.51096566 +.31410008,.16418786,.73116663 +.29362502,.486411,.18165235 +.44781519,1.0621907,.61616385 +.81570713,1.7720709,.22935628 +.59243164,.75166245,1.201463 +.89008825,.90819466,.00383853 +.61042509,.87018344,.74502498 +.68542041,.11851487,.46183337 +.62196437,.56574473,.47507702 +.69915077,1.8529885,.56907348 +.67639402,.17003627,.59265654 +.25468788,.32811503,.00806405 +.55493659,.68883828,.44839887 +.46509854,.42844871,1.226036 +.48938923,.31170844,1.9425815 +.58742341,.68117102,.64632858 +.48078963,.36609365,.35615747 +.99847946,.66102065,.69760276 +1.0008061,1.5179612,.50270715 +1.0075243,.09201058,.85246543 +.2997118,1.3684951,1.0862403 +.63055664,1.2513718,.07777136 +.81411511,.00110458,.81288927 +.7188372,1.6483634,.62184891 +1.5254035,1.1670693,.03789131 +.32919365,1.4790054,.55892829 +1.1354069,.01240865,.45208981 +.71755354,.95055425,.14109303 +.85828707,.93274769,.47963545 +.90117582,.82883926,1.5602064 +.79543345,.51479295,.00853717 +.44277444,.10064441,.7223666 +1.5533009,.83904651,1.0956512 +1.0516832,.39254037,.73614743 +.83413822,.53294412,.49227185 +1.311248,.34137294,1.1917579 +.4472634,.63094487,1.1172535 +.79598029,.13955788,1.6756552 +.85278306,.95822841,1.4779065 +.53503889,1.8908573,1.6820477 +.40528885,.35509936,1.2386648 +1.2302055,.4699998,.95502637 +.90665352,.25526423,.98295582 +.8933742,.53657744,.40843186 +.88336246,.92286642,.79963482 +1.1934658,.52589761,1.0757349 +.66024306,.2945835,.37364994 +.88793134,.72892803,.99760052 +.63694776,1.2191697,.15707383 +.45074691,1.6273883,.19775074 +.7478886,.11638513,.2639001 +1.1322892,1.1037174,1.24257 +.97533903,.70015986,1.1724642 +.87905209,.6875471,1.4924227 +.90051655,.81640222,.66861579 +.5715155,.21941017,1.6759306 +.49803959,.91187296,.05597247 +.95425798,.00877936,1.1285039 +1.0449452,1.3604589,.4031856 +.96943637,.5169045,1.0316444 +.74505481,.18109863,.21499581 +2.029191,1.0373536,1.2887685 +2.0803405,.49113489,.1224396 +.92581304,.57418305,.22577945 +.52268271,1.1539178,1.2170588 +.88146398,1.6731484,.14875807 +.70119565,1.1189563,1.3061319 +.53667123,1.4140252,.56635202 +.53918906,.10023102,1.1932109 +1.2416183,1.3158041,1.2257141 +.71844221,.28280901,1.0166155 +1.2633984,.26736844,.68146958 +.64212965,.49498106,.67120087 +.50876971,1.2929585,.73936455 +.5153741,1.3677384,.13027526 +1.590537,.04241349,1.1383407 +.84274107,.71393456,.3435733 +.87589766,.82758876,.01156766 +2.5485831,.91112008,.88693687 +.68665051,.03636391,.06359425 +1.3115506,1.4292172,1.3927249 +.53123713,1.1623145,.49397772 +1.2749996,.2880957,1.7349968 +1.5821817,.60813204,.99806396 +.77961083,.40573461,.04682958 +1.1253822,.493243,.12783069 +1.1617137,.67012005,1.2278179 +1.4407162,.09785644,.37732689 +.73208454,.40211109,.294804 +.98996376,1.2799636,1.70835 +.41709561,.69740298,.59902625 +1.5674667,.82379952,1.39266 +.48734714,.19860886,1.0059565 +.44122071,.46521419,.90971615 +.64129819,.43527289,.30811124 +.62684988,.78355022,.0886955 +.64693441,1.32782,.01955892 +.59535593,.22846696,.14243455 +1.003355,1.5832926,.5036809 +.41708387,1.916637,.61838487 +.47198095,1.4032447,.8860187 +.36695231,1.8396545,.66243155 +2.0197288,.03342543,.52782062 +.6857154,.77340596,.17992294 +1.1014658,.12579619,1.0564055 +1.4897692,.37416542,1.150924 +.70505925,.50815912,.08519581 +.52437886,.15260392,.47863794 +.63711772,1.7391216,.37263023 +.39009541,.97890267,.31607648 +.76228922,.82694162,.16498162 +.93322403,1.1470418,.30293864 +.73818755,.28606764,.21854605 +1.0592089,.35754192,.9970944 +.83616422,.02424062,1.0902317 +1.4585976,.62453454,.26452784 +2.0376153,.06358049,1.1983505 +1.5411847,1.3243034,1.4826743 +.21932204,.52220882,.55785855 +.69185743,.17433654,.45314218 +.3780741,1.6827594,.08398614 +1.7761566,1.4056782,1.3291274 +1.5543689,.26499576,1.1540939 +1.673615,1.3318156,.5275339 +.7341938,.75754616,3.1506801 +.58052904,.88314435,.34331058 +.87775515,.00252876,.00516015 +.80354046,.02788932,1.0881081 +2.3949123,.01258092,.28800127 +.76474772,.06939227,.31738194 +1.1314524,.36862816,.95874247 +1.3788215,.08812908,1.5877548 +.61360377,.1534862,.52910049 +1.2307136,.63708635,.65662031 +1.9903735,.67037612,1.3477985 +2.0096389,.03289394,1.9792096 +1.040194,.6135904,.31365322 +.94575111,.6617426,.18715261 +1.0971047,.82583779,1.1743394 +.68202379,.26623853,1.0538408 +1.2879852,.63325062,1.685548 +.69363514,.67187259,.29572143 +.74637649,1.9256652,.06470406 +2.0689228,.00484618,.05532187 +.47353155,1.0455835,.76397617 +.61642346,1.0243964,.73810954 +.60041542,1.4147594,.22046679 +1.3842959,.65123705,.35822698 +.97943689,.49159814,.8781569 +1.4057824,.07480399,.96075046 +1.2138391,.25178537,.71053274 +2.6587948,.27063062,1.476548 +.50959393,.03183325,1.3939196 +.64663692,1.6086559,.65785988 +1.0743679,.1341597,.33454857 +.81192227,.09773149,1.045698 +1.2302544,.82312374,.2105131 +.88739758,.2659361,2.2846935 +.68895635,.08815154,1.2772002 +.84950428,1.1474463,1.8056507 +.41220986,.8478738,.76609451 +1.2276828,.40024823,.43805885 +.34167876,.64919517,.29571262 +1.1937412,.27507342,1.0269908 +.98609512,1.2530711,.82601653 +1.4439961,.16409666,1.4331202 +1.4265894,.04381174,.27709529 +.85009812,.55047444,.3726663 +1.1624827,.19830447,.4358019 +.88141298,.70701924,1.1359254 +1.8030605,.51920598,.48907303 +2.1573244,.31023215,.40930709 +.833057,.78093293,.11070589 +.63503715,.30256119,.58159407 +1.2380999,.64769778,.82570019 +.7658421,.80438033,.16798972 +.64264602,2.1437461,.32152262 +.37862201,1.1448052,1.141654 +2.0792637,.36862075,1.1311526 +1.9519424,.77188615,1.2701457 +.59793348,1.1805795,2.4882939 +1.1675253,.81796117,1.2396377 +.50431666,.25278977,.03380942 +1.5139807,.60488044,.5267795 +2.3399944,.40620232,.2204944 +.27648724,.20527542,.79293252 +.55608204,1.6139484,.93417146 +.56749681,.06509037,1.7841532 +2.3413846,.91336464,1.286842 +.49111822,2.2151159,1.7859369 +.72358246,.56969836,.23126384 +.84318183,1.5361691,.42507869 +1.8994018,.28242409,.27188294 +.49800349,.64461452,.99979275 +.59864477,.40088225,.09159054 +1.3934944,.46484016,.71819031 +.3137853,.35843625,.33567419 +.72278588,.82471827,.20287081 +1.0217327,.5720939,2.3912526 +.84989276,.72915217,.70686407 +.52732151,.92456388,1.0263906 +.74394476,.77844053,.47204001 +.97316503,.79557138,1.0082777 +1.4777421,1.4571258,.08589688 +.9117526,1.1104077,1.4341505 +.75034753,.36538482,.05614059 +.3692494,2.2273148,.02049272 +1.3181264,1.4982689,.17268853 +.64683387,.00390602,.00857527 +1.4117443,.30774686,.67000899 +.9687094,.30975126,1.6156004 +1.3661317,.6906521,1.7988582 +1.0792307,.14330194,1.5863228 +.86294942,1.117256,.74933646 +.45469822,.8678105,.66272447 +.92207057,.42677188,.81956864 +1.5343704,.10284736,.52164318 +2.3147197,.00185909,1.6650827 +1.9995592,.56850582,1.4210345 +.66158865,.68097305,.03002234 +1.3830422,.58870233,1.2679267 +1.2399708,.7211963,.96204453 +.82086802,.21155405,1.5897708 +1.6355763,.51971018,.69259745 +1.3668172,2.6859784,.53778645 +1.3695124,1.0492045,.07146216 +1.6760915,.19971802,1.1496996 +.52911349,.71456527,1.6257171 +1.3468999,.05604873,.61183922 +2.2320058,.32336758,1.1358515 +1.748909,.39328579,.2252482 +.75771534,.6511483,1.495584 +.82190682,.74159356,.45393588 +1.2941314,.30127099,.46060893 +.54890744,1.5083552,.07189582 +.6478812,.22402693,1.1682029 +.46827767,.8885195,1.0815723 +1.2773805,.76850519,1.0884808 +1.3726962,.32875787,.30092467 +.98850252,.56410389,1.1312203 +1.214699,.32322698,1.9109611 +.76261039,1.9128813,.35562053 +.92968057,.10295891,.9771309 +.51699526,.30719446,.78335297 +.72300943,1.2017861,1.2593576 +.77478367,.21124569,.95107564 +.40953404,2.2929885,.49302995 +.89407617,1.7795643,1.5784293 +.82267604,.29049601,.16973788 +.64245082,.11481887,.53305173 +.68481198,1.5914503,.39863198 +.38048066,.09241025,.49242327 +.68099678,.38627829,.30041128 +.69177847,2.9609587,.96070824 +1.0678442,.10629742,.33408386 +.60844084,.88455007,.5093307 +.99170581,.96715901,.22421027 +.95530592,.39545272,.77674333 +.7682911,.10082377,2.1181905 +.55338774,2.6073628,.52504416 +1.5007194,.30410078,.25305956 +.56190117,1.9715174,.53606786 +.49172138,.50580188,1.742671 +.95873533,1.2522487,.60386831 +.87526909,1.476059,.54836623 +.99324973,.35423473,.51678105 +.30072066,.30904113,.91513104 +.73339835,1.6516462,.17733246 +.42303792,.03161671,.15355585 +.63190292,2.6331919,.19272248 +.6352079,1.2856041,1.3483734 +.39498192,1.3724164,1.1292564 +1.846939,.55804161,.04003223 +.70733467,.21990442,.18754316 +.55086894,.88514622,.49360472 +2.0548052,1.3997755,1.7297464 +.59234712,1.1371243,.18086451 +.64121043,.39883673,1.0177353 +.52468016,.40250097,1.0249419 +.54059989,1.8182452,.65633535 +.60432403,.65052602,.0636631 +1.5688343,2.0483084,.39600792 +.562801,.34585794,.30369899 +.58190637,.74998177,1.173662 +1.1593814,.89930537,.38980566 +.46597558,1.719502,.83164276 +2.7064815,1.2566238,1.1095902 +.8454331,.34277456,1.1117058 +1.2600591,1.7453384,.68334767 +.30694843,.80553608,1.236518 +1.344167,.15437308,.68551113 +.950337,.36864119,1.1233126 +.6210797,.59990392,.32165523 +.65517759,1.3693878,.99479282 +.49923444,.62451216,.24422314 +1.3483409,.59158454,.82851365 +1.0928142,.76863239,1.3683272 +.64833327,.69276838,.25198577 +.48687855,.08762486,.55534079 +.86665341,.65956061,.41217809 +.65167732,.61093683,1.3167546 +.48349905,1.3165076,1.16885 +.93645938,.587195,.07747726 +.32506366,1.4037592,.44467072 +1.7438092,.93137583,1.2519418 +.71685969,.20947999,.79092869 +.99875719,1.7157947,.45992894 +.39151686,.87870144,.60629643 +.39351973,.71349625,.57063608 +.62257364,.74272939,1.4383636 +1.2190784,2.1363669,.5539528 +.90081433,.00460817,3.0562839 +.38376962,1.142702,.17662614 +.57285959,1.7641261,1.6215876 +.64901767,.51405817,1.2711688 +1.1400823,.10387318,.07082271 +.93270793,1.5073708,.08153339 +.40655959,.44399878,.35167226 +1.9875291,.91862892,.71083915 +2.0393635,.86787424,.3043433 +1.8569063,.03554428,.86464565 +1.7623787,.50807988,1.537282 +1.1267215,.81914616,.04151408 +1.0393748,.49968469,.00851272 +.68633399,.97156066,.66021609 +.82344535,.85859163,.51311225 +.45935116,.74427853,1.5053981 +.73821694,.25534783,.91831912 +1.0216252,.61240207,.49580075 +1.2085485,.99259879,1.2260246 +1.516003,.81595439,.75248317 +1.1266969,.68990708,.71989962 +1.3138244,.01026354,1.31494 +2.2510802,.30263447,.17212534 +1.3592968,1.6584683,.33789702 +1.2217107,.54238021,.19009802 +2.7134437,.19271907,1.2948621 +1.0160346,.30702549,.20456083 +1.0705668,.18244817,.31017885 +1.0436983,.1292583,.8564444 +.85749304,1.1091098,.82024733 +.9202215,.51678741,.58403393 +.84451859,.67789275,.24441685 +.40300075,2.0025383,.8905814 +1.4546027,.1368294,.10668461 +1.0138851,1.1817147,1.7061326 +.65364349,1.0067274,1.2022762 +.92506612,.13907515,1.2272555 +.47062764,1.2741266,.18743773 +.48431374,.97216022,.77450598 +.89555687,1.8941321,1.3592442 +.48385894,.59341957,.12764881 +.40187201,1.5376405,.28665143 +1.0804875,.31012146,1.0046177 +.85381294,.87592176,.86460383 +1.3938853,.80895287,1.2462153 +.54420174,1.3670841,1.5425068 +.46110301,1.2753861,.79958355 +1.285604,1.4020325,.72311691 +.75067689,.52611748,.89972014 +1.5883703,1.2809138,1.5180174 +1.120083,1.2839816,.15408031 +.43599287,1.4497001,1.9728611 +2.3607584,.00179689,1.0052755 +.57821915,.38653261,.16324203 +.43339712,.11306418,.46396703 +.80389746,2.160963,.36711591 +.2826242,1.7691503,1.042522 +1.0010205,.02189996,.07022599 +.70439423,.35765219,1.3451255 +1.0889644,1.4449901,.31443333 +.87119872,.38701871,.91384518 +.56127298,1.1385375,.11133737 +.39423553,.97020546,1.3471023 +1.1679586,.10533124,.06641273 +.82039289,.06757421,.24293142 +.68506978,.04043844,.38376434 +1.0246225,1.2492029,1.9889724 +.57469644,.39407662,1.1020974 +1.0590677,.6075984,1.3106826 +.56809222,.91512245,1.0749058 +1.6153384,.55633294,1.9644559 +1.3442991,.55182875,1.0598835 +.65283634,.34334532,1.5589305 +.42730591,.90148239,.21746758 +1.0855758,.02982246,2.282134 +.50435565,.81095325,.28824378 +.44523495,.05207989,.73298672 +.55143777,.28323044,.79817607 +.7387473,.4622329,.02762745 +.90180727,.49072315,.84782827 +.95396874,.76613409,.49923466 +.60093148,.73417061,.16847923 +1.1493699,1.5940341,.6256235 +.76694136,.8548142,.5620482 +.89412755,.54278167,.88975964 +.47414106,.42766491,1.1065302 +.20307596,.94437007,.029097 +.41623506,1.6632204,2.0426244 +1.4102151,.30332034,1.4475864 +1.0100245,.51130558,.78468786 +.70461204,.028436,.49202164 +.60529308,1.2090909,.10538388 +.49198111,3.1035713,.01622831 +.30085982,1.2212211,.6604873 +1.1409819,1.6156706,.24321025 +.81539199,1.332482,.3429855 +.61227193,.03246685,1.2805247 +1.8357838,.57370849,1.3878231 +.53771767,.58811943,.33753937 +.69687454,.85277405,.07419995 +1.4013865,.93645306,.55223528 +.81252391,.59534859,.78418357 +.8086831,.06067919,1.4125986 +.59896992,.3988686,.40412208 +.55284227,.49595926,.81592482 +.50929179,.54276557,.4345099 +.71707459,.68294439,.49354324 +1.4629514,.44288633,2.2228466 +.71840802,.10376125,.29179242 +.32693142,.95897218,.0259875 +.9013057,.8795036,1.144873 +.51222818,2.4524496,1.0816049 +2.1406668,.70600863,.68073335 +.47289677,1.9842243,.48218482 +1.5640021,.97482472,.27848825 +.42762651,.08379042,.684777 +.77650432,2.535576,.88879638 +1.1454141,.86717782,1.7233643 +2.2186178,.20586605,.42674318 +.76658627,.59757349,1.5542298 +.36194505,2.3483218,1.7992443 +.54619954,.84221323,.15197689 +2.3861606,.35700537,.14873727 +.98186254,.58242152,1.2038135 +1.1956807,1.502439,.97992637 +1.4382057,1.564624,1.081083 +.62339753,1.916611,1.1263087 +1.8170537,.04199381,.6788282 +2.3254662,1.1796021,.04049916 +1.3606141,.09808365,1.864327 +.55617381,1.9035699,.6910411 +.51327593,.66983671,.53394106 +1.0401817,2.6733457,.9120506 +1.0958425,1.0912092,.48636056 +.85465632,.0470197,.07321444 +1.38999,.99559567,.44470931 +.90990065,1.6653157,2.0345446 +.68829942,1.141201,1.0995515 +.74295127,1.9340505,.49119004 +1.3922157,1.0497973,1.2084639 +.49485652,.38761986,.10893134 +.39746496,1.1200243,.03100065 +.66944874,.51888088,1.3992022 +1.0522701,.05549937,1.1324259 +1.4110166,1.961611,.99060791 +.65828375,1.0784351,1.5779913 +.75841222,.57612726,.68317393 +.92854943,.64552288,1.0134719 +1.6155181,.59212703,1.4072525 +1.0074144,.54359785,.04024842 +1.4618234,.0811577,.31010507 +1.8466397,.26423662,.93618696 +.5373117,.51450927,.62101183 +.49114659,2.3287809,.70208884 +.27317587,.03580597,1.6000059 +.92133399,2.1122602,2.7765222 +.80412706,.52812616,1.8657008 +.71076351,.66406651,.48405545 +.8036214,.63647145,.30162506 +1.1390704,1.4635237,1.6374403 +.24124973,1.6133636,.41009214 +1.5737169,1.2385161,1.1690148 +2.366065,.13369554,.04384226 +1.4083302,1.7223985,1.2947046 +2.1064722,.08183587,1.996157 +.86317013,.64932099,.85457242 +.70356477,.53512009,1.9505461 +.97337006,.31523418,.08351452 +.90467962,.50072073,.71991013 +.60070091,.6741358,.23024367 +.50225618,.83214875,.42062706 +.88799322,.23306631,1.5579528 +1.2559667,1.1666567,.7584229 +.85093446,.68121449,.56691685 +1.1366896,.2741995,1.179697 +1.2829736,.42635261,.96186636 +.9329628,1.2047545,.06684419 +1.3902978,.75980812,1.5576641 +1.6886265,.53978954,2.3449862 +.70000569,.2715711,.24927771 +.7200526,1.3751039,.11620263 +.68479271,1.2882025,.169566 +.28482059,1.2270733,.13245547 +.98095411,.22296276,1.0933974 +1.1432139,.69682643,1.6413278 +.5951192,1.2492011,.20436357 +1.4283328,.08386008,.80557023 +1.3532335,2.1888235,1.1433764 +1.0440218,.0253253,.22439692 +.58435498,.49895425,.41673453 +1.5271364,.86704893,.28005903 +.71000591,1.1472851,2.7980093 +.15239206,1.6916666,.22499613 +.45733126,1.424048,1.2954698 +.53119861,.91763481,1.0982312 +.8433712,.03288397,.35014774 +.72297228,1.5006263,.47334487 +.75842406,.33862516,1.4850888 +.79216023,.84727743,.02804734 +1.188678,.8670646,.03134457 +.79174044,.1499512,1.0043355 +1.7292017,.58430734,1.0091648 +.6247605,.51492754,1.3150294 +1.1384411,.72216072,.00794403 +1.0841548,.9946691,.11407215 +1.9180279,.41507537,1.357478 +1.3106292,.73653575,1.2087327 +.7485907,.45673826,.77896784 +1.1728327,.32382826,.47379213 +.58269693,1.9398911,.93882251 +.74828108,.21939534,.35614074 +2.0892581,.37763643,.737758 +.58920584,1.2377256,.9365423 +.60412296,.3774581,1.1193776 +.60616194,.08006534,.8359197 +.76597599,.36646062,.39358258 +1.0592587,.84768193,.52613967 +.38510147,.50655404,1.4931697 +.99030829,1.1922023,1.0849993 +1.3954745,.12024869,.28862423 +1.158878,.27465799,.67766524 +.61472884,.83186149,.01873247 +.67739861,1.7195582,1.0650347 +.93370987,1.1005034,.5114228 +.57566466,1.6169886,.65872024 +1.8529439,1.2962203,.10972976 +.72020926,.95294985,.73686315 +.70252494,.01758465,.38395839 +1.1101584,.75189069,.93916066 +.74354628,1.3988908,1.345107 +.39769139,3.2713628,1.2325037 +.4817079,.76496558,.67600269 +.64138909,.56870501,.10258211 +.75407978,.86162545,1.9793769 +.40067205,1.1895564,.67284841 +.51198113,.39348141,.76138466 +.75918823,.22022349,.10064274 +1.3544241,.70328631,1.0897122 +.78336577,.22422764,.73484173 +.26687401,.58675398,2.2454247 +.82782179,.78692512,.31807554 +.52390329,.48071843,.69781714 +.67616016,.57853642,.44206918 +.80387956,.89888446,.58105432 +.57794184,1.1487179,.76667631 +.97361233,.05757012,.06810214 +.89409534,.05302409,.79167156 +.75569766,.10528715,.76082646 +1.7145451,.50372566,.55855176 +.90890775,1.5121721,.77568938 +.7403956,.88226679,.54975083 +.67313255,1.1370385,.3089207 +.39546414,.46176542,1.3206292 +.46894597,1.1084044,1.2126839 +1.16989,.72078281,.75294093 +.44463203,1.3951953,.28191242 +.55966932,2.0055103,.66277613 +.56202432,.6297669,.62075099 +.39439102,.91542901,.01638563 +1.0939705,.20611659,.43981011 +.5568887,1.0318563,.78307752 +.63366786,1.9085454,1.8790047 +.3782294,.291046,1.6411389 +.96452373,1.6984234,.81996993 +.28065512,.92131981,.59000719 +.33127409,1.3598437,.20430235 +.22293971,1.2563412,.69491858 +.90160942,.19743594,.6254257 +.32384229,.89320575,.10230177 +.65086879,.32422403,.9999379 +.34850167,1.0982032,.40147956 +.66038346,1.9568176,1.4259727 +.37488948,2.5467024,.49087362 +.58406134,.33344548,1.6281223 +.57953688,.17089081,1.1374645 +.6046859,.38394027,.62225685 +.70125552,.13105367,1.4147242 +1.8109933,.01075264,.64663027 +1.2302054,.7908917,.87925755 +.79721827,.83617039,1.4503088 +1.8283059,.36570564,.59963293 +1.0507948,1.268339,.71810266 +2.0090423,.06740209,1.4180546 +1.0495246,.0911778,1.2016743 +.74838395,.63976481,.85140833 +2.2586572,.17210436,1.3526361 +.95920135,.47521853,.76160972 +.55423241,.93321892,.59239649 +1.3939524,1.1208041,.90792415 +.88916166,.71977866,.21515861 +2.82606,.01249201,1.3037606 +1.4219849,.58988709,1.7026135 +1.1951103,1.31716,1.5083945 +1.3276806,.56284988,.48131432 +1.6603902,.2499731,.59904558 +.91407154,1.2329018,.43744859 +.57003966,1.0592323,.98408519 +1.4381675,1.283266,.71396815 +.73176592,1.7599606,1.5510085 +1.6600823,.23675605,2.5758005 +.6021889,.03837003,.67218936 +1.21027,1.6903297,.18330881 +.31947039,1.4009486,.26188075 +.76272105,1.264808,1.7071129 +.91644266,1.5057675,1.4228272 +2.025495,.974943,1.468394 +.89289351,.41912367,1.3320199 +.39808021,.06178862,.90035122 +1.0637556,2.3838348,1.3881689 +.17580462,.60286429,.93540741 +.34366641,1.9790815,1.530713 +.66783227,.3173791,.49227668 +1.3982142,.39526586,2.1725626 +.23509579,1.408854,.38454029 +.68056654,.13072693,.51176356 +.64598908,.34772408,.79344036 +2.0089726,.23053515,2.4741618 +1.0643908,.4519429,1.3325977 +1.0289534,.21956902,2.075271 +.68067729,.4759908,.55112653 +.94836939,.59563112,.38645606 +1.3842924,.35793446,1.0334875 +.87553658,.06894943,.82120562 +1.0726344,.36124168,.01066063 +1.1861731,.0052043,2.1089196 +1.2249803,2.2051079,1.6756195 +.57994703,1.2175436,.58671105 +.38903849,.33162,.39333309 +1.0003138,.171083,.32162819 +.60666293,2.6205176,1.4852225 +1.2992296,.79668659,.8993249 +.64013401,1.2057048,1.3537457 +.73262633,.30453092,.34159925 +1.0538098,.20464068,.36470044 +1.4245334,1.4900701,.96275377 +1.3908898,.36638002,.34142565 +.48954096,1.8345617,.97425889 +.65323602,.17287392,1.5905157 +.49207002,1.4217401,1.1449072 +.60403117,.44014521,.84050887 +1.4299627,.64887436,.26786705 +1.4146173,.15169646,.83169415 +.50057001,1.3121853,.4684147 +.86707015,.99388135,1.6536113 +.96271661,1.4034922,1.1430164 +1.2474666,.15642866,2.551381 +.49963993,1.4449441,.93367677 +1.2099657,1.9586684,.10009044 +.66155189,.34800546,1.4764844 +1.4872473,1.3205784,1.2191981 +.83719791,.33820149,.51062833 +.9629063,.9760502,.11949972 +.92475621,.43346835,.3519256 +.39813217,.60086301,.83541855 +.62768382,1.0500079,.24887646 +.5681254,.2116341,2.0916693 +1.0847746,.58339466,.37533737 +.85227863,.97697922,1.332934 +1.2717235,.53623978,2.3900774 +2.3413978,.10325407,.71494447 +.26934799,1.9704575,.6048852 +.99571809,.46271328,.05536665 +1.3529047,.13147278,.44724056 +.25050415,.54688263,.17528086 +1.238899,.61157172,.16133131 +.61268979,1.5320154,.46328588 +1.5618278,.13931745,1.0675461 +.90500617,1.3597396,.07978987 +.38774784,.98000731,.3081501 +.43998721,1.2114324,.33567752 +1.3365999,.86985361,.89091249 +1.6663776,.82702168,.60418611 +.60485727,.21271634,.44575716 +1.3889134,.56122994,.70172949 +.65816044,2.0420318,1.0810807 +.52190134,2.0013453,1.7832705 +.49693871,.11028703,.96945793 +.43059941,.99945461,.31964251 +.61498537,2.1295717,.29670495 +.77846575,.35697989,.7417125 +.66526515,.09587004,.06772414 +.6427482,1.2947706,.31548696 +.92873711,.14258377,.86442916 +.70613863,.03740884,.37779763 +.72398415,.78749129,.38483035 +1.1997943,.50191939,1.2923428 +1.6733687,.61526872,.20408219 +.77463616,.30705736,.08494393 +.45396938,.97506541,.06652191 +.43053456,1.1059428,1.5698093 +2.2331152,.6115271,1.222229 +.74504106,2.8545788,.57122864 +.4119466,.93183175,.60338706 +.53843786,1.6952149,.86504677 +1.2835694,.90246274,.16972201 +.56061512,1.6532551,.78234102 +.75585853,.60621669,.97792802 +.8011542,.34094347,.12573751 +1.4321521,.27490979,2.1604921 +.3016044,.3550662,.63578991 +.65006417,.46404923,1.2594376 +1.0479451,.55017309,1.1562771 +.69347852,.39546815,.06711659 +.99795163,1.5147693,2.6140741 +.60796899,.01694168,.44549443 +1.9092592,1.034501,.38596947 +.63572387,.40730437,.02106332 +.23734411,1.2058876,1.0685014 +.70603023,.8665414,1.83758 +1.8562174,.61055697,1.5109528 +1.2811798,1.2117273,.79832701 +1.1182022,2.0728089,1.4388238 +.76537781,1.6431946,.1914692 +.92561473,1.6616981,1.1372606 +2.0104825,1.1005634,.71802946 +1.1603113,1.0720361,.81459224 +2.1427387,.57646773,.50003495 +1.6559673,.63316064,.38409943 +.85986022,.47273381,1.2625765 +1.1807283,1.0148214,2.0584845 +.64210669,.4920773,1.3849367 +1.1382467,.54530332,.60800001 +.78845604,1.5864476,.13423782 +1.6751428,.74004544,.87166486 +1.3094919,.11775726,.18277926 +2.197135,.37716097,.66520613 +1.7801067,.11524299,.60900821 +.55245718,1.0491735,1.1803693 +.91229041,.42852574,.76004737 +1.1461515,.91438168,.02209308 +.90798273,.3302759,1.9812365 +.73091386,.57105323,.67961458 +.90568623,.69058258,2.0776796 +.5831343,1.3444736,.61546883 +.33933927,1.6739858,1.5453548 +.4808136,.72779652,.67687343 +.79871009,.39620501,.88459467 +1.1866528,1.4055474,1.0845702 +.27934487,.68982903,.25779352 +.82896161,.89474659,1.0828071 +.94489597,.26632218,.31463189 +.68184486,1.9619549,.47718381 +.4267381,1.5433804,.30095997 +.51206171,1.2496923,.84924266 +.9979615,1.6480125,1.775423 +1.2638306,.59667019,1.3162343 +.62447983,.85017105,.94466415 +1.2678445,.69289049,.30156918 +1.1696169,1.2479942,.12669288 +.51370846,.54121159,.78333054 +.67534936,.02653352,.43539603 +.86388572,.39990732,.20247496 +.30808211,1.0415767,1.218024 +1.6332771,.24992537,.37431037 +.88151286,1.1647282,.94478616 +1.0593849,.70064994,.51221555 +.66139648,.59259237,.82904991 +1.0666651,.38624583,1.0643519 +1.7135704,.16854722,2.2347043 +.68231624,.6537369,.63322019 +1.7354479,.55374764,.92110054 +.62254302,.14138772,.21177962 +.8311213,.0806079,1.8679088 +.3500302,1.2373886,1.1115859 +.5890803,1.7935778,.18330079 +.78890798,1.2823008,2.1054196 +.73300227,.28230582,.46606635 +.49378434,1.4710274,.49148941 +.74916907,.15319233,.24606587 +.98169857,1.8960899,.15662613 +1.4675528,.43152903,.71053336 +1.1601229,1.1954499,1.9828227 +.83888434,.24598243,1.6219235 +.70961757,.55227556,.30954326 +.42593485,1.8056342,.43876675 +.71355751,2.0289865,.35196648 +1.4386885,.03130686,.35650879 +.57134821,.97650275,.16551811 +.55574789,2.2456273,1.0608184 +1.1582548,.83268069,1.1376341 +.85245352,.5263931,.83493287 +1.1568794,1.2580266,.49268258 +1.1028524,1.7294978,.64212295 +.76054616,.88306466,1.5594187 +.91042949,.10655994,.46303418 +.48107339,.20290157,.61593204 +1.8059419,1.1023664,1.0684658 +1.5410838,.30217035,1.5508731 +.57033373,.1925254,.76529246 +.27780957,1.2753701,.89433635 +3.00549,.57834152,1.0075457 +.96263326,1.2834901,.42905661 +1.2893501,.62132896,.33329561 +1.3056393,.399479,.69087378 +.74267738,.69608245,.05409343 +.60099038,.69411209,1.326682 +.41554384,.30613809,.42039685 +.51294812,.61423539,.04331359 +1.2739299,1.1569301,.10768129 +2.1039857,.63824096,1.3555502 +1.6164357,.45291566,.85822916 +.35704304,1.1241036,.02880513 +.70927532,.39520085,1.2990059 +.95874669,.41903156,.1433098 +.83452518,.87364861,1.3044679 +1.8134325,.59907779,.19300289 +.69323709,.04027587,.31140583 +1.1985215,.98132978,1.9074503 +.33950099,.45349055,.83104716 +.97301665,.56161643,1.5081789 +2.4724856,.02895582,1.3547371 +.77025771,1.9364464,.05244906 +.52854583,1.9107057,1.552277 +.32222159,1.5264816,1.2943688 +.61280953,.41943708,.7115298 +1.3534586,.17838,1.2504005 +.97340629,.47278549,.13423334 +.58709661,.96318619,.31321372 +.38889159,.56808927,.49577218 +.58593453,.75368551,1.5765644 +.55796916,1.7814586,.19536447 +1.180546,1.358843,.8010922 +.73551946,1.3538087,.0027829 +1.0462647,.0763364,.00247126 +1.3424061,.63864659,.77387302 +1.6658926,.83469303,2.2431393 +.41383584,2.1336378,.48885902 +.77291981,1.5668634,1.0791143 +1.2644127,1.7801156,.44604267 +1.130296,1.6610216,.12423289 +1.5782184,1.0755201,.37349891 +.69045351,.81915138,.79680224 +1.3234326,.91476975,.06664601 +1.1811957,1.4062487,.80700548 +2.0083996,.17680456,.98709018 +.46261696,.23175221,.01067474 +3.2127678,.03815668,1.6442301 +.36154689,.43831572,.7997916 +.77318022,.65490862,.25826721 +.49402372,.87702055,.71763448 +.85890614,.84044133,.26689859 +.32058587,.55139731,.45398535 +.34571254,.99026385,1.0475011 +.74678232,.22115203,2.3098165 +1.0151751,.06341864,.32729785 +.61651794,2.3787309,1.475657 +.49562917,.93974816,1.4108631 +1.3356005,.20363679,.27830766 +.59396752,.70846675,.16877866 +.3812696,1.2311064,.98706525 +.7961259,.39139488,.28677761 +.49446456,1.4522729,.51819267 +.74246561,1.0921163,.31163861 +2.2165121,.04991997,.72154991 +.69703427,.48505247,1.1704594 +.95819057,1.5374716,2.108645 +.89084883,1.0631979,.03026477 +2.1420193,.54686213,.97881125 +.80636384,1.2734467,.19942664 +.43715564,1.9879804,1.2810791 +.81918925,1.7718449,1.0727397 +2.3881572,.58062353,1.0314589 +1.2802522,.19724566,.34145129 +2.5635817,.3001366,1.1462 +1.4698295,.25279748,1.65112 +.53638941,2.2411653,1.2576299 +.71792896,.43117922,.58988346 +1.5124346,.11807219,1.7203358 +.99940132,.18038483,.20770982 +.73272069,.12592947,.71174084 +.79907607,.79184634,.73311728 +.47673262,.17241095,.91580285 +1.1176774,1.186681,.33853762 +1.1905432,.39687587,.56938473 +.49489934,1.7603571,.05701126 +.29948069,.10145817,1.8926449 +.39503618,1.2624655,.5627933 +1.018491,.7014736,1.4214349 +.37996467,1.3340885,.44796948 +.85819812,.11754899,.87865455 +.48786722,1.2759038,.14412977 +.57256297,1.1735409,1.1233535 +.64181066,.9533652,.17521673 +.47876689,1.7447083,.34667789 +.78947241,.2690254,1.6149697 +1.2981901,1.8389263,1.1241515 +1.1684545,.56963495,.74975836 +.8162634,.26228191,.07541883 +.76050214,.35250969,.43034019 +1.2110207,.12144527,.38828691 +.8189342,.64371878,.19242193 +2.1392407,.57068978,1.6196776 +1.0438889,.61687955,2.0027391 +.37194142,1.2001685,.99395018 +.69397534,1.4709095,1.0747343 +.8251957,.37037295,.60370076 +.95597102,.32521025,1.0606158 +.43414411,.73389616,.40278764 +.6366567,.70933273,.01029542 +.94071067,.97799153,.44085062 +.45655949,1.4993825,.14420609 +1.3108294,.14982335,.37299666 +1.5126028,.4728019,.02205374 +1.0156078,.01802836,.81549886 +1.3933891,.35135716,1.8881986 +.7815482,1.9677501,1.6335496 +1.0835647,2.5644846,.39357417 +.69450173,1.5198883,.6581693 +1.2579033,1.1070315,.65697463 +.83083758,.11554653,.70688125 +.88515456,.21003025,.73531701 +1.0626662,.66339281,2.2121608 +.5955884,1.3007144,.74706035 +1.2891866,2.0588024,.64517473 +.98950012,.36487508,.71802113 +.75328972,.70824441,.64873948 +2.4073954,.12081852,.5980511 +.65482921,1.0175917,.20561216 +.33938064,1.5448029,.3564181 +.38120751,.9242529,1.5141572 +1.3786898,1.0823727,.5589945 +.83199067,.16296849,1.468476 +.45540209,1.232065,.13812347 +.52911894,1.926251,1.5537233 +.75613914,.82682701,.40303162 +2.2900812,.63267629,.31011785 +1.4381623,.81561091,1.2540186 +.48639651,1.3149319,.13599555 +1.4930993,.7244617,.42779243 +2.5564394,.77089142,2.2402364 +.51471031,1.5849225,1.1812324 +.68840302,.36735317,.16775796 +1.2112467,.45749895,.97937825 +3.093497,.00167555,.12422739 +.36455829,1.1310177,1.0520602 +.89080254,.0478734,.12692745 +2.1345939,1.3486337,1.1158652 +.68424933,.69113573,.08128289 +.3444974,1.8328554,2.4480017 +.98530841,.21024307,1.0141664 +.60594588,.11365192,.07844584 +1.0503623,.39532085,1.5881183 +1.2574289,.33663949,.24943238 +1.0250117,.43227627,1.9741216 +.99835203,1.0598147,1.7250955 +.74527216,1.339417,1.0991679 +.9293462,.40476479,.49120653 +.69841573,.75592423,.37743795 +.36510873,.39280777,.97821077 +.44366857,.07253968,.98614253 +1.0140254,.36188721,.24835741 +.80207481,.3323373,.57627752 +.42384584,.25347371,.82307185 +.68005568,.86277359,.54093145 +.55733933,1.2176327,.68112211 +1.0668569,.49934117,1.774552 +1.5273058,.11670191,.68777555 +.67735302,1.5431223,.33949922 +.45983512,.12933299,.19174818 +1.194703,.14471314,.12103141 +1.2380064,.73060994,1.4852383 +1.9082972,.3147343,2.3101635 +1.7013115,.3672357,.08910496 +1.2064599,.56047586,.08725885 +.81492724,1.2551853,3.342375 +.33696963,.40031732,.7770036 +.978779,2.0050065,.77576939 +.29988189,1.2521116,.70388504 +2.6541147,.85876396,.52726388 +.42948635,1.1639745,1.0606523 +.36737023,1.195938,.78064257 +.63907693,.40777424,.2333809 +1.5705094,1.2726781,2.166634 +.68032425,2.4346416,.42562326 +1.4068582,.14662321,.26243696 +.3832098,.61228082,.41282049 +.62023221,1.9301583,.41630128 +.39161208,1.2714891,1.0599786 +.82674274,.81849343,2.1796064 +.68455867,.20140821,1.0918722 +1.4201948,.23525843,.71716593 +.62924938,1.1478951,.56995566 +3.7666209,1.023402,.05327859 +.38735614,.80528845,.15496094 +.694191,.75072351,.11974751 +1.2404519,.56700926,.96671616 +.47319969,.80427614,1.5252726 +1.0244073,.24746335,.12835618 +.52412434,1.2490967,1.3491557 +.96733608,.40441173,.94624853 +1.3504313,.54704514,1.2142914 +1.3468585,.6781862,1.6206108 +.46011646,1.3640501,.46605905 +.96080783,.65544316,.23797222 +1.7202995,1.8721278,1.60322 +.49663613,.47382675,1.1867186 +.64474784,.81620632,1.1602948 +1.2339543,.9546428,.34535347 +.73317039,1.585891,.1038887 +1.2919615,.68811641,.42310298 +.74289697,.87563,1.2097565 +.83833716,.98315263,.56542511 +1.3175078,.43323469,.11761065 +.37181947,2.619053,1.6941129 +.38330274,1.9940938,1.7180173 +.77474871,.81677571,1.321452 +1.3745048,1.5334579,1.4893726 +1.219878,.37593676,.17239525 +1.0700791,.79336807,1.4077117 +.69827342,.26392401,.44766809 +.67546681,.65406576,1.9547489 +.6101231,2.3645181,.7348111 +.781957,.1587776,.92271154 +.99028741,.2356846,.43690867 +.73402518,.64325458,.15586901 +1.2975698,1.2649624,1.0643282 +1.171914,.80567897,1.7637011 +1.4630466,.25343971,.7117168 +1.7584593,.52234447,.81678962 +.54941745,1.0813781,1.2718772 +1.1107892,.62933604,1.2113907 +.30102643,.06900357,.85700606 +.48598092,.00417844,.63727894 +.44130764,2.126473,.29117924 +.55649343,.83675304,.31744708 +.48131816,.21814687,.25175648 +1.0762867,.37917795,.39916798 +.75751723,.4462959,.30511094 +.50794848,1.0241652,.27108676 +.74003336,.32191847,.21035948 +.87504492,.91869379,.27930598 +.82299784,1.3285826,.00174876 +.34293683,1.8250234,.48024091 +1.2111867,.56693703,2.6452309 +.54095333,.96703249,.51053853 +.35425437,1.1562738,.15181915 +2.2054174,2.4194657,.55386291 +.58840214,.20347204,.86849588 +.63454735,.14438209,1.2514916 +.9974041,1.9328,.00130595 +2.2633729,1.3083448,1.9501358 +.41604741,.05239068,1.0080957 +.66391552,.71228832,.43419517 +1.0693274,.33808625,.91086995 +1.8286338,.15055492,.31296067 +1.3507736,.26002034,.72699618 +.25546296,.7533647,.98594529 +1.3214354,.47438409,.45680154 +1.7078424,.19654409,1.6879829 +.71778508,.90014271,.24713409 +.79896017,.28677101,1.6037703 +.5847365,.66449751,.00570305 +.96144013,.27792171,.30957834 +.98982153,.33233564,.99922298 +.46204776,.14122517,.9786252 +.74785596,1.0031145,1.7654507 +.7074285,1.5166983,.46604165 +.67458619,.12400287,.76781333 +.5570223,.58325812,.62245047 +.57269008,1.1034938,1.8212712 +.65330079,.45373154,.76476799 +1.538727,1.7529423,1.2482968 +.31893807,.74067182,.78710032 +.53799682,1.8191372,.50332313 +.73579327,2.0017378,1.1408823 +.77688976,1.1122507,1.7156779 +1.0254536,1.0373544,.78018318 +.68311867,1.4747345,.8559661 +.37760099,.35317324,.90174863 +.59838329,1.5986858,1.1839831 +.41396633,1.4733892,.12530042 +1.1558811,.905064,.07773478 +.63338732,.61614938,.81351859 +1.026439,1.0768889,.26858402 +1.0354928,.98059488,1.6124313 +.92397358,2.7238216,.08905121 +1.25976,.78338228,.52640134 +.70366278,.8087035,.86707281 +1.0236727,1.032258,.6490859 +1.5016506,.46184111,.7402015 +1.1195069,.59035465,.8734875 +.70519669,1.813898,1.0107834 +.98019345,1.1836724,.68809336 +.78457608,.51938406,.46827106 +.82738393,.05763534,.70903228 +.50455224,2.5044478,.97920884 +1.3707304,.65686433,1.7436064 +.36250152,2.1056687,.36745433 +.54810078,1.3326658,.15521582 +.68831061,1.2878422,1.4529434 +1.0225745,.63431867,2.6201798 +1.4756278,1.9113832,1.3255579 +.54304028,.89349197,.95732903 +.64204417,1.605874,.3967655 +.7813832,.25824743,.55560182 +.65283411,1.2851354,.17682915 +1.3007181,.57681789,.9623603 +.76358628,1.158044,1.2201108 +.60886814,.0597319,.89617841 +.65407636,.30477503,.89398757 +.40772798,.06635954,.09943991 +.90935849,1.3936873,.81836675 +.50699571,2.4818856,.91378366 +.77275873,.03695101,1.4314854 +.50105958,1.3315607,1.2282288 +.21801177,1.5469055,.38181296 +1.043242,.86172019,.02351863 +.66486826,.33305454,.08261585 +1.0511477,.63662428,1.8049792 +.60165387,.74994765,1.4458668 +.84699945,1.2253476,1.4965752 +1.1652405,.7618516,1.8164161 +1.0305469,1.2543857,.28629338 +.79735615,.93265862,.09332711 +.9474132,1.9667846,.30829694 +.42905205,1.3481153,.59196835 +1.2183792,.48046258,.32459306 +1.4773409,.42361824,.45406042 +1.6839233,1.9361379,1.3010687 +.61801819,.22553938,.90718554 +.72372456,.02777275,.25294719 +.55625776,2.0818246,2.3739018 +.24173936,1.1140782,.40532661 +.7347087,.64510251,.57747095 +.44476684,1.1396368,1.4487642 +.37931497,1.1499338,.38806108 +.43758422,.78837656,.04344433 +.8686045,1.1500525,.50834788 +1.0151438,.10318273,.11290218 +.62303436,1.2031838,1.4010875 +.63687277,.62859365,.39890127 +.68230157,.4720012,2.9759523 +.93885541,.11754361,.61210185 +.4035043,1.1931506,.77444887 +.26778037,.67132149,.94498792 +1.5630203,.26832744,1.2388924 +1.4938619,.84553302,1.3328568 +1.9662839,.27865598,1.8107599 +1.233251,.10124417,1.8035441 +.98801519,.84715356,1.995069 +1.2406369,1.2327624,.321283 +1.5778294,.13526311,.87456697 +.46936298,2.4311216,1.4487833 +2.2888687,.43076704,.65043946 +.42584462,1.0002415,.59289745 +1.0635758,.68799861,1.0704024 +1.2282721,.56515642,2.1677972 +2.1761717,.6135596,.85288758 +1.2369625,.06609289,1.9912364 +1.767918,.77924352,1.2232675 +.81072912,.52947824,.90185857 +.44587921,1.4200654,.11656903 +.92621341,.53974637,.34927581 +.87937718,.10672611,.67034471 +1.5061959,.98839163,.95690334 +.56568835,.10921941,.7001167 +2.2161617,.54729396,.25325258 +.34257318,2.4041074,.44974632 +.97864692,.31618541,1.8839904 +.41704678,1.8952982,.21013848 +1.0092527,.79789652,.6989297 +.84095588,.66785923,.29763465 +.88500333,.3198325,.36478328 +.55781435,.86182031,1.1915245 +.54163184,.20903029,1.8827593 +.69228345,1.0996187,1.5023013 +1.0756414,1.077243,1.2189259 +.86233088,.98318606,.30530457 +.71930964,.37381028,.59830437 +.78235125,.82101766,.46581179 +2.2280707,.23501917,1.094858 +.84313188,2.4937483,.98358293 +2.7096177,.66301178,1.0692146 +.38339912,.78711211,.7468994 +.4147965,.98093473,.61844971 +.66248153,.73294586,.71249528 +.77941307,.15112884,.88486214 +1.4578992,.03904736,.9045132 +.51279247,.90575972,.68012245 +1.6178154,.13993742,1.1069297 +.29774949,.62280026,1.1734022 +.82936568,.5637234,.75627205 +.71870626,.6061096,1.0593767 +1.2716006,1.3805406,1.9924243 +1.5719628,.39783918,.83313117 +.32517049,1.855143,.3952861 +.7966082,.5086156,.67151867 +.67042332,.42131535,.71811373 +.64881366,.93377583,.19169152 +.53227332,.18580785,1.6656729 +.82958782,.21811516,.84647948 +1.2850814,.16381164,1.1565101 +1.2243556,1.1877342,.76799764 +.48349298,.74168259,1.2703553 +.66826902,.28607691,.00409892 +.23545973,2.7399197,.06727716 +1.2718906,.47818021,1.7289223 +.63342648,.32687598,.06689434 +.62889059,.92604479,.32218124 +1.0243076,.28275078,.92380612 +.48901014,.8517228,1.4960422 +.58614574,.14816397,.49528926 +.45609656,.87336167,.61679147 +1.4175559,.6233222,.91127648 +.82121089,1.1330002,.42019859 +.86042867,.15105451,1.4459891 +.61888764,1.59138,.6375023 +1.7556422,.70127805,.52284859 +1.4596161,.76330493,.67110239 +.65889316,.24441142,.50646518 +.68181689,.07993999,1.6328186 +.47951369,1.3714385,.29317359 +.54353482,1.0432557,1.5849423 +.66821115,.18761334,.05120767 +.60368702,.89449145,1.2555936 +.80567208,.04223844,1.2819486 +.89696315,.34148311,1.1690345 +.45102497,1.8229985,1.3368334 +1.5223754,.22954415,.60016175 +.8544923,1.0088829,.28518732 +.83197785,.73083851,2.037483 +.42199343,.63389294,.08158522 +.6152638,1.5246324,.1275581 +.93801798,.58911772,.1989823 +.59140238,.46088927,.40370557 +.33142606,.92740329,.03897414 +1.1345851,.42105176,.50546653 +.77786018,1.2429577,2.430391 +.52429336,.5344636,.30943299 +1.4357454,.69273493,.39357802 +.80804463,.48915583,.36943353 +.68054387,.31520876,.06630518 +1.9169559,.10136141,1.9505434 +3.8610636,.76516713,.53531987 +.64253949,.66006484,.53684195 +.42450286,1.182226,.34339686 +.29439616,3.2273624,.5934392 +.5506331,.4259656,.81502406 +.90281563,.51837412,.7907685 +.87932158,.26559919,.31391779 +.32644504,.13103162,1.4317312 +.69018634,.03099103,.28722878 +.37599715,1.6566751,2.1852224 +1.0098049,.45264027,.40352908 +.57829356,1.1863987,.81224019 +.48680095,.08839295,.7808921 +1.3036278,.52404188,.73462228 +1.385822,1.0904147,1.3794324 +1.2386538,.23318011,1.0200551 +.35000521,1.7440257,.15356722 +.73549369,1.2364204,1.5411783 +1.6375666,.38276859,1.6589189 +.83072129,.71700241,1.1975249 +.95848348,.0806073,.02537189 +.48875182,.40688114,1.0713895 +.74432909,1.6443026,1.3423111 +.64733079,1.0097302,.01825946 +.50192046,.39329228,.92515337 +.91063702,.27500043,1.4909678 +1.0011197,1.2503028,1.6966664 +.99922894,.86903283,1.9322742 +2.0309416,.06355228,.00157301 +.57579256,.01778202,1.261375 +1.3871256,.27905769,1.8980699 +1.1846307,.29710072,.93516683 +.95709855,.10728335,1.3277105 +.4649247,.27979088,.10438188 +.71543948,.44909976,.32658887 +.63273193,.30934241,.86050064 +1.3112708,.59330482,.31105988 +1.3116177,.72011368,1.8783231 +.9907457,.51205559,.13910438 +1.6153489,.08180544,1.722554 +2.5581846,.60372243,1.7459223 +.81094503,.06403252,1.3194317 +.39223342,.44335239,.56318179 +1.8115398,.06368804,1.5948336 +.84912231,1.0469901,.38289827 +2.5044433,.21226339,1.0493598 +.60872576,.67831247,.07001068 +1.6408518,.722929,1.4263374 +1.0578403,.79178672,1.9209884 +.5086083,.08513257,1.4577053 +.70846477,.29442263,1.7070103 +1.5628934,.82584503,.48592844 +.66945903,1.621634,1.7653471 +.63066324,.60843353,.88777979 +.62123442,1.7575374,.13972529 +.31808096,.93186356,.68659961 +.90756846,1.8455304,.14149975 +.67359456,1.6715071,1.1239559 +2.522977,.80842325,1.3458785 +.96089056,.57968812,.38890893 +1.1873107,.54945496,.37868396 +1.3710821,.79266115,1.3556089 +.36155436,1.2333884,.72051541 +1.3294262,.58813492,1.9977796 +1.0114785,2.4485575,.32771384 +.73921108,1.3524743,.10995234 +.9061136,.18365021,.94690945 +.92653854,.64041533,1.4992863 +.90660288,.15551039,.10531115 +.55165726,.0869307,.19780354 +.66443445,.69938794,.17745881 +1.0634704,.56275905,.95418415 +.92780654,1.8553094,.17792834 +.36648191,1.32186,.03001133 +2.2628237,.08833893,.95588998 +1.1106059,1.1684443,.81929824 +.63446536,1.7031845,1.3108775 +.88579895,.5938326,.67456975 +1.1441725,.46227286,.55133913 +.54974288,1.3633892,2.1712565 +.75482127,.30821608,.20985662 +1.2775646,1.2115791,.78301956 +1.1040264,1.0730996,.98575548 +.82923068,1.2828263,.72672687 +2.0927695,.37518147,.49642762 +2.6051185,.64171208,1.426251 +.61984682,1.7720788,.25627384 +1.0296135,.38395853,1.6902303 +.78989593,.13820763,.22816013 +1.5075036,.09986541,.09798964 +.90535348,1.2283432,.73997922 +.53107603,.42197799,1.4823721 +.77887599,1.4241427,1.919072 +.38788405,.3064243,.12763502 +.603255,2.3476245,.76890617 +.42374425,.65015357,.67829511 +.39865718,1.2138495,.98442047 +.58004165,.16427551,.2437419 +1.2417827,1.6504899,1.9466456 +.78587017,.8247822,.14165307 +1.5990264,.11183881,.21160243 +.71518856,.96274403,.1654606 +.83005649,.66611264,1.0993605 +.2631693,.20797549,.67370383 +1.3046901,.7182308,.35681015 +1.1694328,1.3818258,1.4649878 +1.0871418,.96881709,1.7877819 +.85711955,.05381153,.33208548 +2.6588527,1.8691846,1.241471 +.64334153,1.5150067,.51749225 +2.3331172,.03584578,.45264862 +1.891885,.09364824,1.1079094 +.41206058,1.7237208,1.294721 +1.5505433,.15588402,.11726472 +.70291194,.840475,.01782527 +1.5176942,1.3571608,.51626391 +.91732207,1.2104334,2.1441608 +.64952512,1.284958,.71218729 +2.2629885,.72500028,1.4609486 +.9157605,.30932628,.82437077 +.42659509,3.62711,.34489407 +2.0764755,.15101091,2.8723142 +1.3016695,.45245111,.26527673 +.73228014,.38905305,1.0062065 +1.8104388,.04965546,1.9658288 +2.1597487,.11941019,.0438434 +1.3602359,.31765156,.18086776 +1.1526828,.20610366,.53801615 +1.1446085,.78712348,1.0478643 +1.7892861,1.113422,1.8890161 +.89447168,1.5463098,.58722494 +.31093341,.63689319,.54514238 +.77941323,1.1282991,2.8614504 +.79640438,1.6730395,.25745985 +.32701671,.55850307,1.5366344 +.34515359,.38434313,.18938805 +1.348458,1.4584413,1.4294355 +1.0905667,.60303939,.70401555 +.93704124,.73716836,.39567315 +.16441476,1.1937163,.10683238 +.475927,1.4441055,.88729662 +.7651832,.42235408,.76788111 +.6894845,.45317178,2.8297377 +1.2351651,1.6089556,1.2413227 +.84835168,.70851448,.27811613 +.89940289,.44428295,2.4247329 +.96178859,1.0449725,.31588391 +1.2814485,1.1655641,.62871059 +.7617804,.52542321,.03601487 +.88510048,.12399567,1.5454181 +.34647345,.58188941,.25753543 +.601931,.23917071,.02561574 +1.3099906,.33098984,.78007269 +1.7877125,.69414048,.07475105 +.78434197,1.4858103,.27676414 +1.5522448,.35830109,.8594794 +.33304555,1.0935314,.44672576 +.74439264,1.0274393,.21105813 +.41817729,1.9297668,1.1019955 +.70597211,.50249371,.10137685 +.85355822,.82435645,.7317289 +2.1294905,.48890443,.50359521 +.93826229,.12161951,1.6666311 +.51362107,1.0266688,.91872671 +.47078014,.01019258,.27413788 +.99946085,.25520054,.24637888 +1.1406285,.26509427,1.3718277 +1.0967533,.07955355,1.2418306 +1.4516193,.53782447,.62880351 +1.0675218,.1640191,.51726017 +3.3984601,.21669371,1.0858314 +.20776629,.26667433,.18053947 +.61275634,.49342965,.02913908 +.64626648,.78270399,.88737416 +.5698873,.87089255,.30883112 +.79545704,2.5411042,1.8924827 +.60097818,1.203726,1.5439994 +.54330713,.35953407,.64405151 +1.0886077,1.1309199,.39126885 +1.0401689,.52777349,1.1962336 +1.3446956,.82825933,2.1382708 +.74767928,.79674031,.15419788 +1.399706,1.808304,1.4536863 +.93580309,.02434302,.32605549 +.55762287,1.5464124,.1224391 +2.1720563,.0226294,.2114568 +.58552398,.82992321,.16372588 +.68810364,.16273658,.25461524 +.8540284,.01551845,1.0006076 +1.1472292,.5160431,.93496191 +1.0829149,.96310349,.98044295 +.5497749,1.3898502,1.6496492 +.24809771,1.2718039,1.3998769 +.70208747,.88883613,.68580062 +.74206365,.72519082,1.3936745 +.74232983,.23650249,1.0362136 +.44367146,.45517319,.23677404 +.57742154,1.2334023,.30518551 +.71334728,.40510708,.24449846 +.64509024,.4383839,.39374422 +.75390466,1.153156,.38959557 +1.0619402,.54908328,.08771917 +.46457882,.96503668,.62503782 +.54510997,1.5224948,.34789243 +.63761992,1.4815031,.16245628 +.4637462,.68436127,.52632719 +.63280481,.39089519,.89740023 +1.0003331,.72538412,.83774561 +.92852432,.67514223,.7711365 +.61353504,1.4128919,.1163385 +.91263099,1.599555,.57927497 +.64483665,1.1517766,.16593396 +1.0060819,.93299005,.65674679 +.33437551,2.8958794,1.0125029 +.76084932,.03923219,.22505402 +.91797836,.43469082,.24437117 +.93099058,1.5425545,2.5218066 +.74628902,1.1717242,.75510993 +.54144751,.26141485,.27837178 +1.1014037,.14826661,.86058018 +.76596451,.51059799,.40464319 +.44998355,1.206497,.76489737 +1.3319932,.18545043,.18849285 +.19623323,1.4048233,1.1573945 +.43530611,1.023779,.5618468 +.47899564,.89717652,.54763584 +.79589283,.21612351,.06731587 +1.3690923,.38072876,2.4385097 +1.8751674,.11951431,.50307921 +.67311405,.35219047,.1404408 +.29038624,.30834977,.81946326 +1.6903334,.18322243,1.8186254 +1.0006251,.80901478,.87189095 +.70889606,3.0322088,.24251527 +.76534078,1.3525924,.42748598 +1.3139578,.66531835,1.770909 +1.3066409,.97693569,.75421191 +.47020199,1.4366467,.25191306 +.67840851,.5495026,.48954075 +.84551385,.56606566,2.0022296 +.72128152,1.2943845,.1180128 +.97468306,1.3785292,1.3960396 +.65112255,.25663731,1.6449302 +.89250181,1.8894021,.56746237 +.87186121,1.9889687,2.0730947 +.2400691,.79323616,.24644319 +.44278193,2.2165399,.72840239 +1.0108206,.96063834,.99916097 +2.2963271,.22084116,.83177486 +.62954369,.24526235,.36962036 +1.5978657,.73367411,.28810368 +1.4499996,.19836214,1.5976853 +.47437632,.50695717,1.1909022 +2.616464,.00247365,.04619271 +.53105723,.51308612,.41735082 +1.2420191,1.1000079,1.0602995 +.42030675,1.8191787,.93525367 +1.1546232,.32635063,1.5712419 +1.1905206,.24983316,.35832782 +.97157747,.35409823,1.1717312 +.94961839,1.539662,.69534626 +1.153049,.21818076,.02789383 +1.4668402,1.4523606,1.5134148 +.43657942,.79932067,1.0009928 +.66273658,.32828365,.43009538 +1.9344779,1.3629388,.45431366 +1.9232056,.47933632,.29800557 +.81773732,.67339899,1.2860089 +.85376875,.21894908,.06090688 +.56180696,.99449079,1.1068924 +2.0144901,.70048611,.93474163 +1.2249708,.05332547,1.0381058 +.68696308,1.2198019,1.0236655 +1.2321931,1.0554017,.88038591 +.21517653,1.4237157,1.1899101 +.64187123,.70595609,.60827687 +.82134109,.83540843,.78665574 +1.1677143,.39683344,.46173573 +.60256583,.49853791,.76988427 +1.2693216,1.0843831,.01422755 +1.0444811,1.897266,.01272557 +.76388237,.68611656,.61002416 +1.3782752,.18044388,1.3340659 +.84175626,.18744026,.0920904 +.52442927,.77657934,1.244083 +.84217605,.96648198,.40084882 +.88144964,.16898368,1.9633876 +.40942893,.5672466,.47083798 +.72087888,.88718443,2.518046 +.91823247,.69862683,.24753601 +.4781963,.8499386,1.8157084 +.66441049,.91837913,1.3929587 +1.107066,.1786,.25533124 +.31361151,1.7907387,.10015043 +.42364308,1.8733277,.3395968 +1.0049339,1.1515179,1.2027589 +1.8473577,.0286493,.30837974 +1.7422834,.9587606,.56252499 +.64731959,.07820098,1.0510952 +1.5726601,.85185437,.7875751 +.78003784,.08342727,2.0295397 +1.4381264,.77646806,1.6462879 +2.1050477,.01573889,.01098816 +.53619237,.8042114,1.3854905 +.57351764,1.7496842,.15600107 +.44147608,1.0327533,.07880477 +1.4026976,.27807421,1.2040018 +.36069062,.9072154,.34055209 +.9005711,.69995247,.11124845 +.53659638,.25757575,.27294875 +.75609559,.39948646,1.9458451 +.57440904,1.3815245,1.3271949 +.73330745,.77372286,2.3050657 +1.0702935,.70208764,.65113967 +1.0252027,.25418293,1.0768209 +1.6616641,.64192365,.001771 +.54801111,1.5752397,.26886432 +1.7645184,1.4543728,1.9010433 +.86644227,.77608463,2.5494013 +.40367817,2.3510783,.42954891 +.52439664,.50416357,.60089518 +.9256525,.20448644,1.5425992 +.58546142,.65194381,1.3214459 +1.3209585,.12579793,.20477867 +.28118447,2.0613296,1.2705591 +.60367707,1.1551538,.99746559 +1.2419605,.14593523,1.0210785 +.34696913,1.0303375,.83558292 +.95938615,1.340276,1.5415343 +.40177246,.0795647,.28086765 +.37661562,.68524786,.75071641 +.6599319,1.6086752,.06785454 +.39431616,1.6784585,.43942966 +.77526437,.39733328,.5537349 +1.5515281,.02043422,1.3198711 +1.0029717,1.0294522,2.8075654 +.88310492,.71300237,.03916898 +1.5507376,1.6171855,.43934439 +.53088345,.28911991,.13207295 +1.5200003,1.4794626,.31004392 +1.5507931,.32311716,.32357994 +1.1606919,.33596486,1.2837432 +1.1005206,.14390817,1.0113076 +1.2815505,.01146508,1.1564907 +.67231279,.38838,.88414975 +.54359915,.66211696,.32986298 +.71970927,.79059803,1.1683487 +.81541277,.2190525,.2692622 +.61008182,.008451,.86745742 +.69470727,1.4049818,1.6707381 +.76677177,.37682989,1.0554074 +1.0290005,1.1252405,2.0697156 +.48681882,1.2293661,1.8066232 +.72850586,.24452266,.61663782 +1.3343909,.89532223,1.0022759 +.42538517,.37847769,.92223457 +1.6501571,.19022516,.87041601 +.51917296,.90982849,.57413805 +1.110452,1.2219295,.68526706 +1.2321867,.11228213,.30551885 +.39549815,.87361309,.19939504 +.60156189,.09589385,.12695387 +2.2462819,1.026048,.81324722 +1.3663175,1.1698616,.4215164 +.66812254,2.828459,.78054853 +.65469833,.63293153,.17076424 +.82884179,1.6848422,1.7363887 +.7089417,.98429561,1.5709842 +.54815873,2.0619316,1.8711067 +.50850329,1.7812351,.17714984 +.49598577,.66280535,.21153356 +.97751387,1.8120499,.4751842 +1.3500784,.52695562,.71125219 +.34586156,1.0195165,2.268315 +1.2140486,1.2774299,.82745019 +.94073359,.32311325,.18484708 +.52878216,.72212807,1.2298133 +.38163987,.36150851,.31273559 +1.6372935,.69275447,.45561202 +1.5138226,1.0896287,1.1516429 +.84064308,.89844368,.30461119 +1.2734647,.08562101,1.9626604 +.67231753,1.1473201,.19233192 +1.0335842,.47778375,1.2478813 +.43057214,.60987051,1.2161317 +1.9370227,.15662768,.70738128 +1.6396145,.07313038,.7427246 +1.6489494,1.7388826,.2849679 +1.9527705,.25102613,2.7709555 +.568653,1.0591647,.08839932 +1.1208939,.45198618,.35989825 +.35294523,2.1245776,.7089477 +.56573468,1.447058,.23420311 +1.5597514,.0338727,1.3744448 +1.0690719,1.1248482,.64701592 +.84731927,.80908996,.32350985 +.62596095,1.9756762,.52395621 +1.3341534,.46477146,.69643942 +.48491365,.30855352,.8581085 +.20269215,.91219728,1.2055196 +.89521592,.13758817,1.7270014 +.81035665,.15375413,.22806042 +.98203752,.61105695,1.8141107 +.67282048,.03964925,.02640102 +2.0804651,.4979232,1.7697417 +1.1076682,.98490488,.43902677 +.42478274,1.9389885,.11299541 +1.7530077,.28971378,1.6189251 +1.2072087,.09229927,.41652256 +.83161251,2.0199352,.51345812 +.77395826,1.6561871,.45893051 +1.5538005,.44756561,.89905751 +.67016551,1.9710714,.19655014 +.40805494,1.3786466,.06610338 +1.2122267,.87866693,.24432564 +.29843724,3.0104981,.29465878 +.7689856,.99980014,.21250591 +.72929313,.89281324,.43400069 +.73017093,1.5332923,.75319611 +1.1687427,.19950787,.89751576 +.59577123,1.4418487,1.0862644 +.82363904,.41205193,.09042025 +.69847202,.60554364,.01618492 +.93809042,.46887085,.01683668 +.95802012,.25710795,.18574147 +.56401733,.41857026,1.5943409 +.68183107,1.4449189,1.3439383 +.93353832,.38151897,.00366689 +.46136494,1.1881765,1.4627369 +.81817871,1.5310226,.69804021 +1.3458947,.39217147,.80411131 +1.7374522,1.5034201,.07360819 +1.0220231,.37181047,.10992399 +.94431546,.18039911,1.937377 +.88167959,.48016848,.42106166 +.80313137,.67894715,1.2067335 +.81947507,1.0475692,.2135946 +.83443178,1.4835095,.96566419 +.69787212,1.1359754,.92924154 +.7177048,.0967349,.21462257 +.94027712,.55895428,.3574262 +1.0033145,.09680927,.74714515 +.59768344,1.0672805,1.4374594 +2.0298435,1.0187378,1.680222 +.72763941,.03965192,.28961487 +1.3173073,1.6327696,1.1615729 +.72066137,3.6543574,.39957596 +.58604322,.07422554,.7008324 +.67364591,1.336066,.24752363 +.45976755,3.0070512,1.226892 +3.4982363,1.3945628,1.4503451 +1.4397447,.44079068,.32615763 +1.3056158,.439929,.47311035 +1.7352652,1.1350725,.01775016 +.35697227,.63151563,.67463507 +1.4971325,.68931501,.15120243 +1.611563,.46702792,2.3767627 +.33357016,.71421109,.06171243 +1.0351073,.24040421,.15118399 +.7853469,.1606033,.23170987 +1.0463517,.50375896,.50550809 +.23020098,.59625719,1.1217749 +.7489565,.98490968,1.4903771 +1.1157311,.21727625,.64135362 +.60553062,1.4970212,.22506381 +1.3913737,.75822373,.04505568 +.99077079,1.0984972,1.1082628 +.60663137,.14042255,.64949719 +.70022834,.33058327,1.0735846 +.92239603,2.1994026,.70445564 +1.8931649,.12652984,1.6736874 +1.5404815,.1395824,1.3905349 +.62839403,2.2084588,.66971134 +1.872742,1.4250861,1.4091621 +1.0988468,.84469127,.46779106 +.78931685,.30845287,.71161178 +.71567838,.28244947,.18378469 +2.7190396,.99111998,.1319563 +1.2956921,.10037478,1.0086807 +1.5316824,.55688196,.05833246 +.75337749,.60281256,.43378391 +.7667402,.81984524,.17321663 +1.2933254,.041337,1.9816536 +1.6686382,.46128373,.61608864 +1.0611584,.11802609,1.8663115 +.80334513,.09954507,1.0470412 +.42610697,1.8103881,1.552786 +.6782551,.84190331,1.6401894 +.44251206,.08007062,1.115 +1.6127387,.12149951,.21378853 +.30009521,1.7935894,.85897428 +1.051626,.31670626,.72660459 +.41320332,.81348308,.49310519 +.5570305,1.6463242,.35962147 +.70051463,1.2400692,.73432293 +1.1845574,.29910927,.4947109 +.41074705,.5621073,.23808142 +.88426487,.47480273,.31978839 +.85414616,.07885426,.99208589 +.80767983,.09446571,1.0844186 +1.676779,.04630037,1.1536825 +1.0914018,.2587968,1.0656743 +1.2354634,1.7350878,.37242879 +.76812661,.39412199,.50015562 +1.5185428,.09295644,.92913511 +1.4259451,1.0672672,.02361289 +1.1412621,1.0639473,.52674529 +1.696365,.7184527,.27575576 +.90136968,.77038538,.81806728 +1.6119533,.60132548,1.2632056 +.72134181,1.3610941,.20675716 +.57797598,1.4022782,.9685275 +.93429058,.68922981,.81543 +1.7668151,.42682553,2.5478858 +1.5000654,.39381475,1.1003217 +1.058048,.30394993,1.1231413 +.56972876,1.2365664,1.4198511 +1.3114347,.16599104,.05111532 +.62714399,.08379614,.82035723 +.34155377,.73145903,1.3758703 +.52095115,.39392192,1.199054 +1.0909694,1.318087,.78744842 +.47974012,1.0199776,.14142302 +1.3874983,.34611784,1.1906072 +1.7449964,.69935816,1.1559621 +1.2968712,.31132208,.67111544 +.36198606,.84210781,.68726673 +1.9217677,.4410834,1.8976807 +.82856634,1.6778526,.6275148 +1.1606893,.19361576,.55599266 +.38432081,1.3147367,.25867545 +.93821455,.02132254,1.6057964 +1.233722,.01134774,.40709447 +.93823661,.09329964,.69777594 +1.2193558,.36393779,.39176101 +.3945901,.10587629,.56277012 +.65139836,.04818524,.1837579 +.58395254,.70017932,.28770666 +.91637748,1.5388654,.76868827 +.84797784,.27691984,.37419389 +2.1688176,.01313496,.5820366 +1.0642835,.17103597,.20227758 +.79797886,.59319919,.71913682 +.57074379,.58251342,.68342629 +.62405473,.45539657,.37585996 +.69646647,1.4866641,.28870595 +.78184201,.20208397,.44526127 +.56078713,.62154206,.4883465 +1.2777397,1.1897417,1.3434373 +.26471844,.83216494,.49580066 +.49090766,1.2462343,.29478485 +1.1367906,.06740099,.24442406 +.39434489,2.2406034,.3771851 +.86373301,.93811841,.29048372 +.61473675,.39345877,.02783632 +.52130281,.2968733,.11337209 +.86216742,.42572747,.42471005 +1.1661795,.56315584,.82249383 +.34061149,.78995311,.58362392 +1.0498209,.20783583,.8765877 +.61820881,2.8886621,.28806178 +1.0732232,1.4218239,1.0622593 +.71098753,.96137919,.74017423 +.56320043,.73782404,1.8362171 +.54700888,1.1671831,.70950054 +.99447719,1.4302942,.45089979 +2.6891118,.84345224,1.6427603 +.30632406,.68241457,.67447639 +.75569761,.45031065,.72847016 +.76953024,1.3465777,1.5444058 +1.0233903,.2218821,.49873288 +.93649177,1.0476655,.94060055 +1.0636419,.46325819,1.5674602 +1.1901595,.04578641,.51713864 +.58165293,.68120748,.04691732 +.49899289,.93504313,.2020687 +.5993902,.51232462,.5066996 +1.7106295,.39254524,.29370738 +.90301982,1.0506118,.33025054 +2.7478653,1.3769532,2.3580823 +1.0230546,1.1848891,.65872731 +.65556729,.9383686,.40286226 +1.6271326,.26856128,1.0307632 +.7105551,.06674286,.27451817 +.75505123,.52272059,1.2762257 +.70360245,2.2828981,1.0787213 +.59771215,.04480356,1.4893714 +1.0671874,.21663916,.15493562 +.7678517,1.5890053,.56869076 +.79748951,.22500215,.96286365 +1.7431267,1.7238303,1.7546394 +.61792742,.11475136,.96768871 +.83669526,.74640119,.08745171 +.23783359,1.1659904,.85212214 +1.379506,.78378412,2.0034167 +.82945898,.14478982,.17832748 +1.1450608,.60418838,2.1747198 +1.4734951,.82726309,1.1642912 +.3391946,.13650776,.5829049 +1.1605315,.07163791,.34078355 +.52979732,.93176003,.63381633 +.81735068,1.5598311,.61552837 +.46508839,1.4229878,.35795236 +.50702012,.30577914,.94811494 +.7293124,.06627109,.40455973 +.38747295,.24851776,.52171133 +.71970568,1.2435105,.15229159 +.72396816,1.8532939,1.0665332 +.46853071,1.1876743,.79761578 +.92213866,1.1255236,.19036355 +.59837951,.88452319,1.0777529 +2.1333769,.7720038,.48539698 +.72751072,.77603183,.36815165 +1.6284775,.42704577,.65604823 +1.0524197,1.5271969,.5220787 +.49874399,.68427449,.08515265 +.9816623,.7900656,.06453209 +.35079072,.82597887,.56050905 +.55431698,.78366237,.15009645 +1.3360066,.0250514,1.3159859 +.5478337,.17183928,.80285937 +.50597476,.66461905,.27695158 +.94076271,1.917618,.7930953 +.31235601,1.235658,.28708279 +.43555818,.00428879,.29795487 +.74705518,1.1477876,.89958804 +.49821129,.94362025,.19647159 +.48152496,1.3623507,.04603256 +.65527771,2.1697884,.28464441 +.3581618,1.6746362,.04868723 +.39661033,.166658,.18745322 +.38703927,1.8767987,1.2085146 +1.151916,.03487397,1.7697891 +.89646463,.19631908,.2388549 +1.1607856,1.0952342,.42305172 +.48084197,.49655741,.19963065 +.50534463,.34897969,.671622 +.42924926,.88962308,1.0135226 +.63189224,1.5515447,1.7224925 +.93486973,1.0786193,.76037103 +1.6915538,1.0960982,.95812457 +.43548707,.19406788,1.6889205 +.56027408,.28030391,.22440052 +.53704976,.58844191,.96295989 +1.2932559,1.5340191,.44833665 +1.9226928,.07111082,.69686603 +.4558846,.08059312,.30145118 +.49335849,.9823473,.02213232 +1.9734345,.05099915,3.553424 +1.8709459,.28539716,.58967462 +.70801216,.49037449,.18387129 +.93976329,1.1177277,.04560194 +.53122196,.56188506,.3392187 +.92782689,.60080906,.79010894 +1.3049375,.18900802,1.1182434 +.34166714,.73527498,1.4229663 +.76448809,.42955268,.1009084 +1.6671902,.62848743,.95257631 +1.7286207,.60412349,.81562803 +.56273232,.28806938,.66104476 +1.4600054,.62289323,.65229496 +1.0338479,1.3189927,.58738887 +.4036041,1.42983,.77837772 +.43725594,.04955654,.10198601 +.94624122,.17227175,1.1102339 +1.2019348,1.3856511,1.5877091 +1.2428512,1.1265018,.28748393 +.62646318,1.8845647,.5416184 +.69208349,1.5013516,1.0723697 +1.2120579,.57667647,.50397207 +.57163182,1.4233013,.87860209 +.58177884,2.1811042,.18662537 +.8732239,.58740452,2.3265186 +.52244615,.74732659,.96042961 +.75092518,.22182359,.16207741 +.79435161,.41195265,2.4329806 +1.2524346,.3449198,1.2904956 +1.0980687,2.0001621,2.2131029 +.87763671,.97684027,1.0814993 +.86409831,1.9411405,1.6618383 +.80149845,.05920637,1.2191713 +.44267525,.43267266,1.3349293 +.71095582,1.1376534,.09969233 +1.098302,.35345422,.66642755 +.42439338,1.2832107,1.2958824 +.70837202,1.3689923,1.2286181 +.85277151,.54717614,.21690648 +.66598191,.53225871,.37832206 +.78718397,.18781805,.14815368 +1.1100806,1.0834357,1.8922526 +.23444942,1.3702448,1.283954 +1.4737939,.14346084,1.3686324 +.87709727,.48330804,1.9134317 +.89837149,.0931184,.85892821 +1.5302699,.04439298,1.2242649 +1.1170139,1.3710913,.02005849 +.8536132,1.3842251,.81716382 +.8056937,.56658346,.28081821 +.8807705,.11788983,1.4776014 +1.0676078,.48804575,.28147628 +.36959064,.99743526,.17031666 +3.1300536,.51490522,.31450847 +.56569605,1.8518713,1.0163875 +1.1784806,.86763508,.21390007 +.66457796,1.5461023,.13571864 +2.1690371,.50547559,.87679264 +.70330908,1.1776696,1.0497549 +1.7738387,.26625589,1.4395009 +.4386385,2.2440703,.91315316 +.50629389,2.2421697,1.6058332 +.47248234,.53630764,.68310241 +1.7679153,.41137863,1.4775969 +.26538789,2.657673,2.4163415 +.65433256,1.1991292,.55145963 +1.179223,.20224828,1.3082526 +.52668774,.97993152,.28116182 +.64039281,.59158706,.43157043 +1.3028647,2.475879,1.6922319 +1.593247,.14118265,2.8096723 +.72653643,1.0948164,.32372963 +.70091665,.27489623,.68467821 +1.4047064,.00444072,1.2449077 +1.685729,.49422212,2.453068 +1.1947896,.12606807,1.2061826 +.84220472,2.099698,.69929842 +1.2552845,.65837571,.50030636 +.96631504,.71484965,.27404619 +1.0448484,.47846321,.67220927 +2.0900764,.01522692,.35452014 +1.7087578,.01911842,.76358368 +1.0093806,2.482688,.96628646 +1.3246375,.58613513,.17476781 +.53623877,.63604205,1.1638508 +.99384154,.92788373,2.0639858 +1.6667356,.01951675,2.2318411 +.91519422,.04629148,1.3708472 +.63602883,.44689112,.32995735 +1.4727404,.30731517,1.0255925 +.3897319,.97718836,.27071304 +.43009462,2.134988,.4339229 +.59490529,.78145897,1.9628712 +.88137067,.03958492,.40414666 +1.4031746,.04855357,1.0424055 +.78508346,1.0799425,.77979648 +1.0773998,.00780161,.47168196 +.83966251,.49997362,.99151966 +1.3771413,.75416947,.49358397 +.76910204,1.6958299,.05272054 +1.0678621,.44889272,1.4523691 +1.537202,.42838221,.47141861 +.64727731,.3381639,.09567055 +2.3802888,.17377196,1.056166 +1.7724145,1.5085779,.98556567 +1.5849892,.16873599,1.9249123 +1.8470427,.6020813,.93971539 +.69433313,1.2075829,.1245664 +1.6714983,.94229135,.82157194 +.74920665,.44048704,.60850598 +.74214645,.35738444,.01491706 +.61303676,.94387645,2.3105217 +.85545385,.75880986,1.0349341 +1.6765711,.11222827,.03078876 +1.0191012,.73154198,.38317446 +.86044867,.01076728,.29651273 +.64645727,.59985647,1.926398 +.76214805,.94609282,1.5209389 +.50080115,.99639635,.51537219 +2.1815972,1.0153933,.45386985 +.97497284,1.4339451,.16951626 +.59910637,.37565017,1.3252119 +1.1711041,2.051048,.57677887 +1.0383066,.2363873,.49250843 +.66509632,.14206166,1.7205799 +.54511772,.44907644,1.2393263 +.76165835,.39629967,.76876512 +.41860847,.69360964,.16109703 +.58332523,.67069906,1.653511 +.95096683,1.0201365,1.3316881 +.60465233,2.3726876,.57415579 +.78082582,1.2168244,1.0598832 +.58069179,.94725091,.45822616 +2.193116,.71135819,.22874445 +.48067472,2.1070761,.25564216 +.64845104,.30062909,.31942327 +.57533848,.00491983,1.2666597 +3.6530129,.58290071,.79239151 +.62604035,.18367527,.33086798 +1.1344012,.90636593,1.7350676 +.46046242,1.4401776,.24492958 +1.3865946,.42071336,.31339186 +.80901464,.81824964,.81105869 +2.3014711,.18917255,2.6612336 +1.1996206,.44975134,1.2387685 +1.5262824,.02182704,1.8274456 +.55325028,.64978826,.20300197 +1.2725778,.15196087,1.3657249 +.44461757,.9491823,.44752392 +.8093274,.2020172,.56570359 +1.3499731,1.1416917,1.1348319 +.35824005,.29681086,.10248612 +1.3804861,.10780394,.35887111 +1.1759258,.10884923,1.2132582 +.74348562,.82368158,.62201658 +1.0345678,1.5517738,.5964722 +1.8230982,.74416035,.06125212 +1.2695891,.86445411,1.1583208 +1.5218803,.66411604,1.1713213 +.48318843,.46508657,.83646309 +.55876699,.5010651,1.2028006 +1.2881826,2.0670119,.28284293 +.73148802,.81804787,.32193554 +.55517252,.26485811,.06502197 +1.8482524,.86224434,.54115894 +.78418133,.1819163,.91157202 +.68052445,1.3608777,1.228635 +.98313305,.09488521,.12376494 +.48943273,.89230859,1.820415 +1.058841,.3081019,.56618633 +.59990517,.30203621,.69802133 +1.7850662,.03561615,.45364372 +1.1776154,1.1572635,.87533599 +2.1622262,.58239483,.09790119 +.78149683,.93247274,1.9557374 +.67922984,.73225343,.69279493 +.80688387,.78552983,.08807436 +.73792253,1.4511445,.59997294 +.77033465,1.7318435,1.4397273 +.91865166,1.4866547,.81382803 +.89071266,1.9470342,1.7555691 +1.0872424,.77173164,1.1283609 +1.4404953,.4660857,1.5664108 +.9245377,.56036278,.26780834 +1.0575043,1.6516391,.05068378 +.92661,.57685849,1.0308772 +1.0056194,.36095106,1.0769535 +.75905503,1.2126881,.05760164 +1.6328516,2.1183632,.63446345 +2.5387381,1.3313537,1.0969228 +.78997149,.33538559,1.296788 +.45337604,1.2564058,.70663327 +1.4044519,.85137821,.99516858 +.27049033,2.2951489,.19494872 +.70499075,.07668617,.43196078 +.42638139,1.6470129,1.2082898 +1.4237315,.42583719,.65621884 +.9870676,.24844236,.447066 +.32802541,.80642664,.03432616 +1.157716,1.3644238,1.2123595 +.58731527,2.8605326,.41324186 +.68615861,1.5874529,.12764769 +2.2887238,.46344196,.49330873 +1.1768177,1.0287012,.27257803 +.68147366,.85072686,1.6828809 +1.4846339,.91148605,.09810022 +.49425685,.23817419,.25760414 +.56686426,.66044626,.81326124 +.38461882,2.0033689,.4254664 +3.0202153,.00868909,1.4736475 +1.0821338,.13243736,.54771565 +.74208037,.61645115,.06618945 +.59782263,1.2642064,.58019797 +.41317806,.63159137,.04463856 +.50167148,.59099635,.05716364 +.56728395,.90751747,1.2069458 +.4588818,1.0839951,.55266875 +.30607828,1.0917474,.92927985 +1.6398885,.10895882,2.3517632 +1.2120938,1.6823694,.87627807 +.47789541,.6378351,1.2951561 +1.0365786,1.0357111,1.2585806 +.64102742,.79450355,1.153355 +.5505499,.70518795,.25606523 +.95442335,1.5148844,.86952687 +1.3247417,.88271106,1.7258381 +1.2984909,1.7451747,.81457396 +.51768834,.15785864,.82998573 +.81297242,1.4313905,.75987872 +.66321212,.70566047,.10936672 +.32445962,.89013277,.82591897 +.84122614,.94047612,1.8771333 +.49813938,.72622352,1.4080602 +1.4569933,.88016216,1.1078869 +.92955098,.10077977,1.0756463 +1.1369436,1.059448,.45869738 +.82818073,.63537566,.80732423 +.45244877,1.0972204,.15255778 +1.7230337,.21104887,.31897083 +.98907117,.75732367,2.2864685 +1.1077555,.33314914,.69090197 +.49017796,1.1525177,.61440843 +1.123922,.93335842,.44375923 +1.7406087,.19518466,.91870876 +.52420349,.71380989,.75162192 +1.2166396,.78034245,.69375701 +3.0644962,.15263463,.44391507 +.75613558,1.0848027,.3318899 +.42576159,1.258374,.71029744 +.56752127,.09013566,.13642441 +1.3965554,.23209907,1.0728463 +1.2773155,.02528587,.21541061 +.55505699,.07158268,.60658726 +.71181659,.20236903,.50011313 +.641897,.52172583,.58591718 +.89285781,.12947088,.17288782 +1.4936875,.46803883,1.0798989 +.37438083,1.7184691,.42827735 +.65399329,1.1763962,1.4184433 +1.1617218,1.2809702,.69195055 +.73447291,.75779678,.43387677 +.54811016,1.4257687,.75337386 +.82052915,.19909568,1.1604012 +.6659465,.49982116,.88894998 +1.0613628,1.1266974,1.9435193 +.58721366,.80609398,1.9134095 +1.1816898,.25537249,.7787632 +.72205037,.19377983,1.6052215 +1.0510103,.93665028,.7773807 +1.887208,.71742203,1.3782719 +1.8372676,.01598212,.6790649 +1.2434782,.32348893,1.2935571 +1.6589074,.99578875,.56353703 +1.4149387,.4080596,.74322179 +1.6383921,.07732674,.20114388 +.46840103,.96395267,.82129876 +.35208778,1.1018166,.90088787 +1.1555319,1.7133168,.75274268 +1.6992042,.30045162,1.6326688 +1.5703486,.43835372,.0628372 +.38810477,1.0832579,1.5236108 +.68346723,1.1737086,1.3175729 +.86848469,1.1494328,.53007554 +1.4462788,.00588767,.44342819 +.876837,1.6559324,.71236968 +1.0506553,2.3973397,.5941117 +1.0532612,1.95153,1.0875918 +1.1804699,.39875384,.93551584 +1.0266889,.28076683,.37054673 +.37468492,1.1438997,.75561326 +.92608334,1.1921811,1.175221 +1.717445,.35600309,.49126256 +.82652586,.46980083,.62096918 +.4992515,1.0101233,.06713158 +.7459197,.19818101,1.287709 +.61395128,1.2663138,.66078234 +.56576929,.62536539,.07387577 +1.4151427,1.2668826,1.1810103 +1.388912,.36242468,1.0052446 +.49897673,.83249276,1.1598206 +.43655656,1.0241199,.60953271 +.45019516,.80396412,.63113564 +.32325078,.70701481,.16019928 +.84902819,.4545794,.41479859 +.74185041,.42247381,.89698633 +1.1345327,.94709691,.06923735 +1.8759763,1.0142647,.29275344 +.6260093,.44025053,.23427754 +.82535991,.49191021,.32751499 +1.1052778,.28704581,.32773262 +.48505417,.73488087,1.0433174 +1.2075581,2.5337094,1.2416788 +.44874852,1.0101712,.10064435 +.68167325,.19278948,1.4787171 +.87465294,2.3941008,.61482209 +.96875288,.08446492,.08891738 +.51304435,.58641576,.79733887 +.42318136,.65461768,.80202282 +1.1875467,.56790901,.16843338 +1.2605085,.28384185,.72447973 +.78755104,.42364364,.54426915 +.50009694,.93131797,.09682983 +.18313957,1.5461565,1.4888511 +1.1757475,.01885718,.12556135 +.55649186,.75917841,.10702222 +.56061206,1.1838876,.257095 +.62359614,1.3127315,1.4523013 +1.1001441,.12491662,1.3439011 +.88840634,.15329167,1.5455686 +.85142021,.35975216,.41572979 +1.0448601,.32655856,.25309597 +.96268697,.41184989,.03300915 +.7391465,1.84273,.0941544 +.95065582,.96164093,1.7930903 +1.286033,.84953963,1.0529479 +.98698288,.58225804,.29117062 +.81809259,1.8573494,.33353763 +2.9178948,.69521362,1.4628453 +.50109814,1.0064761,.09049712 +.34685442,.36228482,.01116192 +.91798036,1.6877317,.35639442 +1.0763208,.95897893,1.299885 +.88166928,.34360215,.14786951 +.45506013,.97930164,.08177995 +1.3203121,.72218669,.54354507 +1.2996014,.60393633,.64097879 +1.2045573,.59887704,.19153031 +1.0597452,.10174782,.87195638 +.76950086,1.2521815,.44706291 +.81679656,1.0187966,.96718424 +.80427478,1.6986969,2.308694 +.80976911,.26788927,2.0012774 +.61920239,.27044639,.25185749 +.99118106,.18737047,.73497224 +.60898461,.24328079,1.3437602 +.63122649,.3323818,.08869966 +1.3940808,1.135294,1.5647686 +.77300599,.39104749,1.9807093 +.6505492,.28364265,.4376026 +.41536898,.76798564,.35596121 +1.0238829,1.4957841,.09781043 +1.0355686,.77324203,1.3659654 +.49166767,.59199503,.09774144 +2.1865792,1.17585,2.1541968 +.8665546,1.4239176,1.9732285 +1.7624301,1.4260561,1.1543903 +1.1383298,2.2252769,1.643092 +.83424463,.05260564,.3610144 +1.0310754,1.0786515,.05842027 +.72462385,.07710364,.8429467 +.7726199,.66416949,1.8026406 +.76221936,1.1316261,.51645188 +.59160158,.67230966,1.4815116 +1.0908499,.77819908,1.4156276 +.58845392,1.4166633,1.3868491 +1.7404215,.56303714,.03910467 +1.2478776,.21448941,.2383128 +1.1596424,1.6161201,.1309506 +.58765671,.97184292,.93933528 +.62921124,.22495691,.25450106 +.73838898,.71402367,.61081842 +1.1670627,.84749744,1.1949042 +.38578837,1.965864,1.3727777 +1.4940518,.09888349,.01348843 +.74034924,.73264153,.90313957 +.92455447,.38000968,.87012508 +1.0803148,.52588598,.96376517 +.33914552,.42858783,.6358393 +.58402266,.3570332,.29908575 +.84644092,.98851272,.73116032 +1.4578563,.45311914,.11195293 +.56947777,.19434498,.93014372 +1.1991807,.32941651,1.8896242 +.72467764,.45318137,1.5525625 +.56719781,.23075779,.71245124 +.55129199,.76306399,1.0397143 +1.7486876,.14033141,1.7881403 +1.5380433,1.7934491,1.8704672 +1.3979879,1.7961749,1.1776681 +1.222397,.60014519,.63504996 +1.5590917,1.7010312,1.9474879 +.75998895,.27348766,.04611329 +.41889068,1.7439261,.25079177 +.58143401,1.4653618,1.5910487 +.90569344,.86303817,1.1308753 +.50495544,.49074788,.63580192 +.94329549,.32184728,1.1457615 +.53969324,1.340419,.0549393 +.66515402,1.6132708,.9303425 +.98681862,.3263688,.12891175 +1.4521025,1.1759188,.23689039 +.66853651,.35264592,1.4570496 +1.1041655,1.9544158,.73494386 +.38352197,.91462519,.69326898 +.48179131,1.5576837,.4679146 +.70815789,.78339135,.64060965 +.564069,.46440181,.62219003 +1.0031687,.736947,.55563215 +.98438779,.31932687,.10137554 +.68251855,1.6688476,.35863942 +1.279803,1.3950068,.60090324 +.43669833,1.1657152,1.1883003 +.34357314,1.1535878,.39881005 +.56271861,.96601693,.85626518 +.29466551,.108646,.85861954 +2.0577507,.6922341,1.1230178 +1.0751062,1.1040317,.41951979 +2.1492148,.20334843,.15610507 +.62386042,1.0714603,2.0453792 +.61557984,.56138596,.65644565 +.78705955,1.1301483,.80487393 +.83652649,.63586225,1.0942314 +.91109267,.20123109,1.4414767 +.96833443,.54019946,1.9311067 +1.530064,.83896768,.50614799 +.41811039,.04133404,.71047601 +1.2345655,.10275081,1.1615216 +.55557644,1.2338597,.1761354 +.75449103,.38264726,.39336192 +.93495395,.13453639,1.8190567 +.23087009,2.3071311,.84909525 +.36042811,1.2531387,1.1210884 +1.3701209,.50190449,1.3939172 +.52943686,1.4331174,.02893314 +.35591206,1.1745622,.39606423 +.4699244,1.0088812,.33795207 +1.069966,.89957312,.02788136 +.66505507,2.8879523,.89576376 +.57787179,1.5785645,.9530842 +.5742972,.24282935,1.4035767 +.76761245,.20512431,1.7882901 +.4529961,.72301388,.43306252 +.48437004,.75105686,.1811374 +1.3739249,.82709578,.18434901 +.32772305,.43058339,.47287801 +.35064825,.20431902,.46998361 +.41478316,1.1234814,.9843774 +1.5266553,.07959825,.67583786 +1.2209175,1.2564377,.30348806 +.4110275,1.1029012,.82832405 +.58296838,2.3260971,1.196581 +1.6924914,.7126843,.29892252 +.5406597,.20964588,.68336478 +.52329819,.02558273,.42093264 +1.1374961,.26861893,.75313602 +1.8669263,.23204347,.88054328 +.37059146,1.2065251,.45450213 +.48547169,2.9985661,.4597332 +.97699752,.31258918,.63348517 +.66457742,.13334075,1.6510229 +1.5905418,.18135682,.45199489 +1.4217408,1.1166363,1.7114131 +.93014281,.09810532,.41661834 +.92135019,1.0061443,1.0408966 +2.6647494,.04998093,.74427154 +.54541977,1.1564776,1.0398472 +1.8290662,.22296004,.3855953 +1.0844284,.36723069,.67013571 +.64611196,.51718132,.73650088 +.26551742,1.6762869,1.0137773 +.49558576,.67420778,.13587118 +.80105995,1.2689861,.61642831 +.74680858,1.1225425,.52529376 +.99934145,.54447858,.39289441 +.73293814,.2219169,.06714253 +.66041851,.5770746,.184839 +.56004999,.7057682,1.4629072 +1.1929171,.54241897,.86014809 +.65463149,.90363403,.63586614 +1.2281173,1.2648183,.45144101 +1.7118879,.5275955,.07732219 +1.4301252,.41896986,1.0181581 +.65391525,.37824583,.44912189 +1.1803024,2.1515874,.58217352 +1.5062316,1.1557525,1.8247195 +1.9904949,.49848386,.58165127 +.92617783,.69797102,2.30449 +.40520297,.00964093,.28239104 +.8624022,.11517497,1.3430567 +1.2324572,1.5674372,.31534546 +1.8097889,.4923839,.89437294 +1.2467099,.29130742,.84453309 +.83785385,.67235542,.28401846 +.46521062,.87105324,.48040653 +.80698983,.71538118,1.5985575 +.6859619,.31893289,1.1041177 +.7417155,1.2925051,.14793701 +1.3572149,.07195627,1.4317534 +.53339824,.54774011,.93036911 +.62106516,1.9706735,.20181027 +.66364408,.22575662,.51160106 +1.0778829,1.4971599,.24787813 +.6660879,.9208419,2.1185154 +1.0895934,1.1707552,.14083292 +.59796898,1.3006107,.58651684 +1.1664579,.83761119,.44494336 +.74198629,.58983207,.92716638 +.89997488,.83740661,.5143744 +2.0838984,1.6527472,.38041852 +.49959689,.92299604,1.0408874 +1.3048694,.07695443,.76032998 +.87945907,1.2460734,.1959422 +.63316919,.41959358,1.174078 +.29359634,2.5062037,2.3736615 +.38695276,1.2989649,.06784384 +.93637606,.26705571,.28860813 +.82449497,.61383091,.10474827 +1.0360863,.39059678,.32817346 +.2713014,1.0198394,1.7035674 +1.387389,.1691336,1.2249552 +2.697961,.05064941,.33566536 +.5520078,.44135582,.15118749 +1.0071522,.88218704,1.6515318 +.27420808,1.6828252,.40246668 +.95587238,1.0410607,.32213831 +.96356908,.06461815,1.0790448 +.89572203,.88133507,1.0507819 +.78724913,.91934115,1.5346235 +.78328469,1.2189163,.03262934 +.32828997,1.6162163,.73296768 +.68138321,1.31088,1.0908564 +.84999982,.06956197,.93427636 +1.2932822,.11684052,.42544032 +.47119393,1.9385788,1.395719 +1.7100829,1.3427195,1.8390746 +1.4852881,.0933114,.76216966 +.67489634,1.3744471,.37891308 +1.9430378,1.4472657,.77862681 +1.811625,.02314532,.15408085 +1.1994526,.71854611,.23527781 +.44024367,.90811933,.99250774 +.84239323,.11030162,1.2657569 +2.4803743,1.0479733,1.447358 +1.7213995,.36381892,.40961404 +.79200892,.41886262,1.444594 +.42728364,2.0970775,1.4647291 +.86271253,.81460514,1.6433546 +1.2074385,.01625138,.87164748 +.54091397,.26181309,.47081718 +.90574897,.86163466,1.7109457 +1.2988509,1.4122822,.98874569 +.88873192,.39003724,.35603441 +1.1883335,1.1543308,.92858465 +.37079689,.49278329,.42233479 +1.0674104,.26808439,.21546431 +3.2169141,.13433931,1.4215665 +.56149401,.40767049,1.9470472 +.50698276,1.2748154,1.2092585 +.60374013,.31220425,.70093384 +1.2072548,.23932258,.44763415 +.63848476,.67557247,.97949154 +.73183512,.72563762,1.3352249 +.6124797,1.3464974,.06801321 +.69651295,.00512422,.96199014 +1.1155657,1.7561363,.40310026 +.59295095,.17265544,1.8081494 +.84789062,1.7731101,.48636185 +.56210388,1.1488324,1.8920509 +3.5013114,.38272548,.34370809 +1.4248237,.59848403,.46673754 +.56155015,2.8156346,1.6575612 +1.0209263,.37509833,.29628634 +.68028413,1.3194494,.92124457 +.53841824,.72186516,.29472317 +.91848956,1.1995462,.05460215 +.70463113,.62560574,.03149215 +1.0121304,.44007269,.41115826 +1.8712743,.1054988,.746928 +2.4302268,1.1304076,1.9379315 +.77121877,.5356773,1.4005933 +1.2025795,1.4736574,.03411384 +1.4483047,.10690187,.08343797 +.24407279,2.2531709,.20431854 +.81932705,.31077566,.23851657 +.52989568,2.4868342,1.4333622 +1.0853165,1.2344268,.80081227 +.63882616,.6582156,.84605195 +.98618007,1.7871888,1.1282762 +1.3733888,.69755216,1.5787382 +.82474356,.7094603,.124091 +1.6776797,1.3987394,1.7785767 +.54599672,.94852881,.13296641 +.59303836,1.8512439,.34504329 +.62144175,.48286763,.48021861 +.55132748,2.6498406,2.3569241 +.31996672,1.927119,.45486767 +1.4247494,1.156359,.65685209 +.59466435,1.5490174,1.9509241 +.86162719,1.0197678,.44515485 +.50150964,1.6759807,.1931879 +.52455468,.50339713,.6369269 +1.9963974,.40514244,1.4401798 +1.1486961,.20254443,1.0328869 +1.066191,.19835172,.15901208 +.63807121,.67763035,.27007995 +.72574481,.42106109,.69898624 +1.7291162,.58813769,1.6459327 +1.2283289,.46700606,.3960281 +1.5470934,.74136204,1.6846113 +.20053755,1.2428524,.93102481 +1.2761117,.31103737,2.2050939 +.80101764,.95656184,.04369141 +.49063697,1.8305256,1.212899 +1.4180794,.94969304,.76805861 +.84748107,.40566801,.95461581 +1.4290161,.88533379,.77973653 +1.2824939,.16666595,1.1850466 +1.2894409,.07349802,2.3149833 +1.8363994,.72529481,.3466731 +.89669367,1.3484312,.03255016 +.88845468,.57486773,.37250832 +1.863765,.16123178,1.11692 +1.1813497,.62894669,.1284394 +.44415179,.74540757,.12106062 +.43381145,.94785281,1.4332046 +.57129762,.05947879,.94447718 +1.4400784,.7622106,.21361708 +1.5466372,1.1671416,1.2778287 +1.8363494,.56809357,.52469365 +.65801657,1.2758549,.90453316 +1.6405633,.23170725,.0249921 +.62017439,1.1807342,.21690417 +.4183164,.65501771,.14771412 +.5699254,1.09822,.16532058 +.87548708,.6479397,.4372399 +.37474594,.95361548,.49754566 +.81167055,.08828657,.53362249 +.76419821,.15868645,.87610233 +.4355767,.35120233,2.2776896 +1.2436567,.5192457,.88020457 +.77829312,.60429935,1.2426985 +1.5103822,.99348962,.50173359 +.29773647,.21715774,.37695779 +.9557133,1.4358815,.42083892 +.56413019,1.9704286,1.1541065 +.60694593,1.283036,1.3891821 +1.2427183,.05557631,.03531687 +.50728036,.70004255,.64560538 +.51273906,.08260371,.57712555 +.83676689,1.4973394,.87373947 +.96463594,.37588916,.20155466 +1.0328054,1.2560414,.20951441 +.56438284,2.3704681,.91125834 +1.1626814,1.0920031,.67812247 +.80250347,.90901818,.5419189 +.46060196,.16433701,.94713618 +.75068185,1.697094,1.0943189 +.96821552,1.5048423,2.5797112 +.29137249,1.0006036,.76440082 +1.070837,.71267288,.61794279 +1.4751486,.26759633,.41122307 +.72563611,2.5672455,.0317846 +1.1884258,1.0761028,.49019671 +1.3039449,.11738925,.37375949 +.4430902,.00291969,.46704986 +.46359302,1.2302087,1.4999876 +.81742259,.88970973,.18480348 +1.8511472,.22454696,.426751 +1.2467174,1.7151232,.5899309 +1.1138099,.4869271,.51634339 +1.6176575,1.4748744,2.8380062 +.40545349,1.9146876,.02830466 +.35602561,.22259126,.55008596 +.88753258,.79172779,.50875046 +.97898961,1.9385938,.00217148 +.75473484,.90217569,.46814496 +.84818628,.22483195,1.0222785 +1.5835519,1.2675936,2.2027416 +.83866423,1.3680922,.1383349 +2.1021824,.0272111,.21165468 +.59858301,1.5814523,.69943794 +.38689416,1.973862,.95088144 +.49306955,1.0717426,.65115288 +.97954368,.44297158,1.3281716 +.69707297,.17995111,.34024777 +.57364759,.62427944,.15261971 +.72154078,.32001979,1.3980788 +.89610895,1.3403219,.80109569 +.46855227,1.4199855,.25864218 +1.3320368,.36341365,.34637526 +1.6262976,.0529079,1.5963598 +.4739832,1.4041498,.97847102 +1.3633236,.49140143,1.1980901 +.97018285,.44046848,1.6356821 +.78727751,.87560162,1.6501463 +.52793219,.00790139,.04925299 +.61681267,.02300431,.10094044 +.79583642,.97775766,.00614595 +1.4966644,.39684201,.92378755 +.50993457,.29402225,.83255893 +1.4937792,.34453236,.67700708 +1.2357384,.31950985,.66678407 +1.0471319,1.0837754,1.2453486 +.32835631,1.0466721,.06632876 +.6747582,1.1331206,.29666881 +2.612328,.11505851,.84732799 +1.1739774,.74697196,1.3538474 +.58892334,.90003381,.53618028 +1.8942306,.11243024,1.4244559 +1.9017081,.40569394,.36441939 +1.4021412,.1511631,.36583957 +.65628095,.01353282,.06871886 +.94452586,.44140843,1.3862023 +2.1509001,.11317691,1.8986991 +.37424507,.69827458,.13184962 +.905832,1.9793554,.19360433 +.58730423,.94073624,.73380945 +.54409465,.04247703,.58637723 +.46659869,1.2431432,.65153072 +.53339782,.37149815,1.1820012 +.76744401,.5930494,1.5968421 +.49894764,.73695209,.49986295 +1.2298045,1.464182,2.8546411 +.36177514,2.4455666,1.131382 +.71224156,1.4149677,.12630198 +.84504676,1.8091788,1.5431653 +.74075157,.81097278,.82314301 +.59608041,1.2741827,.77215908 +.49688104,.03362882,1.0969486 +.45069965,.73574519,2.2981596 +.70081553,1.3724244,2.0848919 +1.4380449,.10583943,1.2976993 +.76330909,.76705141,.05607469 +1.166279,.00814619,.47251256 +.64081036,1.3055146,.58155995 +.61192898,2.0057226,1.2626327 +.38946325,.07339392,.83098338 +.40533271,2.6096828,.59172375 +.97401224,1.7951466,1.1277286 +.81018337,.83560941,1.0956466 +1.0579757,.1145715,1.0880635 +.37157242,1.8469109,.12473577 +.55158551,1.0055225,1.8019954 +.8709751,.49158507,.47095198 +.54292225,.47213761,.04072861 +.82165543,1.6001604,.23559357 +.26283969,.09276636,.28300349 +1.4143782,.30936501,2.2027291 +.71116807,.23885308,.82446243 +1.6801788,.48295349,.34554774 +1.1795857,1.503214,.92884264 +.80113208,.79155736,1.4473115 +.88346505,.40678302,.6462539 +1.4989767,.64119641,.42186502 +.33369316,.31514991,.30112315 +.2951056,.99658261,1.0413293 +.71700566,1.4331378,1.0265072 +.78941715,.84761065,1.3777412 +1.3946977,.82946047,.41410941 +.62215202,.26068107,1.4623028 +.66059302,2.497806,.42424382 +.54375668,.86946195,1.5515216 +.94559286,.35787319,.37684385 +1.1946866,.0076111,1.0451901 +1.0309796,.18252081,1.2468424 +.41373097,1.662513,.09659558 +.54927469,.37619236,.62399101 +.6664931,.69304698,2.7766385 +1.8203026,.35970547,1.2231118 +.60413611,.06049444,1.0649328 +.66757837,.17477355,1.0033179 +.60840711,.96103251,.41084776 +.69813807,1.2822596,1.5608283 +.73076608,1.6515383,.18616508 +.65147009,.20348323,.03242864 +1.0321535,.28218991,.75624788 +.64287425,1.7477303,.49711454 +1.1971802,.53659147,.36726421 +1.5362259,.76264939,.17590677 +.82035756,1.1257343,2.1730506 +.97461522,.3145653,1.3972416 +1.1853336,.09153142,.48403952 +.3946104,.90267299,.8029833 +.94158357,1.2035492,1.1136075 +.42700666,.93369586,.85055626 +1.226344,.78661688,.68771475 +1.0250871,1.4515143,.60342116 +.72314684,1.3208742,3.1438388 +1.0712979,1.1617861,.14047571 +2.2662195,.22275039,.41121734 +1.3634019,.51501027,.97491043 +.79895642,.12597093,.39532032 +1.0161778,.23156995,.70845504 +.4855003,1.1712177,.85471291 +1.3547708,.33496371,.81083036 +.65569684,.16549494,.47949263 +1.5434579,.54588554,.02367622 +.50638476,.99258252,.43657021 +1.2581786,.70625783,1.0980204 +.93748255,1.3518644,.79765002 +.53753656,2.0564248,.80148625 +.63313767,.47345859,.14179139 +1.2527113,.84813985,.69989637 +.90505597,.55001506,.54673201 +.50185464,.68267839,.56740738 +.7098842,.35065727,.44388669 +1.4966464,1.3831129,1.0147489 +1.692873,1.2058292,.61165986 +.83121867,.01023779,.90610586 +1.8610189,.66442634,.48139217 +2.2037686,.66658405,1.8485542 +.90710851,.96210498,.80205184 +.59109148,.39950866,.23023398 +.29004763,1.1430691,.02253718 +.2845921,.91515101,.04747073 +1.2060099,.27260856,1.590148 +1.4249714,1.1791012,1.0392792 +.30520902,1.5485261,.35063339 +.79190506,.48691759,1.0429617 +.94573953,1.3074748,1.0100172 +.54018857,.32181081,.0080463 +1.2295285,1.4283493,1.2987085 +.73549057,.85543976,1.154928 +.92487687,.25097597,1.9849671 +.44525823,.21372882,1.3097697 +1.7064484,.72156021,.2803742 +.92836647,1.2656994,1.6161684 +.75680708,1.3633231,1.6865209 +.63579429,.87200973,1.0694736 +1.6901227,.89174807,1.4838333 +.90146286,2.2015375,.30134166 +.56800209,.21414326,1.3229449 +1.5011475,1.8860816,.56093593 +1.0468022,.74262038,1.5970392 +1.085098,1.0042725,.84872034 +.72216018,.4043211,.92075716 +.68034177,.14563673,1.0906452 +1.3339543,.90032569,.93473052 +1.6821751,1.1964202,1.5357165 +.74933943,.32268573,1.5667811 +.77155823,.94878848,1.0269213 +.72125968,.53549275,1.8315648 +1.7085313,.31030967,.74554005 +.64529902,.93348962,.15323146 +.99737116,1.0784516,.48440968 +1.6742074,.1791657,.08417598 +1.3299881,.91721539,1.6634387 +1.115538,.46326598,1.4805332 +.69508082,1.7436354,.09099146 +.64149535,.49474113,.07876614 +.54134951,1.5690052,1.5141873 +.51100513,1.4299772,.64995245 +.50233566,.34927914,.13345541 +.46490736,1.0171482,.04276468 +.54376402,2.0470352,.63528922 +.84729732,.44864576,.10642895 +.33507677,1.4915054,.04568153 +.81751203,.91734589,1.8792938 +.5387949,1.6105599,.66381461 +.46594623,2.2996921,.1681 +.96009995,.57340585,.75373446 +1.9820593,.47007547,2.2621213 +.77649443,.53983144,.77696305 +.83797696,.57672679,.02341118 +.78117607,.8556978,.14456436 +.78637441,1.1780258,1.0464415 +1.7294122,.75217428,.17375891 +1.2970793,.12632885,.67353251 +1.1221893,.41254696,.91070178 +.52513169,1.8100182,1.1469256 +.47215848,1.2596846,.60519572 +.31483754,1.3045834,.29811622 +.92517371,1.51078,.8939391 +1.7562602,.69216817,.3508837 +1.5069645,.01054671,.39763265 +1.8703303,.69247129,.31106733 +1.1076349,.62367284,.5481049 +.79126009,.19251031,.40403044 +.59500887,1.3907846,.09835587 +1.5383781,.09809704,.14217765 +.49067995,.95742144,2.2312466 +.83948389,.26919329,.29138026 +1.6448238,.54630985,.39055208 +1.8386606,.93427532,.55497379 +.56146272,.72047393,.4604568 +.77805326,1.6772329,.10519775 +.4293231,1.8453142,.42101812 +.63788475,.25612441,.92673004 +.69877864,.31487498,.61097761 +1.0097881,1.8128169,1.2804439 +.83295201,1.0672311,.19279095 +1.4459975,.81778135,.25829579 +.60579182,.37962292,.45923057 +.96892229,.38866151,1.3204609 +.76687674,.30200516,.90520888 +.88761188,.32358038,.17352252 +.66281519,.3961194,.22101884 +.48987007,.72097019,.10343307 +.55966921,2.0550804,1.0563144 +.62629644,.42568337,.55120802 +.91044658,1.1609593,.71291362 +1.0090496,1.6622035,2.3498442 +1.6192091,.35071094,.62624021 +1.1771422,.323044,.66993807 +1.2976559,.6197806,1.2533191 +.75012028,.69733022,2.0343625 +.17202137,2.1996763,.45797032 +.71855171,.38275209,.69120028 +1.321747,2.6637385,.53855923 +2.1870852,.5165464,1.2109991 +1.4442881,.22510635,3.1972439 +1.1020248,1.1515684,.43559828 +.56209616,.28266598,.87713165 +.91575573,1.2336268,.52091829 +.34022368,2.1813842,1.1506931 +.88439819,1.5642623,.24992215 +.53348566,.35050121,1.4184018 +2.3636023,1.002569,.79673723 +.67558524,.22824203,1.1985922 +1.2890069,.1937499,1.1668701 +.35303697,.26329148,1.34158 +.89895535,.35087689,1.350633 +1.3052766,.43285384,.16973264 +.84647625,.4823673,.01914587 +1.2926733,.43042449,2.2754214 +1.0711611,1.4872391,1.4305994 +1.7179882,.07367833,1.7477017 +.70547967,.17267015,.25178736 +.62838155,1.5302232,.39913377 +1.1827679,1.0619042,.96493056 +.61951591,.12937762,1.1216429 +.40274006,.32205558,.58367355 +.84789325,1.4098223,.85394177 +.70874727,1.1279738,1.0161514 +.57798397,1.5244173,2.8955914 +.84820378,1.3396698,1.4459026 +2.0780586,.15567099,.53376155 +1.6934113,.54439138,1.0870995 +.3860652,1.1268229,2.0432041 +.52190111,1.422769,.05842026 +1.2607506,.3175874,1.5467882 +.55508803,.62754171,1.4855131 +.30394397,.6682217,.75977524 +.81063273,2.0096679,1.4714372 +.69329942,.73422148,.19928996 +.62248347,.40828891,.30236436 +.62285712,.85495016,.53527418 +.50046005,.57275229,1.0995266 +1.4247081,.07915918,.9386829 +.50569024,1.3171573,.71561184 +1.5342815,.58646112,.18389578 +2.9849744,.22356445,1.8324802 +.59787979,.54169511,.37675027 +.83812763,.18589314,.2457337 +.80363292,.82376951,.75584943 +.89308012,.60525415,.83387387 +.89792559,.62282829,1.5585419 +.90355659,1.8029153,1.0401757 +.71648529,.41080799,2.0728297 +1.6175599,.66171361,.17524702 +1.1514028,.66772345,.45362552 +.95194926,1.4701303,.56866801 +1.0309911,.72134292,.17397337 +1.0088199,.64535498,.59706757 +.88489113,.18228245,.04804188 +.99805753,1.5092573,1.024318 +.4495615,1.6672146,.04513042 +.83934311,.24433471,.50403542 +.775148,1.2027304,.30069859 +.34590216,1.325089,1.4546273 +1.5671814,.20863885,.43268482 +.59487064,.84731523,.72802674 +.51486903,.18909521,.69780784 +1.1486617,2.0541171,.90506031 +1.2326434,.14749881,.51944717 +1.4734592,.22776892,.05427564 +1.3724314,1.485968,.23851212 +.60594591,.30626009,1.100466 +1.0177427,.01089816,.93674677 +1.0748736,1.1291242,.44432236 +2.1763667,.61077242,.75942554 +1.04694,.75274127,.85994457 +.54435055,1.2223312,.0529533 +.68887486,.6437491,1.6163284 +.76398932,.31155926,.24128533 +.55765173,1.0734988,.40305666 +.58151667,1.5416907,.76834457 +3.4961746,.39054279,1.1912151 +1.3601018,.36269086,1.6501228 +1.6331536,.00186102,.85122717 +1.4679129,1.4077664,.3262045 +2.0952237,.01920198,1.4495495 +.76247805,1.8183303,.6653931 +1.0835266,1.2293038,.71635336 +.57098537,.56415535,.39407197 +2.8112962,.03753856,1.9407753 +2.0477855,.83991846,1.2359166 +.73176759,1.2150821,.45303238 +.68959164,.30174528,.38148113 +.29248441,.80835378,1.21478 +.86117805,.38110415,.51911983 +.86864386,1.3335763,.46600466 +1.3066228,.28266722,.3485374 +.59526826,.12075965,.02454444 +.61152913,.0761209,1.1930953 +.39128503,.53529583,.03849507 +.69828672,1.1139744,.22169088 +.45975336,1.03262,.08771847 +1.5195502,.48337838,.58230818 +.83607506,.7449357,.26811286 +.72867635,1.4690286,1.2569657 +.91847726,.87336916,.02640235 +1.4816112,.47941589,2.4146202 +1.2477684,.39808064,1.7998162 +.8233562,.85385395,.1596222 +1.95292,.13489389,1.5353828 +1.060953,.74797227,.0647875 +.71589541,.56792386,1.3232026 +1.6440004,.39128402,2.2509375 +2.2867154,1.2323415,1.3841355 +.51737102,.75932441,2.1336602 +.95311637,1.6600599,.6192644 +.42014166,1.8481411,.71328473 +1.2342352,.31288956,.39077512 +.61281509,.53850376,.42960545 +2.1891015,.86711535,.32143735 +1.3959208,1.4191138,.92111006 +.63980214,1.3216659,.48202458 +1.7707636,.03697202,1.5744275 +1.893032,.79124569,.04137864 +.45308427,1.1731158,.24926409 +1.3510987,.05119289,.66953894 +1.0139791,.35306302,.07324506 +.8321646,.4277198,1.5678828 +.63660657,1.0183155,.15465725 +.64548816,.92834994,.27165415 +1.6289649,.10779583,.21951766 +.80801497,.67414525,1.9012246 +.49495115,.16813406,2.0748611 +.89291097,.0825659,1.8223512 +.64060235,.9288303,2.3457131 +.49232496,.44927256,1.3520756 +1.332715,.24351871,.87846174 +.99593337,.07193834,.34723737 +.4674483,.15786319,.27763463 +1.6186431,.34917346,.60685992 +1.3146198,.60922919,.86110713 +1.5280097,.02211415,.68992194 +.66804532,3.0896606,.15723377 +.67014969,.62375897,1.3810606 +1.453679,.28161699,.15283779 +1.8207323,.95585944,.24761806 +.76063218,.56760622,2.5547504 +.39081419,.53577004,.7145848 +.35075472,.14834085,.20079366 +.47245755,.95128073,.17186846 +.366712,1.1118106,1.0992076 +.79456633,.22833958,.10414097 +.49883188,.48492131,.55309663 +.59287626,4.1494509,.11734863 +.6606289,.40254297,1.6903054 +.65074859,.43241596,.01726744 +1.0454813,1.3518695,1.6197566 +.68487616,.80521136,.40801452 +.66715397,.14125483,1.4962679 +1.1580791,1.4694549,.02984496 +.62469925,2.4056148,.18799914 +.60197574,.19688164,1.5887371 +.7605649,.74465244,.66723991 +.49344508,1.2322221,1.9368042 +.1805198,2.132174,.33150947 +.99137779,.01551643,.72138391 +2.1732025,.37447078,.14438653 +.48580858,.93734053,.26588501 +.59050102,1.5105289,.89769682 +.7336753,.58531934,1.168276 +.93141739,.33119914,.68554489 +.81753209,.85843921,.10462345 +.87156676,1.3384375,.95826278 +.7566716,1.3744495,.16991967 +.77812364,1.5840422,.72108378 +.50013575,1.629951,1.0098988 +.63315966,.44073381,.43679823 +.89411889,1.0614006,.34060754 +.4883398,.9937063,.15411802 +.94102126,1.0811747,.90990322 +.97552361,.03692465,3.4676642 +1.9508697,.79985319,.67452429 +1.1264546,1.0706641,.22986476 +.47395672,.17346224,.42688513 +1.5192556,.30710849,1.5706204 +.93653292,.26082745,1.7172757 +1.0916235,.46681285,2.0528548 +.87679113,1.4525054,.36691208 +1.3359639,1.456739,.75431948 +1.0858734,1.0898177,.60776313 +.72553506,1.0054889,.53681145 +.96407399,.47402052,.24616667 +.81885686,.39104866,.34867988 +.42704708,1.4052958,.06775651 +1.4192091,.29365419,.1539882 +.42187899,.31172884,.57101104 +1.1579757,.87833445,.13992124 +1.0939767,.58227119,.65647482 +.91279955,.30106658,.14967328 +.7077287,1.7656452,1.1598806 +.81003433,.78112551,1.5042536 +.24619674,2.2210687,1.0077879 +.3278779,.36203034,.45516157 +1.7170068,1.0398123,1.1731725 +.70835046,1.0185208,.52277329 +.43968804,1.171675,.34198382 +.73874368,.41355172,.04973661 +.68968169,.44858764,1.1499926 +.34636039,.98835505,1.6654426 +.94398392,.34069307,1.343558 +.89523299,1.4810556,1.2778157 +.34185966,.78116538,1.2519391 +.57266486,1.629792,1.8960846 +1.4967201,1.3749158,1.0111092 +.70662025,2.152434,.08475457 +.67959995,.2726176,.26884675 +.72773484,.33409121,.58614946 +.63928385,1.5297103,.14920366 +.82895706,1.5906739,.11089778 +1.9957515,.24147107,.45267911 +.43233647,1.6026351,1.2466297 +1.4198906,.27957794,.35128615 +.72527949,2.0473212,.80024293 +1.1811841,.49585915,.25914517 +.75212417,1.8650906,.56940619 +.72495158,.35444481,1.1412891 +.5845378,.90411534,.07600784 +1.0625505,.28263853,1.8277002 +1.0503082,.9101302,.13834717 +.51923456,.55030616,.46337641 +.32322788,.72905175,.97994134 +.53126425,2.316039,.32048611 +1.0714283,1.2651087,.20906049 +.8803214,.67154784,.42121141 +.5634775,2.1562737,.01446258 +.75032559,.3585927,.11967334 +.65823206,.35689957,.14887599 +.78947529,1.0980785,1.8506993 +2.0661392,.00347333,.44446598 +1.3366587,.62909163,.53752817 +.57786978,.00006124,1.5164464 +1.8834927,.01392435,.91302971 +2.5353176,.12125181,3.7388521 +1.0137704,.03350611,1.2795924 +.47808728,.68672856,.29224749 +.32258794,.86381095,.14843674 +1.6300281,.05234446,.94496349 +.72056583,.16068029,.67014345 +.60994461,1.2064198,.19965204 +.67047994,1.2994406,2.3641023 +.72929179,1.2741169,.56791503 +.49916738,.23190382,.50402832 +1.147239,.4773831,.42686696 +1.5827858,.7315835,.8120357 +.52729563,.52097411,.96598494 +1.9030736,.51845768,.2682819 +1.2822804,1.5073648,1.9647555 +.34389347,.70633593,1.2498352 +1.6487475,.39309726,.37766939 +1.4695303,1.1838474,1.1465708 +.44666596,1.2523885,1.4717379 +.69084537,.10881886,1.4439069 +.67837363,.2685604,.51174429 +.86391771,.62405791,2.2956359 +.66749263,1.3986903,.8392532 +2.2176533,.84575791,.08513043 +.97627637,.40850759,1.716698 +1.8587587,.32708115,1.4879948 +.73222786,.84797207,.48097789 +.41324724,.48259405,1.2050388 +1.4818187,1.0538896,.68422239 +.74352065,.26190083,1.8807265 +1.9905568,.93154695,1.4422804 +1.166028,.8621426,1.2868026 +1.9330419,.34356749,1.0403084 +2.133562,1.1681518,.24351482 +.46558772,.03004991,.79477302 +.63528306,2.4691763,.24946435 +.77684336,1.1003051,.24198919 +1.3985506,.20748919,.07594403 +.72799763,.19212728,.80410153 +.76297935,2.296282,.96166091 +1.2278514,.13646589,.4346428 +.68595227,.1460991,.44553071 +.4237773,.20244273,1.571961 +1.4140774,.18873605,1.3378497 +1.1850247,1.2584251,1.1948218 +.38226021,1.5887377,.39176179 +1.0886661,1.0782707,.1515784 +1.1668741,1.4932969,1.2897223 +1.5236547,.75877776,1.9242889 +.71911684,.04338027,.34485749 +.8441969,.14616165,.43443694 +1.2431747,.05589997,.42106861 +.77865516,.49705894,.36506043 +.98555189,.0632246,1.1374413 +.7006016,.57177848,.90329372 +.85590196,2.0395046,.38347085 +.45071928,1.8083169,.23475993 +.90545772,1.3850184,.19658915 +1.2920303,.0945257,.92848277 +1.0384056,.32220671,.21719019 +1.1469153,.14145994,1.0539555 +1.4439253,1.127915,.08214001 +2.0966379,.15806396,.30294893 +.88092088,.89472599,1.3914811 +.62291612,.34696242,1.0417238 +1.1298077,1.3211628,.74430708 +.68850146,1.6841386,.34759039 +1.026385,1.3538616,1.5080086 +.72155069,.3070015,.18662991 +.56107711,1.4620629,.1743992 +.47577269,.34420003,.01360533 +.55138449,1.9343525,.83375529 +1.8622484,1.3867754,.28250618 +.5485965,.94521381,.15531043 +1.4384468,1.2605892,.62750457 +.44282923,.9620535,1.0068726 +.4521528,.72281636,.98206693 +2.3960903,.10553254,.17723469 +.49616961,1.3568966,.64241341 +.59565856,.79441734,1.1689427 +.61110534,1.3545408,1.5237309 +1.4081628,.53471861,.06568183 +.50888563,2.5271781,1.210989 +1.031774,.49431391,.52971383 +2.4927828,1.0098248,1.4915236 +.21948614,1.1249445,.7293293 +.98526939,.98231565,1.5530159 +.23985376,.68037138,.40890669 +1.0252412,.33552402,.60929246 +.71057796,.67791158,.57529819 +.87720953,.13281773,.40587277 +.45796697,.63398405,.060066 +1.0049344,.35453333,.36912182 +1.5175608,1.4619657,1.4386946 +.7773288,.2481216,.53788366 +.62353126,1.3274752,1.2200924 +1.3555773,.17593152,.9543626 +1.0471654,.33643649,.22993735 +.61071488,.19071055,.35834882 +.80639051,.52979835,.49419522 +.93536588,1.4088388,.40671021 +.3511766,.92451289,.69147302 +.81781572,.71681353,2.2499729 +1.1603253,.65915493,.9860813 +1.0692094,.65615435,.28878107 +.67811036,.83840542,.24887704 +.59895786,.53029715,.1168628 +.7533907,.54799391,.36752268 +.64829144,.68606552,.78325311 +.524439,.6439376,.96188557 +.98777199,1.7633355,.01586165 +1.6679532,2.1231785,.6541238 +.77094311,.46225711,.26434024 +.77171354,.21390836,.91240146 +1.5615329,.08230899,1.0955077 +.83118328,1.0221301,.30693531 +1.2101106,.99280231,2.3536457 +1.0243941,.85442984,.80002289 +1.234925,.09997335,.07551142 +.92743076,.11472764,.04591595 +1.3352906,.96413804,1.4819697 +.73397262,1.0151427,.64341946 +2.2162118,.83676238,.37827055 +.76630878,.07043391,.64389479 +.80785194,2.2067715,.38465638 +1.8567283,.87920026,1.5871439 +.77193408,1.7485391,.86149422 +.44350304,.56332899,1.810377 +.43766945,2.0993853,.04264104 +2.6867142,.2870147,2.0051544 +2.4102359,.01175369,.00644734 +.70760768,.9938054,.48407774 +1.1159916,1.0917528,.43294204 +.5395669,.71588993,.43499098 +1.3163558,.08715471,.81989086 +1.0823628,.58188923,1.0557277 +.89476305,.75956177,.79608781 +.4899581,.25048642,.4415825 +.57234389,.9999851,.85517867 +1.0041383,1.1968296,.30433838 +.96150969,.62001891,1.0466522 +.30775804,1.6185271,.62666505 +1.0606435,1.4150487,.51829473 +1.5057275,.88318576,1.0065265 +.51444666,.14890238,1.3638894 +.34184539,1.0293743,.05899636 +1.0344991,.18470133,.10188388 +.95134503,.52953994,.52601686 +.56047609,1.5958435,.05735513 +.54369679,.76264594,.74743161 +.73979228,.91435121,.86459663 +.44634576,.33096463,.07840725 +.67256164,.04667405,.49363016 +2.0515823,.26137649,.91275001 +.63080903,.82351942,.8877114 +.82955613,.38837045,.80134507 +.45022419,1.1921343,.74455915 +.87578632,.60680703,.51731941 +.53328688,.71072688,.6423988 +.89004603,.41036142,.30272844 +.60259158,.90549959,1.4650929 +.35532878,1.242213,.17629603 +.68694494,.45224218,.39945125 +1.0729625,.41973961,.54698157 +2.1871175,.20485801,1.4463957 +.81843895,.23038665,.43834462 +.66659896,.26270504,.41397443 +.76961156,1.763859,1.0900707 +.6476236,.17100287,1.7419517 +1.9685395,.20343824,.25861482 +.40107887,2.566999,.78216049 +1.7021401,.0840367,2.8515528 +1.3935053,1.1684531,.13115404 +1.1872489,.65508523,.50535327 +3.1550748,1.2013978,.8199179 +.40884976,.56122017,.91325009 +1.0409332,.05546329,.42977391 +.32359319,1.2866046,.8731601 +2.2143065,1.9005034,.31402875 +.5975009,1.4260741,.39505895 +1.1479373,.23153172,.6792223 +1.7457184,1.3996501,.87028759 +.35255322,.36502446,.78641272 +1.011931,.1517299,1.1391505 +.37829718,.33699482,.58843183 +.65950353,1.901117,1.8604787 +2.2213712,1.9581612,.91560901 +.87173628,1.2771194,.18774768 +.99646877,.64922264,.29796774 +1.0390675,1.5829849,.9437992 +.25023156,.40433881,.60715627 +.43021268,1.9010212,.96761768 +1.3194343,.53664083,.97337973 +2.0677334,.53392375,.22132862 +.82058589,.65411529,.33957133 +.65077505,.66118027,.72201611 +.73394745,.50172465,.22061222 +.80486009,1.2973098,.36592778 +.41846216,.79745564,.38045687 +1.5321275,.83503916,1.199219 +1.8002567,.06224643,.05524702 +2.6606428,.79871165,.23550199 +.43555446,2.5050171,.80656633 +.53862024,.75334345,.75238896 +.95741599,.90268186,2.2473564 +.38554557,.66419,.4156198 +1.1970585,1.896528,2.160683 +.85245294,.67601955,1.2635132 +1.0968129,.84249116,.90709906 +1.1917221,.16211253,.33417756 +.35177705,1.4704289,1.7621317 +.58534811,.04051656,.37768436 +.85199723,1.1069297,.7092074 +1.6483545,.91128026,.02382789 +1.7233094,1.2147229,1.8626775 +.82290495,.49950279,1.3519762 +.59945109,.57330952,.26852843 +.88374479,.45209281,.56319443 +.89301879,.95966419,.3476811 +.50467409,.74895386,.29334352 +1.267682,.86203718,1.591459 +1.1775471,.22212898,.17824318 +.54963533,1.868618,1.5395328 +1.1627498,.96884167,.4810368 +.87798373,.25949373,.75833967 +.22276331,2.0028762,.69063497 +.79811267,1.5514246,.92935298 +1.3542225,.37924657,.55357836 +1.3064044,.12720257,1.3645142 +.68892432,.66982988,1.0068133 +1.2754401,2.6050876,1.6979937 +.60684018,.2128129,.93236567 +.35358327,1.3560866,.84023537 +.98190125,.61897329,3.2317775 +1.8318515,.31578828,.63733173 +.6102019,.60457606,2.0686185 +.49115028,1.040155,1.1340313 +.38318432,1.5807271,.82801216 +1.1152053,2.0882357,2.0255523 +1.4478641,.82715501,1.1825735 +.41900061,1.0063241,1.1263268 +1.4879969,.74285729,.30204631 +.79091666,.98234279,.60961036 +.8199944,.1141751,1.2457266 +.79793752,1.7023133,.84002213 +.60568664,.23417556,.01960776 +.89784194,.62870049,1.3377963 +.4025684,.42070144,.66402941 +.74933363,.81139605,1.174714 +.74879191,1.5895492,.96168649 +.91733391,2.0871372,.28215596 +.36770588,1.6224595,1.2858147 +1.3289014,1.0527232,1.4419602 +.57038167,2.0596029,.22799829 +2.4037855,.13671946,.0143353 +.49002941,.83962387,.91530966 +2.1504835,.47063147,.60236735 +.36152846,.86464381,1.150657 +1.342776,1.6315537,.47565248 +1.1238394,1.3807521,.69177942 +.83276659,.63363426,.91523892 +.73876949,.09484836,.17186587 +.74162983,.85579483,.83933862 +1.0694964,.14954309,1.495666 +1.031868,.60724938,.2187139 +.93446907,.63491507,.62951547 +.60121525,1.6988623,.0680659 +.42769195,.87583944,.37706131 +1.3714509,.29619455,1.027135 +.72759294,1.1568919,.36295301 +1.8232244,1.7743688,.7340745 +.56261185,.71871348,.71457567 +.77192696,.42240641,.64440958 +.65613982,1.0893799,1.1704669 +1.2532624,.15928316,.15637814 +.59780678,.29428338,1.0780932 +.68966905,.87306927,1.2175329 +1.4218345,.45328079,1.2867179 +.48563774,.48998076,.31735386 +.81818441,.27765465,.92272639 +1.7985819,.51053281,.32832047 +1.3044246,.00301696,1.3102807 +1.52717,1.7489348,.24507608 +.59176447,1.5582389,1.467528 +.55856544,.28012919,.03387946 +.40616858,1.2434465,1.2283639 +.50973805,.68239749,.07001709 +.94344253,.09422855,1.5073237 +.85594551,1.0824126,.71143481 +1.8813053,.40349095,.00076101 +.30406555,2.2043059,1.3769167 +.68655186,.15602483,.78275609 +.99600325,.39043163,.82529502 +1.131655,.92056422,1.0037906 +.98230189,.730083,.19840035 +.40105168,1.7275188,.76770835 +1.9925055,.20417242,1.1236828 +3.9487823,.17031599,2.5170356 +.60211351,.36905113,.30674851 +.27953634,.96749332,.34780306 +.45109375,.94318583,.83156323 +.98382934,.21561946,1.0248668 +.61895715,1.7845877,.1014958 +.70321586,.48559418,.05437712 +.37576763,1.3092063,1.0009052 +.87218587,.73008815,.62707558 +.3412386,2.0024505,.06455187 +1.0174112,1.1487906,1.8407112 +.29656505,1.7046633,.06080655 +2.099567,.26623623,.78561109 +.68773763,.67556478,.00846925 +.67303732,.26600109,.92407333 +.37010704,.17024638,1.3998214 +.62400454,.73512881,.79580308 +.78311678,.77339734,1.019958 +.94156636,.15636619,.80100883 +1.4052843,.28601971,2.2480786 +.80106804,.60071081,1.5187141 +3.2094635,.11864579,.49183146 +.70528227,1.1210891,.6206822 +.5656899,.0853096,.79810297 +1.8464543,1.0412936,.5484019 +.45677824,.81194627,.18369638 +1.1660281,.35754683,.60657508 +.94100127,2.1418765,.77509215 +.62008181,.63422693,1.3767919 +.8792246,.95377997,.78114283 +1.0199736,.27366715,.81138722 +1.15083,2.9164968,2.4146145 +.44562764,.12880033,1.7453199 +1.1066829,.18806926,.57038219 +.66997516,1.5266908,.72691967 +.41452911,.51752446,.50423832 +.87599611,1.2841007,.25117859 +1.1161805,.51705538,.61169846 +.72857272,1.5585937,1.7385186 +.51638783,.97349909,.24727832 +.3597163,1.1359234,.83219981 +.55332663,1.2937915,.56071034 +1.6892074,.35317153,1.0261024 +.43652653,1.6738256,.44534849 +.34108134,.82976975,.8082213 +.31499385,.24722122,.7265285 +1.0409273,.52251095,.39807361 +.63737794,.47427225,1.7501134 +.71511348,.10057317,.14295066 +1.7176377,.21869079,.62977869 +.89612655,1.2342886,.67816782 +.4083277,.64254237,.68832052 +.65482241,.44865823,.65611858 +1.2213805,1.0437696,.08334233 +1.7344654,.38106505,.71434586 +1.7404623,.30538825,.64344155 +.64357056,1.7617838,.29248181 +.72799853,.72324381,.4618438 +.68870298,.12578235,.25390817 +1.1898025,1.1556296,1.1503859 +.19485439,1.1385267,.31528415 +.42861736,1.0792657,.62200833 +.50305301,.04482157,1.279447 +.37428119,1.4872596,.10919678 +.39461265,.47220307,2.6748846 +1.5803604,.56924821,.24851566 +.88797406,1.9196056,.19264187 +.37350541,1.2702805,.29409607 +.78297563,.6730679,2.1605412 +1.4535094,.0392464,1.2631023 +.54070778,.71252534,.03190349 +.63780198,.48982193,.3901627 +.39785118,.28269171,.28265708 +.72324397,.23737323,2.3531758 +.63425227,1.7512662,.42519097 +1.4367308,.87290644,.71477161 +.93157825,1.1898624,.0283456 +1.0790722,.46130833,1.6046673 +1.3908426,.36594802,.18324625 +.6774559,2.0456657,.19333799 +1.0467277,.53511085,.94694807 +1.2848728,.83126469,1.3174767 +.45871072,.12754144,.06471055 +.76704234,.48299778,.37737882 +.41791065,2.0723566,.32617273 +.73383692,.68673911,.0959079 +1.0036399,.03511235,.89237278 +1.0022463,.83151513,.4922388 +.76871835,1.8318852,.36908184 +.44470829,.50816184,.66059062 +.55677312,1.8684448,.40972647 +1.4774998,.10067063,.71112942 +.38529211,.72098165,.46418573 +.71349888,.16721224,.42385014 +.78257413,.22075402,.88033218 +.85759175,.88217839,.2688015 +.54319035,1.0197314,.68888811 +.61998329,.99552634,.21579474 +1.2877171,.82322574,.1334078 +.93427681,.04950981,1.1240935 +.81866286,2.0645431,1.5335133 +.98765557,.01907718,.6394695 +.40431758,1.8194135,.29106368 +.50166516,.72634238,.36418858 +1.0739744,.25299679,.10633605 +.59803717,.47059539,.27084545 +.3193459,1.2871708,.19536569 +.65999298,1.8172312,1.4100747 +.56488354,.26417882,.59540884 +.88347083,1.0363119,.14152188 +.61900937,.6747657,.76614826 +1.4171062,.42493726,.89243912 +.40543036,1.7183143,.4403199 +.88581052,1.4229279,.07922596 +.93125781,1.719096,.5265313 +.7822679,1.5148595,.85765241 +.88235919,.31880549,.72239037 +.29886754,.88521207,.40621306 +.87562555,.73467193,1.0972148 +.53125455,.96832993,.87422038 +.65686202,.69889431,1.599758 +.6555532,.44059042,1.020389 +.59376258,.64514758,.63564344 +1.1124123,.12933546,1.1860975 +1.6370469,.41846465,1.2158382 +1.3134654,1.5183669,1.6996631 +.57730418,.83500081,.50248163 +.74052499,2.0238355,.21470469 +1.2047591,.8142618,.96621465 +.54787494,.68313469,1.7507749 +.58170822,.48136743,.0826014 +.80633466,.67715583,.04395539 +.84361403,.12916094,.11699058 +1.0963248,.49538863,.02390392 +1.3757116,.68202427,1.7820873 +.49901266,1.2561467,.623474 +1.1202345,.67799218,1.5110762 +.57968881,.0412838,.85766051 +.53047494,.11668809,.16379696 +1.4094038,.43672776,1.4919757 +2.0174881,2.0149366,.66791722 +.4860579,.9640454,.51853194 +.41383944,1.2314982,.48658183 +.57244867,.79402905,.99834121 +1.1366934,.14530446,.02448609 +.36384219,.58427679,1.4437478 +1.4749195,.76334541,.7681346 +1.9407642,.44764564,2.4435214 +1.845285,.18800248,.70691813 +.33936705,1.6564696,.48195892 +.57096246,.46427068,1.8171318 +2.5481977,.28793657,.18632963 +.90206467,.42772804,.68881421 +.97255187,.46364037,1.1417196 +.5528657,.58184854,1.702856 +.79836446,.13704105,1.4751349 +.32138374,.84352527,.83893106 +.91719331,1.0425478,1.2283653 +1.5522605,.23998997,1.0794323 +.65345196,1.3573301,.55345159 +.25911886,.52902638,.59622775 +1.1988775,1.2690592,1.0660839 +1.9069733,.73961815,1.4031271 +.51885571,.29316255,.95845261 +.98063883,2.0838591,.33255898 +.76641408,1.845881,.04293692 +.71426175,.2488911,1.0538783 +.745625,.80818305,1.1502794 +1.9664922,1.2591623,1.2933399 +2.0664423,.18986134,.68240394 +1.2067399,.75990409,1.9638759 +.91490146,.97185003,.32171231 +.54031688,.06391923,1.0294785 +1.2784021,.15940159,2.5339582 +.35252447,.73309695,.05272984 +.3495274,1.8795889,.84199755 +1.0412644,1.6030538,.21034207 +1.6614266,.20078693,.59614303 +1.1189933,2.354827,.37856331 +.53583202,1.3099148,.26393667 +1.0896859,.42140854,.7286331 +1.0683453,.88322674,.55447957 +2.2870458,.13056607,2.1529464 +.85814907,.48866977,.63128093 +.2959182,1.1598586,2.3839394 +.4608716,.95950294,.93351186 +.70722908,1.1395654,1.4882446 +.92401229,.10044197,1.682903 +.54080029,2.0071354,1.0381114 +.92467557,1.1544468,1.1214408 +.50309289,1.1222556,.30508034 +.92275573,.22757536,.47168423 +1.058096,1.2816022,1.0261598 +.66441371,1.1162602,1.2545663 +1.6359538,.86847799,.26327483 +1.4047181,.13784168,.44017002 +1.3867963,.55085157,.56153175 +1.7625205,.25006051,.23692598 +.68139243,1.8610375,1.0383195 +1.2457247,.1852824,1.5217693 +.41552737,.44734927,.5928543 +.88224158,.59035546,1.6712479 +.31266825,.77996489,1.624085 +.78584031,.29451844,.15716236 +.56583407,.15462426,.0408452 +.47352005,2.0568463,1.0990468 +1.0023245,.1188393,.29365796 +.59987119,.17745536,.7483279 +1.4041746,.2818232,.10229992 +.66694824,.82314626,.43884987 +.34276679,1.2485424,.03222105 +.50849015,.36009,1.0204627 +.95780583,.29773834,.42199879 +1.9781055,.69984505,.30672021 +.7078102,.0948919,.72775618 +1.2830902,.04835945,.52611437 +.30266993,1.2319891,.04768086 +1.3658256,.55600873,.96585451 +.55233192,1.8264275,1.0358439 +1.2279379,.10825665,.12214418 +.97025033,1.1242498,.62014527 +1.2920684,.42763523,.59364328 +.53136461,1.1754662,.71256314 +1.4571547,.5550211,2.1093393 +1.0392132,.48850604,1.3599819 +.96625305,.1085932,.04946048 +1.0375095,.03066367,.41373296 +.75632941,.08367933,2.4343497 +1.0073592,1.5130108,1.5173153 +1.1641083,.06331489,1.0523239 +.81032563,.01237446,.85356277 +1.4140399,1.3075908,.59949045 +.49019399,.1126783,.85339631 +1.0319226,1.1924448,2.3547758 +1.3638862,.77660813,.54753543 +2.6206226,.0556123,1.6855314 +.79664527,.67206945,.46233784 +.91644913,.40988731,2.0552357 +1.1368527,.8357686,.03305028 +.91078961,.12405718,.81449698 +1.2903848,.29168649,.13592297 +2.1777383,.2274177,.33797868 +.48846232,1.1729828,.34624795 +.6990559,1.4810987,.00599616 +1.3213214,.08300458,.56264163 +.38764606,.039476,.19758665 +.87637242,1.710778,1.2247864 +1.0056431,1.2755336,.98608044 +.36305478,.73723249,.07214843 +1.1734251,.72991638,1.237867 +.37901383,1.3582445,1.1447357 +.60563149,.89816046,.79477645 +1.065772,2.1653039,1.0486871 +.69172116,1.324682,.46604217 +1.201167,1.5554428,.14457063 +.84382073,.21947993,1.0544119 +.28346358,1.9252723,1.3776275 +1.3146442,.10920777,1.5736402 +.84212848,.7785259,.91423292 +.92543155,.63178082,.26483645 +1.7586257,.5552665,.78151461 +1.3730175,.04217641,1.8260368 +1.8382729,.80109468,.72318675 +.39119282,2.7853339,.22604808 +.65838972,2.3866301,1.1138947 +.6346702,.7756207,1.7489441 +.87351863,.74337752,.3781408 +1.2718459,.94214008,.56149304 +.97688466,1.5809952,.45672864 +.26399979,2.2847961,2.1897283 +.81417472,1.6082445,.55223054 +.82659105,.10755564,.4687716 +1.0468008,1.450995,.78152179 +.99157255,1.1204179,1.4558384 +.33067571,1.6110775,1.1061995 +.76197712,.02810894,.10276848 +.3754378,1.2982509,.1335997 +.43615149,.56112154,.26346348 +1.1514528,.16792314,1.1530113 +1.0691108,.74087927,.73186903 +1.0673424,.88307512,.09042487 +1.1923262,.19232613,.61797465 +.82718771,.02016715,.92374887 +1.3491313,1.3297119,.78522403 +2.2059081,.07413535,1.1108567 +.84461173,.25077849,1.4113791 +.60667198,1.3752051,.45953904 +.62814323,.5519119,1.4819636 +.71037435,1.4965342,.87595873 +1.582828,1.5305677,.06092637 +.54342041,.25002825,.66265497 +.82911009,.93939523,1.0730251 +.95681538,.30423116,.24762323 +.39514832,.17963638,.1318746 +.62634998,.59943837,.52313702 +.59012189,.73105069,.95706283 +.44786634,1.4011621,.49593052 +.5809049,1.1727238,.13523013 +.49681071,.05501089,.74372137 +.73079557,.79444667,2.1428094 +.52276551,.0147381,.29319631 +.49365206,1.499228,1.9426543 +.85532389,.00130521,.91016309 +1.0169415,.20452823,.25360035 +1.0861218,1.5797085,.62623268 +.50541588,1.0285649,.70080142 +.56892536,.92373875,.37276728 +1.0361092,1.440664,.11947407 +1.2988301,.40307952,.08788489 +1.0882596,1.6008634,.4327278 +.57390111,.14284075,.01198651 +1.5836116,.05909476,2.46105 +.576742,.09260495,.42957313 +1.8040115,1.5326873,.06448772 +.88369737,.41327335,.13812723 +.91006727,.87007405,.16811374 +1.1301755,.06223908,1.119797 +1.6464297,.15879908,.45815364 +.28457094,1.1819262,.6459483 +.58147291,.28273275,.51117416 +1.0172363,.02154501,.88391576 +.50214317,.4316008,.00099794 +.75192039,.31113041,1.0305258 +.959246,.37632558,.58412708 +.47702076,.59413186,.7304123 +.34884249,2.3758278,.61827579 +1.9792506,.55767654,1.511709 +.44145588,.57525725,.81501913 +1.0906868,.93554441,.01635919 +1.0446717,.79829841,1.0371143 +.57550543,1.5795586,.04548866 +1.7557353,1.0970454,.27693794 +.75477739,.29296709,.79210464 +.89051934,.07012988,1.6872779 +.5443755,2.5497794,.86603258 +1.5189359,.90641042,1.6781485 +.50129434,.05550634,1.7639105 +.51046784,.59526583,.48205407 +1.5328363,.1569162,.11268312 +.53943806,.21716616,.18516682 +.37685338,.4245329,.13651443 +.5758154,1.4949212,.72610005 +.55946922,.03501244,.1159969 +.45106454,1.3803073,1.275674 +.57623384,.09346612,.21764439 +1.3813421,1.5820462,1.601123 +.71246651,1.4568015,.25979218 +.71684574,.36767363,.21653671 +1.2507128,.12550744,1.7896044 +.63265869,.44499951,.0368387 +1.4027972,.38275016,1.4035667 +.51395029,.09727438,1.2057079 +1.2273895,.25751749,.52565376 +.42437971,.25268536,.07212152 +3.3706361,.71530259,1.6169232 +.40883846,.32031333,.91366276 +.49147056,.9847926,.79668165 +.7077288,1.1353233,.27970508 +.70428154,1.9445682,.23017872 +1.2582847,.57931931,1.6345085 +1.304015,.33889474,.0587618 +.63930526,2.0031273,1.2184543 +.59058104,2.1692573,.0526779 +.68166816,.18243927,.19109432 +.56396851,.57300533,.25440853 +.97573968,1.2631326,.50515579 +1.7377629,.78453437,1.048208 +2.2272355,.22092447,.6197963 +1.2974182,1.0575545,.67733498 +.8927474,.97194042,1.6976897 +1.7745011,.48908502,.0693782 +2.053185,.32964169,1.5505138 +1.4715501,.09000777,1.7411573 +2.6065664,.06153549,2.5981025 +.42894124,.90507448,1.9407336 +.86524813,.42430143,.75438687 +1.3670435,.26703731,1.4572756 +.62424934,1.2943167,1.1107937 +.8903861,1.7449893,.84278128 +.60061025,1.2245964,.66944579 +1.1321869,.81763631,.8426488 +1.0300847,1.1771673,.19189402 +.63025919,.68890786,.13719868 +2.5535819,.37204929,.42058156 +.48928969,2.4354819,1.8284429 +.68952514,1.6723081,.06284019 +1.1595976,1.5607558,1.1818198 +.89355436,1.7596228,.73914936 +.83607978,.89005879,.51274414 +.52601805,.52540454,.30357707 +1.3431758,.22667367,.25686457 +.34588438,1.0137621,1.1662453 +1.3410071,.55379243,.05014309 +.40804827,.56629412,.60076118 +.75323342,1.8688775,1.0880387 +.46160897,.30788848,.52326275 +1.10397,.8172133,.54997169 +.75032525,.56014282,1.101294 +.63426965,.51138008,1.4166297 +.70594074,1.1457407,.84329886 +.71984147,1.5112067,.87931305 +.86373546,.26742992,.07152611 +.81014829,1.6324874,1.4348112 +1.0835306,.44707789,2.2032515 +.75890294,.61465726,.09902048 +1.087857,.94955482,1.2030534 +.42739287,.04251507,.17079537 +.79101933,1.1049964,1.6517398 +.69061136,1.3202765,.3987273 +1.1184162,1.2751501,1.7977691 +.48046798,.87375023,.56017036 +.38207214,.66677565,1.221868 +1.007228,.64493384,.45925381 +.55804746,.67282289,.08954716 +.43093515,2.3054773,.77313886 +1.1320544,.33312144,1.2692771 +.89533834,.37337798,1.3147905 +1.2848079,.92774587,.47566772 +.66435217,.25313016,.58251473 +.38561387,.92024627,2.5096483 +.45899049,.28173816,.6883375 +2.0361814,.24123565,2.255068 +1.5368191,.14258259,.88427305 +1.474393,1.1728147,.35652675 +.98287963,.25968524,1.3770389 +.68442421,.36317477,.84125204 +.50985925,.16860558,.24221257 +.88413737,.55012035,2.2759596 +.35342762,3.0022152,2.0417021 +1.1816146,.33703981,.50716317 +.94224741,1.9354289,.2035143 +.65105747,.1822826,1.5406068 +.73614406,1.3311724,.43285556 +.76621157,.23308418,.46086243 +.22386006,1.3267483,.54288916 +1.5021323,.29336773,.06769733 +.7234625,.08751568,.88423143 +.98897067,.58058954,.18123966 +.60716241,1.220261,.10920042 +.73890009,.45033229,.52430549 +.56032983,.22360977,.32458022 +1.1156581,.13851721,1.0400132 +.94293876,.31668534,.47652591 +.55291449,1.226791,.18285591 +.96985929,.7632397,1.8726235 +.50377008,.24768195,.43715796 +.49801683,.84055257,1.1636586 +1.4836014,.44992394,.05084087 +1.7959398,.87427108,.76028873 +2.8116755,.13007961,1.2300906 +.92070486,.28100724,.69412848 +.75132763,1.6745439,1.8858938 +.57158772,.61002466,.48435573 +.64597415,1.1804648,.03305067 +1.0632675,1.5148268,.76944417 +.39819953,.28186793,.29725835 +1.8040953,.28960387,.95307818 +.76708132,.39806929,1.1741463 +.95109338,.68420095,.04182906 +.94470433,1.161524,.07547799 +.61426813,1.8739572,.50603481 +.62307306,.48461581,.62992071 +.51843628,.97369357,.57511703 +.61521374,.65296529,1.0402199 +.68543407,.30028412,.67198265 +1.3870078,.95302276,1.4096224 +1.8220928,.11334181,.99271902 +.32417824,1.2620236,1.249087 +.78333581,.42263339,.67343092 +.3294099,.60767419,.71720433 +1.3457958,.91626035,.07627471 +.99605956,.83270035,1.0472131 +1.2710996,.54214941,.30387806 +2.1304626,1.4737437,1.8356285 +.42024781,.67225695,.9258389 +2.7736086,.45374611,.36272004 +.82656801,.35860192,.8633007 +.7919344,.76850648,.04392013 +1.4998562,.72393681,.01520049 +.5419134,1.4906995,.83824219 +.71741601,.76537186,.87691839 +1.6545715,.64172456,.11626334 +.85649571,.98134331,.86373654 +1.921063,.49734899,1.8490488 +.45108953,.04027736,.55926085 +.70238636,.29396149,.69717358 +.27534245,1.8133395,1.2602939 +1.2857576,1.5967807,.18634327 +.31222316,2.0182426,.41717096 +.98390317,1.124212,.29851234 +.70718331,.05285827,.3876808 +2.4432306,.88906718,.4983109 +.78982383,.57830236,.94024489 +2.5439947,.21993663,.86037239 +1.2031107,.77677713,.60188414 +.28322466,.72096394,1.2914541 +2.184696,.26172898,.56302573 +.98242285,1.0669575,1.1971599 +.79636359,.96210393,.72655479 +1.0189845,.24653034,.47413102 +.6887319,.09120711,.4069959 +.91365224,1.483647,1.0886118 +.71861683,.43450833,1.7897019 +1.1115189,.35727163,1.437573 +.79482116,2.1299245,1.8659762 +1.079646,.05344968,.08790166 +.83965778,.71770596,.72497149 +.53369363,.9360111,.33685652 +.75036214,1.1948985,.70342291 +.82327094,1.5987974,1.7176659 +1.6445671,.28038616,.54874397 +1.183866,1.5754477,.83386358 +.95374915,.21473912,1.7867403 +.99352486,.96278027,.62324653 +.62389505,2.0142652,.66849127 +1.5903447,1.5978777,1.180342 +.80746377,.72250525,.03149864 +.53615505,.35741483,.48469898 +2.9460115,1.2491448,2.3619801 +1.3615822,.90575215,.10969373 +.65677631,1.598192,.08391988 +.73044861,2.074488,1.6235118 +.81872009,1.0483287,1.0286877 +1.4274233,.5995414,1.6630422 +.60814725,1.1351781,.26117719 +.38831173,.85866133,.5076884 +.40202244,1.3348321,1.4663566 +.41853664,.93305884,.70255817 +.81786904,.50044015,.90637504 +.88067628,1.9888465,1.2341502 +.97992319,.91997906,.63094817 +.56977992,.86323727,.92453321 +1.0683404,1.2838572,.9655004 +1.5534323,.71629507,2.6998987 +.64496712,.57153547,1.0449211 +1.0707815,.60073568,.34977453 +.53520871,1.2508475,.14068386 +.31781615,1.0329266,.02874874 +2.0644844,.55335338,.29669887 +.7956131,.21052032,1.0500635 +1.1165325,1.0483615,.71533523 +1.4821175,.60007618,.64805036 +.42749923,1.0045743,.06797304 +.66659313,.54503784,2.1158756 +1.0800773,.29682325,.43291572 +2.0465517,.39896326,.96834151 +.48200397,1.3954888,1.7365116 +.5449676,.80393512,.47079979 +.96881541,.28892968,.48299213 +.39433329,1.6586628,1.0256705 +.3189166,.63824963,.26759151 +1.6054892,.34655548,1.2133882 +.82923733,.49179438,.8350322 +.62658731,.87147688,.41805835 +.63488112,.80183348,.68794465 +.91115453,.92546989,.48564645 +.57916647,1.2736757,.29442121 +1.2770621,1.0309571,.9374258 +.70100828,1.7987944,1.0399594 +1.1243007,1.0154632,1.051891 +1.9731627,1.8055605,.47375682 +.45915145,.71243391,.6408544 +.88921393,.72010267,.99453158 +.67662287,.39010382,.01217366 +.59103598,.49535286,.91063729 +.36053773,.55675639,1.7947881 +.48438342,.92754556,.45469485 +1.7575011,1.2991946,.25017364 +1.8533969,1.5776038,1.5689702 +.51545758,.69495509,.45203036 +.52608282,.36123898,.07945695 +.93275186,1.4047427,1.0286544 +.77380317,.47379886,2.6229045 +.516193,1.4466363,1.1974135 +.94352467,2.5566899,.41192465 +1.1808276,.94748514,.06695664 +.99548902,.02019769,1.2429049 +.40110998,1.5003954,1.8028935 +.90528805,.62108315,.55047735 +1.0290432,.87770343,.02291273 +.37900663,.41804501,.15201033 +.87991858,1.0786858,2.0528412 +.98027204,.22562658,.54326625 +.55784764,.25594318,.02444893 +.57208824,2.7745417,.72602446 +.45421174,2.4191017,.83384052 +.68156162,.11861565,.99986894 +.52728565,.37181589,1.1298286 +.86936593,1.1940568,1.0193906 +.5587176,.18740793,.97354603 +1.2125275,.13037293,.12949626 +.64553937,.65272144,1.3374063 +1.2327116,.446829,1.1003614 +1.3363242,1.6931524,1.9297922 +.29965812,2.8720089,1.100303 +.40316746,.29399836,.49644744 +2.9089638,.75214777,.91412768 +.80115854,.21830246,.28606422 +1.1845208,.40700522,.73120696 +1.0411074,.68059614,1.692789 +.97113639,.10743922,.83974606 +.7218936,.97145677,.51053052 +.4532843,.32862109,.88607524 +.84990436,.24777675,.68798938 +.75753506,.04893793,.34126497 +.5682636,.8632103,.36219194 +.46669139,1.5387083,1.0274235 +2.5220781,.52220699,1.2354143 +1.460348,.31652128,1.8477767 +.36733144,.53033398,.00537356 +.67022784,.63289201,.26234946 +.85942886,.23321995,.20081661 +.81191019,.12998132,.96645222 +.29334584,.91707894,.04384294 +.77315726,.3185105,.29666518 +.51415721,1.5762345,1.6190233 +1.343318,2.6798111,.64268503 +1.5088576,.11158908,.34016004 +.65421279,.33785176,1.0178245 +2.5732806,.20020692,.11079067 +1.2671569,.18081391,.48271943 +.35233975,1.5596307,.56159715 +.86045711,.59993869,.08814893 +.76499847,.06598557,.88815444 +1.0276731,.43961952,.93557697 +.5606942,1.2079946,.2131611 +.434345,1.6671376,.66452286 +.36841483,.54991188,.34886446 +1.9790323,.7590713,1.5948618 +.99263331,2.2041536,.4442665 +.83543335,.54887372,.21034461 +.81031082,.61552447,.1677088 +1.8611765,1.0762093,1.6639013 +.98140878,1.2012975,1.4534461 +1.6507424,.7892825,.59237956 +.86610194,.49187757,.0131424 +.75269544,.19900375,1.0085707 +.89839142,.35895369,.80704147 +.79264958,.79054406,.37189428 +.81034222,.57577243,1.2118112 +.4418511,.18656451,.18262831 +1.6442339,1.8439109,1.9461314 +1.0505877,.1156707,.16096433 +.85794853,.71071521,.19940059 +.91160194,.1282971,.98504332 +.76910247,.3157645,.45560763 +1.35945,.53422307,.52940855 +.53837061,.16669305,1.6609492 +.49301366,.61249367,.37415392 +1.0368232,.01381875,1.141641 +.72094179,1.4804274,.36723558 +.53326996,.17303914,1.3557818 +.49542635,1.5631729,1.6032247 +1.1089525,1.6980193,.75088641 +1.8316753,.04645468,.34233689 +1.0454007,.23305526,1.9398331 +.68480322,.6115119,.4203949 +.61432033,1.0167531,.76140844 +.42025899,1.1402026,.61476977 +.98465344,.32926825,1.7286948 +2.0025349,.7870923,.21488353 +1.0938791,.37582045,.20798634 +.86620984,.53663075,.44837302 +1.2853157,.63839553,.63911233 +1.1714325,3.1828122,.54130096 +.39245354,.49868331,.87298655 +.71686338,.14240288,.4461955 +.46034836,1.3006408,.60361294 +.78509819,.5663309,1.0267118 +.67841681,.06562691,.06491693 +2.225359,.15988042,.42506806 +.45871212,.06709143,.9388224 +.6427446,.72893791,.23888645 +.87470557,.90419444,.06611811 +.58889672,.08343203,.12400773 +1.5639653,.19833157,.09019969 +.55067446,.89658432,1.0095488 +1.5234345,.67698403,.51981415 +.89800814,.8673559,.06336596 +.6186514,.54408366,.88005522 +1.1324949,.15010469,.14303226 +2.5467199,.18684918,.27136326 +.99552735,2.0346479,.3443633 +.54964415,2.209168,1.9691509 +1.3302966,.64276507,.37086058 +.72891921,1.1331964,.71188997 +.67186175,.57079445,.808507 +1.5601813,.75526474,.79951933 +.52860328,2.2304037,.08628313 +.93358157,.95323878,.42544061 +1.1054027,.76603766,.63502534 +2.0806098,.64117204,1.8010209 +.67712685,.62246247,2.3469963 +.67762241,.99786142,.32916826 +.68682496,.7005754,1.7224138 +.55902745,1.0139306,.45130134 +.97015138,.81661212,.91668893 +.59483512,1.249026,.98521702 +.85206451,.51495804,.12248633 +.46000263,.7882856,1.5087763 +.69900396,2.4359719,.89392821 +.81768311,.05295102,.42850947 +1.9773047,.37131782,1.4137061 +.70208758,.54777353,.07058266 +.53537735,.46206921,.17363935 +.99968426,.12067868,.61244904 +.51498649,2.6546828,.30536969 +.63949572,1.2842358,.64243391 +.68938088,.69122851,2.3700564 +1.495745,.33513504,.30588222 +1.1908422,.74810615,1.06967 +.85899964,1.9055721,.18304237 +1.4299093,.77558868,.12212982 +.93077663,.27558673,.2159817 +.32641798,.8242972,.67574112 +1.2718143,1.0420975,.33265932 +.75532885,1.1483804,1.6185673 +2.2940178,1.0621303,.85002525 +.78633985,.58842239,.38500375 +.66323677,.67594015,1.8604099 +.85543574,.12637622,.27847495 +1.4105513,.02960514,1.5950941 +.50257691,.76609473,.5302211 +1.2457472,.13949019,.62331033 +.87727041,1.5868345,.08812576 +1.1773896,.19640615,.68115844 +1.2850259,.83710275,.62204882 +1.2811391,.26683095,1.4653347 +1.9171977,.11432956,1.371465 +.86352491,.6681308,.37925296 +1.1325548,.66849968,.63896307 +.85218223,.16806379,.99531568 +.59883971,1.3311972,1.3708935 +.20865568,1.3468521,.26561302 +1.9325844,.10021121,.30507479 +.67054648,.60615436,1.7650389 +.65033756,1.0312473,.50225087 +.74573065,1.616657,1.305647 +1.2190857,.33092904,.2363711 +.68373636,.95045102,.02034308 +.90101919,.7215412,2.2447426 +1.551085,.41291269,.41707569 +.72344897,1.5179976,.07213553 +1.8054063,.63558859,.81584789 +.92779131,.45692088,.00490989 +.52153789,1.1276999,.34006993 +.46603782,.40046945,1.5362545 +.38143307,1.9528254,.24919505 +1.2770395,1.8131271,.75924804 +.86705207,1.0299191,.53892393 +1.6653325,.28882923,.65023317 +1.1576304,.61958274,.40186969 +1.6244236,1.2786171,.05799821 +.43187031,.60013831,1.8562952 +.79058316,.004982,.18087673 +.65503043,.91879276,1.6495569 +1.4996204,1.0705176,.9799086 +.40351956,.50278302,1.723463 +1.0151284,.92165899,.89525086 +.73725513,.15265573,.32460672 +1.1172611,.12742536,.61992489 +.9265818,1.2868354,1.7970629 +2.3595982,.23873993,.64658924 +1.1250998,.12805185,2.4037186 +.60074711,.61654484,1.4902171 +1.1734092,.10161922,.27947522 +2.3374146,1.6379073,.62617522 +.63711352,.53863422,.27774309 +.62116113,.4455201,.17195581 +.45739679,.54990169,.61240181 +.6384417,.33995248,.73854666 +1.1186341,.77177517,.46932066 +.65544062,.15341348,1.7284019 +.43718437,.51374023,.74777312 +.82874477,.37484982,.44268314 +.19207988,.49388289,1.7800488 +.60097172,.35005776,.33385451 +.84948343,.54267949,1.1283531 +.69962199,.6077271,.23664038 +.32682311,1.2071026,.27738686 +.53556713,1.2448638,1.1602998 +1.176895,3.3227667,.48960095 +.68806363,.08180514,1.0815731 +1.6344175,.00918171,.62316401 +2.2817318,.71241237,.9845723 +.73065812,.25793034,.84703056 +1.1895054,.76124302,1.7611014 +.80925227,1.850282,.12890267 +1.1531163,1.0320809,.92572422 +.80552771,1.5549351,.29500543 +.312058,1.3034168,.67454877 +1.0089354,.21145717,.58752136 +.88776025,1.345223,.1440899 +1.202749,.1688953,.65381568 +.64063865,.25252668,1.1122229 +1.2777083,1.2561101,.96236532 +.26818945,.42782559,.23955527 +.58684585,.88719847,.00665889 +.48921985,1.2134959,1.0259753 +1.6998455,.64579388,.39762939 +.65591466,.34297671,.23551733 +.68718646,2.1793387,.1335016 +2.2874579,.82705953,.84650053 +1.5165692,.13736335,.59743878 +.52743622,.46748233,.85707173 +1.1955572,.78372675,1.8496937 +1.1121824,.44335872,.40031095 +.71991824,.92620059,.14040101 +2.2260789,.52088294,1.6851521 +.6784984,.26602865,.24190048 +.56651476,.1724855,1.1947693 +.29824369,2.0813895,1.2017027 +1.2961339,.75875134,.02449637 +.64506605,1.5720721,.9369608 +2.0691472,1.8228278,.89313013 +.75839255,.65125668,.64246491 +1.5552082,.86355707,2.2211513 +.49100076,1.3924389,.1182661 +2.1978845,.7909552,.36095583 +.53285477,2.2750944,1.191433 +.54801411,1.564132,.79950007 +.39451305,.44429952,.21483353 +.30168773,2.2433998,2.4274467 +.24164109,.57838499,.14971497 +.72334478,1.4959275,.59459086 +2.1466599,1.0742765,1.3099609 +.48138532,3.2336577,1.0866456 +1.3957164,.01162968,1.4214264 +.50351964,.82255756,1.3566534 +.65330376,2.2759965,.16406209 +1.1445623,.32657192,.73623814 +.32886276,2.1813133,1.6656051 +2.0050269,.20548118,1.0136616 +.60805845,1.573584,.32203061 +2.9067075,.0679384,.15696885 +1.032433,.29181014,.3179578 +1.4620317,.41010473,.10291105 +1.2657448,1.2535376,1.3825685 +.97514043,.29952225,.7841907 +1.2315803,1.3074001,.06696728 +.53060129,1.3232514,1.7931214 +1.4959286,.25778389,.31076575 +.49785276,.17450935,.12609145 +.7566351,1.2533337,.658595 +1.5046216,.7953195,.78907451 +.69617176,.6581717,1.4481152 +1.866587,.37806551,.38020627 +.70448102,.92645566,1.0707052 +1.3134866,.27842488,.93839767 +.80236597,1.7164837,.71578827 +1.0426784,1.5228946,1.7651326 +1.9184071,.94636885,.3274162 +.46965155,.54651623,.18811571 +1.1205732,1.695837,.7613242 +2.395802,.23347365,1.3893491 +.37232942,.92065108,1.4226031 +.73438218,.47187595,1.1460196 +1.0859447,.46026078,.09436076 +.68115011,1.6627619,.8974104 +.82348737,1.3811734,.82646595 +.26624957,1.0681138,.76456888 +.60009635,.67337063,.19067298 +.91763981,.87552263,.60822014 +.98553991,.18749033,.22014804 +.58014533,.80630346,2.0733992 +1.2707977,.39907554,1.365907 +.72392948,.27304917,1.1791418 +1.5631177,.71072169,.02614843 +.59409654,1.4849126,.82232827 +.38609158,.37093485,1.7456074 +.49260306,.30184307,.1454539 +1.076223,.18701561,.84723645 +.5756002,.50607303,.45296966 +.31440227,1.6348389,.77208605 +2.4052555,.47927957,.09316545 +.56661119,1.6652072,.11661896 +1.4036513,.80689389,.20562454 +.6044527,.5907506,2.1322984 +.80777379,.54309754,.20928524 +.70828767,.49045624,.19313368 +.79681078,.03082282,.23075301 +.88323252,1.2496947,.4778509 +1.1740127,.06650652,1.2193178 +.606928,.86163618,1.5105514 +1.1537488,.14500734,.98468603 +.57864831,.61669003,.27660344 +.95367608,1.4365585,2.2741432 +1.8789284,1.214139,.8384333 +4.0629569,.58732367,.90689441 +.88564362,.34450271,.64167332 +.71006414,1.7630727,.16283938 +.89512261,2.082847,.02843222 +1.3745913,.56427863,1.7058214 +.75698002,1.2026674,.50492546 +1.3827877,.12261,.65962453 +.68951748,.91335246,2.9934958 +.55242007,1.6782441,1.0139728 +.68532059,.76569436,1.9947336 +.66770663,.84366439,.82451925 +1.0336625,1.6735441,.83991362 +.59833586,.81450437,.02771747 +1.5312513,.11025665,1.3597597 +2.28544,.14276974,.43461939 +.82440848,.25392828,1.6450405 +.64890504,1.4047078,1.0739051 +1.4173602,1.1145188,.35061567 +.72044526,1.2290823,.8332443 +1.1112488,1.6812895,.27223289 +.54264886,.3033626,.8595157 +.61258347,.60107814,1.5288864 +.38635989,.51834304,.04647753 +.94460873,1.4771725,.14303071 +.82802639,.97826531,.82307715 +2.7151024,.2034325,2.2499815 +1.3827723,.87810785,.69178646 +2.9160892,.29219745,.97775425 +.83610342,1.4417035,.29956096 +.59002239,1.6813049,.21387344 +1.2687143,1.0177733,1.0298337 +.84394585,.90907829,.36864278 +1.6526476,.78304346,.55945004 +.78728106,.85094723,.31103702 +1.2634621,.53245761,.92604474 +1.0362452,.86131037,2.16362 +.87473932,.24161848,.13477465 +.4322059,.85938762,.12236469 +.77714774,.16348342,.12492878 +.6591063,1.1025802,.79122712 +.75264904,.47382879,.32525931 +.94644631,.00332262,.41107217 +1.5479141,.92341016,1.1179277 +1.573565,.81571409,.14164873 +.90613588,.76187738,1.5590174 +.43065389,1.4492331,.32574527 +.7012341,1.1859591,1.8233899 +1.5660229,.34646827,.56239592 +1.1529417,1.4685309,1.4210761 +.26295841,.16806002,.38358431 +1.1030746,1.5793698,.62152607 +.70983796,1.4529437,.42189729 +1.0391512,2.157849,.31378752 +.41975913,.29967369,1.37154 +1.7443665,2.0203596,.08103331 +.4940619,.65742789,.18708558 +.70961997,2.129687,.90455044 +.2369576,.40648197,.48482908 +.67906938,1.6976669,.62732029 +.98218241,.614621,1.6988752 +.96140732,.97664411,.43213407 +.39233423,.53551612,.29090743 +.45423696,1.316551,.06968595 +1.4532461,1.5173695,.38525589 +1.0637427,2.8328355,.01789198 +.57655249,.19522701,.16735978 +1.4106369,.09978327,.35317149 +1.3737213,1.8299447,1.3661001 +2.6711183,.3512074,.4197959 +.97235373,3.148859,.68239125 +1.244935,.45893933,1.1240971 +.63486054,.29492543,.3083778 +.79258746,.18650863,.08740898 +1.0157312,.19022383,1.9918227 +1.5343191,.29155517,.41151152 +1.025592,.35961201,.31537952 +1.1684532,.40806893,.75198636 +.76105916,.26801706,.10289547 +.74075875,.34720006,.2432103 +1.2942345,.13014721,.35951778 +1.3056702,.43621673,.21109035 +1.7767621,.29765103,1.4830197 +.87962082,.6078662,.41980361 +1.0295016,1.5615928,.48314406 +.33957855,.64419875,.12276936 +.63106731,1.0680407,.84385319 +.78161831,.59479035,.22753922 +1.0509929,.10549661,.1313548 +.94346145,.82976731,.75846254 +.775147,.1932759,.58377119 +1.1256444,.13155106,.47401225 +.68966716,1.3765245,2.0264176 +1.2641472,.36845662,.16932286 +.56198031,2.569495,.22742437 +.68739935,1.0054963,.48769799 +.80252528,.33820865,.00558465 +.4323586,1.5212569,1.3857745 +.51509618,1.2501939,.07683628 +.94346309,.25537485,2.472656 +.53521969,1.7531788,.78458049 +.52082378,.93228005,.03611288 +.71304294,.35006448,.17290241 +1.5424031,.39285354,1.6754149 +.34566337,.63140731,.72281482 +1.132237,.26580242,1.0194689 +.99794405,.8671809,2.0902577 +.66915506,.77405847,1.3091522 +.60938431,.03644586,.32766565 +.89436896,1.4724719,.04605924 +.52419165,1.0080321,1.9616802 +.49467508,1.2333601,.47188904 +.83991089,.51076555,.70977516 +1.3767067,.84683389,.66627155 +.99897023,.80049841,.93240896 +.66233908,.9485818,.50501453 +1.8426445,.30833392,.96198567 +.60905203,1.5349116,1.1632868 +.28270345,1.7139024,.8653856 +.910349,.28292207,1.3945727 +.76620156,.03887566,.83155371 +.95756199,.56060224,1.2537317 +1.1842398,1.2784964,1.7075356 +.85985115,1.0656567,.24970163 +.88179984,.76920482,.53603169 +.56382635,.52647476,.4158639 +.63704743,1.8186095,.15145471 +1.7132317,1.1974637,2.0221085 +.87056191,.75390137,1.3158464 +1.2026521,.13246197,1.820903 +.47268779,.34277523,1.0682332 +1.0153925,1.7077313,.98809796 +1.2979014,.26121525,1.0751264 +2.8518685,.47190394,2.3172395 +.68003257,1.5109288,.90974581 +1.3537931,.42613126,2.2128337 +1.1342791,.32608438,.19022563 +.5672836,.60267206,.54683726 +1.1003768,.67406828,.81682871 +1.8498284,.12747214,.44120627 +.75970559,.674505,.58055125 +.53126965,.72405178,.47190279 +.48504962,.39714806,.43374208 +.68164672,.28670436,.2498745 +.8470106,1.1408553,1.1794657 +1.3882321,1.1156142,.25793576 +.33687902,1.4210923,1.6408517 +.64415291,.56027039,.90989503 +.50303176,1.2039412,.22655204 +1.052083,.62803669,.77619332 +.58600189,.11267041,.70695945 +.7637117,.17030897,.78862517 +.89366198,.25678366,.77154435 +.78424195,.30269172,.79864573 +.58436049,1.0225665,1.0310853 +1.5921978,1.8355506,.80192233 +.80347914,.9756956,1.4058465 +.63394262,1.1442282,.63298222 +.4519256,.61501915,.96899042 +.70694115,.75969006,.35122375 +.21455507,1.9279052,.52735915 +1.418932,.82390047,1.5453705 +.50558634,.04661053,.3061204 +1.1195476,.73448297,.25302501 +.52887096,1.0404738,.64272427 +.80551104,1.8774913,1.4904541 +1.3668807,.02036904,.42408015 +1.6177965,.86314473,.10328043 +.90296033,.50990139,2.0040967 +.88492115,1.174669,1.2274341 +.87712748,.03810415,2.8634717 +.63717701,.14328253,.45566542 +.5653738,1.6616952,.11887876 +.60135506,1.3261662,.21178304 +1.4609752,.32578661,.90210081 +1.3773375,1.8084901,.10922559 +.99547381,.40640257,.49740995 +.91139382,1.2232329,.60366701 +1.6274484,.12631329,1.6628101 +1.1766731,.41451549,.49749438 +2.3099494,.03896919,.35523247 +2.6995081,.4357574,1.0652327 +2.3209407,.30177774,.47675242 +.72144341,1.3635386,1.3902269 +1.1542823,.46235746,1.0797604 +1.0944289,1.0029786,.84364072 +.80056048,1.7706292,1.0294366 +1.3721104,.35539197,.40512907 +1.0990021,.42624025,.06768244 +1.2355492,.67167466,.17413572 +.86493889,1.1637688,.58763463 +.45280729,1.2728459,2.4269231 +.55389859,1.7376832,.10281309 +.96667033,.44627829,1.2695047 +.61715163,1.2984481,1.5861107 +.61039434,.46947988,1.819251 +.21334308,.32904265,1.1590462 +1.8167862,.45236111,.29363669 +1.1275714,.99691414,2.4620596 +.95995158,.20401661,.81026527 +1.7271887,.22498043,.49138461 +.5697459,.69808194,.22837669 +.69472122,.5159994,.03843385 +2.5008729,.90782526,.61336564 +.51693371,.46449333,.08358606 +1.8201157,.77273949,3.3014626 +1.4637708,.18941622,.54165787 +1.694011,1.2084369,.75147246 +.33479616,1.8571362,.71695271 +1.1703379,.60793555,.06790378 +.66850886,.48927949,.05539428 +1.2854579,1.4625626,2.8303086 +.83900546,.43882102,.54485278 +1.0673463,.44586261,.59759042 +.38675684,1.601288,.24141112 +.45354016,.1698127,1.8630783 +.36220752,1.0337187,2.9389991 +.65174529,.38867664,.30860174 +.59348272,.41289577,1.1265716 +1.0684223,.0876304,.96474254 +.51152121,.46135927,.43650549 +.99672878,1.6891933,.72421228 +.8033996,1.4235482,.44583791 +1.0036662,.27668993,1.1863698 +.62253647,.84422053,.35403868 +1.0176347,.10564683,.81093684 +1.3061016,.36066517,1.0767003 +1.1380706,.39678991,.0658234 +.44774432,.62922854,.9980822 +.37974434,.58460078,.08776581 +.62824338,2.5077995,.55271595 +.46954577,.26269939,.2400223 +.70890066,.1836649,1.303102 +1.1548211,.15194742,1.2683167 +.59375215,.44526601,.50668958 +2.3615171,.09491867,.11471864 +.49468805,.49754715,1.1620099 +.51728635,.49508086,.17464982 +.80538472,.0270599,.05255551 +.73854889,.632773,.28183662 +.67547476,.02965404,1.1486718 +.63862797,.84125777,.61204485 +1.6228728,.31313608,1.6734006 +1.2992767,.14818571,1.5298641 +.58923358,1.4317775,.19210998 +.7415323,1.5005156,.78058781 +1.0836658,.70729889,.19062821 +.2812049,1.2437254,.46210723 +.75677214,.76846317,.67658372 +2.4423283,.11393099,1.6017115 +.83638367,1.0262468,1.8705154 +1.2656575,.65659622,.14217709 +.73399843,.45104752,.64336563 +1.1145715,.26988825,.36672098 +1.4227656,.31434908,.53885299 +.65496958,.99101842,.89446828 +1.2843996,.54715491,1.082802 +.46389891,1.4110836,.56853986 +1.3613109,.62189415,.29900478 +.65985633,1.3766859,.20332301 +.51988591,.07634666,.47228428 +1.9348729,.0006284,.21201953 +.30694964,1.3170177,.81630182 +1.4879715,.66930905,.83101178 +1.5516883,2.3244088,.14515883 +1.1752212,.96566622,1.5488705 +1.1434342,.10449424,.14346972 +.52665484,.60103468,1.289782 +1.5484582,.28886487,.31824142 +1.627579,.57545771,1.7281604 +.76779442,.8331616,.92350893 +.93167454,.73184631,.66489212 +.92406766,.6912142,.7368336 +1.0023242,.28909158,.71102562 +1.079046,.58941164,.9340024 +.62105937,.47422028,.58945443 +.9965843,.41435158,.12725563 +.72335998,.16920474,.67797795 +1.0124541,.11475609,.58626883 +.83786096,.58481536,1.8933475 +.96289208,.83677385,.67828495 +1.2471321,.09510108,.81502882 +.94416336,.13942561,1.5424414 +1.8668774,.26790572,1.2616743 +.60104529,2.7170669,.41505968 +.58063738,.93583486,.21324908 +.70070414,.33862164,.56083171 +.45694509,.40944025,.37538508 +.57353705,.68858023,.22691908 +1.0250306,.70518698,.93086475 +.72784744,1.2101291,.02406186 +.9376688,.29265232,.10290646 +1.0308232,.27709118,.12243752 +.53324753,1.8051397,.08529712 +.64231614,.44850204,1.0576026 +.7363299,.03116176,1.4659916 +1.6431337,1.1261632,2.4186886 +1.0078178,.26286703,.07334587 +1.4311691,1.014552,.54818257 +1.1307471,.76675611,.49684559 +1.6331264,1.0506272,1.0380674 +.65245499,.65516797,.58798391 +.58010597,1.5241662,.48146682 +.90287983,.58492194,.00093196 +1.4945286,.06120294,.26013876 +1.2140932,.9709087,.41161582 +1.2232582,.91420629,.68804288 +1.4647666,.08377346,.20485418 +.70308689,.3809623,.51841997 +1.1101694,.30559046,.82146926 +.85084523,.34689949,.72580893 +.63861245,.63310211,.0572841 +.32329646,.94010499,1.1213051 +1.0320979,.63432866,1.7631134 +.81193092,.02919458,.4187553 +.64302929,1.7153392,.38185071 +.90757643,.56567291,2.0771475 +1.3047023,2.6164774,.5710374 +.98755531,1.6335353,.09066412 +.53004953,1.0210117,1.1742756 +.3533842,.51203423,.25063937 +2.8708816,.32696526,.31849501 +.6474287,.02567053,.67580967 +1.4758816,.63961247,.59113695 +1.188339,.07254446,2.2127358 +2.1393302,.18937005,.08704343 +.49104125,.298937,.21356356 +1.8170768,.2063982,1.4634242 +.80632747,.54183801,.24999816 +.87771234,1.8544583,.77537835 +.42803098,2.717514,.5584106 +1.0782359,.09562903,2.1876322 +1.076131,2.1051595,1.7753388 +.95156066,1.2200714,1.5819505 +.8443667,.22085222,.66139644 +.77670312,2.0920167,.10549796 +.57079001,1.1844775,1.8666862 +.80646496,1.9347701,.40048676 +.87459354,.84172872,1.8174795 +1.0685919,1.4761156,.51501031 +1.0399709,.09809884,.22938266 +.70861386,.89712552,.6114924 +.41177254,1.3707346,1.0600305 +.69420198,.68588841,.42571569 +.25017774,1.4965281,.61905325 +.86611378,.85733822,1.0612408 +1.0109269,1.7630278,1.3544298 +1.6413894,2.0582118,1.4206175 +1.008524,.11449639,1.0025337 +1.19358,.61632444,1.6660992 +2.207323,.32575814,1.4862254 +1.3083144,.0218083,.25885949 +.84028264,.73260321,.14135466 +1.9906681,.23098097,.09499807 +.67294991,.79001443,.06663948 +.90432981,.12178395,.33652505 +1.0772835,.46350142,.47598333 +.96209037,.43493944,.89439671 +.81239604,1.4974419,1.0818464 +.67267368,1.4168365,.32863514 +.34185151,.81612753,1.5659774 +.89701638,.64237863,1.1270285 +.44691346,1.0275005,.26109248 +1.0828848,.14291088,.83740072 +.82853897,.56472965,.79116661 +1.1063066,.94053938,.45369344 +.54250562,1.3227136,.31427209 +1.1615492,.70560324,1.1368401 +1.2034276,.62666169,.81381078 +.57215345,1.2539701,.5338944 +1.8461105,.35752764,.72351755 +.71527742,2.6247858,1.5046078 +.84721901,1.2743654,.08252761 +1.6619257,1.3031654,.15811648 +.47192301,1.8810465,.12396007 +.2566828,1.3689046,.0012861 +.75990834,1.0967559,.74991905 +1.0416572,.05534795,.86314374 +2.1079233,.24574708,.25084338 +.61763906,1.0537696,.22939691 +.86219141,.77555021,1.6373817 +1.1260653,.00862485,.02254158 +.67911114,1.2364123,.33488209 +.45255695,.221422,1.4414034 +.60029223,.85604934,.85833272 +.3610577,.6586306,.26958125 +1.45046,.35551948,.55143861 +.59529241,1.736243,.00066267 +.98103515,.75568103,.50557787 +.86079165,.51251188,.49665666 +.5970946,.38452809,.85491453 +.28537543,.21197397,.56343113 +.56814372,.53216841,.06877552 +1.3974991,.37988288,1.3338408 +.56001436,1.9724713,.17340716 +1.3079678,.29982196,.1146371 +.59130013,.49514531,.81533908 +.95592619,.67134306,.91753341 +1.1274753,.78161067,.04513379 +1.0665947,.57316609,1.2281656 +2.9211074,.11958639,1.6348684 +.78974941,1.3639519,.5166523 +.66707306,.19573817,.61240557 +1.6963949,1.5882397,2.2766401 +.64863823,.77982751,.00524581 +1.45018,.41999688,.65797997 +.7341409,.90408625,.59328478 +1.4094057,.99758345,1.480014 +1.8818646,.37274731,.20453348 +.71211174,.96502803,.60063229 +.58143141,1.4229301,1.2307308 +.72903925,.1958996,1.7745536 +.76491182,1.6517333,.84989124 +.51863894,.71903263,.27024628 +.92904339,.24858288,1.5091532 +.62371593,.67007846,.19675642 +1.8921706,.78794478,1.5048432 +1.2023837,1.7175331,.12882541 +1.3336665,.66584495,1.5233064 +.54402809,.96521884,1.0098553 +.40409922,.72894665,1.0651483 +.85492429,.52034475,1.623513 +.92953942,1.4621394,1.7645394 +1.4997323,.19602982,1.166385 +1.4015286,.99779176,.87332368 +.74690248,.29343417,.45580151 +.70843062,1.2730429,.5319026 +.33787195,1.8407728,1.8198604 +1.2695403,.79097611,.89856343 +.85621486,.87410163,1.2202585 +1.31333,.61352532,1.0787987 +.41667826,1.5744298,2.0369486 +1.1281897,1.4081831,.56422018 +.58263663,1.1211508,.19754563 +2.5605187,.00701612,.1003685 +.82899539,1.4249838,1.2625092 +.60127219,.68654913,.15642332 +1.2936353,.35686978,.48601785 +1.5752524,.7206398,2.2044305 +.78845437,.71791807,.66892487 +.78055351,.66415604,1.4036753 +.96971724,.83080172,.5558375 +.68687145,1.0539066,.39485909 +1.3592137,.5575199,.72486637 +1.2419162,.0184474,.47891492 +1.2121232,.98762144,.88562408 +.42281335,1.310898,.87126205 +.39508363,.46634919,1.1354365 +.52321533,.95846213,1.4798919 +.42551237,1.4184881,2.1612287 +.47097579,2.1639775,.58433731 +1.951521,.24714652,.48596177 +.78735924,.74867383,.48464651 +.96395941,.6842208,2.096698 +.93176606,1.5772658,.16213401 +1.7045778,.45844827,1.1495771 +.3061159,1.7262838,.53745235 +1.221738,.51482063,.48671965 +.59580177,2.4483995,.50936586 +.77980344,.76560273,.93120296 +.63182934,.51427897,.41901708 +2.2995508,.05253583,2.6158726 +.6053609,2.2977727,.20050072 +.55005491,.02913454,.35027128 +1.79225,.28637278,.31190607 +1.069638,1.9304529,.20558155 +.8815719,.69643336,.91262649 +.75954792,.67527384,1.4621693 +1.2514374,1.4348843,.21246584 +3.9367899,.87441362,.44756494 +.211719,.51032238,.08884389 +1.4101003,.41582612,1.2674645 +.72069152,.57833302,.18064456 +1.5367677,1.5573656,.41416848 +.47104765,.73974419,.94392313 +1.4987468,.39032121,.02298889 +1.2314538,.96760001,.59353817 +.86445623,1.2386796,.67043392 +.8599801,1.5143736,1.1452364 +.34724689,1.9737596,.15355313 +.38104488,.6976273,.41355846 +.69110839,1.4140497,1.2602666 +.89121673,.90959807,.14095713 +.61260529,.1940004,1.0143909 +.84237553,.00432488,1.0497946 +.53288641,.25323323,.48416447 +.83503756,1.198834,1.421741 +.8153351,1.215659,.43953008 +1.4027966,.50480973,1.037173 +.49776777,1.9586672,2.3312824 +.75247677,1.2519652,1.0887985 +.65242614,.92564179,.54619896 +1.1778643,.11870339,1.4574711 +1.2238977,.66361556,1.5064766 +.63087335,1.4078999,.25333668 +.63496022,1.8905412,1.0260102 +.67830435,.49617914,.54096746 +1.5466905,1.6615686,.31611176 +.99401237,.51995851,.8155686 +1.5337015,.69591597,.34136097 +.3224026,.57040352,1.1223569 +1.3578283,1.6203079,.22007578 +.73292803,1.4913522,.60616817 +1.1910825,1.2286367,.37003181 +.5712908,1.2771475,1.3811968 +.78870773,1.0176044,.14595107 +1.6438337,1.0269793,.5687319 +1.9164542,.63415096,1.4328159 +.57281675,1.1938387,.09316812 +1.1816731,1.4456642,.47364531 +1.2315577,.5335499,1.5713031 +1.8034864,.15363984,.09170845 +1.0383953,.31090193,1.1657006 +.85960605,.28156875,.16420803 +1.1352181,.04442058,1.0616103 +.57999415,.62070434,.37983587 +.75384267,.13660453,1.3750155 +.97692512,.47829137,.64062832 +.41275676,.83767437,.64581101 +1.7976612,.66501029,1.0458949 +.69362094,.19503799,.55741811 +.58934058,.06744331,.01496132 +1.0671868,.80631991,.12296536 +1.3038482,.37082556,1.0828354 +.64196212,.42371217,.23068004 +.51961642,2.1377702,.12581222 +.2039104,1.0475906,.82352728 +.51097697,.99244465,.21832784 +.79878317,1.5744447,.36966269 +.96019973,1.0122115,1.6448203 +1.1239147,.03436582,.93655556 +1.1037251,.22601704,.20456568 +.4584703,2.0970793,.66944989 +.68693739,1.8920726,1.3065799 +.52300283,.531875,.62559647 +1.2645829,.17004495,1.2809841 +.91975585,1.9609543,1.6753246 +.89731839,.61881731,.7447973 +.93672808,1.8883576,1.6317033 +.91536071,.25944436,.31890759 +1.619524,.16926847,1.2563647 +1.1387743,.16808367,.12821388 +1.9590183,1.5348865,.31848428 +.67516063,.57638978,.0527485 +.28457188,1.056732,.09248539 +1.7344659,.36570214,1.8481598 +2.4643173,.41280776,.90024422 +.57738,1.7363737,.4838897 +1.1960477,.77213093,1.2620033 +2.1458138,1.1850132,1.2210415 +.46212814,1.0562359,.57660371 +.6727371,.95882254,2.612541 +1.9221188,.22699867,.50624933 +1.7773594,1.3721233,.67383997 +1.2155257,1.1275755,.27572471 +.52806559,.000316,.12213649 +.58980614,.03428233,.60401444 +1.6687987,.46494053,.39905415 +.68612429,.60609065,1.9037429 +1.0580754,.18522415,.80205598 +.91124416,.57485174,1.2541113 +.60805752,1.1815131,1.1758583 +.56145314,1.0879822,.38172552 +.23389344,.23001418,.00743249 +1.2160819,.2854182,.25358099 +1.282807,.15621996,1.111578 +.98063419,.17289914,.52920468 +1.2479574,.99601502,.06460268 +.46900349,1.6203878,.16579688 +1.0507117,.19008939,.44795373 +.77115587,.96315605,1.1257284 +.56622327,.78068332,.61690625 +.79852902,1.2848047,.52191731 +.82604021,.39053369,.34492431 +.44466691,1.3899671,.69824707 +.6648594,1.5777018,.37945761 +.98752233,.23989463,1.4791496 +.72111971,.70569176,.3666662 +.77470779,.58946874,1.1569176 +.73921224,.28394744,.62128359 +1.0018712,.92042938,1.8216469 +.87711753,.63814745,1.041015 +.91001066,.3056013,1.0833135 +.59137442,.58909842,.24185951 +.62087802,.26261277,1.8071662 +1.2952932,.31862141,.87387264 +.81833817,.93585364,.40064798 +.49948275,.84035214,.35140615 +1.1613789,1.0084652,.57591528 +1.1356878,.72429475,.22833581 +.80581011,1.6597023,1.0940065 +.3126256,.20265627,.29684312 +1.0393393,.11205438,.58316987 +.73908487,.23548874,.9645012 +.62388679,.41749362,.26287695 +1.6478922,1.4113174,.38250312 +.64899414,.54166055,.3475209 +.81786044,.74014313,.01924885 +.71003028,.69110508,.65088755 +.25644642,.40824993,.75732869 +.46366418,2.1396611,.19124508 +1.0168374,.19363975,1.0307555 +.34105952,1.0276888,.22030641 +1.1252895,1.2179976,.56019493 +.396859,2.3266075,.64956023 +2.1070023,.05068393,.95541941 +.68858715,.26178763,.30014372 +1.4949011,.54168536,.63388591 +1.1515183,.36288487,.14213279 +.31997758,2.4041145,1.1080466 +.46278498,.53824394,.29177655 +.74901169,.23246888,.1966816 +.55654494,.53811448,.59687625 +.67269989,.41898086,.89646479 +.49561864,.75308858,1.259312 +.33073978,2.3105209,1.011736 +.7019585,.27847196,1.5378628 +.63131283,.3285222,.40851379 +.71856094,.84869086,1.5412943 +.55521274,2.0609061,.78908502 +.75973185,1.7350883,.07889182 +.58288818,1.0464571,.10851275 +.49226638,1.2397448,.65403544 +.86353737,.47915239,.31502651 +.33416234,.41900766,.63540615 +.71257588,.14874774,.17660843 +.45148613,1.5603327,1.5947532 +.67200077,2.1594598,1.1037974 +.55932196,2.2231633,.6949712 +.63131672,.9120876,.29154395 +.91172423,.58480306,.64189901 +.72929304,.46636076,.33991066 +1.3337019,.5310136,.83924332 +.56774041,.03426249,.09957781 +1.4741662,.04091742,.26971903 +.77604332,.91506086,.24996322 +.50601165,.62197838,1.1172312 +.29204815,2.6167276,.55330645 +.51830361,.10425449,.3872918 +1.1497427,.96630248,.21090619 +.78561333,1.3065424,1.2677326 +.80465138,.69199452,.64012454 +.68589844,.11545591,1.1480302 +1.4611733,1.77258,.12378346 +1.1757714,1.4114205,1.2173476 +1.4090959,.57392708,3.1390553 +1.0366758,1.5894321,.55406559 +1.015102,.04314143,.85752552 +.59850135,.95636657,.20249914 +1.5244646,.20438352,1.7571695 +1.1181625,.68214021,1.612448 +.39189316,2.2319968,1.1313526 +1.2981328,1.1741009,1.2211871 +.86393007,.22721213,.96094988 +.8595857,.28267266,1.2009944 +.63822406,.41215422,.34435866 +.82400922,.36914797,.15035265 +.56654041,1.4973275,.19139001 +.85446225,1.3026638,.45894496 +.82098717,.42047436,1.8030017 +.68534764,.36149766,.99234533 +.6485685,.37648226,.53494144 +1.0896674,.19382768,.42623811 +.76936945,.72496156,.80792751 +1.2312967,1.8614049,.23359686 +.56901264,.15802707,.37104734 +1.0946502,.58125277,.06467885 +.86074153,.15729104,.14713746 +1.5219042,.06688718,1.9860704 +.72426085,.57890629,1.0516613 +1.7945178,.52965239,.25597486 +.89677789,.94418441,.07405474 +.67465328,.41723573,1.1999351 +1.4804108,.21357871,2.1344939 +1.8028154,.09195302,.43733112 +.36100122,.59048921,.73435344 +.82008147,1.7071543,1.2033015 +.70228,1.6206088,.24366695 +1.0166692,1.6956841,2.793467 +.34278213,.44344656,.23871417 +.41477053,1.7584001,.17257406 +2.1281769,1.5772045,.77956224 +.88255689,1.7336467,1.9575493 +1.2607291,.49540788,1.385409 +.86558384,.42841245,1.3408205 +.55296179,.63127563,.12445594 +.34405573,1.6372843,.60125994 +.84489155,.33608641,1.2161689 +.81637028,.7352798,1.3798525 +.79007822,1.4873062,1.0025675 +.39405873,.62059124,.40481461 +.96203334,.17829738,.31774992 +.61895136,1.7081805,.31776789 +.99659835,.30829482,.23006173 +.48590586,.98163109,.52344659 +1.2156605,.29352715,.05571565 +1.1987855,.30266128,.49983157 +.89090707,2.6710425,1.2589849 +.78986038,1.2247027,3.501305 +.50266707,1.0095153,1.2128329 +1.0351276,.11484139,.55694663 +.6579876,1.3798303,.63850298 +.66847618,1.6144452,.01182304 +.9569592,.88334014,2.2183717 +.57932266,.22673638,1.2688294 +1.1032976,.77167817,.0377215 +.78851948,2.0819616,.9336587 +.66885699,.51503731,.80367533 +.97604515,.80790899,2.5563828 +1.0305669,.63897502,.64383228 +1.1163488,.32623155,1.2061795 +1.2545465,.12641611,.13407417 +.67239666,.99069911,1.63808 +1.8848284,.18271378,1.0930993 +.74374297,1.901273,.36764489 +.34411696,1.384496,.75665558 +.76981803,1.4207342,.72802979 +1.7431321,.61230195,.16054822 +.9712808,1.3522269,.38288187 +1.0361019,.12028376,1.3241499 +.59804742,.38951147,1.0317362 +.64314593,.84200703,1.1373098 +.60393532,.66442432,.32023697 +1.1107835,.27272552,.57607334 +1.3059166,.94117079,.62711496 +.87522741,.6380991,1.4884052 +.79702617,.27996263,.53241618 +.24332283,1.1691115,.39436121 +1.7258052,.25768964,.35121562 +1.1131605,.07119268,.59297037 +1.1305583,.38798438,.22781775 +1.757869,.27019914,.13448807 +1.9043441,.17986089,1.3062067 +.92475209,1.3352544,1.5189181 +1.132885,2.9406618,.50000428 +.74400038,.69752724,.39040557 +2.0545792,.35014688,.66169693 +.60004367,.23091323,.56919104 +.43610343,.51074048,.70615506 +.50239867,.13374199,1.3024927 +.90777575,1.0774005,.13516922 +.90609611,1.1062866,.96273943 +.6613964,1.5843048,.18156739 +.52982715,.07460898,.12655671 +.42121906,1.8499202,.45942425 +.43475867,.84722726,.74116861 +2.0661627,1.9389317,.51531494 +.55067604,.3163674,.32190663 +.63436371,.75343708,1.3924828 +.25661292,1.4527872,.50472634 +1.0761924,.60876924,2.5118682 +1.6077498,.64933841,.19769397 +.72656381,1.6430675,.91830437 +.43786444,.42745187,1.6104958 +.75815068,1.7144402,.19679024 +1.0417276,.43823522,.24695154 +.50312256,1.1246282,.55989382 +.48535759,.17079719,1.393463 +.84624127,.28591281,.15284464 +.91980985,.4698842,.50887824 +1.3738475,.77396408,.39491769 +.49152389,.80948962,.12487485 +.85942225,.03171735,1.1700357 +1.1087333,.01437154,.84575348 +1.0612518,.81220461,2.5381512 +1.1587764,1.2159486,.49182024 +1.0583854,.31395397,1.4089129 +1.7364896,.8402639,.57671546 +.85381549,1.4582301,.23065255 +.85239726,.64438862,.11942231 +.69163489,1.8693019,1.4018679 +.42813657,.84800571,.51435586 +.64529592,.7556119,.22754097 +.7724272,.75750159,.79880536 +1.3159422,.78935762,.22069638 +1.4247487,1.2147832,2.0618801 +.37255597,2.6953806,.94500464 +1.0269804,.11196792,.57454407 +1.0685575,.62002596,1.8239117 +.6963247,1.0266518,.04294118 +.75877051,.87932256,.57920017 +.47016339,1.3444634,.02154567 +1.0433367,.36913636,2.1783587 +.93909831,.47939786,.01880368 +1.2731438,.93711982,1.0860763 +.65853693,.67111141,.48477038 +.43213513,1.3031011,1.0459331 +1.0554395,.49083318,1.2190599 +.42374179,.18321522,.25692415 +1.4178222,.23082363,.37549655 +1.6718964,.22889499,.58343343 +1.0351964,1.0598722,.61837736 +.55189041,1.1462839,1.7056125 +.7897839,1.3631954,.60391583 +1.3315034,.08434729,.62455121 +.96355984,1.1129326,.52933334 +.84733348,.22092674,.7030581 +3.940675,.24841353,.726574 +.69300777,.28976262,2.0420919 +.6920546,.10655147,1.1408026 +.54973821,1.4149727,.66393296 +.96969023,1.0743945,2.5424236 +.77415025,.40885485,2.1721024 +1.0002074,.25374066,.92153167 +1.1242167,.14189999,.94996864 +.68030745,.58753817,.99322082 +1.0702377,1.1563455,1.4898189 +.52356304,.24216915,.32007143 +.73291627,.60505904,.98739711 +.9845341,.68362292,1.4986217 +.43315851,1.5271104,.14243872 +.59797265,1.5183168,2.0238399 +.6080639,.64967146,.01644356 +.89114013,.43644748,.63897752 +.49511832,.50561625,1.1586803 +.40824051,1.043562,.09962417 +.91151613,.32614307,.03643809 +.59927797,.02547064,.09286301 +1.1905214,.3478192,.08168206 +.70213932,.38254805,.2340721 +.78319793,.33607489,.62400611 +1.3526115,.37862237,.2495702 +1.0009587,.40600261,1.7001796 +.75509664,1.138346,.38649631 +.43556963,1.0733533,.11406692 +2.2026947,.12033764,.64663688 +.90523248,.10122571,.44406381 +.52723443,.98605861,.51934542 +.18470539,2.8728683,.28148394 +.69968101,1.1939552,1.4020706 +.78619277,.26942372,1.4109062 +1.0189009,1.7372565,.8086125 +.72446224,.30859276,.18259258 +.81331245,.28955094,.79468135 +.39150266,1.7790749,.23353346 +1.5407503,.62491416,.57134139 +.67587033,.67045816,.3163746 +.97174581,.27555917,1.056593 +.65580357,.06983326,.4298223 +.57982163,.54198504,.8553047 +1.1558443,.14336275,1.489307 +.33889704,.03058265,.46623352 +.85031853,.9872702,.34394217 +.31013908,1.2831545,1.0807464 +1.0549256,.34466386,.1732432 +.70824458,.21522959,1.4939575 +1.173071,.0718568,1.4154588 +1.6650833,1.0715202,1.1836686 +.38216205,.53657135,.58442076 +.39455108,.23838319,1.4057375 +1.4062246,.33942849,1.4297713 +1.8123666,.53396539,1.9106627 +.97388142,1.027487,.0479915 +1.0563731,.27083187,.29648318 +1.1183947,.23361831,.26045733 +.33850559,.49775532,.02157393 +.65375638,1.5500035,.5067051 +.4532881,.51695978,.05032442 +.65994993,.74943241,.74461359 +.50206157,.92473071,.45773041 +1.0992675,.8579895,.56130789 +.64873058,.15779212,.21638336 +.98093833,1.0691062,1.3059204 +.41381208,.87247229,2.2379534 +.49036869,.45271404,.04923774 +1.1937057,.11658574,1.5967387 +.49391258,1.1819823,.24614012 +1.0480673,.24215239,1.9802068 +1.2620462,1.0418425,1.3795234 +.4148692,.41317357,.4062949 +.43645647,1.4744755,.24025016 +1.0627619,.27186952,2.2325796 +.85428549,.8724717,1.247116 +1.0360025,.3651035,.43781115 +2.48411,.04395127,1.4248165 +1.0340586,.62808452,.86707355 +1.2950018,.91610843,.66176703 +.92985532,.66995887,.10709273 +.66379246,.66243209,1.2738145 +.74876822,1.1398032,.23537077 +.53289666,.65316598,.64426175 +.51212349,1.1114388,1.1330826 +1.185999,.57988244,.07865084 +1.2988064,.21247836,.50906183 +1.510594,.09001699,1.9754561 +1.3768017,.54535449,.06425628 +.60867865,.44011231,.084356 +1.0406038,1.4994762,1.2848567 +.87264521,.96196352,.97943995 +.54420552,.98804717,.60889367 +.71503159,.29455396,.58213231 +.68245392,.24899576,1.4289536 +.66356122,1.2653913,.214325 +.81342006,.66753884,1.6393798 +.34079047,.45414744,.97958635 +1.3825962,.64638831,1.4777583 +.57186748,1.6809524,.12746621 +1.0297379,.45650296,2.0153209 +.88635876,.50243531,.06193619 +.79898667,1.4248438,.51664756 +2.2606933,.86456828,.16985159 +.86771085,.81611068,1.024116 +.96776214,1.1716037,1.2033389 +.34235861,.34924025,.4580597 +1.0893704,.89905334,1.0972601 +1.562277,.86557172,1.1831662 +.54635025,.87237435,.41288405 +.99586272,.08026135,.14276216 +1.5350562,.72725794,1.2088492 +.74088067,.55936448,.04749011 +.87838218,.39606829,.2117662 +.90994214,1.0552076,1.1265224 +.7403412,1.9041082,1.1939679 +1.9083397,.88076789,.12308544 +.90729163,.71580925,2.1265539 +1.4764838,1.1312923,1.1481043 +1.1683456,.28117678,.21125114 +.43646972,1.4583402,.75153978 +.8804897,.20669457,1.1154662 +1.7518874,.4569365,2.1406372 +1.8743872,.10288655,1.1792828 +1.3714746,.37710106,1.5418489 +.33315311,1.5318169,.56891202 +.63409892,.27480967,.18250933 +.95586228,.00514129,.4667862 +.30980413,.26382347,.86644758 +.79970223,1.8377254,1.5045908 +.60531972,.71247787,1.1541624 +.84741929,.3622091,.25409968 +.8625321,.05932419,1.4589674 +.80138276,1.017384,.56222223 +.85721134,.82007641,.22916933 +.55395198,.10404866,.08300534 +2.0120725,.28071808,.65155456 +.89662933,1.4308532,.0724797 +.41513673,.38867425,2.5855743 +1.7020886,.4387407,.92582657 +.94483663,.56853085,2.0272631 +.61759117,.02134972,.03757381 +.94692828,1.9333427,.40752742 +.35168483,.49770131,.87343242 +.62278896,.14497656,.51868906 +1.2065213,.51945934,1.0138995 +.67673716,.69329952,.57925913 +1.1741703,2.2086748,.02427143 +.44422409,.24121781,.36796916 +.97565192,1.0053527,.86830374 +.38622285,1.3576382,.64415287 +1.88205,.80159563,.63944375 +1.3290193,.42685322,.99463868 +1.4589581,1.3851508,.18694754 +1.1404774,.05216458,.71510979 +1.4052422,.23614331,.56251517 +.59191566,.75537731,.25221832 +.44058791,.58404588,.46781494 +1.5770541,.3661282,.9858527 +3.019581,.03805103,1.7810972 +1.8082837,1.6073367,.68974392 +1.6336849,.12374711,.35229115 +.83974506,1.0236013,.49512609 +1.7181738,.18183248,1.1097233 +1.0017041,.68499786,.21861989 +.25115728,2.4335216,.47390555 +1.0666566,.0566445,.67864243 +.89039911,1.7163137,.75107722 +1.460486,.99276654,1.0892385 +.63888838,1.8339892,.95182361 +.37302098,1.214726,.39531614 +.47809391,.7874591,1.3054122 +.94671994,.16539615,1.2595609 +.55498117,.42897517,1.7470177 +.24396891,1.5083189,.38767952 +.63187592,1.1962759,.06448172 +.48159775,.82037429,.83155041 +.45014447,.02177137,1.0068542 +.76878987,.37549366,1.9280476 +.70087264,.02227787,.03631717 +.31381302,2.0645538,.20502153 +1.9248354,.65392514,.53226104 +.6881115,1.0725234,1.2786943 +3.1200615,.29606019,.77812835 +.46698765,1.0113774,1.1313157 +2.6516904,1.5099516,.3564411 +.97390524,.56964613,.45182667 +.56738534,.8815288,1.699658 +.8488667,.78679541,1.4442644 +1.799683,.77346602,.69657275 +.33832706,1.058012,.75750675 +.64170919,.74123796,.15694376 +1.2795988,.40149831,.00517179 +.56672051,.10864321,.31177028 +1.6466173,.72734782,.90792635 +.58345672,1.1429989,.49628259 +.67702171,.66056351,.68925563 +.77590619,1.7640325,1.5870529 +.49985276,.91813056,.13321913 +.69775211,.64495439,.62493273 +1.9241443,.01568132,1.4607253 +1.0906817,.56698658,.49405162 +1.0502282,.946906,.23559565 +1.4850973,.34077563,3.1291022 +1.4261142,1.1511755,1.452489 +2.96691,.34535685,1.9332867 +.74404663,.49340318,.34140538 +1.0639031,.73400279,1.8350588 +.91553317,.07581686,.12656214 +.66289642,.25375186,.01452841 +.69253039,1.2543211,1.9897621 +1.2495756,1.2339575,2.0478066 +.9351502,.70253317,.02757635 +.76195907,.56402244,.23488715 +1.7718019,.70668066,1.0002526 +1.1107158,.99233273,1.0724085 +.71396182,.01894938,.90854587 +.80084454,.19416519,.8602728 +.66486974,.27990294,.26203606 +.85047821,.27260296,.60177832 +1.5625569,.02449836,.0303236 +.7859457,.01452969,1.0440388 +.57173256,.29318656,.62718505 +1.1521025,1.2430706,2.0013361 +.55639145,.50487931,.86609645 +.51184392,.6953489,.00282614 +.91548725,.39900466,.68066696 +.79614708,.4320659,.79348151 +.4278016,.03027697,.50914186 +1.4944862,.10801029,.3465578 +1.1781214,.5153491,1.4359362 +2.8895423,.11570312,1.9491397 +1.0590323,.79143501,.85546376 +1.1102706,.11837153,.39962253 +.84443305,.87503247,1.7036282 +.81736564,2.7576653,.75144415 +1.0501459,.53277317,.10284776 +.51012034,.93628723,2.2481425 +.88611677,.24729606,.27880941 +.79345739,.57525973,.22838766 +.70113168,.10601297,.38170031 +.66621219,.04930181,.1661406 +.35506637,.11480878,.48224301 +1.1429957,.33854629,.65539623 +.59596525,.65288678,.41667909 +.68147702,.60306468,.18956899 +.9486359,.17805711,.72475902 +.55633968,1.2023416,.18561711 +.47628177,1.3682428,.6178712 +.87221007,.75508717,.3206406 +.51290749,3.1057914,.80642807 +.68208955,.16181505,.1412738 +1.3587845,.12349037,.72576391 +.36141938,.25251908,.31715351 +1.4600535,.3956411,2.2285541 +.68376583,.55470785,.91238071 +.53347843,2.1886144,1.6966378 +.89706297,.15653994,.44182699 +1.0398134,.64055125,2.0086989 +1.153312,.81406667,1.2041368 +.42810495,1.6192717,.28428026 +.39183925,1.3802749,.31925248 +.84095674,.19403792,.11244493 +2.251663,.36623711,.18575504 +1.6299928,.70383443,.70427876 +.87552984,.91364986,.95656883 +2.1508695,.91916825,.45919986 +.78489611,.3921209,.13922965 +.3874989,1.0929243,.56322097 +.68150451,.23882246,1.2132519 +.83185748,1.4544751,.95800912 +1.6969621,.24589139,1.7125191 +1.1411599,.58308771,.94373852 +1.4320368,.58328503,.96694398 +1.0863434,.8661011,1.7890871 +.59307,1.2418168,.05748578 +1.0789506,1.1699554,.58003401 +1.1072291,.99087108,.59205864 +.46702203,.91769113,1.1348047 +1.1097075,.26248082,.72424073 +.80956456,.0130495,.55368845 +.92782112,.64512335,.69470881 +1.2871861,.03220946,.3800861 +.67653306,2.2962739,.74688435 +.59414578,1.1778529,.60754533 +.45712507,.03330319,.21016775 +.72621798,1.570215,1.5353952 +1.0379241,1.2050114,.76841642 +.52087793,1.4499271,.84223722 +.71955841,.1255328,1.1178777 +.47242087,1.1063922,.13353176 +1.0658743,.10059599,1.3584531 +1.3368476,1.0181006,.26920709 +.57559841,2.6739364,.99057007 +.58337281,.03243486,.37826035 +1.1506908,1.1916358,.20606847 +.49409404,.449683,.67799309 +.6136202,.839041,1.0902051 +1.2727863,.57028244,.06924428 +.62410135,.44042105,.50205483 +.22897115,1.8541277,.90040699 +1.401757,1.1477268,.89193296 +.78510326,1.0087833,.69321355 +1.0620893,1.0024785,2.2179094 +.50645154,.08473104,.05647374 +1.8320239,.72418657,.33551665 +1.2810006,1.16567,.32449861 +.61014783,.52446586,.71034789 +.93254399,.18602293,.62575936 +1.0693456,.69343297,1.5853064 +.71432352,.53906837,.72819308 +.6706632,.29789517,1.1970036 +.62847094,.90050505,.99309925 +.70934402,.18892494,1.4462592 +.81812061,.18455057,.519312 +1.005021,.83245412,.8554338 +1.0056875,.38878182,1.1834583 +.7594141,.20644128,.72751989 +.66457246,1.6048007,2.5901946 +1.2660153,1.3092308,.05251865 +1.3457554,.05532735,1.1949445 +.64379784,.39662169,.19339788 +.97966006,.06155303,.84177294 +1.617784,.32318207,1.8333137 +1.6749471,.82064488,.65454126 +.99515336,1.6525206,.28095357 +.9261027,.83703967,.83885302 +1.026564,.64366167,1.0325767 +.47712479,1.4499388,2.4692985 +.9942599,.841638,.18892337 +.69201677,.8895709,.49063753 +1.8017075,.26344398,.44026095 +1.4395951,.06341426,.10029099 +1.3185121,1.3173895,.6207001 +1.1525105,.62810192,.68995427 +.61055146,.59163512,.08449193 +.67565234,1.3117186,.51539814 +.69921981,.88198229,.53464402 +.84877036,.13392621,1.0806854 +1.3285509,2.1587912,.16813625 +.92286665,.7056214,.84679901 +.68762839,.16840906,.57989995 +.80633433,.08531782,1.8955886 +.51215188,.02024307,.65791398 +.40475573,.38893344,2.102553 +1.4520193,.72277058,.85795786 +.43240979,1.4832585,.37270017 +.67156793,.19177481,.92909045 +.4797921,.44736865,.20048438 +.61266768,.77526265,.0687286 +.54899286,1.0804318,.28177747 +.56952843,.44285401,1.3139777 +.79427033,1.0867075,.80560885 +1.2146729,.9464751,.48026723 +.55830329,1.330316,.37704251 +.81363295,.50309575,1.255956 +1.0661378,.41878626,.63758831 +1.2346528,.34760665,1.5874509 +.86738657,.50737731,1.6252463 +.28514835,.30196093,.14630119 +.67915231,.31403983,.46363997 +1.121502,1.168451,.84334642 +.98762509,.15884537,.11355992 +.2844775,2.2600445,.74525218 +.51963302,.97373806,.99564316 +.78107681,1.1444521,1.4184275 +1.233763,.27918296,2.1884102 +.40289313,.93896145,1.7759209 +.70456432,.77799995,.69584397 +1.047631,1.2313403,.69616976 +1.0701536,.89219988,.88201572 +.27659365,.1311116,.21316798 +.52962686,2.5812186,.76379508 +.93842357,.0407834,.0194785 +.38154823,1.1924804,.39512425 +1.346536,.7740664,.33672967 +1.6663368,.09164917,.78759862 +.87192788,.29674765,.60118426 +.64547601,.91809741,.12849142 +.85895064,1.3065131,.75687173 +.43735584,.36927236,1.2990257 +.66324899,1.0807699,.27596367 +.91069525,.83432939,.51516132 +1.4737288,1.0131467,.38810798 +.55137658,.58509003,.79433705 +.82993107,.06012819,.04305357 +1.3866163,.11019101,1.7766841 +.9410409,.44821078,.38372443 +.66875649,2.3290413,.31575975 +.66644882,.62799218,1.3176896 +.54195368,1.0599333,.69811137 +.54670934,1.0609131,.6750673 +.74329295,.29727109,.01235352 +1.3794872,.49573702,.62512774 +.76974707,.72022463,1.0939266 +.95312463,.66340815,.27972558 +.49349046,.38239252,.27981443 +1.7242412,.0885923,.64184912 +.95967327,1.3170984,.2975991 +.6710051,.3893688,.33187144 +1.0446518,.16690714,.17035215 +.58610473,.04794899,.5889363 +1.7485654,.24325034,.09137509 +2.5035992,.28285846,.31086546 +.65651235,.89105893,.88538891 +1.5015261,.37265528,.58139381 +2.6596525,.09584778,1.2675128 +1.1351941,1.1504507,.9711201 +.5953943,.42743399,.58837138 +.97627198,.981637,.18123341 +1.0801103,.6502684,.32606116 +.69886747,.73387113,1.6625625 +1.119307,.6202463,.88620059 +.95209791,1.097869,.61916172 +1.326846,.11573222,.76836622 +.47301199,1.2241585,1.4318559 +.20725101,.70558766,.04795302 +.49991749,.51359978,.48893182 +.83075589,.34630015,1.381004 +.77784311,2.0259211,1.4635867 +.8645445,1.4403623,3.3230674 +1.3941999,2.0284267,.81029561 +.51418028,1.349582,1.2821641 +.52644688,.78793451,1.6918441 +.67930155,.11140253,.06121688 +.49164362,1.2658532,1.5883189 +1.6357374,2.4018959,.74534525 +1.6522379,.36654153,1.5248106 +.54574783,.12111528,.78021917 +.51902508,.55120143,.23885036 +.93649464,.35201221,.01930676 +.86703004,1.4858655,2.1462974 +.9816584,.14575397,.29442709 +.75915898,.76809429,1.0790037 +.60758941,.47803261,1.5270238 +.65955049,.22850934,1.192058 +.96010719,.7674266,.92860803 +1.254777,.16424118,.03606246 +1.1278016,.26951594,.1452045 +1.2275157,.57844863,2.5369563 +1.2674928,1.776059,.12953543 +.99862338,.82221273,.40136182 +.4817809,.68917331,1.6135971 +.63102085,.36878425,.1044793 +1.7740495,.81425756,.52192261 +.67691771,2.0470289,.14224322 +.72765699,.04909007,.15754217 +1.5054283,1.247955,1.3984543 +.7686928,.45007594,.3910942 +.53564851,.16747011,.96784306 +.93839653,.60394929,.27223991 +.78722066,.3870393,.7784209 +.98153129,.54251053,.02624966 +1.833833,1.2817697,.05254279 +1.206608,.08070588,1.3147384 +1.0094874,1.2430162,.44071409 +1.4346378,.01499386,.77113373 +.86027895,.12560267,1.9549182 +1.1737461,.51411438,1.1486874 +.78109593,1.0850979,.02347572 +1.2673948,1.3173969,.49226067 +1.2816138,.14149219,.50359769 +.96417713,.28379952,.21753657 +.90905032,1.6995432,1.3818603 +.92989993,.21934444,.37731236 +.91592562,.1344235,.24393754 +.63998747,.05403126,.38021171 +.67568433,.38279187,.57307427 +.63636644,2.0441057,.15282332 +.75816491,1.4493777,3.1708012 +.77516265,.42504958,.24830077 +1.0937104,1.3402887,.85898808 +.43181643,.63169549,.24056601 +1.2284368,.96432727,.23804939 +.86020705,.01182862,.54611758 +.52666641,.56275415,1.4507065 +.57229733,.81162797,.44473971 +.39488286,1.6866627,.87448532 +.54800575,1.7420321,.095878 +.98466975,.89071179,1.1891824 +1.0514907,.1941208,.50311706 +.9751235,1.6895938,.60104537 +.59074672,.01904624,.13028166 +1.5072659,.04484019,.62736337 +1.4979047,.01737793,.14782777 +.82775196,.51707868,2.5563715 +.57697112,1.3352475,2.9826965 +1.0396428,.07962736,.31370441 +.73858482,.65191809,1.0379236 +1.1626701,.06398846,.72497413 +.6765998,1.8630852,.94376744 +.45176699,1.3901287,.73664411 +.60528166,1.8385418,.06862471 +.63952526,.85153092,1.3308163 +.87641221,2.4786734,.46111242 +1.8997157,.6129336,1.7267733 +1.5196682,.24553946,1.0021827 +1.2149788,.29477042,1.0928937 +.77413601,.94666694,1.3209641 +.94011971,.93077615,.14562404 +.55704743,2.0915395,.38323946 +1.5827311,.10740674,.72677264 +.42370614,.80270032,.95904213 +1.0103052,.36509648,.39367362 +1.1632638,1.3057966,.50632072 +.451898,.51286429,.31322973 +.85299274,1.020104,.03482744 +1.0992449,.1627845,1.4902665 +.32880676,.36884508,.33902852 +2.0875344,.09664018,.36848859 +.9395099,.23530726,.71416894 +.29229947,1.9871317,.5264436 +1.7336423,1.6968325,2.0535234 +.52277771,.56454053,.0952771 +.98706791,2.8553628,.61365391 +1.6304904,.50041887,1.5864856 +.84967156,.16891236,1.9593484 +.99372657,1.5126688,.57363877 +1.0401976,1.4525276,.87370866 +.80142552,.2778611,.46699211 +.66463112,1.2681401,.81098292 +1.939546,.17022882,.12638642 +1.8014195,.71294829,.17838154 +2.0700043,.86435291,1.5486931 +1.4976843,.93706147,.79677159 +.34863033,.79568339,.02046246 +.64688442,1.001862,1.1825142 +1.2971141,.37336064,.58855048 +1.7362405,.25079065,1.7587134 +1.2782014,.15343408,.64194246 +.20366073,2.357963,1.2702181 +1.5125412,.74793391,.05741217 +1.043366,.85905772,.51484175 +1.605326,.06899926,.33885859 +1.4155493,.29158637,.48777994 +.5171976,1.122479,.51679795 +1.311225,.53267138,2.4061487 +.93085756,.35590866,.98746114 +1.2801738,.58257769,.5549738 +1.6037345,.03260327,1.1566192 +.63617586,1.4704876,.18703518 +.85239137,.6191843,.07900991 +.88658793,.38554049,1.4388718 +.57472141,1.1399135,.07637849 +.80074693,.18635376,.96812432 +.81597411,.19392575,2.9451462 +.72420354,.11061614,1.1099079 +2.0475078,.88147905,1.6073296 +.55360483,1.293039,1.0583899 +.75455297,.71746634,.3990303 +.56531511,1.5341852,1.4746819 +.36124371,.69396459,.932751 +.80863678,1.4310093,2.2393249 +.59187381,1.7733301,2.2544337 +.71437597,.26479398,.23280392 +.81279426,.15736711,1.6407589 +.53530051,.95933763,.37468825 +.5439668,.11596184,.11462143 +.53768639,.19066791,1.0171537 +.45213685,.37675997,.11063997 +.71283702,.74218079,.2642277 +.73121983,.70981203,1.9277331 +.81638203,1.611354,.35205386 +.56991342,.06997971,1.1394352 +.40806193,.72137444,.34230205 +.56094157,.90824124,.71230031 +1.2181022,.06035427,.78300536 +1.4489293,.39965953,.09131111 +.72828615,.94674651,2.0400371 +.94267786,.11993989,.57343349 +.50593898,2.1095382,1.4141209 +.63003569,1.0499789,.53698829 +.55046242,.48798948,.37308674 +1.4204737,.59001436,.09817123 +.82730183,1.1870435,.56755415 +.85530137,.60969521,1.0760261 +.84438643,.22475264,.93724506 +.41532525,1.2257903,1.1211192 +.86972575,.48347038,.15899592 +.54860156,.222674,1.5974229 +.4810192,.37018359,.16227092 +.34252359,.32281615,1.5278378 +.90327722,.28490072,1.9390781 +.88460503,1.2913569,1.5495946 +1.1953281,.71437367,.13567783 +.76881838,1.6011127,.51559625 +1.1224449,.88563796,.28283116 +.89682876,1.3938541,1.3791295 +.80908329,1.7950366,.31407035 +.36499102,1.4750795,.45935485 +1.8323435,1.2360366,.88368404 +1.2230384,.89162616,1.8011619 +.66499727,.44318586,.24845198 +1.0737316,.16150273,1.4469025 +.36819143,1.1802487,.27459708 +.57691221,.77125664,.23491927 +.25560418,.55527698,.20166462 +.50559777,.93626347,1.1305947 +.96445355,.37967623,.84078046 +1.2315691,1.4174227,.92339482 +.88823527,1.0748601,.51250661 +1.2067018,.2996554,1.4117199 +.23854504,1.1266148,.64965431 +.41712721,1.3126727,.4173789 +.77927457,.71994599,.0716453 +.47346046,.30881223,1.184772 +1.2250218,.00942896,1.2255519 +.35905645,.52669198,.11584667 +.81511576,.20594122,.7202078 +.70035536,.60806842,1.6890373 +.52315175,.81504518,.69298588 +.65633916,.15378359,.32085573 +2.1442003,1.0609722,.01162541 +2.6115164,.10398171,.17160532 +.46815028,.97494639,.06822844 +.29236411,2.1538425,.83310787 +.90090617,1.0080093,.62978909 +.87405432,.83043438,.06685859 +2.3767181,.22482682,.22198368 +.67559221,.04502803,.94081961 +1.3076304,.29174659,.0427403 +.82543831,.97347863,.6029332 +1.2587685,.16952785,1.8045825 +.56543499,.73732562,.124808 +1.3150182,1.3758958,1.8768251 +.37713225,1.0416995,1.2239562 +.94055961,1.5046051,2.1940843 +.47877632,.58076166,1.2397316 +.98282644,.93152582,.61728411 +.52155719,.50488671,.85720034 +.72048657,.03505271,.07305668 +.86353986,.88712305,.60165053 +.70198698,.48807604,.68999129 +2.0418997,1.7005425,.61176591 +1.2633185,1.4880481,.79926141 +.96601543,.26668802,.56820727 +.6318795,.95620824,.06221201 +.84831071,.41736227,1.3603065 +.81498812,.39821352,.39607983 +.59795308,.80316265,.07942405 +1.1388548,.90574881,1.41005 +.42160839,.88188776,1.5622447 +.54135937,1.9506335,.73971192 +1.4697658,1.1441417,1.1220197 +.75589795,.61759244,.69311577 +.63480294,.72771076,.10317989 +.4231925,.41116028,.52426748 +.48638534,.25883364,.99415041 +.64285659,.61746025,1.0810822 +.38225453,1.2559892,.53378181 +1.183552,.32218497,1.587788 +1.0305681,.58288459,.81568984 +.97178814,1.2855251,.33564625 +.61155038,1.1230311,.1068652 +.47171059,.50140041,1.3083748 +1.0937949,.99159891,.20443538 +2.0353176,.26566557,.85360781 +.78343442,1.5508049,.91402168 +.39073216,1.4221852,1.1654479 +1.1141763,.68285942,1.5964016 +.61752919,.41077738,.33763532 +1.2630462,.19814705,.78578798 +1.5027477,.47139431,2.8829039 +.69946434,.64034014,.10414926 +.43113547,3.0138248,1.1045052 +1.098498,1.2482997,.60120047 +.63154873,.68483565,.5963534 +.82529657,1.1135614,.52890737 +.4061237,.71513257,1.863046 +.85629529,1.3222367,.96004761 +1.4872717,.94525288,.37534852 +.73895147,.09313978,1.6564224 +1.0195362,.27651072,1.4609707 +.9769997,.89258753,.38266965 +.76189249,1.8946091,.31843536 +.70764155,.13558051,1.0933236 +.54447565,.7766234,1.3061492 +.86198923,1.9700784,1.0708796 +.29645262,2.1548841,1.0465686 +.59782677,1.6998404,1.2070461 +.71290036,2.6302827,.50540323 +.91669996,1.0824076,.84870973 +.59700728,.41539694,.96499639 +.46190324,.75967654,.3913 +1.006316,2.0754647,.14751431 +1.4612138,2.6331853,.11065573 +.49854442,.1127357,.99175779 +3.0167568,.91253699,1.9075327 +.55726618,.43414668,.0863152 +.41493853,2.1220888,.25165274 +1.7707266,.10901555,1.6988668 +.6156771,.74372179,.51784721 +.55431951,2.1176794,2.7121474 +1.5813295,.49999822,1.3436113 +.80310993,.38121551,.60052995 +.56923325,.14989413,.23390132 +.50922205,.68362172,.35826792 +.665837,1.3401767,1.3650046 +2.5730025,.63604239,.84999339 +.81479698,1.1287579,.47767265 +.78935017,.83206822,1.3779042 +.37688088,.21448146,.59888295 +.65841903,.49111509,.11343839 +.97475823,.67327848,1.0733182 +1.1797752,.36266183,.5591126 +.92587899,1.4834513,.46738492 +.43270699,1.384005,1.4334797 +.96762083,.69756837,.56430691 +.36574113,.4946613,.56891161 +.95622708,.68518005,.11382054 +.89767894,.73768155,.88263345 +1.2788914,.01063103,.27091361 +1.0166404,.71825719,.47308104 +.51144024,.25673023,.76027689 +1.2307996,1.2509029,.79985491 +1.1050616,.4762846,.20541868 +1.2752788,.25945229,.37844138 +1.4479981,.03665398,.17959624 +.43687097,1.3682436,.18817909 +.27619777,2.5243843,.85475943 +1.662457,.55497429,1.664706 +1.4938538,1.1570484,.41329649 +.43019939,1.4206788,.04972949 +.57302521,1.641452,.12109994 +.41294735,.61488346,.05044906 +.5329417,.81275737,.18992186 +.66122766,1.9746791,.27217761 +.39208773,.84052529,.15032814 +.64214088,.16974587,.0600876 +.61485747,.99588847,1.4415797 +1.7456347,.96197618,1.8703536 +.67246589,.83020358,.34980187 +.82221671,.92876976,1.5233035 +1.7570979,.78013067,.36520649 +1.469584,.16022513,1.1603135 +.66755953,2.392712,.44078313 +2.2104815,.21151214,1.2328962 +.57543968,.0930113,1.0996451 +.63403864,.37856446,.16171112 +.69386321,1.7330387,.01645102 +.8261594,.02396206,.62103895 +.857365,.62355268,.67784104 +.58749187,.89532009,.30836608 +.64052837,.92380426,.04501025 +.64054671,.36147621,1.2377982 +.69648316,.58033446,1.100883 +.65030218,.13875435,1.391054 +1.2340083,.22338007,.240732 +1.1475827,.67172312,.174914 +1.1187266,1.0121587,.99183281 +.50464272,.0843854,1.7313876 +.64615021,.9097746,.32142837 +.35447515,.30460406,.35894592 +.70464903,.74735041,.64408744 +1.1172798,.29033229,1.6362564 +1.2418496,2.3228354,1.3307313 +.78608413,.42329703,1.2893567 +.67360251,1.1590319,.66231336 +.64839469,.25893702,.62638448 +3.122648,.11138323,1.6592529 +.95810089,.05454999,.80372072 +1.7266722,.03904166,.13493363 +.85048302,.10744026,.9984767 +1.1267361,.43984617,.07588138 +.90890439,.31500437,.13868595 +1.7048394,.89117428,.89371174 +1.8362976,1.3844256,1.4545847 +.48924738,1.3571265,.97130374 +.81660403,.68890361,.63573828 +.92365445,.74881691,1.4100886 +1.0578278,.25622631,1.3197149 +.52394897,.09072225,.1796846 +.34616118,.87600675,.02528098 +.65981301,1.6623766,.32393082 +.61743849,1.8348371,.18395765 +.91162794,.1556583,.36773629 +.6666597,2.3053863,.22819923 +3.1002179,.30974632,1.194021 +.72426489,.66965024,.73509974 +.86772844,.77432167,1.1864058 +1.1039515,.902255,.35055296 +.61628493,.38508968,.5590721 +.45597154,.19350812,.25623184 +1.6771984,1.5919691,1.1397933 +.73714513,.96705256,.91014505 +.43993417,1.8454118,.98241691 +.75989018,1.0574261,.4358314 +2.0362158,.1650229,1.6038584 +.82347425,.02671522,.21179167 +1.0080182,.40776434,.36299682 +.41445364,1.7436665,.60911955 +.51379765,.14019204,.72019276 +.54188116,.61973099,1.6906688 +1.7100909,.13452294,.40449339 +2.4936044,1.0984627,1.3554088 +1.1547169,.64019887,1.569425 +.58513738,.43664048,1.1754741 +.85194739,.78217808,.07277717 +.85829466,.61506396,.86609537 +1.8594239,1.4098688,.5753042 +.94163116,.29808686,3.4037398 +1.8209556,.76595711,2.1739569 +.85412659,.62711228,2.0701818 +1.6154419,1.1391553,1.379797 +.56146834,.03584471,2.0651315 +1.2543124,.47174677,.72716924 +.36354841,2.7544838,1.3285512 +.2985053,.24589666,.23217589 +.53010271,.73075646,.09016612 +1.4043407,.31309696,1.4168802 +.59323322,2.3957213,1.004379 +.60658409,2.0935029,.66093389 +1.2005926,.43452114,1.152961 +.43581032,.77107412,1.7989662 +1.0448013,.20392694,.37845861 +.4825104,1.6443463,.67257884 +1.0264309,.30152348,.50977758 +.58307828,1.3269693,.55326576 +1.0915256,.89218002,.39728762 +.96160699,.05220384,.9545024 +.75933917,1.1558852,2.0889078 +.56961287,1.4505085,1.1035443 +1.2732065,.45435066,2.5305086 +.75359829,.80214175,.18571181 +1.058064,1.6034183,1.6459097 +.20507328,2.3128324,.16125503 +.73452964,1.4796968,1.3750226 +.9894431,.12963521,.91491745 +.83955929,.54153293,.65202101 +1.3119773,1.415437,.5166712 +.70887761,.67073271,1.2742897 +1.1816178,.8565744,.84505178 +.34221144,1.0965269,.91749139 +2.1557226,.25669252,1.9788659 +1.0017483,.28630528,.40274605 +.47842702,.82909787,.67040723 +.79020006,.26084566,.58961796 +.61820307,.47328049,1.27365 +1.8904546,1.3629758,.10485699 +1.3215769,1.6193745,.63155789 +.49893827,1.5939146,.42034495 +3.251853,.16653218,.11680531 +.6441832,1.5448895,.52976826 +1.1184343,.69293596,.30398619 +.67362107,.39056686,.11942411 +.54960527,.33163107,.04106752 +.53577537,.2801989,1.1049256 +.33066138,1.4634454,.47282199 +1.677171,1.4679268,.73243814 +.68959236,.30244604,.32748067 +.67274751,1.3531965,.99619004 +.84666693,.15660444,.09968516 +1.0277622,1.083173,.68303715 +1.006382,1.5018993,.9066143 +1.0327148,.65188772,.88747883 +2.7254732,1.2483079,.24289411 +.72110403,.10401356,.45771334 +1.1073935,.20755464,.8083237 +.9863111,.53462222,.6593619 +1.1659603,1.0573005,.18531279 +.8893383,.06606468,.6703231 +.48076527,1.2210536,.67776283 +.86631563,1.1273671,1.7876797 +.84265854,.58133565,2.1725806 +1.1198642,.42787587,.8909135 +.97726225,1.5740237,.79455368 +.44469288,.5021658,.76386026 +.96448037,.4697697,1.342164 +.71861242,1.4200574,.07789438 +.75161391,1.3346512,1.4396573 +.64486538,.12161867,.07212057 +.22948383,1.177242,.26907509 +.77623334,1.0408952,.17898693 +1.6367609,.08011389,.4094459 +.91354926,.22693056,.80879178 +.57870445,2.005538,1.2267103 +.29941403,.67705966,1.0549783 +.95474201,1.0881033,.67062739 +.65396574,.22120301,.26762567 +.90033048,1.7618283,.68090377 +1.6711193,1.0098827,.72702332 +.84514003,.82059043,.78207349 +.54903127,.4693144,1.3584307 +.6716608,2.3389905,.7320898 +.45928336,1.9035133,.76241819 +.60934815,.30041644,.33267352 +.63442008,.8904721,.17556324 +1.1914224,.26499097,.03655823 +1.7750759,.19124052,.67345219 +.81385645,.34030555,.64501856 +.45148004,.94643525,1.0637538 +.57589605,.24339578,.22858865 +.87425985,.04640327,.9782846 +.58603469,.93029672,.7564828 +.49681628,1.633963,1.4634451 +1.0240889,.14967965,.5394279 +.8746134,1.9612273,1.1600546 +.60135336,1.3122494,.01381144 +1.0597184,.02731007,1.8404404 +.27886789,1.6491523,.39421944 +1.2758264,.15046826,.52027311 +1.3638938,.97924131,.48662249 +.56910958,.32944423,.62089159 +.73311421,1.748205,.13513112 +.58801642,2.0313914,.0015705 +.85728075,.04941793,.17939947 +.64960108,1.991448,.15453951 +1.0296852,.08290634,.73222334 +1.3753288,.3043487,.47834422 +.84719866,.76242279,.12267416 +.63817022,1.7133463,1.44849 +.53350665,.01168172,.36070342 +.61975886,.66274937,2.3357736 +.6156881,.94866029,.0537824 +1.7256945,.30186925,2.597971 +.63805868,.9122608,1.0773338 +1.9504661,.22990476,.63321848 +1.0053709,.11043583,.20248243 +3.6145297,1.0332207,.25441896 +.46072311,1.3081463,.60930769 +.62979019,1.3242727,.90790155 +.47816249,.67207755,.00553014 +.70653489,.83507148,.35786257 +1.3141253,.2973185,.54744771 +1.5111024,.04895937,.69842522 +.86685633,2.3944381,.88905172 +.62341599,1.9944594,.57846163 +.48957323,1.7945739,.31263871 +.87259314,.96020973,.68060599 +.5003209,.25345014,.09330371 +1.8723642,.09149203,.01692176 +1.3734095,.14817864,.95914323 +.80220488,.94024188,.36226715 +.78295834,.01032299,.41249816 +.34513761,.63406374,.20240263 +.54029367,2.5177996,.22003388 +1.3715942,.20553618,.11342934 +1.1518305,.52954045,.78892288 +.79975104,2.4490043,.51672327 +1.3161432,.01770931,1.1160486 +.60659135,1.556555,.13871896 +.68823819,1.2543895,1.1388845 +1.4367939,1.289123,.07585599 +2.9333811,.1457709,.50938745 +2.770015,.07191134,1.8095351 +.66682188,2.0818331,.22990047 +.89538728,.70819007,.48352589 +.73684476,.89333434,1.913451 +1.0685461,.65049199,.48520202 +1.8877807,.85062906,1.3752822 +2.5038638,.30935377,.42441963 +.68920037,1.7474428,1.5350567 +.56100638,1.7851781,.78404401 +.5140029,3.3895253,.37498642 +.45490919,.56198062,.78884037 +.91265234,.95760048,.06536271 +.74837082,.07497909,1.0589331 +.80052025,.7078068,.87994041 +.37603533,1.5235522,.1624813 +.86438356,1.7873928,1.2037256 +1.6069362,.95388792,1.3342416 +.29213295,.06090982,.21000381 +1.6264388,.01205015,1.1797172 +1.304966,.37887657,.88910707 +.65767732,2.3730759,1.0315029 +1.287161,.06878931,2.1156029 +.53560998,1.2572284,.48037886 +.56312395,1.0070788,.88201207 +1.1356393,.618958,1.9433211 +.50295776,2.1858999,1.0373787 +.67301807,.13943707,.17569732 +.4776105,.41685592,.22201526 +.7551266,1.0316266,1.2265707 +.83413641,.42477028,.9475876 +1.5025309,.69926678,.7987228 +.80324795,.63528004,.64061507 +.76242991,.04356381,.15539837 +.55958066,.08639176,.53655797 +.95958403,.36174208,1.3145453 +.51463197,.89417121,1.0561606 +1.0694838,.6071004,1.4234262 +.3541381,2.3706105,.13625996 +1.2342723,1.0596746,.53054136 +.68493183,.4031924,1.2062291 +.62035695,.94685006,1.583018 +1.3716096,.72501031,1.4998927 +2.0801895,.37636343,1.1608432 +.7974959,.73911141,1.3930643 +.51694827,.98359286,.76158815 +.50816172,2.064495,.48655896 +.54578918,.10566086,.46570473 +1.0262388,2.0506284,2.3183087 +1.6294538,.66932625,.26627173 +1.7436964,.51190093,.21933728 +.57924557,.82353398,.55061266 +.35999668,1.1081218,.5893733 +1.2517465,.89081302,.32681352 +.32240216,1.0725584,.26979393 +1.2144597,1.6943156,.93067382 +.83036074,1.2065182,.80596636 +.95826679,.84285973,1.7921856 +.53683323,1.1887898,.25180534 +.53660305,.74657774,.66826379 +.57135413,1.8782864,.12724358 +.54277552,.05059952,.50620305 +.65358091,.51828213,.16524911 +.38392252,.49332937,.21152305 +.65165828,1.7383228,.85387183 +.84543812,.6936818,.03538192 +.89872458,.63179409,1.3945008 +1.66662,1.1435418,.13624928 +.57131713,.41470981,1.1584021 +1.3144799,1.526714,.4001115 +.75857125,.52085627,.95155828 +.67419345,.96923321,.69027048 +.47701209,1.3156222,.76946801 +.33918176,.57422012,.35217706 +.76645247,.76235734,.1848086 +.65268961,.94281264,.61164341 +1.3184539,.37852824,2.4125661 +.69328323,.52251852,.05077652 +.96195651,1.1540144,.62564793 +1.0820779,1.4689322,.72186397 +.2890452,1.88005,1.6397755 +.46052197,.10039028,.31041137 +1.1499768,.75544034,.35048167 +.30373433,.669236,1.1845008 +.34555115,.13221411,.52792202 +.67877001,1.1341777,.20983126 +.54947793,.25650721,1.1829172 +.57752431,1.9218555,.23115445 +.34861404,.26527475,.49539145 +.42897727,1.3509913,.45377045 +1.7366164,.20457348,.79679363 +2.4021746,.48846686,.2701644 +1.984239,.01506683,2.0861078 +.61440819,.58353711,.0800624 +.46810932,.55796873,.73364526 +.37032707,.97154551,1.5734639 +.78055408,.16375031,2.2739312 +1.3354112,.40061621,.70298093 +.42701479,.67288627,1.1499532 +.98787891,.12133443,.16827221 +.84091605,.8784914,.03226123 +.72420039,1.5931286,1.6383234 +.64385158,1.0334832,.96039487 +.69999914,.12374438,.34899323 +.33968257,1.0920588,.03861119 +2.0117486,.7927572,.2026475 +.28536576,1.1370616,.05553585 +.68591663,.46251243,1.7021124 +1.3078359,.6851205,.75309101 +.98789502,.81005113,.04673625 +1.6836422,1.2109744,1.4261797 +1.690844,.17449015,.28583334 +.71073466,.42379773,1.0489933 +1.3482024,1.3410115,.7495899 +.92446573,.55773396,.8569662 +.77571311,2.720596,.57579864 +1.2322974,1.1771456,1.1154743 +.66197954,1.6740623,.02633569 +.57216612,1.0861723,.24306046 +.43251982,1.195322,.42259637 +.67457544,2.1594666,.92861493 +1.2109117,.03878258,1.3329813 +.52439519,1.9964545,.19649465 +1.1662406,1.0448648,.46434813 +.71461998,.48003231,.57117772 +.84848068,.21766949,2.1340325 +.86518402,.98383594,1.2228681 +.97813509,.15174398,.60441884 +.27613525,1.183517,1.2822227 +.91395704,.74526139,.09786913 +.52487125,.30241262,2.8115547 +.96095486,.56803474,.24850367 +2.1716918,.94704351,.70817286 +1.8834407,1.3962836,1.4602795 +1.883369,.57039025,.18619218 +1.5854829,.34201118,.53941703 +.37254136,.30514855,.19875078 +.69478598,1.0099888,.74058018 +.72755727,.93973825,.07593149 +.27536216,1.8450519,.83063316 +1.33474,.21037527,1.1095784 +.7277091,1.0090729,.33635873 +.6118252,.96313483,.12530236 +1.2737602,.56220308,1.4461439 +.87501479,.82329502,.31310973 +.79275783,.44376764,.5323533 +2.4961442,.74536724,.99783661 +.46210417,.46018205,.70973342 +1.6151703,.46387014,1.7111957 +.49305787,1.263676,.24181746 +1.2023343,1.1610908,1.1133544 +1.2520484,.88258131,1.2202653 +1.578313,.6695274,.37278392 +.5874542,.53370713,.11326599 +1.0094705,2.0480798,1.4901804 +1.0651742,.1761889,1.0703102 +.56852253,.7988519,.20172215 +2.4684245,.43704111,1.5668698 +.36879976,.30707422,.47009728 +2.515616,.55042397,2.5041678 +.72080479,.11970362,.17957488 +.46936803,1.3215942,.31851406 +1.3448153,1.1505365,.23889958 +.37772053,1.1198769,.41074872 +.68733508,.79859065,1.1690102 +.4083549,1.4520415,.49751971 +1.0143462,1.2135112,.50795438 +1.8119578,1.8736386,.84020163 +1.007869,.42269209,1.8964873 +.95240834,.5220148,.9818133 +1.8139867,.55712668,.1319839 +.5911489,.28258879,.53776372 +1.0041364,.4822198,.00310172 +.84327125,.28273,1.5128939 +.40277522,.546917,.19599592 +.89018057,.27046562,.03559761 +.78111213,.71665484,.8220266 +.77143709,.44114965,1.3780941 +.86438121,.18381772,1.0234903 +1.3568935,.62878397,.02591378 +.84927271,.72403561,.40154523 +.76626866,.17879825,1.4984012 +.86219442,1.8044234,1.5351922 +1.580957,.01665018,.65791639 +.6158479,.76843734,.58317498 +.79498687,1.8899292,.66298197 +1.019828,1.9582913,.21079377 +1.2642363,.25253311,.0234314 +.86674865,.15056828,.08034997 +.72085111,1.6393185,.79426077 +2.954259,.40142701,.42148565 +.90648529,2.8876414,.91619442 +.99828769,.21975051,1.0599111 +.69420381,.58182784,.38925606 +1.4622326,1.1180472,.32466453 +.79325132,.6687,.91162805 +1.2041562,.59075396,3.0471661 +.6929656,.63672277,.214804 +1.1541647,1.3200553,1.0779663 +.91746248,1.9440561,1.4914643 +.66979211,1.0677113,.60368449 +1.1312636,1.290328,1.9776847 +1.009304,.10994757,.63044178 +1.6708442,.51852099,.56674906 +1.022251,.34545967,.11740745 +1.3995731,1.1331559,.16024704 +.73277145,1.7295411,.09249914 +1.6797537,.49549676,.9871787 +.86483818,.15281954,.79701625 +.70205862,1.7384395,1.7848019 +.99973758,.65200171,.27014239 +.82519936,1.7525586,1.7452847 +.89377975,.34612111,1.8066107 +2.1448633,1.030884,.16490094 +.79822102,.9973564,.34523073 +1.4673509,.10039356,.50767507 +.42812041,.39496383,1.5373697 +.38531832,.21628522,.00799584 +1.3458945,1.4998616,.78510879 +.7340553,.05664858,1.01814 +.62303809,1.250136,.98576574 +.89440457,1.2672919,1.7569779 +.33917338,1.368854,.21225104 +.898813,.19535183,.05909451 +1.1166632,.67984685,1.3264719 +1.2191654,1.6337539,.76420965 +.17434518,.96187798,.88691354 +1.0191903,1.0860551,.0601272 +.66445378,.59176254,.42071511 +1.3387126,.63060233,1.1523138 +.99212936,1.4719021,.22711941 +.51681689,.74242608,.20428703 +1.6924491,.13257524,.37000275 +1.08845,1.0370916,1.3752507 +1.0207363,.56955458,.21130477 +.30813041,.5561348,.30682367 +.86990342,.6282587,.33372563 +.96479582,.47844878,.46851778 +.61553962,1.0632563,.22293762 +.9702072,1.6192283,.89133276 +.31607952,2.5395419,1.4192451 +.77636172,1.2057537,.58139281 +2.0369127,.08195125,1.4323244 +.94687133,.97889247,.26278422 +1.1109894,1.4741503,.38504643 +.77489104,.03333475,.29791226 +1.0721888,.85187637,.41720833 +.36955451,1.0549854,.09247677 +.75458159,1.0536951,1.197972 +.81025955,1.5015451,2.3347145 +.91735094,.86253665,2.5711544 +.66910796,.24572307,.64206548 +.40631709,2.0337525,.61698011 +.96977706,.45089012,2.1703157 +.68471702,.47291706,1.5516884 +.80577034,.3455434,.6365844 +1.4789259,.97354571,1.9696114 +1.01653,.03630937,.32568159 +.89115473,.03761801,.27802711 +.89479112,.62094906,1.0743098 +.65908283,.2456001,1.3439856 +1.0332631,1.2181552,1.3543988 +.64082997,.93336182,1.0547339 +.73716986,1.5934214,1.7567075 +.63243936,.02379171,1.1503286 +.81263344,1.0196273,1.1756418 +1.2147862,.18661298,.03376803 +.60660104,2.2986275,.06855566 +1.9251679,.49768055,1.3673644 +.43928878,1.4311035,.63257844 +.75406659,.3590676,2.0179125 +.31227041,.95970561,1.1747946 +1.5150783,.03514664,.34167936 +1.5421739,.37208762,.74176779 +1.1309395,.67828333,.38318476 +.70740659,1.1797269,.18017194 +1.3442741,.55050622,.72073184 +.71951483,2.9929212,.4826058 +1.1995485,1.0850205,.51117419 +.47839696,.41848698,.37969161 +.33815806,.39872293,.90655409 +.65460246,.09036702,.35185456 +.7107055,.73310328,1.806594 +1.628126,.94235803,.48475641 +.72508525,.31898443,.9510967 +1.8561953,.44690946,1.4152546 +.88066732,1.5801221,.4352176 +1.0875948,1.2718021,.14178709 +.91893301,.13287055,1.0721172 +1.6486029,1.0804926,.70791572 +.76279872,2.4010781,.55095818 +1.9697651,1.2269173,1.2063658 +.83089456,.37794732,1.6718659 +.58749519,.76279778,.14891477 +1.6294921,1.0598532,2.0748904 +.83354505,.94937408,.71904646 +1.0479998,1.8857473,1.3995609 +.47891803,.20952578,.3875137 +.42633685,3.1608639,2.0001476 +.44576445,2.423124,1.9455319 +.4016369,2.0910722,1.3919928 +1.0880561,.289602,.37127375 +1.7165721,.59866498,1.1930577 +.71246283,.27440848,.45219948 +.32685938,2.1086385,.40164929 +.80218334,1.1914667,1.3992804 +.79036955,1.4450435,.76894195 +1.9565656,.85198327,.79880319 +.70064659,.9173449,.07459069 +1.8884916,.39802595,.01786838 +.3701519,.83047888,1.9333545 +.7708975,.63684879,.70823237 +.65057518,.34057755,1.372086 +.56932542,.84510622,1.0338644 +.85814052,.883993,.05504499 +1.477825,.34920033,.08050049 +.41722414,2.3255136,.32096336 +.96804462,.83769648,.70770259 +.75405665,.64258866,1.5432076 +.9776321,.35305023,.76123824 +1.1704814,.37464305,1.1458144 +.75863492,.35608812,.59979603 +1.1103594,.19329061,.64244399 +.57869435,.63874246,.64045622 +.52450598,.16804732,1.0342395 +.84748981,.94981965,.35721732 +.35109306,.79282384,.40371814 +1.3519669,.03740257,3.0128762 +2.8663408,.09753065,2.2409058 +1.0353273,.02820692,.25483154 +.85752834,.10985207,.64279398 +1.0957469,.4666198,2.1931976 +.62487699,1.2671667,.10880294 +.87566274,.59618618,1.4003216 +.59958883,.32277273,.07302209 +.8137104,.20339308,.34287222 +.74311418,.5986863,1.7542974 +1.2158329,.58798942,.58960013 +.35798584,.09069303,1.3358983 +.38962521,.16329252,.00185209 +.90205271,.00051597,.74748462 +.64674633,.03780225,.99093541 +.66666148,1.0554837,1.6126896 +.81641536,.038771,.17060603 +.36468261,1.0365435,1.1205004 +1.1889942,.80211134,.00288096 +.71242874,.96153443,1.6531545 +.88529682,.10343501,1.239489 +.71548365,1.2078407,.29252174 +1.8406198,.52411222,.57563053 +.75870672,.75423295,2.1598801 +.94619657,1.4545873,.31617924 +.66722114,.1039533,1.5721347 +.59835909,.2206186,.26224959 +1.2333617,.42445814,1.1530833 +1.9426829,.20457365,1.7788992 +.34204043,1.7846301,.4823693 +2.231502,.0229712,1.6503553 +.45259414,.00893685,1.2029318 +1.7822339,1.0820131,1.5664239 +1.4063349,.64490754,.7701901 +2.0952982,.14454346,.7616634 +.51749541,1.7506577,.31419702 +.89576291,.64629466,1.055871 +1.2100355,.06842352,.40088705 +.87114643,.27355826,.42356834 +.97373808,.94154492,1.7713135 +.63034181,.7726554,1.0645623 +.8998269,.03574713,.49318993 +.70839196,.87111558,1.3514142 +1.2486808,.56182603,.93213463 +.87779144,.49072511,1.0234621 +.86401249,1.4275029,.70770683 +1.793188,.85328941,2.9855153 +.92489545,1.3615158,1.0159905 +.55938423,1.9501618,.13156487 +.49192325,.62915673,.59747437 +.41493998,.42557319,.12997633 +.81835034,.16211518,.39400984 +.60186457,.15858224,.66374289 +.91376022,.86318158,2.7486962 +.59132117,.12452741,.19221368 +1.2882183,.34986422,.74046457 +1.0588245,1.3827125,.79185995 +.4019573,1.4303399,.26653554 +1.3108684,.43383074,2.0842512 +.55596795,1.1682188,.79269465 +.36598821,.53162684,.08831131 +.91900996,1.7620071,.39608174 +1.4036663,.19705221,1.1958357 +.46711913,2.2725826,.30729098 +.29266219,.19080516,1.1110469 +.68301942,.32312329,.88480925 +.93922671,.56443891,.2253681 +.64275527,1.0082781,1.1318243 +.45349233,1.2037265,.33211802 +1.7092314,.2286876,.7586384 +1.8137313,.42095571,1.6587219 +1.6748077,.43521178,1.9427466 +.78771501,.08003887,.23238096 +1.5103049,.11908722,.22385627 +.58808779,2.0324994,1.0420271 +1.3121961,.64803548,.29505939 +1.0261456,.15575078,.0760356 +1.073094,.262155,1.0684155 +.86222442,.20680173,.01835687 +.37556776,.90841947,.42532735 +.94681093,1.6016751,1.1083484 +.55071954,.69417165,1.1509006 +1.0441349,.28993787,.50560936 +.8012333,.20957126,.87561097 +.77797941,.13377995,.80814522 +.56962415,1.2709865,.43331361 +2.0897181,.504481,1.611326 +1.4948691,.63084106,.50227883 +.79499622,.14895164,.35444764 +.54011991,1.2545317,.76101251 +1.2710996,.40320765,.42075729 +.24308141,1.4830962,.32677334 +.8324113,.21100466,1.0117429 +1.5024275,.05887867,1.4870574 +1.3332392,.36234956,.79436832 +.74860157,.09241164,.73022492 +.63632505,.46444931,.83727743 +1.5895114,.74428042,2.0463712 +.65015187,.38270996,.38759027 +.66410786,1.5209937,1.9983838 +.92377971,1.113734,1.554988 +.66778336,.62115877,1.7821548 +.58866577,1.3276197,.50835957 +.92741394,.34426041,1.9052286 +1.1043934,1.0717477,.67367466 +.93714101,.61238594,1.2014253 +.49487584,1.16734,.07404772 +.80843503,1.2365982,.18095098 +1.0850963,.23045086,.35843572 +.60177085,1.7249398,.91520056 +1.0411277,.62460838,2.1348851 +1.1694302,.53876839,.90887004 +1.2610939,.22828903,1.5205828 +1.1854338,.18597801,.93530245 +.42941872,1.0625891,1.1165699 +.89311479,.35697344,.10688557 +1.4414165,.05271619,1.1767982 +.92411573,1.7893595,.38459493 +1.0652334,.41892222,.1633237 +1.2561776,.38558899,.69398873 +.52219329,1.2933775,1.3439748 +1.196923,.16023563,.17556945 +.46663111,1.4536421,.68000681 +.38916653,1.7724012,.53767839 +.71676041,1.3368388,.21912631 +1.0133378,1.6049181,.32600056 +.76721622,.37614036,2.290418 +1.4402554,1.0266152,1.3261669 +.69969412,.45883017,.49797764 +.45822368,2.4782275,.06662754 +.40277899,.39026098,.08965946 +.92211173,.0418733,.18098352 +1.7778556,.17709266,.8795744 +.8926175,.51119636,.40618734 +1.8834683,1.4041722,1.3359245 +1.5774299,.28661974,.92163592 +.31128914,.05026245,.40393453 +1.1188451,.05115022,.27099182 +.86236997,.47302399,1.3928455 +.74140222,.567965,.16041684 +.47227989,.92868923,.43163846 +.68659556,.26200657,1.0673738 +.8838291,.95093904,1.3036574 +.51075176,.47286788,.72261377 +.33083763,.72262523,.39848001 +.99645495,1.4603777,.51032896 +1.106317,.04189146,.85573642 +1.5749444,.59135779,.12542662 +.49691667,1.8782009,.85296039 +.44186224,.41646225,.56537242 +.531937,.59692256,.51463557 +.86681782,1.2906055,.1993066 +.41980504,1.8483228,.58570378 +.22978708,1.7461002,.74748992 +.97567474,.8748718,.28859748 +1.0917634,.05811333,.91292856 +1.1056548,1.5677659,1.2817418 +.92740056,.26948194,.50119563 +.30624481,1.1446256,.0043983 +.6303977,1.0384719,.15058501 +1.6957685,1.9758493,.90488383 +1.0494608,.23155331,1.8523407 +.40926821,2.0856925,1.790525 +.44220919,.5117504,.27429849 +1.1803448,.29875525,.85914077 +1.325118,.18700733,.64576191 +1.3775103,.52925915,.2428068 +.72069667,.13883512,1.3416866 +.73592016,1.7049163,.84168267 +.56166927,1.7420036,.57159887 +1.436071,.41990247,3.1387265 +.7912776,.00011434,.51755055 +.89339528,.40760508,1.2240011 +.87363972,1.0342534,.52100132 +1.246469,.19968703,.22590082 +1.1095681,.65058577,1.7571916 +1.0943911,.74913367,.82610915 +.74943542,.6698886,.02819217 +1.4076097,.93171744,.98975122 +1.046045,.13633531,.43249913 +.78136074,.05706488,.30469606 +.80923095,1.5764088,.02440632 +1.2914823,1.4123903,.2729806 +.92337458,.83283871,1.1961482 +.51003273,.82137084,1.8196356 +.83452799,2.2821565,.77369909 +.87362699,.6029984,.17042212 +1.5784425,.62568582,3.5399049 +.74011638,.69784459,.25327393 +1.0972456,.59077076,1.9415131 +.69102499,1.7187783,.79634393 +1.3603635,.54525096,.33079729 +.62895457,.53125825,1.8608721 +.68912347,1.2294469,.74124465 +.81917642,.06615174,2.7576603 +1.0562512,1.3667078,2.4529454 +.58124524,.10752239,1.9204693 +1.4214986,.07821968,.51799838 +1.6912615,1.743126,.88891273 +.63623058,1.723565,.94234567 +.9038409,.08771991,.85047686 +.71046488,.36768737,2.1643736 +1.5654734,.8507767,1.3260691 +3.7965359,1.0120906,.6809885 +.79256212,1.2279045,.3795283 +.66689454,.23275771,1.397225 +.68423586,.53012353,1.0757003 +.84403764,.45493227,1.2456833 +.50392679,.78199616,.11763852 +.77801281,1.1057938,1.0972582 +1.2404177,.61032903,.80907904 +.80947451,2.0182251,.73013288 +.9396684,1.5913961,.06380743 +1.0685699,.8315762,.14779351 +.2271514,.67004635,1.1205632 +1.8593236,.02690185,.0598872 +1.0301704,.7239375,.77217042 +.79212825,.30575072,.86512852 +1.2474157,.67985204,.19238677 +1.2888588,2.3273512,.05315377 +.55020665,.70947129,.76369305 +.8840425,.18654447,1.6128003 +.33643756,.00597783,.02585056 +.41506643,.40761966,1.0624963 +.68747559,.66468197,.66402316 +1.0503955,.93709242,.73428823 +.69784739,1.0945559,.74635197 +.90581999,.15186331,.4500938 +.58592416,1.0417343,1.4585051 +.92332204,.08310296,.29888614 +1.7673923,.04306728,2.2473248 +1.0406517,.9288512,2.3352325 +.41623713,.84805526,.28520611 +.74639735,1.5175478,1.2191722 +.88594593,.81235102,.80509221 +1.0112903,1.1212934,.43422477 +1.8185558,.26856173,1.6817942 +.74472508,2.5026679,.21187861 +.54923457,.87220106,1.2171127 +1.2033862,.30757784,2.3051457 +.37245279,.38133314,1.4500379 +1.1639281,.90167248,.03115497 +.40214689,.86584096,.92895124 +1.365934,.25126606,1.6444809 +.99086114,.10110164,.01258747 +.85265842,.31626565,.50059851 +.89308043,.45763263,.22395584 +.51095823,1.5446991,.87820738 +.48530288,.19653335,.68819715 +.7182471,1.7096712,.90102836 +.53216258,2.3917463,1.7324302 +1.1279598,1.0981152,.9006354 +.66227386,.97234758,1.4456781 +.52728665,.713487,1.4533946 +1.3955504,1.2291648,.78567253 +1.0046182,1.9564224,.83917287 +1.7933432,.07829223,.49170475 +3.3063573,.05107946,2.3871806 +.66401178,2.0389596,1.783839 +.92160796,.41368203,.32681883 +1.2889597,.30052795,.50763221 +.39393397,.30463504,1.0848811 +1.3323431,1.2787974,.92655404 +.32809217,2.759115,1.1426172 +.82437162,2.9717311,1.006095 +.7947938,.51016094,.36886489 +1.0519166,.14440207,.94155343 +1.2868324,.58202715,2.5371331 +1.0455547,2.3028767,.22694512 +1.0096027,1.1617566,.29071787 +.42431975,.17952501,1.2683735 +.86441796,.54458433,.0214322 +2.2889741,.48144867,.2014486 +1.0640863,.22443051,.22360851 +1.0828075,2.7256146,.83912612 +.17127053,3.3398891,1.1293152 +.43786313,2.2799941,.44662901 +1.5716406,.68292132,.4267532 +1.1045895,.11628903,.78193565 +.50737864,1.7320803,1.2030772 +1.2880628,1.9678334,.52365016 +.91978384,.11069045,.33133012 +1.9396503,.40302242,1.2644444 +1.0141178,.18297064,.91923127 +1.1641985,.03681655,.04858422 +1.0318415,.78366758,1.9403977 +.48706421,.75784131,.36208187 +1.1311171,1.0698992,.78729303 +.76067255,1.9208652,1.0035935 +1.2944209,1.1614962,.27638883 +.88416846,.14343364,.06151789 +.77217114,2.9802104,.74111642 +.49913375,3.418653,.5161069 +.64160308,1.4275878,.45328057 +.62846396,.98844396,.12781413 +.84682492,1.1967582,.37998834 +1.0244703,.99862908,1.3306393 +.46288088,.47845683,.38000952 +2.8926874,.39475589,2.1362016 +.62869432,.2228058,2.5039326 +1.3254777,.53321143,1.4126914 +1.2007064,.32430628,1.7044541 +1.2296312,1.4946903,1.3399793 +.4650776,.32079141,.04524033 +1.1752114,.19426389,1.6246354 +.68779171,.78148632,1.4350293 +1.0812988,1.3956398,.65827536 +.49470549,1.0460122,.09118747 +.81846425,.69959997,.75885426 +.69702493,.15007664,.81540591 +.31823218,.90919365,1.2022226 +.97809756,1.2175515,.38488591 +1.4998884,1.7163535,.35841494 +.44812046,1.6981024,.84082212 +3.605084,.52113586,.62406304 +2.1249271,.85431572,1.2278101 +1.7112284,.94208766,.61065231 +1.0390657,.86722134,.23465074 +1.8568897,.6405998,.53155381 +1.3261131,.61350355,.11100153 +.41816273,.50712527,.10069545 +.24707299,1.3945791,2.1666272 +.87600008,.15162015,.11964682 +.91803529,.10433368,.35480248 +.58916307,1.4612228,.38542456 +1.3180248,.06788388,.84234114 +1.6310163,.27926213,.09931422 +.6969045,.44449572,.10648061 +.3557379,2.0209351,.17929311 +.52475225,1.6803944,1.0518606 +1.0324389,.42702504,.25296624 +.3227849,.31964212,.28203642 +.84553282,.70368386,1.3784854 +1.0120064,1.8293458,.52889941 +1.0673525,1.0927239,2.2721626 +.7204934,.64341101,.2934247 +1.2669845,.09536922,2.074025 +1.0257668,.20782005,1.1848086 +1.5761011,.73299017,.16855866 +.82300381,.2609789,1.6060271 +.52571968,1.6387981,2.0679902 +.6455519,.55109759,1.5771896 +1.3537787,1.548566,1.6304702 +1.333239,.35115036,.8765357 +.76242455,.11799719,.16258044 +.72341942,.37097462,.93145667 +.94931241,.27350523,.76732048 +.87874509,2.0129323,2.1083305 +1.0803867,1.1464166,.83782105 +.46743655,2.171198,1.568917 +.61067977,.97090985,.24559223 +.62485506,.69636255,.85098283 +1.4519012,1.2134615,.77322889 +1.4309764,.35360172,1.1038316 +1.3218406,1.1964178,.45357131 +1.153945,.2001064,1.8332279 +1.0386777,.89418028,.51328827 +.27149654,1.3836039,.15887313 +.7351663,1.1831493,1.3355108 +1.5696628,.66480558,.23183053 +.48875378,.66300171,.47058388 +.72789289,.67873489,.45628672 +.45549662,1.2485465,.70281367 +.63576262,.38313561,.12790284 +.73432093,1.0144291,.68976943 +1.2708761,.56466927,.01268245 +.61956569,.41835992,.12923919 +1.2633956,2.1254961,1.2493988 +2.6021187,.21878399,.33475274 +1.4092689,.87409081,.20567862 +1.53146,1.4788262,.09808047 +.65718269,.23796467,.20447001 +.57474488,.15151916,.52008448 +.63675504,1.9405663,.17065843 +.60010032,.68719665,.7908691 +1.3284749,1.6240765,.34414256 +.34133238,.54293957,.14889671 +.78178112,.48688178,.07200507 +.69916671,.21947246,.53329563 +2.3834332,.61844822,.34750264 +.56955898,.32707431,.58911474 +.51356758,.41458937,1.3943424 +.80693697,1.4964084,2.5899135 +1.1603398,.26040873,.91692389 +1.8846288,.07847959,.3588643 +.85332201,.92564584,.18607871 +.63360124,1.3959247,.10135504 +.96777148,1.3067367,1.6338947 +.48724588,1.0334869,.99907398 +.64640214,.71435212,1.0247709 +1.2918048,.74340515,.77023843 +.53853653,2.0301206,1.9574565 +.27315673,1.1206216,.37141356 +.66982872,1.184013,1.2296103 +.91303508,.61430905,1.3391224 +.72312522,.46382536,.60879103 +1.0213645,.65779745,1.3563346 +1.4363268,.08897405,3.7161077 +.91544197,.72610415,1.4098735 +.49543267,.37791597,1.2802645 +.40138397,2.5236264,.07248765 +.70837167,.47939869,2.5095315 +1.5055938,.18394474,.35019361 +1.0179076,2.3879922,1.4793665 +1.1074088,1.1386802,.12635951 +.59819296,.77689275,.00898752 +1.9283255,.55717259,1.1217189 +1.5003045,.03958007,.80497559 +1.2397227,.78629514,.48434686 +.45205794,1.3576844,.38084665 +.89636204,1.1211293,.23591425 +1.262693,.49093593,.78210195 +.44138997,.84563286,.89801006 +1.1966945,1.2096631,1.1265475 +.65448779,.53399386,.31124666 +.51239631,.12736035,.48130653 +.65565024,.0771076,.02996917 +1.5321304,.73981877,.55676135 +2.2831209,.30216843,.13168481 +2.8762291,.02048691,.26569887 +1.0194855,.33571551,.84488902 +.30096924,2.4465236,1.4118336 +.43146251,1.0723743,.53243612 +.65686456,1.0736894,.9251606 +.71201194,.09337195,1.7999169 +.67955372,.14518116,.14045068 +.63915281,.28272794,.0940917 +.51178508,1.9456089,.8337955 +.74350487,.37292906,.75052911 +.93379932,.60360046,.7886144 +2.0335617,.08900592,.22502483 +.81087595,.26354324,.89819121 +1.5131697,.35186277,.42853499 +1.2775122,.27907334,1.3362991 +.62627065,1.7403439,1.3376243 +1.2396169,.40955266,.70101173 +1.6459821,2.438541,.68928523 +.47052528,1.0966675,.70885442 +.34761722,1.5455516,.30586832 +.74065362,.14152238,.66207025 +.33063305,.56269731,.35358995 +.68115189,.00489659,.09649939 +.95260517,.34102141,1.0752747 +.63013227,.06853022,.23933756 +.65248252,.31832085,.02863219 +.17923736,.90237992,.35977725 +2.3202971,.28808092,.07674997 +.94165826,.18313065,.92473496 +.66060292,1.0762999,.43898567 +2.3474964,.04735654,.67045234 +.83761782,.69864591,.81203533 +.84656229,.4321799,1.6335017 +.62918366,1.8567262,.42661341 +.55735884,1.040104,.48060119 +.70408115,1.6607763,.92939631 +.45112212,.39558863,.00493536 +.60841509,1.4109101,.25304072 +.65613351,.27753009,.38304506 +.60769545,1.366066,2.6134938 +1.1796802,.56478647,.78602422 +.75306623,.62308452,.07527537 +.61803639,.44736537,2.3891786 +1.4137806,.09953154,.44983717 +.62378161,.06006071,.59883464 +.54464239,.32046338,.20203753 +1.5870651,.04306057,.61564504 +.57685425,.27082869,.07822687 +.42954023,.52809829,.45380419 +.76497894,1.429499,.55561054 +1.9754077,.0413468,.92167491 +.79892357,1.7323171,1.1778308 +.43515472,1.4900383,.0731339 +.67087208,.82386604,.93112251 +1.3303762,.12821935,.10408534 +1.001706,1.0315254,1.2313261 +.40702135,1.3697939,.54781878 +.74268991,.41556744,.7746616 +.61209233,.0096191,.60817478 +.66561086,2.122728,.03276559 +.81907566,.74036426,1.9346057 +1.3986062,.16989615,.50843075 +1.2757036,1.4175817,1.2545786 +.7047076,.84817104,.19388748 +.45491768,.32052549,1.737635 +2.2929252,.01866836,1.4761333 +.80099041,1.4744652,.60092773 +.69807386,.34430611,.45167451 +.78776101,.69217848,.33804037 +1.1103828,.17744185,.55930112 +.65942029,.01908756,.29515712 +.41304879,.73423572,.0910442 +.62525975,.13806152,.96601325 +1.6111228,.70407871,.852883 +.81709451,1.8691181,2.2492377 +2.0028662,.21559061,.41351037 +.56330989,.2453174,.35098527 +.74939847,.16674888,.1703804 +.83136215,.71363565,1.6050648 +1.3702717,.16557287,.96578775 +2.6189475,.03876216,1.1687396 +1.3351782,1.1734171,.43902858 +.48276353,1.7229483,.0179263 +.89239746,1.2669463,1.0564068 +.7930674,.31440251,.46054483 +.43337748,1.2911071,.97999614 +.76058327,.36471902,.07367196 +.81699166,2.4830308,1.5552037 +1.4654638,1.1010431,1.3758188 +.36317156,.44641628,.79850781 +1.1111474,.64119649,.39235032 +.4388182,.75346364,.60039155 +.52360447,.30031271,1.0637302 +.37042307,2.7537086,2.3589037 +.51153028,.54549597,.0389424 +.38179547,.31246855,1.667244 +.926342,.25735959,.83899025 +1.210005,.14242782,1.498192 +1.6047687,.32752001,.24230448 +.97322581,.19146861,.50120126 +.4577993,.1534005,.24331986 +.57127027,.80161436,.31662627 +1.5390177,.98590249,.3224138 +.34694897,1.0285509,.13796576 +.72845445,.44062771,.2830237 +.7719433,.24047768,.76400018 +.47512298,.10686323,.23217409 +.95511088,.70620636,.17047137 +.81978345,.69026066,.14484676 +1.8225462,1.3063396,1.8553786 +1.107185,.74237309,1.5517271 +.65701805,.19948421,.07954907 +1.1934046,.40638667,.40098307 +.81038037,.01058289,1.0150382 +1.4037186,.81140475,.20733296 +.91403927,1.9542251,.30674159 +.62065035,.63541193,.39072908 +.43573395,.07280392,.1299618 +.76653608,2.2634039,.92090898 +.90542391,1.7308593,.01629875 +.76738295,.47457634,.77714735 +1.0122974,.68026146,1.0222641 +1.1558339,3.6780904,.75778525 +.61876918,1.1556371,.41766603 +.54111428,.82004714,.86648845 +1.6361592,.6569797,.70869823 +.6926279,.54770407,.61984733 +.56071661,1.4401608,.93145735 +.62455211,.87171366,.65315442 +.89379864,.19577749,1.1537545 +.85636484,.21311871,.46359555 +3.6443024,.39387495,1.8149932 +1.5064957,1.0248737,1.6610553 +1.1970401,1.4717075,1.2781069 +.86084855,.47024744,.45400589 +.67487242,.67486331,1.1429249 +.61451658,.79515348,.01118728 +.31447554,1.2133925,1.1410166 +1.0898051,.30537812,.88148717 +.93035868,.51196092,.17149231 +.94590243,.12507708,.07400029 +.84092639,.01870104,.22762841 +.33915152,1.4104087,.03822321 +1.2042841,.27777519,1.8320062 +.42278489,.16098823,2.6387043 +1.7528975,1.356865,2.5937371 +.42229341,1.5384822,2.1571509 +1.7457645,.25554016,.49348631 +.72752282,1.4191031,1.8475856 +1.6604179,.02912039,1.3009384 +1.37985,.44458875,.75155025 +.68374522,2.0875669,.6394413 +.95499483,.1367494,.70255622 +2.130543,.15724683,.57227445 +1.259283,.08282529,.47739176 +.81275241,.25330571,.48142827 +.65309364,.46988466,2.6867387 +.67899325,.57966767,.34706824 +.77211018,2.9374637,.24221938 +.77494646,.55149863,1.1413135 +.64065369,3.7262673,.87552258 +.6469659,1.5553524,.16146566 +.42216529,1.5136209,.93767561 +1.3970904,1.0030723,.48209698 +.4762144,.15776324,.66062786 +.92223961,1.0395097,1.4251901 +3.0691355,.4085328,1.6616831 +.65406836,1.0526303,.09130826 +1.0716512,.33951742,.66275095 +1.4249488,.12587007,.14476611 +1.1111817,.4618835,.11174883 +1.1801759,.58376135,.83649182 +1.3845463,1.0052043,.20814274 +1.1849438,.14471505,.43052522 +1.4848031,.25072297,.03577348 +1.2768588,.01755326,.15025586 +.66163624,1.8051793,.14702917 +.63016216,.71250785,1.3274434 +1.5386621,1.4250618,.55700092 +1.5943949,.2105474,.36529542 +1.3729784,.09416454,.77897372 +.80092445,2.141493,1.7215692 +.42646593,1.2248798,.36206815 +.69761693,.99201253,.07863904 +.78391827,.75653169,.04311452 +.44525931,2.0921021,.49438243 +.90475911,1.3979637,1.8852006 +.39502337,.3288527,.08654215 +1.1817766,1.0565854,.75448563 +1.5750572,1.5118221,1.1026314 +.74359609,.31129487,.03705513 +2.0348648,.42194556,1.1841614 +2.2165308,.8242757,.56071766 +.35721833,1.8210245,.03490385 +.61344349,1.0466921,1.364642 +1.1508457,.36661016,.36827505 +.84919447,.09107053,1.27691 +.73607949,.27801529,1.6287162 +.64081793,.73195707,1.2882473 +.44529649,.5465249,.21962795 +1.6160097,.98526387,1.7525919 +.5871893,.11258386,.57790069 +.6973857,1.2690158,.86084634 +.58355111,.65986606,.95144351 +.70878201,.12862931,.25220556 +.72550334,1.4691361,1.1738092 +.58215682,.93848882,.18248405 +.54393361,.60476364,.37531401 +1.0589838,.90770239,1.4216664 +1.2249925,.3950228,.49008735 +.77274728,.9263427,.20368943 +1.5197105,.96045005,1.5629784 +.76204663,.49284863,.77783094 +.76453013,.55124945,.68035884 +.56714084,.17867411,.07850167 +2.2095503,.71888847,.45762801 +.85814528,.17959518,.62916825 +.5656892,.18053815,.08873125 +1.183514,.44479385,.5724076 +1.2880253,1.3050574,.73901755 +.7273503,.50552287,.0394313 +.5088412,.92661787,1.0500069 +.68092552,1.4388457,.50066458 +.58963001,.24783062,.30359237 +.91051916,.91880573,.5729915 +.58522855,.99883882,.28524601 +1.1613176,.42744229,1.2423792 +.76900597,1.8127938,.3156053 +1.842545,.23316444,.84931233 +.80082545,1.1193988,.21917966 +.50726505,.82795763,.97871095 +.51359963,1.4799816,.14321228 +.64620962,2.0223283,1.0124755 +1.2951992,.50520604,1.6087842 +.50061412,1.295451,.33519581 +1.0034436,.50909602,.06799873 +.7282832,.11614677,.54154654 +.76798169,.91327647,.02736157 +.44025657,.5846933,.83660941 +1.009882,.90093484,1.3080283 +1.352686,.7160772,.20491016 +.670047,1.2876395,.99759606 +.88564351,.749848,.20123374 +1.3762134,.01125687,.67308013 +1.431113,1.3384449,1.2111028 +1.229983,.12189108,.61766075 +1.0324484,.38116445,.34226064 +.85512042,.01910673,.60658403 +.81375867,1.1558688,1.0633919 +1.0386149,.87431607,.38838719 +1.0972269,.3146854,.41708237 +.63421769,2.1041839,.13462073 +.65606647,.45242163,1.0567586 +.34276038,1.0247338,.09491474 +1.6919582,.57963924,1.3555293 +.96707971,.45826044,1.8786982 +2.0915158,.32174826,1.8367202 +1.440006,.42970362,.3855716 +.95146837,1.6178764,1.3071849 +.52900038,.98719214,.50279427 +.8903668,1.8019287,1.8555532 +.84643484,1.3362851,.97575513 +1.2164796,2.0121049,1.8454654 +.60981496,.62615145,1.5376619 +.86682012,.58674419,.779582 +.65571844,.29928132,.22351552 +1.6910547,.0294446,.936701 +1.4942694,.03134352,.26853605 +.48987491,.59951673,.67711092 +1.6268099,.99686719,2.1507558 +.64557985,.60538189,1.1026716 +1.2177641,.29873991,.56026926 +.58808382,.81359892,.56574174 +1.213487,.49285434,.65564512 +.84484443,1.5407825,1.6451526 +.73441248,.57161254,1.0858907 +.93094427,1.4118538,.58894476 +.67129619,.24076169,.173521 +.13834633,.71715869,.13712692 +1.4444865,.40658769,.77738076 +.46117749,1.6546768,1.637466 +.67568453,.2716154,.19132708 +1.0390308,.37970055,.27394641 +.48555237,.20824828,.23098999 +1.4286249,.76867038,.60449856 +.46949417,.85452483,.12282065 +.45294181,.48082786,.48973587 +.63158833,1.2428948,.54700791 +1.0243582,1.0981236,.71700965 +.42023395,.19136095,1.2852016 +1.0945844,.43696691,.34558766 +1.4092839,1.0288632,.73231997 +.68808225,1.2937574,.91458583 +1.727632,.44436301,1.1072884 +.61511328,.77351542,1.3154051 +.88666744,.12925848,.81217676 +.49565531,1.0004711,.55566722 +1.45939,.22431889,1.6863096 +.81497016,1.3885635,.38395433 +.87706781,1.4605157,1.3498499 +1.2305663,.67639062,1.0233093 +.69831821,.86194531,.42741446 +.3616668,.70436619,.51592507 +.79646623,.38309704,.78836868 +.43911601,.66466817,.63656487 +2.4526714,1.3652998,1.8437062 +1.4100221,.94699208,.51516223 +.27409328,.58999107,.72615207 +.59335868,.96026957,1.4933794 +.41929575,1.0656217,.00495025 +1.3827816,1.0213542,1.6291542 +.75649009,1.8714128,2.4690105 +1.3570023,.27817315,.12996075 +1.0226855,.32847234,.78343849 +.57686341,.78156627,.76314573 +2.4187362,.14225758,.7694209 +.37713702,.56498653,.39816519 +1.2125077,1.2969757,.91599755 +.45175238,.63353059,.21014441 +1.2656125,.44453551,1.693123 +.91771354,1.3340015,.90537929 +.67421468,.54632499,.45828168 +.44680231,1.9137792,.58883319 +1.3488148,.06330262,2.0921734 +1.3991036,1.619176,1.930652 +1.2731708,1.4625183,.23646225 +.78588494,.02134642,1.0182468 +1.6678575,1.0964235,.54910572 +.87464977,.10533925,.0794707 +1.2992086,1.4467367,.45230532 +1.3345553,.21931349,2.2058468 +1.3303857,.67945966,1.7960405 +.63840177,.02717123,.46151196 +1.286991,.52013522,.24555917 +1.2343171,.36372628,.10671483 +1.0357436,.84050883,.42894994 +.41445901,1.7286338,1.0812286 +1.2434678,.20870063,.25148006 +.92874472,.21652146,1.2742483 +.53277626,1.3566193,.70811449 +.73085813,1.3825421,.77679744 +.53072699,1.05686,.18125067 +.35261359,1.0104059,.48527932 +1.4609388,.53663777,.82911966 +.79731847,1.7984051,.14391824 +.79728379,.75274767,.22646179 +.81673103,.92826792,1.1845657 +.68719078,.09611485,.08595838 +1.2183319,.36470692,1.4319674 +1.350887,1.3746064,1.1171957 +.68286443,.53834506,.51964427 +.60733781,.92919943,1.6105554 +1.0963002,1.7637616,.94506644 +.69892321,.14244967,.93974654 +.77663459,.0912567,1.1667803 +.66956127,.62089397,.71820799 +.31037962,1.4216507,1.4919029 +.55581474,1.3171278,.43731633 +2.1331258,.1632715,1.1168675 +1.4803613,.62369972,.60426208 +.6384886,.6103835,.92932992 +.48394094,1.6361801,2.1492122 +.51001943,.02648705,1.2110233 +.42758374,.7016143,1.1247873 +1.4477999,.54336229,2.2822434 +.5851292,.6873959,.43821074 +.372839,2.3102056,.57880335 +1.015904,.59822746,.60810281 +.57516268,.99986615,.74241412 +1.2965708,.68979882,.83279306 +.63010131,1.0556096,1.1059935 +1.657917,.25595122,.30582766 +1.8976931,.15173632,1.2570431 +1.2585669,.85922755,.11009827 +1.5346626,.09530747,1.5103673 +.66436209,.61878649,.72484343 +.53501112,.31226984,.22255878 +.61479876,1.0078629,1.71126 +.74030014,1.2452426,1.2882837 +1.2389017,.85099449,.10201695 +.69490795,.78365593,.4182962 +.56386031,.23717165,.18975149 +.88997786,.33915887,.75312336 +.71810222,.31148851,.91608643 +.63946027,.83417608,1.9454827 +.68253483,.45122594,1.4546773 +.58515868,.11497961,.26649986 +.47680929,.44296536,.64078066 +1.0597474,.4893005,.71815424 +.55115835,.72883814,.15934667 +.16755257,.98062952,.05614635 +.59469913,2.7524111,.39173134 +.49988565,.66380167,.086118 +.8121679,1.1326158,.29260513 +.7555985,.32171947,.61306099 +.9774956,.81560636,.26989235 +.60991256,1.2381464,1.4994703 +1.4000185,1.2731576,1.627355 +1.7437287,.93878507,.19031737 +1.1116071,1.0558434,2.712357 +.46374082,1.3994409,.54812289 +.7926253,.42105902,.00506476 +.85324268,1.7613498,.87771591 +1.7949702,1.0980762,1.2253986 +.61133012,1.5985317,1.2254376 +.19279502,1.1031912,1.1717684 +1.4905826,.36312439,.71035725 +.8789224,.5924317,1.5987977 +.41703046,1.0936776,.06179015 +1.3379761,.08460016,.67578673 +1.3373281,.41401338,.23188605 +.5021149,.18759714,.50239851 +.7245425,2.1894896,.66452742 +.50802509,.80904211,.89076186 +1.1085966,1.1350516,1.4411723 +1.2750324,.95255694,.04624847 +.72342645,.68854035,.76872458 +.56779785,.42996064,.48032286 +1.0648345,2.5320453,.00907242 +.48929157,.73059633,.38142377 +1.2505882,.24055982,1.0965235 +1.9712446,.6800408,2.3142451 +1.0695738,2.0004574,.46186756 +2.0140202,.6565543,.97263791 +.52376218,.4786655,.4535579 +.73312143,.45476489,1.1912939 +1.1564072,.21681963,1.386913 +.66689839,.2415439,.96360253 +1.0195865,1.2422952,.32369475 +1.2104736,1.0638797,1.59992 +1.050789,.68573129,1.6204183 +1.2958556,.07958434,.23063102 +.37635867,1.2677602,1.3322071 +.77182925,.28592244,.51352056 +.54002667,.15969417,.70650598 +1.8465569,.52093602,.61572065 +1.749213,.10189185,.38332585 +.53355804,.24741989,1.2038703 +.42080788,.62620885,.09981719 +1.6314113,.91973987,2.068803 +.90537032,1.0900617,1.2854895 +.85356087,.71433574,.5159739 +.33710689,.19228079,.99221738 +1.1547017,1.5951803,.10383739 +1.492225,.83872647,.8936173 +.65782411,.23895992,1.2060125 +.37745952,.5148242,.32689245 +.22608495,1.8226778,.80631975 +2.2645504,1.3101533,1.279618 +.69694411,.34319764,.97181706 +.96330899,.46181197,.94803025 +1.9779576,.29681836,.16567222 +1.3281912,.17703521,1.2858725 +.93461198,.6338592,.70138694 +.73535905,.40135573,.41376873 +1.2050931,.74529903,.86833858 +.50666793,.09458852,.46808026 +1.1740788,.75505783,.3858552 +1.6587023,.56405615,.62163767 +.92405737,.27305178,.471852 +.66461289,.8831881,.02107793 +.67990396,.064903,.51494123 +1.3678796,.24315359,.38522982 +.31391874,.636723,.88694743 +.61427609,.82849145,2.5031143 +2.2607554,.23839347,.68144355 +.95622792,1.0805661,1.1442949 +.68366325,.748309,.17140617 +1.579133,.26205388,2.1024167 +.78830602,1.0954325,.35682023 +1.4304074,.0802189,1.4261492 +1.3154581,.99421544,.51831242 +.79143509,1.0090244,1.6658002 +1.1944662,.45870835,.78815074 +1.3274169,.98289382,.74528202 +.80558477,.01681796,2.2270131 +.8290251,.01566042,.69123896 +.53924662,1.3342485,.02121824 +.32785306,.63441102,.79767057 +.71710511,.6125285,.21876191 +1.7653455,.72768373,1.8284572 +1.6787354,.68960647,.02072108 +.9121553,1.4838353,.24875599 +.46541669,1.5750917,1.443297 +1.1603684,.19072424,.39200619 +2.1838286,.38572949,2.2929475 +.5144976,.42472758,.48177091 +1.6778322,.35594955,.97838538 +1.0720405,1.5563507,.04090553 +.52275289,.28544863,.51015754 +.79699213,1.9684276,.83129005 +1.936568,.75695522,.25401853 +.40330561,.77470661,.1101458 +.31109818,.67124657,1.6281653 +1.8195545,.91295824,.97788245 +.90232754,.89630833,.58634978 +.66421953,.93891918,.02569861 +.87398809,.73935196,.0848318 +1.2741075,1.458493,.09950267 +.67788143,.90291551,2.0739868 +.6061636,1.5263878,.39953287 +1.0672865,.53947475,1.0268236 +.45351842,2.3225777,.20530159 +1.3236972,.54054475,1.8928406 +.90692668,.7171701,.95014821 +1.3271634,.39516297,.29623117 +.25978919,.06170374,.11208982 +1.2270224,1.7414301,.45091493 +.56701718,.92605337,.59890612 +.25397991,.39557547,1.0722127 +1.8177901,.9103834,1.119097 +.99994307,1.6584608,.55719209 +1.1812031,1.90359,.94799386 +1.6328385,.0780611,.56185777 +1.0073744,.60099016,.03296777 +1.1366622,.06854639,1.836674 +1.26004,.62078128,1.1695166 +.66121822,.42328311,.82991025 +.62203166,.25163356,.06427661 +.60490434,1.7196437,.25168438 +2.51483,1.0405612,.84574437 +1.0642259,.37282946,.64619264 +1.216324,.31884788,.4182969 +1.5417571,1.3908049,3.511586 +.51727752,.37959194,.06517874 +.87803608,.09275774,.77808556 +1.1470058,.05466513,.35247293 +.61227881,.04183857,1.7319608 +.75561675,.81757819,.34243224 +.84503049,.21636949,.19856508 +.69833266,1.2388252,.97448716 +1.035121,.68203654,.13795286 +.81466032,.49139034,.10623116 +.65604782,1.0841585,.27910952 +.62676157,.59614064,.22744695 +1.0641388,.17441743,1.0341412 +.47649613,.49443796,.40777664 +.65298365,.08923896,.83163978 +.79201495,.2638603,1.7284984 +.61727808,.84030595,.00382963 +1.2297954,.52203997,.23763475 +.44333697,.0639676,.03534269 +1.4755893,.61245752,.99339327 +.76337747,.94024874,.02976213 +.51409367,1.2504194,1.240037 +.38977635,1.144335,.96894879 +1.2149623,.2492316,.66552248 +.95801259,.44873944,.68817689 +.50555153,1.4554749,.02160205 +1.3334835,.96640626,.72456436 +2.992013,.12917795,1.6387437 +1.0212468,3.1990188,.19107351 +1.4633779,.9029231,.30436825 +.61370035,.3254869,.19197354 +.3981083,.86131379,.40047585 +1.09151,.49984144,.67417803 +.63279654,.81325912,.40911314 +.38398186,.14052475,.15783281 +.63509761,1.1832077,1.9893392 +.47396039,1.0983903,.1174228 +1.0506916,.74564329,1.2685577 +.6086158,1.3850491,1.2134865 +.86182331,.44362271,1.475156 +.40185756,1.3716916,.24426889 +1.1246871,.93491452,2.546432 +1.3492946,1.2373854,.76562096 +.85610142,.48734649,.39136954 +1.7046869,.40873869,.9716072 +.8788281,1.8478974,1.3676967 +1.4679177,.0229869,.73163571 +.62865669,.15919098,1.1973031 +.80187408,2.0207824,.41215913 +.36849458,1.6358024,.95957618 +.8487972,.41074803,1.4132877 +.69707605,.78172158,1.6991114 +.58040733,2.7741378,.34740382 +.86419687,.76366817,.41807986 +.87237457,1.1444961,1.8086269 +.39168892,1.404824,.21748112 +1.3091318,.60492785,.74638637 +.40895647,.65150123,.27662383 +1.0475368,.07262088,.01378417 +1.0576789,.83750463,.39638499 +1.1877783,1.4671217,.29085389 +.38457361,.51446884,.60121322 +2.0413666,.32670035,.81275056 +1.086672,1.399385,.74159687 +1.5998493,.23655577,1.6089816 +.92533473,.30708026,.08699317 +.56073828,1.5920788,.46994715 +.6610896,1.684147,1.6428877 +.6156305,.06185666,1.061928 +.80925642,.64879235,1.3648795 +1.3430885,.754331,.81898441 +1.5058287,.65047516,.13479383 +.5593614,1.0229721,.22821617 +1.340007,1.3913881,1.3268439 +.42862977,1.4582726,.53247532 +.44920881,.01054844,1.0004048 +.92590449,.33487771,.37193172 +.9574811,.50250222,.99220883 +1.0762137,.47238792,.54697667 +.65484661,.01070811,.707232 +.85845686,.50641868,.22187236 +1.820634,.70435037,.69659951 +.97397495,1.6924954,.04375542 +.26053266,.35616304,.85605261 +1.6925184,.45338154,1.0996559 +.43952675,.63270879,.78813971 +1.5511277,.37481768,.4889931 +1.1234715,1.6326095,1.6097538 +1.3390575,.86948732,1.6985391 +.95279681,1.1398902,.48225951 +.61452681,1.4328088,.43398644 +1.1477915,1.0982031,.90081718 +.31622166,1.6032439,.53216389 +1.285186,.30295152,2.1491364 +.96614206,1.119392,.10252739 +.96200566,1.1153113,.32905354 +.6153228,.53943674,.07989092 +.39886367,.85990304,.94955823 +1.1287626,.26495713,.11821977 +1.0607809,.51373507,.37729865 +.73634159,.87828715,.22869819 +1.3276832,.86221396,.88986034 +1.7169815,.08380125,.01083445 +.21484776,.87617875,1.8502074 +.69917829,.4121393,.9890236 +.82594382,.00859191,.75122494 +1.9394474,.95030429,1.0440116 +2.0227855,.28298769,2.2915283 +.49594458,.5118941,.83738795 +1.2828124,.68121588,.99728602 +.74197738,.79903027,1.3893461 +2.7728243,.25334695,1.2930223 +1.1795617,.29012387,1.3629175 +1.2901386,.91280712,1.4827044 +1.3195389,1.2451134,.31945839 +.54943947,1.2221143,1.7312673 +.58723388,.11326826,.99399511 +.94119784,.34298783,1.0033407 +.91045296,2.5105944,.47545276 +.28216888,2.2359611,.48192185 +.37818762,.56563168,.79584685 +.49319141,1.5085395,1.6811602 +.29748687,.48379702,.12348011 +.63462534,.20522603,1.0936289 +.6640248,.38576871,.01127277 +.89448419,.67237697,.86698813 +.6196514,1.5391433,.1202412 +.47633505,1.792387,.22976014 +1.5719675,.91272066,.59748783 +1.3756886,.29045622,.75688256 +1.9112927,.18950591,1.7840379 +.64472821,1.1895465,.68181557 +.85676212,1.2420267,.14862508 +.68155063,.03103501,.28438581 +.77852058,1.2451532,1.2616572 +1.1687201,.26255176,.17581714 +1.1191875,.91211735,.18685355 +.78200727,.98857122,1.2606789 +1.5055613,.78873659,1.3182626 +.9131078,.4050332,1.9026842 +2.0513696,.35075807,.39741255 +1.3101578,.02565922,.81412836 +.5406914,.28363748,.28754312 +.83302487,.21250079,.30431189 +1.3616295,.98766318,.15091712 +1.1713212,.65692456,1.7236967 +.5998365,.07583609,.13219578 +.5488922,.52138759,.7128528 +.3697227,.94586773,1.5342095 +.7314799,.01257007,1.6445769 +.51583817,1.0662839,.5384893 +.65668904,.51431873,1.0662594 +.87079338,.27461714,.7939308 +.45199128,1.5273433,.7941132 +1.0378428,.95200351,.80019874 +.73969178,1.540505,1.868111 +.74403034,.76884655,1.2123942 +.91296781,.58874467,.05235964 +1.6241826,.47070907,.38458454 +1.4725432,.52319011,.80706374 +.73577145,.45558795,.37881104 +.5174315,.87568981,.86667673 +.88107602,.18233595,.8151249 +1.5378242,.32631625,.36825068 +.71553272,.27867022,.7645827 +.44478663,.47349036,.63157683 +1.4000188,.23650827,.80545648 +.42545176,.66962699,1.6309488 +.7292928,.30155626,.38965385 +.51296406,1.145427,.99373696 +.90800894,1.3071181,.00263658 +.9406007,1.1482376,.4335813 +.55172217,.65440827,.66342748 +.32200959,1.3104365,.0882224 +.44180743,1.4451504,.2944354 +1.035972,1.8156345,.54690659 +1.3149949,.88659951,.09366339 +1.4945709,.13316781,.01579108 +.33535078,.97861396,.2963224 +.77948932,.17720024,2.0840771 +.80321768,.42459585,.58838373 +.81380768,.49116353,2.088016 +.78439806,.4341781,.87297504 +.44480324,1.416256,.13742581 +1.8225068,.0425273,1.8756451 +.53189488,1.8107426,.10470828 +.92865193,.22004499,.16448244 +.94819148,1.8541902,.44917315 +1.1982275,.07416088,.44365878 +.4159434,.55086251,.19737572 +.97331128,.01711353,.61501428 +1.8582288,1.4900848,1.3007418 +.7400676,1.6136018,.19993127 +1.1011664,2.1688661,.98639213 +1.0976099,.49186808,.91329728 +.64273494,.60793752,1.641071 +.56510926,.32416504,.88165715 +.35512886,.65700615,1.2089218 +.68785473,.74156585,.84194585 +.65622299,1.2450544,.04799773 +.65817986,1.4243223,.07849187 +2.9886852,.12398593,.34622997 +1.0256803,.60157007,.08965928 +1.6991751,.11190857,1.667671 +.89302619,.31037662,.21986439 +.65155032,1.3228253,.83793096 +1.0627817,1.3375963,.96846791 +.42263473,.82858174,2.3523248 +1.0205158,.41590859,2.1822911 +.82087399,.39793457,.13316584 +.53878535,1.4445381,.55352497 +1.0007479,.99696389,.9082501 +1.4737195,.81590005,1.1734515 +.79337239,.6148135,.75188195 +.88708724,.68740217,.1300576 +.7215146,.83343083,1.1374906 +1.9712642,.28244934,.33130874 +.54417119,.03065378,.33044607 +.50175061,.37620933,.68176926 +.85186299,1.2487619,1.9930393 +.7435018,.14224251,.94561152 +.40615814,.33478764,.36142599 +.93517057,.85153358,.91182046 +1.1123306,.19120241,.42577176 +.51751419,1.2623219,.2489011 +1.9268369,.2861739,.77654433 +.81650804,.59650145,1.0952676 +.22788398,1.7384512,1.1388817 +.44498948,.56921059,.84204079 +.60667325,.71170866,2.0581575 +.81107858,1.3491779,2.1406844 +1.0486268,.62336563,1.5384283 +.45195518,.99325711,.47701073 +1.8367185,.18168535,.00077557 +.84242922,.18958623,.52851921 +.33285572,.74243129,.50365053 +.75518173,.6783754,1.0678479 +.55498908,.46286059,.97265498 +.42670807,1.2025836,.30222344 +.50843004,.32147284,.11075256 +.80035377,.90495147,.30607074 +1.339909,1.0563721,1.8533862 +.97604603,.49930146,1.34867 +1.5137959,.06570949,.65244623 +.80324355,.20939052,1.6682465 +1.8352921,.15300026,.34592949 +1.1524637,.11433398,.64529077 +1.0889833,1.8231745,1.5412452 +.76426216,.00357709,.59904461 +1.0121641,1.6028694,.5506431 +.90618173,.54419891,.69742467 +.60605528,1.4899357,1.1814022 +.37484365,2.1769593,1.2277737 +.57207516,1.2818617,1.3812857 +1.8023888,.39211322,.01283563 +.47723551,.13592427,.10510118 +.66935302,.56956457,.76439392 +1.4528044,.87661468,3.7478175 +.89340355,2.0614924,1.5449686 +.86937054,.29155141,.40991434 +.99979539,.64027861,.68757576 +.55138796,.47218687,.61519518 +.83833259,.54820407,1.0193079 +1.3238688,.0646147,.28730838 +.69370317,.01703267,.09212433 +.94252886,.56976352,.47073802 +.62127625,.50368035,.43523048 +.51909717,.97450686,.93567089 +.74521538,1.3014465,.20164346 +.66383842,.88399435,.66712291 +1.2904562,.62106854,.44876605 +1.3951696,.77346815,2.4248265 +.25368284,.64624575,.04134322 +1.1909742,.4387559,.5467819 +.8935414,.82318768,.43982312 +1.2388944,.41106153,1.677264 +.43037906,.64619983,.05624185 +1.0358489,.56962515,1.1797704 +.73858428,.31589477,.47145204 +.33500698,1.9853124,.83542561 +.59643048,1.8120222,.90788594 +1.2514343,2.8807035,.91335527 +.99468097,.98479266,1.283087 +.5747947,.88943818,1.3960794 +.6594801,.13366046,.42781398 +1.3153333,.91204212,.72440021 +1.2635406,.16962635,1.5196205 +.32110588,.63182443,.12074597 +1.2340532,.57780803,1.0118556 +.81795655,.95570855,1.1336126 +.92076079,.22212162,.25547613 +.40512476,.94193846,.29720694 +.30517033,.37224204,.76756658 +.63146964,.54464768,.54584767 +1.6447364,.30273635,.82356785 +.84259186,1.334788,1.2259492 +.83780112,1.1402242,.09194308 +.60847752,.12637464,.74843737 +1.4126278,.65003869,1.6373134 +1.3860253,.31754441,.71706824 +.81484965,.18027054,1.8029685 +.51863261,.7386288,2.0732122 +.77227889,.94547523,.7028977 +1.2529926,1.0371832,2.067672 +.63587102,1.7314688,2.55633 +.62412753,.24998514,.25186538 +.63965615,.32595245,.74078277 +1.0383146,1.2644294,.69307544 +.75733462,.30208964,1.0954786 +1.0324746,.65174033,.09757847 +.74779131,.44164017,.24413636 +1.7845322,1.9908741,1.8052401 +.54421754,.5002698,.78237395 +.70072489,1.1108223,.3321127 +.93187262,.74911891,1.9599852 +2.4496138,.73546656,1.3632234 +.51367353,1.2857315,.0097027 +.968625,.73428336,1.8911642 +.4103123,.92227025,1.4429856 +1.3791411,.93642454,1.2239387 +1.7859763,.09362319,1.2969549 +.36561911,.73299688,.58262611 +.33691009,.60890585,.1194619 +.93820263,1.9514156,.2137393 +1.778266,.22003282,.07939295 +2.6241847,.0054296,1.7717669 +1.080692,1.0112047,.50951251 +1.0977671,.03486325,1.8939707 +.80777483,.18051975,.43650064 +1.4006323,1.3810735,1.0376402 +.57806839,.23277554,.79286639 +.5526068,.81043119,1.6080759 +.7386486,.49218586,.1157681 +.82109219,1.2974091,2.1677742 +.74599839,1.722914,.81937176 +1.2081925,.93566767,.75488764 +.74455036,.00389045,.57712701 +.84241505,.29558916,.70745047 +1.2600114,.31320107,.15409233 +.81071489,2.444755,.39184607 +.89517572,.2512339,.65503451 +1.2740605,.82796461,.6684505 +.37572709,1.393457,.07399946 +.3483328,.66293278,1.7290735 +1.0540888,.61552518,.25675201 +.92125081,.10662909,.1906698 +.85913318,1.5603884,.49212254 +1.1240675,.18045985,.9160165 +1.2982918,.4752623,.16719025 +.44276304,1.0233769,.49812258 +1.6252943,1.1307804,1.7635024 +.74886986,1.3909238,.73058699 +.91626648,.3799616,.24074411 +.40904488,1.4707564,.58556941 +.57677517,1.753289,.0000382 +.98044482,.52356381,.96469864 +.79744126,1.6523909,1.8021762 +.37917144,1.3604142,.6528129 +.76730195,1.6414002,1.1711442 +.33742349,1.9540012,.3508126 +.57848999,.6815009,1.068007 +1.4571178,.45453218,.06999632 +1.3631603,.53806247,.18500461 +1.5088898,.37366693,.54458396 +1.005339,1.0335673,.80485501 +1.3088912,.34221831,.35246623 +1.5890248,1.4553374,.54879606 +.57280964,2.3286599,1.103969 +.75638159,.35209578,.37828786 +1.3995721,.29475238,2.8111748 +.54331982,2.4077506,.06994226 +.63613311,.15935194,.4018136 +.56339764,.37169225,.12809619 +.80713954,.19482149,.14549072 +.67885947,1.078193,.40911142 +.79231745,.69603821,2.1111511 +.83260774,.56023356,.62096716 +.42322266,.43706853,.20031754 +.35743849,2.3853523,.18903894 +.60233841,.2842864,1.1781855 +1.4619883,.60823877,.73996187 +.72309974,.07896719,.03914938 +.93945978,1.3759911,.19431722 +.56714193,.23791247,1.4501087 +.85762614,.75136065,.88982109 +.79832363,.81799582,1.1521641 +.87437075,1.9158098,.40248569 +.31326555,.56326251,.89838209 +1.3512362,1.7445778,.17337115 +.64015753,.83816892,.25651913 +.41745427,.16099283,.70378443 +.66665824,.94739756,.55411147 +1.1100079,.74516833,1.1792152 +.76004599,.81103689,.14059353 +.92861793,.09428428,.55639101 +1.2540919,.12613867,.14181544 +.62838596,1.5843677,.9471698 +.63477676,.20082085,.22841776 +.39422685,.58072821,.30027756 +1.2064121,.93384373,1.5331543 +.39534941,1.6853165,.06518469 +.84645835,1.2422076,.18017462 +.59325427,.57812911,1.5798131 +.60086101,.42481608,.07754402 +1.0433831,.59358687,1.0434061 +.32163027,1.7409245,.45777467 +1.2129282,.36181742,.73259942 +.56655137,2.7666555,.82046625 +.78771766,.77952216,.10378938 +.53260997,.49646884,1.6535898 +1.3967735,.25894511,.97730247 +1.3977687,.83542683,.79127023 +.83808008,1.8558617,.29125057 +1.2320504,.19057996,.42966721 +.56501131,1.9956998,.20498548 +.87374861,.19537187,.3771533 +1.7955835,1.3697112,1.1243497 +1.2146609,.50968194,1.0745701 +.91939623,1.1420411,.18983679 +1.1916294,.62435633,.73845934 +1.1868149,1.0611382,1.1878905 +1.2639055,.51096206,.28237159 +2.0066542,.10606033,2.6535067 +1.1700477,.20119798,.68834855 +1.9325776,1.3252935,.63951903 +1.0930079,1.2344739,1.8604517 +.80797355,.82889549,1.4570444 +.69691025,1.6672777,.02365125 +.43094331,1.1743864,.16745578 +1.3840606,2.0584566,.19214831 +1.027648,.9143264,.03306817 +.97042263,.01422706,.54346516 +.84142116,.50717279,.10233717 +.44817191,1.877795,1.6645582 +.56377935,1.1247912,.37012196 +1.0184071,.15379492,.20392159 +2.3183882,.91510282,2.3341694 +1.102399,.03918096,.87013957 +.76574829,.87970216,.0436095 +.57658917,.70356978,.65569207 +1.1909786,.05970278,.68605026 +.5629038,2.1866383,1.4621554 +.71769052,.90601774,.89058952 +1.0246048,.47248044,.716832 +1.0357721,1.6383169,.40172392 +.96639099,1.9216954,1.0119531 +.76916862,1.5041582,.22194318 +.74143151,.00580472,.31578884 +.57886525,.46681907,1.6402384 +.92721085,.35225519,.90118201 +.57002192,1.8676534,.72298668 +.44539904,1.2754225,.59495269 +.86821487,.68745038,.66961187 +.86999859,1.136468,1.1741329 +1.9936699,.79740096,.96503947 +.55839482,.32732413,.15359511 +1.2198198,1.1292109,.09053808 +1.3763558,.08332394,.19183254 +.38015154,1.2295605,.66764555 +1.2146106,.65152545,.11871188 +.87626355,1.1358527,.85857441 +.71015502,.95801388,.15986665 +.70820744,1.7343456,.33480197 +.19387222,1.3385604,.25055242 +.85290874,1.4364184,.82274332 +1.0735334,.60509038,.63248686 +2.3708595,.38708892,1.9820899 +1.143433,.02781132,1.1134854 +.73665807,.52365762,1.1885837 +.71106811,1.1645377,1.182186 +1.1621833,.17182026,.19602229 +.17842604,1.4495738,.20612674 +1.9619911,.10714888,2.561591 +.95469407,.72440145,.20054274 +1.0140997,1.2043619,.02502504 +1.1606224,.79833165,2.120208 +.43770643,1.3196587,.63231279 +.69303297,.74753857,.4417584 +1.234353,.10868588,1.6534577 +.42623601,1.4077468,2.2450664 +.81408026,1.4529682,1.7357342 +.99687125,.70813848,1.2512464 +1.4826955,.47252075,.08774273 +1.1461527,.12132082,.77708653 +.71033934,1.084599,.44297536 +1.1045427,1.891063,.50998684 +1.9319603,.93962353,1.0084205 +1.1090536,.74049245,1.5163329 +.76577107,.06576143,.04214434 +1.374702,.39528663,1.7656048 +.6759703,2.6083226,.46774217 +.56244299,.15629067,.19124597 +.70245965,1.2120902,.74692361 +.63382649,.56907092,.51332465 +1.0768588,.33230686,1.0928782 +.94999143,.17988874,1.4560346 +.90550181,.28990957,.08655958 +.47555671,1.5409506,1.3222284 +.4468297,.52170832,.90100958 +.8184975,.54890297,1.3667273 +.51041057,1.5219253,.07589772 +2.168447,2.2464225,1.0226121 +.60734261,1.4665871,.26919916 +.71563237,1.4880499,1.3887097 +.63431269,1.1589787,.38058814 +.90129452,1.5682212,.20109119 +1.907528,.88585188,1.4277242 +.80920877,.42708069,.75537977 +.66825333,.33162579,1.5225769 +1.4685191,.15808009,1.0399489 +1.4256229,.7527181,.01822099 +.51827559,3.119791,.89576242 +.765881,.93557674,1.5028843 +.88508981,.1654815,1.6426027 +1.415065,.61840437,.48878163 +.52806831,1.0236248,1.6197949 +.70076508,.48633268,1.4568417 +1.3424494,.73844082,.2420217 +.85925569,.33909526,.29180813 +.92869511,.29877653,1.7013245 +.68045947,.37707384,.01888087 +.72256704,.3667023,.84052406 +2.2058423,.37293067,1.3704005 +.49062052,2.6213863,1.7951673 +2.183499,.94602508,2.3327524 +.69511279,1.1595187,.75169414 +.70274589,1.5911558,.71130606 +.6777028,.93733429,.18218264 +1.0281431,.26154559,.50716076 +1.0936668,.84215556,.04285925 +1.280388,1.3568595,.95880998 +1.2974131,.74981122,.03819153 +1.4843558,.59468157,2.0851232 +.55473031,.93435621,.21586015 +.84248075,.01072542,.43700218 +.87851928,.70545625,.77879941 +.65309902,.40171523,1.5189749 +.57644559,.46366704,.75029879 +1.3409931,.13062072,1.3455687 +.57664275,1.0276692,.68552115 +.78671953,1.0306845,.21355878 +.64156889,1.4858713,.48463474 +.3101362,1.5388871,.2059554 +.35920708,2.002099,.89308845 +.50143531,.42590513,.72794356 +.51618421,1.0606877,.58839362 +.64195082,.40450952,.3337621 +1.2084796,.07342278,1.2890573 +.89881539,.06142364,.20882513 +.8001337,1.1528069,.79249512 +1.8107122,.37608896,.65469871 +.72707638,1.593189,.49086389 +1.0824653,.88778314,1.1002026 +.5333127,.29688435,.99285941 +.96699819,1.0149841,.83988864 +.61969324,1.3957371,.49194285 +1.2773881,1.0955775,.00906312 +.42459997,1.1225785,.61749471 +.67753816,.46566453,.29716794 +.42424643,.34211045,1.3605798 +1.5908744,.56972125,2.0993988 +1.0253624,.86951059,1.3811829 +1.0681412,1.3624388,.4182447 +.82859841,.33643688,.76396442 +.49237672,.3245545,1.5600074 +.6575905,.476556,.37706967 +1.9262869,.19176039,.74906881 +1.7667199,1.2791372,1.8863923 +.20214901,2.7634509,.18370978 +.53286841,.95539663,2.2371947 +.8362861,.09272047,1.3324705 +.60198478,1.8730427,.21068619 +1.0555296,.55846981,1.8320224 +.47647683,1.2057006,1.4787514 +1.2471572,.19617785,1.3877957 +.78458864,.6952136,.6701822 +1.0478313,.46000261,.11334006 +1.3883951,.06172826,.8259357 +.76455377,.42286629,.18413966 +1.0230116,.54664613,1.3148019 +.7290598,1.7369355,.72423022 +.48906717,.27157048,.07792522 +1.2845004,.07856191,.34150228 +1.5889264,.23833085,.73015901 +.93238477,.88297517,.01269701 +.52037411,.63232572,.44724286 +2.1055516,.1895008,.20127048 +.77975616,.62429008,.12259622 +.28051056,1.097903,1.2673406 +1.7653281,.17554946,1.1722123 +2.2209128,.78243044,.92269198 +1.3885199,.15877687,.7263115 +1.9509104,1.6715992,.01294765 +.89879492,.23331647,.69275234 +1.0886632,.06245351,1.120341 +.7816594,.28742819,.39081216 +1.0884032,.19088944,.19153091 +.49619826,.03750677,1.9612525 +1.380513,.21583234,.92881005 +.62958661,.24587448,1.1335671 +.6159412,1.3110574,.68082947 +2.4193285,.14076565,2.4255001 +1.6525019,.27123844,.21423584 +1.3042856,.07692115,1.4664754 +.95189073,.40139136,1.0547211 +.44123378,.9001054,.97061856 +2.1105865,.25373463,1.1316731 +.5668875,.81159467,.52599443 +.74091284,.63887306,.52841393 +.81789448,.5926335,.93480937 +1.7440215,.1187642,.84983379 +3.5619197,.16655939,.80046675 +.74608841,.26135109,1.3438816 +.4538615,.45572447,.38887708 +1.3526574,.8958224,1.7914204 +.71112549,.4870828,.71073241 +2.382755,.32995611,1.3220042 +.98126631,.81846256,.68793839 +.90969399,.95500347,2.0782284 +.76835402,.15502788,.36226311 +1.0240559,1.633479,.38447854 +.51903876,1.3561998,.85811566 +1.6492228,.06746788,.85275388 +.96559411,.74283853,1.0885836 +.77385021,.99889086,1.7065947 +1.2514382,.06565369,.28539951 +.17734268,1.7852737,.12480367 +.3913499,1.3172726,.69463533 +.53435672,.27050235,.97183121 +.5065393,.88572638,.90182124 +1.1553311,.95726743,.72687849 +1.3369388,.03823137,.85213493 +.69842096,.87055585,1.0596505 +.74126017,.85740805,.98279065 +.79426483,.96730916,.19550863 +.61639075,.99558048,.72971687 +.63475179,1.859435,.72010546 +.52227292,.25708916,.77671027 +.68498466,2.595429,1.1392599 +.89485062,.79868659,.18659906 +.46650905,1.1914276,.61866637 +1.2069322,.41690237,1.9657853 +1.0052447,.68451988,.51857533 +1.1134645,.88995304,.82885523 +1.0722335,.9661135,.22233409 +.67359885,.25329679,1.3661839 +1.2153644,1.2023641,.07485303 +1.8597302,.48962387,1.0376825 +1.1437527,2.0639092,1.4464747 +2.0770281,1.0327698,1.1236018 +.83420871,.73970163,.95940615 +.94927811,.8255318,.89800524 +.39907321,.79640849,.05606944 +1.4546062,1.666266,1.1862012 +1.8837131,.53903858,1.9490628 +.5195613,.14289565,.2149874 +.8983924,.03254976,1.3743065 +.8551912,.15398248,.11047296 +2.0915293,.35085904,.63274605 +1.0477613,.12801667,1.467096 +1.0524767,.30466018,.25030688 +.7726164,1.5157824,.52314648 +1.0829486,.28936518,.06175214 +.42628137,.80822311,1.068811 +.89685251,.77634207,.70447005 +.89827622,.42662418,.86199427 +.37193242,1.4388173,.75952137 +.51199185,.49875956,.34198392 +1.4910183,.898196,.44455801 +.94697943,.22934427,.25632544 +.24312518,1.2079194,.84618156 +.69366966,.74049938,.28831271 +.81573147,.2539257,.34036255 +2.2478011,1.4339923,.99710722 +.79347986,.28634373,1.310821 +.61003179,.82784152,.96256096 +.72759336,.27426304,1.1726432 +.61582659,.09066903,.23313844 +.85843569,.17590196,.65769799 +1.5316913,.12022718,.84719148 +.36327505,.88617978,1.5361273 +.58983277,.69159856,.27481469 +1.9411009,.09941127,1.6288929 +.86604133,.79265515,.53246988 +1.7586621,.35983727,2.0370542 +.78588053,.59774937,.56058039 +1.2787904,.07760599,.23890235 +.53702533,1.2904248,.33111804 +.91263692,.94350955,2.2991774 +2.2891147,.57490593,.07599132 +.51884865,1.0839699,.52700533 +.71569637,2.6406,.6432822 +1.3627996,.46894252,.98372624 +.25800468,.62869477,.05019518 +.29657539,2.0359909,.07594305 +1.4404164,.73314953,1.3670979 +.3106386,1.5720257,1.5555415 +.63541381,.55086781,.07726358 +.68961323,1.8807533,.59469761 +.74881356,.54220487,.01085302 +.9973646,.17925629,.77930903 +.64381701,.01826327,.73964091 +.66808633,.09640193,1.5296326 +.96106636,.30668718,.25938816 +.72292399,1.2851882,2.2085228 +.78865175,1.2604068,.57514814 +1.1582045,.4857994,.88555072 +1.4066981,.35415727,.99489379 +.64351694,.54034939,1.6771117 +.99097127,.09516022,.59880619 +.7644635,1.0440205,1.0964996 +.35682216,.9643439,1.5109815 +.66848862,.30789547,.41614924 +1.3850969,.65681773,.04395607 +.56685548,.68324611,1.584658 +.74706034,.90512494,.31379714 +1.1549362,.6914984,.67531427 +.77526073,.91738357,1.2207955 +1.0335294,.38974905,.84063965 +.65492656,1.2931086,.54435801 +1.6072197,.70881757,.32722391 +2.7910759,.04960538,.34979498 +1.180399,1.0700756,.03272428 +.33357727,.69269601,1.1633913 +.83565224,.63871895,1.2746182 +.25524206,.74971962,1.2279695 +.41023619,.97349953,.68979904 +1.1807322,.37702703,.22202047 +.53304297,1.350728,.0913188 +.73369887,2.0850958,.16970366 +.48972789,.84398055,1.1430584 +.88096984,.58922944,.33414754 +1.9924075,.29692101,1.7701439 +.43576421,1.8768387,.00230379 +.80253213,.16289507,.66755569 +.38859394,1.5845183,1.1505282 +1.1687375,1.0173729,1.7276617 +3.9667645,.98586637,.27674366 +.58850744,.14783543,.04063834 +.54315803,.03651551,.82363016 +.57777274,.02477896,1.0036998 +.6709763,1.8907155,.91548697 +.57698357,.71279493,.11928878 +2.3380293,.65328914,1.1940761 +1.7573208,.44966107,.59738713 +1.0436517,.55950663,1.1236023 +1.4288964,1.6694258,.91191911 +.47758693,1.0238217,.33662824 +1.6532446,.71171958,1.4135434 +1.2205573,.99543877,.60808459 +.80672495,.15233094,.185388 +.37626163,2.4259051,1.9572989 +.51728205,1.1736834,.35655472 +.50442482,.17087482,1.7249557 +1.0908256,.90886603,1.2587565 +.82669079,1.5010878,.26221513 +1.2722907,1.1441171,.69092343 +1.1308095,.97717881,.45136812 +.51483073,.40643947,.3205554 +.61622519,1.3153282,1.767963 +1.2136643,.69165458,.46950703 +1.0759239,.86569058,1.9588674 +1.1125289,.17820819,.09607314 +.70441083,.94185397,1.7200636 +.49450989,.5784437,1.0905836 +2.5786222,.37839553,2.0397694 +.72950614,.43122812,.02128773 +.55353706,.70923487,1.7001062 +.82642889,.51993898,.08691439 +.99724645,1.4688026,1.7974192 +.89082478,.05057403,1.118117 +1.130527,.43418948,.83188579 +.74935145,.01032988,.73958344 +.42809225,2.0001845,.09789531 +.58437171,.15291389,.77206381 +1.0545624,1.2824409,1.0224429 +.64589299,.51796963,.27047497 +1.2465817,.18936543,.02881629 +1.6196712,.8857149,.32648611 +.86536411,.30238164,.14372941 +.9420447,1.0229504,.20707646 +.47701755,1.8392095,1.8590809 +1.1589787,.95148743,.15702656 +.87224284,.11472561,.560455 +.46414255,1.9675638,.7400013 +.65751989,2.0095532,1.0171505 +.39588196,1.5921515,.15236675 +.82656999,.84438171,1.5581889 +.96168855,.98403462,2.0122591 +.53625148,.41206504,.40206166 +4.1288139,.32349393,.51928878 +.47679076,1.2864434,1.2725922 +1.0291114,.44431932,.25500107 +.6157849,.60592507,1.0016722 +1.516945,.09735492,.02067488 +.59324424,.57312797,.19203543 +.68944487,1.3493383,.8902446 +2.0179827,.1113851,1.703904 +.42980663,.03306957,.57570827 +1.0222703,.48517305,.02365144 +.94383631,1.6154377,1.6266694 +.32002718,1.7177143,1.0084513 +1.49908,.21248294,1.2144191 +1.3158414,.9737821,.02227344 +.82814254,.1195624,.46763507 +.676072,.02515369,.28776891 +.37282289,.68830347,.11895617 +.95463772,.15457585,.31873081 +.44534708,3.2196397,1.902875 +.65001065,.18887488,.35591498 +.80378439,2.4737064,1.2006768 +.97184345,.02892476,.55576375 +.5823292,.19776008,.00124209 +1.1081173,.140854,.67800438 +1.1047898,.37499784,.40482782 +.57297008,.43947802,1.4006888 +.48293623,1.6686517,1.7161377 +1.1446472,2.6026965,.48117633 +.8278597,.05405743,.73900033 +.482427,1.3786594,1.2209957 +1.2642145,.0493528,2.3833525 +1.3399337,.79232274,1.1121277 +1.1207631,.1535729,2.6046614 +.6666295,1.0859953,1.4925418 +1.2980876,.00145775,.40524308 +.87986536,.43977012,1.254077 +.76495392,.48708531,.76999434 +.22819188,1.4512319,1.5559066 +.29798017,2.2539215,.5195594 +1.3279845,.01138959,.52542843 +.55204144,.6481368,.4711147 +.7371133,.13344627,2.5217731 +.97721621,.7278153,.00623685 +.71864568,.36413202,.14922142 +.32531696,.93266678,.40972811 +1.3275944,.8489246,.8918725 +2.1051261,1.8318485,.46489329 +.56928496,.74741243,.49478537 +.55132374,.15612873,1.7678138 +.64968761,.72797413,.60331527 +.7593706,1.1857406,.16551784 +.49452553,.65688524,.05986132 +.96591007,1.5824132,.95557957 +1.3949041,.20959835,.15273517 +.771495,.62332057,.90622162 +.99939771,.21866531,.05581684 +.5794509,2.9343428,.81273465 +.65157422,.96315393,.85563162 +1.469735,.44554454,.22227611 +1.4194225,.24906027,.39311674 +.69578976,1.0823032,.30349019 +.53261193,1.0459475,.36097992 +1.2294385,.96887116,1.3764715 +1.1397207,1.9087721,.16810686 +.93723419,.03274611,.50538168 +.744357,.18586873,1.74743 +.63142371,.21072381,.79897729 +.24490046,1.5476428,.55420046 +.55500339,1.1142922,2.1502788 +.71890506,.18451822,.28961782 +.67832252,1.7927293,.9086118 +.90010092,.84949688,1.5537602 +.74141497,1.2130596,.12005033 +.33788184,2.3243392,.53401343 +1.12519,.2849701,.17433451 +1.2978261,.09179766,1.7197854 +.43539528,1.0530077,.44601979 +.93269848,.8269831,.87451665 +1.1407599,.36045434,.37429256 +.4904154,.49419718,.53300175 +1.1086902,.20903444,1.0252599 +.77485998,.22771891,1.1736722 +.59170368,1.6182319,.67307908 +.69911185,.30343967,1.0096926 +2.0748857,.31309908,2.2554577 +1.1718546,.63879554,.76160627 +.76021426,.50391873,1.8420283 +.80867225,1.0876699,.84895786 +.94502427,.61050312,1.039107 +1.0197147,.91889116,.27442023 +1.1222663,.58553058,1.6130752 +.69646383,1.1204853,1.3299155 +.96995097,.62124856,1.8813118 +2.0781588,1.0724831,.20557193 +.71376152,.47507119,.59306322 +.38780766,.59484607,1.540234 +.78018546,.19297933,.04441155 +.49488493,.9383246,.35981646 +.81993491,.91146144,.15742901 +1.6409895,.07655831,.174844 +.95750074,.27538899,.09962275 +2.671581,1.4314923,.19386197 +.72482079,.99488215,1.4961601 +.66439213,.21772165,.05031616 +1.4083316,.14383248,.11707053 +.93901368,.00108382,1.6638083 +.55645854,1.1663232,.14825299 +.49092389,.61197272,.66494208 +1.6620335,.22147975,1.1746149 +.53694343,1.5457999,1.0795882 +1.4740634,1.8033045,.23203832 +.44418613,.78118419,1.4152151 +.56527168,.6130185,.05143242 +.78004981,.83141726,1.2084253 +.784224,.86593962,2.7871943 +.37118992,.93603896,1.1061737 +.65027047,.40953357,.13819415 +1.8283961,.97179607,1.7308579 +1.2547597,.84515128,.64643875 +.55125658,.52896634,1.2728169 +1.1026871,.75085224,1.0895521 +1.3176639,1.3245293,.39460165 +1.6092845,.07305507,.20821872 +1.3498074,1.2962391,2.5376956 +1.0898575,.3482617,.86617832 +.56443276,1.447313,1.3797939 +.81058692,1.3992742,1.0132947 +1.344237,.68173681,.03171533 +1.0134045,.92878013,.25329334 +.60913045,1.3042856,.77964609 +1.6918336,1.3337921,1.3585901 +.48226296,1.2043178,.70425779 +.46943917,.38255269,1.8487694 +.68953778,1.1761427,1.6464388 +.58068272,.70909574,1.1138139 +.77890427,.3023003,.10989342 +1.3740884,.06611765,.86001367 +.9509233,.00566387,.52901323 +1.0402988,.34143704,.79323268 +.65702095,1.1696074,.0114046 +.96432359,.10326313,1.1830203 +.78878974,.48110169,.26063642 +.67730725,.82501575,1.0848043 +.88866184,.12903113,.31825127 +.84618598,.15492781,.15544693 +1.809165,.82383309,1.1069443 +1.5203357,.51612582,.18592445 +.38461613,.87761155,.67545672 +.41291166,.23331388,1.3521676 +.51146583,1.4470852,1.1211672 +.42032847,1.7099413,.91006925 +.4016812,1.6904252,2.5114364 +.8164876,.72371464,1.3896437 +2.7799824,.50499772,1.2775239 +.52502963,.75305658,1.1445525 +1.5781647,1.2941917,1.6949047 +.76867788,1.9708254,.42430338 +.76073908,.83814111,.45904102 +.66934632,.99665682,.25761243 +.47825968,1.5392217,.06209625 +.86738539,.3352703,.33842238 +.94007139,1.0726489,.57971966 +1.175814,.4741234,.89016182 +.25107382,.92984292,.24896981 +.84407323,2.810707,1.2503852 +.7581791,.81512639,.89860743 +.8875908,1.0272188,1.2876028 +2.3220484,2.9098063,1.1184672 +.94560284,.35029326,2.1800349 +1.0421436,1.0400936,.98758531 +.23496687,1.1797267,.23123053 +.62881894,2.2680792,.21390008 +.85414627,.6153196,.21985398 +.63791366,.93413346,.63897616 +.46992222,.59292629,1.0160193 +2.6273277,.36385775,.72546364 +1.3078592,.07616026,.08150852 +.49760243,.85242973,.06011294 +1.0603984,2.2594832,1.3287771 +.53647769,.98958145,.66615012 +.97018446,1.512814,.56125373 +.7361764,2.5284592,.85512047 +1.6600147,.01953594,1.1152014 +.94424842,.38197704,.34803017 +1.1233221,.40862132,.77812411 +.66834728,1.0435399,.19416285 +1.3722267,.35536309,1.8651174 +.94521774,1.0802134,1.1383894 +.88351731,.81027594,1.1818225 +.49396972,1.4750849,1.5208801 +.45229517,.18721471,.48623949 +.49271268,.94788612,.07884541 +.77490828,2.0511487,.32597598 +.51403222,.94936357,1.7191345 +1.2569988,.4628264,1.6226211 +.74265347,.18674009,.0994149 +.89276572,.34794053,.41616194 +.6486795,1.5081175,.01014206 +1.0191174,1.1944339,.78802725 +.71765361,.05817345,1.2399538 +1.1896502,.30862727,.23064327 +.39291993,1.6322251,.44315625 +.88567258,.4688017,1.2261407 +.38079557,1.1488663,1.1520807 +.49539343,.92197544,.54683224 +1.3512849,.75440475,2.236985 +.46050919,.22148303,1.7585038 +.45053745,.12095487,1.1619706 +.71066914,.71907346,1.0273638 +1.0520831,2.0812438,.97853707 +.74813127,.29349885,.10268707 +1.2668858,.94128637,2.1783754 +1.5621342,.5975813,.08376246 +1.7886578,.09552403,1.7315426 +2.2071013,1.0476109,.64795361 +.2759569,.55475697,.21270487 +.5617469,2.10086,.51435619 +1.0495419,.65126881,.79803187 +.8805055,.4225427,.09032212 +.82262437,.68413998,2.6069787 +.27949825,.8358399,.70780717 +.61844594,.1104375,1.5891248 +.84250265,.81890748,.58174074 +.96070136,1.0109154,.54798975 +.37557323,2.0405529,1.0185012 +1.0665261,1.310698,1.4396197 +1.4548599,1.4275678,1.4564888 +1.0984206,.46020748,1.8970606 +2.0090235,.58936972,1.1733994 +1.180496,.48654099,.8007528 +.82729314,.0540416,.59689138 +.70210232,1.5777402,.24625933 +.91065354,.36212826,2.7640054 +.19261024,1.6331447,.30616558 +.62864354,.17533613,.58056779 +.59039703,1.3361525,.0142799 +1.3238679,1.2170283,.13774106 +.5055108,1.3075364,.33158388 +.56427649,1.1630815,.16505875 +1.2097313,.14200269,.36952264 +.73667058,1.3402346,.88359277 +.73566055,.47721992,1.0860224 +1.1772874,.43731096,.33398213 +.52427002,1.1451906,.06803354 +.68322523,1.5349151,.37949732 +1.0617098,.57799847,1.071875 +1.6393962,.46938371,.90760438 +1.5868001,.60728609,.46123991 +.75313669,1.1308536,.39901802 +.37723905,2.2796224,.4375233 +.44872503,.93168842,.70967406 +.65454996,.67376371,.0216667 +.79456586,1.6115254,1.5667079 +.76220588,.59346483,1.8716497 +1.2253062,.4005129,1.3399258 +.57308671,2.2815485,.59255966 +1.1024032,.94481159,1.8459874 +.92436152,.30788542,2.9489171 +1.6312356,.1550641,.22431102 +1.3484329,1.2280912,.84812333 +.98167438,.13841609,.37243831 +.80993377,2.9406417,.50365786 +.47553115,.98575941,.44319245 +.67418539,1.0088342,1.1218373 +.47252572,.85114171,.24710085 +.97494214,.84370384,.98611008 +.84494252,.27993594,.98132966 +.73970132,1.2049771,1.5910602 +.81316506,.69283406,.29294423 +1.1258105,.5788941,.35654635 +.81215688,.99476232,1.9246066 +.67551087,.82349729,.78059803 +.43043058,.90848636,.93711547 +.74603755,1.0018132,2.5479965 +.44238802,.79167592,1.524348 +.53651289,1.0136932,.30867067 +.77830291,2.1680794,1.4349684 +2.0776702,.13748039,.71890545 +.49274231,.04139223,.50599131 +.75551525,1.2492341,.58594102 +.75463442,.42065786,1.243372 +.62945022,.03820227,.75054979 +.93801336,.11680201,.1292666 +.99377918,1.5611648,.09578711 +.88487421,1.2265687,1.1389773 +1.2908061,.8335692,.85756423 +.69740017,.49317637,.01215532 +.9825529,.15717098,.86978185 +.5031974,.52029617,1.4301387 +.5539264,.16828526,.80194109 +.55128779,.83788984,1.0637777 +1.99464,.31226605,.36984273 +.33379504,.62488986,.85116847 +.67795761,.41012133,1.2540771 +.63347853,1.4830081,1.1251207 +.84235554,1.3422675,.77768847 +.61700389,.75467884,1.2036146 +1.4349908,.35157576,.64343495 +1.4557014,.47283113,.25378466 +.82013099,1.6236654,.27436396 +.55200766,1.6747491,1.1742265 +1.3428124,.09033944,1.1197457 +.58221535,.09167764,.89252533 +.47133973,1.0666412,1.343479 +.87430842,1.2601824,.60075162 +1.0138795,.36788063,.01734848 +.94909782,.58911439,.27317964 +1.7330816,.92815988,.45920227 +1.0485168,.56079789,.9905131 +1.9303157,1.0389638,.07149811 +1.2849883,.64038493,.02852005 +.48550939,1.0647538,1.0052538 +1.6478268,.03714115,1.8858721 +.74539657,.18833328,.25839211 +.39250203,.59118735,.9905733 +.32973748,.50453024,.06828272 +.74538954,.22964436,.70668959 +.84891798,.44211747,.60522108 +.78512855,.85296478,.89756544 +.80749224,1.8700642,.0516534 +.95569265,.66803997,.09145039 +.53091642,.55750224,.33151418 +1.2204452,.48491412,2.3282944 +.95284961,1.2402816,.28377765 +1.1297674,.16120008,.05228336 +1.4930831,.91837009,.75056659 +.89837628,.6838341,.750801 +1.4953086,1.1025404,.81854774 +1.4176819,.87450614,.03475535 +.60893086,1.0224308,1.1910041 +1.0556715,1.4413302,.93195112 +.64673459,.00758075,.07651614 +1.0165418,1.2565755,.37249415 +.47752033,.1110764,.04873648 +1.1805196,.83450118,1.6703819 +.44352195,.12530364,.86488878 +1.0092977,.29240275,.33783686 +.96012428,1.4447624,2.5836042 +.79740198,2.4174997,.0054102 +1.1983498,.61190537,.27204144 +.84325003,.33226732,.29902058 +.53082986,.00890833,1.126963 +1.1308429,1.4257851,.70733166 +.62096815,1.2985932,.19611687 +.34791679,.75738621,.94261502 +1.0272812,.45851981,.14403771 +.62086159,.02428954,.56357674 +.93509093,.47692001,.76107081 +.30578973,2.1883482,.76590459 +.60193391,.13464577,.62025857 +.70259357,.16760158,.82341864 +.31992411,1.4047281,.39567715 +1.005698,.2812801,.20445979 +1.6220866,1.3254766,.75520094 +1.1501382,1.156972,.5111568 +.32654117,1.2504938,.60826124 +.58839275,1.1451529,.48439607 +.79207607,.73864971,.70651802 +.72214836,1.3562067,1.9536765 +1.1081999,.0864607,1.2227699 +.71001324,2.011997,.69546526 +.54899863,.98023256,.31554369 +.48989502,.88305497,.07272846 +.74349524,.15198802,.82061497 +.76124311,.68270507,.90303937 +1.178987,.16099257,.58671679 +1.0670602,.8328814,1.8679403 +.84328135,1.4071717,.1524713 +.99304294,1.6935236,.7348236 +.93431503,.60453712,2.732466 +.64044322,1.0117352,.25843157 +1.0917489,.95239606,.00033641 +.71230533,1.1241965,.06125251 +.76030334,1.5999053,1.0419823 +1.1475806,.0752097,1.4090268 +.58816623,.02744202,.7958024 +1.5049361,.04583078,.8822531 +.24723661,3.3738754,.18239171 +.6502062,.13257751,.39080806 +1.6267181,.71711674,1.2071543 +.70522267,1.4590499,.0799123 +1.1164756,.99022107,1.1280521 +1.4909196,.75178287,.0231576 +.58226373,.22467919,.78380764 +1.096686,1.1888077,2.0384383 +.97499605,.26075199,.40471976 +.69476185,.42534346,2.4579581 +.57840918,.49746832,.30555207 +1.0573601,1.14179,.44053734 +1.0274485,.17631578,.36813281 +.48317383,.90616015,.8460259 +.95108102,.58273062,1.2968199 +.2776714,.9709864,.31511676 +1.7692316,.28384949,.42524256 +.58374506,.74679834,.10802609 +2.3154516,.64974284,.91841864 +.67366893,.80485619,.13949707 +.93121315,.61309769,.83192116 +1.1117299,1.6330773,.34104686 +.51105024,1.13214,.73406544 +1.1880026,.10853136,.64364846 +.60905141,.39027004,.24155961 +1.1393838,.83768519,1.0317463 +.58432018,.16611814,.39533679 +.65346827,.99889547,.55902969 +1.0324008,.28640313,1.7640387 +.70278681,1.1791009,2.0060864 +1.3863837,.88593459,.1519296 +.6336809,.2772944,.75884939 +1.695952,.15061104,.92298723 +1.1718239,.21867204,.60837174 +1.0233083,.38451302,.73441135 +.87583111,.26534119,.31443716 +1.6466356,1.0640574,.71510077 +1.4080411,.45934273,.4026914 +1.0254751,.23358951,1.6154411 +1.3704222,.22623877,.84460519 +2.0145764,.78565146,2.6001944 +.65497544,.06735831,1.3974807 +1.0652127,.59777301,.34959255 +1.7639162,.05471022,.81621829 +.35844086,1.7736775,.21274905 +.70781656,.62968996,.01928049 +1.5608161,.71977979,.80333722 +.48210822,1.3214877,.52229392 +1.1160185,3.5967288,1.5435621 +.58561584,.38763365,.22860716 +.58057286,1.1520282,.35002761 +.71355013,.29200808,.9066272 +.97669182,.04223278,1.2803858 +.46535054,1.3000139,2.0604953 +.67910754,.36996085,.24068549 +1.129874,1.426386,1.1406872 +1.9913046,.85040814,.49172433 +.86721454,.28271961,.69436009 +1.765594,.15194388,.28563153 +.72187661,.70840815,.0454045 +.79030511,1.3295729,1.5642462 +.87614709,.84364274,.52138132 +.74609933,.42218949,.02120465 +.96520269,.08320164,1.4734171 +.83738489,1.547088,.26833451 +.84721267,.0084985,.82489118 +1.2310048,.23185338,.012669 +1.0340949,1.4598249,.06024909 +.56033661,.2465643,1.7091092 +1.3284931,.06485312,.17230044 +.55887485,1.3440964,1.585257 +1.0075576,.19458988,.79471272 +.90157298,.19423824,.50753425 +.88703613,.33277225,1.2234686 +.76196006,.37968148,.4755336 +.55837908,.56034827,.09478308 +1.0989029,.42749798,1.0048461 +.93696945,1.1248134,.55428828 +.95538074,1.5735579,.38848475 +.52201488,.86831825,.12085349 +.66887308,1.2525563,.39579717 +.93145599,.54879631,1.227828 +.73994471,1.8995369,.54586693 +1.0200073,.54688435,.72888832 +1.551675,.04873997,1.497348 +1.2911426,.48731973,.04387723 +.76877269,1.6370992,.46970001 +.95879788,.97540508,.01874695 +1.1309209,.7208439,1.8229426 +.88646443,.34748832,.0646255 +1.5449524,.39244777,.74969829 +.90645958,1.0033903,.09452769 +.55548634,.84648376,1.0006422 +.94586432,.28538764,.02393608 +.88062844,1.4702961,.35910596 +.3481455,.75887317,.98462965 +.82538631,.15032367,.23715209 +.81096649,.47510525,.57188983 +1.3968986,1.0552867,1.3741806 +.94817538,.25337682,2.1240913 +.63777939,1.360561,.89165381 +1.2613359,.13247599,1.3619908 +1.3174063,.68470791,.52568901 +.30523171,1.6967665,1.2691249 +1.7998593,.67450301,.40874405 +.42928959,2.0338698,.76485569 +1.2282405,.04012815,2.3270713 +.67210634,.19836579,.83172544 +1.2056768,.61745859,.02280731 +.67401507,.22249517,.3739376 +1.2005446,.51257495,.09186179 +.88553786,.73514421,.21102994 +1.0198532,.35517344,.25156247 +.61883809,.0693184,.41815179 +1.2799957,1.1811674,1.4391196 +.90718935,.10981424,1.2260451 +1.1343493,.07090129,1.092624 +1.8413132,.72945825,.39984219 +.78627999,1.1775208,.32587575 +.78818327,1.002466,1.2386831 +.75361499,1.5711888,.60438929 +.36380039,.92829735,1.0145408 +.78222288,1.9211768,.17484635 +.52854195,.8339808,.4983977 +1.2143397,1.1126547,1.1899927 +1.0113013,.59596285,.68715747 +.65446984,.57756077,.45405306 +.70145602,.66618219,1.8750415 +.78705549,1.4625099,.27252264 +1.3298608,.63096496,.38760305 +.67302498,1.7291378,.32239957 +1.1658359,.67577252,1.0604743 +.61400761,2.4694158,1.4689151 +1.2187939,.17054996,.95881827 +.35846368,1.8737021,.14937487 +.71127933,1.8343777,1.3905664 +.81451374,.48292711,1.59062 +.93317369,.03539598,.18196962 +.47678888,2.4509237,1.1912874 +.96118104,.33653937,.11574838 +.66837751,.51852349,1.1475576 +.66806502,1.1947178,.33219559 +.71961651,.13701868,1.3368661 +2.0049026,2.1750426,1.3403514 +.35688843,1.0671462,.01265189 +.34789357,2.3839491,.08530386 +.58205639,.77289921,.01775995 +1.1162092,.94268362,.74151678 +2.0388856,1.6172636,.06426775 +.58168682,.22720302,.85035926 +.58991429,1.178111,1.0721191 +1.2588686,.04161301,1.3035437 +.78267064,1.077661,1.1316805 +.66752156,.12863945,.08149763 +.33850287,2.033099,.65799429 +.37939368,.80320107,.49403518 +1.0043566,.74718155,.71639858 +.81635895,.77031824,.3377564 +1.2491298,.48381359,.01623284 +.63371036,1.3838508,.19724142 +.66463484,.4310978,.15254235 +.8154093,1.4677782,.35762941 +1.6373557,1.9159779,.04728846 +2.2993976,.62301271,.48151816 +.74935259,.57392194,.67526085 +.32601624,1.3625812,1.1211654 +.64519417,.12149722,.11123044 +1.1664558,.87811239,.3186702 +1.4756326,.44429205,.02165789 +.80044521,.9970048,.94615221 +1.19112,.31247604,.48757139 +.67767213,1.4017921,1.7150152 +.74163305,.19304096,.58208858 +.53946601,1.2041163,.80121633 +.58140532,.92919995,1.094177 +1.1662262,.98188353,.19675474 +.34492947,2.6251945,.42200182 +.67658482,.29915068,1.0908009 +1.0073369,1.153445,.3403381 +1.2901462,1.0125907,1.2398767 +.50632874,.85744703,.10583556 +.58778351,.67401056,.32535486 +.33927657,.03039109,1.125767 +1.2331673,.48622533,.05773593 +.38925466,.12897853,.64085285 +1.1101056,.46800878,.28430467 +.60495246,.14183275,1.0241412 +.85236166,1.089181,1.1909652 +1.9241594,.03278176,1.426042 +1.8545845,1.2225805,.31227555 +1.0404112,.52822024,.64666519 +.66686101,1.4696137,1.8444407 +.38786681,.41802315,.19617809 +.88791697,.87905758,1.9133345 +.82108162,.66410959,.56553392 +.35735262,.37845378,.03891047 +1.1327907,.99184787,1.905329 +.86734555,.27855141,.75312452 +.87253657,.95780636,.14590111 +.23430247,.84947072,.14940253 +.88737161,.54514991,.92747792 +.90290721,.84225901,.32142148 +.60056118,.29083983,.14846001 +1.1833374,.75881347,.01437122 +1.0179825,.45237351,1.600481 +.53423968,.19198555,1.5629509 +1.1722717,.41479424,1.5120805 +.58579216,.0250075,.1540132 +.92220619,.88668257,1.2449523 +.63740068,.31828997,1.2334218 +.47207925,.72999188,1.0641855 +.5492456,3.5638421,1.5148965 +.64547599,1.205139,1.2666653 +2.3102327,.09134375,.80604613 +.7867422,1.000546,.05074673 +.41919462,2.0125849,.13394201 +.50105136,.05118157,.52401623 +.89828337,.40928911,1.4100376 +.47965681,.33939251,.71503332 +.41243636,1.1252191,.51064739 +.59706992,.00337369,.45442231 +.99642608,2.0819917,.97068304 +.74659683,1.1284789,1.0651606 +.71412857,.07108617,.56581218 +.79068289,.38908819,1.4235479 +.67578635,.28583828,.66337401 +.61508011,.89471845,.26631586 +1.0777135,.73005453,.10090293 +2.4932225,.45247669,1.6920118 +3.3436338,.41466522,.46325692 +.63377046,.14587873,.53804359 +.51563952,.46784724,.39161398 +1.5351739,.00941681,1.0292205 +.5887544,.17880537,.11619461 +.61931206,2.3854339,1.2523942 +.49186034,.5564204,.12925932 +.96920222,.23808574,.24889175 +1.4380347,.43413202,.894439 +1.3390236,.30702521,.22905514 +.27802921,.98557421,.97267739 +.72440823,.87812146,.47089947 +.66821144,1.3521546,1.2439222 +.51504099,1.3400987,1.2425848 +3.2384933,.1541957,.55163512 +.93656249,.33315628,1.6686267 +.23660296,.94974947,.87682721 +.45678948,.16716628,.17068622 +2.0891764,.57801447,.3121727 +.91853363,.09565183,.90108725 +1.8883104,1.1116091,.00612944 +.98601118,.00115947,.88719259 +.67816272,.20860469,.31960975 +.84011415,.42964497,.06967795 +.44576748,.16412709,.95289238 +.43113156,.95161022,.44743571 +2.5214901,.74169891,.47233815 +.48215088,1.6872974,1.0378552 +.29996952,1.1513935,.41968067 +.71070799,.45708144,1.4809702 +2.3007179,.70283681,1.3983638 +.46939348,1.1137777,.64198064 +1.3713094,1.0484329,2.2191602 +1.046034,.76229571,1.3095758 +.74340131,1.2847741,1.0250733 +.46378364,.42923942,1.6273341 +2.8717092,.33111718,1.0317766 +1.5414913,.04960656,.31190094 +.31501075,.49973229,.62322507 +.82370917,.89094609,1.2819835 +.6570569,1.0938974,.08728457 +1.6069214,.2647501,.44311321 +.55457056,.5367949,.57002721 +1.4803683,.12679448,.24272737 +.79916807,.7813076,.58498752 +.72075651,.22767698,1.4164879 +1.5570938,.25056228,1.0850277 +.92698483,.55227555,.3699904 +.69866029,.78442056,.76890314 +1.3539297,.46116899,.57226109 +.89785762,1.3530996,.4417163 +.79204672,.51992028,1.2090441 +.38574959,1.8968928,.16733964 +.45926315,.98568922,.86634656 +.63910641,.52258625,.04854367 +.67027254,2.4834203,.78701548 +.74273892,.92875288,1.0889456 +.83360291,.67135067,1.0664808 +.75442725,.57938881,.32307605 +1.2100198,.33407303,.75779022 +.55369699,2.1045942,.77292241 +.36733311,.28829875,.63902053 +.75174685,.37525992,.97991177 +.64481993,.01774048,.55567123 +1.422755,1.4039239,1.4626366 +2.4298418,.15682443,2.3798009 +.38818769,1.6381839,1.1877699 +.52051309,1.3476926,.51170589 +.9896811,.04170698,.87406464 +.86099702,1.7750314,.34231166 +.48801294,1.5179109,.29306171 +.67579414,.28281088,.86162458 +1.72306,.54253874,.99998557 +1.0087633,.31463723,.996401 +.38814839,1.7257837,.78371954 +2.6091528,.35035126,.94172763 +.4426963,.76656562,1.4177592 +.98357048,.82076726,1.5381439 +1.1578395,.70720233,.62521962 +.56650235,1.2669914,1.4889197 +.80281285,.61014837,1.156319 +.55745622,.72028049,.70291388 +.88942703,.17861944,2.2515943 +.96199844,.57996485,.27369929 +2.5891214,.15461972,.68667241 +1.62138,.41897535,.63560177 +.71837689,.43780919,.99507807 +1.5061847,.89094154,.84096787 +.24463157,.9218323,.87705629 +1.0623662,.58827946,2.9681087 +.47452144,.84399802,.1313448 +.86401649,.9381413,1.2260434 +.53673491,1.6284425,.66157562 +.93469312,.69715946,1.6991552 +1.3045011,.41995488,.56085272 +.76638608,2.2031877,.71095925 +.46542928,.44554426,.46064617 +.80049369,.18808411,.77562448 +.51116046,1.3148983,1.0477356 +1.0787974,.24171599,.09426749 +.9361193,1.2005872,.90044092 +.78552602,1.2132787,.51237415 +.68170657,.36580226,.0683691 +.8906534,.64371007,.45469373 +1.3959664,.8946776,1.1337475 +.96392275,1.5853062,.8180301 +.53905476,.21851794,.11451744 +1.2475511,.76006634,.44635776 +1.680232,.06096911,.17284009 +.79089179,.59645652,.21678535 +2.8054621,.69025436,1.0882838 +.90568263,.74631026,.27789914 +.78907484,.3368811,.82148199 +.59800707,.69889139,.16956023 +.48919693,1.5474899,.37127602 +.68058455,.14481336,.420751 +.92980674,.44128384,.06975473 +.61944281,.33235708,.3988858 +1.2105996,1.3813112,.94097987 +.6439047,.6461417,2.0538751 +.95948702,1.2210429,.45502751 +.46444063,.77727098,.27250762 +1.5474533,.33931348,1.3163316 +1.4652315,.17721372,.79641131 +.62813653,1.7422696,.10943165 +.65362271,.98562354,.7315098 +.74515268,.25824582,.24908241 +2.3203081,.1131823,.10014359 +1.7668248,1.3238677,.55692889 +2.2358288,.16364376,2.2303102 +1.117462,.56711446,.07439058 +1.1402491,.52244189,.19455647 +.78624011,1.0656974,.84713209 +.46862652,1.5773716,1.6287885 +.50161071,.07859679,.93888839 +1.8440903,.30543009,2.0274433 +1.1473915,.35376206,1.8530995 +.50899138,1.0550296,.43403464 +1.8648383,.87937297,2.145814 +2.8192626,.23229579,.62069712 +.25063029,.36662465,.42552869 +.66531234,.66266276,.25105609 +1.5006631,1.3485747,.3746575 +2.2067247,.17023857,.96047477 +.53063097,.33025445,.25002529 +.76132079,1.2053237,.46718572 +.60167285,1.2310006,2.183956 +.90367757,.90733918,1.5171983 +.63630015,.4259389,1.1423768 +1.9057135,1.4621465,.1783783 +3.6161902,.06153246,2.4213922 +2.3765265,.70399822,1.8795535 +.39188689,1.5543792,.68361097 +.53431714,1.4337308,.16484082 +.57229564,.10925307,.19313187 +.65431877,.05998213,.01797897 +.59672892,.6401043,.1680151 +.71552371,1.8392966,2.2881461 +1.8957714,1.1845929,2.9341771 +.43393556,1.3300553,.16446469 +.68798485,1.1852012,.06431372 +.89595944,.24068855,.50148188 +1.0411243,.56617351,.55793893 +.64380687,.64958303,1.6786269 +.84837263,1.1490532,1.4064107 +.56788742,.45952337,1.9716948 +1.7531739,.04254806,.84527429 +.72606551,.04982175,1.6519872 +.70865053,.46219709,.34010064 +.6267348,.48190935,.24681032 +1.1836206,.2566915,.89256019 +.8712299,.58410514,.09165297 +.50314455,1.5032993,.74449478 +.83941196,.63868741,2.170131 +1.21462,1.2377964,.76362123 +.8732652,.66071545,.15177305 +.35835869,1.5492572,1.2591971 +.99076987,.29103337,.09069936 +1.1552782,.75157045,.16521191 +.6823169,1.5137784,.35812834 +.72336105,.08383388,.25300347 +.69091597,.33703172,.52106386 +1.1763493,.11881231,.46267249 +1.1795284,.8986258,.68905165 +.66010155,.81149567,1.8521438 +.7129799,.58930687,.12079049 +.72199364,.85196019,.34881387 +.44114788,1.0713618,1.0830559 +.76618409,.54872055,.09837042 +1.0158674,.39602302,.31659356 +.77499155,.57674974,.30752813 +1.2899333,1.1199979,.63939683 +1.8901591,.20404949,1.43325 +1.0759158,.41207863,.00805226 +.38410553,.81951226,1.0507818 +.74330316,.48447018,1.9948977 +1.4645376,.7440207,2.1957415 +.48792093,.35906488,.93457074 +1.9060025,.9762767,1.2570162 +.54625923,.5304958,.04700051 +.75256691,.13723193,.05818395 +1.2855878,.51550938,.25490982 +.46406122,1.8510372,.72836216 +.67863897,1.8485687,1.7574206 +.35797485,1.0754989,.62168253 +.67204037,.69801183,.25707157 +.56715585,1.139981,.48090919 +.48461258,.17631069,1.4833326 +1.2497185,.1748074,.5153138 +1.0914641,.199153,.05917995 +.86952667,.19427216,1.243466 +.50380174,.69858655,.12940963 +1.7631257,1.0508868,.53859376 +1.0756711,2.278069,.04673339 +.85784385,.42748524,1.5923391 +.89717883,.07981338,1.8672671 +2.729953,.83183738,.92769227 +.94492125,1.1387296,1.0067562 +.54418773,1.0192334,1.2763899 +.67851704,.94813866,.32631103 +.8371747,.49678106,1.0356605 +.82876048,.32409167,.36215083 +.42341303,1.3641205,1.3319783 +.5919063,.78348957,.92912121 +1.0931705,.58075201,1.9101282 +1.5427434,.11219013,.42484558 +.48280378,.2790494,.16182141 +.95033345,1.7183534,.29206984 +.38595789,2.601318,1.0885295 +1.0049549,.13221975,.17103873 +.73251597,2.4235888,.84011016 +1.7331439,.83880891,.9835884 +1.1746875,.50870002,.4836311 +.45641509,.91537348,.32016308 +1.6439773,.87580414,1.6623042 +1.3472257,.49301814,.56626484 +.96868471,1.3826491,.41242445 +.95291441,.10603883,.5380112 +1.2563275,.11865252,.1789125 +1.2934705,1.6485052,1.5291678 +1.4715603,1.9668442,.22688212 +.58365943,1.433692,.52819037 +1.6352705,1.1236807,.51993746 +1.1422625,.02276463,.07860799 +1.8223244,.71970146,.43959973 +1.0306169,.13753393,.05379221 +1.3476073,.57384176,.4203764 +1.6739832,.54928324,.93352506 +.3517705,.90967015,1.2472653 +.4643638,.53937657,.86073699 +.81875079,1.6469027,1.6305783 +.54040263,.75785583,1.0870085 +.79604579,1.2365098,.61635268 +1.2205639,.16176317,1.8919639 +.78156685,.05897935,.05677553 +.93018111,.23346777,.15564831 +.20140339,.30813155,.74528851 +1.2933262,1.1859071,.31472133 +1.2745744,.82174189,.71800583 +.39928579,.65118319,.11297831 +.91076827,1.1016984,.99979454 +1.0192728,.6654978,1.0091444 +.34231662,1.0870133,.64318098 +.59927365,.30957265,.48042603 +1.2867746,.67816993,.03590382 +.90139529,1.5958519,.96093217 +.98195509,.50623509,.99698627 +1.0925978,.48038937,.0585571 +1.0005689,1.1888089,1.6367685 +.90040683,.52209724,1.4838872 +.69705543,.80826042,.30578652 +.70092642,.0689236,.21569622 +.36960693,.33840555,.41032365 +.5253244,1.4579312,.54929244 +1.8286692,.29677027,.4389546 +.9172035,.51268235,.49216501 +.9992297,.24376249,.60245999 +1.2506918,.27381917,1.7608973 +.6612035,.89514464,1.7317256 +1.7410381,.73497519,1.2426202 +1.9745035,.24406578,.77798682 +.84592079,1.4505062,.17813292 +.94700655,.61846033,1.2305953 +.6743805,.35942866,1.0380199 +1.0358574,.22463157,.67294126 +1.3237223,.10830843,.9596969 +.86283734,1.2223348,.94203228 +.63384493,.02180131,.77332922 +1.142438,.1064199,.60369916 +.61193669,.68164233,2.5007876 +.69576744,1.5506048,.63524233 +1.0247209,.03263334,2.2871894 +.31087033,1.5882184,.40540811 +.97011828,.22962789,1.4967269 +2.0810061,1.0658375,.57118076 +.92828433,2.8477796,.69338907 +1.4214726,.67255358,.54434124 +.87290032,.55033889,.0794906 +1.9166083,.84357072,1.5534735 +.86395895,.63781755,.25978749 +.50320068,1.1298642,1.4000598 +1.5941149,.04896295,1.5269697 +.50933201,1.3200645,2.0855617 +1.2327457,.14226144,1.3897216 +2.3288236,1.2586999,.03269549 +.95206347,.03274811,.94016149 +.74005264,.98438292,.3264493 +.70882486,.89483281,1.3856549 +.51617391,1.5509926,.06597904 +.49489842,1.4794708,.65020653 +.44238368,1.4854794,.74548169 +.37643777,.43935179,.07795041 +.75378987,1.7531986,1.6838754 +.69538549,.87876652,.82046522 +.68956286,.31886785,.63843931 +.43258617,.62197117,.8352753 +.91175007,.33625406,.54894954 +.37411024,.84203449,1.0918415 +2.1684376,.07619129,.42598076 +1.9246454,.48929483,.41076851 +1.7117807,.21028159,1.4977526 +.42314447,.55911665,.08938605 +1.2135197,1.0038878,.27141062 +1.9932693,.43047207,.53475832 +.88909123,2.1768637,.30482159 +1.5017604,.22738782,.70243459 +.24068214,.60580469,.10696729 +.85000282,1.4384307,.38082931 +.38044866,.09088261,.3821031 +.7697348,.48844892,.63253707 +.65730722,.66293059,.60735829 +.67508102,.67449368,.81923673 +.37660326,.13501322,.20266077 +1.0688779,.84834962,1.6914417 +1.1859387,1.5413296,.7287391 +1.731357,.83158364,.89877985 +.95363913,.21875963,.26110981 +1.0131975,.54915232,2.1734871 +.58401556,.05371556,.15906208 +1.4799809,1.0098739,2.004313 +.85264585,.06377564,.10560077 +1.0803096,.71767429,1.2481746 +1.2553048,.76089577,1.5049252 +.72950672,1.1211592,.38312382 +1.1305501,.89899456,.05717001 +.60163166,.86580182,1.6446771 +1.0245626,1.0303686,.49062316 +.69388128,.07710422,2.6674354 +.86536695,.24067627,.48016555 +.88113938,.63387341,2.5681028 +.69143513,1.8906732,.65004181 +.57835384,1.257493,.17901534 +.72563649,.09094027,1.2233064 +1.1561485,.8863465,1.01814 +1.0588516,1.220783,1.5419722 +1.7544362,.94358695,.89685109 +1.0051426,1.1574569,.74754422 +.66501052,.68979778,1.2464103 +1.327936,.70160396,1.3188661 +.30486625,1.3874573,.58968771 +.99128596,1.612382,.81979302 +1.747792,.98444736,.31313521 +1.3073967,.13056734,.69700727 +.35787159,3.0589404,.77889123 +1.0646399,.29755041,1.1667204 +.80098635,.06393564,.05804501 +.55088771,1.4183134,1.2789654 +1.6208952,.00005995,2.3208355 +1.4092806,.67751768,.68135596 +.94547096,.87251656,.85988483 +.80875995,1.5437118,.17206358 +.75540748,.61203013,.39284106 +.52567229,1.2441364,.40457827 +.42282625,.51454214,.04501229 +1.5232908,.64141112,.1324341 +1.1933019,.38366088,.25559246 +1.635387,1.0758569,1.9383787 +2.0021352,.07866777,.67877126 +2.9815101,.01594576,1.81776 +.5402046,1.4747557,.9899708 +.66660812,1.0719577,.41084676 +.91706931,1.2744367,.32086561 +.27043961,.06299113,1.0104523 +1.3138801,.02827668,.69574916 +.44662551,.8445575,.55262057 +.7064771,1.1926282,.42762629 +.50384841,.66834728,.34994528 +.95619166,1.0764414,.26833428 +1.7838204,.0897513,.37041605 +.49795506,1.0670242,.46047288 +2.2429888,1.0872105,1.2830892 +1.6234555,.54378053,1.1448573 +2.1641896,.23951493,.23361942 +1.71312,.02372137,.40852403 +1.1450373,.11274603,1.6262045 +.29951323,2.3075943,.70142274 +.60503263,1.5688568,.63514101 +.68834929,.77431121,1.3606887 +1.4039525,.65054022,.29240854 +2.3607128,2.4197382,.58432388 +.58440947,.6627664,2.7135 +1.0800038,.32016076,1.3739984 +2.1012846,.7919633,.20637629 +.67282261,.12390646,.21262395 +.51558608,2.2197819,.74304841 +1.91903,.52806731,1.2769137 +.9931944,1.7063757,.32995628 +.67160435,2.4508911,.79895861 +1.0001083,.55453218,.02428445 +.53382556,1.3124188,.46915506 +.36823395,1.2308149,.56803602 +.38804452,.24524141,.3305414 +.30224753,1.4751305,1.5752972 +1.9460619,.68349917,.03470597 +.74507546,.1682105,.0736601 +1.2316489,.73406505,2.083524 +1.1734155,.25098795,2.0225229 +.40231039,1.0380633,1.0067582 +1.1806551,1.8096595,.31956792 +.92955228,.10213592,.6782538 +1.3366894,.21140222,1.1287943 +.57777299,.89339302,.28400756 +.33960901,1.1406563,1.4664154 +.57950495,1.5200819,.34554529 +.33019046,1.3073602,.38213446 +.44205818,1.5620879,.71842592 +1.427786,.19850098,.53911183 +1.2101025,2.400413,.93765038 +1.8704099,.52115475,2.2084273 +.58028049,1.1767034,1.0257178 +.92331261,1.4998969,.30641693 +.73792361,.65365685,1.4093228 +.96909326,1.7463968,.71414656 +.97802153,.42842053,1.321406 +.32459432,.68672973,.37577109 +.51738248,1.1574616,.06644444 +1.1388259,1.4775425,1.3561246 +.40641248,.9103601,.79473371 +.33835113,1.1203038,.80210904 +.98307246,.5769485,1.6192223 +.94309169,1.0004966,1.2111166 +1.1370742,.23903409,.73524753 +.37644514,2.9477059,.49448598 +.83451314,.5585442,.70538338 +.64484861,.46811181,.57449708 +1.0544128,2.0967931,.01094779 +.88515629,.58534896,.35736172 +.23594503,.42079718,.54173572 +.71667185,.07673013,.74003398 +.77440361,.12752931,1.3267774 +1.0154763,.54351645,1.0876055 +1.1493377,.70279097,.61401835 +1.8515369,.32283636,.52941126 +.92182724,.70311368,.27915335 +.65945726,.33159858,.41201792 +.5806412,1.6530997,.29341425 +.54773502,.65476483,.46074611 +2.3975932,.65019487,.35745211 +.98750551,.02935614,.83891579 +.61701522,1.9800345,1.3613699 +.48271144,.26962329,.45219281 +2.1792786,.6182303,.84343882 +1.6453393,.05875621,2.6646773 +.4735627,.50200591,.15096375 +.73745318,.60795269,.29809596 +.33072064,.22082341,.62590724 +1.0880671,.27259589,1.2973013 +1.014389,.70546446,.19700482 +.57929793,1.6596097,.6950678 +.72574992,.22285074,2.2713243 +.66650343,.77055209,.19984922 +.93887358,1.2013807,.34946822 +.70186258,.65498214,2.7036281 +1.329146,.11798914,.78672702 +.78192774,.05063926,1.4669768 +.80031199,1.9332165,1.3686008 +1.689676,.57552705,.20405541 +.55016153,1.6396954,.14742806 +.78200998,1.9569652,.63348591 +1.4143737,1.10233,1.1991567 +.96549782,.43889387,.94740259 +1.277739,.29393202,1.35441 +1.5564686,1.5572771,.48263848 +2.4433041,1.7739054,1.4838967 +1.4961907,.20086012,1.7852626 +.82973154,.65896295,.83746125 +1.1585267,.20492895,.95889146 +1.5675113,1.3527987,1.0761865 +.49911638,.29999767,.03800171 +1.9889033,.14976339,.05680387 +1.673711,.34763774,1.8589598 +.82213635,1.4618803,1.198137 +.83283672,1.1809219,.96375063 +.32107164,.94477172,1.043493 +.57317396,.82279384,.2703509 +.81393575,.08999854,1.8324794 +1.034292,1.6502336,.77749249 +.91105405,.74391585,1.6636699 +1.2004793,1.648129,.412366 +2.1959385,1.8844134,.19694783 +1.3200154,.414729,.54632218 +.42569009,.9548823,.6522489 +.6607221,1.3086982,1.1041789 +.55376729,.5636984,.753735 +1.0888866,1.2028841,1.2953725 +.42192496,.62829609,.67469707 +1.2173745,1.0367626,1.206822 +1.0221017,.36852425,.0146644 +.86033987,1.221696,.78912217 +1.4265021,.65127625,1.5558361 +.78144742,1.6736307,.55045428 +.70747127,.92016739,.12127705 +.28340137,.10137177,.16304576 +.51957666,1.2596026,.22652892 +.87780792,.08191362,1.7346886 +.77069699,1.6047938,.82345428 +.78436925,1.0162146,1.9065367 +.46684483,.02569708,1.1185948 +.62867898,2.0511319,.93557032 +.63142941,.09905411,.36625162 +1.0393781,.8401058,.26313629 +.60807523,1.3147165,.47603037 +.68558754,.06863672,.05900604 +.84294771,.36551373,.23260504 +.5844084,.95162224,.49558401 +.52901131,1.3181088,.73260187 +2.1180249,.8691828,1.8643216 +.76199377,.08587304,1.5451079 +.40906477,.82242719,.39327887 +1.3214605,.24740784,.26195167 +1.5735077,.46964578,1.0998192 +1.4930352,.47339242,1.0245189 +1.2036354,.19885734,.02073592 +1.3503524,.31751605,.01782783 +.36040283,.28359987,.17904049 +.79829774,.50630179,.23769244 +.95458874,.95324164,1.4534739 +.57417194,2.2895944,.10150974 +.56672114,.43340719,.36661417 +1.8351765,1.0822562,.68203706 +.5090869,1.7394813,.04097531 +.4618306,.6457766,1.3273623 +1.1061404,.31352615,2.0181314 +.87950637,1.1331143,.46249425 +1.2013948,.48217857,.15281191 +1.0745049,1.5986157,.98589841 +2.1272001,1.1822098,1.0315967 +.83033424,.62498278,.73741508 +.65644754,.5166994,.57248551 +.82556126,.03375756,1.3084407 +.68111577,.69336754,.17995471 +.45252454,1.3905157,.42885777 +.4585364,.38239892,.53330252 +1.0931996,.0525135,.21232734 +.89267187,.6216813,.71839502 +.43566136,.4895749,.53775451 +.18707091,.83772453,.5389828 +.87081259,.76523503,1.2938004 +.63698763,1.3463152,.96749784 +1.4162469,.36756475,1.8868449 +.66189739,.92317797,.1990266 +1.4032905,1.3072493,.97166175 +.74476142,3.1903631,1.2629692 +2.2386314,.64544632,1.6241107 +.63338201,.16510191,.13992188 +.72887949,1.3070154,.42705921 +1.3527553,1.4515861,.7967056 +1.3083615,1.7020024,.54834132 +.88428588,.62772995,.11226288 +.76377484,1.5715772,1.5247945 +.66570761,2.6458114,1.0967753 +.30231232,1.1705047,.17602671 +.7857638,.65795568,.20781 +1.5007833,.70072359,1.6844385 +.48749498,.73930011,.63921145 +.46702792,2.3895426,.49198153 +1.8394307,.58875916,.28661104 +.77690936,.58286402,.53077765 +.64924689,3.085492,2.2180714 +.93272823,1.0010107,1.1720065 +1.114429,.46547478,1.0762919 +.38358883,1.5498286,.7529471 +1.2124156,.04200627,1.1464329 +.617624,1.4704107,.3082889 +.72838008,.72034467,.77497158 +.68511069,.02774243,.57507377 +1.5768551,1.2088814,.49711094 +1.090043,.54566251,1.7871683 +.71515481,.6912216,.33043291 +.78331943,.74805084,.49338546 +1.0628514,.34675467,.41546283 +.6491405,.40634615,1.7197625 +1.0211247,2.4004806,1.1522046 +.29623037,1.2862998,.35684277 +.685593,.61037275,.11593869 +.9417792,.68887538,.51086002 +.26791434,.81370502,1.8319985 +.46602321,.12942232,.38878943 +1.2265309,1.0121362,.57244293 +.91093298,.76705203,1.3237008 +.45848677,.32705151,.17721788 +.89316122,1.7294477,3.6672258 +.66632801,1.0562079,2.0384104 +.84547173,2.2421483,.08653162 +.65051684,.59040892,.95303009 +.6129284,1.3848773,.01730898 +.38488407,1.2413954,2.5041415 +.45100723,.1879054,.71575165 +.65178489,.74837848,.42875586 +.58950027,.80768445,1.0911664 +.6187754,.68949867,2.0789156 +.98337584,.07952279,1.0544055 +.43517807,.76653555,.90814469 +1.2556527,.60118785,.64780918 +.5179949,2.5370661,.41206845 +1.0286988,1.7585724,.57453275 +.94097598,.03414804,.59082885 +1.3332649,.59574993,.0268577 +1.1391587,.07156824,.57565754 +.4656365,1.795352,.41945927 +1.106907,.41118224,.13047912 +.44775909,.40187428,1.1985354 +.5063035,1.4614863,.19145351 +.62858753,.610244,.25505612 +2.6010863,.00783679,.84312728 +1.2305188,2.4273301,.57876991 +1.1060251,.37554791,.26638603 +.60233071,.43361959,.32493373 +.71229761,.12757896,1.2261348 +1.0497981,.01197852,.83760235 +.65487055,.26058249,1.1376457 +1.1647417,.14552456,2.1613319 +1.1321355,.269842,1.5849737 +.47138082,.94972705,1.0147494 +.3731219,.14446508,.5097614 +1.0793715,.32494172,.45624868 +1.2025246,.44904855,1.1773516 +1.330472,.60310007,.18165797 +.97162274,.1515434,1.0972445 +3.7943028,.8284244,.89235239 +2.6752484,.95443823,.48283677 +.61132366,1.1571533,1.0980194 +1.0290768,.75826613,.23568659 +1.5305563,.20028764,.16584027 +.74309255,1.0164721,.50950043 +.6077203,1.056824,.56350638 +.72824995,.29430733,1.3466487 +.81656752,.32490257,1.0584081 +1.2075928,.67438686,.00076187 +1.3021912,.37731986,.64625304 +.34064626,.21942392,1.7230584 +1.5004741,.65885695,.45517042 +1.6554884,.75058211,.04722094 +1.3787881,.41487742,.65785317 +.73161135,1.4108058,.10006721 +1.0577191,.19417544,.77884935 +1.8792674,.69346806,1.2187042 +.49232657,1.8467481,.36595124 +.64144417,.02089125,1.0533914 +.42871601,.05503265,1.2431244 +.49798066,.65728614,.21028646 +.71111184,.00170156,.89606963 +1.082147,1.1748482,1.2734521 +.41394333,1.2417764,1.934517 +2.4631178,.49040095,.74835 +.67337673,.49495233,1.0433913 +.80146576,1.5771561,2.0095024 +2.4199709,.87879049,1.3973449 +1.2511776,.23304925,.71527 +1.4745749,.32102694,1.6653571 +1.3678503,.0262918,.36239981 +1.513652,.15841232,.54507411 +.66045685,.02750147,.58834612 +.92129745,.67898131,.17961002 +1.1810473,.40222729,.49348431 +.72539497,.139456,.33722235 +.53033252,.20027735,.97636887 +.933973,.59086829,1.3211794 +.62752189,.34058126,.69841881 +1.8095774,.64292773,2.0239612 +1.3478675,.37103706,.61947333 +1.3704938,.69069649,1.2816725 +.63540116,1.3205338,.99866746 +.76299155,.66283224,.64670082 +3.5260563,.18764466,.52905725 +.8398252,.87427508,.15787079 +.67773539,.98772483,.83560501 +.47105455,.47789476,.71118322 +1.5528198,.43992875,1.268415 +1.6517295,.00020571,.85726698 +.79138591,1.5831449,1.9948943 +.7374455,.44464872,1.4142927 +1.9053493,1.894786,2.3781248 +.76387536,.03287392,.12389782 +.98114137,.81549216,.67110954 +2.3403521,.80389035,1.6940529 +.73469478,.95204264,1.565537 +.39301604,.93549583,.82151104 +.89951319,.27306008,.5844993 +1.5253077,1.1555668,2.2083113 +.48019464,.76321938,.16114625 +1.2863474,.48978265,.12586623 +.62075936,.13700595,.40568808 +1.0856598,.53725109,.32087264 +.87676953,1.6651376,.87192029 +.54778039,.30962186,1.5616293 +.60722861,.04366938,.89874467 +.99706196,1.1087632,.15954306 +.58715404,1.2324202,.71690633 +.81567344,1.4804013,.30135296 +1.2623709,.11182957,.95177016 +1.030246,.06161032,.02424394 +1.7446658,1.4621419,1.4257077 +.36583836,1.4501681,1.6228377 +2.2462959,1.8659649,1.1972319 +1.6283245,.66741272,.37407705 +1.5910691,1.0232878,.53153669 +1.1351791,.60100541,.01565681 +.49590856,1.2358581,.74705529 +1.3618515,1.1421905,1.6453634 +.67148582,.10421449,1.3794179 +.47192192,1.3320658,.41298756 +.91465984,.11902566,.50787004 +.68669333,.70189465,1.1704196 +.39121212,2.4660791,1.0523737 +1.2087117,.13979532,1.4111145 +.7297334,.64652523,1.397902 +1.2505452,.23212128,1.8776807 +.65790167,.50744898,1.124479 +.93372368,.49250561,1.2571786 +.45100405,1.0015836,.77485739 +1.3971697,.2984355,2.3263953 +.58242374,1.1561346,1.0092273 +.36838935,1.7107713,.52714744 +.34509063,1.1381152,1.2580413 +.96887215,.26064828,.37926006 +1.3400239,.4773693,.67472147 +.88832809,.32017422,1.032573 +.85409399,.72425997,1.8377564 +2.7323918,.46160749,1.7508095 +.34849226,1.3002879,.21281283 +1.7524314,.66855439,.58389793 +.91807176,1.2665228,1.5308572 +.36649002,.80810784,.07416611 +.68459515,.52397851,.3750835 +1.3109374,1.8138844,.39675987 +1.0337927,1.9879862,2.3908099 +1.7588789,.11007711,.59015482 +.69785259,1.0989532,.35112747 +.91622118,1.4316853,.23028931 +.6062643,.96560104,.32832749 +.82536587,.4189563,.98128036 +1.7076691,1.1697355,1.7124169 +.87076774,2.0284141,.41293648 +1.2830348,.82713936,.20678632 +.98993021,.89330394,.27521678 +.77135082,.41804488,1.9123901 +1.8836578,.84032747,.70501606 +1.4437957,.50710227,.00540264 +1.7292485,.08181167,.86056307 +.39341411,.54823334,.40389821 +.58127326,.85924998,.24265174 +.45324121,.61792288,.34670832 +.6110792,.63802747,.94667937 +1.5119466,.43351074,.9332992 +.87822268,.10476011,1.0222966 +.8606249,.60351359,.19373499 +.44257611,.84665418,.35280957 +1.1544723,.29992014,1.7153999 +1.3442582,1.7507053,.32554856 +1.2319973,1.6662415,.20940043 +.72350971,1.0344942,.71802031 +.86794207,1.0333528,1.368585 +.90558486,1.3926522,.43424309 +1.1800305,.11316355,.59412847 +.91780862,.87645627,.10839267 +2.1320703,.19578538,2.2540562 +.85272562,1.1169482,1.0544527 +.73356208,1.0781871,1.1055609 +.36617593,.44964853,.43416787 +.81673956,.51912713,.21364703 +1.5707892,.54631222,2.5779874 +.59289636,.12765822,.39733439 +.97519565,1.7768083,.86821926 +.61868374,1.1651282,.93782792 +1.0442296,1.0387168,.22883834 +1.0940432,.00912961,.22999429 +.37873338,.85616918,.79514433 +.97591028,1.532191,.39297061 +.70793287,.63935215,.5227534 +.99635196,.96662845,1.3442286 +.78748835,.65685852,.00470976 +1.7873869,1.2464337,.92263924 +.37329191,1.2876028,.39550161 +.94013644,.9609786,1.4541845 +1.1908151,.08903309,.53864047 +.48090902,.75682522,.16323607 +1.4744246,1.7498358,2.0993851 +.39737655,.94076607,1.0649819 +.46014346,.95252848,.75822917 +.79356739,.92649133,.73610387 +1.975169,.31050107,.22780533 +.693276,.32860375,.15532707 +.68953702,.6946258,2.537526 +3.2327278,.65548898,.36571595 +1.4972264,.05482178,3.2967515 +1.2381065,1.6038127,.47640381 +1.7488026,.65812491,.15143669 +1.6954116,.65592903,.69903914 +1.4580967,1.5302739,.26452043 +1.0101356,2.7281861,1.9636773 +1.3163027,.59830632,.55106539 +.67624046,.28317257,.23152203 +.39633293,.70366609,.52668174 +.57317739,.31033219,.14377433 +1.5416304,.55522521,2.0417772 +1.4113041,.43245235,.67880857 +.8832939,.63911841,.39169722 +.81014978,.07430955,.8333789 +.36344574,.57186274,.48434644 +.41183825,.89287086,.60013314 +1.0251126,.89313979,.79078933 +.76098139,.87213187,.25055997 +.44975027,1.0329419,.76245619 +.71981055,.28638947,1.2080143 +.8261367,.29826452,.15222027 +.78801329,.35856612,.51428184 +.66585595,.40454774,.52332661 +.37796804,1.016796,.50873651 +.9008758,.07670841,.60010432 +1.3137684,.03308961,1.1469818 +.37187968,.86403377,.41091963 +2.7996141,.04471326,.84350944 +1.1523963,.24787189,.95252994 +2.0714009,.29829901,.32427136 +1.9943146,1.1167328,.01379812 +1.3066656,.56365024,.22565786 +.91367051,.61084108,.83141238 +.38865449,1.3585316,.11999276 +.62661314,.67461457,1.1994739 +.88632983,.3576933,1.1506408 +.6925663,.92056471,.822059 +.51222625,1.2003227,.15491587 +.69122624,.49444533,1.2937427 +1.2569566,1.1215088,.68131531 +2.4703685,.2075025,.7769208 +1.2300793,.11441974,.26418227 +.52464783,1.8932431,.66871212 +.93473993,.07179703,.03150713 +.47339987,.11866091,.45257097 +.72996644,.22608711,.85336258 +.74755864,.13482087,.95670386 +.41098129,3.1516165,1.0445483 +.72592781,2.4930206,.44407074 +.34513513,.03662477,1.4731107 +.37231079,.73462315,.17298364 +.38592801,1.3485008,1.1253315 +.6930768,1.2522585,1.6944768 +.36796998,.83301945,.47808478 +.88206094,.84225022,.07974696 +.42577972,.29317741,1.5621281 +.75374136,.11642107,1.0795925 +.97880258,.38399721,.96355996 +1.0842646,.13906421,1.2946254 +1.0499715,1.7408952,1.1627931 +.81172018,1.1666884,1.1374971 +.49669981,2.1766027,1.3692229 +.51219137,.92841965,1.1863596 +.73839053,.16221208,.44048359 +1.8106967,1.9431789,.14382249 +1.4708173,.00247639,.63613376 +.5888165,.25845188,.81815033 +.68907071,1.0048944,.29756082 +.38237801,.6579251,.85238888 +1.3150694,.36029374,.25903524 +1.0366189,.0429171,1.5305991 +1.1271222,1.7834155,1.9433178 +.98443815,.43002299,1.4257597 +.86880715,.26453674,2.0773368 +1.0472217,.82269053,.08613521 +1.237871,.67571363,.5118681 +.72379841,2.1141058,.40867529 +.6121985,.59458603,.23718224 +.70967199,.38512445,.26308366 +.44824609,.12859946,.40386019 +1.6852312,2.1080875,1.4665409 +1.4962028,.55666907,.474915 +1.175985,.46288026,1.6632042 +1.1462624,1.5364363,.78097846 +1.0288718,.73649469,.77012947 +1.8450247,1.0596898,.63739202 +1.0406078,.58140415,1.522135 +.53212828,1.2242434,1.3865675 +.9526179,1.7016386,1.501717 +.89927895,1.1326033,2.4947102 +1.4594142,.49316221,.37297232 +1.100949,.81894448,.78492589 +1.3258174,.83342687,1.0430553 +1.0320861,1.7489368,1.1769513 +1.2208224,.22695077,1.2705914 +1.2854167,.9867434,.88499884 +.87389794,1.060514,.22973264 +.82555711,.81510461,.1787248 +.46483728,.99054308,.27053876 +.79523774,.20233869,.83284861 +.70926384,1.6581063,1.4508391 +.61351049,.06443571,.57299215 +1.7567902,.47851361,.84387915 +.96142486,.21568911,.66015241 +1.9423801,.15796987,.20537699 +.64230739,2.2439384,1.2074926 +.64271847,.08816713,.68333747 +1.460682,.8804935,.18247844 +.63095708,2.1129668,.14583806 +.72354096,.65249525,1.0307003 +1.5042787,.44328769,.39789931 +2.0334423,.32367831,1.8659098 +1.2784643,.02870346,.08120958 +1.4935961,.29637179,1.0417658 +.68141264,.94275189,.42081174 +.71723657,.69782087,.35854851 +.3822816,1.4829868,.93614625 +1.0100379,.38094424,.40277367 +.42021188,.90458846,.88220432 +.78156751,1.0689121,.89123297 +1.4857916,1.7277094,2.65016 +1.9930055,1.0489457,1.1986927 +.9258146,.92804585,.70686088 +1.0921369,1.0386462,.52535299 +.98841894,.437171,.92237188 +1.5343681,.09505394,1.9738632 +.94132934,1.1830639,1.1337483 +.57239947,1.9179478,.14555954 +.33599827,1.0969344,.54641361 +2.2618901,.1581225,.53834592 +1.0077504,.91452358,.1497171 +.34847348,1.981801,.07419814 +1.6494215,1.1247648,1.7974972 +.99010268,.19828796,.91759723 +1.9557857,.38931956,1.0507761 +.690759,.14463461,.23687936 +.43124594,.19992241,.70582834 +.21663166,1.9085038,.31901924 +1.9707101,1.0901251,.67718112 +.64428757,1.1401693,.6184758 +.52636951,.16067195,.32855672 +1.4746079,.39898137,2.0194284 +.46043983,2.5844728,1.7671145 +.70000809,.60877237,1.5645245 +1.0070584,.75170219,.53403675 +.6559599,.42831596,.68689665 +1.3133678,.90641136,.13801005 +.94345066,.51311245,.74692026 +1.1912579,.8676179,.68913335 +1.144279,.57906764,.58130702 +.71436581,.56416794,.44530337 +.45185628,2.235582,.55234982 +.49508097,1.3991201,.8798062 +.74706263,.1919328,3.0206413 +1.254847,.25432922,.552419 +1.1383126,1.0653123,1.620626 +.45337382,.13671155,.52746411 +1.4158899,.7315249,.03199935 +.42587904,.41076809,1.6431615 +.3096321,2.1013,.88115078 +.95100566,.45623982,1.0079585 +.71054088,1.5475777,1.2340377 +1.2215339,.6480187,.80714428 +.96580508,.75164519,1.4373949 +.62353854,1.0133656,1.2177473 +.5394945,.6591339,1.0368973 +.85869052,.46904082,.93972305 +1.1804838,.57850756,.07196729 +.27463074,.01695206,.00991583 +.48258708,.44606465,.36940446 +.85565644,.70973753,1.0513742 +.97374429,.32325518,1.2179184 +1.1799501,.35897406,.22519616 +1.6018232,.0424748,.27932707 +1.2882426,.24889114,.34641763 +.42940383,2.4529782,.24802627 +.54626355,.24834993,.01728355 +2.4432114,.13820471,.12362266 +1.2593132,.87850504,1.6094136 +.5980748,1.3984861,.74010026 +.73849013,.04101999,2.1952279 +.57729241,.59196788,.49613025 +.93057913,.36351934,.22210041 +.96363423,1.1475447,1.6161089 +1.0032688,1.5625099,.07905612 +2.2942352,1.1450396,2.3374455 +.4278056,1.1375706,.54764248 +.80299519,2.3354321,1.1405582 +.84726281,1.9430553,.65901063 +.77598392,1.1216514,.41476573 +.46111806,1.2559712,.28157034 +1.1820744,1.1223,.14362164 +.6591749,.99569196,.09820887 +.93723291,.66532075,1.0790797 +.57988102,.21779712,.55870214 +.77866526,1.1428869,.21797393 +1.4070801,.00268674,.60134664 +.62535236,1.0398349,.70655959 +.66904686,.30328469,.43092384 +1.2193737,1.0132111,.03325464 +.54863354,.40612223,.92475787 +1.1227872,.02600779,.83189948 +.81830185,1.7705573,1.2176276 +1.1576814,.76644026,1.7040787 +.72221164,1.7474794,1.4323876 +.66709215,1.0141832,.08673839 +.72743321,.02854266,.67058315 +.94031895,.31196934,.86409207 +1.2720349,.85431151,.66880137 +.47451926,.82196606,.60557929 +.78189803,1.1357259,.44158567 +1.1679364,.97765074,1.0539748 +1.9090214,.34580596,2.3418967 +1.5145896,1.1893749,.42405532 +.64586963,1.228161,.14942572 +1.2759907,.77841462,.01340862 +1.440483,1.1302561,.4554524 +.52520107,.30736255,1.0538684 +.68890813,.36994009,.67642598 +.72070421,.76345291,.35022906 +.55899166,.78861959,.14736327 +.31915139,.92573108,.07078673 +.40306248,.66176104,.5764665 +1.0969416,.33032517,.71203769 +1.4474265,.04471573,.56138284 +1.8772466,.36618122,1.1911089 +.47150063,.26171256,.55890261 +1.0792693,2.0647339,1.180678 +1.7081376,.50157792,.47728302 +.25178342,.47978661,.36284871 +.53303579,.45762839,.05908901 +1.1399753,.29909126,.31971406 +.69259704,1.9768285,.87636162 +.97744595,1.2310339,.07930985 +.56637884,.43603025,1.5092806 +1.4688544,.62551646,1.9329858 +.52310482,.20153244,.97331337 +.65206755,.05280156,.05737723 +.98924046,1.2586913,.95661083 +.80829764,.59289797,1.5211538 +.9066605,.84551731,.51450579 +.71431437,.29676169,1.68285 +3.1376911,.30649154,.8767727 +.71526231,.33569767,1.0481192 +.92745836,.0509181,.93170755 +1.4862269,.52390399,.58814037 +1.1786664,.00605344,.6039461 +.59770466,1.7631437,1.0936021 +.69584508,1.3091676,.25011867 +.62799034,.49917374,.01800815 +.90750932,1.6354976,1.5270332 +.63197782,.4388288,.81977428 +.64471174,.01679974,.0625956 +1.6361791,.74146237,1.753593 +.30238744,1.2427435,.45298137 +.68448288,.97368738,1.709672 +.43221091,1.2191241,1.4014963 +1.2087901,.32758868,.97609435 +.88541498,1.1845361,1.0884168 +2.3676494,.41840327,.31871943 +2.9700691,.20642749,.16686301 +.6133051,.36383306,2.6034485 +.41127668,1.1903134,1.9105657 +.61359609,.17848071,.64244791 +.46126878,.48369217,.02129141 +.39745139,1.1949016,.58640372 +.87393482,.51632872,1.6531431 +1.9658449,.33986923,1.1206342 +1.3955036,.18569445,.01980114 +3.0108037,.38126986,2.4218936 +1.1234792,1.394435,.38672262 +.78026406,1.6778261,1.7472701 +.61176901,.09476369,1.467976 +1.498978,.20019217,2.424504 +1.2163131,.04167845,.31090221 +1.4802513,.66007786,.27779117 +1.0162451,1.0063419,1.5661164 +.48851654,.77587021,1.2594215 +.51467441,1.6094173,.91694147 +1.4033332,.00893666,1.047598 +.39944902,.15801405,.00992279 +1.3097669,.02570572,1.7531966 +1.2921097,.15844881,1.574396 +1.0242988,.11951664,2.0033017 +.95101362,.16160206,1.7917937 +.69129159,.35173507,.21913396 +.65974313,1.3725651,.31284213 +.64787538,.01540228,1.3686336 +1.0132751,.07357747,.0524137 +.52647672,.44432278,.76885933 +.80264745,.01925687,.94096716 +2.7935387,2.1015933,1.9454054 +.83128323,1.8944502,1.8069841 +.99330793,.17670416,.9613811 +.69411011,.43724061,.37446886 +.69484183,1.0938796,.68515204 +1.5108027,.53463736,.00685565 +.69583854,.0080659,.36322885 +1.2554889,2.0129263,1.0600911 +.2888135,.83561313,1.4521743 +.52464037,1.2711805,1.4283965 +.71442188,2.2321921,.82960726 +.61812259,.62753213,.49159859 +2.2393706,.01261771,1.9020894 +.90664407,.10976038,1.0863617 +1.7408599,.16368463,1.1138671 +.41760038,.60920457,.07513467 +.38684119,.3179231,1.5524216 +1.406735,.34216866,1.2238847 +1.5554925,.82430313,.97686918 +.72883985,2.1225505,.21713523 +.34426393,1.5117186,.35336851 +.4493669,.82168354,.99897467 +.31491168,1.2238283,1.1458669 +.98451991,1.3556026,.92618463 +2.1859891,1.702059,.22453854 +1.4468966,.44881603,.656042 +.77748219,1.637002,.90541096 +.9631776,.84566499,.06051826 +2.7620615,.37050551,1.8333164 +1.3780376,.02483247,.13473013 +.57409805,1.7131516,.36161337 +.97576509,2.432023,.10535847 +.63651241,1.9936398,.19960778 +1.033266,.11329405,.63221056 +.52111469,.05852699,1.4337365 +.38194784,1.0685639,1.2299173 +.5461234,1.6875778,1.5358807 +.83214223,.77309964,.09108367 +1.6364464,.14623469,.87104036 +.94761584,1.1781176,.37083478 +1.1794806,2.5583933,.89649376 +1.1547657,1.1399983,1.1761256 +1.5459505,.1088393,.38066184 +.57088292,1.8512132,.23320998 +.68344583,.01169273,.36435014 +1.4824199,.66043011,1.0241862 +1.1800708,.41782613,1.3972714 +.97623409,2.0857464,1.1088924 +.30702908,2.9579657,.08997645 +.58987598,.96839959,.63815997 +.98876764,1.7234982,1.1369089 +.44386683,.38373058,1.9831167 +1.7059818,.3931135,.53875354 +1.5370273,.94283678,1.1965903 +1.1505651,1.5287805,.09993868 +.65261252,.72356982,.70490967 +.78497942,1.5195623,1.122353 +1.0731786,.28739417,.55851347 +.58117844,.82578845,.71594802 +1.1514182,.83635129,.04838387 +1.640356,.61308471,1.419973 +1.6098419,1.5857762,.58628555 +.81343992,2.4542111,1.2077096 +2.5991066,.52851468,.26510209 +.83849856,.58311178,2.2189647 +1.0721738,.46360422,.53989373 +1.8254741,.14590184,.67243473 +.69243656,.5137724,.90607761 +1.4589337,.14958405,.24721466 +.43275478,1.91217,.32959606 +.64825062,.28810814,.57823288 +1.3636573,.01190749,.47235386 +.52352426,.39910056,1.0480818 +.24873178,.6724504,1.0311486 +.7082417,.67321188,.78716429 +1.1209867,1.1113956,.4614766 +.90977744,.77291674,1.2711308 +.80520215,.37820871,.52280206 +.45836798,.75726691,.29978939 +2.119928,.28276899,1.1444829 +.25428931,1.7389136,1.8553612 +.8811124,1.4407645,.41502617 +2.4169643,.44180499,.68856398 +2.6640536,.10828067,1.8661675 +.67302652,1.0250183,.28035719 +1.0506082,.03283056,.87040659 +.86115969,1.0477808,.96388795 +.4475166,1.3371418,.47512233 +.40594509,.20072151,.79253783 +.6855629,.96160958,.69414316 +.53197746,1.7758383,1.5778385 +.67465033,.38939495,1.5882548 +.90609562,.12175881,.03825603 +.79655604,.58469386,.03675833 +1.2138407,.51579317,1.0987083 +1.1777638,.99835186,.79727017 +.54013393,1.2489217,.58202172 +.67513193,.59301697,.62521485 +.78805795,.37087033,.52926828 +.86159604,1.800839,.04544283 +.39335485,.90761492,.46554633 +.57776598,1.6433473,1.3781394 +1.8350442,.80208312,.85834443 +1.6178941,1.009166,1.4393574 +.96548362,.08634478,1.356927 +.87737078,.98823592,.79459473 +1.0675338,1.4452764,.21134304 +.58305227,.72233248,.39120507 +.30277622,1.5465993,2.4510322 +.76109502,2.6140644,1.306849 +.27108088,1.7057162,.86663665 +.39208585,.75821253,1.0707496 +.5417965,.02682774,.6247181 +1.078911,1.2462052,.72560458 +1.2192755,.67606195,1.2509455 +.75762678,1.1468804,1.3823863 +1.1001229,.72708227,.05275742 +1.4263606,.86045385,.27396698 +1.0141403,1.5133104,1.3633797 +.24415969,3.1415918,.5245134 +.85028683,.29057984,2.7414778 +.4437474,1.634071,.6736587 +.82831974,.49811622,1.0998351 +.60348278,.08598594,.39276023 +.91282719,1.3011373,.9178853 +1.2819827,1.7577081,1.1041175 +.73404939,.4565636,.05838956 +.76040113,.58920636,.52053141 +1.1075264,1.1293061,.19200404 +.55054632,.91519049,1.0328867 +.64248495,.52541303,.48623829 +2.6309558,.06997318,1.2811134 +1.5048739,.65237117,.50026856 +.51459784,.20824844,.52246955 +1.654083,.21695185,.88574826 +.6561742,.66467455,1.3497118 +.65924916,.83652961,1.8304243 +.50383831,.01035559,.42296245 +.49294678,1.9445647,.43744909 +.30400889,1.7758564,1.6708859 +.76215091,1.6907993,1.2445195 +.54625722,1.4195467,1.4327666 +.62620861,.55412852,1.4631973 +.3347501,.57810349,.33249097 +.74222896,1.6172705,.1266633 +.45099691,.98283387,.54817054 +1.1946814,.58737688,1.0784751 +.72372155,.26687953,.99659593 +.86377169,.51314433,.15408729 +.84338015,1.970709,.61881528 +1.1929644,1.7756624,1.430688 +.80274767,1.5174371,.16370495 +.43572362,2.2279448,1.2636298 +.67450789,1.1655987,2.2142157 +.35358466,.82031779,.15405984 +.35886482,1.6738973,.3360616 +.69891559,1.4164243,.99266449 +.92588953,1.4922645,2.980643 +.64343859,.76528127,.8369767 +.61968926,1.3945568,1.5925383 +.29149337,1.3332911,.71541592 +1.7657506,.84550749,.38731708 +.90643751,.44066347,1.0156565 +.74616159,.34590752,.47179391 +1.3586173,.40149579,.45244128 +.23191257,2.7306109,.91036249 +1.2174894,.07636014,2.3569904 +.62317455,.29415574,.07597301 +.81983653,.06145171,1.292522 +1.1606098,.32215464,.46271081 +.81523928,.24589765,.70484902 +1.1132441,.1006368,.13442271 +.53307089,1.0132791,.71531311 +.73561579,.21705316,.44651419 +.64036863,.77535029,.94833187 +.95978445,.57331812,.08837822 +.82822445,.07117653,.37351606 +1.0873772,.18449347,.12676954 +.46844082,.65195983,.36683553 +.95615713,.94750602,1.8025891 +1.6885971,1.6446589,1.7172395 +.68369729,.59612778,.68661729 +.4254586,1.4694833,.84061499 +.5181774,.56733064,.79673154 +1.1377528,1.7576942,.08245816 +.41503931,2.1240975,.7779817 +.71276743,1.8682201,1.880869 +.53061026,.13958707,.26327976 +1.3087803,.25091046,.90314457 +.79452006,1.2415094,.33267157 +1.0781145,.35348067,1.5637959 +.80886111,.07252081,.04062126 +.87192445,1.2615668,.72759771 +.33587533,.71062472,1.3560181 +2.3071822,.05933115,.5446648 +.55665357,.40952529,.49345389 +1.1539785,.63456264,1.7252353 +1.3073918,.25193687,.56004811 +.89018877,1.3894565,.15152214 +.98548138,.49009232,.3204609 +.92409096,.7369447,1.4235094 +1.9167219,.62577107,.36076264 +1.1674933,.03081256,.68466527 +1.3003053,.6815236,.61409678 +.59848605,.4610011,.01395164 +.56880521,1.0924224,.65463167 +.76662826,1.3150643,.23654104 +1.1057677,.42233254,.32126781 +.41984372,.63798835,.5242811 +.5816772,.4012437,.35411605 +1.9087333,.29171851,.20605594 +.26845363,.96682676,.35611788 +.396603,1.4199567,.10405635 +1.0642715,.41447786,.50664116 +.78191166,.9335732,1.1245812 +1.5548552,.00550938,.34297645 +.52691442,.85512003,.67652999 +.77007165,.0880496,.9499868 +.788849,.08125472,.19348377 +.48280253,.58129187,.66410795 +1.483978,.06103914,1.1336569 +.8410125,.15287415,.46003396 +.65531184,.13929991,1.1261642 +.65197462,.09933938,.71185962 +1.038511,.05772909,.52106037 +.85322259,.6583389,.05052164 +1.2556685,.88322527,.41948151 +.38457075,.77977969,.5969995 +.4942295,2.1479019,.90034733 +1.5517515,.61558975,.20331881 +1.915669,.42711651,.77430238 +.96317014,.55327527,.48375528 +1.1772272,.5331,.39698151 +1.0052769,.72293611,.75589209 +.31672273,1.449798,.74817096 +.83250684,.45113568,.7504734 +.81763196,2.2221353,2.0638539 +.51355034,1.966807,.26108682 +.70544249,.38594361,.8323719 +.58049969,.99098958,.65676261 +.64486394,.20471004,1.4168108 +.85638588,.65809922,1.6348756 +1.2460246,.14974034,1.8599427 +.77558875,.06375199,.93268408 +1.3067032,.16962684,1.3969634 +.24610249,3.7163562,.68424981 +.90301796,1.7743651,1.1418445 +.37821705,1.9495766,.67629408 +.88898714,1.0082653,.79368137 +.50266164,.18412746,.67444193 +.66383353,1.8038754,1.2117255 +.8903209,1.2378179,.49799119 +1.0537767,.51151381,.82706502 +.69103091,.1345013,.3552259 +.60900709,1.4359886,.3792731 +.8217763,.59003001,1.3800029 +.82051424,1.0575865,.5068282 +.56022153,.02327964,1.191661 +.89745004,1.6320278,.76473808 +.59275223,.78169172,.20038095 +.8759664,.40706695,.21248746 +.44010865,.14071265,.4662772 +.98318565,.59101841,.75143476 +.28154945,.02583411,.38170448 +.28831782,2.1596583,.37492657 +1.0111253,.85188396,.34584515 +.35364645,1.7702985,.43757695 +2.3480101,.53918875,1.7056941 +1.1388167,.92411626,.28030717 +.25289442,.82167365,.02786653 +.83078996,.05124412,2.073802 +1.0131705,.63233388,1.0009814 +.83113944,1.5013647,.80937227 +.49186806,.34021635,.30065369 +1.52645,.33854451,.4992976 +.69499484,.35734011,.42235662 +1.8244644,.46802456,2.250913 +.68962537,.67856264,.77489848 +1.0067906,.1002143,.9565095 +.57008139,1.1046697,1.1212131 +2.0960904,.61868139,.07492074 +.75262028,.15232858,.26640549 +1.9457916,.56693138,.0001319 +1.2715409,.50017452,1.5990405 +1.7013087,.51667136,1.3525449 +.6313736,.2441359,1.3548627 +.38584807,.76043802,.25360902 +.67019545,.48820563,.09193021 +.7731535,2.2880494,.85166618 +1.1967949,.30042575,1.4211892 +1.0267387,1.8479873,1.7843686 +.57067258,2.497039,.48933681 +1.0945258,1.4248211,1.8445478 +1.1880034,2.5779886,.51865531 +.64129089,.73126091,.90555249 +.74262391,.30291403,1.2316514 +.60354903,.94469281,.97767639 +.68124748,.45181178,.28554981 +1.2312646,.54842336,1.402752 +.83880461,.34056498,1.612424 +.52779723,1.0253195,.3896174 +.70760687,1.1888567,.88141388 +.55881944,1.905708,.36473639 +.55676057,1.063397,.21697316 +.53119217,1.2004848,1.4485817 +.62965132,1.2066944,.53529221 +.72453044,.08700803,.03074238 +.51746006,1.8975533,1.8695335 +2.508296,.52971679,.38219335 +.52521207,2.4578292,.34122538 +.64260922,.47109575,.75992802 +.80904768,.17545157,.67240547 +.66070558,1.9970734,.6335812 +.87942213,.16657745,.36847355 +1.3825288,.00581919,2.2159113 +.95123924,.38841291,.38083305 +1.3721973,.22394591,.40003253 +.51545059,.30415101,.11644008 +1.434169,2.0818804,.57857253 +.32375464,.95130402,.21471624 +.4190883,.30990687,.03505805 +2.1833974,.18409256,.8329671 +.35695414,.30852906,.98113632 +.91061973,.64885899,.74455013 +.95684672,.263071,1.0983846 +.71757783,.72593215,1.220605 +.95925775,.05130437,.60746354 +.44033019,1.0042176,1.3823681 +.68256656,1.9402162,.76989105 +1.094444,.82500427,.6160468 +.98266884,.27739295,.27017194 +.93241676,.8285968,2.2272443 +1.2410155,.44476369,.28116476 +.95514286,1.7658976,.36094517 +.40155862,.95373491,.32395954 +.78561123,2.3539206,.35017023 +.3280834,.78980023,.6985961 +.69112979,.94516511,.72699773 +.70035023,.93354749,1.2685785 +.84843538,.78623507,1.7445972 +.61548782,.80297476,1.378123 +2.1564187,.09097009,.24215309 +.57075851,.38078689,.70957241 +.40211313,.10287168,.25963247 +.62951697,1.7654188,.27172263 +1.3073206,.11791457,.06307336 +.30026034,2.7653171,.15945314 +.97926441,1.1748922,1.4592793 +.29973042,1.4695144,.37300164 +1.099044,.8867354,.87330165 +.46641916,.93647749,.33294028 +.34268861,1.102947,.23641725 +.4522669,1.4988448,1.1371413 +1.7255483,1.0124063,.62310654 +1.1147565,1.8218409,.20438838 +.94575915,.07980934,.34773422 +.60979032,.29736533,1.6524373 +1.6295238,1.2181966,.0673337 +.66755411,.21536259,.21332999 +.62715895,.3040418,1.1094554 +.39229851,.65204308,1.0564545 +.34332948,.98034485,.19471918 +.37257944,1.4883142,.29251815 +1.1435924,.45882937,1.5374017 +.52048161,.70478956,.04385062 +.95634966,1.5636021,.28340395 +.66559598,1.090974,.64049017 +.26861017,1.9922132,.82615412 +.81730226,.11521207,.22119217 +.90121804,.37925825,.91204955 +.34435157,1.0336982,1.4069601 +.68157529,.58728522,.50276011 +.22582338,.94351775,.3414724 +.87557902,.52001239,.46462459 +1.29547,.12736967,1.7051712 +.95641584,.17259279,.98726911 +.78718626,.32321888,1.1881555 +1.0501799,.50237799,.49439808 +1.87035,1.0464399,3.6502294 +1.2422687,.00057643,.48466346 +.80499345,1.5432168,1.1453395 +.84798264,.48826661,.63060471 +.68796919,.22635972,.66817688 +1.1350823,1.1114681,1.523387 +.87868605,.02383619,.52219986 +.67567694,.52473442,.39025496 +.80726699,1.2111918,1.7909537 +.56667898,.72928427,.59037364 +1.5550561,.27404669,1.1897191 +.43401903,.66781664,.63993805 +.7428692,.61048992,1.678872 +.60420931,1.9564332,.00314182 +.71848591,.18803694,.46021006 +.99286146,.07465914,.30327728 +.83419569,.39168283,.80296672 +.90175538,.7804202,1.1212465 +.90785939,.56875821,.10905583 +.83241273,.70650716,.60344821 +2.0392868,.02837674,.20500842 +.97356433,1.8925582,1.1385825 +1.0494216,.95605198,.99396951 +.60920568,.18069852,.73544359 +.57721336,.76596839,.13694787 +.61958521,1.0618997,.49325158 +1.2734094,1.6534046,.87334049 +1.0477725,.24742443,.04724551 +.52058779,.33360585,.8737555 +.85476885,1.2530655,.36864908 +.46444448,1.5972456,.09334621 +1.3303714,.99836897,1.335067 +1.6154058,.13226755,.40056048 +.32056978,1.1209046,.0951068 +.67821517,1.431806,.13309557 +1.1522226,.04857179,1.4302721 +.3395744,1.6968339,2.311486 +.18320204,1.3289019,.0592508 +.72188153,1.0539267,1.5769564 +1.2399296,.26193714,.60197068 +1.7430735,.06627759,.77930194 +.74547359,.01044596,.89943225 +1.6310563,.44253999,.26130267 +.51633389,.58295862,.22233711 +.32381481,1.2315048,1.0418303 +.67768786,.24301387,.22899321 +.88837815,.12756246,.27813729 +.76776827,.56724497,.63097145 +.34111453,1.1262329,.89337527 +1.2617316,.1848179,1.7020223 +.69433756,.09865442,.82365207 +.95177165,.93981359,.37251891 +1.6786143,.8344637,.07036972 +.42075377,.60682853,1.0017819 +1.1661097,.13438828,.92706971 +.74496607,1.6389944,.01060576 +.23509238,1.5647595,.87397131 +1.5739433,.90223275,1.3893836 +.36192157,.37906796,1.0895296 +.80436688,.74365692,.40403336 +.6515306,.13632523,.14522617 +1.5860151,.22779242,1.7581673 +2.4578167,1.0625782,2.5006107 +.73757711,.12076793,.44108552 +1.1286623,1.3975841,1.1054347 +2.3051173,.05271431,1.5612224 +1.1253199,.17703618,.5123354 +.58553635,.89370181,.12435589 +.49030995,1.6627901,.42168299 +.44302162,.05119511,.37268295 +.29215443,.81532384,.52492612 +.7878564,.53634904,1.8628844 +1.0602122,.56004824,1.6318725 +1.3366917,.3633967,.43713967 +1.1082785,.21846614,1.6402996 +.863278,.6178733,.4703624 +.43178647,1.4202453,.2925454 +.34124749,1.5947011,.19070433 +.59975561,.95866819,2.122641 +.5738171,.00513054,1.9424178 +1.3230414,.52085315,2.1708241 +.30179636,2.1712617,.84452856 +3.5085785,.64223821,.6407037 +.4983225,2.6495246,1.1934993 +1.1841436,.98205381,.07324039 +.45127185,1.4671814,.70849088 +.9796598,.40825122,.05426616 +.49545422,.24154766,.14801989 +1.1584592,1.0544983,1.8743992 +.51403333,2.3363078,1.1761001 +.92376418,.09521745,1.2796414 +.75985062,.65394224,.63543993 +1.6982226,.78918578,.99377109 +.47900568,.60842037,.22992265 +.58172319,.84819534,.0827429 +1.0310327,.82256503,1.9438497 +.90680572,1.6279375,.50658796 +1.3487136,.16462952,.0092605 +.84934829,.92145627,.47062629 +.66576951,.54907523,.24991337 +.78773708,.53843203,1.1795437 +2.0099855,.33668574,.71646156 +.41557929,1.304855,.83478995 +.74167304,.32244183,1.3563795 +.63903366,1.1190302,.86371226 +.56861025,1.1104327,.01236755 +1.9947837,1.2406415,.20726722 +.88398015,.19213172,.73523609 +.61312231,.98629106,.96510763 +.5830617,1.8719593,.53443205 +.8797348,.13440896,.58698965 +1.2138075,1.3241719,.81594298 +.9242462,.40478497,1.8348986 +.54037757,.35222644,.23093197 +.88445691,2.673704,1.4921323 +.81565125,.60437048,.78469862 +.91402127,.66667468,.16068967 +.38811665,1.4033955,.9915936 +1.0534171,.99060085,.10006074 +.53533251,.18305195,.80751181 +.59734737,1.3746407,.50072178 +.57880543,1.1789207,.0387137 +.4799563,1.0264905,.50791741 +.76220357,2.7526834,.78708379 +1.5086528,.54083498,1.7711833 +3.0137054,1.5488337,1.2822558 +1.0217759,.02362908,1.1001703 +.51628301,.16187711,.12751342 +1.1577823,.21172295,.76154606 +.35368677,1.1097174,.94419982 +.47268996,1.2590908,.86108342 +.86474278,.26632129,.24277915 +.93524406,.11119364,.5078176 +.29706331,3.2464486,.41653539 +1.1082729,.66622129,.98235245 +.61166779,.52042873,.55055619 +1.6223927,.78829216,.97113186 +1.3154217,.28745336,.86883713 +.45547853,.5861399,.30492337 +.84520515,1.0696194,1.2484405 +.75972107,1.8763844,.61302002 +.3842719,.09537379,.70746682 +1.9356822,.37505783,1.5185673 +.49070922,.42116794,.83823937 +.99145714,.62830475,.79802518 +.51391158,.12699163,.21034558 +1.1139396,.17355676,1.4661525 +.61240002,1.3257004,.85061547 +.39855126,1.9597787,.91251036 +.85238835,2.7233094,.25152992 +.90132513,1.7370649,.47563508 +.62632664,1.1413234,1.4316302 +.56199713,.3117894,.73502955 +1.0815936,1.4107158,.10966527 +.69806581,.29097881,2.2339088 +1.3438207,.15252829,1.006245 +.56690153,.39953017,.10067909 +.56547992,1.7658202,.19155416 +.68344968,1.8219464,.27159179 +1.4035686,.06157098,.85708415 +.52307572,.19959925,.82483501 +.79419233,.19609559,.96901149 +.84250791,1.0653753,.05262471 +.45683943,1.6790844,.40448508 +.62086451,.89747749,.63029592 +1.4735731,.48673645,1.8104091 +.63480736,2.037874,.98255837 +.90316614,1.5105382,.23788273 +.34669645,1.8277242,.53312912 +.57918589,.75400989,.37941318 +1.0455758,1.1346229,1.6132767 +.80334555,.29166828,.65271267 +.76828972,.31645268,.34540614 +1.2637002,.19283063,.13343485 +.79458279,1.4161005,1.7589962 +.56796283,1.1341587,.67568954 +1.0229743,.64129447,1.5380253 +3.698682,.24707718,1.0417465 +.9227755,.16291429,1.5250129 +.68999334,.13550402,.00495775 +.7499128,.78288685,.88690563 +.87759577,.57623448,.67459176 +.83361036,.79341306,1.2317473 +.64751973,.06733138,.12594145 +.5480827,1.2743039,1.3796548 +.72535538,.25517493,.77693663 +.44165032,.55870667,.02077415 +.7611779,.47005853,.2195845 +.44908638,1.0654483,.70374993 +.84855028,1.2324767,.1981778 +.78380584,1.4384594,.80564435 +.38077349,.04198388,.80219101 +.6330877,2.0744067,1.8474038 +.72893875,1.2160752,1.2341736 +1.3851455,.25781665,1.3778962 +2.1731492,.27086821,.11940463 +1.2028446,1.1770014,.73475519 +1.3458462,.68610492,1.3680227 +.72541656,.22338721,.60973386 +1.8658365,.59150671,.63902574 +.49853192,1.0476598,.10228135 +.76466903,.14525754,.62005309 +.7286568,1.0975813,1.0431635 +1.1600613,.61909735,1.1604169 +.77922952,.06773858,.43765891 +3.1779015,.54853863,1.4063103 +1.3994719,.82367436,.24713171 +.84347076,.74980524,.37484917 +.9885705,.83564952,.79750558 +1.094166,.10613467,.30137934 +.50833965,1.080637,1.5027859 +1.507001,.24818473,.11938016 +1.3193316,.67974532,1.8947444 +.65165589,1.8885484,2.2414401 +1.8028786,.85835384,.33599743 +.76725709,.19549787,.85915953 +.79371333,1.5218807,1.0571558 +.46041925,.63749635,.07888957 +.79687606,.51840602,1.3935086 +1.0850969,.81921398,.46964643 +1.6477681,.93498898,1.019327 +.93503432,.18048629,1.2078888 +1.0784074,.01368612,.06884694 +.71226814,.58439319,1.7149301 +1.0226802,.07733398,.35767821 +.54421141,.67234584,.29522753 +.48221374,.90203244,1.3889486 +.35269315,.87503494,1.1531702 +.56679781,.13678487,.05751889 +.51538104,.06438175,.35431473 +1.1786115,.04364438,.46554648 +.76988916,.12357809,.59015744 +.40017143,.51051612,.21629624 +1.2637686,.1693691,.35523207 +.67212365,1.1824114,1.598927 +1.787884,1.0073328,1.8509792 +.85429706,.57549933,.78880127 +.87313071,.61033439,.58148274 +.28965576,1.4616683,.56513718 +.26472163,2.5653906,.30507279 +.55495753,1.4463418,1.1892643 +.92532736,.46177333,1.8062619 +1.4389244,1.5691537,2.9232531 +.68262312,1.9542251,.81574958 +.96813116,.12848186,.93177356 +.58767641,.43982681,1.3181866 +.49415994,.8428145,.58768866 +.92724634,1.2416561,1.2411851 +.98929839,.02996665,1.5787835 +1.058924,1.0675726,1.4319344 +.39079355,.48803329,.24915618 +.52865394,3.3187101,1.9698507 +.27972076,1.4192613,.34069724 +2.0898167,1.6665335,.59194681 +.61742986,.11250173,1.2695394 +1.8145875,.87831915,1.0724565 +.82537865,.14399027,.23437595 +2.5580507,.11301886,1.1563137 +.60622407,.02495952,1.0242726 +1.0510522,.55900682,.54401161 +.79483899,.72925141,1.9468267 +.64301659,.57925695,.12191245 +.75329736,2.2114742,1.2020132 +.71938976,1.3386075,.14667932 +1.5120322,.29396219,1.1469359 +1.723681,.350369,.00341944 +.34556297,1.6420458,.1868469 +.83713291,.96822048,.3171316 +.80116569,1.2897989,.59240184 +.59939783,1.616765,1.696494 +.5022148,1.4650262,1.0792238 +1.5003945,.57061559,.14319934 +.9210346,.41391827,.17045568 +.40728601,.98763058,.92975341 +.38200975,.44343392,1.1609753 +.62771765,.58562524,.39617322 +1.0833413,.26034688,.13060607 +.21546179,1.3771465,.08054496 +.56947635,1.1339584,1.2903218 +.87841072,.41533904,.29547381 +1.2459924,.48635118,.11121413 +1.0465451,.22069822,.15817575 +.98029864,1.3658066,1.5883975 +2.4294353,.10945585,.49298926 +.99028071,.06339361,.8755753 +1.4697184,.15732214,.25839515 +2.0080241,1.1899321,.85524685 +1.1714706,.86756766,.08852005 +1.9506391,3.3279187,.21823936 +1.0519317,.05032597,.22755646 +1.9033566,.27659145,1.6624021 +1.4304386,.60038051,.5378714 +.87267791,1.7256796,.91641606 +.67221001,.33195419,.6874997 +.56827303,.51177403,.29337421 +.61994859,.20286937,1.1073874 +.92711843,.55903581,1.6754399 +.67493611,.3000298,1.2689314 +.7251425,1.0010494,.57227383 +.91168957,.71200079,1.1250697 +1.097685,1.1231359,.17201639 +.62592759,.09499514,.1126922 +.56168258,1.7996535,.5900848 +.90965192,.22610221,.05975048 +.77900053,.32076432,.52214969 +.47511778,.47219389,.65007132 +.6490888,.30218621,2.076051 +.92006102,.88005949,.19505658 +.60906787,.10593218,.20936706 +1.1668918,.64167217,.84113948 +.63043016,.6407228,.47705542 +1.6863642,.50591553,1.4984866 +2.0911876,.18586619,.77134123 +1.6860627,.92133176,1.4161757 +.5419759,.04587364,.24510969 +.48325787,.85396966,.72330307 +.97495594,.86015476,2.2119086 +.40198974,.25624204,1.9783503 +1.2932071,1.2848317,.8896058 +.62712251,.2565875,1.0654328 +.47830039,1.3405646,.68934772 +.90183812,2.4572446,.968554 +.94789886,1.0815228,.89766284 +.74776316,.59711331,1.3770685 +.46664825,.91682581,.05297144 +2.1273956,.57061687,.7913005 +.84264327,1.3163596,.55277323 +1.786301,.09330254,1.1651955 +1.1827467,.3820706,.79339962 +.71421183,.67305901,.05974999 +1.545118,.1481252,3.7643939 +1.2669712,1.4170284,1.0696889 +1.2312735,.57276764,.02668456 +1.2909269,1.8980685,.16122854 +.5947659,1.1116788,.27097028 +.81599362,.21684817,.54613919 +.45976658,1.2449445,1.578032 +1.1478206,1.0007944,.50199637 +.84141573,1.046691,.54475845 +.98665227,.3195075,1.6240104 +.93376813,.3758811,1.1554622 +.52467407,.84582578,.96437427 +.63173045,1.2573573,.49332201 +.80741936,1.3215764,1.3565537 +.51427889,.72902709,.26179099 +2.1741592,1.3153854,1.5106472 +.91735876,1.1785004,.95266954 +.81610569,1.0071868,.77464827 +.4495255,.81021256,1.000369 +1.3336409,1.0474497,.41280833 +.22012453,1.2226252,1.2363053 +.57215852,1.5692364,1.9297912 +.77434302,.03390481,1.2752771 +1.0399351,3.4961237,.50837427 +.66783654,.39458931,.89423716 +1.9482736,.04083091,1.0078269 +2.6525279,.14540941,1.1855976 +.46354753,.56064645,1.5392056 +.58752941,.37306884,.48767765 +1.5727003,.91604521,.43960598 +.57415533,.27005578,.59356095 +1.1024508,.05914817,1.4414522 +1.2084988,.46427256,1.0268797 +.93827446,.44465654,.2503626 +.57324939,.72983067,.26296444 +4.1074601,.09570053,1.9662907 +1.4839621,.86708821,.66712164 +1.296767,.08143433,1.4901282 +1.1847731,.50788748,1.1193813 +1.1037664,.41381997,1.6427144 +1.1031934,.78872047,.18888939 +5.2937859,.00062067,2.383483 +1.2690925,.73195569,1.9329431 +.99924168,.15603714,.44384891 +.60000547,1.2269548,.0091658 +.60574891,.70757338,1.729087 +.70081782,.51896735,.75604559 +1.7220869,1.5152374,.23983644 +1.0390615,1.5338018,.21694527 +.56274385,.2848936,.95192475 +1.8212665,.41815254,.85963678 +1.2824202,.0605674,.97460241 +1.235245,1.5427953,.39226794 +.87156795,.72170282,.82696581 +.83384448,1.5055432,.11577349 +2.0659212,.80726625,.28565878 +.69945458,2.5076921,1.4308453 +.84984842,.412905,1.5173468 +.6576174,1.1309689,.40498487 +.68493301,1.0917795,1.1292878 +.46897558,.83899306,.42519669 +.74455696,.95140278,.73172081 +1.0772947,.99212358,.09530725 +.22978046,1.1224835,1.2509675 +.79191512,2.4853208,1.5613866 +.55338681,1.1659694,1.8516979 +1.5900642,.88118047,.26219386 +.95273794,1.0267149,1.3422637 +1.0214479,.84814434,.54153906 +.7501017,2.2074709,1.8086128 +.48829187,.39046416,.27331467 +.54933282,2.7798373,1.0034273 +1.1744691,.44605865,1.3289163 +.94509264,.17763773,1.6165896 +.25748729,1.5912177,1.2809662 +1.2456598,1.2401956,1.481741 +1.0261527,.03888703,.15454377 +1.468585,.45022924,1.3529683 +.36886464,.22432018,1.6527716 +2.9642655,.86858364,.89769853 +1.2080447,.07295123,1.8467069 +.80899252,1.4334703,1.8571556 +.75755347,1.7384248,2.0631602 +.8839973,.50052618,1.7733583 +.7193455,.91553211,.20901232 +.52973511,.71478207,.10435724 +.89271649,1.4342838,.73799548 +.97274871,.13746097,.94423369 +.81612165,.37382974,1.2346673 +.44249329,.09860919,.39585328 +1.4302578,.10035116,1.102343 +.56669169,1.434264,.9414116 +.83610537,.00343914,.13575713 +.40929155,1.1284588,.10858486 +.85789015,1.5515425,1.3022215 +.49764897,.29482196,.41805554 +.9805539,1.9469844,.18661206 +1.2117855,.96671631,.62565906 +.71919866,1.9375889,1.3414128 +.43345841,.74179987,2.3576745 +.79768742,2.2539381,.29910183 +.78444536,.0569455,1.0856682 +.78035701,.1994302,.91159126 +.36925969,1.3880274,1.0899399 +1.5525173,.16471901,.00668795 +1.4171993,1.1690147,2.7232829 +1.7995804,1.1622547,1.4532552 +2.1682503,.49112513,1.50865 +1.3819604,.26232031,.73586803 +.75486749,2.8347712,.09206699 +.82447926,1.2230865,.17819 +.59934882,.93572584,1.5429935 +1.3359149,.19806037,1.159334 +.59323523,.87931713,1.5187613 +.38692679,1.8360492,.50899597 +.64631557,.52115115,.11487488 +2.2431971,.06372587,.64949678 +.85193598,.08911596,.06091346 +1.6883793,2.6028006,.02490605 +2.0249451,.33335423,.34914606 +.49690921,2.8191514,.26259131 +.90656675,.8115889,.78818975 +.56475116,.45061177,1.5067853 +1.901131,.46214687,1.1959821 +.50648554,.51788544,1.2647077 +1.116204,1.2365641,1.0006916 +.77438539,.51732141,1.1417086 +.6448646,.52357124,.60827435 +.61128263,1.120359,.21726727 +1.1271149,.69826852,1.2150374 +1.3757083,.7994353,1.4130074 +1.0742968,.95159688,1.0462208 +.60003855,.69583125,.53078637 +1.3082286,.02795807,.95841572 +.63631028,.83871865,.65459017 +.58796915,.22496195,2.1648972 +.37596632,.21655705,.25366852 +.87916496,1.0746595,1.7534094 +.59637523,.82807738,1.1409547 +.86101065,1.9944121,.41411662 +1.0181256,1.4149331,.44199951 +.65961456,.6398217,.26849124 +1.1526127,1.3602385,.22912295 +1.2431957,.02936314,.02147996 +.5922831,.90060805,.64811763 +.68786262,1.0323553,.02429192 +.88154386,1.1996114,.39943843 +.67801548,.14901656,.7460817 +2.3378835,.78628843,.03004696 +1.2049146,1.0953815,.78304275 +.54622219,.52830705,1.0934585 +1.7348698,.04984277,.09249026 +1.5204501,.06883973,.75710067 +.54029012,1.1957863,.39029629 +.88391414,1.4979764,.22466434 +.72145355,.04025706,.20912754 +1.0976731,1.2547146,.15943529 +1.4134276,.45886951,.74445624 +1.1499668,.64320799,1.2602838 +.91575072,1.4711346,.39514342 +.41408889,1.2582378,.90848392 +.8032346,1.697734,.49760027 +.56941176,1.5722727,1.8352363 +1.2446257,.79599785,.00456142 +.36435346,.17657655,.43351054 +.6562519,1.0422128,.29795829 +1.7160836,1.6736442,1.2730485 +1.1704063,1.081397,1.7787724 +.55770413,1.0644482,.39739245 +.82706576,.48103217,.57087302 +.92025323,.82937085,.10195007 +.32877422,1.6595536,.47795956 +.58393498,.5764314,.4287689 +.89651891,1.1975262,.0093744 +1.4087048,.0198082,.46299322 +1.7271826,.32544053,1.0975564 +.46555987,1.3813452,1.3856775 +1.475549,1.4678934,1.7136715 +.67803532,2.2775314,.3949105 +1.2249949,.0226527,.31692739 +1.3583525,.16836413,.96236383 +1.2337121,.02178226,.09351609 +1.0687104,.56002003,1.141184 +.88764448,.02427446,.2152693 +1.2671923,.10210439,2.3775582 +.50865536,1.2605454,1.1317804 +.73926105,.35624511,.14050539 +.20778116,.35196533,.51390291 +.6231306,.99031929,1.1543224 +1.0720368,.36582855,1.6164095 +.47289127,.21686091,.01480683 +3.2875012,.4243632,.11353148 +.33534904,1.051564,.02195934 +.69852726,.99998893,.04653557 +.31498594,1.0986922,.55760218 +.95500418,.11128919,.34490715 +.88751789,1.2839757,2.2087844 +1.4832925,.08722828,.92788595 +.62619527,.09389479,1.0946121 +1.26599,1.304735,1.3723211 +1.4529236,.73372855,1.7709391 +1.0803785,.60094602,1.7144146 +.52503451,1.00901,.9782161 +.53894323,.63712994,.17501952 +.92958587,1.3564978,1.3881614 +1.7558708,.62599338,.95154126 +.91494682,.5186946,.85907032 +1.1519263,.46565686,2.3104093 +1.5485942,.25808458,1.5751733 +.65440323,.42745421,.98917763 +.87800311,1.9945531,.30573016 +.84551571,.485695,.14006905 +.7536421,1.1960284,.23644494 +.92910231,1.3142485,.5416675 +1.9897221,1.034802,1.3806833 +1.9874908,.81549464,.52166776 +.99324761,.42970128,.81170321 +.69495023,.9826748,.54536775 +.70577906,.32732451,.57283224 +.79600954,.55242124,.32932187 +1.2284426,.48104685,.76244328 +1.5043035,1.2255196,.46509244 +.97683994,.64178385,.04473616 +.60531001,.11678244,.55374664 +.61205547,.28888875,.53948246 +1.0328839,.49339823,.3025489 +.61339596,.79119929,.61862465 +.72269796,1.0995023,.50398962 +1.5513804,.04477903,1.1666327 +1.1484327,1.4268913,.7511989 +.69266973,.23822061,.40065322 +.43384235,.12391547,.21191611 +.86181123,.55520994,1.095343 +.38657498,.53153687,.10411614 +1.5998742,.85237783,1.0636835 +.52478516,2.7659902,.1005913 +.90544111,.41808826,.12372913 +.90311295,.18852072,1.2775356 +1.1280616,.04218938,.02324999 +.64733915,.24515823,1.0088524 +.60551401,.28244284,.25559448 +.69996655,2.7280774,1.2834788 +.51914038,.45713064,.30777609 +1.4943617,.04912,.49135961 +2.6009483,.19723788,.29462412 +1.3951901,.58301257,.076511 +.77268072,1.0726735,.66372061 +.62419106,.78533927,.85779325 +2.2409775,.54437987,1.6409547 +.63246253,1.2139375,.05678201 +.69834597,1.667185,1.5110901 +.63607008,.73685309,.86733634 +.62826286,1.8868945,1.0091795 +.45397286,.71039677,.13456077 +.64740241,1.1434826,.55281274 +.9549038,.67202945,.45484444 +.89888099,.54591775,.45472894 +.7218947,1.3051151,1.876731 +1.1733204,.37845274,.31516188 +1.0000855,.71782034,.76596856 +1.2535653,.41667603,.63382264 +.98820952,.6759027,.69301701 +.82214144,1.8240924,.84374418 +1.3930681,.21890882,.18481906 +.43900794,1.4221055,.47740778 +.52241064,1.7073072,.72721129 +1.0675839,.12529573,.15707606 +2.7422681,.7507303,2.3880456 +.83561925,.87808498,.38234277 +1.6322846,.98141433,1.6095158 +1.1169696,.4557741,1.6414292 +.27436475,1.6044757,.43809491 +.67796649,.80061054,.35585854 +.79999574,.15767654,.08280298 +1.20798,1.6293572,1.4684576 +.78139989,2.0045514,1.646916 +.49327168,1.7356464,.29677834 +.74540004,.64897428,.27381852 +.60604672,.51806672,1.2763236 +.63220435,.46914091,1.6408235 +.52015668,.42839737,1.0996729 +1.1088797,.42512275,1.0960992 +3.3431871,.79908672,1.7574568 +1.3414536,.4513536,.26904653 +2.4348905,1.1328221,.83463853 +.66103622,.12603379,.75409096 +1.1806016,.74977532,1.0452195 +.41046807,1.0948945,.1616528 +.94066832,1.9235133,.09957133 +1.3847587,1.2568369,1.9533778 +.69899924,1.1436208,.24826038 +1.1487811,1.6830248,1.8208558 +1.452436,.41208364,1.0011391 +2.4330998,.22673598,.74437224 +.82639902,1.0036633,.18522006 +1.1368791,.95516226,.02783349 +.77978521,1.334469,1.3024281 +.60403311,1.0696058,.70772129 +.42297739,.23000118,.53538657 +.90286024,1.3223431,.80594406 +.36684262,1.1563869,1.2823482 +.38872805,.83260929,1.0333585 +.41100704,.68606236,.42990764 +.53156339,1.0329871,.32959302 +.31737697,3.0648307,1.0210704 +.65967073,1.4515032,.79264107 +.74363602,1.3234245,.53774749 +.75287342,.30523359,1.0480726 +.83090525,.10680109,.05269172 +1.7258158,.42818775,.10732903 +1.0686704,.00764738,1.4885954 +.6852894,.15593904,.18526319 +.58380761,1.6334056,1.2766748 +.65525612,.60880881,.48374617 +.62788432,.06412401,.72334935 +1.3856585,.00959683,1.1812758 +2.2033095,.3764512,.60373817 +.63344124,1.4368035,1.9450389 +1.3606529,.00330537,.93908158 +.70625752,.58808361,.30615822 +1.02622,.84930301,2.1536017 +.53703598,.79938391,.33316372 +1.6526636,.14211911,1.6388472 +.53001795,.95871533,.29478227 +.55510478,.27295275,.13781054 +.42721528,1.8210597,.20845382 +1.191132,.10256888,.24071128 +.6388624,.75189189,.30566648 +.25110748,1.0625379,.3709595 +.80590755,.45379701,1.577063 +.47817618,.25653956,.47249181 +.40331465,1.1053216,.51781833 +.62577496,.37438486,1.4618586 +1.7082726,.21365289,1.2208346 +.66728322,1.2230744,.42920191 +.55291202,.60808129,.3220481 +.62006398,.25085265,.09428648 +1.0642409,.09587883,.60390965 +.3834435,.5229522,.42882702 +.98587931,.29854024,.9542967 +.88710723,.87106162,.62538251 +.15274678,3.2496892,.00840203 +1.3988452,.59921774,1.2115666 +.59647296,1.5263181,.22761921 +.56821031,1.9223257,.35095822 +1.3312769,1.2612708,.65620878 +1.0103525,.99150809,.1920621 +1.4555286,1.0199814,.15748328 +.43506632,1.9098794,.41568963 +.92011096,.31119968,.25676163 +.32791084,.69362751,.21538523 +1.6574824,.09959967,1.5142048 +.72882832,.68766504,.98220849 +.30880878,1.6289028,.0883926 +.84431761,.63916174,.1983979 +.78940342,.11791719,1.4600421 +1.1754787,.614023,.8767286 +2.6720654,.08035548,.5541238 +.89046956,.88989471,.52560636 +.81507264,.93410046,.41465093 +1.37227,.00992463,1.6705409 +.44498689,.74405015,1.2975166 +1.0292935,.22352832,.05805577 +.65339065,1.4972458,.79896111 +.7532077,.28797242,.04328426 +.28608869,3.4685093,.58406669 +.61598535,1.7300725,1.0915151 +1.0029577,.2512542,.61577182 +.83533961,1.6497034,.22521464 +.30627421,.59073821,1.3876529 +.20546066,1.1732519,.6475078 +.56533151,1.871579,1.6389485 +1.1329146,2.0465438,.71353727 +1.2043579,.94729023,.59733612 +.74461204,.19996634,.34876438 +1.7509487,.60145435,.68965444 +.55345683,.03667904,.1208657 +.43707592,1.0904453,.04641653 +.2404108,1.4987314,.0370137 +1.7109143,1.8912484,.44964816 +2.113726,.65302905,.82993861 +1.1875906,.30811476,.18746499 +1.8696541,.04531634,2.6889863 +.87395163,.08682255,.40915031 +.72177635,1.4664844,.10391538 +1.4905576,.74921065,.22880408 +.66639652,.80163733,.52383553 +.80494555,.34226465,.82561896 +.62241167,.08764277,.042611 +.88747004,.53712455,.34074197 +1.0774565,.43692566,.73153353 +1.5127079,.19225405,1.5643813 +1.1705262,1.3545172,.40314371 +1.6749106,.64750848,1.1694763 +1.5255141,.65711505,.76494344 +1.1148371,.54784065,1.3949324 +1.180817,.99744778,.25095781 +.68188014,.57017943,1.2138759 +1.5221374,.07565366,.69670498 +.95989147,.83194342,.40058859 +.48555521,1.5155558,1.2948859 +.37706996,1.3668022,1.276228 +.5241732,.80830457,2.3292969 +.38689969,.53859563,.05137318 +1.97785,.50748815,.33101288 +.86119424,1.0442176,1.3888769 +1.0341546,.21865017,.43970775 +.35991846,.17531703,.21145121 +.43424565,1.270354,1.1088202 +1.3454723,.35382413,.57007121 +1.1489952,.76793293,1.8934582 +.53175493,1.2597701,2.302436 +.42476951,.6148813,.39417396 +.64160481,.24285405,1.006807 +.42325509,1.3896161,.46741456 +1.3288649,.6791418,.35819037 +1.7796925,.69333888,.92016852 +.4307488,.19109075,.56735897 +.78058578,1.2690488,.70897846 +1.4644201,.13142845,.07972586 +.77678294,1.3125337,1.0323953 +.42307836,.79438468,1.6334334 +.78403419,.18935332,.38866613 +1.9963091,1.212833,1.0329848 +1.1731049,1.5116544,.58421825 +1.4534055,.8470056,.25752252 +.76836193,.61306635,.18595197 +.60272963,.56929364,1.2581783 +.57823672,.59595285,.40607763 +.65833172,.27082787,.00041944 +1.3549753,1.5500083,.03214567 +.87612115,1.5353071,.48461161 +.79742717,2.7597359,1.3130972 +.4593025,.66388144,.72526814 +.688197,.52860882,.58941975 +1.1387729,.13495959,.61238774 +1.2849178,1.4507154,.83135525 +.87357206,.1911325,.74878241 +1.1736969,.05784474,1.5594785 +.78213129,.48375648,.39101099 +1.0868843,.41785289,.2080371 +2.284796,.30815642,1.1453666 +.31017743,1.2599307,.68975906 +.93251705,.24638801,.918654 +.41190081,1.3177849,.64990701 +1.045526,.12826196,.5172904 +2.0640812,.4250843,.56155567 +.59208187,.38355878,.13414793 +.9359357,1.8169296,2.4045689 +1.0930056,1.3296864,1.7892725 +1.4337568,.41695428,1.7965437 +.53047925,.06891652,.39885938 +.74139836,.03619079,.07214683 +1.0236707,.74477092,1.7973108 +.82098134,.08516704,.70485627 +.88390137,1.1709756,1.7602286 +.99439193,.33497709,.35127674 +.75539717,.51635986,.96292044 +.67532607,.19285828,.26179657 +.60696083,.00851439,.3844747 +2.1906453,.63000663,.46617479 +.8590994,.86073238,.18496872 +1.0590154,.29248031,.63446612 +.96239041,.05340728,.46721371 +.43996931,.38116864,.32263741 +.97892616,2.1806708,1.2669936 +.49936864,.98010994,.16310538 +2.4746928,.36783275,.76582692 +1.08668,.78787523,.38587701 +1.8122476,1.5300511,.60600147 +1.1821434,.76179889,.13130139 +.8053629,.02457304,.02798797 +.97457283,.19746395,1.5980908 +1.3003592,1.1271754,.71357178 +.77686682,.29350169,.23616402 +1.932847,.04072306,1.5925384 +.87282871,1.3226823,1.2921429 +1.1481834,.66338973,1.2803765 +1.1124545,1.545843,.05183484 +.25272627,.80030121,.28599714 +.3449566,.1929034,1.0647311 +.74373233,1.086003,.70689921 +.33420678,.95908881,1.1607027 +.87407532,1.5036233,1.6888891 +.62150389,.10180932,.70578979 +.50573242,2.2623962,.86855124 +1.2331574,1.099731,.25602633 +.91879006,1.3979151,.34990641 +1.0060589,.07122868,2.0555299 +2.1106996,.42351972,.69183557 +.81815913,.6152294,.10541422 +.49367356,2.4731444,1.0755261 +.41811778,1.0723082,.32613822 +1.3097044,1.4960713,.73377053 +.84967545,.38442709,1.1000752 +1.1381608,.66024563,.33179513 +1.0422762,.94222262,.10324154 +.63302117,1.1437396,2.3970321 +.74521907,.52890436,.34487625 +1.8557676,1.2984726,.70853592 +.87079021,.14839972,.50706333 +1.2546913,.32236429,.59540827 +.62351051,.11706843,1.1958687 +.65811115,.13038244,.71520952 +1.2887125,.70138444,.44671545 +.73461517,.58986365,.56580514 +.80233068,1.3535062,1.2320245 +1.511553,1.3871134,1.4405751 +2.0701882,.39724283,.19939954 +.55264646,1.2717213,.12264019 +.66412829,.39212202,1.5682746 +2.0366759,.33422769,.22156463 +.20482097,2.3735559,.48959333 +1.751484,.49219095,1.4710163 +.93876552,1.2037959,.86863906 +.62448011,2.5003086,.41232644 +.78039706,.87303271,.91734974 +.94624657,.12310544,1.4789148 +.54403759,.54056639,1.0678794 +1.7378135,.37041229,.1329185 +1.2910338,.2131687,.68959918 +1.3461443,2.0666213,.603784 +1.276504,.30815482,.6036426 +.96568472,1.3919063,.01657842 +.41688605,3.111589,1.0039012 +.66565301,.14163693,.25310861 +.76927016,.30722138,1.1034274 +.87351004,.79631447,.56826936 +1.8561632,1.3712494,.75592162 +.45865716,.53153732,1.3357851 +1.2113457,1.74264,.6237258 +2.4059103,.06315394,.2463039 +.64462493,1.5904848,.03334317 +1.1736276,.24215817,.64078246 +.92852304,.98814712,1.3111085 +.53174894,.22017061,.66233781 +1.0163669,1.9176929,.34651539 +1.598703,3.0314315,.6269411 +.41798292,1.000268,.86872351 +1.1775791,1.1247115,1.3680476 +.43349689,.13901417,.44783736 +.60510116,.04362722,.62136242 +.66073142,1.385544,1.5442257 +.94432441,.21731131,1.1394399 +.43494372,1.1566264,1.0611739 +.96039301,.49945697,.41010645 +1.4497041,.48300714,.44270815 +.75310535,.72711652,.35710005 +.75674519,.90398286,.63034697 +.82249972,.8548754,.86111402 +.59663352,.21125835,.18794078 +.53394971,.62454061,.64180813 +1.4232464,.91811241,.25368302 +1.2014892,.62435058,.7913029 +1.4818934,1.8238365,.29644297 +1.0291486,.82842616,.01337088 +2.3993371,.49965725,1.6510978 +.96584885,1.2482494,.6304713 +1.5951654,.06432495,1.9112032 +.35893778,.72633409,.58579074 +1.0225442,.00687065,.14765384 +1.4889737,.46247672,.16321644 +.83538301,.71642031,.05261124 +2.0808562,2.0320316,1.2024758 +.53697962,1.2013748,.20104523 +.88935258,.7545384,1.4180838 +1.315407,.66772792,1.0847478 +1.3020443,2.0023983,1.0497116 +.8295312,.30014029,1.0990197 +.68570978,1.3501318,.77626746 +.56006528,.1584136,.21150832 +1.2841789,.42511502,.25106098 +.50841446,1.479519,1.2954068 +.79849282,.31896974,1.3179978 +.52334185,.25593986,.05944482 +.9272863,1.459308,2.1428513 +.56743439,.4733457,.91484845 +1.3299967,.83218568,.2337069 +1.5848416,1.2551735,.29222634 +2.0786918,.16843119,.27740374 +.56719723,.88145609,1.9195833 +.71484712,.43978315,.89615151 +.95110095,1.104626,.88936757 +.78023702,1.1219615,.1057307 +1.5710697,1.5118203,.07961547 +1.1005255,.48007989,.30045878 +2.2369971,.50562905,2.2337259 +.35792822,1.3605267,.25647323 +.82512032,.13947486,1.5155314 +.6332554,.29396186,.11434355 +1.1421116,.11693207,.4374214 +1.9268466,.98432608,1.0701871 +.88291392,.79308146,.53963271 +1.3522537,.37357584,.65160082 +.74446216,.55771987,.32641769 +.9746851,2.5581687,1.4855992 +.35941353,.94581325,.97934059 +2.1187065,1.0973598,2.0296035 +.85957968,.79593684,1.3290052 +1.3707419,1.4071562,1.8924002 +.79174036,.77204749,1.0007964 +.72833585,1.192857,.19675059 +.77401314,1.2968651,.8391816 +.86828386,1.1076417,.31974353 +1.5851893,.11944681,.13455481 +.53618387,2.0660035,1.235565 +.79555251,.2462921,.10390787 +.26619327,.86374045,.38106526 +.81662218,.19151821,.92193317 +1.4288039,.37829478,1.2124569 +3.3491501,.1651447,1.5012298 +1.1979246,1.9451705,.46346869 +.35819645,.85005074,.1379037 +1.4757494,.24075027,.08707512 +.44854759,1.77867,1.393757 +1.2278932,.97916996,.55179955 +1.451157,.02346054,.56888637 +.64222535,.85132701,1.7784532 +.78133351,.13910885,.14674386 +.63830614,1.0275142,2.2090251 +1.949977,2.7376774,.52836465 +.86143744,1.560393,.92350423 +.80713087,.7917853,.43877606 +.40508094,.73795471,.75638591 +1.0894778,1.1190988,2.4733285 +1.1020459,.56148926,1.2657084 +2.5329915,1.7549707,.51731981 +.82613653,1.0046992,.24334361 +.81767607,1.021623,1.3992394 +1.4952829,.61680929,1.2400345 +1.0012771,1.5352089,.70705391 +.78848963,.11809337,.25391225 +1.1199135,.84882308,.00075761 +.43662978,2.0054699,1.8576462 +1.8939157,.18870409,.66768226 +.76911019,.08001199,.35756488 +1.6606265,.79322744,.10709211 +.37938836,.89610792,1.7855959 +1.4984777,.71175862,1.3152431 +.62663029,.04834246,.37358346 +1.8703661,1.0187444,.9040434 +2.032519,1.4757542,1.7602629 +.87394411,1.4075671,2.4184037 +1.4095095,.98829487,.29897017 +.86277128,.44177213,.44092824 +.47351499,1.8708144,.63702904 +2.0903448,1.750653,1.2974381 +1.8216614,1.0851115,.82940594 +.30029587,.24887814,.06944153 +2.722738,.12198085,.79409727 +.39037244,.88854625,.62457789 +.39454677,.09441166,.13920057 +.57669408,1.1729657,.40412922 +.75020556,1.0719278,1.2174531 +.81808051,1.473228,1.9104187 +2.2325197,.39940714,2.0458124 +1.0964639,.80780174,.39095708 +.51716396,2.0397612,1.0695205 +.39655101,.59396934,.39778943 +1.018954,.6615434,.57072871 +1.144148,.78979415,.28385748 +.53181291,.18743641,1.3491063 +.48885117,.75778583,.4956728 +1.4405207,.21633645,2.271479 +.86765903,1.1899947,1.1226779 +.81077598,.63871491,.35045462 +1.2595958,.30806559,1.028441 +.89447852,1.4289778,.34135718 +.80476546,.12504786,.60303093 +.89110143,.48184567,.46608267 +.61245863,1.5978038,.78189112 +1.1542459,.60421183,.358456 +.50490938,.99383255,.04686322 +.50445798,.51774629,.29611661 +2.0284966,.6548245,.3082185 +.44127983,1.2624066,1.8682048 +.58188411,.30213325,.39620255 +1.0032333,.93902743,.39749514 +1.35632,.24438673,.6753961 +.77234228,1.2015443,.66579452 +.38098616,.91007284,.31098774 +.63316641,1.4257298,.22700649 +.77845041,.80917753,.49700536 +1.2339534,.2524507,.41593714 +.41173456,.6792154,1.3572294 +1.0225122,.38562924,1.990865 +1.5132906,.87644623,1.1487552 +1.0560405,.12324414,.84831368 +.57935874,.56351948,.06275627 +.30703016,2.0486786,.68397663 +.71305313,.04920143,1.0591628 +1.1350411,1.27892,.9932844 +.41983169,.29500528,1.3910968 +.58240215,1.23946,.31731077 +.71417601,3.0228077,1.1059642 +.93216601,1.1656622,1.6625487 +.43910619,1.9338025,.63286156 +.86093652,.24416467,.55735999 +1.6527451,.37338802,.97431574 +.4794781,1.0158472,.60142167 +2.32712,.8827112,.56205425 +.71072377,1.1876836,.29245911 +.33471244,1.2226479,.10025467 +1.420746,.29362119,2.2297027 +.49104215,.20416343,1.5844677 +.92113724,1.1699459,.13813502 +.70861962,1.2795625,.07575047 +.68281927,1.2208496,.06279807 +.98386869,.06049286,.02554891 +.68175632,1.0685573,1.6643718 +.64804673,.47260079,.45045453 +.53947657,.14603664,.55035395 +.51773589,1.671656,1.9692283 +1.6841643,.12185644,.56615428 +1.5102798,.02590061,2.8774446 +.66916671,.24079868,.16544443 +.98641947,.08685581,1.4015826 +.43341883,.21898462,.53112248 +.29601059,.82312439,1.4967103 +1.1517183,.20733403,.47138844 +1.5163074,.49555802,.82823515 +1.8309968,.11379855,1.2358553 +.99348306,.00298411,.96206612 +1.1449235,.76631928,.4051059 +1.173236,.10946222,.15800715 +1.7271844,1.1808001,1.5521889 +1.0569225,1.5106174,.80946215 +.84501933,.84938509,.12634493 +.79906996,.33692548,.41114123 +.7191224,1.1577592,.34292744 +.65058675,.21890089,1.2058911 +2.0499221,1.5559571,1.2053669 +1.830455,.41058911,1.6862141 +1.2011479,.15602653,.12630228 +.64832391,.43547178,.10598575 +1.0765895,.96511763,1.1115688 +.61022303,.00277252,.02660187 +.68050571,.60921227,2.2937178 +1.3863746,1.2167066,1.2977561 +1.3658069,2.5562864,.28115515 +.41779103,.50276683,.09400144 +.55917726,.62466746,1.8705924 +.57105825,.56506908,1.2927289 +1.6851998,.91633616,.78137462 +1.4269802,.72455186,.45356392 +1.2542049,.17724025,1.2981954 +.78261817,3.6027683,1.1913024 +.46703153,.97457517,1.333896 +1.3391696,.67059684,.25070076 +1.5437835,.29530963,.99887971 +1.0471413,.11380099,.2022584 +.77826005,.12742791,.68110685 +.43897511,.02536988,.23296861 +.50603782,.55803588,.29868197 +1.1171318,.35259067,1.0207155 +.84394278,1.1373945,.79875247 +.73252689,.11108391,.47718569 +.89118608,.09462573,.05059182 +.35807318,1.003394,1.0054661 +1.0390076,.60932577,.27922984 +.67495519,1.0077939,.71981703 +.68556081,1.335663,1.5880321 +.34965605,.63846513,.43380854 +.47256314,1.189845,.64609642 +2.860155,.21983484,.80786285 +.27071828,.15489338,.31257827 +.61319214,.69757333,.49857506 +1.2360944,.64112553,.55493228 +.9058525,.31868129,.32459882 +.82337242,.19095759,2.1162063 +1.1074906,1.2299928,.59965309 +.77701709,.90805707,.46043908 +.83344672,1.8843504,1.8834016 +.70557712,1.6185449,.24615853 +.2027122,.34035874,1.4076576 +.55064705,.58489565,2.1305737 +1.3773764,.26125038,.41605239 +.73262946,.01507395,.52986266 +.41980087,2.9637788,1.6128218 +1.4650529,.93964152,1.91097 +.95963387,.51844656,.22757681 +.27094997,1.2764645,.55862417 +.68479157,1.7527082,1.662766 +1.0357888,.0754663,.29405731 +1.1068106,.4245171,.41417436 +.68503752,1.0854828,1.9182457 +2.0760847,.21586306,.72394653 +.50362246,1.5097928,.12634896 +.88403916,.28863822,.94115568 +.62733492,1.9893745,.07548765 +.41637844,1.1343726,.66088716 +1.2392533,.10437078,.40418566 +1.2608582,.73521879,1.4655299 +.83162567,.18342237,.3585311 +.24445889,2.5793509,.21639856 +.61585362,.84848828,.81934408 +.47346635,.65755879,.42079285 +.74153858,.58478234,.46335693 +1.0960336,1.571453,.87142369 +.72221706,1.3158498,1.168738 +.75122166,.12187807,2.4443176 +.62500575,1.896704,.25724021 +1.6038247,1.3216291,2.9122197 +.60766916,2.4531489,1.005269 +.50327082,1.5947127,.56795542 +1.020242,3.5384084,.12878161 +.95803542,1.1741646,.48660206 +1.5690141,.91522675,1.588693 +.63241743,1.0496646,1.8884596 +1.2213734,.04857353,.58123629 +1.5320457,.20104826,.12158432 +1.0486388,.83854664,.07226749 +.79768339,1.3549721,1.2833789 +.84544171,.58913552,1.3084286 +.69547731,.9858683,.28598082 +.34806621,.58628108,1.0053574 +1.329393,.03007412,1.1233235 +.79785678,1.2648845,.8428409 +.75645909,.29213895,.56652493 +3.2972951,.56221248,.85857433 +.40031378,.81282951,.15986665 +1.9615221,.55012428,1.077331 +.79990717,.27067979,1.74082 +.45064954,1.02062,1.4930172 +.6544664,.39019053,.55933808 +.66861131,1.5701937,.3214915 +.80168129,1.6719752,1.6746014 +1.256835,1.3058255,.21320157 +.6728437,1.0942854,.35958631 +1.3378071,1.1618013,2.4451646 +.8067909,.37025085,2.1687164 +.86087483,.62045408,.96361775 +3.6380375,.34014093,1.81578 +.62698512,.42956997,.3657188 +1.8831151,.26577091,2.8515559 +1.3813113,.135454,.39254522 +.59025932,1.0363784,1.5621066 +.71303181,.36563361,.45973366 +.61305233,.04619311,.3210833 +.99127111,.76952897,2.6539461 +.47675925,2.1574775,.94683786 +.9257998,2.2321332,.0983587 +.5877063,1.6386034,.21781464 +1.3392107,.1927467,1.0958519 +.85610363,.35003942,1.3154168 +3.011256,.50775655,1.4158738 +.75248005,.03559309,.20370951 +1.2922519,.35231377,.32034502 +1.9555445,1.328537,.54732443 +2.072036,.94817836,.36933384 +1.0447335,.08610455,.97022383 +.66866396,.78110059,1.5317917 +2.0723839,.03941223,1.0487217 +.8650179,.62656765,.96612419 +1.7791237,.3808383,.77804222 +.57232327,.03293031,.50822503 +1.2136075,.58662242,.73177268 +2.0105336,.04440257,1.4575826 +1.1374846,.5557985,.77513558 +.68537019,.36970521,.89437993 +.71976583,.12390228,.73275429 +.92199169,.33610161,.3762692 +1.5203274,.26829208,2.2170828 +1.2877252,.54938091,.75339056 +.7190436,1.4604649,1.6953467 +1.1881131,.62842695,2.0699223 +.68210458,.67123347,1.6024738 +1.3125456,.15144212,1.3987232 +.95014392,.4721854,.34844094 +.97903676,.523149,.40671261 +.71672875,.47282902,.7631572 +.28082604,1.3263812,.07392879 +1.2886582,.4692841,1.234446 +.85432448,.61621326,1.0319474 +.97735727,.87456775,.31130245 +.60130953,.46127701,1.8396725 +.58991397,.14510114,.07385787 +1.3067862,.31198356,.47700188 +.84925063,.85670727,.48627346 +1.0101019,.08122759,1.3144652 +1.5589626,.55587632,.46636621 +1.0827051,1.2627393,.74635799 +.67817241,1.1119488,.73368447 +.82516574,1.5808609,1.5048769 +.90981552,.55908739,.49208478 +.80020854,1.1952484,1.4501879 +.62653565,1.2037438,2.4939611 +.51466052,1.3716549,.06775853 +1.0297518,.11349917,1.8881219 +1.3880368,1.3066166,1.9468799 +1.5102672,.01313056,1.9973501 +.4854047,.98645926,.12486434 +.3669144,.45935009,1.1210539 +.54581591,.27379353,.50243432 +1.0250893,.18863476,.06400754 +.34811126,.17312222,.05654557 +1.0198997,.25228169,.17996071 +.59447261,.83489906,.80395899 +1.0284271,.36234226,.63670201 +.59383631,1.3739657,.17055883 +1.7230442,.69609128,.79786595 +1.3934357,1.3306012,2.5151109 +.68733446,.24984225,.57455263 +.8102799,.54036168,1.3961581 +.47512176,.59097752,.38018696 +1.5063661,.01022239,.54732901 +1.048204,.61932063,1.7012611 +.664135,.2125422,1.3799711 +1.0601601,.26888417,1.4935162 +.98033031,.00227086,.26373925 +.50977384,1.4885943,1.2911647 +.83925579,.60526151,.75971161 +.38727233,1.3666433,.18252019 +1.0908152,1.2388566,.08470714 +1.1127091,.51503578,.22374665 +1.0897615,.01653429,.59301125 +1.5973172,.69272245,1.5530242 +.75340512,1.4518561,.33208944 +2.9032134,.19792874,.42589904 +1.2440569,.89260994,1.0117427 +.81673912,.95046491,1.9416862 +.59606792,1.2446778,.15737009 +.7888164,1.5459092,.62990366 +1.4820201,.01408672,1.2629237 +1.2419807,.2496859,.09231419 +1.2257528,.66707212,.38552728 +.74612633,.44249101,.35025223 +1.2310248,1.0098712,.38516867 +.68592726,.04654393,1.1900248 +.36910705,.49538114,1.4733028 +1.5731075,.3783348,.16173231 +.54702133,2.2606936,1.5198394 +.82888341,.30265908,1.0697934 +.8176352,.23513371,.57991953 +1.1601575,.71424002,1.0744703 +.56656867,1.3947659,1.8351586 +.93628416,1.5031513,1.0685544 +.67988911,.50010388,.40427364 +1.3158555,.45904206,.53908054 +1.5597753,.45710051,.6186336 +.64065942,.70836205,.08459075 +1.8355514,.15979558,1.4391227 +1.0864086,.99187657,.84719709 +.36399778,.5269296,.45071985 +1.6402798,.3179296,.00903172 +.54144878,1.0363637,.23024301 +1.2377686,.07023625,.88341146 +1.4266899,1.7131121,1.6138555 +1.4703192,.22102658,2.6767891 +.55420693,1.2615502,.08254038 +.65698805,.92909479,.66264043 +1.0673108,.40647656,1.2736646 +.822554,1.0474176,2.0423497 +.83577852,.26649412,.90728786 +.58879764,.86524346,.17376088 +.77058725,.89318084,.25083352 +.58709674,1.5996831,.37757584 +.7931375,1.4890213,.02175528 +2.3149057,.05883018,.9829915 +1.7575777,.95658883,.73225795 +.65434841,.19607219,.10450854 +1.7726789,.30624937,2.7586439 +1.5445518,1.9065874,.86119862 +.39194736,1.4332452,1.9613281 +.64816623,.05713623,1.3261349 +1.9291581,.0789211,.94486622 +.97197716,.72910161,.04208343 +2.0354359,1.6261703,1.6803156 +.35634266,1.7866666,1.7063305 +.44647176,.28226245,.34121976 +.49764534,1.0486012,.45107702 +.5648395,.74011477,.53317752 +1.2969658,.05430353,1.4582652 +.50627342,.52779835,.79086656 +.77409412,.2491613,.0595327 +.50307567,1.1172966,.11264853 +.63751605,.42762927,1.2769783 +.88444083,1.3013657,1.0549623 +1.4395935,1.1348719,.6808413 +.89062323,.42468349,.65917709 +.72441959,.11854098,.9998198 +2.5137391,.3864395,.80222381 +.70584688,.71713378,.00875679 +.45659533,.54453316,.42604093 +.59374044,1.0112032,.22095903 +.5418419,.53659066,.82266444 +.91405133,.30579963,.44097017 +.23195276,1.4219846,.12477326 +.84221586,1.8107594,1.0319441 +.4876829,.22610677,.82609202 +1.8430088,.54169028,1.0488444 +.94916294,.39739424,1.569473 +.66151771,.53558575,1.91597 +.37900758,.71103198,.0068149 +.5169371,.92572729,.56715387 +.82326026,.61670244,.36003857 +.5629003,.99535527,.67928543 +1.5268452,.3974041,.73477537 +1.1573337,.53915851,1.5666163 +.44611242,.47706479,.54376579 +.93965417,.54858019,1.2277719 +.34892576,.97000891,.18955992 +.53533426,.68619401,.01663312 +.97502034,.17692702,.63951977 +1.98473,.35092259,1.9697886 +.26395051,3.120188,.56261216 +2.5213005,.63946232,1.5497452 +1.2236949,1.7035447,.49092709 +.66515587,.25105896,.2003702 +1.1722175,.18821868,.23827667 +.6279815,1.1719411,.41618862 +.66595206,.47429111,.86505164 +.91022007,.00376309,.30143111 +.36773053,1.8082687,.55931351 +.55415196,1.4768018,.26140497 +.75497571,.08453438,.57603489 +.24436308,.08454495,1.4743257 +1.068429,.39137044,.80730342 +.22825819,2.0045729,.71622598 +.66825933,2.0612526,.92372636 +.70018907,.04167637,.59514277 +1.0968982,.66917739,.05300466 +1.201614,1.1311676,.13711208 +.89799882,1.0402821,1.0674403 +.60784244,.0767515,2.1685798 +.51335739,1.392744,2.4668662 +1.4859077,.01494371,.9663734 +1.2116007,1.8299923,.56958269 +.74337908,1.3206302,.21596767 +1.0936545,.35000058,1.1970176 +.54130436,.48631819,1.2237258 +.48584895,.86329098,.94214108 +1.5566538,.03924041,.67910632 +.35816494,.82623656,1.0404943 +.86752601,.69292644,1.5088288 +.48826297,1.0188536,1.1787966 +1.6986611,.00778247,.47214401 +.99406639,1.5948535,.63680562 +.43120285,1.9510645,.04850276 +2.9394242,.44442228,.21213955 +1.2534021,.85502442,2.5079392 +.58405335,.97687576,1.027571 +1.4136361,.05280492,.3001784 +.50446685,1.0012984,.75956078 +2.0589275,.40936877,1.5589509 +.52675134,.08823164,.18038201 +.84957798,.92960952,.11424217 +.7750332,.2595473,.04737035 +.95703691,.73590531,1.4456736 +.60481823,1.2551338,2.1798495 +1.940342,.81593849,1.4625626 +.5026768,.10146775,.86871536 +1.0609623,.88238303,.23413053 +.62810925,.32314501,1.3005493 +.48562135,2.2054576,.89587589 +1.7436308,1.5138065,1.0787865 +.36912857,1.253424,.20668915 +.95650024,.45029451,1.7696224 +.88770704,1.6000432,1.5451581 +.27246572,1.4083255,.82719191 +.46791865,.18564505,.62446669 +1.7607959,.06447852,.60329058 +1.7445793,1.198827,.15457633 +.87481132,.76286055,.32583093 +1.4642323,.21318395,1.0427555 +.65039572,1.3468823,.93483726 +.7004117,.04839358,1.4946359 +.88337907,1.0578752,1.7024616 +.79620886,.71585732,.7049118 +.64448184,1.5907438,.69791794 +.87176507,.56764007,1.1528988 +.47876633,.64026407,.92228296 +.98588644,1.5097654,.87786422 +.55733149,.08679057,.20982147 +1.0653865,.63789321,1.875437 +.85628054,.44166514,.70752941 +.66340496,2.7324997,.21043908 +1.0066862,.59090939,.51613248 +.69822742,.861542,1.0305541 +1.3425977,.59642981,.65323953 +.83854031,.09549994,.31957227 +1.2501082,.74145642,1.3055558 +1.7866509,.08571514,.65019536 +.92940275,.34330691,1.2223947 +.35122232,.07969544,.33583097 +.49915043,.91894093,.55333421 +1.0080755,.5503408,1.4983035 +1.3648578,.094729,.07087453 +1.0786697,.10056676,.93304787 +1.7756264,.07878033,.32184355 +.7820221,.10496233,1.974914 +1.0566491,.45200861,.59068048 +.76947707,1.5657879,2.6902052 +1.0307198,.847173,.90392094 +.51456674,.73384932,.06385537 +.40390574,.59534839,.0074933 +1.2954193,.69144352,1.6849185 +1.0562071,.83558446,1.1831711 +2.0635074,.05150261,2.1350168 +.53196065,.48148281,.64640073 +.88722082,.01820145,1.2054086 +.5363434,1.2887311,.92780865 +.22567979,1.5816967,1.2624195 +.95731785,.86730508,.39222607 +.58778307,.42315007,1.9302844 +1.0822366,.70743525,.49929194 +1.5562119,.5347366,.86824841 +.99314275,.08141036,1.6110516 +.64373376,.94258747,1.2762199 +.58148213,1.2400424,.07155007 +.53213176,.94343358,2.0497796 +.69518853,.50403131,1.611893 +.36701391,1.3042372,.65942818 +.7484169,1.6176893,.51197501 +.60375163,.74588121,.10299018 +.65296064,.40771933,.71038632 +.60937449,1.3345781,1.4720434 +1.1358241,.07229332,2.1360759 +.88143054,1.144103,.56834148 +.52011907,.02927351,.11774541 +.60567984,1.0535672,.30073095 +.71827738,.2241662,.84163583 +1.3020352,.60560896,.54323919 +.67606139,1.27352,1.7282164 +.66432668,.99466005,.28897373 +.93374035,1.5350044,.77418288 +2.0482335,.08967627,1.5828007 +.62467798,1.6280676,1.4644373 +2.0418183,.21299408,1.1867063 +1.4688887,.79979242,1.6733666 +.696424,1.0294542,.82757596 +.88830046,.19105851,1.5210553 +.5140782,.38143324,.67243549 +.92100277,2.0675736,.25863432 +.99388714,2.0604307,.75663736 +1.7653786,.10125714,.60079861 +1.0653456,.87778213,.32883088 +.55051823,1.2630497,.71228798 +1.0693116,.12148403,1.2373446 +.9115027,.93431227,2.9321928 +.66902351,.64418231,.87934766 +.79013027,.00078729,.81187726 +.72232173,1.2694714,.44167198 +.42840406,.93125104,.45812144 +.97417868,.19917405,2.5940637 +1.3167909,1.5475663,.38780872 +2.3445324,.02496742,.21232982 +1.8811647,.13161486,.17574686 +1.0528392,1.1257191,.89307741 +.45829346,.77910928,.67514231 +.82705439,1.7935787,.77789628 +.91701621,.35510339,.15200505 +.65460052,1.352481,.21428443 +.88591703,1.5408417,1.022438 +.59023624,1.8110102,.15698585 +.62275319,1.6857184,.64622634 +.78368419,1.8454998,.70271428 +.56091963,.24933211,1.240561 +.75878781,1.7894181,.38890141 +.52055897,.20054217,.93752577 +1.9793298,.47587986,.05970595 +.70055211,1.2449791,.31489 +.72977173,.61500017,.31902336 +.63791363,.36017983,.47814891 +.50212723,.27521328,.23371461 +.47034141,.15446641,.50003279 +.47115312,.62481509,.72567301 +.7505599,.95631432,.57293146 +.83563034,1.9626688,1.0728365 +.9718883,1.2233948,.41429668 +.56962258,1.8791619,.21988698 +3.4069237,.58797128,.06414246 +.69142992,1.7328551,2.8358515 +.55575509,.15506681,.43524556 +.57973866,.3196882,1.934347 +1.1918096,.50571144,.25239482 +1.5050098,.00229124,.15136709 +.76749114,.79247332,2.0297033 +.83542569,1.2159559,.30772296 +.59715927,.19512707,1.1901913 +.37293518,.06539284,.33348462 +.72132924,.42892819,1.2375282 +.67229635,.74198474,.19106263 +2.0196881,.98787232,.44842769 +1.0187017,.21665846,.55355563 +.4003043,.73521489,1.6633138 +.58613857,.62123279,.02455876 +1.0228878,.56335843,.96380382 +.98546108,.0682875,.24549958 +.76107642,.97273206,.58060091 +1.2302543,2.6282937,.27272109 +.78792891,.46068253,1.0255688 +.8950877,.16304439,.2715107 +.80729411,.70669584,1.2365974 +1.0118296,.68410698,1.600582 +.88667989,1.4567473,.93974738 +.42951974,1.0672925,.02032128 +1.5739979,.94223287,1.293422 +.97039008,.31809424,1.0653499 +.52521609,.58019398,1.7980929 +.39539621,.34080777,1.4191287 +.86414428,.79066659,.39610817 +.60379569,.61147666,1.9166882 +.49196993,1.0338584,.33018162 +.68613605,.63104418,.19891225 +1.6564794,1.1926036,1.0303178 +1.1382232,1.1332895,1.0008625 +.36550223,.44830129,.33855505 +1.224784,.51512818,.00455027 +.80604646,1.6899373,.28664707 +.32342051,1.8412957,.92796246 +.42290937,.60747767,1.3107157 +.70738537,.33064811,.44867966 +.58628115,1.5032799,.8740251 +.47622807,1.3694589,.78148216 +.58678371,.36339052,1.4561116 +1.4444091,.63865954,.34712881 +1.007107,1.0544636,.13757942 +.86624373,.42084982,.98378623 +.67801558,1.7360667,.98867815 +.82958744,1.3620046,1.069652 +.75955032,.29233506,1.0661944 +.90391242,.50634705,.57371009 +.67431915,.32959412,.28260779 +.71633165,.77690006,.57480439 +1.9267639,.03879741,1.307277 +.9078139,.68378893,1.4531031 +.51022936,.04206884,.15443972 +.92594655,1.028807,1.7720866 +1.6577473,.45042737,.58091765 +1.0793338,.69454214,1.6487501 +.64105322,1.0273229,1.0067145 +.65125225,1.0045108,1.5621753 +1.7208992,.53579457,1.534227 +.82505905,1.4825018,1.285393 +.61905613,1.0389039,.78861704 +.7737114,1.1847922,.22847066 +.85291092,.4334247,1.2785177 +.6792101,1.2387105,1.3153627 +.54488218,1.127391,.78040404 +1.3193205,.12057473,.62851432 +.51320445,.65950651,.56226116 +1.7858867,.16665023,1.1904428 +.40958688,.88357827,.23289535 +1.2729015,.3846333,1.4389343 +.80036248,.94816775,1.6960817 +1.8549288,1.1775874,1.833209 +.33764158,1.1229604,.38198793 +.45655707,1.2195776,.31812099 +1.2681807,.77683184,.52115455 +.9053633,1.1285585,1.3391021 +.9814572,.58649401,.44948733 +.58534515,1.1148733,.32407437 +.83805117,.01411756,1.2839695 +1.9456976,.32881048,.4884362 +1.1277699,.44453552,.16917798 +.67127409,1.083608,2.8880172 +2.2834431,.05777445,.71824335 +1.8747078,.06378061,.91680413 +.99357156,.04208248,.56529366 +1.0458132,.71135473,.75328395 +.5295776,1.0687294,.54126644 +1.469491,.98346791,.0684596 +1.6262592,.15723041,2.7124097 +.61747326,.86122842,1.0230346 +1.5754041,.45193324,.39366667 +1.8362457,.68729985,.87913298 +.69072661,.45628152,1.744087 +.47149941,.41450928,.28148245 +.9403795,1.0344709,.81658067 +.44416507,.37691037,2.211068 +1.1390276,.00226365,1.2421881 +.64912109,.37161671,.36744233 +.71611848,.01964228,.00801887 +.78977787,.02939994,.30386374 +.58722855,.41113608,.94018455 +1.3943716,.77401217,1.1462675 +1.2044522,.72156112,.33582168 +.52345543,.43979686,1.7694894 +.4840477,1.221761,1.2187347 +.90946049,1.048837,1.6596111 +.30515242,1.0506886,.59817268 +.86787962,.06164412,.15889454 +.96751719,1.9150714,.94064262 +1.1227459,.16486234,2.2186157 +.78848372,1.1509496,1.7983923 +1.2299528,1.0818732,.9039585 +1.1028635,.3894591,.44228859 +1.0052622,.94170636,.27532494 +.43873277,.6228643,.22733864 +.78344199,.16165197,.78691963 +1.598104,.30186912,.27638201 +.24359975,.40526432,1.2620641 +.86223258,.05739694,.75228368 +.26715028,1.4230215,.7708665 +1.6040857,.9618501,.8456442 +1.2921364,1.1123443,.49875826 +1.0598244,.7733425,.87567365 +.23655592,1.5821403,.43890308 +.62911259,.37901697,.49962065 +1.459403,.33606756,.86922409 +.77575165,1.2404741,1.1703926 +.82450036,.49952901,.68616495 +1.0329177,1.055233,.57868322 +.92720481,1.7034833,1.1085259 +.62038157,1.5254483,.61498051 +.71783921,1.269575,.0797011 +1.3316803,.81728306,.29010447 +.4834448,1.0742654,.30546644 +.64113665,.54930742,.60525977 +.76350411,.87479889,1.9190688 +.75981413,1.1971473,.27434061 +.39485096,1.7941382,.23205953 +1.3684459,.04903115,.03962947 +.92004905,.46275051,.23329262 +.62964541,.58059967,1.0468288 +.61757861,1.0060242,.73825852 +1.9198893,.13647956,.27575614 +1.4984188,.20699437,.53673807 +.57409562,2.1985294,1.883981 +.96642803,1.1618532,.32001991 +.92669558,1.5177373,1.0862102 +.3310918,.8271787,.5471827 +.85072241,.775414,1.0755375 +.80654095,.20556464,.59208053 +.93036535,.19828319,.05534181 +.66327559,.79827274,.16482305 +.50950429,1.119152,.43768485 +1.4471495,1.4866974,1.4117121 +1.178149,.23004793,.59531922 +.36253609,.6638743,.33865414 +.30900157,.51537624,.18876062 +.60959248,.70811306,.53426233 +.81733383,.2541687,.48135319 +1.1260078,.62483262,2.1998546 +1.7904137,.47413428,.78601795 +.55086074,.3908552,.86510984 +2.0763241,.57536504,1.1950945 +.3408746,2.4754206,.06358544 +1.182241,.09934394,.26800456 +.80076293,.14042316,1.3390137 +.62861066,1.0893554,.74720682 +1.7051697,.00947346,.76145396 +.3325968,.85000621,.0047087 +1.5541838,.80450032,.62185923 +.58634524,.70958,1.4266841 +.79534676,1.6368838,.43609865 +.49078293,2.0676664,.73829071 +.35533961,.29691968,.5628279 +.61445066,.55389951,.87534923 +.79179974,1.0798099,.00801101 +.48076625,.30926837,.57766706 +1.929725,.88861791,.93578945 +.74310349,1.1584928,.05125311 +1.005341,.82694848,.05409511 +1.2546766,.11134713,.71187934 +1.8195832,.72901928,.82159137 +.41485624,.64800705,.43825221 +.83104004,1.8799344,1.4103131 +.34226385,.13124788,.81181869 +.79625958,.40343207,.43614645 +.84062398,.00641361,.29944795 +.67046298,.7409926,.38299473 +.76966298,.03740412,.08046314 +1.3718431,.36730094,1.2447362 +.39668698,.45569234,.6290225 +1.4478444,.1612669,.90872107 +.86841138,1.5475393,.26685141 +.95049906,2.2353264,1.0188154 +.49798983,.73910759,.11184484 +.75043745,1.4399448,.91105125 +.74680395,1.8092722,.37842824 +.65734492,.73219927,.56008259 +1.0369117,.21454689,2.8793477 +.53585764,.11269936,1.4659905 +1.749991,.32408493,1.8496383 +1.8594366,.20078314,1.1529558 +.71646233,.85893288,1.1617698 +1.2358258,.43667898,.10126268 +1.2395208,3.3742657,.65364431 +1.16275,.3828679,.45227718 +.55855029,2.7200099,.36046623 +.36722113,1.3427827,.4562729 +.56176312,1.5073691,.03854089 +.73947231,.96080457,1.9713425 +.35553026,1.0833231,.08009513 +.46149351,1.3854139,.8179916 +2.7041342,1.689585,.94658421 +.80978237,1.0484488,.22202631 +.46148001,1.7318572,.17756315 +2.3758374,1.8727278,.34656185 +1.1616683,1.8937734,1.0182231 +.88553057,.65297021,.47756399 +1.788224,.00443,2.2619203 +.63533544,.32091135,.02617795 +.40756204,1.1805866,1.4344716 +.65872973,.09920448,.3823025 +1.0481967,.06290496,.49506089 +1.3473812,1.5322288,.23285919 +.58884624,1.1787467,.70597086 +.24559182,.93733121,1.0477966 +.90873852,.35652328,.88852552 +.74532674,2.1283872,.17534907 +.55298424,.18487124,1.120972 +1.4860279,1.1008955,2.3695482 +.42194452,.46324881,.37077317 +1.4303686,.9828818,.24001793 +.78705789,.7037009,.10231134 +.34368306,.9351082,1.8556588 +.65897767,1.6363513,.27092446 +.47942171,.43689083,1.027346 +.74706112,1.5372383,.23179013 +.66351337,2.4481041,.08881345 +.8862047,.53011252,.54722099 +1.2556769,.54290155,1.0240661 +.58929942,.86354087,.22874562 +1.0216906,.06585798,.20324495 +.7392068,.82673331,.75255855 +.42233481,.13147766,.34890343 +1.0125135,1.2081367,.88563498 +.82627088,.16696732,.65954499 +1.4193048,.94103512,.34899261 +1.170404,1.9384555,.74014521 +.87372152,.11980608,.13509583 +.73565888,1.2831849,1.1399369 +.70954031,1.0787363,1.5233007 +.86263121,.57643678,.08513889 +.96394303,.87057396,.08159676 +.53941814,.73178976,.85002852 +1.4236889,.23533234,.7872978 +1.268951,.07997893,1.578276 +.81543784,1.5318693,1.0199814 +2.9329088,.01682396,.83976684 +1.0479069,.51194971,1.2929189 +.46068035,.22850447,.42945472 +.82565526,.97508971,.14020283 +1.150851,.88195177,1.0483947 +.31361806,1.3522202,.20823538 +1.0778154,.13814231,.8960352 +.71230329,.3263309,.77099559 +.70147187,1.0866877,1.1184273 +1.2023733,1.1616098,1.0555658 +.93274952,1.1212835,.96712955 +.99443108,.39285469,.10329852 +.81122017,.55062322,.83961584 +.39533806,1.1677749,1.1355721 +1.5723996,.28485821,.15057894 +.88255515,.83117571,1.2083352 +.22835067,.33629925,.0882464 +1.9437876,.08772717,.29846702 +.66428251,.0331925,.24323721 +.46994414,.00981375,.15671102 +1.0056277,.52747453,.35730569 +1.1040252,.74268401,.44812005 +1.0978149,.04865948,2.0481387 +1.2202202,.87341884,.3183164 +1.2741913,1.9488047,.19096098 +1.4562798,1.4611596,1.2687782 +1.6208108,.87608117,1.3400669 +.2158181,2.7550746,.69578347 +.7133362,.90426174,.24648707 +.7116576,.21451072,.84187671 +1.1660383,.68109859,2.2277559 +1.4873077,1.5279818,2.330564 +.49336658,.09141487,.5447532 +.37877791,.10412415,.3657548 +1.1161835,1.4031288,1.7447909 +.5698184,1.9659218,1.0879529 +.84595651,.74553275,1.867317 +1.7412746,.34883727,.98303905 +.38025464,1.1588223,.65494546 +1.4062248,.1515469,.70920102 +.36556047,.09797518,.2481517 +.77420082,.65858066,1.1513291 +1.1851319,.45470402,.56942653 +.82683558,.71485005,1.1007515 +.40298021,.81370659,1.9736737 +.67229806,.65021211,1.9644585 +1.088811,1.1271001,.14243884 +.91075494,.7956432,.69806081 +2.0694452,.49605834,1.1857324 +.65678381,.9062056,.24377595 +1.1652405,2.0440832,1.3092156 +.8876609,.27041874,1.2487489 +2.0878504,.58809815,1.6983181 +.9672343,1.4113367,.1476558 +.47109513,1.0174238,.50713623 +1.7443741,.40651122,.78219038 +.84268657,1.8332687,1.1260952 +.30217383,.63175072,1.6379898 +1.3148013,.11107686,1.4617203 +2.3798998,1.1379046,.69646132 +1.2342001,.04217445,1.1246963 +.45679373,.66534012,1.6789538 +.61668667,.06082284,.51604133 +.77772095,.18233891,1.4669234 +.38267931,.47683439,.042248 +.82053155,1.0581467,.84519887 +1.2109144,.00183556,1.6891346 +.72642622,.93586769,.33316296 +.47129728,1.2006681,.06280491 +1.2069229,.11388987,.53938168 +1.2281388,1.1503985,1.8115594 +.55625162,.01537746,.23551781 +1.5214932,1.403797,.6383624 +.33379397,2.4630969,1.1872199 +1.9160679,.9095147,.12687709 +.7747291,.46451382,1.2107463 +.4441976,.1705739,1.9476557 +1.4027694,1.8255365,.93264151 +.66954163,.13419395,.82145392 +.55968243,1.4611927,.09457531 +.58883055,.34615609,.28478854 +1.0075961,.80325224,1.5762879 +1.1324813,.4408306,.76623136 +.3971986,.5436516,.20256876 +.88911539,1.0344339,2.0957494 +.51416025,.64557362,1.214335 +1.0315437,.62038327,.55715647 +.79706268,.19016711,.47282549 +1.0946883,.48345847,2.3072034 +.93132644,1.5161817,1.1423882 +1.8620647,.89727793,1.0095937 +4.2514966,.24972581,1.3821803 +.40872441,.42915969,.92420601 +.54224614,.07933594,.20538198 +.94623577,1.1058403,1.5829575 +.90815367,.78593123,.31363657 +.49931679,.87708847,.31763783 +.86093053,.03374021,.58762682 +.61758329,.02610407,.72009105 +.55378781,2.0483317,.8102269 +.5587175,.14107577,1.1661567 +.47528691,1.1040854,.82555968 +.36349723,.85035905,.53232367 +1.5444309,1.9763833,.18298941 +.68344253,.49108439,.00787101 +.84873259,.33538647,.68030439 +.92333377,.82386372,.61236905 +.93633165,.21133775,.33819938 +.47188262,.30152812,.71439803 +1.0934711,.91835458,2.1737553 +.56508772,.37572955,.92726384 +.75442022,.68631959,1.5743906 +1.196935,1.1986044,.78675737 +2.2652372,.63902165,.22473774 +.69978218,.67173745,.68055348 +1.65672,1.1470989,2.0139287 +1.8092749,.33187992,.9226792 +1.0605953,1.0327865,.39702543 +1.0248819,.08041959,.43653882 +.28693511,.04940658,1.102803 +.45756144,1.5599237,.05053173 +1.2762801,2.0400893,.83122845 +1.6753127,1.3779274,.4550641 +.63128208,1.0884598,.64143994 +.78574028,1.0159009,.79330785 +.5019598,.34109781,.36314384 +.74576886,1.3135898,.6825163 +.59201174,.94352273,.52317306 +.7424886,1.5780968,.70461449 +.53890126,.72630291,.16203072 +1.2962474,1.3184667,1.9045588 +.67900178,.97194907,.26546355 +2.1096753,.3061128,1.5442255 +.70568819,.0664522,2.2012806 +1.6255472,.49667556,.48027413 +.77252316,.97938845,.43248817 +.88509609,.11403981,1.3473646 +.38147808,.67651443,.09923087 +.49938817,.25716469,.76592719 +1.584282,.99971834,.49769467 +.45076556,1.5412105,1.6285101 +1.0088042,1.5183436,.51013754 +.25278156,.38542501,.26736243 +.45101141,.23879098,1.4248955 +.29885,1.4674139,1.2341312 +1.134118,.51033106,.78746686 +.41156046,.89699444,.04258411 +.33966143,.28486758,.50418333 +.92458117,.84017635,.2694375 +1.1568125,.06116898,.91982495 +.93919523,.6967858,.09130064 +.45326296,.31668118,.25171339 +1.1588417,.34726593,1.28042 +1.0122385,.52094025,.959462 +1.4193014,.59810381,1.8811035 +1.4263091,.00813592,.59057656 +1.3026964,.51724274,1.4861003 +1.3084425,.67840236,1.3982762 +.81249301,.06080568,.30054976 +2.4293838,.57982354,.52260136 +.65322487,1.1806214,1.435957 +1.4534135,1.0620212,1.4306227 +1.4304534,.45144644,.5487009 +.30481317,.34698458,.00073768 +.25699999,.72862882,.36472396 +.59156167,.28733218,.17051157 +.66787331,.22312072,.21745928 +.95554616,.25209307,1.5296223 +.5933899,.61928612,.32863383 +.60491564,.5131077,.17075153 +.44935079,1.2711224,.0369848 +.34567811,1.3632393,.43002189 +.93606321,.32411974,.51634377 +.50208063,.14213095,.49285836 +1.2333472,.74349241,2.1221634 +1.0652743,.09728823,.31398623 +.70975261,.44540635,2.1342039 +.78172337,.08520383,1.0567699 +.97197996,.25263187,.22072878 +.23543946,.75815414,.61539111 +.32584849,.74535583,.02556689 +1.4499259,.48247317,1.8651577 +1.03697,.02623855,1.7344366 +.25729567,.68178175,.13578278 +.79063568,.37944494,.33987802 +1.0391516,1.1175881,.06702534 +.50428659,1.3630664,.47993523 +.58197718,1.9425103,.00641299 +.96365012,.5755307,.83547217 +1.7867447,.21978608,1.3268114 +.61434597,.19116207,.34621941 +.8884805,2.2668877,.60687392 +.5778285,.29388718,.92820838 +.48164735,.74623096,.27036429 +.41954764,.56676892,1.9282016 +1.0217403,.0097891,.29975166 +1.2512688,1.4371677,1.4046293 +.72652872,.25699923,1.0099126 +1.1489382,.34542872,.28141762 +1.0316094,1.0348743,.29493058 +.25853153,.04966486,1.2949823 +.25814369,.95122627,.89541847 +.68045528,.6653619,1.0333934 +.87703915,1.3084502,1.2102629 +1.2890366,1.3447548,1.5827814 +1.4220306,.15605834,.4831405 +.92609575,.51676736,.0190107 +.57951282,.31573163,1.5399811 +1.1192719,.24491327,.46220447 +.88436128,.67397409,.89388206 +.98463568,.62530343,.6247191 +.82574719,.50133754,1.0034368 +.40739953,.1896408,1.2660707 +1.1218234,.63689133,.32450292 +1.2425053,1.0832831,.98851593 +.39237456,.83540825,.42651189 +1.6423465,.10989439,.65962765 +.89251887,.51038348,1.8427915 +.42900972,2.0041961,1.5395004 +.97589949,.14780039,.63493158 +1.5524476,.33022003,.55009581 +.5040096,1.4190765,.73878584 +2.4771355,.14509106,2.1614869 +1.1531032,.5902969,.09629835 +1.0474375,2.0513236,1.9101308 +1.5412121,.00769504,2.3150564 +1.4538805,.18215725,.96368489 +.95741557,.04199733,1.5132461 +1.2502062,.04480667,1.7428467 +.7546351,.13986842,.06715894 +1.8123226,.9414088,.49864388 +.98420502,2.5029556,.18688927 +.68748261,2.0413254,.71558616 +.87765635,1.2221315,.98985832 +.85775586,1.3398676,.43112694 +1.5812913,.85023866,.03005894 +2.1975286,1.0536471,.69357479 +1.6242635,.31361399,.36099165 +1.0041989,.57382612,.79646853 +.90919529,.26960195,.53265513 +.80974898,.54138227,.41194234 +.83329259,2.1853314,1.4382865 +.69708154,.20091534,.99154922 +.50549266,.99700134,.75742178 +.5248457,1.1124544,.50865522 +.71717308,1.0978589,.02253357 +.57548238,1.3667036,.37832501 +.62869744,2.181521,.24914899 +3.0974017,.33489449,1.7989703 +.45582373,.01393257,1.0957383 +.49154696,1.3596049,.78930237 +1.0059624,1.2898471,1.3414343 +1.6136949,.08467057,.36185318 +.93570921,.33816982,1.2097383 +1.3914336,.32828664,1.6038981 +1.0974306,1.0874415,.75652111 +.98886002,1.0810864,1.7766572 +.65482435,.44592409,.0427286 +.6042002,.38964938,.2986051 +.629065,.37757748,.030661 +.61673162,1.2849954,.04857719 +1.0092839,.12384084,.09886842 +.90361139,2.2534037,.59955406 +.71390385,.14532687,1.7795904 +.48087863,1.2448153,.65923472 +.91658969,.18424878,1.537565 +.69847161,.50398219,.23714837 +.45049659,1.1646959,.19264308 +.83406933,.46011384,.60689629 +1.028363,.77525883,1.9716261 +.42902813,2.0505582,1.3925743 +.48154664,.73769317,.15119119 +.86443322,2.2524765,.09184969 +1.3953776,1.1066659,.39048931 +1.3793841,.41659205,1.1677721 +1.0161129,2.0019828,.90458407 +.49815781,1.4395627,.9391406 +1.1123259,1.203925,1.7989487 +2.0668354,.48231199,.09586709 +.84209949,.44410179,1.6067336 +.71749163,1.6469168,.83301625 +1.2708942,.14593116,.31423098 +.77350314,.9018464,1.8755491 +.95587675,.84848229,2.588311 +.89373557,.67498121,.99322987 +.46918518,.90577531,.91514371 +3.237066,.51827592,1.3842365 +.71398453,1.6249664,.03902821 +.68668369,1.1042946,.37116756 +1.9210936,.62677713,.82040623 +.49335598,1.4903962,1.9141254 +.74812578,.65181604,.9384073 +.96281098,.45380783,1.2158294 +.86002088,2.0699179,.17094146 +.68139233,.68746779,.67990517 +1.0329741,.08822572,1.3357824 +.99500591,.41894272,2.408023 +2.0269955,.19618323,.18245609 +3.8543317,.23800076,1.304316 +.33991623,2.1369433,1.4882112 +.88152768,.40435973,2.5378037 +1.1032462,.48652408,.85437611 +1.9244637,.02207619,.62314621 +.93198965,.64700442,1.8463504 +1.1425105,.92523513,.29854877 +1.7498692,.03260935,1.0363707 +.97930522,.17291859,.25822783 +1.7348803,.55493378,1.0738143 +1.1814564,.69347276,.21773496 +2.0652843,1.9424198,2.3272882 +.67199465,1.3387634,.93847941 +.99119888,1.9440292,.26527675 +1.4582682,.24401009,.72192327 +.59817928,1.4102453,.02685653 +.39893082,1.125165,1.680838 +.53281096,1.0149237,.74561701 +.41821171,1.8464336,1.5539045 +.91298542,1.022394,.68527585 +.84518405,.0917021,.63822204 +.83048458,.97669215,.88801814 +1.5777122,.50698804,2.0503746 +.87911438,.47043424,.30159678 +.65994997,.02337443,2.472942 +.9800584,.10476273,.46230523 +.60630474,.1292547,.79232575 +2.8275762,.25128196,3.605297 +.89221557,.67173691,.32336846 +1.0397,1.9151173,1.9576504 +.51315176,2.8084638,.03140523 +.38490369,.9315119,.30673727 +.54070331,.80087387,.3085028 +.6571111,.35651163,.49956854 +1.5120733,.3524768,1.7407135 +.98117069,.71151889,1.0613536 +.63854141,.86142994,.13591826 +2.3920861,.05201678,.92188079 +.54378187,.02173961,.94830682 +1.0778331,.29121887,.8997326 +1.1465504,.39460192,1.6963837 +.74285012,.06731866,1.3665079 +1.8319238,.14278813,1.0251294 +.58120502,1.0329276,.09352369 +.5625901,2.1845014,.70214809 +.82287526,2.1841416,.5276158 +.32510198,.85857751,1.1486787 +1.9178112,.02434896,.11412217 +1.2351024,.37472175,1.5454035 +2.3356299,.39011695,2.1351644 +.65975026,.73709695,.90366074 +1.2531471,.24039753,.33505883 +.89357812,.26981112,1.1204277 +1.0680124,2.3391212,1.638372 +1.7405837,.01495418,.95681092 +.66527705,.32405816,.6620629 +1.1425394,1.9841039,1.971553 +.77643331,.16866995,.74997728 +.70022994,.62785563,1.1583507 +.64843396,.19336273,.3698342 +1.3994799,.13854385,.09491977 +.64021902,.50344482,.02420992 +1.5397697,1.6835802,.93407901 +.51878896,1.6272146,.87079487 +1.1432122,.28973648,.61731358 +.51549904,.89845746,.30829618 +1.1735476,1.2766895,1.1791691 +.23278611,1.6983298,.0132108 +.28023806,.66744885,.85162402 +.96122404,.21864881,2.0440499 +1.184748,.75789236,1.0787314 +.79738336,.81035491,.78906008 +.80180069,.71009337,.61737862 +.81663401,1.3385712,.20146322 +1.1975651,.82707806,.81789856 +.47441522,1.7394403,.49335733 +.30786104,.01643819,.03000791 +1.1460328,1.1998028,1.3301878 +1.0098863,1.6385159,1.6896204 +1.045301,.67192206,1.9046242 +.66329067,.59245152,1.2293275 +.66446896,.60248252,.00906841 +.53334341,.33419492,.11300593 +1.0370303,.17865081,.39733284 +.94885125,.76974593,.08645945 +.76789531,.65154979,.81380077 +.91630892,.15694687,1.0040095 +.81850452,1.1482518,1.3942359 +.99835194,.30527392,.8668255 +1.138369,1.1112295,1.4205638 +.75972742,.90113496,.66318613 +.70238555,.08153155,.35253799 +.51151848,2.1424532,.86759535 +1.9862757,.36588693,.53897987 +.97325277,1.0161998,.53589793 +1.9381077,.802596,1.7247239 +.51163748,.4737081,.75092273 +1.6494503,.88933148,.57931681 +.32830306,1.4543466,.33077853 +1.0343984,.18298075,.41578107 +.84494727,.53447309,1.8214331 +.85659837,.59774737,.21183624 +2.2699398,.44417858,.43991307 +.66199583,1.0320934,.68129416 +.53431672,.33479427,.29925745 +1.2177735,1.4600964,.3433132 +.94753176,.22645774,1.5477629 +1.7718797,.39999381,.32027143 +.72497455,1.5047492,2.2359135 +1.1534321,2.2408652,1.0960668 +.31952745,.97013436,.29604428 +.87590485,.51163595,.0719164 +1.2926663,.28621325,.24911543 +.82892861,1.7513881,.48412502 +.34331418,.66181332,.49552635 +.79784889,.52979561,1.0197989 +.76344685,1.3647536,1.368421 +1.006558,.50312106,1.8732206 +.53337356,.55165671,.65233033 +.80691181,.88213359,.88667349 +.54766382,.36746081,.24469738 +1.1966182,.53394427,.29477685 +.94182881,1.7666008,.03105936 +.79712205,.31493551,1.9967645 +1.7277355,1.5342185,.01263002 +1.0242648,.04940796,.80390879 +1.1076711,.3412647,.88695377 +.57608704,1.268772,.04482927 +2.1854818,.49461828,1.1337886 +.39015856,2.7013044,.79813252 +.51742171,.73465419,1.2290919 +1.257336,1.0066004,.85879763 +.28798239,.84095683,.25506655 +.58691163,2.1704429,1.3581022 +1.4400516,1.1492838,.97239021 +1.157618,.02274203,.93959939 +1.0425572,2.0185739,.86055975 +.89022697,.16027193,1.0609741 +.84583843,.95080963,.41361862 +.61761591,.33665503,.47639948 +1.2083042,.87075445,1.1673134 +.8274236,.38438363,1.0498633 +1.2712023,.5092277,.07004974 +.99205115,2.2217293,1.4701803 +.76522622,.67953546,.35763406 +.89638904,1.2710439,.12620613 +1.4698939,.15578354,1.1174813 +.27586453,.57646718,.5657664 +.54391029,.35740453,.51959394 +.68310684,.70292562,1.3168105 +1.6686406,.27258987,2.1482757 +.28980268,1.7918933,.72165313 +.92867207,1.3946324,.13345123 +.81747758,.25678829,.05541331 +1.4526015,.01691931,1.7512182 +.70334058,.33247706,.32294708 +1.4163819,.20546733,1.0542125 +2.0386701,.33889034,.40917461 +.73774604,.88796244,1.7371559 +1.0279144,1.4079121,.20398293 +.42852488,.74573366,.60004135 +.66711809,1.1529155,.72118045 +1.0452837,.88659744,.14494404 +1.0772717,.3594229,.18077517 +.92431671,1.6809564,.74727597 +.38058636,1.2052227,.10404435 +.90649638,.62769436,.99986851 +.71018714,1.6780532,.45490344 +.79122117,.29457193,.14112075 +.88707274,1.3159452,.31320695 +.8196924,1.1261314,.64840061 +.57830687,1.5035317,.29530082 +.74806615,2.8742505,.29018741 +.56357441,.35626374,.78738486 +.73184409,1.3610251,.02520292 +1.3354498,.10754511,.89782035 +2.2748409,1.2561872,.18961342 +1.3411737,.09310805,1.3844137 +2.9436483,.27726348,.18673989 +.850131,1.0335529,.03327821 +.53381899,.8852169,1.787831 +.84295983,1.6377724,.86375355 +.7763305,1.5921502,.27280982 +.47611494,.74983818,.86565081 +.71573741,1.0380348,.16479487 +.91376909,1.1720571,.76385502 +1.1376342,1.0337033,.93357793 +.46058191,.29038846,.26685378 +1.806238,.91986215,1.4643437 +.43270411,.42733341,.64803474 +.70671024,.2206294,.5332344 +.56302331,1.073828,.64126123 +1.4352064,.0554529,.75922859 +.61476897,.93609741,.42506788 +1.1026167,1.309828,1.8749357 +1.1230472,.42209819,.33537871 +.91057059,.30922425,.6285717 +2.9395117,.37827516,.32444304 +1.4830564,.5789428,.26479622 +.53407053,.23252401,.25424503 +.34008807,1.3415014,.02351157 +1.7797338,.88576547,.87266492 +.46936312,1.0705313,2.2533081 +.51360976,.19150757,.51903591 +.88987755,1.1052084,1.4965798 +1.1277614,1.5505791,1.1160451 +.6535701,1.8700108,1.3852619 +1.4549844,.50618691,.47735131 +.85838328,.07196287,.92111462 +.57496637,.25764767,1.3840625 +.71348287,.45458286,.31294559 +.41844609,1.821658,.51345025 +1.3286012,.69052083,.95743462 +1.242641,.70247281,.37571109 +.63973835,1.6131764,1.5469386 +.82471814,1.8728342,1.2565144 +1.6739859,.22907572,.64424239 +.45809701,.84857095,.33570734 +.70216714,.65215861,.73659484 +.48457766,1.0157218,.04694975 +.87115566,.80270427,.29349265 +.75065529,.13444417,.10312973 +.55125066,.42666691,.67649119 +.79085152,1.7861033,.05557819 +.36371975,1.2416177,.90411287 +.88494671,.20129213,.91725774 +.65017602,.65103846,.60308924 +.97856949,1.0145115,2.1678948 +.50379683,1.9496347,1.2786929 +.39823346,1.8850621,.22509208 +.84324212,.48431544,2.2900591 +.44478634,.9197607,.0568881 +.6000216,.13196732,.03603963 +1.0036877,.56372014,.09593408 +.49380396,.51633039,.36000133 +1.8516688,1.0694663,.91150613 +.61868801,.63814303,1.7566551 +.6345054,.39845569,.38399091 +1.3181722,1.2969793,.8330601 +.64863688,.40466915,1.164677 +.93360525,1.096774,1.734693 +.76943627,.42115449,.08587356 +.41985967,1.6635539,.01976088 +2.056563,1.3065459,.18495356 +1.0009044,.95508393,.17639255 +.61779357,.80739468,.01610261 +.42928901,.2667561,1.1089579 +1.3519972,.42202021,1.6120574 +1.0052752,.95916842,1.9449567 +1.0269684,.45736244,.58809255 +1.2491913,.00289324,.01827993 +.61254493,.99918659,.48386324 +.92242043,.45027626,.43173639 +.68382653,1.8583592,.35767485 +1.5295776,.00617739,.6429007 +.94194437,1.3411328,2.6892416 +1.3518914,.88106228,.52070059 +.80481345,2.2296477,.6736089 +1.1614137,.5521635,.3509553 +.80132111,.87527549,3.5327242 +.89749322,.66374692,.74170272 +.8372396,1.4706749,.12575375 +1.3675784,1.1610325,1.6897732 +.40583478,.79475788,.08005244 +.7515585,.39508128,.56562156 +.69977465,.6211053,.32048103 +3.8612692,.43921709,2.6967116 +1.683355,.99453648,.56420667 +.96694034,.08720046,1.4800844 +1.9150035,.52025179,.76698101 +1.5534457,.05524009,2.2747149 +1.3891862,1.6724332,1.2632951 +.59562567,.04880347,.73284 +.7837759,1.1744235,.13766317 +1.1007485,.9815997,1.0357148 +.72691329,1.3550641,.34998919 +.30029978,.0945729,.49144631 +1.0110427,.62272057,1.0103391 +.66185207,.07075245,.07027109 +.98915609,1.3791455,1.5737993 +1.2515883,1.020735,.29281462 +.71803862,1.5043652,.52104658 +1.7634366,.49867015,.89310257 +.36167169,2.2517288,.09876483 +.51405703,.64699282,.8349744 +1.0906833,.58534455,1.2115729 +.67051786,.31677289,1.2512317 +.37151334,1.4994292,.21379855 +1.7210525,1.1467378,1.5601651 +.21146114,1.2361002,.38146713 +.657427,1.3474813,1.0638619 +.6321338,1.6663955,1.0250232 +.36169992,1.495966,.06608497 +1.7343317,.98258328,1.4350906 +.72516174,.4190473,2.619457 +.85867578,.23658208,.33016494 +.61724608,.37418682,.16409785 +.55606716,1.7137164,1.1086552 +.7109021,.59232338,.10042714 +1.8060828,.01359627,.37763022 +1.3748144,.34463479,1.9387517 +2.4445397,1.1293817,.8543036 +.65665653,1.2830217,.60143115 +.96999708,.99240981,2.2441493 +.72239652,.11522013,.40013394 +.41380084,1.2666949,.68763439 +.79031067,.0299053,1.2914343 +.50382229,1.5535933,.45249866 +.74883299,2.0591593,.8926443 +.41866451,.84279827,.46667332 +1.0131767,.41964834,.56384563 +.64260829,.91036171,.56599318 +.95080322,.45283219,.82163086 +.8326562,.8140955,1.6570383 +.54972648,.36270693,1.4717213 +1.3682586,.32017597,.80406282 +1.1608999,.60883663,.10991253 +.96757864,1.0359348,1.1496763 +1.1157544,1.4223737,1.4284294 +.51076867,.99954653,.4617003 +.79650559,.16755752,.65621758 +.46087439,.85378906,.5164061 +.94493839,1.0542039,.50774796 +1.2701761,1.5687511,1.0062379 +.68584737,.21662659,.43881156 +.88865133,.1198649,.64201826 +.59002874,1.3810103,.72932694 +2.140814,.14790689,.66820445 +1.1468312,.47581916,1.1420064 +.73454436,.36804665,.29849541 +.40705367,.9804978,1.1604101 +1.211607,.17242833,.4316821 +.99892713,.20286933,1.9378252 +1.003844,.75010173,.89056836 +.3230555,1.3978866,1.0467815 +2.279349,.53856046,.37552712 +.45260504,2.2808994,.755071 +1.0514415,.0479299,.43086797 +.85212271,1.398481,1.2055918 +1.137416,.40771806,.41776914 +.76015949,1.2763576,1.6384868 +1.2012632,1.3393502,1.202671 +.43223384,2.3972317,.76612685 +.24866551,.37215633,.378587 +1.1194324,1.6635407,1.596691 +2.4609605,.33098315,.34580547 +.90980418,.71502578,2.1297623 +.7505094,.82733585,.10495601 +2.1108574,1.9360592,.00538293 +.7537439,.47445743,.10541552 +1.5095787,.56466043,.31271367 +.95916256,.19612679,.13291025 +1.0093769,.69734004,.07407861 +1.1743677,.53265349,1.1607162 +.46902457,1.8625502,.87868071 +.53043354,1.3951512,.23304308 +1.1283112,.61197189,.11106505 +.75573757,.34533939,.37386731 +1.5247857,1.2491021,.6294929 +1.0011896,.62692841,1.1452116 +2.1446981,.60199721,.51101034 +1.2146605,1.7363796,.68562495 +.75158869,.66134579,.5641969 +1.5234346,.36129582,.21569861 +1.0730998,1.4165611,.30761591 +1.260747,.59965736,2.7940657 +.4111881,.78715319,.17473871 +.97214029,.75130821,.99507198 +.34922801,.27622185,.98655513 +1.3993495,.47465049,.50527465 +1.6825065,.92129856,.82251089 +1.1082405,.27401443,.34278236 +.84660304,.69748108,1.204355 +.504893,1.8498264,1.2615266 +.39109027,.78214587,1.524117 +.49570315,1.0331719,.70146036 +1.0698898,1.324837,1.4009371 +.48208488,.79335967,.69613632 +1.4322304,.24079474,.52405083 +.98036955,1.5250164,1.2436737 +.61717251,2.380277,.7112296 +.80475762,1.3809198,1.6914776 +.70350193,1.2663026,.91154843 +.47197766,1.7266162,.64443607 +1.081255,.55626947,.98621607 +.99240106,1.3330063,1.1163342 +2.3560618,.76228308,.4640043 +.58381855,.79006898,1.1465757 +1.1931729,1.0244351,1.2548812 +1.4388181,.92269987,.9682689 +2.3894312,.18819694,.08632469 +1.2428454,.27443906,1.2984849 +2.6581556,.03937451,2.9169412 +.54372599,.91867799,.41358712 +.51967153,1.5997562,.1156273 +.2454119,1.5887386,1.9161883 +1.0673035,.86315742,.58606906 +.78170966,.23804783,1.4142981 +.70627347,.61116293,.98229192 +1.7438231,.64981113,.28433647 +.76017059,.21564464,.23653714 +.34084643,.80779215,.1470733 +1.5209847,.27622967,.37629474 +1.7999979,.17187567,.72901129 +1.2656862,.19265862,.52039305 +.74428519,1.4810955,.28601676 +.60773737,.65121488,.58168664 +1.2757264,.09762913,.0755984 +.57722391,.26079391,1.1229892 +.294211,.39975253,.49542248 +.58264963,.74408229,.9655736 +.63553504,1.3616214,.93357311 +.99022969,.42107268,.03938398 +.56447266,.25545594,.38876146 +.32537928,1.3861539,1.959317 +1.3375609,3.4505543,2.5399279 +.76826425,.41812134,1.0034346 +.341369,1.2208407,.249982 +.2534029,1.2286357,.74660874 +.88396443,.0611366,.02326218 +1.8049417,1.0190341,.61845119 +.61528359,.04162779,1.4442826 +.51267393,.99599957,.79193868 +.7328387,1.1330089,.12505342 +.52132329,1.8319001,.79166755 +.77387653,1.5361433,.69341974 +1.1410053,.4889815,.89000195 +.73951465,.18311916,1.0144149 +.68370722,.65338644,1.9171182 +.79570595,1.6635741,1.2504051 +1.6380877,.12564491,.28153375 +.62741852,.1383938,.55179206 +1.1496048,.51588,.56573959 +.77914195,.75506845,1.4343908 +.38959483,1.1289781,.12677681 +.44394525,1.3024535,1.3418575 +.7506595,.30331062,.11680581 +.83579579,.26794467,1.0836801 +1.3765829,.39268382,1.4407833 +.69005712,.58745601,1.3458903 +.75375695,.4759585,1.2881235 +1.2593951,.57479449,2.5969172 +.56968959,1.2192412,.95716896 +.64048023,.53433558,1.4400331 +.65809142,1.3699416,.00215759 +.40419443,.54748962,.70680889 +.73517446,1.9702168,.42868976 +.87201748,1.9974799,.32082944 +.551655,1.587772,.21353597 +.5346005,1.1669322,.47036186 +1.579357,.53502794,1.1459036 +.71594092,.60387922,1.0273613 +.3088599,1.0314866,.4957908 +.96772115,.18344852,.46039355 +1.3309959,1.7458215,.19107811 +2.2565574,.53142206,2.0249958 +.50602053,.7715328,.28502085 +.89653617,.75689872,.700782 +.56376852,.90747261,.46998247 +.79136374,.33469753,1.6972846 +2.9802743,.86200326,.94247576 +1.7639984,.16751284,.85954519 +.67230785,.35128599,.36419167 +1.1757045,.09494118,.43859542 +.98651933,1.4886163,1.0256599 +.95817462,.92879805,.62640626 +.57734025,.2977826,1.008751 +.60408903,1.8382158,1.5879039 +1.2895257,.25252247,.90453826 +1.1730264,1.1413346,.07920942 +.55693917,.61050222,.4021869 +1.2767835,2.1086872,.09777634 +.99904755,1.8851797,.91615154 +.72858815,.49478014,.74355 +1.4174416,.3171881,.48606227 +.72633888,2.9565212,.46772148 +1.1472929,.43993105,1.556815 +1.7102931,.61802745,.70957858 +.49096349,.9261732,1.5997687 +1.0860813,.05952443,.86168729 +.37877165,1.3363298,.03360755 +.81562565,.49253685,.38370216 +.64540606,.04320847,.39056016 +1.2859094,.86899032,.87929611 +1.5549128,.2753672,.30264594 +.89268912,.00857028,.51414243 +.32301921,2.9894963,.126393 +1.6960788,1.0610038,1.0139548 +.66497594,.51362741,.17628108 +.67335669,1.4637958,.94685909 +.49452054,.68942395,.67701541 +.96965667,.27336162,.07988311 +.6460602,.79389188,.28578402 +1.0952182,.62377598,1.6780965 +1.0811279,1.3825632,.56570724 +.50254273,.10668498,.59496073 +1.1584338,.79800623,.42679921 +.46733813,.20704319,.26344221 +2.1653941,.62327112,.69706654 +2.1213264,1.177559,1.2045835 +1.3958926,.76635521,.30352198 +.47731292,.82364266,1.0446458 +1.1937042,1.1978972,.2967232 +.6697209,1.8806006,2.2258698 +1.481525,.32776387,.95335842 +.76871022,.09352338,.40415217 +1.7031365,1.205512,.79949222 +.46360416,1.0014711,.37347746 +.83752183,.87089208,.34064991 +.72348482,1.0863294,.86747517 +1.880795,.39701566,1.0626412 +.29971728,1.1753352,.96086118 +1.0542886,.62727815,.83786093 +.99999212,1.0344991,.71421457 +1.073182,1.0249634,.25227645 +.90508584,.36563192,1.1310504 +.5545815,.26418631,.24857294 +1.0795784,.6757179,2.7125857 +.3356386,1.0273191,.29078078 +.91992421,.97189047,1.8507092 +1.850879,.58871176,1.1149149 +1.1311402,.17483811,.92345778 +.9221055,.75227148,.071068 +.8387141,1.8462389,.24335833 +1.9445926,.55661953,1.8715441 +2.4239046,.05605995,1.8879381 +.70667505,.85355133,1.0982084 +.2984815,1.1007689,.8382904 +.65841921,1.5350167,.35630673 +1.0889769,.01579271,.18793756 +.63797256,1.0021881,3.0841111 +.28064504,1.9334401,.77867102 +.4123002,.76911936,.34286394 +1.0679185,.39635715,.53113668 +1.0665659,.03137289,.29694997 +.4778217,.07650267,.92594974 +1.1904829,.94968668,.04569035 +.74876548,.14176106,.02068871 +1.0758501,.2997165,1.0008704 +1.0459665,.58795876,.10563085 +1.4144844,.44520456,.29617318 +.90182407,.90994574,2.4705838 +1.4685463,.18179108,.35956567 +1.0402522,1.2197828,.78321954 +1.274161,1.0454062,.2426948 +.33673853,.58736458,.20758136 +.9805352,.59952631,1.3173737 +.8204386,.62240609,.76933675 +.80112957,2.1047413,.66455204 +.85150965,.82066012,.28705353 +.51737538,.48384208,.42126236 +.44164118,1.3007999,1.4128468 +1.100313,.93524888,.60267371 +.79547821,.78843821,.01391279 +.66399811,2.9562415,.35172165 +.80397315,.26508382,.55345537 +.73700572,2.015043,.53797706 +.46353032,.41801331,.68283191 +.7106795,1.6182747,1.352688 +1.2972999,.50921805,.87615474 +.64190113,1.7149111,.23836146 +1.190358,.08812753,.12776276 +1.4229511,.03313561,.89975269 +.92745217,.10968805,.69941062 +1.3279616,2.0667919,.01566966 +.32299109,1.2321182,.36547789 +.8177627,.25077477,1.4886581 +1.0409007,.26599843,.87310691 +.68996234,.01247271,.23986765 +1.4404797,.03216535,2.1873132 +.52952047,.21041413,.1025193 +1.1541462,.19119114,1.3458813 +1.4282617,.84979069,.00774843 +.46855795,.83455696,1.0251371 +.2155313,1.5827496,.21772033 +.60805884,1.4083281,.09262593 +.6054703,.28413593,.97518925 +.7871481,.42588719,1.3412141 +.70256854,1.4771014,.23389481 +1.0161555,.69772399,1.829215 +.61696536,.2752298,.55397186 +1.4660377,1.0472005,.72011881 +.6311237,.11997638,.35573224 +.56364502,1.6252635,1.1387235 +.79700018,1.1070177,1.6786058 +.66963712,.39690119,.07698428 +.51790377,.94778651,1.0758125 +.39154203,.3230179,.15668665 +1.2017909,.20599759,.82216793 +.94905243,.47663558,1.8187289 +.53471044,.47443313,.08789604 +.63882704,.80184144,.72268707 +1.755853,.12865792,1.6086874 +2.5845727,.35908781,.2655599 +1.1714629,.6280663,1.4304675 +1.0317356,.46998311,.35036009 +1.1922412,.70974437,1.3204282 +.641276,2.2007299,.31705982 +.74827382,1.0326172,.98687069 +.7272804,1.4184312,.81326698 +.45506363,.23353038,.27452419 +1.2686848,.41000017,.27836158 +.87096775,.78973294,.07606283 +2.2129782,.77526736,2.0511335 +1.2740197,.27738899,.09949579 +.90390917,.71700214,1.9286841 +.65708246,1.3723792,1.0728429 +.43724451,1.4459452,.58909104 +.59815403,.29479251,1.5760396 +1.045212,.9320486,1.0480758 +.82130967,.35742976,.96449173 +.68640007,.10516102,1.1725288 +1.0603457,.13955647,.15987175 +.88701845,1.4644431,.76875773 +1.7117634,.23946109,.40448412 +.85911258,.77468677,.73292788 +.69986248,.64752796,1.0894273 +.69985465,.84369996,.38937055 +.7454938,.66403663,.43553825 +1.3949147,1.7101482,1.4855226 +.52681967,.53464861,1.60624 +1.0699687,1.9722205,.71052693 +.82008938,.54302814,.05064995 +2.4907422,.1156249,.31772322 +1.5478425,1.0632836,.10159438 +.96976699,.33488078,1.2403578 +1.164841,.29947108,.59649999 +.52882539,.15870494,1.3606344 +.25899853,1.8690266,.11030614 +1.1744088,.23568812,.98066378 +1.3865832,.9022365,1.4884158 +.48920009,1.6756023,1.6219493 +.80643065,1.0316541,.12880359 +1.4905863,.01379394,1.0376542 +.9821439,.3427752,1.0207326 +.511289,1.2083944,1.9324896 +2.3720218,1.2069202,1.0975525 +.68773925,.43044384,.35587117 +.7847506,1.1048931,2.8979351 +1.9440447,.13857067,1.5050616 +.44293619,1.8804112,.40086871 +.80554303,.92506318,1.5373136 +.73634968,.85098648,.56831903 +1.3778185,.4659565,.96453171 +.59977537,.67312004,.18006616 +.94281164,1.2948901,.66664127 +1.4624759,.12255063,.8338771 +.57720093,1.0761614,.49185458 +1.8904343,.1676701,1.1636951 +.93954462,2.1426951,2.3371858 +.48651071,.66995238,.32814218 +1.3737674,.90392018,.17504725 +1.2007835,.84632914,.73347954 +1.5665297,1.3608182,1.5764686 +.6699501,.84150812,1.8023458 +.82466776,1.2049156,.42415934 +1.2101392,.00376289,.11607048 +.32329943,.944626,.63240153 +1.0751014,.66439496,.51883388 +1.1431588,1.1336342,.35831627 +.43885844,.54012904,1.6441192 +.76529523,.01898198,1.2698219 +.38991388,1.4044875,.09152085 +.8011662,.81551689,.26713589 +.77002349,1.1086508,.28078188 +.6078782,.93494426,1.1331066 +.5500737,1.9561205,.8198744 +1.7234448,.01404995,1.1368962 +1.3764158,.11025231,.15448629 +1.5179455,1.6208317,.73258542 +2.2917066,.65989406,1.2092868 +.52138948,.84889826,1.0862497 +1.4782516,.77784038,2.3520386 +1.0302612,.03596586,1.2354273 +1.5277013,.17318611,2.5836427 +.35382149,1.5211208,.18078771 +1.3853009,.38318695,.28725566 +1.0304598,.42440037,1.2984801 +.43989152,1.2349505,1.3706805 +.61537969,.83122263,.37729679 +.60602029,.3897508,1.4532127 +.49113148,1.7287253,.81169672 +1.5956586,1.089833,1.3368785 +.48573812,.42408888,1.5770412 +.4728521,.81354889,.65250519 +.78758148,.04866899,.06548823 +.89835279,.51514742,1.1720255 +.71081451,.06354228,.65330186 +.87574201,.37076907,.47067214 +2.5657248,.31115354,.78898916 +.62497093,.51734045,.78561174 +1.5272874,.62607297,1.2709494 +.73423386,.3459351,.15440847 +.63644132,.06489324,1.6602738 +.52546862,.00324421,1.8847122 +.93758031,.37767061,.3039469 +1.5312276,.649624,1.7111675 +.89520463,.55669122,.64368087 +.5432024,.13825704,1.1269034 +.80009155,.75355863,.4260827 +.892308,2.405771,1.1721852 +.8057735,1.3674782,.68326701 +1.0790204,.34949035,.68920505 +.60839582,.68192234,1.539223 +1.387514,.66440428,.40610925 +.48374823,1.8088855,.41081886 +1.5241458,1.7493578,.0690786 +.45620219,.32378896,1.4949885 +.989533,1.4045841,1.5802833 +.95825801,.78840391,.06365899 +.42176272,1.3429657,1.3752332 +.67131991,.69752961,.71150558 +1.4094008,1.1038204,1.776774 +.40780649,1.8421167,.39125824 +.56564603,.97118399,1.4085407 +.68461121,2.2171935,1.1621613 +.58492624,.26205182,.8457872 +.61193384,.40046772,.37210877 +.7181795,2.495527,.33143809 +.58122589,2.7092935,.34560016 +.80604466,1.2526783,.5288156 +1.6568962,.67176767,2.4549713 +.54675697,2.4886301,.00135286 +1.1326221,1.5538809,1.0856787 +2.7966947,.20528721,.2700297 +1.0740939,.08148919,1.301275 +.59496402,.56969206,.95069107 +.5502181,1.1371734,1.7848372 +1.0207004,.08238928,.16680653 +.80158183,1.0662623,2.3007266 +.8476431,.96202152,.50830481 +2.0040826,.11448967,1.7034614 +.68901557,.79517865,.60259666 +1.6754618,.77180543,1.3821321 +.42285826,.54181869,.27028404 +1.0301684,.56767,.47260856 +.68703673,.43908821,.02554759 +1.2906834,1.5320878,1.2629509 +.69115566,1.4673091,1.1781198 +.73399844,.05423342,1.4808245 +.6379787,.64830079,.12768723 +.31968394,2.3686876,.52084046 +2.6218271,.12052284,.63759165 +.84207914,.97150714,1.6668521 +1.0556714,.71157655,.19730626 +1.0248231,1.3411618,1.3818498 +1.6802844,.76983026,.49999005 +.81928536,.15261692,.05798912 +.76888602,.97298694,.96798158 +.79146184,.46111772,1.0454408 +1.0120684,.96277085,.3433203 +.93996698,2.2436156,1.261481 +.43002318,.13681401,1.3818642 +.46863441,2.4035607,.24023597 +.75544858,.50305008,.53708025 +.53792644,1.0496871,.66928628 +.78457301,1.5162856,.34971363 +.29284021,.50592443,1.5766076 +1.0064186,.99141701,.31726868 +.30343024,1.8312391,.5689771 +.61682106,.68393385,2.5491877 +.31741099,1.7944744,.5957181 +.39657725,.72168092,.56590164 +.99652524,2.182144,2.2194541 +1.1098488,1.636562,1.8283081 +.86127273,.98647252,.97290901 +.90627155,.23527134,.97115 +.46852082,2.0303105,.60126367 +.70168412,1.8709146,1.286154 +.81791074,1.0725352,.39184028 +.67978968,2.0662519,1.2815359 +.50706106,.73831836,.04114588 +.26284938,.40002314,.33620673 +.28228419,.3684073,.60331416 +1.0245653,.9196898,.25747886 +.68603572,1.8065214,.1045295 +.75316556,1.5611793,1.785953 +.5732342,.70458956,.1199523 +.73438127,1.6352566,1.5164681 +.98019843,.33914598,1.3515618 +.46987627,.6611661,.1488964 +.44091239,.8221693,.24891041 +.54199298,.71953243,1.1307823 +1.1961004,.34053786,.51283116 +.3529863,1.719374,.54492829 +.99202998,1.2930323,.86558959 +1.2262024,1.340853,.37333314 +1.7498736,.40714006,1.6375585 +.92073792,2.1842282,.73863433 +1.1114244,.73598836,.13468304 +.55895217,1.1367176,.4883239 +.71548639,.97192324,.10534762 +1.0254742,.7871825,1.1281103 +.71074228,1.0711343,1.0535819 +.46979995,1.1142266,.80479818 +1.1007972,.56736962,.07787769 +.67678199,1.8251798,.99155184 +1.5754684,1.0551164,.26714414 +1.9899424,.85344689,1.6308766 +1.691636,.10790867,2.8449326 +.73311677,.4687263,.26092205 +1.423267,1.5701612,1.2499772 +.85533021,1.3304458,.01875169 +1.7004815,.11271902,.1297552 +.89470596,.26721631,.54347976 +.48946112,2.8376515,.14156029 +.69175369,2.5173918,1.4175256 +.6568788,.92550353,1.8299516 +2.0381619,1.7264101,1.6124126 +1.0946311,.88830855,1.621799 +1.9740235,.55440402,.0503428 +.46972959,1.9430539,.38817507 +.78035143,.28573912,1.5202393 +1.2602277,1.377517,.5984185 +2.3643502,.07349329,1.11451 +.40125273,.25066329,1.2828228 +.91178752,.04696589,1.4123513 +1.0862337,.64552562,2.2500101 +1.4709859,.72245713,1.0861154 +1.5542753,.63253862,1.6233693 +1.1353034,.39007677,1.5586195 +.95430344,.52154,1.1031938 +1.0428882,.46666079,1.7868502 +.65117162,.65966167,.96701746 +.84685375,1.2743207,1.1234658 +1.1621632,.17679951,.76884636 +.98191682,1.1610831,.73914054 +.73845059,.39466257,.75669522 +.62827515,.09093031,.57277374 +.72539756,.47537619,.49259283 +1.6848686,.81782103,1.3729511 +.86544122,1.3477547,.30493218 +.73481519,1.2360775,1.2928828 +.60925245,.24737012,.90055192 +.99820261,.13736152,.43431188 +1.6705078,.25253844,.43446226 +.42822625,1.8477336,.77853985 +1.1277918,.53964224,.28243815 +1.2897066,.06048806,1.1189281 +1.6344319,.06935833,.71146327 +.57652083,.55615951,.12204357 +1.1658591,.98283092,.47286043 +.7391346,.21558555,.6136926 +.41890561,.68231617,1.0597653 +1.3910817,.24546365,.41983524 +.54791426,2.0063684,.03275667 +.63704814,1.6620307,.05536938 +.69839693,.04652865,1.0944907 +.44557227,.28312227,.44834887 +2.1071899,1.1867673,1.0305468 +.63607733,.98138998,.15859779 +1.2515705,.20409451,.3549423 +.60509605,1.3705927,1.5443346 +.66277312,.55982358,.15757925 +1.1312492,1.6307832,.359275 +.30551346,.17013804,1.9970312 +.63546053,.70280098,1.1916681 +.47073699,.71215598,.95712486 +.97974438,.78630876,.36910812 +.72573604,.77152233,2.087028 +1.0767165,.76625498,1.8125896 +.89025567,.19901534,.57824766 +.69214192,1.7208873,.85841763 +.87594935,.23912813,.33186255 +.49001765,.43073439,1.3007571 +.67783091,.51355471,1.3665486 +.49596505,1.0163832,.28786615 +1.3737318,.40099884,1.1681101 +.36888474,1.4738983,1.5998317 +.72909191,.05674401,.01908648 +1.0801888,.66051598,.98309355 +.49215344,.85915145,.09928457 +1.0653597,.06349701,.23086159 +.62202697,.57539261,.27716136 +1.6945299,.47960587,1.7085087 +1.1800752,.39563335,.86527473 +1.3051541,1.3242409,.68986307 +.99756735,.17969678,1.3448787 +.53884797,1.2913767,.02144505 +1.0519235,1.2266852,.81479638 +.59335169,.47458662,.63963323 +.87180269,.34749879,.41437328 +1.8524289,.81286978,1.0320681 +1.0474137,.07789185,1.1893338 +1.145159,.63631009,.7933669 +.87307506,.88265292,.45401588 +.64256583,.30932317,.80045675 +.75764515,.26028617,1.6920241 +1.3392983,.09173893,.26281915 +2.389493,.01655967,.33794507 +.47840351,1.0984928,.87653382 +.28309748,.29309336,.46081878 +1.6927498,.02502303,1.6178668 +.62079182,.49872266,2.40335 +.9115411,.1927299,.76267873 +.40825077,1.2228202,.39169087 +1.4388549,.94242572,2.3495221 +2.2743517,1.1480887,.9021052 +.51516903,1.3444207,.32159303 +2.1165007,.75041339,1.1454733 +.53351735,.60067861,.44107962 +.33530645,.55512979,.13537312 +.40743896,.84718587,1.4250781 +.65059327,.10954351,.31912284 +.31709605,.61418894,1.0683603 +.65780787,2.099307,.2366118 +1.5212206,1.282327,1.012725 +.87450061,2.2007675,.60970883 +1.0799732,.57724147,2.5944183 +.94413887,1.3756552,1.8656791 +1.7365473,.20577655,2.2533824 +.55029785,1.185433,.87610681 +1.011878,.13908229,1.01692 +1.0084511,1.1453671,.4373408 +.45564655,1.6474765,.92482456 +1.1840859,2.2929181,.09220066 +1.0201075,.73954043,.39548316 +1.8282521,.09945121,.58005907 +.9943383,.75198539,1.0881266 +.73260989,.48065225,.82917129 +.74358214,.91312148,2.0023067 +.99152868,1.7400195,1.7613443 +1.1036359,.28594568,.61951033 +.82016892,.11275873,.79572369 +.61756002,.24458409,1.365856 +.66452035,.49292859,.56821754 +.26770627,1.347178,.64008789 +.90963297,.18036549,1.4434721 +1.2378269,.01452719,2.0135832 +2.4514809,1.0889443,1.6033611 +.71210265,3.0960524,.71044344 +.63046342,.41210754,.71512462 +.59359393,1.5684231,.61166492 +.717434,1.2722121,1.0652174 +.85438668,.47774161,.71435629 +.36278251,2.8237636,.08000486 +1.5193325,.95810776,1.0983787 +.74651604,1.1627567,.6004484 +.75726547,.43600975,1.5408649 +.50408871,3.9074395,1.5177831 +.56625585,1.082451,.90134688 +.40145945,.41157417,.33803008 +.38273386,1.4776745,.87096823 +.78504657,.3771612,1.9051846 +.59665682,1.1852006,2.1403582 +1.3224756,.19048438,2.204121 +1.0433785,.02374107,1.3060626 +1.4312443,.65877574,1.6407733 +1.5829985,.46402247,.83839133 +.68718165,1.4750065,.25083794 +.39304378,.11236949,.15582904 +.41088263,.762074,2.7919812 +.75390571,.16960763,1.1395617 +1.0381094,.23361115,.89496869 +.55853888,.46594298,.03929856 +1.094113,1.3695998,2.354086 +.54119978,.88987496,.23161028 +.68081688,1.4578224,1.0363442 +.7761126,.14366911,1.5393136 +.62834159,.70438714,.23352584 +.33700098,.87159865,.70550665 +1.4982525,.12707278,2.1641879 +.73339681,.42636757,1.5224366 +.26623258,1.4082577,.14752251 +.9633237,.73576502,.3829062 +1.7371878,.01573596,.71388248 +.54287514,.23360768,1.0600341 +.67708148,.08078811,.73156039 +.36279195,1.1169635,.62309178 +.37461526,1.5766097,1.0665521 +1.9183065,.47219541,.36960737 +.59009435,.64252473,.77136532 +.86493671,.43550938,.35764769 +.79516927,.20856808,.32538873 +1.2475443,.80132768,1.8450558 +1.8660311,.45804356,.37272752 +1.1704848,1.2795998,.27018715 +2.191488,.42899396,.43720209 +.6856812,.97775534,.03215836 +.53953988,.67320266,.78908604 +.82101524,.4515384,.79658045 +1.8729467,.15865673,.0156477 +.41089259,.14573355,.93500356 +1.1902067,1.6799266,.86295938 +.51088859,.04741115,1.2115141 +.46044334,.01697541,1.4513885 +.94497994,.0465958,.72782335 +.95426173,.08576343,.44832035 +.53431261,.32750722,1.6359562 +.89179074,.45544218,.16792722 +.78525737,.54588599,1.3178325 +.8176419,1.6688939,1.6880475 +.68375947,.11231432,.55051297 +1.234975,.47969716,1.8832152 +.8741358,1.1494193,.48588358 +.79847389,.13063425,.85869956 +.17684966,1.9544564,.33041243 +.70784992,1.9278106,1.3106408 +.84211007,1.9918981,.32008946 +.79415617,.61387132,.89069898 +.93890214,2.3720596,.79540913 +.59431689,.92929209,.28359537 +1.0313982,1.320247,.93787366 +2.1736195,.06175835,.43872613 +1.5248522,.47890819,1.5286595 +1.2790994,.67091532,1.5713676 +1.1078723,.54047399,2.0748221 +1.0735287,.7965993,1.7137847 +1.9139763,1.3862515,1.2060726 +1.0717639,1.8518727,1.1442408 +.55931209,.81947681,1.6298637 +.71218644,.49022192,.52738802 +.97643231,.91092679,.1576837 +.760056,.77133951,1.3759526 +1.0255595,.25310678,1.6020035 +1.1789741,.03793684,1.2525538 +1.8373167,1.7735682,1.212536 +.49862352,3.183861,.53050466 +.77695877,.8383058,.15184067 +.65079833,.38666912,.00738511 +1.028228,.8175014,.30066449 +.45142128,1.999164,.40890666 +1.382093,.69590408,.48315307 +.43406247,2.0120365,.30493702 +.88592249,1.3240961,1.8229244 +1.4017569,.90519305,.13440987 +.93036832,.11311971,1.1296779 +1.4998794,.68436801,.4845666 +1.8495839,1.0301779,.98630955 +.47135722,1.9007718,.07597082 +1.36119,.94391867,.3411666 +1.2726783,.33379609,.97719302 +1.4552615,.28197161,.66272185 +1.7789666,.27222589,.32858692 +.7047542,.09787513,.5302369 +.81813668,1.120855,.16134092 +.52730183,.57534108,1.9446869 +1.0352745,.55399404,1.4223773 +.65887407,.38928787,.11770774 +.91050161,.86307863,.16240567 +.58052361,.09133119,.09169118 +.51080522,.29491516,2.0923918 +.77110427,.83394328,.36303702 +1.0942698,.45321885,.67933546 +2.0458806,.0100524,2.1424301 +.75954232,.3058072,.94536328 +1.097533,1.2197923,1.005456 +.77072435,1.4712381,2.4133118 +.99809,1.9624234,.48723452 +1.9443342,.11592663,.08020532 +1.1065046,1.9983129,.49757851 +.44289806,.08992334,.98297948 +.43367959,1.016142,.86363246 +1.7394464,.28128481,.58542214 +1.039854,.33110616,1.7401253 +1.6744262,.11586323,.15143227 +1.6420491,.14093105,1.1409539 +.77217172,.29278592,1.973422 +.54360349,.41084842,.04285688 +1.3812963,.48245004,.50099176 +.80379242,1.3792779,.44307637 +1.2585226,.544979,.91650153 +.82401265,.58241529,.94811316 +1.1273318,.20419836,.82175665 +1.4701579,.45376229,1.7832048 +2.3482358,.06276887,3.0869728 +.73878489,.21607824,.52228736 +.63187102,1.5354828,.62421021 +1.3233169,.30804965,1.2682667 +.77454055,.83509351,1.0647361 +.68037396,1.6820788,.55447179 +1.5860191,.43523541,1.823908 +1.1482081,.01783032,1.4301662 +1.3895932,1.9437183,1.0701296 +.5413939,1.9692661,.4219836 +.87981187,1.7619975,1.0063278 +1.0273483,.62918815,2.096531 +.8033694,.79547511,.15196158 +1.5488215,.60713881,1.1447265 +1.0591065,1.764276,1.5240668 +.45834325,.8662343,1.6685728 +1.7010706,.5563087,1.3601928 +1.019727,.13330042,.34026553 +.68698864,1.9603751,.50300679 +1.4135308,.82399621,.66611932 +.59100861,2.1838842,.59357202 +1.0742518,.0218821,.1062736 +.78735906,.86571564,.75694134 +.9710071,1.1144243,.7946435 +1.1484294,1.1839502,.05840251 +.45816524,1.5086169,.67557386 +1.1983797,.4826159,1.2167327 +.59792768,.98925141,.97656329 +.75197277,.78583098,.89866397 +.96671397,1.2917225,.08924862 +2.5108524,.03478235,1.7602568 +1.5187068,.06502577,.31469456 +1.1872203,.78953834,.09602183 +.59740415,2.286946,.52265312 +.63178234,.27555936,.20475854 +1.1557705,1.1545463,1.2510105 +.47188295,.68654399,1.7695837 +.70950029,1.5071188,1.6775958 +.4235061,1.0722132,.74049538 +.34841534,.39185631,.26515107 +.88360763,.83555569,1.4968759 +2.0386213,.02481221,.72910886 +.87403656,.69381817,.99651063 +1.1167521,.44353485,.00126197 +.38571745,1.7267019,.95367775 +.93583424,.29313829,.05286692 +.79934872,1.1509966,.54173961 +1.1493251,1.3097416,.33309489 +.43005081,.94315551,.11413794 +.80759909,.56937509,.28179157 +.98561533,1.2053753,.0603198 +.82081468,2.1011066,2.3791904 +.86205322,1.0256311,.35429131 +.4892764,1.6827485,1.0140344 +.23545278,.08964238,.58577933 +1.8221486,.27642458,.28413962 +.91428521,1.0036514,.22545372 +1.2035419,.19042845,.8849769 +.89551078,.04346521,1.3678007 +.5790526,.38059918,2.6241926 +.75467272,.15187527,.6086501 +1.8312269,.60790561,.91928158 +.99623889,.94963413,1.0619191 +.72941978,.06163065,.10478876 +.5604464,2.5324887,.0294161 +2.3358032,1.7661579,.59238141 +1.1398303,.13846687,1.041109 +.98754213,.18657635,.09054038 +1.1736881,.12723443,1.0616905 +.55437195,.05589629,1.4266457 +1.0011109,1.1942835,.20267647 +.49341057,.41991689,.77742241 +.98035402,.10314097,.87210427 +.95394486,2.0988299,2.5119299 +.58274057,1.0083003,.85524571 +1.5213445,.14762319,1.3355354 +1.0698814,.40915004,.61682281 +.64308084,.65953447,.03213595 +.49176545,.56117512,.15531043 +.92749169,1.1116951,.83918469 +2.3355536,1.4473503,.45568771 +1.1210497,.4311301,1.3478889 +.72275207,.50277652,.71630301 +.69072569,1.5816351,2.3720443 +.57706827,.15233937,.67792287 +1.0251218,.88062511,.0589186 +.3606851,.36362588,.27831406 +1.4567952,.31925057,.21268825 +1.2556676,.46240284,.22620279 +1.6173642,.47679374,1.1116724 +.67758563,.13490735,.72609758 +.52804851,.9301583,.49254006 +1.1224549,.49948054,1.233004 +.77600105,.51058049,1.0061864 +.61185169,.26458561,.26053772 +.87611829,.48416321,.92352689 +.77045494,1.1788475,.04963148 +.68984673,.01945841,1.126364 +.88812596,.69472347,.96285227 +.57395513,1.4182448,.66106921 +2.2142112,.13473365,.75683935 +.84508793,.84921189,.77873825 +.70543005,.83948315,.20687013 +1.4454522,.89816798,1.4435143 +.23115105,1.4051468,.99495838 +1.2741663,.12348929,.00589696 +.85187529,.33361721,1.0819021 +.65696986,.07723375,.46344831 +1.3416359,1.4244147,.40423882 +.7763617,1.182493,2.5101812 +.27082378,.06301406,.67483008 +1.0875698,.25954449,.83829696 +1.6085887,.21756044,1.6817482 +1.0253152,1.1409416,.10308671 +.80711709,.2282618,.48220484 +.86005033,.12615052,.37147972 +.74248515,.1618625,.28498351 +.88949599,2.1543739,1.323689 +1.0563595,1.1807439,.83649262 +.34773926,.45980665,.21679183 +.91975204,1.5353613,2.0569126 +1.0955245,.10088474,.05082142 +.53165827,1.5596384,.03284912 +.71434469,.93301288,.93325753 +.96574693,.71692671,1.7311976 +.59347938,.64801,1.1619106 +.26233039,.23681362,.86478647 +.90638619,.91647341,1.888586 +.7616435,.74498314,.60644819 +.37970344,1.000236,.91867357 +.68928446,1.2666808,.64397755 +.56066172,2.7230076,1.2627411 +1.3143567,.02065778,.36268218 +.9654757,.18592371,1.2748074 +.71689428,2.0337737,.6126679 +.72417056,.19474242,.68503416 +1.1476066,.70524949,2.2443925 +.56695143,.61668417,.49714628 +1.3671749,.08262835,1.4128275 +.50962459,.00170506,.8405396 +.70457774,1.4601974,1.6699616 +.67128105,.58673065,.34308082 +.82664287,.24139634,.49931196 +.8104469,.51005852,.29403796 +.36153647,.56660721,1.306865 +.76396314,1.005191,1.469739 +1.3587396,1.4751965,.18120859 +.73133824,.35769565,1.1879091 +.96733194,1.0971265,.36480915 +.96304426,.52778453,1.214405 +.57672824,1.0624169,2.5352235 +1.6765757,.70211178,1.8034147 +1.1270399,.27059946,.85422813 +.58797285,.59110906,.55487211 +.57546793,2.4944443,.09081701 +.72930654,1.064254,2.3927571 +1.4536942,.69590949,2.1047952 +.53737999,1.0488126,2.1274452 +1.8382455,.61400918,1.6646288 +.70419368,.21963262,.73911776 +.6484968,1.6733437,2.1314309 +.24527925,1.7830322,.469209 +.7064284,.87360755,.07305234 +2.5912262,.20715094,.97382898 +.40988365,.8219723,1.2927951 +.64964524,.72048761,.45705502 +.29055343,1.9369928,.3001834 +.90909449,.461862,.27690785 +.52074845,1.1344981,1.5228795 +1.1227747,.18026728,.39307398 +.4814742,2.1746228,.40654541 +.51639401,.24161561,.76195035 +.63112513,.06653668,1.6708561 +.82570093,.24267414,1.4267004 +.73860601,1.2539007,.13913022 +1.545225,.45435372,.76504118 +.49808557,2.2730421,1.095458 +.65976766,.23916754,.75820967 +.64304559,.14084352,1.792861 +1.215111,.76705175,.91381009 +.71103343,.29008828,.61320305 +1.1103609,.08388096,.65419725 +.42699817,1.7984129,.30967585 +1.2703262,.21680324,2.3427812 +.52302109,.81757663,.75250684 +.94528772,.50087478,1.0588005 +1.3554885,.72727404,1.0684679 +2.4318249,.16950264,.58793708 +.43325683,.70352992,.47423972 +.56019182,.35226009,.10330763 +1.393364,.14001145,.86140078 +.74004381,1.656956,.5108713 +.65525022,1.3398892,.86205722 +.59728873,.16532253,1.3692373 +1.0053161,1.2283574,2.9015054 +.45800133,.46925924,.84386855 +1.2899571,.77499441,.71216936 +.82881542,1.1997426,.54705682 +2.8239935,.48642115,.7184576 +1.513378,1.6873919,1.3630771 +.55224575,.1227289,.05258752 +.41609444,.17417682,1.1205945 +.50622445,.28572542,.86351736 +.67574536,.28787441,1.0065476 +1.1626195,2.264564,1.3314788 +.4715342,1.2073902,.66055593 +.95470734,3.0247883,.67563624 +.65992668,1.6367446,.73959253 +1.2793163,.01087424,.51483606 +2.5784257,.00581467,.01083961 +1.6189568,1.0321783,.68868241 +.89707796,1.0850309,.92301688 +.36502727,.51138322,.7036179 +.36997398,2.3487908,.16495375 +.41689644,.6585227,.88957132 +2.7539506,.06521226,1.7059317 +.55573746,.54907224,.13982561 +.18061739,.84781652,.93611241 +1.6641777,.499431,1.3092734 +.35278751,.57651815,1.0119272 +.59807236,.88973043,.4350639 +.63565976,.31878024,1.3253507 +1.4117456,.33280599,2.0118877 +.81646367,.01228718,.44656631 +.90303739,.37409603,.36304282 +.81444977,.09512215,.30539456 +.5251853,2.6059488,.10417278 +.77204809,1.1420603,.42185075 +.51204033,2.0120207,.39024692 +.37638067,.75815657,.15008602 +.74007747,.045499,.26249203 +1.0814558,1.2164959,.56017876 +.61026468,2.344435,.31413798 +.62534415,.40545678,2.1869832 +.55064866,.44533908,1.4029645 +1.7203311,1.1993202,.62260683 +.84309656,.27026306,.06286714 +1.0772294,.32459536,1.394755 +.91038397,1.3090766,.64131183 +1.0642038,.05709412,.11101748 +1.2421132,.00821117,.07517735 +.83959237,.41461895,1.3254976 +1.7728028,.32652503,.26905768 +1.5030977,.84641326,.84250672 +.62443163,.57636287,.19252195 +1.4436235,.33821712,2.3702268 +1.1430192,.53883942,.49917802 +.73017003,.78237052,1.1692052 +1.344664,.76040407,.63926436 +.73339671,.54497274,.79262936 +.72705709,.37191143,.41216697 +.53735249,.55446697,1.0258147 +1.7463525,1.700656,.90108205 +.83494284,.80668944,.23233376 +1.5290495,1.0912702,.09644223 +.99281497,1.5591578,.76541621 +1.0535373,.53477214,.08660568 +1.4620768,1.3479926,1.2819263 +.58994768,1.4038182,.06315733 +.35311487,.24857519,1.1155284 +.39066202,.77402916,.89794701 +.46964926,1.3495861,.34954425 +.94365044,.23648416,.22759951 +.64196271,.03469216,1.0385891 +.39661288,.51162683,.28044278 +.72553298,.44136943,.58267424 +.96583767,.54776875,1.3961668 +.67828152,.45221403,.56761279 +.59606836,1.1059617,.64033674 +.81864072,1.372014,.39977879 +.73581855,1.5486431,.44956128 +.83989363,.03051059,.56944737 +1.0025109,.01675999,.42654578 +1.2593511,.04937931,.93416827 +3.4958043,.13176856,1.0593421 +.98116644,1.3072536,1.4564044 +.64846019,.80825264,1.0871915 +1.4024321,.88179462,.01852286 +1.2275377,.04732896,1.1609788 +.3595613,.94923272,.06668363 +.46892822,.27622347,1.1219413 +.50729076,1.9992382,.5458649 +1.4999746,.47285567,.02060174 +.64892799,.66761759,.4864606 +1.1263432,1.0815918,.14643384 +1.219739,2.0836788,.93997999 +.63716777,.25592879,.34916946 +.29804402,.55762621,.22130605 +.27710978,1.8336306,1.7133213 +1.4769027,.36207272,.46661507 +1.3158693,.4464497,.10638109 +.66994994,1.1366482,.48925341 +.89906595,.21101949,.89920665 +.62550996,1.6115016,1.0809287 +.46942898,.96736808,.87606501 +2.5656195,1.1956998,.20493489 +.80736015,.52009746,.42895518 +.60708135,.95885522,.61705769 +.93372025,.78224704,1.3185454 +.8383143,.42047029,.58452121 +.92223428,.38803263,.20129255 +1.1222316,.507757,.69448532 +.64498403,1.7150512,.47480682 +.98116592,1.0171323,.68324309 +.51282077,1.0428071,.99185336 +.54999632,.93829113,.58604408 +.45747035,.40469396,.03900327 +2.0267434,.20740262,.53048531 +1.3354163,1.7624826,1.0004481 +.80416896,.19764555,.22374304 +.36893274,1.1464227,.30045822 +2.4138902,.64674746,.70125968 +.70327724,.54752948,1.9706348 +1.7576317,2.8825147,1.474502 +1.6674026,.02732678,1.1930742 +.90843916,1.3806752,.30858234 +1.279131,.671862,.02546716 +.7761549,1.0496359,.08131854 +2.8790826,.21025638,.95195214 +.5824352,.26685338,1.3707871 +.4935384,.43639264,.38086591 +.57030776,1.4143432,.32625267 +.74607684,.19215271,.72848272 +.89354691,.86134435,1.4210157 +1.3649649,.42968782,.03600328 +.64824166,.43114237,.53490206 +1.5989928,1.1485486,.30238267 +.90005089,1.0057829,.67994909 +.456397,1.6718462,1.6414764 +.98288681,.80939758,1.294801 +.50468241,.93864089,1.3154712 +1.9990662,.10439718,1.0737276 +1.2669723,.34730073,.20753127 +.78197495,.65406821,2.2152157 +.49559487,.06654148,.32844566 +1.9798367,.72389361,.62671162 +1.1459788,.17247828,.96600658 +.37466449,.26641212,.57763142 +.43509411,1.8015642,.2120065 +3.2398836,.17086248,2.8685466 +.85862353,1.4823041,.36598423 +.63379358,.07882451,1.335847 +.87805914,.30966551,1.5405354 +1.8713204,.98343079,1.5054611 +.86895578,.67675521,1.9508119 +1.094392,1.2892271,.87825919 +.79191239,.22440972,.1369869 +1.2470746,.73362038,.23661868 +1.3119906,1.230764,.19084529 +.58399684,.10745158,.45966534 +1.3343151,1.4881376,.80330193 +.83403412,1.9983426,.12372391 +.30600406,.64854233,1.5714518 +.65505509,.7025437,.02934561 +.58160047,.14193853,.99121375 +1.2011906,2.2023727,.06500649 +.81265882,.26048351,.15813488 +1.3384936,.73869643,.77342049 +.42310455,2.2737388,.18123885 +.98530661,1.9125604,2.1156012 +.68797364,.25507074,.75560514 +.94193203,.03669186,1.0983138 +.63477883,1.285463,.58312792 +1.4960767,.54245096,.10329333 +.74476911,.91207555,1.766486 +.8098164,.39531056,.74773812 +.46092023,.81748075,.64509433 +.92733139,.09151197,.9345227 +.65377655,.26345472,.44197043 +.69453993,.1336625,1.0746929 +1.1601978,.88471185,1.235838 +.73502017,1.2476439,.05453179 +.48161502,1.5826541,.63802303 +1.64479,.20960467,.26160066 +1.2233733,.32945333,1.542933 +.59015595,.72625343,.29699278 +.66133737,.16270576,.52592673 +.42663267,1.1058772,.65036374 +.67286729,.14235616,.37566508 +.8280353,.17517072,.65098221 +.610291,.45536976,1.4524045 +.51246787,.62508519,.64885631 +1.110299,.80130038,.93350293 +1.2598047,.44717734,.46318254 +.52527844,1.3182964,.98816939 +1.3170878,.29295408,1.1409488 +.59886539,1.4034396,.24602785 +1.3096824,.1029524,.87116834 +1.0742662,1.2246572,2.5132872 +.54587541,.75883995,1.4929834 +.32411094,1.5932248,1.1509558 +.58207041,2.2374796,1.1412954 +.82646795,1.2923571,.65824841 +1.3969509,1.0962041,1.6240213 +1.1950676,.81679793,1.75696 +1.2117038,.74266788,.14947476 +.74951761,.3056412,1.9081061 +.3815647,1.4840809,.28695085 +1.7985347,.58036955,.01275122 +1.2508774,.98480185,2.9870219 +.68417264,1.3458628,.01950065 +.6597072,.15278334,1.612328 +1.2221245,1.3168778,1.7353783 +1.001011,.06032347,.12809883 +2.1420901,.16817689,1.7884619 +1.2389385,.51556678,.45119934 +.96176632,.09064157,.10018164 +1.1348713,.36129467,.20316719 +.83441196,1.0992644,.54757303 +.93267649,.95454375,.46300386 +.77078974,1.6179943,.37911394 +1.1128242,1.4010952,.80151364 +.56068446,1.2163256,.13919673 +.26897972,1.2383158,.19045223 +.76884428,.53572258,.40661111 +1.0041175,.17931081,2.0912314 +.59391292,.84937653,1.0074187 +1.7221708,.07343316,.9115745 +1.5143282,.19223214,.25393218 +.35357931,.59291934,.01282394 +.75958037,.214069,.44544894 +.39090979,.73245079,.66858694 +.5026805,1.6822675,.20874505 +.31896652,1.9115295,1.0859778 +.53599253,.66214803,1.6160918 +.80140216,.62293134,1.2492768 +.39348732,.42617522,.38851735 +2.1593273,.56806405,2.1464822 +.55947109,1.0859484,.16556623 +.63742582,1.33873,.34679981 +.59032908,.06312213,.68705046 +.74517297,1.9875185,.00332085 +.42361574,2.5224975,.70741737 +.99299124,.20018002,.67418878 +.458443,1.3070984,.27607243 +.9860351,.26072717,2.2716331 +1.2541498,.26552463,.2924726 +.54225273,.16770613,1.4660571 +.56422161,1.7780589,1.0159864 +1.3530072,1.0946024,1.124013 +.94566275,1.4726896,.47542468 +1.2368618,.50440727,1.5744463 +1.2111245,.30547233,.71244234 +.60083616,1.4984649,1.7783506 +1.1012918,.13130562,.90073099 +.79734986,1.2611662,1.9196574 +.66545881,.47048212,1.0995655 +.76907128,.60708688,.63595577 +1.0037091,1.7641145,.29692962 +.83076334,1.2852101,.8784542 +1.6097491,1.2915433,1.5040879 +1.2550993,.85616003,.43958622 +1.4656746,.6138953,.90553208 +.60053081,.32585133,.58237208 +1.0852995,1.4978361,.38984939 +1.1411494,.38727493,.51843858 +.71672177,.20805375,1.4506061 +1.8926013,.05871985,.29160878 +.82075028,.22355189,.3777171 +1.4811764,1.7091625,.81460893 +2.1104137,.76594269,2.6815656 +1.3689939,1.1177835,1.4022721 +.93925332,.73473595,.77620858 +1.8540243,.32991506,1.6440733 +.41744695,.81176824,.72076741 +1.0566408,.19565031,.99667984 +.81694093,.37048833,.88333974 +.31184563,.25326182,1.8787557 +1.4204189,.08343609,1.4709844 +.57592912,.70017395,1.1943197 +.66494757,.17694721,.27261418 +.51356669,1.8007978,1.245002 +.86872776,.45119351,.17581102 +.53610627,.18261016,1.0356878 +.52391556,1.5063021,1.1445692 +.79212353,.32033684,1.166105 +.56324207,.97135966,.19647746 +1.6650311,.59188726,.36960333 +1.4655017,.88011655,.86061587 +.65860423,.88950643,.85092356 +.93246498,.73152121,.3112409 +1.5936414,.38481048,1.8680891 +.59458007,2.0509137,1.8256121 +1.2930177,1.5431976,1.9899946 +.46958194,1.3572171,2.0816552 +.5848394,.18838276,.57673487 +.34502269,1.9138784,.48160466 +1.2440505,.00364908,.23436195 +1.1076447,.310529,.50120539 +1.1456412,.0363895,.00753203 +.76416997,.83114547,1.6300672 +.93957207,1.9639054,.75466265 +.91377319,.29845256,1.5315575 +.65750003,1.0415112,.53907885 +1.0514144,.6041622,.34113087 +1.0477843,.00876135,1.3678537 +1.3623551,.42339652,.48773309 +1.8140417,1.2202117,1.2485779 +.55993061,.17788152,1.7187185 +1.6005543,1.1928594,.28333118 +.57378723,.54392049,.03767954 +.92989784,.15554217,.62942483 +.51626552,.95259563,1.6568065 +.74578726,1.4251771,.95145435 +.32669479,1.9129023,1.9829131 +1.3452257,1.0162313,1.1938675 +.48151308,1.9031697,.43532992 +.58903959,1.6278141,1.0855526 +.87253786,.06456974,.10096787 +1.0682631,.12407726,2.4669878 +.73238298,.68159633,.76540842 +1.1021369,1.5821852,1.1653346 +.48894509,1.335285,.7533569 +.98463305,.43349568,2.1224996 +1.1143399,.02988768,1.2657578 +.76431265,.61057087,.32396442 +.74277336,1.461508,1.3563629 +.73355491,.70144162,.61831702 +1.5342156,3.1249903,.24711755 +.42293355,.75905602,.01950412 +1.3104457,.70577525,.0002263 +.49971031,1.9972798,.46297493 +1.3688063,.72088886,.37885758 +1.5184376,.87028992,.93031772 +.49746406,.08253417,.10830526 +.54869677,2.0690389,.24153687 +.81262419,.10733031,.41876122 +.46373294,.47301149,.81096903 +.24763614,1.2482717,1.3514701 +.80276358,.82849492,.1177264 +.83075343,.43140062,.98095463 +2.296558,.1834261,1.5384931 +1.1626005,.51838353,1.3228342 +1.787205,.22057475,1.7472692 +.92106937,.00372581,.54771756 +.92249576,.22878895,.52025502 +.52672032,.63354398,1.0139729 +1.0451274,1.7578383,1.8347557 +.67744137,1.2244403,.83636236 +.60376932,.13186044,.37287214 +1.9441958,.46605706,.01654511 +.41661282,1.2431768,.32864437 +.99635467,.76831279,.61675207 +.71935359,.39711463,.20677664 +.46388735,2.1431608,.43356217 +1.7565025,1.6185272,.90536757 +1.0427044,.60020634,1.1057876 +1.0624657,1.7753939,.42925051 +.63379398,1.4989031,.23205591 +.50927866,.38424088,.06589911 +1.1378958,.43663759,.3927621 +1.0205408,.23904504,.3971942 +.19537937,.33636415,.15359368 +.489385,1.2253187,.35409263 +.8639452,.00898304,1.4170171 +1.1016575,.34028268,2.421332 +.53402728,1.2386121,.09540179 +1.0025116,1.0781369,.03356563 +1.583734,.0450583,.07833013 +.63263264,.11960774,.40052138 +1.2174356,1.1022769,.36234227 +.68243602,.80017556,1.3084544 +.71569327,.12021411,.3012327 +2.0298905,.70298416,2.4360897 +.31800226,.59552842,.35762967 +.89913513,.48714456,.14489822 +.68854511,.62673783,.06859655 +.81633111,1.9807548,1.9936032 +.98111427,.17153292,.22840942 +1.2708788,1.8171087,.3615658 +.98322936,.97842936,1.8253055 +.79831294,.67110776,.5411116 +1.4602641,.14153634,2.0845241 +1.3425285,.79410783,.56125154 +1.052965,1.0817798,1.0682995 +1.804407,1.1161157,2.6107024 +.54962016,1.8523353,.49490548 +1.0492214,.17996045,1.1374429 +1.5503105,1.6577982,2.3177995 +2.0910127,.52714917,.75515206 +2.2635059,.78704591,1.3500011 +1.3890783,.47372732,2.0797019 +1.1610026,1.3224189,1.2073957 +.91803147,1.0484525,.8723979 +1.9827664,.96482284,1.0000006 +1.3307215,.37322821,.27079916 +.99449811,.46794597,.14664153 +.74684641,.4805025,1.4138008 +.55945367,.46631077,.41872557 +1.5967415,.63220853,1.6475711 +1.1833829,.27417743,.16630114 +.8937789,.46191896,.72689022 +1.8046963,.30128452,.56692556 +.38038524,.19828854,.07200768 +.99918473,.90216524,.09698675 +.63532145,.8484269,.39683803 +.64788598,.76420117,1.1312125 +.94027151,1.0086864,.35759573 +1.0920109,.15136809,.22020807 +.6800344,.08846542,.16532426 +.75198818,.54838225,.15574316 +.55146416,.15328807,.58116672 +.69352589,.23276937,.35749237 +.6951792,.93810654,1.7293432 +.26161037,1.597815,1.0300468 +.41379409,.39687655,.49975705 +.40431839,.66476388,.20230636 +.61173424,.88621793,.54883969 +.90971831,.34250936,.80367904 +.56408823,.18983422,1.2261381 +1.0329707,.37501839,1.1171379 +.79810272,1.4048329,.46671934 +.50157181,1.1793511,1.3851933 +1.2798594,.43887131,.95358544 +1.4880858,.2585804,.10738798 +.74257912,.74503969,.26425311 +3.9986607,.03603427,1.6592708 +.85565398,.54309272,.35690496 +1.0549578,1.5147828,.58429285 +.96181175,.69749502,.87831152 +1.4501329,2.19826,.25603587 +.9261832,1.6832923,.37126674 +1.3276619,.57765052,.68486532 +.37420084,.25648433,.07510996 +.70510762,.42449241,1.1349386 +.51153433,.81046266,.28439064 +1.2671305,.5973786,1.4793553 +.64345604,1.1701469,1.9238029 +.74992077,.07857721,.0136137 +.71015311,.21236401,.07316321 +.75788919,1.9090836,.98071235 +.30185817,1.5173074,.13904485 +1.5488582,.13042907,.13318858 +.38271732,1.7544739,.04238311 +.74689489,.63386084,.38826918 +1.5542573,.66350565,1.8414737 +.75248465,1.4020145,.282352 +.28557554,1.3763644,.34698597 +.95950907,.90998449,.84035339 +1.7227137,1.0858355,1.6314018 +1.1530856,.44155068,.9439467 +1.462445,1.1981925,.40072794 +.38854704,1.0505491,.86756309 +.3168568,.47564213,.16826999 +.6088783,1.0292785,.09300577 +1.8487006,.35660577,1.0092455 +2.2374449,.12489157,2.1842515 +.90753801,.59530658,.72919519 +.54568312,.11617841,.62691097 +1.109227,.05513408,.16628238 +.95134986,.69713183,1.0270921 +2.2368921,.69907812,.78761712 +.90286508,.13008882,1.4274733 +.77561525,1.4568803,.50649163 +1.8023654,.37048826,1.1515994 +1.3491406,2.4030923,.37252103 +1.1166927,.1095541,2.1863433 +1.4410181,.52829315,.60170137 +.6325816,1.9472601,1.0241222 +.9021938,.5364375,2.9860231 +.95512059,.53862919,.60479999 +.83717792,.59024965,.50751797 +.38319787,.79125615,.53448059 +.63238726,.28197407,2.2369676 +.72292013,.02621015,.63903996 +2.5191784,.04674631,.20253521 +.33201516,.89975373,.28579115 +.8042737,.64354354,2.1132185 +.44156672,.01554397,.78340108 +.4789885,2.5684093,.00357527 +.50777105,1.5030451,.02466863 +.46903137,.50942101,.29529995 +.93809897,.52643607,.04411137 +1.3547893,1.2766806,1.888115 +1.0261491,1.2032952,.13324676 +.85166214,1.2723142,.21943478 +1.2950874,.59784804,2.2379904 +.59468973,.72168262,.59739883 +1.5362652,.11879524,1.2915649 +.80822995,1.3613275,.88294014 +2.6691472,.64780201,1.2940826 +1.3042522,1.3623633,.41796089 +1.4396539,.49318823,1.0951222 +.72375657,.60586671,.64106571 +1.1652461,.32901803,.1714425 +1.5356141,.27794057,1.4184096 +.63581543,1.2184284,.13929298 +.95753863,1.1817838,.74912466 +.77214247,.73999512,.002398 +1.0184344,.93239911,.606403 +.59239461,.54458441,1.6249764 +.47546554,1.4492288,1.0946039 +.55148488,1.1393485,.26860531 +.72631796,.36647794,1.1895297 +.4001053,1.7447614,.12346476 +2.140851,.04032776,1.3940424 +.64722633,1.2287155,.26865315 +2.2380715,.09763233,.29253289 +.6404729,.20169868,1.0763423 +1.4267187,1.0152764,2.7092706 +.784669,.74184415,2.1026116 +.62999426,.9669279,1.9952419 +1.2181432,.80494712,1.3198743 +.92288033,.55037896,.28518526 +.48360364,1.2049007,.44182882 +1.4549717,.57664848,.99945222 +1.0965007,.93004196,2.1995239 +.87542508,.5081142,.02368834 +.52632783,2.0752735,.92240883 +.40276618,2.0335044,.11509733 +.32717798,.67759931,.24053149 +.65737768,.42686169,1.1619671 +.69538388,.56387804,.79734517 +.85767953,.29338661,1.4385014 +1.3220005,.39732894,1.6330407 +.39178637,.20294422,.64803941 +.47049905,1.1258958,.31599045 +.78877065,.27917956,1.3353008 +2.0061291,.09822792,1.050817 +.80625758,.40138876,1.0823648 +1.3768147,.82242418,.5244455 +.71560222,2.2139381,1.3014376 +.7539811,.98032094,1.2908627 +1.4737934,.83136296,2.0042762 +.925306,.5833758,1.1835223 +.52326006,1.7217322,.25668487 +1.0150543,.29132715,.49944728 +1.3575969,.8814103,1.5799528 +.80151581,.22503984,.52322282 +.79858666,.55811799,.69217982 +1.2162792,.91475085,.07420068 +2.2958627,.26818643,.37402163 +.79441913,.1444569,1.1711592 +1.5798826,.90900826,.15828086 +.54087903,.68140907,1.5597648 +.82505196,.12518507,.5161439 +.58931369,1.2981088,.5714202 +.96180903,.21066198,.00595342 +1.123696,1.4769279,.75574653 +.56838836,.6386693,1.3238423 +.90669017,.70298278,2.2449799 +.84887451,.32574312,.21767976 +1.5630489,.07775615,1.107803 +.58601637,.24913679,.61264751 +.29041163,2.1471822,.45791757 +.68345331,1.1558114,.44793635 +.42831226,.59553346,.7067905 +1.6259933,.73756109,1.8887364 +2.0259678,.16737519,.97919078 +.48937052,.35684802,.06641625 +.72831633,.50498794,.44576538 +1.9218344,.42325121,1.1159769 +.73670956,1.2156204,.65879327 +1.8991322,.09974941,.7207959 +.71169562,1.1134192,1.920988 +.88198922,.19203549,.2846151 +.63389794,.56286403,1.7680898 +.81656022,1.4071404,.48266344 +1.1586242,.57556494,.28166724 +.9847077,1.1742313,.8633733 +.94675307,.98208739,1.0879273 +1.0908559,.73408224,.13634308 +1.0496163,.7171714,.20970955 +2.3038042,1.4778683,.5123316 +.56523119,.76721902,.30706862 +.75975816,.78917072,.88969108 +.70700939,.62814311,.60195333 +.61909798,.05409055,.8182851 +.70284301,.81222636,.21536025 +.42451404,.19708128,1.0402306 +1.9338921,1.1594442,.64727783 +1.0960791,.0579815,.02915473 +.83235981,.67609631,1.1478557 +.2982037,1.9928084,.45580891 +1.5989932,.39240484,.77825024 +.4838787,.57724742,.76395339 +.92021991,.48970721,1.3984136 +.63603813,.18753426,.2462641 +1.0231435,.14461617,.46205995 +.4678192,.37519199,.60639159 +1.1852883,.31199118,.75988309 +.92077585,.24202127,1.1371746 +.3937555,2.4782771,.10706466 +.49350559,.60264437,.20388018 +.49430013,1.7213759,.36637217 +2.685083,.38080658,2.1720328 +.67232012,.7785405,1.8123802 +.41331295,1.3035764,.03970415 +.66569412,2.0998075,1.3630631 +.90399755,.52214477,.48201485 +2.0541913,.58992872,.4429014 +.93647426,.32355438,.04460409 +.92593293,1.2897212,1.7846262 +.62134333,1.7373439,.45449645 +.60660669,1.9766513,.02080713 +.94586454,.94994969,.12704785 +.54477804,.03438963,.84328057 +2.0558834,.58109781,1.3277336 +.27280029,.9691874,.63371097 +.5796599,2.224924,1.1676708 +.34384947,1.7667801,.90010257 +1.087972,1.3142489,.26718278 +.96200422,.24401685,1.0363619 +.33514596,1.4670437,.83599092 +1.3646771,.19022008,.94937605 +1.016129,.41896094,3.5123283 +1.132367,1.0515597,2.0754755 +.27148211,1.8777469,.1247024 +1.5710536,1.0564122,1.0975556 +1.0562888,.32947867,.57602521 +.36592855,.40220347,1.3495425 +.79937409,1.2494332,.84230189 +.7449873,.68814196,.03250438 +.8007497,1.3520108,.38940603 +.7238244,.49254242,1.0982233 +.72569725,.25460129,1.0227809 +.5059654,2.9425303,.8924649 +.95905198,1.6937621,1.7118508 +1.0386422,.42519668,1.3763511 +.74356325,.35570447,.54323835 +1.7621065,1.1802796,.05672815 +1.4290439,.48729115,.56642153 +.59580332,1.6335423,.19504977 +1.62032,.05145587,.05505265 +.84223485,.44594387,.80966555 +1.1002078,1.1411236,.6861441 +1.0668829,.56715925,1.1824324 +.5466867,.95467049,1.9759948 +.8262092,.35649578,1.0603225 +.7233776,.01475469,1.0861943 +.58611647,1.1310883,1.548111 +.85374151,.50520318,.68483738 +1.3842757,.1004451,.99225933 +.868603,.06881575,.17522551 +.54179558,.56235687,.50881698 +1.0003113,.44795042,.9789422 +1.9955633,.52613088,.22924974 +.95141506,.9284424,2.8626514 +1.5189673,.33447931,.44002103 +.91553989,.11064095,.92171988 +.61302979,.41116767,1.7801427 +1.6581768,1.0445033,.20358584 +.98532543,.25124881,.28761507 +.78560596,.53634072,1.5593055 +.54207082,1.6143496,.45304172 +1.4284734,.87308502,.54440114 +.5318752,1.568972,.68134018 +.35713559,.21288785,1.251447 +1.523858,1.201532,1.6714824 +1.6073299,1.8079028,.23258898 +.86095805,.52139593,.55357847 +1.0011523,.980647,.08048348 +1.0927603,1.0609031,1.5435432 +.56112971,.31212326,.89035426 +1.4707607,.55526556,.43878836 +.65041484,.67407058,.12314874 +.55519864,1.6004775,1.0746642 +1.009162,.91897256,1.481234 +.47780571,.29366762,.02575353 +.86407612,1.0333402,.2947585 +.71698696,1.2642905,.38724453 +1.3484813,.43831806,.96918395 +.57144404,.72634007,.59935574 +1.0038484,1.2486228,.74518209 +.89167152,1.260276,1.1266412 +.62942854,2.2697483,2.4005101 +1.3055154,.42816253,1.1549644 +.55454885,.75833677,.73748695 +.53406361,.57717727,.23371731 +.61410935,.93609268,1.0710484 +.77339424,1.469473,.88807411 +.69793959,1.9537474,.08168566 +1.3608811,.00172221,.21128191 +.32984013,1.4584781,.15390472 +.82345982,1.1354082,1.5607559 +.26243252,.90201057,1.3523424 +.76674158,.36155717,.30728165 +.98660531,.25811249,.80727499 +.89210389,.94006019,.14103671 +.66311578,.62924087,.32767935 +1.0020185,.50272836,.62917575 +.75716727,.01571572,.29425813 +.82046578,.94955052,.21813826 +.37161564,2.5555797,.99915436 +.76252585,1.1778122,1.0167331 +1.1114003,.05246131,.77353996 +.56039856,1.0794448,.48911859 +1.2029235,1.2334308,.41567598 +.33450592,.85789476,.82901084 +1.4845661,.34344892,.21302226 +.33291452,2.023685,1.0124414 +.47995763,1.6235894,1.2258477 +.32948303,.83212576,1.0423016 +1.6070581,.01543011,.2983218 +.20087837,.62997333,.2820715 +.90457295,.1223539,.75720676 +1.064245,.54678998,.52311684 +.61798555,.33995938,.07081282 +1.7418432,.16061103,1.2255896 +.78501419,.14103104,.33995339 +.57554562,1.5775726,1.4322372 +.71384953,.0786898,1.1557401 +.91876368,.41353856,.63450039 +.64226714,1.0738739,1.0380593 +.77486662,.68754103,1.1705141 +1.097164,.78676931,.35154659 +.71184683,.00350671,.13527318 +.7688974,1.1398561,.48617607 +1.6582173,.47212353,.55116485 +1.0024303,1.7803977,.88493162 +.93830933,1.320643,.45378799 +.40398897,.69906708,.02032839 +.71972722,.91150101,.68885512 +1.1368656,1.3525211,.19037729 +.75279557,.37543529,.8647139 +.51830944,1.5806756,1.4747212 +.66056783,.54246735,.65982041 +3.5734887,.06056354,1.4546866 +.57535762,1.4020288,.29388051 +.76773426,.56641943,.29080257 +1.5546747,.5521293,.64788768 +.67138868,.19204903,1.9949916 +1.376377,.49826664,.10370926 +.7295906,.07294641,1.0578065 +.6834783,.02366408,.94581165 +.85952917,1.2383808,.08598484 +1.2227814,.71011603,.62070776 +.33632105,.64919035,.80285624 +2.5308447,1.2803957,.30706017 +.64913392,1.049801,1.1715313 +2.0514787,.1399035,2.1842527 +.71930628,.92192955,1.9402155 +1.3049644,.03516973,.34514034 +1.2259528,.42617342,1.1261932 +.35823134,1.5703332,.9538068 +.61632838,.60231319,1.9178376 +.97724822,.99519613,.2507355 +.9237506,.6323579,.69262837 +.63881689,3.2683319,2.395281 +.61133954,.37170229,.1175938 +.83725655,1.2967729,1.2595073 +.45329288,2.0606931,.74088684 +1.640272,.37796164,.42958567 +1.0629115,.22778677,.85053498 +1.4809599,.11384427,2.0899556 +.98142165,.63561781,.93124233 +.64924465,.32063665,.58245648 +.67110166,1.6955971,.46439842 +1.5142303,.0412434,1.1391194 +.80527852,1.8941945,.49784124 +.88293837,.72216445,.64803487 +.84022363,.88196786,.36266557 +.9069376,.0294121,.29562335 +.83044608,1.2630937,.36255994 +.39206554,.35557191,1.5253905 +1.0867431,.39532098,1.1362874 +.56287558,.18569215,.06669859 +.57763553,.82321689,.56937484 +1.5904805,2.3049359,.51249377 +2.8772199,.03830335,.40203723 +.69106248,.29124117,.91047212 +.80622661,.93577676,.73342899 +.57046628,.96077097,1.4710608 +.66332878,.79373915,.37598856 +.93875471,1.0762463,.74837259 +1.5875087,.7193543,.40390013 +1.3245143,.30751547,.3848864 +2.1569713,.04573602,1.3104742 +1.52536,.17717863,.7021938 +.51535201,.94507615,.69990728 +2.3845463,1.3089046,1.702817 +.67443077,.3929961,.09203278 +.60939595,.63538385,.57612567 +.63469217,.36830374,.33088502 +.6724504,.35814635,.1375726 +.91831477,.74201982,.75556462 +.9027765,1.1845388,3.4576258 +1.0468416,.76347982,1.6553259 +.28745016,1.9287677,1.2643796 +1.2203174,1.4558198,.34868503 +.72142087,.35820294,.70440216 +.68985553,.09871565,.30708528 +.51549713,1.0981749,.21722969 +.4644785,.85546125,.11454018 +.60006813,.00140088,.15133141 +.72568845,.45242625,.07935522 +.50508897,.95822767,.25392335 +.47727861,1.1647129,.11636062 +.67760857,2.3995211,1.7170776 +1.0057219,.04946626,.68401252 +1.4484117,.23523756,2.5830179 +.88128899,.802208,.60444199 +.69683584,2.5648962,.28683924 +1.06561,.41315145,.2044611 +.57584041,.20085167,.14061208 +.9435554,1.090929,1.1030998 +.88203026,.93936625,.35519893 +1.1271193,.22183983,.50199017 +.66036949,.09844351,.13007565 +.575272,1.1834435,.18401349 +.69656773,.95610126,.70714932 +1.3420778,.0908619,2.0325897 +.63187931,.81412686,.70567224 +1.0787192,1.8943428,.76220867 +1.0728922,2.1607768,.85453251 +.50368564,.57950848,1.7209755 +1.8254278,.18350506,.86947072 +.96712785,.48028936,1.0891257 +1.4228196,.0603218,1.0522965 +.25755114,.25025343,.53204469 +.5151619,.66896436,.93773122 +.50136275,.77113414,1.5027736 +1.7525248,1.3867865,1.0840701 +.86828806,1.5295202,2.2229596 +.75917944,1.7393222,.1350729 +1.1002191,1.6096466,1.9999075 +.229056,2.5535483,.93264338 +1.3693334,1.3336862,.22908764 +.78461327,1.018972,.31056104 +.55732583,3.7058837,.45075997 +1.0219698,1.4389009,1.0004363 +1.2175811,.27658875,1.7888664 +.61873299,1.5965727,.76181519 +.51456733,.78118679,.2087546 +.44958061,.8352795,.58979967 +.92870404,1.1010318,.16065201 +1.7317073,.79568363,.52531337 +1.2519079,1.1710661,.51958391 +.39315117,.75741472,.24447577 +.49656551,2.5165676,.20302189 +.57871277,.62352951,1.3098541 +1.0443922,.36795773,.41726424 +1.7736063,.12995095,.5018244 +1.3182636,.34059361,.45268832 +1.3408278,.44007653,1.8923629 +.81794276,2.0413592,.32327963 +.61575219,.40131803,.53240671 +.52394207,1.1583275,.47841277 +.73619389,.25658234,1.1424387 +1.1343932,.80362172,1.1916695 +.26877964,1.0687756,.38745736 +.49529071,.19398668,.86872343 +1.1253485,.06198675,.57291156 +1.7832497,1.2293809,.85395172 +1.0669685,1.5208343,.35651972 +.61163635,1.8878412,.7354279 +.81065698,.2952614,.19337336 +.68687377,.97732555,.16184261 +.55268673,.84405059,.76119011 +1.4937764,.51275353,.89625004 +1.4223273,.62037001,.73899353 +1.9735044,.99129763,.06198076 +1.7089727,1.3920793,.26726306 +1.4782273,.21373493,.59907415 +.86288201,.76259931,.90584802 +.70989257,.55664737,.90441232 +.76991898,.30618172,1.4246803 +.53880874,1.0753368,1.5722511 +.94684642,.03694038,.55335873 +1.5834193,.04260117,.64751107 +.55836404,1.2660956,.84234629 +.95544078,.15439925,.21763776 +1.089424,.53992145,.44391855 +.50861911,.20490062,2.2705518 +1.4591059,.49978233,1.0537308 +1.0343263,1.1245334,2.038758 +.38054377,.93101655,.03900564 +.59608276,.69311675,1.2185883 +.8669984,1.1384887,.73123043 +.6518677,1.2283866,.33913146 +.39294786,1.0658194,.4530377 +.60585163,1.0053731,.19114972 +.27756601,.14991487,.04140283 +.64085837,.20407529,.03877341 +1.1367845,.27375972,.87840947 +1.3597192,2.3547834,2.1558136 +.67523,1.5342532,.79098798 +.84521071,1.4082381,1.087044 +.70388053,.42122611,1.4144227 +.89932067,1.5063146,.49872029 +.93467455,.30170463,.10721941 +.59422117,.95265281,.75118205 +.9189371,1.0988059,.93591028 +.893457,.30835542,.95722283 +.73045739,1.0386272,.26387613 +1.1369733,.08942444,.10133989 +1.008201,.54505942,.87799209 +.66429702,.55353075,2.1620162 +1.5903169,.79404774,.35840569 +.63325846,.27527599,.84235839 +.33071545,2.576386,.42884773 +1.2735033,.20942585,1.9834233 +.74667651,1.9538103,.54992063 +.951852,1.3435194,1.3397855 +1.4239015,.39833392,.11958316 +.5247817,1.9090789,.5291191 +.91761252,.58578042,1.1360626 +.59718246,.82627341,.84709337 +.70184994,1.9354554,.15554921 +.61636433,.51156806,.28728822 +1.1629085,2.4358509,1.3532112 +.67795413,2.4524616,.05155405 +1.0414902,.29389609,1.6658115 +.71645893,.81464155,.371492 +1.0382044,1.4774884,1.0063664 +.70543488,.65103229,.60317547 +.57226456,.93419845,1.1263369 +.69524175,.41895909,1.0063672 +.6837145,1.002253,.96139436 +1.4897435,.38234074,.8622629 +.41902246,.47603539,.68311933 +.5158577,.9618899,.58655786 +.69364979,.62972853,.80004758 +.35493308,.69228109,.08457458 +.62046031,.06017234,.55322688 +1.153889,.42615341,1.5890869 +.70849265,.84720923,.41636334 +.68630382,1.1832883,.42424147 +.95137478,1.045479,1.0818447 +1.0447267,.93628497,1.8712036 +.43234559,.88809372,.02824804 +1.7468872,1.0919874,.28068319 +.45105574,.94586894,.95649918 +.50360418,.01129948,.28772975 +.66796707,1.2525573,.62715932 +.59102603,.76645449,2.4411517 +.55429793,1.4362549,1.8519583 +.6822185,2.3916556,.62752051 +.67848811,.18883784,.40310134 +2.0452971,.7955603,.49564255 +.39229813,.6153164,.06737944 +1.497548,.16445776,.38918663 +.36290332,.84000359,.17939696 +1.2229307,.81436095,.49880041 +.875607,.36563027,.20466429 +.89712937,.64376464,.3988171 +1.1030703,1.1330481,.95951737 +.5042245,1.4626328,.3138774 +.81483607,.10290034,.94337301 +1.7460749,.49422707,2.1349629 +.47201147,.56239884,.6024463 +.88809922,1.1243458,.61885308 +.333986,1.9814829,.24114105 +1.5140912,1.1204797,.65238774 +.91746029,.04863687,.11987251 +.53154781,.33179443,.97337321 +.31643974,1.0680351,.67446646 +.65277872,.55168936,1.0467241 +.82504886,.46348183,.55359175 +1.8180262,.45352598,1.7074452 +1.4093359,.18730027,2.270479 +1.6751185,.8591219,.15696459 +.8242954,.30863728,2.2473274 +.78494307,.56572308,.10306254 +1.0046884,1.0081315,1.5298332 +2.0637819,.23050127,.65309705 +.83762307,.65771859,.57150673 +.47893039,.17848423,.4186376 +.32592014,.90345676,.35008521 +1.71176,.02034252,.67094195 +.61411786,1.0763916,1.0063148 +.68161143,.79344504,.42837425 +1.1630079,.31995012,.33222295 +.55887032,1.0643429,.87299881 +.4478608,.23559216,.55265839 +.96173478,.33862118,1.7311233 +.60555887,.88839096,.05004166 +.3956547,.03967719,.5691849 +.53862223,1.1335241,1.1424578 +1.1288963,.71817911,.36769487 +1.1041099,.64731594,1.6915911 +1.3663544,1.2367286,3.2357662 +1.5918459,.52405363,1.2450381 +1.1523505,.79728809,.76368135 +1.2665266,.06296581,.4726912 +1.4229969,1.0228907,.85273662 +1.3666873,.37938628,.80216986 +.81612782,.15178866,.12388163 +1.0279693,.44194038,.11745034 +1.2046929,.77266949,1.344815 +.65058394,.45850867,.7599974 +.57690397,.35559359,1.558769 +.9117866,.17949849,.3374793 +.53742516,.48117544,1.8423542 +.38435,1.2742242,2.2718523 +.54936799,.66026011,.75992842 +1.2274396,.65365302,1.2567505 +.85023267,.75863096,.42037414 +1.2918119,.0883598,.77199239 +1.6769244,.3993352,.12082004 +1.185178,.26776108,1.9116793 +.86294447,.11436163,1.0769743 +.55916506,1.6453619,.96654098 +.39867592,1.6447722,.75295586 +.50922374,.45341559,1.288752 +.79957533,1.2947189,.51944892 +.45484686,.62141717,1.4554974 +1.1485157,1.1688963,.29872297 +.30883222,1.8702957,1.4332391 +.62971138,1.4084315,.67892322 +.74615579,.92283162,.47738381 +1.2072419,.15210796,.57653221 +.32871733,.63581001,.57074747 +.89102892,1.2448101,.36440594 +.76232726,.58934136,.96010176 +.68378777,.96413044,.26017324 +1.1337346,1.1785255,.92230981 +.90776782,1.6344818,.88258702 +2.0182942,.06625374,1.0143804 +.83022869,1.6636112,.39423522 +.54447905,1.0967518,.33353205 +1.1371563,.36430131,.81332046 +1.5414773,.07320302,.5302207 +1.9672404,.177065,1.3577704 +.70001658,1.009277,.68685838 +2.3635256,.20958313,1.9878656 +.63779021,.75400985,.64577644 +.99021019,.85208953,1.6032634 +2.7839807,.18968121,1.4859552 +.57554877,.29655984,1.0258846 +.53549,.76269899,.46892812 +.6852823,.92537345,.56738002 +1.7783756,.13395046,.44348377 +.92802325,1.6579305,1.0938795 +.36333622,1.2272073,1.4272961 +.41460221,1.8054598,.02335763 +.61699384,.50234198,.99692867 +.60099734,.68343842,.00298001 +.95002027,.09757998,.9435455 +.41386216,.94799671,1.4996055 +.65038114,1.0589957,.11813468 +.81036843,.1689983,1.248216 +.66633012,1.7249769,.40395455 +1.071855,.32533584,1.1936184 +1.1125162,.17663135,.91931344 +1.3135206,.02384607,1.1432806 +.37946996,1.8063866,.32064766 +.85791747,1.0618583,1.1620933 +.58309295,.42754381,.25577484 +1.9367829,.61284787,.3488198 +.79116234,.78799556,.15775569 +.54019964,.66027663,.17791565 +1.5402519,.54491889,.31988566 +1.732065,.71057421,.66113484 +1.0136349,.90039585,.60792958 +2.9561684,.28315092,1.2184784 +.71314771,.92479208,.76762739 +.62769023,.53553973,.01882558 +.97007412,.33913434,.24976694 +2.3396174,.60165733,2.4959813 +2.6493553,.18841099,.37552048 +.44804067,.3864972,.61814769 +1.1558653,1.0118386,.10267861 +1.0753648,.17409383,.76969688 +1.6625771,1.1480557,.5457896 +1.9129483,.48548911,2.0165793 +1.0504665,.31638756,.22609714 +1.5411612,1.107047,1.6080012 +1.2691106,1.1880852,1.2770538 +2.2516994,.78555365,.3728826 +.42203819,.1123738,.08946536 +1.2917725,.72569883,.80592371 +1.3952029,.02679487,.4198039 +1.2673574,1.4482183,.77132433 +.60750667,.13719017,.76723359 +.56292759,.18709389,.12968146 +1.075742,.50384033,.90258275 +.85276601,.11419178,.62214436 +.74176812,.66615555,.78706885 +1.750474,.33494191,2.1002348 +.34103181,.8628175,1.3832838 +.649788,.7092009,.24217432 +1.1185684,.54732383,.34362619 +1.694297,.81573013,.18301255 +1.4128546,.0634542,.90057663 +.55071551,.29364872,1.2320653 +.40450443,.84094222,1.0311622 +1.6176521,.1091557,.99529356 +.5751966,.6572608,1.0114806 +1.1031729,.01516509,.85229467 +.50021585,.11893176,.00333646 +.98669073,.35131639,.13137947 +.73774209,.53867432,.52955088 +.66629007,.22317224,2.2593094 +.9193988,.70345745,.57359977 +1.6701089,.5031281,.56046971 +1.0689379,1.1553675,.31813286 +1.2738988,.56885889,.49135274 +.38895068,.89868591,.72970303 +.47218438,.11147264,.72836692 +.58167568,.60776692,1.6862147 +1.2845799,.47944586,.13293809 +.62383907,.00851635,.95027183 +1.4463233,.49239714,.89290561 +.76852702,.28969712,1.4864871 +1.0906392,.29255462,1.939804 +.2928245,.64473093,1.0114772 +1.1425614,1.5958665,1.489617 +.41119711,.47216607,.47560687 +.69399848,.39939039,.33852547 +.96696967,2.3204898,1.9800508 +.55322485,.51123672,.43903276 +2.3541016,.65046576,1.435093 +1.3397421,.7781778,.3706208 +1.2500165,.92629506,.49521631 +.96287573,1.0748054,.89396798 +.95263162,.89818388,1.4182177 +.67825645,1.458391,1.209154 +.92692332,.09970824,.00635723 +.74555426,.83203125,.47455831 +.54452685,.45959003,.029256 +1.7085794,.35990772,2.2486766 +.3289802,.71370752,.71748851 +1.4323712,.20960974,.78704957 +1.2298297,.46007234,1.9960273 +.99455739,1.9805664,1.3059657 +.53614568,.84712274,.92152107 +.74567929,1.3175541,.27434666 +.61836162,.07915087,.02924388 +1.3387086,.49905972,.55528932 +1.5078676,1.8809209,2.7542891 +.81715293,1.0341693,.57307503 +1.126264,.51339055,.40828006 +.6375848,1.3790533,1.2628298 +1.6018267,.45718955,1.0328666 +1.6215336,.43904365,1.8283674 +1.4552374,1.2514342,.35171093 +.42667792,.62157329,.58786762 +.58974267,1.3161049,1.1014376 +.87240039,.87475743,.09117062 +.54657768,.80317902,1.7394645 +.59861329,.99484949,.6167254 +1.6638724,.06705222,.31330232 +.64221117,.65194524,.54854339 +1.9322986,.091035,.62215644 +1.3528389,1.2229191,.19097975 +1.2556165,1.5457609,.54649997 +1.4237792,.6765075,1.9754417 +.83688956,.115692,.61165736 +.61375748,.91316604,1.8066442 +.71397816,.79986935,1.6790012 +.77453449,.39376464,.2908562 +.65955085,1.3856819,.03359866 +.34367415,.43890706,.67490316 +1.3625226,1.2341526,.28302125 +.97162716,.44598295,1.9852536 +2.4680412,1.2416612,.61166281 +.56638638,.94367251,.83607503 +.53426394,.04164651,.80311905 +.52929177,1.1031198,.32777277 +1.4169516,.08877043,1.2450717 +.55887275,.15742308,.5142009 +.43997425,.1006623,1.0903736 +1.6336251,1.2868521,1.4898083 +.97850365,.12652921,.42700462 +1.1579656,.88114,.49571305 +.75376591,.0557829,1.8626103 +.97694904,.53756797,.09165291 +.63887204,.17199106,.8326417 +1.0288456,.06457855,1.9565274 +.62876494,.20921194,.11111305 +.5996113,.71557592,.57840173 +.99283146,.56674964,.4991693 +.74371314,1.8044446,.71565243 +.53421332,1.3297864,.84390347 +.61946146,1.0592952,.42107491 +.829902,.6272501,.56042563 +1.0456942,.40773496,.35069199 +1.9222883,.22707647,1.2938997 +1.2212634,.61864864,.15192223 +.46878876,1.9013738,.91301355 +.62649521,.30009219,1.5276096 +1.3164456,.0831818,1.3170089 +1.3873073,1.1902047,1.0438122 +.92371356,.17433154,.02066471 +.5614122,.7730442,1.0101632 +.92223164,.42405399,.44669345 +.64768733,.2702444,.9064153 +.7475311,.16710119,.14044444 +.79685829,.04485048,1.5867454 +.35913102,1.0562776,.11086502 +1.0739383,.50294763,.27215399 +.51794427,.95714578,.38813221 +.61954084,.91220713,1.7237569 +.791453,1.4344015,.47012971 +.93335523,.27794082,1.2300809 +1.2423641,.33972221,2.0903753 +.99466426,.87175231,.05402196 +1.4975818,.12146423,.20721861 +.88534951,2.1602323,.87548503 +1.1640179,1.0818862,1.6026545 +.68879077,.54635533,.52148027 +.93810605,.60053477,.13966571 +1.0224748,.82053892,.23876446 +.30446812,1.1797508,.32535074 +.54768234,.05652382,.73176893 +.76376992,.16586051,1.4787177 +1.0538931,1.0295658,.17721838 +.65722323,.654378,1.6924623 +1.3894187,.9337013,.61073634 +.93056047,1.0857948,2.2568351 +.44767854,.90506237,.19267337 +.33134992,.79262992,1.4262861 +.38873712,.79919297,.68548203 +1.1405468,.43636757,.79246594 +1.8474332,1.4789687,.76980014 +1.1420875,.59218107,1.4109595 +.50350624,.18202769,1.5118949 +1.8494582,.35510589,.65455441 +.79861408,.83226105,.59625467 +.57816309,1.7858007,.71109474 +1.0656735,1.6275151,.71831259 +.61473101,.72032723,.07738731 +1.5896957,.08159854,1.8243821 +.7485325,.99608297,.30075085 +.32069016,1.5394546,.34261411 +.47605694,1.1300943,.05446452 +.71717774,1.2995646,.8931885 +.42349756,1.1443649,.00035793 +.75845939,.29437471,.86181854 +.92870594,.04193262,1.3998646 +3.0285819,.48315869,2.4587025 +.9691578,.6087959,.10813066 +1.370195,1.0650199,.21602132 +.42970374,.55369961,2.0852818 +.83666566,1.3220012,.43821663 +.57609846,1.106672,1.3361662 +.83190828,.75921345,2.1196068 +.34797603,1.4624997,1.5115744 +.98629352,.73985338,.42121524 +1.2663052,.49505336,.35062748 +.29537393,1.601769,1.3488425 +.66592447,.50445341,.19537848 +1.3334817,.76807218,.1450736 +1.3795647,.46074082,.43548842 +.44316852,1.1686417,.0487711 +.57972257,.22523178,.77445186 +.56567677,1.9476631,.43756152 +.47987114,1.5713379,1.4133197 +1.1816466,.30738951,1.9847293 +1.4616358,.04342972,.41018658 +.65790344,.54882354,.52815928 +.86705334,.49831598,.55314773 +.97068438,.71753837,1.6539479 +1.3606253,.32105468,.26623979 +.74119665,.43590609,1.5435123 +1.8350802,.68378011,1.9485187 +.46087636,1.3651252,.24209397 +.77586385,1.6369332,1.5584012 +.92557428,.90811058,1.0651854 +.77553545,.61692859,.22563568 +2.3559527,.67331326,.61058205 +1.533557,.1594466,1.242968 +.56081132,1.361708,.34589418 +1.4234376,1.0922609,1.8151851 +.69191265,.14143161,.1940292 +.86150841,1.5069458,.05809793 +1.0072419,.52683789,1.6051878 +1.3032639,1.3268041,2.2093874 +1.9726648,.42579246,.43330912 +.35632305,1.8548816,1.6989986 +1.5440735,.68617109,.6235323 +.94220006,.01600238,.71189487 +.91571363,1.2490722,2.7071635 +1.6755221,.51133538,2.3080726 +.72973037,.33844424,.35298842 +.91509353,.222463,.24184973 +.52184158,.68253156,1.3398569 +.33495014,1.0269265,.41485064 +.82915956,.20504136,.34774875 +.4955137,.197391,.5769308 +.35560009,.88063157,.28598357 +.51427722,1.6838424,.14696577 +1.9629583,.94447477,.67399004 +.54594598,1.9753169,.85282731 +.51632566,.48200767,.87821129 +.85137391,.36724233,.54025252 +1.2940666,.33455342,.32563588 +2.0599725,.35029741,.65199064 +.59517685,2.288478,1.0258535 +.97885377,.94989951,.24807916 +1.2692854,.24864817,.15726647 +.6621058,.97702078,.72030741 +1.0017177,.09402649,.14028971 +1.1189075,.77422079,1.4746798 +.80014485,.00352815,1.007536 +1.3660463,.30956827,.63461641 +.95887722,.95805221,.67808518 +1.1282001,.78588015,1.4580675 +1.1382768,.05397583,.74567348 +1.6056318,.86720015,.72598552 +.61344845,1.5903224,.34928313 +1.8915999,.73729312,.4820619 +.51038785,1.6358233,.0175445 +2.4584224,.02868024,.33781832 +.99790672,.30034441,.36063 +1.0349589,.3086924,.25192124 +1.0203885,1.3169301,1.1020425 +.83354492,.98319236,.13800631 +.94105164,.58681298,.23594601 +.97099717,.69117829,1.0218628 +.43032834,.31165255,.27559447 +1.0813596,.161862,.26815178 +.52433248,1.6314825,.60917894 +1.2911347,.31689092,1.230879 +.43471127,.43280337,.44863911 +1.0880369,.30068479,.56523568 +.57236035,.52946627,1.0486344 +1.3653829,.30479248,.77075576 +.66956376,.33860071,.68099411 +.53295124,1.6681086,.07426842 +3.7234647,.54907808,.4182605 +1.2439815,.768297,.41175044 +.94461633,.73390457,.65019327 +1.2512365,1.045564,.97967795 +.90757029,.78929569,.92823698 +.78641622,.10437222,1.0382075 +.61698922,1.3828506,.11036538 +1.4578169,.01757956,.51627516 +.88885106,.31487575,.51802612 +.85835415,.80174068,1.3996179 +1.0760281,.04444569,.06670415 +.91240138,1.3559683,1.4655766 +1.7611674,.14629181,1.0702985 +.23123631,.21502106,.13420706 +1.3687605,.27400524,2.0660024 +.81408448,.62707315,1.2612546 +.83820157,.54414074,2.0003802 +1.2800197,.45234592,.30167979 +.9494134,.46169951,1.2746144 +.42223614,.92106541,.20931335 +.69132383,.16696949,.46819959 +1.7250342,.10768678,.33151925 +.60348274,1.16095,.29583065 +1.0004777,1.4086154,1.0424819 +1.8954856,.84051552,.29391594 +.46233233,1.1044692,.31310165 +.87763586,.73623029,.72512113 +.74779302,1.8344297,1.3895838 +1.8735891,.58113815,1.0063442 +.61616163,.26279363,.65206902 +.83930409,.58121299,.46445388 +1.6649673,1.6635235,.78665881 +.91859213,.19206109,1.4619052 +.73238545,.47000451,.59422724 +.37422217,.15781647,.26662795 +.77312061,.61281195,.52946105 +1.0986912,.46251211,.08244686 +.70361678,.00521995,.55825994 +1.3556752,.05770111,.67096743 +.70284549,.94856683,.32332698 +.35909922,.0189422,.19645042 +1.0367554,2.6296752,1.2619585 +1.5423911,.0778769,1.0779661 +.28620187,1.4028721,.24542367 +.69045517,.17580192,.2467365 +.5095218,1.3690472,.00141397 +.69734502,.12337244,.70891728 +.87239164,1.2988797,1.1232165 +.96145938,1.2414301,.06043973 +.93645432,.8890533,1.0201508 +.60472889,.09726498,.23358652 +.50385028,1.9715672,1.4173581 +.64025638,.01341213,.18320615 +.61739069,.61865956,.43697596 +1.4880261,.2671106,.40005412 +1.1468949,1.8048744,.46158212 +.3629181,1.7530333,1.1569013 +1.4365009,.67608835,.94337614 +.44052903,.20291314,.33991058 +.51279771,.12676285,.72911251 +.84263761,.60080494,1.0780488 +.52323492,.40407247,2.1930158 +1.1625302,.39878552,.18750069 +1.0649743,.26525901,.21905166 +1.0018899,1.5992361,.30206106 +.68311034,1.9109545,.62671208 +.59415219,.76500593,1.0247561 +1.6733325,.14539183,.1883792 +1.0272908,1.3585683,.21774263 +.51945738,.43234228,.95184442 +1.1951357,.692735,.46297884 +.87845455,.72218678,1.2794743 +1.4289297,.43993881,.30355932 +.92613533,.89310456,.63722723 +1.8913443,1.0671697,.39887847 +1.3826017,.57289258,1.189578 +.98971374,1.1050974,2.0356522 +.38767888,1.0986386,.83823303 +1.9789502,.23451471,.13806241 +.71326233,.61238378,.17070926 +.52286509,.78138363,.95976932 +1.1240117,.12251816,.41381639 +.49255286,.6396058,.08219767 +.72785548,.59646646,.05486899 +1.2327067,.0222927,.80911672 +1.5361726,.22647529,1.8403524 +.80471005,.1929731,.25810925 +.87921577,.46834382,1.4034503 +1.7771784,.26525598,.50148105 +.72398178,.95362918,3.0964237 +.9394818,.36697392,.58581114 +.54411931,1.2547299,.53891162 +.89935845,2.0859025,.40616435 +.50279777,1.2400582,.15974611 +1.4892091,1.0199823,.80626439 +.84574928,1.0728358,.58794464 +.67482064,1.315759,.30633782 +.7070303,.41439274,.6615569 +1.0579511,1.0746859,.46001401 +1.7281229,.15800319,.86746627 +1.2578014,1.0445396,.81158354 +.8950673,.29426924,.35005655 +.14370143,1.5116621,.14155645 +.62773323,.17434803,1.1243499 +.36453224,1.316106,1.2811899 +.91968927,.04834591,.61558915 +2.5848017,.3009304,.01728542 +.6058308,.40823374,.64903035 +.64634998,1.6749047,1.1915472 +.60722347,.20952991,.92824934 +.63244023,1.5134139,1.0445992 +1.0897895,2.2552682,2.1634963 +.53904951,.29687146,1.2572573 +.82823144,1.1253736,1.7945595 +1.4425978,.36647511,1.4778808 +.45197127,.20008588,.94036877 +.7267292,.5751171,.32524229 +.41549607,1.4146009,.48113257 +1.2097728,.00278837,.13820105 +.8298993,1.1192043,.08235263 +.56433864,.81287739,.73776068 +1.5115021,.31882804,.10799839 +.48113918,1.8484408,.9439595 +.72137993,.41897826,1.4469675 +1.853952,.89128659,.39877472 +.80390209,.17201894,.57729608 +1.0669638,.12172709,.5863845 +.76350434,.52489291,1.5740128 +.55752945,.30578383,1.457788 +.48696782,1.0576166,.47108689 +.75822457,.28747333,.83592555 +2.3448613,.92216016,.05349141 +.21381787,.06525467,.57413982 +.89696636,.38414593,.0463001 +.30582881,1.0753009,.00508851 +.7105266,1.1602293,.47952796 +3.1132102,.26819615,1.4405612 +1.351475,.12048987,.39235537 +.28543299,1.9959483,1.7431456 +1.7953611,.57429929,1.2447227 +.58044962,1.3652985,1.8456334 +.75239992,.8096771,.40017698 +.54222858,1.004988,.288379 +.62640908,1.295027,.47380377 +.32051229,.90207373,1.1907026 +1.0425069,.372248,.65852469 +.6021585,1.0822581,.08198831 +.98815823,1.0779777,1.0902206 +.53730582,2.2694625,.35662884 +.54307534,.7383042,.62339921 +.41470533,1.5432171,1.5666641 +.97488312,.96537827,.4100672 +1.8553797,.71405455,1.1423409 +.56072411,2.5670682,.07048981 +.68402382,.83700893,.231118 +1.5229728,.74949686,.21726547 +.41910077,1.1827462,.87113345 +.64758709,1.9702204,.20508066 +.65482547,1.1342849,.79801412 +1.1741923,.55130561,.38124038 +.91670263,.74280974,.74820262 +.58328085,1.4367509,.06455467 +.28816673,1.0819977,.82114152 +1.0407263,.52098847,.53039667 +.8686089,.87973304,.63800095 +.93487702,.43033632,.86608479 +2.6424482,.0081984,2.997462 +1.2224952,.12358195,.80030239 +.77102798,.77740131,.43947774 +2.2982262,.10547402,.73621615 +.49924707,2.0463775,.64406167 +.34097361,.90390134,.35460356 +.54359502,.32475422,.64177609 +1.1538894,.83111084,1.8792411 +.68240907,1.9907478,1.0255833 +1.2528865,.42211222,.46544056 +.90523,.16726918,.47796805 +1.444307,1.7358999,.07882832 +1.0361784,1.3449441,1.4074068 +.33591471,2.2964748,.07253514 +.91160494,.10744102,.83859998 +1.5370639,.58557197,.0762728 +.81592108,.09986008,.49834942 +.79428566,.72409251,.62408368 +.88761091,.02658059,.61247037 +.43798781,.16480261,.08351476 +.17278098,1.3852441,.6405435 +1.096142,.30494356,.64287583 +1.5336347,1.6672983,.44496996 +.31480903,1.2317793,.0042782 +.66475979,2.0132047,1.8092656 +.87582264,.90500824,.57221758 +.64283868,1.0868743,1.3331081 +.7573388,1.7515177,2.7617962 +1.0045577,1.0418655,1.1727082 +.86775164,1.4869841,1.7469276 +.53785152,.7059774,.34291224 +.77370104,.53600241,.8857854 +.6136746,1.0076561,1.1546051 +1.8879233,.93844529,.7172341 +1.452637,.25199459,.88966532 +.68985852,.80078755,1.7627798 +.49609111,.79900507,.62361435 +.45862898,1.6224208,.37558803 +1.3828426,.92914397,1.4741377 +1.3505755,.46343107,.37193337 +1.2931308,.85314165,.29151142 +.6879732,.34075658,.61663243 +.93774691,.84396719,2.3646488 +.69342858,1.498051,.49583713 +.91451194,.25307159,.99382847 +.6523744,.32999886,.18381153 +.64577565,.98410697,1.7907964 +1.2601702,.62951295,.25343665 +.48992655,.19313292,.27209089 +1.1983083,1.1814615,.99423189 +.60103603,.45061185,.06243036 +.8125517,.64327769,3.5081535 +.49924812,1.8592098,.31587648 +1.5157634,1.1009984,.61204817 +.6169937,.53968474,.04094677 +.5069729,.89662193,.50727985 +.81850155,1.0918431,.23366324 +.70589672,.45898371,.58952619 +.50033361,.46890492,.28026622 +.35681534,.82840878,1.4641545 +1.1142156,.32707547,.03190551 +1.2236171,.49308964,.66571375 +1.0737957,.61231524,1.5716903 +1.5181532,.73646789,.19715144 +1.2050594,.24040606,2.513091 +.9509335,.04248996,1.2884633 +.67197976,.36131637,.28836733 +.40792932,.37386895,.48591483 +1.5418518,.68799811,.03858285 +.41966569,.04037764,.21817948 +1.0152161,.87167247,1.1615779 +.57994472,.64924548,.51311388 +.83314097,1.5314109,.21004345 +.58779045,1.3003313,.1592612 +.37510459,.34684505,.4527919 +.5372598,1.6791256,1.0846101 +.28528237,2.0741048,.84313619 +.61693225,.72808713,.08908494 +1.7994493,.35116683,.88540365 +.54785579,.17638452,1.9141408 +1.0472336,.00271785,.62922591 +.63875108,1.9858331,.28463958 +1.400274,.72621017,.64808386 +.66633234,1.6048571,2.7353272 +.42132417,.03254361,1.2696874 +.6983008,.67249279,.42366564 +1.185625,1.0436107,.72627347 +.94154802,.51862785,1.2951404 +1.1733774,1.1186427,.87253098 +1.042562,1.1856113,1.6014185 +.57878733,1.0316011,.05867536 +.27752603,.56663141,.1996966 +.54357816,.37075953,.27050615 +.54874068,.27620376,1.0958867 +.43038196,.49604027,1.5988428 +.75383552,.24048882,.9156488 +.62091794,.87699965,1.3293712 +.43222191,.42747292,.76202825 +1.1874139,.92677759,.13137011 +.74716209,1.6763891,.14066208 +.91489166,.43131107,1.347046 +1.0049308,.7663503,.76449471 +1.2915884,.93063557,.67809398 +.46506081,.47331881,1.6166852 +.71656487,.61439812,1.1847002 +.6192585,1.5724235,.14272188 +.49320696,1.7269538,.20838752 +.70477457,2.3279095,.20087782 +.34764889,2.3780574,.94641026 +1.1964493,.06658168,1.4665176 +1.1612058,.05628704,.11913373 +1.2047355,.3937105,1.458182 +.56080449,1.2970779,.45410059 +.77259846,.06709445,.06350539 +.53997456,.72128632,.27591326 +1.0057889,.498694,.41892685 +1.0884453,.17858744,.86136739 +2.7119557,.69841541,1.473465 +.7054217,1.4102155,.9213348 +.6573578,1.709695,1.4055321 +.63950698,.79328959,2.5964235 +.820477,1.3567268,.56091997 +.46817011,.2023678,.1167779 +.50441127,.3263047,.71938098 +1.0244962,1.2966765,1.8892064 +.52880778,.43263532,.64635432 +.5680027,3.1755941,.21080044 +.79991272,2.2387902,.73725361 +.93038841,.51577052,1.0550981 +.56204721,.54391843,2.4442828 +1.6739464,1.1966999,.68999556 +.77721017,.56888841,.61270467 +.97250197,1.0304753,.20153674 +2.085593,.36685672,.16111609 +.86000303,1.9286876,.61599162 +.63691232,.14267351,.44690849 +.54585278,.82972774,.62941405 +.67836786,.72349484,1.1951738 +.99188467,.7552039,.51759963 +.89283532,.78574286,.09321115 +.93010354,1.0460706,1.1719786 +.45549655,.84378014,.84659712 +.90979091,.48104111,.52088113 +.89457222,.18148865,.37945857 +.9523494,1.5073938,1.4960278 +.84356159,1.0693037,1.2374649 +.33673558,.51451333,.73409218 +.74646557,.24515807,.10641223 +.93305191,.72244123,.34683846 +1.1588396,.31628113,.44488578 +1.4803688,.45584114,.82168311 +.81007786,.17925688,.09330761 +.63797107,1.5034945,2.5589226 +1.0958715,.59831951,1.7810305 +.93016484,.60161381,.39580149 +1.6668489,.02920365,.15386246 +.61808281,.12036536,.34262849 +.62713892,.57045875,.17896551 +.55337812,.72181814,.19602995 +1.8087252,.30714603,.38303537 +.39845967,.83644331,.54114343 +1.3914987,.21766005,.95970685 +1.0660254,.0407103,.82790033 +.76903045,.72388325,.85643742 +.67928119,1.7369053,1.1435812 +1.5538702,1.0314416,2.0013128 +.73753719,.57562088,.01727812 +.58929157,.93088261,1.5375628 +1.5519599,.01829348,.26807229 +.91468244,.58047572,.14551378 +.88808138,.88015967,.38961917 +1.0524604,1.8810725,.16563724 +4.0892221,.08707611,1.9307244 +1.3756921,1.8657719,1.734311 +.46275551,1.6522425,.88270944 +.53702336,.25754223,.59333144 +.51584866,.3086278,.39810266 +.31514016,1.9253958,1.0035009 +1.0678556,.05160498,.81134336 +.3563933,1.5772784,.47259076 +1.5498661,1.24846,1.890608 +1.1957198,.62890487,.67380179 +.45106107,.66159668,.27189763 +1.8210394,.48742138,1.1558568 +.96529212,.29539212,1.2359932 +.28418313,1.8792053,1.2795254 +.99952989,1.1920933,.78706266 +.40174007,.10589396,.72744804 +.41052621,2.0238404,1.5429333 +.60425764,.67182511,.94387649 +.55482115,.59385053,.21819288 +.70888211,1.4286143,.76942781 +1.1568846,.76809954,.29318383 +1.0392232,.9227626,.33419266 +1.2753864,.72047767,2.5427855 +1.8469338,.464484,.52437545 +1.035677,.42528471,.72384415 +.40123948,.05263051,.23355298 +.58687577,.54383507,.59465524 +1.2087887,.83539387,1.1141123 +.62835061,.29873186,.27449308 +1.6065419,.35413601,.16012108 +.58827588,.36729113,.61954989 +.65221776,.37816465,.61238969 +1.0912099,1.1611825,1.9642359 +.76904185,.58909222,1.5928328 +.36619748,1.3352878,1.2624404 +1.0353451,.69588566,.31914574 +.42366235,.22657311,1.0882715 +.4396694,.95015888,1.4422181 +.64743563,.29401648,.15485198 +2.7775147,.15482928,2.1474819 +1.9009747,.07948036,.2096234 +1.0375082,1.0197104,1.3727374 +1.5258815,.95297168,.13531882 +.58043184,.63293313,.29386051 +.58169553,1.300779,.29216366 +.36157918,.33334326,.05274053 +1.9446239,.0353972,.71919477 +1.3717372,2.0176191,.73430441 +.88450048,1.4306007,.63429561 +.47431916,1.4083031,.4087202 +.52365289,.80997475,.27891144 +.57165025,.31052336,1.0220026 +1.1269969,.68367532,.38865039 +.40816066,.62596731,.66375428 +1.0222541,.96619607,1.2478592 +1.077942,.39162261,1.2790021 +.6172391,2.1571375,.45849004 +1.0995279,.21571706,.37701187 +1.0582162,.94213476,.56862616 +.33062958,1.7311542,1.2644533 +.72193308,1.0832487,.18479105 +1.2737484,1.3211672,.11855154 +.47794648,.50599073,.19940198 +1.4685321,.98066172,.25184949 +.87100143,.9579761,1.6436309 +.44259138,1.2347196,2.1729507 +1.7117556,.38745621,1.174949 +.71968204,.50153313,1.7568959 +.61422926,.12879407,.69506114 +.30933527,1.1821221,.36455415 +.59376123,1.444551,.87391058 +1.1286789,.97657847,1.1219354 +.91670656,1.3537443,.53350728 +.7294909,2.0874169,.52259347 +.98718884,.00959563,.10716393 +1.0898559,.770819,.29841965 +.45961859,1.309925,.0345745 +1.896021,.73602147,1.0389216 +.52161555,1.2201429,.77000314 +1.2191796,.67311709,.34075419 +1.0251318,1.5681493,.90804129 +2.3145641,.03113552,2.2683437 +.94374967,.63597133,.11439962 +.58449312,1.4976101,.02054088 +.91162717,.48342868,1.9547507 +.61885396,1.6879931,2.213988 +1.3463568,1.1140377,.95705142 +.63008094,.08093569,1.4537045 +.48709569,.00659722,1.0721949 +.62726834,1.195152,.46647227 +.45832777,1.3027616,.24195799 +1.1409479,.96999176,.26834068 +.58603554,.89160554,.03665615 +1.1587645,.57010683,.21817207 +1.0378898,.41340056,.35863131 +.8775868,.5340662,2.2890228 +2.6639574,.08522518,.59445309 +1.2379106,.0255353,2.1662403 +.36034907,.6819151,.34865549 +.71639952,1.1200343,1.9363063 +.99579738,.93631582,.43911105 +1.3583186,.41949193,.95791125 +.73530136,.89918461,.72514494 +.4847262,.3194926,.45079726 +1.0231628,1.286112,1.2267065 +1.619146,1.2895734,.92049969 +1.1822425,.04670243,1.3684008 +1.1233675,.21822196,.38537587 +.98298535,.44265478,.24238677 +1.3584656,1.693378,.25453441 +1.2526883,.07867729,1.6557961 +.71075143,.11800273,1.4943883 +1.1609716,1.5393269,1.2763983 +1.4543608,.44450555,.8340469 +.38525798,2.3979437,.89826534 +.68207944,2.0423459,.45258103 +.62269426,.97445683,1.1244725 +.38867269,1.0476131,.38453966 +.76850699,.19488777,1.5863388 +.85805301,1.5659923,1.2107204 +1.2584954,.32294451,.65070773 +1.6750441,.57115847,1.102494 +1.1366812,.95003921,.34925924 +.43623234,1.0117462,.14071118 +.40987339,.60701661,.11141299 +2.4766343,.40806367,1.8311574 +.95410387,.72076896,1.1787464 +.4806925,.74213075,.71612082 +.83312756,.0672284,.75079239 +.62904872,1.751354,.65881874 +1.0462696,1.2318057,1.4826888 +1.5043164,.41881384,1.6176844 +.67156683,1.1432317,.14119141 +.38923332,1.0298543,1.00627 +.96280225,.17778729,.35842782 +.51702541,.60149159,.55637267 +.52786256,.69727173,.9582841 +2.2140476,1.0461354,.13123228 +.99471142,.41216452,.34098401 +.34017586,.52412899,1.3307969 +.26229961,1.5318296,.55645688 +.50876877,.85281719,2.4948286 +.68782839,.87208541,.4138834 +.55610711,.82872636,1.5581586 +.51912791,1.4647109,.17463653 +.45354823,1.0624657,.70135675 +.43508909,.53223739,.96142909 +.75169789,.23300957,1.2435447 +.79205139,.45944174,.35431842 +.73513469,.15350497,.69292283 +.77799849,1.043026,.03809909 +.81442578,1.6142595,1.8275636 +.79391315,.15635796,2.3431941 +2.8691671,.30132074,1.1871142 +.56152797,.55135565,1.0844367 +.70714429,1.62176,.80432906 +.41446238,.50929135,.50910366 +.56854594,.02766477,2.1444519 +.80926161,1.397187,1.1326073 +.73743027,.40327223,.28869704 +.95903121,.99341542,.65526632 +.95601317,.00546764,.15789922 +.56646162,.69929979,.19350045 +.33162301,1.8322529,.72445938 +.58021821,.98992093,.14855391 +.55414174,1.0877638,.44450136 +.47682158,.56473811,1.198959 +1.2878091,1.1667707,.33687157 +.50192034,1.6135453,.46088669 +.90208147,2.8450309,.42408397 +.99476117,.71652579,.76601914 +1.1584664,1.2092206,1.7428022 +.84446076,.10155365,.20891568 +.92899652,.06215136,1.3274461 +.83663228,.42505662,1.1259892 +.67624147,1.1500422,.98160243 +.37363791,1.351148,1.8647597 +1.5393109,.06408811,.52101709 +.70808885,.10494683,1.2048411 +.51231639,.18811581,.49267148 +1.2591318,1.0587424,1.1731242 +1.7297707,1.4620379,.87445105 +.71150702,.04305345,.01487408 +1.1359007,.69238518,1.5702618 +.70945295,2.5311646,1.273353 +.38705458,.99132977,.52415048 +.36973613,1.060829,.45528567 +.91410976,.97879526,1.2429495 +.92631376,.52529014,.35076778 +.68608485,.27112429,.82372228 +.59831207,.72991402,.08244038 +1.5538966,1.3507107,.53534392 +.91241582,.58309885,.64700509 +.7587324,.83476315,.61210133 +1.0436549,.19622481,.44671224 +1.0960001,.20305548,.4462104 +.97608485,1.6869675,1.2212309 +.59017299,2.8619844,.29777601 +.62289492,.5898393,.23089002 +.61478599,.30428709,.50458687 +.99396665,.57593287,.71593617 +.56276413,.43874428,.8821252 +.80720541,.66010826,.01172729 +.49844727,1.2789714,.78342144 +2.0139231,.06181922,1.7965086 +.55098437,.0482348,1.569783 +.99857921,.35486548,2.0681784 +.56450206,.0527091,1.8509099 +.77122571,.51360041,.0478114 +.48379445,2.5789779,1.573472 +.57059513,.87702861,1.4659406 +1.2848086,1.2711359,1.6534754 +.82670919,.88285792,1.2065429 +1.2991917,.17469052,.6385102 +1.4843332,.40699378,1.0963154 +1.1712783,.01137292,.53080284 +1.1822966,.47497857,1.7168454 +1.0478597,1.1186134,1.4539033 +.82884825,1.8302436,.10968283 +.69163014,1.2555623,.56794633 +1.0657378,.92492582,.67987903 +.61682064,1.6534809,.02050991 +.43585098,1.082953,.81364365 +.45159099,.39572638,1.5775455 +3.2151771,.32775041,.79359243 +.87293631,2.9159642,1.1689441 +2.4587644,1.2114198,.62429081 +.398155,.13147814,.42328863 +.70887305,.94727921,1.2825474 +.33770093,1.8048114,.5983297 +.66100603,.57050791,.35534704 +2.8823354,.6723837,1.5727898 +1.454009,.95292876,.75751536 +.43269985,.88481063,.94300753 +1.6260189,.12679206,.98095887 +.47199246,.31351323,1.2232386 +.98222335,.02995274,.46328003 +.83805449,.1757271,.8012897 +.60275721,.88370085,.15854773 +.30210013,1.1090001,.95478152 +1.4887824,.98673059,.02576824 +.74298547,.08340643,.76493747 +.77773753,1.9823519,.01010352 +.64316267,.93005948,1.127825 +1.0494526,.93141535,.09453837 +1.0824268,1.1637894,.25707813 +1.5583713,.22960952,.14035345 +.65660845,.23961944,.25236996 +1.1103024,.87552625,.7170788 +.95652725,.92706161,1.1260935 +.74673911,.036043,.84005497 +.56765739,3.3149375,.80625826 +.7117273,.43085001,.73484048 +.95462163,1.3045646,1.888103 +.78492079,1.8268296,1.7239218 +.4862252,1.1080653,.66860428 +.62425798,.73079014,.43204084 +2.1599657,.39108835,.0645588 +.6903995,1.1419961,.0257504 +.81043529,1.1480737,.12632945 +1.0296099,.58419572,.97921965 +.78114337,1.1134601,.51783167 +1.8464624,.09613032,.21373068 +.93849511,1.5685288,2.0012348 +1.1953359,.21126934,.27252193 +1.1053713,.47439406,.06621322 +.99226297,.24447207,.34987283 +2.4993115,.27115658,.99496265 +.62884486,1.3840862,1.3053778 +.58225505,1.2169298,.43956444 +.62975341,.10309701,.02390385 +1.077984,.70083215,.26600225 +.92499232,.33515532,.90877602 +1.2753837,.26325858,.98897733 +.40608176,.40756515,.37026787 +1.3034743,.86292606,.97639647 +.68819632,1.9272746,.09613374 +.38529913,1.9048467,.827747 +.65806916,2.4065332,.09522342 +.58125057,1.1801152,.50992232 +.59532115,1.3520957,1.1623754 +1.3427084,.68468889,1.2205645 +.49895402,.26418453,1.7413985 +.95124467,.52839696,.01710196 +1.4475349,1.1782565,.06365007 +1.2658271,1.2632146,.07526522 +.93052896,.40174925,.4071238 +.97638421,.55940847,.63374869 +1.3248691,.62032956,.97362019 +1.0598124,.44392539,.87922677 +.78020908,1.0096737,1.0640146 +.37403988,.35560645,.04761817 +1.1877197,.88206512,.14599969 +.78391979,2.3017586,.409218 +1.1562517,.55363133,1.1772443 +.52382579,1.2604763,.00007781 +1.2611862,1.8701495,1.0991474 +.75713742,.01624671,.63193878 +.66290642,.44604121,.00722056 +.58324866,.38756076,.4801589 +.76577216,1.5221804,.55055008 +.76277295,.10721756,1.4952998 +.84719596,.58653848,.76350198 +.61349587,1.229557,.44228711 +.60003981,1.3107236,.83145964 +.5283621,1.4831695,.82375259 +1.1341987,.5374454,1.5757192 +.5123022,.48509227,1.2922365 +1.2208885,1.1073333,1.583154 +1.4148414,.00926754,.53583998 +.3998012,.78817248,.06732402 +1.1150553,1.1307379,1.7634486 +.90672614,1.514614,.67754293 +1.163474,.43965608,.79636375 +.73504828,.24186094,2.0890058 +.67670457,1.2456408,.06993743 +.38579173,.53653428,.69296156 +.57033486,1.0968523,.00474959 +.75241647,.3315026,.44392977 +2.4172566,1.5249137,1.9816204 +1.44588,.62442755,.57597001 +.52701546,.30159195,1.1419634 +1.815438,2.4351751,.71380307 +1.100746,.38274417,.64359912 +2.672366,.52151585,1.3250965 +.94139616,1.4354724,.25010398 +1.0665302,.3510811,.3767446 +.86228281,.22452574,.86902798 +.51530052,.49376516,1.5131569 +1.1503989,.76514028,.10953283 +.82680907,1.2763612,.89107445 +.94477521,1.4397668,.12764462 +.96192282,.51008045,.39281058 +.80478138,.6604937,.16309531 +.61522384,.83530466,.43115644 +.4704162,2.3477615,.61045848 +1.1675622,.01189077,.16082248 +.46618781,1.2133969,.16553938 +.67285634,.82017592,.9014764 +1.1561265,.74029046,.45078951 +.900604,.52008814,.30349507 +.43441802,.06331171,.52863287 +.82529193,.9684317,1.1003101 +.58045738,.42171145,.07946469 +1.5746162,.61418287,1.9743587 +.58531679,.63758784,.2013919 +.66330805,.48303354,.4773263 +.68649867,.16755188,.40745175 +.98601674,.08719737,1.7912935 +1.008441,.5456624,.43381241 +1.0167429,.79821516,.56035852 +.74714868,2.1092316,.25582091 +.72625964,.28629633,.23273765 +.91339318,.77274068,.19517486 +1.8086075,.08354735,.62322941 +.5365093,.06217764,.26917754 +3.2423871,.01700816,.82507665 +.86896822,1.6628311,.30402855 +.53377572,2.4361052,2.5942684 +.48717764,.10513679,.67367152 +1.0892003,1.2029045,.02256002 +.42358305,1.665394,.79489062 +.77729325,1.9201339,1.3125795 +.95928595,.26609724,1.5159041 +1.0670771,.50079749,.58500492 +.37430895,1.2795255,.59241235 +1.1260645,.82528035,1.4356316 +.35971717,.94220102,2.0384077 +1.244661,1.0174068,.70953701 +.87532797,1.0431368,.24636004 +1.0555526,.47895987,1.9789711 +.739585,.24846335,.12668035 +.66327779,.36905919,1.2821606 +1.2946893,.6740252,1.3579806 +.64043424,1.438477,.04138178 +1.5071044,.84566318,.20011155 +.62686425,.84864083,.04257025 +1.0740314,.82066843,.31127719 +.78266573,.34231534,.29907761 +.28091508,.72459046,.4443624 +.74286005,.46889681,.53592716 +.9871206,.81058566,1.0126937 +.5380088,2.0947625,.15733139 +1.2283676,.24831199,.5776134 +.52985269,2.1113585,.59114684 +2.8688458,.9521854,.49139946 +1.4811269,.31023055,.18426152 +1.2596015,.89588859,.75093724 +.78769988,.29039744,1.3436735 +.59186998,1.2984401,.14305027 +.44232428,.9870848,.4825764 +.8859172,.29572705,.43617949 +2.3354328,.14458796,.99599981 +2.1022423,.52071801,2.1968315 +1.0166309,.68397099,.09662806 +.81451751,.11486692,.237027 +1.069744,.97338656,.41764041 +.50322518,.53138854,1.1941218 +1.219315,.20889502,1.2145737 +.81651531,.86909333,1.181007 +1.2461111,1.2615773,.04090023 +.7867591,.51675046,.60531306 +.48255451,1.5061198,1.9834087 +.63750553,.51133344,.98084581 +.93531728,1.8698809,.19503854 +.37159228,.03680177,.78299759 +.3490457,1.0367845,1.9341835 +.73158823,.53651604,.62858521 +1.1876409,.21537441,.12835291 +.84311056,.37190667,.78054651 +.70232095,.03066532,1.6930192 +.63485232,1.3076156,1.3460201 +2.6213192,.36300975,2.2734296 +1.0466684,.86440299,.50610758 +1.1949082,.92729179,1.1121783 +1.1997259,1.5131667,.79960768 +1.4912411,.18991754,3.0127683 +.70131107,.10549469,1.3255834 +1.3331466,.14273257,1.6514719 +1.3728906,1.2395013,1.0383353 +.47525762,1.0947843,.97233351 +.88147101,.67951001,.6221678 +2.159428,.20581914,.82928383 +.35759161,.09078604,.5452956 +1.4237984,1.6675258,.37976405 +1.8253866,.8475057,.61199321 +1.0766244,.96361584,1.2798582 +.57842725,.86548463,1.0389707 +.50013368,1.3480368,.80830809 +.51795836,1.2413182,.00462004 +1.3600737,.80973238,.16587305 +.70779356,.03521013,.17114019 +1.4369772,.61493521,.79113887 +.99486522,.80563288,.57606506 +.61591664,.2676468,1.0239012 +.77037215,.39763665,.15755658 +.54982064,.41990043,.18053989 +1.646002,.35777806,2.214543 +.56045242,.34891944,.25501392 +1.2849441,.78186737,1.2957175 +.67711813,.34131899,.68646578 +1.9531813,.23552967,2.3423402 +1.0629246,.6582746,.4348972 +1.3935521,.49930563,1.3704676 +.35595145,.71372754,1.4148205 +.51972062,.48306014,1.348101 +.44184067,.83909909,1.543084 +.53997559,.53482122,.10503643 +.8231803,2.0304582,.13600223 +.73512318,1.4527893,1.3657815 +1.0244988,.86034919,1.6098263 +.49035483,.31464149,.71406136 +2.2554747,.17963854,.14667943 +.89075747,2.2476326,.73480043 +.82376053,1.0855515,.44145449 +2.4964323,.31691974,1.1513456 +1.3070232,.76391477,.12909394 +.20697807,1.4104117,.26936433 +.89015891,.54647368,1.137254 +.6136409,.21097015,.98376748 +1.0140566,.43847748,1.3854676 +1.4699552,1.815735,.63384785 +.99003368,1.2945515,1.3415731 +1.7324531,.53494907,.09063591 +1.3418386,1.1792209,.12433153 +.83194433,.12598079,1.4309803 +.29033029,1.4649447,.39268192 +.96069751,.23819178,.02519885 +1.7248027,1.6845643,.91038267 +.99575129,1.0560579,.61332561 +1.3449841,.72686116,.46791496 +.53565554,.1884419,.52203599 +1.1279085,.99429857,.08005703 +1.2543423,.28129612,.88981001 +1.3055444,.96294881,.35116075 +2.1821926,.38386236,1.0215497 +.73650288,.0105463,.18555795 +1.093097,1.1870467,1.6773768 +.76710484,.60294537,1.2330747 +.8680829,.59374387,1.5710586 +1.0784459,1.6638816,.79555959 +1.9218632,.64555165,.21540618 +.78915511,1.7593397,.37548327 +.52502295,1.9504146,1.3862236 +.6062724,.52596011,2.0226481 +1.0226858,1.9325475,1.8338844 +1.4892115,.56512568,.95448768 +.97701131,.79270288,.39182331 +2.9951066,.68830174,2.3738698 +.62879447,.90782985,.48050477 +1.0911385,.57122145,1.8982176 +1.0033072,1.0126981,.12054218 +1.4514709,.57084796,.13204996 +.78497035,.78114431,.55808238 +.376453,.35544064,.54696743 +.97034206,.97146508,1.1621196 +.44820705,2.1743334,.2990424 +1.0008183,.86912589,.41258577 +.64733419,.84834476,1.3529723 +1.1899501,1.0198258,1.0680239 +.94690363,.57308106,1.1254757 +.76191619,1.369067,2.3012253 +.59477975,.51927027,.601631 +.57185685,.34304849,1.9509658 +.57902368,.67786761,.10683783 +.55938152,1.0589726,.31584831 +.77766393,.54423195,1.9177941 +.97470147,.79343434,1.9299464 +.94583736,.32733985,1.1663169 +2.0171866,2.1579897,1.7369797 +.59957437,.68988504,1.4789196 +.52626056,1.0579517,1.0463346 +1.2176907,.33447094,.6181712 +.86218791,.46805045,.30584438 +1.6393891,.03433824,1.6517552 +.31129453,1.2284843,.87471903 +.54418473,1.4788718,.38964542 +1.0174777,1.3050759,.60460037 +.4525949,.21373431,.09477761 +1.0845023,.77002033,.54802217 +.73152622,.94256292,.62257743 +.81250721,1.7306666,.0628948 +.98622735,.08785505,.56740421 +.76235855,.2063292,.14562394 +1.0513833,1.4797218,1.2321968 +1.3052498,.79235896,2.2090931 +.32338686,2.0018398,.08243745 +1.5579577,.07320935,.70830273 +.70129951,.11829152,.81727641 +2.1301245,.43661194,.68193289 +.40615049,2.9349195,2.313991 +1.5909483,.10892327,1.1793165 +.69990004,.50036206,.46040671 +3.2237544,.17855616,1.9256314 +.32049227,1.2378038,.78340635 +.56768974,1.0308897,.38283555 +1.9289912,.16120033,1.0192725 +1.1605854,.49901209,.49662792 +1.5459786,.81033095,.16498506 +.65124747,.23786604,.7468391 +2.3565215,1.4070438,.10736968 +1.3407914,.19876315,1.3501468 +.54963884,.65619901,.27852745 +.80284473,.50508765,.25654477 +1.3084396,2.0235926,.09097533 +1.0132789,.41955644,1.1256226 +.54047414,.95022178,1.2427998 +.62498509,.35604766,.60713155 +.5034584,.7266575,1.1082762 +1.1920276,.40459635,1.317584 +.83795211,1.2745199,1.6990265 +1.4467308,.08291918,.11111062 +.47281346,2.0642612,.05729529 +.49717673,.26342167,.19184471 +.99095564,.30085783,1.4120491 +.3344058,1.4899116,2.9008107 +.62558271,.50312602,.86323943 +1.1317918,.3759559,1.9935577 +.80051552,.25928617,1.6121761 +.69671986,.74154496,.01948758 +1.2092226,.64752322,.15212328 +.5075563,1.5986325,1.1568041 +1.4151556,.68430531,.51135262 +.48242035,.21484488,.73558197 +1.5075618,.00374144,.7381274 +1.2979533,.32277515,.20136243 +.9126078,.32460325,1.1534808 +1.7260222,.3360501,1.9117939 +.54135576,2.4771195,3.005033 +.28472869,.24597425,.05335163 +.68513461,.59385596,2.4520858 +.67073331,.54201937,3.132323 +1.2093181,1.1365014,1.3264519 +1.1195643,.72804784,.28447407 +.92967461,.07090618,.75693232 +.53701701,.15599666,1.0991241 +1.2552051,.45638779,.72322845 +.65163162,1.4662531,1.0961697 +.92707913,.02511498,.58659275 +1.0300214,2.137288,.13592172 +.9325449,.10863633,1.87492 +.39131691,.73538275,.26667703 +.62543045,.14672588,2.5429004 +.60306697,1.6858792,.1873098 +.69758272,1.1748954,2.4999717 +.89401691,2.0440987,1.5106586 +.60772676,1.5296616,.23821434 +.15296804,1.9649963,.30400309 +.72415119,.72085281,.16328498 +.58380734,.8506181,.1327753 +.54715112,.7372381,.44191445 +.93292693,1.1739763,.41317613 +.81949672,.47573921,.26120052 +4.6120819,1.2122677,.99143912 +.52275597,.27855417,.65743102 +1.184728,.04377501,.13235617 +.81326741,1.6505471,.5021927 +.85847069,.51527156,.91485028 +1.2864687,.28925976,.70812634 +.41903252,.41459283,.15508692 +1.3922879,.47823454,.07425339 +.69167233,.45333638,1.07451 +2.4239704,.03142451,1.2658914 +1.062957,1.5174404,1.1647198 +.52218862,.81385021,1.2308736 +.8887096,.2892052,.27160736 +.41215226,.62863189,.24845003 +1.3389923,.23468054,1.3639118 +.80566927,.87733761,1.3663898 +.24461872,.95132415,.12287282 +1.0724494,.4023513,1.2038162 +.80758207,.64135958,.34327471 +.62340742,.02425402,.2107429 +.91232009,.14140656,.11666671 +.65132773,1.5607565,.07639353 +1.295372,1.2409938,.53272464 +1.4039994,.40408359,.41464915 +2.0396392,.02680293,.13056803 +1.2928071,.55798676,.87098515 +.50325413,.13631316,1.1118271 +.98944061,.79813728,.39735693 +.53825194,1.1460785,.90829523 +.86038552,.44939287,1.16445 +1.4331554,.12473062,2.1892605 +1.3074281,.138482,.65972077 +1.178585,.17756257,1.6454959 +.42287502,1.1007657,.18431588 +.28482119,.40147687,.36357834 +1.5282367,1.74298,.86731691 +.62352121,.27593877,.21506882 +.42833259,1.5353704,1.8361018 +1.5157908,.80200466,.59503393 +.68299416,.62800155,2.5121614 +.74072861,.93070751,.09698161 +.50792494,.65938919,.81958045 +1.0371708,.00753843,.90143509 +1.2932735,.12583838,1.1389062 +.84978253,.30736948,.72194522 +.95008412,.66275911,.05243049 +.49223222,1.2578061,.94138183 +1.0550057,.09101276,.61210977 +1.1849056,.86616938,1.4969236 +.93505617,1.2294447,.25097959 +.64042401,.43420053,.53209825 +1.0713511,.68150557,1.0746687 +.50935238,.85591418,.25883229 +.71456385,.96166345,1.3498794 +.68661042,.68392464,.97518472 +1.099242,.62868177,1.4507819 +.77722317,.97449654,.32846709 +.88944017,1.1073423,.91241906 +1.0551605,.72628194,.1905888 +2.1294732,.21447527,1.9066152 +.76337035,.20686916,.34780263 +1.1124885,.02783302,.26603717 +.93094936,.48979601,2.4429061 +.57317359,.39697844,1.3645952 +1.5905572,.20864353,.19501775 +.79363135,.68056502,2.2404343 +.72191655,1.1944686,.24192954 +.6078632,1.269344,1.3538558 +1.1882644,.2856146,.43355748 +1.5597111,.4779106,.78970566 +.59396586,.88761712,.73129809 +1.6826013,.13534202,1.035732 +.31463641,1.6084762,.65359614 +.71623879,1.2348744,.89120273 +.57691584,1.3010529,.8644534 +.67951569,.97256948,1.7279186 +.64077483,.43905019,1.0782348 +.76608348,.26790037,.31622198 +.96228748,.28532678,.22145759 +.55143215,.15825869,1.4259819 +.7124899,.41925366,.07881345 +.96604306,.0309532,.6737096 +1.3044427,1.0219398,.98277225 +.77016449,.34178456,.45794888 +.64476897,.25582939,.41928843 +.30370322,.35902111,.50172371 +.72869962,2.121169,.82977333 +.8779484,1.1436907,1.5889608 +.64485723,1.0735181,.47759815 +.41315578,.77963449,.58475887 +.51876014,.50930623,.14423058 +.74038317,.80125955,1.3274059 +.80714226,.92095033,.44830748 +.86542171,.27179913,1.5665399 +.94964853,.14655875,.1931052 +.84257547,2.5746237,1.9559064 +1.3253685,.28664006,.82070766 +.4919865,1.1190812,1.2016691 +.67988525,.40277092,1.4438627 +.7784383,.17568431,1.4484551 +1.0543374,.11352337,.98239068 +1.0721499,.08179788,.59085836 +.6470335,2.0399327,.94850736 +.4896941,1.1827498,.54433445 +1.5351251,1.1157271,1.4610127 +.9319995,.71953469,.51309998 +1.0491254,1.9612391,.01012645 +.36792276,.46947473,.39252425 +.32677638,1.3645812,.53819829 +.58258362,.67690285,.84588604 +.68867605,2.539904,.99704438 +.65243922,.57115224,2.0455113 +1.2874139,.51331556,.25258742 +1.6333519,.36416588,2.4237794 +.69090469,1.0470363,.84529159 +.86375582,.03560261,.97587424 +1.4044691,.06857649,.65688466 +.57830465,.44495005,.71164996 +.67978139,.64429918,.61055019 +.45550372,2.8636299,.9228639 +1.4299099,.40944242,.62873064 +.5813051,.22128944,.87245036 +.9261769,.86549741,1.1476426 +.40440402,.02107845,.00239596 +.6604035,.00155076,.86795595 +.68024223,1.7500067,2.4763484 +.49782893,.96243907,.73781349 +.62010846,.0206026,.25783965 +.77330574,.56707736,.20621442 +.78407289,.30275935,.36230274 +.32649876,1.5529527,.24312599 +.63722938,1.1841267,.00757615 +.74996151,.51857881,1.1397444 +.54306117,1.7834904,1.2297458 +2.8442831,1.9233474,1.0908258 +.6398441,1.6392878,.15424505 +.89378189,.48993595,.91968984 +1.462916,.82285526,1.8715102 +.63246698,.30161253,1.1676815 +.73744328,.88859662,.89368746 +.610368,.30092152,.7591123 +2.5905319,.39825341,1.4545553 +1.0712907,.27659499,1.0803684 +1.0825161,1.5799016,.39589847 +.81065616,.32898588,1.3390549 +.48058968,1.5273866,1.6491953 +.75616228,.68905692,.13295999 +.413386,.77607549,.50295592 +.88531222,.48451783,1.5324234 +.5072411,.6511584,.50190294 +.66976978,1.4492686,.92683791 +.40516913,1.0753,.79336736 +.78624959,.2875428,.83699112 +.42972784,.4763214,.69862826 +.87162866,.73515335,1.1697338 +.56139363,.25843605,.06635607 +1.2477086,1.9277721,.13867677 +.67709605,.77996461,.68633719 +.87174012,.54735712,1.3240836 +1.2211814,.55385832,1.3974319 +.64034606,.49164018,.40758012 +.65981705,1.2604899,.24206755 +.82632949,.46370525,.77645355 +1.4025171,.47270886,.50970768 +.92367775,2.1739885,.7714909 +.73195408,1.0354318,.15219296 +.34316139,.43979103,.32425374 +.37554164,.75177073,.78501072 +.67906488,1.1735004,.0804604 +.51962289,.03321507,.39444863 +.74153967,.09912807,.67456441 +1.1057165,.71794334,.44966465 +.66239099,.64432526,.85087684 +1.1338054,.22206064,.62145245 +.53126128,1.5968228,.68127648 +1.367562,.34686201,.73296808 +1.0362477,1.1827918,.17591939 +.76740018,1.6133825,1.2450923 +.88139836,.36609675,.00659358 +.51888454,1.0078093,1.7862396 +.40032203,.17580701,.78121662 +.93220351,.95429728,.62709029 +1.4245613,1.5112767,.17431408 +1.3247577,.4538707,.15944298 +.33777975,1.2784101,1.3069447 +2.3015332,.45399332,.28674395 +.64811655,2.3045856,.07548781 +2.131691,.21811155,.86985013 +.84300769,.46459537,.11909594 +1.2555272,.95968814,.97727485 +1.0932162,1.0746487,.62313604 +.5662928,.21537959,1.8438413 +.7183384,.82016977,.00245923 +.24345761,1.5847226,1.3726332 +.61357936,.45322552,.57541627 +.43825635,.71334697,.1786393 +1.8415397,.25930537,.42842531 +1.0846105,.68655152,.83367123 +.73371562,.35689506,.75389785 +.44519113,.39383168,.23185127 +.48472624,1.1758516,1.1534174 +.90645744,.59324764,.24863818 +1.1146474,.77025962,.14345153 +.72812607,.38055231,1.5993959 +1.0628037,.81283737,2.5150245 +.65876508,.08212777,1.2915346 +.32891519,.9405178,.53376312 +.92916013,.20993851,.41313696 +.91173164,.35128491,.0461125 +.39370738,1.3677216,.43293659 +.55358825,1.598744,.04925342 +.70666986,.29740809,.99354431 +1.3485425,.80585614,.91033795 +.4568809,1.2231573,.4788834 +.44812777,.74562056,.27546119 +1.8168499,1.1870203,.37059891 +.28015084,2.3343245,1.8741043 +2.571738,.44249945,2.6086615 +.68703777,1.9773628,.17942696 +.76529213,.33173631,.12264761 +.37860053,.35705986,2.0078595 +2.4808248,.37170135,.42437833 +.6360392,.7123772,1.4579801 +.29487735,.60965531,1.1054069 +1.5161381,.24422719,.21712067 +.81842365,2.5372959,.41224182 +.57248057,.14265412,.91538287 +.57338182,.32547192,.36382549 +1.1075603,.99588337,.71792851 +.65971904,1.0560243,.03212465 +.68321622,2.2534114,.50884255 +1.1748687,.93252178,.67244658 +.92347261,.14050322,1.3666705 +1.0424962,.73381136,.09276123 +1.5172877,1.0541049,.40654094 +.51294371,1.29971,.05412451 +1.6326976,.36414816,1.6175221 +1.5167495,.19900559,1.28986 +.85429282,.81987768,.96763726 +1.4327045,.93891628,2.0968062 +.38102167,.73993387,.34238792 +.89707329,1.4257216,.23908655 +.79807829,.56000166,.69948855 +.64855285,.99343271,.0403098 +1.3089401,1.2816912,.86710349 +1.0230231,.46010813,.26569087 +.33179999,2.0636804,1.8876811 +1.2800209,.44657603,1.0810347 +.83509561,.3974757,.75273479 +1.3018,.75185757,.20937935 +.80927267,2.056732,.29315752 +1.7285675,.10237531,.62886455 +.94557364,.20417868,.85909297 +.70924684,.2156802,.7593879 +.56801835,.14199698,.62258861 +1.1329404,.42155481,2.2855953 +.53493071,1.4412974,.89957633 +.71220953,.62295291,.28082282 +.87563799,1.0675566,1.6693933 +.74723485,.33744353,1.8193307 +1.4829611,.28474539,.0735901 +.47127541,1.7227148,.01808619 +1.0990041,1.3627132,.57778433 +1.3206745,.7601775,1.002929 +1.7822459,.21596079,1.6946402 +.57935618,.48846274,.08578555 +.60830702,.24858378,.50400363 +.60238983,.49342141,.82952157 +1.5975996,.13264652,.04981007 +.7561089,1.2849779,.04752101 +1.0112236,.67832021,1.4864473 +.75745538,2.6588741,.74060338 +.88158386,.34919488,1.5380533 +1.2223211,.17337392,1.9610357 +1.7784736,1.0638753,.54321327 +1.180366,.18529709,.18817773 +.76823562,.67345118,.78757404 +.80796352,.10343009,.59297844 +.3368785,2.6532335,2.4301017 +.6197941,.79891961,.56420318 +.57534226,.2358301,.06175416 +.62319052,.95588826,2.6466718 +1.0762407,.20533321,.70796352 +.92835366,1.2241697,.51527022 +.56958804,2.4832352,.21731236 +.81014961,1.9885072,1.0959845 +1.1618556,2.2557235,.07837453 +.64137404,.05595449,.56003697 +.85534558,.83516407,.61306773 +1.4289795,.02705728,2.7569743 +.92680466,.10020655,.2896521 +1.6039057,.04322754,1.4543302 +.73333074,.99200881,.47003657 +.99756451,.3750477,.91561551 +1.6596643,1.3562829,1.1505652 +.74351804,.34895162,.64283804 +1.4461777,1.0576037,.68111407 +1.937445,.00332439,2.2187295 +.86782385,.4085835,1.8016827 +2.2461614,.45789896,.48679289 +1.1508536,.6478378,.45804053 +1.0277627,.84506538,1.3396213 +.31002555,1.5184425,.03519688 +.44034991,1.1537746,1.3951833 +.42687829,1.2647285,1.8984017 +1.8693239,1.0012759,1.1145123 +1.2246877,1.3126089,.67236891 +.65313045,.11785498,1.2394504 +2.0677441,.34668019,2.0796638 +2.9060223,.91636242,.22861586 +.55507901,.72212059,.07492644 +1.2116879,.58545109,1.771824 +.60718879,.96013381,.70601008 +.4101653,1.2940113,.78338896 +1.0094925,.47233992,1.1167822 +.35964838,.61422426,1.0757687 +.65674653,1.6695802,.53408777 +1.118313,.64064203,1.1978721 +.40645899,.70308648,.23887004 +1.6135196,.04510506,.29386437 +.49933913,.15525938,1.0902229 +.61432253,.88311269,.73146771 +.89919489,.63103718,.02874329 +1.1999731,.17803525,.87496341 +1.4755227,2.1306955,.68317767 +1.4057168,.11691024,2.3278573 +1.3056559,.68316443,1.2492737 +.86389848,.79722183,1.4401973 +1.2191948,2.4122954,1.569665 +.74898867,.53834085,.92338954 +1.5284241,.20341062,.95970462 +.93259835,1.3847695,.1983589 +.34148931,1.3463013,.95882594 +.89742024,.02949545,.42625357 +.88026887,1.7410233,.52811808 +.3907246,.28195824,.31188594 +.85362555,1.479275,.05728872 +.59144525,.28003159,.08360017 +.43325421,1.1323534,1.4652906 +1.4603989,.60258855,.29680736 +.60387387,.71252199,.08592454 +.96803892,.33663581,.87976618 +.40338442,1.1341441,1.0010958 +.47308676,1.1710883,2.1556667 +1.4916729,.41862618,1.4234216 +1.513186,.63044089,.84905519 +.54684015,2.094903,.84112693 +1.6869807,1.1679383,.43407913 +1.0927412,.32819406,.30854372 +.54537554,1.2006196,1.5911716 +1.3478603,.49946001,.35062038 +.69660512,.85312163,.50215879 +.65116663,.09483406,1.5508372 +.49264743,1.7134856,.6537365 +1.8105975,.17070025,1.2378558 +1.6187841,1.3440077,1.0022457 +.89961083,.74999471,.17146243 +.36934665,1.3174972,.18883253 +.91455262,.37517699,.92925231 +.87012978,.85825286,1.1622748 +.67554324,.81528683,.64497602 +.72796689,.40324516,.71616468 +.92622408,.02326537,.18716862 +.69507876,.38288233,.9949658 +1.7801891,.66406708,1.694306 +1.050626,.71311357,.11100239 +.72784732,.76596064,1.323159 +.92806654,2.1463577,1.9646934 +1.3265114,1.8116503,.40718082 +.64709218,1.8993195,.40637787 +.62578714,1.5720057,.71613123 +.62354381,1.8363208,.60927455 +1.2442403,.12972083,.02953719 +.75683582,.51435273,.60637426 +1.371667,.37025892,.06724865 +1.0496795,1.1741682,1.0400597 +.36755265,1.7305243,.37984384 +1.2349227,.0233649,.59565865 +1.1291509,.43857023,1.2979517 +.64122269,.02096425,.02423482 +.54768254,.0834145,.03953611 +.77624136,1.0455675,.26394261 +.5487801,.06310734,1.6026148 +1.0630092,.44235134,.29042431 +.7865688,1.2659969,.48613163 +1.2670376,1.3032969,2.0027184 +.48676194,2.4164841,1.0422733 +.55722041,.24562642,.60701589 +.96732587,.4302962,1.9156838 +1.3483375,.34181957,2.3689846 +.73585046,1.7866444,.57338157 +.5310269,.81501017,.94680294 +1.194438,.10255767,1.2465274 +.86222938,.55079123,.02575186 +.58526372,.67547841,.10989397 +.86484816,1.0997578,.19264847 +.28256251,2.3354607,.26399282 +.72158714,.1991819,.37559408 +1.0375405,2.6489738,.90627963 +.59852862,1.4209114,2.0845085 +.4214695,1.4529017,1.2960356 +.48038075,1.2491836,.5256133 +.35603157,1.3773532,.46951224 +.59545749,1.5872916,.00137937 +.95537794,.94361046,.050532 +.44422476,1.335396,.50008404 +1.5312502,.26275714,.02446314 +2.5796793,.02073198,1.3807399 +.67978943,.69295969,.9605533 +2.1766547,.60263326,.64608273 +.86942762,.49844549,.24501389 +.37627572,1.0095631,.43452719 +.59421776,.06120066,1.2852596 +.49870003,.70104922,.30069658 +.67229949,.99040309,.11597539 +1.1513851,.69270538,.69692452 +1.3706784,1.0801064,1.6963887 +1.3418344,.03380247,.4294621 +.96474682,.57555621,.2431176 +1.4181839,.43784316,1.2239075 +.70934178,1.1257657,1.6296146 +1.6366922,.58690283,1.0280791 +1.5357647,.2432297,1.5229078 +.31553622,1.3562669,1.0538903 +.68792225,.69901349,.90320203 +.46338499,.56478778,.34123736 +1.5961558,.30198952,1.4851412 +.21825078,2.2007007,.54889341 +.97455105,.88532706,.3931441 +.37379635,1.8014973,.83353215 +1.0930836,1.0496075,.55740309 +.92252344,.3072259,.37227214 +.54884691,.6920049,.40740044 +.41165387,.78371258,1.5732706 +.27949511,.68540599,.0020217 +1.2013635,2.9696326,.40882887 +1.0236737,1.4948122,.23675647 +.81631944,.2565994,.41990892 +1.0226723,1.4691166,1.0734861 +.57907138,.46017182,.06917628 +.38400212,1.8010814,1.02687 +1.4531813,.64981772,.5967013 +.87660758,.57594836,1.1804396 +.63455007,1.0070724,1.3189317 +1.37078,.54335726,.66230682 +.93842385,.4648699,.56985403 +1.6858023,.65719334,2.8226439 +1.5163872,.22455743,.20086926 +1.0521868,.56518326,1.435956 +.35700339,1.9982776,.89242741 +.532948,1.4198226,.06614405 +1.3396797,.87098207,.61807739 +.24856325,1.1068683,.49526634 +1.9248222,.50326823,.57585772 +.4437494,.43165845,.53558639 +.54152456,1.3918489,1.663235 +.6822504,1.0403388,.46237295 +2.3417701,.06907957,.04352109 +1.3968699,.14938179,.21039623 +.31369161,1.6712671,1.123252 +.63424768,1.8600642,.73863534 +1.023145,.66170807,.95085331 +.92719282,.3361549,.37553339 +.35701271,.61784299,.01618807 +.52665299,2.0564578,.85481663 +.86079285,.72639691,1.1661351 +.44142021,1.6135103,.41365952 +1.9766222,.19656573,.31610363 +.58600217,1.2606614,.60464849 +.77925666,.97655765,1.6996924 +1.940305,.27658401,.98321773 +.72453846,1.8083733,.40110246 +.3083862,.80334794,.05336384 +.32323647,.67202487,.26537271 +1.1171796,.84279191,.48975742 +2.3804169,.18885457,2.7377433 +.60433537,.65566794,.64597969 +1.0846475,.13472601,.53613207 +.59049038,.77689132,.05901135 +.73214938,2.262433,.62799638 +.44193709,2.1866581,.85793815 +1.5179435,1.3466036,.23200599 +1.0789435,.95930144,2.3171139 +2.7934764,.53173757,1.6578806 +.60381913,2.0445519,1.5378756 +2.2553769,.00098954,2.22739 +.67758482,.57360939,.40692675 +.54818582,.65133854,.79222146 +1.193282,1.1672386,.54468373 +1.2349248,.41722014,.03329499 +.57373599,.37334115,.83803934 +.34593633,.41700349,.44317427 +.9343236,.73129198,1.4385106 +.56629598,.23550206,.22585155 +.8882889,.65057351,.32272838 +.92747917,1.9847132,1.0325563 +.87599786,.50248093,.58063694 +.76864339,2.2014173,.64263308 +1.5462566,1.2729829,.1266775 +.45310563,1.0772297,.44635759 +.97736831,1.593362,1.6279788 +1.1744745,.55118058,.41984215 +.40746484,1.4835553,1.1584996 +.64445241,.04522721,.06498349 +.5659927,1.0221971,.03574795 +.32215627,.29593885,.06637473 +.64667144,1.4961229,.76846605 +.60146617,1.3170128,.17597975 +.67497106,1.0559617,1.1463464 +.9231131,1.663892,.1053914 +1.5763347,1.085907,.44208155 +1.034483,.06841212,.17427601 +2.5875062,.3216096,1.5276183 +2.2162338,.16007739,1.3579277 +.62322642,.32315125,.1222767 +1.1817858,.79870244,1.2796465 +1.8807073,1.0614842,.23570774 +1.0181515,.28907054,.06678156 +1.1045564,.49899931,.22726116 +1.7308379,.57241084,.79261422 +.70231334,1.7681389,1.3977755 +1.3237468,.30865835,.31687235 +1.299911,.26019521,.15339346 +.91158076,.10572036,.02128941 +1.3119979,1.5565935,.44680504 +1.1817192,1.4361554,1.363731 +.6973528,.12741736,.07433224 +1.6256335,.06648485,.18206091 +.47725114,1.0775329,.54892661 +1.9113322,.39397266,.40675203 +.96551876,.56660029,.84442113 +1.2840565,.34854888,.40895123 +.66169338,1.819464,.20644197 +.84999359,.48816377,.59361468 +.44563542,.34454284,.99730413 +.7620354,.24929127,1.3314471 +2.0275687,1.1621508,1.5928085 +.63340269,.18851793,.04836198 +.72580403,1.1340934,.21138117 +1.379978,.73626715,1.0161079 +.4276442,.50703011,.39708737 +.3582363,.77776751,.44152059 +2.0296286,.68519421,.75224632 +.33855176,1.2085536,.20189092 +.66705853,.83012965,1.5996954 +.63167483,.31857322,.35844685 +1.0339932,.90647644,.6249356 +.70048733,1.3485348,.45190451 +.39190471,.06855184,.76261058 +.48061026,.36195734,1.4214984 +.70435157,1.411528,.15732353 +.66191766,.08987892,.81149487 +2.3585965,.50808299,.53086298 +.70900034,1.7146681,1.7463657 +1.5159426,.53577436,1.4978532 +.47869193,.29726645,.04817281 +.21015999,.61049705,.93786114 +.90429683,.42236519,1.2543597 +.69309461,1.41039,.64685322 +.40774025,.21420631,.03562601 +.77643377,1.233487,.38702381 +.39275267,1.0095542,.12478784 +1.3951036,.8443644,1.1558097 +.39115113,1.6440449,.33227879 +1.3304053,.7407143,1.5899865 +.94679491,.14654569,1.8782694 +1.9761037,.01434133,.17385053 +1.1358052,.35487923,.76262824 +.20808584,.97809447,1.4088293 +.69672276,.54602364,1.3171499 +.84641761,1.1241663,.42966577 +.55918357,1.2165002,1.606226 +.54323881,.40968798,1.1052551 +.56696759,.39070029,1.1961091 +1.002651,.31277129,.68314357 +.69324165,1.2885334,.05613407 +1.3511187,.69884884,.76162282 +.2495769,.71204484,1.1258853 +.99345225,.32057716,.4298666 +1.6130161,.05593041,1.5131863 +.31271087,2.0070846,.96963653 +.76223436,1.872424,.98168851 +.52015039,1.3160899,.46523211 +.45200872,2.5051161,.51703237 +.27628432,1.8069414,.68201762 +1.1171153,.03466919,1.0173693 +.97671402,1.1049906,.25770952 +1.401379,1.3877424,2.2170977 +.43773007,1.5287901,.17213944 +.99943371,.25687776,1.8837968 +.96582434,1.2851354,1.6309034 +1.9159568,.93583274,.09265329 +.22886692,3.2399328,.64523532 +.65602388,.54407088,.71142059 +.47234655,.92851725,.68231093 +.76053417,.9935189,.29903559 +1.6624051,.41345006,.32768835 +1.2750937,1.3940707,.25055705 +.77830006,.52702923,.21210824 +.82110495,.16100896,.57621835 +1.2194688,.38460931,.81317667 +.65921435,.60156966,.48963607 +.91882228,2.0309657,.32422162 +1.4259483,.13155093,1.2290654 +1.3851449,.15434496,1.2598837 +1.5062064,1.1630516,2.7125824 +.86052609,.20529867,.91409136 +.81563901,1.6759871,.98042586 +.96410576,.80401628,1.3586639 +.79527086,.77138036,.51699284 +1.5959448,.35250562,.70652834 +.73457845,.49466517,1.0828609 +.91588219,.07036845,.58594754 +.66229489,.23618128,1.3485052 +.40466549,.29136395,1.4963158 +1.268009,.04734291,.87753955 +.4492601,.35189613,1.3911144 +.3582487,.64467325,.12409709 +.74106828,1.4336888,1.1769495 +.45833805,.05930228,.52344453 +.54381949,1.1157084,.42483335 +.8047712,.80950617,.06727486 +.40386786,1.9347674,.04553126 +.64952883,.58577328,.45229018 +.52694452,1.0308727,1.4969249 +.70766604,.94594666,.61023174 +.71631054,.90717335,.92649328 +1.0369068,.96841703,.28045394 +.98162832,.05923147,1.2469348 +.3722195,.15741403,.52790514 +.96355892,.52449163,.2369279 +1.7297467,.6038351,1.3506531 +.58434889,.87600647,.14492429 +.87686813,1.8352809,.70102615 +.68451718,.00724502,1.1013835 +.4924203,.16091017,.05501368 +1.3556745,.55503092,.29344854 +.60941014,1.6973828,1.0878894 +1.0058056,.60196458,.97388934 +.84639996,.26038673,.37620264 +1.575636,.05546497,1.0073885 diff --git a/statsmodels/genmod/tests/results/iris.csv b/statsmodels/genmod/tests/results/iris.csv new file mode 100644 index 0000000..93fca4d --- /dev/null +++ b/statsmodels/genmod/tests/results/iris.csv @@ -0,0 +1,151 @@ +150,4,setosa,versicolor,virginica +5.1,3.5,1.4,0.2,0 +4.9,3.0,1.4,0.2,0 +4.7,3.2,1.3,0.2,0 +4.6,3.1,1.5,0.2,0 +5.0,3.6,1.4,0.2,0 +5.4,3.9,1.7,0.4,0 +4.6,3.4,1.4,0.3,0 +5.0,3.4,1.5,0.2,0 +4.4,2.9,1.4,0.2,0 +4.9,3.1,1.5,0.1,0 +5.4,3.7,1.5,0.2,0 +4.8,3.4,1.6,0.2,0 +4.8,3.0,1.4,0.1,0 +4.3,3.0,1.1,0.1,0 +5.8,4.0,1.2,0.2,0 +5.7,4.4,1.5,0.4,0 +5.4,3.9,1.3,0.4,0 +5.1,3.5,1.4,0.3,0 +5.7,3.8,1.7,0.3,0 +5.1,3.8,1.5,0.3,0 +5.4,3.4,1.7,0.2,0 +5.1,3.7,1.5,0.4,0 +4.6,3.6,1.0,0.2,0 +5.1,3.3,1.7,0.5,0 +4.8,3.4,1.9,0.2,0 +5.0,3.0,1.6,0.2,0 +5.0,3.4,1.6,0.4,0 +5.2,3.5,1.5,0.2,0 +5.2,3.4,1.4,0.2,0 +4.7,3.2,1.6,0.2,0 +4.8,3.1,1.6,0.2,0 +5.4,3.4,1.5,0.4,0 +5.2,4.1,1.5,0.1,0 +5.5,4.2,1.4,0.2,0 +4.9,3.1,1.5,0.1,0 +5.0,3.2,1.2,0.2,0 +5.5,3.5,1.3,0.2,0 +4.9,3.1,1.5,0.1,0 +4.4,3.0,1.3,0.2,0 +5.1,3.4,1.5,0.2,0 +5.0,3.5,1.3,0.3,0 +4.5,2.3,1.3,0.3,0 +4.4,3.2,1.3,0.2,0 +5.0,3.5,1.6,0.6,0 +5.1,3.8,1.9,0.4,0 +4.8,3.0,1.4,0.3,0 +5.1,3.8,1.6,0.2,0 +4.6,3.2,1.4,0.2,0 +5.3,3.7,1.5,0.2,0 +5.0,3.3,1.4,0.2,0 +7.0,3.2,4.7,1.4,1 +6.4,3.2,4.5,1.5,1 +6.9,3.1,4.9,1.5,1 +5.5,2.3,4.0,1.3,1 +6.5,2.8,4.6,1.5,1 +5.7,2.8,4.5,1.3,1 +6.3,3.3,4.7,1.6,1 +4.9,2.4,3.3,1.0,1 +6.6,2.9,4.6,1.3,1 +5.2,2.7,3.9,1.4,1 +5.0,2.0,3.5,1.0,1 +5.9,3.0,4.2,1.5,1 +6.0,2.2,4.0,1.0,1 +6.1,2.9,4.7,1.4,1 +5.6,2.9,3.6,1.3,1 +6.7,3.1,4.4,1.4,1 +5.6,3.0,4.5,1.5,1 +5.8,2.7,4.1,1.0,1 +6.2,2.2,4.5,1.5,1 +5.6,2.5,3.9,1.1,1 +5.9,3.2,4.8,1.8,1 +6.1,2.8,4.0,1.3,1 +6.3,2.5,4.9,1.5,1 +6.1,2.8,4.7,1.2,1 +6.4,2.9,4.3,1.3,1 +6.6,3.0,4.4,1.4,1 +6.8,2.8,4.8,1.4,1 +6.7,3.0,5.0,1.7,1 +6.0,2.9,4.5,1.5,1 +5.7,2.6,3.5,1.0,1 +5.5,2.4,3.8,1.1,1 +5.5,2.4,3.7,1.0,1 +5.8,2.7,3.9,1.2,1 +6.0,2.7,5.1,1.6,1 +5.4,3.0,4.5,1.5,1 +6.0,3.4,4.5,1.6,1 +6.7,3.1,4.7,1.5,1 +6.3,2.3,4.4,1.3,1 +5.6,3.0,4.1,1.3,1 +5.5,2.5,4.0,1.3,1 +5.5,2.6,4.4,1.2,1 +6.1,3.0,4.6,1.4,1 +5.8,2.6,4.0,1.2,1 +5.0,2.3,3.3,1.0,1 +5.6,2.7,4.2,1.3,1 +5.7,3.0,4.2,1.2,1 +5.7,2.9,4.2,1.3,1 +6.2,2.9,4.3,1.3,1 +5.1,2.5,3.0,1.1,1 +5.7,2.8,4.1,1.3,1 +6.3,3.3,6.0,2.5,2 +5.8,2.7,5.1,1.9,2 +7.1,3.0,5.9,2.1,2 +6.3,2.9,5.6,1.8,2 +6.5,3.0,5.8,2.2,2 +7.6,3.0,6.6,2.1,2 +4.9,2.5,4.5,1.7,2 +7.3,2.9,6.3,1.8,2 +6.7,2.5,5.8,1.8,2 +7.2,3.6,6.1,2.5,2 +6.5,3.2,5.1,2.0,2 +6.4,2.7,5.3,1.9,2 +6.8,3.0,5.5,2.1,2 +5.7,2.5,5.0,2.0,2 +5.8,2.8,5.1,2.4,2 +6.4,3.2,5.3,2.3,2 +6.5,3.0,5.5,1.8,2 +7.7,3.8,6.7,2.2,2 +7.7,2.6,6.9,2.3,2 +6.0,2.2,5.0,1.5,2 +6.9,3.2,5.7,2.3,2 +5.6,2.8,4.9,2.0,2 +7.7,2.8,6.7,2.0,2 +6.3,2.7,4.9,1.8,2 +6.7,3.3,5.7,2.1,2 +7.2,3.2,6.0,1.8,2 +6.2,2.8,4.8,1.8,2 +6.1,3.0,4.9,1.8,2 +6.4,2.8,5.6,2.1,2 +7.2,3.0,5.8,1.6,2 +7.4,2.8,6.1,1.9,2 +7.9,3.8,6.4,2.0,2 +6.4,2.8,5.6,2.2,2 +6.3,2.8,5.1,1.5,2 +6.1,2.6,5.6,1.4,2 +7.7,3.0,6.1,2.3,2 +6.3,3.4,5.6,2.4,2 +6.4,3.1,5.5,1.8,2 +6.0,3.0,4.8,1.8,2 +6.9,3.1,5.4,2.1,2 +6.7,3.1,5.6,2.4,2 +6.9,3.1,5.1,2.3,2 +5.8,2.7,5.1,1.9,2 +6.8,3.2,5.9,2.3,2 +6.7,3.3,5.7,2.5,2 +6.7,3.0,5.2,2.3,2 +6.3,2.5,5.0,1.9,2 +6.5,3.0,5.2,2.0,2 +6.2,3.4,5.4,2.3,2 +5.9,3.0,5.1,1.8,2 diff --git a/statsmodels/genmod/tests/results/medparlogresids.csv b/statsmodels/genmod/tests/results/medparlogresids.csv new file mode 100644 index 0000000..68b608a --- /dev/null +++ b/statsmodels/genmod/tests/results/medparlogresids.csv @@ -0,0 +1,3676 @@ +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +8.561043000000000402e-01,4.734012000000000220e-01,1.122947999999999951e+02,4.468011000000000066e-01,1.596711999999999954e+01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-3.442172000000000009e-01,-8.265827000000000035e-01,-2.748534000000000077e+01,-7.296150999999999609e-01,-4.766435999999999673e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +7.237930000000000197e-01,4.305149999999999810e-01,7.407390999999999792e+01,4.117415999999999854e-01,1.163175000000000026e+01 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +6.416374000000000244e-01,3.903728000000000198e-01,8.416331999999999880e+01,3.747579999999999800e-01,1.196711999999999954e+01 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +5.880206999999999518e-01,3.675555999999999823e-01,7.713043999999999301e+01,3.543703999999999743e-01,1.096711999999999954e+01 +-3.442172000000000009e-01,-8.265827000000000035e-01,-2.748534000000000077e+01,-7.296150999999999609e-01,-4.766435999999999673e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +6.416374000000000244e-01,3.903728000000000198e-01,8.416331999999999880e+01,3.747579999999999800e-01,1.196711999999999954e+01 +-3.538131999999999944e-01,-8.084837999999999747e-01,-2.204247000000000156e+01,-7.233001999999999487e-01,-4.221491000000000327e+00 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +-3.626257999999999981e-01,-7.884961000000000331e-01,-1.762635999999999825e+01,-7.144532000000000105e-01,-3.728044999999999831e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +5.344039999999999901e-01,3.437256000000000200e-01,7.009756000000000142e+01,3.328170999999999768e-01,9.967119000000000284e+00 +-3.442172000000000009e-01,-8.265827000000000035e-01,-2.748534000000000077e+01,-7.296150999999999609e-01,-4.766435999999999673e+00 +5.344039999999999901e-01,3.437256000000000200e-01,7.009756000000000142e+01,3.328170999999999768e-01,9.967119000000000284e+00 +1.940280000000000060e-01,1.638978000000000101e-01,7.358446999999999960e+00,1.631224000000000007e-01,1.718768999999999991e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +6.952540999999999860e-01,4.122828000000000048e-01,9.119620999999999356e+01,3.940996999999999972e-01,1.296711999999999954e+01 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-3.442172000000000009e-01,-8.265827000000000035e-01,-2.748534000000000077e+01,-7.296150999999999609e-01,-4.766435999999999673e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +6.416374000000000244e-01,3.903728000000000198e-01,8.416331999999999880e+01,3.747579999999999800e-01,1.196711999999999954e+01 +1.326297000000000059e+00,6.979185999999999446e-01,3.924463999999999686e+01,6.521791000000000116e-01,1.012335999999999991e+01 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-3.704108999999999874e-01,-7.664223000000000008e-01,-1.404771000000000036e+01,-7.028326000000000295e-01,-3.281231000000000009e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +6.835332000000000185e+00,1.716207999999999956e+00,3.322490000000000236e+02,1.271139999999999937e+00,7.027196000000000708e+01 +9.633376999999999635e-01,5.109462000000000170e-01,1.263606000000000051e+02,4.782426000000000177e-01,1.796712000000000131e+01 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +5.681230000000000446e-01,3.747563999999999895e-01,3.539392000000000138e+01,3.641587000000000018e-01,6.778508999999999673e+00 +2.882135000000000113e-01,2.192947000000000091e-01,2.949614000000000047e+01,2.165885999999999922e-01,4.631745999999999697e+00 +1.637620999999999938e-01,1.377533999999999981e-01,1.675963000000000136e+01,1.370690999999999993e-01,2.631746000000000141e+00 +5.326914000000000371e-01,3.673996999999999957e-01,2.020213999999999999e+01,3.590831999999999913e-01,4.718768999999999991e+00 +6.100712000000000357e-01,3.999677999999999845e-01,2.965409000000000006e+01,3.883282000000000123e-01,6.271955000000000169e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +1.070570999999999939e+00,5.463869000000000087e-01,1.404264000000000010e+02,5.072630999999999668e-01,1.996712000000000131e+01 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-3.442172000000000009e-01,-8.265827000000000035e-01,-2.748534000000000077e+01,-7.296150999999999609e-01,-4.766435999999999673e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +1.553120999999999974e+00,6.864687999999999901e-01,2.037222999999999900e+02,6.157422000000000173e-01,2.896712000000000131e+01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +4.092022000000000159e-01,3.045207999999999804e-01,1.210814000000000057e+01,3.001345000000000263e-01,3.123356999999999939e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.856369999999999895e-02,-1.897039999999999837e-02,-1.156511999999999984e+00,-1.896890000000000034e-02,-2.214907999999999877e-01 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +1.015365000000000018e-01,9.059150000000000535e-02,1.039137000000000022e+01,9.039529999999999788e-02,1.631745999999999919e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.490611000000000019e-01,1.287397000000000125e-01,9.286469000000000307e+00,1.282800000000000051e-01,1.778508999999999896e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +6.100712000000000357e-01,3.999677999999999845e-01,2.965409000000000006e+01,3.883282000000000123e-01,6.271955000000000169e+00 +-3.340430999999999817e-01,-8.429710999999999732e-01,-3.418639999999999901e+01,-7.336224000000000078e-01,-5.368254000000000303e+00 +1.616149999999999878e-02,1.591029999999999875e-02,4.782123999999999819e-01,1.590969999999999884e-02,1.233574000000000059e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.856369999999999895e-02,-1.897039999999999837e-02,-1.156511999999999984e+00,-1.896890000000000034e-02,-2.214907999999999877e-01 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-2.575231000000000048e-01,-3.767781000000000047e-01,-9.766479000000000354e+00,-3.678354999999999819e-01,-2.281231000000000009e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-2.458656999999999926e-01,-3.423031000000000268e-01,-7.275072999999999901e+00,-3.361348000000000114e-01,-1.876643000000000061e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +-3.704108999999999874e-01,-7.664223000000000008e-01,-1.404771000000000036e+01,-7.028326000000000295e-01,-3.281231000000000009e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +7.488707999999999476e-01,4.333751000000000131e-01,9.822908999999999935e+01,4.124975000000000169e-01,1.396711999999999954e+01 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +2.645300000000000082e-02,2.572349999999999984e-02,1.285814999999999930e+00,2.572019999999999862e-02,2.719550000000000023e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +5.326914000000000371e-01,3.673996999999999957e-01,2.020213999999999999e+01,3.590831999999999913e-01,4.718768999999999991e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-3.538131999999999944e-01,-8.084837999999999747e-01,-2.204247000000000156e+01,-7.233001999999999487e-01,-4.221491000000000327e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.575231000000000048e-01,-3.767781000000000047e-01,-9.766479000000000354e+00,-3.678354999999999819e-01,-2.281231000000000009e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +5.681230000000000446e-01,3.747563999999999895e-01,3.539392000000000138e+01,3.641587000000000018e-01,6.778508999999999673e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +8.114019999999999566e-02,7.508189999999999309e-02,3.077214999999999812e+00,7.500660000000000660e-02,7.187687999999999855e-01 +-2.575231000000000048e-01,-3.767781000000000047e-01,-9.766479000000000354e+00,-3.678354999999999819e-01,-2.281231000000000009e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.490611000000000019e-01,1.287397000000000125e-01,9.286469000000000307e+00,1.282800000000000051e-01,1.778508999999999896e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.856369999999999895e-02,-1.897039999999999837e-02,-1.156511999999999984e+00,-1.896890000000000034e-02,-2.214907999999999877e-01 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +4.198035999999999990e-01,3.071039999999999881e-01,1.592090999999999923e+01,3.021588000000000052e-01,3.718768999999999991e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +1.686729999999999827e-02,1.653570000000000040e-02,1.346835000000000004e+00,1.653469999999999940e-02,2.335645000000000082e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-3.538131999999999944e-01,-8.084837999999999747e-01,-2.204247000000000156e+01,-7.233001999999999487e-01,-4.221491000000000327e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-2.458656999999999926e-01,-3.423031000000000268e-01,-7.275072999999999901e+00,-3.361348000000000114e-01,-1.876643000000000061e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +1.713970999999999911e+00,7.278432999999999709e-01,2.248208999999999946e+02,6.459247000000000183e-01,3.196712000000000131e+01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +5.880206999999999518e-01,3.675555999999999823e-01,7.713043999999999301e+01,3.543703999999999743e-01,1.096711999999999954e+01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +2.781887000000000110e-01,2.236103000000000118e-01,8.231498000000000204e+00,2.218424999999999980e-01,2.123356999999999939e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +4.843106999999999829e-01,3.336759999999999726e-01,3.017242999999999853e+01,3.260801999999999867e-01,5.778508999999999673e+00 +5.681230000000000446e-01,3.747563999999999895e-01,3.539392000000000138e+01,3.641587000000000018e-01,6.778508999999999673e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +1.490611000000000019e-01,1.287397000000000125e-01,9.286469000000000307e+00,1.282800000000000051e-01,1.778508999999999896e+00 +1.637620999999999938e-01,1.377533999999999981e-01,1.675963000000000136e+01,1.370690999999999993e-01,2.631746000000000141e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +1.616149999999999878e-02,1.591029999999999875e-02,4.782123999999999819e-01,1.590969999999999884e-02,1.233574000000000059e-01 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +5.344039999999999901e-01,3.437256000000000200e-01,7.009756000000000142e+01,3.328170999999999768e-01,9.967119000000000284e+00 +1.471751000000000031e-01,1.295917000000000041e-01,4.354854999999999698e+00,1.292426999999999881e-01,1.123356999999999939e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +6.952540999999999860e-01,4.122828000000000048e-01,9.119620999999999356e+01,3.940996999999999972e-01,1.296711999999999954e+01 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +7.488707999999999476e-01,4.333751000000000131e-01,9.822908999999999935e+01,4.124975000000000169e-01,1.396711999999999954e+01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +5.371160999999999852e-01,3.499714999999999909e-01,5.496914999999999907e+01,3.394932999999999979e-01,8.631745999999999697e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +4.748903999999999903e-01,3.202871999999999941e-01,4.860088999999999970e+01,3.121535999999999755e-01,7.631745999999999697e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.015365000000000018e-01,9.059150000000000535e-02,1.039137000000000022e+01,9.039529999999999788e-02,1.631745999999999919e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +2.781887000000000110e-01,2.236103000000000118e-01,8.231498000000000204e+00,2.218424999999999980e-01,2.123356999999999939e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +2.259877999999999887e-01,1.803413000000000099e-01,2.312788000000000110e+01,1.788202000000000125e-01,3.631746000000000141e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.616149999999999878e-02,1.591029999999999875e-02,4.782123999999999819e-01,1.590969999999999884e-02,1.233574000000000059e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +1.237227000000000049e-01,1.098284000000000066e-01,6.013860000000000205e+00,1.095689999999999997e-01,1.271954999999999947e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +5.344039999999999901e-01,3.437256000000000200e-01,7.009756000000000142e+01,3.328170999999999768e-01,9.967119000000000284e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +6.416374000000000244e-01,3.903728000000000198e-01,8.416331999999999880e+01,3.747579999999999800e-01,1.196711999999999954e+01 +5.344039999999999901e-01,3.437256000000000200e-01,7.009756000000000142e+01,3.328170999999999768e-01,9.967119000000000284e+00 +1.471751000000000031e-01,1.295917000000000041e-01,4.354854999999999698e+00,1.292426999999999881e-01,1.123356999999999939e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +9.633376999999999635e-01,5.109462000000000170e-01,1.263606000000000051e+02,4.782426000000000177e-01,1.796712000000000131e+01 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +2.645300000000000082e-02,2.572349999999999984e-02,1.285814999999999930e+00,2.572019999999999862e-02,2.719550000000000023e-01 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +6.416374000000000244e-01,3.903728000000000198e-01,8.416331999999999880e+01,3.747579999999999800e-01,1.196711999999999954e+01 +1.686729999999999827e-02,1.653570000000000040e-02,1.346835000000000004e+00,1.653469999999999940e-02,2.335645000000000082e-01 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +5.993416999999999772e-01,3.781156999999999990e-01,6.133740000000000236e+01,3.650679000000000007e-01,9.631745999999999697e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +1.686729999999999827e-02,1.653570000000000040e-02,1.346835000000000004e+00,1.653469999999999940e-02,2.335645000000000082e-01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +5.128015000000000212e-01,3.526062999999999836e-01,2.492604000000000042e+01,3.444955000000000100e-01,5.271955000000000169e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +5.371160999999999852e-01,3.499714999999999909e-01,5.496914999999999907e+01,3.394932999999999979e-01,8.631745999999999697e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.637620999999999938e-01,1.377533999999999981e-01,1.675963000000000136e+01,1.370690999999999993e-01,2.631746000000000141e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +6.455792000000000197e-01,4.224096999999999991e-01,2.448337000000000074e+01,4.100037999999999738e-01,5.718768999999999991e+00 +1.015365000000000018e-01,9.059150000000000535e-02,1.039137000000000022e+01,9.039529999999999788e-02,1.631745999999999919e+00 +5.402158000000000238e-01,3.760539999999999994e-01,1.598478000000000065e+01,3.679542000000000090e-01,4.123357000000000383e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-7.758929999999999993e-02,-8.392910000000000648e-02,-1.791260999999999992e+00,-8.384289999999999798e-02,-5.102887999999999868e-01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-2.575231000000000048e-01,-3.767781000000000047e-01,-9.766479000000000354e+00,-3.678354999999999819e-01,-2.281231000000000009e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +5.344039999999999901e-01,3.437256000000000200e-01,7.009756000000000142e+01,3.328170999999999768e-01,9.967119000000000284e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +8.195601999999999610e-01,4.835400999999999727e-01,5.105839999999999890e+01,4.618120000000000003e-01,9.778508999999999673e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-3.538131999999999944e-01,-8.084837999999999747e-01,-2.204247000000000156e+01,-7.233001999999999487e-01,-4.221491000000000327e+00 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +1.485498999999999903e+00,7.222674000000000039e-01,7.220649000000000228e+01,6.632708000000000492e-01,1.527195000000000036e+01 +1.231421000000000099e+00,5.962283999999999917e-01,1.615250000000000057e+02,5.469924000000000452e-01,2.296712000000000131e+01 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.637620999999999938e-01,1.377533999999999981e-01,1.675963000000000136e+01,1.370690999999999993e-01,2.631746000000000141e+00 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +4.287573000000000079e+00,1.219041999999999959e+00,5.623991999999999507e+02,9.484734999999999694e-01,7.996711999999999421e+01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +2.259877999999999887e-01,1.803413000000000099e-01,2.312788000000000110e+01,1.788202000000000125e-01,3.631746000000000141e+00 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +6.524870000000000669e-02,6.086860000000000187e-02,4.064979000000000120e+00,6.081969999999999738e-02,7.785092000000000123e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +3.779518000000000044e-01,2.736488999999999727e-01,3.017901000000000167e+01,2.689502999999999755e-01,5.233564000000000327e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.237227000000000049e-01,1.098284000000000066e-01,6.013860000000000205e+00,1.095689999999999997e-01,1.271954999999999947e+00 +1.490611000000000019e-01,1.287397000000000125e-01,9.286469000000000307e+00,1.282800000000000051e-01,1.778508999999999896e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +4.092022000000000159e-01,3.045207999999999804e-01,1.210814000000000057e+01,3.001345000000000263e-01,3.123356999999999939e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.035671999999999926e+00,8.047632000000000119e-01,2.670181999999999789e+02,6.998851999999999851e-01,3.796712000000000131e+01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +5.344039999999999901e-01,3.437256000000000200e-01,7.009756000000000142e+01,3.328170999999999768e-01,9.967119000000000284e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +3.069158000000000164e-01,2.400239000000000122e-01,1.163968000000000025e+01,2.376232000000000066e-01,2.718768999999999991e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +1.237227000000000049e-01,1.098284000000000066e-01,6.013860000000000205e+00,1.095689999999999997e-01,1.271954999999999947e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-1.148520999999999986e-01,-1.305588000000000026e-01,-3.398429999999999840e+00,-1.302020000000000122e-01,-8.766426000000000496e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +3.069158000000000164e-01,2.400239000000000122e-01,1.163968000000000025e+01,2.376232000000000066e-01,2.718768999999999991e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.148520999999999986e-01,-1.305588000000000026e-01,-3.398429999999999840e+00,-1.302020000000000122e-01,-8.766426000000000496e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-3.768792999999999727e-01,-7.420447999999999489e-01,-1.115171999999999919e+01,-6.881793000000000493e-01,-2.876643000000000061e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.616149999999999878e-02,1.591029999999999875e-02,4.782123999999999819e-01,1.590969999999999884e-02,1.233574000000000059e-01 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +2.209924000000000055e-01,1.816222999999999865e-01,1.074191000000000074e+01,1.804622999999999922e-01,2.271955000000000169e+00 +3.166859000000000202e-01,2.412151999999999907e-01,1.972944999999999993e+01,2.382615999999999901e-01,3.778509000000000118e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +6.524870000000000669e-02,6.086860000000000187e-02,4.064979000000000120e+00,6.081969999999999738e-02,7.785092000000000123e-01 +1.490611000000000019e-01,1.287397000000000125e-01,9.286469000000000307e+00,1.282800000000000051e-01,1.778508999999999896e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +5.223856000000000055e-01,3.479150999999999772e-01,4.171188000000000073e+01,3.385173000000000210e-01,7.233564000000000327e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +6.416374000000000244e-01,3.903728000000000198e-01,8.416331999999999880e+01,3.747579999999999800e-01,1.196711999999999954e+01 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +1.237227000000000049e-01,1.098284000000000066e-01,6.013860000000000205e+00,1.095689999999999997e-01,1.271954999999999947e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +5.128015000000000212e-01,3.526062999999999836e-01,2.492604000000000042e+01,3.444955000000000100e-01,5.271955000000000169e+00 +6.455792000000000197e-01,4.224096999999999991e-01,2.448337000000000074e+01,4.100037999999999738e-01,5.718768999999999991e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.856369999999999895e-02,-1.897039999999999837e-02,-1.156511999999999984e+00,-1.896890000000000034e-02,-2.214907999999999877e-01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +5.344039999999999901e-01,3.437256000000000200e-01,7.009756000000000142e+01,3.328170999999999768e-01,9.967119000000000284e+00 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +1.015365000000000018e-01,9.059150000000000535e-02,1.039137000000000022e+01,9.039529999999999788e-02,1.631745999999999919e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +1.237227000000000049e-01,1.098284000000000066e-01,6.013860000000000205e+00,1.095689999999999997e-01,1.271954999999999947e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +1.548680999999999974e+00,7.552837999999999496e-01,5.873322000000000287e+01,6.940804000000000418e-01,1.371876999999999924e+01 +1.613011000000000028e-01,1.369450000000000112e-01,1.287970999999999933e+01,1.363352999999999926e-01,2.233565000000000023e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.471751000000000031e-01,1.295917000000000041e-01,4.354854999999999698e+00,1.292426999999999881e-01,1.123356999999999939e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +7.446049999999999891e-02,6.975370000000000181e-02,1.719028000000000000e+00,6.970410000000000494e-02,4.897112000000000132e-01 +5.344039999999999901e-01,3.437256000000000200e-01,7.009756000000000142e+01,3.328170999999999768e-01,9.967119000000000284e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +1.285037999999999903e+00,6.120708999999999733e-01,1.685578999999999894e+02,5.593567999999999873e-01,2.396712000000000131e+01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +7.488707999999999476e-01,4.333751000000000131e-01,9.822908999999999935e+01,4.124975000000000169e-01,1.396711999999999954e+01 +5.223856000000000055e-01,3.479150999999999772e-01,4.171188000000000073e+01,3.385173000000000210e-01,7.233564000000000327e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.575231000000000048e-01,-3.767781000000000047e-01,-9.766479000000000354e+00,-3.678354999999999819e-01,-2.281231000000000009e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +3.166859000000000202e-01,2.412151999999999907e-01,1.972944999999999993e+01,2.382615999999999901e-01,3.778509000000000118e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +1.177804000000000073e+00,5.800170999999999522e-01,1.544920999999999935e+02,5.342088000000000392e-01,2.196712000000000131e+01 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-3.340430999999999817e-01,-8.429710999999999732e-01,-3.418639999999999901e+01,-7.336224000000000078e-01,-5.368254000000000303e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +3.057348999999999761e-01,2.321660999999999864e-01,2.441257999999999839e+01,2.292598999999999887e-01,4.233564000000000327e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +3.504391000000000034e-01,2.552889999999999882e-01,3.586439000000000021e+01,2.510684999999999722e-01,5.631745999999999697e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.177804000000000073e+00,5.800170999999999522e-01,1.544920999999999935e+02,5.342088000000000392e-01,2.196712000000000131e+01 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +7.446049999999999891e-02,6.975370000000000181e-02,1.719028000000000000e+00,6.970410000000000494e-02,4.897112000000000132e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.148520999999999986e-01,-1.305588000000000026e-01,-3.398429999999999840e+00,-1.302020000000000122e-01,-8.766426000000000496e-01 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.637620999999999938e-01,1.377533999999999981e-01,1.675963000000000136e+01,1.370690999999999993e-01,2.631746000000000141e+00 +1.237227000000000049e-01,1.098284000000000066e-01,6.013860000000000205e+00,1.095689999999999997e-01,1.271954999999999947e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.458656999999999926e-01,-3.423031000000000268e-01,-7.275072999999999901e+00,-3.361348000000000114e-01,-1.876643000000000061e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +1.499505000000000088e+00,6.721719999999999917e-01,1.966894000000000062e+02,6.051195999999999797e-01,2.796712000000000131e+01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.338654999999999928e+00,6.275671000000000443e-01,1.755908000000000015e+02,5.713285999999999643e-01,2.496712000000000131e+01 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +5.344039999999999901e-01,3.437256000000000200e-01,7.009756000000000142e+01,3.328170999999999768e-01,9.967119000000000284e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +6.524870000000000669e-02,6.086860000000000187e-02,4.064979000000000120e+00,6.081969999999999738e-02,7.785092000000000123e-01 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +2.328735000000000110e-01,1.881362000000000034e-01,1.450796000000000063e+01,1.867167000000000132e-01,2.778509000000000118e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +1.637620999999999938e-01,1.377533999999999981e-01,1.675963000000000136e+01,1.370690999999999993e-01,2.631746000000000141e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +9.633376999999999635e-01,5.109462000000000170e-01,1.263606000000000051e+02,4.782426000000000177e-01,1.796712000000000131e+01 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +2.265101999999999949e-01,1.897903999999999980e-01,5.229316999999999993e+00,1.888044999999999862e-01,1.489711000000000007e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +2.328735000000000110e-01,1.881362000000000034e-01,1.450796000000000063e+01,1.867167000000000132e-01,2.778509000000000118e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +3.182620999999999922e-01,2.446699999999999986e-01,1.546995000000000076e+01,2.418726999999999960e-01,3.271955000000000169e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.458656999999999926e-01,-3.423031000000000268e-01,-7.275072999999999901e+00,-3.361348000000000114e-01,-1.876643000000000061e+00 +5.880206999999999518e-01,3.675555999999999823e-01,7.713043999999999301e+01,3.543703999999999743e-01,1.096711999999999954e+01 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +1.616149999999999878e-02,1.591029999999999875e-02,4.782123999999999819e-01,1.590969999999999884e-02,1.233574000000000059e-01 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +1.613011000000000028e-01,1.369450000000000112e-01,1.287970999999999933e+01,1.363352999999999926e-01,2.233565000000000023e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-1.856369999999999895e-02,-1.897039999999999837e-02,-1.156511999999999984e+00,-1.896890000000000034e-02,-2.214907999999999877e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +7.584670000000000023e-01,4.731780999999999904e-01,2.876460000000000150e+01,4.560671000000000030e-01,6.718768999999999991e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.686729999999999827e-02,1.653570000000000040e-02,1.346835000000000004e+00,1.653469999999999940e-02,2.335645000000000082e-01 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +5.880206999999999518e-01,3.675555999999999823e-01,7.713043999999999301e+01,3.543703999999999743e-01,1.096711999999999954e+01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-7.758929999999999993e-02,-8.392910000000000648e-02,-1.791260999999999992e+00,-8.384289999999999798e-02,-5.102887999999999868e-01 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +1.124187999999999965e+00,5.634124999999999828e-01,1.474593000000000131e+02,5.209766000000000119e-01,2.096712000000000131e+01 +8.114019999999999566e-02,7.508189999999999309e-02,3.077214999999999812e+00,7.500660000000000660e-02,7.187687999999999855e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +2.645300000000000082e-02,2.572349999999999984e-02,1.285814999999999930e+00,2.572019999999999862e-02,2.719550000000000023e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.856369999999999895e-02,-1.897039999999999837e-02,-1.156511999999999984e+00,-1.896890000000000034e-02,-2.214907999999999877e-01 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-1.148520999999999986e-01,-1.305588000000000026e-01,-3.398429999999999840e+00,-1.302020000000000122e-01,-8.766426000000000496e-01 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +1.015365000000000018e-01,9.059150000000000535e-02,1.039137000000000022e+01,9.039529999999999788e-02,1.631745999999999919e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +1.490611000000000019e-01,1.287397000000000125e-01,9.286469000000000307e+00,1.282800000000000051e-01,1.778508999999999896e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +4.126646999999999954e-01,2.888257000000000185e-01,4.223264000000000351e+01,2.827869000000000077e-01,6.631745999999999697e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +4.198035999999999990e-01,3.071039999999999881e-01,1.592090999999999923e+01,3.021588000000000052e-01,3.718768999999999991e+00 +-3.626257999999999981e-01,-7.884961000000000331e-01,-1.762635999999999825e+01,-7.144532000000000105e-01,-3.728044999999999831e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +7.860186999999999591e-01,4.550575000000000037e-01,8.044216000000000122e+01,4.331668000000000185e-01,1.263175000000000026e+01 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +1.686729999999999827e-02,1.653570000000000040e-02,1.346835000000000004e+00,1.653469999999999940e-02,2.335645000000000082e-01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +1.637620999999999938e-01,1.377533999999999981e-01,1.675963000000000136e+01,1.370690999999999993e-01,2.631746000000000141e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +6.524870000000000669e-02,6.086860000000000187e-02,4.064979000000000120e+00,6.081969999999999738e-02,7.785092000000000123e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +1.686729999999999827e-02,1.653570000000000040e-02,1.346835000000000004e+00,1.653469999999999940e-02,2.335645000000000082e-01 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +3.182620999999999922e-01,2.446699999999999986e-01,1.546995000000000076e+01,2.418726999999999960e-01,3.271955000000000169e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +5.993416999999999772e-01,3.781156999999999990e-01,6.133740000000000236e+01,3.650679000000000007e-01,9.631745999999999697e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.686729999999999827e-02,1.653570000000000040e-02,1.346835000000000004e+00,1.653469999999999940e-02,2.335645000000000082e-01 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +1.406247000000000025e+00,6.850897999999999710e-01,8.760882999999999754e+01,6.294191999999999565e-01,1.677851000000000070e+01 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +8.024875999999999676e-01,4.537259000000000153e-01,1.052620000000000005e+02,4.300393000000000132e-01,1.496711999999999954e+01 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +8.114019999999999566e-02,7.508189999999999309e-02,3.077214999999999812e+00,7.500660000000000660e-02,7.187687999999999855e-01 +-3.442172000000000009e-01,-8.265827000000000035e-01,-2.748534000000000077e+01,-7.296150999999999609e-01,-4.766435999999999673e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.097129999999999939e+00,6.067063999999999790e-01,4.160829999999999984e+01,5.726204000000000294e-01,9.718768999999999991e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +3.504391000000000034e-01,2.552889999999999882e-01,3.586439000000000021e+01,2.510684999999999722e-01,5.631745999999999697e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +4.126646999999999954e-01,2.888257000000000185e-01,4.223264000000000351e+01,2.827869000000000077e-01,6.631745999999999697e+00 +-2.458656999999999926e-01,-3.423031000000000268e-01,-7.275072999999999901e+00,-3.361348000000000114e-01,-1.876643000000000061e+00 +7.446049999999999891e-02,6.975370000000000181e-02,1.719028000000000000e+00,6.970410000000000494e-02,4.897112000000000132e-01 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +5.880206999999999518e-01,3.675555999999999823e-01,7.713043999999999301e+01,3.543703999999999743e-01,1.096711999999999954e+01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.458656999999999926e-01,-3.423031000000000268e-01,-7.275072999999999901e+00,-3.361348000000000114e-01,-1.876643000000000061e+00 +5.880206999999999518e-01,3.675555999999999823e-01,7.713043999999999301e+01,3.543703999999999743e-01,1.096711999999999954e+01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +1.940280000000000060e-01,1.638978000000000101e-01,7.358446999999999960e+00,1.631224000000000007e-01,1.718768999999999991e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-3.442172000000000009e-01,-8.265827000000000035e-01,-2.748534000000000077e+01,-7.296150999999999609e-01,-4.766435999999999673e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +3.779518000000000044e-01,2.736488999999999727e-01,3.017901000000000167e+01,2.689502999999999755e-01,5.233564000000000327e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-3.704108999999999874e-01,-7.664223000000000008e-01,-1.404771000000000036e+01,-7.028326000000000295e-01,-3.281231000000000009e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +2.335180000000000033e-01,1.869186999999999932e-01,1.864613999999999905e+01,1.853841999999999990e-01,3.233565000000000023e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +1.940280000000000060e-01,1.638978000000000101e-01,7.358446999999999960e+00,1.631224000000000007e-01,1.718768999999999991e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +2.645300000000000082e-02,2.572349999999999984e-02,1.285814999999999930e+00,2.572019999999999862e-02,2.719550000000000023e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +2.259877999999999887e-01,1.803413000000000099e-01,2.312788000000000110e+01,1.788202000000000125e-01,3.631746000000000141e+00 +1.015365000000000018e-01,9.059150000000000535e-02,1.039137000000000022e+01,9.039529999999999788e-02,1.631745999999999919e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-1.148520999999999986e-01,-1.305588000000000026e-01,-3.398429999999999840e+00,-1.302020000000000122e-01,-8.766426000000000496e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-7.758929999999999993e-02,-8.392910000000000648e-02,-1.791260999999999992e+00,-8.384289999999999798e-02,-5.102887999999999868e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +7.488707999999999476e-01,4.333751000000000131e-01,9.822908999999999935e+01,4.124975000000000169e-01,1.396711999999999954e+01 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.645300000000000082e-02,2.572349999999999984e-02,1.285814999999999930e+00,2.572019999999999862e-02,2.719550000000000023e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +1.237227000000000049e-01,1.098284000000000066e-01,6.013860000000000205e+00,1.095689999999999997e-01,1.271954999999999947e+00 +5.128015000000000212e-01,3.526062999999999836e-01,2.492604000000000042e+01,3.444955000000000100e-01,5.271955000000000169e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +2.335180000000000033e-01,1.869186999999999932e-01,1.864613999999999905e+01,1.853841999999999990e-01,3.233565000000000023e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.594951999999999925e+00,7.115129999999999511e-01,1.632295000000000016e+02,6.397405000000000452e-01,2.563175000000000026e+01 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +1.237227000000000049e-01,1.098284000000000066e-01,6.013860000000000205e+00,1.095689999999999997e-01,1.271954999999999947e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-3.538131999999999944e-01,-8.084837999999999747e-01,-2.204247000000000156e+01,-7.233001999999999487e-01,-4.221491000000000327e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +6.416374000000000244e-01,3.903728000000000198e-01,8.416331999999999880e+01,3.747579999999999800e-01,1.196711999999999954e+01 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +-2.575231000000000048e-01,-3.767781000000000047e-01,-9.766479000000000354e+00,-3.678354999999999819e-01,-2.281231000000000009e+00 +3.182620999999999922e-01,2.446699999999999986e-01,1.546995000000000076e+01,2.418726999999999960e-01,3.271955000000000169e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +6.416374000000000244e-01,3.903728000000000198e-01,8.416331999999999880e+01,3.747579999999999800e-01,1.196711999999999954e+01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +8.561043000000000402e-01,4.734012000000000220e-01,1.122947999999999951e+02,4.468011000000000066e-01,1.596711999999999954e+01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.490611000000000019e-01,1.287397000000000125e-01,9.286469000000000307e+00,1.282800000000000051e-01,1.778508999999999896e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +5.344039999999999901e-01,3.437256000000000200e-01,7.009756000000000142e+01,3.328170999999999768e-01,9.967119000000000284e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.686729999999999827e-02,1.653570000000000040e-02,1.346835000000000004e+00,1.653469999999999940e-02,2.335645000000000082e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +1.616149999999999878e-02,1.591029999999999875e-02,4.782123999999999819e-01,1.590969999999999884e-02,1.233574000000000059e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +1.388228999999999935e+00,6.925084999999999713e-01,6.747844999999999516e+01,6.396811999999999498e-01,1.427195000000000036e+01 +6.524870000000000669e-02,6.086860000000000187e-02,4.064979000000000120e+00,6.081969999999999738e-02,7.785092000000000123e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +6.416374000000000244e-01,3.903728000000000198e-01,8.416331999999999880e+01,3.747579999999999800e-01,1.196711999999999954e+01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +1.471751000000000031e-01,1.295917000000000041e-01,4.354854999999999698e+00,1.292426999999999881e-01,1.123356999999999939e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +9.633376999999999635e-01,5.109462000000000170e-01,1.263606000000000051e+02,4.782426000000000177e-01,1.796712000000000131e+01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +6.416374000000000244e-01,3.903728000000000198e-01,8.416331999999999880e+01,3.747579999999999800e-01,1.196711999999999954e+01 +-2.575231000000000048e-01,-3.767781000000000047e-01,-9.766479000000000354e+00,-3.678354999999999819e-01,-2.281231000000000009e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +3.057348999999999761e-01,2.321660999999999864e-01,2.441257999999999839e+01,2.292598999999999887e-01,4.233564000000000327e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +2.328735000000000110e-01,1.881362000000000034e-01,1.450796000000000063e+01,1.867167000000000132e-01,2.778509000000000118e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +5.946025000000000338e-01,3.816070999999999769e-01,4.747831999999999653e+01,3.693783999999999956e-01,8.233563999999999439e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +8.114019999999999566e-02,7.508189999999999309e-02,3.077214999999999812e+00,7.500660000000000660e-02,7.187687999999999855e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.686729999999999827e-02,1.653570000000000040e-02,1.346835000000000004e+00,1.653469999999999940e-02,2.335645000000000082e-01 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +7.390362999999999793e-01,4.436693999999999916e-01,5.901118999999999915e+01,4.249854000000000132e-01,1.023356000000000066e+01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.781887000000000110e-01,2.236103000000000118e-01,8.231498000000000204e+00,2.218424999999999980e-01,2.123356999999999939e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +5.946025000000000338e-01,3.816070999999999769e-01,4.747831999999999653e+01,3.693783999999999956e-01,8.233563999999999439e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +3.069158000000000164e-01,2.400239000000000122e-01,1.163968000000000025e+01,2.376232000000000066e-01,2.718768999999999991e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +6.952540999999999860e-01,4.122828000000000048e-01,9.119620999999999356e+01,3.940996999999999972e-01,1.296711999999999954e+01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +7.488707999999999476e-01,4.333751000000000131e-01,9.822908999999999935e+01,4.124975000000000169e-01,1.396711999999999954e+01 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +7.446049999999999891e-02,6.975370000000000181e-02,1.719028000000000000e+00,6.970410000000000494e-02,4.897112000000000132e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.940280000000000060e-01,1.638978000000000101e-01,7.358446999999999960e+00,1.631224000000000007e-01,1.718768999999999991e+00 +2.645300000000000082e-02,2.572349999999999984e-02,1.285814999999999930e+00,2.572019999999999862e-02,2.719550000000000023e-01 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +6.524870000000000669e-02,6.086860000000000187e-02,4.064979000000000120e+00,6.081969999999999738e-02,7.785092000000000123e-01 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +6.524870000000000669e-02,6.086860000000000187e-02,4.064979000000000120e+00,6.081969999999999738e-02,7.785092000000000123e-01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.686729999999999827e-02,1.653570000000000040e-02,1.346835000000000004e+00,1.653469999999999940e-02,2.335645000000000082e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +7.446049999999999891e-02,6.975370000000000181e-02,1.719028000000000000e+00,6.970410000000000494e-02,4.897112000000000132e-01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +5.880206999999999518e-01,3.675555999999999823e-01,7.713043999999999301e+01,3.543703999999999743e-01,1.096711999999999954e+01 +-3.340430999999999817e-01,-8.429710999999999732e-01,-3.418639999999999901e+01,-7.336224000000000078e-01,-5.368254000000000303e+00 +1.285037999999999903e+00,6.120708999999999733e-01,1.685578999999999894e+02,5.593567999999999873e-01,2.396712000000000131e+01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-3.340430999999999817e-01,-8.429710999999999732e-01,-3.418639999999999901e+01,-7.336224000000000078e-01,-5.368254000000000303e+00 +1.237227000000000049e-01,1.098284000000000066e-01,6.013860000000000205e+00,1.095689999999999997e-01,1.271954999999999947e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +3.504391000000000034e-01,2.552889999999999882e-01,3.586439000000000021e+01,2.510684999999999722e-01,5.631745999999999697e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.856369999999999895e-02,-1.897039999999999837e-02,-1.156511999999999984e+00,-1.896890000000000034e-02,-2.214907999999999877e-01 +2.209924000000000055e-01,1.816222999999999865e-01,1.074191000000000074e+01,1.804622999999999922e-01,2.271955000000000169e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +5.993416999999999772e-01,3.781156999999999990e-01,6.133740000000000236e+01,3.650679000000000007e-01,9.631745999999999697e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +1.490611000000000019e-01,1.287397000000000125e-01,9.286469000000000307e+00,1.282800000000000051e-01,1.778508999999999896e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.015365000000000018e-01,9.059150000000000535e-02,1.039137000000000022e+01,9.039529999999999788e-02,1.631745999999999919e+00 +1.616149999999999878e-02,1.591029999999999875e-02,4.782123999999999819e-01,1.590969999999999884e-02,1.233574000000000059e-01 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +7.446049999999999891e-02,6.975370000000000181e-02,1.719028000000000000e+00,6.970410000000000494e-02,4.897112000000000132e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.490611000000000019e-01,1.287397000000000125e-01,9.286469000000000307e+00,1.282800000000000051e-01,1.778508999999999896e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +2.259877999999999887e-01,1.803413000000000099e-01,2.312788000000000110e+01,1.788202000000000125e-01,3.631746000000000141e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.015365000000000018e-01,9.059150000000000535e-02,1.039137000000000022e+01,9.039529999999999788e-02,1.631745999999999919e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +8.046105999999999536e-01,4.852381000000000055e-01,3.911017999999999972e+01,4.651556000000000024e-01,8.271955000000000169e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +3.069158000000000164e-01,2.400239000000000122e-01,1.163968000000000025e+01,2.376232000000000066e-01,2.718768999999999991e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +8.114019999999999566e-02,7.508189999999999309e-02,3.077214999999999812e+00,7.500660000000000660e-02,7.187687999999999855e-01 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +2.781887000000000110e-01,2.236103000000000118e-01,8.231498000000000204e+00,2.218424999999999980e-01,2.123356999999999939e+00 +6.416374000000000244e-01,3.903728000000000198e-01,8.416331999999999880e+01,3.747579999999999800e-01,1.196711999999999954e+01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +7.488707999999999476e-01,4.333751000000000131e-01,9.822908999999999935e+01,4.124975000000000169e-01,1.396711999999999954e+01 +1.637620999999999938e-01,1.377533999999999981e-01,1.675963000000000136e+01,1.370690999999999993e-01,2.631746000000000141e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.645300000000000082e-02,2.572349999999999984e-02,1.285814999999999930e+00,2.572019999999999862e-02,2.719550000000000023e-01 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.265101999999999949e-01,1.897903999999999980e-01,5.229316999999999993e+00,1.888044999999999862e-01,1.489711000000000007e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +4.843106999999999829e-01,3.336759999999999726e-01,3.017242999999999853e+01,3.260801999999999867e-01,5.778508999999999673e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +1.686729999999999827e-02,1.653570000000000040e-02,1.346835000000000004e+00,1.653469999999999940e-02,2.335645000000000082e-01 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +2.209924000000000055e-01,1.816222999999999865e-01,1.074191000000000074e+01,1.804622999999999922e-01,2.271955000000000169e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +3.057348999999999761e-01,2.321660999999999864e-01,2.441257999999999839e+01,2.292598999999999887e-01,4.233564000000000327e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +4.198035999999999990e-01,3.071039999999999881e-01,1.592090999999999923e+01,3.021588000000000052e-01,3.718768999999999991e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +8.347092000000000400e-01,5.212972000000000161e-01,1.927046999999999954e+01,5.025287999999999977e-01,5.489710999999999785e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +6.524870000000000669e-02,6.086860000000000187e-02,4.064979000000000120e+00,6.081969999999999738e-02,7.785092000000000123e-01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +6.615674000000000277e-01,4.049112000000000267e-01,6.770565999999999462e+01,3.890915999999999819e-01,1.063175000000000026e+01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +2.209924000000000055e-01,1.816222999999999865e-01,1.074191000000000074e+01,1.804622999999999922e-01,2.271955000000000169e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +2.209924000000000055e-01,1.816222999999999865e-01,1.074191000000000074e+01,1.804622999999999922e-01,2.271955000000000169e+00 +2.265101999999999949e-01,1.897903999999999980e-01,5.229316999999999993e+00,1.888044999999999862e-01,1.489711000000000007e+00 +-3.150870000000000060e-02,-3.243279999999999774e-02,-5.675518999999999981e-01,-3.242830000000000018e-02,-1.785565000000000069e-01 +-2.458656999999999926e-01,-3.423031000000000268e-01,-7.275072999999999901e+00,-3.361348000000000114e-01,-1.876643000000000061e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.015365000000000018e-01,9.059150000000000535e-02,1.039137000000000022e+01,9.039529999999999788e-02,1.631745999999999919e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +5.880206999999999518e-01,3.675555999999999823e-01,7.713043999999999301e+01,3.543703999999999743e-01,1.096711999999999954e+01 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +9.097210000000000019e-01,4.924580000000000068e-01,1.193276999999999930e+02,4.628495000000000248e-01,1.696712000000000131e+01 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +5.306096999999999619e-01,3.757487999999999939e-01,1.224989000000000061e+01,3.683927000000000174e-01,3.489710999999999785e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +1.457311000000000023e+00,7.408571999999999935e-01,4.312127999999999872e+01,6.872200000000000530e-01,1.112335999999999991e+01 +-3.626257999999999981e-01,-7.884961000000000331e-01,-1.762635999999999825e+01,-7.144532000000000105e-01,-3.728044999999999831e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +1.616149999999999878e-02,1.591029999999999875e-02,4.782123999999999819e-01,1.590969999999999884e-02,1.233574000000000059e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +1.285037999999999903e+00,6.120708999999999733e-01,1.685578999999999894e+02,5.593567999999999873e-01,2.396712000000000131e+01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.686729999999999827e-02,1.653570000000000040e-02,1.346835000000000004e+00,1.653469999999999940e-02,2.335645000000000082e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +4.198035999999999990e-01,3.071039999999999881e-01,1.592090999999999923e+01,3.021588000000000052e-01,3.718768999999999991e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +6.100712000000000357e-01,3.999677999999999845e-01,2.965409000000000006e+01,3.883282000000000123e-01,6.271955000000000169e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +2.464605000000000157e+00,8.977926999999999991e-01,3.232812999999999874e+02,7.615865000000000551e-01,4.596712000000000131e+01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +2.882135000000000113e-01,2.192947000000000091e-01,2.949614000000000047e+01,2.165885999999999922e-01,4.631745999999999697e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +2.882135000000000113e-01,2.192947000000000091e-01,2.949614000000000047e+01,2.165885999999999922e-01,4.631745999999999697e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +2.328735000000000110e-01,1.881362000000000034e-01,1.450796000000000063e+01,1.867167000000000132e-01,2.778509000000000118e+00 +1.016953999999999914e+00,5.289095999999999798e-01,1.333934999999999889e+02,4.930320000000000258e-01,1.896712000000000131e+01 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +8.561043000000000402e-01,4.734012000000000220e-01,1.122947999999999951e+02,4.468011000000000066e-01,1.596711999999999954e+01 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +3.069158000000000164e-01,2.400239000000000122e-01,1.163968000000000025e+01,2.376232000000000066e-01,2.718768999999999991e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +2.360926000000000080e+00,9.532880999999999716e-01,1.147588999999999970e+02,8.341511999999999816e-01,2.427195999999999998e+01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.209924000000000055e-01,1.816222999999999865e-01,1.074191000000000074e+01,1.804622999999999922e-01,2.271955000000000169e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-3.538131999999999944e-01,-8.084837999999999747e-01,-2.204247000000000156e+01,-7.233001999999999487e-01,-4.221491000000000327e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +7.488707999999999476e-01,4.333751000000000131e-01,9.822908999999999935e+01,4.124975000000000169e-01,1.396711999999999954e+01 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.940280000000000060e-01,1.638978000000000101e-01,7.358446999999999960e+00,1.631224000000000007e-01,1.718768999999999991e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +7.357477999999999518e-01,4.493267000000000233e-01,4.583691000000000315e+01,4.316189000000000275e-01,8.778508999999999673e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +1.285037999999999903e+00,6.120708999999999733e-01,1.685578999999999894e+02,5.593567999999999873e-01,2.396712000000000131e+01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +6.416374000000000244e-01,3.903728000000000198e-01,8.416331999999999880e+01,3.747579999999999800e-01,1.196711999999999954e+01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.940280000000000060e-01,1.638978000000000101e-01,7.358446999999999960e+00,1.631224000000000007e-01,1.718768999999999991e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +9.633376999999999635e-01,5.109462000000000170e-01,1.263606000000000051e+02,4.782426000000000177e-01,1.796712000000000131e+01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +6.524870000000000669e-02,6.086860000000000187e-02,4.064979000000000120e+00,6.081969999999999738e-02,7.785092000000000123e-01 +1.637620999999999938e-01,1.377533999999999981e-01,1.675963000000000136e+01,1.370690999999999993e-01,2.631746000000000141e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +9.556869999999999532e-01,5.264929999999999888e-01,7.631049000000000149e+01,4.965496999999999828e-01,1.323356000000000066e+01 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.148520999999999986e-01,-1.305588000000000026e-01,-3.398429999999999840e+00,-1.302020000000000122e-01,-8.766426000000000496e-01 +2.259877999999999887e-01,1.803413000000000099e-01,2.312788000000000110e+01,1.788202000000000125e-01,3.631746000000000141e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +3.166859000000000202e-01,2.412151999999999907e-01,1.972944999999999993e+01,2.382615999999999901e-01,3.778509000000000118e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.940280000000000060e-01,1.638978000000000101e-01,7.358446999999999960e+00,1.631224000000000007e-01,1.718768999999999991e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +1.471751000000000031e-01,1.295917000000000041e-01,4.354854999999999698e+00,1.292426999999999881e-01,1.123356999999999939e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +2.335180000000000033e-01,1.869186999999999932e-01,1.864613999999999905e+01,1.853841999999999990e-01,3.233565000000000023e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.015365000000000018e-01,9.059150000000000535e-02,1.039137000000000022e+01,9.039529999999999788e-02,1.631745999999999919e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +4.843106999999999829e-01,3.336759999999999726e-01,3.017242999999999853e+01,3.260801999999999867e-01,5.778508999999999673e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +8.114019999999999566e-02,7.508189999999999309e-02,3.077214999999999812e+00,7.500660000000000660e-02,7.187687999999999855e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +1.015365000000000018e-01,9.059150000000000535e-02,1.039137000000000022e+01,9.039529999999999788e-02,1.631745999999999919e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +5.993416999999999772e-01,3.781156999999999990e-01,6.133740000000000236e+01,3.650679000000000007e-01,9.631745999999999697e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +2.209924000000000055e-01,1.816222999999999865e-01,1.074191000000000074e+01,1.804622999999999922e-01,2.271955000000000169e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +1.613011000000000028e-01,1.369450000000000112e-01,1.287970999999999933e+01,1.363352999999999926e-01,2.233565000000000023e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +5.128015000000000212e-01,3.526062999999999836e-01,2.492604000000000042e+01,3.444955000000000100e-01,5.271955000000000169e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +2.645300000000000082e-02,2.572349999999999984e-02,1.285814999999999930e+00,2.572019999999999862e-02,2.719550000000000023e-01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +3.785600000000000076e-01,2.895545999999999953e-01,8.739604999999999180e+00,2.861164999999999958e-01,2.489710999999999785e+00 +1.637620999999999938e-01,1.377533999999999981e-01,1.675963000000000136e+01,1.370690999999999993e-01,2.631746000000000141e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +2.645300000000000082e-02,2.572349999999999984e-02,1.285814999999999930e+00,2.572019999999999862e-02,2.719550000000000023e-01 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +6.952540999999999860e-01,4.122828000000000048e-01,9.119620999999999356e+01,3.940996999999999972e-01,1.296711999999999954e+01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.335180000000000033e-01,1.869186999999999932e-01,1.864613999999999905e+01,1.853841999999999990e-01,3.233565000000000023e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-3.538131999999999944e-01,-8.084837999999999747e-01,-2.204247000000000156e+01,-7.233001999999999487e-01,-4.221491000000000327e+00 +1.237227000000000049e-01,1.098284000000000066e-01,6.013860000000000205e+00,1.095689999999999997e-01,1.271954999999999947e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +6.416374000000000244e-01,3.903728000000000198e-01,8.416331999999999880e+01,3.747579999999999800e-01,1.196711999999999954e+01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.575231000000000048e-01,-3.767781000000000047e-01,-9.766479000000000354e+00,-3.678354999999999819e-01,-2.281231000000000009e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.148520999999999986e-01,-1.305588000000000026e-01,-3.398429999999999840e+00,-1.302020000000000122e-01,-8.766426000000000496e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-7.758929999999999993e-02,-8.392910000000000648e-02,-1.791260999999999992e+00,-8.384289999999999798e-02,-5.102887999999999868e-01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.237227000000000049e-01,1.098284000000000066e-01,6.013860000000000205e+00,1.095689999999999997e-01,1.271954999999999947e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.575231000000000048e-01,-3.767781000000000047e-01,-9.766479000000000354e+00,-3.678354999999999819e-01,-2.281231000000000009e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +1.237227000000000049e-01,1.098284000000000066e-01,6.013860000000000205e+00,1.095689999999999997e-01,1.271954999999999947e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +2.209924000000000055e-01,1.816222999999999865e-01,1.074191000000000074e+01,1.804622999999999922e-01,2.271955000000000169e+00 +2.259877999999999887e-01,1.803413000000000099e-01,2.312788000000000110e+01,1.788202000000000125e-01,3.631746000000000141e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.259877999999999887e-01,1.803413000000000099e-01,2.312788000000000110e+01,1.788202000000000125e-01,3.631746000000000141e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.458656999999999926e-01,-3.423031000000000268e-01,-7.275072999999999901e+00,-3.361348000000000114e-01,-1.876643000000000061e+00 +6.524870000000000669e-02,6.086860000000000187e-02,4.064979000000000120e+00,6.081969999999999738e-02,7.785092000000000123e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +4.748903999999999903e-01,3.202871999999999941e-01,4.860088999999999970e+01,3.121535999999999755e-01,7.631745999999999697e+00 +-3.704108999999999874e-01,-7.664223000000000008e-01,-1.404771000000000036e+01,-7.028326000000000295e-01,-3.281231000000000009e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.458656999999999926e-01,-3.423031000000000268e-01,-7.275072999999999901e+00,-3.361348000000000114e-01,-1.876643000000000061e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.338654999999999928e+00,6.275671000000000443e-01,1.755908000000000015e+02,5.713285999999999643e-01,2.496712000000000131e+01 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +4.843106999999999829e-01,3.336759999999999726e-01,3.017242999999999853e+01,3.260801999999999867e-01,5.778508999999999673e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +4.155318000000000067e-01,3.011784000000000128e-01,2.019800000000000040e+01,2.960405999999999871e-01,4.271955000000000169e+00 +1.471751000000000031e-01,1.295917000000000041e-01,4.354854999999999698e+00,1.292426999999999881e-01,1.123356999999999939e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +-1.148520999999999986e-01,-1.305588000000000026e-01,-3.398429999999999840e+00,-1.302020000000000122e-01,-8.766426000000000496e-01 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +2.335180000000000033e-01,1.869186999999999932e-01,1.864613999999999905e+01,1.853841999999999990e-01,3.233565000000000023e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +2.645300000000000082e-02,2.572349999999999984e-02,1.285814999999999930e+00,2.572019999999999862e-02,2.719550000000000023e-01 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +2.209924000000000055e-01,1.816222999999999865e-01,1.074191000000000074e+01,1.804622999999999922e-01,2.271955000000000169e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-7.758929999999999993e-02,-8.392910000000000648e-02,-1.791260999999999992e+00,-8.384289999999999798e-02,-5.102887999999999868e-01 +-1.148520999999999986e-01,-1.305588000000000026e-01,-3.398429999999999840e+00,-1.302020000000000122e-01,-8.766426000000000496e-01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.148520999999999986e-01,-1.305588000000000026e-01,-3.398429999999999840e+00,-1.302020000000000122e-01,-8.766426000000000496e-01 +6.524870000000000669e-02,6.086860000000000187e-02,4.064979000000000120e+00,6.081969999999999738e-02,7.785092000000000123e-01 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.686729999999999827e-02,1.653570000000000040e-02,1.346835000000000004e+00,1.653469999999999940e-02,2.335645000000000082e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +5.344039999999999901e-01,3.437256000000000200e-01,7.009756000000000142e+01,3.328170999999999768e-01,9.967119000000000284e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-2.720002999999999727e-01,-4.618575999999999793e-01,-2.171891000000000105e+01,-4.409649999999999959e-01,-3.766434999999999977e+00 +6.416374000000000244e-01,3.903728000000000198e-01,8.416331999999999880e+01,3.747579999999999800e-01,1.196711999999999954e+01 +3.069158000000000164e-01,2.400239000000000122e-01,1.163968000000000025e+01,2.376232000000000066e-01,2.718768999999999991e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +1.613011000000000028e-01,1.369450000000000112e-01,1.287970999999999933e+01,1.363352999999999926e-01,2.233565000000000023e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +2.328735000000000110e-01,1.881362000000000034e-01,1.450796000000000063e+01,1.867167000000000132e-01,2.778509000000000118e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +-7.081669999999999632e-02,-7.699219999999999675e-02,-3.442229999999999901e+00,-7.690260000000000151e-02,-7.280450000000000532e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +6.524870000000000669e-02,6.086860000000000187e-02,4.064979000000000120e+00,6.081969999999999738e-02,7.785092000000000123e-01 +3.166859000000000202e-01,2.412151999999999907e-01,1.972944999999999993e+01,2.382615999999999901e-01,3.778509000000000118e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +3.166859000000000202e-01,2.412151999999999907e-01,1.972944999999999993e+01,2.382615999999999901e-01,3.778509000000000118e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +1.588324999999999987e+00,7.818207000000000351e-01,4.699792000000000058e+01,7.199986999999999915e-01,1.212335999999999991e+01 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +9.633376999999999635e-01,5.109462000000000170e-01,1.263606000000000051e+02,4.782426000000000177e-01,1.796712000000000131e+01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +1.231421000000000099e+00,5.962283999999999917e-01,1.615250000000000057e+02,5.469924000000000452e-01,2.296712000000000131e+01 +1.750072999999999990e+00,7.672717999999999483e-01,1.397412999999999954e+02,6.867594999999999672e-01,2.423356000000000066e+01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +4.271706000000000114e-01,2.924977000000000271e-01,5.603179999999999694e+01,2.856206000000000023e-01,7.967119000000000284e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +5.344039999999999901e-01,3.437256000000000200e-01,7.009756000000000142e+01,3.328170999999999768e-01,9.967119000000000284e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +6.826594999999999747e-01,4.521999999999999909e-01,1.576018000000000008e+01,4.396634999999999849e-01,4.489710999999999785e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +-3.704108999999999874e-01,-7.664223000000000008e-01,-1.404771000000000036e+01,-7.028326000000000295e-01,-3.281231000000000009e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.856369999999999895e-02,-1.897039999999999837e-02,-1.156511999999999984e+00,-1.896890000000000034e-02,-2.214907999999999877e-01 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +6.524870000000000669e-02,6.086860000000000187e-02,4.064979000000000120e+00,6.081969999999999738e-02,7.785092000000000123e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.023760999999999977e-01,-1.169676000000000049e-01,-6.378002999999999645e+00,-1.166221999999999953e-01,-1.221491000000000104e+00 +1.637620999999999938e-01,1.377533999999999981e-01,1.675963000000000136e+01,1.370690999999999993e-01,2.631746000000000141e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +4.126646999999999954e-01,2.888257000000000185e-01,4.223264000000000351e+01,2.827869000000000077e-01,6.631745999999999697e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +8.024875999999999676e-01,4.537259000000000153e-01,1.052620000000000005e+02,4.300393000000000132e-01,1.496711999999999954e+01 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +6.524870000000000669e-02,6.086860000000000187e-02,4.064979000000000120e+00,6.081969999999999738e-02,7.785092000000000123e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-1.997833999999999999e-01,-2.769826000000000232e-01,-1.595246999999999993e+01,-2.721155000000000102e-01,-2.766434999999999977e+00 +2.259877999999999887e-01,1.803413000000000099e-01,2.312788000000000110e+01,1.788202000000000125e-01,3.631746000000000141e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +8.024875999999999676e-01,4.537259000000000153e-01,1.052620000000000005e+02,4.300393000000000132e-01,1.496711999999999954e+01 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +2.645300000000000082e-02,2.572349999999999984e-02,1.285814999999999930e+00,2.572019999999999862e-02,2.719550000000000023e-01 +-1.148520999999999986e-01,-1.305588000000000026e-01,-3.398429999999999840e+00,-1.302020000000000122e-01,-8.766426000000000496e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-2.458656999999999926e-01,-3.423031000000000268e-01,-7.275072999999999901e+00,-3.361348000000000114e-01,-1.876643000000000061e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +3.199371999999999772e-01,2.353204999999999880e-01,4.196603999999999957e+01,2.316601000000000077e-01,5.967119000000000284e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +4.807872999999999730e-01,3.187570000000000126e-01,6.306468000000000274e+01,3.099567999999999768e-01,8.967119000000000284e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +8.908420000000000227e-02,8.085470000000000157e-02,7.113269999999999982e+00,8.072830000000000283e-02,1.233564000000000105e+00 +-5.534959999999999880e-02,-5.944060000000000316e-02,-4.419599999999999973e+00,-5.939030000000000004e-02,-7.664353999999999889e-01 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +1.471751000000000031e-01,1.295917000000000041e-01,4.354854999999999698e+00,1.292426999999999881e-01,1.123356999999999939e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-2.095917999999999948e-01,-3.053681999999999785e-01,-2.144988999999999990e+01,-2.982766000000000028e-01,-3.368253999999999859e+00 +-1.275664999999999993e-01,-1.531653000000000042e-01,-1.018604000000000021e+01,-1.523148000000000002e-01,-1.766435999999999895e+00 +-1.856369999999999895e-02,-1.897039999999999837e-02,-1.156511999999999984e+00,-1.896890000000000034e-02,-2.214907999999999877e-01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-8.514049999999999396e-02,-9.608629999999999949e-02,-8.713387000000000882e+00,-9.585240000000000427e-02,-1.368254000000000081e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +2.127037999999999984e-01,1.700770000000000060e-01,2.790027999999999864e+01,1.686673999999999951e-01,3.967118999999999840e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-2.700007999999999853e-01,-4.362619999999999831e-01,-1.682097999999999871e+01,-4.199611999999999790e-01,-3.221490999999999882e+00 +3.931079999999999991e-02,3.749500000000000055e-02,4.023120999999999725e+00,3.748100000000000043e-02,6.317464000000000413e-01 +7.488707999999999476e-01,4.333751000000000131e-01,9.822908999999999935e+01,4.124975000000000169e-01,1.396711999999999954e+01 +-1.763000000000000027e-03,-1.767099999999999964e-03,-2.312481999999999871e-01,-1.767099999999999964e-03,-3.288100000000000050e-02 +3.214184999999999959e-01,2.562717999999999940e-01,5.789560999999999957e+00,2.540935000000000277e-01,1.821444000000000063e+00 +1.613011000000000028e-01,1.369450000000000112e-01,1.287970999999999933e+01,1.363352999999999926e-01,2.233565000000000023e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +7.446049999999999891e-02,6.975370000000000181e-02,1.719028000000000000e+00,6.970410000000000494e-02,4.897112000000000132e-01 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +6.712293999999999761e-01,4.405321999999999849e-01,1.986142999999999859e+01,4.277753999999999723e-01,5.123357000000000383e+00 +3.735538999999999943e-01,2.647622000000000031e-01,4.899891999999999825e+01,2.596048000000000244e-01,6.967119000000000284e+00 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.856369999999999895e-02,-1.897039999999999837e-02,-1.156511999999999984e+00,-1.896890000000000034e-02,-2.214907999999999877e-01 +7.488707999999999476e-01,4.333751000000000131e-01,9.822908999999999935e+01,4.124975000000000169e-01,1.396711999999999954e+01 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +1.590871000000000091e-01,1.334141000000000077e-01,2.086739999999999995e+01,1.327278000000000069e-01,2.967118999999999840e+00 +2.663205000000000156e-01,2.038828000000000029e-01,3.493316000000000088e+01,2.014776000000000067e-01,4.967119000000000284e+00 +1.392271000000000036e+00,6.427372999999999559e-01,1.826237000000000137e+02,5.829320000000000057e-01,2.596712000000000131e+01 +-3.174760000000000082e-02,-3.284469999999999751e-02,-1.204015999999999975e+00,-3.283839999999999676e-02,-2.812312000000000145e-01 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-2.698464999999999892e-01,-5.060208000000000483e-01,-3.539565000000000339e+01,-4.741587999999999914e-01,-5.032880999999999716e+00 +-2.718173999999999868e-01,-4.850342999999999738e-01,-2.781814999999999927e+01,-4.589498000000000189e-01,-4.368254000000000303e+00 +-1.680863999999999969e-01,-2.110146999999999995e-01,-8.170275000000000176e+00,-2.092063000000000117e-01,-1.728045000000000053e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +-1.626131000000000104e-01,-2.156214999999999937e-01,-2.132988999999999891e+01,-2.127870000000000039e-01,-3.032881000000000160e+00 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +-1.446353999999999973e-01,-1.727818999999999883e-01,-5.485247000000000206e+00,-1.718746999999999914e-01,-1.281231000000000009e+00 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +1.054704000000000058e-01,9.323439999999999506e-02,1.383450999999999986e+01,9.299849999999999783e-02,1.967119000000000062e+00 +-2.653560999999999837e-01,-4.079950999999999994e-01,-1.289832000000000001e+01,-3.956779000000000268e-01,-2.728044999999999831e+00 +1.686729999999999827e-02,1.653570000000000040e-02,1.346835000000000004e+00,1.653469999999999940e-02,2.335645000000000082e-01 +-2.291479999999999906e-02,-2.360759999999999942e-02,-2.345133000000000134e+00,-2.360409999999999939e-02,-3.682536000000000143e-01 +-1.861885000000000068e-01,-2.456345000000000056e-01,-1.159948999999999941e+01,-2.425192999999999932e-01,-2.221490999999999882e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-3.234632000000000063e-01,-8.578107000000000371e-01,-4.242853999999999814e+01,-7.355306999999999817e-01,-6.032880999999999716e+00 +5.185370000000000257e-02,4.861850000000000199e-02,6.801632999999999818e+00,4.858490000000000031e-02,9.671189999999999509e-01 +-1.473660999999999999e-01,-1.859422000000000019e-01,-1.508164000000000016e+01,-1.842772000000000021e-01,-2.368253999999999859e+00 +-5.537969999999999698e-02,-5.995720000000000216e-02,-7.264128999999999614e+00,-5.989420000000000160e-02,-1.032880999999999938e+00 +-1.089963999999999933e-01,-1.292687999999999893e-01,-1.429701000000000022e+01,-1.286440000000000083e-01,-2.032881000000000160e+00 +1.616149999999999878e-02,1.591029999999999875e-02,4.782123999999999819e-01,1.590969999999999884e-02,1.233574000000000059e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +2.645300000000000082e-02,2.572349999999999984e-02,1.285814999999999930e+00,2.572019999999999862e-02,2.719550000000000023e-01 +-2.162297999999999998e-01,-3.310713000000000128e-01,-2.836277000000000115e+01,-3.212660999999999989e-01,-4.032880999999999716e+00 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +1.300315000000000110e+00,6.395863000000000520e-01,1.056401999999999930e+02,5.889130000000000198e-01,1.819352999999999909e+01 +6.570736000000000354e-01,4.088127999999999762e-01,5.338195000000000334e+01,3.938633999999999746e-01,9.193530000000000868e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +7.285449999999999982e-01,4.388867000000000185e-01,5.918842999999999677e+01,4.206465999999999816e-01,1.019353000000000087e+01 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +1.445152000000000103e-01,1.252460999999999991e-01,9.160344000000000264e+00,1.248196000000000028e-01,1.742258000000000084e+00 +7.698180000000000300e-02,7.148079999999999712e-02,2.970444000000000084e+00,7.141540000000000388e-02,6.890456999999999832e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.445152000000000103e-01,1.252460999999999991e-01,9.160344000000000264e+00,1.248196000000000028e-01,1.742258000000000084e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +6.286910999999999472e-01,4.369408000000000181e-01,8.989627999999999730e+00,4.274471000000000243e-01,3.101843999999999824e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +3.104094000000000020e-01,2.372537999999999869e-01,1.967583000000000126e+01,2.344215000000000049e-01,3.742258000000000084e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.064210000000000003e-02,2.028869999999999979e-02,2.951598999999999751e-01,2.028759999999999938e-02,1.018440000000000040e-01 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +7.002440000000000053e-02,6.582540000000000613e-02,1.644819999999999949e+00,6.578340000000000576e-02,4.653404999999999903e-01 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.096791000000000071e-01,-2.652512000000000203e-01,-3.842745999999999995e+00,-2.628233999999999848e-01,-1.200623999999999914e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.192853999999999998e-01,1.062562999999999980e-01,5.899335999999999913e+00,1.060197999999999974e-01,1.239130000000000065e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +2.301989999999999939e-02,2.246269999999999864e-02,1.138465999999999978e+00,2.246050000000000130e-02,2.391298000000000035e-01 +1.421659000000000117e-01,1.256146999999999958e-01,4.280027999999999722e+00,1.252946000000000060e-01,1.096443000000000056e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-3.814154000000000155e-01,-7.170872999999999831e-01,-8.959158999999999651e+00,-6.715801000000000132e-01,-2.534660000000000135e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +8.838129999999999598e-02,8.266170000000000462e-02,9.860126000000000168e-01,8.260000000000000675e-02,3.757281000000000093e-01 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +4.888877999999999835e-01,3.570679999999999965e-01,8.959749999999999659e+00,3.512596000000000052e-01,2.799376000000000086e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +2.064210000000000003e-02,2.028869999999999979e-02,2.951598999999999751e-01,2.028759999999999938e-02,1.018440000000000040e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-3.699073999999999973e-01,-7.680327999999999600e-01,-1.427336999999999989e+01,-7.037377000000000216e-01,-3.310954000000000175e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +6.570736000000000354e-01,4.088127999999999762e-01,5.338195000000000334e+01,3.938633999999999746e-01,9.193530000000000868e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +8.313741999999999521e-01,5.349441000000000335e-01,1.188777999999999935e+01,5.179964000000000235e-01,4.101843999999999824e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +2.301989999999999939e-02,2.246269999999999864e-02,1.138465999999999978e+00,2.246050000000000130e-02,2.391298000000000035e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +3.933564999999999978e-01,2.852238999999999747e-01,2.493356999999999957e+01,2.803706999999999727e-01,4.742257999999999640e+00 +1.445152000000000103e-01,1.252460999999999991e-01,9.160344000000000264e+00,1.248196000000000028e-01,1.742258000000000084e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +7.002440000000000053e-02,6.582540000000000613e-02,1.644819999999999949e+00,6.578340000000000576e-02,4.653404999999999903e-01 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +1.396043999999999896e-01,1.248781000000000058e-01,2.558501999999999832e+00,1.246199000000000057e-01,7.993759000000000281e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +7.002440000000000053e-02,6.582540000000000613e-02,1.644819999999999949e+00,6.578340000000000576e-02,4.653404999999999903e-01 +-2.096791000000000071e-01,-2.652512000000000203e-01,-3.842745999999999995e+00,-2.628233999999999848e-01,-1.200623999999999914e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-3.474050000000000055e-02,-3.606560000000000321e-02,-1.340510000000000090e+00,-3.605719999999999759e-02,-3.109543000000000168e-01 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +1.396043999999999896e-01,1.248781000000000058e-01,2.558501999999999832e+00,1.246199000000000057e-01,7.993759000000000281e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +7.698180000000000300e-02,7.148079999999999712e-02,2.970444000000000084e+00,7.141540000000000388e-02,6.890456999999999832e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +1.887041000000000135e-01,1.599530000000000118e-01,7.281399000000000399e+00,1.592269000000000045e-01,1.689046000000000047e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +1.192853999999999998e-01,1.062562999999999980e-01,5.899335999999999913e+00,1.060197999999999974e-01,1.239130000000000065e+00 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +-3.620419000000000276e-01,-7.899543999999999455e-01,-1.790501000000000076e+01,-7.151566999999999785e-01,-3.760870000000000157e+00 +4.014878000000000058e-01,2.998151000000000010e-01,1.208713999999999977e+01,2.955962999999999785e-01,3.096442999999999834e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-3.847240000000000104e-01,-6.549530000000000074e-01,-5.501152000000000264e+00,-6.250449000000000144e-01,-1.898155999999999954e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +5.141310000000000047e-01,3.436040000000000205e-01,4.176901999999999759e+01,3.344771000000000272e-01,7.193529999999999980e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +-3.620419000000000276e-01,-7.899543999999999455e-01,-1.790501000000000076e+01,-7.151566999999999785e-01,-3.760870000000000157e+00 +7.285449999999999982e-01,4.388867000000000185e-01,5.918842999999999677e+01,4.206465999999999816e-01,1.019353000000000087e+01 +-3.847240000000000104e-01,-6.549530000000000074e-01,-5.501152000000000264e+00,-6.250449000000000144e-01,-1.898155999999999954e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-3.435247000000000162e-01,-8.277782999999999669e-01,-2.790861999999999910e+01,-7.299666999999999684e-01,-4.806470000000000020e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +-3.620419000000000276e-01,-7.899543999999999455e-01,-1.790501000000000076e+01,-7.151566999999999785e-01,-3.760870000000000157e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +4.260081000000000007e-01,3.243348999999999815e-01,6.091472000000000442e+00,3.203501999999999739e-01,2.101843999999999824e+00 +4.260081000000000007e-01,3.243348999999999815e-01,6.091472000000000442e+00,3.203501999999999739e-01,2.101843999999999824e+00 +4.763035999999999937e-01,3.292964999999999920e-01,3.019131000000000142e+01,3.219368000000000229e-01,5.742257999999999640e+00 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.421659000000000117e-01,1.256146999999999958e-01,4.280027999999999722e+00,1.252946000000000060e-01,1.096443000000000056e+00 +6.570736000000000354e-01,4.088127999999999762e-01,5.338195000000000334e+01,3.938633999999999746e-01,9.193530000000000868e+00 +-2.137889999999999929e-02,-2.192300000000000151e-02,-1.355140000000000011e+00,-2.192070000000000130e-02,-2.577418000000000209e-01 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-3.474050000000000055e-02,-3.606560000000000321e-02,-1.340510000000000090e+00,-3.605719999999999759e-02,-3.109543000000000168e-01 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +7.285449999999999982e-01,4.388867000000000185e-01,5.918842999999999677e+01,4.206465999999999816e-01,1.019353000000000087e+01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-3.764779999999999793e-01,-7.438232999999999651e-01,-1.133419999999999916e+01,-6.893046000000000451e-01,-2.903557000000000166e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +1.396043999999999896e-01,1.248781000000000058e-01,2.558501999999999832e+00,1.246199000000000057e-01,7.993759000000000281e-01 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +7.698180000000000300e-02,7.148079999999999712e-02,2.970444000000000084e+00,7.141540000000000388e-02,6.890456999999999832e-01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +2.205042999999999864e-01,1.853983999999999910e-01,5.179479999999999862e+00,1.844724000000000086e-01,1.465340000000000087e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +5.311487999999999765e-01,3.710235000000000061e-01,1.599070000000000036e+01,3.631816999999999962e-01,4.096442999999999834e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +4.888877999999999835e-01,3.570679999999999965e-01,8.959749999999999659e+00,3.512596000000000052e-01,2.799376000000000086e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +5.214642000000000444e-01,3.705520999999999954e-01,1.224879999999999924e+01,3.634404999999999997e-01,3.465339999999999865e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.301989999999999939e-02,2.246269999999999864e-02,1.138465999999999978e+00,2.246050000000000130e-02,2.391298000000000035e-01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +7.698180000000000300e-02,7.148079999999999712e-02,2.970444000000000084e+00,7.141540000000000388e-02,6.890456999999999832e-01 +1.445152000000000103e-01,1.252460999999999991e-01,9.160344000000000264e+00,1.248196000000000028e-01,1.742258000000000084e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +1.887041000000000135e-01,1.599530000000000118e-01,7.281399000000000399e+00,1.592269000000000045e-01,1.689046000000000047e+00 +-3.699073999999999973e-01,-7.680327999999999600e-01,-1.427336999999999989e+01,-7.037377000000000216e-01,-3.310954000000000175e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +6.719441999999999915e-01,4.466444999999999999e-01,1.578345999999999982e+01,4.344651999999999958e-01,4.465340999999999561e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +3.118162999999999907e-01,2.405453999999999926e-01,1.542107999999999990e+01,2.378666000000000114e-01,3.239129999999999843e+00 +3.004263999999999823e-01,2.357630000000000003e-01,1.159234999999999971e+01,2.334703999999999946e-01,2.689045999999999825e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-3.435247000000000162e-01,-8.277782999999999669e-01,-2.790861999999999910e+01,-7.299666999999999684e-01,-4.806470000000000020e+00 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +5.141310000000000047e-01,3.436040000000000205e-01,4.176901999999999759e+01,3.344771000000000272e-01,7.193529999999999980e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +7.002440000000000053e-02,6.582540000000000613e-02,1.644819999999999949e+00,6.578340000000000576e-02,4.653404999999999903e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +3.709842999999999891e-01,2.847433999999999799e-01,8.714138999999999413e+00,2.814483999999999875e-01,2.465339999999999865e+00 +-2.096791000000000071e-01,-2.652512000000000203e-01,-3.842745999999999995e+00,-2.628233999999999848e-01,-1.200623999999999914e+00 +2.205042999999999864e-01,1.853983999999999910e-01,5.179479999999999862e+00,1.844724000000000086e-01,1.465340000000000087e+00 +-3.764779999999999793e-01,-7.438232999999999651e-01,-1.133419999999999916e+01,-6.893046000000000451e-01,-2.903557000000000166e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-3.474050000000000055e-02,-3.606560000000000321e-02,-1.340510000000000090e+00,-3.605719999999999759e-02,-3.109543000000000168e-01 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-3.847240000000000104e-01,-6.549530000000000074e-01,-5.501152000000000264e+00,-6.250449000000000144e-01,-1.898155999999999954e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-3.620419000000000276e-01,-7.899543999999999455e-01,-1.790501000000000076e+01,-7.151566999999999785e-01,-3.760870000000000157e+00 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +2.274623000000000062e-01,1.844012999999999902e-01,1.441808999999999941e+01,1.830546000000000118e-01,2.742258000000000084e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +2.301989999999999939e-02,2.246269999999999864e-02,1.138465999999999978e+00,2.246050000000000130e-02,2.391298000000000035e-01 +-3.764779999999999793e-01,-7.438232999999999651e-01,-1.133419999999999916e+01,-6.893046000000000451e-01,-2.903557000000000166e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +1.157372999999999985e+00,5.945905999999999691e-01,9.402724000000000615e+01,5.528035999999999506e-01,1.619352999999999909e+01 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +1.657672000000000034e+00,7.417468000000000394e-01,1.346725000000000136e+02,6.674476000000000298e-01,2.319352999999999909e+01 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +5.214642000000000444e-01,3.705520999999999954e-01,1.224879999999999924e+01,3.634404999999999997e-01,3.465339999999999865e+00 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +4.260081000000000007e-01,3.243348999999999815e-01,6.091472000000000442e+00,3.203501999999999739e-01,2.101843999999999824e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +3.709842999999999891e-01,2.847433999999999799e-01,8.714138999999999413e+00,2.814483999999999875e-01,2.465339999999999865e+00 +-3.620419000000000276e-01,-7.899543999999999455e-01,-1.790501000000000076e+01,-7.151566999999999785e-01,-3.760870000000000157e+00 +-3.474050000000000055e-02,-3.606560000000000321e-02,-1.340510000000000090e+00,-3.605719999999999759e-02,-3.109543000000000168e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +9.429589000000000443e-01,5.212812000000000001e-01,7.660783000000000698e+01,4.919637000000000038e-01,1.319353000000000087e+01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +4.014878000000000058e-01,2.998151000000000010e-01,1.208713999999999977e+01,2.955962999999999785e-01,3.096442999999999834e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +1.887041000000000135e-01,1.599530000000000118e-01,7.281399000000000399e+00,1.592269000000000045e-01,1.689046000000000047e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-2.137889999999999929e-02,-2.192300000000000151e-02,-1.355140000000000011e+00,-2.192070000000000130e-02,-2.577418000000000209e-01 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +5.141310000000000047e-01,3.436040000000000205e-01,4.176901999999999759e+01,3.344771000000000272e-01,7.193529999999999980e+00 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +-3.474050000000000055e-02,-3.606560000000000321e-02,-1.340510000000000090e+00,-3.605719999999999759e-02,-3.109543000000000168e-01 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-3.435247000000000162e-01,-8.277782999999999669e-01,-2.790861999999999910e+01,-7.299666999999999684e-01,-4.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-3.474050000000000055e-02,-3.606560000000000321e-02,-1.340510000000000090e+00,-3.605719999999999759e-02,-3.109543000000000168e-01 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +5.214642000000000444e-01,3.705520999999999954e-01,1.224879999999999924e+01,3.634404999999999997e-01,3.465339999999999865e+00 +6.286910999999999472e-01,4.369408000000000181e-01,8.989627999999999730e+00,4.274471000000000243e-01,3.101843999999999824e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-3.474050000000000055e-02,-3.606560000000000321e-02,-1.340510000000000090e+00,-3.605719999999999759e-02,-3.109543000000000168e-01 +6.570736000000000354e-01,4.088127999999999762e-01,5.338195000000000334e+01,3.938633999999999746e-01,9.193530000000000868e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +1.396043999999999896e-01,1.248781000000000058e-01,2.558501999999999832e+00,1.246199000000000057e-01,7.993759000000000281e-01 +5.238709000000000282e-01,3.625683000000000100e-01,2.021425999999999945e+01,3.545109000000000177e-01,4.689046000000000269e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-3.435247000000000162e-01,-8.277782999999999669e-01,-2.790861999999999910e+01,-7.299666999999999684e-01,-4.806470000000000020e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +7.285449999999999982e-01,4.388867000000000185e-01,5.918842999999999677e+01,4.206465999999999816e-01,1.019353000000000087e+01 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +4.426596999999999893e-01,3.079182999999999781e-01,3.596255000000000024e+01,3.012597000000000191e-01,6.193529999999999980e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +1.421659000000000117e-01,1.256146999999999958e-01,4.280027999999999722e+00,1.252946000000000060e-01,1.096443000000000056e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +1.085901000000000005e+00,5.710009999999999808e-01,8.822077000000000169e+01,5.334980000000000278e-01,1.519353000000000087e+01 +-3.620419000000000276e-01,-7.899543999999999455e-01,-1.790501000000000076e+01,-7.151566999999999785e-01,-3.760870000000000157e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +5.856023000000000200e-01,3.771333000000000046e-01,4.757549000000000206e+01,3.652315999999999896e-01,8.193530000000000868e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +8.714876000000000289e-01,4.949724999999999819e-01,7.080136000000000251e+01,4.695261000000000018e-01,1.219353000000000087e+01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-2.137889999999999929e-02,-2.192300000000000151e-02,-1.355140000000000011e+00,-2.192070000000000130e-02,-2.577418000000000209e-01 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-3.814154000000000155e-01,-7.170872999999999831e-01,-8.959158999999999651e+00,-6.715801000000000132e-01,-2.534660000000000135e+00 +4.426596999999999893e-01,3.079182999999999781e-01,3.596255000000000024e+01,3.012597000000000191e-01,6.193529999999999980e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +1.872085999999999917e+00,7.974563000000000068e-01,1.520919000000000096e+02,7.082998999999999823e-01,2.619352999999999909e+01 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +7.285449999999999982e-01,4.388867000000000185e-01,5.918842999999999677e+01,4.206465999999999816e-01,1.019353000000000087e+01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +5.856023000000000200e-01,3.771333000000000046e-01,4.757549000000000206e+01,3.652315999999999896e-01,8.193530000000000868e+00 +1.872085999999999917e+00,7.974563000000000068e-01,1.520919000000000096e+02,7.082998999999999823e-01,2.619352999999999909e+01 +1.443257999999999930e+00,6.820456000000000296e-01,1.172531000000000034e+02,6.221303999999999723e-01,2.019352999999999909e+01 +7.002440000000000053e-02,6.582540000000000613e-02,1.644819999999999949e+00,6.578340000000000576e-02,4.653404999999999903e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-3.764779999999999793e-01,-7.438232999999999651e-01,-1.133419999999999916e+01,-6.893046000000000451e-01,-2.903557000000000166e+00 +7.285449999999999982e-01,4.388867000000000185e-01,5.918842999999999677e+01,4.206465999999999816e-01,1.019353000000000087e+01 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +4.014878000000000058e-01,2.998151000000000010e-01,1.208713999999999977e+01,2.955962999999999785e-01,3.096442999999999834e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +7.698180000000000300e-02,7.148079999999999712e-02,2.970444000000000084e+00,7.141540000000000388e-02,6.890456999999999832e-01 +2.064210000000000003e-02,2.028869999999999979e-02,2.951598999999999751e-01,2.028759999999999938e-02,1.018440000000000040e-01 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-3.764779999999999793e-01,-7.438232999999999651e-01,-1.133419999999999916e+01,-6.893046000000000451e-01,-2.903557000000000166e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +7.002440000000000053e-02,6.582540000000000613e-02,1.644819999999999949e+00,6.578340000000000576e-02,4.653404999999999903e-01 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +2.301989999999999939e-02,2.246269999999999864e-02,1.138465999999999978e+00,2.246050000000000130e-02,2.391298000000000035e-01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-2.137889999999999929e-02,-2.192300000000000151e-02,-1.355140000000000011e+00,-2.192070000000000130e-02,-2.577418000000000209e-01 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +1.396043999999999896e-01,1.248781000000000058e-01,2.558501999999999832e+00,1.246199000000000057e-01,7.993759000000000281e-01 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-3.474050000000000055e-02,-3.606560000000000321e-02,-1.340510000000000090e+00,-3.605719999999999759e-02,-3.109543000000000168e-01 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +2.301989999999999939e-02,2.246269999999999864e-02,1.138465999999999978e+00,2.246050000000000130e-02,2.391298000000000035e-01 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +5.141310000000000047e-01,3.436040000000000205e-01,4.176901999999999759e+01,3.344771000000000272e-01,7.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +2.301989999999999939e-02,2.246269999999999864e-02,1.138465999999999978e+00,2.246050000000000130e-02,2.391298000000000035e-01 +5.238709000000000282e-01,3.625683000000000100e-01,2.021425999999999945e+01,3.545109000000000177e-01,4.689046000000000269e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +1.421659000000000117e-01,1.256146999999999958e-01,4.280027999999999722e+00,1.252946000000000060e-01,1.096443000000000056e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +1.014429999999999943e+00,5.465919999999999668e-01,8.241431000000000040e+01,5.132501999999999898e-01,1.419353000000000087e+01 +1.014429999999999943e+00,5.465919999999999668e-01,8.241431000000000040e+01,5.132501999999999898e-01,1.419353000000000087e+01 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +2.155508999999999897e-01,1.777640000000000053e-01,1.066020999999999930e+01,1.766681999999999975e-01,2.239129999999999843e+00 +-2.137889999999999929e-02,-2.192300000000000151e-02,-1.355140000000000011e+00,-2.192070000000000130e-02,-2.577418000000000209e-01 +-3.814154000000000155e-01,-7.170872999999999831e-01,-8.959158999999999651e+00,-6.715801000000000132e-01,-2.534660000000000135e+00 +4.888877999999999835e-01,3.570679999999999965e-01,8.959749999999999659e+00,3.512596000000000052e-01,2.799376000000000086e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +1.445152000000000103e-01,1.252460999999999991e-01,9.160344000000000264e+00,1.248196000000000028e-01,1.742258000000000084e+00 +2.064210000000000003e-02,2.028869999999999979e-02,2.951598999999999751e-01,2.028759999999999938e-02,1.018440000000000040e-01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +7.002440000000000053e-02,6.582540000000000613e-02,1.644819999999999949e+00,6.578340000000000576e-02,4.653404999999999903e-01 +-3.847240000000000104e-01,-6.549530000000000074e-01,-5.501152000000000264e+00,-6.250449000000000144e-01,-1.898155999999999954e+00 +5.856023000000000200e-01,3.771333000000000046e-01,4.757549000000000206e+01,3.652315999999999896e-01,8.193530000000000868e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +6.156819999999999654e-02,5.763419999999999654e-02,3.902601999999999904e+00,5.759229999999999905e-02,7.422581999999999791e-01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +3.118162999999999907e-01,2.405453999999999926e-01,1.542107999999999990e+01,2.378666000000000114e-01,3.239129999999999843e+00 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +-3.531673000000000173e-01,-8.098043000000000324e-01,-2.238610999999999862e+01,-7.238196999999999548e-01,-4.257742000000000360e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +3.004263999999999823e-01,2.357630000000000003e-01,1.159234999999999971e+01,2.334703999999999946e-01,2.689045999999999825e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +5.592506999999999895e-01,3.701822000000000168e-01,3.544904999999999973e+01,3.598837999999999759e-01,6.742257999999999640e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +2.718267999999999796e-01,2.192536999999999958e-01,8.183585000000000775e+00,2.175746000000000069e-01,2.096442999999999834e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +-2.137889999999999929e-02,-2.192300000000000151e-02,-1.355140000000000011e+00,-2.192070000000000130e-02,-2.577418000000000209e-01 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +4.121486999999999790e-01,3.025489000000000095e-01,1.590330999999999939e+01,2.977831000000000228e-01,3.689045999999999825e+00 +8.000163000000000135e-01,4.675525999999999849e-01,6.499490000000000123e+01,4.458055000000000212e-01,1.119353000000000087e+01 +9.429589000000000443e-01,5.212812000000000001e-01,7.660783000000000698e+01,4.919637000000000038e-01,1.319353000000000087e+01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-2.137889999999999929e-02,-2.192300000000000151e-02,-1.355140000000000011e+00,-2.192070000000000130e-02,-2.577418000000000209e-01 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +3.709842999999999891e-01,2.847433999999999799e-01,8.714138999999999413e+00,2.814483999999999875e-01,2.465339999999999865e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +4.426596999999999893e-01,3.079182999999999781e-01,3.596255000000000024e+01,3.012597000000000191e-01,6.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +5.043473000000000539e-01,3.479948999999999959e-01,2.494282000000000110e+01,3.401349000000000178e-01,5.239130000000000287e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-1.468454999999999899e-01,-1.682093000000000060e-01,-1.638258999999999910e+00,-1.676931999999999867e-01,-6.242718999999999907e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +6.635294999999999943e-01,4.486716000000000037e-01,1.216037000000000035e+01,4.374240999999999824e-01,3.799376000000000086e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.872085999999999917e+00,7.974563000000000068e-01,1.520919000000000096e+02,7.082998999999999823e-01,2.619352999999999909e+01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +4.763035999999999937e-01,3.292964999999999920e-01,3.019131000000000142e+01,3.219368000000000229e-01,5.742257999999999640e+00 +-2.581851000000000007e-01,-3.790555999999999925e-01,-9.962419000000000580e+00,-3.698974999999999902e-01,-2.310954000000000175e+00 +6.156819999999999654e-02,5.763419999999999654e-02,3.902601999999999904e+00,5.759229999999999905e-02,7.422581999999999791e-01 +-3.474050000000000055e-02,-3.606560000000000321e-02,-1.340510000000000090e+00,-3.605719999999999759e-02,-3.109543000000000168e-01 +-3.474050000000000055e-02,-3.606560000000000321e-02,-1.340510000000000090e+00,-3.605719999999999759e-02,-3.109543000000000168e-01 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +4.426596999999999893e-01,3.079182999999999781e-01,3.596255000000000024e+01,3.012597000000000191e-01,6.193529999999999980e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +5.856023000000000200e-01,3.771333000000000046e-01,4.757549000000000206e+01,3.652315999999999896e-01,8.193530000000000868e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-2.096791000000000071e-01,-2.652512000000000203e-01,-3.842745999999999995e+00,-2.628233999999999848e-01,-1.200623999999999914e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +6.006126999999999994e-01,3.951312000000000157e-01,2.970369000000000170e+01,3.838162999999999991e-01,6.239130000000000287e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +1.445152000000000103e-01,1.252460999999999991e-01,9.160344000000000264e+00,1.248196000000000028e-01,1.742258000000000084e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-2.581851000000000007e-01,-3.790555999999999925e-01,-9.962419000000000580e+00,-3.698974999999999902e-01,-2.310954000000000175e+00 +2.086500000000000021e+00,8.498464000000000018e-01,1.695114000000000090e+02,7.454885999999999457e-01,2.919352999999999909e+01 +-3.764779999999999793e-01,-7.438232999999999651e-01,-1.133419999999999916e+01,-6.893046000000000451e-01,-2.903557000000000166e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-3.814154000000000155e-01,-7.170872999999999831e-01,-8.959158999999999651e+00,-6.715801000000000132e-01,-2.534660000000000135e+00 +1.445152000000000103e-01,1.252460999999999991e-01,9.160344000000000264e+00,1.248196000000000028e-01,1.742258000000000084e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-3.699073999999999973e-01,-7.680327999999999600e-01,-1.427336999999999989e+01,-7.037377000000000216e-01,-3.310954000000000175e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-3.435247000000000162e-01,-8.277782999999999669e-01,-2.790861999999999910e+01,-7.299666999999999684e-01,-4.806470000000000020e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-2.096791000000000071e-01,-2.652512000000000203e-01,-3.842745999999999995e+00,-2.628233999999999848e-01,-1.200623999999999914e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-3.814154000000000155e-01,-7.170872999999999831e-01,-8.959158999999999651e+00,-6.715801000000000132e-01,-2.534660000000000135e+00 +-2.096791000000000071e-01,-2.652512000000000203e-01,-3.842745999999999995e+00,-2.628233999999999848e-01,-1.200623999999999914e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +-3.843208000000000180e-01,-6.875609000000000304e-01,-7.043370999999999604e+00,-6.502666000000000279e-01,-2.200623999999999914e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-2.581851000000000007e-01,-3.790555999999999925e-01,-9.962419000000000580e+00,-3.698974999999999902e-01,-2.310954000000000175e+00 +-2.581851000000000007e-01,-3.790555999999999925e-01,-9.962419000000000580e+00,-3.698974999999999902e-01,-2.310954000000000175e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.421659000000000117e-01,1.256146999999999958e-01,4.280027999999999722e+00,1.252946000000000060e-01,1.096443000000000056e+00 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +6.156819999999999654e-02,5.763419999999999654e-02,3.902601999999999904e+00,5.759229999999999905e-02,7.422581999999999791e-01 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-3.814154000000000155e-01,-7.170872999999999831e-01,-8.959158999999999651e+00,-6.715801000000000132e-01,-2.534660000000000135e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +4.014878000000000058e-01,2.998151000000000010e-01,1.208713999999999977e+01,2.955962999999999785e-01,3.096442999999999834e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +7.698180000000000300e-02,7.148079999999999712e-02,2.970444000000000084e+00,7.141540000000000388e-02,6.890456999999999832e-01 +3.933564999999999978e-01,2.852238999999999747e-01,2.493356999999999957e+01,2.803706999999999727e-01,4.742257999999999640e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +5.141310000000000047e-01,3.436040000000000205e-01,4.176901999999999759e+01,3.344771000000000272e-01,7.193529999999999980e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +6.156819999999999654e-02,5.763419999999999654e-02,3.902601999999999904e+00,5.759229999999999905e-02,7.422581999999999791e-01 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +7.251448000000000338e-01,4.443860000000000032e-01,4.596453000000000344e+01,4.271111000000000213e-01,8.742257999999999640e+00 +2.233250999999999986e-01,1.900940000000000130e-01,3.193315999999999821e+00,1.892741000000000007e-01,1.101844000000000046e+00 +2.718267999999999796e-01,2.192536999999999958e-01,8.183585000000000775e+00,2.175746000000000069e-01,2.096442999999999834e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +2.205042999999999864e-01,1.853983999999999910e-01,5.179479999999999862e+00,1.844724000000000086e-01,1.465340000000000087e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +6.156819999999999654e-02,5.763419999999999654e-02,3.902601999999999904e+00,5.759229999999999905e-02,7.422581999999999791e-01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +2.301989999999999939e-02,2.246269999999999864e-02,1.138465999999999978e+00,2.246050000000000130e-02,2.391298000000000035e-01 +1.421659000000000117e-01,1.256146999999999958e-01,4.280027999999999722e+00,1.252946000000000060e-01,1.096443000000000056e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +5.856023000000000200e-01,3.771333000000000046e-01,4.757549000000000206e+01,3.652315999999999896e-01,8.193530000000000868e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +1.192853999999999998e-01,1.062562999999999980e-01,5.899335999999999913e+00,1.060197999999999974e-01,1.239130000000000065e+00 +7.698180000000000300e-02,7.148079999999999712e-02,2.970444000000000084e+00,7.141540000000000388e-02,6.890456999999999832e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +5.141310000000000047e-01,3.436040000000000205e-01,4.176901999999999759e+01,3.344771000000000272e-01,7.193529999999999980e+00 +1.800615000000000077e+00,7.792843999999999882e-01,1.462855000000000132e+02,6.951243000000000283e-01,2.519352999999999909e+01 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +1.445152000000000103e-01,1.252460999999999991e-01,9.160344000000000264e+00,1.248196000000000028e-01,1.742258000000000084e+00 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-3.843208000000000180e-01,-6.875609000000000304e-01,-7.043370999999999604e+00,-6.502666000000000279e-01,-2.200623999999999914e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +2.233250999999999986e-01,1.900940000000000130e-01,3.193315999999999821e+00,1.892741000000000007e-01,1.101844000000000046e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.064210000000000003e-02,2.028869999999999979e-02,2.951598999999999751e-01,2.028759999999999938e-02,1.018440000000000040e-01 +-3.474050000000000055e-02,-3.606560000000000321e-02,-1.340510000000000090e+00,-3.605719999999999759e-02,-3.109543000000000168e-01 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +3.004263999999999823e-01,2.357630000000000003e-01,1.159234999999999971e+01,2.334703999999999946e-01,2.689045999999999825e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-3.435247000000000162e-01,-8.277782999999999669e-01,-2.790861999999999910e+01,-7.299666999999999684e-01,-4.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +1.887041000000000135e-01,1.599530000000000118e-01,7.281399000000000399e+00,1.592269000000000045e-01,1.689046000000000047e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.274623000000000062e-01,1.844012999999999902e-01,1.441808999999999941e+01,1.830546000000000118e-01,2.742258000000000084e+00 +-3.764779999999999793e-01,-7.438232999999999651e-01,-1.133419999999999916e+01,-6.893046000000000451e-01,-2.903557000000000166e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +6.286910999999999472e-01,4.369408000000000181e-01,8.989627999999999730e+00,4.274471000000000243e-01,3.101843999999999824e+00 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +6.286910999999999472e-01,4.369408000000000181e-01,8.989627999999999730e+00,4.274471000000000243e-01,3.101843999999999824e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +1.157372999999999985e+00,5.945905999999999691e-01,9.402724000000000615e+01,5.528035999999999506e-01,1.619352999999999909e+01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-2.096791000000000071e-01,-2.652512000000000203e-01,-3.842745999999999995e+00,-2.628233999999999848e-01,-1.200623999999999914e+00 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.421659000000000117e-01,1.256146999999999958e-01,4.280027999999999722e+00,1.252946000000000060e-01,1.096443000000000056e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +7.698180000000000300e-02,7.148079999999999712e-02,2.970444000000000084e+00,7.141540000000000388e-02,6.890456999999999832e-01 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +3.709842999999999891e-01,2.847433999999999799e-01,8.714138999999999413e+00,2.814483999999999875e-01,2.465339999999999865e+00 +-3.814154000000000155e-01,-7.170872999999999831e-01,-8.959158999999999651e+00,-6.715801000000000132e-01,-2.534660000000000135e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +2.718267999999999796e-01,2.192536999999999958e-01,8.183585000000000775e+00,2.175746000000000069e-01,2.096442999999999834e+00 +-2.096791000000000071e-01,-2.652512000000000203e-01,-3.842745999999999995e+00,-2.628233999999999848e-01,-1.200623999999999914e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-3.847240000000000104e-01,-6.549530000000000074e-01,-5.501152000000000264e+00,-6.250449000000000144e-01,-1.898155999999999954e+00 +7.002440000000000053e-02,6.582540000000000613e-02,1.644819999999999949e+00,6.578340000000000576e-02,4.653404999999999903e-01 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-3.699073999999999973e-01,-7.680327999999999600e-01,-1.427336999999999989e+01,-7.037377000000000216e-01,-3.310954000000000175e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-2.137889999999999929e-02,-2.192300000000000151e-02,-1.355140000000000011e+00,-2.192070000000000130e-02,-2.577418000000000209e-01 +8.000163000000000135e-01,4.675525999999999849e-01,6.499490000000000123e+01,4.458055000000000212e-01,1.119353000000000087e+01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +8.714876000000000289e-01,4.949724999999999819e-01,7.080136000000000251e+01,4.695261000000000018e-01,1.219353000000000087e+01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-2.581851000000000007e-01,-3.790555999999999925e-01,-9.962419000000000580e+00,-3.698974999999999902e-01,-2.310954000000000175e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +2.301989999999999939e-02,2.246269999999999864e-02,1.138465999999999978e+00,2.246050000000000130e-02,2.391298000000000035e-01 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +6.286910999999999472e-01,4.369408000000000181e-01,8.989627999999999730e+00,4.274471000000000243e-01,3.101843999999999824e+00 +-3.474050000000000055e-02,-3.606560000000000321e-02,-1.340510000000000090e+00,-3.605719999999999759e-02,-3.109543000000000168e-01 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +7.285449999999999982e-01,4.388867000000000185e-01,5.918842999999999677e+01,4.206465999999999816e-01,1.019353000000000087e+01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.096791000000000071e-01,-2.652512000000000203e-01,-3.842745999999999995e+00,-2.628233999999999848e-01,-1.200623999999999914e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +1.157372999999999985e+00,5.945905999999999691e-01,9.402724000000000615e+01,5.528035999999999506e-01,1.619352999999999909e+01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-3.699073999999999973e-01,-7.680327999999999600e-01,-1.427336999999999989e+01,-7.037377000000000216e-01,-3.310954000000000175e+00 +1.887041000000000135e-01,1.599530000000000118e-01,7.281399000000000399e+00,1.592269000000000045e-01,1.689046000000000047e+00 +-2.096791000000000071e-01,-2.652512000000000203e-01,-3.842745999999999995e+00,-2.628233999999999848e-01,-1.200623999999999914e+00 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.096791000000000071e-01,-2.652512000000000203e-01,-3.842745999999999995e+00,-2.628233999999999848e-01,-1.200623999999999914e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +1.085901000000000005e+00,5.710009999999999808e-01,8.822077000000000169e+01,5.334980000000000278e-01,1.519353000000000087e+01 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +1.396043999999999896e-01,1.248781000000000058e-01,2.558501999999999832e+00,1.246199000000000057e-01,7.993759000000000281e-01 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +4.121486999999999790e-01,3.025489000000000095e-01,1.590330999999999939e+01,2.977831000000000228e-01,3.689045999999999825e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +1.887041000000000135e-01,1.599530000000000118e-01,7.281399000000000399e+00,1.592269000000000045e-01,1.689046000000000047e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +4.260081000000000007e-01,3.243348999999999815e-01,6.091472000000000442e+00,3.203501999999999739e-01,2.101843999999999824e+00 +1.157372999999999985e+00,5.945905999999999691e-01,9.402724000000000615e+01,5.528035999999999506e-01,1.619352999999999909e+01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +1.445152000000000103e-01,1.252460999999999991e-01,9.160344000000000264e+00,1.248196000000000028e-01,1.742258000000000084e+00 +-3.474050000000000055e-02,-3.606560000000000321e-02,-1.340510000000000090e+00,-3.605719999999999759e-02,-3.109543000000000168e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-2.581851000000000007e-01,-3.790555999999999925e-01,-9.962419000000000580e+00,-3.698974999999999902e-01,-2.310954000000000175e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +1.445152000000000103e-01,1.252460999999999991e-01,9.160344000000000264e+00,1.248196000000000028e-01,1.742258000000000084e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +8.838129999999999598e-02,8.266170000000000462e-02,9.860126000000000168e-01,8.260000000000000675e-02,3.757281000000000093e-01 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-3.764779999999999793e-01,-7.438232999999999651e-01,-1.133419999999999916e+01,-6.893046000000000451e-01,-2.903557000000000166e+00 +2.064210000000000003e-02,2.028869999999999979e-02,2.951598999999999751e-01,2.028759999999999938e-02,1.018440000000000040e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.192853999999999998e-01,1.062562999999999980e-01,5.899335999999999913e+00,1.060197999999999974e-01,1.239130000000000065e+00 +3.004263999999999823e-01,2.357630000000000003e-01,1.159234999999999971e+01,2.334703999999999946e-01,2.689045999999999825e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +2.301989999999999939e-02,2.246269999999999864e-02,1.138465999999999978e+00,2.246050000000000130e-02,2.391298000000000035e-01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-3.620419000000000276e-01,-7.899543999999999455e-01,-1.790501000000000076e+01,-7.151566999999999785e-01,-3.760870000000000157e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +5.856023000000000200e-01,3.771333000000000046e-01,4.757549000000000206e+01,3.652315999999999896e-01,8.193530000000000868e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +5.856023000000000200e-01,3.771333000000000046e-01,4.757549000000000206e+01,3.652315999999999896e-01,8.193530000000000868e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +7.002440000000000053e-02,6.582540000000000613e-02,1.644819999999999949e+00,6.578340000000000576e-02,4.653404999999999903e-01 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +1.421659000000000117e-01,1.256146999999999958e-01,4.280027999999999722e+00,1.252946000000000060e-01,1.096443000000000056e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-2.096791000000000071e-01,-2.652512000000000203e-01,-3.842745999999999995e+00,-2.628233999999999848e-01,-1.200623999999999914e+00 +1.421659000000000117e-01,1.256146999999999958e-01,4.280027999999999722e+00,1.252946000000000060e-01,1.096443000000000056e+00 +1.228844000000000047e+00,6.174317999999999751e-01,9.983371999999999957e+01,5.712509000000000059e-01,1.719352999999999909e+01 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +-2.581851000000000007e-01,-3.790555999999999925e-01,-9.962419000000000580e+00,-3.698974999999999902e-01,-2.310954000000000175e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +7.698180000000000300e-02,7.148079999999999712e-02,2.970444000000000084e+00,7.141540000000000388e-02,6.890456999999999832e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +5.238709000000000282e-01,3.625683000000000100e-01,2.021425999999999945e+01,3.545109000000000177e-01,4.689046000000000269e+00 +6.355933000000000277e-01,4.173168999999999906e-01,2.452522000000000091e+01,4.052556999999999965e-01,5.689046000000000269e+00 +-2.657764000000000237e-01,-4.100574000000000163e-01,-1.314414000000000016e+01,-3.974823000000000106e-01,-2.760870000000000157e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-3.620419000000000276e-01,-7.899543999999999455e-01,-1.790501000000000076e+01,-7.151566999999999785e-01,-3.760870000000000157e+00 +3.004263999999999823e-01,2.357630000000000003e-01,1.159234999999999971e+01,2.334703999999999946e-01,2.689045999999999825e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +3.933564999999999978e-01,2.852238999999999747e-01,2.493356999999999957e+01,2.803706999999999727e-01,4.742257999999999640e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +2.052297999999999956e+00,8.591706999999999539e-01,1.300884000000000071e+02,7.594912999999999803e-01,2.474226000000000170e+01 +7.698180000000000300e-02,7.148079999999999712e-02,2.970444000000000084e+00,7.141540000000000388e-02,6.890456999999999832e-01 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-2.309354999999999880e-01,-3.070077999999999974e-01,-5.424498999999999960e+00,-3.028983000000000092e-01,-1.534659999999999913e+00 +6.570736000000000354e-01,4.088127999999999762e-01,5.338195000000000334e+01,3.938633999999999746e-01,9.193530000000000868e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-2.137889999999999929e-02,-2.192300000000000151e-02,-1.355140000000000011e+00,-2.192070000000000130e-02,-2.577418000000000209e-01 +1.187454999999999927e+00,6.717912999999999801e-01,2.176225000000000165e+01,6.367920000000000247e-01,6.799375999999999642e+00 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +4.426596999999999893e-01,3.079182999999999781e-01,3.596255000000000024e+01,3.012597000000000191e-01,6.193529999999999980e+00 +1.567745000000000111e-01,1.335630999999999902e-01,1.273667000000000016e+01,1.329933000000000087e-01,2.193529999999999980e+00 +6.156819999999999654e-02,5.763419999999999654e-02,3.902601999999999904e+00,5.759229999999999905e-02,7.422581999999999791e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +7.698180000000000300e-02,7.148079999999999712e-02,2.970444000000000084e+00,7.141540000000000388e-02,6.890456999999999832e-01 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +7.002440000000000053e-02,6.582540000000000613e-02,1.644819999999999949e+00,6.578340000000000576e-02,4.653404999999999903e-01 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +7.285449999999999982e-01,4.388867000000000185e-01,5.918842999999999677e+01,4.206465999999999816e-01,1.019353000000000087e+01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +7.002440000000000053e-02,6.582540000000000613e-02,1.644819999999999949e+00,6.578340000000000576e-02,4.653404999999999903e-01 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +5.141310000000000047e-01,3.436040000000000205e-01,4.176901999999999759e+01,3.344771000000000272e-01,7.193529999999999980e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +1.887041000000000135e-01,1.599530000000000118e-01,7.281399000000000399e+00,1.592269000000000045e-01,1.689046000000000047e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +4.080817999999999945e-01,2.968036000000000008e-01,2.018195000000000050e+01,2.918473999999999791e-01,4.239130000000000287e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +7.002440000000000053e-02,6.582540000000000613e-02,1.644819999999999949e+00,6.578340000000000576e-02,4.653404999999999903e-01 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-3.699073999999999973e-01,-7.680327999999999600e-01,-1.427336999999999989e+01,-7.037377000000000216e-01,-3.310954000000000175e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +3.104094000000000020e-01,2.372537999999999869e-01,1.967583000000000126e+01,2.344215000000000049e-01,3.742258000000000084e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +4.260081000000000007e-01,3.243348999999999815e-01,6.091472000000000442e+00,3.203501999999999739e-01,2.101843999999999824e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +8.530319999999999570e-02,7.769130000000000480e-02,6.930196999999999719e+00,7.757830000000000281e-02,1.193529999999999980e+00 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-3.503730000000000039e-02,-3.618989999999999707e-02,-6.421223000000000347e-01,-3.618360000000000326e-02,-2.006240999999999997e-01 +2.718267999999999796e-01,2.192536999999999958e-01,8.183585000000000775e+00,2.175746000000000069e-01,2.096442999999999834e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +-3.531673000000000173e-01,-8.098043000000000324e-01,-2.238610999999999862e+01,-7.238196999999999548e-01,-4.257742000000000360e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +2.229442000000000146e+00,8.831845999999999863e-01,1.811243000000000052e+02,7.685497999999999497e-01,3.119352999999999909e+01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +3.711883999999999739e-01,2.696834000000000175e-01,3.015607999999999933e+01,2.651503000000000054e-01,5.193529999999999980e+00 +7.285449999999999982e-01,4.388867000000000185e-01,5.918842999999999677e+01,4.206465999999999816e-01,1.019353000000000087e+01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +-3.820721999999999730e-01,-6.189419000000000448e-01,-4.262531000000000070e+00,-5.955721999999999960e-01,-1.624271999999999938e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +-2.702202000000000215e-01,-4.381294000000000022e-01,-1.712836000000000070e+01,-4.215282000000000195e-01,-3.257741999999999916e+00 +-7.324550000000000505e-02,-7.990869999999999918e-02,-3.622403999999999957e+00,-7.980790000000000106e-02,-7.608702000000000520e-01 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +8.313741999999999521e-01,5.349441000000000335e-01,1.188777999999999935e+01,5.179964000000000235e-01,4.101843999999999824e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +2.205042999999999864e-01,1.853983999999999910e-01,5.179479999999999862e+00,1.844724000000000086e-01,1.465340000000000087e+00 +2.064210000000000003e-02,2.028869999999999979e-02,2.951598999999999751e-01,2.028759999999999938e-02,1.018440000000000040e-01 +-1.695109999999999950e-01,-2.135405999999999971e-01,-8.383274000000000115e+00,-2.116547000000000012e-01,-1.760869999999999935e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +5.141310000000000047e-01,3.436040000000000205e-01,4.176901999999999759e+01,3.344771000000000272e-01,7.193529999999999980e+00 +4.426596999999999893e-01,3.079182999999999781e-01,3.596255000000000024e+01,3.012597000000000191e-01,6.193529999999999980e+00 +-2.581851000000000007e-01,-3.790555999999999925e-01,-9.962419000000000580e+00,-3.698974999999999902e-01,-2.310954000000000175e+00 +4.426596999999999893e-01,3.079182999999999781e-01,3.596255000000000024e+01,3.012597000000000191e-01,6.193529999999999980e+00 +2.155508999999999897e-01,1.777640000000000053e-01,1.066020999999999930e+01,1.766681999999999975e-01,2.239129999999999843e+00 +-3.764779999999999793e-01,-7.438232999999999651e-01,-1.133419999999999916e+01,-6.893046000000000451e-01,-2.903557000000000166e+00 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +2.155508999999999897e-01,1.777640000000000053e-01,1.066020999999999930e+01,1.766681999999999975e-01,2.239129999999999843e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.468454999999999899e-01,-1.682093000000000060e-01,-1.638258999999999910e+00,-1.676931999999999867e-01,-6.242718999999999907e-01 +-8.045549999999999924e-02,-8.733109999999999484e-02,-1.889839000000000047e+00,-8.723329999999999973e-02,-5.346594999999999542e-01 +1.887041000000000135e-01,1.599530000000000118e-01,7.281399000000000399e+00,1.592269000000000045e-01,1.689046000000000047e+00 +-2.137889999999999929e-02,-2.192300000000000151e-02,-1.355140000000000011e+00,-2.192070000000000130e-02,-2.577418000000000209e-01 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +-2.096791000000000071e-01,-2.652512000000000203e-01,-3.842745999999999995e+00,-2.628233999999999848e-01,-1.200623999999999914e+00 +7.698180000000000300e-02,7.148079999999999712e-02,2.970444000000000084e+00,7.141540000000000388e-02,6.890456999999999832e-01 +-1.464628000000000041e-01,-1.755713000000000135e-01,-5.651463999999999821e+00,-1.746134000000000019e-01,-1.310953999999999953e+00 +-2.096791000000000071e-01,-2.652512000000000203e-01,-3.842745999999999995e+00,-2.628233999999999848e-01,-1.200623999999999914e+00 +-3.699073999999999973e-01,-7.680327999999999600e-01,-1.427336999999999989e+01,-7.037377000000000216e-01,-3.310954000000000175e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-2.581851000000000007e-01,-3.790555999999999925e-01,-9.962419000000000580e+00,-3.698974999999999902e-01,-2.310954000000000175e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 +-3.764779999999999793e-01,-7.438232999999999651e-01,-1.133419999999999916e+01,-6.893046000000000451e-01,-2.903557000000000166e+00 +-2.581851000000000007e-01,-3.790555999999999925e-01,-9.962419000000000580e+00,-3.698974999999999902e-01,-2.310954000000000175e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-3.474050000000000055e-02,-3.606560000000000321e-02,-1.340510000000000090e+00,-3.605719999999999759e-02,-3.109543000000000168e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +2.997171000000000141e-01,2.283850000000000047e-01,2.434960999999999842e+01,2.255968999999999891e-01,4.193529999999999980e+00 +-1.171559999999999963e-01,-1.336393999999999915e-01,-3.527085000000000026e+00,-1.332541999999999893e-01,-9.035568000000000488e-01 +-3.531673000000000173e-01,-8.098043000000000324e-01,-2.238610999999999862e+01,-7.238196999999999548e-01,-4.257742000000000360e+00 +-2.468170000000000086e-01,-3.448183000000000220e-01,-7.430641999999999747e+00,-3.384757999999999933e-01,-1.903556999999999944e+00 +1.887041000000000135e-01,1.599530000000000118e-01,7.281399000000000399e+00,1.592269000000000045e-01,1.689046000000000047e+00 +1.192853999999999998e-01,1.062562999999999980e-01,5.899335999999999913e+00,1.060197999999999974e-01,1.239130000000000065e+00 +1.250489999999999935e-02,1.235319999999999994e-02,3.764715000000000145e-01,1.235289999999999999e-02,9.644320000000000670e-02 +2.282457999999999987e-01,1.833316999999999863e-01,1.854314000000000107e+01,1.818726999999999983e-01,3.193529999999999980e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +1.383189999999999940e-02,1.360699999999999930e-02,1.123726999999999920e+00,1.360629999999999999e-02,1.935302000000000133e-01 +-1.820410000000000084e-01,-2.191365999999999870e-01,-2.602996000000000087e+00,-2.178854000000000068e-01,-8.981559999999999544e-01 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-2.720534000000000008e-01,-4.635484999999999745e-01,-2.210215000000000174e+01,-4.423134000000000232e-01,-3.806470000000000020e+00 +4.426596999999999893e-01,3.079182999999999781e-01,3.596255000000000024e+01,3.012597000000000191e-01,6.193529999999999980e+00 +-2.005821000000000132e-01,-2.790536000000000127e-01,-1.629568000000000083e+01,-2.740469999999999851e-01,-2.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-1.291107999999999978e-01,-1.555565999999999893e-01,-1.048920999999999992e+01,-1.546600999999999948e-01,-1.806470000000000020e+00 +-5.763950000000000323e-02,-6.211420000000000136e-02,-4.682743000000000322e+00,-6.205639999999999767e-02,-8.064698000000000144e-01 +5.311487999999999765e-01,3.710235000000000061e-01,1.599070000000000036e+01,3.631816999999999962e-01,4.096442999999999834e+00 +1.396043999999999896e-01,1.248781000000000058e-01,2.558501999999999832e+00,1.246199000000000057e-01,7.993759000000000281e-01 +-1.043260000000000021e-01,-1.196085999999999955e-01,-6.612881999999999927e+00,-1.192368000000000039e-01,-1.257741999999999916e+00 +2.155508999999999897e-01,1.777640000000000053e-01,1.066020999999999930e+01,1.766681999999999975e-01,2.239129999999999843e+00 +-1.872730999999999979e-01,-2.479215999999999920e-01,-1.187062000000000062e+01,-2.446991000000000027e-01,-2.257741999999999916e+00 diff --git a/statsmodels/genmod/tests/results/poisson_weights_v2.do b/statsmodels/genmod/tests/results/poisson_weights_v2.do new file mode 100644 index 0000000..31cc0a0 --- /dev/null +++ b/statsmodels/genmod/tests/results/poisson_weights_v2.do @@ -0,0 +1,447 @@ +clear +tempname filename +local filename = "M:\josef_new\stata_work\results_glm_poisson_weights.py" + +insheet using M:\josef_new\eclipse_ws\statsmodels\statsmodels_py34_pr\statsmodels\datasets\cpunish\cpunish.csv +generate LN_VC100k96 = log(vc100k96) +generate var10 = 1 in 1 +replace var10 = 1 in 2 +replace var10 = 1 in 3 +replace var10 = 2 in 4 +replace var10 = 2 in 5 +replace var10 = 2 in 6 +replace var10 = 3 in 7 +replace var10 = 3 in 8 +replace var10 = 3 in 9 +replace var10 = 1 in 10 +replace var10 = 1 in 11 +replace var10 = 1 in 12 +replace var10 = 2 in 13 +replace var10 = 2 in 14 +replace var10 = 2 in 15 +replace var10 = 3 in 16 +replace var10 = 3 in 17 +label variable var10 "fweight" +rename var10 fweight +label variable LN_VC100k96 "LN_VC100k96" + +/* for checkin Poisson produces the same, poisson doesn't allow aweights */ +/*poisson executions income perpoverty perblack LN_VC100k96 south degree */ + + +glm executions income perpoverty perblack LN_VC100k96 south degree, family(poisson) + +/* copied from glm_logit_constrained.do */ +/*glm grade gpa tuce psi, family(binomial) constraints(2) */ + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, mu +predict predict_linpred_std, stdp +predict predict_hat, hat + +predict score_factor, score +predict resid_anscombe, anscombe +predict resid_deviance, deviance +predict resid_response, response +predict resid_pearson, pearson +predict resid_working, working + +local pred predict_mu predict_linpred_std predict_hat +local res score_factor resid_response resid_anscombe resid_deviance resid_pearson resid_working +mkmat `res', matrix(resids) +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted resids, saving(`filename') format("%16.0g") resname("poisson_none_nonrobust") replace +/*------------------*/ + +drop `pred' `res' + + +glm executions income perpoverty perblack LN_VC100k96 south degree [fweight=fweight], family(poisson) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, mu +predict predict_linpred_std, stdp +predict predict_hat, hat + +predict score_factor, score +predict resid_anscombe, anscombe +predict resid_deviance, deviance +predict resid_response, response +predict resid_pearson, pearson +predict resid_working, working + +local pred predict_mu predict_linpred_std predict_hat +local res score_factor resid_response resid_anscombe resid_deviance resid_pearson resid_working +mkmat `res', matrix(resids) +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted resids, saving(`filename') format("%16.0g") resname("poisson_fweight_nonrobust") append + +/*------------------*/ + +drop `pred' `res' + +glm executions income perpoverty perblack LN_VC100k96 south degree [aweight=fweight], family(poisson) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, mu +predict predict_linpred_std, stdp +predict predict_hat, hat + +predict score_factor, score +predict resid_anscombe, anscombe +predict resid_deviance, deviance +predict resid_response, response +predict resid_pearson, pearson +predict resid_working, working + +local pred predict_mu predict_linpred_std predict_hat +local res score_factor resid_response resid_anscombe resid_deviance resid_pearson resid_working +mkmat `res', matrix(resids) +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted resids, saving(`filename') format("%16.0g") resname("poisson_aweight_nonrobust") append +/*------------------*/ + + +drop `pred' `res' + +glm executions income perpoverty perblack LN_VC100k96 south degree [pweight=fweight], family(poisson) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) + +predict predict_mu, mu +predict predict_linpred_std, stdp +//predict predict_hat, hat not allowed after robust, pweights implies HC1 + +predict score_factor, score +predict resid_anscombe, anscombe +predict resid_deviance, deviance +predict resid_response, response +predict resid_pearson, pearson +predict resid_working, working + +local pred predict_mu predict_linpred_std //predict_hat +local res score_factor resid_response resid_anscombe resid_deviance resid_pearson resid_working +mkmat `res', matrix(resids) +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted resids, saving(`filename') format("%16.0g") resname("poisson_pweight_nonrobust") append +/*------------------*/ + +/*******************************************************************/ +/*********** next with robust = HC1, don't save resid and similar */ + +drop `pred' `res' +glm executions income perpoverty perblack LN_VC100k96 south degree, family(poisson) vce(robust) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, mu +predict predict_linpred_std, stdp +//predict predict_hat, hat + +local pred predict_mu predict_linpred_std //predict_hat +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted, saving(`filename') format("%16.0g") resname("poisson_none_hc1") append +/*------------------*/ + +drop `pred' + +glm executions income perpoverty perblack LN_VC100k96 south degree [fweight=fweight], family(poisson) vce(robust) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, mu +predict predict_linpred_std, stdp +//predict predict_hat, hat + +local pred predict_mu predict_linpred_std //predict_hat +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted, saving(`filename') format("%16.0g") resname("poisson_fweight_hc1") append +/*------------------*/ + +drop `pred' + +glm executions income perpoverty perblack LN_VC100k96 south degree [aweight=fweight], family(poisson) vce(robust) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, mu +predict predict_linpred_std, stdp +//predict predict_hat, hat + +local pred predict_mu predict_linpred_std //predict_hat +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted, saving(`filename') format("%16.0g") resname("poisson_aweight_hc1") append +/*------------------*/ + + +drop `pred' + +glm executions income perpoverty perblack LN_VC100k96 south degree [pweight=fweight], family(poisson) vce(robust) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, mu +predict predict_linpred_std, stdp +//predict predict_hat, hat + +local pred predict_mu predict_linpred_std //predict_hat +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted, saving(`filename') format("%16.0g") resname("poisson_pweight_hc1") append +/*------------------*/ + + + + +/*****************************************************************/ +/*************************** with cluster robust standard errors */ +gen id = (_n - mod(_n, 2)) / 2 + +drop `pred' +glm executions income perpoverty perblack LN_VC100k96 south degree, family(poisson) vce(cluster id) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, mu +predict predict_linpred_std, stdp +//predict predict_hat, hat + +local pred predict_mu predict_linpred_std //predict_hat +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted, saving(`filename') format("%16.0g") resname("poisson_none_clu1") append +/*------------------*/ + +drop `pred' + +glm executions income perpoverty perblack LN_VC100k96 south degree [fweight=fweight], family(poisson) vce(cluster id) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, mu +predict predict_linpred_std, stdp +//predict predict_hat, hat + +local pred predict_mu predict_linpred_std //predict_hat +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted, saving(`filename') format("%16.0g") resname("poisson_fweight_clu1") append +/*------------------*/ + +drop `pred' + +glm executions income perpoverty perblack LN_VC100k96 south degree [aweight=fweight], family(poisson) vce(cluster id) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, mu +predict predict_linpred_std, stdp +//predict predict_hat, hat + +local pred predict_mu predict_linpred_std //predict_hat +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted, saving(`filename') format("%16.0g") resname("poisson_aweight_clu1") append +/*------------------*/ + + +drop `pred' + +glm executions income perpoverty perblack LN_VC100k96 south degree [pweight=fweight], family(poisson) vce(cluster id) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, mu +predict predict_linpred_std, stdp +//predict predict_hat, hat + +local pred predict_mu predict_linpred_std //predict_hat +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted, saving(`filename') format("%16.0g") resname("poisson_pweight_clu1") append +/*------------------*/ + + + +/*****************************************************************/ +/* +gen idn = _n +glm executions income perpoverty perblack LN_VC100k96 south degree, family(poisson) vce(cluster idn) +*/ + +/* +glm grade gpa tuce psi, family(binomial) constraints(2) vce(robust) +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +estmat2nparray params_table cov infocrit, saving(`filename') format("%16.0g") resname("constraint2_robust") append +/*------------------*/ + + +capture drop fittedvalues fittedvalues_se +predict fittedvalues, xb +predict fittedvalues_se, stdp +outsheet fittedvalues fittedvalues_se using theil_predict.csv, comma replace +/*------------------*/ + +glm executions income perpoverty perblack LN_VC100k96 south degree [aweight=fweight], family(poisson) +predict resid_deviance_aw, deviance + + +*/ + +/*------------------*/ + +drop `pred' + +regress executions income perpoverty perblack LN_VC100k96 south degree [aweight=fweight], vce(robust) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, xb +predict predict_std, stdp +//predict predict_stf, stdf +//predict predict_str, stdr +//predict predict_hat, hat + +local pred predict_mu predict_std //predict_stf predict_str predict_hat +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted, saving(`filename') format("%16.0g") resname("wls_aweight_robust") append +/*------------------*/ + +drop `pred' + +regress executions income perpoverty perblack LN_VC100k96 south degree [aweight=fweight], vce(cluster id) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, xb +predict predict_std, stdp +//predict predict_stf, stdf +//predict predict_str, stdr +//predict predict_hat, hat + +local pred predict_mu predict_std //predict_stf predict_str predict_hat +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted, saving(`filename') format("%16.0g") resname("wls_aweight_clu1") append +/*------------------*/ + + +drop `pred' + +regress executions income perpoverty perblack LN_VC100k96 south degree [fweight=fweight], vce(cluster id) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, xb +predict predict_std, stdp +//predict predict_stf, stdf +//predict predict_str, stdr +//predict predict_hat, hat + +local pred predict_mu predict_std //predict_stf predict_str predict_hat +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted, saving(`filename') format("%16.0g") resname("wls_fweight_clu1") append +/*------------------*/ + +drop `pred' + +regress executions income perpoverty perblack LN_VC100k96 south degree [pweight=fweight], vce(cluster id) + +/* boiler plate, add matrices if needed */ +tempname cov +tempname params_table +matrix cov = e(V) +matrix params_table = r(table)' +estat ic +matrix infocrit = r(S) +predict predict_mu, xb +predict predict_std, stdp +//predict predict_stf, stdf +//predict predict_str, stdr +//predict predict_hat, hat + +local pred predict_mu predict_std //predict_stf predict_str predict_hat +mkmat `pred', matrix(predicted) +estmat2nparray params_table cov infocrit predicted, saving(`filename') format("%16.0g") resname("wls_pweight_clu1") append +/*------------------*/ + +drop `pred' diff --git a/statsmodels/genmod/tests/results/res_R_var_weight.py b/statsmodels/genmod/tests/results/res_R_var_weight.py new file mode 100644 index 0000000..c7aabb8 --- /dev/null +++ b/statsmodels/genmod/tests/results/res_R_var_weight.py @@ -0,0 +1,144 @@ +# This file auto-generated by test_get_R_tweedie_var_weight.R +# Using: R version 3.5.1 (2018-07-02) +import numpy as np +import pandas as pd +import os + +from statsmodels.tools.tools import Bunch + +path = os.path.abspath(__file__) +dir_path = os.path.dirname(path) + + +res = dict() +res['params'] = np.array([ + 0.74699331283637337986, -0.031592165334818379796, -0.021959412079720488226 +]) +res['bse'] = np.array([ + 0.25438368514036091561, 0.011629899831763365614, 0.011034604276375996681 +]) +res['deviance'] = 45399.238887 +res['ll'] = np.nan +res['resids_colnames'] = [ + 'resid_response', 'resid_pearson', 'resid_deviance', 'resid_working'] +csv_path = os.path.join(dir_path, 'results_tweedie_aweights_nonrobust.csv') +resids = np.array(pd.read_csv(csv_path)) +res['resids'] = resids +results_tweedie_aweights_nonrobust = Bunch(**res) + +res = dict() +res['params'] = np.array([ + 4.3171222692811204169, -0.038835175525200764379, 0.54097404989168318412, + 1.0560051456310013407]) +res['bse'] = np.array([ + 0.80693035378427380166, 0.013827354415809251648, 0.18432033392178892584, + 0.186384917449112536]) +res['deviance'] = 28.440959 +res['ll'] = -301.601118 +res['resids_colnames'] = [ + 'resid_response', 'resid_pearson', 'resid_deviance', 'resid_working'] +res['resids'] = np.array([ + -6.0158828841102272023, -5.0064618225897614678, -5.5825299715106844189, + -6.9511999508118442748, -4.5194555811187591132, -1.557595268795654242, + -1.4915816790031248829, -2.8827914717229985442, -0.51945558111875911322, + 0.11720852827700145582, -1.9511999508118442748, -3.1808072343012465666, + 0.24507818532437042336, 2.1431814907569695094, 0.81919276569875343341, + 5.2513574111143244139, 4.6547413066088410005, 5.8191927656987534334, + 13.805056937442099496, 13.048800049188155725, -3.5461655328997796488, + -4.3171742547402551793, -6.5401065768334341044, -5.6336912448773173168, + -9.2050394978136971247, -1.0510357685093119073, 1.4079973153855167567, + -3.4735049910420947583, 6.4538344671002203512, 0.52649500895790524169, + 4.7868274865566906584, 8.4598934231665658956, 2.2438400124908675082, + 14.907031299164781757, -19.462143004837859195, -16.470421414020314899, + -3.9684071475551156993, -13.14329303600413823, 1.3380516354871438978, + -5.9189306482160155554, -0.46214300483785919482, 4.4406584647078979344, + -5.4161390946438174865, 7.5077293157326110418, 12.031592852444884301, + 14.598574701805357989, 1.5838609053561825135, 10.391659888606849194, + -1.4851751347306552109, -0.83351263530235220056, -0.73623579365799252106, + -0.69852881915459330564, -0.5304864305103017541, -0.62668991425384801275, + -0.22977168781956672228, -0.36570693035127138648, -0.060972861020603522086, + 0.014868911437965813202, -0.4384411678265578427, -0.2844881561451974572, + 0.022787537608125515293, 0.41912332605193491908, 0.07326776578220378644, + 1.7399635542616316286, 0.44993957566111131285, 0.52046266819145536875, + 1.6845824104033622071, 1.3112790531481182121, -0.83064421664412402269, + -0.41844541423313824646, -0.48301736324758975938, -0.38498087397118291308, + -0.4793033359218865086, -0.19501953776552996556, 0.21037977246201788883, + -0.18802631080168147326, 0.67606563544889408668, 0.028500006317870137801, + 0.70357919408636093728, 0.62480257265043215309, 0.10810477534578602499, + 0.87211481867607798524, -0.76435604815902624676, -1.3913258623193209829, + -0.18925649047299358818, -0.40889690490896990482, 0.059043980418843691749, + -0.33157319461752626788, -0.040585082486855973694, 0.1884882248536425553, + -0.16208153429406677026, 0.30653463749913562042, 0.57379622437595356743, + 1.6825261498124608472, 0.047398082132416530232, 0.36323882644517407892, + -2.5581754807831980081, -1.3851521395433199491, -1.0922123777693948377, + -1.0005518818611833787, -0.67167201555474287389, -0.69718647545513146024, + -0.25018637428846979276, -0.42317194149448128515, -0.062258126689424299338, + 0.014795849256191397764, -0.47090072427136225874, -0.31707718530745676588, + 0.022616711999637318514, 0.38940961248878158685, 0.071551164078391196743, + 1.4232712112275127669, 0.39602447412952324068, 0.45043976885155773138, + 1.1807262353227552243, 0.97311662116074171269, -0.96387085778973813355, + -0.4972022256055589895, -0.59452271009315738048, -0.449713327474644875, + -0.58870075509045161066, -0.20099628504835270748, 0.20241883427909049264, + -0.20130092403600013951, 0.56500703038717148274, 0.028233670119025004036, + 0.64093348203300071209, 0.52804594118935443969, 0.10443781791098502576, + 0.70006586509944224161, -1.1671137422196677935, -1.8740944537491481814, + -0.20271679195797467909, -0.48346236689503357953, 0.057920368116502723987, + -0.35546257706309924984, -0.040833257924115747006, 0.1777983388792870878, + -0.17177278732799597383, 0.27984395723434191128, 0.4905212458386473684, + 1.3835988461755979184, 0.046669269235505038418, 0.32672761718963955202, + -0.85746626383048263342, -0.83351263530235220056, -0.73623579365799252106, + -0.69852881915459330564, -0.5304864305103017541, -0.28026424981702369177, + -0.22977168781956672228, -0.36570693035127138648, -0.060972861020603522086, + 0.014868911437965813202, -0.19607685107891539844, -0.2844881561451974572, + 0.022787537608125515293, 0.2419809651197359357, 0.07326776578220378644, + 0.77813535714023041034, 0.44993957566111131285, 0.52046266819145536875, + 1.6845824104033622071, 1.3112790531481182121, -0.37147538670666468974, + -0.41844541423313824646, -0.48301736324758975938, -0.38498087397118291308, + -0.4793033359218865086, -0.087215388676862487527, 0.12146281826299824835, + -0.18802631080168147326, 0.67606563544889408668, 0.028500006317870137801, + 0.31465018110632420045, 0.62480257265043215309, 0.10810477534578602499, + 0.87211481867607798524, -0.76435604815902624676, -0.62221984139990293983, + -0.18925649047299358818, -0.40889690490896990482, 0.059043980418843691749, + -0.19143387316849300173, -0.018150200662609233121, 0.1884882248536425553, + -0.16208153429406677026, 0.30653463749913562042, 0.57379622437595356743, + 0.75244856898033141146, 0.047398082132416530232, 0.36323882644517407892 +]).reshape((48, 4), order="F") +results_gamma_aweights_nonrobust = Bunch(**res) + +res = dict() +res['params'] = np.array([ + 0.019083886775238277644, 0.93993818789790006818 +]) +res['bse'] = np.array([ + 0.021677622811348211396, 0.82525357389082676374 +]) +res['deviance'] = 1248.273065 +res['ll'] = -52.674985 +res['resids_colnames'] = [ + 'resid_response', 'resid_pearson', 'resid_deviance', 'resid_working'] +res['resids'] = np.array([ + 32.059654149533187706, 3.3448403477511448045, 4.0197139294873869275, + -0.28159357985674304814, -1.6667828494180003673, 0.13880513444962283565, + -0.18150652396610489347, -2.9789626432480238449, -1.2529678442364695634, + -3.7054159544565843376, -1.0424256120017099114, -0.88813363987303950431, + -3.7241309801112230105, -1.3985915365753158746, -0.9406665144733470374, + -0.76290530967944270024, -1.0174777728628758844, 32.059654149533187706, + 4.7303185837624086574, 6.9623487577644933566, -0.56318715971348609628, + -3.7270397550294447342, 0.27761026889924567129, -0.31437852141451172461, + -4.2128893718841595728, -1.2529678442364695634, -5.2402494970261486174, + -1.8055341230980426204, -1.7762672797460790086, -8.3274100286416121719, + -2.7971830731506317491, -1.6292821960465615483, -1.0789110357551139341, + -1.0174777728628758844, 32.059654149533187706, 4.7303185837624086574, + 6.9623487577644942448, -0.56318715971348609628, -3.7270397550294447342, + 0.27761026889924567129, -0.31437852141451178012, -4.2128893718841595728, + -1.2529678442364695634, -5.2402494970261477292, -1.8055341230980428424, + -1.7762672797460790086, -8.3274100286416121719, -2.7971830731506317491, + -1.6292821960465617703, -1.0789110357551139341, -1.0174777728628758844, + 6.4893542112044375614, 0.59146700596171875031, 2.0298652751957457774, + -0.065768404825141027481, -0.35715886151117287595, 0.07457850707565569226, + -0.083202375043149326417, -0.5983099004142555799, -0.55614102413481192322, + -0.78747893710589345062, -0.5103860849943342437, -0.47037647183319014621, + -0.78832085642628468847, -0.58308866484712540412, -0.48471311658027066427, + -0.43275455890377079182, -0.50433158994313831425 +]).reshape((17, 4), order="F") +results_gaussian_aweights_nonrobust = Bunch(**res) diff --git a/statsmodels/genmod/tests/results/results_glm.py b/statsmodels/genmod/tests/results/results_glm.py new file mode 100644 index 0000000..df4b49c --- /dev/null +++ b/statsmodels/genmod/tests/results/results_glm.py @@ -0,0 +1,4206 @@ +""" +Results for test_glm.py. + +Hard-coded from R or Stata. Note that some of the remaining discrepancy vs. +Stata may be because Stata uses ML by default unless you specifically ask for +IRLS. +""" +import numpy as np +import pandas as pd +from statsmodels.compat.python import asbytes +from statsmodels.compat.numpy import NP_LT_113 +from . import glm_test_resids +import os +from statsmodels.api import add_constant, categorical + +# for genfromtxt changes +import sys +PY2 = (sys.version_info[0] < 3) + +# Test Precisions +DECIMAL_4 = 4 +DECIMAL_3 = 3 +DECIMAL_2 = 2 +DECIMAL_1 = 1 +DECIMAL_0 = 0 + + +class Longley(object): + """ + Longley used for TestGlmGaussian + + Results are from Stata and R. + """ + def __init__(self): + + self.resids = np.array([ + [267.34002976, 267.34002976, 267.34002976, + 267.34002976, 267.34002976], + [-94.0139424, -94.0139424, -94.0139424, -94.0139424, + -94.0139424], + [46.28716776, 46.28716776, 46.28716776, 46.28716776, + 46.28716776], + [-410.11462193, -410.11462193, -410.11462193, -410.11462193, + -410.11462193], + [309.71459076, 309.71459076, 309.71459076, 309.71459076, + 309.71459076], + [-249.31121533, -249.31121533, -249.31121533, -249.31121533, + -249.31121533], + [-164.0489564, -164.0489564, -164.0489564, -164.0489564, + -164.0489564], + [-13.18035687, -13.18035687, -13.18035687, -13.18035687, + -13.18035687], + [14.3047726, 14.3047726, 14.3047726, 14.3047726, + 14.3047726], + [455.39409455, 455.39409455, 455.39409455, 455.39409455, + 455.39409455], + [-17.26892711, -17.26892711, -17.26892711, -17.26892711, + -17.26892711], + [-39.05504252, -39.05504252, -39.05504252, -39.05504252, + -39.05504252], + [-155.5499736, -155.5499736, -155.5499736, -155.5499736, + -155.5499736], + [-85.67130804, -85.67130804, -85.67130804, -85.67130804, + -85.67130804], + [341.93151396, 341.93151396, 341.93151396, 341.93151396, + 341.93151396], + [-206.75782519, -206.75782519, -206.75782519, -206.75782519, + -206.75782519]]) + self.null_deviance = 185008826 # taken from R. + self.params = np.array([ + 1.50618723e+01, -3.58191793e-02, + -2.02022980e+00, -1.03322687e+00, -5.11041057e-02, + 1.82915146e+03, -3.48225863e+06]) + self.bse = np.array([ + 8.49149258e+01, 3.34910078e-02, 4.88399682e-01, + 2.14274163e-01, 2.26073200e-01, + 4.55478499e+02, 8.90420384e+05]) + self.aic_R = 235.23486961695903 # R adds 2 for dof to AIC + self.aic_Stata = 14.57717943930524 # stata divides by nobs + self.deviance = 836424.0555058046 # from R + self.scale = 92936.006167311629 + self.llf = -109.61743480847952 + self.null_deviance = 185008826 # taken from R. Rpy bug + + self.bic_Stata = 836399.1760177979 # no bic in R? + self.df_model = 6 + self.df_resid = 9 + + # TODO: taken from Stata; not available in sm yet + self.chi2 = 1981.711859508729 + + # self.pearson_chi2 = 836424.1293162981 # from Stata (?) + self.fittedvalues = np.array([ + 60055.659970240202, 61216.013942398131, + 60124.71283224225, 61597.114621930756, 62911.285409240052, + 63888.31121532945, 65153.048956395127, 63774.180356866214, + 66004.695227399934, 67401.605905447621, + 68186.268927114084, 66552.055042522494, + 68810.549973595422, 69649.67130804155, 68989.068486039061, + 70757.757825193927]) + + +class GaussianLog(object): + """ + Uses generated data. These results are from R and Stata. + """ + def __init__(self): + self.resids = np.array([ + [3.20800000e-04, 3.20800000e-04, + 8.72100000e-04, 3.20800000e-04, 3.20800000e-04], + [8.12100000e-04, 8.12100000e-04, 2.16350000e-03, + 8.12100000e-04, 8.12100000e-04], + [-2.94800000e-04, -2.94800000e-04, -7.69700000e-04, + -2.94800000e-04, -2.94800000e-04], + [1.40190000e-03, 1.40190000e-03, 3.58560000e-03, + 1.40190000e-03, 1.40190000e-03], + [-2.30910000e-03, -2.30910000e-03, -5.78490000e-03, + -2.30910000e-03, -2.30910000e-03], + [1.10380000e-03, 1.10380000e-03, 2.70820000e-03, + 1.10380000e-03, 1.10380000e-03], + [-5.14000000e-06, -5.14000000e-06, -1.23000000e-05, + -5.14000000e-06, -5.14000000e-06], + [-1.65500000e-04, -1.65500000e-04, -3.89200000e-04, + -1.65500000e-04, -1.65500000e-04], + [-7.55400000e-04, -7.55400000e-04, -1.73870000e-03, + -7.55400000e-04, -7.55400000e-04], + [-1.39800000e-04, -1.39800000e-04, -3.14800000e-04, + -1.39800000e-04, -1.39800000e-04], + [-7.17000000e-04, -7.17000000e-04, -1.58000000e-03, + -7.17000000e-04, -7.17000000e-04], + [-1.12200000e-04, -1.12200000e-04, -2.41900000e-04, + -1.12200000e-04, -1.12200000e-04], + [3.22100000e-04, 3.22100000e-04, 6.79000000e-04, + 3.22100000e-04, 3.22100000e-04], + [-3.78000000e-05, -3.78000000e-05, -7.79000000e-05, + -3.78000000e-05, -3.78000000e-05], + [5.54500000e-04, 5.54500000e-04, 1.11730000e-03, + 5.54500000e-04, 5.54500000e-04], + [3.38400000e-04, 3.38400000e-04, 6.66300000e-04, + 3.38400000e-04, 3.38400000e-04], + [9.72000000e-05, 9.72000000e-05, 1.87000000e-04, + 9.72000000e-05, 9.72000000e-05], + [-7.92900000e-04, -7.92900000e-04, -1.49070000e-03, + -7.92900000e-04, -7.92900000e-04], + [3.33000000e-04, 3.33000000e-04, 6.11500000e-04, + 3.33000000e-04, 3.33000000e-04], + [-8.35300000e-04, -8.35300000e-04, -1.49790000e-03, + -8.35300000e-04, -8.35300000e-04], + [-3.99700000e-04, -3.99700000e-04, -6.99800000e-04, + -3.99700000e-04, -3.99700000e-04], + [1.41300000e-04, 1.41300000e-04, 2.41500000e-04, + 1.41300000e-04, 1.41300000e-04], + [-8.50700000e-04, -8.50700000e-04, -1.41920000e-03, + -8.50700000e-04, -8.50700000e-04], + [1.43000000e-06, 1.43000000e-06, 2.33000000e-06, + 1.43000000e-06, 1.43000000e-06], + [-9.12000000e-05, -9.12000000e-05, -1.44900000e-04, + -9.12000000e-05, -9.12000000e-05], + [6.75500000e-04, 6.75500000e-04, 1.04650000e-03, + 6.75500000e-04, 6.75500000e-04], + [3.97900000e-04, 3.97900000e-04, 6.01100000e-04, + 3.97900000e-04, 3.97900000e-04], + [1.07000000e-05, 1.07000000e-05, 1.57000000e-05, + 1.07000000e-05, 1.07000000e-05], + [-8.15200000e-04, -8.15200000e-04, -1.17060000e-03, + -8.15200000e-04, -8.15200000e-04], + [-8.46400000e-04, -8.46400000e-04, -1.18460000e-03, + -8.46400000e-04, -8.46400000e-04], + [9.91200000e-04, 9.91200000e-04, 1.35180000e-03, + 9.91200000e-04, 9.91200000e-04], + [-5.07400000e-04, -5.07400000e-04, -6.74200000e-04, + -5.07400000e-04, -5.07400000e-04], + [1.08520000e-03, 1.08520000e-03, 1.40450000e-03, + 1.08520000e-03, 1.08520000e-03], + [9.56100000e-04, 9.56100000e-04, 1.20500000e-03, + 9.56100000e-04, 9.56100000e-04], + [1.87500000e-03, 1.87500000e-03, 2.30090000e-03, + 1.87500000e-03, 1.87500000e-03], + [-1.93920000e-03, -1.93920000e-03, -2.31650000e-03, + -1.93920000e-03, -1.93920000e-03], + [8.16000000e-04, 8.16000000e-04, 9.48700000e-04, + 8.16000000e-04, 8.16000000e-04], + [1.01520000e-03, 1.01520000e-03, 1.14860000e-03, + 1.01520000e-03, 1.01520000e-03], + [1.04150000e-03, 1.04150000e-03, 1.14640000e-03, + 1.04150000e-03, 1.04150000e-03], + [-3.88200000e-04, -3.88200000e-04, -4.15600000e-04, + -3.88200000e-04, -3.88200000e-04], + [9.95900000e-04, 9.95900000e-04, 1.03690000e-03, + 9.95900000e-04, 9.95900000e-04], + [-6.82800000e-04, -6.82800000e-04, -6.91200000e-04, + -6.82800000e-04, -6.82800000e-04], + [-8.11400000e-04, -8.11400000e-04, -7.98500000e-04, + -8.11400000e-04, -8.11400000e-04], + [-1.79050000e-03, -1.79050000e-03, -1.71250000e-03, + -1.79050000e-03, -1.79050000e-03], + [6.10000000e-04, 6.10000000e-04, 5.66900000e-04, + 6.10000000e-04, 6.10000000e-04], + [2.52600000e-04, 2.52600000e-04, 2.28100000e-04, + 2.52600000e-04, 2.52600000e-04], + [-8.62500000e-04, -8.62500000e-04, -7.56400000e-04, + -8.62500000e-04, -8.62500000e-04], + [-3.47300000e-04, -3.47300000e-04, -2.95800000e-04, + -3.47300000e-04, -3.47300000e-04], + [-7.79000000e-05, -7.79000000e-05, -6.44000000e-05, + -7.79000000e-05, -7.79000000e-05], + [6.72000000e-04, 6.72000000e-04, 5.39400000e-04, + 6.72000000e-04, 6.72000000e-04], + [-3.72100000e-04, -3.72100000e-04, -2.89900000e-04, + -3.72100000e-04, -3.72100000e-04], + [-1.22900000e-04, -1.22900000e-04, -9.29000000e-05, + -1.22900000e-04, -1.22900000e-04], + [-1.63470000e-03, -1.63470000e-03, -1.19900000e-03, + -1.63470000e-03, -1.63470000e-03], + [2.64400000e-04, 2.64400000e-04, 1.88100000e-04, + 2.64400000e-04, 2.64400000e-04], + [1.79230000e-03, 1.79230000e-03, 1.23650000e-03, + 1.79230000e-03, 1.79230000e-03], + [-1.40500000e-04, -1.40500000e-04, -9.40000000e-05, + -1.40500000e-04, -1.40500000e-04], + [-2.98500000e-04, -2.98500000e-04, -1.93600000e-04, + -2.98500000e-04, -2.98500000e-04], + [-9.33100000e-04, -9.33100000e-04, -5.86400000e-04, + -9.33100000e-04, -9.33100000e-04], + [9.11200000e-04, 9.11200000e-04, 5.54900000e-04, + 9.11200000e-04, 9.11200000e-04], + [-1.31840000e-03, -1.31840000e-03, -7.77900000e-04, + -1.31840000e-03, -1.31840000e-03], + [-1.30200000e-04, -1.30200000e-04, -7.44000000e-05, + -1.30200000e-04, -1.30200000e-04], + [9.09300000e-04, 9.09300000e-04, 5.03200000e-04, + 9.09300000e-04, 9.09300000e-04], + [-2.39500000e-04, -2.39500000e-04, -1.28300000e-04, + -2.39500000e-04, -2.39500000e-04], + [7.15300000e-04, 7.15300000e-04, 3.71000000e-04, + 7.15300000e-04, 7.15300000e-04], + [5.45000000e-05, 5.45000000e-05, 2.73000000e-05, + 5.45000000e-05, 5.45000000e-05], + [2.85310000e-03, 2.85310000e-03, 1.38600000e-03, + 2.85310000e-03, 2.85310000e-03], + [4.63400000e-04, 4.63400000e-04, 2.17800000e-04, + 4.63400000e-04, 4.63400000e-04], + [2.80900000e-04, 2.80900000e-04, 1.27700000e-04, + 2.80900000e-04, 2.80900000e-04], + [5.42000000e-05, 5.42000000e-05, 2.38000000e-05, + 5.42000000e-05, 5.42000000e-05], + [-3.62300000e-04, -3.62300000e-04, -1.54000000e-04, + -3.62300000e-04, -3.62300000e-04], + [-1.11900000e-03, -1.11900000e-03, -4.59800000e-04, + -1.11900000e-03, -1.11900000e-03], + [1.28900000e-03, 1.28900000e-03, 5.11900000e-04, + 1.28900000e-03, 1.28900000e-03], + [-1.40820000e-03, -1.40820000e-03, -5.40400000e-04, + -1.40820000e-03, -1.40820000e-03], + [-1.69300000e-04, -1.69300000e-04, -6.28000000e-05, + -1.69300000e-04, -1.69300000e-04], + [-1.03620000e-03, -1.03620000e-03, -3.71000000e-04, + -1.03620000e-03, -1.03620000e-03], + [1.49150000e-03, 1.49150000e-03, 5.15800000e-04, + 1.49150000e-03, 1.49150000e-03], + [-7.22000000e-05, -7.22000000e-05, -2.41000000e-05, + -7.22000000e-05, -7.22000000e-05], + [5.49000000e-04, 5.49000000e-04, 1.76900000e-04, + 5.49000000e-04, 5.49000000e-04], + [-2.12320000e-03, -2.12320000e-03, -6.60400000e-04, + -2.12320000e-03, -2.12320000e-03], + [7.84000000e-06, 7.84000000e-06, 2.35000000e-06, + 7.84000000e-06, 7.84000000e-06], + [1.15580000e-03, 1.15580000e-03, 3.34700000e-04, + 1.15580000e-03, 1.15580000e-03], + [4.83400000e-04, 4.83400000e-04, 1.35000000e-04, + 4.83400000e-04, 4.83400000e-04], + [-5.26100000e-04, -5.26100000e-04, -1.41700000e-04, + -5.26100000e-04, -5.26100000e-04], + [-1.75100000e-04, -1.75100000e-04, -4.55000000e-05, + -1.75100000e-04, -1.75100000e-04], + [-1.84600000e-03, -1.84600000e-03, -4.62100000e-04, + -1.84600000e-03, -1.84600000e-03], + [2.07200000e-04, 2.07200000e-04, 5.00000000e-05, + 2.07200000e-04, 2.07200000e-04], + [-8.54700000e-04, -8.54700000e-04, -1.98700000e-04, + -8.54700000e-04, -8.54700000e-04], + [-9.20000000e-05, -9.20000000e-05, -2.06000000e-05, + -9.20000000e-05, -9.20000000e-05], + [5.35700000e-04, 5.35700000e-04, 1.15600000e-04, + 5.35700000e-04, 5.35700000e-04], + [-7.67300000e-04, -7.67300000e-04, -1.59400000e-04, + -7.67300000e-04, -7.67300000e-04], + [-1.79710000e-03, -1.79710000e-03, -3.59500000e-04, + -1.79710000e-03, -1.79710000e-03], + [1.10910000e-03, 1.10910000e-03, 2.13500000e-04, + 1.10910000e-03, 1.10910000e-03], + [-5.53800000e-04, -5.53800000e-04, -1.02600000e-04, + -5.53800000e-04, -5.53800000e-04], + [7.48000000e-04, 7.48000000e-04, 1.33400000e-04, + 7.48000000e-04, 7.48000000e-04], + [4.23000000e-04, 4.23000000e-04, 7.26000000e-05, + 4.23000000e-04, 4.23000000e-04], + [-3.16400000e-04, -3.16400000e-04, -5.22000000e-05, + -3.16400000e-04, -3.16400000e-04], + [-6.63200000e-04, -6.63200000e-04, -1.05200000e-04, + -6.63200000e-04, -6.63200000e-04], + [1.33540000e-03, 1.33540000e-03, 2.03700000e-04, + 1.33540000e-03, 1.33540000e-03], + [-7.81200000e-04, -7.81200000e-04, -1.14600000e-04, + -7.81200000e-04, -7.81200000e-04], + [1.67880000e-03, 1.67880000e-03, 2.36600000e-04, + 1.67880000e-03, 1.67880000e-03]]) + + self.null_deviance = 56.691617808182208 + self.params = np.array([ + 9.99964386e-01, -1.99896965e-02, -1.00027232e-04]) + self.bse = np.array([1.42119293e-04, 1.20276468e-05, 1.87347682e-07]) + self.aic_R = -1103.8187213072656 # adds 2 for dof for scale + + self.aic_Stata = -11.05818072104212 # divides by nobs for e(aic) + self.deviance = 8.68876986288542e-05 + self.scale = 8.9574946938163984e-07 # from R but e(phi) in Stata + self.llf = 555.9093606536328 + self.bic_Stata = -446.7014211525822 + self.df_model = 2 + self.df_resid = 97 + self.chi2 = 33207648.86501769 # from Stata not in sm + self.fittedvalues = np.array([ + 2.7181850213327747, 2.664122305869506, + 2.6106125414084405, 2.5576658143523567, 2.5052916730829535, + 2.4534991313100165, 2.4022966718815781, 2.3516922510411282, + 2.3016933031175575, 2.2523067456332542, 2.2035389848154616, + 2.1553959214958001, 2.107882957382607, 2.0610050016905817, + 2.0147664781120667, 1.969171332114154, 1.9242230385457144, + 1.8799246095383746, 1.8362786026854092, 1.7932871294825108, + 1.7509518640143886, 1.7092740518711942, 1.6682545192788105, + 1.6278936824271399, 1.5881915569806042, 1.5491477677552221, + 1.5107615585467538, 1.4730318020945796, 1.4359570101661721, + 1.3995353437472129, 1.3637646233226499, 1.3286423392342188, + 1.2941656621002184, 1.2603314532836074, 1.2271362753947765, + 1.1945764028156565, 1.162647832232141, 1.1313462931621328, + 1.1006672584668622, 1.0706059548334832, 1.0411573732173065, + 1.0123162792324054, 0.98407722347970683, 0.95643455180206194, + 0.92938241545618494, 0.90291478119174029, 0.87702544122826565, + 0.85170802312101246, 0.82695599950720078, 0.80276269772458597, + 0.77912130929465073, 0.75602489926313921, 0.73346641539106316, + 0.71143869718971686, 0.68993448479364294, 0.66894642766589496, + 0.64846709313034534, 0.62848897472617915, 0.60900450038011367, + 0.5900060403922629, 0.57148591523195513, 0.55343640314018494, + 0.5358497475357491, 0.51871816422248385, 0.50203384839536769, + 0.48578898144361343, 0.46997573754920047, 0.45458629007964013, + 0.4396128177740814, 0.42504751072218311, 0.41088257613548018, + 0.39711024391126759, 0.38372277198930843, 0.37071245150195081, + 0.35807161171849949, 0.34579262478494655, 0.33386791026040569, + 0.32228993945183393, 0.31105123954884056, 0.30014439756060574, + 0.28956206405712448, 0.27929695671718968, 0.26934186368570684, + 0.25968964674310463, 0.25033324428976694, 0.24126567414856051, + 0.23248003618867552, 0.22396951477412205, 0.21572738104035141, + 0.20774699500257574, 0.20002180749946474, 0.19254536197598673, + 0.18531129610924435, 0.17831334328122878, 0.17154533390247831, + 0.16500119659068577, 0.15867495920834204, 0.15256074976354628, + 0.14665279717814039, 0.14094543192735109]) + + +class GaussianInverse(object): + """ + This test uses generated data. Results are from R and Stata. + """ + def __init__(self): + self.resids = np.array([ + [-5.15300000e-04, -5.15300000e-04, + 5.14800000e-04, -5.15300000e-04, -5.15300000e-04], + [-2.12500000e-04, -2.12500000e-04, 2.03700000e-04, + -2.12500000e-04, -2.12500000e-04], + [-1.71400000e-04, -1.71400000e-04, 1.57200000e-04, + -1.71400000e-04, -1.71400000e-04], + [1.94020000e-03, 1.94020000e-03, -1.69710000e-03, + 1.94020000e-03, 1.94020000e-03], + [-6.81100000e-04, -6.81100000e-04, 5.66900000e-04, + -6.81100000e-04, -6.81100000e-04], + [1.21370000e-03, 1.21370000e-03, -9.58800000e-04, + 1.21370000e-03, 1.21370000e-03], + [-1.51090000e-03, -1.51090000e-03, 1.13070000e-03, + -1.51090000e-03, -1.51090000e-03], + [3.21500000e-04, 3.21500000e-04, -2.27400000e-04, + 3.21500000e-04, 3.21500000e-04], + [-3.18500000e-04, -3.18500000e-04, 2.12600000e-04, + -3.18500000e-04, -3.18500000e-04], + [3.75600000e-04, 3.75600000e-04, -2.36300000e-04, + 3.75600000e-04, 3.75600000e-04], + [4.82300000e-04, 4.82300000e-04, -2.85500000e-04, + 4.82300000e-04, 4.82300000e-04], + [-1.41870000e-03, -1.41870000e-03, 7.89300000e-04, + -1.41870000e-03, -1.41870000e-03], + [6.75000000e-05, 6.75000000e-05, -3.52000000e-05, + 6.75000000e-05, 6.75000000e-05], + [4.06300000e-04, 4.06300000e-04, -1.99100000e-04, + 4.06300000e-04, 4.06300000e-04], + [-3.61500000e-04, -3.61500000e-04, 1.66000000e-04, + -3.61500000e-04, -3.61500000e-04], + [-2.97400000e-04, -2.97400000e-04, 1.28000000e-04, + -2.97400000e-04, -2.97400000e-04], + [-9.32700000e-04, -9.32700000e-04, 3.75800000e-04, + -9.32700000e-04, -9.32700000e-04], + [1.16270000e-03, 1.16270000e-03, -4.38500000e-04, + 1.16270000e-03, 1.16270000e-03], + [6.77900000e-04, 6.77900000e-04, -2.39200000e-04, + 6.77900000e-04, 6.77900000e-04], + [-1.29330000e-03, -1.29330000e-03, 4.27000000e-04, + -1.29330000e-03, -1.29330000e-03], + [2.24500000e-04, 2.24500000e-04, -6.94000000e-05, + 2.24500000e-04, 2.24500000e-04], + [1.05510000e-03, 1.05510000e-03, -3.04900000e-04, + 1.05510000e-03, 1.05510000e-03], + [2.50400000e-04, 2.50400000e-04, -6.77000000e-05, + 2.50400000e-04, 2.50400000e-04], + [4.08600000e-04, 4.08600000e-04, -1.03400000e-04, + 4.08600000e-04, 4.08600000e-04], + [-1.67610000e-03, -1.67610000e-03, 3.96800000e-04, + -1.67610000e-03, -1.67610000e-03], + [7.47600000e-04, 7.47600000e-04, -1.65700000e-04, + 7.47600000e-04, 7.47600000e-04], + [2.08200000e-04, 2.08200000e-04, -4.32000000e-05, + 2.08200000e-04, 2.08200000e-04], + [-8.00800000e-04, -8.00800000e-04, 1.55700000e-04, + -8.00800000e-04, -8.00800000e-04], + [5.81200000e-04, 5.81200000e-04, -1.05900000e-04, + 5.81200000e-04, 5.81200000e-04], + [1.00980000e-03, 1.00980000e-03, -1.72400000e-04, + 1.00980000e-03, 1.00980000e-03], + [2.77400000e-04, 2.77400000e-04, -4.44000000e-05, + 2.77400000e-04, 2.77400000e-04], + [-5.02800000e-04, -5.02800000e-04, 7.55000000e-05, + -5.02800000e-04, -5.02800000e-04], + [2.69800000e-04, 2.69800000e-04, -3.80000000e-05, + 2.69800000e-04, 2.69800000e-04], + [2.01300000e-04, 2.01300000e-04, -2.67000000e-05, + 2.01300000e-04, 2.01300000e-04], + [-1.19690000e-03, -1.19690000e-03, 1.48900000e-04, + -1.19690000e-03, -1.19690000e-03], + [-6.94200000e-04, -6.94200000e-04, 8.12000000e-05, + -6.94200000e-04, -6.94200000e-04], + [5.65500000e-04, 5.65500000e-04, -6.22000000e-05, + 5.65500000e-04, 5.65500000e-04], + [4.93100000e-04, 4.93100000e-04, -5.10000000e-05, + 4.93100000e-04, 4.93100000e-04], + [3.25000000e-04, 3.25000000e-04, -3.17000000e-05, + 3.25000000e-04, 3.25000000e-04], + [-7.70200000e-04, -7.70200000e-04, 7.07000000e-05, + -7.70200000e-04, -7.70200000e-04], + [2.58000000e-05, 2.58000000e-05, -2.23000000e-06, + 2.58000000e-05, 2.58000000e-05], + [-1.52800000e-04, -1.52800000e-04, 1.25000000e-05, + -1.52800000e-04, -1.52800000e-04], + [4.52000000e-05, 4.52000000e-05, -3.48000000e-06, + 4.52000000e-05, 4.52000000e-05], + [-6.83900000e-04, -6.83900000e-04, 4.97000000e-05, + -6.83900000e-04, -6.83900000e-04], + [-7.77600000e-04, -7.77600000e-04, 5.34000000e-05, + -7.77600000e-04, -7.77600000e-04], + [1.03170000e-03, 1.03170000e-03, -6.70000000e-05, + 1.03170000e-03, 1.03170000e-03], + [1.20000000e-03, 1.20000000e-03, -7.37000000e-05, + 1.20000000e-03, 1.20000000e-03], + [-7.71600000e-04, -7.71600000e-04, 4.48000000e-05, + -7.71600000e-04, -7.71600000e-04], + [-3.37000000e-04, -3.37000000e-04, 1.85000000e-05, + -3.37000000e-04, -3.37000000e-04], + [1.19880000e-03, 1.19880000e-03, -6.25000000e-05, + 1.19880000e-03, 1.19880000e-03], + [-1.54610000e-03, -1.54610000e-03, 7.64000000e-05, + -1.54610000e-03, -1.54610000e-03], + [9.11600000e-04, 9.11600000e-04, -4.27000000e-05, + 9.11600000e-04, 9.11600000e-04], + [-4.70800000e-04, -4.70800000e-04, 2.09000000e-05, + -4.70800000e-04, -4.70800000e-04], + [-1.21550000e-03, -1.21550000e-03, 5.13000000e-05, + -1.21550000e-03, -1.21550000e-03], + [1.09160000e-03, 1.09160000e-03, -4.37000000e-05, + 1.09160000e-03, 1.09160000e-03], + [-2.72000000e-04, -2.72000000e-04, 1.04000000e-05, + -2.72000000e-04, -2.72000000e-04], + [-7.84500000e-04, -7.84500000e-04, 2.84000000e-05, + -7.84500000e-04, -7.84500000e-04], + [1.53330000e-03, 1.53330000e-03, -5.28000000e-05, + 1.53330000e-03, 1.53330000e-03], + [-1.84450000e-03, -1.84450000e-03, 6.05000000e-05, + -1.84450000e-03, -1.84450000e-03], + [1.68550000e-03, 1.68550000e-03, -5.26000000e-05, + 1.68550000e-03, 1.68550000e-03], + [-3.06100000e-04, -3.06100000e-04, 9.10000000e-06, + -3.06100000e-04, -3.06100000e-04], + [1.00950000e-03, 1.00950000e-03, -2.86000000e-05, + 1.00950000e-03, 1.00950000e-03], + [5.22000000e-04, 5.22000000e-04, -1.41000000e-05, + 5.22000000e-04, 5.22000000e-04], + [-2.18000000e-05, -2.18000000e-05, 5.62000000e-07, + -2.18000000e-05, -2.18000000e-05], + [-7.80600000e-04, -7.80600000e-04, 1.92000000e-05, + -7.80600000e-04, -7.80600000e-04], + [6.81400000e-04, 6.81400000e-04, -1.60000000e-05, + 6.81400000e-04, 6.81400000e-04], + [-1.43800000e-04, -1.43800000e-04, 3.23000000e-06, + -1.43800000e-04, -1.43800000e-04], + [7.76000000e-04, 7.76000000e-04, -1.66000000e-05, + 7.76000000e-04, 7.76000000e-04], + [2.54900000e-04, 2.54900000e-04, -5.22000000e-06, + 2.54900000e-04, 2.54900000e-04], + [5.77500000e-04, 5.77500000e-04, -1.13000000e-05, + 5.77500000e-04, 5.77500000e-04], + [7.58100000e-04, 7.58100000e-04, -1.42000000e-05, + 7.58100000e-04, 7.58100000e-04], + [-8.31000000e-04, -8.31000000e-04, 1.49000000e-05, + -8.31000000e-04, -8.31000000e-04], + [-2.10340000e-03, -2.10340000e-03, 3.62000000e-05, + -2.10340000e-03, -2.10340000e-03], + [-8.89900000e-04, -8.89900000e-04, 1.47000000e-05, + -8.89900000e-04, -8.89900000e-04], + [1.08570000e-03, 1.08570000e-03, -1.71000000e-05, + 1.08570000e-03, 1.08570000e-03], + [-1.88600000e-04, -1.88600000e-04, 2.86000000e-06, + -1.88600000e-04, -1.88600000e-04], + [9.10000000e-05, 9.10000000e-05, -1.32000000e-06, + 9.10000000e-05, 9.10000000e-05], + [1.07700000e-03, 1.07700000e-03, -1.50000000e-05, + 1.07700000e-03, 1.07700000e-03], + [9.04100000e-04, 9.04100000e-04, -1.21000000e-05, + 9.04100000e-04, 9.04100000e-04], + [-2.20000000e-04, -2.20000000e-04, 2.83000000e-06, + -2.20000000e-04, -2.20000000e-04], + [-1.64030000e-03, -1.64030000e-03, 2.02000000e-05, + -1.64030000e-03, -1.64030000e-03], + [2.20600000e-04, 2.20600000e-04, -2.62000000e-06, + 2.20600000e-04, 2.20600000e-04], + [-2.78300000e-04, -2.78300000e-04, 3.17000000e-06, + -2.78300000e-04, -2.78300000e-04], + [-4.93000000e-04, -4.93000000e-04, 5.40000000e-06, + -4.93000000e-04, -4.93000000e-04], + [-1.85000000e-04, -1.85000000e-04, 1.95000000e-06, + -1.85000000e-04, -1.85000000e-04], + [-7.64000000e-04, -7.64000000e-04, 7.75000000e-06, + -7.64000000e-04, -7.64000000e-04], + [7.79600000e-04, 7.79600000e-04, -7.61000000e-06, + 7.79600000e-04, 7.79600000e-04], + [2.88400000e-04, 2.88400000e-04, -2.71000000e-06, + 2.88400000e-04, 2.88400000e-04], + [1.09370000e-03, 1.09370000e-03, -9.91000000e-06, + 1.09370000e-03, 1.09370000e-03], + [3.07000000e-04, 3.07000000e-04, -2.68000000e-06, + 3.07000000e-04, 3.07000000e-04], + [-8.76000000e-04, -8.76000000e-04, 7.37000000e-06, + -8.76000000e-04, -8.76000000e-04], + [-1.85300000e-04, -1.85300000e-04, 1.50000000e-06, + -1.85300000e-04, -1.85300000e-04], + [3.24700000e-04, 3.24700000e-04, -2.54000000e-06, + 3.24700000e-04, 3.24700000e-04], + [4.59600000e-04, 4.59600000e-04, -3.47000000e-06, + 4.59600000e-04, 4.59600000e-04], + [-2.73300000e-04, -2.73300000e-04, 1.99000000e-06, + -2.73300000e-04, -2.73300000e-04], + [1.32180000e-03, 1.32180000e-03, -9.29000000e-06, + 1.32180000e-03, 1.32180000e-03], + [-1.32620000e-03, -1.32620000e-03, 9.00000000e-06, + -1.32620000e-03, -1.32620000e-03], + [9.62000000e-05, 9.62000000e-05, -6.31000000e-07, + 9.62000000e-05, 9.62000000e-05], + [-6.04400000e-04, -6.04400000e-04, 3.83000000e-06, + -6.04400000e-04, -6.04400000e-04], + [-6.66300000e-04, -6.66300000e-04, 4.08000000e-06, + -6.66300000e-04, -6.66300000e-04]]) + self.null_deviance = 6.8088354977561 # from R, Rpy bug + self.params = np.array([1.00045997, 0.01991666, 0.00100126]) + self.bse = np.array([4.55214070e-04, 7.00529313e-05, 1.84478509e-06]) + self.aic_R = -1123.1528237643774 + self.aic_Stata = -11.25152876811373 + self.deviance = 7.1612915365488368e-05 + self.scale = 7.3827747608449547e-07 + self.llf = 565.57641188218872 + self.bic_Stata = -446.7014364279675 + self.df_model = 2 + self.df_resid = 97 + self.chi2 = 2704006.698904491 + self.fittedvalues = np.array([ + 0.99954024, 0.97906956, 0.95758077, 0.93526008, 0.91228657, + 0.88882978, 0.8650479, 0.84108646, 0.81707757, 0.79313958, + 0.76937709, 0.74588129, 0.72273051, 0.69999099, 0.67771773, + 0.65595543, 0.63473944, 0.61409675, 0.59404691, 0.57460297, + 0.55577231, 0.53755742, 0.51995663, 0.50296478, 0.48657379, + 0.47077316, 0.4555505, 0.44089187, 0.42678213, 0.41320529, + 0.40014475, 0.38758348, 0.37550428, 0.36388987, 0.35272306, + 0.34198684, 0.33166446, 0.32173953, 0.31219604, 0.30301842, + 0.29419156, 0.28570085, 0.27753216, 0.26967189, 0.26210695, + 0.25482476, 0.24781324, 0.2410608, 0.23455636, 0.22828931, + 0.22224947, 0.21642715, 0.21081306, 0.20539835, 0.20017455, + 0.19513359, 0.19026777, 0.18556972, 0.18103243, 0.17664922, + 0.1724137, 0.16831977, 0.16436164, 0.16053377, 0.15683086, + 0.15324789, 0.14978003, 0.1464227, 0.14317153, 0.14002232, + 0.13697109, 0.13401403, 0.1311475, 0.12836802, 0.12567228, + 0.1230571, 0.12051944, 0.11805642, 0.11566526, 0.1133433, + 0.11108802, 0.10889699, 0.10676788, 0.10469847, 0.10268664, + 0.10073034, 0.09882763, 0.09697663, 0.09517555, 0.09342267, + 0.09171634, 0.09005498, 0.08843707, 0.08686116, 0.08532585, + 0.08382979, 0.0823717, 0.08095035, 0.07956453, 0.07821311]) + + +class Star98(object): + """ + Star98 class used with TestGlmBinomial + """ + def __init__(self): + self.params = ( + -0.0168150366, 0.0099254766, -0.0187242148, + -0.0142385609, 0.2544871730, 0.2406936644, 0.0804086739, + -1.9521605027, -0.3340864748, -0.1690221685, 0.0049167021, + -0.0035799644, -0.0140765648, -0.0040049918, -0.0039063958, + 0.0917143006, 0.0489898381, 0.0080407389, 0.0002220095, + -0.0022492486, 2.9588779262) + self.bse = ( + 4.339467e-04, 6.013714e-04, 7.435499e-04, 4.338655e-04, + 2.994576e-02, 5.713824e-02, 1.392359e-02, 3.168109e-01, + 6.126411e-02, 3.270139e-02, 1.253877e-03, 2.254633e-04, + 1.904573e-03, 4.739838e-04, 9.623650e-04, 1.450923e-02, + 7.451666e-03, 1.499497e-03, 2.988794e-05, 3.489838e-04, + 1.546712e+00) + self.null_deviance = 34345.3688931 + self.df_null = 302 + self.deviance = 4078.76541772 + self.df_resid = 282 + self.df_model = 20 + self.aic_R = 6039.22511799 + self.aic_Stata = 19.93143846737438 + self.bic_Stata = 2467.493504191302 + self.llf = -2998.61255899391 # from R + self.llf_Stata = -2998.612927807218 + self.scale = 1. + self.pearson_chi2 = 4051.921614 + self.resids = glm_test_resids.star98_resids + self.fittedvalues = np.array([ + 0.5833118, 0.75144661, 0.50058272, 0.68534524, 0.32251021, + 0.68693601, 0.33299827, 0.65624766, 0.49851481, 0.506736, + 0.23954874, 0.86631452, 0.46432936, 0.44171873, 0.66797935, + 0.73988491, 0.51966014, 0.42442446, 0.5649369, 0.59251634, + 0.34798337, 0.56415024, 0.49974355, 0.3565539, 0.20752309, + 0.18269097, 0.44932642, 0.48025128, 0.59965277, 0.58848671, + 0.36264203, 0.33333196, 0.74253352, 0.5081886, 0.53421878, + 0.56291445, 0.60205239, 0.29174423, 0.2954348, 0.32220414, + 0.47977903, 0.23687535, 0.11776464, 0.1557423, 0.27854799, + 0.22699533, 0.1819439, 0.32554433, 0.22681989, 0.15785389, + 0.15268609, 0.61094772, 0.20743222, 0.51649059, 0.46502006, + 0.41031788, 0.59523288, 0.65733285, 0.27835336, 0.2371213, + 0.25137045, 0.23953942, 0.27854519, 0.39652413, 0.27023163, + 0.61411863, 0.2212025, 0.42005842, 0.55940397, 0.35413774, + 0.45724563, 0.57399437, 0.2168918, 0.58308738, 0.17181104, + 0.49873249, 0.22832683, 0.14846056, 0.5028073, 0.24513863, + 0.48202096, 0.52823155, 0.5086262, 0.46295993, 0.57869402, + 0.78363217, 0.21144435, 0.2298366, 0.17954825, 0.32232586, + 0.8343015, 0.56217006, 0.47367315, 0.52535649, 0.60350746, + 0.43210701, 0.44712008, 0.35858239, 0.2521347, 0.19787004, + 0.63256553, 0.51386532, 0.64997027, 0.13402072, 0.81756174, + 0.74543642, 0.30825852, 0.23988707, 0.17273125, 0.27880599, + 0.17395893, 0.32052828, 0.80467697, 0.18726218, 0.23842081, + 0.19020381, 0.85835388, 0.58703615, 0.72415106, 0.64433695, + 0.68766653, 0.32923663, 0.16352185, 0.38868816, 0.44980444, + 0.74810044, 0.42973792, 0.53762581, 0.72714996, 0.61229484, + 0.30267667, 0.24713253, 0.65086008, 0.48957265, 0.54955545, + 0.5697156, 0.36406211, 0.48906545, 0.45919413, 0.4930565, + 0.39785555, 0.5078719, 0.30159626, 0.28524393, 0.34687707, + 0.22522042, 0.52947159, 0.29277287, 0.8585002, 0.60800389, + 0.75830521, 0.35648175, 0.69508796, 0.45518355, 0.21567675, + 0.39682985, 0.49042948, 0.47615798, 0.60588234, 0.62910299, + 0.46005639, 0.71755165, 0.48852156, 0.47940661, 0.60128813, + 0.16589699, 0.68512861, 0.46305199, 0.68832227, 0.7006721, + 0.56564937, 0.51753941, 0.54261733, 0.56072214, 0.34545715, + 0.30226104, 0.3572956, 0.40996287, 0.33517519, 0.36248407, + 0.33937041, 0.34140691, 0.2627528, 0.29955161, 0.38581683, + 0.24840026, 0.15414272, 0.40415991, 0.53936252, 0.52111887, + 0.28060168, 0.45600958, 0.51110589, 0.43757523, 0.46891953, + 0.39425249, 0.5834369, 0.55817308, 0.32051259, 0.43567448, + 0.34134195, 0.43016545, 0.4885413, 0.28478325, 0.2650776, + 0.46784606, 0.46265983, 0.42655938, 0.18972234, 0.60448491, + 0.211896, 0.37886032, 0.50727577, 0.39782309, 0.50427121, + 0.35882898, 0.39596807, 0.49160806, 0.35618002, 0.6819922, + 0.36871093, 0.43079679, 0.67985516, 0.41270595, 0.68952767, + 0.52587734, 0.32042126, 0.39120123, 0.56870985, 0.32962349, + 0.32168989, 0.54076251, 0.4592907, 0.48480182, 0.4408386, + 0.431178, 0.47078232, 0.55911605, 0.30331618, 0.50310393, + 0.65036038, 0.45078895, 0.62354291, 0.56435463, 0.50034281, + 0.52693538, 0.57217285, 0.49221472, 0.40707122, 0.44226533, + 0.3475959, 0.54746396, 0.86385832, 0.48402233, 0.54313657, + 0.61586824, 0.27097185, 0.69717808, 0.52156974, 0.50401189, + 0.56724181, 0.6577178, 0.42732047, 0.44808396, 0.65435634, + 0.54766225, 0.38160648, 0.49890847, 0.50879037, 0.5875452, + 0.45101593, 0.5709704, 0.3175516, 0.39813159, 0.28305688, + 0.40521062, 0.30120578, 0.26400428, 0.44205496, 0.40545798, + 0.39366599, 0.55288196, 0.14104184, 0.17550155, 0.1949095, + 0.40255144, 0.21016822, 0.09712017, 0.63151487, 0.25885514, + 0.57323748, 0.61836898, 0.43268601, 0.67008878, 0.75801989, + 0.50353406, 0.64222315, 0.29925757, 0.32592036, 0.39634977, + 0.39582747, 0.41037006, 0.34174944]) + + +class Lbw(object): + ''' + The LBW data can be found here + + https://www.stata-press.com/data/r9/rmain.html + ''' + def __init__(self): + # data set up for data not in datasets + filename = os.path.join(os.path.dirname(os.path.abspath(__file__)), + "stata_lbw_glm.csv") + + # https://github.com/statsmodels/statsmodels/pull/4432#issuecomment-379279617 + if NP_LT_113 or PY2: + with open(filename, 'rb') as datafile: + data = np.recfromcsv(datafile) + vfunc = np.vectorize(lambda x: x.strip(asbytes("\""))) + data['race'] = vfunc(data['race']) + else: + data = pd.read_csv(filename).to_records(index=False) + # categorical does not work with pandas + data = categorical(data, col='race', drop=True) + self.endog = data.low + design = np.column_stack(( + data['age'], + data['lwt'], + data['race_black'], + data['race_other'], + data['smoke'], + data['ptl'], + data['ht'], + data['ui'])) + self.exog = add_constant(design, prepend=False) + # Results for Canonical Logit Link + self.params = ( + -.02710031, -.01515082, 1.26264728, + .86207916, .92334482, .54183656, 1.83251780, + .75851348, .46122388) + self.bse = ( + 0.036449917, 0.006925765, 0.526405169, + 0.439146744, 0.400820976, 0.346246857, 0.691623875, + 0.459373871, 1.204574885) + self.aic_R = 219.447991133 + self.aic_Stata = 1.161100482182551 + self.deviance = 201.4479911325021 + self.scale = 1 + self.llf = -100.7239955662511 + self.chi2 = 25.65329337867037 # from Stata not used by sm + self.null_deviance = 234.671996193219 + self.bic_Stata = -742.0664715782335 + self.df_resid = 180 + self.df_model = 8 + self.df_null = 188 + self.pearson_chi2 = 182.023342493558 + self.resids = glm_test_resids.lbw_resids + self.fittedvalues = np.array([ + 0.31217507, 0.12793027, 0.32119762, 0.48442686, 0.50853393, + 0.24517662, 0.12755193, 0.33226988, 0.22013309, 0.26268069, + 0.34729955, 0.18782188, 0.75404181, 0.54723527, 0.35016393, + 0.35016393, 0.45824406, 0.25336683, 0.43087357, 0.23284101, + 0.20146616, 0.24315597, 0.02725586, 0.22207692, 0.39800383, + 0.05584178, 0.28403447, 0.06931188, 0.35371946, 0.3896279, + 0.3896279, 0.47812002, 0.60043853, 0.07144772, 0.29995988, + 0.17910031, 0.22773411, 0.22691015, 0.06221253, 0.2384528, + 0.32633864, 0.05131047, 0.2954536, 0.07364416, 0.57241299, + 0.57241299, 0.08272435, 0.23298882, 0.12658158, 0.58967487, + 0.46989562, 0.22455631, 0.2348285, 0.29571887, 0.28212464, + 0.31499013, 0.68340511, 0.14090647, 0.31448425, 0.28082972, + 0.28082972, 0.24918728, 0.27018297, 0.08175784, 0.64808999, + 0.38252574, 0.25550797, 0.09113411, 0.40736693, 0.32644055, + 0.54367425, 0.29606968, 0.47028421, 0.39972155, 0.25079125, + 0.09678472, 0.08807264, 0.27467837, 0.5675742, 0.045619, + 0.10719293, 0.04826292, 0.23934092, 0.24179618, 0.23802197, + 0.49196179, 0.31379451, 0.10605469, 0.04047396, 0.11620849, + 0.09937016, 0.21822964, 0.29770265, 0.83912829, 0.25079125, + 0.08548557, 0.06550308, 0.2046457, 0.2046457, 0.08110349, + 0.13519643, 0.47862055, 0.38891913, 0.1383964, 0.26176764, + 0.31594589, 0.11418612, 0.06324112, 0.28468594, 0.21663702, + 0.03827107, 0.27237604, 0.20246694, 0.19042999, 0.15019447, + 0.18759474, 0.12308435, 0.19700616, 0.11564002, 0.36595033, + 0.07765727, 0.14119063, 0.13584627, 0.11012759, 0.10102472, + 0.10002166, 0.07439288, 0.27919958, 0.12491598, 0.06774594, + 0.72513764, 0.17714986, 0.67373352, 0.80679436, 0.52908941, + 0.15695938, 0.49722003, 0.41970014, 0.62375224, 0.53695622, + 0.25474238, 0.79135707, 0.2503871, 0.25352337, 0.33474211, + 0.19308929, 0.24658944, 0.25495092, 0.30867144, 0.41240259, + 0.59412526, 0.16811226, 0.48282791, 0.36566756, 0.09279325, + 0.75337353, 0.57128885, 0.52974123, 0.44548504, 0.77748843, + 0.3224082, 0.40054277, 0.29522468, 0.19673553, 0.73781774, + 0.57680312, 0.44545573, 0.30242355, 0.38720223, 0.16632904, + 0.30804092, 0.56385194, 0.60012179, 0.48324821, 0.24636345, + 0.26153216, 0.2348285, 0.29023669, 0.41011454, 0.36472083, + 0.65922069, 0.30476903, 0.09986775, 0.70658332, 0.30713075, + 0.36096386, 0.54962701, 0.71996086, 0.6633756]) + + +class Scotvote(object): + """ + Scotvot class is used with TestGlmGamma. + """ + def __init__(self): + self.params = ( + 4.961768e-05, 2.034423e-03, -7.181429e-05, 1.118520e-04, + -1.467515e-07, -5.186831e-04, -2.42717498e-06, -1.776527e-02) + self.bse = ( + 1.621577e-05, 5.320802e-04, 2.711664e-05, 4.057691e-05, + 1.236569e-07, 2.402534e-04, 7.460253e-07, 1.147922e-02) + self.null_deviance = 0.536072 + self.df_null = 31 + self.deviance = 0.087388516417 + self.df_resid = 24 + self.df_model = 7 + self.aic_R = 182.947045954721 + self.aic_Stata = 10.72212 + self.bic_Stata = -83.09027 + self.llf = -163.5539382 # from Stata, same as ours with scale = 1 + # self.llf = -82.47352 # Very close to ours as is + self.scale = 0.003584283 + self.pearson_chi2 = .0860228056 + self.resids = glm_test_resids.scotvote_resids + self.fittedvalues = np.array([ + 57.80431482, 53.2733447, 50.56347993, 58.33003783, + 70.46562169, 56.88801284, 66.81878401, 66.03410393, + 57.92937473, 63.23216907, 53.9914785, 61.28993391, + 64.81036393, 63.47546816, 60.69696114, 74.83508176, + 56.56991106, 72.01804172, 64.35676519, 52.02445881, + 64.24933079, 71.15070332, 45.73479688, 54.93318588, + 66.98031261, 52.02479973, 56.18413736, 58.12267471, + 67.37947398, 60.49162862, 73.82609217, 69.61515621]) + + +class Cancer(object): + ''' + The Cancer data can be found here + + https://www.stata-press.com/data/r10/rmain.html + ''' + def __init__(self): + filename = os.path.join(os.path.dirname(os.path.abspath(__file__)), + "stata_cancer_glm.csv") + data = np.recfromcsv(open(filename, 'rb')) + self.endog = data.studytime + design = np.column_stack((data.age, data.drug)) + design = categorical(design, col=1, drop=True) + design = np.delete(design, 1, axis=1) # drop first dummy + self.exog = add_constant(design, prepend=False) + + +class CancerLog(Cancer): + """ + CancerLog is used TestGlmGammaLog + """ + def __init__(self): + super(CancerLog, self).__init__() + + self.resids = np.array([ + [-8.52598100e-01, -1.45739100e+00, -3.92408100e+01, + -1.41526900e+00, -5.78417200e+00], + [-8.23683800e-01, -1.35040200e+00, -2.64957500e+01, + -1.31777000e+00, -4.67162900e+00], + [-7.30450400e-01, -1.07754600e+00, -4.02136400e+01, + -1.06208800e+00, -5.41978500e+00], + [-7.04471600e-01, -1.01441500e+00, -7.25951500e+01, + -1.00172900e+00, -7.15130900e+00], + [-5.28668000e-01, -6.68617300e-01, -3.80758100e+01, + -6.65304600e-01, -4.48658700e+00], + [-2.28658500e-01, -2.48859700e-01, -6.14913600e+00, + -2.48707200e-01, -1.18577100e+00], + [-1.93939400e-01, -2.08119900e-01, -7.46226500e+00, + -2.08031700e-01, -1.20300800e+00], + [-3.55635700e-01, -4.09525000e-01, -2.14132500e+01, + -4.08815100e-01, -2.75958600e+00], + [-5.73360000e-02, -5.84700000e-02, -4.12946200e+00, + -5.84681000e-02, -4.86586900e-01], + [3.09828000e-02, 3.06685000e-02, 1.86551100e+00, + 3.06682000e-02, 2.40413800e-01], + [-2.11924300e-01, -2.29071300e-01, -2.18386100e+01, + -2.28953000e-01, -2.15130900e+00], + [-3.10989000e-01, -3.50739300e-01, -4.19249500e+01, + -3.50300400e-01, -3.61084500e+00], + [-9.22250000e-03, -9.25100000e-03, -1.13679700e+00, + -9.25100000e-03, -1.02392100e-01], + [2.39402500e-01, 2.22589700e-01, 1.88577300e+01, + 2.22493500e-01, 2.12475600e+00], + [3.35166000e-02, 3.31493000e-02, 4.51842400e+00, + 3.31489000e-02, 3.89155400e-01], + [8.49829400e-01, 6.85180200e-01, 3.57627500e+01, + 6.82689900e-01, 5.51291500e+00], + [4.12934200e-01, 3.66785200e-01, 4.65392600e+01, + 3.66370400e-01, 4.38379500e+00], + [4.64148400e-01, 4.07123200e-01, 6.25726500e+01, + 4.06561900e-01, 5.38915500e+00], + [1.71104600e+00, 1.19474800e+00, 1.12676500e+02, + 1.18311900e+00, 1.38850500e+01], + [1.26571800e+00, 9.46389000e-01, 1.30431000e+02, + 9.40244600e-01, 1.28486900e+01], + [-3.48532600e-01, -3.99988300e-01, -2.95638100e+01, + -3.99328600e-01, -3.20997700e+00], + [-4.04340300e-01, -4.76960100e-01, -4.10254300e+01, + -4.75818000e-01, -4.07286500e+00], + [-4.92057900e-01, -6.08818300e-01, -9.34509600e+01, + -6.06357200e-01, -6.78109700e+00], + [-4.02876400e-01, -4.74878400e-01, -9.15226200e+01, + -4.73751900e-01, -6.07225700e+00], + [-5.15056700e-01, -6.46013300e-01, -2.19014600e+02, + -6.43043500e-01, -1.06209700e+01], + [-8.70423000e-02, -8.97043000e-02, -1.26361400e+01, + -8.96975000e-02, -1.04875100e+00], + [1.28362300e-01, 1.23247800e-01, 1.70383300e+01, + 1.23231000e-01, 1.47887800e+00], + [-2.39271900e-01, -2.61562100e-01, -9.30283300e+01, + -2.61384400e-01, -4.71795100e+00], + [7.37246500e-01, 6.08186000e-01, 6.25359600e+01, + 6.06409700e-01, 6.79002300e+00], + [-3.64110000e-02, -3.68626000e-02, -1.41565300e+01, + -3.68621000e-02, -7.17951200e-01], + [2.68833000e-01, 2.47933100e-01, 6.67934100e+01, + 2.47801000e-01, 4.23748400e+00], + [5.96389600e-01, 5.07237700e-01, 1.13265500e+02, + 5.06180100e-01, 8.21890300e+00], + [1.98218000e-02, 1.96923000e-02, 1.00820900e+01, + 1.96923000e-02, 4.47040700e-01], + [7.74936000e-01, 6.34305300e-01, 2.51883900e+02, + 6.32303700e-01, 1.39711800e+01], + [-7.63925100e-01, -1.16591700e+00, -4.93461700e+02, + -1.14588000e+00, -1.94156600e+01], + [-6.23771700e-01, -8.41174800e-01, -4.40679600e+02, + -8.34266300e-01, -1.65796100e+01], + [-1.63272900e-01, -1.73115100e-01, -6.73975900e+01, + -1.73064800e-01, -3.31725800e+00], + [-4.28562500e-01, -5.11932900e-01, -4.73787800e+02, + -5.10507400e-01, -1.42494800e+01], + [8.00693000e-02, 7.80269000e-02, 3.95353400e+01, + 7.80226000e-02, 1.77920500e+00], + [-2.13674400e-01, -2.31127400e-01, -2.15987000e+02, + -2.31005700e-01, -6.79344600e+00], + [-1.63544000e-02, -1.64444000e-02, -1.05642100e+01, + -1.64444000e-02, -4.15657600e-01], + [2.04900500e-01, 1.92372100e-01, 1.10651300e+02, + 1.92309400e-01, 4.76156600e+00], + [-1.94758900e-01, -2.09067700e-01, -2.35484100e+02, + -2.08978200e-01, -6.77219400e+00], + [3.16727400e-01, 2.88367800e-01, 1.87065600e+02, + 2.88162100e-01, 7.69732400e+00], + [6.24234900e-01, 5.27632500e-01, 2.57678500e+02, + 5.26448400e-01, 1.26827400e+01], + [8.30241100e-01, 6.72002100e-01, 2.86513700e+02, + 6.69644800e-01, 1.54232100e+01], + [6.55140000e-03, 6.53710000e-03, 7.92130700e+00, + 6.53710000e-03, 2.27805800e-01], + [3.41595200e-01, 3.08985000e-01, 2.88667600e+02, + 3.08733300e-01, 9.93012900e+00]]) + self.null_deviance = 27.92207137420696 # From R (bug in rpy) + self.params = np.array([ + -0.04477778, 0.57437126, 1.05210726, 4.64604002]) + self.bse = np.array([0.0147328, 0.19694727, 0.19772507, 0.83534671]) + + self.aic_R = 331.89022395372069 + + self.aic_Stata = 7.403608467857651 + self.deviance = 16.174635536991005 + self.scale = 0.31805268736385695 + + # self.llf = -160.94511197686035 # From R + self.llf = -173.6866032285836 # from Staa + self.bic_Stata = -154.1582089453923 # from Stata + self.df_model = 3 + self.df_resid = 44 + self.chi2 = 36.77821448266359 # from Stata not in sm + + self.fittedvalues = np.array([ + 6.78419193, 5.67167253, 7.41979002, 10.15123371, + 8.48656317, 5.18582263, 6.20304079, 7.75958258, + 8.48656317, 7.75958258, 10.15123371, 11.61071755, + 11.10228357, 8.87520908, 11.61071755, 6.48711178, + 10.61611394, 11.61071755, 8.11493609, 10.15123371, + 9.21009116, 10.07296716, 13.78112366, 15.07225103, + 20.62079147, 12.04881666, 11.5211983, 19.71780584, + 9.21009116, 19.71780584, 15.76249142, 13.78112366, + 22.55271436, 18.02872842, 25.41575239, 26.579678, + 20.31745227, 33.24937131, 22.22095589, 31.79337946, + 25.41575239, 23.23857437, 34.77204095, 24.30279515, + 20.31745227, 18.57700761, 34.77204095, 29.06987768]) + + +class CancerIdentity(Cancer): + """ + CancerIdentity is used with TestGlmGammaIdentity + """ + def __init__(self): + super(CancerIdentity, self).__init__() + + self.resids = np.array([ + [-8.52598100e-01, -1.45739100e+00, -3.92408100e+01, + -1.41526900e+00, -5.78417200e+00], + [-8.23683800e-01, -1.35040200e+00, -2.64957500e+01, + -1.31777000e+00, -4.67162900e+00], + [-7.30450400e-01, -1.07754600e+00, -4.02136400e+01, + -1.06208800e+00, -5.41978500e+00], + [-7.04471600e-01, -1.01441500e+00, -7.25951500e+01, + -1.00172900e+00, -7.15130900e+00], + [-5.28668000e-01, -6.68617300e-01, -3.80758100e+01, + -6.65304600e-01, -4.48658700e+00], + [-2.28658500e-01, -2.48859700e-01, -6.14913600e+00, + -2.48707200e-01, -1.18577100e+00], + [-1.93939400e-01, -2.08119900e-01, -7.46226500e+00, + -2.08031700e-01, -1.20300800e+00], + [-3.55635700e-01, -4.09525000e-01, -2.14132500e+01, + -4.08815100e-01, -2.75958600e+00], + [-5.73360000e-02, -5.84700000e-02, -4.12946200e+00, + -5.84681000e-02, -4.86586900e-01], + [3.09828000e-02, 3.06685000e-02, 1.86551100e+00, + 3.06682000e-02, 2.40413800e-01], + [-2.11924300e-01, -2.29071300e-01, -2.18386100e+01, + -2.28953000e-01, -2.15130900e+00], + [-3.10989000e-01, -3.50739300e-01, -4.19249500e+01, + -3.50300400e-01, -3.61084500e+00], + [-9.22250000e-03, -9.25100000e-03, -1.13679700e+00, + -9.25100000e-03, -1.02392100e-01], + [2.39402500e-01, 2.22589700e-01, 1.88577300e+01, + 2.22493500e-01, 2.12475600e+00], + [3.35166000e-02, 3.31493000e-02, 4.51842400e+00, + 3.31489000e-02, 3.89155400e-01], + [8.49829400e-01, 6.85180200e-01, 3.57627500e+01, + 6.82689900e-01, 5.51291500e+00], + [4.12934200e-01, 3.66785200e-01, 4.65392600e+01, + 3.66370400e-01, 4.38379500e+00], + [4.64148400e-01, 4.07123200e-01, 6.25726500e+01, + 4.06561900e-01, 5.38915500e+00], + [1.71104600e+00, 1.19474800e+00, 1.12676500e+02, + 1.18311900e+00, 1.38850500e+01], + [1.26571800e+00, 9.46389000e-01, 1.30431000e+02, + 9.40244600e-01, 1.28486900e+01], + [-3.48532600e-01, -3.99988300e-01, -2.95638100e+01, + -3.99328600e-01, -3.20997700e+00], + [-4.04340300e-01, -4.76960100e-01, -4.10254300e+01, + -4.75818000e-01, -4.07286500e+00], + [-4.92057900e-01, -6.08818300e-01, -9.34509600e+01, + -6.06357200e-01, -6.78109700e+00], + [-4.02876400e-01, -4.74878400e-01, -9.15226200e+01, + -4.73751900e-01, -6.07225700e+00], + [-5.15056700e-01, -6.46013300e-01, -2.19014600e+02, + -6.43043500e-01, -1.06209700e+01], + [-8.70423000e-02, -8.97043000e-02, -1.26361400e+01, + -8.96975000e-02, -1.04875100e+00], + [1.28362300e-01, 1.23247800e-01, 1.70383300e+01, + 1.23231000e-01, 1.47887800e+00], + [-2.39271900e-01, -2.61562100e-01, -9.30283300e+01, + -2.61384400e-01, -4.71795100e+00], + [7.37246500e-01, 6.08186000e-01, 6.25359600e+01, + 6.06409700e-01, 6.79002300e+00], + [-3.64110000e-02, -3.68626000e-02, -1.41565300e+01, + -3.68621000e-02, -7.17951200e-01], + [2.68833000e-01, 2.47933100e-01, 6.67934100e+01, + 2.47801000e-01, 4.23748400e+00], + [5.96389600e-01, 5.07237700e-01, 1.13265500e+02, + 5.06180100e-01, 8.21890300e+00], + [1.98218000e-02, 1.96923000e-02, 1.00820900e+01, + 1.96923000e-02, 4.47040700e-01], + [7.74936000e-01, 6.34305300e-01, 2.51883900e+02, + 6.32303700e-01, 1.39711800e+01], + [-7.63925100e-01, -1.16591700e+00, -4.93461700e+02, + -1.14588000e+00, -1.94156600e+01], + [-6.23771700e-01, -8.41174800e-01, -4.40679600e+02, + -8.34266300e-01, -1.65796100e+01], + [-1.63272900e-01, -1.73115100e-01, -6.73975900e+01, + -1.73064800e-01, -3.31725800e+00], + [-4.28562500e-01, -5.11932900e-01, -4.73787800e+02, + -5.10507400e-01, -1.42494800e+01], + [8.00693000e-02, 7.80269000e-02, 3.95353400e+01, + 7.80226000e-02, 1.77920500e+00], + [-2.13674400e-01, -2.31127400e-01, -2.15987000e+02, + -2.31005700e-01, -6.79344600e+00], + [-1.63544000e-02, -1.64444000e-02, -1.05642100e+01, + -1.64444000e-02, -4.15657600e-01], + [2.04900500e-01, 1.92372100e-01, 1.10651300e+02, + 1.92309400e-01, 4.76156600e+00], + [-1.94758900e-01, -2.09067700e-01, -2.35484100e+02, + -2.08978200e-01, -6.77219400e+00], + [3.16727400e-01, 2.88367800e-01, 1.87065600e+02, + 2.88162100e-01, 7.69732400e+00], + [6.24234900e-01, 5.27632500e-01, 2.57678500e+02, + 5.26448400e-01, 1.26827400e+01], + [8.30241100e-01, 6.72002100e-01, 2.86513700e+02, + 6.69644800e-01, 1.54232100e+01], + [6.55140000e-03, 6.53710000e-03, 7.92130700e+00, + 6.53710000e-03, 2.27805800e-01], + [3.41595200e-01, 3.08985000e-01, 2.88667600e+02, + 3.08733300e-01, 9.93012900e+00]]) + + self.params = np.array([ + -0.5369833, 6.47296332, 16.20336802, 38.96617431]) + self.bse = np.array([ + 0.13341238, 2.1349966, 3.87411875, 8.19235553]) + + self.aic_R = 328.39209118952965 + + # TODO: the below will fail + self.aic_Stata = 7.381090276021671 + self.deviance = 15.093762327607557 + self.scale = 0.29512089119443752 + self.null_deviance = 27.92207137420696 # from R bug in RPy + # NOTE: our scale is Stata's dispers_p (pearson?) + # TODO: if scale is analagous to Stata's dispersion, then this might be + # where the discrepancies come from? + # self.llf = -159.19604559476483 # From R + self.llf = -173.1461666245201 # From Stata + self.bic_Stata = -155.2390821535193 + self.df_model = 3 + self.df_resid = 44 + self.chi2 = 51.56632068622578 + self.fittedvalues = np.array([ + 6.21019277, 4.06225956, + 7.28415938, 11.04304251, + 8.89510929, 2.98829295, 5.13622616, 7.82114268, + 8.89510929, 7.82114268, 11.04304251, 12.65399242, + 12.11700911, 9.43209259, 12.65399242, 5.67320947, + 11.58002581, 12.65399242, 8.35812599, 11.04304251, + 9.46125627, 10.53522287, 14.294106, 15.36807261, + 19.12695574, 12.68315609, 12.14617279, 18.58997243, + 9.46125627, 18.58997243, 15.90505591, 14.294106, + 20.20092234, 17.51600582, 25.63546061, 26.17244391, + 22.95054409, 28.85736043, 24.0245107, 28.32037713, + 25.63546061, 24.561494, 29.39434374, 25.09847731, + 22.95054409, 21.87657748, 29.39434374, 27.24641052]) + + +class Cpunish(object): + ''' + The following are from the R script in models.datasets.cpunish + Slightly different than published results, but should be correct + Probably due to rounding in cleaning? + ''' + def __init__(self): + self.params = ( + 2.611017e-04, 7.781801e-02, -9.493111e-02, 2.969349e-01, + 2.301183e+00, -1.872207e+01, -6.801480e+00) + self.bse = ( + 5.187132e-05, 7.940193e-02, 2.291926e-02, 4.375164e-01, + 4.283826e-01, 4.283961e+00, 4.146850e+00) + self.null_deviance = 136.57281747225 + self.df_null = 16 + self.deviance = 18.591641759528944 + self.df_resid = 10 + self.df_model = 6 + self.aic_R = 77.8546573896503 # same as Stata + self.aic_Stata = 4.579685683305706 + self.bic_Stata = -9.740492454486446 + self.chi2 = 128.8021169250578 # from Stata not in sm + self.llf = -31.92732869482515 + self.scale = 1 + self.pearson_chi2 = 24.75374835 + self.resids = glm_test_resids.cpunish_resids + self.fittedvalues = np.array([ + 35.2263655, 8.1965744, 1.3118966, + 3.6862982, 2.0823003, 1.0650316, 1.9260424, 2.4171405, + 1.8473219, 2.8643241, 3.1211989, 3.3382067, 2.5269969, + 0.8972542, 0.9793332, 0.5346209, 1.9790936]) + + +class Cpunish_offset(Cpunish): + ''' + Same model as Cpunish but with offset of 100. Many things do not change. + ''' + def __init__(self): + super(Cpunish_offset, self).__init__() + + self.params = ( + -1.140665e+01, 2.611017e-04, 7.781801e-02, + -9.493111e-02, 2.969349e-01, 2.301183e+00, + -1.872207e+01) + self.bse = ( + 4.147e+00, 5.187e-05, 7.940e-02, 2.292e-02, + 4.375e-01, 4.284e-01, 4.284e+00) + + +class InvGauss(object): + ''' + Usef + + Data was generated by Hardin and Hilbe using Stata. + Note only the first 5000 observations are used because + the models code currently uses np.eye. + ''' + # FIXME: do something with the commented-out code below + # np.random.seed(54321) + # x1 = np.abs(stats.norm.ppf((np.random.random(5000)))) + # x2 = np.abs(stats.norm.ppf((np.random.random(5000)))) + # X = np.column_stack((x1, x2)) + # X = add_constant(X) + # params = np.array([.5, -.25, 1]) + # eta = np.dot(X, params) + # mu = 1/np.sqrt(eta) + # sigma = .5 + # This isn't correct. Errors need to be normally distributed + # But Y needs to be Inverse Gaussian, so we could build it up + # by throwing out data? + # Refs: + # * Lai (2009) Generating inverse Gaussian random variates by + # approximation + # * Atkinson (1982) The simulation of generalized inverse gaussian + # and hyperbolic random variables seems to be the canonical ref + # Y = np.dot(X, params) + np.random.wald(mu, sigma, 1000) + # model = GLM(Y, X, family=models.family.InverseGaussian(link=\ + # models.family.links.identity())) + + def __init__(self): + # set up data # + filename = os.path.join(os.path.dirname(os.path.abspath(__file__)), + "inv_gaussian.csv") + with open(filename, 'rb') as fd: + data = np.genfromtxt(fd, delimiter=",", dtype=float)[1:] + self.endog = data[:5000, 0] + self.exog = data[:5000, 1:] + self.exog = add_constant(self.exog, prepend=False) + + # Results + # NOTE: loglikelihood difference in R vs. Stata vs. Models + # is the same situation as gamma + self.params = (0.4519770, -0.2508288, 1.0359574) + self.bse = (0.03148291, 0.02237211, 0.03429943) + self.null_deviance = 1520.673165475461 + self.df_null = 4999 + self.deviance = 1423.943980407997 + self.df_resid = 4997 + self.df_model = 2 + self.aic_R = 5059.41911646446 + self.aic_Stata = 1.552280060977946 + self.bic_Stata = -41136.47039418921 + self.llf = -3877.700354 # Stata is same as ours with scale set to 1 + # self.llf = -2525.70955823223 # from R, close to ours + self.scale = 0.2867266359127567 + self.pearson_chi2 = 1432.771536 + self.resids = glm_test_resids.invgauss_resids + self.fittedvalues = np.array([ + 1.0404339, 0.96831526, 0.81265833, 0.9958362, 1.05433442, + 1.09866137, 0.95548191, 1.38082105, 0.98942888, 0.96521958, + 1.02684056, 0.91412576, 0.91492102, 0.92639676, 0.96763425, + 0.80250852, 0.85281816, 0.90962261, 0.95550299, 0.86386815, + 0.94760134, 0.94269533, 0.98960509, 0.84787252, 0.78949111, + 0.76873582, 0.98933453, 0.95105574, 0.8489395, 0.88962971, + 0.84856357, 0.88567313, 0.84505405, 0.84626147, 0.77250421, + 0.90175601, 1.15436378, 0.98375558, 0.83539542, 0.82845381, + 0.90703971, 0.85546165, 0.96707286, 0.84127197, 0.82096543, + 1.1311227, 0.87617029, 0.91194419, 1.05125511, 0.95330314, + 0.75556148, 0.82573228, 0.80424982, 0.83800144, 0.8203644, + 0.84423807, 0.98348433, 0.93165089, 0.83968706, 0.79256287, + 1.0302839, 0.90982028, 0.99471562, 0.70931825, 0.85471721, + 1.02668021, 1.11308301, 0.80497105, 1.02708486, 1.07671424, + 0.821108, 0.86373486, 0.99104964, 1.06840593, 0.94947784, + 0.80982122, 0.95778065, 1.0254212, 1.03480946, 0.83942363, + 1.17194944, 0.91772559, 0.92368795, 1.10410916, 1.12558875, + 1.11290791, 0.87816503, 1.04299294, 0.89631173, 1.02093004, + 0.86331723, 1.13134858, 1.01807861, 0.98441692, 0.72567667, + 1.42760495, 0.78987436, 0.72734482, 0.81750166, 0.86451854, + 0.90564264, 0.81022323, 0.98720325, 0.98263709, 0.99364823, + 0.7264445, 0.81632452, 0.7627845, 1.10726938, 0.79195664, + 0.86836774, 1.01558149, 0.82673675, 0.99529548, 0.97155636, + 0.980696, 0.85460503, 1.00460782, 0.77395244, 0.81229831, + 0.94078297, 1.05910564, 0.95921954, 0.97841172, 0.93093166, + 0.93009865, 0.89888111, 1.18714408, 0.98964763, 1.03388898, + 1.67554215, 0.82998876, 1.34100687, 0.86766346, 0.96392316, + 0.91371033, 0.76589296, 0.92329051, 0.82560326, 0.96758148, + 0.8412995, 1.02550678, 0.74911108, 0.8751611, 1.01389312, + 0.87865556, 1.24095868, 0.90678261, 0.85973204, 1.05617845, + 0.94163038, 0.88087351, 0.95699844, 0.86083491, 0.89669384, + 0.78646825, 1.0014202, 0.82399199, 1.05313139, 1.06458324, + 0.88501766, 1.19043294, 0.8458026, 1.00231535, 0.72464305, + 0.94790753, 0.7829744, 1.1953009, 0.85574035, 0.95433052, + 0.96341484, 0.91362908, 0.94097713, 0.87273804, 0.81126399, + 0.72715262, 0.85526116, 0.76015834, 0.8403826, 0.9831501, + 1.17104665, 0.78862494, 1.01054909, 0.91511601, 1.0990797, + 0.91352124, 1.13671162, 0.98793866, 1.0300545, 1.04490115, + 0.85778231, 0.94824343, 1.14510618, 0.81305136, 0.88085051, + 0.94743792, 0.94875465, 0.96206997, 0.94493612, 0.93547218, + 1.09212018, 0.86934651, 0.90532353, 1.07066001, 1.26197714, + 0.93858662, 0.9685039, 0.7946546, 1.03052031, 0.75395899, + 0.87527062, 0.82156476, 0.949774, 1.01000235, 0.82613526, + 1.0224591, 0.91529149, 0.91608832, 1.09418385, 0.8228272, + 1.06337472, 1.05533176, 0.93513063, 1.00055806, 0.95474743, + 0.91329368, 0.88711836, 0.95584926, 0.9825458, 0.74954073, + 0.96964967, 0.88779583, 0.95321846, 0.95390055, 0.95369029, + 0.94326714, 1.31881201, 0.71512263, 0.84526602, 0.92323824, + 1.01993108, 0.85155992, 0.81416851, 0.98749128, 1.00034192, + 0.98763473, 1.05974138, 1.05912658, 0.89772172, 0.97905626, + 1.1534306, 0.92304181, 1.16450278, 0.7142307, 0.99846981, + 0.79861247, 0.73939835, 0.93776385, 1.0072242, 0.89159707, + 1.05514263, 1.05254569, 0.81005146, 0.95179784, 1.00278795, + 1.04910398, 0.88427798, 0.74394266, 0.92941178, 0.83622845, + 0.84064958, 0.93426956, 1.03619314, 1.22439347, 0.73510451, + 0.82997071, 0.90828036, 0.80866989, 1.34078212, 0.85079169, + 0.88346039, 0.76871666, 0.96763454, 0.66936914, 0.94175741, + 0.97127617, 1.00844382, 0.83449557, 0.88095564, 1.17711652, + 1.0547188, 1.04525593, 0.93817487, 0.77978294, 1.36143199, + 1.16127997, 1.03792952, 1.03151637, 0.83837387, 0.94326066, + 1.0054787, 0.99656841, 1.05575689, 0.97641643, 0.85108163, + 0.82631589, 0.77407305, 0.90566132, 0.91308164, 0.95560906, + 1.04523011, 1.03773723, 0.97378685, 0.83999133, 1.06926871, + 1.01073982, 0.9804959, 1.06473061, 1.25315673, 0.969175, + 0.63443508, 0.84574684, 1.06031239, 0.93834605, 1.01784925, + 0.93488249, 0.80240225, 0.88757274, 0.9224097, 0.99158962, + 0.87412592, 0.76418199, 0.78044069, 1.03117412, 0.82042521, + 1.10272129, 1.09673757, 0.89626935, 1.01678612, 0.84911824, + 0.95821431, 0.99169558, 0.86853864, 0.92172772, 0.94046199, + 0.89750517, 1.09599258, 0.92387291, 1.07770118, 0.98831383, + 0.86352396, 0.83079533, 0.94431185, 1.12424626, 1.02553104, + 0.8357513, 0.97019669, 0.76816092, 1.34011343, 0.86489527, + 0.82156358, 1.25529129, 0.86820218, 0.96970237, 0.85850546, + 0.97429559, 0.84826078, 1.02498396, 0.72478517, 0.993497, + 0.76918521, 0.91079198, 0.80988325, 0.75431095, 1.02918073, + 0.88884197, 0.82625507, 0.78564563, 0.91505355, 0.88896863, + 0.85882361, 0.81538316, 0.67656235, 0.8564822, 0.82473022, + 0.92928331, 0.98068415, 0.82605685, 1.0150412, 1.00631678, + 0.92405101, 0.88909552, 0.94873568, 0.87657342, 0.8280683, + 0.77596382, 0.96598811, 0.78922426, 0.87637606, 0.98698735, + 0.92207026, 0.71487846, 1.03845478, 0.70749745, 1.08603388, + 0.92697779, 0.86470448, 0.70119494, 1.00596847, 0.91426549, + 1.05318838, 0.79621712, 0.96169742, 0.88053405, 0.98963934, + 0.94152997, 0.88413591, 0.75035344, 0.86007123, 0.83713514, + 0.91234911, 0.79562744, 0.84099675, 1.0334279, 1.00272243, + 0.95359383, 0.84292969, 0.94234155, 0.90190899, 0.97302022, + 1.1009829, 1.0148975, 0.99082987, 0.75916515, 0.9204784, + 0.94477378, 1.01108683, 1.00038149, 0.9259798, 1.19400436, + 0.80191877, 0.79565851, 0.81865924, 0.79003506, 0.8995508, + 0.73137983, 0.88336018, 0.7855268, 1.04478073, 0.90857981, + 1.16076951, 0.76096486, 0.90004113, 0.83819665, 0.95295365, + 1.09911441, 0.78498197, 0.95094991, 0.94333419, 0.95131688, + 0.82961049, 1.08001761, 1.06426458, 0.94291798, 1.04381938, + 0.90380364, 0.74060138, 0.98701862, 0.72250236, 0.86125293, + 0.76488061, 0.9858051, 0.98099677, 0.96849209, 0.90053351, + 0.88469597, 0.80688516, 1.06396217, 1.02446023, 0.911863, + 0.98837746, 0.91102987, 0.92810392, 1.13526335, 1.00419541, + 1.00866175, 0.74352261, 0.91051641, 0.81868428, 0.93538014, + 0.87822651, 0.93278572, 1.0356074, 1.25158731, 0.98372647, + 0.81335741, 1.06441863, 0.80305786, 0.95201148, 0.90283451, + 1.17319519, 0.8984894, 0.88911288, 0.91474736, 0.94512294, + 0.92956283, 0.86682085, 1.08937227, 0.94825713, 0.9787145, + 1.16747163, 0.80863682, 0.98314119, 0.91052823, 0.80913225, + 0.78503169, 0.78751737, 1.08932193, 0.86859845, 0.96847458, + 0.93468839, 1.10769915, 1.1769249, 0.84916138, 1.00556408, + 0.84508585, 0.92617942, 0.93985886, 1.17303268, 0.81172495, + 0.93482682, 1.04082486, 1.03209348, 0.97220394, 0.90274672, + 0.93686291, 0.91116431, 1.14814563, 0.83279158, 0.95853283, + 1.0261179, 0.95779432, 0.86995883, 0.78164915, 0.89946906, + 0.9194465, 0.97919367, 0.92719039, 0.89063569, 0.80847805, + 0.81192101, 0.75044535, 0.86819023, 1.03420014, 0.8899434, + 0.94899544, 0.9860773, 1.10047297, 1.00243849, 0.82153972, + 1.14289945, 0.8604684, 0.87187524, 1.00415032, 0.78460709, + 0.86319884, 0.92818335, 1.08892111, 1.06841003, 1.00735918, + 1.20775251, 0.72613554, 1.25768191, 1.08573511, 0.89671127, + 0.91259535, 1.01414208, 0.87422903, 0.82720677, 0.9568079, + 1.00450416, 0.91043845, 0.84095709, 1.08010574, 0.69848293, + 0.90769214, 0.94713501, 1.14808251, 1.0605676, 1.21734482, + 0.78578521, 1.01516235, 0.94330326, 0.98363817, 0.99650084, + 0.74280796, 0.96227123, 0.95741454, 1.00980406, 0.93468092, + 1.10098591, 1.18175828, 0.8553791, 0.81713219, 0.82912143, + 0.87599518, 1.15006511, 1.03151163, 0.8751847, 1.15701331, + 0.73394166, 0.91426368, 0.96953458, 1.13901709, 0.83028721, + 1.15742641, 0.9395442, 0.98118552, 0.89585426, 0.74147117, + 0.8902096, 1.00212097, 0.97665858, 0.92624514, 0.98006601, + 0.9507215, 1.00889825, 1.2406772, 0.88768719, 0.76587533, + 1.0081044, 0.89608494, 1.00083526, 0.85594415, 0.76425576, + 1.0286636, 1.13570272, 0.82020405, 0.81961271, 1.04586579, + 1.26560245, 0.89721521, 1.19324037, 0.948205, 0.79414261, + 0.85157002, 0.95155101, 0.91969239, 0.87699126, 1.03452982, + 0.97093572, 1.14355781, 0.85088592, 0.79032079, 0.84521733, + 0.99547581, 0.87593455, 0.8776799, 1.05531013, 0.94557017, + 0.91538439, 0.79679863, 1.03398557, 0.88379021, 0.98850319, + 1.05833423, 0.90055078, 0.92267584, 0.76273738, 0.98222632, + 0.86392524, 0.78242646, 1.19417739, 0.89159895, 0.97565002, + 0.85818308, 0.85334266, 1.85008011, 0.87199282, 0.77873231, + 0.78036174, 0.96023918, 0.91574121, 0.89217979, 1.16421151, + 1.29817786, 1.18683283, 0.96096225, 0.89964569, 1.00401442, + 0.80758845, 0.89458758, 0.7994919, 0.85889356, 0.73147252, + 0.7777221, 0.9148438, 0.72388117, 0.91134001, 1.0892724, + 1.01736424, 0.86503014, 0.77344917, 1.04515616, 1.06677211, + 0.93421936, 0.8821777, 0.91860774, 0.96381507, 0.70913689, + 0.82354748, 1.12416046, 0.85989778, 0.90588737, 1.22832895, + 0.65955579, 0.93828405, 0.88946418, 0.92152859, 0.83168025, + 0.93346887, 0.96456078, 0.9039245, 1.03598695, 0.78405559, + 1.21739525, 0.79019383, 0.84034646, 1.00273203, 0.96356393, + 0.948103, 0.90279217, 1.0187839, 0.91630508, 1.15965854, + 0.84203423, 0.98803156, 0.91604459, 0.90986512, 0.93384826, + 0.76687038, 0.96251902, 0.80648134, 0.77336547, 0.85720164, + 0.9351947, 0.88004728, 0.91083961, 1.06225829, 0.90230812, + 0.72383932, 0.8343425, 0.8850996, 1.19037918, 0.93595522, + 0.85061223, 0.84330949, 0.82397482, 0.92075047, 0.86129584, + 0.99296756, 0.84912251, 0.8569699, 0.75252201, 0.80591772, + 1.03902954, 1.04379139, 0.87360195, 0.97452318, 0.93240609, + 0.85406409, 1.11717394, 0.95758536, 0.82772817, 0.67947416, + 0.85957788, 0.93731268, 0.90349227, 0.79464185, 0.99148637, + 0.8461071, 0.95399991, 1.04320664, 0.87290871, 0.96780849, + 0.99467159, 0.96421545, 0.80174643, 0.86475812, 0.74421362, + 0.85230296, 0.89891758, 0.77589592, 0.98331957, 0.87387233, + 0.92023388, 1.03037742, 0.83796515, 1.0296667, 0.85891747, + 1.02239978, 0.90958406, 1.09731875, 0.8032638, 0.84482057, + 0.8233118, 0.86184709, 0.93105929, 0.99443502, 0.77442109, + 0.98367982, 0.95786272, 0.81183444, 1.0526009, 0.86993018, + 0.985886, 0.92016756, 1.00847155, 1.2309469, 0.97732206, + 0.83074957, 0.87406987, 0.95268492, 0.94189139, 0.87056443, + 1.0135018, 0.93051004, 1.5170931, 0.80948763, 0.83737473, + 1.05461331, 0.97501633, 1.01449333, 0.79760056, 1.05756482, + 0.97300884, 0.92674035, 0.8933763, 0.91624084, 1.13127607, + 0.88115305, 0.9351562, 0.91430431, 1.11668229, 1.10000526, + 0.88171963, 0.74914744, 0.94610698, 1.13841497, 0.90551414, + 0.89773592, 1.01696097, 0.85096063, 0.80935471, 0.68458106, + 1.2718979, 0.93550219, 0.96071403, 0.75434294, 0.95112257, + 1.16233368, 0.73664915, 1.02195777, 1.07487625, 0.8937445, + 0.78006023, 0.89588994, 1.16354892, 1.02629448, 0.89208642, + 1.02088244, 0.85385355, 0.88586061, 0.94571704, 0.89710576, + 0.95191525, 0.99819848, 0.97117841, 1.13899808, 0.88414949, + 0.90938883, 1.02937917, 0.92936684, 0.87323594, 0.8384819, + 0.87766945, 1.05869911, 0.91028734, 0.969953, 1.11036647, + 0.94996802, 1.01305483, 1.03697568, 0.9750155, 1.04537837, + 0.9314676, 0.86589798, 1.17446667, 1.02564533, 0.82088708, + 0.96481845, 0.86148642, 0.79174298, 1.18029919, 0.82132544, + 0.92193776, 1.03669516, 0.96637464, 0.83725933, 0.88776321, + 1.08395861, 0.91255709, 0.96884738, 0.89840008, 0.91168146, + 0.99652569, 0.95693101, 0.83144932, 0.99886503, 1.02819927, + 0.95273533, 0.95959945, 1.08515986, 0.70269432, 0.79529303, + 0.93355669, 0.92597539, 1.0745695, 0.87949758, 0.86133964, + 0.95653873, 1.09161425, 0.91402143, 1.13895454, 0.89384443, + 1.16281703, 0.8427015, 0.7657266, 0.92724079, 0.95383649, + 0.86820891, 0.78942366, 1.11752711, 0.97902686, 0.87425286, + 0.83944794, 1.12576718, 0.9196059, 0.89844835, 1.10874172, + 1.00396783, 0.9072041, 1.63580253, 0.98327489, 0.68564426, + 1.01007087, 0.92746473, 1.01328833, 0.99584546, 0.86381679, + 1.0082541, 0.85414132, 0.87620981, 1.22461203, 1.03935516, + 0.86457326, 0.95165828, 0.84762138, 0.83080254, 0.84715241, + 0.80323344, 1.09282941, 1.00902453, 1.02834261, 1.09810743, + 0.86560231, 1.31568763, 1.03754782, 0.81298745, 1.14500629, + 0.87364384, 0.89928367, 0.96118471, 0.83321743, 0.90590461, + 0.98739499, 0.79408399, 1.18513754, 1.05619307, 0.99920088, + 1.04347259, 1.07689022, 1.24916765, 0.74246274, 0.90949597, + 0.87077335, 0.81233276, 1.05403934, 0.98333063, 0.77689527, + 0.93181907, 0.98853585, 0.80700332, 0.89570662, 0.97102475, + 0.69178123, 0.72950409, 0.89661719, 0.84821737, 0.8724469, + 0.96453177, 0.9690018, 0.87132764, 0.91711564, 1.79521288, + 0.75894855, 0.90733112, 0.86565687, 0.90433268, 0.83412618, + 1.26779628, 1.06999114, 0.73181364, 0.90334838, 0.86634581, + 0.76999285, 1.55403008, 0.74712547, 0.84702579, 0.72396203, + 0.82292773, 0.73633208, 0.90524618, 0.9954355, 0.85076517, + 0.96097585, 1.21655611, 0.77658146, 0.81026686, 1.07540173, + 0.94219623, 0.97472554, 0.72422803, 0.85055855, 0.85905477, + 1.17391419, 0.87644114, 1.03573284, 1.16647944, 0.87810532, + 0.89134419, 0.83531593, 0.93448128, 1.04967869, 1.00110843, + 0.936784, 1.00143426, 0.79714807, 0.82656251, 0.95057309, + 0.93821813, 0.93469098, 0.99825205, 0.95384714, 1.07063008, + 0.97603699, 0.816668, 0.98286184, 0.86061483, 0.88166732, + 0.93730982, 0.77633837, 0.87671549, 0.99192439, 0.86452825, + 0.95880282, 0.7098419, 1.12717149, 1.16707939, 0.84854333, + 0.87486963, 0.9255293, 1.06534197, 0.9888494, 1.09931069, + 1.21859221, 0.97489537, 0.82508579, 1.14868922, 0.98076133, + 0.85524084, 0.69042079, 0.93012936, 0.96908499, 0.94284892, + 0.80114327, 0.919846, 0.95753354, 1.04536666, 0.77109284, + 0.99942571, 0.79004323, 0.91820045, 0.97665489, 0.64689716, + 0.89444405, 0.96106598, 0.74196857, 0.92905294, 0.70500318, + 0.95074586, 0.98518665, 1.0794044, 1.00364488, 0.96710486, + 0.92429638, 0.94383006, 1.12554253, 0.95199191, 0.87380738, + 0.72183594, 0.94453761, 0.98663804, 0.68247366, 1.02761427, + 0.93255355, 0.85264705, 1.00341417, 1.07765999, 0.97396039, + 0.90770805, 0.82750901, 0.73824542, 1.24491161, 0.83152629, + 0.78656996, 0.99062838, 0.98276905, 0.98291014, 1.12795903, + 0.98742704, 0.9579893, 0.80451701, 0.87198344, 1.24746127, + 0.95839155, 1.11708725, 0.97113877, 0.7721646, 0.95781621, + 0.67069168, 1.05509376, 0.96071852, 0.99768666, 0.83008521, + 0.9156695, 0.86314088, 1.23081412, 1.14723685, 0.8007289, + 0.81590842, 1.31857558, 0.7753396, 1.11091566, 1.03560198, + 1.01837739, 0.94882818, 0.82551111, 0.93188019, 0.99532255, + 0.93848495, 0.77764975, 0.85192319, 0.79913938, 0.99495229, + 0.96122733, 1.13845155, 0.95846389, 0.8891543, 0.97979531, + 0.87167192, 0.88119611, 0.79655111, 0.9298217, 0.96399321, + 1.02005428, 1.06936503, 0.86948022, 1.02560548, 0.9149464, + 0.83797207, 0.86175383, 0.92455994, 0.89218435, 0.81546463, + 0.98488771, 0.92784833, 0.87895608, 0.93366386, 1.17487238, + 0.79088952, 0.9237694, 0.76389869, 0.931953, 0.76272078, + 1.00304977, 0.86612561, 0.87870143, 0.93808276, 1.12489343, + 1.00668791, 0.88027101, 0.88845209, 0.88574216, 0.84284514, + 0.96594357, 0.94363002, 0.78245367, 0.92941326, 0.99622557, + 0.83812683, 0.77901691, 0.9588432, 0.82057415, 0.95178868, + 1.01904651, 0.97598844, 0.99369336, 1.12041918, 1.19432836, + 0.91709572, 0.94645855, 0.93656587, 0.68754669, 0.80869784, + 0.86704186, 0.83033797, 0.71892193, 0.97549489, 1.12150683, + 0.76214802, 1.08564181, 0.84677802, 0.68080207, 1.03577057, + 1.07937239, 0.6773357, 1.0279076, 0.89945816, 0.97765439, + 0.91322633, 0.92490964, 0.92693575, 1.12297137, 0.81825246, + 0.87598377, 1.11873032, 0.83472799, 1.21424495, 1.02318444, + 1.01563195, 1.05663193, 0.82533918, 0.88766496, 0.95906474, + 0.90738779, 0.93509534, 1.06658145, 1.00231797, 1.3131534, + 0.88839464, 1.081006, 0.866936, 0.89030904, 0.91197562, + 0.73449761, 0.95767806, 1.03407868, 0.79812826, 1.10555445, + 0.85610722, 0.87420881, 1.04251375, 1.14286242, 1.00025972, + 0.83742693, 1.11116502, 0.97424809, 0.92059325, 0.93958773, + 0.80386755, 0.6881267, 0.88620708, 1.01715536, 1.12403581, + 0.91078992, 0.81101399, 1.17271429, 1.09980447, 0.86063042, + 0.80805811, 0.87988444, 0.97398188, 0.91808966, 0.90676805, + 0.80042891, 0.84060789, 0.9710147, 1.00012669, 1.04805667, + 0.66912164, 0.96111694, 0.86948596, 0.9056999, 1.01489333, + 1.27876763, 0.873881, 0.98276702, 0.95553234, 0.82877996, + 0.79697623, 0.77015376, 0.8234212, 1.13394959, 0.96244655, + 1.06516156, 0.82743856, 1.02931842, 0.78093489, 1.01322256, + 1.00348929, 0.9408142, 1.06495299, 0.8599522, 0.81640723, + 0.81505589, 1.02506487, 0.91148383, 1.11134309, 0.83992234, + 0.82982074, 0.9721429, 0.98897262, 1.01815004, 0.87838456, + 0.80573592, 1.103707, 0.97326218, 1.08921236, 1.2638062, + 0.83142563, 1.16028769, 0.86701564, 1.15610014, 0.98303722, + 0.87138463, 0.75281511, 1.07715535, 0.91526065, 1.08769832, + 0.83598308, 1.03580956, 0.9390066, 0.78544378, 1.03635836, + 0.7974467, 0.99273331, 0.89639711, 0.9250066, 1.14323824, + 0.9783478, 1.15460639, 0.94265587, 1.09317654, 0.78585439, + 0.99523323, 0.95104776, 0.85582572, 0.96100168, 0.9131529, + 0.86496966, 0.72414589, 1.05142704, 0.85570039, 0.98217968, + 0.99031168, 1.01867086, 0.96781667, 0.98581487, 1.00415938, + 1.0339337, 1.13987579, 1.14205543, 0.83393745, 0.96348647, + 0.91895164, 0.77055293, 1.0053723, 0.93168993, 1.00332386, + 1.04195993, 1.11933891, 0.87439883, 0.87156457, 0.96050419, + 0.72718399, 1.13546762, 0.89614816, 0.85081037, 0.8831463, + 0.76370482, 0.99582951, 1.01844155, 1.08611311, 1.15832217, + 1.17551069, 0.97057262, 0.95163548, 0.98310701, 0.65874788, + 0.9655409, 0.85675853, 1.34637286, 0.93779619, 1.0005791, + 0.88104966, 1.14530829, 0.93687034, 1.01472112, 1.62464726, + 0.84652357, 0.84639676, 0.87513324, 0.94837881, 0.85425129, + 0.89820401, 0.94906277, 0.97796792, 0.98969445, 0.8036801, + 1.03936478, 0.95898918, 0.82919938, 1.29609354, 0.97833841, + 0.86862799, 0.88040491, 0.8741178, 0.80617278, 0.95983882, + 0.9752235, 0.84292828, 0.9327284, 0.93297136, 1.06255543, + 0.88756716, 1.13601403, 0.72311518, 0.95250034, 0.95369843, + 1.02562728, 0.74354691, 0.78463923, 0.88720818, 1.07763289, + 0.94502062, 0.81170329, 0.96516347, 0.76884811, 0.84169312, + 0.83752837, 1.1487847, 1.04311868, 0.78128663, 0.74604211, + 0.96488513, 1.1722513, 0.91661948, 1.06642815, 0.92185781, + 0.93289001, 0.65208625, 0.75734648, 0.99580571, 1.21871511, + 0.96316283, 1.06093093, 0.7914337, 0.90494572, 0.79235327, + 0.90771769, 0.91355145, 0.98754767, 0.88938619, 0.89503537, + 0.82764566, 0.77267065, 0.81520031, 0.90423926, 0.94289609, + 0.88678376, 1.03209085, 0.81319963, 0.91600997, 0.81608666, + 0.72429125, 0.95585073, 1.14039309, 1.00326452, 0.99629944, + 0.95647901, 0.8927127, 0.96558599, 0.86305195, 1.0366906, + 0.90494731, 0.95148458, 1.11229696, 1.17059748, 0.74867876, + 0.99621909, 0.94246499, 0.82403515, 0.92144961, 0.93209989, + 0.9705427, 0.97915309, 0.92431525, 0.7589944, 0.75208652, + 0.89375154, 0.78820016, 1.24061454, 1.08031776, 0.88364539, + 0.86909794, 0.98635253, 0.97620372, 1.24278282, 1.01146474, + 0.93726261, 0.94411536, 1.08344492, 0.75389972, 1.09979822, + 0.84271329, 1.16616317, 0.88177625, 0.8451345, 0.91355741, + 0.99833789, 0.86172172, 0.87076203, 0.83743078, 0.99771528, + 1.0469295, 0.87952668, 1.04362453, 0.96350831, 0.95744466, + 0.84284283, 0.8773066, 0.85984544, 1.00589365, 0.88069101, + 1.02331332, 1.06616241, 0.78475212, 1.02296979, 0.81480926, + 1.09008244, 0.71435844, 0.79655626, 1.09824162, 0.87785428, + 1.18020492, 0.99852432, 0.79028362, 0.80081103, 1.10940685, + 1.08752313, 0.90673214, 0.84978348, 0.69466992, 0.77497046, + 0.83074014, 0.87865947, 0.78890395, 0.7925195, 0.99749611, + 0.91430636, 0.87863864, 0.95392862, 0.91430684, 0.97358575, + 0.87999755, 0.88234274, 0.71682337, 1.09723693, 0.71907671, + 0.97487202, 0.71792963, 0.88374828, 0.73386811, 0.9315647, + 1.05020628, 0.99128682, 0.71831173, 1.07119604, 1.02028122, + 1.04696848, 0.93335813, 1.04275931, 0.72181913, 0.8837163, + 0.90283411, 0.96642474, 0.89851984, 0.8397063, 0.91185676, + 1.00573193, 0.88430729, 0.7738957, 1.07361285, 0.92617819, + 0.64251751, 1.05229257, 0.73378537, 1.08270418, 0.99490809, + 1.13634433, 1.11979997, 1.03383516, 1.00661234, 1.05778729, + 1.05977357, 1.13779694, 0.91237075, 1.04866775, 0.9163203, + 0.93152436, 0.83607634, 1.13426049, 1.26438419, 0.93515536, + 0.92181847, 0.86558905, 1.01985742, 1.44095931, 0.92256398, + 0.83369288, 0.93369164, 0.8243758, 0.98278708, 0.80512458, + 1.02092014, 0.73575074, 1.2214659, 0.85391033, 0.97617313, + 0.82054292, 1.04792993, 0.93961791, 1.01145014, 0.89301558, + 0.93167504, 0.88221321, 1.23543354, 0.97023998, 1.00197517, + 0.85394662, 0.89426495, 0.81344186, 1.08242456, 0.76253284, + 1.00642867, 0.76685541, 1.01487961, 0.84028343, 0.87979545, + 0.92796937, 0.99796437, 1.28844084, 1.02827514, 1.03663144, + 0.83164521, 0.95644234, 0.77797914, 0.96748275, 1.09139879, + 0.84329253, 0.9539873, 0.80094065, 1.13771172, 0.91557533, + 0.93370323, 0.79977904, 1.02721929, 1.16292026, 0.92976802, + 0.85806865, 0.97824974, 1.02721582, 0.82773004, 0.9297126, + 0.93769842, 1.14995068, 1.02895292, 0.90307101, 0.85918303, + 1.14903979, 1.0344768, 0.7502627, 1.27452448, 1.12150928, + 0.87274005, 1.09807041, 0.98634666, 1.03086907, 0.94743667, + 0.91145542, 1.04395791, 0.83396016, 0.94783374, 0.96693806, + 0.88864359, 0.93400675, 1.08563936, 0.78599906, 0.92142347, + 1.15487344, 1.19946426, 0.92729226, 0.83333347, 0.90837637, + 0.89191831, 1.0581614, 0.85162688, 1.10081699, 0.98295351, + 0.86684217, 1.00867408, 0.95966205, 0.73170785, 1.3207658, + 0.87988622, 0.82869937, 0.9620586, 0.71668579, 1.04105616, + 0.71415591, 1.30198958, 0.81934393, 0.86731955, 0.99773712, + 0.99943609, 0.87678188, 1.01650692, 0.73917494, 0.92077402, + 0.98322263, 0.90623212, 0.88261034, 1.12798871, 0.84698889, + 0.85312827, 0.91214965, 0.8778361, 0.99621569, 0.94155734, + 0.66441342, 0.85925635, 0.98064691, 0.97107172, 0.96438785, + 0.95670408, 0.87601389, 0.9388234, 0.91165254, 1.14769638, + 0.99856344, 0.84391431, 0.94850194, 0.93754548, 0.86398937, + 0.95090327, 1.07959765, 1.16684297, 0.82354834, 0.93165852, + 0.91422292, 1.14872038, 0.87050113, 0.92322683, 1.04111597, + 0.87780005, 0.94602618, 1.10071675, 0.88412438, 0.91286998, + 0.9045216, 0.91750005, 0.98647095, 1.10986959, 0.98912028, + 1.01565645, 0.93891294, 0.97696431, 0.91186476, 0.77363533, + 1.00075969, 0.89608139, 0.99828964, 0.87239569, 0.87540604, + 0.76152791, 0.82501538, 0.91656546, 0.74389243, 1.07923575, + 1.00241137, 1.05628365, 1.04407879, 0.90048788, 1.1134027, + 0.89745966, 0.96534, 0.71151925, 0.91798511, 0.7337992, + 0.83636115, 0.75279928, 0.95570185, 0.89073922, 0.90307955, + 0.8030445, 0.84374939, 0.89769981, 0.99002578, 1.01849373, + 0.92436541, 0.79675699, 1.03910383, 1.07487895, 0.8906169, + 0.97729004, 0.97284392, 0.76338988, 0.82756432, 1.12289431, + 0.9582901, 0.97160038, 0.90141331, 0.83271234, 1.16065947, + 0.90605662, 1.13389282, 0.8557889, 0.77149889, 0.9462268, + 0.95908887, 1.03399986, 0.92795031, 0.73529029, 0.93630494, + 0.96730298, 1.05490026, 0.93313995, 0.96980639, 0.9177592, + 0.95483326, 0.85262905, 0.95170479, 0.9601628, 0.94878173, + 0.87627934, 1.00561764, 0.83441231, 0.90890643, 0.97177858, + 1.26394809, 0.80773622, 0.72205262, 0.87692143, 1.01842034, + 0.98128171, 1.10776014, 0.94400422, 0.92697961, 0.79523284, + 0.8609763, 0.96303262, 1.17190075, 1.01259271, 1.04973619, + 0.94837034, 0.86592734, 0.85908444, 1.14914962, 0.98113587, + 1.03070712, 0.89916573, 0.90618114, 0.93223156, 0.96031901, + 0.94162334, 0.98908438, 0.95170104, 0.95056422, 0.81782932, + 0.81770133, 1.32039255, 1.28822384, 0.82916292, 1.01626284, + 0.97537737, 0.83235746, 0.78645733, 0.77916206, 0.93591612, + 0.8469273, 0.74309279, 0.91331015, 1.11240033, 1.41018987, + 0.95320314, 0.95807535, 0.89382722, 0.9259679, 0.92570222, + 0.84567759, 0.82332966, 0.98371126, 1.00248628, 0.72107053, + 1.09687436, 0.78399705, 0.85224803, 0.92151262, 0.85618586, + 0.88485527, 0.954487, 0.86659146, 1.12800711, 0.93019359, + 0.91388385, 0.95298992, 0.96834137, 0.90256791, 1.01222062, + 0.84883116, 1.01234642, 0.91135106, 0.83362478, 0.94928359, + 0.82247066, 0.7671973, 0.85663382, 0.88838144, 0.92491567, + 0.88698604, 0.87485584, 1.08494606, 0.96431031, 1.06243095, + 1.14062212, 1.02081623, 0.72229471, 0.82390737, 0.86599633, + 0.95284398, 0.87238315, 1.02818071, 0.98462575, 0.81992808, + 1.01207538, 1.0081178, 0.88458825, 1.01726135, 0.97708359, + 0.79820777, 1.06081843, 0.97028599, 0.95203124, 1.00482088, + 0.71764193, 0.88115767, 0.90628038, 0.97304174, 0.77015983, + 1.06109546, 0.89575454, 0.94824633, 0.93822134, 0.98048549, + 0.812265, 0.95744328, 0.79087999, 1.0222571, 0.89100453, + 1.03590214, 0.92699983, 0.86840126, 0.99455198, 0.87912973, + 0.93506231, 0.80706147, 0.89931563, 0.7861299, 0.89253527, + 0.90052785, 0.82420191, 0.97042004, 1.03249619, 0.92354267, + 0.80482118, 0.9007601, 0.80123508, 0.82285143, 0.88105118, + 1.03519622, 0.8620259, 0.96447485, 0.80399664, 1.00324939, + 0.96317193, 0.83260244, 0.98561657, 0.88445103, 0.70777743, + 0.81608832, 0.98073402, 1.1206105, 0.69903403, 0.84353026, + 0.9064964, 0.97055276, 0.82747966, 0.85400205, 1.01205886, + 0.85324973, 0.90899616, 0.92797575, 0.94646632, 0.89358892, + 0.7981183, 0.96559671, 0.88352248, 1.09804477, 0.79152196, + 1.1054838, 0.93272283, 0.96165854, 0.8899703, 0.8792494, + 0.74563326, 0.85371604, 0.87760912, 0.87184716, 0.92049887, + 0.99459292, 0.93699011, 0.90492494, 1.12981885, 1.10621082, + 0.91391466, 1.05207781, 1.13395097, 0.87022945, 0.93165871, + 0.89083332, 0.99584874, 0.98626911, 1.13885184, 1.17350384, + 0.93294232, 0.79602714, 0.93670114, 1.09726582, 1.05378961, + 0.9457279, 1.03257053, 1.11349021, 0.80111296, 0.96415105, + 0.99447221, 0.75745769, 0.77537636, 0.83860967, 0.90122484, + 0.78850128, 1.19877642, 0.91190085, 0.80851919, 0.79484738, + 0.93093657, 0.87619908, 1.22781715, 0.89734952, 0.8678127, + 0.76177975, 0.82089769, 0.89288915, 1.01603179, 0.95279916, + 0.84037366, 0.99962719, 0.84298093, 0.77234882, 0.99876963, + 1.01856707, 1.2133211, 0.73822878, 0.83465671, 1.08879938, + 0.8878534, 1.24133317, 0.89264527, 0.83938655, 1.03853109, + 0.9842176, 0.94257497, 0.98282054, 0.90632313, 0.75810741, + 1.02540204, 0.86648513, 0.98430307, 0.84561701, 1.13483974, + 1.12446434, 1.00220923, 1.23248603, 0.98999724, 0.81980761, + 0.91334393, 0.92831557, 1.16798373, 0.8888053, 0.9319632, + 0.89206108, 0.86764558, 0.69337981, 0.9021983, 1.09931186, + 1.15290804, 0.62304114, 1.1205393, 1.27030677, 1.12718725, + 0.93002501, 0.83367301, 0.96589068, 0.86578968, 0.79204086, + 0.85124905, 0.89121046, 0.96406141, 0.99249204, 0.93363878, + 1.11258502, 0.92020983, 1.16020824, 0.99075915, 0.73994574, + 0.9335638, 0.97410789, 1.00029038, 1.43611904, 0.93089581, + 0.94758878, 0.84808364, 0.92192819, 1.0249259, 0.69529827, + 0.94629021, 0.7330735, 1.07902207, 0.93022729, 0.77375973, + 0.95019291, 0.92333668, 0.81483081, 0.78044978, 0.85101115, + 0.88859716, 0.88720344, 0.89291167, 1.10372601, 0.91132273, + 1.04156844, 0.94867703, 0.83546241, 0.84227545, 0.97043199, + 0.73281541, 0.74512501, 0.9128489, 0.99223543, 0.7319106, + 0.93065507, 1.07907995, 0.86895295, 0.84344015, 0.89394039, + 0.88802964, 1.00580322, 1.04286883, 0.82233574, 1.0279258, + 0.97550628, 1.03867605, 1.10231813, 0.9642628, 0.91684874, + 1.11066089, 0.99439688, 0.88595489, 0.88725073, 0.78921585, + 0.80397616, 0.71088468, 0.98316478, 0.72820659, 0.96964036, + 1.03825415, 1.01438989, 1.02763769, 1.29949298, 1.06450406, + 0.86198627, 0.85588074, 0.90445183, 1.01268187, 0.87927487, + 0.9263951, 0.93582126, 0.88738294, 1.20707424, 0.92887657, + 0.97891062, 0.92893689, 0.84846424, 0.96287008, 0.99565057, + 0.93483385, 1.21357183, 0.82369562, 0.65144728, 1.11249654, + 0.7785981, 0.88248898, 0.8953217, 0.95884666, 0.77538093, + 0.82272417, 0.91073072, 1.17185169, 0.99645708, 0.88693463, + 0.90293325, 0.93368474, 0.87575633, 1.01924242, 0.80011545, + 0.99762674, 0.75834671, 0.91952152, 0.86754419, 0.81073894, + 0.8880299, 0.74868718, 0.99979109, 0.90652154, 0.92463566, + 0.93894041, 0.92370595, 0.88766357, 1.04614978, 1.77193759, + 0.85480724, 0.85208602, 0.96154559, 0.95832935, 0.84210613, + 0.9604567, 0.88597666, 1.0010723, 0.91890105, 1.10529207, + 0.91123688, 0.88466788, 1.09759195, 0.8946647, 0.78066485, + 1.04376296, 1.02951755, 0.88455241, 0.99284282, 0.82423576, + 0.80612213, 0.80915541, 0.9482253, 0.8887192, 0.86163309, + 0.891385, 0.84850622, 1.03353375, 1.09248204, 1.05337218, + 0.85927317, 0.89167858, 1.04868715, 0.92933249, 1.1177299, + 0.99846776, 0.82418972, 0.86041965, 0.88015748, 0.89785813, + 0.85997945, 0.97102367, 0.86679181, 1.00848475, 0.9091588, + 0.92565039, 0.84019067, 0.86978485, 1.21977681, 1.14920817, + 1.05177219, 0.84202905, 0.85356083, 1.01379321, 0.93364219, + 1.01999942, 0.85906744, 0.98178266, 0.87218886, 0.93983742, + 0.79713053, 1.01123331, 0.86551625, 0.81983929, 0.86782985, + 0.86735664, 1.43316935, 0.8490094, 0.99909103, 0.85715326, + 0.89452366, 1.08380518, 0.74686847, 1.62233058, 0.81046611, + 0.83563461, 0.96925792, 0.82863186, 0.87147202, 0.92609558, + 0.8879082, 0.93933353, 0.90043906, 0.81677055, 0.78016427, + 0.68871014, 0.83329967, 0.81570171, 0.89780443, 0.81337668, + 1.00772749, 0.96220158, 0.90035459, 1.06031906, 0.85832752, + 0.93636203, 0.96336629, 0.94686138, 0.98499419, 0.87223701, + 0.96079992, 0.81302793, 0.99287479, 0.99369685, 1.21897038, + 0.94547481, 0.80785132, 1.02033902, 0.93270741, 0.90386512, + 1.05290969, 1.08873223, 0.81226537, 0.87185463, 0.96283379, + 0.95065022, 1.07603824, 1.22279786, 0.83749284, 0.93504869, + 0.93554565, 0.95255889, 0.96665227, 0.92370811, 0.76627742, + 1.14267254, 0.98268052, 1.10017739, 0.79569048, 0.86494449, + 1.17939799, 0.80655859, 0.76799971, 1.0018905, 0.83051793, + 1.37419036, 1.10424623, 0.93729691, 0.99655914, 0.94900303, + 1.157402, 0.93397459, 0.8133195, 0.8592273, 1.024661, + 0.83708977, 1.06537435, 0.93561942, 1.00402051, 0.68981047, + 0.92807172, 0.72192097, 1.232419, 0.97080757, 0.90350598, + 0.95122672, 1.04663207, 0.79080723, 0.8421381, 1.01956925, + 0.93307897, 0.88011784, 0.78674974, 0.97537097, 0.7582792, + 0.85704507, 0.97683858, 0.7739793, 0.96245444, 0.99506991, + 0.76853035, 0.90875698, 0.97951121, 0.93350388, 1.16380858, + 0.8154485, 1.16902243, 0.98644779, 0.969998, 0.73120517, + 1.19059456, 0.85953661, 0.99193867, 0.88144929, 0.99254885, + 1.02956121, 0.90689455, 0.89494433, 0.85625065, 0.86227273, + 0.99830845, 0.97635222, 0.83420327, 1.02359646, 0.93694813, + 0.88462353, 0.97040788, 1.02543309, 0.91904348, 1.2527365, + 0.82235812, 0.92026753, 0.93935859, 0.88919482, 1.00405208, + 1.06835782, 1.34738363, 0.97831176, 0.92053317, 1.09692339, + 0.86156677, 1.02455351, 1.25572326, 0.89721167, 0.95787106, + 0.85059479, 0.92044416, 0.99210399, 0.94334232, 0.76604642, + 0.8239008, 0.70790815, 1.06013034, 1.12729012, 0.88584074, + 0.91995677, 0.82002708, 0.91612106, 0.86556894, 0.88014564, + 0.95764757, 0.96559535, 0.97882426, 0.70725389, 0.9273384, + 0.86511581, 0.85436928, 1.26804081, 1.02018914, 0.95359667, + 0.89336753, 0.91851577, 0.78166458, 1.02673106, 1.01340992, + 1.34916703, 0.77389899, 1.12009884, 0.94523179, 0.87991868, + 0.82919239, 0.98198121, 0.83653977, 0.91748611, 1.0642761, + 0.86964263, 0.86304793, 1.11500797, 0.7234409, 1.00464282, + 1.01835251, 0.73389264, 0.88471293, 0.85754755, 1.05383962, + 0.73121546, 0.85445808, 0.768308, 0.81396206, 1.01261272, + 0.76696225, 1.01770784, 0.76742866, 0.98390583, 0.96277488, + 0.87998292, 0.85264282, 1.12704234, 0.79612317, 0.92206712, + 1.09846877, 0.99874997, 0.87707457, 1.03404785, 1.00726392, + 0.91613763, 0.74242708, 0.80247702, 0.90702146, 0.81638055, + 0.78507729, 1.00066404, 0.84687328, 0.76488847, 0.89697089, + 0.82524207, 0.84940145, 1.022041, 0.75856559, 1.15434195, + 1.09781849, 0.93256477, 0.96021119, 1.00796782, 0.88193493, + 0.87902107, 0.82245196, 1.04739362, 1.133521, 0.82969043, + 1.01007529, 1.07135903, 0.981338, 0.86178089, 0.77930618, + 0.82512349, 1.2017057, 1.30452154, 1.12652148, 1.03670177, + 0.90631643, 0.74222362, 0.84452965, 0.86366363, 0.79192948, + 1.10288297, 0.9554774, 1.00912465, 0.95545229, 0.93584303, + 0.91604017, 0.91681165, 0.76792072, 1.66615421, 0.99044246, + 1.05068209, 0.88197497, 0.91153792, 0.82702508, 0.95182748, + 1.05320356, 0.8466656, 1.01676717, 0.65881123, 1.02589358, + 1.03902555, 1.00199915, 1.03022137, 0.93427176, 0.94600332, + 0.94594696, 0.86465228, 0.91241272, 0.72232997, 0.93380167, + 1.1960032, 0.87463367, 0.78428202, 0.88088, 0.97202961, + 0.99425528, 0.89567214, 0.84908979, 0.81004889, 0.85484368, + 0.68478631, 0.96563032, 0.78298607, 0.71894276, 0.88632131, + 0.8885966, 0.99235811, 0.84002222, 0.91265424, 0.91999157, + 0.89786651, 1.18062511, 0.92378385, 0.82501238, 1.09009807, + 0.96787582, 1.12456979, 0.86339677, 0.8786218, 0.89865768, + 1.02943564, 0.98886502, 0.97135566, 0.95914954, 1.05080931, + 0.76554446, 0.80142172, 0.99661393, 1.14749469, 0.93695459, + 0.95769957, 1.00811373, 1.00352699, 0.98747546, 0.99436785, + 1.10256609, 0.84366101, 0.85931876, 0.90745126, 1.04928733, + 0.84499693, 1.14018589, 1.2337188, 0.90516077, 0.84991869, + 0.72984467, 0.9729476, 0.97483938, 0.88626286, 1.02838695, + 0.89750089, 0.80324802, 1.40726294, 0.91149383, 0.86837826, + 1.21798148, 0.96459285, 0.71897535, 0.76230781, 0.88042964, + 0.8205186, 1.0517869, 0.74269565, 0.98278109, 1.1454159, + 1.03806052, 0.75238659, 0.94224089, 0.94931526, 1.24018529, + 0.99048689, 0.88108251, 0.81008694, 0.95443294, 0.99975781, + 0.83336879, 0.74422074, 0.87934792, 0.81994499, 0.98684546, + 0.82176924, 0.91652824, 0.77571479, 0.77039071, 0.9951089, + 0.92896121, 0.96234268, 1.00295341, 1.01455466, 0.75014075, + 0.95568202, 0.80995874, 1.24671334, 0.89480962, 0.81300194, + 0.76967074, 0.92514927, 0.89610963, 0.97441759, 1.19354494, + 0.87041262, 0.97344039, 0.88983828, 0.91614149, 0.85782814, + 0.78403196, 0.96665254, 0.91000054, 0.78641804, 0.96920714, + 0.89670528, 0.79247817, 1.04189638, 0.86777037, 1.18686087, + 0.79506403, 0.92389297, 0.76211023, 0.93617759, 0.91879446, + 0.8207635, 0.78984486, 0.93005953, 0.78743101, 0.9814347, + 0.94882561, 0.9577075, 0.81121566, 1.01025446, 0.90587214, + 0.94842798, 0.8811194, 1.01942816, 0.94698308, 0.92603676, + 0.86119014, 0.97543551, 0.84730649, 0.77552262, 0.97536054, + 0.96944817, 0.8736804, 0.86809673, 0.98134953, 1.16303105, + 0.81534447, 1.35930512, 0.83221293, 0.94136243, 0.76926289, + 1.05844282, 0.87783288, 0.78921971, 0.84360428, 0.78722128, + 1.00022607, 0.96779519, 0.95891975, 0.91900001, 1.07307813, + 1.03713093, 0.96257742, 0.90363152, 0.88729834, 0.91929215, + 1.00508255, 0.80838454, 0.92165553, 0.94513005, 0.95429071, + 0.80829571, 0.79531708, 1.01317347, 0.75337253, 0.85965134, + 0.77014567, 0.77680991, 0.77158741, 0.88882588, 0.91466414, + 0.82815897, 0.80251251, 1.04901425, 1.03386161, 1.3267075, + 1.12457236, 0.8267327, 0.89313417, 0.85992512, 0.93482733, + 0.83456348, 0.87991138, 0.8110149, 0.77913188, 0.89391799, + 0.73646974, 0.87038816, 0.99533506, 0.90744083, 0.98175496, + 1.17458551, 0.86718975, 0.93125366, 0.76131575, 0.90419708, + 0.95122171, 0.97531776, 1.05955142, 0.94714906, 0.79360281, + 1.02765349, 0.85192628, 0.84680852, 0.85470655, 0.94950982, + 0.75868699, 0.89731933, 1.00736877, 1.05171121, 0.73336848, + 0.97323586, 0.9848978, 1.27418684, 0.83954394, 0.73979357, + 1.06785996, 0.97832832, 0.7903268, 0.76600605, 0.94906446, + 0.81383465, 0.83620612, 1.00573379, 0.86359645, 0.9962139, + 0.98779432, 1.13793814, 1.02764992, 0.9070168, 0.81340349, + 0.94807089, 0.90499083, 0.83805736, 0.99623054, 0.91875275, + 0.95603557, 0.93156095, 0.83858677, 1.03667466, 1.01436655, + 0.85551979, 0.76227045, 0.84743986, 0.88487423, 0.93800365, + 0.8984666, 0.92600404, 0.89230381, 1.34625848, 1.10026015, + 0.9314026, 0.82450724, 1.0299575, 0.98494286, 1.07564492, + 0.96565301, 0.89677015, 1.15236174, 0.85476951, 1.00169288, + 0.90520725, 1.06235248, 1.04267637, 0.8311949, 0.82017897, + 0.81635968, 0.97246582, 0.84554172, 0.85409644, 1.18006461, + 0.96488389, 0.69228637, 0.97812108, 0.91764623, 0.86250551, + 0.91067775, 1.04692847, 0.94594707, 1.04351374, 0.9861303, + 0.92192581, 0.835444, 0.84362223, 1.13770705, 0.8075574, + 1.02260109, 1.13786456, 0.80862839, 0.89291687, 0.90278047, + 1.11613951, 1.29900454, 1.5622857, 0.70999772, 0.99692653, + 0.89109939, 0.77506441, 0.86054356, 0.99498141, 0.84222293, + 0.95213508, 0.91438286, 0.89305591, 0.9716793, 0.88609491, + 1.00275797, 0.90086022, 0.75336995, 1.1572679, 0.75952094, + 0.89203313, 0.82115965, 0.81459913, 1.02943406, 0.67063452, + 1.08707079, 0.92139483, 0.89855103, 0.89910955, 1.07169531, + 0.93684641, 0.84893365, 1.08659966, 1.43385982, 0.94788914, + 0.95277539, 0.94709274, 1.08412066, 0.90274516, 0.85147284, + 0.89327944, 0.92176174, 0.83820774, 0.90981839, 0.82303984, + 0.95189716, 0.95154905, 0.73628819, 1.18956148, 1.20224654, + 0.97666968, 1.08057375, 0.90369444, 0.98589538, 0.81426873, + 0.75127684, 0.93200745, 0.833666, 0.79532088, 0.91965037, + 0.99540522, 0.75449668, 0.85698312, 0.79328453, 0.94667443, + 0.7637764, 0.77203985, 0.73841377, 0.98587851, 1.34642268, + 0.78002774, 1.04356217, 1.02266882, 1.08936378, 0.9794388, + 1.07623423, 0.78069571, 1.12194495, 0.8072132, 0.91672662, + 1.36102062, 0.86933509, 1.15282756, 1.06219505, 0.80295502, + 1.00999033, 0.69418333, 0.93678452, 1.13002256, 0.91465628, + 0.73558316, 1.1302073, 0.85856238, 0.89450543, 1.11812369, + 0.75891878, 0.66859534, 0.97445338, 0.82210227, 0.76292085, + 0.79289499, 1.04380135, 0.95586226, 0.87480096, 0.81244036, + 0.86097575, 0.84111811, 0.85369732, 0.99160655, 0.90911501, + 0.81315845, 0.74037745, 1.04369233, 1.03535223, 1.18886682, + 0.87092491, 0.93562683, 0.92555142, 0.95268616, 0.9653025, + 0.93447525, 0.9043932, 1.25701034, 1.10354218, 0.96588129, + 0.94717991, 0.97010307, 0.78264501, 0.80991731, 0.98540974, + 0.83174886, 0.66966351, 1.01747376, 1.21553117, 0.80527296, + 1.06556826, 1.00870321, 1.03316522, 0.88994006, 0.89092714, + 0.94119254, 0.83930854, 1.01500087, 1.03581272, 0.97608081, + 1.11919255, 1.16586474, 0.85064102, 1.06070274, 1.00679658, + 0.75848826, 0.97969353, 0.94834777, 1.64970724, 0.82448941, + 1.02236919, 0.95252025, 0.98638842, 0.89094895, 0.95522527, + 0.91533774, 0.83716951, 0.92612154, 0.8662328, 0.9675949, + 0.96758398, 0.84309291, 0.95071171, 1.0165785, 0.96628063, + 1.00096151, 0.83175371, 0.79063043, 0.97371271, 0.76009001, + 1.02409279, 0.97232166, 0.8480577, 0.8982739, 0.9959743, + 0.96604729, 0.8681602, 0.99850841, 0.96162481, 1.01259965, + 0.98580061, 0.82751273, 0.90469122, 0.98254028, 0.78012425, + 0.87023012, 0.96830515, 0.9415831, 0.8591063, 0.82961507, + 0.89166083, 0.88509907, 0.95987837, 1.12356244, 0.71406404, + 0.99047619, 0.93735587, 0.80540831, 1.0024624, 0.95179491, + 0.83602101, 0.90343297, 0.90510417, 0.96477126, 0.79995299, + 0.93123762, 0.73763362, 1.0619498, 0.80929865, 0.86110233, + 0.84552556, 0.9943, 0.97085623, 0.75751174, 0.9201456, + 1.02268858, 0.9642899, 0.79078558, 1.03160502, 0.85200219, + 1.02246639, 1.08771483, 0.81997868, 0.82499763, 0.92767703, + 1.06700018, 0.7882174, 0.7789828, 0.89096139, 0.73155973, + 1.01717651, 0.91889525, 0.93256065, 0.84716063, 1.00965969, + 0.74505112, 0.80104245, 0.76003901, 0.96662605, 0.96594583, + 1.04571121, 0.97700878, 0.85461917, 0.9150222, 0.89110471, + 1.11183096, 0.98143747, 1.02346975, 0.9059266, 1.00771483, + 0.96336096, 0.93783898, 0.90545613, 1.10404183, 0.75297691, + 0.92548654, 0.79889783, 0.88177552, 0.93896814, 0.87309811, + 0.80691061, 0.89725699, 1.16586955, 0.98948281, 0.94524894, + 0.86085608, 0.76716851, 0.85362573, 1.09936882, 0.9328761, + 0.74819673, 0.94331186, 0.81077304, 0.88610499, 1.01452015, + 0.91513953, 0.92846128, 0.93539081, 0.8946682, 0.9270336, + 0.96673629, 0.9897488, 1.11891899, 0.87551585, 0.85854576, + 1.13458763, 1.11450768, 0.79887951, 1.091154, 1.04180374, + 0.79252573, 0.90484245, 0.94221016, 0.95721137, 0.86776103, + 0.97167404, 0.83404166, 0.94634038, 0.98907413, 0.92321459, + 1.03547804, 0.79660212, 0.94870239, 0.70027204, 0.79841059, + 0.92563393, 1.4385341, 0.8331731, 0.844816, 0.97851389, + 1.24048695, 0.83765698, 0.83600835, 1.13901283, 1.05994936, + 0.84292427, 0.86759056, 0.9272156, 0.77375499, 0.99972839, + 0.95570976, 0.97879539, 0.95528351, 0.84555495, 0.95296134, + 0.87469056, 0.78862024, 0.793795, 0.8516853, 0.92816818, + 1.02492208, 0.8037345, 0.95481283, 0.75138828, 0.72110948, + 1.36815666, 0.9661646, 0.81651816, 0.87764538, 0.97397297, + 0.99845266, 0.77433798, 0.9266279, 1.92493013, 1.07588789, + 0.90412593, 1.03165475, 1.00826548, 0.75500744, 0.87198881, + 0.86871262, 0.97854606, 0.80954477, 0.84130266, 0.89674826, + 1.43926644, 0.74873088, 1.01894282, 0.93606154, 1.08241489, + 0.76626357, 0.97434747, 0.82824599, 1.00267494, 0.97168761, + 1.06433173, 1.22741978, 1.46998419, 0.9521923, 0.98276685, + 0.92422781, 1.14241216, 1.13339577, 1.05586816, 1.04923068, + 0.83364505, 0.98007268, 0.94322393, 0.84310173, 1.03481955, + 1.18281181, 0.79807678, 0.840274, 1.00344058, 1.09442855, + 0.88033836, 0.86189964, 1.1395012, 1.18808865, 0.78667714, + 1.09323293, 0.81511099, 0.95830848, 0.99637275, 0.9146258, + 0.96358155, 0.79048719, 0.80395604, 1.00828722, 0.92872342, + 0.98789363, 0.96720252, 0.80541021, 0.73697557, 0.86692999, + 0.86795696, 1.1516694, 0.95911714, 1.13981603, 1.02002866, + 0.90808456, 0.94208296, 0.93691739, 0.87653118, 0.72824225, + 0.78177906, 1.2139146, 0.83405505, 0.91764545, 0.83318595, + 0.77930256, 0.86499397, 0.95599882, 0.73850016, 0.9630604, + 0.97913407, 1.1790714, 0.94994057, 1.04379512, 0.80815459, + 1.16560205, 0.97486893, 1.02780804, 1.10633754, 0.78679252, + 0.94643528, 1.19999119, 0.98621069, 0.8899674, 0.89235261, + 0.8728921, 0.77089094, 0.8492628, 0.86905159, 0.90741875, + 0.81065291, 0.91208596, 1.04616696, 1.24291958, 0.98628605, + 0.99751975, 0.83249612, 0.96343385, 0.77862866, 0.72381238, + 1.17384381, 1.06013687, 0.73460652, 1.09554763, 0.82015886, + 0.90862905, 0.89037104, 0.7866143, 0.8570287, 0.75061334, + 0.94950855, 0.8091383, 1.04055212, 0.96679573, 0.78338675, + 0.75968533, 1.00495071, 0.6491633, 1.02802735, 1.00725883, + 0.89333988, 0.87539291, 0.99374251, 1.10241119, 1.14935785, + 0.9369769, 0.84772646, 1.05024743, 0.97411124, 0.76972352, + 0.92161017, 0.88689841, 0.78598549, 0.93400036, 1.14699647, + 0.98636563, 0.93051079, 1.00131515, 0.82749213, 0.96665447, + 0.84457933, 0.95172036, 0.86372572, 0.97034285, 0.99877807, + 0.8724721, 0.86281118, 0.96253742, 1.13485439, 1.03410559, + 0.83113167, 1.02644607, 1.0669284, 0.947969, 1.13373538, + 0.85495039, 1.15829218, 0.72662405, 0.81755747, 0.78381403, + 0.84360371, 1.10945791, 0.80215303, 0.8861351, 0.97484684, + 1.02996282, 0.86219328, 0.95675062, 1.10753315, 0.92496918, + 0.79323289, 0.76891191, 0.93106762, 0.94523682, 0.9534338, + 0.8954424, 0.81732651, 1.00443776, 0.96178195, 0.89727229, + 0.88917552, 0.88660003, 0.941933, 1.03900381, 0.75262915, + 0.94265862, 0.84472046, 1.09834757, 0.81516259, 0.90865634, + 0.9582531, 0.99819053, 0.8815072, 0.92425525, 0.79085083, + 0.98173446, 0.95199169, 0.71653726, 1.11863725, 0.97855807, + 0.87873181, 1.37925403, 0.8085008, 1.40027689, 0.79367826, + 0.82070449, 0.87039383, 0.95896081, 0.75617612, 1.3196712, + 0.9335008, 0.9461447, 1.0838461, 0.83347962, 0.69558254, + 0.92358528, 0.99423247, 0.94884494, 0.75094955, 0.90429063, + 1.13740548, 0.89354463, 1.13094104, 1.7373979, 0.87808028, + 0.72820621, 1.02995089, 0.80134468, 0.97511989, 0.93823103, + 0.98097787, 0.73179813, 0.93764192, 1.04399599, 0.95644709, + 0.80476939, 0.87463727, 0.83220517, 0.76978546, 0.97056432, + 1.1693819, 1.0368387, 0.98606478, 1.03538075, 0.88253058, + 0.91105775, 0.93745618, 0.80272442, 0.77045021, 0.8482449, + 1.04505306, 0.90427753, 0.706451, 1.02687396, 0.82931474, + 1.24255717, 0.91343217, 0.8692726, 0.98422894, 0.82142068, + 0.86854354, 0.77715916, 0.94490329, 0.97686366, 1.05198512, + 0.888989, 1.09252847, 0.8034292, 1.04727187, 0.87246831, + 0.89474556, 1.06031526, 0.93056174, 0.7747956, 0.87772054, + 1.1183045, 0.78938083, 0.82019511, 0.82553273, 1.04324276, + 0.7676436, 0.68914756, 0.88400598, 0.79611901, 0.77011016, + 0.76727015, 0.84523666, 1.09972447, 1.03942974, 1.07322466, + 1.01079248, 1.03469338, 0.90450148, 0.87367007, 0.88432601, + 0.85312482, 0.7328442, 1.12256832, 0.8837547, 0.81023384, + 0.87068285, 0.94466637, 1.13236695, 0.95958423, 0.8099625, + 1.07509372, 1.03306035, 0.99385633, 1.06433672, 1.07385915, + 0.92709455, 1.03502217, 0.88961476, 0.8307198, 0.98819038, + 1.09916368, 0.8919766, 0.90349117, 0.97554616, 0.98376763, + 0.89285893, 0.99941071, 1.16078972, 0.66336693, 1.16389515, + 1.10395069, 1.20381952, 0.98928899, 1.17155389, 0.81707565, + 0.82903836, 0.95892646, 0.8437454, 0.79017432, 0.81562954, + 0.65169124, 0.87950793, 0.9017879, 0.82160564, 0.87079127, + 0.88100146, 1.00783979, 0.84102603, 1.16817499, 0.97697533, + 0.89115235, 0.77254376, 0.7679024, 0.97093775, 1.13881665, + 0.90348632, 1.14654277, 1.08625707, 0.98787902, 1.49057495, + 0.99639001, 0.97623973, 0.74807856, 0.76656108, 0.79095998, + 1.04583503, 0.95124469, 0.90228738, 1.03129265, 1.02663212, + 0.67704952, 0.95335397, 1.01726294, 0.78765385, 0.91140255, + 1.04097119, 0.71881619, 1.14572601, 0.79708798, 1.07104057, + 0.95925248, 0.72556831, 0.92256392, 1.08702165, 0.95977251, + 0.99670254, 0.95276505, 1.15268752, 0.68215678, 1.05573208, + 0.89672437, 0.89396611, 1.01814905, 0.81969778, 0.74390457, + 1.20909881, 0.82388701, 1.00574083, 1.01348114, 1.01492015, + 0.94759788, 0.99758684, 1.19912008, 0.92749943, 1.16660441, + 0.97646538, 0.8189475, 0.97464158, 1.01050799, 0.94368665, + 0.70995047, 0.94469581, 1.02534612, 1.3513094, 0.88081968, + 1.00576693, 0.9695495, 1.0549135, 1.29993316, 0.91050559, + 0.95543198, 1.02161725, 0.76895773, 1.03685293, 0.88201449, + 0.90345561, 1.02793048, 1.00267831, 0.84653161, 0.9217411, + 0.94666576, 0.94946561, 0.77482488, 0.94358305, 0.89779666, + 1.01462131, 1.05829923, 1.13217729, 1.12260175, 0.89810828, + 0.96305689, 0.90466377, 0.8091617, 0.93070824, 1.03997521, + 1.04076373, 0.95858477, 0.94382748, 0.7585222, 1.22890096, + 0.97300529, 0.87424719, 0.90435141, 0.91894865, 0.97819677, + 0.80300175, 1.03729016, 1.19305569, 0.81633791, 0.7930351, + 0.8141721, 0.86764479, 0.89207142, 0.89691482, 0.86243171, + 0.91184679, 0.94284352, 1.01357831, 1.03806277, 0.92000143, + 0.91018767, 0.90555137, 0.89089532, 1.3530331, 0.96933587, + 0.82350429, 0.71549154, 1.13399156, 0.87838533, 0.99177078, + 0.93296992, 1.43078263, 0.90278792, 0.85789581, 0.93531789, + 0.84948314, 0.95778101, 0.80962713, 0.88865859, 1.15297165, + 0.85695093, 0.88601982, 0.96665296, 0.9320964, 1.04193558, + 1.006005, 0.78939639, 0.79344784, 0.87012624, 0.8532022, + 0.93351167, 0.91705323, 0.74384626, 0.84219843, 0.78265573, + 1.07759963, 1.0236098, 1.00202257, 1.18687122, 1.00869294, + 0.8809502, 0.76397598, 0.81845324, 0.97439912, 1.10466318, + 1.10678275, 0.96692316, 0.84120323, 1.13151276, 0.72574077, + 0.82457571, 0.8179266, 1.01118196, 0.84303742, 0.86255339, + 1.03927791, 0.82302701, 1.03586066, 0.75785864, 0.9186558, + 0.97139449, 0.92424514, 1.00415659, 1.08544681, 0.80940032, + 0.9073428, 0.83621672, 1.04027879, 0.79447936, 0.94829305, + 1.16176292, 1.11185195, 0.88652664, 0.98676451, 0.89310091, + 0.72272527, 0.79963233, 0.94651986, 0.91540761, 1.0498236, + 0.84938647, 1.15539602, 1.03118991, 0.86565049, 0.77764016, + 0.77866522, 0.78008955, 0.89062575, 0.81285464, 0.92554114, + 1.08747324, 0.84338687, 0.76746516, 0.99205474, 0.86649541, + 0.97586166, 0.9721711, 1.14895298, 1.04659345, 1.0605085, + 1.06392238, 1.08286448, 0.93612266, 0.82545354, 0.84305431, + 0.83650404, 1.11073704, 0.91760695, 0.83281572, 0.84244131, + 1.05843708, 0.94695861, 0.95469608, 0.96038612, 0.81373042, + 0.94943303, 1.00824522, 0.86416102, 0.87121008, 1.04208739, + 0.81171276, 1.12798927, 0.99122576, 0.80626996, 1.07103151, + 0.99809277, 1.08490135, 0.9441509, 0.98766371, 1.33205139, + 0.92145678, 0.88112784, 0.9297591, 1.17549838, 0.8481953, + 0.96359948, 0.98478935, 0.77028684, 0.86408555, 0.92863805, + 0.94593549, 0.78705212, 1.1923026, 0.9983487, 0.99152533, + 0.95313678, 1.01847515, 1.05728959, 0.88009142, 1.00351951, + 1.00549552, 0.81671365, 0.90545602, 0.77895202, 0.82217088, + 0.94838645, 0.85928327, 0.90729044, 0.92975916, 0.91946285, + 0.80537364, 1.11885357, 0.84691232, 0.85356231, 0.85102988, + 1.06499659, 1.0242127, 0.91245632, 0.83131215, 0.72151085, + 0.9295769, 0.89549018, 0.87914839, 0.93541175, 0.97319188, + 0.791944, 1.08008186, 0.79549907, 0.90967683, 0.80506028, + 1.1206821, 0.91258859, 1.24855319, 0.96112955, 1.14305514, + 0.79327927, 0.84209204, 0.94494251, 0.89573237, 1.0571304, + 0.94504292, 0.84446547, 0.92060829, 0.82347072, 0.86280426, + 0.85516098, 0.78649432, 0.89522516, 0.94529795, 0.90322825, + 0.9616288, 0.77439126, 1.0130917, 0.84021262, 0.97337238, + 0.93206526, 0.93809914, 0.87626441, 0.92706652, 0.86819358, + 0.74060652, 0.84046045, 0.94130171, 0.92537388, 0.80485074, + 0.81633347, 0.76401825, 0.81300784, 0.8052467, 1.27234895, + 0.92674704, 1.12106762, 0.91743016, 0.94694287, 0.87309918, + 0.99163895, 0.83777703, 0.89713459, 0.88208343, 0.90205904, + 0.9708827, 0.94965009, 0.81446019, 0.89512677, 0.97025135, + 1.02314481, 0.88399736, 1.01059963, 0.86193889, 0.94621507, + 0.97334837, 0.90122433, 0.71015398, 1.17491792, 1.13869784, + 1.03908735, 0.85480742, 0.98971408, 1.04147459, 0.85170846, + 0.94861439, 0.7778831, 0.73445723, 0.89587488, 0.88627975, + 0.98253057, 0.86159356, 1.06559385, 0.90852704, 0.86562284, + 0.92122779, 0.98233847, 0.94989946, 0.97171474, 0.92428639, + 1.03712828, 0.88170861, 0.86802004, 0.79670394, 0.85606075, + 1.09636421, 0.85048902, 0.99393971, 1.10510884, 0.80515088, + 0.95559246, 0.96803475, 0.98115871, 0.94603995, 0.8654312, + 0.90759845, 0.9010954, 0.77979965, 0.83322032, 0.8485444, + 0.89217626, 0.78817966, 1.03815705, 0.84076982, 0.93362471, + 1.06173045, 0.82612852, 0.8336989, 0.93943901, 0.91775212, + 1.00501856, 1.04269442, 0.93195426, 0.78377288, 1.03372915, + 0.8415154, 1.02888978, 0.93202174, 0.78683383, 0.85106996, + 0.9724203, 0.93409182, 0.97876305, 1.17153649, 0.9434591, + 0.81361398, 1.09554602, 1.48193137, 0.96349931, 0.93586569, + 1.0210303, 0.88980694, 0.88890459, 1.05330284, 1.09511186, + 0.91202441, 0.78753378, 0.98074421, 1.04268892, 1.14265114, + 0.86482628, 0.87233851, 1.18915875, 0.82556032, 0.87461473, + 1.08396187, 0.69206719, 0.88113605, 0.96951674, 0.89248729, + 0.909926, 0.82966779, 0.8261611, 0.9551228, 0.79879533, + 1.09416042, 1.01020839, 1.04133795, 1.09654304, 0.84060693, + 1.02612223, 1.00177693, 0.90510435, 1.2091018, 1.03290288, + 0.80529305, 0.74332311, 1.04728164, 1.04647891, 0.83707027, + 0.81648396, 1.07180239, 0.7926372, 0.99855278, 1.16851397, + 0.94566149, 0.75612408, 0.94975744, 0.92924923, 1.03215206, + 0.82394984, 0.84142091, 0.88028348, 1.11036047, 0.82451341, + 0.83694112, 0.84207459, 0.94095384, 1.00173733, 1.10241786, + 0.86609134, 0.86859604, 1.1211537, 0.84188088, 0.89023025, + 0.99062899, 0.96828743, 0.80106184, 0.86745454, 0.99013196, + 0.91838615, 0.86400837, 0.95679525, 0.78893711, 1.03753175, + 0.97177648, 0.88685941, 0.9441012, 0.69289996, 0.84219432, + 1.01050959, 0.83578317, 0.79907595, 1.21281139, 0.91613925, + 1.00202544, 0.95293036, 0.84583258, 0.84574886, 0.76470341, + 1.23606485, 1.10063291, 0.93852084, 0.97201415, 0.68523403, + 0.94560108, 0.81903039, 1.14332074, 0.80914367, 1.46398921, + 0.85155227, 1.41106313, 0.85740937, 0.91107708, 0.9003576, + 0.94132363, 0.85710825, 0.74805485, 1.2521402, 0.95307547, + 0.94274593, 0.86732331, 0.83850172, 0.96835288, 1.09443821, + 0.68532627, 0.84736457, 1.06989165, 0.81424504, 1.02942437, + 0.80255995, 0.89258275, 0.93560962, 1.04192911, 1.13498644, + 1.24409985, 0.93295415, 1.08360355, 1.16468059, 0.81482388, + 0.92387137, 1.07508578, 0.86564567, 1.0142773, 0.86143907, + 0.91214944, 0.9757589, 0.90588817, 0.74168224, 0.91222552, + 0.96119617, 0.95431519, 0.78080736, 1.0327991, 1.05112022, + 0.92761155, 1.0183631, 0.73188757, 0.85617225, 0.93341155, + 0.95106173, 0.9481304, 0.92996766, 1.08092599, 0.96485228, + 0.97964284, 0.94224551, 1.00654477, 1.01367565, 0.89785325, + 0.80725703, 0.7495798, 0.78240339, 1.04479122, 0.88200252, + 1.0664992, 1.05951775, 0.82508097, 0.81201381, 0.81860218, + 1.07561763, 1.02830358, 0.87348993, 1.0081337, 0.87470565, + 1.45597242, 0.77540871, 0.8036279, 0.80514427, 0.92688461, + 0.88152328, 1.56288788, 0.87251203, 0.92808414, 1.03548911, + 0.65226699, 0.81243827, 1.03103554, 1.11995602, 0.78956176, + 0.96734427, 0.91600861, 0.8246106, 1.09390498, 0.98187349, + 0.8919928, 0.98746862, 0.96298125, 0.93854424, 0.83060031, + 0.74692856, 0.99757209, 0.78888849, 1.17517182, 1.06657933, + 1.1244446, 0.93608433, 0.88898472, 0.96823218, 0.87496056, + 0.81776683, 0.98863687, 0.82962648, 1.02395766, 0.99622674, + 1.07138771, 0.86669915, 0.98172208, 0.8787271, 0.86125353, + 0.79554881, 0.93382729, 1.00706175, 1.08386454, 0.69664542, + 0.77316657, 0.79978147, 0.80764736, 0.9969375, 0.83554928, + 0.91017317, 0.95323454, 1.29872357, 1.08851275, 1.01673108, + 0.79536208, 0.84878371, 0.95165619, 0.87733936, 0.86319684, + 0.96758495, 0.87763237, 0.95094713, 1.00143077, 1.0596993, + 1.27278299, 0.82281481, 0.89765404, 0.94538181, 0.88161857, + 0.77679456, 0.84274277, 0.89864342, 0.98705162, 0.95456512, + 0.92712401, 0.77427128, 1.03292269, 0.87034158, 1.24316113, + 0.98278702, 1.17325118, 1.18863971, 0.88678137, 0.90389731, + 1.01740421, 0.80228624, 0.97742223, 0.82741518, 0.8359407, + 0.7177401, 1.02297899, 0.81896048, 0.77127181, 0.83328601, + 0.96939523, 0.94073198, 0.90356023, 1.12355064, 1.12811114, + 0.92403138, 1.05423548, 0.70827734, 0.95891358, 0.89898027, + 1.02318421, 0.93775375, 0.8245529, 0.80604304, 0.77555283, + 0.92112699, 0.85662169, 0.92725859, 0.93599147, 0.78971931, + 0.8337306, 0.93775212, 0.91025099, 0.75308822, 0.95391173, + 0.96840576, 0.8394416, 0.89087015, 0.73703219, 0.97812386, + 0.8787356, 0.93985266, 0.96406021, 0.88666152, 0.89242745, + 0.97900374, 0.85697634, 0.8795755, 0.78581812, 0.87138735, + 0.74602994, 0.96158936, 0.84529806, 0.85333232, 1.06116542, + 1.05929382, 1.09720986, 1.28959453, 0.91541148, 0.87657407, + 1.06514793, 0.8668096, 1.07325125, 0.85009534, 0.95542191, + 0.86977409, 0.96249874, 0.97715908, 0.89360331, 0.98859647, + 0.67560717, 0.90213348, 1.12051182, 0.99684949, 0.9863559, + 1.32246221, 0.84632664, 0.89707447, 1.00486846, 0.90843649, + 1.02399424, 0.97899017, 0.95693977, 0.8384806, 0.93927435, + 0.79153251, 1.08694094, 1.01785553, 0.99674552, 0.898566, + 0.94116882, 0.95224977, 0.99859129, 0.81125029, 0.85985586, + 1.14418875, 0.96306241, 1.31398561, 0.77961419, 1.01958366, + 0.9575668, 0.771084, 1.04473363, 1.01569517, 1.04560744, + 0.9648178, 0.93466398, 1.09313672, 0.90349389, 1.00193114, + 0.79991514, 0.91102351, 0.9795356, 0.89285193, 1.04898573, + 0.93031782, 0.95087069, 1.15644699, 0.91155375, 0.93005986, + 0.70098757, 0.82751625, 0.85462106, 1.34969332, 0.93382692, + 1.05558387, 1.25417819, 1.0546501, 1.05217032, 0.86031346, + 1.00864463, 0.73592482, 1.01899722, 1.00462831, 0.96882832, + 0.81334751, 1.05102745, 0.82288113, 1.05798623, 0.77971966, + 1.38584414, 1.0248193, 0.78951056, 0.76171823, 0.78407227, + 1.14808104, 0.97890501, 0.99870905, 0.96006489, 0.78442704, + 0.99315422, 0.83653213, 0.95210661, 0.97233777, 0.78140495, + 0.95996216, 0.76318841, 0.82333311, 0.87123204, 0.79531258, + 0.82681452, 1.00492217, 0.93549261, 1.00240153, 1.02086339, + 1.00424549, 0.87437775, 0.84675564, 0.98014462, 0.77262117, + 1.02620976, 0.91162462, 1.0275041, 1.1475431, 0.78167746, + 0.86273856, 0.84499552, 0.99712362, 0.9694771, 0.94523806, + 0.8450763, 0.93068519, 1.29362523, 1.0249628, 1.05522183, + 1.13433408, 1.06981137, 0.85666419, 0.98203234, 0.75867592, + 0.8844762, 0.89708521, 0.75482121, 0.80137918, 0.90412883, + 0.88815714, 1.11497471, 0.77441965, 0.93853353, 0.8962444, + 0.83055142, 0.99776183, 0.92581583, 0.78783745, 0.90934299, + 0.81136457, 0.99000726, 0.9669203, 1.2890399, 1.01923088, + 1.11076459, 1.01331706, 1.02470946, 0.92950448, 1.10298478, + 1.03723287, 1.09129035, 0.95138186, 0.85764624, 0.86606803, + 0.8141785, 1.0129293, 0.93267714, 0.95663734, 1.01940702, + 0.8072268, 1.0707215, 0.90482063, 1.01546955, 0.84018308, + 0.95938216, 0.96454054, 0.93114659, 1.09705112, 0.88720628, + 0.81067916, 0.82667413, 0.89494027, 0.9173495, 0.73326273, + 1.00209461, 0.9560545, 1.09126364, 0.95709908, 0.81314274, + 0.8274943, 1.37605062, 0.99097917, 1.02221806, 0.90277482, + 1.01611791, 0.79663017, 1.16686882, 1.19669266, 0.88366356, + 0.77661102, 0.73467145, 1.15438391, 0.91439204, 0.78280849, + 1.07238853, 1.03588797, 1.0438292, 0.75935005, 0.76200114, + 0.81603429, 0.74402367, 1.1171573, 0.90227791, 0.94762351, + 0.92462278, 0.8847803, 1.1343863, 0.8662186, 1.00410699, + 1.05008842, 0.94783969, 0.89555844, 0.98278045, 0.80396855, + 1.00483139, 0.82540491, 0.83284354, 0.93132265, 0.91191039, + 0.95753995, 1.18260689, 0.84124197, 0.87429189, 0.67617592, + 0.89495946, 0.92898357, 1.10528183, 1.06994417, 0.82259834, + 0.74746328, 0.99070832, 1.07386274, 0.84007203, 0.89720099, + 0.9670094, 1.02728082, 0.78001838, 0.97709347, 0.90602469, + 1.49985196, 0.80256976, 1.05905677, 0.98298874, 0.94679703, + 0.94305923, 0.98720786, 0.82091251, 0.91644161, 0.79576881, + 0.98942172, 0.92974761, 0.99307545, 0.86959859, 0.88549807, + 1.09246144, 0.87265047, 1.01449921, 0.74353851, 0.95029192, + 0.94385304, 0.84779449, 1.00690543, 0.79727923, 0.92285822, + 0.83164749, 1.06508941, 1.09757529, 0.9059649, 0.9146043, + 0.74474669, 0.71306438, 0.77989422, 0.84965464, 0.9424323, + 0.82492634, 0.85076686, 1.01110574, 1.01445751, 0.87929754, + 0.8773275, 0.72314196, 0.92285502, 1.18173931, 0.86460799, + 0.91795108, 1.16580482, 0.79880497, 0.72734786, 0.97579653, + 0.76967834, 0.97543732, 1.04996964, 1.16439594, 1.08656546, + 1.15644902, 0.98333436, 1.24374723, 0.95810117, 0.8488915, + 1.06288523, 0.99055893, 0.75517736, 0.95856183, 0.85574796, + 1.00426506, 1.25275675, 0.92735225, 0.83351314, 0.90216604, + 0.87996386, 1.13312875, 1.00891523, 0.76513657, 0.85659621, + 0.91142459, 1.05893495, 0.92253051, 0.87153684, 1.03190013, + 0.92160845, 1.01768282, 0.80590054, 1.05172907, 0.92758177, + 0.86902046, 0.93927127, 0.80389584, 0.96016014, 0.9720314, + 0.93255573, 0.85792534, 0.97826842, 0.80506149, 0.97170364, + 1.08397772, 1.01866333, 1.18898045, 1.02855427, 0.94848891, + 0.94336541, 0.93119013, 0.92907817, 1.11806635, 0.88409637, + 0.88809707, 1.06735612, 0.98447974, 0.88816438, 1.00099784, + 0.92443453, 1.00325146, 0.86977836, 0.84621801, 0.92361073, + 0.85573903, 0.77309241, 0.86717528, 1.19892035, 1.07497019, + 1.02178857, 0.8718756, 0.90646803, 0.92912096, 1.04538692, + 0.95245707, 0.99698525, 0.94583199, 0.92537599, 0.86720487, + 0.89927054, 0.86111792, 0.94401208, 1.01130191, 1.03759681, + 0.8177749, 1.07784373, 0.79823294, 1.00839713, 1.39409602, + 0.87146241, 1.21218822, 0.84895926, 1.01742432, 0.8044077, + 0.78632084, 1.07751744, 1.13147508, 0.90268302, 0.90024653, + 0.92072578, 0.87763264, 1.00736787, 0.90978808, 0.90895492, + 0.90766826, 0.98956566, 0.92075658, 0.77613105, 0.93815569, + 0.95455546, 1.00607757, 0.82187828, 0.94197599, 0.867015, + 0.90709762, 0.75604815, 0.91312261, 0.9286002, 0.74623204, + 0.87368702, 0.83879278, 0.92224793, 0.81676402, 0.90355168, + 0.92762955, 0.91784037, 0.82273304, 0.75947806, 0.92687078, + 0.87971276, 1.15037445, 0.86707445, 0.8611453, 0.91921763, + 1.07088129, 1.05150864, 1.02162325, 0.90305964, 0.99912687, + 0.87693204, 0.6186911, 0.95526533, 1.15975655, 1.00061222, + 0.74608861, 0.954568, 0.84965574, 0.79177899, 0.9741051, + 1.0119514, 0.79147502, 0.81367071, 0.87757421, 1.01270813, + 0.86044808, 0.9689615, 0.9577413, 0.79480242, 0.76073002, + 0.83131288, 0.96379259, 0.84679732, 0.82508685, 0.89977283, + 0.86766439, 1.12231836, 0.93058445, 1.04584181, 0.88838751, + 0.96615893, 0.98731619, 1.05517799, 1.02860493, 0.98881473, + 0.85210319, 0.91497438, 0.9275787, 0.97456134, 0.9011687, + 0.69417417, 0.89661214, 0.79038577, 1.08118303, 1.0509366, + 0.97813138, 0.85714945, 0.97330329, 0.83611871, 0.99772489, + 0.83591193, 0.75592677, 0.85392601, 1.02734573, 0.72404609, + 0.83534547, 0.91630472, 0.88463459, 1.12044562, 1.10991104, + 0.96047701, 1.12342573, 0.72046647, 0.96852239, 0.89605698, + 0.98310243, 0.92300659, 0.87794646, 0.83109321, 1.43297752, + 0.80609029, 0.8692251, 0.90254649, 0.81647796, 1.07521371, + 1.03942973, 0.96156488, 1.25225334, 1.0265727, 0.9518054, + 0.87765718, 1.15552582, 0.79577766, 0.66849239, 0.87236017, + 1.03437641, 0.98567811, 0.78463682, 1.09573491, 0.89858959, + 0.94056747, 1.16075317, 1.06296054, 0.85844006, 0.95475376, + 0.67038747, 0.7924646, 0.94009167, 0.88282093, 0.97711174, + 0.9209607, 1.03230176, 0.99981312, 1.12345314, 1.11705968, + 1.02453864, 0.91724212, 0.98337942, 0.89195196, 0.83800177, + 0.95044243, 0.76543521, 0.8613025, 0.83907753, 0.69333275, + 0.84411739, 0.68621941, 0.9847701, 1.13328481, 1.1432074, + 0.97156328, 0.86464461, 0.74258211, 0.97319505, 1.11453917, + 0.87344741, 0.91382664, 1.01635943, 1.38708812, 0.81377942, + 1.3828856, 0.74476285, 0.86657537, 1.1216954, 0.91008346, + 0.800862, 0.98356936, 0.92409916, 1.13970543, 0.97547004, + 0.99385865, 1.16476579, 0.78678084, 1.003947, 0.81491463, + 1.19724322, 0.9173622, 0.93274116, 0.80047839, 0.86798029, + 0.9433708, 0.82376832, 1.01726905, 0.81914971, 0.73290844]) + + +class Medpar1(object): + ''' + The medpar1 data can be found here. + + https://www.stata-press.com/data/hh2/medpar1 + ''' + def __init__(self): + filename = os.path.join(os.path.dirname(os.path.abspath(__file__)), + "stata_medpar1_glm.csv") + data = pd.read_csv(filename).to_records() + self.endog = data.los + design = np.column_stack((data.admitype, data.codes)) + design = categorical(design, col=0, drop=True) + design = np.delete(design, 1, axis=1) # drop first dummy + self.exog = add_constant(design, prepend=False) + + +class InvGaussLog(Medpar1): + """ + InvGaussLog is used with TestGlmInvgaussLog + """ + def __init__(self): + super(InvGaussLog, self).__init__() + filename = os.path.join(os.path.dirname(os.path.abspath(__file__)), + "medparlogresids.csv") + self.resids = pd.read_csv(filename, sep=',', header=None).values + self.null_deviance = 335.1539777981053 # from R, Rpy bug + self.params = np.array([0.09927544, -0.19161722, 1.05712336]) + self.bse = np.array([0.00600728, 0.02632126, 0.04915765]) + self.aic_R = 18545.836421595981 + self.aic_Stata = 6.619000588187141 + self.deviance = 304.27188306012789 + self.scale = 0.10240599519220173 + # self.llf = -9268.9182107979905 # from R + self.llf = -12162.72308108797 # from Stata, big rounding diff with R + self.bic_Stata = -29849.51723280784 + self.chi2 = 398.5465213008323 # from Stata not in sm + self.df_model = 2 + self.df_resid = 3673 + self.fittedvalues = np.array([ + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 5.76642001, + 7.03292237, 7.03292237, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 5.76642001, 7.03292237, + 5.22145448, 7.03292237, 5.22145448, 4.72799187, 4.72799187, + 7.03292237, 7.03292237, 6.36826384, 7.03292237, 5.76642001, + 7.03292237, 4.28116479, 7.03292237, 7.03292237, 7.03292237, + 5.76642001, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 3.87656588, 7.03292237, 7.03292237, 4.28116479, + 7.03292237, 7.03292237, 4.72799187, 7.03292237, 7.03292237, + 7.03292237, 5.22145448, 6.36826384, 6.36826384, 4.28116479, + 4.72799187, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 5.22145448, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 5.76642001, 6.36826384, + 6.36826384, 5.22145448, 7.03292237, 7.03292237, 7.03292237, + 5.76642001, 7.03292237, 7.03292237, 3.87656588, 5.76642001, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 5.22145448, 5.22145448, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 4.72799187, 7.03292237, 6.36826384, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 5.22145448, 6.36826384, 5.22145448, + 7.03292237, 7.03292237, 4.72799187, 5.76642001, 7.03292237, + 4.72799187, 6.36826384, 3.87656588, 7.03292237, 7.03292237, + 5.22145448, 5.22145448, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 4.28116479, + 7.03292237, 6.36826384, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 6.36826384, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 5.76642001, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 5.76642001, + 7.03292237, 7.03292237, 6.36826384, 3.87656588, 7.03292237, + 7.03292237, 5.22145448, 7.03292237, 5.76642001, 4.28116479, + 5.76642001, 6.36826384, 6.36826384, 7.03292237, 7.03292237, + 5.76642001, 7.03292237, 7.03292237, 4.28116479, 7.03292237, + 6.36826384, 7.03292237, 6.36826384, 7.03292237, 5.22145448, + 7.03292237, 4.28116479, 4.72799187, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 6.36826384, + 7.03292237, 4.28116479, 5.22145448, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 4.28116479, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 5.76642001, 7.03292237, 7.03292237, + 7.03292237, 4.72799187, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 6.36826384, 7.03292237, 6.36826384, 4.28116479, 5.76642001, + 5.22145448, 6.36826384, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 6.36826384, + 5.76642001, 7.03292237, 5.22145448, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 4.28116479, 7.03292237, 5.22145448, 7.03292237, 6.36826384, + 5.76642001, 4.28116479, 4.28116479, 7.03292237, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 4.28116479, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 5.22145448, + 7.03292237, 7.03292237, 7.03292237, 5.22145448, 7.03292237, + 5.76642001, 7.03292237, 4.72799187, 4.28116479, 6.36826384, + 5.76642001, 7.03292237, 7.03292237, 7.03292237, 5.22145448, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 3.87656588, 4.72799187, 7.03292237, 7.03292237, 7.03292237, + 4.72799187, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 6.36826384, 3.87656588, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 4.28116479, 7.03292237, 6.36826384, + 7.03292237, 5.22145448, 5.22145448, 6.36826384, 7.03292237, + 6.36826384, 6.36826384, 7.03292237, 4.28116479, 7.03292237, + 7.03292237, 7.03292237, 5.22145448, 6.36826384, 7.03292237, + 3.87656588, 6.36826384, 5.22145448, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 4.28116479, 7.03292237, + 5.22145448, 7.03292237, 6.36826384, 5.22145448, 4.72799187, + 7.03292237, 7.03292237, 7.03292237, 4.72799187, 6.36826384, + 7.03292237, 6.36826384, 5.76642001, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 5.22145448, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 3.87656588, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 4.72799187, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 6.36826384, 7.03292237, 7.03292237, + 6.36826384, 7.03292237, 6.36826384, 7.03292237, 5.22145448, + 6.36826384, 7.03292237, 6.36826384, 7.03292237, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 3.87656588, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 6.36826384, + 5.76642001, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 5.76642001, 7.03292237, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 3.87656588, 7.03292237, 6.36826384, 6.36826384, + 4.72799187, 5.76642001, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 3.87656588, 5.22145448, 4.72799187, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 4.72799187, 6.36826384, + 7.03292237, 7.03292237, 5.76642001, 7.03292237, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 6.36826384, + 7.03292237, 5.22145448, 5.76642001, 7.03292237, 5.76642001, + 6.36826384, 5.76642001, 5.76642001, 7.03292237, 5.76642001, + 7.03292237, 7.03292237, 7.03292237, 4.72799187, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 6.36826384, 7.03292237, 6.36826384, 7.03292237, 4.72799187, + 7.03292237, 7.03292237, 4.28116479, 6.36826384, 3.87656588, + 7.03292237, 3.5102043, 7.03292237, 7.03292237, 5.76642001, + 5.22145448, 7.03292237, 5.76642001, 4.28116479, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 5.76642001, 4.72799187, + 7.03292237, 6.36826384, 7.03292237, 5.22145448, 7.03292237, + 4.72799187, 7.03292237, 7.03292237, 7.03292237, 5.22145448, + 5.22145448, 4.72799187, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 4.28116479, 7.03292237, 7.03292237, 7.03292237, 5.76642001, + 6.36826384, 7.03292237, 7.03292237, 5.76642001, 7.03292237, + 7.03292237, 6.36826384, 4.72799187, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 4.72799187, 5.76642001, 7.03292237, 5.76642001, + 6.36826384, 7.03292237, 7.03292237, 7.03292237, 4.72799187, + 7.03292237, 7.03292237, 7.03292237, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 6.36826384, 7.03292237, 7.03292237, 5.76642001, 6.36826384, + 4.72799187, 7.03292237, 7.03292237, 7.03292237, 5.76642001, + 7.03292237, 6.36826384, 5.22145448, 5.76642001, 4.72799187, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 5.22145448, 7.03292237, 7.03292237, + 6.36826384, 7.03292237, 7.03292237, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 6.36826384, 7.03292237, 5.22145448, + 7.03292237, 7.03292237, 7.03292237, 5.76642001, 7.03292237, + 6.36826384, 6.36826384, 7.03292237, 5.76642001, 7.03292237, + 6.36826384, 7.03292237, 7.03292237, 7.03292237, 4.72799187, + 5.22145448, 7.03292237, 3.87656588, 5.76642001, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 6.36826384, 7.03292237, 7.03292237, + 4.72799187, 7.03292237, 6.36826384, 7.03292237, 4.28116479, + 7.03292237, 7.03292237, 5.76642001, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 4.72799187, 6.36826384, 3.87656588, 7.03292237, 7.03292237, + 6.36826384, 4.72799187, 4.28116479, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 3.87656588, 7.03292237, 7.03292237, 7.03292237, + 3.87656588, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 3.87656588, + 7.03292237, 4.72799187, 5.22145448, 5.22145448, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 5.22145448, 5.22145448, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 4.72799187, 6.36826384, 5.76642001, + 5.76642001, 6.36826384, 7.03292237, 7.03292237, 7.03292237, + 6.36826384, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 4.72799187, 7.03292237, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 4.72799187, 4.28116479, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 5.76642001, + 7.03292237, 5.76642001, 7.03292237, 7.03292237, 7.03292237, + 5.22145448, 7.03292237, 7.03292237, 7.03292237, 5.22145448, + 6.36826384, 7.03292237, 7.03292237, 6.36826384, 6.36826384, + 7.03292237, 7.03292237, 5.76642001, 7.03292237, 5.22145448, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 4.72799187, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 4.28116479, + 7.03292237, 6.36826384, 7.03292237, 5.76642001, 4.28116479, + 5.76642001, 7.03292237, 3.87656588, 7.03292237, 7.03292237, + 7.03292237, 3.5102043, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 5.76642001, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 5.76642001, 5.76642001, 5.76642001, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 5.76642001, 7.03292237, 4.28116479, 6.36826384, + 5.76642001, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 5.22145448, + 7.03292237, 7.03292237, 7.03292237, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 5.76642001, 7.03292237, 7.03292237, 7.03292237, + 6.36826384, 6.36826384, 7.03292237, 7.03292237, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 5.22145448, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 3.5102043, 7.03292237, 7.03292237, + 7.03292237, 3.87656588, 6.36826384, 5.76642001, 7.03292237, + 7.03292237, 6.36826384, 4.72799187, 7.03292237, 7.03292237, + 5.76642001, 7.03292237, 3.87656588, 5.22145448, 6.36826384, + 4.28116479, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 6.36826384, + 7.03292237, 5.22145448, 6.36826384, 6.36826384, 7.03292237, + 6.36826384, 7.03292237, 7.03292237, 7.03292237, 5.22145448, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 4.72799187, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 6.36826384, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 3.5102043, 7.03292237, 5.22145448, + 5.22145448, 7.03292237, 6.36826384, 7.03292237, 4.72799187, + 7.03292237, 7.03292237, 7.03292237, 4.72799187, 7.03292237, + 5.76642001, 7.03292237, 3.87656588, 7.03292237, 5.22145448, + 3.87656588, 4.72799187, 6.36826384, 5.76642001, 7.03292237, + 6.36826384, 7.03292237, 4.28116479, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 5.22145448, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 4.28116479, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 5.76642001, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 3.5102043, 4.72799187, 7.03292237, 4.28116479, 7.03292237, + 4.72799187, 7.03292237, 5.22145448, 5.76642001, 5.76642001, + 3.87656588, 5.76642001, 5.22145448, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 5.22145448, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 5.22145448, 7.03292237, + 7.03292237, 7.03292237, 5.22145448, 7.03292237, 7.03292237, + 6.36826384, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 4.28116479, + 4.72799187, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 6.36826384, + 6.36826384, 5.76642001, 7.03292237, 5.76642001, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 5.22145448, 7.03292237, 7.03292237, 5.76642001, 6.36826384, + 5.76642001, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 4.72799187, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 5.76642001, 6.36826384, 4.72799187, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 4.72799187, + 7.03292237, 6.36826384, 7.03292237, 5.22145448, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 5.76642001, 6.36826384, + 5.76642001, 7.03292237, 7.03292237, 7.03292237, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 4.72799187, 7.03292237, 5.22145448, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 4.72799187, 6.36826384, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 5.76642001, 5.22145448, + 7.03292237, 7.03292237, 7.03292237, 5.22145448, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 4.28116479, + 5.76642001, 7.03292237, 4.28116479, 7.03292237, 6.36826384, + 7.03292237, 7.03292237, 4.28116479, 7.03292237, 7.03292237, + 6.36826384, 3.87656588, 3.5102043, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 5.76642001, + 7.03292237, 4.72799187, 5.76642001, 7.03292237, 7.03292237, + 3.87656588, 7.03292237, 7.03292237, 7.03292237, 4.28116479, + 7.03292237, 7.03292237, 7.03292237, 5.76642001, 5.76642001, + 7.03292237, 6.36826384, 5.76642001, 7.03292237, 6.36826384, + 5.76642001, 7.03292237, 5.76642001, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 4.28116479, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 4.72799187, 5.76642001, 6.36826384, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 5.76642001, 4.28116479, + 7.03292237, 5.76642001, 4.72799187, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 5.76642001, + 6.36826384, 6.36826384, 7.03292237, 7.03292237, 6.36826384, + 3.87656588, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 3.5102043, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 4.72799187, 7.03292237, 6.36826384, 4.72799187, + 4.72799187, 7.03292237, 5.76642001, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 4.28116479, 7.03292237, 7.03292237, + 7.03292237, 5.76642001, 7.03292237, 7.03292237, 7.03292237, + 4.72799187, 7.03292237, 7.03292237, 6.36826384, 5.22145448, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 5.22145448, 7.03292237, 7.03292237, 6.36826384, + 7.03292237, 7.03292237, 5.22145448, 7.03292237, 6.36826384, + 6.36826384, 7.03292237, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 6.36826384, 7.03292237, 4.72799187, + 4.28116479, 4.72799187, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 4.28116479, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 6.36826384, 4.28116479, 4.28116479, 7.03292237, 5.22145448, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 7.03292237, + 5.76642001, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 4.72799187, 7.03292237, + 3.87656588, 7.03292237, 4.72799187, 7.03292237, 7.03292237, + 7.03292237, 5.22145448, 7.03292237, 4.28116479, 7.03292237, + 7.03292237, 4.72799187, 5.22145448, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 5.76642001, 5.22145448, + 7.03292237, 7.03292237, 3.87656588, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 4.72799187, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 4.28116479, 7.03292237, 7.03292237, 7.03292237, 5.76642001, + 7.03292237, 5.22145448, 4.72799187, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 5.76642001, 7.03292237, 5.76642001, + 7.03292237, 4.28116479, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 5.76642001, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 5.76642001, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 5.76642001, 7.03292237, 3.87656588, + 6.36826384, 5.76642001, 7.03292237, 4.28116479, 7.03292237, + 5.76642001, 5.22145448, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 5.76642001, 7.03292237, 7.03292237, 7.03292237, 3.5102043, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 4.28116479, 4.72799187, 6.36826384, 7.03292237, + 7.03292237, 4.28116479, 5.76642001, 7.03292237, 7.03292237, + 7.03292237, 4.28116479, 7.03292237, 7.03292237, 5.22145448, + 6.36826384, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 4.72799187, + 7.03292237, 5.22145448, 6.36826384, 7.03292237, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 5.22145448, + 7.03292237, 7.03292237, 5.22145448, 7.03292237, 6.36826384, + 7.03292237, 7.03292237, 5.76642001, 7.03292237, 7.03292237, + 3.5102043, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 5.76642001, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 6.36826384, + 4.72799187, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 6.36826384, 7.03292237, 6.36826384, 4.72799187, 5.22145448, + 5.76642001, 7.03292237, 6.36826384, 6.36826384, 7.03292237, + 6.36826384, 7.03292237, 5.22145448, 4.72799187, 5.76642001, + 6.36826384, 7.03292237, 7.03292237, 5.76642001, 5.22145448, + 7.03292237, 6.36826384, 3.87656588, 6.36826384, 7.03292237, + 5.76642001, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 3.5102043, 7.03292237, 7.03292237, 7.03292237, + 5.22145448, 7.03292237, 6.36826384, 7.03292237, 6.36826384, + 7.03292237, 6.36826384, 5.22145448, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 6.36826384, 7.03292237, 7.03292237, + 6.36826384, 4.72799187, 7.03292237, 5.22145448, 7.03292237, + 4.72799187, 7.03292237, 4.28116479, 7.03292237, 7.03292237, + 6.36826384, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 4.28116479, 6.36826384, 7.03292237, 3.87656588, 7.03292237, + 7.03292237, 7.03292237, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 5.22145448, 7.03292237, + 7.03292237, 5.76642001, 6.36826384, 7.03292237, 4.72799187, + 7.03292237, 7.03292237, 5.22145448, 7.03292237, 3.5102043, + 6.36826384, 6.36826384, 7.03292237, 6.36826384, 7.03292237, + 5.22145448, 6.36826384, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 5.76642001, 4.28116479, 7.03292237, 7.03292237, + 4.72799187, 4.72799187, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 5.76642001, 7.03292237, 5.76642001, + 4.28116479, 7.03292237, 4.28116479, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 3.5102043, 7.03292237, 5.22145448, + 7.03292237, 6.36826384, 7.03292237, 6.36826384, 7.03292237, + 4.72799187, 7.03292237, 7.03292237, 4.72799187, 3.5102043, + 3.17846635, 3.87656588, 5.22145448, 6.36826384, 7.03292237, + 4.28116479, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 6.36826384, 7.03292237, 7.03292237, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 4.72799187, 7.03292237, + 7.03292237, 7.03292237, 5.76642001, 7.03292237, 3.5102043, + 7.03292237, 7.03292237, 5.22145448, 6.36826384, 3.87656588, + 4.72799187, 7.03292237, 7.03292237, 3.87656588, 7.03292237, + 6.36826384, 7.03292237, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 4.72799187, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 5.76642001, 7.03292237, 4.28116479, 7.03292237, + 7.03292237, 7.03292237, 4.72799187, 6.36826384, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 6.36826384, 4.72799187, 6.36826384, 7.03292237, 7.03292237, + 5.22145448, 7.03292237, 5.76642001, 7.03292237, 7.03292237, + 7.03292237, 5.76642001, 7.03292237, 6.36826384, 6.36826384, + 7.03292237, 7.03292237, 6.36826384, 7.03292237, 5.22145448, + 7.03292237, 5.22145448, 5.22145448, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 4.72799187, 4.28116479, 7.03292237, 6.36826384, 7.03292237, + 5.76642001, 7.03292237, 7.03292237, 7.03292237, 4.72799187, + 7.03292237, 5.76642001, 7.03292237, 4.72799187, 7.03292237, + 7.03292237, 4.72799187, 5.76642001, 6.36826384, 7.03292237, + 4.28116479, 6.36826384, 7.03292237, 6.36826384, 5.76642001, + 7.03292237, 4.28116479, 5.22145448, 4.72799187, 7.03292237, + 7.03292237, 6.36826384, 5.22145448, 7.03292237, 5.76642001, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 4.28116479, 7.03292237, + 6.36826384, 5.22145448, 5.76642001, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 6.36826384, 7.03292237, 7.03292237, + 5.22145448, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 4.28116479, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 7.03292237, + 6.36826384, 7.03292237, 4.72799187, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 5.22145448, 6.36826384, 7.03292237, + 5.76642001, 5.76642001, 7.03292237, 7.03292237, 7.03292237, + 4.28116479, 7.03292237, 5.76642001, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 3.87656588, 6.36826384, 6.36826384, + 5.22145448, 7.03292237, 5.22145448, 7.03292237, 7.03292237, + 7.03292237, 4.28116479, 7.03292237, 3.87656588, 7.03292237, + 7.03292237, 5.22145448, 6.36826384, 4.72799187, 7.03292237, + 7.03292237, 7.03292237, 6.36826384, 7.03292237, 5.76642001, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 5.22145448, + 4.28116479, 7.03292237, 6.36826384, 7.03292237, 7.03292237, + 5.76642001, 5.22145448, 5.76642001, 7.03292237, 4.28116479, + 7.03292237, 7.03292237, 4.72799187, 6.36826384, 7.03292237, + 4.72799187, 5.76642001, 7.03292237, 7.03292237, 6.36826384, + 6.36826384, 5.76642001, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 4.72799187, 7.03292237, 6.36826384, + 7.03292237, 4.72799187, 4.72799187, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 4.72799187, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 5.76642001, 7.03292237, 4.72799187, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 6.36826384, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 3.5102043, 6.36826384, 5.22145448, 7.03292237, 5.22145448, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 4.72799187, 7.03292237, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 7.03292237, + 6.36826384, 4.72799187, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 5.22145448, 4.72799187, + 7.03292237, 7.03292237, 7.03292237, 4.28116479, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 3.87656588, 7.03292237, + 5.22145448, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 3.5102043, 7.03292237, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 4.72799187, 7.03292237, 7.03292237, 4.28116479, + 6.36826384, 7.03292237, 5.22145448, 7.03292237, 7.03292237, + 5.76642001, 7.03292237, 7.03292237, 7.03292237, 5.76642001, + 4.72799187, 7.03292237, 4.72799187, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 3.87656588, 5.22145448, 7.03292237, 7.03292237, + 6.36826384, 4.28116479, 7.03292237, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 3.87656588, 6.36826384, 7.03292237, + 7.03292237, 5.76642001, 7.03292237, 5.22145448, 7.03292237, + 5.76642001, 4.72799187, 7.03292237, 7.03292237, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 5.76642001, + 5.22145448, 7.03292237, 5.76642001, 6.36826384, 4.28116479, + 7.03292237, 4.72799187, 3.87656588, 5.22145448, 7.03292237, + 6.36826384, 5.76642001, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 6.36826384, 5.76642001, 6.36826384, 7.03292237, + 5.76642001, 7.03292237, 5.76642001, 5.22145448, 3.87656588, + 5.76642001, 6.36826384, 7.03292237, 5.22145448, 6.36826384, + 5.22145448, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 6.36826384, 7.03292237, 5.76642001, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 4.72799187, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 4.72799187, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 5.22145448, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 3.5102043, + 3.87656588, 7.03292237, 4.72799187, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 3.87656588, + 5.22145448, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 5.76642001, 7.03292237, 7.03292237, 7.03292237, + 4.28116479, 7.03292237, 4.72799187, 4.72799187, 7.03292237, + 6.36826384, 5.76642001, 7.03292237, 4.28116479, 7.03292237, + 7.03292237, 7.03292237, 5.76642001, 7.03292237, 7.03292237, + 5.76642001, 5.22145448, 7.03292237, 4.72799187, 7.03292237, + 4.28116479, 5.76642001, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 4.28116479, 7.03292237, + 7.03292237, 7.03292237, 5.22145448, 5.22145448, 7.03292237, + 7.03292237, 7.03292237, 5.76642001, 6.36826384, 7.03292237, + 7.03292237, 5.22145448, 7.03292237, 7.03292237, 5.76642001, + 5.22145448, 7.03292237, 7.03292237, 7.03292237, 3.87656588, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 5.76642001, 7.03292237, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 4.28116479, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 3.5102043, + 7.03292237, 7.03292237, 7.03292237, 5.76642001, 4.28116479, + 5.22145448, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 5.76642001, 6.36826384, 7.03292237, + 5.22145448, 5.76642001, 5.76642001, 7.03292237, 7.03292237, + 5.22145448, 7.03292237, 7.03292237, 5.22145448, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 5.22145448, + 6.36826384, 5.22145448, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 5.22145448, 7.03292237, 5.76642001, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 4.72799187, 7.03292237, + 7.03292237, 7.03292237, 6.36826384, 4.72799187, 5.22145448, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 6.36826384, 7.03292237, 7.03292237, 5.76642001, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 7.03292237, + 4.72799187, 3.87656588, 7.03292237, 7.03292237, 4.72799187, + 7.03292237, 7.03292237, 6.36826384, 7.03292237, 5.22145448, + 7.03292237, 7.03292237, 7.03292237, 3.87656588, 5.76642001, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 5.76642001, + 5.22145448, 7.03292237, 6.36826384, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 5.76642001, + 5.76642001, 7.03292237, 5.76642001, 3.87656588, 6.36826384, + 7.03292237, 7.03292237, 7.03292237, 6.36826384, 5.76642001, + 5.22145448, 7.03292237, 5.22145448, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 5.22145448, 4.72799187, + 7.03292237, 6.36826384, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 7.03292237, 7.03292237, 5.22145448, 6.36826384, + 7.03292237, 7.03292237, 3.17846635, 5.76642001, 7.03292237, + 3.5102043, 7.03292237, 7.03292237, 7.03292237, 3.87656588, + 7.03292237, 6.36826384, 6.36826384, 7.03292237, 5.22145448, + 7.03292237, 7.03292237, 7.03292237, 7.03292237, 7.03292237, + 7.03292237, 4.28116479, 6.36826384, 7.03292237, 6.36826384, + 4.72799187, 7.03292237, 7.03292237, 5.22145448, 4.28116479, + 7.03292237, 6.36826384, 7.03292237, 4.72799187, 5.76642001, + 6.36826384, 5.22145448, 7.03292237, 7.03292237, 7.03292237, + 6.36826384, 7.03292237, 7.03292237, 3.87656588, 7.03292237, + 4.72799187, 7.03292237, 3.53462742, 4.76088805, 5.25778406, + 4.31095206, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.25778406, 5.25778406, 5.80654132, 5.80654132, + 3.90353806, 5.25778406, 4.31095206, 5.80654132, 5.25778406, + 3.53462742, 2.89810483, 5.80654132, 5.25778406, 5.80654132, + 2.89810483, 5.80654132, 5.25778406, 3.53462742, 4.76088805, + 5.80654132, 3.20058132, 5.80654132, 5.80654132, 4.76088805, + 5.80654132, 3.53462742, 3.53462742, 5.80654132, 5.80654132, + 5.80654132, 4.76088805, 5.80654132, 4.76088805, 3.90353806, + 5.80654132, 3.53462742, 5.80654132, 2.6242144, 3.20058132, + 5.80654132, 5.80654132, 3.90353806, 3.20058132, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 2.89810483, 5.80654132, 5.80654132, 3.90353806, 3.53462742, + 4.31095206, 5.80654132, 5.80654132, 4.76088805, 5.80654132, + 3.53462742, 5.80654132, 4.76088805, 2.89810483, 5.25778406, + 4.31095206, 5.80654132, 4.31095206, 5.80654132, 5.80654132, + 4.76088805, 4.31095206, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 4.76088805, 5.80654132, 5.25778406, + 5.25778406, 5.80654132, 5.80654132, 3.53462742, 5.80654132, + 3.53462742, 5.80654132, 4.31095206, 5.80654132, 5.80654132, + 5.25778406, 5.80654132, 3.20058132, 5.80654132, 5.80654132, + 3.20058132, 3.90353806, 5.80654132, 5.80654132, 5.25778406, + 3.53462742, 3.20058132, 5.80654132, 4.31095206, 5.80654132, + 5.80654132, 5.80654132, 3.20058132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 4.31095206, 5.80654132, 3.90353806, + 5.80654132, 4.31095206, 4.31095206, 5.80654132, 4.76088805, + 3.90353806, 3.90353806, 4.76088805, 3.90353806, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.25778406, 3.53462742, 5.80654132, 3.53462742, + 5.80654132, 5.80654132, 5.80654132, 2.89810483, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 4.76088805, 4.76088805, + 5.80654132, 2.89810483, 5.80654132, 4.76088805, 5.80654132, + 5.80654132, 4.31095206, 3.20058132, 5.80654132, 4.76088805, + 5.80654132, 2.89810483, 2.89810483, 5.25778406, 3.90353806, + 5.80654132, 5.80654132, 5.25778406, 5.80654132, 5.80654132, + 3.90353806, 5.80654132, 5.25778406, 4.76088805, 5.80654132, + 2.89810483, 5.25778406, 5.80654132, 5.80654132, 4.31095206, + 5.25778406, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 2.89810483, 5.80654132, 3.53462742, 3.90353806, 5.25778406, + 5.80654132, 3.20058132, 2.89810483, 5.80654132, 4.31095206, + 5.80654132, 3.53462742, 5.25778406, 4.76088805, 5.80654132, + 3.53462742, 3.90353806, 5.80654132, 3.20058132, 5.80654132, + 5.80654132, 3.53462742, 5.25778406, 4.76088805, 4.76088805, + 5.80654132, 5.80654132, 2.89810483, 3.20058132, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.25778406, 5.25778406, + 5.80654132, 5.80654132, 4.76088805, 5.80654132, 4.31095206, + 5.25778406, 5.80654132, 4.31095206, 4.31095206, 5.80654132, + 5.80654132, 3.53462742, 4.76088805, 3.53462742, 4.76088805, + 4.31095206, 5.80654132, 3.90353806, 5.80654132, 4.76088805, + 5.80654132, 5.80654132, 5.80654132, 4.31095206, 3.90353806, + 5.80654132, 4.76088805, 4.76088805, 3.53462742, 5.80654132, + 5.80654132, 5.25778406, 3.53462742, 3.20058132, 3.53462742, + 3.90353806, 5.80654132, 4.31095206, 4.76088805, 5.80654132, + 5.80654132, 5.80654132, 3.90353806, 4.76088805, 2.89810483, + 5.80654132, 5.80654132, 5.80654132, 4.76088805, 5.25778406, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 3.90353806, 5.25778406, 4.76088805, + 5.80654132, 4.76088805, 3.90353806, 5.80654132, 5.80654132, + 4.76088805, 5.80654132, 5.25778406, 5.80654132, 2.89810483, + 5.80654132, 5.25778406, 3.90353806, 3.90353806, 5.80654132, + 5.25778406, 3.53462742, 5.80654132, 4.76088805, 5.25778406, + 5.80654132, 3.90353806, 4.31095206, 5.80654132, 5.25778406, + 3.90353806, 3.53462742, 5.25778406, 2.89810483, 5.80654132, + 3.53462742, 4.76088805, 4.31095206, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 3.90353806, 5.80654132, + 4.31095206, 5.80654132, 5.80654132, 5.25778406, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.25778406, 5.25778406, + 5.80654132, 5.25778406, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.25778406, 4.31095206, 5.80654132, 5.25778406, + 5.80654132, 5.25778406, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 4.31095206, 5.25778406, 3.53462742, 2.89810483, + 5.80654132, 5.80654132, 3.20058132, 5.80654132, 4.31095206, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 3.90353806, + 3.90353806, 3.90353806, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 4.76088805, 3.20058132, 4.31095206, 5.80654132, + 3.90353806, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 3.90353806, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 3.90353806, 5.80654132, 3.90353806, 3.53462742, + 5.80654132, 4.76088805, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 4.76088805, 5.25778406, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.25778406, + 3.53462742, 5.25778406, 5.80654132, 3.53462742, 5.80654132, + 3.90353806, 5.80654132, 5.80654132, 5.80654132, 3.90353806, + 3.20058132, 5.80654132, 5.80654132, 3.90353806, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 3.53462742, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 3.53462742, 5.25778406, 3.90353806, + 5.80654132, 4.76088805, 4.76088805, 3.90353806, 5.80654132, + 5.80654132, 4.31095206, 2.89810483, 5.80654132, 5.80654132, + 3.90353806, 5.80654132, 3.53462742, 3.90353806, 5.80654132, + 5.80654132, 4.76088805, 5.80654132, 4.31095206, 5.25778406, + 5.25778406, 3.20058132, 3.53462742, 5.80654132, 4.31095206, + 5.80654132, 4.76088805, 3.90353806, 4.76088805, 4.76088805, + 5.80654132, 5.80654132, 5.25778406, 3.90353806, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 3.53462742, 4.31095206, 3.90353806, 4.76088805, + 4.31095206, 3.53462742, 3.90353806, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 3.20058132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 3.90353806, 4.76088805, + 5.25778406, 3.53462742, 3.20058132, 5.80654132, 3.90353806, + 5.80654132, 3.53462742, 5.80654132, 5.80654132, 3.90353806, + 5.80654132, 3.90353806, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 4.76088805, 3.90353806, 4.76088805, 5.25778406, + 2.89810483, 5.80654132, 4.31095206, 5.80654132, 4.76088805, + 5.80654132, 5.25778406, 5.80654132, 5.80654132, 5.80654132, + 3.53462742, 2.89810483, 5.80654132, 5.80654132, 5.80654132, + 3.90353806, 4.76088805, 5.80654132, 5.25778406, 4.76088805, + 5.25778406, 5.80654132, 5.80654132, 5.25778406, 5.80654132, + 5.80654132, 5.80654132, 2.89810483, 5.25778406, 5.80654132, + 5.80654132, 4.76088805, 4.76088805, 5.25778406, 5.80654132, + 5.80654132, 4.31095206, 3.20058132, 3.53462742, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.25778406, + 5.80654132, 5.80654132, 3.90353806, 4.76088805, 5.80654132, + 3.53462742, 5.80654132, 5.25778406, 2.89810483, 5.80654132, + 5.25778406, 5.80654132, 5.80654132, 5.80654132, 5.25778406, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 4.31095206, 5.80654132, 3.20058132, 5.80654132, + 5.25778406, 4.76088805, 5.25778406, 5.80654132, 4.76088805, + 5.80654132, 3.90353806, 4.31095206, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 5.25778406, 5.80654132, 3.90353806, + 4.76088805, 3.90353806, 5.80654132, 3.53462742, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 3.53462742, 5.80654132, + 4.76088805, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 3.90353806, + 2.6242144, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 4.76088805, 5.80654132, 3.53462742, 5.80654132, 5.80654132, + 3.90353806, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 3.20058132, 3.20058132, 5.80654132, + 5.80654132, 5.80654132, 3.90353806, 5.80654132, 5.25778406, + 4.31095206, 5.25778406, 4.31095206, 4.31095206, 4.76088805, + 5.80654132, 4.76088805, 5.80654132, 3.53462742, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 3.20058132, + 5.80654132, 3.90353806, 5.80654132, 4.76088805, 5.80654132, + 3.90353806, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.25778406, 5.80654132, 4.31095206, 5.25778406, + 4.31095206, 5.80654132, 3.90353806, 5.80654132, 3.53462742, + 5.25778406, 5.80654132, 5.80654132, 4.31095206, 3.90353806, + 3.53462742, 5.80654132, 5.80654132, 5.80654132, 4.31095206, + 5.80654132, 5.80654132, 5.25778406, 4.76088805, 4.31095206, + 3.20058132, 5.80654132, 3.53462742, 3.20058132, 5.80654132, + 5.80654132, 3.20058132, 3.20058132, 5.80654132, 4.31095206, + 4.31095206, 5.80654132, 5.80654132, 3.90353806, 3.90353806, + 3.53462742, 5.80654132, 3.90353806, 3.53462742, 5.80654132, + 3.90353806, 5.25778406, 5.80654132, 3.53462742, 5.80654132, + 5.25778406, 5.80654132, 4.31095206, 3.90353806, 5.80654132, + 5.80654132, 4.31095206, 5.25778406, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.25778406, + 3.20058132, 5.25778406, 2.89810483, 3.90353806, 5.80654132, + 3.53462742, 5.80654132, 5.25778406, 5.80654132, 2.89810483, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 3.20058132, + 5.80654132, 5.25778406, 3.53462742, 4.31095206, 4.76088805, + 3.90353806, 5.80654132, 5.80654132, 5.25778406, 3.90353806, + 4.76088805, 4.31095206, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 3.90353806, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.25778406, + 3.53462742, 5.80654132, 5.80654132, 5.25778406, 5.80654132, + 3.20058132, 5.80654132, 4.76088805, 5.80654132, 4.76088805, + 5.80654132, 5.25778406, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.25778406, 2.89810483, 5.80654132, 5.80654132, + 2.89810483, 3.53462742, 5.80654132, 5.80654132, 2.89810483, + 4.31095206, 3.53462742, 4.31095206, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 4.31095206, + 4.76088805, 5.25778406, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.25778406, 3.90353806, 5.80654132, 5.25778406, + 5.80654132, 2.89810483, 2.89810483, 5.80654132, 3.53462742, + 5.80654132, 3.53462742, 5.80654132, 4.31095206, 2.89810483, + 5.80654132, 5.80654132, 2.89810483, 4.76088805, 5.80654132, + 5.80654132, 3.20058132, 5.80654132, 3.90353806, 5.80654132, + 5.80654132, 3.20058132, 3.90353806, 4.76088805, 4.76088805, + 5.80654132, 3.90353806, 4.31095206, 5.80654132, 4.31095206, + 5.80654132, 3.20058132, 4.31095206, 4.76088805, 3.53462742, + 5.80654132, 5.80654132, 3.53462742, 3.53462742, 3.53462742, + 5.80654132, 5.80654132, 3.90353806, 3.90353806, 3.20058132, + 5.80654132, 5.80654132, 2.89810483, 3.90353806, 5.80654132, + 2.89810483, 3.53462742, 3.53462742, 4.31095206, 5.80654132, + 3.53462742, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 5.25778406, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 4.76088805, 5.80654132, 5.80654132, 4.76088805, + 5.80654132, 5.80654132, 4.76088805, 4.76088805, 5.80654132, + 5.25778406, 4.31095206, 5.80654132, 4.76088805, 3.90353806, + 4.31095206, 5.80654132, 2.89810483, 4.31095206, 5.25778406, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 3.20058132, + 5.25778406, 5.80654132, 4.76088805, 5.80654132, 4.31095206, + 5.80654132, 5.80654132, 4.76088805, 4.31095206, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 4.31095206, + 4.31095206, 3.20058132, 4.76088805, 5.80654132, 3.20058132, + 3.20058132, 5.80654132, 3.90353806, 5.25778406, 3.20058132, + 4.76088805, 3.20058132, 3.53462742, 4.76088805, 5.80654132, + 5.80654132, 4.31095206, 4.76088805, 5.80654132, 4.31095206, + 5.80654132, 4.76088805, 4.31095206, 2.89810483, 5.80654132, + 5.80654132, 5.80654132, 4.76088805, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 4.76088805, 5.25778406, 4.31095206, + 5.80654132, 3.90353806, 3.53462742, 4.76088805, 5.80654132, + 4.31095206, 5.80654132, 5.80654132, 3.20058132, 5.80654132, + 5.25778406, 5.80654132, 5.80654132, 5.80654132, 3.53462742, + 2.6242144, 5.80654132, 5.80654132, 3.53462742, 5.25778406, + 3.90353806, 5.80654132, 2.89810483, 5.80654132, 3.90353806, + 5.80654132, 5.80654132, 3.90353806, 2.89810483, 5.80654132, + 4.76088805, 4.31095206, 5.80654132, 5.25778406, 5.80654132, + 5.80654132, 4.31095206, 5.80654132, 5.80654132, 5.80654132, + 3.90353806, 4.76088805, 5.80654132, 4.76088805, 5.80654132, + 4.76088805, 3.53462742, 3.90353806, 5.80654132, 5.80654132, + 5.80654132, 5.25778406, 5.80654132, 5.80654132, 5.25778406, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 3.53462742, 3.53462742, 3.90353806, 5.80654132, 4.31095206, + 3.53462742, 5.80654132, 4.76088805, 4.76088805, 3.20058132, + 3.90353806, 5.80654132, 5.25778406, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 4.31095206, 5.25778406, 4.31095206, + 5.80654132, 3.20058132, 5.80654132, 4.31095206, 4.31095206, + 4.76088805, 5.80654132, 4.76088805, 4.31095206, 5.80654132, + 5.25778406, 3.53462742, 3.53462742, 5.25778406, 5.80654132, + 3.90353806, 5.25778406, 4.31095206, 4.31095206, 3.53462742, + 5.80654132, 3.90353806, 5.80654132, 5.80654132, 4.76088805, + 5.25778406, 3.20058132, 3.90353806, 5.80654132, 5.25778406, + 5.80654132, 5.80654132, 5.25778406, 5.80654132, 4.31095206, + 5.25778406, 4.76088805, 5.80654132, 5.80654132, 5.25778406, + 3.53462742, 5.80654132, 5.80654132, 5.80654132, 5.25778406, + 5.25778406, 5.80654132, 3.20058132, 5.80654132, 5.80654132, + 3.53462742, 5.80654132, 5.80654132, 5.80654132, 4.31095206, + 5.80654132, 4.76088805, 5.80654132, 5.80654132, 5.80654132, + 3.90353806, 4.31095206, 5.25778406, 5.80654132, 3.53462742, + 3.90353806, 5.25778406, 4.31095206, 5.80654132, 5.25778406, + 5.25778406, 2.89810483, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 5.25778406, 5.80654132, 4.76088805, + 5.80654132, 5.80654132, 5.80654132, 4.31095206, 5.80654132, + 3.20058132, 3.90353806, 5.80654132, 5.80654132, 5.25778406, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 5.80654132, 2.6242144, 5.80654132, 3.90353806, + 5.25778406, 4.76088805, 5.80654132, 5.80654132, 3.90353806, + 5.80654132, 3.53462742, 2.89810483, 5.80654132, 3.53462742, + 2.89810483, 4.76088805, 5.80654132, 5.80654132, 5.80654132, + 4.31095206, 5.80654132, 4.76088805, 3.90353806, 2.89810483, + 4.76088805, 5.80654132, 2.6242144, 3.53462742, 4.31095206, + 5.25778406, 5.25778406, 3.20058132, 4.31095206, 4.31095206, + 3.20058132, 4.31095206, 5.25778406, 4.31095206, 5.25778406, + 3.90353806, 4.31095206, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 3.90353806, 5.80654132, 5.80654132, 5.80654132, + 4.31095206, 5.80654132, 5.80654132, 5.80654132, 3.90353806, + 5.25778406, 3.90353806, 4.31095206, 4.76088805, 3.90353806, + 5.80654132, 5.80654132, 5.80654132, 2.89810483, 5.80654132, + 5.80654132, 5.80654132, 5.80654132, 5.80654132, 5.80654132, + 5.80654132, 3.90353806, 3.20058132, 5.25778406, 4.76088805, + 5.25778406]) + + +class InvGaussIdentity(Medpar1): + """ + Accuracy is different for R vs Stata ML vs Stata IRLS, we are close. + """ + def __init__(self): + super(InvGaussIdentity, self).__init__() + self.params = np.array([0.44538838, -1.05872706, 2.83947966]) + self.bse = np.array([0.02586783, 0.13830023, 0.20834864]) + filename = os.path.join(os.path.dirname(os.path.abspath(__file__)), + "igaussident_resids.csv") + self.resids = pd.read_csv(filename, sep=',', header=None).values + self.null_deviance = 335.1539777981053 # from R, Rpy bug + self.df_null = 3675 + self.deviance = 305.33661191013988 + self.df_resid = 3673 + self.df_model = 2 + self.aic_R = 18558.677276882016 + self.aic_Stata = 6.619290231464371 + self.bic_Stata = -29848.45250412075 + self.llf_stata = -12163.25544543151 + self.chi2 = 567.1229375785638 # in Stata not sm + # self.llf = -9275.3386384410078 # from R + self.llf = -12163.25545 # from Stata, big diff with R + self.scale = 0.10115387793455666 + self.pearson_chi2 = 371.5346609292967 # deviance_p in Stata + self.fittedvalues = np.array([ + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.9571983, + 6.84797506, 6.84797506, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.9571983, 6.84797506, + 5.51180993, 6.84797506, 5.51180993, 5.06642155, 5.06642155, + 6.84797506, 6.84797506, 6.40258668, 6.84797506, 5.9571983, + 6.84797506, 4.62103317, 6.84797506, 6.84797506, 6.84797506, + 5.9571983, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 4.17564479, 6.84797506, 6.84797506, 4.62103317, + 6.84797506, 6.84797506, 5.06642155, 6.84797506, 6.84797506, + 6.84797506, 5.51180993, 6.40258668, 6.40258668, 4.62103317, + 5.06642155, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 5.51180993, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.9571983, 6.40258668, + 6.40258668, 5.51180993, 6.84797506, 6.84797506, 6.84797506, + 5.9571983, 6.84797506, 6.84797506, 4.17564479, 5.9571983, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 5.51180993, 5.51180993, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 5.06642155, 6.84797506, 6.40258668, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 5.51180993, 6.40258668, 5.51180993, + 6.84797506, 6.84797506, 5.06642155, 5.9571983, 6.84797506, + 5.06642155, 6.40258668, 4.17564479, 6.84797506, 6.84797506, + 5.51180993, 5.51180993, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 4.62103317, + 6.84797506, 6.40258668, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.40258668, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.9571983, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.9571983, + 6.84797506, 6.84797506, 6.40258668, 4.17564479, 6.84797506, + 6.84797506, 5.51180993, 6.84797506, 5.9571983, 4.62103317, + 5.9571983, 6.40258668, 6.40258668, 6.84797506, 6.84797506, + 5.9571983, 6.84797506, 6.84797506, 4.62103317, 6.84797506, + 6.40258668, 6.84797506, 6.40258668, 6.84797506, 5.51180993, + 6.84797506, 4.62103317, 5.06642155, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.40258668, + 6.84797506, 4.62103317, 5.51180993, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 4.62103317, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 5.9571983, 6.84797506, 6.84797506, + 6.84797506, 5.06642155, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.40258668, 6.84797506, 6.40258668, 4.62103317, 5.9571983, + 5.51180993, 6.40258668, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 6.40258668, + 5.9571983, 6.84797506, 5.51180993, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 4.62103317, 6.84797506, 5.51180993, 6.84797506, 6.40258668, + 5.9571983, 4.62103317, 4.62103317, 6.84797506, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 4.62103317, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.51180993, + 6.84797506, 6.84797506, 6.84797506, 5.51180993, 6.84797506, + 5.9571983, 6.84797506, 5.06642155, 4.62103317, 6.40258668, + 5.9571983, 6.84797506, 6.84797506, 6.84797506, 5.51180993, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 4.17564479, 5.06642155, 6.84797506, 6.84797506, 6.84797506, + 5.06642155, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.40258668, 4.17564479, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 4.62103317, 6.84797506, 6.40258668, + 6.84797506, 5.51180993, 5.51180993, 6.40258668, 6.84797506, + 6.40258668, 6.40258668, 6.84797506, 4.62103317, 6.84797506, + 6.84797506, 6.84797506, 5.51180993, 6.40258668, 6.84797506, + 4.17564479, 6.40258668, 5.51180993, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 4.62103317, 6.84797506, + 5.51180993, 6.84797506, 6.40258668, 5.51180993, 5.06642155, + 6.84797506, 6.84797506, 6.84797506, 5.06642155, 6.40258668, + 6.84797506, 6.40258668, 5.9571983, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 5.51180993, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 4.17564479, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.06642155, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.40258668, 6.84797506, 6.84797506, + 6.40258668, 6.84797506, 6.40258668, 6.84797506, 5.51180993, + 6.40258668, 6.84797506, 6.40258668, 6.84797506, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 4.17564479, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 6.40258668, + 5.9571983, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 5.9571983, 6.84797506, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 4.17564479, 6.84797506, 6.40258668, 6.40258668, + 5.06642155, 5.9571983, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 4.17564479, 5.51180993, 5.06642155, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.06642155, 6.40258668, + 6.84797506, 6.84797506, 5.9571983, 6.84797506, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.40258668, + 6.84797506, 5.51180993, 5.9571983, 6.84797506, 5.9571983, + 6.40258668, 5.9571983, 5.9571983, 6.84797506, 5.9571983, + 6.84797506, 6.84797506, 6.84797506, 5.06642155, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.40258668, 6.84797506, 6.40258668, 6.84797506, 5.06642155, + 6.84797506, 6.84797506, 4.62103317, 6.40258668, 4.17564479, + 6.84797506, 3.73025641, 6.84797506, 6.84797506, 5.9571983, + 5.51180993, 6.84797506, 5.9571983, 4.62103317, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.9571983, 5.06642155, + 6.84797506, 6.40258668, 6.84797506, 5.51180993, 6.84797506, + 5.06642155, 6.84797506, 6.84797506, 6.84797506, 5.51180993, + 5.51180993, 5.06642155, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 4.62103317, 6.84797506, 6.84797506, 6.84797506, 5.9571983, + 6.40258668, 6.84797506, 6.84797506, 5.9571983, 6.84797506, + 6.84797506, 6.40258668, 5.06642155, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 5.06642155, 5.9571983, 6.84797506, 5.9571983, + 6.40258668, 6.84797506, 6.84797506, 6.84797506, 5.06642155, + 6.84797506, 6.84797506, 6.84797506, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.40258668, 6.84797506, 6.84797506, 5.9571983, 6.40258668, + 5.06642155, 6.84797506, 6.84797506, 6.84797506, 5.9571983, + 6.84797506, 6.40258668, 5.51180993, 5.9571983, 5.06642155, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 5.51180993, 6.84797506, 6.84797506, + 6.40258668, 6.84797506, 6.84797506, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 6.40258668, 6.84797506, 5.51180993, + 6.84797506, 6.84797506, 6.84797506, 5.9571983, 6.84797506, + 6.40258668, 6.40258668, 6.84797506, 5.9571983, 6.84797506, + 6.40258668, 6.84797506, 6.84797506, 6.84797506, 5.06642155, + 5.51180993, 6.84797506, 4.17564479, 5.9571983, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.40258668, 6.84797506, 6.84797506, + 5.06642155, 6.84797506, 6.40258668, 6.84797506, 4.62103317, + 6.84797506, 6.84797506, 5.9571983, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 5.06642155, 6.40258668, 4.17564479, 6.84797506, 6.84797506, + 6.40258668, 5.06642155, 4.62103317, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 4.17564479, 6.84797506, 6.84797506, 6.84797506, + 4.17564479, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 4.17564479, + 6.84797506, 5.06642155, 5.51180993, 5.51180993, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 5.51180993, 5.51180993, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 5.06642155, 6.40258668, 5.9571983, + 5.9571983, 6.40258668, 6.84797506, 6.84797506, 6.84797506, + 6.40258668, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 5.06642155, 6.84797506, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 5.06642155, 4.62103317, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.9571983, + 6.84797506, 5.9571983, 6.84797506, 6.84797506, 6.84797506, + 5.51180993, 6.84797506, 6.84797506, 6.84797506, 5.51180993, + 6.40258668, 6.84797506, 6.84797506, 6.40258668, 6.40258668, + 6.84797506, 6.84797506, 5.9571983, 6.84797506, 5.51180993, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 5.06642155, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 4.62103317, + 6.84797506, 6.40258668, 6.84797506, 5.9571983, 4.62103317, + 5.9571983, 6.84797506, 4.17564479, 6.84797506, 6.84797506, + 6.84797506, 3.73025641, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 5.9571983, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 5.9571983, 5.9571983, 5.9571983, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 5.9571983, 6.84797506, 4.62103317, 6.40258668, + 5.9571983, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 5.51180993, + 6.84797506, 6.84797506, 6.84797506, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 5.9571983, 6.84797506, 6.84797506, 6.84797506, + 6.40258668, 6.40258668, 6.84797506, 6.84797506, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 5.51180993, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 3.73025641, 6.84797506, 6.84797506, + 6.84797506, 4.17564479, 6.40258668, 5.9571983, 6.84797506, + 6.84797506, 6.40258668, 5.06642155, 6.84797506, 6.84797506, + 5.9571983, 6.84797506, 4.17564479, 5.51180993, 6.40258668, + 4.62103317, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.40258668, + 6.84797506, 5.51180993, 6.40258668, 6.40258668, 6.84797506, + 6.40258668, 6.84797506, 6.84797506, 6.84797506, 5.51180993, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 5.06642155, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.40258668, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 3.73025641, 6.84797506, 5.51180993, + 5.51180993, 6.84797506, 6.40258668, 6.84797506, 5.06642155, + 6.84797506, 6.84797506, 6.84797506, 5.06642155, 6.84797506, + 5.9571983, 6.84797506, 4.17564479, 6.84797506, 5.51180993, + 4.17564479, 5.06642155, 6.40258668, 5.9571983, 6.84797506, + 6.40258668, 6.84797506, 4.62103317, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 5.51180993, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 4.62103317, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 5.9571983, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 3.73025641, 5.06642155, 6.84797506, 4.62103317, 6.84797506, + 5.06642155, 6.84797506, 5.51180993, 5.9571983, 5.9571983, + 4.17564479, 5.9571983, 5.51180993, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.51180993, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 5.51180993, 6.84797506, + 6.84797506, 6.84797506, 5.51180993, 6.84797506, 6.84797506, + 6.40258668, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 4.62103317, + 5.06642155, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 6.40258668, + 6.40258668, 5.9571983, 6.84797506, 5.9571983, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 5.51180993, 6.84797506, 6.84797506, 5.9571983, 6.40258668, + 5.9571983, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 5.06642155, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 5.9571983, 6.40258668, 5.06642155, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.06642155, + 6.84797506, 6.40258668, 6.84797506, 5.51180993, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 5.9571983, 6.40258668, + 5.9571983, 6.84797506, 6.84797506, 6.84797506, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 5.06642155, 6.84797506, 5.51180993, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 5.06642155, 6.40258668, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 5.9571983, 5.51180993, + 6.84797506, 6.84797506, 6.84797506, 5.51180993, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 4.62103317, + 5.9571983, 6.84797506, 4.62103317, 6.84797506, 6.40258668, + 6.84797506, 6.84797506, 4.62103317, 6.84797506, 6.84797506, + 6.40258668, 4.17564479, 3.73025641, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.9571983, + 6.84797506, 5.06642155, 5.9571983, 6.84797506, 6.84797506, + 4.17564479, 6.84797506, 6.84797506, 6.84797506, 4.62103317, + 6.84797506, 6.84797506, 6.84797506, 5.9571983, 5.9571983, + 6.84797506, 6.40258668, 5.9571983, 6.84797506, 6.40258668, + 5.9571983, 6.84797506, 5.9571983, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 4.62103317, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 5.06642155, 5.9571983, 6.40258668, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 5.9571983, 4.62103317, + 6.84797506, 5.9571983, 5.06642155, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.9571983, + 6.40258668, 6.40258668, 6.84797506, 6.84797506, 6.40258668, + 4.17564479, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 3.73025641, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 5.06642155, 6.84797506, 6.40258668, 5.06642155, + 5.06642155, 6.84797506, 5.9571983, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 4.62103317, 6.84797506, 6.84797506, + 6.84797506, 5.9571983, 6.84797506, 6.84797506, 6.84797506, + 5.06642155, 6.84797506, 6.84797506, 6.40258668, 5.51180993, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 5.51180993, 6.84797506, 6.84797506, 6.40258668, + 6.84797506, 6.84797506, 5.51180993, 6.84797506, 6.40258668, + 6.40258668, 6.84797506, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 6.40258668, 6.84797506, 5.06642155, + 4.62103317, 5.06642155, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 4.62103317, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.40258668, 4.62103317, 4.62103317, 6.84797506, 5.51180993, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 6.84797506, + 5.9571983, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.06642155, 6.84797506, + 4.17564479, 6.84797506, 5.06642155, 6.84797506, 6.84797506, + 6.84797506, 5.51180993, 6.84797506, 4.62103317, 6.84797506, + 6.84797506, 5.06642155, 5.51180993, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.9571983, 5.51180993, + 6.84797506, 6.84797506, 4.17564479, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.06642155, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 4.62103317, 6.84797506, 6.84797506, 6.84797506, 5.9571983, + 6.84797506, 5.51180993, 5.06642155, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 5.9571983, 6.84797506, 5.9571983, + 6.84797506, 4.62103317, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 5.9571983, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.9571983, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 5.9571983, 6.84797506, 4.17564479, + 6.40258668, 5.9571983, 6.84797506, 4.62103317, 6.84797506, + 5.9571983, 5.51180993, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 5.9571983, 6.84797506, 6.84797506, 6.84797506, 3.73025641, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 4.62103317, 5.06642155, 6.40258668, 6.84797506, + 6.84797506, 4.62103317, 5.9571983, 6.84797506, 6.84797506, + 6.84797506, 4.62103317, 6.84797506, 6.84797506, 5.51180993, + 6.40258668, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.06642155, + 6.84797506, 5.51180993, 6.40258668, 6.84797506, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.51180993, + 6.84797506, 6.84797506, 5.51180993, 6.84797506, 6.40258668, + 6.84797506, 6.84797506, 5.9571983, 6.84797506, 6.84797506, + 3.73025641, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 5.9571983, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.40258668, + 5.06642155, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.40258668, 6.84797506, 6.40258668, 5.06642155, 5.51180993, + 5.9571983, 6.84797506, 6.40258668, 6.40258668, 6.84797506, + 6.40258668, 6.84797506, 5.51180993, 5.06642155, 5.9571983, + 6.40258668, 6.84797506, 6.84797506, 5.9571983, 5.51180993, + 6.84797506, 6.40258668, 4.17564479, 6.40258668, 6.84797506, + 5.9571983, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 3.73025641, 6.84797506, 6.84797506, 6.84797506, + 5.51180993, 6.84797506, 6.40258668, 6.84797506, 6.40258668, + 6.84797506, 6.40258668, 5.51180993, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 6.40258668, 6.84797506, 6.84797506, + 6.40258668, 5.06642155, 6.84797506, 5.51180993, 6.84797506, + 5.06642155, 6.84797506, 4.62103317, 6.84797506, 6.84797506, + 6.40258668, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 4.62103317, 6.40258668, 6.84797506, 4.17564479, 6.84797506, + 6.84797506, 6.84797506, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 5.51180993, 6.84797506, + 6.84797506, 5.9571983, 6.40258668, 6.84797506, 5.06642155, + 6.84797506, 6.84797506, 5.51180993, 6.84797506, 3.73025641, + 6.40258668, 6.40258668, 6.84797506, 6.40258668, 6.84797506, + 5.51180993, 6.40258668, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 5.9571983, 4.62103317, 6.84797506, 6.84797506, + 5.06642155, 5.06642155, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 5.9571983, 6.84797506, 5.9571983, + 4.62103317, 6.84797506, 4.62103317, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 3.73025641, 6.84797506, 5.51180993, + 6.84797506, 6.40258668, 6.84797506, 6.40258668, 6.84797506, + 5.06642155, 6.84797506, 6.84797506, 5.06642155, 3.73025641, + 3.28486804, 4.17564479, 5.51180993, 6.40258668, 6.84797506, + 4.62103317, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.40258668, 6.84797506, 6.84797506, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.06642155, 6.84797506, + 6.84797506, 6.84797506, 5.9571983, 6.84797506, 3.73025641, + 6.84797506, 6.84797506, 5.51180993, 6.40258668, 4.17564479, + 5.06642155, 6.84797506, 6.84797506, 4.17564479, 6.84797506, + 6.40258668, 6.84797506, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.06642155, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 5.9571983, 6.84797506, 4.62103317, 6.84797506, + 6.84797506, 6.84797506, 5.06642155, 6.40258668, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.40258668, 5.06642155, 6.40258668, 6.84797506, 6.84797506, + 5.51180993, 6.84797506, 5.9571983, 6.84797506, 6.84797506, + 6.84797506, 5.9571983, 6.84797506, 6.40258668, 6.40258668, + 6.84797506, 6.84797506, 6.40258668, 6.84797506, 5.51180993, + 6.84797506, 5.51180993, 5.51180993, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 5.06642155, 4.62103317, 6.84797506, 6.40258668, 6.84797506, + 5.9571983, 6.84797506, 6.84797506, 6.84797506, 5.06642155, + 6.84797506, 5.9571983, 6.84797506, 5.06642155, 6.84797506, + 6.84797506, 5.06642155, 5.9571983, 6.40258668, 6.84797506, + 4.62103317, 6.40258668, 6.84797506, 6.40258668, 5.9571983, + 6.84797506, 4.62103317, 5.51180993, 5.06642155, 6.84797506, + 6.84797506, 6.40258668, 5.51180993, 6.84797506, 5.9571983, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 4.62103317, 6.84797506, + 6.40258668, 5.51180993, 5.9571983, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.40258668, 6.84797506, 6.84797506, + 5.51180993, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 4.62103317, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 6.84797506, + 6.40258668, 6.84797506, 5.06642155, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 5.51180993, 6.40258668, 6.84797506, + 5.9571983, 5.9571983, 6.84797506, 6.84797506, 6.84797506, + 4.62103317, 6.84797506, 5.9571983, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 4.17564479, 6.40258668, 6.40258668, + 5.51180993, 6.84797506, 5.51180993, 6.84797506, 6.84797506, + 6.84797506, 4.62103317, 6.84797506, 4.17564479, 6.84797506, + 6.84797506, 5.51180993, 6.40258668, 5.06642155, 6.84797506, + 6.84797506, 6.84797506, 6.40258668, 6.84797506, 5.9571983, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.51180993, + 4.62103317, 6.84797506, 6.40258668, 6.84797506, 6.84797506, + 5.9571983, 5.51180993, 5.9571983, 6.84797506, 4.62103317, + 6.84797506, 6.84797506, 5.06642155, 6.40258668, 6.84797506, + 5.06642155, 5.9571983, 6.84797506, 6.84797506, 6.40258668, + 6.40258668, 5.9571983, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 5.06642155, 6.84797506, 6.40258668, + 6.84797506, 5.06642155, 5.06642155, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.06642155, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 5.9571983, 6.84797506, 5.06642155, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.40258668, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 3.73025641, 6.40258668, 5.51180993, 6.84797506, 5.51180993, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 5.06642155, 6.84797506, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 6.84797506, + 6.40258668, 5.06642155, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.51180993, 5.06642155, + 6.84797506, 6.84797506, 6.84797506, 4.62103317, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 4.17564479, 6.84797506, + 5.51180993, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 3.73025641, 6.84797506, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 5.06642155, 6.84797506, 6.84797506, 4.62103317, + 6.40258668, 6.84797506, 5.51180993, 6.84797506, 6.84797506, + 5.9571983, 6.84797506, 6.84797506, 6.84797506, 5.9571983, + 5.06642155, 6.84797506, 5.06642155, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 4.17564479, 5.51180993, 6.84797506, 6.84797506, + 6.40258668, 4.62103317, 6.84797506, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 4.17564479, 6.40258668, 6.84797506, + 6.84797506, 5.9571983, 6.84797506, 5.51180993, 6.84797506, + 5.9571983, 5.06642155, 6.84797506, 6.84797506, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 5.9571983, + 5.51180993, 6.84797506, 5.9571983, 6.40258668, 4.62103317, + 6.84797506, 5.06642155, 4.17564479, 5.51180993, 6.84797506, + 6.40258668, 5.9571983, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.40258668, 5.9571983, 6.40258668, 6.84797506, + 5.9571983, 6.84797506, 5.9571983, 5.51180993, 4.17564479, + 5.9571983, 6.40258668, 6.84797506, 5.51180993, 6.40258668, + 5.51180993, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.40258668, 6.84797506, 5.9571983, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 5.06642155, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.06642155, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.51180993, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 3.73025641, + 4.17564479, 6.84797506, 5.06642155, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 4.17564479, + 5.51180993, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 5.9571983, 6.84797506, 6.84797506, 6.84797506, + 4.62103317, 6.84797506, 5.06642155, 5.06642155, 6.84797506, + 6.40258668, 5.9571983, 6.84797506, 4.62103317, 6.84797506, + 6.84797506, 6.84797506, 5.9571983, 6.84797506, 6.84797506, + 5.9571983, 5.51180993, 6.84797506, 5.06642155, 6.84797506, + 4.62103317, 5.9571983, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 4.62103317, 6.84797506, + 6.84797506, 6.84797506, 5.51180993, 5.51180993, 6.84797506, + 6.84797506, 6.84797506, 5.9571983, 6.40258668, 6.84797506, + 6.84797506, 5.51180993, 6.84797506, 6.84797506, 5.9571983, + 5.51180993, 6.84797506, 6.84797506, 6.84797506, 4.17564479, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 5.9571983, 6.84797506, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 4.62103317, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 3.73025641, + 6.84797506, 6.84797506, 6.84797506, 5.9571983, 4.62103317, + 5.51180993, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 5.9571983, 6.40258668, 6.84797506, + 5.51180993, 5.9571983, 5.9571983, 6.84797506, 6.84797506, + 5.51180993, 6.84797506, 6.84797506, 5.51180993, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.51180993, + 6.40258668, 5.51180993, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 5.51180993, 6.84797506, 5.9571983, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.06642155, 6.84797506, + 6.84797506, 6.84797506, 6.40258668, 5.06642155, 5.51180993, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.40258668, 6.84797506, 6.84797506, 5.9571983, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 6.84797506, + 5.06642155, 4.17564479, 6.84797506, 6.84797506, 5.06642155, + 6.84797506, 6.84797506, 6.40258668, 6.84797506, 5.51180993, + 6.84797506, 6.84797506, 6.84797506, 4.17564479, 5.9571983, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.9571983, + 5.51180993, 6.84797506, 6.40258668, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 5.9571983, + 5.9571983, 6.84797506, 5.9571983, 4.17564479, 6.40258668, + 6.84797506, 6.84797506, 6.84797506, 6.40258668, 5.9571983, + 5.51180993, 6.84797506, 5.51180993, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.51180993, 5.06642155, + 6.84797506, 6.40258668, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 6.84797506, 6.84797506, 5.51180993, 6.40258668, + 6.84797506, 6.84797506, 3.28486804, 5.9571983, 6.84797506, + 3.73025641, 6.84797506, 6.84797506, 6.84797506, 4.17564479, + 6.84797506, 6.40258668, 6.40258668, 6.84797506, 5.51180993, + 6.84797506, 6.84797506, 6.84797506, 6.84797506, 6.84797506, + 6.84797506, 4.62103317, 6.40258668, 6.84797506, 6.40258668, + 5.06642155, 6.84797506, 6.84797506, 5.51180993, 4.62103317, + 6.84797506, 6.40258668, 6.84797506, 5.06642155, 5.9571983, + 6.40258668, 5.51180993, 6.84797506, 6.84797506, 6.84797506, + 6.40258668, 6.84797506, 6.84797506, 4.17564479, 6.84797506, + 5.06642155, 6.84797506, 3.56230611, 4.89847125, 5.34385962, + 4.45308287, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 5.34385962, 5.34385962, 5.789248, 5.789248, + 4.00769449, 5.34385962, 4.45308287, 5.789248, 5.34385962, + 3.56230611, 2.67152936, 5.789248, 5.34385962, 5.789248, + 2.67152936, 5.789248, 5.34385962, 3.56230611, 4.89847125, + 5.789248, 3.11691773, 5.789248, 5.789248, 4.89847125, + 5.789248, 3.56230611, 3.56230611, 5.789248, 5.789248, + 5.789248, 4.89847125, 5.789248, 4.89847125, 4.00769449, + 5.789248, 3.56230611, 5.789248, 2.22614098, 3.11691773, + 5.789248, 5.789248, 4.00769449, 3.11691773, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 5.789248, + 2.67152936, 5.789248, 5.789248, 4.00769449, 3.56230611, + 4.45308287, 5.789248, 5.789248, 4.89847125, 5.789248, + 3.56230611, 5.789248, 4.89847125, 2.67152936, 5.34385962, + 4.45308287, 5.789248, 4.45308287, 5.789248, 5.789248, + 4.89847125, 4.45308287, 5.789248, 5.789248, 5.789248, + 5.789248, 5.789248, 4.89847125, 5.789248, 5.34385962, + 5.34385962, 5.789248, 5.789248, 3.56230611, 5.789248, + 3.56230611, 5.789248, 4.45308287, 5.789248, 5.789248, + 5.34385962, 5.789248, 3.11691773, 5.789248, 5.789248, + 3.11691773, 4.00769449, 5.789248, 5.789248, 5.34385962, + 3.56230611, 3.11691773, 5.789248, 4.45308287, 5.789248, + 5.789248, 5.789248, 3.11691773, 5.789248, 5.789248, + 5.789248, 5.789248, 4.45308287, 5.789248, 4.00769449, + 5.789248, 4.45308287, 4.45308287, 5.789248, 4.89847125, + 4.00769449, 4.00769449, 4.89847125, 4.00769449, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 5.34385962, 3.56230611, 5.789248, 3.56230611, + 5.789248, 5.789248, 5.789248, 2.67152936, 5.789248, + 5.789248, 5.789248, 5.789248, 4.89847125, 4.89847125, + 5.789248, 2.67152936, 5.789248, 4.89847125, 5.789248, + 5.789248, 4.45308287, 3.11691773, 5.789248, 4.89847125, + 5.789248, 2.67152936, 2.67152936, 5.34385962, 4.00769449, + 5.789248, 5.789248, 5.34385962, 5.789248, 5.789248, + 4.00769449, 5.789248, 5.34385962, 4.89847125, 5.789248, + 2.67152936, 5.34385962, 5.789248, 5.789248, 4.45308287, + 5.34385962, 5.789248, 5.789248, 5.789248, 5.789248, + 2.67152936, 5.789248, 3.56230611, 4.00769449, 5.34385962, + 5.789248, 3.11691773, 2.67152936, 5.789248, 4.45308287, + 5.789248, 3.56230611, 5.34385962, 4.89847125, 5.789248, + 3.56230611, 4.00769449, 5.789248, 3.11691773, 5.789248, + 5.789248, 3.56230611, 5.34385962, 4.89847125, 4.89847125, + 5.789248, 5.789248, 2.67152936, 3.11691773, 5.789248, + 5.789248, 5.789248, 5.789248, 5.34385962, 5.34385962, + 5.789248, 5.789248, 4.89847125, 5.789248, 4.45308287, + 5.34385962, 5.789248, 4.45308287, 4.45308287, 5.789248, + 5.789248, 3.56230611, 4.89847125, 3.56230611, 4.89847125, + 4.45308287, 5.789248, 4.00769449, 5.789248, 4.89847125, + 5.789248, 5.789248, 5.789248, 4.45308287, 4.00769449, + 5.789248, 4.89847125, 4.89847125, 3.56230611, 5.789248, + 5.789248, 5.34385962, 3.56230611, 3.11691773, 3.56230611, + 4.00769449, 5.789248, 4.45308287, 4.89847125, 5.789248, + 5.789248, 5.789248, 4.00769449, 4.89847125, 2.67152936, + 5.789248, 5.789248, 5.789248, 4.89847125, 5.34385962, + 5.789248, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 5.789248, 4.00769449, 5.34385962, 4.89847125, + 5.789248, 4.89847125, 4.00769449, 5.789248, 5.789248, + 4.89847125, 5.789248, 5.34385962, 5.789248, 2.67152936, + 5.789248, 5.34385962, 4.00769449, 4.00769449, 5.789248, + 5.34385962, 3.56230611, 5.789248, 4.89847125, 5.34385962, + 5.789248, 4.00769449, 4.45308287, 5.789248, 5.34385962, + 4.00769449, 3.56230611, 5.34385962, 2.67152936, 5.789248, + 3.56230611, 4.89847125, 4.45308287, 5.789248, 5.789248, + 5.789248, 5.789248, 5.789248, 4.00769449, 5.789248, + 4.45308287, 5.789248, 5.789248, 5.34385962, 5.789248, + 5.789248, 5.789248, 5.789248, 5.34385962, 5.34385962, + 5.789248, 5.34385962, 5.789248, 5.789248, 5.789248, + 5.789248, 5.34385962, 4.45308287, 5.789248, 5.34385962, + 5.789248, 5.34385962, 5.789248, 5.789248, 5.789248, + 5.789248, 4.45308287, 5.34385962, 3.56230611, 2.67152936, + 5.789248, 5.789248, 3.11691773, 5.789248, 4.45308287, + 5.789248, 5.789248, 5.789248, 5.789248, 4.00769449, + 4.00769449, 4.00769449, 5.789248, 5.789248, 5.789248, + 5.789248, 4.89847125, 3.11691773, 4.45308287, 5.789248, + 4.00769449, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 4.00769449, 5.789248, 5.789248, 5.789248, + 5.789248, 4.00769449, 5.789248, 4.00769449, 3.56230611, + 5.789248, 4.89847125, 5.789248, 5.789248, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 5.789248, + 4.89847125, 5.34385962, 5.789248, 5.789248, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 5.34385962, + 3.56230611, 5.34385962, 5.789248, 3.56230611, 5.789248, + 4.00769449, 5.789248, 5.789248, 5.789248, 4.00769449, + 3.11691773, 5.789248, 5.789248, 4.00769449, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 5.789248, 3.56230611, 5.789248, 5.789248, + 5.789248, 5.789248, 3.56230611, 5.34385962, 4.00769449, + 5.789248, 4.89847125, 4.89847125, 4.00769449, 5.789248, + 5.789248, 4.45308287, 2.67152936, 5.789248, 5.789248, + 4.00769449, 5.789248, 3.56230611, 4.00769449, 5.789248, + 5.789248, 4.89847125, 5.789248, 4.45308287, 5.34385962, + 5.34385962, 3.11691773, 3.56230611, 5.789248, 4.45308287, + 5.789248, 4.89847125, 4.00769449, 4.89847125, 4.89847125, + 5.789248, 5.789248, 5.34385962, 4.00769449, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 3.56230611, 4.45308287, 4.00769449, 4.89847125, + 4.45308287, 3.56230611, 4.00769449, 5.789248, 5.789248, + 5.789248, 5.789248, 3.11691773, 5.789248, 5.789248, + 5.789248, 5.789248, 5.789248, 4.00769449, 4.89847125, + 5.34385962, 3.56230611, 3.11691773, 5.789248, 4.00769449, + 5.789248, 3.56230611, 5.789248, 5.789248, 4.00769449, + 5.789248, 4.00769449, 5.789248, 5.789248, 5.789248, + 5.789248, 4.89847125, 4.00769449, 4.89847125, 5.34385962, + 2.67152936, 5.789248, 4.45308287, 5.789248, 4.89847125, + 5.789248, 5.34385962, 5.789248, 5.789248, 5.789248, + 3.56230611, 2.67152936, 5.789248, 5.789248, 5.789248, + 4.00769449, 4.89847125, 5.789248, 5.34385962, 4.89847125, + 5.34385962, 5.789248, 5.789248, 5.34385962, 5.789248, + 5.789248, 5.789248, 2.67152936, 5.34385962, 5.789248, + 5.789248, 4.89847125, 4.89847125, 5.34385962, 5.789248, + 5.789248, 4.45308287, 3.11691773, 3.56230611, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 5.34385962, + 5.789248, 5.789248, 4.00769449, 4.89847125, 5.789248, + 3.56230611, 5.789248, 5.34385962, 2.67152936, 5.789248, + 5.34385962, 5.789248, 5.789248, 5.789248, 5.34385962, + 5.789248, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 4.45308287, 5.789248, 3.11691773, 5.789248, + 5.34385962, 4.89847125, 5.34385962, 5.789248, 4.89847125, + 5.789248, 4.00769449, 4.45308287, 5.789248, 5.789248, + 5.789248, 5.789248, 5.34385962, 5.789248, 4.00769449, + 4.89847125, 4.00769449, 5.789248, 3.56230611, 5.789248, + 5.789248, 5.789248, 5.789248, 3.56230611, 5.789248, + 4.89847125, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 4.00769449, + 2.22614098, 5.789248, 5.789248, 5.789248, 5.789248, + 4.89847125, 5.789248, 3.56230611, 5.789248, 5.789248, + 4.00769449, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 5.789248, 3.11691773, 3.11691773, 5.789248, + 5.789248, 5.789248, 4.00769449, 5.789248, 5.34385962, + 4.45308287, 5.34385962, 4.45308287, 4.45308287, 4.89847125, + 5.789248, 4.89847125, 5.789248, 3.56230611, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 3.11691773, + 5.789248, 4.00769449, 5.789248, 4.89847125, 5.789248, + 4.00769449, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 5.34385962, 5.789248, 4.45308287, 5.34385962, + 4.45308287, 5.789248, 4.00769449, 5.789248, 3.56230611, + 5.34385962, 5.789248, 5.789248, 4.45308287, 4.00769449, + 3.56230611, 5.789248, 5.789248, 5.789248, 4.45308287, + 5.789248, 5.789248, 5.34385962, 4.89847125, 4.45308287, + 3.11691773, 5.789248, 3.56230611, 3.11691773, 5.789248, + 5.789248, 3.11691773, 3.11691773, 5.789248, 4.45308287, + 4.45308287, 5.789248, 5.789248, 4.00769449, 4.00769449, + 3.56230611, 5.789248, 4.00769449, 3.56230611, 5.789248, + 4.00769449, 5.34385962, 5.789248, 3.56230611, 5.789248, + 5.34385962, 5.789248, 4.45308287, 4.00769449, 5.789248, + 5.789248, 4.45308287, 5.34385962, 5.789248, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 5.34385962, + 3.11691773, 5.34385962, 2.67152936, 4.00769449, 5.789248, + 3.56230611, 5.789248, 5.34385962, 5.789248, 2.67152936, + 5.789248, 5.789248, 5.789248, 5.789248, 3.11691773, + 5.789248, 5.34385962, 3.56230611, 4.45308287, 4.89847125, + 4.00769449, 5.789248, 5.789248, 5.34385962, 4.00769449, + 4.89847125, 4.45308287, 5.789248, 5.789248, 5.789248, + 5.789248, 5.789248, 4.00769449, 5.789248, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 5.34385962, + 3.56230611, 5.789248, 5.789248, 5.34385962, 5.789248, + 3.11691773, 5.789248, 4.89847125, 5.789248, 4.89847125, + 5.789248, 5.34385962, 5.789248, 5.789248, 5.789248, + 5.789248, 5.34385962, 2.67152936, 5.789248, 5.789248, + 2.67152936, 3.56230611, 5.789248, 5.789248, 2.67152936, + 4.45308287, 3.56230611, 4.45308287, 5.789248, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 4.45308287, + 4.89847125, 5.34385962, 5.789248, 5.789248, 5.789248, + 5.789248, 5.34385962, 4.00769449, 5.789248, 5.34385962, + 5.789248, 2.67152936, 2.67152936, 5.789248, 3.56230611, + 5.789248, 3.56230611, 5.789248, 4.45308287, 2.67152936, + 5.789248, 5.789248, 2.67152936, 4.89847125, 5.789248, + 5.789248, 3.11691773, 5.789248, 4.00769449, 5.789248, + 5.789248, 3.11691773, 4.00769449, 4.89847125, 4.89847125, + 5.789248, 4.00769449, 4.45308287, 5.789248, 4.45308287, + 5.789248, 3.11691773, 4.45308287, 4.89847125, 3.56230611, + 5.789248, 5.789248, 3.56230611, 3.56230611, 3.56230611, + 5.789248, 5.789248, 4.00769449, 4.00769449, 3.11691773, + 5.789248, 5.789248, 2.67152936, 4.00769449, 5.789248, + 2.67152936, 3.56230611, 3.56230611, 4.45308287, 5.789248, + 3.56230611, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 5.789248, 5.34385962, 5.789248, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 4.89847125, 5.789248, 5.789248, 4.89847125, + 5.789248, 5.789248, 4.89847125, 4.89847125, 5.789248, + 5.34385962, 4.45308287, 5.789248, 4.89847125, 4.00769449, + 4.45308287, 5.789248, 2.67152936, 4.45308287, 5.34385962, + 5.789248, 5.789248, 5.789248, 5.789248, 3.11691773, + 5.34385962, 5.789248, 4.89847125, 5.789248, 4.45308287, + 5.789248, 5.789248, 4.89847125, 4.45308287, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 4.45308287, + 4.45308287, 3.11691773, 4.89847125, 5.789248, 3.11691773, + 3.11691773, 5.789248, 4.00769449, 5.34385962, 3.11691773, + 4.89847125, 3.11691773, 3.56230611, 4.89847125, 5.789248, + 5.789248, 4.45308287, 4.89847125, 5.789248, 4.45308287, + 5.789248, 4.89847125, 4.45308287, 2.67152936, 5.789248, + 5.789248, 5.789248, 4.89847125, 5.789248, 5.789248, + 5.789248, 5.789248, 4.89847125, 5.34385962, 4.45308287, + 5.789248, 4.00769449, 3.56230611, 4.89847125, 5.789248, + 4.45308287, 5.789248, 5.789248, 3.11691773, 5.789248, + 5.34385962, 5.789248, 5.789248, 5.789248, 3.56230611, + 2.22614098, 5.789248, 5.789248, 3.56230611, 5.34385962, + 4.00769449, 5.789248, 2.67152936, 5.789248, 4.00769449, + 5.789248, 5.789248, 4.00769449, 2.67152936, 5.789248, + 4.89847125, 4.45308287, 5.789248, 5.34385962, 5.789248, + 5.789248, 4.45308287, 5.789248, 5.789248, 5.789248, + 4.00769449, 4.89847125, 5.789248, 4.89847125, 5.789248, + 4.89847125, 3.56230611, 4.00769449, 5.789248, 5.789248, + 5.789248, 5.34385962, 5.789248, 5.789248, 5.34385962, + 5.789248, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 5.789248, + 3.56230611, 3.56230611, 4.00769449, 5.789248, 4.45308287, + 3.56230611, 5.789248, 4.89847125, 4.89847125, 3.11691773, + 4.00769449, 5.789248, 5.34385962, 5.789248, 5.789248, + 5.789248, 5.789248, 4.45308287, 5.34385962, 4.45308287, + 5.789248, 3.11691773, 5.789248, 4.45308287, 4.45308287, + 4.89847125, 5.789248, 4.89847125, 4.45308287, 5.789248, + 5.34385962, 3.56230611, 3.56230611, 5.34385962, 5.789248, + 4.00769449, 5.34385962, 4.45308287, 4.45308287, 3.56230611, + 5.789248, 4.00769449, 5.789248, 5.789248, 4.89847125, + 5.34385962, 3.11691773, 4.00769449, 5.789248, 5.34385962, + 5.789248, 5.789248, 5.34385962, 5.789248, 4.45308287, + 5.34385962, 4.89847125, 5.789248, 5.789248, 5.34385962, + 3.56230611, 5.789248, 5.789248, 5.789248, 5.34385962, + 5.34385962, 5.789248, 3.11691773, 5.789248, 5.789248, + 3.56230611, 5.789248, 5.789248, 5.789248, 4.45308287, + 5.789248, 4.89847125, 5.789248, 5.789248, 5.789248, + 4.00769449, 4.45308287, 5.34385962, 5.789248, 3.56230611, + 4.00769449, 5.34385962, 4.45308287, 5.789248, 5.34385962, + 5.34385962, 2.67152936, 5.789248, 5.789248, 5.789248, + 5.789248, 5.789248, 5.34385962, 5.789248, 4.89847125, + 5.789248, 5.789248, 5.789248, 4.45308287, 5.789248, + 3.11691773, 4.00769449, 5.789248, 5.789248, 5.34385962, + 5.789248, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 5.789248, 2.22614098, 5.789248, 4.00769449, + 5.34385962, 4.89847125, 5.789248, 5.789248, 4.00769449, + 5.789248, 3.56230611, 2.67152936, 5.789248, 3.56230611, + 2.67152936, 4.89847125, 5.789248, 5.789248, 5.789248, + 4.45308287, 5.789248, 4.89847125, 4.00769449, 2.67152936, + 4.89847125, 5.789248, 2.22614098, 3.56230611, 4.45308287, + 5.34385962, 5.34385962, 3.11691773, 4.45308287, 4.45308287, + 3.11691773, 4.45308287, 5.34385962, 4.45308287, 5.34385962, + 4.00769449, 4.45308287, 5.789248, 5.789248, 5.789248, + 5.789248, 4.00769449, 5.789248, 5.789248, 5.789248, + 4.45308287, 5.789248, 5.789248, 5.789248, 4.00769449, + 5.34385962, 4.00769449, 4.45308287, 4.89847125, 4.00769449, + 5.789248, 5.789248, 5.789248, 2.67152936, 5.789248, + 5.789248, 5.789248, 5.789248, 5.789248, 5.789248, + 5.789248, 4.00769449, 3.11691773, 5.34385962, 4.89847125, + 5.34385962]) + + +class Committee(object): + def __init__(self): + self.resids = np.array([ + [-5.04950800e-01, -6.29721800e-01, -8.35499100e+01, + -1.30628500e+00, -6.62028600e+00], + [-2.34152200e-01, -2.55423500e-01, -2.16830700e+02, + -7.58866000e-01, -7.18370200e+00], + [1.02423700e+00, 7.98775800e-01, 4.83736300e+02, + 2.50351500e+00, 2.25135300e+01], + [-2.85061700e-01, -3.17796600e-01, -7.04115100e+04, + -2.37991800e+00, -1.41745600e+02], + [2.09902500e-01, 1.96787700e-01, 2.24751400e+03, + 9.51945500e-01, 2.17724200e+01], + [-4.03483500e-01, -4.75741500e-01, -1.95633600e+04, + -2.63502600e+00, -8.89461400e+01], + [-1.64413400e-01, -1.74401100e-01, -1.73310300e+04, + -1.16235500e+00, -5.34213500e+01], + [-4.29607700e-01, -5.13466700e-01, -5.30037000e+03, + -2.24496200e+00, -4.78260300e+01], + [3.23713000e-01, 2.94184600e-01, 4.11079400e+03, + 1.48684400e+00, 3.65598400e+01], + [1.50367200e-01, 1.43429400e-01, 7.28532100e+03, + 8.85542900e-01, 3.31355000e+01], + [4.21288600e-01, 3.73428000e-01, 1.37315700e+03, + 1.52133200e+00, 2.41570200e+01], + [4.50658700e-01, 3.96586700e-01, 1.70146900e+03, + 1.66177900e+00, 2.78032600e+01], + [2.43537500e-01, 2.26174000e-01, 3.18402300e+03, + 1.13656200e+00, 2.79073400e+01], + [1.05182900e+00, 8.16205400e-01, 6.00135200e+03, + 3.89079700e+00, 7.97131300e+01], + [-5.54450300e-01, -7.12749000e-01, -2.09485200e+03, + -2.45496500e+00, -3.42189900e+01], + [-6.05750600e-01, -8.06411100e-01, -2.74738200e+02, + -1.90774400e+00, -1.30510500e+01], + [-3.41215700e-01, -3.90244600e-01, -6.31138000e+02, + -1.27022900e+00, -1.47600100e+01], + [2.21898500e-01, 2.07328700e-01, 6.91135800e+02, + 8.16876400e-01, 1.24392900e+01], + [2.45592500e-01, 2.26639200e-01, 1.99250600e-01, + 2.57948300e-01, 2.74723700e-01], + [-7.58952600e-01, -1.15300800e+00, -2.56739000e+02, + -2.40716600e+00, -1.41474200e+01]]) + self.null_deviance = 27.81104693643434 # from R, Rpy bug + self.params = np.array([ + -0.0268147, 1.25103364, 2.91070663, + -0.34799563, 0.00659808, -0.31303026, -6.44847076]) + self.bse = np.array([ + 1.99956263e-02, 4.76820254e-01, + 6.48362654e-01, 4.17956107e-01, 1.41512690e-03, 1.07770186e-01, + 1.99557656e+00]) + self.aic_R = 216.66573352377935 + self.aic_Stata = 10.83328660860436 + self.deviance = 5.615520158267981 + self.scale = 0.38528595746569905 + self.llf = -101.33286676188968 # from R + self.llf_Stata = -101.3328660860436 # same as R + self.bic_Stata = -33.32900074962649 + self.chi2 = 5.008550263545408 + self.df_model = 6 + self.df_resid = 13 + self.fittedvalues = np.array([ + 12.62019383, 30.18289514, 21.48377849, 496.74068604, + 103.23024673, 219.94693494, 324.4301163, 110.82526477, + 112.44244488, 219.86056381, 56.84399998, 61.19840382, + 114.09290269, 75.29071944, 61.21994387, 21.05130889, + 42.75939828, 55.56133536, 0.72532053, 18.14664665]) + + +class Wfs(object): + """ + Wfs used for TestGlmPoissonOffset + + Results are from Stata and R. + """ + def __init__(self): + + self.resids = glm_test_resids.wfs_resids + self.null_deviance = 3731.85161919 # from R + self.params = [ + .9969348, 1.3693953, 1.6137574, 1.7849111, 1.9764051, + .11241858, .15166023, .02297282, -.10127377, -.31014953, + -.11709716] + self.bse = [ + .0527437, .0510688, .0511949, .0512138, .0500341, + .0324963, .0283292, .0226563, .0309871, .0552107, .0549118] + self.aic_R = 522.14215776 # R adds 2 for dof to AIC + self.aic_Stata = 7.459173652869477 # stata divides by nobs + # self.deviance = 70.6652992116034 # from Stata + self.deviance = 70.665301270867 # from R + self.scale = 1.0 + self.llf = -250.0710778504317 # from Stata, ours with scale=1 + self.bic_Stata = -179.9959200693088 # no bic in R? + self.df_model = 10 + self.df_resid = 59 + + # TODO: taken from Stata; not available in sm yet + self.chi2 = 2699.138063147485 + + self.fittedvalues = [ + 7.11599, 19.11356, 33.76075, 33.26743, 11.94399, + 27.49849, 35.07923, 37.22563, 64.18037, 108.0408, + 100.0948, 35.67896, 24.10508, 73.99577, 52.2802, + 38.88975, 35.06507, 102.1198, 107.251, 41.53885, + 196.3685, 335.8434, 205.3413, 43.20131, 41.98048, + 96.65113, 63.2286, 30.78585, 70.46306, 172.2402, + 102.5898, 43.06099, 358.273, 549.8983, 183.958, + 26.87062, 62.53445, 141.687, 52.47494, 13.10253, + 114.9587, 214.803, 90.33611, 18.32685, 592.5995, + 457.4376, 140.9273, 3.812064, 111.3119, 97.62744, + 57.48056, 19.43552, 130.4872, 151.7268, 69.67963, + 13.04879, 721.728, 429.2136, 128.2132, 9.04735, + 301.7067, 177.3487, 46.40818, 4.707507, 330.4211, + 330.7497, 84.38604, 1456.757, 451.005, 67.51025] + + +class CpunishTweediePower15(object): + """ + # From R + setwd('c:/workspace') + data <- read.csv('cpunish.csv', sep=",") + + library(statmod) + library(tweedie) + + summary(glm(EXECUTIONS ~ INCOME + SOUTH - 1, + family=tweedie(var.power=1.5, link.power=1), + data=data)) + """ + def __init__(self): + + resid_resp = [ + 28.90498242, 0.5714367394, 4.3135711827, -3.7417822942, + -4.9544111888, 0.4666602184, 0.0747051827, -6.114236142, + -1.0048540116, -6.9747602544, -0.7626907093, + -0.5688093336, -6.9845579527, -1.1594503855, + -0.6365453438, -0.3994222036, -0.732355528] + resid_dev = [ + 3.83881147757395, 0.113622743768915, 2.01981988071128, + -0.938107751845672, -1.29607304923555, 0.316205676540778, + 0.045273675744568, -1.69968893354602, -0.699080227540624, + -2.1707839733642, -0.568738719015137, -0.451266938413727, + -2.17218106358745, -0.774613533242944, -0.493831656345955, + -0.336453094366771, -0.551210030548659] + resid_pear = [ + 6.02294407053171, 0.115516970886608, 2.9148208139849, + -0.806210703943481, -1.04601155367613, 0.338668788938945, + 0.045708693925888, -1.27176471794657, -0.5964031365026, + -1.46974255264233, -0.498557360800493, + -0.405777068096011, -1.47045242302365, -0.65086941662954, + -0.439928270112046, -0.310433407220704, + -0.485001313250992] + resid_work = [ + 28.9049727916181, 0.571427719513967, 4.31357425907762, + -3.74179256698823, -4.9544210736226, 0.466663015515745, + 0.0747086948013966, -6.114245735344, -1.00485035431368, + -6.97477010217068, -0.76268749374494, -0.568806471745149, + -6.98456778258272, -1.15944644619981, -0.636542358439925, + -0.399419650775458, -0.732352367853816] + self.resid_response = resid_resp + self.resid_deviance = resid_dev + self.resid_pearson = resid_pear + self.resid_working = resid_work + # self.null_deviance = 3731.85161919 # N/A + self.params = [0.0000471043, 6.4721324886] + self.bse = [0.0000246888, 3.5288126173] + # self.aic_R = 522.14215776 # R adds 2 for dof to AIC + # self.aic_Stata = 7.459173652869477 # stata divides by nobs + # self.deviance = 70.6652992116034 # from Stata + self.deviance = 36.087307138233 # from R + # self.scale = 1.0 + # self.llf = -250.0710778504317 # from Stata, ours with scale=1 + # self.bic_Stata = -179.9959200693088 # no bic in R? + self.df_model = 1 + self.df_resid = 15 + + # TODO: taken from Stata; not available in sm yet + # self.chi2 = 2699.138063147485 + + self.fittedvalues = [ + 8.09501758000751, 8.42856326056927, + 1.68642881732415, 7.74178229423817, + 7.95441118875248, 1.53333978161934, + 1.92529481734232, 8.11423614202829, + 2.00485401159015, 7.97476025442155, + 1.76269070926448, 1.56880933358418, + 7.98455795270665, 2.15945038549266, + 1.63654534384372, 1.39942220361664, + 1.73235552803559] + + +class CpunishTweediePower2(object): + """ + # From R + setwd('c:/workspace') + data <- read.csv('cpunish.csv', sep=",") + + library(statmod) + library(tweedie) + + summary(glm(EXECUTIONS ~ INCOME + SOUTH - 1, + family=tweedie(var.power=2, link.power=1), + data=data)) + """ + def __init__(self): + resid_resp = [ + 28.9397568116168, 0.605199215492085, 4.30845487128123, + -3.7059362524505, -4.91921022348665, 0.46200835064931, + 0.068864196242604, -6.07952005594693, -1.01093636580438, + -6.9396210244365, -0.768038385056284, -0.573568809339664, + -6.94944844711606, -1.16600175635393, -0.641510318056987, + -0.403667790321936, -0.737611172529194] + resid_dev = [ + 2.03295746713119, 0.0704291140028282, 1.60058476017728, + -0.591230836989137, -0.836067997150736, 0.274690511542166, + 0.0352446721149477, -1.13465831620614, -0.625909330466303, + -1.5477830210949, -0.520517540529698, -0.421531194473357, + -1.54848147513823, -0.684927882583903, -0.45784673829438, + -0.320960880764019, -0.505992145923248] + resid_pear = [ + 3.59043221590711, 0.0720921473930558, 2.54705286789752, + -0.480919661289957, -0.621174344999372, + 0.300397177607798, 0.0356599448410699, + -0.752460543924524, -0.502719222246499, + -0.874049404005278, -0.434401419984914, + -0.364501892726482, -0.874205109115113, + -0.538319857282425, -0.390804925805356, + -0.287580717535275, -0.424497254731367] + resid_work = [ + 28.9397568116168, 0.605199215492085, 4.30845487128123, + -3.7059362524505, -4.91921022348665, 0.46200835064931, + 0.068864196242604, -6.07952005594693, -1.01093636580438, + -6.9396210244365, -0.768038385056284, -0.573568809339664, + -6.94944844711606, -1.16600175635393, -0.641510318056987, + -0.403667790321936, -0.737611172529194] + self.resid_response = resid_resp + self.resid_deviance = resid_dev + self.resid_pearson = resid_pear + self.resid_working = resid_work + # self.null_deviance = 3731.85161919 # N/A + self.params = [4.72472244209477e-05, 6.43243456540827] + self.bse = [1.86839521185429e-05, 3.83231672422612] + # self.aic_R = 522.14215776 # R adds 2 for dof to AIC + # self.aic_Stata = 7.459173652869477 # stata divides by nobs + # self.deviance = 70.6652992116034 # from Stata + self.deviance = 15.7840685407599 # from R + # self.scale = 1.0 + # self.llf = -250.0710778504317 # from Stata, ours with scale=1 + # self.bic_Stata = -179.9959200693088 # no bic in R? + self.df_model = 1 + self.df_resid = 15 + + # TODO: taken from Stata; not available in sm yet + # self.chi2 = 2699.138063147485 + + self.fittedvalues = [ + 8.06024318838318, 8.39480078450791, + 1.69154512871877, 7.7059362524505, + 7.91921022348665, 1.53799164935069, + 1.9311358037574, 8.07952005594693, + 2.01093636580438, 7.9396210244365, + 1.76803838505628, 1.57356880933966, + 7.94944844711606, 2.16600175635393, + 1.64151031805699, 1.40366779032194, + 1.73761117252919] + + +class CpunishTweedieLog1(object): + """ + # From R + setwd('c:/workspace') + data <- read.csv('cpunish.csv', sep=",") + + library(statmod) + library(tweedie) + + summary(glm(EXECUTIONS ~ INCOME + SOUTH - 1, + family=tweedie(var.power=1, link.power=0), + data=data)) + """ + def __init__(self): + resid_resp = [ + 28.7231009386298, -0.307318358456484, 4.19015460156576, + -3.30975297068573, -4.87746969906705, 0.285041779927669, + 0.0315071085472043, -6.33304532673002, -1.02436294926752, + -6.9340610414309, -0.859055122126197, -0.736490247380883, + -6.96145354225969, -1.13750232106315, -0.778363801217565, + -0.636042191521576, -0.839322392162821] + resid_dev = [ + 7.30513948467594, -0.101296157943519, 2.44987904003561, + -1.34021826264378, -1.99062116973315, 0.212014827300475, + 0.0223969676885324, -2.63775728156667, -0.798884085657077, + -3.11862021596631, -0.691356293575324, -0.607658243497501, + -3.12628915913493, -0.869326536299756, -0.636663290048755, + -0.536212950673418, -0.67812263418512] + resid_pear = [ + 9.98383729954486, -0.100734032611758, 3.11465040934513, + -1.22417704160631, -1.73780566805242, 0.217661565866984, + 0.0224564769560215, -2.19386916576256, + -0.719962160947025, -2.46172701579962, + -0.630049829146329, -0.558895774299477, + -2.4671965358931, -0.778034748813176, + -0.583676657782738, -0.497265896656757, + -0.61887064145702] + resid_work = [ + 3.47027319357873, -0.0330190014589175, 2.31520029566659, + -0.452785885372436, -0.619167053050639, + 0.166209168591668, 0.0160057009522403, + -0.759991705123147, -0.506017436072008, + -0.873961141113221, -0.46209233491888, + -0.424125760851072, -0.874394795536774, + -0.532164250702372, -0.437685360377137, + -0.388768819543728, -0.456321521305397] + self.resid_response = resid_resp + self.resid_deviance = resid_dev + self.resid_working = resid_work + self.resid_pearson = resid_pear + # self.null_deviance = 3731.85161919 # N/A + self.params = [1.65700638623525e-05, 1.54257997850499] + self.bse = [1.81044999017907e-05, 0.725739640176733] + # self.aic_R = 522.14215776 # R adds 2 for dof to AIC + # self.aic_Stata = 7.459173652869477 # stata divides by nobs + # self.deviance = 70.6652992116034 # from Stata + self.deviance = 95.0325613464258 # from R + # self.scale = 1.0 + # self.llf = -250.0710778504317 # from Stata, ours with scale=1 + # self.bic_Stata = -179.9959200693088 # no bic in R? + self.df_model = 1 + self.df_resid = 15 + + # TODO: taken from Stata; not available in sm yet + # self.chi2 = 2699.138063147485 + + self.fittedvalues = [ + 8.27689906137016, 9.30731835845648, + 1.80984539843424, 7.30975297068573, + 7.87746969906705, 1.71495822007233, + 1.9684928914528, 8.33304532673002, + 2.02436294926752, 7.9340610414309, + 1.8590551221262, 1.73649024738088, + 7.96145354225969, 2.13750232106315, + 1.77836380121756, 1.63604219152158, + 1.83932239216282] + + +class FairTweedieLog15(object): + """ + # From R + setwd('c:/workspace') + data <- read.csv('fair.csv', sep=",") + + library(statmod) + library(tweedie) + + model <- glm(affairs ~ rate_marriage + age + yrs_married -1, data=data, + family=tweedie(var.power=1.5, link.power = 0)) + r <- resid(model, type='response') + paste(as.character(r[1:17]), collapse=",") + r <- resid(model, type='deviance') + paste(as.character(r[1:17]), collapse=",") + r <- resid(model, type='pearson') + paste(as.character(r[1:17]), collapse=",") + r <- resid(model, type='working') + paste(as.character(r[1:17]), collapse=",") + paste(as.character(model$coefficients[1:17]), collapse=",") + s <- summary(model) + paste(as.character(sqrt(diag(s$cov.scaled))), collapse=",") + s$deviance + paste(as.character(model$fitted.values[1:17]), collapse=",") + """ + def __init__(self): + resid_resp = [ + -0.997868449815039, 2.69283106662728, 0.677397439981157, + 0.220024942629269, 4.30244966465517, 4.12917275616972, + 0.669303122309246, 1.64321562230925, 3.73361710426128, + 0.271937359562684, 1.70030700747884, 1.55430573164611, + -0.263723852468304, 1.51263973164611, 2.75223392654071, + 0.310487741565721, 1.28077676333896, -0.722602160018842] + resid_dev = [ + -1.40274708439925, 2.48476334070913, 0.722690630291423, + 0.333179337353702, 4.00781035212304, 3.33344591331998, + 1.51543361886727, 2.82502498800952, 2.2795411865605, + 0.245239170945663, 0.993721205729013, 1.74920359743562, + -0.363141475997386, 1.71412357710318, 2.57445879456298, + 0.279858474280908, 1.22953362433333, -1.84397406923697] + resid_pear = [ + -0.923380371255914, 4.28706294677515, 0.864309147553743, + 0.366063826152319, 9.17690493704408, 6.57783985712941, + 2.39340023647571, 5.87607098775551, 3.55791152198837, + 0.260052421285998, 1.21439278430259, 2.66470328868695, + -0.327698246542009, 2.59327105694137, 4.53096038849505, + 0.299198418236691, 1.6399313081981, -0.921987034618483] + resid_work = [ + -0.899807800767353, 5.00583784559752, 0.937441759049674, + 0.433762277766879, 11.8128959278604, 7.6822784352496, + 3.65998654763585, 8.98568506862295, 3.50120010377224, + 0.256207345500911, 1.08551656668241, 3.18923357641756, + -0.352302468597673, 3.10374035363038, 5.35005901385941, + 0.29552727652976, 1.78077778644209, -1] + self.resid_response = resid_resp + self.resid_deviance = resid_dev + self.resid_working = resid_work + self.resid_pearson = resid_pear + # self.null_deviance = 3731.85161919 # N/A + self.params = [ + -0.389168171340452, 0.0670222370664611, -0.0970852004566712] + self.bse = [ + 0.0323435784513691, 0.0063805300018014, 0.00893580175352525] + # self.aic_R = 522.14215776 # R adds 2 for dof to AIC + # self.aic_Stata = 7.459173652869477 # stata divides by nobs + # self.deviance = 70.6652992116034 # from Stata + self.deviance = 20741.82 # from R + # self.scale = 1.0 + # self.llf = -250.0710778504317 # from Stata, ours with scale=1 + # self.bic_Stata = -179.9959200693088 # no bic in R? + self.df_model = 2 + self.df_resid = 6363 + + # TODO: taken from Stata; not available in sm yet + # self.chi2 = 2699.138063147485 + + self.fittedvalues = [ + 1.10897954981504, 0.537938133372725, + 0.722602160018842, 0.507247757370731, + 0.364216335344828, 0.537493243830281, + 0.182870377690754, 0.182870377690754, + 1.06638209573872, 1.06139564043732, + 1.56635749252116, 0.487360268353893, + 0.748572252468304, 0.487360268353893, + 0.514430573459285, 1.05062295843428, + 0.71922323666104, 0.722602160018842] diff --git a/statsmodels/genmod/tests/results/results_glm_poisson_weights.py b/statsmodels/genmod/tests/results/results_glm_poisson_weights.py new file mode 100644 index 0000000..d804284 --- /dev/null +++ b/statsmodels/genmod/tests/results/results_glm_poisson_weights.py @@ -0,0 +1,2390 @@ +import numpy as np + +from statsmodels.tools.testing import ParamsTableTestBunch + +est = dict( + deviance=18.59164098607571, + dispers=1.859164098607571, + deviance_s=18.59164098607571, + dispers_s=1.859164098607571, + deviance_p=24.75374834715614, + dispers_p=2.475374834715614, + deviance_ps=24.75374834715614, + dispers_ps=2.475374834715614, + bic=-9.740492454486454, + nbml=0, + N=17, + ic=3, + k=7, + k_eq=1, + k_dv=1, + converged=1, + k_autoCns=0, + ll=-31.92732830809848, + chi2=128.8021169250575, + p=2.29729497374e-25, + rc=0, + aic=4.579685683305704, + rank=7, + canonical=1, + power=0, + df_m=6, + df=10, + vf=1, + phi=1, + k_eq_model=0, + properties="b V", + depvar="executions", + which="max", + technique="nr", + singularHmethod="m-marquardt", + ml_method="e2", + crittype="log likelihood", + user="glim_lf", + title="Generalized linear models", + opt="moptimize", + chi2type="Wald", + link="glim_l03", + varfunc="glim_v3", + m="1", + a="1", + oim="oim", + opt1="ML", + varfuncf="u", + varfunct="Poisson", + linkf="ln(u)", + linkt="Log", + vce="oim", + vcetype="OIM", + hac_lag="15", + marginsok="default", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + predict="glim_p", + cmd="glm", + cmdline="glm executions income perpoverty perblack LN_VC100k96 south degree, family(poisson)", # noqa:E501 +) + +params_table = np.array([ + .00026110166569, .00005187148786, 5.0336259178483, 4.812884279e-07, + .00015943541766, .00036276791372, np.nan, 1.9599639845401, + 0, .07781804809828, .07940260798777, .98004398180811, + .32706440886796, -.0778082038363, .23344430003287, np.nan, + 1.9599639845401, 0, -.09493110013466, .02291930335216, + -4.1419714498302, .00003443332141, -.13985210925565, -.05001009101367, + np.nan, 1.9599639845401, 0, .29693462055586, + .43751760764129, .67868038993144, .49734039404176, -.5605841330232, + 1.1544533741349, np.nan, 1.9599639845401, 0, + 2.3011832004524, .42838381728481, 5.3717790159251, 7.796361708e-08, + 1.4615663470144, 3.1408000538904, np.nan, 1.9599639845401, + 0, -18.722067603077, 4.2839791307242, -4.3702518223781, + .00001241033322, -27.118512409818, -10.325622796337, np.nan, + 1.9599639845401, 0, -6.8014789919532, 4.146873025502, + -1.6401464308471, .10097472438129, -14.929200770398, 1.3262427864914, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 2.690651253e-09, 1.942168909e-06, 9.445812833e-08, 4.703695025e-06, + -6.082922480e-06, -.00008108248895, -.00013492774575, 1.942168909e-06, + .00630477415526, .00017467012687, .00328093520848, -.01768604570302, + .11117887243846, -.19441636422025, 9.445812833e-08, .00017467012687, + .00052529446615, -.00313545508833, -.00516707569472, -.03253594627601, + .01688876616272, 4.703695025e-06, .00328093520848, -.00313545508833, + .19142165699616, -.00179497953339, .30391667530759, -1.4489146451821, + -6.082922480e-06, -.01768604570302, -.00516707569472, -.00179497953339, + .18351269491151, .3016848477378, .36484063612427, -.00008108248895, + .11117887243846, -.03253594627601, .30391667530759, .3016848477378, + 18.352477192481, -4.0741043266703, -.00013492774575, -.19441636422025, + .01688876616272, -1.4489146451821, .36484063612427, -4.0741043266703, + 17.196555889636]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 17, np.nan, -31.927328308098, 7, + 77.854656616197, 83.68715002459]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 35.226364135742, .16681243479252, .98022246360779, 8.1965742111206, + .33106967806816, .89840310811996, 1.3118965625763, .29945519566536, + .11764223873615, 3.6862981319427, .35516858100891, .46500706672668, + 2.0823004245758, .3434439599514, .24561515450478, 1.0650315284729, + .62310123443604, .41350400447845, 1.9260421991348, .40797635912895, + .32057955861092, 2.4171404838562, .36215576529503, .31702440977097, + 1.8473218679428, .3869916498661, .27665960788727, 2.8643238544464, + .43869277834892, .55124300718307, 3.1211984157562, .44224792718887, + .61045408248901, 3.338207244873, .42789322137833, .61120104789734, + 2.5269968509674, .42458593845367, .45554983615875, .89725440740585, + .59187793731689, .31432569026947, .97933322191238, .37813624739647, + .14003194868565, .53462094068527, .38791963458061, .08045063912868, + 1.9790935516357, .31954729557037, .20208616554737]).reshape(17, 3) + +predicted_colnames = 'predict_mu predict_linpred_std predict_hat'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + +resids = np.array([ + 1.773634314537, 1.773634314537, .29638093709946, .29637759923935, + .2988341152668, .05034962296486, .80342543125153, .80342543125153, + .27623143792152, .27622014284134, .28062695264816, .09801965206861, + 4.6881031990051, 4.6881031990051, 3.0157172679901, 2.977787733078, + 4.0930528640747, 3.5735311508179, .31370183825493, .31370183825493, + .1611547768116, .16114975512028, .16338862478733, .08509942144156, + .91769951581955, .91769951581955, .59656941890717, .59618371725082, + .63595855236053, .44071426987648, .9349684715271, .9349684715271, + .80822360515594, .80661898851395, .90597397089005, .87787866592407, + .07395775616169, .07395775616169, .05295527353883, .05295492336154, + .05329062789679, .03839882463217, -.41714036464691, -.41714036464691, + -.27668312191963, -.27663832902908, -.2683065533638, -.17257598042488, + -.84732186794281, -.84732186794281, -.68459099531174, -.68349820375443, + -.6234148144722, -.458675801754, -1.8643238544464, -1.8643238544464, + -1.2799508571625, -1.274356007576, -1.1015654802322, -.65087747573853, + -2.1211984157562, -2.1211984157562, -1.4092296361923, -1.4021278619766, + -1.2006615400314, -.67961025238037, -2.338207244873, -2.338207244873, + -1.5136297941208, -1.5051733255386, -1.2797535657883, -.70043802261353, + -1.5269968509674, -1.5269968509674, -1.0992211103439, -1.0954134464264, + -.9605849981308, -.60427337884903, .10274560004473, .10274560004473, + .10649761557579, .1064917370677, .10846894979477, .11451110988855, + .02066676132381, .02066676132381, .02081091701984, .02081087417901, + .02088368684053, .02110289037228, .46537905931473, .46537905931473, + .56824368238449, .56713002920151, .63647866249084, .87048417329788, + -.97909361124039, -.97909361124039, -.77151334285736, -.77000600099564, + -.69597083330154, -.49471819400787]).reshape(17, 6) + +resids_colnames = ['score_factor', 'resid_response', 'resid_anscombe', + 'resid_deviance', 'resid_pearson', 'resid_working'] + +resids_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_poisson_none_nonrobust = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + resids=resids, + resids_colnames=resids_colnames, + resids_rownames=resids_rownames, + **est +) + +est = dict( + deviance=23.34969514421719, + dispers=.8980651978545075, + deviance_s=23.34969514421719, + dispers_s=.8980651978545075, + deviance_p=30.06164170990202, + dispers_p=1.156216988842385, + deviance_ps=30.06164170990202, + dispers_ps=1.156216988842385, + bic=-67.5595014539113, + nbml=0, + N=33, + ic=3, + k=7, + k_eq=1, + k_dv=1, + converged=1, + k_autoCns=0, + ll=-52.96941847346162, + chi2=183.6836771894393, + p=5.59891844113e-37, + rc=0, + aic=3.634510210512826, + rank=7, + canonical=1, + power=0, + df_m=6, + df=26, + vf=1, + phi=1, + k_eq_model=0, + properties="b V", + depvar="executions", + which="max", + technique="nr", + singularHmethod="m-marquardt", + ml_method="e2", + crittype="log likelihood", + user="glim_lf", + title="Generalized linear models", + opt="moptimize", + chi2type="Wald", + wtype="fweight", + wexp="= fweight", + link="glim_l03", + varfunc="glim_v3", + m="1", + a="1", + oim="oim", + opt1="ML", + varfuncf="u", + varfunct="Poisson", + linkf="ln(u)", + linkt="Log", + vce="oim", + vcetype="OIM", + hac_lag="15", + marginsok="default", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + predict="glim_p", + cmd="glm", + cmdline="glm executions income perpoverty perblack LN_VC100k96 south degree [fweight=fweight], family(poisson)", # noqa:E501 +) + +params_table = np.array([ + .00025343868829, .00004015414514, 6.3116444744157, 2.760858933e-10, + .00017473800999, .00033213936659, np.nan, 1.9599639845401, + 0, .09081422305585, .06472607217881, 1.4030547505642, + .16060051303473, -.03604654727537, .21767499338706, np.nan, + 1.9599639845401, 0, -.09416451429381, .01795769655821, + -5.2436855689475, 1.574003474e-07, -.12936095279319, -.05896807579442, + np.nan, 1.9599639845401, 0, .27652273809506, + .38626128010796, .7158955669017, .47405583598111, -.48053545953887, + 1.033580935729, np.nan, 1.9599639845401, 0, + 2.239890838384, .36339399714255, 6.1638080320445, 7.101602988e-10, + 1.5276516917866, 2.9521299849815, np.nan, 1.9599639845401, + 0, -18.842583191417, 3.736940161486, -5.0422491067996, + 4.600917913e-07, -26.16685132031, -11.518315062523, np.nan, + 1.9599639845401, 0, -6.5630017977416, 3.2352486362722, + -2.0285927097411, .04249979172538, -12.903972605867, -.22203098961573, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 1.612355372e-09, 1.270985149e-06, 8.789752394e-08, -1.636449642e-07, + -3.213686689e-06, -.00005643188411, -.00006199883309, 1.270985149e-06, + .0041894644197, .00016567874308, -.00066453618021, -.00943379587945, + .07218307550995, -.11262571631082, 8.789752394e-08, .00016567874308, + .00032247886568, -.00355795369216, -.00391377556228, -.01880905186772, + .01900717143416, -1.636449642e-07, -.00066453618021, -.00355795369216, + .14919777651064, .02481983169552, .26952997380446, -.95915288407306, + -3.213686689e-06, -.00943379587945, -.00391377556228, .02481983169552, + .13205519715924, .44364186152042, -.0298149336078, -.00005643188411, + .07218307550995, -.01880905186772, .26952997380446, .44364186152042, + 13.964721770527, -3.6510403528048, -.00006199883309, -.11262571631082, + .01900717143416, -.95915288407306, -.0298149336078, -3.6510403528048, + 10.466833738501]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 33, np.nan, -52.969418473462, 7, + 119.93883694692, 130.41438987719]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 34.815238952637, .16658315062523, .96612107753754, 7.3026847839355, + .32757967710495, .78363972902298, 1.2540435791016, .26076200604439, + .08527097851038, 3.9734709262848, .24942673742771, .24720433354378, + 2.0739872455597, .24682784080505, .12635557353497, 1.1471545696259, + .45427960157394, .23673823475838, 1.7763512134552, .27608770132065, + .13540133833885, 2.2698366641998, .25641229748726, .1492355465889, + 1.6349502801895, .27634221315384, .12485299259424, 2.7504913806915, + .39550569653511, .43024495244026, 2.862185716629, .39729079604149, + .45176732540131, 3.5617923736572, .39150056242943, .54592549800873, + 2.6135795116425, .29556328058243, .22831618785858, .775799036026, + .40655690431595, .12823067605495, .93375068902969, .29390665888786, + .08065843582153, .56681954860687, .28863781690598, .04722274839878, + 1.8914022445679, .21889741718769, .09062857925892]).reshape(17, 3) + +predicted_colnames = 'predict_mu predict_linpred_std predict_hat'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + +resids = np.array([ + 2.1847612857819, 2.1847612857819, .36650228500366, .36649596691132, + .3702706694603, .06275302171707, 1.6973150968552, 1.6973150968552, + .60597640275955, .60585051774979, .62808901071548, .23242343962193, + 4.7459564208984, 4.7459564208984, 3.0897438526154, 3.0483965873718, + 4.2380628585815, 3.7845225334167, .02652905881405, .02652905881405, + .01329397037625, .01329396758229, .01330873556435, .00667654490098, + .92601269483566, .92601269483566, .60273587703705, .60233747959137, + .64300429821014, .44648909568787, .8528453707695, .8528453707695, + .72065913677216, .71955502033234, .7962681055069, .7434441447258, + .22364875674248, .22364875674248, .16446639597416, .16445553302765, + .16780391335487, .12590345740318, -.26983660459518, -.26983660459518, + -.1828535348177, -.18284019827843, -.1791032999754, -.11887931078672, + -.63495022058487, -.63495022058487, -.53598040342331, -.53542107343674, + -.49657794833183, -.38836058974266, -1.7504912614822, -1.7504912614822, + -1.2204585075378, -1.2154930830002, -1.0554916858673, -.63642859458923, + -1.862185716629, -1.862185716629, -1.2788465023041, -1.2732635736465, + -1.1007128953934, -.65061664581299, -2.5617923736572, -2.5617923736572, + -1.617108464241, -1.6071890592575, -1.3574055433273, -.71924245357513, + -1.6135795116425, -1.6135795116425, -1.1469231843948, -1.1426799297333, + -.99809640645981, -.61738300323486, .22420094907284, .22420094907284, + .24363535642624, .24356025457382, .25454398989677, .28899359703064, + .06624934077263, .06624934077263, .06777309626341, .06777160614729, + .06855925172567, .07094971090555, .43318045139313, .43318045139313, + .51954871416092, .51871728897095, .57536894083023, .76422989368439, + -.89140218496323, -.89140218496323, -.7140833735466, -.7128586769104, + -.64815932512283, -.47129172086716]).reshape(17, 6) + +resids_colnames = ['score_factor', 'resid_response', 'resid_anscombe', + 'resid_deviance', 'resid_pearson', 'resid_working'] + +resids_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_poisson_fweight_nonrobust = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + resids=resids, + resids_colnames=resids_colnames, + resids_rownames=resids_rownames, + **est +) + +est = dict( + deviance=12.02863083186947, + dispers=1.202863083186947, + deviance_s=12.02863083186947, + dispers_s=1.202863083186947, + deviance_p=15.48630027479802, + dispers_p=1.548630027479802, + deviance_ps=15.48630027479802, + dispers_ps=1.548630027479802, + bic=-16.30350260869269, + nbml=0, + N=17, + ic=3, + k=7, + k_eq=1, + k_dv=1, + converged=1, + k_autoCns=0, + ll=-27.28727618329841, + chi2=94.62492461274286, + p=3.30927661191e-18, + rc=0, + aic=4.033797198035106, + rank=7, + canonical=1, + power=0, + df_m=6, + df=10, + vf=1, + phi=1, + k_eq_model=0, + properties="b V", + depvar="executions", + which="max", + technique="nr", + singularHmethod="m-marquardt", + ml_method="e2", + crittype="log likelihood", + user="glim_lf", + title="Generalized linear models", + opt="moptimize", + chi2type="Wald", + wtype="aweight", + wexp="= fweight", + link="glim_l03", + varfunc="glim_v3", + m="1", + a="1", + oim="oim", + opt1="ML", + varfuncf="u", + varfunct="Poisson", + linkf="ln(u)", + linkt="Log", + vce="oim", + vcetype="OIM", + hac_lag="15", + marginsok="default", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + predict="glim_p", + cmd="glm", + cmdline="glm executions income perpoverty perblack LN_VC100k96 south degree [aweight=fweight], family(poisson)", # noqa:E501 +) + +params_table = np.array([ + .00025343868829, .00005594520811, 4.5301232557793, 5.894928560e-06, + .00014378809529, .00036308928129, np.nan, 1.9599639845401, + 0, .09081422305585, .09018031800722, 1.0070293059798, + .31392069129295, -.08593595235267, .26756439846436, np.nan, + 1.9599639845401, 0, -.09416451429381, .02501975991718, + -3.7636058301716, .00016748080115, -.14320234263332, -.04512668595429, + np.nan, 1.9599639845401, 0, .27652273809507, + .53816281293549, .51382728692594, .60737274844619, -.77825699307725, + 1.3313024692674, np.nan, 1.9599639845401, 0, + 2.239890838384, .50630271729905, 4.424015044464, 9.688326910e-06, + 1.2475557472031, 3.2322259295649, np.nan, 1.9599639845401, + 0, -18.842583191417, 5.2065333302747, -3.6190267105084, + .00029571311817, -29.047201003062, -8.6379653797707, np.nan, + 1.9599639845401, 0, -6.5630017977417, 4.5075460479893, + -1.4560032727052, .14539171490364, -15.397629710457, 2.2716261149733, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 3.129866310e-09, 2.467206465e-06, 1.706246053e-07, -3.176637541e-07, + -6.238332985e-06, -.00010954424563, -.000120350676, 2.467206465e-06, + .00813248975588, .00032161167774, -.00128998199687, -.01831266258952, + .14012008775466, -.21862639048575, 1.706246053e-07, .00032161167774, + .00062598838631, -.00690661599067, -.00759732903266, -.03651168891971, + .03689627396044, -3.176637541e-07, -.00128998199687, -.00690661599067, + .28961921322663, .04817967329131, .52320524326798, -1.8618850102603, + -6.238332985e-06, -.01831266258952, -.00759732903266, .04817967329131, + .2563424415444, .86118714295143, -.05787604759173, -.00010954424563, + .14012008775466, -.03651168891971, .52320524326798, .86118714295143, + 27.107989319261, -7.0873136260377, -.000120350676, -.21862639048575, + .03689627396044, -1.8618850102603, -.05787604759173, -7.0873136260377, + 20.317971374744]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 17, np.nan, -27.287276183298, 7, + 68.574552366597, 74.40704577499]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 34.815238952637, .23209382593632, 1.8754115104675, 7.3026847839355, + .45640400052071, 1.521183013916, 1.2540435791016, .36330956220627, + .16552601754665, 3.9734709262848, .34751656651497, .47986721992493, + 2.0739872455597, .34389564394951, .2452784627676, 1.1471545696259, + .63293009996414, .45955070853233, 1.7763512134552, .38466224074364, + .2628378868103, 2.2698366641998, .35724925994873, .28969252109528, + 1.6349502801895, .38501682877541, .24236169457436, 2.7504913806915, + .55104273557663, .83518141508102, 2.862185716629, .55352979898453, + .87696009874344, 3.5617923736572, .54546248912811, 1.0597376823425, + 2.6135795116425, .41179683804512, .44320201873779, .775799036026, + .5664399266243, .24891836941242, .93375068902969, .40948873758316, + .15657225251198, .56681954860687, .40214782953262, .09166768193245, + 1.8914022445679, .30498126149178, .17592607438564]).reshape(17, 3) + +predicted_colnames = 'predict_mu predict_linpred_std predict_hat'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + +resids = np.array([ + 2.1847612857819, 2.1847612857819, .36650228500366, .36649596691132, + .3702706694603, .06275302171707, 1.6973150968552, 1.6973150968552, + .60597640275955, .60585051774979, .62808901071548, .23242343962193, + 4.7459564208984, 4.7459564208984, 3.0897438526154, 3.0483965873718, + 4.2380628585815, 3.7845225334167, .02652905881405, .02652905881405, + .01329397037625, .01329396758229, .01330873556435, .00667654490098, + .92601269483566, .92601269483566, .60273587703705, .60233747959137, + .64300429821014, .44648909568787, .8528453707695, .8528453707695, + .72065913677216, .71955502033234, .7962681055069, .7434441447258, + .22364875674248, .22364875674248, .16446639597416, .16445553302765, + .16780391335487, .12590345740318, -.26983660459518, -.26983660459518, + -.1828535348177, -.18284019827843, -.1791032999754, -.11887931078672, + -.63495022058487, -.63495022058487, -.53598040342331, -.53542107343674, + -.49657794833183, -.38836058974266, -1.7504912614822, -1.7504912614822, + -1.2204585075378, -1.2154930830002, -1.0554916858673, -.63642859458923, + -1.862185716629, -1.862185716629, -1.2788465023041, -1.2732635736465, + -1.1007128953934, -.65061664581299, -2.5617923736572, -2.5617923736572, + -1.617108464241, -1.6071890592575, -1.3574055433273, -.71924245357513, + -1.6135795116425, -1.6135795116425, -1.1469231843948, -1.1426799297333, + -.99809640645981, -.61738300323486, .22420094907284, .22420094907284, + .24363535642624, .24356025457382, .25454398989677, .28899359703064, + .06624934077263, .06624934077263, .06777309626341, .06777160614729, + .06855925172567, .07094971090555, .43318045139313, .43318045139313, + .51954871416092, .51871728897095, .57536894083023, .76422989368439, + -.89140218496323, -.89140218496323, -.7140833735466, -.7128586769104, + -.64815932512283, -.47129172086716]).reshape(17, 6) + +resids_colnames = ['score_factor', 'resid_response', 'resid_anscombe', + 'resid_deviance', 'resid_pearson', 'resid_working'] + +resids_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_poisson_aweight_nonrobust = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + resids=resids, + resids_colnames=resids_colnames, + resids_rownames=resids_rownames, + **est +) + +est = dict( + deviance=23.34969514421719, + dispers=2.33496951442172, + deviance_s=23.34969514421719, + dispers_s=2.33496951442172, + deviance_p=30.06164170990202, + dispers_p=3.006164170990202, + deviance_ps=30.06164170990202, + dispers_ps=3.006164170990202, + bic=-4.982438296344967, + nbml=0, + N=17, + ic=3, + k=7, + k_eq=1, + k_dv=1, + converged=1, + k_autoCns=0, + ll=-52.96941847346162, + chi2=356.6637749656061, + p=5.72458312679e-74, + rc=0, + aic=7.055225702760191, + rank=7, + canonical=1, + power=0, + df_m=6, + df=10, + vf=1, + phi=1, + k_eq_model=0, + properties="b V", + depvar="executions", + which="max", + technique="nr", + singularHmethod="m-marquardt", + ml_method="e2", + crittype="log pseudolikelihood", + user="glim_lf", + title="Generalized linear models", + opt="moptimize", + chi2type="Wald", + wtype="pweight", + wexp="= fweight", + link="glim_l03", + varfunc="glim_v3", + m="1", + a="1", + oim="oim", + opt1="ML", + varfuncf="u", + varfunct="Poisson", + linkf="ln(u)", + linkt="Log", + vcetype="Robust", + hac_lag="15", + marginsok="default", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + predict="glim_p", + cmd="glm", + cmdline="glm executions income perpoverty perblack LN_VC100k96 south degree [pweight=fweight], family(poisson)", # noqa:E501 +) + +params_table = np.array([ + .00025343868829, .0000298866597, 8.4799937786829, 2.252059827e-17, + .00019486191167, .00031201546491, np.nan, 1.9599639845401, + 0, .09081422305585, .08414617969117, 1.0792435662456, + .28047916301946, -.07410925857549, .25573770468718, np.nan, + 1.9599639845401, 0, -.09416451429381, .01946961498728, + -4.8364856909253, 1.321547815e-06, -.13232425846174, -.05600477012587, + np.nan, 1.9599639845401, 0, .27652273809506, + .36112179485191, .76573261995571, .44383541350407, -.43126297384714, + .98430845003726, np.nan, 1.9599639845401, 0, + 2.239890838384, .43098853454849, 5.1971007551989, 2.024206636e-07, + 1.3951688329193, 3.0846128438487, np.nan, 1.9599639845401, + 0, -18.842583191417, 4.5147658917489, -4.1735460139479, + .00002998950578, -27.691361737874, -9.9938046449589, np.nan, + 1.9599639845401, 0, -6.5630017977416, 3.3999612612355, + -1.930316639948, .0535676165153, -13.226803418595, .10079982311137, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 8.932124278e-10, 1.512127962e-06, 1.877263788e-07, -4.562869239e-06, + -2.023379829e-06, -.00001228516761, -.00002423071544, 1.512127962e-06, + .00708057955662, .00028427703202, -.0019549511748, -.00596332288528, + .20022061835302, -.18678265108673, 1.877263788e-07, .00028427703202, + .00037906590775, -.00453407701816, -.00623061980467, -.04659404972535, + .02694184589715, -4.562869239e-06, -.0019549511748, -.00453407701816, + .13040895071706, .0836259691825, .89260578257395, -.82275604425197, + -2.023379829e-06, -.00596332288528, -.00623061980467, .0836259691825, + .18575111691225, 1.0698498854979, -.64859219982217, -.00001228516761, + .20022061835302, -.04659404972535, .89260578257395, 1.0698498854979, + 20.383111057299, -12.482192460755, -.00002423071544, -.18678265108673, + .02694184589715, -.82275604425197, -.64859219982217, -12.482192460755, + 11.559736577902]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 17, np.nan, -52.969418473462, 7, + 119.93883694692, 125.77133035532]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 34.815238952637, .06858423352242, 7.3026847839355, .25687274336815, + 1.2540435791016, .41320022940636, 3.9734709262848, .16020278632641, + 2.0739872455597, .22170753777027, 1.1471545696259, .51121062040329, + 1.7763512134552, .2167394310236, 2.2698366641998, .2456086575985, + 1.6349502801895, .25546172261238, 2.7504913806915, .4417819082737, + 2.862185716629, .61734634637833, 3.5617923736572, .51518148183823, + 2.6135795116425, .34006628394127, .775799036026, .292076587677, + .93375068902969, .39795544743538, .56681954860687, .31529840826988, + 1.8914022445679, .26116076111794]).reshape(17, 2) + +predicted_colnames = 'predict_mu predict_linpred_std'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + +resids = np.array([ + 2.1847612857819, 2.1847612857819, .36650228500366, .36649596691132, + .3702706694603, .06275302171707, 1.6973150968552, 1.6973150968552, + .60597640275955, .60585051774979, .62808901071548, .23242343962193, + 4.7459564208984, 4.7459564208984, 3.0897438526154, 3.0483965873718, + 4.2380628585815, 3.7845225334167, .02652905881405, .02652905881405, + .01329397037625, .01329396758229, .01330873556435, .00667654490098, + .92601269483566, .92601269483566, .60273587703705, .60233747959137, + .64300429821014, .44648909568787, .8528453707695, .8528453707695, + .72065913677216, .71955502033234, .7962681055069, .7434441447258, + .22364875674248, .22364875674248, .16446639597416, .16445553302765, + .16780391335487, .12590345740318, -.26983660459518, -.26983660459518, + -.1828535348177, -.18284019827843, -.1791032999754, -.11887931078672, + -.63495022058487, -.63495022058487, -.53598040342331, -.53542107343674, + -.49657794833183, -.38836058974266, -1.7504912614822, -1.7504912614822, + -1.2204585075378, -1.2154930830002, -1.0554916858673, -.63642859458923, + -1.862185716629, -1.862185716629, -1.2788465023041, -1.2732635736465, + -1.1007128953934, -.65061664581299, -2.5617923736572, -2.5617923736572, + -1.617108464241, -1.6071890592575, -1.3574055433273, -.71924245357513, + -1.6135795116425, -1.6135795116425, -1.1469231843948, -1.1426799297333, + -.99809640645981, -.61738300323486, .22420094907284, .22420094907284, + .24363535642624, .24356025457382, .25454398989677, .28899359703064, + .06624934077263, .06624934077263, .06777309626341, .06777160614729, + .06855925172567, .07094971090555, .43318045139313, .43318045139313, + .51954871416092, .51871728897095, .57536894083023, .76422989368439, + -.89140218496323, -.89140218496323, -.7140833735466, -.7128586769104, + -.64815932512283, -.47129172086716]).reshape(17, 6) + +resids_colnames = ['score_factor', 'resid_response', 'resid_anscombe', + 'resid_deviance', 'resid_pearson', 'resid_working'] + +resids_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_poisson_pweight_nonrobust = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + resids=resids, + resids_colnames=resids_colnames, + resids_rownames=resids_rownames, + **est +) + +est = dict( + k_eq_model=0, + phi=1, + vf=1, + df=10, + df_m=6, + power=0, + canonical=1, + rank=7, + aic=4.579685683305704, + rc=0, + p=5.09268495340e-76, + chi2=366.2131475852884, + ll=-31.92732830809848, + k_autoCns=0, + converged=1, + k_dv=1, + k_eq=1, + k=7, + ic=3, + N=17, + nbml=0, + bic=-9.740492454486454, + dispers_ps=2.475374834715614, + deviance_ps=24.75374834715614, + dispers_p=2.475374834715614, + deviance_p=24.75374834715614, + dispers_s=1.859164098607571, + deviance_s=18.59164098607571, + dispers=1.859164098607571, + deviance=18.59164098607571, + cmdline="glm executions income perpoverty perblack LN_VC100k96 south degree, family(poisson) vce(robust)", # noqa:E501 + cmd="glm", + predict="glim_p", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + marginsok="default", + hac_lag="15", + vcetype="Robust", + vce="robust", + linkt="Log", + linkf="ln(u)", + varfunct="Poisson", + varfuncf="u", + opt1="ML", + oim="oim", + a="1", + m="1", + varfunc="glim_v3", + link="glim_l03", + chi2type="Wald", + opt="moptimize", + title="Generalized linear models", + user="glim_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="executions", + properties="b V", +) + +params_table = np.array([ + .00026110166569, .00003534474167, 7.3872845963787, 1.498576223e-13, + .00019182724497, .0003303760864, np.nan, 1.9599639845401, + 0, .07781804809828, .09819599835909, .79247677500784, + .42808272865983, -.11464257211148, .27027866830805, np.nan, + 1.9599639845401, 0, -.09493110013466, .01944446025221, + -4.8821668950083, 1.049263903e-06, -.13304154192782, -.0568206583415, + np.nan, 1.9599639845401, 0, .29693462055586, + .34917491559373, .85038932436186, .39510866948496, -.38743563831266, + .98130487942439, np.nan, 1.9599639845401, 0, + 2.3011832004524, .45717041903387, 5.0335347709405, 4.815174289e-07, + 1.405145644349, 3.1972207565559, np.nan, 1.9599639845401, + 0, -18.722067603077, 4.5006120067298, -4.1598937155841, + .00003183957242, -27.543105044656, -9.9010301614985, np.nan, + 1.9599639845401, 0, -6.8014789919532, 3.48445447794, + -1.9519494471841, .05094420680386, -13.630884274485, .02792629057847, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 1.249250764e-09, 2.158351725e-06, 1.068227835e-07, -5.170410321e-06, + -5.047866044e-07, -.00001662944527, -.00004339679838, 2.158351725e-06, + .00964245409374, .00008635335196, -.00640596402935, -.00524426268669, + .23390140895418, -.22653903184676, 1.068227835e-07, .00008635335196, + .0003780870345, -.00382751790532, -.0064534643179, -.05137117620883, + .02948709519544, -5.170410321e-06, -.00640596402935, -.00382751790532, + .12192312167989, .0907733380116, .89729289134262, -.69004336039169, + -5.047866044e-07, -.00524426268669, -.0064534643179, .0907733380116, + .20900479203961, .93952111535021, -.75843860743141, -.00001662944527, + .23390140895418, -.05137117620883, .89729289134262, .93952111535021, + 20.25550843512, -12.691830440798, -.00004339679838, -.22653903184676, + .02948709519544, -.69004336039169, -.75843860743141, -12.691830440798, + 12.141423008836]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 17, np.nan, -31.927328308098, 7, + 77.854656616197, 83.68715002459]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 35.226364135742, .05631958693266, 8.1965742111206, .14089094102383, + 1.3118965625763, .51714926958084, 3.6862981319427, .20286601781845, + 2.0823004245758, .27275583148003, 1.0650315284729, .58616667985916, + 1.9260421991348, .30098018050194, 2.4171404838562, .34251752495766, + 1.8473218679428, .29685723781586, 2.8643238544464, .47364214062691, + 3.1211984157562, .72507524490356, 3.338207244873, .54493451118469, + 2.5269968509674, .34425318241119, .89725440740585, .37162157893181, + .97933322191238, .50227928161621, .53462094068527, .40906101465225, + 1.9790935516357, .33805811405182]).reshape(17, 2) + +predicted_colnames = 'predict_mu predict_linpred_std'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_poisson_none_hc1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + **est +) + +est = dict( + k_eq_model=0, + phi=1, + vf=1, + df=26, + df_m=6, + power=0, + canonical=1, + rank=7, + aic=3.634510210512826, + rc=0, + p=1.5690245831e-115, + chi2=549.7874580263729, + ll=-52.96941847346162, + k_autoCns=0, + converged=1, + k_dv=1, + k_eq=1, + k=7, + ic=3, + N=33, + nbml=0, + bic=-67.5595014539113, + dispers_ps=1.156216988842385, + deviance_ps=30.06164170990202, + dispers_p=1.156216988842385, + deviance_p=30.06164170990202, + dispers_s=.8980651978545075, + deviance_s=23.34969514421719, + dispers=.8980651978545075, + deviance=23.34969514421719, + cmdline="glm executions income perpoverty perblack LN_VC100k96 south degree [fweight=fweight], family(poisson) vce(robust)", # noqa:E501 + cmd="glm", + predict="glim_p", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + marginsok="default", + hac_lag="15", + vcetype="Robust", + vce="robust", + linkt="Log", + linkf="ln(u)", + varfunct="Poisson", + varfuncf="u", + opt1="ML", + oim="oim", + a="1", + m="1", + varfunc="glim_v3", + link="glim_l03", + wexp="= fweight", + wtype="fweight", + chi2type="Wald", + opt="moptimize", + title="Generalized linear models", + user="glim_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="executions", + properties="b V", +) + +params_table = np.array([ + .00025343868829, .0000263369674, 9.6229259983619, 6.398464168e-22, + .00020181918073, .00030505819585, np.nan, 1.9599639845401, + 0, .09081422305585, .07431850776812, 1.2219597215163, + .22172285914198, -.05484737555444, .23647582166613, np.nan, + 1.9599639845401, 0, -.09416451429381, .01609416304158, + -5.8508487860178, 4.890707145e-09, -.12570849421662, -.06262053437099, + np.nan, 1.9599639845401, 0, .27652273809506, + .34481886883624, .80193621372381, .42258985672342, -.3993098260138, + .95235530220392, np.nan, 1.9599639845401, 0, + 2.239890838384, .39682271484988, 5.6445630619491, 1.656012749e-08, + 1.4621326090308, 3.0176490677372, np.nan, 1.9599639845401, + 0, -18.842583191417, 4.1473740870735, -4.5432562377589, + 5.539185130e-06, -26.971287032495, -10.713879350338, np.nan, + 1.9599639845401, 0, -6.5630017977416, 3.0810023455152, + -2.1301515097173, .03315910688542, -12.601655431235, -.52434816424841, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 6.936358517e-10, 1.301395377e-06, 1.497821854e-07, -4.758016826e-06, + -1.852598001e-06, -6.904571080e-06, -.00001327109619, 1.301395377e-06, + .00552324059688, .00014714335792, -.00376147485446, -.00118957690573, + .15979100738539, -.13853266210904, 1.497821854e-07, .00014714335792, + .00025902208401, -.00418693954572, -.00513741847691, -.03987504442994, + .02761179707845, -4.758016826e-06, -.00376147485446, -.00418693954572, + .1189000523055, .08682729933237, .80541854027627, -.70545315416752, + -1.852598001e-06, -.00118957690573, -.00513741847691, .08682729933237, + .15746826702083, 1.1366624064282, -.75098089879076, -6.904571080e-06, + .15979100738539, -.03987504442994, .80541854027627, 1.1366624064282, + 17.200711818129, -11.062121016981, -.00001327109619, -.13853266210904, + .02761179707845, -.70545315416752, -.75098089879076, -11.062121016981, + 9.49257545307]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 33, np.nan, -52.969418473462, 7, + 119.93883694692, 130.41438987719]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 34.815238952637, .06608480215073, 7.3026847839355, .23366995155811, + 1.2540435791016, .39606991410255, 3.9734709262848, .12350843846798, + 2.0739872455597, .18263976275921, 1.1471545696259, .39735752344131, + 1.7763512134552, .17952646315098, 2.2698366641998, .21028706431389, + 1.6349502801895, .17675416171551, 2.7504913806915, .42150634527206, + 2.862185716629, .58209121227264, 3.5617923736572, .49835306406021, + 2.6135795116425, .2456089258194, .775799036026, .23251366615295, + .93375068902969, .35320028662682, .56681954860687, .26245352625847, + 1.8914022445679, .20374123752117]).reshape(17, 2) + +predicted_colnames = 'predict_mu predict_linpred_std'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_poisson_fweight_hc1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + **est +) + +est = dict( + k_eq_model=0, + phi=1, + vf=1, + df=10, + df_m=6, + power=0, + canonical=1, + rank=7, + aic=4.033797198035106, + rc=0, + p=5.72458312675e-74, + chi2=356.663774965618, + ll=-27.28727618329841, + k_autoCns=0, + converged=1, + k_dv=1, + k_eq=1, + k=7, + ic=3, + N=17, + nbml=0, + bic=-16.30350260869269, + dispers_ps=1.548630027479802, + deviance_ps=15.48630027479802, + dispers_p=1.548630027479802, + deviance_p=15.48630027479802, + dispers_s=1.202863083186947, + deviance_s=12.02863083186947, + dispers=1.202863083186947, + deviance=12.02863083186947, + cmdline="glm executions income perpoverty perblack LN_VC100k96 south degree [aweight=fweight], family(poisson) vce(robust)", # noqa:E501 + cmd="glm", + predict="glim_p", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + marginsok="default", + hac_lag="15", + vcetype="Robust", + vce="robust", + linkt="Log", + linkf="ln(u)", + varfunct="Poisson", + varfuncf="u", + opt1="ML", + oim="oim", + a="1", + m="1", + varfunc="glim_v3", + link="glim_l03", + wexp="= fweight", + wtype="aweight", + chi2type="Wald", + opt="moptimize", + title="Generalized linear models", + user="glim_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="executions", + properties="b V", +) + +params_table = np.array([ + .00025343868829, .0000298866597, 8.4799937786833, 2.252059827e-17, + .00019486191167, .00031201546491, np.nan, 1.9599639845401, + 0, .09081422305585, .08414617969118, 1.0792435662455, + .28047916301948, -.0741092585755, .25573770468719, np.nan, + 1.9599639845401, 0, -.09416451429381, .01946961498728, + -4.8364856909248, 1.321547815e-06, -.13232425846174, -.05600477012587, + np.nan, 1.9599639845401, 0, .27652273809507, + .36112179485206, .76573261995541, .44383541350425, -.43126297384744, + .98430845003758, np.nan, 1.9599639845401, 0, + 2.239890838384, .4309885345485, 5.1971007551988, 2.024206636e-07, + 1.3951688329193, 3.0846128438488, np.nan, 1.9599639845401, + 0, -18.842583191417, 4.5147658917496, -4.1735460139472, + .00002998950578, -27.691361737876, -9.9938046449574, np.nan, + 1.9599639845401, 0, -6.5630017977417, 3.3999612612367, + -1.9303166399474, .05356761651539, -13.226803418597, .10079982311369, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 8.932124278e-10, 1.512127962e-06, 1.877263788e-07, -4.562869239e-06, + -2.023379829e-06, -.00001228516761, -.00002423071544, 1.512127962e-06, + .00708057955662, .00028427703202, -.00195495117479, -.00596332288528, + .2002206183531, -.1867826510868, 1.877263788e-07, .00028427703202, + .00037906590775, -.00453407701816, -.00623061980468, -.04659404972537, + .02694184589718, -4.562869239e-06, -.00195495117479, -.00453407701816, + .13040895071718, .08362596918255, .89260578257483, -.82275604425296, + -2.023379829e-06, -.00596332288528, -.00623061980468, .08362596918255, + .18575111691226, 1.0698498854982, -.64859219982256, -.00001228516761, + .2002206183531, -.04659404972537, .89260578257483, 1.0698498854982, + 20.383111057306, -12.482192460764, -.00002423071544, -.1867826510868, + .02694184589718, -.82275604425296, -.64859219982256, -12.482192460764, + 11.55973657791]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 17, np.nan, -27.287276183298, 7, + 68.574552366597, 74.40704577499]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 34.815238952637, .06858423352242, 7.3026847839355, .25687274336815, + 1.2540435791016, .41320022940636, 3.9734709262848, .16020278632641, + 2.0739872455597, .22170753777027, 1.1471545696259, .51121062040329, + 1.7763512134552, .2167394310236, 2.2698366641998, .2456086575985, + 1.6349502801895, .25546172261238, 2.7504913806915, .4417819082737, + 2.862185716629, .61734634637833, 3.5617923736572, .51518148183823, + 2.6135795116425, .34006628394127, .775799036026, .292076587677, + .93375068902969, .39795544743538, .56681954860687, .31529840826988, + 1.8914022445679, .26116076111794]).reshape(17, 2) + +predicted_colnames = 'predict_mu predict_linpred_std'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_poisson_aweight_hc1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + **est +) + +est = dict( + k_eq_model=0, + phi=1, + vf=1, + df=10, + df_m=6, + power=0, + canonical=1, + rank=7, + aic=7.055225702760191, + rc=0, + p=5.72458312679e-74, + chi2=356.6637749656061, + ll=-52.96941847346162, + k_autoCns=0, + converged=1, + k_dv=1, + k_eq=1, + k=7, + ic=3, + N=17, + nbml=0, + bic=-4.982438296344967, + dispers_ps=3.006164170990202, + deviance_ps=30.06164170990202, + dispers_p=3.006164170990202, + deviance_p=30.06164170990202, + dispers_s=2.33496951442172, + deviance_s=23.34969514421719, + dispers=2.33496951442172, + deviance=23.34969514421719, + cmdline="glm executions income perpoverty perblack LN_VC100k96 south degree [pweight=fweight], family(poisson) vce(robust)", # noqa:E501 + cmd="glm", + predict="glim_p", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + marginsok="default", + hac_lag="15", + vcetype="Robust", + vce="robust", + linkt="Log", + linkf="ln(u)", + varfunct="Poisson", + varfuncf="u", + opt1="ML", + oim="oim", + a="1", + m="1", + varfunc="glim_v3", + link="glim_l03", + wexp="= fweight", + wtype="pweight", + chi2type="Wald", + opt="moptimize", + title="Generalized linear models", + user="glim_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="executions", + properties="b V", +) + +params_table = np.array([ + .00025343868829, .0000298866597, 8.4799937786829, 2.252059827e-17, + .00019486191167, .00031201546491, np.nan, 1.9599639845401, + 0, .09081422305585, .08414617969117, 1.0792435662456, + .28047916301946, -.07410925857549, .25573770468718, np.nan, + 1.9599639845401, 0, -.09416451429381, .01946961498728, + -4.8364856909253, 1.321547815e-06, -.13232425846174, -.05600477012587, + np.nan, 1.9599639845401, 0, .27652273809506, + .36112179485191, .76573261995571, .44383541350407, -.43126297384714, + .98430845003726, np.nan, 1.9599639845401, 0, + 2.239890838384, .43098853454849, 5.1971007551989, 2.024206636e-07, + 1.3951688329193, 3.0846128438487, np.nan, 1.9599639845401, + 0, -18.842583191417, 4.5147658917489, -4.1735460139479, + .00002998950578, -27.691361737874, -9.9938046449589, np.nan, + 1.9599639845401, 0, -6.5630017977416, 3.3999612612355, + -1.930316639948, .0535676165153, -13.226803418595, .10079982311137, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 8.932124278e-10, 1.512127962e-06, 1.877263788e-07, -4.562869239e-06, + -2.023379829e-06, -.00001228516761, -.00002423071544, 1.512127962e-06, + .00708057955662, .00028427703202, -.0019549511748, -.00596332288528, + .20022061835302, -.18678265108673, 1.877263788e-07, .00028427703202, + .00037906590775, -.00453407701816, -.00623061980467, -.04659404972535, + .02694184589715, -4.562869239e-06, -.0019549511748, -.00453407701816, + .13040895071706, .0836259691825, .89260578257395, -.82275604425197, + -2.023379829e-06, -.00596332288528, -.00623061980467, .0836259691825, + .18575111691225, 1.0698498854979, -.64859219982217, -.00001228516761, + .20022061835302, -.04659404972535, .89260578257395, 1.0698498854979, + 20.383111057299, -12.482192460755, -.00002423071544, -.18678265108673, + .02694184589715, -.82275604425197, -.64859219982217, -12.482192460755, + 11.559736577902]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 17, np.nan, -52.969418473462, 7, + 119.93883694692, 125.77133035532]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 34.815238952637, .06858423352242, 7.3026847839355, .25687274336815, + 1.2540435791016, .41320022940636, 3.9734709262848, .16020278632641, + 2.0739872455597, .22170753777027, 1.1471545696259, .51121062040329, + 1.7763512134552, .2167394310236, 2.2698366641998, .2456086575985, + 1.6349502801895, .25546172261238, 2.7504913806915, .4417819082737, + 2.862185716629, .61734634637833, 3.5617923736572, .51518148183823, + 2.6135795116425, .34006628394127, .775799036026, .292076587677, + .93375068902969, .39795544743538, .56681954860687, .31529840826988, + 1.8914022445679, .26116076111794]).reshape(17, 2) + +predicted_colnames = 'predict_mu predict_linpred_std'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_poisson_pweight_hc1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + **est +) + +est = dict( + k_eq_model=0, + vf=1, + df=10, + df_m=6, + power=0, + canonical=1, + rank=7, + aic=4.579685683305704, + rc=0, + p=4.1950730971e-123, + chi2=584.908728768987, + ll=-31.92732830809848, + N_clust=9, + k_autoCns=0, + converged=1, + k_dv=1, + k_eq=1, + k=7, + ic=3, + N=17, + nbml=0, + bic=-9.740492454486454, + dispers_ps=2.475374834715614, + deviance_ps=24.75374834715614, + dispers_p=2.475374834715614, + deviance_p=24.75374834715614, + dispers_s=1.859164098607571, + deviance_s=18.59164098607571, + dispers=1.859164098607571, + deviance=18.59164098607571, + phi=1, + cmdline="glm executions income perpoverty perblack LN_VC100k96 south degree, family(poisson) vce(cluster id)", # noqa:E501 + cmd="glm", + predict="glim_p", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + marginsok="default", + hac_lag="15", + vcetype="Robust", + vce="cluster", + linkt="Log", + linkf="ln(u)", + varfunct="Poisson", + varfuncf="u", + opt1="ML", + clustvar="id", + oim="oim", + a="1", + m="1", + varfunc="glim_v3", + link="glim_l03", + chi2type="Wald", + opt="moptimize", + title="Generalized linear models", + user="glim_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="executions", + properties="b V", +) + +params_table = np.array([ + .00026110166569, .00004098448535, 6.3707440379489, 1.881133617e-10, + .00018077355048, .0003414297809, np.nan, 1.9599639845401, + 0, .07781804809828, .11602998752167, .67067186475175, + .50242959011024, -.14959654857083, .3052326447674, np.nan, + 1.9599639845401, 0, -.09493110013466, .02432927475974, + -3.9019288931601, .00009542919351, -.14261560243373, -.04724659783559, + np.nan, 1.9599639845401, 0, .29693462055586, + .31774950884716, .93449277587615, .35004976070702, -.32584297288986, + .91971221400158, np.nan, 1.9599639845401, 0, + 2.3011832004524, .54874508731474, 4.1935376801516, .00002746374324, + 1.2256625926223, 3.3767038082826, np.nan, 1.9599639845401, + 0, -18.722067603077, 2.8106198749749, -6.6611880780372, + 2.716227723e-11, -24.230781332261, -13.213353873894, np.nan, + 1.9599639845401, 0, -6.8014789919532, 3.1571598785659, + -2.1543029981246, .03121641791743, -12.989398647377, -.61355933652912, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 1.679728039e-09, 4.034336761e-06, 1.735749447e-07, -5.093610363e-06, + -4.552211884e-06, .00001563785418, -.00009230028034, 4.034336761e-06, + .01346295800428, .00110922683659, -.01950093608551, -.02957572460439, + .08545644123676, -.23518641056668, 1.735749447e-07, .00110922683659, + .00059191361033, -.00720622811203, -.01195031391163, -.04317371228367, + .03351736744645, -5.093610363e-06, -.01950093608551, -.00720622811203, + .10096475037261, .13375578883899, .49763538443989, -.27357574414228, + -4.552211884e-06, -.02957572460439, -.01195031391163, .13375578883899, + .30112117085206, .65342245458316, -.47102547759356, .00001563785418, + .08545644123676, -.04317371228367, .49763538443989, .65342245458316, + 7.8995840816039, -6.5824964755966, -.00009230028034, -.23518641056668, + .03351736744645, -.27357574414228, -.47102547759356, -6.5824964755966, + 9.9676584988266]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 17, np.nan, -31.927328308098, 7, + 77.854656616197, 83.68715002459]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 35.226364135742, .05941947177052, 8.1965742111206, .09018591046333, + 1.3118965625763, .53127920627594, 3.6862981319427, .23996050655842, + 2.0823004245758, .33554902672768, 1.0650315284729, .53513532876968, + 1.9260421991348, .32360115647316, 2.4171404838562, .33078169822693, + 1.8473218679428, .32581362128258, 2.8643238544464, .46489810943604, + 3.1211984157562, .71297109127045, 3.338207244873, .58515930175781, + 2.5269968509674, .42410242557526, .89725440740585, .40493285655975, + .97933322191238, .5560839176178, .53462094068527, .419488966465, + 1.9790935516357, .3438538312912]).reshape(17, 2) + +predicted_colnames = 'predict_mu predict_linpred_std'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_poisson_none_clu1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + **est +) + +est = dict( + k_eq_model=0, + vf=1, + df=26, + df_m=6, + power=0, + canonical=1, + rank=7, + aic=3.634510210512826, + rc=0, + p=6.87057569032e-91, + chi2=435.380362705941, + ll=-52.96941847346162, + N_clust=9, + k_autoCns=0, + converged=1, + k_dv=1, + k_eq=1, + k=7, + ic=3, + N=33, + nbml=0, + bic=-67.5595014539113, + dispers_ps=1.156216988842385, + deviance_ps=30.06164170990202, + dispers_p=1.156216988842385, + deviance_p=30.06164170990202, + dispers_s=.8980651978545075, + deviance_s=23.34969514421719, + dispers=.8980651978545075, + deviance=23.34969514421719, + phi=1, + cmdline="glm executions income perpoverty perblack LN_VC100k96 south degree [fweight=fweight], family(poisson) vce(cluster id)", # noqa:E501 + cmd="glm", + predict="glim_p", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + marginsok="default", + hac_lag="15", + vcetype="Robust", + vce="cluster", + linkt="Log", + linkf="ln(u)", + varfunct="Poisson", + varfuncf="u", + opt1="ML", + clustvar="id", + oim="oim", + a="1", + m="1", + varfunc="glim_v3", + link="glim_l03", + wexp="= fweight", + wtype="fweight", + chi2type="Wald", + opt="moptimize", + title="Generalized linear models", + user="glim_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="executions", + properties="b V", +) + +params_table = np.array([ + .00025343868829, .0000293670276, 8.6300422274613, 6.132932700e-18, + .00019588037186, .00031099700472, np.nan, 1.9599639845401, + 0, .09081422305585, .09800194027664, .92665739881773, + .35410444288802, -.10126605030142, .28289449641311, np.nan, + 1.9599639845401, 0, -.09416451429381, .02511206083893, + -3.7497724658197, .00017699509401, -.14338324911569, -.04494577947193, + np.nan, 1.9599639845401, 0, .27652273809506, + .36749499886987, .75245306451906, .45177864537662, -.44375422418847, + .99679970037859, np.nan, 1.9599639845401, 0, + 2.239890838384, .51564197481271, 4.343887712395, .00001399830855, + 1.229251138834, 3.250530537934, np.nan, 1.9599639845401, + 0, -18.842583191417, 3.2292740757113, -5.8349284543976, + 5.381365332e-09, -25.17184407602, -12.513322306813, np.nan, + 1.9599639845401, 0, -6.5630017977416, 3.1938260811459, + -2.0549026875586, .03988840483712, -12.822785889672, -.30321770581092, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 8.624223101e-10, 2.413510691e-06, 3.123995891e-07, -4.358439015e-06, + -8.084672085e-06, -4.785328653e-06, -.00003652286809, 2.413510691e-06, + .00960438029799, .00106422375754, -.00911884619892, -.03121758372723, + .06803953530989, -.17715756048416, 3.123995891e-07, .00106422375754, + .00063061559958, -.00844230553011, -.01177586448603, -.05361546061036, + .03844868195577, -4.358439015e-06, -.00911884619892, -.00844230553011, + .13505257419436, .14058853110927, .86184257188631, -.74146699290106, + -8.084672085e-06, -.03121758372723, -.01177586448603, .14058853110927, + .26588664618875, .75712244813913, -.35118919402718, -4.785328653e-06, + .06803953530989, -.05361546061036, .86184257188631, .75712244813913, + 10.428211056061, -8.3518020608948, -.00003652286809, -.17715756048416, + .03844868195577, -.74146699290106, -.35118919402718, -8.3518020608948, + 10.200525036608]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 33, np.nan, -52.969418473462, 7, + 119.93883694692, 130.41438987719]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 34.815238952637, .07249507308006, 7.3026847839355, .17909966409206, + 1.2540435791016, .36725598573685, 3.9734709262848, .1719862818718, + 2.0739872455597, .27532628178596, 1.1471545696259, .51580721139908, + 1.7763512134552, .23559851944447, 2.2698366641998, .21655206382275, + 1.6349502801895, .27835717797279, 2.7504913806915, .44458091259003, + 2.862185716629, .54439353942871, 3.5617923736572, .57089400291443, + 2.6135795116425, .41426089406013, .775799036026, .35101860761642, + .93375068902969, .39217269420624, .56681954860687, .27232182025909, + 1.8914022445679, .24083258211613]).reshape(17, 2) + +predicted_colnames = 'predict_mu predict_linpred_std'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_poisson_fweight_clu1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + **est +) + +est = dict( + k_eq_model=0, + vf=1, + df=10, + df_m=6, + power=0, + canonical=1, + rank=7, + aic=4.033797198035106, + rc=0, + p=6.87057569091e-91, + chi2=435.3803627057688, + ll=-27.28727618329841, + N_clust=9, + k_autoCns=0, + converged=1, + k_dv=1, + k_eq=1, + k=7, + ic=3, + N=17, + nbml=0, + bic=-16.30350260869269, + dispers_ps=1.548630027479802, + deviance_ps=15.48630027479802, + dispers_p=1.548630027479802, + deviance_p=15.48630027479802, + dispers_s=1.202863083186947, + deviance_s=12.02863083186947, + dispers=1.202863083186947, + deviance=12.02863083186947, + phi=1, + cmdline="glm executions income perpoverty perblack LN_VC100k96 south degree [aweight=fweight], family(poisson) vce(cluster id)", # noqa:E501 + cmd="glm", + predict="glim_p", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + marginsok="default", + hac_lag="15", + vcetype="Robust", + vce="cluster", + linkt="Log", + linkf="ln(u)", + varfunct="Poisson", + varfuncf="u", + opt1="ML", + clustvar="id", + oim="oim", + a="1", + m="1", + varfunc="glim_v3", + link="glim_l03", + wexp="= fweight", + wtype="aweight", + chi2type="Wald", + opt="moptimize", + title="Generalized linear models", + user="glim_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="executions", + properties="b V", +) + +params_table = np.array([ + .00025343868829, .0000293670276, 8.6300422274633, 6.132932700e-18, + .00019588037186, .00031099700472, np.nan, 1.9599639845401, + 0, .09081422305585, .09800194027665, .92665739881771, + .35410444288803, -.10126605030143, .28289449641312, np.nan, + 1.9599639845401, 0, -.09416451429381, .02511206083893, + -3.7497724658192, .00017699509401, -.14338324911569, -.04494577947192, + np.nan, 1.9599639845401, 0, .27652273809507, + .36749499887001, .75245306451881, .45177864537677, -.44375422418873, + .99679970037887, np.nan, 1.9599639845401, 0, + 2.239890838384, .51564197481271, 4.343887712395, .00001399830855, + 1.229251138834, 3.250530537934, np.nan, 1.9599639845401, + 0, -18.842583191417, 3.2292740757119, -5.8349284543965, + 5.381365332e-09, -25.171844076021, -12.513322306812, np.nan, + 1.9599639845401, 0, -6.5630017977417, 3.193826081147, + -2.054902687558, .03988840483718, -12.822785889674, -.30321770580895, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 8.624223101e-10, 2.413510691e-06, 3.123995891e-07, -4.358439015e-06, + -8.084672085e-06, -4.785328653e-06, -.00003652286809, 2.413510691e-06, + .00960438029799, .00106422375754, -.00911884619892, -.03121758372723, + .06803953530995, -.1771575604842, 3.123995891e-07, .00106422375754, + .00063061559958, -.00844230553012, -.01177586448603, -.05361546061038, + .03844868195581, -4.358439015e-06, -.00911884619892, -.00844230553012, + .13505257419447, .1405885311093, .86184257188684, -.74146699290197, + -8.084672085e-06, -.03121758372723, -.01177586448603, .1405885311093, + .26588664618875, .75712244813928, -.35118919402768, -4.785328653e-06, + .06803953530995, -.05361546061038, .86184257188684, .75712244813928, + 10.428211056065, -8.3518020609031, -.00003652286809, -.1771575604842, + .03844868195581, -.74146699290197, -.35118919402768, -8.3518020609031, + 10.200525036615]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 17, np.nan, -27.287276183298, 7, + 68.574552366597, 74.40704577499]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 34.815238952637, .07249507308006, 7.3026847839355, .17909966409206, + 1.2540435791016, .36725598573685, 3.9734709262848, .1719862818718, + 2.0739872455597, .27532628178596, 1.1471545696259, .51580721139908, + 1.7763512134552, .23559851944447, 2.2698366641998, .21655206382275, + 1.6349502801895, .27835714817047, 2.7504913806915, .44458091259003, + 2.862185716629, .54439353942871, 3.5617923736572, .57089400291443, + 2.6135795116425, .41426089406013, .775799036026, .35101860761642, + .93375068902969, .39217269420624, .56681954860687, .27232182025909, + 1.8914022445679, .24083258211613]).reshape(17, 2) + +predicted_colnames = 'predict_mu predict_linpred_std'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_poisson_aweight_clu1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + **est +) + +est = dict( + k_eq_model=0, + vf=1, + df=10, + df_m=6, + power=0, + canonical=1, + rank=7, + aic=7.055225702760191, + rc=0, + p=6.87057569032e-91, + chi2=435.380362705941, + ll=-52.96941847346162, + N_clust=9, + k_autoCns=0, + converged=1, + k_dv=1, + k_eq=1, + k=7, + ic=3, + N=17, + nbml=0, + bic=-4.982438296344967, + dispers_ps=3.006164170990202, + deviance_ps=30.06164170990202, + dispers_p=3.006164170990202, + deviance_p=30.06164170990202, + dispers_s=2.33496951442172, + deviance_s=23.34969514421719, + dispers=2.33496951442172, + deviance=23.34969514421719, + phi=1, + cmdline="glm executions income perpoverty perblack LN_VC100k96 south degree [pweight=fweight], family(poisson) vce(cluster id)", # noqa:E501 + cmd="glm", + predict="glim_p", + marginsnotok="stdp Anscombe Cooksd Deviance Hat Likelihood Pearson Response Score Working ADJusted STAndardized STUdentized MODified", # noqa:E501 + marginsok="default", + hac_lag="15", + vcetype="Robust", + vce="cluster", + linkt="Log", + linkf="ln(u)", + varfunct="Poisson", + varfuncf="u", + opt1="ML", + clustvar="id", + oim="oim", + a="1", + m="1", + varfunc="glim_v3", + link="glim_l03", + wexp="= fweight", + wtype="pweight", + chi2type="Wald", + opt="moptimize", + title="Generalized linear models", + user="glim_lf", + crittype="log pseudolikelihood", + ml_method="e2", + singularHmethod="m-marquardt", + technique="nr", + which="max", + depvar="executions", + properties="b V", +) + +params_table = np.array([ + .00025343868829, .0000293670276, 8.6300422274613, 6.132932700e-18, + .00019588037186, .00031099700472, np.nan, 1.9599639845401, + 0, .09081422305585, .09800194027664, .92665739881773, + .35410444288802, -.10126605030142, .28289449641311, np.nan, + 1.9599639845401, 0, -.09416451429381, .02511206083893, + -3.7497724658197, .00017699509401, -.14338324911569, -.04494577947193, + np.nan, 1.9599639845401, 0, .27652273809506, + .36749499886987, .75245306451906, .45177864537662, -.44375422418847, + .99679970037859, np.nan, 1.9599639845401, 0, + 2.239890838384, .51564197481271, 4.343887712395, .00001399830855, + 1.229251138834, 3.250530537934, np.nan, 1.9599639845401, + 0, -18.842583191417, 3.2292740757113, -5.8349284543976, + 5.381365332e-09, -25.17184407602, -12.513322306813, np.nan, + 1.9599639845401, 0, -6.5630017977416, 3.1938260811459, + -2.0549026875586, .03988840483712, -12.822785889672, -.30321770581092, + np.nan, 1.9599639845401, 0]).reshape(7, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 8.624223101e-10, 2.413510691e-06, 3.123995891e-07, -4.358439015e-06, + -8.084672085e-06, -4.785328653e-06, -.00003652286809, 2.413510691e-06, + .00960438029799, .00106422375754, -.00911884619892, -.03121758372723, + .06803953530989, -.17715756048416, 3.123995891e-07, .00106422375754, + .00063061559958, -.00844230553011, -.01177586448603, -.05361546061036, + .03844868195577, -4.358439015e-06, -.00911884619892, -.00844230553011, + .13505257419436, .14058853110927, .86184257188631, -.74146699290106, + -8.084672085e-06, -.03121758372723, -.01177586448603, .14058853110927, + .26588664618875, .75712244813913, -.35118919402718, -4.785328653e-06, + .06803953530989, -.05361546061036, .86184257188631, .75712244813913, + 10.428211056061, -8.3518020608948, -.00003652286809, -.17715756048416, + .03844868195577, -.74146699290106, -.35118919402718, -8.3518020608948, + 10.200525036608]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 17, np.nan, -52.969418473462, 7, + 119.93883694692, 125.77133035532]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 34.815238952637, .07249507308006, 7.3026847839355, .17909966409206, + 1.2540435791016, .36725598573685, 3.9734709262848, .1719862818718, + 2.0739872455597, .27532628178596, 1.1471545696259, .51580721139908, + 1.7763512134552, .23559851944447, 2.2698366641998, .21655206382275, + 1.6349502801895, .27835717797279, 2.7504913806915, .44458091259003, + 2.862185716629, .54439353942871, 3.5617923736572, .57089400291443, + 2.6135795116425, .41426089406013, .775799036026, .35101860761642, + .93375068902969, .39217269420624, .56681954860687, .27232182025909, + 1.8914022445679, .24083258211613]).reshape(17, 2) + +predicted_colnames = 'predict_mu predict_linpred_std'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_poisson_pweight_clu1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + **est +) + +est = dict( + rank=7, + ll_0=-55.23556912834824, + ll=-47.54122045581504, + r2_a=.3528737432046668, + rss=267.3132086911238, + mss=393.6105745962962, + rmse=5.17023412130557, + r2=.5955460895029168, + F=.7279778160729128, + df_r=10, + df_m=6, + N=17, + cmdline="regress executions income perpoverty perblack LN_VC100k96 south degree [aweight=fweight], vce(robust)", # noqa:E501 + title="Linear regression", + marginsok="XB default", + vce="robust", + depvar="executions", + cmd="regress", + properties="b V", + predict="regres_p", + model="ols", + estat_cmd="regress_estat", + wexp="= fweight", + wtype="aweight", + vcetype="Robust", +) + +params_table = np.array([ + .00177624355887, .00100571734546, 1.7661458926668, .10782432028789, + -.00046463433267, .0040171214504, 10, 2.2281388519863, + 0, .70240571372092, .54986275700055, 1.2774200557835, + .23031379083217, -.5227648584123, 1.9275762858541, 10, + 2.2281388519863, 0, -.76566360596606, .46482124106144, + -1.6472216377583, .13053265392051, -1.8013498724035, .27002266047141, + 10, 2.2281388519863, 0, 5.7915855647065, + 5.8518623033717, .98969956305525, .34566324660643, -7.2471761899099, + 18.830347319323, 10, 2.2281388519863, 0, + 13.018291494864, 7.3741002410906, 1.7654074489417, .10795348742173, + -3.412227750751, 29.44881074048, 10, 2.2281388519863, + 0, -140.99921608421, 84.973820309491, -1.6593253730463, + .12803894207791, -330.33268651749, 48.334254349065, 10, + 2.2281388519863, 0, -68.484290889814, 50.764306481463, + -1.3490638528633, .20706938025917, -181.5942144553, 44.625632675673, + 10, 2.2281388519863, 0]).reshape(7, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 1.011467379e-06, .00038778854684, -.00038909911416, .00356508765632, + .0056952104088, -.07926157334067, -.04218673068644, .00038778854684, + .30234905153625, -.10112236243026, .59175926747871, 1.4744074711876, + -25.6203584288, -14.793319880623, -.00038909911416, -.10112236243026, + .21605878614189, -2.3405630815795, -3.2257627901142, 31.66920792546, + 20.934058595259, .00356508765632, .59175926747871, -2.3405630815795, + 34.244292417623, 34.810403897967, -270.34292245471, -270.19382562804, + .0056952104088, 1.4744074711876, -3.2257627901142, 34.810403897967, + 54.377354365652, -414.2817137548, -324.24739845086, -.07926157334067, + -25.6203584288, 31.66920792546, -270.34292245471, -414.2817137548, + 7220.5501379896, 2907.4556071681, -.04218673068644, -14.793319880623, + 20.934058595259, -270.19382562804, -324.24739845086, 2907.4556071681, + 2577.0148125439]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 17, -55.235569128348, -47.541220455815, 7, + 109.08244091163, 114.91493432002]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 23.018356323242, 11.030969619751, 7.6487560272217, 3.2376720905304, + 1.3298480510712, 2.4579885005951, 6.7120413780212, 2.8951823711395, + .90416890382767, 2.1985862255096, 1.9608836174011, 2.5452246665955, + 4.6054129600525, 2.8738057613373, 2.9902882575989, 1.8505314588547, + 1.4887162446976, 1.47836124897, 5.9044842720032, 4.8891386985779, + 7.0818486213684, 4.6786789894104, 7.5460968017578, 5.5129766464233, + 4.1125593185425, 2.3989260196686, -2.7979807853699, 3.8943622112274, + -1.4647831916809, 2.8729522228241, -3.5234127044678, 3.7701880931854, + 3.9779393672943, 1.9573417901993]).reshape(17, 2) + +predicted_colnames = 'predict_mu predict_std'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_wls_aweight_robust = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + **est +) + +est = dict( + rank=7, + ll_0=-55.23556912834824, + ll=-47.54122045581504, + r2_a=.3528737432046668, + rss=267.3132086911238, + mss=393.6105745962962, + rmse=5.17023412130557, + r2=.5955460895029168, + F=1.412187242235973, + df_r=8, + df_m=6, + N=17, + N_clust=9, + cmdline="regress executions income perpoverty perblack LN_VC100k96 south degree [aweight=fweight], vce(cluster id)", # noqa:E501 + title="Linear regression", + marginsok="XB default", + vce="cluster", + depvar="executions", + cmd="regress", + properties="b V", + predict="regres_p", + model="ols", + estat_cmd="regress_estat", + wexp="= fweight", + wtype="aweight", + vcetype="Robust", + clustvar="id", +) + +params_table = np.array([ + .00177624355887, .00103574504038, 1.7149428571794, .12469817836724, + -.00061218878728, .00416467590501, 8, 2.3060041352042, + 0, .70240571372092, .64463869959516, 1.0896114585768, + .30761438040884, -.78413379325815, 2.1889452207, 8, + 2.3060041352042, 0, -.76566360596606, .50850811868177, + -1.5057057652313, .17056206446331, -1.9382854304311, .40695821849901, + 8, 2.3060041352042, 0, 5.7915855647065, + 6.2948340440059, .92005373362009, .3844480847801, -8.7243277711951, + 20.307498900608, 8, 2.3060041352042, 0, + 13.018291494864, 7.9526248350517, 1.6369804642972, .14027059672576, + -5.3204942604922, 31.357077250221, 8, 2.3060041352042, + 0, -140.99921608421, 84.897180497105, -1.6608233071889, + .13532738016362, -336.77246537771, 54.774033209288, 8, + 2.3060041352042, 0, -68.484290889814, 50.203382265366, + -1.3641369923608, .2096627597382, -184.25349799498, 47.284916215355, + 8, 2.3060041352042, 0]).reshape(7, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 1.072767789e-06, .00042569049255, -.00044272344175, .00386796354086, + .00653558563917, -.08376884119522, -.04513384476642, .00042569049255, + .41555905301573, -.07730648264729, -.34087330734824, .82631440946934, + -31.768811666606, -10.324414524804, -.00044272344175, -.07730648264729, + .25858050676528, -2.8727606144729, -3.9481543148554, 35.836754991381, + 24.653552354067, .00386796354086, -.34087330734824, -2.8727606144729, + 39.624935641576, 42.351437415382, -335.98208369348, -283.16728769825, + .00653558563917, .82631440946934, -3.9481543148554, 42.351437415382, + 63.24424176708, -502.21726015398, -366.49477518415, -.08376884119522, + -31.768811666606, 35.836754991381, -335.98208369348, -502.21726015398, + 7207.531256358, 3532.1379707168, -.04513384476642, -10.324414524804, + 24.653552354067, -283.16728769825, -366.49477518415, 3532.1379707168, + 2520.3795908825]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 17, -55.235569128348, -47.541220455815, 7, + 109.08244091163, 114.91493432002]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 23.018356323242, 11.727355003357, 7.6487560272217, 3.4638004302979, + 1.3298480510712, 2.1195623874664, 6.7120413780212, 2.8227334022522, + .90416890382767, 2.2036759853363, 1.9608836174011, 2.0707910060883, + 4.6054129600525, 2.9022018909454, 2.9902882575989, 1.6939970254898, + 1.4887162446976, 1.8477793931961, 5.9044842720032, 4.8752007484436, + 7.0818486213684, 4.4365234375, 7.5460968017578, 5.6850047111511, + 4.1125593185425, 2.7407164573669, -2.7979807853699, 3.9614858627319, + -1.4647831916809, 2.4376966953278, -3.5234127044678, 3.5529434680939, + 3.9779393672943, 1.7075037956238]).reshape(17, 2) + +predicted_colnames = 'predict_mu predict_std'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_wls_aweight_clu1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + **est +) + +est = dict( + rank=7, + ll_0=-107.2219871314995, + ll=-92.28589853187629, + r2_a=.5022105716958969, + rss=518.9021109886529, + mss=764.067585981045, + rmse=4.467412394167744, + r2=.5955460895029162, + F=1.835843414931295, + df_r=8, + df_m=6, + N=33, + N_clust=9, + cmdline="regress executions income perpoverty perblack LN_VC100k96 south degree [fweight=fweight], vce(cluster id)", # noqa:E501 + title="Linear regression", + marginsok="XB default", + vce="cluster", + depvar="executions", + cmd="regress", + properties="b V", + predict="regres_p", + model="ols", + estat_cmd="regress_estat", + wexp="= fweight", + wtype="fweight", + vcetype="Robust", + clustvar="id", +) + +params_table = np.array([ + .00177624355887, .00090840849363, 1.9553357012053, .08627786102497, + -.00031855018389, .00387103730162, 8, 2.3060041352042, + 0, .70240571372091, .56538554103558, 1.2423482079757, + .24928937729829, -.60137568189177, 2.0061871093336, 8, + 2.3060041352042, 0, -.76566360596606, .44599112337258, + -1.7167687109468, .12435346910262, -1.7941209807276, .26279376879547, + 8, 2.3060041352042, 0, 5.7915855647065, + 5.5209346785031, 1.0490226568442, .32482245151877, -6.9397126341137, + 18.522883763527, 8, 2.3060041352042, 0, + 13.018291494864, 6.9749133861223, 1.866444896759, .09894610636006, + -3.0658876162246, 29.102470605953, 8, 2.3060041352042, + 0, -140.99921608421, 74.459752971542, -1.8936299202886, + .09489418422765, -312.70371434287, 30.705282174445, 8, + 2.3060041352042, 0, -68.484290889814, 44.031279012175, + -1.5553554751584, .15847103736706, -170.02060237022, 33.05202059059, + 8, 2.3060041352042, 0]).reshape(7, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 8.252059913e-07, .00032745422504, -.00034055649365, .00297535656989, + .0050273735686, -.06443757015017, -.03471834212801, .00032745422504, + .31966081001209, -.05946652511329, -.26221023642171, .63562646882257, + -24.437547435849, -7.9418573267692, -.00034055649365, -.05946652511329, + .19890808212714, -2.2098158572872, -3.037041780658, 27.566734608754, + 18.96427104159, .00297535656989, -.26221023642171, -2.2098158572872, + 30.480719724298, 32.578028781062, -258.44775668729, -217.82099053713, + .0050273735686, .63562646882257, -3.037041780658, 32.578028781062, + 48.649416743908, -386.32096934921, -281.91905783396, -.06443757015017, + -24.437547435849, 27.566734608754, -258.44775668729, -386.32096934921, + 5544.254812583, 2717.0292082435, -.03471834212801, -7.9418573267692, + 18.96427104159, -217.82099053713, -281.91905783396, 2717.0292082435, + 1938.753531448]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 33, -107.2219871315, -92.285898531876, 7, + 198.57179706375, 209.04734999402]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 23.018356323242, 10.285571098328, 7.6487560272217, 3.0379540920258, + 1.3298480510712, 1.8589791059494, 6.7120413780212, 2.4757008552551, + .90416890382767, 1.9327516555786, 1.9608836174011, 1.8162038326263, + 4.6054129600525, 2.5453994274139, 2.9902882575989, 1.485733628273, + 1.4887162446976, 1.6206097602844, 5.9044842720032, 4.2758340835571, + 7.0818486213684, 3.8910882472992, 7.5460968017578, 4.9860787391663, + 4.1125593185425, 2.4037673473358, -2.7979807853699, 3.4744529724121, + -1.4647831916809, 2.1380014419556, -3.5234127044678, 3.1161375045776, + 3.9779393672943, 1.4975799322128]).reshape(17, 2) + +predicted_colnames = 'predict_mu predict_std'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_wls_fweight_clu1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + **est +) + +est = dict( + rank=7, + ll_0=-55.23556912834824, + ll=-47.54122045581504, + r2_a=.3528737432046668, + rss=267.3132086911238, + mss=393.6105745962962, + rmse=5.17023412130557, + r2=.5955460895029168, + F=1.412187242235973, + df_r=8, + df_m=6, + N=17, + N_clust=9, + cmdline="regress executions income perpoverty perblack LN_VC100k96 south degree [pweight=fweight], vce(cluster id)", # noqa:E501 + title="Linear regression", + marginsok="XB default", + vce="cluster", + depvar="executions", + cmd="regress", + properties="b V", + predict="regres_p", + model="ols", + estat_cmd="regress_estat", + wexp="= fweight", + wtype="pweight", + vcetype="Robust", + clustvar="id", +) + +params_table = np.array([ + .00177624355887, .00103574504038, 1.7149428571794, .12469817836724, + -.00061218878728, .00416467590501, 8, 2.3060041352042, + 0, .70240571372092, .64463869959516, 1.0896114585768, + .30761438040884, -.78413379325815, 2.1889452207, 8, + 2.3060041352042, 0, -.76566360596606, .50850811868177, + -1.5057057652313, .17056206446331, -1.9382854304311, .40695821849901, + 8, 2.3060041352042, 0, 5.7915855647065, + 6.2948340440059, .92005373362009, .3844480847801, -8.7243277711951, + 20.307498900608, 8, 2.3060041352042, 0, + 13.018291494864, 7.9526248350517, 1.6369804642972, .14027059672576, + -5.3204942604922, 31.357077250221, 8, 2.3060041352042, + 0, -140.99921608421, 84.897180497105, -1.6608233071889, + .13532738016362, -336.77246537771, 54.774033209288, 8, + 2.3060041352042, 0, -68.484290889814, 50.203382265366, + -1.3641369923608, .2096627597382, -184.25349799498, 47.284916215355, + 8, 2.3060041352042, 0]).reshape(7, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov = np.array([ + 1.072767789e-06, .00042569049255, -.00044272344175, .00386796354086, + .00653558563917, -.08376884119522, -.04513384476642, .00042569049255, + .41555905301573, -.07730648264729, -.34087330734824, .82631440946934, + -31.768811666606, -10.324414524804, -.00044272344175, -.07730648264729, + .25858050676528, -2.8727606144729, -3.9481543148554, 35.836754991381, + 24.653552354067, .00386796354086, -.34087330734824, -2.8727606144729, + 39.624935641576, 42.351437415382, -335.98208369348, -283.16728769825, + .00653558563917, .82631440946934, -3.9481543148554, 42.351437415382, + 63.24424176708, -502.21726015398, -366.49477518415, -.08376884119522, + -31.768811666606, 35.836754991381, -335.98208369348, -502.21726015398, + 7207.531256358, 3532.1379707168, -.04513384476642, -10.324414524804, + 24.653552354067, -283.16728769825, -366.49477518415, 3532.1379707168, + 2520.3795908825]).reshape(7, 7) + +cov_colnames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +cov_rownames = ['income', 'perpoverty', 'perblack', 'LN_VC100k96', + 'south', 'degree', '_cons'] + +infocrit = np.array([ + 17, -55.235569128348, -47.541220455815, 7, + 109.08244091163, 114.91493432002]) + +infocrit_colnames = 'N ll0 ll df AIC BIC'.split() + +infocrit_rownames = '.'.split() + +predicted = np.array([ + 23.018356323242, 11.727355003357, 7.6487560272217, 3.4638004302979, + 1.3298480510712, 2.1195623874664, 6.7120413780212, 2.8227334022522, + .90416890382767, 2.2036759853363, 1.9608836174011, 2.0707910060883, + 4.6054129600525, 2.9022018909454, 2.9902882575989, 1.6939970254898, + 1.4887162446976, 1.8477793931961, 5.9044842720032, 4.8752007484436, + 7.0818486213684, 4.4365234375, 7.5460968017578, 5.6850047111511, + 4.1125593185425, 2.7407164573669, -2.7979807853699, 3.9614858627319, + -1.4647831916809, 2.4376966953278, -3.5234127044678, 3.5529434680939, + 3.9779393672943, 1.7075037956238]).reshape(17, 2) + +predicted_colnames = 'predict_mu predict_std'.split() + +predicted_rownames = ['r'+str(n) for n in range(1, 18)] + + +results_wls_pweight_clu1 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + infocrit=infocrit, + infocrit_colnames=infocrit_colnames, + infocrit_rownames=infocrit_rownames, + predicted=predicted, + predicted_colnames=predicted_colnames, + predicted_rownames=predicted_rownames, + **est +) diff --git a/statsmodels/genmod/tests/results/results_tweedie_aweights_nonrobust.csv b/statsmodels/genmod/tests/results/results_tweedie_aweights_nonrobust.csv new file mode 100644 index 0000000..3f4d295 --- /dev/null +++ b/statsmodels/genmod/tests/results/results_tweedie_aweights_nonrobust.csv @@ -0,0 +1,6367 @@ +"V1","V2","V3","V4" +-0.519169169314285,-1.28597017046844,-1.83732558009613,-0.823711600363306 +2.55470518335245,3.46019223842148,2.14470065506344,3.77879183101721 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +3.9285319711191,4.9707908554308,2.78716847707543,5.32224747458835 +3.9285319711191,11.1150262546776,6.23229817948523,5.32224747458835 +0.456427735358922,0.936212452453672,0.754061752268104,1.15333574263992 +1.43034023535892,2.93387591473929,1.8409025549039,3.6142906965945 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +2.47826601370958,6.66277185346354,4.33930026616874,3.14341802629572 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +0.0283851581460693,0.0521256897982289,0.0513137921716348,0.0621849812720575 +1.21160151370958,2.52314642036336,1.93144919501018,1.53678822927528 +2.34335501470978,2.49283729372366,1.71276653090862,2.53799517068018 +0.822924947354005,2.97421786691875,2.27892772058348,1.52907233851526 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +1.43034023535892,2.93387591473929,1.8409025549039,3.6142906965945 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +1.46683159848559,2.25286218301195,1.54587851717011,2.55174637186151 +6.84292485811198,15.3360638586038,7.93131450916863,6.86302362161176 +2.08899075814607,3.83616267664049,2.2509867523765,4.57647093260261 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +-0.1159118288809,-0.146663808077221,-0.153141534122139,-0.157033579737052 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +3.94861661590271,10.0019177844573,5.84589038108785,4.63788746640781 +-0.621731886290424,-1.29474960667264,-1.79670790333476,-0.788601065453334 +0.122455121883439,0.211869646618993,0.199759999993878,0.248423207212782 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +10.4116004137096,12.5181315494737,5.14236136002463,13.2060126887081 +0.653304323441277,2.37353071975664,1.8934044011433,1.22210411533563 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +0.0283851581460693,0.0521256897982289,0.0513137921716348,0.0621849812720575 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +0.33750639232285,0.700500862135012,0.589090553001156,0.865919874743029 +0.5951989711191,1.68400110763546,1.42983134173056,0.806356227772743 +5.79900459941364,5.03163247473894,2.90585179904735,4.82849859090418 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +-0.597071441888021,-1.03651134897035,-1.27882510646766,-0.598825136097998 +0.54861701590271,1.38965689049524,1.2127339756032,0.644383648608929 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +1.01476192188344,1.75572280264849,1.26573282672177,2.05863509271296 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +-0.597071441888021,-1.33813039757238,-1.65095611335372,-0.598825136097998 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +-0.500356626735197,-0.765958550920511,-1.14079570321206,-0.866749001502204 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +3.94861661590271,10.0019177844573,5.84589038108785,4.63788746640781 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +3.80292775811198,6.60185281703142,4.08141010801567,3.8140975644743 +2.58381792792892,5.990050283289,2.98859525327338,7.64622629356468 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +0.194688027928922,1.00923617504171,0.891559695168648,0.57613530044108 +0.0283851581460693,0.0521256897982289,0.0513137921716348,0.0621849812720575 +6.98861371590271,7.91670287715962,3.85595323093946,8.20854671735228 +0.703052730685715,1.00542405743706,0.814202170898802,1.11546047832118 +1.08678718468928,2.12521303182019,1.45414807030024,2.5820296997667 +0.41002351470978,0.975325571652453,0.883273662226039,0.444080258290533 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +1.08678718468928,2.12521303182019,1.45414807030024,2.5820296997667 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +6.07669051470978,6.46432172777775,3.38918036936393,6.58142325138111 +0.101222957714638,0.252039029503179,0.242297511704601,0.161685167931112 +1.01476192188344,1.75572280264849,1.26573282672177,2.05863509271296 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +26.0286070159027,29.4852107195965,8.68245008981054,30.572162858488 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +1.21160151370958,3.25736802203672,2.49349018877338,1.53678822927528 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +0.703052730685715,1.00542405743706,0.814202170898802,1.11546047832118 +2.08899075814607,3.83616267664049,2.2509867523765,4.57647093260261 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +-0.0497249765587228,-0.180656633006219,-0.185215938777091,-0.0930180565272886 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +-0.0497249765587228,-0.139936026202998,-0.143467649267169,-0.0930180565272886 +-0.75664288529022,-0.80490902600848,-1.14576444568963,-0.819489994790195 +0.930411673264803,3.18482640756811,2.41563047092612,1.61171721467986 +-0.473967276558723,-0.770092122529914,-1.17269954834902,-0.886627163533382 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.258608530685715,0.369831773437915,0.337157061380252,0.410307197093554 +3.80292775811198,8.5229553381584,5.26907779246244,3.8140975644743 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +0.365027973264803,1.24950144345829,1.0927439406395,0.632324255225828 +0.831627383352449,1.95096216375177,1.55459616837316,1.23010153310082 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +-0.6270229288809,-0.793375200695834,-1.16100238458221,-0.849470291772813 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +-0.3492452288809,-0.988122259630304,-1.15121359640526,-0.473146088943221 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +0.136862935358922,0.280729619249858,0.259281337378191,0.345835502454588 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +4.04861701590271,4.58627408542844,2.66074862114657,4.75534394469134 +4.67630102188344,18.0916946513655,8.38037231397769,9.48675465657108 +1.24050575814607,2.27802917317876,1.53936339465726,2.71764655814944 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.343981115310721,-0.672655290067114,-0.955644031925754,-0.817243217810937 +1.4396422711191,3.15508029473595,2.30135603732428,1.9503805742458 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +2.18057742344128,3.54295661200706,2.14933632888494,4.07909843449104 +0.266243683352449,0.360610818292528,0.329832896214191,0.393814308699183 +5.95816251213034,12.9063180155395,7.07696872859033,5.71889817894107 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +3.9285319711191,4.9707908554308,2.78716847707543,5.32224747458835 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +-0.0497249765587228,-0.0807921023976277,-0.082831085924403,-0.0930180565272886 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +10.202928358112,17.7122037565111,7.98721446128919,10.2328959886686 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +0.703052730685715,1.00542405743706,0.814202170898802,1.11546047832118 +0.54861701590271,1.38965689049524,1.2127339756032,0.644383648608929 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +1.25326751370958,3.36938628420498,2.56249660482886,1.58963713845578 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.413928542285362,-0.595050085851487,-0.759014224848206,-0.661175166008914 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +6.7934669534005,9.2316570143695,4.18370788341175,10.09130193834 +-0.205065186290424,-0.427045926301025,-0.460301270949546,-0.260103475407846 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +-0.519169169314285,-0.742455224089781,-1.06078041825749,-0.823711600363306 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +-0.185746772071078,-0.962885924551043,-1.16009591380323,-0.549675670720755 +3.9934657534005,5.42672929549919,2.94155472452071,5.9320622260204 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +0.79811139232285,1.65649519866614,1.19559729037625,2.04766645192929 +1.43034023535892,2.93387591473929,1.8409025549039,3.6142906965945 +0.54861701590271,1.38965689049524,1.2127339756032,0.644383648608929 +2.6534894732648,4.06202864761973,2.38044875234785,4.59654020464499 +3.94861661590271,4.47299361428212,2.61436165622492,4.63788746640781 +0.79811139232285,2.86913384658365,2.07083525232335,2.04766645192929 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +10.4116004137096,12.5181315494737,5.14236136002463,13.2060126887081 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +4.2396434711191,5.36444176894973,2.93750912830946,5.74373122662683 +3.80292775811198,8.5229553381584,5.26907779246244,3.8140975644743 +2.18057742344128,3.54295661200706,2.14933632888494,4.07909843449104 +-0.326981311521292,-0.418641632552171,-0.483106798916473,-0.449779528495782 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +-0.519169169314285,-0.742455224089781,-1.06078041825749,-0.823711600363306 +-0.308049026735197,-1.05446084068282,-1.26111075200958,-0.533621765097082 +0.192699323441277,0.542294425066919,0.499362671384097,0.360473102274126 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +0.116374457714638,0.16729610060636,0.159942613217704,0.185886918968801 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +3.80292775811198,8.5229553381584,5.26907779246244,3.8140975644743 +6.67826871370958,8.02945204954952,3.86894974952154,8.47067673243792 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +0.183818427928922,0.952889651606598,0.846760862787146,0.543969171232762 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +1.48816532792892,5.97558419687284,3.54605151026428,4.40388958393141 +3.90292815811198,8.74707186027217,5.36855379594562,3.91439168162467 +-0.6270229288809,-0.793375200695834,-1.16100238458221,-0.849470291772813 +3.77816723535892,7.74967632151879,3.58178811392836,9.54695557837628 +-0.241391469314285,-0.345209939334061,-0.38824088969558,-0.382990680601358 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +0.5951989711191,1.68400110763546,1.42983134173056,0.806356227772743 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +3.87826751370958,10.4266497170204,5.98805049555438,4.91917168937959 +-0.519169169314285,-0.742455224089781,-1.06078041825749,-0.823711600363306 +0.514252827928922,2.06493258114397,1.58364101587791,1.52181523781047 +0.41002351470978,0.436178855681745,0.395011990294522,0.444080258290533 +-0.0497249765587228,-0.0807921023976277,-0.082831085924403,-0.0930180565272886 +0.365027973264803,1.24950144345829,1.0927439406395,0.632324255225828 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +2.25868755814607,4.14778901005858,2.37786473480038,4.94823536934186 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +2.77008958335245,8.38954204318069,5.08304920985784,4.09737763753305 +0.430147421883439,0.744233322925142,0.625200275230135,0.872634810819172 +2.3729766711191,3.00253907150698,1.94403268340376,3.21483169488449 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +-0.205065186290424,-0.427045926301025,-0.460301270949546,-0.260103475407846 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +1.08678718468928,2.12521303182019,1.45414807030024,2.5820296997667 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.730830430685715,2.33702306084496,1.88067653931448,1.15953245923567 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +2.01088062344128,3.26723679892763,2.02765580388689,3.76165501616668 +4.26994507840119,6.98351582670726,3.42330355155261,8.05567753255396 +0.00990542792892218,0.0513483869628928,0.0509652403659611,0.029312879464322 +0.00990542792892218,0.0229636967567985,0.022792348389581,0.029312879464322 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +0.402928158111979,0.699480128177213,0.638466345730688,0.404111622482144 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +-0.322452176558723,-1.17150632446919,-1.44857709919189,-0.603195352964424 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +0.5951989711191,1.68400110763546,1.42983134173056,0.806356227772743 +0.285960958146069,0.525130496790642,0.459726095968714,0.626470944264067 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +3.87826751370958,4.66293950896731,2.67793759215218,4.91917168937959 +24.602919358112,24.6589044710358,7.93177802569779,24.6751820627063 +3.90292815811198,8.74707186027217,5.36855379594562,3.91439168162467 +0.54861701590271,1.07642359876609,0.939379698178225,0.644383648608929 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +-0.243571864641078,-1.11715776725399,-1.3901101099406,-0.615475606825472 +-0.75664288529022,-0.80490902600848,-1.14576444568963,-0.819489994790195 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +2.47826601370958,6.66277185346354,4.33930026616874,3.14341802629572 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +1.5765660732648,4.18021305101833,2.82133160680209,2.73102622567584 +0.345797173264803,1.18367385182485,1.04134229137205,0.599011462294818 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +0.136862935358922,0.280729619249858,0.259281337378191,0.345835502454588 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +2.55470518335245,3.46019223842148,2.14470065506344,3.77879183101721 +-0.243571864641078,-1.11715776725399,-1.3901101099406,-0.615475606825472 +-0.500356626735197,-0.765958550920511,-1.14079570321206,-0.866749001502204 +2.8688738732648,4.39174452245752,2.514446153392,4.96964251540533 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +3.94861661590271,4.47299361428212,2.61436165622492,4.63788746640781 +0.183818427928922,0.952889651606598,0.846760862787146,0.543969171232762 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +1.25326751370958,2.60991539313312,1.98490133504304,1.58963713845578 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +6.98861371590271,7.91670287715962,3.85595323093946,8.20854671735228 +0.514252827928922,2.66581649927057,2.04447176028872,1.52181523781047 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +1.5765660732648,2.41344713027542,1.62889656266039,2.73102622567584 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +-0.6270229288809,-1.77404088041842,-2.59608025396518,-0.849470291772813 +0.502172684689279,0.981999004736992,0.786524961857392,1.19308067351752 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +1.60990472792892,6.46441700403761,3.74829539516386,4.76414987595165 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +-0.500356626735197,-0.765958550920511,-1.14079570321206,-0.866749001502204 +10.202928358112,10.2261456067632,4.61142041930058,10.2328959886686 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +1.21160151370958,3.25736802203672,2.49349018877338,1.53678822927528 +2.34861721590271,2.66051400554222,1.79119219920575,2.7585920357919 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +0.285960958146069,0.525130496790642,0.459726095968714,0.626470944264067 +1.25326751370958,3.36938628420498,2.56249660482886,1.58963713845578 +-0.243571864641078,-0.499608141834362,-0.62167614040738,-0.615475606825472 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +0.544934513709576,1.13481994867196,0.982312129951437,0.691191730052151 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +6.54335771470978,15.5647270819163,7.96493290666894,7.0868520457721 +-0.500356626735197,-0.765958550920511,-1.14079570321206,-0.866749001502204 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +-0.599140916647551,-0.811499801626456,-1.23516250894671,-0.886219206900784 +-0.3492452288809,-0.988122259630304,-1.15121359640526,-0.473146088943221 +15.2618659711191,19.3109141948611,6.67039742615329,20.676280152343 +4.2396434711191,5.36444176894973,2.93750912830946,5.74373122662683 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +-0.500356626735197,-0.765958550920511,-1.14079570321206,-0.866749001502204 +0.194688027928922,1.00923617504171,0.891559695168648,0.57613530044108 +3.90292815811198,6.77545272858273,4.1584638889832,3.91439168162467 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +-0.223698778116561,-0.3870395973618,-0.447365711609579,-0.453814973637393 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +0.703052730685715,1.00542405743706,0.814202170898802,1.11546047832118 +1.3684657534005,1.85961108782322,1.34434200205067,2.03277666684313 +10.202928358112,22.8663567245333,10.3114495303867,10.2328959886686 +3.94861661590271,4.47299361428212,2.61436165622492,4.63788746640781 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +3.94861661590271,4.47299361428212,2.61436165622492,4.63788746640781 +-0.621731886290424,-1.29474960667264,-1.79670790333476,-0.788601065453334 +2.47826601370958,6.66277185346354,4.33930026616874,3.14341802629572 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +1.07669051470978,1.14537244763123,0.920859352191939,1.16612092896603 +0.136862935358922,0.280729619249858,0.259281337378191,0.345835502454588 +0.731414458146069,3.00337139502384,2.28059479586148,1.60235127625046 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +-0.243571864641078,-0.499608141834362,-0.62167614040738,-0.615475606825472 +-0.0497249765587228,-0.0807921023976277,-0.082831085924403,-0.0930180565272886 +0.544934513709576,1.46504625405015,1.26815950669315,0.691191730052151 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +-0.205065186290424,-0.427045926301025,-0.460301270949546,-0.260103475407846 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +-0.621731886290424,-1.67151455471724,-2.31953992920492,-0.788601065453334 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +2.6534894732648,4.06202864761973,2.38044875234785,4.59654020464499 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +0.958162512130339,0.928205613165108,0.774005983074296,0.919685193983162 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +0.402928158111979,0.699480128177213,0.638466345730688,0.404111622482144 +2.32538449232285,4.82637922931352,2.61139909795933,5.96609929211482 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +4.07301788847871,5.21477772021197,2.87785669772671,5.60264455760968 +0.365027973264803,1.24950144345829,1.0927439406395,0.632324255225828 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +0.703052730685715,2.24819653864291,1.82061140155762,1.11546047832118 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +0.958162512130339,0.928205613165108,0.774005983074296,0.919685193983162 +-0.75664288529022,-1.39414332851747,-1.98452223344043,-0.819489994790195 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +2.34861721590271,5.94909017148265,4.0052275181914,2.7585920357919 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +0.0950820923228503,0.197344670088632,0.186247147328048,0.243946412119357 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +0.0381048732648031,0.130434097204455,0.128281592098255,0.0660076415298784 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +4.03638573068571,5.77236833255576,3.05327309043773,6.40411246742201 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +5.36171775814607,9.84610461596033,4.22389754654562,11.7462202134161 +0.183818427928922,0.952889651606598,0.846760862787146,0.543969171232762 +0.207850823441277,0.58493377550504,0.535546278902363,0.388816264624516 +2.08899075814607,3.83616267664049,2.2509867523765,4.57647093260261 +1.54749603068571,2.2130484245787,1.53258601351772,2.45525063376856 +2.18057742344128,3.54295661200706,2.14933632888494,4.07909843449104 +15.802916358112,35.4168048671292,13.5765297200171,15.8493320480507 +4.17301828847871,5.34281051363706,2.92622873277125,5.7402002257062 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +-0.244342041853931,-1.00332976868671,-1.2008692306854,-0.535294015924552 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +4.2396434711191,5.36444176894973,2.93750912830946,5.74373122662683 +0.365027973264803,0.967859656315214,0.846435816753171,0.632324255225828 +1.25326751370958,3.36938628420498,2.56249660482886,1.58963713845578 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +-0.75664288529022,-0.80490902600848,-1.14576444568963,-0.819489994790195 +3.75060899954069,3.36697095067696,2.17145253764333,3.2631283029824 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +2.01088062344128,3.26723679892763,2.02765580388689,3.76165501616668 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +1.21160151370958,3.25736802203672,2.49349018877338,1.53678822927528 +3.94861661590271,4.47299361428212,2.61436165622492,4.63788746640781 +3.87826751370958,8.07644814215165,4.63832396910623,4.91917168937959 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +3.94861661590271,4.47299361428212,2.61436165622492,4.63788746640781 +0.192699323441277,0.700099092341768,0.644674436662752,0.360473102274126 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.703052730685715,1.00542405743706,0.814202170898802,1.11546047832118 +-0.326981311521292,-0.936111148598142,-1.08025964276956,-0.449779528495782 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +0.258608530685715,0.369831773437915,0.337157061380252,0.410307197093554 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +2.58381792792892,5.990050283289,2.98859525327338,7.64622629356468 +0.5951989711191,1.3044216489734,1.10754259488157,0.806356227772743 +-0.0497249765587228,-0.0807921023976277,-0.082831085924403,-0.0930180565272886 +6.67826871370958,8.02945204954952,3.86894974952154,8.47067673243792 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +3.87826751370958,4.66293950896731,2.67793759215218,4.91917168937959 +3.87826751370958,10.4266497170204,5.98805049555438,4.91917168937959 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +0.449378221883439,0.777506106762464,0.649154062145139,0.911648099441065 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +3.83599232792892,19.8852608746016,8.63771143817338,11.351753961717 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +-0.473967276558723,-0.770092122529914,-1.17269954834902,-0.886627163533382 +0.247012883352449,0.579481627260966,0.533074015545376,0.365369073445633 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +0.194688027928922,1.00923617504171,0.891559695168648,0.57613530044108 +-0.473967276558723,-0.770092122529914,-1.17269954834902,-0.886627163533382 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +0.00990542792892218,0.0229636967567985,0.022792348389581,0.029312879464322 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +2.77008958335245,8.38954204318069,5.08304920985784,4.09737763753305 +1.5765660732648,4.18021305101833,2.82133160680209,2.73102622567584 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +-0.241391469314285,-0.345209939334061,-0.38824088969558,-0.382990680601358 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +0.731414458146069,3.00337139502384,2.28059479586148,1.60235127625046 +3.87826751370958,4.66293950896731,2.67793759215218,4.91917168937959 +3.9285319711191,4.9707908554308,2.78716847707543,5.32224747458835 +6.98861371590271,7.91670287715962,3.85595323093946,8.20854671735228 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +1.60990472792892,8.34552646652591,4.83902854737853,4.76414987595165 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +1.01476192188344,1.75572280264849,1.26573282672177,2.05863509271296 +0.653304323441277,1.83852898986583,1.46662474265277,1.22210411533563 +-0.294442372071078,-1.52634908535677,-2.28451526565964,-0.871335779094169 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +-0.243571864641078,-0.499608141834362,-0.62167614040738,-0.615475606825472 +2.08899075814607,3.83616267664049,2.2509867523765,4.57647093260261 +0.544934513709576,1.46504625405015,1.26815950669315,0.691191730052151 +1.01476192188344,1.75572280264849,1.26573282672177,2.05863509271296 +4.04861701590271,4.58627408542844,2.66074862114657,4.75534394469134 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +-0.244342041853931,-1.00332976868671,-1.2008692306854,-0.535294015924552 +0.502172684689279,0.981999004736992,0.786524961857392,1.19308067351752 +0.122455121883439,0.366968992525759,0.345994469309356,0.248423207212782 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +1.47778178335245,2.00156522566986,1.42384705298044,2.18586072762818 +-0.597071441888021,-1.33813039757238,-1.65095611335372,-0.598825136097998 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +17.1930168884787,22.0126117459196,7.20373291281237,23.6498746473968 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +-0.473967276558723,-0.770092122529914,-1.17269954834902,-0.886627163533382 +0.183818427928922,0.952889651606598,0.846760862787146,0.543969171232762 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +0.192699323441277,0.542294425066919,0.499362671384097,0.360473102274126 +0.33750639232285,0.700500862135012,0.589090553001156,0.865919874743029 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +-0.500356626735197,-0.765958550920511,-1.14079570321206,-0.866749001502204 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +15.802916358112,35.4168048671292,13.5765297200171,15.8493320480507 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +2.01088062344128,3.26723679892763,2.02765580388689,3.76165501616668 +0.54861701590271,1.38965689049524,1.2127339756032,0.644383648608929 +3.9934657534005,5.42672929549919,2.94155472452071,5.9320622260204 +1.60990472792892,3.73223289743511,2.16407935540009,4.76414987595165 +2.20292835811198,3.82426638415563,2.71388270245909,2.20939871062859 +1.07669051470978,1.14537244763123,0.920859352191939,1.16612092896603 +2.58381792792892,13.3941596220761,6.68270214355247,7.64622629356468 +2.55470518335245,3.46019223842148,2.14470065506344,3.77879183101721 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +2.01088062344128,3.26723679892763,2.02765580388689,3.76165501616668 +-0.473967276558723,-0.770092122529914,-1.17269954834902,-0.886627163533382 +0.653304323441277,2.37353071975664,1.8934044011433,1.22210411533563 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +3.80292775811198,8.5229553381584,5.26907779246244,3.8140975644743 +6.83638593068571,16.9335717532756,7.47800135223483,10.8465808998327 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +0.703052730685715,2.24819653864291,1.82061140155762,1.11546047832118 +0.0283851581460693,0.0521256897982289,0.0513137921716348,0.0621849812720575 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +1.25326751370958,3.36938628420498,2.56249660482886,1.58963713845578 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.35265789232285,0.731948085221933,0.611771922752704,0.904793168051259 +1.08678718468928,3.68097694802007,2.51865833948826,2.5820296997667 +-0.308049026735197,-1.05446084068282,-1.26111075200958,-0.533621765097082 +-0.416006378116561,-0.719766743662219,-1.04766693691979,-0.843947048381208 +2.34335501470978,2.49283729372366,1.71276653090862,2.53799517068018 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +0.544934513709576,1.46504625405015,1.26815950669315,0.691191730052151 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +2.34335501470978,2.49283729372366,1.71276653090862,2.53799517068018 +2.55470518335245,3.46019223842148,2.14470065506344,3.77879183101721 +1.07669051470978,1.14537244763123,0.920859352191939,1.16612092896603 +5.79900459941364,11.2510722513118,6.49768215520993,4.82849859090418 +6.98861371590271,7.91670287715962,3.85595323093946,8.20854671735228 +0.5951989711191,1.3044216489734,1.10754259488157,0.806356227772743 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +1.16239562344128,4.22311872392887,3.00773214920361,2.17443605389426 +0.449378221883439,0.777506106762464,0.649154062145139,0.911648099441065 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +3.90292815811198,8.74707186027217,5.36855379594562,3.91439168162467 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +-0.519169169314285,-1.28597017046844,-1.83732558009613,-0.823711600363306 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +-0.75664288529022,-0.80490902600848,-1.14576444568963,-0.819489994790195 +2.18057742344128,7.92229182578012,4.80606213789658,4.07909843449104 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +0.136862935358922,0.280729619249858,0.259281337378191,0.345835502454588 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +2.55470518335245,3.46019223842148,2.14470065506344,3.77879183101721 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +2.47826601370958,5.16096088560877,3.36120753301299,3.14341802629572 +-0.243571864641078,-0.499608141834362,-0.62167614040738,-0.615475606825472 +37.5486113159027,95.1113161479578,23.9754567845153,44.1031000836305 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +-0.243571864641078,-0.499608141834362,-0.62167614040738,-0.615475606825472 +0.456427735358922,0.936212452453672,0.754061752268104,1.15333574263992 +-0.500356626735197,-0.765958550920511,-1.14079570321206,-0.866749001502204 +0.731414458146069,3.00337139502384,2.28059479586148,1.60235127625046 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +3.94861661590271,10.0019177844573,5.84589038108785,4.63788746640781 +-0.322452176558723,-0.907444896929164,-1.12206299617353,-0.603195352964424 +2.01088062344128,3.26723679892763,2.02765580388689,3.76165501616668 +-0.75664288529022,-0.80490902600848,-1.14576444568963,-0.819489994790195 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +0.00990542792892218,0.0513483869628928,0.0509652403659611,0.029312879464322 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +-0.473967276558723,-1.72197833491398,-2.62223590729172,-0.886627163533382 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +2.25868755814607,4.14778901005858,2.37786473480038,4.94823536934186 +0.270809458146069,0.861360500825945,0.758568311589007,0.593277690983777 +0.429341010781951,1.75380417127865,1.45914699062054,0.934268471865579 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +2.25868755814607,4.14778901005858,2.37786473480038,4.94823536934186 +0.653304323441277,2.37353071975664,1.8934044011433,1.22210411533563 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +-0.597071441888021,-1.33813039757238,-1.65095611335372,-0.598825136097998 +3.87826751370958,4.66293950896731,2.67793759215218,4.91917168937959 +-0.0479196646410777,-0.17024594786461,-0.175926622274847,-0.12108699302073 +2.01088062344128,3.26723679892763,2.02765580388689,3.76165501616668 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +6.54335771470978,15.5647270819163,7.96493290666894,7.0868520457721 +-0.6270229288809,-0.793375200695834,-1.16100238458221,-0.849470291772813 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +2.20292835811198,4.93710667243187,3.50360750339482,2.20939871062859 +0.703052730685715,1.00542405743706,0.814202170898802,1.11546047832118 +-0.0497249765587228,-0.0807921023976277,-0.082831085924403,-0.0930180565272886 +10.4116004137096,12.5181315494737,5.14236136002463,13.2060126887081 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +-0.395857141853931,-1.25909821723772,-1.87621508822346,-0.867226767803147 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +-0.500356626735197,-1.7127353878055,-2.55089674082185,-0.866749001502204 +2.34861721590271,2.66051400554222,1.79119219920575,2.7585920357919 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +15.802916358112,15.8388766457493,6.0716086705009,15.8493320480507 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +-0.597071441888021,-1.33813039757238,-1.65095611335372,-0.598825136097998 +4.04861701590271,4.58627408542844,2.66074862114657,4.75534394469134 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +1.25326751370958,2.60991539313312,1.98490133504304,1.58963713845578 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +6.67826871370958,17.9544006048677,8.65123464146094,8.47067673243792 +1.11835651470978,1.18969631577255,0.950469461133994,1.21124772627918 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +15.9486052159027,18.0665828635101,6.48950596922976,18.7325950915625 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +1.16239562344128,4.22311872392887,3.00773214920361,2.17443605389426 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +0.125993335358922,0.577876403852594,0.536773642248726,0.318369384125165 +-0.597071441888021,-1.03651134897035,-1.27882510646766,-0.598825136097998 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +-0.395857141853931,-0.726940694658375,-1.08323328624345,-0.867226767803147 +1.11835651470978,2.66024183464848,2.12531432563321,1.21124772627918 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +2.34335501470978,2.49283729372366,1.71276653090862,2.53799517068018 +-0.597071441888021,-1.33813039757238,-1.65095611335372,-0.598825136097998 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +1.54749603068571,2.2130484245787,1.53258601351772,2.45525063376856 +10.202928358112,10.2261456067632,4.61142041930058,10.2328959886686 +0.514252827928922,2.06493258114397,1.58364101587791,1.52181523781047 +3.80292775811198,8.5229553381584,5.26907779246244,3.8140975644743 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +3.61626295814607,6.64080151377456,3.27381177873561,7.9223530540128 +-0.519169169314285,-1.66018035131459,-2.3719771244244,-0.823711600363306 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +4.04861701590271,4.58627408542844,2.66074862114657,4.75534394469134 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.35265789232285,0.731948085221933,0.611771922752704,0.904793168051259 +-0.406833316647551,-1.23214253975519,-1.52245156456212,-0.601767446025224 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +6.7285321711191,14.7460655271621,6.92688088410752,9.11559677220187 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +2.34861721590271,5.94909017148265,4.0052275181914,2.7585920357919 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +2.58381792792892,5.990050283289,2.98859525327338,7.64622629356468 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +4.04861701590271,4.58627408542844,2.66074862114657,4.75534394469134 +-0.621731886290424,-1.67151455471724,-2.31953992920492,-0.788601065453334 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +1.54749603068571,2.2130484245787,1.53258601351772,2.45525063376856 +0.1507547711191,0.19075075453132,0.181613337965809,0.204237665817496 +0.54861701590271,1.07642359876609,0.939379698178225,0.644383648608929 +0.247012883352449,0.334563873489561,0.307770426373117,0.365369073445633 +0.831627383352449,1.12638853042086,0.897546516291406,1.23010153310082 +-0.17764510767715,-0.36870576057971,-0.426512214869939,-0.455773380556783 +0.730830430685715,1.04514848580679,0.841064117119248,1.15953245923567 +-0.308049026735197,-1.05446084068282,-1.26111075200958,-0.533621765097082 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +-0.506533646599499,-0.688329673746886,-0.929910348150405,-0.752426412732505 +2.77008958335245,8.38954204318069,5.08304920985784,4.09737763753305 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +1.01476192188344,3.04100109819442,2.19231356468988,2.05863509271296 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.430147421883439,1.66415630118117,1.39799031496616,0.872634810819172 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +-0.17764510767715,-0.36870576057971,-0.426512214869939,-0.455773380556783 +2.25868755814607,4.14778901005858,2.37786473480038,4.94823536934186 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.930411673264803,3.18482640756811,2.41563047092612,1.61171721467986 +2.08899075814607,3.83616267664049,2.2509867523765,4.57647093260261 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +-0.3492452288809,-0.988122259630304,-1.15121359640526,-0.473146088943221 +1.60990472792892,6.46441700403761,3.74829539516386,4.76414987595165 +0.703052730685715,1.00542405743706,0.814202170898802,1.11546047832118 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +3.80292775811198,8.5229553381584,5.26907779246244,3.8140975644743 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +-0.500356626735197,-0.765958550920511,-1.14079570321206,-0.866749001502204 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +0.731414458146069,3.00337139502384,2.28059479586148,1.60235127625046 +0.703052730685715,1.00542405743706,0.814202170898802,1.11546047832118 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +0.731414458146069,2.32640147908061,1.76654113276376,1.60235127625046 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +3.74335651470978,8.9043462182711,5.41119755040082,4.0542814455471 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +0.79811139232285,1.65649519866614,1.19559729037625,2.04766645192929 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +-0.241391469314285,-0.771912890859539,-0.868133021004313,-0.382990680601358 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +0.33750639232285,1.21330308396364,1.02033476805685,0.865919874743029 +0.33750639232285,0.700500862135012,0.589090553001156,0.865919874743029 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +3.94861661590271,10.0019177844573,5.84589038108785,4.63788746640781 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +1.25326751370958,3.36938628420498,2.56249660482886,1.58963713845578 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +1.07669051470978,1.14537244763123,0.920859352191939,1.16612092896603 +-0.395857141853931,-0.726940694658375,-1.08323328624345,-0.867226767803147 +0.1507547711191,0.19075075453132,0.181613337965809,0.204237665817496 +0.521403484689279,1.76600739758199,1.40553866093218,1.23876992846073 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +1.5765660732648,2.41344713027542,1.62889656266039,2.73102622567584 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +0.183818427928922,0.952889651606598,0.846760862787146,0.543969171232762 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.703052730685715,1.00542405743706,0.814202170898802,1.11546047832118 +0.1507547711191,0.19075075453132,0.181613337965809,0.204237665817496 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +-0.223698778116561,-0.3870395973618,-0.447365711609579,-0.453814973637393 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +-0.597071441888021,-1.03651134897035,-1.27882510646766,-0.598825136097998 +-0.243571864641078,-0.499608141834362,-0.62167614040738,-0.615475606825472 +4.07301788847871,11.6605974699453,6.43508320561999,5.60264455760968 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +1.60990472792892,3.73223289743511,2.16407935540009,4.76414987595165 +8.27080875814607,33.9620172410753,12.3596594813099,18.1193314155026 +3.9285319711191,4.9707908554308,2.78716847707543,5.32224747458835 +2.08899075814607,3.83616267664049,2.2509867523765,4.57647093260261 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +1.11835651470978,1.18969631577255,0.950469461133994,1.21124772627918 +0.270809458146069,1.11201162492659,0.979307479248301,0.593277690983777 +-0.6270229288809,-1.37416615707034,-2.01091511780501,-0.849470291772813 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +0.136862935358922,0.280729619249858,0.259281337378191,0.345835502454588 +16.7706075995407,15.0551946683247,5.95654225134269,14.5908689290125 +56.602919358112,56.7317219927082,12.8122392217629,56.7691711748665 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +3.9285319711191,4.9707908554308,2.78716847707543,5.32224747458835 +1.54749603068571,2.2130484245787,1.53258601351772,2.45525063376856 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +-0.597071441888021,-1.03651134897035,-1.27882510646766,-0.598825136097998 +6.7285321711191,19.0370887362608,8.94256476843698,9.11559677220187 +-0.565443642285362,-0.812863220372279,-1.26346801598109,-0.903192836117525 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +0.1507547711191,0.19075075453132,0.181613337965809,0.204237665817496 +1.5765660732648,2.41344713027542,1.62889656266039,2.73102622567584 +6.67826871370958,17.9544006048677,8.65123464146094,8.47067673243792 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +3.94861661590271,4.47299361428212,2.61436165622492,4.63788746640781 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +3.80292775811198,8.5229553381584,5.26907779246244,3.8140975644743 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +0.703052730685715,1.74144555063303,1.4102395276296,1.11546047832118 +0.285960958146069,0.525130496790642,0.459726095968714,0.626470944264067 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +-0.322452176558723,-1.17150632446919,-1.44857709919189,-0.603195352964424 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +-0.6270229288809,-0.793375200695834,-1.16100238458221,-0.849470291772813 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +-0.473967276558723,-0.770092122529914,-1.17269954834902,-0.886627163533382 +0.207850823441277,0.755146257055083,0.691387273104067,0.388816264624516 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +-0.243571864641078,-0.865346685532193,-1.0767746610389,-0.615475606825472 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +10.2766894147098,10.932237952932,4.78285165297844,11.1302760108433 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +-0.621731886290424,-1.67151455471724,-2.31953992920492,-0.788601065453334 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +0.33750639232285,0.700500862135012,0.589090553001156,0.865919874743029 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +-0.500356626735197,-0.765958550920511,-1.14079570321206,-0.866749001502204 +0.0283851581460693,0.116556585762907,0.114741127479072,0.0621849812720575 +3.9285319711191,4.9707908554308,2.78716847707543,5.32224747458835 +3.94861661590271,4.47299361428212,2.61436165622492,4.63788746640781 +-0.322452176558723,-0.907444896929164,-1.12206299617353,-0.603195352964424 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +2.47826601370958,6.66277185346354,4.33930026616874,3.14341802629572 +-0.519169169314285,-0.742455224089781,-1.06078041825749,-0.823711600363306 +3.74335651470978,3.98214468784947,2.41996111247532,4.0542814455471 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +2.58381792792892,5.990050283289,2.98859525327338,7.64622629356468 +6.21160151370958,16.6997745607327,8.24813632193256,7.87875880246349 +0.456427735358922,0.936212452453672,0.754061752268104,1.15333574263992 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +0.5951989711191,1.68400110763546,1.42983134173056,0.806356227772743 +-0.75664288529022,-1.39414332851747,-1.98452223344043,-0.819489994790195 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +-0.308049026735197,-1.05446084068282,-1.26111075200958,-0.533621765097082 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +0.247012883352449,0.334563873489561,0.307770426373117,0.365369073445633 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +0.0381048732648031,0.0583319015865953,0.0573692720387198,0.0660076415298784 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +-0.185746772071078,-0.745848230016744,-0.898606430832638,-0.549675670720755 +0.0283851581460693,0.116556585762907,0.114741127479072,0.0621849812720575 +16.922926758112,16.9614356826735,6.3321522089606,16.9726320975228 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +0.0691427946102015,0.12548249370348,0.120981864323789,0.149186366906642 +6.84292485811198,15.3360638586038,7.93131450916863,6.86302362161176 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +2.47826601370958,6.66277185346354,4.33930026616874,3.14341802629572 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +0.194688027928922,0.781750979665326,0.690599170307587,0.57613530044108 +6.69060569954069,6.00624459535663,3.27516438375989,5.8210026224915 +0.456427735358922,0.936212452453672,0.754061752268104,1.15333574263992 +-0.621731886290424,-1.67151455471724,-2.31953992920492,-0.788601065453334 +2.25868755814607,4.14778901005858,2.37786473480038,4.94823536934186 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +3.94861661590271,4.47299361428212,2.61436165622492,4.63788746640781 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +0.653304323441277,2.37353071975664,1.8934044011433,1.22210411533563 +3.65060859954069,3.27719927842392,2.12860572643799,3.17612532944143 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +-0.597071441888021,-1.03651134897035,-1.27882510646766,-0.598825136097998 +4.04861701590271,4.58627408542844,2.66074862114657,4.75534394469134 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +2.34335501470978,2.49283729372366,1.71276653090862,2.53799517068018 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +2.34335501470978,2.49283729372366,1.71276653090862,2.53799517068018 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +2.20292835811198,4.93710667243187,3.50360750339482,2.20939871062859 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.183818427928922,0.738105150289148,0.655898143958968,0.543969171232762 +-0.6270229288809,-0.793375200695834,-1.16100238458221,-0.849470291772813 +1.55207963535892,7.1187114431013,4.36678757834312,3.92191091865906 +0.285960958146069,0.525130496790642,0.459726095968714,0.626470944264067 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +10.3486172159027,11.7229154476423,4.9662045157507,12.1550727125517 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +3.80292775811198,8.5229553381584,5.26907779246244,3.8140975644743 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +1.24050575814607,5.09382808595536,3.44212119252846,2.71764655814944 +6.21160151370958,12.9355897518272,6.38897892241866,7.87875880246349 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +0.285960958146069,0.525130496790642,0.459726095968714,0.626470944264067 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +3.9285319711191,11.1150262546776,6.23229817948523,5.32224747458835 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +3.9934657534005,5.42672929549919,2.94155472452071,5.9320622260204 +1.16239562344128,1.88863610875142,1.34509870874616,2.17443605389426 +6.7285321711191,19.0370887362608,8.94256476843698,9.11559677220187 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +0.41002351470978,0.436178855681745,0.395011990294522,0.444080258290533 +-0.0479196646410777,-0.17024594786461,-0.175926622274847,-0.12108699302073 +0.00990542792892218,0.0513483869628928,0.0509652403659611,0.029312879464322 +2.34335501470978,2.49283729372366,1.71276653090862,2.53799517068018 +-0.223698778116561,-0.3870395973618,-0.447365711609579,-0.453814973637393 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.194688027928922,1.00923617504171,0.891559695168648,0.57613530044108 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +0.285960958146069,0.525130496790642,0.459726095968714,0.626470944264067 +-0.0479196646410777,-0.0982915438280757,-0.101571282728004,-0.12108699302073 +2.20292835811198,4.93710667243187,3.50360750339482,2.20939871062859 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +-0.47555495798835,-0.922126208508661,-1.11122167892189,-0.550128280288605 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +10.202928358112,22.8663567245333,10.3114495303867,10.2328959886686 +-0.416006378116561,-0.719766743662219,-1.04766693691979,-0.843947048381208 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +2.20292835811198,4.93710667243187,3.50360750339482,2.20939871062859 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +-0.185746772071078,-0.745848230016744,-0.898606430832638,-0.549675670720755 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +0.285960958146069,0.525130496790642,0.459726095968714,0.626470944264067 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +-0.597071441888021,-1.33813039757238,-1.65095611335372,-0.598825136097998 +1.54749603068571,2.2130484245787,1.53258601351772,2.45525063376856 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +6.98861371590271,7.91670287715962,3.85595323093946,8.20854671735228 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +6.54335771470978,6.96075756127935,3.56202628310735,7.0868520457721 +-0.0898669465994985,-0.122120389136501,-0.126644188416478,-0.133492147475344 +1.11835651470978,2.06061446449556,1.64626139772669,1.21124772627918 +0.258608530685715,0.369831773437915,0.337157061380252,0.410307197093554 +-0.185746772071078,-0.962885924551043,-1.16009591380323,-0.549675670720755 +0.456427735358922,0.936212452453672,0.754061752268104,1.15333574263992 +-0.243571864641078,-0.499608141834362,-0.62167614040738,-0.615475606825472 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +-0.75664288529022,-0.80490902600848,-1.14576444568963,-0.819489994790195 +1.25326751370958,3.36938628420498,2.56249660482886,1.58963713845578 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +-0.322452176558723,-1.17150632446919,-1.44857709919189,-0.603195352964424 +0.1507547711191,0.330389998430346,0.314563528688958,0.204237665817496 +-0.352267464641078,-0.722561670648513,-1.1049215932355,-0.890135779369786 +-0.352267464641078,-0.722561670648513,-1.1049215932355,-0.890135779369786 +2.01088062344128,3.26723679892763,2.02765580388689,3.76165501616668 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +0.821645235358922,1.68533689180248,1.212723119888,2.07619464002126 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +0.0381048732648031,0.0583319015865953,0.0573692720387198,0.0660076415298784 +0.653304323441277,2.37353071975664,1.8934044011433,1.22210411533563 +3.53815282344128,5.74871674142153,3.00847521486117,6.61864765173656 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +3.80292775811198,6.60185281703142,4.08141010801567,3.8140975644743 +8.27080875814607,33.9620172410753,12.3596594813099,18.1193314155026 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +3.74335651470978,3.98214468784947,2.41996111247532,4.0542814455471 +0.730830430685715,1.04514848580679,0.841064117119248,1.15953245923567 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +15.9486052159027,40.3981074039415,14.5109764875884,18.7325950915625 +1.11835651470978,1.18969631577255,0.950469461133994,1.21124772627918 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +0.125993335358922,0.258434184321504,0.240052470519661,0.318369384125165 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +25.882918158112,58.0076639668583,18.2761313721713,25.9589404236681 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +10.4116004137096,21.6820398595194,8.90683114644164,13.2060126887081 +10.202928358112,10.2261456067632,4.61142041930058,10.2328959886686 +2.18057742344128,3.54295661200706,2.14933632888494,4.07909843449104 +2.47826601370958,6.66277185346354,4.33930026616874,3.14341802629572 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +6.98861371590271,7.91670287715962,3.85595323093946,8.20854671735228 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +0.365027973264803,1.24950144345829,1.0927439406395,0.632324255225828 +0.673018288478708,0.861680668278338,0.717853580568967,0.925771100044292 +-0.6270229288809,-0.793375200695834,-1.16100238458221,-0.849470291772813 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +1.11039243993158,2.10575729183059,1.67377644435763,1.24818233316968 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +2.8688738732648,4.39174452245752,2.514446153392,4.96964251540533 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +0.41002351470978,0.975325571652453,0.883273662226039,0.444080258290533 +2.8688738732648,4.39174452245752,2.514446153392,4.96964251540533 +-0.0479196646410777,-0.0982915438280757,-0.101571282728004,-0.12108699302073 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +6.07669051470978,14.4546628117399,7.57843769390559,6.58142325138111 +4.67630102188344,8.09085181372453,3.74781643416226,9.48675465657108 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +6.84292485811198,11.8792639841492,6.14356980150867,6.86302362161176 +4.49316648335245,6.08571975073446,3.18055697875676,6.64606660421456 +1.60990472792892,8.34552646652591,4.83902854737853,4.76414987595165 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +1.01476192188344,1.75572280264849,1.26573282672177,2.05863509271296 +2.34335501470978,2.49283729372366,1.71276653090862,2.53799517068018 +2.05060919954069,4.11628542801612,3.05915173243963,1.78408384296971 +15.802916358112,15.8388766457493,6.0716086705009,15.8493320480507 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +0.125993335358922,0.577876403852594,0.536773642248726,0.318369384125165 +0.00990542792892218,0.0397742895123796,0.039477505434565,0.029312879464322 +1.54749603068571,2.2130484245787,1.53258601351772,2.45525063376856 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +0.653304323441277,2.37353071975664,1.8934044011433,1.22210411533563 +10.202928358112,10.2261456067632,4.61142041930058,10.2328959886686 +5.36171775814607,9.84610461596033,4.22389754654562,11.7462202134161 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +-0.308049026735197,-1.05446084068282,-1.26111075200958,-0.533621765097082 +2.58381792792892,5.990050283289,2.98859525327338,7.64622629356468 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +0.192699323441277,0.542294425066919,0.499362671384097,0.360473102274126 +2.34861721590271,5.94909017148265,4.0052275181914,2.7585920357919 +-0.17764510767715,-0.36870576057971,-0.426512214869939,-0.455773380556783 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +2.34861721590271,2.66051400554222,1.79119219920575,2.7585920357919 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +0.779242449016484,1.12760829209335,0.895413728548781,1.25530966140602 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +0.266243683352449,0.806350303123918,0.737528777150565,0.393814308699183 +4.34749723068571,6.21728373220188,3.21005820137408,6.89772065277497 +-0.3492452288809,-0.765396211113002,-0.891726217361026,-0.473146088943221 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +1.4396422711191,4.07319114581984,2.97103786875028,1.9503805742458 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +0.136862935358922,0.280729619249858,0.259281337378191,0.345835502454588 +0.247012883352449,0.748107563938298,0.688195594834384,0.365369073445633 +22.9581625121303,22.240376806578,7.48886673045191,22.036222327798 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +0.1507547711191,0.19075075453132,0.181613337965809,0.204237665817496 +-0.75664288529022,-1.39414332851747,-1.98452223344043,-0.819489994790195 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +1.4396422711191,4.07319114581984,2.97103786875028,1.9503805742458 +-0.75664288529022,-0.80490902600848,-1.14576444568963,-0.819489994790195 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +-0.17764510767715,-0.36870576057971,-0.426512214869939,-0.455773380556783 +0.285960958146069,1.17422748788211,1.02797880161664,0.626470944264067 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +-0.241391469314285,-0.345209939334061,-0.38824088969558,-0.382990680601358 +2.44468732792892,9.81640593884679,4.98913603724007,7.23450066829504 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +3.90292815811198,8.74707186027217,5.36855379594562,3.91439168162467 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +-0.75664288529022,-0.80490902600848,-1.14576444568963,-0.819489994790195 +2.38686223535892,4.8958684451487,2.63987443463448,6.03130203433432 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +-0.519169169314285,-1.66018035131459,-2.3719771244244,-0.823711600363306 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +6.98861371590271,7.91670287715962,3.85595323093946,8.20854671735228 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +0.930411673264803,2.46695592741458,1.87113931689761,1.61171721467986 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +-0.0497249765587228,-0.0807921023976277,-0.082831085924403,-0.0930180565272886 +-0.308049026735197,-1.05446084068282,-1.26111075200958,-0.533621765097082 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +0.1507547711191,0.19075075453132,0.181613337965809,0.204237665817496 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +-0.308049026735197,-1.05446084068282,-1.26111075200958,-0.533621765097082 +2.01088062344128,3.26723679892763,2.02765580388689,3.76165501616668 +-0.0898669465994985,-0.122120389136501,-0.126644188416478,-0.133492147475344 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +2.3729766711191,5.20055022356078,3.36716337922977,3.21483169488449 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +0.116374457714638,0.16729610060636,0.159942613217704,0.185886918968801 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +2.52599283535892,11.5856259515338,6.1347456233349,6.38286764142599 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +1.54749603068571,2.2130484245787,1.53258601351772,2.45525063376856 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +0.247012883352449,0.748107563938298,0.688195594834384,0.365369073445633 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.33997618529022,-0.626419067424891,-0.700695272477752,-0.36821476515359 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +2.55470518335245,7.7372250603276,4.79569645611018,3.77879183101721 +0.821645235358922,1.68533689180248,1.212723119888,2.07619464002126 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +3.74335651470978,3.98214468784947,2.41996111247532,4.0542814455471 +0.33750639232285,0.700500862135012,0.589090553001156,0.865919874743029 +0.731414458146069,3.00337139502384,2.28059479586148,1.60235127625046 +-0.500356626735197,-0.765958550920511,-1.14079570321206,-0.866749001502204 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +3.61626295814607,11.5022056248379,5.67040833518751,7.9223530540128 +3.65060859954069,3.27719927842392,2.12860572643799,3.17612532944143 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +2.6534894732648,4.06202864761973,2.38044875234785,4.59654020464499 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +0.54861701590271,1.38965689049524,1.2127339756032,0.644383648608929 +0.502172684689279,0.981999004736992,0.786524961857392,1.19308067351752 +1.54749603068571,2.2130484245787,1.53258601351772,2.45525063376856 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +4.2396434711191,5.36444176894973,2.93750912830946,5.74373122662683 +-0.599140916647551,-0.811499801626456,-1.23516250894671,-0.886219206900784 +-0.599140916647551,-1.40555888674909,-2.13936422109995,-0.886219206900784 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +3.9285319711191,11.1150262546776,6.23229817948523,5.32224747458835 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +-0.473967276558723,-1.72197833491398,-2.62223590729172,-0.886627163533382 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +-0.17764510767715,-0.36870576057971,-0.426512214869939,-0.455773380556783 +1.3267997534005,1.80299106982663,1.31217501921,1.97088423556363 +0.136862935358922,0.280729619249858,0.259281337378191,0.345835502454588 +0.79811139232285,3.7040358686195,2.67343681499585,2.04766645192929 +0.183818427928922,0.738105150289148,0.655898143958968,0.543969171232762 +-0.395857141853931,-0.726940694658375,-1.08323328624345,-0.867226767803147 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +3.90292815811198,8.74707186027217,5.36855379594562,3.91439168162467 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +-0.500356626735197,-0.765958550920511,-1.14079570321206,-0.866749001502204 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +2.34335501470978,5.57415364561272,3.82986239269816,2.53799517068018 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +0.0283851581460693,0.0521256897982289,0.0513137921716348,0.0621849812720575 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.514252827928922,2.06493258114397,1.58364101587791,1.52181523781047 +3.80292775811198,8.5229553381584,5.26907779246244,3.8140975644743 +1.01476192188344,1.75572280264849,1.26573282672177,2.05863509271296 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +0.33750639232285,1.5663675460311,1.31724652141353,0.865919874743029 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +2.55470518335245,3.46019223842148,2.14470065506344,3.77879183101721 +-0.500356626735197,-1.7127353878055,-2.55089674082185,-0.866749001502204 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +1.43034023535892,5.08162214743106,3.1885367568769,3.6142906965945 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +0.449378221883439,0.777506106762464,0.649154062145139,0.911648099441065 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +6.98861371590271,17.7022857909971,8.62217354244057,8.20854671735228 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +0.502172684689279,0.981999004736992,0.786524961857392,1.19308067351752 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +4.49316648335245,10.5407758088975,5.50888628357447,6.64606660421456 +0.258608530685715,0.369831773437915,0.337157061380252,0.410307197093554 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +0.456427735358922,0.936212452453672,0.754061752268104,1.15333574263992 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +6.67826871370958,17.9544006048677,8.65123464146094,8.47067673243792 +0.35265789232285,0.731948085221933,0.611771922752704,0.904793168051259 +0.79811139232285,1.65649519866614,1.19559729037625,2.04766645192929 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +3.53815282344128,12.8545214172096,6.72715508905287,6.61864765173656 +15.6505971995407,14.0497466246289,5.70574189818379,13.6164304747982 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +6.84292485811198,11.8792639841492,6.14356980150867,6.86302362161176 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +-0.243571864641078,-1.11715776725399,-1.3901101099406,-0.615475606825472 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +2.58381792792892,5.990050283289,2.98859525327338,7.64622629356468 +1.55207963535892,3.18358453979603,1.95288677369538,3.92191091865906 +5.95816251213034,12.9063180155395,7.07696872859033,5.71889817894107 +-0.6270229288809,-0.793375200695834,-1.16100238458221,-0.849470291772813 +14.9581625121303,14.4904963726097,5.76828468958384,14.3574815518653 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +16.922926758112,29.3780683717022,10.9676093471793,16.9726320975228 +0.266243683352449,0.360610818292528,0.329832896214191,0.393814308699183 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +1.25326751370958,3.36938628420498,2.56249660482886,1.58963713845578 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +-0.243571864641078,-1.11715776725399,-1.3901101099406,-0.615475606825472 +2.34335501470978,2.49283729372366,1.71276653090862,2.53799517068018 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +15.9486052159027,31.2922394387528,11.2401540547275,18.7325950915625 +0.270809458146069,1.11201162492659,0.979307479248301,0.593277690983777 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +3.90292815811198,8.74707186027217,5.36855379594562,3.91439168162467 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.35265789232285,0.731948085221933,0.611771922752704,0.904793168051259 +0.41002351470978,0.436178855681745,0.395011990294522,0.444080258290533 +1.55207963535892,3.18358453979603,1.95288677369538,3.92191091865906 +1.25326751370958,3.36938628420498,2.56249660482886,1.58963713845578 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +-0.3492452288809,-0.765396211113002,-0.891726217361026,-0.473146088943221 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +-0.406833316647551,-1.23214253975519,-1.52245156456212,-0.601767446025224 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.673018288478708,0.861680668278338,0.717853580568967,0.925771100044292 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +-0.308049026735197,-1.05446084068282,-1.26111075200958,-0.533621765097082 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +3.80292775811198,6.60185281703142,4.08141010801567,3.8140975644743 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +1.16239562344128,1.88863610875142,1.34509870874616,2.17443605389426 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +0.125993335358922,0.577876403852594,0.536773642248726,0.318369384125165 +16.922926758112,16.9614356826735,6.3321522089606,16.9726320975228 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +6.21160151370958,7.46836622534402,3.68867870070526,7.87875880246349 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +1.48816532792892,7.71444602611624,4.5779328146824,4.40388958393141 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +2.77008958335245,6.49851132310915,3.93731298754644,4.09737763753305 +-0.413928542285362,-0.595050085851487,-0.759014224848206,-0.661175166008914 +-0.621731886290424,-1.67151455471724,-2.31953992920492,-0.788601065453334 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +0.207850823441277,0.755146257055083,0.691387273104067,0.388816264624516 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +-0.473967276558723,-1.72197833491398,-2.62223590729172,-0.886627163533382 +1.21160151370958,2.52314642036336,1.93144919501018,1.53678822927528 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +6.21160151370958,7.46836622534402,3.68867870070526,7.87875880246349 +2.01088062344128,7.305763580991,4.53397621246307,3.76165501616668 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +2.77008958335245,8.38954204318069,5.08304920985784,4.09737763753305 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +0.00990542792892218,0.0397742895123796,0.039477505434565,0.029312879464322 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +0.730830430685715,1.04514848580679,0.841064117119248,1.15953245923567 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +3.94861661590271,4.47299361428212,2.61436165622492,4.63788746640781 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +-0.0497249765587228,-0.180656633006219,-0.185215938777091,-0.0930180565272886 +2.01088062344128,3.26723679892763,2.02765580388689,3.76165501616668 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +-0.519169169314285,-0.742455224089781,-1.06078041825749,-0.823711600363306 +0.0283851581460693,0.116556585762907,0.114741127479072,0.0621849812720575 +-0.0898669465994985,-0.122120389136501,-0.126644188416478,-0.133492147475344 +-0.0479196646410777,-0.17024594786461,-0.175926622274847,-0.12108699302073 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +2.6534894732648,4.06202864761973,2.38044875234785,4.59654020464499 +-0.244342041853931,-1.00332976868671,-1.2008692306854,-0.535294015924552 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +1.60990472792892,3.73223289743511,2.16407935540009,4.76414987595165 +3.90292815811198,8.74707186027217,5.36855379594562,3.91439168162467 +0.258608530685715,0.369831773437915,0.337157061380252,0.410307197093554 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +0.514252827928922,2.06493258114397,1.58364101587791,1.52181523781047 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +0.0381048732648031,0.0583319015865953,0.0573692720387198,0.0660076415298784 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +10.202928358112,22.8663567245333,10.3114495303867,10.2328959886686 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +1.55207963535892,3.18358453979603,1.95288677369538,3.92191091865906 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +1.11835651470978,2.66024183464848,2.12531432563321,1.21124772627918 +15.3697197306857,21.9799814421095,7.10413978614879,24.3855320862372 +4.04861701590271,4.58627408542844,2.66074862114657,4.75534394469134 +0.183818427928922,0.738105150289148,0.655898143958968,0.543969171232762 +-0.599140916647551,-0.811499801626456,-1.23516250894671,-0.886219206900784 +0.730830430685715,2.33702306084496,1.88067653931448,1.15953245923567 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +1.16239562344128,1.88863610875142,1.34509870874616,2.17443605389426 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +1.11835651470978,2.66024183464848,2.12531432563321,1.21124772627918 +-0.500356626735197,-0.765958550920511,-1.14079570321206,-0.866749001502204 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +1.91940425771464,2.75927255953617,1.80871215070141,3.06589736896617 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +2.47826601370958,6.66277185346354,4.33930026616874,3.14341802629572 +0.250608999540694,0.389668112773407,0.369861398787759,0.218036409416041 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +0.456427735358922,2.0934346850682,1.68613333730409,1.15333574263992 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.831627383352449,1.12638853042086,0.897546516291406,1.23010153310082 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +0.125993335358922,0.577876403852594,0.536773642248726,0.318369384125165 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +6.98861371590271,7.91670287715962,3.85595323093946,8.20854671735228 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +0.6229766711191,1.36529849015906,1.15218858663939,0.843988553221976 +3.90292815811198,8.74707186027217,5.36855379594562,3.91439168162467 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +0.125993335358922,0.258434184321504,0.240052470519661,0.318369384125165 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +1.07669051470978,2.56113065245875,2.0591041092176,1.16612092896603 +25.882918158112,25.941815969172,8.17333442277831,25.9589404236681 +6.67826871370958,8.02945204954952,3.86894974952154,8.47067673243792 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +2.44468732792892,5.66750461126784,2.88047903412422,7.23450066829504 +0.365027973264803,1.24950144345829,1.0927439406395,0.632324255225828 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +2.58381792792892,10.3750714305489,5.17639882192867,7.64622629356468 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +16.922926758112,16.9614356826735,6.3321522089606,16.9726320975228 +-0.185746772071078,-0.962885924551043,-1.16009591380323,-0.549675670720755 +3.87826751370958,4.66293950896731,2.67793759215218,4.91917168937959 +0.266243683352449,0.360610818292528,0.329832896214191,0.393814308699183 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +0.270809458146069,1.11201162492659,0.979307479248301,0.593277690983777 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +4.04861701590271,4.58627408542844,2.66074862114657,4.75534394469134 +23.7403790225008,29.3781884529986,8.57179233495263,31.2529270856336 +-0.500356626735197,-1.32667912668616,-1.97591611901956,-0.866749001502204 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +0.821645235358922,1.68533689180248,1.212723119888,2.07619464002126 +-0.241391469314285,-0.345209939334061,-0.38824088969558,-0.382990680601358 +1.63959054735401,2.65010421913564,1.73999286849157,3.0465142179869 +1.24050575814607,2.27802917317876,1.53936339465726,2.71764655814944 +-0.308049026735197,-1.05446084068282,-1.26111075200958,-0.533621765097082 +0.125993335358922,0.258434184321504,0.240052470519661,0.318369384125165 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +-0.205065186290424,-0.427045926301025,-0.460301270949546,-0.260103475407846 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +0.544934513709576,1.46504625405015,1.26815950669315,0.691191730052151 +2.25868755814607,4.14778901005858,2.37786473480038,4.94823536934186 +0.247012883352449,0.334563873489561,0.307770426373117,0.365369073445633 +-0.352267464641078,-0.722561670648513,-1.1049215932355,-0.890135779369786 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +0.6229766711191,1.76259277166273,1.48746906924821,0.843988553221976 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +-0.599140916647551,-0.811499801626456,-1.23516250894671,-0.886219206900784 +4.34749723068571,6.21728373220188,3.21005820137408,6.89772065277497 +1.54749603068571,2.2130484245787,1.53258601351772,2.45525063376856 +-0.308049026735197,-1.05446084068282,-1.26111075200958,-0.533621765097082 +0.402928158111979,0.699480128177213,0.638466345730688,0.404111622482144 +3.87826751370958,4.66293950896731,2.67793759215218,4.91917168937959 +6.98861371590271,7.91670287715962,3.85595323093946,8.20854671735228 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +-0.17764510767715,-0.824451144351993,-0.953710305683181,-0.455773380556783 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +2.3729766711191,3.00253907150698,1.94403268340376,3.21483169488449 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +0.247012883352449,0.334563873489561,0.307770426373117,0.365369073445633 +0.365027973264803,1.24950144345829,1.0927439406395,0.632324255225828 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +3.9285319711191,4.9707908554308,2.78716847707543,5.32224747458835 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +-0.244342041853931,-0.777175896975556,-0.930189306283492,-0.535294015924552 +6.21160151370958,16.6997745607327,8.24813632193256,7.87875880246349 +2.8688738732648,4.39174452245752,2.514446153392,4.96964251540533 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +2.58381792792892,13.3941596220761,6.68270214355247,7.64622629356468 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +3.87826751370958,4.66293950896731,2.67793759215218,4.91917168937959 +-0.621731886290424,-1.67151455471724,-2.31953992920492,-0.788601065453334 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +-0.413928542285362,-1.030656981743,-1.3146512011046,-0.661175166008914 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +0.125993335358922,0.577876403852594,0.536773642248726,0.318369384125165 +0.79811139232285,1.65649519866614,1.19559729037625,2.04766645192929 +3.94861661590271,4.47299361428212,2.61436165622492,4.63788746640781 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +-0.6270229288809,-0.793375200695834,-1.16100238458221,-0.849470291772813 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +-0.0497249765587228,-0.0807921023976277,-0.082831085924403,-0.0930180565272886 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +6.11039243993158,6.69021836828077,3.45903547552821,6.86863816609388 +2.34335501470978,2.49283729372366,1.71276653090862,2.53799517068018 +2.58381792792892,10.3750714305489,5.17639882192867,7.64622629356468 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +-0.151673515310721,-0.29659765578896,-0.330823018103502,-0.360351618713897 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +1.25326751370958,3.36938628420498,2.56249660482886,1.58963713845578 +1.11835651470978,1.18969631577255,0.950469461133994,1.21124772627918 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +2.6534894732648,4.06202864761973,2.38044875234785,4.59654020464499 +10.2766894147098,24.4452272089591,10.694781422357,11.1302760108433 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +0.456427735358922,1.62156753432842,1.30607326697277,1.15333574263992 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +-0.45138258409729,-1.14336030428846,-1.36530628992118,-0.530175966162011 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +0.285960958146069,0.525130496790642,0.459726095968714,0.626470944264067 +0.703052730685715,2.24819653864291,1.82061140155762,1.11546047832118 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +0.285960958146069,1.17422748788211,1.02797880161664,0.626470944264067 +0.456427735358922,1.62156753432842,1.30607326697277,1.15333574263992 +2.01088062344128,3.26723679892763,2.02765580388689,3.76165501616668 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +2.18057742344128,3.54295661200706,2.14933632888494,4.07909843449104 +3.65060859954069,3.27719927842392,2.12860572643799,3.17612532944143 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +0.456427735358922,2.0934346850682,1.68613333730409,1.15333574263992 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +2.3729766711191,5.20055022356078,3.36716337922977,3.21483169488449 +-0.597071441888021,-1.33813039757238,-1.65095611335372,-0.598825136097998 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +-0.195179476558723,-0.709109777565692,-0.79229815703036,-0.36511260215609 +4.04861701590271,4.58627408542844,2.66074862114657,4.75534394469134 +4.5919507732648,7.02947412356279,3.46066972250574,7.95446394633423 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +1.07669051470978,1.14537244763123,0.920859352191939,1.16612092896603 +-0.519169169314285,-1.66018035131459,-2.3719771244244,-0.823711600363306 +0.00990542792892218,0.0229636967567985,0.022792348389581,0.029312879464322 +1.5765660732648,4.18021305101833,2.82133160680209,2.73102622567584 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +1.21160151370958,3.25736802203672,2.49349018877338,1.53678822927528 +2.58381792792892,5.990050283289,2.98859525327338,7.64622629356468 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +0.207850823441277,0.755146257055083,0.691387273104067,0.388816264624516 +1.24050575814607,2.27802917317876,1.53936339465726,2.71764655814944 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +0.449378221883439,0.777506106762464,0.649154062145139,0.911648099441065 +-0.205065186290424,-0.427045926301025,-0.460301270949546,-0.260103475407846 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +2.34861721590271,2.66051400554222,1.79119219920575,2.7585920357919 +2.58381792792892,5.990050283289,2.98859525327338,7.64622629356468 +-0.223698778116561,-0.3870395973618,-0.447365711609579,-0.453814973637393 +0.653304323441277,2.37353071975664,1.8934044011433,1.22210411533563 +0.0283851581460693,0.0521256897982289,0.0513137921716348,0.0621849812720575 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +-0.621731886290424,-1.67151455471724,-2.31953992920492,-0.788601065453334 +-0.75664288529022,-0.80490902600848,-1.14576444568963,-0.819489994790195 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +0.136862935358922,0.486237963730219,0.449088449793435,0.345835502454588 +2.08899075814607,3.83616267664049,2.2509867523765,4.57647093260261 +0.192699323441277,0.700099092341768,0.644674436662752,0.360473102274126 +0.285960958146069,0.525130496790642,0.459726095968714,0.626470944264067 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +2.73783972188344,4.73696098173036,2.62124235110018,5.55422193930149 +4.04861701590271,10.2552206184637,5.94961478792257,4.75534394469134 +0.1507547711191,0.19075075453132,0.181613337965809,0.204237665817496 +0.00990542792892218,0.0229636967567985,0.022792348389581,0.029312879464322 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +-0.244342041853931,-1.00332976868671,-1.2008692306854,-0.535294015924552 +0.653304323441277,1.83852898986583,1.46662474265277,1.22210411533563 +-0.352267464641078,-0.722561670648513,-1.1049215932355,-0.890135779369786 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +1.5765660732648,5.39663184339763,3.64232344242437,2.73102622567584 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.243571864641078,-0.499608141834362,-0.62167614040738,-0.615475606825472 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +1.60990472792892,8.34552646652591,4.83902854737853,4.76414987595165 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +1.55207963535892,3.18358453979603,1.95288677369538,3.92191091865906 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +-0.519169169314285,-1.28597017046844,-1.83732558009613,-0.823711600363306 +0.731414458146069,3.00337139502384,2.28059479586148,1.60235127625046 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +16.922926758112,16.9614356826735,6.3321522089606,16.9726320975228 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +1.21160151370958,3.25736802203672,2.49349018877338,1.53678822927528 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +2.01088062344128,3.26723679892763,2.02765580388689,3.76165501616668 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +-0.6270229288809,-0.793375200695834,-1.16100238458221,-0.849470291772813 +1.25326751370958,2.60991539313312,1.98490133504304,1.58963713845578 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +0.0283851581460693,0.116556585762907,0.114741127479072,0.0621849812720575 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +0.730830430685715,1.04514848580679,0.841064117119248,1.15953245923567 +-0.519169169314285,-1.66018035131459,-2.3719771244244,-0.823711600363306 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +1.5765660732648,2.41344713027542,1.62889656266039,2.73102622567584 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.413928542285362,-0.595050085851487,-0.759014224848206,-0.661175166008914 +4.17301828847871,9.25401926483255,5.06837683972769,5.7402002257062 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +1.54749603068571,2.2130484245787,1.53258601351772,2.45525063376856 +0.673018288478708,0.861680668278338,0.717853580568967,0.925771100044292 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +3.90292815811198,8.74707186027217,5.36855379594562,3.91439168162467 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +-0.33997618529022,-0.626419067424891,-0.700695272477752,-0.36821476515359 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +2.77008958335245,8.38954204318069,5.08304920985784,4.09737763753305 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +2.34861721590271,2.66051400554222,1.79119219920575,2.7585920357919 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +-0.0479196646410777,-0.0982915438280757,-0.101571282728004,-0.12108699302073 +5.92294832792892,13.7311371386199,5.06240393644057,17.5276294629383 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +-0.308049026735197,-1.05446084068282,-1.26111075200958,-0.533621765097082 +0.54861701590271,1.07642359876609,0.939379698178225,0.644383648608929 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +23.4581625121303,22.7247443337011,7.58590577595428,22.5161436262937 +0.250608999540694,0.503059370439827,0.477489012636656,0.218036409416041 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +-0.473967276558723,-0.770092122529914,-1.17269954834902,-0.886627163533382 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +-0.185746772071078,-0.962885924551043,-1.16009591380323,-0.549675670720755 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +-0.0497249765587228,-0.0807921023976277,-0.082831085924403,-0.0930180565272886 +0.456427735358922,1.62156753432842,1.30607326697277,1.15333574263992 +0.194688027928922,1.00923617504171,0.891559695168648,0.57613530044108 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +1.60990472792892,3.73223289743511,2.16407935540009,4.76414987595165 +1.60990472792892,3.73223289743511,2.16407935540009,4.76414987595165 +-0.597071441888021,-1.33813039757238,-1.65095611335372,-0.598825136097998 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +2.08899075814607,3.83616267664049,2.2509867523765,4.57647093260261 +-0.413928542285362,-0.595050085851487,-0.759014224848206,-0.661175166008914 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +0.345797173264803,1.18367385182485,1.04134229137205,0.599011462294818 +0.0381048732648031,0.0583319015865953,0.0573692720387198,0.0660076415298784 +1.08678718468928,3.68097694802007,2.51865833948826,2.5820296997667 +1.54749603068571,2.2130484245787,1.53258601351772,2.45525063376856 +0.35265789232285,0.731948085221933,0.611771922752704,0.904793168051259 +0.514252827928922,2.66581649927057,2.04447176028872,1.52181523781047 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +2.47826601370958,5.16096088560877,3.36120753301299,3.14341802629572 +1.5765660732648,2.41344713027542,1.62889656266039,2.73102622567584 +0.285960958146069,0.525130496790642,0.459726095968714,0.626470944264067 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +3.94861661590271,10.0019177844573,5.84589038108785,4.63788746640781 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.0582731946102014,0.105756005625457,0.102524446321683,0.125733509051093 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +-0.0479196646410777,-0.0982915438280757,-0.101571282728004,-0.12108699302073 +2.47826601370958,6.66277185346354,4.33930026616874,3.14341802629572 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +3.53815282344128,9.95706947446389,5.21083192545125,6.61864765173656 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +1.16239562344128,4.22311872392887,3.00773214920361,2.17443605389426 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +1.07669051470978,1.14537244763123,0.920859352191939,1.16612092896603 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +2.20292835811198,4.93710667243187,3.50360750339482,2.20939871062859 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +1.43034023535892,2.93387591473929,1.8409025549039,3.6142906965945 +3.9285319711191,4.9707908554308,2.78716847707543,5.32224747458835 +6.98861371590271,7.91670287715962,3.85595323093946,8.20854671735228 +0.54861701590271,1.38965689049524,1.2127339756032,0.644383648608929 +-0.33997618529022,-0.626419067424891,-0.700695272477752,-0.36821476515359 +-0.243571864641078,-0.499608141834362,-0.62167614040738,-0.615475606825472 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +3.90292815811198,8.74707186027217,5.36855379594562,3.91439168162467 +6.21160151370958,7.46836622534402,3.68867870070526,7.87875880246349 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +2.6534894732648,4.06202864761973,2.38044875234785,4.59654020464499 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +6.84292485811198,15.3360638586038,7.93131450916863,6.86302362161176 +6.98861371590271,7.91670287715962,3.85595323093946,8.20854671735228 +1.55207963535892,3.18358453979603,1.95288677369538,3.92191091865906 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +0.402928158111979,0.699480128177213,0.638466345730688,0.404111622482144 +0.653304323441277,2.37353071975664,1.8934044011433,1.22210411533563 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +-0.6270229288809,-0.793375200695834,-1.16100238458221,-0.849470291772813 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +0.194688027928922,1.00923617504171,0.891559695168648,0.57613530044108 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +5.95816251213034,5.77188088439532,3.16491663035365,5.71889817894107 +1.60990472792892,3.73223289743511,2.16407935540009,4.76414987595165 +-0.244342041853931,-1.00332976868671,-1.2008692306854,-0.535294015924552 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +1.11835651470978,2.06061446449556,1.64626139772669,1.21124772627918 +2.44468732792892,5.66750461126784,2.88047903412422,7.23450066829504 +1.11835651470978,1.18969631577255,0.950469461133994,1.21124772627918 +-0.6270229288809,-1.77404088041842,-2.59608025396518,-0.849470291772813 +6.21160151370958,7.46836622534402,3.68867870070526,7.87875880246349 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +0.122455121883439,0.211869646618993,0.199759999993878,0.248423207212782 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +-0.223698778116561,-0.865446849685133,-1.00034014196158,-0.453814973637393 +3.74335651470978,3.98214468784947,2.41996111247532,4.0542814455471 +15.9486052159027,18.0665828635101,6.48950596922976,18.7325950915625 +2.34335501470978,2.49283729372366,1.71276653090862,2.53799517068018 +0.41002351470978,0.436178855681745,0.395011990294522,0.444080258290533 +-0.519169169314285,-1.28597017046844,-1.83732558009613,-0.823711600363306 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +4.2396434711191,5.36444176894973,2.93750912830946,5.74373122662683 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +16.0730064884787,46.0152309480704,15.4738370844025,22.1092430214528 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +1.16239562344128,1.88863610875142,1.34509870874616,2.17443605389426 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +0.00990542792892218,0.0229636967567985,0.022792348389581,0.029312879464322 +1.11835651470978,2.66024183464848,2.12531432563321,1.21124772627918 +-0.621731886290424,-0.747524033945609,-1.03732979164545,-0.788601065453334 +6.69060569954069,6.00624459535663,3.27516438375989,5.8210026224915 +-0.597071441888021,-1.03651134897035,-1.27882510646766,-0.598825136097998 +-0.416006378116561,-0.719766743662219,-1.04766693691979,-0.843947048381208 +2.18057742344128,7.92229182578012,4.80606213789658,4.07909843449104 +-0.243571864641078,-0.499608141834362,-0.62167614040738,-0.615475606825472 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +1.43034023535892,2.93387591473929,1.8409025549039,3.6142906965945 +-0.243571864641078,-1.11715776725399,-1.3901101099406,-0.615475606825472 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +6.98861371590271,7.91670287715962,3.85595323093946,8.20854671735228 +0.0381048732648031,0.0583319015865953,0.0573692720387198,0.0660076415298784 +6.98861371590271,17.7022857909971,8.62217354244057,8.20854671735228 +0.730830430685715,1.81025027887104,1.4567657832736,1.15953245923567 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +1.07669051470978,1.14537244763123,0.920859352191939,1.16612092896603 +0.00990542792892218,0.0229636967567985,0.022792348389581,0.029312879464322 +1.25326751370958,3.36938628420498,2.56249660482886,1.58963713845578 +-0.17764510767715,-0.36870576057971,-0.426512214869939,-0.455773380556783 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +3.94861661590271,10.0019177844573,5.84589038108785,4.63788746640781 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +-0.243571864641078,-0.499608141834362,-0.62167614040738,-0.615475606825472 +1.24050575814607,2.27802917317876,1.53936339465726,2.71764655814944 +1.25326751370958,2.60991539313312,1.98490133504304,1.58963713845578 +0.192699323441277,0.700099092341768,0.644674436662752,0.360473102274126 +0.285960958146069,0.525130496790642,0.459726095968714,0.626470944264067 +6.21160151370958,7.46836622534402,3.68867870070526,7.87875880246349 +2.08899075814607,3.83616267664049,2.2509867523765,4.57647093260261 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +0.730830430685715,2.33702306084496,1.88067653931448,1.15953245923567 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +-0.473967276558723,-1.72197833491398,-2.62223590729172,-0.886627163533382 +1.16239562344128,1.88863610875142,1.34509870874616,2.17443605389426 +1.60990472792892,6.46441700403761,3.74829539516386,4.76414987595165 +0.703052730685715,1.00542405743706,0.814202170898802,1.11546047832118 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +-0.0944424720710778,-0.489576890209687,-0.531055465549125,-0.279481191524184 +0.136862935358922,0.280729619249858,0.259281337378191,0.345835502454588 +3.34421362344128,5.43360838361648,2.89582691996817,6.25585517365157 +6.3729766711191,8.06375877594004,3.86000417983789,8.63390173297022 +0.430147421883439,0.744233322925142,0.625200275230135,0.872634810819172 +-0.322452176558723,-1.17150632446919,-1.44857709919189,-0.603195352964424 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +-0.205065186290424,-0.427045926301025,-0.460301270949546,-0.260103475407846 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +4.04861701590271,4.58627408542844,2.66074862114657,4.75534394469134 +-0.205065186290424,-0.551313920209864,-0.594246385541899,-0.260103475407846 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +2.3729766711191,6.71388146898872,4.34698923057213,3.21483169488449 +1.01476192188344,1.75572280264849,1.26573282672177,2.05863509271296 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +0.122455121883439,0.366968992525759,0.345994469309356,0.248423207212782 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +-0.244342041853931,-1.00332976868671,-1.2008692306854,-0.535294015924552 +2.6534894732648,4.06202864761973,2.38044875234785,4.59654020464499 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +1.07669051470978,1.14537244763123,0.920859352191939,1.16612092896603 +15.802916358112,15.8388766457493,6.0716086705009,15.8493320480507 +-0.185746772071078,-0.962885924551043,-1.16009591380323,-0.549675670720755 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +1.24050575814607,2.27802917317876,1.53936339465726,2.71764655814944 +6.21160151370958,7.46836622534402,3.68867870070526,7.87875880246349 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +-0.621731886290424,-1.67151455471724,-2.31953992920492,-0.788601065453334 +6.83638593068571,16.9335717532756,7.47800135223483,10.8465808998327 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +1.25326751370958,3.36938628420498,2.56249660482886,1.58963713845578 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +17.0686156159027,19.335330846526,6.76133604249464,20.0481146017338 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +2.34335501470978,5.57415364561272,3.82986239269816,2.53799517068018 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +10.3486172159027,20.3046851681505,8.60171854205821,12.1550727125517 +-0.3492452288809,-0.988122259630304,-1.15121359640526,-0.473146088943221 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +-0.0479196646410777,-0.0982915438280757,-0.101571282728004,-0.12108699302073 +2.47826601370958,6.66277185346354,4.33930026616874,3.14341802629572 +3.94861661590271,4.47299361428212,2.61436165622492,4.63788746640781 +4.04861701590271,4.58627408542844,2.66074862114657,4.75534394469134 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +0.831627383352449,2.51868132309713,2.00697502339571,1.23010153310082 +3.9285319711191,4.9707908554308,2.78716847707543,5.32224747458835 +0.266243683352449,0.624596259041647,0.571287334250572,0.393814308699183 +6.07669051470978,6.46432172777775,3.38918036936393,6.58142325138111 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +0.514252827928922,2.66581649927057,2.04447176028872,1.52181523781047 +2.34861721590271,2.66051400554222,1.79119219920575,2.7585920357919 +-0.294442372071078,-0.682604062450473,-1.02166628593019,-0.871335779094169 +2.34335501470978,2.49283729372366,1.71276653090862,2.53799517068018 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +10.202928358112,22.8663567245333,10.3114495303867,10.2328959886686 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +-0.149296952645995,-0.241311762104115,-0.261577558797885,-0.27740785019294 +1.48816532792892,3.45000514462981,2.04731379401136,4.40388958393141 +0.731414458146069,2.32640147908061,1.76654113276376,1.60235127625046 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +-0.32916020767715,-0.683178199000802,-0.994943257780143,-0.844506570203084 +1.01476192188344,1.75572280264849,1.26573282672177,2.05863509271296 +-0.241391469314285,-0.771912890859539,-0.868133021004313,-0.382990680601358 +24.602919358112,24.6589044710358,7.93177802569779,24.6751820627063 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +0.258608530685715,0.82696898564648,0.753906108340313,0.410307197093554 +0.79811139232285,1.65649519866614,1.19559729037625,2.04766645192929 +3.61626295814607,6.64080151377456,3.27381177873561,7.9223530540128 +-0.244342041853931,-0.777175896975556,-0.930189306283492,-0.535294015924552 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.192699323441277,0.700099092341768,0.644674436662752,0.360473102274126 +1.54749603068571,2.2130484245787,1.53258601351772,2.45525063376856 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +2.3729766711191,6.71388146898872,4.34698923057213,3.21483169488449 +2.3729766711191,3.00253907150698,1.94403268340376,3.21483169488449 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +0.41002351470978,0.436178855681745,0.395011990294522,0.444080258290533 +-0.17764510767715,-0.824451144351993,-0.953710305683181,-0.455773380556783 +1.54749603068571,3.83311231098056,2.65451684238214,2.45525063376856 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +0.731414458146069,1.34314852019034,1.0199129985357,1.60235127625046 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +0.930411673264803,3.18482640756811,2.41563047092612,1.61171721467986 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +2.01088062344128,3.26723679892763,2.02765580388689,3.76165501616668 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +0.0084988984855866,0.0130532005277249,0.0130037157735761,0.0147849510453725 +15.802916358112,35.4168048671292,13.5765297200171,15.8493320480507 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +1.25326751370958,2.60991539313312,1.98490133504304,1.58963713845578 +2.47826601370958,6.66277185346354,4.33930026616874,3.14341802629572 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +1.07669051470978,1.14537244763123,0.920859352191939,1.16612092896603 +0.33750639232285,0.700500862135012,0.589090553001156,0.865919874743029 +1.16239562344128,4.22311872392887,3.00773214920361,2.17443605389426 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +2.08899075814607,3.83616267664049,2.2509867523765,4.57647093260261 +2.34335501470978,2.49283729372366,1.71276653090862,2.53799517068018 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +3.90292815811198,8.74707186027217,5.36855379594562,3.91439168162467 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +38.1581442121303,64.0254865649426,17.4740270602233,36.6258122369505 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +0.731414458146069,3.00337139502384,2.28059479586148,1.60235127625046 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +0.514252827928922,2.66581649927057,2.04447176028872,1.52181523781047 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +4.04861701590271,4.58627408542844,2.66074862114657,4.75534394469134 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +0.514252827928922,2.06493258114397,1.58364101587791,1.52181523781047 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +6.07669051470978,6.46432172777775,3.38918036936393,6.58142325138111 +0.0381048732648031,0.0583319015865953,0.0573692720387198,0.0660076415298784 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +-0.322452176558723,-1.17150632446919,-1.44857709919189,-0.603195352964424 +0.285960958146069,0.525130496790642,0.459726095968714,0.626470944264067 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +0.544934513709576,0.655188602847511,0.567138172655697,0.691191730052151 +0.54861701590271,1.38965689049524,1.2127339756032,0.644383648608929 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +-0.3492452288809,-0.765396211113002,-0.891726217361026,-0.473146088943221 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +0.6229766711191,1.76259277166273,1.48746906924821,0.843988553221976 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +6.98861371590271,7.91670287715962,3.85595323093946,8.20854671735228 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +0.6229766711191,1.76259277166273,1.48746906924821,0.843988553221976 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +0.879470327928922,2.03887101719182,1.3923951535434,2.60259404237908 +0.285960958146069,0.525130496790642,0.459726095968714,0.626470944264067 +4.04861701590271,4.58627408542844,2.66074862114657,4.75534394469134 +0.285960958146069,1.17422748788211,1.02797880161664,0.626470944264067 +0.930411673264803,2.46695592741458,1.87113931689761,1.61171721467986 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +6.98861371590271,7.91670287715962,3.85595323093946,8.20854671735228 +0.00990542792892218,0.0229636967567985,0.022792348389581,0.029312879464322 +1.4396422711191,4.07319114581984,2.97103786875028,1.9503805742458 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +2.8688738732648,4.39174452245752,2.514446153392,4.96964251540533 +-0.519169169314285,-0.742455224089781,-1.06078041825749,-0.823711600363306 +1.25326751370958,3.36938628420498,2.56249660482886,1.58963713845578 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.958162512130339,0.928205613165108,0.774005983074296,0.919685193983162 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +-0.33997618529022,-0.626419067424891,-0.700695272477752,-0.36821476515359 +-0.185746772071078,-0.962885924551043,-1.16009591380323,-0.549675670720755 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +1.07669051470978,1.14537244763123,0.920859352191939,1.16612092896603 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +-0.75664288529022,-1.79983129785811,-2.56200718676437,-0.819489994790195 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +0.0283851581460693,0.0521256897982289,0.0513137921716348,0.0621849812720575 +0.1507547711191,0.19075075453132,0.181613337965809,0.204237665817496 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +0.456427735358922,2.0934346850682,1.68613333730409,1.15333574263992 +-0.406833316647551,-0.551030895372367,-0.680861038162364,-0.601767446025224 +0.6229766711191,1.36529849015906,1.15218858663939,0.843988553221976 +-0.308049026735197,-0.47156922387567,-0.56398587372986,-0.533621765097082 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +0.41002351470978,0.975325571652453,0.883273662226039,0.444080258290533 +-0.473967276558723,-0.770092122529914,-1.17269954834902,-0.886627163533382 +2.58381792792892,5.990050283289,2.98859525327338,7.64622629356468 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +0.831627383352449,1.12638853042086,0.897546516291406,1.23010153310082 +-0.185746772071078,-0.962885924551043,-1.16009591380323,-0.549675670720755 +0.183818427928922,0.426145207209689,0.378682969975686,0.543969171232762 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +6.21160151370958,7.46836622534402,3.68867870070526,7.87875880246349 +0.194688027928922,0.451344138549029,0.398717616879218,0.57613530044108 +0.365027973264803,0.967859656315214,0.846435816753171,0.632324255225828 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +1.25326751370958,1.50683535478755,1.14598332010195,1.58963713845578 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +0.402928158111979,0.903024962477792,0.824256508042954,0.404111622482144 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +2.20292835811198,2.20794122634509,1.56686090881383,2.20939871062859 +-0.3492452288809,-0.441901708522811,-0.514838371636835,-0.473146088943221 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +3.77816723535892,17.3288030585365,8.00912170374458,9.54695557837628 +0.5951989711191,0.753108190171567,0.639440015293852,0.806356227772743 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.621731886290424,-1.29474960667264,-1.79670790333476,-0.788601065453334 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +-0.308049026735197,-1.05446084068282,-1.26111075200958,-0.533621765097082 +3.94861661590271,4.47299361428212,2.61436165622492,4.63788746640781 +-0.6270229288809,-0.793375200695834,-1.16100238458221,-0.849470291772813 +0.365027973264803,0.558794033111367,0.488689946654184,0.632324255225828 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +-0.308049026735197,-1.05446084068282,-1.26111075200958,-0.533621765097082 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +0.125993335358922,0.258434184321504,0.240052470519661,0.318369384125165 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +2.15568769232285,4.47417033074,2.47909078248831,5.53071840706263 +1.25326751370958,3.36938628420498,2.56249660482886,1.58963713845578 +-0.597071441888021,-1.03651134897035,-1.27882510646766,-0.598825136097998 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +-0.0606794166475514,-0.0821865661384358,-0.0841843910937643,-0.0897539510362449 +1.25326751370958,3.36938628420498,2.56249660482886,1.58963713845578 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +0.514252827928922,1.1921893815819,0.914315566816845,1.52181523781047 +-0.33997618529022,-0.361663217203275,-0.404546604184928,-0.36821476515359 +-0.322452176558723,-0.523913555516805,-0.647823372888505,-0.603195352964424 +-0.244342041853931,-1.00332976868671,-1.2008692306854,-0.535294015924552 +3.90292815811198,3.91180945672882,2.40089024571979,3.91439168162467 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +-0.395857141853931,-0.726940694658375,-1.08323328624345,-0.867226767803147 +0.365027973264803,0.967859656315214,0.846435816753171,0.632324255225828 +-0.243571864641078,-1.11715776725399,-1.3901101099406,-0.615475606825472 +0.6229766711191,0.788255450817524,0.665216390653467,0.843988553221976 +-0.6270229288809,-0.793375200695834,-1.16100238458221,-0.849470291772813 +2.15568769232285,4.47417033074,2.47909078248831,5.53071840706263 +3.53815282344128,5.74871674142153,3.00847521486117,6.61864765173656 +1.21160151370958,3.25736802203672,2.49349018877338,1.53678822927528 +1.60990472792892,3.73223289743511,2.16407935540009,4.76414987595165 +1.16239562344128,1.88863610875142,1.34509870874616,2.17443605389426 +-0.473967276558723,-0.770092122529914,-1.17269954834902,-0.886627163533382 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +1.07669051470978,2.56113065245875,2.0591041092176,1.16612092896603 +-0.473967276558723,-0.770092122529914,-1.17269954834902,-0.886627163533382 +-0.243571864641078,-0.865346685532193,-1.0767746610389,-0.615475606825472 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +-0.473967276558723,-0.770092122529914,-1.17269954834902,-0.886627163533382 +0.653304323441277,2.37353071975664,1.8934044011433,1.22210411533563 +0.1507547711191,0.19075075453132,0.181613337965809,0.204237665817496 +1.16239562344128,1.88863610875142,1.34509870874616,2.17443605389426 +1.4396422711191,1.82158645748068,1.32868852765034,1.9503805742458 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +0.456427735358922,2.0934346850682,1.68613333730409,1.15333574263992 +0.266243683352449,0.360610818292528,0.329832896214191,0.393814308699183 +0.192699323441277,0.313093832292419,0.288307172746859,0.360473102274126 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +-0.0898669465994985,-0.122120389136501,-0.126644188416478,-0.133492147475344 +3.90292815811198,6.77545272858273,4.1584638889832,3.91439168162467 +3.80292775811198,3.81158150106338,2.35640322453611,3.8140975644743 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +1.08678718468928,2.12521303182019,1.45414807030024,2.5820296997667 +6.84292485811198,6.85849625902316,3.54699167868629,6.86302362161176 +0.879470327928922,4.55905419179506,3.11349021486431,2.60259404237908 +4.24701258335245,5.75231931776573,3.0615872307781,6.28196809588007 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +-0.597071441888021,-0.598430106346134,-0.738330019465555,-0.598825136097998 +-0.185746772071078,-0.430615676374773,-0.518810664736753,-0.549675670720755 +1.54749603068571,4.94852671485678,3.42696650759104,2.45525063376856 +2.01088062344128,3.26723679892763,2.02765580388689,3.76165501616668 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +-0.244342041853931,-0.777175896975556,-0.930189306283492,-0.535294015924552 +0.207850823441277,0.337711672745939,0.309197788287781,0.388816264624516 +0.753925094610201,3.05949264358027,2.31635831469048,1.62671101766615 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +3.53815282344128,5.74871674142153,3.00847521486117,6.61864765173656 +0.54861701590271,0.621473454509669,0.542351121614467,0.644383648608929 +2.47826601370958,2.97968215658335,1.94059407398725,3.14341802629572 +-0.599140916647551,-1.81456872016435,-2.76190733326404,-0.886219206900784 +-0.244342041853931,-0.448702713326526,-0.537045046380086,-0.535294015924552 +0.270809458146069,0.49730671702117,0.437959618894633,0.593277690983777 +2.6534894732648,4.06202864761973,2.38044875234785,4.59654020464499 +1.21160151370958,1.45673926500163,1.11512271266521,1.53678822927528 +23.1103924399316,56.5800741334215,17.8209369047534,25.9781879980362 +3.90292815811198,6.77545272858273,4.1584638889832,3.91439168162467 +-0.243571864641078,-0.499608141834362,-0.62167614040738,-0.615475606825472 +0.653304323441277,1.06147520721197,0.846756189970741,1.22210411533563 +0.345797173264803,0.529355039173874,0.465702430270659,0.599011462294818 +0.930411673264803,3.18482640756811,2.41563047092612,1.61171721467986 +-0.205065186290424,-0.24655508050623,-0.265755062691047,-0.260103475407846 +0.402928158111979,0.403845040295908,0.36861871657613,0.404111622482144 +0.753925094610201,1.36824670554121,1.03590693037895,1.62671101766615 +0.125993335358922,0.258434184321504,0.240052470519661,0.318369384125165 +3.90292815811198,8.74707186027217,5.36855379594562,3.91439168162467 +0.930411673264803,1.42429766877175,1.08030278830213,1.61171721467986 +-0.45138258409729,-0.511326272632766,-0.610583534874359,-0.530175966162011 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-1.61767417928472,-3.41035661238887,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.620757150983516,-0.898271021693848,-1.89372158978605,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.726981311521292,-2.08126668576674,-4.38769543016856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.673200246599499,-1.58450307845687,-3.34042579164813,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.492929478116561,-1.90704780573556,-4.02040978196713,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.38976630767715,-1.40117246335719,-2.95393091927837,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.420904215310721,-1.84045938985433,-3.88002907532231,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.7381340288809,-1.61767417928472,-3.41035661238887,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.459547789218049,-0.839507157588421,-1.76983648666221,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.92330948529022,-1.70123288555145,-3.58651383248209,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.626049742285362,-0.899988560434626,-1.89734247937968,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.395745764641078,-1.81511298720045,-3.82659416673698,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.626049742285362,-2.012435600104,-4.24258676049096,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-1.14939060045931,-2.30722644803752,-4.86406043571912,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.726981311521292,-2.08126668576674,-4.38769543016856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.490841455916781,-0.852043520265558,-1.79626545975133,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.492929478116561,-1.47719287840705,-3.11419602609762,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.726981311521292,-2.08126668576674,-4.38769543016856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.14939060045931,-1.78716992183572,-3.76768501249731,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.889607560068417,-2.17798385852388,-4.59159313334492,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.759620977499219,-0.940013982450407,-1.98172347796589,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.38976630767715,-1.80890587191561,-3.81350841873743,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.538185752645995,-0.86988079802457,-1.83386974306836,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.630280269314285,-1.56118982651361,-3.29127714111076,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.492929478116561,-1.90704780573556,-4.02040978196713,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.492929478116561,-1.90704780573556,-4.02040978196713,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.889607560068417,-2.17798385852388,-4.59159313334492,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.726981311521292,-2.08126668576674,-4.38769543016856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.630280269314285,-1.56118982651361,-3.29127714111076,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.38976630767715,-1.80890587191561,-3.81350841873743,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.38976630767715,-1.40117246335719,-2.95393091927837,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.626049742285362,-0.899988560434626,-1.89734247937968,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.626049742285362,-1.55882591290355,-3.28629357364431,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.395745764641078,-1.81511298720045,-3.82659416673698,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.38976630767715,-1.80890587191561,-3.81350841873743,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.889607560068417,-2.17798385852388,-4.59159313334492,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-1.14939060045931,-2.30722644803752,-4.86406043571912,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.538185752645995,-0.86988079802457,-1.83386974306836,-1 +-0.889607560068417,-2.17798385852388,-4.59159313334492,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.626049742285362,-0.899988560434626,-1.89734247937968,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.463465905389799,-0.841112336906796,-1.77322050179492,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.538185752645995,-0.86988079802457,-1.83386974306836,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-1.56118982651361,-3.29127714111076,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.395745764641078,-1.81511298720045,-3.82659416673698,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.538185752645995,-0.86988079802457,-1.83386974306836,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.620757150983516,-0.898271021693848,-1.89372158978605,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.492929478116561,-1.47719287840705,-3.11419602609762,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-1.70123288555145,-3.58651383248209,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.492929478116561,-1.47719287840705,-3.11419602609762,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.626049742285362,-0.899988560434626,-1.89734247937968,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.395745764641078,-1.81511298720045,-3.82659416673698,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.492929478116561,-1.47719287840705,-3.11419602609762,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-1.14939060045931,-2.30722644803752,-4.86406043571912,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.463465905389799,-0.841112336906796,-1.77322050179492,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.574834401514413,-0.882870730357297,-1.86125492495028,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.14939060045931,-2.30722644803752,-4.86406043571912,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.630280269314285,-1.56118982651361,-3.29127714111076,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.759620977499219,-0.940013982450407,-1.98172347796589,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.648627614419656,-2.02854186394464,-4.27654174604565,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.538185752645995,-0.86988079802457,-1.83386974306836,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.7381340288809,-1.61767417928472,-3.41035661238887,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.676064016647551,-2.04753937404507,-4.31659201390525,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.538185752645995,-0.86988079802457,-1.83386974306836,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.676064016647551,-2.04753937404507,-4.31659201390525,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.626049742285362,-0.899988560434626,-1.89734247937968,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.420904215310721,-1.42561371325538,-3.00545759830478,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.395745764641078,-1.81511298720045,-3.82659416673698,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.92330948529022,-1.70123288555145,-3.58651383248209,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.38976630767715,-1.80890587191561,-3.81350841873743,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.7381340288809,-1.61767417928472,-3.41035661238887,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.14939060045931,-2.30722644803752,-4.86406043571912,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.492929478116561,-1.90704780573556,-4.02040978196713,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-1.70123288555145,-3.58651383248209,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.676064016647551,-2.04753937404507,-4.31659201390525,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-1.14939060045931,-1.78716992183572,-3.76768501249731,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.459547789218049,-0.839507157588421,-1.76983648666221,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-1.61767417928472,-3.41035661238887,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.395745764641078,-1.81511298720045,-3.82659416673698,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.395745764641078,-1.81511298720045,-3.82659416673698,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.20099540058636,-1.80491780771741,-3.8051008411899,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.459547789218049,-0.839507157588421,-1.76983648666221,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.92330948529022,-1.70123288555145,-3.58651383248209,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-1.70123288555145,-3.58651383248209,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.395745764641078,-1.40598047418243,-2.96406709609335,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-1.14939060045931,-2.30722644803752,-4.86406043571912,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.38976630767715,-1.80890587191561,-3.81350841873743,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.86444375798835,-2.16396767603721,-4.56204442617263,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.630280269314285,-1.56118982651361,-3.29127714111076,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.726981311521292,-2.08126668576674,-4.38769543016856,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.38976630767715,-1.40117246335719,-2.95393091927837,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.620757150983516,-0.898271021693848,-1.89372158978605,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.395745764641078,-1.81511298720045,-3.82659416673698,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.92330948529022,-1.70123288555145,-3.58651383248209,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.676064016647551,-2.04753937404507,-4.31659201390525,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.574834401514413,-0.882870730357297,-1.86125492495028,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.490841455916781,-0.852043520265558,-1.79626545975133,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.492929478116561,-1.90704780573556,-4.02040978196713,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.630280269314285,-1.56118982651361,-3.29127714111076,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.889607560068417,-1.68705904247431,-3.55663274760104,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.648627614419656,-1.57130177122843,-3.31259499235912,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.676064016647551,-2.04753937404507,-4.31659201390525,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.14939060045931,-2.30722644803752,-4.86406043571912,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-1.61767417928472,-3.41035661238887,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.395745764641078,-1.40598047418243,-2.96406709609335,-1 +-0.86444375798835,-2.16396767603721,-4.56204442617263,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.630280269314285,-1.56118982651361,-3.29127714111076,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.420904215310721,-1.84045938985433,-3.88002907532231,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.395745764641078,-1.81511298720045,-3.82659416673698,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.676064016647551,-2.04753937404507,-4.31659201390525,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.759620977499219,-0.940013982450407,-1.98172347796589,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.574834401514413,-1.9741589684238,-4.1618925356451,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.92330948529022,-1.70123288555145,-3.58651383248209,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.38976630767715,-1.80890587191561,-3.81350841873743,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.492929478116561,-1.90704780573556,-4.02040978196713,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.492929478116561,-1.90704780573556,-4.02040978196713,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.620757150983516,-0.898271021693848,-1.89372158978605,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.726981311521292,-2.08126668576674,-4.38769543016856,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.726981311521292,-2.08126668576674,-4.38769543016856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.626049742285362,-0.899988560434626,-1.89734247937968,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.676064016647551,-1.5860171792761,-3.34361779644539,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.92330948529022,-1.70123288555145,-3.58651383248209,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.538185752645995,-0.86988079802457,-1.83386974306836,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.492929478116561,-1.90704780573556,-4.02040978196713,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-1.61767417928472,-3.41035661238887,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.7381340288809,-1.61767417928472,-3.41035661238887,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.492929478116561,-1.47719287840705,-3.11419602609762,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.86444375798835,-0.967755764946288,-2.0402082906592,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.463465905389799,-1.8807843620373,-3.96504158110973,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.7381340288809,-1.61767417928472,-3.41035661238887,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.86444375798835,-0.967755764946288,-2.0402082906592,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.14939060045931,-1.78716992183572,-3.76768501249731,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.420904215310721,-1.84045938985433,-3.88002907532231,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.395745764641078,-1.81511298720045,-3.82659416673698,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.492929478116561,-1.47719287840705,-3.11419602609762,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.626049742285362,-0.899988560434626,-1.89734247937968,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.889607560068417,-1.68705904247431,-3.55663274760104,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.626049742285362,-0.899988560434626,-1.89734247937968,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-1.14939060045931,-2.30722644803752,-4.86406043571912,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.420904215310721,-1.84045938985433,-3.88002907532231,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-1.14939060045931,-2.30722644803752,-4.86406043571912,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.889607560068417,-2.17798385852388,-4.59159313334492,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.7381340288809,-1.61767417928472,-3.41035661238887,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.726981311521292,-2.08126668576674,-4.38769543016856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.889607560068417,-1.68705904247431,-3.55663274760104,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.538185752645995,-0.86988079802457,-1.83386974306836,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.459547789218049,-1.87719507196534,-3.95747469323611,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.86444375798835,-0.967755764946288,-2.0402082906592,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.574834401514413,-0.882870730357297,-1.86125492495028,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.538185752645995,-1.9451125967047,-4.10065740738093,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.7381340288809,-1.61767417928472,-3.41035661238887,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.676064016647551,-2.04753937404507,-4.31659201390525,-1 +-0.538185752645995,-0.86988079802457,-1.83386974306836,-1 +-0.459547789218049,-1.45406905026088,-3.06544671598815,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.673200246599499,-1.58450307845687,-3.34042579164813,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.420904215310721,-1.42561371325538,-3.00545759830478,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.38976630767715,-1.40117246335719,-2.95393091927837,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.492929478116561,-1.90704780573556,-4.02040978196713,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.620757150983516,-0.898271021693848,-1.89372158978605,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.630280269314285,-1.56118982651361,-3.29127714111076,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.92330948529022,-1.70123288555145,-3.58651383248209,-1 +-0.538185752645995,-1.9451125967047,-4.10065740738093,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.538185752645995,-0.86988079802457,-1.83386974306836,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.626049742285362,-2.012435600104,-4.24258676049096,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.626049742285362,-0.899988560434626,-1.89734247937968,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.630280269314285,-1.56118982651361,-3.29127714111076,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.395745764641078,-1.40598047418243,-2.96406709609335,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.395745764641078,-1.81511298720045,-3.82659416673698,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.463465905389799,-0.841112336906796,-1.77322050179492,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.38976630767715,-1.40117246335719,-2.95393091927837,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.626049742285362,-0.899988560434626,-1.89734247937968,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.420904215310721,-1.84045938985433,-3.88002907532231,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.7381340288809,-1.61767417928472,-3.41035661238887,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.626049742285362,-0.899988560434626,-1.89734247937968,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.889607560068417,-2.17798385852388,-4.59159313334492,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.538185752645995,-0.86988079802457,-1.83386974306836,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.626049742285362,-0.899988560434626,-1.89734247937968,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.492929478116561,-1.90704780573556,-4.02040978196713,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.463465905389799,-0.841112336906796,-1.77322050179492,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.7381340288809,-1.61767417928472,-3.41035661238887,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.620757150983516,-0.898271021693848,-1.89372158978605,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.538185752645995,-0.86988079802457,-1.83386974306836,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.38976630767715,-1.40117246335719,-2.95393091927837,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.14939060045931,-2.30722644803752,-4.86406043571912,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.38976630767715,-1.40117246335719,-2.95393091927837,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-1.14939060045931,-2.30722644803752,-4.86406043571912,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.676064016647551,-2.04753937404507,-4.31659201390525,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.492929478116561,-1.47719287840705,-3.11419602609762,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.574834401514413,-0.882870730357297,-1.86125492495028,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.14939060045931,-1.78716992183572,-3.76768501249731,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.420904215310721,-1.84045938985433,-3.88002907532231,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.889607560068417,-1.68705904247431,-3.55663274760104,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.574834401514413,-0.882870730357297,-1.86125492495028,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-2.25678401882814,-4.75771845771016,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.889607560068417,-2.17798385852388,-4.59159313334492,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-1.61767417928472,-3.41035661238887,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.530054121598813,-0.866906079406237,-1.82759848558033,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.86444375798835,-2.16396767603721,-4.56204442617263,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.673200246599499,-2.04558467829262,-4.31247115343165,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.726981311521292,-2.08126668576674,-4.38769543016856,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.20099540058636,-1.80491780771741,-3.8051008411899,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.92330948529022,-2.19628221125372,-4.63016944804856,-1 +-0.38976630767715,-1.40117246335719,-2.95393091927837,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.38976630767715,-1.80890587191561,-3.81350841873743,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.889607560068417,-2.17798385852388,-4.59159313334492,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-1.04183748786966,-1.74809738418168,-3.68531287053101,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.14939060045931,-2.30722644803752,-4.86406043571912,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.456463241853931,-1.87435267131424,-3.95148238651597,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-1.73090821758812,-3.64907492552053,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.534573376558723,-0.868563646821903,-1.83109294451952,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.20099540058636,-2.33013887018758,-4.91236406285611,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.420904215310721,-0.823078461108413,-1.73520175341927,-1 +-0.395745764641078,-1.40598047418243,-2.96406709609335,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.630280269314285,-0.901353366593738,-1.90021974339796,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.626049742285362,-0.899988560434626,-1.89734247937968,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.38976630767715,-0.808967298900367,-1.70545281141292,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.538185752645995,-0.86988079802457,-1.83386974306836,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.534573376558723,-1.94216735707889,-4.0944482970659,-1 +-0.456463241853931,-1.45186733618389,-3.06080509516166,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-1.20099540058636,-1.0420697821508,-2.19687599495466,-1 +-0.92330948529022,-0.982207264427374,-2.07067472663585,-1 +-0.92330948529022,-1.70123288555145,-3.58651383248209,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.337920672071078,-1.75173466071087,-3.69298092273909,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.726981311521292,-0.930770757736024,-1.96223704928442,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-1.14939060045931,-2.30722644803752,-4.86406043571912,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.85138258409729,-1.6704700702599,-3.52166012344187,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-0.676064016647551,-0.915687445394429,-1.93043863484497,-1 +-0.676064016647551,-2.04753937404507,-4.31659201390525,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.492929478116561,-1.47719287840705,-3.11419602609762,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.395745764641078,-0.811743205244581,-1.71130493582561,-1 +-0.630280269314285,-2.01548739945189,-4.24902051842504,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.492929478116561,-0.852857705993306,-1.79798191397672,-1 +-1.14939060045931,-2.30722644803752,-4.86406043571912,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.788398486290424,-1.64183091222219,-3.46128347699607,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.620757150983516,-0.898271021693848,-1.89372158978605,-1 +-0.85138258409729,-2.15656758748485,-4.5464436696977,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.85138258409729,-0.964446344737769,-2.03323142026353,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.337920672071078,-1.3568878335815,-2.86057072232604,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.676064016647551,-2.04753937404507,-4.31659201390525,-1 +-0.7381340288809,-0.933964622871142,-1.96897030819533,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-1.14939060045931,-1.03182303545946,-2.17527395618704,-1 +-0.534573376558723,-1.50439636590285,-3.17154601328871,-1 +-0.7381340288809,-2.08840838531983,-4.40275145480347,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.889607560068417,-0.974023992311335,-2.0534228742361,-1 +-0.456463241853931,-0.838235997373393,-1.76715664562856,-1 +-0.577279726735197,-1.97604541203633,-4.1658695079738,-1 +-1.04183748786966,-1.00926449532698,-2.12771637784907,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.337920672071078,-0.783399555978409,-1.6515512765709,-1 +-0.788398486290424,-2.11959459344169,-4.46849775430289,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.577279726735197,-1.53063819443325,-3.22686864537116,-1 +-0.788398486290424,-0.947911519135329,-1.99837294718528,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.577279726735197,-0.883714373587962,-1.8630334810446,-1 +-0.997071441888021,-0.999340325367039,-2.10679439054239,-1 +-0.673200246599499,-0.914813278878867,-1.92859573001602,-1 +-0.997071441888021,-2.23459290017746,-4.71093547186803,-1 diff --git a/statsmodels/genmod/tests/results/stata_cancer_glm.csv b/statsmodels/genmod/tests/results/stata_cancer_glm.csv new file mode 100644 index 0000000..e6f92e6 --- /dev/null +++ b/statsmodels/genmod/tests/results/stata_cancer_glm.csv @@ -0,0 +1,49 @@ +studytime,age,drug +1,61,1 +1,65,1 +2,59,1 +3,52,1 +4,56,1 +4,67,1 +5,63,1 +5,58,1 +8,56,1 +8,58,1 +8,52,1 +8,49,1 +11,50,1 +11,55,1 +12,49,1 +12,62,1 +15,51,1 +17,49,1 +22,57,1 +23,52,1 +6,67,2 +6,65,2 +7,58,2 +9,56,2 +10,49,2 +11,61,2 +13,62,2 +15,50,2 +16,67,2 +19,50,2 +20,55,2 +22,58,2 +23,47,2 +32,52,2 +6,55,3 +10,54,3 +17,60,3 +19,49,3 +24,58,3 +25,50,3 +25,55,3 +28,57,3 +28,48,3 +32,56,3 +33,60,3 +34,62,3 +35,48,3 +39,52,3 diff --git a/statsmodels/genmod/tests/results/stata_lbw_glm.csv b/statsmodels/genmod/tests/results/stata_lbw_glm.csv new file mode 100644 index 0000000..e083b5b --- /dev/null +++ b/statsmodels/genmod/tests/results/stata_lbw_glm.csv @@ -0,0 +1,191 @@ +id,low,age,lwt,race,smoke,ptl,ht,ui,ftv,bwt +85,0,19,182,"black",0,0,0,1,0,2523 +86,0,33,155,"other",0,0,0,0,3,2551 +87,0,20,105,"white",1,0,0,0,1,2557 +88,0,21,108,"white",1,0,0,1,2,2594 +89,0,18,107,"white",1,0,0,1,0,2600 +91,0,21,124,"other",0,0,0,0,0,2622 +92,0,22,118,"white",0,0,0,0,1,2637 +93,0,17,103,"other",0,0,0,0,1,2637 +94,0,29,123,"white",1,0,0,0,1,2663 +95,0,26,113,"white",1,0,0,0,0,2665 +96,0,19,95,"other",0,0,0,0,0,2722 +97,0,19,150,"other",0,0,0,0,1,2733 +98,0,22,95,"other",0,0,1,0,0,2750 +99,0,30,107,"other",0,1,0,1,2,2750 +100,0,18,100,"white",1,0,0,0,0,2769 +101,0,18,100,"white",1,0,0,0,0,2769 +102,0,15,98,"black",0,0,0,0,0,2778 +103,0,25,118,"white",1,0,0,0,3,2782 +104,0,20,120,"other",0,0,0,1,0,2807 +105,0,28,120,"white",1,0,0,0,1,2821 +106,0,32,121,"other",0,0,0,0,2,2835 +107,0,31,100,"white",0,0,0,1,3,2835 +108,0,36,202,"white",0,0,0,0,1,2836 +109,0,28,120,"other",0,0,0,0,0,2863 +111,0,25,120,"other",0,0,0,1,2,2877 +112,0,28,167,"white",0,0,0,0,0,2877 +113,0,17,122,"white",1,0,0,0,0,2906 +114,0,29,150,"white",0,0,0,0,2,2920 +115,0,26,168,"black",1,0,0,0,0,2920 +116,0,17,113,"black",0,0,0,0,1,2920 +117,0,17,113,"black",0,0,0,0,1,2920 +118,0,24,90,"white",1,1,0,0,1,2948 +119,0,35,121,"black",1,1,0,0,1,2948 +120,0,25,155,"white",0,0,0,0,1,2977 +121,0,25,125,"black",0,0,0,0,0,2977 +123,0,29,140,"white",1,0,0,0,2,2977 +124,0,19,138,"white",1,0,0,0,2,2977 +125,0,27,124,"white",1,0,0,0,0,2922 +126,0,31,215,"white",1,0,0,0,2,3005 +127,0,33,109,"white",1,0,0,0,1,3033 +128,0,21,185,"black",1,0,0,0,2,3042 +129,0,19,189,"white",0,0,0,0,2,3062 +130,0,23,130,"black",0,0,0,0,1,3062 +131,0,21,160,"white",0,0,0,0,0,3062 +132,0,18,90,"white",1,0,0,1,0,3076 +133,0,18,90,"white",1,0,0,1,0,3076 +134,0,32,132,"white",0,0,0,0,4,3080 +135,0,19,132,"other",0,0,0,0,0,3090 +136,0,24,115,"white",0,0,0,0,2,3090 +137,0,22,85,"other",1,0,0,0,0,3090 +138,0,22,120,"white",0,0,1,0,1,3100 +139,0,23,128,"other",0,0,0,0,0,3104 +140,0,22,130,"white",1,0,0,0,0,3132 +141,0,30,95,"white",1,0,0,0,2,3147 +142,0,19,115,"other",0,0,0,0,0,3175 +143,0,16,110,"other",0,0,0,0,0,3175 +144,0,21,110,"other",1,0,0,1,0,3203 +145,0,30,153,"other",0,0,0,0,0,3203 +146,0,20,103,"other",0,0,0,0,0,3203 +147,0,17,119,"other",0,0,0,0,0,3225 +148,0,17,119,"other",0,0,0,0,0,3225 +149,0,23,119,"other",0,0,0,0,2,3232 +150,0,24,110,"other",0,0,0,0,0,3232 +151,0,28,140,"white",0,0,0,0,0,3234 +154,0,26,133,"other",1,2,0,0,0,3260 +155,0,20,169,"other",0,1,0,1,1,3274 +156,0,24,115,"other",0,0,0,0,2,3274 +159,0,28,250,"other",1,0,0,0,6,3303 +160,0,20,141,"white",0,2,0,1,1,3317 +161,0,22,158,"black",0,1,0,0,2,3317 +162,0,22,112,"white",1,2,0,0,0,3317 +163,0,31,150,"other",1,0,0,0,2,3321 +164,0,23,115,"other",1,0,0,0,1,3331 +166,0,16,112,"black",0,0,0,0,0,3374 +167,0,16,135,"white",1,0,0,0,0,3374 +168,0,18,229,"black",0,0,0,0,0,3402 +169,0,25,140,"white",0,0,0,0,1,3416 +170,0,32,134,"white",1,1,0,0,4,3430 +172,0,20,121,"black",1,0,0,0,0,3444 +173,0,23,190,"white",0,0,0,0,0,3459 +174,0,22,131,"white",0,0,0,0,1,3460 +175,0,32,170,"white",0,0,0,0,0,3473 +176,0,30,110,"other",0,0,0,0,0,3475 +177,0,20,127,"other",0,0,0,0,0,3487 +179,0,23,123,"other",0,0,0,0,0,3544 +180,0,17,120,"other",1,0,0,0,0,3572 +181,0,19,105,"other",0,0,0,0,0,3572 +182,0,23,130,"white",0,0,0,0,0,3586 +183,0,36,175,"white",0,0,0,0,0,3600 +184,0,22,125,"white",0,0,0,0,1,3614 +185,0,24,133,"white",0,0,0,0,0,3614 +186,0,21,134,"other",0,0,0,0,2,3629 +187,0,19,235,"white",1,0,1,0,0,3629 +188,0,25,95,"white",1,3,0,1,0,3637 +189,0,16,135,"white",1,0,0,0,0,3643 +190,0,29,135,"white",0,0,0,0,1,3651 +191,0,29,154,"white",0,0,0,0,1,3651 +192,0,19,147,"white",1,0,0,0,0,3651 +193,0,19,147,"white",1,0,0,0,0,3651 +195,0,30,137,"white",0,0,0,0,1,3699 +196,0,24,110,"white",0,0,0,0,1,3728 +197,0,19,184,"white",1,0,1,0,0,3756 +199,0,24,110,"other",0,1,0,0,0,3770 +200,0,23,110,"white",0,0,0,0,1,3770 +201,0,20,120,"other",0,0,0,0,0,3770 +202,0,25,241,"black",0,0,1,0,0,3790 +203,0,30,112,"white",0,0,0,0,1,3799 +204,0,22,169,"white",0,0,0,0,0,3827 +205,0,18,120,"white",1,0,0,0,2,3856 +206,0,16,170,"black",0,0,0,0,4,3860 +207,0,32,186,"white",0,0,0,0,2,3860 +208,0,18,120,"other",0,0,0,0,1,3884 +209,0,29,130,"white",1,0,0,0,2,3884 +210,0,33,117,"white",0,0,0,1,1,3912 +211,0,20,170,"white",1,0,0,0,0,3940 +212,0,28,134,"other",0,0,0,0,1,3941 +213,0,14,135,"white",0,0,0,0,0,3941 +214,0,28,130,"other",0,0,0,0,0,3969 +215,0,25,120,"white",0,0,0,0,2,3983 +216,0,16,95,"other",0,0,0,0,1,3997 +217,0,20,158,"white",0,0,0,0,1,3997 +218,0,26,160,"other",0,0,0,0,0,4054 +219,0,21,115,"white",0,0,0,0,1,4054 +220,0,22,129,"white",0,0,0,0,0,4111 +221,0,25,130,"white",0,0,0,0,2,4153 +222,0,31,120,"white",0,0,0,0,2,4167 +223,0,35,170,"white",0,1,0,0,1,4174 +224,0,19,120,"white",1,0,0,0,0,4238 +225,0,24,116,"white",0,0,0,0,1,4593 +226,0,45,123,"white",0,0,0,0,1,4990 +4,1,28,120,"other",1,1,0,1,0,709 +10,1,29,130,"white",0,0,0,1,2,1021 +11,1,34,187,"black",1,0,1,0,0,1135 +13,1,25,105,"other",0,1,1,0,0,1330 +15,1,25,85,"other",0,0,0,1,0,1474 +16,1,27,150,"other",0,0,0,0,0,1588 +17,1,23,97,"other",0,0,0,1,1,1588 +18,1,24,128,"black",0,1,0,0,1,1701 +19,1,24,132,"other",0,0,1,0,0,1729 +20,1,21,165,"white",1,0,1,0,1,1790 +22,1,32,105,"white",1,0,0,0,0,1818 +23,1,19,91,"white",1,2,0,1,0,1885 +24,1,25,115,"other",0,0,0,0,0,1893 +25,1,16,130,"other",0,0,0,0,1,1899 +26,1,25,92,"white",1,0,0,0,0,1928 +27,1,20,150,"white",1,0,0,0,2,1928 +28,1,21,200,"black",0,0,0,1,2,1928 +29,1,24,155,"white",1,1,0,0,0,1936 +30,1,21,103,"other",0,0,0,0,0,1970 +31,1,20,125,"other",0,0,0,1,0,2055 +32,1,25,89,"other",0,2,0,0,1,2055 +33,1,19,102,"white",0,0,0,0,2,2082 +34,1,19,112,"white",1,0,0,1,0,2084 +35,1,26,117,"white",1,1,0,0,0,2084 +36,1,24,138,"white",0,0,0,0,0,2100 +37,1,17,130,"other",1,1,0,1,0,2125 +40,1,20,120,"black",1,0,0,0,3,2126 +42,1,22,130,"white",1,1,0,1,1,2187 +43,1,27,130,"black",0,0,0,1,0,2187 +44,1,20,80,"other",1,0,0,1,0,2211 +45,1,17,110,"white",1,0,0,0,0,2225 +46,1,25,105,"other",0,1,0,0,1,2240 +47,1,20,109,"other",0,0,0,0,0,2240 +49,1,18,148,"other",0,0,0,0,0,2282 +50,1,18,110,"black",1,1,0,0,0,2296 +51,1,20,121,"white",1,1,0,1,0,2296 +52,1,21,100,"other",0,1,0,0,4,2301 +54,1,26,96,"other",0,0,0,0,0,2325 +56,1,31,102,"white",1,1,0,0,1,2353 +57,1,15,110,"white",0,0,0,0,0,2353 +59,1,23,187,"black",1,0,0,0,1,2367 +60,1,20,122,"black",1,0,0,0,0,2381 +61,1,24,105,"black",1,0,0,0,0,2381 +62,1,15,115,"other",0,0,0,1,0,2381 +63,1,23,120,"other",0,0,0,0,0,2395 +65,1,30,142,"white",1,1,0,0,0,2410 +67,1,22,130,"white",1,0,0,0,1,2410 +68,1,17,120,"white",1,0,0,0,3,2414 +69,1,23,110,"white",1,1,0,0,0,2424 +71,1,17,120,"black",0,0,0,0,2,2438 +75,1,26,154,"other",0,1,1,0,1,2442 +76,1,20,106,"other",0,0,0,0,3,2450 +77,1,26,190,"white",1,0,0,0,0,2466 +78,1,14,101,"other",1,1,0,0,0,2466 +79,1,28,95,"white",1,0,0,0,2,2466 +81,1,14,100,"other",0,0,0,0,2,2495 +82,1,23,94,"other",1,0,0,0,0,2495 +83,1,17,142,"black",0,0,1,0,0,2495 +84,1,21,130,"white",1,0,1,0,3,2495 + diff --git a/statsmodels/genmod/tests/results/stata_medpar1_glm.csv b/statsmodels/genmod/tests/results/stata_medpar1_glm.csv new file mode 100644 index 0000000..05ae405 --- /dev/null +++ b/statsmodels/genmod/tests/results/stata_medpar1_glm.csv @@ -0,0 +1,3677 @@ +los,admitype,codes +8,"type1|2",9 +1,"type1|2",9 +23,"type1|2",9 +8,"type1|2",9 +1,"type1|2",7 +1,"type1|2",9 +7,"type1|2",9 +18,"type1|2",8 +9,"type1|2",9 +19,"type1|2",9 +12,"type1|2",9 +1,"type1|2",9 +18,"type1|2",9 +1,"type1|2",7 +11,"type1|2",9 +2,"type1|2",6 +19,"type1|2",9 +1,"type1|2",6 +2,"type1|2",5 +1,"type1|2",5 +10,"type1|2",9 +3,"type1|2",9 +5,"type1|2",8 +17,"type1|2",9 +1,"type1|2",7 +17,"type1|2",9 +6,"type1|2",4 +16,"type1|2",9 +20,"type1|2",9 +9,"type1|2",9 +1,"type1|2",7 +1,"type1|2",9 +7,"type1|2",9 +1,"type1|2",9 +6,"type1|2",9 +19,"type1|2",9 +14,"type1|2",3 +14,"type1|2",9 +5,"type1|2",9 +1,"type1|2",4 +16,"type1|2",9 +8,"type1|2",9 +75,"type1|2",5 +25,"type1|2",9 +11,"type1|2",9 +9,"type1|2",9 +12,"type1|2",6 +11,"type1|2",8 +9,"type1|2",8 +9,"type1|2",4 +11,"type1|2",5 +3,"type1|2",9 +7,"type1|2",9 +1,"type1|2",9 +27,"type1|2",9 +4,"type1|2",6 +1,"type1|2",9 +10,"type1|2",9 +3,"type1|2",8 +1,"type1|2",9 +10,"type1|2",9 +4,"type1|2",9 +6,"type1|2",9 +1,"type1|2",7 +3,"type1|2",8 +4,"type1|2",8 +3,"type1|2",6 +36,"type1|2",9 +7,"type1|2",9 +5,"type1|2",9 +4,"type1|2",7 +7,"type1|2",9 +3,"type1|2",9 +7,"type1|2",3 +2,"type1|2",7 +10,"type1|2",9 +4,"type1|2",9 +6,"type1|2",9 +9,"type1|2",9 +6,"type1|2",9 +5,"type1|2",6 +3,"type1|2",6 +16,"type1|2",9 +3,"type1|2",8 +7,"type1|2",9 +13,"type1|2",9 +4,"type1|2",9 +3,"type1|2",5 +4,"type1|2",9 +5,"type1|2",8 +7,"type1|2",9 +8,"type1|2",8 +4,"type1|2",9 +3,"type1|2",9 +2,"type1|2",9 +2,"type1|2",9 +2,"type1|2",9 +2,"type1|2",9 +3,"type1|2",9 +12,"type1|2",9 +13,"type1|2",9 +6,"type1|2",9 +7,"type1|2",6 +4,"type1|2",8 +2,"type1|2",6 +3,"type1|2",9 +15,"type1|2",9 +2,"type1|2",5 +3,"type1|2",7 +6,"type1|2",9 +11,"type1|2",5 +1,"type1|2",8 +4,"type1|2",3 +5,"type1|2",9 +9,"type1|2",9 +5,"type1|2",6 +3,"type1|2",6 +6,"type1|2",8 +5,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +3,"type1|2",8 +2,"type1|2",4 +2,"type1|2",9 +5,"type1|2",8 +4,"type1|2",8 +6,"type1|2",9 +3,"type1|2",9 +8,"type1|2",9 +9,"type1|2",9 +3,"type1|2",9 +2,"type1|2",8 +4,"type1|2",9 +3,"type1|2",8 +2,"type1|2",9 +5,"type1|2",9 +5,"type1|2",8 +9,"type1|2",9 +6,"type1|2",9 +9,"type1|2",9 +3,"type1|2",9 +2,"type1|2",9 +7,"type1|2",7 +7,"type1|2",9 +5,"type1|2",9 +2,"type1|2",9 +10,"type1|2",9 +6,"type1|2",9 +3,"type1|2",9 +9,"type1|2",9 +6,"type1|2",9 +9,"type1|2",9 +4,"type1|2",7 +13,"type1|2",9 +4,"type1|2",9 +5,"type1|2",8 +2,"type1|2",3 +8,"type1|2",9 +8,"type1|2",9 +2,"type1|2",6 +9,"type1|2",9 +7,"type1|2",7 +1,"type1|2",4 +7,"type1|2",7 +5,"type1|2",8 +5,"type1|2",8 +13,"type1|2",9 +4,"type1|2",9 +7,"type1|2",7 +3,"type1|2",9 +6,"type1|2",9 +3,"type1|2",4 +4,"type1|2",9 +2,"type1|2",8 +21,"type1|2",9 +5,"type1|2",8 +5,"type1|2",9 +4,"type1|2",6 +9,"type1|2",9 +3,"type1|2",4 +5,"type1|2",5 +4,"type1|2",9 +13,"type1|2",9 +5,"type1|2",9 +5,"type1|2",9 +8,"type1|2",9 +4,"type1|2",9 +6,"type1|2",8 +4,"type1|2",9 +3,"type1|2",4 +4,"type1|2",6 +2,"type1|2",9 +6,"type1|2",9 +5,"type1|2",9 +4,"type1|2",9 +9,"type1|2",4 +6,"type1|2",9 +5,"type1|2",9 +4,"type1|2",9 +4,"type1|2",8 +3,"type1|2",7 +13,"type1|2",9 +2,"type1|2",9 +12,"type1|2",9 +3,"type1|2",5 +5,"type1|2",9 +4,"type1|2",8 +6,"type1|2",9 +7,"type1|2",9 +2,"type1|2",9 +3,"type1|2",9 +6,"type1|2",8 +7,"type1|2",9 +2,"type1|2",8 +6,"type1|2",9 +3,"type1|2",8 +3,"type1|2",4 +3,"type1|2",7 +1,"type1|2",6 +3,"type1|2",8 +6,"type1|2",8 +5,"type1|2",9 +8,"type1|2",9 +10,"type1|2",9 +3,"type1|2",8 +7,"type1|2",9 +6,"type1|2",9 +4,"type1|2",8 +5,"type1|2",7 +3,"type1|2",9 +4,"type1|2",6 +4,"type1|2",7 +6,"type1|2",9 +2,"type1|2",9 +11,"type1|2",9 +2,"type1|2",9 +5,"type1|2",8 +5,"type1|2",9 +2,"type1|2",4 +6,"type1|2",9 +12,"type1|2",6 +5,"type1|2",9 +3,"type1|2",8 +5,"type1|2",7 +5,"type1|2",4 +2,"type1|2",4 +6,"type1|2",9 +4,"type1|2",8 +16,"type1|2",9 +7,"type1|2",9 +7,"type1|2",9 +3,"type1|2",8 +4,"type1|2",4 +6,"type1|2",9 +2,"type1|2",9 +6,"type1|2",9 +5,"type1|2",9 +7,"type1|2",6 +6,"type1|2",9 +6,"type1|2",9 +4,"type1|2",9 +5,"type1|2",6 +10,"type1|2",9 +3,"type1|2",7 +8,"type1|2",9 +3,"type1|2",5 +8,"type1|2",4 +3,"type1|2",8 +6,"type1|2",7 +6,"type1|2",9 +5,"type1|2",9 +5,"type1|2",9 +1,"type1|2",6 +5,"type1|2",9 +5,"type1|2",9 +14,"type1|2",9 +3,"type1|2",8 +3,"type1|2",9 +7,"type1|2",9 +13,"type1|2",9 +4,"type1|2",9 +3,"type1|2",8 +11,"type1|2",9 +2,"type1|2",3 +3,"type1|2",5 +16,"type1|2",9 +39,"type1|2",9 +7,"type1|2",9 +4,"type1|2",5 +10,"type1|2",9 +4,"type1|2",9 +7,"type1|2",8 +18,"type1|2",9 +3,"type1|2",9 +6,"type1|2",8 +6,"type1|2",3 +13,"type1|2",9 +10,"type1|2",9 +6,"type1|2",9 +15,"type1|2",9 +3,"type1|2",4 +5,"type1|2",9 +4,"type1|2",8 +11,"type1|2",9 +11,"type1|2",6 +12,"type1|2",6 +5,"type1|2",8 +2,"type1|2",9 +5,"type1|2",8 +3,"type1|2",8 +2,"type1|2",9 +4,"type1|2",4 +2,"type1|2",9 +3,"type1|2",9 +1,"type1|2",9 +7,"type1|2",6 +9,"type1|2",8 +11,"type1|2",9 +4,"type1|2",3 +5,"type1|2",8 +4,"type1|2",6 +2,"type1|2",7 +7,"type1|2",9 +2,"type1|2",9 +6,"type1|2",9 +5,"type1|2",9 +4,"type1|2",4 +11,"type1|2",9 +2,"type1|2",6 +8,"type1|2",9 +4,"type1|2",8 +2,"type1|2",6 +2,"type1|2",5 +11,"type1|2",9 +6,"type1|2",9 +5,"type1|2",9 +2,"type1|2",5 +3,"type1|2",8 +7,"type1|2",9 +3,"type1|2",8 +5,"type1|2",7 +9,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +12,"type1|2",9 +3,"type1|2",6 +8,"type1|2",9 +7,"type1|2",9 +7,"type1|2",9 +7,"type1|2",9 +17,"type1|2",9 +5,"type1|2",3 +3,"type1|2",9 +8,"type1|2",9 +4,"type1|2",9 +10,"type1|2",9 +4,"type1|2",9 +1,"type1|2",9 +13,"type1|2",9 +13,"type1|2",9 +20,"type1|2",9 +3,"type1|2",5 +13,"type1|2",9 +21,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +8,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +15,"type1|2",8 +5,"type1|2",9 +4,"type1|2",9 +14,"type1|2",8 +3,"type1|2",9 +2,"type1|2",8 +8,"type1|2",9 +3,"type1|2",6 +4,"type1|2",8 +14,"type1|2",9 +4,"type1|2",8 +5,"type1|2",9 +8,"type1|2",8 +3,"type1|2",9 +7,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +2,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +2,"type1|2",9 +8,"type1|2",9 +6,"type1|2",3 +4,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +4,"type1|2",8 +6,"type1|2",9 +4,"type1|2",9 +6,"type1|2",8 +1,"type1|2",9 +2,"type1|2",9 +10,"type1|2",8 +7,"type1|2",7 +5,"type1|2",9 +7,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +2,"type1|2",7 +5,"type1|2",9 +3,"type1|2",8 +8,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +4,"type1|2",3 +2,"type1|2",9 +6,"type1|2",8 +5,"type1|2",8 +6,"type1|2",5 +5,"type1|2",7 +5,"type1|2",8 +17,"type1|2",9 +9,"type1|2",9 +19,"type1|2",9 +17,"type1|2",9 +5,"type1|2",3 +3,"type1|2",6 +3,"type1|2",5 +6,"type1|2",9 +9,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +8,"type1|2",9 +15,"type1|2",9 +25,"type1|2",9 +10,"type1|2",9 +5,"type1|2",5 +4,"type1|2",8 +4,"type1|2",9 +19,"type1|2",9 +6,"type1|2",7 +9,"type1|2",9 +3,"type1|2",8 +5,"type1|2",9 +3,"type1|2",9 +3,"type1|2",9 +3,"type1|2",7 +9,"type1|2",9 +8,"type1|2",9 +7,"type1|2",9 +8,"type1|2",9 +6,"type1|2",9 +16,"type1|2",8 +2,"type1|2",9 +4,"type1|2",6 +2,"type1|2",7 +5,"type1|2",9 +7,"type1|2",7 +5,"type1|2",8 +4,"type1|2",7 +6,"type1|2",7 +7,"type1|2",9 +5,"type1|2",7 +9,"type1|2",9 +4,"type1|2",9 +2,"type1|2",9 +10,"type1|2",5 +3,"type1|2",8 +3,"type1|2",9 +10,"type1|2",9 +6,"type1|2",9 +4,"type1|2",9 +6,"type1|2",9 +16,"type1|2",9 +6,"type1|2",9 +8,"type1|2",9 +12,"type1|2",9 +5,"type1|2",9 +15,"type1|2",8 +3,"type1|2",9 +9,"type1|2",8 +5,"type1|2",9 +2,"type1|2",5 +8,"type1|2",9 +11,"type1|2",9 +10,"type1|2",4 +8,"type1|2",8 +8,"type1|2",3 +3,"type1|2",9 +3,"type1|2",2 +7,"type1|2",9 +2,"type1|2",9 +2,"type1|2",7 +4,"type1|2",6 +3,"type1|2",9 +4,"type1|2",7 +2,"type1|2",4 +5,"type1|2",9 +9,"type1|2",9 +8,"type1|2",9 +17,"type1|2",9 +5,"type1|2",7 +4,"type1|2",5 +8,"type1|2",9 +6,"type1|2",8 +3,"type1|2",9 +15,"type1|2",6 +2,"type1|2",9 +4,"type1|2",5 +3,"type1|2",9 +6,"type1|2",9 +4,"type1|2",9 +1,"type1|2",6 +2,"type1|2",6 +20,"type1|2",5 +30,"type1|2",9 +3,"type1|2",8 +6,"type1|2",9 +3,"type1|2",9 +3,"type1|2",9 +3,"type1|2",9 +3,"type1|2",9 +7,"type1|2",9 +10,"type1|2",9 +5,"type1|2",9 +8,"type1|2",9 +6,"type1|2",9 +5,"type1|2",9 +4,"type1|2",4 +15,"type1|2",9 +4,"type1|2",9 +7,"type1|2",9 +3,"type1|2",7 +6,"type1|2",8 +1,"type1|2",9 +5,"type1|2",9 +5,"type1|2",7 +4,"type1|2",9 +6,"type1|2",9 +9,"type1|2",8 +4,"type1|2",5 +6,"type1|2",9 +10,"type1|2",9 +2,"type1|2",9 +6,"type1|2",9 +13,"type1|2",9 +6,"type1|2",9 +87,"type1|2",9 +6,"type1|2",9 +3,"type1|2",5 +3,"type1|2",7 +6,"type1|2",9 +2,"type1|2",7 +5,"type1|2",8 +4,"type1|2",9 +6,"type1|2",9 +6,"type1|2",9 +4,"type1|2",5 +6,"type1|2",9 +3,"type1|2",9 +5,"type1|2",9 +7,"type1|2",7 +7,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +8,"type1|2",9 +7,"type1|2",9 +2,"type1|2",8 +7,"type1|2",9 +7,"type1|2",9 +3,"type1|2",7 +3,"type1|2",8 +4,"type1|2",5 +9,"type1|2",9 +7,"type1|2",9 +2,"type1|2",9 +2,"type1|2",7 +8,"type1|2",9 +3,"type1|2",8 +3,"type1|2",6 +4,"type1|2",7 +4,"type1|2",5 +12,"type1|2",9 +9,"type1|2",9 +7,"type1|2",9 +10,"type1|2",8 +15,"type1|2",9 +1,"type1|2",9 +7,"type1|2",9 +15,"type1|2",9 +6,"type1|2",9 +7,"type1|2",9 +4,"type1|2",9 +12,"type1|2",9 +6,"type1|2",6 +2,"type1|2",9 +6,"type1|2",9 +4,"type1|2",8 +7,"type1|2",9 +10,"type1|2",9 +3,"type1|2",7 +7,"type1|2",9 +3,"type1|2",9 +8,"type1|2",9 +6,"type1|2",8 +8,"type1|2",9 +4,"type1|2",6 +2,"type1|2",9 +3,"type1|2",9 +1,"type1|2",9 +3,"type1|2",7 +7,"type1|2",9 +5,"type1|2",8 +3,"type1|2",8 +11,"type1|2",9 +11,"type1|2",7 +4,"type1|2",9 +6,"type1|2",8 +5,"type1|2",9 +4,"type1|2",9 +5,"type1|2",9 +6,"type1|2",5 +7,"type1|2",6 +7,"type1|2",9 +7,"type1|2",3 +3,"type1|2",7 +3,"type1|2",8 +4,"type1|2",9 +45,"type1|2",9 +6,"type1|2",9 +17,"type1|2",9 +6,"type1|2",9 +1,"type1|2",9 +9,"type1|2",9 +5,"type1|2",8 +3,"type1|2",9 +9,"type1|2",9 +4,"type1|2",5 +4,"type1|2",9 +4,"type1|2",8 +8,"type1|2",9 +7,"type1|2",4 +8,"type1|2",9 +12,"type1|2",9 +4,"type1|2",7 +2,"type1|2",9 +5,"type1|2",9 +5,"type1|2",9 +9,"type1|2",9 +6,"type1|2",9 +9,"type1|2",9 +8,"type1|2",9 +6,"type1|2",5 +4,"type1|2",8 +3,"type1|2",3 +6,"type1|2",9 +4,"type1|2",9 +5,"type1|2",8 +3,"type1|2",5 +7,"type1|2",4 +5,"type1|2",9 +3,"type1|2",9 +12,"type1|2",9 +4,"type1|2",9 +5,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +3,"type1|2",3 +4,"type1|2",9 +3,"type1|2",9 +3,"type1|2",9 +1,"type1|2",3 +8,"type1|2",9 +2,"type1|2",9 +6,"type1|2",8 +3,"type1|2",9 +3,"type1|2",9 +2,"type1|2",8 +7,"type1|2",9 +5,"type1|2",9 +4,"type1|2",3 +11,"type1|2",9 +7,"type1|2",5 +9,"type1|2",6 +3,"type1|2",6 +11,"type1|2",9 +8,"type1|2",9 +4,"type1|2",9 +7,"type1|2",9 +3,"type1|2",8 +5,"type1|2",9 +3,"type1|2",9 +3,"type1|2",8 +4,"type1|2",9 +6,"type1|2",9 +5,"type1|2",9 +12,"type1|2",9 +6,"type1|2",6 +7,"type1|2",6 +6,"type1|2",9 +9,"type1|2",9 +4,"type1|2",9 +8,"type1|2",9 +2,"type1|2",5 +7,"type1|2",8 +13,"type1|2",7 +2,"type1|2",7 +7,"type1|2",8 +5,"type1|2",9 +3,"type1|2",9 +19,"type1|2",9 +4,"type1|2",8 +5,"type1|2",9 +6,"type1|2",9 +7,"type1|2",8 +3,"type1|2",9 +2,"type1|2",9 +6,"type1|2",5 +6,"type1|2",9 +3,"type1|2",7 +3,"type1|2",9 +12,"type1|2",9 +3,"type1|2",9 +10,"type1|2",5 +10,"type1|2",4 +8,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +7,"type1|2",9 +7,"type1|2",9 +5,"type1|2",7 +6,"type1|2",9 +2,"type1|2",7 +9,"type1|2",9 +6,"type1|2",9 +3,"type1|2",9 +5,"type1|2",6 +7,"type1|2",9 +4,"type1|2",9 +17,"type1|2",9 +2,"type1|2",6 +7,"type1|2",8 +11,"type1|2",9 +4,"type1|2",9 +6,"type1|2",8 +8,"type1|2",8 +3,"type1|2",9 +10,"type1|2",9 +3,"type1|2",7 +2,"type1|2",9 +4,"type1|2",6 +5,"type1|2",9 +5,"type1|2",9 +3,"type1|2",9 +7,"type1|2",9 +8,"type1|2",9 +6,"type1|2",9 +13,"type1|2",9 +6,"type1|2",5 +1,"type1|2",9 +13,"type1|2",9 +10,"type1|2",9 +7,"type1|2",9 +9,"type1|2",9 +8,"type1|2",9 +4,"type1|2",4 +14,"type1|2",9 +4,"type1|2",8 +3,"type1|2",9 +5,"type1|2",7 +18,"type1|2",4 +8,"type1|2",7 +6,"type1|2",9 +5,"type1|2",3 +1,"type1|2",9 +4,"type1|2",9 +13,"type1|2",9 +4,"type1|2",2 +17,"type1|2",9 +2,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +3,"type1|2",7 +2,"type1|2",9 +31,"type1|2",9 +2,"type1|2",9 +21,"type1|2",9 +13,"type1|2",7 +5,"type1|2",7 +4,"type1|2",7 +8,"type1|2",9 +15,"type1|2",9 +5,"type1|2",8 +10,"type1|2",9 +4,"type1|2",8 +7,"type1|2",9 +7,"type1|2",9 +2,"type1|2",9 +7,"type1|2",9 +4,"type1|2",9 +8,"type1|2",9 +10,"type1|2",9 +4,"type1|2",7 +5,"type1|2",9 +2,"type1|2",4 +7,"type1|2",8 +2,"type1|2",7 +9,"type1|2",9 +11,"type1|2",9 +4,"type1|2",9 +7,"type1|2",9 +2,"type1|2",9 +2,"type1|2",9 +2,"type1|2",9 +6,"type1|2",9 +3,"type1|2",9 +7,"type1|2",9 +14,"type1|2",9 +4,"type1|2",9 +4,"type1|2",8 +9,"type1|2",6 +5,"type1|2",9 +1,"type1|2",9 +29,"type1|2",9 +5,"type1|2",7 +12,"type1|2",9 +7,"type1|2",9 +2,"type1|2",9 +3,"type1|2",9 +1,"type1|2",8 +5,"type1|2",9 +5,"type1|2",9 +10,"type1|2",7 +11,"type1|2",9 +15,"type1|2",9 +4,"type1|2",9 +12,"type1|2",8 +4,"type1|2",8 +10,"type1|2",9 +2,"type1|2",9 +4,"type1|2",8 +14,"type1|2",9 +4,"type1|2",9 +29,"type1|2",9 +4,"type1|2",8 +6,"type1|2",9 +3,"type1|2",9 +1,"type1|2",9 +3,"type1|2",6 +5,"type1|2",9 +15,"type1|2",9 +4,"type1|2",9 +11,"type1|2",9 +4,"type1|2",2 +3,"type1|2",9 +7,"type1|2",9 +6,"type1|2",9 +3,"type1|2",3 +6,"type1|2",8 +3,"type1|2",7 +6,"type1|2",9 +3,"type1|2",9 +9,"type1|2",8 +6,"type1|2",5 +8,"type1|2",9 +3,"type1|2",9 +5,"type1|2",7 +6,"type1|2",9 +2,"type1|2",3 +3,"type1|2",6 +5,"type1|2",8 +4,"type1|2",4 +35,"type1|2",9 +2,"type1|2",9 +5,"type1|2",9 +10,"type1|2",9 +5,"type1|2",9 +3,"type1|2",9 +32,"type1|2",9 +15,"type1|2",9 +2,"type1|2",8 +7,"type1|2",9 +17,"type1|2",9 +12,"type1|2",9 +9,"type1|2",9 +3,"type1|2",8 +8,"type1|2",9 +6,"type1|2",6 +4,"type1|2",8 +3,"type1|2",8 +12,"type1|2",9 +5,"type1|2",8 +9,"type1|2",9 +2,"type1|2",9 +2,"type1|2",9 +8,"type1|2",6 +2,"type1|2",9 +9,"type1|2",8 +2,"type1|2",9 +3,"type1|2",9 +2,"type1|2",5 +5,"type1|2",9 +7,"type1|2",9 +6,"type1|2",9 +6,"type1|2",8 +3,"type1|2",8 +5,"type1|2",9 +25,"type1|2",9 +13,"type1|2",9 +9,"type1|2",9 +2,"type1|2",9 +4,"type1|2",8 +3,"type1|2",9 +10,"type1|2",9 +2,"type1|2",9 +12,"type1|2",9 +4,"type1|2",9 +5,"type1|2",9 +5,"type1|2",2 +12,"type1|2",9 +8,"type1|2",6 +3,"type1|2",6 +8,"type1|2",9 +6,"type1|2",8 +4,"type1|2",9 +8,"type1|2",5 +5,"type1|2",9 +7,"type1|2",9 +2,"type1|2",9 +2,"type1|2",5 +7,"type1|2",9 +7,"type1|2",7 +7,"type1|2",9 +2,"type1|2",3 +18,"type1|2",9 +3,"type1|2",6 +4,"type1|2",3 +3,"type1|2",5 +2,"type1|2",8 +8,"type1|2",7 +9,"type1|2",9 +2,"type1|2",8 +6,"type1|2",9 +3,"type1|2",4 +3,"type1|2",7 +5,"type1|2",9 +3,"type1|2",9 +1,"type1|2",9 +5,"type1|2",6 +3,"type1|2",9 +3,"type1|2",9 +8,"type1|2",9 +10,"type1|2",9 +7,"type1|2",9 +10,"type1|2",9 +6,"type1|2",9 +4,"type1|2",9 +11,"type1|2",4 +4,"type1|2",8 +6,"type1|2",9 +11,"type1|2",9 +3,"type1|2",9 +6,"type1|2",7 +3,"type1|2",8 +8,"type1|2",9 +7,"type1|2",9 +18,"type1|2",9 +7,"type1|2",9 +9,"type1|2",9 +3,"type1|2",9 +3,"type1|2",9 +3,"type1|2",2 +4,"type1|2",5 +28,"type1|2",9 +5,"type1|2",4 +3,"type1|2",9 +5,"type1|2",5 +2,"type1|2",9 +5,"type1|2",6 +5,"type1|2",7 +5,"type1|2",7 +3,"type1|2",3 +5,"type1|2",7 +4,"type1|2",6 +4,"type1|2",9 +4,"type1|2",9 +15,"type1|2",9 +3,"type1|2",9 +3,"type1|2",9 +4,"type1|2",6 +8,"type1|2",8 +8,"type1|2",9 +4,"type1|2",9 +8,"type1|2",9 +7,"type1|2",6 +3,"type1|2",9 +4,"type1|2",9 +5,"type1|2",9 +4,"type1|2",6 +16,"type1|2",9 +2,"type1|2",9 +13,"type1|2",8 +9,"type1|2",9 +4,"type1|2",9 +11,"type1|2",9 +6,"type1|2",9 +5,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +7,"type1|2",9 +8,"type1|2",4 +1,"type1|2",5 +5,"type1|2",9 +2,"type1|2",9 +4,"type1|2",8 +8,"type1|2",9 +11,"type1|2",9 +4,"type1|2",9 +9,"type1|2",9 +4,"type1|2",9 +16,"type1|2",9 +7,"type1|2",9 +2,"type1|2",8 +3,"type1|2",9 +6,"type1|2",9 +19,"type1|2",8 +5,"type1|2",8 +6,"type1|2",7 +7,"type1|2",9 +4,"type1|2",7 +9,"type1|2",8 +9,"type1|2",9 +5,"type1|2",9 +4,"type1|2",9 +3,"type1|2",7 +9,"type1|2",9 +9,"type1|2",9 +8,"type1|2",9 +8,"type1|2",9 +8,"type1|2",9 +4,"type1|2",9 +6,"type1|2",6 +4,"type1|2",9 +11,"type1|2",9 +6,"type1|2",7 +2,"type1|2",8 +7,"type1|2",7 +10,"type1|2",9 +5,"type1|2",9 +6,"type1|2",8 +5,"type1|2",9 +2,"type1|2",5 +4,"type1|2",9 +13,"type1|2",9 +5,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +3,"type1|2",8 +7,"type1|2",7 +4,"type1|2",8 +8,"type1|2",5 +7,"type1|2",9 +7,"type1|2",9 +1,"type1|2",9 +11,"type1|2",9 +4,"type1|2",5 +6,"type1|2",9 +16,"type1|2",8 +6,"type1|2",9 +4,"type1|2",6 +2,"type1|2",9 +6,"type1|2",9 +5,"type1|2",8 +6,"type1|2",9 +6,"type1|2",7 +4,"type1|2",8 +4,"type1|2",7 +5,"type1|2",9 +3,"type1|2",9 +7,"type1|2",9 +3,"type1|2",8 +6,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +10,"type1|2",9 +3,"type1|2",9 +3,"type1|2",5 +7,"type1|2",9 +3,"type1|2",6 +4,"type1|2",9 +13,"type1|2",9 +6,"type1|2",9 +4,"type1|2",9 +9,"type1|2",9 +10,"type1|2",9 +11,"type1|2",9 +5,"type1|2",9 +16,"type1|2",9 +3,"type1|2",5 +3,"type1|2",8 +9,"type1|2",9 +8,"type1|2",9 +5,"type1|2",8 +2,"type1|2",9 +3,"type1|2",7 +22,"type1|2",6 +16,"type1|2",9 +8,"type1|2",9 +9,"type1|2",9 +4,"type1|2",6 +6,"type1|2",9 +22,"type1|2",9 +13,"type1|2",9 +4,"type1|2",9 +14,"type1|2",9 +5,"type1|2",4 +1,"type1|2",7 +5,"type1|2",9 +14,"type1|2",4 +5,"type1|2",9 +12,"type1|2",8 +13,"type1|2",9 +15,"type1|2",9 +3,"type1|2",4 +8,"type1|2",9 +6,"type1|2",9 +13,"type1|2",8 +2,"type1|2",3 +4,"type1|2",2 +3,"type1|2",8 +3,"type1|2",9 +12,"type1|2",9 +7,"type1|2",9 +4,"type1|2",9 +18,"type1|2",9 +4,"type1|2",9 +12,"type1|2",9 +6,"type1|2",9 +11,"type1|2",9 +15,"type1|2",9 +2,"type1|2",7 +11,"type1|2",9 +2,"type1|2",5 +7,"type1|2",7 +12,"type1|2",9 +8,"type1|2",9 +2,"type1|2",3 +18,"type1|2",9 +6,"type1|2",9 +2,"type1|2",9 +6,"type1|2",4 +2,"type1|2",9 +6,"type1|2",9 +2,"type1|2",9 +2,"type1|2",7 +2,"type1|2",7 +8,"type1|2",9 +3,"type1|2",8 +1,"type1|2",7 +6,"type1|2",9 +3,"type1|2",8 +11,"type1|2",7 +7,"type1|2",9 +3,"type1|2",7 +10,"type1|2",9 +4,"type1|2",9 +12,"type1|2",9 +5,"type1|2",9 +6,"type1|2",9 +2,"type1|2",9 +3,"type1|2",9 +1,"type1|2",4 +2,"type1|2",9 +3,"type1|2",9 +5,"type1|2",9 +6,"type1|2",9 +2,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +9,"type1|2",9 +4,"type1|2",9 +10,"type1|2",9 +4,"type1|2",5 +9,"type1|2",7 +3,"type1|2",8 +3,"type1|2",8 +4,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +5,"type1|2",7 +6,"type1|2",4 +8,"type1|2",9 +4,"type1|2",7 +5,"type1|2",5 +4,"type1|2",9 +12,"type1|2",9 +7,"type1|2",9 +2,"type1|2",9 +13,"type1|2",9 +15,"type1|2",9 +5,"type1|2",7 +10,"type1|2",8 +8,"type1|2",8 +7,"type1|2",9 +4,"type1|2",9 +2,"type1|2",8 +3,"type1|2",3 +6,"type1|2",9 +4,"type1|2",9 +7,"type1|2",9 +6,"type1|2",9 +3,"type1|2",2 +3,"type1|2",9 +7,"type1|2",9 +5,"type1|2",9 +21,"type1|2",9 +12,"type1|2",9 +8,"type1|2",9 +14,"type1|2",9 +5,"type1|2",9 +13,"type1|2",9 +3,"type1|2",9 +1,"type1|2",9 +7,"type1|2",8 +13,"type1|2",9 +10,"type1|2",9 +4,"type1|2",9 +5,"type1|2",5 +2,"type1|2",9 +3,"type1|2",8 +6,"type1|2",5 +10,"type1|2",5 +5,"type1|2",9 +9,"type1|2",7 +6,"type1|2",9 +3,"type1|2",9 +6,"type1|2",9 +32,"type1|2",8 +3,"type1|2",4 +2,"type1|2",9 +5,"type1|2",9 +6,"type1|2",9 +4,"type1|2",7 +8,"type1|2",9 +6,"type1|2",9 +2,"type1|2",9 +6,"type1|2",5 +1,"type1|2",9 +13,"type1|2",9 +5,"type1|2",8 +1,"type1|2",6 +3,"type1|2",9 +13,"type1|2",9 +7,"type1|2",9 +5,"type1|2",9 +13,"type1|2",9 +7,"type1|2",9 +4,"type1|2",6 +15,"type1|2",9 +2,"type1|2",9 +5,"type1|2",8 +2,"type1|2",9 +6,"type1|2",9 +3,"type1|2",6 +13,"type1|2",9 +3,"type1|2",8 +5,"type1|2",8 +6,"type1|2",9 +4,"type1|2",8 +1,"type1|2",9 +8,"type1|2",9 +13,"type1|2",9 +5,"type1|2",8 +3,"type1|2",8 +19,"type1|2",9 +4,"type1|2",5 +2,"type1|2",4 +8,"type1|2",5 +7,"type1|2",9 +4,"type1|2",9 +5,"type1|2",9 +6,"type1|2",9 +3,"type1|2",9 +6,"type1|2",9 +3,"type1|2",9 +3,"type1|2",4 +19,"type1|2",9 +4,"type1|2",9 +23,"type1|2",9 +3,"type1|2",9 +10,"type1|2",9 +5,"type1|2",9 +7,"type1|2",9 +14,"type1|2",9 +8,"type1|2",9 +6,"type1|2",9 +2,"type1|2",8 +4,"type1|2",4 +4,"type1|2",4 +4,"type1|2",9 +7,"type1|2",6 +1,"type1|2",9 +17,"type1|2",9 +7,"type1|2",9 +4,"type1|2",9 +11,"type1|2",9 +6,"type1|2",9 +5,"type1|2",9 +7,"type1|2",9 +3,"type1|2",9 +9,"type1|2",9 +3,"type1|2",9 +6,"type1|2",8 +10,"type1|2",9 +4,"type1|2",9 +6,"type1|2",9 +6,"type1|2",7 +6,"type1|2",9 +6,"type1|2",9 +3,"type1|2",9 +13,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +8,"type1|2",9 +2,"type1|2",5 +14,"type1|2",9 +4,"type1|2",3 +4,"type1|2",9 +3,"type1|2",5 +5,"type1|2",9 +14,"type1|2",9 +5,"type1|2",9 +3,"type1|2",6 +5,"type1|2",9 +3,"type1|2",4 +3,"type1|2",9 +9,"type1|2",9 +19,"type1|2",5 +6,"type1|2",6 +3,"type1|2",9 +2,"type1|2",9 +7,"type1|2",9 +4,"type1|2",8 +8,"type1|2",9 +9,"type1|2",9 +7,"type1|2",9 +9,"type1|2",9 +3,"type1|2",8 +2,"type1|2",9 +12,"type1|2",9 +10,"type1|2",9 +3,"type1|2",9 +3,"type1|2",9 +2,"type1|2",9 +5,"type1|2",7 +3,"type1|2",6 +19,"type1|2",9 +7,"type1|2",9 +5,"type1|2",3 +16,"type1|2",9 +25,"type1|2",9 +4,"type1|2",9 +12,"type1|2",9 +3,"type1|2",9 +4,"type1|2",5 +3,"type1|2",8 +5,"type1|2",9 +4,"type1|2",9 +16,"type1|2",9 +1,"type1|2",9 +19,"type1|2",9 +2,"type1|2",4 +9,"type1|2",9 +6,"type1|2",9 +13,"type1|2",9 +10,"type1|2",7 +3,"type1|2",9 +8,"type1|2",6 +3,"type1|2",5 +5,"type1|2",9 +7,"type1|2",9 +10,"type1|2",9 +7,"type1|2",8 +4,"type1|2",7 +11,"type1|2",9 +14,"type1|2",7 +5,"type1|2",9 +5,"type1|2",4 +6,"type1|2",9 +8,"type1|2",9 +9,"type1|2",9 +9,"type1|2",9 +4,"type1|2",9 +6,"type1|2",7 +11,"type1|2",9 +2,"type1|2",9 +9,"type1|2",9 +16,"type1|2",9 +9,"type1|2",9 +7,"type1|2",9 +5,"type1|2",7 +2,"type1|2",9 +3,"type1|2",9 +14,"type1|2",9 +12,"type1|2",9 +2,"type1|2",9 +5,"type1|2",9 +5,"type1|2",9 +16,"type1|2",7 +4,"type1|2",9 +6,"type1|2",3 +5,"type1|2",8 +14,"type1|2",7 +7,"type1|2",9 +7,"type1|2",4 +6,"type1|2",9 +3,"type1|2",7 +4,"type1|2",6 +7,"type1|2",9 +7,"type1|2",9 +1,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +4,"type1|2",8 +20,"type1|2",9 +8,"type1|2",9 +7,"type1|2",9 +12,"type1|2",9 +3,"type1|2",9 +9,"type1|2",9 +21,"type1|2",9 +3,"type1|2",7 +4,"type1|2",9 +2,"type1|2",9 +4,"type1|2",9 +4,"type1|2",2 +3,"type1|2",9 +12,"type1|2",9 +4,"type1|2",9 +5,"type1|2",8 +6,"type1|2",9 +3,"type1|2",9 +6,"type1|2",4 +5,"type1|2",5 +5,"type1|2",8 +6,"type1|2",9 +11,"type1|2",9 +4,"type1|2",4 +3,"type1|2",7 +10,"type1|2",9 +7,"type1|2",9 +4,"type1|2",9 +3,"type1|2",4 +5,"type1|2",9 +7,"type1|2",9 +4,"type1|2",6 +2,"type1|2",8 +13,"type1|2",9 +3,"type1|2",9 +6,"type1|2",9 +5,"type1|2",9 +15,"type1|2",9 +3,"type1|2",9 +5,"type1|2",9 +7,"type1|2",9 +2,"type1|2",5 +2,"type1|2",9 +6,"type1|2",6 +5,"type1|2",8 +6,"type1|2",9 +7,"type1|2",8 +8,"type1|2",9 +3,"type1|2",9 +6,"type1|2",9 +6,"type1|2",9 +6,"type1|2",6 +8,"type1|2",9 +6,"type1|2",9 +3,"type1|2",6 +3,"type1|2",9 +6,"type1|2",8 +8,"type1|2",9 +3,"type1|2",9 +6,"type1|2",7 +3,"type1|2",9 +12,"type1|2",9 +4,"type1|2",2 +7,"type1|2",9 +12,"type1|2",9 +5,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +18,"type1|2",9 +1,"type1|2",8 +31,"type1|2",9 +4,"type1|2",9 +5,"type1|2",7 +1,"type1|2",9 +7,"type1|2",9 +3,"type1|2",9 +12,"type1|2",9 +10,"type1|2",9 +2,"type1|2",9 +4,"type1|2",9 +1,"type1|2",8 +6,"type1|2",5 +11,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +3,"type1|2",9 +9,"type1|2",9 +2,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +1,"type1|2",9 +12,"type1|2",8 +4,"type1|2",9 +5,"type1|2",8 +4,"type1|2",5 +2,"type1|2",6 +3,"type1|2",7 +2,"type1|2",9 +4,"type1|2",8 +4,"type1|2",8 +4,"type1|2",9 +5,"type1|2",8 +6,"type1|2",9 +5,"type1|2",6 +7,"type1|2",5 +3,"type1|2",7 +16,"type1|2",8 +4,"type1|2",9 +5,"type1|2",9 +2,"type1|2",7 +7,"type1|2",6 +5,"type1|2",9 +8,"type1|2",8 +4,"type1|2",3 +6,"type1|2",8 +5,"type1|2",9 +7,"type1|2",7 +7,"type1|2",9 +7,"type1|2",9 +3,"type1|2",9 +9,"type1|2",9 +6,"type1|2",9 +4,"type1|2",2 +5,"type1|2",9 +2,"type1|2",9 +4,"type1|2",9 +7,"type1|2",6 +10,"type1|2",9 +10,"type1|2",8 +3,"type1|2",9 +7,"type1|2",8 +6,"type1|2",9 +8,"type1|2",8 +4,"type1|2",6 +4,"type1|2",9 +5,"type1|2",9 +6,"type1|2",9 +5,"type1|2",8 +4,"type1|2",8 +8,"type1|2",9 +2,"type1|2",9 +4,"type1|2",8 +13,"type1|2",5 +4,"type1|2",9 +2,"type1|2",6 +5,"type1|2",9 +3,"type1|2",5 +5,"type1|2",9 +7,"type1|2",4 +8,"type1|2",9 +11,"type1|2",9 +5,"type1|2",8 +7,"type1|2",9 +8,"type1|2",9 +11,"type1|2",9 +7,"type1|2",9 +5,"type1|2",4 +4,"type1|2",8 +8,"type1|2",9 +6,"type1|2",3 +19,"type1|2",9 +4,"type1|2",9 +21,"type1|2",9 +9,"type1|2",8 +9,"type1|2",9 +7,"type1|2",9 +4,"type1|2",9 +2,"type1|2",8 +9,"type1|2",9 +2,"type1|2",6 +11,"type1|2",9 +4,"type1|2",9 +7,"type1|2",7 +3,"type1|2",8 +4,"type1|2",9 +5,"type1|2",5 +11,"type1|2",9 +3,"type1|2",9 +2,"type1|2",6 +4,"type1|2",9 +5,"type1|2",2 +2,"type1|2",8 +4,"type1|2",8 +10,"type1|2",9 +6,"type1|2",8 +15,"type1|2",9 +11,"type1|2",6 +2,"type1|2",8 +8,"type1|2",9 +6,"type1|2",9 +5,"type1|2",9 +9,"type1|2",9 +6,"type1|2",7 +3,"type1|2",4 +10,"type1|2",9 +3,"type1|2",9 +7,"type1|2",5 +3,"type1|2",5 +12,"type1|2",9 +3,"type1|2",9 +5,"type1|2",9 +5,"type1|2",9 +2,"type1|2",9 +10,"type1|2",7 +4,"type1|2",9 +4,"type1|2",7 +3,"type1|2",4 +5,"type1|2",9 +8,"type1|2",4 +3,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +12,"type1|2",9 +9,"type1|2",2 +5,"type1|2",9 +6,"type1|2",6 +7,"type1|2",9 +17,"type1|2",8 +5,"type1|2",9 +5,"type1|2",8 +8,"type1|2",9 +7,"type1|2",5 +4,"type1|2",9 +15,"type1|2",9 +7,"type1|2",5 +5,"type1|2",2 +3,"type1|2",1 +2,"type1|2",3 +4,"type1|2",6 +6,"type1|2",8 +8,"type1|2",9 +3,"type1|2",4 +9,"type1|2",9 +3,"type1|2",9 +6,"type1|2",8 +3,"type1|2",9 +8,"type1|2",8 +7,"type1|2",9 +18,"type1|2",9 +3,"type1|2",7 +24,"type1|2",9 +10,"type1|2",9 +6,"type1|2",9 +5,"type1|2",9 +3,"type1|2",5 +5,"type1|2",9 +3,"type1|2",9 +3,"type1|2",9 +2,"type1|2",7 +6,"type1|2",9 +7,"type1|2",2 +6,"type1|2",9 +8,"type1|2",9 +3,"type1|2",6 +4,"type1|2",8 +15,"type1|2",3 +1,"type1|2",5 +3,"type1|2",9 +7,"type1|2",9 +4,"type1|2",3 +2,"type1|2",9 +5,"type1|2",8 +6,"type1|2",9 +3,"type1|2",8 +4,"type1|2",9 +9,"type1|2",9 +7,"type1|2",9 +12,"type1|2",9 +14,"type1|2",9 +31,"type1|2",9 +6,"type1|2",9 +6,"type1|2",9 +12,"type1|2",9 +8,"type1|2",9 +4,"type1|2",5 +6,"type1|2",9 +4,"type1|2",9 +5,"type1|2",8 +3,"type1|2",9 +2,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +6,"type1|2",7 +5,"type1|2",9 +8,"type1|2",4 +8,"type1|2",9 +5,"type1|2",9 +9,"type1|2",9 +11,"type1|2",5 +2,"type1|2",8 +4,"type1|2",8 +4,"type1|2",9 +3,"type1|2",9 +9,"type1|2",9 +6,"type1|2",9 +8,"type1|2",9 +3,"type1|2",8 +3,"type1|2",5 +5,"type1|2",8 +53,"type1|2",9 +2,"type1|2",9 +3,"type1|2",6 +5,"type1|2",9 +3,"type1|2",7 +3,"type1|2",9 +14,"type1|2",9 +3,"type1|2",9 +4,"type1|2",7 +7,"type1|2",9 +11,"type1|2",8 +4,"type1|2",8 +10,"type1|2",9 +2,"type1|2",9 +11,"type1|2",8 +9,"type1|2",9 +8,"type1|2",6 +26,"type1|2",9 +2,"type1|2",6 +3,"type1|2",6 +6,"type1|2",9 +7,"type1|2",9 +12,"type1|2",9 +23,"type1|2",9 +13,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +3,"type1|2",5 +7,"type1|2",4 +3,"type1|2",9 +4,"type1|2",8 +4,"type1|2",9 +3,"type1|2",7 +14,"type1|2",9 +7,"type1|2",9 +6,"type1|2",9 +29,"type1|2",5 +3,"type1|2",9 +3,"type1|2",7 +4,"type1|2",9 +7,"type1|2",5 +4,"type1|2",9 +5,"type1|2",9 +3,"type1|2",5 +4,"type1|2",7 +2,"type1|2",8 +4,"type1|2",9 +3,"type1|2",4 +5,"type1|2",8 +4,"type1|2",9 +6,"type1|2",8 +2,"type1|2",7 +3,"type1|2",9 +4,"type1|2",4 +2,"type1|2",6 +3,"type1|2",5 +6,"type1|2",9 +3,"type1|2",9 +6,"type1|2",8 +1,"type1|2",6 +12,"type1|2",9 +3,"type1|2",7 +9,"type1|2",9 +5,"type1|2",9 +21,"type1|2",9 +6,"type1|2",8 +5,"type1|2",9 +8,"type1|2",9 +6,"type1|2",9 +4,"type1|2",9 +6,"type1|2",4 +3,"type1|2",9 +7,"type1|2",8 +4,"type1|2",6 +5,"type1|2",7 +4,"type1|2",9 +8,"type1|2",9 +2,"type1|2",9 +9,"type1|2",9 +7,"type1|2",8 +10,"type1|2",9 +9,"type1|2",9 +14,"type1|2",6 +7,"type1|2",9 +8,"type1|2",9 +5,"type1|2",8 +2,"type1|2",9 +31,"type1|2",9 +6,"type1|2",9 +2,"type1|2",9 +6,"type1|2",9 +5,"type1|2",9 +19,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +6,"type1|2",9 +6,"type1|2",4 +8,"type1|2",9 +4,"type1|2",9 +1,"type1|2",9 +3,"type1|2",9 +2,"type1|2",9 +16,"type1|2",9 +3,"type1|2",8 +5,"type1|2",9 +5,"type1|2",9 +8,"type1|2",9 +6,"type1|2",8 +11,"type1|2",9 +4,"type1|2",5 +3,"type1|2",9 +6,"type1|2",9 +25,"type1|2",9 +4,"type1|2",9 +6,"type1|2",6 +9,"type1|2",8 +2,"type1|2",9 +19,"type1|2",7 +2,"type1|2",7 +11,"type1|2",9 +5,"type1|2",9 +7,"type1|2",9 +4,"type1|2",4 +3,"type1|2",9 +5,"type1|2",7 +5,"type1|2",9 +3,"type1|2",9 +6,"type1|2",9 +4,"type1|2",9 +5,"type1|2",9 +6,"type1|2",8 +14,"type1|2",9 +5,"type1|2",9 +5,"type1|2",9 +3,"type1|2",3 +10,"type1|2",8 +5,"type1|2",8 +3,"type1|2",6 +5,"type1|2",9 +9,"type1|2",6 +3,"type1|2",9 +13,"type1|2",9 +4,"type1|2",9 +6,"type1|2",4 +9,"type1|2",9 +5,"type1|2",3 +14,"type1|2",9 +2,"type1|2",9 +4,"type1|2",6 +3,"type1|2",8 +3,"type1|2",5 +7,"type1|2",9 +3,"type1|2",9 +9,"type1|2",9 +3,"type1|2",8 +5,"type1|2",9 +9,"type1|2",7 +4,"type1|2",9 +2,"type1|2",9 +10,"type1|2",9 +4,"type1|2",9 +4,"type1|2",6 +4,"type1|2",4 +3,"type1|2",9 +8,"type1|2",8 +10,"type1|2",9 +5,"type1|2",9 +3,"type1|2",7 +11,"type1|2",6 +2,"type1|2",7 +8,"type1|2",9 +5,"type1|2",4 +4,"type1|2",9 +2,"type1|2",9 +3,"type1|2",5 +8,"type1|2",8 +5,"type1|2",9 +3,"type1|2",5 +4,"type1|2",7 +1,"type1|2",9 +10,"type1|2",9 +4,"type1|2",8 +16,"type1|2",8 +5,"type1|2",7 +11,"type1|2",9 +3,"type1|2",9 +2,"type1|2",9 +6,"type1|2",9 +11,"type1|2",9 +7,"type1|2",5 +4,"type1|2",9 +2,"type1|2",8 +6,"type1|2",9 +4,"type1|2",5 +3,"type1|2",5 +8,"type1|2",7 +3,"type1|2",9 +5,"type1|2",9 +6,"type1|2",9 +14,"type1|2",9 +6,"type1|2",9 +10,"type1|2",5 +6,"type1|2",9 +5,"type1|2",9 +2,"type1|2",9 +5,"type1|2",8 +3,"type1|2",9 +2,"type1|2",7 +6,"type1|2",9 +5,"type1|2",5 +8,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +6,"type1|2",9 +6,"type1|2",9 +5,"type1|2",8 +1,"type1|2",9 +4,"type1|2",9 +9,"type1|2",9 +3,"type1|2",9 +1,"type1|2",9 +4,"type1|2",9 +5,"type1|2",9 +5,"type1|2",9 +8,"type1|2",9 +3,"type1|2",9 +10,"type1|2",9 +4,"type1|2",9 +4,"type1|2",8 +4,"type1|2",9 +6,"type1|2",2 +9,"type1|2",8 +3,"type1|2",6 +2,"type1|2",9 +4,"type1|2",6 +6,"type1|2",9 +7,"type1|2",9 +11,"type1|2",9 +9,"type1|2",9 +3,"type1|2",9 +5,"type1|2",5 +12,"type1|2",9 +5,"type1|2",8 +4,"type1|2",9 +11,"type1|2",9 +6,"type1|2",9 +7,"type1|2",8 +5,"type1|2",9 +10,"type1|2",9 +7,"type1|2",9 +4,"type1|2",8 +4,"type1|2",5 +8,"type1|2",9 +20,"type1|2",9 +3,"type1|2",9 +6,"type1|2",9 +3,"type1|2",8 +4,"type1|2",9 +9,"type1|2",7 +5,"type1|2",9 +9,"type1|2",9 +8,"type1|2",9 +5,"type1|2",9 +1,"type1|2",6 +6,"type1|2",5 +5,"type1|2",9 +19,"type1|2",9 +3,"type1|2",9 +2,"type1|2",4 +16,"type1|2",9 +2,"type1|2",9 +5,"type1|2",9 +7,"type1|2",9 +3,"type1|2",3 +4,"type1|2",9 +4,"type1|2",6 +3,"type1|2",9 +5,"type1|2",9 +5,"type1|2",9 +6,"type1|2",9 +3,"type1|2",2 +8,"type1|2",9 +4,"type1|2",8 +14,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +6,"type1|2",5 +5,"type1|2",9 +9,"type1|2",9 +2,"type1|2",4 +3,"type1|2",8 +2,"type1|2",9 +3,"type1|2",6 +3,"type1|2",9 +10,"type1|2",9 +5,"type1|2",7 +5,"type1|2",9 +10,"type1|2",9 +2,"type1|2",9 +2,"type1|2",7 +6,"type1|2",5 +8,"type1|2",9 +7,"type1|2",5 +10,"type1|2",8 +4,"type1|2",9 +13,"type1|2",9 +5,"type1|2",9 +8,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +10,"type1|2",8 +2,"type1|2",9 +4,"type1|2",9 +7,"type1|2",9 +6,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +9,"type1|2",9 +2,"type1|2",3 +6,"type1|2",6 +6,"type1|2",9 +6,"type1|2",9 +14,"type1|2",8 +1,"type1|2",4 +12,"type1|2",9 +5,"type1|2",7 +5,"type1|2",9 +5,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +7,"type1|2",9 +9,"type1|2",9 +14,"type1|2",9 +2,"type1|2",9 +2,"type1|2",3 +6,"type1|2",8 +14,"type1|2",9 +2,"type1|2",9 +3,"type1|2",7 +9,"type1|2",9 +3,"type1|2",6 +4,"type1|2",9 +3,"type1|2",7 +3,"type1|2",5 +5,"type1|2",9 +32,"type1|2",9 +3,"type1|2",8 +11,"type1|2",9 +7,"type1|2",9 +2,"type1|2",9 +3,"type1|2",8 +4,"type1|2",7 +11,"type1|2",6 +4,"type1|2",9 +4,"type1|2",7 +3,"type1|2",8 +4,"type1|2",4 +2,"type1|2",9 +9,"type1|2",5 +5,"type1|2",3 +4,"type1|2",6 +3,"type1|2",9 +5,"type1|2",8 +3,"type1|2",7 +7,"type1|2",9 +1,"type1|2",9 +5,"type1|2",9 +2,"type1|2",9 +3,"type1|2",8 +5,"type1|2",7 +2,"type1|2",8 +6,"type1|2",9 +4,"type1|2",7 +7,"type1|2",9 +3,"type1|2",7 +2,"type1|2",6 +3,"type1|2",3 +5,"type1|2",7 +2,"type1|2",8 +2,"type1|2",9 +2,"type1|2",6 +3,"type1|2",8 +4,"type1|2",6 +6,"type1|2",9 +4,"type1|2",9 +2,"type1|2",9 +8,"type1|2",9 +2,"type1|2",8 +4,"type1|2",9 +9,"type1|2",7 +9,"type1|2",9 +5,"type1|2",9 +5,"type1|2",9 +5,"type1|2",9 +5,"type1|2",5 +3,"type1|2",7 +1,"type1|2",9 +11,"type1|2",9 +5,"type1|2",9 +7,"type1|2",9 +6,"type1|2",9 +7,"type1|2",5 +11,"type1|2",9 +6,"type1|2",9 +2,"type1|2",9 +2,"type1|2",8 +2,"type1|2",9 +2,"type1|2",9 +3,"type1|2",9 +5,"type1|2",9 +8,"type1|2",9 +12,"type1|2",9 +5,"type1|2",9 +7,"type1|2",9 +4,"type1|2",9 +3,"type1|2",6 +14,"type1|2",9 +6,"type1|2",9 +7,"type1|2",9 +12,"type1|2",9 +6,"type1|2",9 +3,"type1|2",2 +3,"type1|2",3 +8,"type1|2",9 +3,"type1|2",5 +6,"type1|2",9 +12,"type1|2",9 +5,"type1|2",9 +13,"type1|2",9 +6,"type1|2",9 +9,"type1|2",9 +3,"type1|2",9 +5,"type1|2",9 +7,"type1|2",9 +8,"type1|2",9 +3,"type1|2",9 +3,"type1|2",3 +6,"type1|2",6 +10,"type1|2",9 +6,"type1|2",9 +9,"type1|2",9 +6,"type1|2",9 +3,"type1|2",9 +6,"type1|2",7 +3,"type1|2",9 +11,"type1|2",9 +17,"type1|2",9 +3,"type1|2",4 +8,"type1|2",9 +3,"type1|2",5 +2,"type1|2",5 +7,"type1|2",9 +3,"type1|2",8 +2,"type1|2",7 +19,"type1|2",9 +7,"type1|2",4 +5,"type1|2",9 +9,"type1|2",9 +7,"type1|2",9 +8,"type1|2",7 +9,"type1|2",9 +4,"type1|2",9 +7,"type1|2",7 +8,"type1|2",6 +16,"type1|2",9 +4,"type1|2",5 +6,"type1|2",9 +3,"type1|2",4 +3,"type1|2",7 +3,"type1|2",9 +3,"type1|2",9 +10,"type1|2",9 +6,"type1|2",9 +8,"type1|2",9 +3,"type1|2",9 +4,"type1|2",4 +2,"type1|2",9 +2,"type1|2",9 +7,"type1|2",9 +6,"type1|2",6 +9,"type1|2",6 +10,"type1|2",9 +1,"type1|2",9 +4,"type1|2",9 +7,"type1|2",7 +5,"type1|2",8 +10,"type1|2",9 +8,"type1|2",9 +4,"type1|2",6 +6,"type1|2",9 +6,"type1|2",9 +4,"type1|2",7 +9,"type1|2",6 +11,"type1|2",9 +5,"type1|2",9 +1,"type1|2",9 +16,"type1|2",3 +10,"type1|2",9 +15,"type1|2",9 +2,"type1|2",9 +13,"type1|2",9 +8,"type1|2",9 +4,"type1|2",9 +6,"type1|2",9 +4,"type1|2",9 +25,"type1|2",9 +4,"type1|2",9 +5,"type1|2",9 +9,"type1|2",9 +4,"type1|2",9 +7,"type1|2",9 +14,"type1|2",9 +3,"type1|2",9 +30,"type1|2",9 +30,"type1|2",7 +2,"type1|2",9 +2,"type1|2",8 +10,"type1|2",9 +9,"type1|2",9 +4,"type1|2",9 +3,"type1|2",8 +7,"type1|2",8 +6,"type1|2",9 +15,"type1|2",9 +12,"type1|2",9 +3,"type1|2",4 +7,"type1|2",9 +6,"type1|2",9 +17,"type1|2",9 +7,"type1|2",9 +3,"type1|2",9 +8,"type1|2",2 +3,"type1|2",9 +4,"type1|2",9 +6,"type1|2",9 +3,"type1|2",7 +1,"type1|2",4 +3,"type1|2",6 +6,"type1|2",9 +4,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +6,"type1|2",9 +9,"type1|2",9 +5,"type1|2",9 +5,"type1|2",8 +5,"type1|2",9 +4,"type1|2",9 +3,"type1|2",9 +1,"type1|2",9 +8,"type1|2",9 +10,"type1|2",9 +7,"type1|2",9 +6,"type1|2",9 +4,"type1|2",7 +7,"type1|2",8 +6,"type1|2",9 +5,"type1|2",6 +4,"type1|2",7 +5,"type1|2",7 +2,"type1|2",9 +9,"type1|2",9 +6,"type1|2",6 +3,"type1|2",9 +4,"type1|2",9 +4,"type1|2",6 +9,"type1|2",8 +12,"type1|2",9 +3,"type1|2",9 +3,"type1|2",9 +5,"type1|2",9 +3,"type1|2",6 +13,"type1|2",8 +3,"type1|2",6 +4,"type1|2",9 +4,"type1|2",9 +10,"type1|2",9 +22,"type1|2",9 +2,"type1|2",6 +6,"type1|2",9 +7,"type1|2",7 +4,"type1|2",9 +2,"type1|2",9 +3,"type1|2",9 +4,"type1|2",9 +3,"type1|2",5 +7,"type1|2",9 +4,"type1|2",9 +5,"type1|2",9 +3,"type1|2",8 +3,"type1|2",5 +6,"type1|2",6 +4,"type1|2",9 +2,"type1|2",9 +3,"type1|2",9 +3,"type1|2",9 +8,"type1|2",9 +3,"type1|2",8 +10,"type1|2",9 +11,"type1|2",9 +3,"type1|2",7 +10,"type1|2",8 +6,"type1|2",9 +3,"type1|2",9 +22,"type1|2",9 +2,"type1|2",8 +6,"type1|2",9 +5,"type1|2",5 +3,"type1|2",3 +3,"type1|2",9 +7,"type1|2",9 +3,"type1|2",5 +16,"type1|2",9 +13,"type1|2",9 +7,"type1|2",8 +7,"type1|2",9 +2,"type1|2",6 +5,"type1|2",9 +9,"type1|2",9 +1,"type1|2",9 +2,"type1|2",3 +5,"type1|2",7 +9,"type1|2",9 +6,"type1|2",9 +4,"type1|2",9 +13,"type1|2",9 +4,"type1|2",7 +3,"type1|2",6 +6,"type1|2",9 +4,"type1|2",8 +16,"type1|2",9 +4,"type1|2",9 +1,"type1|2",9 +7,"type1|2",9 +7,"type1|2",9 +3,"type1|2",9 +7,"type1|2",7 +5,"type1|2",7 +4,"type1|2",9 +4,"type1|2",7 +5,"type1|2",3 +2,"type1|2",8 +2,"type1|2",9 +3,"type1|2",9 +11,"type1|2",9 +3,"type1|2",8 +4,"type1|2",7 +5,"type1|2",6 +7,"type1|2",9 +2,"type1|2",6 +2,"type1|2",9 +5,"type1|2",9 +6,"type1|2",9 +11,"type1|2",9 +3,"type1|2",9 +3,"type1|2",6 +2,"type1|2",5 +3,"type1|2",9 +5,"type1|2",8 +4,"type1|2",9 +7,"type1|2",9 +7,"type1|2",9 +7,"type1|2",9 +11,"type1|2",9 +5,"type1|2",9 +2,"type1|2",6 +7,"type1|2",8 +21,"type1|2",9 +7,"type1|2",9 +5,"type1|2",1 +8,"type1|2",7 +10,"type1|2",9 +4,"type1|2",2 +8,"type1|2",9 +2,"type1|2",9 +3,"type1|2",9 +9,"type1|2",3 +14,"type1|2",9 +6,"type1|2",8 +6,"type1|2",8 +3,"type1|2",9 +5,"type1|2",6 +21,"type1|2",9 +9,"type1|2",9 +4,"type1|2",9 +10,"type1|2",9 +12,"type1|2",9 +33,"type1|2",9 +4,"type1|2",4 +6,"type1|2",8 +2,"type1|2",9 +2,"type1|2",8 +3,"type1|2",5 +5,"type1|2",9 +4,"type1|2",9 +3,"type1|2",6 +3,"type1|2",4 +3,"type1|2",9 +4,"type1|2",8 +9,"type1|2",9 +2,"type1|2",5 +6,"type1|2",7 +6,"type1|2",8 +3,"type1|2",6 +8,"type1|2",9 +1,"type1|2",9 +8,"type1|2",9 +4,"type1|2",8 +6,"type1|2",9 +5,"type1|2",9 +4,"type1|2",3 +3,"type1|2",9 +5,"type1|2",5 +3,"type1|2",9 +2,"type3",4 +4,"type3",7 +3,"type3",8 +3,"type3",6 +10,"type3",9 +24,"type3",9 +15,"type3",9 +5,"type3",9 +4,"type3",9 +3,"type3",8 +2,"type3",8 +6,"type3",9 +16,"type3",9 +2,"type3",5 +7,"type3",8 +5,"type3",6 +3,"type3",9 +7,"type3",8 +3,"type3",4 +6,"type3",2 +4,"type3",9 +9,"type3",8 +3,"type3",9 +3,"type3",2 +11,"type3",9 +3,"type3",8 +4,"type3",4 +2,"type3",7 +7,"type3",9 +2,"type3",3 +5,"type3",9 +3,"type3",9 +3,"type3",7 +3,"type3",9 +2,"type3",4 +3,"type3",4 +9,"type3",9 +2,"type3",9 +3,"type3",9 +6,"type3",7 +8,"type3",9 +5,"type3",7 +5,"type3",5 +9,"type3",9 +1,"type3",4 +4,"type3",9 +3,"type3",1 +3,"type3",3 +3,"type3",9 +9,"type3",9 +3,"type3",5 +6,"type3",3 +8,"type3",9 +2,"type3",9 +5,"type3",9 +6,"type3",9 +5,"type3",9 +4,"type3",9 +3,"type3",2 +3,"type3",9 +2,"type3",9 +4,"type3",5 +3,"type3",4 +1,"type3",6 +2,"type3",9 +15,"type3",9 +3,"type3",7 +7,"type3",9 +3,"type3",4 +4,"type3",9 +3,"type3",7 +7,"type3",2 +3,"type3",8 +3,"type3",6 +6,"type3",9 +3,"type3",6 +6,"type3",9 +3,"type3",9 +2,"type3",7 +3,"type3",6 +7,"type3",9 +9,"type3",9 +5,"type3",9 +5,"type3",9 +4,"type3",9 +5,"type3",7 +3,"type3",9 +10,"type3",8 +7,"type3",8 +7,"type3",9 +4,"type3",9 +3,"type3",4 +6,"type3",9 +4,"type3",4 +9,"type3",9 +3,"type3",6 +6,"type3",9 +7,"type3",9 +2,"type3",8 +2,"type3",9 +4,"type3",3 +3,"type3",9 +4,"type3",9 +3,"type3",3 +3,"type3",5 +3,"type3",9 +3,"type3",9 +4,"type3",8 +4,"type3",4 +2,"type3",3 +7,"type3",9 +4,"type3",6 +8,"type3",9 +9,"type3",9 +6,"type3",9 +4,"type3",3 +6,"type3",9 +3,"type3",9 +3,"type3",9 +11,"type3",9 +5,"type3",6 +4,"type3",9 +3,"type3",5 +6,"type3",9 +3,"type3",6 +6,"type3",6 +6,"type3",9 +6,"type3",7 +4,"type3",5 +4,"type3",5 +1,"type3",7 +7,"type3",5 +5,"type3",9 +6,"type3",9 +6,"type3",9 +3,"type3",9 +3,"type3",9 +2,"type3",9 +4,"type3",9 +3,"type3",8 +3,"type3",4 +10,"type3",9 +3,"type3",4 +4,"type3",9 +4,"type3",9 +2,"type3",9 +1,"type3",2 +3,"type3",9 +13,"type3",9 +4,"type3",9 +6,"type3",9 +4,"type3",7 +1,"type3",7 +16,"type3",9 +1,"type3",2 +11,"type3",9 +2,"type3",7 +6,"type3",9 +1,"type3",9 +3,"type3",6 +3,"type3",3 +11,"type3",9 +1,"type3",7 +2,"type3",9 +5,"type3",2 +5,"type3",2 +11,"type3",8 +2,"type3",5 +11,"type3",9 +4,"type3",9 +3,"type3",8 +2,"type3",9 +3,"type3",9 +5,"type3",5 +15,"type3",9 +5,"type3",8 +2,"type3",7 +8,"type3",9 +2,"type3",2 +4,"type3",8 +10,"type3",9 +3,"type3",9 +4,"type3",6 +2,"type3",8 +16,"type3",9 +5,"type3",9 +7,"type3",9 +3,"type3",9 +2,"type3",2 +8,"type3",9 +3,"type3",4 +1,"type3",5 +3,"type3",8 +10,"type3",9 +4,"type3",3 +2,"type3",2 +5,"type3",9 +5,"type3",6 +5,"type3",9 +5,"type3",4 +2,"type3",8 +3,"type3",7 +7,"type3",9 +3,"type3",4 +8,"type3",5 +8,"type3",9 +6,"type3",3 +5,"type3",9 +3,"type3",9 +7,"type3",4 +2,"type3",8 +3,"type3",7 +3,"type3",7 +2,"type3",9 +5,"type3",9 +2,"type3",2 +3,"type3",3 +3,"type3",9 +4,"type3",9 +9,"type3",9 +5,"type3",9 +3,"type3",8 +2,"type3",8 +10,"type3",9 +3,"type3",9 +5,"type3",7 +2,"type3",9 +5,"type3",6 +7,"type3",8 +5,"type3",9 +6,"type3",6 +1,"type3",6 +3,"type3",9 +3,"type3",9 +8,"type3",4 +3,"type3",7 +2,"type3",4 +8,"type3",7 +7,"type3",6 +6,"type3",9 +3,"type3",5 +1,"type3",9 +4,"type3",7 +2,"type3",9 +6,"type3",9 +13,"type3",9 +3,"type3",6 +4,"type3",5 +2,"type3",9 +2,"type3",7 +3,"type3",7 +4,"type3",4 +4,"type3",9 +7,"type3",9 +3,"type3",8 +6,"type3",4 +2,"type3",3 +5,"type3",4 +1,"type3",5 +3,"type3",9 +4,"type3",6 +3,"type3",7 +4,"type3",9 +6,"type3",9 +6,"type3",9 +2,"type3",5 +3,"type3",7 +1,"type3",2 +6,"type3",9 +6,"type3",9 +3,"type3",9 +1,"type3",7 +4,"type3",8 +6,"type3",9 +6,"type3",9 +4,"type3",9 +4,"type3",9 +6,"type3",9 +3,"type3",9 +3,"type3",9 +4,"type3",5 +8,"type3",8 +3,"type3",7 +2,"type3",9 +5,"type3",7 +1,"type3",5 +8,"type3",9 +8,"type3",9 +2,"type3",7 +5,"type3",9 +2,"type3",8 +3,"type3",9 +2,"type3",2 +4,"type3",9 +4,"type3",8 +3,"type3",5 +3,"type3",5 +7,"type3",9 +3,"type3",8 +3,"type3",4 +22,"type3",9 +4,"type3",7 +3,"type3",8 +4,"type3",9 +4,"type3",5 +3,"type3",6 +29,"type3",9 +3,"type3",8 +2,"type3",5 +7,"type3",4 +4,"type3",8 +5,"type3",2 +2,"type3",9 +6,"type3",4 +1,"type3",7 +4,"type3",6 +6,"type3",9 +2,"type3",9 +19,"type3",9 +2,"type3",9 +2,"type3",9 +7,"type3",5 +5,"type3",9 +6,"type3",6 +7,"type3",9 +2,"type3",9 +5,"type3",8 +8,"type3",9 +3,"type3",9 +3,"type3",9 +9,"type3",9 +3,"type3",8 +4,"type3",8 +7,"type3",9 +2,"type3",8 +7,"type3",9 +4,"type3",9 +3,"type3",9 +13,"type3",9 +4,"type3",8 +4,"type3",6 +9,"type3",9 +2,"type3",8 +9,"type3",9 +3,"type3",8 +4,"type3",9 +7,"type3",9 +1,"type3",9 +4,"type3",9 +4,"type3",6 +3,"type3",8 +7,"type3",4 +6,"type3",2 +10,"type3",9 +6,"type3",9 +3,"type3",3 +4,"type3",9 +4,"type3",6 +15,"type3",9 +11,"type3",9 +8,"type3",9 +3,"type3",9 +4,"type3",5 +3,"type3",5 +3,"type3",5 +7,"type3",9 +5,"type3",9 +7,"type3",9 +3,"type3",9 +3,"type3",7 +4,"type3",3 +9,"type3",6 +9,"type3",9 +3,"type3",5 +4,"type3",9 +1,"type3",9 +8,"type3",9 +8,"type3",9 +16,"type3",9 +3,"type3",5 +8,"type3",9 +3,"type3",9 +12,"type3",9 +10,"type3",9 +3,"type3",5 +2,"type3",9 +5,"type3",5 +3,"type3",4 +21,"type3",9 +1,"type3",7 +3,"type3",9 +7,"type3",9 +10,"type3",9 +3,"type3",9 +3,"type3",9 +4,"type3",9 +14,"type3",9 +3,"type3",9 +3,"type3",7 +3,"type3",8 +3,"type3",9 +8,"type3",9 +3,"type3",9 +7,"type3",9 +8,"type3",9 +18,"type3",9 +5,"type3",9 +5,"type3",8 +3,"type3",4 +3,"type3",8 +3,"type3",9 +1,"type3",4 +12,"type3",9 +3,"type3",5 +3,"type3",9 +5,"type3",9 +4,"type3",9 +2,"type3",5 +3,"type3",3 +11,"type3",9 +4,"type3",9 +4,"type3",5 +32,"type3",9 +10,"type3",9 +5,"type3",9 +7,"type3",9 +6,"type3",9 +3,"type3",9 +16,"type3",9 +2,"type3",9 +2,"type3",9 +6,"type3",9 +14,"type3",9 +32,"type3",9 +26,"type3",9 +4,"type3",4 +4,"type3",9 +3,"type3",9 +3,"type3",9 +5,"type3",9 +3,"type3",4 +2,"type3",8 +1,"type3",5 +16,"type3",9 +4,"type3",7 +2,"type3",7 +7,"type3",5 +5,"type3",9 +10,"type3",9 +5,"type3",6 +3,"type3",2 +11,"type3",9 +7,"type3",9 +1,"type3",5 +5,"type3",9 +4,"type3",4 +3,"type3",5 +2,"type3",9 +2,"type3",9 +5,"type3",7 +2,"type3",9 +3,"type3",6 +5,"type3",8 +3,"type3",8 +4,"type3",3 +3,"type3",4 +4,"type3",9 +4,"type3",6 +11,"type3",9 +5,"type3",7 +3,"type3",5 +3,"type3",7 +4,"type3",7 +3,"type3",9 +4,"type3",9 +4,"type3",8 +3,"type3",5 +7,"type3",9 +8,"type3",9 +7,"type3",9 +4,"type3",9 +7,"type3",9 +13,"type3",9 +3,"type3",9 +3,"type3",4 +3,"type3",6 +4,"type3",5 +5,"type3",7 +9,"type3",6 +3,"type3",4 +5,"type3",5 +8,"type3",9 +5,"type3",9 +6,"type3",9 +4,"type3",9 +3,"type3",3 +6,"type3",9 +7,"type3",9 +20,"type3",9 +20,"type3",9 +10,"type3",9 +4,"type3",5 +7,"type3",7 +5,"type3",8 +1,"type3",4 +6,"type3",3 +5,"type3",9 +2,"type3",5 +9,"type3",9 +3,"type3",4 +9,"type3",9 +8,"type3",9 +3,"type3",5 +6,"type3",9 +3,"type3",5 +6,"type3",9 +8,"type3",9 +7,"type3",9 +9,"type3",9 +2,"type3",7 +3,"type3",5 +2,"type3",7 +7,"type3",8 +3,"type3",2 +5,"type3",9 +3,"type3",6 +7,"type3",9 +4,"type3",7 +5,"type3",9 +4,"type3",8 +7,"type3",9 +2,"type3",9 +7,"type3",9 +4,"type3",4 +1,"type3",2 +14,"type3",9 +3,"type3",9 +9,"type3",9 +4,"type3",5 +2,"type3",7 +11,"type3",9 +3,"type3",8 +3,"type3",7 +6,"type3",8 +5,"type3",9 +6,"type3",9 +2,"type3",8 +4,"type3",9 +9,"type3",9 +7,"type3",9 +2,"type3",2 +3,"type3",8 +2,"type3",9 +7,"type3",9 +8,"type3",7 +2,"type3",7 +1,"type3",8 +9,"type3",9 +4,"type3",9 +7,"type3",6 +3,"type3",3 +2,"type3",4 +11,"type3",9 +8,"type3",9 +9,"type3",9 +3,"type3",9 +8,"type3",9 +12,"type3",8 +8,"type3",9 +7,"type3",9 +6,"type3",5 +3,"type3",7 +3,"type3",9 +2,"type3",4 +11,"type3",9 +5,"type3",8 +2,"type3",2 +4,"type3",9 +2,"type3",8 +2,"type3",9 +5,"type3",9 +7,"type3",9 +2,"type3",8 +8,"type3",9 +2,"type3",9 +3,"type3",9 +9,"type3",9 +8,"type3",9 +7,"type3",9 +3,"type3",6 +11,"type3",9 +3,"type3",3 +7,"type3",9 +2,"type3",8 +3,"type3",7 +3,"type3",8 +8,"type3",9 +2,"type3",7 +6,"type3",9 +3,"type3",5 +8,"type3",6 +17,"type3",9 +19,"type3",9 +2,"type3",9 +5,"type3",9 +5,"type3",8 +8,"type3",9 +2,"type3",5 +2,"type3",7 +3,"type3",5 +8,"type3",9 +6,"type3",4 +7,"type3",9 +12,"type3",9 +3,"type3",9 +5,"type3",9 +3,"type3",4 +3,"type3",9 +10,"type3",7 +7,"type3",9 +9,"type3",9 +4,"type3",9 +3,"type3",9 +9,"type3",9 +3,"type3",9 +3,"type3",9 +5,"type3",9 +3,"type3",5 +2,"type3",1 +4,"type3",9 +4,"type3",9 +3,"type3",9 +8,"type3",9 +4,"type3",7 +3,"type3",9 +2,"type3",4 +7,"type3",9 +7,"type3",9 +3,"type3",5 +3,"type3",9 +3,"type3",9 +3,"type3",9 +7,"type3",9 +9,"type3",9 +9,"type3",9 +7,"type3",3 +3,"type3",3 +3,"type3",9 +32,"type3",9 +5,"type3",9 +4,"type3",5 +3,"type3",9 +11,"type3",8 +2,"type3",6 +6,"type3",8 +4,"type3",6 +4,"type3",6 +4,"type3",7 +6,"type3",9 +4,"type3",7 +12,"type3",9 +3,"type3",4 +14,"type3",9 +3,"type3",9 +4,"type3",9 +8,"type3",9 +5,"type3",9 +2,"type3",3 +3,"type3",9 +3,"type3",5 +4,"type3",9 +11,"type3",7 +8,"type3",9 +3,"type3",5 +10,"type3",9 +6,"type3",9 +11,"type3",9 +10,"type3",9 +2,"type3",9 +7,"type3",8 +3,"type3",9 +3,"type3",6 +2,"type3",8 +2,"type3",6 +35,"type3",9 +1,"type3",5 +4,"type3",9 +1,"type3",4 +7,"type3",8 +3,"type3",9 +4,"type3",9 +1,"type3",6 +3,"type3",5 +3,"type3",4 +2,"type3",9 +9,"type3",9 +9,"type3",9 +3,"type3",6 +4,"type3",9 +1,"type3",9 +2,"type3",8 +2,"type3",7 +3,"type3",6 +2,"type3",3 +4,"type3",9 +1,"type3",4 +2,"type3",3 +8,"type3",9 +8,"type3",9 +3,"type3",3 +1,"type3",3 +8,"type3",9 +2,"type3",6 +2,"type3",6 +4,"type3",9 +5,"type3",9 +3,"type3",5 +2,"type3",5 +2,"type3",4 +3,"type3",9 +5,"type3",5 +2,"type3",4 +2,"type3",9 +3,"type3",5 +6,"type3",8 +9,"type3",9 +1,"type3",4 +6,"type3",9 +3,"type3",8 +6,"type3",9 +3,"type3",6 +7,"type3",5 +11,"type3",9 +11,"type3",9 +5,"type3",6 +10,"type3",8 +8,"type3",9 +13,"type3",9 +4,"type3",9 +4,"type3",9 +6,"type3",9 +6,"type3",9 +6,"type3",8 +3,"type3",3 +14,"type3",8 +4,"type3",2 +6,"type3",5 +6,"type3",9 +5,"type3",4 +4,"type3",9 +6,"type3",8 +2,"type3",9 +2,"type3",2 +10,"type3",9 +4,"type3",9 +4,"type3",9 +5,"type3",9 +3,"type3",3 +2,"type3",9 +3,"type3",8 +3,"type3",4 +3,"type3",6 +5,"type3",7 +5,"type3",5 +3,"type3",9 +14,"type3",9 +3,"type3",8 +2,"type3",5 +6,"type3",7 +5,"type3",6 +4,"type3",9 +3,"type3",9 +3,"type3",9 +13,"type3",9 +31,"type3",9 +3,"type3",5 +9,"type3",9 +11,"type3",9 +6,"type3",9 +7,"type3",9 +3,"type3",9 +8,"type3",9 +7,"type3",8 +2,"type3",4 +3,"type3",9 +3,"type3",9 +3,"type3",8 +9,"type3",9 +1,"type3",3 +5,"type3",9 +3,"type3",7 +5,"type3",9 +3,"type3",7 +3,"type3",9 +2,"type3",8 +3,"type3",9 +9,"type3",9 +5,"type3",9 +7,"type3",9 +3,"type3",8 +2,"type3",2 +7,"type3",9 +2,"type3",9 +4,"type3",2 +3,"type3",4 +2,"type3",9 +3,"type3",9 +3,"type3",2 +4,"type3",6 +3,"type3",4 +7,"type3",6 +3,"type3",9 +1,"type3",9 +3,"type3",9 +9,"type3",9 +6,"type3",9 +2,"type3",9 +6,"type3",6 +3,"type3",7 +4,"type3",8 +5,"type3",9 +7,"type3",9 +3,"type3",9 +3,"type3",9 +8,"type3",8 +1,"type3",5 +3,"type3",9 +4,"type3",8 +10,"type3",9 +6,"type3",2 +2,"type3",2 +3,"type3",9 +3,"type3",4 +3,"type3",9 +2,"type3",4 +8,"type3",9 +3,"type3",6 +2,"type3",2 +4,"type3",9 +3,"type3",9 +6,"type3",2 +3,"type3",7 +6,"type3",9 +9,"type3",9 +3,"type3",3 +3,"type3",9 +3,"type3",5 +22,"type3",9 +4,"type3",9 +2,"type3",3 +2,"type3",5 +4,"type3",7 +4,"type3",7 +3,"type3",9 +5,"type3",5 +3,"type3",6 +2,"type3",9 +3,"type3",6 +3,"type3",9 +3,"type3",3 +5,"type3",6 +4,"type3",7 +3,"type3",4 +4,"type3",9 +9,"type3",9 +6,"type3",4 +1,"type3",4 +3,"type3",4 +11,"type3",9 +3,"type3",9 +2,"type3",5 +6,"type3",5 +2,"type3",3 +6,"type3",9 +7,"type3",9 +2,"type3",2 +4,"type3",5 +8,"type3",9 +1,"type3",2 +4,"type3",4 +3,"type3",4 +1,"type3",6 +9,"type3",9 +2,"type3",4 +3,"type3",9 +3,"type3",9 +4,"type3",9 +11,"type3",9 +2,"type3",9 +5,"type3",9 +5,"type3",8 +17,"type3",9 +3,"type3",9 +7,"type3",9 +18,"type3",9 +2,"type3",9 +6,"type3",9 +6,"type3",9 +2,"type3",9 +3,"type3",7 +3,"type3",9 +3,"type3",9 +4,"type3",7 +6,"type3",9 +3,"type3",9 +3,"type3",7 +3,"type3",7 +2,"type3",9 +2,"type3",8 +2,"type3",6 +10,"type3",9 +5,"type3",7 +2,"type3",5 +3,"type3",6 +9,"type3",9 +6,"type3",2 +4,"type3",6 +4,"type3",8 +3,"type3",9 +16,"type3",9 +3,"type3",9 +3,"type3",9 +2,"type3",3 +3,"type3",8 +11,"type3",9 +3,"type3",7 +3,"type3",9 +3,"type3",6 +3,"type3",9 +2,"type3",9 +3,"type3",7 +3,"type3",6 +22,"type3",9 +4,"type3",9 +7,"type3",9 +3,"type3",9 +4,"type3",9 +1,"type3",6 +6,"type3",6 +2,"type3",3 +2,"type3",7 +3,"type3",9 +2,"type3",3 +3,"type3",3 +21,"type3",9 +4,"type3",5 +3,"type3",8 +4,"type3",3 +4,"type3",7 +3,"type3",3 +2,"type3",4 +2,"type3",7 +7,"type3",9 +4,"type3",9 +8,"type3",6 +3,"type3",7 +8,"type3",9 +6,"type3",6 +2,"type3",9 +2,"type3",7 +3,"type3",6 +5,"type3",2 +22,"type3",9 +5,"type3",9 +4,"type3",9 +3,"type3",7 +8,"type3",9 +3,"type3",9 +4,"type3",9 +9,"type3",9 +3,"type3",7 +7,"type3",8 +4,"type3",6 +4,"type3",9 +3,"type3",5 +3,"type3",4 +3,"type3",7 +5,"type3",9 +2,"type3",6 +6,"type3",9 +8,"type3",9 +3,"type3",3 +7,"type3",9 +7,"type3",8 +5,"type3",9 +8,"type3",9 +5,"type3",9 +3,"type3",4 +3,"type3",1 +11,"type3",9 +5,"type3",9 +2,"type3",4 +3,"type3",8 +3,"type3",5 +7,"type3",9 +2,"type3",2 +4,"type3",9 +3,"type3",5 +8,"type3",9 +9,"type3",9 +1,"type3",5 +3,"type3",2 +3,"type3",9 +6,"type3",7 +7,"type3",6 +10,"type3",9 +3,"type3",8 +3,"type3",9 +3,"type3",9 +3,"type3",6 +3,"type3",9 +3,"type3",9 +8,"type3",9 +4,"type3",5 +5,"type3",7 +5,"type3",9 +1,"type3",7 +6,"type3",9 +2,"type3",7 +3,"type3",4 +3,"type3",5 +5,"type3",9 +3,"type3",9 +10,"type3",9 +2,"type3",8 +9,"type3",9 +8,"type3",9 +4,"type3",8 +3,"type3",9 +3,"type3",9 +4,"type3",9 +4,"type3",9 +14,"type3",9 +4,"type3",9 +7,"type3",9 +14,"type3",9 +6,"type3",9 +8,"type3",9 +4,"type3",4 +2,"type3",4 +5,"type3",5 +7,"type3",9 +3,"type3",6 +3,"type3",4 +9,"type3",9 +2,"type3",7 +3,"type3",7 +2,"type3",3 +5,"type3",5 +23,"type3",9 +3,"type3",8 +3,"type3",9 +10,"type3",9 +3,"type3",9 +10,"type3",9 +2,"type3",6 +3,"type3",8 +5,"type3",6 +4,"type3",9 +3,"type3",3 +4,"type3",9 +9,"type3",6 +10,"type3",6 +2,"type3",7 +5,"type3",9 +1,"type3",7 +7,"type3",6 +4,"type3",9 +2,"type3",8 +3,"type3",4 +2,"type3",4 +10,"type3",8 +8,"type3",9 +2,"type3",5 +30,"type3",8 +5,"type3",6 +3,"type3",6 +2,"type3",4 +15,"type3",9 +3,"type3",5 +5,"type3",9 +6,"type3",9 +3,"type3",7 +5,"type3",8 +10,"type3",3 +2,"type3",5 +4,"type3",9 +2,"type3",8 +12,"type3",9 +8,"type3",9 +6,"type3",8 +4,"type3",9 +5,"type3",6 +2,"type3",8 +3,"type3",7 +5,"type3",9 +7,"type3",9 +3,"type3",8 +4,"type3",4 +9,"type3",9 +16,"type3",9 +4,"type3",9 +3,"type3",8 +3,"type3",8 +3,"type3",9 +3,"type3",3 +3,"type3",9 +10,"type3",9 +4,"type3",4 +5,"type3",9 +13,"type3",9 +6,"type3",9 +6,"type3",6 +7,"type3",9 +9,"type3",7 +7,"type3",9 +3,"type3",9 +5,"type3",9 +4,"type3",5 +3,"type3",6 +3,"type3",8 +5,"type3",9 +4,"type3",4 +3,"type3",5 +2,"type3",8 +1,"type3",6 +7,"type3",9 +9,"type3",8 +3,"type3",8 +5,"type3",2 +7,"type3",9 +9,"type3",9 +11,"type3",9 +7,"type3",9 +2,"type3",9 +4,"type3",8 +6,"type3",9 +3,"type3",7 +4,"type3",9 +3,"type3",9 +7,"type3",9 +3,"type3",6 +3,"type3",9 +3,"type3",3 +6,"type3",5 +3,"type3",9 +10,"type3",9 +1,"type3",8 +2,"type3",9 +37,"type3",9 +3,"type3",9 +11,"type3",9 +16,"type3",9 +4,"type3",9 +5,"type3",9 +1,"type3",1 +3,"type3",9 +2,"type3",5 +2,"type3",8 +4,"type3",7 +4,"type3",9 +4,"type3",9 +3,"type3",5 +6,"type3",9 +3,"type3",4 +7,"type3",2 +5,"type3",9 +5,"type3",4 +3,"type3",2 +3,"type3",7 +4,"type3",9 +13,"type3",9 +12,"type3",9 +2,"type3",6 +12,"type3",9 +7,"type3",7 +1,"type3",5 +2,"type3",2 +7,"type3",7 +3,"type3",9 +2,"type3",1 +3,"type3",4 +6,"type3",6 +5,"type3",8 +4,"type3",8 +2,"type3",3 +5,"type3",6 +3,"type3",6 +2,"type3",3 +1,"type3",6 +3,"type3",8 +2,"type3",6 +3,"type3",8 +1,"type3",5 +2,"type3",6 +3,"type3",9 +2,"type3",9 +3,"type3",9 +4,"type3",9 +2,"type3",5 +3,"type3",9 +6,"type3",9 +3,"type3",9 +4,"type3",6 +3,"type3",9 +5,"type3",9 +10,"type3",9 +3,"type3",5 +1,"type3",8 +2,"type3",5 +6,"type3",6 +6,"type3",7 +4,"type3",5 +9,"type3",9 +5,"type3",9 +6,"type3",9 +2,"type3",2 +3,"type3",9 +2,"type3",9 +12,"type3",9 +3,"type3",9 +4,"type3",9 +4,"type3",9 +5,"type3",9 +8,"type3",5 +4,"type3",3 +4,"type3",8 +7,"type3",7 +3,"type3",8 diff --git a/statsmodels/genmod/tests/results/test_get_R_tweedie_var_weight.R b/statsmodels/genmod/tests/results/test_get_R_tweedie_var_weight.R new file mode 100644 index 0000000..86c8126 --- /dev/null +++ b/statsmodels/genmod/tests/results/test_get_R_tweedie_var_weight.R @@ -0,0 +1,148 @@ +# R code to dump fair test dataset to +# checking compatibility. +# +# Usage: +# Rscript test_get_R_tweedie_var_weight.R > res_R_var_weight.py +cat("# This file auto-generated by test_get_R_tweedie_var_weight.R\n") +cat(sprintf("# Using: %s\n", R.Version()$version.string)) +cat("import numpy as np\n") +cat("import pandas as pd\n") +cat("import os\n\n") +cat("from statsmodels.tools.tools import Bunch\n\n") +cat("path = os.path.abspath(__file__)\n") +cat("dir_path = os.path.dirname(path)\n") + +require(statmod) + +options(digits=20) +x <- (1.5)^(0:19) + +MISSING <- "MISSING" + +is.missing <- function(obj) { + length(obj) == 1 && obj == MISSING +} + +pyprint <- function(arr, prefix=NULL, suffix=NULL) { + if (!is.null(prefix)) { + cat(prefix) + } + if (is.missing(arr)) { + cat("None\n") + } else { + cat("np.array([") + cat("\n ") + i <- 1 + for (val in arr) { + cat(val) + if (i == length(arr)) { + if (i %% 3 != 1) { + cat("\n") + } + } + else if (i %% 3 == 0) { + cat(",\n ") + } + else { + cat(", ") + } + i <- 1 + i + } + cat("])") + if (!is.null(dim(arr))) { + cat(".reshape((") + j <- 1 + for (size in dim(arr)) { + cat(sprintf("%s", size)) + if (j < length(dim(arr))) { + cat(", ") + } + j <- 1 + j + } + cat("), order=\"F\")") + } + } + if (!is.null(suffix)) { + cat(sprintf("%s\n", suffix)) + } + else { + cat("\n") + } +} + +cat(" + +") + +out2py <- function(model, name, resid_csv = FALSE){ + cat("\nres = dict()\n") + pyprint(model$coefficients, prefix = "res['params'] = ") + pyprint(diag(vcov(model))^0.5, prefix = "res['bse'] = ") + cat(sprintf("res['deviance'] = %f\n", model$deviance)) + + ll = logLik(model) + + if (is.na(ll)) { + cat("res['ll'] = np.nan\n") + } else { + cat(sprintf("res['ll'] = %f\n", ll)) + } + + cat("res['resids_colnames'] = [\n 'resid_response', 'resid_pearson', 'resid_deviance', 'resid_working']\n" ) + + r <- cbind(residuals.glm(model, 'response'), + residuals.glm(model, 'pearson'), + residuals.glm(model, 'deviance'), + residuals.glm(model, 'working')) + + if (is.character(resid_csv)) { + write.csv(r, resid_csv, row.names = FALSE) + cat(sprintf("csv_path = os.path.join(dir_path, '%s')\n", resid_csv)) + cat(sprintf("resids = np.array(pd.read_csv(csv_path))\n")) + cat(sprintf("res['resids'] = resids\n")) + } else { + pyprint(r, "res['resids'] = ") + } + cat(sprintf("%s = Bunch(**res)\n", name)) +} + +control <- glm.control(epsilon = 1e-25, maxit = 100) + +data = read.csv('../../../datasets/fair/fair.csv') +data$weights <- rep(1, length(data$rate_marriage)) +data$weights[seq(1, length(data$rate_marriage), 5)] <- 5 +data$weights[seq(1, length(data$rate_marriage), 13)] <- 3 + +model <- glm(affairs ~ 1 + age + yrs_married, + data = data, + family = tweedie(var.power = 1.55, link.power = 0), + weights = weights, + control = control) + +out2py(model, "results_tweedie_aweights_nonrobust", "results_tweedie_aweights_nonrobust.csv") + +data <- read.csv('stata_cancer_glm.csv') +data$weights <- rep(1, length(data$studytime)) +data$weights[seq(1, length(data$studytime), 5)] <- 5 +data$weights[seq(1, length(data$studytime), 13)] <- 3 +data$drug <- as.factor(data$drug) + +model <- glm(studytime ~ 1 + age + drug, + data = data, + family = Gamma(link = "log"), + weights = weights, + control = control) + +out2py(model, "results_gamma_aweights_nonrobust") + +data <- read.csv('../../../datasets/cpunish/cpunish.csv') +data$INCOME <- data$INCOME / 1000 +data$weight <- c(1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, 1) + +model <- glm(EXECUTIONS ~ INCOME + SOUTH - 1, + data = data, + family = gaussian(link = "log"), + weights = weight, + control = control) + +out2py(model, "results_gaussian_aweights_nonrobust") diff --git a/statsmodels/genmod/tests/test_bayes_mixed_glm.py b/statsmodels/genmod/tests/test_bayes_mixed_glm.py new file mode 100644 index 0000000..2d71dfa --- /dev/null +++ b/statsmodels/genmod/tests/test_bayes_mixed_glm.py @@ -0,0 +1,612 @@ +import numpy as np +from statsmodels.genmod.bayes_mixed_glm import (BinomialBayesMixedGLM, + PoissonBayesMixedGLM) +import pandas as pd +from scipy import sparse +from numpy.testing import assert_allclose, assert_equal +from scipy.optimize import approx_fprime + + +def gen_simple_logit(nc, cs, s): + + np.random.seed(3799) + + exog_vc = np.kron(np.eye(nc), np.ones((cs, 1))) + exog_fe = np.random.normal(size=(nc * cs, 2)) + vc = s * np.random.normal(size=nc) + lp = np.dot(exog_fe, np.r_[1, -1]) + np.dot(exog_vc, vc) + pr = 1 / (1 + np.exp(-lp)) + y = 1 * (np.random.uniform(size=nc * cs) < pr) + ident = np.zeros(nc, dtype=np.int) + + return y, exog_fe, exog_vc, ident + + +def gen_simple_poisson(nc, cs, s): + + np.random.seed(3799) + + exog_vc = np.kron(np.eye(nc), np.ones((cs, 1))) + exog_fe = np.random.normal(size=(nc * cs, 2)) + vc = s * np.random.normal(size=nc) + lp = np.dot(exog_fe, np.r_[0.1, -0.1]) + np.dot(exog_vc, vc) + r = np.exp(lp) + y = np.random.poisson(r) + ident = np.zeros(nc, dtype=np.int) + + return y, exog_fe, exog_vc, ident + + +def gen_crossed_logit(nc, cs, s1, s2): + + np.random.seed(3799) + + a = np.kron(np.eye(nc), np.ones((cs, 1))) + b = np.kron(np.ones((cs, 1)), np.eye(nc)) + exog_vc = np.concatenate((a, b), axis=1) + + exog_fe = np.random.normal(size=(nc * cs, 1)) + vc = s1 * np.random.normal(size=2 * nc) + vc[nc:] *= s2 / s1 + lp = np.dot(exog_fe, np.r_[-0.5]) + np.dot(exog_vc, vc) + pr = 1 / (1 + np.exp(-lp)) + y = 1 * (np.random.uniform(size=nc * cs) < pr) + ident = np.zeros(2 * nc, dtype=np.int) + ident[nc:] = 1 + + return y, exog_fe, exog_vc, ident + + +def gen_crossed_poisson(nc, cs, s1, s2): + + np.random.seed(3799) + + a = np.kron(np.eye(nc), np.ones((cs, 1))) + b = np.kron(np.ones((cs, 1)), np.eye(nc)) + exog_vc = np.concatenate((a, b), axis=1) + + exog_fe = np.random.normal(size=(nc * cs, 1)) + vc = s1 * np.random.normal(size=2 * nc) + vc[nc:] *= s2 / s1 + lp = np.dot(exog_fe, np.r_[-0.5]) + np.dot(exog_vc, vc) + r = np.exp(lp) + y = np.random.poisson(r) + ident = np.zeros(2 * nc, dtype=np.int) + ident[nc:] = 1 + + return y, exog_fe, exog_vc, ident + + +def gen_crossed_logit_pandas(nc, cs, s1, s2): + + np.random.seed(3799) + + a = np.kron(np.arange(nc), np.ones(cs)) + b = np.kron(np.ones(cs), np.arange(nc)) + fe = np.ones(nc * cs) + + vc = np.zeros(nc * cs) + for i in np.unique(a): + ii = np.flatnonzero(a == i) + vc[ii] += s1 * np.random.normal() + for i in np.unique(b): + ii = np.flatnonzero(b == i) + vc[ii] += s2 * np.random.normal() + + lp = -0.5 * fe + vc + pr = 1 / (1 + np.exp(-lp)) + y = 1 * (np.random.uniform(size=nc * cs) < pr) + + ident = np.zeros(2 * nc, dtype=np.int) + ident[nc:] = 1 + + df = pd.DataFrame({"fe": fe, "a": a, "b": b, "y": y}) + + return df + + +def test_simple_logit_map(): + + y, exog_fe, exog_vc, ident = gen_simple_logit(10, 10, 2) + exog_vc = sparse.csr_matrix(exog_vc) + + glmm = BinomialBayesMixedGLM(y, exog_fe, exog_vc, ident, vcp_p=0.5) + rslt = glmm.fit_map() + + assert_allclose( + glmm.logposterior_grad(rslt.params), + np.zeros_like(rslt.params), + atol=1e-3) + + # Test the predict method + for linear in False, True: + for exog in None, exog_fe: + pr1 = rslt.predict(linear=linear, exog=exog) + pr2 = glmm.predict(rslt.params, linear=linear, exog=exog) + assert_allclose(pr1, pr2) + if not linear: + assert_equal(pr1.min() >= 0, True) + assert_equal(pr1.max() <= 1, True) + + +def test_simple_poisson_map(): + + y, exog_fe, exog_vc, ident = gen_simple_poisson(10, 10, 0.2) + exog_vc = sparse.csr_matrix(exog_vc) + + glmm1 = PoissonBayesMixedGLM(y, exog_fe, exog_vc, ident, vcp_p=0.5) + rslt1 = glmm1.fit_map() + assert_allclose( + glmm1.logposterior_grad(rslt1.params), + np.zeros_like(rslt1.params), + atol=1e-3) + + # This should give the same answer as above + glmm2 = PoissonBayesMixedGLM(y, exog_fe, exog_vc, ident, vcp_p=0.5) + rslt2 = glmm2.fit_map() + assert_allclose(rslt1.params, rslt2.params, atol=1e-4) + + # Test the predict method + for linear in False, True: + for exog in None, exog_fe: + pr1 = rslt1.predict(linear=linear, exog=exog) + pr2 = rslt2.predict(linear=linear, exog=exog) + pr3 = glmm1.predict(rslt1.params, linear=linear, exog=exog) + pr4 = glmm2.predict(rslt2.params, linear=linear, exog=exog) + assert_allclose(pr1, pr2, rtol=1e-5) + assert_allclose(pr2, pr3, rtol=1e-5) + assert_allclose(pr3, pr4, rtol=1e-5) + if not linear: + assert_equal(pr1.min() >= 0, True) + assert_equal(pr2.min() >= 0, True) + assert_equal(pr3.min() >= 0, True) + + # Check dimensions and PSD status of cov_params + for rslt in rslt1, rslt2: + cp = rslt.cov_params() + p = len(rslt.params) + assert_equal(cp.shape, np.r_[p, p]) + np.linalg.cholesky(cp) + + +def test_crossed_logit_map(): + + y, exog_fe, exog_vc, ident = gen_crossed_logit(10, 10, 1, 2) + exog_vc = sparse.csr_matrix(exog_vc) + + glmm = BinomialBayesMixedGLM(y, exog_fe, exog_vc, ident, vcp_p=0.5) + rslt = glmm.fit_map() + + assert_allclose( + glmm.logposterior_grad(rslt.params), + np.zeros_like(rslt.params), + atol=1e-4) + + # Check dimensions and PSD status of cov_params + cp = rslt.cov_params() + p = len(rslt.params) + assert_equal(cp.shape, np.r_[p, p]) + np.linalg.cholesky(cp) + + +def test_crossed_poisson_map(): + + y, exog_fe, exog_vc, ident = gen_crossed_poisson(10, 10, 1, 1) + exog_vc = sparse.csr_matrix(exog_vc) + + glmm = PoissonBayesMixedGLM(y, exog_fe, exog_vc, ident, vcp_p=0.5) + rslt = glmm.fit_map() + + assert_allclose( + glmm.logposterior_grad(rslt.params), + np.zeros_like(rslt.params), + atol=1e-4) + + # Check dimensions and PSD status of cov_params + cp = rslt.cov_params() + p = len(rslt.params) + assert_equal(cp.shape, np.r_[p, p]) + np.linalg.cholesky(cp) + +def test_logit_map_crossed_formula(): + + data = gen_crossed_logit_pandas(10, 10, 1, 0.5) + + fml = "y ~ fe" + fml_vc = {"a": "0 + C(a)", "b": "0 + C(b)"} + glmm = BinomialBayesMixedGLM.from_formula(fml, fml_vc, data, vcp_p=0.5) + rslt = glmm.fit_map() + + assert_allclose( + glmm.logposterior_grad(rslt.params), + np.zeros_like(rslt.params), + atol=1e-4) + rslt.summary() + + r = rslt.random_effects("a") + assert_allclose( + r.iloc[0, :].values, np.r_[-0.02004904, 0.094014], atol=1e-4) + + # Check dimensions and PSD status of cov_params + cm = rslt.cov_params() + p = rslt.params.shape[0] + assert_equal(list(cm.shape), [p, p]) + np.linalg.cholesky(cm) + +def test_elbo_grad(): + + for f in range(2): + for j in range(2): + + if f == 0: + if j == 0: + y, exog_fe, exog_vc, ident = gen_simple_logit(10, 10, 2) + else: + y, exog_fe, exog_vc, ident = gen_crossed_logit( + 10, 10, 1, 2) + elif f == 1: + if j == 0: + y, exog_fe, exog_vc, ident = gen_simple_poisson( + 10, 10, 0.5) + else: + y, exog_fe, exog_vc, ident = gen_crossed_poisson( + 10, 10, 1, 0.5) + + exog_vc = sparse.csr_matrix(exog_vc) + + if f == 0: + glmm1 = BinomialBayesMixedGLM( + y, exog_fe, exog_vc, ident, vcp_p=0.5) + else: + glmm1 = PoissonBayesMixedGLM( + y, exog_fe, exog_vc, ident, vcp_p=0.5) + + rslt1 = glmm1.fit_map() + + for k in range(3): + + if k == 0: + vb_mean = rslt1.params + vb_sd = np.ones_like(vb_mean) + elif k == 1: + vb_mean = np.zeros(len(vb_mean)) + vb_sd = np.ones_like(vb_mean) + else: + vb_mean = np.random.normal(size=len(vb_mean)) + vb_sd = np.random.uniform(1, 2, size=len(vb_mean)) + + mean_grad, sd_grad = glmm1.vb_elbo_grad(vb_mean, vb_sd) + + def elbo(vec): + n = len(vec) // 2 + return glmm1.vb_elbo(vec[:n], vec[n:]) + + x = np.concatenate((vb_mean, vb_sd)) + g1 = approx_fprime(x, elbo, 1e-5) + n = len(x) // 2 + + mean_grad_n = g1[:n] + sd_grad_n = g1[n:] + + assert_allclose(mean_grad, mean_grad_n, atol=1e-2, rtol=1e-2) + assert_allclose(sd_grad, sd_grad_n, atol=1e-2, rtol=1e-2) + + +def test_simple_logit_vb(): + + y, exog_fe, exog_vc, ident = gen_simple_logit(10, 10, 0) + exog_vc = sparse.csr_matrix(exog_vc) + + glmm1 = BinomialBayesMixedGLM( + y, exog_fe, exog_vc, ident, vcp_p=0.5, fe_p=0.5) + rslt1 = glmm1.fit_map() + + glmm2 = BinomialBayesMixedGLM( + y, exog_fe, exog_vc, ident, vcp_p=0.5, fe_p=0.5) + rslt2 = glmm2.fit_vb(rslt1.params) + + rslt1.summary() + rslt2.summary() + + assert_allclose( + rslt1.params[0:5], + np.r_[0.75330405, -0.71643228, -2.49091288, -0.00959806, 0.00450254], + rtol=1e-4, + atol=1e-4) + + assert_allclose( + rslt2.params[0:5], + np.r_[0.79338836, -0.7599833, -0.64149356, -0.24772884, 0.10775366], + rtol=1e-4, + atol=1e-4) + + for rslt in rslt1, rslt2: + cp = rslt.cov_params() + p = len(rslt.params) + if rslt is rslt1: + assert_equal(cp.shape, np.r_[p, p]) + np.linalg.cholesky(cp) + else: + assert_equal(cp.shape, np.r_[p,]) + assert_equal(cp > 0, True*np.ones(p)) + +def test_simple_poisson_vb(): + + y, exog_fe, exog_vc, ident = gen_simple_poisson(10, 10, 1) + exog_vc = sparse.csr_matrix(exog_vc) + + glmm1 = PoissonBayesMixedGLM(y, exog_fe, exog_vc, ident, vcp_p=0.5) + rslt1 = glmm1.fit_map() + + glmm2 = PoissonBayesMixedGLM(y, exog_fe, exog_vc, ident, vcp_p=0.5) + rslt2 = glmm2.fit_vb(rslt1.params) + + rslt1.summary() + rslt2.summary() + + assert_allclose( + rslt1.params[0:5], + np.r_[-0.07233493, -0.06706505, -0.47159649, 1.12575122, -1.02442201], + rtol=1e-4, + atol=1e-4) + + assert_allclose( + rslt1.cov_params().flat[0:5], + np.r_[0.00790914, 0.00080666, -0.00050719, 0.00022648, 0.00046235], + rtol=1e-4, + atol=1e-4) + + assert_allclose( + rslt2.params[0:5], + np.r_[-0.07088814, -0.06373107, -0.22770786, 1.12923746, -1.26161339], + rtol=1e-4, + atol=1e-4) + + assert_allclose( + rslt2.cov_params()[0:5], + np.r_[0.00747782, 0.0092554, 0.04508904, 0.02934488, 0.20312746], + rtol=1e-4, + atol=1e-4) + + for rslt in rslt1, rslt2: + cp = rslt.cov_params() + p = len(rslt.params) + if rslt is rslt1: + assert_equal(cp.shape, np.r_[p, p]) + np.linalg.cholesky(cp) + else: + assert_equal(cp.shape, np.r_[p,]) + assert_equal(cp > 0, True*np.ones(p)) + + +def test_crossed_logit_vb(): + + y, exog_fe, exog_vc, ident = gen_crossed_logit(10, 10, 1, 2) + + glmm1 = BinomialBayesMixedGLM( + y, exog_fe, exog_vc, ident, vcp_p=0.5, fe_p=0.5) + rslt1 = glmm1.fit_map() + + glmm2 = BinomialBayesMixedGLM( + y, exog_fe, exog_vc, ident, vcp_p=0.5, fe_p=0.5) + rslt2 = glmm2.fit_vb(mean=rslt1.params) + + rslt1.summary() + rslt2.summary() + + assert_allclose( + rslt1.params[0:5], + np.r_[-5.43073978e-01, -2.46197518e+00, -2.36582801e+00, + -9.64030461e-03, 2.32701078e-03], + rtol=1e-4, + atol=1e-4) + + assert_allclose( + rslt1.cov_params().flat[0:5], + np.r_[4.12927123e-02, -2.04448923e-04, 4.64829219e-05, 1.20377543e-04, + -1.45003234e-04], + rtol=1e-4, + atol=1e-4) + + assert_allclose( + rslt2.params[0:5], + np.r_[-0.70834417, -0.3571011, 0.19126823, -0.36074489, 0.058976], + rtol=1e-4, + atol=1e-4) + + assert_allclose( + rslt2.cov_params()[0:5], + np.r_[0.05212492, 0.04729656, 0.03916944, 0.25921842, 0.25782576], + rtol=1e-4, + atol=1e-4) + + for rslt in rslt1, rslt2: + cp = rslt.cov_params() + p = len(rslt.params) + if rslt is rslt1: + assert_equal(cp.shape, np.r_[p, p]) + np.linalg.cholesky(cp) + else: + assert_equal(cp.shape, np.r_[p,]) + assert_equal(cp > 0, True*np.ones(p)) + + +def test_crossed_logit_vb_formula(): + + data = gen_crossed_logit_pandas(10, 10, 1, 2) + + fml = "y ~ fe" + fml_vc = {"a": "0 + C(a)", "b": "0 + C(b)"} + glmm1 = BinomialBayesMixedGLM.from_formula(fml, fml_vc, data, vcp_p=0.5) + rslt1 = glmm1.fit_vb() + + glmm2 = BinomialBayesMixedGLM( + glmm1.endog, glmm1.exog, glmm1.exog_vc, glmm1.ident, vcp_p=0.5) + rslt2 = glmm2.fit_vb() + + assert_allclose(rslt1.params, rslt2.params, atol=1e-4) + + rslt1.summary() + rslt2.summary() + + for rslt in rslt1, rslt2: + cp = rslt.cov_params() + p = len(rslt.params) + if rslt is rslt1: + assert_equal(cp.shape, np.r_[p,]) + assert_equal(cp > 0, True*np.ones(p)) + else: + assert_equal(cp.shape, np.r_[p,]) + assert_equal(cp > 0, True*np.ones(p)) + + +def test_crossed_poisson_vb(): + + y, exog_fe, exog_vc, ident = gen_crossed_poisson(10, 10, 1, 0.5) + + glmm1 = PoissonBayesMixedGLM( + y, exog_fe, exog_vc, ident, vcp_p=0.5, fe_p=0.5) + rslt1 = glmm1.fit_map() + + glmm2 = PoissonBayesMixedGLM( + y, exog_fe, exog_vc, ident, vcp_p=0.5, fe_p=0.5) + rslt2 = glmm2.fit_vb(mean=rslt1.params) + + rslt1.summary() + rslt2.summary() + + assert_allclose( + rslt1.params[0:5], + np.r_[-0.54855281, 0.10458834, -0.68777741, -0.01699925, 0.77200546], + rtol=1e-4, + atol=1e-4) + + assert_allclose( + rslt2.params[0:5], + np.r_[-0.54691502, 0.22297158, -0.52673802, -0.06218684, 0.74385237], + rtol=1e-4, + atol=1e-4) + + for rslt in rslt1, rslt2: + cp = rslt.cov_params() + p = len(rslt.params) + if rslt is rslt1: + assert_equal(cp.shape, np.r_[p, p]) + np.linalg.cholesky(cp) + else: + assert_equal(cp.shape, np.r_[p,]) + assert_equal(cp > 0, True*np.ones(p)) + + +def test_poisson_formula(): + + y, exog_fe, exog_vc, ident = gen_crossed_poisson(10, 10, 1, 0.5) + + for vb in False, True: + + glmm1 = PoissonBayesMixedGLM( + y, exog_fe, exog_vc, ident) + if vb: + rslt1 = glmm1.fit_vb() + else: + rslt1 = glmm1.fit_map() + + # Build categorical variables that match exog_vc + df = pd.DataFrame({"y": y, "x1": exog_fe[:, 0]}) + z1 = np.zeros(len(y)) + for j,k in enumerate(np.flatnonzero(ident == 0)): + z1[exog_vc[:, k] == 1] = j + df["z1"] = z1 + z2 = np.zeros(len(y)) + for j,k in enumerate(np.flatnonzero(ident == 1)): + z2[exog_vc[:, k] == 1] = j + df["z2"] = z2 + + fml = "y ~ 0 + x1" + from collections import OrderedDict + vc_fml = OrderedDict({}) + vc_fml["z1"] = "0 + C(z1)" + vc_fml["z2"] = "0 + C(z2)" + glmm2 = PoissonBayesMixedGLM.from_formula(fml, vc_fml, df) + if vb: + rslt2 = glmm2.fit_vb() + else: + rslt2 = glmm2.fit_map() + + assert_allclose(rslt1.params, rslt2.params, rtol=1e-5) + + for rslt in rslt1, rslt2: + cp = rslt.cov_params() + p = len(rslt.params) + if vb: + assert_equal(cp.shape, np.r_[p,]) + assert_equal(cp > 0, True*np.ones(p)) + else: + assert_equal(cp.shape, np.r_[p, p]) + np.linalg.cholesky(cp) + +def test_scale_vb(): + + y, exog_fe, exog_vc, ident = gen_simple_logit(10, 10, 0) + exog_fe -= exog_fe.mean(0) + exog_fe /= exog_fe.std(0) + exog_vc = sparse.csr_matrix(exog_vc) + + rslts = [] + for scale_fe in False, True: + glmm = BinomialBayesMixedGLM( + y, exog_fe, exog_vc, ident, vcp_p=0.5, fe_p=0.5) + rslt = glmm.fit_vb(scale_fe=scale_fe) + rslts.append(rslt) + + assert_allclose(rslts[0].params, rslts[1].params, rtol=1e-4) + +def test_scale_map(): + + y, exog_fe, exog_vc, ident = gen_simple_logit(10, 10, 0) + exog_fe -= exog_fe.mean(0) + exog_fe /= exog_fe.std(0) + exog_vc = sparse.csr_matrix(exog_vc) + + rslts = [] + for scale_fe in False, True: + glmm = BinomialBayesMixedGLM( + y, exog_fe, exog_vc, ident, vcp_p=0.5, fe_p=0.5) + rslt = glmm.fit_map(scale_fe=scale_fe) + rslts.append(rslt) + + assert_allclose(rslts[0].params, rslts[1].params, rtol=1e-4) + +def test_doc_examples(): + + np.random.seed(8767) + n = 200 + m = 20 + data = pd.DataFrame({"Year": np.random.uniform(0, 1, n), + "Village": np.random.randint(0, m, n)}) + data['year_cen'] = data['Year'] - data.Year.mean() + + # Binomial outcome + lpr = np.random.normal(size=m)[data.Village] + lpr += np.random.normal(size=m)[data.Village] * data.year_cen + y = (np.random.uniform(size=n) < 1 / (1 + np.exp(-lpr))) + data["y"] = y.astype(np.int) + + # These lines should agree with the example in the class docstring. + random = {"a": '0 + C(Village)', "b": '0 + C(Village)*year_cen'} + model = BinomialBayesMixedGLM.from_formula( + 'y ~ year_cen', random, data) + result = model.fit_vb() + _ = result + + # Poisson outcome + lpr = np.random.normal(size=m)[data.Village] + lpr += np.random.normal(size=m)[data.Village] * data.year_cen + data["y"] = np.random.poisson(np.exp(lpr)) + + # These lines should agree with the example in the class docstring. + random = {"a": '0 + C(Village)', "b": '0 + C(Village)*year_cen'} + model = PoissonBayesMixedGLM.from_formula( + 'y ~ year_cen', random, data) + result = model.fit_vb() + _ = result diff --git a/statsmodels/genmod/tests/test_constrained.py b/statsmodels/genmod/tests/test_constrained.py new file mode 100644 index 0000000..7dd9a46 --- /dev/null +++ b/statsmodels/genmod/tests/test_constrained.py @@ -0,0 +1,263 @@ +# -*- coding: utf-8 -*- +""" +Unit tests for fit_constrained +Tests for Poisson and Binomial are in discrete + + +Created on Sun Jan 7 09:21:39 2018 + +Author: Josef Perktold +""" + +import warnings + +import numpy as np +from numpy.testing import assert_allclose, assert_equal +from statsmodels.tools.tools import add_constant +from statsmodels.regression.linear_model import OLS, WLS +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod.families import family +from statsmodels.tools.sm_exceptions import ValueWarning + + +class ConstrainedCompareMixin(object): + + @classmethod + def setup_class(cls): + nobs, k_exog = 100, 5 + np.random.seed(987125) + x = np.random.randn(nobs, k_exog - 1) + x = add_constant(x) + + y_true = x.sum(1) / 2 + y = y_true + 2 * np.random.randn(nobs) + cls.endog = y + cls.exog = x + cls.idx_uc = [0, 2, 3, 4] + cls.idx_p_uc = np.array(cls.idx_uc) + cls.idx_c = [1] + cls.exogc = xc = x[:, cls.idx_uc] + mod_ols_c = OLS(y - 0.5 * x[:, 1], xc) + mod_ols_c.exog_names[:] = ['const', 'x2', 'x3', 'x4'] + cls.mod2 = mod_ols_c + cls.init() + + def test_params(self): + res1 = self.res1 + res2 = self.res2 + assert_allclose(res1.params[self.idx_p_uc], res2.params, rtol=1e-10) + + def test_se(self): + res1 = self.res1 + res2 = self.res2 + + assert_equal(res1.df_resid, res2.df_resid) + assert_allclose(res1.scale, res2.scale, rtol=1e-10) + assert_allclose(res1.bse[self.idx_p_uc], res2.bse, rtol=1e-10) + assert_allclose(res1.cov_params()[self.idx_p_uc[:, None], + self.idx_p_uc], res2.cov_params(), rtol=5e-9, atol=1e-15) + + def test_resid(self): + res1 = self.res1 + res2 = self.res2 + assert_allclose(res1.resid_response, res2.resid, rtol=1e-10) + + +class TestGLMGaussianOffset(ConstrainedCompareMixin): + + @classmethod + def init(cls): + cls.res2 = cls.mod2.fit() + mod = GLM(cls.endog, cls.exogc, + offset=0.5 * cls.exog[:, cls.idx_c].squeeze()) + mod.exog_names[:] = ['const', 'x2', 'x3', 'x4'] + cls.res1 = mod.fit() + cls.idx_p_uc = np.arange(cls.exogc.shape[1]) + + +class TestGLMGaussianConstrained(ConstrainedCompareMixin): + + @classmethod + def init(cls): + cls.res2 = cls.mod2.fit() + mod = GLM(cls.endog, cls.exog) + mod.exog_names[:] = ['const', 'x1', 'x2', 'x3', 'x4'] + cls.res1 = mod.fit_constrained('x1=0.5') + + +class TestGLMGaussianOffsetHC(ConstrainedCompareMixin): + + @classmethod + def init(cls): + cov_type = 'HC0' + cls.res2 = cls.mod2.fit(cov_type=cov_type) + mod = GLM(cls.endog, cls.exogc, + offset=0.5 * cls.exog[:, cls.idx_c].squeeze()) + mod.exog_names[:] = ['const', 'x2', 'x3', 'x4'] + cls.res1 = mod.fit(cov_type=cov_type) + cls.idx_p_uc = np.arange(cls.exogc.shape[1]) + + +class TestGLMGaussianConstrainedHC(ConstrainedCompareMixin): + + @classmethod + def init(cls): + cov_type = 'HC0' + cls.res2 = cls.mod2.fit(cov_type=cov_type) + mod = GLM(cls.endog, cls.exog) + mod.exog_names[:] = ['const', 'x1', 'x2', 'x3', 'x4'] + cls.res1 = mod.fit_constrained('x1=0.5', cov_type=cov_type) + + +class ConstrainedCompareWtdMixin(ConstrainedCompareMixin): + + @classmethod + def setup_class(cls): + nobs, k_exog = 100, 5 + np.random.seed(987125) + x = np.random.randn(nobs, k_exog - 1) + x = add_constant(x) + cls.aweights = np.random.randint(1, 10, nobs) + + y_true = x.sum(1) / 2 + y = y_true + 2 * np.random.randn(nobs) + cls.endog = y + cls.exog = x + cls.idx_uc = [0, 2, 3, 4] + cls.idx_p_uc = np.array(cls.idx_uc) + cls.idx_c = [1] + cls.exogc = xc = x[:, cls.idx_uc] + mod_ols_c = WLS(y - 0.5 * x[:, 1], xc, weights=cls.aweights) + mod_ols_c.exog_names[:] = ['const', 'x2', 'x3', 'x4'] + cls.mod2 = mod_ols_c + cls.init() + + +class TestGLMWtdGaussianOffset(ConstrainedCompareWtdMixin): + + @classmethod + def init(cls): + cls.res2 = cls.mod2.fit() + mod = GLM(cls.endog, cls.exogc, + offset=0.5 * cls.exog[:, cls.idx_c].squeeze(), + var_weights=cls.aweights) + mod.exog_names[:] = ['const', 'x2', 'x3', 'x4'] + cls.res1 = mod.fit() + cls.idx_p_uc = np.arange(cls.exogc.shape[1]) + + +class TestGLMWtdGaussianConstrained(ConstrainedCompareWtdMixin): + + @classmethod + def init(cls): + cls.res2 = cls.mod2.fit() + mod = GLM(cls.endog, cls.exog, var_weights=cls.aweights) + mod.exog_names[:] = ['const', 'x1', 'x2', 'x3', 'x4'] + cls.res1 = mod.fit_constrained('x1=0.5') + + +class TestGLMWtdGaussianOffsetHC(ConstrainedCompareWtdMixin): + + @classmethod + def init(cls): + cov_type = 'HC0' + cls.res2 = cls.mod2.fit(cov_type=cov_type) + mod = GLM(cls.endog, cls.exogc, + offset=0.5 * cls.exog[:, cls.idx_c].squeeze(), + var_weights=cls.aweights) + mod.exog_names[:] = ['const', 'x2', 'x3', 'x4'] + cls.res1 = mod.fit(cov_type=cov_type) + cls.idx_p_uc = np.arange(cls.exogc.shape[1]) + + +class TestGLMWtdGaussianConstrainedHC(ConstrainedCompareWtdMixin): + + @classmethod + def init(cls): + cov_type = 'HC0' + cls.res2 = cls.mod2.fit(cov_type=cov_type) + mod = GLM(cls.endog, cls.exog, var_weights=cls.aweights) + mod.exog_names[:] = ['const', 'x1', 'x2', 'x3', 'x4'] + cls.res1 = mod.fit_constrained('x1=0.5', cov_type=cov_type) + + +class TestGLMBinomialCountConstrained(ConstrainedCompareMixin): + + @classmethod + def setup_class(cls): + from statsmodels.datasets.star98 import load + #from statsmodels.genmod.tests.results.results_glm import Star98 + data = load(as_pandas=False) + exog = add_constant(data.exog, prepend=True) + offset = np.ones(len(data.endog)) + exog_keep = exog[:, :-5] + cls.mod2 = GLM(data.endog, exog_keep, family=family.Binomial(), + offset=offset) + + cls.mod1 = GLM(data.endog, exog, family=family.Binomial(), + offset=offset) + cls.init() + + @classmethod + def init(cls): + cls.res2 = cls.mod2.fit() + k = cls.mod1.exog.shape[1] + cls.idx_p_uc = np.arange(k - 5) + constraints = np.eye(k)[-5:] + cls.res1 = cls.mod1.fit_constrained(constraints) + + def test_resid(self): + # need to override because res2 does not have resid + res1 = self.res1 + res2 = self.res2 + assert_allclose(res1.resid_response, res2.resid_response, rtol=1e-8) + + def test_glm_attr(self): + for attr in ['llf', 'null_deviance', 'aic', 'bic', 'df_resid', + 'df_model', 'pearson_chi2', 'scale']: + assert_allclose(getattr(self.res1, attr), + getattr(self.res2, attr), rtol=1e-10) + + def test_wald(self): + res1 = self.res1 + res2 = self.res2 + k1 = len(res1.params) + k2 = len(res2.params) + + use_f = False + with warnings.catch_warnings(): + warnings.simplefilter('ignore', ValueWarning) + wt2 = res2.wald_test(np.eye(k2)[1:], use_f=use_f) + wt1 = res1.wald_test(np.eye(k1)[1:], use_f=use_f) + assert_allclose(wt2.pvalue, wt1.pvalue, atol=1e-20) # pvalue = 0 + assert_allclose(wt2.statistic, wt1.statistic, rtol=1e-8) + assert_equal(wt2.df_denom, wt1.df_denom) + + use_f = True + with warnings.catch_warnings(): + warnings.simplefilter('ignore', ValueWarning) + wt2 = res2.wald_test(np.eye(k2)[1:], use_f=use_f) + wt1 = res1.wald_test(np.eye(k1)[1:], use_f=use_f) + assert_allclose(wt2.pvalue, wt1.pvalue, rtol=1) # pvalue = 8e-273 + assert_allclose(wt2.statistic, wt1.statistic, rtol=1e-8) + assert_equal(wt2.df_denom, wt1.df_denom) + assert_equal(wt2.df_num, wt1.df_num) + assert_equal(wt2.summary()[-30:], wt1.summary()[-30:]) + + # smoke + with warnings.catch_warnings(): + warnings.simplefilter('ignore', ValueWarning) + # RuntimeWarnings because of truedivide and scipy distributions + warnings.simplefilter('ignore', RuntimeWarning) + self.res1.summary() + self.res1.summary2() + + +class TestGLMBinomialCountConstrainedHC(TestGLMBinomialCountConstrained): + @classmethod + def init(cls): + cls.res2 = cls.mod2.fit(cov_type='HC0') + k = cls.mod1.exog.shape[1] + cls.idx_p_uc = np.arange(k - 5) + constraints = np.eye(k)[-5:] + cls.res1 = cls.mod1.fit_constrained(constraints, cov_type='HC0') diff --git a/statsmodels/genmod/tests/test_gee.py b/statsmodels/genmod/tests/test_gee.py new file mode 100644 index 0000000..730366b --- /dev/null +++ b/statsmodels/genmod/tests/test_gee.py @@ -0,0 +1,1976 @@ +""" +Test functions for GEE + +External comparisons are to R and Stata. The statmodels GEE +implementation should generally agree with the R GEE implementation +for the independence and exchangeable correlation structures. For +other correlation structures, the details of the correlation +estimation differ among implementations and the results will not agree +exactly. +""" + +from statsmodels.compat import lrange +import os +import numpy as np +import pytest +from numpy.testing import (assert_almost_equal, assert_equal, assert_allclose, + assert_array_less, assert_raises, assert_warns, + assert_) +import statsmodels.genmod.generalized_estimating_equations as gee +import statsmodels.tools as tools +import statsmodels.regression.linear_model as lm +from statsmodels.genmod import families +from statsmodels.genmod import cov_struct +import statsmodels.discrete.discrete_model as discrete + +import pandas as pd +from scipy.stats.distributions import norm +import warnings + +try: + import matplotlib.pyplot as plt +except ImportError: + pass + +pdf_output = False + +if pdf_output: + from matplotlib.backends.backend_pdf import PdfPages + pdf = PdfPages("test_glm.pdf") +else: + pdf = None + + +def close_or_save(pdf, fig): + if pdf_output: + pdf.savefig(fig) + + +def load_data(fname, icept=True): + """ + Load a data set from the results directory. The data set should + be a CSV file with the following format: + + Column 0: Group indicator + Column 1: endog variable + Columns 2-end: exog variables + + If `icept` is True, an intercept is prepended to the exog + variables. + """ + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + Z = np.genfromtxt(os.path.join(cur_dir, 'results', fname), + delimiter=",") + + group = Z[:, 0] + endog = Z[:, 1] + exog = Z[:, 2:] + + if icept: + exog = np.concatenate((np.ones((exog.shape[0], 1)), exog), + axis=1) + + return endog, exog, group + + +def check_wrapper(results): + # check wrapper + assert_(isinstance(results.params, pd.Series)) + assert_(isinstance(results.fittedvalues, pd.Series)) + assert_(isinstance(results.resid, pd.Series)) + assert_(isinstance(results.centered_resid, pd.Series)) + + assert_(isinstance(results._results.params, np.ndarray)) + assert_(isinstance(results._results.fittedvalues, np.ndarray)) + assert_(isinstance(results._results.resid, np.ndarray)) + assert_(isinstance(results._results.centered_resid, np.ndarray)) + + +class TestGEE(object): + + def test_margins_gaussian(self): + # Check marginal effects for a Gaussian GEE fit. Marginal + # effects and ordinary effects should be equal. + + n = 40 + np.random.seed(34234) + exog = np.random.normal(size=(n, 3)) + exog[:, 0] = 1 + + groups = np.kron(np.arange(n / 4), np.r_[1, 1, 1, 1]) + endog = exog[:, 1] + np.random.normal(size=n) + + model = gee.GEE(endog, exog, groups) + result = model.fit( + start_params=[-4.88085602e-04, 1.18501903, 4.78820100e-02]) + + marg = result.get_margeff() + + assert_allclose(marg.margeff, result.params[1:]) + assert_allclose(marg.margeff_se, result.bse[1:]) + + # smoke test + marg.summary() + + def test_margins_logistic(self): + # Check marginal effects for a binomial GEE fit. Comparison + # comes from Stata. + + np.random.seed(34234) + endog = np.r_[0, 0, 0, 0, 1, 1, 1, 1] + exog = np.ones((8, 2)) + exog[:, 1] = np.r_[1, 2, 1, 1, 2, 1, 2, 2] + + groups = np.arange(8) + + model = gee.GEE(endog, exog, groups, family=families.Binomial()) + result = model.fit( + cov_type='naive', start_params=[-3.29583687, 2.19722458]) + + marg = result.get_margeff() + + assert_allclose(marg.margeff, np.r_[0.4119796]) + assert_allclose(marg.margeff_se, np.r_[0.1379962], rtol=1e-6) + + def test_margins_multinomial(self): + # Check marginal effects for a 2-class multinomial GEE fit, + # which should be equivalent to logistic regression. Comparison + # comes from Stata. + + np.random.seed(34234) + endog = np.r_[0, 0, 0, 0, 1, 1, 1, 1] + exog = np.ones((8, 2)) + exog[:, 1] = np.r_[1, 2, 1, 1, 2, 1, 2, 2] + + groups = np.arange(8) + + model = gee.NominalGEE(endog, exog, groups) + result = model.fit(cov_type='naive', start_params=[ + 3.295837, -2.197225]) + + marg = result.get_margeff() + + assert_allclose(marg.margeff, np.r_[-0.41197961], rtol=1e-5) + assert_allclose(marg.margeff_se, np.r_[0.1379962], rtol=1e-6) + + @pytest.mark.smoke + @pytest.mark.matplotlib + def test_nominal_plot(self, close_figures): + np.random.seed(34234) + endog = np.r_[0, 0, 0, 0, 1, 1, 1, 1] + exog = np.ones((8, 2)) + exog[:, 1] = np.r_[1, 2, 1, 1, 2, 1, 2, 2] + + groups = np.arange(8) + + model = gee.NominalGEE(endog, exog, groups) + result = model.fit(cov_type='naive', + start_params=[3.295837, -2.197225]) + + fig = result.plot_distribution() + assert_equal(isinstance(fig, plt.Figure), True) + + def test_margins_poisson(self): + # Check marginal effects for a Poisson GEE fit. + + np.random.seed(34234) + endog = np.r_[10, 15, 12, 13, 20, 18, 26, 29] + exog = np.ones((8, 2)) + exog[:, 1] = np.r_[0, 0, 0, 0, 1, 1, 1, 1] + + groups = np.arange(8) + + model = gee.GEE(endog, exog, groups, family=families.Poisson()) + result = model.fit(cov_type='naive', start_params=[ + 2.52572864, 0.62057649]) + + marg = result.get_margeff() + + assert_allclose(marg.margeff, np.r_[11.0928], rtol=1e-6) + assert_allclose(marg.margeff_se, np.r_[3.269015], rtol=1e-6) + + def test_multinomial(self): + """ + Check the 2-class multinomial (nominal) GEE fit against + logistic regression. + """ + + np.random.seed(34234) + endog = np.r_[0, 0, 0, 0, 1, 1, 1, 1] + exog = np.ones((8, 2)) + exog[:, 1] = np.r_[1, 2, 1, 1, 2, 1, 2, 2] + + groups = np.arange(8) + + model = gee.NominalGEE(endog, exog, groups) + results = model.fit(cov_type='naive', start_params=[ + 3.295837, -2.197225]) + + logit_model = gee.GEE(endog, exog, groups, + family=families.Binomial()) + logit_results = logit_model.fit(cov_type='naive') + + assert_allclose(results.params, -logit_results.params, rtol=1e-5) + assert_allclose(results.bse, logit_results.bse, rtol=1e-5) + + def test_weighted(self): + + # Simple check where the answer can be computed by hand. + exog = np.ones(20) + weights = np.ones(20) + weights[0:10] = 2 + endog = np.zeros(20) + endog[0:10] += 1 + groups = np.kron(np.arange(10), np.r_[1, 1]) + model = gee.GEE(endog, exog, groups, weights=weights) + result = model.fit() + assert_allclose(result.params, np.r_[2 / 3.]) + + # Comparison against stata using groups with different sizes. + weights = np.ones(20) + weights[10:] = 2 + endog = np.r_[1, 2, 3, 2, 3, 4, 3, 4, 5, 4, 5, 6, 5, 6, 7, 6, + 7, 8, 7, 8] + exog1 = np.r_[1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, + 3, 3, 3, 3] + groups = np.r_[1, 1, 2, 2, 2, 2, 4, 4, 5, 5, 6, 6, 6, 6, + 8, 8, 9, 9, 10, 10] + exog = np.column_stack((np.ones(20), exog1)) + + # Comparison using independence model + model = gee.GEE(endog, exog, groups, weights=weights, + cov_struct=cov_struct.Independence()) + g = np.mean([2, 4, 2, 2, 4, 2, 2, 2]) + fac = 20 / float(20 - g) + result = model.fit(ddof_scale=0, scaling_factor=fac) + + assert_allclose(result.params, np.r_[1.247573, 1.436893], atol=1e-6) + assert_allclose(result.scale, 1.808576) + + # Stata multiples robust SE by sqrt(N / (N - g)), where N is + # the total sample size and g is the average group size. + assert_allclose(result.bse, np.r_[0.895366, 0.3425498], atol=1e-5) + + # Comparison using exchangeable model + # Smoke test for now + model = gee.GEE(endog, exog, groups, weights=weights, + cov_struct=cov_struct.Exchangeable()) + model.fit(ddof_scale=0) + + # This is in the release announcement for version 0.6. + def test_poisson_epil(self): + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + fname = os.path.join(cur_dir, "results", "epil.csv") + data = pd.read_csv(fname) + + fam = families.Poisson() + ind = cov_struct.Independence() + mod1 = gee.GEE.from_formula("y ~ age + trt + base", data["subject"], + data, cov_struct=ind, family=fam) + rslt1 = mod1.fit(cov_type='naive') + + # Coefficients should agree with GLM + from statsmodels.genmod.generalized_linear_model import GLM + + mod2 = GLM.from_formula("y ~ age + trt + base", data, + family=families.Poisson()) + rslt2 = mod2.fit() + + # don't use wrapper, asserts_xxx don't work + rslt1 = rslt1._results + rslt2 = rslt2._results + + assert_allclose(rslt1.params, rslt2.params, rtol=1e-6, atol=1e-6) + assert_allclose(rslt1.bse, rslt2.bse, rtol=1e-6, atol=1e-6) + + def test_missing(self): + # Test missing data handling for calling from the api. Missing + # data handling does not currently work for formulas. + + np.random.seed(34234) + endog = np.random.normal(size=100) + exog = np.random.normal(size=(100, 3)) + exog[:, 0] = 1 + groups = np.kron(lrange(20), np.ones(5)) + + endog[0] = np.nan + endog[5:7] = np.nan + exog[10:12, 1] = np.nan + + mod1 = gee.GEE(endog, exog, groups, missing='drop') + rslt1 = mod1.fit() + + assert_almost_equal(len(mod1.endog), 95) + assert_almost_equal(np.asarray(mod1.exog.shape), np.r_[95, 3]) + + ii = np.isfinite(endog) & np.isfinite(exog).all(1) + + mod2 = gee.GEE(endog[ii], exog[ii, :], groups[ii], missing='none') + rslt2 = mod2.fit() + + assert_almost_equal(rslt1.params, rslt2.params) + assert_almost_equal(rslt1.bse, rslt2.bse) + + def test_missing_formula(self): + # Test missing data handling for formulas. + + np.random.seed(34234) + endog = np.random.normal(size=100) + exog1 = np.random.normal(size=100) + exog2 = np.random.normal(size=100) + exog3 = np.random.normal(size=100) + groups = np.kron(lrange(20), np.ones(5)) + + endog[0] = np.nan + endog[5:7] = np.nan + exog2[10:12] = np.nan + + data0 = pd.DataFrame({"endog": endog, "exog1": exog1, "exog2": exog2, + "exog3": exog3, "groups": groups}) + + for k in 0, 1: + data = data0.copy() + kwargs = {} + if k == 1: + data["offset"] = 0 + data["time"] = 0 + kwargs["offset"] = "offset" + kwargs["time"] = "time" + + mod1 = gee.GEE.from_formula("endog ~ exog1 + exog2 + exog3", + groups="groups", data=data, + missing='drop', **kwargs) + rslt1 = mod1.fit() + + assert_almost_equal(len(mod1.endog), 95) + assert_almost_equal(np.asarray(mod1.exog.shape), np.r_[95, 4]) + + data = data.dropna() + + kwargs = {} + if k == 1: + kwargs["offset"] = data["offset"] + kwargs["time"] = data["time"] + + mod2 = gee.GEE.from_formula("endog ~ exog1 + exog2 + exog3", + groups=data["groups"], data=data, + missing='none', **kwargs) + rslt2 = mod2.fit() + + assert_almost_equal(rslt1.params.values, rslt2.params.values) + assert_almost_equal(rslt1.bse.values, rslt2.bse.values) + + def test_invalid_args(self): + # TODO: parametrize? + for j in range(3): + for k1 in False, True: + for k2 in False, True: + + p = [20, 20, 20] + p[j] = 18 + + endog = np.zeros(p[0]) + exog = np.zeros((p[1], 2)) + + kwargs = {} + kwargs["groups"] = np.zeros(p[2]) + if k1: + kwargs["exposure"] = np.zeros(18) + if k2: + kwargs["time"] = np.zeros(18) + with assert_raises(ValueError): + gee.GEE(endog, exog, **kwargs) + + def test_default_time(self): + # Check that the time defaults work correctly. + + endog, exog, group = load_data("gee_logistic_1.csv") + + # Time values for the autoregressive model + T = np.zeros(len(endog)) + idx = set(group) + for ii in idx: + jj = np.flatnonzero(group == ii) + T[jj] = lrange(len(jj)) + + family = families.Binomial() + va = cov_struct.Autoregressive() + + md1 = gee.GEE(endog, exog, group, family=family, cov_struct=va) + mdf1 = md1.fit() + + md2 = gee.GEE(endog, exog, group, time=T, family=family, + cov_struct=va) + mdf2 = md2.fit() + + assert_almost_equal(mdf1.params, mdf2.params, decimal=6) + assert_almost_equal(mdf1.standard_errors(), + mdf2.standard_errors(), decimal=6) + + def test_logistic(self): + # R code for comparing results: + + # library(gee) + # Z = read.csv("results/gee_logistic_1.csv", header=FALSE) + # Y = Z[,2] + # Id = Z[,1] + # X1 = Z[,3] + # X2 = Z[,4] + # X3 = Z[,5] + + # mi = gee(Y ~ X1 + X2 + X3, id=Id, family=binomial, + # corstr="independence") + # smi = summary(mi) + # u = coefficients(smi) + # cfi = paste(u[,1], collapse=",") + # sei = paste(u[,4], collapse=",") + + # me = gee(Y ~ X1 + X2 + X3, id=Id, family=binomial, + # corstr="exchangeable") + # sme = summary(me) + # u = coefficients(sme) + # cfe = paste(u[,1], collapse=",") + # see = paste(u[,4], collapse=",") + + # ma = gee(Y ~ X1 + X2 + X3, id=Id, family=binomial, + # corstr="AR-M") + # sma = summary(ma) + # u = coefficients(sma) + # cfa = paste(u[,1], collapse=",") + # sea = paste(u[,4], collapse=",") + + # sprintf("cf = [[%s],[%s],[%s]]", cfi, cfe, cfa) + # sprintf("se = [[%s],[%s],[%s]]", sei, see, sea) + + endog, exog, group = load_data("gee_logistic_1.csv") + + # Time values for the autoregressive model + T = np.zeros(len(endog)) + idx = set(group) + for ii in idx: + jj = np.flatnonzero(group == ii) + T[jj] = lrange(len(jj)) + + family = families.Binomial() + ve = cov_struct.Exchangeable() + vi = cov_struct.Independence() + va = cov_struct.Autoregressive() + + # From R gee + cf = [[0.0167272965285882, 1.13038654425893, + -1.86896345082962, 1.09397608331333], + [0.0178982283915449, 1.13118798191788, + -1.86133518416017, 1.08944256230299], + [0.0109621937947958, 1.13226505028438, + -1.88278757333046, 1.09954623769449]] + se = [[0.127291720283049, 0.166725808326067, + 0.192430061340865, 0.173141068839597], + [0.127045031730155, 0.165470678232842, + 0.192052750030501, 0.173174779369249], + [0.127240302296444, 0.170554083928117, + 0.191045527104503, 0.169776150974586]] + + for j, v in enumerate((vi, ve, va)): + md = gee.GEE(endog, exog, group, T, family, v) + mdf = md.fit() + if id(v) != id(va): + assert_almost_equal(mdf.params, cf[j], decimal=6) + assert_almost_equal(mdf.standard_errors(), se[j], + decimal=6) + + # Test with formulas + D = np.concatenate((endog[:, None], group[:, None], exog[:, 1:]), + axis=1) + D = pd.DataFrame(D) + D.columns = ["Y", "Id", ] + ["X%d" % (k + 1) + for k in range(exog.shape[1] - 1)] + for j, v in enumerate((vi, ve)): + md = gee.GEE.from_formula("Y ~ X1 + X2 + X3", "Id", D, + family=family, cov_struct=v) + mdf = md.fit() + assert_almost_equal(mdf.params, cf[j], decimal=6) + assert_almost_equal(mdf.standard_errors(), se[j], + decimal=6) + + # FIXME: don't leave commented-out + # Check for run-time exceptions in summary + # print(mdf.summary()) + + def test_autoregressive(self): + + dep_params_true = [0, 0.589208623896, 0.559823804948] + + params_true = [[1.08043787, 1.12709319, 0.90133927], + [0.9613677, 1.05826987, 0.90832055], + [1.05370439, 0.96084864, 0.93923374]] + + np.random.seed(342837482) + + num_group = 100 + ar_param = 0.5 + k = 3 + + ga = families.Gaussian() + + for gsize in 1, 2, 3: + + ix = np.arange(gsize)[:, None] - np.arange(gsize)[None, :] + ix = np.abs(ix) + cmat = ar_param ** ix + cmat_r = np.linalg.cholesky(cmat) + + endog = [] + exog = [] + groups = [] + for i in range(num_group): + x = np.random.normal(size=(gsize, k)) + exog.append(x) + expval = x.sum(1) + errors = np.dot(cmat_r, np.random.normal(size=gsize)) + endog.append(expval + errors) + groups.append(i * np.ones(gsize)) + + endog = np.concatenate(endog) + groups = np.concatenate(groups) + exog = np.concatenate(exog, axis=0) + + ar = cov_struct.Autoregressive() + md = gee.GEE(endog, exog, groups, family=ga, cov_struct=ar) + mdf = md.fit() + assert_almost_equal(ar.dep_params, dep_params_true[gsize - 1]) + assert_almost_equal(mdf.params, params_true[gsize - 1]) + + def test_post_estimation(self): + + family = families.Gaussian() + endog, exog, group = load_data("gee_linear_1.csv") + + ve = cov_struct.Exchangeable() + + md = gee.GEE(endog, exog, group, None, family, ve) + mdf = md.fit() + + assert_almost_equal(np.dot(exog, mdf.params), + mdf.fittedvalues) + assert_almost_equal(endog - np.dot(exog, mdf.params), + mdf.resid) + + def test_scoretest(self): + # Regression tests + + np.random.seed(6432) + n = 200 # Must be divisible by 4 + exog = np.random.normal(size=(n, 4)) + endog = exog[:, 0] + exog[:, 1] + exog[:, 2] + endog += 3 * np.random.normal(size=n) + group = np.kron(np.arange(n / 4), np.ones(4)) + + # Test under the null. + L = np.array([[1., -1, 0, 0]]) + R = np.array([0., ]) + family = families.Gaussian() + va = cov_struct.Independence() + mod1 = gee.GEE(endog, exog, group, family=family, + cov_struct=va, constraint=(L, R)) + res1 = mod1.fit() + assert_almost_equal(res1.score_test()["statistic"], + 1.08126334) + assert_almost_equal(res1.score_test()["p-value"], + 0.2984151086) + + # Test under the alternative. + L = np.array([[1., -1, 0, 0]]) + R = np.array([1.0, ]) + family = families.Gaussian() + va = cov_struct.Independence() + mod2 = gee.GEE(endog, exog, group, family=family, + cov_struct=va, constraint=(L, R)) + res2 = mod2.fit() + assert_almost_equal(res2.score_test()["statistic"], + 3.491110965) + assert_almost_equal(res2.score_test()["p-value"], + 0.0616991659) + + # Compare to Wald tests + exog = np.random.normal(size=(n, 2)) + L = np.array([[1, -1]]) + R = np.array([0.]) + f = np.r_[1, -1] + for i in range(10): + endog = exog[:, 0] + (0.5 + i / 10.) * exog[:, 1] +\ + np.random.normal(size=n) + family = families.Gaussian() + va = cov_struct.Independence() + mod0 = gee.GEE(endog, exog, group, family=family, + cov_struct=va) + rslt0 = mod0.fit() + family = families.Gaussian() + va = cov_struct.Independence() + mod1 = gee.GEE(endog, exog, group, family=family, + cov_struct=va, constraint=(L, R)) + res1 = mod1.fit() + se = np.sqrt(np.dot(f, np.dot(rslt0.cov_params(), f))) + wald_z = np.dot(f, rslt0.params) / se + wald_p = 2 * norm.cdf(-np.abs(wald_z)) + score_p = res1.score_test()["p-value"] + assert_array_less(np.abs(wald_p - score_p), 0.02) + + @pytest.mark.parametrize("cov_struct", [cov_struct.Independence, + cov_struct.Exchangeable]) + def test_compare_score_test(self, cov_struct): + + np.random.seed(6432) + n = 200 # Must be divisible by 4 + exog = np.random.normal(size=(n, 4)) + group = np.kron(np.arange(n / 4), np.ones(4)) + + exog_sub = exog[:, [0, 3]] + endog = exog_sub.sum(1) + 3 * np.random.normal(size=n) + + L = np.asarray([[0, 1, 0, 0], [0, 0, 1, 0]]) + R = np.zeros(2) + mod_lr = gee.GEE(endog, exog, group, constraint=(L, R), + cov_struct=cov_struct()) + mod_lr.fit() + + mod_sub = gee.GEE(endog, exog_sub, group, cov_struct=cov_struct()) + res_sub = mod_sub.fit() + + for call_fit in [False, True]: + mod = gee.GEE(endog, exog, group, cov_struct=cov_struct()) + if call_fit: + # Should work with or without fitting the parent model + mod.fit() + score_results = mod.compare_score_test(res_sub) + assert_almost_equal( + score_results["statistic"], + mod_lr.score_test_results["statistic"]) + assert_almost_equal( + score_results["p-value"], + mod_lr.score_test_results["p-value"]) + assert_almost_equal( + score_results["df"], + mod_lr.score_test_results["df"]) + + def test_compare_score_test_warnings(self): + + np.random.seed(6432) + n = 200 # Must be divisible by 4 + exog = np.random.normal(size=(n, 4)) + group = np.kron(np.arange(n / 4), np.ones(4)) + exog_sub = exog[:, [0, 3]] + endog = exog_sub.sum(1) + 3 * np.random.normal(size=n) + + # Mismatched cov_struct + with assert_warns(UserWarning): + mod_sub = gee.GEE(endog, exog_sub, group, + cov_struct=cov_struct.Exchangeable()) + res_sub = mod_sub.fit() + mod = gee.GEE(endog, exog, group, + cov_struct=cov_struct.Independence()) + mod.compare_score_test(res_sub) # smoketest + + # Mismatched family + with assert_warns(UserWarning): + mod_sub = gee.GEE(endog, exog_sub, group, + family=families.Gaussian()) + res_sub = mod_sub.fit() + mod = gee.GEE(endog, exog, group, family=families.Poisson()) + mod.compare_score_test(res_sub) # smoketest + + # Mismatched size + with assert_raises(Exception): + mod_sub = gee.GEE(endog, exog_sub, group) + res_sub = mod_sub.fit() + mod = gee.GEE(endog[0:100], exog[:100, :], group[0:100]) + mod.compare_score_test(res_sub) # smoketest + + # Mismatched weights + with assert_warns(UserWarning): + w = np.random.uniform(size=n) + mod_sub = gee.GEE(endog, exog_sub, group, weights=w) + res_sub = mod_sub.fit() + mod = gee.GEE(endog, exog, group) + mod.compare_score_test(res_sub) # smoketest + + # Parent and submodel are the same dimension + with pytest.warns(UserWarning): + w = np.random.uniform(size=n) + mod_sub = gee.GEE(endog, exog, group) + res_sub = mod_sub.fit() + mod = gee.GEE(endog, exog, group) + mod.compare_score_test(res_sub) # smoketest + + def test_constraint_covtype(self): + # Test constraints with different cov types + np.random.seed(6432) + n = 200 + exog = np.random.normal(size=(n, 4)) + endog = exog[:, 0] + exog[:, 1] + exog[:, 2] + endog += 3 * np.random.normal(size=n) + group = np.kron(np.arange(n / 4), np.ones(4)) + L = np.array([[1., -1, 0, 0]]) + R = np.array([0., ]) + family = families.Gaussian() + va = cov_struct.Independence() + for cov_type in "robust", "naive", "bias_reduced": + model = gee.GEE(endog, exog, group, family=family, + cov_struct=va, constraint=(L, R)) + result = model.fit(cov_type=cov_type) + result.standard_errors(cov_type=cov_type) + assert_allclose(result.cov_robust.shape, np.r_[4, 4]) + assert_allclose(result.cov_naive.shape, np.r_[4, 4]) + if cov_type == "bias_reduced": + assert_allclose(result.cov_robust_bc.shape, np.r_[4, 4]) + + def test_linear(self): + # library(gee) + + # Z = read.csv("results/gee_linear_1.csv", header=FALSE) + # Y = Z[,2] + # Id = Z[,1] + # X1 = Z[,3] + # X2 = Z[,4] + # X3 = Z[,5] + # mi = gee(Y ~ X1 + X2 + X3, id=Id, family=gaussian, + # corstr="independence", tol=1e-8, maxit=100) + # smi = summary(mi) + # u = coefficients(smi) + + # cfi = paste(u[,1], collapse=",") + # sei = paste(u[,4], collapse=",") + + # me = gee(Y ~ X1 + X2 + X3, id=Id, family=gaussian, + # corstr="exchangeable", tol=1e-8, maxit=100) + # sme = summary(me) + # u = coefficients(sme) + + # cfe = paste(u[,1], collapse=",") + # see = paste(u[,4], collapse=",") + + # sprintf("cf = [[%s],[%s]]", cfi, cfe) + # sprintf("se = [[%s],[%s]]", sei, see) + + family = families.Gaussian() + + endog, exog, group = load_data("gee_linear_1.csv") + + vi = cov_struct.Independence() + ve = cov_struct.Exchangeable() + + # From R gee + cf = [[-0.01850226507491, 0.81436304278962, + -1.56167635393184, 0.794239361055003], + [-0.0182920577154767, 0.814898414022467, + -1.56194040106201, 0.793499517527478]] + se = [[0.0440733554189401, 0.0479993639119261, + 0.0496045952071308, 0.0479467597161284], + [0.0440369906460754, 0.0480069787567662, + 0.049519758758187, 0.0479760443027526]] + + for j, v in enumerate((vi, ve)): + md = gee.GEE(endog, exog, group, None, family, v) + mdf = md.fit() + assert_almost_equal(mdf.params, cf[j], decimal=10) + assert_almost_equal(mdf.standard_errors(), se[j], + decimal=10) + + # Test with formulas + D = np.concatenate((endog[:, None], group[:, None], exog[:, 1:]), + axis=1) + D = pd.DataFrame(D) + D.columns = ["Y", "Id", ] + ["X%d" % (k + 1) + for k in range(exog.shape[1] - 1)] + for j, v in enumerate((vi, ve)): + md = gee.GEE.from_formula("Y ~ X1 + X2 + X3", "Id", D, + family=family, cov_struct=v) + mdf = md.fit() + assert_almost_equal(mdf.params, cf[j], decimal=10) + assert_almost_equal(mdf.standard_errors(), se[j], + decimal=10) + + def test_linear_constrained(self): + + family = families.Gaussian() + + np.random.seed(34234) + exog = np.random.normal(size=(300, 4)) + exog[:, 0] = 1 + endog = np.dot(exog, np.r_[1, 1, 0, 0.2]) +\ + np.random.normal(size=300) + group = np.kron(np.arange(100), np.r_[1, 1, 1]) + + vi = cov_struct.Independence() + ve = cov_struct.Exchangeable() + + L = np.r_[[[0, 0, 0, 1]]] + R = np.r_[0, ] + + for j, v in enumerate((vi, ve)): + md = gee.GEE(endog, exog, group, None, family, v, + constraint=(L, R)) + mdf = md.fit() + assert_almost_equal(mdf.params[3], 0, decimal=10) + + def test_nested_linear(self): + + family = families.Gaussian() + + endog, exog, group = load_data("gee_nested_linear_1.csv") + + group_n = [] + for i in range(endog.shape[0] // 10): + group_n.extend([0, ] * 5) + group_n.extend([1, ] * 5) + group_n = np.array(group_n)[:, None] + + dp = cov_struct.Independence() + md = gee.GEE(endog, exog, group, None, family, dp) + mdf1 = md.fit() + + # From statsmodels.GEE (not an independent test) + cf = np.r_[-0.1671073, 1.00467426, -2.01723004, 0.97297106] + se = np.r_[0.08629606, 0.04058653, 0.04067038, 0.03777989] + assert_almost_equal(mdf1.params, cf, decimal=6) + assert_almost_equal(mdf1.standard_errors(), se, + decimal=6) + + ne = cov_struct.Nested() + md = gee.GEE(endog, exog, group, None, family, ne, + dep_data=group_n) + mdf2 = md.fit(start_params=mdf1.params) + + # From statsmodels.GEE (not an independent test) + cf = np.r_[-0.16655319, 1.02183688, -2.00858719, 1.00101969] + se = np.r_[0.08632616, 0.02913582, 0.03114428, 0.02893991] + assert_almost_equal(mdf2.params, cf, decimal=6) + assert_almost_equal(mdf2.standard_errors(), se, + decimal=6) + + smry = mdf2.cov_struct.summary() + assert_allclose( + smry.Variance, + np.r_[1.043878, 0.611656, 1.421205], + atol=1e-5, rtol=1e-5) + + def test_nested_pandas(self): + + np.random.seed(4234) + n = 10000 + + # Outer groups + groups = np.kron(np.arange(n // 100), np.ones(100)).astype(np.int) + + # Inner groups + groups1 = np.kron(np.arange(n // 50), np.ones(50)).astype(np.int) + groups2 = np.kron(np.arange(n // 10), np.ones(10)).astype(np.int) + + # Group effects + groups_e = np.random.normal(size=n // 100) + groups1_e = 2 * np.random.normal(size=n // 50) + groups2_e = 3 * np.random.normal(size=n // 10) + + y = groups_e[groups] + groups1_e[groups1] + groups2_e[groups2] + y += 0.5 * np.random.normal(size=n) + + df = pd.DataFrame({"y": y, "TheGroups": groups, + "groups1": groups1, "groups2": groups2}) + + model = gee.GEE.from_formula("y ~ 1", groups="TheGroups", + dep_data="0 + groups1 + groups2", + cov_struct=cov_struct.Nested(), + data=df) + result = model.fit() + + # The true variances are 1, 4, 9, 0.25 + smry = result.cov_struct.summary() + assert_allclose( + smry.Variance, + np.r_[1.437299, 4.421543, 8.905295, 0.258480], + atol=1e-5, rtol=1e-5) + + def test_ordinal(self): + + family = families.Binomial() + + endog, exog, groups = load_data("gee_ordinal_1.csv", + icept=False) + + va = cov_struct.GlobalOddsRatio("ordinal") + + mod = gee.OrdinalGEE(endog, exog, groups, None, family, va) + rslt = mod.fit() + + # Regression test + cf = np.r_[1.09250002, 0.0217443, -0.39851092, -0.01812116, + 0.03023969, 1.18258516, 0.01803453, -1.10203381] + assert_almost_equal(rslt.params, cf, decimal=5) + + # Regression test + se = np.r_[0.10883461, 0.10330197, 0.11177088, 0.05486569, + 0.05997153, 0.09168148, 0.05953324, 0.0853862] + assert_almost_equal(rslt.bse, se, decimal=5) + + # Check that we get the correct results type + assert_equal(type(rslt), gee.OrdinalGEEResultsWrapper) + assert_equal(type(rslt._results), gee.OrdinalGEEResults) + + @pytest.mark.smoke + def test_ordinal_formula(self): + + np.random.seed(434) + n = 40 + y = np.random.randint(0, 3, n) + groups = np.arange(n) + x1 = np.random.normal(size=n) + x2 = np.random.normal(size=n) + + df = pd.DataFrame({"y": y, "groups": groups, "x1": x1, "x2": x2}) + + model = gee.OrdinalGEE.from_formula("y ~ 0 + x1 + x2", groups, data=df) + model.fit() + + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + model = gee.NominalGEE.from_formula("y ~ 0 + x1 + x2", groups, + data=df) + model.fit() + + @pytest.mark.smoke + def test_ordinal_independence(self): + + np.random.seed(434) + n = 40 + y = np.random.randint(0, 3, n) + groups = np.kron(np.arange(n / 2), np.r_[1, 1]) + x = np.random.normal(size=(n, 1)) + + odi = cov_struct.OrdinalIndependence() + model1 = gee.OrdinalGEE(y, x, groups, cov_struct=odi) + model1.fit() + + @pytest.mark.smoke + def test_nominal_independence(self): + + np.random.seed(434) + n = 40 + y = np.random.randint(0, 3, n) + groups = np.kron(np.arange(n / 2), np.r_[1, 1]) + x = np.random.normal(size=(n, 1)) + + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + nmi = cov_struct.NominalIndependence() + model1 = gee.NominalGEE(y, x, groups, cov_struct=nmi) + model1.fit() + + @pytest.mark.smoke + @pytest.mark.matplotlib + def test_ordinal_plot(self, close_figures): + family = families.Binomial() + + endog, exog, groups = load_data("gee_ordinal_1.csv", + icept=False) + + va = cov_struct.GlobalOddsRatio("ordinal") + + mod = gee.OrdinalGEE(endog, exog, groups, None, family, va) + rslt = mod.fit() + + fig = rslt.plot_distribution() + assert_equal(isinstance(fig, plt.Figure), True) + + def test_nominal(self): + + endog, exog, groups = load_data("gee_nominal_1.csv", + icept=False) + + # Test with independence correlation + va = cov_struct.Independence() + mod1 = gee.NominalGEE(endog, exog, groups, cov_struct=va) + rslt1 = mod1.fit() + + # Regression test + cf1 = np.r_[0.450009, 0.451959, -0.918825, -0.468266] + se1 = np.r_[0.08915936, 0.07005046, 0.12198139, 0.08281258] + assert_allclose(rslt1.params, cf1, rtol=1e-5, atol=1e-5) + assert_allclose(rslt1.standard_errors(), se1, rtol=1e-5, atol=1e-5) + + # Test with global odds ratio dependence + va = cov_struct.GlobalOddsRatio("nominal") + mod2 = gee.NominalGEE(endog, exog, groups, cov_struct=va) + rslt2 = mod2.fit(start_params=rslt1.params) + + # Regression test + cf2 = np.r_[0.455365, 0.415334, -0.916589, -0.502116] + se2 = np.r_[0.08803614, 0.06628179, 0.12259726, 0.08411064] + assert_allclose(rslt2.params, cf2, rtol=1e-5, atol=1e-5) + assert_allclose(rslt2.standard_errors(), se2, rtol=1e-5, atol=1e-5) + + # Make sure we get the correct results type + assert_equal(type(rslt1), gee.NominalGEEResultsWrapper) + assert_equal(type(rslt1._results), gee.NominalGEEResults) + + def test_poisson(self): + # library(gee) + # Z = read.csv("results/gee_poisson_1.csv", header=FALSE) + # Y = Z[,2] + # Id = Z[,1] + # X1 = Z[,3] + # X2 = Z[,4] + # X3 = Z[,5] + # X4 = Z[,6] + # X5 = Z[,7] + + # mi = gee(Y ~ X1 + X2 + X3 + X4 + X5, id=Id, family=poisson, + # corstr="independence", scale.fix=TRUE) + # smi = summary(mi) + # u = coefficients(smi) + # cfi = paste(u[,1], collapse=",") + # sei = paste(u[,4], collapse=",") + + # me = gee(Y ~ X1 + X2 + X3 + X4 + X5, id=Id, family=poisson, + # corstr="exchangeable", scale.fix=TRUE) + # sme = summary(me) + + # u = coefficients(sme) + # cfe = paste(u[,1], collapse=",") + # see = paste(u[,4], collapse=",") + + # sprintf("cf = [[%s],[%s]]", cfi, cfe) + # sprintf("se = [[%s],[%s]]", sei, see) + + family = families.Poisson() + + endog, exog, group_n = load_data("gee_poisson_1.csv") + + vi = cov_struct.Independence() + ve = cov_struct.Exchangeable() + + # From R gee + cf = [[-0.0364450410793481, -0.0543209391301178, + 0.0156642711741052, 0.57628591338724, + -0.00465659951186211, -0.477093153099256], + [-0.0315615554826533, -0.0562589480840004, + 0.0178419412298561, 0.571512795340481, + -0.00363255566297332, -0.475971696727736]] + se = [[0.0611309237214186, 0.0390680524493108, + 0.0334234174505518, 0.0366860768962715, + 0.0304758505008105, 0.0316348058881079], + [0.0610840153582275, 0.0376887268649102, + 0.0325168379415177, 0.0369786751362213, + 0.0296141014225009, 0.0306115470200955]] + + for j, v in enumerate((vi, ve)): + md = gee.GEE(endog, exog, group_n, None, family, v) + mdf = md.fit() + assert_almost_equal(mdf.params, cf[j], decimal=5) + assert_almost_equal(mdf.standard_errors(), se[j], + decimal=6) + + # Test with formulas + D = np.concatenate((endog[:, None], group_n[:, None], + exog[:, 1:]), axis=1) + D = pd.DataFrame(D) + D.columns = ["Y", "Id", ] + ["X%d" % (k + 1) + for k in range(exog.shape[1] - 1)] + for j, v in enumerate((vi, ve)): + md = gee.GEE.from_formula("Y ~ X1 + X2 + X3 + X4 + X5", "Id", + D, family=family, cov_struct=v) + mdf = md.fit() + assert_almost_equal(mdf.params, cf[j], decimal=5) + assert_almost_equal(mdf.standard_errors(), se[j], + decimal=6) + # print(mdf.params) + + def test_groups(self): + # Test various group structures (nonconsecutive, different + # group sizes, not ordered, string labels) + + np.random.seed(234) + n = 40 + x = np.random.normal(size=(n, 2)) + y = np.random.normal(size=n) + + # groups with unequal group sizes + groups = np.kron(np.arange(n / 4), np.ones(4)) + groups[8:12] = 3 + groups[34:36] = 9 + + model1 = gee.GEE(y, x, groups=groups) + result1 = model1.fit() + + # Unordered groups + ix = np.random.permutation(n) + y1 = y[ix] + x1 = x[ix, :] + groups1 = groups[ix] + + model2 = gee.GEE(y1, x1, groups=groups1) + result2 = model2.fit() + + assert_allclose(result1.params, result2.params) + assert_allclose(result1.tvalues, result2.tvalues) + + # group labels are strings + mp = {} + import string + for j, g in enumerate(set(groups)): + mp[g] = string.ascii_letters[j:j + 4] + groups2 = [mp[g] for g in groups] + + model3 = gee.GEE(y, x, groups=groups2) + result3 = model3.fit() + + assert_allclose(result1.params, result3.params) + assert_allclose(result1.tvalues, result3.tvalues) + + def test_compare_OLS(self): + # Gaussian GEE with independence correlation should agree + # exactly with OLS for parameter estimates and standard errors + # derived from the naive covariance estimate. + + vs = cov_struct.Independence() + family = families.Gaussian() + + np.random.seed(34234) + Y = np.random.normal(size=100) + X1 = np.random.normal(size=100) + X2 = np.random.normal(size=100) + X3 = np.random.normal(size=100) + groups = np.kron(lrange(20), np.ones(5)) + + D = pd.DataFrame({"Y": Y, "X1": X1, "X2": X2, "X3": X3}) + + md = gee.GEE.from_formula("Y ~ X1 + X2 + X3", groups, D, + family=family, cov_struct=vs) + mdf = md.fit() + + ols = lm.OLS.from_formula("Y ~ X1 + X2 + X3", data=D).fit() + + # don't use wrapper, asserts_xxx don't work + ols = ols._results + + assert_almost_equal(ols.params, mdf.params, decimal=10) + + se = mdf.standard_errors(cov_type="naive") + assert_almost_equal(ols.bse, se, decimal=10) + + naive_tvalues = mdf.params / np.sqrt(np.diag(mdf.cov_naive)) + assert_almost_equal(naive_tvalues, ols.tvalues, decimal=10) + + def test_formulas(self): + # Check formulas, especially passing groups and time as either + # variable names or arrays. + + n = 100 + np.random.seed(34234) + Y = np.random.normal(size=n) + X1 = np.random.normal(size=n) + mat = np.concatenate((np.ones((n, 1)), X1[:, None]), axis=1) + Time = np.random.uniform(size=n) + groups = np.kron(lrange(20), np.ones(5)) + + data = pd.DataFrame({"Y": Y, "X1": X1, "Time": Time, "groups": groups}) + + va = cov_struct.Autoregressive() + family = families.Gaussian() + + mod1 = gee.GEE(Y, mat, groups, time=Time, family=family, + cov_struct=va) + rslt1 = mod1.fit() + + mod2 = gee.GEE.from_formula("Y ~ X1", groups, data, time=Time, + family=family, cov_struct=va) + rslt2 = mod2.fit() + + mod3 = gee.GEE.from_formula("Y ~ X1", groups, data, time="Time", + family=family, cov_struct=va) + rslt3 = mod3.fit() + + mod4 = gee.GEE.from_formula("Y ~ X1", "groups", data, time=Time, + family=family, cov_struct=va) + rslt4 = mod4.fit() + + mod5 = gee.GEE.from_formula("Y ~ X1", "groups", data, time="Time", + family=family, cov_struct=va) + rslt5 = mod5.fit() + + assert_almost_equal(rslt1.params, rslt2.params, decimal=8) + assert_almost_equal(rslt1.params, rslt3.params, decimal=8) + assert_almost_equal(rslt1.params, rslt4.params, decimal=8) + assert_almost_equal(rslt1.params, rslt5.params, decimal=8) + + check_wrapper(rslt2) + + def test_compare_logit(self): + + vs = cov_struct.Independence() + family = families.Binomial() + + np.random.seed(34234) + Y = 1 * (np.random.normal(size=100) < 0) + X1 = np.random.normal(size=100) + X2 = np.random.normal(size=100) + X3 = np.random.normal(size=100) + groups = np.random.randint(0, 4, size=100) + + D = pd.DataFrame({"Y": Y, "X1": X1, "X2": X2, "X3": X3}) + + mod1 = gee.GEE.from_formula("Y ~ X1 + X2 + X3", groups, D, + family=family, cov_struct=vs) + rslt1 = mod1.fit() + + mod2 = discrete.Logit.from_formula("Y ~ X1 + X2 + X3", data=D) + rslt2 = mod2.fit(disp=False) + + assert_almost_equal(rslt1.params.values, rslt2.params.values, + decimal=10) + + def test_compare_poisson(self): + + vs = cov_struct.Independence() + family = families.Poisson() + + np.random.seed(34234) + Y = np.ceil(-np.log(np.random.uniform(size=100))) + X1 = np.random.normal(size=100) + X2 = np.random.normal(size=100) + X3 = np.random.normal(size=100) + groups = np.random.randint(0, 4, size=100) + + D = pd.DataFrame({"Y": Y, "X1": X1, "X2": X2, "X3": X3}) + + mod1 = gee.GEE.from_formula("Y ~ X1 + X2 + X3", groups, D, + family=family, cov_struct=vs) + rslt1 = mod1.fit() + + mod2 = discrete.Poisson.from_formula("Y ~ X1 + X2 + X3", data=D) + rslt2 = mod2.fit(disp=False) + + assert_almost_equal(rslt1.params.values, rslt2.params.values, + decimal=10) + + def test_predict(self): + + n = 50 + np.random.seed(4324) + X1 = np.random.normal(size=n) + X2 = np.random.normal(size=n) + groups = np.kron(np.arange(n / 2), np.r_[1, 1]) + offset = np.random.uniform(1, 2, size=n) + Y = np.random.normal(0.1 * (X1 + X2) + offset, size=n) + data = pd.DataFrame({"Y": Y, "X1": X1, "X2": X2, "groups": groups, + "offset": offset}) + + fml = "Y ~ X1 + X2" + model = gee.GEE.from_formula(fml, groups, data, + family=families.Gaussian(), + offset="offset") + result = model.fit(start_params=[0, 0.1, 0.1]) + assert_equal(result.converged, True) + + pred1 = result.predict() + pred2 = result.predict(offset=data.offset) + pred3 = result.predict(exog=data[["X1", "X2"]], offset=data.offset) + pred4 = result.predict(exog=data[["X1", "X2"]], offset=0 * data.offset) + pred5 = result.predict(offset=0 * data.offset) + + assert_allclose(pred1, pred2) + assert_allclose(pred1, pred3) + assert_allclose(pred1, pred4 + data.offset) + assert_allclose(pred1, pred5 + data.offset) + + x1_new = np.random.normal(size=10) + x2_new = np.random.normal(size=10) + new_exog = pd.DataFrame({"X1": x1_new, "X2": x2_new}) + pred6 = result.predict(exog=new_exog) + params = result.params + pred6_correct = params[0] + params[1] * x1_new + params[2] * x2_new + assert_allclose(pred6, pred6_correct) + + def test_stationary_grid(self): + + endog = np.r_[4, 2, 3, 1, 4, 5, 6, 7, 8, 3, 2, 4.] + exog = np.r_[2, 3, 1, 4, 3, 2, 5, 4, 5, 6, 3, 2] + group = np.r_[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3] + exog = tools.add_constant(exog) + + cs = cov_struct.Stationary(max_lag=2, grid=True) + model = gee.GEE(endog, exog, group, cov_struct=cs) + result = model.fit() + se = result.bse * np.sqrt(12 / 9.) # Stata adjustment + + assert_allclose(cs.covariance_matrix(np.r_[1, 1, 1], 0)[0].sum(), + 6.4633538285149452) + + # Obtained from Stata using: + # xtgee y x, i(g) vce(robust) corr(Stationary2) + assert_allclose(result.params, np.r_[ + 4.463968, -0.0386674], rtol=1e-5, atol=1e-5) + assert_allclose(se, np.r_[0.5217202, 0.2800333], rtol=1e-5, atol=1e-5) + + def test_stationary_nogrid(self): + + # First test special case where the data follow a grid but we + # fit using nogrid + endog = np.r_[4, 2, 3, 1, 4, 5, 6, 7, 8, 3, 2, 4.] + exog = np.r_[2, 3, 1, 4, 3, 2, 5, 4, 5, 6, 3, 2] + time = np.r_[0, 1, 2, 0, 1, 2, 0, 1, 2, 0, 1, 2] + group = np.r_[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3] + + exog = tools.add_constant(exog) + + model = gee.GEE(endog, exog, group, + cov_struct=cov_struct.Stationary(max_lag=2, + grid=False)) + result = model.fit() + se = result.bse * np.sqrt(12 / 9.) # Stata adjustment + + # Obtained from Stata using: + # xtgee y x, i(g) vce(robust) corr(Stationary2) + assert_allclose(result.params, np.r_[ + 4.463968, -0.0386674], rtol=1e-5, atol=1e-5) + assert_allclose(se, np.r_[0.5217202, 0.2800333], rtol=1e-5, atol=1e-5) + + # Smoke test for no grid # TODO: pytest.mark.smoke> + time = np.r_[0, 1, 3, 0, 2, 3, 0, 2, 3, 0, 1, 2][:, None] + model = gee.GEE(endog, exog, group, time=time, + cov_struct=cov_struct.Stationary(max_lag=4, + grid=False)) + model.fit() + + def test_predict_exposure(self): + + n = 50 + np.random.seed(34234) + X1 = np.random.normal(size=n) + X2 = np.random.normal(size=n) + groups = np.kron(np.arange(25), np.r_[1, 1]) + offset = np.random.uniform(1, 2, size=n) + exposure = np.random.uniform(1, 2, size=n) + Y = np.random.poisson(0.1 * (X1 + X2) + offset + + np.log(exposure), size=n) + data = pd.DataFrame({"Y": Y, "X1": X1, "X2": X2, "groups": groups, + "offset": offset, "exposure": exposure}) + + fml = "Y ~ X1 + X2" + model = gee.GEE.from_formula(fml, groups, data, + family=families.Poisson(), + offset="offset", exposure="exposure") + result = model.fit() + assert_equal(result.converged, True) + + pred1 = result.predict() + pred2 = result.predict(offset=data["offset"]) + pred3 = result.predict(exposure=data["exposure"]) + pred4 = result.predict( + offset=data["offset"], exposure=data["exposure"]) + pred5 = result.predict(exog=data[-10:], + offset=data["offset"][-10:], + exposure=data["exposure"][-10:]) + # without patsy + pred6 = result.predict(exog=result.model.exog[-10:], + offset=data["offset"][-10:], + exposure=data["exposure"][-10:], + transform=False) + assert_allclose(pred1, pred2) + assert_allclose(pred1, pred3) + assert_allclose(pred1, pred4) + assert_allclose(pred1[-10:], pred5) + assert_allclose(pred1[-10:], pred6) + + def test_offset_formula(self): + # Test various ways of passing offset and exposure to `from_formula`. + + n = 50 + np.random.seed(34234) + X1 = np.random.normal(size=n) + X2 = np.random.normal(size=n) + groups = np.kron(np.arange(25), np.r_[1, 1]) + offset = np.random.uniform(1, 2, size=n) + exposure = np.exp(offset) + Y = np.random.poisson(0.1 * (X1 + X2) + 2 * offset, size=n) + data = pd.DataFrame({"Y": Y, "X1": X1, "X2": X2, "groups": groups, + "offset": offset, "exposure": exposure}) + + fml = "Y ~ X1 + X2" + model1 = gee.GEE.from_formula(fml, groups, data, + family=families.Poisson(), + offset="offset") + result1 = model1.fit() + assert_equal(result1.converged, True) + + model2 = gee.GEE.from_formula(fml, groups, data, + family=families.Poisson(), + offset=offset) + result2 = model2.fit(start_params=result1.params) + assert_allclose(result1.params, result2.params) + assert_equal(result2.converged, True) + + model3 = gee.GEE.from_formula(fml, groups, data, + family=families.Poisson(), + exposure=exposure) + result3 = model3.fit(start_params=result1.params) + assert_allclose(result1.params, result3.params) + assert_equal(result3.converged, True) + + model4 = gee.GEE.from_formula(fml, groups, data, + family=families.Poisson(), + exposure="exposure") + result4 = model4.fit(start_params=result1.params) + assert_allclose(result1.params, result4.params) + assert_equal(result4.converged, True) + + model5 = gee.GEE.from_formula(fml, groups, data, + family=families.Poisson(), + exposure="exposure", offset="offset") + result5 = model5.fit() + assert_equal(result5.converged, True) + + model6 = gee.GEE.from_formula(fml, groups, data, + family=families.Poisson(), + offset=2 * offset) + result6 = model6.fit(start_params=result5.params) + assert_allclose(result5.params, result6.params) + assert_equal(result6.converged, True) + + def test_sensitivity(self): + + va = cov_struct.Exchangeable() + family = families.Gaussian() + + np.random.seed(34234) + n = 100 + Y = np.random.normal(size=n) + X1 = np.random.normal(size=n) + X2 = np.random.normal(size=n) + groups = np.kron(np.arange(50), np.r_[1, 1]) + + D = pd.DataFrame({"Y": Y, "X1": X1, "X2": X2}) + + mod = gee.GEE.from_formula("Y ~ X1 + X2", groups, D, + family=family, cov_struct=va) + rslt = mod.fit() + ps = rslt.params_sensitivity(0, 0.5, 2) + assert_almost_equal(len(ps), 2) + assert_almost_equal([x.cov_struct.dep_params for x in ps], + [0.0, 0.5]) + + # Regression test + assert_almost_equal([x.params[0] for x in ps], + [0.1696214707458818, 0.17836097387799127]) + + def test_equivalence(self): + """ + The Equivalence covariance structure can represent an + exchangeable covariance structure. Here we check that the + results are identical using the two approaches. + """ + + np.random.seed(3424) + endog = np.random.normal(size=20) + exog = np.random.normal(size=(20, 2)) + exog[:, 0] = 1 + groups = np.kron(np.arange(5), np.ones(4)) + groups[12:] = 3 # Create unequal size groups + + # Set up an Equivalence covariance structure to mimic an + # Exchangeable covariance structure. + pairs = {} + start = [0, 4, 8, 12] + for k in range(4): + pairs[k] = {} + + # Diagonal values (variance parameters) + if k < 3: + pairs[k][0] = (start[k] + np.r_[0, 1, 2, 3], + start[k] + np.r_[0, 1, 2, 3]) + else: + pairs[k][0] = (start[k] + np.r_[0, 1, 2, 3, 4, 5, 6, 7], + start[k] + np.r_[0, 1, 2, 3, 4, 5, 6, 7]) + + # Off-diagonal pairs (covariance parameters) + if k < 3: + a, b = np.tril_indices(4, -1) + pairs[k][1] = (start[k] + a, start[k] + b) + else: + a, b = np.tril_indices(8, -1) + pairs[k][1] = (start[k] + a, start[k] + b) + + ex = cov_struct.Exchangeable() + model1 = gee.GEE(endog, exog, groups, cov_struct=ex) + result1 = model1.fit() + + for return_cov in False, True: + + ec = cov_struct.Equivalence(pairs, return_cov=return_cov) + model2 = gee.GEE(endog, exog, groups, cov_struct=ec) + result2 = model2.fit() + + # Use large atol/rtol for the correlation case since there + # are some small differences in the results due to degree + # of freedom differences. + if return_cov is True: + atol, rtol = 1e-6, 1e-6 + else: + atol, rtol = 1e-3, 1e-3 + assert_allclose(result1.params, result2.params, + atol=atol, rtol=rtol) + assert_allclose(result1.bse, result2.bse, atol=atol, rtol=rtol) + assert_allclose(result1.scale, result2.scale, atol=atol, rtol=rtol) + + def test_equivalence_from_pairs(self): + + np.random.seed(3424) + endog = np.random.normal(size=50) + exog = np.random.normal(size=(50, 2)) + exog[:, 0] = 1 + groups = np.kron(np.arange(5), np.ones(10)) + groups[30:] = 3 # Create unequal size groups + + # Set up labels. + labels = np.kron(np.arange(5), np.ones(10)).astype(np.int32) + labels = labels[np.random.permutation(len(labels))] + + eq = cov_struct.Equivalence(labels=labels, return_cov=True) + model1 = gee.GEE(endog, exog, groups, cov_struct=eq) + + # Call this directly instead of letting init do it to get the + # result before reindexing. + eq._pairs_from_labels() + + # Make sure the size is correct to hold every element. + for g in model1.group_labels: + p = eq.pairs[g] + vl = [len(x[0]) for x in p.values()] + m = sum(groups == g) + assert_allclose(sum(vl), m * (m + 1) / 2) + + # Check for duplicates. + ixs = set([]) + for g in model1.group_labels: + for v in eq.pairs[g].values(): + for a, b in zip(v[0], v[1]): + ky = (a, b) + assert(ky not in ixs) + ixs.add(ky) + + # Smoke test # TODO: pytest.mark.smoke? + eq = cov_struct.Equivalence(labels=labels, return_cov=True) + model1 = gee.GEE(endog, exog, groups, cov_struct=eq) + with warnings.catch_warnings(): + warnings.simplefilter('ignore') + model1.fit(maxiter=2) + + +class CheckConsistency(object): + + start_params = None + + def test_cov_type(self): + mod = self.mod + res_robust = mod.fit(start_params=self.start_params) + res_naive = mod.fit(start_params=self.start_params, + cov_type='naive') + res_robust_bc = mod.fit(start_params=self.start_params, + cov_type='bias_reduced') + + # call summary to make sure it doesn't change cov_type + res_naive.summary() + res_robust_bc.summary() + + # check cov_type + assert_equal(res_robust.cov_type, 'robust') + assert_equal(res_naive.cov_type, 'naive') + assert_equal(res_robust_bc.cov_type, 'bias_reduced') + + # check bse and cov_params + # we are comparing different runs of the optimization + # bse in ordinal and multinomial have an atol around 5e-10 for two + # consecutive calls to fit. + rtol = 1e-8 + for (res, cov_type, cov) in [ + (res_robust, 'robust', res_robust.cov_robust), + (res_naive, 'naive', res_robust.cov_naive), + (res_robust_bc, 'bias_reduced', res_robust_bc.cov_robust_bc) + ]: + bse = np.sqrt(np.diag(cov)) + assert_allclose(res.bse, bse, rtol=rtol) + if cov_type != 'bias_reduced': + # cov_type=naive shortcuts calculation of bias reduced + # covariance for efficiency + bse = res_naive.standard_errors(cov_type=cov_type) + assert_allclose(res.bse, bse, rtol=rtol) + assert_allclose(res.cov_params(), cov, rtol=rtol, atol=1e-10) + assert_allclose(res.cov_params_default, cov, rtol=rtol, atol=1e-10) + + # assert that we don't have a copy + assert_(res_robust.cov_params_default is res_robust.cov_robust) + assert_(res_naive.cov_params_default is res_naive.cov_naive) + assert_(res_robust_bc.cov_params_default is + res_robust_bc.cov_robust_bc) + + # check exception for misspelled cov_type + assert_raises(ValueError, mod.fit, cov_type='robust_bc') + + +class TestGEEPoissonCovType(CheckConsistency): + + @classmethod + def setup_class(cls): + + endog, exog, group_n = load_data("gee_poisson_1.csv") + + family = families.Poisson() + vi = cov_struct.Independence() + + cls.mod = gee.GEE(endog, exog, group_n, None, family, vi) + + cls.start_params = np.array([-0.03644504, -0.05432094, 0.01566427, + 0.57628591, -0.0046566, -0.47709315]) + + def test_wrapper(self): + + endog, exog, group_n = load_data("gee_poisson_1.csv", + icept=False) + endog = pd.Series(endog) + exog = pd.DataFrame(exog) + group_n = pd.Series(group_n) + + family = families.Poisson() + vi = cov_struct.Independence() + + mod = gee.GEE(endog, exog, group_n, None, family, vi) + rslt2 = mod.fit() + + check_wrapper(rslt2) + + +class TestGEEPoissonFormulaCovType(CheckConsistency): + + @classmethod + def setup_class(cls): + + endog, exog, group_n = load_data("gee_poisson_1.csv") + + family = families.Poisson() + vi = cov_struct.Independence() + # Test with formulas + D = np.concatenate((endog[:, None], group_n[:, None], + exog[:, 1:]), axis=1) + D = pd.DataFrame(D) + D.columns = ["Y", "Id", ] + ["X%d" % (k + 1) + for k in range(exog.shape[1] - 1)] + + cls.mod = gee.GEE.from_formula("Y ~ X1 + X2 + X3 + X4 + X5", "Id", + D, family=family, cov_struct=vi) + + cls.start_params = np.array([-0.03644504, -0.05432094, 0.01566427, + 0.57628591, -0.0046566, -0.47709315]) + + +class TestGEEOrdinalCovType(CheckConsistency): + + @classmethod + def setup_class(cls): + + family = families.Binomial() + + endog, exog, groups = load_data("gee_ordinal_1.csv", + icept=False) + + va = cov_struct.GlobalOddsRatio("ordinal") + + cls.mod = gee.OrdinalGEE(endog, exog, groups, None, family, va) + cls.start_params = np.array([1.09250002, 0.0217443, -0.39851092, + -0.01812116, 0.03023969, 1.18258516, + 0.01803453, -1.10203381]) + + def test_wrapper(self): + + endog, exog, groups = load_data("gee_ordinal_1.csv", + icept=False) + + endog = pd.Series(endog, name='yendog') + exog = pd.DataFrame(exog) + groups = pd.Series(groups, name='the_group') + + family = families.Binomial() + va = cov_struct.GlobalOddsRatio("ordinal") + mod = gee.OrdinalGEE(endog, exog, groups, None, family, va) + rslt2 = mod.fit() + + check_wrapper(rslt2) + + +class TestGEEMultinomialCovType(CheckConsistency): + + @classmethod + def setup_class(cls): + + endog, exog, groups = load_data("gee_nominal_1.csv", + icept=False) + + # Test with independence correlation + va = cov_struct.Independence() + cls.mod = gee.NominalGEE(endog, exog, groups, cov_struct=va) + cls.start_params = np.array([0.44944752, 0.45569985, -0.92007064, + -0.46766728]) + + def test_wrapper(self): + + endog, exog, groups = load_data("gee_nominal_1.csv", + icept=False) + endog = pd.Series(endog, name='yendog') + exog = pd.DataFrame(exog) + groups = pd.Series(groups, name='the_group') + + va = cov_struct.Independence() + mod = gee.NominalGEE(endog, exog, groups, cov_struct=va) + rslt2 = mod.fit() + + check_wrapper(rslt2) + + +def test_regularized_poisson(): + + np.random.seed(8735) + + ng, gs, p = 1000, 5, 5 + + x = np.random.normal(size=(ng*gs, p)) + r = 0.5 + x[:, 2] = r*x[:, 1] + np.sqrt(1-r**2)*x[:, 2] + lpr = 0.7*(x[:, 1] - x[:, 3]) + mean = np.exp(lpr) + y = np.random.poisson(mean) + + groups = np.kron(np.arange(ng), np.ones(gs)) + + model = gee.GEE(y, x, groups=groups, family=families.Poisson()) + result = model.fit_regularized(0.0000001) + + assert_allclose(result.params, 0.7 * np.r_[0, 1, 0, -1, 0], + rtol=0.01, atol=0.12) + + +def test_regularized_gaussian(): + + # Example 1 from Wang et al. + + np.random.seed(8735) + + ng, gs, p = 200, 4, 200 + + groups = np.kron(np.arange(ng), np.ones(gs)) + + x = np.zeros((ng*gs, p)) + x[:, 0] = 1 * (np.random.uniform(size=ng*gs) < 0.5) + x[:, 1] = np.random.normal(size=ng*gs) + r = 0.5 + for j in range(2, p): + eps = np.random.normal(size=ng*gs) + x[:, j] = r * x[:, j-1] + np.sqrt(1 - r**2) * eps + lpr = np.dot(x[:, 0:4], np.r_[2, 3, 1.5, 2]) + s = 0.4 + e = np.sqrt(s) * np.kron(np.random.normal(size=ng), np.ones(gs)) + e += np.sqrt(1 - s) * np.random.normal(size=ng*gs) + + y = lpr + e + + model = gee.GEE(y, x, cov_struct=cov_struct.Exchangeable(), groups=groups) + result = model.fit_regularized(0.01, maxiter=100) + + ex = np.zeros(200) + ex[0:4] = np.r_[2, 3, 1.5, 2] + assert_allclose(result.params, ex, rtol=0.01, atol=0.2) + + assert_allclose(model.cov_struct.dep_params, np.r_[s], + rtol=0.01, atol=0.05) + + +@pytest.mark.smoke +@pytest.mark.matplotlib +def test_plots(close_figures): + + np.random.seed(378) + exog = np.random.normal(size=100) + endog = np.random.normal(size=(100, 2)) + groups = np.kron(np.arange(50), np.r_[1, 1]) + + model = gee.GEE(exog, endog, groups) + result = model.fit() + + fig = result.plot_added_variable(1) + assert_equal(isinstance(fig, plt.Figure), True) + fig = result.plot_partial_residuals(1) + assert_equal(isinstance(fig, plt.Figure), True) + fig = result.plot_ceres_residuals(1) + assert_equal(isinstance(fig, plt.Figure), True) + fig = result.plot_isotropic_dependence() + assert_equal(isinstance(fig, plt.Figure), True) + + +def test_missing(): + # gh-1877 + data = [['id', 'al', 'status', 'fake', 'grps'], + ['4A', 'A', 1, 1, 0], + ['5A', 'A', 1, 2.0, 1], + ['6A', 'A', 1, 3, 2], + ['7A', 'A', 1, 2.0, 3], + ['8A', 'A', 1, 1, 4], + ['9A', 'A', 1, 2.0, 5], + ['11A', 'A', 1, 1, 6], + ['12A', 'A', 1, 2.0, 7], + ['13A', 'A', 1, 1, 8], + ['14A', 'A', 1, 1, 9], + ['15A', 'A', 1, 1, 10], + ['16A', 'A', 1, 2.0, 11], + ['17A', 'A', 1, 3.0, 12], + ['18A', 'A', 1, 3.0, 13], + ['19A', 'A', 1, 2.0, 14], + ['20A', 'A', 1, 2.0, 15], + ['2C', 'C', 0, 3.0, 0], + ['3C', 'C', 0, 1, 1], + ['4C', 'C', 0, 1, 2], + ['5C', 'C', 0, 2.0, 3], + ['6C', 'C', 0, 1, 4], + ['9C', 'C', 0, 1, 5], + ['10C', 'C', 0, 3, 6], + ['12C', 'C', 0, 3, 7], + ['14C', 'C', 0, 2.5, 8], + ['15C', 'C', 0, 1, 9], + ['17C', 'C', 0, 1, 10], + ['22C', 'C', 0, 1, 11], + ['23C', 'C', 0, 1, 12], + ['24C', 'C', 0, 1, 13], + ['32C', 'C', 0, 2.0, 14], + ['35C', 'C', 0, 1, 15]] + + df = pd.DataFrame(data[1:], columns=data[0]) + df.loc[df.fake == 1, 'fake'] = np.nan + mod = gee.GEE.from_formula('status ~ fake', data=df, groups='grps', + cov_struct=cov_struct.Independence(), + family=families.Binomial()) + + df = df.dropna().copy() + df['constant'] = 1 + + mod2 = gee.GEE(df.status, df[['constant', 'fake']], groups=df.grps, + cov_struct=cov_struct.Independence(), + family=families.Binomial()) + + assert_equal(mod.endog, mod2.endog) + assert_equal(mod.exog, mod2.exog) + assert_equal(mod.groups, mod2.groups) + + res = mod.fit() + res2 = mod2.fit() + + assert_almost_equal(res.params.values, res2.params.values) + + +def simple_qic_data(fam): + + y = np.r_[0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1, 0] + x1 = np.r_[0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 0, 1, 0] + x2 = np.r_[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1] + g = np.r_[0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4] + x1 = x1[:, None] + x2 = x2[:, None] + + return y, x1, x2, g + + +# Test quasi-likelihood by numerical integration in two settings +# where there is a closed form expression. +@pytest.mark.parametrize("family", [families.Gaussian, families.Poisson]) +def test_ql_known(family): + + fam = family() + + y, x1, x2, g = simple_qic_data(family) + + model1 = gee.GEE(y, x1, family=fam, groups=g) + result1 = model1.fit(ddof_scale=0) + mean1 = result1.fittedvalues + + model2 = gee.GEE(y, x2, family=fam, groups=g) + result2 = model2.fit(ddof_scale=0) + mean2 = result2.fittedvalues + + if family is families.Gaussian: + ql1 = -len(y) / 2. + ql2 = -len(y) / 2. + elif family is families.Poisson: + c = np.zeros_like(y) + ii = y > 0 + c[ii] = y[ii] * np.log(y[ii]) - y[ii] + ql1 = np.sum(y * np.log(mean1) - mean1 - c) + ql2 = np.sum(y * np.log(mean2) - mean2 - c) + else: + raise ValueError("Unknown family") + + qle1 = model1.qic(result1.params, result1.scale, result1.cov_params()) + qle2 = model2.qic(result2.params, result2.scale, result2.cov_params()) + + assert_allclose(ql1, qle1[0], rtol=1e-4) + assert_allclose(ql2, qle2[0], rtol=1e-4) + + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + qler1 = result1.qic() + qler2 = result2.qic() + assert_equal(qler1, qle1[1:]) + assert_equal(qler2, qle2[1:]) + + +# Compare differences of QL values computed by numerical integration. +# Use difference here so that constants that are inconvenient to compute +# cancel out. +@pytest.mark.parametrize("family", [families.Gaussian, + families.Binomial, + families.Poisson]) +def test_ql_diff(family): + + fam = family() + + y, x1, x2, g = simple_qic_data(family) + + model1 = gee.GEE(y, x1, family=fam, groups=g) + result1 = model1.fit(ddof_scale=0) + mean1 = result1.fittedvalues + + model2 = gee.GEE(y, x2, family=fam, groups=g) + result2 = model2.fit(ddof_scale=0) + mean2 = result2.fittedvalues + + if family is families.Gaussian: + qldiff = 0 + elif family is families.Binomial: + qldiff = np.sum(y * np.log(mean1 / (1 - mean1)) + np.log(1 - mean1)) + qldiff -= np.sum(y * np.log(mean2 / (1 - mean2)) + np.log(1 - mean2)) + elif family is families.Poisson: + qldiff = (np.sum(y * np.log(mean1) - mean1) + - np.sum(y * np.log(mean2) - mean2)) + else: + raise ValueError("unknown family") + + qle1, _, _ = model1.qic(result1.params, result1.scale, + result1.cov_params()) + qle2, _, _ = model2.qic(result2.params, result2.scale, + result2.cov_params()) + + assert_allclose(qle1 - qle2, qldiff, rtol=1e-5, atol=1e-5) + + +def test_qic_warnings(): + with pytest.warns(UserWarning): + fam = families.Gaussian() + y, x1, _, g = simple_qic_data(fam) + model = gee.GEE(y, x1, family=fam, groups=g) + result = model.fit() + result.qic() diff --git a/statsmodels/genmod/tests/test_gee_glm.py b/statsmodels/genmod/tests/test_gee_glm.py new file mode 100644 index 0000000..bbc9382 --- /dev/null +++ b/statsmodels/genmod/tests/test_gee_glm.py @@ -0,0 +1,134 @@ + +import warnings +import numpy as np +import pandas as pd + + +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod import families +from statsmodels.genmod.families import links +from statsmodels.genmod.generalized_estimating_equations import GEE +from statsmodels.genmod.cov_struct import Independence + +from numpy.testing import assert_allclose + + +class CheckGEEGLM(object): + + def test_basic(self): + res1 = self.result1 + res2 = self.result2 + assert_allclose(res1.params.values, res2.params.values, + rtol=1e-6, atol=1e-10) + + + def test_resid(self): + res1 = self.result1 + res2 = self.result2 + assert_allclose(res1.resid_response, res2.resid_response, + rtol=1e-6, atol=1e-10) + assert_allclose(res1.resid_pearson, res2.resid_pearson, + rtol=1e-6, atol=1e-10) + assert_allclose(res1.resid_deviance, res2.resid_deviance, + rtol=1e-6, atol=1e-10) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=FutureWarning) + assert_allclose(res1.resid_anscombe, res2.resid_anscombe, + rtol=1e-6, atol=1e-10) + assert_allclose(res1.resid_working, res2.resid_working, + rtol=1e-6, atol=1e-10) + + +#def test_compare_logit(self): +class TestCompareLogit(CheckGEEGLM): + + @classmethod + def setup_class(cls): + vs = Independence() + family = families.Binomial() + np.random.seed(987126) + Y = 1 * (np.random.normal(size=100) < 0) + X1 = np.random.normal(size=100) + X2 = np.random.normal(size=100) + X3 = np.random.normal(size=100) + groups = np.random.randint(0, 4, size=100) + + D = pd.DataFrame({"Y": Y, "X1": X1, "X2": X2, "X3": X3}) + + mod1 = GEE.from_formula("Y ~ X1 + X2 + X3", groups, D, + family=family, cov_struct=vs) + cls.result1 = mod1.fit() + + mod2 = GLM.from_formula("Y ~ X1 + X2 + X3", data=D, family=family) + cls.result2 = mod2.fit(disp=False) + + +class TestComparePoisson(CheckGEEGLM): + + @classmethod + def setup_class(cls): + vs = Independence() + family = families.Poisson() + np.random.seed(987126) + Y = np.exp(1 + np.random.normal(size=100)) + X1 = np.random.normal(size=100) + X2 = np.random.normal(size=100) + X3 = np.random.normal(size=100) + groups = np.random.randint(0, 4, size=100) + + D = pd.DataFrame({"Y": Y, "X1": X1, "X2": X2, "X3": X3}) + + mod1 = GEE.from_formula("Y ~ X1 + X2 + X3", groups, D, + family=family, cov_struct=vs) + cls.result1 = mod1.fit() + + mod2 = GLM.from_formula("Y ~ X1 + X2 + X3", data=D, family=family) + cls.result2 = mod2.fit(disp=False) + + +class TestCompareGaussian(CheckGEEGLM): + + @classmethod + def setup_class(cls): + + vs = Independence() + family = families.Gaussian() + np.random.seed(987126) + Y = np.random.normal(size=100) + X1 = np.random.normal(size=100) + X2 = np.random.normal(size=100) + X3 = np.random.normal(size=100) + groups = np.kron(np.arange(20), np.ones(5)) + + D = pd.DataFrame({"Y": Y, "X1": X1, "X2": X2, "X3": X3}) + + md = GEE.from_formula("Y ~ X1 + X2 + X3", groups, D, + family=family, cov_struct=vs) + cls.result1 = md.fit() + + cls.result2 = GLM.from_formula("Y ~ X1 + X2 + X3", data=D).fit() + + +class TestCompareGamma(CheckGEEGLM): + + @classmethod + def setup_class(cls): + # adjusted for Gamma, not in test_gee.py + vs = Independence() + family = families.Gamma(link=links.log()) + np.random.seed(987126) + #Y = np.random.normal(size=100)**2 + Y = np.exp(0.1 + np.random.normal(size=100)) # log-normal + X1 = np.random.normal(size=100) + X2 = np.random.normal(size=100) + X3 = np.random.normal(size=100) + groups = np.random.randint(0, 4, size=100) + + D = pd.DataFrame({"Y": Y, "X1": X1, "X2": X2, "X3": X3}) + + mod1 = GEE.from_formula("Y ~ X1 + X2 + X3", groups, D, + family=family, cov_struct=vs) + cls.result1 = mod1.fit() + + mod2 = GLM.from_formula("Y ~ X1 + X2 + X3", data=D, family=family) + cls.result2 = mod2.fit(disp=False) diff --git a/statsmodels/genmod/tests/test_glm.py b/statsmodels/genmod/tests/test_glm.py new file mode 100644 index 0000000..284701d --- /dev/null +++ b/statsmodels/genmod/tests/test_glm.py @@ -0,0 +1,2237 @@ +""" +Test functions for models.GLM +""" +from __future__ import division +from statsmodels.compat import range + +import warnings +import os +import numpy as np +from numpy.testing import (assert_almost_equal, assert_equal, assert_raises, + assert_allclose, assert_, assert_array_less) +import pytest +from scipy import stats + +import statsmodels.api as sm +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.tools.tools import add_constant +from statsmodels.tools.sm_exceptions import PerfectSeparationError +from statsmodels.discrete import discrete_model as discrete +from statsmodels.tools.sm_exceptions import DomainWarning +from statsmodels.tools.numdiff import approx_fprime, approx_hess +from statsmodels.datasets import cpunish + +# Test Precisions +DECIMAL_4 = 4 +DECIMAL_3 = 3 +DECIMAL_2 = 2 +DECIMAL_1 = 1 +DECIMAL_0 = 0 + +pdf_output = False + +if pdf_output: + from matplotlib.backends.backend_pdf import PdfPages + pdf = PdfPages("test_glm.pdf") +else: + pdf = None + + +def close_or_save(pdf, fig): + if pdf_output: + pdf.savefig(fig) + + +def teardown_module(): + if pdf_output: + pdf.close() + + +class CheckModelResultsMixin(object): + ''' + res2 should be either the results from RModelWrap + or the results as defined in model_results_data + ''' + + decimal_params = DECIMAL_4 + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, + self.decimal_params) + + decimal_bse = DECIMAL_4 + def test_standard_errors(self): + assert_allclose(self.res1.bse, self.res2.bse, + atol=10**(-self.decimal_bse), rtol=1e-5) + + decimal_resids = DECIMAL_4 + def test_residuals(self): + # fix incorrect numbers in resid_working results + # residuals for Poisson are also tested in test_glm_weights.py + import copy + # new numpy would have copy method + resid2 = copy.copy(self.res2.resids) + resid2[:, 2] *= self.res1.family.link.deriv(self.res1.mu)**2 + + atol = 10**(-self.decimal_resids) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=FutureWarning) + resid_a = self.res1.resid_anscombe + resids = np.column_stack((self.res1.resid_pearson, + self.res1.resid_deviance, self.res1.resid_working, + resid_a, self.res1.resid_response)) + assert_allclose(resids, resid2, rtol=1e-6, atol=atol) + + decimal_aic_R = DECIMAL_4 + + def test_aic_R(self): + # R includes the estimation of the scale as a lost dof + # Doesn't with Gamma though + if self.res1.scale != 1: + dof = 2 + else: + dof = 0 + if isinstance(self.res1.model.family, (sm.families.NegativeBinomial)): + llf = self.res1.model.family.loglike(self.res1.model.endog, + self.res1.mu, + self.res1.model.var_weights, + self.res1.model.freq_weights, + scale=1) + aic = (-2*llf+2*(self.res1.df_model+1)) + else: + aic = self.res1.aic + assert_almost_equal(aic+dof, self.res2.aic_R, + self.decimal_aic_R) + + decimal_aic_Stata = DECIMAL_4 + def test_aic_Stata(self): + # Stata uses the below llf for aic definition for these families + if isinstance(self.res1.model.family, (sm.families.Gamma, + sm.families.InverseGaussian, + sm.families.NegativeBinomial)): + llf = self.res1.model.family.loglike(self.res1.model.endog, + self.res1.mu, + self.res1.model.var_weights, + self.res1.model.freq_weights, + scale=1) + aic = (-2*llf+2*(self.res1.df_model+1))/self.res1.nobs + else: + aic = self.res1.aic/self.res1.nobs + assert_almost_equal(aic, self.res2.aic_Stata, self.decimal_aic_Stata) + + decimal_deviance = DECIMAL_4 + def test_deviance(self): + assert_almost_equal(self.res1.deviance, self.res2.deviance, + self.decimal_deviance) + + decimal_scale = DECIMAL_4 + def test_scale(self): + assert_almost_equal(self.res1.scale, self.res2.scale, + self.decimal_scale) + + decimal_loglike = DECIMAL_4 + def test_loglike(self): + # Stata uses the below llf for these families + # We differ with R for them + if isinstance(self.res1.model.family, (sm.families.Gamma, + sm.families.InverseGaussian, + sm.families.NegativeBinomial)): + llf = self.res1.model.family.loglike(self.res1.model.endog, + self.res1.mu, + self.res1.model.var_weights, + self.res1.model.freq_weights, + scale=1) + else: + llf = self.res1.llf + assert_almost_equal(llf, self.res2.llf, self.decimal_loglike) + + decimal_null_deviance = DECIMAL_4 + def test_null_deviance(self): + assert_almost_equal(self.res1.null_deviance, self.res2.null_deviance, + self.decimal_null_deviance) + + decimal_bic = DECIMAL_4 + def test_bic(self): + assert_almost_equal(self.res1.bic, self.res2.bic_Stata, + self.decimal_bic) + + def test_degrees(self): + assert_equal(self.res1.model.df_resid,self.res2.df_resid) + + decimal_fittedvalues = DECIMAL_4 + def test_fittedvalues(self): + assert_almost_equal(self.res1.fittedvalues, self.res2.fittedvalues, + self.decimal_fittedvalues) + + def test_tpvalues(self): + # test comparing tvalues and pvalues with normal implementation + # make sure they use normal distribution (inherited in results class) + params = self.res1.params + tvalues = params / self.res1.bse + pvalues = stats.norm.sf(np.abs(tvalues)) * 2 + half_width = stats.norm.isf(0.025) * self.res1.bse + conf_int = np.column_stack((params - half_width, params + half_width)) + + assert_almost_equal(self.res1.tvalues, tvalues) + assert_almost_equal(self.res1.pvalues, pvalues) + assert_almost_equal(self.res1.conf_int(), conf_int) + + def test_pearson_chi2(self): + if hasattr(self.res2, 'pearson_chi2'): + assert_allclose(self.res1.pearson_chi2, self.res2.pearson_chi2, + atol=1e-6, rtol=1e-6) + + @pytest.mark.smoke + def test_summary(self): + self.res1.summary() + + @pytest.mark.smoke + def test_summary2(self): + self.res1.summary2() + + +class CheckComparisonMixin(object): + + def test_compare_discrete(self): + res1 = self.res1 + resd = self.resd + + assert_allclose(res1.llf, resd.llf, rtol=1e-10) + score_obs1 = res1.model.score_obs(res1.params * 0.98) + score_obsd = resd.model.score_obs(resd.params * 0.98) + assert_allclose(score_obs1, score_obsd, rtol=1e-10) + + # score + score1 = res1.model.score(res1.params * 0.98) + assert_allclose(score1, score_obs1.sum(0), atol=1e-20) + score0 = res1.model.score(res1.params) + assert_allclose(score0, np.zeros(score_obs1.shape[1]), atol=5e-7) + + hessian1 = res1.model.hessian(res1.params * 0.98, observed=False) + hessiand = resd.model.hessian(resd.params * 0.98) + assert_allclose(hessian1, hessiand, rtol=1e-10) + + hessian1 = res1.model.hessian(res1.params * 0.98, observed=True) + hessiand = resd.model.hessian(resd.params * 0.98) + assert_allclose(hessian1, hessiand, rtol=1e-9) + + def test_score_test(self): + res1 = self.res1 + # fake example, should be zero, k_constraint should be 0 + st, pv, df = res1.model.score_test(res1.params, k_constraints=1) + assert_allclose(st, 0, atol=1e-20) + assert_allclose(pv, 1, atol=1e-10) + assert_equal(df, 1) + + st, pv, df = res1.model.score_test(res1.params, k_constraints=0) + assert_allclose(st, 0, atol=1e-20) + assert_(np.isnan(pv), msg=repr(pv)) + assert_equal(df, 0) + + # TODO: no verified numbers largely SMOKE test + exog_extra = res1.model.exog[:,1]**2 + st, pv, df = res1.model.score_test(res1.params, exog_extra=exog_extra) + assert_array_less(0.1, st) + assert_array_less(0.1, pv) + assert_equal(df, 1) + + +class TestGlmGaussian(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + ''' + Test Gaussian family with canonical identity link + ''' + # Test Precisions + cls.decimal_resids = DECIMAL_3 + cls.decimal_params = DECIMAL_2 + cls.decimal_bic = DECIMAL_0 + cls.decimal_bse = DECIMAL_3 + + from statsmodels.datasets.longley import load + cls.data = load(as_pandas=False) + cls.data.exog = add_constant(cls.data.exog, prepend=False) + cls.res1 = GLM(cls.data.endog, cls.data.exog, + family=sm.families.Gaussian()).fit() + from .results.results_glm import Longley + cls.res2 = Longley() + + + def test_compare_OLS(self): + res1 = self.res1 + # OLS doesn't define score_obs + from statsmodels.regression.linear_model import OLS + resd = OLS(self.data.endog, self.data.exog).fit() + self.resd = resd # attach to access from the outside + + assert_allclose(res1.llf, resd.llf, rtol=1e-10) + score_obs1 = res1.model.score_obs(res1.params, scale=None) + score_obsd = resd.resid[:, None] / resd.scale * resd.model.exog + # low precision because of badly scaled exog + assert_allclose(score_obs1, score_obsd, rtol=1e-8) + + score_obs1 = res1.model.score_obs(res1.params, scale=1) + score_obsd = resd.resid[:, None] * resd.model.exog + assert_allclose(score_obs1, score_obsd, rtol=1e-8) + + hess_obs1 = res1.model.hessian(res1.params, scale=None) + hess_obsd = -1. / resd.scale * resd.model.exog.T.dot(resd.model.exog) + # low precision because of badly scaled exog + assert_allclose(hess_obs1, hess_obsd, rtol=1e-8) + +# def setup(self): +# if skipR: +# raise SkipTest, "Rpy not installed." +# Gauss = r.gaussian +# self.res2 = RModel(self.data.endog, self.data.exog, r.glm, family=Gauss) +# self.res2.resids = np.array(self.res2.resid)[:,None]*np.ones((1,5)) +# self.res2.null_deviance = 185008826 # taken from R. Rpy bug? + + +class TestGlmGaussianGradient(TestGlmGaussian): + @classmethod + def setup_class(cls): + ''' + Test Gaussian family with canonical identity link + ''' + # Test Precisions + cls.decimal_resids = DECIMAL_3 + cls.decimal_params = DECIMAL_2 + cls.decimal_bic = DECIMAL_0 + cls.decimal_bse = DECIMAL_2 + + from statsmodels.datasets.longley import load + cls.data = load(as_pandas=False) + cls.data.exog = add_constant(cls.data.exog, prepend=False) + cls.res1 = GLM(cls.data.endog, cls.data.exog, + family=sm.families.Gaussian()).fit(method='bfgs') + from .results.results_glm import Longley + cls.res2 = Longley() + + +class TestGaussianLog(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + # Test Precision + cls.decimal_aic_R = DECIMAL_0 + cls.decimal_aic_Stata = DECIMAL_2 + cls.decimal_loglike = DECIMAL_0 + cls.decimal_null_deviance = DECIMAL_1 + + nobs = 100 + x = np.arange(nobs) + np.random.seed(54321) +# y = 1.0 - .02*x - .001*x**2 + 0.001 * np.random.randn(nobs) + cls.X = np.c_[np.ones((nobs,1)),x,x**2] + cls.lny = np.exp(-(-1.0 + 0.02*x + 0.0001*x**2)) +\ + 0.001 * np.random.randn(nobs) + + GaussLog_Model = GLM(cls.lny, cls.X, + family=sm.families.Gaussian(sm.families.links.log())) + cls.res1 = GaussLog_Model.fit() + from .results.results_glm import GaussianLog + cls.res2 = GaussianLog() + +# def setup(cls): +# if skipR: +# raise SkipTest, "Rpy not installed" +# GaussLogLink = r.gaussian(link = "log") +# GaussLog_Res_R = RModel(cls.lny, cls.X, r.glm, family=GaussLogLink) +# cls.res2 = GaussLog_Res_R + +class TestGaussianInverse(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + # Test Precisions + cls.decimal_bic = DECIMAL_1 + cls.decimal_aic_R = DECIMAL_1 + cls.decimal_aic_Stata = DECIMAL_3 + cls.decimal_loglike = DECIMAL_1 + cls.decimal_resids = DECIMAL_3 + + nobs = 100 + x = np.arange(nobs) + np.random.seed(54321) + y = 1.0 + 2.0 * x + x**2 + 0.1 * np.random.randn(nobs) + cls.X = np.c_[np.ones((nobs,1)),x,x**2] + cls.y_inv = (1. + .02*x + .001*x**2)**-1 + .001 * np.random.randn(nobs) + InverseLink_Model = GLM(cls.y_inv, cls.X, + family=sm.families.Gaussian(sm.families.links.inverse_power())) + InverseLink_Res = InverseLink_Model.fit() + cls.res1 = InverseLink_Res + from .results.results_glm import GaussianInverse + cls.res2 = GaussianInverse() + +# def setup(cls): +# if skipR: +# raise SkipTest, "Rpy not installed." +# InverseLink = r.gaussian(link = "inverse") +# InverseLink_Res_R = RModel(cls.y_inv, cls.X, r.glm, family=InverseLink) +# cls.res2 = InverseLink_Res_R + +class TestGlmBinomial(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + ''' + Test Binomial family with canonical logit link using star98 dataset. + ''' + cls.decimal_resids = DECIMAL_1 + cls.decimal_bic = DECIMAL_2 + + from statsmodels.datasets.star98 import load + from .results.results_glm import Star98 + data = load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + cls.res1 = GLM(data.endog, data.exog, \ + family=sm.families.Binomial()).fit() + #NOTE: if you want to replicate with RModel + #res2 = RModel(data.endog[:,0]/trials, data.exog, r.glm, + # family=r.binomial, weights=trials) + + cls.res2 = Star98() + +#TODO: +#Non-Canonical Links for the Binomial family require the algorithm to be +#slightly changed +#class TestGlmBinomialLog(CheckModelResultsMixin): +# pass + +#class TestGlmBinomialLogit(CheckModelResultsMixin): +# pass + +#class TestGlmBinomialProbit(CheckModelResultsMixin): +# pass + +#class TestGlmBinomialCloglog(CheckModelResultsMixin): +# pass + +#class TestGlmBinomialPower(CheckModelResultsMixin): +# pass + +#class TestGlmBinomialLoglog(CheckModelResultsMixin): +# pass + +#class TestGlmBinomialLogc(CheckModelResultsMixin): +#TODO: need include logc link +# pass + +class TestGlmBernoulli(CheckModelResultsMixin, CheckComparisonMixin): + @classmethod + def setup_class(cls): + from .results.results_glm import Lbw + cls.res2 = Lbw() + cls.res1 = GLM(cls.res2.endog, cls.res2.exog, + family=sm.families.Binomial()).fit() + + modd = discrete.Logit(cls.res2.endog, cls.res2.exog) + cls.resd = modd.fit(start_params=cls.res1.params * 0.9, disp=False) + + + def test_score_r(self): + res1 = self.res1 + res2 = self.res2 + st, pv, df = res1.model.score_test(res1.params, + exog_extra=res1.model.exog[:, 1]**2) + st_res = 0.2837680293459376 # (-0.5326988167303712)**2 + assert_allclose(st, st_res, rtol=1e-4) + + st, pv, df = res1.model.score_test(res1.params, + exog_extra=res1.model.exog[:, 0]**2) + st_res = 0.6713492821514992 # (-0.8193590679009413)**2 + assert_allclose(st, st_res, rtol=1e-4) + + select = list(range(9)) + select.pop(7) + + res1b = GLM(res2.endog, res2.exog[:, select], + family=sm.families.Binomial()).fit() + tres = res1b.model.score_test(res1b.params, + exog_extra=res1.model.exog[:, -2]) + tres = np.asarray(tres[:2]).ravel() + tres_r = (2.7864148487452, 0.0950667) + assert_allclose(tres, tres_r, rtol=1e-4) + + cmd_r = """\ + data = read.csv("...statsmodels\\statsmodels\\genmod\\tests\\results\\stata_lbw_glm.csv") + + data["race_black"] = data["race"] == "black" + data["race_other"] = data["race"] == "other" + mod = glm(low ~ age + lwt + race_black + race_other + smoke + ptl + ht + ui, family=binomial, data=data) + options(digits=16) + anova(mod, test="Rao") + + library(statmod) + s = glm.scoretest(mod, data["age"]**2) + s**2 + s = glm.scoretest(mod, data["lwt"]**2) + s**2 + """ + +#class TestGlmBernoulliIdentity(CheckModelResultsMixin): +# pass + +#class TestGlmBernoulliLog(CheckModelResultsMixin): +# pass + +#class TestGlmBernoulliProbit(CheckModelResultsMixin): +# pass + +#class TestGlmBernoulliCloglog(CheckModelResultsMixin): +# pass + +#class TestGlmBernoulliPower(CheckModelResultsMixin): +# pass + +#class TestGlmBernoulliLoglog(CheckModelResultsMixin): +# pass + +#class test_glm_bernoulli_logc(CheckModelResultsMixin): +# pass + +class TestGlmGamma(CheckModelResultsMixin): + + @classmethod + def setup_class(cls): + ''' + Tests Gamma family with canonical inverse link (power -1) + ''' + # Test Precisions + cls.decimal_aic_R = -1 #TODO: off by about 1, we are right with Stata + cls.decimal_resids = DECIMAL_2 + + from statsmodels.datasets.scotland import load + from .results.results_glm import Scotvote + data = load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + res1 = GLM(data.endog, data.exog, + family=sm.families.Gamma()).fit() + cls.res1 = res1 +# res2 = RModel(data.endog, data.exog, r.glm, family=r.Gamma) + res2 = Scotvote() + res2.aic_R += 2 # R doesn't count degree of freedom for scale with gamma + cls.res2 = res2 + +class TestGlmGammaLog(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + # Test Precisions + cls.decimal_resids = DECIMAL_3 + cls.decimal_aic_R = DECIMAL_0 + cls.decimal_fittedvalues = DECIMAL_3 + + from .results.results_glm import CancerLog + res2 = CancerLog() + cls.res1 = GLM(res2.endog, res2.exog, + family=sm.families.Gamma(link=sm.families.links.log())).fit() + cls.res2 = res2 + +# def setup(cls): +# if skipR: +# raise SkipTest, "Rpy not installed." +# cls.res2 = RModel(cls.data.endog, cls.data.exog, r.glm, +# family=r.Gamma(link="log")) +# cls.res2.null_deviance = 27.92207137420696 # From R (bug in rpy) +# cls.res2.bic = -154.1582089453923 # from Stata + +class TestGlmGammaIdentity(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + # Test Precisions + cls.decimal_resids = -100 #TODO Very off from Stata? + cls.decimal_params = DECIMAL_2 + cls.decimal_aic_R = DECIMAL_0 + cls.decimal_loglike = DECIMAL_1 + + from .results.results_glm import CancerIdentity + res2 = CancerIdentity() + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + fam = sm.families.Gamma(link=sm.families.links.identity()) + cls.res1 = GLM(res2.endog, res2.exog, family=fam).fit() + cls.res2 = res2 + +# def setup(cls): +# if skipR: +# raise SkipTest, "Rpy not installed." +# cls.res2 = RModel(cls.data.endog, cls.data.exog, r.glm, +# family=r.Gamma(link="identity")) +# cls.res2.null_deviance = 27.92207137420696 # from R, Rpy bug + +class TestGlmPoisson(CheckModelResultsMixin, CheckComparisonMixin): + @classmethod + def setup_class(cls): + ''' + Tests Poisson family with canonical log link. + + Test results were obtained by R. + ''' + from .results.results_glm import Cpunish + cls.data = cpunish.load(as_pandas=False) + cls.data.exog[:, 3] = np.log(cls.data.exog[:, 3]) + cls.data.exog = add_constant(cls.data.exog, prepend=False) + cls.res1 = GLM(cls.data.endog, cls.data.exog, + family=sm.families.Poisson()).fit() + cls.res2 = Cpunish() + # compare with discrete, start close to save time + modd = discrete.Poisson(cls.data.endog, cls.data.exog) + cls.resd = modd.fit(start_params=cls.res1.params * 0.9, disp=False) + +#class TestGlmPoissonIdentity(CheckModelResultsMixin): +# pass + +#class TestGlmPoissonPower(CheckModelResultsMixin): +# pass + +class TestGlmInvgauss(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + ''' + Tests the Inverse Gaussian family in GLM. + + Notes + ----- + Used the rndivgx.ado file provided by Hardin and Hilbe to + generate the data. Results are read from model_results, which + were obtained by running R_ig.s + ''' + # Test Precisions + cls.decimal_aic_R = DECIMAL_0 + cls.decimal_loglike = DECIMAL_0 + + from .results.results_glm import InvGauss + res2 = InvGauss() + res1 = GLM(res2.endog, res2.exog, \ + family=sm.families.InverseGaussian()).fit() + cls.res1 = res1 + cls.res2 = res2 + +class TestGlmInvgaussLog(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + # Test Precisions + cls.decimal_aic_R = -10 # Big difference vs R. + cls.decimal_resids = DECIMAL_3 + + from .results.results_glm import InvGaussLog + res2 = InvGaussLog() + cls.res1 = GLM(res2.endog, res2.exog, + family=sm.families.InverseGaussian( + link=sm.families.links.log())).fit() + cls.res2 = res2 + +# def setup(cls): +# if skipR: +# raise SkipTest, "Rpy not installed." +# cls.res2 = RModel(cls.data.endog, cls.data.exog, r.glm, +# family=r.inverse_gaussian(link="log")) +# cls.res2.null_deviance = 335.1539777981053 # from R, Rpy bug +# cls.res2.llf = -12162.72308 # from Stata, R's has big rounding diff + +class TestGlmInvgaussIdentity(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + # Test Precisions + cls.decimal_aic_R = -10 #TODO: Big difference vs R + cls.decimal_fittedvalues = DECIMAL_3 + cls.decimal_params = DECIMAL_3 + + from .results.results_glm import Medpar1 + data = Medpar1() + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + cls.res1 = GLM(data.endog, data.exog, + family=sm.families.InverseGaussian( + link=sm.families.links.identity())).fit() + from .results.results_glm import InvGaussIdentity + cls.res2 = InvGaussIdentity() + +# def setup(cls): +# if skipR: +# raise SkipTest, "Rpy not installed." +# cls.res2 = RModel(cls.data.endog, cls.data.exog, r.glm, +# family=r.inverse_gaussian(link="identity")) +# cls.res2.null_deviance = 335.1539777981053 # from R, Rpy bug +# cls.res2.llf = -12163.25545 # from Stata, big diff with R + +class TestGlmNegbinomial(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + ''' + Test Negative Binomial family with log link + ''' + # Test Precision + cls.decimal_resid = DECIMAL_1 + cls.decimal_params = DECIMAL_3 + cls.decimal_resids = -1 # 1 % mismatch at 0 + cls.decimal_fittedvalues = DECIMAL_1 + + from statsmodels.datasets.committee import load + cls.data = load(as_pandas=False) + cls.data.exog[:,2] = np.log(cls.data.exog[:,2]) + interaction = cls.data.exog[:,2]*cls.data.exog[:,1] + cls.data.exog = np.column_stack((cls.data.exog,interaction)) + cls.data.exog = add_constant(cls.data.exog, prepend=False) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=DomainWarning) + fam = sm.families.NegativeBinomial() + + cls.res1 = GLM(cls.data.endog, cls.data.exog, + family=fam).fit(scale='x2') + from .results.results_glm import Committee + res2 = Committee() + res2.aic_R += 2 # They don't count a degree of freedom for the scale + cls.res2 = res2 + +# def setup(self): +# if skipR: +# raise SkipTest, "Rpy not installed" +# r.library('MASS') # this doesn't work when done in rmodelwrap? +# self.res2 = RModel(self.data.endog, self.data.exog, r.glm, +# family=r.negative_binomial(1)) +# self.res2.null_deviance = 27.8110469364343 + +#class TestGlmNegbinomial_log(CheckModelResultsMixin): +# pass + +#class TestGlmNegbinomial_power(CheckModelResultsMixin): +# pass + +#class TestGlmNegbinomial_nbinom(CheckModelResultsMixin): +# pass + + +class TestGlmPoissonOffset(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + from .results.results_glm import Cpunish_offset + cls.decimal_params = DECIMAL_4 + cls.decimal_bse = DECIMAL_4 + cls.decimal_aic_R = 3 + data = cpunish.load(as_pandas=False) + data.exog[:, 3] = np.log(data.exog[:, 3]) + data.exog = add_constant(data.exog, prepend=True) + exposure = [100] * len(data.endog) + cls.data = data + cls.exposure = exposure + cls.res1 = GLM(data.endog, data.exog, family=sm.families.Poisson(), + exposure=exposure).fit() + cls.res2 = Cpunish_offset() + + def test_missing(self): + # make sure offset is dropped correctly + endog = self.data.endog.copy() + endog[[2,4,6,8]] = np.nan + mod = GLM(endog, self.data.exog, family=sm.families.Poisson(), + exposure=self.exposure, missing='drop') + assert_equal(mod.exposure.shape[0], 13) + + def test_offset_exposure(self): + # exposure=x and offset=log(x) should have the same effect + np.random.seed(382304) + endog = np.random.randint(0, 10, 100) + exog = np.random.normal(size=(100,3)) + exposure = np.random.uniform(1, 2, 100) + offset = np.random.uniform(1, 2, 100) + mod1 = GLM(endog, exog, family=sm.families.Poisson(), + offset=offset, exposure=exposure).fit() + offset2 = offset + np.log(exposure) + mod2 = GLM(endog, exog, family=sm.families.Poisson(), + offset=offset2).fit() + assert_almost_equal(mod1.params, mod2.params) + assert_allclose(mod1.null, mod2.null, rtol=1e-10) + + # test recreating model + mod1_ = mod1.model + kwds = mod1_._get_init_kwds() + assert_allclose(kwds['exposure'], exposure, rtol=1e-14) + assert_allclose(kwds['offset'], mod1_.offset, rtol=1e-14) + mod3 = mod1_.__class__(mod1_.endog, mod1_.exog, **kwds) + assert_allclose(mod3.exposure, mod1_.exposure, rtol=1e-14) + assert_allclose(mod3.offset, mod1_.offset, rtol=1e-14) + + # test fit_regularized exposure, see #4605 + resr1 = mod1.model.fit_regularized() + resr2 = mod2.model.fit_regularized() + assert_allclose(resr1.params, resr2.params, rtol=1e-10) + + + def test_predict(self): + np.random.seed(382304) + endog = np.random.randint(0, 10, 100) + exog = np.random.normal(size=(100,3)) + exposure = np.random.uniform(1, 2, 100) + mod1 = GLM(endog, exog, family=sm.families.Poisson(), + exposure=exposure).fit() + exog1 = np.random.normal(size=(10,3)) + exposure1 = np.random.uniform(1, 2, 10) + + # Doubling exposure time should double expected response + pred1 = mod1.predict(exog=exog1, exposure=exposure1) + pred2 = mod1.predict(exog=exog1, exposure=2*exposure1) + assert_almost_equal(pred2, 2*pred1) + + # Check exposure defaults + pred3 = mod1.predict() + pred4 = mod1.predict(exposure=exposure) + pred5 = mod1.predict(exog=exog, exposure=exposure) + assert_almost_equal(pred3, pred4) + assert_almost_equal(pred4, pred5) + + # Check offset defaults + offset = np.random.uniform(1, 2, 100) + mod2 = GLM(endog, exog, offset=offset, family=sm.families.Poisson()).fit() + pred1 = mod2.predict() + pred2 = mod2.predict(offset=offset) + pred3 = mod2.predict(exog=exog, offset=offset) + assert_almost_equal(pred1, pred2) + assert_almost_equal(pred2, pred3) + + # Check that offset shifts the linear predictor + mod3 = GLM(endog, exog, family=sm.families.Poisson()).fit() + offset = np.random.uniform(1, 2, 10) + pred1 = mod3.predict(exog=exog1, offset=offset, linear=True) + pred2 = mod3.predict(exog=exog1, offset=2*offset, linear=True) + assert_almost_equal(pred2, pred1+offset) + + +def test_perfect_pred(): + cur_dir = os.path.dirname(os.path.abspath(__file__)) + iris = np.genfromtxt(os.path.join(cur_dir, 'results', 'iris.csv'), + delimiter=",", skip_header=1) + y = iris[:, -1] + X = iris[:, :-1] + X = X[y != 2] + y = y[y != 2] + X = add_constant(X, prepend=True) + glm = GLM(y, X, family=sm.families.Binomial()) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=RuntimeWarning) + assert_raises(PerfectSeparationError, glm.fit) + + +def test_score_test_OLS(): + # nicer example than Longley + from statsmodels.regression.linear_model import OLS + np.random.seed(5) + nobs = 100 + sige = 0.5 + x = np.random.uniform(0, 1, size=(nobs, 5)) + x[:, 0] = 1 + beta = 1. / np.arange(1., x.shape[1] + 1) + y = x.dot(beta) + sige * np.random.randn(nobs) + + res_ols = OLS(y, x).fit() + res_olsc = OLS(y, x[:, :-2]).fit() + co = res_ols.compare_lm_test(res_olsc, demean=False) + + res_glm = GLM(y, x[:, :-2], family=sm.families.Gaussian()).fit() + co2 = res_glm.model.score_test(res_glm.params, exog_extra=x[:, -2:]) + # difference in df_resid versus nobs in scale see #1786 + assert_allclose(co[0] * 97 / 100., co2[0], rtol=1e-13) + + +def test_attribute_writable_resettable(): + # Regression test for mutables and class constructors. + data = sm.datasets.longley.load(as_pandas=False) + endog, exog = data.endog, data.exog + glm_model = sm.GLM(endog, exog) + assert_equal(glm_model.family.link.power, 1.0) + glm_model.family.link.power = 2. + assert_equal(glm_model.family.link.power, 2.0) + glm_model2 = sm.GLM(endog, exog) + assert_equal(glm_model2.family.link.power, 1.0) + + +class Test_start_params(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + ''' + Test Gaussian family with canonical identity link + ''' + # Test Precisions + cls.decimal_resids = DECIMAL_3 + cls.decimal_params = DECIMAL_2 + cls.decimal_bic = DECIMAL_0 + cls.decimal_bse = DECIMAL_3 + + from statsmodels.datasets.longley import load + cls.data = load(as_pandas=False) + cls.data.exog = add_constant(cls.data.exog, prepend=False) + params = sm.OLS(cls.data.endog, cls.data.exog).fit().params + cls.res1 = GLM(cls.data.endog, cls.data.exog, + family=sm.families.Gaussian()).fit(start_params=params) + from .results.results_glm import Longley + cls.res2 = Longley() + + +def test_glm_start_params(): + # see 1604 + y2 = np.array('0 1 0 0 0 1'.split(), int) + wt = np.array([50,1,50,1,5,10]) + y2 = np.repeat(y2, wt) + x2 = np.repeat([0,0,0.001,100,-1,-1], wt) + mod = sm.GLM(y2, sm.add_constant(x2), family=sm.families.Binomial()) + res = mod.fit(start_params=[-4, -5]) + np.testing.assert_almost_equal(res.params, [-4.60305022, -5.29634545], 6) + + +def test_loglike_no_opt(): + # see 1728 + + y = np.asarray([0, 1, 0, 0, 1, 1, 0, 1, 1, 1]) + x = np.arange(10, dtype=np.float64) + + def llf(params): + lin_pred = params[0] + params[1]*x + pr = 1 / (1 + np.exp(-lin_pred)) + return np.sum(y*np.log(pr) + (1-y)*np.log(1-pr)) + + for params in [0,0], [0,1], [0.5,0.5]: + mod = sm.GLM(y, sm.add_constant(x), family=sm.families.Binomial()) + res = mod.fit(start_params=params, maxiter=0) + like = llf(params) + assert_almost_equal(like, res.llf) + + +def test_formula_missing_exposure(): + # see 2083 + import statsmodels.formula.api as smf + import pandas as pd + + d = {'Foo': [1, 2, 10, 149], 'Bar': [1, 2, 3, np.nan], + 'constant': [1] * 4, 'exposure' : np.random.uniform(size=4), + 'x': [1, 3, 2, 1.5]} + df = pd.DataFrame(d) + + family = sm.families.Gaussian(link=sm.families.links.log()) + + mod = smf.glm("Foo ~ Bar", data=df, exposure=df.exposure, + family=family) + assert_(type(mod.exposure) is np.ndarray, msg='Exposure is not ndarray') + + exposure = pd.Series(np.random.uniform(size=5)) + df.loc[3, 'Bar'] = 4 # nan not relevant for Valueerror for shape mismatch + assert_raises(ValueError, smf.glm, "Foo ~ Bar", data=df, + exposure=exposure, family=family) + assert_raises(ValueError, GLM, df.Foo, df[['constant', 'Bar']], + exposure=exposure, family=family) + + +@pytest.mark.matplotlib +def test_plots(close_figures): + + np.random.seed(378) + n = 200 + exog = np.random.normal(size=(n, 2)) + lin_pred = exog[:, 0] + exog[:, 1]**2 + prob = 1 / (1 + np.exp(-lin_pred)) + endog = 1 * (np.random.uniform(size=n) < prob) + + model = sm.GLM(endog, exog, family=sm.families.Binomial()) + result = model.fit() + + import pandas as pd + from statsmodels.graphics.regressionplots import add_lowess + + # array interface + for j in 0,1: + fig = result.plot_added_variable(j) + add_lowess(fig.axes[0], frac=0.5) + close_or_save(pdf, fig) + fig = result.plot_partial_residuals(j) + add_lowess(fig.axes[0], frac=0.5) + close_or_save(pdf, fig) + fig = result.plot_ceres_residuals(j) + add_lowess(fig.axes[0], frac=0.5) + close_or_save(pdf, fig) + + # formula interface + data = pd.DataFrame({"y": endog, "x1": exog[:, 0], "x2": exog[:, 1]}) + model = sm.GLM.from_formula("y ~ x1 + x2", data, family=sm.families.Binomial()) + result = model.fit() + for j in 0,1: + xname = ["x1", "x2"][j] + fig = result.plot_added_variable(xname) + add_lowess(fig.axes[0], frac=0.5) + close_or_save(pdf, fig) + fig = result.plot_partial_residuals(xname) + add_lowess(fig.axes[0], frac=0.5) + close_or_save(pdf, fig) + fig = result.plot_ceres_residuals(xname) + add_lowess(fig.axes[0], frac=0.5) + close_or_save(pdf, fig) + +def gen_endog(lin_pred, family_class, link, binom_version=0): + + np.random.seed(872) + + fam = sm.families + + mu = link().inverse(lin_pred) + + if family_class == fam.Binomial: + if binom_version == 0: + endog = 1*(np.random.uniform(size=len(lin_pred)) < mu) + else: + endog = np.empty((len(lin_pred), 2)) + n = 10 + endog[:, 0] = (np.random.uniform(size=(len(lin_pred), n)) < mu[:, None]).sum(1) + endog[:, 1] = n - endog[:, 0] + elif family_class == fam.Poisson: + endog = np.random.poisson(mu) + elif family_class == fam.Gamma: + endog = np.random.gamma(2, mu) + elif family_class == fam.Gaussian: + endog = mu + 2 * np.random.normal(size=len(lin_pred)) + elif family_class == fam.NegativeBinomial: + from scipy.stats.distributions import nbinom + endog = nbinom.rvs(mu, 0.5) + elif family_class == fam.InverseGaussian: + from scipy.stats.distributions import invgauss + endog = invgauss.rvs(mu, scale=20) + else: + raise ValueError + + return endog + + +@pytest.mark.smoke +def test_summary(): + np.random.seed(4323) + + n = 100 + exog = np.random.normal(size=(n, 2)) + exog[:, 0] = 1 + endog = np.random.normal(size=n) + + for method in ["irls", "cg"]: + fa = sm.families.Gaussian() + model = sm.GLM(endog, exog, family=fa) + rslt = model.fit(method=method) + s = rslt.summary() + + +def check_score_hessian(results): + # compare models core and hessian with numerical derivatives + + params = results.params + # avoid checking score at MLE, score close to zero + sc = results.model.score(params * 0.98, scale=1) + # cs currently (0.9) does not work for all families + llfunc = lambda x: results.model.loglike(x, scale=1) + sc2 = approx_fprime(params * 0.98, llfunc) + assert_allclose(sc, sc2, rtol=0.05) + + hess = results.model.hessian(params, scale=1) + hess2 = approx_hess(params, llfunc) + assert_allclose(hess, hess2, rtol=0.05) + scfunc = lambda x: results.model.score(x, scale=1) + hess3 = approx_fprime(params, scfunc) + assert_allclose(hess, hess3, rtol=0.05) + + +def test_gradient_irls(): + # Compare the results when using gradient optimization and IRLS. + + # TODO: Find working examples for inverse_squared link + + np.random.seed(87342) + + fam = sm.families + lnk = sm.families.links + families = [(fam.Binomial, [lnk.logit, lnk.probit, lnk.cloglog, lnk.log, lnk.cauchy]), + (fam.Poisson, [lnk.log, lnk.identity, lnk.sqrt]), + (fam.Gamma, [lnk.log, lnk.identity, lnk.inverse_power]), + (fam.Gaussian, [lnk.identity, lnk.log, lnk.inverse_power]), + (fam.InverseGaussian, [lnk.log, lnk.identity, lnk.inverse_power, lnk.inverse_squared]), + (fam.NegativeBinomial, [lnk.log, lnk.inverse_power, lnk.inverse_squared, lnk.identity])] + + n = 100 + p = 3 + exog = np.random.normal(size=(n, p)) + exog[:, 0] = 1 + + skip_one = False + for family_class, family_links in families: + for link in family_links: + for binom_version in 0,1: + + if family_class != fam.Binomial and binom_version == 1: + continue + + if (family_class, link) == (fam.Poisson, lnk.identity): + lin_pred = 20 + exog.sum(1) + elif (family_class, link) == (fam.Binomial, lnk.log): + lin_pred = -1 + exog.sum(1) / 8 + elif (family_class, link) == (fam.Poisson, lnk.sqrt): + lin_pred = 2 + exog.sum(1) + elif (family_class, link) == (fam.InverseGaussian, lnk.log): + #skip_zero = True + lin_pred = -1 + exog.sum(1) + elif (family_class, link) == (fam.InverseGaussian, lnk.identity): + lin_pred = 20 + 5*exog.sum(1) + lin_pred = np.clip(lin_pred, 1e-4, np.inf) + elif (family_class, link) == (fam.InverseGaussian, lnk.inverse_squared): + lin_pred = 0.5 + exog.sum(1) / 5 + continue # skip due to non-convergence + elif (family_class, link) == (fam.InverseGaussian, lnk.inverse_power): + lin_pred = 1 + exog.sum(1) / 5 + elif (family_class, link) == (fam.NegativeBinomial, lnk.identity): + lin_pred = 20 + 5*exog.sum(1) + lin_pred = np.clip(lin_pred, 1e-4, np.inf) + elif (family_class, link) == (fam.NegativeBinomial, lnk.inverse_squared): + lin_pred = 0.1 + np.random.uniform(size=exog.shape[0]) + continue # skip due to non-convergence + elif (family_class, link) == (fam.NegativeBinomial, lnk.inverse_power): + lin_pred = 1 + exog.sum(1) / 5 + + elif (family_class, link) == (fam.Gaussian, lnk.inverse_power): + # adding skip because of convergence failure + skip_one = True + # the following fails with identity link, because endog < 0 + # elif family_class == fam.Gamma: + # lin_pred = 0.5 * exog.sum(1) + np.random.uniform(size=exog.shape[0]) + else: + lin_pred = np.random.uniform(size=exog.shape[0]) + + endog = gen_endog(lin_pred, family_class, link, binom_version) + + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + mod_irls = sm.GLM(endog, exog, family=family_class(link=link())) + rslt_irls = mod_irls.fit(method="IRLS") + + if not (family_class, link) in [(fam.Poisson, lnk.sqrt), + (fam.Gamma, lnk.inverse_power), + (fam.InverseGaussian, lnk.identity) + ]: + check_score_hessian(rslt_irls) + + # Try with and without starting values. + for max_start_irls, start_params in (0, rslt_irls.params), (3, None): + # TODO: skip convergence failures for now + if max_start_irls > 0 and skip_one: + continue + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + mod_gradient = sm.GLM(endog, exog, family=family_class(link=link())) + rslt_gradient = mod_gradient.fit(max_start_irls=max_start_irls, + start_params=start_params, + method="newton", maxiter=300) + + assert_allclose(rslt_gradient.params, + rslt_irls.params, rtol=1e-6, atol=5e-5) + + assert_allclose(rslt_gradient.llf, rslt_irls.llf, + rtol=1e-6, atol=1e-6) + + assert_allclose(rslt_gradient.scale, rslt_irls.scale, + rtol=1e-6, atol=1e-6) + + # Get the standard errors using expected information. + gradient_bse = rslt_gradient.bse + ehess = mod_gradient.hessian(rslt_gradient.params, observed=False) + gradient_bse = np.sqrt(-np.diag(np.linalg.inv(ehess))) + assert_allclose(gradient_bse, rslt_irls.bse, rtol=1e-6, atol=5e-5) + # rslt_irls.bse corresponds to observed=True + assert_allclose(rslt_gradient.bse, rslt_irls.bse, rtol=0.2, atol=5e-5) + + rslt_gradient_eim = mod_gradient.fit(max_start_irls=0, + cov_type='eim', + start_params=rslt_gradient.params, + method="newton", maxiter=300) + assert_allclose(rslt_gradient_eim.bse, rslt_irls.bse, rtol=5e-5, atol=0) + + +def test_gradient_irls_eim(): + # Compare the results when using eime gradient optimization and IRLS. + + # TODO: Find working examples for inverse_squared link + + np.random.seed(87342) + + fam = sm.families + lnk = sm.families.links + families = [(fam.Binomial, [lnk.logit, lnk.probit, lnk.cloglog, lnk.log, + lnk.cauchy]), + (fam.Poisson, [lnk.log, lnk.identity, lnk.sqrt]), + (fam.Gamma, [lnk.log, lnk.identity, lnk.inverse_power]), + (fam.Gaussian, [lnk.identity, lnk.log, lnk.inverse_power]), + (fam.InverseGaussian, [lnk.log, lnk.identity, + lnk.inverse_power, + lnk.inverse_squared]), + (fam.NegativeBinomial, [lnk.log, lnk.inverse_power, + lnk.inverse_squared, lnk.identity])] + + n = 100 + p = 3 + exog = np.random.normal(size=(n, p)) + exog[:, 0] = 1 + + skip_one = False + for family_class, family_links in families: + for link in family_links: + for binom_version in 0, 1: + + if family_class != fam.Binomial and binom_version == 1: + continue + + if (family_class, link) == (fam.Poisson, lnk.identity): + lin_pred = 20 + exog.sum(1) + elif (family_class, link) == (fam.Binomial, lnk.log): + lin_pred = -1 + exog.sum(1) / 8 + elif (family_class, link) == (fam.Poisson, lnk.sqrt): + lin_pred = 2 + exog.sum(1) + elif (family_class, link) == (fam.InverseGaussian, lnk.log): + # skip_zero = True + lin_pred = -1 + exog.sum(1) + elif (family_class, link) == (fam.InverseGaussian, + lnk.identity): + lin_pred = 20 + 5*exog.sum(1) + lin_pred = np.clip(lin_pred, 1e-4, np.inf) + elif (family_class, link) == (fam.InverseGaussian, + lnk.inverse_squared): + lin_pred = 0.5 + exog.sum(1) / 5 + continue # skip due to non-convergence + elif (family_class, link) == (fam.InverseGaussian, + lnk.inverse_power): + lin_pred = 1 + exog.sum(1) / 5 + elif (family_class, link) == (fam.NegativeBinomial, + lnk.identity): + lin_pred = 20 + 5*exog.sum(1) + lin_pred = np.clip(lin_pred, 1e-4, np.inf) + elif (family_class, link) == (fam.NegativeBinomial, + lnk.inverse_squared): + lin_pred = 0.1 + np.random.uniform(size=exog.shape[0]) + continue # skip due to non-convergence + elif (family_class, link) == (fam.NegativeBinomial, + lnk.inverse_power): + lin_pred = 1 + exog.sum(1) / 5 + + elif (family_class, link) == (fam.Gaussian, lnk.inverse_power): + # adding skip because of convergence failure + skip_one = True + else: + lin_pred = np.random.uniform(size=exog.shape[0]) + + endog = gen_endog(lin_pred, family_class, link, binom_version) + + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + mod_irls = sm.GLM(endog, exog, + family=family_class(link=link())) + rslt_irls = mod_irls.fit(method="IRLS") + + # Try with and without starting values. + for max_start_irls, start_params in ((0, rslt_irls.params), + (3, None)): + # TODO: skip convergence failures for now + if max_start_irls > 0 and skip_one: + continue + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + mod_gradient = sm.GLM(endog, exog, + family=family_class(link=link())) + rslt_gradient = mod_gradient.fit( + max_start_irls=max_start_irls, + start_params=start_params, + method="newton", + optim_hessian='eim' + ) + + assert_allclose(rslt_gradient.params, rslt_irls.params, + rtol=1e-6, atol=5e-5) + + assert_allclose(rslt_gradient.llf, rslt_irls.llf, + rtol=1e-6, atol=1e-6) + + assert_allclose(rslt_gradient.scale, rslt_irls.scale, + rtol=1e-6, atol=1e-6) + + # Get the standard errors using expected information. + ehess = mod_gradient.hessian(rslt_gradient.params, + observed=False) + gradient_bse = np.sqrt(-np.diag(np.linalg.inv(ehess))) + + assert_allclose(gradient_bse, rslt_irls.bse, rtol=1e-6, + atol=5e-5) + + +def test_glm_irls_method(): + nobs, k_vars = 50, 4 + np.random.seed(987126) + x = np.random.randn(nobs, k_vars - 1) + exog = add_constant(x, has_constant='add') + y = exog.sum(1) + np.random.randn(nobs) + + mod = GLM(y, exog) + res1 = mod.fit() + res2 = mod.fit(wls_method='pinv', attach_wls=True) + res3 = mod.fit(wls_method='qr', attach_wls=True) + # fit_gradient does not attach mle_settings + res_g1 = mod.fit(start_params=res1.params, method='bfgs') + + for r in [res1, res2, res3]: + assert_equal(r.mle_settings['optimizer'], 'IRLS') + assert_equal(r.method, 'IRLS') + + assert_equal(res1.mle_settings['wls_method'], 'lstsq') + assert_equal(res2.mle_settings['wls_method'], 'pinv') + assert_equal(res3.mle_settings['wls_method'], 'qr') + + assert_(hasattr(res2.results_wls.model, 'pinv_wexog')) + assert_(hasattr(res3.results_wls.model, 'exog_Q')) + + # fit_gradient currently does not attach mle_settings + assert_equal(res_g1.method, 'bfgs') + + +class CheckWtdDuplicationMixin(object): + decimal_params = DECIMAL_4 + + @classmethod + def setup_class(cls): + cls.data = cpunish.load(as_pandas=False) + cls.endog = cls.data.endog + cls.exog = cls.data.exog + np.random.seed(1234) + cls.weight = np.random.randint(5, 100, len(cls.endog)) + cls.endog_big = np.repeat(cls.endog, cls.weight) + cls.exog_big = np.repeat(cls.exog, cls.weight, axis=0) + + def test_params(self): + assert_allclose(self.res1.params, self.res2.params, atol=1e-6, + rtol=1e-6) + + decimal_bse = DECIMAL_4 + + def test_standard_errors(self): + assert_allclose(self.res1.bse, self.res2.bse, rtol=1e-5, atol=1e-6) + + decimal_resids = DECIMAL_4 + + # TODO: This doesn't work... Arrays are of different shape. + # Perhaps we use self.res1.model.family.resid_XXX()? + """ + def test_residuals(self): + resids1 = np.column_stack((self.res1.resid_pearson, + self.res1.resid_deviance, + self.res1.resid_working, + self.res1.resid_anscombe, + self.res1.resid_response)) + resids2 = np.column_stack((self.res1.resid_pearson, + self.res2.resid_deviance, + self.res2.resid_working, + self.res2.resid_anscombe, + self.res2.resid_response)) + assert_allclose(resids1, resids2, self.decimal_resids) + """ + + def test_aic(self): + # R includes the estimation of the scale as a lost dof + # Doesn't with Gamma though + assert_allclose(self.res1.aic, self.res2.aic, atol=1e-6, rtol=1e-6) + + def test_deviance(self): + assert_allclose(self.res1.deviance, self.res2.deviance, atol=1e-6, + rtol=1e-6) + + def test_scale(self): + assert_allclose(self.res1.scale, self.res2.scale, atol=1e-6, rtol=1e-6) + + def test_loglike(self): + # Stata uses the below llf for these families + # We differ with R for them + assert_allclose(self.res1.llf, self.res2.llf, 1e-6) + + decimal_null_deviance = DECIMAL_4 + + def test_null_deviance(self): + assert_allclose(self.res1.null_deviance, self.res2.null_deviance, + atol=1e-6, rtol=1e-6) + + decimal_bic = DECIMAL_4 + + def test_bic(self): + assert_allclose(self.res1.bic, self.res2.bic, atol=1e-6, rtol=1e-6) + + decimal_fittedvalues = DECIMAL_4 + + def test_fittedvalues(self): + res2_fitted = self.res2.predict(self.res1.model.exog) + assert_allclose(self.res1.fittedvalues, res2_fitted, atol=1e-5, + rtol=1e-5) + + decimal_tpvalues = DECIMAL_4 + + def test_tpvalues(self): + # test comparing tvalues and pvalues with normal implementation + # make sure they use normal distribution (inherited in results class) + assert_allclose(self.res1.tvalues, self.res2.tvalues, atol=1e-6, + rtol=2e-4) + assert_allclose(self.res1.pvalues, self.res2.pvalues, atol=1e-6, + rtol=1e-6) + assert_allclose(self.res1.conf_int(), self.res2.conf_int(), atol=1e-6, + rtol=1e-6) + + +class TestWtdGlmPoisson(CheckWtdDuplicationMixin): + + @classmethod + def setup_class(cls): + ''' + Tests Poisson family with canonical log link. + ''' + super(TestWtdGlmPoisson, cls).setup_class() + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=sm.families.Poisson()).fit() + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=sm.families.Poisson()).fit() + + +class TestWtdGlmPoissonNewton(CheckWtdDuplicationMixin): + @classmethod + def setup_class(cls): + ''' + Tests Poisson family with canonical log link. + ''' + super(TestWtdGlmPoissonNewton, cls).setup_class() + + start_params = np.array([1.82794424e-04, -4.76785037e-02, + -9.48249717e-02, -2.92293226e-04, + 2.63728909e+00, -2.05934384e+01]) + + fit_kwds = dict(method='newton') + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=sm.families.Poisson()).fit(**fit_kwds) + fit_kwds = dict(method='newton', start_params=start_params) + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=sm.families.Poisson()).fit(**fit_kwds) + + +class TestWtdGlmPoissonHC0(CheckWtdDuplicationMixin): + @classmethod + def setup_class(cls): + + ''' + Tests Poisson family with canonical log link. + ''' + super(TestWtdGlmPoissonHC0, cls).setup_class() + + start_params = np.array([1.82794424e-04, -4.76785037e-02, + -9.48249717e-02, -2.92293226e-04, + 2.63728909e+00, -2.05934384e+01]) + + fit_kwds = dict(cov_type='HC0') + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=sm.families.Poisson()).fit(**fit_kwds) + fit_kwds = dict(cov_type='HC0', start_params=start_params) + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=sm.families.Poisson()).fit(**fit_kwds) + + +class TestWtdGlmPoissonClu(CheckWtdDuplicationMixin): + @classmethod + def setup_class(cls): + + ''' + Tests Poisson family with canonical log link. + ''' + super(TestWtdGlmPoissonClu, cls).setup_class() + + start_params = np.array([1.82794424e-04, -4.76785037e-02, + -9.48249717e-02, -2.92293226e-04, + 2.63728909e+00, -2.05934384e+01]) + + gid = np.arange(1, len(cls.endog) + 1) // 2 + fit_kwds = dict(cov_type='cluster', cov_kwds={'groups': gid, 'use_correction':False}) + + import warnings + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=sm.families.Poisson()).fit(**fit_kwds) + gidr = np.repeat(gid, cls.weight) + fit_kwds = dict(cov_type='cluster', cov_kwds={'groups': gidr, 'use_correction':False}) + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=sm.families.Poisson()).fit(start_params=start_params, + **fit_kwds) + + +class TestWtdGlmBinomial(CheckWtdDuplicationMixin): + @classmethod + def setup_class(cls): + + ''' + Tests Binomial family with canonical logit link. + ''' + super(TestWtdGlmBinomial, cls).setup_class() + cls.endog = cls.endog / 100 + cls.endog_big = cls.endog_big / 100 + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=sm.families.Binomial()).fit() + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=sm.families.Binomial()).fit() + + +class TestWtdGlmNegativeBinomial(CheckWtdDuplicationMixin): + @classmethod + def setup_class(cls): + + ''' + Tests Negative Binomial family with canonical link + g(p) = log(p/(p + 1/alpha)) + ''' + super(TestWtdGlmNegativeBinomial, cls).setup_class() + alpha = 1. + + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=DomainWarning) + family_link = sm.families.NegativeBinomial( + link=sm.families.links.nbinom(alpha=alpha), + alpha=alpha) + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=family_link).fit() + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=family_link).fit() + + +class TestWtdGlmGamma(CheckWtdDuplicationMixin): + @classmethod + def setup_class(cls): + + ''' + Tests Gamma family with log link. + ''' + super(TestWtdGlmGamma, cls).setup_class() + family_link = sm.families.Gamma(sm.families.links.log()) + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=family_link).fit() + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=family_link).fit() + + +class TestWtdGlmGaussian(CheckWtdDuplicationMixin): + @classmethod + def setup_class(cls): + ''' + Tests Gaussian family with log link. + ''' + super(TestWtdGlmGaussian, cls).setup_class() + family_link = sm.families.Gaussian(sm.families.links.log()) + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=family_link).fit() + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=family_link).fit() + + +class TestWtdGlmInverseGaussian(CheckWtdDuplicationMixin): + @classmethod + def setup_class(cls): + ''' + Tests InverseGuassian family with log link. + ''' + super(TestWtdGlmInverseGaussian, cls).setup_class() + family_link = sm.families.InverseGaussian(sm.families.links.log()) + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=family_link).fit() + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=family_link).fit() + + +class TestWtdGlmGammaNewton(CheckWtdDuplicationMixin): + @classmethod + def setup_class(cls): + ''' + Tests Gamma family with log link. + ''' + super(TestWtdGlmGammaNewton, cls).setup_class() + family_link = sm.families.Gamma(sm.families.links.log()) + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=family_link, + method='newton').fit() + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=family_link, + method='newton').fit() + + +class TestWtdGlmGammaScale_X2(CheckWtdDuplicationMixin): + @classmethod + def setup_class(cls): + ''' + Tests Gamma family with log link. + ''' + super(TestWtdGlmGammaScale_X2, cls).setup_class() + family_link = sm.families.Gamma(sm.families.links.log()) + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=family_link, + scale='X2').fit() + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=family_link, + scale='X2').fit() + + +class TestWtdGlmGammaScale_dev(CheckWtdDuplicationMixin): + @classmethod + def setup_class(cls): + ''' + Tests Gamma family with log link. + ''' + super(TestWtdGlmGammaScale_dev, cls).setup_class() + family_link = sm.families.Gamma(sm.families.links.log()) + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=family_link, + scale='dev').fit() + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=family_link, + scale='dev').fit() + + def test_missing(self): + endog = self.data.endog.copy() + exog = self.data.exog.copy() + exog[0, 0] = np.nan + endog[[2, 4, 6, 8]] = np.nan + freq_weights = self.weight + mod_misisng = GLM(endog, exog, family=self.res1.model.family, + freq_weights=freq_weights, missing='drop') + assert_equal(mod_misisng.freq_weights.shape[0], + mod_misisng.endog.shape[0]) + assert_equal(mod_misisng.freq_weights.shape[0], + mod_misisng.exog.shape[0]) + keep_idx = np.array([1, 3, 5, 7, 9, 10, 11, 12, 13, 14, 15, 16]) + assert_equal(mod_misisng.freq_weights, self.weight[keep_idx]) + + +class TestWtdTweedieLog(CheckWtdDuplicationMixin): + @classmethod + def setup_class(cls): + ''' + Tests Tweedie family with log link and var_power=1. + ''' + super(TestWtdTweedieLog, cls).setup_class() + family_link = sm.families.Tweedie(link=sm.families.links.log(), + var_power=1) + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=family_link).fit() + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=family_link).fit() + + +class TestWtdTweediePower2(CheckWtdDuplicationMixin): + @classmethod + def setup_class(cls): + ''' + Tests Tweedie family with Power(1) link and var_power=2. + ''' + cls.data = cpunish.load_pandas() + cls.endog = cls.data.endog + cls.exog = cls.data.exog[['INCOME', 'SOUTH']] + np.random.seed(1234) + cls.weight = np.random.randint(5, 100, len(cls.endog)) + cls.endog_big = np.repeat(cls.endog.values, cls.weight) + cls.exog_big = np.repeat(cls.exog.values, cls.weight, axis=0) + link = sm.families.links.Power() + family_link = sm.families.Tweedie(link=link, var_power=2) + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=family_link).fit() + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=family_link).fit() + + +class TestWtdTweediePower15(CheckWtdDuplicationMixin): + @classmethod + def setup_class(cls): + ''' + Tests Tweedie family with Power(0.5) link and var_power=1.5. + ''' + super(TestWtdTweediePower15, cls).setup_class() + family_link = sm.families.Tweedie(link=sm.families.links.Power(0.5), + var_power=1.5) + cls.res1 = GLM(cls.endog, cls.exog, + freq_weights=cls.weight, + family=family_link).fit() + cls.res2 = GLM(cls.endog_big, cls.exog_big, + family=family_link).fit() + + +def test_wtd_patsy_missing(): + import pandas as pd + data = cpunish.load(as_pandas=False) + data.exog[0, 0] = np.nan + data.endog[[2, 4, 6, 8]] = np.nan + data.pandas = pd.DataFrame(data.exog, columns=data.exog_name) + data.pandas['EXECUTIONS'] = data.endog + weights = np.arange(1, len(data.endog)+1) + formula = """EXECUTIONS ~ INCOME + PERPOVERTY + PERBLACK + VC100k96 + + SOUTH + DEGREE""" + mod_misisng = GLM.from_formula(formula, data=data.pandas, + freq_weights=weights) + assert_equal(mod_misisng.freq_weights.shape[0], + mod_misisng.endog.shape[0]) + assert_equal(mod_misisng.freq_weights.shape[0], + mod_misisng.exog.shape[0]) + assert_equal(mod_misisng.freq_weights.shape[0], 12) + keep_weights = np.array([2, 4, 6, 8, 10, 11, 12, 13, 14, 15, 16, 17]) + assert_equal(mod_misisng.freq_weights, keep_weights) + + +class CheckTweedie(object): + def test_resid(self): + idx1 = len(self.res1.resid_response) - 1 + idx2 = len(self.res2.resid_response) - 1 + assert_allclose(np.concatenate((self.res1.resid_response[:17], + [self.res1.resid_response[idx1]])), + np.concatenate((self.res2.resid_response[:17], + [self.res2.resid_response[idx2]])), + rtol=1e-5, atol=1e-5) + assert_allclose(np.concatenate((self.res1.resid_pearson[:17], + [self.res1.resid_pearson[idx1]])), + np.concatenate((self.res2.resid_pearson[:17], + [self.res2.resid_pearson[idx2]])), + rtol=1e-5, atol=1e-5) + assert_allclose(np.concatenate((self.res1.resid_deviance[:17], + [self.res1.resid_deviance[idx1]])), + np.concatenate((self.res2.resid_deviance[:17], + [self.res2.resid_deviance[idx2]])), + rtol=1e-5, atol=1e-5) + + assert_allclose(np.concatenate((self.res1.resid_working[:17], + [self.res1.resid_working[idx1]])), + np.concatenate((self.res2.resid_working[:17], + [self.res2.resid_working[idx2]])), + rtol=1e-5, atol=1e-5) + + + def test_bse(self): + assert_allclose(self.res1.bse, self.res2.bse, atol=1e-6, rtol=1e6) + + def test_params(self): + assert_allclose(self.res1.params, self.res2.params, atol=1e-5, + rtol=1e-5) + + def test_deviance(self): + assert_allclose(self.res1.deviance, self.res2.deviance, atol=1e-6, + rtol=1e-6) + + def test_df(self): + assert_equal(self.res1.df_model, self.res2.df_model) + assert_equal(self.res1.df_resid, self.res2.df_resid) + + def test_fittedvalues(self): + idx1 = len(self.res1.fittedvalues) - 1 + idx2 = len(self.res2.resid_response) - 1 + assert_allclose(np.concatenate((self.res1.fittedvalues[:17], + [self.res1.fittedvalues[idx1]])), + np.concatenate((self.res2.fittedvalues[:17], + [self.res2.fittedvalues[idx2]])), + atol=1e-4, rtol=1e-4) + + def test_summary(self): + self.res1.summary() + self.res1.summary2() + + +class TestTweediePower15(CheckTweedie): + @classmethod + def setup_class(cls): + from .results.results_glm import CpunishTweediePower15 + cls.data = cpunish.load_pandas() + cls.exog = cls.data.exog[['INCOME', 'SOUTH']] + cls.endog = cls.data.endog + family_link = sm.families.Tweedie(link=sm.families.links.Power(1), + var_power=1.5) + cls.res1 = sm.GLM(endog=cls.data.endog, + exog=cls.data.exog[['INCOME', 'SOUTH']], + family=family_link).fit() + cls.res2 = CpunishTweediePower15() + + +class TestTweediePower2(CheckTweedie): + @classmethod + def setup_class(cls): + from .results.results_glm import CpunishTweediePower2 + cls.data = cpunish.load_pandas() + cls.exog = cls.data.exog[['INCOME', 'SOUTH']] + cls.endog = cls.data.endog + family_link = sm.families.Tweedie(link=sm.families.links.Power(1), + var_power=2.) + cls.res1 = sm.GLM(endog=cls.data.endog, + exog=cls.data.exog[['INCOME', 'SOUTH']], + family=family_link).fit() + cls.res2 = CpunishTweediePower2() + + +class TestTweedieLog1(CheckTweedie): + @classmethod + def setup_class(cls): + from .results.results_glm import CpunishTweedieLog1 + cls.data = cpunish.load_pandas() + cls.exog = cls.data.exog[['INCOME', 'SOUTH']] + cls.endog = cls.data.endog + family_link = sm.families.Tweedie(link=sm.families.links.log(), + var_power=1.) + cls.res1 = sm.GLM(endog=cls.data.endog, + exog=cls.data.exog[['INCOME', 'SOUTH']], + family=family_link).fit() + cls.res2 = CpunishTweedieLog1() + + +class TestTweedieLog15Fair(CheckTweedie): + @classmethod + def setup_class(cls): + from .results.results_glm import FairTweedieLog15 + from statsmodels.datasets.fair import load_pandas + data = load_pandas() + family_link = sm.families.Tweedie(link=sm.families.links.log(), + var_power=1.5) + cls.res1 = sm.GLM(endog=data.endog, + exog=data.exog[['rate_marriage', 'age', + 'yrs_married']], + family=family_link).fit() + cls.res2 = FairTweedieLog15() + + +class CheckTweedieSpecial(object): + def test_mu(self): + assert_allclose(self.res1.mu, self.res2.mu, rtol=1e-5, atol=1e-5) + + def test_resid(self): + assert_allclose(self.res1.resid_response, self.res2.resid_response, + rtol=1e-5, atol=1e-5) + assert_allclose(self.res1.resid_pearson, self.res2.resid_pearson, + rtol=1e-5, atol=1e-5) + assert_allclose(self.res1.resid_deviance, self.res2.resid_deviance, + rtol=1e-5, atol=1e-5) + assert_allclose(self.res1.resid_working, self.res2.resid_working, + rtol=1e-5, atol=1e-5) + assert_allclose(self.res1.resid_anscombe_unscaled, + self.res2.resid_anscombe_unscaled, + rtol=1e-5, atol=1e-5) + + +class TestTweedieSpecialLog0(CheckTweedieSpecial): + @classmethod + def setup_class(cls): + cls.data = cpunish.load_pandas() + cls.exog = cls.data.exog[['INCOME', 'SOUTH']] + cls.endog = cls.data.endog + family1 = sm.families.Gaussian(link=sm.families.links.log()) + cls.res1 = sm.GLM(endog=cls.data.endog, + exog=cls.data.exog[['INCOME', 'SOUTH']], + family=family1).fit() + family2 = sm.families.Tweedie(link=sm.families.links.log(), + var_power=0) + cls.res2 = sm.GLM(endog=cls.data.endog, + exog=cls.data.exog[['INCOME', 'SOUTH']], + family=family2).fit() + + +class TestTweedieSpecialLog1(CheckTweedieSpecial): + @classmethod + def setup_class(cls): + cls.data = cpunish.load_pandas() + cls.exog = cls.data.exog[['INCOME', 'SOUTH']] + cls.endog = cls.data.endog + family1 = sm.families.Poisson(link=sm.families.links.log()) + cls.res1 = sm.GLM(endog=cls.data.endog, + exog=cls.data.exog[['INCOME', 'SOUTH']], + family=family1).fit() + family2 = sm.families.Tweedie(link=sm.families.links.log(), + var_power=1) + cls.res2 = sm.GLM(endog=cls.data.endog, + exog=cls.data.exog[['INCOME', 'SOUTH']], + family=family2).fit() + + +class TestTweedieSpecialLog2(CheckTweedieSpecial): + @classmethod + def setup_class(cls): + cls.data = cpunish.load_pandas() + cls.exog = cls.data.exog[['INCOME', 'SOUTH']] + cls.endog = cls.data.endog + family1 = sm.families.Gamma(link=sm.families.links.log()) + cls.res1 = sm.GLM(endog=cls.data.endog, + exog=cls.data.exog[['INCOME', 'SOUTH']], + family=family1).fit() + family2 = sm.families.Tweedie(link=sm.families.links.log(), + var_power=2) + cls.res2 = sm.GLM(endog=cls.data.endog, + exog=cls.data.exog[['INCOME', 'SOUTH']], + family=family2).fit() + + +class TestTweedieSpecialLog3(CheckTweedieSpecial): + @classmethod + def setup_class(cls): + cls.data = cpunish.load_pandas() + cls.exog = cls.data.exog[['INCOME', 'SOUTH']] + cls.endog = cls.data.endog + family1 = sm.families.InverseGaussian(link=sm.families.links.log()) + cls.res1 = sm.GLM(endog=cls.data.endog, + exog=cls.data.exog[['INCOME', 'SOUTH']], + family=family1).fit() + family2 = sm.families.Tweedie(link=sm.families.links.log(), + var_power=3) + cls.res2 = sm.GLM(endog=cls.data.endog, + exog=cls.data.exog[['INCOME', 'SOUTH']], + family=family2).fit() + +@pytest.mark.filterwarnings("ignore:GLM ridge optimization") +def test_tweedie_EQL(): + # All tests below are regression tests, but the results + # are very close to the population values. + + np.random.seed(3242) + n = 500 + p = 1.5 # Tweedie variance power + x = np.random.normal(size=(n, 4)) + lpr = np.dot(x, np.r_[1, -1, 0, 0.5]) + mu = np.exp(lpr) + lam = 10 * mu**(2 - p) / (2 - p) + alp = (2 - p) / (p - 1) + bet = 10 * mu**(1 - p) / (p - 1) + + # Generate Tweedie values using commpound Poisson distribution + y = np.empty(n) + N = np.random.poisson(lam) + for i in range(n): + y[i] = np.random.gamma(alp, 1 / bet[i], N[i]).sum() + + # Un-regularized fit using gradients not IRLS + fam = sm.families.Tweedie(var_power=p, eql=True) + model1 = sm.GLM(y, x, family=fam) + result1 = model1.fit(method="newton") + assert_allclose(result1.params, + np.array([1.00350497, -0.99656954, 0.00802702, 0.50713209]), + rtol=1e-5, atol=1e-5) + + # Lasso fit using coordinate-wise descent + model2 = sm.GLM(y, x, family=fam) + result2 = model2.fit_regularized(L1_wt=1, alpha=0.07) + import sys + ver = sys.version_info[0] + if ver >= 3: + rtol, atol = 1e-5, 1e-5 + else: + rtol, atol = 1e-2, 1e-2 + assert_allclose(result2.params, + np.array([1.00281192, -0.99182638, 0., 0.50448516]), + rtol=rtol, atol=atol) + + # Series of ridge fits using gradients + ev = (np.array([1.00186882, -0.99213087, 0.00717758, 0.50610942]), + np.array([0.98560143, -0.96976442, 0.00727526, 0.49749763]), + np.array([0.20643362, -0.16456528, 0.00023651, 0.10249308])) + for j, alpha in enumerate([0.05, 0.5, 0.7]): + model3 = sm.GLM(y, x, family=fam) + result3 = model3.fit_regularized(L1_wt=0, alpha=alpha) + assert_allclose(result3.params, ev[j], rtol=rtol, atol=atol) + +def test_tweedie_EQL_poisson_limit(): + # Test the limiting Poisson case of the Nelder/Pregibon/Tweedie + # EQL. + + np.random.seed(3242) + n = 500 + + x = np.random.normal(size=(n, 3)) + x[:, 0] = 1 + lpr = 4 + x[:, 1:].sum(1) + mn = np.exp(lpr) + y = np.random.poisson(mn) + + for scale in 1.0, 'x2', 'dev': + + # Un-regularized fit using gradients not IRLS + fam = sm.families.Tweedie(var_power=1, eql=True) + model1 = sm.GLM(y, x, family=fam) + result1 = model1.fit(method="newton", scale=scale) + + # Poisson GLM + model2 = sm.GLM(y, x, family=sm.families.Poisson()) + result2 = model2.fit(method="newton", scale=scale) + + assert_allclose(result1.params, result2.params, atol=1e-6, rtol=1e-6) + assert_allclose(result1.bse, result2.bse, 1e-6, 1e-6) + + +def test_tweedie_EQL_upper_limit(): + # Test the limiting case of the Nelder/Pregibon/Tweedie + # EQL with var = mean^2. These are tests against population + # values so accuracy is not high. + + np.random.seed(3242) + n = 500 + + x = np.random.normal(size=(n, 3)) + x[:, 0] = 1 + lpr = 4 + x[:, 1:].sum(1) + mn = np.exp(lpr) + y = np.random.poisson(mn) + + for scale in 'x2', 'dev', 1.0: + + # Un-regularized fit using gradients not IRLS + fam = sm.families.Tweedie(var_power=2, eql=True) + model1 = sm.GLM(y, x, family=fam) + result1 = model1.fit(method="newton", scale=scale) + assert_allclose(result1.params, np.r_[4, 1, 1], atol=1e-3, rtol=1e-1) + + +def testTweediePowerEstimate(): + # Test the Pearson estimate of the Tweedie variance and scale parameters. + # + # Ideally, this would match the following R code, but I can't make it work... + # + # setwd('c:/workspace') + # data <- read.csv('cpunish.csv', sep=",") + # + # library(tweedie) + # + # y <- c(1.00113835e+05, 6.89668315e+03, 6.15726842e+03, + # 1.41718806e+03, 5.11776456e+02, 2.55369154e+02, + # 1.07147443e+01, 3.56874698e+00, 4.06797842e-02, + # 7.06996731e-05, 2.10165106e-07, 4.34276938e-08, + # 1.56354040e-09, 0.00000000e+00, 0.00000000e+00, + # 0.00000000e+00, 0.00000000e+00) + # + # data$NewY <- y + # + # out <- tweedie.profile( NewY ~ INCOME + SOUTH - 1, + # p.vec=c(1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, + # 1.9), link.power=0, + # data=data,do.plot = TRUE) + data = cpunish.load_pandas() + y = [1.00113835e+05, 6.89668315e+03, 6.15726842e+03, + 1.41718806e+03, 5.11776456e+02, 2.55369154e+02, + 1.07147443e+01, 3.56874698e+00, 4.06797842e-02, + 7.06996731e-05, 2.10165106e-07, 4.34276938e-08, + 1.56354040e-09, 0.00000000e+00, 0.00000000e+00, + 0.00000000e+00, 0.00000000e+00] + model1 = sm.GLM(y, data.exog[['INCOME', 'SOUTH']], + family=sm.families.Tweedie(link=sm.families.links.log(), + var_power=1.5)) + res1 = model1.fit() + model2 = sm.GLM((y - res1.mu) ** 2, + np.column_stack((np.ones(len(res1.mu)), np.log(res1.mu))), + family=sm.families.Gamma(sm.families.links.log())) + res2 = model2.fit() + # Sample may be too small for this... + # assert_allclose(res1.scale, np.exp(res2.params[0]), rtol=0.25) + p = model1.estimate_tweedie_power(res1.mu) + assert_allclose(p, res2.params[1], rtol=0.25) + + +class TestRegularized(object): + + def test_regularized(self): + + import os + from .results import glmnet_r_results + + for dtype in "binomial", "poisson": + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + data = np.loadtxt(os.path.join(cur_dir, "results", "enet_%s.csv" % dtype), + delimiter=",") + + endog = data[:, 0] + exog = data[:, 1:] + + fam = {"binomial" : sm.families.Binomial, + "poisson" : sm.families.Poisson}[dtype] + + for j in range(9): + + vn = "rslt_%s_%d" % (dtype, j) + r_result = getattr(glmnet_r_results, vn) + L1_wt = r_result[0] + alpha = r_result[1] + params = r_result[2:] + + model = GLM(endog, exog, family=fam()) + sm_result = model.fit_regularized(L1_wt=L1_wt, alpha=alpha) + + # Agreement is OK, see below for further check + assert_allclose(params, sm_result.params, atol=1e-2, rtol=0.3) + + # The penalized log-likelihood that we are maximizing. + def plf(params): + llf = model.loglike(params) / len(endog) + llf = llf - alpha * ((1 - L1_wt)*np.sum(params**2) / 2 + L1_wt*np.sum(np.abs(params))) + return llf + + # Confirm that we are doing better than glmnet. + llf_r = plf(params) + llf_sm = plf(sm_result.params) + assert_equal(np.sign(llf_sm - llf_r), 1) + + +class TestConvergence(object): + @classmethod + def setup_class(cls): + ''' + Test Binomial family with canonical logit link using star98 dataset. + ''' + from statsmodels.datasets.star98 import load + data = load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + cls.model = GLM(data.endog, data.exog, + family=sm.families.Binomial()) + + def _when_converged(self, atol=1e-8, rtol=0, tol_criterion='deviance'): + for i, dev in enumerate(self.res.fit_history[tol_criterion]): + orig = self.res.fit_history[tol_criterion][i] + new = self.res.fit_history[tol_criterion][i + 1] + if np.allclose(orig, new, atol=atol, rtol=rtol): + return i + raise ValueError('CONVERGENCE CHECK: It seems this doens\'t converge!') + + def test_convergence_atol_only(self): + atol = 1e-8 + rtol = 0 + self.res = self.model.fit(atol=atol, rtol=rtol) + expected_iterations = self._when_converged(atol=atol, rtol=rtol) + actual_iterations = self.res.fit_history['iteration'] + # Note the first value is the list is np.inf. The second value + # is the initial guess based off of start_params or the + # estimate thereof. The third value (index = 2) is the actual "first + # iteration" + assert_equal(expected_iterations, actual_iterations) + assert_equal(len(self.res.fit_history['deviance']) - 2, + actual_iterations) + + def test_convergence_rtol_only(self): + atol = 0 + rtol = 1e-8 + self.res = self.model.fit(atol=atol, rtol=rtol) + expected_iterations = self._when_converged(atol=atol, rtol=rtol) + actual_iterations = self.res.fit_history['iteration'] + # Note the first value is the list is np.inf. The second value + # is the initial guess based off of start_params or the + # estimate thereof. The third value (index = 2) is the actual "first + # iteration" + assert_equal(expected_iterations, actual_iterations) + assert_equal(len(self.res.fit_history['deviance']) - 2, + actual_iterations) + + def test_convergence_atol_rtol(self): + atol = 1e-8 + rtol = 1e-8 + self.res = self.model.fit(atol=atol, rtol=rtol) + expected_iterations = self._when_converged(atol=atol, rtol=rtol) + actual_iterations = self.res.fit_history['iteration'] + # Note the first value is the list is np.inf. The second value + # is the initial guess based off of start_params or the + # estimate thereof. The third value (index = 2) is the actual "first + # iteration" + assert_equal(expected_iterations, actual_iterations) + assert_equal(len(self.res.fit_history['deviance']) - 2, + actual_iterations) + + def test_convergence_atol_only_params(self): + atol = 1e-8 + rtol = 0 + self.res = self.model.fit(atol=atol, rtol=rtol, tol_criterion='params') + expected_iterations = self._when_converged(atol=atol, rtol=rtol, + tol_criterion='params') + actual_iterations = self.res.fit_history['iteration'] + # Note the first value is the list is np.inf. The second value + # is the initial guess based off of start_params or the + # estimate thereof. The third value (index = 2) is the actual "first + # iteration" + assert_equal(expected_iterations, actual_iterations) + assert_equal(len(self.res.fit_history['deviance']) - 2, + actual_iterations) + + def test_convergence_rtol_only_params(self): + atol = 0 + rtol = 1e-8 + self.res = self.model.fit(atol=atol, rtol=rtol, tol_criterion='params') + expected_iterations = self._when_converged(atol=atol, rtol=rtol, + tol_criterion='params') + actual_iterations = self.res.fit_history['iteration'] + # Note the first value is the list is np.inf. The second value + # is the initial guess based off of start_params or the + # estimate thereof. The third value (index = 2) is the actual "first + # iteration" + assert_equal(expected_iterations, actual_iterations) + assert_equal(len(self.res.fit_history['deviance']) - 2, + actual_iterations) + + def test_convergence_atol_rtol_params(self): + atol = 1e-8 + rtol = 1e-8 + self.res = self.model.fit(atol=atol, rtol=rtol, tol_criterion='params') + expected_iterations = self._when_converged(atol=atol, rtol=rtol, + tol_criterion='params') + actual_iterations = self.res.fit_history['iteration'] + # Note the first value is the list is np.inf. The second value + # is the initial guess based off of start_params or the + # estimate thereof. The third value (index = 2) is the actual "first + # iteration" + assert_equal(expected_iterations, actual_iterations) + assert_equal(len(self.res.fit_history['deviance']) - 2, + actual_iterations) + + +def test_poisson_deviance(): + # see #3355 missing term in deviance if resid_response.sum() != 0 + np.random.seed(123987) + nobs, k_vars = 50, 3-1 + x = sm.add_constant(np.random.randn(nobs, k_vars)) + + mu_true = np.exp(x.sum(1)) + y = np.random.poisson(mu_true, size=nobs) + + mod = sm.GLM(y, x[:, :], family=sm.genmod.families.Poisson()) + res = mod.fit() + + d_i = res.resid_deviance + d = res.deviance + lr = (mod.family.loglike(y, y+1e-20) - + mod.family.loglike(y, res.fittedvalues)) * 2 + + assert_allclose(d, (d_i**2).sum(), rtol=1e-12) + assert_allclose(d, lr, rtol=1e-12) + + # case without constant, resid_response.sum() != 0 + mod_nc = sm.GLM(y, x[:, 1:], family=sm.genmod.families.Poisson()) + res_nc = mod_nc.fit() + + d_i = res_nc.resid_deviance + d = res_nc.deviance + lr = (mod.family.loglike(y, y+1e-20) - + mod.family.loglike(y, res_nc.fittedvalues)) * 2 + + assert_allclose(d, (d_i**2).sum(), rtol=1e-12) + assert_allclose(d, lr, rtol=1e-12) + + +def test_non_invertible_hessian_fails_summary(): + # Test when the hessian fails the summary is still available. + data = cpunish.load_pandas() + + data.endog[:] = 1 + with warnings.catch_warnings(): + # we filter DomainWarning, the convergence problems + # and warnings in summary + warnings.simplefilter("ignore") + mod = sm.GLM(data.endog, data.exog, family=sm.families.Gamma()) + res = mod.fit(maxiter=1, method='bfgs', max_start_irls=0) + res.summary() diff --git a/statsmodels/genmod/tests/test_glm_weights.py b/statsmodels/genmod/tests/test_glm_weights.py new file mode 100644 index 0000000..9db40a2 --- /dev/null +++ b/statsmodels/genmod/tests/test_glm_weights.py @@ -0,0 +1,915 @@ +""" +Test for weights in GLM, Poisson and OLS/WLS, continuous test_glm.py + + +Below is a table outlining the test coverage. + +================================= ====================== ====== ===================== === ======= ======== ============== ============= ============== ============= ============== ==== ========= +Test Compared To params normalized_cov_params bse loglike deviance resid_response resid_pearson resid_deviance resid_working resid_anscombe chi2 optimizer +================================= ====================== ====== ===================== === ======= ======== ============== ============= ============== ============= ============== ==== ========= +TestGlmPoissonPlain stata X X X X X X X X X X bfgs +TestGlmPoissonFwNr stata X X X X X X X X X X bfgs +TestGlmPoissonAwNr stata X X X X X X X X X X bfgs +TestGlmPoissonFwHC stata X X X X X +TestGlmPoissonAwHC stata X X X X X +TestGlmPoissonFwClu stata X X X X X +TestGlmTweedieAwNr R X X X X X X X newton +TestGlmGammaAwNr R X X special X X X X X bfgs +TestGlmGaussianAwNr R X X special X X X X X bfgs +TestRepeatedvsAggregated statsmodels.GLM X X bfgs +TestRepeatedvsAverage statsmodels.GLM X X bfgs +TestTweedieRepeatedvsAggregated statsmodels.GLM X X bfgs +TestTweedieRepeatedvsAverage statsmodels.GLM X X bfgs +TestBinomial0RepeatedvsAverage statsmodels.GLM X X +TestBinomial0RepeatedvsDuplicated statsmodels.GLM X X bfgs +TestBinomialVsVarWeights statsmodels.GLM X X X bfgs +TestGlmGaussianWLS statsmodels.WLS X X X bfgs +================================= ====================== ====== ===================== === ======= ======== ============== ============= ============== ============= ============== ==== ========= +""" +from __future__ import division +from statsmodels.compat.python import PY3 + +import warnings + +import numpy as np +from numpy.testing import (assert_raises, assert_allclose) +import pandas as pd +import pytest + +import statsmodels.api as sm +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.tools.tools import add_constant +from statsmodels.discrete import discrete_model as discrete +from statsmodels.tools.sm_exceptions import SpecificationWarning + +from .results import results_glm_poisson_weights as res_stata +from .results import res_R_var_weight as res_r + +# load data into module namespace +from statsmodels.datasets.cpunish import load + +cpunish_data = load(as_pandas=False) +cpunish_data.exog[:, 3] = np.log(cpunish_data.exog[:, 3]) +cpunish_data.exog = add_constant(cpunish_data.exog, prepend=False) + + +class CheckWeight(object): + def test_basic(self): + res1 = self.res1 + res2 = self.res2 + + assert_allclose(res1.params, res2.params, atol=1e-6, rtol=2e-6) + corr_fact = getattr(self, 'corr_fact', 1) + if hasattr(res2, 'normalized_cov_params'): + assert_allclose(res1.normalized_cov_params, + res2.normalized_cov_params, + atol=1e-8, rtol=2e-6) + if isinstance(self, (TestRepeatedvsAggregated, TestRepeatedvsAverage, + TestTweedieRepeatedvsAggregated, + TestTweedieRepeatedvsAverage, + TestBinomial0RepeatedvsAverage, + TestBinomial0RepeatedvsDuplicated)): + # Loglikelihood, scale, deviance is different between repeated vs. + # exposure/average + return None + assert_allclose(res1.bse, corr_fact * res2.bse, atol=1e-6, rtol=2e-6) + if isinstance(self, TestBinomialVsVarWeights): + # Binomial ll and deviance are different for 1d vs. counts... + return None + if isinstance(self, TestGlmGaussianWLS): + # This won't work right now either + return None + if not isinstance(self, (TestGlmGaussianAwNr, TestGlmGammaAwNr)): + # Matching R is hard + assert_allclose(res1.llf, res2.ll, atol=1e-6, rtol=1e-7) + assert_allclose(res1.deviance, res2.deviance, atol=1e-6, rtol=1e-7) + + def test_residuals(self): + if isinstance(self, (TestRepeatedvsAggregated, TestRepeatedvsAverage, + TestTweedieRepeatedvsAggregated, + TestTweedieRepeatedvsAverage, + TestBinomial0RepeatedvsAverage, + TestBinomial0RepeatedvsDuplicated)): + # This won't match as different number of records + return None + res1 = self.res1 + res2 = self.res2 + if not hasattr(res2, 'resids'): + return None # use SkipError instead + resid_all = dict(zip(res2.resids_colnames, res2.resids.T)) + + assert_allclose(res1.resid_response, resid_all['resid_response'], atol= 1e-6, rtol=2e-6) + assert_allclose(res1.resid_pearson, resid_all['resid_pearson'], atol= 1e-6, rtol=2e-6) + assert_allclose(res1.resid_deviance, resid_all['resid_deviance'], atol= 1e-6, rtol=2e-6) + assert_allclose(res1.resid_working, resid_all['resid_working'], atol= 1e-6, rtol=2e-6) + if resid_all.get('resid_anscombe') is None: + return None + # Stata doesn't use var_weights in anscombe residuals, it seems. + # Adjust residuals to match our approach. + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=FutureWarning) + resid_a = res1.resid_anscombe + + assert_allclose(resid_a, resid_all['resid_anscombe'] * np.sqrt(res1._var_weights), atol= 1e-6, rtol=2e-6) + + def test_compare_optimizers(self): + res1 = self.res1 + if isinstance(res1.model.family, sm.families.Tweedie): + method = 'newton' + optim_hessian = 'eim' + else: + method = 'bfgs' + optim_hessian = 'oim' + if isinstance(self, (TestGlmPoissonFwHC, TestGlmPoissonAwHC, + TestGlmPoissonFwClu, + TestBinomial0RepeatedvsAverage)): + return None + + start_params = res1.params + res2 = self.res1.model.fit(start_params=start_params, method=method, + optim_hessian=optim_hessian) + assert_allclose(res1.params, res2.params, atol=1e-3, rtol=2e-3) + H = res2.model.hessian(res2.params, observed=False) + res2_bse = np.sqrt(-np.diag(np.linalg.inv(H))) + assert_allclose(res1.bse, res2_bse, atol=1e-3, rtol=1e-3) + + def test_pearson_chi2(self): + if hasattr(self.res2, 'chi2'): + assert_allclose(self.res1.pearson_chi2, self.res2.deviance_p, + atol=1e-6, rtol=1e-6) + + +class TestGlmPoissonPlain(CheckWeight): + @classmethod + def setup_class(cls): + cls.res1 = GLM(cpunish_data.endog, cpunish_data.exog, + family=sm.families.Poisson()).fit() + # compare with discrete, start close to save time + modd = discrete.Poisson(cpunish_data.endog, cpunish_data.exog) + cls.res2 = res_stata.results_poisson_none_nonrobust + + +class TestGlmPoissonFwNr(CheckWeight): + @classmethod + def setup_class(cls): + fweights = [1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3] + fweights = np.array(fweights) + + cls.res1 = GLM(cpunish_data.endog, cpunish_data.exog, + family=sm.families.Poisson(), freq_weights=fweights).fit() + # compare with discrete, start close to save time + modd = discrete.Poisson(cpunish_data.endog, cpunish_data.exog) + cls.res2 = res_stata.results_poisson_fweight_nonrobust + + +class TestGlmPoissonAwNr(CheckWeight): + @classmethod + def setup_class(cls): + fweights = [1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3] + # faking aweights by using normalized freq_weights + fweights = np.array(fweights) + wsum = fweights.sum() + nobs = len(cpunish_data.endog) + aweights = fweights / wsum * nobs + + cls.res1 = GLM(cpunish_data.endog, cpunish_data.exog, + family=sm.families.Poisson(), var_weights=aweights).fit() + # compare with discrete, start close to save time + modd = discrete.Poisson(cpunish_data.endog, cpunish_data.exog) + + # Need to copy to avoid inplace adjustment + from copy import copy + cls.res2 = copy(res_stata.results_poisson_aweight_nonrobust) + cls.res2.resids = cls.res2.resids.copy() + + # Need to adjust resids for pearson and deviance to add weights + cls.res2.resids[:, 3:5] *= np.sqrt(aweights[:, np.newaxis]) + + +# prob_weights fail with HC, not properly implemented yet +class TestGlmPoissonPwNr(CheckWeight): + @classmethod + def setup_class(cls): + fweights = [1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3] + # faking aweights by using normalized freq_weights + fweights = np.array(fweights) + wsum = fweights.sum() + nobs = len(cpunish_data.endog) + aweights = fweights / wsum * nobs + + cls.res1 = GLM(cpunish_data.endog, cpunish_data.exog, + family=sm.families.Poisson(), freq_weights=fweights).fit(cov_type='HC1') + # compare with discrete, start close to save time + #modd = discrete.Poisson(cpunish_data.endog, cpunish_data.exog) + cls.res2 = res_stata.results_poisson_pweight_nonrobust + + # TODO: find more informative reasons why these fail + @pytest.mark.xfail(reason='Known to fail', strict=True) + def test_basic(self): + super(TestGlmPoissonPwNr, self).test_basic() + + @pytest.mark.xfail(reason='Known to fail', strict=True) + def test_compare_optimizers(self): + super(TestGlmPoissonPwNr, self).test_compare_optimizers() + + +class TestGlmPoissonFwHC(CheckWeight): + @classmethod + def setup_class(cls): + fweights = [1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3] + # faking aweights by using normalized freq_weights + fweights = np.array(fweights) + wsum = fweights.sum() + nobs = len(cpunish_data.endog) + aweights = fweights / wsum * nobs + cls.corr_fact = np.sqrt((wsum - 1.) / wsum) + + mod = GLM(cpunish_data.endog, cpunish_data.exog, + family=sm.families.Poisson(), + freq_weights=fweights) + cls.res1 = mod.fit(cov_type='HC0') #, cov_kwds={'use_correction':False}) + # compare with discrete, start close to save time + #modd = discrete.Poisson(cpunish_data.endog, cpunish_data.exog) + cls.res2 = res_stata.results_poisson_fweight_hc1 + + +# var_weights (aweights fail with HC, not properly implemented yet +class TestGlmPoissonAwHC(CheckWeight): + @classmethod + def setup_class(cls): + fweights = [1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3] + # faking aweights by using normalized freq_weights + fweights = np.array(fweights) + wsum = fweights.sum() + nobs = len(cpunish_data.endog) + aweights = fweights / wsum * nobs + + # This is really close when corr_fact = (wsum - 1.) / wsum, but to + # avoid having loosen precision of the assert_allclose, I'm doing this + # manually. Its *possible* lowering the IRLS convergence criterion + # in stata and here will make this less sketchy. + cls.corr_fact = np.sqrt((wsum - 1.) / wsum) * 0.98518473599905609 + mod = GLM(cpunish_data.endog, cpunish_data.exog, + family=sm.families.Poisson(), + var_weights=aweights) + cls.res1 = mod.fit(cov_type='HC0') #, cov_kwds={'use_correction':False}) + # compare with discrete, start close to save time + # modd = discrete.Poisson(cpunish_data.endog, cpunish_data.exog) + cls.res2 = res_stata.results_poisson_aweight_hc1 + + +class TestGlmPoissonFwClu(CheckWeight): + @classmethod + def setup_class(cls): + fweights = [1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3] + # faking aweights by using normalized freq_weights + fweights = np.array(fweights) + wsum = fweights.sum() + nobs = len(cpunish_data.endog) + aweights = fweights / wsum * nobs + + gid = np.arange(1, 17 + 1) // 2 + n_groups = len(np.unique(gid)) + + # no wnobs yet in sandwich covariance calcualtion + cls.corr_fact = 1 / np.sqrt(n_groups / (n_groups - 1)) #np.sqrt((wsum - 1.) / wsum) + cov_kwds = {'groups': gid, 'use_correction':False} + with pytest.warns(None): + mod = GLM(cpunish_data.endog, cpunish_data.exog, + family=sm.families.Poisson(), + freq_weights=fweights) + cls.res1 = mod.fit(cov_type='cluster', cov_kwds=cov_kwds) + + # compare with discrete, start close to save time + #modd = discrete.Poisson(cpunish_data.endog, cpunish_data.exog) + cls.res2 = res_stata.results_poisson_fweight_clu1 + + +class TestGlmTweedieAwNr(CheckWeight): + @classmethod + def setup_class(cls): + import statsmodels.formula.api as smf + + data = sm.datasets.fair.load_pandas() + endog = data.endog + data = data.exog + data['fair'] = endog + aweights = np.repeat(1, len(data.index)) + aweights[::5] = 5 + aweights[::13] = 3 + model = smf.glm( + 'fair ~ age + yrs_married', + data=data, + family=sm.families.Tweedie( + var_power=1.55, + link=sm.families.links.log() + ), + var_weights=aweights + ) + cls.res1 = model.fit(rtol=1e-25, atol=0) + cls.res2 = res_r.results_tweedie_aweights_nonrobust + + +class TestGlmGammaAwNr(CheckWeight): + @classmethod + def setup_class(cls): + from .results.results_glm import CancerLog + res2 = CancerLog() + endog = res2.endog + exog = res2.exog[:, :-1] + exog = sm.add_constant(exog, prepend=True) + + aweights = np.repeat(1, len(endog)) + aweights[::5] = 5 + aweights[::13] = 3 + model = sm.GLM(endog, exog, + family=sm.families.Gamma(link=sm.families.links.log()), + var_weights=aweights) + cls.res1 = model.fit(rtol=1e-25, atol=0) + cls.res2 = res_r.results_gamma_aweights_nonrobust + + def test_r_llf(self): + scale = self.res1.deviance / self.res1._iweights.sum() + ll = self.res1.family.loglike(self.res1.model.endog, + self.res1.mu, + freq_weights=self.res1._var_weights, + scale=scale) + assert_allclose(ll, self.res2.ll, atol=1e-6, rtol=1e-7) + + +class TestGlmGaussianAwNr(CheckWeight): + @classmethod + def setup_class(cls): + import statsmodels.formula.api as smf + + data = sm.datasets.cpunish.load_pandas() + endog = data.endog + data = data.exog + data['EXECUTIONS'] = endog + data['INCOME'] /= 1000 + aweights = np.array([1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, + 1]) + model = smf.glm( + 'EXECUTIONS ~ INCOME + SOUTH - 1', + data=data, + family=sm.families.Gaussian(link=sm.families.links.log()), + var_weights=aweights + ) + cls.res1 = model.fit(rtol=1e-25, atol=0) + cls.res2 = res_r.results_gaussian_aweights_nonrobust + + def test_r_llf(self): + res1 = self.res1 + res2 = self.res2 + model = self.res1.model + + # Need to make a few adjustments... + # First, calculate scale using nobs as denominator + scale = res1.scale * model.df_resid / model.wnobs + # Calculate llf using adj scale and wts = freq_weights + wts = model.freq_weights + llf = model.family.loglike(model.endog, res1.mu, + freq_weights=wts, + scale=scale) + # SM uses (essentially) stat's loglike formula... first term is + # (endog - mu) ** 2 / scale + adj_sm = -1 / 2 * ((model.endog - res1.mu) ** 2).sum() / scale + # R has these 2 terms that stata/sm don't + adj_r = -model.wnobs / 2 + np.sum(np.log(model.var_weights)) / 2 + llf_adj = llf - adj_sm + adj_r + assert_allclose(llf_adj, res2.ll, atol=1e-6, rtol=1e-7) + + +def gen_endog(lin_pred, family_class, link, binom_version=0): + + np.random.seed(872) + + fam = sm.families + + mu = link().inverse(lin_pred) + + if family_class == fam.Binomial: + if binom_version == 0: + endog = 1*(np.random.uniform(size=len(lin_pred)) < mu) + else: + endog = np.empty((len(lin_pred), 2)) + n = 10 + endog[:, 0] = (np.random.uniform(size=(len(lin_pred), n)) < mu[:, None]).sum(1) + endog[:, 1] = n - endog[:, 0] + elif family_class == fam.Poisson: + endog = np.random.poisson(mu) + elif family_class == fam.Gamma: + endog = np.random.gamma(2, mu) + elif family_class == fam.Gaussian: + endog = mu + np.random.normal(size=len(lin_pred)) + elif family_class == fam.NegativeBinomial: + from scipy.stats.distributions import nbinom + endog = nbinom.rvs(mu, 0.5) + elif family_class == fam.InverseGaussian: + from scipy.stats.distributions import invgauss + endog = invgauss.rvs(mu) + elif family_class == fam.Tweedie: + rate = 1 + shape = 1.0 + scale = mu / (rate * shape) + endog = (np.random.poisson(rate, size=scale.shape[0]) * + np.random.gamma(shape * scale)) + else: + raise ValueError + + return endog + + +def test_wtd_gradient_irls(): + # Compare the results when using gradient optimization and IRLS. + # TODO: Find working examples for inverse_squared link + + np.random.seed(87342) + + fam = sm.families + lnk = sm.families.links + families = [(fam.Binomial, [lnk.logit, lnk.probit, lnk.cloglog, lnk.log, + lnk.cauchy]), + (fam.Poisson, [lnk.log, lnk.identity, lnk.sqrt]), + (fam.Gamma, [lnk.log, lnk.identity, lnk.inverse_power]), + (fam.Gaussian, [lnk.identity, lnk.log, lnk.inverse_power]), + (fam.InverseGaussian, [lnk.log, lnk.identity, + lnk.inverse_power, + lnk.inverse_squared]), + (fam.NegativeBinomial, [lnk.log, lnk.inverse_power, + lnk.inverse_squared, lnk.identity])] + + n = 100 + p = 3 + exog = np.random.normal(size=(n, p)) + exog[:, 0] = 1 + + skip_one = False + for family_class, family_links in families: + for link in family_links: + for binom_version in 0, 1: + method = 'bfgs' + + if family_class != fam.Binomial and binom_version == 1: + continue + elif family_class == fam.Binomial and link == lnk.cloglog: + # Can't get gradient to converage with var_weights here + continue + elif family_class == fam.Binomial and link == lnk.log: + # Can't get gradient to converage with var_weights here + continue + elif (family_class, link) == (fam.Poisson, lnk.identity): + lin_pred = 20 + exog.sum(1) + elif (family_class, link) == (fam.Binomial, lnk.log): + lin_pred = -1 + exog.sum(1) / 8 + elif (family_class, link) == (fam.Poisson, lnk.sqrt): + lin_pred = -2 + exog.sum(1) + elif (family_class, link) == (fam.Gamma, lnk.log): + # Can't get gradient to converge with var_weights here + continue + elif (family_class, link) == (fam.Gamma, lnk.identity): + # Can't get gradient to converage with var_weights here + continue + elif (family_class, link) == (fam.Gamma, lnk.inverse_power): + # Can't get gradient to converage with var_weights here + continue + elif (family_class, link) == (fam.Gaussian, lnk.log): + # Can't get gradient to converage with var_weights here + continue + elif (family_class, link) == (fam.Gaussian, lnk.inverse_power): + # Can't get gradient to converage with var_weights here + continue + elif (family_class, link) == (fam.InverseGaussian, lnk.log): + # Can't get gradient to converage with var_weights here + lin_pred = -1 + exog.sum(1) + continue + elif (family_class, link) == (fam.InverseGaussian, + lnk.identity): + # Can't get gradient to converage with var_weights here + lin_pred = 20 + 5*exog.sum(1) + lin_pred = np.clip(lin_pred, 1e-4, np.inf) + continue + elif (family_class, link) == (fam.InverseGaussian, + lnk.inverse_squared): + lin_pred = 0.5 + exog.sum(1) / 5 + continue # skip due to non-convergence + elif (family_class, link) == (fam.InverseGaussian, + lnk.inverse_power): + lin_pred = 1 + exog.sum(1) / 5 + method = 'newton' + elif (family_class, link) == (fam.NegativeBinomial, + lnk.identity): + lin_pred = 20 + 5*exog.sum(1) + lin_pred = np.clip(lin_pred, 1e-3, np.inf) + method = 'newton' + elif (family_class, link) == (fam.NegativeBinomial, + lnk.inverse_squared): + lin_pred = 0.1 + np.random.uniform(size=exog.shape[0]) + continue # skip due to non-convergence + elif (family_class, link) == (fam.NegativeBinomial, + lnk.inverse_power): + # Can't get gradient to converage with var_weights here + lin_pred = 1 + exog.sum(1) / 5 + continue + + elif (family_class, link) == (fam.Gaussian, lnk.inverse_power): + # adding skip because of convergence failure + skip_one = True + else: + lin_pred = np.random.uniform(size=exog.shape[0]) + + endog = gen_endog(lin_pred, family_class, link, binom_version) + if binom_version == 0: + wts = np.ones_like(endog) + tmp = np.random.randint( + 2, + 5, + size=(endog > endog.mean()).sum() + ) + wts[endog > endog.mean()] = tmp + else: + wts = np.ones(shape=endog.shape[0]) + y = endog[:, 0] / endog.sum(axis=1) + tmp = np.random.gamma(2, size=(y > y.mean()).sum()) + wts[y > y.mean()] = tmp + + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + mod_irls = sm.GLM(endog, exog, var_weights=wts, + family=family_class(link=link())) + rslt_irls = mod_irls.fit(method="IRLS", atol=1e-10, + tol_criterion='params') + + # Try with and without starting values. + for max_start_irls, start_params in ((0, rslt_irls.params), + (3, None)): + # TODO: skip convergence failures for now + if max_start_irls > 0 and skip_one: + continue + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + mod_gradient = sm.GLM(endog, exog, var_weights=wts, + family=family_class(link=link())) + rslt_gradient = mod_gradient.fit( + max_start_irls=max_start_irls, + start_params=start_params, + method=method + ) + assert_allclose(rslt_gradient.params, + rslt_irls.params, rtol=1e-6, atol=5e-5) + + assert_allclose(rslt_gradient.llf, rslt_irls.llf, + rtol=1e-6, atol=1e-6) + + assert_allclose(rslt_gradient.scale, rslt_irls.scale, + rtol=1e-6, atol=1e-6) + + # Get the standard errors using expected information. + gradient_bse = rslt_gradient.bse + ehess = mod_gradient.hessian(rslt_gradient.params, + observed=False) + gradient_bse = np.sqrt(-np.diag(np.linalg.inv(ehess))) + assert_allclose(gradient_bse, rslt_irls.bse, rtol=1e-6, + atol=5e-5) + + +def get_dummies(x): + values = np.sort(np.unique(x)) + out = np.zeros(shape=(x.shape[0], len(values) - 1)) + for i, v in enumerate(values): + if i == 0: + continue + out[:, i - 1] = np.where(v == x, 1, 0) + return out + + +class TestRepeatedvsAggregated(CheckWeight): + @classmethod + def setup_class(cls): + np.random.seed(4321) + n = 100 + p = 5 + exog = np.empty((n, p)) + exog[:, 0] = 1 + exog[:, 1] = np.random.randint(low=-5, high=5, size=n) + x = np.repeat(np.array([1, 2, 3, 4]), n / 4) + exog[:, 2:] = get_dummies(x) + beta = np.array([-1, 0.1, -0.05, .2, 0.35]) + lin_pred = (exog * beta).sum(axis=1) + family = sm.families.Poisson + link = sm.families.links.log + endog = gen_endog(lin_pred, family, link) + mod1 = sm.GLM(endog, exog, family=family(link=link())) + cls.res1 = mod1.fit() + + agg = pd.DataFrame(exog) + agg['endog'] = endog + agg_endog = agg.groupby([0, 1, 2, 3, 4]).sum()[['endog']] + agg_wt = agg.groupby([0, 1, 2, 3, 4]).count()[['endog']] + agg_exog = np.array(agg_endog.index.tolist()) + agg_wt = agg_wt['endog'] + agg_endog = agg_endog['endog'] + mod2 = sm.GLM(agg_endog, agg_exog, family=family(link=link()), + exposure=agg_wt) + cls.res2 = mod2.fit() + + +class TestRepeatedvsAverage(CheckWeight): + @classmethod + def setup_class(cls): + np.random.seed(4321) + n = 10000 + p = 5 + exog = np.empty((n, p)) + exog[:, 0] = 1 + exog[:, 1] = np.random.randint(low=-5, high=5, size=n) + x = np.repeat(np.array([1, 2, 3, 4]), n / 4) + exog[:, 2:] = get_dummies(x) + beta = np.array([-1, 0.1, -0.05, .2, 0.35]) + lin_pred = (exog * beta).sum(axis=1) + family = sm.families.Poisson + link = sm.families.links.log + endog = gen_endog(lin_pred, family, link) + mod1 = sm.GLM(endog, exog, family=family(link=link())) + cls.res1 = mod1.fit() + + agg = pd.DataFrame(exog) + agg['endog'] = endog + agg_endog = agg.groupby([0, 1, 2, 3, 4]).sum()[['endog']] + agg_wt = agg.groupby([0, 1, 2, 3, 4]).count()[['endog']] + agg_exog = np.array(agg_endog.index.tolist()) + agg_wt = agg_wt['endog'] + avg_endog = agg_endog['endog'] / agg_wt + mod2 = sm.GLM(avg_endog, agg_exog, family=family(link=link()), + var_weights=agg_wt) + cls.res2 = mod2.fit() + + +class TestTweedieRepeatedvsAggregated(CheckWeight): + @classmethod + def setup_class(cls): + np.random.seed(4321) + n = 10000 + p = 5 + exog = np.empty((n, p)) + exog[:, 0] = 1 + exog[:, 1] = np.random.randint(low=-5, high=5, size=n) + x = np.repeat(np.array([1, 2, 3, 4]), n / 4) + exog[:, 2:] = get_dummies(x) + beta = np.array([7, 0.1, -0.05, .2, 0.35]) + lin_pred = (exog * beta).sum(axis=1) + family = sm.families.Tweedie + link = sm.families.links.log + endog = gen_endog(lin_pred, family, link) + mod1 = sm.GLM(endog, exog, family=family(link=link(), var_power=1.5)) + cls.res1 = mod1.fit(rtol=1e-20, atol=0, tol_criterion='params') + + agg = pd.DataFrame(exog) + agg['endog'] = endog + agg_endog = agg.groupby([0, 1, 2, 3, 4]).sum()[['endog']] + agg_wt = agg.groupby([0, 1, 2, 3, 4]).count()[['endog']] + agg_exog = np.array(agg_endog.index.tolist()) + agg_wt = agg_wt['endog'] + agg_endog = agg_endog['endog'] + mod2 = sm.GLM(agg_endog, agg_exog, + family=family(link=link(), var_power=1.5), + exposure=agg_wt, var_weights=agg_wt ** 0.5) + cls.res2 = mod2.fit(rtol=1e-20, atol=0, tol_criterion='params') + + +class TestTweedieRepeatedvsAverage(CheckWeight): + @classmethod + def setup_class(cls): + np.random.seed(4321) + n = 1000 + p = 5 + exog = np.empty((n, p)) + exog[:, 0] = 1 + exog[:, 1] = np.random.randint(low=-5, high=5, size=n) + x = np.repeat(np.array([1, 2, 3, 4]), n / 4) + exog[:, 2:] = get_dummies(x) + beta = np.array([7, 0.1, -0.05, .2, 0.35]) + lin_pred = (exog * beta).sum(axis=1) + family = sm.families.Tweedie + link = sm.families.links.log + endog = gen_endog(lin_pred, family, link) + mod1 = sm.GLM(endog, exog, family=family(link=link(), var_power=1.5)) + cls.res1 = mod1.fit(rtol=1e-10, atol=0, tol_criterion='params', + scaletype='x2') + + agg = pd.DataFrame(exog) + agg['endog'] = endog + agg_endog = agg.groupby([0, 1, 2, 3, 4]).sum()[['endog']] + agg_wt = agg.groupby([0, 1, 2, 3, 4]).count()[['endog']] + agg_exog = np.array(agg_endog.index.tolist()) + agg_wt = agg_wt['endog'] + avg_endog = agg_endog['endog'] / agg_wt + mod2 = sm.GLM(avg_endog, agg_exog, + family=family(link=link(), var_power=1.5), + var_weights=agg_wt) + cls.res2 = mod2.fit(rtol=1e-10, atol=0, tol_criterion='params') + + +class TestBinomial0RepeatedvsAverage(CheckWeight): + @classmethod + def setup_class(cls): + np.random.seed(4321) + n = 20 + p = 5 + exog = np.empty((n, p)) + exog[:, 0] = 1 + exog[:, 1] = np.random.randint(low=-5, high=5, size=n) + x = np.repeat(np.array([1, 2, 3, 4]), n / 4) + exog[:, 2:] = get_dummies(x) + beta = np.array([-1, 0.1, -0.05, .2, 0.35]) + lin_pred = (exog * beta).sum(axis=1) + family = sm.families.Binomial + link = sm.families.links.logit + endog = gen_endog(lin_pred, family, link, binom_version=0) + mod1 = sm.GLM(endog, exog, family=family(link=link())) + cls.res1 = mod1.fit(rtol=1e-10, atol=0, tol_criterion='params', + scaletype='x2') + + agg = pd.DataFrame(exog) + agg['endog'] = endog + agg_endog = agg.groupby([0, 1, 2, 3, 4]).sum()[['endog']] + agg_wt = agg.groupby([0, 1, 2, 3, 4]).count()[['endog']] + agg_exog = np.array(agg_endog.index.tolist()) + agg_wt = agg_wt['endog'] + avg_endog = agg_endog['endog'] / agg_wt + mod2 = sm.GLM(avg_endog, agg_exog, + family=family(link=link()), + var_weights=agg_wt) + cls.res2 = mod2.fit(rtol=1e-10, atol=0, tol_criterion='params') + + +class TestBinomial0RepeatedvsDuplicated(CheckWeight): + @classmethod + def setup_class(cls): + np.random.seed(4321) + n = 10000 + p = 5 + exog = np.empty((n, p)) + exog[:, 0] = 1 + exog[:, 1] = np.random.randint(low=-5, high=5, size=n) + x = np.repeat(np.array([1, 2, 3, 4]), n / 4) + exog[:, 2:] = get_dummies(x) + beta = np.array([-1, 0.1, -0.05, .2, 0.35]) + lin_pred = (exog * beta).sum(axis=1) + family = sm.families.Binomial + link = sm.families.links.logit + endog = gen_endog(lin_pred, family, link, binom_version=0) + wt = np.random.randint(1, 5, n) + mod1 = sm.GLM(endog, exog, family=family(link=link()), freq_weights=wt) + cls.res1 = mod1.fit() + + exog_dup = np.repeat(exog, wt, axis=0) + endog_dup = np.repeat(endog, wt) + mod2 = sm.GLM(endog_dup, exog_dup, family=family(link=link())) + cls.res2 = mod2.fit() + + +def test_warnings_raised(): + weights = [1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3] + # faking aweights by using normalized freq_weights + weights = np.array(weights) + + gid = np.arange(1, 17 + 1) // 2 + + cov_kwds = {'groups': gid, 'use_correction': False} + + # Work around for buggy pytest repeated warning capture on Python 2.7 + warning_type = SpecificationWarning if PY3 else None + with pytest.warns(warning_type): + res1 = GLM(cpunish_data.endog, cpunish_data.exog, + family=sm.families.Poisson(), freq_weights=weights + ).fit(cov_type='cluster', cov_kwds=cov_kwds) + res1.summary() + + with pytest.warns(warning_type): + res1 = GLM(cpunish_data.endog, cpunish_data.exog, + family=sm.families.Poisson(), var_weights=weights + ).fit(cov_type='cluster', cov_kwds=cov_kwds) + res1.summary() + + +weights = [1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3] + + +@pytest.mark.parametrize('formatted', [weights, np.asarray(weights), pd.Series(weights)], + ids=['list', 'ndarray', 'Series']) +def test_weights_different_formats(formatted): + check_weights_as_formats(formatted) + + +def check_weights_as_formats(weights): + res = GLM(cpunish_data.endog, cpunish_data.exog, + family=sm.families.Poisson(), freq_weights=weights + ).fit() + assert isinstance(res._freq_weights, np.ndarray) + assert isinstance(res._var_weights, np.ndarray) + assert isinstance(res._iweights, np.ndarray) + + res = GLM(cpunish_data.endog, cpunish_data.exog, + family=sm.families.Poisson(), var_weights=weights + ).fit() + assert isinstance(res._freq_weights, np.ndarray) + assert isinstance(res._var_weights, np.ndarray) + assert isinstance(res._iweights, np.ndarray) + + +class TestBinomialVsVarWeights(CheckWeight): + @classmethod + def setup_class(cls): + from statsmodels.datasets.star98 import load + data = load(as_pandas=False) + data.exog /= data.exog.std(0) + data.exog = add_constant(data.exog, prepend=False) + + cls.res1 = GLM(data.endog, data.exog, + family=sm.families.Binomial()).fit() + weights = data.endog.sum(axis=1) + endog2 = data.endog[:, 0] / weights + cls.res2 = GLM(endog2, data.exog, + family=sm.families.Binomial(), + var_weights=weights).fit() + + +class TestGlmGaussianWLS(CheckWeight): + @classmethod + def setup_class(cls): + import statsmodels.formula.api as smf + + data = sm.datasets.cpunish.load_pandas() + endog = data.endog + data = data.exog + data['EXECUTIONS'] = endog + data['INCOME'] /= 1000 + aweights = np.array([1, 2, 3, 4, 5, 4, 3, 2, 1, 2, 3, 4, 5, 4, 3, 2, + 1]) + model = smf.glm( + 'EXECUTIONS ~ INCOME + SOUTH - 1', + data=data, + family=sm.families.Gaussian(link=sm.families.links.identity()), + var_weights=aweights + ) + wlsmodel = smf.wls( + 'EXECUTIONS ~ INCOME + SOUTH - 1', + data=data, + weights=aweights) + cls.res1 = model.fit(rtol=1e-25, atol=1e-25) + cls.res2 = wlsmodel.fit() + + +def test_incompatible_input(): + weights = [1, 1, 1, 2, 2, 2, 3, 3, 3, 1, 1, 1, 2, 2, 2, 3, 3] + exog = cpunish_data.exog + endog = cpunish_data.endog + family = sm.families.Poisson() + # Too short + assert_raises(ValueError, GLM, endog, exog, family=family, + freq_weights=weights[:-1]) + assert_raises(ValueError, GLM, endog, exog, family=family, + var_weights=weights[:-1]) + # Too long + assert_raises(ValueError, GLM, endog, exog, family=family, + freq_weights=weights + [3]) + assert_raises(ValueError, GLM, endog, exog, family=family, + var_weights=weights + [3]) + + # Too many dimensions + assert_raises(ValueError, GLM, endog, exog, family=family, + freq_weights=[weights, weights]) + assert_raises(ValueError, GLM, endog, exog, family=family, + var_weights=[weights, weights]) + + +def test_poisson_residuals(): + nobs, k_exog = 100, 5 + np.random.seed(987125) + x = np.random.randn(nobs, k_exog - 1) + x = add_constant(x) + + y_true = x.sum(1) / 2 + y = y_true + 2 * np.random.randn(nobs) + exposure = 1 + np.arange(nobs) // 4 + + yp = np.random.poisson(np.exp(y_true) * exposure) + yp[10:15] += 10 + + fam = sm.families.Poisson() + mod_poi_e = GLM(yp, x, family=fam, exposure=exposure) + res_poi_e = mod_poi_e.fit() + + mod_poi_w = GLM(yp / exposure, x, family=fam, var_weights=exposure) + res_poi_w = mod_poi_w.fit() + + assert_allclose(res_poi_e.resid_response / exposure, + res_poi_w.resid_response) + assert_allclose(res_poi_e.resid_pearson, res_poi_w.resid_pearson) + assert_allclose(res_poi_e.resid_deviance, res_poi_w.resid_deviance) + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=FutureWarning) + assert_allclose(res_poi_e.resid_anscombe, res_poi_w.resid_anscombe) + assert_allclose(res_poi_e.resid_anscombe_unscaled, + res_poi_w.resid_anscombe) diff --git a/statsmodels/genmod/tests/test_qif.py b/statsmodels/genmod/tests/test_qif.py new file mode 100644 index 0000000..6a0f53f --- /dev/null +++ b/statsmodels/genmod/tests/test_qif.py @@ -0,0 +1,111 @@ +import numpy as np +from numpy.testing import assert_allclose +import pandas as pd +import pytest +from statsmodels.genmod.qif import (QIF, QIFIndependence, QIFExchangeable, + QIFAutoregressive) +from statsmodels.tools.numdiff import approx_fprime +from statsmodels.genmod import families + +@pytest.mark.parametrize("fam", [families.Gaussian(), families.Poisson(), + families.Binomial()]) +@pytest.mark.parametrize("cov_struct", [QIFIndependence(), QIFExchangeable(), + QIFAutoregressive()]) +def test_qif_numdiff(fam, cov_struct): + # Test the analytic scores against numeric derivatives + + np.random.seed(234234) + n = 200 + q = 4 + x = np.random.normal(size=(n, 3)) + if isinstance(fam, families.Gaussian): + e = np.kron(np.random.normal(size=n//q), np.ones(q)) + e = np.sqrt(0.5)*e + np.sqrt(1 - 0.5**2)*np.random.normal(size=n) + y = x.sum(1) + e + elif isinstance(fam, families.Poisson): + y = np.random.poisson(5, size=n) + elif isinstance(fam, families.Binomial): + y = np.random.randint(0, 2, size=n) + g = np.kron(np.arange(n//q), np.ones(q)).astype(np.int) + + model = QIF(y, x, groups=g, family=fam, cov_struct=cov_struct) + + for _ in range(5): + + pt = np.random.normal(size=3) + + # Check the Jacobian of the vector of estimating equations. + _, grad, _, _, gn_deriv = model.objective(pt) + + def llf_gn(params): + return model.objective(params)[3] + gn_numdiff = approx_fprime(pt, llf_gn, 1e-7) + assert_allclose(gn_deriv, gn_numdiff, 1e-4) + + # Check the gradient of the QIF + def llf(params): + return model.objective(params)[0] + grad_numdiff = approx_fprime(pt, llf, 1e-7) + assert_allclose(grad, grad_numdiff, 1e-4) + + +@pytest.mark.parametrize("fam", [families.Gaussian(), families.Poisson(), + families.Binomial()]) +@pytest.mark.parametrize("cov_struct", [QIFIndependence(), QIFExchangeable(), + QIFAutoregressive()]) +def test_qif_fit(fam, cov_struct): + + np.random.seed(234234) + + n = 1000 + q = 4 + params = np.r_[1, -0.5, 0.2] + x = np.random.normal(size=(n, len(params))) + if isinstance(fam, families.Gaussian): + e = np.kron(np.random.normal(size=n//q), np.ones(q)) + e = np.sqrt(0.5)*e + np.sqrt(1 - 0.5**2)*np.random.normal(size=n) + y = np.dot(x, params) + e + elif isinstance(fam, families.Poisson): + lpr = np.dot(x, params) + mean = np.exp(lpr) + y = np.random.poisson(mean) + elif isinstance(fam, families.Binomial): + lpr = np.dot(x, params) + mean = 1 / (1 + np.exp(-lpr)) + y = (np.random.uniform(0, 1, size=n) < mean).astype(np.int) + g = np.kron(np.arange(n // q), np.ones(q)).astype(np.int) + + model = QIF(y, x, groups=g, family=fam, cov_struct=cov_struct) + rslt = model.fit() + + # Slack comparison to population values + assert_allclose(rslt.params, params, atol=0.05, rtol=0.05) + + # Smoke test + _ = rslt.summary() + +@pytest.mark.parametrize("cov_struct", [QIFIndependence(), QIFExchangeable(), + QIFAutoregressive()]) +def test_formula(cov_struct): + + np.random.seed(3423) + + y = np.random.normal(size=100) + x = np.random.normal(size=(100, 2)) + groups = np.kron(np.arange(25), np.ones(4)) + + model1 = QIF(y, x, groups=groups, cov_struct=cov_struct) + result1 = model1.fit() + + df = pd.DataFrame({"y": y, "x1": x[:, 0], "x2": x[:, 1], "groups": groups}) + + model2 = QIF.from_formula("y ~ 0 + x1 + x2", groups="groups", + cov_struct=cov_struct, data=df) + result2 = model2.fit() + + assert_allclose(result1.params, result2.params) + assert_allclose(result1.bse, result2.bse) + + if not isinstance(cov_struct, QIFIndependence): + _ = result2.bic + _ = result2.aic diff --git a/statsmodels/genmod/tests/test_score_test.py b/statsmodels/genmod/tests/test_score_test.py new file mode 100644 index 0000000..dcb6eb3 --- /dev/null +++ b/statsmodels/genmod/tests/test_score_test.py @@ -0,0 +1,191 @@ +# -*- coding: utf-8 -*- +""" +Created on Thu May 31 15:39:15 2018 + +Author: Josef Perktold +""" + + +import numpy as np +from numpy.testing import assert_allclose + +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod import families +from statsmodels.discrete.discrete_model import Poisson +import statsmodels.stats._diagnostic_other as diao +from statsmodels.base._parameter_inference import score_test + + +class TestScoreTest(object): + # compares score to wald, and regression test for pvalues + rtol_ws = 5e-3 + atol_ws = 0 + rtol_wooldridge = 0.004 + dispersed = False # Poisson correctly specified + # regression numbers + res_pvalue = [0.31786373532550893, 0.32654081685271297] + skip_wooldridge = False + res_disptest = np.array([[ 0.13927919, 0.44461477], + [ 0.13927919, 0.44461477], + [ 0.21295545, 0.41568086], + [ 0.14935018, 0.88127732], + [ 0.14935018, 0.88127732], + [ 0.14841761, 0.8820132 ], + [ 0.22836064, 0.81936588]]) + res_disptest_g = [0.052247629593715761, 0.81919738867722225] + + @classmethod + def setup_class(cls): + nobs, k_vars = 500, 5 + + np.random.seed(786452) + x = np.random.randn(nobs, k_vars) + x[:, 0] = 1 + x2 = np.random.randn(nobs, 2) + xx = np.column_stack((x, x2)) + + if cls.dispersed: + het = np.random.randn(nobs) + y = np.random.poisson(np.exp(x.sum(1) * 0.5 + het)) + #y_mc = np.random.negative_binomial(np.exp(x.sum(1) * 0.5), 2) + else: + y = np.random.poisson(np.exp(x.sum(1) * 0.5)) + + cls.exog_extra = x2 + cls.model_full = GLM(y, xx, family=families.Poisson()) + cls.model_drop = GLM(y, x, family=families.Poisson()) + + def test_wald_score(self): + mod_full = self.model_full + mod_drop = self.model_drop + restriction = 'x5=0, x6=0' + res_full = mod_full.fit() + res_constr = mod_full.fit_constrained('x5=0, x6=0') + res_drop = mod_drop.fit() + + wald = res_full.wald_test(restriction) + lm_constr = np.hstack(score_test(res_constr)) + lm_extra = np.hstack(score_test(res_drop, exog_extra=self.exog_extra)) + + res_wald = np.hstack([wald.statistic.squeeze(), wald.pvalue, [wald.df_denom]]) + assert_allclose(lm_constr, res_wald, rtol=self.rtol_ws, atol=self.atol_ws) + assert_allclose(lm_extra, res_wald, rtol=self.rtol_ws, atol=self.atol_ws) + assert_allclose(lm_constr, lm_extra, rtol=1e-12, atol=1e-14) + # regression number + assert_allclose(lm_constr[1], self.res_pvalue[0], rtol=1e-12, atol=1e-14) + + cov_type='HC0' + res_full_hc = mod_full.fit(cov_type=cov_type, start_params=res_full.params) + wald = res_full_hc.wald_test(restriction) + lm_constr = np.hstack(score_test(res_constr, cov_type=cov_type)) + lm_extra = np.hstack(score_test(res_drop, exog_extra=self.exog_extra, + cov_type=cov_type)) + + res_wald = np.hstack([wald.statistic.squeeze(), wald.pvalue, [wald.df_denom]]) + assert_allclose(lm_constr, res_wald, rtol=self.rtol_ws, atol=self.atol_ws) + assert_allclose(lm_extra, res_wald, rtol=self.rtol_ws, atol=self.atol_ws) + assert_allclose(lm_constr, lm_extra, rtol=1e-13) + # regression number + assert_allclose(lm_constr[1], self.res_pvalue[1], rtol=1e-12, atol=1e-14) + + if not self.skip_wooldridge: + # compare with Wooldridge auxiliary regression + # does not work for Poisson, even with family attribute + # diao.lm_test_glm assumes fittedvalues is mean (not linear pred) + lm_wooldridge = diao.lm_test_glm(res_drop, self.exog_extra) + assert_allclose(lm_wooldridge.pval1, self.res_pvalue[0], + rtol=1e-12, atol=1e-14) + assert_allclose(lm_wooldridge.pval3, self.res_pvalue[1], + rtol=self.rtol_wooldridge) + # smoke test + lm_wooldridge.summary() + + def test_dispersion(self): + res_drop = self.model_drop.fit() + res_test = diao.dispersion_poisson(res_drop) + assert_allclose(res_test[0], self.res_disptest, rtol=1e-6, atol=1e-14) + # constant only dispersion + ex = np.ones((res_drop.model.endog.shape[0], 1)) + # ex = np.column_stack((np.ones(res_drop.model.endog.shape[0]), + # res_drop.predict())) # or **2 + # dispersion_poisson_generic might not be correct + # or not clear what the alternative hypothesis is + # choosing different `ex` implies different alternative hypotheses + res_test = diao.dispersion_poisson_generic(res_drop, ex) + assert_allclose(res_test, self.res_disptest_g, rtol=1e-6, atol=1e-14) + + +class TestScoreTestDispersed(TestScoreTest): + rtol_ws = 0.11 + atol_ws = 0.015 + rtol_wooldridge = 0.03 + dispersed = True # Poisson is mis-specified + res_pvalue = [5.412978775609189e-14, 0.05027602575743518] + res_disptest = np.array([[ 1.26473634e+02, 0.00000000e+00], + [ 1.26473634e+02, 0.00000000e+00], + [ 1.19393621e+02, 0.00000000e+00], + [ 4.53940519e+00, 5.64131397e-06], + [ 4.53940519e+00, 5.64131397e-06], + [ 2.98154154e+00, 2.86801135e-03], + [ 4.27569194e+00, 1.90544551e-05]]) + res_disptest_g = [17.670784788586968, 2.6262956791721383e-05] + + +class TestScoreTestPoisson(TestScoreTest): + # compares score to wald, and regression test for pvalues + rtol_ws = 5e-3 + atol_ws = 0 + rtol_wooldridge = 0.004 + dispersed = False # Poisson correctly specified + # regression numbers + res_pvalue = [0.31786373532550893, 0.32654081685271297] + skip_wooldridge = False + res_disptest = np.array([[ 0.13927919, 0.44461477], + [ 0.13927919, 0.44461477], + [ 0.21295545, 0.41568086], + [ 0.14935018, 0.88127732], + [ 0.14935018, 0.88127732], + [ 0.14841761, 0.8820132 ], + [ 0.22836064, 0.81936588]]) + res_disptest_g = [0.052247629593715761, 0.81919738867722225] + + @classmethod + def setup_class(cls): + # copy-paste except for model + nobs, k_vars = 500, 5 + + np.random.seed(786452) + x = np.random.randn(nobs, k_vars) + x[:, 0] = 1 + x2 = np.random.randn(nobs, 2) + xx = np.column_stack((x, x2)) + + if cls.dispersed: + het = np.random.randn(nobs) + y = np.random.poisson(np.exp(x.sum(1) * 0.5 + het)) + #y_mc = np.random.negative_binomial(np.exp(x.sum(1) * 0.5), 2) + else: + y = np.random.poisson(np.exp(x.sum(1) * 0.5)) + + cls.exog_extra = x2 + cls.model_full = Poisson(y, xx) + cls.model_drop = Poisson(y, x) + + def test_wald_score(self): + super(TestScoreTestPoisson, self).test_wald_score() + + +class TestScoreTestPoissonDispersed(TestScoreTestPoisson): + rtol_ws = 0.11 + atol_ws = 0.015 + rtol_wooldridge = 0.03 + dispersed = True # Poisson is mis-specified + res_pvalue = [5.412978775609189e-14, 0.05027602575743518] + res_disptest = np.array([[ 1.26473634e+02, 0.00000000e+00], + [ 1.26473634e+02, 0.00000000e+00], + [ 1.19393621e+02, 0.00000000e+00], + [ 4.53940519e+00, 5.64131397e-06], + [ 4.53940519e+00, 5.64131397e-06], + [ 2.98154154e+00, 2.86801135e-03], + [ 4.27569194e+00, 1.90544551e-05]]) + res_disptest_g = [17.670784788586968, 2.6262956791721383e-05] diff --git a/statsmodels/graphics/__init__.py b/statsmodels/graphics/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/graphics/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/graphics/_regressionplots_doc.py b/statsmodels/graphics/_regressionplots_doc.py new file mode 100644 index 0000000..4c26867 --- /dev/null +++ b/statsmodels/graphics/_regressionplots_doc.py @@ -0,0 +1,214 @@ +_plot_added_variable_doc = """\ + Create an added variable plot for a fitted regression model. + + Parameters + ---------- + %(extra_params_doc)sfocus_exog : int or string + The column index of exog, or a variable name, indicating the + variable whose role in the regression is to be assessed. + resid_type : string + The type of residuals to use for the dependent variable. If + None, uses `resid_deviance` for GLM/GEE and `resid` otherwise. + use_glm_weights : bool + Only used if the model is a GLM or GEE. If True, the + residuals for the focus predictor are computed using WLS, with + the weights obtained from the IRLS calculations for fitting + the GLM. If False, unweighted regression is used. + fit_kwargs : dict, optional + Keyword arguments to be passed to fit when refitting the + model. + ax : Axes instance + Matplotlib Axes instance + + Returns + ------- + fig : matplotlib Figure + A matplotlib figure instance. +""" + +_plot_partial_residuals_doc = """\ + Create a partial residual, or 'component plus residual' plot for a + fited regression model. + + Parameters + ---------- + %(extra_params_doc)sfocus_exog : int or string + The column index of exog, or variable name, indicating the + variable whose role in the regression is to be assessed. + ax : Axes instance + Matplotlib Axes instance + + Returns + ------- + fig : matplotlib Figure + A matplotlib figure instance. +""" + +_plot_ceres_residuals_doc = """\ + Produces a CERES (Conditional Expectation Partial Residuals) + plot for a fitted regression model. + + Parameters + ---------- + %(extra_params_doc)sfocus_exog : integer or string + The column index of results.model.exog, or the variable name, + indicating the variable whose role in the regression is to be + assessed. + frac : float + Lowess tuning parameter for the adjusted model used in the + CERES analysis. Not used if `cond_means` is provided. + cond_means : array-like, optional + If provided, the columns of this array span the space of the + conditional means E[exog | focus exog], where exog ranges over + some or all of the columns of exog (other than the focus exog). + ax : matplotlib.Axes instance, optional + The axes on which to draw the plot. If not provided, a new + axes instance is created. + + Returns + ------- + fig : matplotlib.Figure instance + The figure on which the partial residual plot is drawn. + + References + ---------- + RD Cook and R Croos-Dabrera (1998). Partial residual plots in + generalized linear models. Journal of the American + Statistical Association, 93:442. + + RD Cook (1993). Partial residual plots. Technometrics 35:4. + + Notes + ----- + `cond_means` is intended to capture the behavior of E[x1 | + x2], where x2 is the focus exog and x1 are all the other exog + variables. If all the conditional mean relationships are + linear, it is sufficient to set cond_means equal to the focus + exog. Alternatively, cond_means may consist of one or more + columns containing functional transformations of the focus + exog (e.g. x2^2) that are thought to capture E[x1 | x2]. + + If nothing is known or suspected about the form of E[x1 | x2], + set `cond_means` to None, and it will be estimated by + smoothing each non-focus exog against the focus exog. The + values of `frac` control these lowess smooths. + + If cond_means contains only the focus exog, the results are + equivalent to a partial residual plot. + + If the focus variable is believed to be independent of the + other exog variables, `cond_means` can be set to an (empty) + nx0 array. + + Examples + -------- + Using a model built from the the state crime dataset, make a CERES plot with + the rate of Poverty as the focus variable. + + >>> import statsmodels.api as sm + >>> import matplotlib.pyplot as plt + >>> import statsmodels.formula.api as smf + >>> from statsmodels.graphics.regressionplots import plot_ceres_residuals + + >>> crime_data = sm.datasets.statecrime.load_pandas() + >>> results = smf.ols('murder ~ hs_grad + urban + poverty + single', + ... data=crime_data.data).fit() + >>> plot_ceres_residuals(results, 'poverty') + >>> plt.show() + + .. plot:: plots/graphics_regression_ceres_residuals.py +""" + + +_plot_influence_doc = """\ + Plot of influence in regression. Plots studentized resids vs. leverage. + + Parameters + ---------- + %(extra_params_doc)external : bool + Whether to use externally or internally studentized residuals. It is + recommended to leave external as True. + alpha : float + The alpha value to identify large studentized residuals. Large means + abs(resid_studentized) > t.ppf(1-alpha/2, dof=results.df_resid) + criterion : str {{'DFFITS', 'Cooks'}} + Which criterion to base the size of the points on. Options are + DFFITS or Cook's D. + size : float + The range of `criterion` is mapped to 10**2 - size**2 in points. + plot_alpha : float + The `alpha` of the plotted points. + ax : matplotlib Axes instance + An instance of a matplotlib Axes. + + Returns + ------- + fig : matplotlib figure + The matplotlib figure that contains the Axes. + + Notes + ----- + Row labels for the observations in which the leverage, measured by the + diagonal of the hat matrix, is high or the residuals are large, as the + combination of large residuals and a high influence value indicates an + influence point. The value of large residuals can be controlled using the + `alpha` parameter. Large leverage points are identified as + hat_i > 2 * (df_model + 1)/nobs. + + Examples + -------- + Using a model built from the the state crime dataset, plot the influence in + regression. Observations with high leverage, or large residuals will be + labeled in the plot to show potential influence points. + + >>> import statsmodels.api as sm + >>> import matplotlib.pyplot as plt + >>> import statsmodels.formula.api as smf + + >>> crime_data = sm.datasets.statecrime.load_pandas() + >>> results = smf.ols('murder ~ hs_grad + urban + poverty + single', + ... data=crime_data.data).fit() + >>> sm.graphics.influence_plot(results) + >>> plt.show() + + .. plot:: plots/graphics_regression_influence.py + + """ + + +_plot_leverage_resid2_doc = """\ + Plots leverage statistics vs. normalized residuals squared + + Parameters + ---------- + results : results instance + A regression results instance + alpha : float + Specifies the cut-off for large-standardized residuals. Residuals + are assumed to be distributed N(0, 1) with alpha=alpha. + ax : Axes instance + Matplotlib Axes instance + + Returns + ------- + fig : matplotlib Figure + A matplotlib figure instance. + + Examples + -------- + Using a model built from the the state crime dataset, plot the leverage + statistics vs. normalized residuals squared. Observations with + Large-standardized Residuals will be labeled in the plot. + + >>> import statsmodels.api as sm + >>> import matplotlib.pyplot as plt + >>> import statsmodels.formula.api as smf + + >>> crime_data = sm.datasets.statecrime.load_pandas() + >>> results = smf.ols('murder ~ hs_grad + urban + poverty + single', + ... data=crime_data.data).fit() + >>> sm.graphics.plot_leverage_resid2(results) + >>> plt.show() + + .. plot:: plots/graphics_regression_leverage_resid2.py + """ diff --git a/statsmodels/graphics/agreement.py b/statsmodels/graphics/agreement.py new file mode 100644 index 0000000..8e7275e --- /dev/null +++ b/statsmodels/graphics/agreement.py @@ -0,0 +1,152 @@ +''' +Bland-Altman mean-difference plots + +Author: Joses Ho +License: BSD-3 +''' + +import numpy as np +from . import utils + +def mean_diff_plot(m1, m2, sd_limit=1.96, ax=None, scatter_kwds=None, + mean_line_kwds=None, limit_lines_kwds=None): + """ + Tukey's Mean Difference Plot. + + Tukey's Mean Difference Plot (also known as a Bland-Altman plot) is a + graphical method to analyze the differences between two methods of + measurement. The mean of the measures is plotted against their difference. + + For more information see + https://en.wikipedia.org/wiki/Bland-Altman_plot + + Parameters + ---------- + m1, m2: pandas Series or array-like + sd_limit : float, default 1.96 + The limit of agreements expressed in terms of the standard deviation of + the differences. If `md` is the mean of the differences, and `sd` is + the standard deviation of those differences, then the limits of + agreement that will be plotted will be + + md - sd_limit * sd, md + sd_limit * sd + + The default of 1.96 will produce 95% confidence intervals for the means + of the differences. + If sd_limit = 0, no limits will be plotted, and the ylimit of the plot + defaults to 3 standard deviatons on either side of the mean. + ax: matplotlib AxesSubplot instance, optional + If `ax` is None, then a figure is created. If an axis instance is + given, the mean difference plot is drawn on the axis. + scatter_kwargs: keywords + Options to to style the scatter plot. Accepts any keywords for the + matplotlib Axes.scatter plotting method + mean_line_kwds: keywords + Options to to style the scatter plot. Accepts any keywords for the + matplotlib Axes.axhline plotting method + limit_lines_kwds: keywords + Options to to style the scatter plot. Accepts any keywords for the + matplotlib Axes.axhline plotting method + + Returns + ------- + fig : matplotlib Figure + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + + References + ---------- + Bland JM, Altman DG (1986). "Statistical methods for assessing agreement + between two methods of clinical measurement" + + Examples + -------- + + Load relevant libraries. + + >>> import statsmodels.api as sm + >>> import numpy as np + >>> import matplotlib.pyplot as plt + + Making a mean difference plot. + + >>> # Seed the random number generator. + >>> # This ensures that the results below are reproducible. + >>> np.random.seed(9999) + >>> m1 = np.random.random(20) + >>> m2 = np.random.random(20) + >>> f, ax = plt.subplots(1, figsize = (8,5)) + >>> sm.graphics.mean_diff_plot(m1, m2, ax = ax) + >>> plt.show() + + .. plot:: plots/graphics-mean_diff_plot.py + """ + fig, ax = utils.create_mpl_ax(ax) + + if len(m1) != len(m2): + raise ValueError('m1 does not have the same length as m2.') + if sd_limit < 0: + raise ValueError('sd_limit ({}) is less than 0.'.format(sd_limit)) + + means = np.mean([m1, m2], axis=0) + diffs = m1 - m2 + mean_diff = np.mean(diffs) + std_diff = np.std(diffs, axis=0) + + scatter_kwds = scatter_kwds or {} + if 's' not in scatter_kwds: + scatter_kwds['s'] = 20 + mean_line_kwds = mean_line_kwds or {} + limit_lines_kwds = limit_lines_kwds or {} + for kwds in [mean_line_kwds, limit_lines_kwds]: + if 'color' not in kwds: + kwds['color'] = 'gray' + if 'linewidth' not in kwds: + kwds['linewidth'] = 1 + if 'linestyle' not in mean_line_kwds: + kwds['linestyle'] = '--' + if 'linestyle' not in limit_lines_kwds: + kwds['linestyle'] = ':' + + ax.scatter(means, diffs, **scatter_kwds) # Plot the means against the diffs. + ax.axhline(mean_diff, **mean_line_kwds) # draw mean line. + + # Annotate mean line with mean difference. + ax.annotate('mean diff:\n{}'.format(np.round(mean_diff, 2)), + xy=(0.99, 0.5), + horizontalalignment='right', + verticalalignment='center', + fontsize=14, + xycoords='axes fraction') + + if sd_limit > 0: + half_ylim = (1.5 * sd_limit) * std_diff + ax.set_ylim(mean_diff - half_ylim, + mean_diff + half_ylim) + limit_of_agreement = sd_limit * std_diff + lower = mean_diff - limit_of_agreement + upper = mean_diff + limit_of_agreement + for j, lim in enumerate([lower, upper]): + ax.axhline(lim, **limit_lines_kwds) + ax.annotate('-SD{}: {}'.format(sd_limit, np.round(lower, 2)), + xy=(0.99, 0.07), + horizontalalignment='right', + verticalalignment='bottom', + fontsize=14, + xycoords='axes fraction') + ax.annotate('+SD{}: {}'.format(sd_limit, np.round(upper, 2)), + xy=(0.99, 0.92), + horizontalalignment='right', + fontsize=14, + xycoords='axes fraction') + + elif sd_limit == 0: + half_ylim = 3 * std_diff + ax.set_ylim(mean_diff - half_ylim, + mean_diff + half_ylim) + + ax.set_ylabel('Difference', fontsize=15) + ax.set_xlabel('Means', fontsize=15) + ax.tick_params(labelsize=13) + fig.tight_layout() + return fig diff --git a/statsmodels/graphics/api.py b/statsmodels/graphics/api.py new file mode 100644 index 0000000..dfa4ec3 --- /dev/null +++ b/statsmodels/graphics/api.py @@ -0,0 +1,13 @@ +# flake8: noqa +from .functional import hdrboxplot, fboxplot, rainbowplot +from .correlation import plot_corr, plot_corr_grid +from .gofplots import qqplot +from .boxplots import violinplot, beanplot +from .regressionplots import (abline_plot, plot_regress_exog, plot_fit, + plot_partregress, plot_partregress_grid, + plot_ccpr, plot_ccpr_grid, influence_plot, + plot_leverage_resid2) +from .factorplots import interaction_plot +from .plottools import rainbow +from . import tsaplots as tsa +from .agreement import mean_diff_plot diff --git a/statsmodels/graphics/boxplots.py b/statsmodels/graphics/boxplots.py new file mode 100644 index 0000000..6a46b1e --- /dev/null +++ b/statsmodels/graphics/boxplots.py @@ -0,0 +1,422 @@ +"""Variations on boxplots.""" + +# Author: Ralf Gommers +# Based on code by Flavio Coelho and Teemu Ikonen. + +from statsmodels.compat.python import zip +import numpy as np +from scipy.stats import gaussian_kde + +from . import utils + + +__all__ = ['violinplot', 'beanplot'] + + +def violinplot(data, ax=None, labels=None, positions=None, side='both', + show_boxplot=True, plot_opts={}): + """Make a violin plot of each dataset in the `data` sequence. + + A violin plot is a boxplot combined with a kernel density estimate of the + probability density function per point. + + Parameters + ---------- + data : sequence of ndarrays + Data arrays, one array per value in `positions`. + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure being + created. + labels : list of str, optional + Tick labels for the horizontal axis. If not given, integers + ``1..len(data)`` are used. + positions : array_like, optional + Position array, used as the horizontal axis of the plot. If not given, + spacing of the violins will be equidistant. + side : {'both', 'left', 'right'}, optional + How to plot the violin. Default is 'both'. The 'left', 'right' + options can be used to create asymmetric violin plots. + show_boxplot : bool, optional + Whether or not to show normal box plots on top of the violins. + Default is True. + plot_opts : dict, optional + A dictionary with plotting options. Any of the following can be + provided, if not present in `plot_opts` the defaults will be used:: + + - 'violin_fc', MPL color. Fill color for violins. Default is 'y'. + - 'violin_ec', MPL color. Edge color for violins. Default is 'k'. + - 'violin_lw', scalar. Edge linewidth for violins. Default is 1. + - 'violin_alpha', float. Transparancy of violins. Default is 0.5. + - 'cutoff', bool. If True, limit violin range to data range. + Default is False. + - 'cutoff_val', scalar. Where to cut off violins if `cutoff` is + True. Default is 1.5 standard deviations. + - 'cutoff_type', {'std', 'abs'}. Whether cutoff value is absolute, + or in standard deviations. Default is 'std'. + - 'violin_width' : float. Relative width of violins. Max available + space is 1, default is 0.8. + - 'label_fontsize', MPL fontsize. Adjusts fontsize only if given. + - 'label_rotation', scalar. Adjusts label rotation only if given. + Specify in degrees. + - 'bw_factor', Adjusts the scipy gaussian_kde kernel. default: None. + Options for scalar or callable. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + + See Also + -------- + beanplot : Bean plot, builds on `violinplot`. + matplotlib.pyplot.boxplot : Standard boxplot. + + Notes + ----- + The appearance of violins can be customized with `plot_opts`. If + customization of boxplot elements is required, set `show_boxplot` to False + and plot it on top of the violins by calling the Matplotlib `boxplot` + function directly. For example:: + + violinplot(data, ax=ax, show_boxplot=False) + ax.boxplot(data, sym='cv', whis=2.5) + + It can happen that the axis labels or tick labels fall outside the plot + area, especially with rotated labels on the horizontal axis. With + Matplotlib 1.1 or higher, this can easily be fixed by calling + ``ax.tight_layout()``. With older Matplotlib one has to use ``plt.rc`` or + ``plt.rcParams`` to fix this, for example:: + + plt.rc('figure.subplot', bottom=0.25) + violinplot(data, ax=ax) + + References + ---------- + J.L. Hintze and R.D. Nelson, "Violin Plots: A Box Plot-Density Trace + Synergism", The American Statistician, Vol. 52, pp.181-84, 1998. + + Examples + -------- + We use the American National Election Survey 1996 dataset, which has Party + Identification of respondents as independent variable and (among other + data) age as dependent variable. + + >>> data = sm.datasets.anes96.load_pandas() + >>> party_ID = np.arange(7) + >>> labels = ["Strong Democrat", "Weak Democrat", "Independent-Democrat", + ... "Independent-Indpendent", "Independent-Republican", + ... "Weak Republican", "Strong Republican"] + + Group age by party ID, and create a violin plot with it: + + >>> plt.rcParams['figure.subplot.bottom'] = 0.23 # keep labels visible + >>> age = [data.exog['age'][data.endog == id] for id in party_ID] + >>> fig = plt.figure() + >>> ax = fig.add_subplot(111) + >>> sm.graphics.violinplot(age, ax=ax, labels=labels, + ... plot_opts={'cutoff_val':5, 'cutoff_type':'abs', + ... 'label_fontsize':'small', + ... 'label_rotation':30}) + >>> ax.set_xlabel("Party identification of respondent.") + >>> ax.set_ylabel("Age") + >>> plt.show() + + .. plot:: plots/graphics_boxplot_violinplot.py + + """ + + if np.size(data) == 0: + msg = "No Data to make Violin: Try again!" + raise ValueError(msg) + + fig, ax = utils.create_mpl_ax(ax) + + data = list(map(np.asarray, data)) + if positions is None: + positions = np.arange(len(data)) + 1 + + # Determine available horizontal space for each individual violin. + pos_span = np.max(positions) - np.min(positions) + width = np.min([0.15 * np.max([pos_span, 1.]), + plot_opts.get('violin_width', 0.8) / 2.]) + + # Plot violins. + for pos_data, pos in zip(data, positions): + xvals, violin = _single_violin(ax, pos, pos_data, width, side, + plot_opts) + + if show_boxplot: + ax.boxplot(data, notch=1, positions=positions, vert=1) + + # Set ticks and tick labels of horizontal axis. + _set_ticks_labels(ax, data, labels, positions, plot_opts) + + return fig + + +def _single_violin(ax, pos, pos_data, width, side, plot_opts): + """""" + bw_factor = plot_opts.get('bw_factor', None) + + def _violin_range(pos_data, plot_opts): + """Return array with correct range, with which violins can be plotted.""" + cutoff = plot_opts.get('cutoff', False) + cutoff_type = plot_opts.get('cutoff_type', 'std') + cutoff_val = plot_opts.get('cutoff_val', 1.5) + + s = 0.0 + if not cutoff: + if cutoff_type == 'std': + s = cutoff_val * np.std(pos_data) + else: + s = cutoff_val + + x_lower = kde.dataset.min() - s + x_upper = kde.dataset.max() + s + return np.linspace(x_lower, x_upper, 100) + + pos_data = np.asarray(pos_data) + # Kernel density estimate for data at this position. + kde = gaussian_kde(pos_data, bw_method=bw_factor) + + # Create violin for pos, scaled to the available space. + xvals = _violin_range(pos_data, plot_opts) + violin = kde.evaluate(xvals) + violin = width * violin / violin.max() + + if side == 'both': + envelope_l, envelope_r = (-violin + pos, violin + pos) + elif side == 'right': + envelope_l, envelope_r = (pos, violin + pos) + elif side == 'left': + envelope_l, envelope_r = (-violin + pos, pos) + else: + msg = "`side` parameter should be one of {'left', 'right', 'both'}." + raise ValueError(msg) + + # Draw the violin. + ax.fill_betweenx(xvals, envelope_l, envelope_r, + facecolor=plot_opts.get('violin_fc', '#66c2a5'), + edgecolor=plot_opts.get('violin_ec', 'k'), + lw=plot_opts.get('violin_lw', 1), + alpha=plot_opts.get('violin_alpha', 0.5)) + + return xvals, violin + + +def _set_ticks_labels(ax, data, labels, positions, plot_opts): + """Set ticks and labels on horizontal axis.""" + + # Set xticks and limits. + ax.set_xlim([np.min(positions) - 0.5, np.max(positions) + 0.5]) + ax.set_xticks(positions) + + label_fontsize = plot_opts.get('label_fontsize') + label_rotation = plot_opts.get('label_rotation') + if label_fontsize or label_rotation: + from matplotlib.artist import setp + + if labels is not None: + if not len(labels) == len(data): + msg = "Length of `labels` should equal length of `data`." + raise ValueError(msg) + + xticknames = ax.set_xticklabels(labels) + if label_fontsize: + setp(xticknames, fontsize=label_fontsize) + + if label_rotation: + setp(xticknames, rotation=label_rotation) + + return + + +def beanplot(data, ax=None, labels=None, positions=None, side='both', + jitter=False, plot_opts={}): + """Make a bean plot of each dataset in the `data` sequence. + + A bean plot is a combination of a `violinplot` (kernel density estimate of + the probability density function per point) with a line-scatter plot of all + individual data points. + + Parameters + ---------- + data : sequence of ndarrays + Data arrays, one array per value in `positions`. + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure being + created. + labels : list of str, optional + Tick labels for the horizontal axis. If not given, integers + ``1..len(data)`` are used. + positions : array_like, optional + Position array, used as the horizontal axis of the plot. If not given, + spacing of the violins will be equidistant. + side : {'both', 'left', 'right'}, optional + How to plot the violin. Default is 'both'. The 'left', 'right' + options can be used to create asymmetric violin plots. + jitter : bool, optional + If True, jitter markers within violin instead of plotting regular lines + around the center. This can be useful if the data is very dense. + plot_opts : dict, optional + A dictionary with plotting options. All the options for `violinplot` + can be specified, they will simply be passed to `violinplot`. Options + specific to `beanplot` are: + + - 'violin_width' : float. Relative width of violins. Max available + space is 1, default is 0.8. + - 'bean_color', MPL color. Color of bean plot lines. Default is 'k'. + Also used for jitter marker edge color if `jitter` is True. + - 'bean_size', scalar. Line length as a fraction of maximum length. + Default is 0.5. + - 'bean_lw', scalar. Linewidth, default is 0.5. + - 'bean_show_mean', bool. If True (default), show mean as a line. + - 'bean_show_median', bool. If True (default), show median as a + marker. + - 'bean_mean_color', MPL color. Color of mean line. Default is 'b'. + - 'bean_mean_lw', scalar. Linewidth of mean line, default is 2. + - 'bean_mean_size', scalar. Line length as a fraction of maximum length. + Default is 0.5. + - 'bean_median_color', MPL color. Color of median marker. Default + is 'r'. + - 'bean_median_marker', MPL marker. Marker type, default is '+'. + - 'jitter_marker', MPL marker. Marker type for ``jitter=True``. + Default is 'o'. + - 'jitter_marker_size', int. Marker size. Default is 4. + - 'jitter_fc', MPL color. Jitter marker face color. Default is None. + - 'bean_legend_text', str. If given, add a legend with given text. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + + See Also + -------- + violinplot : Violin plot, also used internally in `beanplot`. + matplotlib.pyplot.boxplot : Standard boxplot. + + References + ---------- + P. Kampstra, "Beanplot: A Boxplot Alternative for Visual Comparison of + Distributions", J. Stat. Soft., Vol. 28, pp. 1-9, 2008. + + Examples + -------- + We use the American National Election Survey 1996 dataset, which has Party + Identification of respondents as independent variable and (among other + data) age as dependent variable. + + >>> data = sm.datasets.anes96.load_pandas() + >>> party_ID = np.arange(7) + >>> labels = ["Strong Democrat", "Weak Democrat", "Independent-Democrat", + ... "Independent-Indpendent", "Independent-Republican", + ... "Weak Republican", "Strong Republican"] + + Group age by party ID, and create a violin plot with it: + + >>> plt.rcParams['figure.subplot.bottom'] = 0.23 # keep labels visible + >>> age = [data.exog['age'][data.endog == id] for id in party_ID] + >>> fig = plt.figure() + >>> ax = fig.add_subplot(111) + >>> sm.graphics.beanplot(age, ax=ax, labels=labels, + ... plot_opts={'cutoff_val':5, 'cutoff_type':'abs', + ... 'label_fontsize':'small', + ... 'label_rotation':30}) + >>> ax.set_xlabel("Party identification of respondent.") + >>> ax.set_ylabel("Age") + >>> plt.show() + + .. plot:: plots/graphics_boxplot_beanplot.py + + """ + fig, ax = utils.create_mpl_ax(ax) + + data = list(map(np.asarray, data)) + if positions is None: + positions = np.arange(len(data)) + 1 + + # Determine available horizontal space for each individual violin. + pos_span = np.max(positions) - np.min(positions) + violin_width = np.min([0.15 * np.max([pos_span, 1.]), + plot_opts.get('violin_width', 0.8) / 2.]) + bean_width = np.min([0.15 * np.max([pos_span, 1.]), + plot_opts.get('bean_size', 0.5) / 2.]) + bean_mean_width = np.min([0.15 * np.max([pos_span, 1.]), + plot_opts.get('bean_mean_size', 0.5) / 2.]) + + legend_txt = plot_opts.get('bean_legend_text', None) + for pos_data, pos in zip(data, positions): + # Draw violins. + xvals, violin = _single_violin(ax, pos, pos_data, violin_width, side, plot_opts) + + if jitter: + # Draw data points at random coordinates within violin envelope. + jitter_coord = pos + _jitter_envelope(pos_data, xvals, violin, side) + ax.plot(jitter_coord, pos_data, ls='', + marker=plot_opts.get('jitter_marker', 'o'), + ms=plot_opts.get('jitter_marker_size', 4), + mec=plot_opts.get('bean_color', 'k'), + mew=1, mfc=plot_opts.get('jitter_fc', 'none'), + label=legend_txt) + else: + # Draw bean lines. + ax.hlines(pos_data, pos - bean_width, pos + bean_width, + lw=plot_opts.get('bean_lw', 0.5), + color=plot_opts.get('bean_color', 'k'), + label=legend_txt) + + # Show legend if required. + if legend_txt is not None: + _show_legend(ax) + legend_txt = None # ensure we get one entry per call to beanplot + + # Draw mean line. + if plot_opts.get('bean_show_mean', True): + ax.hlines(np.mean(pos_data), pos - bean_mean_width, pos + bean_mean_width, + lw=plot_opts.get('bean_mean_lw', 2.), + color=plot_opts.get('bean_mean_color', 'b')) + + # Draw median marker. + if plot_opts.get('bean_show_median', True): + ax.plot(pos, np.median(pos_data), + marker=plot_opts.get('bean_median_marker', '+'), + color=plot_opts.get('bean_median_color', 'r')) + + # Set ticks and tick labels of horizontal axis. + _set_ticks_labels(ax, data, labels, positions, plot_opts) + + return fig + + +def _jitter_envelope(pos_data, xvals, violin, side): + """Determine envelope for jitter markers.""" + if side == 'both': + low, high = (-1., 1.) + elif side == 'right': + low, high = (0, 1.) + elif side == 'left': + low, high = (-1., 0) + else: + raise ValueError("`side` input incorrect: %s" % side) + + jitter_envelope = np.interp(pos_data, xvals, violin) + jitter_coord = jitter_envelope * np.random.uniform(low=low, high=high, + size=pos_data.size) + + return jitter_coord + + +def _show_legend(ax): + """Utility function to show legend.""" + leg = ax.legend(loc=1, shadow=True, fancybox=True, labelspacing=0.2, + borderpad=0.15) + ltext = leg.get_texts() + llines = leg.get_lines() + frame = leg.get_frame() + + from matplotlib.artist import setp + setp(ltext, fontsize='small') + setp(llines, linewidth=1) diff --git a/statsmodels/graphics/correlation.py b/statsmodels/graphics/correlation.py new file mode 100644 index 0000000..21ae503 --- /dev/null +++ b/statsmodels/graphics/correlation.py @@ -0,0 +1,219 @@ +'''correlation plots + +Author: Josef Perktold +License: BSD-3 + +example for usage with different options in +statsmodels/sandbox/examples/thirdparty/ex_ratereturn.py + +''' +import numpy as np + +from . import utils + + +def plot_corr(dcorr, xnames=None, ynames=None, title=None, normcolor=False, + ax=None, cmap='RdYlBu_r'): + """Plot correlation of many variables in a tight color grid. + + Parameters + ---------- + dcorr : ndarray + Correlation matrix, square 2-D array. + xnames : list of str, optional + Labels for the horizontal axis. If not given (None), then the + matplotlib defaults (integers) are used. If it is an empty list, [], + then no ticks and labels are added. + ynames : list of str, optional + Labels for the vertical axis. Works the same way as `xnames`. + If not given, the same names as for `xnames` are re-used. + title : str, optional + The figure title. If None, the default ('Correlation Matrix') is used. + If ``title=''``, then no title is added. + normcolor : bool or tuple of scalars, optional + If False (default), then the color coding range corresponds to the + range of `dcorr`. If True, then the color range is normalized to + (-1, 1). If this is a tuple of two numbers, then they define the range + for the color bar. + ax : Matplotlib AxesSubplot instance, optional + If `ax` is None, then a figure is created. If an axis instance is + given, then only the main plot but not the colorbar is created. + cmap : str or Matplotlib Colormap instance, optional + The colormap for the plot. Can be any valid Matplotlib Colormap + instance or name. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + + Examples + -------- + >>> import numpy as np + >>> import matplotlib.pyplot as plt + >>> import statsmodels.graphics.api as smg + + >>> hie_data = sm.datasets.randhie.load_pandas() + >>> corr_matrix = np.corrcoef(hie_data.data.T) + >>> smg.plot_corr(corr_matrix, xnames=hie_data.names) + >>> plt.show() + + ..plot :: plots/graphics_correlation_plot_corr.py + """ + if ax is None: + create_colorbar = True + else: + create_colorbar = False + + fig, ax = utils.create_mpl_ax(ax) + + nvars = dcorr.shape[0] + + if ynames is None: + ynames = xnames + if title is None: + title = 'Correlation Matrix' + if isinstance(normcolor, tuple): + vmin, vmax = normcolor + elif normcolor: + vmin, vmax = -1.0, 1.0 + else: + vmin, vmax = None, None + + axim = ax.imshow(dcorr, cmap=cmap, interpolation='nearest', + extent=(0,nvars,0,nvars), vmin=vmin, vmax=vmax) + + # create list of label positions + labelPos = np.arange(0, nvars) + 0.5 + + if ynames is not None: + ax.set_yticks(labelPos) + ax.set_yticks(labelPos[:-1]+0.5, minor=True) + ax.set_yticklabels(ynames[::-1], fontsize='small', + horizontalalignment='right') + elif ynames == []: + ax.set_yticks([]) + + if xnames is not None: + ax.set_xticks(labelPos) + ax.set_xticks(labelPos[:-1]+0.5, minor=True) + ax.set_xticklabels(xnames, fontsize='small', rotation=45, + horizontalalignment='right') + elif xnames == []: + ax.set_xticks([]) + + if not title == '': + ax.set_title(title) + + if create_colorbar: + fig.colorbar(axim, use_gridspec=True) + fig.tight_layout() + + ax.tick_params(which='minor', length=0) + ax.tick_params(direction='out', top=False, right=False) + try: + ax.grid(True, which='minor', linestyle='-', color='w', lw=1) + except AttributeError: + # Seems to fail for axes created with AxesGrid. MPL bug? + pass + + return fig + + +def plot_corr_grid(dcorrs, titles=None, ncols=None, normcolor=False, xnames=None, + ynames=None, fig=None, cmap='RdYlBu_r'): + """Create a grid of correlation plots. + + The individual correlation plots are assumed to all have the same + variables, axis labels can be specified only once. + + Parameters + ---------- + dcorrs : list or iterable of ndarrays + List of correlation matrices. + titles : list of str, optional + List of titles for the subplots. By default no title are shown. + ncols : int, optional + Number of columns in the subplot grid. If not given, the number of + columns is determined automatically. + normcolor : bool or tuple, optional + If False (default), then the color coding range corresponds to the + range of `dcorr`. If True, then the color range is normalized to + (-1, 1). If this is a tuple of two numbers, then they define the range + for the color bar. + xnames : list of str, optional + Labels for the horizontal axis. If not given (None), then the + matplotlib defaults (integers) are used. If it is an empty list, [], + then no ticks and labels are added. + ynames : list of str, optional + Labels for the vertical axis. Works the same way as `xnames`. + If not given, the same names as for `xnames` are re-used. + fig : Matplotlib figure instance, optional + If given, this figure is simply returned. Otherwise a new figure is + created. + cmap : str or Matplotlib Colormap instance, optional + The colormap for the plot. Can be any valid Matplotlib Colormap + instance or name. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + + Examples + -------- + >>> import numpy as np + >>> import matplotlib.pyplot as plt + >>> import statsmodels.api as sm + + In this example we just reuse the same correlation matrix several times. + Of course in reality one would show a different correlation (measuring a + another type of correlation, for example Pearson (linear) and Spearman, + Kendall (nonlinear) correlations) for the same variables. + + >>> hie_data = sm.datasets.randhie.load_pandas() + >>> corr_matrix = np.corrcoef(hie_data.data.T) + >>> sm.graphics.plot_corr_grid([corr_matrix] * 8, xnames=hie_data.names) + >>> plt.show() + + ..plot :: plots/graphics_correlation_plot_corr_grid.py + """ + if ynames is None: + ynames = xnames + + if not titles: + titles = ['']*len(dcorrs) + + n_plots = len(dcorrs) + if ncols is not None: + nrows = int(np.ceil(n_plots / float(ncols))) + else: + # Determine number of rows and columns, square if possible, otherwise + # prefer a wide (more columns) over a high layout. + if n_plots < 4: + nrows, ncols = 1, n_plots + else: + nrows = int(np.sqrt(n_plots)) + ncols = int(np.ceil(n_plots / float(nrows))) + + # Create a figure with the correct size + aspect = min(ncols / float(nrows), 1.8) + vsize = np.sqrt(nrows) * 5 + fig = utils.create_mpl_fig(fig, figsize=(vsize * aspect + 1, vsize)) + + for i, c in enumerate(dcorrs): + ax = fig.add_subplot(nrows, ncols, i+1) + # Ensure to only plot labels on bottom row and left column + _xnames = xnames if nrows * ncols - (i+1) < ncols else [] + _ynames = ynames if (i+1) % ncols == 1 else [] + plot_corr(c, xnames=_xnames, ynames=_ynames, title=titles[i], + normcolor=normcolor, ax=ax, cmap=cmap) + + # Adjust figure margins and add a colorbar + fig.subplots_adjust(bottom=0.1, left=0.09, right=0.9, top=0.9) + cax = fig.add_axes([0.92, 0.1, 0.025, 0.8]) + fig.colorbar(fig.axes[0].images[0], cax=cax) + + return fig diff --git a/statsmodels/graphics/dotplots.py b/statsmodels/graphics/dotplots.py new file mode 100644 index 0000000..31d7a9e --- /dev/null +++ b/statsmodels/graphics/dotplots.py @@ -0,0 +1,486 @@ +import numpy as np +from statsmodels.compat import range +from . import utils + + +def dot_plot(points, intervals=None, lines=None, sections=None, + styles=None, marker_props=None, line_props=None, + split_names=None, section_order=None, line_order=None, + stacked=False, styles_order=None, striped=False, + horizontal=True, show_names="both", + fmt_left_name=None, fmt_right_name=None, + show_section_titles=None, ax=None): + """ + Produce a dotplot similar in style to those in Cleveland's + "Visualizing Data" book. These are also known as "forest plots". + + Parameters + ---------- + points : array_like + The quantitative values to be plotted as markers. + intervals : array_like + The intervals to be plotted around the points. The elements + of `intervals` are either scalars or sequences of length 2. A + scalar indicates the half width of a symmetric interval. A + sequence of length 2 contains the left and right half-widths + (respectively) of a nonsymmetric interval. If None, no + intervals are drawn. + lines : array_like + A grouping variable indicating which points/intervals are + drawn on a common line. If None, each point/interval appears + on its own line. + sections : array_like + A grouping variable indicating which lines are grouped into + sections. If None, everything is drawn in a single section. + styles : array_like + A grouping label defining the plotting style of the markers + and intervals. + marker_props : dict + A dictionary mapping style codes (the values in `styles`) to + dictionaries defining key/value pairs to be passed as keyword + arguments to `plot` when plotting markers. Useful keyword + arguments are "color", "marker", and "ms" (marker size). + line_props : dict + A dictionary mapping style codes (the values in `styles`) to + dictionaries defining key/value pairs to be passed as keyword + arguments to `plot` when plotting interval lines. Useful + keyword arguments are "color", "linestyle", "solid_capstyle", + and "linewidth". + split_names : string + If not None, this is used to split the values of `lines` into + substrings that are drawn in the left and right margins, + respectively. If None, the values of `lines` are drawn in the + left margin. + section_order : array_like + The section labels in the order in which they appear in the + dotplot. + line_order : array_like + The line labels in the order in which they appear in the + dotplot. + stacked : boolean + If True, when multiple points or intervals are drawn on the + same line, they are offset from each other. + styles_order : array_like + If stacked=True, this is the order in which the point styles + on a given line are drawn from top to bottom (if horizontal + is True) or from left to right (if horiontal is False). If + None (default), the order is lexical. + striped : boolean + If True, every other line is enclosed in a shaded box. + horizontal : boolean + If True (default), the lines are drawn horizontally, otherwise + they are drawn vertically. + show_names : string + Determines whether labels (names) are shown in the left and/or + right margins (top/bottom margins if `horizontal` is True). + If `both`, labels are drawn in both margins, if 'left', labels + are drawn in the left or top margin. If `right`, labels are + drawn in the right or bottom margin. + fmt_left_name : function + The left/top margin names are passed through this function + before drawing on the plot. + fmt_right_name : function + The right/bottom marginnames are passed through this function + before drawing on the plot. + show_section_titles : bool or None + If None, section titles are drawn only if there is more than + one section. If False/True, section titles are never/always + drawn, respectively. + ax : matplotlib.axes + The axes on which the dotplot is drawn. If None, a new axes + is created. + + Returns + ------- + fig : Figure + The figure given by `ax.figure` or a new instance. + + Notes + ----- + `points`, `intervals`, `lines`, `sections`, `styles` must all have + the same length whenever present. + + Examples + -------- + This is a simple dotplot with one point per line: + >>> dot_plot(points=point_values) + + This dotplot has labels on the lines (if elements in + `label_values` are repeated, the corresponding points appear on + the same line): + >>> dot_plot(points=point_values, lines=label_values) + + References + ---------- + * Cleveland, William S. (1993). "Visualizing Data". Hobart + Press. + * Jacoby, William G. (2006) "The Dot Plot: A Graphical Display + for Labeled Quantitative Values." The Political Methodologist + 14(1): 6-14. + """ + + import matplotlib.transforms as transforms + + fig, ax = utils.create_mpl_ax(ax) + + # Convert to numpy arrays if that is not what we are given. + points = np.asarray(points) + asarray_or_none = lambda x : None if x is None else np.asarray(x) + intervals = asarray_or_none(intervals) + lines = asarray_or_none(lines) + sections = asarray_or_none(sections) + styles = asarray_or_none(styles) + + # Total number of points + npoint = len(points) + + # Set default line values if needed + if lines is None: + lines = np.arange(npoint) + + # Set default section values if needed + if sections is None: + sections = np.zeros(npoint) + + # Set default style values if needed + if styles is None: + styles = np.zeros(npoint) + + # The vertical space (in inches) for a section title + section_title_space = 0.5 + + # The number of sections + nsect = len(set(sections)) + if section_order is not None: + nsect = len(set(section_order)) + + # The number of section titles + if show_section_titles is False: + draw_section_titles = False + nsect_title = 0 + elif show_section_titles is True: + draw_section_titles = True + nsect_title = nsect + else: + draw_section_titles = nsect > 1 + nsect_title = nsect if nsect > 1 else 0 + + # The total vertical space devoted to section titles. + section_space_total = section_title_space * nsect_title + + # Add a bit of room so that points that fall at the axis limits + # are not cut in half. + ax.set_xmargin(0.02) + ax.set_ymargin(0.02) + + if section_order is None: + lines0 = list(set(sections)) + lines0.sort() + else: + lines0 = section_order + + if line_order is None: + lines1 = list(set(lines)) + lines1.sort() + else: + lines1 = line_order + + # A map from (section,line) codes to index positions. + lines_map = {} + for i in range(npoint): + if section_order is not None and sections[i] not in section_order: + continue + if line_order is not None and lines[i] not in line_order: + continue + ky = (sections[i], lines[i]) + if ky not in lines_map: + lines_map[ky] = [] + lines_map[ky].append(i) + + # Get the size of the axes on the parent figure in inches + bbox = ax.get_window_extent().transformed( + fig.dpi_scale_trans.inverted()) + awidth, aheight = bbox.width, bbox.height + + # The number of lines in the plot. + nrows = len(lines_map) + + # The positions of the lowest and highest guideline in axes + # coordinates (for horizontal dotplots), or the leftmost and + # rightmost guidelines (for vertical dotplots). + bottom, top = 0, 1 + + if horizontal: + # x coordinate is data, y coordinate is axes + trans = transforms.blended_transform_factory(ax.transData, + ax.transAxes) + else: + # x coordinate is axes, y coordinate is data + trans = transforms.blended_transform_factory(ax.transAxes, + ax.transData) + + # Space used for a section title, in axes coordinates + title_space_axes = section_title_space / aheight + + # Space between lines + if horizontal: + dpos = (top - bottom - nsect_title*title_space_axes) /\ + float(nrows) + else: + dpos = (top - bottom) / float(nrows) + + # Determine the spacing for stacked points + if styles_order is not None: + style_codes = styles_order + else: + style_codes = list(set(styles)) + style_codes.sort() + # Order is top to bottom for horizontal plots, so need to + # flip. + if horizontal: + style_codes = style_codes[::-1] + # nval is the maximum number of points on one line. + nval = len(style_codes) + if nval > 1: + stackd = dpos / (2.5*(float(nval)-1)) + else: + stackd = 0. + + # Map from style code to its integer position + style_codes_map = {x: style_codes.index(x) for x in style_codes} + + # Setup default marker styles + colors = ["r", "g", "b", "y", "k", "purple", "orange"] + if marker_props is None: + marker_props = {x: {} for x in style_codes} + for j in range(nval): + sc = style_codes[j] + if "color" not in marker_props[sc]: + marker_props[sc]["color"] = colors[j % len(colors)] + if "marker" not in marker_props[sc]: + marker_props[sc]["marker"] = "o" + if "ms" not in marker_props[sc]: + marker_props[sc]["ms"] = 10 if stackd == 0 else 6 + + # Setup default line styles + if line_props is None: + line_props = {x: {} for x in style_codes} + for j in range(nval): + sc = style_codes[j] + if "color" not in line_props[sc]: + line_props[sc]["color"] = "grey" + if "linewidth" not in line_props[sc]: + line_props[sc]["linewidth"] = 2 if stackd > 0 else 8 + + if horizontal: + # The vertical position of the first line. + pos = top - dpos/2 if nsect == 1 else top + else: + # The horizontal position of the first line. + pos = bottom + dpos/2 + + # Points that have already been labeled + labeled = set() + + # Positions of the y axis grid lines + ticks = [] + + # Loop through the sections + for k0 in lines0: + + # Draw a section title + if draw_section_titles: + + if horizontal: + + y0 = pos + dpos/2 if k0 == lines0[0] else pos + + ax.fill_between((0, 1), (y0,y0), + (pos-0.7*title_space_axes, + pos-0.7*title_space_axes), + color='darkgrey', + transform=ax.transAxes, + zorder=1) + + txt = ax.text(0.5, pos - 0.35*title_space_axes, k0, + horizontalalignment='center', + verticalalignment='center', + transform=ax.transAxes) + txt.set_fontweight("bold") + pos -= title_space_axes + + else: + + m = len([k for k in lines_map if k[0] == k0]) + + ax.fill_between((pos-dpos/2+0.01, + pos+(m-1)*dpos+dpos/2-0.01), + (1.01,1.01), (1.06,1.06), + color='darkgrey', + transform=ax.transAxes, + zorder=1, clip_on=False) + + txt = ax.text(pos + (m-1)*dpos/2, 1.02, k0, + horizontalalignment='center', + verticalalignment='bottom', + transform=ax.transAxes) + txt.set_fontweight("bold") + + jrow = 0 + for k1 in lines1: + + # No data to plot + if (k0, k1) not in lines_map: + continue + + # Draw the guideline + if horizontal: + ax.axhline(pos, color='grey') + else: + ax.axvline(pos, color='grey') + + # Set up the labels + if split_names is not None: + us = k1.split(split_names) + if len(us) >= 2: + left_label, right_label = us[0], us[1] + else: + left_label, right_label = k1, None + else: + left_label, right_label = k1, None + + if fmt_left_name is not None: + left_label = fmt_left_name(left_label) + + if fmt_right_name is not None: + right_label = fmt_right_name(right_label) + + # Draw the stripe + if striped and jrow % 2 == 0: + if horizontal: + ax.fill_between((0, 1), (pos-dpos/2, pos-dpos/2), + (pos+dpos/2, pos+dpos/2), + color='lightgrey', + transform=ax.transAxes, + zorder=0) + else: + ax.fill_between((pos-dpos/2, pos+dpos/2), + (0, 0), (1, 1), + color='lightgrey', + transform=ax.transAxes, + zorder=0) + + jrow += 1 + + # Draw the left margin label + if show_names.lower() in ("left", "both"): + if horizontal: + ax.text(-0.1/awidth, pos, left_label, + horizontalalignment="right", + verticalalignment='center', + transform=ax.transAxes, + family='monospace') + else: + ax.text(pos, -0.1/aheight, left_label, + horizontalalignment="center", + verticalalignment='top', + transform=ax.transAxes, + family='monospace') + + # Draw the right margin label + if show_names.lower() in ("right", "both"): + if right_label is not None: + if horizontal: + ax.text(1 + 0.1/awidth, pos, right_label, + horizontalalignment="left", + verticalalignment='center', + transform=ax.transAxes, + family='monospace') + else: + ax.text(pos, 1 + 0.1/aheight, right_label, + horizontalalignment="center", + verticalalignment='bottom', + transform=ax.transAxes, + family='monospace') + + # Save the vertical position so that we can place the + # tick marks + ticks.append(pos) + + # Loop over the points in one line + for ji,jp in enumerate(lines_map[(k0,k1)]): + + # Calculate the vertical offset + yo = 0 + if stacked: + yo = -dpos/5 + style_codes_map[styles[jp]]*stackd + + pt = points[jp] + + # Plot the interval + if intervals is not None: + + # Symmetric interval + if np.isscalar(intervals[jp]): + lcb, ucb = pt - intervals[jp],\ + pt + intervals[jp] + + # Nonsymmetric interval + else: + lcb, ucb = pt - intervals[jp][0],\ + pt + intervals[jp][1] + + # Draw the interval + if horizontal: + ax.plot([lcb, ucb], [pos+yo, pos+yo], '-', + transform=trans, + **line_props[styles[jp]]) + else: + ax.plot([pos+yo, pos+yo], [lcb, ucb], '-', + transform=trans, + **line_props[styles[jp]]) + + + # Plot the point + sl = styles[jp] + sll = sl if sl not in labeled else None + labeled.add(sl) + if horizontal: + ax.plot([pt,], [pos+yo,], ls='None', + transform=trans, label=sll, + **marker_props[sl]) + else: + ax.plot([pos+yo,], [pt,], ls='None', + transform=trans, label=sll, + **marker_props[sl]) + + if horizontal: + pos -= dpos + else: + pos += dpos + + # Set up the axis + if horizontal: + ax.xaxis.set_ticks_position("bottom") + ax.yaxis.set_ticks_position("none") + ax.set_yticklabels([]) + ax.spines['left'].set_color('none') + ax.spines['right'].set_color('none') + ax.spines['top'].set_color('none') + ax.spines['bottom'].set_position(('axes', -0.1/aheight)) + ax.set_ylim(0, 1) + ax.yaxis.set_ticks(ticks) + ax.autoscale_view(scaley=False, tight=True) + else: + ax.yaxis.set_ticks_position("left") + ax.xaxis.set_ticks_position("none") + ax.set_xticklabels([]) + ax.spines['bottom'].set_color('none') + ax.spines['right'].set_color('none') + ax.spines['top'].set_color('none') + ax.spines['left'].set_position(('axes', -0.1/awidth)) + ax.set_xlim(0, 1) + ax.xaxis.set_ticks(ticks) + ax.autoscale_view(scalex=False, tight=True) + + return fig diff --git a/statsmodels/graphics/factorplots.py b/statsmodels/graphics/factorplots.py new file mode 100644 index 0000000..dfa7c54 --- /dev/null +++ b/statsmodels/graphics/factorplots.py @@ -0,0 +1,201 @@ +# -*- coding: utf-8 -*- +""" +Authors: Josef Perktold, Skipper Seabold, Denis A. Engemann +""" +from statsmodels.compat.python import iterkeys, lrange, zip, iteritems +import numpy as np + +from statsmodels.graphics.plottools import rainbow +import statsmodels.graphics.utils as utils + + +def interaction_plot(x, trace, response, func=np.mean, ax=None, plottype='b', + xlabel=None, ylabel=None, colors=None, markers=None, + linestyles=None, legendloc='best', legendtitle=None, + **kwargs): + """ + Interaction plot for factor level statistics. + + Note. If categorial factors are supplied levels will be internally + recoded to integers. This ensures matplotlib compatiblity. + + uses pandas.DataFrame to calculate an `aggregate` statistic for each + level of the factor or group given by `trace`. + + Parameters + ---------- + x : array-like + The `x` factor levels constitute the x-axis. If a `pandas.Series` is + given its name will be used in `xlabel` if `xlabel` is None. + trace : array-like + The `trace` factor levels will be drawn as lines in the plot. + If `trace` is a `pandas.Series` its name will be used as the + `legendtitle` if `legendtitle` is None. + response : array-like + The reponse or dependent variable. If a `pandas.Series` is given + its name will be used in `ylabel` if `ylabel` is None. + func : function + Anything accepted by `pandas.DataFrame.aggregate`. This is applied to + the response variable grouped by the trace levels. + plottype : str {'line', 'scatter', 'both'}, optional + The type of plot to return. Can be 'l', 's', or 'b' + ax : axes, optional + Matplotlib axes instance + xlabel : str, optional + Label to use for `x`. Default is 'X'. If `x` is a `pandas.Series` it + will use the series names. + ylabel : str, optional + Label to use for `response`. Default is 'func of response'. If + `response` is a `pandas.Series` it will use the series names. + colors : list, optional + If given, must have length == number of levels in trace. + linestyles : list, optional + If given, must have length == number of levels in trace. + markers : list, optional + If given, must have length == number of lovels in trace + kwargs + These will be passed to the plot command used either plot or scatter. + If you want to control the overall plotting options, use kwargs. + + Returns + ------- + fig : Figure + The figure given by `ax.figure` or a new instance. + + Examples + -------- + >>> import numpy as np + >>> np.random.seed(12345) + >>> weight = np.random.randint(1,4,size=60) + >>> duration = np.random.randint(1,3,size=60) + >>> days = np.log(np.random.randint(1,30, size=60)) + >>> fig = interaction_plot(weight, duration, days, + ... colors=['red','blue'], markers=['D','^'], ms=10) + >>> import matplotlib.pyplot as plt + >>> plt.show() + + .. plot:: + + import numpy as np + from statsmodels.graphics.factorplots import interaction_plot + np.random.seed(12345) + weight = np.random.randint(1,4,size=60) + duration = np.random.randint(1,3,size=60) + days = np.log(np.random.randint(1,30, size=60)) + fig = interaction_plot(weight, duration, days, + colors=['red','blue'], markers=['D','^'], ms=10) + import matplotlib.pyplot as plt + #plt.show() + """ + + from pandas import DataFrame + fig, ax = utils.create_mpl_ax(ax) + + response_name = ylabel or getattr(response, 'name', 'response') + ylabel = '%s of %s' % (func.__name__, response_name) + xlabel = xlabel or getattr(x, 'name', 'X') + legendtitle = legendtitle or getattr(trace, 'name', 'Trace') + + ax.set_ylabel(ylabel) + ax.set_xlabel(xlabel) + + x_values = x_levels = None + if isinstance(x[0], str): + x_levels = [l for l in np.unique(x)] + x_values = lrange(len(x_levels)) + x = _recode(x, dict(zip(x_levels, x_values))) + + data = DataFrame(dict(x=x, trace=trace, response=response)) + plot_data = data.groupby(['trace', 'x']).aggregate(func).reset_index() + + # return data + # check plot args + n_trace = len(plot_data['trace'].unique()) + + linestyles = ['-'] * n_trace if linestyles is None else linestyles + markers = ['.'] * n_trace if markers is None else markers + colors = rainbow(n_trace) if colors is None else colors + + if len(linestyles) != n_trace: + raise ValueError("Must be a linestyle for each trace level") + if len(markers) != n_trace: + raise ValueError("Must be a marker for each trace level") + if len(colors) != n_trace: + raise ValueError("Must be a color for each trace level") + + if plottype == 'both' or plottype == 'b': + for i, (values, group) in enumerate(plot_data.groupby(['trace'])): + # trace label + label = str(group['trace'].values[0]) + ax.plot(group['x'], group['response'], color=colors[i], + marker=markers[i], label=label, + linestyle=linestyles[i], **kwargs) + elif plottype == 'line' or plottype == 'l': + for i, (values, group) in enumerate(plot_data.groupby(['trace'])): + # trace label + label = str(group['trace'].values[0]) + ax.plot(group['x'], group['response'], color=colors[i], + label=label, linestyle=linestyles[i], **kwargs) + elif plottype == 'scatter' or plottype == 's': + for i, (values, group) in enumerate(plot_data.groupby(['trace'])): + # trace label + label = str(group['trace'].values[0]) + ax.scatter(group['x'], group['response'], color=colors[i], + label=label, marker=markers[i], **kwargs) + + else: + raise ValueError("Plot type %s not understood" % plottype) + ax.legend(loc=legendloc, title=legendtitle) + ax.margins(.1) + + if all([x_levels, x_values]): + ax.set_xticks(x_values) + ax.set_xticklabels(x_levels) + return fig + + +def _recode(x, levels): + """ Recode categorial data to int factor. + + Parameters + ---------- + x : array-like + array like object supporting with numpy array methods of categorially + coded data. + levels : dict + mapping of labels to integer-codings + + Returns + ------- + out : instance numpy.ndarray + + """ + from pandas import Series + name = None + index = None + + if isinstance(x, Series): + name = x.name + index = x.index + x = x.values + + if x.dtype.type not in [np.str_, np.object_]: + raise ValueError('This is not a categorial factor.' + ' Array of str type required.') + + elif not isinstance(levels, dict): + raise ValueError('This is not a valid value for levels.' + ' Dict required.') + + elif not (np.unique(x) == np.unique(list(iterkeys(levels)))).all(): + raise ValueError('The levels do not match the array values.') + + else: + out = np.empty(x.shape[0], dtype=np.int) + for level, coding in iteritems(levels): + out[x == level] = coding + + if name: + out = Series(out, name=name, index=index) + + return out diff --git a/statsmodels/graphics/functional.py b/statsmodels/graphics/functional.py new file mode 100644 index 0000000..dcb45f3 --- /dev/null +++ b/statsmodels/graphics/functional.py @@ -0,0 +1,860 @@ +"""Module for functional boxplots.""" +from statsmodels.compat.python import range, zip +from statsmodels.compat.scipy import factorial + +from statsmodels.multivariate.pca import PCA +from statsmodels.nonparametric.kernel_density import KDEMultivariate +from statsmodels.graphics.utils import _import_mpl +from collections import OrderedDict +from itertools import combinations +import numpy as np +try: + from scipy.optimize import differential_evolution, brute, fmin + have_de_optim = True +except ImportError: + from scipy.optimize import brute, fmin + have_de_optim = False +from multiprocessing import Pool +import itertools +from . import utils + + +__all__ = ['hdrboxplot', 'fboxplot', 'rainbowplot', 'banddepth'] + + +class HdrResults(object): + """Wrap results and pretty print them.""" + + def __init__(self, kwds): + self.__dict__.update(kwds) + + def __repr__(self): + msg = ("HDR boxplot summary:\n" + "-> median:\n{}\n" + "-> 50% HDR (max, min):\n{}\n" + "-> 90% HDR (max, min):\n{}\n" + "-> Extra quantiles (max, min):\n{}\n" + "-> Outliers:\n{}\n" + "-> Outliers indices:\n{}\n" + ).format(self.median, self.hdr_50, self.hdr_90, + self.extra_quantiles, self.outliers, self.outliers_idx) + + return msg + + +def _inverse_transform(pca, data): + """ + Inverse transform on PCA. + + Use PCA's `project` method by temporary replacing its factors with + `data`. + + Parameters + ---------- + pca : statsmodels Principal Component Analysis instance + The PCA object to use. + data : sequence of ndarrays or 2-D ndarray + The vectors of functions to create a functional boxplot from. If a + sequence of 1-D arrays, these should all be the same size. + The first axis is the function index, the second axis the one along + which the function is defined. So ``data[0, :]`` is the first + functional curve. + + Returns + ------- + projection : array + nobs by nvar array of the projection onto ncomp factors + + """ + factors = pca.factors + pca.factors = data.reshape(-1, factors.shape[1]) + projection = pca.project() + pca.factors = factors + return projection + + +def _curve_constrained(x, idx, sign, band, pca, ks_gaussian): + """Find out if the curve is within the band. + + The curve value at :attr:`idx` for a given PDF is only returned if + within bounds defined by the band. Otherwise, 1E6 is returned. + + Parameters + ---------- + x : float + Curve in reduced space. + idx : int + Index value of the components to compute. + sign : int + Return positive or negative value. + band : list of float + PDF values `[min_pdf, max_pdf]` to be within. + pca : statsmodels Principal Component Analysis instance + The PCA object to use. + ks_gaussian : KDEMultivariate instance + + Returns + ------- + value : float + Curve value at `idx`. + + """ + x = x.reshape(1, -1) + pdf = ks_gaussian.pdf(x) + if band[0] < pdf < band[1]: + value = sign * _inverse_transform(pca, x)[0][idx] + else: + value = 1E6 + return value + + +def _min_max_band(args): + """ + Min and max values at `idx`. + + Global optimization to find the extrema per component. + + Parameters + ---------- + args: list + It is a list of an idx and other arguments as a tuple: + idx : int + Index value of the components to compute + The tuple contains: + band : list of float + PDF values `[min_pdf, max_pdf]` to be within. + pca : statsmodels Principal Component Analysis instance + The PCA object to use. + bounds : sequence + ``(min, max)`` pair for each components + ks_gaussian : KDEMultivariate instance + + Returns + ------- + band : tuple of float + ``(max, min)`` curve values at `idx` + + """ + idx, (band, pca, bounds, ks_gaussian, use_brute, seed) = args + if have_de_optim and not use_brute: + max_ = differential_evolution(_curve_constrained, bounds=bounds, + args=(idx, -1, band, pca, ks_gaussian), + maxiter=7, seed=seed).x + min_ = differential_evolution(_curve_constrained, bounds=bounds, + args=(idx, 1, band, pca, ks_gaussian), + maxiter=7, seed=seed).x + else: + max_ = brute(_curve_constrained, ranges=bounds, finish=fmin, + args=(idx, -1, band, pca, ks_gaussian)) + + min_ = brute(_curve_constrained, ranges=bounds, finish=fmin, + args=(idx, 1, band, pca, ks_gaussian)) + + band = (_inverse_transform(pca, max_)[0][idx], + _inverse_transform(pca, min_)[0][idx]) + return band + + +def hdrboxplot(data, ncomp=2, alpha=None, threshold=0.95, bw=None, + xdata=None, labels=None, ax=None, use_brute=False, seed=None): + """ + High Density Region boxplot + + Parameters + ---------- + data : sequence of ndarrays or 2-D ndarray + The vectors of functions to create a functional boxplot from. If a + sequence of 1-D arrays, these should all be the same size. + The first axis is the function index, the second axis the one along + which the function is defined. So ``data[0, :]`` is the first + functional curve. + ncomp : int, optional + Number of components to use. If None, returns the as many as the + smaller of the number of rows or columns in data. + alpha : list of floats between 0 and 1, optional + Extra quantile values to compute. Default is None + threshold : float between 0 and 1, optional + Percentile threshold value for outliers detection. High value means + a lower sensitivity to outliers. Default is `0.95`. + bw: array_like or str, optional + If an array, it is a fixed user-specified bandwidth. If `None`, set to + `normal_reference`. If a string, should be one of: + + - normal_reference: normal reference rule of thumb (default) + - cv_ml: cross validation maximum likelihood + - cv_ls: cross validation least squares + + xdata : ndarray, optional + The independent variable for the data. If not given, it is assumed to + be an array of integers 0..N-1 with N the length of the vectors in + `data`. + labels : sequence of scalar or str, optional + The labels or identifiers of the curves in `data`. If not given, + outliers are labeled in the plot with array indices. + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure being + created. + use_brute : bool + Use the brute force optimizer instead of the default differential + evolution to find the curves. Default is False. + seed : {None, int, np.random.RandomState} + Seed value to pass to scipy.optimize.differential_evolution. Can be an + integer or RandomState instance. If None, then the default RandomState + provided by np.random is used. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + hdr_res : HdrResults instance + An `HdrResults` instance with the following attributes: + + - 'median', array. Median curve. + - 'hdr_50', array. 50% quantile band. [sup, inf] curves + - 'hdr_90', list of array. 90% quantile band. [sup, inf] + curves. + - 'extra_quantiles', list of array. Extra quantile band. + [sup, inf] curves. + - 'outliers', ndarray. Outlier curves. + + Notes + ----- + The median curve is the curve with the highest probability on the reduced + space of a Principal Component Analysis (PCA). + + Outliers are defined as curves that fall outside the band corresponding + to the quantile given by `threshold`. + + The non-outlying region is defined as the band made up of all the + non-outlying curves. + + Behind the scene, the dataset is represented as a matrix. Each line + corresponding to a 1D curve. This matrix is then decomposed using Principal + Components Analysis (PCA). This allows to represent the data using a finite + number of modes, or components. This compression process allows to turn the + functional representation into a scalar representation of the matrix. In + other words, you can visualize each curve from its components. Each curve + is thus a point in this reduced space. With 2 components, this is called a + bivariate plot (2D plot). + + In this plot, if some points are adjacent (similar components), it means + that back in the original space, the curves are similar. Then, finding the + median curve means finding the higher density region (HDR) in the reduced + space. Moreover, the more you get away from this HDR, the more the curve is + unlikely to be similar to the other curves. + + Using a kernel smoothing technique, the probability density function (PDF) + of the multivariate space can be recovered. From this PDF, it is possible + to compute the density probability linked to the cluster of points and plot + its contours. + + Finally, using these contours, the different quantiles can be extracted + along with the median curve and the outliers. + + Steps to produce the HDR boxplot include: + + 1. Compute a multivariate kernel density estimation + 2. Compute contour lines for quantiles 90%, 50% and `alpha` % + 3. Plot the bivariate plot + 4. Compute median curve along with quantiles and outliers curves. + + References + ---------- + [1] R.J. Hyndman and H.L. Shang, "Rainbow Plots, Bagplots, and Boxplots for + Functional Data", vol. 19, pp. 29-45, 2010. + + Examples + -------- + Load the El Nino dataset. Consists of 60 years worth of Pacific Ocean sea + surface temperature data. + + >>> import matplotlib.pyplot as plt + >>> import statsmodels.api as sm + >>> data = sm.datasets.elnino.load(as_pandas=False) + + Create a functional boxplot. We see that the years 1982-83 and 1997-98 are + outliers; these are the years where El Nino (a climate pattern + characterized by warming up of the sea surface and higher air pressures) + occurred with unusual intensity. + + >>> fig = plt.figure() + >>> ax = fig.add_subplot(111) + >>> res = sm.graphics.hdrboxplot(data.raw_data[:, 1:], + ... labels=data.raw_data[:, 0].astype(int), + ... ax=ax) + + >>> ax.set_xlabel("Month of the year") + >>> ax.set_ylabel("Sea surface temperature (C)") + >>> ax.set_xticks(np.arange(13, step=3) - 1) + >>> ax.set_xticklabels(["", "Mar", "Jun", "Sep", "Dec"]) + >>> ax.set_xlim([-0.2, 11.2]) + + >>> plt.show() + + .. plot:: plots/graphics_functional_hdrboxplot.py + + See Also + -------- + banddepth, rainbowplot, fboxplot + """ + fig, ax = utils.create_mpl_ax(ax) + + if labels is None: + # For use with pandas, get the labels + if hasattr(data, 'index'): + labels = data.index + else: + labels = np.arange(len(data)) + + data = np.asarray(data) + if xdata is None: + xdata = np.arange(data.shape[1]) + + n_samples, dim = data.shape + # PCA and bivariate plot + pca = PCA(data, ncomp=ncomp) + data_r = pca.factors + + # Create gaussian kernel + ks_gaussian = KDEMultivariate(data_r, bw=bw, + var_type='c' * data_r.shape[1]) + + # Boundaries of the n-variate space + bounds = np.array([data_r.min(axis=0), data_r.max(axis=0)]).T + + # Compute contour line of pvalue linked to a given probability level + if alpha is None: + alpha = [threshold, 0.9, 0.5] + else: + alpha.extend([threshold, 0.9, 0.5]) + alpha = list(set(alpha)) + alpha.sort(reverse=True) + + n_quantiles = len(alpha) + pdf_r = ks_gaussian.pdf(data_r).flatten() + pvalues = [np.percentile(pdf_r, (1 - alpha[i]) * 100, + interpolation='linear') + for i in range(n_quantiles)] + + # Find mean, outliers curves + if have_de_optim and not use_brute: + median = differential_evolution(lambda x: - ks_gaussian.pdf(x), + bounds=bounds, maxiter=5, seed=seed).x + else: + median = brute(lambda x: - ks_gaussian.pdf(x), + ranges=bounds, finish=fmin) + + outliers_idx = np.where(pdf_r < pvalues[alpha.index(threshold)])[0] + labels_outlier = [labels[i] for i in outliers_idx] + outliers = data[outliers_idx] + + # Find HDR given some quantiles + + def _band_quantiles(band, use_brute=use_brute, seed=seed): + """ + Find extreme curves for a quantile band. + + From the `band` of quantiles, the associated PDF extrema values + are computed. If `min_alpha` is not provided (single quantile value), + `max_pdf` is set to `1E6` in order not to constrain the problem on high + values. + + An optimization is performed per component in order to find the min and + max curves. This is done by comparing the PDF value of a given curve + with the band PDF. + + Parameters + ---------- + band : array_like + alpha values ``(max_alpha, min_alpha)`` ex: ``[0.9, 0.5]`` + use_brute : bool + Use the brute force optimizer instead of the default differential + evolution to find the curves. Default is False. + seed : {None, int, np.random.RandomState} + Seed value to pass to scipy.optimize.differential_evolution. Can + be an integer or RandomState instance. If None, then the default + RandomState provided by np.random is used. + + + Returns + ------- + band_quantiles : list of 1-D array + ``(max_quantile, min_quantile)`` (2, n_features) + + """ + min_pdf = pvalues[alpha.index(band[0])] + try: + max_pdf = pvalues[alpha.index(band[1])] + except IndexError: + max_pdf = 1E6 + band = [min_pdf, max_pdf] + + pool = Pool() + data = zip(range(dim), itertools.repeat((band, pca, + bounds, ks_gaussian, + seed, use_brute))) + band_quantiles = pool.map(_min_max_band, data) + pool.terminate() + pool.close() + + band_quantiles = list(zip(*band_quantiles)) + + return band_quantiles + + extra_alpha = [i for i in alpha + if 0.5 != i and 0.9 != i and threshold != i] + if len(extra_alpha) > 0: + extra_quantiles = [] + for x in extra_alpha: + for y in _band_quantiles([x], use_brute=use_brute, seed=seed): + extra_quantiles.append(y) + else: + extra_quantiles = [] + + # Inverse transform from n-variate plot to dataset dataset's shape + median = _inverse_transform(pca, median)[0] + hdr_90 = _band_quantiles([0.9, 0.5], use_brute=use_brute, seed=seed) + hdr_50 = _band_quantiles([0.5], use_brute=use_brute, seed=seed) + + hdr_res = HdrResults({ + "median": median, + "hdr_50": hdr_50, + "hdr_90": hdr_90, + "extra_quantiles": extra_quantiles, + "outliers": outliers, + "outliers_idx": outliers_idx + }) + + # Plots + ax.plot(np.array([xdata] * n_samples).T, data.T, + c='c', alpha=.1, label=None) + ax.plot(xdata, median, c='k', label='Median') + fill_betweens = [] + fill_betweens.append(ax.fill_between(xdata, *hdr_50, color='gray', + alpha=.4, label='50% HDR')) + fill_betweens.append(ax.fill_between(xdata, *hdr_90, color='gray', + alpha=.3, label='90% HDR')) + + if len(extra_quantiles) != 0: + ax.plot(np.array([xdata] * len(extra_quantiles)).T, + np.array(extra_quantiles).T, + c='y', ls='-.', alpha=.4, label='Extra quantiles') + + if len(outliers) != 0: + for ii, outlier in enumerate(outliers): + if labels_outlier is None: + label = 'Outliers' + else: + label = str(labels_outlier[ii]) + ax.plot(xdata, outlier, ls='--', alpha=0.7, label=label) + + handles, labels = ax.get_legend_handles_labels() + + # Proxy artist for fill_between legend entry + # See http://matplotlib.org/1.3.1/users/legend_guide.html + plt = _import_mpl() + for label, fill_between in zip(['50% HDR', '90% HDR'], fill_betweens): + p = plt.Rectangle((0, 0), 1, 1, + fc=fill_between.get_facecolor()[0]) + handles.append(p) + labels.append(label) + + by_label = OrderedDict(zip(labels, handles)) + if len(outliers) != 0: + by_label.pop('Median') + by_label.pop('50% HDR') + by_label.pop('90% HDR') + + ax.legend(by_label.values(), by_label.keys(), loc='best') + + return fig, hdr_res + + +def fboxplot(data, xdata=None, labels=None, depth=None, method='MBD', + wfactor=1.5, ax=None, plot_opts=None): + """ + Plot functional boxplot. + + A functional boxplot is the analog of a boxplot for functional data. + Functional data is any type of data that varies over a continuum, i.e. + curves, probabillity distributions, seasonal data, etc. + + The data is first ordered, the order statistic used here is `banddepth`. + Plotted are then the median curve, the envelope of the 50% central region, + the maximum non-outlying envelope and the outlier curves. + + Parameters + ---------- + data : sequence of ndarrays or 2-D ndarray + The vectors of functions to create a functional boxplot from. If a + sequence of 1-D arrays, these should all be the same size. + The first axis is the function index, the second axis the one along + which the function is defined. So ``data[0, :]`` is the first + functional curve. + xdata : ndarray, optional + The independent variable for the data. If not given, it is assumed to + be an array of integers 0..N-1 with N the length of the vectors in + `data`. + labels : sequence of scalar or str, optional + The labels or identifiers of the curves in `data`. If given, outliers + are labeled in the plot. + depth : ndarray, optional + A 1-D array of band depths for `data`, or equivalent order statistic. + If not given, it will be calculated through `banddepth`. + method : {'MBD', 'BD2'}, optional + The method to use to calculate the band depth. Default is 'MBD'. + wfactor : float, optional + Factor by which the central 50% region is multiplied to find the outer + region (analog of "whiskers" of a classical boxplot). + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure being + created. + plot_opts : dict, optional + A dictionary with plotting options. Any of the following can be + provided, if not present in `plot_opts` the defaults will be used:: + + - 'cmap_outliers', a Matplotlib LinearSegmentedColormap instance. + - 'c_inner', valid MPL color. Color of the central 50% region + - 'c_outer', valid MPL color. Color of the non-outlying region + - 'c_median', valid MPL color. Color of the median. + - 'lw_outliers', scalar. Linewidth for drawing outlier curves. + - 'lw_median', scalar. Linewidth for drawing the median curve. + - 'draw_nonout', bool. If True, also draw non-outlying curves. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + depth : ndarray + 1-D array containing the calculated band depths of the curves. + ix_depth : ndarray + 1-D array of indices needed to order curves (or `depth`) from most to + least central curve. + ix_outliers : ndarray + 1-D array of indices of outlying curves in `data`. + + See Also + -------- + banddepth, rainbowplot + + Notes + ----- + The median curve is the curve with the highest band depth. + + Outliers are defined as curves that fall outside the band created by + multiplying the central region by `wfactor`. Note that the range over + which they fall outside this band doesn't matter, a single data point + outside the band is enough. If the data is noisy, smoothing may therefore + be required. + + The non-outlying region is defined as the band made up of all the + non-outlying curves. + + References + ---------- + [1] Y. Sun and M.G. Genton, "Functional Boxplots", Journal of Computational + and Graphical Statistics, vol. 20, pp. 1-19, 2011. + [2] R.J. Hyndman and H.L. Shang, "Rainbow Plots, Bagplots, and Boxplots for + Functional Data", vol. 19, pp. 29-45, 2010. + + Examples + -------- + Load the El Nino dataset. Consists of 60 years worth of Pacific Ocean sea + surface temperature data. + + >>> import matplotlib.pyplot as plt + >>> import statsmodels.api as sm + >>> data = sm.datasets.elnino.load(as_pandas=False) + + Create a functional boxplot. We see that the years 1982-83 and 1997-98 are + outliers; these are the years where El Nino (a climate pattern + characterized by warming up of the sea surface and higher air pressures) + occurred with unusual intensity. + + >>> fig = plt.figure() + >>> ax = fig.add_subplot(111) + >>> res = sm.graphics.fboxplot(data.raw_data[:, 1:], wfactor=2.58, + ... labels=data.raw_data[:, 0].astype(int), + ... ax=ax) + + >>> ax.set_xlabel("Month of the year") + >>> ax.set_ylabel("Sea surface temperature (C)") + >>> ax.set_xticks(np.arange(13, step=3) - 1) + >>> ax.set_xticklabels(["", "Mar", "Jun", "Sep", "Dec"]) + >>> ax.set_xlim([-0.2, 11.2]) + + >>> plt.show() + + .. plot:: plots/graphics_functional_fboxplot.py + + """ + fig, ax = utils.create_mpl_ax(ax) + + plot_opts = {} if plot_opts is None else plot_opts + if plot_opts.get('cmap_outliers') is None: + from matplotlib.cm import rainbow_r + plot_opts['cmap_outliers'] = rainbow_r + + data = np.asarray(data) + if xdata is None: + xdata = np.arange(data.shape[1]) + + # Calculate band depth if required. + if depth is None: + if method not in ['MBD', 'BD2']: + raise ValueError("Unknown value for parameter `method`.") + + depth = banddepth(data, method=method) + else: + if depth.size != data.shape[0]: + raise ValueError("Provided `depth` array is not of correct size.") + + # Inner area is 25%-75% region of band-depth ordered curves. + ix_depth = np.argsort(depth)[::-1] + median_curve = data[ix_depth[0], :] + ix_IQR = data.shape[0] // 2 + lower = data[ix_depth[0:ix_IQR], :].min(axis=0) + upper = data[ix_depth[0:ix_IQR], :].max(axis=0) + + # Determine region for outlier detection + inner_median = np.median(data[ix_depth[0:ix_IQR], :], axis=0) + lower_fence = inner_median - (inner_median - lower) * wfactor + upper_fence = inner_median + (upper - inner_median) * wfactor + + # Find outliers. + ix_outliers = [] + ix_nonout = [] + for ii in range(data.shape[0]): + if (np.any(data[ii, :] > upper_fence) or + np.any(data[ii, :] < lower_fence)): + ix_outliers.append(ii) + else: + ix_nonout.append(ii) + + ix_outliers = np.asarray(ix_outliers) + + # Plot envelope of all non-outlying data + lower_nonout = data[ix_nonout, :].min(axis=0) + upper_nonout = data[ix_nonout, :].max(axis=0) + ax.fill_between(xdata, lower_nonout, upper_nonout, + color=plot_opts.get('c_outer', (0.75, 0.75, 0.75))) + + # Plot central 50% region + ax.fill_between(xdata, lower, upper, + color=plot_opts.get('c_inner', (0.5, 0.5, 0.5))) + + # Plot median curve + ax.plot(xdata, median_curve, color=plot_opts.get('c_median', 'k'), + lw=plot_opts.get('lw_median', 2)) + + # Plot outliers + cmap = plot_opts.get('cmap_outliers') + for ii, ix in enumerate(ix_outliers): + label = str(labels[ix]) if labels is not None else None + ax.plot(xdata, data[ix, :], + color=cmap(float(ii) / (len(ix_outliers)-1)), label=label, + lw=plot_opts.get('lw_outliers', 1)) + + if plot_opts.get('draw_nonout', False): + for ix in ix_nonout: + ax.plot(xdata, data[ix, :], 'k-', lw=0.5) + + if labels is not None: + ax.legend() + + return fig, depth, ix_depth, ix_outliers + + +def rainbowplot(data, xdata=None, depth=None, method='MBD', ax=None, + cmap=None): + """ + Create a rainbow plot for a set of curves. + + A rainbow plot contains line plots of all curves in the dataset, colored in + order of functional depth. The median curve is shown in black. + + Parameters + ---------- + data : sequence of ndarrays or 2-D ndarray + The vectors of functions to create a functional boxplot from. If a + sequence of 1-D arrays, these should all be the same size. + The first axis is the function index, the second axis the one along + which the function is defined. So ``data[0, :]`` is the first + functional curve. + xdata : ndarray, optional + The independent variable for the data. If not given, it is assumed to + be an array of integers 0..N-1 with N the length of the vectors in + `data`. + depth : ndarray, optional + A 1-D array of band depths for `data`, or equivalent order statistic. + If not given, it will be calculated through `banddepth`. + method : {'MBD', 'BD2'}, optional + The method to use to calculate the band depth. Default is 'MBD'. + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure being + created. + cmap : Matplotlib LinearSegmentedColormap instance, optional + The colormap used to color curves with. Default is a rainbow colormap, + with red used for the most central and purple for the least central + curves. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + + See Also + -------- + banddepth, fboxplot + + References + ---------- + [1] R.J. Hyndman and H.L. Shang, "Rainbow Plots, Bagplots, and Boxplots for + Functional Data", vol. 19, pp. 29-25, 2010. + + Examples + -------- + Load the El Nino dataset. Consists of 60 years worth of Pacific Ocean sea + surface temperature data. + + >>> import matplotlib.pyplot as plt + >>> import statsmodels.api as sm + >>> data = sm.datasets.elnino.load(as_pandas=False) + + Create a rainbow plot: + + >>> fig = plt.figure() + >>> ax = fig.add_subplot(111) + >>> res = sm.graphics.rainbowplot(data.raw_data[:, 1:], ax=ax) + + >>> ax.set_xlabel("Month of the year") + >>> ax.set_ylabel("Sea surface temperature (C)") + >>> ax.set_xticks(np.arange(13, step=3) - 1) + >>> ax.set_xticklabels(["", "Mar", "Jun", "Sep", "Dec"]) + >>> ax.set_xlim([-0.2, 11.2]) + >>> plt.show() + + .. plot:: plots/graphics_functional_rainbowplot.py + + """ + fig, ax = utils.create_mpl_ax(ax) + + if cmap is None: + from matplotlib.cm import rainbow_r + cmap = rainbow_r + + data = np.asarray(data) + if xdata is None: + xdata = np.arange(data.shape[1]) + + # Calculate band depth if required. + if depth is None: + if method not in ['MBD', 'BD2']: + raise ValueError("Unknown value for parameter `method`.") + + depth = banddepth(data, method=method) + else: + if depth.size != data.shape[0]: + raise ValueError("Provided `depth` array is not of correct size.") + + ix_depth = np.argsort(depth)[::-1] + + # Plot all curves, colored by depth + num_curves = data.shape[0] + for ii in range(num_curves): + ax.plot(xdata, data[ix_depth[ii], :], c=cmap(ii / (num_curves - 1.))) + + # Plot the median curve + median_curve = data[ix_depth[0], :] + ax.plot(xdata, median_curve, 'k-', lw=2) + + return fig + + +def banddepth(data, method='MBD'): + """ + Calculate the band depth for a set of functional curves. + + Band depth is an order statistic for functional data (see `fboxplot`), with + a higher band depth indicating larger "centrality". In analog to scalar + data, the functional curve with highest band depth is called the median + curve, and the band made up from the first N/2 of N curves is the 50% + central region. + + Parameters + ---------- + data : ndarray + The vectors of functions to create a functional boxplot from. + The first axis is the function index, the second axis the one along + which the function is defined. So ``data[0, :]`` is the first + functional curve. + method : {'MBD', 'BD2'}, optional + Whether to use the original band depth (with J=2) of [1]_ or the + modified band depth. See Notes for details. + + Returns + ------- + depth : ndarray + Depth values for functional curves. + + Notes + ----- + Functional band depth as an order statistic for functional data was + proposed in [1]_ and applied to functional boxplots and bagplots in [2]_. + + The method 'BD2' checks for each curve whether it lies completely inside + bands constructed from two curves. All permutations of two curves in the + set of curves are used, and the band depth is normalized to one. Due to + the complete curve having to fall within the band, this method yields a lot + of ties. + + The method 'MBD' is similar to 'BD2', but checks the fraction of the curve + falling within the bands. It therefore generates very few ties. + + References + ---------- + .. [1] S. Lopez-Pintado and J. Romo, "On the Concept of Depth for + Functional Data", Journal of the American Statistical Association, + vol. 104, pp. 718-734, 2009. + .. [2] Y. Sun and M.G. Genton, "Functional Boxplots", Journal of + Computational and Graphical Statistics, vol. 20, pp. 1-19, 2011. + + """ + def _band2(x1, x2, curve): + xb = np.vstack([x1, x2]) + if np.any(curve < xb.min(axis=0)) or np.any(curve > xb.max(axis=0)): + res = 0 + else: + res = 1 + + return res + + def _band_mod(x1, x2, curve): + xb = np.vstack([x1, x2]) + res = np.logical_and(curve >= xb.min(axis=0), + curve <= xb.max(axis=0)) + return np.sum(res) / float(res.size) + + if method == 'BD2': + band = _band2 + elif method == 'MBD': + band = _band_mod + else: + raise ValueError("Unknown input value for parameter `method`.") + + num = data.shape[0] + ix = np.arange(num) + depth = [] + for ii in range(num): + res = 0 + for ix1, ix2 in combinations(ix, 2): + res += band(data[ix1, :], data[ix2, :], data[ii, :]) + + # Normalize by number of combinations to get band depth + normfactor = factorial(num) / 2. / factorial(num - 2) + depth.append(float(res) / normfactor) + + return np.asarray(depth) diff --git a/statsmodels/graphics/gofplots.py b/statsmodels/graphics/gofplots.py new file mode 100644 index 0000000..10c48cb --- /dev/null +++ b/statsmodels/graphics/gofplots.py @@ -0,0 +1,860 @@ +from statsmodels.compat.python import lzip, string_types + +import numpy as np +from scipy import stats + +from statsmodels.regression.linear_model import OLS +from statsmodels.tools.tools import add_constant +from statsmodels.tools.decorators import cache_readonly +from statsmodels.distributions import ECDF +from . import utils + +__all__ = ['qqplot', 'qqplot_2samples', 'qqline', 'ProbPlot'] + + +class ProbPlot(object): + """ + Class for convenient construction of Q-Q, P-P, and probability plots. + + Can take arguments specifying the parameters for dist or fit them + automatically. (See fit under kwargs.) + + Parameters + ---------- + data : array-like + 1d data array + dist : A scipy.stats or statsmodels distribution + Compare x against dist. The default is + scipy.stats.distributions.norm (a standard normal). + distargs : tuple + A tuple of arguments passed to dist to specify it fully + so dist.ppf may be called. distargs must not contain loc + or scale. These values must be passed using the loc or + scale inputs. + a : float + Offset for the plotting position of an expected order + statistic, for example. The plotting positions are given + by (i - a)/(nobs - 2*a + 1) for i in range(0,nobs+1) + loc : float + Location parameter for dist + scale : float + Scale parameter for dist + fit : boolean + If fit is false, loc, scale, and distargs are passed to the + distribution. If fit is True then the parameters for dist + are fit automatically using dist.fit. The quantiles are formed + from the standardized data, after subtracting the fitted loc + and dividing by the fitted scale. + + See Also + -------- + scipy.stats.probplot + + Notes + ----- + 1) Depends on matplotlib. + 2) If `fit` is True then the parameters are fit using the + distribution's `fit()` method. + 3) The call signatures for the `qqplot`, `ppplot`, and `probplot` + methods are similar, so examples 1 through 4 apply to all + three methods. + 4) The three plotting methods are summarized below: + ppplot : Probability-Probability plot + Compares the sample and theoretical probabilities (percentiles). + qqplot : Quantile-Quantile plot + Compares the sample and theoretical quantiles + probplot : Probability plot + Same as a Q-Q plot, however probabilities are shown in the scale of + the theoretical distribution (x-axis) and the y-axis contains + unscaled quantiles of the sample data. + + Examples + -------- + The first example shows a Q-Q plot for regression residuals + + >>> # example 1 + >>> import statsmodels.api as sm + >>> from matplotlib import pyplot as plt + >>> data = sm.datasets.longley.load(as_pandas=False) + >>> data.exog = sm.add_constant(data.exog) + >>> model = sm.OLS(data.endog, data.exog) + >>> mod_fit = model.fit() + >>> res = mod_fit.resid # residuals + >>> probplot = sm.ProbPlot(res) + >>> fig = probplot.qqplot() + >>> h = plt.title('Ex. 1 - qqplot - residuals of OLS fit') + >>> plt.show() + + qqplot of the residuals against quantiles of t-distribution with 4 + degrees of freedom: + + >>> # example 2 + >>> import scipy.stats as stats + >>> probplot = sm.ProbPlot(res, stats.t, distargs=(4,)) + >>> fig = probplot.qqplot() + >>> h = plt.title('Ex. 2 - qqplot - residuals against quantiles of t-dist') + >>> plt.show() + + qqplot against same as above, but with mean 3 and std 10: + + >>> # example 3 + >>> probplot = sm.ProbPlot(res, stats.t, distargs=(4,), loc=3, scale=10) + >>> fig = probplot.qqplot() + >>> h = plt.title('Ex. 3 - qqplot - resids vs quantiles of t-dist') + >>> plt.show() + + Automatically determine parameters for t distribution including the + loc and scale: + + >>> # example 4 + >>> probplot = sm.ProbPlot(res, stats.t, fit=True) + >>> fig = probplot.qqplot(line='45') + >>> h = plt.title('Ex. 4 - qqplot - resids vs. quantiles of fitted t-dist') + >>> plt.show() + + A second `ProbPlot` object can be used to compare two separate sample + sets by using the `other` kwarg in the `qqplot` and `ppplot` methods. + + >>> # example 5 + >>> import numpy as np + >>> x = np.random.normal(loc=8.25, scale=2.75, size=37) + >>> y = np.random.normal(loc=8.75, scale=3.25, size=37) + >>> pp_x = sm.ProbPlot(x, fit=True) + >>> pp_y = sm.ProbPlot(y, fit=True) + >>> fig = pp_x.qqplot(line='45', other=pp_y) + >>> h = plt.title('Ex. 5 - qqplot - compare two sample sets') + >>> plt.show() + + In qqplot, sample size of `other` can be equal or larger than the first. + In case of larger, size of `other` samples will be reduced to match the + size of the first by interpolation + + >>> # example 6 + >>> x = np.random.normal(loc=8.25, scale=2.75, size=37) + >>> y = np.random.normal(loc=8.75, scale=3.25, size=57) + >>> pp_x = sm.ProbPlot(x, fit=True) + >>> pp_y = sm.ProbPlot(y, fit=True) + >>> fig = pp_x.qqplot(line='45', other=pp_y) + >>> title = 'Ex. 6 - qqplot - compare different sample sizes' + >>> h = plt.title(title) + >>> plt.show() + + In ppplot, sample size of `other` and the first can be different. `other` + will be used to estimate an empirical cumulative distribution function + (ECDF). ECDF(x) will be plotted against p(x)=0.5/n, 1.5/n, ..., (n-0.5)/n + where x are sorted samples from the first. + + >>> # example 7 + >>> x = np.random.normal(loc=8.25, scale=2.75, size=37) + >>> y = np.random.normal(loc=8.75, scale=3.25, size=57) + >>> pp_x = sm.ProbPlot(x, fit=True) + >>> pp_y = sm.ProbPlot(y, fit=True) + >>> fig = pp_y.ppplot(line='45', other=pp_x) + >>> h = plt.title('Ex. 7A- ppplot - compare two sample sets, other=pp_x') + >>> fig = pp_x.ppplot(line='45', other=pp_y) + >>> h = plt.title('Ex. 7B- ppplot - compare two sample sets, other=pp_y') + >>> plt.show() + + The following plot displays some options, follow the link to see the + code. + + .. plot:: plots/graphics_gofplots_qqplot.py + """ + + def __init__(self, data, dist=stats.norm, fit=False, + distargs=(), a=0, loc=0, scale=1): + + self.data = data + self.a = a + self.nobs = data.shape[0] + self.distargs = distargs + self.fit = fit + + if isinstance(dist, string_types): + dist = getattr(stats, dist) + + self.fit_params = dist.fit(data) + if fit: + self.loc = self.fit_params[-2] + self.scale = self.fit_params[-1] + if len(self.fit_params) > 2: + self.dist = dist(*self.fit_params[:-2], + **dict(loc=0, scale=1)) + else: + self.dist = dist(loc=0, scale=1) + elif distargs or loc != 0 or scale != 1: + try: + self.dist = dist(*distargs, **dict(loc=loc, scale=scale)) + except Exception: + distargs = ', '.join([str(da) for da in distargs]) + cmd = 'dist({distargs}, loc={loc}, scale={scale})' + cmd = cmd.format(distargs=distargs, loc=loc, scale=scale) + raise TypeError('Initializing the distribution failed. This ' + 'can occur if distargs contains loc or scale. ' + 'The distribution initialization command ' + 'is:\n{cmd}'.format(cmd=cmd)) + self.loc = loc + self.scale = scale + else: + self.dist = dist + self.loc = loc + self.scale = scale + + # propertes + self._cache = {} + + @cache_readonly + def theoretical_percentiles(self): + """Theoretical percentiles""" + return plotting_pos(self.nobs, self.a) + + @cache_readonly + def theoretical_quantiles(self): + """Theoretical quantiles""" + try: + return self.dist.ppf(self.theoretical_percentiles) + except TypeError: + msg = '%s requires more parameters to ' \ + 'compute ppf'.format(self.dist.name,) + raise TypeError(msg) + except: + msg = 'failed to compute the ppf of {0}'.format(self.dist.name,) + raise + + @cache_readonly + def sorted_data(self): + """sorted data""" + sorted_data = np.array(self.data, copy=True) + sorted_data.sort() + return sorted_data + + @cache_readonly + def sample_quantiles(self): + """sample quantiles""" + if self.fit and self.loc != 0 and self.scale != 1: + return (self.sorted_data-self.loc)/self.scale + else: + return self.sorted_data + + @cache_readonly + def sample_percentiles(self): + """Sample percentiles""" + quantiles = \ + (self.sorted_data - self.fit_params[-2])/self.fit_params[-1] + return self.dist.cdf(quantiles) + + def ppplot(self, xlabel=None, ylabel=None, line=None, other=None, + ax=None, **plotkwargs): + """ + P-P plot of the percentiles (probabilities) of x versus the + probabilities (percetiles) of a distribution. + + Parameters + ---------- + xlabel : str or None, optional + User-provided lables for the x-axis. If None (default), + other values are used depending on the status of the kwarg `other`. + ylabel : str or None, optional + User-provided lables for the y-axis. If None (default), + other values are used depending on the status of the kwarg `other`. + line : str {'45', 's', 'r', q'} or None, optional + Options for the reference line to which the data is compared: + + - '45': 45-degree line + - 's': standardized line, the expected order statistics are + scaled by the standard deviation of the given sample and have + the mean added to them + - 'r': A regression line is fit + - 'q': A line is fit through the quartiles. + - None: by default no reference line is added to the plot. + + other : ProbPlot, array-like, or None, optional + If provided, ECDF(x) will be plotted against p(x) where x are + sorted samples from `self`. ECDF is an empirical cumulative + distribution function estimated from `other` and + p(x) = 0.5/n, 1.5/n, ..., (n-0.5)/n where n is the number of + samples in `self`. If an array-object is provided, it will be + turned into a `ProbPlot` instance default parameters. If not + provided (default), `self.dist(x)` is be plotted against p(x). + + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure + being created. + **plotkwargs : additional matplotlib arguments to be passed to the + `plot` command. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + """ + if other is not None: + check_other = isinstance(other, ProbPlot) + if not check_other: + other = ProbPlot(other) + + p_x = self.theoretical_percentiles + ecdf_x = ECDF(other.sample_quantiles)(self.sample_quantiles) + + fig, ax = _do_plot(p_x, ecdf_x, self.dist, ax=ax, line=line, + **plotkwargs) + + if xlabel is None: + xlabel = 'Probabilities of 2nd Sample' + if ylabel is None: + ylabel = 'Probabilities of 1st Sample' + + else: + fig, ax = _do_plot(self.theoretical_percentiles, + self.sample_percentiles, + self.dist, ax=ax, line=line, + **plotkwargs) + if xlabel is None: + xlabel = "Theoretical Probabilities" + if ylabel is None: + ylabel = "Sample Probabilities" + + ax.set_xlabel(xlabel) + ax.set_ylabel(ylabel) + + ax.set_xlim([0.0, 1.0]) + ax.set_ylim([0.0, 1.0]) + + return fig + + def qqplot(self, xlabel=None, ylabel=None, line=None, other=None, + ax=None, **plotkwargs): + """ + Q-Q plot of the quantiles of x versus the quantiles/ppf of a + distribution or the quantiles of another `ProbPlot` instance. + + Parameters + ---------- + xlabel, ylabel : str or None, optional + User-provided lables for the x-axis and y-axis. If None (default), + other values are used depending on the status of the kwarg `other`. + line : str {'45', 's', 'r', q'} or None, optional + Options for the reference line to which the data is compared: + + - '45' - 45-degree line + - 's' - standardized line, the expected order statistics are scaled + by the standard deviation of the given sample and have the mean + added to them + - 'r' - A regression line is fit + - 'q' - A line is fit through the quartiles. + - None - by default no reference line is added to the plot. + + other : `ProbPlot` instance, array-like, or None, optional + If provided, the sample quantiles of this `ProbPlot` instance are + plotted against the sample quantiles of the `other` `ProbPlot` + instance. Sample size of `other` must be equal or larger than + this `ProbPlot` instance. If the sample size is larger, sample + quantiles of `other` will be interpolated to match the sample size + of this `ProbPlot` instance. If an array-like object is provided, + it will be turned into a `ProbPlot` instance using default + parameters. If not provided (default), the theoretical quantiles + are used. + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure + being created. + **plotkwargs : additional matplotlib arguments to be passed to the + `plot` command. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + """ + if other is not None: + check_other = isinstance(other, ProbPlot) + if not check_other: + other = ProbPlot(other) + + s_self = self.sample_quantiles + s_other = other.sample_quantiles + + if len(s_self) > len(s_other): + raise ValueError("Sample size of `other` must be equal or " + + "larger than this `ProbPlot` instance") + elif len(s_self) < len(s_other): + # Use quantiles of the smaller set and interpolate quantiles of + # the larger data set + p = plotting_pos(self.nobs, self.a) + s_other = stats.mstats.mquantiles(s_other, p) + + fig, ax = _do_plot(s_other, s_self, self.dist, ax=ax, line=line, + **plotkwargs) + + if xlabel is None: + xlabel = 'Quantiles of 2nd Sample' + if ylabel is None: + ylabel = 'Quantiles of 1st Sample' + + else: + fig, ax = _do_plot(self.theoretical_quantiles, + self.sample_quantiles, + self.dist, ax=ax, line=line, + **plotkwargs) + if xlabel is None: + xlabel = "Theoretical Quantiles" + if ylabel is None: + ylabel = "Sample Quantiles" + + ax.set_xlabel(xlabel) + ax.set_ylabel(ylabel) + + return fig + + def probplot(self, xlabel=None, ylabel=None, line=None, + exceed=False, ax=None, **plotkwargs): + """ + Probability plot of the unscaled quantiles of x versus the + probabilities of a distibution (not to be confused with a P-P plot). + + The x-axis is scaled linearly with the quantiles, but the probabilities + are used to label the axis. + + Parameters + ---------- + xlabel, ylabel : str or None, optional + User-provided lables for the x-axis and y-axis. If None (default), + other values are used depending on the status of the kwarg `other`. + line : str {'45', 's', 'r', q'} or None, optional + Options for the reference line to which the data is compared: + + - '45' - 45-degree line + - 's' - standardized line, the expected order statistics are scaled + by the standard deviation of the given sample and have the mean + added to them + - 'r' - A regression line is fit + - 'q' - A line is fit through the quartiles. + - None - by default no reference line is added to the plot. + + exceed : boolean, optional + + - If False (default) the raw sample quantiles are plotted against + the theoretical quantiles, show the probability that a sample + will not exceed a given value + - If True, the theoretical quantiles are flipped such that the + figure displays the probability that a sample will exceed a + given value. + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure + being created. + **plotkwargs : additional matplotlib arguments to be passed to the + `plot` command. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + """ + if exceed: + fig, ax = _do_plot(self.theoretical_quantiles[::-1], + self.sorted_data, + self.dist, ax=ax, line=line, + **plotkwargs) + if xlabel is None: + xlabel = 'Probability of Exceedance (%)' + + else: + fig, ax = _do_plot(self.theoretical_quantiles, + self.sorted_data, + self.dist, ax=ax, line=line, + **plotkwargs) + if xlabel is None: + xlabel = 'Non-exceedance Probability (%)' + + if ylabel is None: + ylabel = "Sample Quantiles" + + ax.set_xlabel(xlabel) + ax.set_ylabel(ylabel) + _fmt_probplot_axis(ax, self.dist, self.nobs) + + return fig + + +def qqplot(data, dist=stats.norm, distargs=(), a=0, loc=0, scale=1, fit=False, + line=None, ax=None, **plotkwargs): + """ + Q-Q plot of the quantiles of x versus the quantiles/ppf of a distribution. + + Can take arguments specifying the parameters for dist or fit them + automatically. (See fit under Parameters.) + + Parameters + ---------- + data : array-like + 1d data array + dist : A scipy.stats or statsmodels distribution + Compare x against dist. The default + is scipy.stats.distributions.norm (a standard normal). + distargs : tuple + A tuple of arguments passed to dist to specify it fully + so dist.ppf may be called. + loc : float + Location parameter for dist + a : float + Offset for the plotting position of an expected order statistic, for + example. The plotting positions are given by (i - a)/(nobs - 2*a + 1) + for i in range(0,nobs+1) + scale : float + Scale parameter for dist + fit : boolean + If fit is false, loc, scale, and distargs are passed to the + distribution. If fit is True then the parameters for dist + are fit automatically using dist.fit. The quantiles are formed + from the standardized data, after subtracting the fitted loc + and dividing by the fitted scale. + line : str {'45', 's', 'r', q'} or None + Options for the reference line to which the data is compared: + + - '45' - 45-degree line + - 's' - standardized line, the expected order statistics are scaled + by the standard deviation of the given sample and have the mean + added to them + - 'r' - A regression line is fit + - 'q' - A line is fit through the quartiles. + - None - by default no reference line is added to the plot. + + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure being + created. + **plotkwargs : additional matplotlib arguments to be passed to the + `plot` command. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + + See Also + -------- + scipy.stats.probplot + + Examples + -------- + >>> import statsmodels.api as sm + >>> from matplotlib import pyplot as plt + >>> data = sm.datasets.longley.load(as_pandas=False) + >>> data.exog = sm.add_constant(data.exog) + >>> mod_fit = sm.OLS(data.endog, data.exog).fit() + >>> res = mod_fit.resid # residuals + >>> fig = sm.qqplot(res) + >>> plt.show() + + qqplot of the residuals against quantiles of t-distribution with 4 degrees + of freedom: + + >>> import scipy.stats as stats + >>> fig = sm.qqplot(res, stats.t, distargs=(4,)) + >>> plt.show() + + qqplot against same as above, but with mean 3 and std 10: + + >>> fig = sm.qqplot(res, stats.t, distargs=(4,), loc=3, scale=10) + >>> plt.show() + + Automatically determine parameters for t distribution including the + loc and scale: + + >>> fig = sm.qqplot(res, stats.t, fit=True, line='45') + >>> plt.show() + + The following plot displays some options, follow the link to see the code. + + .. plot:: plots/graphics_gofplots_qqplot.py + + Notes + ----- + Depends on matplotlib. If `fit` is True then the parameters are fit using + the distribution's fit() method. + + """ + probplot = ProbPlot(data, dist=dist, distargs=distargs, + fit=fit, a=a, loc=loc, scale=scale) + fig = probplot.qqplot(ax=ax, line=line, **plotkwargs) + return fig + + +def qqplot_2samples(data1, data2, xlabel=None, ylabel=None, line=None, + ax=None): + """ + Q-Q Plot of two samples' quantiles. + + Can take either two `ProbPlot` instances or two array-like objects. In the + case of the latter, both inputs will be converted to `ProbPlot` instances + using only the default values - so use `ProbPlot` instances if + finer-grained control of the quantile computations is required. + + Parameters + ---------- + data1, data2 : array-like (1d) or `ProbPlot` instances + xlabel, ylabel : str or None + User-provided labels for the x-axis and y-axis. If None (default), + other values are used. + line : str {'45', 's', 'r', q'} or None + Options for the reference line to which the data is compared: + + - '45' - 45-degree line + - 's' - standardized line, the expected order statistics are scaled + by the standard deviation of the given sample and have the mean + added to them + - 'r' - A regression line is fit + - 'q' - A line is fit through the quartiles. + - None - by default no reference line is added to the plot. + + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure being + created. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + + See Also + -------- + scipy.stats.probplot + + Examples + -------- + >>> import statsmodels.api as sm + >>> import numpy as np + >>> import matplotlib.pyplot as plt + >>> from statsmodels.graphics.gofplots import qqplot_2samples + >>> x = np.random.normal(loc=8.5, scale=2.5, size=37) + >>> y = np.random.normal(loc=8.0, scale=3.0, size=37) + >>> pp_x = sm.ProbPlot(x) + >>> pp_y = sm.ProbPlot(y) + >>> qqplot_2samples(pp_x, pp_y) + >>> plt.show() + + .. plot:: plots/graphics_gofplots_qqplot_2samples.py + + >>> fig = qqplot_2samples(pp_x, pp_y, xlabel=None, ylabel=None, \ + ... line=None, ax=None) + + Notes + ----- + 1) Depends on matplotlib. + 2) If `data1` and `data2` are not `ProbPlot` instances, instances will be + created using the default parameters. Therefore, it is recommended to use + `ProbPlot` instance if fine-grained control is needed in the computation + of the quantiles. + + """ + if not isinstance(data1, ProbPlot): + data1 = ProbPlot(data1) + + if not isinstance(data2, ProbPlot): + data2 = ProbPlot(data2) + + fig = data1.qqplot(xlabel=xlabel, ylabel=ylabel, + line=line, other=data2, ax=ax) + + return fig + + +def qqline(ax, line, x=None, y=None, dist=None, fmt='r-'): + """ + Plot a reference line for a qqplot. + + Parameters + ---------- + ax : matplotlib axes instance + The axes on which to plot the line + line : str {'45','r','s','q'} + Options for the reference line to which the data is compared.: + + - '45' - 45-degree line + - 's' - standardized line, the expected order statistics are scaled by + the standard deviation of the given sample and have the mean + added to them + - 'r' - A regression line is fit + - 'q' - A line is fit through the quartiles. + - None - By default no reference line is added to the plot. + + x : array + X data for plot. Not needed if line is '45'. + y : array + Y data for plot. Not needed if line is '45'. + dist : scipy.stats.distribution + A scipy.stats distribution, needed if line is 'q'. + + Notes + ----- + There is no return value. The line is plotted on the given `ax`. + + Examples + -------- + Import the food expenditure dataset. Plot annual food expendeture on x-axis + and household income on y-axis. Use qqline to add regression line into the + plot. + + >>> import statsmodels.api as sm + >>> import numpy as np + >>> import matplotlib.pyplot as plt + >>> from statsmodels.graphics.gofplots import qqline + + >>> foodexp = sm.datasets.engel.load(as_pandas=False) + >>> x = foodexp.exog + >>> y = foodexp.endog + >>> ax = plt.subplot(111) + >>> plt.scatter(x, y) + >>> ax.set_xlabel(foodexp.exog_name[0]) + >>> ax.set_ylabel(foodexp.endog_name) + >>> qqline(ax, 'r', x, y) + >>> plt.show() + + .. plot:: plots/graphics_gofplots_qqplot_qqline.py + + """ + if line == '45': + end_pts = lzip(ax.get_xlim(), ax.get_ylim()) + end_pts[0] = min(end_pts[0]) + end_pts[1] = max(end_pts[1]) + ax.plot(end_pts, end_pts, fmt) + ax.set_xlim(end_pts) + ax.set_ylim(end_pts) + return # does this have any side effects? + if x is None and y is None: + raise ValueError("If line is not 45, x and y cannot be None.") + elif line == 'r': + # could use ax.lines[0].get_xdata(), get_ydata(), + # but don't know axes are 'clean' + y = OLS(y, add_constant(x)).fit().fittedvalues + ax.plot(x,y,fmt) + elif line == 's': + m,b = y.std(), y.mean() + ref_line = x*m + b + ax.plot(x, ref_line, fmt) + elif line == 'q': + _check_for_ppf(dist) + q25 = stats.scoreatpercentile(y, 25) + q75 = stats.scoreatpercentile(y, 75) + theoretical_quartiles = dist.ppf([0.25, 0.75]) + m = (q75 - q25) / np.diff(theoretical_quartiles) + b = q25 - m*theoretical_quartiles[0] + ax.plot(x, m*x + b, fmt) + + +# about 10x faster than plotting_position in sandbox and mstats +def plotting_pos(nobs, a): + """ + Generates sequence of plotting positions + + Parameters + ---------- + nobs : int + Number of probability points to plot + a : float + Offset for the plotting position of an expected order statistic, for + example. + + Returns + ------- + plotting_positions : array + The plotting positions + + Notes + ----- + The plotting positions are given by (i - a)/(nobs - 2*a + 1) for i in + range(0,nobs+1) + + See Also + -------- + scipy.stats.mstats.plotting_positions + """ + return (np.arange(1., nobs + 1) - a)/(nobs - 2 * a + 1) + + +def _fmt_probplot_axis(ax, dist, nobs): + """ + Formats a theoretical quantile axis to display the corresponding + probabilities on the quantiles' scale. + + Parameteters + ------------ + ax : Matplotlib AxesSubplot instance, optional + The axis to be formatted + nobs : scalar + Numbero of observations in the sample + dist : scipy.stats.distribution + A scipy.stats distribution sufficiently specified to impletment its + ppf() method. + + Returns + ------- + There is no return value. This operates on `ax` in place + """ + _check_for_ppf(dist) + if nobs < 50: + axis_probs = np.array([1, 2, 5, 10, 20, 30, 40, 50, 60, + 70, 80, 90, 95, 98, 99, ]) / 100.0 + elif nobs < 500: + axis_probs = np.array([0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 30, 40, 50, 60, + 70, 80, 90, 95, 98, 99, 99.5, 99.8, + 99.9]) / 100.0 + else: + axis_probs = np.array([0.01, 0.02, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10, + 20, 30, 40, 50, 60, 70, 80, 90, 95, 98, 99, + 99.5, 99.8, 99.9, 99.95, 99.98, 99.99]) / 100.0 + axis_qntls = dist.ppf(axis_probs) + ax.set_xticks(axis_qntls) + ax.set_xticklabels(axis_probs*100, rotation=45, + rotation_mode='anchor', + horizontalalignment='right', + verticalalignment='center') + ax.set_xlim([axis_qntls.min(), axis_qntls.max()]) + + +def _do_plot(x, y, dist=None, line=False, ax=None, fmt='bo', **kwargs): + """ + Boiler plate plotting function for the `ppplot`, `qqplot`, and + `probplot` methods of the `ProbPlot` class + + Parameteters + ------------ + x, y : array-like + Data to be plotted + dist : scipy.stats.distribution + A scipy.stats distribution, needed if `line` is 'q'. + line : str {'45', 's', 'r', q'} or None + Options for the reference line to which the data is compared. + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure being + created. + fmt : str, optional + matplotlib-compatible formatting string for the data markers + kwargs : keywords + These are passed to matplotlib.plot + + Returns + ------- + fig : Matplotlib Figure instance + ax : Matplotlib AxesSubplot instance (see Parameters) + + """ + fig, ax = utils.create_mpl_ax(ax) + ax.set_xmargin(0.02) + ax.plot(x, y, fmt, **kwargs) + if line: + if line not in ['r','q','45','s']: + msg = "%s option for line not understood" % line + raise ValueError(msg) + + qqline(ax, line, x=x, y=y, dist=dist) + + return fig, ax + + +def _check_for_ppf(dist): + if not hasattr(dist, 'ppf'): + raise ValueError("distribution must have a ppf method") diff --git a/statsmodels/graphics/mosaicplot.py b/statsmodels/graphics/mosaicplot.py new file mode 100644 index 0000000..68ab9a3 --- /dev/null +++ b/statsmodels/graphics/mosaicplot.py @@ -0,0 +1,667 @@ +"""Create a mosaic plot from a contingency table. + +It allows to visualize multivariate categorical data in a rigorous +and informative way. + +see the docstring of the mosaic function for more informations. +""" +# Author: Enrico Giampieri - 21 Jan 2013 + +from __future__ import division +from statsmodels.compat.python import (iteritems, iterkeys, lrange, string_types, lzip, + itervalues, zip, range) +import numpy as np +from collections import OrderedDict +from itertools import product + +from numpy import iterable, r_, cumsum, array +from statsmodels.graphics import utils +from pandas import DataFrame + +__all__ = ["mosaic"] + + +def _normalize_split(proportion): + """ + return a list of proportions of the available space given the division + if only a number is given, it will assume a split in two pieces + """ + if not iterable(proportion): + if proportion == 0: + proportion = array([0.0, 1.0]) + elif proportion >= 1: + proportion = array([1.0, 0.0]) + elif proportion < 0: + raise ValueError("proportions should be positive," + "given value: {}".format(proportion)) + else: + proportion = array([proportion, 1.0 - proportion]) + proportion = np.asarray(proportion, dtype=float) + if np.any(proportion < 0): + raise ValueError("proportions should be positive," + "given value: {}".format(proportion)) + if np.allclose(proportion, 0): + raise ValueError("at least one proportion should be " + "greater than zero".format(proportion)) + # ok, data are meaningful, so go on + if len(proportion) < 2: + return array([0.0, 1.0]) + left = r_[0, cumsum(proportion)] + left /= left[-1] * 1.0 + return left + + +def _split_rect(x, y, width, height, proportion, horizontal=True, gap=0.05): + """ + Split the given rectangle in n segments whose proportion is specified + along the given axis if a gap is inserted, they will be separated by a + certain amount of space, retaining the relative proportion between them + a gap of 1 correspond to a plot that is half void and the remaining half + space is proportionally divided among the pieces. + """ + x, y, w, h = float(x), float(y), float(width), float(height) + if (w < 0) or (h < 0): + raise ValueError("dimension of the square less than" + "zero w={} h=()".format(w, h)) + proportions = _normalize_split(proportion) + + # extract the starting point and the dimension of each subdivision + # in respect to the unit square + starting = proportions[:-1] + amplitude = proportions[1:] - starting + + # how much each extrema is going to be displaced due to gaps + starting += gap * np.arange(len(proportions) - 1) + + # how much the squares plus the gaps are extended + extension = starting[-1] + amplitude[-1] - starting[0] + + # normalize everything for fit again in the original dimension + starting /= extension + amplitude /= extension + + # bring everything to the original square + starting = (x if horizontal else y) + starting * (w if horizontal else h) + amplitude = amplitude * (w if horizontal else h) + + # create each 4-tuple for each new block + results = [(s, y, a, h) if horizontal else (x, s, w, a) + for s, a in zip(starting, amplitude)] + return results + + +def _reduce_dict(count_dict, partial_key): + """ + Make partial sum on a counter dict. + Given a match for the beginning of the category, it will sum each value. + """ + L = len(partial_key) + count = sum(v for k, v in iteritems(count_dict) if k[:L] == partial_key) + return count + + +def _key_splitting(rect_dict, keys, values, key_subset, horizontal, gap): + """ + Given a dictionary where each entry is a rectangle, a list of key and + value (count of elements in each category) it split each rect accordingly, + as long as the key start with the tuple key_subset. The other keys are + returned without modification. + """ + result = OrderedDict() + L = len(key_subset) + for name, (x, y, w, h) in iteritems(rect_dict): + if key_subset == name[:L]: + # split base on the values given + divisions = _split_rect(x, y, w, h, values, horizontal, gap) + for key, rect in zip(keys, divisions): + result[name + (key,)] = rect + else: + result[name] = (x, y, w, h) + return result + + +def _tuplify(obj): + """convert an object in a tuple of strings (even if it is not iterable, + like a single integer number, but keep the string healthy) + """ + if np.iterable(obj) and not isinstance(obj, string_types): + res = tuple(str(o) for o in obj) + else: + res = (str(obj),) + return res + + +def _categories_level(keys): + """use the Ordered dict to implement a simple ordered set + return each level of each category + [[key_1_level_1,key_2_level_1],[key_1_level_2,key_2_level_2]] + """ + res = [] + for i in zip(*(keys)): + tuplefied = _tuplify(i) + res.append(list(OrderedDict([(j, None) for j in tuplefied]))) + return res + + +def _hierarchical_split(count_dict, horizontal=True, gap=0.05): + """ + Split a square in a hierarchical way given a contingency table. + + Hierarchically split the unit square in alternate directions + in proportion to the subdivision contained in the contingency table + count_dict. This is the function that actually perform the tiling + for the creation of the mosaic plot. If the gap array has been specified + it will insert a corresponding amount of space (proportional to the + unit lenght), while retaining the proportionality of the tiles. + + Parameters + ---------- + count_dict : dict + Dictionary containing the contingency table. + Each category should contain a non-negative number + with a tuple as index. It expects that all the combination + of keys to be representes; if that is not true, will + automatically consider the missing values as 0 + horizontal : bool + The starting direction of the split (by default along + the horizontal axis) + gap : float or array of floats + The list of gaps to be applied on each subdivision. + If the lenght of the given array is less of the number + of subcategories (or if it's a single number) it will extend + it with exponentially decreasing gaps + + Returns + --------- + base_rect : dict + A dictionary containing the result of the split. + To each key is associated a 4-tuple of coordinates + that are required to create the corresponding rectangle: + + 0 - x position of the lower left corner + 1 - y position of the lower left corner + 2 - width of the rectangle + 3 - height of the rectangle + """ + # this is the unit square that we are going to divide + base_rect = OrderedDict([(tuple(), (0, 0, 1, 1))]) + # get the list of each possible value for each level + categories_levels = _categories_level(list(iterkeys(count_dict))) + L = len(categories_levels) + + # recreate the gaps vector starting from an int + if not np.iterable(gap): + gap = [gap / 1.5 ** idx for idx in range(L)] + # extend if it's too short + if len(gap) < L: + last = gap[-1] + gap = list(*gap) + [last / 1.5 ** idx for idx in range(L)] + # trim if it's too long + gap = gap[:L] + # put the count dictionay in order for the keys + # this will allow some code simplification + count_ordered = OrderedDict([(k, count_dict[k]) + for k in list(product(*categories_levels))]) + for cat_idx, cat_enum in enumerate(categories_levels): + # get the partial key up to the actual level + base_keys = list(product(*categories_levels[:cat_idx])) + for key in base_keys: + # for each partial and each value calculate how many + # observation we have in the counting dictionary + part_count = [_reduce_dict(count_ordered, key + (partial,)) + for partial in cat_enum] + # reduce the gap for subsequents levels + new_gap = gap[cat_idx] + # split the given subkeys in the rectangle dictionary + base_rect = _key_splitting(base_rect, cat_enum, part_count, key, + horizontal, new_gap) + horizontal = not horizontal + return base_rect + + +def _single_hsv_to_rgb(hsv): + """Transform a color from the hsv space to the rgb.""" + from matplotlib.colors import hsv_to_rgb + return hsv_to_rgb(array(hsv).reshape(1, 1, 3)).reshape(3) + + +def _create_default_properties(data): + """"Create the default properties of the mosaic given the data + first it will varies the color hue (first category) then the color + saturation (second category) and then the color value + (third category). If a fourth category is found, it will put + decoration on the rectangle. Doesn't manage more than four + level of categories + """ + categories_levels = _categories_level(list(iterkeys(data))) + Nlevels = len(categories_levels) + # first level, the hue + L = len(categories_levels[0]) + # hue = np.linspace(1.0, 0.0, L+1)[:-1] + hue = np.linspace(0.0, 1.0, L + 2)[:-2] + # second level, the saturation + L = len(categories_levels[1]) if Nlevels > 1 else 1 + saturation = np.linspace(0.5, 1.0, L + 1)[:-1] + # third level, the value + L = len(categories_levels[2]) if Nlevels > 2 else 1 + value = np.linspace(0.5, 1.0, L + 1)[:-1] + # fourth level, the hatch + L = len(categories_levels[3]) if Nlevels > 3 else 1 + hatch = ['', '/', '-', '|', '+'][:L + 1] + # convert in list and merge with the levels + hue = lzip(list(hue), categories_levels[0]) + saturation = lzip(list(saturation), + categories_levels[1] if Nlevels > 1 else ['']) + value = lzip(list(value), + categories_levels[2] if Nlevels > 2 else ['']) + hatch = lzip(list(hatch), + categories_levels[3] if Nlevels > 3 else ['']) + # create the properties dictionary + properties = {} + for h, s, v, t in product(hue, saturation, value, hatch): + hv, hn = h + sv, sn = s + vv, vn = v + tv, tn = t + level = (hn,) + ((sn,) if sn else tuple()) + level = level + ((vn,) if vn else tuple()) + level = level + ((tn,) if tn else tuple()) + hsv = array([hv, sv, vv]) + prop = {'color': _single_hsv_to_rgb(hsv), 'hatch': tv, 'lw': 0} + properties[level] = prop + return properties + + +def _normalize_data(data, index): + """normalize the data to a dict with tuples of strings as keys + right now it works with: + + 0 - dictionary (or equivalent mappable) + 1 - pandas.Series with simple or hierarchical indexes + 2 - numpy.ndarrays + 3 - everything that can be converted to a numpy array + 4 - pandas.DataFrame (via the _normalize_dataframe function) + """ + # if data is a dataframe we need to take a completely new road + # before coming back here. Use the hasattr to avoid importing + # pandas explicitly + if hasattr(data, 'pivot') and hasattr(data, 'groupby'): + data = _normalize_dataframe(data, index) + index = None + # can it be used as a dictionary? + try: + items = list(iteritems(data)) + except AttributeError: + # ok, I cannot use the data as a dictionary + # Try to convert it to a numpy array, or die trying + data = np.asarray(data) + temp = OrderedDict() + for idx in np.ndindex(data.shape): + name = tuple(i for i in idx) + temp[name] = data[idx] + data = temp + items = list(iteritems(data)) + # make all the keys a tuple, even if simple numbers + data = OrderedDict([_tuplify(k), v] for k, v in items) + categories_levels = _categories_level(list(iterkeys(data))) + # fill the void in the counting dictionary + indexes = product(*categories_levels) + contingency = OrderedDict([(k, data.get(k, 0)) for k in indexes]) + data = contingency + # reorder the keys order according to the one specified by the user + # or if the index is None convert it into a simple list + # right now it doesn't do any check, but can be modified in the future + index = lrange(len(categories_levels)) if index is None else index + contingency = OrderedDict() + for key, value in iteritems(data): + new_key = tuple(key[i] for i in index) + contingency[new_key] = value + data = contingency + return data + + +def _normalize_dataframe(dataframe, index): + """Take a pandas DataFrame and count the element present in the + given columns, return a hierarchical index on those columns + """ + #groupby the given keys, extract the same columns and count the element + # then collapse them with a mean + data = dataframe[index].dropna() + grouped = data.groupby(index, sort=False) + counted = grouped[index].count() + averaged = counted.mean(axis=1) + # Fill empty missing with 0, see GH5639 + averaged = averaged.fillna(0.0) + return averaged + + +def _statistical_coloring(data): + """evaluate colors from the indipendence properties of the matrix + It will encounter problem if one category has all zeros + """ + data = _normalize_data(data, None) + categories_levels = _categories_level(list(iterkeys(data))) + Nlevels = len(categories_levels) + total = 1.0 * sum(v for v in itervalues(data)) + # count the proportion of observation + # for each level that has the given name + # at each level + levels_count = [] + for level_idx in range(Nlevels): + proportion = {} + for level in categories_levels[level_idx]: + proportion[level] = 0.0 + for key, value in iteritems(data): + if level == key[level_idx]: + proportion[level] += value + proportion[level] /= total + levels_count.append(proportion) + # for each key I obtain the expected value + # and it's standard deviation from a binomial distribution + # under the hipothesys of independence + expected = {} + for key, value in iteritems(data): + base = 1.0 + for i, k in enumerate(key): + base *= levels_count[i][k] + expected[key] = base * total, np.sqrt(total * base * (1.0 - base)) + # now we have the standard deviation of distance from the + # expected value for each tile. We create the colors from this + sigmas = dict((k, (data[k] - m) / s) for k, (m, s) in iteritems(expected)) + props = {} + for key, dev in iteritems(sigmas): + red = 0.0 if dev < 0 else (dev / (1 + dev)) + blue = 0.0 if dev > 0 else (dev / (-1 + dev)) + green = (1.0 - red - blue) / 2.0 + hatch = 'x' if dev > 2 else 'o' if dev < -2 else '' + props[key] = {'color': [red, green, blue], 'hatch': hatch} + return props + + +def _get_position(x, w, h, W): + if W == 0: + return x + return (x + w / 2.0) * w * h / W + + +def _create_labels(rects, horizontal, ax, rotation): + """find the position of the label for each value of each category + + right now it supports only up to the four categories + + ax: the axis on which the label should be applied + rotation: the rotation list for each side + """ + categories = _categories_level(list(iterkeys(rects))) + if len(categories) > 4: + msg = ("maximum of 4 level supported for axes labeling... and 4" + "is already a lot of levels, are you sure you need them all?") + raise ValueError(msg) + labels = {} + #keep it fixed as will be used a lot of times + items = list(iteritems(rects)) + vertical = not horizontal + + #get the axis ticks and labels locator to put the correct values! + ax2 = ax.twinx() + ax3 = ax.twiny() + #this is the order of execution for horizontal disposition + ticks_pos = [ax.set_xticks, ax.set_yticks, ax3.set_xticks, ax2.set_yticks] + ticks_lab = [ax.set_xticklabels, ax.set_yticklabels, + ax3.set_xticklabels, ax2.set_yticklabels] + #for the vertical one, rotate it by one + if vertical: + ticks_pos = ticks_pos[1:] + ticks_pos[:1] + ticks_lab = ticks_lab[1:] + ticks_lab[:1] + #clean them + for pos, lab in zip(ticks_pos, ticks_lab): + pos([]) + lab([]) + #for each level, for each value in the level, take the mean of all + #the sublevel that correspond to that partial key + for level_idx, level in enumerate(categories): + #this dictionary keep the labels only for this level + level_ticks = dict() + for value in level: + #to which level it should refer to get the preceding + #values of labels? it's rather a tricky question... + #this is dependent on the side. It's a very crude management + #but I couldn't think a more general way... + if horizontal: + if level_idx == 3: + index_select = [-1, -1, -1] + else: + index_select = [+0, -1, -1] + else: + if level_idx == 3: + index_select = [+0, -1, +0] + else: + index_select = [-1, -1, -1] + #now I create the base key name and append the current value + #It will search on all the rects to find the corresponding one + #and use them to evaluate the mean position + basekey = tuple(categories[i][index_select[i]] + for i in range(level_idx)) + basekey = basekey + (value,) + subset = dict((k, v) for k, v in items + if basekey == k[:level_idx + 1]) + #now I extract the center of all the tiles and make a weighted + #mean of all these center on the area of the tile + #this should give me the (more or less) correct position + #of the center of the category + + vals = list(itervalues(subset)) + W = sum(w * h for (x, y, w, h) in vals) + x_lab = sum(_get_position(x, w, h, W) for (x, y, w, h) in vals) + y_lab = sum(_get_position(y, h, w, W) for (x, y, w, h) in vals) + #now base on the ordering, select which position to keep + #needs to be written in a more general form of 4 level are enough? + #should give also the horizontal and vertical alignment + side = (level_idx + vertical) % 4 + level_ticks[value] = y_lab if side % 2 else x_lab + #now we add the labels of this level to the correct axis + + ticks_pos[level_idx](list(itervalues(level_ticks))) + ticks_lab[level_idx](list(iterkeys(level_ticks)), + rotation=rotation[level_idx]) + return labels + + +def mosaic(data, index=None, ax=None, horizontal=True, gap=0.005, + properties=lambda key: None, labelizer=None, + title='', statistic=False, axes_label=True, + label_rotation=0.0): + """Create a mosaic plot from a contingency table. + + It allows to visualize multivariate categorical data in a rigorous + and informative way. + + Parameters + ---------- + data : dict, pandas.Series, np.ndarray, pandas.DataFrame + The contingency table that contains the data. + Each category should contain a non-negative number + with a tuple as index. It expects that all the combination + of keys to be representes; if that is not true, will + automatically consider the missing values as 0. The order + of the keys will be the same as the one of insertion. + If a dict of a Series (or any other dict like object) + is used, it will take the keys as labels. If a + np.ndarray is provided, it will generate a simple + numerical labels. + index: list, optional + Gives the preferred order for the category ordering. If not specified + will default to the given order. It doesn't support named indexes + for hierarchical Series. If a DataFrame is provided, it expects + a list with the name of the columns. + ax : matplotlib.Axes, optional + The graph where display the mosaic. If not given, will + create a new figure + horizontal : bool, optional (default True) + The starting direction of the split (by default along + the horizontal axis) + gap : float or array of floats + The list of gaps to be applied on each subdivision. + If the lenght of the given array is less of the number + of subcategories (or if it's a single number) it will extend + it with exponentially decreasing gaps + labelizer : function (key) -> string, optional + A function that generate the text to display at the center of + each tile base on the key of that tile + properties : function (key) -> dict, optional + A function that for each tile in the mosaic take the key + of the tile and returns the dictionary of properties + of the generated Rectangle, like color, hatch or similar. + A default properties set will be provided fot the keys whose + color has not been defined, and will use color variation to help + visually separates the various categories. It should return None + to indicate that it should use the default property for the tile. + A dictionary of the properties for each key can be passed, + and it will be internally converted to the correct function + statistic: bool, optional (default False) + if true will use a crude statistical model to give colors to the plot. + If the tile has a containt that is more than 2 standard deviation + from the expected value under independence hipotesys, it will + go from green to red (for positive deviations, blue otherwise) and + will acquire an hatching when crosses the 3 sigma. + title: string, optional + The title of the axis + axes_label: boolean, optional + Show the name of each value of each category + on the axis (default) or hide them. + label_rotation: float or list of float + the rotation of the axis label (if present). If a list is given + each axis can have a different rotation + + Returns + --------- + fig : matplotlib.Figure + The generate figure + rects : dict + A dictionary that has the same keys of the original + dataset, that holds a reference to the coordinates of the + tile and the Rectangle that represent it + + References + ---------- + A Brief History of the Mosaic Display + Michael Friendly, York University, Psychology Department + Journal of Computational and Graphical Statistics, 2001 + + Mosaic Displays for Loglinear Models. + Michael Friendly, York University, Psychology Department + Proceedings of the Statistical Graphics Section, 1992, 61-68. + + Mosaic displays for multi-way contingecy tables. + Michael Friendly, York University, Psychology Department + Journal of the american statistical association + March 1994, Vol. 89, No. 425, Theory and Methods + + Examples + ---------- + >>> import numpy as np + >>> import pandas as pd + >>> import matplotlib.pyplot as plt + >>> from statsmodels.graphics.mosaicplot import mosaic + + The most simple use case is to take a dictionary and plot the result + + >>> data = {'a': 10, 'b': 15, 'c': 16} + >>> mosaic(data, title='basic dictionary') + >>> plt.show() + + A more useful example is given by a dictionary with multiple indices. + In this case we use a wider gap to a better visual separation of the + resulting plot + + >>> data = {('a', 'b'): 1, ('a', 'c'): 2, ('d', 'b'): 3, ('d', 'c'): 4} + >>> mosaic(data, gap=0.05, title='complete dictionary') + >>> plt.show() + + The same data can be given as a simple or hierarchical indexed Series + + >>> rand = np.random.random + >>> from itertools import product + >>> tuples = list(product(['bar', 'baz', 'foo', 'qux'], ['one', 'two'])) + >>> index = pd.MultiIndex.from_tuples(tuples, names=['first', 'second']) + >>> data = pd.Series(rand(8), index=index) + >>> mosaic(data, title='hierarchical index series') + >>> plt.show() + + The third accepted data structureis the np array, for which a + very simple index will be created. + + >>> rand = np.random.random + >>> data = 1+rand((2,2)) + >>> mosaic(data, title='random non-labeled array') + >>> plt.show() + + If you need to modify the labeling and the coloring you can give + a function tocreate the labels and one with the graphical properties + starting from the key tuple + + >>> data = {'a': 10, 'b': 15, 'c': 16} + >>> props = lambda key: {'color': 'r' if 'a' in key else 'gray'} + >>> labelizer = lambda k: {('a',): 'first', ('b',): 'second', + ... ('c',): 'third'}[k] + >>> mosaic(data, title='colored dictionary', properties=props, + ... labelizer=labelizer) + >>> plt.show() + + Using a DataFrame as source, specifying the name of the columns of interest + + >>> gender = ['male', 'male', 'male', 'female', 'female', 'female'] + >>> pet = ['cat', 'dog', 'dog', 'cat', 'dog', 'cat'] + >>> data = pd.DataFrame({'gender': gender, 'pet': pet}) + >>> mosaic(data, ['pet', 'gender'], title='DataFrame as Source') + >>> plt.show() + + .. plot :: plots/graphics_mosaicplot_mosaic.py + """ + if isinstance(data, DataFrame) and index is None: + raise ValueError("You must pass an index if data is a DataFrame." + " See examples.") + + from matplotlib.patches import Rectangle + #from pylab import Rectangle + fig, ax = utils.create_mpl_ax(ax) + # normalize the data to a dict with tuple of strings as keys + data = _normalize_data(data, index) + # split the graph into different areas + rects = _hierarchical_split(data, horizontal=horizontal, gap=gap) + # if there is no specified way to create the labels + # create a default one + if labelizer is None: + labelizer = lambda k: "\n".join(k) + if statistic: + default_props = _statistical_coloring(data) + else: + default_props = _create_default_properties(data) + if isinstance(properties, dict): + color_dict = properties + properties = lambda key: color_dict.get(key, None) + for k, v in iteritems(rects): + # create each rectangle and put a label on it + x, y, w, h = v + conf = properties(k) + props = conf if conf else default_props[k] + text = labelizer(k) + Rect = Rectangle((x, y), w, h, label=text, **props) + ax.add_patch(Rect) + ax.text(x + w / 2, y + h / 2, text, ha='center', + va='center', size='smaller') + #creating the labels on the axis + #o clearing it + if axes_label: + if np.iterable(label_rotation): + rotation = label_rotation + else: + rotation = [label_rotation] * 4 + labels = _create_labels(rects, horizontal, ax, rotation) + else: + ax.set_xticks([]) + ax.set_xticklabels([]) + ax.set_yticks([]) + ax.set_yticklabels([]) + ax.set_title(title) + return fig, rects diff --git a/statsmodels/graphics/plot_grids.py b/statsmodels/graphics/plot_grids.py new file mode 100644 index 0000000..14e480b --- /dev/null +++ b/statsmodels/graphics/plot_grids.py @@ -0,0 +1,179 @@ +'''create scatterplot with confidence ellipsis + +Author: Josef Perktold +License: BSD-3 + +TODO: update script to use sharex, sharey, and visible=False + see http://www.scipy.org/Cookbook/Matplotlib/Multiple_Subplots_with_One_Axis_Label + for sharex I need to have the ax of the last_row when editing the earlier + rows. Or you axes_grid1, imagegrid + http://matplotlib.sourceforge.net/mpl_toolkits/axes_grid/users/overview.html +''' + + +from statsmodels.compat.python import range +import numpy as np +from scipy import stats + +from . import utils + + +__all__ = ['scatter_ellipse'] + + +def _make_ellipse(mean, cov, ax, level=0.95, color=None): + """Support function for scatter_ellipse.""" + from matplotlib.patches import Ellipse + + v, w = np.linalg.eigh(cov) + u = w[0] / np.linalg.norm(w[0]) + angle = np.arctan(u[1]/u[0]) + angle = 180 * angle / np.pi # convert to degrees + v = 2 * np.sqrt(v * stats.chi2.ppf(level, 2)) #get size corresponding to level + ell = Ellipse(mean[:2], v[0], v[1], 180 + angle, facecolor='none', + edgecolor=color, + #ls='dashed', #for debugging + lw=1.5) + ell.set_clip_box(ax.bbox) + ell.set_alpha(0.5) + ax.add_artist(ell) + + +def scatter_ellipse(data, level=0.9, varnames=None, ell_kwds=None, + plot_kwds=None, add_titles=False, keep_ticks=False, + fig=None): + """Create a grid of scatter plots with confidence ellipses. + + ell_kwds, plot_kdes not used yet + + looks ok with 5 or 6 variables, too crowded with 8, too empty with 1 + + Parameters + ---------- + data : array_like + Input data. + level : scalar, optional + Default is 0.9. + varnames : list of str, optional + Variable names. Used for y-axis labels, and if `add_titles` is True + also for titles. If not given, integers 1..data.shape[1] are used. + ell_kwds : dict, optional + UNUSED + plot_kwds : dict, optional + UNUSED + add_titles : bool, optional + Whether or not to add titles to each subplot. Default is False. + Titles are constructed from `varnames`. + keep_ticks : bool, optional + If False (default), remove all axis ticks. + fig : Matplotlib figure instance, optional + If given, this figure is simply returned. Otherwise a new figure is + created. + + Returns + ------- + fig : Matplotlib figure instance + If `fig` is None, the created figure. Otherwise `fig` itself. + + Examples + -------- + >>> import statsmodels.api as sm + >>> import matplotlib.pyplot as plt + >>> import numpy as np + + >>> from statsmodels.graphics.plot_grids import scatter_ellipse + >>> data = sm.datasets.statecrime.load_pandas().data + >>> fig = plt.figure(figsize=(8,8)) + >>> scatter_ellipse(data, varnames=data.columns, fig=fig) + >>> plt.show() + + ..plot :: plots/graphics_correlation_plot_corr_grid.py + """ + fig = utils.create_mpl_fig(fig) + import matplotlib.ticker as mticker + + data = np.asanyarray(data) #needs mean and cov + nvars = data.shape[1] + if varnames is None: + #assuming single digit, nvars<=10 else use 'var%2d' + varnames = ['var%d' % i for i in range(nvars)] + + plot_kwds_ = dict(ls='none', marker='.', color='k', alpha=0.5) + if plot_kwds: + plot_kwds_.update(plot_kwds) + + ell_kwds_= dict(color='k') + if ell_kwds: + ell_kwds_.update(ell_kwds) + + dmean = data.mean(0) + dcov = np.cov(data, rowvar=0) + + for i in range(1, nvars): + #print '---' + ax_last=None + for j in range(i): + #print i,j, i*(nvars-1)+j+1 + ax = fig.add_subplot(nvars-1, nvars-1, (i-1)*(nvars-1)+j+1) +## #sharey=ax_last) #sharey doesn't allow empty ticks? +## if j == 0: +## print 'new ax_last', j +## ax_last = ax +## ax.set_ylabel(varnames[i]) + #TODO: make sure we have same xlim and ylim + + formatter = mticker.FormatStrFormatter('% 3.1f') + ax.yaxis.set_major_formatter(formatter) + ax.xaxis.set_major_formatter(formatter) + + idx = np.array([j,i]) + ax.plot(*data[:,idx].T, **plot_kwds_) + + if np.isscalar(level): + level = [level] + for alpha in level: + _make_ellipse(dmean[idx], dcov[idx[:,None], idx], ax, level=alpha, + **ell_kwds_) + + if add_titles: + ax.set_title('%s-%s' % (varnames[i], varnames[j])) + if not ax.is_first_col(): + if not keep_ticks: + ax.set_yticks([]) + else: + ax.yaxis.set_major_locator(mticker.MaxNLocator(3)) + else: + ax.set_ylabel(varnames[i]) + if ax.is_last_row(): + ax.set_xlabel(varnames[j]) + else: + if not keep_ticks: + ax.set_xticks([]) + else: + ax.xaxis.set_major_locator(mticker.MaxNLocator(3)) + + dcorr = np.corrcoef(data, rowvar=0) + dc = dcorr[idx[:,None], idx] + xlim = ax.get_xlim() + ylim = ax.get_ylim() +## xt = xlim[0] + 0.1 * (xlim[1] - xlim[0]) +## yt = ylim[0] + 0.1 * (ylim[1] - ylim[0]) +## if dc[1,0] < 0 : +## yt = ylim[0] + 0.1 * (ylim[1] - ylim[0]) +## else: +## yt = ylim[1] - 0.2 * (ylim[1] - ylim[0]) + yrangeq = ylim[0] + 0.4 * (ylim[1] - ylim[0]) + if dc[1,0] < -0.25 or (dc[1,0] < 0.25 and dmean[idx][1] > yrangeq): + yt = ylim[0] + 0.1 * (ylim[1] - ylim[0]) + else: + yt = ylim[1] - 0.2 * (ylim[1] - ylim[0]) + xt = xlim[0] + 0.1 * (xlim[1] - xlim[0]) + ax.text(xt, yt, '$\\rho=%0.2f$'% dc[1,0]) + + for ax in fig.axes: + if ax.is_last_row(): # or ax.is_first_col(): + ax.xaxis.set_major_locator(mticker.MaxNLocator(3)) + if ax.is_first_col(): + ax.yaxis.set_major_locator(mticker.MaxNLocator(3)) + + return fig diff --git a/statsmodels/graphics/plottools.py b/statsmodels/graphics/plottools.py new file mode 100644 index 0000000..e35dcb0 --- /dev/null +++ b/statsmodels/graphics/plottools.py @@ -0,0 +1,26 @@ +import numpy as np + +def rainbow(n): + """ + Returns a list of colors sampled at equal intervals over the spectrum. + + Parameters + ---------- + n : int + The number of colors to return + + Returns + ------- + R : (n,3) array + An of rows of RGB color values + + Notes + ----- + Converts from HSV coordinates (0, 1, 1) to (1, 1, 1) to RGB. Based on + the Sage function of the same name. + """ + from matplotlib import colors + R = np.ones((1,n,3)) + R[0,:,0] = np.linspace(0, 1, n, endpoint=False) + #Note: could iterate and use colorsys.hsv_to_rgb + return colors.hsv_to_rgb(R).squeeze() diff --git a/statsmodels/graphics/regressionplots.py b/statsmodels/graphics/regressionplots.py new file mode 100644 index 0000000..c1e925d --- /dev/null +++ b/statsmodels/graphics/regressionplots.py @@ -0,0 +1,1272 @@ +'''Partial Regression plot and residual plots to find misspecification + + +Author: Josef Perktold +License: BSD-3 +Created: 2011-01-23 + +update +2011-06-05 : start to convert example to usable functions +2011-10-27 : docstrings + +''' +from statsmodels.compat.python import lrange, string_types, lzip, range +import numpy as np +import pandas as pd +from patsy import dmatrix + +from statsmodels.regression.linear_model import OLS, GLS, WLS +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod.generalized_estimating_equations import GEE +from statsmodels.sandbox.regression.predstd import wls_prediction_std +from statsmodels.graphics import utils +from statsmodels.nonparametric.smoothers_lowess import lowess +from statsmodels.tools.tools import maybe_unwrap_results + +from ._regressionplots_doc import ( + _plot_added_variable_doc, + _plot_partial_residuals_doc, + _plot_ceres_residuals_doc, + _plot_influence_doc, + _plot_leverage_resid2_doc) + +__all__ = ['plot_fit', 'plot_regress_exog', 'plot_partregress', 'plot_ccpr', + 'plot_regress_exog', 'plot_partregress_grid', 'plot_ccpr_grid', + 'add_lowess', 'abline_plot', 'influence_plot', + 'plot_leverage_resid2', 'added_variable_resids', + 'partial_resids', 'ceres_resids', 'plot_added_variable', + 'plot_partial_residuals', 'plot_ceres_residuals'] + +#TODO: consider moving to influence module +def _high_leverage(results): + #TODO: replace 1 with k_constant + return 2. * (results.df_model + 1)/results.nobs + + +def add_lowess(ax, lines_idx=0, frac=.2, **lowess_kwargs): + """ + Add Lowess line to a plot. + + Parameters + ---------- + ax : matplotlib Axes instance + The Axes to which to add the plot + lines_idx : int + This is the line on the existing plot to which you want to add + a smoothed lowess line. + frac : float + The fraction of the points to use when doing the lowess fit. + lowess_kwargs + Additional keyword arguments are passes to lowess. + + Returns + ------- + fig : matplotlib Figure instance + The figure that holds the instance. + """ + y0 = ax.get_lines()[lines_idx]._y + x0 = ax.get_lines()[lines_idx]._x + lres = lowess(y0, x0, frac=frac, **lowess_kwargs) + ax.plot(lres[:, 0], lres[:, 1], 'r', lw=1.5) + return ax.figure + + +def plot_fit(results, exog_idx, y_true=None, ax=None, **kwargs): + """Plot fit against one regressor. + + This creates one graph with the scatterplot of observed values compared to + fitted values. + + Parameters + ---------- + results : result instance + result instance with resid, model.endog and model.exog as attributes + x_var : int or str + Name or index of regressor in exog matrix. + y_true : array_like + (optional) If this is not None, then the array is added to the plot + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure being + created. + kwargs + The keyword arguments are passed to the plot command for the fitted + values points. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + + Examples + -------- + Load the Statewide Crime data set and perform linear regression with + `poverty` and `hs_grad` as variables and `murder` as the response + + >>> import statsmodels.api as sm + >>> import matplotlib.pyplot as plt + + >>> data = sm.datasets.statecrime.load_pandas().data + >>> murder = data['murder'] + >>> X = data[['poverty', 'hs_grad']] + + >>> X["constant"] = 1 + >>> y = murder + >>> model = sm.OLS(y, X) + >>> results = model.fit() + + Create a plot just for the variable 'Poverty': + + >>> fig, ax = plt.subplots() + >>> fig = sm.graphics.plot_fit(results, 0, ax=ax) + >>> ax.set_ylabel("Murder Rate") + >>> ax.set_xlabel("Poverty Level") + >>> ax.set_title("Linear Regression") + + >>> plt.show() + + .. plot:: plots/graphics_plot_fit_ex.py + + """ + + fig, ax = utils.create_mpl_ax(ax) + + exog_name, exog_idx = utils.maybe_name_or_idx(exog_idx, results.model) + results = maybe_unwrap_results(results) + + #maybe add option for wendog, wexog + y = results.model.endog + x1 = results.model.exog[:, exog_idx] + x1_argsort = np.argsort(x1) + y = y[x1_argsort] + x1 = x1[x1_argsort] + + ax.plot(x1, y, 'bo', label=results.model.endog_names) + if y_true is not None: + ax.plot(x1, y_true[x1_argsort], 'b-', label='True values') + title = 'Fitted values versus %s' % exog_name + + prstd, iv_l, iv_u = wls_prediction_std(results) + ax.plot(x1, results.fittedvalues[x1_argsort], 'D', color='r', + label='fitted', **kwargs) + ax.vlines(x1, iv_l[x1_argsort], iv_u[x1_argsort], linewidth=1, color='k', + alpha=.7) + #ax.fill_between(x1, iv_l[x1_argsort], iv_u[x1_argsort], alpha=0.1, + # color='k') + ax.set_title(title) + ax.set_xlabel(exog_name) + ax.set_ylabel(results.model.endog_names) + ax.legend(loc='best', numpoints=1) + + return fig + + +def plot_regress_exog(results, exog_idx, fig=None): + """Plot regression results against one regressor. + + This plots four graphs in a 2 by 2 figure: 'endog versus exog', + 'residuals versus exog', 'fitted versus exog' and + 'fitted plus residual versus exog' + + Parameters + ---------- + results : result instance + result instance with resid, model.endog and model.exog as attributes + exog_idx : int or str + Name or index of regressor in exog matrix + fig : Matplotlib figure instance, optional + If given, this figure is simply returned. Otherwise a new figure is + created. + + Returns + ------- + fig : matplotlib figure instance + + Examples + -------- + Load the Statewide Crime data set and build a model with regressors + including the rate of high school graduation (hs_grad), population in urban + areas (urban), households below poverty line (poverty), and single person + households (single). Outcome variable is the muder rate (murder). + + Build a 2 by 2 figure based on poverty showing fitted versus actual murder + rate, residuals versus the poverty rate, partial regression plot of poverty, + and CCPR plot for poverty rate. + + >>> import statsmodels.api as sm + >>> import matplotlib.pyplot as plot + >>> import statsmodels.formula.api as smf + + >>> fig = plt.figure(figsize=(8, 6)) + >>> crime_data = sm.datasets.statecrime.load_pandas() + >>> results = smf.ols('murder ~ hs_grad + urban + poverty + single', + ... data=crime_data.data).fit() + >>> sm.graphics.plot_regress_exog(results, 'poverty', fig=fig) + >>> plt.show() + + .. plot:: plots/graphics_regression_regress_exog.py + + """ + + fig = utils.create_mpl_fig(fig) + + exog_name, exog_idx = utils.maybe_name_or_idx(exog_idx, results.model) + results = maybe_unwrap_results(results) + + #maybe add option for wendog, wexog + y_name = results.model.endog_names + x1 = results.model.exog[:, exog_idx] + prstd, iv_l, iv_u = wls_prediction_std(results) + + ax = fig.add_subplot(2, 2, 1) + ax.plot(x1, results.model.endog, 'o', color='b', alpha=0.9, label=y_name) + ax.plot(x1, results.fittedvalues, 'D', color='r', label='fitted', + alpha=.5) + ax.vlines(x1, iv_l, iv_u, linewidth=1, color='k', alpha=.7) + ax.set_title('Y and Fitted vs. X', fontsize='large') + ax.set_xlabel(exog_name) + ax.set_ylabel(y_name) + ax.legend(loc='best') + + ax = fig.add_subplot(2, 2, 2) + ax.plot(x1, results.resid, 'o') + ax.axhline(y=0, color='black') + ax.set_title('Residuals versus %s' % exog_name, fontsize='large') + ax.set_xlabel(exog_name) + ax.set_ylabel("resid") + + ax = fig.add_subplot(2, 2, 3) + exog_noti = np.ones(results.model.exog.shape[1], bool) + exog_noti[exog_idx] = False + exog_others = results.model.exog[:, exog_noti] + from pandas import Series + fig = plot_partregress(results.model.data.orig_endog, + Series(x1, name=exog_name, + index=results.model.data.row_labels), + exog_others, obs_labels=False, ax=ax) + ax.set_title('Partial regression plot', fontsize='large') + #ax.set_ylabel("Fitted values") + #ax.set_xlabel(exog_name) + + ax = fig.add_subplot(2, 2, 4) + fig = plot_ccpr(results, exog_idx, ax=ax) + ax.set_title('CCPR Plot', fontsize='large') + #ax.set_xlabel(exog_name) + #ax.set_ylabel("Fitted values + resids") + + fig.suptitle('Regression Plots for %s' % exog_name, fontsize="large") + + fig.tight_layout() + + fig.subplots_adjust(top=.90) + return fig + + +def _partial_regression(endog, exog_i, exog_others): + """Partial regression. + + regress endog on exog_i conditional on exog_others + + uses OLS + + Parameters + ---------- + endog : array_like + exog : array_like + exog_others : array_like + + Returns + ------- + res1c : OLS results instance + + (res1a, res1b) : tuple of OLS results instances + results from regression of endog on exog_others and of exog_i on + exog_others + + """ + #FIXME: This function doesn't appear to be used. + res1a = OLS(endog, exog_others).fit() + res1b = OLS(exog_i, exog_others).fit() + res1c = OLS(res1a.resid, res1b.resid).fit() + + return res1c, (res1a, res1b) + + +def plot_partregress(endog, exog_i, exog_others, data=None, + title_kwargs={}, obs_labels=True, label_kwargs={}, + ax=None, ret_coords=False, **kwargs): + """Plot partial regression for a single regressor. + + Parameters + ---------- + endog : ndarray or string + endogenous or response variable. If string is given, you can use a + arbitrary translations as with a formula. + exog_i : ndarray or string + exogenous, explanatory variable. If string is given, you can use a + arbitrary translations as with a formula. + exog_others : ndarray or list of strings + other exogenous, explanatory variables. If a list of strings is given, + each item is a term in formula. You can use a arbitrary translations + as with a formula. The effect of these variables will be removed by + OLS regression. + data : DataFrame, dict, or recarray + Some kind of data structure with names if the other variables are + given as strings. + title_kwargs : dict + Keyword arguments to pass on for the title. The key to control the + fonts is fontdict. + obs_labels : bool or array-like + Whether or not to annotate the plot points with their observation + labels. If obs_labels is a boolean, the point labels will try to do + the right thing. First it will try to use the index of data, then + fall back to the index of exog_i. Alternatively, you may give an + array-like object corresponding to the obseveration numbers. + labels_kwargs : dict + Keyword arguments that control annotate for the observation labels. + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure being + created. + ret_coords : bool + If True will return the coordinates of the points in the plot. You + can use this to add your own annotations. + kwargs + The keyword arguments passed to plot for the points. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + coords : list, optional + If ret_coords is True, return a tuple of arrays (x_coords, y_coords). + + Notes + ----- + The slope of the fitted line is the that of `exog_i` in the full + multiple regression. The individual points can be used to assess the + influence of points on the estimated coefficient. + + See Also + -------- + plot_partregress_grid : Plot partial regression for a set of regressors. + + Examples + -------- + Load the Statewide Crime data set and plot partial regression of the rate + of high school graduation (hs_grad) on the murder rate(murder). + + The effects of the percent of the population living in urban areas (urban), + below the poverty line (poverty) , and in a single person household (single) + are removed by OLS regression. + + >>> import statsmodels.api as sm + >>> import matplotlib.pyplot as plt + + >>> crime_data = sm.datasets.statecrime.load_pandas() + >>> sm.graphics.plot_partregress(endog='murder', exog_i='hs_grad', + ... exog_others=['urban', 'poverty', 'single'], + ... data=crime_data.data, obs_labels=False) + >>> plt.show() + + .. plot:: plots/graphics_regression_partregress.py + + More detailed examples can be found in the Regression Plots notebook + on the examples page. + + """ + #NOTE: there is no interaction between possible missing data and + #obs_labels yet, so this will need to be tweaked a bit for this case + fig, ax = utils.create_mpl_ax(ax) + + # strings, use patsy to transform to data + if isinstance(endog, string_types): + endog = dmatrix(endog + "-1", data) + + if isinstance(exog_others, string_types): + RHS = dmatrix(exog_others, data) + elif isinstance(exog_others, list): + RHS = "+".join(exog_others) + RHS = dmatrix(RHS, data) + else: + RHS = exog_others + RHS_isemtpy = False + if isinstance(RHS, np.ndarray) and RHS.size==0: + RHS_isemtpy = True + elif isinstance(RHS, pd.DataFrame) and RHS.empty: + RHS_isemtpy = True + if isinstance(exog_i, string_types): + exog_i = dmatrix(exog_i + "-1", data) + + # all arrays or pandas-like + + if RHS_isemtpy: + ax.plot(endog, exog_i, 'o', **kwargs) + fitted_line = OLS(endog, exog_i).fit() + x_axis_endog_name = 'x' if isinstance(exog_i, np.ndarray) else exog_i.name + y_axis_endog_name = 'y' if isinstance(endog, np.ndarray) else endog.design_info.column_names[0] + else: + res_yaxis = OLS(endog, RHS).fit() + res_xaxis = OLS(exog_i, RHS).fit() + xaxis_resid = res_xaxis.resid + yaxis_resid = res_yaxis.resid + x_axis_endog_name = res_xaxis.model.endog_names + y_axis_endog_name = res_yaxis.model.endog_names + ax.plot(xaxis_resid, yaxis_resid, 'o', **kwargs) + fitted_line = OLS(yaxis_resid, xaxis_resid).fit() + + fig = abline_plot(0, fitted_line.params[0], color='k', ax=ax) + + if x_axis_endog_name == 'y': # for no names regression will just get a y + x_axis_endog_name = 'x' # this is misleading, so use x + ax.set_xlabel("e(%s | X)" % x_axis_endog_name) + ax.set_ylabel("e(%s | X)" % y_axis_endog_name) + ax.set_title('Partial Regression Plot', **title_kwargs) + + #NOTE: if we want to get super fancy, we could annotate if a point is + #clicked using this widget + #http://stackoverflow.com/questions/4652439/ + #is-there-a-matplotlib-equivalent-of-matlabs-datacursormode/ + #4674445#4674445 + if obs_labels is True: + if data is not None: + obs_labels = data.index + elif hasattr(exog_i, "index"): + obs_labels = exog_i.index + else: + obs_labels = res_xaxis.model.data.row_labels + #NOTE: row_labels can be None. + #Maybe we should fix this to never be the case. + if obs_labels is None: + obs_labels = lrange(len(exog_i)) + + if obs_labels is not False: # could be array-like + if len(obs_labels) != len(exog_i): + raise ValueError("obs_labels does not match length of exog_i") + label_kwargs.update(dict(ha="center", va="bottom")) + ax = utils.annotate_axes(lrange(len(obs_labels)), obs_labels, + lzip(res_xaxis.resid, res_yaxis.resid), + [(0, 5)] * len(obs_labels), "x-large", ax=ax, + **label_kwargs) + + if ret_coords: + return fig, (res_xaxis.resid, res_yaxis.resid) + else: + return fig + + +def plot_partregress_grid(results, exog_idx=None, grid=None, fig=None): + """Plot partial regression for a set of regressors. + + Parameters + ---------- + results : results instance + A regression model results instance + exog_idx : None, list of ints, list of strings + (column) indices of the exog used in the plot, default is all. + grid : None or tuple of int (nrows, ncols) + If grid is given, then it is used for the arrangement of the subplots. + If grid is None, then ncol is one, if there are only 2 subplots, and + the number of columns is two otherwise. + fig : Matplotlib figure instance, optional + If given, this figure is simply returned. Otherwise a new figure is + created. + + Returns + ------- + fig : Matplotlib figure instance + If `fig` is None, the created figure. Otherwise `fig` itself. + + Notes + ----- + A subplot is created for each explanatory variable given by exog_idx. + The partial regression plot shows the relationship between the response + and the given explanatory variable after removing the effect of all other + explanatory variables in exog. + + See Also + -------- + plot_partregress : Plot partial regression for a single regressor. + plot_ccpr : Plot CCPR against one regressor + + Examples + -------- + Using the state crime dataset seperately plot the effect of the each + variable on the on the outcome, murder rate while accounting for the effect + of all other variables in the model visualized with a grid of partial + regression plots. + + >>> from statsmodels.graphics.regressionplots import plot_partregress_grid + >>> import statsmodels.api as sm + >>> import matplotlib.pyplot as plt + >>> import statsmodels.formula.api as smf + + >>> fig = plt.figure(figsize=(8, 6)) + >>> crime_data = sm.datasets.statecrime.load_pandas() + >>> results = smf.ols('murder ~ hs_grad + urban + poverty + single', + ... data=crime_data.data).fit() + >>> plot_partregress_grid(results, fig=fig) + >>> plt.show() + + .. plot:: plots/graphics_regression_partregress_grid.py + + References + ---------- + See http://www.itl.nist.gov/div898/software/dataplot/refman1/auxillar/partregr.htm + + """ + import pandas + fig = utils.create_mpl_fig(fig) + + exog_name, exog_idx = utils.maybe_name_or_idx(exog_idx, results.model) + + # TODO: maybe add option for using wendog, wexog instead + y = pandas.Series(results.model.endog, name=results.model.endog_names) + exog = results.model.exog + + k_vars = exog.shape[1] + # this function doesn't make sense if k_vars=1 + + nrows = (len(exog_idx) + 1) // 2 + ncols = 1 if nrows == len(exog_idx) else 2 + if grid is not None: + nrows, ncols = grid + if ncols > 1: + title_kwargs = {"fontdict": {"fontsize": 'small'}} + + # for indexing purposes + other_names = np.array(results.model.exog_names) + for i, idx in enumerate(exog_idx): + others = lrange(k_vars) + others.pop(idx) + exog_others = pandas.DataFrame(exog[:, others], + columns=other_names[others]) + ax = fig.add_subplot(nrows, ncols, i + 1) + plot_partregress(y, pandas.Series(exog[:, idx], + name=other_names[idx]), + exog_others, ax=ax, title_kwargs=title_kwargs, + obs_labels=False) + ax.set_title("") + + fig.suptitle("Partial Regression Plot", fontsize="large") + fig.tight_layout() + fig.subplots_adjust(top=.95) + + return fig + + +def plot_ccpr(results, exog_idx, ax=None): + """Plot CCPR against one regressor. + + Generates a CCPR (component and component-plus-residual) plot. + + Parameters + ---------- + results : result instance + A regression results instance. + exog_idx : int or string + Exogenous, explanatory variable. If string is given, it should + be the variable name that you want to use, and you can use arbitrary + translations as with a formula. + ax : Matplotlib AxesSubplot instance, optional + If given, it is used to plot in instead of a new figure being + created. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + + See Also + -------- + plot_ccpr_grid : Creates CCPR plot for multiple regressors in a plot grid. + + Notes + ----- + The CCPR plot provides a way to judge the effect of one regressor on the + response variable by taking into account the effects of the other + independent variables. The partial residuals plot is defined as + Residuals + B_i*X_i versus X_i. The component adds the B_i*X_i versus + X_i to show where the fitted line would lie. Care should be taken if X_i + is highly correlated with any of the other independent variables. If this + is the case, the variance evident in the plot will be an underestimate of + the true variance. + + Examples + -------- + Using the state crime dataset plot the effect of the rate of single + households ('single') on the murder rate while accounting for high school + graduation rate ('hs_grad'), percentage of people in an urban area, and rate + of poverty ('poverty'). + + + >>> import statsmodels.api as sm + >>> import matplotlib.pyplot as plot + >>> import statsmodels.formula.api as smf + + >>> crime_data = sm.datasets.statecrime.load_pandas() + >>> results = smf.ols('murder ~ hs_grad + urban + poverty + single', + ... data=crime_data.data).fit() + >>> sm.graphics.plot_ccpr(results, 'single') + >>> plt.show() + + .. plot:: plots/graphics_regression_ccpr.py + + References + ---------- + http://www.itl.nist.gov/div898/software/dataplot/refman1/auxillar/ccpr.htm + + """ + fig, ax = utils.create_mpl_ax(ax) + + exog_name, exog_idx = utils.maybe_name_or_idx(exog_idx, results.model) + results = maybe_unwrap_results(results) + + x1 = results.model.exog[:, exog_idx] + #namestr = ' for %s' % self.name if self.name else '' + x1beta = x1*results.params[exog_idx] + ax.plot(x1, x1beta + results.resid, 'o') + from statsmodels.tools.tools import add_constant + mod = OLS(x1beta, add_constant(x1)).fit() + params = mod.params + fig = abline_plot(*params, **dict(ax=ax)) + #ax.plot(x1, x1beta, '-') + ax.set_title('Component and component plus residual plot') + ax.set_ylabel("Residual + %s*beta_%d" % (exog_name, exog_idx)) + ax.set_xlabel("%s" % exog_name) + + return fig + + +def plot_ccpr_grid(results, exog_idx=None, grid=None, fig=None): + """Generate CCPR plots against a set of regressors, plot in a grid. + + Generates a grid of CCPR (component and component-plus-residual) plots. + + Parameters + ---------- + results : result instance + uses exog and params of the result instance + exog_idx : None or list of int + (column) indices of the exog used in the plot + grid : None or tuple of int (nrows, ncols) + If grid is given, then it is used for the arrangement of the subplots. + If grid is None, then ncol is one, if there are only 2 subplots, and + the number of columns is two otherwise. + fig : Matplotlib figure instance, optional + If given, this figure is simply returned. Otherwise a new figure is + created. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + + Notes + ----- + Partial residual plots are formed as:: + + Res + Betahat(i)*Xi versus Xi + + and CCPR adds:: + + Betahat(i)*Xi versus Xi + + See Also + -------- + plot_ccpr : Creates CCPR plot for a single regressor. + + Examples + -------- + Using the state crime dataset seperately plot the effect of the each + variable on the on the outcome, murder rate while accounting for the effect + of all other variables in the model. + + >>> import statsmodels.api as sm + >>> import matplotlib.pyplot as plt + >>> import statsmodels.formula.api as smf + + >>> fig = plt.figure(figsize=(8, 8)) + >>> crime_data = sm.datasets.statecrime.load_pandas() + >>> results = smf.ols('murder ~ hs_grad + urban + poverty + single', + ... data=crime_data.data).fit() + >>> sm.graphics.plot_ccpr_grid(results, fig=fig) + >>> plt.show() + + .. plot:: plots/graphics_regression_ccpr_grid.py + + References + ---------- + See http://www.itl.nist.gov/div898/software/dataplot/refman1/auxillar/ccpr.htm + """ + fig = utils.create_mpl_fig(fig) + + exog_name, exog_idx = utils.maybe_name_or_idx(exog_idx, results.model) + + if grid is not None: + nrows, ncols = grid + else: + if len(exog_idx) > 2: + nrows = int(np.ceil(len(exog_idx)/2.)) + ncols = 2 + else: + nrows = len(exog_idx) + ncols = 1 + + seen_constant = 0 + for i, idx in enumerate(exog_idx): + if results.model.exog[:, idx].var() == 0: + seen_constant = 1 + continue + + ax = fig.add_subplot(nrows, ncols, i+1-seen_constant) + fig = plot_ccpr(results, exog_idx=idx, ax=ax) + ax.set_title("") + + fig.suptitle("Component-Component Plus Residual Plot", fontsize="large") + + fig.tight_layout() + + fig.subplots_adjust(top=.95) + return fig + + +def abline_plot(intercept=None, slope=None, horiz=None, vert=None, + model_results=None, ax=None, **kwargs): + """ + Plots a line given an intercept and slope. + + intercept : float + The intercept of the line + slope : float + The slope of the line + horiz : float or array-like + Data for horizontal lines on the y-axis + vert : array-like + Data for verterical lines on the x-axis + model_results : statsmodels results instance + Any object that has a two-value `params` attribute. Assumed that it + is (intercept, slope) + ax : axes, optional + Matplotlib axes instance + kwargs + Options passed to matplotlib.pyplot.plt + + Returns + ------- + fig : Figure + The figure given by `ax.figure` or a new instance. + + Examples + -------- + >>> import numpy as np + >>> import statsmodels.api as sm + + >>> np.random.seed(12345) + >>> X = sm.add_constant(np.random.normal(0, 20, size=30)) + >>> y = np.dot(X, [25, 3.5]) + np.random.normal(0, 30, size=30) + >>> mod = sm.OLS(y,X).fit() + >>> fig = sm.graphics.abline_plot(model_results=mod) + >>> ax = fig.axes[0] + >>> ax.scatter(X[:,1], y) + >>> ax.margins(.1) + >>> import matplotlib.pyplot as plt + >>> plt.show() + + .. plot:: plots/graphics_regression_abline.py + + """ + if ax is not None: # get axis limits first thing, don't change these + x = ax.get_xlim() + else: + x = None + + fig, ax = utils.create_mpl_ax(ax) + + if model_results: + intercept, slope = model_results.params + if x is None: + x = [model_results.model.exog[:, 1].min(), + model_results.model.exog[:, 1].max()] + else: + if not (intercept is not None and slope is not None): + raise ValueError("specify slope and intercepty or model_results") + if x is None: + x = ax.get_xlim() + + data_y = [x[0]*slope+intercept, x[1]*slope+intercept] + ax.set_xlim(x) + #ax.set_ylim(y) + + from matplotlib.lines import Line2D + + class ABLine2D(Line2D): + def __init__(self, *args, **kwargs): + super(ABLine2D, self).__init__(*args, **kwargs) + self.id_xlim_callback = None + self.id_ylim_callback = None + + def remove(self): + ax = self.axes + if self.id_xlim_callback: + ax.callbacks.disconnect(self.id_xlim_callback) + if self.id_ylim_callback: + ax.callbacks.disconnect(self.id_ylim_callback) + super(ABLine2D, self).remove() + + def update_datalim(self, ax): + ax.set_autoscale_on(False) + children = ax.get_children() + ablines = [child for child in children if child is self] + abline = ablines[0] + x = ax.get_xlim() + y = [x[0] * slope + intercept, x[1] * slope + intercept] + abline.set_data(x, y) + ax.figure.canvas.draw() + + # TODO: how to intercept something like a margins call and adjust? + line = ABLine2D(x, data_y, **kwargs) + ax.add_line(line) + line.id_xlim_callback = ax.callbacks.connect('xlim_changed', line.update_datalim) + line.id_ylim_callback = ax.callbacks.connect('ylim_changed', line.update_datalim) + + if horiz: + ax.hline(horiz) + if vert: + ax.vline(vert) + return fig + + +def _influence_plot(results, influence, external=True, alpha=.05, + criterion="cooks", size=48, plot_alpha=.75, ax=None, + **kwargs): + infl = influence + fig, ax = utils.create_mpl_ax(ax) + + if criterion.lower().startswith('coo'): + psize = infl.cooks_distance[0] + elif criterion.lower().startswith('dff'): + psize = np.abs(infl.dffits[0]) + else: + raise ValueError("Criterion %s not understood" % criterion) + + # scale the variables + #TODO: what is the correct scaling and the assumption here? + #we want plots to be comparable across different plots + #so we would need to use the expected distribution of criterion probably + old_range = np.ptp(psize) + new_range = size**2 - 8**2 + + psize = (psize - psize.min()) * new_range/old_range + 8**2 + + leverage = infl.hat_matrix_diag + if external: + resids = infl.resid_studentized_external + else: + resids = infl.resid_studentized + + from scipy import stats + + cutoff = stats.t.ppf(1.-alpha/2, results.df_resid) + large_resid = np.abs(resids) > cutoff + large_leverage = leverage > _high_leverage(results) + large_points = np.logical_or(large_resid, large_leverage) + + ax.scatter(leverage, resids, s=psize, alpha=plot_alpha) + + # add point labels + labels = results.model.data.row_labels + if labels is None: + labels = lrange(len(resids)) + ax = utils.annotate_axes(np.where(large_points)[0], labels, + lzip(leverage, resids), + lzip(-(psize/2)**.5, (psize/2)**.5), "x-large", + ax) + + #TODO: make configurable or let people do it ex-post? + font = {"fontsize" : 16, "color" : "black"} + ax.set_ylabel("Studentized Residuals", **font) + ax.set_xlabel("H Leverage", **font) + ax.set_title("Influence Plot", **font) + return fig + +_influence_plot.__doc__ = _plot_influence_doc.format({ + 'extra_params_doc' : "results: object\n\tResults for a fitted regression model\n" + "influence: instance\n instance of Influence for model"}) + + +def influence_plot(results, external=True, alpha=.05, criterion="cooks", + size=48, plot_alpha=.75, ax=None, **kwargs): + + infl = results.get_influence() + res = _influence_plot(results, infl, external=external, alpha=alpha, + criterion=criterion, size=size, + plot_alpha=plot_alpha, ax=ax, **kwargs) + return res + +influence_plot.__doc__ = _plot_influence_doc.format({ + 'extra_params_doc' : "results: object\n" + " Results for a fitted regression model"}) + + +def _plot_leverage_resid2(results, influence, alpha=.05, ax=None, + **kwargs): + + from scipy.stats import zscore, norm + fig, ax = utils.create_mpl_ax(ax) + + infl = influence + leverage = infl.hat_matrix_diag + resid = zscore(infl.resid) + ax.plot(resid**2, leverage, 'o', **kwargs) + ax.set_xlabel("Normalized residuals**2") + ax.set_ylabel("Leverage") + ax.set_title("Leverage vs. Normalized residuals squared") + + large_leverage = leverage > _high_leverage(results) + #norm or t here if standardized? + cutoff = norm.ppf(1.-alpha/2) + large_resid = np.abs(resid) > cutoff + labels = results.model.data.row_labels + if labels is None: + labels = lrange(int(results.nobs)) + index = np.where(np.logical_or(large_leverage, large_resid))[0] + ax = utils.annotate_axes(index, labels, lzip(resid**2, leverage), + [(0, 5)]*int(results.nobs), "large", + ax=ax, ha="center", va="bottom") + ax.margins(.075, .075) + return fig + +_plot_leverage_resid2.__doc__ = _plot_leverage_resid2_doc.format({ + 'extra_params_doc' : "results: object\n\tResults for a fitted regression model\n" + "influence: instance\n instance of Influence for model"}) + + +def plot_leverage_resid2(results, alpha=.05, ax=None, **kwargs): + + infl = results.get_influence() + res = _plot_leverage_resid2(results, infl, alpha=.05, ax=None, + **kwargs) + return res + +plot_leverage_resid2.__doc__ = _plot_leverage_resid2_doc.format({ + 'extra_params_doc' : "results: object\n" + " Results for a fitted regression model"}) + + +def plot_added_variable(results, focus_exog, resid_type=None, + use_glm_weights=True, fit_kwargs=None, ax=None): + # Docstring attached below + + model = results.model + + fig, ax = utils.create_mpl_ax(ax) + + endog_resid, focus_exog_resid =\ + added_variable_resids(results, focus_exog, + resid_type=resid_type, + use_glm_weights=use_glm_weights, + fit_kwargs=fit_kwargs) + + ax.plot(focus_exog_resid, endog_resid, 'o', alpha=0.6) + + ax.set_title('Added variable plot', fontsize='large') + + if type(focus_exog) is str: + xname = focus_exog + else: + xname = model.exog_names[focus_exog] + ax.set_xlabel(xname, size=15) + ax.set_ylabel(model.endog_names + " residuals", size=15) + + return fig + +plot_added_variable.__doc__ = _plot_added_variable_doc % { + 'extra_params_doc' : "results: object\n\tResults for a fitted regression model"} + +def plot_partial_residuals(results, focus_exog, ax=None): + # Docstring attached below + + model = results.model + + focus_exog, focus_col = utils.maybe_name_or_idx(focus_exog, model) + + pr = partial_resids(results, focus_exog) + focus_exog_vals = results.model.exog[:, focus_col] + + fig, ax = utils.create_mpl_ax(ax) + ax.plot(focus_exog_vals, pr, 'o', alpha=0.6) + + ax.set_title('Partial residuals plot', fontsize='large') + + if type(focus_exog) is str: + xname = focus_exog + else: + xname = model.exog_names[focus_exog] + ax.set_xlabel(xname, size=15) + ax.set_ylabel("Component plus residual", size=15) + + return fig + +plot_partial_residuals.__doc__ = _plot_partial_residuals_doc % { + 'extra_params_doc' : "results: object\n\tResults for a fitted regression model"} + +def plot_ceres_residuals(results, focus_exog, frac=0.66, cond_means=None, + ax=None): + # Docstring attached below + + model = results.model + + focus_exog, focus_col = utils.maybe_name_or_idx(focus_exog, model) + + presid = ceres_resids(results, focus_exog, frac=frac, + cond_means=cond_means) + + focus_exog_vals = model.exog[:, focus_col] + + fig, ax = utils.create_mpl_ax(ax) + ax.plot(focus_exog_vals, presid, 'o', alpha=0.6) + + ax.set_title('CERES residuals plot', fontsize='large') + + ax.set_xlabel(focus_exog, size=15) + ax.set_ylabel("Component plus residual", size=15) + + return fig + +plot_ceres_residuals.__doc__ = _plot_ceres_residuals_doc % { + 'extra_params_doc' : "results: object\n\tResults for a fitted regression model"} + +def ceres_resids(results, focus_exog, frac=0.66, cond_means=None): + """ + Calculate the CERES residuals (Conditional Expectation Partial + Residuals) for a fitted model. + + Parameters + ---------- + results : model results instance + The fitted model for which the CERES residuals are calculated. + focus_exog : int + The column of results.model.exog used as the 'focus variable'. + frac : float, optional + Lowess smoothing parameter for estimating the conditional + means. Not used if `cond_means` is provided. + cond_means : array-like, optional + If provided, the columns of this array are the conditional + means E[exog | focus exog], where exog ranges over some + or all of the columns of exog other than focus exog. If + this is an empty nx0 array, the conditional means are + treated as being zero. If None, the conditional means are + estimated. + + Returns + ------- + An array containing the CERES residuals. + + Notes + ----- + If `cond_means` is not provided, it is obtained by smoothing each + column of exog (except the focus column) against the focus column. + + Currently only supports GLM, GEE, and OLS models. + """ + + model = results.model + + if not isinstance(model, (GLM, GEE, OLS)): + raise ValueError("ceres residuals not available for %s" % + model.__class__.__name__) + + focus_exog, focus_col = utils.maybe_name_or_idx(focus_exog, model) + + # Indices of non-focus columns + ix_nf = range(len(results.params)) + ix_nf = list(ix_nf) + ix_nf.pop(focus_col) + nnf = len(ix_nf) + + # Estimate the conditional means if not provided. + if cond_means is None: + + # Below we calculate E[x | focus] where x is each column other + # than the focus column. We don't want the intercept when we do + # this so we remove it here. + pexog = model.exog[:, ix_nf] + pexog -= pexog.mean(0) + u, s, vt = np.linalg.svd(pexog, 0) + ii = np.flatnonzero(s > 1e-6) + pexog = u[:, ii] + + fcol = model.exog[:, focus_col] + cond_means = np.empty((len(fcol), pexog.shape[1])) + for j in range(pexog.shape[1]): + + # Get the fitted values for column i given the other + # columns (skip the intercept). + y0 = pexog[:, j] + + cf = lowess(y0, fcol, frac=frac, return_sorted=False) + + cond_means[:, j] = cf + + new_exog = np.concatenate((model.exog[:, ix_nf], cond_means), axis=1) + + # Refit the model using the adjusted exog values + klass = model.__class__ + init_kwargs = model._get_init_kwds() + new_model = klass(model.endog, new_exog, **init_kwargs) + new_result = new_model.fit() + + # The partial residual, with respect to l(x2) (notation of Cook 1998) + presid = model.endog - new_result.fittedvalues + if isinstance(model, (GLM, GEE)): + presid *= model.family.link.deriv(new_result.fittedvalues) + if new_exog.shape[1] > nnf: + presid += np.dot(new_exog[:, nnf:], new_result.params[nnf:]) + + return presid + +def partial_resids(results, focus_exog): + """ + Returns partial residuals for a fitted model with respect to a + 'focus predictor'. + + Parameters + ---------- + results : results instance + A fitted regression model. + focus col : int + The column index of model.exog with respect to which the + partial residuals are calculated. + + Returns + ------- + An array of partial residuals. + + References + ---------- + RD Cook and R Croos-Dabrera (1998). Partial residual plots in + generalized linear models. Journal of the American Statistical + Association, 93:442. + """ + + # TODO: could be a method of results + # TODO: see Cook et al (1998) for a more general definition + + # The calculation follows equation (8) from Cook's paper. + model = results.model + resid = model.endog - results.predict() + + if isinstance(model, (GLM, GEE)): + resid *= model.family.link.deriv(results.fittedvalues) + elif isinstance(model, (OLS, GLS, WLS)): + pass # No need to do anything + else: + raise ValueError("Partial residuals for '%s' not implemented." + % type(model)) + + if type(focus_exog) is str: + focus_col = model.exog_names.index(focus_exog) + else: + focus_col = focus_exog + + focus_val = results.params[focus_col] * model.exog[:, focus_col] + + return focus_val + resid + +def added_variable_resids(results, focus_exog, resid_type=None, + use_glm_weights=True, fit_kwargs=None): + """ + Residualize the endog variable and a 'focus' exog variable in a + regression model with respect to the other exog variables. + + Parameters + ---------- + results : regression results instance + A fitted model including the focus exog and all other + predictors of interest. + focus_exog : integer or string + The column of results.model.exog or a variable name that is + to be residualized against the other predictors. + resid_type : string + The type of residuals to use for the dependent variable. If + None, uses `resid_deviance` for GLM/GEE and `resid` otherwise. + use_glm_weights : bool + Only used if the model is a GLM or GEE. If True, the + residuals for the focus predictor are computed using WLS, with + the weights obtained from the IRLS calculations for fitting + the GLM. If False, unweighted regression is used. + fit_kwargs : dict, optional + Keyword arguments to be passed to fit when refitting the + model. + + Returns + ------- + endog_resid : array-like + The residuals for the original exog + focus_exog_resid : array-like + The residuals for the focus predictor + + Notes + ----- + The 'focus variable' residuals are always obtained using linear + regression. + + Currently only GLM, GEE, and OLS models are supported. + """ + + model = results.model + if not isinstance(model, (GEE, GLM, OLS)): + raise ValueError("model type %s not supported for added variable residuals" % + model.__class__.__name__) + + exog = model.exog + endog = model.endog + + focus_exog, focus_col = utils.maybe_name_or_idx(focus_exog, model) + + focus_exog_vals = exog[:, focus_col] + + # Default residuals + if resid_type is None: + if isinstance(model, (GEE, GLM)): + resid_type = "resid_deviance" + else: + resid_type = "resid" + + ii = range(exog.shape[1]) + ii = list(ii) + ii.pop(focus_col) + reduced_exog = exog[:, ii] + start_params = results.params[ii] + + klass = model.__class__ + + kwargs = model._get_init_kwds() + new_model = klass(endog, reduced_exog, **kwargs) + args = {"start_params": start_params} + if fit_kwargs is not None: + args.update(fit_kwargs) + new_result = new_model.fit(**args) + if not new_result.converged: + raise ValueError("fit did not converge when calculating added variable residuals") + + try: + endog_resid = getattr(new_result, resid_type) + except AttributeError: + raise ValueError("'%s' residual type not available" % resid_type) + + import statsmodels.regression.linear_model as lm + + if isinstance(model, (GLM, GEE)) and use_glm_weights: + weights = model.family.weights(results.fittedvalues) + if hasattr(model, "data_weights"): + weights = weights * model.data_weights + lm_results = lm.WLS(focus_exog_vals, reduced_exog, weights).fit() + else: + lm_results = lm.OLS(focus_exog_vals, reduced_exog).fit() + focus_exog_resid = lm_results.resid + + return endog_resid, focus_exog_resid diff --git a/statsmodels/graphics/tests/__init__.py b/statsmodels/graphics/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/graphics/tests/test_agreement.py b/statsmodels/graphics/tests/test_agreement.py new file mode 100644 index 0000000..ccca0ca --- /dev/null +++ b/statsmodels/graphics/tests/test_agreement.py @@ -0,0 +1,48 @@ +import numpy as np +import pandas as pd +import pytest + +from statsmodels.graphics.agreement import mean_diff_plot + + +try: + import matplotlib.pyplot as plt +except ImportError: + pass + + +@pytest.mark.matplotlib +def test_mean_diff_plot(close_figures): + + # Seed the random number generator. + # This ensures that the results below are reproducible. + np.random.seed(11111) + m1 = np.random.random(20) + m2 = np.random.random(20) + + fig = plt.figure() + ax = fig.add_subplot(111) + + # basic test. + mean_diff_plot(m1, m2, ax=ax) + + # Test with pandas Series. + p1 = pd.Series(m1) + p2 = pd.Series(m2) + mean_diff_plot(p1, p2) + + # Test plotting on assigned axis. + fig, ax = plt.subplots(2) + mean_diff_plot(m1, m2, ax=ax[0]) + + # Test the setting of confidence intervals. + mean_diff_plot(m1, m2, sd_limit=0) + + # Test asethetic controls. + mean_diff_plot(m1, m2, scatter_kwds={'color': 'green', 's': 10}) + + mean_diff_plot(m1, m2, mean_line_kwds={'color': 'green', 'lw': 5}) + + mean_diff_plot(m1, m2, limit_lines_kwds={'color': 'green', + 'lw': 5, + 'ls': 'dotted'}) diff --git a/statsmodels/graphics/tests/test_boxplots.py b/statsmodels/graphics/tests/test_boxplots.py new file mode 100644 index 0000000..ed21ff8 --- /dev/null +++ b/statsmodels/graphics/tests/test_boxplots.py @@ -0,0 +1,70 @@ +import numpy as np +import pytest + +from statsmodels.graphics.boxplots import violinplot, beanplot +from statsmodels.datasets import anes96 + +try: + import matplotlib.pyplot as plt +except ImportError: + pass + + +@pytest.mark.matplotlib +def test_violinplot_beanplot(close_figures): + # Test violinplot and beanplot with the same dataset. + data = anes96.load_pandas() + party_ID = np.arange(7) + labels = ["Strong Democrat", "Weak Democrat", "Independent-Democrat", + "Independent-Independent", "Independent-Republican", + "Weak Republican", "Strong Republican"] + + age = [data.exog['age'][data.endog == id] for id in party_ID] + + fig = plt.figure() + ax = fig.add_subplot(111) + violinplot(age, ax=ax, labels=labels, + plot_opts={'cutoff_val':5, 'cutoff_type':'abs', + 'label_fontsize':'small', + 'label_rotation':30}) + + fig = plt.figure() + ax = fig.add_subplot(111) + violinplot(age, ax=ax, labels=labels, + plot_opts={'cutoff_val':5, 'cutoff_type':'abs', + 'label_fontsize':'small', + 'label_rotation':30, + 'bw_factor':.2}) + + fig = plt.figure() + ax = fig.add_subplot(111) + beanplot(age, ax=ax, labels=labels, + plot_opts={'cutoff_val':5, 'cutoff_type':'abs', + 'label_fontsize':'small', + 'label_rotation':30}) + + fig = plt.figure() + ax = fig.add_subplot(111) + beanplot(age, ax=ax, labels=labels, jitter=True, + plot_opts={'cutoff_val': 5, 'cutoff_type': 'abs', + 'label_fontsize': 'small', + 'label_rotation': 30}) + + fig = plt.figure() + ax = fig.add_subplot(111) + beanplot(age, ax=ax, labels=labels, jitter=True, side='right', + plot_opts={'cutoff_val': 5, 'cutoff_type': 'abs', + 'label_fontsize': 'small', + 'label_rotation': 30}) + + fig = plt.figure() + ax = fig.add_subplot(111) + beanplot(age, ax=ax, labels=labels, jitter=True, side='left', + plot_opts={'cutoff_val': 5, 'cutoff_type': 'abs', + 'label_fontsize': 'small', + 'label_rotation': 30}) + + fig = plt.figure() + ax = fig.add_subplot(111) + beanplot(age, ax=ax, labels=labels, + plot_opts={'bean_legend_text': 'text'}) diff --git a/statsmodels/graphics/tests/test_correlation.py b/statsmodels/graphics/tests/test_correlation.py new file mode 100644 index 0000000..fdfe45b --- /dev/null +++ b/statsmodels/graphics/tests/test_correlation.py @@ -0,0 +1,29 @@ +import numpy as np +import pytest + +from statsmodels.graphics.correlation import plot_corr, plot_corr_grid +from statsmodels.datasets import randhie + + +@pytest.mark.matplotlib +def test_plot_corr(close_figures): + hie_data = randhie.load_pandas() + corr_matrix = np.corrcoef(hie_data.data.values.T) + + plot_corr(corr_matrix, xnames=hie_data.names) + + plot_corr(corr_matrix, xnames=[], ynames=hie_data.names) + + plot_corr(corr_matrix, normcolor=True, title='', cmap='jet') + + +@pytest.mark.matplotlib +def test_plot_corr_grid(close_figures): + hie_data = randhie.load_pandas() + corr_matrix = np.corrcoef(hie_data.data.values.T) + + plot_corr_grid([corr_matrix] * 2, xnames=hie_data.names) + + plot_corr_grid([corr_matrix] * 5, xnames=[], ynames=hie_data.names) + + plot_corr_grid([corr_matrix] * 3, normcolor=True, titles='', cmap='jet') diff --git a/statsmodels/graphics/tests/test_dotplot.py b/statsmodels/graphics/tests/test_dotplot.py new file mode 100644 index 0000000..553a251 --- /dev/null +++ b/statsmodels/graphics/tests/test_dotplot.py @@ -0,0 +1,415 @@ +import numpy as np +import pytest + +from statsmodels.graphics.dotplots import dot_plot +import pandas as pd + +# If true, the output is written to a multi-page pdf file. +pdf_output = False + +try: + import matplotlib.pyplot as plt +except ImportError: + pass + + +def close_or_save(pdf, fig): + if pdf_output: + pdf.savefig(fig) + + +@pytest.mark.matplotlib +def test_all(close_figures, reset_randomstate): + + if pdf_output: + from matplotlib.backends.backend_pdf import PdfPages + pdf = PdfPages("test_dotplot.pdf") + else: + pdf = None + + # Basic dotplot with points only + plt.clf() + points = range(20) + ax = plt.axes() + fig = dot_plot(points, ax=ax) + ax.set_title("Basic horizontal dotplot") + close_or_save(pdf, fig) + + # Basic vertical dotplot + plt.clf() + points = range(20) + ax = plt.axes() + fig = dot_plot(points, ax=ax, horizontal=False) + ax.set_title("Basic vertical dotplot") + close_or_save(pdf, fig) + + # Tall and skinny + plt.figure(figsize=(4,12)) + ax = plt.axes() + vals = np.arange(40) + fig = dot_plot(points, ax=ax) + ax.set_title("Tall and skinny dotplot") + ax.set_xlabel("x axis label") + close_or_save(pdf, fig) + + # Short and wide + plt.figure(figsize=(12,4)) + ax = plt.axes() + vals = np.arange(40) + fig = dot_plot(points, ax=ax, horizontal=False) + ax.set_title("Short and wide dotplot") + ax.set_ylabel("y axis label") + close_or_save(pdf, fig) + + # Tall and skinny striped dotplot + plt.figure(figsize=(4,12)) + ax = plt.axes() + points = np.arange(40) + fig = dot_plot(points, ax=ax, striped=True) + ax.set_title("Tall and skinny striped dotplot") + ax.set_xlim(-10, 50) + close_or_save(pdf, fig) + + # Short and wide striped + plt.figure(figsize=(12,4)) + ax = plt.axes() + points = np.arange(40) + fig = dot_plot(points, ax=ax, striped=True, horizontal=False) + ax.set_title("Short and wide striped dotplot") + ax.set_ylim(-10, 50) + close_or_save(pdf, fig) + + # Basic dotplot with few points + plt.figure() + ax = plt.axes() + points = np.arange(4) + fig = dot_plot(points, ax=ax) + ax.set_title("Basic horizontal dotplot with few lines") + close_or_save(pdf, fig) + + # Basic dotplot with few points + plt.figure() + ax = plt.axes() + points = np.arange(4) + fig = dot_plot(points, ax=ax, horizontal=False) + ax.set_title("Basic vertical dotplot with few lines") + close_or_save(pdf, fig) + + # Manually set the x axis limits + plt.figure() + ax = plt.axes() + points = np.arange(20) + fig = dot_plot(points, ax=ax) + ax.set_xlim(-10, 30) + ax.set_title("Dotplot with adjusted horizontal range") + close_or_save(pdf, fig) + + # Left row labels + plt.clf() + ax = plt.axes() + lines = ["ABCDEFGH"[np.random.randint(0, 8)] for k in range(20)] + points = np.random.normal(size=20) + fig = dot_plot(points, lines=lines, ax=ax) + ax.set_title("Dotplot with user-supplied labels in the left margin") + close_or_save(pdf, fig) + + # Left and right row labels + plt.clf() + ax = plt.axes() + points = np.random.normal(size=20) + lines = ["ABCDEFGH"[np.random.randint(0, 8)] + "::" + str(k+1) + for k in range(20)] + fig = dot_plot(points, lines=lines, ax=ax, split_names="::") + ax.set_title("Dotplot with user-supplied labels in both margins") + close_or_save(pdf, fig) + + # Both sides row labels + plt.clf() + ax = plt.axes([0.1, 0.1, 0.88, 0.8]) + points = np.random.normal(size=20) + lines = ["ABCDEFGH"[np.random.randint(0, 8)] + "::" + str(k+1) + for k in range(20)] + fig = dot_plot(points, lines=lines, ax=ax, split_names="::", + horizontal=False) + txt = ax.set_title("Vertical dotplot with user-supplied labels in both margins") + txt.set_position((0.5, 1.06)) + close_or_save(pdf, fig) + + # Custom colors and symbols + plt.clf() + ax = plt.axes([0.1, 0.07, 0.78, 0.85]) + points = np.random.normal(size=20) + lines = np.kron(range(5), np.ones(4)).astype(np.int32) + styles = np.kron(np.ones(5), range(4)).astype(np.int32) + marker_props = {k: {"color": "rgbc"[k], "marker": "osvp"[k], + "ms": 7, "alpha": 0.6} for k in range(4)} + fig = dot_plot(points, lines=lines, styles=styles, ax=ax, + marker_props=marker_props) + ax.set_title("Dotplot with custom colors and symbols") + close_or_save(pdf, fig) + + # Basic dotplot with symmetric intervals + plt.clf() + ax = plt.axes() + points = range(20) + fig = dot_plot(points, intervals=np.ones(20), ax=ax) + ax.set_title("Dotplot with symmetric intervals") + close_or_save(pdf, fig) + + # Basic dotplot with symmetric intervals, pandas inputs. + plt.clf() + ax = plt.axes() + points = pd.Series(range(20)) + intervals = pd.Series(np.ones(20)) + fig = dot_plot(points, intervals=intervals, ax=ax) + ax.set_title("Dotplot with symmetric intervals (Pandas inputs)") + close_or_save(pdf, fig) + + # Basic dotplot with nonsymmetric intervals + plt.clf() + ax = plt.axes() + points = np.arange(20) + intervals = [(1, 3) for i in range(20)] + fig = dot_plot(points, intervals=intervals, ax=ax) + ax.set_title("Dotplot with nonsymmetric intervals") + close_or_save(pdf, fig) + + # Vertical dotplot with nonsymmetric intervals + plt.clf() + ax = plt.axes() + points = np.arange(20) + intervals = [(1, 3) for i in range(20)] + fig = dot_plot(points, intervals=intervals, ax=ax, horizontal=False) + ax.set_title("Vertical dotplot with nonsymmetric intervals") + close_or_save(pdf, fig) + + # Dotplot with nonsymmetric intervals, adjust line properties + plt.clf() + ax = plt.axes() + points = np.arange(20) + intervals = [(1, 3) for x in range(20)] + line_props = {0: {"color": "lightgrey", + "solid_capstyle": "round"}} + fig = dot_plot(points, intervals=intervals, line_props=line_props, ax=ax) + ax.set_title("Dotplot with custom line properties") + close_or_save(pdf, fig) + + # Dotplot with two points per line and a legend + plt.clf() + ax = plt.axes([0.1, 0.1, 0.75, 0.8]) + points = 5*np.random.normal(size=40) + lines = np.kron(range(20), (1,1)) + intervals = [(1,3) for k in range(40)] + styles = np.kron(np.ones(20), (0,1)).astype(np.int32) + styles = [["Cat", "Dog"][i] for i in styles] + fig = dot_plot(points, intervals=intervals, lines=lines, styles=styles, + ax=ax, stacked=True) + handles, labels = ax.get_legend_handles_labels() + leg = plt.figlegend(handles, labels, "center right", numpoints=1, + handletextpad=0.0001) + leg.draw_frame(False) + ax.set_title("Dotplot with two points per line") + close_or_save(pdf, fig) + + # Dotplot with two points per line and a legend + plt.clf() + ax = plt.axes([0.1, 0.1, 0.75, 0.8]) + fig = dot_plot(points, intervals=intervals, lines=lines, + styles=styles, ax=ax, stacked=True, + styles_order=["Dog", "Cat"]) + handles, labels = ax.get_legend_handles_labels() + leg = plt.figlegend(handles, labels, "center right", numpoints=1, + handletextpad=0.0001) + leg.draw_frame(False) + ax.set_title("Dotplot with two points per line (reverse order)") + close_or_save(pdf, fig) + + # Vertical dotplot with two points per line and a legend + plt.clf() + ax = plt.axes([0.1, 0.1, 0.75, 0.8]) + points = 5*np.random.normal(size=40) + lines = np.kron(range(20), (1,1)) + intervals = [(1,3) for k in range(40)] + styles = np.kron(np.ones(20), (0,1)).astype(np.int32) + styles = [["Cat", "Dog"][i] for i in styles] + fig = dot_plot(points, intervals=intervals, lines=lines, styles=styles, + ax=ax, stacked=True, horizontal=False) + handles, labels = ax.get_legend_handles_labels() + leg = plt.figlegend(handles, labels, "center right", numpoints=1, + handletextpad=0.0001) + leg.draw_frame(False) + ax.set_title("Vertical dotplot with two points per line") + close_or_save(pdf, fig) + + # Vertical dotplot with two points per line and a legend + plt.clf() + ax = plt.axes([0.1, 0.1, 0.75, 0.8]) + styles_order = ["Dog", "Cat"] + fig = dot_plot(points, intervals=intervals, lines=lines, + styles=styles, ax=ax, stacked=True, + horizontal=False, styles_order=styles_order) + handles, labels = ax.get_legend_handles_labels() + lh = dict(zip(labels, handles)) + handles = [lh[l] for l in styles_order] + leg = plt.figlegend(handles, styles_order, "center right", numpoints=1, + handletextpad=0.0001) + leg.draw_frame(False) + ax.set_title("Vertical dotplot with two points per line (reverse order)") + close_or_save(pdf, fig) + + # Vertical dotplot with two points per line and a legend + plt.clf() + ax = plt.axes([0.1, 0.1, 0.75, 0.8]) + points = 5*np.random.normal(size=40) + lines = np.kron(range(20), (1,1)) + intervals = [(1,3) for k in range(40)] + styles = np.kron(np.ones(20), (0,1)).astype(np.int32) + styles = [["Cat", "Dog"][i] for i in styles] + fig = dot_plot(points, intervals=intervals, lines=lines, styles=styles, + ax=ax, stacked=True, striped=True, horizontal=False) + handles, labels = ax.get_legend_handles_labels() + leg = plt.figlegend(handles, labels, "center right", numpoints=1, + handletextpad=0.0001) + leg.draw_frame(False) + plt.ylim(-20, 20) + ax.set_title("Vertical dotplot with two points per line") + close_or_save(pdf, fig) + + # Dotplot with color-matched points and intervals + plt.clf() + ax = plt.axes([0.1, 0.1, 0.75, 0.8]) + points = 5*np.random.normal(size=40) + lines = np.kron(range(20), (1,1)) + intervals = [(1,3) for k in range(40)] + styles = np.kron(np.ones(20), (0,1)).astype(np.int32) + styles = [["Cat", "Dog"][i] for i in styles] + marker_props = {"Cat": {"color": "orange"}, + "Dog": {"color": "purple"}} + line_props = {"Cat": {"color": "orange"}, + "Dog": {"color": "purple"}} + fig = dot_plot(points, intervals=intervals, lines=lines, styles=styles, + ax=ax, stacked=True, marker_props=marker_props, + line_props=line_props) + handles, labels = ax.get_legend_handles_labels() + leg = plt.figlegend(handles, labels, "center right", numpoints=1, + handletextpad=0.0001) + leg.draw_frame(False) + ax.set_title("Dotplot with color-matched points and intervals") + close_or_save(pdf, fig) + + # Dotplot with color-matched points and intervals + plt.clf() + ax = plt.axes([0.1, 0.1, 0.75, 0.8]) + points = 5*np.random.normal(size=40) + lines = np.kron(range(20), (1,1)) + intervals = [(1,3) for k in range(40)] + styles = np.kron(np.ones(20), (0,1)).astype(np.int32) + styles = [["Cat", "Dog"][i] for i in styles] + marker_props = {"Cat": {"color": "orange"}, + "Dog": {"color": "purple"}} + line_props = {"Cat": {"color": "orange"}, + "Dog": {"color": "purple"}} + fig = dot_plot(points, intervals=intervals, lines=lines, styles=styles, + ax=ax, stacked=True, marker_props=marker_props, + line_props=line_props, horizontal=False) + handles, labels = ax.get_legend_handles_labels() + leg = plt.figlegend(handles, labels, "center right", numpoints=1, + handletextpad=0.0001) + leg.draw_frame(False) + ax.set_title("Dotplot with color-matched points and intervals") + close_or_save(pdf, fig) + + # Dotplot with sections + plt.clf() + ax = plt.axes() + points = range(30) + lines = np.kron(range(15), (1,1)).astype(np.int32) + styles = np.kron(np.ones(15), (0,1)).astype(np.int32) + sections = np.kron((0,1,2), np.ones(10)).astype(np.int32) + sections = [["Axx", "Byy", "Czz"][k] for k in sections] + fig = dot_plot(points, lines=lines, styles=styles, sections=sections, ax=ax) + ax.set_title("Dotplot with sections") + close_or_save(pdf, fig) + + # Vertical dotplot with sections + plt.clf() + ax = plt.axes([0.1,0.1,0.9,0.75]) + points = range(30) + lines = np.kron(range(15), (1,1)).astype(np.int32) + styles = np.kron(np.ones(15), (0,1)).astype(np.int32) + sections = np.kron((0,1,2), np.ones(10)).astype(np.int32) + sections = [["Axx", "Byy", "Czz"][k] for k in sections] + fig = dot_plot(points, lines=lines, styles=styles, + sections=sections, ax=ax, horizontal=False) + txt = ax.set_title("Vertical dotplot with sections") + txt.set_position((0.5, 1.08)) + close_or_save(pdf, fig) + + # Reorder sections + plt.clf() + ax = plt.axes() + points = range(30) + lines = np.kron(range(15), (1,1)).astype(np.int32) + styles = np.kron(np.ones(15), (0,1)).astype(np.int32) + sections = np.kron((0,1,2), np.ones(10)).astype(np.int32) + sections = [["Axx", "Byy", "Czz"][k] for k in sections] + fig = dot_plot(points, lines=lines, styles=styles, sections=sections, ax=ax, + section_order=["Byy", "Axx", "Czz"]) + ax.set_title("Dotplot with sections in specified order") + close_or_save(pdf, fig) + + # Reorder the lines. + plt.figure() + ax = plt.axes() + points = np.arange(4) + lines = ["A", "B", "C", "D"] + line_order = ["B", "C", "A", "D"] + fig = dot_plot(points, lines=lines, line_order=line_order, ax=ax) + ax.set_title("Dotplot with reordered lines") + close_or_save(pdf, fig) + + # Format labels + plt.clf() + points = range(20) + lines = ["%d::%d" % (i, 100+i) for i in range(20)] + fmt_left = lambda x : "lft_" + x + fmt_right = lambda x : "rgt_" + x + ax = plt.axes() + fig = dot_plot(points, lines=lines, ax=ax, split_names="::", + fmt_left_name=fmt_left, fmt_right_name=fmt_right) + ax.set_title("Horizontal dotplot with name formatting") + close_or_save(pdf, fig) + + # Right names only + plt.clf() + points = range(20) + lines = ["%d::%d" % (i, 100+i) for i in range(20)] + ax = plt.axes() + fig = dot_plot(points, lines=lines, ax=ax, split_names="::", + show_names="right") + ax.set_title("Show right names only") + close_or_save(pdf, fig) + + # Dotplot with different numbers of points per line + plt.clf() + ax = plt.axes([0.1, 0.1, 0.75, 0.8]) + points = 5*np.random.normal(size=40) + lines = [] + ii = 0 + while len(lines) < 40: + for k in range(np.random.randint(1, 4)): + lines.append(ii) + ii += 1 + styles = np.kron(np.ones(20), (0,1)).astype(np.int32) + styles = [["Cat", "Dog"][i] for i in styles] + fig = dot_plot(points, lines=lines, styles=styles, + ax=ax, stacked=True) + handles, labels = ax.get_legend_handles_labels() + leg = plt.figlegend(handles, labels, "center right", numpoints=1, + handletextpad=0.0001) + leg.draw_frame(False) + ax.set_title("Dotplot with different numbers of points per line") + close_or_save(pdf, fig) + + if pdf_output: + pdf.close() diff --git a/statsmodels/graphics/tests/test_factorplots.py b/statsmodels/graphics/tests/test_factorplots.py new file mode 100644 index 0000000..3fbb3a7 --- /dev/null +++ b/statsmodels/graphics/tests/test_factorplots.py @@ -0,0 +1,71 @@ +import numpy as np +from numpy.testing import assert_raises, assert_equal +from pandas import Series +import pytest + +from statsmodels.graphics.factorplots import interaction_plot, _recode + +try: + import matplotlib.pyplot as plt +except ImportError: + pass + + +class TestInteractionPlot(object): + + @classmethod + def setup_class(cls): + np.random.seed(12345) + cls.weight = np.random.randint(1,4,size=60) + cls.duration = np.random.randint(1,3,size=60) + cls.days = np.log(np.random.randint(1,30, size=60)) + + @pytest.mark.matplotlib + def test_plot_both(self, close_figures): + fig = interaction_plot(self.weight, self.duration, self.days, + colors=['red','blue'], markers=['D','^'], ms=10) + + @pytest.mark.matplotlib + def test_plot_rainbow(self, close_figures): + fig = interaction_plot(self.weight, self.duration, self.days, + markers=['D','^'], ms=10) + + @pytest.mark.matplotlib + @pytest.mark.parametrize('astype', ['str', 'int']) + def test_plot_pandas(self, astype, close_figures): + weight = Series(self.weight, name='Weight').astype(astype) + duration = Series(self.duration, name='Duration') + days = Series(self.days, name='Days') + fig = interaction_plot(weight, duration, days, + markers=['D', '^'], ms=10) + ax = fig.axes[0] + trace = ax.get_legend().get_title().get_text() + assert_equal(trace, 'Duration') + assert_equal(ax.get_ylabel(), 'mean of Days') + assert_equal(ax.get_xlabel(), 'Weight') + + @pytest.mark.matplotlib + def test_formatting(self, close_figures): + fig = interaction_plot(self.weight, self.duration, self.days, colors=['r','g'], linestyles=['--','-.']) + assert_equal(isinstance(fig, plt.Figure), True) + + @pytest.mark.matplotlib + def test_formatting_errors(self, close_figures): + assert_raises(ValueError, interaction_plot, self.weight, self.duration, self.days, markers=['D']) + assert_raises(ValueError, interaction_plot, self.weight, self.duration, self.days, colors=['b','r','g']) + assert_raises(ValueError, interaction_plot, self.weight, self.duration, self.days, linestyles=['--','-.',':']) + + @pytest.mark.matplotlib + def test_plottype(self, close_figures): + fig = interaction_plot(self.weight, self.duration, self.days, plottype='line') + assert_equal(isinstance(fig, plt.Figure), True) + fig = interaction_plot(self.weight, self.duration, self.days, plottype='scatter') + assert_equal(isinstance(fig, plt.Figure), True) + assert_raises(ValueError, interaction_plot, self.weight, self.duration, self.days, plottype='unknown') + + def test_recode_series(self): + series = Series(['a', 'b'] * 10, index=np.arange(0, 40, 2), + name='index_test') + series_ = _recode(series, {'a': 0, 'b': 1}) + assert_equal(series_.index.values, series.index.values, + err_msg='_recode changed the index') diff --git a/statsmodels/graphics/tests/test_functional.py b/statsmodels/graphics/tests/test_functional.py new file mode 100644 index 0000000..5cc6f59 --- /dev/null +++ b/statsmodels/graphics/tests/test_functional.py @@ -0,0 +1,247 @@ +from statsmodels.compat.python import range + +import numpy as np +from numpy.testing import assert_equal, assert_almost_equal +import pytest + +from statsmodels.datasets import elnino +from statsmodels.graphics.functional import \ + hdrboxplot, banddepth, fboxplot, rainbowplot + +try: + import matplotlib.pyplot as plt +except ImportError: + pass + + +data = elnino.load(as_pandas=False) +labels = data.raw_data[:, 0].astype(int) +data = data.raw_data[:, 1:] + + +@pytest.mark.matplotlib +def test_hdr_basic(close_figures): + try: + _, hdr = hdrboxplot(data, labels=labels, seed=12345) + except WindowsError: + pytest.xfail('Multiprocess randomly crashes in Windows testing') + + assert len(hdr.extra_quantiles) == 0 + + median_t = [24.247, 25.625, 25.964, 24.999, 23.648, 22.302, + 21.231, 20.366, 20.168, 20.434, 21.111, 22.299] + + assert_almost_equal(hdr.median, median_t, decimal=2) + + quant = np.vstack([hdr.outliers, hdr.hdr_90, hdr.hdr_50]) + quant_t = np.vstack([[24.36, 25.42, 25.40, 24.96, 24.21, 23.35, + 22.50, 21.89, 22.04, 22.88, 24.57, 25.89], + [27.25, 28.23, 28.85, 28.82, 28.37, 27.43, + 25.73, 23.88, 22.26, 22.22, 22.21, 23.19], + [23.70, 26.08, 27.17, 26.74, 26.77, 26.15, + 25.59, 24.95, 24.69, 24.64, 25.85, 27.08], + [28.12, 28.82, 29.24, 28.45, 27.36, 25.19, + 23.61, 22.27, 21.31, 21.37, 21.60, 22.81], + [25.48, 26.99, 27.51, 27.04, 26.23, 24.94, + 23.69, 22.72, 22.26, 22.64, 23.33, 24.44], + [23.11, 24.50, 24.66, 23.44, 21.74, 20.58, + 19.68, 18.84, 18.76, 18.99, 19.66, 20.86], + [24.84, 26.23, 26.67, 25.93, 24.87, 23.57, + 22.46, 21.45, 21.26, 21.57, 22.14, 23.41], + [23.62, 25.10, 25.34, 24.22, 22.74, 21.52, + 20.40, 19.56, 19.63, 19.67, 20.37, 21.76]]) + + assert_almost_equal(quant, quant_t, decimal=0) + + labels_pos = np.all(np.in1d(data, hdr.outliers).reshape(data.shape), + axis=1) + outliers = labels[labels_pos] + assert_equal([1982, 1983, 1997, 1998], outliers) + assert_equal(labels[hdr.outliers_idx], outliers) + + +@pytest.mark.slow +@pytest.mark.matplotlib +def test_hdr_basic_brute(close_figures, reset_randomstate): + try: + _, hdr = hdrboxplot(data, ncomp=2, labels=labels, use_brute=True) + except WindowsError: + pytest.xfail('Multiprocess randomly crashes in Windows testing') + + assert len(hdr.extra_quantiles) == 0 + + median_t = [24.247, 25.625, 25.964, 24.999, 23.648, 22.302, + 21.231, 20.366, 20.168, 20.434, 21.111, 22.299] + + assert_almost_equal(hdr.median, median_t, decimal=2) + + +@pytest.mark.slow +@pytest.mark.matplotlib +def test_hdr_plot(close_figures): + fig = plt.figure() + ax = fig.add_subplot(111) + + try: + hdrboxplot(data, labels=labels.tolist(), ax=ax, threshold=1, + seed=12345) + except WindowsError: + pytest.xfail('Multiprocess randomly crashes in Windows testing') + + ax.set_xlabel("Month of the year") + ax.set_ylabel("Sea surface temperature (C)") + ax.set_xticks(np.arange(13, step=3) - 1) + ax.set_xticklabels(["", "Mar", "Jun", "Sep", "Dec"]) + ax.set_xlim([-0.2, 11.2]) + + +@pytest.mark.slow +@pytest.mark.matplotlib +def test_hdr_alpha(close_figures): + try: + _, hdr = hdrboxplot(data, alpha=[0.7], seed=12345) + except WindowsError: + pytest.xfail('Multiprocess randomly crashes in Windows testing') + + extra_quant_t = np.vstack([[25.1, 26.5, 27.0, 26.4, 25.4, 24.1, + 23.0, 22.0, 21.7, 22.1, 22.7, 23.8], + [23.4, 24.8, 25.0, 23.9, 22.4, 21.1, + 20.0, 19.3, 19.2, 19.4, 20.1, 21.3]]) + assert_almost_equal(hdr.extra_quantiles, extra_quant_t, decimal=0) + + +@pytest.mark.slow +@pytest.mark.matplotlib +def test_hdr_multiple_alpha(close_figures): + try: + _, hdr = hdrboxplot(data, alpha=[0.4, 0.92], seed=12345) + except WindowsError: + pytest.xfail('Multiprocess randomly crashes in Windows testing') + + extra_quant_t = [[25.712, 27.052, 27.711, 27.200, + 26.162, 24.833, 23.639, 22.378, + 22.250, 22.640, 23.472, 24.649], + [22.973, 24.526, 24.608, 23.343, + 21.908, 20.655, 19.750, 19.046, + 18.812, 18.989, 19.520, 20.685], + [24.667, 26.033, 26.416, 25.584, + 24.308, 22.849, 21.684, 20.948, + 20.483, 21.019, 21.751, 22.890], + [23.873, 25.371, 25.667, 24.644, + 23.177, 21.923, 20.791, 20.015, + 19.697, 19.951, 20.622, 21.858]] + assert_almost_equal(hdr.extra_quantiles, np.vstack(extra_quant_t), + decimal=0) + + +@pytest.mark.slow +@pytest.mark.matplotlib +def test_hdr_threshold(close_figures): + try: + _, hdr = hdrboxplot(data, alpha=[0.8], threshold=0.93, + seed=12345) + except WindowsError: + pytest.xfail('Multiprocess randomly crashes in Windows testing') + + labels_pos = np.all(np.in1d(data, hdr.outliers).reshape(data.shape), + axis=1) + outliers = labels[labels_pos] + assert_equal([1968, 1982, 1983, 1997, 1998], outliers) + + +@pytest.mark.matplotlib +def test_hdr_bw(close_figures): + try: + _, hdr = hdrboxplot(data, bw='cv_ml', seed=12345) + except WindowsError: + pytest.xfail('Multiprocess randomly crashes in Windows testing') + + median_t = [24.25, 25.64, 25.99, 25.04, 23.71, 22.38, + 21.31, 20.44, 20.24, 20.51, 21.19, 22.38] + assert_almost_equal(hdr.median, median_t, decimal=2) + + +@pytest.mark.slow +@pytest.mark.matplotlib +def test_hdr_ncomp(close_figures): + try: + _, hdr = hdrboxplot(data, ncomp=3, seed=12345) + except WindowsError: + pytest.xfail('Multiprocess randomly crashes in Windows testing') + + median_t = [24.33, 25.71, 26.04, 25.08, 23.74, 22.40, + 21.32, 20.45, 20.25, 20.53, 21.20, 22.39] + assert_almost_equal(hdr.median, median_t, decimal=2) + + +def test_banddepth_BD2(): + xx = np.arange(500) / 150. + y1 = 1 + 0.5 * np.sin(xx) + y2 = 0.3 + np.sin(xx + np.pi/6) + y3 = -0.5 + np.sin(xx + np.pi/6) + y4 = -1 + 0.3 * np.cos(xx + np.pi/6) + + data = np.asarray([y1, y2, y3, y4]) + depth = banddepth(data, method='BD2') + expected_depth = [0.5, 5./6, 5./6, 0.5] + assert_almost_equal(depth, expected_depth) + + # Plot to visualize why we expect this output + # fig = plt.figure() + # ax = fig.add_subplot(111) + # for ii, yy in enumerate([y1, y2, y3, y4]): + # ax.plot(xx, yy, label="y%s" % ii) + + # ax.legend() + # plt.close(fig) + + +def test_banddepth_MBD(): + xx = np.arange(5001) / 5000. + y1 = np.zeros(xx.shape) + y2 = 2 * xx - 1 + y3 = np.ones(xx.shape) * 0.5 + y4 = np.ones(xx.shape) * -0.25 + + data = np.asarray([y1, y2, y3, y4]) + depth = banddepth(data, method='MBD') + expected_depth = [5./6, (2*(0.75-3./8)+3)/6, 3.5/6, (2*3./8+3)/6] + assert_almost_equal(depth, expected_depth, decimal=4) + + +@pytest.mark.matplotlib +def test_fboxplot_rainbowplot(close_figures): + # Test fboxplot and rainbowplot together, is much faster. + def harmfunc(t): + """Test function, combination of a few harmonic terms.""" + # Constant, 0 with p=0.9, 1 with p=1 - for creating outliers + ci = int(np.random.random() > 0.9) + a1i = np.random.random() * 0.05 + a2i = np.random.random() * 0.05 + b1i = (0.15 - 0.1) * np.random.random() + 0.1 + b2i = (0.15 - 0.1) * np.random.random() + 0.1 + + func = (1 - ci) * (a1i * np.sin(t) + a2i * np.cos(t)) + \ + ci * (b1i * np.sin(t) + b2i * np.cos(t)) + + return func + + np.random.seed(1234567) + # Some basic test data, Model 6 from Sun and Genton. + t = np.linspace(0, 2 * np.pi, 250) + data = [harmfunc(t) for _ in range(20)] + + # fboxplot test + fig = plt.figure() + ax = fig.add_subplot(111) + _, depth, ix_depth, ix_outliers = fboxplot(data, wfactor=2, ax=ax) + + ix_expected = np.array([13, 4, 15, 19, 8, 6, 3, 16, 9, 7, 1, 5, 2, + 12, 17, 11, 14, 10, 0, 18]) + assert_equal(ix_depth, ix_expected) + ix_expected2 = np.array([2, 11, 17, 18]) + assert_equal(ix_outliers, ix_expected2) + + # rainbowplot test (re-uses depth variable) + xdata = np.arange(data[0].size) + fig = rainbowplot(data, xdata=xdata, depth=depth, cmap=plt.cm.rainbow) diff --git a/statsmodels/graphics/tests/test_gofplots.py b/statsmodels/graphics/tests/test_gofplots.py new file mode 100644 index 0000000..9604e54 --- /dev/null +++ b/statsmodels/graphics/tests/test_gofplots.py @@ -0,0 +1,233 @@ +import numpy as np +import pytest +from scipy import stats + +import statsmodels.api as sm + + +class BaseProbplotMixin(object): + def setup(self): + try: + import matplotlib.pyplot as plt + self.fig, self.ax = plt.subplots() + except ImportError: + pass + self.other_array = np.random.normal(size=self.prbplt.data.shape) + self.other_prbplot = sm.ProbPlot(self.other_array) + + @pytest.mark.matplotlib + def test_qqplot(self, close_figures): + self.prbplt.qqplot(ax=self.ax, line=self.line) + + @pytest.mark.matplotlib + def test_ppplot(self, close_figures): + self.prbplt.ppplot(ax=self.ax, line=self.line) + + @pytest.mark.matplotlib + def test_probplot(self, close_figures): + self.prbplt.probplot(ax=self.ax, line=self.line) + + @pytest.mark.matplotlib + def test_qqplot_other_array(self, close_figures): + self.prbplt.qqplot(ax=self.ax, line=self.line, + other=self.other_array) + + @pytest.mark.matplotlib + def test_ppplot_other_array(self, close_figures): + self.prbplt.ppplot(ax=self.ax, line=self.line, + other=self.other_array) + + @pytest.mark.matplotlib + def t_est_probplot_other_array(self, close_figures): + self.prbplt.probplot(ax=self.ax, line=self.line, + other=self.other_array) + + @pytest.mark.matplotlib + def test_qqplot_other_prbplt(self, close_figures): + self.prbplt.qqplot(ax=self.ax, line=self.line, + other=self.other_prbplot) + + @pytest.mark.matplotlib + def test_ppplot_other_prbplt(self, close_figures): + self.prbplt.ppplot(ax=self.ax, line=self.line, + other=self.other_prbplot) + + @pytest.mark.matplotlib + def t_est_probplot_other_prbplt(self, close_figures): + self.prbplt.probplot(ax=self.ax, line=self.line, + other=self.other_prbplot) + + @pytest.mark.matplotlib + def test_qqplot_custom_labels(self, close_figures): + self.prbplt.qqplot(ax=self.ax, line=self.line, + xlabel='Custom X-Label', + ylabel='Custom Y-Label') + + @pytest.mark.matplotlib + def test_ppplot_custom_labels(self, close_figures): + self.prbplt.ppplot(ax=self.ax, line=self.line, + xlabel='Custom X-Label', + ylabel='Custom Y-Label') + + @pytest.mark.matplotlib + def test_probplot_custom_labels(self, close_figures): + self.prbplt.probplot(ax=self.ax, line=self.line, + xlabel='Custom X-Label', + ylabel='Custom Y-Label') + + @pytest.mark.matplotlib + def test_qqplot_pltkwargs(self, close_figures): + self.prbplt.qqplot(ax=self.ax, line=self.line, + marker='d', + markerfacecolor='cornflowerblue', + markeredgecolor='white', + alpha=0.5) + + @pytest.mark.matplotlib + def test_ppplot_pltkwargs(self, close_figures): + self.prbplt.ppplot(ax=self.ax, line=self.line, + marker='d', + markerfacecolor='cornflowerblue', + markeredgecolor='white', + alpha=0.5) + + @pytest.mark.matplotlib + def test_probplot_pltkwargs(self, close_figures): + self.prbplt.probplot(ax=self.ax, line=self.line, + marker='d', + markerfacecolor='cornflowerblue', + markeredgecolor='white', + alpha=0.5) + + +class TestProbPlotLongely(BaseProbplotMixin): + def setup(self): + np.random.seed(5) + self.data = sm.datasets.longley.load(as_pandas=False) + self.data.exog = sm.add_constant(self.data.exog, prepend=False) + self.mod_fit = sm.OLS(self.data.endog, self.data.exog).fit() + self.prbplt = sm.ProbPlot(self.mod_fit.resid, stats.t, distargs=(4,)) + self.line = 'r' + super(TestProbPlotLongely, self).setup() + + +class TestProbPlotRandomNormalMinimal(BaseProbplotMixin): + def setup(self): + np.random.seed(5) + self.data = np.random.normal(loc=8.25, scale=3.25, size=37) + self.prbplt = sm.ProbPlot(self.data) + self.line = None + super(TestProbPlotRandomNormalMinimal, self).setup() + + +class TestProbPlotRandomNormalWithFit(BaseProbplotMixin): + def setup(self): + np.random.seed(5) + self.data = np.random.normal(loc=8.25, scale=3.25, size=37) + self.prbplt = sm.ProbPlot(self.data, fit=True) + self.line = 'q' + super(TestProbPlotRandomNormalWithFit, self).setup() + + +class TestProbPlotRandomNormalLocScale(BaseProbplotMixin): + def setup(self): + np.random.seed(5) + self.data = np.random.normal(loc=8.25, scale=3.25, size=37) + self.prbplt = sm.ProbPlot(self.data, loc=8.25, scale=3.25) + self.line = '45' + super(TestProbPlotRandomNormalLocScale, self).setup() + + def test_loc_set(self): + assert self.prbplt.loc == 8.25 + + def test_scale_set(self): + assert self.prbplt.scale == 3.25 + + +class TestCompareSamplesDifferentSize(object): + def setup(self): + np.random.seed(5) + self.data1 = sm.ProbPlot(np.random.normal(loc=8.25, scale=3.25, + size=37)) + self.data2 = sm.ProbPlot(np.random.normal(loc=8.25, scale=3.25, + size=55)) + + @pytest.mark.matplotlib + def test_qqplot(self, close_figures): + self.data1.qqplot(other=self.data2) + with pytest.raises(ValueError): + self.data2.qqplot(other=self.data1) + + @pytest.mark.matplotlib + def test_ppplot(self, close_figures): + self.data1.ppplot(other=self.data2) + self.data2.ppplot(other=self.data1) + + +class TestProbPlotRandomNormalLocScaleDist(BaseProbplotMixin): + + def setup(self): + np.random.seed(5) + self.data = np.random.normal(loc=8.25, scale=3.25, size=37) + self.prbplt = sm.ProbPlot(self.data, loc=8, scale=3) + self.line = '45' + super(TestProbPlotRandomNormalLocScaleDist, self).setup() + + def test_loc_set(self): + assert self.prbplt.loc == 8 + + def test_scale_set(self): + assert self.prbplt.scale == 3 + + def test_loc_set_in_dist(self): + assert self.prbplt.dist.mean() == 8. + + def test_scale_set_in_dist(self): + assert self.prbplt.dist.var() == 9. + + +class TestTopLevel(object): + def setup(self): + self.data = sm.datasets.longley.load(as_pandas=False) + self.data.exog = sm.add_constant(self.data.exog, prepend=False) + self.mod_fit = sm.OLS(self.data.endog, self.data.exog).fit() + self.res = self.mod_fit.resid + self.prbplt = sm.ProbPlot(self.mod_fit.resid, stats.t, distargs=(4,)) + self.other_array = np.random.normal(size=self.prbplt.data.shape) + self.other_prbplot = sm.ProbPlot(self.other_array) + + @pytest.mark.matplotlib + def test_qqplot(self, close_figures): + sm.qqplot(self.res, line='r') + + @pytest.mark.matplotlib + def test_qqplot_pltkwargs(self, close_figures): + sm.qqplot(self.res, line='r', marker='d', + markerfacecolor='cornflowerblue', + markeredgecolor='white', + alpha=0.5) + + @pytest.mark.matplotlib + def test_qqplot_2samples_ProbPlotObjects(self, close_figures): + # also tests all values for line + for line in ['r', 'q', '45', 's']: + # test with `ProbPlot` instances + sm.qqplot_2samples(self.prbplt, self.other_prbplot, + line=line) + + @pytest.mark.matplotlib + def test_qqplot_2samples_arrays(self, close_figures): + # also tests all values for line + for line in ['r', 'q', '45', 's']: + # test with arrays + sm.qqplot_2samples(self.res, self.other_array, line=line) + + +def test_invalid_dist_config(close_figures): + # GH 4226 + np.random.seed(5) + data = sm.datasets.longley.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + mod_fit = sm.OLS(data.endog, data.exog).fit() + with pytest.raises(TypeError, match=r'dist\(0, 1, 4, loc=0, scale=1\)'): + sm.ProbPlot(mod_fit.resid, stats.t, distargs=(0, 1, 4)) diff --git a/statsmodels/graphics/tests/test_mosaicplot.py b/statsmodels/graphics/tests/test_mosaicplot.py new file mode 100644 index 0000000..e08367e --- /dev/null +++ b/statsmodels/graphics/tests/test_mosaicplot.py @@ -0,0 +1,448 @@ +from __future__ import division + +from statsmodels.compat.python import iterkeys, zip, lrange, iteritems, range + +from collections import OrderedDict +from io import BytesIO +from itertools import product + +import numpy as np +import pandas as pd +import pytest +from numpy.testing import assert_, assert_raises + +from statsmodels.api import datasets + +# utilities for the tests + +try: + import matplotlib.pyplot as plt # noqa:F401 +except ImportError: + pass + +# the main drawing function +from statsmodels.graphics.mosaicplot import mosaic +# other functions to be tested for accuracy +from statsmodels.graphics.mosaicplot import _hierarchical_split +from statsmodels.graphics.mosaicplot import _reduce_dict +from statsmodels.graphics.mosaicplot import _key_splitting +from statsmodels.graphics.mosaicplot import _normalize_split +from statsmodels.graphics.mosaicplot import _split_rect + + +@pytest.mark.matplotlib +def test_data_conversion(close_figures): + # It will not reorder the elements + # so the dictionary will look odd + # as it key order has the c and b + # keys swapped + import pandas + _, ax = plt.subplots(4, 4) + data = {'ax': 1, 'bx': 2, 'cx': 3} + mosaic(data, ax=ax[0, 0], title='basic dict', axes_label=False) + data = pandas.Series(data) + mosaic(data, ax=ax[0, 1], title='basic series', axes_label=False) + data = [1, 2, 3] + mosaic(data, ax=ax[0, 2], title='basic list', axes_label=False) + data = np.asarray(data) + mosaic(data, ax=ax[0, 3], title='basic array', axes_label=False) + + data = {('ax', 'cx'): 1, ('bx', 'cx'): 2, ('ax', 'dx'): 3, ('bx', 'dx'): 4} + mosaic(data, ax=ax[1, 0], title='compound dict', axes_label=False) + mosaic(data, ax=ax[2, 0], title='inverted keys dict', index=[1, 0], axes_label=False) + data = pandas.Series(data) + mosaic(data, ax=ax[1, 1], title='compound series', axes_label=False) + mosaic(data, ax=ax[2, 1], title='inverted keys series', index=[1, 0]) + data = [[1, 2], [3, 4]] + mosaic(data, ax=ax[1, 2], title='compound list', axes_label=False) + mosaic(data, ax=ax[2, 2], title='inverted keys list', index=[1, 0]) + data = np.array([[1, 2], [3, 4]]) + mosaic(data, ax=ax[1, 3], title='compound array', axes_label=False) + mosaic(data, ax=ax[2, 3], title='inverted keys array', index=[1, 0], axes_label=False) + + gender = ['male', 'male', 'male', 'female', 'female', 'female'] + pet = ['cat', 'dog', 'dog', 'cat', 'dog', 'cat'] + data = pandas.DataFrame({'gender': gender, 'pet': pet}) + mosaic(data, ['gender'], ax=ax[3, 0], title='dataframe by key 1', axes_label=False) + mosaic(data, ['pet'], ax=ax[3, 1], title='dataframe by key 2', axes_label=False) + mosaic(data, ['gender', 'pet'], ax=ax[3, 2], title='both keys', axes_label=False) + mosaic(data, ['pet', 'gender'], ax=ax[3, 3], title='keys inverted', axes_label=False) + + plt.suptitle('testing data conversion (plot 1 of 4)') + + +@pytest.mark.matplotlib +def test_mosaic_simple(close_figures): + # display a simple plot of 4 categories of data, splitted in four + # levels with increasing size for each group + # creation of the levels + key_set = (['male', 'female'], ['old', 'adult', 'young'], + ['worker', 'unemployed'], ['healty', 'ill']) + # the cartesian product of all the categories is + # the complete set of categories + keys = list(product(*key_set)) + data = OrderedDict(zip(keys, range(1, 1 + len(keys)))) + # which colours should I use for the various categories? + # put it into a dict + props = {} + #males and females in blue and red + props[('male',)] = {'color': 'b'} + props[('female',)] = {'color': 'r'} + # all the groups corresponding to ill groups have a different color + for key in keys: + if 'ill' in key: + if 'male' in key: + props[key] = {'color': 'BlueViolet' , 'hatch': '+'} + else: + props[key] = {'color': 'Crimson' , 'hatch': '+'} + # mosaic of the data, with given gaps and colors + mosaic(data, gap=0.05, properties=props, axes_label=False) + plt.suptitle('syntetic data, 4 categories (plot 2 of 4)') + + +@pytest.mark.matplotlib +def test_mosaic(close_figures): + # make the same analysis on a known dataset + + # load the data and clean it a bit + affairs = datasets.fair.load_pandas() + datas = affairs.exog + # any time greater than 0 is cheating + datas['cheated'] = affairs.endog > 0 + # sort by the marriage quality and give meaningful name + # [rate_marriage, age, yrs_married, children, + # religious, educ, occupation, occupation_husb] + datas = datas.sort_values(['rate_marriage', 'religious']) + + num_to_desc = {1: 'awful', 2: 'bad', 3: 'intermediate', + 4: 'good', 5: 'wonderful'} + datas['rate_marriage'] = datas['rate_marriage'].map(num_to_desc) + num_to_faith = {1: 'non religious', 2: 'poorly religious', 3: 'religious', + 4: 'very religious'} + datas['religious'] = datas['religious'].map(num_to_faith) + num_to_cheat = {False: 'faithful', True: 'cheated'} + datas['cheated'] = datas['cheated'].map(num_to_cheat) + # finished cleaning + _, ax = plt.subplots(2, 2) + mosaic(datas, ['rate_marriage', 'cheated'], ax=ax[0, 0], + title='by marriage happiness') + mosaic(datas, ['religious', 'cheated'], ax=ax[0, 1], + title='by religiosity') + mosaic(datas, ['rate_marriage', 'religious', 'cheated'], ax=ax[1, 0], + title='by both', labelizer=lambda k:'') + ax[1, 0].set_xlabel('marriage rating') + ax[1, 0].set_ylabel('religion status') + mosaic(datas, ['religious', 'rate_marriage'], ax=ax[1, 1], + title='inter-dependence', axes_label=False) + plt.suptitle("extramarital affairs (plot 3 of 4)") + + +@pytest.mark.matplotlib +def test_mosaic_very_complex(close_figures): + # make a scattermatrix of mosaic plots to show the correlations between + # each pair of variable in a dataset. Could be easily converted into a + # new function that does this automatically based on the type of data + key_name = ['gender', 'age', 'health', 'work'] + key_base = (['male', 'female'], ['old', 'young'], + ['healty', 'ill'], ['work', 'unemployed']) + keys = list(product(*key_base)) + data = OrderedDict(zip(keys, range(1, 1 + len(keys)))) + props = {} + props[('male', 'old')] = {'color': 'r'} + props[('female',)] = {'color': 'pink'} + L = len(key_base) + _, axes = plt.subplots(L, L) + for i in range(L): + for j in range(L): + m = set(range(L)).difference(set((i, j))) + if i == j: + axes[i, i].text(0.5, 0.5, key_name[i], + ha='center', va='center') + axes[i, i].set_xticks([]) + axes[i, i].set_xticklabels([]) + axes[i, i].set_yticks([]) + axes[i, i].set_yticklabels([]) + else: + ji = max(i, j) + ij = min(i, j) + temp_data = OrderedDict([((k[ij], k[ji]) + tuple(k[r] for r in m), v) + for k, v in iteritems(data)]) + + keys = list(iterkeys(temp_data)) + for k in keys: + value = _reduce_dict(temp_data, k[:2]) + temp_data[k[:2]] = value + del temp_data[k] + mosaic(temp_data, ax=axes[i, j], axes_label=False, + properties=props, gap=0.05, horizontal=i > j) + plt.suptitle('old males should look bright red, (plot 4 of 4)') + + +@pytest.mark.matplotlib +def test_axes_labeling(close_figures): + from numpy.random import rand + key_set = (['male', 'female'], ['old', 'adult', 'young'], + ['worker', 'unemployed'], ['yes', 'no']) + # the cartesian product of all the categories is + # the complete set of categories + keys = list(product(*key_set)) + data = OrderedDict(zip(keys, rand(len(keys)))) + lab = lambda k: ''.join(s[0] for s in k) + fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(16, 8)) + mosaic(data, ax=ax1, labelizer=lab, horizontal=True, label_rotation=45) + mosaic(data, ax=ax2, labelizer=lab, horizontal=False, + label_rotation=[0, 45, 90, 0]) + #fig.tight_layout() + fig.suptitle("correct alignment of the axes labels") + + +@pytest.mark.smoke +@pytest.mark.matplotlib +def test_mosaic_empty_cells(close_figures): + # GH#2286 + import pandas as pd + mydata = pd.DataFrame({'id2': {64: 'Angelica', + 65: 'DXW_UID', 66: 'casuid01', + 67: 'casuid01', 68: 'EC93_uid', + 69: 'EC93_uid', 70: 'EC93_uid', + 60: 'DXW_UID', 61: 'AtmosFox', + 62: 'DXW_UID', 63: 'DXW_UID'}, + 'id1': {64: 'TGP', + 65: 'Retention01', 66: 'default', + 67: 'default', 68: 'Musa_EC_9_3', + 69: 'Musa_EC_9_3', 70: 'Musa_EC_9_3', + 60: 'default', 61: 'default', + 62: 'default', 63: 'default'}}) + + ct = pd.crosstab(mydata.id1, mydata.id2) + _, vals = mosaic(ct.T.unstack()) + _, vals = mosaic(mydata, ['id1','id2']) + + +eq = lambda x, y: assert_(np.allclose(x, y)) + + +def test_recursive_split(): + keys = list(product('mf')) + data = OrderedDict(zip(keys, [1] * len(keys))) + res = _hierarchical_split(data, gap=0) + assert_(list(iterkeys(res)) == keys) + res[('m',)] = (0.0, 0.0, 0.5, 1.0) + res[('f',)] = (0.5, 0.0, 0.5, 1.0) + keys = list(product('mf', 'yao')) + data = OrderedDict(zip(keys, [1] * len(keys))) + res = _hierarchical_split(data, gap=0) + assert_(list(iterkeys(res)) == keys) + res[('m', 'y')] = (0.0, 0.0, 0.5, 1 / 3) + res[('m', 'a')] = (0.0, 1 / 3, 0.5, 1 / 3) + res[('m', 'o')] = (0.0, 2 / 3, 0.5, 1 / 3) + res[('f', 'y')] = (0.5, 0.0, 0.5, 1 / 3) + res[('f', 'a')] = (0.5, 1 / 3, 0.5, 1 / 3) + res[('f', 'o')] = (0.5, 2 / 3, 0.5, 1 / 3) + + +def test__reduce_dict(): + data = OrderedDict(zip(list(product('mf', 'oy', 'wn')), [1] * 8)) + eq(_reduce_dict(data, ('m',)), 4) + eq(_reduce_dict(data, ('m', 'o')), 2) + eq(_reduce_dict(data, ('m', 'o', 'w')), 1) + data = OrderedDict(zip(list(product('mf', 'oy', 'wn')), lrange(8))) + eq(_reduce_dict(data, ('m',)), 6) + eq(_reduce_dict(data, ('m', 'o')), 1) + eq(_reduce_dict(data, ('m', 'o', 'w')), 0) + + +def test__key_splitting(): + # subdivide starting with an empty tuple + base_rect = {tuple(): (0, 0, 1, 1)} + res = _key_splitting(base_rect, ['a', 'b'], [1, 1], tuple(), True, 0) + assert_(list(iterkeys(res)) == [('a',), ('b',)]) + eq(res[('a',)], (0, 0, 0.5, 1)) + eq(res[('b',)], (0.5, 0, 0.5, 1)) + # subdivide a in two sublevel + res_bis = _key_splitting(res, ['c', 'd'], [1, 1], ('a',), False, 0) + assert_(list(iterkeys(res_bis)) == [('a', 'c'), ('a', 'd'), ('b',)]) + eq(res_bis[('a', 'c')], (0.0, 0.0, 0.5, 0.5)) + eq(res_bis[('a', 'd')], (0.0, 0.5, 0.5, 0.5)) + eq(res_bis[('b',)], (0.5, 0, 0.5, 1)) + # starting with a non empty tuple and uneven distribution + base_rect = {('total',): (0, 0, 1, 1)} + res = _key_splitting(base_rect, ['a', 'b'], [1, 2], ('total',), True, 0) + assert_(list(iterkeys(res)) == [('total',) + (e,) for e in ['a', 'b']]) + eq(res[('total', 'a')], (0, 0, 1 / 3, 1)) + eq(res[('total', 'b')], (1 / 3, 0, 2 / 3, 1)) + + +def test_proportion_normalization(): + # extremes should give the whole set, as well + # as if 0 is inserted + eq(_normalize_split(0.), [0.0, 0.0, 1.0]) + eq(_normalize_split(1.), [0.0, 1.0, 1.0]) + eq(_normalize_split(2.), [0.0, 1.0, 1.0]) + # negative values should raise ValueError + assert_raises(ValueError, _normalize_split, -1) + assert_raises(ValueError, _normalize_split, [1., -1]) + assert_raises(ValueError, _normalize_split, [1., -1, 0.]) + # if everything is zero it will complain + assert_raises(ValueError, _normalize_split, [0.]) + assert_raises(ValueError, _normalize_split, [0., 0.]) + # one-element array should return the whole interval + eq(_normalize_split([0.5]), [0.0, 1.0]) + eq(_normalize_split([1.]), [0.0, 1.0]) + eq(_normalize_split([2.]), [0.0, 1.0]) + # simple division should give two pieces + for x in [0.3, 0.5, 0.9]: + eq(_normalize_split(x), [0., x, 1.0]) + # multiple division should split as the sum of the components + for x, y in [(0.25, 0.5), (0.1, 0.8), (10., 30.)]: + eq(_normalize_split([x, y]), [0., x / (x + y), 1.0]) + for x, y, z in [(1., 1., 1.), (0.1, 0.5, 0.7), (10., 30., 40)]: + eq(_normalize_split( + [x, y, z]), [0., x / (x + y + z), (x + y) / (x + y + z), 1.0]) + + +def test_false_split(): + # if you ask it to be divided in only one piece, just return the original + # one + pure_square = [0., 0., 1., 1.] + conf_h = dict(proportion=[1], gap=0.0, horizontal=True) + conf_v = dict(proportion=[1], gap=0.0, horizontal=False) + eq(_split_rect(*pure_square, **conf_h), pure_square) + eq(_split_rect(*pure_square, **conf_v), pure_square) + conf_h = dict(proportion=[1], gap=0.5, horizontal=True) + conf_v = dict(proportion=[1], gap=0.5, horizontal=False) + eq(_split_rect(*pure_square, **conf_h), pure_square) + eq(_split_rect(*pure_square, **conf_v), pure_square) + + # identity on a void rectangle should not give anything strange + null_square = [0., 0., 0., 0.] + conf = dict(proportion=[1], gap=0.0, horizontal=True) + eq(_split_rect(*null_square, **conf), null_square) + conf = dict(proportion=[1], gap=1.0, horizontal=True) + eq(_split_rect(*null_square, **conf), null_square) + + # splitting a negative rectangle should raise error + neg_square = [0., 0., -1., 0.] + conf = dict(proportion=[1], gap=0.0, horizontal=True) + assert_raises(ValueError, _split_rect, *neg_square, **conf) + conf = dict(proportion=[1, 1], gap=0.0, horizontal=True) + assert_raises(ValueError, _split_rect, *neg_square, **conf) + conf = dict(proportion=[1], gap=0.5, horizontal=True) + assert_raises(ValueError, _split_rect, *neg_square, **conf) + conf = dict(proportion=[1, 1], gap=0.5, horizontal=True) + assert_raises(ValueError, _split_rect, *neg_square, **conf) + + +def test_rect_pure_split(): + pure_square = [0., 0., 1., 1.] + # division in two equal pieces from the perfect square + h_2split = [(0.0, 0.0, 0.5, 1.0), (0.5, 0.0, 0.5, 1.0)] + conf_h = dict(proportion=[1, 1], gap=0.0, horizontal=True) + eq(_split_rect(*pure_square, **conf_h), h_2split) + + v_2split = [(0.0, 0.0, 1.0, 0.5), (0.0, 0.5, 1.0, 0.5)] + conf_v = dict(proportion=[1, 1], gap=0.0, horizontal=False) + eq(_split_rect(*pure_square, **conf_v), v_2split) + + # division in two non-equal pieces from the perfect square + h_2split = [(0.0, 0.0, 1 / 3, 1.0), (1 / 3, 0.0, 2 / 3, 1.0)] + conf_h = dict(proportion=[1, 2], gap=0.0, horizontal=True) + eq(_split_rect(*pure_square, **conf_h), h_2split) + + v_2split = [(0.0, 0.0, 1.0, 1 / 3), (0.0, 1 / 3, 1.0, 2 / 3)] + conf_v = dict(proportion=[1, 2], gap=0.0, horizontal=False) + eq(_split_rect(*pure_square, **conf_v), v_2split) + + # division in three equal pieces from the perfect square + h_2split = [(0.0, 0.0, 1 / 3, 1.0), (1 / 3, 0.0, 1 / 3, 1.0), (2 / 3, 0.0, + 1 / 3, 1.0)] + conf_h = dict(proportion=[1, 1, 1], gap=0.0, horizontal=True) + eq(_split_rect(*pure_square, **conf_h), h_2split) + + v_2split = [(0.0, 0.0, 1.0, 1 / 3), (0.0, 1 / 3, 1.0, 1 / 3), (0.0, 2 / 3, + 1.0, 1 / 3)] + conf_v = dict(proportion=[1, 1, 1], gap=0.0, horizontal=False) + eq(_split_rect(*pure_square, **conf_v), v_2split) + + # division in three non-equal pieces from the perfect square + h_2split = [(0.0, 0.0, 1 / 4, 1.0), (1 / 4, 0.0, 1 / 2, 1.0), (3 / 4, 0.0, + 1 / 4, 1.0)] + conf_h = dict(proportion=[1, 2, 1], gap=0.0, horizontal=True) + eq(_split_rect(*pure_square, **conf_h), h_2split) + + v_2split = [(0.0, 0.0, 1.0, 1 / 4), (0.0, 1 / 4, 1.0, 1 / 2), (0.0, 3 / 4, + 1.0, 1 / 4)] + conf_v = dict(proportion=[1, 2, 1], gap=0.0, horizontal=False) + eq(_split_rect(*pure_square, **conf_v), v_2split) + + # splitting on a void rectangle should give multiple void + null_square = [0., 0., 0., 0.] + conf = dict(proportion=[1, 1], gap=0.0, horizontal=True) + eq(_split_rect(*null_square, **conf), [null_square, null_square]) + conf = dict(proportion=[1, 2], gap=1.0, horizontal=True) + eq(_split_rect(*null_square, **conf), [null_square, null_square]) + + +def test_rect_deformed_split(): + non_pure_square = [1., -1., 1., 0.5] + # division in two equal pieces from the perfect square + h_2split = [(1.0, -1.0, 0.5, 0.5), (1.5, -1.0, 0.5, 0.5)] + conf_h = dict(proportion=[1, 1], gap=0.0, horizontal=True) + eq(_split_rect(*non_pure_square, **conf_h), h_2split) + + v_2split = [(1.0, -1.0, 1.0, 0.25), (1.0, -0.75, 1.0, 0.25)] + conf_v = dict(proportion=[1, 1], gap=0.0, horizontal=False) + eq(_split_rect(*non_pure_square, **conf_v), v_2split) + + # division in two non-equal pieces from the perfect square + h_2split = [(1.0, -1.0, 1 / 3, 0.5), (1 + 1 / 3, -1.0, 2 / 3, 0.5)] + conf_h = dict(proportion=[1, 2], gap=0.0, horizontal=True) + eq(_split_rect(*non_pure_square, **conf_h), h_2split) + + v_2split = [(1.0, -1.0, 1.0, 1 / 6), (1.0, 1 / 6 - 1, 1.0, 2 / 6)] + conf_v = dict(proportion=[1, 2], gap=0.0, horizontal=False) + eq(_split_rect(*non_pure_square, **conf_v), v_2split) + + +def test_gap_split(): + pure_square = [0., 0., 1., 1.] + + # null split + conf_h = dict(proportion=[1], gap=1.0, horizontal=True) + eq(_split_rect(*pure_square, **conf_h), pure_square) + + # equal split + h_2split = [(0.0, 0.0, 0.25, 1.0), (0.75, 0.0, 0.25, 1.0)] + conf_h = dict(proportion=[1, 1], gap=1.0, horizontal=True) + eq(_split_rect(*pure_square, **conf_h), h_2split) + + # disequal split + h_2split = [(0.0, 0.0, 1 / 6, 1.0), (0.5 + 1 / 6, 0.0, 1 / 3, 1.0)] + conf_h = dict(proportion=[1, 2], gap=1.0, horizontal=True) + eq(_split_rect(*pure_square, **conf_h), h_2split) + + +@pytest.mark.matplotlib +def test_default_arg_index(close_figures): + # 2116 + df = pd.DataFrame({'size' : ['small', 'large', 'large', 'small', 'large', + 'small'], + 'length' : ['long', 'short', 'short', 'long', 'long', + 'short']}) + assert_raises(ValueError, mosaic, data=df, title='foobar') + + +@pytest.mark.matplotlib +def test_missing_category(close_figures): + # GH5639 + animal = ['dog', 'dog', 'dog', 'cat', 'dog', 'cat', 'cat', + 'dog', 'dog', 'cat'] + size = ['medium', 'large', 'medium', 'medium', 'medium', 'medium', + 'large', 'large', 'large', 'small'] + testdata = pd.DataFrame({'animal': animal, 'size': size}) + testdata['size'] = pd.Categorical(testdata['size'], + categories=['small', 'medium', 'large']) + testdata = testdata.sort_values('size') + fig, _ = mosaic(testdata, ['animal', 'size']) + bio = BytesIO() + fig.savefig(bio, format='png') diff --git a/statsmodels/graphics/tests/test_regressionplots.py b/statsmodels/graphics/tests/test_regressionplots.py new file mode 100644 index 0000000..fd27797 --- /dev/null +++ b/statsmodels/graphics/tests/test_regressionplots.py @@ -0,0 +1,341 @@ +import numpy as np +import pytest +import statsmodels.api as sm +from numpy.testing import assert_equal, assert_raises +from statsmodels.graphics.regressionplots import (plot_fit, plot_ccpr, + plot_regress_exog, abline_plot, + plot_partregress_grid, plot_ccpr_grid, add_lowess, + plot_added_variable, plot_partial_residuals, + plot_ceres_residuals, influence_plot, plot_leverage_resid2) +from pandas import Series, DataFrame +from numpy.testing.utils import assert_array_less + +try: + import matplotlib.pyplot as plt +except ImportError: + pass + +pdf_output = False + +if pdf_output: + from matplotlib.backends.backend_pdf import PdfPages + pdf = PdfPages("test_regressionplots.pdf") +else: + pdf = None + + +def close_or_save(pdf, fig): + if pdf_output: + pdf.savefig(fig) + + +class TestPlot(object): + + @classmethod + def setup_class(cls): + nsample = 100 + sig = 0.5 + x1 = np.linspace(0, 20, nsample) + x2 = 5 + 3 * np.random.randn(nsample) + x = np.c_[x1, x2, np.sin(0.5 * x1), (x2 - 5) ** 2, np.ones(nsample)] + beta = [0.5, 0.5, 1, -0.04, 5.] + y_true = np.dot(x, beta) + y = y_true + sig * np.random.normal(size=nsample) + exog0 = sm.add_constant(np.c_[x1, x2], prepend=False) + + cls.res = sm.OLS(y, exog0).fit() + cls.res_true = sm.OLS(y, x).fit() + + @pytest.mark.matplotlib + def test_plot_fit(self, close_figures): + res = self.res + + fig = plot_fit(res, 0, y_true=None) + + x0 = res.model.exog[:, 0] + yf = res.fittedvalues + y = res.model.endog + + px1, px2 = fig.axes[0].get_lines()[0].get_data() + np.testing.assert_equal(x0, px1) + np.testing.assert_equal(y, px2) + + px1, px2 = fig.axes[0].get_lines()[1].get_data() + np.testing.assert_equal(x0, px1) + np.testing.assert_equal(yf, px2) + + close_or_save(pdf, fig) + + @pytest.mark.matplotlib + def test_plot_oth(self, close_figures): + # just test that they run + res = self.res + plot_fit(res, 0, y_true=None) + plot_partregress_grid(res, exog_idx=[0, 1]) + # GH 5873 + plot_partregress_grid(self.res_true, grid=(2, 3)) + plot_regress_exog(res, exog_idx=0) + plot_ccpr(res, exog_idx=0) + plot_ccpr_grid(res, exog_idx=[0]) + fig = plot_ccpr_grid(res, exog_idx=[0,1]) + for ax in fig.axes: + add_lowess(ax) + + close_or_save(pdf, fig) + + @pytest.mark.matplotlib + def test_plot_influence(self, close_figures): + infl = self.res.get_influence() + fig = influence_plot(self.res) + assert_equal(isinstance(fig, plt.Figure), True) + # test that we have the correct criterion for sizes #3103 + try: + sizes = fig.axes[0].get_children()[0]._sizes + ex = sm.add_constant(infl.cooks_distance[0]) + ssr = sm.OLS(sizes, ex).fit().ssr + assert_array_less(ssr, 1e-12) + except AttributeError: + import warnings + warnings.warn('test not compatible with matplotlib version') + + fig = influence_plot(self.res, criterion='DFFITS') + assert_equal(isinstance(fig, plt.Figure), True) + try: + sizes = fig.axes[0].get_children()[0]._sizes + ex = sm.add_constant(np.abs(infl.dffits[0])) + ssr = sm.OLS(sizes, ex).fit().ssr + assert_array_less(ssr, 1e-12) + except AttributeError: + pass + + assert_raises(ValueError, influence_plot, self.res, criterion='unknown') + + @pytest.mark.matplotlib + def test_plot_leverage_resid2(self, close_figures): + fig = plot_leverage_resid2(self.res) + assert_equal(isinstance(fig, plt.Figure), True) + + +class TestPlotPandas(TestPlot): + def setup(self): + nsample = 100 + sig = 0.5 + x1 = np.linspace(0, 20, nsample) + x2 = 5 + 3* np.random.randn(nsample) + X = np.c_[x1, x2, np.sin(0.5*x1), (x2-5)**2, np.ones(nsample)] + beta = [0.5, 0.5, 1, -0.04, 5.] + y_true = np.dot(X, beta) + y = y_true + sig * np.random.normal(size=nsample) + exog0 = sm.add_constant(np.c_[x1, x2], prepend=False) + exog0 = DataFrame(exog0, columns=["const", "var1", "var2"]) + y = Series(y, name="outcome") + res = sm.OLS(y, exog0).fit() + self.res = res + data = DataFrame(exog0, columns=["const", "var1", "var2"]) + data['y'] = y + self.data = data + +class TestPlotFormula(TestPlotPandas): + + @pytest.mark.matplotlib + def test_one_column_exog(self, close_figures): + from statsmodels.formula.api import ols + res = ols("y~var1-1", data=self.data).fit() + fig = plot_regress_exog(res, "var1") + res = ols("y~var1", data=self.data).fit() + fig = plot_regress_exog(res, "var1") + + +class TestABLine(object): + + @classmethod + def setup_class(cls): + np.random.seed(12345) + X = sm.add_constant(np.random.normal(0, 20, size=30)) + y = np.dot(X, [25, 3.5]) + np.random.normal(0, 30, size=30) + mod = sm.OLS(y,X).fit() + cls.X = X + cls.y = y + cls.mod = mod + + @pytest.mark.matplotlib + def test_abline_model(self, close_figures): + fig = abline_plot(model_results=self.mod) + ax = fig.axes[0] + ax.scatter(self.X[:,1], self.y) + close_or_save(pdf, fig) + + @pytest.mark.matplotlib + def test_abline_model_ax(self, close_figures): + fig = plt.figure() + ax = fig.add_subplot(111) + ax.scatter(self.X[:,1], self.y) + fig = abline_plot(model_results=self.mod, ax=ax) + close_or_save(pdf, fig) + + @pytest.mark.matplotlib + def test_abline_ab(self, close_figures): + mod = self.mod + intercept, slope = mod.params + fig = abline_plot(intercept=intercept, slope=slope) + close_or_save(pdf, fig) + + @pytest.mark.matplotlib + def test_abline_ab_ax(self, close_figures): + mod = self.mod + intercept, slope = mod.params + fig = plt.figure() + ax = fig.add_subplot(111) + ax.scatter(self.X[:,1], self.y) + fig = abline_plot(intercept=intercept, slope=slope, ax=ax) + close_or_save(pdf, fig) + + @pytest.mark.matplotlib + def test_abline_remove(self, close_figures): + mod = self.mod + intercept, slope = mod.params + fig = plt.figure() + ax = fig.add_subplot(111) + ax.scatter(self.X[:,1], self.y) + abline_plot(intercept=intercept, slope=slope, ax=ax) + abline_plot(intercept=intercept, slope=2*slope, ax=ax) + lines = ax.get_lines() + lines.pop(0).remove() + close_or_save(pdf, fig) + + +class TestABLinePandas(TestABLine): + @classmethod + def setup_class(cls): + np.random.seed(12345) + X = sm.add_constant(np.random.normal(0, 20, size=30)) + y = np.dot(X, [25, 3.5]) + np.random.normal(0, 30, size=30) + cls.X = X + cls.y = y + X = DataFrame(X, columns=["const", "someX"]) + y = Series(y, name="outcome") + mod = sm.OLS(y,X).fit() + cls.mod = mod + + +class TestAddedVariablePlot(object): + + @pytest.mark.matplotlib + def test_added_variable_poisson(self, close_figures): + + np.random.seed(3446) + + n = 100 + p = 3 + exog = np.random.normal(size=(n, p)) + lin_pred = 4 + exog[:, 0] + 0.2 * exog[:, 1]**2 + expval = np.exp(lin_pred) + endog = np.random.poisson(expval) + + model = sm.GLM(endog, exog, family=sm.families.Poisson()) + results = model.fit() + + for focus_col in 0, 1, 2: + for use_glm_weights in False, True: + for resid_type in "resid_deviance", "resid_response": + weight_str = ["Unweighted", "Weighted"][use_glm_weights] + + # Run directly and called as a results method. + for j in 0, 1: + + if j == 0: + fig = plot_added_variable(results, focus_col, + use_glm_weights=use_glm_weights, + resid_type=resid_type) + ti = "Added variable plot" + else: + fig = results.plot_added_variable(focus_col, + use_glm_weights=use_glm_weights, + resid_type=resid_type) + ti = "Added variable plot (called as method)" + ax = fig.get_axes()[0] + + add_lowess(ax) + ax.set_position([0.1, 0.1, 0.8, 0.7]) + effect_str = ["Linear effect, slope=1", + "Quadratic effect", "No effect"][focus_col] + ti += "\nPoisson regression\n" + ti += effect_str + "\n" + ti += weight_str + "\n" + ti += "Using '%s' residuals" % resid_type + ax.set_title(ti) + close_or_save(pdf, fig) + close_figures() + + +class TestPartialResidualPlot(object): + + @pytest.mark.matplotlib + def test_partial_residual_poisson(self, close_figures): + + np.random.seed(3446) + + n = 100 + p = 3 + exog = np.random.normal(size=(n, p)) + exog[:, 0] = 1 + lin_pred = 4 + exog[:, 1] + 0.2*exog[:, 2]**2 + expval = np.exp(lin_pred) + endog = np.random.poisson(expval) + + model = sm.GLM(endog, exog, family=sm.families.Poisson()) + results = model.fit() + + for focus_col in 1, 2: + for j in 0,1: + if j == 0: + fig = plot_partial_residuals(results, focus_col) + else: + fig = results.plot_partial_residuals(focus_col) + ax = fig.get_axes()[0] + add_lowess(ax) + ax.set_position([0.1, 0.1, 0.8, 0.77]) + effect_str = ["Intercept", "Linear effect, slope=1", + "Quadratic effect"][focus_col] + ti = "Partial residual plot" + if j == 1: + ti += " (called as method)" + ax.set_title(ti + "\nPoisson regression\n" + + effect_str) + close_or_save(pdf, fig) + +class TestCERESPlot(object): + + @pytest.mark.matplotlib + def test_ceres_poisson(self, close_figures): + + np.random.seed(3446) + + n = 100 + p = 3 + exog = np.random.normal(size=(n, p)) + exog[:, 0] = 1 + lin_pred = 4 + exog[:, 1] + 0.2*exog[:, 2]**2 + expval = np.exp(lin_pred) + endog = np.random.poisson(expval) + + model = sm.GLM(endog, exog, family=sm.families.Poisson()) + results = model.fit() + + for focus_col in 1, 2: + for j in 0, 1: + if j == 0: + fig = plot_ceres_residuals(results, focus_col) + else: + fig = results.plot_ceres_residuals(focus_col) + ax = fig.get_axes()[0] + add_lowess(ax) + ax.set_position([0.1, 0.1, 0.8, 0.77]) + effect_str = ["Intercept", "Linear effect, slope=1", + "Quadratic effect"][focus_col] + ti = "CERES plot" + if j == 1: + ti += " (called as method)" + ax.set_title(ti + "\nPoisson regression\n" + + effect_str) + close_or_save(pdf, fig) diff --git a/statsmodels/graphics/tests/test_tsaplots.py b/statsmodels/graphics/tests/test_tsaplots.py new file mode 100644 index 0000000..13e4266 --- /dev/null +++ b/statsmodels/graphics/tests/test_tsaplots.py @@ -0,0 +1,217 @@ +from statsmodels.compat.python import lmap, BytesIO + +import numpy as np +import pandas as pd +from numpy.testing import assert_equal, assert_ +import pytest + +import statsmodels.api as sm +from statsmodels.compat.pandas import pandas_lte_0_19_2 +from statsmodels.graphics.tsaplots import (plot_acf, plot_pacf, month_plot, + quarter_plot, seasonal_plot) +import statsmodels.tsa.arima_process as tsp + + +try: + import matplotlib.pyplot as plt +except ImportError: + pass + + +@pytest.mark.matplotlib +def test_plot_acf(close_figures): + # Just test that it runs. + fig = plt.figure() + ax = fig.add_subplot(111) + + ar = np.r_[1., -0.9] + ma = np.r_[1., 0.9] + armaprocess = tsp.ArmaProcess(ar, ma) + rs = np.random.RandomState(1234) + acf = armaprocess.generate_sample(100, distrvs=rs.standard_normal) + plot_acf(acf, ax=ax, lags=10) + plot_acf(acf, ax=ax) + plot_acf(acf, ax=ax, alpha=None) + + +@pytest.mark.matplotlib +def test_plot_acf_irregular(close_figures): + # Just test that it runs. + fig = plt.figure() + ax = fig.add_subplot(111) + + ar = np.r_[1., -0.9] + ma = np.r_[1., 0.9] + armaprocess = tsp.ArmaProcess(ar, ma) + rs = np.random.RandomState(1234) + acf = armaprocess.generate_sample(100, distrvs=rs.standard_normal) + plot_acf(acf, ax=ax, lags=np.arange(1, 11)) + plot_acf(acf, ax=ax, lags=10, zero=False) + plot_acf(acf, ax=ax, alpha=None, zero=False) + + +@pytest.mark.matplotlib +def test_plot_pacf(close_figures): + # Just test that it runs. + fig = plt.figure() + ax = fig.add_subplot(111) + + ar = np.r_[1., -0.9] + ma = np.r_[1., 0.9] + armaprocess = tsp.ArmaProcess(ar, ma) + rs = np.random.RandomState(1234) + pacf = armaprocess.generate_sample(100, distrvs=rs.standard_normal) + plot_pacf(pacf, ax=ax) + plot_pacf(pacf, ax=ax, alpha=None) + + +@pytest.mark.matplotlib +def test_plot_pacf_kwargs(close_figures): + # Just test that it runs. + fig = plt.figure() + ax = fig.add_subplot(111) + + ar = np.r_[1., -0.9] + ma = np.r_[1., 0.9] + armaprocess = tsp.ArmaProcess(ar, ma) + rs = np.random.RandomState(1234) + pacf = armaprocess.generate_sample(100, distrvs=rs.standard_normal) + + buff = BytesIO() + plot_pacf(pacf, ax=ax) + fig.savefig(buff, format='rgba') + + buff_linestyle = BytesIO() + fig_linestyle = plt.figure() + ax = fig_linestyle.add_subplot(111) + plot_pacf(pacf, ax=ax, ls='-') + fig_linestyle.savefig(buff_linestyle, format='rgba') + + buff_with_vlines = BytesIO() + fig_with_vlines = plt.figure() + ax = fig_with_vlines.add_subplot(111) + vlines_kwargs = {'linestyles': 'dashdot'} + plot_pacf(pacf, ax=ax, vlines_kwargs=vlines_kwargs) + fig_with_vlines.savefig(buff_with_vlines, format='rgba') + + buff.seek(0) + buff_linestyle.seek(0) + buff_with_vlines.seek(0) + plain = buff.read() + linestyle = buff_linestyle.read() + with_vlines = buff_with_vlines.read() + + assert_(plain != linestyle) + assert_(with_vlines != plain) + assert_(linestyle != with_vlines) + + +@pytest.mark.matplotlib +def test_plot_acf_kwargs(close_figures): + # Just test that it runs. + fig = plt.figure() + ax = fig.add_subplot(111) + + ar = np.r_[1., -0.9] + ma = np.r_[1., 0.9] + armaprocess = tsp.ArmaProcess(ar, ma) + rs = np.random.RandomState(1234) + acf = armaprocess.generate_sample(100, distrvs=rs.standard_normal) + + buff = BytesIO() + plot_acf(acf, ax=ax) + fig.savefig(buff, format='rgba') + + buff_with_vlines = BytesIO() + fig_with_vlines = plt.figure() + ax = fig_with_vlines.add_subplot(111) + vlines_kwargs = {'linestyles': 'dashdot'} + plot_acf(acf, ax=ax, vlines_kwargs=vlines_kwargs) + fig_with_vlines.savefig(buff_with_vlines, format='rgba') + + buff.seek(0) + buff_with_vlines.seek(0) + plain = buff.read() + with_vlines = buff_with_vlines.read() + + assert_(with_vlines != plain) + + +@pytest.mark.matplotlib +def test_plot_pacf_irregular(close_figures): + # Just test that it runs. + fig = plt.figure() + ax = fig.add_subplot(111) + + ar = np.r_[1., -0.9] + ma = np.r_[1., 0.9] + armaprocess = tsp.ArmaProcess(ar, ma) + rs = np.random.RandomState(1234) + pacf = armaprocess.generate_sample(100, distrvs=rs.standard_normal) + plot_pacf(pacf, ax=ax, lags=np.arange(1, 11)) + plot_pacf(pacf, ax=ax, lags=10, zero=False) + plot_pacf(pacf, ax=ax, alpha=None, zero=False) + + +@pytest.mark.skipif(pandas_lte_0_19_2, reason='pandas too old') +@pytest.mark.matplotlib +def test_plot_month(close_figures): + dta = sm.datasets.elnino.load_pandas().data + dta['YEAR'] = dta.YEAR.astype(int).apply(str) + dta = dta.set_index('YEAR').T.unstack() + dates = pd.to_datetime(['-'.join([x[1], x[0]]) for x in dta.index.values]) + + # test dates argument + fig = month_plot(dta.values, dates=dates, ylabel='el nino') + + # test with a TimeSeries DatetimeIndex with no freq + dta.index = pd.DatetimeIndex(dates) + fig = month_plot(dta) + + # w freq + dta.index = pd.DatetimeIndex(dates, freq='MS') + fig = month_plot(dta) + + # test with a TimeSeries PeriodIndex + dta.index = pd.PeriodIndex(dates, freq='M') + fig = month_plot(dta) + + +@pytest.mark.skipif(pandas_lte_0_19_2, reason='pandas too old') +@pytest.mark.matplotlib +def test_plot_quarter(close_figures): + dta = sm.datasets.macrodata.load_pandas().data + dates = lmap('Q'.join, zip(dta.year.astype(int).apply(str), + dta.quarter.astype(int).apply(str))) + # test dates argument + quarter_plot(dta.unemp.values, dates) + + # test with a DatetimeIndex with no freq + dta.set_index(pd.to_datetime(dates), inplace=True) + quarter_plot(dta.unemp) + + # w freq + # see pandas #6631 + dta.index = pd.DatetimeIndex(pd.to_datetime(dates), freq='QS-Oct') + quarter_plot(dta.unemp) + + # w PeriodIndex + dta.index = pd.PeriodIndex(pd.to_datetime(dates), freq='Q') + quarter_plot(dta.unemp) + + +@pytest.mark.matplotlib +def test_seasonal_plot(close_figures): + rs = np.random.RandomState(1234) + data = rs.randn(20,12) + data += 6*np.sin(np.arange(12.0)/11*np.pi)[None,:] + data = data.ravel() + months = np.tile(np.arange(1,13),(20,1)) + months = months.ravel() + df = pd.DataFrame([data,months],index=['data','months']).T + grouped = df.groupby('months')['data'] + labels = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'] + fig = seasonal_plot(grouped, labels) + ax = fig.get_axes()[0] + output = [tl.get_text() for tl in ax.get_xticklabels()] + assert_equal(labels, output) diff --git a/statsmodels/graphics/tsaplots.py b/statsmodels/graphics/tsaplots.py new file mode 100644 index 0000000..e2c858c --- /dev/null +++ b/statsmodels/graphics/tsaplots.py @@ -0,0 +1,398 @@ +"""Correlation plot functions.""" + + +import numpy as np + +from statsmodels.graphics import utils +from statsmodels.tsa.stattools import acf, pacf + + +def _prepare_data_corr_plot(x, lags, zero): + zero = bool(zero) + irregular = False if zero else True + if lags is None: + # GH 4663 - use a sensible default value + nobs = x.shape[0] + lim = min(int(np.ceil(10 * np.log10(nobs))), nobs - 1) + lags = np.arange(not zero, lim + 1) + elif np.isscalar(lags): + lags = np.arange(not zero, int(lags) + 1) # +1 for zero lag + else: + irregular = True + lags = np.asanyarray(lags).astype(np.int) + nlags = lags.max(0) + + return lags, nlags, irregular + + +def _plot_corr(ax, title, acf_x, confint, lags, irregular, use_vlines, + vlines_kwargs, **kwargs): + if irregular: + acf_x = acf_x[lags] + if confint is not None: + confint = confint[lags] + + if use_vlines: + ax.vlines(lags, [0], acf_x, **vlines_kwargs) + ax.axhline(**kwargs) + + kwargs.setdefault('marker', 'o') + kwargs.setdefault('markersize', 5) + if 'ls' not in kwargs: + # gh-2369 + kwargs.setdefault('linestyle', 'None') + ax.margins(.05) + ax.plot(lags, acf_x, **kwargs) + ax.set_title(title) + + if confint is not None: + if lags[0] == 0: + lags = lags[1:] + confint = confint[1:] + acf_x = acf_x[1:] + lags = lags.astype(np.float) + lags[0] -= 0.5 + lags[-1] += 0.5 + ax.fill_between(lags, confint[:, 0] - acf_x, + confint[:, 1] - acf_x, alpha=.25) + + +def plot_acf(x, ax=None, lags=None, alpha=.05, use_vlines=True, unbiased=False, + fft=False, title='Autocorrelation', zero=True, + vlines_kwargs=None, **kwargs): + """Plot the autocorrelation function + + Plots lags on the horizontal and the correlations on vertical axis. + + Parameters + ---------- + x : array_like + Array of time-series values + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure being + created. + lags : int or array_like, optional + int or Array of lag values, used on horizontal axis. Uses + np.arange(lags) when lags is an int. If not provided, + ``lags=np.arange(len(corr))`` is used. + alpha : scalar, optional + If a number is given, the confidence intervals for the given level are + returned. For instance if alpha=.05, 95 % confidence intervals are + returned where the standard deviation is computed according to + Bartlett's formula. If None, no confidence intervals are plotted. + use_vlines : bool, optional + If True, vertical lines and markers are plotted. + If False, only markers are plotted. The default marker is 'o'; it can + be overridden with a ``marker`` kwarg. + unbiased : bool + If True, then denominators for autocovariance are n-k, otherwise n + fft : bool, optional + If True, computes the ACF via FFT. + title : str, optional + Title to place on plot. Default is 'Autocorrelation' + zero : bool, optional + Flag indicating whether to include the 0-lag autocorrelation. + Default is True. + vlines_kwargs : dict, optional + Optional dictionary of keyword arguments that are passed to vlines. + **kwargs : kwargs, optional + Optional keyword arguments that are directly passed on to the + Matplotlib ``plot`` and ``axhline`` functions. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + + See Also + -------- + matplotlib.pyplot.xcorr + matplotlib.pyplot.acorr + + Notes + ----- + Adapted from matplotlib's `xcorr`. + + Data are plotted as ``plot(lags, corr, **kwargs)`` + + kwargs is used to pass matplotlib optional arguments to both the line + tracing the autocorrelations and for the horizontal line at 0. These + options must be valid for a Line2D object. + + vlines_kwargs is used to pass additional optional arguments to the + vertical lines connecting each autocorrelation to the axis. These options + must be valid for a LineCollection object. + + Examples + -------- + >>> import pandas as pd + >>> import matplotlib.pyplot as plt + >>> import statsmodels.api as sm + + >>> dta = sm.datasets.sunspots.load_pandas().data + >>> dta.index = pd.Index(sm.tsa.datetools.dates_from_range('1700', '2008')) + >>> del dta["YEAR"] + >>> sm.graphics.tsa.plot_acf(dta.values.squeeze(), lags=40) + >>> plt.show() + + .. plot:: plots/graphics_tsa_plot_acf.py + """ + fig, ax = utils.create_mpl_ax(ax) + + lags, nlags, irregular = _prepare_data_corr_plot(x, lags, zero) + vlines_kwargs = {} if vlines_kwargs is None else vlines_kwargs + + confint = None + # acf has different return type based on alpha + if alpha is None: + acf_x = acf(x, nlags=nlags, alpha=alpha, fft=fft, + unbiased=unbiased) + else: + acf_x, confint = acf(x, nlags=nlags, alpha=alpha, fft=fft, + unbiased=unbiased) + + _plot_corr(ax, title, acf_x, confint, lags, irregular, use_vlines, + vlines_kwargs, **kwargs) + + return fig + + +def plot_pacf(x, ax=None, lags=None, alpha=.05, method='ywunbiased', + use_vlines=True, title='Partial Autocorrelation', zero=True, + vlines_kwargs=None, **kwargs): + """ + Plot the partial autocorrelation function + + Parameters + ---------- + x : array_like + Array of time-series values + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure being + created. + lags : int or array_like, optional + int or Array of lag values, used on horizontal axis. Uses + np.arange(lags) when lags is an int. If not provided, + ``lags=np.arange(len(corr))`` is used. + alpha : float, optional + If a number is given, the confidence intervals for the given level are + returned. For instance if alpha=.05, 95 % confidence intervals are + returned where the standard deviation is computed according to + 1/sqrt(len(x)) + method : {'ywunbiased', 'ywmle', 'ols'} + Specifies which method for the calculations to use: + + - yw or ywunbiased : yule walker with bias correction in denominator + for acovf. Default. + - ywm or ywmle : yule walker without bias correction + - ols - regression of time series on lags of it and on constant + - ld or ldunbiased : Levinson-Durbin recursion with bias correction + - ldb or ldbiased : Levinson-Durbin recursion without bias correction + + use_vlines : bool, optional + If True, vertical lines and markers are plotted. + If False, only markers are plotted. The default marker is 'o'; it can + be overridden with a ``marker`` kwarg. + title : str, optional + Title to place on plot. Default is 'Partial Autocorrelation' + zero : bool, optional + Flag indicating whether to include the 0-lag autocorrelation. + Default is True. + vlines_kwargs : dict, optional + Optional dictionary of keyword arguments that are passed to vlines. + **kwargs : kwargs, optional + Optional keyword arguments that are directly passed on to the + Matplotlib ``plot`` and ``axhline`` functions. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + + See Also + -------- + matplotlib.pyplot.xcorr + matplotlib.pyplot.acorr + + Notes + ----- + Plots lags on the horizontal and the correlations on vertical axis. + Adapted from matplotlib's `xcorr`. + + Data are plotted as ``plot(lags, corr, **kwargs)`` + + kwargs is used to pass matplotlib optional arguments to both the line + tracing the autocorrelations and for the horizontal line at 0. These + options must be valid for a Line2D object. + + vlines_kwargs is used to pass additional optional arguments to the + vertical lines connecting each autocorrelation to the axis. These options + must be valid for a LineCollection object. + + Examples + -------- + >>> import pandas as pd + >>> import matplotlib.pyplot as plt + >>> import statsmodels.api as sm + + >>> dta = sm.datasets.sunspots.load_pandas().data + >>> dta.index = pd.Index(sm.tsa.datetools.dates_from_range('1700', '2008')) + >>> del dta["YEAR"] + >>> sm.graphics.tsa.plot_acf(dta.values.squeeze(), lags=40) + >>> plt.show() + + .. plot:: plots/graphics_tsa_plot_pacf.py + """ + fig, ax = utils.create_mpl_ax(ax) + vlines_kwargs = {} if vlines_kwargs is None else vlines_kwargs + lags, nlags, irregular = _prepare_data_corr_plot(x, lags, zero) + + confint = None + if alpha is None: + acf_x = pacf(x, nlags=nlags, alpha=alpha, method=method) + else: + acf_x, confint = pacf(x, nlags=nlags, alpha=alpha, method=method) + + _plot_corr(ax, title, acf_x, confint, lags, irregular, use_vlines, + vlines_kwargs, **kwargs) + + return fig + + +def seasonal_plot(grouped_x, xticklabels, ylabel=None, ax=None): + """ + Consider using one of month_plot or quarter_plot unless you need + irregular plotting. + + Parameters + ---------- + grouped_x : iterable of DataFrames + Should be a GroupBy object (or similar pair of group_names and groups + as DataFrames) with a DatetimeIndex or PeriodIndex + xticklabels : list of str + List of season labels, one for each group. + ylabel : str + Lable for y axis + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure being + created. + """ + fig, ax = utils.create_mpl_ax(ax) + start = 0 + ticks = [] + for season, df in grouped_x: + df = df.copy() # or sort balks for series. may be better way + df.sort_index() + nobs = len(df) + x_plot = np.arange(start, start + nobs) + ticks.append(x_plot.mean()) + ax.plot(x_plot, df.values, 'k') + ax.hlines(df.values.mean(), x_plot[0], x_plot[-1], colors='r', + linewidth=3) + start += nobs + + ax.set_xticks(ticks) + ax.set_xticklabels(xticklabels) + ax.set_ylabel(ylabel) + ax.margins(.1, .05) + return fig + + +def month_plot(x, dates=None, ylabel=None, ax=None): + """ + Seasonal plot of monthly data + + Parameters + ---------- + x : array-like + Seasonal data to plot. If dates is None, x must be a pandas object + with a PeriodIndex or DatetimeIndex with a monthly frequency. + dates : array-like, optional + If `x` is not a pandas object, then dates must be supplied. + ylabel : str, optional + The label for the y-axis. Will attempt to use the `name` attribute + of the Series. + ax : matplotlib.axes, optional + Existing axes instance. + + Returns + ------- + matplotlib.Figure + + Examples + -------- + >>> import statsmodels.api as sm + >>> import pandas as pd + + >>> dta = sm.datasets.elnino.load_pandas().data + >>> dta['YEAR'] = dta.YEAR.astype(int).astype(str) + >>> dta = dta.set_index('YEAR').T.unstack() + >>> dates = pd.to_datetime(list(map(lambda x: '-'.join(x) + '-1', + ... dta.index.values))) + >>> dta.index = pd.DatetimeIndex(dates, freq='MS') + >>> fig = sm.graphics.tsa.month_plot(dta) + + .. plot:: plots/graphics_tsa_month_plot.py + """ + + if dates is None: + from statsmodels.tools.data import _check_period_index + _check_period_index(x, freq="M") + else: + from pandas import Series, PeriodIndex + x = Series(x, index=PeriodIndex(dates, freq="M")) + + xticklabels = ['j', 'f', 'm', 'a', 'm', 'j', 'j', 'a', 's', 'o', 'n', 'd'] + return seasonal_plot(x.groupby(lambda y: y.month), xticklabels, + ylabel=ylabel, ax=ax) + + +def quarter_plot(x, dates=None, ylabel=None, ax=None): + """ + Seasonal plot of quarterly data + + Parameters + ---------- + x : array-like + Seasonal data to plot. If dates is None, x must be a pandas object + with a PeriodIndex or DatetimeIndex with a monthly frequency. + dates : array-like, optional + If `x` is not a pandas object, then dates must be supplied. + ylabel : str, optional + The label for the y-axis. Will attempt to use the `name` attribute + of the Series. + ax : matplotlib.axes, optional + Existing axes instance. + + Returns + ------- + matplotlib.Figure + + Examples + -------- + >>> import statsmodels.api as sm + >>> import pandas as pd + + >>> dta = sm.datasets.elnino.load_pandas().data + >>> dta['YEAR'] = dta.YEAR.astype(int).astype(str) + >>> dta = dta.set_index('YEAR').T.unstack() + >>> dates = pd.to_datetime(list(map(lambda x: '-'.join(x) + '-1', + ... dta.index.values))) + >>> dta.index = dates.to_period('Q') + >>> fig = sm.graphics.tsa.quarter_plot(dta) + + .. plot:: plots/graphics_tsa_quarter_plot.py + """ + + if dates is None: + from statsmodels.tools.data import _check_period_index + _check_period_index(x, freq="Q") + else: + from pandas import Series, PeriodIndex + x = Series(x, index=PeriodIndex(dates, freq="Q")) + + xticklabels = ['q1', 'q2', 'q3', 'q4'] + return seasonal_plot(x.groupby(lambda y: y.quarter), xticklabels, + ylabel=ylabel, ax=ax) diff --git a/statsmodels/graphics/tukeyplot.py b/statsmodels/graphics/tukeyplot.py new file mode 100644 index 0000000..5805dcc --- /dev/null +++ b/statsmodels/graphics/tukeyplot.py @@ -0,0 +1,76 @@ +from statsmodels.compat.python import range +import numpy as np +import matplotlib.pyplot as plt +import matplotlib.lines as lines + + +def tukeyplot(results, dim=None, yticklabels=None): + npairs = len(results) + + fig = plt.figure() + fsp = fig.add_subplot(111) + fsp.axis([-50,50,0.5,10.5]) + fsp.set_title('95 % family-wise confidence level') + fsp.title.set_y(1.025) + fsp.set_yticks(np.arange(1,11)) + fsp.set_yticklabels(['V-T','V-S','T-S','V-P','T-P','S-P','V-M', + 'T-M','S-M','P-M']) + #fsp.yaxis.set_major_locator(mticker.MaxNLocator(npairs)) + fsp.yaxis.grid(True, linestyle='-', color='gray') + fsp.set_xlabel('Differences in mean levels of Var', labelpad=8) + fsp.xaxis.tick_bottom() + fsp.yaxis.tick_left() + + xticklines = fsp.get_xticklines() + for xtickline in xticklines: + xtickline.set_marker(lines.TICKDOWN) + xtickline.set_markersize(10) + + xlabels = fsp.get_xticklabels() + for xlabel in xlabels: + xlabel.set_y(-.04) + + yticklines = fsp.get_yticklines() + for ytickline in yticklines: + ytickline.set_marker(lines.TICKLEFT) + ytickline.set_markersize(10) + + ylabels = fsp.get_yticklabels() + for ylabel in ylabels: + ylabel.set_x(-.04) + + for pair in range(npairs): + data = .5+results[pair]/100. + #fsp.axhline(y=npairs-pair, xmin=data[0], xmax=data[1], linewidth=1.25, + fsp.axhline(y=npairs-pair, xmin=data.mean(), xmax=data[1], linewidth=1.25, + color='blue', marker="|", markevery=1) + + fsp.axhline(y=npairs-pair, xmin=data[0], xmax=data.mean(), linewidth=1.25, + color='blue', marker="|", markevery=1) + + #for pair in range(npairs): + # data = .5+results[pair]/100. + # data = results[pair] + # data = np.r_[data[0],data.mean(),data[1]] + # l = plt.plot(data, [npairs-pair]*len(data), color='black', + # linewidth=.5, marker="|", markevery=1) + + fsp.axvline(x=0, linestyle="--", color='black') + + fig.subplots_adjust(bottom=.125) + + + +results = np.array([[-10.04391794, 26.34391794], + [-21.45225794, 14.93557794], + [ 5.61441206, 42.00224794], + [-13.40225794, 22.98557794], + [-29.60225794, 6.78557794], + [ -2.53558794, 33.85224794], + [-21.55225794, 14.83557794], + [ 8.87275206, 45.26058794], + [-10.14391794, 26.24391794], + [-37.21058794, -0.82275206]]) + + +#plt.show() diff --git a/statsmodels/graphics/utils.py b/statsmodels/graphics/utils.py new file mode 100644 index 0000000..653a980 --- /dev/null +++ b/statsmodels/graphics/utils.py @@ -0,0 +1,149 @@ +"""Helper functions for graphics with Matplotlib.""" +from statsmodels.compat.python import lrange, range, long + +__all__ = ['create_mpl_ax', 'create_mpl_fig'] + + +def _import_mpl(): + """This function is not needed outside this utils module.""" + try: + import matplotlib.pyplot as plt + except: + raise ImportError("Matplotlib is not found.") + + return plt + + +def create_mpl_ax(ax=None): + """Helper function for when a single plot axis is needed. + + Parameters + ---------- + ax : Matplotlib AxesSubplot instance, optional + If given, this subplot is used to plot in instead of a new figure being + created. + + Returns + ------- + fig : Matplotlib figure instance + If `ax` is None, the created figure. Otherwise the figure to which + `ax` is connected. + ax : Matplotlib AxesSubplot instance + The created axis if `ax` is None, otherwise the axis that was passed + in. + + Notes + ----- + This function imports `matplotlib.pyplot`, which should only be done to + create (a) figure(s) with ``plt.figure``. All other functionality exposed + by the pyplot module can and should be imported directly from its + Matplotlib module. + + See Also + -------- + create_mpl_fig + + Examples + -------- + A plotting function has a keyword ``ax=None``. Then calls: + + >>> from statsmodels.graphics import utils + >>> fig, ax = utils.create_mpl_ax(ax) + + """ + if ax is None: + plt = _import_mpl() + fig = plt.figure() + ax = fig.add_subplot(111) + else: + fig = ax.figure + + return fig, ax + + +def create_mpl_fig(fig=None, figsize=None): + """Helper function for when multiple plot axes are needed. + + Those axes should be created in the functions they are used in, with + ``fig.add_subplot()``. + + Parameters + ---------- + fig : Matplotlib figure instance, optional + If given, this figure is simply returned. Otherwise a new figure is + created. + + Returns + ------- + fig : Matplotlib figure instance + If `fig` is None, the created figure. Otherwise the input `fig` is + returned. + + See Also + -------- + create_mpl_ax + + """ + if fig is None: + plt = _import_mpl() + fig = plt.figure(figsize=figsize) + + return fig + + +def maybe_name_or_idx(idx, model): + """ + Give a name or an integer and return the name and integer location of the + column in a design matrix. + """ + if idx is None: + idx = lrange(model.exog.shape[1]) + if isinstance(idx, (int, long)): + exog_name = model.exog_names[idx] + exog_idx = idx + # anticipate index as list and recurse + elif isinstance(idx, (tuple, list)): + exog_name = [] + exog_idx = [] + for item in idx: + exog_name_item, exog_idx_item = maybe_name_or_idx(item, model) + exog_name.append(exog_name_item) + exog_idx.append(exog_idx_item) + else: # assume we've got a string variable + exog_name = idx + exog_idx = model.exog_names.index(idx) + + return exog_name, exog_idx + + +def get_data_names(series_or_dataframe): + """ + Input can be an array or pandas-like. Will handle 1d array-like but not + 2d. Returns a str for 1d data or a list of strings for 2d data. + """ + names = getattr(series_or_dataframe, 'name', None) + if not names: + names = getattr(series_or_dataframe, 'columns', None) + if not names: + shape = getattr(series_or_dataframe, 'shape', [1]) + nvars = 1 if len(shape) == 1 else series_or_dataframe.shape[1] + names = ["X%d" for _ in range(nvars)] + if nvars == 1: + names = names[0] + else: + names = names.tolist() + return names + + +def annotate_axes(index, labels, points, offset_points, size, ax, **kwargs): + """ + Annotate Axes with labels, points, offset_points according to the + given index. + """ + for i in index: + label = labels[i] + point = points[i] + offset = offset_points[i] + ax.annotate(label, point, xytext=offset, textcoords="offset points", + size=size, **kwargs) + return ax diff --git a/statsmodels/imputation/__init__.py b/statsmodels/imputation/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/imputation/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/imputation/bayes_mi.py b/statsmodels/imputation/bayes_mi.py new file mode 100644 index 0000000..ce0244c --- /dev/null +++ b/statsmodels/imputation/bayes_mi.py @@ -0,0 +1,428 @@ +import numpy as np +import pandas as pd +from collections import OrderedDict +from statsmodels.base.model import LikelihoodModelResults + + +class BayesGaussMI(object): + """ + BayesGaussMI uses a Gaussian model to impute multivariate data. + + The approach is Bayesian. The goal is to sample from the joint + distribution of the mean vector, covariance matrix, and missing + data values given the observed data values. Conjugate priors for + the population mean and covariance matrix are used. Gibbs + sampling is used to update the mean vector, covariance matrix, and + missing data values in turn. After burn-in, the imputed complete + data sets from the Gibbs chain can be used in multiple imputation + analyses (MI). + + Parameters + ---------- + data : ndarray + The array of data to be imputed. Values in the array equal to + NaN are imputed. + mean_prior : ndarray, optional + The covariance matrix of the Gaussian prior distribution for + the mean vector. If not provided, the identity matrix is + used. + cov_prior : ndarray, optional + The center matrix for the inverse Wishart prior distribution + for the covariance matrix. If not provided, the identity + matrix is used. + cov_prior_df : positive float + The degrees of freedom of the inverse Wishart prior + distribution for the covariance matrix. Defaults to 1. + + Returns: + ------- + BayesGaussMI object + + Examples: + --------- + A basic example with OLS: + + >> def model_args_fn(x): + # Return endog, exog from x + return (x[:, 0], x[:, 1:]) + >> imp = BayesGaussMI(x) + >> mi = MI(imp, sm.OLS, model_args_fn) + """ + + def __init__(self, data, mean_prior=None, cov_prior=None, cov_prior_df=1): + + self.exog_names = None + if type(data) is pd.DataFrame: + self.exog_names = data.columns + + data = np.asarray(data) + self.data = data + self._data = data + self.mask = np.isnan(data) + self.nobs = self.mask.shape[0] + self.nvar = self.mask.shape[1] + + # Identify all distinct missing data patterns + z = 1 + np.log(1 + np.arange(self.mask.shape[1])) + c = np.dot(self.mask, z) + rowmap = OrderedDict() + for i, v in enumerate(c): + if v == 0: + # No missing values + continue + if v not in rowmap: + rowmap[v] = [] + rowmap[v].append(i) + self.patterns = [np.asarray(v) for v in rowmap.values()] + + # Simple starting values for mean and covariance + p = self._data.shape[1] + self.cov = np.eye(p) + mean = [] + for i in range(p): + v = self._data[:, i] + v = v[np.isfinite(v)] + if len(v) == 0: + msg = "Column %d has no observed values" % i + raise ValueError(msg) + mean.append(v.mean()) + self.mean = np.asarray(mean) + + # Default covariance matrix of the (Gaussian) mean prior + if mean_prior is None: + mean_prior = np.eye(p) + self.mean_prior = mean_prior + + # Default center matrix of the (inverse Wishart) covariance prior + if cov_prior is None: + cov_prior = np.eye(p) + self.cov_prior = cov_prior + + # Degrees of freedom for the (inverse Wishart) covariance prior + self.cov_prior_df = cov_prior_df + + def update(self): + """ + Cycle through all Gibbs updates. + """ + + self.update_data() + + # Need to update data first + self.update_mean() + self.update_cov() + + def update_data(self): + """ + Gibbs update of the missing data values. + """ + + for ix in self.patterns: + + i = ix[0] + ix_miss = np.flatnonzero(self.mask[i, :]) + ix_obs = np.flatnonzero(~self.mask[i, :]) + + mm = self.mean[ix_miss] + mo = self.mean[ix_obs] + + voo = self.cov[ix_obs, :][:, ix_obs] + vmm = self.cov[ix_miss, :][:, ix_miss] + vmo = self.cov[ix_miss, :][:, ix_obs] + + r = self._data[ix, :][:, ix_obs] - mo + cm = mm + np.dot(vmo, np.linalg.solve(voo, r.T)).T + cv = vmm - np.dot(vmo, np.linalg.solve(voo, vmo.T)) + + cs = np.linalg.cholesky(cv) + u = np.random.normal(size=(len(ix), len(ix_miss))) + self._data[np.ix_(ix, ix_miss)] = cm + np.dot(u, cs.T) + + # Set the user-visible data set. + if self.exog_names is not None: + self.data = pd.DataFrame( + self._data, + columns=self.exog_names, + copy=False) + else: + self.data = self._data + + def update_mean(self): + """ + Gibbs update of the mean vector. + + Do not call until update_data has been called once. + """ + # https://stats.stackexchange.com/questions/28744/multivariate-normal-posterior + + # Posterior covariance matrix of the mean + cm = np.linalg.solve(self.cov/self.nobs + self.mean_prior, + self.mean_prior / self.nobs) + cm = np.dot(self.cov, cm) + + # Posterior mean of the mean + vm = np.linalg.solve(self.cov, self._data.sum(0)) + vm = np.dot(cm, vm) + + # Sample + r = np.linalg.cholesky(cm) + self.mean = vm + np.dot(r, np.random.normal(0, 1, self.nvar)) + + def update_cov(self): + """ + Gibbs update of the covariance matrix. + + Do not call until update_data has been called once. + """ + # https://stats.stackexchange.com/questions/50844/estimating-the-covariance-posterior-distribution-of-a-multivariate-gaussian + + r = self._data - self.mean + gr = np.dot(r.T, r) + a = gr + self.cov_prior + df = int(np.ceil(self.nobs + self.cov_prior_df)) + + r = np.linalg.cholesky(np.linalg.inv(a)) + x = np.dot(np.random.normal(size=(df, self.nvar)), r.T) + ma = np.dot(x.T, x) + self.cov = np.linalg.inv(ma) + + +class MI(object): + """ + MI performs multiple imputation using a provided imputer object. + + Parameters + ---------- + imp : object + An imputer class, such as BayesGaussMI. + model : model class + Any statsmodels model class. + model_args_fn : function + A function taking an imputed dataset as input and returning + endog, exog. If the model is fit using a formula, returns + a Dataframe used to build the model. Optional when a formula + is used. + model_kwds_fn : function, optional + A function taking an imputed dataset as input and returning + a dictionary of model keyword arguments. + formula : string, optional + If provided, the model is constructed using the `from_formula` + class method, otherwise the `__init__` method is used. + fit_args : list-like, optional + List of arguments to be passed to the fit method + fit_kwds : dict-like, optional + Keyword arguments to be passed to the fit method + xfunc : function mapping ndarray to ndarray + A function that is applied to the complete data matrix + prior to fitting the model + burn : int + Number of burn-in iterations + nrep : int + Number of imputed data sets to use in the analysis + skip : int + Number of Gibbs iterations to skip between successive + mutiple imputation fits. + + Notes + ----- + The imputer object must have an 'update' method, and a 'data' + attribute that contains the current imputed dataset. + + xfunc can be used to introduce domain constraints, e.g. when + imputing binary data the imputed continuous values can be rounded + to 0/1. + """ + + def __init__(self, imp, model, model_args_fn=None, model_kwds_fn=None, + formula=None, fit_args=None, fit_kwds=None, xfunc=None, + burn=100, nrep=20, skip=10): + + # The imputer + self.imp = imp + + # The number of imputed data sets to skip between each imputed + # data set tha that is used in the analysis. + self.skip = skip + + # The model class + self.model = model + self.formula = formula + + if model_args_fn is None: + def f(x): + return [] + model_args_fn = f + self.model_args_fn = model_args_fn + + if model_kwds_fn is None: + def f(x): + return {} + model_kwds_fn = f + self.model_kwds_fn = model_kwds_fn + + if fit_args is None: + def f(x): + return [] + fit_args = f + self.fit_args = fit_args + + if fit_kwds is None: + def f(x): + return {} + fit_kwds = f + self.fit_kwds = fit_kwds + + self.xfunc = xfunc + self.nrep = nrep + self.skip = skip + + # Burn-in + for k in range(burn): + imp.update() + + def fit(self, results_cb=None): + """ + Impute datasets, fit models, and pool results. + + Parameters + ---------- + results_cb : function, optional + If provided, each results instance r is passed through `results_cb`, + then appended to the `results` attribute of the MIResults object. + To save complete results, use `results_cb=lambda x: x`. The default + behavior is to save no results. + + Returns + ------- + A MIResults object. + """ + + par, cov = [], [] + all_results = [] + + for k in range(self.nrep): + + for k in range(self.skip+1): + self.imp.update() + + da = self.imp.data + + if self.xfunc is not None: + da = self.xfunc(da) + + if self.formula is None: + model = self.model(*self.model_args_fn(da), + **self.model_kwds_fn(da)) + else: + model = self.model.from_formula( + self.formula, *self.model_args_fn(da), + **self.model_kwds_fn(da)) + + result = model.fit(*self.fit_args(da), **self.fit_kwds(da)) + + if results_cb is not None: + all_results.append(results_cb(result)) + + par.append(np.asarray(result.params.copy())) + cov.append(np.asarray(result.cov_params().copy())) + + params, cov_params, fmi = self._combine(par, cov) + + r = MIResults(self, model, params, cov_params) + r.fmi = fmi + + r.results = all_results + + return r + + def _combine(self, par, cov): + # Helper function to apply "Rubin's combining rule" + + par = np.asarray(par) + + # Number of imputations + m = par.shape[0] + + # Point estimate + params = par.mean(0) + + # Within-imputation covariance + wcov = sum(cov) / len(cov) + + # Between-imputation covariance + bcov = np.cov(par.T) + bcov = np.atleast_2d(bcov) + + # Overall covariance + covp = wcov + (1 + 1/float(m))*bcov + + # Fraction of missing information + fmi = (1 + 1/float(m)) * np.diag(bcov) / np.diag(covp) + + return params, covp, fmi + + +class MIResults(LikelihoodModelResults): + """ + A results class for multiple imputation (MI). + + Parameters + ---------- + mi : MI instance + The MI object that produced the results + model : instance of statsmodels model class + This can be any instance from the multiple imputation runs. + It is used to get class information, the specific parameter + and data values are not used. + params : array-like + The overall multiple imputation parameter estimates. + normalized_cov_params : array-like (2d) + The overall variance covariance matrix of the estimates. + """ + + def __init__(self, mi, model, params, normalized_cov_params): + + super(MIResults, self).__init__(model, params, normalized_cov_params) + self.mi = mi + self._model = model + + def summary(self, title=None, alpha=.05): + """ + Summarize the results of running multiple imputation. + + Parameters + ---------- + title : string, optional + Title for the top table. If not None, then this replaces + the default title + alpha : float + Significance level for the confidence intervals + + Returns + ------- + smry : Summary instance + This holds the summary tables and text, which can be + printed or converted to various output formats. + """ + + from statsmodels.iolib import summary2 + + smry = summary2.Summary() + float_format = "%8.3f" + + info = OrderedDict() + info["Method:"] = "MI" + info["Model:"] = self.mi.model.__name__ + info["Dependent variable:"] = self._model.endog_names + info["Sample size:"] = "%d" % self.mi.imp.data.shape[0] + info["Num. imputations"] = "%d" % self.mi.nrep + + smry.add_dict(info, align='l', float_format=float_format) + + param = summary2.summary_params(self, alpha=alpha) + param["FMI"] = self.fmi + + smry.add_df(param, float_format=float_format) + smry.add_title(title=title, results=self) + + return smry diff --git a/statsmodels/imputation/mice.py b/statsmodels/imputation/mice.py new file mode 100644 index 0000000..07dd950 --- /dev/null +++ b/statsmodels/imputation/mice.py @@ -0,0 +1,1327 @@ +""" +Overview +-------- + +This module implements the Multiple Imputation through Chained +Equations (MICE) approach to handling missing data in statistical data +analyses. The approach has the following steps: + +0. Impute each missing value with the mean of the observed values of +the same variable. + +1. For each variable in the data set with missing values (termed the +'focus variable'), do the following: + +1a. Fit an 'imputation model', which is a regression model for the +focus variable, regressed on the observed and (current) imputed values +of some or all of the other variables. + +1b. Impute the missing values for the focus variable. Currently this +imputation must use the 'predictive mean matching' (pmm) procedure. + +2. Once all variables have been imputed, fit the 'analysis model' to +the data set. + +3. Repeat steps 1-2 multiple times and combine the results using a +'combining rule' to produce point estimates of all parameters in the +analysis model and standard errors for them. + +The imputations for each variable are based on an imputation model +that is specified via a model class and a formula for the regression +relationship. The default model is OLS, with a formula specifying +main effects for all other variables. + +The MICE procedure can be used in one of two ways: + +* If the goal is only to produce imputed data sets, the MICEData class +can be used to wrap a data frame, providing facilities for doing the +imputation. Summary plots are available for assessing the performance +of the imputation. + +* If the imputed data sets are to be used to fit an additional +'analysis model', a MICE instance can be used. After specifying the +MICE instance and running it, the results are combined using the +`combine` method. Results and various summary plots are then +available. + +Terminology +----------- + +The primary goal of the analysis is usually to fit and perform +inference using an 'analysis model'. If an analysis model is not +specified, then imputed datasets are produced for later use. + +The MICE procedure involves a family of imputation models. There is +one imputation model for each variable with missing values. An +imputation model may be conditioned on all or a subset of the +remaining variables, using main effects, transformations, +interactions, etc. as desired. + +A 'perturbation method' is a method for setting the parameter estimate +in an imputation model. The 'gaussian' perturbation method first fits +the model (usually using maximum likelihood, but it could use any +statsmodels fit procedure), then sets the parameter vector equal to a +draw from the Gaussian approximation to the sampling distribution for +the fit. The 'bootstrap' perturbation method sets the parameter +vector equal to a fitted parameter vector obtained when fitting the +conditional model to a bootstrapped version of the data set. + +Class structure +--------------- + +There are two main classes in the module: + +* 'MICEData' wraps a Pandas dataframe, incorporating information about + the imputation model for each variable with missing values. It can + be used to produce multiply imputed data sets that are to be further + processed or distributed to other researchers. A number of plotting + procedures are provided to visualize the imputation results and + missing data patterns. The `history_func` hook allows any features + of interest of the imputed data sets to be saved for further + analysis. + +* 'MICE' takes both a 'MICEData' object and an analysis model + specification. It runs the multiple imputation, fits the analysis + models, and combines the results to produce a `MICEResults` object. + The summary method of this results object can be used to see the key + estimands and inferential quantities. + +Notes +----- + +By default, to conserve memory 'MICEData' saves very little +information from one iteration to the next. The data set passed by +the user is copied on entry, but then is over-written each time new +imputations are produced. If using 'MICE', the fitted +analysis models and results are saved. MICEData includes a +`history_callback` hook that allows arbitrary information from the +intermediate datasets to be saved for future use. + +References +---------- + +JL Schafer: 'Multiple Imputation: A Primer', Stat Methods Med Res, +1999. + +TE Raghunathan et al.: 'A Multivariate Technique for Multiply +Imputing Missing Values Using a Sequence of Regression Models', Survey +Methodology, 2001. + +SAS Institute: 'Predictive Mean Matching Method for Monotone Missing +Data', SAS 9.2 User's Guide, 2014. + +A Gelman et al.: 'Multiple Imputation with Diagnostics (mi) in R: +Opening Windows into the Black Box', Journal of Statistical Software, +2009. +""" + +import pandas as pd +import numpy as np +import patsy +from statsmodels.base.model import LikelihoodModelResults +from statsmodels.regression.linear_model import OLS +from collections import defaultdict + + +_mice_data_example_1 = """ + >>> imp = mice.MICEData(data) + >>> imp.set_imputer('x1', formula='x2 + np.square(x2) + x3') + >>> for j in range(20): + ... imp.update_all() + ... imp.data.to_csv('data%02d.csv' % j)""" + +_mice_data_example_2 = """ + >>> imp = mice.MICEData(data) + >>> j = 0 + >>> for data in imp: + ... imp.data.to_csv('data%02d.csv' % j) + ... j += 1""" + + +class PatsyFormula(object): + """ + A simple wrapper for a string to be interpreted as a Patsy formula. + """ + def __init__(self, formula): + self.formula = "0 + " + formula + + +class MICEData(object): + + __doc__ = """\ + Wrap a data set to allow missing data handling with MICE. + + Parameters + ---------- + data : Pandas data frame + The data set, whch is copied internally. + perturbation_method : string + The default perturbation method + k_pmm : int + The number of nearest neighbors to use during predictive mean + matching. Can also be specified in `fit`. + history_callback : function + A function that is called after each complete imputation + cycle. The return value is appended to `history`. The + MICEData object is passed as the sole argument to + `history_callback`. + + Examples + -------- + Draw 20 imputations from a data set called `data` and save them in + separate files with filename pattern `dataXX.csv`. The variables + other than `x1` are imputed using linear models fit with OLS, with + mean structures containing main effects of all other variables in + `data`. The variable named `x1` has a condtional mean structure + that includes an additional term for x2^2. + %(_mice_data_example_1)s + + Impute using default models, using the MICEData object as an + iterator. + %(_mice_data_example_2)s + + Notes + ----- + Allowed perturbation methods are 'gaussian' (the model parameters + are set to a draw from the Gaussian approximation to the posterior + distribution), and 'boot' (the model parameters are set to the + estimated values obtained when fitting a bootstrapped version of + the data set). + + `history_callback` can be implemented to have side effects such as + saving the current imputed data set to disk. + """ % {'_mice_data_example_1': _mice_data_example_1, + '_mice_data_example_2': _mice_data_example_2} + + def __init__(self, data, perturbation_method='gaussian', + k_pmm=20, history_callback=None): + + if data.columns.dtype != np.dtype('O'): + msg = "MICEData data column names should be string type" + raise ValueError(msg) + + self.regularized = dict() + + # Drop observations where all variables are missing. This + # also has the effect of copying the data frame. + self.data = data.dropna(how='all').reset_index(drop=True) + + self.history_callback = history_callback + self.history = [] + self.predict_kwds = {} + + # Assign the same perturbation method for all variables. + # Can be overriden when calling 'set_imputer'. + self.perturbation_method = defaultdict(lambda: + perturbation_method) + + # Map from variable name to indices of observed/missing + # values. + self.ix_obs = {} + self.ix_miss = {} + for col in self.data.columns: + ix_obs, ix_miss = self._split_indices(self.data[col]) + self.ix_obs[col] = ix_obs + self.ix_miss[col] = ix_miss + + # Most recent model instance and results instance for each variable. + self.models = {} + self.results = {} + + # Map from variable names to the conditional formula. + self.conditional_formula = {} + + # Map from variable names to init/fit args of the conditional + # models. + self.init_kwds = defaultdict(lambda: dict()) + self.fit_kwds = defaultdict(lambda: dict()) + + # Map from variable names to the model class. + self.model_class = {} + + # Map from variable names to most recent params update. + self.params = {} + + # Set default imputers. + for vname in data.columns: + self.set_imputer(vname) + + # The order in which variables are imputed in each cycle. + # Impute variables with the fewest missing values first. + vnames = list(data.columns) + nmiss = [len(self.ix_miss[v]) for v in vnames] + nmiss = np.asarray(nmiss) + ii = np.argsort(nmiss) + ii = ii[sum(nmiss == 0):] + self._cycle_order = [vnames[i] for i in ii] + + self._initial_imputation() + + self.k_pmm = k_pmm + + def next_sample(self): + """ + Returns the next imputed dataset in the imputation process. + + Returns + ------- + data : array-like + An imputed dataset from the MICE chain. + + Notes + ----- + `MICEData` does not have a `skip` parameter. Consecutive + values returned by `next_sample` are immediately consecutive + in the imputation chain. + + The returned value is a reference to the data attribute of + the class and should be copied before making any changes. + """ + + self.update_all(1) + return self.data + + def _initial_imputation(self): + """ + Use a PMM-like procedure for initial imputed values. + + For each variable, missing values are imputed as the observed + value that is closest to the mean over all observed values. + """ + + for col in self.data.columns: + di = self.data[col] - self.data[col].mean() + di = np.abs(di) + ix = di.idxmin() + imp = self.data[col].loc[ix] + self.data[col].fillna(imp, inplace=True) + + def _split_indices(self, vec): + null = pd.isnull(vec) + ix_obs = np.flatnonzero(~null) + ix_miss = np.flatnonzero(null) + if len(ix_obs) == 0: + raise ValueError("variable to be imputed has no observed values") + return ix_obs, ix_miss + + def set_imputer(self, endog_name, formula=None, model_class=None, + init_kwds=None, fit_kwds=None, predict_kwds=None, + k_pmm=20, perturbation_method=None, regularized=False): + """ + Specify the imputation process for a single variable. + + Parameters + ---------- + endog_name : string + Name of the variable to be imputed. + formula : string + Conditional formula for imputation. Defaults to a formula + with main effects for all other variables in dataset. The + formula should only include an expression for the mean + structure, e.g. use 'x1 + x2' not 'x4 ~ x1 + x2'. + model_class : statsmodels model + Conditional model for imputation. Defaults to OLS. See below + for more information. + init_kwds : dit-like + Keyword arguments passed to the model init method. + fit_kwds : dict-like + Keyword arguments passed to the model fit method. + predict_kwds : dict-like + Keyword arguments passed to the model predict method. + k_pmm : int + Determines number of neighboring observations from which + to randomly sample when using predictive mean matching. + perturbation_method : string + Either 'gaussian' or 'bootstrap'. Determines the method + for perturbing parameters in the imputation model. If + None, uses the default specified at class initialization. + regularized : dict + If regularized[name]=True, `fit_regularized` rather than + `fit` is called when fitting imputation models for this + variable. When regularized[name]=True for any variable, + pertrurbation_method must be set to boot. + + Notes + ----- + The model class must meet the following conditions: + * A model must have a 'fit' method that returns an object. + * The object returned from `fit` must have a `params` attribute + that is an array-like object. + * The object returned from `fit` must have a cov_params method + that returns a square array-like object. + * The model must have a `predict` method. + """ + + if formula is None: + main_effects = [x for x in self.data.columns + if x != endog_name] + fml = endog_name + " ~ " + " + ".join(main_effects) + self.conditional_formula[endog_name] = fml + else: + fml = endog_name + " ~ " + formula + self.conditional_formula[endog_name] = fml + + if model_class is None: + self.model_class[endog_name] = OLS + else: + self.model_class[endog_name] = model_class + + if init_kwds is not None: + self.init_kwds[endog_name] = init_kwds + + if fit_kwds is not None: + self.fit_kwds[endog_name] = fit_kwds + + if predict_kwds is not None: + self.predict_kwds[endog_name] = predict_kwds + + if perturbation_method is not None: + self.perturbation_method[endog_name] = perturbation_method + + self.k_pmm = k_pmm + self.regularized[endog_name] = regularized + + def _store_changes(self, col, vals): + """ + Fill in dataset with imputed values. + + Parameters + ---------- + col : string + Name of variable to be filled in. + vals : array + Array of imputed values to use for filling-in missing values. + """ + + ix = self.ix_miss[col] + if len(ix) > 0: + self.data.iloc[ix, self.data.columns.get_loc(col)] = np.atleast_1d(vals) + + def update_all(self, n_iter=1): + """ + Perform a specified number of MICE iterations. + + Parameters + ---------- + n_iter : int + The number of updates to perform. Only the result of the + final update will be available. + + Notes + ----- + The imputed values are stored in the class attribute `self.data`. + """ + + for k in range(n_iter): + for vname in self._cycle_order: + self.update(vname) + + if self.history_callback is not None: + hv = self.history_callback(self) + self.history.append(hv) + + def get_split_data(self, vname): + """ + Return endog and exog for imputation of a given variable. + + Parameters + ---------- + vname : string + The variable for which the split data is returned. + + Returns + ------- + endog_obs : DataFrame + Observed values of the variable to be imputed. + exog_obs : DataFrame + Current values of the predictors where the variable to be + imputed is observed. + exog_miss : DataFrame + Current values of the predictors where the variable to be + Imputed is missing. + init_kwds : dict-like + The init keyword arguments for `vname`, processed through Patsy + as required. + fit_kwds : dict-like + The fit keyword arguments for `vname`, processed through Patsy + as required. + """ + + formula = self.conditional_formula[vname] + endog, exog = patsy.dmatrices(formula, self.data, + return_type="dataframe") + + # Rows with observed endog + ixo = self.ix_obs[vname] + endog_obs = np.asarray(endog.iloc[ixo]) + exog_obs = np.asarray(exog.iloc[ixo, :]) + + # Rows with missing endog + ixm = self.ix_miss[vname] + exog_miss = np.asarray(exog.iloc[ixm, :]) + + predict_obs_kwds = {} + if vname in self.predict_kwds: + kwds = self.predict_kwds[vname] + predict_obs_kwds = self._process_kwds(kwds, ixo) + + predict_miss_kwds = {} + if vname in self.predict_kwds: + kwds = self.predict_kwds[vname] + predict_miss_kwds = self._process_kwds(kwds, ixo) + + return (endog_obs, exog_obs, exog_miss, predict_obs_kwds, + predict_miss_kwds) + + def _process_kwds(self, kwds, ix): + kwds = kwds.copy() + for k in kwds: + v = kwds[k] + if isinstance(v, PatsyFormula): + mat = patsy.dmatrix(v.formula, self.data, + return_type="dataframe") + mat = np.asarray(mat)[ix, :] + if mat.shape[1] == 1: + mat = mat[:, 0] + kwds[k] = mat + return kwds + + def get_fitting_data(self, vname): + """ + Return the data needed to fit a model for imputation. + + The data is used to impute variable `vname`, and therefore + only includes cases for which `vname` is observed. + + Values of type `PatsyFormula` in `init_kwds` or `fit_kwds` are + processed through Patsy and subset to align with the model's + endog and exog. + + Parameters + ---------- + vname : string + The variable for which the fitting data is returned. + + Returns + ------- + endog : DataFrame + Observed values of `vname`. + exog : DataFrame + Regression design matrix for imputing `vname`. + init_kwds : dict-like + The init keyword arguments for `vname`, processed through Patsy + as required. + fit_kwds : dict-like + The fit keyword arguments for `vname`, processed through Patsy + as required. + """ + + # Rows with observed endog + ix = self.ix_obs[vname] + + formula = self.conditional_formula[vname] + endog, exog = patsy.dmatrices(formula, self.data, + return_type="dataframe") + + endog = np.asarray(endog.iloc[ix, 0]) + exog = np.asarray(exog.iloc[ix, :]) + + init_kwds = self._process_kwds(self.init_kwds[vname], ix) + fit_kwds = self._process_kwds(self.fit_kwds[vname], ix) + + return endog, exog, init_kwds, fit_kwds + + def plot_missing_pattern(self, ax=None, row_order="pattern", + column_order="pattern", + hide_complete_rows=False, + hide_complete_columns=False, + color_row_patterns=True): + """ + Generate an image showing the missing data pattern. + + Parameters + ---------- + ax : matplotlib axes + Axes on which to draw the plot. + row_order : string + The method for ordering the rows. Must be one of 'pattern', + 'proportion', or 'raw'. + column_order : string + The method for ordering the columns. Must be one of 'pattern', + 'proportion', or 'raw'. + hide_complete_rows : boolean + If True, rows with no missing values are not drawn. + hide_complete_columns : boolean + If True, columns with no missing values are not drawn. + color_row_patterns : boolean + If True, color the unique row patterns, otherwise use grey + and white as colors. + + Returns + ------- + A figure containing a plot of the missing data pattern. + """ + + # Create an indicator matrix for missing values. + miss = np.zeros(self.data.shape) + cols = self.data.columns + for j, col in enumerate(cols): + ix = self.ix_miss[col] + miss[ix, j] = 1 + + # Order the columns as requested + if column_order == "proportion": + ix = np.argsort(miss.mean(0)) + elif column_order == "pattern": + cv = np.cov(miss.T) + u, s, vt = np.linalg.svd(cv, 0) + ix = np.argsort(cv[:, 0]) + elif column_order == "raw": + ix = np.arange(len(cols)) + else: + raise ValueError( + column_order + " is not an allowed value for `column_order`.") + miss = miss[:, ix] + cols = [cols[i] for i in ix] + + # Order the rows as requested + if row_order == "proportion": + ix = np.argsort(miss.mean(1)) + elif row_order == "pattern": + x = 2**np.arange(miss.shape[1]) + rky = np.dot(miss, x) + ix = np.argsort(rky) + elif row_order == "raw": + ix = np.arange(miss.shape[0]) + else: + raise ValueError( + row_order + " is not an allowed value for `row_order`.") + miss = miss[ix, :] + + if hide_complete_rows: + ix = np.flatnonzero((miss == 1).any(1)) + miss = miss[ix, :] + + if hide_complete_columns: + ix = np.flatnonzero((miss == 1).any(0)) + miss = miss[:, ix] + cols = [cols[i] for i in ix] + + from statsmodels.graphics import utils as gutils + from matplotlib.colors import LinearSegmentedColormap + + if ax is None: + fig, ax = gutils.create_mpl_ax(ax) + else: + fig = ax.get_figure() + + if color_row_patterns: + x = 2**np.arange(miss.shape[1]) + rky = np.dot(miss, x) + _, rcol = np.unique(rky, return_inverse=True) + miss *= 1 + rcol[:, None] + ax.imshow(miss, aspect="auto", interpolation="nearest", + cmap='gist_ncar_r') + else: + cmap = LinearSegmentedColormap.from_list("_", + ["white", "darkgrey"]) + ax.imshow(miss, aspect="auto", interpolation="nearest", + cmap=cmap) + + ax.set_ylabel("Cases") + ax.set_xticks(range(len(cols))) + ax.set_xticklabels(cols, rotation=90) + + return fig + + def plot_bivariate(self, col1_name, col2_name, + lowess_args=None, lowess_min_n=40, + jitter=None, plot_points=True, ax=None): + """ + Plot observed and imputed values for two variables. + + Displays a scatterplot of one variable against another. The + points are colored according to whether the values are + observed or imputed. + + Parameters + ---------- + col1_name : string + The variable to be plotted on the horizontal axis. + col2_name : string + The variable to be plotted on the vertical axis. + lowess_args : dictionary + A dictionary of dictionaries, keys are 'ii', 'io', 'oi' + and 'oo', where 'o' denotes 'observed' and 'i' denotes + imputed. See Notes for details. + lowess_min_n : integer + Minimum sample size to plot a lowess fit + jitter : float or tuple + Standard deviation for jittering points in the plot. + Either a single scalar applied to both axes, or a tuple + containing x-axis jitter and y-axis jitter, respectively. + plot_points : bool + If True, the data points are plotted. + ax : matplotlib axes object + Axes on which to plot, created if not provided. + + Returns + ------- + The matplotlib figure on which the plot id drawn. + """ + + from statsmodels.graphics import utils as gutils + from statsmodels.nonparametric.smoothers_lowess import lowess + + if lowess_args is None: + lowess_args = {} + + if ax is None: + fig, ax = gutils.create_mpl_ax(ax) + else: + fig = ax.get_figure() + + ax.set_position([0.1, 0.1, 0.7, 0.8]) + + ix1i = self.ix_miss[col1_name] + ix1o = self.ix_obs[col1_name] + ix2i = self.ix_miss[col2_name] + ix2o = self.ix_obs[col2_name] + + ix_ii = np.intersect1d(ix1i, ix2i) + ix_io = np.intersect1d(ix1i, ix2o) + ix_oi = np.intersect1d(ix1o, ix2i) + ix_oo = np.intersect1d(ix1o, ix2o) + + vec1 = np.asarray(self.data[col1_name]) + vec2 = np.asarray(self.data[col2_name]) + + if jitter is not None: + if np.isscalar(jitter): + jitter = (jitter, jitter) + vec1 += jitter[0] * np.random.normal(size=len(vec1)) + vec2 += jitter[1] * np.random.normal(size=len(vec2)) + + # Plot the points + keys = ['oo', 'io', 'oi', 'ii'] + lak = {'i': 'imp', 'o': 'obs'} + ixs = {'ii': ix_ii, 'io': ix_io, 'oi': ix_oi, 'oo': ix_oo} + color = {'oo': 'grey', 'ii': 'red', 'io': 'orange', + 'oi': 'lime'} + if plot_points: + for ky in keys: + ix = ixs[ky] + lab = lak[ky[0]] + "/" + lak[ky[1]] + ax.plot(vec1[ix], vec2[ix], 'o', color=color[ky], + label=lab, alpha=0.6) + + # Plot the lowess fits + for ky in keys: + ix = ixs[ky] + if len(ix) < lowess_min_n: + continue + if ky in lowess_args: + la = lowess_args[ky] + else: + la = {} + ix = ixs[ky] + lfit = lowess(vec2[ix], vec1[ix], **la) + if plot_points: + ax.plot(lfit[:, 0], lfit[:, 1], '-', color=color[ky], + alpha=0.6, lw=4) + else: + lab = lak[ky[0]] + "/" + lak[ky[1]] + ax.plot(lfit[:, 0], lfit[:, 1], '-', color=color[ky], + alpha=0.6, lw=4, label=lab) + + ha, la = ax.get_legend_handles_labels() + pad = 0.0001 if plot_points else 0.5 + leg = fig.legend(ha, la, 'center right', numpoints=1, + handletextpad=pad) + leg.draw_frame(False) + + ax.set_xlabel(col1_name) + ax.set_ylabel(col2_name) + + return fig + + def plot_fit_obs(self, col_name, lowess_args=None, + lowess_min_n=40, jitter=None, + plot_points=True, ax=None): + """ + Plot fitted versus imputed or observed values as a scatterplot. + + Parameters + ---------- + col_name : string + The variable to be plotted on the horizontal axis. + lowess_args : dict-like + Keyword arguments passed to lowess fit. A dictionary of + dictionaries, keys are 'o' and 'i' denoting 'observed' and + 'imputed', respectively. + lowess_min_n : integer + Minimum sample size to plot a lowess fit + jitter : float or tuple + Standard deviation for jittering points in the plot. + Either a single scalar applied to both axes, or a tuple + containing x-axis jitter and y-axis jitter, respectively. + plot_points : bool + If True, the data points are plotted. + ax : matplotlib axes object + Axes on which to plot, created if not provided. + + Returns + ------- + The matplotlib figure on which the plot is drawn. + """ + + from statsmodels.graphics import utils as gutils + from statsmodels.nonparametric.smoothers_lowess import lowess + + if lowess_args is None: + lowess_args = {} + + if ax is None: + fig, ax = gutils.create_mpl_ax(ax) + else: + fig = ax.get_figure() + + ax.set_position([0.1, 0.1, 0.7, 0.8]) + + ixi = self.ix_miss[col_name] + ixo = self.ix_obs[col_name] + + vec1 = np.asarray(self.data[col_name]) + + # Fitted values + formula = self.conditional_formula[col_name] + endog, exog = patsy.dmatrices(formula, self.data, + return_type="dataframe") + results = self.results[col_name] + vec2 = results.predict(exog=exog) + vec2 = self._get_predicted(vec2) + + if jitter is not None: + if np.isscalar(jitter): + jitter = (jitter, jitter) + vec1 += jitter[0] * np.random.normal(size=len(vec1)) + vec2 += jitter[1] * np.random.normal(size=len(vec2)) + + # Plot the points + keys = ['o', 'i'] + ixs = {'o': ixo, 'i': ixi} + lak = {'o': 'obs', 'i': 'imp'} + color = {'o': 'orange', 'i': 'lime'} + if plot_points: + for ky in keys: + ix = ixs[ky] + ax.plot(vec1[ix], vec2[ix], 'o', color=color[ky], + label=lak[ky], alpha=0.6) + + # Plot the lowess fits + for ky in keys: + ix = ixs[ky] + if len(ix) < lowess_min_n: + continue + if ky in lowess_args: + la = lowess_args[ky] + else: + la = {} + ix = ixs[ky] + lfit = lowess(vec2[ix], vec1[ix], **la) + ax.plot(lfit[:, 0], lfit[:, 1], '-', color=color[ky], + alpha=0.6, lw=4, label=lak[ky]) + + ha, la = ax.get_legend_handles_labels() + leg = fig.legend(ha, la, 'center right', numpoints=1) + leg.draw_frame(False) + + ax.set_xlabel(col_name + " observed or imputed") + ax.set_ylabel(col_name + " fitted") + + return fig + + def plot_imputed_hist(self, col_name, ax=None, imp_hist_args=None, + obs_hist_args=None, all_hist_args=None): + """ + Display imputed values for one variable as a histogram. + + Parameters + ---------- + col_name : string + The name of the variable to be plotted. + ax : matplotlib axes + An axes on which to draw the histograms. If not provided, + one is created. + imp_hist_args : dict + Keyword arguments to be passed to pyplot.hist when + creating the histogram for imputed values. + obs_hist_args : dict + Keyword arguments to be passed to pyplot.hist when + creating the histogram for observed values. + all_hist_args : dict + Keyword arguments to be passed to pyplot.hist when + creating the histogram for all values. + + Returns + ------- + The matplotlib figure on which the histograms were drawn + """ + + from statsmodels.graphics import utils as gutils + + if imp_hist_args is None: + imp_hist_args = {} + if obs_hist_args is None: + obs_hist_args = {} + if all_hist_args is None: + all_hist_args = {} + + if ax is None: + fig, ax = gutils.create_mpl_ax(ax) + else: + fig = ax.get_figure() + + ax.set_position([0.1, 0.1, 0.7, 0.8]) + + ixm = self.ix_miss[col_name] + ixo = self.ix_obs[col_name] + + imp = self.data[col_name].iloc[ixm] + obs = self.data[col_name].iloc[ixo] + + for di in imp_hist_args, obs_hist_args, all_hist_args: + if 'histtype' not in di: + di['histtype'] = 'step' + + ha, la = [], [] + if len(imp) > 0: + h = ax.hist(np.asarray(imp), **imp_hist_args) + ha.append(h[-1][0]) + la.append("Imp") + h1 = ax.hist(np.asarray(obs), **obs_hist_args) + h2 = ax.hist(np.asarray(self.data[col_name]), **all_hist_args) + ha.extend([h1[-1][0], h2[-1][0]]) + la.extend(["Obs", "All"]) + + leg = fig.legend(ha, la, 'center right', numpoints=1) + leg.draw_frame(False) + + ax.set_xlabel(col_name) + ax.set_ylabel("Frequency") + + return fig + + # Try to identify any auxiliary arrays (e.g. status vector in + # PHReg) that need to be bootstrapped along with exog and endog. + def _boot_kwds(self, kwds, rix): + + for k in kwds: + v = kwds[k] + + # This is only relevant for ndarrays + if not isinstance(v, np.ndarray): + continue + + # Handle 1d vectors + if (v.ndim == 1) and (v.shape[0] == len(rix)): + kwds[k] = v[rix] + + # Handle 2d arrays + if (v.ndim == 2) and (v.shape[0] == len(rix)): + kwds[k] = v[rix, :] + + return kwds + + def _perturb_bootstrap(self, vname): + """ + Perturbs the model's parameters using a bootstrap. + """ + + endog, exog, init_kwds, fit_kwds = self.get_fitting_data(vname) + + m = len(endog) + rix = np.random.randint(0, m, m) + endog = endog[rix] + exog = exog[rix, :] + + init_kwds = self._boot_kwds(init_kwds, rix) + fit_kwds = self._boot_kwds(fit_kwds, rix) + + klass = self.model_class[vname] + self.models[vname] = klass(endog, exog, **init_kwds) + + if vname in self.regularized and self.regularized[vname]: + self.results[vname] = ( + self.models[vname].fit_regularized(**fit_kwds)) + else: + self.results[vname] = self.models[vname].fit(**fit_kwds) + + self.params[vname] = self.results[vname].params + + def _perturb_gaussian(self, vname): + """ + Gaussian perturbation of model parameters. + + The normal approximation to the sampling distribution of the + parameter estimates is used to define the mean and covariance + structure of the perturbation distribution. + """ + + endog, exog, init_kwds, fit_kwds = self.get_fitting_data(vname) + + klass = self.model_class[vname] + self.models[vname] = klass(endog, exog, **init_kwds) + self.results[vname] = self.models[vname].fit(**fit_kwds) + + cov = self.results[vname].cov_params() + mu = self.results[vname].params + self.params[vname] = np.random.multivariate_normal(mean=mu, cov=cov) + + def perturb_params(self, vname): + + if self.perturbation_method[vname] == "gaussian": + self._perturb_gaussian(vname) + elif self.perturbation_method[vname] == "boot": + self._perturb_bootstrap(vname) + else: + raise ValueError("unknown perturbation method") + + def impute(self, vname): + # Wrap this in case we later add additional imputation + # methods. + self.impute_pmm(vname) + + def update(self, vname): + """ + Impute missing values for a single variable. + + This is a two-step process in which first the parameters are + perturbed, then the missing values are re-imputed. + + Parameters + ---------- + vname : string + The name of the variable to be updated. + """ + + self.perturb_params(vname) + self.impute(vname) + + # work-around for inconsistent predict return values + def _get_predicted(self, obj): + + if isinstance(obj, np.ndarray): + return obj + elif isinstance(obj, pd.Series): + return obj.values + elif hasattr(obj, 'predicted_values'): + return obj.predicted_values + else: + raise ValueError( + "cannot obtain predicted values from %s" % obj.__class__) + + def impute_pmm(self, vname): + """ + Use predictive mean matching to impute missing values. + + Notes + ----- + The `perturb_params` method must be called first to define the + model. + """ + + k_pmm = self.k_pmm + + endog_obs, exog_obs, exog_miss, predict_obs_kwds, predict_miss_kwds = ( + self.get_split_data(vname)) + + # Predict imputed variable for both missing and non-missing + # observations + model = self.models[vname] + pendog_obs = model.predict(self.params[vname], exog_obs, + **predict_obs_kwds) + pendog_miss = model.predict(self.params[vname], exog_miss, + **predict_miss_kwds) + + pendog_obs = self._get_predicted(pendog_obs) + pendog_miss = self._get_predicted(pendog_miss) + + # Jointly sort the observed and predicted endog values for the + # cases with observed values. + ii = np.argsort(pendog_obs) + endog_obs = endog_obs[ii] + pendog_obs = pendog_obs[ii] + + # Find the closest match to the predicted endog values for + # cases with missing endog values. + ix = np.searchsorted(pendog_obs, pendog_miss) + + # Get the indices for the closest k_pmm values on + # either side of the closest index. + ixm = ix[:, None] + np.arange(-k_pmm, k_pmm)[None, :] + + # Account for boundary effects + msk = np.nonzero((ixm < 0) | (ixm > len(endog_obs) - 1)) + ixm = np.clip(ixm, 0, len(endog_obs) - 1) + + # Get the distances + dx = pendog_miss[:, None] - pendog_obs[ixm] + dx = np.abs(dx) + dx[msk] = np.inf + + # Closest positions in ix, row-wise. + dxi = np.argsort(dx, 1)[:, 0:k_pmm] + + # Choose a column for each row. + ir = np.random.randint(0, k_pmm, len(pendog_miss)) + + # Unwind the indices + jj = np.arange(dxi.shape[0]) + ix = dxi[(jj, ir)] + iz = ixm[(jj, ix)] + + imputed_miss = np.array(endog_obs[iz]).squeeze() + self._store_changes(vname, imputed_miss) + + +_mice_example_1 = """ + >>> imp = mice.MICEData(data) + >>> fml = 'y ~ x1 + x2 + x3 + x4' + >>> mice = mice.MICE(fml, sm.OLS, imp) + >>> results = mice.fit(10, 10) + >>> print(results.summary()) + + .. literalinclude:: ../plots/mice_example_1.txt + """ + +_mice_example_2 = """ + >>> imp = mice.MICEData(data) + >>> fml = 'y ~ x1 + x2 + x3 + x4' + >>> mice = mice.MICE(fml, sm.OLS, imp) + >>> results = [] + >>> for k in range(10): + >>> x = mice.next_sample() + >>> results.append(x) + """ + + +class MICE(object): + + __doc__ = """\ + Multiple Imputation with Chained Equations. + + This class can be used to fit most Statsmodels models to data sets + with missing values using the 'multiple imputation with chained + equations' (MICE) approach.. + + Parameters + ---------- + model_formula : string + The model formula to be fit to the imputed data sets. This + formula is for the 'analysis model'. + model_class : statsmodels model + The model to be fit to the imputed data sets. This model + class if for the 'analysis model'. + data : MICEData instance + MICEData object containing the data set for which + missing values will be imputed + n_skip : int + The number of imputed datasets to skip between consecutive + imputed datasets that are used for analysis. + init_kwds : dict-like + Dictionary of keyword arguments passed to the init method + of the analysis model. + fit_kwds : dict-like + Dictionary of keyword arguments passed to the fit method + of the analysis model. + + Examples + -------- + Run all MICE steps and obtain results: + %(mice_example_1)s + + Obtain a sequence of fitted analysis models without combining + to obtain summary:: + %(mice_example_2)s + """ % {'mice_example_1': _mice_example_1, + 'mice_example_2': _mice_example_2} + + def __init__(self, model_formula, model_class, data, n_skip=3, + init_kwds=None, fit_kwds=None): + + self.model_formula = model_formula + self.model_class = model_class + self.n_skip = n_skip + self.data = data + self.results_list = [] + + self.init_kwds = init_kwds if init_kwds is not None else {} + self.fit_kwds = fit_kwds if fit_kwds is not None else {} + + def next_sample(self): + """ + Perform one complete MICE iteration. + + A single MICE iteration updates all missing values using their + respective imputation models, then fits the analysis model to + the imputed data. + + Returns + ------- + params : array-like + The model parameters for the analysis model. + + Notes + ----- + This function fits the analysis model and returns its + parameter estimate. The parameter vector is not stored by the + class and is not used in any subsequent calls to `combine`. + Use `fit` to run all MICE steps together and obtain summary + results. + + The complete cycle of missing value imputation followed by + fitting the analysis model is repeated `n_skip + 1` times and + the analysis model parameters from the final fit are returned. + """ + + # Impute missing values + self.data.update_all(self.n_skip + 1) + start_params = None + if len(self.results_list) > 0: + start_params = self.results_list[-1].params + + # Fit the analysis model. + model = self.model_class.from_formula(self.model_formula, + self.data.data, + **self.init_kwds) + self.fit_kwds.update({"start_params": start_params}) + result = model.fit(**self.fit_kwds) + + return result + + def fit(self, n_burnin=10, n_imputations=10): + """ + Fit a model using MICE. + + Parameters + ---------- + n_burnin : int + The number of burn-in cycles to skip. + n_imputations : int + The number of data sets to impute + """ + + # Run without fitting the analysis model + self.data.update_all(n_burnin) + + for j in range(n_imputations): + result = self.next_sample() + self.results_list.append(result) + + self.endog_names = result.model.endog_names + self.exog_names = result.model.exog_names + + return self.combine() + + def combine(self): + """ + Pools MICE imputation results. + + This method can only be used after the `run` method has been + called. Returns estimates and standard errors of the analysis + model parameters. + + Returns a MICEResults instance. + """ + + # Extract a few things from the models that were fit to + # imputed data sets. + params_list = [] + cov_within = 0. + scale_list = [] + for results in self.results_list: + results_uw = results._results + params_list.append(results_uw.params) + cov_within += results_uw.cov_params() + scale_list.append(results.scale) + params_list = np.asarray(params_list) + scale_list = np.asarray(scale_list) + + # The estimated parameters for the MICE analysis + params = params_list.mean(0) + + # The average of the within-imputation covariances + cov_within /= len(self.results_list) + + # The between-imputation covariance + cov_between = np.cov(params_list.T) + + # The estimated covariance matrix for the MICE analysis + f = 1 + 1 / float(len(self.results_list)) + cov_params = cov_within + f * cov_between + + # Fraction of missing information + fmi = f * np.diag(cov_between) / np.diag(cov_params) + + # Set up a results instance + scale = np.mean(scale_list) + results = MICEResults(self, params, cov_params / scale) + results.scale = scale + results.frac_miss_info = fmi + results.exog_names = self.exog_names + results.endog_names = self.endog_names + results.model_class = self.model_class + + return results + + +class MICEResults(LikelihoodModelResults): + + def __init__(self, model, params, normalized_cov_params): + + super(MICEResults, self).__init__(model, params, + normalized_cov_params) + + def summary(self, title=None, alpha=.05): + """ + Summarize the results of running MICE. + + Parameters + ---------- + title : string, optional + Title for the top table. If not None, then this replaces + the default title + alpha : float + Significance level for the confidence intervals + + Returns + ------- + smry : Summary instance + This holds the summary tables and text, which can be + printed or converted to various output formats. + """ + + from statsmodels.iolib import summary2 + from collections import OrderedDict + + smry = summary2.Summary() + float_format = "%8.3f" + + info = OrderedDict() + info["Method:"] = "MICE" + info["Model:"] = self.model_class.__name__ + info["Dependent variable:"] = self.endog_names + info["Sample size:"] = "%d" % self.model.data.data.shape[0] + info["Scale"] = "%.2f" % self.scale + info["Num. imputations"] = "%d" % len(self.model.results_list) + + smry.add_dict(info, align='l', float_format=float_format) + + param = summary2.summary_params(self, alpha=alpha) + param["FMI"] = self.frac_miss_info + + smry.add_df(param, float_format=float_format) + smry.add_title(title=title, results=self) + + return smry diff --git a/statsmodels/imputation/ros.py b/statsmodels/imputation/ros.py new file mode 100644 index 0000000..1963f19 --- /dev/null +++ b/statsmodels/imputation/ros.py @@ -0,0 +1,590 @@ +""" +Implementation of Regression on Order Statistics for imputing left- +censored (non-detect data) + +Method described in *Nondetects and Data Analysis* by Dennis R. +Helsel (John Wiley, 2005) to estimate the left-censored (non-detect) +values of a dataset. + +Author: Paul M. Hobson +Company: Geosyntec Consultants (Portland, OR) +Date: 2016-06-14 + +""" + +from __future__ import division +import warnings + +import numpy +from scipy import stats +import pandas + + +def _ros_sort(df, observations, censorship, warn=False): + """ + This function prepares a dataframe for ROS. + + It sorts ascending with + left-censored observations first. Censored observations larger than + the maximum uncensored observations are removed from the dataframe. + + Parameters + ---------- + df : pandas.DataFrame + + observations : str + Name of the column in the dataframe that contains observed + values. Censored values should be set to the detection (upper) + limit. + + censorship : str + Name of the column in the dataframe that indicates that a + observation is left-censored. (i.e., True -> censored, + False -> uncensored) + + Returns + ------ + sorted_df : pandas.DataFrame + The sorted dataframe with all columns dropped except the + observation and censorship columns. + + """ + + # separate uncensored data from censored data + censored = df[df[censorship]].sort_values(observations, axis=0) + uncensored = df[~df[censorship]].sort_values(observations, axis=0) + + if censored[observations].max() > uncensored[observations].max(): + censored = censored[censored[observations] <= uncensored[observations].max()] + + if warn: + msg = ("Dropping censored observations greater than " + "the max uncensored observation.") + warnings.warn(msg) + + return censored.append(uncensored)[[observations, censorship]].reset_index(drop=True) + + +def cohn_numbers(df, observations, censorship): + r""" + Computes the Cohn numbers for the detection limits in the dataset. + + The Cohn Numbers are: + + - :math:`A_j =` the number of uncensored obs above the jth + threshold. + - :math:`B_j =` the number of observations (cen & uncen) below + the jth threshold. + - :math:`C_j =` the number of censored observations at the jth + threshold. + - :math:`\mathrm{PE}_j =` the probability of exceeding the jth + threshold + - :math:`\mathrm{DL}_j =` the unique, sorted detection limits + - :math:`\mathrm{DL}_{j+1} = \mathrm{DL}_j` shifted down a + single index (row) + + Parameters + ---------- + dataframe : pandas.DataFrame + + observations : str + Name of the column in the dataframe that contains observed + values. Censored values should be set to the detection (upper) + limit. + + censorship : str + Name of the column in the dataframe that indicates that a + observation is left-censored. (i.e., True -> censored, + False -> uncensored) + + Returns + ------- + cohn : pandas.DataFrame + + """ + + def nuncen_above(row): + """ A, the number of uncensored obs above the given threshold. + """ + + # index of observations above the lower_dl DL + above = df[observations] >= row['lower_dl'] + + # index of observations below the upper_dl DL + below = df[observations] < row['upper_dl'] + + # index of non-detect observations + detect = ~df[censorship] + + # return the number of observations where all conditions are True + return df[above & below & detect].shape[0] + + def nobs_below(row): + """ B, the number of observations (cen & uncen) below the given + threshold + """ + + # index of data less than the lower_dl DL + less_than = df[observations] < row['lower_dl'] + + # index of data less than or equal to the lower_dl DL + less_thanequal = df[observations] <= row['lower_dl'] + + # index of detects, non-detects + uncensored = ~df[censorship] + censored = df[censorship] + + # number observations less than or equal to lower_dl DL and non-detect + LTE_censored = df[less_thanequal & censored].shape[0] + + # number of observations less than lower_dl DL and detected + LT_uncensored = df[less_than & uncensored].shape[0] + + # return the sum + return LTE_censored + LT_uncensored + + def ncen_equal(row): + """ C, the number of censored observations at the given + threshold. + """ + + censored_index = df[censorship] + censored_data = df[observations][censored_index] + censored_below = censored_data == row['lower_dl'] + return censored_below.sum() + + def set_upper_limit(cohn): + """ Sets the upper_dl DL for each row of the Cohn dataframe. """ + if cohn.shape[0] > 1: + return cohn['lower_dl'].shift(-1).fillna(value=numpy.inf) + else: + return [numpy.inf] + + def compute_PE(A, B): + """ Computes the probability of excedance for each row of the + Cohn dataframe. """ + N = len(A) + PE = numpy.empty(N, dtype='float64') + PE[-1] = 0.0 + for j in range(N-2, -1, -1): + PE[j] = PE[j+1] + (1 - PE[j+1]) * A[j] / (A[j] + B[j]) + + return PE + + # unique, sorted detection limts + censored_data = df[censorship] + DLs = pandas.unique(df.loc[censored_data, observations]) + DLs.sort() + + # if there is a observations smaller than the minimum detection limit, + # add that value to the array + if DLs.shape[0] > 0: + if df[observations].min() < DLs.min(): + DLs = numpy.hstack([df[observations].min(), DLs]) + + # create a dataframe + # (editted for pandas 0.14 compatibility; see commit 63f162e + # when `pipe` and `assign` are available) + cohn = pandas.DataFrame(DLs, columns=['lower_dl']) + cohn.loc[:, 'upper_dl'] = set_upper_limit(cohn) + cohn.loc[:, 'nuncen_above'] = cohn.apply(nuncen_above, axis=1) + cohn.loc[:, 'nobs_below'] = cohn.apply(nobs_below, axis=1) + cohn.loc[:, 'ncen_equal'] = cohn.apply(ncen_equal, axis=1) + cohn = cohn.reindex(range(DLs.shape[0] + 1)) + cohn.loc[:, 'prob_exceedance'] = compute_PE(cohn['nuncen_above'], cohn['nobs_below']) + + else: + dl_cols = ['lower_dl', 'upper_dl', 'nuncen_above', + 'nobs_below', 'ncen_equal', 'prob_exceedance'] + cohn = pandas.DataFrame(numpy.empty((0, len(dl_cols))), columns=dl_cols) + + return cohn + + +def _detection_limit_index(obs, cohn): + """ + Locates the corresponding detection limit for each observation. + + Basically, creates an array of indices for the detection limits + (Cohn numbers) corresponding to each data point. + + Parameters + ---------- + obs : float + A single observation from the larger dataset. + + cohn : pandas.DataFrame + Dataframe of Cohn numbers. + + Returns + ------- + det_limit_index : int + The index of the corresponding detection limit in `cohn` + + See Also + -------- + cohn_numbers + + """ + + if cohn.shape[0] > 0: + index, = numpy.where(cohn['lower_dl'] <= obs) + det_limit_index = index[-1] + else: + det_limit_index = 0 + + return det_limit_index + + +def _ros_group_rank(df, dl_idx, censorship): + """ + Ranks each observation within the data groups. + + In this case, the groups are defined by the record's detection + limit index and censorship status. + + Parameters + ---------- + df : pandas.DataFrame + + dl_idx : str + Name of the column in the dataframe the index of the + observations' corresponding detection limit in the `cohn` + dataframe. + + censorship : str + Name of the column in the dataframe that indicates that a + observation is left-censored. (i.e., True -> censored, + False -> uncensored) + + Returns + ------- + ranks : numpy.array + Array of ranks for the dataset. + + """ + + # (editted for pandas 0.14 compatibility; see commit 63f162e + # when `pipe` and `assign` are available) + ranks = df.copy() + ranks.loc[:, 'rank'] = 1 + ranks = ( + ranks.groupby(by=[dl_idx, censorship])['rank'] + .transform(lambda g: g.cumsum()) + ) + return ranks + + +def _ros_plot_pos(row, censorship, cohn): + """ + ROS-specific plotting positions. + + Computes the plotting position for an observation based on its rank, + censorship status, and detection limit index. + + Parameters + ---------- + row : pandas.Series or dict-like + Full observation (row) from a censored dataset. Requires a + 'rank', 'detection_limit', and `censorship` column. + + censorship : str + Name of the column in the dataframe that indicates that a + observation is left-censored. (i.e., True -> censored, + False -> uncensored) + + cohn : pandas.DataFrame + Dataframe of Cohn numbers. + + Returns + ------- + plotting_position : float + + See Also + -------- + cohn_numbers + + """ + + DL_index = row['det_limit_index'] + rank = row['rank'] + censored = row[censorship] + + dl_1 = cohn.iloc[DL_index] + dl_2 = cohn.iloc[DL_index + 1] + if censored: + return (1 - dl_1['prob_exceedance']) * rank / (dl_1['ncen_equal']+1) + else: + return (1 - dl_1['prob_exceedance']) + (dl_1['prob_exceedance'] - dl_2['prob_exceedance']) * \ + rank / (dl_1['nuncen_above']+1) + + +def _norm_plot_pos(observations): + """ + Computes standard normal (Gaussian) plotting positions using scipy. + + Parameters + ---------- + observations : array-like + Sequence of observed quantities. + + Returns + ------- + plotting_position : array of floats + + """ + ppos, sorted_res = stats.probplot(observations, fit=False) + return stats.norm.cdf(ppos) + + +def plotting_positions(df, censorship, cohn): + """ + Compute the plotting positions for the observations. + + The ROS-specific plotting postions are based on the observations' + rank, censorship status, and corresponding detection limit. + + Parameters + ---------- + df : pandas.DataFrame + + censorship : str + Name of the column in the dataframe that indicates that a + observation is left-censored. (i.e., True -> censored, + False -> uncensored) + + cohn : pandas.DataFrame + Dataframe of Cohn numbers. + + Returns + ------- + plotting_position : array of float + + See Also + -------- + cohn_numbers + + """ + + plot_pos = df.apply(lambda r: _ros_plot_pos(r, censorship, cohn), axis=1) + + # correctly sort the plotting positions of the ND data: + ND_plotpos = plot_pos[df[censorship]] + ND_plotpos.values.sort() + plot_pos[df[censorship]] = ND_plotpos + + return plot_pos + + +def _impute(df, observations, censorship, transform_in, transform_out): + """ + Executes the basic regression on order stat (ROS) proceedure. + + Uses ROS to impute censored from the best-fit line of a + probability plot of the uncensored values. + + Parameters + ---------- + df : pandas.DataFrame + observations : str + Name of the column in the dataframe that contains observed + values. Censored values should be set to the detection (upper) + limit. + censorship : str + Name of the column in the dataframe that indicates that a + observation is left-censored. (i.e., True -> censored, + False -> uncensored) + transform_in, transform_out : callable + Transformations to be applied to the data prior to fitting + the line and after estimated values from that line. Typically, + `numpy.log` and `numpy.exp` are used, respectively. + + Returns + ------- + estimated : pandas.DataFrame + A new dataframe with two new columns: "estimated" and "final". + The "estimated" column contains of the values inferred from the + best-fit line. The "final" column contains the estimated values + only where the original observations were censored, and the original + observations everwhere else. + + """ + + # detect/non-detect selectors + uncensored_mask = ~df[censorship] + censored_mask = df[censorship] + + # fit a line to the logs of the detected data + fit_params = stats.linregress( + df['Zprelim'][uncensored_mask], + transform_in(df[observations][uncensored_mask]) + ) + + # pull out the slope and intercept for use later + slope, intercept = fit_params[:2] + + # model the data based on the best-fit curve + # (editted for pandas 0.14 compatibility; see commit 63f162e + # when `pipe` and `assign` are available) + df.loc[:, 'estimated'] = transform_out(slope * df['Zprelim'][censored_mask] + intercept) + df.loc[:, 'final'] = numpy.where(df[censorship], df['estimated'], df[observations]) + + return df + + +def _do_ros(df, observations, censorship, transform_in, transform_out): + """ + Dataframe-centric function to impute censored valies with ROS. + + Prepares a dataframe for, and then esimates the values of a censored + dataset using Regression on Order Statistics + + Parameters + ---------- + df : pandas.DataFrame + + observations : str + Name of the column in the dataframe that contains observed + values. Censored values should be set to the detection (upper) + limit. + + censorship : str + Name of the column in the dataframe that indicates that a + observation is left-censored. (i.e., True -> censored, + False -> uncensored) + + transform_in, transform_out : callable + Transformations to be applied to the data prior to fitting + the line and after estimated values from that line. Typically, + `numpy.log` and `numpy.exp` are used, respectively. + + Returns + ------- + estimated : pandas.DataFrame + A new dataframe with two new columns: "estimated" and "final". + The "estimated" column contains of the values inferred from the + best-fit line. The "final" column contains the estimated values + only where the original observations were censored, and the original + observations everwhere else. + + """ + + # compute the Cohn numbers + cohn = cohn_numbers(df, observations=observations, censorship=censorship) + + # (editted for pandas 0.14 compatibility; see commit 63f162e + # when `pipe` and `assign` are available) + modeled = _ros_sort(df, observations=observations, censorship=censorship) + modeled.loc[:, 'det_limit_index'] = modeled[observations].apply(_detection_limit_index, args=(cohn,)) + modeled.loc[:, 'rank'] = _ros_group_rank(modeled, 'det_limit_index', censorship) + modeled.loc[:, 'plot_pos'] = plotting_positions(modeled, censorship, cohn) + modeled.loc[:, 'Zprelim'] = stats.norm.ppf(modeled['plot_pos']) + + return _impute(modeled, observations, censorship, transform_in, transform_out) + + +def impute_ros(observations, censorship, df=None, min_uncensored=2, + max_fraction_censored=0.8, substitution_fraction=0.5, + transform_in=numpy.log, transform_out=numpy.exp, + as_array=True): + """ + Impute censored dataset using Regression on Order Statistics (ROS). + + Method described in *Nondetects and Data Analysis* by Dennis R. + Helsel (John Wiley, 2005) to estimate the left-censored (non-detect) + values of a dataset. When there is insufficient non-censorded data, + simple substitution is used. + + Parameters + ---------- + observations : str or array-like + Label of the column or the float array of censored observations + + censorship : str + Label of the column or the bool array of the censorship + status of the observations. + + * True if censored, + * False if uncensored + + df : pandas.DataFrame, optional + If `observations` and `censorship` are labels, this is the + DataFrame that contains those columns. + + min_uncensored : int (default is 2) + The minimum number of uncensored values required before ROS + can be used to impute the censored observations. When this + criterion is not met, simple substituion is used instead. + + max_fraction_censored : float (default is 0.8) + The maximum fraction of censored data below which ROS can be + used to impute the censored observations. When this fraction is + exceeded, simple substituion is used instead. + + substitution_fraction : float (default is 0.5) + The fraction of the detection limit to be used during simple + substitution of the censored values. + + transform_in : callable (default is numpy.log) + Transformation to be applied to the values prior to fitting a + line to the plotting positions vs. uncensored values. + + transform_out : callable (default is numpy.exp) + Transformation to be applied to the imputed censored values + estimated from the previously computed best-fit line. + + as_array : bool (default is True) + When True, a numpy array of the imputed observations is + returned. Otherwise, a modified copy of the original dataframe + with all of the intermediate calculations is returned. + + Returns + ------- + imputed : numpy.array (default) or pandas.DataFrame + The final observations where the censored values have either been + imputed through ROS or substituted as a fraction of the + detection limit. + + Notes + ----- + This function requires pandas 0.14 or more recent. + """ + + # process arrays into a dataframe, if necessary + if df is None: + df = pandas.DataFrame({'obs': observations, 'cen': censorship}) + observations = 'obs' + censorship = 'cen' + + # basic counts/metrics of the dataset + N_observations = df.shape[0] + N_censored = df[censorship].astype(int).sum() + N_uncensored = N_observations - N_censored + fraction_censored = N_censored / N_observations + + # add plotting positions if there are no censored values + # (editted for pandas 0.14 compatibility; see commit 63f162e + # when `pipe` and `assign` are available) + if N_censored == 0: + output = df[[observations, censorship]].copy() + output.loc[:, 'final'] = df[observations] + + # substitute w/ fraction of the DLs if there's insufficient + # uncensored data + # (editted for pandas 0.14 compatibility; see commit 63f162e + # when `pipe` and `assign` are available) + elif (N_uncensored < min_uncensored) or (fraction_censored > max_fraction_censored): + output = df[[observations, censorship]].copy() + output.loc[:, 'final'] = df[observations] + output.loc[df[censorship], 'final'] *= substitution_fraction + + + # normal ROS stuff + else: + output = _do_ros(df, observations, censorship, transform_in, transform_out) + + # convert to an array if necessary + if as_array: + output = output['final'].values + + return output diff --git a/statsmodels/imputation/tests/__init__.py b/statsmodels/imputation/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/imputation/tests/test_bayes_mi.py b/statsmodels/imputation/tests/test_bayes_mi.py new file mode 100644 index 0000000..6999cb3 --- /dev/null +++ b/statsmodels/imputation/tests/test_bayes_mi.py @@ -0,0 +1,175 @@ +import numpy as np +import pandas as pd +import statsmodels.api as sm +from statsmodels.imputation.bayes_mi import BayesGaussMI, MI +from numpy.testing import assert_allclose, assert_equal + + +def test_pat(): + + x = np.asarray([[1, np.nan, 3], [np.nan, 2, np.nan], [3, np.nan, 0], + [np.nan, 1, np.nan], [3, 2, 1]]) + bm = BayesGaussMI(x) + assert_allclose(bm.patterns[0], np.r_[0, 2]) + assert_allclose(bm.patterns[1], np.r_[1, 3]) + + +def test_2x2(): + + # Generate correlated data with mean and variance + np.random.seed(3434) + x = np.random.normal(size=(1000, 2)) + r = 0.5 + x[:, 1] = r*x[:, 0] + np.sqrt(1-r**2)*x[:, 1] + x[:, 0] *= 2 + x[:, 1] *= 3 + x[:, 0] += 1 + x[:, 1] -= 2 + + # Introduce some missing values + u = np.random.normal(size=x.shape[0]) + x[u > 1, 0] = np.nan + u = np.random.normal(size=x.shape[0]) + x[u > 1, 1] = np.nan + + bm = BayesGaussMI(x) + + # Burn-in + for k in range(500): + bm.update() + + # Estimate the posterior mean + mean = 0 + cov = 0 + dmean = 0 + dcov = 0 + for k in range(500): + bm.update() + mean += bm.mean + cov += bm.cov + dmean += bm.data.mean(0) + dcov += np.cov(bm.data.T) + mean /= 500 + cov /= 500 + dmean /= 500 + dcov /= 500 + + assert_allclose(mean, np.r_[1, -2], 0.1) + assert_allclose(dmean, np.r_[1, -2], 0.1) + assert_allclose(cov, np.asarray([[4, 6*r], [6*r, 9]]), 0.1) + assert_allclose(dcov, np.asarray([[4, 6*r], [6*r, 9]]), 0.1) + + +def test_MI(): + + np.random.seed(414) + x = np.random.normal(size=(200, 4)) + x[[1, 3, 9], 0] = np.nan + x[[1, 4, 3], 1] = np.nan + x[[2, 11, 21], 2] = np.nan + x[[11, 22, 99], 3] = np.nan + + def model_args_fn(x): + # Return endog, exog + # Regress x0 on x1 and x2 + if type(x) is np.ndarray: + return (x[:, 0], x[:, 1:]) + else: + return (x.iloc[:, 0].values, x.iloc[:, 1:].values) + + for j in (0, 1): + np.random.seed(2342) + imp = BayesGaussMI(x.copy()) + mi = MI(imp, sm.OLS, model_args_fn, burn=0) + r = mi.fit() + r.summary() # smoke test + # TODO: why does the test tolerance need to be so slack? + # There is unexpected variation across versions on travis. + assert_allclose(r.params, np.r_[ + -0.05347919, -0.02479701, 0.10075517], 0.25, 0) + + c = np.asarray([[0.00418232, 0.00029746, -0.00035057], + [0.00029746, 0.00407264, 0.00019496], + [-0.00035057, 0.00019496, 0.00509413]]) + assert_allclose(r.cov_params(), c, 0.3, 0) + + # Test with ndarray and pandas input + x = pd.DataFrame(x) + + +def test_MI_stat(): + # Test for MI where we know statistically what should happen. The + # analysis model is x0 ~ x1 with standard error 1/sqrt(n) for the + # slope parameter. The nominal n is 1000, but half of the cases + # have missing x1. Then we introduce x2 that is either + # independent of x1, or almost perfectly correlated with x1. In + # the first case the SE is 1/sqrt(500), in the second case the SE + # is 1/sqrt(1000). + + np.random.seed(414) + z = np.random.normal(size=(1000, 3)) + z[:, 0] += 0.5*z[:, 1] + + # Control the degree to which x2 proxies for x1 + exp = [1/np.sqrt(500), 1/np.sqrt(1000)] + fmi = [0.5, 0] + for j, r in enumerate((0, 0.9999)): + + x = z.copy() + x[:, 2] = r*x[:, 1] + np.sqrt(1 - r**2)*x[:, 2] + x[0:500, 1] = np.nan + + def model_args(x): + # Return endog, exog + # Regress x1 on x2 + return (x[:, 0], x[:, 1]) + + np.random.seed(2342) + imp = BayesGaussMI(x.copy()) + mi = MI(imp, sm.OLS, model_args, nrep=100, skip=10) + r = mi.fit() + + # Check the SE + d = np.abs(r.bse[0] - exp[j]) / exp[j] + assert(d < 0.03) + + # Check the FMI + d = np.abs(r.fmi[0] - fmi[j]) + assert(d < 0.05) + + +def test_mi_formula(): + + np.random.seed(414) + x = np.random.normal(size=(200, 4)) + x[[1, 3, 9], 0] = np.nan + x[[1, 4, 3], 1] = np.nan + x[[2, 11, 21], 2] = np.nan + x[[11, 22, 99], 3] = np.nan + df = pd.DataFrame({"y": x[:, 0], "x1": x[:, 1], + "x2": x[:, 2], "x3": x[:, 3]}) + fml = "y ~ 0 + x1 + x2 + x3" + + def model_kwds_fn(x): + return {"data": x} + + np.random.seed(2342) + imp = BayesGaussMI(df.copy()) + mi = MI(imp, sm.OLS, formula=fml, burn=0, + model_kwds_fn=model_kwds_fn) + + results_cb = lambda x: x + + r = mi.fit(results_cb=results_cb) + r.summary() # smoke test + # TODO: why does the test tolerance need to be so slack? + # There is unexpected variation across versions on travis. + assert_allclose(r.params, np.r_[ + -0.05347919, -0.02479701, 0.10075517], 0.25, 0) + + c = np.asarray([[0.00418232, 0.00029746, -0.00035057], + [0.00029746, 0.00407264, 0.00019496], + [-0.00035057, 0.00019496, 0.00509413]]) + assert_allclose(r.cov_params(), c, 0.3, 0) + + assert_equal(len(r.results), 20) diff --git a/statsmodels/imputation/tests/test_mice.py b/statsmodels/imputation/tests/test_mice.py new file mode 100644 index 0000000..17a3895 --- /dev/null +++ b/statsmodels/imputation/tests/test_mice.py @@ -0,0 +1,399 @@ +import numpy as np +import pandas as pd +import pytest +from statsmodels.imputation import mice +import statsmodels.api as sm +from numpy.testing import assert_equal, assert_allclose +import warnings + +try: + import matplotlib.pyplot as plt +except ImportError: + pass + +pdf_output = False + + +if pdf_output: + from matplotlib.backends.backend_pdf import PdfPages + pdf = PdfPages("test_mice.pdf") +else: + pdf = None + + +def close_or_save(pdf, fig): + if pdf_output: + pdf.savefig(fig) + + +def teardown_module(): + if pdf_output: + pdf.close() + + +def gendat(): + """ + Create a data set with missing values. + """ + + np.random.seed(34243) + + n = 200 + p = 5 + + exog = np.random.normal(size=(n, p)) + exog[:, 0] = exog[:, 1] - exog[:, 2] + 2*exog[:, 4] + exog[:, 0] += np.random.normal(size=n) + exog[:, 2] = 1*(exog[:, 2] > 0) + + endog = exog.sum(1) + np.random.normal(size=n) + + df = pd.DataFrame(exog) + df.columns = ["x%d" % k for k in range(1, p+1)] + + df["y"] = endog + + df.x1[0:60] = np.nan + df.x2[0:40] = np.nan + df.x3[10:30:2] = np.nan + df.x4[20:50:3] = np.nan + df.x5[40:45] = np.nan + df.y[30:100:2] = np.nan + + return df + + +class TestMICEData(object): + + def test_default(self): + # Test with all defaults. + + df = gendat() + orig = df.copy() + mx = pd.notnull(df) + imp_data = mice.MICEData(df) + nrow, ncol = df.shape + + assert_allclose(imp_data.ix_miss['x1'], np.arange(60)) + assert_allclose(imp_data.ix_obs['x1'], np.arange(60, 200)) + assert_allclose(imp_data.ix_miss['x2'], np.arange(40)) + assert_allclose(imp_data.ix_miss['x3'], np.arange(10, 30, 2)) + assert_allclose(imp_data.ix_obs['x3'], + np.concatenate((np.arange(10), + np.arange(11, 30, 2), + np.arange(30, 200)))) + assert_equal([set(imp_data.data[col]) for col in imp_data.data], + [set(df[col].dropna()) for col in df]) + + for k in range(3): + imp_data.update_all() + assert_equal(imp_data.data.shape[0], nrow) + assert_equal(imp_data.data.shape[1], ncol) + assert_allclose(orig[mx], imp_data.data[mx]) + assert_equal([set(imp_data.data[col]) for col in imp_data.data], + [set(df[col].dropna()) for col in df]) + + fml = 'x1 ~ x2 + x3 + x4 + x5 + y' + assert_equal(imp_data.conditional_formula['x1'], fml) + + assert_equal(imp_data._cycle_order, ['x5', 'x3', 'x4', 'y', 'x2', 'x1']) + + # Should make a copy + assert(not (df is imp_data.data)) + + (endog_obs, exog_obs, exog_miss, + predict_obs_kwds, predict_miss_kwds) = imp_data.get_split_data('x3') + assert_equal(len(endog_obs), 190) + assert_equal(exog_obs.shape, [190, 6]) + assert_equal(exog_miss.shape, [10, 6]) + + def test_settingwithcopywarning(self): + "Test that MICEData does not throw a SettingWithCopyWarning when imputing (https://github.com/statsmodels/statsmodels/issues/5430)" + + df = gendat() + # There need to be some ints in here for the error to be thrown + df['intcol'] = np.arange(len(df)) + df['intcol'] = df.intcol.astype('int32') + + miceData = mice.MICEData(df) + + with pd.option_context('mode.chained_assignment', 'warn'): + with warnings.catch_warnings(record=True) as ws: + warnings.simplefilter('always') + miceData.update_all() + + # on Python 3.4, throws warning + # "DeprecationWarning('pandas.core.common.is_categorical_dtype is deprecated. import from the public API: + # pandas.api.types.is_categorical_dtype instead',)" + # ignore this warning, as this is not what is being tested in this test + assert ((len(ws) == 0) or all([w.category == DeprecationWarning for w in ws])) + + def test_next_sample(self): + + df = gendat() + imp_data = mice.MICEData(df) + + all_x = [] + for j in range(2): + x = imp_data.next_sample() + assert(isinstance(x, pd.DataFrame)) + assert_equal(df.shape, x.shape) + all_x.append(x) + + # The returned dataframes are all the same object + assert(all_x[0] is all_x[1]) + + + def test_pertmeth(self): + # Test with specified perturbation method. + + df = gendat() + orig = df.copy() + mx = pd.notnull(df) + nrow, ncol = df.shape + + for pert_meth in "gaussian", "boot": + + imp_data = mice.MICEData(df, perturbation_method=pert_meth) + + for k in range(2): + imp_data.update_all() + assert_equal(imp_data.data.shape[0], nrow) + assert_equal(imp_data.data.shape[1], ncol) + assert_allclose(orig[mx], imp_data.data[mx]) + + assert_equal(imp_data._cycle_order, ['x5', 'x3', 'x4', 'y', 'x2', 'x1']) + + + def test_phreg(self): + + np.random.seed(8742) + n = 300 + x1 = np.random.normal(size=n) + x2 = np.random.normal(size=n) + event_time = np.random.exponential(size=n) * np.exp(x1) + obs_time = np.random.exponential(size=n) + time = np.where(event_time < obs_time, event_time, obs_time) + status = np.where(time == event_time, 1, 0) + df = pd.DataFrame({"time": time, "status": status, "x1": x1, "x2": x2}) + df.loc[10:40, 'time'] = np.nan + df.loc[10:40, 'status'] = np.nan + df.loc[30:50, 'x1'] = np.nan + df.loc[40:60, 'x2'] = np.nan + + from statsmodels.duration.hazard_regression import PHReg + + # Save the dataset size at each iteration. + hist = [] + + def cb(imp): + hist.append(imp.data.shape) + + for pm in "gaussian", "boot": + idata = mice.MICEData(df, perturbation_method=pm, history_callback=cb) + idata.set_imputer("time", "0 + x1 + x2", model_class=PHReg, + init_kwds={"status": mice.PatsyFormula("status")}, + predict_kwds={"pred_type": "hr"}, + perturbation_method=pm) + + x = idata.next_sample() + assert(isinstance(x, pd.DataFrame)) + + assert(all([val == (299, 4) for val in hist])) + + def test_set_imputer(self): + # Test with specified perturbation method. + + from statsmodels.regression.linear_model import RegressionResultsWrapper + from statsmodels.genmod.generalized_linear_model import GLMResultsWrapper + + df = gendat() + orig = df.copy() + mx = pd.notnull(df) + nrow, ncol = df.shape + + imp_data = mice.MICEData(df) + imp_data.set_imputer('x1', 'x3 + x4 + x3*x4') + imp_data.set_imputer('x2', 'x4 + I(x5**2)') + imp_data.set_imputer('x3', model_class=sm.GLM, + init_kwds={"family": sm.families.Binomial()}) + + imp_data.update_all() + assert_equal(imp_data.data.shape[0], nrow) + assert_equal(imp_data.data.shape[1], ncol) + assert_allclose(orig[mx], imp_data.data[mx]) + for j in range(1, 6): + if j == 3: + assert_equal(isinstance(imp_data.models['x3'], sm.GLM), True) + assert_equal(isinstance(imp_data.models['x3'].family, sm.families.Binomial), True) + assert_equal(isinstance(imp_data.results['x3'], GLMResultsWrapper), True) + else: + assert_equal(isinstance(imp_data.models['x%d' % j], sm.OLS), True) + assert_equal(isinstance(imp_data.results['x%d' % j], RegressionResultsWrapper), True) + + fml = 'x1 ~ x3 + x4 + x3*x4' + assert_equal(imp_data.conditional_formula['x1'], fml) + + fml = 'x4 ~ x1 + x2 + x3 + x5 + y' + assert_equal(imp_data.conditional_formula['x4'], fml) + + assert_equal(imp_data._cycle_order, ['x5', 'x3', 'x4', 'y', 'x2', 'x1']) + + + @pytest.mark.matplotlib + def test_plot_missing_pattern(self, close_figures): + + df = gendat() + imp_data = mice.MICEData(df) + + for row_order in "pattern", "raw": + for hide_complete_rows in False, True: + for color_row_patterns in False, True: + plt.clf() + fig = imp_data.plot_missing_pattern(row_order=row_order, + hide_complete_rows=hide_complete_rows, + color_row_patterns=color_row_patterns) + close_or_save(pdf, fig) + close_figures() + + + @pytest.mark.matplotlib + def test_plot_bivariate(self, close_figures): + + df = gendat() + imp_data = mice.MICEData(df) + imp_data.update_all() + + plt.clf() + for plot_points in False, True: + fig = imp_data.plot_bivariate('x2', 'x4', plot_points=plot_points) + fig.get_axes()[0].set_title('plot_bivariate') + close_or_save(pdf, fig) + close_figures() + + + @pytest.mark.matplotlib + def test_fit_obs(self, close_figures): + + df = gendat() + imp_data = mice.MICEData(df) + imp_data.update_all() + + plt.clf() + for plot_points in False, True: + fig = imp_data.plot_fit_obs('x4', plot_points=plot_points) + fig.get_axes()[0].set_title('plot_fit_scatterplot') + close_or_save(pdf, fig) + close_figures() + + + @pytest.mark.matplotlib + def test_plot_imputed_hist(self, close_figures): + + df = gendat() + imp_data = mice.MICEData(df) + imp_data.update_all() + + plt.clf() + for plot_points in False, True: + fig = imp_data.plot_imputed_hist('x4') + fig.get_axes()[0].set_title('plot_imputed_hist') + close_or_save(pdf, fig) + close_figures() + + +class TestMICE(object): + + def test_MICE(self): + + df = gendat() + imp_data = mice.MICEData(df) + mi = mice.MICE("y ~ x1 + x2 + x1:x2", sm.OLS, imp_data) + result = mi.fit(1, 3) + + assert(issubclass(result.__class__, mice.MICEResults)) + + # Smoke test for results + smr = result.summary() + + + def test_MICE1(self): + + df = gendat() + imp_data = mice.MICEData(df) + mi = mice.MICE("y ~ x1 + x2 + x1:x2", sm.OLS, imp_data) + + from statsmodels.regression.linear_model import RegressionResultsWrapper + + for j in range(3): + x = mi.next_sample() + assert(issubclass(x.__class__, RegressionResultsWrapper)) + + + def test_MICE1_regularized(self): + + df = gendat() + imp = mice.MICEData(df, perturbation_method='boot') + imp.set_imputer('x1', 'x2 + y', fit_kwds={'alpha': 1, 'L1_wt': 0}) + imp.update_all() + + + def test_MICE2(self): + + from statsmodels.genmod.generalized_linear_model import GLMResultsWrapper + + df = gendat() + imp_data = mice.MICEData(df) + mi = mice.MICE("x3 ~ x1 + x2", sm.GLM, imp_data, + init_kwds={"family": sm.families.Binomial()}) + + for j in range(3): + x = mi.next_sample() + assert(isinstance(x, GLMResultsWrapper)) + assert(isinstance(x.family, sm.families.Binomial)) + + @pytest.mark.slow + def test_combine(self): + + np.random.seed(3897) + x1 = np.random.normal(size=300) + x2 = np.random.normal(size=300) + y = x1 + x2 + np.random.normal(size=300) + x1[0:100] = np.nan + x2[250:] = np.nan + df = pd.DataFrame({"x1": x1, "x2": x2, "y": y}) + idata = mice.MICEData(df) + mi = mice.MICE("y ~ x1 + x2", sm.OLS, idata, n_skip=20) + result = mi.fit(10, 20) + + fmi = np.asarray([0.1778143, 0.11057262, 0.29626521]) + assert_allclose(result.frac_miss_info, fmi, atol=1e-5) + + params = np.asarray([-0.03486102, 0.96236808, 0.9970371]) + assert_allclose(result.params, params, atol=1e-5) + + tvalues = np.asarray([-0.54674776, 15.28091069, 13.61359403]) + assert_allclose(result.tvalues, tvalues, atol=1e-5) + + +def test_micedata_miss1(): + # test for #4375 + np.random.seed(0) + data = pd.DataFrame(np.random.rand(50, 4)) + data.columns = ['var1', 'var2', 'var3', 'var4'] + # one column with a single missing value + data.iloc[1, 1] = np.nan + data.iloc[[1, 3], 2] = np.nan + + data_imp = mice.MICEData(data) + data_imp.update_all() + + assert_equal(data_imp.data.isnull().values.sum(), 0) + + ix_miss = {'var1': np.array([], dtype=np.int64), + 'var2': np.array([1], dtype=np.int64), + 'var3': np.array([1, 3], dtype=np.int64), + 'var4': np.array([], dtype=np.int64)} + + for k in ix_miss: + assert_equal(data_imp.ix_miss[k], ix_miss[k]) diff --git a/statsmodels/imputation/tests/test_ros.py b/statsmodels/imputation/tests/test_ros.py new file mode 100644 index 0000000..eee5ca8 --- /dev/null +++ b/statsmodels/imputation/tests/test_ros.py @@ -0,0 +1,654 @@ +from __future__ import division + +from textwrap import dedent + +import numpy.testing as npt +import pandas.util.testing as pdtest + +import numpy +from numpy.testing import assert_equal +import pandas +import pytest + +from statsmodels.imputation import ros +from statsmodels.compat.python import StringIO + + +def load_basic_data(): + raw_csv = StringIO( + "res,qual\n2.00,=\n4.20,=\n4.62,=\n5.00,ND\n5.00,ND\n5.50,ND\n" + "5.57,=\n5.66,=\n5.75,ND\n5.86,=\n6.65,=\n6.78,=\n6.79,=\n7.50,=\n" + "7.50,=\n7.50,=\n8.63,=\n8.71,=\n8.99,=\n9.50,ND\n9.50,ND\n9.85,=\n" + "10.82,=\n11.00,ND\n11.25,=\n11.25,=\n12.20,=\n14.92,=\n16.77,=\n" + "17.81,=\n19.16,=\n19.19,=\n19.64,=\n20.18,=\n22.97,=\n" + ) + df = pandas.read_csv(raw_csv) + df.loc[:, 'conc'] = df['res'] + df.loc[:, 'censored'] = df['qual'] == 'ND' + + return df + + +def load_intermediate_data(): + df = pandas.DataFrame([ + {'censored': True, 'conc': 5.0, 'det_limit_index': 1, 'rank': 1}, + {'censored': True, 'conc': 5.0, 'det_limit_index': 1, 'rank': 2}, + {'censored': True, 'conc': 5.5, 'det_limit_index': 2, 'rank': 1}, + {'censored': True, 'conc': 5.75, 'det_limit_index': 3, 'rank': 1}, + {'censored': True, 'conc': 9.5, 'det_limit_index': 4, 'rank': 1}, + {'censored': True, 'conc': 9.5, 'det_limit_index': 4, 'rank': 2}, + {'censored': True, 'conc': 11.0, 'det_limit_index': 5, 'rank': 1}, + {'censored': False, 'conc': 2.0, 'det_limit_index': 0, 'rank': 1}, + {'censored': False, 'conc': 4.2, 'det_limit_index': 0, 'rank': 2}, + {'censored': False, 'conc': 4.62, 'det_limit_index': 0, 'rank': 3}, + {'censored': False, 'conc': 5.57, 'det_limit_index': 2, 'rank': 1}, + {'censored': False, 'conc': 5.66, 'det_limit_index': 2, 'rank': 2}, + {'censored': False, 'conc': 5.86, 'det_limit_index': 3, 'rank': 1}, + {'censored': False, 'conc': 6.65, 'det_limit_index': 3, 'rank': 2}, + {'censored': False, 'conc': 6.78, 'det_limit_index': 3, 'rank': 3}, + {'censored': False, 'conc': 6.79, 'det_limit_index': 3, 'rank': 4}, + {'censored': False, 'conc': 7.5, 'det_limit_index': 3, 'rank': 5}, + {'censored': False, 'conc': 7.5, 'det_limit_index': 3, 'rank': 6}, + {'censored': False, 'conc': 7.5, 'det_limit_index': 3, 'rank': 7}, + {'censored': False, 'conc': 8.63, 'det_limit_index': 3, 'rank': 8}, + {'censored': False, 'conc': 8.71, 'det_limit_index': 3, 'rank': 9}, + {'censored': False, 'conc': 8.99, 'det_limit_index': 3, 'rank': 10}, + {'censored': False, 'conc': 9.85, 'det_limit_index': 4, 'rank': 1}, + {'censored': False, 'conc': 10.82, 'det_limit_index': 4, 'rank': 2}, + {'censored': False, 'conc': 11.25, 'det_limit_index': 5, 'rank': 1}, + {'censored': False, 'conc': 11.25, 'det_limit_index': 5, 'rank': 2}, + {'censored': False, 'conc': 12.2, 'det_limit_index': 5, 'rank': 3}, + {'censored': False, 'conc': 14.92, 'det_limit_index': 5, 'rank': 4}, + {'censored': False, 'conc': 16.77, 'det_limit_index': 5, 'rank': 5}, + {'censored': False, 'conc': 17.81, 'det_limit_index': 5, 'rank': 6}, + {'censored': False, 'conc': 19.16, 'det_limit_index': 5, 'rank': 7}, + {'censored': False, 'conc': 19.19, 'det_limit_index': 5, 'rank': 8}, + {'censored': False, 'conc': 19.64, 'det_limit_index': 5, 'rank': 9}, + {'censored': False, 'conc': 20.18, 'det_limit_index': 5, 'rank': 10}, + {'censored': False, 'conc': 22.97, 'det_limit_index': 5, 'rank': 11} + ]) + + return df + + +def load_advanced_data(): + df = pandas.DataFrame([ + {'Zprelim': -1.4456202174142005, 'censored': True, 'conc': 5.0, + 'det_limit_index': 1, 'plot_pos': 0.07414187643020594, 'rank': 1}, + {'Zprelim': -1.2201035333697587, 'censored': True, 'conc': 5.0, + 'det_limit_index': 1, 'plot_pos': 0.11121281464530891, 'rank': 2}, + {'Zprelim': -1.043822530159519, 'censored': True, 'conc': 5.5, + 'det_limit_index': 2, 'plot_pos': 0.14828375286041187, 'rank': 1}, + {'Zprelim': -1.0438225301595188, 'censored': True, 'conc': 5.75, + 'det_limit_index': 3, 'plot_pos': 0.1482837528604119, 'rank': 1}, + {'Zprelim': -0.8109553641377003, 'censored': True, 'conc': 9.5, + 'det_limit_index': 4, 'plot_pos': 0.20869565217391303, 'rank': 1}, + {'Zprelim': -0.4046779045300476, 'censored': True, 'conc': 9.5, + 'det_limit_index': 4, 'plot_pos': 0.34285714285714286, 'rank': 2}, + {'Zprelim': -0.20857169501420522, 'censored': True, 'conc': 11.0, + 'det_limit_index': 5, 'plot_pos': 0.41739130434782606, 'rank': 1}, + {'Zprelim': -1.5927654676048002, 'censored': False, 'conc': 2.0, + 'det_limit_index': 0, 'plot_pos': 0.055606407322654455, 'rank': 1}, + {'Zprelim': -1.2201035333697587, 'censored': False, 'conc': 4.2, + 'det_limit_index': 0, 'plot_pos': 0.11121281464530891, 'rank': 2}, + {'Zprelim': -0.9668111610681008, 'censored': False, 'conc': 4.62, + 'det_limit_index': 0, 'plot_pos': 0.16681922196796337, 'rank': 3}, + {'Zprelim': -0.6835186393930371, 'censored': False, 'conc': 5.57, + 'det_limit_index': 2, 'plot_pos': 0.24713958810068648, 'rank': 1}, + {'Zprelim': -0.6072167256926887, 'censored': False, 'conc': 5.66, + 'det_limit_index': 2, 'plot_pos': 0.27185354691075514, 'rank': 2}, + {'Zprelim': -0.44953240276543616, 'censored': False, 'conc': 5.86, + 'det_limit_index': 3, 'plot_pos': 0.3265238194299979, 'rank': 1}, + {'Zprelim': -0.36788328223414807, 'censored': False, 'conc': 6.65, + 'det_limit_index': 3, 'plot_pos': 0.35648013313917204, 'rank': 2}, + {'Zprelim': -0.28861907892223937, 'censored': False, 'conc': 6.78, + 'det_limit_index': 3, 'plot_pos': 0.38643644684834616, 'rank': 3}, + {'Zprelim': -0.21113039741112186, 'censored': False, 'conc': 6.79, + 'det_limit_index': 3, 'plot_pos': 0.4163927605575203, 'rank': 4}, + {'Zprelim': -0.1348908823006299, 'censored': False, 'conc': 7.5, + 'det_limit_index': 3, 'plot_pos': 0.4463490742666944, 'rank': 5}, + {'Zprelim': -0.05942854708257491, 'censored': False, 'conc': 7.5, + 'det_limit_index': 3, 'plot_pos': 0.4763053879758685, 'rank': 6}, + {'Zprelim': 0.015696403006170083, 'censored': False, 'conc': 7.5, + 'det_limit_index': 3, 'plot_pos': 0.5062617016850427, 'rank': 7}, + {'Zprelim': 0.09091016994359362, 'censored': False, 'conc': 8.63, + 'det_limit_index': 3, 'plot_pos': 0.5362180153942168, 'rank': 8}, + {'Zprelim': 0.16664251178856201, 'censored': False, 'conc': 8.71, + 'det_limit_index': 3, 'plot_pos': 0.5661743291033909, 'rank': 9}, + {'Zprelim': 0.24334426739770573, 'censored': False, 'conc': 8.99, + 'det_limit_index': 3, 'plot_pos': 0.596130642812565, 'rank': 10}, + {'Zprelim': 0.3744432988606558, 'censored': False, 'conc': 9.85, + 'det_limit_index': 4, 'plot_pos': 0.6459627329192545, 'rank': 1}, + {'Zprelim': 0.4284507519609981, 'censored': False, 'conc': 10.82, + 'det_limit_index': 4, 'plot_pos': 0.6658385093167701, 'rank': 2}, + {'Zprelim': 0.5589578655042562, 'censored': False, 'conc': 11.25, + 'det_limit_index': 5, 'plot_pos': 0.7119047619047619, 'rank': 1}, + {'Zprelim': 0.6374841609623771, 'censored': False, 'conc': 11.25, + 'det_limit_index': 5, 'plot_pos': 0.7380952380952381, 'rank': 2}, + {'Zprelim': 0.7201566171385521, 'censored': False, 'conc': 12.2, + 'det_limit_index': 5, 'plot_pos': 0.7642857142857142, 'rank': 3}, + {'Zprelim': 0.8080746339118065, 'censored': False, 'conc': 14.92, + 'det_limit_index': 5, 'plot_pos': 0.7904761904761904, 'rank': 4}, + {'Zprelim': 0.9027347916438648, 'censored': False, 'conc': 16.77, + 'det_limit_index': 5, 'plot_pos': 0.8166666666666667, 'rank': 5}, + {'Zprelim': 1.0062699858608395, 'censored': False, 'conc': 17.81, + 'det_limit_index': 5, 'plot_pos': 0.8428571428571429, 'rank': 6}, + {'Zprelim': 1.1219004674623523, 'censored': False, 'conc': 19.16, + 'det_limit_index': 5, 'plot_pos': 0.8690476190476191, 'rank': 7}, + {'Zprelim': 1.2548759122271174, 'censored': False, 'conc': 19.19, + 'det_limit_index': 5, 'plot_pos': 0.8952380952380953, 'rank': 8}, + {'Zprelim': 1.414746425534976, 'censored': False, 'conc': 19.64, + 'det_limit_index': 5, 'plot_pos': 0.9214285714285714, 'rank': 9}, + {'Zprelim': 1.622193585315426, 'censored': False, 'conc': 20.18, + 'det_limit_index': 5, 'plot_pos': 0.9476190476190476, 'rank': 10}, + {'Zprelim': 1.9399896117517081, 'censored': False, 'conc': 22.97, + 'det_limit_index': 5, 'plot_pos': 0.9738095238095239, 'rank': 11} + ]) + + return df + + +def load_basic_cohn(): + cohn = pandas.DataFrame([ + {'lower_dl': 2.0, 'ncen_equal': 0.0, 'nobs_below': 0.0, + 'nuncen_above': 3.0, 'prob_exceedance': 1.0, 'upper_dl': 5.0}, + {'lower_dl': 5.0, 'ncen_equal': 2.0, 'nobs_below': 5.0, + 'nuncen_above': 0.0, 'prob_exceedance': 0.77757437070938218, 'upper_dl': 5.5}, + {'lower_dl': 5.5, 'ncen_equal': 1.0, 'nobs_below': 6.0, + 'nuncen_above': 2.0, 'prob_exceedance': 0.77757437070938218, 'upper_dl': 5.75}, + {'lower_dl': 5.75, 'ncen_equal': 1.0, 'nobs_below': 9.0, + 'nuncen_above': 10.0, 'prob_exceedance': 0.7034324942791762, 'upper_dl': 9.5}, + {'lower_dl': 9.5, 'ncen_equal': 2.0, 'nobs_below': 21.0, + 'nuncen_above': 2.0, 'prob_exceedance': 0.37391304347826088, 'upper_dl': 11.0}, + {'lower_dl': 11.0, 'ncen_equal': 1.0, 'nobs_below': 24.0, + 'nuncen_above': 11.0, 'prob_exceedance': 0.31428571428571428, 'upper_dl': numpy.inf}, + {'lower_dl': numpy.nan, 'ncen_equal': numpy.nan, 'nobs_below': numpy.nan, + 'nuncen_above': numpy.nan, 'prob_exceedance': 0.0, 'upper_dl': numpy.nan} + ]) + return cohn + + +class Test__ros_sort(object): + def setup(self): + self.df = load_basic_data() + + self.expected_baseline = pandas.DataFrame([ + {'censored': True, 'conc': 5.0}, {'censored': True, 'conc': 5.0}, + {'censored': True, 'conc': 5.5}, {'censored': True, 'conc': 5.75}, + {'censored': True, 'conc': 9.5}, {'censored': True, 'conc': 9.5}, + {'censored': True, 'conc': 11.0}, {'censored': False, 'conc': 2.0}, + {'censored': False, 'conc': 4.2}, {'censored': False, 'conc': 4.62}, + {'censored': False, 'conc': 5.57}, {'censored': False, 'conc': 5.66}, + {'censored': False, 'conc': 5.86}, {'censored': False, 'conc': 6.65}, + {'censored': False, 'conc': 6.78}, {'censored': False, 'conc': 6.79}, + {'censored': False, 'conc': 7.5}, {'censored': False, 'conc': 7.5}, + {'censored': False, 'conc': 7.5}, {'censored': False, 'conc': 8.63}, + {'censored': False, 'conc': 8.71}, {'censored': False, 'conc': 8.99}, + {'censored': False, 'conc': 9.85}, {'censored': False, 'conc': 10.82}, + {'censored': False, 'conc': 11.25}, {'censored': False, 'conc': 11.25}, + {'censored': False, 'conc': 12.2}, {'censored': False, 'conc': 14.92}, + {'censored': False, 'conc': 16.77}, {'censored': False, 'conc': 17.81}, + {'censored': False, 'conc': 19.16}, {'censored': False, 'conc': 19.19}, + {'censored': False, 'conc': 19.64}, {'censored': False, 'conc': 20.18}, + {'censored': False, 'conc': 22.97}, + ])[['conc', 'censored']] + + self.expected_with_warning = self.expected_baseline.iloc[:-1] + + def test_baseline(self): + result = ros._ros_sort(self.df, 'conc', 'censored') + pdtest.assert_frame_equal(result, self.expected_baseline) + + def test_censored_greater_than_max(self): + df = self.df.copy() + max_row = df['conc'].idxmax() + df.loc[max_row, 'censored'] = True + result = ros._ros_sort(df, 'conc', 'censored') + pdtest.assert_frame_equal(result, self.expected_with_warning) + + +class Test_cohn_numbers(object): + def setup(self): + self.df = load_basic_data() + self.final_cols = ['lower_dl', 'upper_dl', 'nuncen_above', 'nobs_below', + 'ncen_equal', 'prob_exceedance'] + + self.expected_baseline = pandas.DataFrame([ + {'lower_dl': 2.0, 'ncen_equal': 0.0, 'nobs_below': 0.0, + 'nuncen_above': 3.0, 'prob_exceedance': 1.0, 'upper_dl': 5.0}, + {'lower_dl': 5.0, 'ncen_equal': 2.0, 'nobs_below': 5.0, + 'nuncen_above': 0.0, 'prob_exceedance': 0.77757437070938218, 'upper_dl': 5.5}, + {'lower_dl': 5.5, 'ncen_equal': 1.0, 'nobs_below': 6.0, + 'nuncen_above': 2.0, 'prob_exceedance': 0.77757437070938218, 'upper_dl': 5.75}, + {'lower_dl': 5.75, 'ncen_equal': 1.0, 'nobs_below': 9.0, + 'nuncen_above': 10.0, 'prob_exceedance': 0.7034324942791762, 'upper_dl': 9.5}, + {'lower_dl': 9.5, 'ncen_equal': 2.0, 'nobs_below': 21.0, + 'nuncen_above': 2.0, 'prob_exceedance': 0.37391304347826088, 'upper_dl': 11.0}, + {'lower_dl': 11.0, 'ncen_equal': 1.0, 'nobs_below': 24.0, + 'nuncen_above': 11.0, 'prob_exceedance': 0.31428571428571428, 'upper_dl': numpy.inf}, + {'lower_dl': numpy.nan, 'ncen_equal': numpy.nan, 'nobs_below': numpy.nan, + 'nuncen_above': numpy.nan, 'prob_exceedance': 0.0, 'upper_dl': numpy.nan} + ])[self.final_cols] + + + def test_baseline(self): + result = ros.cohn_numbers(self.df, observations='conc', censorship='censored') + pdtest.assert_frame_equal(result, self.expected_baseline) + + def test_no_NDs(self): + _df = self.df.copy() + _df['qual'] = False + result = ros.cohn_numbers(_df, observations='conc', censorship='qual') + assert result.shape == (0, 6) + + +class Test__detection_limit_index(object): + def setup(self): + self.cohn = load_basic_cohn() + self.empty_cohn = pandas.DataFrame(numpy.empty((0, 7))) + + def test_empty(self): + assert_equal(ros._detection_limit_index(None, self.empty_cohn), 0) + + def test_populated(self): + assert_equal(ros._detection_limit_index(3.5, self.cohn), 0) + assert_equal(ros._detection_limit_index(6.0, self.cohn), 3) + assert_equal(ros._detection_limit_index(12.0, self.cohn), 5) + + def test_out_of_bounds(self): + with pytest.raises(IndexError): + ros._detection_limit_index(0, self.cohn) + + +def test__ros_group_rank(): + df = pandas.DataFrame({ + 'dl_idx': [1] * 12, + 'params': list('AABCCCDE') + list('DCBA'), + 'values': list(range(12)) + }) + + result = ros._ros_group_rank(df, 'dl_idx', 'params') + expected = pandas.Series([1, 2, 1, 1, 2, 3, 1, 1, 2, 4, 2, 3], name='rank') + pdtest.assert_series_equal(result.astype(int), expected.astype(int)) + + +class Test__ros_plot_pos(object): + def setup(self): + self.cohn = load_basic_cohn() + + def test_uncensored_1(self): + row = {'censored': False, 'det_limit_index': 2, 'rank': 1} + result = ros._ros_plot_pos(row, 'censored', self.cohn) + assert_equal(result, 0.24713958810068648) + + def test_uncensored_2(self): + row = {'censored': False, 'det_limit_index': 2, 'rank': 12} + result = ros._ros_plot_pos(row, 'censored', self.cohn) + assert_equal(result, 0.51899313501144173) + + def test_censored_1(self): + row = {'censored': True, 'det_limit_index': 5, 'rank': 4} + result = ros._ros_plot_pos(row, 'censored', self.cohn) + assert_equal(result, 1.3714285714285714) + + def test_censored_2(self): + row = {'censored': True, 'det_limit_index': 4, 'rank': 2} + result = ros._ros_plot_pos(row, 'censored', self.cohn) + assert_equal(result, 0.41739130434782606) + + +def test__norm_plot_pos(): + result = ros._norm_plot_pos([1, 2, 3, 4]) + expected = numpy.array([ 0.159104, 0.385452, 0.614548, 0.840896]) + npt.assert_array_almost_equal(result, expected) + + +def test_plotting_positions(): + df = load_intermediate_data() + cohn = load_basic_cohn() + + results = ros.plotting_positions(df, 'censored', cohn) + expected = numpy.array([ + 0.07414188, 0.11121281, 0.14828375, 0.14828375, 0.20869565, + 0.34285714, 0.4173913 , 0.05560641, 0.11121281, 0.16681922, + 0.24713959, 0.27185355, 0.32652382, 0.35648013, 0.38643645, + 0.41639276, 0.44634907, 0.47630539, 0.5062617 , 0.53621802, + 0.56617433, 0.59613064, 0.64596273, 0.66583851, 0.71190476, + 0.73809524, 0.76428571, 0.79047619, 0.81666667, 0.84285714, + 0.86904762, 0.8952381 , 0.92142857, 0.94761905, 0.97380952 + ]) + npt.assert_array_almost_equal(results, expected) + + +def test__impute(): + expected = numpy.array([ + 3.11279729, 3.60634338, 4.04602788, 4.04602788, + 4.71008116, 6.14010906, 6.97841457, 2. , + 4.2 , 4.62 , 5.57 , 5.66 , + 5.86 , 6.65 , 6.78 , 6.79 , + 7.5 , 7.5 , 7.5 , 8.63 , + 8.71 , 8.99 , 9.85 , 10.82 , + 11.25 , 11.25 , 12.2 , 14.92 , + 16.77 , 17.81 , 19.16 , 19.19 , + 19.64 , 20.18 , 22.97 + ]) + df = load_advanced_data() + df = ros._impute(df, 'conc', 'censored', numpy.log, numpy.exp) + result = df['final'].values + npt.assert_array_almost_equal(result, expected) + + +def test__do_ros(): + expected = numpy.array([ + 3.11279729, 3.60634338, 4.04602788, 4.04602788, + 4.71008116, 6.14010906, 6.97841457, 2. , + 4.2 , 4.62 , 5.57 , 5.66 , + 5.86 , 6.65 , 6.78 , 6.79 , + 7.5 , 7.5 , 7.5 , 8.63 , + 8.71 , 8.99 , 9.85 , 10.82 , + 11.25 , 11.25 , 12.2 , 14.92 , + 16.77 , 17.81 , 19.16 , 19.19 , + 19.64 , 20.18 , 22.97 + ]) + + df = load_basic_data() + df = ros._do_ros(df, 'conc', 'censored', numpy.log, numpy.exp) + result = df['final'].values + npt.assert_array_almost_equal(result, expected) + + +class CheckROSMixin(object): + def test_ros_df(self): + result = ros.impute_ros(self.rescol, self.cencol, df=self.df) + npt.assert_array_almost_equal( + sorted(result), + sorted(self.expected_final), + decimal=self.decimal + ) + + def test_ros_arrays(self): + result = ros.impute_ros(self.df[self.rescol], self.df[self.cencol], df=None) + npt.assert_array_almost_equal( + sorted(result), + sorted(self.expected_final), + decimal=self.decimal + ) + + def test_cohn(self): + cols = [ + 'nuncen_above', 'nobs_below', + 'ncen_equal', 'prob_exceedance' + ] + cohn = ros.cohn_numbers(self.df, self.rescol, self.cencol) + pdtest.assert_frame_equal( + cohn[cols], + self.expected_cohn[cols], + check_less_precise=True, + ) + + +class Test_ROS_HelselAppendixB(CheckROSMixin): + """ + Appendix B dataset from "Estimation of Descriptive Statists for + Multiply Censored Water Quality Data", Water Resources Research, + Vol 24, No 12, pp 1997 - 2004. December 1988. + """ + decimal = 2 + res = numpy.array([ + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 10., 10., 10., + 3.0, 7.0, 9.0, 12., 15., 20., 27., 33., 50. + ]) + cen = numpy.array([ + True, True, True, True, True, True, True, True, True, + False, False, False, False, False, False, False, + False, False + ]) + rescol = 'obs' + cencol = 'cen' + df = pandas.DataFrame({rescol: res, cencol: cen}) + expected_final = numpy.array([ + 0.47, 0.85, 1.11, 1.27, 1.76, 2.34, 2.50, 3.00, 3.03, + 4.80, 7.00, 9.00, 12.0, 15.0, 20.0, 27.0, 33.0, 50.0 + ]) + + expected_cohn = pandas.DataFrame({ + 'nuncen_above': numpy.array([3.0, 6.0, numpy.nan]), + 'nobs_below': numpy.array([6.0, 12.0, numpy.nan]), + 'ncen_equal': numpy.array([6.0, 3.0, numpy.nan]), + 'prob_exceedance': numpy.array([0.55556, 0.33333, 0.0]), + }) + + +class Test_ROS_HelselArsenic(CheckROSMixin): + """ + Oahu arsenic data from Nondetects and Data Analysis by + Dennis R. Helsel (John Wiley, 2005) + + Plotting positions are fudged since relative to source data since + modeled data is what matters and (source data plot positions are + not uniformly spaced, which seems weird) + """ + decimal = 2 + res = numpy.array([ + 3.2, 2.8, 2.0, 2.0, 2.0, 2.0, 2.0, 2.0, + 2.0, 2.0, 1.7, 1.5, 1.0, 1.0, 1.0, 1.0, + 0.9, 0.9, 0.7, 0.7, 0.6, 0.5, 0.5, 0.5 + ]) + + cen = numpy.array([ + False, False, True, True, True, True, True, + True, True, True, False, False, True, True, + True, True, False, True, False, False, False, + False, False, False + ]) + rescol = 'obs' + cencol = 'cen' + df = pandas.DataFrame({rescol: res, cencol: cen}) + expected_final = numpy.array([ + 3.20, 2.80, 1.42, 1.14, 0.95, 0.81, 0.68, 0.57, + 0.46, 0.35, 1.70, 1.50, 0.98, 0.76, 0.58, 0.41, + 0.90, 0.61, 0.70, 0.70, 0.60, 0.50, 0.50, 0.50 + ]) + + expected_cohn = pandas.DataFrame({ + 'nuncen_above': numpy.array([6.0, 1.0, 2.0, 2.0, numpy.nan]), + 'nobs_below': numpy.array([0.0, 7.0, 12.0, 22.0, numpy.nan]), + 'ncen_equal': numpy.array([0.0, 1.0, 4.0, 8.0, numpy.nan]), + 'prob_exceedance': numpy.array([1.0, 0.3125, 0.21429, 0.0833, 0.0]), + }) + + +class Test_ROS_RNADAdata(CheckROSMixin): + decimal = 3 + datastring = StringIO(dedent("""\ + res cen + 0.090 True + 0.090 True + 0.090 True + 0.101 False + 0.136 False + 0.340 False + 0.457 False + 0.514 False + 0.629 False + 0.638 False + 0.774 False + 0.788 False + 0.900 True + 0.900 True + 0.900 True + 1.000 True + 1.000 True + 1.000 True + 1.000 True + 1.000 True + 1.000 False + 1.000 True + 1.000 True + 1.000 True + 1.000 True + 1.000 True + 1.000 True + 1.000 True + 1.000 True + 1.000 True + 1.000 True + 1.000 True + 1.000 True + 1.100 False + 2.000 False + 2.000 False + 2.404 False + 2.860 False + 3.000 False + 3.000 False + 3.705 False + 4.000 False + 5.000 False + 5.960 False + 6.000 False + 7.214 False + 16.000 False + 17.716 False + 25.000 False + 51.000 False""")) + rescol = 'res' + cencol = 'cen' + df = pandas.read_csv(datastring, sep=r'\s+') + expected_final = numpy.array([ + 0.01907990, 0.03826254, 0.06080717, 0.10100000, 0.13600000, + 0.34000000, 0.45700000, 0.51400000, 0.62900000, 0.63800000, + 0.77400000, 0.78800000, 0.08745914, 0.25257575, 0.58544205, + 0.01711153, 0.03373885, 0.05287083, 0.07506079, 0.10081573, + 1.00000000, 0.13070334, 0.16539309, 0.20569039, 0.25257575, + 0.30725491, 0.37122555, 0.44636843, 0.53507405, 0.64042242, + 0.76644378, 0.91850581, 1.10390531, 1.10000000, 2.00000000, + 2.00000000, 2.40400000, 2.86000000, 3.00000000, 3.00000000, + 3.70500000, 4.00000000, 5.00000000, 5.96000000, 6.00000000, + 7.21400000, 16.00000000, 17.71600000, 25.00000000, 51.00000000 + ]) + + expected_cohn = pandas.DataFrame({ + 'nuncen_above': numpy.array([9., 0.0, 18., numpy.nan]), + 'nobs_below': numpy.array([3., 15., 32., numpy.nan]), + 'ncen_equal': numpy.array([3., 3., 17., numpy.nan]), + 'prob_exceedance': numpy.array([0.84, 0.36, 0.36, 0]), + }) + + +class Test_NoOp_ZeroND(CheckROSMixin): + decimal = 2 + numpy.random.seed(0) + N = 20 + res = numpy.random.lognormal(size=N) + cen = [False] * N + rescol = 'obs' + cencol = 'cen' + df = pandas.DataFrame({rescol: res, cencol: cen}) + expected_final = numpy.array([ + 0.38, 0.43, 0.81, 0.86, 0.90, 1.13, 1.15, 1.37, 1.40, + 1.49, 1.51, 1.56, 2.14, 2.59, 2.66, 4.28, 4.46, 5.84, + 6.47, 9.4 + ]) + + expected_cohn = pandas.DataFrame({ + 'nuncen_above': numpy.array([]), + 'nobs_below': numpy.array([]), + 'ncen_equal': numpy.array([]), + 'prob_exceedance': numpy.array([]), + }) + + +class Test_ROS_OneND(CheckROSMixin): + decimal = 3 + res = numpy.array([ + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 10., 10., 10., + 3.0, 7.0, 9.0, 12., 15., 20., 27., 33., 50. + ]) + cen = numpy.array([ + True, False, False, False, False, False, False, False, False, + False, False, False, False, False, False, False, + False, False + ]) + rescol = 'conc' + cencol = 'cen' + df = pandas.DataFrame({rescol: res, cencol: cen}) + expected_final = numpy.array([ + 0.24, 1.0, 1.0, 1.0, 1.0, 1.0, 10., 10., 10., + 3.0 , 7.0, 9.0, 12., 15., 20., 27., 33., 50. + ]) + + expected_cohn = pandas.DataFrame({ + 'nuncen_above': numpy.array([17.0, numpy.nan]), + 'nobs_below': numpy.array([1.0, numpy.nan]), + 'ncen_equal': numpy.array([1.0, numpy.nan]), + 'prob_exceedance': numpy.array([0.94444, 0.0]), + }) + + +class Test_HalfDLs_80pctNDs(CheckROSMixin): + decimal = 3 + res = numpy.array([ + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 10., 10., 10., + 3.0, 7.0, 9.0, 12., 15., 20., 27., 33., 50. + ]) + cen = numpy.array([ + True, True, True, True, True, True, True, True, + True, True, True, True, True, True, True, False, + False, False + ]) + rescol = 'value' + cencol = 'qual' + df = pandas.DataFrame({rescol: res, cencol: cen}) + expected_final = numpy.array([ + 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 5.0, 5.0, 5.0, + 1.5, 3.5, 4.5, 6.0, 7.5, 10., 27., 33., 50. + ]) + + expected_cohn = pandas.DataFrame({ + 'nuncen_above': numpy.array([0., 0., 0., 0., 0., 0., 0., 3., numpy.nan]), + 'nobs_below': numpy.array([6., 7., 8., 9., 12., 13., 14., 15., numpy.nan]), + 'ncen_equal': numpy.array([6., 1., 1., 1., 3., 1., 1., 1., numpy.nan]), + 'prob_exceedance': numpy.array([0.16667] * 8 + [0.]), + }) + + +class Test_HaflDLs_OneUncensored(CheckROSMixin): + decimal = 3 + res = numpy.array([1.0, 1.0, 12., 15., ]) + cen = numpy.array([True, True, True, False ]) + rescol = 'value' + cencol = 'qual' + df = pandas.DataFrame({rescol: res, cencol: cen}) + expected_final = numpy.array([0.5, 0.5, 6. , 15.]) + + expected_cohn = pandas.DataFrame({ + 'nuncen_above': numpy.array([0., 1., numpy.nan]), + 'nobs_below': numpy.array([2., 3., numpy.nan]), + 'ncen_equal': numpy.array([2., 1., numpy.nan]), + 'prob_exceedance': numpy.array([0.25, 0.25, 0.]), + }) + + +class Test_ROS_MaxCen_GT_MaxUncen(Test_ROS_HelselAppendixB): + res = numpy.array([ + 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 10., 10., 10., + 3.0, 7.0, 9.0, 12., 15., 20., 27., 33., 50., + 60, 70 + ]) + cen = numpy.array([ + True, True, True, True, True, True, True, True, True, + False, False, False, False, False, False, False, + False, False, True, True + ]) + + +class Test_ROS_OnlyDL_GT_MaxUncen(Test_NoOp_ZeroND): + numpy.random.seed(0) + N = 20 + res = [ + 0.38, 0.43, 0.81, 0.86, 0.90, 1.13, 1.15, 1.37, 1.40, + 1.49, 1.51, 1.56, 2.14, 2.59, 2.66, 4.28, 4.46, 5.84, + 6.47, 9.40, 10.0, 10.0 + ] + cen = ([False] * N) + [True, True] diff --git a/statsmodels/interface/__init__.py b/statsmodels/interface/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/iolib/__init__.py b/statsmodels/iolib/__init__.py new file mode 100644 index 0000000..faf8832 --- /dev/null +++ b/statsmodels/iolib/__init__.py @@ -0,0 +1,10 @@ +from .foreign import StataReader, genfromdta, savetxt +from .table import SimpleTable, csv2st +from .smpickle import save_pickle, load_pickle + +from statsmodels.tools._testing import PytestTester + +__all__ = ['test', 'csv2st', 'SimpleTable', 'StataReader', 'savetxt', + 'save_pickle', 'load_pickle', 'genfromdta'] + +test = PytestTester() diff --git a/statsmodels/iolib/api.py b/statsmodels/iolib/api.py new file mode 100644 index 0000000..a7346dc --- /dev/null +++ b/statsmodels/iolib/api.py @@ -0,0 +1,8 @@ +__all__ = [ + "StataReader", "StataWriter", "SimpleTable", + "genfromdta", "savetxt", "csv2st", + "save_pickle", "load_pickle" +] +from .foreign import StataReader, genfromdta, savetxt, StataWriter +from .table import SimpleTable, csv2st +from .smpickle import save_pickle, load_pickle diff --git a/statsmodels/iolib/foreign.py b/statsmodels/iolib/foreign.py new file mode 100644 index 0000000..db2da75 --- /dev/null +++ b/statsmodels/iolib/foreign.py @@ -0,0 +1,1173 @@ +""" +Input/Output tools for working with binary data. + +The Stata input tools were originally written by Joe Presbrey as part of PyDTA. + +You can find more information here http://presbrey.mit.edu/PyDTA + +See Also +-------- +numpy.lib.io +""" +import warnings + +from statsmodels.compat.python import (zip, lzip, lmap, lrange, string_types, long, lfilter, + asbytes, asstr, range, PY3) +from struct import unpack, calcsize, pack +from struct import error as struct_error +import datetime +import sys + +import numpy as np +import statsmodels.tools.data as data_util +from pandas import isnull +from pandas.io.stata import StataMissingValue +from statsmodels.iolib.openfile import get_file_obj + +_date_formats = ["%tc", "%tC", "%td", "%tw", "%tm", "%tq", "%th", "%ty"] + +def _datetime_to_stata_elapsed(date, fmt): + """ + Convert from datetime to SIF. http://www.stata.com/help.cgi?datetime + + Parameters + ---------- + date : datetime.datetime + The date to convert to the Stata Internal Format given by fmt + fmt : str + The format to convert to. Can be, tc, td, tw, tm, tq, th, ty + """ + if not isinstance(date, datetime.datetime): + raise ValueError("date should be datetime.datetime format") + stata_epoch = datetime.datetime(1960, 1, 1) + if fmt in ["%tc", "tc"]: + delta = date - stata_epoch + return (delta.days * 86400000 + delta.seconds*1000 + + delta.microseconds/1000) + elif fmt in ["%tC", "tC"]: + from warnings import warn + warn("Stata Internal Format tC not supported.", UserWarning) + return date + elif fmt in ["%td", "td"]: + return (date- stata_epoch).days + elif fmt in ["%tw", "tw"]: + return (52*(date.year-stata_epoch.year) + + (date - datetime.datetime(date.year, 1, 1)).days / 7) + elif fmt in ["%tm", "tm"]: + return (12 * (date.year - stata_epoch.year) + date.month - 1) + elif fmt in ["%tq", "tq"]: + return 4*(date.year-stata_epoch.year) + int((date.month - 1)/3) + elif fmt in ["%th", "th"]: + return 2 * (date.year - stata_epoch.year) + int(date.month > 6) + elif fmt in ["%ty", "ty"]: + return date.year + else: + raise ValueError("fmt %s not understood" % fmt) + +def _stata_elapsed_date_to_datetime(date, fmt): + """ + Convert from SIF to datetime. http://www.stata.com/help.cgi?datetime + + Parameters + ---------- + date : int + The Stata Internal Format date to convert to datetime according to fmt + fmt : str + The format to convert to. Can be, tc, td, tw, tm, tq, th, ty + + Examples + -------- + >>> _stata_elapsed_date_to_datetime(52, "%tw") datetime.datetime(1961, 1, 1, 0, 0) + + Notes + ----- + datetime/c - tc + milliseconds since 01jan1960 00:00:00.000, assuming 86,400 s/day + datetime/C - tC - NOT IMPLEMENTED + milliseconds since 01jan1960 00:00:00.000, adjusted for leap seconds + date - td + days since 01jan1960 (01jan1960 = 0) + weekly date - tw + weeks since 1960w1 + This assumes 52 weeks in a year, then adds 7 * remainder of the weeks. + The datetime value is the start of the week in terms of days in the + year, not ISO calendar weeks. + monthly date - tm + months since 1960m1 + quarterly date - tq + quarters since 1960q1 + half-yearly date - th + half-years since 1960h1 yearly + date - ty + years since 0000 + + If you don't have pandas with datetime support, then you can't do + milliseconds accurately. + """ + #NOTE: we could run into overflow / loss of precision situations here + # casting to int, but I'm not sure what to do. datetime won't deal with + # numpy types and numpy datetime isn't mature enough / we can't rely on + # pandas version > 0.7.1 + #TODO: IIRC relative delta doesn't play well with np.datetime? + date = int(date) + stata_epoch = datetime.datetime(1960, 1, 1) + if fmt in ["%tc", "tc"]: + from dateutil.relativedelta import relativedelta + return stata_epoch + relativedelta(microseconds=date*1000) + elif fmt in ["%tC", "tC"]: + from warnings import warn + warn("Encountered %tC format. Leaving in Stata Internal Format.", + UserWarning) + return date + elif fmt in ["%td", "td"]: + return stata_epoch + datetime.timedelta(int(date)) + elif fmt in ["%tw", "tw"]: # does not count leap days - 7 days is a week + year = datetime.datetime(stata_epoch.year + date // 52, 1, 1) + day_delta = (date % 52 ) * 7 + return year + datetime.timedelta(int(day_delta)) + elif fmt in ["%tm", "tm"]: + year = stata_epoch.year + date // 12 + month_delta = (date % 12 ) + 1 + return datetime.datetime(year, month_delta, 1) + elif fmt in ["%tq", "tq"]: + year = stata_epoch.year + date // 4 + month_delta = (date % 4) * 3 + 1 + return datetime.datetime(year, month_delta, 1) + elif fmt in ["%th", "th"]: + year = stata_epoch.year + date // 2 + month_delta = (date % 2) * 6 + 1 + return datetime.datetime(year, month_delta, 1) + elif fmt in ["%ty", "ty"]: + if date > 0: + return datetime.datetime(date, 1, 1) + else: # don't do negative years bc can't mix dtypes in column + raise ValueError("Year 0 and before not implemented") + else: + raise ValueError("Date fmt %s not understood" % fmt) + + +### Helper classes for StataReader ### + +class _StataVariable(object): + """ + A dataset variable. Not intended for public use. + + Parameters + ---------- + variable_data + + Attributes + ---------- + format : str + Stata variable format. See notes for more information. + index : int + Zero-index column index of variable. + label : str + Data Label + name : str + Variable name + type : str + Stata data type. See notes for more information. + value_format : str + Value format. + + Notes + ----- + More information: http://www.stata.com/help.cgi?format + """ + def __init__(self, variable_data): + self._data = variable_data + + def __int__(self): + return self.index + + def __str__(self): + return self.name + index = property(lambda self: self._data[0], doc='the variable\'s index \ +within an observation') + type = property(lambda self: self._data[1], doc='the data type of \ +variable\n\nPossible types are:\n{1..244:string, b:byte, h:int, l:long, \ +f:float, d:double)') + name = property(lambda self: self._data[2], doc='the name of the variable') + format = property(lambda self: self._data[4], doc='the variable\'s Stata \ +format') + value_format = property(lambda self: self._data[5], doc='the variable\'s \ +value format') + label = property(lambda self: self._data[6], doc='the variable\'s label') + __int__.__doc__ = index.__doc__ + __str__.__doc__ = name.__doc__ + +class StataReader(object): + """ + Stata .dta file reader. + + Provides methods to return the metadata of a Stata .dta file and + a generator for the data itself. + + Parameters + ---------- + file : file-like + A file-like object representing a Stata .dta file. + missing_values : bool + If missing_values is True, parse missing_values and return a + Missing Values object instead of None. + encoding : string, optional + Used for Python 3 only. Encoding to use when reading the .dta file. + Defaults to `locale.getpreferredencoding` + + See Also + -------- + statsmodels.iolib.foreign.genfromdta + pandas.read_stata + pandas.io.stata.StataReader + + Notes + ----- + This is known only to work on file formats 113 (Stata 8/9), 114 + (Stata 10/11), and 115 (Stata 12). Needs to be tested on older versions. + Known not to work on format 104, 108. If you have the documentation for + older formats, please contact the developers. + + For more information about the .dta format see + http://www.stata.com/help.cgi?dta + http://www.stata.com/help.cgi?dta_113 + """ + + _header = {} + _data_location = 0 + _col_sizes = () + _has_string_data = False + _missing_values = False + #type code + #-------------------- + #str1 1 = 0x01 + #str2 2 = 0x02 + #... + #str244 244 = 0xf4 + #byte 251 = 0xfb (sic) + #int 252 = 0xfc + #long 253 = 0xfd + #float 254 = 0xfe + #double 255 = 0xff + #-------------------- + #NOTE: the byte type seems to be reserved for categorical variables + # with a label, but the underlying variable is -127 to 100 + # we're going to drop the label and cast to int + DTYPE_MAP = dict(lzip(lrange(1,245), ['a' + str(i) for i in range(1,245)]) + \ + [(251, np.int16),(252, np.int32),(253, int), + (254, np.float32), (255, np.float64)]) + TYPE_MAP = lrange(251)+list('bhlfd') + #NOTE: technically, some of these are wrong. there are more numbers + # that can be represented. it's the 27 ABOVE and BELOW the max listed + # numeric data type in [U] 12.2.2 of the 11.2 manual + MISSING_VALUES = { 'b': (-127,100), 'h': (-32767, 32740), 'l': + (-2147483647, 2147483620), 'f': (-1.701e+38, +1.701e+38), 'd': + (-1.798e+308, +8.988e+307) } + + def __init__(self, fname, missing_values=False, encoding=None): + warnings.warn( + "StataReader is deprecated as of 0.10.0 and will be removed in a " + "future version. Use pandas.read_stata or " + "pandas.io.stata.StataReader instead.", + FutureWarning) + + if encoding is None: + import locale + self._encoding = locale.getpreferredencoding() + else: + self._encoding = encoding + self._missing_values = missing_values + self._parse_header(fname) + + def file_headers(self): + """ + Returns all .dta file headers. + + out: dict + Has keys typlist, data_label, lbllist, varlist, nvar, filetype, + ds_format, nobs, fmtlist, vlblist, time_stamp, srtlist, byteorder + """ + return self._header + + def file_format(self): + """ + Returns the file format. + + Returns + ------- + out : int + + Notes + ----- + Format 113: Stata 8/9 + Format 114: Stata 10/11 + Format 115: Stata 12 + """ + return self._header['ds_format'] + + def file_label(self): + """ + Returns the dataset's label. + + Returns + ------- + out: string + """ + return self._header['data_label'] + + def file_timestamp(self): + """ + Returns the date and time Stata recorded on last file save. + + Returns + ------- + out : str + """ + return self._header['time_stamp'] + + def variables(self): + """ + Returns a list of the dataset's StataVariables objects. + """ + return lmap(_StataVariable, zip(lrange(self._header['nvar']), + self._header['typlist'], self._header['varlist'], + self._header['srtlist'], + self._header['fmtlist'], self._header['lbllist'], + self._header['vlblist'])) + + def dataset(self, as_dict=False): + """ + Returns a Python generator object for iterating over the dataset. + + + Parameters + ---------- + as_dict : bool, optional + If as_dict is True, yield each row of observations as a dict. + If False, yields each row of observations as a list. + + Returns + ------- + Generator object for iterating over the dataset. Yields each row of + observations as a list by default. + + Notes + ----- + If missing_values is True during instantiation of StataReader then + observations with StataMissingValue(s) are not filtered and should + be handled by your applcation. + """ + + try: + self._file.seek(self._data_location) + except Exception: + pass + + if as_dict: + vars = lmap(str, self.variables()) + for i in range(len(self)): + yield dict(zip(vars, self._next())) + else: + for i in range(self._header['nobs']): + yield self._next() + + ### Python special methods + + def __len__(self): + """ + Return the number of observations in the dataset. + + This value is taken directly from the header and includes observations + with missing values. + """ + return self._header['nobs'] + + def __getitem__(self, k): + """ + Seek to an observation indexed k in the file and return it, ordered + by Stata's output to the .dta file. + + k is zero-indexed. Prefer using R.data() for performance. + """ + if not (isinstance(k, (int, long))) or k < 0 or k > len(self)-1: + raise IndexError(k) + loc = self._data_location + sum(self._col_size()) * k + if self._file.tell() != loc: + self._file.seek(loc) + return self._next() + + ### Private methods + + def _null_terminate(self, s, encoding): + if PY3: # have bytes not strings, so must decode + null_byte = asbytes('\x00') + try: + s = s.lstrip(null_byte)[:s.index(null_byte)] + except: + pass + return s.decode(encoding) + else: + null_byte = asbytes('\x00') + try: + return s.lstrip(null_byte)[:s.index(null_byte)] + except: + return s + + def _parse_header(self, file_object): + self._file = file_object + encoding = self._encoding + + # parse headers + self._header['ds_format'] = unpack('b', self._file.read(1))[0] + + if self._header['ds_format'] not in [113, 114, 115]: + raise ValueError("Only file formats >= 113 (Stata >= 9)" + " are supported. Got format %s. Please report " + "if you think this error is incorrect." % + self._header['ds_format']) + byteorder = self._header['byteorder'] = unpack('b', + self._file.read(1))[0]==0x1 and '>' or '<' + self._header['filetype'] = unpack('b', self._file.read(1))[0] + self._file.read(1) + nvar = self._header['nvar'] = unpack(byteorder+'h', + self._file.read(2))[0] + self._header['nobs'] = unpack(byteorder+'i', self._file.read(4))[0] + self._header['data_label'] = self._null_terminate(self._file.read(81), + encoding) + self._header['time_stamp'] = self._null_terminate(self._file.read(18), + encoding) + + # parse descriptors + typlist =[ord(self._file.read(1)) for i in range(nvar)] + self._header['typlist'] = [self.TYPE_MAP[typ] for typ in typlist] + self._header['dtyplist'] = [self.DTYPE_MAP[typ] for typ in typlist] + self._header['varlist'] = [self._null_terminate(self._file.read(33), + encoding) for i in range(nvar)] + self._header['srtlist'] = unpack(byteorder+('h'*(nvar+1)), + self._file.read(2*(nvar+1)))[:-1] + if self._header['ds_format'] <= 113: + self._header['fmtlist'] = \ + [self._null_terminate(self._file.read(12), encoding) \ + for i in range(nvar)] + else: + self._header['fmtlist'] = \ + [self._null_terminate(self._file.read(49), encoding) \ + for i in range(nvar)] + self._header['lbllist'] = [self._null_terminate(self._file.read(33), + encoding) for i in range(nvar)] + self._header['vlblist'] = [self._null_terminate(self._file.read(81), + encoding) for i in range(nvar)] + + # ignore expansion fields + # When reading, read five bytes; the last four bytes now tell you the + # size of the next read, which you discard. You then continue like + # this until you read 5 bytes of zeros. + + while True: + data_type = unpack(byteorder+'b', self._file.read(1))[0] + data_len = unpack(byteorder+'i', self._file.read(4))[0] + if data_type == 0: + break + self._file.read(data_len) + + # other state vars + self._data_location = self._file.tell() + self._has_string_data = len(lfilter(lambda x: isinstance(x, int), + self._header['typlist'])) > 0 + self._col_size() + + def _calcsize(self, fmt): + return isinstance(fmt, int) and fmt or \ + calcsize(self._header['byteorder']+fmt) + + def _col_size(self, k = None): + """Calculate size of a data record.""" + if len(self._col_sizes) == 0: + self._col_sizes = lmap(lambda x: self._calcsize(x), + self._header['typlist']) + if k is None: + return self._col_sizes + else: + return self._col_sizes[k] + + def _unpack(self, fmt, byt): + d = unpack(self._header['byteorder']+fmt, byt)[0] + if fmt[-1] in self.MISSING_VALUES: + nmin, nmax = self.MISSING_VALUES[fmt[-1]] + if d < nmin or d > nmax: + if self._missing_values: + return StataMissingValue(nmax, d) + else: + return None + return d + + def _next(self): + typlist = self._header['typlist'] + if self._has_string_data: + data = [None]*self._header['nvar'] + for i in range(len(data)): + if isinstance(typlist[i], int): + data[i] = self._null_terminate(self._file.read(typlist[i]), + self._encoding) + else: + data[i] = self._unpack(typlist[i], + self._file.read(self._col_size(i))) + return data + else: + return lmap(lambda i: self._unpack(typlist[i], + self._file.read(self._col_size(i))), + lrange(self._header['nvar'])) + +def _set_endianness(endianness): + if endianness.lower() in ["<", "little"]: + return "<" + elif endianness.lower() in [">", "big"]: + return ">" + else: # pragma : no cover + raise ValueError("Endianness %s not understood" % endianness) + +def _dtype_to_stata_type(dtype): + """ + Converts dtype types to stata types. Returns the byte of the given ordinal. + See TYPE_MAP and comments for an explanation. This is also explained in + the dta spec. + 1 - 244 are strings of this length + 251 - chr(251) - for int8 and int16, byte + 252 - chr(252) - for int32, int + 253 - chr(253) - for int64, long + 254 - chr(254) - for float32, float + 255 - chr(255) - double, double + + If there are dates to convert, then dtype will already have the correct + type inserted. + """ + #TODO: expand to handle datetime to integer conversion + if dtype.type == np.string_: + return chr(dtype.itemsize) + elif dtype.type == np.object_: + # try to coerce it to the biggest string + # not memory efficient, what else could we do? + return chr(244) + elif dtype == np.float64: + return chr(255) + elif dtype == np.float32: + return chr(254) + elif dtype == np.int64: + return chr(253) + elif dtype == np.int32: + return chr(252) + elif dtype == np.int8 or dtype == np.int16: # ok to assume bytes? + return chr(251) + else: # pragma : no cover + raise ValueError("Data type %s not currently understood. " + "Please report an error to the developers." % dtype) + +def _dtype_to_default_stata_fmt(dtype): + """ + Maps numpy dtype to stata's default format for this type. Not terribly + important since users can change this in Stata. Semantics are + + string -> "%DDs" where DD is the length of the string + float64 -> "%10.0g" + float32 -> "%9.0g" + int64 -> "%9.0g" + int32 -> "%9.0g" + int16 -> "%9.0g" + int8 -> "%8.0g" + """ + #TODO: expand this to handle a default datetime format? + if dtype.type == np.string_: + return "%" + str(dtype.itemsize) + "s" + elif dtype.type == np.object_: + return "%244s" + elif dtype == np.float64: + return "%10.0g" + elif dtype == np.float32: + return "%9.0g" + elif dtype == np.int64: + return "%9.0g" + elif dtype == np.int32: + return "%8.0g" + elif dtype == np.int8 or dtype == np.int16: # ok to assume bytes? + return "%8.0g" + else: # pragma : no cover + raise ValueError("Data type %s not currently understood. " + "Please report an error to the developers." % dtype) + +def _pad_bytes(name, length): + """ + Takes a char string and pads it wih null bytes until it's length chars + """ + return name + "\x00" * (length - len(name)) + +def _default_names(nvar): + """ + Returns default Stata names v1, v2, ... vnvar + """ + return ["v%d" % i for i in range(1,nvar+1)] + +def _convert_datetime_to_stata_type(fmt): + """ + Converts from one of the stata date formats to a type in TYPE_MAP + """ + if fmt in ["tc", "%tc", "td", "%td", "tw", "%tw", "tm", "%tm", "tq", + "%tq", "th", "%th", "ty", "%ty"]: + return np.float64 # Stata expects doubles for SIFs + else: + raise ValueError("fmt %s not understood" % fmt) + +def _maybe_convert_to_int_keys(convert_dates, varlist): + new_dict = {} + for key in convert_dates: + if not convert_dates[key].startswith("%"): # make sure proper fmts + convert_dates[key] = "%" + convert_dates[key] + if key in varlist: + new_dict.update({varlist.index(key) : convert_dates[key]}) + else: + if not isinstance(key, int): + raise ValueError("convery_dates key is not in varlist " + "and is not an int") + new_dict.update({key : convert_dates[key]}) + return new_dict + +_type_converters = {253 : np.long, 252 : int} + +class StataWriter(object): + """ + A class for writing Stata binary dta files from array-like objects + + Parameters + ---------- + fname : file path or buffer + Where to save the dta file. + data : array-like + Array-like input to save. Pandas objects are also accepted. + convert_dates : dict + Dictionary mapping column of datetime types to the stata internal + format that you want to use for the dates. Options are + 'tc', 'td', 'tm', 'tw', 'th', 'tq', 'ty'. Column can be either a + number or a name. + encoding : str + Default is latin-1. Note that Stata does not support unicode. + byteorder : str + Can be ">", "<", "little", or "big". The default is None which uses + `sys.byteorder` + + Returns + ------- + writer : StataWriter instance + The StataWriter instance has a write_file method, which will + write the file to the given `fname`. + + Examples + -------- + >>> writer = StataWriter('./data_file.dta', data) + >>> writer.write_file() + + Or with dates + + >>> writer = StataWriter('./date_data_file.dta', date, {2 : 'tw'}) + >>> writer.write_file() + """ + #type code + #-------------------- + #str1 1 = 0x01 + #str2 2 = 0x02 + #... + #str244 244 = 0xf4 + #byte 251 = 0xfb (sic) + #int 252 = 0xfc + #long 253 = 0xfd + #float 254 = 0xfe + #double 255 = 0xff + #-------------------- + #NOTE: the byte type seems to be reserved for categorical variables + # with a label, but the underlying variable is -127 to 100 + # we're going to drop the label and cast to int + DTYPE_MAP = dict(lzip(lrange(1,245), ['a' + str(i) for i in range(1,245)]) + \ + [(251, np.int16),(252, np.int32),(253, int), + (254, np.float32), (255, np.float64)]) + TYPE_MAP = lrange(251)+list('bhlfd') + MISSING_VALUES = { 'b': 101, + 'h': 32741, + 'l' : 2147483621, + 'f': 1.7014118346046923e+38, + 'd': 8.98846567431158e+307} + def __init__(self, fname, data, convert_dates=None, encoding="latin-1", + byteorder=None): + warnings.warn( + "StataWriter is deprecated as of 0.10.0 and will be removed in a " + "future version. Use pandas.DataFrame.to_stata or " + "pandas.io.stata.StatWriter instead.", + FutureWarning) + + self._convert_dates = convert_dates + # attach nobs, nvars, data, varlist, typlist + if data_util._is_using_pandas(data, None): + self._prepare_pandas(data) + + elif data_util._is_array_like(data, None): + data = np.asarray(data) + if data_util._is_structured_ndarray(data): + self._prepare_structured_array(data) + else: + if convert_dates is not None: + raise ValueError("Not able to convert dates in a plain" + " ndarray.") + self._prepare_ndarray(data) + + else: # pragma : no cover + raise ValueError("Type %s for data not understood" % type(data)) + + + if byteorder is None: + byteorder = sys.byteorder + self._byteorder = _set_endianness(byteorder) + self._encoding = encoding + self._file = get_file_obj(fname, 'wb', encoding) + + def _write(self, to_write): + """ + Helper to call asbytes before writing to file for Python 3 compat. + """ + self._file.write(asbytes(to_write)) + + def _prepare_structured_array(self, data): + self.nobs = len(data) + self.nvar = len(data.dtype) + self.data = data + self.datarows = iter(data) + dtype = data.dtype + descr = dtype.descr + if dtype.names is None: + varlist = _default_names(self.nvar) + else: + varlist = dtype.names + + # check for datetime and change the type + convert_dates = self._convert_dates + if convert_dates is not None: + convert_dates = _maybe_convert_to_int_keys(convert_dates, + varlist) + self._convert_dates = convert_dates + for key in convert_dates: + descr[key] = ( + descr[key][0], + _convert_datetime_to_stata_type(convert_dates[key]) + ) + dtype = np.dtype(descr) + + self.varlist = varlist + self.typlist = [_dtype_to_stata_type(dtype[i]) + for i in range(self.nvar)] + self.fmtlist = [_dtype_to_default_stata_fmt(dtype[i]) + for i in range(self.nvar)] + # set the given format for the datetime cols + if convert_dates is not None: + for key in convert_dates: + self.fmtlist[key] = convert_dates[key] + + + def _prepare_ndarray(self, data): + if data.ndim == 1: + data = data[:,None] + self.nobs, self.nvar = data.shape + self.data = data + self.datarows = iter(data) + #TODO: this should be user settable + dtype = data.dtype + self.varlist = _default_names(self.nvar) + self.typlist = [_dtype_to_stata_type(dtype) for i in range(self.nvar)] + self.fmtlist = [_dtype_to_default_stata_fmt(dtype) + for i in range(self.nvar)] + + def _prepare_pandas(self, data): + #NOTE: we might need a different API / class for pandas objects so + # we can set different semantics - handle this with a PR to pandas.io + class DataFrameRowIter(object): + def __init__(self, data): + self.data = data + + def __iter__(self): + for i, row in data.iterrows(): + yield row + + data = data.reset_index() + self.datarows = DataFrameRowIter(data) + self.nobs, self.nvar = data.shape + self.data = data + self.varlist = data.columns.tolist() + dtypes = data.dtypes + convert_dates = self._convert_dates + if convert_dates is not None: + convert_dates = _maybe_convert_to_int_keys(convert_dates, + self.varlist) + self._convert_dates = convert_dates + for key in convert_dates: + new_type = _convert_datetime_to_stata_type(convert_dates[key]) + dtypes[key] = np.dtype(new_type) + self.typlist = [_dtype_to_stata_type(dt) for dt in dtypes] + self.fmtlist = [_dtype_to_default_stata_fmt(dt) for dt in dtypes] + # set the given format for the datetime cols + if convert_dates is not None: + for key in convert_dates: + self.fmtlist[key] = convert_dates[key] + + def write_file(self): + self._write_header() + self._write_descriptors() + self._write_variable_labels() + # write 5 zeros for expansion fields + self._write(_pad_bytes("", 5)) + if self._convert_dates is None: + self._write_data_nodates() + else: + self._write_data_dates() + #self._write_value_labels() + + def _write_header(self, data_label=None, time_stamp=None): + byteorder = self._byteorder + # ds_format - just use 114 + self._write(pack("b", 114)) + # byteorder + self._write(byteorder == ">" and "\x01" or "\x02") + # filetype + self._write("\x01") + # unused + self._write("\x00") + # number of vars, 2 bytes + self._write(pack(byteorder+"h", self.nvar)[:2]) + # number of obs, 4 bytes + self._write(pack(byteorder+"i", self.nobs)[:4]) + # data label 81 bytes, char, null terminated + if data_label is None: + self._write(self._null_terminate(_pad_bytes("", 80), + self._encoding)) + else: + self._write(self._null_terminate(_pad_bytes(data_label[:80], + 80), self._encoding)) + # time stamp, 18 bytes, char, null terminated + # format dd Mon yyyy hh:mm + if time_stamp is None: + time_stamp = datetime.datetime.now() + elif not isinstance(time_stamp, datetime): + raise ValueError("time_stamp should be datetime type") + self._write(self._null_terminate( + time_stamp.strftime("%d %b %Y %H:%M"), + self._encoding)) + + def _write_descriptors(self, typlist=None, varlist=None, srtlist=None, + fmtlist=None, lbllist=None): + nvar = self.nvar + # typlist, length nvar, format byte array + for typ in self.typlist: + self._write(typ) + + # varlist, length 33*nvar, char array, null terminated + for name in self.varlist: + name = self._null_terminate(name, self._encoding) + name = _pad_bytes(asstr(name[:32]), 33) + self._write(name) + + # srtlist, 2*(nvar+1), int array, encoded by byteorder + srtlist = _pad_bytes("", (2*(nvar+1))) + self._write(srtlist) + + # fmtlist, 49*nvar, char array + for fmt in self.fmtlist: + self._write(_pad_bytes(fmt, 49)) + + # lbllist, 33*nvar, char array + #NOTE: this is where you could get fancy with pandas categorical type + for i in range(nvar): + self._write(_pad_bytes("", 33)) + + def _write_variable_labels(self, labels=None): + nvar = self.nvar + if labels is None: + for i in range(nvar): + self._write(_pad_bytes("", 81)) + + def _write_data_nodates(self): + data = self.datarows + byteorder = self._byteorder + TYPE_MAP = self.TYPE_MAP + typlist = self.typlist + for row in data: + #row = row.squeeze().tolist() # needed for structured arrays + for i,var in enumerate(row): + typ = ord(typlist[i]) + if typ <= 244: # we've got a string + if len(var) < typ: + var = _pad_bytes(asstr(var), len(var) + 1) + self._write(var) + else: + try: + if typ in _type_converters: + var = _type_converters[typ](var) + self._write(pack(byteorder+TYPE_MAP[typ], var)) + except struct_error: + # have to be strict about type pack won't do any + # kind of casting + self._write(pack(byteorder+TYPE_MAP[typ], + _type_converters[typ](var))) + + def _write_data_dates(self): + convert_dates = self._convert_dates + data = self.datarows + byteorder = self._byteorder + TYPE_MAP = self.TYPE_MAP + MISSING_VALUES = self.MISSING_VALUES + typlist = self.typlist + for row in data: + #row = row.squeeze().tolist() # needed for structured arrays + for i,var in enumerate(row): + typ = ord(typlist[i]) + #NOTE: If anyone finds this terribly slow, there is + # a vectorized way to convert dates, see genfromdta for going + # from int to datetime and reverse it. will copy data though + if i in convert_dates: + var = _datetime_to_stata_elapsed(var, self.fmtlist[i]) + if typ <= 244: # we've got a string + if isnull(var): + var = "" # missing string + if len(var) < typ: + var = _pad_bytes(var, len(var) + 1) + self._write(var) + else: + if isnull(var): # this only matters for floats + var = MISSING_VALUES[typ] + self._write(pack(byteorder+TYPE_MAP[typ], var)) + + + def _null_terminate(self, s, encoding): + null_byte = '\x00' + if PY3: + s += null_byte + return s.encode(encoding) + else: + s += null_byte + return s + +def genfromdta(fname, missing_flt=-999., encoding=None, pandas=False, + convert_dates=True): + """ + Returns an ndarray or DataFrame from a Stata .dta file. + + Parameters + ---------- + fname : str or filehandle + Stata .dta file. + missing_flt : numeric + The numeric value to replace missing values with. Will be used for + any numeric value. + encoding : string, optional + Used for Python 3 only. Encoding to use when reading the .dta file. + Defaults to `locale.getpreferredencoding` + pandas : bool + Optionally return a DataFrame instead of an ndarray + convert_dates : bool + If convert_dates is True, then Stata formatted dates will be converted + to datetime types according to the variable's format. + """ + warnings.warn( + "genfromdta is deprecated as of 0.10.0 and will be removed in a " + "future version. Use pandas.read_stata instead.", + FutureWarning) + + if isinstance(fname, string_types): + fhd = StataReader(open(fname, 'rb'), missing_values=False, + encoding=encoding) + elif not hasattr(fname, 'read'): + raise TypeError("The input should be a string or a filehandle. "\ + "(got %s instead)" % type(fname)) + else: + fhd = StataReader(fname, missing_values=False, encoding=encoding) +# validate_names = np.lib._iotools.NameValidator(excludelist=excludelist, +# deletechars=deletechars, +# case_sensitive=case_sensitive) + + #TODO: This needs to handle the byteorder? + header = fhd.file_headers() + types = header['dtyplist'] + nobs = header['nobs'] + numvars = header['nvar'] + varnames = header['varlist'] + fmtlist = header['fmtlist'] + dataname = header['data_label'] + labels = header['vlblist'] # labels are thrown away unless DataArray + # type is used + data = np.zeros((nobs,numvars)) + stata_dta = fhd.dataset() + + dt = np.dtype(lzip(varnames, types)) + data = np.zeros((nobs), dtype=dt) # init final array + + for rownum,line in enumerate(stata_dta): + # doesn't handle missing value objects, just casts + # None will only work without missing value object. + if None in line: + for i,val in enumerate(line): + #NOTE: This will only be scalar types because missing strings + # are empty not None in Stata + if val is None: + line[i] = missing_flt + data[rownum] = tuple(line) + + if pandas: + from pandas import DataFrame + data = DataFrame.from_records(data) + if convert_dates: + cols = np.where(lmap(lambda x : x in _date_formats, fmtlist))[0] + for col in cols: + i = col + col = data.columns[col] + data[col] = data[col].apply(_stata_elapsed_date_to_datetime, + args=(fmtlist[i],)) + elif convert_dates: + #date_cols = np.where(map(lambda x : x in _date_formats, + # fmtlist))[0] + # make the dtype for the datetime types + cols = np.where(lmap(lambda x : x in _date_formats, fmtlist))[0] + dtype = data.dtype.descr + dtype = [(sub_dtype[0], object) if i in cols else sub_dtype + for i, sub_dtype in enumerate(dtype)] + data = data.astype(dtype) # have to copy + for col in cols: + def convert(x): + return _stata_elapsed_date_to_datetime(x, fmtlist[col]) + data[data.dtype.names[col]] = lmap(convert, + data[data.dtype.names[col]]) + return data + +def savetxt(fname, X, names=None, fmt='%.18e', delimiter=' '): + """ + Save an array to a text file. + + This is just a copy of numpy.savetxt patched to support structured arrays + or a header of names. Does not include py3 support now in savetxt. + + Parameters + ---------- + fname : filename or file handle + If the filename ends in ``.gz``, the file is automatically saved in + compressed gzip format. `loadtxt` understands gzipped files + transparently. + X : array_like + Data to be saved to a text file. + names : list, optional + If given names will be the column header in the text file. If None and + X is a structured or recarray then the names are taken from + X.dtype.names. + fmt : str or sequence of strs + A single format (%10.5f), a sequence of formats, or a + multi-format string, e.g. 'Iteration %d -- %10.5f', in which + case `delimiter` is ignored. + delimiter : str + Character separating columns. + + See Also + -------- + save : Save an array to a binary file in NumPy ``.npy`` format + savez : Save several arrays into a ``.npz`` compressed archive + + Notes + ----- + Further explanation of the `fmt` parameter + (``%[flag]width[.precision]specifier``): + + flags: + ``-`` : left justify + + ``+`` : Forces to preceed result with + or -. + + ``0`` : Left pad the number with zeros instead of space (see width). + + width: + Minimum number of characters to be printed. The value is not truncated + if it has more characters. + + precision: + - For integer specifiers (eg. ``d,i,o,x``), the minimum number of + digits. + - For ``e, E`` and ``f`` specifiers, the number of digits to print + after the decimal point. + - For ``g`` and ``G``, the maximum number of significant digits. + - For ``s``, the maximum number of characters. + + specifiers: + ``c`` : character + + ``d`` or ``i`` : signed decimal integer + + ``e`` or ``E`` : scientific notation with ``e`` or ``E``. + + ``f`` : decimal floating point + + ``g,G`` : use the shorter of ``e,E`` or ``f`` + + ``o`` : signed octal + + ``s`` : string of characters + + ``u`` : unsigned decimal integer + + ``x,X`` : unsigned hexadecimal integer + + This explanation of ``fmt`` is not complete, for an exhaustive + specification see [1]_. + + References + ---------- + .. [1] `Format Specification Mini-Language + `_, Python Documentation. + + Examples + -------- + >>> savetxt('test.out', x, delimiter=',') # x is an array + >>> savetxt('test.out', (x,y,z)) # x,y,z equal sized 1D arrays + >>> savetxt('test.out', x, fmt='%1.4e') # use exponential notation + + """ + + with get_file_obj(fname, 'w') as fh: + X = np.asarray(X) + + # Handle 1-dimensional arrays + if X.ndim == 1: + # Common case -- 1d array of numbers + if X.dtype.names is None: + X = np.atleast_2d(X).T + ncol = 1 + + # Complex dtype -- each field indicates a separate column + else: + ncol = len(X.dtype.descr) + else: + ncol = X.shape[1] + + # `fmt` can be a string with multiple insertion points or a list of formats. + # E.g. '%10.5f\t%10d' or ('%10.5f', '$10d') + if isinstance(fmt, (list, tuple)): + if len(fmt) != ncol: + raise AttributeError('fmt has wrong shape. %s' % str(fmt)) + format = delimiter.join(fmt) + elif isinstance(fmt, string_types): + if fmt.count('%') == 1: + fmt = [fmt, ]*ncol + format = delimiter.join(fmt) + elif fmt.count('%') != ncol: + raise AttributeError('fmt has wrong number of %% formats. %s' + % fmt) + else: + format = fmt + + # handle names + if names is None and X.dtype.names: + names = X.dtype.names + if names is not None: + fh.write(delimiter.join(names) + '\n') + + for row in X: + fh.write(format % tuple(row) + '\n') diff --git a/statsmodels/iolib/openfile.py b/statsmodels/iolib/openfile.py new file mode 100644 index 0000000..2f5899e --- /dev/null +++ b/statsmodels/iolib/openfile.py @@ -0,0 +1,71 @@ +""" +Handle file opening for read/write +""" +from numpy.lib._iotools import _is_string_like +from statsmodels.compat.python import PY3 + +class EmptyContextManager(object): + """ + This class is needed to allow file-like object to be used as + context manager, but without getting closed. + """ + def __init__(self, obj): + self._obj = obj + + def __enter__(self): + '''When entering, return the embedded object''' + return self._obj + + def __exit__(self, *args): + '''Don't hide anything''' + return False + + def __getattr__(self, name): + return getattr(self._obj, name) + +if PY3: + def _open(fname, mode, encoding): + if fname.endswith('.gz'): + import gzip + return gzip.open(fname, mode, encoding=encoding) + else: + return open(fname, mode, encoding=encoding) +else: + def _open(fname, mode, encoding): + if fname.endswith('.gz'): + import gzip + return gzip.open(fname, mode) + else: + return open(fname, mode) + +def get_file_obj(fname, mode='r', encoding=None): + """ + Light wrapper to handle strings and let files (anything else) pass through. + + It also handle '.gz' files. + + Parameters + ========== + fname: string or file-like object + File to open / forward + mode: string + Argument passed to the 'open' or 'gzip.open' function + encoding: string + For Python 3 only, specify the encoding of the file + + Returns + ======= + A file-like object that is always a context-manager. If the `fname` was already a file-like object, + the returned context manager *will not close the file*. + """ + if _is_string_like(fname): + return _open(fname, mode, encoding) + try: + # Make sure the object has the write methods + if 'r' in mode: + fname.read + if 'w' in mode or 'a' in mode: + fname.write + except AttributeError: + raise ValueError('fname must be a string or a file-like object') + return EmptyContextManager(fname) diff --git a/statsmodels/iolib/smpickle.py b/statsmodels/iolib/smpickle.py new file mode 100644 index 0000000..e784cba --- /dev/null +++ b/statsmodels/iolib/smpickle.py @@ -0,0 +1,35 @@ +"""Helper files for pickling""" +from statsmodels.compat.python import cPickle +from statsmodels.iolib.openfile import get_file_obj + + +def save_pickle(obj, fname): + """ + Save the object to file via pickling. + + Parameters + ---------- + fname : str + Filename to pickle to + """ + + with get_file_obj(fname, 'wb') as fout: + cPickle.dump(obj, fout, protocol=-1) + + +def load_pickle(fname): + """ + Load a previously saved object from file + + Parameters + ---------- + fname : str + Filename to unpickle + + Notes + ----- + This method can be used to load *both* models and results. + """ + + with get_file_obj(fname, 'rb') as fin: + return cPickle.load(fin) diff --git a/statsmodels/iolib/stata_summary_examples.py b/statsmodels/iolib/stata_summary_examples.py new file mode 100644 index 0000000..817ddb4 --- /dev/null +++ b/statsmodels/iolib/stata_summary_examples.py @@ -0,0 +1,84 @@ + +""". regress totemp gnpdefl gnp unemp armed pop year + + Source | SS df MS Number of obs = 16 +-------------+------------------------------ F( 6, 9) = 330.29 + Model | 184172402 6 30695400.3 Prob > F = 0.0000 + Residual | 836424.129 9 92936.0144 R-squared = 0.9955 +-------------+------------------------------ Adj R-squared = 0.9925 + Total | 185008826 15 12333921.7 Root MSE = 304.85 + +------------------------------------------------------------------------------ + totemp | Coef. Std. Err. t P>|t| [95% Conf. Interval] +-------------+---------------------------------------------------------------- + gnpdefl | 15.06167 84.91486 0.18 0.863 -177.0291 207.1524 + gnp | -.0358191 .033491 -1.07 0.313 -.111581 .0399428 + unemp | -2.020229 .4883995 -4.14 0.003 -3.125065 -.9153928 + armed | -1.033227 .2142741 -4.82 0.001 -1.517948 -.5485049 + pop | -.0511045 .2260731 -0.23 0.826 -.5625173 .4603083 + year | 1829.151 455.4785 4.02 0.003 798.7873 2859.515 + _cons | -3482258 890420.3 -3.91 0.004 -5496529 -1467987 +------------------------------------------------------------------------------ +""" + + +#From Stata using Longley dataset as in the test and example for GLM +""" +. glm totemp gnpdefl gnp unemp armed pop year + +Iteration 0: log likelihood = -109.61744 + +Generalized linear models No. of obs = 16 +Optimization : ML Residual df = 9 + Scale parameter = 92936.01 +Deviance = 836424.1293 (1/df) Deviance = 92936.01 +Pearson = 836424.1293 (1/df) Pearson = 92936.01 + +Variance function: V(u) = 1 [Gaussian] +Link function : g(u) = u [Identity] + + AIC = 14.57718 +Log likelihood = -109.6174355 BIC = 836399.2 + +------------------------------------------------------------------------------ + | OIM + totemp | Coef. Std. Err. z P>|z| [95% Conf. Interval] +-------------+---------------------------------------------------------------- + gnpdefl | 15.06167 84.91486 0.18 0.859 -151.3684 181.4917 + gnp | -.0358191 .033491 -1.07 0.285 -.1014603 .029822 + unemp | -2.020229 .4883995 -4.14 0.000 -2.977475 -1.062984 + armed | -1.033227 .2142741 -4.82 0.000 -1.453196 -.6132571 + pop | -.0511045 .2260731 -0.23 0.821 -.4941996 .3919906 + year | 1829.151 455.4785 4.02 0.000 936.4298 2721.873 + _cons | -3482258 890420.3 -3.91 0.000 -5227450 -1737066 +------------------------------------------------------------------------------ +""" + +#RLM Example + +""" +. rreg stackloss airflow watertemp acidconc + + Huber iteration 1: maximum difference in weights = .48402478 + Huber iteration 2: maximum difference in weights = .07083248 + Huber iteration 3: maximum difference in weights = .03630349 +Biweight iteration 4: maximum difference in weights = .2114744 +Biweight iteration 5: maximum difference in weights = .04709559 +Biweight iteration 6: maximum difference in weights = .01648123 +Biweight iteration 7: maximum difference in weights = .01050023 +Biweight iteration 8: maximum difference in weights = .0027233 + +Robust regression Number of obs = 21 + F( 3, 17) = 74.15 + Prob > F = 0.0000 + +------------------------------------------------------------------------------ + stackloss | Coef. Std. Err. t P>|t| [95% Conf. Interval] +-------------+---------------------------------------------------------------- + airflow | .8526511 .1223835 6.97 0.000 .5944446 1.110858 + watertemp | .8733594 .3339811 2.61 0.018 .1687209 1.577998 + acidconc | -.1224349 .1418364 -0.86 0.400 -.4216836 .1768139 + _cons | -41.6703 10.79559 -3.86 0.001 -64.447 -18.89361 +------------------------------------------------------------------------------ + +""" diff --git a/statsmodels/iolib/summary.py b/statsmodels/iolib/summary.py new file mode 100644 index 0000000..438148e --- /dev/null +++ b/statsmodels/iolib/summary.py @@ -0,0 +1,895 @@ +import copy +import time + +from statsmodels.compat.python import range, lrange, lmap, lzip, zip_longest +import numpy as np +from statsmodels.iolib.table import SimpleTable +from statsmodels.iolib.tableformatting import (gen_fmt, fmt_2, + fmt_params, fmt_2cols) +from .summary2 import _model_types + + +def forg(x, prec=3): + if prec == 3: + # for 3 decimals + if (abs(x) >= 1e4) or (abs(x) < 1e-4): + return '%9.3g' % x + else: + return '%9.3f' % x + elif prec == 4: + if (abs(x) >= 1e4) or (abs(x) < 1e-4): + return '%10.4g' % x + else: + return '%10.4f' % x + else: + raise ValueError("`prec` argument must be either 3 or 4, not {prec}" + .format(prec=prec)) + + +def d_or_f(x, width=6): + """convert number to string with either integer of float formatting + + This is used internally for nobs and degrees of freedom which are usually + integers but can be float in some cases. + + Parameters + ---------- + x : int or float + width : int + only used if x is nan + + Returns + ------- + str : str + number as formatted string + """ + if np.isnan(x): + return (width - 3) * ' ' + 'NaN' + + if x // 1 == x: + return "%#6d" % x + else: + return "%#8.2f" % x + + +def summary(self, yname=None, xname=None, title=0, alpha=.05, + returns='text', model_info=None): + """ + Parameters + ---------- + yname : string + optional, Default is `Y` + xname : list of strings + optional, Default is `X.#` for # in p the number of regressors + Confidance interval : (0,1) not implimented + title : string + optional, Defualt is 'Generalized linear model' + returns : string + 'text', 'table', 'csv', 'latex', 'html' + + Returns + ------- + Default : + returns='print' + Prints the summarirized results + + Option : + returns='text' + Prints the summarirized results + + Option : + returns='table' + SimpleTable instance : summarizing the fit of a linear model. + + Option : + returns='csv' + returns a string of csv of the results, to import into a spreadsheet + + Option : + returns='latex' + Not implimented yet + + Option : + returns='HTML' + Not implimented yet + + + Examples (needs updating) + -------- + >>> import statsmodels as sm + >>> data = sm.datasets.longley.load(as_pandas=False) + >>> data.exog = sm.add_constant(data.exog) + >>> ols_results = sm.OLS(data.endog, data.exog).results + >>> print ols_results.summary() + ... + + Notes + ----- + conf_int calculated from normal dist. + """ + if title == 0: + title = _model_types[self.model.__class__.__name__] + + if xname is not None and len(xname) != len(self.params): + # GH 2298 + raise ValueError('User supplied xnames must have the same number of ' + 'entries as the number of model parameters ' + '({0})'.format(len(self.params))) + + yname, xname = _getnames(self, yname, xname) + + time_now = time.localtime() + time_of_day = [time.strftime("%H:%M:%S", time_now)] + date = time.strftime("%a, %d %b %Y", time_now) + modeltype = self.model.__class__.__name__ + nobs = self.nobs + df_model = self.df_model + df_resid = self.df_resid + + #General part of the summary table, Applicable to all? models + #------------------------------------------------------------ + # TODO: define this generically, overwrite in model classes + #replace definition of stubs data by single list + #e.g. + gen_left = [('Model type:', [modeltype]), + ('Date:', [date]), + ('Dependent Variable:', yname), # TODO: What happens with multiple names? + ('df model', [df_model]) + ] + gen_stubs_left, gen_data_left = zip_longest(*gen_left) #transpose row col + + gen_title = title + gen_header = None + gen_table_left = SimpleTable(gen_data_left, + gen_header, + gen_stubs_left, + title=gen_title, + txt_fmt=gen_fmt + ) + + gen_stubs_right = ('Method:', + 'Time:', + 'Number of Obs:', + 'df resid') + gen_data_right = ([modeltype], #was dist family need to look at more + time_of_day, + [nobs], + [df_resid] + ) + gen_table_right = SimpleTable(gen_data_right, + gen_header, + gen_stubs_right, + title=gen_title, + txt_fmt=gen_fmt + ) + gen_table_left.extend_right(gen_table_right) + general_table = gen_table_left + + # Parameters part of the summary table + # ------------------------------------ + # Note: this is not necessary since we standardized names, + # only t versus normal + tstats = {'OLS': self.t(), + 'GLS': self.t(), + 'GLSAR': self.t(), + 'WLS': self.t(), + 'RLM': self.t(), + 'GLM': self.t()} + prob_stats = {'OLS': self.pvalues, + 'GLS': self.pvalues, + 'GLSAR': self.pvalues, + 'WLS': self.pvalues, + 'RLM': self.pvalues, + 'GLM': self.pvalues + } + # Dictionary to store the header names for the parameter part of the + # summary table. look up by modeltype + alp = str((1-alpha)*100)+'%' + param_header = { + 'OLS' : ['coef', 'std err', 't', 'P>|t|', alp + ' Conf. Interval'], + 'GLS' : ['coef', 'std err', 't', 'P>|t|', alp + ' Conf. Interval'], + 'GLSAR' : ['coef', 'std err', 't', 'P>|t|', alp + ' Conf. Interval'], + 'WLS' : ['coef', 'std err', 't', 'P>|t|', alp + ' Conf. Interval'], + 'GLM' : ['coef', 'std err', 't', 'P>|t|', alp + ' Conf. Interval'], #glm uses t-distribution + 'RLM' : ['coef', 'std err', 'z', 'P>|z|', alp + ' Conf. Interval'] #checke z + } + params_stubs = xname + params = self.params + conf_int = self.conf_int(alpha) + std_err = self.bse + exog_len = lrange(len(xname)) + tstat = tstats[modeltype] + prob_stat = prob_stats[modeltype] + + # Simpletable should be able to handle the formating + params_data = lzip(["%#6.4g" % (params[i]) for i in exog_len], + ["%#6.4f" % (std_err[i]) for i in exog_len], + ["%#6.4f" % (tstat[i]) for i in exog_len], + ["%#6.4f" % (prob_stat[i]) for i in exog_len], + ["(%#5g, %#5g)" % tuple(conf_int[i]) for i in exog_len]) + parameter_table = SimpleTable(params_data, + param_header[modeltype], + params_stubs, + title=None, + txt_fmt=fmt_2 + ) + + #special table + #------------- + #TODO: exists in linear_model, what about other models + #residual diagnostics + + #output options + #-------------- + #TODO: JP the rest needs to be fixed, similar to summary in linear_model + + def ols_printer(): + """ + print summary table for ols models + """ + table = str(general_table)+'\n'+str(parameter_table) + return table + + def glm_printer(): + table = str(general_table)+'\n'+str(parameter_table) + return table + + printers = {'OLS': ols_printer, 'GLM': glm_printer} + + if returns == 'print': + try: + return printers[modeltype]() + except KeyError: + return printers['OLS']() + + +def _getnames(self, yname=None, xname=None): + '''extract names from model or construct names + ''' + if yname is None: + if getattr(self.model, 'endog_names', None) is not None: + yname = self.model.endog_names + else: + yname = 'y' + + if xname is None: + if getattr(self.model, 'exog_names', None) is not None: + xname = self.model.exog_names + else: + xname = ['var_%d' % i for i in range(len(self.params))] + + return yname, xname + + +def summary_top(results, title=None, gleft=None, gright=None, yname=None, xname=None): + '''generate top table(s) + + + TODO: this still uses predefined model_methods + ? allow gleft, gright to be 1 element tuples instead of filling with None? + + ''' + #change of names ? + gen_left, gen_right = gleft, gright + + # time and names are always included + time_now = time.localtime() + time_of_day = [time.strftime("%H:%M:%S", time_now)] + date = time.strftime("%a, %d %b %Y", time_now) + + yname, xname = _getnames(results, yname=yname, xname=xname) + + # create dictionary with default + # use lambdas because some values raise exception if they are not available + default_items = dict([ + ('Dependent Variable:', lambda: [yname]), + ('Dep. Variable:', lambda: [yname]), + ('Model:', lambda: [results.model.__class__.__name__]), + ('Date:', lambda: [date]), + ('Time:', lambda: time_of_day), + ('Number of Obs:', lambda: [results.nobs]), + ('No. Observations:', lambda: [d_or_f(results.nobs)]), + ('Df Model:', lambda: [d_or_f(results.df_model)]), + ('Df Residuals:', lambda: [d_or_f(results.df_resid)]), + ('Log-Likelihood:', lambda: ["%#8.5g" % results.llf]) # doesn't exist for RLM - exception + ]) + + if title is None: + title = results.model.__class__.__name__ + 'Regression Results' + + if gen_left is None: + # default: General part of the summary table, Applicable to all? models + gen_left = [('Dep. Variable:', None), + ('Model type:', None), + ('Date:', None), + ('No. Observations:', None), + ('Df model:', None), + ('Df resid:', None)] + + try: + llf = results.llf # noqa: F841 + gen_left.append(('Log-Likelihood', None)) + except: # AttributeError, NotImplementedError + pass + + gen_right = [] + + gen_title = title + gen_header = None + + # replace missing (None) values with default values + gen_left_ = [] + for item, value in gen_left: + if value is None: + value = default_items[item]() # let KeyErrors raise exception + gen_left_.append((item, value)) + gen_left = gen_left_ + + if gen_right: + gen_right_ = [] + for item, value in gen_right: + if value is None: + value = default_items[item]() # let KeyErrors raise exception + gen_right_.append((item, value)) + gen_right = gen_right_ + + # check nothing was missed + missing_values = [k for k,v in gen_left + gen_right if v is None] + assert missing_values == [], missing_values + + # pad both tables to equal number of rows + if gen_right: + if len(gen_right) < len(gen_left): + # fill up with blank lines to same length + gen_right += [(' ', ' ')] * (len(gen_left) - len(gen_right)) + elif len(gen_right) > len(gen_left): + # fill up with blank lines to same length, just to keep it symmetric + gen_left += [(' ', ' ')] * (len(gen_right) - len(gen_left)) + + # padding in SimpleTable doesn't work like I want + #force extra spacing and exact string length in right table + gen_right = [('%-21s' % (' '+k), v) for k,v in gen_right] + gen_stubs_right, gen_data_right = zip_longest(*gen_right) #transpose row col + gen_table_right = SimpleTable(gen_data_right, + gen_header, + gen_stubs_right, + title=gen_title, + txt_fmt=fmt_2cols + ) + else: + gen_table_right = [] #because .extend_right seems works with [] + + #moved below so that we can pad if needed to match length of gen_right + #transpose rows and columns, `unzip` + gen_stubs_left, gen_data_left = zip_longest(*gen_left) #transpose row col + + gen_table_left = SimpleTable(gen_data_left, + gen_header, + gen_stubs_left, + title=gen_title, + txt_fmt=fmt_2cols + ) + + gen_table_left.extend_right(gen_table_right) + general_table = gen_table_left + + return general_table + + +def summary_params(results, yname=None, xname=None, alpha=.05, use_t=True, + skip_header=False, title=None): + '''create a summary table for the parameters + + Parameters + ---------- + res : results instance + some required information is directly taken from the result + instance + yname : string or None + optional name for the endogenous variable, default is "y" + xname : list of strings or None + optional names for the exogenous variables, default is "var_xx" + alpha : float + significance level for the confidence intervals + use_t : bool + indicator whether the p-values are based on the Student-t + distribution (if True) or on the normal distribution (if False) + skip_headers : bool + If false (default), then the header row is added. If true, then no + header row is added. + + Returns + ------- + params_table : SimpleTable instance + ''' + + # Parameters part of the summary table + # ------------------------------------ + # Note: this is not necessary since we standardized names, + # only t versus normal + + if isinstance(results, tuple): + # for multivariate endog + # TODO: check whether I don't want to refactor this + #we need to give parameter alpha to conf_int + results, params, std_err, tvalues, pvalues, conf_int = results + else: + params = results.params + std_err = results.bse + tvalues = results.tvalues #is this sometimes called zvalues + pvalues = results.pvalues + conf_int = results.conf_int(alpha) + + # Dictionary to store the header names for the parameter part of the + # summary table. look up by modeltype + if use_t: + param_header = ['coef', 'std err', 't', 'P>|t|', + '[' + str(alpha/2), str(1-alpha/2) + ']'] + else: + param_header = ['coef', 'std err', 'z', 'P>|z|', + '[' + str(alpha/2), str(1-alpha/2) + ']'] + + if skip_header: + param_header = None + + _, xname = _getnames(results, yname=yname, xname=xname) + + if len(xname) != len(params): + raise ValueError('xnames and params do not have the same length') + + params_stubs = xname + + exog_idx = lrange(len(xname)) + + params_data = lzip([forg(params[i], prec=4) for i in exog_idx], + [forg(std_err[i]) for i in exog_idx], + [forg(tvalues[i]) for i in exog_idx], + ["%#6.3f" % (pvalues[i]) for i in exog_idx], + [forg(conf_int[i,0]) for i in exog_idx], + [forg(conf_int[i,1]) for i in exog_idx]) + parameter_table = SimpleTable(params_data, + param_header, + params_stubs, + title=title, + txt_fmt=fmt_params + ) + + return parameter_table + + +def summary_params_frame(results, yname=None, xname=None, alpha=.05, + use_t=True): + '''create a summary table for the parameters + + Parameters + ---------- + res : results instance + some required information is directly taken from the result + instance + yname : string or None + optional name for the endogenous variable, default is "y" + xname : list of strings or None + optional names for the exogenous variables, default is "var_xx" + alpha : float + significance level for the confidence intervals + use_t : bool + indicator whether the p-values are based on the Student-t + distribution (if True) or on the normal distribution (if False) + skip_headers : bool + If false (default), then the header row is added. If true, then no + header row is added. + + Returns + ------- + params_table : SimpleTable instance + ''' + + # Parameters part of the summary table + # ------------------------------------ + # Note: this is not necessary since we standardized names, + # only t versus normal + + if isinstance(results, tuple): + # for multivariate endog + # TODO: check whether I don't want to refactor this + #we need to give parameter alpha to conf_int + results, params, std_err, tvalues, pvalues, conf_int = results + else: + params = results.params + std_err = results.bse + tvalues = results.tvalues #is this sometimes called zvalues + pvalues = results.pvalues + conf_int = results.conf_int(alpha) + + # Dictionary to store the header names for the parameter part of the + # summary table. look up by modeltype + if use_t: + param_header = ['coef', 'std err', 't', 'P>|t|', + 'Conf. Int. Low', 'Conf. Int. Upp.'] + else: + param_header = ['coef', 'std err', 'z', 'P>|z|', + 'Conf. Int. Low', 'Conf. Int. Upp.'] + + _, xname = _getnames(results, yname=yname, xname=xname) + + from pandas import DataFrame + table = np.column_stack((params, std_err, tvalues, pvalues, conf_int)) + return DataFrame(table, columns=param_header, index=xname) + + +def summary_params_2d(result, extras=None, endog_names=None, exog_names=None, + title=None): + '''create summary table of regression parameters with several equations + + This allows interleaving of parameters with bse and/or tvalues + + Parameters + ---------- + result : result instance + the result instance with params and attributes in extras + extras : list of strings + additional attributes to add below a parameter row, e.g. bse or tvalues + endog_names : None or list of strings + names for rows of the parameter array (multivariate endog) + exog_names : None or list of strings + names for columns of the parameter array (exog) + alpha : float + level for confidence intervals, default 0.95 + title : None or string + + Returns + ------- + tables : list of SimpleTable + this contains a list of all seperate Subtables + table_all : SimpleTable + the merged table with results concatenated for each row of the parameter + array + + ''' + if endog_names is None: + # TODO: note the [1:] is specific to current MNLogit + endog_names = ['endog_%d' % i for i in + np.unique(result.model.endog)[1:]] + if exog_names is None: + exog_names = ['var%d' % i for i in range(len(result.params))] + + # TODO: check formatting options with different values + res_params = [[forg(item, prec=4) for item in row] for row in result.params] + if extras: + extras_list = [[['%10s' % ('(' + forg(v, prec=3).strip() + ')') + for v in col] + for col in getattr(result, what)] + for what in extras + ] + data = lzip(res_params, *extras_list) + data = [i for j in data for i in j] #flatten + stubs = lzip(endog_names, *[['']*len(endog_names)]*len(extras)) + stubs = [i for j in stubs for i in j] #flatten + else: + data = res_params + stubs = endog_names + + txt_fmt = copy.deepcopy(fmt_params) + txt_fmt["data_fmts"] = ["%s"]*result.params.shape[1] + + return SimpleTable(data, headers=exog_names, + stubs=stubs, + title=title, + txt_fmt=txt_fmt) + + +def summary_params_2dflat(result, endog_names=None, exog_names=None, alpha=0.05, + use_t=True, keep_headers=True, endog_cols=False): + '''summary table for parameters that are 2d, e.g. multi-equation models + + Parameters + ---------- + result : result instance + the result instance with params, bse, tvalues and conf_int + endog_names : None or list of strings + names for rows of the parameter array (multivariate endog) + exog_names : None or list of strings + names for columns of the parameter array (exog) + alpha : float + level for confidence intervals, default 0.95 + use_t : bool + indicator whether the p-values are based on the Student-t + distribution (if True) or on the normal distribution (if False) + keep_headers : bool + If true (default), then sub-tables keep their headers. If false, then + only the first headers are kept, the other headerse are blanked out + endog_cols : bool + If false (default) then params and other result statistics have + equations by rows. If true, then equations are assumed to be in columns. + Not implemented yet. + + Returns + ------- + tables : list of SimpleTable + this contains a list of all seperate Subtables + table_all : SimpleTable + the merged table with results concatenated for each row of the parameter + array + + ''' + + res = result + params = res.params + if params.ndim == 2: # we've got multiple equations + n_equ = params.shape[1] + if len(endog_names) != params.shape[1]: + raise ValueError('endog_names has wrong length') + else: + if len(endog_names) != len(params): + raise ValueError('endog_names has wrong length') + n_equ = 1 + + #VAR doesn't have conf_int + #params = res.params.T # this is a convention for multi-eq models + + # check that we have the right length of names + if not isinstance(endog_names, list): + # TODO: this might be specific to multinomial logit type, move? + if endog_names is None: + endog_basename = 'endog' + else: + endog_basename = endog_names + # TODO: note, the [1:] is specific to current MNLogit + endog_names = res.model.endog_names[1:] + + tables = [] + for eq in range(n_equ): + restup = (res, res.params[:,eq], res.bse[:,eq], res.tvalues[:,eq], + res.pvalues[:,eq], res.conf_int(alpha)[eq]) + + skiph = False + tble = summary_params(restup, yname=endog_names[eq], + xname=exog_names, alpha=alpha, use_t=use_t, + skip_header=skiph) + + tables.append(tble) + + # add titles, they will be moved to header lines in table_extend + for i in range(len(endog_names)): + tables[i].title = endog_names[i] + + table_all = table_extend(tables, keep_headers=keep_headers) + + return tables, table_all + + +def table_extend(tables, keep_headers=True): + '''extend a list of SimpleTables, adding titles to header of subtables + + This function returns the merged table as a deepcopy, in contrast to the + SimpleTable extend method. + + Parameters + ---------- + tables : list of SimpleTable instances + keep_headers : bool + If true, then all headers are kept. If falls, then the headers of + subtables are blanked out. + + Returns + ------- + table_all : SimpleTable + merged tables as a single SimpleTable instance + + ''' + from copy import deepcopy + for ii, t in enumerate(tables[:]): #[1:]: + t = deepcopy(t) + + #move title to first cell of header + # TODO: check if we have multiline headers + if t[0].datatype == 'header': + t[0][0].data = t.title + t[0][0]._datatype = None + t[0][0].row = t[0][1].row + if not keep_headers and (ii > 0): + for c in t[0][1:]: + c.data = '' + + # add separating line and extend tables + if ii == 0: + table_all = t + else: + r1 = table_all[-1] + r1.add_format('txt', row_dec_below='-') + table_all.extend(t) + + table_all.title = None + return table_all + + +def summary_return(tables, return_fmt='text'): + # join table parts then print + if return_fmt == 'text': + strdrop = lambda x: str(x).rsplit('\n',1)[0] + # convert to string drop last line + return '\n'.join(lmap(strdrop, tables[:-1]) + [str(tables[-1])]) + elif return_fmt == 'tables': + return tables + elif return_fmt == 'csv': + return '\n'.join(x.as_csv() for x in tables) + elif return_fmt == 'latex': + # TODO: insert \hline after updating SimpleTable + table = copy.deepcopy(tables[0]) + del table[-1] + for part in tables[1:]: + table.extend(part) + return table.as_latex_tabular() + elif return_fmt == 'html': + return "\n".join(table.as_html() for table in tables) + else: + raise ValueError('available output formats are text, csv, latex, html') + + +class Summary(object): + '''class to hold tables for result summary presentation + + Construction does not take any parameters. Tables and text can be added + with the `add_` methods. + + Attributes + ---------- + tables : list of tables + Contains the list of SimpleTable instances, horizontally concatenated + tables are not saved separately. + extra_txt : string + extra lines that are added to the text output, used for warnings + and explanations. + ''' + def __init__(self): + self.tables = [] + self.extra_txt = None + + def __str__(self): + return self.as_text() + + def __repr__(self): + return str(type(self)) + '\n"""\n' + self.__str__() + '\n"""' + + def _repr_html_(self): + '''Display as HTML in IPython notebook.''' + return self.as_html() + + def add_table_2cols(self, res, title=None, gleft=None, gright=None, + yname=None, xname=None): + '''add a double table, 2 tables with one column merged horizontally + + Parameters + ---------- + res : results instance + some required information is directly taken from the result + instance + title : string or None + if None, then a default title is used. + gleft : list of tuples + elements for the left table, tuples are (name, value) pairs + If gleft is None, then a default table is created + gright : list of tuples or None + elements for the right table, tuples are (name, value) pairs + yname : string or None + optional name for the endogenous variable, default is "y" + xname : list of strings or None + optional names for the exogenous variables, default is "var_xx" + + Returns + ------- + None : tables are attached + + ''' + + table = summary_top(res, title=title, gleft=gleft, gright=gright, + yname=yname, xname=xname) + self.tables.append(table) + + def add_table_params(self, res, yname=None, xname=None, alpha=.05, + use_t=True): + '''create and add a table for the parameter estimates + + Parameters + ---------- + res : results instance + some required information is directly taken from the result + instance + yname : string or None + optional name for the endogenous variable, default is "y" + xname : list of strings or None + optional names for the exogenous variables, default is "var_xx" + alpha : float + significance level for the confidence intervals + use_t : bool + indicator whether the p-values are based on the Student-t + distribution (if True) or on the normal distribution (if False) + + Returns + ------- + None : table is attached + + ''' + if res.params.ndim == 1: + table = summary_params(res, yname=yname, xname=xname, alpha=alpha, + use_t=use_t) + elif res.params.ndim == 2: + _, table = summary_params_2dflat(res, endog_names=yname, + exog_names=xname, + alpha=alpha, use_t=use_t) + else: + raise ValueError('params has to be 1d or 2d') + self.tables.append(table) + + def add_extra_txt(self, etext): + '''add additional text that will be added at the end in text format + + Parameters + ---------- + etext : list[str] + string with lines that are added to the text output. + + ''' + self.extra_txt = '\n'.join(etext) + + def as_text(self): + '''return tables as string + + Returns + ------- + txt : string + summary tables and extra text as one string + + ''' + txt = summary_return(self.tables, return_fmt='text') + if self.extra_txt is not None: + txt = txt + '\n\n' + self.extra_txt + return txt + + def as_latex(self): + '''return tables as string + + Returns + ------- + latex : string + summary tables and extra text as string of Latex + + Notes + ----- + This currently merges tables with different number of columns. + It is recommended to use `as_latex_tabular` directly on the individual + tables. + + ''' + latex = summary_return(self.tables, return_fmt='latex') + if self.extra_txt is not None: + latex = latex + '\n\n' + self.extra_txt.replace('\n', ' \\newline\n ') + return latex + + def as_csv(self): + '''return tables as string + + Returns + ------- + csv : string + concatenated summary tables in comma delimited format + + ''' + csv = summary_return(self.tables, return_fmt='csv') + if self.extra_txt is not None: + csv = csv + '\n\n' + self.extra_txt + return csv + + def as_html(self): + '''return tables as string + + Returns + ------- + html : string + concatenated summary tables in HTML format + + ''' + html = summary_return(self.tables, return_fmt='html') + if self.extra_txt is not None: + html = html + '

    ' + self.extra_txt.replace('\n', '
    ') + return html diff --git a/statsmodels/iolib/summary2.py b/statsmodels/iolib/summary2.py new file mode 100644 index 0000000..77201e8 --- /dev/null +++ b/statsmodels/iolib/summary2.py @@ -0,0 +1,585 @@ +from statsmodels.compat.python import (lrange, iterkeys, iteritems, lzip, + reduce, itervalues, zip, string_types, + range) + +from collections import OrderedDict +import datetime +import re +import textwrap + +import numpy as np +import pandas as pd + +from .table import SimpleTable +from .tableformatting import fmt_latex, fmt_txt + + +class Summary(object): + def __init__(self): + self.tables = [] + self.settings = [] + self.extra_txt = [] + self.title = None + self._merge_latex = False + + def __str__(self): + return self.as_text() + + def __repr__(self): + return str(type(self)) + '\n"""\n' + self.__str__() + '\n"""' + + def _repr_html_(self): + '''Display as HTML in IPython notebook.''' + return self.as_html() + + def add_df(self, df, index=True, header=True, float_format='%.4f', + align='r'): + '''Add the contents of a DataFrame to summary table + + Parameters + ---------- + df : DataFrame + header: bool + Reproduce the DataFrame column labels in summary table + index: bool + Reproduce the DataFrame row labels in summary table + float_format: string + Formatting to float data columns + align : string + Data alignment (l/c/r) + ''' + + settings = {'index': index, 'header': header, + 'float_format': float_format, 'align': align} + self.tables.append(df) + self.settings.append(settings) + + def add_array(self, array, align='r', float_format="%.4f"): + '''Add the contents of a Numpy array to summary table + + Parameters + ---------- + array : numpy array (2D) + float_format: string + Formatting to array if type is float + align : string + Data alignment (l/c/r) + ''' + + table = pd.DataFrame(array) + self.add_df(table, index=False, header=False, + float_format=float_format, align=align) + + def add_dict(self, d, ncols=2, align='l', float_format="%.4f"): + '''Add the contents of a Dict to summary table + + Parameters + ---------- + d : dict + Keys and values are automatically coerced to strings with str(). + Users are encouraged to format them before using add_dict. + ncols: int + Number of columns of the output table + align : string + Data alignment (l/c/r) + ''' + + keys = [_formatter(x, float_format) for x in iterkeys(d)] + vals = [_formatter(x, float_format) for x in itervalues(d)] + data = np.array(lzip(keys, vals)) + + if data.shape[0] % ncols != 0: + pad = ncols - (data.shape[0] % ncols) + data = np.vstack([data, np.array(pad * [['', '']])]) + + data = np.split(data, ncols) + data = reduce(lambda x, y: np.hstack([x, y]), data) + self.add_array(data, align=align) + + def add_text(self, string): + '''Append a note to the bottom of the summary table. In ASCII tables, + the note will be wrapped to table width. Notes are not indendented. + ''' + self.extra_txt.append(string) + + def add_title(self, title=None, results=None): + '''Insert a title on top of the summary table. If a string is provided + in the title argument, that string is printed. If no title string is + provided but a results instance is provided, statsmodels attempts + to construct a useful title automatically. + ''' + if isinstance(title, string_types): + self.title = title + else: + try: + model = results.model.__class__.__name__ + if model in _model_types: + model = _model_types[model] + self.title = 'Results: ' + model + except: + self.title = '' + + def add_base(self, results, alpha=0.05, float_format="%.4f", title=None, + xname=None, yname=None): + '''Try to construct a basic summary instance. + + Parameters + ---------- + results : Model results instance + alpha : float + significance level for the confidence intervals (optional) + float_formatting: string + Float formatting for summary of parameters (optional) + title : string + Title of the summary table (optional) + xname : List of strings of length equal to the number of parameters + Names of the independent variables (optional) + yname : string + Name of the dependent variable (optional) + ''' + + param = summary_params(results, alpha=alpha, use_t=results.use_t) + info = summary_model(results) + if xname is not None: + param.index = xname + if yname is not None: + info['Dependent Variable:'] = yname + self.add_dict(info, align='l') + self.add_df(param, float_format=float_format) + self.add_title(title=title, results=results) + + def as_text(self): + '''Generate ASCII Summary Table + ''' + + tables = self.tables + settings = self.settings + title = self.title + extra_txt = self.extra_txt + + pad_col, pad_index, widest = _measure_tables(tables, settings) + + rule_equal = widest * '=' + + simple_tables = _simple_tables(tables, settings, pad_col, pad_index) + tab = [x.as_text() for x in simple_tables] + + tab = '\n'.join(tab) + tab = tab.split('\n') + tab[0] = rule_equal + tab.append(rule_equal) + tab = '\n'.join(tab) + + if title is not None: + title = title + if len(title) < widest: + title = ' ' * int(widest/2 - len(title)/2) + title + else: + title = '' + + txt = [textwrap.wrap(x, widest) for x in extra_txt] + txt = ['\n'.join(x) for x in txt] + txt = '\n'.join(txt) + + out = '\n'.join([title, tab, txt]) + + return out + + def as_html(self): + '''Generate HTML Summary Table + ''' + + tables = self.tables + settings = self.settings + #TODO: this isn't used anywhere + title = self.title + + simple_tables = _simple_tables(tables, settings) + tab = [x.as_html() for x in simple_tables] + tab = '\n'.join(tab) + + return tab + + def as_latex(self): + '''Generate LaTeX Summary Table + ''' + tables = self.tables + settings = self.settings + title = self.title + + if title is not None: + title = '\\caption{' + title + '}' + else: + title = '\\caption{}' + + simple_tables = _simple_tables(tables, settings) + tab = [x.as_latex_tabular() for x in simple_tables] + tab = '\n\\hline\n'.join(tab) + + to_replace = ('\\\\hline\\n\\\\hline\\n\\\\' + 'end{tabular}\\n\\\\begin{tabular}{.*}\\n') + + if self._merge_latex: + # create single tabular object for summary_col + tab = re.sub(to_replace,r'\\midrule\n', tab) + + out = '\\begin{table}', title, tab, '\\end{table}' + out = '\n'.join(out) + return out + + +def _measure_tables(tables, settings): + '''Compare width of ascii tables in a list and calculate padding values. + We add space to each col_sep to get us as close as possible to the + width of the largest table. Then, we add a few spaces to the first + column to pad the rest. + ''' + + simple_tables = _simple_tables(tables, settings) + tab = [x.as_text() for x in simple_tables] + + length = [len(x.splitlines()[0]) for x in tab] + len_max = max(length) + pad_sep = [] + pad_index = [] + + for i in range(len(tab)): + nsep = max(tables[i].shape[1] - 1, 1) + pad = int((len_max - length[i]) / nsep) + pad_sep.append(pad) + len_new = length[i] + nsep * pad + pad_index.append(len_max - len_new) + + return pad_sep, pad_index, max(length) + + +# Useful stuff +_model_types = {'OLS': 'Ordinary least squares', + 'GLS': 'Generalized least squares', + 'GLSAR' : 'Generalized least squares with AR(p)', + 'WLS': 'Weighted least squares', + 'RLM': 'Robust linear model', + 'NBin': 'Negative binomial model', + 'GLM': 'Generalized linear model' + } + + +def summary_model(results): + '''Create a dict with information about the model + ''' + + def time_now(*args, **kwds): + now = datetime.datetime.now() + return now.strftime('%Y-%m-%d %H:%M') + + info = OrderedDict() + info['Model:'] = lambda x: x.model.__class__.__name__ + info['Model Family:'] = lambda x: x.family.__class.__name__ + info['Link Function:'] = lambda x: x.family.link.__class__.__name__ + info['Dependent Variable:'] = lambda x: x.model.endog_names + info['Date:'] = time_now + info['No. Observations:'] = lambda x: "%#6d" % x.nobs + info['Df Model:'] = lambda x: "%#6d" % x.df_model + info['Df Residuals:'] = lambda x: "%#6d" % x.df_resid + info['Converged:'] = lambda x: x.mle_retvals['converged'] + info['No. Iterations:'] = lambda x: x.mle_retvals['iterations'] + info['Method:'] = lambda x: x.method + info['Norm:'] = lambda x: x.fit_options['norm'] + info['Scale Est.:'] = lambda x: x.fit_options['scale_est'] + info['Cov. Type:'] = lambda x: x.fit_options['cov'] + + rsquared_type = '' if results.k_constant else ' (uncentered)' + info['R-squared' + rsquared_type + ':'] = lambda x: "%#8.3f" % x.rsquared + info['Adj. R-squared' + rsquared_type + ':'] = lambda x: "%#8.3f" % x.rsquared_adj + info['Pseudo R-squared:'] = lambda x: "%#8.3f" % x.prsquared + info['AIC:'] = lambda x: "%8.4f" % x.aic + info['BIC:'] = lambda x: "%8.4f" % x.bic + info['Log-Likelihood:'] = lambda x: "%#8.5g" % x.llf + info['LL-Null:'] = lambda x: "%#8.5g" % x.llnull + info['LLR p-value:'] = lambda x: "%#8.5g" % x.llr_pvalue + info['Deviance:'] = lambda x: "%#8.5g" % x.deviance + info['Pearson chi2:'] = lambda x: "%#6.3g" % x.pearson_chi2 + info['F-statistic:'] = lambda x: "%#8.4g" % x.fvalue + info['Prob (F-statistic):'] = lambda x: "%#6.3g" % x.f_pvalue + info['Scale:'] = lambda x: "%#8.5g" % x.scale + out = OrderedDict() + for key, func in iteritems(info): + try: + out[key] = func(results) + except (AttributeError, KeyError, NotImplementedError): + # NOTE: some models don't have loglike defined (RLM), + # so raise NotImplementedError + pass + return out + + +def summary_params(results, yname=None, xname=None, alpha=.05, use_t=True, + skip_header=False, float_format="%.4f"): + '''create a summary table of parameters from results instance + + Parameters + ---------- + res : results instance + some required information is directly taken from the result + instance + yname : string or None + optional name for the endogenous variable, default is "y" + xname : list of strings or None + optional names for the exogenous variables, default is "var_xx" + alpha : float + significance level for the confidence intervals + use_t : bool + indicator whether the p-values are based on the Student-t + distribution (if True) or on the normal distribution (if False) + skip_headers : bool + If false (default), then the header row is added. If true, then no + header row is added. + float_format : string + float formatting options (e.g. ".3g") + + Returns + ------- + params_table : SimpleTable instance + ''' + + if isinstance(results, tuple): + results, params, bse, tvalues, pvalues, conf_int = results + else: + params = results.params + bse = results.bse + tvalues = results.tvalues + pvalues = results.pvalues + conf_int = results.conf_int(alpha) + + data = np.array([params, bse, tvalues, pvalues]).T + data = np.hstack([data, conf_int]) + data = pd.DataFrame(data) + + if use_t: + data.columns = ['Coef.', 'Std.Err.', 't', 'P>|t|', + '[' + str(alpha/2), str(1-alpha/2) + ']'] + else: + data.columns = ['Coef.', 'Std.Err.', 'z', 'P>|z|', + '[' + str(alpha/2), str(1-alpha/2) + ']'] + + if not xname: + try: + data.index = results.model.data.param_names + except AttributeError: + data.index = results.model.exog_names + else: + data.index = xname + + return data + + +# Vertical summary instance for multiple models +def _col_params(result, float_format='%.4f', stars=True): + '''Stack coefficients and standard errors in single column + ''' + + # Extract parameters + res = summary_params(result) + # Format float + for col in res.columns[:2]: + res[col] = res[col].apply(lambda x: float_format % x) + # Std.Errors in parentheses + res.iloc[:, 1] = '(' + res.iloc[:, 1] + ')' + # Significance stars + if stars: + idx = res.iloc[:, 3] < .1 + res.loc[idx, res.columns[0]] = res.loc[idx, res.columns[0]] + '*' + idx = res.iloc[:, 3] < .05 + res.loc[idx, res.columns[0]] = res.loc[idx, res.columns[0]] + '*' + idx = res.iloc[:, 3] < .01 + res.loc[idx, res.columns[0]] = res.loc[idx, res.columns[0]] + '*' + # Stack Coefs and Std.Errors + res = res.iloc[:, :2] + res = res.stack() + res = pd.DataFrame(res) + res.columns = [str(result.model.endog_names)] + return res + + +def _col_info(result, info_dict=None): + '''Stack model info in a column + ''' + + if info_dict is None: + info_dict = {} + out = [] + index = [] + for i in info_dict: + if isinstance(info_dict[i], dict): + # this is a specific model info_dict, but not for this result... + continue + try: + out.append(info_dict[i](result)) + except: + out.append('') + index.append(i) + out = pd.DataFrame({str(result.model.endog_names): out}, index=index) + return out + + +def _make_unique(list_of_names): + if len(set(list_of_names)) == len(list_of_names): + return list_of_names + # pandas does not like it if multiple columns have the same names + from collections import defaultdict + name_counter = defaultdict(str) + header = [] + for _name in list_of_names: + name_counter[_name] += "I" + header.append(_name+" " + name_counter[_name]) + return header + + +def summary_col(results, float_format='%.4f', model_names=(), stars=False, + info_dict=None, regressor_order=(), drop_omitted=False): + """ + Summarize multiple results instances side-by-side (coefs and SEs) + + Parameters + ---------- + results : statsmodels results instance or list of result instances + float_format : string, optional + float format for coefficients and standard errors + Default : '%.4f' + model_names : list of strings, optional + Must have same length as the number of results. If the names are not + unique, a roman number will be appended to all model names + stars : bool + print significance stars + info_dict : dict + dict of functions to be applied to results instances to retrieve + model info. To use specific information for different models, add a + (nested) info_dict with model name as the key. + Example: `info_dict = {"N":..., "R2": ..., "OLS":{"R2":...}}` would + only show `R2` for OLS regression models, but additionally `N` for + all other results. + Default : None (use the info_dict specified in + result.default_model_infos, if this property exists) + regressor_order : list of strings, optional + list of names of the regressors in the desired order. All regressors + not specified will be appended to the end of the list. + drop_omitted : bool, optional + Includes regressors that are not specified in regressor_order. If False, + regressors not specified will be appended to end of the list. If True, + only regressors in regressors_list will be included. + """ + + if not isinstance(results, list): + results = [results] + + cols = [_col_params(x, stars=stars, float_format=float_format) for x in + results] + + # Unique column names (pandas has problems merging otherwise) + if model_names: + colnames = _make_unique(model_names) + else: + colnames = _make_unique([x.columns[0] for x in cols]) + for i in range(len(cols)): + cols[i].columns = [colnames[i]] + + merg = lambda x, y: x.merge(y, how='outer', right_index=True, + left_index=True) + summ = reduce(merg, cols) + + if regressor_order: + varnames = summ.index.get_level_values(0).tolist() + ordered = [x for x in regressor_order if x in varnames] + unordered = [x for x in varnames if x not in regressor_order + ['']] + order = ordered + list(np.unique(unordered)) + + f = lambda idx: sum([[x + 'coef', x + 'stde'] for x in idx], []) + summ.index = f(pd.unique(varnames)) + summ = summ.reindex(f(order)) + summ.index = [x[:-4] for x in summ.index] + if drop_omitted: + summ = summ.loc[regressor_order] + + idx = pd.Series(lrange(summ.shape[0])) % 2 == 1 + summ.index = np.where(idx, '', summ.index.get_level_values(0)) + + # add infos about the models. + if info_dict: + cols = [_col_info(x, info_dict.get(x.model.__class__.__name__, + info_dict)) for x in results] + else: + cols = [_col_info(x, getattr(x, "default_model_infos", None)) for x in + results] + # use unique column names, otherwise the merge will not succeed + for df, name in zip(cols, _make_unique([df.columns[0] for df in cols])): + df.columns = [name] + merg = lambda x, y: x.merge(y, how='outer', right_index=True, + left_index=True) + info = reduce(merg, cols) + dat = pd.DataFrame(np.vstack([summ, info])) # pd.concat better, but error + dat.columns = summ.columns + dat.index = pd.Index(summ.index.tolist() + info.index.tolist()) + summ = dat + + summ = summ.fillna('') + + smry = Summary() + smry._merge_latex = True + smry.add_df(summ, header=True, align='l') + smry.add_text('Standard errors in parentheses.') + if stars: + smry.add_text('* p<.1, ** p<.05, ***p<.01') + + return smry + + +def _formatter(element, float_format='%.4f'): + try: + out = float_format % element + except: + out = str(element) + return out.strip() + + +def _df_to_simpletable(df, align='r', float_format="%.4f", header=True, + index=True, table_dec_above='-', table_dec_below=None, + header_dec_below='-', pad_col=0, pad_index=0): + dat = df.copy() + dat = dat.applymap(lambda x: _formatter(x, float_format)) + if header: + headers = [str(x) for x in dat.columns.tolist()] + else: + headers = None + if index: + stubs = [str(x) + int(pad_index) * ' ' for x in dat.index.tolist()] + else: + dat.iloc[:, 0] = [str(x) + int(pad_index) * ' ' for x in dat.iloc[:, 0]] + stubs = None + st = SimpleTable(np.array(dat), headers=headers, stubs=stubs, + ltx_fmt=fmt_latex, txt_fmt=fmt_txt) + st.output_formats['latex']['data_aligns'] = align + st.output_formats['txt']['data_aligns'] = align + st.output_formats['txt']['table_dec_above'] = table_dec_above + st.output_formats['txt']['table_dec_below'] = table_dec_below + st.output_formats['txt']['header_dec_below'] = header_dec_below + st.output_formats['txt']['colsep'] = ' ' * int(pad_col + 1) + return st + + +def _simple_tables(tables, settings, pad_col=None, pad_index=None): + simple_tables = [] + float_format = settings[0]['float_format'] if settings else '%.4f' + if pad_col is None: + pad_col = [0] * len(tables) + if pad_index is None: + pad_index = [0] * len(tables) + for i, v in enumerate(tables): + index = settings[i]['index'] + header = settings[i]['header'] + align = settings[i]['align'] + simple_tables.append(_df_to_simpletable(v, align=align, + float_format=float_format, + header=header, index=index, + pad_col=pad_col[i], + pad_index=pad_index[i])) + return simple_tables diff --git a/statsmodels/iolib/table.py b/statsmodels/iolib/table.py new file mode 100644 index 0000000..0ff3204 --- /dev/null +++ b/statsmodels/iolib/table.py @@ -0,0 +1,921 @@ +""" +Provides a simple table class. A SimpleTable is essentially +a list of lists plus some formatting functionality. + +Dependencies: the Python 2.5+ standard library. + +Installation: just copy this module into your working directory (or + anywhere in your pythonpath). + +Basic use:: + + mydata = [[11,12],[21,22]] # data MUST be 2-dimensional + myheaders = [ "Column 1", "Column 2" ] + mystubs = [ "Row 1", "Row 2" ] + tbl = SimpleTable(mydata, myheaders, mystubs, title="Title") + print( tbl ) + print( tbl.as_csv() ) + +A SimpleTable is inherently (but not rigidly) rectangular. +You should create it from a *rectangular* (2d!) iterable of data. +Each item in your rectangular iterable will become the data +of a single Cell. In principle, items can be any object, +not just numbers and strings. However, default conversion +during table production is by simple string interpolation. +(So you cannot have a tuple as a data item *and* rely on +the default conversion.) + +A SimpleTable allows only one column (the first) of stubs at +initilization, concatenation of tables allows you to produce tables +with interior stubs. (You can also assign the datatype 'stub' to the +cells in any column, or use ``insert_stubs``.) A SimpleTable can be +concatenated with another SimpleTable or extended by another +SimpleTable. :: + + table1.extend_right(table2) + table1.extend(table2) + + +A SimpleTable can be initialized with `datatypes`: a list of ints that +provide indexes into `data_fmts` and `data_aligns`. Each data cell is +assigned a datatype, which will control formatting. If you do not +specify the `datatypes` list, it will be set to ``range(ncols)`` where +`ncols` is the number of columns in the data. (I.e., cells in a +column have their own datatype.) This means that you can just specify +`data_fmts` without bothering to provide a `datatypes` list. If +``len(datatypes)'] + if self.title: + title = '%s' % self.title + formatted_rows.append(title) + formatted_rows.extend(row.as_string('html', **fmt) for row in self) + formatted_rows.append('') + return '\n'.join(formatted_rows) + + def as_latex_tabular(self, center=True, **fmt_dict): + '''Return string, the table as a LaTeX tabular environment. + Note: will require the booktabs package.''' + # fetch the text format, override with fmt_dict + fmt = self._get_fmt('latex', **fmt_dict) + + formatted_rows = [] + if center: + formatted_rows.append(r'\begin{center}') + + table_dec_above = fmt['table_dec_above'] or '' + table_dec_below = fmt['table_dec_below'] or '' + + prev_aligns = None + last = None + for row in self + [last]: + if row == last: + aligns = None + else: + aligns = row.get_aligns('latex', **fmt) + + if aligns != prev_aligns: + # When the number/type of columns changes... + if prev_aligns: + # ... if there is a tabular to close, close it... + formatted_rows.append(table_dec_below) + formatted_rows.append(r'\end{tabular}') + if aligns: + # ... and if there are more lines, open a new one: + formatted_rows.append(r'\begin{tabular}{%s}' % aligns) + if not prev_aligns: + # (with a nice line if it's the top of the whole table) + formatted_rows.append(table_dec_above) + if row != last: + formatted_rows.append( + row.as_string(output_format='latex', **fmt)) + prev_aligns = aligns + # tabular does not support caption, but make it available for + # figure environment + if self.title: + title = r'%%\caption{%s}' % self.title + formatted_rows.append(title) + if center: + formatted_rows.append(r'\end{center}') + + # Replace $$ due to bug in GH 5444 + return '\n'.join(formatted_rows).replace('$$', ' ') + + + def extend_right(self, table): + """Return None. + Extend each row of `self` with corresponding row of `table`. + Does **not** import formatting from ``table``. + This generally makes sense only if the two tables have + the same number of rows, but that is not enforced. + :note: To extend append a table below, just use `extend`, + which is the ordinary list method. This generally makes sense + only if the two tables have the same number of columns, + but that is not enforced. + """ + for row1, row2 in zip(self, table): + row1.extend(row2) + + def label_cells(self, func): + """Return None. Labels cells based on `func`. + If ``func(cell) is None`` then its datatype is + not changed; otherwise it is set to ``func(cell)``. + """ + for row in self: + for cell in row: + label = func(cell) + if label is not None: + cell.datatype = label + + @property + def data(self): + return [row.data for row in self] + + +def pad(s, width, align): + """Return string padded with spaces, + based on alignment parameter.""" + if align == 'l': + s = s.ljust(width) + elif align == 'r': + s = s.rjust(width) + else: + s = s.center(width) + return s + + +class Row(list): + """Provides a table row as a list of cells. + A row can belong to a SimpleTable, but does not have to. + """ + def __init__(self, seq, datatype='data', table=None, celltype=None, + dec_below='row_dec_below', **fmt_dict): + """ + Parameters + ---------- + seq : sequence of data or cells + table : SimpleTable + datatype : str ('data' or 'header') + dec_below : str + (e.g., 'header_dec_below' or 'row_dec_below') + decoration tag, identifies the decoration to go below the row. + (Decoration is repeated as needed for text formats.) + """ + self.datatype = datatype + self.table = table + if celltype is None: + if table is None: + celltype = Cell + else: + celltype = table._Cell + self._Cell = celltype + self._fmt = fmt_dict + self.special_fmts = dict() # special formatting for any output format + self.dec_below = dec_below + list.__init__(self, (celltype(cell, row=self) for cell in seq)) + + def add_format(self, output_format, **fmt_dict): + """ + Return None. Adds row-instance specific formatting + for the specified output format. + Example: myrow.add_format('txt', row_dec_below='+-') + """ + output_format = get_output_format(output_format) + if output_format not in self.special_fmts: + self.special_fmts[output_format] = dict() + self.special_fmts[output_format].update(fmt_dict) + + def insert_stub(self, loc, stub): + """Return None. Inserts a stub cell + in the row at `loc`. + """ + _Cell = self._Cell + if not isinstance(stub, _Cell): + stub = stub + stub = _Cell(stub, datatype='stub', row=self) + self.insert(loc, stub) + + def _get_fmt(self, output_format, **fmt_dict): + """Return dict, the formatting options. + """ + output_format = get_output_format(output_format) + # first get the default formatting + try: + fmt = default_fmts[output_format].copy() + except KeyError: + raise ValueError('Unknown format: %s' % output_format) + # second get table specific formatting (if possible) + try: + fmt.update(self.table.output_formats[output_format]) + except AttributeError: + pass + # finally, add formatting for this row and this call + fmt.update(self._fmt) + fmt.update(fmt_dict) + special_fmt = self.special_fmts.get(output_format, None) + if special_fmt is not None: + fmt.update(special_fmt) + return fmt + + def get_aligns(self, output_format, **fmt_dict): + """Return string, sequence of column alignments. + Ensure comformable data_aligns in `fmt_dict`.""" + fmt = self._get_fmt(output_format, **fmt_dict) + return ''.join(cell.alignment(output_format, **fmt) for cell in self) + + def as_string(self, output_format='txt', **fmt_dict): + """Return string: the formatted row. + This is the default formatter for rows. + Override this to get different formatting. + A row formatter must accept as arguments + a row (self) and an output format, + one of ('html', 'txt', 'csv', 'latex'). + """ + fmt = self._get_fmt(output_format, **fmt_dict) + + # get column widths + try: + colwidths = self.table.get_colwidths(output_format, **fmt) + except AttributeError: + colwidths = fmt.get('colwidths') + if colwidths is None: + colwidths = (0,) * len(self) + + colsep = fmt['colsep'] + row_pre = fmt.get('row_pre', '') + row_post = fmt.get('row_post', '') + formatted_cells = [] + for cell, width in zip(self, colwidths): + content = cell.format(width, output_format=output_format, **fmt) + formatted_cells.append(content) + formatted_row = row_pre + colsep.join(formatted_cells) + row_post + formatted_row = self._decorate_below(formatted_row, output_format, + **fmt) + return formatted_row + + def _decorate_below(self, row_as_string, output_format, **fmt_dict): + """This really only makes sense for the text and latex output formats. + """ + dec_below = fmt_dict.get(self.dec_below, None) + if dec_below is None: + result = row_as_string + else: + output_format = get_output_format(output_format) + if output_format == 'txt': + row0len = len(row_as_string) + dec_len = len(dec_below) + repeat, addon = divmod(row0len, dec_len) + result = row_as_string + "\n" + (dec_below * repeat + + dec_below[:addon]) + elif output_format == 'latex': + result = row_as_string + "\n" + dec_below + else: + raise ValueError("I can't decorate a %s header." % + output_format) + return result + + @property + def data(self): + return [cell.data for cell in self] + + +class Cell(object): + """Provides a table cell. + A cell can belong to a Row, but does not have to. + """ + def __init__(self, data='', datatype=None, row=None, **fmt_dict): + if isinstance(data, Cell): + # might have passed a Cell instance + self.data = data.data + self._datatype = data.datatype + self._fmt = data._fmt + else: + self.data = data + self._datatype = datatype + self._fmt = dict() + self._fmt.update(fmt_dict) + self.row = row + + def __str__(self): + return '%s' % self.data + + def _get_fmt(self, output_format, **fmt_dict): + """Return dict, the formatting options. + """ + output_format = get_output_format(output_format) + # first get the default formatting + try: + fmt = default_fmts[output_format].copy() + except KeyError: + raise ValueError('Unknown format: %s' % output_format) + # then get any table specific formtting + try: + fmt.update(self.row.table.output_formats[output_format]) + except AttributeError: + pass + # then get any row specific formtting + try: + fmt.update(self.row._fmt) + except AttributeError: + pass + # finally add formatting for this instance and call + fmt.update(self._fmt) + fmt.update(fmt_dict) + return fmt + + def alignment(self, output_format, **fmt_dict): + fmt = self._get_fmt(output_format, **fmt_dict) + datatype = self.datatype + data_aligns = fmt.get('data_aligns', 'c') + if isinstance(datatype, (int, long)): + align = data_aligns[datatype % len(data_aligns)] + elif datatype == 'stub': + # still support deprecated `stubs_align` + align = fmt.get('stubs_align') or fmt.get('stub_align', 'l') + elif datatype in fmt: + label_align = '%s_align' % datatype + align = fmt.get(label_align, 'c') + else: + raise ValueError('Unknown cell datatype: %s' % datatype) + return align + + @staticmethod + def _latex_escape(data, fmt, output_format): + if output_format != 'latex': + return data + if "replacements" in fmt: + if isinstance(data, str): + for repl in sorted(fmt["replacements"]): + data = data.replace(repl, fmt["replacements"][repl]) + return data + + def format(self, width, output_format='txt', **fmt_dict): + """Return string. + This is the default formatter for cells. + Override this to get different formating. + A cell formatter must accept as arguments + a cell (self) and an output format, + one of ('html', 'txt', 'csv', 'latex'). + It will generally respond to the datatype, + one of (int, 'header', 'stub'). + """ + fmt = self._get_fmt(output_format, **fmt_dict) + + data = self.data + datatype = self.datatype + data_fmts = fmt.get('data_fmts') + if data_fmts is None: + # chk allow for deprecated use of data_fmt + data_fmt = fmt.get('data_fmt') + if data_fmt is None: + data_fmt = '%s' + data_fmts = [data_fmt] + if isinstance(datatype, (int, long)): + datatype = datatype % len(data_fmts) # constrain to indexes + content = data_fmts[datatype] % (data,) + if datatype == 0: + content = self._latex_escape(content, fmt, output_format) + elif datatype in fmt: + data = self._latex_escape(data, fmt, output_format) + + dfmt = fmt.get(datatype) + try: + content = dfmt % (data,) + except TypeError: # dfmt is not a substitution string + content = dfmt + else: + raise ValueError('Unknown cell datatype: %s' % datatype) + align = self.alignment(output_format, **fmt) + return pad(content, width, align) + + def get_datatype(self): + if self._datatype is None: + dtype = self.row.datatype + else: + dtype = self._datatype + return dtype + + def set_datatype(self, val): + # TODO: add checking + self._datatype = val + datatype = property(get_datatype, set_datatype) + + +# begin: default formats for SimpleTable +""" Some formatting suggestions: + +- if you want rows to have no extra spacing, + set colwidths=0 and colsep=''. + (Naturally the columns will not align.) +- if you want rows to have minimal extra spacing, + set colwidths=1. The columns will align. +- to get consistent formatting, you should leave + all field width handling to SimpleTable: + use 0 as the field width in data_fmts. E.g., :: + + data_fmts = ["%#0.6g","%#0.6g","%#0.4g","%#0.4g"], + colwidths = 14, + data_aligns = "r", +""" +default_txt_fmt = dict( + fmt='txt', + # basic table formatting + table_dec_above='=', + table_dec_below='-', + title_align='c', + # basic row formatting + row_pre='', + row_post='', + header_dec_below='-', + row_dec_below=None, + colwidths=None, + colsep=' ', + data_aligns="r", # GH 1477 + # data formats + # data_fmt="%s", #deprecated; use data_fmts + data_fmts=["%s"], + # labeled alignments + # stubs_align='l', #deprecated; use data_fmts + stub_align='l', + header_align='c', + # labeled formats + header_fmt='%s', # deprecated; just use 'header' + stub_fmt='%s', # deprecated; just use 'stub' + header='%s', + stub='%s', + empty_cell='', # deprecated; just use 'empty' + empty='', + missing='--', +) + +default_csv_fmt = dict( + fmt='csv', + table_dec_above=None, # '', + table_dec_below=None, # '', + # basic row formatting + row_pre='', + row_post='', + header_dec_below=None, # '', + row_dec_below=None, + title_align='', + data_aligns="l", + colwidths=None, + colsep=',', + # data formats + data_fmt='%s', # deprecated; use data_fmts + data_fmts=['%s'], + # labeled alignments + # stubs_align='l', # deprecated; use data_fmts + stub_align="l", + header_align='c', + # labeled formats + header_fmt='"%s"', # deprecated; just use 'header' + stub_fmt='"%s"', # deprecated; just use 'stub' + empty_cell='', # deprecated; just use 'empty' + header='%s', + stub='%s', + empty='', + missing='--', +) + +default_html_fmt = dict( + # basic table formatting + table_dec_above=None, + table_dec_below=None, + header_dec_below=None, + row_dec_below=None, + title_align='c', + # basic row formatting + colwidths=None, + colsep=' ', + row_pre='\n ', + row_post='\n', + data_aligns="c", + # data formats + data_fmts=['%s'], + data_fmt="%s", # deprecated; use data_fmts + # labeled alignments + # stubs_align='l', #deprecated; use data_fmts + stub_align='l', + header_align='c', + # labeled formats + header_fmt='%s', # deprecated; just use `header` + stub_fmt='%s', # deprecated; just use `stub` + empty_cell='', # deprecated; just use `empty` + header='%s', + stub='%s', + empty='', + missing='--', +) + +default_latex_fmt = dict( + fmt='ltx', + # basic table formatting + table_dec_above=r'\toprule', + table_dec_below=r'\bottomrule', + header_dec_below=r'\midrule', + row_dec_below=None, + strip_backslash=True, # NotImplemented + # row formatting + row_post=r' \\', + data_aligns='c', + colwidths=None, + colsep=' & ', + # data formats + data_fmts=['%s'], + data_fmt='%s', # deprecated; use data_fmts + # labeled alignments + # stubs_align='l', # deprecated; use data_fmts + stub_align='l', + header_align='c', + empty_align='l', + # labeled formats + header_fmt=r'\textbf{%s}', # deprecated; just use 'header' + stub_fmt=r'\textbf{%s}', # deprecated; just use 'stub' + empty_cell='', # deprecated; just use 'empty' + header=r'\textbf{%s}', + stub=r'\textbf{%s}', + empty='', + missing='--', + # replacements will be processed in lexicographical order + replacements={"#": r"\#", + "$": r"\$", + "%": r"\%", + "&": r"\&", + ">": r"$>$", + "_": r"\_", + "|": r"$|$"} +) + +default_fmts = dict( + html=default_html_fmt, + txt=default_txt_fmt, + latex=default_latex_fmt, + csv=default_csv_fmt +) +output_format_translations = dict( + htm='html', + text='txt', + ltx='latex' +) + + +def get_output_format(output_format): + if output_format not in ('html', 'txt', 'latex', 'csv'): + try: + output_format = output_format_translations[output_format] + except KeyError: + raise ValueError('unknown output format %s' % output_format) + return output_format diff --git a/statsmodels/iolib/tableformatting.py b/statsmodels/iolib/tableformatting.py new file mode 100644 index 0000000..a42bef3 --- /dev/null +++ b/statsmodels/iolib/tableformatting.py @@ -0,0 +1,149 @@ +""" +Summary Table formating +This is here to help keep the formating consistent across the different models +""" +import copy + +gen_fmt = dict( + data_fmts = ["%s", "%s", "%s", "%s", "%s"], + empty_cell = '', + colwidths = 7, #17, + colsep=' ', + row_pre = ' ', + row_post = ' ', + table_dec_above='=', + table_dec_below=None, + header_dec_below=None, + header_fmt = '%s', + stub_fmt = '%s', + title_align='c', + header_align = 'r', + data_aligns = "r", + stubs_align = "l", + fmt = 'txt' + ) + # Note table_1l_fmt over rides the below formating unless it is not + # appended to table_1l +fmt_1_right = dict( + data_fmts = ["%s", "%s", "%s", "%s", "%s"], + empty_cell = '', + colwidths = 16, + colsep=' ', + row_pre = '', + row_post = '', + table_dec_above='=', + table_dec_below=None, + header_dec_below=None, + header_fmt = '%s', + stub_fmt = '%s', + title_align='c', + header_align = 'r', + data_aligns = "r", + stubs_align = "l", + fmt = 'txt' + ) + +fmt_2 = dict( + data_fmts = ["%s", "%s", "%s", "%s"], + empty_cell = '', + colwidths = 10, + colsep=' ', + row_pre = ' ', + row_post = ' ', + table_dec_above='=', + table_dec_below='=', + header_dec_below='-', + header_fmt = '%s', + stub_fmt = '%s', + title_align='c', + header_align = 'r', + data_aligns = 'r', + stubs_align = 'l', + fmt = 'txt' + ) + + +# new version +fmt_base = dict( + data_fmts = ["%s", "%s", "%s", "%s", "%s"], + empty_cell = '', + colwidths = 10, + colsep=' ', + row_pre = '', + row_post = '', + table_dec_above='=', + table_dec_below='=', #TODO need '=' at the last subtable + header_dec_below='-', + header_fmt = '%s', + stub_fmt = '%s', + title_align='c', + header_align = 'r', + data_aligns = 'r', + stubs_align = 'l', + fmt = 'txt' + ) + +fmt_2cols = copy.deepcopy(fmt_base) + +fmt2 = dict( + data_fmts = ["%18s", "-%19s", "%18s", "%19s"], #TODO: + colsep=' ', + colwidths = 18, + stub_fmt = '-%21s', + ) +fmt_2cols.update(fmt2) + +fmt_params = copy.deepcopy(fmt_base) + +fmt3 = dict( + data_fmts = ["%s", "%s", "%8s", "%s", "%11s", "%11s"], + ) +fmt_params.update(fmt3) + +""" +Summary Table formating +This is here to help keep the formating consistent across the different models +""" +fmt_latex = {'colsep': ' & ', + 'colwidths': None, + 'data_aligns': 'r', + 'data_fmt': '%s', + 'data_fmts': ['%s'], + 'empty': '', + 'empty_cell': '', + 'fmt': 'ltx', + 'header': '%s', + 'header_align': 'c', + 'header_dec_below': '\\hline', + 'header_fmt': '%s', + 'missing': '--', + 'row_dec_below': None, + 'row_post': ' \\\\', + 'strip_backslash': True, + 'stub': '%s', + 'stub_align': 'l', + 'stub_fmt': '%s', + 'table_dec_above': '\\hline', + 'table_dec_below': '\\hline'} + +fmt_txt = {'colsep': ' ', + 'colwidths': None, + 'data_aligns': 'r', + 'data_fmts': ['%s'], + 'empty': '', + 'empty_cell': '', + 'fmt': 'txt', + 'header': '%s', + 'header_align': 'c', + 'header_dec_below': '-', + 'header_fmt': '%s', + 'missing': '--', + 'row_dec_below': None, + 'row_post': '', + 'row_pre': '', + 'stub': '%s', + 'stub_align': 'l', + 'stub_fmt': '%s', + 'table_dec_above': '-', + 'table_dec_below': None, + 'title_align': 'c'} diff --git a/statsmodels/iolib/tests/__init__.py b/statsmodels/iolib/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/iolib/tests/gen_dates.do b/statsmodels/iolib/tests/gen_dates.do new file mode 100644 index 0000000..2256ec1 --- /dev/null +++ b/statsmodels/iolib/tests/gen_dates.do @@ -0,0 +1,9 @@ +insheet using "/home/skipper/statsmodels/statsmodels-skipper/statsmodels/iolib/tests/stata_dates.csv" +format datetime_c %tc +format datetime_big_c %tC +format date %td +format weekly_date %tw +format monthly_date %tm +format quarterly_date %tq +format half_yearly_date %th +format yearly_date %ty diff --git a/statsmodels/iolib/tests/results/__init__.py b/statsmodels/iolib/tests/results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/iolib/tests/results/data_missing.dta b/statsmodels/iolib/tests/results/data_missing.dta new file mode 100644 index 0000000000000000000000000000000000000000..7df75d0d0cdede36e72cdb3145fa7e9322b5cc27 GIT binary patch literal 1130 zcmXS7Vq{=tU}S&*;f7nB_v;xL1fcXq-jfa>ndct7U>d{*0flEL9KZ}H!49QO7KDPu zGb=e97!)iO{F6%*j0_Bo6bucm42&55{r~;vZ(2@%Vo7{%W^pmH2}tae{L-YHR6Ht@ zDodc!IE={5!)pNpLr#8PIvxv<90O#kTIw03qYB~YsTvxPrbE?&H1!OmYcMn-(F*)t z93--J&H|w1s&JOo8RQ~#8tlpk^{G$mpZ@<3RL8)^0#*kW$3ieNj2cLJ7(xRU6y87p G4}Jh1&UZfm literal 0 HcmV?d00001 diff --git a/statsmodels/iolib/tests/results/macrodata.py b/statsmodels/iolib/tests/results/macrodata.py new file mode 100644 index 0000000..745574a --- /dev/null +++ b/statsmodels/iolib/tests/results/macrodata.py @@ -0,0 +1,413 @@ +from numpy import array + +macrodata_result = array([ + (1959.0, 1.0, 2710.349, 1707.4, 286.898, 470.045, 1886.9, + 28.98, 139.7, 2.82, 5.8, 177.146, 0.0, 0.0), + (1959.0, 2.0, 2778.801, 1733.7, 310.859, 481.301, 1919.7, + 29.15, 141.7, 3.08, 5.1, 177.83, 2.34, 0.74), + (1959.0, 3.0, 2775.488, 1751.8, 289.226, 491.26, 1916.4, + 29.35, 140.5, 3.82, 5.3, 178.657, 2.74, 1.09), + (1959.0, 4.0, 2785.204, 1753.7, 299.356, 484.052, 1931.3, + 29.37, 140.0, 4.33, 5.6, 179.386, 0.27, 4.06), + (1960.0, 1.0, 2847.699, 1770.5, 331.722, 462.199, 1955.5, + 29.54, 139.6, 3.5, 5.2, 180.007, 2.31, 1.19), + (1960.0, 2.0, 2834.39, 1792.9, 298.152, 460.4, 1966.1, + 29.55, 140.2, 2.68, 5.2, 180.671, 0.14, 2.55), + (1960.0, 3.0, 2839.022, 1785.8, 296.375, 474.676, 1967.8, + 29.75, 140.9, 2.36, 5.6, 181.528, 2.7, -0.34), + (1960.0, 4.0, 2802.616, 1788.2, 259.764, 476.434, 1966.6, + 29.84, 141.1, 2.29, 6.3, 182.287, 1.21, 1.08), + (1961.0, 1.0, 2819.264, 1787.7, 266.405, 475.854, 1984.5, + 29.81, 142.1, 2.37, 6.8, 182.992, -0.4, 2.77), + (1961.0, 2.0, 2872.005, 1814.3, 286.246, 480.328, 2014.4, + 29.92, 142.9, 2.29, 7.0, 183.691, 1.47, 0.81), + (1961.0, 3.0, 2918.419, 1823.1, 310.227, 493.828, 2041.9, + 29.98, 144.1, 2.32, 6.8, 184.524, 0.8, 1.52), + (1961.0, 4.0, 2977.83, 1859.6, 315.463, 502.521, 2082.0, + 30.04, 145.2, 2.6, 6.2, 185.242, 0.8, 1.8), + (1962.0, 1.0, 3031.241, 1879.4, 334.271, 520.96, 2101.7, + 30.21, 146.4, 2.73, 5.6, 185.874, 2.26, 0.47), + (1962.0, 2.0, 3064.709, 1902.5, 331.039, 523.066, 2125.2, + 30.22, 146.5, 2.78, 5.5, 186.538, 0.13, 2.65), + (1962.0, 3.0, 3093.047, 1917.9, 336.962, 538.838, 2137.0, + 30.38, 146.7, 2.78, 5.6, 187.323, 2.11, 0.67), + (1962.0, 4.0, 3100.563, 1945.1, 325.65, 535.912, 2154.6, + 30.44, 148.3, 2.87, 5.5, 188.013, 0.79, 2.08), + (1963.0, 1.0, 3141.087, 1958.2, 343.721, 522.917, 2172.5, + 30.48, 149.7, 2.9, 5.8, 188.58, 0.53, 2.38), + (1963.0, 2.0, 3180.447, 1976.9, 348.73, 518.108, 2193.1, + 30.69, 151.3, 3.03, 5.7, 189.242, 2.75, 0.29), + (1963.0, 3.0, 3240.332, 2003.8, 360.102, 546.893, 2217.9, + 30.75, 152.6, 3.38, 5.5, 190.028, 0.78, 2.6), + (1963.0, 4.0, 3264.967, 2020.6, 364.534, 532.383, 2254.6, + 30.94, 153.7, 3.52, 5.6, 190.668, 2.46, 1.06), + (1964.0, 1.0, 3338.246, 2060.5, 379.523, 529.686, 2299.6, + 30.95, 154.8, 3.51, 5.5, 191.245, 0.13, 3.38), + (1964.0, 2.0, 3376.587, 2096.7, 377.778, 526.175, 2362.1, + 31.02, 156.8, 3.47, 5.2, 191.889, 0.9, 2.57), + (1964.0, 3.0, 3422.469, 2135.2, 386.754, 522.008, 2392.7, + 31.12, 159.2, 3.53, 5.0, 192.631, 1.29, 2.25), + (1964.0, 4.0, 3431.957, 2141.2, 389.91, 514.603, 2420.4, + 31.28, 160.7, 3.76, 5.0, 193.223, 2.05, 1.71), + (1965.0, 1.0, 3516.251, 2188.8, 429.145, 508.006, 2447.4, + 31.38, 162.0, 3.93, 4.9, 193.709, 1.28, 2.65), + (1965.0, 2.0, 3563.96, 2213.0, 429.119, 508.931, 2474.5, + 31.58, 163.1, 3.84, 4.7, 194.303, 2.54, 1.3), + (1965.0, 3.0, 3636.285, 2251.0, 444.444, 529.446, 2542.6, + 31.65, 166.0, 3.93, 4.4, 194.997, 0.89, 3.04), + (1965.0, 4.0, 3724.014, 2314.3, 446.493, 544.121, 2594.1, + 31.88, 169.1, 4.35, 4.1, 195.539, 2.9, 1.46), + (1966.0, 1.0, 3815.423, 2348.5, 484.244, 556.593, 2618.4, + 32.28, 171.8, 4.62, 3.9, 195.999, 4.99, -0.37), + (1966.0, 2.0, 3828.124, 2354.5, 475.408, 571.371, 2624.7, + 32.45, 170.3, 4.65, 3.8, 196.56, 2.1, 2.55), + (1966.0, 3.0, 3853.301, 2381.5, 470.697, 594.514, 2657.8, + 32.85, 171.2, 5.23, 3.8, 197.207, 4.9, 0.33), + (1966.0, 4.0, 3884.52, 2391.4, 472.957, 599.528, 2688.2, + 32.9, 171.9, 5.0, 3.7, 197.736, 0.61, 4.39), + (1967.0, 1.0, 3918.74, 2405.3, 460.007, 640.682, 2728.4, + 33.1, 174.2, 4.22, 3.8, 198.206, 2.42, 1.8), + (1967.0, 2.0, 3919.556, 2438.1, 440.393, 631.43, 2750.8, + 33.4, 178.1, 3.78, 3.8, 198.712, 3.61, 0.17), + (1967.0, 3.0, 3950.826, 2450.6, 453.033, 641.504, 2777.1, + 33.7, 181.6, 4.42, 3.8, 199.311, 3.58, 0.84), + (1967.0, 4.0, 3980.97, 2465.7, 462.834, 640.234, 2797.4, + 34.1, 184.3, 4.9, 3.9, 199.808, 4.72, 0.18), + (1968.0, 1.0, 4063.013, 2524.6, 472.907, 651.378, 2846.2, + 34.4, 186.6, 5.18, 3.7, 200.208, 3.5, 1.67), + (1968.0, 2.0, 4131.998, 2563.3, 492.026, 646.145, 2893.5, + 34.9, 190.5, 5.5, 3.5, 200.706, 5.77, -0.28), + (1968.0, 3.0, 4160.267, 2611.5, 476.053, 640.615, 2899.3, + 35.3, 194.0, 5.21, 3.5, 201.29, 4.56, 0.65), + (1968.0, 4.0, 4178.293, 2623.5, 480.998, 636.729, 2918.4, + 35.7, 198.7, 5.85, 3.4, 201.76, 4.51, 1.34), + (1969.0, 1.0, 4244.1, 2652.9, 512.686, 633.224, 2923.4, + 36.3, 200.7, 6.08, 3.4, 202.161, 6.67, -0.58), + (1969.0, 2.0, 4256.46, 2669.8, 508.601, 623.16, 2952.9, + 36.8, 201.7, 6.49, 3.4, 202.677, 5.47, 1.02), + (1969.0, 3.0, 4283.378, 2682.7, 520.36, 623.613, 3012.9, + 37.3, 202.9, 7.02, 3.6, 203.302, 5.4, 1.63), + (1969.0, 4.0, 4263.261, 2704.1, 492.334, 606.9, 3034.9, + 37.9, 206.2, 7.64, 3.6, 203.849, 6.38, 1.26), + (1970.0, 1.0, 4256.573, 2720.7, 476.925, 594.888, 3050.1, + 38.5, 206.7, 6.76, 4.2, 204.401, 6.28, 0.47), + (1970.0, 2.0, 4264.289, 2733.2, 478.419, 576.257, 3103.5, + 38.9, 208.0, 6.66, 4.8, 205.052, 4.13, 2.52), + (1970.0, 3.0, 4302.259, 2757.1, 486.594, 567.743, 3145.4, + 39.4, 212.9, 6.15, 5.2, 205.788, 5.11, 1.04), + (1970.0, 4.0, 4256.637, 2749.6, 458.406, 564.666, 3135.1, + 39.9, 215.5, 4.86, 5.8, 206.466, 5.04, -0.18), + (1971.0, 1.0, 4374.016, 2802.2, 517.935, 542.709, 3197.3, + 40.1, 220.0, 3.65, 5.9, 207.065, 2.0, 1.65), + (1971.0, 2.0, 4398.829, 2827.9, 533.986, 534.905, 3245.3, + 40.6, 224.9, 4.76, 5.9, 207.661, 4.96, -0.19), + (1971.0, 3.0, 4433.943, 2850.4, 541.01, 532.646, 3259.7, + 40.9, 227.2, 4.7, 6.0, 208.345, 2.94, 1.75), + (1971.0, 4.0, 4446.264, 2897.8, 524.085, 516.14, 3294.2, + 41.2, 230.1, 3.87, 6.0, 208.917, 2.92, 0.95), + (1972.0, 1.0, 4525.769, 2936.5, 561.147, 518.192, 3314.9, + 41.5, 235.6, 3.55, 5.8, 209.386, 2.9, 0.64), + (1972.0, 2.0, 4633.101, 2992.6, 595.495, 526.473, 3346.1, + 41.8, 238.8, 3.86, 5.7, 209.896, 2.88, 0.98), + (1972.0, 3.0, 4677.503, 3038.8, 603.97, 498.116, 3414.6, + 42.2, 245.0, 4.47, 5.6, 210.479, 3.81, 0.66), + (1972.0, 4.0, 4754.546, 3110.1, 607.104, 496.54, 3550.5, + 42.7, 251.5, 5.09, 5.3, 210.985, 4.71, 0.38), + (1973.0, 1.0, 4876.166, 3167.0, 645.654, 504.838, 3590.7, + 43.7, 252.7, 5.98, 5.0, 211.42, 9.26, -3.28), + (1973.0, 2.0, 4932.571, 3165.4, 675.837, 497.033, 3626.2, + 44.2, 257.5, 7.19, 4.9, 211.909, 4.55, 2.64), + (1973.0, 3.0, 4906.252, 3176.7, 649.412, 475.897, 3644.4, + 45.6, 259.0, 8.06, 4.8, 212.475, 12.47, -4.41), + (1973.0, 4.0, 4953.05, 3167.4, 674.253, 476.174, 3688.9, + 46.8, 263.8, 7.68, 4.8, 212.932, 10.39, -2.71), + (1974.0, 1.0, 4909.617, 3139.7, 631.23, 491.043, 3632.3, + 48.1, 267.2, 7.8, 5.1, 213.361, 10.96, -3.16), + (1974.0, 2.0, 4922.188, 3150.6, 628.102, 490.177, 3601.1, + 49.3, 269.3, 7.89, 5.2, 213.854, 9.86, -1.96), + (1974.0, 3.0, 4873.52, 3163.6, 592.672, 492.586, 3612.4, + 51.0, 272.3, 8.16, 5.6, 214.451, 13.56, -5.4), + (1974.0, 4.0, 4854.34, 3117.3, 598.306, 496.176, 3596.0, + 52.3, 273.9, 6.96, 6.6, 214.931, 10.07, -3.11), + (1975.0, 1.0, 4795.295, 3143.4, 493.212, 490.603, 3581.9, + 53.0, 276.2, 5.53, 8.2, 215.353, 5.32, 0.22), + (1975.0, 2.0, 4831.942, 3195.8, 476.085, 486.679, 3749.3, + 54.0, 283.7, 5.57, 8.9, 215.973, 7.48, -1.91), + (1975.0, 3.0, 4913.328, 3241.4, 516.402, 498.836, 3698.6, + 54.9, 285.4, 6.27, 8.5, 216.587, 6.61, -0.34), + (1975.0, 4.0, 4977.511, 3275.7, 530.596, 500.141, 3736.0, + 55.8, 288.4, 5.26, 8.3, 217.095, 6.5, -1.24), + (1976.0, 1.0, 5090.663, 3341.2, 585.541, 495.568, 3791.0, + 56.1, 294.7, 4.91, 7.7, 217.528, 2.14, 2.77), + (1976.0, 2.0, 5128.947, 3371.8, 610.513, 494.532, 3822.2, + 57.0, 297.2, 5.28, 7.6, 218.035, 6.37, -1.09), + (1976.0, 3.0, 5154.072, 3407.5, 611.646, 493.141, 3856.7, + 57.9, 302.0, 5.05, 7.7, 218.644, 6.27, -1.22), + (1976.0, 4.0, 5191.499, 3451.8, 615.898, 494.415, 3884.4, + 58.7, 308.3, 4.57, 7.8, 219.179, 5.49, -0.92), + (1977.0, 1.0, 5251.762, 3491.3, 646.198, 498.509, 3887.5, + 60.0, 316.0, 4.6, 7.5, 219.684, 8.76, -4.16), + (1977.0, 2.0, 5356.131, 3510.6, 696.141, 506.695, 3931.8, + 60.8, 320.2, 5.06, 7.1, 220.239, 5.3, -0.24), + (1977.0, 3.0, 5451.921, 3544.1, 734.078, 509.605, 3990.8, + 61.6, 326.4, 5.82, 6.9, 220.904, 5.23, 0.59), + (1977.0, 4.0, 5450.793, 3597.5, 713.356, 504.584, 4071.2, + 62.7, 334.4, 6.2, 6.6, 221.477, 7.08, -0.88), + (1978.0, 1.0, 5469.405, 3618.5, 727.504, 506.314, 4096.4, + 63.9, 339.9, 6.34, 6.3, 221.991, 7.58, -1.24), + (1978.0, 2.0, 5684.569, 3695.9, 777.454, 518.366, 4143.4, + 65.5, 347.6, 6.72, 6.0, 222.585, 9.89, -3.18), + (1978.0, 3.0, 5740.3, 3711.4, 801.452, 520.199, 4177.1, + 67.1, 353.3, 7.64, 6.0, 223.271, 9.65, -2.01), + (1978.0, 4.0, 5816.222, 3741.3, 819.689, 524.782, 4209.8, + 68.5, 358.6, 9.02, 5.9, 223.865, 8.26, 0.76), + (1979.0, 1.0, 5825.949, 3760.2, 819.556, 525.524, 4255.9, + 70.6, 368.0, 9.42, 5.9, 224.438, 12.08, -2.66), + (1979.0, 2.0, 5831.418, 3758.0, 817.66, 532.04, 4226.1, + 73.0, 377.2, 9.3, 5.7, 225.055, 13.37, -4.07), + (1979.0, 3.0, 5873.335, 3794.9, 801.742, 531.232, 4250.3, + 75.2, 380.8, 10.49, 5.9, 225.801, 11.88, -1.38), + (1979.0, 4.0, 5889.495, 3805.0, 786.817, 531.126, 4284.3, + 78.0, 385.8, 11.94, 5.9, 226.451, 14.62, -2.68), + (1980.0, 1.0, 5908.467, 3798.4, 781.114, 548.115, 4296.2, + 80.9, 383.8, 13.75, 6.3, 227.061, 14.6, -0.85), + (1980.0, 2.0, 5787.373, 3712.2, 710.64, 561.895, 4236.1, + 82.6, 394.0, 7.9, 7.3, 227.726, 8.32, -0.42), + (1980.0, 3.0, 5776.617, 3752.0, 656.477, 554.292, 4279.7, + 84.7, 409.0, 10.34, 7.7, 228.417, 10.04, 0.3), + (1980.0, 4.0, 5883.46, 3802.0, 723.22, 556.13, 4368.1, + 87.2, 411.3, 14.75, 7.4, 228.937, 11.64, 3.11), + (1981.0, 1.0, 6005.717, 3822.8, 795.091, 567.618, 4358.1, + 89.1, 427.4, 13.95, 7.4, 229.403, 8.62, 5.32), + (1981.0, 2.0, 5957.795, 3822.8, 757.24, 584.54, 4358.6, + 91.5, 426.9, 15.33, 7.4, 229.966, 10.63, 4.69), + (1981.0, 3.0, 6030.184, 3838.3, 804.242, 583.89, 4455.4, + 93.4, 428.4, 14.58, 7.4, 230.641, 8.22, 6.36), + (1981.0, 4.0, 5955.062, 3809.3, 773.053, 590.125, 4464.4, + 94.4, 442.7, 11.33, 8.2, 231.157, 4.26, 7.07), + (1982.0, 1.0, 5857.333, 3833.9, 692.514, 591.043, 4469.6, + 95.0, 447.1, 12.95, 8.8, 231.645, 2.53, 10.42), + (1982.0, 2.0, 5889.074, 3847.7, 691.9, 596.403, 4500.8, + 97.5, 448.0, 11.97, 9.4, 232.188, 10.39, 1.58), + (1982.0, 3.0, 5866.37, 3877.2, 683.825, 605.37, 4520.6, + 98.1, 464.5, 8.1, 9.9, 232.816, 2.45, 5.65), + (1982.0, 4.0, 5871.001, 3947.9, 622.93, 623.307, 4536.4, + 97.9, 477.2, 7.96, 10.7, 233.322, -0.82, 8.77), + (1983.0, 1.0, 5944.02, 3986.6, 645.11, 630.873, 4572.2, + 98.8, 493.2, 8.22, 10.4, 233.781, 3.66, 4.56), + (1983.0, 2.0, 6077.619, 4065.7, 707.372, 644.322, 4605.5, + 99.8, 507.8, 8.69, 10.1, 234.307, 4.03, 4.66), + (1983.0, 3.0, 6197.468, 4137.6, 754.937, 662.412, 4674.7, + 100.8, 517.2, 8.99, 9.4, 234.907, 3.99, 5.01), + (1983.0, 4.0, 6325.574, 4203.2, 834.427, 639.197, 4771.1, + 102.1, 525.1, 8.89, 8.5, 235.385, 5.13, 3.76), + (1984.0, 1.0, 6448.264, 4239.2, 921.763, 644.635, 4875.4, + 103.3, 535.0, 9.43, 7.9, 235.839, 4.67, 4.76), + (1984.0, 2.0, 6559.594, 4299.9, 952.841, 664.839, 4959.4, + 104.1, 540.9, 9.94, 7.5, 236.348, 3.09, 6.85), + (1984.0, 3.0, 6623.343, 4333.0, 974.989, 662.294, 5036.6, + 105.1, 543.7, 10.19, 7.4, 236.976, 3.82, 6.37), + (1984.0, 4.0, 6677.264, 4390.1, 958.993, 684.282, 5084.5, + 105.7, 557.0, 8.14, 7.3, 237.468, 2.28, 5.87), + (1985.0, 1.0, 6740.275, 4464.6, 927.375, 691.613, 5072.0, + 107.0, 570.4, 8.25, 7.3, 237.9, 4.89, 3.36), + (1985.0, 2.0, 6797.344, 4505.2, 943.383, 708.524, 5172.7, + 107.7, 589.1, 7.17, 7.3, 238.466, 2.61, 4.56), + (1985.0, 3.0, 6903.523, 4590.8, 932.959, 732.305, 5140.7, + 108.5, 607.8, 7.13, 7.2, 239.113, 2.96, 4.17), + (1985.0, 4.0, 6955.918, 4600.9, 969.434, 732.026, 5193.9, + 109.9, 621.4, 7.14, 7.0, 239.638, 5.13, 2.01), + (1986.0, 1.0, 7022.757, 4639.3, 967.442, 728.125, 5255.8, + 108.7, 641.0, 6.56, 7.0, 240.094, -4.39, 10.95), + (1986.0, 2.0, 7050.969, 4688.7, 945.972, 751.334, 5315.5, + 109.5, 670.3, 6.06, 7.2, 240.651, 2.93, 3.13), + (1986.0, 3.0, 7118.95, 4770.7, 916.315, 779.77, 5343.3, + 110.2, 694.9, 5.31, 7.0, 241.274, 2.55, 2.76), + (1986.0, 4.0, 7153.359, 4799.4, 917.736, 767.671, 5346.5, + 111.4, 730.2, 5.44, 6.8, 241.784, 4.33, 1.1), + (1987.0, 1.0, 7193.019, 4792.1, 945.776, 772.247, 5379.4, + 112.7, 743.9, 5.61, 6.6, 242.252, 4.64, 0.97), + (1987.0, 2.0, 7269.51, 4856.3, 947.1, 782.962, 5321.0, + 113.8, 743.0, 5.67, 6.3, 242.804, 3.89, 1.79), + (1987.0, 3.0, 7332.558, 4910.4, 948.055, 783.804, 5416.2, + 115.0, 756.2, 6.19, 6.0, 243.446, 4.2, 1.99), + (1987.0, 4.0, 7458.022, 4922.2, 1021.98, 795.467, 5493.1, + 116.0, 756.2, 5.76, 5.9, 243.981, 3.46, 2.29), + (1988.0, 1.0, 7496.6, 5004.4, 964.398, 773.851, 5562.1, + 117.2, 768.1, 5.76, 5.7, 244.445, 4.12, 1.64), + (1988.0, 2.0, 7592.881, 5040.8, 987.858, 765.98, 5614.3, + 118.5, 781.4, 6.48, 5.5, 245.021, 4.41, 2.07), + (1988.0, 3.0, 7632.082, 5080.6, 994.204, 760.245, 5657.5, + 119.9, 783.3, 7.22, 5.5, 245.693, 4.7, 2.52), + (1988.0, 4.0, 7733.991, 5140.4, 1007.371, 783.065, 5708.5, + 121.2, 785.7, 8.03, 5.3, 246.224, 4.31, 3.72), + (1989.0, 1.0, 7806.603, 5159.3, 1045.975, 767.024, 5773.4, + 123.1, 779.2, 8.67, 5.2, 246.721, 6.22, 2.44), + (1989.0, 2.0, 7865.016, 5182.4, 1033.753, 784.275, 5749.8, + 124.5, 777.8, 8.15, 5.2, 247.342, 4.52, 3.63), + (1989.0, 3.0, 7927.393, 5236.1, 1021.604, 791.819, 5787.0, + 125.4, 786.6, 7.76, 5.3, 248.067, 2.88, 4.88), + (1989.0, 4.0, 7944.697, 5261.7, 1011.119, 787.844, 5831.3, + 127.5, 795.4, 7.65, 5.4, 248.659, 6.64, 1.01), + (1990.0, 1.0, 8027.693, 5303.3, 1021.07, 799.681, 5875.1, + 128.9, 806.2, 7.8, 5.3, 249.306, 4.37, 3.44), + (1990.0, 2.0, 8059.598, 5320.8, 1021.36, 800.639, 5913.9, + 130.5, 810.1, 7.7, 5.3, 250.132, 4.93, 2.76), + (1990.0, 3.0, 8059.476, 5341.0, 997.319, 793.513, 5918.1, + 133.4, 819.8, 7.33, 5.7, 251.057, 8.79, -1.46), + (1990.0, 4.0, 7988.864, 5299.5, 934.248, 800.525, 5878.2, + 134.7, 827.2, 6.67, 6.1, 251.889, 3.88, 2.79), + (1991.0, 1.0, 7950.164, 5284.4, 896.21, 806.775, 5896.3, + 135.1, 843.2, 5.83, 6.6, 252.643, 1.19, 4.65), + (1991.0, 2.0, 8003.822, 5324.7, 891.704, 809.081, 5941.1, + 136.2, 861.5, 5.54, 6.8, 253.493, 3.24, 2.29), + (1991.0, 3.0, 8037.538, 5345.0, 913.904, 793.987, 5953.6, + 137.2, 878.0, 5.18, 6.9, 254.435, 2.93, 2.25), + (1991.0, 4.0, 8069.046, 5342.6, 948.891, 778.378, 5992.4, + 138.3, 910.4, 4.14, 7.1, 255.214, 3.19, 0.95), + (1992.0, 1.0, 8157.616, 5434.5, 927.796, 778.568, 6082.9, + 139.4, 943.8, 3.88, 7.4, 255.992, 3.17, 0.71), + (1992.0, 2.0, 8244.294, 5466.7, 988.912, 777.762, 6129.5, + 140.5, 963.2, 3.5, 7.6, 256.894, 3.14, 0.36), + (1992.0, 3.0, 8329.361, 5527.1, 999.135, 786.639, 6160.6, + 141.7, 1003.8, 2.97, 7.6, 257.861, 3.4, -0.44), + (1992.0, 4.0, 8417.016, 5594.6, 1030.758, 787.064, 6248.2, + 142.8, 1030.4, 3.12, 7.4, 258.679, 3.09, 0.02), + (1993.0, 1.0, 8432.485, 5617.2, 1054.979, 762.901, 6156.5, + 143.8, 1047.6, 2.92, 7.2, 259.414, 2.79, 0.13), + (1993.0, 2.0, 8486.435, 5671.1, 1063.263, 752.158, 6252.3, + 144.5, 1084.5, 3.02, 7.1, 260.255, 1.94, 1.08), + (1993.0, 3.0, 8531.108, 5732.7, 1062.514, 744.227, 6265.7, + 145.6, 1113.0, 3.0, 6.8, 261.163, 3.03, -0.04), + (1993.0, 4.0, 8643.769, 5783.7, 1118.583, 748.102, 6358.1, + 146.3, 1131.6, 3.05, 6.6, 261.919, 1.92, 1.13), + (1994.0, 1.0, 8727.919, 5848.1, 1166.845, 721.288, 6332.6, + 147.2, 1141.1, 3.48, 6.6, 262.631, 2.45, 1.02), + (1994.0, 2.0, 8847.303, 5891.5, 1234.855, 717.197, 6440.6, + 148.4, 1150.5, 4.2, 6.2, 263.436, 3.25, 0.96), + (1994.0, 3.0, 8904.289, 5938.7, 1212.655, 736.89, 6487.9, + 149.4, 1150.1, 4.68, 6.0, 264.301, 2.69, 2.0), + (1994.0, 4.0, 9003.18, 5997.3, 1269.19, 716.702, 6574.0, + 150.5, 1151.4, 5.53, 5.6, 265.044, 2.93, 2.6), + (1995.0, 1.0, 9025.267, 6004.3, 1282.09, 715.326, 6616.6, + 151.8, 1149.3, 5.72, 5.5, 265.755, 3.44, 2.28), + (1995.0, 2.0, 9044.668, 6053.5, 1247.61, 712.492, 6617.2, + 152.6, 1145.4, 5.52, 5.7, 266.557, 2.1, 3.42), + (1995.0, 3.0, 9120.684, 6107.6, 1235.601, 707.649, 6666.8, + 153.5, 1137.3, 5.32, 5.7, 267.456, 2.35, 2.97), + (1995.0, 4.0, 9184.275, 6150.6, 1270.392, 681.081, 6706.2, + 154.7, 1123.5, 5.17, 5.6, 268.151, 3.11, 2.05), + (1996.0, 1.0, 9247.188, 6206.9, 1287.128, 695.265, 6777.7, + 156.1, 1124.8, 4.91, 5.5, 268.853, 3.6, 1.31), + (1996.0, 2.0, 9407.052, 6277.1, 1353.795, 705.172, 6850.6, + 157.0, 1112.4, 5.09, 5.5, 269.667, 2.3, 2.79), + (1996.0, 3.0, 9488.879, 6314.6, 1422.059, 692.741, 6908.9, + 158.2, 1086.1, 5.04, 5.3, 270.581, 3.05, 2.0), + (1996.0, 4.0, 9592.458, 6366.1, 1418.193, 690.744, 6946.8, + 159.4, 1081.5, 4.99, 5.3, 271.36, 3.02, 1.97), + (1997.0, 1.0, 9666.235, 6430.2, 1451.304, 681.445, 7008.9, + 159.9, 1063.8, 5.1, 5.2, 272.083, 1.25, 3.85), + (1997.0, 2.0, 9809.551, 6456.2, 1543.976, 693.525, 7061.5, + 160.4, 1066.2, 5.01, 5.0, 272.912, 1.25, 3.76), + (1997.0, 3.0, 9932.672, 6566.0, 1571.426, 691.261, 7142.4, + 161.5, 1065.5, 5.02, 4.9, 273.852, 2.73, 2.29), + (1997.0, 4.0, 10008.874, 6641.1, 1596.523, 690.311, 7241.5, + 162.0, 1074.4, 5.11, 4.7, 274.626, 1.24, 3.88), + (1998.0, 1.0, 10103.425, 6707.2, 1672.732, 668.783, 7406.2, + 162.2, 1076.1, 5.02, 4.6, 275.304, 0.49, 4.53), + (1998.0, 2.0, 10194.277, 6822.6, 1652.716, 687.184, 7512.0, + 163.2, 1075.0, 4.98, 4.4, 276.115, 2.46, 2.52), + (1998.0, 3.0, 10328.787, 6913.1, 1700.071, 681.472, 7591.0, + 163.9, 1086.0, 4.49, 4.5, 277.003, 1.71, 2.78), + (1998.0, 4.0, 10507.575, 7019.1, 1754.743, 688.147, 7646.5, + 164.7, 1097.8, 4.38, 4.4, 277.79, 1.95, 2.43), + (1999.0, 1.0, 10601.179, 7088.3, 1809.993, 683.601, 7698.4, + 165.9, 1101.9, 4.39, 4.3, 278.451, 2.9, 1.49), + (1999.0, 2.0, 10684.049, 7199.9, 1803.674, 683.594, 7716.0, + 166.7, 1098.7, 4.54, 4.3, 279.295, 1.92, 2.62), + (1999.0, 3.0, 10819.914, 7286.4, 1848.949, 697.936, 7765.9, + 168.1, 1102.3, 4.75, 4.2, 280.203, 3.35, 1.41), + (1999.0, 4.0, 11014.254, 7389.2, 1914.567, 713.445, 7887.7, + 169.3, 1121.9, 5.2, 4.1, 280.976, 2.85, 2.35), + (2000.0, 1.0, 11043.044, 7501.3, 1887.836, 685.216, 8053.4, + 170.9, 1113.5, 5.63, 4.0, 281.653, 3.76, 1.87), + (2000.0, 2.0, 11258.454, 7571.8, 2018.529, 712.641, 8135.9, + 172.7, 1103.0, 5.81, 3.9, 282.385, 4.19, 1.62), + (2000.0, 3.0, 11267.867, 7645.9, 1986.956, 698.827, 8222.3, + 173.9, 1098.7, 6.07, 4.0, 283.19, 2.77, 3.3), + (2000.0, 4.0, 11334.544, 7713.5, 1987.845, 695.597, 8234.6, + 175.6, 1097.7, 5.7, 3.9, 283.9, 3.89, 1.81), + (2001.0, 1.0, 11297.171, 7744.3, 1882.691, 710.403, 8296.5, + 176.4, 1114.9, 4.39, 4.2, 284.55, 1.82, 2.57), + (2001.0, 2.0, 11371.251, 7773.5, 1876.65, 725.623, 8273.7, + 177.4, 1139.7, 3.54, 4.4, 285.267, 2.26, 1.28), + (2001.0, 3.0, 11340.075, 7807.7, 1837.074, 730.493, 8484.5, + 177.6, 1166.0, 2.72, 4.8, 286.047, 0.45, 2.27), + (2001.0, 4.0, 11380.128, 7930.0, 1731.189, 739.318, 8385.5, + 177.7, 1190.9, 1.74, 5.5, 286.728, 0.23, 1.51), + (2002.0, 1.0, 11477.868, 7957.3, 1789.327, 756.915, 8611.6, + 179.3, 1185.9, 1.75, 5.7, 287.328, 3.59, -1.84), + (2002.0, 2.0, 11538.77, 7997.8, 1810.779, 774.408, 8658.9, + 180.0, 1199.5, 1.7, 5.8, 288.028, 1.56, 0.14), + (2002.0, 3.0, 11596.43, 8052.0, 1814.531, 786.673, 8629.2, + 181.2, 1204.0, 1.61, 5.7, 288.783, 2.66, -1.05), + (2002.0, 4.0, 11598.824, 8080.6, 1813.219, 799.967, 8649.6, + 182.6, 1226.8, 1.2, 5.8, 289.421, 3.08, -1.88), + (2003.0, 1.0, 11645.819, 8122.3, 1813.141, 800.196, 8681.3, + 183.2, 1248.4, 1.14, 5.9, 290.019, 1.31, -0.17), + (2003.0, 2.0, 11738.706, 8197.8, 1823.698, 838.775, 8812.5, + 183.7, 1287.9, 0.96, 6.2, 290.704, 1.09, -0.13), + (2003.0, 3.0, 11935.461, 8312.1, 1889.883, 839.598, 8935.4, + 184.9, 1297.3, 0.94, 6.1, 291.449, 2.6, -1.67), + (2003.0, 4.0, 12042.817, 8358.0, 1959.783, 845.722, 8986.4, + 186.3, 1306.1, 0.9, 5.8, 292.057, 3.02, -2.11), + (2004.0, 1.0, 12127.623, 8437.6, 1970.015, 856.57, 9025.9, + 187.4, 1332.1, 0.94, 5.7, 292.635, 2.35, -1.42), + (2004.0, 2.0, 12213.818, 8483.2, 2055.58, 861.44, 9115.0, + 189.1, 1340.5, 1.21, 5.6, 293.31, 3.61, -2.41), + (2004.0, 3.0, 12303.533, 8555.8, 2082.231, 876.385, 9175.9, + 190.8, 1361.0, 1.63, 5.4, 294.066, 3.58, -1.95), + (2004.0, 4.0, 12410.282, 8654.2, 2125.152, 865.596, 9303.4, + 191.8, 1366.6, 2.2, 5.4, 294.741, 2.09, 0.11), + (2005.0, 1.0, 12534.113, 8719.0, 2170.299, 869.204, 9189.6, + 193.8, 1357.8, 2.69, 5.3, 295.308, 4.15, -1.46), + (2005.0, 2.0, 12587.535, 8802.9, 2131.468, 870.044, 9253.0, + 194.7, 1366.6, 3.01, 5.1, 295.994, 1.85, 1.16), + (2005.0, 3.0, 12683.153, 8865.6, 2154.949, 890.394, 9308.0, + 199.2, 1375.0, 3.52, 5.0, 296.77, 9.14, -5.62), + (2005.0, 4.0, 12748.699, 8888.5, 2232.193, 875.557, 9358.7, + 199.4, 1380.6, 4.0, 4.9, 297.435, 0.4, 3.6), + (2006.0, 1.0, 12915.938, 8986.6, 2264.721, 900.511, 9533.8, + 200.7, 1380.5, 4.51, 4.7, 298.061, 2.6, 1.91), + (2006.0, 2.0, 12962.462, 9035.0, 2261.247, 892.839, 9617.3, + 202.7, 1369.2, 4.82, 4.7, 298.766, 3.97, 0.85), + (2006.0, 3.0, 12965.916, 9090.7, 2229.636, 892.002, 9662.5, + 201.9, 1369.4, 4.9, 4.7, 299.593, -1.58, 6.48), + (2006.0, 4.0, 13060.679, 9181.6, 2165.966, 894.404, 9788.8, + 203.574, 1373.6, 4.92, 4.4, 300.32, 3.3, 1.62), + (2007.0, 1.0, 13099.901, 9265.1, 2132.609, 882.766, 9830.2, + 205.92, 1379.7, 4.95, 4.5, 300.977, 4.58, 0.36), + (2007.0, 2.0, 13203.977, 9291.5, 2162.214, 898.713, 9842.7, + 207.338, 1370.0, 4.72, 4.5, 301.714, 2.75, 1.97), + (2007.0, 3.0, 13321.109, 9335.6, 2166.491, 918.983, 9883.9, + 209.133, 1379.2, 4.0, 4.7, 302.509, 3.45, 0.55), + (2007.0, 4.0, 13391.249, 9363.6, 2123.426, 925.11, 9886.2, + 212.495, 1377.4, 3.01, 4.8, 303.204, 6.38, -3.37), + (2008.0, 1.0, 13366.865, 9349.6, 2082.886, 943.372, 9826.8, + 213.997, 1384.0, 1.56, 4.9, 303.803, 2.82, -1.26), + (2008.0, 2.0, 13415.266, 9351.0, 2026.518, 961.28, 10059.0, + 218.61, 1409.3, 1.74, 5.4, 304.483, 8.53, -6.79), + (2008.0, 3.0, 13324.6, 9267.7, 1990.693, 991.551, 9838.3, + 216.889, 1474.7, 1.17, 6.0, 305.27, -3.16, 4.33), + (2008.0, 4.0, 13141.92, 9195.3, 1857.661, 1007.273, 9920.4, + 212.174, 1576.5, 0.12, 6.9, 305.952, -8.79, 8.91), + (2009.0, 1.0, 12925.41, 9209.2, 1558.494, 996.287, 9926.4, + 212.671, 1592.8, 0.22, 8.1, 306.547, 0.94, -0.71), + (2009.0, 2.0, 12901.504, 9189.0, 1456.678, 1023.528, 10077.5, + 214.469, 1653.6, 0.18, 9.2, 307.226, 3.37, -3.19), + (2009.0, 3.0, 12990.341, 9256.0, 1486.398, 1044.088, 10040.6, + 216.385, 1673.9, 0.12, 9.6, 308.013, 3.56, -3.44)], + dtype=[('year', 'i4'), ('quarter', 'i2'), ('realgdp', 'f4'), + ('realcons', 'f4'), ('realinv', 'f4'), ('realgovt', 'f4'), + ('realdpi', 'f4'), ('cpi', 'f4'), ('m1', 'f4'), ('tbilrate', 'f4'), + ('unemp', 'f4'), ('pop', 'f4'), ('infl', 'f4'), ('realint', 'f4')]) diff --git a/statsmodels/iolib/tests/results/time_series_examples.dta b/statsmodels/iolib/tests/results/time_series_examples.dta new file mode 100644 index 0000000000000000000000000000000000000000..19a45a189c722fb0754ff1855aca053c01eef0bf GIT binary patch literal 1760 zcmXS7Vr1Z8U}69QqeoA9K{OCJZ#H!R(Fw9A!Sr(vUN8+30|A9+Cmg^GD8UY;O%{ZL z#WO2892gWV6#SD*6pRcEjT8(mtc*<<{{R2;=g;roe^L@lQcE&(Q{$774MAeV6(nV* zV^suFfTSLiS)Q7jol_Z)TU~B`UP%T%6@{gVMJ1_4xRqoi=A^|}rY7Q4f=>?9#b6QD zl4J&hbR3e{gjGwNN!5_TK#BznswL&5YRDy3Lm{aeGDy`>Nty<1K|LbH?4>|pe07!r|efawPa zG;Y3aFLh#QSorD 2510.2491 (stata) -> 2710.34912109375 + # (dta/ndarray) + from .results.macrodata import macrodata_result as res2 + with pytest.warns(FutureWarning): + res1 = genfromdta(curdir+'/../../datasets/macrodata/macrodata.dta') + assert_array_equal(res1 == res2, True) + + +def test_genfromdta_pandas(): + from pandas.util.testing import assert_frame_equal + dta = macrodata.load_pandas().data + curdir = os.path.dirname(os.path.abspath(__file__)) + + with pytest.warns(FutureWarning): + res1 = genfromdta(curdir+'/../../datasets/macrodata/macrodata.dta', + pandas=True) + + res1 = res1.astype(float) + assert_frame_equal(res1, dta.astype(float)) + + +def test_stata_writer_structured(): + buf = BytesIO() + dta = macrodata.load(as_pandas=False).data + dtype = dta.dtype + dt = [('year', int), ('quarter', int)] + dtype.descr[2:] + if not PY3: # Remove unicode + dt = [(name.encode('ascii'), typ) for name, typ in dt] + dta = dta.astype(np.dtype(dt)) + + with pytest.warns(FutureWarning): + writer = StataWriter(buf, dta) + + writer.write_file() + buf.seek(0) + with pytest.warns(FutureWarning): + dta2 = genfromdta(buf) + + assert_array_equal(dta, dta2) + + +def test_stata_writer_array(): + buf = BytesIO() + dta = macrodata.load(as_pandas=False).data + dta = DataFrame.from_records(dta) + dta.columns = ["v%d" % i for i in range(1,15)] + with pytest.warns(FutureWarning): + writer = StataWriter(buf, dta.values) + + writer.write_file() + buf.seek(0) + with pytest.warns(FutureWarning): + dta2 = genfromdta(buf) + dta = dta.to_records(index=False) + assert_array_equal(dta, dta2) + + +def test_missing_roundtrip(): + buf = BytesIO() + dta = np.array([(np.nan, np.inf, "")], + dtype=[("double_miss", float), + ("float_miss", np.float32), + ("string_miss", "a1")]) + + with pytest.warns(FutureWarning): + writer = StataWriter(buf, dta) + + writer.write_file() + buf.seek(0) + with pytest.warns(FutureWarning): + dta = genfromdta(buf, missing_flt=np.nan) + assert_(isnull(dta[0][0])) + assert_(isnull(dta[0][1])) + assert_(dta[0][2] == asbytes("")) + + with pytest.warns(FutureWarning): + dta = genfromdta(os.path.join(curdir, "results/data_missing.dta"), + missing_flt=-999) + assert_(np.all([dta[0][i] == -999 for i in range(5)])) + + +def test_stata_writer_pandas(): + buf = BytesIO() + dta = macrodata.load_pandas().data + dta4 = dta.copy() + for col in ('year','quarter'): + dta[col] = dta[col].astype(np.int64) + dta4[col] = dta4[col].astype(np.int32) + # dta is int64 'i8' given to Stata writer + with pytest.warns(FutureWarning): + writer = StataWriter(buf, dta) + + with warnings.catch_warnings(record=True) as w: + writer.write_file() + assert len(w) == 0 + buf.seek(0) + + with pytest.warns(FutureWarning): + dta2 = genfromdta(buf) + + dta5 = DataFrame.from_records(dta2) + # dta2 is int32 'i4' returned from Stata reader + + if dta5.dtypes[1] is np.dtype('int64'): + ptesting.assert_frame_equal(dta.reset_index(), dta5) + else: + # don't check index because it has different size, int32 versus int64 + ptesting.assert_frame_equal(dta4, dta5[dta5.columns[1:]]) + +def test_stata_writer_unicode(): + # make sure to test with characters outside the latin-1 encoding + pass + + +def test_genfromdta_datetime(): + results = [(datetime(2006, 11, 19, 23, 13, 20), 1479596223000, + datetime(2010, 1, 20), datetime(2010, 1, 8), + datetime(2010, 1, 1), datetime(1974, 7, 1), + datetime(2010, 1, 1), datetime(2010, 1, 1)), + (datetime(1959, 12, 31, 20, 3, 20), -1479590, + datetime(1953, 10, 2), datetime(1948, 6, 10), + datetime(1955, 1, 1), datetime(1955, 7, 1), + datetime(1955, 1, 1), datetime(2, 1, 1))] + with pytest.warns(FutureWarning): + dta = genfromdta(os.path.join(curdir, + "results/time_series_examples.dta")) + + assert_array_equal(dta[0].tolist(), results[0]) + assert_array_equal(dta[1].tolist(), results[1]) + + with warnings.catch_warnings(record=True): + with pytest.warns(FutureWarning): + dta = genfromdta(os.path.join(curdir, + "results/time_series_examples.dta"), + pandas=True) + + assert_array_equal(dta.iloc[0].tolist(), results[0]) + assert_array_equal(dta.iloc[1].tolist(), results[1]) + + +def test_date_converters(): + ms = [-1479597200000, -1e6, -1e5, -100, 1e5, 1e6, 1479597200000] + days = [-1e5, -1200, -800, -365, -50, 0, 50, 365, 800, 1200, 1e5] + weeks = [-1e4, -1e2, -53, -52, -51, 0, 51, 52, 53, 1e2, 1e4] + months = [-1e4, -1e3, -100, -13, -12, -11, 0, 11, 12, 13, 100, 1e3, 1e4] + quarter = [-100, -50, -5, -4, -3, 0, 3, 4, 5, 50, 100] + half = [-50, 40, 30, 10, 3, 2, 1, 0, 1, 2, 3, 10, 30, 40, 50] + year = [1, 50, 500, 1000, 1500, 1975, 2075] + for i in ms: + assert_equal(_datetime_to_stata_elapsed( + _stata_elapsed_date_to_datetime(i, "tc"), "tc"), i) + for i in days: + assert_equal(_datetime_to_stata_elapsed( + _stata_elapsed_date_to_datetime(i, "td"), "td"), i) + for i in weeks: + assert_equal(_datetime_to_stata_elapsed( + _stata_elapsed_date_to_datetime(i, "tw"), "tw"), i) + for i in months: + assert_equal(_datetime_to_stata_elapsed( + _stata_elapsed_date_to_datetime(i, "tm"), "tm"), i) + for i in quarter: + assert_equal(_datetime_to_stata_elapsed( + _stata_elapsed_date_to_datetime(i, "tq"), "tq"), i) + for i in half: + assert_equal(_datetime_to_stata_elapsed( + _stata_elapsed_date_to_datetime(i, "th"), "th"), i) + for i in year: + assert_equal(_datetime_to_stata_elapsed( + _stata_elapsed_date_to_datetime(i, "ty"), "ty"), i) + + +def test_datetime_roundtrip(): + dta = np.array([(1, datetime(2010, 1, 1), 2), + (2, datetime(2010, 2, 1), 3), + (4, datetime(2010, 3, 1), 5)], + dtype=[('var1', float), ('var2', object), ('var3', float)]) + buf = BytesIO() + + with pytest.warns(FutureWarning): + writer = StataWriter(buf, dta, {"var2" : "tm"}) + + writer.write_file() + buf.seek(0) + + with pytest.warns(FutureWarning): + dta2 = genfromdta(buf) + + assert_equal(dta, dta2) + + dta = DataFrame.from_records(dta) + buf = BytesIO() + + with pytest.warns(FutureWarning): + writer = StataWriter(buf, dta, {"var2" : "tm"}) + + writer.write_file() + buf.seek(0) + + with pytest.warns(FutureWarning): + dta2 = genfromdta(buf, pandas=True) + + ptesting.assert_frame_equal(dta, dta2.drop('index', axis=1)) diff --git a/statsmodels/iolib/tests/test_pickle.py b/statsmodels/iolib/tests/test_pickle.py new file mode 100644 index 0000000..031a6d8 --- /dev/null +++ b/statsmodels/iolib/tests/test_pickle.py @@ -0,0 +1,31 @@ +import tempfile + +from numpy.testing import assert_equal + +from statsmodels.compat.python import lrange, BytesIO +from statsmodels.iolib.smpickle import save_pickle, load_pickle + + +def test_pickle(): + tmpdir = tempfile.mkdtemp(prefix='pickle') + a = lrange(10) + save_pickle(a, tmpdir+'/res.pkl') + b = load_pickle(tmpdir+'/res.pkl') + assert_equal(a, b) + + # cleanup, tested on Windows + try: + import os + os.remove(tmpdir+'/res.pkl') + os.rmdir(tmpdir) + except (OSError, IOError): + pass + assert not os.path.exists(tmpdir) + + # test with file handle + fh = BytesIO() + save_pickle(a, fh) + fh.seek(0, 0) + c = load_pickle(fh) + fh.close() + assert_equal(a, c) diff --git a/statsmodels/iolib/tests/test_summary.py b/statsmodels/iolib/tests/test_summary.py new file mode 100644 index 0000000..a0f91a9 --- /dev/null +++ b/statsmodels/iolib/tests/test_summary.py @@ -0,0 +1,94 @@ +'''examples to check summary, not converted to tests yet + + +''' +from __future__ import print_function + +import numpy as np # noqa: F401 +import pytest + +from statsmodels.datasets import macrodata +from statsmodels.regression.linear_model import OLS + + +def test_escaped_variable_name(): + # Rename 'cpi' column to 'CPI_' + data = macrodata.load(True).data + data.rename(columns={'cpi': 'CPI_'}, inplace=True) + + mod = OLS.from_formula('CPI_ ~ 1 + np.log(realgdp)', data=data) + res = mod.fit() + assert 'CPI\\_' in res.summary().as_latex() + assert 'CPI_' in res.summary().as_text() + + +def test_wrong_len_xname(reset_randomstate): + y = np.random.randn(100) + x = np.random.randn(100, 2) + res = OLS(y, x).fit() + with pytest.raises(ValueError): + res.summary(xname=['x1']) + with pytest.raises(ValueError): + res.summary(xname=['x1', 'x2', 'x3']) + + +if __name__ == '__main__': + + from statsmodels.regression.tests.test_regression import TestOLS + + #def mytest(): + aregression = TestOLS() + TestOLS.setup_class() + results = aregression.res1 + r_summary = str(results.summary_old()) + print(r_summary) + olsres = results + + print('\n\n') + + r_summary = str(results.summary()) + print(r_summary) + print('\n\n') + + + from statsmodels.discrete.tests.test_discrete import TestProbitNewton + + aregression = TestProbitNewton() + TestProbitNewton.setup_class() + results = aregression.res1 + r_summary = str(results.summary()) + print(r_summary) + print('\n\n') + + probres = results + + from statsmodels.robust.tests.test_rlm import TestHampel + + aregression = TestHampel() + #TestHampel.setup_class() + results = aregression.res1 + r_summary = str(results.summary()) + print(r_summary) + rlmres = results + + print('\n\n') + + from statsmodels.genmod.tests.test_glm import TestGlmBinomial + + aregression = TestGlmBinomial() + #TestGlmBinomial.setup_class() + results = aregression.res1 + r_summary = str(results.summary()) + print(r_summary) + + #print(results.summary2(return_fmt='latex')) + #print(results.summary2(return_fmt='csv')) + + smry = olsres.summary() + print(smry.as_csv()) + +# import matplotlib.pyplot as plt +# plt.plot(rlmres.model.endog,'o') +# plt.plot(rlmres.fittedvalues,'-') +# +# plt.show() diff --git a/statsmodels/iolib/tests/test_summary2.py b/statsmodels/iolib/tests/test_summary2.py new file mode 100644 index 0000000..0f9a655 --- /dev/null +++ b/statsmodels/iolib/tests/test_summary2.py @@ -0,0 +1,140 @@ +import warnings + +import numpy as np +import pandas as pd +import pytest +from numpy.testing import assert_equal + +from statsmodels.iolib.summary2 import summary_col +from statsmodels.tools.tools import add_constant +from statsmodels.regression.linear_model import OLS + +class TestSummaryLatex(object): + + def test_summarycol(self): + # Test for latex output of summary_col object + desired = r''' +\begin{table} +\caption{} +\begin{center} +\begin{tabular}{lcc} +\hline + & y I & y II \\ +\midrule +const & 7.7500 & 12.4231 \\ + & (1.1058) & (3.1872) \\ +x1 & -0.7500 & -1.5769 \\ + & (0.2368) & (0.6826) \\ +\hline +\end{tabular} +\end{center} +\end{table} +''' + x = [1,5,7,3,5] + x = add_constant(x) + y1 = [6,4,2,7,4] + y2 = [8,5,0,12,4] + reg1 = OLS(y1,x).fit() + reg2 = OLS(y2,x).fit() + actual = summary_col([reg1,reg2]).as_latex() + actual = '\n%s\n' % actual + assert_equal(desired, actual) + + def test_summarycol_float_format(self): + # Test for latex output of summary_col object + desired = r""" +================= + y I y II +----------------- +const 7.7 12.4 + (1.1) (3.2) +x1 -0.7 -1.6 + (0.2) (0.7) +================= +Standard errors +in parentheses. +""" # noqa:W291 + x = [1, 5, 7, 3, 5] + x = add_constant(x) + y1 = [6, 4, 2, 7, 4] + y2 = [8, 5, 0, 12, 4] + reg1 = OLS(y1, x).fit() + reg2 = OLS(y2, x).fit() + actual = summary_col([reg1, reg2], float_format='%0.1f').as_text() + actual = '%s\n' % actual + assert_equal(actual, desired) + + def test_summarycol_drop_omitted(self): + # gh-3702 + x = [1, 5, 7, 3, 5] + x = add_constant(x) + x2 = np.concatenate([x, np.array([[3], [9], [-1], [4], [0]])], 1) + y1 = [6, 4, 2, 7, 4] + y2 = [8, 5, 0, 12, 4] + reg1 = OLS(y1, x).fit() + reg2 = OLS(y2, x2).fit() + actual = summary_col([reg1, reg2], regressor_order=['const', 'x1'], + drop_omitted=True) + assert 'x2' not in str(actual) + actual = summary_col([reg1, reg2], regressor_order=['x1'], + drop_omitted=False) + assert 'const' in str(actual) + assert 'x2' in str(actual) + + def test_summary_col_ordering_preserved(self): + # gh-3767 + x = [1, 5, 7, 3, 5] + x = add_constant(x) + x2 = np.concatenate([x, np.array([[3], [9], [-1], [4], [0]])], 1) + x2 = pd.DataFrame(x2, columns=['const', 'b', 'a']) + y1 = [6, 4, 2, 7, 4] + y2 = [8, 5, 0, 12, 4] + reg1 = OLS(y1, x2).fit() + reg2 = OLS(y2, x2).fit() + + info_dict = {'R2': lambda x: '{:.3f}'.format(int(x.rsquared)), + 'N': lambda x: '{0:d}'.format(int(x.nobs))} + original = actual = summary_col([reg1, reg2], float_format='%0.4f') + actual = summary_col([reg1, reg2], regressor_order=['a', 'b'], + float_format='%0.4f', + info_dict=info_dict) + variables = ('const', 'b', 'a') + for line in str(original).split('\n'): + for variable in variables: + if line.startswith(variable): + assert line in str(actual) + + def test_OLSsummary(self): + # Test that latex output of regular OLS output still contains + # multiple tables + + x = [1,5,7,3,5] + x = add_constant(x) + y1 = [6,4,2,7,4] + reg1 = OLS(y1,x).fit() + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + actual = reg1.summary().as_latex() + string_to_find = r'''\end{tabular} +\begin{tabular}''' + result = string_to_find in actual + assert(result is True) + + +def test_ols_summary_rsquared_label(): + # Check that the "uncentered" label is correctly added after rsquared + x = [1, 5, 7, 3, 5, 2, 5, 3] + y = [6, 4, 2, 7, 4, 9, 10, 2] + reg_with_constant = OLS(y, add_constant(x)).fit() + r2_str = 'R-squared:' + with pytest.warns(UserWarning): + assert r2_str in str(reg_with_constant.summary2()) + with pytest.warns(UserWarning): + assert r2_str in str(reg_with_constant.summary()) + + reg_without_constant = OLS(y, x, hasconst=False).fit() + r2_str = 'R-squared (uncentered):' + with pytest.warns(UserWarning): + assert r2_str in str(reg_without_constant.summary2()) + with pytest.warns(UserWarning): + assert r2_str in str(reg_without_constant.summary()) diff --git a/statsmodels/iolib/tests/test_summary_old.py b/statsmodels/iolib/tests/test_summary_old.py new file mode 100644 index 0000000..41eab7c --- /dev/null +++ b/statsmodels/iolib/tests/test_summary_old.py @@ -0,0 +1,75 @@ +import warnings + + +def _est_regression_summary(): + #little luck getting this test to pass (It should?), can be used for + #visual testing of the regression.summary table + #fixed, might fail at minute changes + from statsmodels.regression.tests.test_regression import TestOLS + #from test_regression import TestOLS + import time + from string import Template + t = time.localtime() + desired = Template( +''' Summary of Regression Results +======================================= +| Dependent Variable: y| +| Model: OLS| +| Method: Least Squares| +| Date: $XXcurrentXdateXX| +| Time: $XXtimeXXX| +| # obs: 16.0| +| Df residuals: 9.0| +| Df model: 6.0| +============================================================================== +| coefficient std. error t-statistic prob. | +------------------------------------------------------------------------------ +| x1 15.06 84.91 0.1774 0.8631 | +| x2 -0.03582 0.03349 -1.0695 0.3127 | +| x3 -2.020 0.4884 -4.1364 0.0025 | +| x4 -1.033 0.2143 -4.8220 0.0009 | +| x5 -0.05110 0.2261 -0.2261 0.8262 | +| x6 1829. 455.5 4.0159 0.0030 | +| const -3.482e+06 8.904e+05 -3.9108 0.0036 | +============================================================================== +| Models stats Residual stats | +------------------------------------------------------------------------------ +| R-squared: 0.9955 Durbin-Watson: 2.559 | +| Adjusted R-squared: 0.9925 Omnibus: 0.7486 | +| F-statistic: 330.3 Prob(Omnibus): 0.6878 | +| Prob (F-statistic): 4.984e-10 JB: 0.6841 | +| Log likelihood: -109.6 Prob(JB): 0.7103 | +| AIC criterion: 233.2 Skew: 0.4200 | +| BIC criterion: 238.6 Kurtosis: 2.434 | +------------------------------------------------------------------------------''' +).substitute(XXcurrentXdateXX = str(time.strftime("%a, %d %b %Y",t)), + XXtimeXXX = str(time.strftime("%H:%M:%S",t))) + desired = str(desired) + aregression = TestOLS() + TestOLS.setup_class() + results = aregression.res1 + # be quiet! + original_filters = warnings.filters[:] # copy original + warnings.simplefilter("ignore") + try: + r_summary = str(results.summary_old()) + finally: + warnings.filters = original_filters # restore filters + +## print('###') +## print(r_summary) +## print('###') +## print(desired) +## print('###') + actual = r_summary + import numpy as np + actual = '\n'.join((line.rstrip() for line in actual.split('\n'))) +# print len(actual), len(desired) +# print repr(actual) +# print repr(desired) +# counter = 0 +# for c1,c2 in zip(actual, desired): +# if not c1==c2 and counter<20: +# print c1,c2 +# counter += 1 + np.testing.assert_(actual == desired) diff --git a/statsmodels/iolib/tests/test_table.py b/statsmodels/iolib/tests/test_table.py new file mode 100644 index 0000000..8581f00 --- /dev/null +++ b/statsmodels/iolib/tests/test_table.py @@ -0,0 +1,243 @@ +import numpy as np +from numpy.testing import assert_equal +from statsmodels.iolib.table import SimpleTable, default_txt_fmt +from statsmodels.iolib.table import default_latex_fmt +from statsmodels.iolib.table import default_html_fmt +import pandas +from statsmodels.regression.linear_model import OLS + +ltx_fmt1 = default_latex_fmt.copy() +html_fmt1 = default_html_fmt.copy() + + +class TestSimpleTable(object): + def test_simple_table_1(self): + # Basic test, test_simple_table_1 + desired = ''' +===================== + header1 header2 +--------------------- +stub1 1.30312 2.73999 +stub2 1.95038 2.65765 +--------------------- +''' + test1data = [[1.30312, 2.73999],[1.95038, 2.65765]] + test1stubs = ('stub1', 'stub2') + test1header = ('header1', 'header2') + actual = SimpleTable(test1data, test1header, test1stubs, + txt_fmt=default_txt_fmt) + actual = '\n%s\n' % actual.as_text() + assert_equal(desired, str(actual)) + + def test_simple_table_2(self): + # Test SimpleTable.extend_right() + desired = ''' +============================================================= + header s1 header d1 header s2 header d2 +------------------------------------------------------------- +stub R1 C1 10.30312 10.73999 stub R1 C2 50.95038 50.65765 +stub R2 C1 90.30312 90.73999 stub R2 C2 40.95038 40.65765 +------------------------------------------------------------- +''' + data1 = [[10.30312, 10.73999], [90.30312, 90.73999]] + data2 = [[50.95038, 50.65765], [40.95038, 40.65765]] + stubs1 = ['stub R1 C1', 'stub R2 C1'] + stubs2 = ['stub R1 C2', 'stub R2 C2'] + header1 = ['header s1', 'header d1'] + header2 = ['header s2', 'header d2'] + actual1 = SimpleTable(data1, header1, stubs1, txt_fmt=default_txt_fmt) + actual2 = SimpleTable(data2, header2, stubs2, txt_fmt=default_txt_fmt) + actual1.extend_right(actual2) + actual = '\n%s\n' % actual1.as_text() + assert_equal(desired, str(actual)) + + def test_simple_table_3(self): + # Test SimpleTable.extend() as in extend down + desired = ''' +============================== + header s1 header d1 +------------------------------ +stub R1 C1 10.30312 10.73999 +stub R2 C1 90.30312 90.73999 + header s2 header d2 +------------------------------ +stub R1 C2 50.95038 50.65765 +stub R2 C2 40.95038 40.65765 +------------------------------ +''' + data1 = [[10.30312, 10.73999], [90.30312, 90.73999]] + data2 = [[50.95038, 50.65765], [40.95038, 40.65765]] + stubs1 = ['stub R1 C1', 'stub R2 C1'] + stubs2 = ['stub R1 C2', 'stub R2 C2'] + header1 = ['header s1', 'header d1'] + header2 = ['header s2', 'header d2'] + actual1 = SimpleTable(data1, header1, stubs1, txt_fmt=default_txt_fmt) + actual2 = SimpleTable(data2, header2, stubs2, txt_fmt=default_txt_fmt) + actual1.extend(actual2) + actual = '\n%s\n' % actual1.as_text() + assert_equal(desired, str(actual)) + + def test_simple_table_4(self): + # Basic test, test_simple_table_4 test uses custom txt_fmt + txt_fmt1 = dict(data_fmts = ['%3.2f', '%d'], + empty_cell = ' ', + colwidths = 1, + colsep=' * ', + row_pre = '* ', + row_post = ' *', + table_dec_above='*', + table_dec_below='*', + header_dec_below='*', + header_fmt = '%s', + stub_fmt = '%s', + title_align='r', + header_align = 'r', + data_aligns = "r", + stubs_align = "l", + fmt = 'txt' + ) + ltx_fmt1 = default_latex_fmt.copy() + html_fmt1 = default_html_fmt.copy() + cell0data = 0.0000 + cell1data = 1 + row0data = [cell0data, cell1data] + row1data = [2, 3.333] + table1data = [ row0data, row1data ] + test1stubs = ('stub1', 'stub2') + test1header = ('header1', 'header2') + tbl = SimpleTable(table1data, test1header, test1stubs,txt_fmt=txt_fmt1, + ltx_fmt=ltx_fmt1, html_fmt=html_fmt1) + + def test_txt_fmt1(self): + # Limited test of custom txt_fmt + desired = """ +***************************** +* * header1 * header2 * +***************************** +* stub1 * 0.00 * 1 * +* stub2 * 2.00 * 3 * +***************************** +""" + actual = '\n%s\n' % tbl.as_text() + #print(actual) + #print(desired) + assert_equal(actual, desired) + + def test_ltx_fmt1(self): + # Limited test of custom ltx_fmt + desired = r""" +\begin{tabular}{lcc} +\toprule + & \textbf{header1} & \textbf{header2} \\ +\midrule +\textbf{stub1} & 0.0 & 1 \\ +\textbf{stub2} & 2 & 3.333 \\ +\bottomrule +\end{tabular} +""" + actual = '\n%s\n' % tbl.as_latex_tabular(center=False) + #print(actual) + #print(desired) + assert_equal(actual, desired) + # Test "center=True" (the default): + desired_centered = r""" +\begin{center} +%s +\end{center} +""" % desired[1:-1] + actual_centered = '\n%s\n' % tbl.as_latex_tabular() + assert_equal(actual_centered, desired_centered) + + def test_html_fmt1(self): + # Limited test of custom html_fmt + desired = """ + + + + + + + + + + +
    header1 header2
    stub1 0.0 1
    stub2 2 3.333
    +""" # noqa:W291 + actual = '\n%s\n' % tbl.as_html() + assert_equal(actual, desired) + test_txt_fmt1(self) + test_ltx_fmt1(self) + test_html_fmt1(self) + + def test_simple_table_special_chars(self): + # Simple table with characters: (%, >, |, _, $, &, #) + cell0c_data = 22 + cell1c_data = 1053 + row0c_data = [cell0c_data, cell1c_data] + row1c_data = [23, 6250.4] + table1c_data = [ row0c_data, row1c_data ] + test1c_stubs = ('>stub1%', 'stub_2') + test1c_header = ('#header1$', 'header&|') + tbl_c = SimpleTable(table1c_data, test1c_header, test1c_stubs, ltx_fmt=ltx_fmt1) + + def test_ltx_special_chars(self): + # Test for special characters (latex) in headers and stubs + desired = r""" +\begin{tabular}{lcc} +\toprule + & \textbf{\#header1\$} & \textbf{header\&$|$} \\ +\midrule +\textbf{$>$stub1\%} & 22 & 1053 \\ +\textbf{stub\_2} & 23 & 6250.4 \\ +\bottomrule +\end{tabular} +""" + actual = '\n%s\n' % tbl_c.as_latex_tabular(center=False) + assert_equal(actual, desired) + test_ltx_special_chars(self) + + def test_regression_with_tuples(self): + i = pandas.Series([1, 2, 3, 4] * 10, name="i") + y = pandas.Series([1, 2, 3, 4, 5] * 8, name="y") + x = pandas.Series([1, 2, 3, 4, 5, 6, 7, 8] * 5, name="x") + + df = pandas.DataFrame(index=i.index) + df = df.join(i) + endo = df.join(y) + exo = df.join(x) + endo_groups = endo.groupby("i") + exo_groups = exo.groupby("i") + exo_df = exo_groups.agg([np.sum, np.max]) + endo_df = endo_groups.agg([np.sum, np.max]) + reg = OLS(exo_df[[("x", "sum")]], endo_df).fit() + interesting_lines = [] + import warnings + with warnings.catch_warnings(): + # Catch ominormal warning, not interesting here + warnings.simplefilter("ignore") + for line in str(reg.summary()).splitlines(): + if "_" in line: + interesting_lines.append(line[:38]) + + desired = ["Dep. Variable: x_sum ", + "y_sum 1.4595 0.209 ", + "y_amax 0.2432 0.035 "] + + assert_equal(sorted(desired), sorted(interesting_lines)) + + def test_default_alignment(self): + desired = ''' +===================== + header1 header2 +--------------------- +stub1 1.30312 2.73 +stub2 1.95038 2.6 +--------------------- +''' + test1data = [[1.30312, 2.73], [1.95038, 2.6]] + test1stubs = ('stub1', 'stub2') + test1header = ('header1', 'header2') + actual = SimpleTable(test1data, test1header, test1stubs, + txt_fmt=default_txt_fmt) + actual = '\n%s\n' % actual.as_text() + assert_equal(desired, str(actual)) diff --git a/statsmodels/iolib/tests/test_table_econpy.py b/statsmodels/iolib/tests/test_table_econpy.py new file mode 100644 index 0000000..b9408aa --- /dev/null +++ b/statsmodels/iolib/tests/test_table_econpy.py @@ -0,0 +1,142 @@ +''' +Unit tests table.py. + +:see: http://docs.python.org/lib/minimal-example.html for an intro to unittest +:see: http://agiletesting.blogspot.com/2005/01/python-unit-testing-part-1-unittest.html +:see: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/305292 +''' +from __future__ import absolute_import +from statsmodels.compat.python import zip + +import numpy as np +from numpy.testing import assert_equal + +__docformat__ = "restructuredtext en" + +from statsmodels.iolib.table import Cell, SimpleTable +from statsmodels.iolib.table import default_latex_fmt +from statsmodels.iolib.table import default_html_fmt + +ltx_fmt1 = default_latex_fmt.copy() +html_fmt1 = default_html_fmt.copy() + +txt_fmt1 = dict( + data_fmts = ['%0.2f', '%d'], + empty_cell = ' ', + colwidths = 1, + colsep=' * ', + row_pre = '* ', + row_post = ' *', + table_dec_above='*', + table_dec_below='*', + header_dec_below='*', + header_fmt = '%s', + stub_fmt = '%s', + title_align='r', + header_align = 'r', + data_aligns = "r", + stubs_align = "l", + fmt = 'txt' +) +cell0data = 0.0000 +cell1data = 1 +row0data = [cell0data, cell1data] +row1data = [2, 3.333] +table1data = [ row0data, row1data ] +test1stubs = ('stub1', 'stub2') +test1header = ('header1', 'header2') +#test1header = ('header1\nheader1a', 'header2\nheader2a') +tbl = SimpleTable(table1data, test1header, test1stubs, + txt_fmt=txt_fmt1, ltx_fmt=ltx_fmt1, html_fmt=html_fmt1) + + +def custom_labeller(cell): + if cell.data is np.nan: + return 'missing' + + +class TestCell(object): + def test_celldata(self): + celldata = cell0data, cell1data, row1data[0], row1data[1] + cells = [Cell(datum, datatype=i % 2) + for i, datum in enumerate(celldata)] + for cell, datum in zip(cells, celldata): + assert_equal(cell.data, datum) + + +class TestSimpleTable(object): + def test_txt_fmt1(self): + # Limited test of custom txt_fmt + desired = """ +***************************** +* * header1 * header2 * +***************************** +* stub1 * 0.00 * 1 * +* stub2 * 2.00 * 3 * +***************************** +""" + actual = '\n%s\n' % tbl.as_text() + #print('actual') + #print(actual) + #print('desired') + #print(desired) + assert_equal(actual, desired) + def test_ltx_fmt1(self): + # Limited test of custom ltx_fmt + desired = r""" +\begin{center} +\begin{tabular}{lcc} +\toprule + & \textbf{header1} & \textbf{header2} \\ +\midrule +\textbf{stub1} & 0.0 & 1 \\ +\textbf{stub2} & 2 & 3.333 \\ +\bottomrule +\end{tabular} +\end{center} +""" + actual = '\n%s\n' % tbl.as_latex_tabular() + #print(actual) + #print(desired) + assert_equal(actual, desired) + + def test_html_fmt1(self): + # Limited test of custom html_fmt + desired = """ + + + + + + + + + + +
    header1 header2
    stub1 0.0 1
    stub2 2 3.333
    +""" + #the previous has significant trailing whitespace that got removed + #desired = '''\n\n\n \n\n\n \n\n\n \n\n
    header1 header2
    stub1 0.0 1
    stub2 2 3.333
    \n''' + actual = '\n%s\n' % tbl.as_html() + actual = '\n'.join((line.rstrip() for line in actual.split('\n'))) + #print(actual) + #print(desired) + #print len(actual), len(desired) + assert_equal(actual, desired) + + def test_customlabel(self): + # Limited test of custom custom labeling + tbl = SimpleTable(table1data, test1header, test1stubs, txt_fmt=txt_fmt1) + tbl[1][1].data = np.nan + tbl.label_cells(custom_labeller) + #print([[c.datatype for c in row] for row in tbl]) + desired = """ +***************************** +* * header1 * header2 * +***************************** +* stub1 * -- * 1 * +* stub2 * 2.00 * 3 * +***************************** +""" + actual = '\n%s\n' % tbl.as_text(missing='--') + assert_equal(actual, desired) diff --git a/statsmodels/miscmodels/__init__.py b/statsmodels/miscmodels/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/miscmodels/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/miscmodels/api.py b/statsmodels/miscmodels/api.py new file mode 100644 index 0000000..167aaa6 --- /dev/null +++ b/statsmodels/miscmodels/api.py @@ -0,0 +1,5 @@ +__all__ = ["TLinearModel", "PoissonGMLE", "PoissonOffsetGMLE", "PoissonZiGMLE"] +from .tmodel import TLinearModel +from .count import (PoissonGMLE, PoissonOffsetGMLE, PoissonZiGMLE, + #NonlinearDeltaCov + ) diff --git a/statsmodels/miscmodels/count.py b/statsmodels/miscmodels/count.py new file mode 100644 index 0000000..9dfbaf0 --- /dev/null +++ b/statsmodels/miscmodels/count.py @@ -0,0 +1,257 @@ +# -*- coding: utf-8 -*- +""" +Created on Mon Jul 26 08:34:59 2010 + +Author: josef-pktd + +changes: +added offset and zero-inflated version of Poisson + - kind of ok, need better test cases, + - a nan in ZIP bse, need to check hessian calculations + - found error in ZIP loglike + - all tests pass with + +Issues +------ +* If true model is not zero-inflated then numerical Hessian for ZIP has zeros + for the inflation probability and is not invertible. + -> hessian inverts and bse look ok if row and column are dropped, pinv also works +* GenericMLE: still get somewhere (where?) + "CacheWriteWarning: The attribute 'bse' cannot be overwritten" +* bfgs is too fragile, doesn't come back +* `nm` is slow but seems to work +* need good start_params and their use in genericmle needs to be checked for + consistency, set as attribute or method (called as attribute) +* numerical hessian needs better scaling + +* check taking parts out of the loop, e.g. factorial(endog) could be precalculated + + +""" +from __future__ import print_function +import numpy as np +from scipy import stats +from statsmodels.compat.scipy import factorial +from statsmodels.base.model import GenericLikelihoodModel + + +def maxabs(arr1, arr2): + return np.max(np.abs(arr1 - arr2)) + +def maxabsrel(arr1, arr2): + return np.max(np.abs(arr2 / arr1 - 1)) + +class NonlinearDeltaCov(object): + '''Asymptotic covariance by Deltamethod + + the function is designed for 2d array, with rows equal to + the number of equations and columns equal to the number + of parameters. 1d params work by chance ? + + fun: R^{m*k) -> R^{m} where m is number of equations and k is + the number of parameters. + + equations follow Greene + + ''' + def __init__(self, fun, params, cov_params): + self.fun = fun + self.params = params + self.cov_params = cov_params + + def grad(self, params=None, **kwds): + if params is None: + params = self.params + kwds.setdefault('epsilon', 1e-4) + from statsmodels.tools.numdiff import approx_fprime + return approx_fprime(params, self.fun, **kwds) + + def cov(self): + g = self.grad() + covar = np.dot(np.dot(g, self.cov_params), g.T) + return covar + + def expected(self): + # rename: misnomer, this is the MLE of the fun + return self.fun(self.params) + + def wald(self, value): + m = self.expected() + v = self.cov() + df = np.size(m) + diff = m - value + lmstat = np.dot(np.dot(diff.T, np.linalg.inv(v)), diff) + return lmstat, stats.chi2.sf(lmstat, df) + + + + +class PoissonGMLE(GenericLikelihoodModel): + '''Maximum Likelihood Estimation of Poisson Model + + This is an example for generic MLE which has the same + statistical model as discretemod.Poisson. + + Except for defining the negative log-likelihood method, all + methods and results are generic. Gradients and Hessian + and all resulting statistics are based on numerical + differentiation. + + ''' + + # copied from discretemod.Poisson + def nloglikeobs(self, params): + """ + Loglikelihood of Poisson model + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + The log likelihood of the model evaluated at `params` + + Notes + -------- + .. math:: \\ln L=\\sum_{i=1}^{n}\\left[-\\lambda_{i}+y_{i}x_{i}^{\\prime}\\beta-\\ln y_{i}!\\right] + """ + XB = np.dot(self.exog, params) + endog = self.endog + return np.exp(XB) - endog*XB + np.log(factorial(endog)) + + def predict_distribution(self, exog): + '''return frozen scipy.stats distribution with mu at estimated prediction + ''' + if not hasattr(self, "result"): + # TODO: why would this be ValueError instead of AttributeError? + # TODO: Why even make this a Model attribute in the first place? + # It belongs on the Results class + raise ValueError + else: + result = self.result + params = result.params + mu = np.exp(np.dot(exog, params)) + return stats.poisson(mu, loc=0) + + + +class PoissonOffsetGMLE(GenericLikelihoodModel): + '''Maximum Likelihood Estimation of Poisson Model + + This is an example for generic MLE which has the same + statistical model as discretemod.Poisson but adds offset + + Except for defining the negative log-likelihood method, all + methods and results are generic. Gradients and Hessian + and all resulting statistics are based on numerical + differentiation. + + ''' + + def __init__(self, endog, exog=None, offset=None, missing='none', **kwds): + # let them be none in case user wants to use inheritance + if offset is not None: + if offset.ndim == 1: + offset = offset[:,None] #need column + self.offset = offset.ravel() + else: + self.offset = 0. + super(PoissonOffsetGMLE, self).__init__(endog, exog, missing=missing, + **kwds) + +#this was added temporarily for bug-hunting, but shouldn't be needed +# def loglike(self, params): +# return -self.nloglikeobs(params).sum(0) + + # original copied from discretemod.Poisson + def nloglikeobs(self, params): + """ + Loglikelihood of Poisson model + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + The log likelihood of the model evaluated at `params` + + Notes + -------- + .. math:: \\ln L=\\sum_{i=1}^{n}\\left[-\\lambda_{i}+y_{i}x_{i}^{\\prime}\\beta-\\ln y_{i}!\\right] + """ + + XB = self.offset + np.dot(self.exog, params) + endog = self.endog + nloglik = np.exp(XB) - endog*XB + np.log(factorial(endog)) + return nloglik + +class PoissonZiGMLE(GenericLikelihoodModel): + '''Maximum Likelihood Estimation of Poisson Model + + This is an example for generic MLE which has the same statistical model + as discretemod.Poisson but adds offset and zero-inflation. + + Except for defining the negative log-likelihood method, all + methods and results are generic. Gradients and Hessian + and all resulting statistics are based on numerical + differentiation. + + There are numerical problems if there is no zero-inflation. + + ''' + + def __init__(self, endog, exog=None, offset=None, missing='none', **kwds): + # let them be none in case user wants to use inheritance + + super(PoissonZiGMLE, self).__init__(endog, exog, missing=missing, + **kwds) + if offset is not None: + if offset.ndim == 1: + offset = offset[:,None] #need column + self.offset = offset.ravel() #which way? + else: + self.offset = 0. + + #TODO: it's not standard pattern to use default exog + if exog is None: + self.exog = np.ones((self.nobs,1)) + self.nparams = self.exog.shape[1] + #what's the shape in regression for exog if only constant + self.start_params = np.hstack((np.ones(self.nparams), 0)) + self.cloneattr = ['start_params'] + #needed for t_test and summary + self.exog_names.append('zi') + + + # original copied from discretemod.Poisson + def nloglikeobs(self, params): + """ + Loglikelihood of Poisson model + + Parameters + ---------- + params : array-like + The parameters of the model. + + Returns + ------- + The log likelihood of the model evaluated at `params` + + Notes + -------- + .. math:: \\ln L=\\sum_{i=1}^{n}\\left[-\\lambda_{i}+y_{i}x_{i}^{\\prime}\\beta-\\ln y_{i}!\\right] + """ + beta = params[:-1] + gamm = 1 / (1 + np.exp(params[-1])) #check this + # replace with np.dot(self.exogZ, gamma) + #print(np.shape(self.offset), self.exog.shape, beta.shape + XB = self.offset + np.dot(self.exog, beta) + endog = self.endog + nloglik = -np.log(1-gamm) + np.exp(XB) - endog*XB + np.log(factorial(endog)) + nloglik[endog==0] = - np.log(gamm + np.exp(-nloglik[endog==0])) + + return nloglik diff --git a/statsmodels/miscmodels/nonlinls.py b/statsmodels/miscmodels/nonlinls.py new file mode 100644 index 0000000..89769d6 --- /dev/null +++ b/statsmodels/miscmodels/nonlinls.py @@ -0,0 +1,309 @@ +'''Non-linear least squares + + + +Author: Josef Perktold based on scipy.optimize.curve_fit + +''' +import numpy as np +from scipy import optimize + +from statsmodels.base.model import Model + + +class Results(object): + '''just a dummy placeholder for now + most results from RegressionResults can be used here + ''' + pass + + +##def getjaccov(retval, n): +## '''calculate something and raw covariance matrix from return of optimize.leastsq +## +## I cannot figure out how to recover the Jacobian, or whether it is even +## possible +## +## this is a partial copy of scipy.optimize.leastsq +## ''' +## info = retval[-1] +## #n = len(x0) #nparams, where do I get this +## cov_x = None +## if info in [1,2,3,4]: +## from numpy.dual import inv +## from numpy.linalg import LinAlgError +## perm = np.take(np.eye(n), retval[1]['ipvt']-1,0) +## r = np.triu(np.transpose(retval[1]['fjac'])[:n,:]) +## R = np.dot(r, perm) +## try: +## cov_x = inv(np.dot(np.transpose(R),R)) +## except LinAlgError: +## print 'cov_x not available' +## pass +## return r, R, cov_x +## +##def _general_function(params, xdata, ydata, function): +## return function(xdata, *params) - ydata +## +##def _weighted_general_function(params, xdata, ydata, function, weights): +## return weights * (function(xdata, *params) - ydata) +## + + + +class NonlinearLS(Model): #or subclass a model + r'''Base class for estimation of a non-linear model with least squares + + This class is supposed to be subclassed, and the subclass has to provide a method + `_predict` that defines the non-linear function `f(params) that is predicting the endogenous + variable. The model is assumed to be + + :math: y = f(params) + error + + and the estimator minimizes the sum of squares of the estimated error. + + :math: min_parmas \sum (y - f(params))**2 + + f has to return the prediction for each observation. Exogenous or explanatory variables + should be accessed as attributes of the class instance, and can be given as arguments + when the instance is created. + + Warning: + Weights are not correctly handled yet in the results statistics, + but included when estimating the parameters. + + similar to scipy.optimize.curve_fit + API difference: params are array_like not split up, need n_params information + + includes now weights similar to curve_fit + no general sigma yet (OLS and WLS, but no GLS) + + This is currently holding on to intermediate results that are not necessary + but useful for testing. + + Fit returns and instance of RegressionResult, in contrast to the linear + model, results in this case are based on a local approximation, essentially + y = f(X, params) is replaced by y = grad * params where grad is the Gradient + or Jacobian with the shape (nobs, nparams). See for example Greene + + Examples + -------- + + class Myfunc(NonlinearLS): + + def _predict(self, params): + x = self.exog + a, b, c = params + return a*np.exp(-b*x) + c + + Ff we have data (y, x), we can create an instance and fit it with + + mymod = Myfunc(y, x) + myres = mymod.fit(nparams=3) + + and use the non-linear regression results, for example + + myres.params + myres.bse + myres.tvalues + + + ''' + #NOTE: This needs to call super for data checking + def __init__(self, endog=None, exog=None, weights=None, sigma=None, + missing='none'): + self.endog = endog + self.exog = exog + if sigma is not None: + sigma = np.asarray(sigma) + if sigma.ndim < 2: + self.sigma = sigma + self.weights = 1./sigma + else: + raise ValueError('correlated errors are not handled yet') + else: + self.weights = None + + def predict(self, exog, params=None): + #copied from GLS, Model has different signature + return self._predict(params) + + + def _predict(self, params): + pass + + def start_value(self): + return None + + def geterrors(self, params, weights=None): + if weights is None: + if self.weights is None: + return self.endog - self._predict(params) + else: + weights = self.weights + return weights * (self.endog - self._predict(params)) + + def errorsumsquares(self, params): + return (self.geterrors(params)**2).sum() + + + def fit(self, start_value=None, nparams=None, **kw): + #if hasattr(self, 'start_value'): + #I added start_value even if it's empty, not sure about it + #but it makes a visible placeholder + + if start_value is not None: + p0 = start_value + else: + #nesting so that start_value is only calculated if it is needed + p0 = self.start_value() + if p0 is not None: + pass + elif nparams is not None: + p0 = 0.1 * np.ones(nparams) + else: + raise ValueError('need information about start values for' + + 'optimization') + + func = self.geterrors + res = optimize.leastsq(func, p0, full_output=1, **kw) + (popt, pcov, infodict, errmsg, ier) = res + + if ier not in [1,2,3,4]: + msg = "Optimal parameters not found: " + errmsg + raise RuntimeError(msg) + + err = infodict['fvec'] + + ydata = self.endog + if (len(ydata) > len(p0)) and pcov is not None: + #this can use the returned errors instead of recalculating + + s_sq = (err**2).sum()/(len(ydata)-len(p0)) + pcov = pcov * s_sq + else: + pcov = None + + self.df_resid = len(ydata)-len(p0) + self.df_model = len(p0) + fitres = Results() + fitres.params = popt + fitres.pcov = pcov + fitres.rawres = res + self.wendog = self.endog #add weights + self.wexog = self.jac_predict(popt) + pinv_wexog = np.linalg.pinv(self.wexog) + self.normalized_cov_params = np.dot(pinv_wexog, + np.transpose(pinv_wexog)) + + #TODO: check effect of `weights` on result statistics + #I think they are correctly included in cov_params + #maybe not anymore, I'm not using pcov of leastsq + #direct calculation with jac_predict misses the weights + +## if not weights is None +## fitres.wexogw = self.weights * self.jacpredict(popt) + from statsmodels.regression import RegressionResults + results = RegressionResults + + beta = popt + lfit = RegressionResults(self, beta, + normalized_cov_params=self.normalized_cov_params) + + lfit.fitres = fitres #mainly for testing + self._results = lfit + return lfit + + def fit_minimal(self, start_value, **kwargs): + '''minimal fitting with no extra calculations''' + func = self.geterrors + res = optimize.leastsq(func, start_value, full_output=0, **kwargs) + return res + + def fit_random(self, ntries=10, rvs_generator=None, nparams=None): + '''fit with random starting values + + this could be replaced with a global fitter + + ''' + + if nparams is None: + nparams = self.nparams + if rvs_generator is None: + rvs = np.random.uniform(low=-10, high=10, size=(ntries, nparams)) + else: + rvs = rvs_generator(size=(ntries, nparams)) + + results = np.array([np.r_[self.fit_minimal(rv), rv] for rv in rvs]) + #selct best results and check how many solutions are within 1e-6 of best + #not sure what leastsq returns + return results + + def jac_predict(self, params): + '''jacobian of prediction function using complex step derivative + + This assumes that the predict function does not use complex variable + but is designed to do so. + + ''' + from statsmodels.tools.numdiff import approx_fprime_cs + + jaccs_err = approx_fprime_cs(params, self._predict) + return jaccs_err + + +class Myfunc(NonlinearLS): + + #predict model.Model has a different signature +## def predict(self, params, exog=None): +## if not exog is None: +## x = exog +## else: +## x = self.exog +## a, b, c = params +## return a*np.exp(-b*x) + c + + def _predict(self, params): + x = self.exog + a, b, c = params + return a*np.exp(-b*x) + c + + + + + +if __name__ == '__main__': + def func0(x, a, b, c): + return a*np.exp(-b*x) + c + + def func(params, x): + a, b, c = params + return a*np.exp(-b*x) + c + + def error(params, x, y): + return y - func(params, x) + + def error2(params, x, y): + return (y - func(params, x))**2 + + + + + x = np.linspace(0,4,50) + params = np.array([2.5, 1.3, 0.5]) + y0 = func(params, x) + y = y0 + 0.2*np.random.normal(size=len(x)) + + res = optimize.leastsq(error, params, args=(x, y), full_output=True) +## r, R, c = getjaccov(res[1:], 3) + + mod = Myfunc(y, x) + resmy = mod.fit(nparams=3) + + cf_params, cf_pcov = optimize.curve_fit(func0, x, y) + cf_bse = np.sqrt(np.diag(cf_pcov)) + print(res[0]) + print(cf_params) + print(resmy.params) + print(cf_bse) + print(resmy.bse) diff --git a/statsmodels/miscmodels/tests/__init__.py b/statsmodels/miscmodels/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/miscmodels/tests/results_tmodel.py b/statsmodels/miscmodels/tests/results_tmodel.py new file mode 100644 index 0000000..28f2549 --- /dev/null +++ b/statsmodels/miscmodels/tests/results_tmodel.py @@ -0,0 +1,176 @@ +# -*- coding: utf-8 -*- +""" + +Created on Sun Jun 30 23:14:36 2013 + +Author: Josef Perktold +""" + +import numpy as np + +from statsmodels.tools.testing import Holder + +res_t_dfest = Holder() +# > tfit3 <- tlm(m.marietta~CRSP, data=mm, start=list(dof = 3), estDof=TRUE) +# > cat_items(tfit3, "res_t_dfest.") +res_t_dfest.random = np.array([ + 0.6242843, 1.349205, 1.224172, 1.272655, 1.323455, 1.091313, 1.227218, + 0.0316284, 0.7202973, 1.038392, 1.091907, 0.7966355, 0.784222, + 0.5042926, 0.1964543, 1.172123, 1.017338, 0.8799186, 0.7849335, + 0.790158, 0.8121724, 1.286998, 0.7286052, 1.330104, 1.054037, + 1.299656, 1.285306, 1.271166, 1.106877, 1.303909, 0.4250416, 1.277096, + 1.160106, 0.1871806, 1.074168, 1.197795, 1.046638, 1.104423, 1.301670, + 1.333217, 0.8156778, 1.309934, 1.142454, 1.347481, 0.6605017, + 1.035725, 1.172666, 1.281746, 0.8796436, 0.9597098, 0.6221453, + 1.149490, 1.291864, 1.207619, 1.239625, 1.351065, 1.248711, 0.3532520, + 0.6067273, 0.8180234 + ]) +res_t_dfest.dof = 2.837183 +res_t_dfest.dofse = 1.175296 +res_t_dfest.iter = 7 +res_t_dfest.logLik = 71.81292 +res_t_dfest.endTime = 0.01 + +loc_fit = Holder() +#> cat_items(tfit3$loc.fit, "loc_fit.") +loc_fit.coefficients = np.array([-0.007248461, 1.263751]) +loc_fit.residuals = np.array([ + -0.09133902, 0.004151492, -0.02737765, 0.02117769, 0.01251936, + -0.0413709, -0.02701702, 0.5465314, -0.07922967, -0.04651135, + -0.04131256, 0.07064283, -0.07199043, -0.1096804, 0.2051536, + 0.0331728, 0.04853971, 0.06197657, 0.07191273, -0.07134392, + 0.06897908, -0.01907315, -0.0782573, -0.01096341, 0.04500034, + -0.01704652, -0.01933079, 0.02138696, 0.03983612, -0.01631880, + 0.1249257, -0.02054422, -0.03443716, 0.2110156, -0.04304691, + 0.03038995, 0.04571555, 0.04007908, -0.01670529, 0.01015959, + 0.06860706, -0.01523742, 0.03625959, 0.005138716, -0.08656302, + -0.04676856, -0.03311507, -0.01986418, -0.06200429, 0.05410242, + 0.09163019, 0.03553772, 0.01831594, -0.02928904, 0.02551524, + 0.002713425, 0.02437713, -0.1422379, 0.09376145, -0.06835877 + ]) +loc_fit.fitted_values = np.array([ + -0.04516098, -0.0810515, -0.03012235, 0.03142231, -0.05741936, + -0.0445291, -0.04718298, 0.1413686, 0.002229668, 0.1315113, + 0.04431256, 0.004757169, 0.03079043, 0.02068043, 0.02674643, + 0.0755272, -0.01103971, 0.03382343, -0.05451273, -0.001056083, + 0.00602092, -0.03972685, 0.0162573, -0.02683659, -0.02810034, + -0.06285348, 0.004630794, -0.01078696, -0.08193612, 0.01271880, + -0.03732572, 0.1230442, -0.01546284, -0.01571559, -0.02835309, + 0.01651005, 0.08538445, 0.00602092, -0.01609471, -0.01975959, + 0.05859294, 0.00753742, -0.01975959, -0.02013872, -0.06133698, + 0.04026856, 0.07211507, 0.04216418, -0.006995711, 0.07969758, + 0.05416981, -0.02923772, 0.05088406, 0.005389044, -0.08231524, + 0.07868658, -0.1132771, 0.05353794, 0.009938546, -0.04794123 + ]) +loc_fit.effects = np.array([ + -0.4809681, 6.645774, -0.6803134, 0.8423367, 0.5333795, -0.9748358, + -0.6818408, 0.6716256, -1.239349, -0.9454051, -0.919986, 1.546571, + -1.206974, -1.185012, 1.167586, 1.162168, 1.367571, 1.521386, + 1.514811, -1.224234, 1.541103, -0.4658513, -1.229607, -0.2132594, + 1.309335, -0.4211133, -0.4462804, 0.8224875, 1.194665, -0.3537337, + 1.443046, -0.4086050, -0.8295162, 1.122057, -0.9918254, 1.065403, + 1.388378, 1.252209, -0.3826760, 0.4819511, 1.571469, -0.3244968, + 1.166818, 0.3190928, -1.280510, -1.004244, -0.7489287, -0.4386115, + -1.182836, 1.485040, 1.594513, 1.146952, 0.773323, -0.7043392, + 0.888233, 0.2990213, 0.8402323, -1.040679, 1.564756, -1.241512 + ]) +loc_fit.weights = np.array([ + 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, + 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, + 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, + 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, + 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, + 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, + 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, + 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, 260.7666, + 260.7666, 260.7666, 260.7666, 260.7666 + ]) +loc_fit.qr = '''structure(list(qr = structure(c(-125.083961390618, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, 0.129099444873581, -1.09802870774065, 5.25877087979451, 0.068920957251135, -0.0806236351850806, 0.135248743629416, 0.103927288950783, 0.110375823737560, -0.34777721920871, -0.00968975253053064, -0.323825518572109, -0.111945089863713, -0.0158312142322233, -0.0790882697596574, -0.0545224229528869, -0.0692619310369492, -0.187792141879617, 0.0225529214033557, -0.0864580238016886, 0.128186062672469, -0.00170585231833022, -0.0189019450830696, 0.092258511717567, -0.0437748649749248, 0.0609370570389346, 0.064007787889781, 0.148452886288055, -0.0155241411471386, 0.0219387752331864, 0.194820922135834, -0.0351768185925551, 0.0864241231009591, -0.303251621871439, 0.0333004793813178, 0.0339146255514870, 0.0646219340599502, -0.044389011145094, -0.211743842516218, -0.0189019450830696, 0.0348358448067410, 0.0437409642741953, -0.146644348478276, -0.0225868221040852, 0.0437409642741953, 0.0446621835294492, 0.144768009267039, -0.102118751141005, -0.179501168582332, -0.106724847417274, 0.0127265826806475, -0.19792555368741, -0.135896790500314, 0.0667714456555426, -0.127912890288114, -0.0173665796576464, 0.195742141391088, -0.195468969006733, 0.270975047236823, -0.134361425074891, -0.0284212107206932, 0.112218262248068), assign = 0:1, .Dim = c(60L, 2L), .Dimnames = list(c("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60"), c("(Intercept)", "CRSP"))), qraux = c(1.12909944487358, 1.19267141054024), pivot = 1:2, tol = 1e-07, rank = 2L), .Names = c("qr", "qraux", "pivot", "tol", "rank"), class = "qr")''' +loc_fit.method = 'maximum likelihood' +loc_fit.formula = '''m.marietta ~ CRSP''' +loc_fit.terms = '''m.marietta ~ CRSP''' +loc_fit.iter = 7 +loc_fit.call = '''tlm(lform = m.marietta ~ CRSP, data = mm, start = list(dof = 3), estDof = TRUE)''' + +#> s = summary(tfit3) +#> cat_items(s$loc.summary, prefix="loc_fit.") +# renamed coefficient -> table +loc_fit.table = np.array([ + -0.007248461, 1.263751, 0.008167043, 0.1901585, -0.8875258, 6.645774, + 0.3784616, 1.150536e-08 + ]).reshape(2,4, order='F') +loc_fit.table_rownames = ['(Intercept)', 'CRSP', ] +loc_fit.table_colnames = ['Estimate', 'Std. Error', 't value', 'Pr(>|t|)', ] +loc_fit.dispersion = 1 +loc_fit.cov_unscaled = np.array([ + 6.670059e-05, -0.0003174268, -0.0003174268, 0.03616026 + ]).reshape(2,2, order='F') +loc_fit.cov_unscaled_rownames = ['(Intercept)', 'CRSP', ] +loc_fit.cov_unscaled_colnames = ['(Intercept)', 'CRSP', ] +loc_fit.cov_scaled = np.array([ + 6.670059e-05, -0.0003174268, -0.0003174268, 0.03616026 + ]).reshape(2,2, order='F') +loc_fit.cov_scaled_rownames = ['(Intercept)', 'CRSP', ] +loc_fit.cov_scaled_colnames = ['(Intercept)', 'CRSP', ] + + +scale_fit = Holder() +#> cat_items(tfit3$scale.fit, "scale_fit.") +scale_fit.coefficients = -5.983115 +scale_fit.residuals = np.array([ + 2.193327, -2.038408, -1.308573, -1.591579, -1.888103, -0.5330418, + -1.326357, 5.653531, 1.632833, -0.2240806, -0.5364947, 1.187192, + 1.259662, 2.893897, 4.691185, -1.004751, -0.1011940, 0.7009929, + 1.255535, 1.224993, 1.096490, -1.675302, 1.584339, -1.926915, + -0.3154245, -1.749184, -1.665424, -1.582882, -0.6238652, -1.774011, + 3.356624, -1.617496, -0.9346065, 4.74536, -0.4329547, -1.154602, + -0.2722567, -0.6095562, -1.76094, -1.945082, 1.076003, -1.809181, + -0.8315554, -2.028347, 1.98188, -0.2085298, -1.007913, -1.644641, + 0.702596, 0.2351866, 2.205829, -0.8726262, -1.703705, -1.211949, + -1.398769, -2.049267, -1.451807, 3.775749, 2.295868, 1.062300 + ]) +scale_fit.fitted_values = np.array([ + 0.002520962, 0.002520962, 0.002520962, 0.002520962, 0.002520962, + 0.002520962, 0.002520962, 0.002520962, 0.002520962, 0.002520962, + 0.002520962, 0.002520962, 0.002520962, 0.002520962, 0.002520962, + 0.002520962, 0.002520962, 0.002520962, 0.002520962, 0.002520962, + 0.002520962, 0.002520962, 0.002520962, 0.002520962, 0.002520962, + 0.002520962, 0.002520962, 0.002520962, 0.002520962, 0.002520962, + 0.002520962, 0.002520962, 0.002520962, 0.002520962, 0.002520962, + 0.002520962, 0.002520962, 0.002520962, 0.002520962, 0.002520962, + 0.002520962, 0.002520962, 0.002520962, 0.002520962, 0.002520962, + 0.002520962, 0.002520962, 0.002520962, 0.002520962, 0.002520962, + 0.002520962, 0.002520962, 0.002520962, 0.002520962, 0.002520962, + 0.002520962, 0.002520962, 0.002520962, 0.002520962, 0.002520962 + ]) +scale_fit.effects = np.array([ + 32.31074, -1.595974, -1.087148, -1.284454, -1.491184, -0.5464648, + -1.099547, 3.766681, 0.9635367, -0.3310637, -0.5488721, 0.6528456, + 0.70337, 1.842724, 3.095754, -0.8753306, -0.2453897, 0.3138777, + 0.7004929, 0.6791996, 0.5896097, -1.342824, 0.9297278, -1.518243, + -0.3947467, -1.394333, -1.335937, -1.278391, -0.6097849, -1.411642, + 2.165327, -1.302523, -0.826427, 3.133524, -0.4766862, -0.979803, + -0.364651, -0.599809, -1.402529, -1.530909, 0.5753267, -1.436162, + -0.754582, -1.588959, 1.206885, -0.3202220, -0.8775351, -1.321448, + 0.3149953, -0.01087243, 1.363017, -0.7832157, -1.362626, -1.019784, + -1.150031, -1.603544, -1.187008, 2.457531, 1.425790, 0.5657731 + ]) +scale_fit.weights = np.array([ + 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, + 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, + 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, + 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, + 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, + 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, + 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, + 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, + 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, + 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579, 0.4860579 + ]) +scale_fit.formula = '''m.marietta ~ 1''' +scale_fit.terms = '''m.marietta ~ 1''' +scale_fit.iter = 7 +scale_fit.call = '''tlm(lform = m.marietta ~ CRSP, data = mm, start = list(dof = 3), estDof = TRUE)''' + +res_t_dfest.loc_fit = loc_fit +res_t_dfest.scale_fit = scale_fit diff --git a/statsmodels/miscmodels/tests/test_generic_mle.py b/statsmodels/miscmodels/tests/test_generic_mle.py new file mode 100644 index 0000000..9eee065 --- /dev/null +++ b/statsmodels/miscmodels/tests/test_generic_mle.py @@ -0,0 +1,232 @@ +# -*- coding: utf-8 -*- +""" + +Created on Fri Jun 28 14:19:26 2013 + +Author: Josef Perktold +""" + + +import numpy as np +from scipy import stats +from statsmodels.base.model import GenericLikelihoodModel + +from numpy.testing import (assert_array_less, assert_almost_equal, + assert_allclose, assert_) + +class MyPareto(GenericLikelihoodModel): + '''Maximum Likelihood Estimation pareto distribution + + first version: iid case, with constant parameters + ''' + + def initialize(self): #TODO needed or not + super(MyPareto, self).initialize() + #start_params needs to be attribute + self.start_params = np.array([1.5, self.endog.min() - 1.5, 1.]) + + + #copied from stats.distribution + def pdf(self, x, b): + return b * x**(-b-1) + + def loglike(self, params): + return -self.nloglikeobs(params).sum(0) + + # TODO: design start_params needs to be an attribute, + # so it can be overwritten +# @property +# def start_params(self): +# return np.array([1.5, self.endog.min() - 1.5, 1.]) + + def nloglikeobs(self, params): + #print params.shape + if self.fixed_params is not None: + #print 'using fixed' + params = self.expandparams(params) + b = params[0] + loc = params[1] + scale = params[2] + #loc = np.dot(self.exog, beta) + endog = self.endog + x = (endog - loc)/scale + logpdf = np.log(b) - (b+1.)*np.log(x) #use np_log(1 + x) for Pareto II + logpdf -= np.log(scale) + #lb = loc + scale + #logpdf[endog|z|' + assert check_str in str(summ) + + def test_use_t_summary(self): + orig_val = self.res1.use_t + self.res1.use_t = True + summ = self.res1.summary() + assert 'P>|t|' in str(summ) + self.res1.use_t = orig_val + + def test_ttest(self): + self.res1.t_test(np.eye(len(self.res1.params))) + + def test_params(self): + params = self.res1.params + + params_true = np.array([2,0,2]) + if self.res1.model.fixed_paramsmask is not None: + params_true = params_true[self.res1.model.fixed_paramsmask] + assert_allclose(params, params_true, atol=1.5) + assert_allclose(params, np.zeros(len(params)), atol=4) + + assert_allclose(self.res1.bse, np.zeros(len(params)), atol=0.5) + if not self.skip_bsejac: + assert_allclose(self.res1.bse, self.res1.bsejac, rtol=0.05, + atol=0.15) + # bsejhj is very different from the other two + # use huge atol as sanity check for availability + assert_allclose(self.res1.bsejhj, self.res1.bsejac, + rtol=0.05, atol=1.5) + + + + + + + +class TestMyPareto1(CheckGenericMixin): + + @classmethod + def setup_class(cls): + params = [2, 0, 2] + nobs = 100 + np.random.seed(1234) + rvs = stats.pareto.rvs(*params, **dict(size=nobs)) + + mod_par = MyPareto(rvs) + mod_par.fixed_params = None + mod_par.fixed_paramsmask = None + mod_par.df_model = 3 + mod_par.df_resid = mod_par.endog.shape[0] - mod_par.df_model + mod_par.data.xnames = ['shape', 'loc', 'scale'] + + cls.mod = mod_par + cls.res1 = mod_par.fit(disp=None) + + # Note: possible problem with parameters close to min data boundary + # see issue #968 + cls.skip_bsejac = True + + def test_minsupport(self): + # rough sanity checks for convergence + params = self.res1.params + x_min = self.res1.endog.min() + p_min = params[1] + params[2] + assert_array_less(p_min, x_min) + assert_almost_equal(p_min, x_min, decimal=2) + +class TestMyParetoRestriction(CheckGenericMixin): + + + @classmethod + def setup_class(cls): + params = [2, 0, 2] + nobs = 50 + np.random.seed(1234) + rvs = stats.pareto.rvs(*params, **dict(size=nobs)) + + mod_par = MyPareto(rvs) + fixdf = np.nan * np.ones(3) + fixdf[1] = -0.1 + mod_par.fixed_params = fixdf + mod_par.fixed_paramsmask = np.isnan(fixdf) + mod_par.start_params = mod_par.start_params[mod_par.fixed_paramsmask] + mod_par.df_model = 2 + mod_par.df_resid = mod_par.endog.shape[0] - mod_par.df_model + mod_par.data.xnames = ['shape', 'scale'] + + cls.mod = mod_par + cls.res1 = mod_par.fit(disp=None) + + # Note: loc is fixed, no problems with parameters close to min data + cls.skip_bsejac = False + + +class TwoPeakLLHNoExog(GenericLikelihoodModel): + """Fit height of signal peak over background.""" + start_params = [10, 1000] + cloneattr = ['start_params', 'signal', 'background'] + exog_names = ['n_signal', 'n_background'] + endog_names = ['alpha'] + + def __init__(self, endog, exog=None, signal=None, background=None, + *args, **kwargs): + # assume we know the shape + location of the two components, + # so we re-use their PDFs here + self.signal = signal + self.background = background + super(TwoPeakLLHNoExog, self).__init__(endog=endog, exog=exog, + *args, **kwargs) + + def loglike(self, params): # pylint: disable=E0202 + return -self.nloglike(params) + + def nloglike(self, params): + endog = self.endog + return self.nlnlike(params, endog) + + def nlnlike(self, params, endog): + n_sig = params[0] + n_bkg = params[1] + if (n_sig < 0) or n_bkg < 0: + return np.inf + n_tot = n_bkg + n_sig + alpha = endog + sig = self.signal.pdf(alpha) + bkg = self.background.pdf(alpha) + sumlogl = np.sum(np.log((n_sig * sig) + (n_bkg * bkg))) + sumlogl -= n_tot + return -sumlogl + + +class TestTwoPeakLLHNoExog(object): + + @classmethod + def setup_class(cls): + np.random.seed(42) + pdf_a = stats.halfcauchy(loc=0, scale=1) + pdf_b = stats.uniform(loc=0, scale=100) + + n_a = 50 + n_b = 200 + params = [n_a, n_b] + + X = np.concatenate([pdf_a.rvs(size=n_a), + pdf_b.rvs(size=n_b), + ])[:, np.newaxis] + cls.X = X + cls.params = params + cls.pdf_a = pdf_a + cls.pdf_b = pdf_b + + def test_fit(self): + np.random.seed(42) + llh_noexog = TwoPeakLLHNoExog(self.X, + signal=self.pdf_a, + background=self.pdf_b) + + res = llh_noexog.fit() + assert_allclose(res.params, self.params, rtol=1e-1) + # TODO: nan if exog is None, + assert_(np.isnan(res.df_resid)) + res_bs = res.bootstrap(nrep=50) + assert_allclose(res_bs[2].mean(0), self.params, rtol=1e-1) + # SMOKE test, + res.summary() diff --git a/statsmodels/miscmodels/tests/test_poisson.py b/statsmodels/miscmodels/tests/test_poisson.py new file mode 100644 index 0000000..8ee96e0 --- /dev/null +++ b/statsmodels/miscmodels/tests/test_poisson.py @@ -0,0 +1,201 @@ +'''Testing GenericLikelihoodModel variations on Poisson + + +''' +import pytest +import numpy as np +from numpy.testing import assert_almost_equal +from scipy import stats + +import statsmodels.api as sm +from statsmodels.miscmodels.count import PoissonGMLE, PoissonOffsetGMLE, \ + PoissonZiGMLE +from statsmodels.discrete.discrete_model import Poisson +from statsmodels.tools.sm_exceptions import ValueWarning + + +DEC = 4 +DEC4 = 4 +DEC5 = 5 + +class CompareMixin(object): + + def test_params(self): + assert_almost_equal(self.res.params, self.res_glm.params, DEC5) + assert_almost_equal(self.res.params, self.res_discrete.params, DEC5) + + def test_cov_params(self): + assert_almost_equal(self.res.bse, self.res_glm.bse, DEC5) + assert_almost_equal(self.res.bse, self.res_discrete.bse, DEC5) + #TODO check problem with the following, precision is low, + #dof error? last t-value is 22, 23, error is around 1% for PoissonMLE + #this was with constant=1, + #now changed constant=0.1 to make it less significant and test passes + #overall precision for tstat looks like 1% + + #assert_almost_equal(self.res.tval, self.res_glm.t(), DEC) + assert_almost_equal(self.res.tvalues, self.res_discrete.tvalues, DEC4) + #assert_almost_equal(self.res.params, self.res_discrete.params) + assert_almost_equal(self.res.pvalues, self.res_discrete.pvalues, DEC) + + def test_ttest(self): + tt = self.res.t_test(np.eye(len(self.res.params))) + from scipy import stats + pvalue = stats.norm.sf(np.abs(tt.tvalue)) * 2 + assert_almost_equal(tt.tvalue, self.res.tvalues, DEC) + assert_almost_equal(pvalue, self.res.pvalues, DEC) + + @pytest.mark.smoke + def test_summary(self): + self.res.summary() + + +class TestPoissonMLE(CompareMixin): + + @classmethod + def setup_class(cls): + + # generate artificial data + np.random.seed(98765678) + nobs = 200 + rvs = np.random.randn(nobs,6) + data_exog = rvs + data_exog = sm.add_constant(data_exog, prepend=False) + xbeta = 0.1 + 0.1*rvs.sum(1) + data_endog = np.random.poisson(np.exp(xbeta)) + + #estimate discretemod.Poisson as benchmark + cls.res_discrete = Poisson(data_endog, data_exog).fit(disp=0) + + mod_glm = sm.GLM(data_endog, data_exog, family=sm.families.Poisson()) + cls.res_glm = mod_glm.fit() + + #estimate generic MLE + cls.mod = PoissonGMLE(data_endog, data_exog) + cls.res = cls.mod.fit(start_params=0.9 * cls.res_discrete.params, + method='bfgs', disp=0) + + def test_predict_distribution(self): + res = self.res + model = self.mod + + with pytest.raises(ValueError): + # No "result" attribute + model.predict_distribution(model.exog) + + try: + model.result = res + dist = model.predict_distribution(model.exog) + assert isinstance(dist, stats._distn_infrastructure.rv_frozen) + assert_almost_equal(dist.mean(), + np.exp(model.exog.dot(res.params)), + 15) + finally: + # leave the model object how we found it + model.__delattr__("result") + + +class TestPoissonOffset(CompareMixin): + #this uses the first exog to construct an offset variable + @classmethod + def setup_class(cls): + # generate artificial data + np.random.seed(98765678) + nobs = 200 + rvs = np.random.randn(nobs,6) + data_exog = rvs + data_exog = sm.add_constant(data_exog, prepend=False) + xbeta = 1 + 0.1*rvs.sum(1) + data_endog = np.random.poisson(np.exp(xbeta)) + + mod_glm = sm.GLM(data_endog, data_exog, family=sm.families.Poisson()) + cls.res_glm = mod_glm.fit() + + #estimate generic MLE + #cls.mod = PoissonGMLE(data_endog, data_exog) + #res = cls.mod.fit() + + #create offset variable based on first exog + cls.res_discrete = Poisson(data_endog, data_exog).fit(disp=0) + offset = cls.res_discrete.params[0] * data_exog[:,0] #1d ??? + + #estimate discretemod.Poisson as benchmark, now has offset + cls.res_discrete = Poisson(data_endog, data_exog[:,1:], + offset=offset).fit(disp=0) + + mod_glm = sm.GLM(data_endog, data_exog, family=sm.families.Poisson()) + cls.res_glm = mod_glm.fit() + + #cls.res = PoissonOffsetGMLE(data_endog, data_exog[:,1:], offset=offset).fit(start_params = np.ones(6)/2., method='nm') + modo = PoissonOffsetGMLE(data_endog, data_exog[:,1:], offset=offset) + cls.res = modo.fit(start_params = 0.9*cls.res_discrete.params, + method='bfgs', disp=0) + + + + def test_params(self): + assert_almost_equal(self.res.params, self.res_glm.params[1:], DEC) + assert_almost_equal(self.res.params, self.res_discrete.params, DEC) + + def test_cov_params(self): + assert_almost_equal(self.res.bse, self.res_glm.bse[1:], DEC-1) + assert_almost_equal(self.res.bse, self.res_discrete.bse, DEC5) + #precision of next is very low ??? + #assert_almost_equal(self.res.tval, self.res_glm.t()[1:], DEC) + #assert_almost_equal(self.res.params, self.res_discrete.params) + +#DEC = DEC - 1 +class TestPoissonZi(CompareMixin): + #this uses the first exog to construct an offset variable + @classmethod + def setup_class(cls): + + # generate artificial data + np.random.seed(98765678) + nobs = 200 + rvs = np.random.randn(nobs,6) + data_exog = rvs + data_exog = sm.add_constant(data_exog, prepend=False) + xbeta = 1 + 0.1*rvs.sum(1) + data_endog = np.random.poisson(np.exp(xbeta)) + + + mod_glm = sm.GLM(data_endog, data_exog, family=sm.families.Poisson()) + cls.res_glm = mod_glm.fit() + + #estimate generic MLE + #cls.mod = PoissonGMLE(data_endog, data_exog) + #res = cls.mod.fit() + + #create offset variable based on first exog + cls.res_discrete = Poisson(data_endog, data_exog).fit(disp=0) + offset = cls.res_discrete.params[0] * data_exog[:,0] #1d ??? + + #estimate discretemod.Poisson as benchmark, now has offset + cls.res_discrete = Poisson(data_endog, data_exog[:,1:], offset=offset).fit(disp=0) + + # Note : ZI has one extra parameter + cls.res = PoissonZiGMLE(data_endog, data_exog[:,1:], offset=offset).fit( + start_params=np.r_[0.9*cls.res_discrete.params,10], + method='bfgs', disp=0) + + cls.decimal = 4 + + def test_params(self): + assert_almost_equal(self.res.params[:-1], self.res_glm.params[1:], self.decimal) + assert_almost_equal(self.res.params[:-1], self.res_discrete.params, self.decimal) + + def test_cov_params(self): + #skip until I have test with zero-inflated data + #use bsejac for now since it seems to work + assert_almost_equal(self.res.bsejac[:-1], self.res_glm.bse[1:], self.decimal-2) + assert_almost_equal(self.res.bsejac[:-1], self.res_discrete.bse, self.decimal-2) + #assert_almost_equal(self.res.tval[:-1], self.res_glm.t()[1:], self.decimal) + + + def test_exog_names_warning(self): + mod = self.res.model + mod1 = PoissonOffsetGMLE(mod.endog, mod.exog, offset=mod.offset) + from numpy.testing import assert_warns + mod1.data.xnames = mod1.data.xnames * 2 + assert_warns(ValueWarning, mod1.fit, disp=0) diff --git a/statsmodels/miscmodels/tests/test_tarma.py b/statsmodels/miscmodels/tests/test_tarma.py new file mode 100644 index 0000000..41a39b7 --- /dev/null +++ b/statsmodels/miscmodels/tests/test_tarma.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +""" + +Created on Thu Jul 04 23:44:33 2013 + +Author: Josef Perktold +""" + +import pytest +import numpy as np +from numpy.testing import assert_allclose + +from statsmodels.tsa.arima_process import arma_generate_sample +from statsmodels.miscmodels.tmodel import TArma +from statsmodels.tsa.arma_mle import Arma + + +class CheckTArmaMixin(object): + + def test_params(self): + attrs = ['params', 'bse', 'tvalues', 'pvalues', 'bsejhj', 'bsejac'] + for row, attr in enumerate(attrs): + assert_allclose(getattr(self.res, attr), self.res1_table[row], atol=1e-4, + rtol=1e-3) + + assert_allclose(self.res.conf_int(), self.res1_conf_int, atol=1e-4, rtol=1e-3) + + @pytest.mark.smoke + def test_smoke(self): # TODO: break into well-scoped tests + self.res.summary() + rmat = np.eye(len(self.res.params)) + self.res.t_test(rmat) + self.res.f_test(rmat) + + def test_fit_ls(self): + + assert_allclose(self.res_ls[0], self.ls_params, atol=1e-4, rtol=1e-3) + self.res_ls[1] + # this is bse unscaled I think + bse = np.sqrt(np.diag(self.res_ls[1])) + assert_allclose(bse, self.ls_bse, atol=1e-4, rtol=1e-3) + + +class TestTArma(CheckTArmaMixin): + #regression test for TArma + + @classmethod + def setup_class(cls): + + nobs = 500 + ar = [1, -0.5, 0.1] + ma = [1, 0.7] + dist = lambda n: np.random.standard_t(3, size=n) + np.random.seed(8659567) + x = arma_generate_sample(ar, ma, nobs, sigma=1, distrvs=dist, + burnin=500) + + mod = TArma(x) + order = (2, 1) + cls.res_ls = mod.fit(order=order) + cls.res = mod.fit_mle(order=order, + start_params=np.r_[cls.res_ls[0], 5, 1], + method='nm', disp=False) + + cls.res1_table = np.array( + [[ 0.46157133, -0.07694534, 0.70051876, 2.88693312, 0.97283396], + [ 0.04957594, 0.04345499, 0.03492473, 0.40854823, 0.05568439], + [ 9.31038915, -1.7706905 , 20.05795605, 7.06632146, 17.47049812], + [ 0. , 0.07661218, 0. , 0. , 0. ], + [ 0.05487968, 0.04213054, 0.03102404, 0.37860956, 0.05228474], + [ 0.04649728, 0.04569133, 0.03990779, 0.44315449, 0.05996759]]) + + cls.res1_conf_int = np.array([[ 0.36440426, 0.55873839], + [-0.16211556, 0.00822488], + [ 0.63206754, 0.76896998], + [ 2.08619331, 3.68767294], + [ 0.86369457, 1.08197335]]) + + + cls.ls_params = np.array([ 0.43393123, -0.08402678, 0.73293058]) + cls.ls_bse = np.array([ 0.0377741 , 0.03567847, 0.02744488]) + +class TestArma(CheckTArmaMixin): + #regression test for TArma + + @classmethod + def setup_class(cls): + + nobs = 500 + ar = [1, -0.5, 0.1] + ma = [1, 0.7] + dist = lambda n: np.random.standard_t(3, size=n) + np.random.seed(8659567) + x = arma_generate_sample(ar, ma, nobs, sigma=1, distrvs=dist, + burnin=500) + + mod = Arma(x) + order = (2, 1) + cls.res_ls = mod.fit(order=order) + cls.res = mod.fit_mle(order=order, + start_params=np.r_[cls.res_ls[0], 1], + method='nm', disp=False) + + cls.res1_table = np.array( + [[ 0.4339072 , -0.08402653, 0.73292344, 1.61661128], + [ 0.05854268, 0.05562941, 0.04034178, 0.0511207 ], + [ 7.4118102 , -1.51046975, 18.16785075, 31.62341666], + [ 0. , 0.1309236 , 0. , 0. ], + [ 0.06713617, 0.05469138, 0.03785006, 0.1071093 ], + [ 0.05504093, 0.0574849 , 0.04350945, 0.02510928]]) + + cls.res1_conf_int = np.array([[ 0.31916567, 0.54864874], + [-0.19305817, 0.0250051 ], + [ 0.65385501, 0.81199188], + [ 1.51641655, 1.71680602]]) + + cls.ls_params = np.array([ 0.43393123, -0.08402678, 0.73293058]) + cls.ls_bse = np.array([ 0.0377741 , 0.03567847, 0.02744488]) diff --git a/statsmodels/miscmodels/tests/test_tmodel.py b/statsmodels/miscmodels/tests/test_tmodel.py new file mode 100644 index 0000000..c1ae2db --- /dev/null +++ b/statsmodels/miscmodels/tests/test_tmodel.py @@ -0,0 +1,183 @@ +# -*- coding: utf-8 -*- +""" + +Created on Sun Jun 30 20:25:22 2013 + +Author: Josef Perktold +""" + +import pytest +import numpy as np +from numpy.testing import assert_allclose + +from statsmodels.tools.tools import add_constant +from statsmodels.tools.testing import Holder +from statsmodels.miscmodels.tmodel import TLinearModel + + +mm = Holder() +mm.date_label = ["Apr.1982", "Apr.1983", "Apr.1984", "Apr.1985", "Apr.1986", + "Aug.1982", "Aug.1983", "Aug.1984", "Aug.1985", "Aug.1986", + "Dec.1982", "Dec.1983", "Dec.1984", "Dec.1985", "Dec.1986", + "Feb.1284", "Feb.1982", "Feb.1983", "Feb.1985", "Feb.1986", + "Jan.1982", "Jan.1983", "Jan.1984", "Jan.1985", "Jan.1986", + "Jul.1982", "July1983", "July1984", "July1985", "July1986", + "June1982", "June1983", "June1984", "June1985", "June1986", + "Mar.1982", "Mar.1983", "Mar.1984", "Mar.1985", "Mar.1986", + "May1982", "May1983", "May1984", "May1985", "May1986", + "Nov.1982", "Nov.1983", "Nov.1984", "Nov.1985", "Nov.1986", + "Oct.1982", "Oct.1983", "Oct.1984", "Oct.1985", "Oct.1986", + "Sept.1982", "Sept.1983", "Sept.1984", "Sept.1985", + "Sept.1986"] + +mm.m_marietta = np.array([ + -0.1365, -0.0769, -0.0575, 0.0526, -0.0449, -0.0859, -0.0742, 0.6879, + -0.077, 0.085, 0.003, 0.0754, -0.0412, -0.089, 0.2319, 0.1087, 0.0375, + 0.0958, 0.0174, -0.0724, 0.075, -0.0588, -0.062, -0.0378, 0.0169, + -0.0799, -0.0147, 0.0106, -0.0421, -0.0036, 0.0876, 0.1025, -0.0499, + 0.1953, -0.0714, 0.0469, 0.1311, 0.0461, -0.0328, -0.0096, 0.1272, + -0.0077, 0.0165, -0.015, -0.1479, -0.0065, 0.039, 0.0223, -0.069, + 0.1338, 0.1458, 0.0063, 0.0692, -0.0239, -0.0568, 0.0814, -0.0889, + -0.0887, 0.1037, -0.1163 + ]) +mm.CRSP = np.array([ + -0.03, -0.0584, -0.0181, 0.0306, -0.0397, -0.0295, -0.0316, 0.1176, + 0.0075, 0.1098, 0.0408, 0.0095, 0.0301, 0.0221, 0.0269, 0.0655, + -0.003, 0.0325, -0.0374, 0.0049, 0.0105, -0.0257, 0.0186, -0.0155, + -0.0165, -0.044, 0.0094, -0.0028, -0.0591, 0.0158, -0.0238, 0.1031, + -0.0065, -0.0067, -0.0167, 0.0188, 0.0733, 0.0105, -0.007, -0.0099, + 0.0521, 0.0117, -0.0099, -0.0102, -0.0428, 0.0376, 0.0628, 0.0391, + 2e-04, 0.0688, 0.0486, -0.0174, 0.046, 0.01, -0.0594, 0.068, -0.0839, + 0.0481, 0.0136, -0.0322 + ]) +mm.am_can = np.array([ + -0.0596, -0.17, 0.0276, 0.0058, -0.0106, 0.045, -0.0243, 0.1135, + -0.0331, 0.0468, -0.0223, -0.0026, 0.0166, 0.0343, 0.0443, 0.1477, + 0.1728, -0.0372, -0.0451, -0.0257, 0.0509, 0.0035, 0.1334, -0.0458, + 0.1199, -0.0766, -0.0511, -0.0194, -0.0687, 0.0928, -0.0704, 0.0905, + 0.0232, -0.0054, 0.0082, 0.0242, 0.0153, 0.0016, 0.028, 0.0088, + 0.0734, 0.0315, -0.0276, 0.0162, -0.0975, 0.0563, 0.1368, -0.069, + 0.1044, 0.1636, -0.019, -0.0746, 0.0433, 0.0306, 0.0636, 0.0917, + -0.0796, 0.0778, -0.0353, -0.0137 + ]) +mm.date = np.array([ + 21, 17, 36, 1, 41, 31, 26, 6, 56, 51, 46, 11, 22, 18, 37, 2, 42, 32, + 27, 7, 57, 52, 47, 12, 23, 16, 38, 3, 43, 33, 28, 8, 58, 53, 48, 13, + 24, 19, 39, 4, 44, 34, 29, 9, 59, 54, 49, 14, 25, 20, 40, 5, 45, 35, + 30, 10, 60, 55, 50, 15 + ]) + + +class CheckTLinearModelMixin(object): + + def test_basic(self): + res1 = self.res1 + res2 = self.res2 + # location + assert_allclose(res1.params[:-2], res2.loc_fit.coefficients, atol=3e-5) + assert_allclose(res1.bse[:-2], res2.loc_fit.table[:, 1], rtol=0.003, atol=1e-5) + assert_allclose(res1.tvalues[:-2], res2.loc_fit.table[:, 2], rtol=0.003, atol=1e-5) + assert_allclose(res1.pvalues[:-2], res2.loc_fit.table[:, 3], rtol=0.009, atol=1e-5) + + # df + assert_allclose(res1.params[-2], res2.dof, rtol=5e-5) + assert_allclose(res1.bse[-2], res2.dofse, rtol=0.16, atol=1e-5) + # scale + scale_est = np.sqrt(res2.scale_fit.fitted_values.mean()) + assert_allclose(res1.params[-1], scale_est, atol=1e-5) + + assert_allclose(res1.llf, res2.logLik, atol=1e-5) + + def test_bse(self): + # check that they are roughly the same + res1 = self.res1 + assert_allclose(res1.bsejac, res1.bse, rtol=0.15, atol=0.002) + assert_allclose(res1.bsejac, res1.bse, rtol=0.1, atol=0.004) + + def test_fitted(self): + res1 = self.res1 + res2 = self.res2 + + fittedvalues = res1.predict() + resid = res1.model.endog - fittedvalues + assert_allclose(fittedvalues, res2.loc_fit.fitted_values, rtol=0.00025) + assert_allclose(resid, res2.loc_fit.residuals, atol=2e-6) #rtol=0.00036) + #TODO: no resid available as attribute + #assert_allclose(res1.resid, res2.loc_fit.residuals) + #assert_allclose(res1.fittedvalues, res2.loc_fit.fitted_values) + + def test_formula(self): + res1 = self.res1 + resf = self.resf + # converges slightly differently why? + assert_allclose(res1.params, resf.params, atol=1e-4) #rtol=2e-5, + assert_allclose(res1.bse, resf.bse, rtol=5e-5) + + assert_allclose(res1.model.endog, resf.model.endog, rtol=1e-10) + assert_allclose(res1.model.exog, resf.model.exog, rtol=1e-10) + + @pytest.mark.smoke + def test_smoke(self): # TODO: break into well-scoped tests + res1 = self.res1 + resf = self.resf + contr = np.eye(len(res1.params)) + + # smoke test for summary and t_test, f_test + res1.summary() + res1.t_test(contr) + res1.f_test(contr) + + resf.summary() + resf.t_test(contr) + resf.f_test(contr) + + +class TestTModel(CheckTLinearModelMixin): + + @classmethod + def setup_class(cls): + endog = mm.m_marietta + exog = add_constant(mm.CRSP) + mod = TLinearModel(endog, exog) + res = mod.fit(method='bfgs', disp=False) + modf = TLinearModel.from_formula("price ~ CRSP", + data={"price":mm.m_marietta, "CRSP":mm.CRSP}) + resf = modf.fit(method='bfgs', disp=False) + from .results_tmodel import res_t_dfest as res2 + cls.res2 = res2 + cls.res1 = res # take from module scope temporarily + cls.resf = resf + + +class TestTModelFixed(object): + + @classmethod + def setup_class(cls): + endog = mm.m_marietta + exog = add_constant(mm.CRSP) + mod = TLinearModel(endog, exog, fix_df=3) + res = mod.fit(method='bfgs', disp=False) + modf = TLinearModel.from_formula("price ~ CRSP", + data={"price":mm.m_marietta, "CRSP":mm.CRSP}, + fix_df=3) + resf = modf.fit(method='bfgs', disp=False) + #TODO: no reference results yet + #from results_tmodel import res_t_dfest as res2 + #cls.res2 = res2 + cls.res1 = res # take from module scope temporarily + cls.resf = resf + + @pytest.mark.smoke + def test_smoke(self): # TODO: break into well-scoped tests + res1 = self.res1 + resf = self.resf + contr = np.eye(len(res1.params)) + + # smoke test for summary and t_test, f_test + res1.summary() + res1.t_test(contr) + res1.f_test(contr) + + resf.summary() + resf.t_test(contr) + resf.f_test(contr) diff --git a/statsmodels/miscmodels/tmodel.py b/statsmodels/miscmodels/tmodel.py new file mode 100644 index 0000000..d0d62e3 --- /dev/null +++ b/statsmodels/miscmodels/tmodel.py @@ -0,0 +1,227 @@ +"""Linear Model with Student-t distributed errors + +Because the t distribution has fatter tails than the normal distribution, it +can be used to model observations with heavier tails and observations that have +some outliers. For the latter case, the t-distribution provides more robust +estimators for mean or mean parameters (what about var?). + + + +References +---------- +Kenneth L. Lange, Roderick J. A. Little, Jeremy M. G. Taylor (1989) +Robust Statistical Modeling Using the t Distribution +Journal of the American Statistical Association +Vol. 84, No. 408 (Dec., 1989), pp. 881-896 +Published by: American Statistical Association +Stable URL: http://www.jstor.org/stable/2290063 + +not read yet + + +Created on 2010-09-24 +Author: josef-pktd +License: BSD + +TODO +---- +* add starting values based on OLS +* bugs: store_params doesn't seem to be defined, I think this was a module + global for debugging - commented out +* parameter restriction: check whether version with some fixed parameters works + + +""" +#mostly copied from the examples directory written for trying out generic mle. + +import numpy as np +from scipy import special, stats + +from statsmodels.base.model import GenericLikelihoodModel +from statsmodels.tsa.arma_mle import Arma + + +#redefine some shortcuts +np_log = np.log +np_pi = np.pi +sps_gamln = special.gammaln + + +class TLinearModel(GenericLikelihoodModel): + '''Maximum Likelihood Estimation of Linear Model with t-distributed errors + + This is an example for generic MLE. + + Except for defining the negative log-likelihood method, all + methods and results are generic. Gradients and Hessian + and all resulting statistics are based on numerical + differentiation. + + ''' + + def initialize(self): + # TODO: here or in __init__ + self.k_vars = self.exog.shape[1] + if not hasattr(self, 'fix_df'): + self.fix_df = False + + if self.fix_df is False: + # df will be estimated, no parameter restrictions + self.fixed_params = None + self.fixed_paramsmask = None + self.k_params = self.exog.shape[1] + 2 + extra_params_names = ['df', 'scale'] + else: + # df fixed + self.k_params = self.exog.shape[1] + 1 + fixdf = np.nan * np.zeros(self.exog.shape[1] + 2) + fixdf[-2] = self.fix_df + self.fixed_params = fixdf + self.fixed_paramsmask = np.isnan(fixdf) + extra_params_names = ['scale'] + + self._set_extra_params_names(extra_params_names) + self._set_start_params() + + super(TLinearModel, self).initialize() + + def _set_start_params(self, start_params=None, use_kurtosis=False): + if start_params is not None: + self.start_params = start_params + else: + from statsmodels.regression.linear_model import OLS + res_ols = OLS(self.endog, self.exog).fit() + start_params = 0.1*np.ones(self.k_params) + start_params[:self.k_vars] = res_ols.params + + if self.fix_df is False: + + if use_kurtosis: + kurt = stats.kurtosis(res_ols.resid) + df = 6./kurt + 4 + else: + df = 5 + + start_params[-2] = df + #TODO adjust scale for df + start_params[-1] = np.sqrt(res_ols.scale) + + self.start_params = start_params + + + + + def loglike(self, params): + return -self.nloglikeobs(params).sum(0) + + def nloglikeobs(self, params): + """ + Loglikelihood of linear model with t distributed errors. + + Parameters + ---------- + params : array + The parameters of the model. The last 2 parameters are degrees of + freedom and scale. + + Returns + ------- + loglike : array + The log likelihood of the model evaluated at `params` for each + observation defined by self.endog and self.exog. + + Notes + ----- + .. math:: \\ln L=\\sum_{i=1}^{n}\\left[-\\lambda_{i}+y_{i}x_{i}^{\\prime}\\beta-\\ln y_{i}!\\right] + + The t distribution is the standard t distribution and not a standardized + t distribution, which means that the scale parameter is not equal to the + standard deviation. + + self.fixed_params and self.expandparams can be used to fix some + parameters. (I doubt this has been tested in this model.) + + """ + #print len(params), + #store_params.append(params) + if self.fixed_params is not None: + #print 'using fixed' + params = self.expandparams(params) + + beta = params[:-2] + df = params[-2] + scale = np.abs(params[-1]) #TODO check behavior around zero + loc = np.dot(self.exog, beta) + endog = self.endog + x = (endog - loc)/scale + #next part is stats.t._logpdf + lPx = sps_gamln((df+1)/2) - sps_gamln(df/2.) + lPx -= 0.5*np_log(df*np_pi) + (df+1)/2.*np_log(1+(x**2)/df) + lPx -= np_log(scale) # correction for scale + return -lPx + + def predict(self, params, exog=None): + if exog is None: + exog = self.exog + return np.dot(exog, params[:self.exog.shape[1]]) + + +class TArma(Arma): + '''Univariate Arma Model with t-distributed errors + + This inherit all methods except loglike from tsa.arma_mle.Arma + + This uses the standard t-distribution, the implied variance of + the error is not equal to scale, but :: + + error_variance = df/(df-2)*scale**2 + + Notes + ----- + This might be replaced by a standardized t-distribution with scale**2 + equal to variance + + ''' + + def loglike(self, params): + return -self.nloglikeobs(params).sum(0) + + + #add for Jacobian calculation bsejac in GenericMLE, copied from loglike + def nloglikeobs(self, params): + """ + Loglikelihood for arma model for each observation, t-distribute + + Notes + ----- + The ancillary parameter is assumed to be the last element of + the params vector + """ + + errorsest = self.geterrors(params[:-2]) + #sigma2 = np.maximum(params[-1]**2, 1e-6) #do I need this + #axis = 0 + #nobs = len(errorsest) + + df = params[-2] + scale = np.abs(params[-1]) + llike = - stats.t._logpdf(errorsest/scale, df) + np_log(scale) + return llike + + #TODO rename fit_mle -> fit, fit -> fit_ls + def fit_mle(self, order, start_params=None, method='nm', maxiter=5000, + tol=1e-08, **kwds): + nar, nma = order + if start_params is not None: + if len(start_params) != nar + nma + 2: + raise ValueError('start_param need sum(order) + 2 elements') + else: + start_params = np.concatenate((0.05*np.ones(nar + nma), [5, 1])) + + + res = super(TArma, self).fit_mle(order=order, + start_params=start_params, + method=method, maxiter=maxiter, + tol=tol, **kwds) + + return res diff --git a/statsmodels/miscmodels/try_mlecov.py b/statsmodels/miscmodels/try_mlecov.py new file mode 100644 index 0000000..107c9c3 --- /dev/null +++ b/statsmodels/miscmodels/try_mlecov.py @@ -0,0 +1,221 @@ +'''Multivariate Normal Model with full covariance matrix + +toeplitz structure is not exploited, need cholesky or inv for toeplitz + +Author: josef-pktd +''' + +from __future__ import print_function +import numpy as np +from scipy import linalg +from scipy.linalg import toeplitz + +import statsmodels.api as sm +from statsmodels.base.model import GenericLikelihoodModel +from statsmodels.tsa.arima_process import ( + arma_acovf, arma_generate_sample, ArmaProcess +) + +def mvn_loglike_sum(x, sigma): + '''loglike multivariate normal + + copied from GLS and adjusted names + not sure why this differes from mvn_loglike + ''' + nobs = len(x) + nobs2 = nobs / 2.0 + SSR = (x**2).sum() + llf = -np.log(SSR) * nobs2 # concentrated likelihood + llf -= (1+np.log(np.pi/nobs2))*nobs2 # with likelihood constant + if np.any(sigma) and sigma.ndim == 2: + #FIXME: robust-enough check? unneeded if _det_sigma gets defined + llf -= .5*np.log(np.linalg.det(sigma)) + return llf + +def mvn_loglike(x, sigma): + '''loglike multivariate normal + + assumes x is 1d, (nobs,) and sigma is 2d (nobs, nobs) + + brute force from formula + no checking of correct inputs + use of inv and log-det should be replace with something more efficient + ''' + #see numpy thread + #Sturla: sqmahal = (cx*cho_solve(cho_factor(S),cx.T).T).sum(axis=1) + sigmainv = linalg.inv(sigma) + logdetsigma = np.log(np.linalg.det(sigma)) + nobs = len(x) + + llf = - np.dot(x, np.dot(sigmainv, x)) + llf -= nobs * np.log(2 * np.pi) + llf -= logdetsigma + llf *= 0.5 + return llf + +def mvn_loglike_chol(x, sigma): + '''loglike multivariate normal + + assumes x is 1d, (nobs,) and sigma is 2d (nobs, nobs) + + brute force from formula + no checking of correct inputs + use of inv and log-det should be replace with something more efficient + ''' + #see numpy thread + #Sturla: sqmahal = (cx*cho_solve(cho_factor(S),cx.T).T).sum(axis=1) + sigmainv = np.linalg.inv(sigma) + cholsigmainv = np.linalg.cholesky(sigmainv).T + x_whitened = np.dot(cholsigmainv, x) + + logdetsigma = np.log(np.linalg.det(sigma)) + nobs = len(x) + from scipy import stats + print('scipy.stats') + print(np.log(stats.norm.pdf(x_whitened)).sum()) + + llf = - np.dot(x_whitened.T, x_whitened) + llf -= nobs * np.log(2 * np.pi) + llf -= logdetsigma + llf *= 0.5 + return llf, logdetsigma, 2 * np.sum(np.log(np.diagonal(cholsigmainv))) +#0.5 * np.dot(x_whitened.T, x_whitened) + nobs * np.log(2 * np.pi) + logdetsigma) + +def mvn_nloglike_obs(x, sigma): + '''loglike multivariate normal + + assumes x is 1d, (nobs,) and sigma is 2d (nobs, nobs) + + brute force from formula + no checking of correct inputs + use of inv and log-det should be replace with something more efficient + ''' + #see numpy thread + #Sturla: sqmahal = (cx*cho_solve(cho_factor(S),cx.T).T).sum(axis=1) + + #Still wasteful to calculate pinv first + sigmainv = np.linalg.inv(sigma) + cholsigmainv = np.linalg.cholesky(sigmainv).T + #2 * np.sum(np.log(np.diagonal(np.linalg.cholesky(A)))) #Dag mailinglist + # logdet not needed ??? + #logdetsigma = 2 * np.sum(np.log(np.diagonal(cholsigmainv))) + x_whitened = np.dot(cholsigmainv, x) + + #sigmainv = linalg.cholesky(sigma) + logdetsigma = np.log(np.linalg.det(sigma)) + + sigma2 = 1. # error variance is included in sigma + + llike = 0.5 * (np.log(sigma2) - 2.* np.log(np.diagonal(cholsigmainv)) + + (x_whitened**2)/sigma2 + + np.log(2*np.pi)) + + return llike + + +def invertibleroots(ma): + proc = ArmaProcess(ma=ma) + return proc.invertroots(retnew=False) + + +def getpoly(self, params): + ar = np.r_[[1], -params[:self.nar]] + ma = np.r_[[1], params[-self.nma:]] + import numpy.polynomial as poly + return poly.Polynomial(ar), poly.Polynomial(ma) + +class MLEGLS(GenericLikelihoodModel): + '''ARMA model with exact loglikelhood for short time series + + Inverts (nobs, nobs) matrix, use only for nobs <= 200 or so. + + This class is a pattern for small sample GLS-like models. Intended use + for loglikelihood of initial observations for ARMA. + + + + TODO: + This might be missing the error variance. Does it assume error is + distributed N(0,1) + Maybe extend to mean handling, or assume it is already removed. + ''' + + + def _params2cov(self, params, nobs): + '''get autocovariance matrix from ARMA regression parameter + + ar parameters are assumed to have rhs parameterization + + ''' + ar = np.r_[[1], -params[:self.nar]] + ma = np.r_[[1], params[-self.nma:]] + #print('ar', ar + #print('ma', ma + #print('nobs', nobs + autocov = arma_acovf(ar, ma, nobs=nobs) + #print('arma_acovf(%r, %r, nobs=%d)' % (ar, ma, nobs) + #print(autocov.shape + #something is strange fixed in aram_acovf + autocov = autocov[:nobs] + sigma = toeplitz(autocov) + return sigma + + def loglike(self, params): + sig = self._params2cov(params[:-1], self.nobs) + sig = sig * params[-1]**2 + loglik = mvn_loglike(self.endog, sig) + return loglik + + def fit_invertible(self, *args, **kwds): + res = self.fit(*args, **kwds) + ma = np.r_[[1], res.params[self.nar: self.nar+self.nma]] + mainv, wasinvertible = invertibleroots(ma) + if not wasinvertible: + start_params = res.params.copy() + start_params[self.nar: self.nar+self.nma] = mainv[1:] + #need to add args kwds + res = self.fit(start_params=start_params) + return res + + + +if __name__ == '__main__': + nobs = 50 + ar = [1.0, -0.8, 0.1] + ma = [1.0, 0.1, 0.2] + #ma = [1] + np.random.seed(9875789) + y = arma_generate_sample(ar,ma,nobs,2) + y -= y.mean() #I haven't checked treatment of mean yet, so remove + mod = MLEGLS(y) + mod.nar, mod.nma = 2, 2 #needs to be added, no init method + mod.nobs = len(y) + res = mod.fit(start_params=[0.1, -0.8, 0.2, 0.1, 1.]) + print('DGP', ar, ma) + print(res.params) + from statsmodels.regression import yule_walker + print(yule_walker(y, 2)) + #resi = mod.fit_invertible(start_params=[0.1,0,0.2,0, 0.5]) + #print(resi.params + + arpoly, mapoly = getpoly(mod, res.params[:-1]) + + data = sm.datasets.sunspots.load(as_pandas=False) + #ys = data.endog[-100:] +## ys = data.endog[12:]-data.endog[:-12] +## ys -= ys.mean() +## mods = MLEGLS(ys) +## mods.nar, mods.nma = 13, 1 #needs to be added, no init method +## mods.nobs = len(ys) +## ress = mods.fit(start_params=np.r_[0.4, np.zeros(12), [0.2, 5.]],maxiter=200) +## print(ress.params +## import matplotlib.pyplot as plt +## plt.plot(data.endog[1]) +## #plt.show() + + sigma = mod._params2cov(res.params[:-1], nobs) * res.params[-1]**2 + print(mvn_loglike(y, sigma)) + llo = mvn_nloglike_obs(y, sigma) + print(llo.sum(), llo.shape) + print(mvn_loglike_chol(y, sigma)) + print(mvn_loglike_sum(y, sigma)) diff --git a/statsmodels/multivariate/__init__.py b/statsmodels/multivariate/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/multivariate/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/multivariate/api.py b/statsmodels/multivariate/api.py new file mode 100644 index 0000000..3572a07 --- /dev/null +++ b/statsmodels/multivariate/api.py @@ -0,0 +1,10 @@ +__all__ = [ + "PCA", "MANOVA", "Factor", "FactorResults", "CanCorr", + "factor_rotation" +] + +from .pca import PCA +from .manova import MANOVA +from .factor import Factor, FactorResults +from .cancorr import CanCorr +from . import factor_rotation diff --git a/statsmodels/multivariate/cancorr.py b/statsmodels/multivariate/cancorr.py new file mode 100644 index 0000000..48f20cf --- /dev/null +++ b/statsmodels/multivariate/cancorr.py @@ -0,0 +1,181 @@ +# -*- coding: utf-8 -*- + +"""Canonical correlation analysis + +author: Yichuan Liu +""" +from __future__ import division + +import numpy as np +from numpy.linalg import svd +import scipy +import pandas as pd + +from statsmodels.base.model import Model +from statsmodels.iolib import summary2 +from .multivariate_ols import multivariate_stats + + +class CanCorr(Model): + """ + Canonical correlation analysis using singluar value decomposition + + For matrices exog=x and endog=y, find projections x_cancoef and y_cancoef + such that: + + x1 = x * x_cancoef, x1' * x1 is identity matrix + y1 = y * y_cancoef, y1' * y1 is identity matrix + + and the correlation between x1 and y1 is maximized. + + Attributes + ---------- + endog : array + See Parameters. + exog : array + See Parameters. + cancorr : array + The canonical correlation values + y_cancoeff: array + The canonical coeefficients for endog + x_cancoeff: array + The canonical coefficients for exog + + References + ---------- + .. [*] http://numerical.recipes/whp/notes/CanonCorrBySVD.pdf + .. [*] http://www.csun.edu/~ata20315/psy524/docs/Psy524%20Lecture%208%20CC.pdf + .. [*] http://www.mathematica-journal.com/2014/06/canonical-correlation-analysis/ + """ # noqa:E501 + def __init__(self, endog, exog, tolerance=1e-8, missing='none', hasconst=None, **kwargs): + super(CanCorr, self).__init__(endog, exog, missing=missing, + hasconst=hasconst, **kwargs) + self._fit(tolerance) + + def _fit(self, tolerance=1e-8): + """Fit the model + + A ValueError is raised if there are singular values smaller than the + tolerance. The treatment of singular arrays might change in future. + + Parameters + ---------- + tolerance : float + eigenvalue tolerance, values smaller than which is considered 0 + """ + nobs, k_yvar = self.endog.shape + nobs, k_xvar = self.exog.shape + k = np.min([k_yvar, k_xvar]) + + x = np.array(self.exog) + x = x - x.mean(0) + y = np.array(self.endog) + y = y - y.mean(0) + + ux, sx, vx = svd(x, 0) + # vx_ds = vx.T divided by sx + vx_ds = vx.T + mask = sx > tolerance + if mask.sum() < len(mask): + raise ValueError('exog is collinear.') + vx_ds[:, mask] /= sx[mask] + uy, sy, vy = svd(y, 0) + # vy_ds = vy.T divided by sy + vy_ds = vy.T + mask = sy > tolerance + if mask.sum() < len(mask): + raise ValueError('endog is collinear.') + vy_ds[:, mask] /= sy[mask] + u, s, v = svd(ux.T.dot(uy), 0) + + # Correct any roundoff + self.cancorr = np.array([max(0, min(s[i], 1)) for i in range(len(s))]) + + self.x_cancoef = vx_ds.dot(u[:, :k]) + self.y_cancoef = vy_ds.dot(v.T[:, :k]) + + def corr_test(self): + """Approximate F test + Perform multivariate statistical tests of the hypothesis that + there is no canonical correlation between endog and exog. + For each canonical correlation, testing its significance based on + Wilks' lambda. + + Returns + ------- + CanCorrTestResults instance + + """ + nobs, k_yvar = self.endog.shape + nobs, k_xvar = self.exog.shape + eigenvals = np.power(self.cancorr, 2) + stats = pd.DataFrame(columns=['Canonical Correlation', "Wilks' lambda", + 'Num DF','Den DF', 'F Value','Pr > F'], + index=list(range(len(eigenvals) - 1, -1, -1))) + prod = 1 + for i in range(len(eigenvals) - 1, -1, -1): + prod *= 1 - eigenvals[i] + p = k_yvar - i + q = k_xvar - i + r = (nobs - k_yvar - 1) - (p - q + 1) / 2 + u = (p * q - 2) / 4 + df1 = p * q + if p ** 2 + q ** 2 - 5 > 0: + t = np.sqrt(((p * q) ** 2 - 4) / (p ** 2 + q ** 2 - 5)) + else: + t = 1 + df2 = r * t - 2 * u + lmd = np.power(prod, 1 / t) + F = (1 - lmd) / lmd * df2 / df1 + stats.loc[i, 'Canonical Correlation'] = self.cancorr[i] + stats.loc[i, "Wilks' lambda"] = prod + stats.loc[i, 'Num DF'] = df1 + stats.loc[i, 'Den DF'] = df2 + stats.loc[i, 'F Value'] = F + pval = scipy.stats.f.sf(F, df1, df2) + stats.loc[i, 'Pr > F'] = pval + ''' + # Wilk's Chi square test of each canonical correlation + df = (p - i + 1) * (q - i + 1) + chi2 = a * np.log(prod) + pval = stats.chi2.sf(chi2, df) + stats.loc[i, 'Canonical correlation'] = self.cancorr[i] + stats.loc[i, 'Chi-square'] = chi2 + stats.loc[i, 'DF'] = df + stats.loc[i, 'Pr > ChiSq'] = pval + ''' + ind = stats.index.values[::-1] + stats = stats.loc[ind, :] + + # Multivariate tests (remember x has mean removed) + stats_mv = multivariate_stats(eigenvals, + k_yvar, k_xvar, nobs - k_xvar - 1) + return CanCorrTestResults(stats, stats_mv) + + +class CanCorrTestResults(object): + """ + Canonical correlation results class + + Attributes + ---------- + stats : DataFrame + Contain statistical tests results for each canonical correlation + stats_mv : DataFrame + Contain the multivariate statistical tests results + """ + def __init__(self, stats, stats_mv): + self.stats = stats + self.stats_mv = stats_mv + + def __str__(self): + return self.summary().__str__() + + def summary(self): + summ = summary2.Summary() + summ.add_title('Cancorr results') + summ.add_df(self.stats) + summ.add_dict({'': ''}) + summ.add_dict({'Multivariate Statistics and F Approximations': ''}) + summ.add_df(self.stats_mv) + return summ diff --git a/statsmodels/multivariate/factor.py b/statsmodels/multivariate/factor.py new file mode 100644 index 0000000..f849996 --- /dev/null +++ b/statsmodels/multivariate/factor.py @@ -0,0 +1,1037 @@ +# -*- coding: utf-8 -*- + +from __future__ import division +import warnings + +import numpy as np +from numpy.linalg import eigh, inv, norm, matrix_rank +import pandas as pd +from scipy.optimize import minimize + +from statsmodels.tools.decorators import cache_readonly +from statsmodels.base.model import Model +from statsmodels.iolib import summary2 +from statsmodels.graphics.utils import _import_mpl + +from .factor_rotation import rotate_factors, promax + + +_opt_defaults = {'gtol': 1e-7} + + +def _check_args_1(endog, n_factor, corr, nobs): + + msg = "Either endog or corr must be provided." + if endog is not None and corr is not None: + raise ValueError(msg) + if endog is None and corr is None: + warnings.warn('Both endog and corr are provided, ' + + 'corr will be used for factor analysis.') + + if n_factor <= 0: + raise ValueError('n_factor must be larger than 0! %d < 0' % + (n_factor)) + + if nobs is not None and endog is not None: + warnings.warn("nobs is ignored when endog is provided") + + +def _check_args_2(endog, n_factor, corr, nobs, k_endog): + + if n_factor > k_endog: + raise ValueError('n_factor cannot be greater than the number' + ' of variables! %d > %d' % + (n_factor, k_endog)) + + if np.max(np.abs(np.diag(corr) - 1)) > 1e-10: + raise ValueError("corr must be a correlation matrix") + + if corr.shape[0] != corr.shape[1]: + raise ValueError('Correlation matrix corr must be a square ' + '(rows %d != cols %d)' % corr.shape) + + +class Factor(Model): + """ + Factor analysis + + Parameters + ---------- + endog : array-like + Variables in columns, observations in rows. May be `None` if + `corr` is not `None`. + n_factor : int + The number of factors to extract + corr : array-like + Directly specify the correlation matrix instead of estimating + it from `endog`. If provided, `endog` is not used for the + factor analysis, it may be used in post-estimation. + method : str + The method to extract factors, currently must be either 'pa' + for principal axis factor analysis or 'ml' for maximum + likelihood estimation. + smc : True or False + Whether or not to apply squared multiple correlations (method='pa') + endog_names: str + Names of endogeous variables. If specified, it will be used + instead of the column names in endog + nobs : int + The number of observations, not used if endog is present. Needs to + be provided for inference if endog is None. + missing : 'none', 'drop', or 'raise' + Missing value handling for endog, default is row-wise deletion 'drop' + If 'none', no nan checking is done. If 'drop', any observations with + nans are dropped. If 'raise', an error is raised. + + + Notes + ----- + **Experimental** + + Supported rotations: 'varimax', 'quartimax', 'biquartimax', + 'equamax', 'oblimin', 'parsimax', 'parsimony', 'biquartimin', + 'promax' + + If method='ml', the factors are rotated to satisfy condition IC3 + of Bai and Li (2012). This means that the scores have covariance + I, so the model for the covariance matrix is L * L' + diag(U), + where L are the loadings and U are the uniquenesses. In addition, + L' * diag(U)^{-1} L must be diagonal. + + References + ---------- + .. [*] Hofacker, C. (2004). Exploratory Factor Analysis, Mathematical + Marketing. http://www.openaccesstexts.org/pdf/Quant_Chapter_11_efa.pdf + .. [*] J Bai, K Li (2012). Statistical analysis of factor models of high + dimension. Annals of Statistics. https://arxiv.org/pdf/1205.6617.pdf + """ + def __init__(self, endog=None, n_factor=1, corr=None, method='pa', + smc=True, endog_names=None, nobs=None, missing='drop'): + + _check_args_1(endog, n_factor, corr, nobs) + + if endog is not None: + super(Factor, self).__init__(endog, exog=None, missing=missing) + endog = self.endog # after preprocessing like missing, asarray + k_endog = endog.shape[1] + nobs = endog.shape[0] + corr = self.corr = np.corrcoef(endog, rowvar=0) + elif corr is not None: + corr = self.corr = np.asarray(corr) + k_endog = self.corr.shape[0] + self.endog = None + else: + msg = "Either endog or corr must be provided." + raise ValueError(msg) + + _check_args_2(endog, n_factor, corr, nobs, k_endog) + + self.n_factor = n_factor + self.loadings = None + self.communality = None + self.method = method + self.smc = smc + self.nobs = nobs + self.method = method + self.corr = corr + self.k_endog = k_endog + + if endog_names is None: + if hasattr(corr, 'index'): + endog_names = corr.index + if hasattr(corr, 'columns'): + endog_names = corr.columns + self.endog_names = endog_names + + @property + def endog_names(self): + """Names of endogenous variables""" + if self._endog_names is not None: + return self._endog_names + else: + if self.endog is not None: + return self.data.ynames + else: + d = 0 + n = self.corr.shape[0] - 1 + while n > 0: + d += 1 + n //= 10 + return [('var%0' + str(d) + 'd') % i + for i in range(self.corr.shape[0])] + + @endog_names.setter + def endog_names(self, value): + # Check validity of endog_names: + if value is not None: + if len(value) != self.corr.shape[0]: + raise ValueError('The length of `endog_names` must ' + 'equal the number of variables.') + self._endog_names = np.asarray(value) + else: + self._endog_names = None + + def fit(self, maxiter=50, tol=1e-8, start=None, opt_method='BFGS', + opt=None, em_iter=3): + """ + Estimate factor model parameters. + + Parameters + ---------- + maxiter : int + Maximum number of iterations for iterative estimation algorithms + tol : float + Stopping critera (error tolerance) for iterative estimation + algorithms + start : array-like + Starting values, currently only used for ML estimation + opt_method : string + Optimization method for ML estimation + opt : dict-like + Keyword arguments passed to optimizer, only used for ML estimation + em_iter : int + The number of EM iterations before starting gradient optimization, + only used for ML estimation. + + Returns + ------- + results: FactorResults + + """ + method = self.method.lower() + if method == 'pa': + return self._fit_pa(maxiter=maxiter, tol=tol) + elif method == 'ml': + return self._fit_ml(start, em_iter, opt_method, opt) + else: + msg = "Unknown factor extraction approach '%s'" % self.method + raise ValueError(msg) + + def _fit_pa(self, maxiter=50, tol=1e-8): + """ + Extract factors using the iterative principal axis method + + Parameters + ---------- + maxiter : int + Maximum number of iterations for communality estimation + tol : float + If `norm(communality - last_communality) < tolerance`, + estimation stops + + Returns + ------- + results : FactorResults instance + + """ + + R = self.corr.copy() # inplace modification below + + # Parameter validation + self.n_comp = matrix_rank(R) + if self.n_factor > self.n_comp: + raise ValueError('n_factor must be smaller or equal to the rank' + ' of endog! %d > %d' % + (self.n_factor, self.n_comp)) + if maxiter <= 0: + raise ValueError('n_max_iter must be larger than 0! %d < 0' % + (maxiter)) + if tol <= 0 or tol > 0.01: + raise ValueError('tolerance must be larger than 0 and smaller than' + ' 0.01! Got %f instead' % (tol)) + + # Initial communality estimation + if self.smc: + c = 1 - 1 / np.diag(inv(R)) + else: + c = np.ones(len(R)) + + # Iterative communality estimation + eigenvals = None + for i in range(maxiter): + # Get eigenvalues/eigenvectors of R with diag replaced by + # communality + for j in range(len(R)): + R[j, j] = c[j] + L, V = eigh(R, UPLO='U') + c_last = np.array(c) + ind = np.argsort(L) + ind = ind[::-1] + L = L[ind] + n_pos = (L > 0).sum() + V = V[:, ind] + eigenvals = np.array(L) + + # Select eigenvectors with positive eigenvalues + n = np.min([n_pos, self.n_factor]) + sL = np.diag(np.sqrt(L[:n])) + V = V[:, :n] + + # Calculate new loadings and communality + A = V.dot(sL) + c = np.power(A, 2).sum(axis=1) + if norm(c_last - c) < tol: + break + + self.eigenvals = eigenvals + self.communality = c + self.uniqueness = 1 - c + self.loadings = A + return FactorResults(self) + + # Unpacks the model parameters from a flat vector, used for ML + # estimation. The first k_endog elements of par are the square + # roots of the uniquenesses. The remaining elements are the + # factor loadings, packed one factor at a time. + def _unpack(self, par): + return (par[0:self.k_endog]**2, + np.reshape(par[self.k_endog:], (-1, self.k_endog)).T) + + # Packs the model parameters into a flat parameter, used for ML + # estimation. + def _pack(self, load, uniq): + return np.concatenate((np.sqrt(uniq), load.T.flat)) + + def loglike(self, par): + """ + Evaluate the log-likelihood function. + + Parameters + ---------- + par : ndarray or tuple of 2 ndarray's + The model parameters, either a packed representation of + the model parameters or a 2-tuple containing a `k_endog x + n_factor` matrix of factor loadings and a `k_endog` vector + of uniquenesses. + + Returns + ------- + loglike : float + """ + + if type(par) is np.ndarray: + uniq, load = self._unpack(par) + else: + load, uniq = par[0], par[1] + + loadu = load / uniq[:, None] + lul = np.dot(load.T, loadu) + + # log|GG' + S| + # Using matrix determinant lemma: + # |GG' + S| = |I + G'S^{-1}G|*|S| + lul.flat[::lul.shape[0]+1] += 1 + _, ld = np.linalg.slogdet(lul) + v = np.sum(np.log(uniq)) + ld + + # tr((GG' + S)^{-1}C) + # Using Sherman-Morrison-Woodbury + w = np.sum(1 / uniq) + b = np.dot(load.T, self.corr / uniq[:, None]) + b = np.linalg.solve(lul, b) + b = np.dot(loadu, b) + w -= np.trace(b) + + # Scaled log-likelihood + return -(v + w) / (2*self.k_endog) + + def score(self, par): + """ + Evaluate the score function (first derivative of loglike). + + Parameters + ---------- + par : ndarray or tuple of 2 ndarray's + The model parameters, either a packed representation of + the model parameters or a 2-tuple containing a `k_endog x + n_factor` matrix of factor loadings and a `k_endog` vector + of uniquenesses. + + Returns + ------- + score : ndarray + """ + + if type(par) is np.ndarray: + uniq, load = self._unpack(par) + else: + load, uniq = par[0], par[1] + + # Center term of SMW + loadu = load / uniq[:, None] + c = np.dot(load.T, loadu) + c.flat[::c.shape[0]+1] += 1 + d = np.linalg.solve(c, load.T) + + # Precompute these terms + lud = np.dot(loadu, d) + cu = (self.corr / uniq) / uniq[:, None] + r = np.dot(cu, load) + lul = np.dot(lud.T, load) + luz = np.dot(cu, lul) + + # First term + du = 2*np.sqrt(uniq) * (1/uniq - (d * load.T).sum(0) / uniq**2) + dl = 2*(loadu - np.dot(lud, loadu)) + + # Second term + h = np.dot(lud, cu) + f = np.dot(h, lud.T) + du -= 2*np.sqrt(uniq) * (np.diag(cu) - 2*np.diag(h) + np.diag(f)) + dl -= 2*r + dl += 2*np.dot(lud, r) + dl += 2*luz + dl -= 2*np.dot(lud, luz) + + # Can't use _pack because we are working with the square root + # uniquenesses directly. + return -np.concatenate((du, dl.T.flat)) / (2*self.k_endog) + + # Maximum likelihood factor analysis. + def _fit_ml(self, start, em_iter, opt_method, opt): + """estimate Factor model using Maximum Likelihood + """ + + # Starting values + if start is None: + load, uniq = self._fit_ml_em(em_iter) + start = self._pack(load, uniq) + elif len(start) == 2: + if len(start[1]) != start[0].shape[0]: + msg = "Starting values have incompatible dimensions" + raise ValueError(msg) + start = self._pack(start[0], start[1]) + else: + raise ValueError("Invalid starting values") + + def nloglike(par): + return -self.loglike(par) + + def nscore(par): + return -self.score(par) + + # Do the optimization + if opt is None: + opt = _opt_defaults + r = minimize(nloglike, start, jac=nscore, method=opt_method, + options=opt) + if not r.success: + warnings.warn("Fitting did not converge") + par = r.x + uniq, load = self._unpack(par) + + if uniq.min() < 1e-10: + warnings.warn("Some uniquenesses are nearly zero") + + # Rotate solution to satisfy IC3 of Bai and Li + load = self._rotate(load, uniq) + + self.uniqueness = uniq + self.communality = 1 - uniq + self.loadings = load + self.mle_retvals = r + + return FactorResults(self) + + def _fit_ml_em(self, iter): + """estimate Factor model using EM algorithm + """ + # Starting values + np.random.seed(3427) + load = 0.1*np.random.normal(size=(self.k_endog, self.n_factor)) + uniq = 0.5 * np.ones(self.k_endog) + + for k in range(iter): + + loadu = load / uniq[:, None] + + f = np.dot(load.T, loadu) + f.flat[::f.shape[0]+1] += 1 + + r = np.linalg.solve(f, loadu.T) + q = np.dot(loadu.T, load) + h = np.dot(r, load) + + c = load - np.dot(load, h) + c /= uniq[:, None] + + g = np.dot(q, r) + e = np.dot(g, self.corr) + d = np.dot(loadu.T, self.corr) - e + + a = np.dot(d, c) + a -= np.dot(load.T, c) + a.flat[::a.shape[0]+1] += 1 + + b = np.dot(self.corr, c) + + load = np.linalg.solve(a, b.T).T + uniq = np.diag(self.corr) - (load * d.T).sum(1) + + return load, uniq + + def _rotate(self, load, uniq): + """rotate loadings for MLE + """ + # Rotations used in ML estimation. + load, s, _ = np.linalg.svd(load, 0) + load *= s + + if self.nobs is None: + nobs = 1 + else: + nobs = self.nobs + + cm = np.dot(load.T, load / uniq[:, None]) / nobs + _, f = np.linalg.eig(cm) + load = np.dot(load, f) + return load + + +class FactorResults(object): + """ + Factor results class + + For result summary, scree/loading plots and factor rotations + + Parameters + ---------- + factor : Factor + Fitted Factor class + + Attributes + ---------- + uniqueness: ndarray + The uniqueness (variance of uncorrelated errors unique to + each variable) + communality: ndarray + 1 - uniqueness + loadings : ndarray + Each column is the loading vector for one factor + loadings_no_rot : ndarray + Unrotated loadings, not available under maximum likelihood + analyis. + eigenvalues : ndarray + The eigenvalues for a factor analysis obtained using + principal components; not available under ML estimation. + n_comp : int + Number of components (factors) + nbs : int + Number of observations + fa_method : string + The method used to obtain the decomposition, either 'pa' for + 'principal axes' or 'ml' for maximum likelihood. + df : int + Degrees of freedom of the factor model. + + Notes + ----- + Under ML estimation, the default rotation (used for `loadings`) is + condition IC3 of Bai and Li (2012). Under this rotation, the + factor scores are iid and standardized. If `G` is the canonical + loadings and `U` is the vector of uniquenesses, then the + covariance matrix implied by the factor analysis is `GG' + + diag(U)`. + + Status: experimental, Some refactoring will be necessary when new + features are added. + + """ + def __init__(self, factor): + self.model = factor + self.endog_names = factor.endog_names + self.loadings_no_rot = factor.loadings + if hasattr(factor, "eigenvals"): + self.eigenvals = factor.eigenvals + + self.communality = factor.communality + self.uniqueness = factor.uniqueness + self.rotation_method = None + self.fa_method = factor.method + self.n_comp = factor.loadings.shape[1] + self.nobs = factor.nobs + self._factor = factor + if hasattr(factor, "mle_retvals"): + self.mle_retvals = factor.mle_retvals + + p, k = self.loadings_no_rot.shape + self.df = ((p - k)**2 - (p + k)) // 2 + + # no rotation, overwritten in `rotate` + self.loadings = factor.loadings + self.rotation_matrix = np.eye(self.n_comp) + + + def __str__(self): + return self.summary().__str__() + + def rotate(self, method): + """ + Apply rotation, inplace modification of this Results instance + + Parameters + ---------- + method : string + Rotation to be applied. Allowed methods are varimax, + quartimax, biquartimax, equamax, oblimin, parsimax, + parsimony, biquartimin, promax. + + Returns + ------- + None : nothing returned, modifications are inplace + + + Notes + ----- + Warning: 'varimax', 'quartimax' and 'oblimin' are verified against R or + Stata. Some rotation methods such as promax do not produce the same + results as the R or Stata default functions. + + See Also + -------- + factor_rotation : subpackage that implements rotation methods + """ + self.rotation_method = method + if method not in ['varimax', 'quartimax', 'biquartimax', + 'equamax', 'oblimin', 'parsimax', 'parsimony', + 'biquartimin', 'promax']: + raise ValueError('Unknown rotation method %s' % (method)) + + if method in ['varimax', 'quartimax', 'biquartimax', 'equamax', + 'parsimax', 'parsimony', 'biquartimin']: + self.loadings, T = rotate_factors(self.loadings_no_rot, method) + elif method == 'oblimin': + self.loadings, T = rotate_factors(self.loadings_no_rot, + 'quartimin') + elif method == 'promax': + self.loadings, T = promax(self.loadings_no_rot) + else: + raise ValueError('rotation method not recognized') + + self.rotation_matrix = T + + def _corr_factors(self): + """correlation of factors implied by rotation + + If the rotation is oblique, then the factors are correlated. + + currently not cached + + Returns + ------- + corr_f : ndarray + correlation matrix of rotated factors, assuming initial factors are + orthogonal + """ + T = self.rotation_matrix + corr_f = T.T.dot(T) + return corr_f + + def factor_score_params(self, method='bartlett'): + """ + Compute factor scoring coefficient matrix + + The coefficient matrix is not cached. + + Parameters + ---------- + method : 'bartlett' or 'regression' + Method to use for factor scoring. + 'regression' can be abbreviated to `reg` + + Returns + ------- + coeff_matrix : ndarray + matrix s to compute factors f from a standardized endog ys. + ``f = ys dot s`` + + Notes + ----- + The `regression` method follows the Stata definition. + Method bartlett and regression are verified against Stats. + Two unofficial methods, 'ols' and 'gls', produce similar factor scores + but are not verified. + + See Also + -------- + statsmodels.multivariate.factor.FactorResults.factor_scoring + """ + L = self.loadings + T = self.rotation_matrix.T + #TODO: check row versus column convention for T + uni = 1 - self.communality #self.uniqueness + + if method == 'bartlett': + s_mat = np.linalg.inv(L.T.dot(L/(uni[:,None]))).dot((L.T / uni)).T + elif method.startswith('reg'): + corr = self.model.corr + corr_f = self._corr_factors() + # if orthogonal then corr_f is just eye + s_mat = corr_f.dot(L.T.dot(np.linalg.inv(corr))).T + elif method == 'ols': + # not verified + corr = self.model.corr + corr_f = self._corr_factors() + s_mat = corr_f.dot(np.linalg.pinv(L)).T + elif method == 'gls': + # not verified + #s_mat = np.linalg.inv(1*np.eye(L.shape[1]) + L.T.dot(L/(uni[:,None]))) + corr = self.model.corr + corr_f = self._corr_factors() + s_mat = np.linalg.inv(np.linalg.inv(corr_f) + L.T.dot(L/(uni[:,None]))) + s_mat = s_mat.dot(L.T / uni).T + else: + raise ValueError('method not available, use "bartlett ' + + 'or "regression"') + return s_mat + + def factor_scoring(self, endog=None, method='bartlett', transform=True): + """ + factor scoring: compute factors for endog + + If endog was not provided when creating the factor class, then + a standarized endog needs to be provided here. + + Parameters + ---------- + method : 'bartlett' or 'regression' + Method to use for factor scoring. + 'regression' can be abbreviated to `reg` + transform : bool + If transform is true and endog is provided, then it will be + standardized using mean and scale of original data, which has to + be available in this case. + If transform is False, then a provided endog will be used unchanged. + The original endog in the Factor class will + always be standardized if endog is None, independently of `transform`. + + Returns + ------- + factor_score : ndarray + estimated factors using scoring matrix s and standarized endog ys + ``f = ys dot s`` + + Notes + ----- + Status: transform option is experimental and might change. + + See Also + -------- + statsmodels.multivariate.factor.FactorResults.factor_score_params + """ + + if transform is False and endog is not None: + # no transformation in this case + endog = np.asarray(endog) + else: + # we need to standardize with the original mean and scale + if self.model.endog is not None: + m = self.model.endog.mean(0) + s = self.model.endog.std(ddof=1, axis=0) + if endog is None: + endog = self.model.endog + else: + endog = np.asarray(endog) + else: + raise ValueError('If transform is True, then `endog` needs ' + + 'to be available in the Factor instance.') + + endog = (endog - m) / s + + s_mat = self.factor_score_params(method=method) + factors = endog.dot(s_mat) + return factors + + def summary(self): + """Summary""" + summ = summary2.Summary() + summ.add_title('Factor analysis results') + loadings_no_rot = pd.DataFrame( + self.loadings_no_rot, + columns=["factor %d" % (i) + for i in range(self.loadings_no_rot.shape[1])], + index=self.endog_names + ) + if hasattr(self, "eigenvals"): + # eigenvals not available for ML method + eigenvals = pd.DataFrame( + [self.eigenvals], columns=self.endog_names, index=['']) + summ.add_dict({'': 'Eigenvalues'}) + summ.add_df(eigenvals) + communality = pd.DataFrame([self.communality], + columns=self.endog_names, index=['']) + summ.add_dict({'': ''}) + summ.add_dict({'': 'Communality'}) + summ.add_df(communality) + summ.add_dict({'': ''}) + summ.add_dict({'': 'Pre-rotated loadings'}) + summ.add_df(loadings_no_rot) + summ.add_dict({'': ''}) + if self.rotation_method is not None: + loadings = pd.DataFrame( + self.loadings, + columns=["factor %d" % (i) + for i in range(self.loadings.shape[1])], + index=self.endog_names + ) + summ.add_dict({'': '%s rotated loadings' % (self.rotation_method)}) + summ.add_df(loadings) + return summ + + def get_loadings_frame(self, style='display', sort_=True, threshold=0.3, + highlight_max=True, color_max='yellow', + decimals=None): + """get loadings matrix as DataFrame or pandas Styler + + Parameters + ---------- + style : 'display' (default), 'raw' or 'strings' + Style to use for display + + * 'raw' returns just a DataFrame of the loadings matrix, no options are + applied + * 'display' add sorting and styling as defined by other keywords + * 'strings' returns a DataFrame with string elements with optional sorting + and surpressing small loading coefficients. + + sort_ : boolean + If True, then the rows of the DataFrame is sorted by contribution of each + factor. applies if style is either 'display' or 'strings' + threshold : float + If the threshold is larger than zero, then loading coefficients are + either colored white (if style is 'display') or replace by empty + string (if style is 'strings'). + highlight_max : boolean + This add a background color to the largest coefficient in each row. + color_max : html color + default is 'yellow'. color for background of row maximum + decimals : None or int + If None, then pandas default precision applies. Otherwise values are + rounded to the specified decimals. If style is 'display', then the + underlying dataframe is not changed. If style is 'strings', then + values are rounded before conversion to strings. + + Returns + ------- + loadings : DataFrame or pandas Styler instance + The return is a pandas Styler instance, if style is 'display' and + at least one of highlight_max, threshold or decimals is applied. + Otherwise, the returned loadings is a DataFrame. + + Examples + -------- + >>> mod = Factor(df, 3, smc=True) + >>> res = mod.fit() + >>> res.get_loadings_frame(style='display', decimals=3, threshold=0.2) + + To get a sorted DataFrame, all styling options need to be turned off: + + >>> df_sorted = res.get_loadings_frame(style='display', + ... highlight_max=False, decimals=None, threshold=0) + + Options except for highlighting are available for plain test or Latex + usage: + + >>> lds = res_u.get_loadings_frame(style='strings', decimals=3, + ... threshold=0.3) + >>> print(lds.to_latex()) + """ + + loadings_df = pd.DataFrame( + self.loadings, + columns=["factor %d" % (i) + for i in range(self.loadings.shape[1])], + index=self.endog_names + ) + + if style not in ['raw', 'display', 'strings']: + msg = "style has to be one of 'raw', 'display', 'strings'" + raise ValueError(msg) + + if style == 'raw': + return loadings_df + + # add sorting and some formatting + if sort_ is True: + loadings_df2 = loadings_df.copy() + n_f = len(loadings_df2) + high = np.abs(loadings_df2.values).argmax(1) + loadings_df2['high'] = high + loadings_df2['largest'] = np.abs(loadings_df.values[np.arange(n_f), high]) + loadings_df2.sort_values(by=['high', 'largest'], ascending=[True, False], inplace=True) + loadings_df = loadings_df2.drop(['high', 'largest'], axis=1) + + if style == 'display': + sty = None + if threshold > 0: + def color_white_small(val): + """ + Takes a scalar and returns a string with + the css property `'color: white'` for small values, black otherwise. + + takes threshold from outer scope + """ + color = 'white' if np.abs(val) < threshold else 'black' + return 'color: %s' % color + + sty = loadings_df.style.applymap(color_white_small) + + if highlight_max is True: + def highlight_max(s): + ''' + highlight the maximum in a Series yellow. + ''' + s = np.abs(s) + is_max = s == s.max() + return ['background-color: '+ color_max if v else '' for v in is_max] + + if sty is None: + sty = loadings_df.style + + sty = sty.apply(highlight_max, axis=1) + + if decimals is not None: + if sty is None: + sty = loadings_df.style + + sty.format("{:.%sf}" % decimals) + + if sty is None: + return loadings_df + else: + return sty + + if style == 'strings': + ld = loadings_df + if decimals is not None: + ld = ld.round(decimals) + ld = ld.astype(str) + if threshold > 0: + ld[loadings_df.abs() < threshold] = '' + return ld + + def plot_scree(self, ncomp=None): + """ + Plot of the ordered eigenvalues and variance explained for the loadings + + Parameters + ---------- + ncomp : int, optional + Number of loadings to include in the plot. If None, will + included the same as the number of maximum possible loadings + + Returns + ------- + fig : figure + Handle to the figure + """ + _import_mpl() + from .plots import plot_scree + return plot_scree(self.eigenvals, self.n_comp, ncomp) + + def plot_loadings(self, loading_pairs=None, plot_prerotated=False): + """ + Plot factor loadings in 2-d plots + + Parameters + ---------- + loading_pairs : None or a list of tuples + Specify plots. Each tuple (i, j) represent one figure, i and j is + the loading number for x-axis and y-axis, respectively. If `None`, + all combinations of the loadings will be plotted. + plot_prerotated : True or False + If True, the loadings before rotation applied will be plotted. If + False, rotated loadings will be plotted. + + Returns + ------- + figs : a list of figure handles + + """ + _import_mpl() + from .plots import plot_loadings + + if self.rotation_method is None: + plot_prerotated = True + loadings = self.loadings_no_rot if plot_prerotated else self.loadings + if plot_prerotated: + title = 'Prerotated Factor Pattern' + else: + title = '%s Rotated Factor Pattern' % (self.rotation_method) + var_explained = self.eigenvals / self.n_comp * 100 + + return plot_loadings(loadings, loading_pairs=loading_pairs, + title=title, row_names=self.endog_names, + percent_variance=var_explained) + + @cache_readonly + def fitted_cov(self): + """ + Returns the fitted covariance matrix. + """ + + c = np.dot(self.loadings, self.loadings.T) + c.flat[::c.shape[0]+1] += self.uniqueness + return c + + @cache_readonly + def uniq_stderr(self, kurt=0): + """ + The standard errors of the uniquenesses. + + Parameters + ---------- + kurt: float + Excess kurtosis + + Notes + ----- + If excess kurtosis is known, provide as `kurt`. Standard + errors are only available if the model was fit using maximum + likelihood. If `endog` is not provided, `nobs` must be + provided to obtain standard errors. + + These are asymptotic standard errors. See Bai and Li (2012) + for conditions under which the standard errors are valid. + + The standard errors are only applicable to the original, + unrotated maximum likelihood solution. + """ + + if self.fa_method.lower() != "ml": + msg = "Standard errors only available under ML estimation" + raise ValueError(msg) + + if self.nobs is None: + msg = "nobs is required to obtain standard errors." + raise ValueError(msg) + + v = self.uniqueness**2 * (2 + kurt) + return np.sqrt(v / self.nobs) + + @cache_readonly + def load_stderr(self): + """ + The standard errors of the loadings. + + Standard errors are only available if the model was fit using + maximum likelihood. If `endog` is not provided, `nobs` must be + provided to obtain standard errors. + + These are asymptotic standard errors. See Bai and Li (2012) + for conditions under which the standard errors are valid. + + The standard errors are only applicable to the original, + unrotated maximum likelihood solution. + """ + + if self.fa_method.lower() != "ml": + msg = "Standard errors only available under ML estimation" + raise ValueError(msg) + + if self.nobs is None: + msg = "nobs is required to obtain standard errors." + raise ValueError(msg) + + v = np.outer(self.uniqueness, np.ones(self.loadings.shape[1])) + return np.sqrt(v / self.nobs) diff --git a/statsmodels/multivariate/factor_rotation/COPYRIGHTS.txt b/statsmodels/multivariate/factor_rotation/COPYRIGHTS.txt new file mode 100644 index 0000000..200c774 --- /dev/null +++ b/statsmodels/multivariate/factor_rotation/COPYRIGHTS.txt @@ -0,0 +1,5 @@ +The license of this package can be found in LICENSE.txt +This file contains a Python version of the gradient projection rotation +algorithms (GPA) developed by Bernaards, C.A. and Jennrich, R.I. +The code is based on code developed Bernaards, C.A. and Jennrich, R.I. +and is ported and made available with permission of the authors. \ No newline at end of file diff --git a/statsmodels/multivariate/factor_rotation/LICENSE.txt b/statsmodels/multivariate/factor_rotation/LICENSE.txt new file mode 100644 index 0000000..49589fb --- /dev/null +++ b/statsmodels/multivariate/factor_rotation/LICENSE.txt @@ -0,0 +1,24 @@ +Copyright (c) 2015, Martin van der Schans +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of the nor the + names of its contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/statsmodels/multivariate/factor_rotation/__init__.py b/statsmodels/multivariate/factor_rotation/__init__.py new file mode 100644 index 0000000..73e54a3 --- /dev/null +++ b/statsmodels/multivariate/factor_rotation/__init__.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +""" +Package with factor rotation algorithms. + +This file contains a Python version of the gradient projection rotation +algorithms (GPA) developed by Bernaards, C.A. and Jennrich, R.I. +The code is based on the Matlab version of the code developed Bernaards, C.A. +and Jennrich, R.I. and is ported and made available with permission of the +authors. + +Additionally, several analytic rotation methods are implemented. + +References +---------- +[1] Bernaards, C.A. and Jennrich, R.I. (2005) Gradient Projection Algorithms and Software for Arbitrary Rotation Criteria in Factor Analysis. Educational and Psychological Measurement, 65 (5), 676-696. + +[2] Jennrich, R.I. (2001). A simple general procedure for orthogonal rotation. Psychometrika, 66, 289-306. + +[3] Jennrich, R.I. (2002). A simple general method for oblique rotation. Psychometrika, 67, 7-19. + +[4] http://www.stat.ucla.edu/research/gpa/matlab.net + +[5] http://www.stat.ucla.edu/research/gpa/GPderfree.txt +""" +from ._wrappers import rotate_factors + +from ._analytic_rotation import target_rotation, procrustes, promax +from statsmodels.tools._testing import PytestTester + +__all__ = ['rotate_factors', 'target_rotation', 'procrustes', 'promax', + 'test'] + +test = PytestTester() diff --git a/statsmodels/multivariate/factor_rotation/_analytic_rotation.py b/statsmodels/multivariate/factor_rotation/_analytic_rotation.py new file mode 100644 index 0000000..5594ff9 --- /dev/null +++ b/statsmodels/multivariate/factor_rotation/_analytic_rotation.py @@ -0,0 +1,156 @@ +# -*- coding: utf-8 -*- +""" +This file contains analytic implementations of rotation methods. +""" + +from __future__ import division +from __future__ import print_function + +import numpy as np +import scipy as sp + + +def target_rotation(A, H, full_rank=False): + r""" + Analytically performs orthogonal rotations towards a target matrix, + i.e., we minimize: + + .. math:: + \phi(L) =\frac{1}{2}\|AT-H\|^2. + + where :math:`T` is an orthogonal matrix. This problem is also known as + an orthogonal Procrustes problem. + + Under the assumption that :math:`A^*H` has full rank, the analytical + solution :math:`T` is given by: + + .. math:: + T = (A^*HH^*A)^{-\frac{1}{2}}A^*H, + + see Green (1952). In other cases the solution is given by :math:`T = UV`, + where :math:`U` and :math:`V` result from the singular value decomposition + of :math:`A^*H`: + + .. math:: + A^*H = U\Sigma V, + + see Schonemann (1966). + + Parameters + ---------- + A : numpy matrix (default None) + non rotated factors + H : numpy matrix + target matrix + full_rank : boolean (default FAlse) + if set to true full rank is assumed + + Returns + ------- + The matrix :math:`T`. + + References + ---------- + [1] Green (1952, Psychometrika) - The orthogonal approximation of an + oblique structure in factor analysis + + [2] Schonemann (1966) - A generalized solution of the orthogonal + procrustes problem + + [3] Gower, Dijksterhuis (2004) - Procustes problems + """ + ATH = A.T.dot(H) + if full_rank or np.linalg.matrix_rank(ATH) == A.shape[1]: + T = sp.linalg.fractional_matrix_power(ATH.dot(ATH.T), -1/2).dot(ATH) + else: + U, D, V = np.linalg.svd(ATH, full_matrices=False) + T = U.dot(V) + return T + + +def procrustes(A, H): + r""" + Analytically solves the following Procrustes problem: + + .. math:: + \phi(L) =\frac{1}{2}\|AT-H\|^2. + + (With no further conditions on :math:`H`) + + Under the assumption that :math:`A^*H` has full rank, the analytical + solution :math:`T` is given by: + + .. math:: + T = (A^*HH^*A)^{-\frac{1}{2}}A^*H, + + see Navarra, Simoncini (2010). + + Parameters + ---------- + A : numpy matrix + non rotated factors + H : numpy matrix + target matrix + full_rank : boolean (default False) + if set to true full rank is assumed + + Returns + ------- + The matrix :math:`T`. + + References + ---------- + [1] Navarra, Simoncini (2010) - A guide to emprirical orthogonal functions + for climate data analysis + """ + return np.linalg.inv(A.T.dot(A)).dot(A.T).dot(H) + + +def promax(A, k=2): + r""" + Performs promax rotation of the matrix :math:`A`. + + This method was not very clear to me from the literature, this + implementation is as I understand it should work. + + Promax rotation is performed in the following steps: + + * Deterine varimax rotated patterns :math:`V`. + + * Construct a rotation target matrix :math:`|V_{ij}|^k/V_{ij}` + + * Perform procrustes rotation towards the target to obtain T + + * Determine the patterns + + First, varimax rotation a target matrix :math:`H` is determined with + orthogonal varimax rotation. + Then, oblique target rotation is performed towards the target. + + Parameters + ---------- + A : numpy matrix + non rotated factors + k : float + parameter, should be positive + + References + ---------- + [1] Browne (2001) - An overview of analytic rotation in exploratory + factor analysis + + [2] Navarra, Simoncini (2010) - A guide to emprirical orthogonal functions + for climate data analysis + """ + assert k > 0 + # define rotation target using varimax rotation: + from ._wrappers import rotate_factors + V, T = rotate_factors(A, 'varimax') + H = np.abs(V)**k/V + # solve procrustes problem + S = procrustes(A, H) # np.linalg.inv(A.T.dot(A)).dot(A.T).dot(H); + # normalize + d = np.sqrt(np.diag(np.linalg.inv(S.T.dot(S)))) + D = np.diag(d) + T = np.linalg.inv(S.dot(D)).T + return A.dot(T), T diff --git a/statsmodels/multivariate/factor_rotation/_gpa_rotation.py b/statsmodels/multivariate/factor_rotation/_gpa_rotation.py new file mode 100644 index 0000000..1193340 --- /dev/null +++ b/statsmodels/multivariate/factor_rotation/_gpa_rotation.py @@ -0,0 +1,594 @@ +# -*- coding: utf-8 -*- +""" +This file contains a Python version of the gradient projection rotation +algorithms (GPA) developed by Bernaards, C.A. and Jennrich, R.I. +The code is based on code developed Bernaards, C.A. and Jennrich, R.I. +and is ported and made available with permission of the authors. + +References +---------- +[1] Bernaards, C.A. and Jennrich, R.I. (2005) Gradient Projection Algorithms +and Software for Arbitrary Rotation Criteria in Factor Analysis. Educational +and Psychological Measurement, 65 (5), 676-696. + +[2] Jennrich, R.I. (2001). A simple general procedure for orthogonal rotation. +Psychometrika, 66, 289-306. + +[3] Jennrich, R.I. (2002). A simple general method for oblique rotation. +Psychometrika, 67, 7-19. + +[4] http://www.stat.ucla.edu/research/gpa/matlab.net + +[5] http://www.stat.ucla.edu/research/gpa/GPderfree.txt +""" + +from __future__ import division +import numpy as np + + +def GPA(A, ff=None, vgQ=None, T=None, max_tries=501, + rotation_method='orthogonal', tol=1e-5): + r""" + The gradient projection algorithm (GPA) minimizes a target function + :math:`\phi(L)`, where :math:`L` is a matrix with rotated factors. + + For orthogonal rotation methods :math:`L=AT`, where :math:`T` is an + orthogonal matrix. For oblique rotation matrices :math:`L=A(T^*)^{-1}`, + where :math:`T` is a normal matrix, i.e., :math:`TT^*=T^*T`. Oblique + rotations relax the orthogonality constraint in order to gain simplicity + in the interpretation. + + Parameters + ---------- + A : numpy matrix + non rotated factors + T : numpy matrix (default identity matrix) + initial guess of rotation matrix + ff : function (defualt None) + criterion :math:`\phi` to optimize. Should have A, T, L as keyword + arguments + and mapping to a float. Only used (and required) if vgQ is not + provided. + vgQ : function (defualt None) + criterion :math:`\phi` to optimize and its derivative. Should have + A, T, L as keyword arguments and mapping to a tuple containing a + float and vector. Can be omitted if ff is provided. + max_tries : integer (default 501) + maximum number of iterations + rotation_method : string + should be one of {orthogonal, oblique} + tol : float + stop criterion, algorithm stops if Frobenius norm of gradient is + smaller then tol + """ + # pre processing + if rotation_method not in ['orthogonal', 'oblique']: + raise ValueError('rotation_method should be one of ' + '{orthogonal, oblique}') + if vgQ is None: + if ff is None: + raise ValueError('ff should be provided if vgQ is not') + derivative_free = True + Gff = lambda x: Gf(x, lambda y: ff(T=y, A=A, L=None)) + else: + derivative_free = False + if T is None: + T = np.eye(A.shape[1]) + # pre processing for iteration + al = 1 + table = [] + # pre processing for iteration: initialize f and G + if derivative_free: + f = ff(T=T, A=A, L=None) + G = Gff(T) + elif rotation_method == 'orthogonal': # and not derivative_free + L = A.dot(T) + f, Gq = vgQ(L=L) + G = (A.T).dot(Gq) + else: # i.e. rotation_method == 'oblique' and not derivative_free + Ti = np.linalg.inv(T) + L = A.dot(Ti.T) + f, Gq = vgQ(L=L) + G = -((L.T).dot(Gq).dot(Ti)).T + # iteration + for i_try in range(0, max_tries): + # determine Gp + if rotation_method == 'orthogonal': + M = (T.T).dot(G) + S = (M + M.T)/2 + Gp = G - T.dot(S) + else: # i.e. if rotation_method == 'oblique': + Gp = G-T.dot(np.diag(np.sum(T*G, axis=0))) + s = np.linalg.norm(Gp, 'fro') + table.append([i_try, f, np.log10(s), al]) + # if we are close stop + if s < tol: + break + # update T + al = 2*al + for i in range(11): + # determine Tt + X = T - al*Gp + if rotation_method == 'orthogonal': + U, D, V = np.linalg.svd(X, full_matrices=False) + Tt = U.dot(V) + else: # i.e. if rotation_method == 'oblique': + v = 1/np.sqrt(np.sum(X**2, axis=0)) + Tt = X.dot(np.diag(v)) + # calculate objective using Tt + if derivative_free: + ft = ff(T=Tt, A=A, L=None) + elif rotation_method == 'orthogonal': # and not derivative_free + L = A.dot(Tt) + ft, Gq = vgQ(L=L) + else: # i.e. rotation_method == 'oblique' and not derivative_free + Ti = np.linalg.inv(Tt) + L = A.dot(Ti.T) + ft, Gq = vgQ(L=L) + # if sufficient improvement in objective -> use this T + if ft < f-.5*s**2*al: + break + al = al/2 + # post processing for next iteration + T = Tt + f = ft + if derivative_free: + G = Gff(T) + elif rotation_method == 'orthogonal': # and not derivative_free + G = (A.T).dot(Gq) + else: # i.e. rotation_method == 'oblique' and not derivative_free + G = -((L.T).dot(Gq).dot(Ti)).T + # post processing + Th = T + Lh = rotateA(A, T, rotation_method=rotation_method) + Phi = (T.T).dot(T) + return Lh, Phi, Th, table + + +def Gf(T, ff): + """ + Subroutine for the gradient of f using numerical derivatives. + """ + k = T.shape[0] + ep = 1e-4 + G = np.zeros((k, k)) + for r in range(k): + for s in range(k): + dT = np.zeros((k, k)) + dT[r, s] = ep + G[r, s] = (ff(T+dT)-ff(T-dT))/(2*ep) + return G + + +def rotateA(A, T, rotation_method='orthogonal'): + r""" + For orthogonal rotation methods :math:`L=AT`, where :math:`T` is an + orthogonal matrix. For oblique rotation matrices :math:`L=A(T^*)^{-1}`, + where :math:`T` is a normal matrix, i.e., :math:`TT^*=T^*T`. Oblique + rotations relax the orthogonality constraint in order to gain simplicity + in the interpretation. + """ + if rotation_method == 'orthogonal': + L = A.dot(T) + elif rotation_method == 'oblique': + L = A.dot(np.linalg.inv(T.T)) + else: # i.e. if rotation_method == 'oblique': + raise ValueError('rotation_method should be one of ' + '{orthogonal, oblique}') + return L + + +def oblimin_objective(L=None, A=None, T=None, gamma=0, + rotation_method='orthogonal', + return_gradient=True): + r""" + Objective function for the oblimin family for orthogonal or + oblique rotation wich minimizes: + + .. math:: + \phi(L) = \frac{1}{4}(L\circ L,(I-\gamma C)(L\circ L)N), + + where :math:`L` is a :math:`p\times k` matrix, :math:`N` is + :math:`k\times k` + matrix with zeros on the diagonal and ones elsewhere, :math:`C` is a + :math:`p\times p` matrix with elements equal to :math:`1/p`, + :math:`(X,Y)=\operatorname{Tr}(X^*Y)` is the Frobenius norm and + :math:`\circ` + is the element-wise product or Hadamard product. + + The gradient is given by + + .. math:: + L\circ\left[(I-\gamma C) (L \circ L)N\right]. + + Either :math:`L` should be provided or :math:`A` and :math:`T` should be + provided. + + For orthogonal rotations :math:`L` satisfies + + .. math:: + L = AT, + + where :math:`T` is an orthogonal matrix. For oblique rotations :math:`L` + satisfies + + .. math:: + L = A(T^*)^{-1}, + + where :math:`T` is a normal matrix. + + The oblimin family is parametrized by the parameter :math:`\gamma`. For + orthogonal rotations: + + * :math:`\gamma=0` corresponds to quartimax, + * :math:`\gamma=\frac{1}{2}` corresponds to biquartimax, + * :math:`\gamma=1` corresponds to varimax, + * :math:`\gamma=\frac{1}{p}` corresponds to equamax. + For oblique rotations rotations: + + * :math:`\gamma=0` corresponds to quartimin, + * :math:`\gamma=\frac{1}{2}` corresponds to biquartimin. + + Parameters + ---------- + L : numpy matrix (default None) + rotated factors, i.e., :math:`L=A(T^*)^{-1}=AT` + A : numpy matrix (default None) + non rotated factors + T : numpy matrix (default None) + rotation matrix + gamma : float (default 0) + a parameter + rotation_method : string + should be one of {orthogonal, oblique} + return_gradient : boolean (default True) + toggles return of gradient + """ + if L is None: + assert(A is not None and T is not None) + L = rotateA(A, T, rotation_method=rotation_method) + p, k = L.shape + L2 = L**2 + N = np.ones((k, k))-np.eye(k) + if np.isclose(gamma, 0): + X = L2.dot(N) + else: + C = np.ones((p, p))/p + X = (np.eye(p) - gamma*C).dot(L2).dot(N) + phi = np.sum(L2*X)/4 + if return_gradient: + Gphi = L*X + return phi, Gphi + else: + return phi + + +def orthomax_objective(L=None, A=None, T=None, gamma=0, return_gradient=True): + r""" + Objective function for the orthomax family for orthogonal + rotation wich minimizes the following objective: + + .. math:: + \phi(L) = -\frac{1}{4}(L\circ L,(I-\gamma C)(L\circ L)), + + where :math:`0\leq\gamma\leq1`, :math:`L` is a :math:`p\times k` matrix, + :math:`C` is a :math:`p\times p` matrix with elements equal to + :math:`1/p`, + :math:`(X,Y)=\operatorname{Tr}(X^*Y)` is the Frobenius norm and + :math:`\circ` is the element-wise product or Hadamard product. + + Either :math:`L` should be provided or :math:`A` and :math:`T` should be + provided. + + For orthogonal rotations :math:`L` satisfies + + .. math:: + L = AT, + + where :math:`T` is an orthogonal matrix. + + The orthomax family is parametrized by the parameter :math:`\gamma`: + + * :math:`\gamma=0` corresponds to quartimax, + * :math:`\gamma=\frac{1}{2}` corresponds to biquartimax, + * :math:`\gamma=1` corresponds to varimax, + * :math:`\gamma=\frac{1}{p}` corresponds to equamax. + + Parameters + ---------- + L : numpy matrix (default None) + rotated factors, i.e., :math:`L=A(T^*)^{-1}=AT` + A : numpy matrix (default None) + non rotated factors + T : numpy matrix (default None) + rotation matrix + gamma : float (default 0) + a parameter + return_gradient : boolean (default True) + toggles return of gradient + """ + assert 0 <= gamma <= 1, "Gamma should be between 0 and 1" + if L is None: + assert(A is not None and T is not None) + L = rotateA(A, T, rotation_method='orthogonal') + p, k = L.shape + L2 = L**2 + if np.isclose(gamma, 0): + X = L2 + else: + C = np.ones((p, p))/p + X = (np.eye(p)-gamma*C).dot(L2) + phi = -np.sum(L2*X)/4 + if return_gradient: + Gphi = -L*X + return phi, Gphi + else: + return phi + + +def CF_objective(L=None, A=None, T=None, kappa=0, + rotation_method='orthogonal', + return_gradient=True): + r""" + Objective function for the Crawford-Ferguson family for orthogonal + and oblique rotation wich minimizes the following objective: + + .. math:: + \phi(L) =\frac{1-\kappa}{4} (L\circ L,(L\circ L)N) + -\frac{1}{4}(L\circ L,M(L\circ L)), + + where :math:`0\leq\kappa\leq1`, :math:`L` is a :math:`p\times k` matrix, + :math:`N` is :math:`k\times k` matrix with zeros on the diagonal and ones + elsewhere, + :math:`M` is :math:`p\times p` matrix with zeros on the diagonal and ones + elsewhere + :math:`(X,Y)=\operatorname{Tr}(X^*Y)` is the Frobenius norm and + :math:`\circ` is the element-wise product or Hadamard product. + + The gradient is given by + + .. math:: + d\phi(L) = (1-\kappa) L\circ\left[(L\circ L)N\right] + -\kappa L\circ \left[M(L\circ L)\right]. + + Either :math:`L` should be provided or :math:`A` and :math:`T` should be + provided. + + For orthogonal rotations :math:`L` satisfies + + .. math:: + L = AT, + + where :math:`T` is an orthogonal matrix. For oblique rotations :math:`L` + satisfies + + .. math:: + L = A(T^*)^{-1}, + + where :math:`T` is a normal matrix. + + For orthogonal rotations the oblimin (and orthomax) family of rotations is + equivalent to the Crawford-Ferguson family. To be more precise: + + * :math:`\kappa=0` corresponds to quartimax, + * :math:`\kappa=\frac{1}{p}` corresponds to variamx, + * :math:`\kappa=\frac{k-1}{p+k-2}` corresponds to parsimax, + * :math:`\kappa=1` corresponds to factor parsimony. + + Parameters + ---------- + L : numpy matrix (default None) + rotated factors, i.e., :math:`L=A(T^*)^{-1}=AT` + A : numpy matrix (default None) + non rotated factors + T : numpy matrix (default None) + rotation matrix + gamma : float (default 0) + a parameter + rotation_method : string + should be one of {orthogonal, oblique} + return_gradient : boolean (default True) + toggles return of gradient + """ + assert 0 <= kappa <= 1, "Kappa should be between 0 and 1" + if L is None: + assert(A is not None and T is not None) + L = rotateA(A, T, rotation_method=rotation_method) + p, k = L.shape + L2 = L**2 + X = None + if not np.isclose(kappa, 1): + N = np.ones((k, k)) - np.eye(k) + X = (1 - kappa)*L2.dot(N) + if not np.isclose(kappa, 0): + M = np.ones((p, p)) - np.eye(p) + if X is None: + X = kappa*M.dot(L2) + else: + X += kappa*M.dot(L2) + phi = np.sum(L2 * X) / 4 + if return_gradient: + Gphi = L*X + return phi, Gphi + else: + return phi + + +def vgQ_target(H, L=None, A=None, T=None, rotation_method='orthogonal'): + r""" + Subroutine for the value of vgQ using orthogonal or oblique rotation + towards a target matrix, i.e., we minimize: + + .. math:: + \phi(L) =\frac{1}{2}\|L-H\|^2 + + and the gradient is given by + + .. math:: + d\phi(L)=L-H. + + Either :math:`L` should be provided or :math:`A` and :math:`T` should be + provided. + + For orthogonal rotations :math:`L` satisfies + + .. math:: + L = AT, + + where :math:`T` is an orthogonal matrix. For oblique rotations :math:`L` + satisfies + + .. math:: + L = A(T^*)^{-1}, + + where :math:`T` is a normal matrix. + + Parameters + ---------- + H : numpy matrix + target matrix + L : numpy matrix (default None) + rotated factors, i.e., :math:`L=A(T^*)^{-1}=AT` + A : numpy matrix (default None) + non rotated factors + T : numpy matrix (default None) + rotation matrix + rotation_method : string + should be one of {orthogonal, oblique} + """ + if L is None: + assert(A is not None and T is not None) + L = rotateA(A, T, rotation_method=rotation_method) + q = np.linalg.norm(L-H, 'fro')**2 + Gq = 2*(L-H) + return q, Gq + + +def ff_target(H, L=None, A=None, T=None, rotation_method='orthogonal'): + r""" + Subroutine for the value of f using (orthogonal or oblique) rotation + towards a target matrix, i.e., we minimize: + + .. math:: + \phi(L) =\frac{1}{2}\|L-H\|^2. + + Either :math:`L` should be provided or :math:`A` and :math:`T` should be + provided. For orthogonal rotations :math:`L` satisfies + + .. math:: + L = AT, + + where :math:`T` is an orthogonal matrix. For oblique rotations + :math:`L` satisfies + + .. math:: + L = A(T^*)^{-1}, + + where :math:`T` is a normal matrix. + + Parameters + ---------- + H : numpy matrix + target matrix + L : numpy matrix (default None) + rotated factors, i.e., :math:`L=A(T^*)^{-1}=AT` + A : numpy matrix (default None) + non rotated factors + T : numpy matrix (default None) + rotation matrix + rotation_method : string + should be one of {orthogonal, oblique} + """ + if L is None: + assert(A is not None and T is not None) + L = rotateA(A, T, rotation_method=rotation_method) + return np.linalg.norm(L-H, 'fro')**2 + + +def vgQ_partial_target(H, W=None, L=None, A=None, T=None): + r""" + Subroutine for the value of vgQ using orthogonal rotation towards a partial + target matrix, i.e., we minimize: + + .. math:: + \phi(L) =\frac{1}{2}\|W\circ(L-H)\|^2, + + where :math:`\circ` is the element-wise product or Hadamard product and + :math:`W` is a matrix whose entries can only be one or zero. The gradient + is given by + + .. math:: + d\phi(L)=W\circ(L-H). + + Either :math:`L` should be provided or :math:`A` and :math:`T` should be + provided. + + For orthogonal rotations :math:`L` satisfies + + .. math:: + L = AT, + + where :math:`T` is an orthogonal matrix. + + Parameters + ---------- + H : numpy matrix + target matrix + W : numpy matrix (default matrix with equal weight one for all entries) + matrix with weights, entries can either be one or zero + L : numpy matrix (default None) + rotated factors, i.e., :math:`L=A(T^*)^{-1}=AT` + A : numpy matrix (default None) + non rotated factors + T : numpy matrix (default None) + rotation matrix + """ + if W is None: + return vgQ_target(H, L=L, A=A, T=T) + if L is None: + assert(A is not None and T is not None) + L = rotateA(A, T, rotation_method='orthogonal') + q = np.linalg.norm(W*(L-H), 'fro')**2 + Gq = 2*W*(L-H) + return q, Gq + + +def ff_partial_target(H, W=None, L=None, A=None, T=None): + r""" + Subroutine for the value of vgQ using orthogonal rotation towards a partial + target matrix, i.e., we minimize: + + .. math:: + \phi(L) =\frac{1}{2}\|W\circ(L-H)\|^2, + + where :math:`\circ` is the element-wise product or Hadamard product and + :math:`W` is a matrix whose entries can only be one or zero. Either + :math:`L` should be provided or :math:`A` and :math:`T` should be provided. + + For orthogonal rotations :math:`L` satisfies + + .. math:: + L = AT, + + where :math:`T` is an orthogonal matrix. + + Parameters + ---------- + H : numpy matrix + target matrix + W : numpy matrix (default matrix with equal weight one for all entries) + matrix with weights, entries can either be one or zero + L : numpy matrix (default None) + rotated factors, i.e., :math:`L=A(T^*)^{-1}=AT` + A : numpy matrix (default None) + non rotated factors + T : numpy matrix (default None) + rotation matrix + """ + if W is None: + return ff_target(H, L=L, A=A, T=T) + if L is None: + assert(A is not None and T is not None) + L = rotateA(A, T, rotation_method='orthogonal') + q = np.linalg.norm(W*(L-H), 'fro')**2 + return q diff --git a/statsmodels/multivariate/factor_rotation/_wrappers.py b/statsmodels/multivariate/factor_rotation/_wrappers.py new file mode 100644 index 0000000..43c07cb --- /dev/null +++ b/statsmodels/multivariate/factor_rotation/_wrappers.py @@ -0,0 +1,354 @@ +# -*- coding: utf-8 -*- + +from __future__ import division, print_function + +from ._analytic_rotation import target_rotation +from ._gpa_rotation import oblimin_objective, orthomax_objective, CF_objective +from ._gpa_rotation import ff_partial_target, ff_target +from ._gpa_rotation import vgQ_partial_target, vgQ_target +from ._gpa_rotation import rotateA, GPA + +__all__ = [] + + +def rotate_factors(A, method, *method_args, **algorithm_kwargs): + r""" + Subroutine for orthogonal and oblique rotation of the matrix :math:`A`. + For orthogonal rotations :math:`A` is rotated to :math:`L` according to + + .. math:: + + L = AT, + + where :math:`T` is an orthogonal matrix. And, for oblique rotations + :math:`A` is rotated to :math:`L` according to + + .. math:: + + L = A(T^*)^{-1}, + + where :math:`T` is a normal matrix. + + Parameters + ---------- + A : numpy matrix (default None) + non rotated factors + method : string + should be one of the methods listed below + method_args : list + additional arguments that should be provided with each method + algorithm_kwargs : dictionary + algorithm : string (default gpa) + should be one of: + + * 'gpa': a numerical method + * 'gpa_der_free': a derivative free numerical method + * 'analytic' : an analytic method + + Depending on the algorithm, there are algorithm specific keyword + arguments. For the gpa and gpa_der_free, the following + keyword arguments are available: + + max_tries : integer (default 501) + maximum number of iterations + + tol : float + stop criterion, algorithm stops if Frobenius norm of gradient is + smaller then tol + + For analytic, the supporeted arguments depend on the method, see above. + + See the lower level functions for more details. + + Returns + ------- + The tuple :math:`(L,T)` + + Notes + ----- + What follows is a list of available methods. Depending on the method + additional argument are required and different algorithms + are available. The algorithm_kwargs are additional keyword arguments + passed to the selected algorithm (see the parameters section). + Unless stated otherwise, only the gpa and + gpa_der_free algorithm are available. + + Below, + + * :math:`L` is a :math:`p\times k` matrix; + * :math:`N` is :math:`k\times k` matrix with zeros on the diagonal and ones + elsewhere; + * :math:`M` is :math:`p\times p` matrix with zeros on the diagonal and ones + elsewhere; + * :math:`C` is a :math:`p\times p` matrix with elements equal to + :math:`1/p`; + * :math:`(X,Y)=\operatorname{Tr}(X^*Y)` is the Frobenius norm; + * :math:`\circ` is the element-wise product or Hadamard product. + + oblimin : orthogonal or oblique rotation that minimizes + .. math:: + \phi(L) = \frac{1}{4}(L\circ L,(I-\gamma C)(L\circ L)N). + + For orthogonal rotations: + + * :math:`\gamma=0` corresponds to quartimax, + * :math:`\gamma=\frac{1}{2}` corresponds to biquartimax, + * :math:`\gamma=1` corresponds to varimax, + * :math:`\gamma=\frac{1}{p}` corresponds to equamax. + + For oblique rotations rotations: + + * :math:`\gamma=0` corresponds to quartimin, + * :math:`\gamma=\frac{1}{2}` corresponds to biquartimin. + + method_args: + + gamma : float + oblimin family parameter + rotation_method : string + should be one of {orthogonal, oblique} + + orthomax : orthogonal rotation that minimizes + + .. math:: + \phi(L) = -\frac{1}{4}(L\circ L,(I-\gamma C)(L\circ L)), + + where :math:`0\leq\gamma\leq1`. The orthomax family is equivalent to + the oblimin family (when restricted to orthogonal rotations). + Furthermore, + + * :math:`\gamma=0` corresponds to quartimax, + * :math:`\gamma=\frac{1}{2}` corresponds to biquartimax, + * :math:`\gamma=1` corresponds to varimax, + * :math:`\gamma=\frac{1}{p}` corresponds to equamax. + + method_args: + + gamma : float (between 0 and 1) + orthomax family parameter + + CF : Crawford-Ferguson family for orthogonal and oblique rotation which + minimizes: + + .. math:: + + \phi(L) =\frac{1-\kappa}{4} (L\circ L,(L\circ L)N) + -\frac{1}{4}(L\circ L,M(L\circ L)), + + where :math:`0\leq\kappa\leq1`. For orthogonal rotations the oblimin + (and orthomax) family of rotations is equivalent to the + Crawford-Ferguson family. + To be more precise: + + * :math:`\kappa=0` corresponds to quartimax, + * :math:`\kappa=\frac{1}{p}` corresponds to varimax, + * :math:`\kappa=\frac{k-1}{p+k-2}` corresponds to parsimax, + * :math:`\kappa=1` corresponds to factor parsimony. + + method_args: + + kappa : float (between 0 and 1) + Crawford-Ferguson family parameter + rotation_method : string + should be one of {orthogonal, oblique} + + quartimax : orthogonal rotation method + minimizes the orthomax objective with :math:`\gamma=0` + + biquartimax : orthogonal rotation method + minimizes the orthomax objective with :math:`\gamma=\frac{1}{2}` + + varimax : orthogonal rotation method + minimizes the orthomax objective with :math:`\gamma=1` + + equamax : orthogonal rotation method + minimizes the orthomax objective with :math:`\gamma=\frac{1}{p}` + + parsimax : orthogonal rotation method + minimizes the Crawford-Ferguson family objective with + :math:`\kappa=\frac{k-1}{p+k-2}` + + parsimony : orthogonal rotation method + minimizes the Crawford-Ferguson family objective with :math:`\kappa=1` + + quartimin : oblique rotation method that minimizes + minimizes the oblimin objective with :math:`\gamma=0` + + quartimin : oblique rotation method that minimizes + minimizes the oblimin objective with :math:`\gamma=\frac{1}{2}` + + target : orthogonal or oblique rotation that rotates towards a target + + matrix : math:`H` by minimizing the objective + + .. math:: + + \phi(L) =\frac{1}{2}\|L-H\|^2. + + method_args: + + H : numpy matrix + target matrix + rotation_method : string + should be one of {orthogonal, oblique} + + For orthogonal rotations the algorithm can be set to analytic in which + case the following keyword arguments are available: + + full_rank : boolean (default False) + if set to true full rank is assumed + + partial_target : orthogonal (default) or oblique rotation that partially + rotates towards a target matrix :math:`H` by minimizing the objective: + + .. math:: + + \phi(L) =\frac{1}{2}\|W\circ(L-H)\|^2. + + method_args: + + H : numpy matrix + target matrix + W : numpy matrix (default matrix with equal weight one for all entries) + matrix with weights, entries can either be one or zero + + Examples + -------- + >>> A = np.random.randn(8,2) + >>> L, T = rotate_factors(A,'varimax') + >>> np.allclose(L,A.dot(T)) + >>> L, T = rotate_factors(A,'orthomax',0.5) + >>> np.allclose(L,A.dot(T)) + >>> L, T = rotate_factors(A,'quartimin',0.5) + >>> np.allclose(L,A.dot(np.linalg.inv(T.T))) + """ + if 'algorithm' in algorithm_kwargs: + algorithm = algorithm_kwargs['algorithm'] + algorithm_kwargs.pop('algorithm') + else: + algorithm = 'gpa' + assert not ('rotation_method' in algorithm_kwargs), ( + 'rotation_method cannot be provided as keyword argument') + L = None + T = None + ff = None + vgQ = None + p, k = A.shape + # set ff or vgQ to appropriate objective function, compute solution using + # recursion or analytically compute solution + if method == 'orthomax': + assert len(method_args) == 1, ('Only %s family parameter should be ' + 'provided' % method) + rotation_method = 'orthogonal' + gamma = method_args[0] + if algorithm == 'gpa': + vgQ = lambda L=None, A=None, T=None: orthomax_objective( + L=L, A=A, T=T, gamma=gamma, return_gradient=True) + elif algorithm == 'gpa_der_free': + ff = lambda L=None, A=None, T=None: orthomax_objective( + L=L, A=A, T=T, gamma=gamma, return_gradient=False) + else: + raise ValueError('Algorithm %s is not possible for %s ' + 'rotation' % (algorithm, method)) + elif method == 'oblimin': + assert len(method_args) == 2, ('Both %s family parameter and ' + 'rotation_method should be ' + 'provided' % method) + rotation_method = method_args[1] + assert rotation_method in ['orthogonal', 'oblique'], ( + 'rotation_method should be one of {orthogonal, oblique}') + gamma = method_args[0] + if algorithm == 'gpa': + vgQ = lambda L=None, A=None, T=None: oblimin_objective( + L=L, A=A, T=T, gamma=gamma, return_gradient=True) + elif algorithm == 'gpa_der_free': + ff = lambda L=None, A=None, T=None: oblimin_objective( + L=L, A=A, T=T, gamma=gamma, rotation_method=rotation_method, + return_gradient=False) + else: + raise ValueError('Algorithm %s is not possible for %s ' + 'rotation' % (algorithm, method)) + elif method == 'CF': + assert len(method_args) == 2, ('Both %s family parameter and ' + 'rotation_method should be provided' + % method) + rotation_method = method_args[1] + assert rotation_method in ['orthogonal', 'oblique'], ( + 'rotation_method should be one of {orthogonal, oblique}') + kappa = method_args[0] + if algorithm == 'gpa': + vgQ = lambda L=None, A=None, T=None: CF_objective( + L=L, A=A, T=T, kappa=kappa, rotation_method=rotation_method, + return_gradient=True) + elif algorithm == 'gpa_der_free': + ff = lambda L=None, A=None, T=None: CF_objective( + L=L, A=A, T=T, kappa=kappa, rotation_method=rotation_method, + return_gradient=False) + else: + raise ValueError('Algorithm %s is not possible for %s ' + 'rotation' % (algorithm, method)) + elif method == 'quartimax': + return rotate_factors(A, 'orthomax', 0, **algorithm_kwargs) + elif method == 'biquartimax': + return rotate_factors(A, 'orthomax', 0.5, **algorithm_kwargs) + elif method == 'varimax': + return rotate_factors(A, 'orthomax', 1, **algorithm_kwargs) + elif method == 'equamax': + return rotate_factors(A, 'orthomax', 1/p, **algorithm_kwargs) + elif method == 'parsimax': + return rotate_factors(A, 'CF', (k-1)/(p+k-2), + 'orthogonal', **algorithm_kwargs) + elif method == 'parsimony': + return rotate_factors(A, 'CF', 1, 'orthogonal', **algorithm_kwargs) + elif method == 'quartimin': + return rotate_factors(A, 'oblimin', 0, 'oblique', **algorithm_kwargs) + elif method == 'biquartimin': + return rotate_factors(A, 'oblimin', 0.5, 'oblique', **algorithm_kwargs) + elif method == 'target': + assert len(method_args) == 2, ( + 'only the rotation target and orthogonal/oblique should be provide' + ' for %s rotation' % method) + H = method_args[0] + rotation_method = method_args[1] + assert rotation_method in ['orthogonal', 'oblique'], ( + 'rotation_method should be one of {orthogonal, oblique}') + if algorithm == 'gpa': + vgQ = lambda L=None, A=None, T=None: vgQ_target( + H, L=L, A=A, T=T, rotation_method=rotation_method) + elif algorithm == 'gpa_der_free': + ff = lambda L=None, A=None, T=None: ff_target( + H, L=L, A=A, T=T, rotation_method=rotation_method) + elif algorithm == 'analytic': + assert rotation_method == 'orthogonal', ( + 'For analytic %s rotation only orthogonal rotation is ' + 'supported') + T = target_rotation(A, H, **algorithm_kwargs) + else: + raise ValueError('Algorithm %s is not possible for %s rotation' + % (algorithm, method)) + elif method == 'partial_target': + assert len(method_args) == 2, ('2 additional arguments are expected ' + 'for %s rotation' % method) + H = method_args[0] + W = method_args[1] + rotation_method = 'orthogonal' + if algorithm == 'gpa': + vgQ = lambda L=None, A=None, T=None: vgQ_partial_target( + H, W=W, L=L, A=A, T=T) + elif algorithm == 'gpa_der_free': + ff = lambda L=None, A=None, T=None: ff_partial_target( + H, W=W, L=L, A=A, T=T) + else: + raise ValueError('Algorithm %s is not possible for %s ' + 'rotation' % (algorithm, method)) + else: + raise ValueError('Invalid method') + # compute L and T if not already done + if T is None: + L, phi, T, table = GPA(A, vgQ=vgQ, ff=ff, + rotation_method=rotation_method, + **algorithm_kwargs) + if L is None: + assert T is not None, 'Cannot compute L without T' + L = rotateA(A, T, rotation_method=rotation_method) + return L, T diff --git a/statsmodels/multivariate/factor_rotation/tests/__init__.py b/statsmodels/multivariate/factor_rotation/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/multivariate/factor_rotation/tests/test_rotation.py b/statsmodels/multivariate/factor_rotation/tests/test_rotation.py new file mode 100644 index 0000000..3f33d50 --- /dev/null +++ b/statsmodels/multivariate/factor_rotation/tests/test_rotation.py @@ -0,0 +1,586 @@ +from __future__ import division + +import unittest +import numpy as np + +from statsmodels.multivariate.factor_rotation._wrappers import rotate_factors +from statsmodels.multivariate.factor_rotation._gpa_rotation import ( + ff_partial_target, vgQ_partial_target, ff_target, vgQ_target, CF_objective, + orthomax_objective, oblimin_objective, GPA) +from statsmodels.multivariate.factor_rotation._analytic_rotation import ( + target_rotation) + + +class TestAnalyticRotation(unittest.TestCase): + @staticmethod + def str2matrix(A): + A = A.lstrip().rstrip().split('\n') + A = np.array([row.split() for row in A]).astype(np.float) + return A + + def test_target_rotation(self): + """ + Rotation towards target matrix example + http://www.stat.ucla.edu/research/gpa + """ + A = self.str2matrix(""" + .830 -.396 + .818 -.469 + .777 -.470 + .798 -.401 + .786 .500 + .672 .458 + .594 .444 + .647 .333 + """) + H = self.str2matrix(""" + .8 -.3 + .8 -.4 + .7 -.4 + .9 -.4 + .8 .5 + .6 .4 + .5 .4 + .6 .3 + """) + T = target_rotation(A, H) + L = A.dot(T) + L_required = self.str2matrix(""" + 0.84168 -0.37053 + 0.83191 -0.44386 + 0.79096 -0.44611 + 0.80985 -0.37650 + 0.77040 0.52371 + 0.65774 0.47826 + 0.58020 0.46189 + 0.63656 0.35255 + """) + self.assertTrue(np.allclose(L, L_required, atol=1e-05)) + T = target_rotation(A, H, full_rank=True) + L = A.dot(T) + self.assertTrue(np.allclose(L, L_required, atol=1e-05)) + + def test_orthogonal_target(self): + """ + Rotation towards target matrix example + http://www.stat.ucla.edu/research/gpa + """ + A = self.str2matrix(""" + .830 -.396 + .818 -.469 + .777 -.470 + .798 -.401 + .786 .500 + .672 .458 + .594 .444 + .647 .333 + """) + H = self.str2matrix(""" + .8 -.3 + .8 -.4 + .7 -.4 + .9 -.4 + .8 .5 + .6 .4 + .5 .4 + .6 .3 + """) + vgQ = lambda L=None, A=None, T=None: vgQ_target(H, L=L, A=A, T=T) + L, phi, T, table = GPA(A, vgQ=vgQ, rotation_method='orthogonal') + T_analytic = target_rotation(A, H) + self.assertTrue(np.allclose(T, T_analytic, atol=1e-05)) + + +class TestGPARotation(unittest.TestCase): + + @staticmethod + def str2matrix(A): + A = A.lstrip().rstrip().split('\n') + A = np.array([row.split() for row in A]).astype(np.float) + return A + + @classmethod + def get_A(cls): + return cls.str2matrix(""" + .830 -.396 + .818 -.469 + .777 -.470 + .798 -.401 + .786 .500 + .672 .458 + .594 .444 + .647 .333 + """) + + @classmethod + def get_quartimin_example(cls): + A = cls.get_A() + table_required = cls.str2matrix(""" + 0.00000 0.42806 -0.46393 1.00000 + 1.00000 0.41311 -0.57313 0.25000 + 2.00000 0.38238 -0.36652 0.50000 + 3.00000 0.31850 -0.21011 0.50000 + 4.00000 0.20937 -0.13838 0.50000 + 5.00000 0.12379 -0.35583 0.25000 + 6.00000 0.04289 -0.53244 0.50000 + 7.00000 0.01098 -0.86649 0.50000 + 8.00000 0.00566 -1.65798 0.50000 + 9.00000 0.00558 -2.13212 0.25000 + 10.00000 0.00557 -2.49020 0.25000 + 11.00000 0.00557 -2.84585 0.25000 + 12.00000 0.00557 -3.20320 0.25000 + 13.00000 0.00557 -3.56143 0.25000 + 14.00000 0.00557 -3.92005 0.25000 + 15.00000 0.00557 -4.27885 0.25000 + 16.00000 0.00557 -4.63772 0.25000 + 17.00000 0.00557 -4.99663 0.25000 + 18.00000 0.00557 -5.35555 0.25000 + """) + L_required = cls.str2matrix(""" + 0.891822 0.056015 + 0.953680 -0.023246 + 0.929150 -0.046503 + 0.876683 0.033658 + 0.013701 0.925000 + -0.017265 0.821253 + -0.052445 0.764953 + 0.085890 0.683115 + """) + return A, table_required, L_required + + @classmethod + def get_biquartimin_example(cls): + A = cls.get_A() + table_required = cls.str2matrix(""" + 0.00000 0.21632 -0.54955 1.00000 + 1.00000 0.19519 -0.46174 0.50000 + 2.00000 0.09479 -0.16365 1.00000 + 3.00000 -0.06302 -0.32096 0.50000 + 4.00000 -0.21304 -0.46562 1.00000 + 5.00000 -0.33199 -0.33287 1.00000 + 6.00000 -0.35108 -0.63990 0.12500 + 7.00000 -0.35543 -1.20916 0.12500 + 8.00000 -0.35568 -2.61213 0.12500 + 9.00000 -0.35568 -2.97910 0.06250 + 10.00000 -0.35568 -3.32645 0.06250 + 11.00000 -0.35568 -3.66021 0.06250 + 12.00000 -0.35568 -3.98564 0.06250 + 13.00000 -0.35568 -4.30635 0.06250 + 14.00000 -0.35568 -4.62451 0.06250 + 15.00000 -0.35568 -4.94133 0.06250 + 16.00000 -0.35568 -5.25745 0.06250 + """) + L_required = cls.str2matrix(""" + 1.01753 -0.13657 + 1.11338 -0.24643 + 1.09200 -0.26890 + 1.00676 -0.16010 + -0.26534 1.11371 + -0.26972 0.99553 + -0.29341 0.93561 + -0.10806 0.80513 + """) + return A, table_required, L_required + + @classmethod + def get_biquartimin_example_derivative_free(cls): + A = cls.get_A() + table_required = cls.str2matrix(""" + 0.00000 0.21632 -0.54955 1.00000 + 1.00000 0.19519 -0.46174 0.50000 + 2.00000 0.09479 -0.16365 1.00000 + 3.00000 -0.06302 -0.32096 0.50000 + 4.00000 -0.21304 -0.46562 1.00000 + 5.00000 -0.33199 -0.33287 1.00000 + 6.00000 -0.35108 -0.63990 0.12500 + 7.00000 -0.35543 -1.20916 0.12500 + 8.00000 -0.35568 -2.61213 0.12500 + 9.00000 -0.35568 -2.97910 0.06250 + 10.00000 -0.35568 -3.32645 0.06250 + 11.00000 -0.35568 -3.66021 0.06250 + 12.00000 -0.35568 -3.98564 0.06250 + 13.00000 -0.35568 -4.30634 0.06250 + 14.00000 -0.35568 -4.62451 0.06250 + 15.00000 -0.35568 -4.94133 0.06250 + 16.00000 -0.35568 -6.32435 0.12500 + """) + L_required = cls.str2matrix(""" + 1.01753 -0.13657 + 1.11338 -0.24643 + 1.09200 -0.26890 + 1.00676 -0.16010 + -0.26534 1.11371 + -0.26972 0.99553 + -0.29342 0.93561 + -0.10806 0.80513 + """) + return A, table_required, L_required + + @classmethod + def get_quartimax_example_derivative_free(cls): + A = cls.get_A() + table_required = cls.str2matrix(""" + 0.00000 -0.72073 -0.65498 1.00000 + 1.00000 -0.88561 -0.34614 2.00000 + 2.00000 -1.01992 -1.07152 1.00000 + 3.00000 -1.02237 -1.51373 0.50000 + 4.00000 -1.02269 -1.96205 0.50000 + 5.00000 -1.02273 -2.41116 0.50000 + 6.00000 -1.02273 -2.86037 0.50000 + 7.00000 -1.02273 -3.30959 0.50000 + 8.00000 -1.02273 -3.75881 0.50000 + 9.00000 -1.02273 -4.20804 0.50000 + 10.00000 -1.02273 -4.65726 0.50000 + 11.00000 -1.02273 -5.10648 0.50000 + """) + L_required = cls.str2matrix(""" + 0.89876 0.19482 + 0.93394 0.12974 + 0.90213 0.10386 + 0.87651 0.17128 + 0.31558 0.87647 + 0.25113 0.77349 + 0.19801 0.71468 + 0.30786 0.65933 + """) + return A, table_required, L_required + + def test_orthomax(self): + """ + Quartimax example + http://www.stat.ucla.edu/research/gpa + """ + A = self.get_A() + vgQ = lambda L=None, A=None, T=None: orthomax_objective( + L=L, A=A, T=T, gamma=0, return_gradient=True) + L, phi, T, table = GPA(A, vgQ=vgQ, rotation_method='orthogonal') + table_required = self.str2matrix(""" + 0.00000 -0.72073 -0.65498 1.00000 + 1.00000 -0.88561 -0.34614 2.00000 + 2.00000 -1.01992 -1.07152 1.00000 + 3.00000 -1.02237 -1.51373 0.50000 + 4.00000 -1.02269 -1.96205 0.50000 + 5.00000 -1.02273 -2.41116 0.50000 + 6.00000 -1.02273 -2.86037 0.50000 + 7.00000 -1.02273 -3.30959 0.50000 + 8.00000 -1.02273 -3.75881 0.50000 + 9.00000 -1.02273 -4.20804 0.50000 + 10.00000 -1.02273 -4.65726 0.50000 + 11.00000 -1.02273 -5.10648 0.50000 + """) + L_required = self.str2matrix(""" + 0.89876 0.19482 + 0.93394 0.12974 + 0.90213 0.10386 + 0.87651 0.17128 + 0.31558 0.87647 + 0.25113 0.77349 + 0.19801 0.71468 + 0.30786 0.65933 + """) + self.assertTrue(np.allclose(table, table_required, atol=1e-05)) + self.assertTrue(np.allclose(L, L_required, atol=1e-05)) + # oblimin criterion gives same result + vgQ = lambda L=None, A=None, T=None: oblimin_objective( + L=L, A=A, T=T, gamma=0, rotation_method='orthogonal', + return_gradient=True) + L_oblimin, phi2, T2, table2 = GPA(A, vgQ=vgQ, + rotation_method='orthogonal') + self.assertTrue(np.allclose(L, L_oblimin, atol=1e-05)) + # derivative free quartimax + out = self.get_quartimax_example_derivative_free() + A, table_required, L_required = out + ff = lambda L=None, A=None, T=None: orthomax_objective( + L=L, A=A, T=T, gamma=0, return_gradient=False) + L, phi, T, table = GPA(A, ff=ff, rotation_method='orthogonal') + self.assertTrue(np.allclose(table, table_required, atol=1e-05)) + self.assertTrue(np.allclose(L, L_required, atol=1e-05)) + + def test_equivalence_orthomax_oblimin(self): + """ + These criteria should be equivalent when restricted to orthogonal + rotation. + See Hartman 1976 page 299. + """ + A = self.get_A() + gamma = 0 # quartimax + vgQ = lambda L=None, A=None, T=None: orthomax_objective( + L=L, A=A, T=T, gamma=gamma, return_gradient=True) + L_orthomax, phi, T, table = GPA( + A, vgQ=vgQ, rotation_method='orthogonal') + vgQ = lambda L=None, A=None, T=None: oblimin_objective( + L=L, A=A, T=T, gamma=gamma, rotation_method='orthogonal', + return_gradient=True) + L_oblimin, phi2, T2, table2 = GPA(A, vgQ=vgQ, + rotation_method='orthogonal') + self.assertTrue(np.allclose(L_orthomax, L_oblimin, atol=1e-05)) + gamma = 1 # varimax + vgQ = lambda L=None, A=None, T=None: orthomax_objective( + L=L, A=A, T=T, gamma=gamma, return_gradient=True) + L_orthomax, phi, T, table = GPA( + A, vgQ=vgQ, rotation_method='orthogonal') + vgQ = lambda L=None, A=None, T=None: oblimin_objective( + L=L, A=A, T=T, gamma=gamma, rotation_method='orthogonal', + return_gradient=True) + L_oblimin, phi2, T2, table2 = GPA( + A, vgQ=vgQ, rotation_method='orthogonal') + self.assertTrue(np.allclose(L_orthomax, L_oblimin, atol=1e-05)) + + def test_orthogonal_target(self): + """ + Rotation towards target matrix example + http://www.stat.ucla.edu/research/gpa + """ + A = self.get_A() + H = self.str2matrix(""" + .8 -.3 + .8 -.4 + .7 -.4 + .9 -.4 + .8 .5 + .6 .4 + .5 .4 + .6 .3 + """) + vgQ = lambda L=None, A=None, T=None: vgQ_target(H, L=L, A=A, T=T) + L, phi, T, table = GPA(A, vgQ=vgQ, rotation_method='orthogonal') + table_required = self.str2matrix(""" + 0.00000 0.05925 -0.61244 1.00000 + 1.00000 0.05444 -1.14701 0.12500 + 2.00000 0.05403 -1.68194 0.12500 + 3.00000 0.05399 -2.21689 0.12500 + 4.00000 0.05399 -2.75185 0.12500 + 5.00000 0.05399 -3.28681 0.12500 + 6.00000 0.05399 -3.82176 0.12500 + 7.00000 0.05399 -4.35672 0.12500 + 8.00000 0.05399 -4.89168 0.12500 + 9.00000 0.05399 -5.42664 0.12500 + """) + L_required = self.str2matrix(""" + 0.84168 -0.37053 + 0.83191 -0.44386 + 0.79096 -0.44611 + 0.80985 -0.37650 + 0.77040 0.52371 + 0.65774 0.47826 + 0.58020 0.46189 + 0.63656 0.35255 + """) + self.assertTrue(np.allclose(table, table_required, atol=1e-05)) + self.assertTrue(np.allclose(L, L_required, atol=1e-05)) + ff = lambda L=None, A=None, T=None: ff_target(H, L=L, A=A, T=T) + L2, phi, T2, table = GPA(A, ff=ff, rotation_method='orthogonal') + self.assertTrue(np.allclose(L, L2, atol=1e-05)) + self.assertTrue(np.allclose(T, T2, atol=1e-05)) + vgQ = lambda L=None, A=None, T=None: vgQ_target( + H, L=L, A=A, T=T, rotation_method='oblique') + L, phi, T, table = GPA(A, vgQ=vgQ, rotation_method='oblique') + ff = lambda L=None, A=None, T=None: ff_target( + H, L=L, A=A, T=T, rotation_method='oblique') + L2, phi, T2, table = GPA(A, ff=ff, rotation_method='oblique') + self.assertTrue(np.allclose(L, L2, atol=1e-05)) + self.assertTrue(np.allclose(T, T2, atol=1e-05)) + + def test_orthogonal_partial_target(self): + """ + Rotation towards target matrix example + http://www.stat.ucla.edu/research/gpa + """ + A = self.get_A() + H = self.str2matrix(""" + .8 -.3 + .8 -.4 + .7 -.4 + .9 -.4 + .8 .5 + .6 .4 + .5 .4 + .6 .3 + """) + W = self.str2matrix(""" + 1 0 + 0 1 + 0 0 + 1 1 + 1 0 + 1 0 + 0 1 + 1 0 + """) + vgQ = lambda L=None, A=None, T=None: vgQ_partial_target( + H, W, L=L, A=A, T=T) + L, phi, T, table = GPA(A, vgQ=vgQ, rotation_method='orthogonal') + table_required = self.str2matrix(""" + 0.00000 0.02559 -0.84194 1.00000 + 1.00000 0.02203 -1.27116 0.25000 + 2.00000 0.02154 -1.71198 0.25000 + 3.00000 0.02148 -2.15713 0.25000 + 4.00000 0.02147 -2.60385 0.25000 + 5.00000 0.02147 -3.05114 0.25000 + 6.00000 0.02147 -3.49863 0.25000 + 7.00000 0.02147 -3.94619 0.25000 + 8.00000 0.02147 -4.39377 0.25000 + 9.00000 0.02147 -4.84137 0.25000 + 10.00000 0.02147 -5.28897 0.25000 + """) + L_required = self.str2matrix(""" + 0.84526 -0.36228 + 0.83621 -0.43571 + 0.79528 -0.43836 + 0.81349 -0.36857 + 0.76525 0.53122 + 0.65303 0.48467 + 0.57565 0.46754 + 0.63308 0.35876 + """) + self.assertTrue(np.allclose(table, table_required, atol=1e-05)) + self.assertTrue(np.allclose(L, L_required, atol=1e-05)) + ff = lambda L=None, A=None, T=None: ff_partial_target( + H, W, L=L, A=A, T=T) + L2, phi, T2, table = GPA(A, ff=ff, rotation_method='orthogonal') + self.assertTrue(np.allclose(L, L2, atol=1e-05)) + self.assertTrue(np.allclose(T, T2, atol=1e-05)) + + def test_oblimin(self): + # quartimin + A, table_required, L_required = self.get_quartimin_example() + vgQ = lambda L=None, A=None, T=None: oblimin_objective( + L=L, A=A, T=T, gamma=0, rotation_method='oblique') + L, phi, T, table = GPA(A, vgQ=vgQ, rotation_method='oblique') + self.assertTrue(np.allclose(table, table_required, atol=1e-05)) + self.assertTrue(np.allclose(L, L_required, atol=1e-05)) + # quartimin derivative free + ff = lambda L=None, A=None, T=None: oblimin_objective( + L=L, A=A, T=T, gamma=0, rotation_method='oblique', + return_gradient=False) + L, phi, T, table = GPA(A, ff=ff, rotation_method='oblique') + self.assertTrue(np.allclose(L, L_required, atol=1e-05)) + self.assertTrue(np.allclose(table, table_required, atol=1e-05)) + # biquartimin + A, table_required, L_required = self.get_biquartimin_example() + vgQ = lambda L=None, A=None, T=None: oblimin_objective( + L=L, A=A, T=T, gamma=1/2, rotation_method='oblique') + L, phi, T, table = GPA(A, vgQ=vgQ, rotation_method='oblique') + self.assertTrue(np.allclose(table, table_required, atol=1e-05)) + self.assertTrue(np.allclose(L, L_required, atol=1e-05)) + # quartimin derivative free + out = self.get_biquartimin_example_derivative_free() + A, table_required, L_required = out + ff = lambda L=None, A=None, T=None: oblimin_objective( + L=L, A=A, T=T, gamma=1/2, rotation_method='oblique', + return_gradient=False) + L, phi, T, table = GPA(A, ff=ff, rotation_method='oblique') + self.assertTrue(np.allclose(L, L_required, atol=1e-05)) + self.assertTrue(np.allclose(table, table_required, atol=1e-05)) + + def test_CF(self): + # quartimax + out = self.get_quartimax_example_derivative_free() + A, table_required, L_required = out + vgQ = lambda L=None, A=None, T=None: CF_objective( + L=L, A=A, T=T, kappa=0, rotation_method='orthogonal', + return_gradient=True) + L, phi, T, table = GPA(A, vgQ=vgQ, rotation_method='orthogonal') + self.assertTrue(np.allclose(L, L_required, atol=1e-05)) + # quartimax derivative free + ff = lambda L=None, A=None, T=None: CF_objective( + L=L, A=A, T=T, kappa=0, rotation_method='orthogonal', + return_gradient=False) + L, phi, T, table = GPA(A, ff=ff, rotation_method='orthogonal') + self.assertTrue(np.allclose(L, L_required, atol=1e-05)) + # varimax + p, k = A.shape + vgQ = lambda L=None, A=None, T=None: orthomax_objective( + L=L, A=A, T=T, gamma=1, return_gradient=True) + L_vm, phi, T, table = GPA(A, vgQ=vgQ, rotation_method='orthogonal') + vgQ = lambda L=None, A=None, T=None: CF_objective( + L=L, A=A, T=T, kappa=1/p, rotation_method='orthogonal', + return_gradient=True) + L_CF, phi, T, table = GPA(A, vgQ=vgQ, rotation_method='orthogonal') + ff = lambda L=None, A=None, T=None: CF_objective( + L=L, A=A, T=T, kappa=1/p, rotation_method='orthogonal', + return_gradient=False) + L_CF_df, phi, T, table = GPA(A, ff=ff, rotation_method='orthogonal') + self.assertTrue(np.allclose(L_vm, L_CF, atol=1e-05)) + self.assertTrue(np.allclose(L_CF, L_CF_df, atol=1e-05)) + + +class TestWrappers(unittest.TestCase): + @staticmethod + def str2matrix(A): + A = A.lstrip().rstrip().split('\n') + A = np.array([row.split() for row in A]).astype(np.float) + return A + + def get_A(self): + return self.str2matrix(""" + .830 -.396 + .818 -.469 + .777 -.470 + .798 -.401 + .786 .500 + .672 .458 + .594 .444 + .647 .333 + """) + + def get_H(self): + return self.str2matrix(""" + .8 -.3 + .8 -.4 + .7 -.4 + .9 -.4 + .8 .5 + .6 .4 + .5 .4 + .6 .3 + """) + + def get_W(self): + return self.str2matrix(""" + 1 0 + 0 1 + 0 0 + 1 1 + 1 0 + 1 0 + 0 1 + 1 0 + """) + + def _test_template(self, method, *method_args, **algorithms): + A = self.get_A() + algorithm1 = 'gpa' if 'algorithm1' not in algorithms else algorithms[ + 'algorithm1'] + if 'algorithm`' not in algorithms: + algorithm2 = 'gpa_der_free' + else: + algorithms['algorithm1'] + L1, T1 = rotate_factors(A, method, *method_args, algorithm=algorithm1) + L2, T2 = rotate_factors(A, method, *method_args, algorithm=algorithm2) + self.assertTrue(np.allclose(L1, L2, atol=1e-5)) + self.assertTrue(np.allclose(T1, T2, atol=1e-5)) + + def test_methods(self): + """ + Quartimax derivative free example + http://www.stat.ucla.edu/research/gpa + """ + # orthomax, oblimin and CF are tested indirectly + methods = ['quartimin', 'biquartimin', + 'quartimax', 'biquartimax', 'varimax', 'equamax', + 'parsimax', 'parsimony', + 'target', 'partial_target'] + for method in methods: + method_args = [] + if method == 'target': + method_args = [self.get_H(), 'orthogonal'] + self._test_template(method, *method_args) + method_args = [self.get_H(), 'oblique'] + self._test_template(method, *method_args) + method_args = [self.get_H(), 'orthogonal'] + self._test_template(method, *method_args, + algorithm2='analytic') + elif method == 'partial_target': + method_args = [self.get_H(), self.get_W()] + self._test_template(method, *method_args) diff --git a/statsmodels/multivariate/manova.py b/statsmodels/multivariate/manova.py new file mode 100644 index 0000000..d1c5158 --- /dev/null +++ b/statsmodels/multivariate/manova.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- + +"""Multivariate analysis of variance + +author: Yichuan Liu +""" +from __future__ import division + +import numpy as np + +from statsmodels.base.model import Model +from .multivariate_ols import MultivariateTestResults +from .multivariate_ols import _multivariate_ols_fit +from .multivariate_ols import _multivariate_ols_test, _hypotheses_doc + +__docformat__ = 'restructuredtext en' + + +class MANOVA(Model): + """ + Multivariate analysis of variance + + The implementation of MANOVA is based on multivariate regression and does + not assume that the explanatory variables are categorical. Any type of + variables as in regression is allowed. + + Parameters + ---------- + endog : array_like + Dependent variables. A nobs x k_endog array where nobs is + the number of observations and k_endog is the number of dependent + variables. + exog : array_like + Independent variables. A nobs x k_exog array where nobs is the + number of observations and k_exog is the number of independent + variables. An intercept is not included by default and should be added + by the user. Models specified using a formula include an intercept by + default. + + Attributes + ---------- + endog : array + See Parameters. + exog : array + See Parameters. + + Notes + ----- + MANOVA is used though the `mv_test` function, and `fit` is not used. + + The ``from_formula`` interface is the recommended method to specify + a model and simplifies testing without needing to manually configure + the contrast matrices. + + References + ---------- + .. [*] ftp://public.dhe.ibm.com/software/analytics/spss/documentation/statistics/20.0/en/client/Manuals/IBM_SPSS_Statistics_Algorithms.pdf + """ + def __init__(self, endog, exog, missing='none', hasconst=None, **kwargs): + if len(endog.shape) == 1 or endog.shape[1] == 1: + raise ValueError('There must be more than one dependent variable' + ' to fit MANOVA!') + super(MANOVA, self).__init__(endog, exog, missing=missing, + hasconst=hasconst, **kwargs) + self._fittedmod = _multivariate_ols_fit(self.endog, self.exog) + + def fit(self): + raise NotImplementedError('fit is not needed to use MANOVA. Call' + 'mv_test directly on a MANOVA instance.') + + def mv_test(self, hypotheses=None): + if hypotheses is None: + if (hasattr(self, 'data') and self.data is not None and + hasattr(self.data, 'design_info')): + terms = self.data.design_info.term_name_slices + hypotheses = [] + for key in terms: + L_contrast = np.eye(self.exog.shape[1])[terms[key], :] + hypotheses.append([key, L_contrast, None]) + else: + hypotheses = [] + for i in range(self.exog.shape[1]): + name = 'x%d' % (i) + L = np.zeros([1, self.exog.shape[1]]) + L[0, i] = 1 + hypotheses.append([name, L, None]) + + results = _multivariate_ols_test(hypotheses, self._fittedmod, + self.exog_names, self.endog_names) + + return MultivariateTestResults(results, self.endog_names, + self.exog_names) + mv_test.__doc__ = ( +""" +Linear hypotheses testing + +Parameters +---------- +""" + _hypotheses_doc + """ + +Returns +------- +results: MultivariateTestResults + +Notes +----- +Testing the linear hypotheses + + L * params * M = 0 + +where `params` is the regression coefficient matrix for the +linear model y = x * params + +If the model is not specified using the formula interfact, then the hypotheses +test each included exogenous variable, one at a time. In most applications +with categorical variables, the ``from_formula`` interface should be preferred +when specifying a model since it provides knowledge about the model when +specifying the hypotheses. +""") diff --git a/statsmodels/multivariate/multivariate_ols.py b/statsmodels/multivariate/multivariate_ols.py new file mode 100644 index 0000000..0d6aa03 --- /dev/null +++ b/statsmodels/multivariate/multivariate_ols.py @@ -0,0 +1,551 @@ +# -*- coding: utf-8 -*- + +"""General linear model + +author: Yichuan Liu +""" +from __future__ import division + +import numpy as np +from numpy.linalg import eigvals, inv, solve, matrix_rank, pinv, svd +from scipy import stats +import pandas as pd +from patsy import DesignInfo + +from statsmodels.compat import string_types +from statsmodels.base.model import Model +from statsmodels.iolib import summary2 +__docformat__ = 'restructuredtext en' + +_hypotheses_doc = \ +"""hypotheses: A list of tuples + Hypothesis `L*B*M = C` to be tested where B is the parameters in + regression Y = X*B. Each element is a tuple of length 2, 3, or 4: + + * (name, contrast_L) + * (name, contrast_L, transform_M) + * (name, contrast_L, transform_M, constant_C) + + containing a string `name`, the contrast matrix L, the transform + matrix M (for transforming dependent variables), and right-hand side + constant matrix constant_C, respectively. + + contrast_L : 2D array or an array of strings + Left-hand side contrast matrix for hypotheses testing. + If 2D array, each row is an hypotheses and each column is an + independent variable. At least 1 row + (1 by k_exog, the number of independent variables) is required. + If an array of strings, it will be passed to + patsy.DesignInfo().linear_constraint. + + transform_M : 2D array or an array of strings or None, optional + Left hand side transform matrix. + If `None` or left out, it is set to a k_endog by k_endog + identity matrix (i.e. do not transform y matrix). + If an array of strings, it will be passed to + patsy.DesignInfo().linear_constraint. + + constant_C : 2D array or None, optional + Right-hand side constant matrix. + if `None` or left out it is set to a matrix of zeros + Must has the same number of rows as contrast_L and the same + number of columns as transform_M + + If `hypotheses` is None: 1) the effect of each independent variable + on the dependent variables will be tested. Or 2) if model is created + using a formula, `hypotheses` will be created according to + `design_info`. 1) and 2) is equivalent if no additional variables + are created by the formula (e.g. dummy variables for categorical + variables and interaction terms) +""" + + +def _multivariate_ols_fit(endog, exog, method='svd', tolerance=1e-8): + """ + Solve multivariate linear model y = x * params + where y is dependent variables, x is independent variables + + Parameters + ---------- + endog : array_like + each column is a dependent variable + exog : array_like + each column is a independent variable + method : string + 'svd' - Singular value decomposition + 'pinv' - Moore-Penrose pseudoinverse + tolerance : float, a small positive number + Tolerance for eigenvalue. Values smaller than tolerance is considered + zero. + Returns + ------- + a tuple of matrices or values necessary for hypotheses testing + + .. [*] https://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_introreg_sect012.htm + Notes + ----- + Status: experimental and incomplete + + """ + y = endog + x = exog + nobs, k_endog = y.shape + nobs1, k_exog= x.shape + if nobs != nobs1: + raise ValueError('x(n=%d) and y(n=%d) should have the same number of ' + 'rows!' % (nobs1, nobs)) + + # Calculate the matrices necessary for hypotheses testing + df_resid = nobs - k_exog + if method == 'pinv': + # Regression coefficients matrix + pinv_x = pinv(x) + params = pinv_x.dot(y) + + # inverse of x'x + inv_cov = pinv_x.dot(pinv_x.T) + if matrix_rank(inv_cov,tol=tolerance) < k_exog: + raise ValueError('Covariance of x singular!') + + # Sums of squares and cross-products of residuals + # Y'Y - (X * params)'B * params + t = x.dot(params) + sscpr = np.subtract(y.T.dot(y), t.T.dot(t)) + return (params, df_resid, inv_cov, sscpr) + elif method == 'svd': + u, s, v = svd(x, 0) + if (s > tolerance).sum() < len(s): + raise ValueError('Covariance of x singular!') + invs = 1. / s + + params = v.T.dot(np.diag(invs)).dot(u.T).dot(y) + inv_cov = v.T.dot(np.diag(np.power(invs, 2))).dot(v) + t = np.diag(s).dot(v).dot(params) + sscpr = np.subtract(y.T.dot(y), t.T.dot(t)) + return (params, df_resid, inv_cov, sscpr) + else: + raise ValueError('%s is not a supported method!' % method) + + +def multivariate_stats(eigenvals, + r_err_sscp, + r_contrast, df_resid, tolerance=1e-8): + """ + For multivariate linear model Y = X * B + Testing hypotheses + L*B*M = 0 + where L is contrast matrix, B is the parameters of the + multivariate linear model and M is dependent variable transform matrix. + T = L*inv(X'X)*L' + H = M'B'L'*inv(T)*LBM + E = M'(Y'Y - B'X'XB)M + + Parameters + ---------- + eigenvals : array + The eigenvalues of inv(E + H)*H + r_err_sscp : int + Rank of E + H + r_contrast : int + Rank of T matrix + df_resid : int + Residual degree of freedom (n_samples minus n_variables of X) + tolerance : float + smaller than which eigenvalue is considered 0 + + Returns + ------- + A DataFrame + + References + ---------- + .. [*] https://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_introreg_sect012.htm + """ + v = df_resid + p = r_err_sscp + q = r_contrast + s = np.min([p, q]) + ind = eigenvals > tolerance + n_e = ind.sum() + eigv2 = eigenvals[ind] + eigv1 = np.array([i / (1 - i) for i in eigv2]) + m = (np.abs(p - q) - 1) / 2 + n = (v - p - 1) / 2 + + cols = ['Value', 'Num DF', 'Den DF', 'F Value', 'Pr > F'] + index = ["Wilks' lambda", "Pillai's trace", + "Hotelling-Lawley trace", "Roy's greatest root"] + results = pd.DataFrame(columns=cols, + index=index) + + def fn(x): + return np.real([x])[0] + + results.loc["Wilks' lambda", 'Value'] = fn(np.prod(1 - eigv2)) + + results.loc["Pillai's trace", 'Value'] = fn(eigv2.sum()) + + results.loc["Hotelling-Lawley trace", 'Value'] = fn(eigv1.sum()) + + results.loc["Roy's greatest root", 'Value'] = fn(eigv1.max()) + + r = v - (p - q + 1)/2 + u = (p*q - 2) / 4 + df1 = p * q + if p*p + q*q - 5 > 0: + t = np.sqrt((p*p*q*q - 4) / (p*p + q*q - 5)) + else: + t = 1 + df2 = r*t - 2*u + lmd = results.loc["Wilks' lambda", 'Value'] + lmd = np.power(lmd, 1 / t) + F = (1 - lmd) / lmd * df2 / df1 + results.loc["Wilks' lambda", 'Num DF'] = df1 + results.loc["Wilks' lambda", 'Den DF'] = df2 + results.loc["Wilks' lambda", 'F Value'] = F + pval = stats.f.sf(F, df1, df2) + results.loc["Wilks' lambda", 'Pr > F'] = pval + + V = results.loc["Pillai's trace", 'Value'] + df1 = s * (2*m + s + 1) + df2 = s * (2*n + s + 1) + F = df2 / df1 * V / (s - V) + results.loc["Pillai's trace", 'Num DF'] = df1 + results.loc["Pillai's trace", 'Den DF'] = df2 + results.loc["Pillai's trace", 'F Value'] = F + pval = stats.f.sf(F, df1, df2) + results.loc["Pillai's trace", 'Pr > F'] = pval + + U = results.loc["Hotelling-Lawley trace", 'Value'] + if n > 0: + b = (p + 2*n) * (q + 2*n) / 2 / (2*n + 1) / (n - 1) + df1 = p * q + df2 = 4 + (p*q + 2) / (b - 1) + c = (df2 - 2) / 2 / n + F = df2 / df1 * U / c + else: + df1 = s * (2*m + s + 1) + df2 = s * (s*n + 1) + F = df2 / df1 / s * U + results.loc["Hotelling-Lawley trace", 'Num DF'] = df1 + results.loc["Hotelling-Lawley trace", 'Den DF'] = df2 + results.loc["Hotelling-Lawley trace", 'F Value'] = F + pval = stats.f.sf(F, df1, df2) + results.loc["Hotelling-Lawley trace", 'Pr > F'] = pval + + sigma = results.loc["Roy's greatest root", 'Value'] + r = np.max([p, q]) + df1 = r + df2 = v - r + q + F = df2 / df1 * sigma + results.loc["Roy's greatest root", 'Num DF'] = df1 + results.loc["Roy's greatest root", 'Den DF'] = df2 + results.loc["Roy's greatest root", 'F Value'] = F + pval = stats.f.sf(F, df1, df2) + results.loc["Roy's greatest root", 'Pr > F'] = pval + return results + + +def _multivariate_ols_test(hypotheses, fit_results, exog_names, + endog_names): + def fn(L, M, C): + # .. [1] https://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_introreg_sect012.htm + params, df_resid, inv_cov, sscpr = fit_results + # t1 = (L * params)M + t1 = L.dot(params).dot(M) - C + # H = t1'L(X'X)^L't1 + t2 = L.dot(inv_cov).dot(L.T) + q = matrix_rank(t2) + H = t1.T.dot(inv(t2)).dot(t1) + + # E = M'(Y'Y - B'(X'X)B)M + E = M.T.dot(sscpr).dot(M) + return E, H, q, df_resid + + return _multivariate_test(hypotheses, exog_names, endog_names, fn) + + +def _multivariate_test(hypotheses, exog_names, endog_names, fn): + k_xvar = len(exog_names) + k_yvar = len(endog_names) + results = {} + for hypo in hypotheses: + if len(hypo) ==2: + name, L = hypo + M = None + C = None + elif len(hypo) == 3: + name, L, M = hypo + C = None + elif len(hypo) == 4: + name, L, M, C = hypo + else: + raise ValueError('hypotheses must be a tuple of length 2, 3 or 4.' + ' len(hypotheses)=%d' % len(hypo)) + if any(isinstance(j, string_types) for j in L): + L = DesignInfo(exog_names).linear_constraint(L).coefs + else: + if not isinstance(L, np.ndarray) or len(L.shape) != 2: + raise ValueError('Contrast matrix L must be a 2-d array!') + if L.shape[1] != k_xvar: + raise ValueError('Contrast matrix L should have the same ' + 'number of columns as exog! %d != %d' % + (L.shape[1], k_xvar)) + if M is None: + M = np.eye(k_yvar) + elif any(isinstance(j, string_types) for j in M): + M = DesignInfo(endog_names).linear_constraint(M).coefs.T + else: + if M is not None: + if not isinstance(M, np.ndarray) or len(M.shape) != 2: + raise ValueError('Transform matrix M must be a 2-d array!') + if M.shape[0] != k_yvar: + raise ValueError('Transform matrix M should have the same ' + 'number of rows as the number of columns ' + 'of endog! %d != %d' % + (M.shape[0], k_yvar)) + if C is None: + C = np.zeros([L.shape[0], M.shape[1]]) + elif not isinstance(C, np.ndarray): + raise ValueError('Constant matrix C must be a 2-d array!') + + if C.shape[0] != L.shape[0]: + raise ValueError('contrast L and constant C must have the same ' + 'number of rows! %d!=%d' + % (L.shape[0], C.shape[0])) + if C.shape[1] != M.shape[1]: + raise ValueError('transform M and constant C must have the same ' + 'number of columns! %d!=%d' + % (M.shape[1], C.shape[1])) + E, H, q, df_resid = fn(L, M, C) + EH = np.add(E, H) + p = matrix_rank(EH) + + # eigenvalues of inv(E + H)H + eigv2 = np.sort(eigvals(solve(EH, H))) + stat_table = multivariate_stats(eigv2, p, q, df_resid) + + results[name] = {'stat':stat_table, 'contrast_L':L, + 'transform_M':M, 'constant_C':C} + return results + +_multivariate_test.__doc__ = ( + """ + Multivariate linear model hypotheses testing + + For y = x * params, where y are the dependent variables and x are the + independent variables, testing L * params * M = 0 where L is the contrast + matrix for hypotheses testing and M is the transformation matrix for + transforming the dependent variables in y. + + Algorithm: + T = L*inv(X'X)*L' + H = M'B'L'*inv(T)*LBM + E = M'(Y'Y - B'X'XB)M + And then finding the eigenvalues of inv(H + E)*H + + .. [*] https://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_introreg_sect012.htm + + Parameters + ---------- + """ + _hypotheses_doc + + """ + k_xvar : int + The number of independent variables + k_yvar : int + The number of dependent variables + fn : function + a function fn(contrast_L, transform_M) that returns E, H, q, df_resid + where q is the rank of T matrix + + Returns + ------- + results : MANOVAResults + + """) + +class _MultivariateOLS(Model): + """ + Multivariate linear model via least squares + + + Parameters + ---------- + endog : array_like + Dependent variables. A nobs x k_endog array where nobs is + the number of observations and k_endog is the number of dependent + variables + exog : array_like + Independent variables. A nobs x k_exog array where nobs is the + number of observations and k_exog is the number of independent + variables. An intercept is not included by default and should be added + by the user (models specified using a formula include an intercept by + default) + + Attributes + ---------- + endog : array + See Parameters. + exog : array + See Parameters. + """ + def __init__(self, endog, exog, missing='none', hasconst=None, **kwargs): + if len(endog.shape) == 1 or endog.shape[1] == 1: + raise ValueError('There must be more than one dependent variable' + ' to fit multivariate OLS!') + super(_MultivariateOLS, self).__init__(endog, exog, missing=missing, + hasconst=hasconst, **kwargs) + + def fit(self, method='svd'): + self._fittedmod = _multivariate_ols_fit( + self.endog, self.exog, method=method) + return _MultivariateOLSResults(self) + + +class _MultivariateOLSResults(object): + """ + _MultivariateOLS results class + + """ + def __init__(self, fitted_mv_ols): + if (hasattr(fitted_mv_ols, 'data') and + hasattr(fitted_mv_ols.data, 'design_info')): + self.design_info = fitted_mv_ols.data.design_info + else: + self.design_info = None + self.exog_names = fitted_mv_ols.exog_names + self.endog_names = fitted_mv_ols.endog_names + self._fittedmod = fitted_mv_ols._fittedmod + + def __str__(self): + return self.summary().__str__() + + def mv_test(self, hypotheses=None): + + k_xvar = len(self.exog_names) + if hypotheses is None: + if self.design_info is not None: + terms = self.design_info.term_name_slices + hypotheses = [] + for key in terms: + L_contrast = np.eye(k_xvar)[terms[key], :] + hypotheses.append([key, L_contrast, None]) + else: + hypotheses = [] + for i in range(k_xvar): + name = 'x%d' % (i) + L = np.zeros([1, k_xvar]) + L[i] = 1 + hypotheses.append([name, L, None]) + + results = _multivariate_ols_test(hypotheses, self._fittedmod, + self.exog_names, self.endog_names) + + return MultivariateTestResults(results, + self.endog_names, + self.exog_names) + mv_test.__doc__ = (""" +Linear hypotheses testing + +Parameters +---------- +""" + _hypotheses_doc + """ + +Returns +------- +results: _MultivariateOLSResults + +Notes +----- +Tests hypotheses of the form + + L * params * M = C + +where `params` is the regression coefficient matrix for the +linear model y = x * params, `L` is the contrast matrix, `M` is the +dependent variable transform matrix and C is the constant matrix. +""") + def summary(self): + raise NotImplementedError + + +class MultivariateTestResults(object): + """ Multivariate test results class + Returned by `mv_test` method of `_MultivariateOLSResults` class + + Attributes + ---------- + results : dict + For hypothesis name `key`: + results[key]['stat'] contains the multivaraite test results + results[key]['contrast_L'] contains the contrast_L matrix + results[key]['transform_M'] contains the transform_M matrix + results[key]['constant_C'] contains the constant_C matrix + endog_names : string + exog_names : string + summary_frame : multiindex dataframe + Returns results as a multiindex dataframe + """ + def __init__(self, mv_test_df, endog_names, exog_names): + self.results = mv_test_df + self.endog_names = endog_names + self.exog_names = exog_names + + def __str__(self): + return self.summary().__str__() + + def __getitem__(self, item): + return self.results[item] + + @property + def summary_frame(self): + """ + Return results as a multiindex dataframe + """ + df = [] + for key in self.results: + tmp = self.results[key]['stat'].copy() + tmp.loc[:, 'Effect'] = key + df.append(tmp.reset_index()) + df = pd.concat(df, axis=0) + df = df.set_index(['Effect', 'index']) + df.index.set_names(['Effect', 'Statistic'], inplace=True) + return df + + def summary(self, show_contrast_L=False, show_transform_M=False, + show_constant_C=False): + """ + + Parameters + ---------- + contrast_L : True or False + Whether to show contrast_L matrix + transform_M : True or False + Whether to show transform_M matrix + """ + summ = summary2.Summary() + summ.add_title('Multivariate linear model') + for key in self.results: + summ.add_dict({'':''}) + df = self.results[key]['stat'].copy() + df = df.reset_index() + c = df.columns.values + c[0] = key + df.columns = c + df.index = ['', '', '', ''] + summ.add_df(df) + if show_contrast_L: + summ.add_dict({key:' contrast L='}) + df = pd.DataFrame(self.results[key]['contrast_L'], + columns=self.exog_names) + summ.add_df(df) + if show_transform_M: + summ.add_dict({key:' transform M='}) + df = pd.DataFrame(self.results[key]['transform_M'], + index=self.endog_names) + summ.add_df(df) + if show_constant_C: + summ.add_dict({key:' constant C='}) + df = pd.DataFrame(self.results[key]['constant_C']) + summ.add_df(df) + return summ diff --git a/statsmodels/multivariate/pca.py b/statsmodels/multivariate/pca.py new file mode 100644 index 0000000..66f1762 --- /dev/null +++ b/statsmodels/multivariate/pca.py @@ -0,0 +1,851 @@ +"""Principal Component Analysis + +Author: josef-pktd +Modified by Kevin Sheppard +""" +from __future__ import print_function, division + +import numpy as np +import pandas as pd + +from statsmodels.compat.python import range +from statsmodels.tools.sm_exceptions import (ValueWarning, + EstimationWarning) + + +def _norm(x): + return np.sqrt(np.sum(x * x)) + + +class PCA(object): + """ + Principal Component Analysis + + Parameters + ---------- + data : array-like + Variables in columns, observations in rows + ncomp : int, optional + Number of components to return. If None, returns the as many as the + smaller of the number of rows or columns in data + standardize: bool, optional + Flag indicating to use standardized data with mean 0 and unit + variance. standardized being True implies demean. Using standardized + data is equivalent to computing principal components from the + correlation matrix of data + demean : bool, optional + Flag indicating whether to demean data before computing principal + components. demean is ignored if standardize is True. Demeaning data + but not standardizing is equivalent to computing principal components + from the covariance matrix of data + normalize : bool , optional + Indicates whether th normalize the factors to have unit inner product. + If False, the loadings will have unit inner product. + weights : array, optional + Series weights to use after transforming data according to standardize + or demean when computing the principal components. + gls : bool, optional + Flag indicating to implement a two-step GLS estimator where + in the first step principal components are used to estimate residuals, + and then the inverse residual variance is used as a set of weights to + estimate the final principal components. Setting gls to True requires + ncomp to be less then the min of the number of rows or columns + method : str, optional + Sets the linear algebra routine used to compute eigenvectors + 'svd' uses a singular value decomposition (default). + 'eig' uses an eigenvalue decomposition of a quadratic form + 'nipals' uses the NIPALS algorithm and can be faster than SVD when + ncomp is small and nvars is large. See notes about additional changes + when using NIPALS + tol : float, optional + Tolerance to use when checking for convergence when using NIPALS + max_iter : int, optional + Maximum iterations when using NIPALS + missing : string + Method for missing data. Choices are + 'drop-row' - drop rows with missing values + 'drop-col' - drop columns with missing values + 'drop-min' - drop either rows or columns, choosing by data retention + 'fill-em' - use EM algorithm to fill missing value. ncomp should be + set to the number of factors required + tol_em : float + Tolerance to use when checking for convergence of the EM algorithm + max_em_iter : int + Maximum iterations for the EM algorithm + + Attributes + ---------- + factors : array or DataFrame + nobs by ncomp array of of principal components (scores) + scores : array or DataFrame + nobs by ncomp array of of principal components - identical to factors + loadings : array or DataFrame + ncomp by nvar array of principal component loadings for constructing + the factors + coeff : array or DataFrame + nvar by ncomp array of principal component loadings for constructing + the projections + projection : array or DataFrame + nobs by var array containing the projection of the data onto the ncomp + estimated factors + rsquare : array or Series + ncomp array where the element in the ith position is the R-square + of including the fist i principal components. Note: values are + calculated on the transformed data, not the original data + ic : array or DataFrame + ncomp by 3 array containing the Bai and Ng (2003) Information + criteria. Each column is a different criteria, and each row + represents the number of included factors. + eigenvals : array or Series + nvar array of eigenvalues + eigenvecs : array or DataFrame + nvar by nvar array of eigenvectors + weights : array + nvar array of weights used to compute the principal components, + normalized to unit length + transformed_data : array + Standardized, demeaned and weighted data used to compute + principal components and related quantities + cols : array + Array of indices indicating columns used in the PCA + rows : array + Array of indices indicating rows used in the PCA + + Examples + -------- + Basic PCA using the correlation matrix of the data + + >>> import numpy as np + >>> from statsmodels.multivariate.pca import PCA + >>> x = np.random.randn(100)[:, None] + >>> x = x + np.random.randn(100, 100) + >>> pc = PCA(x) + + Note that the principal components are computed using a SVD and so the + correlation matrix is never constructed, unless method='eig'. + + PCA using the covariance matrix of the data + + >>> pc = PCA(x, standardize=False) + + Limiting the number of factors returned to 1 computed using NIPALS + + >>> pc = PCA(x, ncomp=1, method='nipals') + >>> pc.factors.shape + (100, 1) + + Notes + ----- + The default options perform principal component analysis on the + demeaned, unit variance version of data. Setting standardize to False + will instead only demean, and setting both standardized and + demean to False will not alter the data. + + Once the data have been transformed, the following relationships hold when + the number of components (ncomp) is the same as tne minimum of the number + of observation or the number of variables. + + .. math: + + X' X = V \\Lambda V' + + .. math: + + F = X V + + .. math: + + X = F V' + + where X is the `data`, F is the array of principal components (`factors` + or `scores`), and V is the array of eigenvectors (`loadings`) and V' is + the array of factor coefficients (`coeff`). + + When weights are provided, the principal components are computed from the + modified data + + .. math: + + \\Omega^{-\\frac{1}{2}} X + + where :math:`\\Omega` is a diagonal matrix composed of the weights. For + example, when using the GLS version of PCA, the elements of :math:`\\Omega` + will be the inverse of the variances of the residuals from + + .. math: + + X - F V' + + where the number of factors is less than the rank of X + + .. [*] J. Bai and S. Ng, "Determining the number of factors in approximate + factor models," Econometrica, vol. 70, number 1, pp. 191-221, 2002 + """ + + def __init__(self, data, ncomp=None, standardize=True, demean=True, + normalize=True, gls=False, weights=None, method='svd', + missing=None, tol=5e-8, max_iter=1000, tol_em=5e-8, + max_em_iter=100, ): + self._index = None + self._columns = [] + if isinstance(data, pd.DataFrame): + self._index = data.index + self._columns = data.columns + + self.data = np.asarray(data) + # Store inputs + self._gls = gls + self._normalize = normalize + self._tol = tol + if not 0 < self._tol < 1: + raise ValueError('tol must be strictly between 0 and 1') + self._max_iter = max_iter + self._max_em_iter = max_em_iter + self._tol_em = tol_em + + # Prepare data + self._standardize = standardize + self._demean = demean + + self._nobs, self._nvar = self.data.shape + if weights is None: + weights = np.ones(self._nvar) + else: + weights = np.array(weights).flatten() + if weights.shape[0] != self._nvar: + raise ValueError('weights should have nvar elements') + weights = weights / np.sqrt((weights ** 2.0).mean()) + self.weights = weights + + # Check ncomp against maximum + min_dim = min(self._nobs, self._nvar) + self._ncomp = min_dim if ncomp is None else ncomp + if self._ncomp > min_dim: + import warnings + + warn = 'The requested number of components is more than can be ' \ + 'computed from data. The maximum number of components is ' \ + 'the minimum of the number of observations or variables' + warnings.warn(warn, ValueWarning) + self._ncomp = min_dim + + self._method = method + # Workaround to avoid instance methods in __dict__ + if self._method not in ('eig', 'svd', 'nipals'): + raise ValueError('method {0} is not known.'.format(method)) + + self.rows = np.arange(self._nobs) + self.cols = np.arange(self._nvar) + # Handle missing + self._missing = missing + self._adjusted_data = self.data + if missing is not None: + self._adjust_missing() + # Update size + self._nobs, self._nvar = self._adjusted_data.shape + if self._ncomp == np.min(self.data.shape): + self._ncomp = np.min(self._adjusted_data.shape) + elif self._ncomp > np.min(self._adjusted_data.shape): + raise ValueError('When adjusting for missing values, user ' + 'provided ncomp must be no larger than the ' + 'smallest dimension of the ' + 'missing-value-adjusted data size.') + + # Attributes and internal values + self._tss = 0.0 + self._ess = None + self.transformed_data = None + self._mu = None + self._sigma = None + self._ess_indiv = None + self._tss_indiv = None + self.scores = self.factors = None + self.loadings = None + self.coeff = None + self.eigenvals = None + self.eigenvecs = None + self.projection = None + self.rsquare = None + self.ic = None + + # Prepare data + self.transformed_data = self._prepare_data() + # Perform the PCA + self._pca() + if gls: + self._compute_gls_weights() + self.transformed_data = self._prepare_data() + self._pca() + + # Final calculations + self._compute_rsquare_and_ic() + if self._index is not None: + self._to_pandas() + + def _adjust_missing(self): + """ + Implements alternatives for handling missing values + """ + + def keep_col(x): + index = np.logical_not(np.any(np.isnan(x), 0)) + return x[:, index], index + + def keep_row(x): + index = np.logical_not(np.any(np.isnan(x), 1)) + return x[index, :], index + + if self._missing == 'drop-col': + self._adjusted_data, index = keep_col(self.data) + self.cols = np.where(index)[0] + self.weights = self.weights[index] + elif self._missing == 'drop-row': + self._adjusted_data, index = keep_row(self.data) + self.rows = np.where(index)[0] + elif self._missing == 'drop-min': + drop_col, drop_col_index = keep_col(self.data) + drop_col_size = drop_col.size + + drop_row, drop_row_index = keep_row(self.data) + drop_row_size = drop_row.size + + if drop_row_size > drop_col_size: + self._adjusted_data = drop_row + self.rows = np.where(drop_row_index)[0] + else: + self._adjusted_data = drop_col + self.weights = self.weights[drop_col_index] + self.cols = np.where(drop_col_index)[0] + elif self._missing == 'fill-em': + self._adjusted_data = self._fill_missing_em() + else: + raise ValueError('missing method is not known.') + + if self._index is not None: + self._columns = self._columns[self.cols] + self._index = self._index[self.rows] + + # Check adjusted data size + if self._adjusted_data.size == 0: + raise ValueError('Removal of missing values has eliminated ' + 'all data.') + + def _compute_gls_weights(self): + """ + Computes GLS weights based on percentage of data fit + """ + errors = self.transformed_data - np.asarray(self.projection) + if self._ncomp == self._nvar: + raise ValueError('gls can only be used when ncomp < nvar ' + 'so that residuals have non-zero variance') + var = (errors ** 2.0).mean(0) + weights = 1.0 / var + weights = weights / np.sqrt((weights ** 2.0).mean()) + nvar = self._nvar + eff_series_perc = (1.0 / sum((weights / weights.sum()) ** 2.0)) / nvar + if eff_series_perc < 0.1: + eff_series = int(np.round(eff_series_perc * nvar)) + import warnings + + warn = 'Many series are being down weighted by GLS. Of the ' \ + '{original} series, the GLS estimates are based on only ' \ + '{effective} (effective) ' \ + 'series.'.format(original=nvar, effective=eff_series) + warnings.warn(warn, EstimationWarning) + + self.weights = weights + + def _pca(self): + """ + Main PCA routine + """ + self._compute_eig() + self._compute_pca_from_eig() + self.projection = self.project() + + def __repr__(self): + string = self.__str__() + string = string[:-1] + string += ', id: ' + hex(id(self)) + ')' + return string + + def __str__(self): + string = 'Principal Component Analysis(' + string += 'nobs: ' + str(self._nobs) + ', ' + string += 'nvar: ' + str(self._nvar) + ', ' + if self._standardize: + kind = 'Standardize (Correlation)' + elif self._demean: + kind = 'Demean (Covariance)' + else: + kind = 'None' + string += 'transformation: ' + kind + ', ' + if self._gls: + string += 'GLS, ' + string += 'normalization: ' + str(self._normalize) + ', ' + string += 'number of components: ' + str(self._ncomp) + ', ' + string += 'method: ' + 'Eigenvalue' if self._method == 'eig' else 'SVD' + string += ')' + return string + + def _prepare_data(self): + """ + Standardize or demean data. + """ + adj_data = self._adjusted_data + if np.all(np.isnan(adj_data)): + return np.empty(adj_data.shape[1]).fill(np.nan) + + self._mu = np.nanmean(adj_data, axis=0) + self._sigma = np.sqrt(np.nanmean((adj_data - self._mu) ** 2.0, axis=0)) + if self._standardize: + data = (adj_data - self._mu) / self._sigma + elif self._demean: + data = (adj_data - self._mu) + else: + data = adj_data + return data / np.sqrt(self.weights) + + def _compute_eig(self): + """ + Wrapper for actual eigenvalue method + + This is a workaround to avoid instance methods in __dict__ + """ + if self._method == 'eig': + return self._compute_using_eig() + elif self._method == 'svd': + return self._compute_using_svd() + else: # self._method == 'nipals' + return self._compute_using_nipals() + + def _compute_using_svd(self): + """SVD method to compute eigenvalues and eigenvecs""" + x = self.transformed_data + u, s, v = np.linalg.svd(x) + self.eigenvals = s ** 2.0 + self.eigenvecs = v.T + + def _compute_using_eig(self): + """ + Eigenvalue decomposition method to compute eigenvalues and eigenvectors + """ + x = self.transformed_data + self.eigenvals, self.eigenvecs = np.linalg.eigh(x.T.dot(x)) + + def _compute_using_nipals(self): + """ + NIPALS implementation to compute small number of eigenvalues + and eigenvectors + """ + x = self.transformed_data + if self._ncomp > 1: + x = x + 0.0 # Copy + + tol, max_iter, ncomp = self._tol, self._max_iter, self._ncomp + vals = np.zeros(self._ncomp) + vecs = np.zeros((self._nvar, self._ncomp)) + for i in range(ncomp): + max_var_ind = np.argmax(x.var(0)) + factor = x[:, [max_var_ind]] + _iter = 0 + diff = 1.0 + while diff > tol and _iter < max_iter: + vec = x.T.dot(factor) / (factor.T.dot(factor)) + vec = vec / np.sqrt(vec.T.dot(vec)) + factor_last = factor + factor = x.dot(vec) / (vec.T.dot(vec)) + diff = _norm(factor - factor_last) / _norm(factor) + _iter += 1 + vals[i] = (factor ** 2).sum() + vecs[:, [i]] = vec + if ncomp > 1: + x -= factor.dot(vec.T) + + self.eigenvals = vals + self.eigenvecs = vecs + + def _fill_missing_em(self): + """ + EM algorithm to fill missing values + """ + non_missing = np.logical_not(np.isnan(self.data)) + + # If nothing missing, return without altering the data + if np.all(non_missing): + return self.data + + # 1. Standardized data as needed + data = self.transformed_data = np.asarray(self._prepare_data()) + + ncomp = self._ncomp + + # 2. Check for all nans + col_non_missing = np.sum(non_missing, 1) + row_non_missing = np.sum(non_missing, 0) + if np.any(col_non_missing < ncomp) or np.any(row_non_missing < ncomp): + raise ValueError('Implementation requires that all columns and ' + 'all rows have at least ncomp non-missing values') + # 3. Get mask + mask = np.isnan(data) + + # 4. Compute mean + mu = np.nanmean(data, 0) + + # 5. Replace missing with mean + projection = np.ones((self._nobs, 1)) * mu + projection_masked = projection[mask] + data[mask] = projection_masked + + # 6. Compute eigenvalues and fit + diff = 1.0 + _iter = 0 + while diff > self._tol_em and _iter < self._max_em_iter: + last_projection_masked = projection_masked + # Set transformed data to compute eigenvalues + self.transformed_data = data + # Call correct eig function here + self._compute_eig() + # Call function to compute factors and projection + self._compute_pca_from_eig() + projection = np.asarray(self.project(transform=False, + unweight=False)) + projection_masked = projection[mask] + data[mask] = projection_masked + delta = last_projection_masked - projection_masked + diff = _norm(delta) / _norm(projection_masked) + _iter += 1 + # Must copy to avoid overwriting original data since replacing values + data = self._adjusted_data + 0.0 + projection = np.asarray(self.project()) + data[mask] = projection[mask] + + return data + + def _compute_pca_from_eig(self): + """ + Compute relevant statistics after eigenvalues have been computed + """ + # Ensure sorted largest to smallest + vals, vecs = self.eigenvals, self.eigenvecs + indices = np.argsort(vals) + indices = indices[::-1] + vals = vals[indices] + vecs = vecs[:, indices] + if (vals <= 0).any(): + # Discard and warn + num_good = vals.shape[0] - (vals <= 0).sum() + if num_good < self._ncomp: + import warnings + + warnings.warn('Only {num:d} eigenvalues are positive. ' + 'This is the maximum number of components ' + 'that can be extracted.'.format(num=num_good), + EstimationWarning) + + self._ncomp = num_good + vals[num_good:] = np.finfo(np.float64).tiny + # Use ncomp for the remaining calculations + vals = vals[:self._ncomp] + vecs = vecs[:, :self._ncomp] + self.eigenvals, self.eigenvecs = vals, vecs + # Select correct number of components to return + self.scores = self.factors = self.transformed_data.dot(vecs) + self.loadings = vecs + self.coeff = vecs.T + if self._normalize: + self.coeff = (self.coeff.T * np.sqrt(vals)).T + self.factors /= np.sqrt(vals) + self.scores = self.factors + + def _compute_rsquare_and_ic(self): + """ + Final statistics to compute + """ + # TSS and related calculations + # TODO: This needs careful testing, with and without weights, + # gls, standardized and demean + weights = self.weights + ss_data = self.transformed_data * np.sqrt(weights) + self._tss_indiv = np.sum(ss_data ** 2, 0) + self._tss = np.sum(self._tss_indiv) + self._ess = np.zeros(self._ncomp + 1) + self._ess_indiv = np.zeros((self._ncomp + 1, self._nvar)) + for i in range(self._ncomp + 1): + # Projection in the same space as transformed_data + projection = self.project(ncomp=i, transform=False, unweight=False) + indiv_rss = (projection ** 2).sum(axis=0) + rss = indiv_rss.sum() + self._ess[i] = self._tss - rss + self._ess_indiv[i, :] = self._tss_indiv - indiv_rss + self.rsquare = 1.0 - self._ess / self._tss + # Information Criteria + ess = self._ess + invalid = ess <= 0 # Prevent log issues of 0 + if invalid.any(): + last_obs = (np.where(invalid)[0]).min() + ess = ess[:last_obs] + + log_ess = np.log(ess) + r = np.arange(ess.shape[0]) + + nobs, nvar = self._nobs, self._nvar + sum_to_prod = (nobs + nvar) / (nobs * nvar) + min_dim = min(nobs, nvar) + penalties = np.array([sum_to_prod * np.log(1.0 / sum_to_prod), + sum_to_prod * np.log(min_dim), + np.log(min_dim) / min_dim]) + penalties = penalties[:, None] + ic = log_ess + r * penalties + self.ic = ic.T + + def project(self, ncomp=None, transform=True, unweight=True): + """ + Project series onto a specific number of factors + + Parameters + ---------- + ncomp : int, optional + Number of components to use. If omitted, all components + initially computed are used. + + Returns + ------- + projection : array + nobs by nvar array of the projection onto ncomp factors + transform : bool + Flag indicating whether to return the projection in the original + space of the data (True, default) or in the space of the + standardized/demeaned data + unweight : bool + Flag indicating whether to undo the effects of the estimation + weights + + Notes + ----- + """ + # Projection needs to be scaled/shifted based on inputs + ncomp = self._ncomp if ncomp is None else ncomp + if ncomp > self._ncomp: + raise ValueError('ncomp must be smaller than the number of ' + 'components computed.') + factors = np.asarray(self.factors) + coeff = np.asarray(self.coeff) + + projection = factors[:, :ncomp].dot(coeff[:ncomp, :]) + if transform or unweight: + projection *= np.sqrt(self.weights) + if transform: + # Remove the weights, which do not depend on transformation + if self._standardize: + projection *= self._sigma + if self._standardize or self._demean: + projection += self._mu + if self._index is not None: + projection = pd.DataFrame(projection, + columns=self._columns, + index=self._index) + return projection + + def _to_pandas(self): + """ + Returns pandas DataFrames for all values + """ + index = self._index + # Principal Components + num_zeros = np.ceil(np.log10(self._ncomp)) + comp_str = 'comp_{0:0' + str(int(num_zeros)) + 'd}' + cols = [comp_str.format(i) for i in range(self._ncomp)] + df = pd.DataFrame(self.factors, columns=cols, index=index) + self.scores = self.factors = df + # Projections + df = pd.DataFrame(self.projection, + columns=self._columns, + index=index) + self.projection = df + # Weights + df = pd.DataFrame(self.coeff, index=cols, + columns=self._columns) + self.coeff = df + # Loadings + df = pd.DataFrame(self.loadings, + index=self._columns, columns=cols) + self.loadings = df + # eigenvals + self.eigenvals = pd.Series(self.eigenvals) + self.eigenvals.name = 'eigenvals' + # eigenvecs + vec_str = comp_str.replace('comp', 'eigenvec') + cols = [vec_str.format(i) for i in range(self.eigenvecs.shape[1])] + self.eigenvecs = pd.DataFrame(self.eigenvecs, columns=cols) + # R2 + self.rsquare = pd.Series(self.rsquare) + self.rsquare.index.name = 'ncomp' + self.rsquare.name = 'rsquare' + # IC + self.ic = pd.DataFrame(self.ic, columns=['IC_p1', 'IC_p2', 'IC_p3']) + self.ic.index.name = 'ncomp' + + def plot_scree(self, ncomp=None, log_scale=True, + cumulative=False, ax=None): + """ + Plot of the ordered eigenvalues + + Parameters + ---------- + ncomp : int, optional + Number of components ot include in the plot. If None, will + included the same as the number of components computed + log_scale : boot, optional + Flag indicating whether ot use a log scale for the y-axis + cumulative : bool, optional + Flag indicating whether to plot the eigenvalues or cumulative + eigenvalues + ax : Matplotlib axes instance, optional + An axes on which to draw the graph. If omitted, new a figure + is created + + Returns + ------- + fig : figure + Handle to the figure + """ + import statsmodels.graphics.utils as gutils + + fig, ax = gutils.create_mpl_ax(ax) + + ncomp = self._ncomp if ncomp is None else ncomp + vals = np.asarray(self.eigenvals) + vals = vals[:self._ncomp] + if cumulative: + vals = np.cumsum(vals) + + if log_scale: + ax.set_yscale('log') + ax.plot(np.arange(ncomp), vals[: ncomp], 'bo') + ax.autoscale(tight=True) + xlim = np.array(ax.get_xlim()) + sp = xlim[1] - xlim[0] + xlim += 0.02 * np.array([-sp, sp]) + ax.set_xlim(xlim) + + ylim = np.array(ax.get_ylim()) + scale = 0.02 + if log_scale: + sp = np.log(ylim[1] / ylim[0]) + ylim = np.exp(np.array([np.log(ylim[0]) - scale * sp, + np.log(ylim[1]) + scale * sp])) + else: + sp = ylim[1] - ylim[0] + ylim += scale * np.array([-sp, sp]) + ax.set_ylim(ylim) + ax.set_title('Scree Plot') + ax.set_ylabel('Eigenvalue') + ax.set_xlabel('Component Number') + fig.tight_layout() + + return fig + + def plot_rsquare(self, ncomp=None, ax=None): + """ + Box plots of the individual series R-square against the number of PCs + + Parameters + ---------- + ncomp : int, optional + Number of components ot include in the plot. If None, will + plot the minimum of 10 or the number of computed components + ax : Matplotlib axes instance, optional + An axes on which to draw the graph. If omitted, new a figure + is created + + Returns + ------- + fig : figure + Handle to the figure + """ + import statsmodels.graphics.utils as gutils + + fig, ax = gutils.create_mpl_ax(ax) + + ncomp = 10 if ncomp is None else ncomp + ncomp = min(ncomp, self._ncomp) + # R2s in rows, series in columns + r2s = 1.0 - self._ess_indiv / self._tss_indiv + r2s = r2s[1:] + r2s = r2s[:ncomp] + ax.boxplot(r2s.T) + ax.set_title('Individual Input $R^2$') + ax.set_ylabel('$R^2$') + ax.set_xlabel('Number of Included Principal Components') + + return fig + + +def pca(data, ncomp=None, standardize=True, demean=True, normalize=True, + gls=False, weights=None, method='svd'): + """ + Principal Component Analysis + + Parameters + ---------- + data : array + Variables in columns, observations in rows. + ncomp : int, optional + Number of components to return. If None, returns the as many as the + smaller to the number of rows or columns of data. + standardize: bool, optional + Flag indicating to use standardized data with mean 0 and unit + variance. standardized being True implies demean. + demean : bool, optional + Flag indicating whether to demean data before computing principal + components. demean is ignored if standardize is True. + normalize : bool , optional + Indicates whether th normalize the factors to have unit inner + product. If False, the loadings will have unit inner product. + weights : array, optional + Series weights to use after transforming data according to standardize + or demean when computing the principal components. + gls : bool, optional + Flag indicating to implement a two-step GLS estimator where + in the first step principal components are used to estimate residuals, + and then the inverse residual variance is used as a set of weights to + estimate the final principal components + method : str, optional + Determines the linear algebra routine uses. 'eig', the default, + uses an eigenvalue decomposition. 'svd' uses a singular value + decomposition. + + Returns + ------- + factors : array or DataFrame + nobs by ncomp array of of principal components (also known as scores) + loadings : array or DataFrame + ncomp by nvar array of principal component loadings for constructing + the factors + projection : array or DataFrame + nobs by var array containing the projection of the data onto the ncomp + estimated factors + rsquare : array or Series + ncomp array where the element in the ith position is the R-square + of including the fist i principal components. The values are + calculated on the transformed data, not the original data. + ic : array or DataFrame + ncomp by 3 array containing the Bai and Ng (2003) Information + criteria. Each column is a different criteria, and each row + represents the number of included factors. + eigenvals : array or Series + nvar array of eigenvalues + eigenvecs : array or DataFrame + nvar by nvar array of eigenvectors + + Notes + ----- + This is a simple function wrapper around the PCA class. See PCA for + more information and additional methods. + """ + pc = PCA(data, ncomp=ncomp, standardize=standardize, demean=demean, + normalize=normalize, gls=gls, weights=weights, method=method) + + return (pc.factors, pc.loadings, pc.projection, pc.rsquare, pc.ic, + pc.eigenvals, pc.eigenvecs) diff --git a/statsmodels/multivariate/plots.py b/statsmodels/multivariate/plots.py new file mode 100644 index 0000000..115ab13 --- /dev/null +++ b/statsmodels/multivariate/plots.py @@ -0,0 +1,141 @@ +import matplotlib.pyplot as plt +import numpy as np + + +def plot_scree(eigenvals, total_var, ncomp=None, x_label='factor'): + """ + Plot of the ordered eigenvalues and variance explained for the loadings + + Parameters + ---------- + eigenvals : array-like + THe eigenvalues + total_var : float + the total variance (for plotting percent variance explained) + ncomp : int, optional + Number of factors to include in the plot. If None, will + included the same as the number of maximum possible loadings + x_label : string + label of x-axis + + Returns + ------- + fig : figure + Handle to the figure + """ + fig = plt.figure() + ncomp = len(eigenvals) if ncomp is None else ncomp + vals = eigenvals + vals = vals[:ncomp] + # vals = np.cumsum(vals) + + ax = fig.add_subplot(121) + ax.plot(np.arange(ncomp), vals[: ncomp], 'b-o') + ax.autoscale(tight=True) + xlim = np.array(ax.get_xlim()) + sp = xlim[1] - xlim[0] + xlim += 0.02 * np.array([-sp, sp]) + ax.set_xticks(np.arange(ncomp)) + ax.set_xlim(xlim) + + ylim = np.array(ax.get_ylim()) + scale = 0.02 + sp = ylim[1] - ylim[0] + ylim += scale * np.array([-sp, sp]) + ax.set_ylim(ylim) + ax.set_title('Scree Plot') + ax.set_ylabel('Eigenvalue') + ax.set_xlabel(x_label) + + per_variance = vals / total_var + cumper_variance = np.cumsum(per_variance) + ax = fig.add_subplot(122) + + ax.plot(np.arange(ncomp), per_variance[: ncomp], 'b-o') + ax.plot(np.arange(ncomp), cumper_variance[: ncomp], 'g--o') + ax.autoscale(tight=True) + xlim = np.array(ax.get_xlim()) + sp = xlim[1] - xlim[0] + xlim += 0.02 * np.array([-sp, sp]) + ax.set_xticks(np.arange(ncomp)) + ax.set_xlim(xlim) + + ylim = np.array(ax.get_ylim()) + scale = 0.02 + sp = ylim[1] - ylim[0] + ylim += scale * np.array([-sp, sp]) + ax.set_ylim(ylim) + ax.set_title('Variance Explained') + ax.set_ylabel('Proportion') + ax.set_xlabel(x_label) + ax.legend(['Proportion', 'Cumulative'], loc=5) + fig.tight_layout() + return fig + + +def plot_loadings(loadings, col_names=None, row_names=None, + loading_pairs=None, percent_variance=None, + title='Factor patterns'): + """ + Plot factor loadings in 2-d plots + + Parameters + ---------- + loadings : array like + Each column is a component (or factor) + col_names : a list of strings + column names of `loadings` + row_names : a list of strings + row names of `loadings` + loading_pairs : None or a list of tuples + Specify plots. Each tuple (i, j) represent one figure, i and j is + the loading number for x-axis and y-axis, respectively. If `None`, + all combinations of the loadings will be plotted. + percent_variance : array-like + The percent variance explained by each factor. + + Returns + ------- + figs : a list of figure handles + + """ + k_var, n_factor = loadings.shape + if loading_pairs is None: + loading_pairs = [] + for i in range(n_factor): + for j in range(i + 1,n_factor): + loading_pairs.append([i, j]) + if col_names is None: + col_names = ["factor %d" % i for i in range(n_factor)] + if row_names is None: + row_names = ["var %d" % i for i in range(k_var)] + figs = [] + for item in loading_pairs: + i = item[0] + j = item[1] + fig = plt.figure(figsize=(7, 7)) + figs.append(fig) + ax = fig.add_subplot(111) + for k in range(loadings.shape[0]): + plt.text(loadings[k, i], loadings[k, j], + row_names[k], fontsize=12) + ax.plot(loadings[:, i], loadings[:, j], 'bo') + ax.set_title(title) + if percent_variance is not None: + x_str = '%s (%.1f%%)' % (col_names[i], percent_variance[i]) + y_str = '%s (%.1f%%)' % (col_names[j], percent_variance[j]) + ax.set_xlabel(x_str) + ax.set_ylabel(y_str) + else: + ax.set_xlabel(col_names[i]) + ax.set_ylabel(col_names[j]) + v = 1.05 + xlim = np.array([-v, v]) + ylim = np.array([-v, v]) + ax.plot(xlim, [0, 0], 'k--') + ax.plot([0, 0], ylim, 'k--') + ax.set_aspect('equal', 'datalim') + ax.set_xlim(xlim) + ax.set_ylim(ylim) + fig.tight_layout() + return figs diff --git a/statsmodels/multivariate/tests/__init__.py b/statsmodels/multivariate/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/multivariate/tests/results/__init__.py b/statsmodels/multivariate/tests/results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/multivariate/tests/results/datamlw.py b/statsmodels/multivariate/tests/results/datamlw.py new file mode 100644 index 0000000..33dba61 --- /dev/null +++ b/statsmodels/multivariate/tests/results/datamlw.py @@ -0,0 +1,294 @@ +from numpy import array + +from statsmodels.tools.testing import Holder + + +data = Holder() +data.comment = 'generated data, divide by 1000' +data.name = 'data' +data.xo = array([ + [-419, -731, -1306, -1294], + [6, 529, -200, -437], + [-27, -833, -6, -564], + [-304, -273, -502, -739], + [1377, -912, 927, 280], + [-375, -517, -514, 49], + [247, -504, 123, -259], + [712, 534, -773, 286], + [195, -1080, 3256, -178], + [-854, 75, -706, -1084], + [-1219, -612, -15, -203], + [550, -628, -483, -2686], + [-365, 1376, -1266, 317], + [-489, 544, -195, 431], + [-656, 854, 840, -723], + [16, -1385, -880, -460], + [258, -2252, 96, 54], + [2049, -750, -1115, 381], + [-65, 280, -777, 416], + [755, 82, -806, 1027], + [-39, -170, -2134, 743], + [-859, 780, 746, -133], + [762, 252, -450, -459], + [-941, -202, 49, -202], + [-54, 115, 455, 388], + [-1348, 1246, 1430, -480], + [229, -535, -1831, 1524], + [-651, -167, 2116, 483], + [-1249, -1373, 888, -1092], + [-75, -2162, 486, -496], + [2436, -1627, -1069, 162], + [-63, 560, -601, 587], + [-60, 1051, -277, 1323], + [1329, -1294, 68, 5], + [1532, -633, -923, 696], + [669, 895, -1762, -375], + [1129, -548, 2064, 609], + [1320, 573, 2119, 270], + [-213, -412, -2517, 1685], + [73, -979, 1312, -1220], + [-1360, -2107, -237, 1522], + [-645, 205, -543, -169], + [-212, 1072, 543, -128], + [-352, -129, -605, -904], + [511, 85, 167, -1914], + [1515, 1862, 942, 1622], + [-465, 623, -495, -89], + [-1396, -979, 1758, 128], + [-255, -47, 980, 501], + [-1282, -58, -49, -610], + [-889, -1177, -492, 494], + [1415, 1146, 696, -722], + [1237, -224, -1609, -64], + [-528, -1625, 231, 883], + [-327, 1636, -476, -361], + [-781, 793, 1882, 234], + [-506, -561, 1988, -810], + [-1233, 1467, -261, 2164], + [53, 1069, 824, 2123], + [-1200, -441, -321, 339], + [1606, 298, -995, 1292], + [-1740, -672, -1628, -129], + [-1450, -354, 224, -657], + [-2556, 1006, -706, -1453], + [-717, -463, 345, -1821], + [1056, -38, -420, -455], + [-523, 565, 425, 1138], + [-1030, -187, 683, 78], + [-214, -312, -1171, -528], + [819, 736, -265, 423], + [1339, 351, 1142, 579], + [-387, -126, -1573, 2346], + [969, 2, 327, -134], + [163, 227, 90, 2021], + [1022, -1076, 174, 304], + [1042, 1317, 311, 880], + [2018, -840, 295, 2651], + [-277, 566, 1147, -189], + [20, 467, 1262, 263], + [-663, 1061, -1552, -1159], + [1830, 391, 2534, -199], + [-487, 752, -1061, 351], + [-2138, -556, -367, -457], + [-868, -411, -559, 726], + [1770, 819, -892, -363], + [553, -736, -169, -490], + [388, -503, 809, -821], + [-516, -1452, -192, 483], + [493, 2904, 1318, 2591], + [175, 584, -1001, 1675], + [1316, -1596, -460, 1500], + [1212, 214, -644, -696], + [-501, 338, 1197, -841], + [-587, -469, -1101, 24], + [-1205, 1910, 659, 1232], + [-150, 398, 594, 394], + [34, -663, 235, -334], + [-1580, 647, 239, -351], + [-2177, -345, 1215, -1494], + [1923, 329, -152, 1128]]) + +princomp1 = Holder() +princomp1.comment = 'mlab.princomp(x, nout=3)' +princomp1.factors = array([ + [-.83487832815382, -1.75681522344645, -.50882660928949, -.59661466511045], + [-.18695786699253, -.10732909330422, .23971799542554, -.75468286946853], + [-.57403949255604, -.39667006607544, -.7927838094217, .02652621881328], + [-.60828125251513, -.75979035898754, -.20148864200404, -.40278856050237], + [.55997928601548, .88869370546643, -1.55474410845786, .23033958281961], + [-.18023239851961, -.72398923145328, -.07056264751117, .29292391015376], + [-.189029743271, -.05888596186903, -.63882208368513, -.05682951829677], + [.94694345324739, -.33448036234864, .16665867708366, -.67190948646953], + [-1.355171899399, 2.58899695901774, -1.53157119606928, .93743278678908], + [-1.06797676403358, -1.01894055566289, .29181722134698, -.65261957826524], + [-1.08919199915725, -.5395876105009, .18846579824378, .61935728909742], + [-1.36598849770841, -1.00986627679465, -1.6090477073157, -1.82708847399443], # noqa:E501 + [.561511276285, -.74919011595195, 1.49872898209738, -.80588545345232], + [.04805787176428, -.05522267212748, .82943784435024, .01537039050312], + [-1.12006939155398, .73462770352006, .58868274831601, -.67786987413505], + [-.26087838474316, -1.33362289066951, -1.02932517860259, .24865839951801], + [-.24666198784909, -.58247196399204, -1.78971960966265, 1.18908143657302], + [1.80675592845666, -.73341258204636, -1.45012544705912, -.44875329121288], + [.4794281391435, -.57169295903913, .48557628591056, -.11638075289238], + [1.39425263398653, -.3665732682294, .06937942447187, .06683559082703], + [1.11015707065101, -1.87631329249852, .48914958604867, .11096926802212], + [-.85159530389901, .68543874135386, .86736021483251, -.17641002537865], + [.34109015314112, -.25431311542374, -.36804227540019, -.95824474920131], + [-.86253950274987, -.28796613689709, .30820634958709, .27228599921917], + [.01266190412089, .48559962017667, .14020630700546, .18517398749337], + [-1.56345869427724, 1.27917754070516, 1.25640847929385, -.36055181722313], + [1.62834293379132, -1.51923809467869, .27754976407182, .79362967384835], + [-.94400458067084, 1.77733054371289, .03595731772774, .96570688640992], + [-2.11906234438329, -.13226430948321, -.78992396115366, .66362103473975], + [-.94372331181891, -.37502966791165, -1.77907324401749, .97801542954941], + [1.76575198740032, -.92309597844861, -2.3872195277998, -.21817018301121], + [.57418226616373, -.2925257318724, .71180507312941, -.13937750314467], + [1.01654397566275, .28855305878842, 1.25119859389106, .11257524396004], + [.58979013567212, -.06866577243092, -1.74447546690995, .13917953157575], + [1.62072087150051, -.5835145063711, -.99029357957459, -.06334029436682], + [.893493925425, -1.23995040005948, .40058503790479, -1.49029669097391], + [.26990527585623, 2.03399854143898, -1.2335089890881, .54010061879979], + [.33504096277444, 2.42394994177782, -.6643863358332, -.42471161848557], + [1.69952476943058, -2.1707037237448, .79694026483866, .88177267205969], + [-1.41498253257895, .65248089992094, -1.40045976465378, -.12045332880702], + [-.22640706265253, -.94114558124915, -.18868114063537, 2.67652245892778], + [-.37493712386529, -.61985213642068, .5383582946365, -.17931524703276], + [-.30437796317839, .74252786648649, .73255373596822, -.64993745548429], + [-.68788283675831, -.84714762684627, -.10721753874211, -.59777382822281], + [-1.00667616522842, -.06670525233919, -.92973707141688, -1.60742284256649], + [1.95220512266515, 2.05751265066695, .79640648143073, -.59608004229343], + [-.15504464969388, -.3882079443045, .75049869361395, -.44163703260023], + [-1.6686863460652, .96325894557423, -.16453379247258, 1.4560996746313], + [-.25573631707529, .88265554068571, .08984550855664, .53561910563178], + [-1.29430028690793, -.48042359291447, .49318558750269, .03689178852848], + [-.34391235307349, -.95154811896716, -.09714022474353, 1.19792361047367], + [.34367523316975, 1.16641214447854, -.39528838072965, -1.72565643987406], + [1.23887392116229, -1.27474554996132, -.65859544264097, -.81757560038832], + [-.17739006831099, -.29057501559843, -.62533324788504, 1.7092669546224], + [-.08610919021307, -.06524996994257, 1.3018284944661, -1.28219607271255], + [-.95717735853496, 1.79841555744597, .75799149339397, .23542916575208], + [-1.70175078442029, 1.33831900642462, -.73979048943944, .26157699746442], + [.84631686421106, .32029666775009, 2.51638540556813, .90367536744335], + [1.22693220256582, 1.45665385966518, 1.27480662666555, .78786331120259], + [-.59251239046609, -.660398245535, .53258334042042, .81248748854679], + [2.22723057510913, -.22856960444805, -.15586801032885, -.26957090658609], + [-.83192612439183, -2.11983096548132, .75319973501664, .62196293266702], + [-1.577627210601, -.3747136286972, .31736538266249, .30187577548949], + [-2.28230005998543, -1.17283119424281, 1.83780755209602, -.75928026219594], + [-1.90574204329052, -.34197417196464, -.59978910354131, -.68240235236779], + [.48132729275936, -.2524965456322, -.75271273075, -.89651237903089], + [.26961427953002, .62968227134995, .99324664633985, .59917742452108], + [-.95910506784013, .31907970712369, .35568397653203, .60155535679072], + [-.18528259973205, -1.31831013869974, -.09749195643548, -.39885348684496], + [.9608404103702, .23727553971573, .20695289013955, -.65281918968052], + [.85302395609555, 1.5303724004181, -.56440186223081, -.27348033453255], + [1.72786301913767, -1.14859994931789, 1.16222121440674, 1.39284961909257], + [.37711527308989, .47231886947072, -.69423676772182, -.53515102147655], + [1.35642227654922, .53204130038923, .69844068787197, 1.04544871561741], + [.57797880484094, .08044525072063, -1.32634695941334, .35179408060132], + [1.29437232500619, 1.07461562326311, .54545226737269, -.6836610122092], + [2.74736726573105, .90881277479338, -.98342785084735, 1.38171127911719], + [-.67749479829901, 1.10093727650063, .28416704607992, -.24984509303044], + [-.24513961858774, 1.32098977907584, .16904762754153, .00886790270539], + [-.5392290825383, -1.43851802284774, 1.0064737206577, -1.52649870396689], + [.19486366400459, 2.77236000318994, -1.32201258472682, -.75922390642504], + [.33271229220962, -.78464273816827, 1.09930224781861, -.32184679755027], + [-1.72814706427698, -1.09275114767838, .7451569579997, .72871211772761], + [-.035506207751, -.72161367235521, .52828318684787, .87177739169758], + [1.31224955134141, -.22742530984642, -.44682270809773, -1.72769462581607], + [-.07125058353119, -.36850925227739, -1.01188688859296, -.24962251325969], + [-.69840680770104, .4925285516285, -1.0255829922787, -.36214090052941], + [-.2530614593082, -.68595709316063, -.56882710610856, 1.25787365685572], + [1.93782484285419, 2.67095706598253, 2.4023579082791, -.09112046819432], + [1.57782156817208, -.39819017512275, 1.01938038947667, .39718992194809], + [1.6839282738726, -.37808442385434, -1.36566197748227, 1.22029200163339], + [.54652714502605, -.38206797548206, -.70554510441189, -1.31224358889695], + [-1.30026063006148, .90642495630747, .02711437433058, -.44482098905042], + [-.1239033493518, -1.29112252171673, .18092802221218, .22673242779457], + [.01152882540055, 1.13242883415094, 2.34980443084773, .17712319903618], + [-.0505195424414, .6807219067402, .37771832345982, .0842510459176], + [-.44230076745505, -.07002728477811, -.6716520563439, .09637247949641], + [-1.31245480585229, -.01674966464909, 1.21063252882651, -.03927111631335], + [-2.94268586886381, .20925236551048, .30321714445262, .22027672852006], + [2.04121905977187, .58496246543101, -.5192457175416, -.37212298770116]]) +princomp1.values = array([ + [1.29489288337888], + [1.12722515391348], + [.94682423958163], + [.65890241090379]]) +princomp1.name = 'princomp1' +princomp1.coef = array([ + [.65989917631713, .22621848650964, -.5882833472413, -.40899997165748], + [.15824945056105, .3189419948895, .71689623797385, -.5994104597619], + [-.3488766362785, .90294049788532, -.17151017930575, .1832151967827], + [.64635538301471, .17832458477678, .33251578268108, .66321815082225]]) + +princomp2 = Holder() +princomp2.comment = 'mlab.princomp(x[:20,], nout=3)' +princomp2.factors = array([ + [.74592631465403, -.92093638563647, 1.10020213969681, -.20234362115983], + [.40379773814409, -.23694214086306, -.53526599590626, .48048423978257], + [-.43826559396565, -.26267383420164, .35939862515391, -.15176605914773], + [.29427656853499, -.56363285386285, .19525662206552, -.0384830001072], + [-1.4327917748351, 1.18414191887856, .05435949672922, .46861687286613], + [.23033214569426, -.00452237842477, .00346120473054, -.61483888402985], + [-.40976419499281, .10137131352284, .02570805136468, .06798926306103], + [.83201287149759, .82736894861103, -.35298970920805, .49344802383821], + [-3.36634598435507, -.18324521714611, -1.12118215528184, .2057949493723], + [.70198992281665, -1.1856449495675, .02465727900177, -.08333428418838], + [-.13789069679894, -.79430992968357, -.33106496391047, -1.01808298459082], + [-.10779840884825, -1.41970796854378, 1.55590290358904, 1.34014813517248], + [1.8229340670437, .13065838030104, -1.06152350166072, .11456488463131], + [.51650051521229, .07999783864926, -1.08601194413786, -.28255247881905], + [-.24654203558433, -1.02895891025197, -1.34475655787845, .52240852619949], + [.03542169335227, -.01198903021187, 1.12649412049726, -.60518306798831], + [-1.23945075955452, .48778599927278, 1.11522465483282, -.994827967694], + [.30661562766349, 1.91993049714024, 1.08834307939522, .61608892787963], + [.8241280516035, .43533554216801, -.48261931874702, -.22391158066897], + [.6649139327178, 1.44597315984982, -.33359403032613, -.094219894409]]) +princomp2.values = array([ + [1.16965204468073], + [.77687367815155], + [.72297937656591], + [.32548581375971]]) +princomp2.name = 'princomp2' +princomp2.coef = array([ + [-.13957162231397, .6561182967648, .32256106777669, .66781951188167], + [.49534264552989, -.08241251099014, -.6919444767593, .51870674049413], + [-.85614372781797, -.11427402995055, -.47665923729502, .16357058078438], + [.04661912785591, .74138950947638, -.43584764555793, -.50813884128056]]) + +princomp3 = Holder() +princomp3.comment = 'mlab.princomp(x[:20,]-x[:20,].mean(0), nout=3)' +princomp3.factors = array([ + [.74592631465403, -.92093638563647, 1.10020213969681, -.20234362115983], + [.40379773814409, -.23694214086306, -.53526599590626, .48048423978257], + [-.43826559396565, -.26267383420164, .35939862515391, -.15176605914773], + [.29427656853499, -.56363285386285, .19525662206552, -.0384830001072], + [-1.4327917748351, 1.18414191887856, .05435949672922, .46861687286613], + [.23033214569426, -.00452237842477, .00346120473054, -.61483888402985], + [-.40976419499281, .10137131352284, .02570805136468, .06798926306103], + [.83201287149759, .82736894861103, -.35298970920805, .49344802383821], + [-3.36634598435507, -.18324521714611, -1.12118215528184, .2057949493723], + [.70198992281665, -1.1856449495675, .02465727900177, -.08333428418838], + [-.13789069679894, -.79430992968357, -.33106496391047, -1.01808298459082], + [-.10779840884825, -1.41970796854378, 1.55590290358904, 1.34014813517248], + [1.8229340670437, .13065838030104, -1.06152350166072, .11456488463131], + [.51650051521229, .07999783864926, -1.08601194413786, -.28255247881905], + [-.24654203558433, -1.02895891025197, -1.34475655787845, .52240852619949], + [.03542169335227, -.01198903021187, 1.12649412049726, -.60518306798831], + [-1.23945075955452, .48778599927278, 1.11522465483282, -.994827967694], + [.30661562766349, 1.91993049714024, 1.08834307939522, .61608892787963], + [.8241280516035, .43533554216801, -.48261931874702, -.22391158066897], + [.6649139327178, 1.44597315984982, -.33359403032613, -.094219894409]]) +princomp3.values = array([ + [1.16965204468073], + [.77687367815155], + [.72297937656591], + [.32548581375971]]) +princomp3.name = 'princomp3' +princomp3.coef = array([ + [-.13957162231397, .6561182967648, .32256106777669, .66781951188167], + [.49534264552989, -.08241251099014, -.6919444767593, .51870674049413], + [-.85614372781797, -.11427402995055, -.47665923729502, .16357058078438], + [.04661912785591, .74138950947638, -.43584764555793, -.50813884128056]]) diff --git a/statsmodels/multivariate/tests/results/factor_data.csv b/statsmodels/multivariate/tests/results/factor_data.csv new file mode 100644 index 0000000..2d87eeb --- /dev/null +++ b/statsmodels/multivariate/tests/results/factor_data.csv @@ -0,0 +1,101 @@ +var1,var2,var3,var4,var5 +2.3358,0.0044,0.3163,0.8698,1.4817 +3.1387,-0.1494,1.1793,2.1482,-0.2141 +0.0501,0.6111,-0.892,1.0971,-2.6557 +-0.029,-1.7519,-0.5098,-0.5294,0.2512 +-0.0012,-0.8835,3.1745,3.6743,2.9339 +1.3228,0.1419,0.6433,2.5167,0.9105 +0.9066,-0.7031,-0.9839,-0.0551,0.049 +-1.5817,-1.332,1.0518,-1.1584,-0.9183 +2.9412,-1.9048,-1.328,0.3225,-0.2039 +-1.5636,-1.506,1.6153,1.8511,0.9356 +-0.5645,-0.7889,1.136,1.9609,2.5086 +-0.802,-0.3495,-1.6138,-0.4514,-0.5998 +0.7878,0.8931,0.3226,-1.0011,1.4319 +-2.375,-0.6369,-0.5691,-1.3663,-1.7005 +-0.2379,0.4552,-0.0294,-0.5558,1.4641 +-1.3576,-0.1541,0.2684,-2.3244,-1.2963 +0.9799,0.219,-2.0489,-3.1371,-1.0562 +1.5379,2.7226,-0.0049,-3.8528,-0.4739 +-0.8352,-0.8438,-0.4886,0.8641,-1.2653 +1.3476,-0.0039,-0.8244,0.2143,0.0362 +0.3315,-0.2731,-0.2188,-2.3388,-0.3962 +-0.2723,0.6647,-0.2893,0.0999,-0.8111 +-0.1344,0.695,0.6257,-0.283,-0.5913 +-2.2572,-1.5057,1.3967,0.471,0.0997 +1.0519,-1.3884,1.0226,-1.0947,1.3978 +1.7878,1.8082,-0.694,0.6162,-0.9046 +0.5601,0.8636,0.4449,0.6998,1.0791 +-0.2156,1.4126,2.0064,0.3332,0.0751 +-1.2607,-1.2132,-0.0598,-1.693,-1.0813 +0.7107,1.9284,1.2093,-0.0175,1.0042 +0.0362,1.7571,-0.0752,1.8337,2.6863 +2.1175,0.8949,-1.765,0.6082,0.8375 +-1.0219,0.2911,-0.727,0.2553,-1.6644 +2.653,0.0148,0.4559,-0.0419,1.2743 +-0.3103,0.4724,-0.6975,0.3755,3.4604 +-1.7467,0.4565,-1.7263,0.9031,0.1875 +-0.574,-2.3953,-0.8059,1.5461,-0.8906 +-1.5758,1.8004,-1.3741,0.9648,0.0344 +-1.2976,-0.6741,2.0647,2.1778,1.5391 +0.6771,2.042,0.3806,-2.4027,-2.3492 +-1.0357,0.5604,0.2532,-1.6972,-0.4285 +-0.17,-0.0818,-2.5097,-1.4429,-0.8825 +-0.9111,-0.5983,-1.3297,0.5678,2.5338 +0.0865,2.3449,-1.9526,0.16,0.4645 +0.7475,-0.5134,-0.598,0.5344,0.0727 +-2.298,-0.8431,0.2371,-0.7896,-1.7017 +3.008,-0.271,0.4868,0.4959,0.1369 +0.376,1.0972,-1.4817,0.1465,0.8261 +-0.2943,-1.9401,-0.4638,1.8092,0.9328 +0.131,-0.8266,-1.4767,-0.5936,-2.0493 +-0.1,0.265,0.4371,1.1967,1.8712 +0.8886,0.945,-0.1471,-0.1363,-0.9092 +0.1406,-0.5044,-1.3068,1.441,-3.8205 +1.896,1.0309,1.1718,2.3715,1.6846 +-2.3731,0.3547,-2.5275,0.3097,-1.4761 +-0.5936,-1.5261,-1.0773,1.417,1.3027 +-2.4798,-1.5857,-0.6344,-2.1682,-0.002 +0.7588,0.0225,1.2982,0.01,1.1708 +-0.0718,1.9237,1.3538,1.4318,1.4835 +1.1017,-0.5897,-0.3399,1.2663,1.6784 +-0.7308,0.6094,-0.7773,0.2373,1.013 +1.0155,-0.2549,1.2958,0.6724,0.484 +-0.4901,0.92,0.4208,0.2325,1.6677 +0.6138,1.4609,0.3375,-0.8655,-1.2248 +0.3232,-0.2704,2.8568,-0.7418,1.2925 +1.1547,0.2841,0.3959,-0.2621,1.2498 +-0.8148,-0.1754,-0.6326,-2.8309,-3.0651 +-2.6977,-1.9161,-1.1292,-1.4923,0.3646 +-3.1057,-0.2471,0.3585,-1.0263,-0.1043 +0.666,0.368,0.0196,-1.1868,0.2599 +-1.0735,-1.3328,-0.9537,-0.2594,-1.2733 +-0.0316,2.3285,1.872,0.1398,3.1739 +-0.495,-0.245,-2.0064,-1.315,-1.4454 +-1.1888,-1.0905,1.0745,1.2094,1.4798 +-2.7048,-0.9399,-1.1409,-1.3737,-1.2151 +1.2275,2.3317,-1.3622,-0.9929,-1.5922 +-2.659,-1.18,-1.6486,-0.2288,0.4164 +-0.5639,2.0618,-1.9634,0.1514,1.6458 +-1.8483,-0.4639,0.6209,-0.0183,2.4059 +-0.4303,-0.1728,-0.3347,-0.3546,-0.7524 +1.9564,-0.6527,0.4776,1.3519,-0.9619 +-1.5531,-1.2717,1.4032,0.9843,0.3788 +2.0049,-0.6503,0.0042,-0.3649,1.1627 +-0.1315,0.5443,0.5422,0.8582,0.4374 +0.5894,-0.2894,0.8457,0.641,0.3239 +1.7067,-0.4797,-0.2498,1.1692,0.5081 +-3.2533,1.3689,1.0815,1.6946,0.8739 +2.8036,0.5355,0.0828,-0.7673,-1.0338 +-1.0385,-0.6787,0.8265,-1.7571,-3.1357 +-2.1853,0.2404,-0.5056,-1.7177,0.6123 +2.2815,0.5445,1.2507,0.6492,-0.6182 +0.247,0.1745,0.8681,-1.4099,1.3582 +0.1303,0.9697,0.6633,0.3373,-0.5746 +-0.6143,-0.3428,1.3671,-1.5012,-2.0953 +3.2129,0.5585,0.0043,0.9622,-1.0555 +-1.3977,-0.1699,-2.4553,-1.2764,-1.0301 +-1.1966,-0.6408,-1.0887,-1.4875,-0.4743 +-1.7013,0.2085,0.2438,-1.2822,-1.4098 +-0.6957,-1.055,-0.6753,-0.3784,-1.9997 +1.7702,1.1211,-0.6032,-0.6982,0.4066 diff --git a/statsmodels/multivariate/tests/results/factors_stata.csv b/statsmodels/multivariate/tests/results/factors_stata.csv new file mode 100644 index 0000000..55c8394 --- /dev/null +++ b/statsmodels/multivariate/tests/results/factors_stata.csv @@ -0,0 +1,101 @@ +f1,f2,f1b,f2b,f1o,f2o,f1ob,f2ob +.77409906,.5265066,1.2342164,1.5539443,.82174469,.64430356,1.3798437,1.7324318 +.90211532,.5778448,1.4354716,1.691956,.95415644,.71558883,1.5935961,1.9010544 +-.55152949,.10318112,-1.0868707,.62321661,-.53884179,.01300941,-1.0209297,.44003871 +-.11934901,-.53549872,.01129338,-1.8973372,-.17099081,-.54772966,-.17374833,-1.8707504 +2.3941179,-.26282474,4.6079809,-1.9774392,2.3570865,.12618302,4.3932292,-1.2095023 +1.0927031,.30140322,1.9283693,.6165865,1.1168835,.47345041,1.9792983,.91910478 +-.13079791,-.02496757,-.22584839,-.04664732,-.13260905,-.04570687,-.22932042,-.08241165 +-.33812166,-.74795931,-.33393451,-2.5509963,-.40943578,-.7926505,-.58106234,-2.5714763 +-.04786263,.01681279,-.0859222,.0515025,-.04599537,.00888495,-.08049141,.03699227 +1.0480495,-.81266539,2.3144765,-3.3816091,.96382241,-.63326664,1.9737471,-2.964715 +1.3937318,-.33515776,2.7734803,-1.8141489,1.3544142,-.10631967,2.5833894,-1.3437932 +-.60405968,-.29122039,-.99811882,-.79446532,-.62957534,-.38470365,-1.0708228,-.94484311 +.1768074,.51456466,.11159002,1.777466,.22613441,.53632266,.28435898,1.7722347 +-.96740945,-.723384,-1.5150277,-2.1864758,-1.0333294,-.86974388,-1.7209881,-2.4019313 +.20389441,.14744239,.3268983,.44172513,.21729843,.17835522,.36840847,.48860637 +-.92590203,-.31839571,-1.6216858,-.74416985,-.95253387,-.46335749,-1.6865151,-.99563074 +-1.467613,.3140052,-2.8897371,1.7524627,-1.4300057,.07354455,-2.7051065,1.2641888 +-1.1479964,1.2582306,-2.7173854,5.041731,-1.0198511,1.0569188,-2.2128766,4.5382765 +-.17961277,-.49664318,-.12436604,-1.7124124,-.22717909,-.51908693,-.29073149,-1.7100879 +-.03173505,.28265502,-.17368455,1.0251028,-.00402536,.27385425,-.07291087,.98374888 +-.73229133,.02886435,-1.397402,.41212285,-.7259882,-.08944924,-1.3505629,.18168897 +-.24941449,.1269423,-.52647655,.57374862,-.23584948,.08511655,-.46802849,.48146893 +-.10732968,.18432286,-.29391519,.7210821,-.08884709,.16463107,-.22221031,.66433352 +.39880577,-.95391695,1.1482693,-3.6091908,.30390006,-.87723612,.79090718,-3.3771456 +.35872658,-.13977614,.72766572,-.67702616,.34338949,-.08017796,.6581897,-.55099642 +-.1661692,.91000156,-.70379606,3.3628839,-.07665355,.87136053,-.37256614,3.2056372 +.55913446,.40910597,.87726935,1.2383401,.59635784,.49381506,.99382627,1.3634605 +.4792189,.40196303,.70586224,1.2632806,.51612661,.47389483,.82566748,1.36047 +-.73646072,-.63906787,-1.1203902,-1.9917138,-.79526024,-.74933373,-1.3092417,-2.1461547 +.4795629,.79207339,.55137636,2.6632818,.55450422,.85896807,.80841591,2.7173154 +1.1127571,.59389352,1.8580276,1.6695604,1.1653594,.76535228,2.0119553,1.9470045 +.08956588,.73845254,-.12614275,2.6149467,.16113731,.7432375,.12941213,2.5604956 +-.52911256,-.1793241,-.91998487,-.4085011,-.54407555,-.26219769,-.95543007,-.55133367 +.51942396,.61292952,.71244766,1.9736557,.57670908,.68858245,.90148216,2.0626324 +.8132702,.16897349,1.4862315,.24911189,.82587019,.29774627,1.5034386,.48522013 +-.12857721,-.24986049,-.11127733,-.84082875,-.1523257,-.26730639,-.19272687,-.84777395 +.08574189,-.93312063,.57059076,-3.4152487,-.00564465,-.90713076,.23488998,-3.2787713 +-.10989362,.20354792,-.27660743,.79824474,-.0895244,.18319224,-.19746176,.74327632 +1.3642833,-.48395053,2.7669022,-2.3267277,1.3105988,-.25791284,2.5268668,-1.8507401 +-1.1672069,.77791884,-2.5579395,3.3272367,-1.0857999,.57978316,-2.2213513,2.8718422 +-.55165952,-.01582468,-1.0412775,.18814338,-.55057411,-.10446383,-1.0179728,.0179878 +-1.1024776,-.06132851,-2.0295797,.2446312,-1.1032044,-.23808385,-1.9960589,-.08542956 +.51121121,-.32752081,1.1344589,-1.4159784,.47684277,-.24091389,.99099791,-1.2147876 +-.2827674,.75734733,-.8347537,2.8623962,-.20757982,.70192071,-.55169675,2.6905919 +.09876273,-.01059937,.19723165,-.08903476,.09725877,.00544491,.1876112,-.056108 +-.6421798,-.78126,-.88585867,-2.5329525,-.71529206,-.87448557,-1.1285977,-2.6425563 +.40709836,.55585896,.51952852,1.8181175,.45935433,.61416665,.69431739,1.8780547 +-.05459569,.44056716,-.27210725,1.6111778,-.01138085,.42602325,-.1137231,1.5463221 +.67929573,-.6847309,1.5879431,-2.7776557,.60929897,-.56639064,1.3095598,-2.4856551 +-.92607077,-.27752489,-1.6212673,-.60797893,-.94871697,-.42304737,-1.6728202,-.86115026 +.87850547,.09109933,1.6219634,-.05027553,.88320204,.23139495,1.609334,.21160078 +-.26970441,.46623015,-.71459682,1.8042973,-.22296261,.4167076,-.5352756,1.6656569 +-.79989201,-.26861592,-1.3954051,-.61625155,-.82227074,-.39393339,-1.4488407,-.83293939 +1.3522459,.72936579,2.2300877,2.0517907,1.4169156,.93762617,2.4195097,2.384166 +-.88674943,-.45168537,-1.4528825,-1.2385071,-.92656338,-.58860158,-1.5667133,-1.4563288 +.5197045,-.60245723,1.2605819,-2.4123386,.45848966,-.51089342,1.0193762,-2.1778289 +-.74788779,-.97828004,-.98283317,-3.2156233,-.83970562,-1.0859582,-1.2916697,-3.3319334 +.60152168,.20957638,1.0322015,.49464574,.61908925,.30371668,1.0755111,.65442646 +.98432058,.60450513,1.5874137,1.7740498,1.0385694,.75514043,1.7528183,2.006547 +.76389179,.07029355,1.4222455,-.08934065,.76710587,.19240203,1.4067588,.14088071 +.12791207,.05698825,.23093481,.15178897,.13285894,.07684478,.24463378,.18699996 +.62420468,.14365152,1.1006233,.24788906,.63523658,.24230553,1.1195484,.42191039 +.53308959,.22886039,.90944184,.60071557,.55286335,.31172784,.96367793,.739341 +-.47080363,.57870828,-1.1505061,2.3032231,-.41213726,.49533006,-.92046348,2.0878657 +.73660289,.05121274,1.3362788,-.13133352,.73808663,.16917538,1.3171075,.08559093 +.3750162,.38087227,.54184582,1.2062216,.41036404,.43629736,.65686931,1.2777407 +-1.6628303,-.25019609,-3.0399027,-.18082388,-1.6793018,-.51473173,-3.0430496,-.66804499 +-.57518971,-1.1354505,-.58045463,-3.8604945,-.68315424,-1.2132636,-.95408231,-3.9035827 +-.33048237,-.71724484,-.31867622,-2.4346249,-.39883828,-.76110666,-.55453068,-2.4541665 +-.21711319,.29449836,-.53874819,1.1527255,-.18736559,.25568751,-.42379218,1.0509114 +-.57134442,-.67766186,-.78074037,-2.2034566,-.63469348,-.76083165,-.9918548,-2.3004322 +1.1568365,.81787262,1.8212026,2.4652365,1.2310664,.99350661,2.0528831,2.7263631 +-1.1158728,-.19839769,-2.0042252,-.23966229,-1.1298999,-.37552105,-2.0180431,-.55931767 +.90698836,-.57501394,1.9541201,-2.467368,.84660404,-.42143564,1.7042449,-2.1204445 +-.96822116,-.87756275,-1.4404227,-2.7473047,-1.0491694,-1.0220407,-1.7014187,-2.9434239 +-.93949139,.96862152,-2.1843695,3.9104251,-.840576,.80467039,-1.7927011,3.5075818 +-.34872923,-.92561876,-.23562044,-3.1952854,-.43731439,-.96969915,-.54603402,-3.1915211 +-.01008118,.56239284,-.22983374,2.0376015,.04479942,.55342776,-.03007525,1.9739874 +.6753194,-.46834193,1.4803838,-1.98315,.62643921,-.35346682,1.2799762,-1.7188435 +-.34822558,-.15758844,-.58978344,-.41711157,-.36193118,-.2116136,-.62764134,-.50665223 +.32773507,.16164562,.53650026,.43747533,.34193386,.21231779,.57659746,.51816881 +.62853751,-.73379458,1.4879734,-2.9151351,.55399893,-.62298855,1.1966623,-2.6374401 +.30674611,.26827549,.46503444,.81759821,.33144117,.31417541,.54253362,.88181986 +.44192818,.14021085,.7685949,.32232893,.45349306,.20955383,.79635969,.44190477 +.46887837,.03616074,.85905645,-.07268136,.47017009,.11120237,.84787727,.06661995 +.48475223,.20430528,.83041791,.51731057,.5023622,.27970846,.87689861,.64429782 +.73545423,-.27367592,1.5001756,-1.2762381,.70526722,-.15165716,1.3685967,-1.0179721 +-.33495813,.75918345,-.96995976,2.8784489,-.25934288,.69532746,-.68469352,2.6846599 +-1.0941765,-.47592994,-1.8866643,-1.2349393,-1.135366,-.64593615,-1.9980805,-1.5226689 +-.48718385,-.3357568,-.76630583,-.99841793,-.51759859,-.40983563,-.85999933,-1.1087994 +.3617318,.6347137,.38779162,2.1372949,.42189215,.68468566,.5943275,2.1718491 +.15777211,.18310759,.21152508,.5882512,.17487318,.20612677,.26787102,.61463863 +.07296441,.31367206,-.00945973,1.1123917,.1031994,.32132842,.09904208,1.096347 +-.64908777,-.25472472,-1.1440559,-.62922708,-.67083062,-.35593625,-1.199954,-.80526531 +.12122439,.81412903,-.13059422,2.8820144,.20002335,.82302476,.15102062,2.82336 +-1.1305481,-.35912583,-1.9541954,-.81215474,-1.160176,-.53651452,-2.0240689,-1.1162794 +-.75096061,-.43799405,-1.2186468,-1.2618644,-.79008663,-.55321997,-1.3358709,-1.4416571 +-.70483427,-.304975,-1.2091407,-.78438434,-.73121086,-.41450863,-1.2798564,-.96887917 +-.7211226,-.52612824,-1.1360481,-1.5881501,-.76898374,-.63539819,-1.2854782,-1.7503809 +-.15257555,.75718097,-.60854757,2.7933029,-.07802447,.72272415,-.33330485,2.6588313 diff --git a/statsmodels/multivariate/tests/test_cancorr.py b/statsmodels/multivariate/tests/test_cancorr.py new file mode 100644 index 0000000..ceb6800 --- /dev/null +++ b/statsmodels/multivariate/tests/test_cancorr.py @@ -0,0 +1,110 @@ +# -*- coding: utf-8 -*- + +import pandas as pd +from ..cancorr import CanCorr +from numpy.testing import assert_almost_equal + +data_fit = pd.DataFrame([[191, 36, 50, 5, 162, 60], + [189, 37, 52, 2, 110, 60], + [193, 38, 58, 12, 101, 101], + [162, 35, 62, 12, 105, 37], + [189, 35, 46, 13, 155, 58], + [182, 36, 56, 4, 101, 42], + [211, 38, 56, 8, 101, 38], + [167, 34, 60, 6, 125, 40], + [176, 31, 74, 15, 200, 40], + [154, 33, 56, 17, 251, 250], + [169, 34, 50, 17, 120, 38], + [166, 33, 52, 13, 210, 115], + [154, 34, 64, 14, 215, 105], + [247, 46, 50, 1, 50, 50], + [193, 36, 46, 6, 70, 31], + [202, 37, 62, 12, 210, 120], + [176, 37, 54, 4, 60, 25], + [157, 32, 52, 11, 230, 80], + [156, 33, 54, 15, 225, 73], + [138, 33, 68, 2, 110, 43]]) + + +def test_cancorr(): + # Compare results to SAS example: + # https://support.sas.com/documentation/cdl/en/statug/63347/HTML/default/ + # viewer.htm#statug_cancorr_sect020.htm + X1 = data_fit.iloc[:, :3] + Y1 = data_fit.iloc[:, 3:] + mod = CanCorr(Y1, X1) + r = mod.corr_test() + assert_almost_equal(r.stats_mv.loc["Wilks' lambda", 'Value'], + 0.35039053, decimal=8) + assert_almost_equal(r.stats_mv.loc["Pillai's trace", 'Value'], + 0.67848151, decimal=8) + assert_almost_equal(r.stats_mv.loc["Hotelling-Lawley trace", 'Value'], + 1.77194146, decimal=8) + assert_almost_equal(r.stats_mv.loc["Roy's greatest root", 'Value'], + 1.72473874, decimal=8) + assert_almost_equal(r.stats_mv.loc["Wilks' lambda", 'F Value'], + 2.05, decimal=2) + assert_almost_equal(r.stats_mv.loc["Pillai's trace", 'F Value'], + 1.56, decimal=2) + assert_almost_equal(r.stats_mv.loc["Hotelling-Lawley trace", + 'F Value'], + 2.64, decimal=2) + assert_almost_equal(r.stats_mv.loc["Roy's greatest root", 'F Value'], + 9.20, decimal=2) + assert_almost_equal(r.stats_mv.loc["Wilks' lambda", 'Num DF'], + 9, decimal=3) + assert_almost_equal(r.stats_mv.loc["Pillai's trace", 'Num DF'], + 9, decimal=3) + assert_almost_equal(r.stats_mv.loc["Hotelling-Lawley trace", + 'Num DF'], + 9, decimal=3) + assert_almost_equal(r.stats_mv.loc["Roy's greatest root", 'Num DF'], + 3, decimal=3) + assert_almost_equal(r.stats_mv.loc["Wilks' lambda", 'Den DF'], + 34.223, decimal=3) + assert_almost_equal(r.stats_mv.loc["Pillai's trace", 'Den DF'], + 48, decimal=3) + assert_almost_equal(r.stats_mv.loc["Hotelling-Lawley trace", + 'Den DF'], + 19.053, decimal=3) + assert_almost_equal(r.stats_mv.loc["Roy's greatest root", 'Den DF'], + 16, decimal=3) + assert_almost_equal(r.stats_mv.loc["Wilks' lambda", 'Pr > F'], + 0.0635, decimal=4) + assert_almost_equal(r.stats_mv.loc["Pillai's trace", 'Pr > F'], + 0.1551, decimal=4) + assert_almost_equal(r.stats_mv.loc["Hotelling-Lawley trace", + 'Pr > F'], + 0.0357, decimal=4) + assert_almost_equal(r.stats_mv.loc["Roy's greatest root", 'Pr > F'], + 0.0009, decimal=4) + assert_almost_equal(r.stats.loc[0, "Wilks' lambda"], + 0.35039053, decimal=8) + assert_almost_equal(r.stats.loc[1, "Wilks' lambda"], + 0.95472266, decimal=8) + assert_almost_equal(r.stats.loc[2, "Wilks' lambda"], + 0.99473355, decimal=8) + assert_almost_equal(r.stats.loc[0, 'F Value'], + 2.05, decimal=2) + assert_almost_equal(r.stats.loc[1, 'F Value'], + 0.18, decimal=2) + assert_almost_equal(r.stats.loc[2, 'F Value'], + 0.08, decimal=2) + assert_almost_equal(r.stats.loc[0, 'Num DF'], + 9, decimal=2) + assert_almost_equal(r.stats.loc[1, 'Num DF'], + 4, decimal=2) + assert_almost_equal(r.stats.loc[2, 'Num DF'], + 1, decimal=2) + assert_almost_equal(r.stats.loc[0, 'Den DF'], + 34.223, decimal=3) + assert_almost_equal(r.stats.loc[1, 'Den DF'], + 30, decimal=2) + assert_almost_equal(r.stats.loc[2, 'Den DF'], + 16, decimal=2) + assert_almost_equal(r.stats.loc[0, 'Pr > F'], + 0.0635, decimal=4) + assert_almost_equal(r.stats.loc[1, 'Pr > F'], + 0.9491, decimal=4) + assert_almost_equal(r.stats.loc[2, 'Pr > F'], + 0.7748, decimal=4) diff --git a/statsmodels/multivariate/tests/test_factor.py b/statsmodels/multivariate/tests/test_factor.py new file mode 100644 index 0000000..43258b9 --- /dev/null +++ b/statsmodels/multivariate/tests/test_factor.py @@ -0,0 +1,304 @@ +# -*- coding: utf-8 -*- + +import os + +import numpy as np +import pandas as pd +from statsmodels.multivariate.factor import Factor +from numpy.testing import (assert_equal, assert_array_almost_equal, + assert_raises, assert_array_equal, assert_, assert_array_less) +from numpy.testing.utils import assert_allclose +import pytest + +try: + import matplotlib.pyplot as plt + missing_matplotlib = False + plt.switch_backend('Agg') + +except ImportError: + missing_matplotlib = True + +# Example data +# https://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/ +# viewer.htm#statug_introreg_sect012.htm +X = pd.DataFrame([['Minas Graes', 2.068, 2.070, 1.580, 1, 0], + ['Minas Graes', 2.068, 2.074, 1.602, 2, 1], + ['Minas Graes', 2.090, 2.090, 1.613, 3, 0], + ['Minas Graes', 2.097, 2.093, 1.613, 4, 1], + ['Minas Graes', 2.117, 2.125, 1.663, 5, 0], + ['Minas Graes', 2.140, 2.146, 1.681, 6, 1], + ['Matto Grosso', 2.045, 2.054, 1.580, 7, 0], + ['Matto Grosso', 2.076, 2.088, 1.602, 8, 1], + ['Matto Grosso', 2.090, 2.093, 1.643, 9, 0], + ['Matto Grosso', 2.111, 2.114, 1.643, 10, 1], + ['Santa Cruz', 2.093, 2.098, 1.653, 11, 0], + ['Santa Cruz', 2.100, 2.106, 1.623, 12, 1], + ['Santa Cruz', 2.104, 2.101, 1.653, 13, 0]], + columns=['Loc', 'Basal', 'Occ', 'Max', 'id', 'alt']) + + +def test_auto_col_name(): + # Test auto generated variable names when endog_names is None + mod = Factor(None, 2, corr=np.eye(11), endog_names=None, + smc=False) + assert_array_equal(mod.endog_names, + ['var00', 'var01', 'var02', 'var03', 'var04', 'var05', + 'var06', 'var07', 'var08', 'var09', 'var10']) + + +def test_direct_corr_matrix(): + # Test specifying the correlation matrix directly + mod = Factor(None, 2, corr=np.corrcoef(X.iloc[:, 1:-1], rowvar=0), + smc=False) + results = mod.fit(tol=1e-10) + a = np.array([[0.965392158864, 0.225880658666255], + [0.967587154301, 0.212758741910989], + [0.929891035996, -0.000603217967568], + [0.486822656362, -0.869649573289374]]) + assert_array_almost_equal(results.loadings, a, decimal=8) + # Test set and get endog_names + mod.endog_names = X.iloc[:, 1:-1].columns + assert_array_equal(mod.endog_names, ['Basal', 'Occ', 'Max', 'id']) + + # Test set endog_names with the wrong number of elements + assert_raises(ValueError, setattr, mod, 'endog_names', + X.iloc[:, :1].columns) + + +def test_unknown_fa_method_error(): + # Test raise error if an unkonwn FA method is specified in fa.method + mod = Factor(X.iloc[:, 1:-1], 2, method='ab') + assert_raises(ValueError, mod.fit) + + +def test_example_compare_to_R_output(): + # Testing basic functions and compare to R output + + # R code for producing the results: + # library(psych) + # library(GPArotation) + # Basal = c(2.068, 2.068, 2.09, 2.097, 2.117, 2.14, 2.045, 2.076, 2.09, 2.111, 2.093, 2.1, 2.104) + # Occ = c(2.07, 2.074, 2.09, 2.093, 2.125, 2.146, 2.054, 2.088, 2.093, 2.114, 2.098, 2.106, 2.101) + # Max = c(1.58, 1.602, 1.613, 1.613, 1.663, 1.681, 1.58, 1.602, 1.643, 1.643, 1.653, 1.623, 1.653) + # id = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13) + # Y <- cbind(Basal, Occ, Max, id) + # a <- fa(Y, nfactors=2, fm="pa", rotate="none", SMC=FALSE, min.err=1e-10) + # b <- cbind(a$loadings[,1], -a$loadings[,2]) + # b + # a <- fa(Y, nfactors=2, fm="pa", rotate="Promax", SMC=TRUE, min.err=1e-10) + # b <- cbind(a$loadings[,1], a$loadings[,2]) + # b + # a <- fa(Y, nfactors=2, fm="pa", rotate="Varimax", SMC=TRUE, min.err=1e-10) + # b <- cbind(a$loadings[,1], a$loadings[,2]) + # b + # a <- fa(Y, nfactors=2, fm="pa", rotate="quartimax", SMC=TRUE, min.err=1e-10) + # b <- cbind(a$loadings[,1], -a$loadings[,2]) + # b + # a <- fa(Y, nfactors=2, fm="pa", rotate="oblimin", SMC=TRUE, min.err=1e-10) + # b <- cbind(a$loadings[,1], a$loadings[,2]) + # b + + # No rotation without squared multiple correlations prior + # produce same results as in R `fa` + mod = Factor(X.iloc[:, 1:-1], 2, smc=False) + results = mod.fit(tol=1e-10) + a = np.array([[0.965392158864, 0.225880658666255], + [0.967587154301, 0.212758741910989], + [0.929891035996, -0.000603217967568], + [0.486822656362, -0.869649573289374]]) + assert_array_almost_equal(results.loadings, a, decimal=8) + + # No rotation WITH squared multiple correlations prior + # produce same results as in R `fa` + mod = Factor(X.iloc[:, 1:-1], 2, smc=True) + results = mod.fit() + a = np.array([[0.97541115, 0.20280987], + [0.97113975, 0.17207499], + [0.9618705, -0.2004196], + [0.37570708, -0.45821379]]) + assert_array_almost_equal(results.loadings, a, decimal=8) + + # Same as R GRArotation + results.rotate('varimax') + a = np.array([[0.98828898, -0.12587155], + [0.97424206, -0.15354033], + [0.84418097, -0.502714], + [0.20601929, -0.55558235]]) + assert_array_almost_equal(results.loadings, a, decimal=8) + + results.rotate('quartimax') # Same as R fa + a = np.array([[0.98935598, 0.98242714, 0.94078972, 0.33442284], + [0.117190049, 0.086943252, -0.283332952, -0.489159543]]) + assert_array_almost_equal(results.loadings, a.T, decimal=8) + + results.rotate('equamax') # Not the same as R fa + + results.rotate('promax') # Not the same as R fa + + results.rotate('biquartimin') # Not the same as R fa + + results.rotate('oblimin') # Same as R fa + a = np.array([[1.02834170170, 1.00178840104, 0.71824931384, + -0.00013510048], + [0.06563421, 0.03096076, -0.39658839, -0.59261944]]) + assert_array_almost_equal(results.loadings, a.T, decimal=8) + + # Testing result summary string + results.rotate('varimax') + desired = ( +""" Factor analysis results +============================= + Eigenvalues +----------------------------- + Basal Occ Max id +----------------------------- + 2.9609 0.3209 0.0000 -0.0000 +----------------------------- + +----------------------------- + Communality +----------------------------- + Basal Occ Max id +----------------------------- + 0.9926 0.9727 0.9654 0.3511 +----------------------------- + +----------------------------- + Pre-rotated loadings +----------------------------------- + factor 0 factor 1 +----------------------------------- +Basal 0.9754 0.2028 +Occ 0.9711 0.1721 +Max 0.9619 -0.2004 +id 0.3757 -0.4582 +----------------------------- + +----------------------------- + varimax rotated loadings +----------------------------------- + factor 0 factor 1 +----------------------------------- +Basal 0.9883 -0.1259 +Occ 0.9742 -0.1535 +Max 0.8442 -0.5027 +id 0.2060 -0.5556 +============================= +""") + actual = results.summary().as_text() + actual = "\n".join(line.rstrip() for line in actual.splitlines()) + "\n" + assert_equal(actual, desired) + + +@pytest.mark.skipif(missing_matplotlib, reason='matplotlib not available') +def test_plots(close_figures): + mod = Factor(X.iloc[:, 1:], 3) + results = mod.fit() + results.rotate('oblimin') + fig = results.plot_scree() + + fig_loadings = results.plot_loadings() + assert_equal(3, len(fig_loadings)) + + +@pytest.mark.smoke +def test_getframe_smoke(): + # mostly smoke tests for now + mod = Factor(X.iloc[:, 1:-1], 2, smc=True) + res = mod.fit() + + df = res.get_loadings_frame(style='raw') + assert_(isinstance(df, pd.DataFrame)) + + lds = res.get_loadings_frame(style='strings', decimals=3, threshold=0.3) + lds.to_latex() + + # The Styler option require jinja2, skip if not available + try: + from jinja2 import Template # noqa:F401 + except ImportError: + return + # TODO: separate this and do pytest.skip? + + try: + from pandas.io import formats as pd_formats + except ImportError: + from pandas import formats as pd_formats + + ldf = res.get_loadings_frame(style='display') + assert_(isinstance(ldf, pd_formats.style.Styler)) + assert_(isinstance(ldf.data, pd.DataFrame)) + + res.get_loadings_frame(style='display', decimals=3, threshold=0.2) + + res.get_loadings_frame(style='display', decimals=3, color_max='GAINSBORO') + + res.get_loadings_frame(style='display', decimals=3, threshold=0.45, highlight_max=False, sort_=False) + + +def test_factor_missing(): + xm = X.iloc[:, 1:-1].copy() + nobs, k_endog = xm.shape + xm.iloc[2,2] = np.nan + mod = Factor(xm, 2) + assert_equal(mod.nobs, nobs - 1) + assert_equal(mod.k_endog, k_endog) + assert_equal(mod.endog.shape, (nobs - 1, k_endog)) + + +def _zscore(x): + # helper function + return (x - x.mean(0)) / x.std(0) + + +@pytest.mark.smoke +def test_factor_scoring(): + path = os.path.abspath(__file__) + dir_path = os.path.dirname(path) + csv_path = os.path.join(dir_path, 'results', 'factor_data.csv') + y = pd.read_csv(csv_path) + csv_path = os.path.join(dir_path, 'results', 'factors_stata.csv') + f_s = pd.read_csv(csv_path) + # mostly smoke tests for now + mod = Factor(y, 2) + res = mod.fit(maxiter=1) + res.rotate('varimax') + f_reg = res.factor_scoring(method='reg') + assert_allclose(f_reg * [1, -1], f_s[["f1", 'f2']].values, + atol=1e-4, rtol=1e-3) + f_bart = res.factor_scoring() + assert_allclose(f_bart * [1, -1], f_s[["f1b", 'f2b']].values, + atol=1e-4, rtol=1e-3) + + # check we have high correlation to ols and gls + f_ols = res.factor_scoring(method='ols') + f_gls = res.factor_scoring(method='gls') + f_reg_z = _zscore(f_reg) + f_ols_z = _zscore(f_ols) + f_gls_z = _zscore(f_gls) + assert_array_less(0.98, (f_ols_z * f_reg_z).mean(0)) + assert_array_less(0.999, (f_gls_z * f_reg_z).mean(0)) + + # with oblique rotation + res.rotate('oblimin') + # Note: Stata has second factor with flipped sign compared to statsmodels + assert_allclose(res._corr_factors()[0, 1], (-1) * 0.25651037, rtol=1e-3) + f_reg = res.factor_scoring(method='reg') + assert_allclose(f_reg * [1, -1], f_s[["f1o", 'f2o']].values, + atol=1e-4, rtol=1e-3) + f_bart = res.factor_scoring() + assert_allclose(f_bart * [1, -1], f_s[["f1ob", 'f2ob']].values, + atol=1e-4, rtol=1e-3) + + # check we have high correlation to ols and gls + f_ols = res.factor_scoring(method='ols') + f_gls = res.factor_scoring(method='gls') + f_reg_z = _zscore(f_reg) + f_ols_z = _zscore(f_ols) + f_gls_z = _zscore(f_gls) + assert_array_less(0.97, (f_ols_z * f_reg_z).mean(0)) + assert_array_less(0.999, (f_gls_z * f_reg_z).mean(0)) + + # check provided endog + f_ols2 = res.factor_scoring(method='ols', endog=res.model.endog) + assert_allclose(f_ols2, f_ols, rtol=1e-13) diff --git a/statsmodels/multivariate/tests/test_manova.py b/statsmodels/multivariate/tests/test_manova.py new file mode 100644 index 0000000..aa8d62f --- /dev/null +++ b/statsmodels/multivariate/tests/test_manova.py @@ -0,0 +1,171 @@ +# -*- coding: utf-8 -*- + +import numpy as np +import pandas as pd +import pytest +from numpy.testing import assert_almost_equal, assert_raises + +from statsmodels.multivariate.manova import MANOVA +from statsmodels.multivariate.multivariate_ols import MultivariateTestResults +from statsmodels.tools import add_constant + +# Example data +# https://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/ +# viewer.htm#statug_introreg_sect012.htm +X = pd.DataFrame([['Minas Graes', 2.068, 2.070, 1.580], + ['Minas Graes', 2.068, 2.074, 1.602], + ['Minas Graes', 2.090, 2.090, 1.613], + ['Minas Graes', 2.097, 2.093, 1.613], + ['Minas Graes', 2.117, 2.125, 1.663], + ['Minas Graes', 2.140, 2.146, 1.681], + ['Matto Grosso', 2.045, 2.054, 1.580], + ['Matto Grosso', 2.076, 2.088, 1.602], + ['Matto Grosso', 2.090, 2.093, 1.643], + ['Matto Grosso', 2.111, 2.114, 1.643], + ['Santa Cruz', 2.093, 2.098, 1.653], + ['Santa Cruz', 2.100, 2.106, 1.623], + ['Santa Cruz', 2.104, 2.101, 1.653]], + columns=['Loc', 'Basal', 'Occ', 'Max']) + + +def test_manova_sas_example(): + # Results should be the same as figure 4.5 of + # https://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/ + # viewer.htm#statug_introreg_sect012.htm + mod = MANOVA.from_formula('Basal + Occ + Max ~ Loc', data=X) + r = mod.mv_test() + assert_almost_equal(r['Loc']['stat'].loc["Wilks' lambda", 'Value'], + 0.60143661, decimal=8) + assert_almost_equal(r['Loc']['stat'].loc["Pillai's trace", 'Value'], + 0.44702843, decimal=8) + assert_almost_equal(r['Loc']['stat'].loc["Hotelling-Lawley trace", 'Value'], + 0.58210348, decimal=8) + assert_almost_equal(r['Loc']['stat'].loc["Roy's greatest root", 'Value'], + 0.35530890, decimal=8) + assert_almost_equal(r['Loc']['stat'].loc["Wilks' lambda", 'F Value'], + 0.77, decimal=2) + assert_almost_equal(r['Loc']['stat'].loc["Pillai's trace", 'F Value'], + 0.86, decimal=2) + assert_almost_equal(r['Loc']['stat'].loc["Hotelling-Lawley trace", 'F Value'], + 0.75, decimal=2) + assert_almost_equal(r['Loc']['stat'].loc["Roy's greatest root", 'F Value'], + 1.07, decimal=2) + assert_almost_equal(r['Loc']['stat'].loc["Wilks' lambda", 'Num DF'], + 6, decimal=3) + assert_almost_equal(r['Loc']['stat'].loc["Pillai's trace", 'Num DF'], + 6, decimal=3) + assert_almost_equal(r['Loc']['stat'].loc["Hotelling-Lawley trace", 'Num DF'], + 6, decimal=3) + assert_almost_equal(r['Loc']['stat'].loc["Roy's greatest root", 'Num DF'], + 3, decimal=3) + assert_almost_equal(r['Loc']['stat'].loc["Wilks' lambda", 'Den DF'], + 16, decimal=3) + assert_almost_equal(r['Loc']['stat'].loc["Pillai's trace", 'Den DF'], + 18, decimal=3) + assert_almost_equal(r['Loc']['stat'].loc["Hotelling-Lawley trace", 'Den DF'], + 9.0909, decimal=4) + assert_almost_equal(r['Loc']['stat'].loc["Roy's greatest root", 'Den DF'], + 9, decimal=3) + assert_almost_equal(r['Loc']['stat'].loc["Wilks' lambda", 'Pr > F'], + 0.6032, decimal=4) + assert_almost_equal(r['Loc']['stat'].loc["Pillai's trace", 'Pr > F'], + 0.5397, decimal=4) + assert_almost_equal(r['Loc']['stat'].loc["Hotelling-Lawley trace", 'Pr > F'], + 0.6272, decimal=4) + assert_almost_equal(r['Loc']['stat'].loc["Roy's greatest root", 'Pr > F'], + 0.4109, decimal=4) + + +def test_manova_no_formula(): + # Same as previous test only skipping formula interface + exog = add_constant(pd.get_dummies(X[['Loc']], drop_first=True)) + endog = X[['Basal', 'Occ', 'Max']] + mod = MANOVA(endog, exog) + intercept = np.zeros((1, 3)) + intercept[0, 0] = 1 + loc = np.zeros((2, 3)) + loc[0, 1] = loc[1, 2] = 1 + hypotheses = [('Intercept', intercept), ('Loc', loc)] + r = mod.mv_test(hypotheses) + assert_almost_equal(r['Loc']['stat'].loc["Wilks' lambda", 'Value'], + 0.60143661, decimal=8) + assert_almost_equal(r['Loc']['stat'].loc["Pillai's trace", 'Value'], + 0.44702843, decimal=8) + assert_almost_equal(r['Loc']['stat'].loc["Hotelling-Lawley trace", + 'Value'], + 0.58210348, decimal=8) + assert_almost_equal(r['Loc']['stat'].loc["Roy's greatest root", 'Value'], + 0.35530890, decimal=8) + assert_almost_equal(r['Loc']['stat'].loc["Wilks' lambda", 'F Value'], + 0.77, decimal=2) + assert_almost_equal(r['Loc']['stat'].loc["Pillai's trace", 'F Value'], + 0.86, decimal=2) + assert_almost_equal(r['Loc']['stat'].loc["Hotelling-Lawley trace", + 'F Value'], + 0.75, decimal=2) + assert_almost_equal(r['Loc']['stat'].loc["Roy's greatest root", 'F Value'], + 1.07, decimal=2) + assert_almost_equal(r['Loc']['stat'].loc["Wilks' lambda", 'Num DF'], + 6, decimal=3) + assert_almost_equal(r['Loc']['stat'].loc["Pillai's trace", 'Num DF'], + 6, decimal=3) + assert_almost_equal(r['Loc']['stat'].loc["Hotelling-Lawley trace", + 'Num DF'], + 6, decimal=3) + assert_almost_equal(r['Loc']['stat'].loc["Roy's greatest root", 'Num DF'], + 3, decimal=3) + assert_almost_equal(r['Loc']['stat'].loc["Wilks' lambda", 'Den DF'], + 16, decimal=3) + assert_almost_equal(r['Loc']['stat'].loc["Pillai's trace", 'Den DF'], + 18, decimal=3) + assert_almost_equal(r['Loc']['stat'].loc["Hotelling-Lawley trace", + 'Den DF'], + 9.0909, decimal=4) + assert_almost_equal(r['Loc']['stat'].loc["Roy's greatest root", 'Den DF'], + 9, decimal=3) + assert_almost_equal(r['Loc']['stat'].loc["Wilks' lambda", 'Pr > F'], + 0.6032, decimal=4) + assert_almost_equal(r['Loc']['stat'].loc["Pillai's trace", 'Pr > F'], + 0.5397, decimal=4) + assert_almost_equal(r['Loc']['stat'].loc["Hotelling-Lawley trace", + 'Pr > F'], + 0.6272, decimal=4) + assert_almost_equal(r['Loc']['stat'].loc["Roy's greatest root", 'Pr > F'], + 0.4109, decimal=4) + + +@pytest.mark.smoke +def test_manova_no_formula_no_hypothesis(): + # Same as previous test only skipping formula interface + exog = add_constant(pd.get_dummies(X[['Loc']], drop_first=True)) + endog = X[['Basal', 'Occ', 'Max']] + mod = MANOVA(endog, exog) + r = mod.mv_test() + assert isinstance(r, MultivariateTestResults) + + +def test_manova_test_input_validation(): + mod = MANOVA.from_formula('Basal + Occ + Max ~ Loc', data=X) + hypothesis = [('test', np.array([[1, 1, 1]]), None)] + mod.mv_test(hypothesis) + hypothesis = [('test', np.array([[1, 1]]), None)] + assert_raises(ValueError, mod.mv_test, hypothesis) + """ + assert_raises_regex(ValueError, + ('Contrast matrix L should have the same number of ' + 'columns as exog! 2 != 3'), + mod.mv_test, hypothesis) + """ + hypothesis = [('test', np.array([[1, 1, 1]]), np.array([[1], [1], [1]]))] + mod.mv_test(hypothesis) + hypothesis = [('test', np.array([[1, 1, 1]]), np.array([[1], [1]]))] + assert_raises(ValueError, mod.mv_test, hypothesis) + """ + assert_raises_regex(ValueError, + ('Transform matrix M should have the same number of ' + 'rows as the number of columns of endog! 2 != 3'), + mod.mv_test, hypothesis) + """ + +def test_endog_1D_array(): + assert_raises(ValueError, MANOVA.from_formula, 'Basal ~ Loc', X) diff --git a/statsmodels/multivariate/tests/test_ml_factor.py b/statsmodels/multivariate/tests/test_ml_factor.py new file mode 100644 index 0000000..9f29f8c --- /dev/null +++ b/statsmodels/multivariate/tests/test_ml_factor.py @@ -0,0 +1,189 @@ +import numpy as np +from statsmodels.multivariate.factor import Factor +from numpy.testing import assert_allclose, assert_equal +from scipy.optimize import approx_fprime + + +# A small model for basic testing +def _toy(): + uniq = np.r_[4, 9, 16] + load = np.asarray([[3, 1, 2], [2, 5, 8]]).T + par = np.r_[2, 3, 4, 3, 1, 2, 2, 5, 8] + corr = np.asarray([[1, .5, .25], [.5, 1, .5], [.25, .5, 1]]) + return uniq, load, corr, par + + +def test_loglike(): + + uniq, load, corr, par = _toy() + fa = Factor(n_factor=2, corr=corr) + + # Two ways of passing the parameters to loglike + ll1 = fa.loglike((load, uniq)) + ll2 = fa.loglike(par) + + assert_allclose(ll1, ll2) + + +def test_score(): + + uniq, load, corr, par = _toy() + fa = Factor(n_factor=2, corr=corr) + + def f(par): + return fa.loglike(par) + + par2 = np.r_[0.1, 0.2, 0.3, 0.4, 0.3, 0.1, 0.2, -0.2, 0, 0.8, 0.5, 0] + + for pt in (par, par2): + g1 = approx_fprime(pt, f, 1e-8) + g2 = fa.score(pt) + assert_allclose(g1, g2, atol=1e-3) + + +def test_exact(): + # Test if we can recover exact factor-structured matrices with + # default starting values. + + np.random.seed(23324) + + # Works for larger k_var but slow for routine testing. + for k_var in 5, 10, 25: + for n_factor in 1, 2, 3: + load = np.random.normal(size=(k_var, n_factor)) + uniq = np.linspace(1, 2, k_var) + c = np.dot(load, load.T) + c.flat[::c.shape[0]+1] += uniq + s = np.sqrt(np.diag(c)) + c /= np.outer(s, s) + fa = Factor(corr=c, n_factor=n_factor, method='ml') + rslt = fa.fit() + assert_allclose(rslt.fitted_cov, c, rtol=1e-4, atol=1e-4) + rslt.summary() # smoke test + + +def test_exact_em(): + # Test if we can recover exact factor-structured matrices with + # default starting values using the EM algorithm. + + np.random.seed(23324) + + # Works for larger k_var but slow for routine testing. + for k_var in 5, 10, 25: + for n_factor in 1, 2, 3: + load = np.random.normal(size=(k_var, n_factor)) + uniq = np.linspace(1, 2, k_var) + c = np.dot(load, load.T) + c.flat[::c.shape[0]+1] += uniq + s = np.sqrt(np.diag(c)) + c /= np.outer(s, s) + fa = Factor(corr=c, n_factor=n_factor, method='ml') + load_e, uniq_e = fa._fit_ml_em(200) + c_e = np.dot(load_e, load_e.T) + c_e.flat[::c_e.shape[0]+1] += uniq_e + assert_allclose(c_e, c, rtol=1e-4, atol=1e-4) + + +def test_em(): + + n_factor = 1 + cor = np.asarray([[1, 0.5, 0.3], [0.5, 1, 0], [0.3, 0, 1]]) + + fa = Factor(corr=cor, n_factor=n_factor, method='ml') + rslt = fa.fit(opt={'gtol': 1e-3}) + load_opt = rslt.loadings + uniq_opt = rslt.uniqueness + + load_em, uniq_em = fa._fit_ml_em(1000) + cc = np.dot(load_em, load_em.T) + cc.flat[::cc.shape[0]+1] += uniq_em + + assert_allclose(cc, rslt.fitted_cov, rtol=1e-2, atol=1e-2) + + +def test_1factor(): + """ + # R code: + r = 0.4 + p = 4 + ii = seq(0, p-1) + ii = outer(ii, ii, "-") + ii = abs(ii) + cm = r^ii + fa = factanal(covmat=cm, factors=1) + print(fa, digits=10) + """ + + r = 0.4 + p = 4 + ii = np.arange(p) + cm = r ** np.abs(np.subtract.outer(ii, ii)) + + fa = Factor(corr=cm, n_factor=1, method='ml') + rslt = fa.fit() + + if rslt.loadings[0, 0] < 0: + rslt.loadings[:, 0] *= -1 + + # R solution, but our likelihood is higher + # uniq = np.r_[0.8392472054, 0.5820958187, 0.5820958187, 0.8392472054] + # load = np.asarray([[0.4009399224, 0.6464550935, 0.6464550935, + # 0.4009399224]]).T + # l1 = fa.loglike(fa._pack(load, uniq)) + # l2 = fa.loglike(fa._pack(rslt.loadings, rslt.uniqueness)) + + # So use a smoke test + uniq = np.r_[0.85290232, 0.60916033, 0.55382266, 0.82610666] + load = np.asarray([[0.38353316], [0.62517171], [0.66796508], + [0.4170052]]) + + assert_allclose(load, rslt.loadings, rtol=1e-3, atol=1e-3) + assert_allclose(uniq, rslt.uniqueness, rtol=1e-3, atol=1e-3) + + assert_equal(rslt.df, 2) + + +def test_2factor(): + """ + # R code: + r = 0.4 + p = 6 + ii = seq(0, p-1) + ii = outer(ii, ii, "-") + ii = abs(ii) + cm = r^ii + factanal(covmat=cm, factors=2) + """ + + r = 0.4 + p = 6 + ii = np.arange(p) + cm = r ** np.abs(np.subtract.outer(ii, ii)) + + fa = Factor(corr=cm, n_factor=2, nobs=100, method='ml') + rslt = fa.fit() + + for j in 0, 1: + if rslt.loadings[0, j] < 0: + rslt.loadings[:, j] *= -1 + + uniq = np.r_[0.782, 0.367, 0.696, 0.696, 0.367, 0.782] + assert_allclose(uniq, rslt.uniqueness, rtol=1e-3, atol=1e-3) + + loads = [np.r_[0.323, 0.586, 0.519, 0.519, 0.586, 0.323], + np.r_[0.337, 0.538, 0.187, -0.187, -0.538, -0.337]] + for k in 0, 1: + if np.dot(loads[k], rslt.loadings[:, k]) < 0: + loads[k] *= -1 + assert_allclose(loads[k], rslt.loadings[:, k], rtol=1e-3, atol=1e-3) + + assert_equal(rslt.df, 4) + + # Smoke test for standard errors + e = np.asarray([0.11056836, 0.05191071, 0.09836349, + 0.09836349, 0.05191071, 0.11056836]) + assert_allclose(rslt.uniq_stderr, e, atol=1e-4) + e = np.asarray([[0.08842151, 0.08842151], [0.06058582, 0.06058582], + [0.08339874, 0.08339874], [0.08339874, 0.08339874], + [0.06058582, 0.06058582], [0.08842151, 0.08842151]]) + assert_allclose(rslt.load_stderr, e, atol=1e-4) diff --git a/statsmodels/multivariate/tests/test_multivariate_ols.py b/statsmodels/multivariate/tests/test_multivariate_ols.py new file mode 100644 index 0000000..25959d4 --- /dev/null +++ b/statsmodels/multivariate/tests/test_multivariate_ols.py @@ -0,0 +1,201 @@ +# -*- coding: utf-8 -*- + +import numpy as np +import pandas as pd +from statsmodels.multivariate.multivariate_ols import _MultivariateOLS +from numpy.testing import assert_array_almost_equal, assert_raises +import patsy + +data = pd.DataFrame([['Morphine', 'N', .04, .20, .10, .08], + ['Morphine', 'N', .02, .06, .02, .02], + ['Morphine', 'N', .07, 1.40, .48, .24], + ['Morphine', 'N', .17, .57, .35, .24], + ['Morphine', 'Y', .10, .09, .13, .14], + ['placebo', 'Y', .07, .07, .06, .07], + ['placebo', 'Y', .05, .07, .06, .07], + ['placebo', 'N', .03, .62, .31, .22], + ['placebo', 'N', .03, 1.05, .73, .60], + ['placebo', 'N', .07, .83, 1.07, .80], + ['Trimethaphan', 'N', .09, 3.13, 2.06, 1.23], + ['Trimethaphan', 'Y', .10, .09, .09, .08], + ['Trimethaphan', 'Y', .08, .09, .09, .10], + ['Trimethaphan', 'Y', .13, .10, .12, .12], + ['Trimethaphan', 'Y', .06, .05, .05, .05]], + columns=['Drug', 'Depleted', + 'Histamine0', 'Histamine1', + 'Histamine3', 'Histamine5']) + +for i in range(2, 6): + data.iloc[:, i] = np.log(data.iloc[:, i]) + + +def compare_r_output_dogs_data(method): + ''' Testing within-subject effect interact with 2 between-subject effect + Compares with R car library Anova(, type=3) output + + Note: The test statistis Phillai, Wilks, Hotelling-Lawley + and Roy are the same as R output but the approximate F and degree + of freedoms can be different. This is due to the fact that this + implementation is based on SAS formula [1] + + .. [*] https://support.sas.com/documentation/cdl/en/statug/63033/HTML/default/viewer.htm#statug_introreg_sect012.htm + ''' + + + # Repeated measures with orthogonal polynomial contrasts coding + mod = _MultivariateOLS.from_formula( + 'Histamine0 + Histamine1 + Histamine3 + Histamine5 ~ Drug * Depleted', + data) + r = mod.fit(method=method) + r = r.mv_test() + a = [[2.68607660e-02, 4, 6, 5.43435304e+01, 7.59585610e-05], + [9.73139234e-01, 4, 6, 5.43435304e+01, 7.59585610e-05], + [3.62290202e+01, 4, 6, 5.43435304e+01, 7.59585610e-05], + [3.62290202e+01, 4, 6, 5.43435304e+01, 7.59585610e-05]] + assert_array_almost_equal(r['Intercept']['stat'].values, a, decimal=6) + a = [[8.39646619e-02, 8, 1.20000000e+01, 3.67658068e+00, 2.12614444e-02], + [1.18605382e+00, 8, 1.40000000e+01, 2.55003861e+00, 6.01270701e-02], + [7.69391362e+00, 8, 6.63157895e+00, 5.50814270e+00, 2.07392260e-02], + [7.25036952e+00, 4, 7.00000000e+00, 1.26881467e+01, 2.52669877e-03]] + assert_array_almost_equal(r['Drug']['stat'].values, a, decimal=6) + a = [[0.32048892, 4., 6., 3.18034906, 0.10002373], + [0.67951108, 4., 6., 3.18034906, 0.10002373], + [2.12023271, 4., 6., 3.18034906, 0.10002373], + [2.12023271, 4., 6., 3.18034906, 0.10002373]] + assert_array_almost_equal(r['Depleted']['stat'].values, a, decimal=6) + a = [[0.15234366, 8., 12., 2.34307678, 0.08894239], + [1.13013353, 8., 14., 2.27360606, 0.08553213], + [3.70989596, 8., 6.63157895, 2.65594824, 0.11370285], + [3.1145597, 4., 7., 5.45047947, 0.02582767]] + assert_array_almost_equal(r['Drug:Depleted']['stat'].values, a, decimal=6) + + +def test_glm_dogs_example(): + compare_r_output_dogs_data(method='svd') + compare_r_output_dogs_data(method='pinv') + + +def test_specify_L_M_by_string(): + mod = _MultivariateOLS.from_formula( + 'Histamine0 + Histamine1 + Histamine3 + Histamine5 ~ Drug * Depleted', + data) + r = mod.fit() + r1 = r.mv_test(hypotheses=[['Intercept', ['Intercept'], None]]) + a = [[2.68607660e-02, 4, 6, 5.43435304e+01, 7.59585610e-05], + [9.73139234e-01, 4, 6, 5.43435304e+01, 7.59585610e-05], + [3.62290202e+01, 4, 6, 5.43435304e+01, 7.59585610e-05], + [3.62290202e+01, 4, 6, 5.43435304e+01, 7.59585610e-05]] + assert_array_almost_equal(r1['Intercept']['stat'].values, a, decimal=6) + L = ['Intercept', 'Drug[T.Trimethaphan]', 'Drug[T.placebo]'] + M = ['Histamine1', 'Histamine3', 'Histamine5'] + r1 = r.mv_test(hypotheses=[['a', L, M]]) + a = [[1, 0, 0, 0, 0, 0], + [0, 1, 0, 0, 0, 0], + [0, 0, 1, 0, 0, 0]] + assert_array_almost_equal(r1['a']['contrast_L'], a, decimal=10) + a = [[0, 1, 0, 0], + [0, 0, 1, 0], + [0, 0, 0, 1]] + assert_array_almost_equal(r1['a']['transform_M'].T, a, decimal=10) + + +def test_independent_variable_singular(): + data1 = data.copy() + data1['dup'] = data1['Drug'] + mod = _MultivariateOLS.from_formula( + 'Histamine0 + Histamine1 + Histamine3 + Histamine5 ~ Drug * dup', + data1) + assert_raises(ValueError, mod.fit) + mod = _MultivariateOLS.from_formula( + 'Histamine0 + Histamine1 + Histamine3 + Histamine5 ~ Drug * dup', + data1) + assert_raises(ValueError, mod.fit) + + +def test_from_formula_vs_no_formula(): + mod = _MultivariateOLS.from_formula( + 'Histamine0 + Histamine1 + Histamine3 + Histamine5 ~ Drug * Depleted', + data) + r = mod.fit(method='svd') + r0 = r.mv_test() + endog, exog = patsy.dmatrices( + 'Histamine0 + Histamine1 + Histamine3 + Histamine5 ~ Drug * Depleted', + data, return_type="dataframe") + L = np.array([[1, 0, 0, 0, 0, 0]]) + # DataFrame input + r = _MultivariateOLS(endog, exog).fit(method='svd') + r1 = r.mv_test(hypotheses=[['Intercept', L, None]]) + assert_array_almost_equal(r1['Intercept']['stat'].values, + r0['Intercept']['stat'].values, decimal=6) + # Numpy array input + r = _MultivariateOLS(endog.values, exog.values).fit(method='svd') + r1 = r.mv_test(hypotheses=[['Intercept', L, None]]) + assert_array_almost_equal(r1['Intercept']['stat'].values, + r0['Intercept']['stat'].values, decimal=6) + L = np.array([[0, 1, 0, 0, 0, 0], + [0, 0, 1, 0, 0, 0], + ]) + r1 = r.mv_test(hypotheses=[['Drug', L, None]]) + # DataFrame input + r = _MultivariateOLS(endog, exog).fit(method='svd') + r1 = r.mv_test(hypotheses=[['Drug', L, None]]) + assert_array_almost_equal(r1['Drug']['stat'].values, + r0['Drug']['stat'].values, decimal=6) + # Numpy array input + r = _MultivariateOLS(endog.values, exog.values).fit(method='svd') + r1 = r.mv_test(hypotheses=[['Drug', L, None]]) + assert_array_almost_equal(r1['Drug']['stat'].values, + r0['Drug']['stat'].values, decimal=6) + +def test_L_M_matrices_1D_array(): + mod = _MultivariateOLS.from_formula( + 'Histamine0 + Histamine1 + Histamine3 + Histamine5 ~ Drug * Depleted', + data) + r = mod.fit(method='svd') + L = np.array([1, 0, 0, 0, 0, 0]) + assert_raises(ValueError, r.mv_test, hypotheses=[['Drug', L, None]]) + L = np.array([[1, 0, 0, 0, 0, 0]]) + M = np.array([1, 0, 0, 0, 0, 0]) + assert_raises(ValueError, r.mv_test, hypotheses=[['Drug', L, M]]) + + +def test_exog_1D_array(): + mod = _MultivariateOLS.from_formula( + 'Histamine0 + Histamine1 + Histamine3 + Histamine5 ~ 0 + Depleted', + data) + r = mod.fit(method='svd') + r0 = r.mv_test() + a = [[0.0019, 8.0000, 20.0000, 55.0013, 0.0000], + [1.8112, 8.0000, 22.0000, 26.3796, 0.0000], + [97.8858, 8.0000, 12.1818, 117.1133, 0.0000], + [93.2742, 4.0000, 11.0000, 256.5041, 0.0000]] + assert_array_almost_equal(r0['Depleted']['stat'].values, a, decimal=4) + + +def test_endog_1D_array(): + assert_raises(ValueError, _MultivariateOLS.from_formula, + 'Histamine0 ~ 0 + Depleted', data) + +def test_affine_hypothesis(): + # Testing affine hypothesis, compared with R car linearHypothesis + # Note: The test statistis Phillai, Wilks, Hotelling-Lawley + # and Roy are the same as R output but the approximate F and degree + # of freedoms can be different. This is due to the fact that this + # implementation is based on SAS formula [1] + mod = _MultivariateOLS.from_formula( + 'Histamine0 + Histamine1 + Histamine3 + Histamine5 ~ Drug * Depleted', + data) + r = mod.fit(method='svd') + L = np.array([[0, 1.2, 1.1, 1.3, 1.5, 1.4], + [0, 3.2, 2.1, 3.3, 5.5, 4.4]]) + M = None + C = np.array([[1, 2, 3, 4], + [5, 6, 7, 8]]) + r0 = r.mv_test(hypotheses=[('test1', L, M, C)]) + a = [[0.0269, 8.0000, 12.0000, 7.6441, 0.0010], + [1.4277, 8.0000, 14.0000, 4.3657, 0.0080], + [19.2678, 8.0000, 6.6316, 13.7940, 0.0016], + [18.3470, 4.0000, 7.0000, 32.1072, 0.0001]] + assert_array_almost_equal(r0['test1']['stat'].values, a, decimal=4) + r0.summary(show_contrast_L=True, show_transform_M=True, + show_constant_C=True) diff --git a/statsmodels/multivariate/tests/test_pca.py b/statsmodels/multivariate/tests/test_pca.py new file mode 100644 index 0000000..e7edc59 --- /dev/null +++ b/statsmodels/multivariate/tests/test_pca.py @@ -0,0 +1,408 @@ +from __future__ import print_function, division + +from statsmodels.compat.platform import PLATFORM_WIN32 + +import warnings + +import numpy as np +import pandas as pd +import pytest +from numpy.testing import assert_allclose, assert_equal, assert_raises + +from statsmodels.multivariate.pca import PCA +from statsmodels.multivariate.tests.results.datamlw import (data, princomp1, + princomp2) + +DECIMAL_5 = .00001 + + +class TestPCA(object): + @classmethod + def setup_class(cls): + rs = np.random.RandomState() + rs.seed(1234) + k = 3 + n = 100 + t = 200 + lam = 2 + + norm_rng = rs.standard_normal + e = norm_rng((t, n)) + f = norm_rng((t, k)) + b = rs.standard_gamma(lam, size=(k, n)) / lam + cls.x = f.dot(b) + e + cls.x_copy = cls.x + 0.0 + cls.rs = rs + + k = 3 + n = 300 + t = 200 + lam = 2 + + norm_rng = rs.standard_normal + e = norm_rng((t, n)) + f = norm_rng((t, k)) + b = rs.standard_gamma(lam, size=(k, n)) / lam + cls.x_wide = f.dot(b) + e + + @pytest.mark.smoke + @pytest.mark.matplotlib + def test_smoke_plot_and_repr(self, close_figures): + pc = PCA(self.x) + fig = pc.plot_scree() + fig = pc.plot_scree(ncomp=10) + fig = pc.plot_scree(log_scale=False) + fig = pc.plot_scree(cumulative=True) + fig = pc.plot_rsquare() + fig = pc.plot_rsquare(ncomp=5) + # Additional smoke test + pc.__repr__() + pc = PCA(self.x, standardize=False) + pc.__repr__() + pc = PCA(self.x, standardize=False, demean=False) + pc.__repr__() + # Check data for no changes + assert_equal(self.x, pc.data) + + def test_eig_svd_equiv(self): + # Test leading components since the tail end can differ + pc_eig = PCA(self.x) + pc_svd = PCA(self.x, method='svd') + + assert_allclose(pc_eig.projection, pc_svd.projection) + assert_allclose(np.abs(pc_eig.factors[:, :2]), + np.abs(pc_svd.factors[:, :2])) + assert_allclose(np.abs(pc_eig.coeff[:2, :]), + np.abs(pc_svd.coeff[:2, :])) + assert_allclose(pc_eig.eigenvals, + pc_svd.eigenvals) + assert_allclose(np.abs(pc_eig.eigenvecs[:, :2]), + np.abs(pc_svd.eigenvecs[:, :2])) + + pc_svd = PCA(self.x, method='svd', ncomp=2) + pc_nipals = PCA(self.x, method='nipals', ncomp=2) + assert_allclose(np.abs(pc_nipals.factors), + np.abs(pc_svd.factors), + atol=DECIMAL_5) + assert_allclose(np.abs(pc_nipals.coeff), + np.abs(pc_svd.coeff), + atol=DECIMAL_5) + assert_allclose(pc_nipals.eigenvals, + pc_svd.eigenvals, + atol=DECIMAL_5) + assert_allclose(np.abs(pc_nipals.eigenvecs), + np.abs(pc_svd.eigenvecs), + atol=DECIMAL_5) + # Check data for no changes + assert_equal(self.x, pc_svd.data) + # Check data for no changes + assert_equal(self.x, pc_eig.data) + # Check data for no changes + assert_equal(self.x, pc_nipals.data) + + def test_options(self): + pc = PCA(self.x) + pc_no_norm = PCA(self.x, normalize=False) + assert_allclose(pc.factors.dot(pc.coeff), + pc_no_norm.factors.dot(pc_no_norm.coeff)) + princomp = pc.factors + assert_allclose(princomp.T.dot(princomp), np.eye(100), atol=1e-5) + weights = pc_no_norm.coeff + assert_allclose(weights.T.dot(weights), np.eye(100), atol=1e-5) + + pc_10 = PCA(self.x, ncomp=10) + assert_allclose(pc.factors[:, :10], pc_10.factors) + assert_allclose(pc.coeff[:10, :], pc_10.coeff) + assert_allclose(pc.rsquare[:(10 + 1)], pc_10.rsquare) + assert_allclose(pc.eigenvals[:10], pc_10.eigenvals) + assert_allclose(pc.eigenvecs[:, :10], pc_10.eigenvecs) + + pc = PCA(self.x, standardize=False, normalize=False) + mu = self.x.mean(0) + xdm = self.x - mu + xpx = xdm.T.dot(xdm) + val, vec = np.linalg.eigh(xpx) + ind = np.argsort(val) + ind = ind[::-1] + val = val[ind] + vec = vec[:, ind] + assert_allclose(xdm, pc.transformed_data) + assert_allclose(val, pc.eigenvals) + assert_allclose(np.abs(vec), np.abs(pc.eigenvecs)) + assert_allclose(np.abs(pc.factors), np.abs(xdm.dot(vec))) + assert_allclose(pc.projection, xdm + mu) + + pc = PCA(self.x, standardize=False, demean=False, normalize=False) + x = self.x + xpx = x.T.dot(x) + val, vec = np.linalg.eigh(xpx) + ind = np.argsort(val) + ind = ind[::-1] + val = val[ind] + vec = vec[:, ind] + assert_allclose(x, pc.transformed_data) + assert_allclose(val, pc.eigenvals) + assert_allclose(np.abs(vec), np.abs(pc.eigenvecs)) + assert_allclose(np.abs(pc.factors), np.abs(x.dot(vec))) + + def test_against_reference(self): + # Test against MATLAB, which by default demeans but does not standardize + x = data.xo / 1000.0 + pc = PCA(x, normalize=False, standardize=False) + + ref = princomp1 + assert_allclose(np.abs(pc.factors), np.abs(ref.factors)) + assert_allclose(pc.factors.dot(pc.coeff) + x.mean(0), x) + assert_allclose(np.abs(pc.coeff), np.abs(ref.coef.T)) + assert_allclose(pc.factors.dot(pc.coeff), + ref.factors.dot(ref.coef.T)) + + pc = PCA(x[:20], normalize=False, standardize=False) + mu = x[:20].mean(0) + ref = princomp2 + assert_allclose(np.abs(pc.factors), np.abs(ref.factors)) + assert_allclose(pc.factors.dot(pc.coeff) + mu, x[:20]) + assert_allclose(np.abs(pc.coeff), np.abs(ref.coef.T)) + assert_allclose(pc.factors.dot(pc.coeff), + ref.factors.dot(ref.coef.T)) + + def test_warnings_and_errors(self): + with warnings.catch_warnings(record=True) as w: + pc = PCA(self.x, ncomp=300) + assert_equal(len(w), 1) + + with warnings.catch_warnings(record=True) as w: + rs = self.rs + x = rs.standard_normal((200, 1)) * np.ones(200) + pc = PCA(x, method='eig') + assert_equal(len(w), 1) + + assert_raises(ValueError, PCA, self.x, method='unknown') + assert_raises(ValueError, PCA, self.x, missing='unknown') + assert_raises(ValueError, PCA, self.x, tol=2.0) + assert_raises(ValueError, PCA, np.nan * np.ones((200,100)), tol=2.0) + + @pytest.mark.matplotlib + def test_pandas(self, close_figures): + pc = PCA(pd.DataFrame(self.x)) + pc1 = PCA(self.x) + assert_allclose(pc.factors.values, pc1.factors) + fig = pc.plot_scree() + fig = pc.plot_scree(ncomp=10) + fig = pc.plot_scree(log_scale=False) + fig = pc.plot_rsquare() + fig = pc.plot_rsquare(ncomp=5) + proj = pc.project(2) + PCA(pd.DataFrame(self.x), ncomp=4, gls=True) + PCA(pd.DataFrame(self.x), ncomp=4, standardize=False) + + def test_gls_and_weights(self): + assert_raises(ValueError, PCA, self.x, gls=True) + assert_raises(ValueError, PCA, self.x, weights=np.array([1.0, 1.0])) + + # Pre-standardize to make comparison simple + x = (self.x - self.x.mean(0)) + x = x / (x ** 2.0).mean(0) + pc_gls = PCA(x, ncomp=1, standardize=False, demean=False, gls=True) + pc = PCA(x, ncomp=1, standardize=False, demean=False) + errors = x - pc.projection + var = (errors ** 2.0).mean(0) + weights = 1.0 / var + weights = weights / np.sqrt((weights ** 2.0).mean()) + + assert_allclose(weights, pc_gls.weights) + assert_equal(x, pc_gls.data) + assert_equal(x, pc.data) + + pc_weights = PCA(x, ncomp=1, standardize=False, demean=False, weights=weights) + + assert_allclose(weights, pc_weights.weights) + assert_allclose(np.abs(pc_weights.factors), np.abs(pc_gls.factors)) + + @pytest.mark.slow + def test_wide(self): + pc = PCA(self.x_wide) + assert_equal(pc.factors.shape[1], self.x_wide.shape[0]) + assert_equal(pc.eigenvecs.shape[1], min(np.array(self.x_wide.shape))) + + pc = PCA(pd.DataFrame(self.x_wide)) + assert_equal(pc.factors.shape[1], self.x_wide.shape[0]) + assert_equal(pc.eigenvecs.shape[1], min(np.array(self.x_wide.shape))) + + def test_projection(self): + pc = PCA(self.x, ncomp=5) + mu = self.x.mean(0) + demean_x = self.x - mu + coef = np.linalg.pinv(pc.factors).dot(demean_x) + direct = pc.factors.dot(coef) + assert_allclose(pc.projection, direct + mu) + + pc = PCA(self.x, standardize=False, ncomp=5) + coef = np.linalg.pinv(pc.factors).dot(demean_x) + direct = pc.factors.dot(coef) + assert_allclose(pc.projection, direct + mu) + + pc = PCA(self.x, standardize=False, demean=False, ncomp=5) + coef = np.linalg.pinv(pc.factors).dot(self.x) + direct = pc.factors.dot(coef) + assert_allclose(pc.projection, direct) + + pc = PCA(self.x, ncomp=5, gls=True) + mu = self.x.mean(0) + demean_x = self.x - mu + coef = np.linalg.pinv(pc.factors).dot(demean_x) + direct = pc.factors.dot(coef) + assert_allclose(pc.projection, direct + mu) + + pc = PCA(self.x, standardize=False, ncomp=5) + coef = np.linalg.pinv(pc.factors).dot(demean_x) + direct = pc.factors.dot(coef) + assert_allclose(pc.projection, direct + mu) + + pc = PCA(self.x, standardize=False, demean=False, ncomp=5, gls=True) + coef = np.linalg.pinv(pc.factors).dot(self.x) + direct = pc.factors.dot(coef) + assert_allclose(pc.projection, direct) + + # Test error for too many factors + project = pc.project + assert_raises(ValueError, project, 6) + + @pytest.mark.skipif(PLATFORM_WIN32, reason='Windows 32-bit') + def test_replace_missing(self): + x = self.x.copy() + x[::5, ::7] = np.nan + + pc = PCA(x, missing='drop-row') + x_dropped_row = x[np.logical_not(np.any(np.isnan(x), 1))] + pc_dropped = PCA(x_dropped_row) + assert_allclose(pc.projection, pc_dropped.projection) + assert_equal(x, pc.data) + + pc = PCA(x, missing='drop-col') + x_dropped_col = x[:, np.logical_not(np.any(np.isnan(x), 0))] + pc_dropped = PCA(x_dropped_col) + assert_allclose(pc.projection, pc_dropped.projection) + assert_equal(x, pc.data) + + pc = PCA(x, missing='drop-min') + if x_dropped_row.size > x_dropped_col.size: + x_dropped_min = x_dropped_row + else: + x_dropped_min = x_dropped_col + pc_dropped = PCA(x_dropped_min) + assert_allclose(pc.projection, pc_dropped.projection) + assert_equal(x, pc.data) + + pc = PCA(x, ncomp=3, missing='fill-em') + missing = np.isnan(x) + mu = np.nanmean(x, axis=0) + errors = x - mu + sigma = np.sqrt(np.nanmean(errors ** 2, axis=0)) + x_std = errors / sigma + x_std[missing] = 0.0 + last = x_std[missing] + delta = 1.0 + count = 0 + while delta > 5e-8: + pc_temp = PCA(x_std, ncomp=3, standardize=False, demean=False) + x_std[missing] = pc_temp.projection[missing] + current = x_std[missing] + diff = current - last + delta = np.sqrt(np.sum(diff ** 2)) / np.sqrt(np.sum(current ** 2)) + last = current + count += 1 + x = self.x + 0.0 + projection = pc_temp.projection * sigma + mu + x[missing] = projection[missing] + assert_allclose(pc._adjusted_data, x) + # Check data for no changes + assert_equal(self.x, self.x_copy) + + x = self.x + pc = PCA(x) + pc_dropped = PCA(x, missing='drop-row') + assert_allclose(pc.projection, pc_dropped.projection, atol=DECIMAL_5) + + pc_dropped = PCA(x, missing='drop-col') + assert_allclose(pc.projection, pc_dropped.projection, atol=DECIMAL_5) + + pc_dropped = PCA(x, missing='drop-min') + assert_allclose(pc.projection, pc_dropped.projection, atol=DECIMAL_5) + + pc = PCA(x, ncomp=3) + pc_dropped = PCA(x, ncomp=3, missing='fill-em') + assert_allclose(pc.projection, pc_dropped.projection, atol=DECIMAL_5) + + # Test too many missing for missing='fill-em' + x = self.x.copy() + x[:, :] = np.nan + assert_raises(ValueError, PCA, x, missing='drop-row') + assert_raises(ValueError, PCA, x, missing='drop-col') + assert_raises(ValueError, PCA, x, missing='drop-min') + assert_raises(ValueError, PCA, x, missing='fill-em') + + def test_rsquare(self): + x = self.x + 0.0 + mu = x.mean(0) + x_demean = x - mu + std = np.std(x, 0) + x_std = x_demean / std + + pc = PCA(self.x) + nvar = x.shape[1] + rsquare = np.zeros(nvar + 1) + tss = np.sum(x_std ** 2) + for i in range(nvar + 1): + errors = x_std - pc.project(i, transform=False, unweight=False) + rsquare[i] = 1.0 - np.sum(errors ** 2) / tss + assert_allclose(rsquare, pc.rsquare) + + pc = PCA(self.x, standardize=False) + tss = np.sum(x_demean ** 2) + for i in range(nvar + 1): + errors = x_demean - pc.project(i, transform=False, unweight=False) + rsquare[i] = 1.0 - np.sum(errors ** 2) / tss + assert_allclose(rsquare, pc.rsquare) + + pc = PCA(self.x, standardize=False, demean=False) + tss = np.sum(x ** 2) + for i in range(nvar + 1): + errors = x - pc.project(i, transform=False, unweight=False) + rsquare[i] = 1.0 - np.sum(errors ** 2) / tss + assert_allclose(rsquare, pc.rsquare) + + @pytest.mark.slow + def test_missing_dataframe(self): + x = self.x.copy() + x[::5, ::7] = np.nan + pc = PCA(x, ncomp=3, missing='fill-em') + + x = pd.DataFrame(x) + pc_df = PCA(x, ncomp=3, missing='fill-em') + assert_allclose(pc.coeff, pc_df.coeff) + assert_allclose(pc.factors, pc_df.factors) + + pc_df_nomissing = PCA(pd.DataFrame(self.x.copy()), ncomp=3) + assert isinstance(pc_df.coeff, type(pc_df_nomissing.coeff)) + assert isinstance(pc_df.data, type(pc_df_nomissing.data)) + assert isinstance(pc_df.eigenvals, type(pc_df_nomissing.eigenvals)) + assert isinstance(pc_df.eigenvecs, type(pc_df_nomissing.eigenvecs)) + + x = self.x.copy() + x[::5, ::7] = np.nan + x_df = pd.DataFrame(x) + pc = PCA(x, missing='drop-row') + pc_df = PCA(x_df, missing='drop-row') + assert_allclose(pc.coeff, pc_df.coeff) + assert_allclose(pc.factors, pc_df.factors) + + pc = PCA(x, missing='drop-col') + pc_df = PCA(x_df, missing='drop-col') + assert_allclose(pc.coeff, pc_df.coeff) + assert_allclose(pc.factors, pc_df.factors) + + pc = PCA(x, missing='drop-min') + pc_df = PCA(x_df, missing='drop-min') + assert_allclose(pc.coeff, pc_df.coeff) + assert_allclose(pc.factors, pc_df.factors) diff --git a/statsmodels/nonparametric/__init__.py b/statsmodels/nonparametric/__init__.py new file mode 100644 index 0000000..bdd0fc3 --- /dev/null +++ b/statsmodels/nonparametric/__init__.py @@ -0,0 +1,9 @@ +""" +Tools for nonparametric statistics, mainly density estimation and regression. + +For an overview of this module, see docs/source/nonparametric.rst +""" + +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/nonparametric/_kernel_base.py b/statsmodels/nonparametric/_kernel_base.py new file mode 100644 index 0000000..599ab1b --- /dev/null +++ b/statsmodels/nonparametric/_kernel_base.py @@ -0,0 +1,520 @@ +""" +Module containing the base object for multivariate kernel density and +regression, plus some utilities. +""" +from statsmodels.compat.python import range, string_types +import copy + +import numpy as np +from scipy import optimize +from scipy.stats.mstats import mquantiles + +try: + import joblib + has_joblib = True +except ImportError: + has_joblib = False + +from . import kernels + + +kernel_func = dict(wangryzin=kernels.wang_ryzin, + aitchisonaitken=kernels.aitchison_aitken, + gaussian=kernels.gaussian, + aitchison_aitken_reg = kernels.aitchison_aitken_reg, + wangryzin_reg = kernels.wang_ryzin_reg, + gauss_convolution=kernels.gaussian_convolution, + wangryzin_convolution=kernels.wang_ryzin_convolution, + aitchisonaitken_convolution=kernels.aitchison_aitken_convolution, + gaussian_cdf=kernels.gaussian_cdf, + aitchisonaitken_cdf=kernels.aitchison_aitken_cdf, + wangryzin_cdf=kernels.wang_ryzin_cdf, + d_gaussian=kernels.d_gaussian) + + +def _compute_min_std_IQR(data): + """Compute minimum of std and IQR for each variable.""" + s1 = np.std(data, axis=0) + q75 = mquantiles(data, 0.75, axis=0).data[0] + q25 = mquantiles(data, 0.25, axis=0).data[0] + s2 = (q75 - q25) / 1.349 # IQR + dispersion = np.minimum(s1, s2) + return dispersion + + +def _compute_subset(class_type, data, bw, co, do, n_cvars, ix_ord, + ix_unord, n_sub, class_vars, randomize, bound): + """"Compute bw on subset of data. + + Called from ``GenericKDE._compute_efficient_*``. + + Notes + ----- + Needs to be outside the class in order for joblib to be able to pickle it. + + """ + if randomize: + np.random.shuffle(data) + sub_data = data[:n_sub, :] + else: + sub_data = data[bound[0]:bound[1], :] + + if class_type == 'KDEMultivariate': + from .kernel_density import KDEMultivariate + var_type = class_vars[0] + sub_model = KDEMultivariate(sub_data, var_type, bw=bw, + defaults=EstimatorSettings(efficient=False)) + elif class_type == 'KDEMultivariateConditional': + from .kernel_density import KDEMultivariateConditional + k_dep, dep_type, indep_type = class_vars + endog = sub_data[:, :k_dep] + exog = sub_data[:, k_dep:] + sub_model = KDEMultivariateConditional(endog, exog, dep_type, + indep_type, bw=bw, defaults=EstimatorSettings(efficient=False)) + elif class_type == 'KernelReg': + from .kernel_regression import KernelReg + var_type, k_vars, reg_type = class_vars + endog = _adjust_shape(sub_data[:, 0], 1) + exog = _adjust_shape(sub_data[:, 1:], k_vars) + sub_model = KernelReg(endog=endog, exog=exog, reg_type=reg_type, + var_type=var_type, bw=bw, + defaults=EstimatorSettings(efficient=False)) + else: + raise ValueError("class_type not recognized, should be one of " \ + "{KDEMultivariate, KDEMultivariateConditional, KernelReg}") + + # Compute dispersion in next 4 lines + if class_type == 'KernelReg': + sub_data = sub_data[:, 1:] + + dispersion = _compute_min_std_IQR(sub_data) + + fct = dispersion * n_sub**(-1. / (n_cvars + co)) + fct[ix_unord] = n_sub**(-2. / (n_cvars + do)) + fct[ix_ord] = n_sub**(-2. / (n_cvars + do)) + sample_scale_sub = sub_model.bw / fct #TODO: check if correct + bw_sub = sub_model.bw + return sample_scale_sub, bw_sub + + +class GenericKDE (object): + """ + Base class for density estimation and regression KDE classes. + """ + def _compute_bw(self, bw): + """ + Computes the bandwidth of the data. + + Parameters + ---------- + bw: array_like or str + If array_like: user-specified bandwidth. + If a string, should be one of: + + - cv_ml: cross validation maximum likelihood + - normal_reference: normal reference rule of thumb + - cv_ls: cross validation least squares + + Notes + ----- + The default values for bw is 'normal_reference'. + """ + if bw is None: + bw = 'normal_reference' + + if not isinstance(bw, string_types): + self._bw_method = "user-specified" + res = np.asarray(bw) + else: + # The user specified a bandwidth selection method + self._bw_method = bw + # Workaround to avoid instance methods in __dict__ + if bw == 'normal_reference': + bwfunc = self._normal_reference + elif bw == 'cv_ml': + bwfunc = self._cv_ml + else: # bw == 'cv_ls' + bwfunc = self._cv_ls + res = bwfunc() + + return res + + def _compute_dispersion(self, data): + """ + Computes the measure of dispersion. + + The minimum of the standard deviation and interquartile range / 1.349 + + Notes + ----- + Reimplemented in `KernelReg`, because the first column of `data` has to + be removed. + + References + ---------- + See the user guide for the np package in R. + In the notes on bwscaling option in npreg, npudens, npcdens there is + a discussion on the measure of dispersion + """ + return _compute_min_std_IQR(data) + + def _get_class_vars_type(self): + """Helper method to be able to pass needed vars to _compute_subset. + + Needs to be implemented by subclasses.""" + pass + + def _compute_efficient(self, bw): + """ + Computes the bandwidth by estimating the scaling factor (c) + in n_res resamples of size ``n_sub`` (in `randomize` case), or by + dividing ``nobs`` into as many ``n_sub`` blocks as needed (if + `randomize` is False). + + References + ---------- + See p.9 in socserv.mcmaster.ca/racine/np_faq.pdf + """ + + if bw is None: + self._bw_method = 'normal_reference' + if isinstance(bw, string_types): + self._bw_method = bw + else: + self._bw_method = "user-specified" + return bw + + nobs = self.nobs + n_sub = self.n_sub + data = copy.deepcopy(self.data) + n_cvars = self.data_type.count('c') + co = 4 # 2*order of continuous kernel + do = 4 # 2*order of discrete kernel + _, ix_ord, ix_unord = _get_type_pos(self.data_type) + + # Define bounds for slicing the data + if self.randomize: + # randomize chooses blocks of size n_sub, independent of nobs + bounds = [None] * self.n_res + else: + bounds = [(i * n_sub, (i+1) * n_sub) for i in range(nobs // n_sub)] + if nobs % n_sub > 0: + bounds.append((nobs - nobs % n_sub, nobs)) + + n_blocks = self.n_res if self.randomize else len(bounds) + sample_scale = np.empty((n_blocks, self.k_vars)) + only_bw = np.empty((n_blocks, self.k_vars)) + + class_type, class_vars = self._get_class_vars_type() + if has_joblib: + # `res` is a list of tuples (sample_scale_sub, bw_sub) + res = joblib.Parallel(n_jobs=self.n_jobs)( + joblib.delayed(_compute_subset)( + class_type, data, bw, co, do, n_cvars, ix_ord, ix_unord, \ + n_sub, class_vars, self.randomize, bounds[i]) \ + for i in range(n_blocks)) + else: + res = [] + for i in range(n_blocks): + res.append(_compute_subset(class_type, data, bw, co, do, + n_cvars, ix_ord, ix_unord, n_sub, + class_vars, self.randomize, + bounds[i])) + + for i in range(n_blocks): + sample_scale[i, :] = res[i][0] + only_bw[i, :] = res[i][1] + + s = self._compute_dispersion(data) + order_func = np.median if self.return_median else np.mean + m_scale = order_func(sample_scale, axis=0) + # TODO: Check if 1/5 is correct in line below! + bw = m_scale * s * nobs**(-1. / (n_cvars + co)) + bw[ix_ord] = m_scale[ix_ord] * nobs**(-2./ (n_cvars + do)) + bw[ix_unord] = m_scale[ix_unord] * nobs**(-2./ (n_cvars + do)) + + if self.return_only_bw: + bw = np.median(only_bw, axis=0) + + return bw + + def _set_defaults(self, defaults): + """Sets the default values for the efficient estimation""" + self.n_res = defaults.n_res + self.n_sub = defaults.n_sub + self.randomize = defaults.randomize + self.return_median = defaults.return_median + self.efficient = defaults.efficient + self.return_only_bw = defaults.return_only_bw + self.n_jobs = defaults.n_jobs + + def _normal_reference(self): + """ + Returns Scott's normal reference rule of thumb bandwidth parameter. + + Notes + ----- + See p.13 in [2] for an example and discussion. The formula for the + bandwidth is + + .. math:: h = 1.06n^{-1/(4+q)} + + where ``n`` is the number of observations and ``q`` is the number of + variables. + """ + X = np.std(self.data, axis=0) + return 1.06 * X * self.nobs ** (- 1. / (4 + self.data.shape[1])) + + def _set_bw_bounds(self, bw): + """ + Sets bandwidth lower bound to effectively zero )1e-10), and for + discrete values upper bound to 1. + """ + bw[bw < 0] = 1e-10 + _, ix_ord, ix_unord = _get_type_pos(self.data_type) + bw[ix_ord] = np.minimum(bw[ix_ord], 1.) + bw[ix_unord] = np.minimum(bw[ix_unord], 1.) + + return bw + + def _cv_ml(self): + r""" + Returns the cross validation maximum likelihood bandwidth parameter. + + Notes + ----- + For more details see p.16, 18, 27 in Ref. [1] (see module docstring). + + Returns the bandwidth estimate that maximizes the leave-out-out + likelihood. The leave-one-out log likelihood function is: + + .. math:: \ln L=\sum_{i=1}^{n}\ln f_{-i}(X_{i}) + + The leave-one-out kernel estimator of :math:`f_{-i}` is: + + .. math:: f_{-i}(X_{i})=\frac{1}{(n-1)h} + \sum_{j=1,j\neq i}K_{h}(X_{i},X_{j}) + + where :math:`K_{h}` represents the Generalized product kernel + estimator: + + .. math:: K_{h}(X_{i},X_{j})=\prod_{s=1}^ + {q}h_{s}^{-1}k\left(\frac{X_{is}-X_{js}}{h_{s}}\right) + """ + # the initial value for the optimization is the normal_reference + h0 = self._normal_reference() + bw = optimize.fmin(self.loo_likelihood, x0=h0, args=(np.log, ), + maxiter=1e3, maxfun=1e3, disp=0, xtol=1e-3) + bw = self._set_bw_bounds(bw) # bound bw if necessary + return bw + + def _cv_ls(self): + r""" + Returns the cross-validation least squares bandwidth parameter(s). + + Notes + ----- + For more details see pp. 16, 27 in Ref. [1] (see module docstring). + + Returns the value of the bandwidth that maximizes the integrated mean + square error between the estimated and actual distribution. The + integrated mean square error (IMSE) is given by: + + .. math:: \int\left[\hat{f}(x)-f(x)\right]^{2}dx + + This is the general formula for the IMSE. The IMSE differs for + conditional (``KDEMultivariateConditional``) and unconditional + (``KDEMultivariate``) kernel density estimation. + """ + h0 = self._normal_reference() + bw = optimize.fmin(self.imse, x0=h0, maxiter=1e3, maxfun=1e3, disp=0, + xtol=1e-3) + bw = self._set_bw_bounds(bw) # bound bw if necessary + return bw + + def loo_likelihood(self): + raise NotImplementedError + + +class EstimatorSettings(object): + """ + Object to specify settings for density estimation or regression. + + `EstimatorSettings` has several proporties related to how bandwidth + estimation for the `KDEMultivariate`, `KDEMultivariateConditional`, + `KernelReg` and `CensoredKernelReg` classes behaves. + + Parameters + ---------- + efficient: bool, optional + If True, the bandwidth estimation is to be performed + efficiently -- by taking smaller sub-samples and estimating + the scaling factor of each subsample. This is useful for large + samples (nobs >> 300) and/or multiple variables (k_vars > 3). + If False (default), all data is used at the same time. + randomize: bool, optional + If True, the bandwidth estimation is to be performed by + taking `n_res` random resamples (with replacement) of size `n_sub` from + the full sample. If set to False (default), the estimation is + performed by slicing the full sample in sub-samples of size `n_sub` so + that all samples are used once. + n_sub: int, optional + Size of the sub-samples. Default is 50. + n_res: int, optional + The number of random re-samples used to estimate the bandwidth. + Only has an effect if ``randomize == True``. Default value is 25. + return_median: bool, optional + If True (default), the estimator uses the median of all scaling factors + for each sub-sample to estimate the bandwidth of the full sample. + If False, the estimator uses the mean. + return_only_bw: bool, optional + If True, the estimator is to use the bandwidth and not the + scaling factor. This is *not* theoretically justified. + Should be used only for experimenting. + n_jobs : int, optional + The number of jobs to use for parallel estimation with + ``joblib.Parallel``. Default is -1, meaning ``n_cores - 1``, with + ``n_cores`` the number of available CPU cores. + See the `joblib documentation + `_ for more details. + + Examples + -------- + >>> settings = EstimatorSettings(randomize=True, n_jobs=3) + >>> k_dens = KDEMultivariate(data, var_type, defaults=settings) + + """ + def __init__(self, efficient=False, randomize=False, n_res=25, n_sub=50, + return_median=True, return_only_bw=False, n_jobs=-1): + self.efficient = efficient + self.randomize = randomize + self.n_res = n_res + self.n_sub = n_sub + self.return_median = return_median + self.return_only_bw = return_only_bw # TODO: remove this? + self.n_jobs = n_jobs + + +class LeaveOneOut(object): + """ + Generator to give leave-one-out views on X. + + Parameters + ---------- + X : array-like + 2-D array. + + Examples + -------- + >>> X = np.random.normal(0, 1, [10,2]) + >>> loo = LeaveOneOut(X) + >>> for x in loo: + ... print x + + Notes + ----- + A little lighter weight than sklearn LOO. We don't need test index. + Also passes views on X, not the index. + """ + def __init__(self, X): + self.X = np.asarray(X) + + def __iter__(self): + X = self.X + nobs, k_vars = np.shape(X) + + for i in range(nobs): + index = np.ones(nobs, dtype=np.bool) + index[i] = False + yield X[index, :] + + +def _get_type_pos(var_type): + ix_cont = np.array([c == 'c' for c in var_type]) + ix_ord = np.array([c == 'o' for c in var_type]) + ix_unord = np.array([c == 'u' for c in var_type]) + return ix_cont, ix_ord, ix_unord + + +def _adjust_shape(dat, k_vars): + """ Returns an array of shape (nobs, k_vars) for use with `gpke`.""" + dat = np.asarray(dat) + if dat.ndim > 2: + dat = np.squeeze(dat) + if dat.ndim == 1 and k_vars > 1: # one obs many vars + nobs = 1 + elif dat.ndim == 1 and k_vars == 1: # one obs one var + nobs = len(dat) + else: + if np.shape(dat)[0] == k_vars and np.shape(dat)[1] != k_vars: + dat = dat.T + + nobs = np.shape(dat)[0] # ndim >1 so many obs many vars + + dat = np.reshape(dat, (nobs, k_vars)) + return dat + + +def gpke(bw, data, data_predict, var_type, ckertype='gaussian', + okertype='wangryzin', ukertype='aitchisonaitken', tosum=True): + r""" + Returns the non-normalized Generalized Product Kernel Estimator + + Parameters + ---------- + bw: 1-D ndarray + The user-specified bandwidth parameters. + data: 1D or 2-D ndarray + The training data. + data_predict: 1-D ndarray + The evaluation points at which the kernel estimation is performed. + var_type: str, optional + The variable type (continuous, ordered, unordered). + ckertype: str, optional + The kernel used for the continuous variables. + okertype: str, optional + The kernel used for the ordered discrete variables. + ukertype: str, optional + The kernel used for the unordered discrete variables. + tosum : bool, optional + Whether or not to sum the calculated array of densities. Default is + True. + + Returns + ------- + dens: array-like + The generalized product kernel density estimator. + + Notes + ----- + The formula for the multivariate kernel estimator for the pdf is: + + .. math:: f(x)=\frac{1}{nh_{1}...h_{q}}\sum_{i=1}^ + {n}K\left(\frac{X_{i}-x}{h}\right) + + where + + .. math:: K\left(\frac{X_{i}-x}{h}\right) = + k\left( \frac{X_{i1}-x_{1}}{h_{1}}\right)\times + k\left( \frac{X_{i2}-x_{2}}{h_{2}}\right)\times...\times + k\left(\frac{X_{iq}-x_{q}}{h_{q}}\right) + """ + kertypes = dict(c=ckertype, o=okertype, u=ukertype) + #Kval = [] + #for ii, vtype in enumerate(var_type): + # func = kernel_func[kertypes[vtype]] + # Kval.append(func(bw[ii], data[:, ii], data_predict[ii])) + + #Kval = np.column_stack(Kval) + + Kval = np.empty(data.shape) + for ii, vtype in enumerate(var_type): + func = kernel_func[kertypes[vtype]] + Kval[:, ii] = func(bw[ii], data[:, ii], data_predict[ii]) + + iscontinuous = np.array([c == 'c' for c in var_type]) + dens = Kval.prod(axis=1) / np.prod(bw[iscontinuous]) + if tosum: + return dens.sum(axis=0) + else: + return dens diff --git a/statsmodels/nonparametric/_smoothers_lowess.pyx b/statsmodels/nonparametric/_smoothers_lowess.pyx new file mode 100644 index 0000000..f3cc4dc --- /dev/null +++ b/statsmodels/nonparametric/_smoothers_lowess.pyx @@ -0,0 +1,618 @@ +#cython: boundscheck = False +#cython: wraparound = False +#cython: cdivision = True + +''' +Univariate lowess function, like in R. + +References +---------- +Hastie, Tibshirani, Friedman. (2009) The Elements of Statistical Learning: Data +Mining, Inference, and Prediction, Second Edition: Chapter 6. + +Cleveland, W.S. (1979) "Robust Locally Weighted Regression and Smoothing +Scatterplots". Journal of the American Statistical Association 74 (368): 829-836. +''' + +cimport numpy as np +import numpy as np +from cpython cimport bool +cimport cython + +# there's no fmax in math.h with windows SDK apparently +cdef inline double fmax(double x, double y): return x if x >= y else y + +DTYPE = np.double +ctypedef np.double_t DTYPE_t + +def lowess(np.ndarray[DTYPE_t, ndim = 1] endog, + np.ndarray[DTYPE_t, ndim = 1] exog, + double frac = 2.0 / 3.0, + Py_ssize_t it = 3, + double delta = 0.0): + '''lowess(endog, exog, frac=2.0/3.0, it=3, delta=0.0) + LOWESS (Locally Weighted Scatterplot Smoothing) + + A lowess function that outs smoothed estimates of endog + at the given exog values from points (exog, endog) + + Parameters + ---------- + endog: 1-D numpy array + The y-values of the observed points + exog: 1-D numpy array + The x-values of the observed points. exog has to be increasing. + frac: float + Between 0 and 1. The fraction of the data used + when estimating each y-value. + it: int + The number of residual-based reweightings + to perform. + delta: float + Distance within which to use linear-interpolation + instead of weighted regression. + + Returns + ------- + out: numpy array + A numpy array with two columns. The first column + is the sorted x values and the second column the + associated estimated y-values. + + Notes + ----- + This lowess function implements the algorithm given in the + reference below using local linear estimates. + + Suppose the input data has N points. The algorithm works by + estimating the `smooth` y_i by taking the frac*N closest points + to (x_i,y_i) based on their x values and estimating y_i + using a weighted linear regression. The weight for (x_j,y_j) + is tricube function applied to |x_i-x_j|. + + If it > 1, then further weighted local linear regressions + are performed, where the weights are the same as above + times the _lowess_bisquare function of the residuals. Each iteration + takes approximately the same amount of time as the original fit, + so these iterations are expensive. They are most useful when + the noise has extremely heavy tails, such as Cauchy noise. + Noise with less heavy-tails, such as t-distributions with df>2, + are less problematic. The weights downgrade the influence of + points with large residuals. In the extreme case, points whose + residuals are larger than 6 times the median absolute residual + are given weight 0. + + delta can be used to save computations. For each x_i, regressions + are skipped for points closer than delta. The next regression is + fit for the farthest point within delta of x_i and all points in + between are estimated by linearly interpolating between the two + regression fits. + + Judicious choice of delta can cut computation time considerably + for large data (N > 5000). A good choice is delta = 0.01 * + range(exog). + + Some experimentation is likely required to find a good + choice of frac and iter for a particular dataset. + + References + ---------- + Cleveland, W.S. (1979) "Robust Locally Weighted Regression + and Smoothing Scatterplots". Journal of the American Statistical + Association 74 (368): 829-836. + + Examples + -------- + The below allows a comparison between how different the fits from + lowess for different values of frac can be. + + >>> import numpy as np + >>> import statsmodels.api as sm + >>> lowess = sm.nonparametric.lowess + >>> x = np.random.uniform(low = -2*np.pi, high = 2*np.pi, size=500) + >>> y = np.sin(x) + np.random.normal(size=len(x)) + >>> z = lowess(y, x) + >>> w = lowess(y, x, frac=1./3) + + This gives a similar comparison for when it is 0 vs not. + + >>> import numpy as np + >>> import scipy.stats as stats + >>> import statsmodels.api as sm + >>> lowess = sm.nonparametric.lowess + >>> x = np.random.uniform(low = -2*np.pi, high = 2*np.pi, size=500) + >>> y = np.sin(x) + stats.cauchy.rvs(size=len(x)) + >>> z = lowess(y, x, frac= 1./3, it=0) + >>> w = lowess(y, x, frac=1./3) + + ''' + cdef: + Py_ssize_t n + int k + Py_ssize_t robiter, i, left_end, right_end + int last_fit_i, + np.ndarray[DTYPE_t, ndim = 1] x, y + np.ndarray[DTYPE_t, ndim = 1] y_fit + np.ndarray[DTYPE_t, ndim = 1] weights + np.ndarray[DTYPE_t, ndim = 1] resid_weights + + y = endog # now just alias + x = exog + + if not 0<=frac<=1: + raise ValueError("Lowess `frac` must be in the range [0,1]!") + + n = x.shape[0] + + # The number of neighbors in each regression. + # round up if close to integer + k = int(frac * n + 1e-10) + + # frac should be set, so that 2 <= k <= n. + # Conform them instead of throwing error. + if k < 2: + k = 2 + if k > n: + k = n + + y_fit = np.zeros(n, dtype = DTYPE) + resid_weights = np.zeros(n, dtype = DTYPE) + + it += 1 # Add one to it for initial run. + for robiter in xrange(it): + i = 0 + last_fit_i = -1 + left_end = 0 + right_end = k + y_fit = np.zeros(n, dtype = DTYPE) + + # 'do' Fit y[i]'s 'until' the end of the regression + while True: + # Re-initialize the weights for each point x[i]. + weights = np.zeros(n, dtype = DTYPE) + + # Describe the neighborhood around the current x[i]. + left_end, right_end, radius = update_neighborhood(x, i, n, + left_end, + right_end) + + # Calculate the weights for the regression in this neighborhood. + # Determine if at least some weights are positive, so a regression + # is ok. + reg_ok = calculate_weights(x, weights, resid_weights, i, left_end, + right_end, radius, robiter > 0) + + # If ok, run the regression + calculate_y_fit(x, y, i, y_fit, weights, left_end, right_end, + reg_ok) + + # If we skipped some points (because of how delta was set), go back + # and fit them by linear interpolation. + if last_fit_i < (i - 1): + interpolate_skipped_fits(x, y_fit, i, last_fit_i) + + # Update the last fit counter to indicate we've now fit this point. + # Find the next i for which we'll run a regression. + i, last_fit_i = update_indices(x, y_fit, delta, i, n, last_fit_i) + + if last_fit_i >= n-1: + break + + # Calculate residual weights, but don't bother on the last iteration. + if robiter < it - 1: + resid_weights = calculate_residual_weights(y, y_fit) + + return np.array([x, y_fit]).T + + +def update_neighborhood(np.ndarray[DTYPE_t, ndim = 1] x, + Py_ssize_t i, + Py_ssize_t n, + Py_ssize_t left_end, + Py_ssize_t right_end): + ''' + Find the indices bounding the k-nearest-neighbors of the current point. + + Parameters + ---------- + x: 1-D numpy array + The input x-values + i: indexing integer + The index of the point currently being fit. + n: indexing integer + The length of the input vectors, x and y. + left_end: indexing integer + The index of the left-most point in the neighborhood + of x[i-1] (the previously-fit point). + right_end: indexing integer + The index of the right-most point in the neighborhood + of x[i-1]. Non-inclusive, s.t. the neighborhood is + x[left_end] <= x < x[right_end]. + radius: float + The radius of the current neighborhood. The larger of + distances between x[i] and its left-most or right-most + neighbor. + + Returns + ------- + left_end: indexing integer + The index of the left-most point in the neighborhood + of x[i] (the current point). + right_end: indexing integer + The index of the right-most point in the neighborhood + of x[i]. Non-inclusive, s.t. the neighborhood is + x[left_end] <= x < x[right_end]. + radius: float + The radius of the current neighborhood. The larger of + distances between x[i] and its left-most or right-most + neighbor. + ''' + + cdef double radius + # A subtle loop. Start from the current neighborhood range: + # [left_end, right_end). Shift both ends rightwards by one + # (so that the neighborhood still contains k points), until + # the current point is in the center (or just to the left of + # the center) of the neighborhood. This neighborhood will + # contain the k-nearest neighbors of x[i]. + # + # Once the right end hits the end of the data, hold the + # neighborhood the same for the remaining x[i]s. + while True: + if right_end < n: + + if (x[i] > (x[left_end] + x[right_end]) / 2.0): + left_end += 1 + right_end += 1 + else: + break + else: + break + + radius = fmax(x[i] - x[left_end], x[right_end-1] - x[i]) + + return left_end, right_end, radius + +cdef bool calculate_weights(np.ndarray[DTYPE_t, ndim = 1] x, + np.ndarray[DTYPE_t, ndim = 1] weights, + np.ndarray[DTYPE_t, ndim = 1] resid_weights, + Py_ssize_t i, + Py_ssize_t left_end, + Py_ssize_t right_end, + double radius, + bool use_resid_weights): + ''' + + Parameters + ---------- + x: 1-D vector + The input x-values. + weights: 1-D numpy array + The vector of regression weights. + resid_weights: 1-D numpy array + The vector of residual weights from the last iteration. + i: indexing integer + The index of the point currently being fit. + left_end: indexing integer + The index of the left-most point in the neighborhood of + x[i]. + right_end: indexing integer + The index of the right-most point in the neighborhood + of x[i]. Non-inclusive, s.t. the neighborhood is + x[left_end] <= x < x[right_end]. + radius: float + The radius of the current neighborhood. The larger of + distances between x[i] and its left-most or right-most + neighbor. + use_resid_weights: boolean + If True, multiply the x-distance weights by the residual + weights from the last iteration of regressions. Set to + False on the first iteration (since there are no residuals + yet) and True on the subsequent ``robustifying`` iterations. + + + Returns + ------- + reg_ok: boolean + If True, at least some points have positive weight, and the + regression will be run. If False, the regression is skipped + and y_fit[i] is set to equal y[i]. + Also, changes elements of weights in-place. + ''' + + cdef: + np.ndarray[DTYPE_t, ndim = 1] x_j = x[left_end:right_end] + np.ndarray[DTYPE_t, ndim = 1] dist_i_j = np.abs(x_j - x[i]) / radius + bool reg_ok = True + double sum_weights + + # Assign the distance measure to the weights, then apply the tricube + # function to change in-place. + # use_resid_weights will be False on the first iteration, then True + # on the subsequent ones, after some residuals have been calculated. + weights[left_end:right_end] = dist_i_j + if use_resid_weights == False: + tricube(weights[left_end:right_end]) + if use_resid_weights == True: + tricube(weights[left_end:right_end]) + weights[left_end:right_end] = (weights[left_end:right_end] * + resid_weights[left_end:right_end]) + + sum_weights = np.sum(weights[left_end:right_end]) + + if sum_weights <= 0.0 or (np.sum(weights[left_end:right_end] != 0) == 1): + # 2nd condition checks if only 1 local weight is non-zero, which + # will give a divisor of zero in calculate_y_fit + # see 1960 + reg_ok = False + else: + weights[left_end:right_end] = weights[left_end:right_end] / sum_weights + + return reg_ok + + +cdef void calculate_y_fit(np.ndarray[DTYPE_t, ndim = 1] x, + np.ndarray[DTYPE_t, ndim = 1] y, + Py_ssize_t i, + np.ndarray[DTYPE_t, ndim = 1] y_fit, + np.ndarray[DTYPE_t, ndim = 1] weights, + Py_ssize_t left_end, + Py_ssize_t right_end, + bool reg_ok): + ''' + Calculate smoothed/fitted y-value by weighted regression. + + Parameters + ---------- + x: 1-D numpy array + The vector of input x-values. + y: 1-D numpy array + The vector of input y-values. + i: indexing integer + The index of the point currently being fit. + y_fit: 1-D numpy array + The vector of fitted y-values. + weights: 1-D numpy array + The vector of regression weights. + left_end: indexing integer + The index of the left-most point in the neighborhood of + x[i]. + right_end: indexing integers + The index of the right-most point in the neighborhood + of x[i]. Non-inclusive, s.t. the neighborhood is + x[left_end] <= x < x[right_end]. + reg_ok: boolean + If True, at least some points have positive weight, and the + regression will be run. If False, the regression is skipped + and y_fit[i] is set to equal y[i]. + + Returns + ------- + Nothing. Changes y_fit[i] in-place. + + Notes + ----- + No regression function (e.g. lstsq) is called. Instead "projection + vector" p_i_j is calculated, and y_fit[i] = sum(p_i_j * y[j]) = y_fit[i] + for j s.t. x[j] is in the neighborhood of x[i]. p_i_j is a function of + the weights, x[i], and its neighbors. + ''' + + cdef: + double sum_weighted_x = 0, weighted_sqdev_x = 0, p_i_j + + if reg_ok == False: + y_fit[i] = y[i] + else: + for j in xrange(left_end, right_end): + sum_weighted_x += weights[j] * x[j] + for j in xrange(left_end, right_end): + weighted_sqdev_x += weights[j] * (x[j] - sum_weighted_x) ** 2 + for j in xrange(left_end, right_end): + p_i_j = weights[j] * (1.0 + (x[i] - sum_weighted_x) * + (x[j] - sum_weighted_x) / weighted_sqdev_x) + y_fit[i] += p_i_j * y[j] + +cdef void interpolate_skipped_fits(np.ndarray[DTYPE_t, ndim = 1] x, + np.ndarray[DTYPE_t, ndim = 1] y_fit, + Py_ssize_t i, + Py_ssize_t last_fit_i): + ''' + Calculate smoothed/fitted y by linear interpolation between the current + and previous y fitted by weighted regression. + Called only if delta > 0. + + Parameters + ---------- + x: 1-D numpy array + The vector of input x-values. + y_fit: 1-D numpy array + The vector of fitted y-values + i: indexing integer + The index of the point currently being fit by weighted + regression. + last_fit_i: indexing integer + The index of the last point fit by weighted regression. + + Returns + ------- + Nothing: changes elements of y_fit in-place. + ''' + + cdef np.ndarray[DTYPE_t, ndim = 1] a + + a = x[(last_fit_i + 1): i] - x[last_fit_i] + a = a / (x[i] - x[last_fit_i]) + y_fit[(last_fit_i + 1): i] = a * y_fit[i] + (1.0 - a) * y_fit[last_fit_i] + + +def update_indices(np.ndarray[DTYPE_t, ndim = 1] x, + np.ndarray[DTYPE_t, ndim = 1] y_fit, + double delta, + Py_ssize_t i, + Py_ssize_t n, + Py_ssize_t last_fit_i): + ''' + Update the counters of the local regression. + + Parameters + ---------- + x: 1-D numpy array + The vector of input x-values. + y_fit: 1-D numpy array + The vector of fitted y-values + delta: float + Indicates the range of x values within which linear + interpolation should be used to estimate y_fit instead + of weighted regression. + i: indexing integer + The index of the current point being fit. + n: indexing integer + The length of the input vectors, x and y. + last_fit_i: indexing integer + The last point at which y_fit was calculated. + + Returns + ------- + i: indexing integer + The next point at which to run a weighted regression. + last_fit_i: indexing integer + The updated last point at which y_fit was calculated + + Notes + ----- + The relationship between the outputs is s.t. x[i+1] > + x[last_fit_i] + delta. + + ''' + cdef: + Py_ssize_t k + double cutpoint + + last_fit_i = i + k = last_fit_i + # For most points within delta of the current point, we skip the + # weighted linear regression (which save much computation of + # weights and fitted points). Instead, we'll jump to the last + # point within delta, fit the weighted regression at that point, + # and linearly interpolate in between. + + # This loop increments until we fall just outside of delta distance, + # copying the results for any repeated x's along the way. + cutpoint = x[last_fit_i] + delta + for k in range(last_fit_i + 1, n): + if x[k] > cutpoint: + break + if x[k] == x[last_fit_i]: + # if tied with previous x-value, just use the already + # fitted y, and update the last-fit counter. + y_fit[k] = y_fit[last_fit_i] + last_fit_i = k + + # i, which indicates the next point to fit the regression at, is + # either one prior to k (since k should be the first point outside + # of delta) or is just incremented + 1 if k = i+1. This insures we + # always step forward. + i = max(k-1, last_fit_i + 1) + + return i, last_fit_i + + +def calculate_residual_weights(np.ndarray[DTYPE_t, ndim = 1] y, + np.ndarray[DTYPE_t, ndim = 1] y_fit): + ''' + Calculate residual weights for the next `robustifying` iteration. + + Parameters + ---------- + y: 1-D numpy array + The vector of actual input y-values. + y_fit: 1-D numpy array + The vector of fitted y-values from the current + iteration. + + Returns + ------- + resid_weights: 1-D numpy array + The vector of residual weights, to be used in the + next iteration of regressions. + ''' + + std_resid = np.abs(y - y_fit) + median = np.median(std_resid) + if median == 0: + std_resid[std_resid > 0] = 1 + else: + std_resid /= 6.0 * median + + # Some trimming of outlier residuals. + std_resid[std_resid >= 1.0] = 1.0 + #std_resid[std_resid >= 0.999] = 1.0 + #std_resid[std_resid <= 0.001] = 0.0 + + resid_weights = bisquare(std_resid) + + return resid_weights + + +cdef void tricube(np.ndarray[DTYPE_t, ndim = 1] x): + ''' + The tri-cubic function (1 - x**3)**3. Used to weight neighboring + points along the x-axis based on their distance to the current point. + + Parameters + ---------- + x: 1-D numpy array + A vector of neighbors` distances from the current point, + in units of the neighborhood radius. + + Returns + ------- + Nothing. Changes array elements in-place + ''' + + # fast_array_cube is an elementwise, in-place cubed-power + # operator. + fast_array_cube(x) + x[:] = np.negative(x) + x += 1 + fast_array_cube(x) + + +cdef void fast_array_cube(np.ndarray[DTYPE_t, ndim = 1] x): + ''' + A fast, elementwise, in-place cube operator. Called by the + tricube function. + + Parameters + ---------- + x: 1-D numpy array + + Returns + ------- + Nothing. Changes array elements in-place. + ''' + + x2 = x*x + x *= x2 + + +def bisquare(np.ndarray[DTYPE_t, ndim = 1] x): + ''' + The bi-square function (1 - x**2)**2. + + Used to weight the residuals in the `robustifying` + iterations. Called by the calculate_residual_weights function. + + Parameters + ---------- + x: 1-D numpy array + A vector of absolute regression residuals, in units of + 6 times the median absolute residual. + + Returns + ------- + A 1-D numpy array of residual weights. + ''' + + return (1.0 - x**2)**2 diff --git a/statsmodels/nonparametric/api.py b/statsmodels/nonparametric/api.py new file mode 100644 index 0000000..2a14f95 --- /dev/null +++ b/statsmodels/nonparametric/api.py @@ -0,0 +1,13 @@ +__all__ = [ + "KDEUnivariate", + "KDEMultivariate", "KDEMultivariateConditional", "EstimatorSettings", + "KernelReg", "KernelCensoredReg", + "lowess", "bandwidths" +] +from .kde import KDEUnivariate +from .smoothers_lowess import lowess +from . import bandwidths + +from .kernel_density import \ + KDEMultivariate, KDEMultivariateConditional, EstimatorSettings +from .kernel_regression import KernelReg, KernelCensoredReg diff --git a/statsmodels/nonparametric/bandwidths.py b/statsmodels/nonparametric/bandwidths.py new file mode 100644 index 0000000..4828682 --- /dev/null +++ b/statsmodels/nonparametric/bandwidths.py @@ -0,0 +1,177 @@ +from __future__ import division + +import numpy as np +from scipy.stats import scoreatpercentile as sap +from statsmodels.sandbox.nonparametric import kernels + +def _select_sigma(X): + """ + Returns the smaller of std(X, ddof=1) or normalized IQR(X) over axis 0. + + References + ---------- + Silverman (1986) p.47 + """ +# normalize = norm.ppf(.75) - norm.ppf(.25) + normalize = 1.349 +# IQR = np.subtract.reduce(percentile(X, [75,25], +# axis=axis), axis=axis)/normalize + IQR = (sap(X, 75) - sap(X, 25))/normalize + return np.minimum(np.std(X, axis=0, ddof=1), IQR) + + +## Univariate Rule of Thumb Bandwidths ## +def bw_scott(x, kernel=None): + """ + Scott's Rule of Thumb + + Parameters + ---------- + x : array-like + Array for which to get the bandwidth + kernel : CustomKernel object + Unused + + Returns + ------- + bw : float + The estimate of the bandwidth + + Notes + ----- + Returns 1.059 * A * n ** (-1/5.) where :: + + A = min(std(x, ddof=1), IQR/1.349) + IQR = np.subtract.reduce(np.percentile(x, [75,25])) + + References + ---------- + + Scott, D.W. (1992) Multivariate Density Estimation: Theory, Practice, and + Visualization. + """ + A = _select_sigma(x) + n = len(x) + return 1.059 * A * n ** (-0.2) + +def bw_silverman(x, kernel=None): + """ + Silverman's Rule of Thumb + + Parameters + ---------- + x : array-like + Array for which to get the bandwidth + kernel : CustomKernel object + Unused + + Returns + ------- + bw : float + The estimate of the bandwidth + + Notes + ----- + Returns .9 * A * n ** (-1/5.) where :: + + A = min(std(x, ddof=1), IQR/1.349) + IQR = np.subtract.reduce(np.percentile(x, [75,25])) + + References + ---------- + + Silverman, B.W. (1986) `Density Estimation.` + """ + A = _select_sigma(x) + n = len(x) + return .9 * A * n ** (-0.2) + + +def bw_normal_reference(x, kernel=kernels.Gaussian): + """ + Plug-in bandwidth with kernel specific constant based on normal reference. + + This bandwidth minimizes the mean integrated square error if the true + distribution is the normal. This choice is an appropriate bandwidth for + single peaked distributions that are similar to the normal distribution. + + Parameters + ---------- + x : array-like + Array for which to get the bandwidth + kernel : CustomKernel object + Used to calculate the constant for the plug-in bandwidth. + + Returns + ------- + bw : float + The estimate of the bandwidth + + Notes + ----- + Returns C * A * n ** (-1/5.) where :: + + A = min(std(x, ddof=1), IQR/1.349) + IQR = np.subtract.reduce(np.percentile(x, [75,25])) + C = constant from Hansen (2009) + + When using a Gaussian kernel this is equivalent to the 'scott' bandwidth up + to two decimal places. This is the accuracy to which the 'scott' constant is + specified. + + References + ---------- + + Silverman, B.W. (1986) `Density Estimation.` + Hansen, B.E. (2009) `Lecture Notes on Nonparametrics.` + """ + C = kernel.normal_reference_constant + A = _select_sigma(x) + n = len(x) + return C * A * n ** (-0.2) + +## Plug-In Methods ## + +## Least Squares Cross-Validation ## + +## Helper Functions ## + +bandwidth_funcs = { + "scott": bw_scott, + "silverman": bw_silverman, + "normal_reference": bw_normal_reference, +} + + +def select_bandwidth(x, bw, kernel): + """ + Selects bandwidth for a selection rule bw + + this is a wrapper around existing bandwidth selection rules + + Parameters + ---------- + x : array-like + Array for which to get the bandwidth + bw : string + name of bandwidth selection rule, currently supported are: + %s + kernel : not used yet + + Returns + ------- + bw : float + The estimate of the bandwidth + + """ + bw = bw.lower() + if bw not in bandwidth_funcs: + raise ValueError("Bandwidth %s not understood" % bw) +#TODO: uncomment checks when we have non-rule of thumb bandwidths for diff. kernels +# if kernel == "gauss": + return bandwidth_funcs[bw](x, kernel) +# else: +# raise ValueError("Only Gaussian Kernels are currently supported") + +# Interpolate docstring to plugin supported bandwidths +select_bandwidth.__doc__ %= (", ".join(sorted(bandwidth_funcs.keys())),) diff --git a/statsmodels/nonparametric/kde.py b/statsmodels/nonparametric/kde.py new file mode 100644 index 0000000..f29e3c1 --- /dev/null +++ b/statsmodels/nonparametric/kde.py @@ -0,0 +1,549 @@ +""" +Univariate Kernel Density Estimators + +References +---------- +Racine, Jeff. (2008) "Nonparametric Econometrics: A Primer," Foundation and + Trends in Econometrics: Vol 3: No 1, pp1-88. + http://dx.doi.org/10.1561/0800000009 + +http://en.wikipedia.org/wiki/Kernel_%28statistics%29 + +Silverman, B.W. Density Estimation for Statistics and Data Analysis. +""" +from __future__ import absolute_import, print_function, division +from statsmodels.compat.python import range +import numpy as np +from scipy import integrate, stats +from statsmodels.sandbox.nonparametric import kernels +from statsmodels.tools.decorators import cache_readonly +from . import bandwidths +from .kdetools import (forrt, revrt, silverman_transform) +from .linbin import fast_linbin + +#### Kernels Switch for estimators #### + +kernel_switch = dict(gau=kernels.Gaussian, epa=kernels.Epanechnikov, + uni=kernels.Uniform, tri=kernels.Triangular, + biw=kernels.Biweight, triw=kernels.Triweight, + cos=kernels.Cosine, cos2=kernels.Cosine2) + +def _checkisfit(self): + try: + self.density + except: + raise ValueError("Call fit to fit the density first") + + +#### Kernel Density Estimator Class ### + + +class KDEUnivariate(object): + """ + Univariate Kernel Density Estimator. + + Parameters + ---------- + endog : array-like + The variable for which the density estimate is desired. + + Notes + ----- + If cdf, sf, cumhazard, or entropy are computed, they are computed based on + the definition of the kernel rather than the FFT approximation, even if + the density is fit with FFT = True. + + `KDEUnivariate` is much faster than `KDEMultivariate`, due to its FFT-based + implementation. It should be preferred for univariate, continuous data. + `KDEMultivariate` also supports mixed data. + + See Also + -------- + KDEMultivariate + kdensity, kdensityfft + + Examples + -------- + >>> import statsmodels.api as sm + >>> import matplotlib.pyplot as plt + + >>> nobs = 300 + >>> np.random.seed(1234) # Seed random generator + >>> dens = sm.nonparametric.KDEUnivariate(np.random.normal(size=nobs)) + >>> dens.fit() + >>> plt.plot(dens.cdf) + >>> plt.show() + + """ + + def __init__(self, endog): + self.endog = np.asarray(endog) + + def fit(self, kernel="gau", bw="normal_reference", fft=True, weights=None, + gridsize=None, adjust=1, cut=3, clip=(-np.inf, np.inf)): + """ + Attach the density estimate to the KDEUnivariate class. + + Parameters + ---------- + kernel : str + The Kernel to be used. Choices are: + + - "biw" for biweight + - "cos" for cosine + - "epa" for Epanechnikov + - "gau" for Gaussian. + - "tri" for triangular + - "triw" for triweight + - "uni" for uniform + + bw : str, float + The bandwidth to use. Choices are: + + - "scott" - 1.059 * A * nobs ** (-1/5.), where A is + `min(std(X),IQR/1.34)` + - "silverman" - .9 * A * nobs ** (-1/5.), where A is + `min(std(X),IQR/1.34)` + - "normal_reference" - C * A * nobs ** (-1/5.), where C is + calculated from the kernel. Equivalent (up to 2 dp) to the + "scott" bandwidth for gaussian kernels. See bandwidths.py + - If a float is given, it is the bandwidth. + + fft : bool + Whether or not to use FFT. FFT implementation is more + computationally efficient. However, only the Gaussian kernel + is implemented. If FFT is False, then a 'nobs' x 'gridsize' + intermediate array is created. + gridsize : int + If gridsize is None, max(len(X), 50) is used. + cut : float + Defines the length of the grid past the lowest and highest values + of X so that the kernel goes to zero. The end points are + -/+ cut*bw*{min(X) or max(X)} + adjust : float + An adjustment factor for the bw. Bandwidth becomes bw * adjust. + """ + try: + bw = float(bw) + self.bw_method = "user-given" + except: + self.bw_method = bw + endog = self.endog + + if fft: + if kernel != "gau": + msg = "Only gaussian kernel is available for fft" + raise NotImplementedError(msg) + if weights is not None: + msg = "Weights are not implemented for fft" + raise NotImplementedError(msg) + density, grid, bw = kdensityfft(endog, kernel=kernel, bw=bw, + adjust=adjust, weights=weights, gridsize=gridsize, + clip=clip, cut=cut) + else: + density, grid, bw = kdensity(endog, kernel=kernel, bw=bw, + adjust=adjust, weights=weights, gridsize=gridsize, + clip=clip, cut=cut) + self.density = density + self.support = grid + self.bw = bw + self.kernel = kernel_switch[kernel](h=bw) # we instantiate twice, + # should this passed to funcs? + # put here to ensure empty cache after re-fit with new options + self.kernel.weights = weights + if weights is not None: + self.kernel.weights /= weights.sum() + self._cache = {} + + @cache_readonly + def cdf(self): + """ + Returns the cumulative distribution function evaluated at the support. + + Notes + ----- + Will not work if fit has not been called. + """ + _checkisfit(self) + kern = self.kernel + if kern.domain is None: # TODO: test for grid point at domain bound + a,b = -np.inf,np.inf + else: + a,b = kern.domain + func = lambda x,s: kern.density(s,x) + + support = self.support + support = np.r_[a,support] + gridsize = len(support) + endog = self.endog + probs = [integrate.quad(func, support[i - 1], support[i], + args=endog)[0] for i in range(1, gridsize)] + return np.cumsum(probs) + + @cache_readonly + def cumhazard(self): + """ + Returns the hazard function evaluated at the support. + + Notes + ----- + Will not work if fit has not been called. + + """ + _checkisfit(self) + return -np.log(self.sf) + + @cache_readonly + def sf(self): + """ + Returns the survival function evaluated at the support. + + Notes + ----- + Will not work if fit has not been called. + """ + _checkisfit(self) + return 1 - self.cdf + + @cache_readonly + def entropy(self): + """ + Returns the differential entropy evaluated at the support + + Notes + ----- + Will not work if fit has not been called. 1e-12 is added to each + probability to ensure that log(0) is not called. + """ + _checkisfit(self) + + def entr(x,s): + pdf = kern.density(s,x) + return pdf*np.log(pdf+1e-12) + + kern = self.kernel + + if kern.domain is not None: + a, b = self.domain + else: + a, b = -np.inf, np.inf + endog = self.endog + #TODO: below could run into integr problems, cf. stats.dist._entropy + return -integrate.quad(entr, a, b, args=(endog,))[0] + + @cache_readonly + def icdf(self): + """ + Inverse Cumulative Distribution (Quantile) Function + + Notes + ----- + Will not work if fit has not been called. Uses + `scipy.stats.mstats.mquantiles`. + """ + _checkisfit(self) + gridsize = len(self.density) + return stats.mstats.mquantiles(self.endog, np.linspace(0, 1, gridsize)) + + def evaluate(self, point): + """ + Evaluate density at a single point. + + Parameters + ---------- + point : float + Point at which to evaluate the density. + """ + _checkisfit(self) + return self.kernel.density(self.endog, point) + + +#### Kernel Density Estimator Functions #### + +def kdensity(X, kernel="gau", bw="normal_reference", weights=None, gridsize=None, + adjust=1, clip=(-np.inf, np.inf), cut=3, retgrid=True): + """ + Rosenblatt-Parzen univariate kernel density estimator. + + Parameters + ---------- + X : array-like + The variable for which the density estimate is desired. + kernel : str + The Kernel to be used. Choices are + - "biw" for biweight + - "cos" for cosine + - "epa" for Epanechnikov + - "gau" for Gaussian. + - "tri" for triangular + - "triw" for triweight + - "uni" for uniform + bw : str, float + "scott" - 1.059 * A * nobs ** (-1/5.), where A is min(std(X),IQR/1.34) + "silverman" - .9 * A * nobs ** (-1/5.), where A is min(std(X),IQR/1.34) + If a float is given, it is the bandwidth. + weights : array or None + Optional weights. If the X value is clipped, then this weight is + also dropped. + gridsize : int + If gridsize is None, max(len(X), 50) is used. + adjust : float + An adjustment factor for the bw. Bandwidth becomes bw * adjust. + clip : tuple + Observations in X that are outside of the range given by clip are + dropped. The number of observations in X is then shortened. + cut : float + Defines the length of the grid past the lowest and highest values of X + so that the kernel goes to zero. The end points are + -/+ cut*bw*{min(X) or max(X)} + retgrid : bool + Whether or not to return the grid over which the density is estimated. + + Returns + ------- + density : array + The densities estimated at the grid points. + grid : array, optional + The grid points at which the density is estimated. + + Notes + ----- + Creates an intermediate (`gridsize` x `nobs`) array. Use FFT for a more + computationally efficient version. + """ + X = np.asarray(X) + if X.ndim == 1: + X = X[:, None] + clip_x = np.logical_and(X > clip[0], X < clip[1]) + X = X[clip_x] + + nobs = len(X) # after trim + + if gridsize is None: + gridsize = max(nobs,50) # don't need to resize if no FFT + + # handle weights + if weights is None: + weights = np.ones(nobs) + q = nobs + else: + # ensure weights is a numpy array + weights = np.asarray(weights) + + if len(weights) != len(clip_x): + msg = "The length of the weights must be the same as the given X." + raise ValueError(msg) + weights = weights[clip_x.squeeze()] + q = weights.sum() + + # Get kernel object corresponding to selection + kern = kernel_switch[kernel]() + + # if bw is None, select optimal bandwidth for kernel + try: + bw = float(bw) + except: + bw = bandwidths.select_bandwidth(X, bw, kern) + bw *= adjust + + a = np.min(X, axis=0) - cut * bw + b = np.max(X, axis=0) + cut * bw + grid = np.linspace(a, b, gridsize) + + k = (X.T - grid[:, None])/bw # uses broadcasting to make a gridsize x nobs + + # set kernel bandwidth + kern.seth(bw) + + # truncate to domain + if kern.domain is not None: # won't work for piecewise kernels like parzen + z_lo, z_high = kern.domain + domain_mask = (k < z_lo) | (k > z_high) + k = kern(k) # estimate density + k[domain_mask] = 0 + else: + k = kern(k) # estimate density + + k[k < 0] = 0 # get rid of any negative values, do we need this? + + dens = np.dot(k, weights)/(q*bw) + + if retgrid: + return dens, grid, bw + else: + return dens, bw + +def kdensityfft(X, kernel="gau", bw="normal_reference", weights=None, gridsize=None, + adjust=1, clip=(-np.inf, np.inf), cut=3, retgrid=True): + """ + Rosenblatt-Parzen univariate kernel density estimator + + Parameters + ---------- + X : array-like + The variable for which the density estimate is desired. + kernel : str + ONLY GAUSSIAN IS CURRENTLY IMPLEMENTED. + "bi" for biweight + "cos" for cosine + "epa" for Epanechnikov, default + "epa2" for alternative Epanechnikov + "gau" for Gaussian. + "par" for Parzen + "rect" for rectangular + "tri" for triangular + bw : str, float + "scott" - 1.059 * A * nobs ** (-1/5.), where A is min(std(X),IQR/1.34) + "silverman" - .9 * A * nobs ** (-1/5.), where A is min(std(X),IQR/1.34) + If a float is given, it is the bandwidth. + weights : array or None + WEIGHTS ARE NOT CURRENTLY IMPLEMENTED. + Optional weights. If the X value is clipped, then this weight is + also dropped. + gridsize : int + If gridsize is None, min(len(X), 512) is used. Note that the provided + number is rounded up to the next highest power of 2. + adjust : float + An adjustment factor for the bw. Bandwidth becomes bw * adjust. + clip : tuple + Observations in X that are outside of the range given by clip are + dropped. The number of observations in X is then shortened. + cut : float + Defines the length of the grid past the lowest and highest values of X + so that the kernel goes to zero. The end points are + -/+ cut*bw*{X.min() or X.max()} + retgrid : bool + Whether or not to return the grid over which the density is estimated. + + Returns + ------- + density : array + The densities estimated at the grid points. + grid : array, optional + The grid points at which the density is estimated. + + Notes + ----- + Only the default kernel is implemented. Weights aren't implemented yet. + This follows Silverman (1982) with changes suggested by Jones and Lotwick + (1984). However, the discretization step is replaced by linear binning + of Fan and Marron (1994). This should be extended to accept the parts + that are dependent only on the data to speed things up for + cross-validation. + + References + ---------- + Fan, J. and J.S. Marron. (1994) `Fast implementations of nonparametric + curve estimators`. Journal of Computational and Graphical Statistics. + 3.1, 35-56. + Jones, M.C. and H.W. Lotwick. (1984) `Remark AS R50: A Remark on Algorithm + AS 176. Kernal Density Estimation Using the Fast Fourier Transform`. + Journal of the Royal Statistical Society. Series C. 33.1, 120-2. + Silverman, B.W. (1982) `Algorithm AS 176. Kernel density estimation using + the Fast Fourier Transform. Journal of the Royal Statistical Society. + Series C. 31.2, 93-9. + """ + X = np.asarray(X) + X = X[np.logical_and(X > clip[0], X < clip[1])] # won't work for two columns. + # will affect underlying data? + + # Get kernel object corresponding to selection + kern = kernel_switch[kernel]() + + try: + bw = float(bw) + except: + bw = bandwidths.select_bandwidth(X, bw, kern) # will cross-val fit this pattern? + bw *= adjust + + nobs = len(X) # after trim + + # 1 Make grid and discretize the data + if gridsize is None: + gridsize = np.max((nobs, 512.)) + gridsize = 2**np.ceil(np.log2(gridsize)) # round to next power of 2 + + a = np.min(X) - cut * bw + b = np.max(X) + cut * bw + grid,delta = np.linspace(a, b, int(gridsize), retstep=True) + RANGE = b - a + +#TODO: Fix this? +# This is the Silverman binning function, but I believe it's buggy (SS) +# weighting according to Silverman +# count = counts(X,grid) +# binned = np.zeros_like(grid) #xi_{k} in Silverman +# j = 0 +# for k in range(int(gridsize-1)): +# if count[k]>0: # there are points of X in the grid here +# Xingrid = X[j:j+count[k]] # get all these points +# # get weights at grid[k],grid[k+1] +# binned[k] += np.sum(grid[k+1]-Xingrid) +# binned[k+1] += np.sum(Xingrid-grid[k]) +# j += count[k] +# binned /= (nobs)*delta**2 # normalize binned to sum to 1/delta + +#NOTE: THE ABOVE IS WRONG, JUST TRY WITH LINEAR BINNING + binned = fast_linbin(X, a, b, gridsize) / (delta * nobs) + + # step 2 compute FFT of the weights, using Munro (1976) FFT convention + y = forrt(binned) + + # step 3 and 4 for optimal bw compute zstar and the density estimate f + # don't have to redo the above if just changing bw, ie., for cross val + +#NOTE: silverman_transform is the closed form solution of the FFT of the +#gaussian kernel. Not yet sure how to generalize it. + zstar = silverman_transform(bw, gridsize, RANGE)*y # 3.49 in Silverman + # 3.50 w Gaussian kernel + f = revrt(zstar) + if retgrid: + return f, grid, bw + else: + return f, bw + +if __name__ == "__main__": + import numpy as np + np.random.seed(12345) + xi = np.random.randn(100) + f,grid, bw1 = kdensity(xi, kernel="gau", bw=.372735, retgrid=True) + f2, bw2 = kdensityfft(xi, kernel="gau", bw="silverman",retgrid=False) + +# do some checking vs. silverman algo. +# you need denes.f, http://lib.stat.cmu.edu/apstat/176 +#NOTE: I (SS) made some changes to the Fortran +# and the FFT stuff from Munro http://lib.stat.cmu.edu/apstat/97o +# then compile everything and link to denest with f2py +#Make pyf file as usual, then compile shared object +#f2py denest.f -m denest2 -h denest.pyf +#edit pyf +#-c flag makes it available to other programs, fPIC builds a shared library +#/usr/bin/gfortran -Wall -c -fPIC fft.f +#f2py -c denest.pyf ./fft.o denest.f + + try: + from denest2 import denest # @UnresolvedImport + a = -3.4884382032045504 + b = 4.3671504686785605 + RANGE = b - a + bw = bandwidths.bw_silverman(xi) + + ft,smooth,ifault,weights,smooth1 = denest(xi,a,b,bw,np.zeros(512),np.zeros(512),0, + np.zeros(512), np.zeros(512)) +# We use a different binning algo, so only accurate up to 3 decimal places + np.testing.assert_almost_equal(f2, smooth, 3) +#NOTE: for debugging +# y2 = forrt(weights) +# RJ = np.arange(512/2+1) +# FAC1 = 2*(np.pi*bw/RANGE)**2 +# RJFAC = RJ**2*FAC1 +# BC = 1 - RJFAC/(6*(bw/((b-a)/M))**2) +# FAC = np.exp(-RJFAC)/BC +# SMOOTH = np.r_[FAC,FAC[1:-1]] * y2 + +# dens = revrt(SMOOTH) + + except: +# ft = np.loadtxt('./ft_silver.csv') +# smooth = np.loadtxt('./smooth_silver.csv') + print("Didn't get the estimates from the Silverman algorithm") diff --git a/statsmodels/nonparametric/kdetools.py b/statsmodels/nonparametric/kdetools.py new file mode 100644 index 0000000..99b5579 --- /dev/null +++ b/statsmodels/nonparametric/kdetools.py @@ -0,0 +1,57 @@ +#### Convenience Functions to be moved to kerneltools #### +from __future__ import division +from statsmodels.compat.python import range +import numpy as np + +def forrt(X, m=None): + """ + RFFT with order like Munro (1976) FORTT routine. + """ + if m is None: + m = len(X) + y = np.fft.rfft(X, m) / m + return np.r_[y.real, y[1:-1].imag] + +def revrt(X, m=None): + """ + Inverse of forrt. Equivalent to Munro (1976) REVRT routine. + """ + if m is None: + m = len(X) + i = int(m // 2 + 1) + y = X[:i] + np.r_[0, X[i:], 0] * 1j + return np.fft.irfft(y)*m + +def silverman_transform(bw, M, RANGE): + """ + FFT of Gaussian kernel following to Silverman AS 176. + + Notes + ----- + Underflow is intentional as a dampener. + """ + J = np.arange(M/2+1) + FAC1 = 2*(np.pi*bw/RANGE)**2 + JFAC = J**2*FAC1 + BC = 1 - 1. / 3 * (J * 1./M*np.pi)**2 + FAC = np.exp(-JFAC)/BC + kern_est = np.r_[FAC, FAC[1:-1]] + return kern_est + +def counts(x, v): + """ + Counts the number of elements of x that fall within the grid points v + + Notes + ----- + Using np.digitize and np.bincount + """ + idx = np.digitize(x, v) + try: # numpy 1.6 + return np.bincount(idx, minlength=len(v)) + except: + bc = np.bincount(idx) + return np.r_[bc, np.zeros(len(v) - len(bc))] + +def kdesum(x, axis=0): + return np.asarray([np.sum(x[i] - x, axis) for i in range(len(x))]) diff --git a/statsmodels/nonparametric/kernel_density.py b/statsmodels/nonparametric/kernel_density.py new file mode 100644 index 0000000..cd5ce2f --- /dev/null +++ b/statsmodels/nonparametric/kernel_density.py @@ -0,0 +1,690 @@ +""" +Multivariate Conditional and Unconditional Kernel Density Estimation +with Mixed Data Types. + +References +---------- +[1] Racine, J., Li, Q. Nonparametric econometrics: theory and practice. + Princeton University Press. (2007) +[2] Racine, Jeff. "Nonparametric Econometrics: A Primer," Foundation + and Trends in Econometrics: Vol 3: No 1, pp1-88. (2008) + http://dx.doi.org/10.1561/0800000009 +[3] Racine, J., Li, Q. "Nonparametric Estimation of Distributions + with Categorical and Continuous Data." Working Paper. (2000) +[4] Racine, J. Li, Q. "Kernel Estimation of Multivariate Conditional + Distributions Annals of Economics and Finance 5, 211-235 (2004) +[5] Liu, R., Yang, L. "Kernel estimation of multivariate + cumulative distribution function." + Journal of Nonparametric Statistics (2008) +[6] Li, R., Ju, G. "Nonparametric Estimation of Multivariate CDF + with Categorical and Continuous Data." Working Paper +[7] Li, Q., Racine, J. "Cross-validated local linear nonparametric + regression" Statistica Sinica 14(2004), pp. 485-512 +[8] Racine, J.: "Consistent Significance Testing for Nonparametric + Regression" Journal of Business & Economics Statistics +[9] Racine, J., Hart, J., Li, Q., "Testing the Significance of + Categorical Predictor Variables in Nonparametric Regression + Models", 2006, Econometric Reviews 25, 523-544 + +""" +from __future__ import division +# TODO: make default behavior efficient=True above a certain n_obs + +from statsmodels.compat.python import range, next +import numpy as np + +from . import kernels +from ._kernel_base import GenericKDE, EstimatorSettings, gpke, \ + LeaveOneOut, _adjust_shape + + +__all__ = ['KDEMultivariate', 'KDEMultivariateConditional', 'EstimatorSettings'] + + +class KDEMultivariate(GenericKDE): + """ + Multivariate kernel density estimator. + + This density estimator can handle univariate as well as multivariate data, + including mixed continuous / ordered discrete / unordered discrete data. + It also provides cross-validated bandwidth selection methods (least + squares, maximum likelihood). + + Parameters + ---------- + data: list of ndarrays or 2-D ndarray + The training data for the Kernel Density Estimation, used to determine + the bandwidth(s). If a 2-D array, should be of shape + (num_observations, num_variables). If a list, each list element is a + separate observation. + var_type: str + The type of the variables: + + - c : continuous + - u : unordered (discrete) + - o : ordered (discrete) + + The string should contain a type specifier for each variable, so for + example ``var_type='ccuo'``. + bw: array_like or str, optional + If an array, it is a fixed user-specified bandwidth. If a string, + should be one of: + + - normal_reference: normal reference rule of thumb (default) + - cv_ml: cross validation maximum likelihood + - cv_ls: cross validation least squares + + defaults: EstimatorSettings instance, optional + The default values for (efficient) bandwidth estimation. + + Attributes + ---------- + bw: array_like + The bandwidth parameters. + + See Also + -------- + KDEMultivariateConditional + + Examples + -------- + >>> import statsmodels.api as sm + >>> nobs = 300 + >>> np.random.seed(1234) # Seed random generator + >>> c1 = np.random.normal(size=(nobs,1)) + >>> c2 = np.random.normal(2, 1, size=(nobs,1)) + + Estimate a bivariate distribution and display the bandwidth found: + + >>> dens_u = sm.nonparametric.KDEMultivariate(data=[c1,c2], + ... var_type='cc', bw='normal_reference') + >>> dens_u.bw + array([ 0.39967419, 0.38423292]) + """ + def __init__(self, data, var_type, bw=None, defaults=None): + self.var_type = var_type + self.k_vars = len(self.var_type) + self.data = _adjust_shape(data, self.k_vars) + self.data_type = var_type + self.nobs, self.k_vars = np.shape(self.data) + if self.nobs <= self.k_vars: + raise ValueError("The number of observations must be larger " \ + "than the number of variables.") + defaults = EstimatorSettings() if defaults is None else defaults + self._set_defaults(defaults) + if not self.efficient: + self.bw = self._compute_bw(bw) + else: + self.bw = self._compute_efficient(bw) + + def __repr__(self): + """Provide something sane to print.""" + rpr = "KDE instance\n" + rpr += "Number of variables: k_vars = " + str(self.k_vars) + "\n" + rpr += "Number of samples: nobs = " + str(self.nobs) + "\n" + rpr += "Variable types: " + self.var_type + "\n" + rpr += "BW selection method: " + self._bw_method + "\n" + return rpr + + def loo_likelihood(self, bw, func=lambda x: x): + r""" + Returns the leave-one-out likelihood function. + + The leave-one-out likelihood function for the unconditional KDE. + + Parameters + ---------- + bw: array_like + The value for the bandwidth parameter(s). + func: callable, optional + Function to transform the likelihood values (before summing); for + the log likelihood, use ``func=np.log``. Default is ``f(x) = x``. + + Notes + ----- + The leave-one-out kernel estimator of :math:`f_{-i}` is: + + .. math:: f_{-i}(X_{i})=\frac{1}{(n-1)h} + \sum_{j=1,j\neq i}K_{h}(X_{i},X_{j}) + + where :math:`K_{h}` represents the generalized product kernel + estimator: + + .. math:: K_{h}(X_{i},X_{j}) = + \prod_{s=1}^{q}h_{s}^{-1}k\left(\frac{X_{is}-X_{js}}{h_{s}}\right) + """ + LOO = LeaveOneOut(self.data) + L = 0 + for i, X_not_i in enumerate(LOO): + f_i = gpke(bw, data=-X_not_i, data_predict=-self.data[i, :], + var_type=self.var_type) + L += func(f_i) + + return -L + + def pdf(self, data_predict=None): + r""" + Evaluate the probability density function. + + Parameters + ---------- + data_predict: array_like, optional + Points to evaluate at. If unspecified, the training data is used. + + Returns + ------- + pdf_est: array_like + Probability density function evaluated at `data_predict`. + + Notes + ----- + The probability density is given by the generalized product kernel + estimator: + + .. math:: K_{h}(X_{i},X_{j}) = + \prod_{s=1}^{q}h_{s}^{-1}k\left(\frac{X_{is}-X_{js}}{h_{s}}\right) + """ + if data_predict is None: + data_predict = self.data + else: + data_predict = _adjust_shape(data_predict, self.k_vars) + + pdf_est = [] + for i in range(np.shape(data_predict)[0]): + pdf_est.append(gpke(self.bw, data=self.data, + data_predict=data_predict[i, :], + var_type=self.var_type) / self.nobs) + + pdf_est = np.squeeze(pdf_est) + return pdf_est + + def cdf(self, data_predict=None): + r""" + Evaluate the cumulative distribution function. + + Parameters + ---------- + data_predict: array_like, optional + Points to evaluate at. If unspecified, the training data is used. + + Returns + ------- + cdf_est: array_like + The estimate of the cdf. + + Notes + ----- + See http://en.wikipedia.org/wiki/Cumulative_distribution_function + For more details on the estimation see Ref. [5] in module docstring. + + The multivariate CDF for mixed data (continuous and ordered/unordered + discrete) is estimated by: + + .. math:: + + F(x^{c},x^{d})=n^{-1}\sum_{i=1}^{n}\left[G(\frac{x^{c}-X_{i}}{h})\sum_{u\leq x^{d}}L(X_{i}^{d},x_{i}^{d}, \lambda)\right] + + where G() is the product kernel CDF estimator for the continuous + and L() for the discrete variables. + + Used bandwidth is ``self.bw``. + """ + if data_predict is None: + data_predict = self.data + else: + data_predict = _adjust_shape(data_predict, self.k_vars) + + cdf_est = [] + for i in range(np.shape(data_predict)[0]): + cdf_est.append(gpke(self.bw, data=self.data, + data_predict=data_predict[i, :], + var_type=self.var_type, + ckertype="gaussian_cdf", + ukertype="aitchisonaitken_cdf", + okertype='wangryzin_cdf') / self.nobs) + + cdf_est = np.squeeze(cdf_est) + return cdf_est + + def imse(self, bw): + r""" + Returns the Integrated Mean Square Error for the unconditional KDE. + + Parameters + ---------- + bw: array_like + The bandwidth parameter(s). + + Returns + ------- + CV: float + The cross-validation objective function. + + Notes + ----- + See p. 27 in [1]_ for details on how to handle the multivariate + estimation with mixed data types see p.6 in [2]_. + + The formula for the cross-validation objective function is: + + .. math:: CV=\frac{1}{n^{2}}\sum_{i=1}^{n}\sum_{j=1}^{N} + \bar{K}_{h}(X_{i},X_{j})-\frac{2}{n(n-1)}\sum_{i=1}^{n} + \sum_{j=1,j\neq i}^{N}K_{h}(X_{i},X_{j}) + + Where :math:`\bar{K}_{h}` is the multivariate product convolution + kernel (consult [2]_ for mixed data types). + + References + ---------- + .. [1] Racine, J., Li, Q. Nonparametric econometrics: theory and + practice. Princeton University Press. (2007) + .. [2] Racine, J., Li, Q. "Nonparametric Estimation of Distributions + with Categorical and Continuous Data." Working Paper. (2000) + """ + #F = 0 + #for i in range(self.nobs): + # k_bar_sum = gpke(bw, data=-self.data, + # data_predict=-self.data[i, :], + # var_type=self.var_type, + # ckertype='gauss_convolution', + # okertype='wangryzin_convolution', + # ukertype='aitchisonaitken_convolution') + # F += k_bar_sum + ## there is a + because loo_likelihood returns the negative + #return (F / self.nobs**2 + self.loo_likelihood(bw) * \ + # 2 / ((self.nobs) * (self.nobs - 1))) + + # The code below is equivalent to the commented-out code above. It's + # about 20% faster due to some code being moved outside the for-loops + # and shared by gpke() and loo_likelihood(). + F = 0 + kertypes = dict(c=kernels.gaussian_convolution, + o=kernels.wang_ryzin_convolution, + u=kernels.aitchison_aitken_convolution) + nobs = self.nobs + data = -self.data + var_type = self.var_type + ix_cont = np.array([c == 'c' for c in var_type]) + _bw_cont_product = bw[ix_cont].prod() + Kval = np.empty(data.shape) + for i in range(nobs): + for ii, vtype in enumerate(var_type): + Kval[:, ii] = kertypes[vtype](bw[ii], + data[:, ii], + data[i, ii]) + + dens = Kval.prod(axis=1) / _bw_cont_product + k_bar_sum = dens.sum(axis=0) + F += k_bar_sum # sum of prod kernel over nobs + + kertypes = dict(c=kernels.gaussian, + o=kernels.wang_ryzin, + u=kernels.aitchison_aitken) + LOO = LeaveOneOut(self.data) + L = 0 # leave-one-out likelihood + Kval = np.empty((data.shape[0]-1, data.shape[1])) + for i, X_not_i in enumerate(LOO): + for ii, vtype in enumerate(var_type): + Kval[:, ii] = kertypes[vtype](bw[ii], + -X_not_i[:, ii], + data[i, ii]) + dens = Kval.prod(axis=1) / _bw_cont_product + L += dens.sum(axis=0) + + # CV objective function, eq. (2.4) of Ref. [3] + return (F / nobs**2 - 2 * L / (nobs * (nobs - 1))) + + def _get_class_vars_type(self): + """Helper method to be able to pass needed vars to _compute_subset.""" + class_type = 'KDEMultivariate' + class_vars = (self.var_type, ) + return class_type, class_vars + + +class KDEMultivariateConditional(GenericKDE): + """ + Conditional multivariate kernel density estimator. + + Calculates ``P(Y_1,Y_2,...Y_n | X_1,X_2...X_m) = + P(X_1, X_2,...X_n, Y_1, Y_2,..., Y_m)/P(X_1, X_2,..., X_m)``. + The conditional density is by definition the ratio of the two densities, + see [1]_. + + Parameters + ---------- + endog: list of ndarrays or 2-D ndarray + The training data for the dependent variables, used to determine + the bandwidth(s). If a 2-D array, should be of shape + (num_observations, num_variables). If a list, each list element is a + separate observation. + exog: list of ndarrays or 2-D ndarray + The training data for the independent variable; same shape as `endog`. + dep_type: str + The type of the dependent variables: + + c : Continuous + u : Unordered (Discrete) + o : Ordered (Discrete) + + The string should contain a type specifier for each variable, so for + example ``dep_type='ccuo'``. + indep_type: str + The type of the independent variables; specifed like `dep_type`. + bw: array_like or str, optional + If an array, it is a fixed user-specified bandwidth. If a string, + should be one of: + + - normal_reference: normal reference rule of thumb (default) + - cv_ml: cross validation maximum likelihood + - cv_ls: cross validation least squares + + defaults: Instance of class EstimatorSettings + The default values for the efficient bandwidth estimation + + Attributes + ---------- + bw: array_like + The bandwidth parameters + + See Also + -------- + KDEMultivariate + + References + ---------- + .. [1] http://en.wikipedia.org/wiki/Conditional_probability_distribution + + Examples + -------- + >>> import statsmodels.api as sm + >>> nobs = 300 + >>> c1 = np.random.normal(size=(nobs,1)) + >>> c2 = np.random.normal(2,1,size=(nobs,1)) + + >>> dens_c = sm.nonparametric.KDEMultivariateConditional(endog=[c1], + ... exog=[c2], dep_type='c', indep_type='c', bw='normal_reference') + >>> dens_c.bw # show computed bandwidth + array([ 0.41223484, 0.40976931]) + """ + + def __init__(self, endog, exog, dep_type, indep_type, bw, + defaults=None): + self.dep_type = dep_type + self.indep_type = indep_type + self.data_type = dep_type + indep_type + self.k_dep = len(self.dep_type) + self.k_indep = len(self.indep_type) + self.endog = _adjust_shape(endog, self.k_dep) + self.exog = _adjust_shape(exog, self.k_indep) + self.nobs, self.k_dep = np.shape(self.endog) + self.data = np.column_stack((self.endog, self.exog)) + self.k_vars = np.shape(self.data)[1] + defaults = EstimatorSettings() if defaults is None else defaults + self._set_defaults(defaults) + if not self.efficient: + self.bw = self._compute_bw(bw) + else: + self.bw = self._compute_efficient(bw) + + def __repr__(self): + """Provide something sane to print.""" + rpr = "KDEMultivariateConditional instance\n" + rpr += "Number of independent variables: k_indep = " + \ + str(self.k_indep) + "\n" + rpr += "Number of dependent variables: k_dep = " + \ + str(self.k_dep) + "\n" + rpr += "Number of observations: nobs = " + str(self.nobs) + "\n" + rpr += "Independent variable types: " + self.indep_type + "\n" + rpr += "Dependent variable types: " + self.dep_type + "\n" + rpr += "BW selection method: " + self._bw_method + "\n" + return rpr + + def loo_likelihood(self, bw, func=lambda x: x): + """ + Returns the leave-one-out conditional likelihood of the data. + + If `func` is not equal to the default, what's calculated is a function + of the leave-one-out conditional likelihood. + + Parameters + ---------- + bw: array_like + The bandwidth parameter(s). + func: callable, optional + Function to transform the likelihood values (before summing); for + the log likelihood, use ``func=np.log``. Default is ``f(x) = x``. + + Returns + ------- + L: float + The value of the leave-one-out function for the data. + + Notes + ----- + Similar to ``KDE.loo_likelihood`, but substitute ``f(y|x)=f(x,y)/f(x)`` + for ``f(x)``. + """ + yLOO = LeaveOneOut(self.data) + xLOO = LeaveOneOut(self.exog).__iter__() + L = 0 + for i, Y_j in enumerate(yLOO): + X_not_i = next(xLOO) + f_yx = gpke(bw, data=-Y_j, data_predict=-self.data[i, :], + var_type=(self.dep_type + self.indep_type)) + f_x = gpke(bw[self.k_dep:], data=-X_not_i, + data_predict=-self.exog[i, :], + var_type=self.indep_type) + f_i = f_yx / f_x + L += func(f_i) + + return -L + + def pdf(self, endog_predict=None, exog_predict=None): + r""" + Evaluate the probability density function. + + Parameters + ---------- + endog_predict: array_like, optional + Evaluation data for the dependent variables. If unspecified, the + training data is used. + exog_predict: array_like, optional + Evaluation data for the independent variables. + + Returns + ------- + pdf: array_like + The value of the probability density at `endog_predict` and `exog_predict`. + + Notes + ----- + The formula for the conditional probability density is: + + .. math:: f(y|x)=\frac{f(x,y)}{f(x)} + + with + + .. math:: f(x)=\prod_{s=1}^{q}h_{s}^{-1}k + \left(\frac{x_{is}-x_{js}}{h_{s}}\right) + + where :math:`k` is the appropriate kernel for each variable. + """ + if endog_predict is None: + endog_predict = self.endog + else: + endog_predict = _adjust_shape(endog_predict, self.k_dep) + if exog_predict is None: + exog_predict = self.exog + else: + exog_predict = _adjust_shape(exog_predict, self.k_indep) + + pdf_est = [] + data_predict = np.column_stack((endog_predict, exog_predict)) + for i in range(np.shape(data_predict)[0]): + f_yx = gpke(self.bw, data=self.data, + data_predict=data_predict[i, :], + var_type=(self.dep_type + self.indep_type)) + f_x = gpke(self.bw[self.k_dep:], data=self.exog, + data_predict=exog_predict[i, :], + var_type=self.indep_type) + pdf_est.append(f_yx / f_x) + + return np.squeeze(pdf_est) + + def cdf(self, endog_predict=None, exog_predict=None): + r""" + Cumulative distribution function for the conditional density. + + Parameters + ---------- + endog_predict: array_like, optional + The evaluation dependent variables at which the cdf is estimated. + If not specified the training dependent variables are used. + exog_predict: array_like, optional + The evaluation independent variables at which the cdf is estimated. + If not specified the training independent variables are used. + + Returns + ------- + cdf_est: array_like + The estimate of the cdf. + + Notes + ----- + For more details on the estimation see [2]_, and p.181 in [1]_. + + The multivariate conditional CDF for mixed data (continuous and + ordered/unordered discrete) is estimated by: + + .. math:: + + F(y|x)=\frac{n^{-1}\sum_{i=1}^{n}G(\frac{y-Y_{i}}{h_{0}}) W_{h}(X_{i},x)}{\widehat{\mu}(x)} + + where G() is the product kernel CDF estimator for the dependent (y) + variable(s) and W() is the product kernel CDF estimator for the + independent variable(s). + + References + ---------- + .. [1] Racine, J., Li, Q. Nonparametric econometrics: theory and + practice. Princeton University Press. (2007) + .. [2] Liu, R., Yang, L. "Kernel estimation of multivariate cumulative + distribution function." Journal of Nonparametric + Statistics (2008) + """ + if endog_predict is None: + endog_predict = self.endog + else: + endog_predict = _adjust_shape(endog_predict, self.k_dep) + if exog_predict is None: + exog_predict = self.exog + else: + exog_predict = _adjust_shape(exog_predict, self.k_indep) + + N_data_predict = np.shape(exog_predict)[0] + cdf_est = np.empty(N_data_predict) + for i in range(N_data_predict): + mu_x = gpke(self.bw[self.k_dep:], data=self.exog, + data_predict=exog_predict[i, :], + var_type=self.indep_type) / self.nobs + mu_x = np.squeeze(mu_x) + cdf_endog = gpke(self.bw[0:self.k_dep], data=self.endog, + data_predict=endog_predict[i, :], + var_type=self.dep_type, + ckertype="gaussian_cdf", + ukertype="aitchisonaitken_cdf", + okertype='wangryzin_cdf', tosum=False) + + cdf_exog = gpke(self.bw[self.k_dep:], data=self.exog, + data_predict=exog_predict[i, :], + var_type=self.indep_type, tosum=False) + S = (cdf_endog * cdf_exog).sum(axis=0) + cdf_est[i] = S / (self.nobs * mu_x) + + return cdf_est + + def imse(self, bw): + r""" + The integrated mean square error for the conditional KDE. + + Parameters + ---------- + bw: array_like + The bandwidth parameter(s). + + Returns + ------- + CV: float + The cross-validation objective function. + + Notes + ----- + For more details see pp. 156-166 in [1]_. For details on how to + handle the mixed variable types see [2]_. + + The formula for the cross-validation objective function for mixed + variable types is: + + .. math:: CV(h,\lambda)=\frac{1}{n}\sum_{l=1}^{n} + \frac{G_{-l}(X_{l})}{\left[\mu_{-l}(X_{l})\right]^{2}}- + \frac{2}{n}\sum_{l=1}^{n}\frac{f_{-l}(X_{l},Y_{l})}{\mu_{-l}(X_{l})} + + where + + .. math:: G_{-l}(X_{l}) = n^{-2}\sum_{i\neq l}\sum_{j\neq l} + K_{X_{i},X_{l}} K_{X_{j},X_{l}}K_{Y_{i},Y_{j}}^{(2)} + + where :math:`K_{X_{i},X_{l}}` is the multivariate product kernel and + :math:`\mu_{-l}(X_{l})` is the leave-one-out estimator of the pdf. + + :math:`K_{Y_{i},Y_{j}}^{(2)}` is the convolution kernel. + + The value of the function is minimized by the ``_cv_ls`` method of the + `GenericKDE` class to return the bw estimates that minimize the + distance between the estimated and "true" probability density. + + References + ---------- + .. [1] Racine, J., Li, Q. Nonparametric econometrics: theory and + practice. Princeton University Press. (2007) + .. [2] Racine, J., Li, Q. "Nonparametric Estimation of Distributions + with Categorical and Continuous Data." Working Paper. (2000) + """ + zLOO = LeaveOneOut(self.data) + CV = 0 + nobs = float(self.nobs) + expander = np.ones((self.nobs - 1, 1)) + for ii, Z in enumerate(zLOO): + X = Z[:, self.k_dep:] + Y = Z[:, :self.k_dep] + Ye_L = np.kron(Y, expander) + Ye_R = np.kron(expander, Y) + Xe_L = np.kron(X, expander) + Xe_R = np.kron(expander, X) + K_Xi_Xl = gpke(bw[self.k_dep:], data=Xe_L, + data_predict=self.exog[ii, :], + var_type=self.indep_type, tosum=False) + K_Xj_Xl = gpke(bw[self.k_dep:], data=Xe_R, + data_predict=self.exog[ii, :], + var_type=self.indep_type, tosum=False) + K2_Yi_Yj = gpke(bw[0:self.k_dep], data=Ye_L, + data_predict=Ye_R, var_type=self.dep_type, + ckertype='gauss_convolution', + okertype='wangryzin_convolution', + ukertype='aitchisonaitken_convolution', + tosum=False) + G = (K_Xi_Xl * K_Xj_Xl * K2_Yi_Yj).sum() / nobs**2 + f_X_Y = gpke(bw, data=-Z, data_predict=-self.data[ii, :], + var_type=(self.dep_type + self.indep_type)) / nobs + m_x = gpke(bw[self.k_dep:], data=-X, + data_predict=-self.exog[ii, :], + var_type=self.indep_type) / nobs + CV += (G / m_x ** 2) - 2 * (f_X_Y / m_x) + + return CV / nobs + + def _get_class_vars_type(self): + """Helper method to be able to pass needed vars to _compute_subset.""" + class_type = 'KDEMultivariateConditional' + class_vars = (self.k_dep, self.dep_type, self.indep_type) + return class_type, class_vars diff --git a/statsmodels/nonparametric/kernel_regression.py b/statsmodels/nonparametric/kernel_regression.py new file mode 100644 index 0000000..0423c3d --- /dev/null +++ b/statsmodels/nonparametric/kernel_regression.py @@ -0,0 +1,936 @@ +""" +Multivariate Conditional and Unconditional Kernel Density Estimation +with Mixed Data Types + +References +---------- +[1] Racine, J., Li, Q. Nonparametric econometrics: theory and practice. + Princeton University Press. (2007) +[2] Racine, Jeff. "Nonparametric Econometrics: A Primer," Foundation + and Trends in Econometrics: Vol 3: No 1, pp1-88. (2008) + http://dx.doi.org/10.1561/0800000009 +[3] Racine, J., Li, Q. "Nonparametric Estimation of Distributions + with Categorical and Continuous Data." Working Paper. (2000) +[4] Racine, J. Li, Q. "Kernel Estimation of Multivariate Conditional + Distributions Annals of Economics and Finance 5, 211-235 (2004) +[5] Liu, R., Yang, L. "Kernel estimation of multivariate + cumulative distribution function." + Journal of Nonparametric Statistics (2008) +[6] Li, R., Ju, G. "Nonparametric Estimation of Multivariate CDF + with Categorical and Continuous Data." Working Paper +[7] Li, Q., Racine, J. "Cross-validated local linear nonparametric + regression" Statistica Sinica 14(2004), pp. 485-512 +[8] Racine, J.: "Consistent Significance Testing for Nonparametric + Regression" Journal of Business & Economics Statistics +[9] Racine, J., Hart, J., Li, Q., "Testing the Significance of + Categorical Predictor Variables in Nonparametric Regression + Models", 2006, Econometric Reviews 25, 523-544 + +""" + +from __future__ import division +# TODO: make default behavior efficient=True above a certain n_obs + +from statsmodels.compat.python import range, string_types, next +import copy + +import numpy as np +from scipy import optimize +from scipy.stats.mstats import mquantiles + +from ._kernel_base import GenericKDE, EstimatorSettings, gpke, \ + LeaveOneOut, _get_type_pos, _adjust_shape, _compute_min_std_IQR + + +__all__ = ['KernelReg', 'KernelCensoredReg'] + + +class KernelReg(GenericKDE): + """ + Nonparametric kernel regression class. + + Calculates the conditional mean ``E[y|X]`` where ``y = g(X) + e``. + Note that the "local constant" type of regression provided here is also + known as Nadaraya-Watson kernel regression; "local linear" is an extension + of that which suffers less from bias issues at the edge of the support. + + Parameters + ---------- + endog: array-like + This is the dependent variable. + exog: array-like + The training data for the independent variable(s) + Each element in the list is a separate variable + var_type: str + The type of the variables, one character per variable: + + - c: continuous + - u: unordered (discrete) + - o: ordered (discrete) + + reg_type: {'lc', 'll'}, optional + Type of regression estimator. 'lc' means local constant and + 'll' local Linear estimator. Default is 'll' + bw: str or array_like, optional + Either a user-specified bandwidth or the method for bandwidth + selection. If a string, valid values are 'cv_ls' (least-squares + cross-validation) and 'aic' (AIC Hurvich bandwidth estimation). + Default is 'cv_ls'. User specified bandwidth must have as many + entries as the number of variables. + defaults: EstimatorSettings instance, optional + The default values for the efficient bandwidth estimation. + + Attributes + ---------- + bw: array_like + The bandwidth parameters. + """ + def __init__(self, endog, exog, var_type, reg_type='ll', bw='cv_ls', + defaults=None): + self.var_type = var_type + self.data_type = var_type + self.reg_type = reg_type + self.k_vars = len(self.var_type) + self.endog = _adjust_shape(endog, 1) + self.exog = _adjust_shape(exog, self.k_vars) + self.data = np.column_stack((self.endog, self.exog)) + self.nobs = np.shape(self.exog)[0] + self.est = dict(lc=self._est_loc_constant, ll=self._est_loc_linear) + defaults = EstimatorSettings() if defaults is None else defaults + self._set_defaults(defaults) + if not isinstance(bw, string_types): + bw = np.asarray(bw) + if len(bw) != self.k_vars: + raise ValueError('bw must have the same dimension as the ' + 'number of variables.') + if not self.efficient: + self.bw = self._compute_reg_bw(bw) + else: + self.bw = self._compute_efficient(bw) + + def _compute_reg_bw(self, bw): + if not isinstance(bw, string_types): + self._bw_method = "user-specified" + return np.asarray(bw) + else: + # The user specified a bandwidth selection method e.g. 'cv_ls' + self._bw_method = bw + # Workaround to avoid instance methods in __dict__ + if bw == 'cv_ls': + res = self.cv_loo + else: # bw == 'aic' + res = self.aic_hurvich + X = np.std(self.exog, axis=0) + h0 = 1.06 * X * \ + self.nobs ** (- 1. / (4 + np.size(self.exog, axis=1))) + + func = self.est[self.reg_type] + bw_estimated = optimize.fmin(res, x0=h0, args=(func, ), + maxiter=1e3, maxfun=1e3, disp=0) + return bw_estimated + + def _est_loc_linear(self, bw, endog, exog, data_predict): + """ + Local linear estimator of g(x) in the regression ``y = g(x) + e``. + + Parameters + ---------- + bw: array_like + Vector of bandwidth value(s). + endog: 1D array_like + The dependent variable. + exog: 1D or 2D array_like + The independent variable(s). + data_predict: 1D array_like of length K, where K is the number of variables. + The point at which the density is estimated. + + Returns + ------- + D_x: array_like + The value of the conditional mean at `data_predict`. + + Notes + ----- + See p. 81 in [1] and p.38 in [2] for the formulas. + Unlike other methods, this one requires that `data_predict` be 1D. + + """ + nobs, k_vars = exog.shape + ker = gpke(bw, data=exog, data_predict=data_predict, + var_type=self.var_type, + #ukertype='aitchison_aitken_reg', + #okertype='wangryzin_reg', + tosum=False) / float(nobs) + # Create the matrix on p.492 in [7], after the multiplication w/ K_h,ij + # See also p. 38 in [2] + #ix_cont = np.arange(self.k_vars) # Use all vars instead of continuous only + # Note: because ix_cont was defined here such that it selected all + # columns, I removed the indexing with it from exog/data_predict. + + # Convert ker to a 2-D array to make matrix operations below work + ker = ker[:, np.newaxis] + + M12 = exog - data_predict + M22 = np.dot(M12.T, M12 * ker) + M12 = (M12 * ker).sum(axis=0) + M = np.empty((k_vars + 1, k_vars + 1)) + M[0, 0] = ker.sum() + M[0, 1:] = M12 + M[1:, 0] = M12 + M[1:, 1:] = M22 + + ker_endog = ker * endog + V = np.empty((k_vars + 1, 1)) + V[0, 0] = ker_endog.sum() + V[1:, 0] = ((exog - data_predict) * ker_endog).sum(axis=0) + + mean_mfx = np.dot(np.linalg.pinv(M), V) + mean = mean_mfx[0] + mfx = mean_mfx[1:, :] + return mean, mfx + + def _est_loc_constant(self, bw, endog, exog, data_predict): + """ + Local constant estimator of g(x) in the regression + y = g(x) + e + + Parameters + ---------- + bw : array_like + Array of bandwidth value(s). + endog : 1D array_like + The dependent variable. + exog : 1D or 2D array_like + The independent variable(s). + data_predict : 1D or 2D array_like + The point(s) at which the density is estimated. + + Returns + ------- + G : ndarray + The value of the conditional mean at `data_predict`. + B_x : ndarray + The marginal effects. + + """ + ker_x = gpke(bw, data=exog, data_predict=data_predict, + var_type=self.var_type, + #ukertype='aitchison_aitken_reg', + #okertype='wangryzin_reg', + tosum=False) + ker_x = np.reshape(ker_x, np.shape(endog)) + G_numer = (ker_x * endog).sum(axis=0) + G_denom = ker_x.sum(axis=0) + G = G_numer / G_denom + nobs = exog.shape[0] + f_x = G_denom / float(nobs) + ker_xc = gpke(bw, data=exog, data_predict=data_predict, + var_type=self.var_type, + ckertype='d_gaussian', + #okertype='wangryzin_reg', + tosum=False) + + ker_xc = ker_xc[:, np.newaxis] + d_mx = -(endog * ker_xc).sum(axis=0) / float(nobs) #* np.prod(bw[:, ix_cont])) + d_fx = -ker_xc.sum(axis=0) / float(nobs) #* np.prod(bw[:, ix_cont])) + B_x = d_mx / f_x - G * d_fx / f_x + B_x = (G_numer * d_fx - G_denom * d_mx) / (G_denom**2) + #B_x = (f_x * d_mx - m_x * d_fx) / (f_x ** 2) + return G, B_x + + def aic_hurvich(self, bw, func=None): + """ + Computes the AIC Hurvich criteria for the estimation of the bandwidth. + + Parameters + ---------- + bw : str or array_like + See the ``bw`` parameter of `KernelReg` for details. + + Returns + ------- + aic : ndarray + The AIC Hurvich criteria, one element for each variable. + func : None + Unused here, needed in signature because it's used in `cv_loo`. + + References + ---------- + See ch.2 in [1] and p.35 in [2]. + + """ + H = np.empty((self.nobs, self.nobs)) + for j in range(self.nobs): + H[:, j] = gpke(bw, data=self.exog, data_predict=self.exog[j,:], + var_type=self.var_type, tosum=False) + + denom = H.sum(axis=1) + H = H / denom + gx = KernelReg(endog=self.endog, exog=self.exog, var_type=self.var_type, + reg_type=self.reg_type, bw=bw, + defaults=EstimatorSettings(efficient=False)).fit()[0] + gx = np.reshape(gx, (self.nobs, 1)) + sigma = ((self.endog - gx)**2).sum(axis=0) / float(self.nobs) + + frac = (1 + np.trace(H) / float(self.nobs)) / \ + (1 - (np.trace(H) + 2) / float(self.nobs)) + #siga = np.dot(self.endog.T, (I - H).T) + #sigb = np.dot((I - H), self.endog) + #sigma = np.dot(siga, sigb) / float(self.nobs) + aic = np.log(sigma) + frac + return aic + + def cv_loo(self, bw, func): + r""" + The cross-validation function with leave-one-out estimator. + + Parameters + ---------- + bw: array_like + Vector of bandwidth values. + func: callable function + Returns the estimator of g(x). Can be either ``_est_loc_constant`` + (local constant) or ``_est_loc_linear`` (local_linear). + + Returns + ------- + L: float + The value of the CV function. + + Notes + ----- + Calculates the cross-validation least-squares function. This function + is minimized by compute_bw to calculate the optimal value of `bw`. + + For details see p.35 in [2] + + .. math:: CV(h)=n^{-1}\sum_{i=1}^{n}(Y_{i}-g_{-i}(X_{i}))^{2} + + where :math:`g_{-i}(X_{i})` is the leave-one-out estimator of g(X) + and :math:`h` is the vector of bandwidths + + """ + LOO_X = LeaveOneOut(self.exog) + LOO_Y = LeaveOneOut(self.endog).__iter__() + L = 0 + for ii, X_not_i in enumerate(LOO_X): + Y = next(LOO_Y) + G = func(bw, endog=Y, exog=-X_not_i, + data_predict=-self.exog[ii, :])[0] + L += (self.endog[ii] - G) ** 2 + + # Note: There might be a way to vectorize this. See p.72 in [1] + return L / self.nobs + + def r_squared(self): + r""" + Returns the R-Squared for the nonparametric regression. + + Notes + ----- + For more details see p.45 in [2] + The R-Squared is calculated by: + + .. math:: R^{2}=\frac{\left[\sum_{i=1}^{n} + (Y_{i}-\bar{y})(\hat{Y_{i}}-\bar{y}\right]^{2}}{\sum_{i=1}^{n} + (Y_{i}-\bar{y})^{2}\sum_{i=1}^{n}(\hat{Y_{i}}-\bar{y})^{2}}, + + where :math:`\hat{Y_{i}}` is the mean calculated in `fit` at the exog + points. + + """ + Y = np.squeeze(self.endog) + Yhat = self.fit()[0] + Y_bar = np.mean(Yhat) + R2_numer = (((Y - Y_bar) * (Yhat - Y_bar)).sum())**2 + R2_denom = ((Y - Y_bar)**2).sum(axis=0) * \ + ((Yhat - Y_bar)**2).sum(axis=0) + return R2_numer / R2_denom + + def fit(self, data_predict=None): + """ + Returns the mean and marginal effects at the `data_predict` points. + + Parameters + ---------- + data_predict : array_like, optional + Points at which to return the mean and marginal effects. If not + given, ``data_predict == exog``. + + Returns + ------- + mean : ndarray + The regression result for the mean (i.e. the actual curve). + mfx : ndarray + The marginal effects, i.e. the partial derivatives of the mean. + + """ + func = self.est[self.reg_type] + if data_predict is None: + data_predict = self.exog + else: + data_predict = _adjust_shape(data_predict, self.k_vars) + + N_data_predict = np.shape(data_predict)[0] + mean = np.empty((N_data_predict,)) + mfx = np.empty((N_data_predict, self.k_vars)) + for i in range(N_data_predict): + mean_mfx = func(self.bw, self.endog, self.exog, + data_predict=data_predict[i, :]) + mean[i] = mean_mfx[0] + mfx_c = np.squeeze(mean_mfx[1]) + mfx[i, :] = mfx_c + + return mean, mfx + + def sig_test(self, var_pos, nboot=50, nested_res=25, pivot=False): + """ + Significance test for the variables in the regression. + + Parameters + ---------- + var_pos: sequence + The position of the variable in exog to be tested. + + Returns + ------- + sig: str + The level of significance: + + - `*` : at 90% confidence level + - `**` : at 95% confidence level + - `***` : at 99* confidence level + - "Not Significant" : if not significant + + """ + var_pos = np.asarray(var_pos) + ix_cont, ix_ord, ix_unord = _get_type_pos(self.var_type) + if np.any(ix_cont[var_pos]): + if np.any(ix_ord[var_pos]) or np.any(ix_unord[var_pos]): + raise ValueError("Discrete variable in hypothesis. Must be continuous") + + Sig = TestRegCoefC(self, var_pos, nboot, nested_res, pivot) + else: + Sig = TestRegCoefD(self, var_pos, nboot) + + return Sig.sig + + def __repr__(self): + """Provide something sane to print.""" + rpr = "KernelReg instance\n" + rpr += "Number of variables: k_vars = " + str(self.k_vars) + "\n" + rpr += "Number of samples: N = " + str(self.nobs) + "\n" + rpr += "Variable types: " + self.var_type + "\n" + rpr += "BW selection method: " + self._bw_method + "\n" + rpr += "Estimator type: " + self.reg_type + "\n" + return rpr + + def _get_class_vars_type(self): + """Helper method to be able to pass needed vars to _compute_subset.""" + class_type = 'KernelReg' + class_vars = (self.var_type, self.k_vars, self.reg_type) + return class_type, class_vars + + def _compute_dispersion(self, data): + """ + Computes the measure of dispersion. + + The minimum of the standard deviation and interquartile range / 1.349 + + References + ---------- + See the user guide for the np package in R. + In the notes on bwscaling option in npreg, npudens, npcdens there is + a discussion on the measure of dispersion + """ + data = data[:, 1:] + return _compute_min_std_IQR(data) + + +class KernelCensoredReg(KernelReg): + """ + Nonparametric censored regression. + + Calculates the condtional mean ``E[y|X]`` where ``y = g(X) + e``, + where y is left-censored. Left censored variable Y is defined as + ``Y = min {Y', L}`` where ``L`` is the value at which ``Y`` is censored + and ``Y'`` is the true value of the variable. + + Parameters + ---------- + endog: list with one element which is array_like + This is the dependent variable. + exog: list + The training data for the independent variable(s) + Each element in the list is a separate variable + dep_type: str + The type of the dependent variable(s) + c: Continuous + u: Unordered (Discrete) + o: Ordered (Discrete) + reg_type: str + Type of regression estimator + lc: Local Constant Estimator + ll: Local Linear Estimator + bw: array_like + Either a user-specified bandwidth or + the method for bandwidth selection. + cv_ls: cross-validaton least squares + aic: AIC Hurvich Estimator + censor_val: float + Value at which the dependent variable is censored + defaults: EstimatorSettings instance, optional + The default values for the efficient bandwidth estimation + + Attributes + ---------- + bw: array_like + The bandwidth parameters + """ + def __init__(self, endog, exog, var_type, reg_type, bw='cv_ls', + censor_val=0, defaults=None): + self.var_type = var_type + self.data_type = var_type + self.reg_type = reg_type + self.k_vars = len(self.var_type) + self.endog = _adjust_shape(endog, 1) + self.exog = _adjust_shape(exog, self.k_vars) + self.data = np.column_stack((self.endog, self.exog)) + self.nobs = np.shape(self.exog)[0] + self.est = dict(lc=self._est_loc_constant, ll=self._est_loc_linear) + defaults = EstimatorSettings() if defaults is None else defaults + self._set_defaults(defaults) + self.censor_val = censor_val + if self.censor_val is not None: + self.censored(censor_val) + else: + self.W_in = np.ones((self.nobs, 1)) + + if not self.efficient: + self.bw = self._compute_reg_bw(bw) + else: + self.bw = self._compute_efficient(bw) + + def censored(self, censor_val): + # see pp. 341-344 in [1] + self.d = (self.endog != censor_val) * 1. + ix = np.argsort(np.squeeze(self.endog)) + self.sortix = ix + self.sortix_rev = np.zeros(ix.shape, int) + self.sortix_rev[ix] = np.arange(len(ix)) + self.endog = np.squeeze(self.endog[ix]) + self.endog = _adjust_shape(self.endog, 1) + self.exog = np.squeeze(self.exog[ix]) + self.d = np.squeeze(self.d[ix]) + self.W_in = np.empty((self.nobs, 1)) + for i in range(1, self.nobs + 1): + P=1 + for j in range(1, i): + P *= ((self.nobs - j)/(float(self.nobs)-j+1))**self.d[j-1] + self.W_in[i-1,0] = P * self.d[i-1] / (float(self.nobs) - i + 1 ) + + def __repr__(self): + """Provide something sane to print.""" + rpr = "KernelCensoredReg instance\n" + rpr += "Number of variables: k_vars = " + str(self.k_vars) + "\n" + rpr += "Number of samples: nobs = " + str(self.nobs) + "\n" + rpr += "Variable types: " + self.var_type + "\n" + rpr += "BW selection method: " + self._bw_method + "\n" + rpr += "Estimator type: " + self.reg_type + "\n" + return rpr + + def _est_loc_linear(self, bw, endog, exog, data_predict, W): + """ + Local linear estimator of g(x) in the regression ``y = g(x) + e``. + + Parameters + ---------- + bw: array_like + Vector of bandwidth value(s) + endog: 1D array_like + The dependent variable + exog: 1D or 2D array_like + The independent variable(s) + data_predict: 1D array_like of length K, where K is + the number of variables. The point at which + the density is estimated + + Returns + ------- + D_x: array_like + The value of the conditional mean at data_predict + + Notes + ----- + See p. 81 in [1] and p.38 in [2] for the formulas + Unlike other methods, this one requires that data_predict be 1D + + """ + nobs, k_vars = exog.shape + ker = gpke(bw, data=exog, data_predict=data_predict, + var_type=self.var_type, + ukertype='aitchison_aitken_reg', + okertype='wangryzin_reg', tosum=False) + # Create the matrix on p.492 in [7], after the multiplication w/ K_h,ij + # See also p. 38 in [2] + + # Convert ker to a 2-D array to make matrix operations below work + ker = W * ker[:, np.newaxis] + + M12 = exog - data_predict + M22 = np.dot(M12.T, M12 * ker) + M12 = (M12 * ker).sum(axis=0) + M = np.empty((k_vars + 1, k_vars + 1)) + M[0, 0] = ker.sum() + M[0, 1:] = M12 + M[1:, 0] = M12 + M[1:, 1:] = M22 + + ker_endog = ker * endog + V = np.empty((k_vars + 1, 1)) + V[0, 0] = ker_endog.sum() + V[1:, 0] = ((exog - data_predict) * ker_endog).sum(axis=0) + + mean_mfx = np.dot(np.linalg.pinv(M), V) + mean = mean_mfx[0] + mfx = mean_mfx[1:, :] + return mean, mfx + + + def cv_loo(self, bw, func): + r""" + The cross-validation function with leave-one-out + estimator + + Parameters + ---------- + bw: array_like + Vector of bandwidth values + func: callable function + Returns the estimator of g(x). + Can be either ``_est_loc_constant`` (local constant) or + ``_est_loc_linear`` (local_linear). + + Returns + ------- + L: float + The value of the CV function + + Notes + ----- + Calculates the cross-validation least-squares + function. This function is minimized by compute_bw + to calculate the optimal value of bw + + For details see p.35 in [2] + + .. math:: CV(h)=n^{-1}\sum_{i=1}^{n}(Y_{i}-g_{-i}(X_{i}))^{2} + + where :math:`g_{-i}(X_{i})` is the leave-one-out estimator of g(X) + and :math:`h` is the vector of bandwidths + + """ + LOO_X = LeaveOneOut(self.exog) + LOO_Y = LeaveOneOut(self.endog).__iter__() + LOO_W = LeaveOneOut(self.W_in).__iter__() + L = 0 + for ii, X_not_i in enumerate(LOO_X): + Y = next(LOO_Y) + w = next(LOO_W) + G = func(bw, endog=Y, exog=-X_not_i, + data_predict=-self.exog[ii, :], W=w)[0] + L += (self.endog[ii] - G) ** 2 + + # Note: There might be a way to vectorize this. See p.72 in [1] + return L / self.nobs + + def fit(self, data_predict=None): + """ + Returns the marginal effects at the data_predict points. + """ + func = self.est[self.reg_type] + if data_predict is None: + data_predict = self.exog + else: + data_predict = _adjust_shape(data_predict, self.k_vars) + + N_data_predict = np.shape(data_predict)[0] + mean = np.empty((N_data_predict,)) + mfx = np.empty((N_data_predict, self.k_vars)) + for i in range(N_data_predict): + mean_mfx = func(self.bw, self.endog, self.exog, + data_predict=data_predict[i, :], + W=self.W_in) + mean[i] = mean_mfx[0] + mfx_c = np.squeeze(mean_mfx[1]) + mfx[i, :] = mfx_c + + return mean, mfx + + +class TestRegCoefC(object): + """ + Significance test for continuous variables in a nonparametric regression. + + The null hypothesis is ``dE(Y|X)/dX_not_i = 0``, the alternative hypothesis + is ``dE(Y|X)/dX_not_i != 0``. + + Parameters + ---------- + model: KernelReg instance + This is the nonparametric regression model whose elements + are tested for significance. + test_vars: tuple, list of integers, array_like + index of position of the continuous variables to be tested + for significance. E.g. (1,3,5) jointly tests variables at + position 1,3 and 5 for significance. + nboot: int + Number of bootstrap samples used to determine the distribution + of the test statistic in a finite sample. Default is 400 + nested_res: int + Number of nested resamples used to calculate lambda. + Must enable the pivot option + pivot: bool + Pivot the test statistic by dividing by its standard error + Significantly increases computational time. But pivot statistics + have more desirable properties + (See references) + + Attributes + ---------- + sig: str + The significance level of the variable(s) tested + "Not Significant": Not significant at the 90% confidence level + Fails to reject the null + "*": Significant at the 90% confidence level + "**": Significant at the 95% confidence level + "***": Significant at the 99% confidence level + + Notes + ----- + This class allows testing of joint hypothesis as long as all variables + are continuous. + + References + ---------- + Racine, J.: "Consistent Significance Testing for Nonparametric Regression" + Journal of Business & Economics Statistics. + + Chapter 12 in [1]. + """ + # Significance of continuous vars in nonparametric regression + # Racine: Consistent Significance Testing for Nonparametric Regression + # Journal of Business & Economics Statistics + def __init__(self, model, test_vars, nboot=400, nested_res=400, + pivot=False): + self.nboot = nboot + self.nres = nested_res + self.test_vars = test_vars + self.model = model + self.bw = model.bw + self.var_type = model.var_type + self.k_vars = len(self.var_type) + self.endog = model.endog + self.exog = model.exog + self.gx = model.est[model.reg_type] + self.test_vars = test_vars + self.pivot = pivot + self.run() + + def run(self): + self.test_stat = self._compute_test_stat(self.endog, self.exog) + self.sig = self._compute_sig() + + def _compute_test_stat(self, Y, X): + """ + Computes the test statistic. See p.371 in [8]. + """ + lam = self._compute_lambda(Y, X) + t = lam + if self.pivot: + se_lam = self._compute_se_lambda(Y, X) + t = lam / float(se_lam) + + return t + + def _compute_lambda(self, Y, X): + """Computes only lambda -- the main part of the test statistic""" + n = np.shape(X)[0] + Y = _adjust_shape(Y, 1) + X = _adjust_shape(X, self.k_vars) + b = KernelReg(Y, X, self.var_type, self.model.reg_type, self.bw, + defaults = EstimatorSettings(efficient=False)).fit()[1] + + b = b[:, self.test_vars] + b = np.reshape(b, (n, len(self.test_vars))) + #fct = np.std(b) # Pivot the statistic by dividing by SE + fct = 1. # Don't Pivot -- Bootstrapping works better if Pivot + lam = ((b / fct) ** 2).sum() / float(n) + return lam + + def _compute_se_lambda(self, Y, X): + """ + Calculates the SE of lambda by nested resampling + Used to pivot the statistic. + Bootstrapping works better with estimating pivotal statistics + but slows down computation significantly. + """ + n = np.shape(Y)[0] + lam = np.empty(shape=(self.nres,)) + for i in range(self.nres): + ind = np.random.randint(0, n, size=(n, 1)) + Y1 = Y[ind, 0] + X1 = X[ind, :] + lam[i] = self._compute_lambda(Y1, X1) + + se_lambda = np.std(lam) + return se_lambda + + def _compute_sig(self): + """ + Computes the significance value for the variable(s) tested. + + The empirical distribution of the test statistic is obtained through + bootstrapping the sample. The null hypothesis is rejected if the test + statistic is larger than the 90, 95, 99 percentiles. + """ + t_dist = np.empty(shape=(self.nboot, )) + Y = self.endog + X = copy.deepcopy(self.exog) + n = np.shape(Y)[0] + + X[:, self.test_vars] = np.mean(X[:, self.test_vars], axis=0) + # Calculate the restricted mean. See p. 372 in [8] + M = KernelReg(Y, X, self.var_type, self.model.reg_type, self.bw, + defaults=EstimatorSettings(efficient=False)).fit()[0] + M = np.reshape(M, (n, 1)) + e = Y - M + e = e - np.mean(e) # recenter residuals + for i in range(self.nboot): + ind = np.random.randint(0, n, size=(n, 1)) + e_boot = e[ind, 0] + Y_boot = M + e_boot + t_dist[i] = self._compute_test_stat(Y_boot, self.exog) + + self.t_dist = t_dist + sig = "Not Significant" + if self.test_stat > mquantiles(t_dist, 0.9): + sig = "*" + if self.test_stat > mquantiles(t_dist, 0.95): + sig = "**" + if self.test_stat > mquantiles(t_dist, 0.99): + sig = "***" + + return sig + + +class TestRegCoefD(TestRegCoefC): + """ + Significance test for the categorical variables in a nonparametric + regression. + + Parameters + ---------- + model: Instance of KernelReg class + This is the nonparametric regression model whose elements + are tested for significance. + test_vars: tuple, list of one element + index of position of the discrete variable to be tested + for significance. E.g. (3) tests variable at + position 3 for significance. + nboot: int + Number of bootstrap samples used to determine the distribution + of the test statistic in a finite sample. Default is 400 + + Attributes + ---------- + sig: str + The significance level of the variable(s) tested + "Not Significant": Not significant at the 90% confidence level + Fails to reject the null + "*": Significant at the 90% confidence level + "**": Significant at the 95% confidence level + "***": Significant at the 99% confidence level + + Notes + ----- + This class currently doesn't allow joint hypothesis. + Only one variable can be tested at a time + + References + ---------- + See [9] and chapter 12 in [1]. + """ + + def _compute_test_stat(self, Y, X): + """Computes the test statistic""" + + dom_x = np.sort(np.unique(self.exog[:, self.test_vars])) + + n = np.shape(X)[0] + model = KernelReg(Y, X, self.var_type, self.model.reg_type, self.bw, + defaults = EstimatorSettings(efficient=False)) + X1 = copy.deepcopy(X) + X1[:, self.test_vars] = 0 + + m0 = model.fit(data_predict=X1)[0] + m0 = np.reshape(m0, (n, 1)) + zvec = np.zeros((n, 1)) # noqa:E741 + for i in dom_x[1:] : + X1[:, self.test_vars] = i + m1 = model.fit(data_predict=X1)[0] + m1 = np.reshape(m1, (n, 1)) + zvec += (m1 - m0) ** 2 # noqa:E741 + + avg = zvec.sum(axis=0) / float(n) + return avg + + def _compute_sig(self): + """Calculates the significance level of the variable tested""" + + m = self._est_cond_mean() + Y = self.endog + X = self.exog + n = np.shape(X)[0] + u = Y - m + u = u - np.mean(u) # center + fct1 = (1 - 5**0.5) / 2. + fct2 = (1 + 5**0.5) / 2. + u1 = fct1 * u + u2 = fct2 * u + r = fct2 / (5 ** 0.5) + I_dist = np.empty((self.nboot,1)) + for j in range(self.nboot): + u_boot = copy.deepcopy(u2) + + prob = np.random.uniform(0,1, size = (n,1)) + ind = prob < r + u_boot[ind] = u1[ind] + Y_boot = m + u_boot + I_dist[j] = self._compute_test_stat(Y_boot, X) + + sig = "Not Significant" + if self.test_stat > mquantiles(I_dist, 0.9): + sig = "*" + if self.test_stat > mquantiles(I_dist, 0.95): + sig = "**" + if self.test_stat > mquantiles(I_dist, 0.99): + sig = "***" + + return sig + + def _est_cond_mean(self): + """ + Calculates the expected conditional mean + m(X, Z=l) for all possible l + """ + self.dom_x = np.sort(np.unique(self.exog[:, self.test_vars])) + X = copy.deepcopy(self.exog) + m=0 + for i in self.dom_x: + X[:, self.test_vars] = i + m += self.model.fit(data_predict = X)[0] + + m = m / float(len(self.dom_x)) + m = np.reshape(m, (np.shape(self.exog)[0], 1)) + return m diff --git a/statsmodels/nonparametric/kernels.py b/statsmodels/nonparametric/kernels.py new file mode 100644 index 0000000..44e4480 --- /dev/null +++ b/statsmodels/nonparametric/kernels.py @@ -0,0 +1,207 @@ +""" +Module of kernels that are able to handle continuous as well as categorical +variables (both ordered and unordered). + +This is a slight deviation from the current approach in +statsmodels.nonparametric.kernels where each kernel is a class object. + +Having kernel functions rather than classes makes extension to a multivariate +kernel density estimation much easier. + +NOTE: As it is, this module does not interact with the existing API +""" + +from __future__ import division + +import numpy as np +from scipy.special import erf + + +#TODO: +# - make sure we only receive int input for wang-ryzin and aitchison-aitken +# - Check for the scalar Xi case everywhere + + +def aitchison_aitken(h, Xi, x, num_levels=None): + r""" + The Aitchison-Aitken kernel, used for unordered discrete random variables. + + Parameters + ---------- + h : 1-D ndarray, shape (K,) + The bandwidths used to estimate the value of the kernel function. + Xi : 2-D ndarray of ints, shape (nobs, K) + The value of the training set. + x: 1-D ndarray, shape (K,) + The value at which the kernel density is being estimated. + num_levels: bool, optional + Gives the user the option to specify the number of levels for the + random variable. If False, the number of levels is calculated from + the data. + + Returns + ------- + kernel_value : ndarray, shape (nobs, K) + The value of the kernel function at each training point for each var. + + Notes + ----- + See p.18 of [2]_ for details. The value of the kernel L if :math:`X_{i}=x` + is :math:`1-\lambda`, otherwise it is :math:`\frac{\lambda}{c-1}`. + Here :math:`c` is the number of levels plus one of the RV. + + References + ---------- + .. [*] J. Aitchison and C.G.G. Aitken, "Multivariate binary discrimination + by the kernel method", Biometrika, vol. 63, pp. 413-420, 1976. + .. [*] Racine, Jeff. "Nonparametric Econometrics: A Primer," Foundation + and Trends in Econometrics: Vol 3: No 1, pp1-88., 2008. + """ + Xi = Xi.reshape(Xi.size) # seems needed in case Xi is scalar + if num_levels is None: + num_levels = np.asarray(np.unique(Xi).size) + + kernel_value = np.ones(Xi.size) * h / (num_levels - 1) + idx = Xi == x + kernel_value[idx] = (idx * (1 - h))[idx] + return kernel_value + + +def wang_ryzin(h, Xi, x): + r""" + The Wang-Ryzin kernel, used for ordered discrete random variables. + + Parameters + ---------- + h : scalar or 1-D ndarray, shape (K,) + The bandwidths used to estimate the value of the kernel function. + Xi : ndarray of ints, shape (nobs, K) + The value of the training set. + x : scalar or 1-D ndarray of shape (K,) + The value at which the kernel density is being estimated. + + Returns + ------- + kernel_value : ndarray, shape (nobs, K) + The value of the kernel function at each training point for each var. + + Notes + ----- + See p. 19 in [1]_ for details. The value of the kernel L if + :math:`X_{i}=x` is :math:`1-\lambda`, otherwise it is + :math:`\frac{1-\lambda}{2}\lambda^{|X_{i}-x|}`, where :math:`\lambda` is + the bandwidth. + + References + ---------- + .. [*] Racine, Jeff. "Nonparametric Econometrics: A Primer," Foundation + and Trends in Econometrics: Vol 3: No 1, pp1-88., 2008. + http://dx.doi.org/10.1561/0800000009 + .. [*] M.-C. Wang and J. van Ryzin, "A class of smooth estimators for + discrete distributions", Biometrika, vol. 68, pp. 301-309, 1981. + """ + Xi = Xi.reshape(Xi.size) # seems needed in case Xi is scalar + kernel_value = 0.5 * (1 - h) * (h ** abs(Xi - x)) + idx = Xi == x + kernel_value[idx] = (idx * (1 - h))[idx] + return kernel_value + + +def gaussian(h, Xi, x): + """ + Gaussian Kernel for continuous variables + Parameters + ---------- + h : 1-D ndarray, shape (K,) + The bandwidths used to estimate the value of the kernel function. + Xi : 1-D ndarray, shape (K,) + The value of the training set. + x : 1-D ndarray, shape (K,) + The value at which the kernel density is being estimated. + + Returns + ------- + kernel_value : ndarray, shape (nobs, K) + The value of the kernel function at each training point for each var. + + """ + return (1. / np.sqrt(2 * np.pi)) * np.exp(-(Xi - x)**2 / (h**2 * 2.)) + + +def gaussian_convolution(h, Xi, x): + """ Calculates the Gaussian Convolution Kernel """ + return (1. / np.sqrt(4 * np.pi)) * np.exp(- (Xi - x)**2 / (h**2 * 4.)) + + +def wang_ryzin_convolution(h, Xi, Xj): + # This is the equivalent of the convolution case with the Gaussian Kernel + # However it is not exactly convolution. Think of a better name + # References + ordered = np.zeros(Xi.size) + for x in np.unique(Xi): + ordered += wang_ryzin(h, Xi, x) * wang_ryzin(h, Xj, x) + + return ordered + + +def aitchison_aitken_convolution(h, Xi, Xj): + Xi_vals = np.unique(Xi) + ordered = np.zeros(Xi.size) + num_levels = Xi_vals.size + for x in Xi_vals: + ordered += aitchison_aitken(h, Xi, x, num_levels=num_levels) * \ + aitchison_aitken(h, Xj, x, num_levels=num_levels) + + return ordered + + +def gaussian_cdf(h, Xi, x): + return 0.5 * h * (1 + erf((x - Xi) / (h * np.sqrt(2)))) + + +def aitchison_aitken_cdf(h, Xi, x_u): + x_u = int(x_u) + Xi_vals = np.unique(Xi) + ordered = np.zeros(Xi.size) + num_levels = Xi_vals.size + for x in Xi_vals: + if x <= x_u: #FIXME: why a comparison for unordered variables? + ordered += aitchison_aitken(h, Xi, x, num_levels=num_levels) + + return ordered + + +def wang_ryzin_cdf(h, Xi, x_u): + ordered = np.zeros(Xi.size) + for x in np.unique(Xi): + if x <= x_u: + ordered += wang_ryzin(h, Xi, x) + + return ordered + + +def d_gaussian(h, Xi, x): + # The derivative of the Gaussian Kernel + return 2 * (Xi - x) * gaussian(h, Xi, x) / h**2 + + +def aitchison_aitken_reg(h, Xi, x): + """ + A version for the Aitchison-Aitken kernel for nonparametric regression. + + Suggested by Li and Racine. + """ + kernel_value = np.ones(Xi.size) + ix = Xi != x + inDom = ix * h + kernel_value[ix] = inDom[ix] + return kernel_value + + +def wang_ryzin_reg(h, Xi, x): + """ + A version for the Wang-Ryzin kernel for nonparametric regression. + + Suggested by Li and Racine in [1] ch.4 + """ + return h ** abs(Xi - x) diff --git a/statsmodels/nonparametric/linbin.pyx b/statsmodels/nonparametric/linbin.pyx new file mode 100644 index 0000000..e81980e --- /dev/null +++ b/statsmodels/nonparametric/linbin.pyx @@ -0,0 +1,36 @@ +#!python +#cython: boundscheck=False, wraparound=False, cdivision=True +""" +cython -a fast_linbin.pyx +gcc -shared -pthread -fPIC -fwrapv -O2 -Wall -fno-strict-aliasing -I/usr/include/python2.7 -I/usr/local/lib/python2.7/dist-packages/numpy/core/include/ -o fast_linbin.so fast_linbin.c +""" + +cimport cython +cimport numpy as np +import numpy as np + +ctypedef np.float64_t DOUBLE +ctypedef np.int_t INT + +def fast_linbin(np.ndarray[DOUBLE] X, double a, double b, int M, int trunc=1): + """ + Linear Binning as described in Fan and Marron (1994) + """ + cdef: + Py_ssize_t i, li_i + int nobs = X.shape[0] + double delta = (b - a)/(M - 1) + np.ndarray[DOUBLE] gcnts = np.zeros(M, np.float) + np.ndarray[DOUBLE] lxi = (X - a)/delta + np.ndarray[INT] li = lxi.astype(int) + np.ndarray[DOUBLE] rem = lxi - li + + + for i in range(nobs): + li_i = li[i] + if li_i > 1 and li_i < M: + gcnts[li_i] = gcnts[li_i] + 1 - rem[i] + gcnts[li_i+1] = gcnts[li_i+1] + rem[i] + if li_i > M and trunc == 0: + gcnts[M] = gcnts[M] + 1 + return gcnts diff --git a/statsmodels/nonparametric/smoothers_lowess.py b/statsmodels/nonparametric/smoothers_lowess.py new file mode 100644 index 0000000..106a9ad --- /dev/null +++ b/statsmodels/nonparametric/smoothers_lowess.py @@ -0,0 +1,188 @@ +# -*- coding: utf-8 -*- +"""Lowess - wrapper for cythonized extension + +Author : Chris Jordan-Squire +Author : Carl Vogel +Author : Josef Perktold + +""" + +import numpy as np +from ._smoothers_lowess import lowess as _lowess + +def lowess(endog, exog, frac=2.0/3.0, it=3, delta=0.0, is_sorted=False, + missing='drop', return_sorted=True): + '''LOWESS (Locally Weighted Scatterplot Smoothing) + + A lowess function that outs smoothed estimates of endog + at the given exog values from points (exog, endog) + + Parameters + ---------- + endog: 1-D numpy array + The y-values of the observed points + exog: 1-D numpy array + The x-values of the observed points + frac: float + Between 0 and 1. The fraction of the data used + when estimating each y-value. + it: int + The number of residual-based reweightings + to perform. + delta: float + Distance within which to use linear-interpolation + instead of weighted regression. + is_sorted : bool + If False (default), then the data will be sorted by exog before + calculating lowess. If True, then it is assumed that the data is + already sorted by exog. + missing : str + Available options are 'none', 'drop', and 'raise'. If 'none', no nan + checking is done. If 'drop', any observations with nans are dropped. + If 'raise', an error is raised. Default is 'drop'. + return_sorted : bool + If True (default), then the returned array is sorted by exog and has + missing (nan or infinite) observations removed. + If False, then the returned array is in the same length and the same + sequence of observations as the input array. + + Returns + ------- + out: ndarray, float + The returned array is two-dimensional if return_sorted is True, and + one dimensional if return_sorted is False. + If return_sorted is True, then a numpy array with two columns. The + first column contains the sorted x (exog) values and the second column + the associated estimated y (endog) values. + If return_sorted is False, then only the fitted values are returned, + and the observations will be in the same order as the input arrays. + + Notes + ----- + This lowess function implements the algorithm given in the + reference below using local linear estimates. + + Suppose the input data has N points. The algorithm works by + estimating the `smooth` y_i by taking the frac*N closest points + to (x_i,y_i) based on their x values and estimating y_i + using a weighted linear regression. The weight for (x_j,y_j) + is tricube function applied to abs(x_i-x_j). + + If it > 1, then further weighted local linear regressions + are performed, where the weights are the same as above + times the _lowess_bisquare function of the residuals. Each iteration + takes approximately the same amount of time as the original fit, + so these iterations are expensive. They are most useful when + the noise has extremely heavy tails, such as Cauchy noise. + Noise with less heavy-tails, such as t-distributions with df>2, + are less problematic. The weights downgrade the influence of + points with large residuals. In the extreme case, points whose + residuals are larger than 6 times the median absolute residual + are given weight 0. + + `delta` can be used to save computations. For each `x_i`, regressions + are skipped for points closer than `delta`. The next regression is + fit for the farthest point within delta of `x_i` and all points in + between are estimated by linearly interpolating between the two + regression fits. + + Judicious choice of delta can cut computation time considerably + for large data (N > 5000). A good choice is ``delta = 0.01 * range(exog)``. + + Some experimentation is likely required to find a good + choice of `frac` and `iter` for a particular dataset. + + References + ---------- + Cleveland, W.S. (1979) "Robust Locally Weighted Regression + and Smoothing Scatterplots". Journal of the American Statistical + Association 74 (368): 829-836. + + Examples + -------- + The below allows a comparison between how different the fits from + lowess for different values of frac can be. + + >>> import numpy as np + >>> import statsmodels.api as sm + >>> lowess = sm.nonparametric.lowess + >>> x = np.random.uniform(low = -2*np.pi, high = 2*np.pi, size=500) + >>> y = np.sin(x) + np.random.normal(size=len(x)) + >>> z = lowess(y, x) + >>> w = lowess(y, x, frac=1./3) + + This gives a similar comparison for when it is 0 vs not. + + >>> import numpy as np + >>> import scipy.stats as stats + >>> import statsmodels.api as sm + >>> lowess = sm.nonparametric.lowess + >>> x = np.random.uniform(low = -2*np.pi, high = 2*np.pi, size=500) + >>> y = np.sin(x) + stats.cauchy.rvs(size=len(x)) + >>> z = lowess(y, x, frac= 1./3, it=0) + >>> w = lowess(y, x, frac=1./3) + + ''' + + endog = np.asarray(endog, float) + exog = np.asarray(exog, float) + + # Inputs should be vectors (1-D arrays) of the + # same length. + if exog.ndim != 1: + raise ValueError('exog must be a vector') + if endog.ndim != 1: + raise ValueError('endog must be a vector') + if endog.shape[0] != exog.shape[0] : + raise ValueError('exog and endog must have same length') + + if missing in ['drop', 'raise']: + # Cut out missing values + mask_valid = (np.isfinite(exog) & np.isfinite(endog)) + all_valid = np.all(mask_valid) + if all_valid: + y = endog + x = exog + else: + if missing == 'drop': + x = exog[mask_valid] + y = endog[mask_valid] + else: + raise ValueError('nan or inf found in data') + elif missing == 'none': + y = endog + x = exog + all_valid = True # we assume it's true if missing='none' + else: + raise ValueError("missing can only be 'none', 'drop' or 'raise'") + + if not is_sorted: + # Sort both inputs according to the ascending order of x values + sort_index = np.argsort(x) + x = np.array(x[sort_index]) + y = np.array(y[sort_index]) + + res = _lowess(y, x, frac=frac, it=it, delta=delta) + _, yfitted = res.T + + if return_sorted: + return res + else: + # rebuild yfitted with original indices + # a bit messy: y might have been selected twice + if not is_sorted: + yfitted_ = np.empty_like(y) + yfitted_.fill(np.nan) + yfitted_[sort_index] = yfitted + yfitted = yfitted_ + else: + yfitted = yfitted + + if not all_valid: + yfitted_ = np.empty_like(endog) + yfitted_.fill(np.nan) + yfitted_[mask_valid] = yfitted + yfitted = yfitted_ + + # we don't need to return exog anymore + return yfitted diff --git a/statsmodels/nonparametric/smoothers_lowess_old.py b/statsmodels/nonparametric/smoothers_lowess_old.py new file mode 100644 index 0000000..5c57f8e --- /dev/null +++ b/statsmodels/nonparametric/smoothers_lowess_old.py @@ -0,0 +1,361 @@ +""" +Univariate lowess function, like in R. + +References +---------- +Hastie, Tibshirani, Friedman. (2009) The Elements of Statistical Learning: Data Mining, Inference, and Prediction, Second Edition: Chapter 6. + +Cleveland, W.S. (1979) "Robust Locally Weighted Regression and Smoothing Scatterplots". Journal of the American Statistical Association 74 (368): 829-836. +""" +from statsmodels.compat.python import range +import numpy as np +from scipy.linalg import lstsq + + +def lowess(endog, exog, frac=2./3, it=3): + """ + LOWESS (Locally Weighted Scatterplot Smoothing) + + A lowess function that outs smoothed estimates of endog + at the given exog values from points (exog, endog) + + Parameters + ---------- + endog: 1-D numpy array + The y-values of the observed points + exog: 1-D numpy array + The x-values of the observed points + frac: float + Between 0 and 1. The fraction of the data used + when estimating each y-value. + it: int + The number of residual-based reweightings + to perform. + + Returns + ------- + out: numpy array + A numpy array with two columns. The first column + is the sorted x values and the second column the + associated estimated y-values. + + Notes + ----- + This lowess function implements the algorithm given in the + reference below using local linear estimates. + + Suppose the input data has N points. The algorithm works by + estimating the true ``y_i`` by taking the frac*N closest points + to ``(x_i,y_i)`` based on their x values and estimating ``y_i`` + using a weighted linear regression. The weight for ``(x_j,y_j)`` + is `_lowess_tricube` function applied to ``|x_i-x_j|``. + + If ``iter > 0``, then further weighted local linear regressions + are performed, where the weights are the same as above + times the `_lowess_bisquare` function of the residuals. Each iteration + takes approximately the same amount of time as the original fit, + so these iterations are expensive. They are most useful when + the noise has extremely heavy tails, such as Cauchy noise. + Noise with less heavy-tails, such as t-distributions with ``df > 2``, + are less problematic. The weights downgrade the influence of + points with large residuals. In the extreme case, points whose + residuals are larger than 6 times the median absolute residual + are given weight 0. + + Some experimentation is likely required to find a good + choice of frac and iter for a particular dataset. + + References + ---------- + Cleveland, W.S. (1979) "Robust Locally Weighted Regression + and Smoothing Scatterplots". Journal of the American Statistical + Association 74 (368): 829-836. + + Examples + -------- + The below allows a comparison between how different the fits from + `lowess` for different values of frac can be. + + >>> import numpy as np + >>> import statsmodels.api as sm + >>> lowess = sm.nonparametric.lowess + >>> x = np.random.uniform(low=-2*np.pi, high=2*np.pi, size=500) + >>> y = np.sin(x) + np.random.normal(size=len(x)) + >>> z = lowess(y, x) + >>> w = lowess(y, x, frac=1./3) + + This gives a similar comparison for when it is 0 vs not. + + >>> import scipy.stats as stats + >>> x = np.random.uniform(low=-2*np.pi, high=2*np.pi, size=500) + >>> y = np.sin(x) + stats.cauchy.rvs(size=len(x)) + >>> z = lowess(y, x, frac= 1./3, it=0) + >>> w = lowess(y, x, frac=1./3) + + """ + x = exog + + if exog.ndim != 1: + raise ValueError('exog must be a vector') + if endog.ndim != 1: + raise ValueError('endog must be a vector') + if endog.shape[0] != x.shape[0] : + raise ValueError('exog and endog must have same length') + + n = exog.shape[0] + fitted = np.zeros(n) + + k = int(frac * n) + + index_array = np.argsort(exog) + x_copy = np.array(exog[index_array]) #, dtype ='float32') + y_copy = endog[index_array] + + fitted, weights = _lowess_initial_fit(x_copy, y_copy, k, n) + + for i in range(it): + _lowess_robustify_fit(x_copy, y_copy, fitted, + weights, k, n) + + out = np.array([x_copy, fitted]).T + out.shape = (n,2) + + return out + + +def _lowess_initial_fit(x_copy, y_copy, k, n): + """ + The initial weighted local linear regression for lowess. + + Parameters + ---------- + x_copy : 1-d ndarray + The x-values/exogenous part of the data being smoothed + y_copy : 1-d ndarray + The y-values/ endogenous part of the data being smoothed + k : int + The number of data points which affect the linear fit for + each estimated point + n : int + The total number of points + + Returns + ------- + fitted : 1-d ndarray + The fitted y-values + weights : 2-d ndarray + An n by k array. The contribution to the weights in the + local linear fit coming from the distances between the + x-values + + """ + weights = np.zeros((n,k), dtype = x_copy.dtype) + nn_indices = [0,k] + + X = np.ones((k,2)) + fitted = np.zeros(n) + + for i in range(n): + #note: all _lowess functions are inplace, no return + left_width = x_copy[i] - x_copy[nn_indices[0]] + right_width = x_copy[nn_indices[1]-1] - x_copy[i] + width = max(left_width, right_width) + _lowess_wt_standardize(weights[i,:], + x_copy[nn_indices[0]:nn_indices[1]], + x_copy[i], width) + _lowess_tricube(weights[i,:]) + weights[i,:] = np.sqrt(weights[i,:]) + + X[:,1] = x_copy[nn_indices[0]:nn_indices[1]] + y_i = weights[i,:] * y_copy[nn_indices[0]:nn_indices[1]] + + beta = lstsq(weights[i,:].reshape(k,1) * X, y_i, rcond=-1)[0] + fitted[i] = beta[0] + beta[1]*x_copy[i] + + _lowess_update_nn(x_copy, nn_indices, i+1) + + + return fitted, weights + + +def _lowess_wt_standardize(weights, new_entries, x_copy_i, width): + """ + The initial phase of creating the weights. + Subtract the current x_i and divide by the width. + + Parameters + ---------- + weights : ndarray + The memory where (new_entries - x_copy_i)/width will be placed + new_entries : ndarray + The x-values of the k closest points to x[i] + x_copy_i : float + x[i], the i'th point in the (sorted) x values + width : float + The maximum distance between x[i] and any point in new_entries + + Returns + ------- + Nothing. The modifications are made to weight in place. + + """ + weights[:] = new_entries + weights -= x_copy_i + weights /= width + + +def _lowess_robustify_fit(x_copy, y_copy, fitted, weights, k, n): + """ + Additional weighted local linear regressions, performed if + iter>0. They take into account the sizes of the residuals, + to eliminate the effect of extreme outliers. + + Parameters + ---------- + x_copy : 1-d ndarray + The x-values/exogenous part of the data being smoothed + y_copy : 1-d ndarray + The y-values/ endogenous part of the data being smoothed + fitted : 1-d ndarray + The fitted y-values from the previous iteration + weights : 2-d ndarray + An n by k array. The contribution to the weights in the + local linear fit coming from the distances between the + x-values + k : int + The number of data points which affect the linear fit for + each estimated point + n : int + The total number of points + + Returns + ------- + Nothing. The fitted values are modified in place. + + """ + nn_indices = [0,k] + X = np.ones((k,2)) + + residual_weights = np.copy(y_copy) + residual_weights.shape = (n,) + residual_weights -= fitted + residual_weights = np.absolute(residual_weights)#, out=residual_weights) + s = np.median(residual_weights) + residual_weights /= (6*s) + too_big = residual_weights>=1 + _lowess_bisquare(residual_weights) + residual_weights[too_big] = 0 + + + for i in range(n): + total_weights = weights[i,:] * np.sqrt(residual_weights[nn_indices[0]: + nn_indices[1]]) + + X[:,1] = x_copy[nn_indices[0]:nn_indices[1]] + y_i = total_weights * y_copy[nn_indices[0]:nn_indices[1]] + total_weights.shape = (k,1) + + beta = lstsq(total_weights * X, y_i, rcond=-1)[0] + + fitted[i] = beta[0] + beta[1] * x_copy[i] + + _lowess_update_nn(x_copy, nn_indices, i+1) + + +def _lowess_update_nn(x, cur_nn,i): + """ + Update the endpoints of the nearest neighbors to + the ith point. + + Parameters + ---------- + x : iterable + The sorted points of x-values + cur_nn : list of length 2 + The two current indices between which are the + k closest points to x[i]. (The actual value of + k is irrelevant for the algorithm. + i : int + The index of the current value in x for which + the k closest points are desired. + + Returns + ------- + Nothing. It modifies cur_nn in place. + + """ + while True: + if cur_nn[1]> data (Italy) + + self.Italy_gdp = \ + [8.556, 12.262, 9.587, 8.119, 5.537, 6.796, 8.638, + 6.483, 6.212, 5.111, 6.001, 7.027, 4.616, 3.922, + 4.688, 3.957, 3.159, 3.763, 3.829, 5.242, 6.275, + 8.518, 11.542, 9.348, 8.02, 5.527, 6.865, 8.666, + 6.672, 6.289, 5.286, 6.271, 7.94, 4.72, 4.357, + 4.672, 3.883, 3.065, 3.489, 3.635, 5.443, 6.302, + 9.054, 12.485, 9.896, 8.33, 6.161, 7.055, 8.717, + 6.95] + + self.Italy_year = \ + [1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, + 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1952, + 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, + 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1953, 1953, + 1953, 1953, 1953, 1953, 1953, 1953] + + # OECD panel data from NP R>> data(oecdpanel) + self.growth = \ + [-0.0017584, 0.00740688, 0.03424461, 0.03848719, 0.02932506, + 0.03769199, 0.0466038, 0.00199456, 0.03679607, 0.01917304, + -0.00221, 0.00787269, 0.03441118, -0.0109228, 0.02043064, + -0.0307962, 0.02008947, 0.00580313, 0.00344502, 0.04706358, + 0.03585851, 0.01464953, 0.04525762, 0.04109222, -0.0087903, + 0.04087915, 0.04551403, 0.036916, 0.00369293, 0.0718669, + 0.02577732, -0.0130759, -0.01656641, 0.00676429, 0.08833017, + 0.05092105, 0.02005877, 0.00183858, 0.03903173, 0.05832116, + 0.0494571, 0.02078484, 0.09213897, 0.0070534, 0.08677202, + 0.06830603, -0.00041, 0.0002856, 0.03421225, -0.0036825] + + self.oecd = \ + [0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0] + + self.weights = np.random.random(nobs) + + +class TestKDEUnivariate(KDETestBase): + + def test_pdf_non_fft(self): + + kde = nparam.KDEUnivariate(self.noise) + kde.fit(fft=False, bw='scott') + + + grid = kde.support + testx = [grid[10*i] for i in range(6)] + + # Test against values from R 'ks' package + kde_expected = [0.00016808277984236013, + 0.030759614592368954, + 0.14123404934759243, + 0.28807147408162409, + 0.25594519303876273, + 0.056593973915651047] + + kde_vals0 = kde.density[10 * np.arange(6)] + kde_vals = kde.evaluate(testx) + + npt.assert_allclose(kde_vals, kde_expected, + atol=1e-6) + npt.assert_allclose(kde_vals0, kde_expected, + atol=1e-6) + + + def test_weighted_pdf_non_fft(self): + + kde = nparam.KDEUnivariate(self.noise) + kde.fit(weights=self.weights, fft=False, bw='scott') + + grid = kde.support + testx = [grid[10*i] for i in range(6)] + + # Test against values from R 'ks' package + kde_expected = [9.1998858033950757e-05, + 0.018761981151370496, + 0.14425925509365087, + 0.30307631742267443, + 0.2405445849994125, + 0.06433170684797665] + + kde_vals0 = kde.density[10 * np.arange(6)] + kde_vals = kde.evaluate(testx) + + npt.assert_allclose(kde_vals, kde_expected, + atol=1e-6) + npt.assert_allclose(kde_vals0, kde_expected, + atol=1e-6) + + + +class TestKDEMultivariate(KDETestBase): + @pytest.mark.slow + def test_pdf_mixeddata_CV_LS(self): + dens_u = nparam.KDEMultivariate(data=[self.c1, self.o, self.o2], + var_type='coo', bw='cv_ls') + npt.assert_allclose(dens_u.bw, [0.70949447, 0.08736727, 0.09220476], + atol=1e-6) + + # Matches R to 3 decimals; results seem more stable than with R. + # Can be checked with following code: + # import rpy2.robjects as robjects + # from rpy2.robjects.packages import importr + # NP = importr('np') + # r = robjects.r + # D = {"S1": robjects.FloatVector(c1), "S2":robjects.FloatVector(c2), + # "S3":robjects.FloatVector(c3), "S4":robjects.FactorVector(o), + # "S5":robjects.FactorVector(o2)} + # df = robjects.DataFrame(D) + # formula = r('~S1+ordered(S4)+ordered(S5)') + # r_bw = NP.npudensbw(formula, data=df, bwmethod='cv.ls') + + @pytest.mark.slow + def test_pdf_mixeddata_LS_vs_ML(self): + dens_ls = nparam.KDEMultivariate(data=[self.c1, self.o, self.o2], + var_type='coo', bw='cv_ls') + dens_ml = nparam.KDEMultivariate(data=[self.c1, self.o, self.o2], + var_type='coo', bw='cv_ml') + npt.assert_allclose(dens_ls.bw, dens_ml.bw, atol=0, rtol=0.5) + + def test_pdf_mixeddata_CV_ML(self): + # Test ML cross-validation + dens_ml = nparam.KDEMultivariate(data=[self.c1, self.o, self.c2], + var_type='coc', bw='cv_ml') + R_bw = [1.021563, 2.806409e-14, 0.5142077] + npt.assert_allclose(dens_ml.bw, R_bw, atol=0.1, rtol=0.1) + + @pytest.mark.slow + def test_pdf_continuous(self): + # Test for only continuous data + dens = nparam.KDEMultivariate(data=[self.growth, self.Italy_gdp], + var_type='cc', bw='cv_ls') + # take the first data points from the training set + sm_result = np.squeeze(dens.pdf()[0:5]) + R_result = [1.6202284, 0.7914245, 1.6084174, 2.4987204, 1.3705258] + + ## CODE TO REPRODUCE THE RESULTS IN R + ## library(np) + ## data(oecdpanel) + ## data (Italy) + ## bw <-npudensbw(formula = ~oecdpanel$growth[1:50] + Italy$gdp[1:50], + ## bwmethod ='cv.ls') + ## fhat <- fitted(npudens(bws=bw)) + ## fhat[1:5] + npt.assert_allclose(sm_result, R_result, atol=1e-3) + + def test_pdf_ordered(self): + # Test for only ordered data + dens = nparam.KDEMultivariate(data=[self.oecd], var_type='o', bw='cv_ls') + sm_result = np.squeeze(dens.pdf()[0:5]) + R_result = [0.7236395, 0.7236395, 0.2763605, 0.2763605, 0.7236395] + # lower tol here. only 2nd decimal + npt.assert_allclose(sm_result, R_result, atol=1e-1) + + @pytest.mark.slow + def test_unordered_CV_LS(self): + dens = nparam.KDEMultivariate(data=[self.growth, self.oecd], + var_type='cu', bw='cv_ls') + R_result = [0.0052051, 0.05835941] + npt.assert_allclose(dens.bw, R_result, atol=1e-2) + + def test_continuous_cdf(self, data_predict=None): + dens = nparam.KDEMultivariate(data=[self.Italy_gdp, self.growth], + var_type='cc', bw='cv_ml') + sm_result = dens.cdf()[0:5] + R_result = [0.192180770, 0.299505196, 0.557303666, + 0.513387712, 0.210985350] + npt.assert_allclose(sm_result, R_result, atol=1e-3) + + def test_mixeddata_cdf(self, data_predict=None): + dens = nparam.KDEMultivariate(data=[self.Italy_gdp, self.oecd], + var_type='cu', bw='cv_ml') + sm_result = dens.cdf()[0:5] + R_result = [0.54700010, 0.65907039, 0.89676865, 0.74132941, 0.25291361] + npt.assert_allclose(sm_result, R_result, atol=1e-3) + + @pytest.mark.slow + def test_continuous_cvls_efficient(self): + nobs = 400 + np.random.seed(12345) + C1 = np.random.normal(size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + Y = 0.3 +1.2 * C1 - 0.9 * C2 + dens_efficient = nparam.KDEMultivariate(data=[Y, C1], var_type='cc', + bw='cv_ls', + defaults=nparam.EstimatorSettings(efficient=True, n_sub=100)) + #dens = nparam.KDEMultivariate(data=[Y, C1], var_type='cc', bw='cv_ls', + # defaults=nparam.EstimatorSettings(efficient=False)) + #bw = dens.bw + bw = np.array([0.3404, 0.1666]) + npt.assert_allclose(bw, dens_efficient.bw, atol=0.1, rtol=0.2) + + @pytest.mark.slow + def test_continuous_cvml_efficient(self): + nobs = 400 + np.random.seed(12345) + C1 = np.random.normal(size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + Y = 0.3 +1.2 * C1 - 0.9 * C2 + + dens_efficient = nparam.KDEMultivariate(data=[Y, C1], var_type='cc', + bw='cv_ml', defaults=nparam.EstimatorSettings(efficient=True, + n_sub=100)) + #dens = nparam.KDEMultivariate(data=[Y, C1], var_type='cc', bw='cv_ml', + # defaults=nparam.EstimatorSettings(efficient=False)) + #bw = dens.bw + bw = np.array([0.4471, 0.2861]) + npt.assert_allclose(bw, dens_efficient.bw, atol=0.1, rtol = 0.2) + + @pytest.mark.slow + def test_efficient_notrandom(self): + nobs = 400 + np.random.seed(12345) + C1 = np.random.normal(size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + Y = 0.3 +1.2 * C1 - 0.9 * C2 + + dens_efficient = nparam.KDEMultivariate(data=[Y, C1], var_type='cc', + bw='cv_ml', defaults=nparam.EstimatorSettings(efficient=True, + randomize=False, + n_sub=100)) + dens = nparam.KDEMultivariate(data=[Y, C1], var_type='cc', bw='cv_ml') + npt.assert_allclose(dens.bw, dens_efficient.bw, atol=0.1, rtol = 0.2) + + def test_efficient_user_specified_bw(self): + nobs = 400 + np.random.seed(12345) + C1 = np.random.normal(size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + bw_user=[0.23, 434697.22] + + dens = nparam.KDEMultivariate(data=[C1, C2], var_type='cc', + bw=bw_user, defaults=nparam.EstimatorSettings(efficient=True, + randomize=False, + n_sub=100)) + npt.assert_equal(dens.bw, bw_user) + + +class TestKDEMultivariateConditional(KDETestBase): + @pytest.mark.slow + def test_mixeddata_CV_LS(self): + dens_ls = nparam.KDEMultivariateConditional(endog=[self.Italy_gdp], + exog=[self.Italy_year], + dep_type='c', + indep_type='o', bw='cv_ls') + # R result: [1.6448, 0.2317373] + npt.assert_allclose(dens_ls.bw, [1.01203728, 0.31905144], atol=1e-5) + + def test_continuous_CV_ML(self): + dens_ml = nparam.KDEMultivariateConditional(endog=[self.Italy_gdp], + exog=[self.growth], + dep_type='c', + indep_type='c', bw='cv_ml') + # Results from R + npt.assert_allclose(dens_ml.bw, [0.5341164, 0.04510836], atol=1e-3) + + @pytest.mark.slow + def test_unordered_CV_LS(self): + dens_ls = nparam.KDEMultivariateConditional(endog=[self.oecd], + exog=[self.growth], + dep_type='u', + indep_type='c', bw='cv_ls') + # TODO: assert missing + + def test_pdf_continuous(self): + # Hardcode here the bw that will be calculated is we had used + # ``bw='cv_ml'``. That calculation is slow, and tested in other tests. + bw_cv_ml = np.array([0.010043, 12095254.7]) # TODO: odd numbers (?!) + dens = nparam.KDEMultivariateConditional(endog=[self.growth], + exog=[self.Italy_gdp], + dep_type='c', indep_type='c', + bw=bw_cv_ml) + sm_result = np.squeeze(dens.pdf()[0:5]) + R_result = [11.97964, 12.73290, 13.23037, 13.46438, 12.22779] + npt.assert_allclose(sm_result, R_result, atol=1e-3) + + @pytest.mark.slow + def test_pdf_mixeddata(self): + dens = nparam.KDEMultivariateConditional(endog=[self.Italy_gdp], + exog=[self.Italy_year], + dep_type='c', indep_type='o', + bw='cv_ls') + sm_result = np.squeeze(dens.pdf()[0:5]) + #R_result = [0.08469226, 0.01737731, 0.05679909, 0.09744726, 0.15086674] + expected = [0.08592089, 0.0193275, 0.05310327, 0.09642667, 0.171954] + + ## CODE TO REPRODUCE IN R + ## library(np) + ## data (Italy) + ## bw <- npcdensbw(formula = + ## Italy$gdp[1:50]~ordered(Italy$year[1:50]),bwmethod='cv.ls') + ## fhat <- fitted(npcdens(bws=bw)) + ## fhat[1:5] + npt.assert_allclose(sm_result, expected, atol=0, rtol=1e-5) + + def test_continuous_normal_ref(self): + # test for normal reference rule of thumb with continuous data + dens_nm = nparam.KDEMultivariateConditional(endog=[self.Italy_gdp], + exog=[self.growth], + dep_type='c', + indep_type='c', + bw='normal_reference') + sm_result = dens_nm.bw + R_result = [1.283532, 0.01535401] + # TODO: here we need a smaller tolerance.check! + npt.assert_allclose(sm_result, R_result, atol=1e-1) + + # test default bandwidth method, should be normal_reference + dens_nm2 = nparam.KDEMultivariateConditional(endog=[self.Italy_gdp], + exog=[self.growth], + dep_type='c', + indep_type='c', + bw=None) + assert_allclose(dens_nm2.bw, dens_nm.bw, rtol=1e-10) + assert_equal(dens_nm2._bw_method, 'normal_reference') + # check repr works #3125 + repr(dens_nm2) + + def test_continuous_cdf(self): + dens_nm = nparam.KDEMultivariateConditional(endog=[self.Italy_gdp], + exog=[self.growth], + dep_type='c', + indep_type='c', + bw='normal_reference') + sm_result = dens_nm.cdf()[0:5] + R_result = [0.81304920, 0.95046942, 0.86878727, 0.71961748, 0.38685423] + npt.assert_allclose(sm_result, R_result, atol=1e-3) + + @pytest.mark.slow + def test_mixeddata_cdf(self): + dens = nparam.KDEMultivariateConditional(endog=[self.Italy_gdp], + exog=[self.Italy_year], + dep_type='c', + indep_type='o', + bw='cv_ls') + sm_result = dens.cdf()[0:5] + #R_result = [0.8118257, 0.9724863, 0.8843773, 0.7720359, 0.4361867] + expected = [0.83378885, 0.97684477, 0.90655143, 0.79393161, 0.43629083] + npt.assert_allclose(sm_result, expected, atol=0, rtol=1e-5) + + @pytest.mark.slow + def test_continuous_cvml_efficient(self): + nobs = 500 + np.random.seed(12345) + ovals = np.random.binomial(2, 0.5, size=(nobs, )) + C1 = np.random.normal(size=(nobs, )) + noise = np.random.normal(size=(nobs, )) + b0 = 3 + b1 = 1.2 + b2 = 3.7 # regression coefficients + Y = b0+ b1 * C1 + b2*ovals + noise + + dens_efficient = nparam.KDEMultivariateConditional(endog=[Y], + exog=[C1], dep_type='c', indep_type='c', bw='cv_ml', + defaults=nparam.EstimatorSettings(efficient=True, n_sub=50)) + + #dens = nparam.KDEMultivariateConditional(endog=[Y], exog=[C1], + # dep_type='c', indep_type='c', bw='cv_ml') + #bw = dens.bw + bw_expected = np.array([0.73387, 0.43715]) + npt.assert_allclose(dens_efficient.bw, bw_expected, atol=0, rtol=1e-3) + + def test_efficient_user_specified_bw(self): + nobs = 400 + np.random.seed(12345) + C1 = np.random.normal(size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + bw_user=[0.23, 434697.22] + + dens = nparam.KDEMultivariate(data=[C1, C2], var_type='cc', + bw=bw_user, defaults=nparam.EstimatorSettings(efficient=True, + randomize=False, + n_sub=100)) + npt.assert_equal(dens.bw, bw_user) diff --git a/statsmodels/nonparametric/tests/test_kernel_regression.py b/statsmodels/nonparametric/tests/test_kernel_regression.py new file mode 100644 index 0000000..b91305e --- /dev/null +++ b/statsmodels/nonparametric/tests/test_kernel_regression.py @@ -0,0 +1,340 @@ + +import pytest +import numpy as np +import numpy.testing as npt + +import statsmodels.api as sm +nparam = sm.nonparametric + + +class KernelRegressionTestBase(object): + @classmethod + def setup_class(cls): + nobs = 60 + np.random.seed(123456) + cls.o = np.random.binomial(2, 0.7, size=(nobs, 1)) + cls.o2 = np.random.binomial(3, 0.7, size=(nobs, 1)) + cls.c1 = np.random.normal(size=(nobs, 1)) + cls.c2 = np.random.normal(10, 1, size=(nobs, 1)) + cls.c3 = np.random.normal(10, 2, size=(nobs, 1)) + cls.noise = np.random.normal(size=(nobs, 1)) + b0 = 0.3 + b1 = 1.2 + b2 = 3.7 # regression coefficients + cls.y = b0 + b1 * cls.c1 + b2 * cls.c2 + cls.noise + cls.y2 = b0 + b1 * cls.c1 + b2 * cls.c2 + cls.o + cls.noise + # Italy data from R's np package (the first 50 obs) R>> data (Italy) + + cls.Italy_gdp = \ + [8.556, 12.262, 9.587, 8.119, 5.537, 6.796, 8.638, + 6.483, 6.212, 5.111, 6.001, 7.027, 4.616, 3.922, + 4.688, 3.957, 3.159, 3.763, 3.829, 5.242, 6.275, + 8.518, 11.542, 9.348, 8.02, 5.527, 6.865, 8.666, + 6.672, 6.289, 5.286, 6.271, 7.94, 4.72, 4.357, + 4.672, 3.883, 3.065, 3.489, 3.635, 5.443, 6.302, + 9.054, 12.485, 9.896, 8.33, 6.161, 7.055, 8.717, + 6.95] + + cls.Italy_year = \ + [1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, + 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1952, + 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, + 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1953, 1953, + 1953, 1953, 1953, 1953, 1953, 1953] + + # OECD panel data from NP R>> data(oecdpanel) + cls.growth = \ + [-0.0017584, 0.00740688, 0.03424461, 0.03848719, 0.02932506, + 0.03769199, 0.0466038, 0.00199456, 0.03679607, 0.01917304, + -0.00221, 0.00787269, 0.03441118, -0.0109228, 0.02043064, + -0.0307962, 0.02008947, 0.00580313, 0.00344502, 0.04706358, + 0.03585851, 0.01464953, 0.04525762, 0.04109222, -0.0087903, + 0.04087915, 0.04551403, 0.036916, 0.00369293, 0.0718669, + 0.02577732, -0.0130759, -0.01656641, 0.00676429, 0.08833017, + 0.05092105, 0.02005877, 0.00183858, 0.03903173, 0.05832116, + 0.0494571, 0.02078484, 0.09213897, 0.0070534, 0.08677202, + 0.06830603, -0.00041, 0.0002856, 0.03421225, -0.0036825] + + cls.oecd = \ + [0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0] + + def write2file(self, file_name, data): + """Write some data to a csv file. Only use for debugging!""" + import csv + + data_file = csv.writer(open(file_name, "w")) + data = np.column_stack(data) + nobs = max(np.shape(data)) + K = min(np.shape(data)) + data = np.reshape(data, (nobs,K)) + for i in range(nobs): + data_file.writerow(list(data[i, :])) + + +class TestKernelReg(KernelRegressionTestBase): + def test_ordered_lc_cvls(self): + model = nparam.KernelReg(endog=[self.Italy_gdp], + exog=[self.Italy_year], reg_type='lc', + var_type='o', bw='cv_ls') + sm_bw = model.bw + R_bw = 0.1390096 + + sm_mean, sm_mfx = model.fit() + sm_mean = sm_mean[0:5] + sm_mfx = sm_mfx[0:5] + R_mean = 6.190486 + + sm_R2 = model.r_squared() + R_R2 = 0.1435323 + + ## CODE TO REPRODUCE IN R + ## library(np) + ## data(Italy) + ## attach(Italy) + ## bw <- npregbw(formula=gdp[1:50]~ordered(year[1:50])) + npt.assert_allclose(sm_bw, R_bw, atol=1e-2) + npt.assert_allclose(sm_mean, R_mean, atol=1e-2) + npt.assert_allclose(sm_R2, R_R2, atol=1e-2) + + def test_continuousdata_lc_cvls(self): + model = nparam.KernelReg(endog=[self.y], exog=[self.c1, self.c2], + reg_type='lc', var_type='cc', bw='cv_ls') + # Bandwidth + sm_bw = model.bw + R_bw = [0.6163835, 0.1649656] + # Conditional Mean + sm_mean, sm_mfx = model.fit() + sm_mean = sm_mean[0:5] + sm_mfx = sm_mfx[0:5] + R_mean = [31.49157, 37.29536, 43.72332, 40.58997, 36.80711] + # R-Squared + sm_R2 = model.r_squared() + R_R2 = 0.956381720885 + + npt.assert_allclose(sm_bw, R_bw, atol=1e-2) + npt.assert_allclose(sm_mean, R_mean, atol=1e-2) + npt.assert_allclose(sm_R2, R_R2, atol=1e-2) + + def test_continuousdata_ll_cvls(self): + model = nparam.KernelReg(endog=[self.y], exog=[self.c1, self.c2], + reg_type='ll', var_type='cc', bw='cv_ls') + + sm_bw = model.bw + R_bw = [1.717891, 2.449415] + sm_mean, sm_mfx = model.fit() + sm_mean = sm_mean[0:5] + sm_mfx = sm_mfx[0:5] + R_mean = [31.16003, 37.30323, 44.49870, 40.73704, 36.19083] + + sm_R2 = model.r_squared() + R_R2 = 0.9336019 + + npt.assert_allclose(sm_bw, R_bw, atol=1e-2) + npt.assert_allclose(sm_mean, R_mean, atol=1e-2) + npt.assert_allclose(sm_R2, R_R2, atol=1e-2) + + def test_continuous_mfx_ll_cvls(self, file_name='RegData.csv'): + nobs = 200 + np.random.seed(1234) + C1 = np.random.normal(size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + C3 = np.random.beta(0.5,0.2, size=(nobs,)) + noise = np.random.normal(size=(nobs, )) + b0 = 3 + b1 = 1.2 + b2 = 3.7 # regression coefficients + b3 = 2.3 + Y = b0+ b1 * C1 + b2*C2+ b3 * C3 + noise + bw_cv_ls = np.array([0.96075, 0.5682, 0.29835]) + model = nparam.KernelReg(endog=[Y], exog=[C1, C2, C3], + reg_type='ll', var_type='ccc', bw=bw_cv_ls) + sm_mean, sm_mfx = model.fit() + sm_mean = sm_mean[0:5] + npt.assert_allclose(sm_mfx[0,:], [b1,b2,b3], rtol=2e-1) + + def test_mixed_mfx_ll_cvls(self, file_name='RegData.csv'): + nobs = 200 + np.random.seed(1234) + ovals = np.random.binomial(2, 0.5, size=(nobs, )) + C1 = np.random.normal(size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + noise = np.random.normal(size=(nobs, )) + b0 = 3 + b1 = 1.2 + b2 = 3.7 # regression coefficients + b3 = 2.3 + Y = b0+ b1 * C1 + b2*C2+ b3 * ovals + noise + bw_cv_ls = np.array([1.04726, 1.67485, 0.39852]) + model = nparam.KernelReg(endog=[Y], exog=[C1, C2, ovals], + reg_type='ll', var_type='cco', bw=bw_cv_ls) + sm_mean, sm_mfx = model.fit() + # TODO: add expected result + sm_R2 = model.r_squared() # noqa: F841 + npt.assert_allclose(sm_mfx[0, :], [b1, b2, b3], rtol=2e-1) + + @pytest.mark.slow + @pytest.mark.xfail(reason="Test doesn't make much sense - always passes " + "with very small bw.") + def test_mfx_nonlinear_ll_cvls(self, file_name='RegData.csv'): + nobs = 200 + np.random.seed(1234) + C1 = np.random.normal(size=(nobs,)) + C2 = np.random.normal(2, 1, size=(nobs,)) + C3 = np.random.beta(0.5,0.2, size=(nobs,)) + noise = np.random.normal(size=(nobs,)) + b0 = 3 + b1 = 1.2 + b3 = 2.3 + Y = b0+ b1 * C1 * C2 + b3 * C3 + noise + model = nparam.KernelReg(endog=[Y], exog=[C1, C2, C3], + reg_type='ll', var_type='ccc', bw='cv_ls') + sm_bw = model.bw + sm_mean, sm_mfx = model.fit() + sm_R2 = model.r_squared() + # Theoretical marginal effects + mfx1 = b1 * C2 + mfx2 = b1 * C1 + npt.assert_allclose(sm_mean, Y, rtol = 2e-1) + + npt.assert_allclose(sm_mfx[:, 0], mfx1, rtol=2e-1) + npt.assert_allclose(sm_mfx[0:10, 1], mfx2[0:10], rtol=2e-1) + + @pytest.mark.slow + def test_continuous_cvls_efficient(self): + nobs = 500 + np.random.seed(12345) + C1 = np.random.normal(size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + b0 = 3 + b1 = 1.2 + b2 = 3.7 # regression coefficients + Y = b0+ b1 * C1 + b2*C2 + + model_efficient = nparam.KernelReg(endog=[Y], exog=[C1], reg_type='lc', + var_type='c', bw='cv_ls', + defaults=nparam.EstimatorSettings(efficient=True, + n_sub=100)) + + model = nparam.KernelReg(endog=[Y], exog=[C1], reg_type='ll', + var_type='c', bw='cv_ls') + npt.assert_allclose(model.bw, model_efficient.bw, atol=5e-2, rtol=1e-1) + + @pytest.mark.slow + def test_censored_ll_cvls(self): + nobs = 200 + np.random.seed(1234) + C1 = np.random.normal(size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + noise = np.random.normal(size=(nobs, )) + Y = 0.3 +1.2 * C1 - 0.9 * C2 + noise + Y[Y>0] = 0 # censor the data + model = nparam.KernelCensoredReg(endog=[Y], exog=[C1, C2], + reg_type='ll', var_type='cc', + bw='cv_ls', censor_val=0) + sm_mean, sm_mfx = model.fit() + npt.assert_allclose(sm_mfx[0,:], [1.2, -0.9], rtol = 2e-1) + + @pytest.mark.slow + def test_continuous_lc_aic(self): + nobs = 200 + np.random.seed(1234) + C1 = np.random.normal(size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + noise = np.random.normal(size=(nobs, )) + Y = 0.3 +1.2 * C1 - 0.9 * C2 + noise + #self.write2file('RegData.csv', (Y, C1, C2)) + + #CODE TO PRODUCE BANDWIDTH ESTIMATION IN R + #library(np) + #data <- read.csv('RegData.csv', header=FALSE) + #bw <- npregbw(formula=data$V1 ~ data$V2 + data$V3, + # bwmethod='cv.aic', regtype='lc') + model = nparam.KernelReg(endog=[Y], exog=[C1, C2], + reg_type='lc', var_type='cc', bw='aic') + #R_bw = [0.4017893, 0.4943397] # Bandwidth obtained in R + bw_expected = [0.3987821, 0.50933458] + npt.assert_allclose(model.bw, bw_expected, rtol=1e-3) + + @pytest.mark.slow + def test_significance_continuous(self): + nobs = 250 + np.random.seed(12345) + C1 = np.random.normal(size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + C3 = np.random.beta(0.5,0.2, size=(nobs,)) + noise = np.random.normal(size=(nobs, )) + b1 = 1.2 + b2 = 3.7 # regression coefficients + Y = b1 * C1 + b2 * C2 + noise + + # This is the cv_ls bandwidth estimated earlier + bw=[11108137.1087194, 1333821.85150218] + model = nparam.KernelReg(endog=[Y], exog=[C1, C3], + reg_type='ll', var_type='cc', bw=bw) + nboot = 45 # Number of bootstrap samples + sig_var12 = model.sig_test([0,1], nboot=nboot) # H0: b1 = 0 and b2 = 0 + npt.assert_equal(sig_var12 == 'Not Significant', False) + sig_var1 = model.sig_test([0], nboot=nboot) # H0: b1 = 0 + npt.assert_equal(sig_var1 == 'Not Significant', False) + sig_var2 = model.sig_test([1], nboot=nboot) # H0: b2 = 0 + npt.assert_equal(sig_var2 == 'Not Significant', True) + + @pytest.mark.slow + def test_significance_discrete(self): + nobs = 200 + np.random.seed(12345) + ovals = np.random.binomial(2, 0.5, size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + C3 = np.random.beta(0.5,0.2, size=(nobs,)) + noise = np.random.normal(size=(nobs, )) + b1 = 1.2 + b2 = 3.7 # regression coefficients + Y = b1 * ovals + b2 * C2 + noise + + bw= [3.63473198e+00, 1.21404803e+06] + # This is the cv_ls bandwidth estimated earlier + # The cv_ls bandwidth was estimated earlier to save time + model = nparam.KernelReg(endog=[Y], exog=[ovals, C3], + reg_type='ll', var_type='oc', bw=bw) + # This was also tested with local constant estimator + nboot = 45 # Number of bootstrap samples + sig_var1 = model.sig_test([0], nboot=nboot) # H0: b1 = 0 + npt.assert_equal(sig_var1 == 'Not Significant', False) + sig_var2 = model.sig_test([1], nboot=nboot) # H0: b2 = 0 + npt.assert_equal(sig_var2 == 'Not Significant', True) + + def test_efficient_user_specificed_bw(self): + + bw_user=[0.23, 434697.22] + model = nparam.KernelReg(endog=[self.y], exog=[self.c1, self.c2], + reg_type='lc', var_type='cc', bw=bw_user, + defaults=nparam.EstimatorSettings(efficient=True)) + # Bandwidth + npt.assert_equal(model.bw, bw_user) + + def test_censored_efficient_user_specificed_bw(self): + nobs = 200 + np.random.seed(1234) + C1 = np.random.normal(size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + noise = np.random.normal(size=(nobs, )) + Y = 0.3 +1.2 * C1 - 0.9 * C2 + noise + Y[Y>0] = 0 # censor the data + + bw_user=[0.23, 434697.22] + model = nparam.KernelCensoredReg(endog=[Y], exog=[C1, C2], + reg_type='ll', var_type='cc', + bw=bw_user, censor_val=0, + defaults=nparam.EstimatorSettings(efficient=True)) + # Bandwidth + npt.assert_equal(model.bw, bw_user) + + +def test_invalid_bw(): + # GH4873 + x = np.arange(400) + y = x ** 2 + with pytest.raises(ValueError): + nparam.KernelReg(x, y, 'c', bw=[12.5, 1.]) diff --git a/statsmodels/nonparametric/tests/test_kernels.py b/statsmodels/nonparametric/tests/test_kernels.py new file mode 100644 index 0000000..d0b4086 --- /dev/null +++ b/statsmodels/nonparametric/tests/test_kernels.py @@ -0,0 +1,145 @@ +# -*- coding: utf-8 -*- +""" + +Created on Sat Dec 14 17:23:25 2013 + +Author: Josef Perktold +""" +from __future__ import print_function +import os +import numpy as np +from statsmodels.sandbox.nonparametric import kernels + +from numpy.testing import assert_allclose, assert_array_less + +DEBUG = 0 + +curdir = os.path.dirname(os.path.abspath(__file__)) +fname = 'results/results_kernel_regression.csv' +results = np.recfromcsv(os.path.join(curdir, fname)) + +y = results['accident'] +x = results['service'] +positive = x >= 0 +x = np.log(x[positive]) +y = y[positive] +xg = np.linspace(x.min(), x.max(), 40) # grid points default in Stata + +#kern_name = 'gau' +#kern = kernels.Gaussian() +#kern_name = 'epan2' +#kern = kernels.Epanechnikov() +#kern_name = 'rec' +#kern = kernels.Uniform() # ours looks awful +#kern_name = 'tri' +#kern = kernels.Triangular() +#kern_name = 'cos' +#kern = kernels.Cosine() #doesn't match up, nan in Stata results ? +#kern_name = 'bi' +#kern = kernels.Biweight() + +class CheckKernelMixin(object): + + se_rtol = 0.7 + upp_rtol = 0.1 + low_rtol = 0.2 + low_atol = 0.3 + + def test_smoothconf(self): + kern_name = self.kern_name + kern = self.kern + #fittedg = np.array([kernels.Epanechnikov().smoothconf(x, y, xi) for xi in xg]) + fittedg = np.array([kern.smoothconf(x, y, xi) for xi in xg]) + # attach for inspection from outside of test run + self.fittedg = fittedg + + res_fitted = results['s_' + kern_name] + res_se = results['se_' + kern_name] + crit = 1.9599639845400545 # norm.isf(0.05 / 2) + # implied standard deviation from conf_int + se = (fittedg[:, 2] - fittedg[:, 1]) / crit + fitted = fittedg[:, 1] + + # check both rtol & atol + assert_allclose(fitted, res_fitted, rtol=5e-7, atol=1e-20) + assert_allclose(fitted, res_fitted, rtol=0, atol=1e-6) + + # TODO: check we are using a different algorithm for se + # The following are very rough checks + + self.se = se + self.res_se = res_se + se_valid = np.isfinite(res_se) + # if np.any(~se_valid): + # print('nan in stata result', self.__class__.__name__) + assert_allclose(se[se_valid], res_se[se_valid], rtol=self.se_rtol, atol=0.2) + # check that most values are closer + mask = np.abs(se - res_se) > (0.2 + 0.2 * res_se) + if not hasattr(self, 'se_n_diff'): + se_n_diff = 40 * 0.125 + else: + se_n_diff = self.se_n_diff + assert_array_less(mask.sum(), se_n_diff + 1) # at most 5 large diffs + + if DEBUG: + # raises: RuntimeWarning: invalid value encountered in divide + print(fitted / res_fitted - 1) + print(se / res_se - 1) + # Stata only displays ci, doesn't save it + res_upp = res_fitted + crit * res_se + res_low = res_fitted - crit * res_se + self.res_fittedg = np.column_stack((res_low, res_fitted, res_upp)) + if DEBUG: + print(fittedg[:, 2] / res_upp - 1) + print(fittedg[:, 2] - res_upp) + print(fittedg[:, 0] - res_low) + print(np.max(np.abs(fittedg[:, 2] / res_upp - 1))) + assert_allclose(fittedg[se_valid, 2], res_upp[se_valid], + rtol=self.upp_rtol, atol=0.2) + assert_allclose(fittedg[se_valid, 0], res_low[se_valid], + rtol=self.low_rtol, atol=self.low_atol) + + #assert_allclose(fitted, res_fitted, rtol=0, atol=1e-6) + + def t_est_smoothconf_data(self): + kern = self.kern + crit = 1.9599639845400545 # norm.isf(0.05 / 2) + # no reference results saved to csv yet + fitted_x = np.array([kern.smoothconf(x, y, xi) for xi in x]) + if DEBUG: + print(fitted_x[:, 2] - fitted_x[:, 1]) / crit + +class TestEpan(CheckKernelMixin): + kern_name = 'epan2' + kern = kernels.Epanechnikov() + +class TestGau(CheckKernelMixin): + kern_name = 'gau' + kern = kernels.Gaussian() + +class TestUniform(CheckKernelMixin): + kern_name = 'rec' + kern = kernels.Uniform() + se_rtol = 0.8 + se_n_diff = 8 + upp_rtol = 0.4 + low_rtol = 0.2 + low_atol = 0.8 + +class TestTriangular(CheckKernelMixin): + kern_name = 'tri' + kern = kernels.Triangular() + se_n_diff = 10 + upp_rtol = 0.15 + low_rtol = 0.3 + +class T_estCosine(CheckKernelMixin): + # Stata results for Cosine look strange, has nans + kern_name = 'cos' + kern = kernels.Cosine2() + +class TestBiweight(CheckKernelMixin): + kern_name = 'bi' + kern = kernels.Biweight() + se_n_diff = 9 + low_rtol = 0.3 diff --git a/statsmodels/nonparametric/tests/test_lowess.py b/statsmodels/nonparametric/tests/test_lowess.py new file mode 100644 index 0000000..ef76498 --- /dev/null +++ b/statsmodels/nonparametric/tests/test_lowess.py @@ -0,0 +1,156 @@ +''' +Lowess testing suite. + +Expected outcomes are generated by R's lowess function given the same +arguments. The R script test_lowess_r_outputs.R can be used to +generate the expected outcomes. + +The delta tests utilize Silverman's motorcycle collision data, +available in R's MASS package. +''' + +import os + +import numpy as np +from numpy.testing import (assert_almost_equal, assert_, assert_raises, + assert_equal) + +from statsmodels.nonparametric.smoothers_lowess import lowess + +# Number of decimals to test equality with. +# The default is 7. +curdir = os.path.dirname(os.path.abspath(__file__)) +rpath = os.path.join(curdir, 'results') + + +class TestLowess(object): + + def test_import(self): + #this doesn't work + #from statsmodels.api.nonparametric import lowess as lowess1 + import statsmodels.api as sm + lowess1 = sm.nonparametric.lowess + assert_(lowess is lowess1) + + def test_flat(self): + test_data = { + 'x': np.arange(20), 'y': np.zeros(20), 'out': np.zeros(20)} + expected_lowess = np.array([test_data['x'], test_data['out']]).T + actual_lowess = lowess(test_data['y'], test_data['x']) + assert_almost_equal(expected_lowess, actual_lowess, 7) + + def test_range(self): + test_data = { + 'x': np.arange(20), 'y': np.arange(20), 'out': np.arange(20)} + expected_lowess = np.array([test_data['x'], test_data['out']]).T + actual_lowess = lowess(test_data['y'], test_data['x']) + assert_almost_equal(expected_lowess, actual_lowess, 7) + + @staticmethod + def generate(name, fname, x='x', y='y', out='out', kwargs=None, decimal=7): + kwargs = {} if kwargs is None else kwargs + data = np.genfromtxt(os.path.join(rpath, fname), delimiter=',', names=True) + assert_almost_equal.description = name + if callable(kwargs): + kwargs = kwargs(data) + result = lowess(data[y], data[x], **kwargs) + expect = np.array([data[x], data[out]]).T + assert_almost_equal(result, expect, decimal) + + # TODO: Refactor as parameterized test once nose is permanently dropped + def test_simple(self): + self.generate('test_simple', 'test_lowess_simple.csv') + + def test_iter_0(self): + self.generate('test_iter_0', 'test_lowess_iter.csv', out='out_0', kwargs={'it': 0}) + + def test_iter_0_3(self): + self.generate('test_iter_0', 'test_lowess_iter.csv', out='out_3', kwargs={'it': 3}) + + def test_frac_2_3(self): + self.generate('test_frac_2_3', 'test_lowess_frac.csv', out='out_2_3', kwargs={'frac': 2. / 3}) + + def test_frac_1_5(self): + self.generate('test_frac_1_5', 'test_lowess_frac.csv', out='out_1_5', kwargs={'frac': 1. / 5}) + + def test_delta_0(self): + self.generate('test_delta_0', 'test_lowess_delta.csv', out='out_0', kwargs={'frac': 0.1}) + + def test_delta_rdef(self): + self.generate('test_delta_Rdef', 'test_lowess_delta.csv', out='out_Rdef', + kwargs=lambda data: {'frac': .1, 'delta': .01 * np.ptp(data['x'])}) + + def test_delta_1(self): + self.generate('test_delta_1', 'test_lowess_delta.csv', out='out_1', + kwargs={'frac': 0.1, 'delta': 1 + 1e-10}, decimal=10) + + def test_options(self): + rfile = os.path.join(rpath, 'test_lowess_simple.csv') + test_data = np.genfromtxt(open(rfile, 'rb'), + delimiter = ',', names = True) + y, x = test_data['y'], test_data['x'] + res1_fitted = test_data['out'] + expected_lowess = np.array([test_data['x'], test_data['out']]).T + + # check skip sorting + actual_lowess1 = lowess(y, x, is_sorted=True) + assert_almost_equal(actual_lowess1, expected_lowess, decimal=13) + + # check skip missing + actual_lowess = lowess(y, x, is_sorted=True, missing='none') + assert_almost_equal(actual_lowess, actual_lowess1, decimal=13) + + # check order/index, returns yfitted only + actual_lowess = lowess(y[::-1], x[::-1], return_sorted=False) + assert_almost_equal(actual_lowess, actual_lowess1[::-1, 1], decimal=13) + + # check returns yfitted only + actual_lowess = lowess(y, x, return_sorted=False, missing='none', + is_sorted=True) + assert_almost_equal(actual_lowess, actual_lowess1[:, 1], decimal=13) + + # check integer input + actual_lowess = lowess(np.round(y).astype(int), x, is_sorted=True) + actual_lowess1 = lowess(np.round(y), x, is_sorted=True) + assert_almost_equal(actual_lowess, actual_lowess1, decimal=13) + assert_(actual_lowess.dtype is np.dtype(float)) + # this will also have duplicate x + actual_lowess = lowess(y, np.round(x).astype(int), is_sorted=True) + actual_lowess1 = lowess(y, np.round(x), is_sorted=True) + assert_almost_equal(actual_lowess, actual_lowess1, decimal=13) + assert_(actual_lowess.dtype is np.dtype(float)) + + # check with nans, this changes the arrays + y[[5, 6]] = np.nan + x[3] = np.nan + mask_valid = np.isfinite(x) & np.isfinite(y) + #actual_lowess1[[3, 5, 6], 1] = np.nan + actual_lowess = lowess(y, x, is_sorted=True) + actual_lowess1 = lowess(y[mask_valid], x[mask_valid], is_sorted=True) + assert_almost_equal(actual_lowess, actual_lowess1, decimal=13) + assert_raises(ValueError, lowess, y, x, missing='raise') + + perm_idx = np.arange(len(x)) + np.random.shuffle(perm_idx) + yperm = y[perm_idx] + xperm = x[perm_idx] + actual_lowess2 = lowess(yperm, xperm, is_sorted=False) + assert_almost_equal(actual_lowess, actual_lowess2, decimal=13) + + actual_lowess3 = lowess(yperm, xperm, is_sorted=False, + return_sorted=False) + mask_valid = np.isfinite(xperm) & np.isfinite(yperm) + assert_equal(np.isnan(actual_lowess3), ~mask_valid) + # get valid sorted smoothed y from actual_lowess3 + sort_idx = np.argsort(xperm) + yhat = actual_lowess3[sort_idx] + yhat = yhat[np.isfinite(yhat)] + assert_almost_equal(yhat, actual_lowess2[:,1], decimal=13) + + +def test_returns_inputs(): + # see 1960 + y = [0] * 10 + [1] * 10 + x = np.arange(20) + result = lowess(y, x, frac=.4) + assert_almost_equal(result, np.column_stack((x, y))) diff --git a/statsmodels/regression/__init__.py b/statsmodels/regression/__init__.py new file mode 100644 index 0000000..dcdcf84 --- /dev/null +++ b/statsmodels/regression/__init__.py @@ -0,0 +1,7 @@ +from .linear_model import yule_walker + +from statsmodels.tools._testing import PytestTester + +__all__ = ['yule_walker', 'test'] + +test = PytestTester() diff --git a/statsmodels/regression/_prediction.py b/statsmodels/regression/_prediction.py new file mode 100644 index 0000000..2c86e30 --- /dev/null +++ b/statsmodels/regression/_prediction.py @@ -0,0 +1,178 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Dec 19 11:29:18 2014 + +Author: Josef Perktold +License: BSD-3 + +""" + +import numpy as np +from scipy import stats + + +# this is similar to ContrastResults after t_test, partially copied and adjusted +class PredictionResults(object): + + def __init__(self, predicted_mean, var_pred_mean, var_resid, + df=None, dist=None, row_labels=None): + self.predicted_mean = predicted_mean + self.var_pred_mean = var_pred_mean + self.df = df + self.var_resid = var_resid + self.row_labels = row_labels + + if dist is None or dist == 'norm': + self.dist = stats.norm + self.dist_args = () + elif dist == 't': + self.dist = stats.t + self.dist_args = (self.df,) + else: + self.dist = dist + self.dist_args = () + + @property + def se_obs(self): + return np.sqrt(self.var_pred_mean + self.var_resid) + + @property + def se_mean(self): + return np.sqrt(self.var_pred_mean) + + def conf_int(self, obs=False, alpha=0.05): + """ + Returns the confidence interval of the value, `effect` of the + constraint. + + This is currently only available for t and z tests. + + Parameters + ---------- + alpha : float, optional + The significance level for the confidence interval. + ie., The default `alpha` = .05 returns a 95% confidence interval. + + Returns + ------- + ci : ndarray, (k_constraints, 2) + The array has the lower and the upper limit of the confidence + interval in the columns. + + """ + + se = self.se_obs if obs else self.se_mean + + q = self.dist.ppf(1 - alpha / 2., *self.dist_args) + lower = self.predicted_mean - q * se + upper = self.predicted_mean + q * se + return np.column_stack((lower, upper)) + + def summary_frame(self, what='all', alpha=0.05): + # TODO: finish and cleanup + import pandas as pd + from collections import OrderedDict + ci_obs = self.conf_int(alpha=alpha, obs=True) # need to split + ci_mean = self.conf_int(alpha=alpha, obs=False) + to_include = OrderedDict() + to_include['mean'] = self.predicted_mean + to_include['mean_se'] = self.se_mean + to_include['mean_ci_lower'] = ci_mean[:, 0] + to_include['mean_ci_upper'] = ci_mean[:, 1] + to_include['obs_ci_lower'] = ci_obs[:, 0] + to_include['obs_ci_upper'] = ci_obs[:, 1] + + self.table = to_include + #OrderedDict doesn't work to preserve sequence + # pandas dict doesn't handle 2d_array + #data = np.column_stack(list(to_include.values())) + #names = .... + res = pd.DataFrame(to_include, index=self.row_labels, + columns=to_include.keys()) + return res + + +def get_prediction(self, exog=None, transform=True, weights=None, + row_labels=None, pred_kwds=None): + """ + compute prediction results + + Parameters + ---------- + exog : array-like, optional + The values for which you want to predict. + transform : bool, optional + If the model was fit via a formula, do you want to pass + exog through the formula. Default is True. E.g., if you fit + a model y ~ log(x1) + log(x2), and transform is True, then + you can pass a data structure that contains x1 and x2 in + their original form. Otherwise, you'd need to log the data + first. + weights : array_like, optional + Weights interpreted as in WLS, used for the variance of the predicted + residual. + args, kwargs : + Some models can take additional arguments or keywords, see the + predict method of the model for the details. + + Returns + ------- + prediction_results : linear_model.PredictionResults + The prediction results instance contains prediction and prediction + variance and can on demand calculate confidence intervals and summary + tables for the prediction of the mean and of new observations. + """ + + # prepare exog and row_labels, based on base Results.predict + if transform and hasattr(self.model, 'formula') and exog is not None: + from patsy import dmatrix + exog = dmatrix(self.model.data.design_info, exog) + + if exog is not None: + if row_labels is None: + row_labels = getattr(exog, 'index', None) + if callable(row_labels): + row_labels = None + + exog = np.asarray(exog) + if exog.ndim == 1 and (self.model.exog.ndim == 1 or + self.model.exog.shape[1] == 1): + exog = exog[:, None] + exog = np.atleast_2d(exog) # needed in count model shape[1] + else: + exog = self.model.exog + if weights is None: + weights = getattr(self.model, 'weights', None) + + if row_labels is None: + row_labels = getattr(self.model.data, 'row_labels', None) + + # need to handle other arrays, TODO: is delegating to model possible ? + if weights is not None: + weights = np.asarray(weights) + if (weights.size > 1 and + (weights.ndim != 1 or weights.shape[0] == exog.shape[1])): + raise ValueError('weights has wrong shape') + + ### end + + if pred_kwds is None: + pred_kwds = {} + predicted_mean = self.model.predict(self.params, exog, **pred_kwds) + + covb = self.cov_params() + var_pred_mean = (exog * np.dot(covb, exog.T).T).sum(1) + var_resid = self.scale # self.mse_resid / weights + + # TODO: check that we have correct scale, Refactor scale #??? + # special case for now: + if self.cov_type == 'fixed scale': + var_resid = self.cov_kwds['scale'] + + if weights is not None: + var_resid /= weights + + dist = ['norm', 't'][self.use_t] + return PredictionResults(predicted_mean, var_pred_mean, var_resid, + df=self.df_resid, dist=dist, + row_labels=row_labels) diff --git a/statsmodels/regression/_tools.py b/statsmodels/regression/_tools.py new file mode 100644 index 0000000..f1647fb --- /dev/null +++ b/statsmodels/regression/_tools.py @@ -0,0 +1,111 @@ +import numpy as np +from statsmodels.tools.tools import Bunch + + +class _MinimalWLS(object): + """ + Minimal implementation of WLS optimized for performance. + + Parameters + ---------- + endog : array-like + 1-d endogenous response variable. The dependent variable. + exog : array-like + A nobs x k array where `nobs` is the number of observations and `k` + is the number of regressors. An intercept is not included by default + and should be added by the user. See + :func:`statsmodels.tools.add_constant`. + weights : array-like, optional + 1d array of weights. If you supply 1/W then the variables are pre- + multiplied by 1/sqrt(W). If no weights are supplied the default value + is 1 and WLS reults are the same as OLS. + check_endog : bool, optional + Flag indicating whether to check for inf/nan in endog. + If True and any are found, ValueError is raised. + check_weights : bool, optional + Flag indicating whether to check for inf/nan in weights. + If True and any are found, ValueError is raised. + + Notes + ----- + Provides only resid, scale, fittedvalues, model.weights which are used by + methods that iteratively apply WLS. + + Does not perform any checks on the input data for type or shape + compatibility + """ + + msg = 'NaN, inf or invalid value detected in {0}, estimation infeasible.' + + def __init__(self, endog, exog, weights=1.0, check_endog=False, + check_weights=False): + self.endog = endog + self.exog = exog + self.weights = weights + w_half = np.sqrt(weights) + if check_weights: + if not np.all(np.isfinite(w_half)): + raise ValueError(self.msg.format('weights')) + + if check_endog: + if not np.all(np.isfinite(endog)): + raise ValueError(self.msg.format('endog')) + + self.wendog = w_half * endog + if np.isscalar(weights): + self.wexog = w_half * exog + else: + self.wexog = w_half[:, None] * exog + + def fit(self, method='pinv'): + """ + Minimal implementation of WLS optimized for performance. + + Parameters + ---------- + method : str, optional + Method to use to estimate parameters. "pinv", "qr" or "lstsq" + + * "pinv" uses the Moore-Penrose pseudoinverse + to solve the least squares problem. + * "qr" uses the QR factorization. + * "lstsq" uses the least squares implementation in numpy.linalg + + Returns + ------- + results : namedtuple + Named tuple containing the fewest terms needed to implement + iterative estimation in models. Currently + + * params : Estimated parameters + * fittedvalues : Fit values using original data + * resid : Residuals using original data + * model : namedtuple with one field, weights + * scale : scale computed using weighted residuals + + Notes + ----- + Does not perform and checks on the input data + + See Also + -------- + statsmodels.regression.linear_model.WLS + """ + if method == 'pinv': + pinv_wexog = np.linalg.pinv(self.wexog) + params = pinv_wexog.dot(self.wendog) + elif method == 'qr': + Q, R = np.linalg.qr(self.wexog) + params = np.linalg.solve(R, np.dot(Q.T, self.wendog)) + else: + params, _, _, _ = np.linalg.lstsq(self.wexog, self.wendog, + rcond=-1) + + fitted_values = self.exog.dot(params) + resid = self.endog - fitted_values + wresid = self.wendog - self.wexog.dot(params) + df_resid = self.wexog.shape[0] - self.wexog.shape[1] + scale = np.dot(wresid, wresid) / df_resid + + return Bunch(params=params, fittedvalues=fitted_values, resid=resid, + model=self, scale=scale) diff --git a/statsmodels/regression/dimred.py b/statsmodels/regression/dimred.py new file mode 100644 index 0000000..6d3a96b --- /dev/null +++ b/statsmodels/regression/dimred.py @@ -0,0 +1,258 @@ +import numpy as np +from statsmodels.base import model +import statsmodels.base.wrapper as wrap + + +class _DimReductionRegression(model.Model): + """ + A base class for dimension reduction regression methods. + """ + + def __init__(self, endog, exog, **kwargs): + super(_DimReductionRegression, self).__init__(endog, exog, **kwargs) + + def _prep(self, n_slice): + + # Sort the data by endog + ii = np.argsort(self.endog) + x = self.exog[ii, :] + + # Whiten the data + x -= x.mean(0) + covx = np.cov(x.T) + covxr = np.linalg.cholesky(covx) + x = np.linalg.solve(covxr, x.T).T + self.wexog = x + self._covxr = covxr + + # Split the data into slices + self._split_wexog = np.array_split(x, n_slice) + + +class SlicedInverseReg(_DimReductionRegression): + """ + Sliced Inverse Regression (SIR) + + Parameters + ---------- + endog : array-like (1d) + The dependent variable + exog : array-like (2d) + The covariates + + References + ---------- + KC Li (1991). Sliced inverse regression for dimension reduction. + JASA 86, 316-342. + """ + + def fit(self, **kwargs): + """ + Estimate the EDR space. + + Parameters + ---------- + slice_n : int, optional + Number of observations per slice + """ + + # Sample size per slice + slice_n = kwargs.get("slice_n", 20) + + # Number of slices + n_slice = self.exog.shape[0] // slice_n + + self._prep(n_slice) + + mn = [z.mean(0) for z in self._split_wexog] + n = [z.shape[0] for z in self._split_wexog] + mn = np.asarray(mn) + n = np.asarray(n) + mnc = np.cov(mn.T, fweights=n) + + a, b = np.linalg.eigh(mnc) + jj = np.argsort(-a) + a = a[jj] + b = b[:, jj] + params = np.linalg.solve(self._covxr.T, b) + + results = DimReductionResults(self, params, eigs=a) + return DimReductionResultsWrapper(results) + + +class PrincipalHessianDirections(_DimReductionRegression): + """ + Principal Hessian Directions + + Parameters + ---------- + endog : array-like (1d) + The dependent variable + exog : array-like (2d) + The covariates + + References + ---------- + KC Li (1992). On Principal Hessian Directions for Data + Visualization and Dimension Reduction: Another application + of Stein's lemma. JASA 87:420. + """ + + def fit(self, **kwargs): + """ + Estimate the EDR space using PHD. + + Parameters + ---------- + resid : bool, optional + If True, use least squares regression to remove the + linear relationship between each covariate and the + response, before conducting PHD. + """ + + resid = kwargs.get("resid", False) + + y = self.endog - self.endog.mean() + x = self.exog - self.exog.mean(0) + + if resid: + from statsmodels.regression.linear_model import OLS + r = OLS(y, x).fit() + y = r.resid + + cm = np.einsum('i,ij,ik->jk', y, x, x) + cm /= len(y) + + cx = np.cov(x.T) + cb = np.linalg.solve(cx, cm) + + a, b = np.linalg.eig(cb) + jj = np.argsort(-np.abs(a)) + a = a[jj] + params = b[:, jj] + + results = DimReductionResults(self, params, eigs=a) + return DimReductionResultsWrapper(results) + + +class SlicedAverageVarianceEstimation(_DimReductionRegression): + """ + Sliced Average Variance Estimation (SAVE) + + Parameters + ---------- + endog : array-like (1d) + The dependent variable + exog : array-like (2d) + The covariates + bc : bool, optional + If True, use the bias-correctedCSAVE method of Li and Zhu. + + References + ---------- + RD Cook. SAVE: A method for dimension reduction and graphics + in regression. + http://www.stat.umn.edu/RegGraph/RecentDev/save.pdf + + Y Li, L-X Zhu (2007). Asymptotics for sliced average + variance estimation. The Annals of Statistics. + https://arxiv.org/pdf/0708.0462.pdf + """ + + def __init__(self, endog, exog, **kwargs): + super(SAVE, self).__init__(endog, exog, **kwargs) + + self.bc = False + if "bc" in kwargs and kwargs["bc"] is True: + self.bc = True + + def fit(self, **kwargs): + """ + Estimate the EDR space. + + Parameters + ---------- + slice_n : int + Number of observations per slice + """ + + # Sample size per slice + slice_n = kwargs.get("slice_n", 50) + + # Number of slices + n_slice = self.exog.shape[0] // slice_n + + self._prep(n_slice) + + cv = [np.cov(z.T) for z in self._split_wexog] + ns = [z.shape[0] for z in self._split_wexog] + + p = self.wexog.shape[1] + + if not self.bc: + # Cook's original approach + vm = 0 + for w, cvx in zip(ns, cv): + icv = np.eye(p) - cvx + vm += w * np.dot(icv, icv) + vm /= len(cv) + else: + # The bias-corrected approach of Li and Zhu + + # \Lambda_n in Li, Zhu + av = 0 + for c in cv: + av += np.dot(c, c) + av /= len(cv) + + # V_n in Li, Zhu + vn = 0 + for x in self._split_wexog: + r = x - x.mean(0) + for i in range(r.shape[0]): + u = r[i, :] + m = np.outer(u, u) + vn += np.dot(m, m) + vn /= self.exog.shape[0] + + c = np.mean(ns) + k1 = c * (c - 1) / ((c - 1)**2 + 1) + k2 = (c - 1) / ((c - 1)**2 + 1) + av2 = k1 * av - k2 * vn + + vm = np.eye(p) - 2 * sum(cv) / len(cv) + av2 + + a, b = np.linalg.eigh(vm) + jj = np.argsort(-a) + a = a[jj] + b = b[:, jj] + params = np.linalg.solve(self._covxr.T, b) + + results = DimReductionResults(self, params, eigs=a) + return DimReductionResultsWrapper(results) + + +class DimReductionResults(model.Results): + """ + Results class for a dimension reduction regression. + """ + + def __init__(self, model, params, eigs): + super(DimReductionResults, self).__init__( + model, params) + self.eigs = eigs + + +class DimReductionResultsWrapper(wrap.ResultsWrapper): + _attrs = { + 'params': 'columns', + } + _wrap_attrs = _attrs + +wrap.populate_wrapper(DimReductionResultsWrapper, # noqa:E305 + DimReductionResults) + +# aliases for expert users +SIR = SlicedInverseReg +PHD = PrincipalHessianDirections +SAVE = SlicedAverageVarianceEstimation diff --git a/statsmodels/regression/feasible_gls.py b/statsmodels/regression/feasible_gls.py new file mode 100644 index 0000000..20a8fbc --- /dev/null +++ b/statsmodels/regression/feasible_gls.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +""" + +Created on Tue Dec 20 20:24:20 2011 + +Author: Josef Perktold +License: BSD-3 + +""" + +from statsmodels.compat.python import range +import numpy as np +from statsmodels.regression.linear_model import OLS, GLS, WLS + + +def atleast_2dcols(x): + x = np.asarray(x) + if x.ndim == 1: + x = x[:,None] + return x + + +class GLSHet2(GLS): + '''WLS with heteroscedasticity that depends on explanatory variables + + note: mixing GLS sigma and weights for heteroscedasticity might not make + sense + + I think rewriting following the pattern of GLSAR is better + stopping criteria: improve in GLSAR also, e.g. change in rho + + ''' + + + def __init__(self, endog, exog, exog_var, sigma=None): + self.exog_var = atleast_2dcols(exog_var) + super(self.__class__, self).__init__(endog, exog, sigma=sigma) + + + def fit(self, lambd=1.): + #maybe iterate + #preliminary estimate + res_gls = GLS(self.endog, self.exog, sigma=self.sigma).fit() + res_resid = OLS(res_gls.resid**2, self.exog_var).fit() + #or log-link + #res_resid = OLS(np.log(res_gls.resid**2), self.exog_var).fit() + #here I could use whiten and current instance instead of delegating + #but this is easier + #see pattern of GLSAR, calls self.initialize and self.fit + res_wls = WLS(self.endog, self.exog, weights=1./res_resid.fittedvalues).fit() + + res_wls._results.results_residual_regression = res_resid + return res_wls + + +class GLSHet(WLS): + """ + A regression model with an estimated heteroscedasticity. + + A subclass of WLS, that additionally estimates the weight matrix as a + function of additional explanatory variables. + + Parameters + ---------- + endog : array_like + exog : array_like + exog_var : array_like, 1d or 2d + regressors, explanatory variables for the variance + weights : array_like or None + If weights are given, then they are used in the first step estimation. + link : link function or None + If None, then the variance is assumed to be a linear combination of + the exog_var. If given, then ... not tested yet + + *extra attributes* + + history : dict + contains the parameter estimates in both regression for each iteration + + result instance has + + results_residual_regression : OLS result instance + result of heteroscedasticity estimation + + except for fit_iterative all methods are inherited from WLS. + + Notes + ----- + GLSHet is considered to be experimental. + + `fit` is just standard WLS fit for fixed weights + `fit_iterative` updates the estimate for weights, see its docstring + + The two alternative for handling heteroscedasticity in the data are to + use heteroscedasticity robust standard errors or estimating the + heteroscedasticity + Estimating heteroscedasticity and using weighted least squares produces + smaller confidence intervals for the estimated parameters then the + heteroscedasticity robust standard errors if the heteroscedasticity is + correctly specified. If the heteroscedasticity is incorrectly specified + then the estimated covariance is inconsistent. + + Stock and Watson for example argue in favor of using OLS with + heteroscedasticity robust standard errors instead of GLSHet sind we are + seldom sure enough about the correct specification (in economics). + + GLSHet has asymptotically the same distribution as WLS if the true + weights are know. In both cases the asymptotic distribution of the + parameter estimates is the normal distribution. + + The assumption of the model: + + y = X*beta + u, + with E(u) = 0, E(X*u)=0, var(u_i) = z_i*gamma + or for vector of all observations Sigma = diag(Z*gamma) + + where + y : endog (nobs) + X : exog (nobs, k_vars) + Z : exog_var (nobs, k_vars2) + beta, gamma estimated parameters + + If a link is specified, then the heteroscedasticity is + + var(u_i) = link.inverse(z_i*gamma), or + link(var(u_i)) = z_i*gamma + + for example for log-linkg + var(u_i) = exp(z_i*gamma) + + + Usage : see example .... + + TODO: test link option + + """ + def __init__(self, endog, exog, exog_var=None, weights=None, link=None): + self.exog_var = atleast_2dcols(exog_var) + if weights is None: + weights = np.ones(endog.shape) + if link is not None: + self.link = link + self.linkinv = link.inverse #as defined in families.links + else: + self.link = lambda x: x #no transformation + self.linkinv = lambda x: x + + super(self.__class__, self).__init__(endog, exog, weights=weights) + + def iterative_fit(self, maxiter=3): + """ + Perform an iterative two-step procedure to estimate a WLS model. + + The model is assumed to have heteroscedastic errors. + The variance is estimated by OLS regression of the link transformed + squared residuals on Z, i.e.:: + + link(sigma_i) = x_i*gamma. + + Parameters + ---------- + maxiter : integer, optional + the number of iterations + + Notes + ----- + maxiter=1: returns the estimated based on given weights + maxiter=2: performs a second estimation with the updated weights, + this is 2-step estimation + maxiter>2: iteratively estimate and update the weights + + TODO: possible extension stop iteration if change in parameter + estimates is smaller than x_tol + + Repeated calls to fit_iterative, will do one redundant pinv_wexog + calculation. Calling fit_iterative(maxiter) ones does not do any + redundant recalculations (whitening or calculating pinv_wexog). + + """ + + import collections + self.history = collections.defaultdict(list) #not really necessary + res_resid = None #if maxiter < 2 no updating + for i in range(maxiter): + #pinv_wexog is cached + if hasattr(self, 'pinv_wexog'): + del self.pinv_wexog + #self.initialize() + #print 'wls self', + results = self.fit() + self.history['self_params'].append(results.params) + if not i == maxiter-1: #skip for last iteration, could break instead + #print 'ols', + self.results_old = results #for debugging + #estimate heteroscedasticity + res_resid = OLS(self.link(results.resid**2), self.exog_var).fit() + self.history['ols_params'].append(res_resid.params) + #update weights + self.weights = 1./self.linkinv(res_resid.fittedvalues) + self.weights /= self.weights.max() #not required + self.weights[self.weights < 1e-14] = 1e-14 #clip + #print 'in iter', i, self.weights.var() #debug, do weights change + self.initialize() + + #note results is the wrapper, results._results is the results instance + results._results.results_residual_regression = res_resid + return results diff --git a/statsmodels/regression/linear_model.py b/statsmodels/regression/linear_model.py new file mode 100644 index 0000000..90c6b08 --- /dev/null +++ b/statsmodels/regression/linear_model.py @@ -0,0 +1,2915 @@ +# TODO: Determine which tests are valid for GLSAR, and under what conditions +# TODO: Fix issue with constant and GLS +# TODO: GLS: add options Iterative GLS, for iterative fgls if sigma is None +# TODO: GLS: default if sigma is none should be two-step GLS +# TODO: Check nesting when performing model based tests, lr, wald, lm +""" +This module implements standard regression models: + +Generalized Least Squares (GLS) +Ordinary Least Squares (OLS) +Weighted Least Squares (WLS) +Generalized Least Squares with autoregressive error terms GLSAR(p) + +Models are specified with an endogenous response variable and an +exogenous design matrix and are fit using their `fit` method. + +Subclasses that have more complicated covariance matrices +should write over the 'whiten' method as the fit method +prewhitens the response by calling 'whiten'. + +General reference for regression models: + +D. C. Montgomery and E.A. Peck. "Introduction to Linear Regression + Analysis." 2nd. Ed., Wiley, 1992. + +Econometrics references for regression models: + +R. Davidson and J.G. MacKinnon. "Econometric Theory and Methods," Oxford, + 2004. + +W. Green. "Econometric Analysis," 5th ed., Pearson, 2003. +""" + +from __future__ import print_function + +from statsmodels.compat.python import lrange, lzip, range + +import numpy as np +from scipy.linalg import toeplitz +from scipy import stats +from scipy import optimize + +from statsmodels.tools.tools import chain_dot, pinv_extended +from statsmodels.tools.decorators import (cache_readonly, + cache_writable) +import statsmodels.base.model as base +import statsmodels.base.wrapper as wrap +from statsmodels.emplike.elregress import _ELRegOpts +import warnings +from statsmodels.tools.sm_exceptions import InvalidTestWarning + +# need import in module instead of lazily to copy `__doc__` +from statsmodels.regression._prediction import PredictionResults +from . import _prediction as pred + +__docformat__ = 'restructuredtext en' + +__all__ = ['GLS', 'WLS', 'OLS', 'GLSAR', 'PredictionResults'] + + +_fit_regularized_doc =\ + r""" + Return a regularized fit to a linear regression model. + + Parameters + ---------- + method : string + 'elastic_net' and 'sqrt_lasso' are currently implemented. + alpha : scalar or array-like + The penalty weight. If a scalar, the same penalty weight + applies to all variables in the model. If a vector, it + must have the same length as `params`, and contains a + penalty weight for each coefficient. + L1_wt: scalar + The fraction of the penalty given to the L1 penalty term. + Must be between 0 and 1 (inclusive). If 0, the fit is a + ridge fit, if 1 it is a lasso fit. + start_params : array-like + Starting values for ``params``. + profile_scale : bool + If True the penalized fit is computed using the profile + (concentrated) log-likelihood for the Gaussian model. + Otherwise the fit uses the residual sum of squares. + refit : bool + If True, the model is refit using only the variables that + have non-zero coefficients in the regularized fit. The + refitted model is not regularized. + distributed : bool + If True, the model uses distributed methods for fitting, + will raise an error if True and partitions is None. + generator : function + generator used to partition the model, allows for handling + of out of memory/parallel computing. + partitions : scalar + The number of partitions desired for the distributed + estimation. + threshold : scalar or array-like + The threshold below which coefficients are zeroed out, + only used for distributed estimation + + Returns + ------- + A RegularizedResults instance. + + Notes + ----- + The elastic net uses a combination of L1 and L2 penalties. + The implementation closely follows the glmnet package in R. + + The function that is minimized is: + + .. math:: + + 0.5*RSS/n + alpha*((1-L1\_wt)*|params|_2^2/2 + L1\_wt*|params|_1) + + where RSS is the usual regression sum of squares, n is the + sample size, and :math:`|*|_1` and :math:`|*|_2` are the L1 and L2 + norms. + + For WLS and GLS, the RSS is calculated using the whitened endog and + exog data. + + Post-estimation results are based on the same data used to + select variables, hence may be subject to overfitting biases. + + The elastic_net method uses the following keyword arguments: + + maxiter : int + Maximum number of iterations + cnvrg_tol : float + Convergence threshold for line searches + zero_tol : float + Coefficients below this threshold are treated as zero. + + The square root lasso approach is a variation of the Lasso + that is largely self-tuning (the optimal tuning parameter + does not depend on the standard deviation of the regression + errors). If the errors are Gaussian, the tuning parameter + can be taken to be + + alpha = 1.1 * np.sqrt(n) * norm.ppf(1 - 0.05 / (2 * p)) + + where n is the sample size and p is the number of predictors. + + The square root lasso uses the following keyword arguments: + + zero_tol : float + Coefficients below this threshold are treated as zero. + + + References + ---------- + Friedman, Hastie, Tibshirani (2008). Regularization paths for + generalized linear models via coordinate descent. Journal of + Statistical Software 33(1), 1-22 Feb 2010. + + A Belloni, V Chernozhukov, L Wang (2011). Square-root Lasso: + pivotal recovery of sparse signals via conic programming. + Biometrika 98(4), 791-806. + https://arxiv.org/pdf/1009.5689.pdf + """ + + +def _get_sigma(sigma, nobs): + """ + Returns sigma (matrix, nobs by nobs) for GLS and the inverse of its + Cholesky decomposition. Handles dimensions and checks integrity. + If sigma is None, returns None, None. Otherwise returns sigma, + cholsigmainv. + """ + if sigma is None: + return None, None + sigma = np.asarray(sigma).squeeze() + if sigma.ndim == 0: + sigma = np.repeat(sigma, nobs) + if sigma.ndim == 1: + if sigma.shape != (nobs,): + raise ValueError("Sigma must be a scalar, 1d of length %s or a 2d " + "array of shape %s x %s" % (nobs, nobs, nobs)) + cholsigmainv = 1/np.sqrt(sigma) + else: + if sigma.shape != (nobs, nobs): + raise ValueError("Sigma must be a scalar, 1d of length %s or a 2d " + "array of shape %s x %s" % (nobs, nobs, nobs)) + cholsigmainv = np.linalg.cholesky(np.linalg.inv(sigma)).T + return sigma, cholsigmainv + + +class RegressionModel(base.LikelihoodModel): + """ + Base class for linear regression models. Should not be directly called. + + Intended for subclassing. + """ + def __init__(self, endog, exog, **kwargs): + super(RegressionModel, self).__init__(endog, exog, **kwargs) + self._data_attr.extend(['pinv_wexog', 'wendog', 'wexog', 'weights']) + + def initialize(self): + self.wexog = self.whiten(self.exog) + self.wendog = self.whiten(self.endog) + # overwrite nobs from class Model: + self.nobs = float(self.wexog.shape[0]) + + self._df_model = None + self._df_resid = None + self.rank = None + + @property + def df_model(self): + """ + The model degree of freedom, defined as the rank of the regressor + matrix minus 1 if a constant is included. + """ + if self._df_model is None: + if self.rank is None: + self.rank = np.linalg.matrix_rank(self.exog) + self._df_model = float(self.rank - self.k_constant) + return self._df_model + + @df_model.setter + def df_model(self, value): + self._df_model = value + + @property + def df_resid(self): + """ + The residual degree of freedom, defined as the number of observations + minus the rank of the regressor matrix. + """ + + if self._df_resid is None: + if self.rank is None: + self.rank = np.linalg.matrix_rank(self.exog) + self._df_resid = self.nobs - self.rank + return self._df_resid + + @df_resid.setter + def df_resid(self, value): + self._df_resid = value + + def whiten(self, X): + raise NotImplementedError("Subclasses should implement.") + + def fit(self, method="pinv", cov_type='nonrobust', cov_kwds=None, + use_t=None, **kwargs): + """ + Full fit of the model. + + The results include an estimate of covariance matrix, (whitened) + residuals and an estimate of scale. + + Parameters + ---------- + method : str, optional + Can be "pinv", "qr". "pinv" uses the Moore-Penrose pseudoinverse + to solve the least squares problem. "qr" uses the QR + factorization. + cov_type : str, optional + See `regression.linear_model.RegressionResults` for a description + of the available covariance estimators + cov_kwds : list or None, optional + See `linear_model.RegressionResults.get_robustcov_results` for a + description required keywords for alternative covariance estimators + use_t : bool, optional + Flag indicating to use the Student's t distribution when computing + p-values. Default behavior depends on cov_type. See + `linear_model.RegressionResults.get_robustcov_results` for + implementation details. + + Returns + ------- + A RegressionResults class instance. + + See Also + -------- + regression.linear_model.RegressionResults + regression.linear_model.RegressionResults.get_robustcov_results + + Notes + ----- + The fit method uses the pseudoinverse of the design/exogenous variables + to solve the least squares minimization. + """ + if method == "pinv": + if not (hasattr(self, 'pinv_wexog') and + hasattr(self, 'normalized_cov_params') and + hasattr(self, 'rank')): + + self.pinv_wexog, singular_values = pinv_extended(self.wexog) + self.normalized_cov_params = np.dot( + self.pinv_wexog, np.transpose(self.pinv_wexog)) + + # Cache these singular values for use later. + self.wexog_singular_values = singular_values + self.rank = np.linalg.matrix_rank(np.diag(singular_values)) + + beta = np.dot(self.pinv_wexog, self.wendog) + + elif method == "qr": + if not (hasattr(self, 'exog_Q') and + hasattr(self, 'exog_R') and + hasattr(self, 'normalized_cov_params') and + hasattr(self, 'rank')): + Q, R = np.linalg.qr(self.wexog) + self.exog_Q, self.exog_R = Q, R + self.normalized_cov_params = np.linalg.inv(np.dot(R.T, R)) + + # Cache singular values from R. + self.wexog_singular_values = np.linalg.svd(R, 0, 0) + self.rank = np.linalg.matrix_rank(R) + else: + Q, R = self.exog_Q, self.exog_R + + # used in ANOVA + self.effects = effects = np.dot(Q.T, self.wendog) + beta = np.linalg.solve(R, effects) + else: + raise ValueError('method has to be "pinv" or "qr"') + + if self._df_model is None: + self._df_model = float(self.rank - self.k_constant) + if self._df_resid is None: + self.df_resid = self.nobs - self.rank + + if isinstance(self, OLS): + lfit = OLSResults( + self, beta, + normalized_cov_params=self.normalized_cov_params, + cov_type=cov_type, cov_kwds=cov_kwds, use_t=use_t) + else: + lfit = RegressionResults( + self, beta, + normalized_cov_params=self.normalized_cov_params, + cov_type=cov_type, cov_kwds=cov_kwds, use_t=use_t, + **kwargs) + return RegressionResultsWrapper(lfit) + + def predict(self, params, exog=None): + """ + Return linear predicted values from a design matrix. + + Parameters + ---------- + params : array-like + Parameters of a linear model + exog : array-like, optional. + Design / exogenous data. Model exog is used if None. + + Returns + ------- + An array of fitted values + + Notes + ----- + If the model has not yet been fit, params is not optional. + """ + # JP: this doesn't look correct for GLMAR + # SS: it needs its own predict method + + if exog is None: + exog = self.exog + + return np.dot(exog, params) + + def get_distribution(self, params, scale, exog=None, dist_class=None): + """ + Returns a random number generator for the predictive distribution. + + Parameters + ---------- + params : array-like + The model parameters (regression coefficients). + scale : scalar + The variance parameter. + exog : array-like + The predictor variable matrix. + dist_class : class + A random number generator class. Must take 'loc' and 'scale' + as arguments and return a random number generator implementing + an ``rvs`` method for simulating random values. Defaults to Gaussian. + + Returns + ------- + gen + Frozen random number generator object with mean and variance + determined by the fitted linear model. Use the ``rvs`` method + to generate random values. + + Notes + ----- + Due to the behavior of ``scipy.stats.distributions objects``, + the returned random number generator must be called with + ``gen.rvs(n)`` where ``n`` is the number of observations in + the data set used to fit the model. If any other value is + used for ``n``, misleading results will be produced. + """ + fit = self.predict(params, exog) + if dist_class is None: + from scipy.stats.distributions import norm + dist_class = norm + gen = dist_class(loc=fit, scale=np.sqrt(scale)) + return gen + + +class GLS(RegressionModel): + __doc__ = r""" + Generalized least squares model with a general covariance structure. + + %(params)s + sigma : scalar or array + `sigma` is the weighting matrix of the covariance. + The default is None for no scaling. If `sigma` is a scalar, it is + assumed that `sigma` is an n x n diagonal matrix with the given + scalar, `sigma` as the value of each diagonal element. If `sigma` + is an n-length vector, then `sigma` is assumed to be a diagonal + matrix with the given `sigma` on the diagonal. This should be the + same as WLS. + %(extra_params)s + + Attributes + ---------- + pinv_wexog : array + `pinv_wexog` is the p x n Moore-Penrose pseudoinverse of `wexog`. + cholsimgainv : array + The transpose of the Cholesky decomposition of the pseudoinverse. + df_model : float + p - 1, where p is the number of regressors including the intercept. + of freedom. + df_resid : float + Number of observations n less the number of parameters p. + llf : float + The value of the likelihood function of the fitted model. + nobs : float + The number of observations n. + normalized_cov_params : array + p x p array :math:`(X^{T}\Sigma^{-1}X)^{-1}` + results : RegressionResults instance + A property that returns the RegressionResults class if fit. + sigma : array + `sigma` is the n x n covariance structure of the error terms. + wexog : array + Design matrix whitened by `cholsigmainv` + wendog : array + Response variable whitened by `cholsigmainv` + + Notes + ----- + If sigma is a function of the data making one of the regressors + a constant, then the current postestimation statistics will not be correct. + + + Examples + -------- + >>> import numpy as np + >>> import statsmodels.api as sm + >>> data = sm.datasets.longley.load(as_pandas=False) + >>> data.exog = sm.add_constant(data.exog) + >>> ols_resid = sm.OLS(data.endog, data.exog).fit().resid + >>> res_fit = sm.OLS(ols_resid[1:], ols_resid[:-1]).fit() + >>> rho = res_fit.params + + `rho` is a consistent estimator of the correlation of the residuals from + an OLS fit of the longley data. It is assumed that this is the true rho + of the AR process data. + + >>> from scipy.linalg import toeplitz + >>> order = toeplitz(np.arange(16)) + >>> sigma = rho**order + + `sigma` is an n x n matrix of the autocorrelation structure of the + data. + + >>> gls_model = sm.GLS(data.endog, data.exog, sigma=sigma) + >>> gls_results = gls_model.fit() + >>> print(gls_results.summary()) + + """ % {'params': base._model_params_doc, + 'extra_params': base._missing_param_doc + base._extra_param_doc} + + def __init__(self, endog, exog, sigma=None, missing='none', hasconst=None, + **kwargs): + # TODO: add options igls, for iterative fgls if sigma is None + # TODO: default if sigma is none should be two-step GLS + sigma, cholsigmainv = _get_sigma(sigma, len(endog)) + + super(GLS, self).__init__(endog, exog, missing=missing, + hasconst=hasconst, sigma=sigma, + cholsigmainv=cholsigmainv, **kwargs) + + # store attribute names for data arrays + self._data_attr.extend(['sigma', 'cholsigmainv']) + + def whiten(self, X): + """ + GLS whiten method. + + Parameters + ---------- + X : array-like + Data to be whitened. + + Returns + ------- + np.dot(cholsigmainv,X) + + See Also + -------- + regression.GLS + """ + X = np.asarray(X) + if self.sigma is None or self.sigma.shape == (): + return X + elif self.sigma.ndim == 1: + if X.ndim == 1: + return X * self.cholsigmainv + else: + return X * self.cholsigmainv[:, None] + else: + return np.dot(self.cholsigmainv, X) + + def loglike(self, params): + """ + Returns the value of the Gaussian log-likelihood function at params. + + Given the whitened design matrix, the log-likelihood is evaluated + at the parameter vector `params` for the dependent variable `endog`. + + Parameters + ---------- + params : array-like + The parameter estimates + + Returns + ------- + loglike : float + The value of the log-likelihood function for a GLS Model. + + + Notes + ----- + The log-likelihood function for the normal distribution is + + .. math:: -\\frac{n}{2}\\log\\left(\\left(Y-\\hat{Y}\\right)^{\\prime}\\left(Y-\\hat{Y}\\right)\\right)-\\frac{n}{2}\\left(1+\\log\\left(\\frac{2\\pi}{n}\\right)\\right)-\\frac{1}{2}\\log\\left(\\left|\\Sigma\\right|\\right) + + Y and Y-hat are whitened. + + """ + # TODO: combine this with OLS/WLS loglike and add _det_sigma argument + nobs2 = self.nobs / 2.0 + SSR = np.sum((self.wendog - np.dot(self.wexog, params))**2, axis=0) + llf = -np.log(SSR) * nobs2 # concentrated likelihood + llf -= (1+np.log(np.pi/nobs2))*nobs2 # with likelihood constant + if np.any(self.sigma): + # FIXME: robust-enough check? unneeded if _det_sigma gets defined + if self.sigma.ndim == 2: + det = np.linalg.slogdet(self.sigma) + llf -= .5*det[1] + else: + llf -= 0.5*np.sum(np.log(self.sigma)) + # with error covariance matrix + return llf + + def hessian_factor(self, params, scale=None, observed=True): + """Weights for calculating Hessian + + Parameters + ---------- + params : ndarray + parameter at which Hessian is evaluated + scale : None or float + If scale is None, then the default scale will be calculated. + Default scale is defined by `self.scaletype` and set in fit. + If scale is not None, then it is used as a fixed scale. + observed : bool + If True, then the observed Hessian is returned. If false then the + expected information matrix is returned. + + Returns + ------- + hessian_factor : ndarray, 1d + A 1d weight vector used in the calculation of the Hessian. + The hessian is obtained by `(exog.T * hessian_factor).dot(exog)` + """ + + if self.sigma is None or self.sigma.shape == (): + return np.ones(self.exog.shape[0]) + elif self.sigma.ndim == 1: + return self.cholsigmainv + else: + return np.diag(self.cholsigmainv) + + def fit_regularized(self, method="elastic_net", alpha=0., + L1_wt=1., start_params=None, profile_scale=False, + refit=False, **kwargs): + # Docstring attached below + + # Need to adjust since RSS/n term in elastic net uses nominal + # n in denominator + if self.sigma is not None: + alpha = alpha * np.sum(1 / np.diag(self.sigma)) / len(self.endog) + + rslt = OLS(self.wendog, self.wexog).fit_regularized( + method=method, alpha=alpha, + L1_wt=L1_wt, + start_params=start_params, + profile_scale=profile_scale, + refit=refit, **kwargs) + + from statsmodels.base.elastic_net import ( + RegularizedResults, RegularizedResultsWrapper) + rrslt = RegularizedResults(self, rslt.params) + return RegularizedResultsWrapper(rrslt) + + fit_regularized.__doc__ = _fit_regularized_doc + + +class WLS(RegressionModel): + __doc__ = """ + A regression model with diagonal but non-identity covariance structure. + + The weights are presumed to be (proportional to) the inverse of + the variance of the observations. That is, if the variables are + to be transformed by 1/sqrt(W) you must supply weights = 1/W. + + %(params)s + weights : array-like, optional + 1d array of weights. If you supply 1/W then the variables are + pre- multiplied by 1/sqrt(W). If no weights are supplied the + default value is 1 and WLS results are the same as OLS. + %(extra_params)s + + Attributes + ---------- + weights : array + The stored weights supplied as an argument. + + See Also + -------- + regression.GLS + + Examples + -------- + >>> import numpy as np + >>> import statsmodels.api as sm + >>> Y = [1,3,4,5,2,3,4] + >>> X = range(1,8) + >>> X = sm.add_constant(X) + >>> wls_model = sm.WLS(Y,X, weights=list(range(1,8))) + >>> results = wls_model.fit() + >>> results.params + array([ 2.91666667, 0.0952381 ]) + >>> results.tvalues + array([ 2.0652652 , 0.35684428]) + >>> print(results.t_test([1, 0])) + + >>> print(results.f_test([0, 1])) + + + Notes + ----- + If the weights are a function of the data, then the post estimation + statistics such as fvalue and mse_model might not be correct, as the + package does not yet support no-constant regression. + """ % {'params': base._model_params_doc, + 'extra_params': base._missing_param_doc + base._extra_param_doc} + + def __init__(self, endog, exog, weights=1., missing='none', hasconst=None, + **kwargs): + weights = np.array(weights) + if weights.shape == (): + if (missing == 'drop' and 'missing_idx' in kwargs and + kwargs['missing_idx'] is not None): + # patsy may have truncated endog + weights = np.repeat(weights, len(kwargs['missing_idx'])) + else: + weights = np.repeat(weights, len(endog)) + # handle case that endog might be of len == 1 + if len(weights) == 1: + weights = np.array([weights.squeeze()]) + else: + weights = weights.squeeze() + super(WLS, self).__init__(endog, exog, missing=missing, + weights=weights, hasconst=hasconst, **kwargs) + nobs = self.exog.shape[0] + weights = self.weights + # Experimental normalization of weights + weights = weights / np.sum(weights) * nobs + if weights.size != nobs and weights.shape[0] != nobs: + raise ValueError('Weights must be scalar or same length as design') + + def whiten(self, X): + """ + Whitener for WLS model, multiplies each column by sqrt(self.weights) + + Parameters + ---------- + X : array-like + Data to be whitened + + Returns + ------- + whitened : array-like + sqrt(weights)*X + """ + + X = np.asarray(X) + if X.ndim == 1: + return X * np.sqrt(self.weights) + elif X.ndim == 2: + return np.sqrt(self.weights)[:, None]*X + + def loglike(self, params): + """ + Returns the value of the gaussian log-likelihood function at params. + + Given the whitened design matrix, the log-likelihood is evaluated + at the parameter vector `params` for the dependent variable `Y`. + + Parameters + ---------- + params : array-like + The parameter estimates. + + Returns + ------- + llf : float + The value of the log-likelihood function for a WLS Model. + + Notes + -------- + .. math:: -\\frac{n}{2}\\log\\left(Y-\\hat{Y}\\right)-\\frac{n}{2}\\left(1+\\log\\left(\\frac{2\\pi}{n}\\right)\\right)-\\frac{1}{2}log\\left(\\left|W\\right|\\right) + + where :math:`W` is a diagonal matrix + """ + nobs2 = self.nobs / 2.0 + SSR = np.sum((self.wendog - np.dot(self.wexog, params))**2, axis=0) + llf = -np.log(SSR) * nobs2 # concentrated likelihood + llf -= (1+np.log(np.pi/nobs2))*nobs2 # with constant + llf += 0.5 * np.sum(np.log(self.weights)) + return llf + + def hessian_factor(self, params, scale=None, observed=True): + """Weights for calculating Hessian + + Parameters + ---------- + params : ndarray + parameter at which Hessian is evaluated + scale : None or float + If scale is None, then the default scale will be calculated. + Default scale is defined by `self.scaletype` and set in fit. + If scale is not None, then it is used as a fixed scale. + observed : bool + If True, then the observed Hessian is returned. If false then the + expected information matrix is returned. + + Returns + ------- + hessian_factor : ndarray, 1d + A 1d weight vector used in the calculation of the Hessian. + The hessian is obtained by `(exog.T * hessian_factor).dot(exog)` + """ + + return self.weights + + def fit_regularized(self, method="elastic_net", alpha=0., + L1_wt=1., start_params=None, profile_scale=False, + refit=False, **kwargs): + # Docstring attached below + + # Need to adjust since RSS/n in elastic net uses nominal n in + # denominator + alpha = alpha * np.sum(self.weights) / len(self.weights) + + rslt = OLS(self.wendog, self.wexog).fit_regularized( + method=method, alpha=alpha, + L1_wt=L1_wt, + start_params=start_params, + profile_scale=profile_scale, + refit=refit, **kwargs) + + from statsmodels.base.elastic_net import ( + RegularizedResults, RegularizedResultsWrapper) + rrslt = RegularizedResults(self, rslt.params) + return RegularizedResultsWrapper(rrslt) + + fit_regularized.__doc__ = _fit_regularized_doc + + +class OLS(WLS): + __doc__ = """ + A simple ordinary least squares model. + + %(params)s + %(extra_params)s + + Attributes + ---------- + weights : scalar + Has an attribute weights = array(1.0) due to inheritance from WLS. + + See Also + -------- + GLS + + Examples + -------- + >>> import numpy as np + >>> + >>> import statsmodels.api as sm + >>> + >>> Y = [1,3,4,5,2,3,4] + >>> X = range(1,8) + >>> X = sm.add_constant(X) + >>> + >>> model = sm.OLS(Y,X) + >>> results = model.fit() + >>> results.params + array([ 2.14285714, 0.25 ]) + >>> results.tvalues + array([ 1.87867287, 0.98019606]) + >>> print(results.t_test([1, 0])) + + >>> print(results.f_test(np.identity(2))) + + + Notes + ----- + No constant is added by the model unless you are using formulas. + """ % {'params': base._model_params_doc, + 'extra_params': base._missing_param_doc + base._extra_param_doc} + + # TODO: change example to use datasets. This was the point of datasets! + def __init__(self, endog, exog=None, missing='none', hasconst=None, + **kwargs): + super(OLS, self).__init__(endog, exog, missing=missing, + hasconst=hasconst, **kwargs) + if "weights" in self._init_keys: + self._init_keys.remove("weights") + + def loglike(self, params, scale=None): + """ + The likelihood function for the OLS model. + + Parameters + ---------- + params : array-like + The coefficients with which to estimate the log-likelihood. + scale : float or None + If None, return the profile (concentrated) log likelihood + (profiled over the scale parameter), else return the + log-likelihood using the given scale value. + + Returns + ------- + The likelihood function evaluated at params. + """ + nobs2 = self.nobs / 2.0 + nobs = float(self.nobs) + resid = self.endog - np.dot(self.exog, params) + if hasattr(self, 'offset'): + resid -= self.offset + ssr = np.sum(resid**2) + if scale is None: + # profile log likelihood + llf = -nobs2*np.log(2*np.pi) - nobs2*np.log(ssr / nobs) - nobs2 + else: + # log-likelihood + llf = -nobs2 * np.log(2 * np.pi * scale) - ssr / (2*scale) + return llf + + def whiten(self, Y): + """ + OLS model whitener does nothing: returns Y. + """ + return Y + + def score(self, params, scale=None): + """ + Evaluate the score function at a given point. + + The score corresponds to the profile (concentrated) + log-likelihood in which the scale parameter has been profiled + out. + + Parameters + ---------- + params : array-like + The parameter vector at which the score function is + computed. + scale : float or None + If None, return the profile (concentrated) log likelihood + (profiled over the scale parameter), else return the + log-likelihood using the given scale value. + + Returns + ------- + The score vector. + """ + + if not hasattr(self, "_wexog_xprod"): + self._setup_score_hess() + + xtxb = np.dot(self._wexog_xprod, params) + sdr = -self._wexog_x_wendog + xtxb + + if scale is None: + ssr = self._wendog_xprod - 2 * np.dot(self._wexog_x_wendog.T, + params) + ssr += np.dot(params, xtxb) + return -self.nobs * sdr / ssr + else: + return -sdr / scale + + def _setup_score_hess(self): + y = self.wendog + if hasattr(self, 'offset'): + y = y - self.offset + self._wendog_xprod = np.sum(y * y) + self._wexog_xprod = np.dot(self.wexog.T, self.wexog) + self._wexog_x_wendog = np.dot(self.wexog.T, y) + + def hessian(self, params, scale=None): + """ + Evaluate the Hessian function at a given point. + + Parameters + ---------- + params : array-like + The parameter vector at which the Hessian is computed. + scale : float or None + If None, return the profile (concentrated) log likelihood + (profiled over the scale parameter), else return the + log-likelihood using the given scale value. + + Returns + ------- + The Hessian matrix. + """ + + if not hasattr(self, "_wexog_xprod"): + self._setup_score_hess() + + xtxb = np.dot(self._wexog_xprod, params) + + if scale is None: + ssr = self._wendog_xprod - 2 * np.dot(self._wexog_x_wendog.T, + params) + ssr += np.dot(params, xtxb) + ssrp = -2*self._wexog_x_wendog + 2*xtxb + hm = self._wexog_xprod / ssr - np.outer(ssrp, ssrp) / ssr**2 + return -self.nobs * hm / 2 + else: + return -self._wexog_xprod / scale + + def hessian_factor(self, params, scale=None, observed=True): + """Weights for calculating Hessian + + Parameters + ---------- + params : ndarray + parameter at which Hessian is evaluated + scale : None or float + If scale is None, then the default scale will be calculated. + Default scale is defined by `self.scaletype` and set in fit. + If scale is not None, then it is used as a fixed scale. + observed : bool + If True, then the observed Hessian is returned. If false then the + expected information matrix is returned. + + Returns + ------- + hessian_factor : ndarray, 1d + A 1d weight vector used in the calculation of the Hessian. + The hessian is obtained by `(exog.T * hessian_factor).dot(exog)` + """ + + return np.ones(self.exog.shape[0]) + + def fit_regularized(self, method="elastic_net", alpha=0., + L1_wt=1., start_params=None, profile_scale=False, + refit=False, **kwargs): + # Docstring attached below + + # In the future we could add support for other penalties, e.g. SCAD. + if method not in ("elastic_net", "sqrt_lasso"): + msg = "Unknown method '%s' for fit_regularized" % method + raise ValueError(msg) + + # Set default parameters. + defaults = {"maxiter": 50, "cnvrg_tol": 1e-10, + "zero_tol": 1e-8} + defaults.update(kwargs) + + if method == "sqrt_lasso": + from statsmodels.base.elastic_net import ( + RegularizedResults, RegularizedResultsWrapper + ) + params = self._sqrt_lasso(alpha, refit, defaults["zero_tol"]) + results = RegularizedResults(self, params) + return RegularizedResultsWrapper(results) + + from statsmodels.base.elastic_net import fit_elasticnet + + if L1_wt == 0: + return self._fit_ridge(alpha) + + # If a scale parameter is passed in, the non-profile + # likelihood (residual sum of squares divided by -2) is used, + # otherwise the profile likelihood is used. + if profile_scale: + loglike_kwds = {} + score_kwds = {} + hess_kwds = {} + else: + loglike_kwds = {"scale": 1} + score_kwds = {"scale": 1} + hess_kwds = {"scale": 1} + + return fit_elasticnet(self, method=method, + alpha=alpha, + L1_wt=L1_wt, + start_params=start_params, + loglike_kwds=loglike_kwds, + score_kwds=score_kwds, + hess_kwds=hess_kwds, + refit=refit, + check_step=False, + **defaults) + + fit_regularized.__doc__ = _fit_regularized_doc + + def _sqrt_lasso(self, alpha, refit, zero_tol): + + try: + import cvxopt + except ImportError: + msg = "sqrt_lasso fitting requires the cvxopt module to be installed" + raise ValueError(msg) + + n = len(self.endog) + p = self.exog.shape[1] + + h0 = cvxopt.matrix(0., (2*p+1, 1)) + h1 = cvxopt.matrix(0., (n+1, 1)) + h1[1:, 0] = cvxopt.matrix(self.endog, (n, 1)) + + G0 = cvxopt.spmatrix([], [], [], (2*p+1, 2*p+1)) + for i in range(1, 2*p+1): + G0[i, i] = -1 + G1 = cvxopt.matrix(0., (n+1, 2*p+1)) + G1[0, 0] = -1 + G1[1:, 1:p+1] = self.exog + G1[1:, p+1:] = -self.exog + + c = cvxopt.matrix(alpha / n, (2*p + 1, 1)) + c[0] = 1 / np.sqrt(n) + + from cvxopt import solvers + solvers.options["show_progress"] = False + + rslt = solvers.socp(c, Gl=G0, hl=h0, Gq=[G1], hq=[h1]) + x = np.asarray(rslt['x']).flat + bp = x[1:p+1] + bn = x[p+1:] + params = bp - bn + + if not refit: + return params + + ii = np.flatnonzero(np.abs(params) > zero_tol) + rfr = OLS(self.endog, self.exog[:, ii]).fit() + params *= 0 + params[ii] = rfr.params + + return params + + def _fit_ridge(self, alpha): + """ + Fit a linear model using ridge regression. + + Parameters + ---------- + alpha : scalar or array-like + The penalty weight. If a scalar, the same penalty weight + applies to all variables in the model. If a vector, it + must have the same length as `params`, and contains a + penalty weight for each coefficient. + + Notes + ----- + Equivalent to fit_regularized with L1_wt = 0 (but implemented + more efficiently). + """ + + u, s, vt = np.linalg.svd(self.exog, 0) + v = vt.T + q = np.dot(u.T, self.endog) * s + s2 = s * s + if np.isscalar(alpha): + sd = s2 + alpha * self.nobs + params = q / sd + params = np.dot(v, params) + else: + vtav = self.nobs * np.dot(vt, alpha[:, None] * v) + d = np.diag(vtav) + s2 + np.fill_diagonal(vtav, d) + r = np.linalg.solve(vtav, q) + params = np.dot(v, r) + + from statsmodels.base.elastic_net import RegularizedResults + return RegularizedResults(self, params) + + +class GLSAR(GLS): + __doc__ = """ + A regression model with an AR(p) covariance structure. + + %(params)s + rho : int + Order of the autoregressive covariance + %(extra_params)s + + Examples + -------- + >>> import statsmodels.api as sm + >>> X = range(1,8) + >>> X = sm.add_constant(X) + >>> Y = [1,3,4,5,8,10,9] + >>> model = sm.GLSAR(Y, X, rho=2) + >>> for i in range(6): + ... results = model.fit() + ... print("AR coefficients: {0}".format(model.rho)) + ... rho, sigma = sm.regression.yule_walker(results.resid, + ... order=model.order) + ... model = sm.GLSAR(Y, X, rho) + ... + AR coefficients: [ 0. 0.] + AR coefficients: [-0.52571491 -0.84496178] + AR coefficients: [-0.6104153 -0.86656458] + AR coefficients: [-0.60439494 -0.857867 ] + AR coefficients: [-0.6048218 -0.85846157] + AR coefficients: [-0.60479146 -0.85841922] + >>> results.params + array([-0.66661205, 1.60850853]) + >>> results.tvalues + array([ -2.10304127, 21.8047269 ]) + >>> print(results.t_test([1, 0])) + + >>> print(results.f_test(np.identity(2))) + + + Or, equivalently + + >>> model2 = sm.GLSAR(Y, X, rho=2) + >>> res = model2.iterative_fit(maxiter=6) + >>> model2.rho + array([-0.60479146, -0.85841922]) + + Notes + ----- + GLSAR is considered to be experimental. + The linear autoregressive process of order p--AR(p)--is defined as: + TODO + """ % {'params': base._model_params_doc, + 'extra_params': base._missing_param_doc + base._extra_param_doc} + + def __init__(self, endog, exog=None, rho=1, missing='none', **kwargs): + # this looks strange, interpreting rho as order if it is int + if isinstance(rho, np.int): + self.order = rho + self.rho = np.zeros(self.order, np.float64) + else: + self.rho = np.squeeze(np.asarray(rho)) + if len(self.rho.shape) not in [0, 1]: + raise ValueError("AR parameters must be a scalar or a vector") + if self.rho.shape == (): + self.rho.shape = (1,) + self.order = self.rho.shape[0] + if exog is None: + # JP this looks wrong, should be a regression on constant + # results for rho estimate now identical to yule-walker on y + # super(AR, self).__init__(endog, add_constant(endog)) + super(GLSAR, self).__init__(endog, np.ones((endog.shape[0], 1)), + missing=missing, **kwargs) + else: + super(GLSAR, self).__init__(endog, exog, missing=missing, + **kwargs) + + def iterative_fit(self, maxiter=3, rtol=1e-4, **kwds): + """ + Perform an iterative two-stage procedure to estimate a GLS model. + + The model is assumed to have AR(p) errors, AR(p) parameters and + regression coefficients are estimated iteratively. + + Parameters + ---------- + maxiter : integer, optional + the number of iterations + rtol : float, optional + Relative tolerance between estimated coefficients to stop the + estimation. Stops if + + max(abs(last - current) / abs(last)) < rtol + + """ + # TODO: update this after going through example. + converged = False + i = -1 # need to initialize for maxiter < 1 (skip loop) + history = {'params': [], 'rho': [self.rho]} + for i in range(maxiter - 1): + if hasattr(self, 'pinv_wexog'): + del self.pinv_wexog + self.initialize() + results = self.fit() + history['params'].append(results.params) + if i == 0: + last = results.params + else: + diff = np.max(np.abs(last - results.params) / np.abs(last)) + if diff < rtol: + converged = True + break + last = results.params + self.rho, _ = yule_walker(results.resid, + order=self.order, df=None) + history['rho'].append(self.rho) + + # why not another call to self.initialize + # Use kwarg to insert history + if not converged and maxiter > 0: + # maxiter <= 0 just does OLS + if hasattr(self, 'pinv_wexog'): + del self.pinv_wexog + self.initialize() + + # if converged then this is a duplicate fit, because we didn't + # update rho + results = self.fit(history=history, **kwds) + results.iter = i + 1 + # add last fit to history, not if duplicate fit + if not converged: + results.history['params'].append(results.params) + results.iter += 1 + + results.converged = converged + + return results + + def whiten(self, X): + """ + Whiten a series of columns according to an AR(p) + covariance structure. This drops initial p observations. + + Parameters + ---------- + X : array-like + The data to be whitened, + + Returns + ------- + whitened array + + """ + # TODO: notation for AR process + X = np.asarray(X, np.float64) + _X = X.copy() + + # the following loops over the first axis, works for 1d and nd + for i in range(self.order): + _X[(i+1):] = _X[(i+1):] - self.rho[i] * X[0:-(i+1)] + return _X[self.order:] + + +def yule_walker(X, order=1, method="unbiased", df=None, inv=False, + demean=True): + """ + Estimate AR(p) parameters from a sequence X using Yule-Walker equation. + + Unbiased or maximum-likelihood estimator (mle) + + See, for example: + + http://en.wikipedia.org/wiki/Autoregressive_moving_average_model + + Parameters + ---------- + X : array-like + 1d array + order : integer, optional + The order of the autoregressive process. Default is 1. + method : string, optional + Method can be 'unbiased' or 'mle' and this determines + denominator in estimate of autocorrelation function (ACF) at + lag k. If 'mle', the denominator is n=X.shape[0], if 'unbiased' + the denominator is n-k. The default is unbiased. + df : integer, optional + Specifies the degrees of freedom. If `df` is supplied, then it + is assumed the X has `df` degrees of freedom rather than `n`. + Default is None. + inv : bool + If inv is True the inverse of R is also returned. Default is + False. + demean : bool + True, the mean is subtracted from `X` before estimation. + + Returns + ------- + rho + The autoregressive coefficients + sigma + TODO + + Examples + -------- + >>> import statsmodels.api as sm + >>> from statsmodels.datasets.sunspots import load + >>> data = load(as_pandas=False) + >>> rho, sigma = sm.regression.yule_walker(data.endog, + ... order=4, method="mle") + + >>> rho + array([ 1.28310031, -0.45240924, -0.20770299, 0.04794365]) + >>> sigma + 16.808022730464351 + + """ + # TODO: define R better, look back at notes and technical notes on YW. + # First link here is useful + # http://www-stat.wharton.upenn.edu/~steele/Courses/956/ResourceDetails/YuleWalkerAndMore.htm + method = str(method).lower() + if method not in ["unbiased", "mle"]: + raise ValueError("ACF estimation method must be 'unbiased' or 'MLE'") + X = np.array(X, dtype=np.float64) + if demean: + X -= X.mean() # automatically demean's X + n = df or X.shape[0] + + if method == "unbiased": # this is df_resid ie., n - p + denom = lambda k: n - k + else: + denom = lambda k: n + if X.ndim > 1 and X.shape[1] != 1: + raise ValueError("expecting a vector to estimate AR parameters") + r = np.zeros(order+1, np.float64) + r[0] = (X**2).sum() / denom(0) + for k in range(1, order+1): + r[k] = (X[0:-k] * X[k:]).sum() / denom(k) + R = toeplitz(r[:-1]) + + rho = np.linalg.solve(R, r[1:]) + sigmasq = r[0] - (r[1:]*rho).sum() + if inv: + return rho, np.sqrt(sigmasq), np.linalg.inv(R) + else: + return rho, np.sqrt(sigmasq) + + +def burg(endog, order=1, demean=True): + """ + Burg's AP(p) parameter estimator + + Parameters + ---------- + endog : array-like + The endogenous variable + order : int, optional + Order of the AR. Default is 1. + demean : bool, optional + Flag indicating to subtract the mean from endog before estimation + + Returns + ------- + rho : ndarray + AR(p) coefficients computed using Burg's algorithm + sigma2 : float + Estimate of the residual variance + + Notes + ----- + AR model estimated includes a constant estimated using the sample mean. + This value is not reported. + + References + ---------- + .. [1] Brockwell, P.J. and Davis, R.A., 2016. Introduction to time series + and forecasting. Springer. + """ + # Avoid circular imports + from statsmodels.tsa.stattools import levinson_durbin_pacf, pacf_burg + + endog = np.squeeze(np.asarray(endog)) + if endog.ndim != 1: + raise ValueError('endog must be 1-d or squeezable to 1-d.') + order = int(order) + if order < 1: + raise ValueError('order must be an integer larger than 1') + if demean: + endog = endog - endog.mean() + pacf, sigma = pacf_burg(endog, order, demean=demean) + ar, _ = levinson_durbin_pacf(pacf) + return ar, sigma[-1] + + +class RegressionResults(base.LikelihoodModelResults): + r""" + This class summarizes the fit of a linear regression model. + + It handles the output of contrasts, estimates of covariance, etc. + + Attributes + ---------- + pinv_wexog + See specific model class docstring + cov_HC0 + Heteroscedasticity robust covariance matrix. See HC0_se below. + cov_HC1 + Heteroscedasticity robust covariance matrix. See HC1_se below. + cov_HC2 + Heteroscedasticity robust covariance matrix. See HC2_se below. + cov_HC3 + Heteroscedasticity robust covariance matrix. See HC3_se below. + cov_type + Parameter covariance estimator used for standard errors and t-stats + df_model + Model degrees of freedom. The number of regressors `p`. Does not + include the constant if one is present + df_resid + Residual degrees of freedom. `n - p - 1`, if a constant is present. + `n - p` if a constant is not included. + het_scale + adjusted squared residuals for heteroscedasticity robust standard + errors. Is only available after `HC#_se` or `cov_HC#` is called. + See HC#_se for more information. + history + Estimation history for iterative estimators + HC0_se + White's (1980) heteroskedasticity robust standard errors. + Defined as sqrt(diag(X.T X)^(-1)X.T diag(e_i^(2)) X(X.T X)^(-1) + where e_i = resid[i] + HC0_se is a cached property. + When HC0_se or cov_HC0 is called the RegressionResults instance will + then have another attribute `het_scale`, which is in this case is just + resid**2. + HC1_se + MacKinnon and White's (1985) alternative heteroskedasticity robust + standard errors. + Defined as sqrt(diag(n/(n-p)*HC_0) + HC1_see is a cached property. + When HC1_se or cov_HC1 is called the RegressionResults instance will + then have another attribute `het_scale`, which is in this case is + n/(n-p)*resid**2. + HC2_se + MacKinnon and White's (1985) alternative heteroskedasticity robust + standard errors. + Defined as (X.T X)^(-1)X.T diag(e_i^(2)/(1-h_ii)) X(X.T X)^(-1) + where h_ii = x_i(X.T X)^(-1)x_i.T + HC2_see is a cached property. + When HC2_se or cov_HC2 is called the RegressionResults instance will + then have another attribute `het_scale`, which is in this case is + resid^(2)/(1-h_ii). + HC3_se + MacKinnon and White's (1985) alternative heteroskedasticity robust + standard errors. + Defined as (X.T X)^(-1)X.T diag(e_i^(2)/(1-h_ii)^(2)) X(X.T X)^(-1) + where h_ii = x_i(X.T X)^(-1)x_i.T + HC3_see is a cached property. + When HC3_se or cov_HC3 is called the RegressionResults instance will + then have another attribute `het_scale`, which is in this case is + resid^(2)/(1-h_ii)^(2). + model + A pointer to the model instance that called fit() or results. + params + The linear coefficients that minimize the least squares + criterion. This is usually called Beta for the classical + linear model. + resid_pearson + `wresid` normalized to have unit variance. + """ + + _cache = {} # needs to be a class attribute for scale setter? + + def __init__(self, model, params, normalized_cov_params=None, scale=1., + cov_type='nonrobust', cov_kwds=None, use_t=None, **kwargs): + super(RegressionResults, self).__init__( + model, params, normalized_cov_params, scale) + + self._cache = {} + if hasattr(model, 'wexog_singular_values'): + self._wexog_singular_values = model.wexog_singular_values + else: + self._wexog_singular_values = None + + self.df_model = model.df_model + self.df_resid = model.df_resid + + if cov_type == 'nonrobust': + self.cov_type = 'nonrobust' + self.cov_kwds = { + 'description': 'Standard Errors assume that the ' + + 'covariance matrix of the errors is correctly ' + + 'specified.'} + if use_t is None: + use_t = True # TODO: class default + self.use_t = use_t + else: + if cov_kwds is None: + cov_kwds = {} + if 'use_t' in cov_kwds: + # TODO: we want to get rid of 'use_t' in cov_kwds + use_t_2 = cov_kwds.pop('use_t') + if use_t is None: + use_t = use_t_2 + # TODO: warn or not? + self.get_robustcov_results(cov_type=cov_type, use_self=True, + use_t=use_t, **cov_kwds) + for key in kwargs: + setattr(self, key, kwargs[key]) + + def __str__(self): + self.summary() + + def conf_int(self, alpha=.05, cols=None): + """ + Returns the confidence interval of the fitted parameters. + + Parameters + ---------- + alpha : float, optional + The `alpha` level for the confidence interval. + ie., The default `alpha` = .05 returns a 95% confidence interval. + cols : array-like, optional + `cols` specifies which confidence intervals to return + + Notes + ----- + The confidence interval is based on Student's t-distribution. + """ + # keep method for docstring for now + ci = super(RegressionResults, self).conf_int(alpha=alpha, cols=cols) + return ci + + @cache_readonly + def nobs(self): + """Number of observations n.""" + return float(self.model.wexog.shape[0]) + + @cache_readonly + def fittedvalues(self): + """The predicted values for the original (unwhitened) design.""" + return self.model.predict(self.params, self.model.exog) + + @cache_readonly + def wresid(self): + """ + The residuals of the transformed/whitened regressand and regressor(s) + """ + return self.model.wendog - self.model.predict( + self.params, self.model.wexog) + + @cache_readonly + def resid(self): + """The residuals of the model.""" + return self.model.endog - self.model.predict( + self.params, self.model.exog) + + # TODO: fix writable example + @cache_writable() + def scale(self): + """ + A scale factor for the covariance matrix. Default value is + ssr/(n-p). Note that the square root of `scale` is often + called the standard error of the regression. + """ + wresid = self.wresid + return np.dot(wresid, wresid) / self.df_resid + + @cache_readonly + def ssr(self): + """Sum of squared (whitened) residuals.""" + wresid = self.wresid + return np.dot(wresid, wresid) + + @cache_readonly + def centered_tss(self): + """The total (weighted) sum of squares centered about the mean.""" + model = self.model + weights = getattr(model, 'weights', None) + sigma = getattr(model, 'sigma', None) + if weights is not None: + mean = np.average(model.endog, weights=weights) + return np.sum(weights * (model.endog - mean)**2) + elif sigma is not None: + # Exactly matches WLS when sigma is diagonal + iota = np.ones_like(model.endog) + iota = model.whiten(iota) + mean = model.wendog.dot(iota) / iota.dot(iota) + err = model.endog - mean + err = model.whiten(err) + return np.sum(err**2) + else: + centered_endog = model.wendog - model.wendog.mean() + return np.dot(centered_endog, centered_endog) + + @cache_readonly + def uncentered_tss(self): + """ + Uncentered sum of squares. Sum of the squared values of the + (whitened) endogenous response variable. + """ + wendog = self.model.wendog + return np.dot(wendog, wendog) + + @cache_readonly + def ess(self): + """Explained sum of squares. If a constant is present, the centered + total sum of squares minus the sum of squared residuals. If there is no + constant, the uncentered total sum of squares is used.""" + + if self.k_constant: + return self.centered_tss - self.ssr + else: + return self.uncentered_tss - self.ssr + + @cache_readonly + def rsquared(self): + """ + R-squared of a model with an intercept. This is defined here + as 1 - `ssr`/`centered_tss` if the constant is included in the + model and 1 - `ssr`/`uncentered_tss` if the constant is + omitted. + """ + if self.k_constant: + return 1 - self.ssr/self.centered_tss + else: + return 1 - self.ssr/self.uncentered_tss + + @cache_readonly + def rsquared_adj(self): + """ + Adjusted R-squared. This is defined here as 1 - + (`nobs`-1)/`df_resid` * (1-`rsquared`) if a constant is + included and 1 - `nobs`/`df_resid` * (1-`rsquared`) if no + constant is included. + """ + return 1 - (np.divide(self.nobs - self.k_constant, self.df_resid) + * (1 - self.rsquared)) + + @cache_readonly + def mse_model(self): + """ + Mean squared error the model. This is the explained sum of + squares divided by the model degrees of freedom. + """ + return self.ess/self.df_model + + @cache_readonly + def mse_resid(self): + """ + Mean squared error of the residuals. The sum of squared + residuals divided by the residual degrees of freedom. + """ + return self.ssr/self.df_resid + + @cache_readonly + def mse_total(self): + """ + Total mean squared error. Defined as the uncentered total sum + of squares divided by n the number of observations. + """ + if self.k_constant: + return self.centered_tss / (self.df_resid + self.df_model) + else: + return self.uncentered_tss / (self.df_resid + self.df_model) + + @cache_readonly + def fvalue(self): + """F-statistic of the fully specified model. Calculated as the mean + squared error of the model divided by the mean squared error of the + residuals.""" + if hasattr(self, 'cov_type') and self.cov_type != 'nonrobust': + # with heteroscedasticity or correlation robustness + k_params = self.normalized_cov_params.shape[0] + mat = np.eye(k_params) + const_idx = self.model.data.const_idx + # TODO: What if model includes implicit constant, e.g. all + # dummies but no constant regressor? + # TODO: Restats as LM test by projecting orthogonalizing + # to constant? + if self.model.data.k_constant == 1: + # if constant is implicit, return nan see #2444 + if const_idx is None: + return np.nan + + idx = lrange(k_params) + idx.pop(const_idx) + mat = mat[idx] # remove constant + if mat.size == 0: # see #3642 + return np.nan + ft = self.f_test(mat) + # using backdoor to set another attribute that we already have + self._cache['f_pvalue'] = ft.pvalue + return ft.fvalue + else: + # for standard homoscedastic case + return self.mse_model/self.mse_resid + + @cache_readonly + def f_pvalue(self): + """p-value of the F-statistic""" + return stats.f.sf(self.fvalue, self.df_model, self.df_resid) + + @cache_readonly + def bse(self): + """The standard errors of the parameter estimates.""" + return np.sqrt(np.diag(self.cov_params())) + + @cache_readonly + def aic(self): + r"""Akaike's information criteria. For a model with a constant + :math:`-2llf + 2(df\_model + 1)`. For a model without a constant + :math:`-2llf + 2(df\_model)`.""" + return -2 * self.llf + 2 * (self.df_model + self.k_constant) + + @cache_readonly + def bic(self): + r"""Bayes' information criteria. For a model with a constant + :math:`-2llf + \log(n)(df\_model+1)`. For a model without a constant + :math:`-2llf + \log(n)(df\_model)`""" + return (-2 * self.llf + np.log(self.nobs) * (self.df_model + + self.k_constant)) + + @cache_readonly + def eigenvals(self): + """ + Return eigenvalues sorted in decreasing order. + """ + if self._wexog_singular_values is not None: + eigvals = self._wexog_singular_values ** 2 + else: + eigvals = np.linalg.linalg.eigvalsh(np.dot(self.model.wexog.T, + self.model.wexog)) + return np.sort(eigvals)[::-1] + + @cache_readonly + def condition_number(self): + """ + Return condition number of exogenous matrix. + + Calculated as ratio of largest to smallest eigenvalue. + """ + eigvals = self.eigenvals + return np.sqrt(eigvals[0]/eigvals[-1]) + + # TODO: make these properties reset bse + def _HCCM(self, scale): + H = np.dot(self.model.pinv_wexog, + scale[:, None] * self.model.pinv_wexog.T) + return H + + @cache_readonly + def cov_HC0(self): + """ + See statsmodels.RegressionResults + """ + + self.het_scale = self.wresid**2 + cov_HC0 = self._HCCM(self.het_scale) + return cov_HC0 + + @cache_readonly + def cov_HC1(self): + """ + See statsmodels.RegressionResults + """ + + self.het_scale = self.nobs/(self.df_resid)*(self.wresid**2) + cov_HC1 = self._HCCM(self.het_scale) + return cov_HC1 + + @cache_readonly + def cov_HC2(self): + """ + See statsmodels.RegressionResults + """ + + # probably could be optimized + h = np.diag(chain_dot(self.model.wexog, + self.normalized_cov_params, + self.model.wexog.T)) + self.het_scale = self.wresid**2/(1-h) + cov_HC2 = self._HCCM(self.het_scale) + return cov_HC2 + + @cache_readonly + def cov_HC3(self): + """ + See statsmodels.RegressionResults + """ + h = np.diag(chain_dot( + self.model.wexog, self.normalized_cov_params, self.model.wexog.T)) + self.het_scale = (self.wresid / (1 - h))**2 + cov_HC3 = self._HCCM(self.het_scale) + return cov_HC3 + + @cache_readonly + def HC0_se(self): + """ + See statsmodels.RegressionResults + """ + return np.sqrt(np.diag(self.cov_HC0)) + + @cache_readonly + def HC1_se(self): + """ + See statsmodels.RegressionResults + """ + return np.sqrt(np.diag(self.cov_HC1)) + + @cache_readonly + def HC2_se(self): + """ + See statsmodels.RegressionResults + """ + return np.sqrt(np.diag(self.cov_HC2)) + + @cache_readonly + def HC3_se(self): + """ + See statsmodels.RegressionResults + """ + return np.sqrt(np.diag(self.cov_HC3)) + + @cache_readonly + def resid_pearson(self): + """ + Residuals, normalized to have unit variance. + + Returns + ------- + An array wresid standardized by the sqrt if scale + """ + + if not hasattr(self, 'resid'): + raise ValueError('Method requires residuals.') + eps = np.finfo(self.wresid.dtype).eps + if np.sqrt(self.scale) < 10 * eps * self.model.endog.mean(): + # don't divide if scale is zero close to numerical precision + from warnings import warn + warn("All residuals are 0, cannot compute normed residuals.", + RuntimeWarning) + return self.wresid + else: + return self.wresid / np.sqrt(self.scale) + + def _is_nested(self, restricted): + """ + Parameters + ---------- + restricted : Result instance + The restricted model is assumed to be nested in the current + model. The result instance of the restricted model is required to + have two attributes, residual sum of squares, `ssr`, residual + degrees of freedom, `df_resid`. + + Returns + ------- + nested : bool + True if nested, otherwise false + + Notes + ----- + A most nests another model if the regressors in the smaller + model are spanned by the regressors in the larger model and + the regressand is identical. + """ + + if self.model.nobs != restricted.model.nobs: + return False + + full_rank = self.model.rank + restricted_rank = restricted.model.rank + if full_rank <= restricted_rank: + return False + + restricted_exog = restricted.model.wexog + full_wresid = self.wresid + + scores = restricted_exog * full_wresid[:, None] + score_l2 = np.sqrt(np.mean(scores.mean(0) ** 2)) + # TODO: Could be improved, and may fail depending on scale of + # regressors + return np.allclose(score_l2, 0) + + def compare_lm_test(self, restricted, demean=True, use_lr=False): + """Use Lagrange Multiplier test to test whether restricted model is correct + + Parameters + ---------- + restricted : Result instance + The restricted model is assumed to be nested in the + current model. The result instance of the restricted model + is required to have two attributes, residual sum of + squares, `ssr`, residual degrees of freedom, `df_resid`. + + demean : bool + Flag indicating whether the demean the scores based on the + residuals from the restricted model. If True, the + covariance of the scores are used and the LM test is + identical to the large sample version of the LR test. + + Returns + ------- + lm_value : float + test statistic, chi2 distributed + p_value : float + p-value of the test statistic + df_diff : int + degrees of freedom of the restriction, i.e. difference in df + between models + + Notes + ----- + TODO: explain LM text + """ + import statsmodels.stats.sandwich_covariance as sw + from numpy.linalg import inv + + if not self._is_nested(restricted): + raise ValueError("Restricted model is not nested by full model.") + + wresid = restricted.wresid + wexog = self.model.wexog + scores = wexog * wresid[:, None] + + n = self.nobs + df_full = self.df_resid + df_restr = restricted.df_resid + df_diff = (df_restr - df_full) + + s = scores.mean(axis=0) + if use_lr: + scores = wexog * self.wresid[:, None] + demean = False + + if demean: + scores = scores - scores.mean(0)[None, :] + # Form matters here. If homoskedastics can be sigma^2 (X'X)^-1 + # If Heteroskedastic then the form below is fine + # If HAC then need to use HAC + # If Cluster, shoudl use cluster + + cov_type = getattr(self, 'cov_type', 'nonrobust') + if cov_type == 'nonrobust': + sigma2 = np.mean(wresid**2) + XpX = np.dot(wexog.T, wexog) / n + Sinv = inv(sigma2 * XpX) + elif cov_type in ('HC0', 'HC1', 'HC2', 'HC3'): + Sinv = inv(np.dot(scores.T, scores) / n) + elif cov_type == 'HAC': + maxlags = self.cov_kwds['maxlags'] + Sinv = inv(sw.S_hac_simple(scores, maxlags) / n) + elif cov_type == 'cluster': + # cluster robust standard errors + groups = self.cov_kwds['groups'] + # TODO: Might need demean option in S_crosssection by group? + Sinv = inv(sw.S_crosssection(scores, groups)) + else: + raise ValueError('Only nonrobust, HC, HAC and cluster are ' + + 'currently connected') + + lm_value = n * chain_dot(s, Sinv, s.T) + p_value = stats.chi2.sf(lm_value, df_diff) + return lm_value, p_value, df_diff + + def compare_f_test(self, restricted): + """use F test to test whether restricted model is correct + + Parameters + ---------- + restricted : Result instance + The restricted model is assumed to be nested in the + current model. The result instance of the restricted model + is required to have two attributes, residual sum of + squares, `ssr`, residual degrees of freedom, `df_resid`. + + Returns + ------- + f_value : float + test statistic, F distributed + p_value : float + p-value of the test statistic + df_diff : int + degrees of freedom of the restriction, i.e. difference in + df between models + + Notes + ----- + See mailing list discussion October 17, + + This test compares the residual sum of squares of the two + models. This is not a valid test, if there is unspecified + heteroscedasticity or correlation. This method will issue a + warning if this is detected but still return the results under + the assumption of homoscedasticity and no autocorrelation + (sphericity). + """ + + has_robust1 = getattr(self, 'cov_type', 'nonrobust') != 'nonrobust' + has_robust2 = (getattr(restricted, 'cov_type', 'nonrobust') != + 'nonrobust') + + if has_robust1 or has_robust2: + warnings.warn('F test for comparison is likely invalid with ' + + 'robust covariance, proceeding anyway', + InvalidTestWarning) + + ssr_full = self.ssr + ssr_restr = restricted.ssr + df_full = self.df_resid + df_restr = restricted.df_resid + + df_diff = (df_restr - df_full) + f_value = (ssr_restr - ssr_full) / df_diff / ssr_full * df_full + p_value = stats.f.sf(f_value, df_diff, df_full) + return f_value, p_value, df_diff + + def compare_lr_test(self, restricted, large_sample=False): + """ + Likelihood ratio test to test whether restricted model is correct + + Parameters + ---------- + restricted : Result instance + The restricted model is assumed to be nested in the current model. + The result instance of the restricted model is required to have two + attributes, residual sum of squares, `ssr`, residual degrees of + freedom, `df_resid`. + + large_sample : bool + Flag indicating whether to use a heteroskedasticity robust version + of the LR test, which is a modified LM test. + + Returns + ------- + lr_stat : float + likelihood ratio, chisquare distributed with df_diff degrees of + freedom + p_value : float + p-value of the test statistic + df_diff : int + degrees of freedom of the restriction, i.e. difference in df + between models + + Notes + ----- + + The exact likelihood ratio is valid for homoskedastic data, + and is defined as + + .. math:: D=-2\\log\\left(\\frac{\\mathcal{L}_{null}} + {\\mathcal{L}_{alternative}}\\right) + + where :math:`\\mathcal{L}` is the likelihood of the + model. With :math:`D` distributed as chisquare with df equal + to difference in number of parameters or equivalently + difference in residual degrees of freedom. + + The large sample version of the likelihood ratio is defined as + + .. math:: D=n s^{\\prime}S^{-1}s + + where :math:`s=n^{-1}\\sum_{i=1}^{n} s_{i}` + + .. math:: s_{i} = x_{i,alternative} \\epsilon_{i,null} + + is the average score of the model evaluated using the + residuals from null model and the regressors from the + alternative model and :math:`S` is the covariance of the + scores, :math:`s_{i}`. The covariance of the scores is + estimated using the same estimator as in the alternative + model. + + This test compares the loglikelihood of the two models. This + may not be a valid test, if there is unspecified + heteroscedasticity or correlation. This method will issue a + warning if this is detected but still return the results + without taking unspecified heteroscedasticity or correlation + into account. + + This test compares the loglikelihood of the two models. This + may not be a valid test, if there is unspecified + heteroscedasticity or correlation. This method will issue a + warning if this is detected but still return the results + without taking unspecified heteroscedasticity or correlation + into account. + + is the average score of the model evaluated using the + residuals from null model and the regressors from the + alternative model and :math:`S` is the covariance of the + scores, :math:`s_{i}`. The covariance of the scores is + estimated using the same estimator as in the alternative + model. + + TODO: put into separate function, needs tests + """ + + # See mailing list discussion October 17, + + if large_sample: + return self.compare_lm_test(restricted, use_lr=True) + + has_robust1 = (getattr(self, 'cov_type', 'nonrobust') != 'nonrobust') + has_robust2 = ( + getattr(restricted, 'cov_type', 'nonrobust') != 'nonrobust') + + if has_robust1 or has_robust2: + warnings.warn('Likelihood Ratio test is likely invalid with ' + + 'robust covariance, proceeding anyway', + InvalidTestWarning) + + llf_full = self.llf + llf_restr = restricted.llf + df_full = self.df_resid + df_restr = restricted.df_resid + + lrdf = (df_restr - df_full) + lrstat = -2*(llf_restr - llf_full) + lr_pvalue = stats.chi2.sf(lrstat, lrdf) + + return lrstat, lr_pvalue, lrdf + + def get_robustcov_results(self, cov_type='HC1', use_t=None, **kwds): + """create new results instance with robust covariance as default + + Parameters + ---------- + cov_type : string + the type of robust sandwich estimator to use. see Notes below + use_t : bool + If true, then the t distribution is used for inference. + If false, then the normal distribution is used. + If `use_t` is None, then an appropriate default is used, which is + `true` if the cov_type is nonrobust, and `false` in all other + cases. + kwds : depends on cov_type + Required or optional arguments for robust covariance calculation. + see Notes below + + Returns + ------- + results : results instance + This method creates a new results instance with the + requested robust covariance as the default covariance of + the parameters. Inferential statistics like p-values and + hypothesis tests will be based on this covariance matrix. + + Notes + ----- + The following covariance types and required or optional arguments are + currently available: + + - 'fixed scale' and optional keyword argument 'scale' which uses + a predefined scale estimate with default equal to one. + - 'HC0', 'HC1', 'HC2', 'HC3' and no keyword arguments: + heteroscedasticity robust covariance + - 'HAC' and keywords + + - `maxlag` integer (required) : number of lags to use + - `kernel` callable or str (optional) : kernel + currently available kernels are ['bartlett', 'uniform'], + default is Bartlett + - `use_correction` bool (optional) : If true, use small sample + correction + + - 'cluster' and required keyword `groups`, integer group indicator + + - `groups` array_like, integer (required) : + index of clusters or groups + - `use_correction` bool (optional) : + If True the sandwich covariance is calculated with a small + sample correction. + If False the sandwich covariance is calculated without + small sample correction. + - `df_correction` bool (optional) + If True (default), then the degrees of freedom for the + inferential statistics and hypothesis tests, such as + pvalues, f_pvalue, conf_int, and t_test and f_test, are + based on the number of groups minus one instead of the + total number of observations minus the number of explanatory + variables. `df_resid` of the results instance is adjusted. + If False, then `df_resid` of the results instance is not + adjusted. + + - 'hac-groupsum' Driscoll and Kraay, heteroscedasticity and + autocorrelation robust standard errors in panel data + keywords + + - `time` array_like (required) : index of time periods + - `maxlag` integer (required) : number of lags to use + - `kernel` callable or str (optional) : kernel + currently available kernels are ['bartlett', 'uniform'], + default is Bartlett + - `use_correction` False or string in ['hac', 'cluster'] (optional) : + If False the the sandwich covariance is calulated without + small sample correction. + If `use_correction = 'cluster'` (default), then the same + small sample correction as in the case of 'covtype='cluster'' + is used. + - `df_correction` bool (optional) + adjustment to df_resid, see cov_type 'cluster' above + # TODO: we need more options here + + - 'hac-panel' heteroscedasticity and autocorrelation robust standard + errors in panel data. + The data needs to be sorted in this case, the time series + for each panel unit or cluster need to be stacked. The + membership to a timeseries of an individual or group can + be either specified by group indicators or by increasing + time periods. + + keywords + + - either `groups` or `time` : array_like (required) + `groups` : indicator for groups + `time` : index of time periods + - `maxlag` integer (required) : number of lags to use + - `kernel` callable or str (optional) : kernel + currently available kernels are ['bartlett', 'uniform'], + default is Bartlett + - `use_correction` False or string in ['hac', 'cluster'] (optional) : + If False the sandwich covariance is calculated without + small sample correction. + - `df_correction` bool (optional) + adjustment to df_resid, see cov_type 'cluster' above + # TODO: we need more options here + + Reminder: + `use_correction` in "hac-groupsum" and "hac-panel" is not bool, + needs to be in [False, 'hac', 'cluster'] + + TODO: Currently there is no check for extra or misspelled keywords, + except in the case of cov_type `HCx` + """ + import statsmodels.stats.sandwich_covariance as sw + from statsmodels.base.covtype import normalize_cov_type, descriptions + + cov_type = normalize_cov_type(cov_type) + + if 'kernel' in kwds: + kwds['weights_func'] = kwds.pop('kernel') + if 'weights_func' in kwds and not callable(kwds['weights_func']): + kwds['weights_func'] = sw.kernel_dict[kwds['weights_func']] + + # TODO: make separate function that returns a robust cov plus info + use_self = kwds.pop('use_self', False) + if use_self: + res = self + else: + res = self.__class__( + self.model, self.params, + normalized_cov_params=self.normalized_cov_params, + scale=self.scale) + + res.cov_type = cov_type + # use_t might already be defined by the class, and already set + if use_t is None: + use_t = self.use_t + res.cov_kwds = {'use_t': use_t} # store for information + res.use_t = use_t + + adjust_df = False + if cov_type in ['cluster', 'hac-panel', 'hac-groupsum']: + df_correction = kwds.get('df_correction', None) + # TODO: check also use_correction, do I need all combinations? + if df_correction is not False: # i.e. in [None, True]: + # user didn't explicitely set it to False + adjust_df = True + + res.cov_kwds['adjust_df'] = adjust_df + + # verify and set kwds, and calculate cov + # TODO: this should be outsourced in a function so we can reuse it in + # other models + # TODO: make it DRYer repeated code for checking kwds + if cov_type in ['fixed scale', 'fixed_scale']: + res.cov_kwds['description'] = descriptions['fixed_scale'] + + res.cov_kwds['scale'] = scale = kwds.get('scale', 1.) + res.cov_params_default = scale * res.normalized_cov_params + elif cov_type.upper() in ('HC0', 'HC1', 'HC2', 'HC3'): + if kwds: + raise ValueError('heteroscedasticity robust covariance ' + 'does not use keywords') + res.cov_kwds['description'] = descriptions[cov_type.upper()] + # TODO cannot access cov without calling se first + getattr(self, cov_type.upper() + '_se') + res.cov_params_default = getattr(self, 'cov_' + cov_type.upper()) + elif cov_type.lower() == 'hac': + maxlags = kwds['maxlags'] # required?, default in cov_hac_simple + res.cov_kwds['maxlags'] = maxlags + weights_func = kwds.get('weights_func', sw.weights_bartlett) + res.cov_kwds['weights_func'] = weights_func + use_correction = kwds.get('use_correction', False) + res.cov_kwds['use_correction'] = use_correction + res.cov_kwds['description'] = descriptions['HAC'].format( + maxlags=maxlags, + correction=['without', 'with'][use_correction]) + + res.cov_params_default = sw.cov_hac_simple( + self, nlags=maxlags, weights_func=weights_func, + use_correction=use_correction) + elif cov_type.lower() == 'cluster': + # cluster robust standard errors, one- or two-way + groups = kwds['groups'] + if not hasattr(groups, 'shape'): + groups = np.asarray(groups).T + + if groups.ndim >= 2: + groups = groups.squeeze() + + res.cov_kwds['groups'] = groups + use_correction = kwds.get('use_correction', True) + res.cov_kwds['use_correction'] = use_correction + if groups.ndim == 1: + if adjust_df: + # need to find number of groups + # duplicate work + self.n_groups = n_groups = len(np.unique(groups)) + res.cov_params_default = sw.cov_cluster( + self, groups, use_correction=use_correction) + + elif groups.ndim == 2: + if hasattr(groups, 'values'): + groups = groups.values + + if adjust_df: + # need to find number of groups + # duplicate work + n_groups0 = len(np.unique(groups[:, 0])) + n_groups1 = len(np.unique(groups[:, 1])) + self.n_groups = (n_groups0, n_groups1) + n_groups = min(n_groups0, n_groups1) # use for adjust_df + + # Note: sw.cov_cluster_2groups has 3 returns + res.cov_params_default = sw.cov_cluster_2groups( + self, groups, use_correction=use_correction)[0] + else: + raise ValueError('only two groups are supported') + res.cov_kwds['description'] = descriptions['cluster'] + + elif cov_type.lower() == 'hac-panel': + # cluster robust standard errors + res.cov_kwds['time'] = time = kwds.get('time', None) + res.cov_kwds['groups'] = groups = kwds.get('groups', None) + # TODO: nlags is currently required + # nlags = kwds.get('nlags', True) + # res.cov_kwds['nlags'] = nlags + # TODO: `nlags` or `maxlags` + res.cov_kwds['maxlags'] = maxlags = kwds['maxlags'] + use_correction = kwds.get('use_correction', 'hac') + res.cov_kwds['use_correction'] = use_correction + weights_func = kwds.get('weights_func', sw.weights_bartlett) + res.cov_kwds['weights_func'] = weights_func + if groups is not None: + groups = np.asarray(groups) + tt = (np.nonzero(groups[:-1] != groups[1:])[0] + 1).tolist() + nobs_ = len(groups) + elif time is not None: + time = np.asarray(time) + # TODO: clumsy time index in cov_nw_panel + tt = (np.nonzero(time[1:] < time[:-1])[0] + 1).tolist() + nobs_ = len(time) + else: + raise ValueError('either time or groups needs to be given') + groupidx = lzip([0] + tt, tt + [nobs_]) + self.n_groups = n_groups = len(groupidx) + res.cov_params_default = sw.cov_nw_panel(self, maxlags, groupidx, + weights_func=weights_func, + use_correction=use_correction) + res.cov_kwds['description'] = descriptions['HAC-Panel'] + + elif cov_type.lower() == 'hac-groupsum': + # Driscoll-Kraay standard errors + res.cov_kwds['time'] = time = kwds['time'] + # TODO: nlags is currently required + # nlags = kwds.get('nlags', True) + # res.cov_kwds['nlags'] = nlags + # TODO: `nlags` or `maxlags` + res.cov_kwds['maxlags'] = maxlags = kwds['maxlags'] + use_correction = kwds.get('use_correction', 'cluster') + res.cov_kwds['use_correction'] = use_correction + weights_func = kwds.get('weights_func', sw.weights_bartlett) + res.cov_kwds['weights_func'] = weights_func + if adjust_df: + # need to find number of groups + tt = (np.nonzero(time[1:] < time[:-1])[0] + 1) + self.n_groups = n_groups = len(tt) + 1 + res.cov_params_default = sw.cov_nw_groupsum( + self, maxlags, time, weights_func=weights_func, + use_correction=use_correction) + res.cov_kwds['description'] = descriptions['HAC-Groupsum'] + else: + raise ValueError('cov_type not recognized. See docstring for ' + + 'available options and spelling') + + if adjust_df: + # Note: df_resid is used for scale and others, add new attribute + res.df_resid_inference = n_groups - 1 + + return res + + def get_prediction(self, exog=None, transform=True, weights=None, + row_labels=None, **kwds): + + return pred.get_prediction( + self, exog=exog, transform=transform, weights=weights, + row_labels=row_labels, **kwds) + + get_prediction.__doc__ = pred.get_prediction.__doc__ + + def summary(self, yname=None, xname=None, title=None, alpha=.05): + """Summarize the Regression Results + + Parameters + ---------- + yname : string, optional + Default is `y` + xname : list of strings, optional + Default is `var_##` for ## in p the number of regressors + title : string, optional + Title for the top table. If not None, then this replaces the + default title + alpha : float + significance level for the confidence intervals + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary.Summary : class to hold summary results + """ + from statsmodels.stats.stattools import ( + jarque_bera, omni_normtest, durbin_watson) + + jb, jbpv, skew, kurtosis = jarque_bera(self.wresid) + omni, omnipv = omni_normtest(self.wresid) + + eigvals = self.eigenvals + condno = self.condition_number + + # TODO: Avoid adding attributes in non-__init__ + self.diagn = dict(jb=jb, jbpv=jbpv, skew=skew, kurtosis=kurtosis, + omni=omni, omnipv=omnipv, condno=condno, + mineigval=eigvals[-1]) + + # TODO not used yet + # diagn_left_header = ['Models stats'] + # diagn_right_header = ['Residual stats'] + + # TODO: requiring list/iterable is a bit annoying + # need more control over formatting + # TODO: default don't work if it's not identically spelled + + top_left = [('Dep. Variable:', None), + ('Model:', None), + ('Method:', ['Least Squares']), + ('Date:', None), + ('Time:', None), + ('No. Observations:', None), + ('Df Residuals:', None), + ('Df Model:', None), + ] + + if hasattr(self, 'cov_type'): + top_left.append(('Covariance Type:', [self.cov_type])) + + rsquared_type = '' if self.k_constant else ' (uncentered)' + top_right = [('R-squared' + rsquared_type + ':', ["%#8.3f" % self.rsquared]), + ('Adj. R-squared' + rsquared_type + ':', ["%#8.3f" % self.rsquared_adj]), + ('F-statistic:', ["%#8.4g" % self.fvalue]), + ('Prob (F-statistic):', ["%#6.3g" % self.f_pvalue]), + ('Log-Likelihood:', None), + ('AIC:', ["%#8.4g" % self.aic]), + ('BIC:', ["%#8.4g" % self.bic]) + ] + + diagn_left = [('Omnibus:', ["%#6.3f" % omni]), + ('Prob(Omnibus):', ["%#6.3f" % omnipv]), + ('Skew:', ["%#6.3f" % skew]), + ('Kurtosis:', ["%#6.3f" % kurtosis]) + ] + + diagn_right = [('Durbin-Watson:', + ["%#8.3f" % durbin_watson(self.wresid)] + ), + ('Jarque-Bera (JB):', ["%#8.3f" % jb]), + ('Prob(JB):', ["%#8.3g" % jbpv]), + ('Cond. No.', ["%#8.3g" % condno]) + ] + + if title is None: + title = self.model.__class__.__name__ + ' ' + "Regression Results" + + # create summary table instance + from statsmodels.iolib.summary import Summary + smry = Summary() + smry.add_table_2cols(self, gleft=top_left, gright=top_right, + yname=yname, xname=xname, title=title) + smry.add_table_params(self, yname=yname, xname=xname, alpha=alpha, + use_t=self.use_t) + + smry.add_table_2cols(self, gleft=diagn_left, gright=diagn_right, + yname=yname, xname=xname, + title="") + + # add warnings/notes, added to text format only + etext = [] + if hasattr(self, 'cov_type'): + etext.append(self.cov_kwds['description']) + if self.model.exog.shape[0] < self.model.exog.shape[1]: + wstr = "The input rank is higher than the number of observations." + etext.append(wstr) + if eigvals[-1] < 1e-10: + wstr = "The smallest eigenvalue is %6.3g. This might indicate " + wstr += "that there are\n" + wstr += "strong multicollinearity problems or that the design " + wstr += "matrix is singular." + wstr = wstr % eigvals[-1] + etext.append(wstr) + elif condno > 1000: # TODO: what is recommended? + wstr = "The condition number is large, %6.3g. This might " + wstr += "indicate that there are\n" + wstr += "strong multicollinearity or other numerical " + wstr += "problems." + wstr = wstr % condno + etext.append(wstr) + + if etext: + etext = ["[{0}] {1}".format(i + 1, text) + for i, text in enumerate(etext)] + etext.insert(0, "Warnings:") + smry.add_extra_txt(etext) + + return smry + + def summary2(self, yname=None, xname=None, title=None, alpha=.05, + float_format="%.4f"): + """Experimental summary function to summarize the regression results + + Parameters + ---------- + xname : List of strings of length equal to the number of parameters + Names of the independent variables (optional) + yname : string + Name of the dependent variable (optional) + title : string, optional + Title for the top table. If not None, then this replaces the + default title + alpha : float + significance level for the confidence intervals + float_format: string + print format for floats in parameters summary + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary2.Summary : class to hold summary results + + """ + # Diagnostics + from statsmodels.stats.stattools import (jarque_bera, + omni_normtest, + durbin_watson) + + from collections import OrderedDict + jb, jbpv, skew, kurtosis = jarque_bera(self.wresid) + omni, omnipv = omni_normtest(self.wresid) + dw = durbin_watson(self.wresid) + eigvals = self.eigenvals + condno = self.condition_number + eigvals = np.sort(eigvals) # in increasing order + diagnostic = OrderedDict([ + ('Omnibus:', "%.3f" % omni), + ('Prob(Omnibus):', "%.3f" % omnipv), + ('Skew:', "%.3f" % skew), + ('Kurtosis:', "%.3f" % kurtosis), + ('Durbin-Watson:', "%.3f" % dw), + ('Jarque-Bera (JB):', "%.3f" % jb), + ('Prob(JB):', "%.3f" % jbpv), + ('Condition No.:', "%.0f" % condno) + ]) + + # Summary + from statsmodels.iolib import summary2 + smry = summary2.Summary() + smry.add_base(results=self, alpha=alpha, float_format=float_format, + xname=xname, yname=yname, title=title) + smry.add_dict(diagnostic) + + # Warnings + if eigvals[-1] < 1e-10: + warn = "The smallest eigenvalue is %6.3g. This might indicate that\ + there are strong multicollinearity problems or that the design\ + matrix is singular." % eigvals[-1] + smry.add_text(warn) + if condno > 1000: + warn = "* The condition number is large (%.g). This might indicate \ + strong multicollinearity or other numerical problems." % condno + smry.add_text(warn) + + return smry + + +class OLSResults(RegressionResults): + """ + Results class for for an OLS model. + + Most of the methods and attributes are inherited from RegressionResults. + The special methods that are only available for OLS are: + + - get_influence + - outlier_test + - el_test + - conf_int_el + + See Also + -------- + RegressionResults + + """ + + def get_influence(self): + """ + get an instance of Influence with influence and outlier measures + + Returns + ------- + infl : Influence instance + the instance has methods to calculate the main influence and + outlier measures for the OLS regression + + See Also + -------- + statsmodels.stats.outliers_influence.OLSInfluence + """ + from statsmodels.stats.outliers_influence import OLSInfluence + return OLSInfluence(self) + + def outlier_test(self, method='bonf', alpha=.05, labels=None, + order=False, cutoff=None): + """ + Test observations for outliers according to method + + Parameters + ---------- + method : str + + - `bonferroni` : one-step correction + - `sidak` : one-step correction + - `holm-sidak` : + - `holm` : + - `simes-hochberg` : + - `hommel` : + - `fdr_bh` : Benjamini/Hochberg + - `fdr_by` : Benjamini/Yekutieli + + See `statsmodels.stats.multitest.multipletests` for details. + alpha : float + familywise error rate + labels : None or array_like + If `labels` is not None, then it will be used as index to the + returned pandas DataFrame. See also Returns below + order : bool + Whether or not to order the results by the absolute value of the + studentized residuals. If labels are provided they will also be sorted. + cutoff : None or float in [0, 1] + If cutoff is not None, then the return only includes observations with + multiple testing corrected p-values strictly below the cutoff. The + returned array or dataframe can be empty if t + + Returns + ------- + table : ndarray or DataFrame + Returns either an ndarray or a DataFrame if labels is not None. + Will attempt to get labels from model_results if available. The + columns are the Studentized residuals, the unadjusted p-value, + and the corrected p-value according to method. + + Notes + ----- + The unadjusted p-value is stats.t.sf(abs(resid), df) where + df = df_resid - 1. + """ + from statsmodels.stats.outliers_influence import outlier_test + return outlier_test(self, method, alpha, labels=labels, + order=order, cutoff=cutoff) + + def el_test(self, b0_vals, param_nums, return_weights=0, + ret_params=0, method='nm', + stochastic_exog=1, return_params=0): + """ + Tests single or joint hypotheses of the regression parameters using + Empirical Likelihood. + + Parameters + ---------- + + b0_vals : 1darray + The hypothesized value of the parameter to be tested + + param_nums : 1darray + The parameter number to be tested + + print_weights : bool + If true, returns the weights that optimize the likelihood + ratio at b0_vals. Default is False + + ret_params : bool + If true, returns the parameter vector that maximizes the likelihood + ratio at b0_vals. Also returns the weights. Default is False + + method : string + Can either be 'nm' for Nelder-Mead or 'powell' for Powell. The + optimization method that optimizes over nuisance parameters. + Default is 'nm' + + stochastic_exog : bool + When TRUE, the exogenous variables are assumed to be stochastic. + When the regressors are nonstochastic, moment conditions are + placed on the exogenous variables. Confidence intervals for + stochastic regressors are at least as large as non-stochastic + regressors. Default = TRUE + + Returns + ------- + + res : tuple + The p-value and -2 times the log-likelihood ratio for the + hypothesized values. + + Examples + -------- + >>> import statsmodels.api as sm + >>> data = sm.datasets.stackloss.load(as_pandas=False) + >>> endog = data.endog + >>> exog = sm.add_constant(data.exog) + >>> model = sm.OLS(endog, exog) + >>> fitted = model.fit() + >>> fitted.params + >>> array([-39.91967442, 0.7156402 , 1.29528612, -0.15212252]) + >>> fitted.rsquared + >>> 0.91357690446068196 + >>> # Test that the slope on the first variable is 0 + >>> fitted.el_test([0], [1]) + >>> (27.248146353888796, 1.7894660442330235e-07) + """ + params = np.copy(self.params) + opt_fun_inst = _ELRegOpts() # to store weights + if len(param_nums) == len(params): + llr = opt_fun_inst._opt_nuis_regress( + [], + param_nums=param_nums, + endog=self.model.endog, + exog=self.model.exog, + nobs=self.model.nobs, + nvar=self.model.exog.shape[1], + params=params, + b0_vals=b0_vals, + stochastic_exog=stochastic_exog) + pval = 1 - stats.chi2.cdf(llr, len(param_nums)) + if return_weights: + return llr, pval, opt_fun_inst.new_weights + else: + return llr, pval + x0 = np.delete(params, param_nums) + args = (param_nums, self.model.endog, self.model.exog, + self.model.nobs, self.model.exog.shape[1], params, + b0_vals, stochastic_exog) + if method == 'nm': + llr = optimize.fmin(opt_fun_inst._opt_nuis_regress, x0, + maxfun=10000, maxiter=10000, full_output=1, + disp=0, args=args)[1] + if method == 'powell': + llr = optimize.fmin_powell(opt_fun_inst._opt_nuis_regress, x0, + full_output=1, disp=0, + args=args)[1] + + pval = 1 - stats.chi2.cdf(llr, len(param_nums)) + if ret_params: + return llr, pval, opt_fun_inst.new_weights, opt_fun_inst.new_params + elif return_weights: + return llr, pval, opt_fun_inst.new_weights + else: + return llr, pval + + def conf_int_el(self, param_num, sig=.05, upper_bound=None, + lower_bound=None, method='nm', stochastic_exog=1): + """ + Computes the confidence interval for the parameter given by param_num + using Empirical Likelihood + + Parameters + ---------- + + param_num : float + The parameter for which the confidence interval is desired + + sig : float + The significance level. Default is .05 + + upper_bound : float + The maximum value the upper limit can be. Default is the + 99.9% confidence value under OLS assumptions. + + lower_bound : float + The minimum value the lower limit can be. Default is the 99.9% + confidence value under OLS assumptions. + + method : string + Can either be 'nm' for Nelder-Mead or 'powell' for Powell. The + optimization method that optimizes over nuisance parameters. + Default is 'nm' + + Returns + ------- + + ci : tuple + The confidence interval + + See Also + -------- + + el_test + + Notes + ----- + + This function uses brentq to find the value of beta where + test_beta([beta], param_num)[1] is equal to the critical + value. + + The function returns the results of each iteration of brentq at + each value of beta. + + The current function value of the last printed optimization + should be the critical value at the desired significance level. + For alpha=.05, the value is 3.841459. + + To ensure optimization terminated successfully, it is suggested to + do el_test([lower_limit], [param_num]) + + If the optimization does not terminate successfully, consider switching + optimization algorithms. + + If optimization is still not successful, try changing the values of + start_int_params. If the current function value repeatedly jumps + from a number between 0 and the critical value and a very large number + (>50), the starting parameters of the interior minimization need + to be changed. + """ + r0 = stats.chi2.ppf(1 - sig, 1) + if upper_bound is None: + upper_bound = self.conf_int(.01)[param_num][1] + if lower_bound is None: + lower_bound = self.conf_int(.01)[param_num][0] + f = lambda b0: self.el_test(np.array([b0]), np.array([param_num]), + method=method, + stochastic_exog=stochastic_exog)[0]-r0 + lowerl = optimize.brenth(f, lower_bound, + self.params[param_num]) + upperl = optimize.brenth(f, self.params[param_num], + upper_bound) + # ^ Seems to be faster than brentq in most cases + return (lowerl, upperl) + + +class RegressionResultsWrapper(wrap.ResultsWrapper): + + _attrs = { + 'chisq': 'columns', + 'sresid': 'rows', + 'weights': 'rows', + 'wresid': 'rows', + 'bcov_unscaled': 'cov', + 'bcov_scaled': 'cov', + 'HC0_se': 'columns', + 'HC1_se': 'columns', + 'HC2_se': 'columns', + 'HC3_se': 'columns', + 'norm_resid': 'rows', + } + + _wrap_attrs = wrap.union_dicts(base.LikelihoodResultsWrapper._attrs, + _attrs) + + _methods = {} + + _wrap_methods = wrap.union_dicts( + base.LikelihoodResultsWrapper._wrap_methods, + _methods) + +wrap.populate_wrapper(RegressionResultsWrapper, + RegressionResults) diff --git a/statsmodels/regression/mixed_linear_model.py b/statsmodels/regression/mixed_linear_model.py new file mode 100644 index 0000000..7ed9daf --- /dev/null +++ b/statsmodels/regression/mixed_linear_model.py @@ -0,0 +1,2814 @@ +""" +Linear mixed effects models are regression models for dependent data. +They can be used to estimate regression relationships involving both +means and variances. + +These models are also known as multilevel linear models, and +hierarchical linear models. + +The MixedLM class fits linear mixed effects models to data, and +provides support for some common post-estimation tasks. This is a +group-based implementation that is most efficient for models in which +the data can be partitioned into independent groups. Some models with +crossed effects can be handled by specifying a model with a single +group. + +The data are partitioned into disjoint groups. The probability model +for group i is: + +Y = X*beta + Z*gamma + epsilon + +where + +* n_i is the number of observations in group i + +* Y is a n_i dimensional response vector (called endog in MixedLM) + +* X is a n_i x k_fe dimensional design matrix for the fixed effects + (called exog in MixedLM) + +* beta is a k_fe-dimensional vector of fixed effects parameters + (called fe_params in MixedLM) + +* Z is a design matrix for the random effects with n_i rows (called + exog_re in MixedLM). The number of columns in Z can vary by group + as discussed below. + +* gamma is a random vector with mean 0. The covariance matrix for the + first `k_re` elements of `gamma` (called cov_re in MixedLM) is + common to all groups. The remaining elements of `gamma` are + variance components as discussed in more detail below. Each group + receives its own independent realization of gamma. + +* epsilon is a n_i dimensional vector of iid normal + errors with mean 0 and variance sigma^2; the epsilon + values are independent both within and between groups + +Y, X and Z must be entirely observed. beta, Psi, and sigma^2 are +estimated using ML or REML estimation, and gamma and epsilon are +random so define the probability model. + +The marginal mean structure is E[Y | X, Z] = X*beta. If only the mean +structure is of interest, GEE is an alternative to using linear mixed +models. + +Two types of random effects are supported. Standard random effects +are correlated with each other in arbitrary ways. Every group has the +same number (`k_re`) of standard random effects, with the same joint +distribution (but with independent realizations across the groups). + +Variance components are uncorrelated with each other, and with the +standard random effects. Each variance component has mean zero, and +all realizations of a given variance component have the same variance +parameter. The number of realized variance components per variance +parameter can differ across the groups. + +The primary reference for the implementation details is: + +MJ Lindstrom, DM Bates (1988). "Newton Raphson and EM algorithms for +linear mixed effects models for repeated measures data". Journal of +the American Statistical Association. Volume 83, Issue 404, pages +1014-1022. + +See also this more recent document: + +http://econ.ucsb.edu/~doug/245a/Papers/Mixed%20Effects%20Implement.pdf + +All the likelihood, gradient, and Hessian calculations closely follow +Lindstrom and Bates 1988, adapted to support variance components. + +The following two documents are written more from the perspective of +users: + +http://lme4.r-forge.r-project.org/lMMwR/lrgprt.pdf + +http://lme4.r-forge.r-project.org/slides/2009-07-07-Rennes/3Longitudinal-4.pdf + +Notation: + +* `cov_re` is the random effects covariance matrix (referred to above + as Psi) and `scale` is the (scalar) error variance. For a single + group, the marginal covariance matrix of endog given exog is scale*I + + Z * cov_re * Z', where Z is the design matrix for the random + effects in one group. + +* `vcomp` is a vector of variance parameters. The length of `vcomp` + is determined by the number of keys in either the `exog_vc` argument + to ``MixedLM``, or the `vc_formula` argument when using formulas to + fit a model. + +Notes: + +1. Three different parameterizations are used in different places. +The regression slopes (usually called `fe_params`) are identical in +all three parameterizations, but the variance parameters differ. The +parameterizations are: + +* The "user parameterization" in which cov(endog) = scale*I + Z * + cov_re * Z', as described above. This is the main parameterization + visible to the user. + +* The "profile parameterization" in which cov(endog) = I + + Z * cov_re1 * Z'. This is the parameterization of the profile + likelihood that is maximized to produce parameter estimates. + (see Lindstrom and Bates for details). The "user" cov_re is + equal to the "profile" cov_re1 times the scale. + +* The "square root parameterization" in which we work with the Cholesky + factor of cov_re1 instead of cov_re directly. This is hidden from the + user. + +All three parameterizations can be packed into a vector by +(optionally) concatenating `fe_params` together with the lower +triangle or Cholesky square root of the dependence structure, followed +by the variance parameters for the variance components. The are +stored as square roots if (and only if) the random effects covariance +matrix is stored as its Choleky factor. Note that when unpacking, it +is important to either square or reflect the dependence structure +depending on which parameterization is being used. + +Two score methods are implemented. One takes the score with respect +to the elements of the random effects covariance matrix (used for +inference once the MLE is reached), and the other takes the score with +respect to the parameters of the Choleky square root of the random +effects covariance matrix (used for optimization). + +The numerical optimization uses GLS to avoid explicitly optimizing +over the fixed effects parameters. The likelihood that is optimized +is profiled over both the scale parameter (a scalar) and the fixed +effects parameters (if any). As a result of this profiling, it is +difficult and unnecessary to calculate the Hessian of the profiled log +likelihood function, so that calculation is not implemented here. +Therefore, optimization methods requiring the Hessian matrix such as +the Newton-Raphson algorithm cannot be used for model fitting. +""" + +import numpy as np +import statsmodels.base.model as base +from statsmodels.tools.decorators import cache_readonly +from statsmodels.tools import data as data_tools +from scipy.stats.distributions import norm +from scipy import sparse +import pandas as pd +import patsy +from collections import OrderedDict +from statsmodels.compat.python import string_types +from statsmodels.compat import range +import warnings +from statsmodels.tools.sm_exceptions import ConvergenceWarning +from statsmodels.base._penalties import Penalty + + +def _dot(x, y): + """ + Returns the dot product of the arrays, works for sparse and dense. + """ + + if isinstance(x, np.ndarray) and isinstance(y, np.ndarray): + return np.dot(x, y) + elif sparse.issparse(x): + return x.dot(y) + elif sparse.issparse(y): + return y.T.dot(x.T).T + + +# From numpy, adapted to work with sparse and dense arrays. +def _multi_dot_three(A, B, C): + """ + Find best ordering for three arrays and do the multiplication. + + Doing in manually instead of using dynamic programing is + approximately 15 times faster. + """ + # cost1 = cost((AB)C) + cost1 = (A.shape[0] * A.shape[1] * B.shape[1] + # (AB) + A.shape[0] * B.shape[1] * C.shape[1]) # (--)C + # cost2 = cost((AB)C) + cost2 = (B.shape[0] * B.shape[1] * C.shape[1] + # (BC) + A.shape[0] * A.shape[1] * C.shape[1]) # A(--) + + if cost1 < cost2: + return _dot(_dot(A, B), C) + else: + return _dot(A, _dot(B, C)) + + +def _dotsum(x, y): + """ + Returns sum(x * y), where '*' is the pointwise product, computed + efficiently for dense and sparse matrices. + """ + + if sparse.issparse(x): + return x.multiply(y).sum() + else: + # This way usually avoids allocating a temporary. + return np.dot(x.ravel(), y.ravel()) + + +def _get_exog_re_names(self, exog_re): + """ + Passes through if given a list of names. Otherwise, gets pandas names + or creates some generic variable names as needed. + """ + if self.k_re == 0: + return [] + if isinstance(exog_re, pd.DataFrame): + return exog_re.columns.tolist() + elif isinstance(exog_re, pd.Series) and exog_re.name is not None: + return [exog_re.name] + elif isinstance(exog_re, list): + return exog_re + + # Default names + defnames = ["x_re{0:1d}".format(k + 1) for k in range(exog_re.shape[1])] + return defnames + + +class MixedLMParams(object): + """ + This class represents a parameter state for a mixed linear model. + + Parameters + ---------- + k_fe : integer + The number of covariates with fixed effects. + k_re : integer + The number of covariates with random coefficients (excluding + variance components). + k_vc : integer + The number of variance components parameters. + + Notes + ----- + This object represents the parameter state for the model in which + the scale parameter has been profiled out. + """ + + def __init__(self, k_fe, k_re, k_vc): + + self.k_fe = k_fe + self.k_re = k_re + self.k_re2 = k_re * (k_re + 1) // 2 + self.k_vc = k_vc + self.k_tot = self.k_fe + self.k_re2 + self.k_vc + self._ix = np.tril_indices(self.k_re) + + def from_packed(params, k_fe, k_re, use_sqrt, has_fe): + """ + Create a MixedLMParams object from packed parameter vector. + + Parameters + ---------- + params : array-like + The mode parameters packed into a single vector. + k_fe : integer + The number of covariates with fixed effects + k_re : integer + The number of covariates with random effects (excluding + variance components). + use_sqrt : boolean + If True, the random effects covariance matrix is provided + as its Cholesky factor, otherwise the lower triangle of + the covariance matrix is stored. + has_fe : boolean + If True, `params` contains fixed effects parameters. + Otherwise, the fixed effects parameters are set to zero. + + Returns + ------- + A MixedLMParams object. + """ + k_re2 = int(k_re * (k_re + 1) / 2) + + # The number of covariance parameters. + if has_fe: + k_vc = len(params) - k_fe - k_re2 + else: + k_vc = len(params) - k_re2 + + pa = MixedLMParams(k_fe, k_re, k_vc) + + cov_re = np.zeros((k_re, k_re)) + ix = pa._ix + if has_fe: + pa.fe_params = params[0:k_fe] + cov_re[ix] = params[k_fe:k_fe+k_re2] + else: + pa.fe_params = np.zeros(k_fe) + cov_re[ix] = params[0:k_re2] + + if use_sqrt: + cov_re = np.dot(cov_re, cov_re.T) + else: + cov_re = (cov_re + cov_re.T) - np.diag(np.diag(cov_re)) + + pa.cov_re = cov_re + if k_vc > 0: + if use_sqrt: + pa.vcomp = params[-k_vc:]**2 + else: + pa.vcomp = params[-k_vc:] + else: + pa.vcomp = np.array([]) + + return pa + + from_packed = staticmethod(from_packed) + + def from_components(fe_params=None, cov_re=None, cov_re_sqrt=None, + vcomp=None): + """ + Create a MixedLMParams object from each parameter component. + + Parameters + ---------- + fe_params : array-like + The fixed effects parameter (a 1-dimensional array). If + None, there are no fixed effects. + cov_re : array-like + The random effects covariance matrix (a square, symmetric + 2-dimensional array). + cov_re_sqrt : array-like + The Cholesky (lower triangular) square root of the random + effects covariance matrix. + vcomp : array-like + The variance component parameters. If None, there are no + variance components. + + Returns + ------- + A MixedLMParams object. + """ + + if vcomp is None: + vcomp = np.empty(0) + if fe_params is None: + fe_params = np.empty(0) + if cov_re is None and cov_re_sqrt is None: + cov_re = np.empty((0, 0)) + + k_fe = len(fe_params) + k_vc = len(vcomp) + k_re = cov_re.shape[0] if cov_re is not None else cov_re_sqrt.shape[0] + + pa = MixedLMParams(k_fe, k_re, k_vc) + pa.fe_params = fe_params + if cov_re_sqrt is not None: + pa.cov_re = np.dot(cov_re_sqrt, cov_re_sqrt.T) + elif cov_re is not None: + pa.cov_re = cov_re + + pa.vcomp = vcomp + + return pa + + from_components = staticmethod(from_components) + + def copy(self): + """ + Returns a copy of the object. + """ + obj = MixedLMParams(self.k_fe, self.k_re, self.k_vc) + obj.fe_params = self.fe_params.copy() + obj.cov_re = self.cov_re.copy() + obj.vcomp = self.vcomp.copy() + return obj + + def get_packed(self, use_sqrt, has_fe=False): + """ + Return the model parameters packed into a single vector. + + Parameters + ---------- + use_sqrt : bool + If True, the Cholesky square root of `cov_re` is + included in the packed result. Otherwise the + lower triangle of `cov_re` is included. + has_fe : bool + If True, the fixed effects parameters are included + in the packed result, otherwise they are omitted. + """ + + if self.k_re > 0: + if use_sqrt: + L = np.linalg.cholesky(self.cov_re) + cpa = L[self._ix] + else: + cpa = self.cov_re[self._ix] + else: + cpa = np.zeros(0) + + if use_sqrt: + vcomp = np.sqrt(self.vcomp) + else: + vcomp = self.vcomp + + if has_fe: + pa = np.concatenate((self.fe_params, cpa, vcomp)) + else: + pa = np.concatenate((cpa, vcomp)) + + return pa + + +def _smw_solver(s, A, AtA, Qi, di): + r""" + Returns a solver for the linear system: + + .. math:: + + (sI + ABA^\prime) y = x + + The returned function f satisfies f(x) = y as defined above. + + B and its inverse matrix are block diagonal. The upper left block + of :math:`B^{-1}` is Qi and its lower right block is diag(di). + + Parameters + ---------- + s : scalar + See above for usage + A : ndarray + p x q matrix, in general q << p, may be sparse. + AtA : square ndarray + :math:`A^\prime A`, a q x q matrix. + Qi : square symmetric ndarray + The matrix `B` is q x q, where q = r + d. `B` consists of a r + x r diagonal block whose inverse is `Qi`, and a d x d diagonal + block, whose inverse is diag(di). + di : 1d array-like + See documentation for Qi. + + Returns + ------- + A function for solving a linear system, as documented above. + + Notes + ----- + Uses Sherman-Morrison-Woodbury identity: + https://en.wikipedia.org/wiki/Woodbury_matrix_identity + """ + + # Use SMW identity + qmat = AtA / s + if sparse.issparse(qmat): + qmat = qmat.todense() + m = Qi.shape[0] + qmat[0:m, 0:m] += Qi + d = qmat.shape[0] + qmat.flat[m*(d+1)::d+1] += di + if sparse.issparse(A): + qmati = sparse.linalg.spsolve(sparse.csc_matrix(qmat), A.T) + else: + qmati = np.linalg.solve(qmat, A.T) + + if sparse.issparse(A): + def solver(rhs): + ql = qmati.dot(rhs) + ql = A.dot(ql) + return rhs / s - ql / s**2 + else: + def solver(rhs): + ql = np.dot(qmati, rhs) + ql = np.dot(A, ql) + return rhs / s - ql / s**2 + + return solver + + +def _smw_logdet(s, A, AtA, Qi, di, B_logdet): + r""" + Returns the log determinant of + + .. math:: + + sI + ABA^\prime + + Uses the matrix determinant lemma to accelerate the calculation. + B is assumed to be positive definite, and s > 0, therefore the + determinant is positive. + + Parameters + ---------- + s : positive scalar + See above for usage + A : ndarray + p x q matrix, in general q << p. + AtA : square ndarray + :math:`A^\prime A`, a q x q matrix. + Qi : square symmetric ndarray + The matrix `B` is q x q, where q = r + d. `B` consists of a r + x r diagonal block whose inverse is `Qi`, and a d x d diagonal + block, whose inverse is diag(di). + di : 1d array-like + See documentation for Qi. + B_logdet : real + The log determinant of B + + Returns + ------- + The log determinant of s*I + A*B*A'. + + Notes + ----- + Uses the matrix determinant lemma: + https://en.wikipedia.org/wiki/Matrix_determinant_lemma + """ + + p = A.shape[0] + ld = p * np.log(s) + qmat = AtA / s + m = Qi.shape[0] + qmat[0:m, 0:m] += Qi + d = qmat.shape[0] + qmat.flat[m*(d+1)::d+1] += di + _, ld1 = np.linalg.slogdet(qmat) + return B_logdet + ld + ld1 + + +class MixedLM(base.LikelihoodModel): + """ + An object specifying a linear mixed effects model. Use the `fit` + method to fit the model and obtain a results object. + + Parameters + ---------- + endog : 1d array-like + The dependent variable + exog : 2d array-like + A matrix of covariates used to determine the + mean structure (the "fixed effects" covariates). + groups : 1d array-like + A vector of labels determining the groups -- data from + different groups are independent + exog_re : 2d array-like + A matrix of covariates used to determine the variance and + covariance structure (the "random effects" covariates). If + None, defaults to a random intercept for each group. + exog_vc : dict-like + A dictionary containing specifications of the variance + component terms. See below for details. + use_sqrt : bool + If True, optimization is carried out using the lower + triangle of the square root of the random effects + covariance matrix, otherwise it is carried out using the + lower triangle of the random effects covariance matrix. + missing : string + The approach to missing data handling + + Notes + ----- + `exog_vc` is a dictionary of dictionaries. Specifically, + `exog_vc[a][g]` is a matrix whose columns are linearly combined + using independent random coefficients. This random term then + contributes to the variance structure of the data for group `g`. + The random coefficients all have mean zero, and have the same + variance. The matrix must be `m x k`, where `m` is the number of + observations in group `g`. The number of columns may differ among + the top-level groups. + + The covariates in `exog`, `exog_re` and `exog_vc` may (but need + not) partially or wholly overlap. + + `use_sqrt` should almost always be set to True. The main use case + for use_sqrt=False is when complicated patterns of fixed values in + the covariance structure are set (using the `free` argument to + `fit`) that cannot be expressed in terms of the Cholesky factor L. + + Examples + -------- + A basic mixed model with fixed effects for the columns of + ``exog`` and a random intercept for each distinct value of + ``group``: + + >>> model = sm.MixedLM(endog, exog, groups) + >>> result = model.fit() + + A mixed model with fixed effects for the columns of ``exog`` and + correlated random coefficients for the columns of ``exog_re``: + + >>> model = sm.MixedLM(endog, exog, groups, exog_re=exog_re) + >>> result = model.fit() + + A mixed model with fixed effects for the columns of ``exog`` and + independent random coefficients for the columns of ``exog_re``: + + >>> free = MixedLMParams.from_components( + fe_params=np.ones(exog.shape[1]), + cov_re=np.eye(exog_re.shape[1])) + >>> model = sm.MixedLM(endog, exog, groups, exog_re=exog_re) + >>> result = model.fit(free=free) + + A different way to specify independent random coefficients for the + columns of ``exog_re``. In this example ``groups`` must be a + Pandas Series with compatible indexing with ``exog_re``, and + ``exog_re`` has two columns. + + >>> g = pd.groupby(groups, by=groups).groups + >>> vc = {} + >>> vc['1'] = {k : exog_re.loc[g[k], 0] for k in g} + >>> vc['2'] = {k : exog_re.loc[g[k], 1] for k in g} + >>> model = sm.MixedLM(endog, exog, groups, vcomp=vc) + >>> result = model.fit() + """ + + def __init__(self, endog, exog, groups, exog_re=None, + exog_vc=None, use_sqrt=True, missing='none', + **kwargs): + + _allowed_kwargs = ["missing_idx", "design_info", "formula"] + for x in kwargs.keys(): + if x not in _allowed_kwargs: + raise ValueError( + "argument %s not permitted for MixedLM initialization" % x) + + self.use_sqrt = use_sqrt + + # Some defaults + self.reml = True + self.fe_pen = None + self.re_pen = None + + # Needs to run early so that the names are sorted. + self._setup_vcomp(exog_vc) + + # If there is one covariate, it may be passed in as a column + # vector, convert these to 2d arrays. + # TODO: Can this be moved up in the class hierarchy? + # yes, it should be done up the hierarchy + if (exog is not None and + data_tools._is_using_ndarray_type(exog, None) and + exog.ndim == 1): + exog = exog[:, None] + if (exog_re is not None and + data_tools._is_using_ndarray_type(exog_re, None) and + exog_re.ndim == 1): + exog_re = exog_re[:, None] + + # Calling super creates self.endog, etc. as ndarrays and the + # original exog, endog, etc. are self.data.endog, etc. + super(MixedLM, self).__init__(endog, exog, groups=groups, + exog_re=exog_re, missing=missing, + **kwargs) + + self._init_keys.extend(["use_sqrt", "exog_vc"]) + + # Number of fixed effects parameters + self.k_fe = exog.shape[1] + + if exog_re is None and exog_vc is None: + # Default random effects structure (random intercepts). + self.k_re = 1 + self.k_re2 = 1 + self.exog_re = np.ones((len(endog), 1), dtype=np.float64) + self.data.exog_re = self.exog_re + names = ['Group Var'] + self.data.param_names = self.exog_names + names + self.data.exog_re_names = names + self.data.exog_re_names_full = names + + elif exog_re is not None: + # Process exog_re the same way that exog is handled + # upstream + # TODO: this is wrong and should be handled upstream wholly + self.data.exog_re = exog_re + self.exog_re = np.asarray(exog_re) + if self.exog_re.ndim == 1: + self.exog_re = self.exog_re[:, None] + # Model dimensions + # Number of random effect covariates + self.k_re = self.exog_re.shape[1] + # Number of covariance parameters + self.k_re2 = self.k_re * (self.k_re + 1) // 2 + + else: + # All random effects are variance components + self.k_re = 0 + self.k_re2 = 0 + + if not self.data._param_names: + # HACK: could've been set in from_formula already + # needs refactor + (param_names, exog_re_names, + exog_re_names_full) = self._make_param_names(exog_re) + self.data.param_names = param_names + self.data.exog_re_names = exog_re_names + self.data.exog_re_names_full = exog_re_names_full + + self.k_params = self.k_fe + self.k_re2 + + # Convert the data to the internal representation, which is a + # list of arrays, corresponding to the groups. + group_labels = list(set(groups)) + group_labels.sort() + row_indices = dict((s, []) for s in group_labels) + for i, g in enumerate(groups): + row_indices[g].append(i) + self.row_indices = row_indices + self.group_labels = group_labels + self.n_groups = len(self.group_labels) + + # Split the data by groups + self.endog_li = self.group_list(self.endog) + self.exog_li = self.group_list(self.exog) + self.exog_re_li = self.group_list(self.exog_re) + + # Precompute this. + if self.exog_re is None: + self.exog_re2_li = None + else: + self.exog_re2_li = [np.dot(x.T, x) for x in self.exog_re_li] + + # The total number of observations, summed over all groups + self.nobs = len(self.endog) + self.n_totobs = self.nobs + + # Set the fixed effects parameter names + if self.exog_names is None: + self.exog_names = ["FE%d" % (k + 1) for k in + range(self.exog.shape[1])] + + # Precompute this + self._aex_r = [] + self._aex_r2 = [] + for i in range(self.n_groups): + a = self._augment_exog(i) + self._aex_r.append(a) + + # This matrix is not very sparse so convert it to dense. + ma = _dot(a.T, a) + if sparse.issparse(ma): + ma = ma.todense() + self._aex_r2.append(ma) + + # Precompute this + self._lin, self._quad = self._reparam() + + def _setup_vcomp(self, exog_vc): + if exog_vc is None: + exog_vc = {} + self.exog_vc = exog_vc + self.k_vc = len(exog_vc) + vc_names = list(set(exog_vc.keys())) + vc_names.sort() + self._vc_names = vc_names + + def _make_param_names(self, exog_re): + """ + Returns the full parameter names list, just the exogenous random + effects variables, and the exogenous random effects variables with + the interaction terms. + """ + exog_names = list(self.exog_names) + exog_re_names = _get_exog_re_names(self, exog_re) + param_names = [] + + jj = self.k_fe + for i in range(len(exog_re_names)): + for j in range(i + 1): + if i == j: + param_names.append(exog_re_names[i] + " Var") + else: + param_names.append(exog_re_names[j] + " x " + + exog_re_names[i] + " Cov") + jj += 1 + + vc_names = [x + " Var" for x in self._vc_names] + + return exog_names + param_names + vc_names, exog_re_names, param_names + + @classmethod + def from_formula(cls, formula, data, re_formula=None, vc_formula=None, + subset=None, use_sparse=False, missing='none', *args, + **kwargs): + """ + Create a Model from a formula and dataframe. + + Parameters + ---------- + formula : str or generic Formula object + The formula specifying the model + data : array-like + The data for the model. See Notes. + re_formula : string + A one-sided formula defining the variance structure of the + model. The default gives a random intercept for each + group. + vc_formula : dict-like + Formulas describing variance components. `vc_formula[vc]` is + the formula for the component with variance parameter named + `vc`. The formula is processed into a matrix, and the columns + of this matrix are linearly combined with independent random + coefficients having mean zero and a common variance. + subset : array-like + An array-like object of booleans, integers, or index + values that indicate the subset of df to use in the + model. Assumes df is a `pandas.DataFrame` + missing : string + Either 'none' or 'drop' + args : extra arguments + These are passed to the model + kwargs : extra keyword arguments + These are passed to the model with one exception. The + ``eval_env`` keyword is passed to patsy. It can be either a + :class:`patsy:patsy.EvalEnvironment` object or an integer + indicating the depth of the namespace to use. For example, the + default ``eval_env=0`` uses the calling namespace. If you wish + to use a "clean" environment set ``eval_env=-1``. + + Returns + ------- + model : Model instance + + Notes + ----- + `data` must define __getitem__ with the keys in the formula + terms args and kwargs are passed on to the model + instantiation. E.g., a numpy structured or rec array, a + dictionary, or a pandas DataFrame. + + If the variance component is intended to produce random + intercepts for disjoint subsets of a group, specified by + string labels or a categorical data value, always use '0 +' in + the formula so that no overall intercept is included. + + If the variance components specify random slopes and you do + not also want a random group-level intercept in the model, + then use '0 +' in the formula to exclude the intercept. + + The variance components formulas are processed separately for + each group. If a variable is categorical the results will not + be affected by whether the group labels are distinct or + re-used over the top-level groups. + + Examples + -------- + Suppose we have data from an educational study with students + nested in classrooms nested in schools. The students take a + test, and we want to relate the test scores to the students' + ages, while accounting for the effects of classrooms and + schools. The school will be the top-level group, and the + classroom is a nested group that is specified as a variance + component. Note that the schools may have different number of + classrooms, and the classroom labels may (but need not be) + different across the schools. + + >>> vc = {'classroom': '0 + C(classroom)'} + >>> MixedLM.from_formula('test_score ~ age', vc_formula=vc, \ + re_formula='1', groups='school', data=data) + + Now suppose we also have a previous test score called + 'pretest'. If we want the relationship between pretest + scores and the current test to vary by classroom, we can + specify a random slope for the pretest score + + >>> vc = {'classroom': '0 + C(classroom)', 'pretest': '0 + pretest'} + >>> MixedLM.from_formula('test_score ~ age + pretest', vc_formula=vc, \ + re_formula='1', groups='school', data=data) + + The following model is almost equivalent to the previous one, + but here the classroom random intercept and pretest slope may + be correlated. + + >>> vc = {'classroom': '0 + C(classroom)'} + >>> MixedLM.from_formula('test_score ~ age + pretest', vc_formula=vc, \ + re_formula='1 + pretest', groups='school', \ + data=data) + """ + + if "groups" not in kwargs.keys(): + raise AttributeError("'groups' is a required keyword argument " + + "in MixedLM.from_formula") + groups = kwargs["groups"] + + # If `groups` is a variable name, retrieve the data for the + # groups variable. + group_name = "Group" + if isinstance(groups, string_types): + group_name = groups + groups = np.asarray(data[groups]) + else: + groups = np.asarray(groups) + del kwargs["groups"] + + # Bypass all upstream missing data handling to properly handle + # variance components + if missing == 'drop': + data, groups = _handle_missing(data, groups, formula, re_formula, + vc_formula) + missing = 'none' + + if re_formula is not None: + if re_formula.strip() == "1": + # Work around Patsy bug, fixed by 0.3. + exog_re = np.ones((data.shape[0], 1)) + exog_re_names = [group_name] + else: + eval_env = kwargs.get('eval_env', None) + if eval_env is None: + eval_env = 1 + elif eval_env == -1: + from patsy import EvalEnvironment + eval_env = EvalEnvironment({}) + exog_re = patsy.dmatrix(re_formula, data, eval_env=eval_env) + exog_re_names = exog_re.design_info.column_names + exog_re_names = [x.replace("Intercept", group_name) + for x in exog_re_names] + exog_re = np.asarray(exog_re) + if exog_re.ndim == 1: + exog_re = exog_re[:, None] + else: + exog_re = None + if vc_formula is None: + exog_re_names = [group_name] + else: + exog_re_names = [] + + if vc_formula is not None: + eval_env = kwargs.get('eval_env', None) + if eval_env is None: + eval_env = 1 + elif eval_env == -1: + from patsy import EvalEnvironment + eval_env = EvalEnvironment({}) + + exog_vc = {} + gb = data.groupby(groups) + kylist = list(gb.groups.keys()) + kylist.sort() + exog_vc_names = {} + for vc_name in vc_formula.keys(): + exog_vc[vc_name] = {} + for group_ix, group in enumerate(kylist): + if group not in exog_vc_names: + exog_vc_names[group] = {} + ii = gb.groups[group] + vcg = vc_formula[vc_name] + mat = patsy.dmatrix( + vcg, data.loc[ii, :], eval_env=eval_env, + return_type='dataframe') + exog_vc_names[group][vc_name] = mat.columns.tolist() + if use_sparse: + exog_vc[vc_name][group] = sparse.csr_matrix(mat) + else: + exog_vc[vc_name][group] = np.asarray(mat) + exog_vc = exog_vc + else: + exog_vc = None + + kwargs["subset"] = None + kwargs["exog_re"] = exog_re + kwargs["exog_vc"] = exog_vc + kwargs["groups"] = groups + mod = super(MixedLM, cls).from_formula( + formula, data, *args, **kwargs) + + # expand re names to account for pairs of RE + (param_names, + exog_re_names, + exog_re_names_full) = mod._make_param_names(exog_re_names) + + mod.data.param_names = param_names + mod.data.exog_re_names = exog_re_names + mod.data.exog_re_names_full = exog_re_names_full + + if vc_formula is not None: + mod.data.vcomp_names = mod._vc_names + mod._exog_vc_names = exog_vc_names + + return mod + + def predict(self, params, exog=None): + """ + Return predicted values from a design matrix. + + Parameters + ---------- + params : array-like + Parameters of a mixed linear model. Can be either a + MixedLMParams instance, or a vector containing the packed + model parameters in which the fixed effects parameters are + at the beginning of the vector, or a vector containing + only the fixed effects parameters. + exog : array-like, optional + Design / exogenous data for the fixed effects. Model exog + is used if None. + + Returns + ------- + An array of fitted values. Note that these predicted values + only reflect the fixed effects mean structure of the model. + """ + if exog is None: + exog = self.exog + + if isinstance(params, MixedLMParams): + params = params.fe_params + else: + params = params[0:self.k_fe] + + return np.dot(exog, params) + + def group_list(self, array): + """ + Returns `array` split into subarrays corresponding to the + grouping structure. + """ + + if array is None: + return None + + if array.ndim == 1: + return [np.array(array[self.row_indices[k]]) + for k in self.group_labels] + else: + return [np.array(array[self.row_indices[k], :]) + for k in self.group_labels] + + def fit_regularized(self, start_params=None, method='l1', alpha=0, + ceps=1e-4, ptol=1e-6, maxit=200, **fit_kwargs): + """ + Fit a model in which the fixed effects parameters are + penalized. The dependence parameters are held fixed at their + estimated values in the unpenalized model. + + Parameters + ---------- + method : string of Penalty object + Method for regularization. If a string, must be 'l1'. + alpha : array-like + Scalar or vector of penalty weights. If a scalar, the + same weight is applied to all coefficients; if a vector, + it contains a weight for each coefficient. If method is a + Penalty object, the weights are scaled by alpha. For L1 + regularization, the weights are used directly. + ceps : positive real scalar + Fixed effects parameters smaller than this value + in magnitude are treaded as being zero. + ptol : positive real scalar + Convergence occurs when the sup norm difference + between successive values of `fe_params` is less than + `ptol`. + maxit : integer + The maximum number of iterations. + fit_kwargs : keywords + Additional keyword arguments passed to fit. + + Returns + ------- + A MixedLMResults instance containing the results. + + Notes + ----- + The covariance structure is not updated as the fixed effects + parameters are varied. + + The algorithm used here for L1 regularization is a"shooting" + or cyclic coordinate descent algorithm. + + If method is 'l1', then `fe_pen` and `cov_pen` are used to + obtain the covariance structure, but are ignored during the + L1-penalized fitting. + + References + ---------- + Friedman, J. H., Hastie, T. and Tibshirani, R. Regularized + Paths for Generalized Linear Models via Coordinate + Descent. Journal of Statistical Software, 33(1) (2008) + http://www.jstatsoft.org/v33/i01/paper + + http://statweb.stanford.edu/~tibs/stat315a/Supplements/fuse.pdf + """ + + if isinstance(method, string_types) and (method.lower() != 'l1'): + raise ValueError("Invalid regularization method") + + # If method is a smooth penalty just optimize directly. + if isinstance(method, Penalty): + # Scale the penalty weights by alpha + method.alpha = alpha + fit_kwargs.update({"fe_pen": method}) + return self.fit(**fit_kwargs) + + if np.isscalar(alpha): + alpha = alpha * np.ones(self.k_fe, dtype=np.float64) + + # Fit the unpenalized model to get the dependence structure. + mdf = self.fit(**fit_kwargs) + fe_params = mdf.fe_params + cov_re = mdf.cov_re + vcomp = mdf.vcomp + scale = mdf.scale + try: + cov_re_inv = np.linalg.inv(cov_re) + except np.linalg.LinAlgError: + cov_re_inv = None + + for itr in range(maxit): + + fe_params_s = fe_params.copy() + for j in range(self.k_fe): + + if abs(fe_params[j]) < ceps: + continue + + # The residuals + fe_params[j] = 0. + expval = np.dot(self.exog, fe_params) + resid_all = self.endog - expval + + # The loss function has the form + # a*x^2 + b*x + pwt*|x| + a, b = 0., 0. + for group_ix, group in enumerate(self.group_labels): + + vc_var = self._expand_vcomp(vcomp, group) + + exog = self.exog_li[group_ix] + ex_r, ex2_r = self._aex_r[group_ix], self._aex_r2[group_ix] + + resid = resid_all[self.row_indices[group]] + solver = _smw_solver(scale, ex_r, ex2_r, cov_re_inv, + 1 / vc_var) + + x = exog[:, j] + u = solver(x) + a += np.dot(u, x) + b -= 2 * np.dot(u, resid) + + pwt1 = alpha[j] + if b > pwt1: + fe_params[j] = -(b - pwt1) / (2 * a) + elif b < -pwt1: + fe_params[j] = -(b + pwt1) / (2 * a) + + if np.abs(fe_params_s - fe_params).max() < ptol: + break + + # Replace the fixed effects estimates with their penalized + # values, leave the dependence parameters in their unpenalized + # state. + params_prof = mdf.params.copy() + params_prof[0:self.k_fe] = fe_params + + scale = self.get_scale(fe_params, mdf.cov_re_unscaled, mdf.vcomp) + + # Get the Hessian including only the nonzero fixed effects, + # then blow back up to the full size after inverting. + hess = self.hessian(params_prof) + pcov = np.nan * np.ones_like(hess) + ii = np.abs(params_prof) > ceps + ii[self.k_fe:] = True + ii = np.flatnonzero(ii) + hess1 = hess[ii, :][:, ii] + pcov[np.ix_(ii, ii)] = np.linalg.inv(-hess1) + + params_object = MixedLMParams.from_components(fe_params, cov_re=cov_re) + + results = MixedLMResults(self, params_prof, pcov / scale) + results.params_object = params_object + results.fe_params = fe_params + results.cov_re = cov_re + results.scale = scale + results.cov_re_unscaled = mdf.cov_re_unscaled + results.method = mdf.method + results.converged = True + results.cov_pen = self.cov_pen + results.k_fe = self.k_fe + results.k_re = self.k_re + results.k_re2 = self.k_re2 + results.k_vc = self.k_vc + + return MixedLMResultsWrapper(results) + + def get_fe_params(self, cov_re, vcomp): + """ + Use GLS to update the fixed effects parameter estimates. + + Parameters + ---------- + cov_re : array-like + The covariance matrix of the random effects. + + Returns + ------- + The GLS estimates of the fixed effects parameters. + """ + + if self.k_fe == 0: + return np.array([]) + + if self.k_re == 0: + cov_re_inv = np.empty((0, 0)) + else: + cov_re_inv = np.linalg.inv(cov_re) + + # Cache these quantities that don't change. + if not hasattr(self, "_endex_li"): + self._endex_li = [] + for group_ix, _ in enumerate(self.group_labels): + mat = np.concatenate( + (self.exog_li[group_ix], + self.endog_li[group_ix][:, None]), axis=1) + self._endex_li.append(mat) + + xtxy = 0. + for group_ix, group in enumerate(self.group_labels): + vc_var = self._expand_vcomp(vcomp, group) + exog = self.exog_li[group_ix] + ex_r, ex2_r = self._aex_r[group_ix], self._aex_r2[group_ix] + solver = _smw_solver(1., ex_r, ex2_r, cov_re_inv, 1 / vc_var) + u = solver(self._endex_li[group_ix]) + xtxy += np.dot(exog.T, u) + + fe_params = np.linalg.solve(xtxy[:, 0:-1], xtxy[:, -1]) + + return fe_params + + def _reparam(self): + """ + Returns parameters of the map converting parameters from the + form used in optimization to the form returned to the user. + + Returns + ------- + lin : list-like + Linear terms of the map + quad : list-like + Quadratic terms of the map + + Notes + ----- + If P are the standard form parameters and R are the + transformed parameters (i.e. with the Cholesky square root + covariance and square root transformed variance components), + then P[i] = lin[i] * R + R' * quad[i] * R + """ + + k_fe, k_re, k_re2, k_vc = self.k_fe, self.k_re, self.k_re2, self.k_vc + k_tot = k_fe + k_re2 + k_vc + ix = np.tril_indices(self.k_re) + + lin = [] + for k in range(k_fe): + e = np.zeros(k_tot) + e[k] = 1 + lin.append(e) + for k in range(k_re2): + lin.append(np.zeros(k_tot)) + for k in range(k_vc): + lin.append(np.zeros(k_tot)) + + quad = [] + # Quadratic terms for fixed effects. + for k in range(k_tot): + quad.append(np.zeros((k_tot, k_tot))) + + # Quadratic terms for random effects covariance. + ii = np.tril_indices(k_re) + ix = [(a, b) for a, b in zip(ii[0], ii[1])] + for i1 in range(k_re2): + for i2 in range(k_re2): + ix1 = ix[i1] + ix2 = ix[i2] + if (ix1[1] == ix2[1]) and (ix1[0] <= ix2[0]): + ii = (ix2[0], ix1[0]) + k = ix.index(ii) + quad[k_fe+k][k_fe+i2, k_fe+i1] += 1 + for k in range(k_tot): + quad[k] = 0.5*(quad[k] + quad[k].T) + + # Quadratic terms for variance components. + km = k_fe + k_re2 + for k in range(km, km+k_vc): + quad[k][k, k] = 1 + + return lin, quad + + def _expand_vcomp(self, vcomp, group): + """ + Replicate variance parameters to match a group's design. + + Parameters + ---------- + vcomp : array-like + The variance parameters for the variance components. + group : string + The group label + + Returns an expanded version of vcomp, in which each variance + parameter is copied as many times as there are independent + realizations of the variance component in the given group. + """ + if len(vcomp) == 0: + return np.empty(0) + vc_var = [] + for j, k in enumerate(self._vc_names): + if group in self.exog_vc[k]: + vc_var.append( + vcomp[j] * np.ones(self.exog_vc[k][group].shape[1])) + if len(vc_var) > 0: + return np.concatenate(vc_var) + else: + return np.empty(0) + + def _augment_exog(self, group_ix): + """ + Concatenate the columns for variance components to the columns + for other random effects to obtain a single random effects + exog matrix for a given group. + """ + ex_r = self.exog_re_li[group_ix] if self.k_re > 0 else None + if self.k_vc == 0: + return ex_r + + group = self.group_labels[group_ix] + ex = [ex_r] if self.k_re > 0 else [] + any_sparse = False + for j, k in enumerate(self._vc_names): + if group not in self.exog_vc[k]: + continue + ex.append(self.exog_vc[k][group]) + any_sparse |= sparse.issparse(ex[-1]) + if any_sparse: + for j, x in enumerate(ex): + if not sparse.issparse(x): + ex[j] = sparse.csr_matrix(x) + ex = sparse.hstack(ex) + ex = sparse.csr_matrix(ex) + else: + ex = np.concatenate(ex, axis=1) + + return ex + + def loglike(self, params, profile_fe=True): + """ + Evaluate the (profile) log-likelihood of the linear mixed + effects model. + + Parameters + ---------- + params : MixedLMParams, or array-like. + The parameter value. If array-like, must be a packed + parameter vector containing only the covariance + parameters. + profile_fe : boolean + If True, replace the provided value of `fe_params` with + the GLS estimates. + + Returns + ------- + The log-likelihood value at `params`. + + Notes + ----- + The scale parameter `scale` is always profiled out of the + log-likelihood. In addition, if `profile_fe` is true the + fixed effects parameters are also profiled out. + """ + + if type(params) is not MixedLMParams: + params = MixedLMParams.from_packed(params, self.k_fe, + self.k_re, self.use_sqrt, + has_fe=False) + + cov_re = params.cov_re + vcomp = params.vcomp + + # Move to the profile set + if profile_fe: + fe_params = self.get_fe_params(cov_re, vcomp) + else: + fe_params = params.fe_params + + if self.k_re > 0: + try: + cov_re_inv = np.linalg.inv(cov_re) + except np.linalg.LinAlgError: + cov_re_inv = None + _, cov_re_logdet = np.linalg.slogdet(cov_re) + else: + cov_re_inv = np.zeros((0, 0)) + cov_re_logdet = 0 + + # The residuals + expval = np.dot(self.exog, fe_params) + resid_all = self.endog - expval + + likeval = 0. + + # Handle the covariance penalty + if (self.cov_pen is not None) and (self.k_re > 0): + likeval -= self.cov_pen.func(cov_re, cov_re_inv) + + # Handle the fixed effects penalty + if (self.fe_pen is not None): + likeval -= self.fe_pen.func(fe_params) + + xvx, qf = 0., 0. + for k, group in enumerate(self.group_labels): + + vc_var = self._expand_vcomp(vcomp, group) + cov_aug_logdet = cov_re_logdet + np.sum(np.log(vc_var)) + + exog = self.exog_li[k] + ex_r, ex2_r = self._aex_r[k], self._aex_r2[k] + solver = _smw_solver(1., ex_r, ex2_r, cov_re_inv, 1 / vc_var) + + resid = resid_all[self.row_indices[group]] + + # Part 1 of the log likelihood (for both ML and REML) + ld = _smw_logdet(1., ex_r, ex2_r, cov_re_inv, 1 / vc_var, + cov_aug_logdet) + likeval -= ld / 2. + + # Part 2 of the log likelihood (for both ML and REML) + u = solver(resid) + qf += np.dot(resid, u) + + # Adjustment for REML + if self.reml: + mat = solver(exog) + xvx += np.dot(exog.T, mat) + + if self.reml: + likeval -= (self.n_totobs - self.k_fe) * np.log(qf) / 2. + _, ld = np.linalg.slogdet(xvx) + likeval -= ld / 2. + likeval -= (self.n_totobs - self.k_fe) * np.log(2 * np.pi) / 2. + likeval += ((self.n_totobs - self.k_fe) * + np.log(self.n_totobs - self.k_fe) / 2.) + likeval -= (self.n_totobs - self.k_fe) / 2. + else: + likeval -= self.n_totobs * np.log(qf) / 2. + likeval -= self.n_totobs * np.log(2 * np.pi) / 2. + likeval += self.n_totobs * np.log(self.n_totobs) / 2. + likeval -= self.n_totobs / 2. + + return likeval + + def _gen_dV_dPar(self, ex_r, solver, group, max_ix=None): + """ + A generator that yields the element-wise derivative of the + marginal covariance matrix with respect to the random effects + variance and covariance parameters. + + ex_r : array-like + The random effects design matrix + solver : function + A function that given x returns V^{-1}x, where V + is the group's marginal covariance matrix. + group : scalar + The group label + max_ix : integer or None + If not None, the generator ends when this index + is reached. + """ + + axr = solver(ex_r) + + # Regular random effects + jj = 0 + for j1 in range(self.k_re): + for j2 in range(j1 + 1): + if max_ix is not None and jj > max_ix: + return + # Need 2d + mat_l, mat_r = ex_r[:, j1:j1+1], ex_r[:, j2:j2+1] + vsl, vsr = axr[:, j1:j1+1], axr[:, j2:j2+1] + yield jj, mat_l, mat_r, vsl, vsr, j1 == j2 + jj += 1 + + # Variance components + for ky in self._vc_names: + if group in self.exog_vc[ky]: + if max_ix is not None and jj > max_ix: + return + mat = self.exog_vc[ky][group] + axmat = solver(mat) + yield jj, mat, mat, axmat, axmat, True + jj += 1 + + def score(self, params, profile_fe=True): + """ + Returns the score vector of the profile log-likelihood. + + Notes + ----- + The score vector that is returned is computed with respect to + the parameterization defined by this model instance's + `use_sqrt` attribute. + """ + + if type(params) is not MixedLMParams: + params = MixedLMParams.from_packed( + params, self.k_fe, self.k_re, self.use_sqrt, + has_fe=False) + + if profile_fe: + params.fe_params = self.get_fe_params(params.cov_re, params.vcomp) + + if self.use_sqrt: + score_fe, score_re, score_vc = self.score_sqrt( + params, calc_fe=not profile_fe) + else: + score_fe, score_re, score_vc = self.score_full( + params, calc_fe=not profile_fe) + + if self._freepat is not None: + score_fe *= self._freepat.fe_params + score_re *= self._freepat.cov_re[self._freepat._ix] + score_vc *= self._freepat.vcomp + + if profile_fe: + return np.concatenate((score_re, score_vc)) + else: + return np.concatenate((score_fe, score_re, score_vc)) + + def score_full(self, params, calc_fe): + """ + Returns the score with respect to untransformed parameters. + + Calculates the score vector for the profiled log-likelihood of + the mixed effects model with respect to the parameterization + in which the random effects covariance matrix is represented + in its full form (not using the Cholesky factor). + + Parameters + ---------- + params : MixedLMParams or array-like + The parameter at which the score function is evaluated. + If array-like, must contain the packed random effects + parameters (cov_re and vcomp) without fe_params. + calc_fe : boolean + If True, calculate the score vector for the fixed effects + parameters. If False, this vector is not calculated, and + a vector of zeros is returned in its place. + + Returns + ------- + score_fe : array-like + The score vector with respect to the fixed effects + parameters. + score_re : array-like + The score vector with respect to the random effects + parameters (excluding variance components parameters). + score_vc : array-like + The score vector with respect to variance components + parameters. + + Notes + ----- + `score_re` is taken with respect to the parameterization in + which `cov_re` is represented through its lower triangle + (without taking the Cholesky square root). + """ + + fe_params = params.fe_params + cov_re = params.cov_re + vcomp = params.vcomp + + try: + cov_re_inv = np.linalg.inv(cov_re) + except np.linalg.LinAlgError: + cov_re_inv = None + + score_fe = np.zeros(self.k_fe) + score_re = np.zeros(self.k_re2) + score_vc = np.zeros(self.k_vc) + + # Handle the covariance penalty. + if self.cov_pen is not None: + score_re -= self.cov_pen.deriv(cov_re, cov_re_inv) + + # Handle the fixed effects penalty. + if calc_fe and (self.fe_pen is not None): + score_fe -= self.fe_pen.deriv(fe_params) + + # resid' V^{-1} resid, summed over the groups (a scalar) + rvir = 0. + + # exog' V^{-1} resid, summed over the groups (a k_fe + # dimensional vector) + xtvir = 0. + + # exog' V^{_1} exog, summed over the groups (a k_fe x k_fe + # matrix) + xtvix = 0. + + # V^{-1} exog' dV/dQ_jj exog V^{-1}, where Q_jj is the jj^th + # covariance parameter. + xtax = [0., ] * (self.k_re2 + self.k_vc) + + # Temporary related to the gradient of log |V| + dlv = np.zeros(self.k_re2 + self.k_vc) + + # resid' V^{-1} dV/dQ_jj V^{-1} resid (a scalar) + rvavr = np.zeros(self.k_re2 + self.k_vc) + + for group_ix, group in enumerate(self.group_labels): + + vc_var = self._expand_vcomp(vcomp, group) + + exog = self.exog_li[group_ix] + ex_r, ex2_r = self._aex_r[group_ix], self._aex_r2[group_ix] + solver = _smw_solver(1., ex_r, ex2_r, cov_re_inv, 1 / vc_var) + + # The residuals + resid = self.endog_li[group_ix] + if self.k_fe > 0: + expval = np.dot(exog, fe_params) + resid = resid - expval + + if self.reml: + viexog = solver(exog) + xtvix += np.dot(exog.T, viexog) + + # Contributions to the covariance parameter gradient + vir = solver(resid) + for (jj, matl, matr, vsl, vsr, sym) in\ + self._gen_dV_dPar(ex_r, solver, group): + dlv[jj] = _dotsum(matr, vsl) + if not sym: + dlv[jj] += _dotsum(matl, vsr) + + ul = _dot(vir, matl) + ur = ul.T if sym else _dot(matr.T, vir) + ulr = np.dot(ul, ur) + rvavr[jj] += ulr + if not sym: + rvavr[jj] += ulr.T + + if self.reml: + ul = _dot(viexog.T, matl) + ur = ul.T if sym else _dot(matr.T, viexog) + ulr = np.dot(ul, ur) + xtax[jj] += ulr + if not sym: + xtax[jj] += ulr.T + + # Contribution of log|V| to the covariance parameter + # gradient. + if self.k_re > 0: + score_re -= 0.5 * dlv[0:self.k_re2] + if self.k_vc > 0: + score_vc -= 0.5 * dlv[self.k_re2:] + + rvir += np.dot(resid, vir) + + if calc_fe: + xtvir += np.dot(exog.T, vir) + + fac = self.n_totobs + if self.reml: + fac -= self.k_fe + + if calc_fe and self.k_fe > 0: + score_fe += fac * xtvir / rvir + + if self.k_re > 0: + score_re += 0.5 * fac * rvavr[0:self.k_re2] / rvir + if self.k_vc > 0: + score_vc += 0.5 * fac * rvavr[self.k_re2:] / rvir + + if self.reml: + xtvixi = np.linalg.inv(xtvix) + for j in range(self.k_re2): + score_re[j] += 0.5 * _dotsum(xtvixi.T, xtax[j]) + for j in range(self.k_vc): + score_vc[j] += 0.5 * _dotsum(xtvixi.T, xtax[self.k_re2 + j]) + + return score_fe, score_re, score_vc + + def score_sqrt(self, params, calc_fe=True): + """ + Returns the score with respect to transformed parameters. + + Calculates the score vector with respect to the + parameterization in which the random effects covariance matrix + is represented through its Cholesky square root. + + Parameters + ---------- + params : MixedLMParams or array-like + The model parameters. If array-like must contain packed + parameters that are compatible with this model instance. + calc_fe : boolean + If True, calculate the score vector for the fixed effects + parameters. If False, this vector is not calculated, and + a vector of zeros is returned in its place. + + Returns + ------- + score_fe : array-like + The score vector with respect to the fixed effects + parameters. + score_re : array-like + The score vector with respect to the random effects + parameters (excluding variance components parameters). + score_vc : array-like + The score vector with respect to variance components + parameters. + """ + + score_fe, score_re, score_vc = self.score_full(params, calc_fe=calc_fe) + params_vec = params.get_packed(use_sqrt=True, has_fe=True) + + score_full = np.concatenate((score_fe, score_re, score_vc)) + scr = 0. + for i in range(len(params_vec)): + v = self._lin[i] + 2 * np.dot(self._quad[i], params_vec) + scr += score_full[i] * v + score_fe = scr[0:self.k_fe] + score_re = scr[self.k_fe:self.k_fe + self.k_re2] + score_vc = scr[self.k_fe + self.k_re2:] + + return score_fe, score_re, score_vc + + def hessian(self, params): + """ + Returns the model's Hessian matrix. + + Calculates the Hessian matrix for the linear mixed effects + model with respect to the parameterization in which the + covariance matrix is represented directly (without square-root + transformation). + + Parameters + ---------- + params : MixedLMParams or array-like + The model parameters at which the Hessian is calculated. + If array-like, must contain the packed parameters in a + form that is compatible with this model instance. + + Returns + ------- + hess : 2d ndarray + The Hessian matrix, evaluated at `params`. + """ + + if type(params) is not MixedLMParams: + params = MixedLMParams.from_packed(params, self.k_fe, self.k_re, + use_sqrt=self.use_sqrt, + has_fe=True) + + fe_params = params.fe_params + vcomp = params.vcomp + cov_re = params.cov_re + if self.k_re > 0: + cov_re_inv = np.linalg.inv(cov_re) + else: + cov_re_inv = np.empty((0, 0)) + + # Blocks for the fixed and random effects parameters. + hess_fe = 0. + hess_re = np.zeros((self.k_re2 + self.k_vc, self.k_re2 + self.k_vc)) + hess_fere = np.zeros((self.k_re2 + self.k_vc, self.k_fe)) + + fac = self.n_totobs + if self.reml: + fac -= self.exog.shape[1] + + rvir = 0. + xtvix = 0. + xtax = [0., ] * (self.k_re2 + self.k_vc) + m = self.k_re2 + self.k_vc + B = np.zeros(m) + D = np.zeros((m, m)) + F = [[0.] * m for k in range(m)] + for k, group in enumerate(self.group_labels): + + vc_var = self._expand_vcomp(vcomp, group) + + exog = self.exog_li[k] + ex_r, ex2_r = self._aex_r[k], self._aex_r2[k] + solver = _smw_solver(1., ex_r, ex2_r, cov_re_inv, 1 / vc_var) + + # The residuals + resid = self.endog_li[k] + if self.k_fe > 0: + expval = np.dot(exog, fe_params) + resid = resid - expval + + viexog = solver(exog) + xtvix += np.dot(exog.T, viexog) + vir = solver(resid) + rvir += np.dot(resid, vir) + + for (jj1, matl1, matr1, vsl1, vsr1, sym1) in\ + self._gen_dV_dPar(ex_r, solver, group): + + ul = _dot(viexog.T, matl1) + ur = _dot(matr1.T, vir) + hess_fere[jj1, :] += np.dot(ul, ur) + if not sym1: + ul = _dot(viexog.T, matr1) + ur = _dot(matl1.T, vir) + hess_fere[jj1, :] += np.dot(ul, ur) + + if self.reml: + ul = _dot(viexog.T, matl1) + ur = ul if sym1 else np.dot(viexog.T, matr1) + ulr = _dot(ul, ur.T) + xtax[jj1] += ulr + if not sym1: + xtax[jj1] += ulr.T + + ul = _dot(vir, matl1) + ur = ul if sym1 else _dot(vir, matr1) + B[jj1] += np.dot(ul, ur) * (1 if sym1 else 2) + + # V^{-1} * dV/d_theta + E = [(vsl1, matr1)] + if not sym1: + E.append((vsr1, matl1)) + + for (jj2, matl2, matr2, vsl2, vsr2, sym2) in\ + self._gen_dV_dPar(ex_r, solver, group, jj1): + + re = sum([_multi_dot_three(matr2.T, x[0], x[1].T) + for x in E]) + vt = 2 * _dot(_multi_dot_three(vir[None, :], matl2, re), + vir[:, None]) + + if not sym2: + le = sum([_multi_dot_three(matl2.T, x[0], x[1].T) + for x in E]) + vt += 2 * _dot(_multi_dot_three( + vir[None, :], matr2, le), vir[:, None]) + + D[jj1, jj2] += vt + if jj1 != jj2: + D[jj2, jj1] += vt + + rt = _dotsum(vsl2, re.T) / 2 + if not sym2: + rt += _dotsum(vsr2, le.T) / 2 + + hess_re[jj1, jj2] += rt + if jj1 != jj2: + hess_re[jj2, jj1] += rt + + if self.reml: + ev = sum([_dot(x[0], _dot(x[1].T, viexog)) for x in E]) + u1 = _dot(viexog.T, matl2) + u2 = _dot(matr2.T, ev) + um = np.dot(u1, u2) + F[jj1][jj2] += um + um.T + if not sym2: + u1 = np.dot(viexog.T, matr2) + u2 = np.dot(matl2.T, ev) + um = np.dot(u1, u2) + F[jj1][jj2] += um + um.T + + hess_fe -= fac * xtvix / rvir + hess_re = hess_re - 0.5 * fac * (D/rvir - np.outer(B, B) / rvir**2) + hess_fere = -fac * hess_fere / rvir + + if self.reml: + QL = [np.linalg.solve(xtvix, x) for x in xtax] + for j1 in range(self.k_re2 + self.k_vc): + for j2 in range(j1 + 1): + a = _dotsum(QL[j1].T, QL[j2]) + a -= np.trace(np.linalg.solve(xtvix, F[j1][j2])) + a *= 0.5 + hess_re[j1, j2] += a + if j1 > j2: + hess_re[j2, j1] += a + + # Put the blocks together to get the Hessian. + m = self.k_fe + self.k_re2 + self.k_vc + hess = np.zeros((m, m)) + hess[0:self.k_fe, 0:self.k_fe] = hess_fe + hess[0:self.k_fe, self.k_fe:] = hess_fere.T + hess[self.k_fe:, 0:self.k_fe] = hess_fere + hess[self.k_fe:, self.k_fe:] = hess_re + + return hess + + def get_scale(self, fe_params, cov_re, vcomp): + """ + Returns the estimated error variance based on given estimates + of the slopes and random effects covariance matrix. + + Parameters + ---------- + fe_params : array-like + The regression slope estimates + cov_re : 2d array-like + Estimate of the random effects covariance matrix + vcomp : array-like + Estimate of the variance components + + Returns + ------- + scale : float + The estimated error variance. + """ + + try: + cov_re_inv = np.linalg.inv(cov_re) + except np.linalg.LinAlgError: + cov_re_inv = None + + qf = 0. + for group_ix, group in enumerate(self.group_labels): + + vc_var = self._expand_vcomp(vcomp, group) + + exog = self.exog_li[group_ix] + ex_r, ex2_r = self._aex_r[group_ix], self._aex_r2[group_ix] + + solver = _smw_solver(1., ex_r, ex2_r, cov_re_inv, 1 / vc_var) + + # The residuals + resid = self.endog_li[group_ix] + if self.k_fe > 0: + expval = np.dot(exog, fe_params) + resid = resid - expval + + mat = solver(resid) + qf += np.dot(resid, mat) + + if self.reml: + qf /= (self.n_totobs - self.k_fe) + else: + qf /= self.n_totobs + + return qf + + def fit(self, start_params=None, reml=True, niter_sa=0, + do_cg=True, fe_pen=None, cov_pen=None, free=None, + full_output=False, method=None, **kwargs): + """ + Fit a linear mixed model to the data. + + Parameters + ---------- + start_params: array-like or MixedLMParams + Starting values for the profile log-likelihood. If not a + `MixedLMParams` instance, this should be an array + containing the packed parameters for the profile + log-likelihood, including the fixed effects + parameters. + reml : bool + If true, fit according to the REML likelihood, else + fit the standard likelihood using ML. + niter_sa : + Currently this argument is ignored and has no effect + on the results. + cov_pen : CovariancePenalty object + A penalty for the random effects covariance matrix + do_cg : boolean, defaults to True + If False, the optimization is skipped and a results + object at the given (or default) starting values is + returned. + fe_pen : Penalty object + A penalty on the fixed effects + free : MixedLMParams object + If not `None`, this is a mask that allows parameters to be + held fixed at specified values. A 1 indicates that the + correspondinig parameter is estimated, a 0 indicates that + it is fixed at its starting value. Setting the `cov_re` + component to the identity matrix fits a model with + independent random effects. Note that some optimization + methods do not respect this constraint (bfgs and lbfgs both + work). + full_output : bool + If true, attach iteration history to results + method : string + Optimization method. Can be a scipy.optimize method name, + or a list of such names to be tried in sequence. + + Returns + ------- + A MixedLMResults instance. + """ + + _allowed_kwargs = ['gtol', 'maxiter', 'eps', 'maxcor', 'ftol', + 'tol', 'disp', 'maxls'] + for x in kwargs.keys(): + if x not in _allowed_kwargs: + warnings.warn("Argument %s not used by MixedLM.fit" % x) + + if method is None: + method = ['bfgs', 'lbfgs', 'cg'] + elif isinstance(method, str): + method = [method] + + for meth in method: + if meth.lower() in ["newton", "ncg"]: + raise ValueError( + "method %s not available for MixedLM" % meth) + + self.reml = reml + self.cov_pen = cov_pen + self.fe_pen = fe_pen + + self._freepat = free + + if full_output: + hist = [] + else: + hist = None + + if start_params is None: + params = MixedLMParams(self.k_fe, self.k_re, self.k_vc) + params.fe_params = np.zeros(self.k_fe) + params.cov_re = np.eye(self.k_re) + params.vcomp = np.ones(self.k_vc) + else: + if isinstance(start_params, MixedLMParams): + params = start_params + else: + # It's a packed array + if len(start_params) == self.k_fe + self.k_re2 + self.k_vc: + params = MixedLMParams.from_packed( + start_params, self.k_fe, self.k_re, self.use_sqrt, + has_fe=True) + elif len(start_params) == self.k_re2 + self.k_vc: + params = MixedLMParams.from_packed( + start_params, self.k_fe, self.k_re, self.use_sqrt, + has_fe=False) + else: + raise ValueError("invalid start_params") + + if do_cg: + kwargs["retall"] = hist is not None + if "disp" not in kwargs: + kwargs["disp"] = False + packed = params.get_packed(use_sqrt=self.use_sqrt, has_fe=False) + + if niter_sa > 0: + warnings.warn("niter_sa is currently ignored") + + # Try optimizing one or more times + for j in range(len(method)): + rslt = super(MixedLM, self).fit(start_params=packed, + skip_hessian=True, + method=method[j], + **kwargs) + if rslt.mle_retvals['converged']: + break + packed = rslt.params + if j + 1 < len(method): + next_method = method[j + 1] + warnings.warn( + "Retrying MixedLM optimization with %s" % next_method, + ConvergenceWarning) + else: + msg = ("MixedLM optimization failed, " + + "trying a different optimizer may help.") + warnings.warn(msg, ConvergenceWarning) + + # The optimization succeeded + params = np.atleast_1d(rslt.params) + if hist is not None: + hist.append(rslt.mle_retvals) + + converged = rslt.mle_retvals['converged'] + if not converged: + gn = self.score(rslt.params) + gn = np.sqrt(np.sum(gn**2)) + msg = "Gradient optimization failed, |grad| = %f" % gn + warnings.warn(msg, ConvergenceWarning) + + # Convert to the final parameterization (i.e. undo the square + # root transform of the covariance matrix, and the profiling + # over the error variance). + params = MixedLMParams.from_packed( + params, self.k_fe, self.k_re, use_sqrt=self.use_sqrt, has_fe=False) + cov_re_unscaled = params.cov_re + vcomp_unscaled = params.vcomp + fe_params = self.get_fe_params(cov_re_unscaled, vcomp_unscaled) + params.fe_params = fe_params + scale = self.get_scale(fe_params, cov_re_unscaled, vcomp_unscaled) + cov_re = scale * cov_re_unscaled + vcomp = scale * vcomp_unscaled + + f1 = (self.k_re > 0) and (np.min(np.abs(np.diag(cov_re))) < 0.01) + f2 = (self.k_vc > 0) and (np.min(np.abs(vcomp)) < 0.01) + if f1 or f2: + msg = "The MLE may be on the boundary of the parameter space." + warnings.warn(msg, ConvergenceWarning) + + # Compute the Hessian at the MLE. Note that this is the + # Hessian with respect to the random effects covariance matrix + # (not its square root). It is used for obtaining standard + # errors, not for optimization. + hess = self.hessian(params) + hess_diag = np.diag(hess) + if free is not None: + pcov = np.zeros_like(hess) + pat = self._freepat.get_packed(use_sqrt=False, has_fe=True) + ii = np.flatnonzero(pat) + hess_diag = hess_diag[ii] + if len(ii) > 0: + hess1 = hess[np.ix_(ii, ii)] + pcov[np.ix_(ii, ii)] = np.linalg.inv(-hess1) + else: + pcov = np.linalg.inv(-hess) + if np.any(hess_diag >= 0): + msg = ("The Hessian matrix at the estimated parameter values " + + "is not positive definite.") + warnings.warn(msg, ConvergenceWarning) + + # Prepare a results class instance + params_packed = params.get_packed(use_sqrt=False, has_fe=True) + results = MixedLMResults(self, params_packed, pcov / scale) + results.params_object = params + results.fe_params = fe_params + results.cov_re = cov_re + results.vcomp = vcomp + results.scale = scale + results.cov_re_unscaled = cov_re_unscaled + results.method = "REML" if self.reml else "ML" + results.converged = converged + results.hist = hist + results.reml = self.reml + results.cov_pen = self.cov_pen + results.k_fe = self.k_fe + results.k_re = self.k_re + results.k_re2 = self.k_re2 + results.k_vc = self.k_vc + results.use_sqrt = self.use_sqrt + results.freepat = self._freepat + + return MixedLMResultsWrapper(results) + + def get_distribution(self, params, scale, exog): + return _mixedlm_distribution(self, params, scale, exog) + + +class _mixedlm_distribution(object): + """ + A private class for simulating data from a given mixed linear model. + + Parameters + ---------- + model : MixedLM instance + A mixed linear model + params : array-like + A parameter vector defining a mixed linear model. See + notes for more information. + scale : scalar + The unexplained variance + exog : array-like + An array of fixed effect covariates. If None, model.exog + is used. + + Notes + ----- + The params array is a vector containing fixed effects parameters, + random effects parameters, and variance component parameters, in + that order. The lower triangle of the random effects covariance + matrix is stored. The random effects and variance components + parameters are divided by the scale parameter. + + This class is used in Mediation, and possibly elsewhere. + """ + + def __init__(self, model, params, scale, exog): + + self.model = model + self.exog = exog if exog is not None else model.exog + + po = MixedLMParams.from_packed( + params, model.k_fe, model.k_re, False, True) + + self.fe_params = po.fe_params + self.cov_re = scale * po.cov_re + self.vcomp = scale * po.vcomp + self.scale = scale + + group_idx = np.zeros(model.nobs, dtype=np.int) + for k, g in enumerate(model.group_labels): + group_idx[model.row_indices[g]] = k + self.group_idx = group_idx + + def rvs(self, n): + """ + Return a vector of simulated values from a mixed linear + model. + + The parameter n is ignored, but required by the interface + """ + + model = self.model + + # Fixed effects + y = np.dot(self.exog, self.fe_params) + + # Random effects + u = np.random.normal(size=(model.n_groups, model.k_re)) + u = np.dot(u, np.linalg.cholesky(self.cov_re).T) + y += (u[self.group_idx, :] * model.exog_re).sum(1) + + # Variance components + for j, k in enumerate(model._vc_names): + ex = model.exog_vc[k] + v = self.vcomp[j] + for g in model.group_labels: + exg = ex[g] + ii = model.row_indices[g] + u = np.random.normal(size=exg.shape[1]) + y[ii] += np.sqrt(v) * np.dot(exg, u) + + # Residual variance + y += np.sqrt(self.scale) * np.random.normal(size=len(y)) + + return y + + +class MixedLMResults(base.LikelihoodModelResults, base.ResultMixin): + ''' + Class to contain results of fitting a linear mixed effects model. + + MixedLMResults inherits from statsmodels.LikelihoodModelResults + + Parameters + ---------- + See statsmodels.LikelihoodModelResults + + Attributes + ---------- + model : class instance + Pointer to MixedLM model instance that called fit. + normalized_cov_params : array + The sampling covariance matrix of the estimates + params : array + A packed parameter vector for the profile parameterization. + The first `k_fe` elements are the estimated fixed effects + coefficients. The remaining elements are the estimated + variance parameters. The variance parameters are all divided + by `scale` and are not the variance parameters shown + in the summary. + fe_params : array + The fitted fixed-effects coefficients + cov_re : array + The fitted random-effects covariance matrix + bse_fe : array + The standard errors of the fitted fixed effects coefficients + bse_re : array + The standard errors of the fitted random effects covariance + matrix and variance components. The first `k_re * (k_re + 1)` + parameters are the standard errors for the lower triangle of + `cov_re`, the remaining elements are the standard errors for + the variance components. + + See Also + -------- + statsmodels.LikelihoodModelResults + ''' + + def __init__(self, model, params, cov_params): + + super(MixedLMResults, self).__init__(model, params, + normalized_cov_params=cov_params) + self.nobs = self.model.nobs + self.df_resid = self.nobs - np.linalg.matrix_rank(self.model.exog) + + @cache_readonly + def fittedvalues(self): + """ + Returns the fitted values for the model. + + The fitted values reflect the mean structure specified by the + fixed effects and the predicted random effects. + """ + fit = np.dot(self.model.exog, self.fe_params) + re = self.random_effects + for group_ix, group in enumerate(self.model.group_labels): + ix = self.model.row_indices[group] + + mat = [] + if self.model.exog_re_li is not None: + mat.append(self.model.exog_re_li[group_ix]) + for c in self.model._vc_names: + if group in self.model.exog_vc[c]: + mat.append(self.model.exog_vc[c][group]) + mat = np.concatenate(mat, axis=1) + + fit[ix] += np.dot(mat, re[group]) + + return fit + + @cache_readonly + def resid(self): + """ + Returns the residuals for the model. + + The residuals reflect the mean structure specified by the + fixed effects and the predicted random effects. + """ + return self.model.endog - self.fittedvalues + + @cache_readonly + def bse_fe(self): + """ + Returns the standard errors of the fixed effect regression + coefficients. + """ + p = self.model.exog.shape[1] + return np.sqrt(np.diag(self.cov_params())[0:p]) + + @cache_readonly + def bse_re(self): + """ + Returns the standard errors of the variance parameters. + + The first `k_re x (k_re + 1)` elements of the returned array + are the standard errors of the lower triangle of `cov_re`. + The remaining elements are the standard errors of the variance + components. + + Note that the sampling distribution of variance parameters is + strongly skewed unless the sample size is large, so these + standard errors may not give meaningful confidence intervals + or p-values if used in the usual way. + """ + p = self.model.exog.shape[1] + return np.sqrt(self.scale * np.diag(self.cov_params())[p:]) + + def _expand_re_names(self, group): + names = list(self.model.data.exog_re_names) + + for v in self.model._vc_names: + vg = self.model._exog_vc_names[group][v] + na = ["%s[%s]" % (v, s) for s in vg] + names.extend(na) + + return names + + @cache_readonly + def random_effects(self): + """ + The conditional means of random effects given the data. + + Returns + ------- + random_effects : dict + A dictionary mapping the distinct `group` values to the + conditional means of the random effects for the group + given the data. + """ + try: + cov_re_inv = np.linalg.inv(self.cov_re) + except np.linalg.LinAlgError: + raise ValueError("Cannot predict random effects from " + + "singular covariance structure.") + + vcomp = self.vcomp + k_re = self.k_re + + ranef_dict = {} + for group_ix, group in enumerate(self.model.group_labels): + + endog = self.model.endog_li[group_ix] + exog = self.model.exog_li[group_ix] + ex_r = self.model._aex_r[group_ix] + ex2_r = self.model._aex_r2[group_ix] + vc_var = self.model._expand_vcomp(vcomp, group) + + # Get the residuals relative to fixed effects + resid = endog + if self.k_fe > 0: + expval = np.dot(exog, self.fe_params) + resid = resid - expval + + solver = _smw_solver(self.scale, ex_r, ex2_r, cov_re_inv, + 1 / vc_var) + vir = solver(resid) + + xtvir = _dot(ex_r.T, vir) + + xtvir[0:k_re] = np.dot(self.cov_re, xtvir[0:k_re]) + xtvir[k_re:] *= vc_var + ranef_dict[group] = pd.Series( + xtvir, index=self._expand_re_names(group)) + + return ranef_dict + + @cache_readonly + def random_effects_cov(self): + """ + Returns the conditional covariance matrix of the random + effects for each group given the data. + + Returns + ------- + random_effects_cov : dict + A dictionary mapping the distinct values of the `group` + variable to the conditional covariance matrix of the + random effects given the data. + """ + + try: + cov_re_inv = np.linalg.inv(self.cov_re) + except np.linalg.LinAlgError: + cov_re_inv = None + + vcomp = self.vcomp + + ranef_dict = {} + for group_ix in range(self.model.n_groups): + + ex_r = self.model._aex_r[group_ix] + ex2_r = self.model._aex_r2[group_ix] + label = self.model.group_labels[group_ix] + vc_var = self.model._expand_vcomp(vcomp, label) + + solver = _smw_solver(self.scale, ex_r, ex2_r, cov_re_inv, + 1 / vc_var) + + n = ex_r.shape[0] + m = self.cov_re.shape[0] + mat1 = np.empty((n, m + len(vc_var))) + mat1[:, 0:m] = np.dot(ex_r[:, 0:m], self.cov_re) + mat1[:, m:] = np.dot(ex_r[:, m:], np.diag(vc_var)) + mat2 = solver(mat1) + mat2 = np.dot(mat1.T, mat2) + + v = -mat2 + v[0:m, 0:m] += self.cov_re + ix = np.arange(m, v.shape[0]) + v[ix, ix] += vc_var + na = self._expand_re_names(label) + v = pd.DataFrame(v, index=na, columns=na) + ranef_dict[label] = v + + return ranef_dict + + # Need to override since t-tests are only used for fixed effects + # parameters. + def t_test(self, r_matrix, scale=None, use_t=None): + """ + Compute a t-test for a each linear hypothesis of the form Rb = q + + Parameters + ---------- + r_matrix : array-like + If an array is given, a p x k 2d array or length k 1d + array specifying the linear restrictions. It is assumed + that the linear combination is equal to zero. + scale : float, optional + An optional `scale` to use. Default is the scale specified + by the model fit. + use_t : bool, optional + If use_t is None, then the default of the model is used. + If use_t is True, then the p-values are based on the t + distribution. + If use_t is False, then the p-values are based on the normal + distribution. + + Returns + ------- + res : ContrastResults instance + The results for the test are attributes of this results instance. + The available results have the same elements as the parameter table + in `summary()`. + """ + if scale is not None: + import warnings + warnings.warn('scale is has no effect and is deprecated. It will' + 'be removed in the next version.', + DeprecationWarning) + + if r_matrix.shape[1] != self.k_fe: + raise ValueError("r_matrix for t-test should have %d columns" + % self.k_fe) + + d = self.k_re2 + self.k_vc + z0 = np.zeros((r_matrix.shape[0], d)) + r_matrix = np.concatenate((r_matrix, z0), axis=1) + tst_rslt = super(MixedLMResults, self).t_test(r_matrix, use_t=use_t) + return tst_rslt + + def summary(self, yname=None, xname_fe=None, xname_re=None, + title=None, alpha=.05): + """ + Summarize the mixed model regression results. + + Parameters + ---------- + yname : string, optional + Default is `y` + xname_fe : list of strings, optional + Fixed effects covariate names + xname_re : list of strings, optional + Random effects covariate names + title : string, optional + Title for the top table. If not None, then this replaces + the default title + alpha : float + significance level for the confidence intervals + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be + printed or converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary2.Summary : class to hold summary results + """ + + from statsmodels.iolib import summary2 + smry = summary2.Summary() + + info = OrderedDict() + info["Model:"] = "MixedLM" + if yname is None: + yname = self.model.endog_names + + param_names = self.model.data.param_names[:] + k_fe_params = len(self.fe_params) + k_re_params = len(param_names) - len(self.fe_params) + + if xname_fe is not None: + if len(xname_fe) != k_fe_params: + msg = "xname_fe should be a list of length %d" % k_fe_params + raise ValueError(msg) + param_names[:k_fe_params] = xname_fe + + if xname_re is not None: + if len(xname_re) != k_re_params: + msg = "xname_re should be a list of length %d" % k_re_params + raise ValueError(msg) + param_names[k_fe_params:] = xname_re + + info["No. Observations:"] = str(self.model.n_totobs) + info["No. Groups:"] = str(self.model.n_groups) + + gs = np.array([len(x) for x in self.model.endog_li]) + info["Min. group size:"] = "%.0f" % min(gs) + info["Max. group size:"] = "%.0f" % max(gs) + info["Mean group size:"] = "%.1f" % np.mean(gs) + + info["Dependent Variable:"] = yname + info["Method:"] = self.method + info["Scale:"] = self.scale + info["Likelihood:"] = self.llf + info["Converged:"] = "Yes" if self.converged else "No" + smry.add_dict(info) + smry.add_title("Mixed Linear Model Regression Results") + + float_fmt = "%.3f" + + sdf = np.nan * np.ones((self.k_fe + self.k_re2 + self.k_vc, 6)) + + # Coefficient estimates + sdf[0:self.k_fe, 0] = self.fe_params + + # Standard errors + sdf[0:self.k_fe, 1] = np.sqrt(np.diag(self.cov_params()[0:self.k_fe])) + + # Z-scores + sdf[0:self.k_fe, 2] = sdf[0:self.k_fe, 0] / sdf[0:self.k_fe, 1] + + # p-values + sdf[0:self.k_fe, 3] = 2 * norm.cdf(-np.abs(sdf[0:self.k_fe, 2])) + + # Confidence intervals + qm = -norm.ppf(alpha / 2) + sdf[0:self.k_fe, 4] = sdf[0:self.k_fe, 0] - qm * sdf[0:self.k_fe, 1] + sdf[0:self.k_fe, 5] = sdf[0:self.k_fe, 0] + qm * sdf[0:self.k_fe, 1] + + # All random effects variances and covariances + jj = self.k_fe + for i in range(self.k_re): + for j in range(i + 1): + sdf[jj, 0] = self.cov_re[i, j] + sdf[jj, 1] = np.sqrt(self.scale) * self.bse[jj] + jj += 1 + + # Variance components + for i in range(self.k_vc): + sdf[jj, 0] = self.vcomp[i] + sdf[jj, 1] = np.sqrt(self.scale) * self.bse[jj] + jj += 1 + + sdf = pd.DataFrame(index=param_names, data=sdf) + sdf.columns = ['Coef.', 'Std.Err.', 'z', 'P>|z|', + '[' + str(alpha/2), str(1-alpha/2) + ']'] + for col in sdf.columns: + sdf[col] = [float_fmt % x if np.isfinite(x) else "" + for x in sdf[col]] + + smry.add_df(sdf, align='r') + + return smry + + @cache_readonly + def llf(self): + return self.model.loglike(self.params_object, profile_fe=False) + + @cache_readonly + def aic(self): + """Akaike information criterion""" + if self.reml: + return np.nan + if self.freepat is not None: + df = self.freepat.get_packed(use_sqrt=False, has_fe=True).sum() + 1 + else: + df = self.params.size + 1 + return -2 * (self.llf - df) + + @cache_readonly + def bic(self): + """Bayesian information criterion""" + if self.reml: + return np.nan + if self.freepat is not None: + df = self.freepat.get_packed(use_sqrt=False, has_fe=True).sum() + 1 + else: + df = self.params.size + 1 + return -2 * self.llf + np.log(self.nobs) * df + + def profile_re(self, re_ix, vtype, num_low=5, dist_low=1., num_high=5, + dist_high=1.): + """ + Profile-likelihood inference for variance parameters. + + Parameters + ---------- + re_ix : integer + If vtype is `re`, this value is the index of the variance + parameter for which to construct a profile likelihood. If + `vtype` is 'vc' then `re_ix` is the name of the variance + parameter to be profiled. + vtype : string + Either 're' or 'vc', depending on whether the profile + analysis is for a random effect or a variance component. + num_low : integer + The number of points at which to calculate the likelihood + below the MLE of the parameter of interest. + dist_low : float + The distance below the MLE of the parameter of interest to + begin calculating points on the profile likelihood. + num_high : integer + The number of points at which to calculate the likelihood + abov the MLE of the parameter of interest. + dist_high : float + The distance above the MLE of the parameter of interest to + begin calculating points on the profile likelihood. + + Returns + ------- + An array with two columns. The first column contains the + values to which the parameter of interest is constrained. The + second column contains the corresponding likelihood values. + + Notes + ----- + Only variance parameters can be profiled. + """ + + pmodel = self.model + k_fe = pmodel.k_fe + k_re = pmodel.k_re + k_vc = pmodel.k_vc + endog, exog = pmodel.endog, pmodel.exog + + # Need to permute the columns of the random effects design + # matrix so that the profiled variable is in the first column. + if vtype == 're': + ix = np.arange(k_re) + ix[0] = re_ix + ix[re_ix] = 0 + exog_re = pmodel.exog_re.copy()[:, ix] + + # Permute the covariance structure to match the permuted + # design matrix. + params = self.params_object.copy() + cov_re_unscaled = params.cov_re + cov_re_unscaled = cov_re_unscaled[np.ix_(ix, ix)] + params.cov_re = cov_re_unscaled + ru0 = cov_re_unscaled[0, 0] + + # Convert dist_low and dist_high to the profile + # parameterization + cov_re = self.scale * cov_re_unscaled + low = (cov_re[0, 0] - dist_low) / self.scale + high = (cov_re[0, 0] + dist_high) / self.scale + + elif vtype == 'vc': + re_ix = self.model._vc_names.index(re_ix) + params = self.params_object.copy() + vcomp = self.vcomp + low = (vcomp[re_ix] - dist_low) / self.scale + high = (vcomp[re_ix] + dist_high) / self.scale + ru0 = vcomp[re_ix] / self.scale + + # Define the sequence of values to which the parameter of + # interest will be constrained. + if low <= 0: + raise ValueError("dist_low is too large and would result in a " + "negative variance. Try a smaller value.") + left = np.linspace(low, ru0, num_low + 1) + right = np.linspace(ru0, high, num_high+1)[1:] + rvalues = np.concatenate((left, right)) + + # Indicators of which parameters are free and fixed. + free = MixedLMParams(k_fe, k_re, k_vc) + if self.freepat is None: + free.fe_params = np.ones(k_fe) + vcomp = np.ones(k_vc) + mat = np.ones((k_re, k_re)) + else: + # If a freepat already has been specified, we add the + # constraint to it. + free.fe_params = self.freepat.fe_params + vcomp = self.freepat.vcomp + mat = self.freepat.cov_re + if vtype == 're': + mat = mat[np.ix_(ix, ix)] + if vtype == 're': + mat[0, 0] = 0 + else: + vcomp[re_ix] = 0 + free.cov_re = mat + free.vcomp = vcomp + + klass = self.model.__class__ + init_kwargs = pmodel._get_init_kwds() + if vtype == 're': + init_kwargs['exog_re'] = exog_re + + likev = [] + for x in rvalues: + + model = klass(endog, exog, **init_kwargs) + + if vtype == 're': + cov_re = params.cov_re.copy() + cov_re[0, 0] = x + params.cov_re = cov_re + else: + params.vcomp[re_ix] = x + + # TODO should use fit_kwargs + rslt = model.fit(start_params=params, free=free, + reml=self.reml, cov_pen=self.cov_pen)._results + likev.append([x * rslt.scale, rslt.llf]) + + likev = np.asarray(likev) + + return likev + + +class MixedLMResultsWrapper(base.LikelihoodResultsWrapper): + _attrs = {'bse_re': ('generic_columns', 'exog_re_names_full'), + 'fe_params': ('generic_columns', 'xnames'), + 'bse_fe': ('generic_columns', 'xnames'), + 'cov_re': ('generic_columns_2d', 'exog_re_names'), + 'cov_re_unscaled': ('generic_columns_2d', 'exog_re_names'), + } + _upstream_attrs = base.LikelihoodResultsWrapper._wrap_attrs + _wrap_attrs = base.wrap.union_dicts(_attrs, _upstream_attrs) + + _methods = {} + _upstream_methods = base.LikelihoodResultsWrapper._wrap_methods + _wrap_methods = base.wrap.union_dicts(_methods, _upstream_methods) + + +def _handle_missing(data, groups, formula, re_formula, vc_formula): + + tokens = set([]) + + forms = [formula] + if re_formula is not None: + forms.append(re_formula) + if vc_formula is not None: + forms.extend(vc_formula.values()) + + import tokenize + from statsmodels.compat import PY3 + from statsmodels.compat.python import StringIO, asunicode + skiptoks = {"(", ")", "*", ":", "+", "-", "**", "/"} + + for fml in forms: + # Unicode conversion is for Py2 compatability + rl = StringIO(fml) + + def rlu(): + line = rl.readline() + return asunicode(line, 'ascii') + g = tokenize.generate_tokens(rlu) + for tok in g: + if tok not in skiptoks: + if PY3: + tokens.add(tok.string) + else: + tokens.add(tok[1]) + tokens = list(tokens & set(data.columns)) + tokens.sort() + + data = data[tokens] + ii = pd.notnull(data).all(1) + if type(groups) != "str": + ii &= pd.notnull(groups) + + return data.loc[ii, :], groups[np.asarray(ii)] diff --git a/statsmodels/regression/process_regression.py b/statsmodels/regression/process_regression.py new file mode 100644 index 0000000..c81bc02 --- /dev/null +++ b/statsmodels/regression/process_regression.py @@ -0,0 +1,852 @@ +# -*- coding: utf-8 -*- +""" +This module implements maximum likelihood-based estimation (MLE) of +Gaussian models for finite-dimensional observations made on +infinite-dimensional processes. + +The ProcessMLE class supports regression analyses on grouped data, +where the observations within a group are dependent (they are made on +the same underlying process). The main application is repeated +measures regression for temporal (longitudinal) data, in which the +repeated measures occur at arbitrary real-valued time points. + +The mean structure is specified as a linear model. The covariance +parameters depend on covariates via a link function. +""" + +import numpy as np +import pandas as pd +import patsy +import statsmodels.base.model as base +import statsmodels.api as sm +import collections +from statsmodels.compat.python import string_types +from scipy.optimize import minimize +from statsmodels.iolib import summary2 +from statsmodels.tools.numdiff import approx_fprime +import warnings + + +class ProcessCovariance(object): + r""" + A covariance model for a process indexed by a real parameter. + + An implementation of this class is based on a positive definite + correlation function h that maps real numbers to the interval [0, + 1], such as the Gaussian (squared exponential) correlation + function :math:`\exp(-x^2)`. It also depends on a positive + scaling function `s` and a positive smoothness function `u`. + """ + + def get_cov(self, time, sc, sm): + """ + Returns the covariance matrix for given time values. + + Parameters + ---------- + time : array-like + The time points for the observations. If len(time) = p, + a pxp covariance matrix is returned. + sc : array-like + The scaling parameters for the observations. + sm : array-like + The smoothness parameters for the observation. See class + docstring for details. + """ + raise NotImplementedError + + def jac(self, time, sc, sm): + """ + The Jacobian of the covariance respect to the parameters. + + See get_cov for parameters. + + Returns + ------- + jsc : list-like + jsc[i] is the derivative of the covariance matrix + with respect to the i^th scaling parameter. + jsm : list-like + jsm[i] is the derivative of the covariance matrix + with respect to the i^th smoothness parameter. + """ + raise NotImplementedError + + +class GaussianCovariance(ProcessCovariance): + r""" + An implementation of ProcessCovariance using the Gaussian kernel. + + This class represents a parametric covariance model for a Gaussian + process as described in the work of Paciorek et al. cited below. + + Following Paciorek et al [1]_, the covariance between observations with + index `i` and `j` is given by: + + .. math:: + + s[i] \cdot s[j] \cdot h(|time[i] - time[j]| / \sqrt{(u[i] + u[j]) / + 2}) \cdot \frac{u[i]^{1/4}u[j]^{1/4}}{\sqrt{(u[i] + u[j])/2}} + + The ProcessMLE class allows linear models with this covariance + structure to be fit using maximum likelihood (ML), which is + equivalent to generalized least squares (GLS) in this setting. + + The mean and covariance parameters of the model are fit jointly. + The mean, scaling, and smoothing parameters can be linked to + covariates. The mean parameters are linked linearly, and the + scaling and smoothing parameters use an exponential link to + preserve positivity. + + The reference of Paciorek et al. below provides more details. + Note that here we only implement the 1-dimensional version of + their approach. + + References + ---------- + .. [1] Paciorek, C. J. and Schervish, M. J. (2006). Spatial modeling using + a new class of nonstationary covariance functions. Environmetrics, + 17:483–506. + https://papers.nips.cc/paper/2350-nonstationary-covariance-functions-for-gaussian-process-regression.pdf + """ + + def get_cov(self, time, sc, sm): + + da = np.subtract.outer(time, time) + ds = np.add.outer(sm, sm) / 2 + + qmat = da * da / ds + cm = np.exp(-qmat / 2) / np.sqrt(ds) + cm *= np.outer(sm, sm)**0.25 + cm *= np.outer(sc, sc) + + return cm + + def jac(self, time, sc, sm): + + da = np.subtract.outer(time, time) + ds = np.add.outer(sm, sm) / 2 + sds = np.sqrt(ds) + daa = da * da + qmat = daa / ds + p = len(time) + eqm = np.exp(-qmat / 2) + sm4 = np.outer(sm, sm)**0.25 + cmx = eqm * sm4 / sds + dq0 = -daa / ds**2 + di = np.zeros((p, p)) + fi = np.zeros((p, p)) + scc = np.outer(sc, sc) + + # Derivatives with respect to the smoothing parameters. + jsm = [] + for i, _ in enumerate(sm): + di *= 0 + di[i, :] += 0.5 + di[:, i] += 0.5 + dbottom = 0.5 * di / sds + dtop = -0.5 * eqm * dq0 * di + b = dtop / sds - eqm * dbottom / ds + c = eqm / sds + v = 0.25 * sm**0.25 / sm[i]**0.75 + fi *= 0 + fi[i, :] = v + fi[:, i] = v + fi[i, i] = 0.5 / sm[i]**0.5 + b = c * fi + b * sm4 + b *= scc + jsm.append(b) + + # Derivatives with respect to the scaling parameters. + jsc = [] + for i in range(0, len(sc)): + b = np.zeros((p, p)) + b[i, :] = cmx[i, :] * sc + b[:, i] += cmx[:, i] * sc + jsc.append(b) + + return jsc, jsm + + +def _check_args(endog, exog, exog_scale, exog_smooth, exog_noise, time, + groups): + + v = [ + len(endog), + exog.shape[0], + exog_scale.shape[0], + exog_smooth.shape[0], + exog_noise.shape[0], + len(time), + len(groups) + ] + if min(v) != max(v): + msg = ("The leading dimensions of all array arguments " + + "must be equal.") + raise ValueError(msg) + + +class ProcessMLE(base.LikelihoodModel): + """ + Fit a Gaussian mean/variance regression model. + + This class fits a one-dimensional Gaussian process model with + parameterized mean and covariance structures to grouped data. For + each group, there is an independent realization of a latent + Gaussian process indexed by an observed real-valued time + variable.. The data consist of the Gaussian process observed at a + finite number of `time` values. + + The process mean and variance can be lined to covariates. The + mean structure is linear in the covariates. The covariance + structure is non-stationary, and is defined parametrically through + 'scaling', and 'smoothing' parameters. The covariance of the + process between two observations in the same group is a function + of the distance between the time values of the two observations. + The scaling and smoothing parameters can be linked to covariates. + + The observed data are modeled as the sum of the Gaussian process + realization and independent white noise. The standard deviation + of the white noise can be linked to covariates. + + The data should be provided in 'long form', with a group label to + indicate which observations belong to the same group. + Observations in different groups are always independent. + + Parameters + ---------- + endog : array-like + The dependent variable. + exog : array-like + The design matrix for the mean structure + exog_scale : array-like + The design matrix for the scaling structure + exog_smooth : array-like + The design matrix for the smoothness structure + exog_noise : array-like + The design matrix for the white noise structure. The + linear predictor is the log of the white noise standard + deviation. + time : array-like (1-dimensional) + The univariate index values, used to calculate distances + between observations in the same group, which determines + their correlations. + groups : array-like (1-dimensional) + The group values. + cov : a ProcessCovariance instance + Defaults to GaussianCovariance. + """ + + def __init__(self, + endog, + exog, + exog_scale, + exog_smooth, + exog_noise, + time, + groups, + cov=None, + **kwargs): + + super(ProcessMLE, self).__init__( + endog, + exog, + exog_scale=exog_scale, + exog_smooth=exog_smooth, + exog_noise=exog_noise, + time=time, + groups=groups, + **kwargs) + + # Create parameter names + xnames = [] + if hasattr(exog, "columns"): + xnames = list(exog.columns) + else: + xnames = ["Mean%d" % j for j in range(exog.shape[1])] + + if hasattr(exog_scale, "columns"): + xnames += list(exog_scale.columns) + else: + xnames += ["Scale%d" % j for j in range(exog_scale.shape[1])] + + if hasattr(exog_smooth, "columns"): + xnames += list(exog_smooth.columns) + else: + xnames += ["Smooth%d" % j for j in range(exog_smooth.shape[1])] + + if hasattr(exog_noise, "columns"): + xnames += list(exog_noise.columns) + else: + xnames += ["Noise%d" % j for j in range(exog_noise.shape[1])] + + self.data.param_names = xnames + + if cov is None: + cov = GaussianCovariance() + self.cov = cov + + _check_args(endog, exog, exog_scale, exog_smooth, exog_noise, + time, groups) + + groups_ix = collections.defaultdict(lambda: []) + for i, g in enumerate(groups): + groups_ix[g].append(i) + self._groups_ix = groups_ix + + # Default, can be set in call to fit. + self.verbose = False + + self.k_exog = self.exog.shape[1] + self.k_scale = self.exog_scale.shape[1] + self.k_smooth = self.exog_smooth.shape[1] + self.k_noise = self.exog_noise.shape[1] + + def _split_param_names(self): + xnames = self.data.param_names + q = 0 + mean_names = xnames[q:q+self.k_exog] + q += self.k_exog + scale_names = xnames[q:q+self.k_scale] + q += self.k_scale + smooth_names = xnames[q:q+self.k_smooth] + q += self.k_noise + noise_names = xnames[q:q+self.k_noise] + return mean_names, scale_names, smooth_names, noise_names + + @classmethod + def from_formula(cls, + formula, + data, + subset=None, + drop_cols=None, + *args, + **kwargs): + + if "scale_formula" in kwargs: + scale_formula = kwargs["scale_formula"] + else: + raise ValueError("scale_formula is a required argument") + + if "smooth_formula" in kwargs: + smooth_formula = kwargs["smooth_formula"] + else: + raise ValueError("smooth_formula is a required argument") + + if "noise_formula" in kwargs: + noise_formula = kwargs["noise_formula"] + else: + raise ValueError("noise_formula is a required argument") + + if "time" in kwargs: + time = kwargs["time"] + else: + raise ValueError("time is a required argument") + + if "groups" in kwargs: + groups = kwargs["groups"] + else: + raise ValueError("groups is a required argument") + + if subset is not None: + warnings.warn("'subset' is ignored") + + if drop_cols is not None: + warnings.warn("'drop_cols' is ignored") + + if isinstance(time, string_types): + time = np.asarray(data[time]) + + if isinstance(groups, string_types): + groups = np.asarray(data[groups]) + + exog_scale = patsy.dmatrix(scale_formula, data) + scale_design_info = exog_scale.design_info + scale_names = scale_design_info.column_names + exog_scale = np.asarray(exog_scale) + + exog_smooth = patsy.dmatrix(smooth_formula, data) + smooth_design_info = exog_smooth.design_info + smooth_names = smooth_design_info.column_names + exog_smooth = np.asarray(exog_smooth) + + exog_noise = patsy.dmatrix(noise_formula, data) + noise_design_info = exog_noise.design_info + noise_names = noise_design_info.column_names + exog_noise = np.asarray(exog_noise) + + mod = super(ProcessMLE, cls).from_formula( + formula, + data=data, + subset=None, + exog_scale=exog_scale, + exog_smooth=exog_smooth, + exog_noise=exog_noise, + time=time, + groups=groups) + + mod.data.scale_design_info = scale_design_info + mod.data.smooth_design_info = smooth_design_info + mod.data.noise_design_info = noise_design_info + mod.data.param_names = (mod.exog_names + scale_names + + smooth_names + noise_names) + + return mod + + def unpack(self, z): + """ + Split the packed parameter vector into blocks. + """ + + # Mean parameters + pm = self.exog.shape[1] + mnpar = z[0:pm] + + # Standard deviation parameters + pv = self.exog_scale.shape[1] + scpar = z[pm:pm + pv] + + # Smoothness parameters + ps = self.exog_smooth.shape[1] + smpar = z[pm + pv:pm + pv + ps] + + # Observation white noise standard deviation + nopar = z[pm + pv + ps:] + + return mnpar, scpar, smpar, nopar + + def _get_start(self): + + # Use OLS to get starting values for mean structure parameters + model = sm.OLS(self.endog, self.exog) + result = model.fit() + + m = self.exog_scale.shape[1] + self.exog_smooth.shape[1] + m += self.exog_noise.shape[1] + + return np.concatenate((result.params, np.zeros(m))) + + def loglike(self, params): + """ + Calculate the log-likelihood function for the model. + + Parameters + ---------- + params : array-like + The packed parameters for the model. + + Returns + ------- + The log-likelihood value at the given parameter point. + + Notes + ----- + The mean, scaling, and smoothing parameters are packed into + a vector. Use `unpack` to access the component vectors. + """ + + mnpar, scpar, smpar, nopar = self.unpack(params) + + # Residuals + resid = self.endog - np.dot(self.exog, mnpar) + + # Scaling parameters + sc = np.exp(np.dot(self.exog_scale, scpar)) + + # Smoothness parameters + sm = np.exp(np.dot(self.exog_smooth, smpar)) + + # White noise standard deviation + no = np.exp(np.dot(self.exog_noise, nopar)) + + # Get the log-likelihood + ll = 0. + for _, ix in self._groups_ix.items(): + + # Get the covariance matrix for this person. + cm = self.cov.get_cov(self.time[ix], sc[ix], sm[ix]) + cm.flat[::cm.shape[0] + 1] += no[ix]**2 + + re = resid[ix] + ll -= 0.5 * np.linalg.slogdet(cm)[1] + ll -= 0.5 * np.dot(re, np.linalg.solve(cm, re)) + + if self.verbose: + print("L=", ll) + + return ll + + def score(self, params): + """ + Calculate the score function for the model. + + Parameters + ---------- + params : array-like + The packed parameters for the model. + + Returns + ------- + The score vector at the given parameter point. + + Notes + ----- + The mean, scaling, and smoothing parameters are packed into + a vector. Use `unpack` to access the component vectors. + """ + + mnpar, scpar, smpar, nopar = self.unpack(params) + pm, pv, ps = len(mnpar), len(scpar), len(smpar) + + # Residuals + resid = self.endog - np.dot(self.exog, mnpar) + + # Scaling + sc = np.exp(np.dot(self.exog_scale, scpar)) + + # Smoothness + sm = np.exp(np.dot(self.exog_smooth, smpar)) + + # White noise standard deviation + no = np.exp(np.dot(self.exog_noise, nopar)) + + # Get the log-likelihood + score = np.zeros(len(mnpar) + len(scpar) + len(smpar) + len(nopar)) + for _, ix in self._groups_ix.items(): + + sc_i = sc[ix] + sm_i = sm[ix] + no_i = no[ix] + resid_i = resid[ix] + time_i = self.time[ix] + exog_i = self.exog[ix, :] + exog_scale_i = self.exog_scale[ix, :] + exog_smooth_i = self.exog_smooth[ix, :] + exog_noise_i = self.exog_noise[ix, :] + + # Get the covariance matrix for this person. + cm = self.cov.get_cov(time_i, sc_i, sm_i) + cm.flat[::cm.shape[0] + 1] += no[ix]**2 + cmi = np.linalg.inv(cm) + + jacv, jacs = self.cov.jac(time_i, sc_i, sm_i) + + # The derivatives for the mean parameters. + dcr = np.linalg.solve(cm, resid_i) + score[0:pm] += np.dot(exog_i.T, dcr) + + # The derivatives for the scaling parameters. + rx = np.outer(resid_i, resid_i) + qm = np.linalg.solve(cm, rx) + qm = 0.5 * np.linalg.solve(cm, qm.T) + scx = sc_i[:, None] * exog_scale_i + for i, _ in enumerate(ix): + jq = np.sum(jacv[i] * qm) + score[pm:pm + pv] += jq * scx[i, :] + score[pm:pm + pv] -= 0.5 * np.sum(jacv[i] * cmi) * scx[i, :] + + # The derivatives for the smoothness parameters. + smx = sm_i[:, None] * exog_smooth_i + for i, _ in enumerate(ix): + jq = np.sum(jacs[i] * qm) + score[pm + pv:pm + pv + ps] += jq * smx[i, :] + score[pm + pv:pm + pv + ps] -= ( + 0.5 * np.sum(jacs[i] * cmi) * smx[i, :]) + + # The derivatives with respect to the standard deviation parameters + sno = no_i[:, None]**2 * exog_noise_i + score[pm + pv + ps:] -= np.dot(cmi.flat[::cm.shape[0] + 1], sno) + bm = np.dot(cmi, np.dot(rx, cmi)) + score[pm + pv + ps:] += np.dot(bm.flat[::bm.shape[0] + 1], sno) + + if self.verbose: + print("|G|=", np.sqrt(np.sum(score * score))) + + return score + + def hessian(self, params): + + hess = approx_fprime(params, self.score) + return hess + + def fit(self, start_params=None, method=None, maxiter=None, + **kwargs): + """ + Fit a grouped Gaussian process regression using MLE. + + Parameters + ---------- + start_params : array-like + Optional starting values. + method : string or array of strings + Method or sequence of methods for scipy optimize. + maxiter : int + The maximum number of iterations in the optimization. + + Returns + ------- + An instance of ProcessMLEResults. + """ + + if "verbose" in kwargs: + self.verbose = kwargs["verbose"] + + minim_opts = {} + if "minim_opts" in kwargs: + minim_opts = kwargs["minim_opts"] + + if start_params is None: + start_params = self._get_start() + + if isinstance(method, str): + method = [method] + elif method is None: + method = ["powell", "bfgs"] + + for j, meth in enumerate(method): + + if meth not in ("powell",): + def jac(x): + return -self.score(x) + else: + jac = None + + if maxiter is not None: + if np.isscalar(maxiter): + minim_opts["maxiter"] = maxiter + else: + minim_opts["maxiter"] = maxiter[j % len(maxiter)] + + f = minimize( + lambda x: -self.loglike(x), + method=meth, + x0=start_params, + jac=jac, + options=minim_opts) + + if not f.success: + msg = "Fitting did not converge" + if jac is not None: + msg += ", |gradient|=%.6f" % np.sqrt(np.sum(f.jac**2)) + if j < len(method) - 1: + msg += ", trying %s next..." % method[j+1] + warnings.warn(msg) + + if np.isfinite(f.x).all(): + start_params = f.x + + hess = self.hessian(f.x) + try: + cov_params = -np.linalg.inv(hess) + except Exception: + cov_params = None + + class rslt: + pass + + r = rslt() + r.params = f.x + r.normalized_cov_params = cov_params + r.optim_retvals = f + r.scale = 1 + + rslt = ProcessMLEResults(self, r) + + return rslt + + def covariance(self, time, scale_params, smooth_params, scale_data, + smooth_data): + """ + Returns a Gaussian process covariance matrix. + + Parameters + ---------- + time : array-like + The time points at which the fitted covariance matrix is + calculated. + scale_params : array-like + The regression parameters for the scaling part + of the covariance structure. + smooth_params : array-like + The regression parameters for the smoothing part + of the covariance structure. + scale_data : Dataframe + The data used to determine the scale parameter, + must have len(time) rows. + smooth_data: Dataframe + The data used to determine the smoothness parameter, + must have len(time) rows. + + Returns + ------- + A covariance matrix. + + Notes + ----- + If the model was fit using formulas, `scale` and `smooth` should + be Dataframes, containing all variables that were present in the + respective scaling and smoothing formulas used to fit the model. + Otherwise, `scale` and `smooth` should contain data arrays whose + columns align with the fitted scaling and smoothing parameters. + + The covariance is only for the Gaussian process and does not include + the white noise variance. + """ + + if not hasattr(self.data, "scale_design_info"): + sca = np.dot(scale_data, scale_params) + smo = np.dot(smooth_data, smooth_params) + else: + sc = patsy.dmatrix(self.data.scale_design_info, scale_data) + sm = patsy.dmatrix(self.data.smooth_design_info, smooth_data) + sca = np.exp(np.dot(sc, scale_params)) + smo = np.exp(np.dot(sm, smooth_params)) + + return self.cov.get_cov(time, sca, smo) + + def predict(self, params, exog=None, *args, **kwargs): + """ + Obtain predictions of the mean structure. + + Parameters + ---------- + params : array-like + The model parameters, may be truncated to include only mean + parameters. + exog : array-like + The design matrix for the mean structure. If not provided, + the model's design matrix is used. + """ + + if exog is None: + exog = self.exog + elif hasattr(self.data, "design_info"): + # Run the provided data through the formula if present + exog = patsy.dmatrix(self.data.design_info, exog) + + if len(params) > exog.shape[1]: + params = params[0:exog.shape[1]] + + return np.dot(exog, params) + + +class ProcessMLEResults(base.GenericLikelihoodModelResults): + """ + Results class for Gaussian process regression models. + """ + + def __init__(self, model, mlefit): + + super(ProcessMLEResults, self).__init__( + model, mlefit) + + pa = model.unpack(mlefit.params) + + self.mean_params = pa[0] + self.scale_params = pa[1] + self.smooth_params = pa[2] + self.no_params = pa[3] + + self.df_resid = model.endog.shape[0] - len(mlefit.params) + + self.k_exog = self.model.exog.shape[1] + self.k_scale = self.model.exog_scale.shape[1] + self.k_smooth = self.model.exog_smooth.shape[1] + self.k_noise = self.model.exog_noise.shape[1] + + def predict(self, exog=None, transform=True, *args, **kwargs): + + if not transform: + warnings.warn("'transform=False' is ignored in predict") + + if len(args) > 0 or len(kwargs) > 0: + warnings.warn("extra arguments ignored in 'predict'") + + return self.model.predict(self.params, exog) + + def covariance(self, time, scale, smooth): + """ + Returns a fitted covariance matrix. + + Parameters + ---------- + time : array-like + The time points at which the fitted covariance + matrix is calculated. + scale : array-like + The data used to determine the scale parameter, + must have len(time) rows. + smooth: array-like + The data used to determine the smoothness parameter, + must have len(time) rows. + + Returns + ------- + A covariance matrix. + + Notes + ----- + If the model was fit using formulas, `scale` and `smooth` should + be Dataframes, containing all variables that were present in the + respective scaling and smoothing formulas used to fit the model. + Otherwise, `scale` and `smooth` should be data arrays whose + columns align with the fitted scaling and smoothing parameters. + """ + + return self.model.covariance(time, self.scale_params, + self.smooth_params, scale, smooth) + + def covariance_group(self, group): + + # Check if the group exists, since _groups_ix is a + # DefaultDict use len instead of catching a KeyError. + ix = self.model._groups_ix[group] + if len(ix) == 0: + msg = "Group '%s' does not exist" % str(group) + raise ValueError(msg) + + scale_data = self.model.exog_scale[ix, :] + smooth_data = self.model.exog_smooth[ix, :] + + _, scale_names, smooth_names, _ = self.model._split_param_names() + + scale_data = pd.DataFrame(scale_data, columns=scale_names) + smooth_data = pd.DataFrame(smooth_data, columns=smooth_names) + time = self.model.time[ix] + + return self.model.covariance(time, + self.scale_params, + self.smooth_params, + scale_data, + smooth_data) + + def summary(self, yname=None, xname=None, title=None, alpha=0.05): + + df = pd.DataFrame() + + df["Type"] = (["Mean"] * self.k_exog + ["Scale"] * self.k_scale + + ["Smooth"] * self.k_smooth + ["SD"] * self.k_noise) + df["coef"] = self.params + + try: + df["std err"] = np.sqrt(np.diag(self.cov_params())) + except Exception: + df["std err"] = np.nan + + from scipy.stats.distributions import norm + df["tvalues"] = df.coef / df["std err"] + df["P>|t|"] = 2 * norm.sf(np.abs(df.tvalues)) + + f = norm.ppf(1 - alpha / 2) + df["[%.3f" % (alpha / 2)] = df.coef - f * df["std err"] + df["%.3f]" % (1 - alpha / 2)] = df.coef + f * df["std err"] + + df.index = self.model.data.param_names + + summ = summary2.Summary() + if title is None: + title = "Gaussian process regression results" + summ.add_title(title) + summ.add_df(df) + + return summ diff --git a/statsmodels/regression/quantile_regression.py b/statsmodels/regression/quantile_regression.py new file mode 100644 index 0000000..05fb99b --- /dev/null +++ b/statsmodels/regression/quantile_regression.py @@ -0,0 +1,414 @@ +#!/usr/bin/env python + +''' +Quantile regression model + +Model parameters are estimated using iterated reweighted least squares. The +asymptotic covariance matrix estimated using kernel density estimation. + +Author: Vincent Arel-Bundock +License: BSD-3 +Created: 2013-03-19 + +The original IRLS function was written for Matlab by Shapour Mohammadi, +University of Tehran, 2008 (shmohammadi@gmail.com), with some lines based on +code written by James P. Lesage in Applied Econometrics Using MATLAB(1999).PP. +73-4. Translated to python with permission from original author by Christian +Prinoth (christian at prinoth dot name). +''' + +from statsmodels.compat.python import range +import numpy as np +import warnings +import scipy.stats as stats +from scipy.linalg import pinv +from scipy.stats import norm +from statsmodels.tools.tools import chain_dot +from statsmodels.tools.decorators import cache_readonly +from statsmodels.regression.linear_model import (RegressionModel, + RegressionResults, + RegressionResultsWrapper) +from statsmodels.tools.sm_exceptions import (ConvergenceWarning, + IterationLimitWarning) + +class QuantReg(RegressionModel): + '''Quantile Regression + + Estimate a quantile regression model using iterative reweighted least + squares. + + Parameters + ---------- + endog : array or dataframe + endogenous/response variable + exog : array or dataframe + exogenous/explanatory variable(s) + + Notes + ----- + The Least Absolute Deviation (LAD) estimator is a special case where + quantile is set to 0.5 (q argument of the fit method). + + The asymptotic covariance matrix is estimated following the procedure in + Greene (2008, p.407-408), using either the logistic or gaussian kernels + (kernel argument of the fit method). + + References + ---------- + General: + + * Birkes, D. and Y. Dodge(1993). Alternative Methods of Regression, John Wiley and Sons. + * Green,W. H. (2008). Econometric Analysis. Sixth Edition. International Student Edition. + * Koenker, R. (2005). Quantile Regression. New York: Cambridge University Press. + * LeSage, J. P.(1999). Applied Econometrics Using MATLAB, + + Kernels (used by the fit method): + + * Green (2008) Table 14.2 + + Bandwidth selection (used by the fit method): + + * Bofinger, E. (1975). Estimation of a density function using order statistics. Australian Journal of Statistics 17: 1-17. + * Chamberlain, G. (1994). Quantile regression, censoring, and the structure of wages. In Advances in Econometrics, Vol. 1: Sixth World Congress, ed. C. A. Sims, 171-209. Cambridge: Cambridge University Press. + * Hall, P., and S. Sheather. (1988). On the distribution of the Studentized quantile. Journal of the Royal Statistical Society, Series B 50: 381-391. + + Keywords: Least Absolute Deviation(LAD) Regression, Quantile Regression, + Regression, Robust Estimation. + ''' + + def __init__(self, endog, exog, **kwargs): + super(QuantReg, self).__init__(endog, exog, **kwargs) + + def whiten(self, data): + """ + QuantReg model whitener does nothing: returns data. + """ + return data + + def fit(self, q=.5, vcov='robust', kernel='epa', bandwidth='hsheather', + max_iter=1000, p_tol=1e-6, **kwargs): + '''Solve by Iterative Weighted Least Squares + + Parameters + ---------- + q : float + Quantile must be between 0 and 1 + vcov : string, method used to calculate the variance-covariance matrix + of the parameters. Default is ``robust``: + + - robust : heteroskedasticity robust standard errors (as suggested + in Greene 6th edition) + - iid : iid errors (as in Stata 12) + + kernel : string, kernel to use in the kernel density estimation for the + asymptotic covariance matrix: + + - epa: Epanechnikov + - cos: Cosine + - gau: Gaussian + - par: Parzene + + bandwidth: string, Bandwidth selection method in kernel density + estimation for asymptotic covariance estimate (full + references in QuantReg docstring): + + - hsheather: Hall-Sheather (1988) + - bofinger: Bofinger (1975) + - chamberlain: Chamberlain (1994) + ''' + + if q < 0 or q > 1: + raise Exception('p must be between 0 and 1') + + kern_names = ['biw', 'cos', 'epa', 'gau', 'par'] + if kernel not in kern_names: + raise Exception("kernel must be one of " + ', '.join(kern_names)) + else: + kernel = kernels[kernel] + + if bandwidth == 'hsheather': + bandwidth = hall_sheather + elif bandwidth == 'bofinger': + bandwidth = bofinger + elif bandwidth == 'chamberlain': + bandwidth = chamberlain + else: + raise Exception("bandwidth must be in 'hsheather', 'bofinger', 'chamberlain'") + + endog = self.endog + exog = self.exog + nobs = self.nobs + exog_rank = np.linalg.matrix_rank(self.exog) + self.rank = exog_rank + self.df_model = float(self.rank - self.k_constant) + self.df_resid = self.nobs - self.rank + n_iter = 0 + xstar = exog + + beta = np.ones(exog_rank) + # TODO: better start, initial beta is used only for convergence check + + # Note the following doesn't work yet, + # the iteration loop always starts with OLS as initial beta +# if start_params is not None: +# if len(start_params) != rank: +# raise ValueError('start_params has wrong length') +# beta = start_params +# else: +# # start with OLS +# beta = np.dot(np.linalg.pinv(exog), endog) + + diff = 10 + cycle = False + + history = dict(params = [], mse=[]) + while n_iter < max_iter and diff > p_tol and not cycle: + n_iter += 1 + beta0 = beta + xtx = np.dot(xstar.T, exog) + xty = np.dot(xstar.T, endog) + beta = np.dot(pinv(xtx), xty) + resid = endog - np.dot(exog, beta) + + mask = np.abs(resid) < .000001 + resid[mask] = ((resid[mask] >= 0) * 2 - 1) * .000001 + resid = np.where(resid < 0, q * resid, (1-q) * resid) + resid = np.abs(resid) + xstar = exog / resid[:, np.newaxis] + diff = np.max(np.abs(beta - beta0)) + history['params'].append(beta) + history['mse'].append(np.mean(resid*resid)) + + if (n_iter >= 300) and (n_iter % 100 == 0): + # check for convergence circle, shouldn't happen + for ii in range(2, 10): + if np.all(beta == history['params'][-ii]): + cycle = True + warnings.warn("Convergence cycle detected", ConvergenceWarning) + break + + if n_iter == max_iter: + warnings.warn("Maximum number of iterations (" + str(max_iter) + + ") reached.", IterationLimitWarning) + + e = endog - np.dot(exog, beta) + # Greene (2008, p.407) writes that Stata 6 uses this bandwidth: + # h = 0.9 * np.std(e) / (nobs**0.2) + # Instead, we calculate bandwidth as in Stata 12 + iqre = stats.scoreatpercentile(e, 75) - stats.scoreatpercentile(e, 25) + h = bandwidth(nobs, q) + h = min(np.std(endog), + iqre / 1.34) * (norm.ppf(q + h) - norm.ppf(q - h)) + + fhat0 = 1. / (nobs * h) * np.sum(kernel(e / h)) + + if vcov == 'robust': + d = np.where(e > 0, (q/fhat0)**2, ((1-q)/fhat0)**2) + xtxi = pinv(np.dot(exog.T, exog)) + xtdx = np.dot(exog.T * d[np.newaxis, :], exog) + vcov = chain_dot(xtxi, xtdx, xtxi) + elif vcov == 'iid': + vcov = (1. / fhat0)**2 * q * (1 - q) * pinv(np.dot(exog.T, exog)) + else: + raise Exception("vcov must be 'robust' or 'iid'") + + lfit = QuantRegResults(self, beta, normalized_cov_params=vcov) + + lfit.q = q + lfit.iterations = n_iter + lfit.sparsity = 1. / fhat0 + lfit.bandwidth = h + lfit.history = history + + return RegressionResultsWrapper(lfit) + + +def _parzen(u): + z = np.where(np.abs(u) <= .5, 4./3 - 8. * u**2 + 8. * np.abs(u)**3, + 8. * (1 - np.abs(u))**3 / 3.) + z[np.abs(u) > 1] = 0 + return z + + +kernels = {} +kernels['biw'] = lambda u: 15. / 16 * (1 - u**2)**2 * np.where(np.abs(u) <= 1, 1, 0) +kernels['cos'] = lambda u: np.where(np.abs(u) <= .5, 1 + np.cos(2 * np.pi * u), 0) +kernels['epa'] = lambda u: 3. / 4 * (1-u**2) * np.where(np.abs(u) <= 1, 1, 0) +kernels['gau'] = lambda u: norm.pdf(u) +kernels['par'] = _parzen +#kernels['bet'] = lambda u: np.where(np.abs(u) <= 1, .75 * (1 - u) * (1 + u), 0) +#kernels['log'] = lambda u: logistic.pdf(u) * (1 - logistic.pdf(u)) +#kernels['tri'] = lambda u: np.where(np.abs(u) <= 1, 1 - np.abs(u), 0) +#kernels['trw'] = lambda u: 35. / 32 * (1 - u**2)**3 * np.where(np.abs(u) <= 1, 1, 0) +#kernels['uni'] = lambda u: 1. / 2 * np.where(np.abs(u) <= 1, 1, 0) + + +def hall_sheather(n, q, alpha=.05): + z = norm.ppf(q) + num = 1.5 * norm.pdf(z)**2. + den = 2. * z**2. + 1. + h = n**(-1. / 3) * norm.ppf(1. - alpha / 2.)**(2./3) * (num / den)**(1./3) + return h + + +def bofinger(n, q): + num = 9. / 2 * norm.pdf(2 * norm.ppf(q))**4 + den = (2 * norm.ppf(q)**2 + 1)**2 + h = n**(-1. / 5) * (num / den)**(1. / 5) + return h + + +def chamberlain(n, q, alpha=.05): + return norm.ppf(1 - alpha / 2) * np.sqrt(q*(1 - q) / n) + + +class QuantRegResults(RegressionResults): + '''Results instance for the QuantReg model''' + + @cache_readonly + def prsquared(self): + q = self.q + endog = self.model.endog + e = self.resid + e = np.where(e < 0, (1 - q) * e, q * e) + e = np.abs(e) + ered = endog - stats.scoreatpercentile(endog, q * 100) + ered = np.where(ered < 0, (1 - q) * ered, q * ered) + ered = np.abs(ered) + return 1 - np.sum(e) / np.sum(ered) + + #@cache_readonly + def scale(self): + return 1. + + @cache_readonly + def bic(self): + return np.nan + + @cache_readonly + def aic(self): + return np.nan + + @cache_readonly + def llf(self): + return np.nan + + @cache_readonly + def rsquared(self): + return np.nan + + @cache_readonly + def rsquared_adj(self): + return np.nan + + @cache_readonly + def mse(self): + return np.nan + + @cache_readonly + def mse_model(self): + return np.nan + + @cache_readonly + def mse_total(self): + return np.nan + + @cache_readonly + def centered_tss(self): + return np.nan + + @cache_readonly + def uncentered_tss(self): + return np.nan + + @cache_readonly + def HC0_se(self): + raise NotImplementedError + + @cache_readonly + def HC1_se(self): + raise NotImplementedError + + @cache_readonly + def HC2_se(self): + raise NotImplementedError + + @cache_readonly + def HC3_se(self): + raise NotImplementedError + + def summary(self, yname=None, xname=None, title=None, alpha=.05): + """Summarize the Regression Results + + Parameters + ---------- + yname : string, optional + Default is `y` + xname : list of strings, optional + Default is `var_##` for ## in p the number of regressors + title : string, optional + Title for the top table. If not None, then this replaces the + default title + alpha : float + significance level for the confidence intervals + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary.Summary : class to hold summary results + """ + eigvals = self.eigenvals + condno = self.condition_number + + top_left = [('Dep. Variable:', None), + ('Model:', None), + ('Method:', ['Least Squares']), + ('Date:', None), + ('Time:', None) + ] + + top_right = [('Pseudo R-squared:', ["%#8.4g" % self.prsquared]), + ('Bandwidth:', ["%#8.4g" % self.bandwidth]), + ('Sparsity:', ["%#8.4g" % self.sparsity]), + ('No. Observations:', None), + ('Df Residuals:', None), + ('Df Model:', None) + ] + + if title is None: + title = self.model.__class__.__name__ + ' ' + "Regression Results" + + # create summary table instance + from statsmodels.iolib.summary import Summary + smry = Summary() + smry.add_table_2cols(self, gleft=top_left, gright=top_right, + yname=yname, xname=xname, title=title) + smry.add_table_params(self, yname=yname, xname=xname, alpha=alpha, + use_t=self.use_t) + + # add warnings/notes, added to text format only + etext = [] + if eigvals[-1] < 1e-10: + wstr = "The smallest eigenvalue is %6.3g. This might indicate " + wstr += "that there are\n" + wstr += "strong multicollinearity problems or that the design " + wstr += "matrix is singular." + wstr = wstr % eigvals[-1] + etext.append(wstr) + elif condno > 1000: # TODO: what is recommended + wstr = "The condition number is large, %6.3g. This might " + wstr += "indicate that there are\n" + wstr += "strong multicollinearity or other numerical " + wstr += "problems." + wstr = wstr % condno + etext.append(wstr) + + if etext: + smry.add_extra_txt(etext) + + return smry diff --git a/statsmodels/regression/recursive_ls.py b/statsmodels/regression/recursive_ls.py new file mode 100644 index 0000000..363d6d1 --- /dev/null +++ b/statsmodels/regression/recursive_ls.py @@ -0,0 +1,854 @@ +""" +Recursive least squares model + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import numpy as np +import pandas as pd + +from statsmodels.compat import unicode +from statsmodels.tools.data import _is_using_pandas +from statsmodels.tsa.statespace.mlemodel import ( + MLEModel, MLEResults, MLEResultsWrapper, PredictionResults, + PredictionResultsWrapper) +from statsmodels.tsa.statespace.tools import concat +from statsmodels.tools.tools import Bunch +from statsmodels.tools.decorators import cache_readonly +import statsmodels.base.wrapper as wrap + +# Columns are alpha = 0.1, 0.05, 0.025, 0.01, 0.005 +_cusum_squares_scalars = np.array([ + [1.0729830, 1.2238734, 1.3581015, 1.5174271, 1.6276236], + [-0.6698868, -0.6700069, -0.6701218, -0.6702672, -0.6703724], + [-0.5816458, -0.7351697, -0.8858694, -1.0847745, -1.2365861] +]) + + +class RecursiveLS(MLEModel): + r""" + Recursive least squares + + Parameters + ---------- + endog : array_like + The observed time-series process :math:`y` + exog : array_like + Array of exogenous regressors, shaped nobs x k. + constraints : array-like, str, or tuple + - array : An r x k array where r is the number of restrictions to + test and k is the number of regressors. It is assumed that the + linear combination is equal to zero. + - str : The full hypotheses to test can be given as a string. + See the examples. + - tuple : A tuple of arrays in the form (R, q), ``q`` can be + either a scalar or a length p row vector. + + Notes + ----- + Recursive least squares (RLS) corresponds to expanding window ordinary + least squares (OLS). + + This model applies the Kalman filter to compute recursive estimates of the + coefficients and recursive residuals. + + References + ---------- + .. [*] Durbin, James, and Siem Jan Koopman. 2012. + Time Series Analysis by State Space Methods: Second Edition. + Oxford University Press. + + """ + def __init__(self, endog, exog, constraints=None, **kwargs): + # Standardize data + endog_using_pandas = _is_using_pandas(endog, None) + if not endog_using_pandas: + endog = np.asanyarray(endog) + + exog_is_using_pandas = _is_using_pandas(exog, None) + if not exog_is_using_pandas: + exog = np.asarray(exog) + + # Make sure we have 2-dimensional array + if exog.ndim == 1: + if not exog_is_using_pandas: + exog = exog[:, None] + else: + exog = pd.DataFrame(exog) + + self.k_exog = exog.shape[1] + + # Handle constraints + self.k_constraints = 0 + self._r_matrix = self._q_matrix = None + if constraints is not None: + from patsy import DesignInfo + from statsmodels.base.data import handle_data + data = handle_data(endog, exog, **kwargs) + names = data.param_names + LC = DesignInfo(names).linear_constraint(constraints) + self._r_matrix, self._q_matrix = LC.coefs, LC.constants + self.k_constraints = self._r_matrix.shape[0] + + constraint_endog = np.zeros((len(endog), len(self._r_matrix))) + if endog_using_pandas: + constraint_endog = pd.DataFrame(constraint_endog, + index=endog.index) + endog = concat([endog, constraint_endog], axis=1) + endog.values[:, 1:] = self._q_matrix[:, 0] + else: + endog[:, 1:] = self._q_matrix[:, 0] + + # Handle coefficient initialization + kwargs.setdefault('initialization', 'diffuse') + + # Initialize the state space representation + super(RecursiveLS, self).__init__( + endog, k_states=self.k_exog, exog=exog, **kwargs) + + # Use univariate filtering by default + self.ssm.filter_univariate = True + + # Concentrate the scale out of the likelihood function + self.ssm.filter_concentrated = True + + # Setup the state space representation + self['design'] = np.zeros((self.k_endog, self.k_states, self.nobs)) + self['design', 0] = self.exog[:, :, None].T + if self._r_matrix is not None: + self['design', 1:, :] = self._r_matrix[:, :, None] + self['transition'] = np.eye(self.k_states) + + # Notice that the filter output does not depend on the measurement + # variance, so we set it here to 1 + self['obs_cov', 0, 0] = 1. + self['transition'] = np.eye(self.k_states) + + # Linear constraints are technically imposed by adding "fake" endog + # variables that are used during filtering, but for all model- and + # results-based purposes we want k_endog = 1. + if self._r_matrix is not None: + self.k_endog = 1 + + @classmethod + def from_formula(cls, formula, data, subset=None, constraints=None): + return super(MLEModel, cls).from_formula(formula, data, subset, + constraints=constraints) + + def fit(self): + """ + Fits the model by application of the Kalman filter + + Returns + ------- + RecursiveLSResults + """ + smoother_results = self.smooth(return_ssm=True) + + with self.ssm.fixed_scale(smoother_results.scale): + res = self.smooth() + + return res + + def filter(self, return_ssm=False, **kwargs): + # Get the state space output + result = super(RecursiveLS, self).filter([], transformed=True, + cov_type='none', + return_ssm=True, **kwargs) + + # Wrap in a results object + if not return_ssm: + params = result.filtered_state[:, -1] + cov_kwds = { + 'custom_cov_type': 'nonrobust', + 'custom_cov_params': result.filtered_state_cov[:, :, -1], + 'custom_description': ('Parameters and covariance matrix' + ' estimates are RLS estimates' + ' conditional on the entire sample.') + } + result = RecursiveLSResultsWrapper( + RecursiveLSResults(self, params, result, cov_type='custom', + cov_kwds=cov_kwds) + ) + + return result + + def smooth(self, return_ssm=False, **kwargs): + # Get the state space output + result = super(RecursiveLS, self).smooth([], transformed=True, + cov_type='none', + return_ssm=True, **kwargs) + + # Wrap in a results object + if not return_ssm: + params = result.filtered_state[:, -1] + cov_kwds = { + 'custom_cov_type': 'nonrobust', + 'custom_cov_params': result.filtered_state_cov[:, :, -1], + 'custom_description': ('Parameters and covariance matrix' + ' estimates are RLS estimates' + ' conditional on the entire sample.') + } + result = RecursiveLSResultsWrapper( + RecursiveLSResults(self, params, result, cov_type='custom', + cov_kwds=cov_kwds) + ) + + return result + + @property + def endog_names(self): + endog_names = super(RecursiveLS, self).endog_names + return endog_names[0] if isinstance(endog_names, list) else endog_names + + @property + def param_names(self): + return self.exog_names + + @property + def start_params(self): + # Only parameter is the measurement disturbance standard deviation + return np.zeros(0) + + def update(self, params, **kwargs): + """ + Update the parameters of the model + + Updates the representation matrices to fill in the new parameter + values. + + Parameters + ---------- + params : array_like + Array of new parameters. + transformed : boolean, optional + Whether or not `params` is already transformed. If set to False, + `transform_params` is called. Default is True.. + + Returns + ------- + params : array_like + Array of parameters. + """ + pass + + +class RecursiveLSResults(MLEResults): + """ + Class to hold results from fitting a recursive least squares model. + + Parameters + ---------- + model : RecursiveLS instance + The fitted model instance + + Attributes + ---------- + specification : dictionary + Dictionary including all attributes from the recursive least squares + model instance. + + See Also + -------- + statsmodels.tsa.statespace.kalman_filter.FilterResults + statsmodels.tsa.statespace.mlemodel.MLEResults + """ + + def __init__(self, model, params, filter_results, cov_type='opg', + **kwargs): + super(RecursiveLSResults, self).__init__( + model, params, filter_results, cov_type, **kwargs) + + # Since we are overriding params with things that aren't MLE params, + # need to adjust df's + q = max(self.loglikelihood_burn, self.k_diffuse_states) + self.df_model = q - self.model.k_constraints + self.df_resid = self.nobs_effective - self.df_model + + # Save _init_kwds + self._init_kwds = self.model._get_init_kwds() + + # Save the model specification + self.specification = Bunch(**{ + 'k_exog': self.model.k_exog, + 'k_constraints': self.model.k_constraints}) + + # Adjust results to remove "faux" endog from the constraints + if self.model._r_matrix is not None: + for name in ['forecasts', 'forecasts_error', + 'forecasts_error_cov', 'standardized_forecasts_error', + 'forecasts_error_diffuse_cov']: + setattr(self, name, getattr(self, name)[0:1]) + + @property + def recursive_coefficients(self): + """ + Estimates of regression coefficients, recursively estimated + + Returns + ------- + out: Bunch + Has the following attributes: + + - `filtered`: a time series array with the filtered estimate of + the component + - `filtered_cov`: a time series array with the filtered estimate of + the variance/covariance of the component + - `smoothed`: a time series array with the smoothed estimate of + the component + - `smoothed_cov`: a time series array with the smoothed estimate of + the variance/covariance of the component + - `offset`: an integer giving the offset in the state vector where + this component begins + """ + out = None + spec = self.specification + start = offset = 0 + end = offset + spec.k_exog + out = Bunch( + filtered=self.filtered_state[start:end], + filtered_cov=self.filtered_state_cov[start:end, start:end], + smoothed=None, smoothed_cov=None, + offset=offset + ) + if self.smoothed_state is not None: + out.smoothed = self.smoothed_state[start:end] + if self.smoothed_state_cov is not None: + out.smoothed_cov = ( + self.smoothed_state_cov[start:end, start:end]) + return out + + @cache_readonly + def resid_recursive(self): + r""" + Recursive residuals + + Returns + ------- + resid_recursive : array_like + An array of length `nobs` holding the recursive + residuals. + + Notes + ----- + These quantities are defined in, for example, Harvey (1989) + section 5.4. In fact, there he defines the standardized innovations in + equation 5.4.1, but in his version they have non-unit variance, whereas + the standardized forecast errors computed by the Kalman filter here + assume unit variance. To convert to Harvey's definition, we need to + multiply by the standard deviation. + + Harvey notes that in smaller samples, "although the second moment + of the :math:`\tilde \sigma_*^{-1} \tilde v_t`'s is unity, the + variance is not necessarily equal to unity as the mean need not be + equal to zero", and he defines an alternative version (which are + not provided here). + + """ + return (self.filter_results.standardized_forecasts_error[0] * + self.scale**0.5) + + @cache_readonly + def cusum(self): + r""" + Cumulative sum of standardized recursive residuals statistics + + Returns + ------- + cusum : array_like + An array of length `nobs - k_exog` holding the + CUSUM statistics. + + Notes + ----- + The CUSUM statistic takes the form: + + .. math:: + + W_t = \frac{1}{\hat \sigma} \sum_{j=k+1}^t w_j + + where :math:`w_j` is the recursive residual at time :math:`j` and + :math:`\hat \sigma` is the estimate of the standard deviation + from the full sample. + + Excludes the first `k_exog` datapoints. + + Due to differences in the way :math:`\hat \sigma` is calculated, the + output of this function differs slightly from the output in the + R package strucchange and the Stata contributed .ado file cusum6. The + calculation in this package is consistent with the description of + Brown et al. (1975) + + References + ---------- + .. [*] Brown, R. L., J. Durbin, and J. M. Evans. 1975. + "Techniques for Testing the Constancy of + Regression Relationships over Time." + Journal of the Royal Statistical Society. + Series B (Methodological) 37 (2): 149-92. + + """ + d = max(self.nobs_diffuse, self.loglikelihood_burn) + return (np.cumsum(self.resid_recursive[d:]) / + np.std(self.resid_recursive[d:], ddof=1)) + + @cache_readonly + def cusum_squares(self): + r""" + Cumulative sum of squares of standardized recursive residuals + statistics + + Returns + ------- + cusum_squares : array_like + An array of length `nobs - k_exog` holding the + CUSUM of squares statistics. + + Notes + ----- + The CUSUM of squares statistic takes the form: + + .. math:: + + s_t = \left ( \sum_{j=k+1}^t w_j^2 \right ) \Bigg / + \left ( \sum_{j=k+1}^T w_j^2 \right ) + + where :math:`w_j` is the recursive residual at time :math:`j`. + + Excludes the first `k_exog` datapoints. + + References + ---------- + .. [*] Brown, R. L., J. Durbin, and J. M. Evans. 1975. + "Techniques for Testing the Constancy of + Regression Relationships over Time." + Journal of the Royal Statistical Society. + Series B (Methodological) 37 (2): 149-92. + + """ + d = max(self.nobs_diffuse, self.loglikelihood_burn) + numer = np.cumsum(self.resid_recursive[d:]**2) + denom = numer[-1] + return numer / denom + + @cache_readonly + def llf_recursive_obs(self): + """ + (float) Loglikelihood at observation, computed from recursive residuals + """ + from scipy.stats import norm + return np.log(norm.pdf(self.resid_recursive, loc=0, + scale=self.scale**0.5)) + + @cache_readonly + def llf_recursive(self): + """ + (float) Loglikelihood defined by recursive residuals, equivalent to OLS + """ + return np.sum(self.llf_recursive_obs) + + @cache_readonly + def ssr(self): + """ssr""" + d = max(self.nobs_diffuse, self.loglikelihood_burn) + return (self.nobs - d) * self.filter_results.obs_cov[0, 0, 0] + + @cache_readonly + def centered_tss(self): + """Centered tss""" + return np.sum((self.filter_results.endog[0] - + np.mean(self.filter_results.endog))**2) + + @cache_readonly + def uncentered_tss(self): + """uncentered tss""" + return np.sum((self.filter_results.endog[0])**2) + + @cache_readonly + def ess(self): + """esss""" + if self.k_constant: + return self.centered_tss - self.ssr + else: + return self.uncentered_tss - self.ssr + + @cache_readonly + def rsquared(self): + """rsquared""" + if self.k_constant: + return 1 - self.ssr / self.centered_tss + else: + return 1 - self.ssr / self.uncentered_tss + + @cache_readonly + def mse_model(self): + """mse_model""" + return self.ess / self.df_model + + @cache_readonly + def mse_resid(self): + """mse_resid""" + return self.ssr / self.df_resid + + @cache_readonly + def mse_total(self): + """mse_total""" + if self.k_constant: + return self.centered_tss / (self.df_resid + self.df_model) + else: + return self.uncentered_tss / (self.df_resid + self.df_model) + + def get_prediction(self, start=None, end=None, dynamic=False, + index=None, **kwargs): + # Note: need to override this, because we currently don't support + # dynamic prediction or forecasts when there are constraints. + if start is None: + start = self.model._index[0] + + # Handle start, end, dynamic + start, end, out_of_sample, prediction_index = ( + self.model._get_prediction_index(start, end, index)) + + # Handle `dynamic` + if isinstance(dynamic, (bytes, unicode)): + dynamic, _, _ = self.model._get_index_loc(dynamic) + + if self.model._r_matrix is not None and (out_of_sample or dynamic): + raise NotImplementedError('Cannot yet perform out-of-sample or' + ' dynamic prediction in models with' + ' constraints.') + + # Perform the prediction + # This is a (k_endog x npredictions) array; don't want to squeeze in + # case of npredictions = 1 + prediction_results = self.filter_results.predict( + start, end + out_of_sample + 1, dynamic, **kwargs) + + # Return a new mlemodel.PredictionResults object + return PredictionResultsWrapper(PredictionResults( + self, prediction_results, row_labels=prediction_index)) + get_prediction.__doc__ = MLEResults.get_prediction.__doc__ + + def plot_recursive_coefficient(self, variables=0, alpha=0.05, + legend_loc='upper left', fig=None, + figsize=None): + r""" + Plot the recursively estimated coefficients on a given variable + + Parameters + ---------- + variables : int or str or iterable of int or string, optional + Integer index or string name of the variable whose coefficient will + be plotted. Can also be an iterable of integers or strings. Default + is the first variable. + alpha : float, optional + The confidence intervals for the coefficient are (1 - alpha) % + legend_loc : string, optional + The location of the legend in the plot. Default is upper left. + fig : Matplotlib Figure instance, optional + If given, subplots are created in this figure instead of in a new + figure. Note that the grid will be created in the provided + figure using `fig.add_subplot()`. + figsize : tuple, optional + If a figure is created, this argument allows specifying a size. + The tuple is (width, height). + + Notes + ----- + All plots contain (1 - `alpha`) % confidence intervals. + """ + # Get variables + if isinstance(variables, (int, str)): + variables = [variables] + k_variables = len(variables) + + # If a string was given for `variable`, try to get it from exog names + exog_names = self.model.exog_names + for i in range(k_variables): + variable = variables[i] + if isinstance(variable, str): + variables[i] = exog_names.index(variable) + + # Create the plot + from scipy.stats import norm + from statsmodels.graphics.utils import _import_mpl, create_mpl_fig + plt = _import_mpl() + fig = create_mpl_fig(fig, figsize) + + for i in range(k_variables): + variable = variables[i] + ax = fig.add_subplot(k_variables, 1, i + 1) + + # Get dates, if applicable + if hasattr(self.data, 'dates') and self.data.dates is not None: + dates = self.data.dates._mpl_repr() + else: + dates = np.arange(self.nobs) + d = max(self.nobs_diffuse, self.loglikelihood_burn) + + # Plot the coefficient + coef = self.recursive_coefficients + ax.plot(dates[d:], coef.filtered[variable, d:], + label='Recursive estimates: %s' % exog_names[variable]) + + # Legend + handles, labels = ax.get_legend_handles_labels() + + # Get the critical value for confidence intervals + if alpha is not None: + critical_value = norm.ppf(1 - alpha / 2.) + + # Plot confidence intervals + std_errors = np.sqrt(coef.filtered_cov[variable, variable, :]) + ci_lower = ( + coef.filtered[variable] - critical_value * std_errors) + ci_upper = ( + coef.filtered[variable] + critical_value * std_errors) + ci_poly = ax.fill_between( + dates[d:], ci_lower[d:], ci_upper[d:], alpha=0.2 + ) + ci_label = ('$%.3g \\%%$ confidence interval' + % ((1 - alpha)*100)) + + # Only add CI to legend for the first plot + if i == 0: + # Proxy artist for fill_between legend entry + # See http://matplotlib.org/1.3.1/users/legend_guide.html + p = plt.Rectangle((0, 0), 1, 1, + fc=ci_poly.get_facecolor()[0]) + + handles.append(p) + labels.append(ci_label) + + ax.legend(handles, labels, loc=legend_loc) + + # Remove xticks for all but the last plot + if i < k_variables - 1: + ax.xaxis.set_ticklabels([]) + + fig.tight_layout() + + return fig + + def _cusum_significance_bounds(self, alpha, ddof=0, points=None): + """ + Parameters + ---------- + alpha : float, optional + The significance bound is alpha %. + ddof : int, optional + The number of periods additional to `k_exog` to exclude in + constructing the bounds. Default is zero. This is usually used + only for testing purposes. + points : iterable, optional + The points at which to evaluate the significance bounds. Default is + two points, beginning and end of the sample. + + Notes + ----- + Comparing against the cusum6 package for Stata, this does not produce + exactly the same confidence bands (which are produced in cusum6 by + lw, uw) because they burn the first k_exog + 1 periods instead of the + first k_exog. If this change is performed + (so that `tmp = (self.nobs - d - 1)**0.5`), then the output here + matches cusum6. + + The cusum6 behavior does not seem to be consistent with + Brown et al. (1975); it is likely they did that because they needed + three initial observations to get the initial OLS estimates, whereas + we do not need to do that. + """ + # Get the constant associated with the significance level + if alpha == 0.01: + scalar = 1.143 + elif alpha == 0.05: + scalar = 0.948 + elif alpha == 0.10: + scalar = 0.950 + else: + raise ValueError('Invalid significance level.') + + # Get the points for the significance bound lines + d = max(self.nobs_diffuse, self.loglikelihood_burn) + tmp = (self.nobs - d - ddof)**0.5 + + def upper_line(x): + return scalar * tmp + 2 * scalar * (x - d) / tmp + + if points is None: + points = np.array([d, self.nobs]) + return -upper_line(points), upper_line(points) + + def plot_cusum(self, alpha=0.05, legend_loc='upper left', + fig=None, figsize=None): + r""" + Plot the CUSUM statistic and significance bounds. + + Parameters + ---------- + alpha : float, optional + The plotted significance bounds are alpha %. + legend_loc : string, optional + The location of the legend in the plot. Default is upper left. + fig : Matplotlib Figure instance, optional + If given, subplots are created in this figure instead of in a new + figure. Note that the grid will be created in the provided + figure using `fig.add_subplot()`. + figsize : tuple, optional + If a figure is created, this argument allows specifying a size. + The tuple is (width, height). + + Notes + ----- + Evidence of parameter instability may be found if the CUSUM statistic + moves out of the significance bounds. + + References + ---------- + .. [*] Brown, R. L., J. Durbin, and J. M. Evans. 1975. + "Techniques for Testing the Constancy of + Regression Relationships over Time." + Journal of the Royal Statistical Society. + Series B (Methodological) 37 (2): 149-92. + + """ + # Create the plot + from statsmodels.graphics.utils import _import_mpl, create_mpl_fig + _import_mpl() + fig = create_mpl_fig(fig, figsize) + ax = fig.add_subplot(1, 1, 1) + + # Get dates, if applicable + if hasattr(self.data, 'dates') and self.data.dates is not None: + dates = self.data.dates._mpl_repr() + else: + dates = np.arange(self.nobs) + d = max(self.nobs_diffuse, self.loglikelihood_burn) + + # Plot cusum series and reference line + ax.plot(dates[d:], self.cusum, label='CUSUM') + ax.hlines(0, dates[d], dates[-1], color='k', alpha=0.3) + + # Plot significance bounds + lower_line, upper_line = self._cusum_significance_bounds(alpha) + ax.plot([dates[d], dates[-1]], upper_line, 'k--', + label='%d%% significance' % (alpha * 100)) + ax.plot([dates[d], dates[-1]], lower_line, 'k--') + + ax.legend(loc=legend_loc) + + return fig + + def _cusum_squares_significance_bounds(self, alpha, points=None): + """ + Notes + ----- + Comparing against the cusum6 package for Stata, this does not produce + exactly the same confidence bands (which are produced in cusum6 by + lww, uww) because they use a different method for computing the + critical value; in particular, they use tabled values from + Table C, pp. 364-365 of "The Econometric Analysis of Time Series" + Harvey, (1990), and use the value given to 99 observations for any + larger number of observations. In contrast, we use the approximating + critical values suggested in Edgerton and Wells (1994) which allows + computing relatively good approximations for any number of + observations. + """ + # Get the approximate critical value associated with the significance + # level + d = max(self.nobs_diffuse, self.loglikelihood_burn) + n = 0.5 * (self.nobs - d) - 1 + try: + ix = [0.1, 0.05, 0.025, 0.01, 0.005].index(alpha / 2) + except ValueError: + raise ValueError('Invalid significance level.') + scalars = _cusum_squares_scalars[:, ix] + crit = scalars[0] / n**0.5 + scalars[1] / n + scalars[2] / n**1.5 + + # Get the points for the significance bound lines + if points is None: + points = np.array([d, self.nobs]) + line = (points - d) / (self.nobs - d) + + return line - crit, line + crit + + def plot_cusum_squares(self, alpha=0.05, legend_loc='upper left', + fig=None, figsize=None): + r""" + Plot the CUSUM of squares statistic and significance bounds. + + Parameters + ---------- + alpha : float, optional + The plotted significance bounds are alpha %. + legend_loc : string, optional + The location of the legend in the plot. Default is upper left. + fig : Matplotlib Figure instance, optional + If given, subplots are created in this figure instead of in a new + figure. Note that the grid will be created in the provided + figure using `fig.add_subplot()`. + figsize : tuple, optional + If a figure is created, this argument allows specifying a size. + The tuple is (width, height). + + Notes + ----- + Evidence of parameter instability may be found if the CUSUM of squares + statistic moves out of the significance bounds. + + Critical values used in creating the significance bounds are computed + using the approximate formula of [1]_. + + References + ---------- + .. [*] Brown, R. L., J. Durbin, and J. M. Evans. 1975. + "Techniques for Testing the Constancy of + Regression Relationships over Time." + Journal of the Royal Statistical Society. + Series B (Methodological) 37 (2): 149-92. + .. [1] Edgerton, David, and Curt Wells. 1994. + "Critical Values for the Cusumsq Statistic + in Medium and Large Sized Samples." + Oxford Bulletin of Economics and Statistics 56 (3): 355-65. + + """ + # Create the plot + from statsmodels.graphics.utils import _import_mpl, create_mpl_fig + _import_mpl() + fig = create_mpl_fig(fig, figsize) + ax = fig.add_subplot(1, 1, 1) + + # Get dates, if applicable + if hasattr(self.data, 'dates') and self.data.dates is not None: + dates = self.data.dates._mpl_repr() + else: + dates = np.arange(self.nobs) + d = max(self.nobs_diffuse, self.loglikelihood_burn) + + # Plot cusum series and reference line + ax.plot(dates[d:], self.cusum_squares, label='CUSUM of squares') + ref_line = (np.arange(d, self.nobs) - d) / (self.nobs - d) + ax.plot(dates[d:], ref_line, 'k', alpha=0.3) + + # Plot significance bounds + lower_line, upper_line = self._cusum_squares_significance_bounds(alpha) + ax.plot([dates[d], dates[-1]], upper_line, 'k--', + label='%d%% significance' % (alpha * 100)) + ax.plot([dates[d], dates[-1]], lower_line, 'k--') + + ax.legend(loc=legend_loc) + + return fig + + +class RecursiveLSResultsWrapper(MLEResultsWrapper): + _attrs = {} + _wrap_attrs = wrap.union_dicts(MLEResultsWrapper._wrap_attrs, + _attrs) + _methods = {} + _wrap_methods = wrap.union_dicts(MLEResultsWrapper._wrap_methods, + _methods) +wrap.populate_wrapper(RecursiveLSResultsWrapper, # noqa:E305 + RecursiveLSResults) diff --git a/statsmodels/regression/tests/__init__.py b/statsmodels/regression/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/regression/tests/lme_examples.R b/statsmodels/regression/tests/lme_examples.R new file mode 100644 index 0000000..e92a617 --- /dev/null +++ b/statsmodels/regression/tests/lme_examples.R @@ -0,0 +1,6 @@ +library(lme4) +library(MASS) + +md = lmer(size ~ Time + (1 | tree), Sitka) + +md = lmer(size ~ Time + (1 + Time | tree), Sitka) diff --git a/statsmodels/regression/tests/results/__init__.py b/statsmodels/regression/tests/results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/regression/tests/results/dietox.csv b/statsmodels/regression/tests/results/dietox.csv new file mode 100644 index 0000000..d99e09c --- /dev/null +++ b/statsmodels/regression/tests/results/dietox.csv @@ -0,0 +1,862 @@ +"Weight","Feed","Time","Pig","Evit","Cu","Litter" +"1",26.5,NA,1,4601,1,1,1 +"2",27.59999,5.200005,2,4601,1,1,1 +"3",36.5,17.6,3,4601,1,1,1 +"4",40.29999,28.5,4,4601,1,1,1 +"5",49.09998,45.200001,5,4601,1,1,1 +"6",55.39999,56.900002,6,4601,1,1,1 +"7",59.59998,71.700005,7,4601,1,1,1 +"8",67,86.800001,8,4601,1,1,1 +"9",76.59998,104.900002,9,4601,1,1,1 +"10",86.5,123,10,4601,1,1,1 +"11",91.59998,140.900002,11,4601,1,1,1 +"12",98.59998,160,12,4601,1,1,1 +"13",27,NA,1,4643,1,1,2 +"14",31.79999,6.400002,2,4643,1,1,2 +"15",39,21.5,3,4643,1,1,2 +"16",44.79999,33.900002,4,4643,1,1,2 +"17",50.89999,44.900002,5,4643,1,1,2 +"18",57.39999,58.8,6,4643,1,1,2 +"19",62.5,73.700001,7,4643,1,1,2 +"20",71.69995,92.800003,8,4643,1,1,2 +"21",78.19995,111.5,9,4643,1,1,2 +"22",85.79999,132.800003,10,4643,1,1,2 +"23",91.79999,148.400001,11,4643,1,1,2 +"24",100.19995,170,12,4643,1,1,2 +"25",17,NA,1,4756,3,1,3 +"26",19,9.900002,2,4756,3,1,3 +"27",23.59999,18.5,3,4756,3,1,3 +"28",30,28.900002,4,4756,3,1,3 +"29",36.29999,38.100002,5,4756,3,1,3 +"30",42.39999,52.799999,6,4756,3,1,3 +"31",50.5,66.799999,7,4756,3,1,3 +"32",57.59998,86,8,4756,3,1,3 +"33",66.59998,106,9,4756,3,1,3 +"34",74.19995,123,10,4756,3,1,3 +"35",83,141.900002,11,4756,3,1,3 +"36",89.29999,163.700001,12,4756,3,1,3 +"37",26.89999,NA,1,4757,1,1,3 +"38",32.29999,9.900002,2,4757,1,1,3 +"39",38.59998,20.200005,3,4757,1,1,3 +"40",46,30,4,4757,1,1,3 +"41",57.79999,40,5,4757,1,1,3 +"42",58.59998,62.800003,6,4757,1,1,3 +"43",65.89996,78.300003,7,4757,1,1,3 +"44",71.19995,97.900002,8,4757,1,1,3 +"45",79.39996,115.800003,9,4757,1,1,3 +"46",81,129,10,4757,1,1,3 +"47",91.69995,150,11,4757,1,1,3 +"48",91,156.800003,12,4757,1,1,3 +"49",29,NA,1,4854,2,1,6 +"50",32.69998,8.200001,2,4854,2,1,6 +"51",38.29999,19.800003,3,4854,2,1,6 +"52",45.5,30,4,4854,2,1,6 +"53",48.59998,40,5,4854,2,1,6 +"54",56,50,6,4854,2,1,6 +"55",62.59998,70,7,4854,2,1,6 +"56",70.19995,86.200001,8,4854,2,1,6 +"57",73.79999,100,9,4854,2,1,6 +"58",80.29999,120.5,10,4854,2,1,6 +"59",85.5,138.5,11,4854,2,1,6 +"60",93.09998,158,12,4854,2,1,6 +"61",32,NA,1,4856,1,1,6 +"62",35.19998,8.1,2,4856,1,1,6 +"63",41.5,19.600006,3,4856,1,1,6 +"64",47.69998,27.6,4,4856,1,1,6 +"65",53.79999,41.800003,5,4856,1,1,6 +"66",61.59998,58.600006,6,4856,1,1,6 +"67",70,75.200001,7,4856,1,1,6 +"68",79.09998,91.700005,8,4856,1,1,6 +"69",85.69995,109,9,4856,1,1,6 +"70",92.5,131,10,4856,1,1,6 +"71",101.09998,153,11,4856,1,1,6 +"72",109,177.6,12,4856,1,1,6 +"73",21.2,NA,1,5497,1,1,8 +"74",25.79999,6.300001,2,5497,1,1,8 +"75",29.39999,16.5,3,5497,1,1,8 +"76",36.79999,27.200001,4,5497,1,1,8 +"77",43.19998,40.200005,5,5497,1,1,8 +"78",51.09998,54.800003,6,5497,1,1,8 +"79",59.29999,68,7,5497,1,1,8 +"80",66,85.200001,8,5497,1,1,8 +"81",72.79999,101.100006,9,5497,1,1,8 +"82",78.59998,119.5,10,5497,1,1,8 +"83",93.79999,144.200001,11,5497,1,1,8 +"84",95.19995,158.5,12,5497,1,1,8 +"85",29.59999,NA,1,5502,3,1,8 +"86",34.19998,9,2,5502,3,1,8 +"87",43,21.400002,3,5502,3,1,8 +"88",50,36.5,4,5502,3,1,8 +"89",57,51,5,5502,3,1,8 +"90",63.5,66.800001,6,5502,3,1,8 +"91",72.69995,80.100006,7,5502,3,1,8 +"92",78.69995,96.200001,8,5502,3,1,8 +"93",84.89996,109.800003,9,5502,3,1,8 +"94",91,126.800001,10,5502,3,1,8 +"95",96.39996,145.200001,11,5502,3,1,8 +"96",100.19995,157.999996,12,5502,3,1,8 +"97",22.39999,NA,1,5524,2,1,9 +"98",25.2,10,2,5524,2,1,9 +"99",30,26.699997,3,5524,2,1,9 +"100",36.5,39.799999,4,5524,2,1,9 +"101",43.29999,55.199997,5,5524,2,1,9 +"102",50,74.499996,6,5524,2,1,9 +"103",58.09998,85.999996,7,5524,2,1,9 +"104",63,101.999996,8,5524,2,1,9 +"105",70.69995,121.999996,9,5524,2,1,9 +"106",78.09998,136.099997,10,5524,2,1,9 +"107",83.5,136.099997,11,5524,2,1,9 +"108",24,NA,1,5528,3,1,9 +"109",28.2,10,2,5528,3,1,9 +"110",35.29999,20,3,5528,3,1,9 +"111",42.69998,32.100002,4,5528,3,1,9 +"112",48.19998,44.800003,5,5528,3,1,9 +"113",53.19998,58.5,6,5528,3,1,9 +"114",64.79999,76.1,7,5528,3,1,9 +"115",71.5,94.200001,8,5528,3,1,9 +"116",76.09998,113.200001,9,5528,3,1,9 +"117",86.09998,134.900002,10,5528,3,1,9 +"118",92.5,146.1,11,5528,3,1,9 +"119",27,NA,1,5581,3,1,10 +"120",30,6.800001,2,5581,3,1,10 +"121",37.79999,19.5,3,5581,3,1,10 +"122",43.29999,31.100006,4,5581,3,1,10 +"123",51.5,46.200001,5,5581,3,1,10 +"124",57,59.900002,6,5581,3,1,10 +"125",63.69998,76.1,7,5581,3,1,10 +"126",70.5,97,8,5581,3,1,10 +"127",80.39996,115,9,5581,3,1,10 +"128",92,138.800003,10,5581,3,1,10 +"129",100,158.200001,11,5581,3,1,10 +"130",106.09998,177.900002,12,5581,3,1,10 +"131",22.79999,NA,1,5850,3,1,12 +"132",27,6,2,5850,3,1,12 +"133",33.89999,18.200001,3,5850,3,1,12 +"134",37.69998,27,4,5850,3,1,12 +"135",41.39999,36.300001,5,5850,3,1,12 +"136",48.19998,48,6,5850,3,1,12 +"137",53.69998,60.200005,7,5850,3,1,12 +"138",62.59998,76.200001,8,5850,3,1,12 +"139",70.39996,93,9,5850,3,1,12 +"140",78.5,120,10,5850,3,1,12 +"141",85.89996,127.5,11,5850,3,1,12 +"142",94,146.800001,12,5850,3,1,12 +"143",23.79999,NA,1,5852,1,1,12 +"144",30,9.7,2,5852,1,1,12 +"145",37.09998,20.800003,3,5852,1,1,12 +"146",43.19998,31.200005,4,5852,1,1,12 +"147",50.39999,44.900002,5,5852,1,1,12 +"148",60.19998,61.800003,6,5852,1,1,12 +"149",67,78.200001,7,5852,1,1,12 +"150",75,94.800003,8,5852,1,1,12 +"151",82.39996,112.900002,9,5852,1,1,12 +"152",91.19995,132,10,5852,1,1,12 +"153",101.79999,160,11,5852,1,1,12 +"154",109.59998,180.100006,12,5852,1,1,12 +"155",27.39999,NA,1,6058,2,1,16 +"156",32.19998,8.1,2,6058,2,1,16 +"157",37.89999,18.3,3,6058,2,1,16 +"158",45.89999,29.900002,4,6058,2,1,16 +"159",51.19998,44.100002,5,6058,2,1,16 +"160",57.09998,58.3,6,6058,2,1,16 +"161",69,77.5,7,6058,2,1,16 +"162",76.79999,91.5,8,6058,2,1,16 +"163",83.09998,104.800003,9,6058,2,1,16 +"164",91.59998,124,10,6058,2,1,16 +"165",100.5,148.6,11,6058,2,1,16 +"166",105.29999,166.900002,12,6058,2,1,16 +"167",27.09999,NA,1,6207,3,1,17 +"168",30.29999,5.800003,2,6207,3,1,17 +"169",38.19998,17,3,6207,3,1,17 +"170",43.19998,30,4,6207,3,1,17 +"171",52.5,45,5,6207,3,1,17 +"172",59,57.200001,6,6207,3,1,17 +"173",67.29999,72.100002,7,6207,3,1,17 +"174",74.19995,90,8,6207,3,1,17 +"175",81.19995,103.200001,9,6207,3,1,17 +"176",87.5,119.5,10,6207,3,1,17 +"177",94.39996,135.200001,11,6207,3,1,17 +"178",101.39996,153.800003,12,6207,3,1,17 +"179",24.5,NA,1,6211,2,1,17 +"180",31.59999,8.1,2,6211,2,1,17 +"181",37.39999,18.1,3,6211,2,1,17 +"182",46.39999,30.100006,4,6211,2,1,17 +"183",53.59998,48.1,5,6211,2,1,17 +"184",61.19998,62.600002,6,6211,2,1,17 +"185",70.09998,76.400002,7,6211,2,1,17 +"186",77.5,96.200001,8,6211,2,1,17 +"187",86.19995,114.600002,9,6211,2,1,17 +"188",89.19995,129.800003,10,6211,2,1,17 +"189",96.89996,146.5,11,6211,2,1,17 +"190",104.5,168.3,12,6211,2,1,17 +"191",23.09999,NA,1,6284,2,1,18 +"192",26,5.900002,2,6284,2,1,18 +"193",30.09999,17.6,3,6284,2,1,18 +"194",40.69998,30.600006,4,6284,2,1,18 +"195",46.59998,41.400002,5,6284,2,1,18 +"196",52.09998,53.400002,6,6284,2,1,18 +"197",60.5,69.2,7,6284,2,1,18 +"198",73.5,90,8,6284,2,1,18 +"199",77.29999,100,9,6284,2,1,18 +"200",86.89996,108,10,6284,2,1,18 +"201",90,126,11,6284,2,1,18 +"202",96.39996,141.100006,12,6284,2,1,18 +"203",21.5,NA,1,6287,1,1,18 +"204",24.59999,5,2,6287,1,1,18 +"205",28.5,14.200001,3,6287,1,1,18 +"206",39.09998,27.800003,4,6287,1,1,18 +"207",45.29999,39.800003,5,6287,1,1,18 +"208",53,53.5,6,6287,1,1,18 +"209",59.59998,68.5,7,6287,1,1,18 +"210",69.5,87.400002,8,6287,1,1,18 +"211",75.19995,107.300003,9,6287,1,1,18 +"212",84.89996,127,10,6287,1,1,18 +"213",93.39996,146.599991,11,6287,1,1,18 +"214",99.29999,167.799992,12,6287,1,1,18 +"215",32.19998,NA,1,6433,2,1,5 +"216",36.39999,6.900002,2,6433,2,1,5 +"217",41.79999,14.300003,3,6433,2,1,5 +"218",48.19998,26.400002,4,6433,2,1,5 +"219",55.89999,41.800003,5,6433,2,1,5 +"220",60.09998,58.6,6,6433,2,1,5 +"221",68.5,71.400002,7,6433,2,1,5 +"222",77.79999,88.900002,8,6433,2,1,5 +"223",86.39996,108.100002,9,6433,2,1,5 +"224",96.69995,130.5,10,6433,2,1,5 +"225",111.09998,163,11,6433,2,1,5 +"226",115.39996,184.5,12,6433,2,1,5 +"227",24.2,NA,1,6910,2,1,13 +"228",29.2,6.200001,2,6910,2,1,13 +"229",36.19998,17.1,3,6910,2,1,13 +"230",43.09998,30,4,6910,2,1,13 +"231",49.19998,44,5,6910,2,1,13 +"232",57,56.900002,6,6910,2,1,13 +"233",63,70,7,6910,2,1,13 +"234",70.89996,85.100002,8,6910,2,1,13 +"235",80,102.300003,9,6910,2,1,13 +"236",87.19995,118.499996,10,6910,2,1,13 +"237",94.69995,135.599998,11,6910,2,1,13 +"238",100.59998,158.499996,12,6910,2,1,13 +"239",24.5,NA,1,6912,3,1,13 +"240",28.39999,7.1,2,6912,3,1,13 +"241",35,17.300001,3,6912,3,1,13 +"242",41.89999,29.5,4,6912,3,1,13 +"243",49,40.900002,5,6912,3,1,13 +"244",55.59998,54.200001,6,6912,3,1,13 +"245",64.09998,66.800003,7,6912,3,1,13 +"246",71.19995,84.5,8,6912,3,1,13 +"247",80.5,104.5,9,6912,3,1,13 +"248",90.19995,119.900002,10,6912,3,1,13 +"249",98.89996,143,11,6912,3,1,13 +"250",103.79999,164.5,12,6912,3,1,13 +"251",25.29999,NA,1,8195,3,1,21 +"252",31.59999,9.600006,2,8195,3,1,21 +"253",34,19.600006,3,8195,3,1,21 +"254",35.19998,28,4,8195,3,1,21 +"255",37.29999,41,5,8195,3,1,21 +"256",40.79999,57.400002,6,8195,3,1,21 +"257",47.69998,69,7,8195,3,1,21 +"258",57,86.300001,8,8195,3,1,21 +"259",64.59998,102.200001,9,8195,3,1,21 +"260",71.19995,118.5,10,8195,3,1,21 +"261",80.5,140.5,11,8195,3,1,21 +"262",85.89996,157.8,12,8195,3,1,21 +"263",24,NA,1,8271,2,1,22 +"264",28.89999,8.5,2,8271,2,1,22 +"265",35.79999,19.5,3,8271,2,1,22 +"266",44,30,4,8271,2,1,22 +"267",47.5,43.200001,5,8271,2,1,22 +"268",56.39999,56.6,6,8271,2,1,22 +"269",63.69998,72,7,8271,2,1,22 +"270",70.29999,89.5,8,8271,2,1,22 +"271",78,108,9,8271,2,1,22 +"272",89.19995,127.5,10,8271,2,1,22 +"273",96.29999,144.400002,11,8271,2,1,22 +"274",99.79999,158.1,12,8271,2,1,22 +"275",28.29999,NA,1,4602,1,2,1 +"276",30.09999,3.300003,2,4602,1,2,1 +"277",38.29999,13.200001,3,4602,1,2,1 +"278",44.5,26.1,4,4602,1,2,1 +"279",51.59998,43.600002,5,4602,1,2,1 +"280",57.59998,55.200001,6,4602,1,2,1 +"281",65,72.800003,7,4602,1,2,1 +"282",73,90.800003,8,4602,1,2,1 +"283",82.29999,112.200001,9,4602,1,2,1 +"284",91,132.900002,10,4602,1,2,1 +"285",99.69995,156.1,11,4602,1,2,1 +"286",106.69995,180,12,4602,1,2,1 +"287",31.5,NA,1,4605,2,2,1 +"288",34.79999,6.5,2,4605,2,2,1 +"289",40.69998,20,3,4605,2,2,1 +"290",47.69998,33.100002,4,4605,2,2,1 +"291",55.89999,51.800003,5,4605,2,2,1 +"292",62.19998,65.800003,6,4605,2,2,1 +"293",70.69995,81.700005,7,4605,2,2,1 +"294",78,97,8,4605,2,2,1 +"295",86.19995,115.300003,9,4605,2,2,1 +"296",94.69995,133.100002,10,4605,2,2,1 +"297",102,151,11,4605,2,2,1 +"298",109.19995,176.400002,12,4605,2,2,1 +"299",27.7,NA,1,4645,3,2,2 +"300",33.59998,10,2,4645,3,2,2 +"301",44,28.5,3,4645,3,2,2 +"302",46.69998,40,4,4645,3,2,2 +"303",54.79999,55.200001,5,4645,3,2,2 +"304",61,69,6,4645,3,2,2 +"305",69.79999,88,7,4645,3,2,2 +"306",76,104.400002,8,4645,3,2,2 +"307",83.59998,121.800003,9,4645,3,2,2 +"308",88.19995,140,10,4645,3,2,2 +"309",96.79999,157.200001,11,4645,3,2,2 +"310",102.29999,180,12,4645,3,2,2 +"311",22.59999,NA,1,4759,3,2,3 +"312",28.5,10.600006,2,4759,3,2,3 +"313",32.69998,21.100006,3,4759,3,2,3 +"314",39.89999,33.300003,4,4759,3,2,3 +"315",47.59998,47.1,5,4759,3,2,3 +"316",53.79999,63.400002,6,4759,3,2,3 +"317",63,80.800003,7,4759,3,2,3 +"318",67.19995,98.100002,8,4759,3,2,3 +"319",74.09998,111.900002,9,4759,3,2,3 +"320",80,128.900002,10,4759,3,2,3 +"321",89.39996,152.100002,11,4759,3,2,3 +"322",93.5,171.700005,12,4759,3,2,3 +"323",27.29999,NA,1,4813,1,2,4 +"324",32.39999,10.300003,2,4813,1,2,4 +"325",38.29999,22.800003,3,4813,1,2,4 +"326",45.79999,40.200005,4,4813,1,2,4 +"327",53.79999,53.700005,5,4813,1,2,4 +"328",60,72.700005,6,4813,1,2,4 +"329",68.69995,92.900005,7,4813,1,2,4 +"330",75.79999,114.700005,8,4813,1,2,4 +"331",80.79999,132.800003,9,4813,1,2,4 +"332",86.79999,138.100006,10,4813,1,2,4 +"333",91.39996,159.900005,11,4813,1,2,4 +"334",99.79999,182.100006,12,4813,1,2,4 +"335",26.2,NA,1,4814,2,2,4 +"336",31.09999,9.900002,2,4814,2,2,4 +"337",34.59998,19.600006,3,4814,2,2,4 +"338",41.19998,30,4,4814,2,2,4 +"339",49.19998,37.400002,5,4814,2,2,4 +"340",55.59998,57.200005,6,4814,2,2,4 +"341",62.59998,76.200005,7,4814,2,2,4 +"342",72.09998,93.000004,8,4814,2,2,4 +"343",77.5,109.800003,9,4814,2,2,4 +"344",83.79999,127.400002,10,4814,2,2,4 +"345",93.39996,148.900002,11,4814,2,2,4 +"346",98.39996,174.400002,12,4814,2,2,4 +"347",28,NA,1,4858,2,2,6 +"348",31.2,8,2,4858,2,2,6 +"349",38.79999,16.700005,3,4858,2,2,6 +"350",44.69998,31.800003,4,4858,2,2,6 +"351",53.59998,50.500004,5,4858,2,2,6 +"352",59.19998,71.100006,6,4858,2,2,6 +"353",67.09998,87.100006,7,4858,2,2,6 +"354",76.39996,107.300003,8,4858,2,2,6 +"355",83.79999,133.200005,9,4858,2,2,6 +"356",71.59998,163.100006,10,4858,2,2,6 +"357",97.39996,190.800003,11,4858,2,2,6 +"358",107.09998,219.800003,12,4858,2,2,6 +"359",24.59999,NA,1,5392,3,2,7 +"360",25.79999,7.700001,2,5392,3,2,7 +"361",28.59999,19.999996,3,5392,3,2,7 +"362",30.39999,29.999996,4,5392,3,2,7 +"363",36.09998,39.999996,5,5392,3,2,7 +"364",36.09998,47.499996,6,5392,3,2,7 +"365",49.29999,62.499996,7,5392,3,2,7 +"366",57.89999,76.799999,8,5392,3,2,7 +"367",63,89.499996,9,5392,3,2,7 +"368",75.69995,104.999996,10,5392,3,2,7 +"369",81.39996,123.999996,11,5392,3,2,7 +"370",88.69995,142.799997,12,5392,3,2,7 +"371",17,NA,1,5500,1,2,8 +"372",19,5.200001,2,5500,1,2,8 +"373",23,18.5,3,5500,1,2,8 +"374",29.39999,32.800003,4,5500,1,2,8 +"375",34.59998,43.800003,5,5500,1,2,8 +"376",40.59998,55.800003,6,5500,1,2,8 +"377",46.59998,71.400002,7,5500,1,2,8 +"378",54,87,8,5500,1,2,8 +"379",62.5,103.800003,9,5500,1,2,8 +"380",70,124.800003,10,5500,1,2,8 +"381",78.29999,147.300001,11,5500,1,2,8 +"382",83.19995,160.800003,12,5500,1,2,8 +"383",22,NA,1,5862,1,2,11 +"384",25.79999,8.5,2,5862,1,2,11 +"385",29.2,15.800003,3,5862,1,2,11 +"386",35.79999,25.900002,4,5862,1,2,11 +"387",41.09998,37.6,5,5862,1,2,11 +"388",50,48.200005,6,5862,1,2,11 +"389",55.19998,62,7,5862,1,2,11 +"390",62.19998,76.5,8,5862,1,2,11 +"391",69.79999,90.100002,9,5862,1,2,11 +"392",76.39996,107.100006,10,5862,1,2,11 +"393",83.19995,126.2,11,5862,1,2,11 +"394",93.19995,147.700005,12,5862,1,2,11 +"395",22,NA,1,5865,3,2,11 +"396",27,8.8,2,5865,3,2,11 +"397",32.89999,18.900001,3,5865,3,2,11 +"398",38,29.200005,4,5865,3,2,11 +"399",46.19998,43.600002,5,5865,3,2,11 +"400",53.5,58.1,6,5865,3,2,11 +"401",58.59998,73.400002,7,5865,3,2,11 +"402",68.19995,90,8,5865,3,2,11 +"403",71,104.800003,9,5865,3,2,11 +"404",80.79999,120.200005,10,5865,3,2,11 +"405",84.5,134.800003,11,5865,3,2,11 +"406",90,146.300001,12,5865,3,2,11 +"407",26.2,NA,1,6055,3,2,16 +"408",30.39999,6.900002,2,6055,3,2,16 +"409",37.39999,18.200001,3,6055,3,2,16 +"410",43,30.600006,4,6055,3,2,16 +"411",49.5,42.100002,5,6055,3,2,16 +"412",55.09998,62.200001,6,6055,3,2,16 +"413",64.19995,87.200001,7,6055,3,2,16 +"414",75.59998,106.900002,8,6055,3,2,16 +"415",83.29999,122.100002,9,6055,3,2,16 +"416",87.39996,148.4,10,6055,3,2,16 +"417",94.69995,170.100006,11,6055,3,2,16 +"418",98.39996,190.800003,12,6055,3,2,16 +"419",26.79999,NA,1,6208,1,2,17 +"420",31.09999,6.1,2,6208,1,2,17 +"421",37.79999,14.900002,3,6208,1,2,17 +"422",44.59998,28.5,4,6208,1,2,17 +"423",50.5,40.5,5,6208,1,2,17 +"424",58.29999,55.200001,6,6208,1,2,17 +"425",68.29999,73.700001,7,6208,1,2,17 +"426",75.09998,92.5,8,6208,1,2,17 +"427",84.39996,111.200005,9,6208,1,2,17 +"428",87.29999,129,10,6208,1,2,17 +"429",96.39996,145.800003,11,6208,1,2,17 +"430",104.39996,165.5,12,6208,1,2,17 +"431",24.09999,NA,1,6288,3,2,18 +"432",28.09999,6.200001,2,6288,3,2,18 +"433",32.5,15.900002,3,6288,3,2,18 +"434",40.59998,30.800003,4,6288,3,2,18 +"435",46,40.900002,5,6288,3,2,18 +"436",53.79999,52.100002,6,6288,3,2,18 +"437",61.19998,68.5,7,6288,3,2,18 +"438",71.89996,85.400002,8,6288,3,2,18 +"439",79.5,103.100002,9,6288,3,2,18 +"440",87.39996,119.5,10,6288,3,2,18 +"441",93.29999,141,11,6288,3,2,18 +"442",101.59998,161.800003,12,6288,3,2,18 +"443",25.09999,NA,1,6432,2,2,5 +"444",23.2,4,2,6432,2,2,5 +"445",28.89999,11.100006,3,6432,2,2,5 +"446",36.79999,21,4,6432,2,2,5 +"447",44.19998,31,5,6432,2,2,5 +"448",52.79999,56.300003,6,6432,2,2,5 +"449",62.19998,69.100006,7,6432,2,2,5 +"450",69.39996,87.200001,8,6432,2,2,5 +"451",78.09998,106.300003,9,6432,2,2,5 +"452",88.79999,129.5,10,6432,2,2,5 +"453",102.39996,159.5,11,6432,2,2,5 +"454",106.79999,197.400002,12,6432,2,2,5 +"455",24.7,NA,1,6909,3,2,13 +"456",28.89999,5.900002,2,6909,3,2,13 +"457",34.59998,15,3,6909,3,2,13 +"458",42.19998,26.6,4,6909,3,2,13 +"459",48.19998,38,5,6909,3,2,13 +"460",54.39999,50.900002,6,6909,3,2,13 +"461",62.5,65.100002,7,6909,3,2,13 +"462",69.79999,80,8,6909,3,2,13 +"463",78.59998,100.5,9,6909,3,2,13 +"464",87,116.900002,10,6909,3,2,13 +"465",96.39996,137.900002,11,6909,3,2,13 +"466",103.19995,158.5,12,6909,3,2,13 +"467",22,NA,1,8049,1,2,20 +"468",26.59999,9.5,2,8049,1,2,20 +"469",33.09998,19.900002,3,8049,1,2,20 +"470",38.39999,31,4,8049,1,2,20 +"471",46.59998,44.900002,5,8049,1,2,20 +"472",52.29999,63.800003,6,8049,1,2,20 +"473",61.5,78,7,8049,1,2,20 +"474",69.29999,96,8,8049,1,2,20 +"475",74.19995,116,9,8049,1,2,20 +"476",80.19995,137.6,10,8049,1,2,20 +"477",87.19995,162.100002,11,8049,1,2,20 +"478",94.79999,198,12,8049,1,2,20 +"479",30.59999,NA,1,8051,2,2,20 +"480",37.59998,11.200005,2,8051,2,2,20 +"481",42.79999,21,3,8051,2,2,20 +"482",47.39999,31.100006,4,8051,2,2,20 +"483",56.59998,47,5,8051,2,2,20 +"484",62.39999,65,6,8051,2,2,20 +"485",71.79999,78,7,8051,2,2,20 +"486",78,95.800003,8,8051,2,2,20 +"487",86.79999,115.800003,9,8051,2,2,20 +"488",94.19995,138,10,8051,2,2,20 +"489",101.89996,166.5,11,8051,2,2,20 +"490",112.5,196.900002,12,8051,2,2,20 +"491",24.2,NA,1,8141,3,2,23 +"492",25.39999,3.900002,2,8141,3,2,23 +"493",30.7,13.300003,3,8141,3,2,23 +"494",35.59998,24.600002,4,8141,3,2,23 +"495",42.79999,38.5,5,8141,3,2,23 +"496",49.5,53,6,8141,3,2,23 +"497",57.19998,67.6,7,8141,3,2,23 +"498",65.59998,83,8,8141,3,2,23 +"499",72.39996,99,9,8141,3,2,23 +"500",81.19995,116,10,8141,3,2,23 +"501",85.19995,135.400002,11,8141,3,2,23 +"502",90.19995,153,12,8141,3,2,23 +"503",25.2,NA,1,8142,1,2,23 +"504",29.79999,9,2,8142,1,2,23 +"505",35.69998,21,3,8142,1,2,23 +"506",42,31.300003,4,8142,1,2,23 +"507",50,44,5,8142,1,2,23 +"508",55.89999,57.800001,6,8142,1,2,23 +"509",63.5,73.100002,7,8142,1,2,23 +"510",70,89.5,8,8142,1,2,23 +"511",79.5,105.400002,9,8142,1,2,23 +"512",83.59998,122.200001,10,8142,1,2,23 +"513",89.39996,138.5,11,8142,1,2,23 +"514",98.5,156.400002,12,8142,1,2,23 +"515",23.5,NA,1,8144,2,2,23 +"516",25.89999,7.200001,2,8144,2,2,23 +"517",32.19998,19.5,3,8144,2,2,23 +"518",32.39999,25.800003,4,8144,2,2,23 +"519",29.79999,29.5,5,8144,2,2,23 +"520",32.79999,34,6,8144,2,2,23 +"521",41,50,7,8144,2,2,23 +"522",50,66.700001,8,8144,2,2,23 +"523",56.89999,80.700005,9,8144,2,2,23 +"524",64.79999,96,10,8144,2,2,23 +"525",72.09998,111.200005,11,8144,2,2,23 +"526",81.39996,131.400002,12,8144,2,2,23 +"527",26.59999,NA,1,8191,2,2,21 +"528",33,10,2,8191,2,2,21 +"529",38.19998,20,3,8191,2,2,21 +"530",46.39999,30,4,8191,2,2,21 +"531",53.19998,40,5,8191,2,2,21 +"532",59.59998,60,6,8191,2,2,21 +"533",66.19995,82.100002,7,8191,2,2,21 +"534",72.59998,99.5,8,8191,2,2,21 +"535",80.09998,120,9,8191,2,2,21 +"536",89,139,10,8191,2,2,21 +"537",97.69995,162.800003,11,8191,2,2,21 +"538",103,185.800003,12,8191,2,2,21 +"539",29.29999,NA,1,8193,3,2,21 +"540",34,10.5,2,8193,3,2,21 +"541",39,20.200005,3,8193,3,2,21 +"542",45.39999,34.800003,4,8193,3,2,21 +"543",51.79999,51,5,8193,3,2,21 +"544",58.79999,70,6,8193,3,2,21 +"545",62.59998,86.200001,7,8193,3,2,21 +"546",71.59998,103,8,8193,3,2,21 +"547",76.69995,111,9,8193,3,2,21 +"548",81.69995,132,10,8193,3,2,21 +"549",86.39996,157.800001,11,8193,3,2,21 +"550",92.09998,178,12,8193,3,2,21 +"551",25,NA,1,8273,1,2,22 +"552",30.09999,8,2,8273,1,2,22 +"553",37.09998,20,3,8273,1,2,22 +"554",46,33.800003,4,8273,1,2,22 +"555",53.59998,48.5,5,8273,1,2,22 +"556",61.09998,67,6,8273,1,2,22 +"557",69,83,7,8273,1,2,22 +"558",78.19995,102,8,8273,1,2,22 +"559",87.09998,119,9,8273,1,2,22 +"560",94.39996,145.5,10,8273,1,2,22 +"561",102.5,163.400002,11,8273,1,2,22 +"562",107.5,183.800001,12,8273,1,2,22 +"563",27,NA,1,8437,2,2,24 +"564",30,6.800003,2,8437,2,2,24 +"565",35.39999,16.400002,3,8437,2,2,24 +"566",41,28.300001,4,8437,2,2,24 +"567",48.59998,41,5,8437,2,2,24 +"568",56.39999,54.900002,6,8437,2,2,24 +"569",63,70.5,7,8437,2,2,24 +"570",75.5,88.5,8,8437,2,2,24 +"571",77.79999,103.300003,9,8437,2,2,24 +"572",85.79999,119.5,10,8437,2,2,24 +"573",95,124.5,11,8437,2,2,24 +"574",101.39996,143.7,12,8437,2,2,24 +"575",27.59999,NA,1,4603,3,3,1 +"576",30.59999,6.700005,2,4603,3,3,1 +"577",38.69998,17.6,3,4603,3,3,1 +"578",47.19998,32.800003,4,4603,3,3,1 +"579",54.09998,50,5,4603,3,3,1 +"580",61.5,64.600002,6,4603,3,3,1 +"581",68.5,80.5,7,4603,3,3,1 +"582",75.19995,91.800003,8,4603,3,3,1 +"583",81.69995,110.200005,9,4603,3,3,1 +"584",90.19995,125.600002,10,4603,3,3,1 +"585",98.39996,145,11,4603,3,3,1 +"586",105.39996,166,12,4603,3,3,1 +"587",27.09999,NA,1,4641,2,3,2 +"588",33,5.200001,2,4641,2,3,2 +"589",42.5,22.5,3,4641,2,3,2 +"590",50.09998,38.5,4,4641,2,3,2 +"591",56.5,53.300003,5,4641,2,3,2 +"592",63,69.8,6,4641,2,3,2 +"593",72.5,85.100002,7,4641,2,3,2 +"594",80.5,101.100006,8,4641,2,3,2 +"595",92,121.400002,9,4641,2,3,2 +"596",100,142.200001,10,4641,2,3,2 +"597",108.39996,157,11,4641,2,3,2 +"598",117,180,12,4641,2,3,2 +"599",15,NA,1,4760,1,3,3 +"600",19.39999,7.900002,2,4760,1,3,3 +"601",21.39999,15,3,4760,1,3,3 +"602",25.29999,22.100002,4,4760,1,3,3 +"603",31.89999,29.900002,5,4760,1,3,3 +"604",37.59998,41.800003,6,4760,1,3,3 +"605",43.69998,57.600006,7,4760,1,3,3 +"606",48.89999,69.5,8,4760,1,3,3 +"607",53.69998,83.800003,9,4760,1,3,3 +"608",59.29999,93.200001,10,4760,1,3,3 +"609",64.89996,107.900002,11,4760,1,3,3 +"610",65.79999,117.300003,12,4760,1,3,3 +"611",24.89999,NA,1,4815,2,3,4 +"612",29.7,9.5,2,4815,2,3,4 +"613",33.79999,19,3,4815,2,3,4 +"614",38.79999,32,4,4815,2,3,4 +"615",48.29999,45.5,5,4815,2,3,4 +"616",52.89999,59.100006,6,4815,2,3,4 +"617",65,80.100006,7,4815,2,3,4 +"618",70.39996,104.600002,8,4815,2,3,4 +"619",76.79999,130,9,4815,2,3,4 +"620",83.29999,149,10,4815,2,3,4 +"621",95,175.600006,11,4815,2,3,4 +"622",102.69995,203.500008,12,4815,2,3,4 +"623",24.59999,NA,1,4817,1,3,4 +"624",28,9,2,4817,1,3,4 +"625",34.59998,19.900002,3,4817,1,3,4 +"626",41.5,33.900002,4,4817,1,3,4 +"627",49.69998,47.000004,5,4817,1,3,4 +"628",56.5,65.200001,6,4817,1,3,4 +"629",66.89996,83.300003,7,4817,1,3,4 +"630",75.79999,106.400002,8,4817,1,3,4 +"631",84.59998,125.900002,9,4817,1,3,4 +"632",91,144.000004,10,4817,1,3,4 +"633",98.79999,168.200001,11,4817,1,3,4 +"634",107.19995,178.200001,12,4817,1,3,4 +"635",26,NA,1,4857,1,3,6 +"636",34.5,8.5,2,4857,1,3,6 +"637",40.39999,19.200005,3,4857,1,3,6 +"638",45,29,4,4857,1,3,6 +"639",53.5,45,5,4857,1,3,6 +"640",60.19998,62.300003,6,4857,1,3,6 +"641",68.59998,89.700005,7,4857,1,3,6 +"642",73.39996,101.800003,8,4857,1,3,6 +"643",78.5,112.700003,9,4857,1,3,6 +"644",86,135.300007,10,4857,1,3,6 +"645",90.59998,154.100002,11,4857,1,3,6 +"646",97.19995,168.700005,12,4857,1,3,6 +"647",24.29999,NA,1,5389,3,3,7 +"648",28.39999,5.400002,2,5389,3,3,7 +"649",36,20,3,5389,3,3,7 +"650",40.29999,30.300003,4,5389,3,3,7 +"651",46.19998,41.800003,5,5389,3,3,7 +"652",51.89999,54.800003,6,5389,3,3,7 +"653",58.09998,69.000002,7,5389,3,3,7 +"654",62.59998,83.800005,8,5389,3,3,7 +"655",68.19995,97.200002,9,5389,3,3,7 +"656",78.39996,114.200003,10,5389,3,3,7 +"657",87.5,131.100004,11,5389,3,3,7 +"658",90.39996,147.000002,12,5389,3,3,7 +"659",30,NA,1,5501,2,3,8 +"660",34.69998,10,2,5501,2,3,8 +"661",42.79999,22.5,3,5501,2,3,8 +"662",48.39999,35.200001,4,5501,2,3,8 +"663",53.29999,45.800003,5,5501,2,3,8 +"664",60,60,6,5501,2,3,8 +"665",71.09998,75.200001,7,5501,2,3,8 +"666",77.39996,92.800003,8,5501,2,3,8 +"667",86,110,9,5501,2,3,8 +"668",94.5,128,10,5501,2,3,8 +"669",102,149.5,11,5501,2,3,8 +"670",104.59998,160,12,5501,2,3,8 +"671",26.59999,NA,1,5527,2,3,9 +"672",28.2,10,2,5527,2,3,9 +"673",38.39999,30,3,5527,2,3,9 +"674",45.79999,50,4,5527,2,3,9 +"675",54.89999,60,5,5527,2,3,9 +"676",60.09998,78.5,6,5527,2,3,9 +"677",56.89999,86.200001,7,5527,2,3,9 +"678",64.89996,102.900002,8,5527,2,3,9 +"679",74,121.799988,9,5527,2,3,9 +"680",81.89996,136.999992,10,5527,2,3,9 +"681",90.89996,136.999992,11,5527,2,3,9 +"682",27.09999,NA,1,5578,2,3,10 +"683",34.69998,11.100002,2,5578,2,3,10 +"684",40.69998,29.900002,3,5578,2,3,10 +"685",47.59998,45.300001,4,5578,2,3,10 +"686",56.5,65.6,5,5578,2,3,10 +"687",64,84.800001,6,5578,2,3,10 +"688",72.29999,107,7,5578,2,3,10 +"689",82,135.1,8,5578,2,3,10 +"690",88,155.5,9,5578,2,3,10 +"691",95.09998,177.900002,10,5578,2,3,10 +"692",104,201.5,11,5578,2,3,10 +"693",105.69995,224.5,12,5578,2,3,10 +"694",29.5,NA,1,5582,3,3,10 +"695",31.39999,6.800001,2,5582,3,3,10 +"696",39.39999,19.6,3,5582,3,3,10 +"697",44.79999,30.300003,4,5582,3,3,10 +"698",50.29999,41.400002,5,5582,3,3,10 +"699",57,55,6,5582,3,3,10 +"700",65.59998,71,7,5582,3,3,10 +"701",72.39996,86.800001,8,5582,3,3,10 +"702",80.19995,105.200001,9,5582,3,3,10 +"703",90.39996,127.800001,10,5582,3,3,10 +"704",95,149.5,11,5582,3,3,10 +"705",99.09998,167.5,12,5582,3,3,10 +"706",22.29999,NA,1,5851,3,3,12 +"707",24.7,5.900002,2,5851,3,3,12 +"708",30.39999,15,3,5851,3,3,12 +"709",36.89999,25.200001,4,5851,3,3,12 +"710",44.09998,39,5,5851,3,3,12 +"711",52.79999,56,6,5851,3,3,12 +"712",60.29999,71.100006,7,5851,3,3,12 +"713",67.79999,86.5,8,5851,3,3,12 +"714",75.39996,106.300001,9,5851,3,3,12 +"715",87.59998,127.599991,10,5851,3,3,12 +"716",93,137.599991,11,5851,3,3,12 +"717",101.39996,157.599991,12,5851,3,3,12 +"718",22,NA,1,5866,2,3,11 +"719",24.79999,7.5,2,5866,2,3,11 +"720",30,16.1,3,5866,2,3,11 +"721",35.79999,26,4,5866,2,3,11 +"722",42.29999,36.800001,5,5866,2,3,11 +"723",50.89999,49.800003,6,5866,2,3,11 +"724",57.79999,65.100002,7,5866,2,3,11 +"725",64.79999,80,8,5866,2,3,11 +"726",71.79999,93.800003,9,5866,2,3,11 +"727",75,109.900002,10,5866,2,3,11 +"728",83.79999,122.800003,11,5866,2,3,11 +"729",92.09998,142.400002,12,5866,2,3,11 +"730",32.5,NA,1,6056,3,3,16 +"731",38.79999,10,2,6056,3,3,16 +"732",47.79999,23.800003,3,6056,3,3,16 +"733",54.5,39,4,6056,3,3,16 +"734",63,53.200001,5,6056,3,3,16 +"735",70.09998,69,6,6056,3,3,16 +"736",76.59998,89,7,6056,3,3,16 +"737",86.19995,105.900002,8,6056,3,3,16 +"738",95.79999,127,9,6056,3,3,16 +"739",101.39996,151.200005,10,6056,3,3,16 +"740",112.29999,174.5,11,6056,3,3,16 +"741",112,191.400002,12,6056,3,3,16 +"742",27,NA,1,6057,2,3,16 +"743",32.39999,7.800001,2,6057,2,3,16 +"744",38.19998,17,3,6057,2,3,16 +"745",44.69998,30.100006,4,6057,2,3,16 +"746",53.19998,44.800003,5,6057,2,3,16 +"747",62.39999,60,6,6057,2,3,16 +"748",70.5,80,7,6057,2,3,16 +"749",72.79999,91.800003,8,6057,2,3,16 +"750",86.59998,111.100006,9,6057,2,3,16 +"751",93.29999,131.800003,10,6057,2,3,16 +"752",103,147.800003,11,6057,2,3,16 +"753",104.19995,165.400002,12,6057,2,3,16 +"754",34.19998,NA,1,6430,2,3,5 +"755",42.09998,8.499996,2,6430,2,3,5 +"756",50.09998,23.099998,3,6430,2,3,5 +"757",57.59998,35,4,6430,2,3,5 +"758",62.29999,54.299995,5,6430,2,3,5 +"759",66,73.399996,6,6430,2,3,5 +"760",76.09998,81.899996,7,6430,2,3,5 +"761",81.5,96.099998,8,6430,2,3,5 +"762",84.29999,114.299995,9,6430,2,3,5 +"763",97.89996,133.799995,10,6430,2,3,5 +"764",108.59998,163.799995,11,6430,2,3,5 +"765",109,198.299995,12,6430,2,3,5 +"766",26.79999,NA,1,8050,1,3,20 +"767",33.59998,10.900002,2,8050,1,3,20 +"768",42.09998,25.100002,3,8050,1,3,20 +"769",47.89999,38,4,8050,1,3,20 +"770",56.19998,54.400002,5,8050,1,3,20 +"771",63.39999,74.200001,6,8050,1,3,20 +"772",71.79999,89.900002,7,8050,1,3,20 +"773",80,111,8,8050,1,3,20 +"774",87.59998,135.800003,9,8050,1,3,20 +"775",94.89996,159.600006,10,8050,1,3,20 +"776",101,188.200001,11,8050,1,3,20 +"777",112,224,12,8050,1,3,20 +"778",21.89999,NA,1,8053,3,3,20 +"779",26.79999,9.6,2,8053,3,3,20 +"780",34.69998,21.800003,3,8053,3,3,20 +"781",41.29999,36.700001,4,8053,3,3,20 +"782",48.69998,51.800003,5,8053,3,3,20 +"783",57.89999,71.400002,6,8053,3,3,20 +"784",65.39996,91.600006,7,8053,3,3,20 +"785",71.29999,115.800003,8,8053,3,3,20 +"786",80.59998,138,9,8053,3,3,20 +"787",88.39996,163,10,8053,3,3,20 +"788",96.29999,188,11,8053,3,3,20 +"789",103.5,217.800001,12,8053,3,3,20 +"790",24,NA,1,8139,1,3,23 +"791",26.79999,6,2,8139,1,3,23 +"792",33,20,3,8139,1,3,23 +"793",39.09998,30.300003,4,8139,1,3,23 +"794",46.39999,45.100002,5,8139,1,3,23 +"795",54,61.400002,6,8139,1,3,23 +"796",61.59998,74.400002,7,8139,1,3,23 +"797",68.79999,91.800003,8,8139,1,3,23 +"798",72.19995,109.5,9,8139,1,3,23 +"799",77.19995,128,10,8139,1,3,23 +"800",83.79999,144.400002,11,8139,1,3,23 +"801",90.79999,160.300003,12,8139,1,3,23 +"802",35.39999,NA,1,8192,1,3,21 +"803",42.29999,15.100002,2,8192,1,3,21 +"804",49.5,29.800003,3,8192,1,3,21 +"805",58.69998,48.5,4,8192,1,3,21 +"806",66.59998,70,5,8192,1,3,21 +"807",71.39996,87.300001,6,8192,1,3,21 +"808",78.79999,104.200001,7,8192,1,3,21 +"809",85.5,125.5,8,8192,1,3,21 +"810",91.29999,144.900002,9,8192,1,3,21 +"811",97.79999,165,10,8192,1,3,21 +"812",108,197,11,8192,1,3,21 +"813",113,220,12,8192,1,3,21 +"814",22.09999,NA,1,8269,3,3,22 +"815",26.29999,6,2,8269,3,3,22 +"816",33.29999,16.800001,3,8269,3,3,22 +"817",38,27.400002,4,8269,3,3,22 +"818",39.59998,36.200001,5,8269,3,3,22 +"819",41.39999,43.300003,6,8269,3,3,22 +"820",46.29999,54,7,8269,3,3,22 +"821",52.39999,70,8,8269,3,3,22 +"822",59.39999,90,9,8269,3,3,22 +"823",66.69995,112.5,10,8269,3,3,22 +"824",73.89996,128,11,8269,3,3,22 +"825",76.79999,141.5,12,8269,3,3,22 +"826",23.7,NA,1,8270,1,3,22 +"827",28.79999,7.6,2,8270,1,3,22 +"828",35.09998,18.5,3,8270,1,3,22 +"829",43,33.200001,4,8270,1,3,22 +"830",49.09998,44.900002,5,8270,1,3,22 +"831",58.79999,60,6,8270,1,3,22 +"832",65.39996,75.800003,7,8270,1,3,22 +"833",68.5,91,8,8270,1,3,22 +"834",79,108.5,9,8270,1,3,22 +"835",90.69995,133.200001,10,8270,1,3,22 +"836",98,151.200005,11,8270,1,3,22 +"837",104,167.800001,12,8270,1,3,22 +"838",27.29999,NA,1,8439,3,3,24 +"839",31.2,8.8,2,8439,3,3,24 +"840",37,20,3,8439,3,3,24 +"841",43.89999,33.200001,4,8439,3,3,24 +"842",49.79999,44.800003,5,8439,3,3,24 +"843",57.19998,58,6,8439,3,3,24 +"844",65.19995,74.600002,7,8439,3,3,24 +"845",73.19995,94.900002,8,8439,3,3,24 +"846",78.79999,108.8,9,8439,3,3,24 +"847",87.39996,128,10,8439,3,3,24 +"848",95,149,11,8439,3,3,24 +"849",100.5,158.600006,12,8439,3,3,24 +"850",25.7,NA,1,8442,1,3,24 +"851",28.7,6.6,2,8442,1,3,24 +"852",33.39999,15.800003,3,8442,1,3,24 +"853",40,27,4,8442,1,3,24 +"854",46.69998,40,5,8442,1,3,24 +"855",56.59998,52,6,8442,1,3,24 +"856",65.19995,66,7,8442,1,3,24 +"857",73.19995,83.800003,8,8442,1,3,24 +"858",81.69995,99.800003,9,8442,1,3,24 +"859",90.29999,115.200001,10,8442,1,3,24 +"860",96,133.200001,11,8442,1,3,24 +"861",103.5,151.400002,12,8442,1,3,24 diff --git a/statsmodels/regression/tests/results/generate_lasso.py b/statsmodels/regression/tests/results/generate_lasso.py new file mode 100644 index 0000000..cb213a0 --- /dev/null +++ b/statsmodels/regression/tests/results/generate_lasso.py @@ -0,0 +1,27 @@ +import numpy as np + +""" +Generate data sets for testing OLS.fit_regularized + +After running this script, rerun lasso_r_results.R in R to rebuild the +results file "glmnet_r_results.py". + +Currently only tests OLS. Our implementation covers GLS, but it's not +clear if glmnet does. +""" + +n = 300 +p = 5 + +np.random.seed(83423) + +exog = np.random.normal(size=(n, p)) +params = (-1.)**np.arange(p) +params[::3] = 0 +expval = np.dot(exog, params) +endog = expval + np.random.normal(size=n) +data = np.concatenate((endog[:, None], exog), axis=1) +data = np.around(100*data) + +fname = "lasso_data.csv" +np.savetxt(fname, data, fmt="%.0f", delimiter=",") diff --git a/statsmodels/regression/tests/results/generate_lme.py b/statsmodels/regression/tests/results/generate_lme.py new file mode 100644 index 0000000..2ec45ff --- /dev/null +++ b/statsmodels/regression/tests/results/generate_lme.py @@ -0,0 +1,75 @@ +""" +Generate test data sets for lme. + +After running this script, run lme_results.R with R +to update the output. +""" + +import numpy as np +import os + +np.random.seed(348491) + +# Number of groups +ngroup = 100 + +# Sample size range per group +n_min = 1 +n_max = 5 + +dsix = 0 + +# Number of random effects +for pr in [1, 2]: + + re_sd = np.linspace(-0.5, 1.5, pr) + + # Number of fixed effects + for pf in [1, 2, 3]: + + # Error standard deviation + for sig in [0.5, 2]: + + params = np.linspace(-1, 1, pf) + + endog = [] + exog_fe = [] + exog_re = [] + groups = [] + for i in range(ngroup): + + n = np.random.randint(n_min, n_max, 1) + x_fe = np.random.normal(size=(n, pf)) + x_re = np.zeros((n, pr)) + u = np.linspace(-1, 1, n) + for j in range(pr): + x_re[:, j] = u**j + + re = np.random.normal(size=pr) * re_sd + + expval = np.dot(x_fe, params) + np.dot(x_re, re) + + endog.append(expval + sig*np.random.normal(size=n)) + exog_fe.append(x_fe) + exog_re.append(x_re) + groups.append(i*np.ones(n)) + + endog = np.concatenate(endog) + exog_fe = np.concatenate(exog_fe, axis=0) + exog_re = np.concatenate(exog_re, axis=0) + groups = np.concatenate(groups, axis=0) + + data = np.concatenate((groups[:, None], endog[:, None], + exog_fe, exog_re), axis=1) + + header = (["groups,endog"] + + ["exog_fe_%d" % k for k in range(pf)] + + ["exog_re_%d" % k for k in range(pr)]) + header = ",".join(header) + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + + fname = os.path.join(cur_dir, "lme%02d.csv" % dsix) + np.savetxt(fname, data, fmt="%.3f", header=header, + delimiter=",", comments="") + dsix += 1 diff --git a/statsmodels/regression/tests/results/glmnet_r_results.py b/statsmodels/regression/tests/results/glmnet_r_results.py new file mode 100644 index 0000000..1f3e61e --- /dev/null +++ b/statsmodels/regression/tests/results/glmnet_r_results.py @@ -0,0 +1,258 @@ +import numpy as np + +rslt_0 = np.array([ + 100, 2, 0, 38.51677, -0.0002828592, -0.01440669]) + +rslt_1 = np.array([ + 100, 2, 0, 5.991962, -0.00144282, -0.08156386]) + +rslt_2 = np.array([ + 100, 2, 0, 0.9321552, -0.003400212, -0.2968083]) + +rslt_3 = np.array([ + 100, 2, 0.5, 0.2352493, 0, -0.4099712]) + +rslt_4 = np.array([ + 100, 2, 0.5, 0.07703354, 0, -0.5185569]) + +rslt_5 = np.array([ + 100, 2, 0.5, 0.02522501, 0, -0.5578565]) + +rslt_6 = np.array([ + 100, 2, 1, 0.1416793, 0, -0.4346288]) + +rslt_7 = np.array([ + 100, 2, 1, 0.04639359, 0, -0.530877]) + +rslt_8 = np.array([ + 100, 2, 1, 0.01829859, 0, -0.5592558]) + +rslt_9 = np.array([ + 100, 3, 0, 38.51677, -0.0002931891, -0.01441805, 0.01019003]) + +rslt_10 = np.array([ + 100, 3, 0, 5.991962, -0.00177573, -0.08193033, 0.05812813]) + +rslt_11 = np.array([ + 100, 3, 0, 0.9321552, -0.007886374, -0.3017527, 0.2167204]) + +rslt_12 = np.array([ + 100, 3, 0.5, 0.2143504, 0, -0.4350311, 0.2878706]) + +rslt_13 = np.array([ + 100, 3, 0.5, 0.07019009, 0, -0.540186, 0.3830582]) + +rslt_14 = np.array([ + 100, 3, 0.5, 0.02298409, -0.007207869, -0.5779581, 0.417658]) + +rslt_15 = np.array([ + 100, 3, 1, 0.1176247, 0, -0.4728138, 0.3103276]) + +rslt_16 = np.array([ + 100, 3, 1, 0.03851677, 0, -0.5564642, 0.393978]) + +rslt_17 = np.array([ + 100, 3, 1, 0.01384221, -0.004948496, -0.5824816, 0.4202673]) + +rslt_18 = np.array([ + 100, 5, 0, 38.51677, -0.0002957436, + -0.01439344, 0.01022347, -0.001361073, 0.01156754]) + +rslt_19 = np.array([ + 100, 5, 0, 5.991962, -0.001844459, + -0.08115691, 0.05920275, -0.006436703, 0.06552873]) + +rslt_20 = np.array([ + 100, 5, 0, 0.9321552, -0.008226096, + -0.2921193, 0.2311589, -0.008479325, 0.2404427]) + +rslt_21 = np.array([ + 100, 5, 0.5, 0.2143504, 0, -0.4132961, 0.3222149, 0, 0.3262246]) + +rslt_22 = np.array([ + 100, 5, 0.5, 0.0639546, 0, -0.5145012, 0.4359585, 0, 0.4294001]) + +rslt_23 = np.array([ + 100, 5, 0.5, 0.02094225, -0.00787628, + -0.5466386, 0.4728884, 0.0106367, 0.4627422]) + +rslt_24 = np.array([ + 100, 5, 1, 0.1176247, 0, -0.4469856, 0.3513112, 0, 0.3519996]) + +rslt_25 = np.array([ + 100, 5, 1, 0.03851677, 0, -0.5243974, 0.4448608, 0, 0.4370223]) + +rslt_26 = np.array([ + 100, 5, 1, 0.01261251, -0.00600524, + -0.5501652, 0.4761259, 0.009292623, 0.4655236]) + +rslt_27 = np.array([ + 200, 2, 0, 37.37243, -0.0006197982, -0.01442844]) + +rslt_28 = np.array([ + 200, 2, 0, 5.813939, -0.002965157, -0.0813082]) + +rslt_29 = np.array([ + 200, 2, 0, 0.9044607, -0.0046755, -0.2916905]) + +rslt_30 = np.array([ + 200, 2, 0.5, 0.207982, 0, -0.4102587]) + +rslt_31 = np.array([ + 200, 2, 0.5, 0.06810473, 0, -0.5061677]) + +rslt_32 = np.array([ + 200, 2, 0.5, 0.02230123, 0, -0.5404787]) + +rslt_33 = np.array([ + 200, 2, 1, 0.11413, 0, -0.443054]) + +rslt_34 = np.array([ + 200, 2, 1, 0.03737243, 0, -0.5201972]) + +rslt_35 = np.array([ + 200, 2, 1, 0.01343095, 0, -0.544259]) + +rslt_36 = np.array([ + 200, 3, 0, 37.37243, -0.0006182692, -0.01444479, 0.01107838]) + +rslt_37 = np.array([ + 200, 3, 0, 5.813939, -0.002912734, -0.08183274, 0.06300276]) + +rslt_38 = np.array([ + 200, 3, 0, 0.9044607, -0.003838731, -0.298655, 0.2325274]) + +rslt_39 = np.array([ + 200, 3, 0.5, 0.207982, 0, -0.426489, 0.3142956]) + +rslt_40 = np.array([ + 200, 3, 0.5, 0.06810473, 0, -0.5287444, 0.4093069]) + +rslt_41 = np.array([ + 200, 3, 0.5, 0.02230123, 0, -0.5654985, 0.4434813]) + +rslt_42 = np.array([ + 200, 3, 1, 0.1252575, 0, -0.450539, 0.3272248]) + +rslt_43 = np.array([ + 200, 3, 1, 0.04101619, 0, -0.540326, 0.4170119]) + +rslt_44 = np.array([ + 200, 3, 1, 0.01343095, 0, -0.5697273, 0.4464131]) + +rslt_45 = np.array([ + 200, 5, 0, 37.37243, -0.0006213086, + -0.01441334, 0.01110832, -0.00159415, 0.01237059]) + +rslt_46 = np.array([ + 200, 5, 0, 5.813939, -0.003007826, + -0.08084357, 0.06395108, -0.008286656, 0.06957285]) + +rslt_47 = np.array([ + 200, 5, 0, 0.9044607, -0.004970054, + -0.2862855, 0.2446989, -0.02121838, 0.2488685]) + +rslt_48 = np.array([ + 200, 5, 0.5, 0.207982, 0, -0.398901, 0.3436805, 0, 0.3354236]) + +rslt_49 = np.array([ + 200, 5, 0.5, 0.06810473, 0, -0.4912754, 0.4492343, 0, 0.4280285]) + +rslt_50 = np.array([ + 200, 5, 0.5, 0.02230123, 0, + -0.5240797, 0.4869532, -0.007872715, 0.4611676]) + +rslt_51 = np.array([ + 200, 5, 1, 0.11413, 0, -0.4298238, 0.3738058, 0, 0.3604706]) + +rslt_52 = np.array([ + 200, 5, 1, 0.03737243, 0, -0.5044899, 0.4632316, 0, 0.4395307]) + +rslt_53 = np.array([ + 200, 5, 1, 0.01343095, 0, -0.5276608, 0.4907892, -0.005343287, 0.4641237]) + +rslt_54 = np.array([ + 300, 2, 0, 34.28346, -0.0003952878, -0.01440603]) + +rslt_55 = np.array([ + 300, 2, 0, 5.333396, -0.001501322, -0.08029644]) + +rslt_56 = np.array([ + 300, 2, 0, 0.8297037, 0.002123792, -0.2786158]) + +rslt_57 = np.array([ + 300, 2, 0.5, 0.1907915, 0, -0.3787717]) + +rslt_58 = np.array([ + 300, 2, 0.5, 0.06247562, 0, -0.4648646]) + +rslt_59 = np.array([ + 300, 2, 0.5, 0.02045795, 0.008282189, -0.4960003]) + +rslt_60 = np.array([ + 300, 2, 1, 0.1046967, 0, -0.4057543]) + +rslt_61 = np.array([ + 300, 2, 1, 0.03428346, 0, -0.476403]) + +rslt_62 = np.array([ + 300, 2, 1, 0.01232084, 0.006463487, -0.4988773]) + +rslt_63 = np.array([ + 300, 3, 0, 34.28346, -0.000389794, -0.01441521, 0.01276503]) + +rslt_64 = np.array([ + 300, 3, 0, 5.333396, -0.001327446, -0.08058424, 0.07142295]) + +rslt_65 = np.array([ + 300, 3, 0, 0.8297037, 0.004333533, -0.2821765, 0.2505531]) + +rslt_66 = np.array([ + 300, 3, 0.5, 0.2093935, 0, -0.3745606, 0.3227598]) + +rslt_67 = np.array([ + 300, 3, 0.5, 0.06856692, 0, -0.4707627, 0.4155033]) + +rslt_68 = np.array([ + 300, 3, 0.5, 0.02045795, 0.01586083, -0.5078635, 0.4505092]) + +rslt_69 = np.array([ + 300, 3, 1, 0.1149045, 0, -0.4043541, 0.347238]) + +rslt_70 = np.array([ + 300, 3, 1, 0.03762605, 0, -0.483917, 0.4268009]) + +rslt_71 = np.array([ + 300, 3, 1, 0.01232084, 0.01417268, -0.5109371, 0.4530943]) + +rslt_72 = np.array([ + 300, 5, 0, 34.28346, -0.0003887545, + -0.01441065, 0.01279253, -0.001336729, 0.01332977]) + +rslt_73 = np.array([ + 300, 5, 0, 5.333396, -0.001294265, + -0.08044256, 0.07228947, -0.006888477, 0.07488032]) + +rslt_74 = np.array([ + 300, 5, 0, 0.8297037, 0.00476926, + -0.2804704, 0.2614478, -0.01761104, 0.2661808]) + +rslt_75 = np.array([ + 300, 5, 0.5, 0.2093935, 0, -0.3705814, 0.347887, 0, 0.351998]) + +rslt_76 = np.array([ + 300, 5, 0.5, 0.06856692, 0, -0.465371, 0.449883, 0, 0.4508697]) + +rslt_77 = np.array([ + 300, 5, 0.5, 0.02045795, 0.01744528, + -0.5021737, 0.4881574, -0.007930221, 0.4878982]) + +rslt_78 = np.array([ + 300, 5, 1, 0.1149045, 0, -0.3996701, 0.3772643, 0, 0.3807041]) + +rslt_79 = np.array([ + 300, 5, 1, 0.03762605, 0, -0.4782089, 0.4633918, 0, 0.4639368]) + +rslt_80 = np.array([ + 300, 5, 1, 0.01232084, 0.01578941, + -0.5051176, 0.4915133, -0.005703398, 0.4910846]) diff --git a/statsmodels/regression/tests/results/lasso_data.csv b/statsmodels/regression/tests/results/lasso_data.csv new file mode 100644 index 0000000..12e133f --- /dev/null +++ b/statsmodels/regression/tests/results/lasso_data.csv @@ -0,0 +1,300 @@ +-178,3,59,-132,-32,-126 +303,17,-241,12,-81,41 +-54,159,2,5,-68,-150 +395,122,5,34,135,215 +-52,101,29,17,100,60 +255,-14,-146,-60,46,29 +-21,192,-131,51,-181,-111 +278,49,-69,69,-51,93 +-38,25,-48,-115,-5,30 +-191,101,75,-109,-48,82 +-373,-179,15,-76,56,-86 +123,-68,-78,-115,-26,-85 +-32,-102,84,42,45,41 +-78,-32,48,74,-57,34 +225,4,-115,-107,125,130 +-162,29,22,24,-31,144 +32,88,-32,67,-65,-93 +28,-50,-80,-43,234,-107 +35,-244,132,-31,47,154 +1,62,61,92,-58,13 +-427,-176,67,-152,-82,-94 +-54,-52,3,-54,-57,16 +185,-46,-173,95,114,-50 +-111,-49,19,25,-46,-129 +-212,-131,-91,-37,-87,-93 +352,-12,-15,106,-14,146 +76,32,-78,65,115,60 +34,28,-35,-22,73,11 +243,58,-189,-101,112,230 +244,-37,-241,-9,166,16 +10,122,-112,-31,-136,-32 +170,-128,-165,106,18,-61 +38,54,-104,-53,32,17 +-143,-142,74,-119,-140,3 +68,-118,-114,68,109,43 +168,-104,-215,7,83,65 +-80,16,-115,-74,-44,14 +432,-103,-317,-34,-87,35 +-173,-50,-40,-74,211,-73 +-156,-102,39,-60,-8,-12 +-306,143,43,19,41,-122 +90,28,-6,-31,-20,62 +11,140,-101,73,-67,-63 +30,145,-39,75,93,-46 +36,-20,26,-76,-88,86 +-398,-194,234,9,48,-37 +137,-71,-53,-128,-41,111 +28,43,-192,-97,-249,-4 +-165,-40,114,63,-33,-5 +38,71,58,73,34,9 +174,-15,69,65,-88,15 +-12,8,122,153,126,-61 +50,-61,-74,-72,38,18 +-520,9,277,-157,42,-19 +-24,-79,97,-34,7,29 +42,-83,-64,83,74,-44 +-186,92,35,-123,29,-85 +-90,-124,-149,107,31,-228 +-228,-165,5,-189,134,5 +99,-23,-92,97,102,-44 +145,108,105,74,58,70 +16,54,48,157,4,-170 +-162,9,9,-45,39,-6 +-96,-87,82,-61,69,71 +51,23,-114,-163,172,112 +117,-129,-27,22,-40,-107 +-140,24,81,253,-26,-186 +236,98,82,154,-71,90 +-500,-16,118,-154,-104,-34 +-368,1,155,-217,339,-71 +-325,155,-126,-244,65,-70 +-96,-112,25,67,29,-171 +376,-87,-237,-22,6,40 +147,-46,103,21,151,42 +236,-107,-177,60,-131,9 +102,-87,-50,58,-99,-128 +408,-31,-119,163,96,82 +73,19,-56,109,-13,-82 +99,32,24,62,-110,31 +-183,38,59,12,-82,4 +40,-37,135,99,-3,-4 +-224,213,54,-99,-133,104 +59,-111,-18,-111,-68,96 +-68,8,-63,-48,226,-206 +-86,-62,141,117,-24,-55 +-370,143,116,50,281,-211 +-333,-14,-45,-203,47,-74 +62,-29,-82,-82,-199,102 +-260,0,-72,-71,-76,-181 +-165,152,110,62,-6,-56 +-101,-13,40,17,123,-65 +193,234,-26,0,-149,60 +112,-74,-59,146,116,25 +36,26,111,92,-117,62 +-106,-33,85,61,83,-200 +10,-162,-23,-34,89,30 +92,162,-158,-24,46,-58 +-200,117,55,-109,-16,-7 +154,-94,-110,38,-74,-62 +-115,150,-48,-117,-77,-126 +124,32,-94,13,11,77 +97,-118,-30,36,-44,87 +-42,-31,14,-64,-323,84 +133,12,54,113,-154,47 +270,-87,-155,97,241,143 +18,-134,-41,-64,-20,-92 +-149,-98,13,-39,78,35 +66,-73,-194,10,-167,-190 +268,85,-171,-33,1,114 +153,6,13,155,-138,40 +-163,31,-52,-49,26,18 +-232,-53,112,11,-131,-146 +-87,151,4,91,38,-52 +38,2,-101,-7,29,35 +1,235,131,64,50,42 +9,64,123,195,-78,-10 +242,-48,-63,-10,189,9 +-234,25,38,29,89,-66 +380,159,-167,218,130,-125 +-369,-169,215,77,-13,-205 +220,92,-109,-9,-351,126 +109,-113,-28,-35,-40,76 +-10,46,71,11,-81,-68 +191,-85,-24,96,66,64 +6,-2,72,51,-18,95 +158,153,14,233,88,23 +-113,28,1,-94,254,-58 +97,67,13,16,-66,121 +11,55,60,99,117,-87 +37,169,-47,-44,-14,30 +36,23,-141,-180,-110,11 +-380,138,149,10,-117,-160 +-93,-115,-17,102,-91,-59 +-160,108,101,-45,-36,8 +-93,-109,-1,27,17,-72 +32,60,44,-42,100,-57 +-266,110,173,-44,-81,-28 +-220,-43,47,-0,-59,-21 +-52,51,-4,36,43,47 +104,-75,27,3,24,67 +-184,-125,-44,-48,43,-91 +504,-159,-118,30,8,233 +-320,-12,-35,-106,146,-145 +55,-63,-176,-59,43,-59 +-47,-134,91,70,117,46 +104,-28,39,14,11,102 +110,-255,52,35,-91,49 +-333,-179,45,55,-29,-161 +-304,-64,28,-87,122,-161 +-15,30,-35,84,188,-170 +-122,42,-29,38,160,-99 +295,-100,-51,100,-75,-10 +-281,-65,-45,11,109,-45 +-15,82,56,97,90,103 +80,-32,113,163,3,92 +91,37,-58,4,-18,26 +192,-73,-36,-2,-90,130 +84,-186,50,-3,-42,-6 +28,-109,-151,84,-228,-90 +-281,101,57,-88,-176,3 +118,-103,154,321,-16,-8 +-314,29,135,-135,17,-16 +11,100,187,14,17,123 +-3,-108,54,14,146,42 +365,-7,-84,187,-174,-6 +374,-113,-188,21,61,33 +-67,18,-30,-29,7,12 +69,-181,-51,-21,11,25 +62,-95,-135,125,-99,-133 +448,209,-60,58,-69,100 +203,25,-136,64,-20,-103 +-346,-152,153,33,7,-80 +-3,-17,3,-47,-43,-44 +-32,-156,-3,72,-133,27 +-11,57,23,-14,43,98 +281,31,-50,-13,-89,186 +-233,-180,55,-82,61,-98 +225,-79,16,243,8,37 +25,-80,28,133,-57,-228 +86,20,-37,-38,-76,28 +-184,-113,33,-62,54,21 +-39,-31,-42,61,-27,-80 +243,-46,-159,-37,181,146 +143,-5,9,11,-133,111 +-131,-36,-8,-26,-106,-108 +252,-53,-55,121,-72,13 +20,135,-14,-187,-54,12 +-428,-63,-75,-183,-45,-144 +266,-105,-2,30,37,125 +-346,169,156,101,-130,-355 +233,-185,-88,122,67,18 +331,-81,-20,158,-102,-134 +93,54,23,89,115,-31 +-229,-62,65,-96,135,-81 +-115,-133,64,-79,89,107 +309,-120,-52,84,37,91 +-221,-24,70,-193,152,288 +-305,36,88,-52,10,-56 +-137,78,77,1,-32,6 +149,-68,-27,136,54,-40 +-13,-213,73,12,-7,116 +152,-102,96,75,45,-20 +38,220,-38,-46,-120,39 +138,67,-31,-41,55,36 +-331,49,125,-94,-105,-60 +-2,-97,-85,81,-11,-48 +130,-50,35,112,74,-15 +-87,62,76,-14,127,-87 +23,-121,-8,72,-45,-48 +43,-81,48,42,-53,74 +125,-76,-81,58,19,62 +23,14,137,86,-186,131 +67,35,-87,-39,16,50 +-274,61,137,71,17,-146 +-126,-76,88,16,-33,-69 +-284,-48,32,18,73,-89 +-189,34,201,-116,-17,38 +280,47,-21,255,10,59 +-142,-98,21,-30,-108,-37 +-229,-14,153,26,-47,-108 +8,-110,-40,-30,-54,-8 +-34,-95,-79,30,134,-51 +-163,-128,67,25,-17,-132 +186,-100,-25,60,-29,206 +129,-33,-128,97,-100,-39 +-63,-68,30,6,0,134 +-305,-85,58,-136,162,134 +-117,-77,-77,-38,127,-53 +257,31,25,166,-55,30 +23,-5,71,21,28,-27 +-83,-117,-65,-4,-238,-50 +-11,116,157,60,-69,-34 +-70,77,133,-69,-91,128 +122,145,28,-88,20,193 +-241,-72,-25,14,-50,-57 +90,156,63,-7,135,84 +200,63,-63,6,-46,123 +-337,131,185,-8,44,-91 +380,-37,-47,205,-59,37 +77,13,90,176,137,32 +23,-38,-36,13,242,34 +-65,97,82,-48,76,134 +7,-18,143,48,-17,79 +-263,11,228,-193,90,37 +-86,-84,55,-65,51,-129 +-295,79,78,-119,51,-85 +-139,-75,121,-91,58,43 +29,226,112,154,-142,-136 +-32,175,-55,-115,91,-85 +-130,-50,158,64,-65,59 +44,-28,-45,-129,-221,20 +-94,130,117,13,-16,201 +93,148,53,-52,84,197 +74,-26,-18,-20,16,64 +-91,-56,-69,-144,81,27 +-261,-122,21,-95,-29,-207 +333,61,-38,-51,113,234 +33,108,42,14,77,188 +306,12,-134,4,-20,98 +-60,-81,131,77,86,-7 +-136,97,35,23,-73,-55 +127,129,-107,21,170,-54 +-236,-10,82,23,-98,-76 +-185,-144,37,-56,-230,-129 +132,-98,-33,42,-12,30 +-197,19,-49,-205,37,1 +240,-207,-26,-16,-171,253 +55,3,23,-43,-67,188 +121,-48,20,82,-13,-39 +-59,203,112,-27,-26,125 +-32,68,-27,15,-112,-59 +138,15,34,202,-123,14 +173,70,-80,27,79,-23 +-72,-93,109,21,-44,116 +-33,-165,119,-160,-197,54 +-286,109,-12,-135,-20,-99 +168,-12,-0,51,-14,119 +245,47,-168,111,-3,34 +-149,134,-41,-97,31,-103 +-66,32,-35,-284,-14,157 +-80,26,124,31,107,-45 +-449,-50,54,14,-67,-39 +213,84,-193,112,-77,-55 +-58,-37,-420,-54,168,-133 +84,4,-63,47,-75,-11 +56,-69,-96,-118,37,52 +228,-38,-25,54,135,69 +-119,-1,70,136,152,-98 +274,-42,-132,85,-117,138 +-73,-84,145,-81,22,156 +142,-86,-13,117,-52,135 +97,91,-75,33,165,-81 +484,-43,-107,196,-104,125 +-130,142,-13,-11,-109,-213 +-230,41,-1,-131,-113,-56 +157,-77,134,198,-218,132 +-268,-128,-127,-66,-65,-190 +159,-63,-45,118,139,-8 +21,-100,-128,-158,-61,-12 +48,41,-54,248,62,-185 diff --git a/statsmodels/regression/tests/results/lasso_r_results.R b/statsmodels/regression/tests/results/lasso_r_results.R new file mode 100644 index 0000000..6cbd197 --- /dev/null +++ b/statsmodels/regression/tests/results/lasso_r_results.R @@ -0,0 +1,40 @@ +library(glmnet) +library(R2nparray) + +# Run the glmnet lasso (elastic net) on all the test data sets + +data = read.csv("lasso_data.csv", header=FALSE) + +ik = 0 +rslt = list() + +for (n in c(100, 200, 300)) { + for (p in c(2, 3, 5)) { + + endog = data[1:n, 1] + exog = data[1:n, 2:(p+1)] + exog = as.matrix(exog) + + endog = (endog - mean(endog)) / sd(endog) + for (k in 1:p) { + exog[,k] = exog[,k] - mean(exog[,k]) + exog[,k] = exog[,k] / sd(exog[,k]) + } + + for (alpha in c(0, 0.5, 1)) { + + fit = glmnet(exog, endog, intercept=FALSE, standardize=FALSE, alpha=alpha) + + for (q in c(0.3, 0.5, 0.7)) { + ii = round(q * length(fit$lambda)) + coefs = coef(fit, s=fit$lambda[ii]) + coefs = coefs[2:length(coefs)] + rname = sprintf("rslt_%d", ik) + ik = ik + 1 + rslt[[rname]] = c(n, p, alpha, fit$lambda[ii], coefs) + } + } + } +} + +R2nparray(rslt, fname="glmnet_r_results.py") diff --git a/statsmodels/regression/tests/results/leverage_influence_ols_nostars.txt b/statsmodels/regression/tests/results/leverage_influence_ols_nostars.txt new file mode 100644 index 0000000..fa1e089 --- /dev/null +++ b/statsmodels/regression/tests/results/leverage_influence_ols_nostars.txt @@ -0,0 +1,209 @@ + residual leverage influence DFFITS + u 0<=h<=1 u h/(1-h) + + 1959:2 -2.0742 0.026 -0.054583 -0.032 + 1959:3 -16.829 0.010 -0.17499 -0.162 + 1959:4 17.807 0.006 0.11026 0.132 + 1960:1 14.214 0.023 0.33301 0.206 + 1960:2 -24.269 0.015 -0.36715 -0.284 + 1960:3 5.7992 0.008 0.049617 0.050 + 1960:4 -20.886 0.034 -0.73335 -0.375 + 1961:1 9.8798 0.005 0.05179 0.067 + 1961:2 7.4863 0.014 0.10314 0.083 + 1961:3 14.11 0.010 0.13739 0.131 + 1961:4 -18.151 0.015 -0.27316 -0.211 + 1962:1 2.6465 0.011 0.030731 0.027 + 1962:2 -13.329 0.006 -0.083492 -0.099 + 1962:3 2.0981 0.006 0.013157 0.016 + 1962:4 -8.0123 0.007 -0.056953 -0.063 + 1963:1 9.6415 0.007 0.06812 0.076 + 1963:2 -5.0585 0.007 -0.035805 -0.040 + 1963:3 -10.143 0.014 -0.13973 -0.112 + 1963:4 2.7192 0.006 0.016533 0.020 + 1964:1 -12.585 0.019 -0.23723 -0.163 + 1964:2 -10.268 0.009 -0.088872 -0.090 + 1964:3 -3.1627 0.008 -0.025489 -0.027 + 1964:4 9.2701 0.007 0.067079 0.074 + 1965:1 6.4275 0.022 0.14784 0.092 + 1965:2 -12.496 0.008 -0.10223 -0.106 + 1965:3 -10.836 0.015 -0.16227 -0.125 + 1965:4 -28.524 0.023 -0.67634 -0.422 + 1966:1 0.41525 0.022 0.0095312 0.006 + 1966:2 -3.9265 0.008 -0.032508 -0.033 + 1966:3 -4.4059 0.006 -0.026898 -0.032 + 1966:4 -2.5184 0.006 -0.014469 -0.018 + 1967:1 -14.274 0.011 -0.16548 -0.145 + 1967:2 -7.2071 0.009 -0.064055 -0.064 + 1967:3 7.0015 0.006 0.041966 0.051 + 1967:4 5.2597 0.005 0.027186 0.035 + 1968:1 -17.488 0.016 -0.29267 -0.214 + 1968:2 -3.098 0.010 -0.032174 -0.030 + 1968:3 -15.821 0.007 -0.10969 -0.124 + 1968:4 6.4495 0.006 0.039111 0.047 + 1969:1 8.4822 0.009 0.076508 0.076 + 1969:2 0.83748 0.009 0.007586 0.007 + 1969:3 8.2205 0.005 0.042642 0.055 + 1969:4 -3.4261 0.015 -0.05238 -0.040 + 1970:1 0.28305 0.011 0.0030162 0.003 + 1970:2 7.8525 0.008 0.060957 0.065 + 1970:3 2.2956 0.006 0.013765 0.017 + 1970:4 4.9034 0.027 0.13486 0.077 + 1971:1 10.614 0.031 0.34456 0.182 + 1971:2 12.805 0.005 0.068279 0.088 + 1971:3 0.68069 0.007 0.0045619 0.005 + 1971:4 -7.0127 0.007 -0.047212 -0.054 + 1972:1 6.3863 0.012 0.074474 0.065 + 1972:2 -7.3721 0.021 -0.16064 -0.103 + 1972:3 -0.95255 0.005 -0.0050441 -0.006 + 1972:4 -16.627 0.010 -0.17016 -0.159 + 1973:1 -9.8533 0.026 -0.25905 -0.151 + 1973:2 5.6197 0.021 0.12265 0.078 + 1973:3 4.5097 0.017 0.080032 0.057 + 1973:4 5.179 0.029 0.15387 0.084 + 1974:1 -3.1457 0.033 -0.10821 -0.055 + 1974:2 1.08 0.021 0.022905 0.015 + 1974:3 2.4398 0.032 0.080559 0.042 + 1974:4 16.85 0.045 0.79075 0.350 + 1975:1 -48.281 0.043 -2.1902 -1.037 + 1975:2 -17.841 0.006 -0.10532 -0.129 + 1975:3 11.599 0.018 0.2142 0.149 + 1975:4 -2.5892 0.009 -0.023227 -0.023 + 1976:1 8.8047 0.024 0.2192 0.131 + 1976:2 14.779 0.006 0.094697 0.111 + 1976:3 1.0038 0.010 0.0097456 0.009 + 1976:4 -1.156 0.010 -0.01127 -0.011 + 1977:1 7.9332 0.010 0.077599 0.074 + 1977:2 2.2751 0.037 0.086679 0.042 + 1977:3 -0.45568 0.013 -0.0061948 -0.005 + 1977:4 -1.2479 0.009 -0.011785 -0.011 + 1978:1 10.833 0.010 0.10458 0.100 + 1978:2 -32.23 0.072 -2.5075 -0.892 + 1978:3 2.6192 0.020 0.053266 0.035 + 1978:4 -5.7424 0.015 -0.088262 -0.067 + 1979:1 6.9597 0.008 0.052818 0.057 + 1979:2 5.2803 0.019 0.10193 0.069 + 1979:3 -13.413 0.026 -0.35491 -0.207 + 1979:4 -3.6896 0.012 -0.043521 -0.038 + 1980:1 -0.70094 0.018 -0.012507 -0.009 + 1980:2 7.3702 0.060 0.46678 0.178 + 1980:3 -19.233 0.013 -0.25082 -0.208 + 1980:4 16.33 0.013 0.217 0.178 + 1981:1 13.303 0.017 0.23446 0.167 + 1981:2 7.2551 0.033 0.24794 0.127 + 1981:3 15.318 0.014 0.21378 0.171 + 1981:4 19.5 0.051 1.0428 0.435 + 1982:1 -1.2325 0.068 -0.090284 -0.032 + 1982:2 6.0687 0.064 0.4129 0.153 + 1982:3 12.515 0.014 0.17407 0.139 + 1982:4 -25.737 0.022 -0.56739 -0.365 + 1983:1 7.234 0.045 0.33773 0.149 + 1983:2 10.245 0.025 0.26194 0.155 + 1983:3 4.2063 0.021 0.090006 0.058 + 1983:4 16.804 0.024 0.41352 0.250 + 1984:1 17.996 0.017 0.31173 0.224 + 1984:2 -4.2825 0.018 -0.079641 -0.055 + 1984:3 5.9567 0.026 0.16111 0.093 + 1984:4 -7.4108 0.023 -0.172 -0.107 + 1985:1 -16.758 0.019 -0.33137 -0.223 + 1985:2 3.6384 0.008 0.028555 0.030 + 1985:3 -19.283 0.016 -0.30668 -0.230 + 1985:4 14.153 0.011 0.15085 0.138 + 1986:1 -6.8394 0.005 -0.037411 -0.047 + 1986:2 0.21312 0.071 0.016406 0.006 + 1986:3 -18.126 0.007 -0.13387 -0.147 + 1986:4 3.3595 0.007 0.023536 0.026 + 1987:1 12.522 0.005 0.066831 0.086 + 1987:2 -7.8712 0.006 -0.044228 -0.055 + 1987:3 -4.1257 0.005 -0.021252 -0.028 + 1987:4 11.053 0.011 0.11837 0.107 + 1988:1 -21.337 0.006 -0.12956 -0.157 + 1988:2 -2.2261 0.007 -0.014779 -0.017 + 1988:3 4.3039 0.006 0.024997 0.031 + 1988:4 -6.9168 0.008 -0.054036 -0.057 + 1989:1 10.457 0.009 0.094882 0.093 + 1989:2 -6.7649 0.006 -0.039373 -0.048 + 1989:3 -6.8402 0.009 -0.059272 -0.060 + 1989:4 4.5364 0.016 0.0739 0.054 + 1990:1 -4.1645 0.005 -0.023026 -0.029 + 1990:2 4.7673 0.009 0.043593 0.043 + 1990:3 1.6749 0.010 0.017602 0.016 + 1990:4 -2.1491 0.027 -0.060722 -0.034 + 1991:1 3.0644 0.017 0.052763 0.038 + 1991:2 -1.4489 0.013 -0.01868 -0.015 + 1991:3 13.369 0.006 0.086494 0.101 + 1991:4 19.045 0.007 0.12493 0.145 + 1992:1 -18.029 0.006 -0.10394 -0.129 + 1992:2 16.942 0.006 0.09862 0.122 + 1992:3 -4.1448 0.006 -0.02545 -0.030 + 1992:4 3.3586 0.008 0.02638 0.028 + 1993:1 15.572 0.008 0.13114 0.134 + 1993:2 1.5315 0.006 0.0094249 0.011 + 1993:3 0.67663 0.005 0.0036734 0.005 + 1993:4 7.0721 0.008 0.059242 0.061 + 1994:1 10.12 0.005 0.053258 0.069 + 1994:2 8.9972 0.007 0.065707 0.072 + 1994:3 -8.4192 0.005 -0.043756 -0.057 + 1994:4 9.6114 0.006 0.057062 0.069 + 1995:1 10.836 0.008 0.086906 0.091 + 1995:2 -3.7803 0.008 -0.029172 -0.031 + 1995:3 -6.9312 0.008 -0.055583 -0.058 + 1995:4 10.256 0.007 0.0707 0.080 + 1996:1 4.0309 0.005 0.021694 0.028 + 1996:2 0.4955 0.011 0.0053216 0.005 + 1996:3 15.719 0.006 0.1017 0.119 + 1996:4 -9.3751 0.006 -0.054944 -0.067 + 1997:1 6.5172 0.005 0.034166 0.044 + 1997:2 10.854 0.012 0.13379 0.113 + 1997:3 -2.9846 0.010 -0.030983 -0.028 + 1997:4 3.8535 0.006 0.021563 0.027 + 1998:1 14.065 0.010 0.13561 0.130 + 1998:2 -8.2154 0.012 -0.10053 -0.085 + 1998:3 -0.60661 0.008 -0.0046736 -0.005 + 1998:4 -6.1779 0.012 -0.074119 -0.063 + 1999:1 7.8563 0.006 0.045995 0.056 + 1999:2 -4.6266 0.005 -0.023074 -0.031 + 1999:3 -1.1028 0.008 -0.0083415 -0.009 + 1999:4 -6.8508 0.011 -0.079265 -0.069 + 2000:1 0.73293 0.007 0.0054868 0.006 + 2000:2 3.6035 0.014 0.049842 0.040 + 2000:3 2.708 0.008 0.022145 0.023 + 2000:4 1.3636 0.008 0.010847 0.011 + 2001:1 -5.3679 0.013 -0.070967 -0.058 + 2001:2 -1.6618 0.006 -0.010209 -0.012 + 2001:3 6.5455 0.012 0.07979 0.068 + 2001:4 -19.04 0.007 -0.1294 -0.148 + 2002:1 8.6579 0.005 0.043551 0.057 + 2002:2 3.8596 0.012 0.048695 0.041 + 2002:3 1.6741 0.006 0.010859 0.013 + 2002:4 8.1865 0.012 0.10312 0.086 + 2003:1 1.2353 0.013 0.016361 0.013 + 2003:2 -2.2006 0.007 -0.01465 -0.017 + 2003:3 -5.4225 0.012 -0.064693 -0.056 + 2003:4 7.3162 0.012 0.085825 0.074 + 2004:1 -2.0091 0.013 -0.027416 -0.022 + 2004:2 13.225 0.010 0.13921 0.128 + 2004:3 0.34955 0.015 0.0053195 0.004 + 2004:4 1.3304 0.013 0.017246 0.014 + 2005:1 0.58582 0.006 0.0037749 0.004 + 2005:2 -6.0779 0.011 -0.068898 -0.061 + 2005:3 1.3355 0.005 0.0066849 0.009 + 2005:4 11.099 0.040 0.45714 0.215 + 2006:1 -5.3245 0.010 -0.054333 -0.050 + 2006:2 3.7492 0.006 0.023831 0.028 + 2006:3 3.9062 0.009 0.034228 0.034 + 2006:4 -10.87 0.024 -0.26209 -0.160 + 2007:1 -0.97833 0.006 -0.0063771 -0.007 + 2007:2 1.3714 0.006 0.0078089 0.010 + 2007:3 -3.9713 0.005 -0.021069 -0.027 + 2007:4 -7.4003 0.006 -0.043073 -0.053 + 2008:1 2.8908 0.026 0.077049 0.045 + 2008:2 -8.5902 0.011 -0.093244 -0.084 + 2008:3 10.043 0.064 0.6827 0.253 + 2008:4 8.6286 0.042 0.37961 0.173 + 2009:1 -26.221 0.086 -2.4808 -0.800 + 2009:2 -14.74 0.014 -0.20334 -0.163 + 2009:3 3.5952 0.020 0.071804 0.048 + +('*' indicates a leverage point) + +Cross-validation criterion = 23908.4 diff --git a/statsmodels/regression/tests/results/lme00.csv b/statsmodels/regression/tests/results/lme00.csv new file mode 100644 index 0000000..70b57ed --- /dev/null +++ b/statsmodels/regression/tests/results/lme00.csv @@ -0,0 +1,241 @@ +groups,endog,exog_fe_0,exog_re_0 +0.000,-0.300,0.408,1.000 +1.000,-1.805,1.528,1.000 +1.000,1.753,-0.970,1.000 +1.000,2.657,-1.657,1.000 +2.000,1.533,-1.171,1.000 +3.000,0.647,-0.951,1.000 +3.000,-0.555,-0.150,1.000 +4.000,2.158,-2.215,1.000 +5.000,-2.188,1.618,1.000 +5.000,0.727,-0.005,1.000 +5.000,1.431,-1.043,1.000 +5.000,2.106,-2.296,1.000 +6.000,-0.418,-0.228,1.000 +6.000,-0.473,-0.363,1.000 +6.000,-2.447,2.185,1.000 +6.000,-0.728,0.177,1.000 +7.000,-0.424,0.437,1.000 +7.000,0.359,-0.763,1.000 +7.000,-0.862,0.321,1.000 +8.000,-2.496,2.276,1.000 +8.000,-0.440,0.455,1.000 +8.000,-0.789,0.643,1.000 +9.000,-0.384,0.803,1.000 +9.000,-0.278,-0.164,1.000 +9.000,0.833,-0.253,1.000 +10.000,-0.918,0.452,1.000 +10.000,-0.513,-1.383,1.000 +10.000,-1.208,-0.394,1.000 +10.000,-1.912,1.794,1.000 +11.000,-0.491,-0.201,1.000 +11.000,-0.391,-0.781,1.000 +11.000,1.616,-2.680,1.000 +12.000,2.183,-1.668,1.000 +13.000,-0.700,-0.024,1.000 +13.000,-1.713,1.046,1.000 +13.000,-1.148,1.235,1.000 +13.000,1.499,-2.476,1.000 +14.000,-0.035,-0.055,1.000 +15.000,-0.700,-0.312,1.000 +15.000,-0.372,0.020,1.000 +15.000,1.309,-0.534,1.000 +15.000,0.505,-0.422,1.000 +16.000,-0.556,1.170,1.000 +16.000,-1.005,-0.017,1.000 +16.000,-0.640,0.397,1.000 +17.000,0.833,-1.237,1.000 +17.000,2.529,-2.321,1.000 +18.000,0.134,0.016,1.000 +19.000,-1.393,0.139,1.000 +19.000,1.467,-1.591,1.000 +20.000,-2.025,0.667,1.000 +20.000,-2.640,0.844,1.000 +21.000,0.496,-0.848,1.000 +22.000,1.728,-1.401,1.000 +22.000,2.775,-2.927,1.000 +22.000,-0.006,-0.165,1.000 +22.000,0.210,0.044,1.000 +23.000,0.940,-0.796,1.000 +24.000,-0.820,-0.310,1.000 +24.000,0.150,-0.530,1.000 +24.000,0.184,-0.130,1.000 +24.000,0.324,0.781,1.000 +25.000,1.531,-1.504,1.000 +26.000,-1.335,0.176,1.000 +27.000,1.051,-0.350,1.000 +27.000,0.967,-1.306,1.000 +27.000,0.552,-0.399,1.000 +28.000,1.262,-0.348,1.000 +28.000,0.091,-0.366,1.000 +29.000,0.098,-0.599,1.000 +30.000,0.678,-1.186,1.000 +31.000,-2.944,1.852,1.000 +31.000,-0.716,0.619,1.000 +31.000,-2.269,0.969,1.000 +31.000,-1.386,1.421,1.000 +32.000,0.697,-0.704,1.000 +32.000,-0.142,-0.070,1.000 +32.000,0.057,-0.022,1.000 +33.000,-1.263,-0.275,1.000 +33.000,-2.833,1.791,1.000 +33.000,-0.888,0.586,1.000 +34.000,0.302,-0.250,1.000 +35.000,1.800,-1.596,1.000 +36.000,-0.772,0.456,1.000 +37.000,-1.440,0.818,1.000 +38.000,-1.031,0.840,1.000 +38.000,-1.678,1.977,1.000 +38.000,0.739,-0.501,1.000 +38.000,1.248,-0.581,1.000 +39.000,-0.314,-1.496,1.000 +39.000,-2.215,0.240,1.000 +40.000,-0.363,1.348,1.000 +40.000,-0.573,0.260,1.000 +40.000,1.086,-0.673,1.000 +40.000,0.326,0.169,1.000 +41.000,1.658,-1.243,1.000 +41.000,-1.319,2.048,1.000 +41.000,-2.476,2.767,1.000 +42.000,0.484,0.807,1.000 +42.000,-0.673,2.028,1.000 +42.000,1.389,-0.439,1.000 +42.000,1.749,-1.121,1.000 +43.000,-0.001,-0.728,1.000 +43.000,-1.611,-0.098,1.000 +43.000,-0.651,0.301,1.000 +44.000,1.552,-0.235,1.000 +44.000,1.743,-0.531,1.000 +45.000,1.130,-1.790,1.000 +45.000,0.303,0.001,1.000 +45.000,2.557,-2.210,1.000 +45.000,1.448,-0.569,1.000 +46.000,-0.611,0.116,1.000 +46.000,-0.517,0.704,1.000 +46.000,-2.234,1.540,1.000 +47.000,2.220,-1.664,1.000 +48.000,0.095,-0.431,1.000 +48.000,1.613,-0.716,1.000 +48.000,1.363,-1.694,1.000 +49.000,0.591,-0.748,1.000 +50.000,0.420,-0.510,1.000 +51.000,-1.404,-0.094,1.000 +51.000,-2.121,0.937,1.000 +51.000,0.422,-1.016,1.000 +51.000,-3.250,1.124,1.000 +52.000,-0.684,0.509,1.000 +52.000,0.029,-0.404,1.000 +53.000,-0.193,0.184,1.000 +53.000,-0.574,0.811,1.000 +54.000,-1.212,1.510,1.000 +54.000,3.503,-1.827,1.000 +54.000,-0.838,1.291,1.000 +55.000,1.044,-1.231,1.000 +55.000,-2.466,0.712,1.000 +55.000,0.022,0.210,1.000 +56.000,0.027,0.741,1.000 +56.000,-1.776,1.133,1.000 +57.000,1.845,-1.106,1.000 +58.000,0.170,-0.501,1.000 +59.000,-0.212,-0.154,1.000 +59.000,1.228,0.038,1.000 +60.000,0.922,-0.375,1.000 +60.000,0.773,-0.227,1.000 +60.000,0.355,-0.660,1.000 +60.000,2.417,-1.534,1.000 +61.000,0.905,-0.536,1.000 +62.000,0.920,-1.714,1.000 +62.000,-0.020,-0.163,1.000 +63.000,-0.694,0.721,1.000 +63.000,0.043,0.825,1.000 +64.000,-0.980,0.130,1.000 +64.000,-1.209,0.831,1.000 +64.000,-0.772,-0.182,1.000 +64.000,-0.996,0.417,1.000 +65.000,1.008,-1.389,1.000 +65.000,-0.174,-0.220,1.000 +65.000,-1.882,1.741,1.000 +66.000,1.085,-0.673,1.000 +66.000,-1.323,1.944,1.000 +66.000,2.340,-1.969,1.000 +67.000,0.256,-0.072,1.000 +67.000,0.056,-0.393,1.000 +67.000,1.518,-2.193,1.000 +67.000,0.904,-1.040,1.000 +68.000,0.797,-0.731,1.000 +69.000,0.402,1.189,1.000 +69.000,0.018,0.933,1.000 +70.000,0.178,-0.284,1.000 +71.000,2.802,-0.976,1.000 +71.000,2.534,-1.865,1.000 +72.000,0.617,-0.132,1.000 +72.000,1.230,-0.405,1.000 +72.000,-0.641,1.293,1.000 +73.000,1.950,-1.417,1.000 +74.000,0.455,-1.787,1.000 +74.000,-1.515,0.810,1.000 +74.000,-1.542,0.313,1.000 +75.000,0.468,-0.400,1.000 +75.000,-2.685,2.263,1.000 +75.000,-2.473,1.594,1.000 +76.000,-0.741,0.528,1.000 +76.000,-0.188,0.407,1.000 +77.000,-0.329,-0.726,1.000 +77.000,-0.760,-0.235,1.000 +78.000,0.403,-0.318,1.000 +78.000,0.154,-0.891,1.000 +78.000,0.673,-1.060,1.000 +78.000,-0.201,-0.395,1.000 +79.000,0.781,-0.956,1.000 +79.000,-0.308,0.703,1.000 +79.000,-0.978,1.185,1.000 +80.000,2.675,-1.729,1.000 +80.000,1.231,-0.744,1.000 +80.000,0.781,-0.089,1.000 +81.000,0.578,-0.552,1.000 +81.000,-0.978,1.022,1.000 +81.000,-0.219,0.879,1.000 +82.000,-1.537,2.241,1.000 +83.000,2.476,-1.533,1.000 +83.000,0.837,0.371,1.000 +83.000,1.032,-0.684,1.000 +83.000,1.301,-1.031,1.000 +84.000,1.258,-0.487,1.000 +84.000,-0.953,1.006,1.000 +85.000,-0.565,0.126,1.000 +85.000,-1.712,1.398,1.000 +85.000,1.457,-1.413,1.000 +86.000,0.755,-0.285,1.000 +86.000,1.878,-1.322,1.000 +86.000,-3.689,2.995,1.000 +86.000,0.125,0.738,1.000 +87.000,0.251,0.759,1.000 +87.000,-1.906,1.334,1.000 +88.000,-2.864,2.353,1.000 +88.000,-0.085,-0.235,1.000 +89.000,-0.596,0.848,1.000 +89.000,0.936,-1.674,1.000 +90.000,-0.022,-0.704,1.000 +90.000,-0.040,-0.121,1.000 +91.000,-1.948,1.850,1.000 +92.000,-0.429,0.903,1.000 +92.000,-0.297,0.480,1.000 +92.000,-0.475,0.780,1.000 +93.000,-1.153,0.787,1.000 +93.000,0.218,-0.488,1.000 +93.000,-0.589,-0.028,1.000 +93.000,1.448,-1.692,1.000 +94.000,0.155,0.450,1.000 +94.000,1.420,-0.642,1.000 +94.000,-1.106,0.539,1.000 +94.000,0.442,0.107,1.000 +95.000,1.263,-0.703,1.000 +95.000,-0.698,1.232,1.000 +96.000,-1.327,0.684,1.000 +97.000,0.247,1.126,1.000 +97.000,-0.255,0.560,1.000 +98.000,-0.533,1.258,1.000 +98.000,0.286,0.376,1.000 +98.000,0.772,-0.020,1.000 +99.000,1.151,-2.100,1.000 +99.000,-0.865,0.241,1.000 diff --git a/statsmodels/regression/tests/results/lme01.csv b/statsmodels/regression/tests/results/lme01.csv new file mode 100644 index 0000000..3ddba5b --- /dev/null +++ b/statsmodels/regression/tests/results/lme01.csv @@ -0,0 +1,255 @@ +groups,endog,exog_fe_0,exog_re_0 +0.000,0.485,0.129,1.000 +0.000,-3.069,1.252,1.000 +0.000,4.493,-0.152,1.000 +0.000,1.120,-0.743,1.000 +1.000,1.500,-0.012,1.000 +1.000,-0.081,0.301,1.000 +1.000,3.118,1.558,1.000 +2.000,2.614,0.617,1.000 +2.000,-0.171,-1.841,1.000 +2.000,-0.530,-1.249,1.000 +3.000,2.758,0.413,1.000 +3.000,1.782,0.264,1.000 +3.000,-0.886,-1.219,1.000 +4.000,-2.224,-0.713,1.000 +4.000,-0.616,0.195,1.000 +4.000,-5.375,2.514,1.000 +5.000,-1.631,1.394,1.000 +5.000,1.609,0.052,1.000 +5.000,2.378,-0.765,1.000 +5.000,-2.255,2.450,1.000 +6.000,-0.187,2.180,1.000 +6.000,-3.278,1.358,1.000 +6.000,0.376,-1.205,1.000 +7.000,-2.139,0.844,1.000 +7.000,1.653,-1.600,1.000 +7.000,-2.595,-1.068,1.000 +7.000,4.625,-1.433,1.000 +8.000,-1.756,-0.820,1.000 +9.000,-0.902,-0.317,1.000 +9.000,-0.262,-0.257,1.000 +10.000,-0.772,-0.702,1.000 +10.000,-4.059,0.476,1.000 +11.000,0.605,-0.087,1.000 +11.000,2.762,0.215,1.000 +12.000,-3.884,-0.952,1.000 +12.000,-0.360,-1.344,1.000 +13.000,1.551,-0.544,1.000 +13.000,-1.154,2.204,1.000 +13.000,-4.254,0.851,1.000 +13.000,-0.282,1.001,1.000 +14.000,0.303,1.423,1.000 +14.000,-4.621,0.548,1.000 +15.000,-4.256,2.048,1.000 +15.000,0.421,0.855,1.000 +16.000,-2.268,0.155,1.000 +16.000,-1.960,0.184,1.000 +16.000,5.805,-0.813,1.000 +16.000,1.274,1.063,1.000 +17.000,-2.424,1.155,1.000 +17.000,1.322,-0.605,1.000 +17.000,-2.933,0.936,1.000 +18.000,-2.180,-0.330,1.000 +19.000,2.098,-1.131,1.000 +19.000,-1.206,0.469,1.000 +20.000,3.930,-1.021,1.000 +21.000,-6.211,1.129,1.000 +21.000,0.135,0.001,1.000 +21.000,-3.799,-0.407,1.000 +22.000,1.136,-0.481,1.000 +23.000,4.401,-1.790,1.000 +23.000,1.007,-0.728,1.000 +24.000,1.638,0.395,1.000 +24.000,-1.234,0.995,1.000 +24.000,-1.178,-0.769,1.000 +24.000,-1.585,1.275,1.000 +25.000,1.253,-0.021,1.000 +25.000,0.803,0.618,1.000 +25.000,-0.136,-1.707,1.000 +26.000,-1.361,0.478,1.000 +26.000,-0.496,0.956,1.000 +26.000,3.948,-1.844,1.000 +26.000,-2.658,-0.784,1.000 +27.000,0.994,0.664,1.000 +27.000,-1.074,-1.216,1.000 +27.000,-0.510,1.469,1.000 +28.000,-0.308,-2.067,1.000 +29.000,1.814,-0.600,1.000 +30.000,0.474,-0.313,1.000 +30.000,-0.460,1.343,1.000 +30.000,3.230,-0.908,1.000 +31.000,1.720,-1.078,1.000 +31.000,-1.752,-0.720,1.000 +31.000,2.012,0.001,1.000 +31.000,0.244,-0.159,1.000 +32.000,1.083,1.051,1.000 +32.000,-4.109,1.458,1.000 +32.000,1.854,0.885,1.000 +33.000,6.614,-1.972,1.000 +34.000,-0.723,-0.578,1.000 +34.000,0.758,0.471,1.000 +35.000,-0.961,-0.529,1.000 +35.000,-2.384,0.558,1.000 +35.000,-2.451,2.146,1.000 +35.000,-1.053,0.286,1.000 +36.000,0.234,-1.027,1.000 +37.000,0.638,-1.547,1.000 +37.000,4.220,-0.840,1.000 +37.000,1.111,0.750,1.000 +38.000,-2.770,0.327,1.000 +38.000,2.867,-0.881,1.000 +38.000,0.872,-0.300,1.000 +38.000,0.449,1.746,1.000 +39.000,-4.268,0.253,1.000 +39.000,1.114,0.861,1.000 +39.000,-0.114,0.308,1.000 +40.000,-2.193,0.580,1.000 +40.000,3.547,-1.526,1.000 +40.000,5.288,-1.517,1.000 +41.000,-0.179,-0.132,1.000 +41.000,0.380,-1.089,1.000 +41.000,-0.723,1.797,1.000 +41.000,0.363,1.036,1.000 +42.000,-2.315,-0.880,1.000 +42.000,-4.394,1.640,1.000 +42.000,-1.120,-1.215,1.000 +43.000,-0.587,1.151,1.000 +44.000,-2.922,0.609,1.000 +44.000,0.478,-0.942,1.000 +44.000,-1.395,0.888,1.000 +44.000,-4.636,0.334,1.000 +45.000,-0.716,-0.043,1.000 +45.000,-1.082,0.616,1.000 +45.000,0.643,-0.115,1.000 +45.000,4.590,-0.430,1.000 +46.000,2.399,-2.143,1.000 +46.000,-0.213,2.303,1.000 +46.000,-0.151,-1.121,1.000 +47.000,2.052,-0.690,1.000 +47.000,-2.222,-0.251,1.000 +47.000,1.754,-2.730,1.000 +47.000,-3.498,0.826,1.000 +48.000,-0.880,-0.590,1.000 +48.000,-1.795,-0.060,1.000 +48.000,-3.200,0.459,1.000 +48.000,-1.208,0.311,1.000 +49.000,0.158,-0.990,1.000 +49.000,-0.603,0.044,1.000 +49.000,0.159,1.989,1.000 +49.000,1.706,-0.053,1.000 +50.000,-1.266,0.585,1.000 +50.000,-0.897,1.095,1.000 +51.000,-1.963,1.529,1.000 +52.000,1.650,0.617,1.000 +52.000,1.047,0.406,1.000 +52.000,2.128,-1.883,1.000 +53.000,2.635,-1.212,1.000 +53.000,-2.784,-1.825,1.000 +53.000,0.769,-1.630,1.000 +54.000,-0.281,0.014,1.000 +54.000,-1.039,0.631,1.000 +55.000,1.522,-0.071,1.000 +56.000,-0.949,1.470,1.000 +56.000,2.256,0.464,1.000 +56.000,2.703,0.093,1.000 +56.000,-3.660,0.831,1.000 +57.000,3.933,-2.168,1.000 +57.000,-2.349,0.775,1.000 +57.000,0.358,-1.376,1.000 +58.000,0.164,0.535,1.000 +58.000,0.088,0.725,1.000 +58.000,2.058,-0.655,1.000 +59.000,0.289,-0.872,1.000 +60.000,2.681,-0.296,1.000 +60.000,0.654,-0.087,1.000 +60.000,-0.815,-0.046,1.000 +61.000,-0.439,0.149,1.000 +61.000,0.847,0.329,1.000 +62.000,-0.135,0.395,1.000 +62.000,-1.547,1.004,1.000 +63.000,-2.543,-0.511,1.000 +64.000,-0.389,1.895,1.000 +64.000,4.990,-1.318,1.000 +64.000,0.448,-1.727,1.000 +64.000,0.528,-0.526,1.000 +65.000,-4.634,-1.060,1.000 +66.000,0.324,-1.468,1.000 +66.000,2.237,0.374,1.000 +66.000,0.530,0.084,1.000 +66.000,2.678,-1.159,1.000 +67.000,1.835,0.343,1.000 +68.000,2.721,-1.237,1.000 +68.000,5.082,-0.313,1.000 +68.000,-3.444,1.117,1.000 +68.000,1.246,-0.154,1.000 +69.000,-3.016,2.007,1.000 +70.000,2.145,-0.230,1.000 +71.000,0.594,-0.463,1.000 +72.000,-1.428,2.024,1.000 +72.000,0.156,-0.789,1.000 +72.000,1.816,-1.320,1.000 +73.000,-0.009,1.189,1.000 +74.000,3.159,-1.885,1.000 +74.000,-1.749,-0.614,1.000 +74.000,-1.020,0.960,1.000 +74.000,1.952,-1.254,1.000 +75.000,1.152,1.763,1.000 +75.000,1.666,-1.458,1.000 +75.000,-0.806,-0.377,1.000 +75.000,-1.264,-0.887,1.000 +76.000,1.879,-1.412,1.000 +76.000,1.837,-2.478,1.000 +76.000,-0.121,1.446,1.000 +77.000,-1.041,0.879,1.000 +77.000,0.245,-1.027,1.000 +78.000,-2.157,1.509,1.000 +78.000,-0.423,-0.166,1.000 +78.000,2.190,0.938,1.000 +79.000,0.032,0.581,1.000 +80.000,-0.736,1.585,1.000 +80.000,3.024,-0.429,1.000 +80.000,1.478,-1.844,1.000 +81.000,-0.443,0.742,1.000 +82.000,-3.551,-0.081,1.000 +82.000,-1.661,-0.661,1.000 +83.000,-2.173,0.886,1.000 +84.000,-0.493,-0.885,1.000 +84.000,-4.231,0.402,1.000 +85.000,-3.638,0.220,1.000 +85.000,-3.429,1.221,1.000 +85.000,-0.793,0.953,1.000 +86.000,1.713,-1.221,1.000 +86.000,2.557,-0.486,1.000 +87.000,0.259,-0.429,1.000 +88.000,3.555,-1.209,1.000 +88.000,0.381,-0.199,1.000 +89.000,2.622,-0.837,1.000 +89.000,0.471,0.023,1.000 +89.000,0.655,-0.431,1.000 +90.000,-5.319,2.154,1.000 +90.000,0.547,1.496,1.000 +91.000,-3.216,0.684,1.000 +92.000,-1.078,-0.751,1.000 +92.000,0.313,-0.780,1.000 +92.000,-0.936,0.313,1.000 +93.000,0.853,-1.164,1.000 +93.000,-2.950,0.972,1.000 +94.000,-0.536,0.351,1.000 +94.000,1.233,-0.772,1.000 +94.000,-0.774,-0.510,1.000 +95.000,-0.646,-2.312,1.000 +95.000,0.337,0.469,1.000 +95.000,2.949,-1.056,1.000 +95.000,1.661,-1.251,1.000 +96.000,1.626,-0.252,1.000 +96.000,2.413,-0.638,1.000 +97.000,2.691,-0.940,1.000 +97.000,0.152,-0.677,1.000 +97.000,-1.914,2.931,1.000 +98.000,-3.464,-0.723,1.000 +98.000,-0.201,1.543,1.000 +98.000,0.710,0.569,1.000 +98.000,-0.968,-0.208,1.000 +99.000,1.090,0.572,1.000 +99.000,0.607,0.420,1.000 diff --git a/statsmodels/regression/tests/results/lme02.csv b/statsmodels/regression/tests/results/lme02.csv new file mode 100644 index 0000000..eb277b1 --- /dev/null +++ b/statsmodels/regression/tests/results/lme02.csv @@ -0,0 +1,236 @@ +groups,endog,exog_fe_0,exog_fe_1,exog_re_0 +0.000,2.728,0.222,2.254,1.000 +1.000,-0.104,0.605,1.371,1.000 +1.000,0.092,-0.831,-0.973,1.000 +2.000,0.104,-0.950,-0.798,1.000 +2.000,2.225,-1.209,2.233,1.000 +2.000,-2.815,1.758,-1.783,1.000 +2.000,-1.710,-0.374,-1.709,1.000 +3.000,-0.184,-0.489,-0.705,1.000 +3.000,0.093,0.967,1.089,1.000 +3.000,1.587,0.946,1.913,1.000 +3.000,1.117,1.132,2.075,1.000 +4.000,2.416,-1.595,-0.160,1.000 +4.000,-0.051,-0.016,-1.258,1.000 +4.000,-1.776,2.127,0.745,1.000 +4.000,1.084,-0.488,0.344,1.000 +5.000,-0.887,-0.499,-1.519,1.000 +5.000,1.303,-0.516,0.739,1.000 +6.000,1.274,-1.690,-0.116,1.000 +6.000,0.074,0.201,0.905,1.000 +7.000,0.212,-0.421,-0.383,1.000 +7.000,-2.128,0.460,-1.631,1.000 +8.000,0.653,-0.289,0.418,1.000 +9.000,-0.080,-0.094,-0.376,1.000 +9.000,-0.904,0.760,-0.659,1.000 +10.000,-1.177,-0.587,-1.611,1.000 +10.000,1.954,0.439,1.698,1.000 +11.000,2.362,-1.541,-0.112,1.000 +11.000,1.151,-0.229,1.039,1.000 +11.000,0.295,-1.022,-0.410,1.000 +12.000,-0.201,0.390,-0.037,1.000 +13.000,0.268,-0.932,-0.833,1.000 +13.000,0.073,-0.743,-0.501,1.000 +13.000,-1.395,-0.872,-2.070,1.000 +14.000,0.019,0.023,0.266,1.000 +14.000,3.797,-1.597,1.743,1.000 +14.000,0.471,-1.079,-1.136,1.000 +15.000,0.425,-0.321,0.054,1.000 +15.000,2.036,-1.289,0.952,1.000 +15.000,3.466,-1.593,2.141,1.000 +16.000,4.948,-1.877,2.694,1.000 +16.000,-1.405,1.683,1.191,1.000 +16.000,-0.888,0.975,0.074,1.000 +17.000,-1.573,-0.206,-1.689,1.000 +17.000,-0.483,0.118,0.617,1.000 +17.000,1.399,-0.559,0.218,1.000 +18.000,-0.336,0.878,0.043,1.000 +19.000,3.619,-1.801,0.890,1.000 +20.000,0.618,-1.574,-2.162,1.000 +20.000,-0.725,0.008,-0.232,1.000 +20.000,0.243,0.743,0.775,1.000 +21.000,-0.215,0.749,0.547,1.000 +21.000,-1.023,1.015,-0.361,1.000 +21.000,1.586,-1.268,-0.084,1.000 +22.000,-0.349,0.575,0.140,1.000 +22.000,4.500,-1.989,2.588,1.000 +22.000,0.711,-0.621,-0.047,1.000 +23.000,1.507,-0.278,-0.186,1.000 +23.000,0.664,-0.847,-1.143,1.000 +23.000,1.363,0.703,0.949,1.000 +24.000,-0.696,0.416,0.133,1.000 +25.000,-1.065,-0.145,-0.300,1.000 +26.000,0.888,-0.828,-0.238,1.000 +26.000,-1.382,0.413,-0.851,1.000 +27.000,-0.047,0.397,0.841,1.000 +28.000,1.462,-0.914,0.764,1.000 +28.000,-0.586,-1.219,-0.912,1.000 +28.000,0.057,-0.745,-0.429,1.000 +28.000,0.534,1.325,1.838,1.000 +29.000,-1.615,-0.068,-0.667,1.000 +29.000,-2.570,-0.699,-2.672,1.000 +29.000,-0.612,0.529,0.681,1.000 +29.000,-1.513,-0.101,-0.720,1.000 +30.000,-0.509,0.857,0.875,1.000 +31.000,2.098,-0.529,0.908,1.000 +31.000,-0.780,0.636,0.365,1.000 +32.000,3.132,-0.679,1.454,1.000 +33.000,-1.655,1.229,-0.254,1.000 +33.000,0.538,0.089,0.082,1.000 +33.000,2.301,-1.168,0.734,1.000 +33.000,2.356,-1.966,0.764,1.000 +34.000,2.163,-0.368,1.958,1.000 +34.000,1.651,-1.107,-0.070,1.000 +34.000,0.660,0.222,0.711,1.000 +35.000,2.220,-1.734,0.062,1.000 +36.000,-1.456,1.703,-0.725,1.000 +36.000,-2.394,0.027,-1.694,1.000 +36.000,0.166,1.447,1.577,1.000 +37.000,-1.842,0.940,-0.228,1.000 +37.000,0.571,0.439,1.059,1.000 +38.000,-5.138,1.540,-1.751,1.000 +38.000,-1.141,-0.408,-0.621,1.000 +38.000,-1.752,1.279,0.106,1.000 +38.000,-0.439,-2.000,-0.728,1.000 +39.000,-1.278,1.808,0.598,1.000 +39.000,-1.814,1.940,-0.212,1.000 +39.000,-2.450,-0.089,-2.740,1.000 +40.000,1.936,-0.123,2.195,1.000 +40.000,-1.509,0.172,-0.531,1.000 +41.000,1.211,-0.198,0.625,1.000 +41.000,0.495,0.482,1.801,1.000 +42.000,1.495,0.202,1.626,1.000 +42.000,-1.469,0.977,-0.530,1.000 +42.000,-2.307,2.204,0.147,1.000 +43.000,2.720,-0.601,1.959,1.000 +43.000,1.085,-0.871,-0.159,1.000 +43.000,2.395,-1.245,1.914,1.000 +43.000,0.977,-0.938,0.022,1.000 +44.000,-1.062,0.192,-1.540,1.000 +45.000,-1.613,-0.194,-1.337,1.000 +45.000,0.956,-0.982,0.012,1.000 +45.000,2.628,-0.740,1.720,1.000 +45.000,-0.877,0.058,-0.787,1.000 +46.000,0.392,0.478,-0.246,1.000 +47.000,-1.257,0.558,-0.499,1.000 +47.000,-1.491,0.990,-0.480,1.000 +47.000,-2.172,1.916,0.429,1.000 +47.000,0.211,-0.062,0.406,1.000 +48.000,2.232,-2.104,0.617,1.000 +49.000,-0.486,1.183,0.108,1.000 +50.000,2.387,-0.395,1.294,1.000 +50.000,1.543,-1.026,0.521,1.000 +51.000,0.245,1.129,0.452,1.000 +51.000,3.536,-2.386,0.533,1.000 +52.000,0.022,0.692,0.052,1.000 +53.000,0.774,0.110,1.172,1.000 +53.000,-1.038,0.501,-0.763,1.000 +54.000,-0.664,0.732,0.298,1.000 +54.000,0.749,-1.018,0.707,1.000 +54.000,-1.967,0.262,-1.010,1.000 +55.000,-1.224,2.283,1.104,1.000 +56.000,0.285,0.363,0.264,1.000 +56.000,2.192,-0.476,1.973,1.000 +56.000,-1.060,0.731,-0.374,1.000 +57.000,1.928,-1.001,0.774,1.000 +57.000,-0.021,0.550,0.576,1.000 +57.000,-1.277,-0.110,-1.200,1.000 +58.000,1.109,-1.093,0.110,1.000 +59.000,-0.385,1.154,0.927,1.000 +59.000,-1.791,0.551,-1.407,1.000 +60.000,0.705,-0.651,-0.156,1.000 +60.000,-0.602,0.050,-0.752,1.000 +61.000,-0.628,0.084,-1.193,1.000 +61.000,-0.902,0.858,-0.338,1.000 +61.000,1.678,-1.438,-0.739,1.000 +61.000,4.815,-1.873,1.695,1.000 +62.000,-0.713,-0.860,-1.412,1.000 +63.000,0.975,-0.442,0.669,1.000 +63.000,0.317,-1.433,-0.372,1.000 +63.000,-0.460,0.013,0.063,1.000 +64.000,1.380,-0.038,0.810,1.000 +65.000,-1.210,0.568,-0.159,1.000 +66.000,1.286,0.201,1.955,1.000 +66.000,0.789,0.548,0.050,1.000 +66.000,2.362,-1.180,0.842,1.000 +66.000,-0.626,1.191,0.831,1.000 +67.000,-0.358,0.469,-0.678,1.000 +67.000,0.340,0.119,-0.353,1.000 +67.000,1.687,-1.100,0.786,1.000 +67.000,-1.634,1.972,-0.473,1.000 +68.000,0.823,0.558,0.319,1.000 +69.000,-0.042,-1.538,-1.038,1.000 +69.000,-0.576,-0.003,-0.678,1.000 +70.000,-1.174,2.078,0.344,1.000 +70.000,-0.553,0.978,0.446,1.000 +70.000,1.698,-0.954,1.145,1.000 +70.000,0.832,-1.351,-0.683,1.000 +71.000,2.463,-0.987,0.615,1.000 +72.000,-0.946,-0.976,-1.292,1.000 +73.000,1.650,-1.559,-0.146,1.000 +73.000,2.917,-0.503,1.069,1.000 +73.000,0.957,-0.324,0.032,1.000 +74.000,-0.570,-0.014,-0.301,1.000 +74.000,-0.214,0.776,-0.625,1.000 +75.000,1.800,-1.299,0.429,1.000 +75.000,-0.797,1.608,0.449,1.000 +76.000,-1.117,0.430,0.130,1.000 +76.000,-1.466,0.638,0.399,1.000 +77.000,2.536,-1.665,-0.028,1.000 +78.000,3.624,-1.536,2.043,1.000 +78.000,1.744,0.137,1.234,1.000 +78.000,-0.983,-0.272,-1.528,1.000 +79.000,1.402,-1.210,0.037,1.000 +79.000,0.752,-0.288,0.414,1.000 +79.000,0.490,-0.441,-0.199,1.000 +80.000,-2.357,1.742,0.265,1.000 +80.000,-0.199,0.425,0.635,1.000 +81.000,-0.627,1.468,1.020,1.000 +81.000,-1.852,1.456,-0.716,1.000 +82.000,-2.872,1.874,-0.281,1.000 +82.000,-1.666,0.037,-0.577,1.000 +83.000,0.497,0.497,0.748,1.000 +83.000,-3.274,2.135,-1.192,1.000 +84.000,0.020,-0.136,-0.631,1.000 +84.000,-0.536,0.971,-0.158,1.000 +85.000,-1.679,1.186,-0.826,1.000 +85.000,-0.211,-0.623,-0.986,1.000 +85.000,0.709,0.921,1.159,1.000 +86.000,-1.703,1.161,-0.810,1.000 +87.000,0.350,0.782,0.835,1.000 +87.000,-2.011,0.239,-1.733,1.000 +87.000,-0.824,0.581,-0.652,1.000 +87.000,-0.769,0.052,-0.863,1.000 +88.000,-0.432,-0.493,0.254,1.000 +88.000,-0.421,-0.728,-0.405,1.000 +88.000,-0.565,0.467,0.733,1.000 +89.000,1.633,0.729,0.793,1.000 +89.000,-0.319,0.540,-0.757,1.000 +89.000,1.929,-0.825,-0.052,1.000 +89.000,1.700,0.357,0.914,1.000 +90.000,-1.732,0.626,-0.440,1.000 +90.000,-0.158,-0.436,-0.433,1.000 +91.000,-3.085,-0.567,-3.002,1.000 +91.000,1.038,1.019,1.972,1.000 +91.000,-2.292,1.887,-0.354,1.000 +92.000,1.443,-1.497,-0.470,1.000 +92.000,0.344,-0.221,-0.336,1.000 +92.000,-0.526,0.285,-0.941,1.000 +93.000,-1.002,0.259,-0.555,1.000 +94.000,-0.366,0.724,0.402,1.000 +94.000,1.718,-1.140,-0.841,1.000 +95.000,-0.471,-1.433,-0.896,1.000 +95.000,-1.036,-0.572,-0.478,1.000 +96.000,0.364,0.149,-0.564,1.000 +96.000,4.981,-2.887,2.422,1.000 +96.000,2.168,-0.710,1.224,1.000 +96.000,1.217,-0.470,0.400,1.000 +97.000,1.541,-1.485,-1.086,1.000 +97.000,2.245,-0.722,1.099,1.000 +97.000,0.554,-0.527,0.062,1.000 +98.000,-0.327,-1.222,-1.731,1.000 +98.000,-2.764,0.037,-2.070,1.000 +99.000,-3.335,1.625,-1.565,1.000 +99.000,-0.898,0.066,-0.912,1.000 +99.000,1.887,-1.410,0.108,1.000 +99.000,-0.647,-0.482,-0.596,1.000 diff --git a/statsmodels/regression/tests/results/lme03.csv b/statsmodels/regression/tests/results/lme03.csv new file mode 100644 index 0000000..a55bf82 --- /dev/null +++ b/statsmodels/regression/tests/results/lme03.csv @@ -0,0 +1,230 @@ +groups,endog,exog_fe_0,exog_fe_1,exog_re_0 +0.000,0.896,-1.659,0.537,1.000 +1.000,-1.499,-0.203,-0.225,1.000 +2.000,-3.643,-0.615,-1.157,1.000 +2.000,0.699,0.441,0.143,1.000 +3.000,2.919,-1.589,0.708,1.000 +3.000,0.916,-0.396,0.729,1.000 +4.000,-0.242,-1.445,0.732,1.000 +5.000,1.059,-1.102,0.009,1.000 +5.000,-3.304,0.785,-2.154,1.000 +5.000,-5.862,3.576,0.770,1.000 +6.000,0.222,-0.489,0.753,1.000 +7.000,-2.700,0.679,-0.605,1.000 +7.000,0.351,-0.309,0.357,1.000 +7.000,2.115,0.202,0.752,1.000 +7.000,0.962,0.995,-0.275,1.000 +8.000,-1.274,-0.089,0.455,1.000 +8.000,-2.722,0.424,-0.704,1.000 +8.000,-0.580,0.171,0.188,1.000 +8.000,-2.023,0.806,-0.704,1.000 +9.000,0.330,-1.884,-0.250,1.000 +9.000,-0.750,0.241,-0.030,1.000 +10.000,-0.380,0.185,1.472,1.000 +10.000,0.113,-0.028,0.557,1.000 +11.000,4.264,0.023,0.414,1.000 +12.000,1.558,0.368,0.341,1.000 +12.000,-3.011,1.417,-0.091,1.000 +12.000,1.173,-0.464,-0.015,1.000 +13.000,1.898,0.680,1.220,1.000 +13.000,-2.742,0.991,-0.618,1.000 +13.000,0.632,0.194,-0.752,1.000 +13.000,-1.512,0.368,0.247,1.000 +14.000,-1.465,-0.268,0.043,1.000 +14.000,2.018,-1.565,0.311,1.000 +15.000,0.986,0.398,-0.094,1.000 +15.000,0.778,0.378,1.167,1.000 +16.000,-1.643,0.469,1.175,1.000 +16.000,0.047,0.121,0.920,1.000 +16.000,-0.174,-0.546,-0.092,1.000 +16.000,1.584,-1.750,-1.095,1.000 +17.000,2.642,-1.545,-0.046,1.000 +17.000,4.356,-1.481,1.012,1.000 +17.000,4.753,0.816,-0.030,1.000 +17.000,1.643,0.651,-0.104,1.000 +18.000,2.506,-2.309,-0.814,1.000 +18.000,-2.066,1.571,-1.079,1.000 +18.000,-2.262,-1.279,0.181,1.000 +19.000,-1.682,0.128,0.839,1.000 +19.000,1.634,-1.319,-0.425,1.000 +19.000,-3.570,1.727,-1.531,1.000 +20.000,-0.385,-0.173,-0.767,1.000 +20.000,1.443,-1.916,1.464,1.000 +20.000,-2.247,-1.168,-1.333,1.000 +21.000,1.245,1.483,0.413,1.000 +21.000,-0.081,-0.610,0.718,1.000 +21.000,0.294,0.146,0.042,1.000 +21.000,2.983,-0.463,-0.352,1.000 +22.000,0.548,-1.322,0.716,1.000 +22.000,-2.133,1.215,0.020,1.000 +22.000,0.268,0.133,0.181,1.000 +23.000,-0.098,1.765,0.948,1.000 +23.000,-1.042,2.070,-0.115,1.000 +24.000,-0.899,-1.315,-0.318,1.000 +24.000,2.123,-0.119,1.215,1.000 +24.000,4.608,-0.597,1.929,1.000 +24.000,-0.514,1.038,-0.758,1.000 +25.000,-2.524,0.862,-1.144,1.000 +25.000,3.373,-0.401,1.374,1.000 +25.000,-0.960,0.043,-0.829,1.000 +25.000,-2.333,2.060,0.044,1.000 +26.000,0.546,0.243,-0.203,1.000 +27.000,1.103,-0.957,1.450,1.000 +28.000,1.061,-0.221,1.518,1.000 +29.000,3.441,-0.162,1.235,1.000 +29.000,-1.087,-0.302,-1.481,1.000 +29.000,3.334,-1.092,-0.339,1.000 +30.000,5.416,0.069,0.124,1.000 +30.000,4.293,-0.233,-1.247,1.000 +31.000,0.660,1.083,-0.361,1.000 +32.000,0.434,0.123,1.387,1.000 +33.000,0.432,0.771,0.253,1.000 +34.000,1.816,-0.892,1.608,1.000 +35.000,-1.419,1.386,-0.805,1.000 +35.000,0.716,0.551,-0.136,1.000 +36.000,-0.680,0.932,0.340,1.000 +37.000,-0.221,-0.724,-0.907,1.000 +38.000,1.402,0.112,3.245,1.000 +38.000,-2.095,0.810,-1.237,1.000 +38.000,-1.490,-0.060,-1.298,1.000 +39.000,2.287,-0.688,1.280,1.000 +39.000,-2.591,-0.499,-1.673,1.000 +40.000,1.140,-1.291,0.599,1.000 +41.000,-5.446,0.511,-1.338,1.000 +41.000,2.751,-1.685,0.481,1.000 +41.000,-1.602,1.219,-0.333,1.000 +42.000,5.675,-0.676,1.235,1.000 +43.000,1.229,-0.846,0.070,1.000 +43.000,-0.651,0.381,0.359,1.000 +43.000,-1.527,-0.316,-0.275,1.000 +44.000,-1.291,1.864,-0.548,1.000 +44.000,-1.953,0.944,1.798,1.000 +45.000,1.646,-0.602,1.462,1.000 +45.000,-3.746,-0.749,-2.052,1.000 +45.000,-5.442,2.733,0.193,1.000 +45.000,2.974,-1.392,2.903,1.000 +46.000,-0.325,-0.544,0.486,1.000 +46.000,4.702,-2.130,0.525,1.000 +46.000,-1.292,0.896,-0.585,1.000 +47.000,-2.663,1.043,-0.138,1.000 +47.000,-1.549,-1.495,-0.105,1.000 +48.000,0.411,0.288,0.703,1.000 +48.000,-6.470,1.120,0.653,1.000 +48.000,5.630,-2.713,1.562,1.000 +49.000,2.308,-2.690,0.866,1.000 +49.000,-2.982,0.096,0.306,1.000 +49.000,-0.079,-1.311,0.038,1.000 +49.000,-1.818,0.610,-0.358,1.000 +50.000,1.608,-1.717,-0.034,1.000 +51.000,-0.825,-0.267,0.487,1.000 +51.000,0.579,-0.213,-0.075,1.000 +51.000,-5.529,1.209,-1.972,1.000 +51.000,-3.270,2.479,0.672,1.000 +52.000,2.812,0.297,0.309,1.000 +52.000,-0.419,0.905,-1.172,1.000 +53.000,-1.949,-0.344,0.397,1.000 +54.000,2.353,0.924,0.468,1.000 +54.000,1.791,-2.778,-0.178,1.000 +54.000,4.525,-0.217,0.070,1.000 +55.000,0.980,-0.066,0.581,1.000 +55.000,3.972,-1.004,-0.100,1.000 +56.000,0.664,-0.769,-0.828,1.000 +56.000,-2.819,0.316,-1.447,1.000 +56.000,-1.988,0.041,-1.980,1.000 +56.000,-2.958,-0.464,-1.141,1.000 +57.000,-0.356,0.216,2.159,1.000 +57.000,0.259,0.219,-0.244,1.000 +58.000,1.200,0.331,-0.887,1.000 +58.000,7.956,-1.618,1.002,1.000 +58.000,-0.523,0.728,1.085,1.000 +59.000,2.565,-0.210,0.142,1.000 +59.000,-0.574,-0.775,-0.315,1.000 +59.000,-0.214,-1.694,-0.918,1.000 +60.000,1.968,-0.424,1.760,1.000 +60.000,3.931,-0.354,1.994,1.000 +61.000,-3.132,0.925,-0.764,1.000 +62.000,-0.298,-1.081,-0.132,1.000 +62.000,2.318,1.789,0.407,1.000 +62.000,1.677,-0.163,0.103,1.000 +62.000,-1.831,-0.046,-0.662,1.000 +63.000,-1.954,-0.928,-0.260,1.000 +63.000,-0.339,-1.324,-0.620,1.000 +63.000,-5.099,0.818,-0.744,1.000 +63.000,-5.013,0.016,-1.138,1.000 +64.000,-2.670,0.984,0.731,1.000 +65.000,2.345,1.160,-0.184,1.000 +65.000,0.710,1.722,0.206,1.000 +65.000,-3.464,2.988,0.018,1.000 +66.000,-3.057,2.216,0.315,1.000 +66.000,-1.738,0.384,-0.117,1.000 +67.000,1.764,0.228,-0.203,1.000 +67.000,-2.503,-0.455,-1.452,1.000 +67.000,-4.189,-0.153,0.219,1.000 +68.000,-1.165,0.070,0.059,1.000 +68.000,3.491,-0.239,0.239,1.000 +68.000,-1.288,-0.615,-0.062,1.000 +68.000,-0.837,0.493,-0.186,1.000 +69.000,1.221,-0.101,-0.573,1.000 +69.000,0.947,1.015,0.334,1.000 +69.000,2.886,0.287,1.636,1.000 +69.000,-0.707,0.012,-1.563,1.000 +70.000,-0.378,1.317,0.627,1.000 +71.000,-0.778,-0.461,0.564,1.000 +71.000,3.638,-0.855,-0.315,1.000 +71.000,2.361,-0.541,1.132,1.000 +72.000,-0.072,1.684,-0.807,1.000 +72.000,2.311,1.657,-0.254,1.000 +72.000,1.366,0.624,-1.171,1.000 +72.000,-0.266,-0.498,1.167,1.000 +73.000,2.208,-0.356,0.669,1.000 +74.000,0.589,1.113,-0.049,1.000 +75.000,1.824,0.016,0.798,1.000 +75.000,-1.998,1.758,1.491,1.000 +76.000,1.101,-1.502,0.166,1.000 +77.000,-0.902,-0.150,0.016,1.000 +77.000,-0.681,-0.017,1.283,1.000 +77.000,0.457,-1.734,-0.794,1.000 +77.000,-0.948,-0.110,-1.428,1.000 +78.000,-1.267,0.264,0.015,1.000 +78.000,-1.259,0.593,-3.032,1.000 +78.000,-0.704,-0.606,-0.331,1.000 +79.000,1.007,-0.791,0.357,1.000 +79.000,1.739,0.841,-0.429,1.000 +79.000,0.691,0.701,1.153,1.000 +80.000,-0.275,-1.660,-0.263,1.000 +80.000,-3.283,1.375,2.109,1.000 +81.000,-1.913,0.428,-0.707,1.000 +82.000,-0.322,0.457,0.423,1.000 +82.000,-0.780,-0.572,-2.861,1.000 +82.000,-2.724,-0.350,0.290,1.000 +82.000,1.602,-0.136,2.437,1.000 +83.000,-3.147,1.116,-1.956,1.000 +84.000,1.396,0.455,-0.582,1.000 +84.000,1.654,0.853,0.383,1.000 +84.000,1.438,1.338,1.451,1.000 +85.000,-1.257,0.335,-1.031,1.000 +85.000,-0.524,-0.736,-1.034,1.000 +86.000,7.604,-1.610,0.960,1.000 +87.000,-2.649,0.589,-0.687,1.000 +87.000,-0.415,-0.634,-2.428,1.000 +87.000,-1.182,-0.618,-0.847,1.000 +88.000,4.074,-1.670,0.072,1.000 +88.000,-1.084,-1.018,-0.150,1.000 +89.000,3.981,-0.789,0.976,1.000 +89.000,-5.208,2.187,-0.973,1.000 +90.000,-0.824,0.118,-1.090,1.000 +90.000,0.797,-1.498,1.407,1.000 +91.000,4.016,-1.043,0.911,1.000 +91.000,-1.655,0.638,-0.149,1.000 +91.000,3.831,-0.871,1.270,1.000 +91.000,3.299,0.221,0.765,1.000 +92.000,0.307,-1.345,-0.100,1.000 +93.000,1.757,0.144,0.624,1.000 +93.000,0.946,-2.669,-0.322,1.000 +94.000,4.008,-0.818,1.751,1.000 +95.000,-3.451,-0.114,0.345,1.000 +96.000,0.941,-0.258,0.887,1.000 +97.000,1.638,-0.639,-0.620,1.000 +98.000,-1.325,0.379,-0.282,1.000 +99.000,-1.543,-0.330,1.297,1.000 +99.000,0.157,-0.484,1.422,1.000 diff --git a/statsmodels/regression/tests/results/lme04.csv b/statsmodels/regression/tests/results/lme04.csv new file mode 100644 index 0000000..a222e2b --- /dev/null +++ b/statsmodels/regression/tests/results/lme04.csv @@ -0,0 +1,253 @@ +groups,endog,exog_fe_0,exog_fe_1,exog_fe_2,exog_re_0 +0.000,-0.463,-0.349,-1.395,-0.274,1.000 +0.000,-0.938,0.491,0.741,-0.126,1.000 +0.000,-0.807,0.476,-0.941,-0.124,1.000 +0.000,-1.261,1.097,-0.136,-0.065,1.000 +1.000,-2.074,1.217,2.124,-0.835,1.000 +1.000,0.031,0.536,-0.344,0.706,1.000 +2.000,-3.339,2.331,0.177,0.032,1.000 +2.000,1.606,0.821,0.423,2.271,1.000 +2.000,-1.693,1.259,0.344,-0.616,1.000 +3.000,4.655,-2.093,2.103,1.868,1.000 +3.000,0.784,-0.720,0.117,-0.639,1.000 +4.000,0.884,-1.803,-1.175,-1.213,1.000 +4.000,0.846,-1.182,-1.317,-0.917,1.000 +5.000,0.350,0.078,0.433,0.915,1.000 +5.000,4.570,-2.717,0.328,1.460,1.000 +5.000,-0.268,-0.861,0.384,-1.012,1.000 +5.000,-0.432,0.184,-0.029,-0.177,1.000 +6.000,-0.154,-0.110,-0.361,0.121,1.000 +6.000,-1.861,0.646,0.829,-0.293,1.000 +6.000,-0.194,0.414,-1.179,0.535,1.000 +6.000,0.129,0.071,0.022,1.108,1.000 +7.000,1.884,-0.795,1.620,0.245,1.000 +7.000,0.577,-0.237,1.007,-0.378,1.000 +7.000,-2.023,1.358,-0.470,0.049,1.000 +8.000,0.144,-0.053,-1.474,-0.396,1.000 +9.000,-4.044,1.942,0.853,-1.667,1.000 +9.000,-0.607,1.077,0.149,-0.180,1.000 +9.000,0.097,-1.577,1.241,-0.777,1.000 +10.000,-1.181,0.180,0.815,-1.275,1.000 +10.000,0.026,-0.715,-1.526,-0.972,1.000 +10.000,-0.573,-0.575,1.838,-1.447,1.000 +11.000,-1.066,2.079,1.130,1.604,1.000 +11.000,-1.337,1.053,-0.141,-0.560,1.000 +11.000,4.161,-1.610,-0.485,1.228,1.000 +12.000,0.446,-0.386,0.172,-0.478,1.000 +13.000,0.096,0.259,0.237,-0.070,1.000 +13.000,2.110,-2.034,0.439,0.466,1.000 +14.000,2.129,0.058,1.476,1.703,1.000 +14.000,-0.744,0.532,1.558,-0.231,1.000 +14.000,-0.660,0.357,-0.392,-1.069,1.000 +14.000,-0.439,0.431,-0.289,-0.092,1.000 +15.000,0.679,-0.702,1.056,-1.168,1.000 +15.000,-1.441,0.901,1.081,-1.136,1.000 +16.000,0.944,-0.313,-0.374,0.616,1.000 +16.000,1.683,-0.812,0.083,1.090,1.000 +17.000,0.312,-0.982,0.724,-1.582,1.000 +17.000,0.151,0.543,-1.968,-0.380,1.000 +18.000,-0.641,0.135,-0.696,-1.254,1.000 +18.000,1.172,-0.328,-0.339,-0.373,1.000 +18.000,1.657,-0.856,-1.385,-0.764,1.000 +19.000,-1.066,0.323,-0.914,-0.109,1.000 +19.000,-0.378,-0.654,-1.196,-0.807,1.000 +19.000,-3.024,-0.014,-0.895,-2.200,1.000 +20.000,-3.320,1.532,0.232,-2.006,1.000 +21.000,-0.322,1.535,1.028,0.338,1.000 +22.000,0.239,-0.923,-0.551,-0.415,1.000 +22.000,-1.446,0.777,0.831,-0.608,1.000 +22.000,-1.542,0.507,-0.988,-1.591,1.000 +22.000,-2.810,0.626,-1.186,-1.175,1.000 +23.000,-0.316,1.929,0.076,0.968,1.000 +23.000,0.606,-1.023,1.047,-0.755,1.000 +23.000,-1.248,1.910,0.871,0.474,1.000 +24.000,3.448,-0.912,-1.808,1.088,1.000 +25.000,-1.798,0.320,-0.198,-1.156,1.000 +25.000,-2.893,2.579,0.054,-0.017,1.000 +25.000,-1.295,2.030,1.610,0.917,1.000 +25.000,-1.825,1.913,0.340,0.397,1.000 +26.000,-1.732,-0.552,0.139,-1.133,1.000 +26.000,-3.015,0.240,-2.069,-1.425,1.000 +26.000,-0.092,-0.277,0.001,0.796,1.000 +26.000,0.461,-0.117,0.103,0.552,1.000 +27.000,1.551,-0.468,1.580,1.251,1.000 +27.000,0.537,-0.414,1.661,-0.211,1.000 +28.000,1.042,-1.272,-1.827,-0.443,1.000 +28.000,-0.560,-0.081,-0.968,0.460,1.000 +28.000,0.161,0.893,-0.266,0.454,1.000 +28.000,-0.516,0.650,-0.725,-0.484,1.000 +29.000,-0.861,-0.806,0.610,-1.962,1.000 +29.000,2.238,-0.848,1.387,0.098,1.000 +29.000,-0.781,-0.149,1.097,-1.491,1.000 +30.000,1.631,0.150,-1.203,1.806,1.000 +30.000,0.033,-0.145,-1.006,-0.035,1.000 +31.000,-1.706,1.439,-1.389,0.226,1.000 +31.000,-1.100,-0.201,-0.592,-1.081,1.000 +31.000,-0.040,0.399,1.524,-0.136,1.000 +31.000,-1.515,0.270,0.491,-1.119,1.000 +32.000,-0.437,-0.106,-0.820,-0.899,1.000 +33.000,-1.510,0.181,0.593,-1.311,1.000 +33.000,0.471,0.171,0.508,0.342,1.000 +34.000,0.126,1.148,-1.885,0.651,1.000 +34.000,-2.719,0.621,0.634,-2.568,1.000 +34.000,0.562,1.306,-0.144,0.149,1.000 +34.000,2.184,-1.656,-0.482,-0.337,1.000 +35.000,1.205,-1.445,0.312,-0.164,1.000 +35.000,-2.110,0.957,-1.217,-1.100,1.000 +35.000,1.096,-0.301,0.914,0.941,1.000 +36.000,1.576,0.973,-1.396,1.332,1.000 +37.000,-0.665,-0.271,1.620,-0.717,1.000 +38.000,0.279,0.990,-0.600,0.248,1.000 +38.000,1.280,-2.938,-0.223,0.055,1.000 +38.000,-0.226,1.070,0.512,0.307,1.000 +38.000,-2.494,1.280,2.425,-0.816,1.000 +39.000,-2.059,1.170,-0.555,-0.727,1.000 +39.000,-1.583,0.691,-0.204,-1.432,1.000 +40.000,0.728,-0.801,1.227,0.119,1.000 +40.000,2.629,-0.543,-0.386,0.338,1.000 +40.000,0.736,0.711,1.882,0.711,1.000 +41.000,-0.391,0.162,-0.127,-0.215,1.000 +41.000,-0.894,0.088,0.063,-0.078,1.000 +41.000,0.930,-0.135,0.320,0.398,1.000 +41.000,0.353,0.297,1.326,1.337,1.000 +42.000,-0.707,-0.462,-1.397,-0.702,1.000 +42.000,1.422,-2.565,-1.095,-0.523,1.000 +42.000,-1.684,0.526,-0.918,-0.324,1.000 +42.000,-2.438,0.289,-0.324,-1.264,1.000 +43.000,1.053,0.512,0.542,0.543,1.000 +43.000,1.054,-0.822,-0.126,0.007,1.000 +44.000,0.099,-0.408,-0.456,0.232,1.000 +44.000,-0.249,-0.288,-2.287,-0.732,1.000 +44.000,0.968,0.599,1.869,1.635,1.000 +45.000,0.285,-1.146,0.440,-0.823,1.000 +45.000,1.881,-1.926,-0.302,-0.052,1.000 +46.000,0.048,-0.061,1.050,-0.254,1.000 +46.000,1.802,-0.456,-1.751,1.361,1.000 +47.000,-2.984,2.696,-0.203,0.080,1.000 +48.000,-0.218,0.475,0.046,-0.644,1.000 +49.000,3.221,-2.034,-0.255,0.554,1.000 +49.000,1.156,-0.266,1.053,0.613,1.000 +49.000,-2.756,1.512,1.220,-1.876,1.000 +49.000,0.771,0.792,1.931,0.442,1.000 +50.000,2.091,-0.922,1.023,0.084,1.000 +50.000,4.610,-1.356,0.307,1.924,1.000 +50.000,-0.145,-0.384,1.841,-0.534,1.000 +50.000,-2.647,0.745,-0.393,-2.121,1.000 +51.000,-0.913,-0.586,1.651,-1.227,1.000 +52.000,2.543,-1.074,-2.021,1.498,1.000 +52.000,2.179,-2.141,-0.909,-0.798,1.000 +52.000,-1.319,-0.675,0.948,-1.298,1.000 +52.000,0.317,0.379,-0.716,0.333,1.000 +53.000,2.989,-0.882,0.202,0.987,1.000 +53.000,0.247,-0.457,0.319,-0.499,1.000 +53.000,0.120,1.640,-1.168,0.467,1.000 +54.000,0.352,-0.783,0.741,0.361,1.000 +54.000,1.160,-1.725,-1.227,-0.939,1.000 +54.000,0.819,-0.537,0.336,0.631,1.000 +54.000,-1.067,0.154,0.068,-0.300,1.000 +55.000,0.912,-0.225,0.817,0.102,1.000 +55.000,0.963,-0.936,1.752,0.186,1.000 +56.000,0.484,-0.244,0.466,0.128,1.000 +57.000,3.167,-0.596,-0.518,1.746,1.000 +57.000,2.598,-1.359,0.489,1.445,1.000 +57.000,2.486,-2.112,-1.123,-0.365,1.000 +58.000,0.814,-1.153,0.726,-0.823,1.000 +58.000,1.007,0.154,1.107,0.428,1.000 +58.000,-1.547,0.653,0.016,-0.274,1.000 +59.000,0.333,-0.281,-0.313,0.439,1.000 +59.000,-0.503,0.255,0.409,0.651,1.000 +60.000,1.369,-1.244,-0.616,0.204,1.000 +60.000,-0.032,-0.051,-0.271,-0.580,1.000 +61.000,-0.441,1.491,0.633,0.416,1.000 +61.000,-1.099,1.686,-0.758,-0.240,1.000 +62.000,-1.223,-0.055,-0.807,-0.784,1.000 +62.000,2.225,-0.191,0.439,1.910,1.000 +63.000,-2.042,1.391,-0.600,-1.105,1.000 +63.000,-2.002,1.017,0.767,-0.467,1.000 +63.000,-1.872,-0.150,-1.168,-2.097,1.000 +64.000,0.320,0.503,-1.914,-0.115,1.000 +65.000,0.868,0.711,-0.390,0.669,1.000 +65.000,0.295,1.013,0.464,0.997,1.000 +66.000,-0.256,0.530,-0.431,-0.630,1.000 +66.000,1.061,-0.606,-0.466,0.255,1.000 +67.000,-1.967,0.318,0.184,-1.967,1.000 +67.000,0.581,-0.609,-1.071,0.253,1.000 +68.000,-0.596,1.649,-0.621,0.844,1.000 +68.000,1.194,0.561,-0.213,0.894,1.000 +68.000,1.104,-1.587,0.162,-0.753,1.000 +68.000,-0.634,1.082,-0.783,0.404,1.000 +69.000,-4.348,0.564,0.261,-2.781,1.000 +70.000,-0.707,0.908,0.696,0.629,1.000 +71.000,-1.861,1.388,-0.598,-0.733,1.000 +71.000,0.205,0.695,0.108,0.562,1.000 +72.000,-2.768,2.202,0.358,-0.883,1.000 +72.000,0.989,-2.361,-0.968,-1.685,1.000 +73.000,-0.022,-0.567,-1.099,0.509,1.000 +74.000,-0.967,-1.133,1.021,-1.561,1.000 +74.000,3.925,-2.303,0.134,1.622,1.000 +74.000,-2.789,2.011,-0.955,-0.172,1.000 +74.000,1.146,-0.735,0.148,0.230,1.000 +75.000,-1.655,1.376,-2.324,0.006,1.000 +75.000,-0.768,-0.219,-0.096,-1.035,1.000 +75.000,0.184,-0.709,-1.445,-0.325,1.000 +75.000,-1.585,0.923,0.642,-1.101,1.000 +76.000,-0.039,1.304,1.255,1.128,1.000 +76.000,2.326,-0.434,-0.775,0.591,1.000 +77.000,-0.561,0.460,0.244,0.191,1.000 +77.000,-0.046,-0.190,-0.520,-0.808,1.000 +77.000,4.086,-1.980,-0.439,2.066,1.000 +77.000,0.665,-0.604,-1.375,-0.006,1.000 +78.000,-3.898,-0.171,-0.325,-2.976,1.000 +78.000,0.405,0.569,-1.208,1.038,1.000 +79.000,-1.024,0.173,-2.303,0.219,1.000 +79.000,-0.207,-0.872,-0.197,0.149,1.000 +79.000,-0.622,-0.354,0.121,-0.109,1.000 +80.000,-0.094,0.278,-1.764,0.173,1.000 +80.000,1.396,-0.652,-0.541,0.533,1.000 +80.000,-1.648,1.041,-0.888,-0.073,1.000 +81.000,0.792,0.299,-0.705,1.327,1.000 +82.000,-0.839,0.178,-1.719,-0.972,1.000 +82.000,-1.346,0.381,1.782,-1.869,1.000 +82.000,-0.298,-0.778,-1.535,-1.313,1.000 +82.000,0.365,0.354,-0.777,0.396,1.000 +83.000,0.743,-1.213,0.328,0.279,1.000 +83.000,2.316,-1.140,0.176,1.521,1.000 +83.000,0.647,-1.342,-0.242,-0.040,1.000 +84.000,0.640,0.038,-0.797,-0.561,1.000 +84.000,0.007,0.390,0.523,0.316,1.000 +84.000,3.044,-1.114,-0.508,1.279,1.000 +84.000,-0.581,0.003,-0.582,-0.422,1.000 +85.000,0.831,-1.766,-1.629,-0.138,1.000 +85.000,0.252,-0.733,-0.317,-0.448,1.000 +86.000,-0.914,-0.498,-0.001,-1.115,1.000 +86.000,-0.210,1.260,-0.968,0.696,1.000 +86.000,-1.075,0.146,0.512,-0.503,1.000 +87.000,0.915,-0.013,1.140,0.706,1.000 +87.000,-0.991,1.876,0.757,-0.193,1.000 +88.000,0.335,-0.920,-0.641,-0.362,1.000 +88.000,0.581,0.437,0.336,0.375,1.000 +89.000,2.032,-0.515,2.291,0.447,1.000 +89.000,-1.969,1.945,0.057,0.546,1.000 +90.000,-1.314,0.115,-0.797,-0.978,1.000 +90.000,0.398,-0.175,0.381,0.673,1.000 +90.000,-0.793,0.332,0.982,-0.318,1.000 +91.000,-0.269,-0.461,-0.736,-0.556,1.000 +91.000,-3.569,2.120,-1.517,-0.875,1.000 +92.000,-0.105,-0.394,-0.021,-0.855,1.000 +93.000,-2.884,1.953,-1.066,-0.841,1.000 +93.000,-0.223,0.140,0.432,-0.355,1.000 +93.000,-0.937,0.694,-0.141,-0.649,1.000 +93.000,-0.781,-1.124,0.766,-1.699,1.000 +94.000,-0.216,1.392,0.193,0.721,1.000 +95.000,0.549,-1.081,-0.379,-0.599,1.000 +96.000,-3.352,1.763,0.509,-1.960,1.000 +96.000,2.444,-0.399,-0.497,0.725,1.000 +97.000,1.451,-0.677,-0.580,-1.055,1.000 +97.000,1.806,-1.187,-0.907,-0.049,1.000 +97.000,0.714,0.737,-0.540,0.645,1.000 +97.000,0.992,0.366,-0.163,0.188,1.000 +98.000,-1.026,1.723,0.693,0.119,1.000 +98.000,0.337,0.069,0.358,-0.266,1.000 +99.000,1.196,-1.316,-0.263,0.443,1.000 +99.000,-2.012,1.087,-0.564,-0.343,1.000 +99.000,-0.855,-0.511,0.744,-0.596,1.000 diff --git a/statsmodels/regression/tests/results/lme05.csv b/statsmodels/regression/tests/results/lme05.csv new file mode 100644 index 0000000..05f94ee --- /dev/null +++ b/statsmodels/regression/tests/results/lme05.csv @@ -0,0 +1,269 @@ +groups,endog,exog_fe_0,exog_fe_1,exog_fe_2,exog_re_0 +0.000,3.880,-0.978,0.620,1.794,1.000 +1.000,-3.750,-0.532,-0.310,-1.308,1.000 +2.000,2.243,-0.588,0.722,0.296,1.000 +3.000,1.804,0.343,-0.678,0.156,1.000 +3.000,0.032,-1.447,-0.135,-1.995,1.000 +3.000,1.063,0.848,-0.488,1.518,1.000 +3.000,-3.443,0.635,-1.315,-0.546,1.000 +4.000,-0.592,0.310,1.774,0.725,1.000 +4.000,0.577,-0.318,-0.086,0.596,1.000 +4.000,1.578,0.508,-0.586,1.929,1.000 +4.000,1.667,-1.461,0.438,0.638,1.000 +5.000,-1.134,1.391,-0.619,-0.412,1.000 +5.000,3.445,-0.057,-1.143,0.497,1.000 +5.000,-4.456,1.295,-0.823,-1.722,1.000 +5.000,-1.298,-0.838,-1.625,-1.846,1.000 +6.000,6.148,-0.329,0.786,2.014,1.000 +7.000,0.111,-0.139,-0.627,0.764,1.000 +8.000,1.446,-0.977,0.087,0.130,1.000 +8.000,-4.741,0.548,1.546,-0.126,1.000 +8.000,-2.082,1.405,-0.301,0.735,1.000 +9.000,-3.572,0.288,1.556,-0.517,1.000 +9.000,1.780,0.437,-0.163,1.267,1.000 +10.000,-3.371,-1.841,0.123,-2.111,1.000 +10.000,-0.814,-0.243,-0.618,-1.564,1.000 +10.000,-1.692,1.205,0.359,0.478,1.000 +11.000,1.115,-1.828,0.958,-0.926,1.000 +11.000,-3.553,0.608,-0.535,-0.945,1.000 +11.000,2.304,-1.334,1.340,0.461,1.000 +12.000,-5.266,1.659,1.492,-0.655,1.000 +12.000,-3.532,-0.453,-0.657,-0.609,1.000 +12.000,1.459,0.745,0.561,-0.874,1.000 +12.000,-1.708,1.252,-0.468,-2.180,1.000 +13.000,1.907,-0.670,1.266,-0.607,1.000 +13.000,-0.989,1.664,0.963,-0.219,1.000 +14.000,-0.758,0.733,0.125,1.543,1.000 +14.000,-1.779,0.448,-0.329,0.230,1.000 +14.000,0.867,-2.197,0.615,0.516,1.000 +15.000,-2.860,0.932,-0.529,-0.395,1.000 +15.000,2.060,-0.448,0.377,-0.383,1.000 +15.000,-1.017,1.039,-0.389,-0.413,1.000 +15.000,2.710,-0.136,0.060,-0.748,1.000 +16.000,1.893,-0.979,0.260,0.387,1.000 +16.000,0.523,-0.155,0.459,-0.843,1.000 +16.000,-2.894,1.584,1.659,-0.086,1.000 +16.000,1.008,-0.878,-0.214,0.022,1.000 +17.000,-1.792,-0.524,0.011,0.765,1.000 +17.000,0.231,1.116,0.761,-0.256,1.000 +17.000,2.597,-0.832,0.745,1.478,1.000 +17.000,-2.557,1.768,-0.719,0.860,1.000 +18.000,1.849,0.234,-1.582,0.792,1.000 +18.000,1.212,1.107,1.193,-0.055,1.000 +18.000,0.241,0.323,-1.514,0.080,1.000 +18.000,0.037,-1.443,-0.575,-0.275,1.000 +19.000,-0.792,-0.037,-1.544,-0.335,1.000 +20.000,0.876,0.397,0.170,-0.713,1.000 +20.000,-0.264,-0.271,0.900,-0.245,1.000 +21.000,0.269,-1.604,-0.475,0.315,1.000 +21.000,2.284,-1.714,0.086,-0.026,1.000 +22.000,-2.273,-1.107,-1.504,0.475,1.000 +22.000,-0.580,0.304,1.280,-0.123,1.000 +22.000,-1.211,1.489,-0.014,-1.207,1.000 +23.000,-3.671,1.304,0.592,0.268,1.000 +23.000,-0.922,0.767,0.451,-0.432,1.000 +24.000,0.943,0.467,-0.675,0.300,1.000 +24.000,3.662,-0.044,0.390,0.727,1.000 +24.000,0.627,0.628,0.781,0.188,1.000 +24.000,2.651,0.316,0.205,-0.148,1.000 +25.000,-3.343,-0.519,0.827,-0.265,1.000 +25.000,-3.000,-1.712,-2.129,-2.028,1.000 +25.000,0.318,-0.776,0.809,0.086,1.000 +25.000,0.335,0.344,-0.483,0.385,1.000 +26.000,1.512,-0.914,1.840,-0.491,1.000 +27.000,1.688,0.506,1.645,0.315,1.000 +27.000,1.181,1.158,-0.613,2.686,1.000 +27.000,-0.341,1.909,-0.557,-0.947,1.000 +27.000,1.667,-1.009,1.660,0.221,1.000 +28.000,-3.495,1.017,-1.665,-1.468,1.000 +29.000,-3.995,0.022,-1.258,1.305,1.000 +29.000,-1.670,1.317,0.100,0.593,1.000 +29.000,0.052,-0.224,-1.916,-0.868,1.000 +30.000,2.513,1.046,-2.597,1.586,1.000 +31.000,0.356,0.341,0.215,-0.084,1.000 +31.000,4.362,1.685,-0.578,1.978,1.000 +31.000,-4.676,0.322,-1.459,-2.394,1.000 +31.000,2.795,0.640,-0.281,0.213,1.000 +32.000,-1.351,1.668,0.388,0.001,1.000 +32.000,-2.228,0.018,-0.089,-1.305,1.000 +32.000,-1.255,0.825,0.032,-0.576,1.000 +32.000,2.912,0.798,0.040,1.710,1.000 +33.000,-0.545,-0.268,0.841,0.124,1.000 +33.000,-1.687,1.005,0.939,-0.222,1.000 +33.000,-1.930,-0.330,1.535,-1.048,1.000 +33.000,0.747,1.498,-0.492,0.204,1.000 +34.000,-5.473,-0.033,0.154,-1.758,1.000 +34.000,-0.687,-1.710,0.788,-1.152,1.000 +35.000,1.174,0.477,-0.492,-0.664,1.000 +35.000,-2.062,-1.049,0.164,-0.417,1.000 +35.000,2.658,-0.151,-1.570,-0.041,1.000 +36.000,-3.845,0.825,0.325,1.400,1.000 +37.000,2.601,-0.645,1.104,0.364,1.000 +37.000,-2.832,2.148,1.349,0.272,1.000 +38.000,1.752,-0.669,-0.380,-1.333,1.000 +38.000,-4.343,2.159,-0.716,-1.549,1.000 +39.000,3.428,-0.575,-0.066,0.377,1.000 +39.000,2.637,-0.716,0.788,-0.803,1.000 +39.000,-4.920,1.429,-0.276,0.731,1.000 +40.000,1.447,0.799,-1.693,1.072,1.000 +40.000,-2.954,0.019,0.350,-1.168,1.000 +40.000,-1.030,1.178,-0.464,-0.641,1.000 +41.000,3.446,-0.906,-0.703,1.559,1.000 +41.000,-0.801,-0.120,0.966,-0.651,1.000 +41.000,-0.990,0.748,-1.755,-1.042,1.000 +41.000,-0.770,-1.165,-0.056,-1.244,1.000 +42.000,2.144,0.888,0.305,-0.308,1.000 +42.000,2.618,-0.954,-0.044,-2.079,1.000 +42.000,1.550,0.857,0.115,0.263,1.000 +42.000,2.607,0.385,-1.245,1.662,1.000 +43.000,-1.553,0.152,0.101,-1.907,1.000 +43.000,-0.779,-0.148,0.112,-0.119,1.000 +43.000,1.932,-1.185,1.165,1.073,1.000 +44.000,-1.477,-0.445,-1.277,-0.223,1.000 +45.000,2.261,-0.297,-1.369,-0.907,1.000 +45.000,3.779,-0.118,0.159,1.871,1.000 +46.000,-1.921,-0.940,-1.167,-0.312,1.000 +46.000,-2.027,-0.615,-1.259,-0.294,1.000 +46.000,-2.334,-0.467,-1.014,3.167,1.000 +47.000,2.334,-1.243,0.152,0.703,1.000 +47.000,3.017,-1.309,-1.268,0.334,1.000 +47.000,-2.094,0.316,1.576,-1.097,1.000 +48.000,-1.315,1.319,-1.027,0.310,1.000 +48.000,2.309,-1.564,-0.617,0.666,1.000 +48.000,-2.279,0.447,1.488,-2.344,1.000 +48.000,0.154,-0.488,-0.293,0.620,1.000 +49.000,0.570,0.239,-0.829,0.888,1.000 +49.000,2.697,-1.757,-0.979,0.283,1.000 +49.000,4.004,-0.185,-0.553,1.880,1.000 +50.000,1.861,0.759,-0.706,-0.315,1.000 +51.000,-2.630,-0.353,0.190,-0.562,1.000 +51.000,0.036,-0.828,0.739,0.321,1.000 +52.000,-2.787,0.258,0.291,-0.286,1.000 +52.000,-1.409,-0.053,0.134,-0.989,1.000 +52.000,3.396,0.355,-0.455,0.015,1.000 +53.000,-1.213,2.654,1.011,1.630,1.000 +54.000,-0.034,-0.335,1.130,0.580,1.000 +55.000,-1.967,-0.034,-0.635,0.387,1.000 +55.000,-1.831,1.592,0.305,0.536,1.000 +56.000,0.617,0.998,-0.725,0.440,1.000 +57.000,-0.638,0.092,1.789,0.881,1.000 +57.000,2.310,0.367,-0.148,1.188,1.000 +57.000,-1.118,0.851,-0.143,0.456,1.000 +57.000,0.930,0.706,1.089,-0.486,1.000 +58.000,-2.204,0.442,-0.663,-0.609,1.000 +59.000,4.833,-0.763,-1.618,-0.357,1.000 +59.000,-1.014,-0.750,1.936,-1.006,1.000 +59.000,-0.500,0.386,0.660,0.618,1.000 +59.000,3.452,1.264,-1.429,1.022,1.000 +60.000,-3.408,-0.563,-1.186,-0.492,1.000 +60.000,1.757,0.213,1.293,0.343,1.000 +60.000,4.311,-1.632,-1.177,0.960,1.000 +61.000,1.516,-1.320,-0.219,0.198,1.000 +61.000,-2.059,1.347,-1.978,-0.509,1.000 +61.000,1.379,-0.472,1.422,-0.299,1.000 +61.000,2.276,0.186,-0.331,0.005,1.000 +62.000,2.757,-0.675,0.543,0.124,1.000 +62.000,2.030,-0.165,1.641,0.333,1.000 +63.000,-5.107,0.729,1.550,0.125,1.000 +63.000,1.022,-1.965,-0.165,0.168,1.000 +63.000,1.431,-0.744,-0.960,0.590,1.000 +64.000,2.656,-1.120,-0.814,1.757,1.000 +64.000,5.829,0.492,1.164,0.040,1.000 +64.000,-0.448,1.765,0.093,-0.032,1.000 +64.000,-0.482,0.208,0.061,-0.010,1.000 +65.000,-3.100,-0.790,0.379,-1.450,1.000 +66.000,3.179,0.546,1.378,1.144,1.000 +66.000,-2.246,0.895,-0.892,-0.988,1.000 +67.000,-3.264,-0.120,-1.869,0.424,1.000 +67.000,-5.626,1.889,0.822,-1.540,1.000 +67.000,-1.804,0.507,-0.348,-0.406,1.000 +67.000,1.517,-0.347,-0.353,0.592,1.000 +68.000,3.198,-2.207,2.608,-1.232,1.000 +68.000,3.162,-0.634,-1.265,1.174,1.000 +68.000,-2.861,2.025,0.763,-0.627,1.000 +68.000,-2.550,1.599,-0.303,1.449,1.000 +69.000,3.149,0.947,-0.140,0.562,1.000 +69.000,4.168,0.533,-1.239,-0.577,1.000 +70.000,0.913,1.612,-1.857,1.033,1.000 +71.000,-3.526,2.188,-0.674,-1.317,1.000 +71.000,1.651,-0.158,-0.762,-0.136,1.000 +71.000,2.957,-0.133,-0.311,-0.435,1.000 +71.000,-1.667,-1.187,-0.253,-1.864,1.000 +72.000,3.198,1.665,-1.237,1.804,1.000 +73.000,-1.054,-0.230,0.211,-1.063,1.000 +73.000,1.632,0.679,0.135,1.178,1.000 +73.000,0.062,-0.118,1.041,0.650,1.000 +74.000,0.502,1.712,-0.863,0.172,1.000 +74.000,2.890,-1.015,-0.702,-0.260,1.000 +75.000,3.543,-0.560,0.013,0.292,1.000 +75.000,2.363,-1.176,1.015,-0.208,1.000 +75.000,-0.694,1.899,-0.327,2.512,1.000 +75.000,2.421,-0.938,1.145,0.232,1.000 +76.000,4.377,-0.299,0.762,1.687,1.000 +77.000,-0.323,-0.307,-1.296,-0.154,1.000 +77.000,-0.723,0.376,1.243,-0.455,1.000 +77.000,1.116,-0.038,1.138,1.615,1.000 +78.000,0.111,-0.932,1.007,-0.255,1.000 +79.000,-2.678,0.179,0.587,-0.507,1.000 +79.000,-3.988,0.285,0.261,-0.831,1.000 +79.000,1.468,0.397,-0.895,1.210,1.000 +80.000,0.583,1.182,-0.192,-0.150,1.000 +80.000,0.395,-1.170,-0.036,1.275,1.000 +81.000,1.828,-1.102,0.379,0.231,1.000 +81.000,-0.634,0.799,-0.421,-0.475,1.000 +81.000,-0.060,-1.463,-1.536,1.805,1.000 +81.000,3.483,-1.966,-0.418,-1.515,1.000 +82.000,2.080,-0.976,0.152,1.717,1.000 +82.000,-0.011,-0.125,-0.194,0.805,1.000 +82.000,0.589,-2.327,1.703,0.168,1.000 +82.000,0.873,0.054,-0.824,-1.055,1.000 +83.000,2.724,0.900,2.977,0.286,1.000 +83.000,-5.920,0.491,-0.595,-0.684,1.000 +83.000,-1.550,-0.592,-0.079,-0.748,1.000 +83.000,-2.430,0.288,0.783,-0.279,1.000 +84.000,-1.655,1.313,-0.502,-0.149,1.000 +84.000,-0.811,0.447,0.016,-0.133,1.000 +84.000,-2.868,0.996,0.587,1.912,1.000 +84.000,-3.436,0.732,0.936,0.237,1.000 +85.000,-3.382,0.325,-0.754,-0.743,1.000 +85.000,1.671,-1.395,1.344,-0.881,1.000 +85.000,4.144,-0.447,-0.314,0.631,1.000 +85.000,-0.305,-0.433,0.707,-0.109,1.000 +86.000,0.075,-0.143,-0.174,-0.729,1.000 +86.000,0.283,-0.565,0.495,-0.394,1.000 +86.000,0.717,-0.280,1.025,0.208,1.000 +87.000,1.847,0.022,-0.105,0.066,1.000 +87.000,4.477,-0.185,-1.114,0.207,1.000 +88.000,0.254,0.613,-0.430,-0.638,1.000 +88.000,3.023,-1.434,0.546,-1.376,1.000 +88.000,2.627,0.249,0.043,0.462,1.000 +89.000,0.570,-1.258,-1.563,-0.024,1.000 +89.000,0.560,-0.438,-0.420,0.108,1.000 +89.000,-0.079,0.254,0.385,-0.022,1.000 +90.000,-0.160,-0.865,-0.345,-0.793,1.000 +90.000,-1.435,0.724,-0.926,-0.158,1.000 +90.000,0.827,1.614,0.065,0.616,1.000 +90.000,-0.006,-0.160,1.080,0.167,1.000 +91.000,6.407,0.364,0.998,0.729,1.000 +91.000,-3.118,0.010,-1.036,0.791,1.000 +91.000,-2.875,2.432,0.839,1.055,1.000 +91.000,-3.487,1.441,-1.509,-1.671,1.000 +92.000,4.981,-0.726,1.735,1.323,1.000 +92.000,-1.411,-1.597,0.415,-0.591,1.000 +92.000,2.521,0.064,-1.279,0.026,1.000 +92.000,-0.620,0.262,0.313,-1.849,1.000 +93.000,2.052,0.297,0.549,2.033,1.000 +93.000,-1.029,0.115,3.151,-1.510,1.000 +94.000,0.524,0.241,-0.997,1.701,1.000 +95.000,-0.405,-1.720,-1.119,0.040,1.000 +95.000,-0.659,-1.001,-1.394,-1.116,1.000 +95.000,-4.643,0.043,0.384,-1.624,1.000 +96.000,-5.558,-0.109,-1.023,-0.518,1.000 +97.000,-0.291,0.064,-0.555,1.100,1.000 +98.000,-0.728,-0.328,-0.638,0.568,1.000 +98.000,-2.752,0.267,-0.413,0.007,1.000 +98.000,1.371,-0.474,0.324,-1.436,1.000 +98.000,-6.489,2.050,0.432,-2.570,1.000 +99.000,-1.681,-0.349,1.479,1.119,1.000 +99.000,-1.584,-0.891,-0.525,0.200,1.000 +99.000,1.696,-0.235,-1.439,1.765,1.000 diff --git a/statsmodels/regression/tests/results/lme06.csv b/statsmodels/regression/tests/results/lme06.csv new file mode 100644 index 0000000..1c1995a --- /dev/null +++ b/statsmodels/regression/tests/results/lme06.csv @@ -0,0 +1,261 @@ +groups,endog,exog_fe_0,exog_re_0,exog_re_1 +0.000,-0.504,-0.256,1.000,-1.000 +1.000,-2.437,1.355,1.000,-1.000 +1.000,-2.472,0.098,1.000,0.000 +1.000,-1.651,0.666,1.000,1.000 +2.000,-1.139,1.864,1.000,-1.000 +3.000,-2.869,2.045,1.000,-1.000 +3.000,-1.301,0.867,1.000,1.000 +4.000,1.155,-0.194,1.000,-1.000 +4.000,-0.202,1.156,1.000,1.000 +5.000,-0.553,-0.664,1.000,-1.000 +5.000,-1.502,1.428,1.000,1.000 +6.000,0.782,0.132,1.000,-1.000 +6.000,-2.208,0.771,1.000,1.000 +7.000,-1.198,1.180,1.000,-1.000 +7.000,0.324,-0.346,1.000,0.000 +7.000,0.149,-0.247,1.000,1.000 +8.000,-0.799,1.796,1.000,-1.000 +8.000,1.187,-0.264,1.000,0.000 +8.000,-2.163,1.864,1.000,1.000 +9.000,-2.442,0.749,1.000,-1.000 +9.000,1.112,-1.067,1.000,1.000 +10.000,-3.316,0.867,1.000,-1.000 +10.000,-1.735,1.423,1.000,-0.333 +10.000,0.639,-0.714,1.000,0.333 +10.000,0.978,0.813,1.000,1.000 +11.000,-0.507,0.873,1.000,-1.000 +11.000,-2.311,1.169,1.000,-0.333 +11.000,1.023,-0.972,1.000,0.333 +11.000,-1.276,0.065,1.000,1.000 +12.000,-3.120,0.558,1.000,-1.000 +13.000,0.103,0.657,1.000,-1.000 +13.000,-0.551,0.390,1.000,0.000 +13.000,-0.504,-0.771,1.000,1.000 +14.000,0.138,-0.364,1.000,-1.000 +14.000,0.836,-0.845,1.000,-0.333 +14.000,0.951,-0.501,1.000,0.333 +14.000,2.782,-1.463,1.000,1.000 +15.000,-0.087,0.593,1.000,-1.000 +15.000,-1.381,-0.012,1.000,0.000 +15.000,0.022,-1.137,1.000,1.000 +16.000,-0.273,1.230,1.000,-1.000 +16.000,-0.197,0.508,1.000,0.000 +16.000,-0.778,-0.362,1.000,1.000 +17.000,4.004,-1.784,1.000,-1.000 +17.000,-4.111,1.429,1.000,1.000 +18.000,2.411,0.218,1.000,-1.000 +18.000,-0.563,1.556,1.000,0.000 +18.000,-2.774,1.793,1.000,1.000 +19.000,-0.767,0.891,1.000,-1.000 +19.000,1.889,-0.919,1.000,1.000 +20.000,-0.415,0.857,1.000,-1.000 +21.000,-0.843,0.524,1.000,-1.000 +21.000,0.229,-0.311,1.000,0.000 +21.000,-0.775,0.810,1.000,1.000 +22.000,-1.078,0.214,1.000,-1.000 +23.000,-1.707,-0.698,1.000,-1.000 +23.000,-0.486,0.130,1.000,0.000 +23.000,1.893,0.277,1.000,1.000 +24.000,1.611,0.589,1.000,-1.000 +24.000,0.088,0.780,1.000,-0.333 +24.000,0.555,-1.922,1.000,0.333 +24.000,-1.593,-0.270,1.000,1.000 +25.000,0.763,-0.689,1.000,-1.000 +25.000,-0.700,0.693,1.000,0.000 +25.000,-0.762,-0.890,1.000,1.000 +26.000,-0.483,-0.811,1.000,-1.000 +26.000,0.804,-0.850,1.000,0.000 +26.000,0.796,0.850,1.000,1.000 +27.000,-2.479,-0.483,1.000,-1.000 +27.000,1.975,1.144,1.000,1.000 +28.000,1.663,-0.676,1.000,-1.000 +28.000,0.147,-1.068,1.000,0.000 +28.000,-1.392,-0.011,1.000,1.000 +29.000,0.868,0.088,1.000,-1.000 +29.000,-0.389,-0.795,1.000,1.000 +30.000,-2.863,0.948,1.000,-1.000 +30.000,0.632,-1.362,1.000,-0.333 +30.000,0.654,-1.084,1.000,0.333 +30.000,0.555,-0.497,1.000,1.000 +31.000,1.007,-1.654,1.000,-1.000 +32.000,-1.431,1.334,1.000,-1.000 +32.000,4.118,-1.382,1.000,1.000 +33.000,1.713,0.435,1.000,-1.000 +33.000,-2.491,0.260,1.000,1.000 +34.000,0.473,-0.252,1.000,-1.000 +34.000,0.896,-0.881,1.000,0.000 +34.000,0.695,-0.351,1.000,1.000 +35.000,-0.565,1.746,1.000,-1.000 +35.000,0.335,0.235,1.000,-0.333 +35.000,-1.820,0.689,1.000,0.333 +35.000,-1.819,1.396,1.000,1.000 +36.000,0.141,-0.955,1.000,-1.000 +36.000,2.864,-0.527,1.000,1.000 +37.000,-2.260,-0.155,1.000,-1.000 +37.000,-0.230,-0.071,1.000,-0.333 +37.000,1.489,-0.274,1.000,0.333 +37.000,1.931,-0.471,1.000,1.000 +38.000,0.604,1.020,1.000,-1.000 +38.000,-2.912,0.267,1.000,1.000 +39.000,2.449,-1.737,1.000,-1.000 +40.000,0.866,-0.017,1.000,-1.000 +40.000,0.662,-1.104,1.000,-0.333 +40.000,-0.367,-0.897,1.000,0.333 +40.000,-1.341,0.205,1.000,1.000 +41.000,-2.508,0.702,1.000,-1.000 +42.000,2.165,-0.399,1.000,-1.000 +42.000,1.288,-0.953,1.000,-0.333 +42.000,1.945,-1.816,1.000,0.333 +42.000,-0.906,-0.163,1.000,1.000 +43.000,3.407,-1.241,1.000,-1.000 +43.000,-2.504,1.395,1.000,1.000 +44.000,-1.158,1.422,1.000,-1.000 +44.000,-0.602,-0.160,1.000,0.000 +44.000,-0.092,-0.261,1.000,1.000 +45.000,1.114,1.472,1.000,-1.000 +45.000,0.544,-0.196,1.000,-0.333 +45.000,1.030,-0.643,1.000,0.333 +45.000,-1.632,0.720,1.000,1.000 +46.000,-1.196,1.635,1.000,-1.000 +46.000,0.677,-0.376,1.000,-0.333 +46.000,0.168,-0.422,1.000,0.333 +46.000,0.822,-1.482,1.000,1.000 +47.000,1.987,-1.518,1.000,-1.000 +48.000,-0.806,-0.757,1.000,-1.000 +48.000,-0.140,0.522,1.000,-0.333 +48.000,0.169,0.231,1.000,0.333 +48.000,1.582,0.734,1.000,1.000 +49.000,-1.825,2.042,1.000,-1.000 +49.000,-1.142,-0.898,1.000,1.000 +50.000,2.372,-0.655,1.000,-1.000 +50.000,0.969,-1.170,1.000,0.000 +50.000,-2.230,0.112,1.000,1.000 +51.000,2.540,0.940,1.000,-1.000 +52.000,2.133,-0.635,1.000,-1.000 +53.000,0.617,-0.275,1.000,-1.000 +54.000,0.105,-0.836,1.000,-1.000 +55.000,-3.972,0.875,1.000,-1.000 +56.000,-1.098,0.295,1.000,-1.000 +56.000,-0.224,0.780,1.000,-0.333 +56.000,0.172,1.521,1.000,0.333 +56.000,1.878,-0.472,1.000,1.000 +57.000,-0.397,-0.690,1.000,-1.000 +58.000,-2.458,0.388,1.000,-1.000 +58.000,0.326,-0.290,1.000,0.000 +58.000,0.505,2.054,1.000,1.000 +59.000,1.005,-0.104,1.000,-1.000 +60.000,-1.742,0.644,1.000,-1.000 +60.000,1.910,-0.292,1.000,1.000 +61.000,1.093,0.129,1.000,-1.000 +62.000,0.523,-1.067,1.000,-1.000 +62.000,-0.128,0.598,1.000,0.000 +62.000,-0.467,-0.486,1.000,1.000 +63.000,-1.172,-0.137,1.000,-1.000 +63.000,-0.343,-0.403,1.000,0.000 +63.000,1.891,-2.279,1.000,1.000 +64.000,-3.203,2.527,1.000,-1.000 +64.000,-1.121,0.438,1.000,-0.333 +64.000,-1.466,1.320,1.000,0.333 +64.000,-0.904,-0.310,1.000,1.000 +65.000,-0.664,0.502,1.000,-1.000 +65.000,1.038,-0.732,1.000,0.000 +65.000,-0.778,0.272,1.000,1.000 +66.000,0.870,0.221,1.000,-1.000 +66.000,2.390,-1.357,1.000,-0.333 +66.000,0.289,-0.120,1.000,0.333 +66.000,-1.521,1.296,1.000,1.000 +67.000,3.606,-1.067,1.000,-1.000 +67.000,0.280,0.672,1.000,0.000 +67.000,-1.811,-0.625,1.000,1.000 +68.000,1.057,0.582,1.000,-1.000 +68.000,2.026,-1.646,1.000,-0.333 +68.000,-1.203,-0.545,1.000,0.333 +68.000,-2.955,1.209,1.000,1.000 +69.000,-2.743,1.189,1.000,-1.000 +69.000,-1.066,-0.831,1.000,-0.333 +69.000,0.610,-1.715,1.000,0.333 +69.000,0.018,-1.035,1.000,1.000 +70.000,-0.997,0.111,1.000,-1.000 +70.000,-0.681,0.943,1.000,1.000 +71.000,-1.168,0.346,1.000,-1.000 +71.000,1.966,-1.993,1.000,0.000 +71.000,0.586,0.774,1.000,1.000 +72.000,-0.605,-0.261,1.000,-1.000 +72.000,-0.345,0.591,1.000,-0.333 +72.000,-0.707,1.366,1.000,0.333 +72.000,1.443,1.531,1.000,1.000 +73.000,1.417,-1.282,1.000,-1.000 +73.000,-2.950,2.885,1.000,-0.333 +73.000,-0.006,-0.648,1.000,0.333 +73.000,-0.781,0.630,1.000,1.000 +74.000,-2.382,-0.225,1.000,-1.000 +74.000,0.015,-0.643,1.000,-0.333 +74.000,1.240,-0.901,1.000,0.333 +74.000,0.627,0.173,1.000,1.000 +75.000,-1.028,0.961,1.000,-1.000 +75.000,1.689,-0.672,1.000,1.000 +76.000,-3.912,0.794,1.000,-1.000 +76.000,1.054,-1.924,1.000,-0.333 +76.000,1.361,-0.730,1.000,0.333 +76.000,1.924,0.050,1.000,1.000 +77.000,-2.627,-0.171,1.000,-1.000 +77.000,-3.021,1.410,1.000,-0.333 +77.000,0.575,0.139,1.000,0.333 +77.000,3.089,-1.001,1.000,1.000 +78.000,-4.299,0.184,1.000,-1.000 +78.000,3.404,-1.517,1.000,1.000 +79.000,1.737,0.093,1.000,-1.000 +79.000,1.409,-1.070,1.000,-0.333 +79.000,-0.969,-0.311,1.000,0.333 +79.000,-1.929,-0.972,1.000,1.000 +80.000,-2.122,1.294,1.000,-1.000 +80.000,4.013,-2.762,1.000,1.000 +81.000,1.114,-1.246,1.000,-1.000 +81.000,1.025,-0.722,1.000,0.000 +81.000,0.761,-0.593,1.000,1.000 +82.000,1.478,0.293,1.000,-1.000 +83.000,0.758,-0.917,1.000,-1.000 +84.000,0.887,-1.866,1.000,-1.000 +85.000,-0.959,0.572,1.000,-1.000 +86.000,0.227,0.528,1.000,-1.000 +86.000,-1.771,2.595,1.000,-0.333 +86.000,0.668,0.228,1.000,0.333 +86.000,1.166,0.519,1.000,1.000 +87.000,-2.166,0.146,1.000,-1.000 +87.000,-0.160,0.734,1.000,1.000 +88.000,1.914,1.685,1.000,-1.000 +89.000,-0.454,2.314,1.000,-1.000 +89.000,-0.603,0.883,1.000,-0.333 +89.000,-2.334,1.169,1.000,0.333 +89.000,-0.591,-0.352,1.000,1.000 +90.000,0.694,-1.333,1.000,-1.000 +90.000,1.598,-1.268,1.000,0.000 +90.000,0.634,-0.334,1.000,1.000 +91.000,1.044,0.082,1.000,-1.000 +91.000,-1.212,2.227,1.000,0.000 +91.000,1.600,0.557,1.000,1.000 +92.000,-1.696,-0.431,1.000,-1.000 +92.000,2.484,0.289,1.000,1.000 +93.000,1.019,0.219,1.000,-1.000 +94.000,3.209,-0.044,1.000,-1.000 +94.000,-0.031,1.067,1.000,0.000 +94.000,-2.807,1.492,1.000,1.000 +95.000,-0.482,-0.691,1.000,-1.000 +95.000,0.493,-0.678,1.000,-0.333 +95.000,0.010,-0.555,1.000,0.333 +95.000,0.487,-0.234,1.000,1.000 +96.000,2.450,-0.586,1.000,-1.000 +96.000,1.166,-0.160,1.000,-0.333 +96.000,-0.410,1.091,1.000,0.333 +96.000,-1.241,0.189,1.000,1.000 +97.000,-2.760,0.550,1.000,-1.000 +97.000,-1.095,0.541,1.000,0.000 +97.000,1.052,-0.449,1.000,1.000 +98.000,-4.587,1.040,1.000,-1.000 +98.000,0.322,1.639,1.000,0.000 +98.000,5.680,0.163,1.000,1.000 +99.000,2.464,-1.216,1.000,-1.000 +99.000,0.568,-0.646,1.000,-0.333 +99.000,-0.308,-0.545,1.000,0.333 +99.000,0.638,-1.129,1.000,1.000 diff --git a/statsmodels/regression/tests/results/lme07.csv b/statsmodels/regression/tests/results/lme07.csv new file mode 100644 index 0000000..512c820 --- /dev/null +++ b/statsmodels/regression/tests/results/lme07.csv @@ -0,0 +1,262 @@ +groups,endog,exog_fe_0,exog_re_0,exog_re_1 +0.000,0.956,0.225,1.000,-1.000 +0.000,-0.373,0.652,1.000,1.000 +1.000,-6.467,0.497,1.000,-1.000 +1.000,3.855,-0.606,1.000,1.000 +2.000,-5.282,1.750,1.000,-1.000 +2.000,2.002,-0.298,1.000,0.000 +2.000,4.055,0.766,1.000,1.000 +3.000,-0.054,-0.878,1.000,-1.000 +3.000,-5.611,0.331,1.000,-0.333 +3.000,0.762,-0.012,1.000,0.333 +3.000,-0.227,-1.669,1.000,1.000 +4.000,1.053,-1.709,1.000,-1.000 +4.000,5.165,0.190,1.000,1.000 +5.000,1.060,-1.070,1.000,-1.000 +5.000,0.493,0.188,1.000,0.000 +5.000,2.029,0.970,1.000,1.000 +6.000,0.838,0.562,1.000,-1.000 +6.000,0.027,0.515,1.000,0.000 +6.000,3.976,-0.112,1.000,1.000 +7.000,1.951,-0.997,1.000,-1.000 +7.000,-1.909,0.001,1.000,0.000 +7.000,1.528,-0.573,1.000,1.000 +8.000,-1.573,0.103,1.000,-1.000 +8.000,-3.365,-0.239,1.000,0.000 +8.000,2.579,-0.135,1.000,1.000 +9.000,1.600,0.539,1.000,-1.000 +9.000,5.319,-1.925,1.000,1.000 +10.000,-2.121,0.967,1.000,-1.000 +10.000,3.499,-0.122,1.000,1.000 +11.000,7.187,-2.622,1.000,-1.000 +11.000,-3.982,-1.137,1.000,1.000 +12.000,0.954,-0.450,1.000,-1.000 +13.000,0.717,-0.679,1.000,-1.000 +13.000,2.812,0.586,1.000,-0.333 +13.000,-1.596,1.065,1.000,0.333 +13.000,-1.890,0.617,1.000,1.000 +14.000,-0.949,-0.354,1.000,-1.000 +15.000,4.039,0.122,1.000,-1.000 +16.000,4.809,-1.784,1.000,-1.000 +16.000,-3.137,-1.288,1.000,0.000 +16.000,-1.753,-0.573,1.000,1.000 +17.000,2.202,-0.909,1.000,-1.000 +18.000,2.401,-0.730,1.000,-1.000 +19.000,2.499,-0.916,1.000,-1.000 +19.000,-2.299,0.139,1.000,-0.333 +19.000,0.654,-1.151,1.000,0.333 +19.000,-1.829,-0.444,1.000,1.000 +20.000,-1.580,-1.753,1.000,-1.000 +20.000,1.014,-0.429,1.000,1.000 +21.000,-1.986,-1.069,1.000,-1.000 +21.000,2.812,-1.381,1.000,1.000 +22.000,-3.580,-1.580,1.000,-1.000 +22.000,-3.392,1.770,1.000,-0.333 +22.000,0.204,-0.611,1.000,0.333 +22.000,4.073,-0.244,1.000,1.000 +23.000,0.061,1.019,1.000,-1.000 +23.000,4.133,-0.287,1.000,0.000 +23.000,-4.360,-0.014,1.000,1.000 +24.000,-2.443,0.798,1.000,-1.000 +24.000,-0.443,-0.028,1.000,-0.333 +24.000,1.175,0.209,1.000,0.333 +24.000,4.716,-0.242,1.000,1.000 +25.000,1.950,-0.415,1.000,-1.000 +25.000,3.220,-1.952,1.000,-0.333 +25.000,-0.777,0.899,1.000,0.333 +25.000,2.081,0.540,1.000,1.000 +26.000,5.281,0.280,1.000,-1.000 +26.000,-0.427,1.707,1.000,-0.333 +26.000,-0.844,0.809,1.000,0.333 +26.000,-1.842,0.540,1.000,1.000 +27.000,0.820,-1.621,1.000,-1.000 +27.000,-1.527,0.904,1.000,1.000 +28.000,-3.912,3.012,1.000,-1.000 +29.000,-2.184,0.040,1.000,-1.000 +29.000,-2.662,1.494,1.000,-0.333 +29.000,2.934,-1.478,1.000,0.333 +29.000,3.886,-0.272,1.000,1.000 +30.000,-0.451,0.448,1.000,-1.000 +30.000,1.724,-1.152,1.000,-0.333 +30.000,0.048,1.266,1.000,0.333 +30.000,1.182,-0.926,1.000,1.000 +31.000,4.267,-0.585,1.000,-1.000 +31.000,-0.188,-1.548,1.000,0.000 +31.000,0.822,-0.828,1.000,1.000 +32.000,0.888,0.589,1.000,-1.000 +32.000,2.191,-0.949,1.000,0.000 +32.000,-0.566,2.013,1.000,1.000 +33.000,0.623,-0.059,1.000,-1.000 +34.000,-3.665,2.161,1.000,-1.000 +35.000,-0.417,-0.085,1.000,-1.000 +35.000,4.858,-0.423,1.000,-0.333 +35.000,1.601,0.529,1.000,0.333 +35.000,5.691,-2.461,1.000,1.000 +36.000,2.011,1.279,1.000,-1.000 +36.000,-0.254,-0.331,1.000,1.000 +37.000,1.536,-0.267,1.000,-1.000 +37.000,2.323,-1.700,1.000,0.000 +37.000,-2.400,0.644,1.000,1.000 +38.000,-1.353,0.356,1.000,-1.000 +39.000,-3.242,-1.625,1.000,-1.000 +39.000,2.041,-0.874,1.000,-0.333 +39.000,1.399,0.451,1.000,0.333 +39.000,1.565,0.287,1.000,1.000 +40.000,-3.124,0.117,1.000,-1.000 +40.000,-1.677,-0.044,1.000,0.000 +40.000,1.795,-0.126,1.000,1.000 +41.000,-8.392,1.513,1.000,-1.000 +41.000,-1.252,-0.374,1.000,0.000 +41.000,5.035,-1.005,1.000,1.000 +42.000,4.201,0.511,1.000,-1.000 +43.000,1.652,0.592,1.000,-1.000 +44.000,-1.123,1.976,1.000,-1.000 +44.000,2.912,-0.867,1.000,-0.333 +44.000,-1.131,-1.427,1.000,0.333 +44.000,1.154,0.304,1.000,1.000 +45.000,2.863,1.169,1.000,-1.000 +45.000,1.139,-0.129,1.000,0.000 +45.000,2.629,-0.154,1.000,1.000 +46.000,1.318,-1.224,1.000,-1.000 +46.000,-1.632,0.839,1.000,-0.333 +46.000,-3.146,-0.096,1.000,0.333 +46.000,1.037,0.264,1.000,1.000 +47.000,-0.301,-0.542,1.000,-1.000 +47.000,-3.886,0.714,1.000,0.000 +47.000,2.014,-0.568,1.000,1.000 +48.000,-1.617,1.238,1.000,-1.000 +48.000,-1.465,-0.237,1.000,0.000 +48.000,-0.851,-0.563,1.000,1.000 +49.000,-0.664,2.064,1.000,-1.000 +50.000,0.865,-2.508,1.000,-1.000 +50.000,-0.169,-1.642,1.000,0.000 +50.000,1.087,-0.183,1.000,1.000 +51.000,-2.962,0.839,1.000,-1.000 +51.000,2.435,-0.134,1.000,1.000 +52.000,3.901,-0.571,1.000,-1.000 +52.000,-0.798,0.980,1.000,-0.333 +52.000,-0.777,1.586,1.000,0.333 +52.000,-0.841,2.289,1.000,1.000 +53.000,0.423,-0.679,1.000,-1.000 +53.000,-1.770,0.194,1.000,-0.333 +53.000,0.941,-0.145,1.000,0.333 +53.000,-0.350,0.188,1.000,1.000 +54.000,1.475,-0.115,1.000,-1.000 +55.000,-0.188,-0.531,1.000,-1.000 +56.000,-1.045,1.062,1.000,-1.000 +56.000,1.725,-0.650,1.000,0.000 +56.000,-2.736,-0.350,1.000,1.000 +57.000,-0.862,0.751,1.000,-1.000 +57.000,1.209,-0.778,1.000,1.000 +58.000,0.491,-0.507,1.000,-1.000 +59.000,1.046,0.838,1.000,-1.000 +59.000,2.606,-0.663,1.000,1.000 +60.000,3.199,-0.413,1.000,-1.000 +60.000,0.566,-1.830,1.000,-0.333 +60.000,-2.000,-0.313,1.000,0.333 +60.000,-4.465,-1.263,1.000,1.000 +61.000,1.929,0.757,1.000,-1.000 +61.000,0.510,0.927,1.000,-0.333 +61.000,-0.932,-0.270,1.000,0.333 +61.000,2.235,1.040,1.000,1.000 +62.000,-3.503,1.655,1.000,-1.000 +62.000,0.799,-0.519,1.000,0.000 +62.000,-1.247,-1.537,1.000,1.000 +63.000,-0.628,-0.894,1.000,-1.000 +64.000,1.626,0.332,1.000,-1.000 +64.000,3.589,-1.456,1.000,1.000 +65.000,-0.699,0.172,1.000,-1.000 +65.000,1.848,-0.348,1.000,-0.333 +65.000,1.024,-1.250,1.000,0.333 +65.000,-0.245,0.026,1.000,1.000 +66.000,1.555,-1.469,1.000,-1.000 +66.000,-0.735,1.014,1.000,1.000 +67.000,-4.698,1.081,1.000,-1.000 +67.000,2.767,-0.539,1.000,0.000 +67.000,4.146,-0.047,1.000,1.000 +68.000,6.473,-0.377,1.000,-1.000 +68.000,4.701,-0.388,1.000,-0.333 +68.000,-2.551,0.858,1.000,0.333 +68.000,-6.615,0.662,1.000,1.000 +69.000,4.628,-0.415,1.000,-1.000 +69.000,-1.351,0.562,1.000,1.000 +70.000,3.351,0.099,1.000,-1.000 +70.000,-1.983,-0.456,1.000,1.000 +71.000,0.010,-0.764,1.000,-1.000 +71.000,1.035,-1.340,1.000,-0.333 +71.000,-0.883,0.692,1.000,0.333 +71.000,0.003,0.770,1.000,1.000 +72.000,5.947,-0.896,1.000,-1.000 +72.000,0.826,0.477,1.000,-0.333 +72.000,-0.521,-0.111,1.000,0.333 +72.000,0.821,-0.086,1.000,1.000 +73.000,2.296,1.003,1.000,-1.000 +73.000,-0.493,0.580,1.000,0.000 +73.000,-1.035,-1.166,1.000,1.000 +74.000,-2.346,-0.326,1.000,-1.000 +75.000,-0.887,-0.481,1.000,-1.000 +75.000,-0.760,-0.538,1.000,0.000 +75.000,3.571,-0.110,1.000,1.000 +76.000,0.854,-0.472,1.000,-1.000 +76.000,4.549,-0.348,1.000,0.000 +76.000,3.841,-0.536,1.000,1.000 +77.000,4.682,-1.379,1.000,-1.000 +78.000,-0.958,0.536,1.000,-1.000 +78.000,0.421,2.091,1.000,-0.333 +78.000,1.316,-0.136,1.000,0.333 +78.000,0.225,-0.523,1.000,1.000 +79.000,-0.204,0.806,1.000,-1.000 +79.000,-2.008,-0.315,1.000,-0.333 +79.000,1.538,-1.347,1.000,0.333 +79.000,-0.961,1.169,1.000,1.000 +80.000,-4.958,2.752,1.000,-1.000 +80.000,-2.561,0.954,1.000,0.000 +80.000,2.200,-0.340,1.000,1.000 +81.000,-1.603,1.149,1.000,-1.000 +81.000,0.067,-1.134,1.000,0.000 +81.000,-5.339,1.852,1.000,1.000 +82.000,0.064,-0.669,1.000,-1.000 +82.000,-0.408,0.830,1.000,-0.333 +82.000,0.952,-0.607,1.000,0.333 +82.000,0.756,-0.595,1.000,1.000 +83.000,-0.897,0.779,1.000,-1.000 +84.000,1.081,1.091,1.000,-1.000 +84.000,-2.240,0.564,1.000,1.000 +85.000,-0.373,0.580,1.000,-1.000 +85.000,-2.999,0.732,1.000,1.000 +86.000,2.262,0.370,1.000,-1.000 +86.000,2.417,-0.324,1.000,-0.333 +86.000,-0.584,0.226,1.000,0.333 +86.000,-2.753,0.144,1.000,1.000 +87.000,-2.151,-0.771,1.000,-1.000 +87.000,1.365,-0.817,1.000,1.000 +88.000,-0.418,1.298,1.000,-1.000 +89.000,1.044,-0.866,1.000,-1.000 +89.000,-1.442,0.139,1.000,-0.333 +89.000,-0.619,-1.384,1.000,0.333 +89.000,0.937,-0.319,1.000,1.000 +90.000,-3.983,0.148,1.000,-1.000 +90.000,7.639,-2.599,1.000,1.000 +91.000,2.532,1.333,1.000,-1.000 +91.000,-2.020,0.309,1.000,0.000 +91.000,-3.486,0.981,1.000,1.000 +92.000,0.716,0.092,1.000,-1.000 +93.000,-2.440,1.172,1.000,-1.000 +93.000,-4.540,-0.652,1.000,-0.333 +93.000,2.533,-1.288,1.000,0.333 +93.000,-1.774,0.324,1.000,1.000 +94.000,1.668,0.362,1.000,-1.000 +94.000,1.521,-0.889,1.000,1.000 +95.000,3.082,0.567,1.000,-1.000 +95.000,-2.176,0.335,1.000,0.000 +95.000,-2.038,-0.198,1.000,1.000 +96.000,-2.657,0.554,1.000,-1.000 +96.000,-3.890,-0.045,1.000,-0.333 +96.000,4.751,-0.235,1.000,0.333 +96.000,3.640,-0.990,1.000,1.000 +97.000,-2.000,-0.547,1.000,-1.000 +98.000,-0.631,-0.462,1.000,-1.000 +98.000,4.359,-0.336,1.000,0.000 +98.000,3.145,-0.108,1.000,1.000 +99.000,-1.830,-0.096,1.000,-1.000 +99.000,2.562,-1.160,1.000,1.000 diff --git a/statsmodels/regression/tests/results/lme08.csv b/statsmodels/regression/tests/results/lme08.csv new file mode 100644 index 0000000..a57a888 --- /dev/null +++ b/statsmodels/regression/tests/results/lme08.csv @@ -0,0 +1,250 @@ +groups,endog,exog_fe_0,exog_fe_1,exog_re_0,exog_re_1 +0.000,0.777,0.226,0.119,1.000,-1.000 +0.000,0.668,-0.688,-0.838,1.000,0.000 +0.000,2.434,-1.385,1.237,1.000,1.000 +1.000,1.152,-0.850,-0.049,1.000,-1.000 +2.000,3.207,1.452,3.131,1.000,-1.000 +2.000,1.388,0.260,0.323,1.000,-0.333 +2.000,1.013,0.711,1.289,1.000,0.333 +2.000,-3.679,1.430,-0.903,1.000,1.000 +3.000,-0.189,0.047,-0.098,1.000,-1.000 +4.000,0.153,1.393,0.180,1.000,-1.000 +5.000,-1.770,-0.048,-0.007,1.000,-1.000 +6.000,2.167,-0.553,1.173,1.000,-1.000 +6.000,3.769,-2.310,1.125,1.000,0.000 +6.000,-2.020,-1.554,-1.778,1.000,1.000 +7.000,2.430,-1.318,-0.272,1.000,-1.000 +7.000,2.550,-0.990,-0.057,1.000,-0.333 +7.000,-1.336,0.562,-0.841,1.000,0.333 +7.000,1.148,-0.362,0.754,1.000,1.000 +8.000,-0.086,0.663,0.580,1.000,-1.000 +8.000,0.225,1.486,0.551,1.000,-0.333 +8.000,-0.055,-0.725,-1.064,1.000,0.333 +8.000,-1.782,0.846,-0.331,1.000,1.000 +9.000,1.842,1.388,1.886,1.000,-1.000 +9.000,0.253,0.270,0.412,1.000,0.000 +9.000,-4.538,1.911,-1.148,1.000,1.000 +10.000,-0.904,-1.640,-1.437,1.000,-1.000 +10.000,4.548,-0.077,0.414,1.000,1.000 +11.000,-2.222,0.621,-0.510,1.000,-1.000 +11.000,-0.976,-0.371,-2.946,1.000,0.000 +11.000,0.795,0.816,0.334,1.000,1.000 +12.000,0.755,-0.003,-0.348,1.000,-1.000 +12.000,-1.465,0.673,-0.028,1.000,1.000 +13.000,1.610,0.042,0.418,1.000,-1.000 +13.000,1.234,-0.494,-0.162,1.000,0.000 +13.000,0.308,0.007,0.641,1.000,1.000 +14.000,3.170,-2.004,-1.610,1.000,-1.000 +14.000,-0.009,-1.477,-1.256,1.000,0.000 +14.000,-4.860,-0.024,-1.696,1.000,1.000 +15.000,-3.676,1.193,0.483,1.000,-1.000 +16.000,0.365,-1.327,-0.107,1.000,-1.000 +17.000,-3.458,1.748,-0.377,1.000,-1.000 +17.000,-0.260,-0.309,0.318,1.000,0.000 +17.000,4.843,-1.368,0.689,1.000,1.000 +18.000,-0.685,-0.675,-0.638,1.000,-1.000 +18.000,0.819,-0.076,-0.457,1.000,1.000 +19.000,-1.013,0.951,0.878,1.000,-1.000 +19.000,-2.059,0.513,-1.875,1.000,0.000 +19.000,4.579,-2.350,0.902,1.000,1.000 +20.000,1.013,-0.459,-0.929,1.000,-1.000 +20.000,0.461,-0.715,-0.759,1.000,-0.333 +20.000,1.264,0.741,2.077,1.000,0.333 +20.000,1.118,-0.938,-0.416,1.000,1.000 +21.000,-0.068,0.558,0.659,1.000,-1.000 +22.000,-1.006,-0.069,-0.374,1.000,-1.000 +22.000,-2.207,0.026,-1.502,1.000,0.000 +22.000,-0.184,-0.421,-0.313,1.000,1.000 +23.000,-0.139,0.018,-0.513,1.000,-1.000 +23.000,-0.429,1.063,0.770,1.000,-0.333 +23.000,1.638,-0.786,0.545,1.000,0.333 +23.000,-0.652,0.199,-0.815,1.000,1.000 +24.000,2.237,-0.109,1.190,1.000,-1.000 +24.000,1.669,-0.757,0.023,1.000,-0.333 +24.000,-0.702,-0.575,-0.799,1.000,0.333 +24.000,-1.758,1.497,0.456,1.000,1.000 +25.000,-0.299,0.474,0.233,1.000,-1.000 +25.000,2.150,-1.237,-0.792,1.000,1.000 +26.000,-2.561,0.773,0.580,1.000,-1.000 +26.000,-0.386,-0.748,-0.243,1.000,0.000 +26.000,0.719,-0.322,-1.457,1.000,1.000 +27.000,-1.326,0.310,0.899,1.000,-1.000 +27.000,-1.348,1.477,-1.058,1.000,1.000 +28.000,0.565,-0.660,-0.880,1.000,-1.000 +28.000,1.875,-0.281,1.411,1.000,1.000 +29.000,0.674,-0.345,-0.072,1.000,-1.000 +29.000,0.296,0.704,-0.398,1.000,1.000 +30.000,-1.657,-0.147,-1.624,1.000,-1.000 +30.000,-1.296,1.728,-0.841,1.000,1.000 +31.000,2.404,-0.935,0.365,1.000,-1.000 +32.000,3.640,-1.235,0.758,1.000,-1.000 +32.000,-1.319,-0.602,-0.842,1.000,0.000 +32.000,-4.137,0.629,-1.719,1.000,1.000 +33.000,-1.005,-0.049,0.516,1.000,-1.000 +34.000,0.981,0.249,0.251,1.000,-1.000 +34.000,-0.553,0.170,-0.129,1.000,0.000 +34.000,-1.433,0.681,0.187,1.000,1.000 +35.000,2.676,-1.094,-0.236,1.000,-1.000 +35.000,-1.978,-0.217,0.022,1.000,1.000 +36.000,3.828,-1.790,-0.696,1.000,-1.000 +37.000,2.331,0.523,0.307,1.000,-1.000 +37.000,-0.665,0.215,-1.622,1.000,-0.333 +37.000,1.530,-0.832,-0.077,1.000,0.333 +37.000,-2.696,1.762,-0.177,1.000,1.000 +38.000,1.465,-0.556,-0.131,1.000,-1.000 +39.000,-2.328,-0.586,0.245,1.000,-1.000 +40.000,-0.324,-0.753,-0.472,1.000,-1.000 +40.000,-1.095,0.077,-0.725,1.000,-0.333 +40.000,2.293,0.121,2.041,1.000,0.333 +40.000,2.556,-0.740,0.234,1.000,1.000 +41.000,3.733,-1.012,0.702,1.000,-1.000 +41.000,-2.621,1.252,0.478,1.000,1.000 +42.000,-0.644,0.314,-1.894,1.000,-1.000 +43.000,-0.375,-0.804,0.046,1.000,-1.000 +43.000,-0.573,0.274,0.273,1.000,0.000 +43.000,-0.775,0.147,-1.698,1.000,1.000 +44.000,-4.065,1.787,-2.417,1.000,-1.000 +44.000,-0.267,-0.610,-0.617,1.000,-0.333 +44.000,1.260,-0.502,0.391,1.000,0.333 +44.000,2.442,-1.245,1.636,1.000,1.000 +45.000,1.322,-1.969,-1.464,1.000,-1.000 +45.000,-1.190,1.394,-0.423,1.000,-0.333 +45.000,0.239,-1.044,-0.650,1.000,0.333 +45.000,-1.134,0.879,0.963,1.000,1.000 +46.000,-0.265,-0.028,0.481,1.000,-1.000 +47.000,0.561,0.737,0.982,1.000,-1.000 +47.000,0.541,-1.845,-0.338,1.000,1.000 +48.000,-2.381,-0.946,-0.766,1.000,-1.000 +49.000,1.219,-0.047,-0.360,1.000,-1.000 +49.000,1.759,0.423,1.061,1.000,-0.333 +49.000,-1.157,1.382,-0.110,1.000,0.333 +49.000,-0.287,0.614,0.730,1.000,1.000 +50.000,2.066,-0.725,0.141,1.000,-1.000 +50.000,-0.046,-0.293,0.140,1.000,0.000 +50.000,-5.648,1.295,-0.842,1.000,1.000 +51.000,-2.119,0.949,0.401,1.000,-1.000 +51.000,-2.047,0.495,-1.534,1.000,0.000 +51.000,1.000,0.306,-0.208,1.000,1.000 +52.000,0.546,-0.068,0.817,1.000,-1.000 +52.000,-0.568,-0.328,-1.460,1.000,0.000 +52.000,1.389,1.213,2.062,1.000,1.000 +53.000,-1.587,0.760,0.196,1.000,-1.000 +53.000,-0.414,0.213,-0.582,1.000,0.000 +53.000,-0.162,-1.616,-1.286,1.000,1.000 +54.000,-0.674,-0.180,0.633,1.000,-1.000 +55.000,0.769,-0.491,0.701,1.000,-1.000 +55.000,0.435,-1.170,0.155,1.000,-0.333 +55.000,0.435,-0.840,0.131,1.000,0.333 +55.000,3.391,-2.488,0.839,1.000,1.000 +56.000,-3.295,1.567,-0.718,1.000,-1.000 +56.000,0.936,-0.016,0.317,1.000,0.000 +56.000,0.729,0.511,0.831,1.000,1.000 +57.000,1.456,-0.715,0.560,1.000,-1.000 +58.000,3.161,-0.710,2.370,1.000,-1.000 +58.000,-1.712,0.684,-1.451,1.000,-0.333 +58.000,0.221,0.030,-0.272,1.000,0.333 +58.000,1.115,-0.909,-0.676,1.000,1.000 +59.000,-3.516,-0.161,0.667,1.000,-1.000 +60.000,0.351,1.398,1.520,1.000,-1.000 +60.000,2.944,-1.788,0.592,1.000,0.000 +60.000,-1.036,0.499,-0.863,1.000,1.000 +61.000,2.823,-0.497,-0.091,1.000,-1.000 +61.000,-3.665,0.925,0.013,1.000,1.000 +62.000,1.080,-0.295,-0.765,1.000,-1.000 +62.000,-1.297,0.089,-0.254,1.000,1.000 +63.000,-1.082,-0.038,-0.214,1.000,-1.000 +63.000,0.214,0.390,-0.783,1.000,1.000 +64.000,-0.521,-0.313,0.255,1.000,-1.000 +64.000,0.961,0.771,0.908,1.000,1.000 +65.000,0.548,0.037,1.100,1.000,-1.000 +65.000,0.826,-0.535,-0.593,1.000,1.000 +66.000,-0.571,0.725,-1.141,1.000,-1.000 +67.000,3.956,-1.548,-0.604,1.000,-1.000 +67.000,-1.529,0.787,-0.934,1.000,0.000 +67.000,-1.885,-0.294,0.398,1.000,1.000 +68.000,-4.415,0.634,-1.196,1.000,-1.000 +69.000,2.832,-1.267,1.641,1.000,-1.000 +69.000,0.848,-2.451,-0.047,1.000,1.000 +70.000,-1.568,1.277,0.961,1.000,-1.000 +70.000,-2.134,0.959,-0.906,1.000,0.000 +70.000,-1.001,0.182,-0.631,1.000,1.000 +71.000,0.197,1.375,-0.401,1.000,-1.000 +71.000,2.064,-1.783,-0.350,1.000,0.000 +71.000,-4.835,1.192,-1.899,1.000,1.000 +72.000,1.303,-0.191,0.643,1.000,-1.000 +72.000,1.145,-1.871,-0.281,1.000,1.000 +73.000,-0.692,0.053,0.355,1.000,-1.000 +73.000,1.527,-0.643,1.653,1.000,-0.333 +73.000,-1.585,0.284,-1.778,1.000,0.333 +73.000,-0.194,0.198,-0.268,1.000,1.000 +74.000,-1.039,0.047,0.059,1.000,-1.000 +74.000,-1.135,-0.689,-1.215,1.000,-0.333 +74.000,1.397,-1.436,0.648,1.000,0.333 +74.000,-1.895,0.103,-1.226,1.000,1.000 +75.000,4.360,-1.501,0.123,1.000,-1.000 +76.000,1.308,-0.589,0.268,1.000,-1.000 +76.000,-2.585,1.096,-2.087,1.000,-0.333 +76.000,-3.738,1.762,-1.628,1.000,0.333 +76.000,-0.363,-0.145,0.052,1.000,1.000 +77.000,0.999,0.205,-0.245,1.000,-1.000 +77.000,-1.424,0.759,-0.140,1.000,0.000 +77.000,-1.036,-0.742,0.902,1.000,1.000 +78.000,-1.922,0.836,-1.060,1.000,-1.000 +78.000,-1.852,0.834,-0.184,1.000,0.000 +78.000,-2.804,1.870,0.398,1.000,1.000 +79.000,-1.254,0.900,0.128,1.000,-1.000 +80.000,-3.114,0.138,-1.421,1.000,-1.000 +80.000,-0.633,0.981,-1.037,1.000,1.000 +81.000,-1.116,-0.426,-0.713,1.000,-1.000 +81.000,-3.234,0.612,-1.047,1.000,-0.333 +81.000,-0.372,1.356,0.659,1.000,0.333 +81.000,1.750,0.338,0.767,1.000,1.000 +82.000,1.079,-0.358,-1.130,1.000,-1.000 +83.000,-2.740,0.843,-0.062,1.000,-1.000 +83.000,-2.059,0.985,0.519,1.000,-0.333 +83.000,-2.009,1.896,-0.038,1.000,0.333 +83.000,2.271,-1.126,0.595,1.000,1.000 +84.000,0.645,-0.111,-0.324,1.000,-1.000 +84.000,-1.093,-0.261,0.184,1.000,1.000 +85.000,-2.388,0.675,0.121,1.000,-1.000 +86.000,2.037,-1.390,-0.047,1.000,-1.000 +86.000,-1.112,0.340,0.267,1.000,-0.333 +86.000,-0.640,-0.671,-1.501,1.000,0.333 +86.000,-0.710,0.089,0.564,1.000,1.000 +87.000,4.875,-0.006,1.584,1.000,-1.000 +87.000,2.877,-1.120,1.338,1.000,-0.333 +87.000,-4.253,1.106,-1.501,1.000,0.333 +87.000,-1.612,-1.484,0.503,1.000,1.000 +88.000,0.037,0.624,-1.329,1.000,-1.000 +88.000,-1.847,1.211,0.565,1.000,0.000 +88.000,-1.433,-0.564,-0.442,1.000,1.000 +89.000,1.371,0.266,0.302,1.000,-1.000 +89.000,1.057,-0.778,-0.232,1.000,-0.333 +89.000,0.058,0.407,0.992,1.000,0.333 +89.000,-2.733,0.699,0.176,1.000,1.000 +90.000,-0.106,0.335,0.355,1.000,-1.000 +90.000,3.085,-0.260,1.234,1.000,-0.333 +90.000,1.217,0.425,-0.430,1.000,0.333 +90.000,3.758,-1.899,0.672,1.000,1.000 +91.000,-2.442,0.974,0.091,1.000,-1.000 +91.000,0.487,1.382,-0.366,1.000,1.000 +92.000,-1.665,-0.015,-0.546,1.000,-1.000 +92.000,1.376,-0.439,0.036,1.000,1.000 +93.000,-2.704,1.840,1.280,1.000,-1.000 +93.000,-0.712,-0.999,-0.543,1.000,-0.333 +93.000,1.324,-0.624,-0.340,1.000,0.333 +93.000,1.073,1.407,-0.710,1.000,1.000 +94.000,0.287,1.054,-0.920,1.000,-1.000 +94.000,2.204,-0.435,0.461,1.000,-0.333 +94.000,-1.302,0.691,-0.365,1.000,0.333 +94.000,-1.553,-1.078,0.189,1.000,1.000 +95.000,1.743,-1.625,0.173,1.000,-1.000 +96.000,-2.172,-0.853,-0.690,1.000,-1.000 +96.000,2.790,0.787,0.962,1.000,1.000 +97.000,-1.167,-1.824,-1.792,1.000,-1.000 +97.000,0.689,-0.244,-0.668,1.000,0.000 +97.000,3.417,-0.370,0.476,1.000,1.000 +98.000,3.504,-0.889,-0.964,1.000,-1.000 +98.000,-2.580,0.520,-2.166,1.000,0.000 +98.000,-4.143,1.268,0.899,1.000,1.000 +99.000,-2.621,-0.222,1.006,1.000,-1.000 diff --git a/statsmodels/regression/tests/results/lme09.csv b/statsmodels/regression/tests/results/lme09.csv new file mode 100644 index 0000000..0fb53f2 --- /dev/null +++ b/statsmodels/regression/tests/results/lme09.csv @@ -0,0 +1,256 @@ +groups,endog,exog_fe_0,exog_fe_1,exog_re_0,exog_re_1 +0.000,-2.085,0.228,-1.832,1.000,-1.000 +0.000,-1.116,0.941,-0.458,1.000,1.000 +1.000,-1.645,-0.936,-0.938,1.000,-1.000 +2.000,-1.119,-0.127,-0.060,1.000,-1.000 +2.000,2.484,-2.143,0.554,1.000,0.000 +2.000,0.126,-1.350,-0.140,1.000,1.000 +3.000,1.042,0.175,0.297,1.000,-1.000 +3.000,1.083,0.791,0.245,1.000,0.000 +3.000,0.504,-0.248,-0.571,1.000,1.000 +4.000,-1.346,0.744,-1.149,1.000,-1.000 +4.000,1.897,0.628,0.369,1.000,0.000 +4.000,-6.123,1.349,-0.511,1.000,1.000 +5.000,1.611,-0.640,0.859,1.000,-1.000 +5.000,-2.997,-0.746,-1.967,1.000,-0.333 +5.000,-0.630,-0.893,0.653,1.000,0.333 +5.000,-3.008,0.421,-0.126,1.000,1.000 +6.000,-1.819,1.188,-0.047,1.000,-1.000 +6.000,-4.641,0.013,-1.462,1.000,1.000 +7.000,-4.147,0.181,-2.647,1.000,-1.000 +7.000,-1.496,0.738,1.765,1.000,0.000 +7.000,-3.076,0.892,0.955,1.000,1.000 +8.000,0.832,0.111,0.253,1.000,-1.000 +8.000,-2.237,-1.027,0.580,1.000,-0.333 +8.000,-0.076,1.122,1.014,1.000,0.333 +8.000,2.908,-1.441,-0.184,1.000,1.000 +9.000,-1.044,-0.402,0.027,1.000,-1.000 +10.000,-2.172,-1.824,-0.492,1.000,-1.000 +10.000,-1.402,0.779,-0.255,1.000,0.000 +10.000,0.300,-0.044,-0.252,1.000,1.000 +11.000,1.044,0.658,-0.373,1.000,-1.000 +11.000,0.900,1.364,1.610,1.000,0.000 +11.000,-3.934,0.299,0.384,1.000,1.000 +12.000,3.039,-0.488,0.789,1.000,-1.000 +13.000,0.273,-0.072,0.517,1.000,-1.000 +13.000,-3.914,1.097,-0.545,1.000,-0.333 +13.000,-1.637,1.255,0.513,1.000,0.333 +13.000,0.190,0.878,0.098,1.000,1.000 +14.000,-1.285,0.563,-1.512,1.000,-1.000 +14.000,-1.042,2.409,0.497,1.000,1.000 +15.000,-4.393,-0.510,0.588,1.000,-1.000 +16.000,-4.411,0.211,-1.125,1.000,-1.000 +17.000,-2.712,-0.666,0.420,1.000,-1.000 +17.000,-1.146,1.273,-1.453,1.000,-0.333 +17.000,-1.766,1.280,-0.561,1.000,0.333 +17.000,0.673,0.180,0.789,1.000,1.000 +18.000,-1.640,0.215,-0.735,1.000,-1.000 +18.000,1.698,-0.668,0.147,1.000,-0.333 +18.000,0.737,0.397,-0.374,1.000,0.333 +18.000,1.432,0.864,-0.265,1.000,1.000 +19.000,1.689,0.749,0.565,1.000,-1.000 +19.000,-1.319,1.768,0.428,1.000,0.000 +19.000,3.550,-1.206,0.302,1.000,1.000 +20.000,0.311,-1.024,-1.333,1.000,-1.000 +20.000,0.039,1.130,0.699,1.000,1.000 +21.000,-6.414,0.690,0.350,1.000,-1.000 +22.000,-4.733,1.008,0.149,1.000,-1.000 +23.000,-4.620,0.147,-0.696,1.000,-1.000 +23.000,-0.992,1.110,0.724,1.000,-0.333 +23.000,5.161,-0.262,0.184,1.000,0.333 +23.000,-1.167,0.826,-0.933,1.000,1.000 +24.000,3.101,-0.083,0.058,1.000,-1.000 +24.000,1.268,0.138,0.109,1.000,0.000 +24.000,0.046,-0.216,0.344,1.000,1.000 +25.000,2.545,-0.762,-0.159,1.000,-1.000 +25.000,5.586,-1.554,0.578,1.000,-0.333 +25.000,0.866,-0.049,-1.229,1.000,0.333 +25.000,-5.402,1.010,-1.210,1.000,1.000 +26.000,0.789,-0.247,-0.092,1.000,-1.000 +26.000,-2.489,0.730,1.094,1.000,-0.333 +26.000,-2.848,1.083,0.904,1.000,0.333 +26.000,-3.965,0.155,-0.002,1.000,1.000 +27.000,0.951,1.710,-0.016,1.000,-1.000 +28.000,2.419,1.041,0.684,1.000,-1.000 +28.000,0.814,1.159,0.116,1.000,0.000 +28.000,-1.083,1.756,0.243,1.000,1.000 +29.000,-1.225,-0.006,1.841,1.000,-1.000 +29.000,3.304,-0.716,0.323,1.000,-0.333 +29.000,2.128,0.845,-0.601,1.000,0.333 +29.000,1.582,-1.193,-0.335,1.000,1.000 +30.000,1.166,-0.356,-2.466,1.000,-1.000 +30.000,0.920,1.091,-0.277,1.000,0.000 +30.000,-2.743,1.245,0.735,1.000,1.000 +31.000,-1.347,-1.103,-0.815,1.000,-1.000 +31.000,-1.804,0.537,-0.896,1.000,-0.333 +31.000,5.866,-1.305,0.677,1.000,0.333 +31.000,0.236,0.409,-2.439,1.000,1.000 +32.000,2.302,-0.956,-0.652,1.000,-1.000 +33.000,-2.895,0.945,-0.144,1.000,-1.000 +33.000,-1.749,0.035,-1.685,1.000,-0.333 +33.000,-1.569,0.471,0.458,1.000,0.333 +33.000,-2.095,0.256,-0.611,1.000,1.000 +34.000,-1.804,-1.133,-0.392,1.000,-1.000 +34.000,1.383,-0.868,-0.618,1.000,0.000 +34.000,2.100,-0.397,-1.069,1.000,1.000 +35.000,0.138,0.508,0.639,1.000,-1.000 +35.000,2.027,-0.645,0.560,1.000,1.000 +36.000,1.438,0.052,-0.972,1.000,-1.000 +36.000,0.555,1.058,-0.692,1.000,0.000 +36.000,-0.470,0.725,0.821,1.000,1.000 +37.000,-0.723,-1.043,-0.418,1.000,-1.000 +37.000,-2.431,-0.086,-0.438,1.000,-0.333 +37.000,-0.080,0.447,2.246,1.000,0.333 +37.000,2.503,0.281,0.981,1.000,1.000 +38.000,0.046,0.182,0.654,1.000,-1.000 +38.000,-4.148,-1.650,-1.494,1.000,1.000 +39.000,-4.086,-0.095,0.112,1.000,-1.000 +40.000,1.831,0.086,-0.476,1.000,-1.000 +40.000,-4.074,-0.377,0.067,1.000,-0.333 +40.000,-1.041,-1.019,1.312,1.000,0.333 +40.000,-4.760,0.018,-1.448,1.000,1.000 +41.000,-4.710,-0.830,0.584,1.000,-1.000 +41.000,3.565,-0.808,1.178,1.000,-0.333 +41.000,-1.499,-0.132,0.371,1.000,0.333 +41.000,-1.031,2.259,-0.122,1.000,1.000 +42.000,-1.176,1.290,0.022,1.000,-1.000 +42.000,-0.280,-0.241,-1.119,1.000,0.000 +42.000,-1.686,0.610,-0.580,1.000,1.000 +43.000,7.159,-0.731,1.121,1.000,-1.000 +44.000,3.253,-3.057,-0.735,1.000,-1.000 +45.000,-3.578,0.873,0.643,1.000,-1.000 +45.000,-1.354,1.329,0.220,1.000,0.000 +45.000,-0.492,1.340,1.013,1.000,1.000 +46.000,-0.360,-0.772,0.453,1.000,-1.000 +47.000,-1.990,0.578,0.376,1.000,-1.000 +47.000,-3.048,-0.287,-1.613,1.000,0.000 +47.000,2.491,-0.037,-1.069,1.000,1.000 +48.000,-0.075,-1.003,-0.540,1.000,-1.000 +48.000,-0.447,-0.423,-1.788,1.000,-0.333 +48.000,6.918,-0.548,-0.108,1.000,0.333 +48.000,3.689,0.217,0.169,1.000,1.000 +49.000,-3.406,-0.282,0.428,1.000,-1.000 +50.000,-0.885,-1.051,-0.510,1.000,-1.000 +50.000,-2.335,-0.872,0.066,1.000,-0.333 +50.000,0.847,0.697,-0.499,1.000,0.333 +50.000,-0.794,1.597,0.395,1.000,1.000 +51.000,2.972,-0.353,1.232,1.000,-1.000 +51.000,-2.988,-0.403,0.571,1.000,0.000 +51.000,0.256,-0.581,-0.212,1.000,1.000 +52.000,0.633,0.157,1.377,1.000,-1.000 +52.000,1.770,1.083,0.275,1.000,1.000 +53.000,3.177,-0.796,-0.110,1.000,-1.000 +53.000,2.932,-1.287,1.705,1.000,1.000 +54.000,1.668,-0.630,1.127,1.000,-1.000 +55.000,-1.316,1.263,0.383,1.000,-1.000 +55.000,-2.160,1.880,0.699,1.000,0.000 +55.000,3.768,-0.331,0.165,1.000,1.000 +56.000,5.141,-0.522,-0.198,1.000,-1.000 +57.000,-1.861,-1.380,0.579,1.000,-1.000 +58.000,-5.378,0.861,-0.098,1.000,-1.000 +58.000,6.331,-0.853,1.294,1.000,1.000 +59.000,5.145,0.437,-1.283,1.000,-1.000 +59.000,2.510,1.117,1.244,1.000,-0.333 +59.000,-0.592,1.150,0.125,1.000,0.333 +59.000,-4.273,-0.544,-0.623,1.000,1.000 +60.000,0.766,-1.469,0.978,1.000,-1.000 +60.000,-1.810,-0.987,0.384,1.000,-0.333 +60.000,-2.725,-1.098,0.201,1.000,0.333 +60.000,3.021,-1.883,0.306,1.000,1.000 +61.000,0.013,-0.613,-0.951,1.000,-1.000 +61.000,1.895,-0.066,-0.648,1.000,-0.333 +61.000,-2.436,-1.249,-0.059,1.000,0.333 +61.000,-5.704,0.754,-1.450,1.000,1.000 +62.000,-3.438,1.542,-0.362,1.000,-1.000 +62.000,-4.995,2.133,-0.238,1.000,-0.333 +62.000,-1.742,-0.542,-1.255,1.000,0.333 +62.000,-0.316,1.215,2.195,1.000,1.000 +63.000,-0.159,1.085,0.506,1.000,-1.000 +63.000,-0.178,-0.688,-0.158,1.000,1.000 +64.000,-3.181,0.277,1.330,1.000,-1.000 +64.000,-2.002,1.442,-0.215,1.000,-0.333 +64.000,3.923,-2.266,-0.234,1.000,0.333 +64.000,5.129,-0.474,0.422,1.000,1.000 +65.000,-0.791,-0.695,-0.250,1.000,-1.000 +65.000,-2.527,1.213,-0.692,1.000,0.000 +65.000,5.013,-0.751,0.957,1.000,1.000 +66.000,-1.681,0.105,0.942,1.000,-1.000 +67.000,1.053,0.786,0.399,1.000,-1.000 +68.000,1.723,-0.449,0.874,1.000,-1.000 +68.000,3.170,-0.392,0.235,1.000,1.000 +69.000,0.154,-0.954,1.238,1.000,-1.000 +69.000,-0.882,-1.379,-2.171,1.000,-0.333 +69.000,2.014,0.110,-1.090,1.000,0.333 +69.000,4.333,0.842,0.877,1.000,1.000 +70.000,-1.528,-1.003,-0.203,1.000,-1.000 +71.000,-3.955,1.279,-0.535,1.000,-1.000 +71.000,-0.993,1.013,-0.352,1.000,-0.333 +71.000,-5.209,0.599,-1.591,1.000,0.333 +71.000,-4.534,0.733,-0.621,1.000,1.000 +72.000,-0.685,0.041,1.258,1.000,-1.000 +72.000,-2.293,1.046,-1.613,1.000,-0.333 +72.000,-1.837,0.305,0.155,1.000,0.333 +72.000,4.543,-1.172,-0.168,1.000,1.000 +73.000,-1.257,1.217,-1.605,1.000,-1.000 +73.000,0.337,-1.545,-1.095,1.000,-0.333 +73.000,-0.091,-0.430,-0.533,1.000,0.333 +73.000,0.984,0.206,-0.120,1.000,1.000 +74.000,-1.249,-0.438,0.109,1.000,-1.000 +74.000,1.641,0.133,0.427,1.000,0.000 +74.000,1.201,0.337,0.088,1.000,1.000 +75.000,1.835,-1.487,-0.363,1.000,-1.000 +76.000,-5.794,1.334,-1.960,1.000,-1.000 +77.000,-2.859,0.592,0.392,1.000,-1.000 +78.000,5.421,-0.852,0.612,1.000,-1.000 +79.000,0.800,-0.634,-2.157,1.000,-1.000 +79.000,2.294,-0.276,1.507,1.000,1.000 +80.000,-1.715,-1.276,0.454,1.000,-1.000 +80.000,5.957,-1.542,-0.815,1.000,1.000 +81.000,-0.010,-0.490,0.048,1.000,-1.000 +82.000,6.529,-1.195,0.504,1.000,-1.000 +82.000,3.762,-0.525,-0.403,1.000,-0.333 +82.000,-2.497,0.144,-1.162,1.000,0.333 +82.000,-3.690,-0.250,0.535,1.000,1.000 +83.000,-0.716,0.171,0.794,1.000,-1.000 +83.000,-5.500,0.621,-0.630,1.000,1.000 +84.000,1.268,-0.508,0.639,1.000,-1.000 +84.000,-3.380,1.097,-1.018,1.000,0.000 +84.000,0.964,-0.555,0.798,1.000,1.000 +85.000,-5.261,-0.448,-1.082,1.000,-1.000 +85.000,-0.068,-2.613,1.286,1.000,-0.333 +85.000,-2.485,1.029,-0.059,1.000,0.333 +85.000,7.246,-0.795,1.996,1.000,1.000 +86.000,-0.555,-0.038,1.374,1.000,-1.000 +86.000,-1.793,0.525,1.401,1.000,0.000 +86.000,-1.671,-1.841,-0.392,1.000,1.000 +87.000,2.710,-0.850,1.376,1.000,-1.000 +87.000,-2.133,1.080,0.308,1.000,0.000 +87.000,-3.974,1.127,-1.135,1.000,1.000 +88.000,-0.002,-0.172,-1.607,1.000,-1.000 +88.000,2.513,-0.700,-1.529,1.000,1.000 +89.000,-7.392,0.282,-1.173,1.000,-1.000 +89.000,-1.254,-0.347,-0.887,1.000,-0.333 +89.000,8.474,-1.648,0.656,1.000,0.333 +89.000,2.076,-0.917,1.022,1.000,1.000 +90.000,-3.688,-0.577,0.978,1.000,-1.000 +90.000,-4.005,0.754,-0.411,1.000,-0.333 +90.000,6.685,-2.911,-0.078,1.000,0.333 +90.000,-1.652,0.515,-0.399,1.000,1.000 +91.000,4.605,-1.010,-0.201,1.000,-1.000 +91.000,-5.878,0.651,-0.420,1.000,1.000 +92.000,0.379,-0.101,0.513,1.000,-1.000 +92.000,1.048,-0.199,-0.120,1.000,0.000 +92.000,3.812,-3.030,1.086,1.000,1.000 +93.000,2.599,-0.495,-0.307,1.000,-1.000 +93.000,0.005,-0.427,-0.930,1.000,1.000 +94.000,-0.019,-0.856,-0.363,1.000,-1.000 +95.000,-1.560,1.582,-0.837,1.000,-1.000 +96.000,3.890,-0.714,1.273,1.000,-1.000 +96.000,4.331,-0.662,1.354,1.000,0.000 +96.000,3.550,-1.569,-0.513,1.000,1.000 +97.000,-2.861,0.565,-1.070,1.000,-1.000 +97.000,-3.033,0.231,-1.450,1.000,0.000 +97.000,-2.956,0.626,-0.080,1.000,1.000 +98.000,0.322,-0.249,0.259,1.000,-1.000 +99.000,-0.639,0.353,-0.579,1.000,-1.000 +99.000,-4.105,2.023,1.410,1.000,1.000 diff --git a/statsmodels/regression/tests/results/lme10.csv b/statsmodels/regression/tests/results/lme10.csv new file mode 100644 index 0000000..835233e --- /dev/null +++ b/statsmodels/regression/tests/results/lme10.csv @@ -0,0 +1,263 @@ +groups,endog,exog_fe_0,exog_fe_1,exog_fe_2,exog_re_0,exog_re_1 +0.000,0.319,-0.037,-0.605,-0.536,1.000,-1.000 +1.000,-2.941,-0.493,-0.168,-1.811,1.000,-1.000 +2.000,1.464,-0.143,0.709,0.875,1.000,-1.000 +2.000,-0.388,-0.298,-1.046,0.369,1.000,1.000 +3.000,-1.022,-0.134,1.082,-1.032,1.000,-1.000 +4.000,1.412,0.196,-0.372,-0.994,1.000,-1.000 +4.000,-0.452,0.226,1.298,0.015,1.000,1.000 +5.000,0.126,1.137,-1.357,0.187,1.000,-1.000 +6.000,-3.958,0.862,0.697,-2.560,1.000,-1.000 +6.000,1.179,-1.141,-0.020,-0.730,1.000,-0.333 +6.000,0.176,0.260,0.690,0.008,1.000,0.333 +6.000,0.180,1.283,-0.194,0.414,1.000,1.000 +7.000,2.058,-1.164,-1.070,0.812,1.000,-1.000 +7.000,2.112,-0.720,-0.494,0.120,1.000,0.000 +7.000,4.048,-0.623,0.550,1.690,1.000,1.000 +8.000,-1.887,2.263,-1.113,0.024,1.000,-1.000 +8.000,-0.589,0.585,-0.274,-0.244,1.000,-0.333 +8.000,1.404,-2.514,0.571,0.145,1.000,0.333 +8.000,-2.759,0.720,0.438,-0.595,1.000,1.000 +9.000,-3.863,0.785,0.836,-1.046,1.000,-1.000 +9.000,-0.948,1.014,-0.476,0.377,1.000,0.000 +9.000,-1.097,-0.106,-1.912,-1.261,1.000,1.000 +10.000,-1.917,1.115,0.508,0.662,1.000,-1.000 +10.000,-0.053,0.623,-0.601,0.124,1.000,0.000 +10.000,2.356,-0.477,-0.414,0.666,1.000,1.000 +11.000,-1.989,1.655,1.269,-0.388,1.000,-1.000 +12.000,-1.353,-0.239,0.557,-0.986,1.000,-1.000 +13.000,-0.035,0.088,0.376,1.148,1.000,-1.000 +13.000,-0.228,-0.570,1.336,0.055,1.000,0.000 +13.000,-0.332,-1.526,-0.109,-0.384,1.000,1.000 +14.000,4.348,-0.474,-0.217,0.497,1.000,-1.000 +15.000,-3.031,0.410,-0.390,-0.645,1.000,-1.000 +16.000,-0.998,0.914,-0.023,-0.725,1.000,-1.000 +17.000,0.500,0.756,-0.064,0.326,1.000,-1.000 +17.000,1.878,-1.768,-2.322,1.402,1.000,0.000 +17.000,-3.291,0.857,-0.498,-0.612,1.000,1.000 +18.000,-1.322,0.277,-0.572,1.599,1.000,-1.000 +18.000,-0.986,-0.001,-1.085,-0.057,1.000,-0.333 +18.000,1.572,0.883,-0.793,0.913,1.000,0.333 +18.000,2.776,-1.412,-0.555,-0.026,1.000,1.000 +19.000,-2.480,-0.224,1.797,0.289,1.000,-1.000 +19.000,1.518,-1.805,-0.323,0.646,1.000,-0.333 +19.000,1.935,0.642,2.617,0.334,1.000,0.333 +19.000,4.711,-0.052,0.199,0.273,1.000,1.000 +20.000,-1.025,-0.341,1.553,-0.716,1.000,-1.000 +20.000,-1.344,0.436,1.855,-0.174,1.000,-0.333 +20.000,-0.923,0.834,-0.350,0.323,1.000,0.333 +20.000,-4.071,2.511,-0.182,-1.893,1.000,1.000 +21.000,-0.171,0.212,-0.355,0.715,1.000,-1.000 +21.000,-3.133,1.264,-0.121,-1.515,1.000,-0.333 +21.000,-0.442,0.957,-1.053,0.005,1.000,0.333 +21.000,0.975,-0.203,1.813,0.299,1.000,1.000 +22.000,2.209,-0.980,-0.894,0.364,1.000,-1.000 +22.000,-0.090,-1.263,0.780,-0.566,1.000,1.000 +23.000,2.145,-1.050,0.161,-0.666,1.000,-1.000 +23.000,1.132,0.157,-0.130,-0.160,1.000,-0.333 +23.000,2.123,-1.065,-1.130,0.038,1.000,0.333 +23.000,-1.634,1.124,-0.677,0.142,1.000,1.000 +24.000,0.528,-0.364,1.980,0.545,1.000,-1.000 +24.000,1.043,-1.075,-0.453,0.329,1.000,1.000 +25.000,1.607,-0.169,0.786,0.249,1.000,-1.000 +25.000,-1.833,1.484,-0.503,-0.729,1.000,-0.333 +25.000,0.730,0.999,0.467,1.691,1.000,0.333 +25.000,-1.519,0.723,-0.789,0.093,1.000,1.000 +26.000,1.306,-0.483,0.453,0.905,1.000,-1.000 +27.000,2.710,-1.434,1.515,1.986,1.000,-1.000 +27.000,1.141,0.101,-1.026,1.119,1.000,-0.333 +27.000,1.553,0.086,0.041,2.085,1.000,0.333 +27.000,0.142,-0.584,0.886,-1.304,1.000,1.000 +28.000,-1.188,-0.071,-0.142,-0.541,1.000,-1.000 +28.000,-1.324,1.895,0.175,0.420,1.000,-0.333 +28.000,0.650,0.031,1.128,-0.275,1.000,0.333 +28.000,2.368,-1.376,0.308,0.574,1.000,1.000 +29.000,3.689,-1.154,-1.470,0.279,1.000,-1.000 +29.000,0.097,0.633,1.167,-0.111,1.000,0.000 +29.000,-3.288,0.033,-0.538,-1.688,1.000,1.000 +30.000,-1.774,-0.343,-0.109,-0.395,1.000,-1.000 +30.000,-0.084,1.534,-0.393,0.893,1.000,-0.333 +30.000,3.371,-0.654,-1.770,1.473,1.000,0.333 +30.000,6.862,-2.692,0.774,1.353,1.000,1.000 +31.000,4.103,-0.599,0.157,0.553,1.000,-1.000 +31.000,-1.445,0.718,1.405,-0.901,1.000,0.000 +31.000,-4.635,1.947,-0.449,-0.024,1.000,1.000 +32.000,1.943,-0.836,-0.889,0.340,1.000,-1.000 +32.000,1.293,-1.465,-0.616,0.334,1.000,1.000 +33.000,-1.530,0.256,-0.641,-1.295,1.000,-1.000 +33.000,-0.549,1.042,0.994,0.051,1.000,0.000 +33.000,1.687,-1.813,-0.478,-0.112,1.000,1.000 +34.000,4.090,-1.334,-0.336,1.113,1.000,-1.000 +34.000,-1.907,0.921,-0.150,0.232,1.000,1.000 +35.000,-4.098,0.711,0.285,-0.423,1.000,-1.000 +36.000,-1.518,-0.084,-1.271,1.934,1.000,-1.000 +36.000,-0.699,-0.898,0.338,-0.267,1.000,-0.333 +36.000,-0.268,-0.013,1.047,-0.112,1.000,0.333 +36.000,2.567,-0.755,-1.418,-0.280,1.000,1.000 +37.000,4.049,-0.567,0.048,1.000,1.000,-1.000 +37.000,-0.633,0.090,-0.763,-0.365,1.000,-0.333 +37.000,0.830,0.448,-0.670,0.774,1.000,0.333 +37.000,-2.088,-0.336,0.900,-0.910,1.000,1.000 +38.000,-1.796,0.319,1.656,-0.552,1.000,-1.000 +38.000,-0.317,-0.331,1.107,-1.586,1.000,1.000 +39.000,-0.653,-2.073,-0.193,-0.767,1.000,-1.000 +39.000,-0.217,1.389,0.689,0.300,1.000,1.000 +40.000,-5.310,0.228,1.863,-2.937,1.000,-1.000 +40.000,3.629,-0.027,-1.059,1.095,1.000,1.000 +41.000,0.343,-1.384,-0.473,0.069,1.000,-1.000 +41.000,-0.855,-0.636,-0.191,-0.865,1.000,-0.333 +41.000,-0.673,1.751,-0.887,1.431,1.000,0.333 +41.000,2.334,-0.650,1.114,1.762,1.000,1.000 +42.000,-2.809,-0.337,0.953,-2.191,1.000,-1.000 +42.000,-2.426,1.050,-0.328,-0.039,1.000,1.000 +43.000,1.206,0.427,-0.353,-0.612,1.000,-1.000 +43.000,1.973,-1.877,-1.543,0.819,1.000,0.000 +43.000,-2.834,1.947,1.153,0.889,1.000,1.000 +44.000,-0.234,-0.469,-1.149,0.545,1.000,-1.000 +44.000,-0.744,0.229,-2.714,0.011,1.000,1.000 +45.000,0.340,0.908,1.138,0.414,1.000,-1.000 +45.000,1.964,-0.246,0.799,1.800,1.000,-0.333 +45.000,-2.566,1.203,-1.020,-0.372,1.000,0.333 +45.000,1.013,-1.560,-0.994,0.593,1.000,1.000 +46.000,-0.072,-1.270,0.069,-0.927,1.000,-1.000 +46.000,0.498,1.093,-0.960,0.752,1.000,-0.333 +46.000,1.825,-0.964,0.386,-0.224,1.000,0.333 +46.000,0.057,1.381,-0.159,0.523,1.000,1.000 +47.000,4.173,-1.195,-0.443,-0.126,1.000,-1.000 +47.000,-1.454,0.732,-0.153,0.814,1.000,0.000 +47.000,-6.187,-0.262,-2.829,-1.990,1.000,1.000 +48.000,-1.049,-1.103,-0.598,-0.026,1.000,-1.000 +48.000,0.399,-1.269,-0.835,-0.636,1.000,-0.333 +48.000,3.806,-0.736,-1.853,1.574,1.000,0.333 +48.000,1.371,0.394,0.448,-1.491,1.000,1.000 +49.000,-2.212,0.328,0.957,-1.600,1.000,-1.000 +49.000,2.071,-0.391,-0.736,2.325,1.000,-0.333 +49.000,-2.752,0.355,-0.639,-1.165,1.000,0.333 +49.000,-1.401,0.412,-0.734,0.345,1.000,1.000 +50.000,0.132,0.075,1.158,1.375,1.000,-1.000 +50.000,-0.654,0.143,-0.686,-0.065,1.000,0.000 +50.000,0.606,0.613,-0.021,0.121,1.000,1.000 +51.000,-0.718,-0.520,-0.174,0.578,1.000,-1.000 +51.000,1.733,-0.499,-1.749,0.273,1.000,0.000 +51.000,0.832,0.360,0.893,-1.092,1.000,1.000 +52.000,0.880,-0.085,-0.910,1.032,1.000,-1.000 +52.000,0.309,1.234,-0.523,0.845,1.000,-0.333 +52.000,-1.535,0.189,1.946,-0.695,1.000,0.333 +52.000,0.068,-0.924,1.051,-1.413,1.000,1.000 +53.000,-1.071,0.122,0.520,0.202,1.000,-1.000 +53.000,0.499,-2.118,0.787,-0.756,1.000,-0.333 +53.000,-2.426,0.832,0.994,-1.503,1.000,0.333 +53.000,2.484,0.188,-0.337,1.421,1.000,1.000 +54.000,-1.087,-0.289,-0.158,-0.367,1.000,-1.000 +54.000,1.147,-0.674,-0.189,0.101,1.000,0.000 +54.000,0.676,0.259,2.025,-0.262,1.000,1.000 +55.000,0.283,-0.476,1.719,0.118,1.000,-1.000 +56.000,-0.817,-0.581,1.398,-0.499,1.000,-1.000 +57.000,-1.057,-1.161,-1.713,0.078,1.000,-1.000 +58.000,2.361,0.235,-0.405,0.915,1.000,-1.000 +58.000,-1.557,-0.386,0.349,-0.228,1.000,1.000 +59.000,-3.339,2.218,1.229,-0.462,1.000,-1.000 +59.000,-1.475,0.621,0.436,-1.184,1.000,0.000 +59.000,-2.963,0.885,0.484,-2.053,1.000,1.000 +60.000,-0.208,-0.034,-0.062,-0.369,1.000,-1.000 +60.000,1.600,0.364,-1.439,0.847,1.000,0.000 +60.000,1.118,-0.428,-0.469,-0.211,1.000,1.000 +61.000,-0.057,-0.737,0.906,0.414,1.000,-1.000 +61.000,0.154,-0.328,1.472,0.524,1.000,-0.333 +61.000,-1.967,-0.091,-0.974,-0.885,1.000,0.333 +61.000,-0.017,-0.342,-1.082,0.321,1.000,1.000 +62.000,1.672,-0.877,-1.504,-0.725,1.000,-1.000 +62.000,-1.811,0.749,-0.916,-0.665,1.000,1.000 +63.000,-1.721,0.532,-0.414,0.392,1.000,-1.000 +63.000,-1.209,1.515,-0.379,-0.004,1.000,-0.333 +63.000,0.038,0.989,0.506,-0.104,1.000,0.333 +63.000,4.300,-1.174,0.123,1.097,1.000,1.000 +64.000,-1.220,-0.232,0.363,-0.414,1.000,-1.000 +64.000,-3.080,1.442,0.297,-0.073,1.000,-0.333 +64.000,0.927,-0.169,-1.681,0.737,1.000,0.333 +64.000,3.535,0.376,-0.172,1.795,1.000,1.000 +65.000,-3.335,2.077,-0.098,-1.676,1.000,-1.000 +65.000,-2.937,2.637,1.140,-0.167,1.000,0.000 +65.000,0.585,-0.245,-0.718,0.754,1.000,1.000 +66.000,-0.435,-0.508,0.074,-0.372,1.000,-1.000 +66.000,1.806,0.215,1.367,0.102,1.000,1.000 +67.000,-3.943,0.331,-1.058,-0.594,1.000,-1.000 +67.000,2.294,-0.212,-0.142,-0.693,1.000,1.000 +68.000,1.636,-0.871,-0.152,-0.842,1.000,-1.000 +68.000,-2.776,0.951,-0.638,-0.216,1.000,1.000 +69.000,2.807,-0.660,0.589,-1.209,1.000,-1.000 +69.000,-4.155,1.799,0.215,-0.623,1.000,1.000 +70.000,-2.643,0.240,-0.826,-0.920,1.000,-1.000 +70.000,-1.371,-0.412,0.321,-0.597,1.000,-0.333 +70.000,3.170,-1.559,1.633,1.971,1.000,0.333 +70.000,-0.794,2.166,0.260,1.138,1.000,1.000 +71.000,2.963,0.153,0.392,1.694,1.000,-1.000 +72.000,-0.561,-0.390,-0.845,-1.224,1.000,-1.000 +72.000,-2.050,0.657,-0.357,-1.073,1.000,0.000 +72.000,-1.537,2.149,-0.020,1.042,1.000,1.000 +73.000,-1.320,-0.176,0.031,-1.282,1.000,-1.000 +73.000,-1.252,0.211,0.804,-0.454,1.000,0.000 +73.000,-1.423,1.243,-1.758,-0.647,1.000,1.000 +74.000,1.297,0.222,-0.227,0.235,1.000,-1.000 +75.000,-5.807,2.145,-0.408,-1.237,1.000,-1.000 +75.000,1.585,-2.414,-0.379,-0.267,1.000,-0.333 +75.000,2.766,-1.249,-1.927,1.131,1.000,0.333 +75.000,3.059,-0.243,-0.656,0.521,1.000,1.000 +76.000,-0.696,1.117,-0.077,1.934,1.000,-1.000 +76.000,0.525,-0.361,-0.628,-0.250,1.000,0.000 +76.000,2.566,-0.882,-0.113,1.495,1.000,1.000 +77.000,1.879,0.529,-0.498,0.323,1.000,-1.000 +77.000,0.504,-1.156,-1.180,0.352,1.000,0.000 +77.000,-4.404,2.225,0.483,-0.228,1.000,1.000 +78.000,0.294,-0.627,-0.940,0.890,1.000,-1.000 +78.000,-0.366,-0.101,-1.699,0.919,1.000,1.000 +79.000,1.552,-0.803,0.586,0.573,1.000,-1.000 +79.000,-0.201,-0.303,-0.837,0.669,1.000,1.000 +80.000,2.321,-0.143,0.509,2.427,1.000,-1.000 +80.000,1.166,-1.682,-1.095,-1.191,1.000,0.000 +80.000,0.846,0.846,-0.294,-0.847,1.000,1.000 +81.000,-0.986,0.436,1.965,-0.064,1.000,-1.000 +81.000,1.354,-0.464,-0.997,0.457,1.000,0.000 +81.000,0.983,-0.800,0.266,-0.793,1.000,1.000 +82.000,0.930,1.218,-1.565,1.137,1.000,-1.000 +82.000,1.943,-1.904,-0.246,0.172,1.000,0.000 +82.000,0.684,0.296,-0.077,0.874,1.000,1.000 +83.000,-0.989,-0.049,0.609,-2.241,1.000,-1.000 +83.000,2.928,-0.501,-0.108,1.066,1.000,-0.333 +83.000,-0.184,-0.761,-0.208,-0.428,1.000,0.333 +83.000,-1.264,-0.882,1.164,0.269,1.000,1.000 +84.000,-0.375,0.009,-1.559,-1.256,1.000,-1.000 +85.000,-4.993,-0.154,1.311,-0.712,1.000,-1.000 +85.000,-0.073,-0.864,-0.237,-0.599,1.000,0.000 +85.000,3.719,0.150,-2.265,0.376,1.000,1.000 +86.000,1.258,0.872,-1.044,0.645,1.000,-1.000 +87.000,-2.509,1.926,0.628,0.647,1.000,-1.000 +87.000,0.358,-0.541,-1.056,-0.724,1.000,0.000 +87.000,4.490,-2.936,-1.158,-0.909,1.000,1.000 +88.000,3.066,-0.535,-1.046,2.244,1.000,-1.000 +89.000,0.324,-0.306,0.529,0.256,1.000,-1.000 +89.000,2.525,-0.487,-0.171,1.483,1.000,-0.333 +89.000,1.931,-1.091,-1.036,0.251,1.000,0.333 +89.000,1.007,-0.576,-0.883,1.242,1.000,1.000 +90.000,-1.309,1.114,-0.310,0.423,1.000,-1.000 +90.000,2.202,-1.607,-0.290,1.095,1.000,0.000 +90.000,-1.470,1.195,0.335,-0.266,1.000,1.000 +91.000,1.290,-0.554,-0.243,1.311,1.000,-1.000 +92.000,2.456,-0.705,-1.556,1.611,1.000,-1.000 +92.000,-0.410,0.983,-0.064,0.658,1.000,-0.333 +92.000,0.042,0.363,0.979,0.746,1.000,0.333 +92.000,1.716,-1.519,1.190,0.052,1.000,1.000 +93.000,5.994,-0.810,-1.603,1.421,1.000,-1.000 +93.000,-1.673,0.278,0.068,1.001,1.000,1.000 +94.000,-1.606,0.549,2.193,0.032,1.000,-1.000 +94.000,0.979,2.121,2.230,1.861,1.000,1.000 +95.000,0.873,1.151,1.555,1.412,1.000,-1.000 +95.000,-0.061,-0.325,1.126,0.155,1.000,0.000 +95.000,-2.279,-1.117,-0.998,-2.021,1.000,1.000 +96.000,4.667,-1.751,-1.152,0.197,1.000,-1.000 +96.000,-3.312,0.020,0.982,-2.709,1.000,-0.333 +96.000,-0.492,0.169,-0.381,0.083,1.000,0.333 +96.000,-3.543,-0.100,-0.240,-0.249,1.000,1.000 +97.000,-1.025,-0.738,-1.597,-0.767,1.000,-1.000 +98.000,-2.044,2.136,-1.394,0.755,1.000,-1.000 +99.000,-0.137,-0.392,-0.343,0.443,1.000,-1.000 diff --git a/statsmodels/regression/tests/results/lme11.csv b/statsmodels/regression/tests/results/lme11.csv new file mode 100644 index 0000000..178cedd --- /dev/null +++ b/statsmodels/regression/tests/results/lme11.csv @@ -0,0 +1,262 @@ +groups,endog,exog_fe_0,exog_fe_1,exog_fe_2,exog_re_0,exog_re_1 +0.000,-3.775,1.099,0.674,0.436,1.000,-1.000 +0.000,-3.074,-0.418,0.680,-0.186,1.000,1.000 +1.000,1.803,-0.042,-1.137,1.272,1.000,-1.000 +2.000,-1.442,1.290,1.390,0.344,1.000,-1.000 +3.000,-5.430,1.236,0.042,0.632,1.000,-1.000 +3.000,2.086,0.302,-0.384,0.381,1.000,0.000 +3.000,2.536,-1.174,0.293,-0.538,1.000,1.000 +4.000,-8.820,-1.160,-1.720,0.088,1.000,-1.000 +5.000,-0.383,0.180,-0.984,0.658,1.000,-1.000 +5.000,1.122,0.170,0.271,0.520,1.000,0.000 +5.000,-0.673,-0.087,0.811,-1.361,1.000,1.000 +6.000,0.020,-0.613,-1.873,0.196,1.000,-1.000 +6.000,1.059,0.507,0.276,0.874,1.000,0.000 +6.000,-0.887,0.105,0.276,-0.505,1.000,1.000 +7.000,-0.582,-0.207,-0.938,-0.678,1.000,-1.000 +7.000,-5.913,0.280,-1.180,-0.128,1.000,-0.333 +7.000,0.604,-0.989,-0.055,0.203,1.000,0.333 +7.000,-4.084,1.142,0.409,1.783,1.000,1.000 +8.000,1.641,-1.976,1.513,0.138,1.000,-1.000 +8.000,3.419,0.743,-0.448,0.941,1.000,1.000 +9.000,0.442,-0.716,1.266,-0.781,1.000,-1.000 +9.000,-3.488,0.567,0.816,-1.700,1.000,-0.333 +9.000,-0.300,0.584,-0.619,0.014,1.000,0.333 +9.000,-2.029,0.431,1.399,-0.286,1.000,1.000 +10.000,-0.222,0.632,-0.505,0.790,1.000,-1.000 +10.000,-4.123,0.781,-0.242,0.958,1.000,0.000 +10.000,0.027,-0.301,0.355,0.810,1.000,1.000 +11.000,-3.169,0.053,-1.381,-2.940,1.000,-1.000 +11.000,2.707,1.073,-0.590,1.632,1.000,-0.333 +11.000,-3.938,0.923,1.635,-1.197,1.000,0.333 +11.000,1.090,-0.081,0.603,1.030,1.000,1.000 +12.000,-1.502,0.682,0.625,0.252,1.000,-1.000 +12.000,3.730,-0.492,-0.969,0.627,1.000,0.000 +12.000,2.366,1.262,-0.925,-0.201,1.000,1.000 +13.000,8.301,-1.155,1.417,2.720,1.000,-1.000 +13.000,-0.773,1.613,-1.706,1.016,1.000,0.000 +13.000,-2.027,-1.097,-1.271,-0.881,1.000,1.000 +14.000,2.652,-0.761,-1.231,0.250,1.000,-1.000 +14.000,1.076,0.742,0.200,0.900,1.000,0.000 +14.000,-0.286,0.592,-0.413,-0.076,1.000,1.000 +15.000,-3.407,0.133,-1.107,-0.413,1.000,-1.000 +16.000,-0.267,0.137,1.232,0.284,1.000,-1.000 +16.000,-1.254,-0.490,-0.369,-0.613,1.000,0.000 +16.000,-0.736,0.594,0.677,0.739,1.000,1.000 +17.000,1.393,0.732,0.496,-0.605,1.000,-1.000 +17.000,-0.797,-0.047,-0.426,-0.620,1.000,1.000 +18.000,-3.239,1.560,-1.493,-2.523,1.000,-1.000 +19.000,1.428,-0.825,-0.439,-0.513,1.000,-1.000 +19.000,-3.834,2.378,0.754,-1.314,1.000,1.000 +20.000,5.865,-0.588,-0.843,0.812,1.000,-1.000 +20.000,0.448,0.076,-0.371,0.035,1.000,0.000 +20.000,-0.582,1.010,-1.691,0.751,1.000,1.000 +21.000,1.772,-1.609,-1.211,-0.026,1.000,-1.000 +21.000,1.033,1.441,0.194,1.266,1.000,-0.333 +21.000,4.764,-0.512,0.296,1.326,1.000,0.333 +21.000,2.269,-0.928,1.702,0.429,1.000,1.000 +22.000,2.780,-1.273,-0.470,-0.196,1.000,-1.000 +22.000,2.506,0.175,-0.341,0.740,1.000,-0.333 +22.000,0.386,-1.658,-0.654,-0.424,1.000,0.333 +22.000,-1.568,-0.713,0.765,-0.203,1.000,1.000 +23.000,0.328,1.119,1.259,0.026,1.000,-1.000 +23.000,0.413,-0.527,-2.308,0.043,1.000,0.000 +23.000,-1.404,1.291,-0.395,-1.470,1.000,1.000 +24.000,2.088,-1.056,0.783,-0.451,1.000,-1.000 +24.000,0.704,-0.452,0.228,0.917,1.000,1.000 +25.000,2.337,-0.857,-0.520,2.002,1.000,-1.000 +25.000,-1.320,-1.163,-1.221,-0.277,1.000,1.000 +26.000,5.238,-1.615,1.157,0.174,1.000,-1.000 +26.000,1.363,-0.165,-1.384,-0.158,1.000,0.000 +26.000,-0.514,0.143,-0.711,2.276,1.000,1.000 +27.000,3.513,-1.759,-0.327,0.220,1.000,-1.000 +27.000,-4.513,-0.457,-0.595,0.392,1.000,-0.333 +27.000,-2.141,0.022,1.774,0.561,1.000,0.333 +27.000,2.330,-0.235,0.861,0.443,1.000,1.000 +28.000,-5.879,1.023,-0.566,-0.582,1.000,-1.000 +28.000,0.801,0.348,-1.471,0.499,1.000,-0.333 +28.000,1.709,-0.073,-0.520,-0.011,1.000,0.333 +28.000,-0.375,0.709,0.911,1.058,1.000,1.000 +29.000,0.195,0.078,-1.207,-0.250,1.000,-1.000 +29.000,0.275,-1.680,-0.202,-1.814,1.000,1.000 +30.000,2.982,-0.801,0.569,1.608,1.000,-1.000 +30.000,2.866,-0.207,0.891,0.436,1.000,-0.333 +30.000,-2.054,0.721,-0.540,0.505,1.000,0.333 +30.000,-5.575,-0.542,-0.098,0.189,1.000,1.000 +31.000,-0.948,-0.604,0.489,-1.105,1.000,-1.000 +31.000,3.035,-0.323,-0.473,-0.240,1.000,-0.333 +31.000,0.379,2.488,-0.251,0.616,1.000,0.333 +31.000,-1.828,-0.264,-0.413,0.216,1.000,1.000 +32.000,3.019,-1.418,2.142,1.824,1.000,-1.000 +32.000,6.957,-1.178,-0.272,-0.842,1.000,1.000 +33.000,0.673,-0.852,0.907,1.749,1.000,-1.000 +34.000,-4.448,1.217,-1.093,-0.453,1.000,-1.000 +34.000,-0.439,-0.011,0.160,-0.694,1.000,-0.333 +34.000,-4.437,1.064,-1.926,-0.642,1.000,0.333 +34.000,-2.754,0.090,-0.607,-0.590,1.000,1.000 +35.000,0.952,-0.681,-0.354,-0.287,1.000,-1.000 +35.000,8.831,-0.753,-2.893,2.517,1.000,0.000 +35.000,-5.497,3.582,-0.112,-1.925,1.000,1.000 +36.000,1.062,0.201,-0.276,0.198,1.000,-1.000 +36.000,-2.308,-0.128,-0.031,0.703,1.000,-0.333 +36.000,-0.503,-0.146,-0.249,0.896,1.000,0.333 +36.000,-2.621,0.210,-1.344,-0.560,1.000,1.000 +37.000,-1.387,0.957,-0.145,0.405,1.000,-1.000 +37.000,2.185,-1.150,-0.032,0.968,1.000,1.000 +38.000,-1.498,-0.411,1.203,-1.525,1.000,-1.000 +38.000,-0.424,0.166,-0.991,0.329,1.000,1.000 +39.000,0.279,-0.434,0.155,0.108,1.000,-1.000 +40.000,-3.985,0.956,-1.041,-0.631,1.000,-1.000 +41.000,-2.887,1.852,1.373,0.167,1.000,-1.000 +41.000,0.812,-0.645,-0.071,0.358,1.000,-0.333 +41.000,-0.515,0.991,-1.333,0.086,1.000,0.333 +41.000,1.061,2.173,-1.416,0.807,1.000,1.000 +42.000,-1.863,1.342,-0.952,0.160,1.000,-1.000 +42.000,-1.778,0.626,-0.066,-3.735,1.000,0.000 +42.000,1.033,-1.202,1.449,-0.279,1.000,1.000 +43.000,3.624,-0.027,-0.472,1.048,1.000,-1.000 +43.000,-4.055,1.492,0.675,-1.212,1.000,0.000 +43.000,1.598,-0.147,1.332,0.082,1.000,1.000 +44.000,5.549,-2.000,0.711,-1.665,1.000,-1.000 +44.000,-4.101,1.073,-1.161,-1.398,1.000,1.000 +45.000,1.328,0.835,-0.465,1.612,1.000,-1.000 +45.000,-1.160,-0.130,0.218,0.132,1.000,1.000 +46.000,-7.278,1.976,-0.971,0.456,1.000,-1.000 +46.000,-0.809,-0.787,1.229,-1.688,1.000,-0.333 +46.000,1.856,-0.876,-0.270,0.351,1.000,0.333 +46.000,3.051,1.047,-1.067,-1.173,1.000,1.000 +47.000,-0.360,-1.461,1.040,0.586,1.000,-1.000 +47.000,1.751,0.064,0.395,0.520,1.000,1.000 +48.000,1.673,0.614,-2.066,1.429,1.000,-1.000 +48.000,1.989,-0.306,1.068,0.755,1.000,1.000 +49.000,2.997,-0.600,-2.409,-0.693,1.000,-1.000 +49.000,-0.086,-0.327,1.533,-0.936,1.000,1.000 +50.000,-0.953,-1.512,-0.483,0.863,1.000,-1.000 +50.000,-2.590,1.341,-1.528,0.383,1.000,-0.333 +50.000,2.637,-0.872,0.459,0.028,1.000,0.333 +50.000,1.255,-1.618,-0.324,1.239,1.000,1.000 +51.000,-3.286,0.449,-0.760,-1.215,1.000,-1.000 +51.000,0.691,0.539,-0.657,0.676,1.000,1.000 +52.000,-0.483,-0.983,0.594,-0.096,1.000,-1.000 +52.000,-0.480,0.204,1.182,-0.313,1.000,-0.333 +52.000,3.327,-0.166,-0.791,0.515,1.000,0.333 +52.000,1.605,-0.955,0.699,0.215,1.000,1.000 +53.000,3.868,0.873,-1.536,0.367,1.000,-1.000 +53.000,-1.178,-0.714,0.714,0.052,1.000,1.000 +54.000,-1.096,0.046,0.166,-0.759,1.000,-1.000 +54.000,0.994,0.516,0.058,1.586,1.000,0.000 +54.000,-5.547,1.277,0.256,-2.008,1.000,1.000 +55.000,-0.188,0.347,-1.544,0.498,1.000,-1.000 +56.000,1.394,-1.110,0.239,2.131,1.000,-1.000 +56.000,0.410,0.729,-1.072,-0.612,1.000,-0.333 +56.000,-1.305,1.699,-0.050,1.074,1.000,0.333 +56.000,4.143,-1.750,-1.720,1.226,1.000,1.000 +57.000,0.271,0.740,0.511,1.034,1.000,-1.000 +57.000,0.313,-0.209,0.519,0.909,1.000,0.000 +57.000,-0.602,1.013,1.085,-0.891,1.000,1.000 +58.000,-2.227,-0.214,-0.001,0.163,1.000,-1.000 +59.000,-1.496,-0.028,-1.519,-0.687,1.000,-1.000 +60.000,-0.820,-0.180,-0.079,-1.573,1.000,-1.000 +60.000,-0.453,-0.142,-0.090,0.351,1.000,1.000 +61.000,0.539,0.040,-1.077,2.130,1.000,-1.000 +61.000,1.416,0.684,0.319,-0.412,1.000,-0.333 +61.000,1.432,-1.120,-0.413,-1.041,1.000,0.333 +61.000,4.263,-0.242,-1.703,-0.204,1.000,1.000 +62.000,-1.459,0.324,-0.584,-0.891,1.000,-1.000 +62.000,-3.028,1.704,-0.448,-2.434,1.000,1.000 +63.000,0.330,1.408,0.665,1.576,1.000,-1.000 +64.000,-5.682,0.357,-1.083,-1.179,1.000,-1.000 +64.000,-3.124,0.712,1.788,-1.518,1.000,0.000 +64.000,-4.504,0.163,0.110,-2.306,1.000,1.000 +65.000,-6.127,0.805,-0.945,-1.332,1.000,-1.000 +65.000,-7.387,2.474,-1.380,1.430,1.000,1.000 +66.000,-6.008,1.104,-2.226,-0.441,1.000,-1.000 +66.000,2.675,0.489,-0.413,1.557,1.000,0.000 +66.000,6.011,-0.584,1.794,0.585,1.000,1.000 +67.000,-1.278,1.120,0.270,-1.956,1.000,-1.000 +67.000,2.785,-0.342,1.849,1.048,1.000,0.000 +67.000,0.270,1.195,0.036,-0.891,1.000,1.000 +68.000,-0.225,1.736,0.013,1.417,1.000,-1.000 +68.000,-4.518,1.442,-0.971,-1.509,1.000,1.000 +69.000,-2.800,0.328,1.266,-1.013,1.000,-1.000 +69.000,-2.669,-0.180,-0.921,1.412,1.000,-0.333 +69.000,-0.542,0.053,-0.004,-0.538,1.000,0.333 +69.000,-2.927,-0.138,0.193,0.488,1.000,1.000 +70.000,-1.967,0.004,0.493,0.530,1.000,-1.000 +71.000,-4.444,0.758,0.250,-0.110,1.000,-1.000 +71.000,0.779,-0.573,-0.262,0.103,1.000,1.000 +72.000,0.240,1.080,-1.192,-0.602,1.000,-1.000 +72.000,-0.993,-0.997,0.938,-0.797,1.000,-0.333 +72.000,3.873,-1.254,-1.763,-0.555,1.000,0.333 +72.000,4.807,-0.669,-1.076,0.894,1.000,1.000 +73.000,-2.500,-0.278,-1.521,1.584,1.000,-1.000 +73.000,-2.295,0.552,-0.827,-0.329,1.000,-0.333 +73.000,-0.258,1.144,0.818,1.790,1.000,0.333 +73.000,2.504,-1.825,-1.582,0.262,1.000,1.000 +74.000,1.416,-0.428,0.456,0.490,1.000,-1.000 +74.000,3.877,-0.198,-1.393,-0.547,1.000,1.000 +75.000,-1.958,0.467,0.323,1.252,1.000,-1.000 +75.000,2.353,-1.233,0.778,0.379,1.000,0.000 +75.000,-3.190,-0.715,-1.180,-1.238,1.000,1.000 +76.000,1.281,-0.355,-1.494,0.620,1.000,-1.000 +76.000,-1.045,0.942,0.586,-0.730,1.000,0.000 +76.000,2.971,-1.343,-0.189,0.665,1.000,1.000 +77.000,1.803,-0.336,-0.717,-0.417,1.000,-1.000 +77.000,-1.283,-1.062,0.760,0.980,1.000,-0.333 +77.000,4.764,-0.713,0.323,-0.691,1.000,0.333 +77.000,7.235,-1.857,0.647,1.059,1.000,1.000 +78.000,1.077,1.096,0.785,0.285,1.000,-1.000 +78.000,-1.462,1.185,-1.439,0.402,1.000,0.000 +78.000,-3.405,-0.956,-0.038,-1.044,1.000,1.000 +79.000,-2.323,-0.082,-0.901,-1.307,1.000,-1.000 +79.000,1.501,-0.678,-0.672,0.781,1.000,0.000 +79.000,-2.355,0.286,0.164,-0.902,1.000,1.000 +80.000,0.154,-0.518,1.182,-1.140,1.000,-1.000 +80.000,-1.169,-1.044,-0.963,0.545,1.000,0.000 +80.000,3.371,0.168,1.705,1.405,1.000,1.000 +81.000,5.661,-1.153,0.365,1.072,1.000,-1.000 +82.000,3.924,-0.775,1.796,0.777,1.000,-1.000 +82.000,3.692,-1.654,1.673,0.034,1.000,0.000 +82.000,4.973,-1.558,-0.239,-0.802,1.000,1.000 +83.000,-4.433,0.097,0.176,0.124,1.000,-1.000 +84.000,-0.331,-0.494,-0.611,2.648,1.000,-1.000 +84.000,2.324,0.593,1.263,-0.725,1.000,1.000 +85.000,-1.634,-1.538,-0.959,-1.966,1.000,-1.000 +86.000,2.046,0.317,2.039,0.365,1.000,-1.000 +86.000,2.597,-0.977,-0.161,1.815,1.000,0.000 +86.000,-1.517,2.003,-0.515,0.253,1.000,1.000 +87.000,1.314,0.606,-0.870,-1.089,1.000,-1.000 +87.000,-0.151,0.461,0.025,1.103,1.000,1.000 +88.000,1.555,0.366,0.819,-0.510,1.000,-1.000 +88.000,0.147,-0.037,0.804,-0.647,1.000,0.000 +88.000,-3.459,-0.306,0.029,-0.788,1.000,1.000 +89.000,-0.088,0.469,-0.174,0.533,1.000,-1.000 +89.000,-5.634,1.586,-0.568,0.168,1.000,0.000 +89.000,6.470,-1.374,1.194,-0.177,1.000,1.000 +90.000,1.156,-0.821,0.961,0.681,1.000,-1.000 +91.000,1.282,0.291,-1.246,0.711,1.000,-1.000 +91.000,-4.305,1.224,0.110,1.590,1.000,0.000 +91.000,-1.897,-0.302,-0.507,0.072,1.000,1.000 +92.000,-1.910,-0.183,-0.110,0.398,1.000,-1.000 +92.000,5.424,-1.609,-0.652,-1.474,1.000,1.000 +93.000,1.777,-0.149,1.462,0.618,1.000,-1.000 +93.000,1.602,0.401,-1.128,-0.205,1.000,-0.333 +93.000,1.316,0.396,1.269,-0.535,1.000,0.333 +93.000,-0.641,-0.209,0.439,-0.833,1.000,1.000 +94.000,-0.742,-0.002,-0.303,0.014,1.000,-1.000 +94.000,6.648,-0.767,-0.476,0.413,1.000,1.000 +95.000,-3.939,-0.028,1.455,-1.046,1.000,-1.000 +95.000,-3.992,-0.936,0.525,-0.691,1.000,1.000 +96.000,1.316,0.016,0.367,-1.287,1.000,-1.000 +96.000,-2.157,0.885,1.678,-1.062,1.000,-0.333 +96.000,1.075,-1.454,0.652,0.976,1.000,0.333 +96.000,3.665,-0.563,0.246,0.395,1.000,1.000 +97.000,3.121,-2.871,-1.058,0.355,1.000,-1.000 +97.000,-1.160,0.497,0.645,-0.296,1.000,1.000 +98.000,-7.100,0.912,0.010,-0.685,1.000,-1.000 +98.000,-2.823,0.769,0.148,-1.593,1.000,0.000 +98.000,-3.731,1.655,-0.693,-1.300,1.000,1.000 +99.000,-0.579,0.527,1.014,0.243,1.000,-1.000 +99.000,0.314,1.084,-0.030,0.904,1.000,-0.333 +99.000,0.493,-1.464,-1.787,-1.039,1.000,0.333 +99.000,3.419,0.787,-0.341,-0.586,1.000,1.000 diff --git a/statsmodels/regression/tests/results/lme_r_results.py b/statsmodels/regression/tests/results/lme_r_results.py new file mode 100644 index 0000000..61515e0 --- /dev/null +++ b/statsmodels/regression/tests/results/lme_r_results.py @@ -0,0 +1,560 @@ +import numpy as np + +coef_ml_drf_0 = np.array([-0.9887517]) + +vcov_ml_drf_0 = np.array([0.001317148]).reshape(1, 1, order='F') + +cov_re_ml_drf_0 = np.array([0.2522485]).reshape(1, 1, order='F') + +scale_ml_drf_0 = np.array([0.2718486]) + +loglike_ml_drf_0 = np.array([-240.1254]) + +ranef_mean_ml_drf_0 = np.array([0.04977167]) + +ranef_condvar_ml_drf_0 = np.array([0.130841]) + +coef_reml_drf_0 = np.array([-0.9887533]) + +vcov_reml_drf_0 = np.array([0.001323559]).reshape(1, 1, order='F') + +cov_re_reml_drf_0 = np.array([0.2524129]).reshape(1, 1, order='F') + +scale_reml_drf_0 = np.array([0.2733467]) + +loglike_reml_drf_0 = np.array([-242.5214]) + +ranef_mean_reml_drf_0 = np.array([0.04964696]) + +ranef_condvar_reml_drf_0 = np.array([0.1312315]) + +coef_ml_drf_1 = np.array([-0.9115929]) + +vcov_ml_drf_1 = np.array([0.01340632]).reshape(1, 1, order='F') + +cov_re_ml_drf_1 = np.array([0]).reshape(1, 1, order='F') + +scale_ml_drf_1 = np.array([4.050921]) + +loglike_ml_drf_1 = np.array([-538.0763]) + +ranef_mean_ml_drf_1 = np.array([0]) + +ranef_condvar_ml_drf_1 = np.array([0]) + +coef_reml_drf_1 = np.array([-0.9115929]) + +vcov_reml_drf_1 = np.array([0.01345931]).reshape(1, 1, order='F') + +cov_re_reml_drf_1 = np.array([2.839777e-14]).reshape(1, 1, order='F') + +scale_reml_drf_1 = np.array([4.066932]) + +loglike_reml_drf_1 = np.array([-539.3124]) + +ranef_mean_reml_drf_1 = np.array([2.424384e-14]) + +ranef_condvar_reml_drf_1 = np.array([2.839777e-14]) + +coef_ml_drf_2 = np.array([-1.012044, 0.9789052]) + +vcov_ml_drf_2 = np.array([ + 0.00117849, 1.458744e-05, + 1.458744e-05, 0.001054926]).reshape(2, 2, order='F') + +cov_re_ml_drf_2 = np.array([0.1596058]).reshape(1, 1, order='F') + +scale_ml_drf_2 = np.array([0.2129146]) + +loglike_ml_drf_2 = np.array([-200.319]) + +ranef_mean_ml_drf_2 = np.array([0.3197174]) + +ranef_condvar_ml_drf_2 = np.array([0.09122291]) + +coef_reml_drf_2 = np.array([-1.012137, 0.9790792]) + +vcov_reml_drf_2 = np.array([ + 0.001190455, 1.482666e-05, + 1.482666e-05, 0.001066002]).reshape(2, 2, order='F') + +cov_re_reml_drf_2 = np.array([0.1595015]).reshape(1, 1, order='F') + +scale_reml_drf_2 = np.array([0.2154276]) + +loglike_reml_drf_2 = np.array([-205.275]) + +ranef_mean_reml_drf_2 = np.array([0.3172978]) + +ranef_condvar_reml_drf_2 = np.array([0.09164674]) + +coef_ml_drf_3 = np.array([-1.028053, 0.8602685]) + +vcov_ml_drf_3 = np.array([ + 0.01398831, 0.001592619, 0.001592619, 0.01602274]).reshape(2, 2, order='F') + +cov_re_ml_drf_3 = np.array([0.8130996]).reshape(1, 1, order='F') + +scale_ml_drf_3 = np.array([3.100447]) + +loglike_ml_drf_3 = np.array([-477.1707]) + +ranef_mean_ml_drf_3 = np.array([-0.2641747]) + +ranef_condvar_ml_drf_3 = np.array([0.6441656]) + +coef_reml_drf_3 = np.array([-1.027583, 0.8605714]) + +vcov_reml_drf_3 = np.array([ + 0.01411922, 0.001607343, 0.001607343, 0.01617574]).reshape(2, 2, order='F') + +cov_re_reml_drf_3 = np.array([0.8117898]).reshape(1, 1, order='F') + +scale_reml_drf_3 = np.array([3.13369]) + +loglike_reml_drf_3 = np.array([-479.5354]) + +ranef_mean_reml_drf_3 = np.array([-0.2614875]) + +ranef_condvar_reml_drf_3 = np.array([0.6447625]) + +coef_ml_drf_4 = np.array([-1.005151, -0.003657404, 1.054786]) + +vcov_ml_drf_4 = np.array([ + 0.001190639, -5.327162e-05, 5.992985e-05, -5.327162e-05, + 0.001460303, -2.662532e-05, 5.992985e-05, -2.662532e-05, + 0.00148609]).reshape(3, 3, order='F') + +cov_re_ml_drf_4 = np.array([0.1703249]).reshape(1, 1, order='F') + +scale_ml_drf_4 = np.array([0.251763]) + +loglike_ml_drf_4 = np.array([-231.6389]) + +ranef_mean_ml_drf_4 = np.array([-0.2063164]) + +ranef_condvar_ml_drf_4 = np.array([0.0459578]) + +coef_reml_drf_4 = np.array([-1.005067, -0.003496032, 1.054666]) + +vcov_reml_drf_4 = np.array([ + 0.001206925, -5.4182e-05, 6.073475e-05, -5.4182e-05, + 0.001479871, -2.723494e-05, 6.073475e-05, -2.723494e-05, + 0.001506198]).reshape(3, 3, order='F') + +cov_re_reml_drf_4 = np.array([0.1705659]).reshape(1, 1, order='F') + +scale_reml_drf_4 = np.array([0.2556394]) + +loglike_reml_drf_4 = np.array([-238.761]) + +ranef_mean_reml_drf_4 = np.array([-0.2055303]) + +ranef_condvar_reml_drf_4 = np.array([0.04649027]) + +coef_ml_drf_5 = np.array([-0.8949725, 0.08141558, 1.052529]) + +vcov_ml_drf_5 = np.array([ + 0.01677563, 0.0008077524, -0.001255011, 0.0008077524, + 0.01719346, 0.0009266736, -0.001255011, 0.0009266736, + 0.01608435]).reshape(3, 3, order='F') + +cov_re_ml_drf_5 = np.array([0.3444677]).reshape(1, 1, order='F') + +scale_ml_drf_5 = np.array([4.103944]) + +loglike_ml_drf_5 = np.array([-579.4568]) + +ranef_mean_ml_drf_5 = np.array([0.08254713]) + +ranef_condvar_ml_drf_5 = np.array([0.3177935]) + +coef_reml_drf_5 = np.array([-0.8946164, 0.08134261, 1.052486]) + +vcov_reml_drf_5 = np.array([ + 0.0169698, 0.0008162714, -0.001268635, 0.0008162714, + 0.01739219, 0.0009345538, -0.001268635, 0.0009345538, + 0.01627074]).reshape(3, 3, order='F') + +cov_re_reml_drf_5 = np.array([0.3420993]).reshape(1, 1, order='F') + +scale_reml_drf_5 = np.array([4.155737]) + +loglike_reml_drf_5 = np.array([-582.8377]) + +ranef_mean_reml_drf_5 = np.array([0.08111449]) + +ranef_condvar_reml_drf_5 = np.array([0.3160797]) + +coef_ml_drf_6 = np.array([-0.8885425]) + +vcov_ml_drf_6 = np.array([0.002443738]).reshape(1, 1, order='F') + +cov_re_ml_drf_6 = np.array([ + 0.2595201, 0.04591071, + 0.04591071, 2.204612]).reshape(2, 2, order='F') + +scale_ml_drf_6 = np.array([0.243133]) + +loglike_ml_drf_6 = np.array([-382.551]) + +ranef_mean_ml_drf_6 = np.array([-0.0597406, 0.6037288]) + +ranef_condvar_ml_drf_6 = np.array([ + 0.2420741, 0.2222169, + 0.2222169, 0.4228908]).reshape(2, 2, order='F') + +coef_reml_drf_6 = np.array([-0.8883881]) + +vcov_reml_drf_6 = np.array([0.002461581]).reshape(1, 1, order='F') + +cov_re_reml_drf_6 = np.array([ + 0.2595767, 0.04590012, + 0.04590012, 2.204822]).reshape(2, 2, order='F') + +scale_reml_drf_6 = np.array([0.2453537]) + +loglike_reml_drf_6 = np.array([-384.6373]) + +ranef_mean_reml_drf_6 = np.array([-0.05969892, 0.6031793]) + +ranef_condvar_reml_drf_6 = np.array([ + 0.2421365, 0.2221108, + 0.2221108, 0.4244443]).reshape(2, 2, order='F') + +coef_ml_irf_6 = np.array([-0.8874992]) + +vcov_ml_irf_6 = np.array([0.002445505]).reshape(1, 1, order='F') + +cov_re_ml_irf_6 = np.array([ + 0.2587624, 0, + 0, 2.188653]).reshape(2, 2, order='F') + +scale_ml_irf_6 = np.array([0.2432694]) + +loglike_ml_irf_6 = np.array([-382.6581]) + +coef_reml_irf_6 = np.array([-0.8873394]) + +vcov_reml_irf_6 = np.array([0.002463375]).reshape(1, 1, order='F') + +cov_re_reml_irf_6 = np.array([ + 0.2588157, 0, + 0, 2.188876]).reshape(2, 2, order='F') + +scale_reml_irf_6 = np.array([0.2454935]) + +loglike_reml_irf_6 = np.array([-384.7441]) + +coef_ml_drf_7 = np.array([-0.9645281]) + +vcov_ml_drf_7 = np.array([0.01994]).reshape(1, 1, order='F') + +cov_re_ml_drf_7 = np.array([ + 0.2051329, 0.0734377, + 0.0734377, 3.285381]).reshape(2, 2, order='F') + +scale_ml_drf_7 = np.array([3.423247]) + +loglike_ml_drf_7 = np.array([-587.7101]) + +ranef_mean_ml_drf_7 = np.array([0.07007965, -0.2920284]) + +ranef_condvar_ml_drf_7 = np.array([ + 0.1823183, 0.02247519, + 0.02247519, 1.125011]).reshape(2, 2, order='F') + +coef_reml_drf_7 = np.array([-0.9647862]) + +vcov_reml_drf_7 = np.array([0.02002546]).reshape(1, 1, order='F') + +cov_re_reml_drf_7 = np.array([ + 0.2056226, 0.0726139, + 0.0726139, 3.2876]).reshape(2, 2, order='F') + +scale_reml_drf_7 = np.array([3.440244]) + +loglike_reml_drf_7 = np.array([-588.7476]) + +ranef_mean_reml_drf_7 = np.array([0.07000628, -0.2916737]) + +ranef_condvar_reml_drf_7 = np.array([ + 0.1828266, 0.02229138, + 0.02229138, 1.128947]).reshape(2, 2, order='F') + +coef_ml_irf_7 = np.array([-0.9665524]) + +vcov_ml_irf_7 = np.array([0.01998144]).reshape(1, 1, order='F') + +cov_re_ml_irf_7 = np.array([ + 0.2021561, 0, 0, 3.270735]).reshape(2, 2, order='F') + +scale_ml_irf_7 = np.array([3.423186]) + +loglike_ml_irf_7 = np.array([-587.7456]) + +coef_reml_irf_7 = np.array([-0.9667854]) + +vcov_reml_irf_7 = np.array([0.02006657]).reshape(1, 1, order='F') + +cov_re_reml_irf_7 = np.array([ + 0.2026938, 0, 0, 3.273129]).reshape(2, 2, order='F') + +scale_reml_irf_7 = np.array([3.440197]) + +loglike_reml_irf_7 = np.array([-588.782]) + +coef_ml_drf_8 = np.array([-1.083882, 0.8955623]) + +vcov_ml_drf_8 = np.array([ + 0.002491643, 0.0001693531, + 0.0001693531, 0.00253309]).reshape(2, 2, order='F') + +cov_re_ml_drf_8 = np.array([ + 0.1506188, 0.126091, 0.126091, 2.485462]).reshape(2, 2, order='F') + +scale_ml_drf_8 = np.array([0.2586519]) + +loglike_ml_drf_8 = np.array([-363.6234]) + +ranef_mean_ml_drf_8 = np.array([0.2852326, -0.5047804]) + +ranef_condvar_ml_drf_8 = np.array([ + 0.05400391, 0.002330104, + 0.002330104, 0.122761]).reshape(2, 2, order='F') + +coef_reml_drf_8 = np.array([-1.083938, 0.8956893]) + +vcov_reml_drf_8 = np.array([ + 0.002528969, 0.0001712206, + 0.0001712206, 0.002573335]).reshape(2, 2, order='F') + +cov_re_reml_drf_8 = np.array([ + 0.1505098, 0.1256311, + 0.1256311, 2.484219]).reshape(2, 2, order='F') + +scale_reml_drf_8 = np.array([0.2635901]) + +loglike_reml_drf_8 = np.array([-367.7667]) + +ranef_mean_reml_drf_8 = np.array([0.2829798, -0.5042857]) + +ranef_condvar_reml_drf_8 = np.array([ + 0.05463632, 0.002393538, + 0.002393538, 0.1249828]).reshape(2, 2, order='F') + +coef_ml_irf_8 = np.array([-1.079481, 0.898216]) + +vcov_ml_irf_8 = np.array([ + 0.002511536, 0.0001812511, + 0.0001812511, 0.002573405]).reshape(2, 2, order='F') + +cov_re_ml_irf_8 = np.array([ + 0.1498568, 0, 0, 2.403849]).reshape(2, 2, order='F') + +scale_ml_irf_8 = np.array([0.2605245]) + +loglike_ml_irf_8 = np.array([-364.4824]) + +coef_reml_irf_8 = np.array([-1.07952, 0.8983678]) + +vcov_reml_irf_8 = np.array([ + 0.002549354, 0.0001833386, + 0.0001833386, 0.002614672]).reshape(2, 2, order='F') + +cov_re_reml_irf_8 = np.array([ + 0.1497193, 0, 0, 2.403076]).reshape(2, 2, order='F') + +scale_reml_irf_8 = np.array([0.2655558]) + +loglike_reml_irf_8 = np.array([-368.6141]) + +coef_ml_drf_9 = np.array([-1.272698, 0.8617471]) + +vcov_ml_drf_9 = np.array([ + 0.02208544, 0.001527479, 0.001527479, 0.02597528]).reshape(2, 2, order='F') + +cov_re_ml_drf_9 = np.array([ + 0.510175, 0.08826114, 0.08826114, 3.342888]).reshape(2, 2, order='F') + +scale_ml_drf_9 = np.array([3.722112]) + +loglike_ml_drf_9 = np.array([-589.8274]) + +ranef_mean_ml_drf_9 = np.array([0.03253644, 0.224043]) + +ranef_condvar_ml_drf_9 = np.array([ + 0.3994872, 0.02478884, 0.02478884, 1.195077]).reshape(2, 2, order='F') + +coef_reml_drf_9 = np.array([-1.272483, 0.861814]) + +vcov_reml_drf_9 = np.array([ + 0.02228589, 0.001535598, 0.001535598, 0.0262125]).reshape(2, 2, order='F') + +cov_re_reml_drf_9 = np.array([ + 0.5123204, 0.08897376, 0.08897376, 3.341722]).reshape(2, 2, order='F') + +scale_reml_drf_9 = np.array([3.764058]) + +loglike_reml_drf_9 = np.array([-591.7188]) + +ranef_mean_reml_drf_9 = np.array([0.03239688, 0.2230525]) + +ranef_condvar_reml_drf_9 = np.array([ + 0.401762, 0.02521271, 0.02521271, 1.203536]).reshape(2, 2, order='F') + +coef_ml_irf_9 = np.array([-1.277018, 0.86395]) + +vcov_ml_irf_9 = np.array([ + 0.02205706, 0.001509887, 0.001509887, 0.02599941]).reshape(2, 2, order='F') + +cov_re_ml_irf_9 = np.array([ + 0.5086816, 0, 0, 3.312757]).reshape(2, 2, order='F') + +scale_ml_irf_9 = np.array([3.72105]) + +loglike_ml_irf_9 = np.array([-589.8628]) + +coef_reml_irf_9 = np.array([-1.276822, 0.8640243]) + +vcov_reml_irf_9 = np.array([ + 0.02225705, 0.001517774, 0.001517774, 0.02623682]).reshape(2, 2, order='F') + +cov_re_reml_irf_9 = np.array([ + 0.5107725, 0, 0, 3.31152]).reshape(2, 2, order='F') + +scale_reml_irf_9 = np.array([3.762967]) + +loglike_reml_irf_9 = np.array([-591.7543]) + +coef_ml_drf_10 = np.array([-0.9419566, -0.02359824, 1.085796]) + +vcov_ml_drf_10 = np.array([ + 0.001963536, -0.0003221793, 0.0001950186, -0.0003221793, + 0.002534251, 0.0004107718, 0.0001950186, 0.0004107718, + 0.002580736]).reshape(3, 3, order='F') + +cov_re_ml_drf_10 = np.array([ + 0.2040541, 0.09038325, 0.09038325, 2.218903]).reshape(2, 2, order='F') + +scale_ml_drf_10 = np.array([0.2558286]) + +loglike_ml_drf_10 = np.array([-379.6591]) + +ranef_mean_ml_drf_10 = np.array([0.03876325, -0.725853]) + +ranef_condvar_ml_drf_10 = np.array([ + 0.1988816, 0.1872403, 0.1872403, 0.4052274]).reshape(2, 2, order='F') + +coef_reml_drf_10 = np.array([-0.9426367, -0.02336203, 1.085733]) + +vcov_reml_drf_10 = np.array([ + 0.002011348, -0.0003300612, 0.0002002948, -0.0003300612, + 0.002589149, 0.000418987, 0.0002002948, 0.000418987, + 0.002637433]).reshape(3, 3, order='F') + +cov_re_reml_drf_10 = np.array([ + 0.2034827, 0.09063836, 0.09063836, 2.219191]).reshape(2, 2, order='F') + +scale_reml_drf_10 = np.array([0.2630213]) + +loglike_reml_drf_10 = np.array([-386.0008]) + +ranef_mean_reml_drf_10 = np.array([0.03838686, -0.7240812]) + +ranef_condvar_reml_drf_10 = np.array([ + 0.1983981, 0.1865469, 0.1865469, 0.4100937]).reshape(2, 2, order='F') + +coef_ml_irf_10 = np.array([-0.9441033, -0.01755913, 1.088568]) + +vcov_ml_irf_10 = np.array([ + 0.001960114, -0.0003215658, 0.0001944005, -0.0003215658, + 0.00253441, 0.0004061179, 0.0001944005, 0.0004061179, + 0.002589158]).reshape(3, 3, order='F') + +cov_re_ml_irf_10 = np.array([ + 0.2032228, 0, 0, 2.192893]).reshape(2, 2, order='F') + +scale_ml_irf_10 = np.array([0.2553399]) + +loglike_ml_irf_10 = np.array([-380.162]) + +coef_reml_irf_10 = np.array([-0.9448257, -0.01722993, 1.088557]) + +vcov_reml_irf_10 = np.array([ + 0.00200783, -0.0003294349, 0.0001996613, -0.0003294349, + 0.00258937, 0.0004141667, 0.0001996613, 0.0004141667, + 0.002646242]).reshape(3, 3, order='F') + +cov_re_reml_irf_10 = np.array([ + 0.2026653, 0, 0, 2.193124]).reshape(2, 2, order='F') + +scale_reml_irf_10 = np.array([0.2625147]) + +loglike_reml_irf_10 = np.array([-386.5024]) + +coef_ml_drf_11 = np.array([-1.36971, 0.1596278, 0.8588724]) + +vcov_ml_drf_11 = np.array([ + 0.0232326, 0.00172214, 0.002275343, 0.00172214, + 0.02318941, 0.0004755663, 0.002275343, 0.0004755663, + 0.02123474]).reshape(3, 3, order='F') + +cov_re_ml_drf_11 = np.array([ + 0.3719096, 0.332198, 0.332198, 1.120588]).reshape(2, 2, order='F') + +scale_ml_drf_11 = np.array([4.849781]) + +loglike_ml_drf_11 = np.array([-601.6432]) + +ranef_mean_ml_drf_11 = np.array([-0.4256917, -0.3907759]) + +ranef_condvar_ml_drf_11 = np.array([ + 0.2987928, 0.1992074, 0.1992074, 0.7477486]).reshape(2, 2, order='F') + +coef_reml_drf_11 = np.array([-1.370236, 0.1597671, 0.8585994]) + +vcov_reml_drf_11 = np.array([ + 0.02351795, 0.001749756, 0.002301599, 0.001749756, + 0.02346869, 0.0004785668, 0.002301599, 0.0004785668, + 0.02149093]).reshape(3, 3, order='F') + +cov_re_reml_drf_11 = np.array([ + 0.3680346, 0.3324419, 0.3324419, 1.118623]).reshape(2, 2, order='F') + +scale_reml_drf_11 = np.array([4.922222]) + +loglike_reml_drf_11 = np.array([-604.5746]) + +ranef_mean_reml_drf_11 = np.array([-0.4168539, -0.3879533]) + +ranef_condvar_reml_drf_11 = np.array([ + 0.2965372, 0.2010191, 0.2010191, 0.7503986]).reshape(2, 2, order='F') + +coef_ml_irf_11 = np.array([-1.370117, 0.1414964, 0.8466083]) + +vcov_ml_irf_11 = np.array([ + 0.02319951, 0.001705996, 0.002265252, 0.001705996, + 0.02345623, 0.000514879, 0.002265252, 0.000514879, + 0.02153162]).reshape(3, 3, order='F') + +cov_re_ml_irf_11 = np.array([ + 0.4004789, 0, 0, 1.108087]).reshape(2, 2, order='F') + +scale_ml_irf_11 = np.array([4.78776]) + +loglike_ml_irf_11 = np.array([-602.308]) + +coef_reml_irf_11 = np.array([-1.370663, 0.1417561, 0.8464232]) + +vcov_reml_irf_11 = np.array([ + 0.02348548, 0.001734072, 0.002291519, 0.001734072, + 0.02373715, 0.0005177618, 0.002291519, 0.0005177618, + 0.02178966]).reshape(3, 3, order='F') + +cov_re_reml_irf_11 = np.array([ + 0.3966454, 0, 0, 1.106551]).reshape(2, 2, order='F') + +scale_reml_irf_11 = np.array([4.860342]) + +loglike_reml_irf_11 = np.array([-605.2274]) diff --git a/statsmodels/regression/tests/results/lme_results.R b/statsmodels/regression/tests/results/lme_results.R new file mode 100644 index 0000000..3aef78a --- /dev/null +++ b/statsmodels/regression/tests/results/lme_results.R @@ -0,0 +1,90 @@ +library(lme4) +library(R2nparray) + +files = list.files(path="results", pattern="lme...csv") + +rslt = list() + +# Check the code with a sequence of data files with different +# dimensions and random effects structures. +for (file in files) { + + # Fit a model with independent random effects (irf=TRUE) or + # dependent random effects (irf=FALSE). + for (irf in c(FALSE, TRUE)) { + + if (irf) { + rf = "irf" + } else { + rf = "drf" + } + + # Use REML or ML estimation + for (reml in c(FALSE, TRUE)) { + + if (reml) { + meth = "reml" + } else { + meth = "ml" + } + + data = read.csv(paste("results", file, sep="/")) + + exog_fe_ix = grep("exog_fe", names(data)) + exog_re_ix = grep("exog_re", names(data)) + + # No need to check independent random effects when there is + # only one of them. + if (irf & (length(exog_re_ix) == 1)) { + next + } + + pr = length(exog_re_ix) + fml_fe = paste(names(data)[exog_fe_ix], collapse="+") + + if (irf) { + st = NULL + for (ik in exog_re_ix) { + st[length(st) + 1] = sprintf("(0 + %s | groups)", names(data)[ik]) + } + fml_re = paste(st, collapse="+") + + fml = sprintf("endog ~ 0 + %s + %s", fml_fe, fml_re) + } else { + fml_re = paste(names(data)[exog_re_ix], collapse="+") + fml = sprintf("endog ~ 0 + %s + (0 + %s | groups)", fml_fe, fml_re) + } + + md = lmer(as.formula(fml), data=data, REML=reml) + + ds_ix = as.integer(substr(file, 4, 6)) + rslt[[sprintf("coef_%s_%s_%d", meth, rf, ds_ix)]] = as.vector(fixef(md)) + rslt[[sprintf("vcov_%s_%s_%d", meth, rf, ds_ix)]] = as.matrix(vcov(md)) + if (irf) { + rev = NULL + for (k in 1:length(exog_re_ix)) { + rev[k] = as.numeric(VarCorr(md)[[k]]) + } + rev = diag(rev) + rslt[[sprintf("cov_re_%s_%s_%d", meth, rf, ds_ix)]] = rev + } else { + rslt[[sprintf("cov_re_%s_%s_%d", meth, rf, ds_ix)]] = array(as.numeric(VarCorr(md)$groups), + c(pr, pr)) + } + rslt[[sprintf("scale_%s_%s_%d", meth, rf, ds_ix)]] = attr(VarCorr(md), "sc")^2 + rslt[[sprintf("loglike_%s_%s_%d", meth, rf, ds_ix)]] = as.numeric(logLik(md)) + + # Apparently lmer does not support these things when the random effects + # are independent. + if (!irf) { + reo = ranef(md, condVar=TRUE) + re = as.matrix(reo$groups) + condvar = attr(reo$groups, "postVar") + rslt[[sprintf("ranef_mean_%s_%s_%d", meth, rf, ds_ix)]] = re[1,] + rslt[[sprintf("ranef_condvar_%s_%s_%d", meth, rf, ds_ix)]] = condvar[,,1] + } + } + } +} + +R2nparray(rslt, fname="lme_r_results.py") diff --git a/statsmodels/regression/tests/results/macro_gr_corc_stata.py b/statsmodels/regression/tests/results/macro_gr_corc_stata.py new file mode 100644 index 0000000..1fff8b1 --- /dev/null +++ b/statsmodels/regression/tests/results/macro_gr_corc_stata.py @@ -0,0 +1,514 @@ +import numpy as np + +from statsmodels.tools.testing import ParamsTableTestBunch +est = dict( + N=201, + df_m=2, + df_r=198, + F=221.0377347263228, + r2=.6906614775140222, + rmse=10.66735221013527, + mss=50304.8300537672, + rss=22530.89582866539, + r2_a=.6875368459737599, + ll=-759.5001027340874, + N_gaps=0, + tol=1.00000000000e-06, + max_ic=100, + ic=4, + dw=1.993977855026291, + dw_0=2.213805016982909, + rho=-.1080744185979703, + rank=3, + cmd="prais", + title="Prais-Winsten AR(1) regression", + cmdline="prais g_realinv g_realgdp L.realint, corc rhotype(tscorr)", + tranmeth="corc", + method="iterated", + depvar="g_realinv", + predict="prais_p", + rhotype="tscorr", + vce="ols", + properties="b V", +) + +params_table = np.array([ + 4.3704012379033, + .20815070994319, + 20.996331163589, + 2.939551581e-52, + 3.9599243998713, + 4.7808780759353, + 198, + 1.9720174778363, + 0, + -.5792713864578, + .26801792119756, + -2.1613158697355, + .03187117882819, + -1.1078074114328, + -.05073536148285, + 198, + 1.9720174778363, + 0, + -9.509886614971, + .99049648344574, + -9.6011311235432, + 3.656321106e-18, + -11.463162992061, + -7.5566102378806, + 198, + 1.9720174778363, + 0]).reshape(3, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = 'g_realgdp L.realint _cons'.split() + +cov = np.array([ + .04609356125016, + -.00228616599156, + -.13992917065996, + -.00228616599156, + .08103590074551, + -.10312637237487, + -.13992917065996, + -.10312637237487, + 1.1416832888557]).reshape(3, 3) + +cov_colnames = 'g_realgdp L.realint _cons'.split() + +cov_rownames = 'g_realgdp L.realint _cons'.split() + +fittedvalues = np.array([ + 34.092961143383, + -12.024019193439, + -4.0322884907855, + 26.930266763436, + -18.388570551209, + -8.1324920108371, + -31.875322937642, + .21814034941388, + 21.286872048596, + 18.046781817358, + 24.839977757054, + 20.524927286892, + 9.4135589847345, + 5.0452309081846, + -5.6551802066401, + 11.985460837387, + 10.881000973745, + 22.932381778173, + 2.2243337561549, + 28.678018086877, + 8.4960232938048, + 12.595931232461, + -5.9735838194583, + 31.918171668207, + 12.51486507374, + 24.858076725235, + 30.404510147102, + 32.036251557873, + -3.4858432808681, + .47271857077911, + 4.4052813399748, + 3.2797897853075, + -10.188593201973, + 4.2830255779438, + 3.2910087767189, + 26.047109629787, + 18.955198396277, + 2.5715957164729, + -2.3281798982217, + 17.032381944743, + -4.0901785042795, + .91987313367478, + -18.683722252157, + -12.984352504073, + -6.6160771495293, + 4.5273942020195, + -28.749156193466, + 38.148138299645, + -.57670949517535, + 4.4996010868259, + -5.6725761358388, + 20.923003763987, + 31.094336738501, + 6.5964070665898, + 18.667129468109, + 34.425102067117, + 12.495888351027, + -20.391896794875, + 9.6404042884163, + -23.337183583421, + -3.2089713311258, + -25.745423471535, + -13.275374642526, + -29.102203184727, + 3.6718187868943, + 20.796143264795, + 13.375486730466, + 30.503754833333, + 1.9832701043709, + -.33573283324142, + 3.8454619057923, + 11.198841650909, + 27.300615912881, + 21.617271919636, + -10.213387774549, + -3.041115945304, + 58.662013692103, + 9.3875351174185, + 14.62429232726, + -7.0289661733807, + -6.3287417283568, + 5.3688078321969, + -3.9071766792954, + -2.3350903711443, + -45.218293861742, + -12.518622374718, + 22.354531985202, + 24.642689788549, + -26.596828143888, + 8.8860015710942, + -35.108835611339, + -42.53255546273, + -6.0981548538498, + -17.177799997821, + -11.40329039155, + 7.0180843697455, + 26.705585327159, + 21.928461900264, + 23.355257443029, + 21.894505946705, + 17.657379506229, + 3.4294676089343, + .97440677130275, + 3.509217298751, + 3.2828913970637, + 14.944972085155, + 1.2923006012963, + 6.0435554866624, + -8.8442213362579, + 5.4509233390479, + -2.6794059247137, + -.48161809935521, + 8.4201161664985, + 4.549532431433, + 18.996304264647, + -1.8170413137623, + 11.849281819014, + -1.7066851102854, + 12.218564198008, + 4.6715818362824, + 2.108627710813, + 2.1972303599907, + -8.5249858114578, + 8.0728543937531, + -4.5685185423019, + -11.135138151837, + -24.047910391406, + -19.615146607087, + -.44428684605231, + -3.4877810606396, + -3.9736701841582, + 9.0239662841874, + 8.5557600343168, + 8.2271736548708, + 9.0458357352972, + -6.3116081663522, + 1.5636968490473, + -.95723547143789, + 13.44821815082, + 6.7721586886424, + 13.649238514998, + 1.1579094135284, + 8.6396143031575, + -6.7325794361447, + -7.0767574403351, + 3.1400395218988, + .91586368309611, + 1.2368141501238, + 19.694940608963, + 4.0145204498294, + 8.3107956501685, + 2.7428657521209, + 13.988676494758, + 10.116898229369, + 2.524027931198, + 4.6794023157157, + 3.5155627033849, + 11.945878601415, + 18.880925278224, + 4.5865622289454, + 3.2393307465763, + 11.062953867859, + 20.793966231154, + -6.3076444941097, + 23.178864105791, + -8.9873099715132, + -1.107322743866, + -16.332040882272, + .42734142108626, + -15.050781890016, + -4.6612306163595, + 4.565652288529, + .80725599873503, + -.87706444767528, + -8.5407936802022, + -1.3521383036839, + 4.4765977604986, + 19.623863498831, + 7.1113956960438, + 3.9798487855641, + 3.6934842863203, + 4.6801104799091, + 6.7218162617593, + 7.7832579175778, + -1.2290990957424, + 3.0474310004174, + 2.7567736850761, + 11.188206993423, + -4.3306276498455, + -9.5365114805844, + -.53338170341178, + -5.206342794124, + 4.1154674910376, + 4.7884361973806, + -.64799653797949, + -10.743852791188, + -2.461403042047, + -17.431541988995, + -36.151189705211, + -43.711601400093, + -12.334881925913, + 4.3341943478598]) + +fittedvalues_colnames = 'fittedvalues'.split() + +fittedvalues_rownames = ['r'+str(n) for n in range(1, 203)] + +fittedvalues_se = np.array([ + 1.6473872957314, + 1.0113850707964, + .7652190209006, + 1.534040692487, + 1.2322657893516, + .91158310011358, + 1.8788908534927, + .69811681139453, + 1.1767226952576, + .98858641944986, + 1.2396486964702, + 1.0822616701665, + .7753481322096, + .76860948102754, + .82419167032501, + .82704859414698, + .82559058693092, + 1.1856589638289, + .75525402187835, + 1.3922568629515, + .91202394595876, + .88520111465725, + .83302439819375, + 1.5372725435314, + .89177714550085, + 1.2372408530959, + 1.5528101417195, + 1.5366212693726, + .89043286423929, + .75705684478985, + .73518329909511, + 1.0572392569996, + .93211401184553, + .75196863280241, + .69360947719119, + 1.3106012580927, + 1.0209999290642, + .81133440956099, + .75559203443239, + .94831739014224, + .93322729630976, + .69417535741881, + 1.2398628905688, + 1.0261547060202, + .86379439641561, + .75032871325094, + 1.6696098440084, + 1.8282957404356, + .70460484132802, + .79812152719782, + .8016314317639, + 1.0872600753814, + 1.4987341895633, + .70529145955969, + 1.0149968053074, + 1.6467690495895, + 1.4677194036031, + 1.3384921199391, + 1.7046600039586, + 1.8412203199988, + 1.4367363864341, + 1.8103264820977, + 2.1242535073081, + 2.1101077640804, + .745443770473, + 1.3651585515035, + .94103291060948, + 1.5981517654886, + .77654854940188, + .96643611834989, + .97013991129283, + .97997241479455, + 1.9501042753844, + 1.1758285978818, + .9603215961611, + .96398854110297, + 2.7840981863809, + 1.413576103565, + 1.2364541532613, + .85434724833597, + 1.3715636637071, + 1.6066244823944, + 1.0686828612843, + 1.3176342918943, + 2.5021204574497, + 1.1330278834213, + 1.1636905462155, + 1.3340487203567, + 1.8517041947194, + 1.1639745295786, + 2.304428659791, + 2.6786336953086, + 2.5354570978302, + 1.1805089049206, + 1.4742162139537, + 2.1143611509083, + 1.5986085606212, + 1.4576906503482, + 1.5624993432094, + 1.3158885079997, + 1.3538646144937, + 1.619414838601, + 1.5015020934095, + 1.3855500128549, + .86402762365746, + 1.2492579410465, + 1.0127848313981, + .7158840034754, + 2.6885176805365, + .83774886448436, + .81595294371756, + .70504062914926, + .73023061883128, + .69228489060199, + 1.0360869522995, + .75590017576772, + .80137295502042, + .73813943198212, + .87064014103306, + .93205385237951, + .73787688995958, + .90978243354856, + 1.2648707813937, + .72349602267222, + .93927915871284, + 1.0172563832871, + 1.6776109713009, + 1.3175046180712, + 1.1171209329088, + .78301185980687, + .78918856044216, + .74112029520399, + .74451851348435, + .76567972163601, + .87244845911018, + .90049784898067, + .76120214907789, + .71166085065751, + .90870901548966, + .70296598825213, + .84621726620383, + .69493630035748, + .75059818136305, + .87986442867509, + .86277076414594, + .87380573440987, + .80727321528666, + .70768449827207, + 1.040570485976, + .78088040381913, + .74507562843308, + .69792915007094, + 1.0988781063157, + 1.0027100639643, + .72261812289435, + .96179349200945, + 1.0868653716913, + .86400879397201, + 1.094197020208, + .74093235691985, + .67984744050458, + .8543509596351, + 1.0818096940792, + .84834713756928, + 1.1852779873098, + .89126223599075, + .87108400982232, + 1.1499249237911, + .75958251908371, + 1.1014705573844, + .80471862911078, + .68374044074715, + 1.1058743822208, + .78261190454279, + 1.1081858646506, + 1.1333032178191, + .79529240253276, + 1.0984357956297, + 1.0696598625923, + 1.1524457583105, + 1.0091448954756, + 1.2183914737714, + 1.1249902630054, + .78498039737187, + 1.04667102358, + .68135274836726, + 1.9934991355412, + .995276050357, + .77642057869112, + .92353879856007, + 1.5308870921603, + .78757917918954, + .73146117757714, + .70335029981046, + .73869949489316, + 1.6122142696964, + 1.023758116961, + 2.5353634753616, + 2.1057022389201, + 3.0080233992196, + 1.1648858140616, + 1.3964393384387]) + +fittedvalues_se_colnames = 'fittedvalues_se'.split() + +fittedvalues_se_rownames = ['r'+str(n) for n in range(1, 203)] + + +results = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + fittedvalues=fittedvalues, + fittedvalues_colnames=fittedvalues_colnames, + fittedvalues_rownames=fittedvalues_rownames, + fittedvalues_se=fittedvalues_se, + fittedvalues_se_colnames=fittedvalues_se_colnames, + fittedvalues_se_rownames=fittedvalues_se_rownames, + **est +) diff --git a/statsmodels/regression/tests/results/pastes.csv b/statsmodels/regression/tests/results/pastes.csv new file mode 100644 index 0000000..16c18d8 --- /dev/null +++ b/statsmodels/regression/tests/results/pastes.csv @@ -0,0 +1,61 @@ +"","strength","batch","cask","sample" +"1",62.8,"A","a","A:a" +"2",62.6,"A","a","A:a" +"3",60.1,"A","b","A:b" +"4",62.3,"A","b","A:b" +"5",62.7,"A","c","A:c" +"6",63.1,"A","c","A:c" +"7",60,"B","a","B:a" +"8",61.4,"B","a","B:a" +"9",57.5,"B","b","B:b" +"10",56.9,"B","b","B:b" +"11",61.1,"B","c","B:c" +"12",58.9,"B","c","B:c" +"13",58.7,"C","a","C:a" +"14",57.5,"C","a","C:a" +"15",63.9,"C","b","C:b" +"16",63.1,"C","b","C:b" +"17",65.4,"C","c","C:c" +"18",63.7,"C","c","C:c" +"19",57.1,"D","a","D:a" +"20",56.4,"D","a","D:a" +"21",56.9,"D","b","D:b" +"22",58.6,"D","b","D:b" +"23",64.7,"D","c","D:c" +"24",64.5,"D","c","D:c" +"25",55.1,"E","a","E:a" +"26",55.1,"E","a","E:a" +"27",54.7,"E","b","E:b" +"28",54.2,"E","b","E:b" +"29",58.8,"E","c","E:c" +"30",57.5,"E","c","E:c" +"31",63.4,"F","a","F:a" +"32",64.9,"F","a","F:a" +"33",59.3,"F","b","F:b" +"34",58.1,"F","b","F:b" +"35",60.5,"F","c","F:c" +"36",60,"F","c","F:c" +"37",62.5,"G","a","G:a" +"38",62.6,"G","a","G:a" +"39",61,"G","b","G:b" +"40",58.7,"G","b","G:b" +"41",56.9,"G","c","G:c" +"42",57.7,"G","c","G:c" +"43",59.2,"H","a","H:a" +"44",59.4,"H","a","H:a" +"45",65.2,"H","b","H:b" +"46",66,"H","b","H:b" +"47",64.8,"H","c","H:c" +"48",64.1,"H","c","H:c" +"49",54.8,"I","a","I:a" +"50",54.8,"I","a","I:a" +"51",64,"I","b","I:b" +"52",64,"I","b","I:b" +"53",57.7,"I","c","I:c" +"54",56.8,"I","c","I:c" +"55",58.3,"J","a","J:a" +"56",59.3,"J","a","J:a" +"57",59.2,"J","b","J:b" +"58",59.2,"J","b","J:b" +"59",58.9,"J","c","J:c" +"60",56.6,"J","c","J:c" diff --git a/statsmodels/regression/tests/results/results_grunfeld_ols_robust_cluster.py b/statsmodels/regression/tests/results/results_grunfeld_ols_robust_cluster.py new file mode 100644 index 0000000..a403781 --- /dev/null +++ b/statsmodels/regression/tests/results/results_grunfeld_ols_robust_cluster.py @@ -0,0 +1,817 @@ +import numpy as np + +from statsmodels.tools.testing import ParamsTableTestBunch + + +est = dict( + N_clust=10, + N=200, + df_m=2, + df_r=9, + F=51.59060716590177, + r2=.8124080178314147, + rmse=94.40840193979599, + mss=7604093.484267689, + rss=1755850.432294737, + r2_a=.8105035307027997, + ll=-1191.80235741801, + ll_0=-1359.150955647688, + rank=3, + cmdline="regress invest mvalue kstock, vce(cluster company)", + title="Linear regression", + marginsok="XB default", + vce="cluster", + depvar="invest", + cmd="regress", + properties="b V", + predict="regres_p", + model="ols", + estat_cmd="regress_estat", + vcetype="Robust", + clustvar="company", + ) + +params_table = np.array([ + .11556215606596, .01589433647768, 7.2706499090564, .00004710548549, + .07960666895505, .15151764317688, 9, 2.2621571627982, + 0, .23067848754982, .08496711097464, 2.7149150406994, + .02380515903536, .03846952885627, .42288744624337, 9, + 2.2621571627982, 0, -42.714369016733, 20.425202580078, + -2.0912580352272, .06604843284516, -88.919387334862, 3.4906493013959, + 9, 2.2621571627982, 0]).reshape(3, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = 'mvalue kstock _cons'.split() + +cov = np.array([ + .00025262993207, -.00065043385106, .20961897960949, -.00065043385106, + .00721940994738, -1.2171040967615, .20961897960949, -1.2171040967615, + 417.18890043724]).reshape(3, 3) + +cov_colnames = 'mvalue kstock _cons'.split() + +cov_rownames = 'mvalue kstock _cons'.split() + + +results_cluster = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +est = dict( + N=200, + inexog_ct=2, + exexog_ct=0, + endog_ct=0, + partial_ct=0, + N_clust=10, + df_m=2, + sdofminus=0, + dofminus=0, + r2=.8124080178314146, + rmse=93.69766358599176, + rss=1755850.432294737, + mss=7604093.484267682, + r2_a=.8105035307027995, + F=51.59060716590192, + Fp=.0000117341240941, + Fdf1=2, + Fdf2=9, + yy=13620706.07273678, + yyc=9359943.916562419, + partialcons=0, + cons=1, + jdf=0, + j=0, + ll=-1191.802357418011, + rankV=3, + rankS=3, + rankxx=3, + rankzz=3, + r2c=.8124080178314146, + r2u=.8710896173136538, + clustvar="company", + hacsubtitleV="Statistics robust to heteroskedasticity and clustering on company", # noqa:E501 + hacsubtitleB="Estimates efficient for homoskedasticity only", + title="OLS estimation", + predict="ivreg2_p", + version="03.1.07", + cmdline="ivreg2 invest mvalue kstock, cluster(company)", + cmd="ivreg2", + model="ols", + depvar="invest", + vcetype="Robust", + vce="robust cluster", + partialsmall="small", + inexog="mvalue kstock", + insts="mvalue kstock", + properties="b V", +) + +params_table = np.array([ + .11556215606596, .01500272788516, 7.7027429245215, 1.331761148e-14, + .08615734974119, .14496696239074, np.nan, 1.9599639845401, + 0, .23067848754982, .08020079648691, 2.8762618035529, + .00402415789383, .07348781490405, .38786916019559, np.nan, + 1.9599639845401, 0, -42.714369016733, 19.27943055305, + -2.2155410088072, .02672295281194, -80.501358543152, -4.9273794903145, + np.nan, 1.9599639845401, 0]).reshape(3, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'mvalue kstock _cons'.split() + +cov = np.array([ + .000225081844, -.00057950714469, .1867610305767, -.00057950714469, + .00643216775713, -1.0843847053056, .1867610305767, -1.0843847053056, + 371.69644244987]).reshape(3, 3) + +cov_colnames = 'mvalue kstock _cons'.split() + +cov_rownames = 'mvalue kstock _cons'.split() + + +results_cluster_large = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + +est = dict( + N=200, + N_g=10, + df_m=2, + df_r=9, + F=97.97910905239282, + r2=.8124080178314147, + rmse=94.40840193979599, + lag=4, + cmd="xtscc", + predict="xtscc_p", + method="Pooled OLS", + depvar="invest", + vcetype="Drisc/Kraay", + title="Regression with Driscoll-Kraay standard errors", + groupvar="company", + properties="b V", + ) + +params_table = np.array([ + .11556215606596, .0134360177573, 8.6009231420662, .00001235433261, + .08516777225681, .14595653987512, 9, 2.2621571627982, + 0, .23067848754982, .04930800664089, 4.678317037431, + .00115494570515, .11913602714384, .3422209479558, 9, + 2.2621571627982, 0, -42.714369016733, 12.190347184209, + -3.5039501641153, .0066818746948, -70.290850216489, -15.137887816977, + 9, 2.2621571627982, 0]).reshape(3, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = 'mvalue kstock _cons'.split() + +cov = np.array([ + .00018052657317, -.00035661054613, -.06728261073866, -.00035661054613, + .0024312795189, -.32394785247278, -.06728261073866, -.32394785247278, + 148.60456447156]).reshape(3, 3) + +cov_colnames = 'mvalue kstock _cons'.split() + +cov_rownames = 'mvalue kstock _cons'.split() + + +results_nw_groupsum4 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + +est = dict( + df_m=2, + df_r=197, + F=73.07593045506036, + N=200, + lag=4, + rank=3, + title="Regression with Newey-West standard errors", + cmd="newey", + cmdline="newey invest mvalue kstock, lag(4) force", + estat_cmd="newey_estat", + predict="newey_p", + vcetype="Newey-West", + depvar="invest", + properties="b V", +) + +params_table = np.array([ + .11556215606596, .01142785251475, 10.112324771147, 1.251631065e-19, + .0930255277205, .13809878441142, 197, 1.9720790337785, + 0, .23067848754982, .06842168281423, 3.3714237660029, + .00089998163666, .09574552141602, .36561145368361, 197, + 1.9720790337785, 0, -42.714369016733, 16.179042041128, + -2.6401049523298, .00895205094219, -74.620718612662, -10.808019420804, + 197, 1.9720790337785, 0]).reshape(3, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = 'mvalue kstock _cons'.split() + +cov = np.array([ + .0001305958131, -.00022910455176, .00889686530849, -.00022910455176, + .00468152667913, -.88403667445531, .00889686530849, -.88403667445531, + 261.76140136858]).reshape(3, 3) + +cov_colnames = 'mvalue kstock _cons'.split() + +cov_rownames = 'mvalue kstock _cons'.split() + + +results_nw_panel4 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + +est = dict( + N=200, + inexog_ct=2, + exexog_ct=0, + endog_ct=0, + partial_ct=0, + df_r=9, + N_clust=10, + N_clust1=10, + N_clust2=20, + df_m=2, + sdofminus=0, + dofminus=0, + r2=.8124080178314146, + rmse=94.40840193979601, + rss=1755850.432294737, + mss=7604093.484267682, + r2_a=.8105035307027995, + F=57.99124535923564, + Fp=7.21555935862e-06, + Fdf1=2, + partialcons=0, + cons=1, + jdf=0, + j=0, + ll=-1191.802357418011, + rankV=3, + rankS=3, + rankxx=3, + rankzz=3, + r2c=.8124080178314146, + r2u=.8710896173136538, + yyc=9359943.916562419, + yy=13620706.07273678, + Fdf2=9, + clustvar="company time", + hacsubtitleV="Statistics robust to heteroskedasticity and clustering on company and time", # noqa:E501 + hacsubtitleB="Estimates efficient for homoskedasticity only", + title="OLS estimation", + predict="ivreg2_p", + version="03.1.07", + cmdline="ivreg2 invest mvalue kstock, cluster(company time) small", + cmd="ivreg2", + model="ols", + depvar="invest", + vcetype="Robust", + clustvar2="time", + clustvar1="company", + vce="robust two-way cluster", + partialsmall="small", + small="small", + inexog="mvalue kstock", + insts="mvalue kstock", + properties="b V", +) + +params_table = np.array([ + .11556215606596, .01635175387097, 7.0672636695645, .00005873628221, + .07857191892244, .15255239320949, 9, 2.2621571627982, + 0, .23067848754982, .07847391274682, 2.9395563375824, + .01649863150032, .05315816373679, .40819881136285, 9, + 2.2621571627982, 0, -42.714369016733, 19.505607409785, + -2.189850750062, .05626393734425, -86.839118533508, 1.4103805000422, + 9, 2.2621571627982, 0]).reshape(3, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = 'mvalue kstock _cons'.split() + +cov = np.array([ + .00026737985466, -.00070163493529, .19641438763743, -.00070163493529, + .0061581549818, -.99627581152391, .19641438763743, -.99627581152391, + 380.46872042467]).reshape(3, 3) + +cov_colnames = 'mvalue kstock _cons'.split() + +cov_rownames = 'mvalue kstock _cons'.split() + + +results_cluster_2groups_small = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + +est = dict( + N=200, + inexog_ct=2, + exexog_ct=0, + endog_ct=0, + partial_ct=0, + N_clust=10, + N_clust1=10, + N_clust2=20, + df_m=2, + sdofminus=0, + dofminus=0, + r2=.8124080178314146, + rmse=93.69766358599176, + rss=1755850.432294737, + mss=7604093.484267682, + r2_a=.8105035307027995, + F=57.99124535923565, + Fp=7.21555935862e-06, + Fdf1=2, + Fdf2=9, + partialcons=0, + cons=1, + jdf=0, + j=0, + ll=-1191.802357418011, + rankV=3, + rankS=3, + rankxx=3, + rankzz=3, + r2c=.8124080178314146, + r2u=.8710896173136538, + yyc=9359943.916562419, + yy=13620706.07273678, + clustvar="company time", + hacsubtitleV="Statistics robust to heteroskedasticity and clustering on company and time", # noqa:E501 + hacsubtitleB="Estimates efficient for homoskedasticity only", + title="OLS estimation", + predict="ivreg2_p", + version="03.1.07", + cmdline="ivreg2 invest mvalue kstock, cluster(company time)", + cmd="ivreg2", + model="ols", + depvar="invest", + vcetype="Robust", + clustvar2="time", + clustvar1="company", + vce="robust two-way cluster", + partialsmall="small", + inexog="mvalue kstock", + insts="mvalue kstock", + properties="b V", +) + +params_table = np.array([ + .11556215606596, .01543448599542, 7.487269488613, 7.032121917e-14, + .08531111939505, .14581319273688, np.nan, 1.9599639845401, + 0, .23067848754982, .07407184066336, 3.1142534799181, + .00184410987255, .08550034758104, .3758566275186, np.nan, + 1.9599639845401, 0, -42.714369016733, 18.411420987265, + -2.319993065515, .02034125246974, -78.800091055978, -6.6286469774879, + np.nan, 1.9599639845401, 0]).reshape(3, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'mvalue kstock _cons'.split() + +cov = np.array([ + .00023822335794, -.00062512499511, .17499633632219, -.00062512499511, + .00548663757926, -.88763669036779, .17499633632219, -.88763669036779, + 338.98042277032]).reshape(3, 3) + +cov_colnames = 'mvalue kstock _cons'.split() + +cov_rownames = 'mvalue kstock _cons'.split() + + +results_cluster_2groups_large = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + +est = dict( + N=200, + inexog_ct=2, + exexog_ct=0, + endog_ct=0, + partial_ct=0, + bw=5, + N_clust=20, + df_m=2, + sdofminus=0, + dofminus=0, + r2=.8124080178314146, + rmse=93.69766358599176, + rss=1755850.432294737, + mss=7604093.484267682, + r2_a=.8105035307027995, + F=92.14467466912147, + Fp=1.66368179227e-10, + Fdf1=2, + Fdf2=19, + yy=13620706.07273678, + partialcons=0, + cons=1, + jdf=0, + j=0, + ll=-1191.802357418011, + rankV=3, + rankS=3, + rankxx=3, + rankzz=3, + r2c=.8124080178314146, + r2u=.8710896173136538, + yyc=9359943.916562419, + clustvar="year", + hacsubtitleV2="and kernel-robust to common correlated disturbances (Driscoll-Kraay)", # noqa:E501 + hacsubtitleV="Statistics robust to heteroskedasticity and clustering on year", # noqa:E501 + hacsubtitleB="Estimates efficient for homoskedasticity only", + title="OLS estimation", + predict="ivreg2_p", + version="03.1.07", + cmdline="ivreg2 invest mvalue kstock, dkraay(5)", + cmd="ivreg2", + model="ols", + depvar="invest", + vcetype="Robust", + vce="cluster ac bartlett bw=5", + partialsmall="small", + ivar="company", + tvar="year", + kernel="Bartlett", + inexog="mvalue kstock", + insts="mvalue kstock", + properties="b V", +) + +params_table = np.array([ + .11556215606596, .0134360177573, 8.6009231420662, 7.907743030e-18, + .08922804516602, .14189626696591, np.nan, 1.9599639845401, + 0, .23067848754982, .04930800664089, 4.678317037431, + 2.892390940e-06, .13403657038422, .32732040471542, np.nan, + 1.9599639845401, 0, -42.714369016733, 12.190347184209, + -3.5039501641153, .00045841113727, -66.607010456823, -18.821727576643, + np.nan, 1.9599639845401, 0]).reshape(3, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'mvalue kstock _cons'.split() + +cov = np.array([ + .00018052657317, -.00035661054613, -.06728261073866, -.00035661054613, + .0024312795189, -.32394785247278, -.06728261073866, -.32394785247278, + 148.60456447156]).reshape(3, 3) + +cov_colnames = 'mvalue kstock _cons'.split() + +cov_rownames = 'mvalue kstock _cons'.split() + + +results_nw_groupsum4_ivreg_large = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + +est = dict( + N=200, + inexog_ct=2, + exexog_ct=0, + endog_ct=0, + partial_ct=0, + bw=5, + df_r=19, + N_clust=20, + df_m=2, + sdofminus=0, + dofminus=0, + r2=.8124080178314146, + rmse=94.40840193979601, + rss=1755850.432294737, + mss=7604093.484267682, + r2_a=.8105035307027995, + F=92.14467466912149, + Fp=1.66368179227e-10, + Fdf1=2, + Fdf2=19, + partialcons=0, + cons=1, + jdf=0, + j=0, + ll=-1191.802357418011, + rankV=3, + rankS=3, + rankxx=3, + rankzz=3, + r2c=.8124080178314146, + r2u=.8710896173136538, + yyc=9359943.916562419, + yy=13620706.07273678, + clustvar="year", + hacsubtitleV2="and kernel-robust to common correlated disturbances (Driscoll-Kraay)", # noqa:E501 + hacsubtitleV="Statistics robust to heteroskedasticity and clustering on year", # noqa:E501 + hacsubtitleB="Estimates efficient for homoskedasticity only", + title="OLS estimation", + predict="ivreg2_p", + version="03.1.07", + cmdline="ivreg2 invest mvalue kstock, dkraay(5) small", + cmd="ivreg2", + model="ols", + depvar="invest", + vcetype="Robust", + vce="cluster ac bartlett bw=5", + partialsmall="small", + small="small", + ivar="company", + tvar="year", + kernel="Bartlett", + inexog="mvalue kstock", + insts="mvalue kstock", + properties="b V", +) + +params_table = np.array([ + .11556215606596, .0138548615926, 8.3409101775303, 8.967911239e-08, + .08656359748216, .14456071464977, 19, 2.0930240544083, + 0, .23067848754982, .0508450956047, 4.5368876743442, + .00022550505646, .12425847940049, .33709849569915, 19, + 2.0930240544083, 0, -42.714369016733, 12.570359466158, + -3.3980228752988, .00301793225123, -69.02443375196, -16.404304281506, + 19, 2.0930240544083, 0]).reshape(3, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = 'mvalue kstock _cons'.split() + +cov = np.array([ + .00019195718975, -.00037919048186, -.07154282413568, -.00037919048186, + .00258522374705, -.34445964542925, -.07154282413568, -.34445964542925, + 158.01393710842]).reshape(3, 3) + +cov_colnames = 'mvalue kstock _cons'.split() + +cov_rownames = 'mvalue kstock _cons'.split() + + +results_nw_groupsum4_ivreg_small = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + + +# ---------------------------------------------------------------- +# WLS + +est = dict( + N=200, + df_m=2, + df_r=197, + F=158.2726503915062, + r2=.7728224625923459, + rmse=35.1783035325949, + mss=829335.6968772264, + rss=243790.0687679817, + r2_a=.7705160916541971, + ll=-994.3622459900876, + ll_0=-1142.564592396746, + rank=3, + cmdline="regress invest mvalue kstock [aw=1/mvalue], robust", + title="Linear regression", + marginsok="XB default", + vce="robust", + depvar="invest", + cmd="regress", + properties="b V", + predict="regres_p", + model="ols", + estat_cmd="regress_estat", + wexp="= 1/mvalue", + wtype="aweight", + vcetype="Robust", +) + +params_table = np.array([ + .11694307068216, .00768545583365, 15.2161528494, 4.371656843e-35, + .10178674436759, .13209939699674, 197, 1.9720790337785, + 0, .10410756769914, .00986959606725, 10.548310892334, + 6.565731752e-21, .08464394422305, .12357119117523, 197, + 1.9720790337785, 0, -9.2723336171089, 2.3458404391932, + -3.9526702081656, .00010767530575, -13.898516363832, -4.6461508703863, + 197, 1.9720790337785, 0]).reshape(3, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = 'mvalue kstock _cons'.split() + +cov = np.array([ + .00005906623137, 6.805470065e-06, -.01210153268743, 6.805470065e-06, + .00009740892653, -.01511046663892, -.01210153268743, -.01511046663892, + 5.502967366154]).reshape(3, 3) + +cov_colnames = 'mvalue kstock _cons'.split() + +cov_rownames = 'mvalue kstock _cons'.split() + + +results_hc1_wls_small = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + +est = dict( + N_clust=10, + N=200, + df_m=2, + df_r=9, + F=22.90591346432732, + r2=.7728224625923459, + rmse=35.1783035325949, + mss=829335.6968772264, + rss=243790.0687679817, + r2_a=.7705160916541971, + ll=-994.3622459900876, + ll_0=-1142.564592396746, + rank=3, + cmdline="regress invest mvalue kstock[aw=1/mvalue], vce(cluster company)", + title="Linear regression", + marginsok="XB default", + vce="cluster", + depvar="invest", + cmd="regress", + properties="b V", + predict="regres_p", + model="ols", + estat_cmd="regress_estat", + wexp="= 1/mvalue", + wtype="aweight", + vcetype="Robust", + clustvar="company", +) + +params_table = np.array([ + .11694307068216, .02609630113434, 4.4812124936848, .00152974827456, + .05790913614858, .17597700521575, 9, 2.2621571627982, + 0, .10410756769914, .02285882773869, 4.5543703679489, + .00137730504553, .05239730679689, .15581782860139, 9, + 2.2621571627982, 0, -9.2723336171089, 5.7204731422962, + -1.6209032690934, .13948922172294, -22.212942910549, 3.6682756763312, + 9, 2.2621571627982, 0]).reshape(3, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = 'mvalue kstock _cons'.split() + +cov = np.array([ + .00068101693289, -.00006496077364, -.08926939086077, -.00006496077364, + .00052252600559, -.0697116307149, -.08926939086077, -.0697116307149, + 32.723812971732]).reshape(3, 3) + +cov_colnames = 'mvalue kstock _cons'.split() + +cov_rownames = 'mvalue kstock _cons'.split() + + +results_cluster_wls_small = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + +est = dict( + N=200, + inexog_ct=2, + exexog_ct=0, + endog_ct=0, + partial_ct=0, + N_clust=10, + df_m=2, + sdofminus=0, + dofminus=0, + r2=.772822462592346, + rmse=34.91346937558495, + rss=243790.0687679817, + mss=829335.6968772268, + r2_a=.7705160916541972, + F=22.9059134643273, + Fp=.000294548654088, + Fdf1=2, + Fdf2=9, + yy=1401938.856802022, + yyc=1073125.765645209, + partialcons=0, + cons=1, + jdf=0, + j=0, + ll=-994.3622459900874, + rankV=3, + rankS=3, + rankxx=3, + rankzz=3, + r2c=.772822462592346, + r2u=.8261050632949187, + clustvar="company", + hacsubtitleV="Statistics robust to heteroskedasticity and clustering on company", # noqa:E501 + hacsubtitleB="Estimates efficient for homoskedasticity only", + title="OLS estimation", + predict="ivreg2_p", + version="03.1.07", + cmdline="ivreg2 invest mvalue kstock [aw=1/mvalue], cluster(company)", + cmd="ivreg2", + wtype="aweight", + wexp="=1/mvalue", + model="ols", + depvar="invest", + vcetype="Robust", + vce="robust cluster", + partialsmall="small", + inexog="mvalue kstock", + insts="mvalue kstock", + properties="b V", + ) + +params_table = np.array([ + .11694307068216, .02463240320082, 4.7475298990826, 2.059159576e-06, + .06866444755588, .16522169380844, np.nan, 1.9599639845401, + 0, .10410756769914, .02157653909108, 4.8250355286218, + 1.399783125e-06, .06181832816961, .14639680722867, np.nan, + 1.9599639845401, 0, -9.2723336171089, 5.3995775192484, + -1.7172331694572, .08593657730569, -19.855311086568, 1.31064385235, + np.nan, 1.9599639845401, 0]).reshape(3, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'mvalue kstock _cons'.split() + +cov = np.array([ + .00060675528745, -.00005787711139, -.07953498994782, -.00005787711139, + .00046554703915, -.06210991017966, -.07953498994782, -.06210991017966, + 29.155437386372]).reshape(3, 3) + +cov_colnames = 'mvalue kstock _cons'.split() + +cov_rownames = 'mvalue kstock _cons'.split() + + +results_cluster_wls_large = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) diff --git a/statsmodels/regression/tests/results/results_macro_ols_robust.py b/statsmodels/regression/tests/results/results_macro_ols_robust.py new file mode 100644 index 0000000..3f539a7 --- /dev/null +++ b/statsmodels/regression/tests/results/results_macro_ols_robust.py @@ -0,0 +1,447 @@ +'''autogenerated and edited by hand +''' + +import numpy as np + +from statsmodels.tools.testing import ParamsTableTestBunch + +est = dict( + N=202, + df_m=2, + df_r=199, + F=92.94502024547633, + r2=.6769775594319385, + rmse=10.7037959322668, + mss=47782.65712176046, + rss=22799.67822456265, + r2_a=.6737311027428123, + ll=-763.9752181602238, + ll_0=-878.1085999159409, + rank=3, + cmdline="regress g_realinv g_realgdp L.realint, vce(robust)", + title="Linear regression", + marginsok="XB default", + vce="robust", + depvar="g_realinv", + cmd="regress", + properties="b V", + predict="regres_p", + model="ols", + estat_cmd="regress_estat", + vcetype="Robust", +) + +params_table = np.array([ + 4.3742216647032, .32355452428856, 13.519272136038, 5.703151404e-30, + 3.7361862031101, 5.0122571262963, 199, 1.9719565442518, + 0, -.61399696947899, .32772840315987, -1.8734933059173, + .06246625509181, -1.2602631388273, .0322691998693, 199, + 1.9719565442518, 0, -9.4816727746549, 1.3690593206013, + -6.9256843965613, 5.860240898e-11, -12.181398261383, -6.7819472879264, + 199, 1.9719565442518, 0]).reshape(3, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = 'g_realgdp L.realint _cons'.split() + +cov = np.array([ + .1046875301876, -.00084230205782, -.34205013876828, -.00084230205782, + .10740590623772, -.14114426417778, -.34205013876828, -.14114426417778, + 1.8743234233252]).reshape(3, 3) + +cov_colnames = 'g_realgdp L.realint _cons'.split() + +cov_rownames = 'g_realgdp L.realint _cons'.split() + + +results_hc0 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + +# -------------------------------------------------------------- + +est = dict( + df_m=2, + df_r=199, + F=89.45120275471848, + N=202, + lag=4, + rank=3, + title="Regression with Newey-West standard errors", + cmd="newey", + cmdline="newey g_realinv g_realgdp L.realint, lag(4)", + estat_cmd="newey_estat", + predict="newey_p", + vcetype="Newey-West", + depvar="g_realinv", + properties="b V", +) + +params_table = np.array([ + 4.3742216647032, .33125644884286, 13.204940401864, 5.282334606e-29, + 3.7209983425819, 5.0274449868245, 199, 1.9719565442518, + 0, -.61399696947899, .29582347593197, -2.0755518727668, + .03922090940364, -1.1973480087863, -.03064593017165, 199, + 1.9719565442518, 0, -9.4816727746549, 1.1859338087713, + -7.9951112823729, 1.036821797e-13, -11.820282709911, -7.1430628393989, + 199, 1.9719565442518, 0]).reshape(3, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = 'g_realgdp L.realint _cons'.split() + +cov = np.array([ + .10973083489998, .0003953117603, -.31803287070833, .0003953117603, + .08751152891247, -.06062111121649, -.31803287070833, -.06062111121649, + 1.4064389987868]).reshape(3, 3) + +cov_colnames = 'g_realgdp L.realint _cons'.split() + +cov_rownames = 'g_realgdp L.realint _cons'.split() + +results_newey4 = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + + +est = dict( + N=202, + inexog_ct=2, + exexog_ct=0, + endog_ct=0, + partial_ct=0, + bw=5, + df_r=199, + df_m=2, + sdofminus=0, + dofminus=0, + r2=.6769775594319388, + rmse=10.7037959322668, + rss=22799.67822456265, + mss=47782.65712176055, + r2_a=.6737311027428126, + F=89.45120275471867, + Fp=1.93466284646e-28, + Fdf1=2, + Fdf2=199, + yy=72725.68049533673, + partialcons=0, + cons=1, + jdf=0, + j=0, + ll=-763.9752181602239, + rankV=3, + rankS=3, + rankxx=3, + rankzz=3, + r2c=.6769775594319388, + r2u=.6864975608440735, + yyc=70582.33534632321, + hacsubtitleV="Statistics robust to heteroskedasticity and autocorrelation", + hacsubtitleB="Estimates efficient for homoskedasticity only", + title="OLS estimation", + predict="ivreg2_p", + version="02.2.08", + cmdline="ivreg2 g_realinv g_realgdp L.realint, robust bw(5) small", + cmd="ivreg2", + model="ols", + depvar="g_realinv", + vcetype="Robust", + partialsmall="small", + small="small", + tvar="qu", + kernel="Bartlett", + inexog="g_realgdp L.realint", + insts="g_realgdp L.realint", + properties="b V", +) + +params_table = np.array([ + 4.3742216647032, .33125644884286, 13.204940401864, 5.282334606e-29, + 3.7209983425819, 5.0274449868245, 199, 1.9719565442518, + 0, -.61399696947899, .29582347593197, -2.0755518727668, + .03922090940364, -1.1973480087863, -.03064593017165, 199, + 1.9719565442518, 0, -9.4816727746549, 1.1859338087713, + -7.9951112823729, 1.036821797e-13, -11.820282709911, -7.1430628393989, + 199, 1.9719565442518, 0]).reshape(3, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = 'g_realgdp L.realint _cons'.split() + +cov = np.array([ + .10973083489998, .0003953117603, -.31803287070833, .0003953117603, + .08751152891247, -.06062111121649, -.31803287070833, -.06062111121649, + 1.4064389987868]).reshape(3, 3) + +cov_colnames = 'g_realgdp L.realint _cons'.split() + +cov_rownames = 'g_realgdp L.realint _cons'.split() + +results_ivhac4_small = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + +est = dict( + N=202, + inexog_ct=2, + exexog_ct=0, + endog_ct=0, + partial_ct=0, + bw=5, + df_m=2, + sdofminus=0, + dofminus=0, + r2=.6769775594319388, + rmse=10.6240149746225, + rss=22799.67822456265, + mss=47782.65712176055, + r2_a=.6737311027428126, + F=89.45120275471867, + Fp=1.93466284646e-28, + Fdf1=2, + Fdf2=199, + yy=72725.68049533673, + yyc=70582.33534632321, + partialcons=0, + cons=1, + jdf=0, + j=0, + ll=-763.9752181602239, + rankV=3, + rankS=3, + rankxx=3, + rankzz=3, + r2c=.6769775594319388, + r2u=.6864975608440735, + hacsubtitleV="Statistics robust to heteroskedasticity and autocorrelation", + hacsubtitleB="Estimates efficient for homoskedasticity only", + title="OLS estimation", + predict="ivreg2_p", + version="02.2.08", + cmdline="ivreg2 g_realinv g_realgdp L.realint, robust bw(5)", + cmd="ivreg2", + model="ols", + depvar="g_realinv", + vcetype="Robust", + partialsmall="small", + tvar="qu", + kernel="Bartlett", + inexog="g_realgdp L.realint", + insts="g_realgdp L.realint", + properties="b V", +) + +params_table = np.array([ + 4.3742216647032, .32878742225811, 13.304102798888, 2.191074740e-40, + 3.7298101585076, 5.0186331708989, np.nan, 1.9599639845401, + 0, -.61399696947899, .29361854972141, -2.0911382133777, + .03651567605333, -1.1894787521258, -.03851518683214, np.nan, + 1.9599639845401, 0, -9.4816727746549, 1.1770944273439, + -8.055150508231, 7.938107001e-16, -11.788735458652, -7.1746100906581, + np.nan, 1.9599639845401, 0]).reshape(3, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'g_realgdp L.realint _cons'.split() + +cov = np.array([ + .10810116903513, .00038944079356, -.31330961025227, .00038944079356, + .0862118527405, -.05972079768357, -.31330961025227, -.05972079768357, + 1.385551290884]).reshape(3, 3) + +cov_colnames = 'g_realgdp L.realint _cons'.split() + +cov_rownames = 'g_realgdp L.realint _cons'.split() + +results_ivhac4_large = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + +# -------------------------------------------------------------- + +est = dict( + N=202, + inexog_ct=2, + exexog_ct=0, + endog_ct=0, + partial_ct=0, + df_r=199, + df_m=2, + sdofminus=0, + dofminus=0, + r2=.6769775594319388, + rmse=10.7037959322668, + rss=22799.67822456265, + mss=47782.65712176055, + r2_a=.6737311027428126, + F=92.94502024547634, + Fp=3.12523087723e-29, + Fdf1=2, + Fdf2=199, + yy=72725.68049533673, + yyc=70582.33534632321, + partialcons=0, + cons=1, + jdf=0, + j=0, + ll=-763.9752181602239, + rankV=3, + rankS=3, + rankxx=3, + rankzz=3, + r2c=.6769775594319388, + r2u=.6864975608440735, + hacsubtitleV="Statistics robust to heteroskedasticity", + hacsubtitleB="Estimates efficient for homoskedasticity only", + title="OLS estimation", + predict="ivreg2_p", + version="02.2.08", + cmdline="ivreg2 g_realinv g_realgdp L.realint, robust small", + cmd="ivreg2", + model="ols", + depvar="g_realinv", + vcetype="Robust", + partialsmall="small", + small="small", + inexog="g_realgdp L.realint", + insts="g_realgdp L.realint", + properties="b V", +) + +params_table = np.array([ + 4.3742216647032, .32355452428856, 13.519272136038, 5.703151404e-30, + 3.7361862031101, 5.0122571262963, 199, 1.9719565442518, + 0, -.61399696947899, .32772840315987, -1.8734933059173, + .06246625509181, -1.2602631388273, .0322691998693, 199, + 1.9719565442518, 0, -9.4816727746549, 1.3690593206013, + -6.9256843965613, 5.860240898e-11, -12.181398261383, -6.7819472879264, + 199, 1.9719565442518, 0]).reshape(3, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = 'g_realgdp L.realint _cons'.split() + +cov = np.array([ + .1046875301876, -.00084230205782, -.34205013876828, -.00084230205782, + .10740590623772, -.14114426417778, -.34205013876828, -.14114426417778, + 1.8743234233252]).reshape(3, 3) + +cov_colnames = 'g_realgdp L.realint _cons'.split() + +cov_rownames = 'g_realgdp L.realint _cons'.split() + +results_ivhc0_small = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + +# -------------------------------------------------------------- + +est = dict( + N=202, + inexog_ct=2, + exexog_ct=0, + endog_ct=0, + partial_ct=0, + df_m=2, + sdofminus=0, + dofminus=0, + r2=.6769775594319388, + rmse=10.6240149746225, + rss=22799.67822456265, + mss=47782.65712176055, + r2_a=.6737311027428126, + F=92.94502024547633, + Fp=3.12523087723e-29, + Fdf1=2, + Fdf2=199, + yy=72725.68049533673, + yyc=70582.33534632321, + r2u=.6864975608440735, + partialcons=0, + cons=1, + jdf=0, + j=0, + ll=-763.9752181602239, + rankV=3, + rankS=3, + rankxx=3, + rankzz=3, + r2c=.6769775594319388, + hacsubtitleV="Statistics robust to heteroskedasticity", + hacsubtitleB="Estimates efficient for homoskedasticity only", + title="OLS estimation", + predict="ivreg2_p", + version="02.2.08", + cmdline="ivreg2 g_realinv g_realgdp L.realint, robust", + cmd="ivreg2", + model="ols", + depvar="g_realinv", + vcetype="Robust", + partialsmall="small", + inexog="g_realgdp L.realint", + insts="g_realgdp L.realint", + properties="b V", +) + +params_table = np.array([ + 4.3742216647032, .32114290415293, 13.620795004769, 3.012701837e-42, + 3.7447931386729, 5.0036501907336, np.nan, 1.9599639845401, + 0, -.61399696947899, .32528567293437, -1.8875622892954, + .05908473670106, -1.2515451731172, .02355123415926, np.nan, + 1.9599639845401, 0, -9.4816727746549, 1.3588550094989, + -6.9776927695558, 3.000669464e-12, -12.144979653484, -6.8183658958253, + np.nan, 1.9599639845401, 0]).reshape(3, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = 'g_realgdp L.realint _cons'.split() + +cov = np.array([ + .10313276488778, -.00082979262132, -.33697018621231, -.00082979262132, + .10581076901637, -.13904806223455, -.33697018621231, -.13904806223455, + 1.8464869368401]).reshape(3, 3) + +cov_colnames = 'g_realgdp L.realint _cons'.split() + +cov_rownames = 'g_realgdp L.realint _cons'.split() + +results_ivhc0_large = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) diff --git a/statsmodels/regression/tests/results/results_quantile_regression.py b/statsmodels/regression/tests/results/results_quantile_regression.py new file mode 100644 index 0000000..27156d1 --- /dev/null +++ b/statsmodels/regression/tests/results/results_quantile_regression.py @@ -0,0 +1,637 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + + +epanechnikov_hsheather_q75 = Bunch() +epanechnikov_hsheather_q75.table = np.array([ + [.6440143, .0122001, 52.79, 0.000, .6199777, .6680508], + [62.39648, 13.5509, 4.60, 0.000, 35.69854, 89.09443] +]) +epanechnikov_hsheather_q75.psrsquared = 0.6966 +epanechnikov_hsheather_q75.rank = 2 +epanechnikov_hsheather_q75.sparsity = 223.784434936344 +epanechnikov_hsheather_q75.bwidth = .1090401129546568 +# epanechnikov_hsheather_q75.kbwidth = 59.62067927472172 # Stata 12 results +epanechnikov_hsheather_q75.kbwidth = 59.30 # TODO: why do we need lower tol? +epanechnikov_hsheather_q75.df_m = 1 +epanechnikov_hsheather_q75.df_r = 233 +epanechnikov_hsheather_q75.f_r = .0044685860313942 +epanechnikov_hsheather_q75.N = 235 +epanechnikov_hsheather_q75.q_v = 745.2352905273438 +epanechnikov_hsheather_q75.q = .75 +epanechnikov_hsheather_q75.sum_rdev = 43036.06956481934 +epanechnikov_hsheather_q75.sum_adev = 13058.50008841318 +epanechnikov_hsheather_q75.convcode = 0 + + +biweight_bofinger = Bunch() +biweight_bofinger.table = np.array([ + [.5601805, .0136491, 41.04, 0.000, .533289, .5870719], + [81.48233, 15.1604, 5.37, 0.000, 51.61335, 111.3513] + ]) +biweight_bofinger.psrsquared = 0.6206 +biweight_bofinger.rank = 2 +biweight_bofinger.sparsity = 216.8218989750115 +biweight_bofinger.bwidth = .2173486679767846 +biweight_bofinger.kbwidth = 91.50878448104551 +biweight_bofinger.df_m = 1 +biweight_bofinger.df_r = 233 +biweight_bofinger.f_r = .0046120802590851 +biweight_bofinger.N = 235 +biweight_bofinger.q_v = 582.541259765625 +biweight_bofinger.q = .5 +biweight_bofinger.sum_rdev = 46278.05667114258 +biweight_bofinger.sum_adev = 17559.93220318131 +biweight_bofinger.convcode = 0 + + +biweight_hsheather = Bunch() +biweight_hsheather.table = np.array([ + [.5601805, .0128449, 43.61, 0.000, .5348735, .5854875], + [81.48233, 14.26713, 5.71, 0.000, 53.37326, 109.5914] + ]) +biweight_hsheather.psrsquared = 0.6206 +biweight_hsheather.rank = 2 +biweight_hsheather.sparsity = 204.0465407204423 +biweight_hsheather.bwidth = .1574393314202373 +biweight_hsheather.kbwidth = 64.53302151153288 +biweight_hsheather.df_m = 1 +biweight_hsheather.df_r = 233 +biweight_hsheather.f_r = .0049008427022052 +biweight_hsheather.N = 235 +biweight_hsheather.q_v = 582.541259765625 +biweight_hsheather.q = .5 +biweight_hsheather.sum_rdev = 46278.05667114258 +biweight_hsheather.sum_adev = 17559.93220318131 +biweight_hsheather.convcode = 0 + +biweight_chamberlain = Bunch() +biweight_chamberlain.table = np.array([ + [.5601805, .0114969, 48.72, 0.000, .5375294, .5828315], + [81.48233, 12.76983, 6.38, 0.000, 56.32325, 106.6414] +]) +biweight_chamberlain.psrsquared = 0.6206 +biweight_chamberlain.rank = 2 +biweight_chamberlain.sparsity = 182.6322495257494 +biweight_chamberlain.bwidth = .063926976464458 +biweight_chamberlain.kbwidth = 25.61257055690209 +biweight_chamberlain.df_m = 1 +biweight_chamberlain.df_r = 233 +biweight_chamberlain.f_r = .005475484218131 +biweight_chamberlain.N = 235 +biweight_chamberlain.q_v = 582.541259765625 +biweight_chamberlain.q = .5 +biweight_chamberlain.sum_rdev = 46278.05667114258 +biweight_chamberlain.sum_adev = 17559.93220318131 +biweight_chamberlain.convcode = 0 + +epanechnikov_bofinger = Bunch() +epanechnikov_bofinger.table = np.array([ + [.5601805, .0209663, 26.72, 0.000, .5188727, .6014882], + [81.48233, 23.28774, 3.50, 0.001, 35.60088, 127.3638] + ]) +epanechnikov_bofinger.psrsquared = 0.6206 +epanechnikov_bofinger.rank = 2 +epanechnikov_bofinger.sparsity = 333.0579553401614 +epanechnikov_bofinger.bwidth = .2173486679767846 +epanechnikov_bofinger.kbwidth = 91.50878448104551 +epanechnikov_bofinger.df_m = 1 +epanechnikov_bofinger.df_r = 233 +epanechnikov_bofinger.f_r = .0030024804511235 +epanechnikov_bofinger.N = 235 +epanechnikov_bofinger.q_v = 582.541259765625 +epanechnikov_bofinger.q = .5 +epanechnikov_bofinger.sum_rdev = 46278.05667114258 +epanechnikov_bofinger.sum_adev = 17559.93220318131 +epanechnikov_bofinger.convcode = 0 + +epanechnikov_hsheather = Bunch() +epanechnikov_hsheather.table = np.array([ + [.5601805, .0170484, 32.86, 0.000, .5265918, .5937692], + [81.48233, 18.93605, 4.30, 0.000, 44.17457, 118.7901] + ]) +epanechnikov_hsheather.psrsquared = 0.6206 +epanechnikov_hsheather.rank = 2 +epanechnikov_hsheather.sparsity = 270.8207209067576 +epanechnikov_hsheather.bwidth = .1574393314202373 +epanechnikov_hsheather.kbwidth = 64.53302151153288 +epanechnikov_hsheather.df_m = 1 +epanechnikov_hsheather.df_r = 233 +epanechnikov_hsheather.f_r = .0036924796472434 +epanechnikov_hsheather.N = 235 +epanechnikov_hsheather.q_v = 582.541259765625 +epanechnikov_hsheather.q = .5 +epanechnikov_hsheather.sum_rdev = 46278.05667114258 +epanechnikov_hsheather.sum_adev = 17559.93220318131 +epanechnikov_hsheather.convcode = 0 + +epanechnikov_chamberlain = Bunch() +epanechnikov_chamberlain.table = np.array([ + [.5601805, .0130407, 42.96, 0.000, .5344876, .5858733], + [81.48233, 14.48467, 5.63, 0.000, 52.94468, 110.02] + ]) +epanechnikov_chamberlain.psrsquared = 0.6206 +epanechnikov_chamberlain.rank = 2 +epanechnikov_chamberlain.sparsity = 207.1576340635951 +epanechnikov_chamberlain.bwidth = .063926976464458 +epanechnikov_chamberlain.kbwidth = 25.61257055690209 +epanechnikov_chamberlain.df_m = 1 +epanechnikov_chamberlain.df_r = 233 +epanechnikov_chamberlain.f_r = .0048272418466269 +epanechnikov_chamberlain.N = 235 +epanechnikov_chamberlain.q_v = 582.541259765625 +epanechnikov_chamberlain.q = .5 +epanechnikov_chamberlain.sum_rdev = 46278.05667114258 +epanechnikov_chamberlain.sum_adev = 17559.93220318131 +epanechnikov_chamberlain.convcode = 0 + +epan2_bofinger = Bunch() +epan2_bofinger.table = np.array([ + [.5601805, .0143484, 39.04, 0.000, .5319113, .5884496], + [81.48233, 15.93709, 5.11, 0.000, 50.08313, 112.8815] + ]) +epan2_bofinger.psrsquared = 0.6206 +epan2_bofinger.rank = 2 +epan2_bofinger.sparsity = 227.9299402797656 +epan2_bofinger.bwidth = .2173486679767846 +epan2_bofinger.kbwidth = 91.50878448104551 +epan2_bofinger.df_m = 1 +epan2_bofinger.df_r = 233 +epan2_bofinger.f_r = .0043873130435281 +epan2_bofinger.N = 235 +epan2_bofinger.q_v = 582.541259765625 +epan2_bofinger.q = .5 +epan2_bofinger.sum_rdev = 46278.05667114258 +epan2_bofinger.sum_adev = 17559.93220318131 +epan2_bofinger.convcode = 0 + +epan2_hsheather = Bunch() +epan2_hsheather.table = np.array([ + [.5601805, .0131763, 42.51, 0.000, .5342206, .5861403], + [81.48233, 14.63518, 5.57, 0.000, 52.64815, 110.3165] + ]) +epan2_hsheather.psrsquared = 0.6206 +epan2_hsheather.rank = 2 +epan2_hsheather.sparsity = 209.3102085912557 +epan2_hsheather.bwidth = .1574393314202373 +epan2_hsheather.kbwidth = 64.53302151153288 +epan2_hsheather.df_m = 1 +epan2_hsheather.df_r = 233 +epan2_hsheather.f_r = .0047775978378236 +epan2_hsheather.N = 235 +epan2_hsheather.q_v = 582.541259765625 +epan2_hsheather.q = .5 +epan2_hsheather.sum_rdev = 46278.05667114258 +epan2_hsheather.sum_adev = 17559.93220318131 +epan2_hsheather.convcode = 0 + +epan2_chamberlain = Bunch() +epan2_chamberlain.table = np.array([ + [.5601805, .0117925, 47.50, 0.000, .5369469, .583414], + [81.48233, 13.0982, 6.22, 0.000, 55.67629, 107.2884] + ]) +epan2_chamberlain.psrsquared = 0.6206 +epan2_chamberlain.rank = 2 +epan2_chamberlain.sparsity = 187.3286437436797 +epan2_chamberlain.bwidth = .063926976464458 +epan2_chamberlain.kbwidth = 25.61257055690209 +epan2_chamberlain.df_m = 1 +epan2_chamberlain.df_r = 233 +epan2_chamberlain.f_r = .0053382119253919 +epan2_chamberlain.N = 235 +epan2_chamberlain.q_v = 582.541259765625 +epan2_chamberlain.q = .5 +epan2_chamberlain.sum_rdev = 46278.05667114258 +epan2_chamberlain.sum_adev = 17559.93220318131 +epan2_chamberlain.convcode = 0 + + +rectangle_bofinger = Bunch() +rectangle_bofinger.table = np.array([ + [.5601805, .0158331, 35.38, 0.000, .5289861, .5913748], + [81.48233, 17.5862, 4.63, 0.000, 46.83404, 116.1306] + ]) +rectangle_bofinger.psrsquared = 0.6206 +rectangle_bofinger.rank = 2 +rectangle_bofinger.sparsity = 251.515372550242 +rectangle_bofinger.bwidth = .2173486679767846 +rectangle_bofinger.kbwidth = 91.50878448104551 +rectangle_bofinger.df_m = 1 +rectangle_bofinger.df_r = 233 +rectangle_bofinger.f_r = .0039759001203803 +rectangle_bofinger.N = 235 +rectangle_bofinger.q_v = 582.541259765625 +rectangle_bofinger.q = .5 +rectangle_bofinger.sum_rdev = 46278.05667114258 +rectangle_bofinger.sum_adev = 17559.93220318131 +rectangle_bofinger.convcode = 0 + +rectangle_hsheather = Bunch() +rectangle_hsheather.table = np.array([ + [.5601805, .0137362, 40.78, 0.000, .5331174, .5872435], + [81.48233, 15.25712, 5.34, 0.000, 51.42279, 111.5419] + ]) +rectangle_hsheather.psrsquared = 0.6206 +rectangle_hsheather.rank = 2 +rectangle_hsheather.sparsity = 218.2051806505069 +rectangle_hsheather.bwidth = .1574393314202373 +rectangle_hsheather.kbwidth = 64.53302151153288 +rectangle_hsheather.df_m = 1 +rectangle_hsheather.df_r = 233 +rectangle_hsheather.f_r = .004582842611797 +rectangle_hsheather.N = 235 +rectangle_hsheather.q_v = 582.541259765625 +rectangle_hsheather.q = .5 +rectangle_hsheather.sum_rdev = 46278.05667114258 +rectangle_hsheather.sum_adev = 17559.93220318131 +rectangle_hsheather.convcode = 0 + +rectangle_chamberlain = Bunch() +rectangle_chamberlain.table = np.array([ + [.5601805, .0118406, 47.31, 0.000, .5368522, .5835087], + [81.48233, 13.1516, 6.20, 0.000, 55.57108, 107.3936] + ]) +rectangle_chamberlain.psrsquared = 0.6206 +rectangle_chamberlain.rank = 2 +rectangle_chamberlain.sparsity = 188.0923150272497 +rectangle_chamberlain.bwidth = .063926976464458 +rectangle_chamberlain.kbwidth = 25.61257055690209 +rectangle_chamberlain.df_m = 1 +rectangle_chamberlain.df_r = 233 +rectangle_chamberlain.f_r = .0053165383171297 +rectangle_chamberlain.N = 235 +rectangle_chamberlain.q_v = 582.541259765625 +rectangle_chamberlain.q = .5 +rectangle_chamberlain.sum_rdev = 46278.05667114258 +rectangle_chamberlain.sum_adev = 17559.93220318131 +rectangle_chamberlain.convcode = 0 + +triangle_bofinger = Bunch() +triangle_bofinger.table = np.array([ + [.5601805, .0138712, 40.38, 0.000, .5328515, .5875094], + [81.48233, 15.40706, 5.29, 0.000, 51.12738, 111.8373] + ]) +triangle_bofinger.psrsquared = 0.6206 +triangle_bofinger.rank = 2 +triangle_bofinger.sparsity = 220.3495620604223 +triangle_bofinger.bwidth = .2173486679767846 +triangle_bofinger.kbwidth = 91.50878448104551 +triangle_bofinger.df_m = 1 +triangle_bofinger.df_r = 233 +triangle_bofinger.f_r = .0045382436463649 +triangle_bofinger.N = 235 +triangle_bofinger.q_v = 582.541259765625 +triangle_bofinger.q = .5 +triangle_bofinger.sum_rdev = 46278.05667114258 +triangle_bofinger.sum_adev = 17559.93220318131 +triangle_bofinger.convcode = 0 + +triangle_hsheather = Bunch() +triangle_hsheather.table = np.array([ + [.5601805, .0128874, 43.47, 0.000, .5347898, .5855711], + [81.48233, 14.31431, 5.69, 0.000, 53.2803, 109.6844] + ]) +triangle_hsheather.psrsquared = 0.6206 +triangle_hsheather.rank = 2 +triangle_hsheather.sparsity = 204.7212998199564 +triangle_hsheather.bwidth = .1574393314202373 +triangle_hsheather.kbwidth = 64.53302151153288 +triangle_hsheather.df_m = 1 +triangle_hsheather.df_r = 233 +triangle_hsheather.f_r = .004884689579831 +triangle_hsheather.N = 235 +triangle_hsheather.q_v = 582.541259765625 +triangle_hsheather.q = .5 +triangle_hsheather.sum_rdev = 46278.05667114258 +triangle_hsheather.sum_adev = 17559.93220318131 +triangle_hsheather.convcode = 0 + +triangle_chamberlain = Bunch() +triangle_chamberlain.table = np.array([ + [.5601805, .0115725, 48.41, 0.000, .5373803, .5829806], + [81.48233, 12.85389, 6.34, 0.000, 56.15764, 106.807] + ]) +triangle_chamberlain.psrsquared = 0.6206 +triangle_chamberlain.rank = 2 +triangle_chamberlain.sparsity = 183.8344452913298 +triangle_chamberlain.bwidth = .063926976464458 +triangle_chamberlain.kbwidth = 25.61257055690209 +triangle_chamberlain.df_m = 1 +triangle_chamberlain.df_r = 233 +triangle_chamberlain.f_r = .0054396769790083 +triangle_chamberlain.N = 235 +triangle_chamberlain.q_v = 582.541259765625 +triangle_chamberlain.q = .5 +triangle_chamberlain.sum_rdev = 46278.05667114258 +triangle_chamberlain.sum_adev = 17559.93220318131 +triangle_chamberlain.convcode = 0 + +gaussian_bofinger = Bunch() +gaussian_bofinger.table = np.array([ + [.5601805, .0197311, 28.39, 0.000, .5213062, .5990547], + [81.48233, 21.91582, 3.72, 0.000, 38.30383, 124.6608] + ]) +gaussian_bofinger.psrsquared = 0.6206 +gaussian_bofinger.rank = 2 +gaussian_bofinger.sparsity = 313.4370075776719 +gaussian_bofinger.bwidth = .2173486679767846 +gaussian_bofinger.kbwidth = 91.50878448104551 +gaussian_bofinger.df_m = 1 +gaussian_bofinger.df_r = 233 +gaussian_bofinger.f_r = .0031904337261521 +gaussian_bofinger.N = 235 +gaussian_bofinger.q_v = 582.541259765625 +gaussian_bofinger.q = .5 +gaussian_bofinger.sum_rdev = 46278.05667114258 +gaussian_bofinger.sum_adev = 17559.93220318131 +gaussian_bofinger.convcode = 0 + +gaussian_hsheather = Bunch() +gaussian_hsheather.table = np.array([ + [.5601805, .016532, 33.88, 0.000, .5276092, .5927518], + [81.48233, 18.36248, 4.44, 0.000, 45.30462, 117.66] + ]) +gaussian_hsheather.psrsquared = 0.6206 +gaussian_hsheather.rank = 2 +gaussian_hsheather.sparsity = 262.6175743002715 +gaussian_hsheather.bwidth = .1574393314202373 +gaussian_hsheather.kbwidth = 64.53302151153288 +gaussian_hsheather.df_m = 1 +gaussian_hsheather.df_r = 233 +gaussian_hsheather.f_r = .0038078182797341 +gaussian_hsheather.N = 235 +gaussian_hsheather.q_v = 582.541259765625 +gaussian_hsheather.q = .5 +gaussian_hsheather.sum_rdev = 46278.05667114258 +gaussian_hsheather.sum_adev = 17559.93220318131 +gaussian_hsheather.convcode = 0 + +gaussian_chamberlain = Bunch() +gaussian_chamberlain.table = np.array([ + [.5601805, .0128123, 43.72, 0.000, .5349378, .5854232], + [81.48233, 14.23088, 5.73, 0.000, 53.44468, 109.52] + ]) +gaussian_chamberlain.psrsquared = 0.6206 +gaussian_chamberlain.rank = 2 +gaussian_chamberlain.sparsity = 203.5280962791137 +gaussian_chamberlain.bwidth = .063926976464458 +gaussian_chamberlain.kbwidth = 25.61257055690209 +gaussian_chamberlain.df_m = 1 +gaussian_chamberlain.df_r = 233 +gaussian_chamberlain.f_r = .004913326554328 +gaussian_chamberlain.N = 235 +gaussian_chamberlain.q_v = 582.541259765625 +gaussian_chamberlain.q = .5 +gaussian_chamberlain.sum_rdev = 46278.05667114258 +gaussian_chamberlain.sum_adev = 17559.93220318131 +gaussian_chamberlain.convcode = 0 + +cosine_bofinger = Bunch() +cosine_bofinger.table = np.array([ + [.5601805, .0121011, 46.29, 0.000, .536339, .5840219], + [81.48233, 13.44092, 6.06, 0.000, 55.00106, 107.9636] + ]) +cosine_bofinger.psrsquared = 0.6206 +cosine_bofinger.rank = 2 +cosine_bofinger.sparsity = 192.2302014415605 +cosine_bofinger.bwidth = .2173486679767846 +cosine_bofinger.kbwidth = 91.50878448104551 +cosine_bofinger.df_m = 1 +cosine_bofinger.df_r = 233 +cosine_bofinger.f_r = .0052020961976883 +cosine_bofinger.N = 235 +cosine_bofinger.q_v = 582.541259765625 +cosine_bofinger.q = .5 +cosine_bofinger.sum_rdev = 46278.05667114258 +cosine_bofinger.sum_adev = 17559.93220318131 +cosine_bofinger.convcode = 0 + +cosine_hsheather = Bunch() +cosine_hsheather.table = np.array([ + [.5601805, .0116679, 48.01, 0.000, .5371924, .5831685], + [81.48233, 12.9598, 6.29, 0.000, 55.94897, 107.0157] +]) +cosine_hsheather.psrsquared = 0.6206 +cosine_hsheather.rank = 2 +cosine_hsheather.sparsity = 185.349198428224 +cosine_hsheather.bwidth = .1574393314202373 +cosine_hsheather.kbwidth = 64.53302151153288 +cosine_hsheather.df_m = 1 +cosine_hsheather.df_r = 233 +cosine_hsheather.f_r = .0053952216059205 +cosine_hsheather.N = 235 +cosine_hsheather.q_v = 582.541259765625 +cosine_hsheather.q = .5 +cosine_hsheather.sum_rdev = 46278.05667114258 +cosine_hsheather.sum_adev = 17559.93220318131 +cosine_hsheather.convcode = 0 + +cosine_chamberlain = Bunch() +cosine_chamberlain.table = np.array([ + [.5601805, .0106479, 52.61, 0.000, .539202, .5811589], + [81.48233, 11.82688, 6.89, 0.000, 58.18104, 104.7836] +]) +cosine_chamberlain.psrsquared = 0.6206 +cosine_chamberlain.rank = 2 +cosine_chamberlain.sparsity = 169.1463943762948 +cosine_chamberlain.bwidth = .063926976464458 +cosine_chamberlain.kbwidth = 25.61257055690209 +cosine_chamberlain.df_m = 1 +cosine_chamberlain.df_r = 233 +cosine_chamberlain.f_r = .0059120385254878 +cosine_chamberlain.N = 235 +cosine_chamberlain.q_v = 582.541259765625 +cosine_chamberlain.q = .5 +cosine_chamberlain.sum_rdev = 46278.05667114258 +cosine_chamberlain.sum_adev = 17559.93220318131 +cosine_chamberlain.convcode = 0 + +parzen_bofinger = Bunch() +parzen_bofinger.table = np.array([ + [.5601805, .012909, 43.39, 0.000, .5347471, .5856138], + [81.48233, 14.33838, 5.68, 0.000, 53.23289, 109.7318] +]) +parzen_bofinger.psrsquared = 0.6206 +parzen_bofinger.rank = 2 +parzen_bofinger.sparsity = 205.0654663067616 +parzen_bofinger.bwidth = .2173486679767846 +parzen_bofinger.kbwidth = 91.50878448104551 +parzen_bofinger.df_m = 1 +parzen_bofinger.df_r = 233 +parzen_bofinger.f_r = .0048764914834762 +parzen_bofinger.N = 235 +parzen_bofinger.q_v = 582.541259765625 +parzen_bofinger.q = .5 +parzen_bofinger.sum_rdev = 46278.05667114258 +parzen_bofinger.sum_adev = 17559.93220318131 +parzen_bofinger.convcode = 0 + +parzen_hsheather = Bunch() +parzen_hsheather.table = np.array([ + [.5601805, .0122688, 45.66, 0.000, .5360085, .5843524], + [81.48233, 13.62723, 5.98, 0.000, 54.63401, 108.3307] +]) +parzen_hsheather.psrsquared = 0.6206 +parzen_hsheather.rank = 2 +parzen_hsheather.sparsity = 194.8946558099188 +parzen_hsheather.bwidth = .1574393314202373 +parzen_hsheather.kbwidth = 64.53302151153288 +parzen_hsheather.df_m = 1 +parzen_hsheather.df_r = 233 +parzen_hsheather.f_r = .0051309770185556 +parzen_hsheather.N = 235 +parzen_hsheather.q_v = 582.541259765625 +parzen_hsheather.q = .5 +parzen_hsheather.sum_rdev = 46278.05667114258 +parzen_hsheather.sum_adev = 17559.93220318131 +parzen_hsheather.convcode = 0 + +parzen_chamberlain = Bunch() +parzen_chamberlain.table = np.array([ + [.5601805, .0110507, 50.69, 0.000, .5384084, .5819526], + [81.48233, 12.2743, 6.64, 0.000, 57.29954, 105.6651] +]) +parzen_chamberlain.psrsquared = 0.6206 +parzen_chamberlain.rank = 2 +parzen_chamberlain.sparsity = 175.5452813763412 +parzen_chamberlain.bwidth = .063926976464458 +parzen_chamberlain.kbwidth = 25.61257055690209 +parzen_chamberlain.df_m = 1 +parzen_chamberlain.df_r = 233 +parzen_chamberlain.f_r = .0056965359146063 +parzen_chamberlain.N = 235 +parzen_chamberlain.q_v = 582.541259765625 +parzen_chamberlain.q = .5 +parzen_chamberlain.sum_rdev = 46278.05667114258 +parzen_chamberlain.sum_adev = 17559.93220318131 +parzen_chamberlain.convcode = 0 + +Rquantreg = Bunch() +Rquantreg.fittedvalues = np.array([ + 278.946531823426, 327.662259651587, 472.195784028597, 366.902127539958, + 411.817682123087, 490.131199885949, 443.36524597881, 503.536477958636, + 636.406081281679, 709.736288922034, 312.165058899648, 357.917286612496, + 427.907157504212, 333.474578745265, 396.777813086185, 447.125068738706, + 325.117049130677, 349.771067249961, 481.598886608367, 306.106158691415, + 388.420502955027, 511.05437589194, 313.836609745169, 372.960145596262, + 485.358358918327, 284.379882747628, 346.21761302202, 470.314386890694, + 292.735362869831, 345.174109237497, 431.875199165716, 312.003504742171, + 396.809344806674, 474.141604734191, 463.93526593027, 430.280150030025, + 453.602705891221, 579.151509166254, 320.586493222875, 379.637682965454, + 261.63071606774, 452.262394881918, 560.558633285135, 361.453261675451, + 433.779038355879, 334.560374744198, 465.46340752116, 615.361560833631, + 934.235038902725, 699.263962186247, 403.470311834164, 431.875199165716, + 610.619729234566, 592.662336978523, 365.021855935831, 494.3226340628, + 571.610146001548, 820.79435094965, 1244.13870203673, 480.7121636877, + 1031.46758784013, 362.238578597709, 467.705425607653, 577.073721157792, + 591.087071047729, 323.397708458532, 569.0193777981, 547.264281981988, + 304.861831677351, 727.261856258699, 382.899300447742, 380.080019200391, + 387.548077543462, 455.939284414524, 461.007422390708, 469.504909066202, + 571.628605113602, 482.528691661418, 447.239662606701, 443.405235218729, + 617.975233440748, 888.754433927184, 390.908239427091, 479.934781986261, + 872.520684097057, 468.389025193617, 467.583874563025, 600.891141536243, + 328.94286096288, 524.54251098332, 697.904660068404, 443.782036008026, + 501.879849409525, 647.703493205875, 458.730704476452, 401.721440320659, + 507.49016247142, 722.834547664808, 380.206920088912, 481.131145133749, + 299.904199685339, 347.488751302111, 488.171723133137, 368.620444647759, + 1135.31179977255, 831.440717300088, 578.509405496803, 437.83023460596, + 618.056493326843, 550.238043601025, 289.910800377653, 583.813030650723, + 502.185524461957, 519.079736225537, 280.441976767315, 334.638935071642, + 489.10661171308, 651.842445716676, 1050.52148262534, 346.050058523346, + 729.252186278533, 558.451123252156, 529.859949563712, 668.51276154189, + 1113.66644452647, 747.093352541566, 858.247029841287, 917.230577685989, + 390.29683477012, 339.650965997876, 350.536705877117, 295.394850812194, + 502.711215489629, 465.29644549865, 398.753783734842, 328.660789278315, + 747.883662637697, 2102.02108846944, 499.727307212846, 278.882398125705, + 335.933513242034, 387.198765462081, 672.019128653175, 439.917678218736, + 461.755563134383, 669.580269655421, 614.886877182468, 657.691667171562, + 913.373865558921, 596.066409235456, 562.142375003233, 844.328711460744, + 517.593907165227, 463.853902738299, 1087.39298812569, 583.363256443676, + 601.337926899021, 720.657238588974, 386.421327566452, 493.072243052398, + 493.072243052398, 493.072243052398, 487.416418391789, 625.768736956952, + 717.442211022949, 649.545102325439, 315.764483006998, 387.279123698926, + 725.770230770932, 534.438688677752, 265.753297513836, 265.753297513836, + 275.266770483504, 444.714192650306, 357.226955834115, 466.694950404995, + 521.878226495306, 514.492832530541, 401.82351113515, 308.781536524607, + 410.920025494164, 506.942199600954, 426.771590593594, 444.329655290455, + 567.951437149727, 314.044484679614, 341.637888287124, 390.011222091572, + 371.617953454683, 491.650387255751, 309.86707973756, 339.215312155678, + 401.313514123063, 274.198577993648, 366.737853359169, 602.621623875386, + 397.5527766612, 431.743315417498, 502.103203876367, 758.493699184236, + 354.616793574895, 495.299694296035, 445.994704272822, 461.179388784645, + 492.398877810457, 300.177654706392, 351.604018662754, 397.001476569931, + 443.325261537312, 495.754449130328, 597.467889923833, 495.384438403965, + 563.913157758648, 890.789267794131, 326.949960612346, 296.399786939819, + 336.191062827908, 406.145865402583, 678.81933687482, 997.557647439337, + 365.6649642219, 415.242904378452, 543.581822640472, 310.924419326878, + 519.951702825405, 751.022676264054, 422.151172626615, 604.684498888169, + 836.51478813311, 277.051441764913, 287.126391607546, 327.57744312456, + 343.712072517474, 408.684566875422, 535.079861284096 +]) + +Rquantreg.residuals = np.array([ + -23.1071072288498, -16.7035925924416, 13.4842301424879, + 36.0952280042049, 83.7430928106889, 143.666615246444, 187.391321726407, + 196.904426307396, 194.552540223671, 105.623928368427, 25.8363284299391, + 54.4440518161423, 92.0934604769094, 118.926894162067, 115.9422447507, + 211.714461564889, 67.4824476183351, 93.7875665496341, 158.517491105043, + 27.7332282843317, 78.537815573821, 32.3425283712905, 3.88323401131549, + 51.360750756311, 33.6032971350797, 53.6215045819588, 73.423561609355, + 6.00566204286901, 93.6248004402887, 78.1042405680565, 71.4819720245138, + 42.635363803128, 100.508824022316, 114.377859224531, 190.661878666847, + 120.44727756794, 74.7742708230821, 61.3298388891191, 80.7338623237625, + 56.3613389354645, 14.9298935780977, 136.086423177107, 103.639168918795, + 83.406904735325, 29.1204765079443, 43.2188638018142, 87.68702809519, + 195.534593927816, 133.719017238015, 350.614829501073, 119.230897841979, + 140.205463451968, 296.7772153462, 218.915256717207, 62.7756642652107, + 155.675830060721, 288.990008558354, 322.6267348787, 788.540488171593, + 109.906163322267, 538.923550476946, 121.241446063999, 132.774973479468, + 119.128384587689, 183.709108010048, 67.2007219409504, 43.5425230980599, + 161.49786961119, -7.94264590491014, 344.200840210711, 113.698279589573, + 123.317422174319, -29.9069666643728, -25.6016916976065, + 163.691619008174, 113.036341875648, 8.59293713333579, 61.3520511228119, + 141.397517015987, 184.594660239251, 94.1259408216085, 79.6405061341515, + 91.6733481942127, 113.234603595283, 161.045070172193, 225.290448255665, + 226.095598886257, 160.387924286533, 32.4551953759993, 103.909707216036, + 73.543904350086, 313.336630439861, 319.717144678425, 374.616677214425, + 220.710022883649, 137.027675366142, 172.507934775539, 254.168723294869, + 180.994568087336, 247.26860148984, 72.4144228992704, 14.0322012670994, + 29.7478676180694, 91.1972063421171, -271.391948301552, + -1.13686837721616e-13, -43.7483617057195, -45.7799925843755, + 316.918702117259, 263.070052700293, -26.2008042070246, + 185.270818370404, 128.400761958987, 126.90766445377, 39.11640958216, + 13.8128950328002, 125.400191450337, 10.1671163220818, 453.849292287238, + 60.1679571929374, -37.0832869573327, 29.6859273527971, + -18.5990635840888, 32.0472277998125, 187.478653019356, + 131.972664872163, 54.6380484088667, 592.550594160211, 93.7637141660844, + 60.0193510971532, 93.5633996863289, -46.5847395899585, + 25.0901440883857, 35.3349035566588, 38.0569510057356, 46.1382548463761, + -21.4915275364559, -274.821124029843, 23.7637774954742, + 56.1174237129451, 137.267370647069, 194.004180243594, 257.734838779675, + 151.279738459292, 175.792712085095, 5.37066578891586, 161.87201799729, + 301.825301306357, 337.590468355399, 141.753670144823, 248.534867350933, + 138.672153434971, 191.302922030722, 169.266111420092, 337.411668163301, + 247.595365061674, 324.241547334534, 441.345158140916, + -2.96336484193375, 128.045086149367, 128.045086149367, + 128.045086149367, 61.183812841238, 119.466557499153, 120.358284525061, + 145.795139311381, 102.833084929086, 121.51832618868, 157.507780852421, + 208.08888035649, -23.4330955930956, -23.4330955930956, + -9.26578861762408, 170.044609958764, 28.0914420512634, + 48.9250186205624, 186.600476930648, 219.742798279756, 31.1774726408891, + 18.6372355131512, 18.1199081442213, 112.698628091063, + -25.9726125403696, 176.470984835994, 252.045003846191, + 46.8335329758523, 54.1229163256514, 51.9888300300891, 32.4204776768067, + 179.14892185478, -12.2969284011601, 14.2728509760057, + -17.3759292437432, 10.6022252751131, 64.362111397076, 198.730134737533, + 50.898482335236, 146.167755331756, 68.4178084237137, 106.826836694182, + 89.9409707510827, 185.120132493866, 130.283190180665, 170.618786347098, + 116.24297250849, 0.822265604206791, 26.3943953963694, 0, + 145.19420242141, 186.007125906439, 209.892380176326, 201.416658681816, + 247.283084092749, 414.930873548859, 115.050091509315, 57.2015105045924, + 131.809734683313, 120.611481397197, 211.419693391706, 321.245634797383, + -34.6644264712713, 1.15862100546684, 53.2587319600932, + 97.5747986822971, 255.069199707627, 387.139369759176, 63.3685935821613, + 168.076643464964, 157.44822913826, 28.387531965303, 19.3926869633912, + -28.3781151570223, 124.288724993746, 113.917339005042, 215.240302135105 +]) diff --git a/statsmodels/regression/tests/results/results_regression.py b/statsmodels/regression/tests/results/results_regression.py new file mode 100644 index 0000000..f9865c8 --- /dev/null +++ b/statsmodels/regression/tests/results/results_regression.py @@ -0,0 +1,226 @@ +""" +Hard-coded results for test_regression +""" + +# REGRESSION MODEL RESULTS : OLS, GLS, WLS, AR + +import numpy as np + + +class Longley(object): + ''' + The results for the Longley dataset were obtained from NIST + + http://www.itl.nist.gov/div898/strd/general/dataarchive.html + + Other results were obtained from Stata + ''' + def __init__(self): + self.params = ( + 15.0618722713733, -0.358191792925910E-01, + -2.02022980381683, -1.03322686717359, -0.511041056535807E-01, + 1829.15146461355, -3482258.63459582) + self.bse = ( + 84.9149257747669, 0.334910077722432E-01, + 0.488399681651699, 0.214274163161675, 0.226073200069370, + 455.478499142212, 890420.383607373) + self.scale = 92936.0061673238 + self.rsquared = 0.995479004577296 + self.rsquared_adj = 0.99246501 + self.df_model = 6 + self.df_resid = 9 + self.ess = 184172401.944494 + self.ssr = 836424.055505915 + self.mse_model = 30695400.3240823 + self.mse_resid = 92936.0061673238 + self.mse_total = (self.ess + self.ssr)/(self.df_model + self.df_resid) + self.fvalue = 330.285339234588 + self.llf = -109.6174 + self.aic = 233.2349 + self.bic = 238.643 + self.pvalues = np.array([ + 0.86314083, 0.31268106, 0.00253509, + 0.00094437, 0.8262118, 0.0030368, 0.0035604]) + # pvalues from rmodelwrap + self.resid = np.array(( + 267.34003, -94.01394, 46.28717, -410.11462, + 309.71459, -249.31122, -164.04896, -13.18036, 14.30477, 455.39409, + -17.26893, -39.05504, -155.54997, -85.67131, 341.93151, + -206.75783)) + + # Obtained from R using + # m$residuals / sqrt(sum(m$residuals * m$residuals) / m$df.residual) + self.resid_pearson = np.array(( + 0.87694426, -0.30838998, + 0.15183385, -1.34528175, 1.01594375, + -0.81780510, -0.53812289, -0.04323497, + 0.04692334, 1.49381010, -0.05664654, + -0.12811061, -0.51024404, -0.28102399, + 1.12162357, -0.67821900)) + + def conf_int(self): # a method to be consistent with sm + return [ + (-177.0291, 207.1524), + (-.111581, .0399428), + (-3.125065, -.9153928), + (-1.517948, -.5485049), + (-.5625173, .4603083), + (798.7873, 2859.515), + (-5496529, -1467987)] + + HC0_se = (51.22035, 0.02458, 0.38324, 0.14625, 0.15821, 428.38438, 832212) + HC1_se = (68.29380, 0.03277, 0.51099, 0.19499, 0.21094, 571.17917, 1109615) + HC2_se = (67.49208, 0.03653, 0.55334, 0.20522, 0.22324, 617.59295, 1202370) + HC3_se = (91.11939, 0.05562, 0.82213, 0.29879, 0.32491, 922.80784, 1799477) + + +class LongleyGls(object): + ''' + The following results were obtained from running the test script with R. + ''' + def __init__(self): + self.params = (6.73894832e-02, -4.74273904e-01, 9.48988771e+04) + self.bse = (1.07033903e-02, 1.53385472e-01, 1.39447723e+04) + self.llf = -121.4294962954981 + self.fittedvalues = [ + 59651.8255, 60860.1385, 60226.5336, 61467.1268, + 63914.0846, 64561.9553, 64935.9028, 64249.1684, 66010.0426, + 66834.7630, 67612.9309, 67018.8998, 68918.7758, 69310.1280, + 69181.4207, 70598.8734] + self.resid = [ + 671.174465, 261.861502, -55.533603, -280.126803, + -693.084618, -922.955349, 53.097212, -488.168351, 8.957367, + 1022.236970, 556.069099, -505.899787, -263.775842, 253.871965, + 149.579309, -47.873374] + self.scale = 542.443043098**2 + self.tvalues = [6.296088, -3.092039, 6.805337] + self.pvalues = [2.761673e-05, 8.577197e-03, 1.252284e-05] + self.bic = 253.118790021 + self.aic = 250.858992591 + + +class CCardWLS(object): + def __init__(self): + self.params = [ + -2.6941851611, 158.426977524, -7.24928987289, + 60.4487736936, -114.10886935] + + self.bse = [ + 3.807306306, 76.39115431, 9.724337321, 58.55088753, 139.6874965] + # NOTE: we compute the scale differently than they do for analytic + # weights + self.scale = 189.0025755829012 ** 2 + self.rsquared = .2549143871187359 + self.rsquared_adj = .2104316639616448 + self.df_model = 4 + self.df_resid = 67 + self.ess = 818838.8079468152 + self.ssr = 2393372.229657007 + self.mse_model = 818838.8079468152 / 4 + self.mse_resid = 2393372.229657007 / 67 + self.mse_total = (self.ess + self.ssr) / 71. + self.fvalue = 5.730638077585917 + self.llf = -476.9792946562806 + self.aic = 963.95858931256 + self.bic = 975.34191990764 + # pvalues from R + self.pvalues = [ + 0.4816259843354, 0.0419360764848, 0.4585895209814, + 0.3055904431658, 0.4168883565685] + self.resid = [ + -286.964904785, -128.071563721, -405.860900879, + -20.1363945007, -169.824432373, -82.6842575073, + -283.314300537, -52.1719360352, 433.822174072, + -190.607543945, -118.839683533, -133.97076416, + -85.5728149414, 66.8180847168, -107.571769714, + -149.883285522, -140.972610474, 75.9255981445, + -135.979736328, -415.701263428, 130.080032349, + 25.2313785553, 1042.14013672, -75.6622238159, + 177.336639404, 315.870544434, -8.72801017761, + 240.823760986, 54.6106033325, 65.6312484741, + -40.9218444824, 24.6115856171, -131.971786499, + 36.1587944031, 92.5052108765, -136.837036133, + 242.73274231, -65.0315093994, 20.1536407471, + -15.8874826431, 27.3513431549, -173.861785889, + -113.121154785, -37.1303443909, 1510.31530762, + 582.916931152, -17.8628063202, -132.77381897, + -108.896934509, 12.4665794373, -122.014572144, + -158.986968994, -175.798873901, 405.886505127, + 99.3692703247, 85.3450698853, -179.15007019, + -34.1245117188, -33.4909172058, -20.7287139893, + -116.217689514, 53.8837738037, -52.1533050537, + -100.632293701, 34.9342498779, -96.6685943604, + -367.32925415, -40.1300048828, -72.8692245483, + -60.8728256226, -35.9937324524, -222.944747925] + self.resid_pearson = [ + -0.90569581, -0.75496938, -1.28663890, -0.11309411, -0.24746253, + -0.47181831, -1.02062293, -0.31403683, 1.62862142, -0.84973225, + -0.42919669, -0.78007426, -0.63913772, 0.29787637, -0.38364568, + -0.21381846, -0.85577361, 0.54156452, -0.48496031, -1.15374603, + 0.41145856, 0.23996158, 2.70305838, -0.53171027, 0.79057028, + 1.82433320, -0.04150362, 0.97048328, 0.13667658, 0.26750667, + -0.12690810, 0.11703354, -0.72689772, 0.34160874, 0.71332338, + -0.75079661, 1.73137185, -0.39477348, 0.04107215, -0.11332274, + 0.22952063, -0.88580496, -0.67239515, -0.17656300, 4.48867723, + 2.61499898, -0.16988320, -0.63136893, -0.68135396, 0.06351572, + -0.64467367, -0.37800911, -0.64304809, 1.88607184, 0.57624742, + 0.60875207, -0.78636761, -0.17897383, -0.21716827, -0.07885570, + -0.57566752, 0.25202879, -0.29176531, -0.54378274, 0.30203654, + -0.57460072, -0.72378394, -0.23853382, -0.17325464, -0.24121979, + -0.10269489, -0.57826451] + + def conf_int(self): # a method to be consistent with sm + return [ + (-10.2936, 4.90523), (5.949595, 310.9044), + (-26.65915, 12.16057), (-56.41929, 177.3168), + (-392.9263, 164.7085)] + + +class LongleyRTO(object): + def __init__(self): + # Regression Through the Origin model + # from Stata, make sure you force double to replicate + self.params = [ + -52.993523, .07107319, -.42346599, -.57256869, + -.41420348, 48.417859] + self.bse = [ + 129.5447812, .0301663805, .4177363573, .2789908665, + .3212848136, 17.68947719] + self.scale = 475.1655079819532**2 + self.rsquared = .9999670130705958 + self.rsquared_adj = .9999472209129532 + self.df_model = 6 + self.df_resid = 10 + self.ess = 68443718827.40025 + self.ssr = 2257822.599757476 + self.mse_model = 68443718827.40025 / 6 + self.mse_resid = 2257822.599757476 / 10 + self.mse_total = (self.ess + self.ssr) / 16. + self.fvalue = 50523.39573737409 + self.llf = -117.5615983965251 + self.aic = 247.123196793 + self.bic = 251.758729126 + self.pvalues = [ + 0.6911082828354, 0.0402241925699, 0.3346175334102, + 0.0672506018552, 0.2263470345100, 0.0209367642585] + self.resid = [ + 279.902740479, -130.324661255, 90.7322845459, + -401.312530518, -440.467681885, -543.54510498, + 201.321121216, 215.908889771, 73.0936813354, 913.216918945, + 424.824859619, -8.56475830078, -361.329742432, + 27.3456058502, 151.28956604, -492.499359131] + # Obtained from R using + # m$residuals / sqrt(sum(m$residuals * m$residuals) / m$df.residual) + self.resid_pearson = [ + 0.58906369, -0.27427213, 0.19094881, + -0.84457419, -0.92697740, -1.14390695, + 0.42368630, 0.45438671, 0.15382784, + 1.92189233, 0.89405658, -0.01802479, + -0.76042924, 0.05754964, 0.31839340, + -1.03647964] + + def conf_int(self): + return [ + (-341.6373, 235.6502), (.0038583, .1382881), + (-1.354241, .5073086), (-1.194199, .0490617), + (-1.130071, .3016637), (9.003248, 87.83247)] diff --git a/statsmodels/regression/tests/results/results_rls_R.csv b/statsmodels/regression/tests/results/results_rls_R.csv new file mode 100644 index 0000000..15ed379 --- /dev/null +++ b/statsmodels/regression/tests/results/results_rls_R.csv @@ -0,0 +1,202 @@ +"beta1","beta2","rec_resid","cusum" +20.0003289473666,0.0651315789473821,0.244954345907551,0.00193563605335298 +27.2660687432794,0.01385606874334,0.203040661455013,0.00354006900657476 +38.67905442175,-0.0670068027209533,0.270280443387117,0.00567583258651052 +39.7751950254108,-0.0745053702654907,0.241841533101339,0.00758687110650389 +29.1331849912345,0.00178883071581329,0.415203521341092,0.010867820878631 +18.3066265462468,0.07927114677407,0.397784568256463,0.0140111255990758 +10.3433466424157,0.136079854809809,0.176046592258926,0.0154022506668258 +6.85989720582705,0.160900850388106,0.0938882276325083,0.0161441580525371 +8.20327148258485,0.151342100522645,-0.0456169627715057,0.0157836915441441 +10.2511427486456,0.136788154897673,-0.100272366304063,0.0149913365171122 +10.9957699951444,0.131503464575536,-0.0503494741056537,0.0145934735725493 +11.3175707763209,0.129219955362651,-0.0340711516639038,0.0143242423846087 +10.6654524361781,0.13384553399014,0.0916855645039212,0.0150487442650235 +11.1159086294258,0.130659898477266,-0.0628046014785767,0.0145524605575922 +12.156386729997,0.123317221871426,-0.163723398534085,0.0132587137093544 +12.7326996394925,0.119259115732779,-0.103746490236991,0.0124389060583918 +13.4410659854797,0.114279885481247,-0.153770453685824,0.0112238076571287 +13.6569896037784,0.112764484973186,-0.0567551736551511,0.010775326696588 +14.1144011142444,0.109559572375609,-0.142266908565485,0.00965112962877052 +14.8158432176534,0.104659089244761,-0.237517649981024,0.00777425855343773 +15.6507453043316,0.0988444881094996,-0.308861421756066,0.00533362700952327 +16.1607873501768,0.0952992037891843,-0.223226013059955,0.00356968884658018 +16.5385918090731,0.0926777890181332,-0.19441899414506,0.00203338454820357 +16.6498010517627,0.0919074166590858,-0.0667305825844362,0.0015060776288953 +17.014471754413,0.0893917183701445,-0.228436397901914,-0.000299033139965743 +17.3460818756217,0.0871131227705724,-0.222144348908167,-0.00205442396270116 +17.3843661628274,0.0868509149764685,-0.0285352009690891,-0.00227990991430085 +17.1280162311825,0.0886104513064945,0.25234647696406,-0.000285861035769862 +16.6667783624255,0.091771289167083,0.510364610726381,0.00374705431103636 +16.3226842126683,0.0941262202407745,0.426298113691983,0.00711567386045231 +16.0455621834406,0.0960146002312399,0.353662998951508,0.00991032871326247 +15.85854585646,0.0972808365656299,0.234197517696713,0.0117609640109543 +15.733990938833,0.0981199698632186,0.160737119802357,0.0130311132016079 +15.5472155607408,0.0993737343759857,0.259408244690296,0.0150809643650939 +15.359100577245,0.100632613316582,0.285291985514453,0.0173353495683793 +15.1438436622109,0.102065903516274,0.340269721055102,0.0200241703667954 +14.9504525606908,0.103348110227141,0.326521533003193,0.0226043526008987 +14.8392679441337,0.104081295077877,0.196271786313286,0.0241552977145134 +14.5735361313145,0.105829575321111,0.527326289405741,0.0283222447179351 +14.2099750496454,0.108218482052348,0.819366249673146,0.034796899608796 +13.7874175847374,0.110990470726413,1.06025114550419,0.0431750336453371 +13.3518043480087,0.113834887397852,1.14841860382417,0.0522498693893917 +12.8346569963456,0.117209228903986,1.52569799370484,0.0643059773641323 +12.3367186457394,0.120451583177883,1.5951492085586,0.0769108907700321 +11.9185230337974,0.123154390987991,1.33821597224724,0.0874855105974843 +11.5170468495664,0.125739357672303,1.36169336194335,0.0982456494112033 +11.266515248211,0.127342275661413,0.867738614053158,0.105102544070593 +11.0821361490573,0.128514376720014,0.653394030490114,0.11026568186991 +10.9290164719613,0.129484865504103,0.584740179652795,0.1148863150307 +10.8178656341354,0.130186652348879,0.450648727628674,0.118447353808616 +10.815540474966,0.130201229968511,0.00958837887806173,0.118523121445156 +10.8387662708446,0.130056193898848,-0.101729973630018,0.117719248364499 +10.945328087949,0.129395696123524,-0.474099262131996,0.113972902810797 +11.1085265304914,0.128391482155469,-0.742321517670144,0.108107057534779 +11.080805458722,0.128561827573399,0.139072384001631,0.109206011380655 +11.0781776871062,0.12857788516236,0.013749780020619,0.109314662524749 +10.8745917334063,0.129819717290388,1.15962459122506,0.118478048292875 +10.6044182322985,0.131458118663421,1.59589325604434,0.131088841182699 +10.2429003246852,0.133641433952644,2.25631514703675,0.148918306220968 +9.80473923277081,0.136280688202692,2.92799599642778,0.172055412010052 +9.25022363539014,0.139607925830564,3.90633237289927,0.202923359052794 +8.63802754477139,0.143273443914073,4.61111158580915,0.239360491035316 +8.05948905426918,0.146726439925444,4.59843304875835,0.275697436865482 +7.5349394264988,0.149825974640662,4.13302051978024,0.3083566799489 +7.00821909152587,0.152931416451406,4.42128714242792,0.343293813900952 +6.49494054475082,0.155945401893927,4.5048685993743,0.378891410850131 +6.0988192774942,0.15825221854616,3.50323010316598,0.406574032547477 +5.69919719959164,0.160571875780665,3.72091144830362,0.435976778287651 +5.32563871725321,0.162726735932826,3.5667996236933,0.464161728104023 +5.00672684903167,0.164551848094488,3.08141385283983,0.488511146060907 +4.71008920605094,0.166234013127225,2.87502733736156,0.511229692033032 +4.43756588678741,0.16777195359686,2.74961925042266,0.532957259814663 +4.21384227381131,0.169025609768913,2.30707054752226,0.551187795439038 +4.03276576900703,0.170031456375408,1.88475608800807,0.566081190460091 +3.84792927359839,0.171052217995977,1.99083244967449,0.581812803840935 +3.65581679781767,0.172104735954175,2.10565713861364,0.598451765106961 +3.43271594969956,0.173319986565316,2.53435920069987,0.618478341989467 +3.19551592377813,0.174605121939789,2.80068054404111,0.640609397533247 +2.94174918379039,0.175967331891713,3.02350395609635,0.664501209875634 +2.64977582541515,0.177521141926778,3.53325213433404,0.69242106649816 +2.27804795107949,0.179492726795484,4.75687341104855,0.730010012477248 +1.81207106307359,0.181952378499593,6.22749964103012,0.779219887822632 +1.20006257623398,0.185189423913085,8.93386320080931,0.849815523279275 +0.642700133221933,0.188106533453904,8.13393137937316,0.914090075237443 +0.162044794069806,0.190586654584145,6.84967429813633,0.968216392025478 +-0.388232157105243,0.193419998799898,8.33645466109985,1.03409128858787 +-0.830929504473958,0.195666868854773,6.55661128043321,1.08590181326015 +-1.36043838894161,0.198355531717544,8.48597347596573,1.15295821165562 +-1.91508980963037,0.201167866402037,9.45426514385162,1.22766607773816 +-2.33168037879134,0.203252287238571,7.00041047744203,1.28298351600692 +-2.6861602881266,0.205018905852968,6.23609678997191,1.33226132626232 +-3.11696629519342,0.207164092379631,8.06821700769127,1.39601660142799 +-3.380586761282,0.208457026967588,4.81782679243833,1.43408720272189 +-3.47550271526036,0.208917537856196,1.74135519064351,1.4478474398641 +-3.43518793631723,0.20872442486799,-0.734649496547034,1.44204221911235 +-3.29063290033468,0.20803953649519,-2.65151294543016,1.42108989008103 +-3.11250951812149,0.20720138448128,-3.37731816971661,1.39440222798332 +-2.93711028388834,0.206380820700801,-3.45884008330213,1.36707037745739 +-2.73891519437972,0.205460331097488,-4.02680824821257,1.33525042669758 +-2.54407370559115,0.204559368575348,-4.14575468573189,1.30249055788068 +-2.39053644758188,0.203850927117784,-3.45709420414838,1.27517250334038 +-2.15879795354626,0.202792578446064,-5.27251552247232,1.23350893905721 +-1.88564352691945,0.201557490834808,-6.29472546535112,1.18376784337854 +-1.50072985975385,0.199840034833206,-8.83289566450933,1.11397005620157 +-1.01998602735263,0.197721642567706,-11.0512754269927,1.02664257045003 +-0.530741824639045,0.195584625082435,-11.5172616043355,0.935632848966399 +0.126087783919003,0.192750446012934,-15.5482513416115,0.812770134480102 +0.946410908708773,0.189270304626056,-19.0555049685026,0.662193004300093 +1.86205593933885,0.185436633202073,-21.3782931153237,0.493261137588954 +2.94062744320269,0.180998996286405,-24.7634112972474,0.297579972866728 +3.93046978361501,0.176952871875341,-23.8543722535639,0.109082059947364 +4.7236004422528,0.173709372038306,-20.7823421335204,-0.0551405855326269 +5.4675996884093,0.170687823308056,-20.2975626887207,-0.215532490358468 +6.07736475879185,0.168211429838999,-17.8991553796871,-0.356972113930467 +6.65108884942456,0.165897192554224,-17.4682758358605,-0.495006915364721 +7.19807710004944,0.163707606768037,-17.1913300740697,-0.630853283687656 +7.64857293059005,0.161906308033814,-15.0423509578624,-0.749718359272868 +8.02400343300067,0.160407406629327,-13.2511610676823,-0.854429402534267 +8.27697105170115,0.159393021979789,-9.64098997283795,-0.930612773408131 +8.46390802433729,0.158642656136866,-7.55191041918006,-0.990288179553298 +8.64850604379691,0.157906542316743,-7.6524659626792,-1.05075817839957 +8.8032807335877,0.157293428596627,-6.57881654114708,-1.10274416965953 +8.95446233254623,0.15669939876546,-6.54733003621288,-1.15448135368188 +9.07158780840541,0.15624055040851,-5.26781371598019,-1.1961077641594 +9.1515744845053,0.155929537510679,-3.66905719708923,-1.22510075616445 +9.22290256262306,0.155653781395773,-3.35718417818991,-1.25162931890121 +9.33420751522502,0.155228728073273,-5.2451661212583,-1.29307676745542 +9.47688301586101,0.154691209393847,-6.70164388358391,-1.34603334379105 +9.64454275757949,0.154066975097651,-7.90326731732296,-1.40848518191631 +9.89285589272581,0.153162353373709,-11.3158347636997,-1.4979032229037 +10.22362756085,0.151981737573662,-14.650501628764,-1.61367189419335 +10.5746835692363,0.150742722870912,-15.6856020630384,-1.73761995789998 +11.0290368525466,0.149174121064393,-19.6221318472333,-1.89267458943318 +11.521525763197,0.147496618191182,-21.3110872218343,-2.06107539330502 +12.0097551690352,0.145847744373501,-21.6105380566535,-2.2318424660011 +12.5809716926057,0.143952306536491,-24.9283948322494,-2.42882733520498 +13.1820104607476,0.14198353337863,-26.3928121759554,-2.63738407098313 +13.7756629255838,0.140055020571329,-26.7444571357352,-2.84871951501245 +14.3220873542119,0.13828754257827,-25.6466882741224,-3.05138035896919 +14.8207276171901,0.13668165953396,-24.3380973264228,-3.24370068086631 +15.2481159052797,0.135304978578286,-22.0327586677785,-3.41780415257313 +15.6181829346188,0.134113727245657,-20.031239855858,-3.57609156696746 +15.9254888584187,0.133123389933797,-17.5347244815675,-3.71465144744797 +16.182155368207,0.132294410691331,-15.4547144169649,-3.83677503055452 +16.3834151607406,0.131641182247482,-12.8669102455973,-3.93844971313409 +16.5204878574538,0.131192230298616,-9.39682632316524,-4.01270369605823 +16.63080123604,0.130831250954667,-7.83625560015622,-4.0746260057309 +16.6978177388739,0.130609927017838,-5.07710225196627,-4.11474540891623 +16.701984857604,0.130595862027892,-0.347660671770127,-4.11749263321274 +16.6854899363512,0.130651769492848,1.43643763310767,-4.10614186308969 +16.6411402735019,0.1308047247492,4.1675554165708,-4.07320972429145 +16.5970272924035,0.130956482780881,4.23560772792058,-4.03973983423644 +16.5434552195032,0.131140920196373,5.29688512305167,-3.99788370069179 +16.4980678409499,0.131295685501156,4.49788774495942,-3.96234126664833 +16.4550533870677,0.131442089660633,4.35700314664811,-3.92791210661862 +16.4034997284221,0.131617772322878,5.37560925845634,-3.88543389276675 +16.3600988160341,0.131763871175012,4.50159941501498,-3.84986212900329 +16.3247393980859,0.131881384461121,3.64239912793104,-3.82107978980207 +16.2845302752546,0.132014427026232,4.20163109569142,-3.78787838403979 +16.2354404393816,0.132177427292469,5.30582134897501,-3.74595163618939 +16.1798773405667,0.132361174237754,6.09144757743956,-3.697816848034 +16.1369672582067,0.132500057996333,4.56732062189424,-3.66172575346613 +16.0729892527298,0.132709048388341,7.13935329958349,-3.60531038515291 +15.9868687893218,0.132993853448599,10.1342793363433,-3.52522902801063 +15.8911356599786,0.133312141181979,11.6651084758568,-3.43305101643673 +15.785185002403,0.133664851955115,13.2307698405521,-3.32850110521918 +15.6905768998578,0.133973040333207,11.4667001799168,-3.23789092151739 +15.6133391245925,0.134217442405614,8.91912747186154,-3.16741172820068 +15.5640712059174,0.13436901282478,5.42501709786526,-3.1245430922278 +15.5443250145019,0.134428290724675,2.0902928832644,-3.10802553973481 +15.5052812966114,0.134546068190848,4.28655544877293,-3.07415305937281 +15.4770175815522,0.134630205681346,3.07016536757968,-3.04989252725926 +15.4444079562019,0.134726861461024,3.58608824982803,-3.02155515818277 +15.4270366339921,0.134777267890843,1.85031118379933,-3.00693394775266 +15.4316347413337,0.134764175609174,-0.477068569778691,-3.01070375685796 +15.485223969148,0.134616348041038,-5.22556993240566,-3.0519963557829 +15.5377720379079,0.134472416205775,-5.15548845343067,-3.09273516891207 +15.5864363653653,0.134339998564693,-4.8096502231334,-3.13074115872793 +15.6597153950738,0.134144325745554,-7.04643728132906,-3.18642230208099 +15.7245766055152,0.133972149207703,-6.29666671180733,-3.23617873754313 +15.7994245842376,0.133776242802017,-7.16413965150234,-3.29278996829851 +15.868636133975,0.133595774179426,-6.72874484385436,-3.34596069717585 +15.9023375683116,0.133507356204151,-3.42152965903116,-3.37299771969162 +15.9376135653167,0.133415388659391,-3.60800397413116,-3.40150826743101 +15.9393738216715,0.133410826950409,-0.181502904584986,-3.4029425084305 +15.946239217832,0.133393106351883,-0.717507717778203,-3.40861227436972 +15.9406611757132,0.133407505145555,0.597384933183044,-3.40389172201489 +15.90456013034,0.133501495817669,4.05122277456845,-3.37187884698887 +15.8771653544801,0.133572808058213,3.14316508126937,-3.34704146910768 +15.8412573150016,0.133665967099135,4.17494417410317,-3.31405094414194 +15.7935359722084,0.133789167478241,5.59834503955845,-3.26981266595369 +15.7268054682595,0.133962833301512,8.16726022036199,-3.20527474856718 +15.6569651811967,0.13414318189471,8.55473897390291,-3.1376749632947 +15.5618045186239,0.134389293082345,11.9466775679243,-3.04327198492507 +15.4642740054136,0.134640099683783,12.314988670809,-2.94595860197799 +15.3556432691781,0.134913622023805,13.2582887882595,-2.84119123527038 +15.3324002785773,0.134969408327903,2.54655478870887,-2.82106828851228 +15.4991813437282,0.134592165940367,-15.7222457854785,-2.94530591193266 +15.6789718790788,0.134188841013154,-16.9736944902724,-3.07943251782015 +15.9359054652393,0.133628746925532,-22.7675615343864,-3.25934242221321 +16.1941692821757,0.133070741096307,-22.8916803003747,-3.44023311654675 diff --git a/statsmodels/regression/tests/results/results_rls_stata.csv b/statsmodels/regression/tests/results/results_rls_stata.csv new file mode 100644 index 0000000..a2c93cd --- /dev/null +++ b/statsmodels/regression/tests/results/results_rls_stata.csv @@ -0,0 +1,204 @@ +rr,cusum,cusum2,uw,lw,uww,lww +,,,,,, +,,,,,, +,,,,,, +.20304158,.0226941,2.44e-06,13.54081,-13.54081,.12823,-.12823 +.2702816,.0529036,6.77e-06,13.67488,-13.67488,.1332551,-.1232049 +.24184042,.0799343,.0000102,13.80895,-13.80895,.1382803,-.1181797 +.41520333,.1263418,.0000205,13.94301,-13.94301,.1433054,-.1131546 +.39778414,.1708024,.0000298,14.07708,-14.07708,.1483305,-.1081295 +.17604447,.190479,.0000317,14.21115,-14.21115,.1533556,-.1031044 +.0938885,.200973,.0000322,14.34522,-14.34522,.1583808,-.0980792 +-.04561871,.1958742,.0000323,14.47928,-14.47928,.1634059,-.0930541 +-.10027123,.1846668,.0000329,14.61335,-14.61335,.168431,-.088029 +-.05035009,.1790391,.0000331,14.74742,-14.74742,.1734561,-.0830039 +-.03407203,.1752309,.0000331,14.88149,-14.88149,.1784813,-.0779787 +.09168515,.1854786,.0000336,15.01555,-15.01555,.1835064,-.0729536 +-.0628044,.1784589,.0000339,15.14962,-15.14962,.1885315,-.0679285 +-.16372342,.1601594,.0000354,15.28369,-15.28369,.1935566,-.0629034 +-.10374629,.1485636,.0000361,15.41776,-15.41776,.1985818,-.0578782 +-.15377103,.1313765,.0000375,15.55182,-15.55182,.2036069,-.0528531 +-.0567542,.1250331,.0000377,15.68589,-15.68589,.208632,-.047828 +-.14226659,.1091319,.0000389,15.81996,-15.81996,.2136571,-.0428029 +-.23751768,.0825844,.0000422,15.95403,-15.95403,.2186823,-.0377777 +-.3088606,.0480628,.0000479,16.08809,-16.08809,.2237074,-.0327526 +-.2232256,.0231128,.0000508,16.22216,-16.22216,.2287325,-.0277275 +-.19442033,.0013823,.0000531,16.35623,-16.35623,.2337576,-.0227024 +-.06673149,-.0060764,.0000533,16.4903,-16.4903,.2387828,-.0176772 +-.22843692,-.0316089,.0000564,16.62436,-16.62436,.2438079,-.0126521 +-.22214566,-.0564383,.0000593,16.75843,-16.75843,.248833,-.007627 +-.0285363,-.0596278,.0000594,16.8925,-16.8925,.2538581,-.0026019 +.25234739,-.0314227,.0000632,17.02657,-17.02657,.2588833,.0024233 +.51036376,.0256209,.0000786,17.16063,-17.16063,.2639084,.0074484 +.42630054,.0732688,.0000894,17.2947,-17.2947,.2689335,.0124735 +.35366206,.1127979,.0000968,17.42877,-17.42877,.2739587,.0174986 +.23419873,.1389744,.0001,17.56284,-17.56284,.2789838,.0225238 +.16073747,.1569401,.0001015,17.6969,-17.6969,.2840089,.0275489 +.25940672,.1859342,.0001055,17.83097,-17.83097,.289034,.032574 +.28529326,.2178216,.0001104,17.96504,-17.96504,.2940592,.0375992 +.34027138,.255854,.0001172,18.09911,-18.09911,.2990843,.0426243 +.32652083,.2923494,.0001235,18.23317,-18.23317,.3041094,.0476494 +.1962729,.3142869,.0001258,18.36724,-18.36724,.3091345,.0526745 +.52732584,.3732265,.0001423,18.50131,-18.50131,.3141596,.0576996 +.81936588,.4648075,.0001821,18.63537,-18.63537,.3191848,.0627248 +1.0602511,.5833125,.0002487,18.76944,-18.76944,.3242099,.0677499 +1.1484205,.7116722,.0003268,18.90351,-18.90351,.329235,.072775 +1.5256982,.8822004,.0004647,19.03758,-19.03758,.3342601,.0778001 +1.5951505,1.060491,.0006155,19.17164,-19.17164,.3392853,.0828253 +1.3382179,1.210065,.0007216,19.30571,-19.30571,.3443104,.0878504 +1.3616943,1.362262,.0008314,19.43978,-19.43978,.3493355,.0928755 +.86773648,1.45925,.0008761,19.57385,-19.57385,.3543606,.0979007 +.65339285,1.53228,.0009014,19.70791,-19.70791,.3593858,.1029258 +.58474164,1.597637,.0009216,19.84198,-19.84198,.3644109,.1079509 +.45064816,1.648006,.0009336,19.97605,-19.97605,.369436,.112976 +.00958712,1.649078,.0009337,20.11012,-20.11012,.3744611,.1180012 +-.10173146,1.637707,.0009343,20.24418,-20.24418,.3794863,.1230263 +-.47409877,1.584717,.0009476,20.37825,-20.37825,.3845114,.1280514 +-.7423211,1.501747,.0009802,20.51232,-20.51232,.3895365,.1330765 +.13907311,1.517291,.0009814,20.64639,-20.64639,.3945617,.1381017 +.01375003,1.518828,.0009814,20.78045,-20.78045,.3995868,.1431268 +1.1596226,1.64844,.0010611,20.91452,-20.91452,.4046119,.1481519 +1.5958938,1.826814,.001212,21.04859,-21.04859,.409637,.153177 +2.2563117,2.079004,.0015136,21.18266,-21.18266,.4146622,.1582021 +2.9279967,2.406268,.0020215,21.31672,-21.31672,.4196873,.1632273 +3.9063339,2.842881,.0029256,21.45079,-21.45079,.4247124,.1682524 +4.6111115,3.358268,.0041854,21.58486,-21.58486,.4297375,.1732775 +4.5984313,3.872237,.0054382,21.71893,-21.71893,.4347627,.1783026 +4.1330187,4.334188,.0064503,21.85299,-21.85299,.4397878,.1833278 +4.4212893,4.828358,.0076085,21.98706,-21.98706,.4448129,.1883529 +4.5048686,5.33187,.0088109,22.12113,-22.12113,.449838,.193378 +3.5032266,5.723428,.009538,22.2552,-22.2552,.4548632,.1984031 +3.7209096,6.139317,.0103583,22.38926,-22.38926,.4598883,.2034283 +3.5668012,6.53798,.0111121,22.52333,-22.52333,.4649134,.2084534 +3.0814165,6.882392,.0116746,22.6574,-22.6574,.4699385,.2134785 +2.8750272,7.203735,.0121644,22.79147,-22.79147,.4749637,.2185037 +2.7496164,7.511062,.0126123,22.92553,-22.92553,.4799888,.2235288 +2.3070702,7.768925,.0129277,23.0596,-23.0596,.4850139,.2285539 +1.8847579,7.979585,.0131381,23.19367,-23.19367,.4900391,.233579 +1.9908349,8.202102,.013373,23.32774,-23.32774,.4950642,.2386042 +2.105656,8.437452,.0136356,23.4618,-23.4618,.5000893,.2436293 +2.5343597,8.720719,.0140162,23.59587,-23.59587,.5051144,.2486544 +2.8006793,9.033753,.0144809,23.72994,-23.72994,.5101395,.2536795 +3.0235025,9.371693,.0150226,23.86401,-23.86401,.5151647,.2587047 +3.53325,9.766605,.0157622,23.99807,-23.99807,.5201898,.2637298 +4.7568726,10.29828,.0171029,24.13214,-24.13214,.5252149,.2687549 +6.227502,10.99434,.0194006,24.26621,-24.26621,.5302401,.27378 +8.9338671,11.99288,.0241295,24.40027,-24.40027,.5352651,.2788052 +8.1339298,12.90201,.0280494,24.53434,-24.53434,.5402903,.2838303 +6.8496713,13.66761,.0308292,24.66841,-24.66841,.5453154,.2888554 +8.3364544,14.59938,.0349468,24.80248,-24.80248,.5503405,.2938806 +6.5566113,15.33221,.0374938,24.93654,-24.93654,.5553657,.2989057 +8.4859752,16.2807,.0417604,25.07061,-25.07061,.5603908,.3039308 +9.4542677,17.33741,.0470562,25.20468,-25.20468,.5654159,.3089559 +7.0004094,18.11985,.0499597,25.33875,-25.33875,.5704411,.3139811 +6.2360956,18.81686,.0522638,25.47281,-25.47281,.5754662,.3190062 +8.0682169,19.71865,.0561206,25.60688,-25.60688,.5804913,.3240313 +4.8178254,20.25714,.0574959,25.74095,-25.74095,.5855164,.3290564 +1.7413544,20.45177,.0576755,25.87502,-25.87502,.5905415,.3340816 +-.7346488,20.36966,.0577075,26.00908,-26.00908,.5955667,.3391067 +-2.6515074,20.0733,.0581241,26.14315,-26.14315,.6005918,.3441318 +-3.3773178,19.69582,.0587999,26.27722,-26.27722,.6056169,.3491569 +-3.4588369,19.30922,.0595087,26.41129,-26.41129,.6106421,.3541821 +-4.0268058,18.85914,.0604694,26.54535,-26.54535,.6156672,.3592072 +-4.1457617,18.39577,.0614877,26.67942,-26.67942,.6206923,.3642323 +-3.4570982,18.00936,.0621959,26.81349,-26.81349,.6257174,.3692574 +-5.2725184,17.42005,.0638429,26.94756,-26.94756,.6307425,.3742826 +-6.2947299,16.71649,.0661906,27.08162,-27.08162,.6357676,.3793077 +-8.8328932,15.72923,.0708131,27.21569,-27.21569,.6407928,.3843328 +-11.051272,14.49402,.0780492,27.34976,-27.34976,.6458179,.389358 +-11.517264,13.20673,.0859083,27.48383,-27.48383,.650843,.394383 +-15.548254,11.46889,.1002315,27.61789,-27.61789,.6558682,.3994082 +-19.055501,9.339044,.1217453,27.75196,-27.75196,.6608933,.4044333 +-21.3783,6.949577,.1488237,27.88603,-27.88603,.6659184,.4094584 +-24.763411,4.181755,.1851564,28.0201,-28.0201,.6709436,.4144836 +-23.854377,1.515535,.2188706,28.15416,-28.15416,.6759686,.4195087 +-20.782338,-.8073198,.2444603,28.28823,-28.28823,.6809938,.4245338 +-20.297563,-3.075991,.2688701,28.4223,-28.4223,.6860189,.429559 +-17.899156,-5.076591,.2878521,28.55637,-28.55637,.691044,.4345841 +-17.468273,-7.029032,.3059312,28.69043,-28.69043,.6960692,.4396092 +-17.191332,-8.950518,.3234415,28.8245,-28.8245,.7010943,.4446343 +-15.042346,-10.63181,.3368478,28.95857,-28.95857,.7061194,.4496594 +-13.251165,-12.1129,.3472514,29.09264,-29.09264,.7111446,.4546846 +-9.6409921,-13.19048,.3527585,29.2267,-29.2267,.7161697,.4597097 +-7.551907,-14.03456,.3561375,29.36077,-29.36077,.7211948,.4647348 +-7.6524592,-14.88988,.3596071,29.49484,-29.49484,.72622,.46976 +-6.5788193,-15.6252,.3621714,29.62891,-29.62891,.731245,.4747851 +-6.5473367,-16.357,.3647113,29.76297,-29.76297,.7362702,.4798102 +-5.2678084,-16.94579,.3663554,29.89704,-29.89704,.7412953,.4848353 +-3.66906,-17.35588,.367153,30.03111,-30.03111,.7463204,.4898604 +-3.3571877,-17.73112,.3678208,30.16517,-30.16517,.7513456,.4948856 +-5.2451606,-18.31737,.3694508,30.29924,-30.29924,.7563707,.4999107 +-6.7016457,-19.06642,.3721118,30.43331,-30.43331,.7613958,.5049359 +-7.9032685,-19.94977,.3758125,30.56738,-30.56738,.7664209,.5099609 +-11.315834,-21.21455,.3833991,30.70144,-30.70144,.771446,.5149861 +-14.650504,-22.85205,.3961161,30.83551,-30.83551,.7764712,.5200112 +-15.685601,-24.60524,.4106934,30.96958,-30.96958,.7814963,.5250363 +-19.622131,-26.79841,.4335057,31.10365,-31.10365,.7865214,.5300615 +-21.311085,-29.18037,.4604141,31.23771,-31.23771,.7915466,.5350866 +-21.610529,-31.59579,.488084,31.37178,-31.37178,.7965717,.5401117 +-24.928394,-34.38205,.5249025,31.50585,-31.50585,.8015968,.5451369 +-26.392804,-37.33199,.5661737,31.63992,-31.63992,.8066219,.550162 +-26.74445,-40.32124,.608552,31.77398,-31.77398,.8116471,.5551871 +-25.646688,-43.18779,.6475227,31.90805,-31.90805,.8166722,.5602123 +-24.338104,-45.90807,.6826182,32.04212,-32.04212,.8216973,.5652373 +-22.032761,-48.37069,.7113799,32.17619,-32.17619,.8267224,.5702625 +-20.031242,-50.60959,.7351533,32.31025,-32.31025,.8317476,.5752876 +-17.534726,-52.56946,.7533702,32.44432,-32.44432,.8367727,.5803127 +-15.45471,-54.29684,.7675216,32.57839,-32.57839,.8417978,.5853379 +-12.866916,-55.73499,.7773306,32.71246,-32.71246,.8468229,.590363 +-9.3968278,-56.78527,.7825623,32.84652,-32.84652,.8518481,.5953881 +-7.8362546,-57.66114,.7862005,32.98059,-32.98059,.8568732,.6004133 +-5.0771041,-58.22861,.7877278,33.11466,-33.11466,.8618983,.6054384 +-.34765929,-58.26747,.7877349,33.24873,-33.24873,.8669235,.6104635 +1.4364328,-58.10691,.7878572,33.38279,-33.38279,.8719485,.6154886 +4.1675445,-57.64111,.7888862,33.51686,-33.51686,.8769737,.6205137 +4.2356097,-57.16769,.7899492,33.65093,-33.65093,.8819988,.6255389 +5.2968869,-56.57565,.7916115,33.785,-33.785,.8870239,.630564 +4.4978863,-56.07292,.7928101,33.91906,-33.91906,.8920491,.6355891 +4.3570048,-55.58594,.7939349,34.05313,-34.05313,.8970742,.6406143 +5.3756079,-54.9851,.795647,34.1872,-34.1872,.9020993,.6456394 +4.5015951,-54.48196,.7968476,34.32127,-34.32127,.9071245,.6506645 +3.6423914,-54.07484,.7976336,34.45533,-34.45533,.9121495,.6556896 +4.2016237,-53.60522,.7986796,34.5894,-34.5894,.9171747,.6607147 +5.3058269,-53.01219,.8003476,34.72347,-34.72347,.9221998,.6657399 +6.0914494,-52.33134,.802546,34.85754,-34.85754,.9272249,.670765 +4.5673224,-51.82085,.803782,34.9916,-34.9916,.9322501,.6757901 +7.1393493,-51.02288,.8068019,35.12567,-35.12567,.9372752,.6808153 +10.134278,-49.89017,.812887,35.25974,-35.25974,.9423003,.6858404 +11.665111,-48.58635,.8209491,35.39381,-35.39381,.9473255,.6908655 +13.230785,-47.10754,.8313208,35.52787,-35.52787,.9523506,.6958906 +11.466692,-45.8259,.839111,35.66194,-35.66194,.9573757,.7009158 +8.9191298,-44.829,.8438243,35.79601,-35.79601,.9624009,.7059409 +5.4250249,-44.22264,.845568,35.93008,-35.93008,.9674259,.710966 +2.0902884,-43.98901,.8458269,36.06414,-36.06414,.9724511,.7159911 +4.2865572,-43.5099,.8469156,36.19821,-36.19821,.9774762,.7210162 +3.0701673,-43.16674,.847474,36.33228,-36.33228,.9825013,.7260414 +3.5860871,-42.76592,.848236,36.46635,-36.46635,.9875265,.7310665 +1.8503127,-42.55911,.8484389,36.60041,-36.60041,.9925516,.7360916 +-.47707287,-42.61243,.8484523,36.73448,-36.73448,.9975767,.7411168 +-5.2255741,-43.1965,.8500702,36.86855,-36.86855,1.002602,.7461419 +-5.1554985,-43.77274,.851645,37.00262,-37.00262,1.007627,.751167 +-4.8096412,-44.31031,.8530155,37.13668,-37.13668,1.012652,.7561921 +-7.0464378,-45.0979,.8559573,37.27075,-37.27075,1.017677,.7612172 +-6.2966584,-45.80168,.8583064,37.40482,-37.40482,1.022702,.7662424 +-7.1641344,-46.60242,.8613473,37.53888,-37.53888,1.027727,.7712675 +-6.7287364,-47.35449,.8640299,37.67295,-37.67295,1.032753,.7762926 +-3.4215312,-47.73692,.8647235,37.80702,-37.80702,1.037778,.7813178 +-3.6080018,-48.14019,.8654947,37.94109,-37.94109,1.042803,.7863429 +-.18150405,-48.16048,.8654967,38.07515,-38.07515,1.047828,.791368 +-.71750861,-48.24067,.8655272,38.20922,-38.20922,1.052853,.7963932 +.59738383,-48.1739,.8655483,38.34329,-38.34329,1.057878,.8014182 +4.0512283,-47.72109,.8665208,38.47736,-38.47736,1.062903,.8064434 +3.1431576,-47.36978,.8671061,38.61142,-38.61142,1.067929,.8114685 +4.1749543,-46.90314,.8681388,38.74549,-38.74549,1.072954,.8164936 +5.5983515,-46.27741,.8699957,38.87956,-38.87956,1.077979,.8215188 +8.1672592,-45.36455,.8739479,39.01363,-39.01363,1.083004,.8265439 +8.5547431,-44.40838,.8782839,39.14769,-39.14769,1.088029,.831569 +11.946671,-43.0731,.88674,39.28176,-39.28176,1.093054,.8365942 +12.314985,-41.69664,.8957255,39.41583,-39.41583,1.098079,.8416193 +13.258285,-40.21476,.9061403,39.5499,-39.5499,1.103104,.8466444 +2.5465709,-39.93012,.9065245,39.68396,-39.68396,1.10813,.8516695 +-15.722248,-41.68741,.9211701,39.81803,-39.81803,1.113155,.8566946 +-16.973694,-43.58457,.9382399,39.9521,-39.9521,1.11818,.8617198 +-22.767561,-46.12931,.9689521,40.08617,-40.08617,1.123205,.8667449 +-22.891686,-48.68793,1,40.22023,-40.22023,1.12823,.87177 diff --git a/statsmodels/regression/tests/results/results_theil_textile.py b/statsmodels/regression/tests/results/results_theil_textile.py new file mode 100644 index 0000000..d6af02d --- /dev/null +++ b/statsmodels/regression/tests/results/results_theil_textile.py @@ -0,0 +1,67 @@ +import numpy as np + +from statsmodels.tools.testing import ParamsTableTestBunch + +est = dict( + rmse=.0136097497582343, + r2=.9741055881598619, + N=17, + df_r=14, + compat=.860625753607033, + vrank=2, + pvalue=.6503055973535645, + frac_sample=.7935370014985163, + frac_prior=.2064629985014838, + cmd="tgmixed", + predict="regres_p", + depvar="lconsump", + marginsok="XB default", + cmdline="tgmixed lconsump lincome lprice, prior(lprice -0.7 0.15 lincome 1 0.15) cov(lprice lincome -0.01)", # noqa:E501 + prior="lprice -0.7 0.15 lincome 1 0.15", + properties="b V", +) + +params_table = np.array([ + 1.0893571039001, .10338923727975, 10.53646523141, 4.871483239e-08, + .86760924410848, 1.3111049636916, 14, 2.1447866879178, + 0, -.82054628653043, .03496499383295, -23.467651401591, + 1.218701708e-12, -.89553873984647, -.74555383321439, 14, + 2.1447866879178, 0, 1.4666439879147, .20347802665937, + 7.2078740490733, 4.509300573e-06, 1.0302270250519, 1.9030609507775, + 14, 2.1447866879178, 0]).reshape(3, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = 'lincome lprice _cons'.split() + +cov = np.array([ + .01068933438529, -.00081953185523, -.0199747086722, -.00081953185523, + .00122255079374, -.00064024357954, -.0199747086722, -.00064024357954, + .04140330733319]).reshape(3, 3) + +cov_colnames = 'lincome lprice _cons'.split() + +cov_rownames = 'lincome lprice _cons'.split() + +cov_prior = np.array([ + .0225, -.01, 0, -.01, + .0225, 0, 0, 0, + 0]).reshape(3, 3) + +cov_prior_colnames = 'lincome lprice _cons'.split() + +cov_prior_rownames = 'lincome lprice _cons'.split() + + +results_theil_textile = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + cov_prior=cov_prior, + cov_prior_colnames=cov_prior_colnames, + cov_prior_rownames=cov_prior_rownames, + **est +) diff --git a/statsmodels/regression/tests/results/test_rls.R b/statsmodels/regression/tests/results/test_rls.R new file mode 100644 index 0000000..5d121b6 --- /dev/null +++ b/statsmodels/regression/tests/results/test_rls.R @@ -0,0 +1,15 @@ +library(quantreg) +library(strucchange) + +macrodata <- read.csv('/Users/fulton/projects/statsmodels/statsmodels/datasets/macrodata/macrodata.csv') + +y <- macrodata$cpi +X <- cbind(rep(1, nrow(macrodata)), macrodata$m1) +rec_beta <- lm.fit.recursive(X, y, int=FALSE) +rec_resid <- recresid(cpi ~ 1 + m1, data=macrodata) +cusum <- efp(cpi ~ 1 + m1, data=macrodata, type=c("Rec-CUSUM")) + +output <- data.frame(cbind(t(rec_beta[,3:203]), rec_resid, cusum$process[2:202])) +names(output) <- c('beta1', 'beta2', 'rec_resid', 'cusum') +write.csv(output, '/Users/fulton/projects/statsmodels/statsmodels/regression/tests/results/results_rls_R.csv', row.names=FALSE) +print(cusum$sigma) # 9.163565 diff --git a/statsmodels/regression/tests/results/test_rls.do b/statsmodels/regression/tests/results/test_rls.do new file mode 100644 index 0000000..4c76ffc --- /dev/null +++ b/statsmodels/regression/tests/results/test_rls.do @@ -0,0 +1,20 @@ +insheet using /Users/fulton/projects/statsmodels/statsmodels/datasets/macrodata/macrodata.csv, clear + +gen tq = yq(year, quarter) +format tq %tq +tsset tq + +cusum6 cpi m1, rr(rr) cs(cusum) lw(lw) uw(uw) cs2(cusum2) lww(lww) uww(uww) noplot + +outsheet rr-lww using results_rls_stata.csv, comma replace + +// Section for restricted least squares + +constraint 1 m1 + unemp = 1 +cnsreg infl m1 unemp, c(1) + +disp %18.13f e(ll) // -534.4292052931121 +matrix list e(b), format(%15.13f) // -0.0018477514060 1.0018477514060 -0.7001083844336 + +mata: se=sqrt(diagonal(st_matrix("e(V)"))) +mata: se // .0005369357, .0005369357, .4699552366 diff --git a/statsmodels/regression/tests/results/theil_textile_predict.csv b/statsmodels/regression/tests/results/theil_textile_predict.csv new file mode 100644 index 0000000..f452d4b --- /dev/null +++ b/statsmodels/regression/tests/results/theil_textile_predict.csv @@ -0,0 +1,18 @@ +fittedvalues,fittedvalues_se +1.984849,.0067426 +1.9948384,.00629217 +2.0042656,.00589781 +2.0620794,.00437274 +2.0785806,.00396735 +2.0859353,.00479328 +2.0879624,.00511938 +2.1264076,.00510187 +2.1729304,.00450289 +2.180025,.00410166 +2.1866386,.00438359 +2.1494782,.00502813 +2.1481932,.00468026 +2.2217135,.00622614 +2.1993129,.00468301 +2.1967881,.0046891 +2.1963122,.00451292 diff --git a/statsmodels/regression/tests/test_cov.py b/statsmodels/regression/tests/test_cov.py new file mode 100644 index 0000000..be3cc7a --- /dev/null +++ b/statsmodels/regression/tests/test_cov.py @@ -0,0 +1,39 @@ +"""Example: minimal OLS + +""" + +import numpy as np +import statsmodels.api as sm + +from numpy.testing import assert_almost_equal, assert_allclose + +def test_HC_use(): + np.random.seed(0) + nsample = 100 + x = np.linspace(0,10, 100) + X = sm.add_constant(np.column_stack((x, x**2)), prepend=False) + beta = np.array([1, 0.1, 10]) + y = np.dot(X, beta) + np.random.normal(size=nsample) + + results = sm.OLS(y, X).fit() + + #test cov_params + idx = np.array([1,2]) + #need to call HC0_se to have cov_HC0 available + results.HC0_se + cov12 = results.cov_params(column=[1,2], cov_p=results.cov_HC0) + assert_almost_equal(cov12, results.cov_HC0[idx[:,None], idx], decimal=15) + + #test t_test + tvals = results.params/results.HC0_se + ttest = results.t_test(np.eye(3), cov_p=results.cov_HC0) + assert_almost_equal(ttest.tvalue, tvals, decimal=14) + assert_almost_equal(ttest.sd, results.HC0_se, decimal=14) + + #test f_test + ftest = results.f_test(np.eye(3)[:-1], cov_p=results.cov_HC0) + slopes = results.params[:-1] + idx = np.array([0,1]) + cov_slopes = results.cov_HC0[idx[:,None], idx] + fval = np.dot(slopes, np.dot(np.linalg.inv(cov_slopes), slopes))/len(idx) + assert_allclose(ftest.fvalue, fval, rtol=12) diff --git a/statsmodels/regression/tests/test_dimred.py b/statsmodels/regression/tests/test_dimred.py new file mode 100644 index 0000000..e648df4 --- /dev/null +++ b/statsmodels/regression/tests/test_dimred.py @@ -0,0 +1,59 @@ +import numpy as np +import pandas as pd +from statsmodels.regression.dimred import (SlicedInverseReg, SAVE, PHD) +from numpy.testing import (assert_equal) + + +def test_poisson(): + + np.random.seed(43242) + + # Generate a non-orthogonal design matrix + xmat = np.random.normal(size=(500, 5)) + xmat[:, 1] = 0.5*xmat[:, 0] + np.sqrt(1 - 0.5**2) * xmat[:, 1] + xmat[:, 3] = 0.5*xmat[:, 2] + np.sqrt(1 - 0.5**2) * xmat[:, 3] + + b = np.r_[0, 1, -1, 0, 0.5] + lpr = np.dot(xmat, b) + ev = np.exp(lpr) + y = np.random.poisson(ev) + + for method in range(6): + + if method == 0: + model = SlicedInverseReg(y, xmat) + rslt = model.fit() + elif method == 1: + model = SAVE(y, xmat) + rslt = model.fit(slice_n=100) + elif method == 2: + model = SAVE(y, xmat, bc=True) + rslt = model.fit(slice_n=100) + elif method == 3: + df = pd.DataFrame({"y": y, + "x0": xmat[:, 0], + "x1": xmat[:, 1], + "x2": xmat[:, 2], + "x3": xmat[:, 3], + "x4": xmat[:, 4]}) + model = SlicedInverseReg.from_formula( + "y ~ 0 + x0 + x1 + x2 + x3 + x4", data=df) + rslt = model.fit() + elif method == 4: + model = PHD(y, xmat) + rslt = model.fit() + elif method == 5: + model = PHD(y, xmat) + rslt = model.fit(resid=True) + + # Check for concentration in one direction (this is + # a single index model) + assert_equal(np.abs(rslt.eigs[0] / rslt.eigs[1]) > 5, True) + + # Check that the estimated direction aligns with the true + # direction + params = np.asarray(rslt.params) + q = np.dot(params[:, 0], b) + q /= np.sqrt(np.sum(params[:, 0]**2)) + q /= np.sqrt(np.sum(b**2)) + assert_equal(np.abs(q) > 0.95, True) diff --git a/statsmodels/regression/tests/test_glsar_gretl.py b/statsmodels/regression/tests/test_glsar_gretl.py new file mode 100644 index 0000000..0e5390f --- /dev/null +++ b/statsmodels/regression/tests/test_glsar_gretl.py @@ -0,0 +1,646 @@ +# -*- coding: utf-8 -*- +"""Tests of GLSAR and diagnostics against Gretl + +Created on Thu Feb 02 21:15:47 2012 + +Author: Josef Perktold +License: BSD-3 + +""" + +import os + +import numpy as np +from numpy.testing import (assert_almost_equal, assert_equal, + assert_allclose, assert_array_less) + +from statsmodels.regression.linear_model import OLS, GLSAR +from statsmodels.tools.tools import add_constant +from statsmodels.datasets import macrodata + +import statsmodels.stats.sandwich_covariance as sw +import statsmodels.stats.diagnostic as smsdia +import statsmodels.stats.outliers_influence as oi + + +def compare_ftest(contrast_res, other, decimal=(5,4)): + assert_almost_equal(contrast_res.fvalue, other[0], decimal=decimal[0]) + assert_almost_equal(contrast_res.pvalue, other[1], decimal=decimal[1]) + assert_equal(contrast_res.df_num, other[2]) + assert_equal(contrast_res.df_denom, other[3]) + assert_equal("f", other[4]) + + +class TestGLSARGretl(object): + + def test_all(self): + + d = macrodata.load_pandas().data + #import datasetswsm.greene as g + #d = g.load('5-1') + + #growth rates + gs_l_realinv = 400 * np.diff(np.log(d['realinv'].values)) + gs_l_realgdp = 400 * np.diff(np.log(d['realgdp'].values)) + + #simple diff, not growthrate, I want heteroscedasticity later for testing + endogd = np.diff(d['realinv']) + exogd = add_constant(np.c_[np.diff(d['realgdp'].values), d['realint'][:-1].values]) + + endogg = gs_l_realinv + exogg = add_constant(np.c_[gs_l_realgdp, d['realint'][:-1].values]) + + res_ols = OLS(endogg, exogg).fit() + #print res_ols.params + + mod_g1 = GLSAR(endogg, exogg, rho=-0.108136) + res_g1 = mod_g1.fit() + #print res_g1.params + + mod_g2 = GLSAR(endogg, exogg, rho=-0.108136) #-0.1335859) from R + res_g2 = mod_g2.iterative_fit(maxiter=5) + #print res_g2.params + + + rho = -0.108136 + + # coefficient std. error t-ratio p-value 95% CONFIDENCE INTERVAL + partable = np.array([ + [-9.50990, 0.990456, -9.602, 3.65e-018, -11.4631, -7.55670], # *** + [ 4.37040, 0.208146, 21.00, 2.93e-052, 3.95993, 4.78086], # *** + [-0.579253, 0.268009, -2.161, 0.0319, -1.10777, -0.0507346]]) # ** + + #Statistics based on the rho-differenced data: + + result_gretl_g1 = dict( + endog_mean = ("Mean dependent var", 3.113973), + endog_std = ("S.D. dependent var", 18.67447), + ssr = ("Sum squared resid", 22530.90), + mse_resid_sqrt = ("S.E. of regression", 10.66735), + rsquared = ("R-squared", 0.676973), + rsquared_adj = ("Adjusted R-squared", 0.673710), + fvalue = ("F(2, 198)", 221.0475), + f_pvalue = ("P-value(F)", 3.56e-51), + resid_acf1 = ("rho", -0.003481), + dw = ("Durbin-Watson", 1.993858)) + + + #fstatistic, p-value, df1, df2 + reset_2_3 = [5.219019, 0.00619, 2, 197, "f"] + reset_2 = [7.268492, 0.00762, 1, 198, "f"] + reset_3 = [5.248951, 0.023, 1, 198, "f"] + #LM-statistic, p-value, df + arch_4 = [7.30776, 0.120491, 4, "chi2"] + + #multicollinearity + vif = [1.002, 1.002] + cond_1norm = 6862.0664 + determinant = 1.0296049e+009 + reciprocal_condition_number = 0.013819244 + + #Chi-square(2): test-statistic, pvalue, df + normality = [20.2792, 3.94837e-005, 2] + + #tests + res = res_g1 #with rho from Gretl + + #basic + + assert_almost_equal(res.params, partable[:,0], 4) + assert_almost_equal(res.bse, partable[:,1], 6) + assert_almost_equal(res.tvalues, partable[:,2], 2) + + assert_almost_equal(res.ssr, result_gretl_g1['ssr'][1], decimal=2) + #assert_almost_equal(res.llf, result_gretl_g1['llf'][1], decimal=7) #not in gretl + #assert_almost_equal(res.rsquared, result_gretl_g1['rsquared'][1], decimal=7) #FAIL + #assert_almost_equal(res.rsquared_adj, result_gretl_g1['rsquared_adj'][1], decimal=7) #FAIL + assert_almost_equal(np.sqrt(res.mse_resid), result_gretl_g1['mse_resid_sqrt'][1], decimal=5) + assert_almost_equal(res.fvalue, result_gretl_g1['fvalue'][1], decimal=4) + assert_allclose(res.f_pvalue, + result_gretl_g1['f_pvalue'][1], + rtol=1e-2) + #assert_almost_equal(res.durbin_watson, result_gretl_g1['dw'][1], decimal=7) #TODO + + #arch + #sm_arch = smsdia.acorr_lm(res.wresid**2, maxlag=4, autolag=None) + sm_arch = smsdia.het_arch(res.wresid, maxlag=4) + assert_almost_equal(sm_arch[0], arch_4[0], decimal=4) + assert_almost_equal(sm_arch[1], arch_4[1], decimal=6) + + #tests + res = res_g2 #with estimated rho + + #estimated lag coefficient + assert_almost_equal(res.model.rho, rho, decimal=3) + + #basic + assert_almost_equal(res.params, partable[:,0], 4) + assert_almost_equal(res.bse, partable[:,1], 3) + assert_almost_equal(res.tvalues, partable[:,2], 2) + + assert_almost_equal(res.ssr, result_gretl_g1['ssr'][1], decimal=2) + #assert_almost_equal(res.llf, result_gretl_g1['llf'][1], decimal=7) #not in gretl + #assert_almost_equal(res.rsquared, result_gretl_g1['rsquared'][1], decimal=7) #FAIL + #assert_almost_equal(res.rsquared_adj, result_gretl_g1['rsquared_adj'][1], decimal=7) #FAIL + assert_almost_equal(np.sqrt(res.mse_resid), result_gretl_g1['mse_resid_sqrt'][1], decimal=5) + assert_almost_equal(res.fvalue, result_gretl_g1['fvalue'][1], decimal=0) + assert_almost_equal(res.f_pvalue, result_gretl_g1['f_pvalue'][1], decimal=6) + #assert_almost_equal(res.durbin_watson, result_gretl_g1['dw'][1], decimal=7) #TODO + + + + c = oi.reset_ramsey(res, degree=2) + compare_ftest(c, reset_2, decimal=(2,4)) + c = oi.reset_ramsey(res, degree=3) + compare_ftest(c, reset_2_3, decimal=(2,4)) + + #arch + #sm_arch = smsdia.acorr_lm(res.wresid**2, maxlag=4, autolag=None) + sm_arch = smsdia.het_arch(res.wresid, maxlag=4) + assert_almost_equal(sm_arch[0], arch_4[0], decimal=1) + assert_almost_equal(sm_arch[1], arch_4[1], decimal=2) + + + + ''' + Performing iterative calculation of rho... + + ITER RHO ESS + 1 -0.10734 22530.9 + 2 -0.10814 22530.9 + + Model 4: Cochrane-Orcutt, using observations 1959:3-2009:3 (T = 201) + Dependent variable: ds_l_realinv + rho = -0.108136 + + coefficient std. error t-ratio p-value + ------------------------------------------------------------- + const -9.50990 0.990456 -9.602 3.65e-018 *** + ds_l_realgdp 4.37040 0.208146 21.00 2.93e-052 *** + realint_1 -0.579253 0.268009 -2.161 0.0319 ** + + Statistics based on the rho-differenced data: + + Mean dependent var 3.113973 S.D. dependent var 18.67447 + Sum squared resid 22530.90 S.E. of regression 10.66735 + R-squared 0.676973 Adjusted R-squared 0.673710 + F(2, 198) 221.0475 P-value(F) 3.56e-51 + rho -0.003481 Durbin-Watson 1.993858 + ''' + + ''' + RESET test for specification (squares and cubes) + Test statistic: F = 5.219019, + with p-value = P(F(2,197) > 5.21902) = 0.00619 + + RESET test for specification (squares only) + Test statistic: F = 7.268492, + with p-value = P(F(1,198) > 7.26849) = 0.00762 + + RESET test for specification (cubes only) + Test statistic: F = 5.248951, + with p-value = P(F(1,198) > 5.24895) = 0.023: + ''' + + ''' + Test for ARCH of order 4 + + coefficient std. error t-ratio p-value + -------------------------------------------------------- + alpha(0) 97.0386 20.3234 4.775 3.56e-06 *** + alpha(1) 0.176114 0.0714698 2.464 0.0146 ** + alpha(2) -0.0488339 0.0724981 -0.6736 0.5014 + alpha(3) -0.0705413 0.0737058 -0.9571 0.3397 + alpha(4) 0.0384531 0.0725763 0.5298 0.5968 + + Null hypothesis: no ARCH effect is present + Test statistic: LM = 7.30776 + with p-value = P(Chi-square(4) > 7.30776) = 0.120491: + ''' + + ''' + Variance Inflation Factors + + Minimum possible value = 1.0 + Values > 10.0 may indicate a collinearity problem + + ds_l_realgdp 1.002 + realint_1 1.002 + + VIF(j) = 1/(1 - R(j)^2), where R(j) is the multiple correlation coefficient + between variable j and the other independent variables + + Properties of matrix X'X: + + 1-norm = 6862.0664 + Determinant = 1.0296049e+009 + Reciprocal condition number = 0.013819244 + ''' + ''' + Test for ARCH of order 4 - + Null hypothesis: no ARCH effect is present + Test statistic: LM = 7.30776 + with p-value = P(Chi-square(4) > 7.30776) = 0.120491 + + Test of common factor restriction - + Null hypothesis: restriction is acceptable + Test statistic: F(2, 195) = 0.426391 + with p-value = P(F(2, 195) > 0.426391) = 0.653468 + + Test for normality of residual - + Null hypothesis: error is normally distributed + Test statistic: Chi-square(2) = 20.2792 + with p-value = 3.94837e-005: + ''' + + #no idea what this is + ''' + Augmented regression for common factor test + OLS, using observations 1959:3-2009:3 (T = 201) + Dependent variable: ds_l_realinv + + coefficient std. error t-ratio p-value + --------------------------------------------------------------- + const -10.9481 1.35807 -8.062 7.44e-014 *** + ds_l_realgdp 4.28893 0.229459 18.69 2.40e-045 *** + realint_1 -0.662644 0.334872 -1.979 0.0492 ** + ds_l_realinv_1 -0.108892 0.0715042 -1.523 0.1294 + ds_l_realgdp_1 0.660443 0.390372 1.692 0.0923 * + realint_2 0.0769695 0.341527 0.2254 0.8219 + + Sum of squared residuals = 22432.8 + + Test of common factor restriction + + Test statistic: F(2, 195) = 0.426391, with p-value = 0.653468 + ''' + + + ################ with OLS, HAC errors + + #Model 5: OLS, using observations 1959:2-2009:3 (T = 202) + #Dependent variable: ds_l_realinv + #HAC standard errors, bandwidth 4 (Bartlett kernel) + + #coefficient std. error t-ratio p-value 95% CONFIDENCE INTERVAL + #for confidence interval t(199, 0.025) = 1.972 + + partable = np.array([ + [-9.48167, 1.17709, -8.055, 7.17e-014, -11.8029, -7.16049], # *** + [4.37422, 0.328787, 13.30, 2.62e-029, 3.72587, 5.02258], #*** + [-0.613997, 0.293619, -2.091, 0.0378, -1.19300, -0.0349939]]) # ** + + result_gretl_g1 = dict( + endog_mean = ("Mean dependent var", 3.257395), + endog_std = ("S.D. dependent var", 18.73915), + ssr = ("Sum squared resid", 22799.68), + mse_resid_sqrt = ("S.E. of regression", 10.70380), + rsquared = ("R-squared", 0.676978), + rsquared_adj = ("Adjusted R-squared", 0.673731), + fvalue = ("F(2, 199)", 90.79971), + f_pvalue = ("P-value(F)", 9.53e-29), + llf = ("Log-likelihood", -763.9752), + aic = ("Akaike criterion", 1533.950), + bic = ("Schwarz criterion", 1543.875), + hqic = ("Hannan-Quinn", 1537.966), + resid_acf1 = ("rho", -0.107341), + dw = ("Durbin-Watson", 2.213805)) + + linear_logs = [1.68351, 0.430953, 2, "chi2"] + #for logs: dropping 70 nan or incomplete observations, T=133 + #(res_ols.model.exog <=0).any(1).sum() = 69 ?not 70 + linear_squares = [7.52477, 0.0232283, 2, "chi2"] + + #Autocorrelation, Breusch-Godfrey test for autocorrelation up to order 4 + lm_acorr4 = [1.17928, 0.321197, 4, 195, "F"] + lm2_acorr4 = [4.771043, 0.312, 4, "chi2"] + acorr_ljungbox4 = [5.23587, 0.264, 4, "chi2"] + + #break + cusum_Harvey_Collier = [0.494432, 0.621549, 198, "t"] #stats.t.sf(0.494432, 198)*2 + #see cusum results in files + break_qlr = [3.01985, 0.1, 3, 196, "maxF"] #TODO check this, max at 2001:4 + break_chow = [13.1897, 0.00424384, 3, "chi2"] # break at 1984:1 + + arch_4 = [3.43473, 0.487871, 4, "chi2"] + + normality = [23.962, 0.00001, 2, "chi2"] + + het_white = [33.503723, 0.000003, 5, "chi2"] + het_breusch_pagan = [1.302014, 0.521520, 2, "chi2"] #TODO: not available + het_breusch_pagan_konker = [0.709924, 0.701200, 2, "chi2"] + + + reset_2_3 = [5.219019, 0.00619, 2, 197, "f"] + reset_2 = [7.268492, 0.00762, 1, 198, "f"] + reset_3 = [5.248951, 0.023, 1, 198, "f"] #not available + + cond_1norm = 5984.0525 + determinant = 7.1087467e+008 + reciprocal_condition_number = 0.013826504 + vif = [1.001, 1.001] + + names = 'date residual leverage influence DFFITS'.split() + cur_dir = os.path.abspath(os.path.dirname(__file__)) + fpath = os.path.join(cur_dir, 'results/leverage_influence_ols_nostars.txt') + lev = np.genfromtxt(fpath, skip_header=3, skip_footer=1, + converters={0:lambda s: s}) + #either numpy 1.6 or python 3.2 changed behavior + if np.isnan(lev[-1]['f1']): + lev = np.genfromtxt(fpath, skip_header=3, skip_footer=2, + converters={0:lambda s: s}) + + lev.dtype.names = names + + res = res_ols #for easier copying + + cov_hac = sw.cov_hac_simple(res, nlags=4, use_correction=False) + bse_hac = sw.se_cov(cov_hac) + + assert_almost_equal(res.params, partable[:,0], 5) + assert_almost_equal(bse_hac, partable[:,1], 5) + #TODO + + assert_almost_equal(res.ssr, result_gretl_g1['ssr'][1], decimal=2) + assert_almost_equal(res.llf, result_gretl_g1['llf'][1], decimal=4) #not in gretl + assert_almost_equal(res.rsquared, result_gretl_g1['rsquared'][1], decimal=6) #FAIL + assert_almost_equal(res.rsquared_adj, result_gretl_g1['rsquared_adj'][1], decimal=6) #FAIL + assert_almost_equal(np.sqrt(res.mse_resid), result_gretl_g1['mse_resid_sqrt'][1], decimal=5) + #f-value is based on cov_hac I guess + #res2 = res.get_robustcov_results(cov_type='HC1') + # TODO: fvalue differs from Gretl, trying any of the HCx + #assert_almost_equal(res2.fvalue, result_gretl_g1['fvalue'][1], decimal=0) #FAIL + #assert_approx_equal(res.f_pvalue, result_gretl_g1['f_pvalue'][1], significant=1) #FAIL + #assert_almost_equal(res.durbin_watson, result_gretl_g1['dw'][1], decimal=7) #TODO + + + c = oi.reset_ramsey(res, degree=2) + compare_ftest(c, reset_2, decimal=(6,5)) + c = oi.reset_ramsey(res, degree=3) + compare_ftest(c, reset_2_3, decimal=(6,5)) + + linear_sq = smsdia.linear_lm(res.resid, res.model.exog) + assert_almost_equal(linear_sq[0], linear_squares[0], decimal=6) + assert_almost_equal(linear_sq[1], linear_squares[1], decimal=7) + + hbpk = smsdia.het_breuschpagan(res.resid, res.model.exog) + assert_almost_equal(hbpk[0], het_breusch_pagan_konker[0], decimal=6) + assert_almost_equal(hbpk[1], het_breusch_pagan_konker[1], decimal=6) + + hw = smsdia.het_white(res.resid, res.model.exog) + assert_almost_equal(hw[:2], het_white[:2], 6) + + #arch + #sm_arch = smsdia.acorr_lm(res.resid**2, maxlag=4, autolag=None) + sm_arch = smsdia.het_arch(res.resid, maxlag=4) + assert_almost_equal(sm_arch[0], arch_4[0], decimal=5) + assert_almost_equal(sm_arch[1], arch_4[1], decimal=6) + + vif2 = [oi.variance_inflation_factor(res.model.exog, k) for k in [1,2]] + + infl = oi.OLSInfluence(res_ols) + #print np.max(np.abs(lev['DFFITS'] - infl.dffits[0])) + #print np.max(np.abs(lev['leverage'] - infl.hat_matrix_diag)) + #print np.max(np.abs(lev['influence'] - infl.influence)) #just added this based on Gretl + + #just rough test, low decimal in Gretl output, + assert_almost_equal(lev['residual'], res.resid, decimal=3) + assert_almost_equal(lev['DFFITS'], infl.dffits[0], decimal=3) + assert_almost_equal(lev['leverage'], infl.hat_matrix_diag, decimal=3) + assert_almost_equal(lev['influence'], infl.influence, decimal=4) + +def test_GLSARlag(): + #test that results for lag>1 is close to lag=1, and smaller ssr + + from statsmodels.datasets import macrodata + d2 = macrodata.load_pandas().data + g_gdp = 400*np.diff(np.log(d2['realgdp'].values)) + g_inv = 400*np.diff(np.log(d2['realinv'].values)) + exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1].values], prepend=False) + + mod1 = GLSAR(g_inv, exogg, 1) + res1 = mod1.iterative_fit(5) + + mod4 = GLSAR(g_inv, exogg, 4) + res4 = mod4.iterative_fit(10) + + assert_array_less(np.abs(res1.params / res4.params - 1), 0.03) + assert_array_less(res4.ssr, res1.ssr) + assert_array_less(np.abs(res4.bse / res1.bse) - 1, 0.015) + assert_array_less(np.abs((res4.fittedvalues / res1.fittedvalues - 1).mean()), + 0.015) + assert_equal(len(mod4.rho), 4) + + + + +if __name__ == '__main__': + t = TestGLSARGretl() + t.test_all() + + +''' +Model 5: OLS, using observations 1959:2-2009:3 (T = 202) +Dependent variable: ds_l_realinv +HAC standard errors, bandwidth 4 (Bartlett kernel) + + coefficient std. error t-ratio p-value + ------------------------------------------------------------- + const -9.48167 1.17709 -8.055 7.17e-014 *** + ds_l_realgdp 4.37422 0.328787 13.30 2.62e-029 *** + realint_1 -0.613997 0.293619 -2.091 0.0378 ** + +Mean dependent var 3.257395 S.D. dependent var 18.73915 +Sum squared resid 22799.68 S.E. of regression 10.70380 +R-squared 0.676978 Adjusted R-squared 0.673731 +F(2, 199) 90.79971 P-value(F) 9.53e-29 +Log-likelihood -763.9752 Akaike criterion 1533.950 +Schwarz criterion 1543.875 Hannan-Quinn 1537.966 +rho -0.107341 Durbin-Watson 2.213805 + +QLR test for structural break - + Null hypothesis: no structural break + Test statistic: max F(3, 196) = 3.01985 at observation 2001:4 + (10 percent critical value = 4.09) + +Non-linearity test (logs) - + Null hypothesis: relationship is linear + Test statistic: LM = 1.68351 + with p-value = P(Chi-square(2) > 1.68351) = 0.430953 + +Non-linearity test (squares) - + Null hypothesis: relationship is linear + Test statistic: LM = 7.52477 + with p-value = P(Chi-square(2) > 7.52477) = 0.0232283 + +LM test for autocorrelation up to order 4 - + Null hypothesis: no autocorrelation + Test statistic: LMF = 1.17928 + with p-value = P(F(4,195) > 1.17928) = 0.321197 + +CUSUM test for parameter stability - + Null hypothesis: no change in parameters + Test statistic: Harvey-Collier t(198) = 0.494432 + with p-value = P(t(198) > 0.494432) = 0.621549 + +Chow test for structural break at observation 1984:1 - + Null hypothesis: no structural break + Asymptotic test statistic: Chi-square(3) = 13.1897 + with p-value = 0.00424384 + +Test for ARCH of order 4 - + Null hypothesis: no ARCH effect is present + Test statistic: LM = 3.43473 + with p-value = P(Chi-square(4) > 3.43473) = 0.487871: + +#ANOVA +Analysis of Variance: + + Sum of squares df Mean square + + Regression 47782.7 2 23891.3 + Residual 22799.7 199 114.571 + Total 70582.3 201 351.156 + + R^2 = 47782.7 / 70582.3 = 0.676978 + F(2, 199) = 23891.3 / 114.571 = 208.528 [p-value 1.47e-049] + +#LM-test autocorrelation +Breusch-Godfrey test for autocorrelation up to order 4 +OLS, using observations 1959:2-2009:3 (T = 202) +Dependent variable: uhat + + coefficient std. error t-ratio p-value + ------------------------------------------------------------ + const 0.0640964 1.06719 0.06006 0.9522 + ds_l_realgdp -0.0456010 0.217377 -0.2098 0.8341 + realint_1 0.0511769 0.293136 0.1746 0.8616 + uhat_1 -0.104707 0.0719948 -1.454 0.1475 + uhat_2 -0.00898483 0.0742817 -0.1210 0.9039 + uhat_3 0.0837332 0.0735015 1.139 0.2560 + uhat_4 -0.0636242 0.0737363 -0.8629 0.3893 + + Unadjusted R-squared = 0.023619 + +Test statistic: LMF = 1.179281, +with p-value = P(F(4,195) > 1.17928) = 0.321 + +Alternative statistic: TR^2 = 4.771043, +with p-value = P(Chi-square(4) > 4.77104) = 0.312 + +Ljung-Box Q' = 5.23587, +with p-value = P(Chi-square(4) > 5.23587) = 0.264: + +RESET test for specification (squares and cubes) +Test statistic: F = 5.219019, +with p-value = P(F(2,197) > 5.21902) = 0.00619 + +RESET test for specification (squares only) +Test statistic: F = 7.268492, +with p-value = P(F(1,198) > 7.26849) = 0.00762 + +RESET test for specification (cubes only) +Test statistic: F = 5.248951, +with p-value = P(F(1,198) > 5.24895) = 0.023 + +#heteroscedasticity White +White's test for heteroskedasticity +OLS, using observations 1959:2-2009:3 (T = 202) +Dependent variable: uhat^2 + + coefficient std. error t-ratio p-value + ------------------------------------------------------------- + const 104.920 21.5848 4.861 2.39e-06 *** + ds_l_realgdp -29.7040 6.24983 -4.753 3.88e-06 *** + realint_1 -6.93102 6.95607 -0.9964 0.3203 + sq_ds_l_realg 4.12054 0.684920 6.016 8.62e-09 *** + X2_X3 2.89685 1.38571 2.091 0.0379 ** + sq_realint_1 0.662135 1.10919 0.5970 0.5512 + + Unadjusted R-squared = 0.165860 + +Test statistic: TR^2 = 33.503723, +with p-value = P(Chi-square(5) > 33.503723) = 0.000003: + +#heteroscedasticity Breusch-Pagan (original) +Breusch-Pagan test for heteroskedasticity +OLS, using observations 1959:2-2009:3 (T = 202) +Dependent variable: scaled uhat^2 + + coefficient std. error t-ratio p-value + ------------------------------------------------------------- + const 1.09468 0.192281 5.693 4.43e-08 *** + ds_l_realgdp -0.0323119 0.0386353 -0.8363 0.4040 + realint_1 0.00410778 0.0512274 0.08019 0.9362 + + Explained sum of squares = 2.60403 + +Test statistic: LM = 1.302014, +with p-value = P(Chi-square(2) > 1.302014) = 0.521520 + +#heteroscedasticity Breusch-Pagan Koenker +Breusch-Pagan test for heteroskedasticity +OLS, using observations 1959:2-2009:3 (T = 202) +Dependent variable: scaled uhat^2 (Koenker robust variant) + + coefficient std. error t-ratio p-value + ------------------------------------------------------------ + const 10.6870 21.7027 0.4924 0.6230 + ds_l_realgdp -3.64704 4.36075 -0.8363 0.4040 + realint_1 0.463643 5.78202 0.08019 0.9362 + + Explained sum of squares = 33174.2 + +Test statistic: LM = 0.709924, +with p-value = P(Chi-square(2) > 0.709924) = 0.701200 + +########## forecast +#forecast mean y + For 95% confidence intervals, t(199, 0.025) = 1.972 + + Obs ds_l_realinv prediction std. error 95% interval + + 2008:3 -7.134492 -17.177905 2.946312 -22.987904 - -11.367905 + 2008:4 -27.665860 -36.294434 3.036851 -42.282972 - -30.305896 + 2009:1 -70.239280 -44.018178 4.007017 -51.919841 - -36.116516 + 2009:2 -27.024588 -12.284842 1.427414 -15.099640 - -9.470044 + 2009:3 8.078897 4.483669 1.315876 1.888819 - 7.078520 + + Forecast evaluation statistics + + Mean Error -3.7387 + Mean Squared Error 218.61 + Root Mean Squared Error 14.785 + Mean Absolute Error 12.646 + Mean Percentage Error -7.1173 + Mean Absolute Percentage Error -43.867 + Theil's U 0.4365 + Bias proportion, UM 0.06394 + Regression proportion, UR 0.13557 + Disturbance proportion, UD 0.80049 + +#forecast actual y + For 95% confidence intervals, t(199, 0.025) = 1.972 + + Obs ds_l_realinv prediction std. error 95% interval + + 2008:3 -7.134492 -17.177905 11.101892 -39.070353 - 4.714544 + 2008:4 -27.665860 -36.294434 11.126262 -58.234939 - -14.353928 + 2009:1 -70.239280 -44.018178 11.429236 -66.556135 - -21.480222 + 2009:2 -27.024588 -12.284842 10.798554 -33.579120 - 9.009436 + 2009:3 8.078897 4.483669 10.784377 -16.782652 - 25.749991 + + Forecast evaluation statistics + + Mean Error -3.7387 + Mean Squared Error 218.61 + Root Mean Squared Error 14.785 + Mean Absolute Error 12.646 + Mean Percentage Error -7.1173 + Mean Absolute Percentage Error -43.867 + Theil's U 0.4365 + Bias proportion, UM 0.06394 + Regression proportion, UR 0.13557 + Disturbance proportion, UD 0.80049 + +''' diff --git a/statsmodels/regression/tests/test_glsar_stata.py b/statsmodels/regression/tests/test_glsar_stata.py new file mode 100644 index 0000000..ceb7760 --- /dev/null +++ b/statsmodels/regression/tests/test_glsar_stata.py @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- +"""Testing GLSAR against STATA + +Created on Wed May 30 09:25:24 2012 + +Author: Josef Perktold +""" + +import numpy as np +from numpy.testing import assert_almost_equal, assert_allclose, assert_equal + +from statsmodels.regression.linear_model import GLSAR +from statsmodels.tools.tools import add_constant +from statsmodels.datasets import macrodata + + +class CheckStataResultsMixin(object): + + def test_params_table(self): + res, results = self.res, self.results + assert_almost_equal(res.params, results.params, 3) + assert_almost_equal(res.bse, results.bse, 3) + #assert_almost_equal(res.tvalues, results.tvalues, 3) 0.0003 + assert_allclose(res.tvalues, results.tvalues, atol=0, rtol=0.004) + assert_allclose(res.pvalues, results.pvalues, atol=1e-7, rtol=0.004) + +class CheckStataResultsPMixin(CheckStataResultsMixin): + + def test_predicted(self): + res, results = self.res, self.results + assert_allclose(res.fittedvalues, results.fittedvalues, rtol=0.002) + predicted = res.predict(res.model.exog) #should be equal + assert_allclose(predicted, results.fittedvalues, rtol=0.0016) + #not yet + #assert_almost_equal(res.fittedvalues_se, results.fittedvalues_se, 4) + +class TestGLSARCorc(CheckStataResultsPMixin): + + @classmethod + def setup_class(cls): + d2 = macrodata.load_pandas().data + g_gdp = 400*np.diff(np.log(d2['realgdp'].values)) + g_inv = 400*np.diff(np.log(d2['realinv'].values)) + exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1].values], prepend=False) + + mod1 = GLSAR(g_inv, exogg, 1) + cls.res = mod1.iterative_fit(5) + + from .results.macro_gr_corc_stata import results + cls.results = results + + def test_rho(self): + assert_almost_equal(self.res.model.rho, self.results.rho, 3) # pylint: disable-msg=E1101 + + assert_almost_equal(self.res.llf, self.results.ll, 4) + + + def test_glsar_arima(self): + from statsmodels.tsa.arima_model import ARMA + + endog = self.res.model.endog + exog = self.res.model.exog + mod1 = GLSAR(endog, exog, 3) + res = mod1.iterative_fit(10) + mod_arma = ARMA(endog, order=(3,0), exog=exog[:, :-1]) + res_arma = mod_arma.fit(method='css', iprint=0, disp=0) + assert_allclose(res.params, res_arma.params[[1,2,0]], atol=0.01, rtol=1e-3) + assert_allclose(res.model.rho, res_arma.params[3:], atol=0.05, rtol=1e-3) + assert_allclose(res.bse, res_arma.bse[[1,2,0]], atol=0.015, rtol=1e-3) + + assert_equal(len(res.history['params']), 5) + # this should be identical, history has last fit + assert_equal(res.history['params'][-1], res.params) + + res2 = mod1.iterative_fit(4, rtol=0) + assert_equal(len(res2.history['params']), 4) + assert_equal(len(res2.history['rho']), 4) + + + def test_glsar_iter0(self): + endog = self.res.model.endog + exog = self.res.model.exog + + rho = np.array([ 0.207, 0.275, 1.033]) + mod1 = GLSAR(endog, exog, rho) + res1 = mod1.fit() + res0 = mod1.iterative_fit(0) + res0b = mod1.iterative_fit(1) + # check iterative_fit(0) or iterative_fit(1) doesn't update rho + assert_allclose(res0.params, res1.params, rtol=1e-11) + assert_allclose(res0b.params, res1.params, rtol=1e-11) + assert_allclose(res0.model.rho, rho, rtol=1e-11) + assert_allclose(res0b.model.rho, rho, rtol=1e-11) + + +if __name__=="__main__": + import pytest + pytest.main([__file__, '-vvs', '-x', '--pdb']) diff --git a/statsmodels/regression/tests/test_lme.py b/statsmodels/regression/tests/test_lme.py new file mode 100644 index 0000000..9b4f603 --- /dev/null +++ b/statsmodels/regression/tests/test_lme.py @@ -0,0 +1,1301 @@ +from statsmodels.compat.platform import PLATFORM_OSX + +import os +import csv +import warnings + +import numpy as np +import pandas as pd +from scipy import sparse +import pytest + +from statsmodels.regression.mixed_linear_model import ( + MixedLM, MixedLMParams, _smw_solver, _smw_logdet) +from numpy.testing import (assert_almost_equal, assert_equal, assert_allclose, + assert_) + +from statsmodels.base import _penalties as penalties +import statsmodels.tools.numdiff as nd + +from .results import lme_r_results + +# TODO: add tests with unequal group sizes + + +class R_Results(object): + """ + A class for holding various results obtained from fitting one data + set using lmer in R. + + Parameters + ---------- + meth : string + Either "ml" or "reml". + irfs : string + Either "irf", for independent random effects, or "drf" for + dependent random effects. + ds_ix : integer + The number of the data set + """ + + def __init__(self, meth, irfs, ds_ix): + + bname = "_%s_%s_%d" % (meth, irfs, ds_ix) + + self.coef = getattr(lme_r_results, "coef" + bname) + self.vcov_r = getattr(lme_r_results, "vcov" + bname) + self.cov_re_r = getattr(lme_r_results, "cov_re" + bname) + self.scale_r = getattr(lme_r_results, "scale" + bname) + self.loglike = getattr(lme_r_results, "loglike" + bname) + + if hasattr(lme_r_results, "ranef_mean" + bname): + self.ranef_postmean = getattr(lme_r_results, "ranef_mean" + bname) + self.ranef_condvar = getattr(lme_r_results, + "ranef_condvar" + bname) + self.ranef_condvar = np.atleast_2d(self.ranef_condvar) + + # Load the data file + cur_dir = os.path.dirname(os.path.abspath(__file__)) + rdir = os.path.join(cur_dir, 'results') + fname = os.path.join(rdir, "lme%02d.csv" % ds_ix) + with open(fname) as fid: + rdr = csv.reader(fid) + header = next(rdr) + data = [[float(x) for x in line] for line in rdr] + data = np.asarray(data) + + # Split into exog, endog, etc. + self.endog = data[:, header.index("endog")] + self.groups = data[:, header.index("groups")] + ii = [i for i, x in enumerate(header) if x.startswith("exog_fe")] + self.exog_fe = data[:, ii] + ii = [i for i, x in enumerate(header) if x.startswith("exog_re")] + self.exog_re = data[:, ii] + + +def loglike_function(model, profile_fe, has_fe): + # Returns a function that evaluates the negative log-likelihood for + # the given model. + + def f(x): + params = MixedLMParams.from_packed( + x, model.k_fe, model.k_re, model.use_sqrt, has_fe=has_fe) + return -model.loglike(params, profile_fe=profile_fe) + + return f + + +class TestMixedLM(object): + + # Test analytic scores and Hessian using numeric differentiation + @pytest.mark.slow + @pytest.mark.parametrize("use_sqrt", [False, True]) + @pytest.mark.parametrize("reml", [False, True]) + @pytest.mark.parametrize("profile_fe", [False, True]) + def test_compare_numdiff(self, use_sqrt, reml, profile_fe): + + n_grp = 200 + grpsize = 5 + k_fe = 3 + k_re = 2 + + np.random.seed(3558) + exog_fe = np.random.normal(size=(n_grp * grpsize, k_fe)) + exog_re = np.random.normal(size=(n_grp * grpsize, k_re)) + exog_re[:, 0] = 1 + exog_vc = np.random.normal(size=(n_grp * grpsize, 3)) + slopes = np.random.normal(size=(n_grp, k_re)) + slopes[:, -1] *= 2 + slopes = np.kron(slopes, np.ones((grpsize, 1))) + slopes_vc = np.random.normal(size=(n_grp, 3)) + slopes_vc = np.kron(slopes_vc, np.ones((grpsize, 1))) + slopes_vc[:, -1] *= 2 + re_values = (slopes * exog_re).sum(1) + vc_values = (slopes_vc * exog_vc).sum(1) + err = np.random.normal(size=n_grp * grpsize) + endog = exog_fe.sum(1) + re_values + vc_values + err + groups = np.kron(range(n_grp), np.ones(grpsize)) + + vc = {"a": {}, "b": {}} + for i in range(n_grp): + ix = np.flatnonzero(groups == i) + vc["a"][i] = exog_vc[ix, 0:2] + vc["b"][i] = exog_vc[ix, 2:3] + + model = MixedLM( + endog, + exog_fe, + groups, + exog_re, + exog_vc=vc, + use_sqrt=use_sqrt) + rslt = model.fit(reml=reml) + + loglike = loglike_function( + model, profile_fe=profile_fe, has_fe=not profile_fe) + + try: + # Test the score at several points. + for kr in range(5): + fe_params = np.random.normal(size=k_fe) + cov_re = np.random.normal(size=(k_re, k_re)) + cov_re = np.dot(cov_re.T, cov_re) + vcomp = np.random.normal(size=2)**2 + params = MixedLMParams.from_components( + fe_params, cov_re=cov_re, vcomp=vcomp) + params_vec = params.get_packed( + has_fe=not profile_fe, use_sqrt=use_sqrt) + + # Check scores + gr = -model.score(params, profile_fe=profile_fe) + ngr = nd.approx_fprime(params_vec, loglike) + assert_allclose(gr, ngr, rtol=1e-3) + + # Check Hessian matrices at the MLE (we don't have + # the profile Hessian matrix and we don't care + # about the Hessian for the square root + # transformed parameter). + if (profile_fe is False) and (use_sqrt is False): + hess = -model.hessian(rslt.params_object) + params_vec = rslt.params_object.get_packed( + use_sqrt=False, has_fe=True) + loglike_h = loglike_function( + model, profile_fe=False, has_fe=True) + nhess = nd.approx_hess(params_vec, loglike_h) + assert_allclose(hess, nhess, rtol=1e-3) + except AssertionError: + # See GH#5628; because this test fails unpredictably but only on + # OSX, we only xfail it there. + if PLATFORM_OSX: + pytest.xfail("fails on OSX due to unresolved " + "numerical differences") + else: + raise + + def test_default_re(self): + + np.random.seed(3235) + exog = np.random.normal(size=(300, 4)) + groups = np.kron(np.arange(100), [1, 1, 1]) + g_errors = np.kron(np.random.normal(size=100), [1, 1, 1]) + endog = exog.sum(1) + g_errors + np.random.normal(size=300) + mdf1 = MixedLM(endog, exog, groups).fit() + mdf2 = MixedLM(endog, exog, groups, np.ones(300)).fit() + assert_almost_equal(mdf1.params, mdf2.params, decimal=8) + + def test_history(self): + + np.random.seed(3235) + exog = np.random.normal(size=(300, 4)) + groups = np.kron(np.arange(100), [1, 1, 1]) + g_errors = np.kron(np.random.normal(size=100), [1, 1, 1]) + endog = exog.sum(1) + g_errors + np.random.normal(size=300) + mod = MixedLM(endog, exog, groups) + rslt = mod.fit(full_output=True) + assert_equal(hasattr(rslt, "hist"), True) + + @pytest.mark.slow + @pytest.mark.smoke + def test_profile_inference(self): + np.random.seed(9814) + k_fe = 2 + gsize = 3 + n_grp = 100 + exog = np.random.normal(size=(n_grp * gsize, k_fe)) + exog_re = np.ones((n_grp * gsize, 1)) + groups = np.kron(np.arange(n_grp), np.ones(gsize)) + vca = np.random.normal(size=n_grp * gsize) + vcb = np.random.normal(size=n_grp * gsize) + errors = 0 + g_errors = np.kron(np.random.normal(size=100), np.ones(gsize)) + errors += g_errors + exog_re[:, 0] + rc = np.random.normal(size=n_grp) + errors += np.kron(rc, np.ones(gsize)) * vca + rc = np.random.normal(size=n_grp) + errors += np.kron(rc, np.ones(gsize)) * vcb + errors += np.random.normal(size=n_grp * gsize) + + endog = exog.sum(1) + errors + vc = {"a": {}, "b": {}} + for k in range(n_grp): + ii = np.flatnonzero(groups == k) + vc["a"][k] = vca[ii][:, None] + vc["b"][k] = vcb[ii][:, None] + rslt = MixedLM( + endog, exog, groups=groups, exog_re=exog_re, exog_vc=vc).fit() + rslt.profile_re( + 0, vtype='re', dist_low=1, num_low=3, dist_high=1, num_high=3) + rslt.profile_re( + 'b', + vtype='vc', + dist_low=0.5, + num_low=3, + dist_high=0.5, + num_high=3) + + def test_vcomp_1(self): + # Fit the same model using constrained random effects and + # variance components. + + np.random.seed(4279) + exog = np.random.normal(size=(400, 1)) + exog_re = np.random.normal(size=(400, 2)) + groups = np.kron(np.arange(100), np.ones(4)) + slopes = np.random.normal(size=(100, 2)) + slopes[:, 1] *= 2 + slopes = np.kron(slopes, np.ones((4, 1))) * exog_re + errors = slopes.sum(1) + np.random.normal(size=400) + endog = exog.sum(1) + errors + + free = MixedLMParams(1, 2, 0) + free.fe_params = np.ones(1) + free.cov_re = np.eye(2) + free.vcomp = np.zeros(0) + + model1 = MixedLM(endog, exog, groups, exog_re=exog_re) + result1 = model1.fit(free=free) + + exog_vc = {"a": {}, "b": {}} + for k, group in enumerate(model1.group_labels): + ix = model1.row_indices[group] + exog_vc["a"][group] = exog_re[ix, 0:1] + exog_vc["b"][group] = exog_re[ix, 1:2] + model2 = MixedLM(endog, exog, groups, exog_vc=exog_vc) + result2 = model2.fit() + result2.summary() + + assert_allclose(result1.fe_params, result2.fe_params, atol=1e-4) + assert_allclose( + np.diag(result1.cov_re), result2.vcomp, atol=1e-2, rtol=1e-4) + assert_allclose( + result1.bse[[0, 1, 3]], result2.bse, atol=1e-2, rtol=1e-2) + + def test_vcomp_2(self): + # Simulated data comparison to R + + np.random.seed(6241) + n = 1600 + exog = np.random.normal(size=(n, 2)) + groups = np.kron(np.arange(n / 16), np.ones(16)) + + # Build up the random error vector + errors = 0 + + # The random effects + exog_re = np.random.normal(size=(n, 2)) + slopes = np.random.normal(size=(n // 16, 2)) + slopes = np.kron(slopes, np.ones((16, 1))) * exog_re + errors += slopes.sum(1) + + # First variance component + subgroups1 = np.kron(np.arange(n / 4), np.ones(4)) + errors += np.kron(2 * np.random.normal(size=n // 4), np.ones(4)) + + # Second variance component + subgroups2 = np.kron(np.arange(n / 2), np.ones(2)) + errors += np.kron(2 * np.random.normal(size=n // 2), np.ones(2)) + + # iid errors + errors += np.random.normal(size=n) + + endog = exog.sum(1) + errors + + df = pd.DataFrame(index=range(n)) + df["y"] = endog + df["groups"] = groups + df["x1"] = exog[:, 0] + df["x2"] = exog[:, 1] + df["z1"] = exog_re[:, 0] + df["z2"] = exog_re[:, 1] + df["v1"] = subgroups1 + df["v2"] = subgroups2 + + # Equivalent model in R: + # df.to_csv("tst.csv") + # model = lmer(y ~ x1 + x2 + (0 + z1 + z2 | groups) + (1 | v1) + (1 | + # v2), df) + + vcf = {"a": "0 + C(v1)", "b": "0 + C(v2)"} + model1 = MixedLM.from_formula( + "y ~ x1 + x2", + groups=groups, + re_formula="0+z1+z2", + vc_formula=vcf, + data=df) + result1 = model1.fit() + + # Compare to R + assert_allclose( + result1.fe_params, [0.16527, 0.99911, 0.96217], rtol=1e-4) + assert_allclose( + result1.cov_re, [[1.244, 0.146], [0.146, 1.371]], rtol=1e-3) + assert_allclose(result1.vcomp, [4.024, 3.997], rtol=1e-3) + assert_allclose( + result1.bse.iloc[0:3], [0.12610, 0.03938, 0.03848], rtol=1e-3) + + def test_vcomp_3(self): + # Test a model with vcomp but no other random effects, using formulas. + + np.random.seed(4279) + x1 = np.random.normal(size=400) + groups = np.kron(np.arange(100), np.ones(4)) + slopes = np.random.normal(size=100) + slopes = np.kron(slopes, np.ones(4)) * x1 + y = slopes + np.random.normal(size=400) + vc_fml = {"a": "0 + x1"} + df = pd.DataFrame({"y": y, "x1": x1, "groups": groups}) + + model = MixedLM.from_formula( + "y ~ 1", groups="groups", vc_formula=vc_fml, data=df) + result = model.fit() + result.summary() + + assert_allclose( + result.resid.iloc[0:4], + np.r_[-1.180753, 0.279966, 0.578576, -0.667916], + rtol=1e-3) + assert_allclose( + result.fittedvalues.iloc[0:4], + np.r_[-0.101549, 0.028613, -0.224621, -0.126295], + rtol=1e-3) + + def test_sparse(self): + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + rdir = os.path.join(cur_dir, 'results') + fname = os.path.join(rdir, 'pastes.csv') + + # Dense + data = pd.read_csv(fname) + vcf = {"cask": "0 + cask"} + model = MixedLM.from_formula( + "strength ~ 1", + groups="batch", + re_formula="1", + vc_formula=vcf, + data=data) + result = model.fit() + + # Sparse + model2 = MixedLM.from_formula( + "strength ~ 1", + groups="batch", + re_formula="1", + vc_formula=vcf, + use_sparse=True, + data=data) + result2 = model2.fit() + + assert_allclose(result.params, result2.params) + assert_allclose(result.bse, result2.bse) + + def test_dietox(self): + # dietox data from geepack using random intercepts + # + # Fit in R using + # + # library(geepack) + # rm = lmer(Weight ~ Time + (1 | Pig), data=dietox) + # rm = lmer(Weight ~ Time + (1 | Pig), REML=FALSE, data=dietox) + # + # Comments below are R code used to extract the numbers used + # for comparison. + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + rdir = os.path.join(cur_dir, 'results') + fname = os.path.join(rdir, 'dietox.csv') + + # REML + data = pd.read_csv(fname) + model = MixedLM.from_formula("Weight ~ Time", groups="Pig", data=data) + result = model.fit() + + # fixef(rm) + assert_allclose( + result.fe_params, np.r_[15.723523, 6.942505], rtol=1e-5) + + # sqrt(diag(vcov(rm))) + assert_allclose( + result.bse[0:2], np.r_[0.78805374, 0.03338727], rtol=1e-5) + + # attr(VarCorr(rm), "sc")^2 + assert_allclose(result.scale, 11.36692, rtol=1e-5) + + # VarCorr(rm)[[1]][[1]] + assert_allclose(result.cov_re, 40.39395, rtol=1e-5) + + # logLik(rm) + assert_allclose( + model.loglike(result.params_object), -2404.775, rtol=1e-5) + + # ML + data = pd.read_csv(fname) + model = MixedLM.from_formula("Weight ~ Time", groups="Pig", data=data) + result = model.fit(reml=False) + + # fixef(rm) + assert_allclose( + result.fe_params, np.r_[15.723517, 6.942506], rtol=1e-5) + + # sqrt(diag(vcov(rm))) + assert_allclose( + result.bse[0:2], np.r_[0.7829397, 0.0333661], rtol=1e-5) + + # attr(VarCorr(rm), "sc")^2 + assert_allclose(result.scale, 11.35251, rtol=1e-5) + + # VarCorr(rm)[[1]][[1]] + assert_allclose(result.cov_re, 39.82097, rtol=1e-5) + + # logLik(rm) + assert_allclose( + model.loglike(result.params_object), -2402.932, rtol=1e-5) + + def test_dietox_slopes(self): + # dietox data from geepack using random intercepts + # + # Fit in R using + # + # library(geepack) + # r = lmer(Weight ~ Time + (1 + Time | Pig), data=dietox) + # r = lmer(Weight ~ Time + (1 + Time | Pig), REML=FALSE, data=dietox) + # + # Comments below are the R code used to extract the constants + # for comparison. + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + rdir = os.path.join(cur_dir, 'results') + fname = os.path.join(rdir, 'dietox.csv') + + # REML + data = pd.read_csv(fname) + model = MixedLM.from_formula( + "Weight ~ Time", groups="Pig", re_formula="1 + Time", data=data) + result = model.fit(method='powell') + + # fixef(r) + assert_allclose( + result.fe_params, np.r_[15.738650, 6.939014], rtol=1e-5) + + # sqrt(diag(vcov(r))) + assert_allclose( + result.bse[0:2], np.r_[0.5501253, 0.0798254], rtol=1e-3) + + # attr(VarCorr(r), "sc")^2 + assert_allclose(result.scale, 6.03745, rtol=1e-3) + + # as.numeric(VarCorr(r)[[1]]) + assert_allclose( + result.cov_re.values.ravel(), + np.r_[19.4934552, 0.2938323, 0.2938323, 0.4160620], + rtol=1e-1) + + # logLik(r) + assert_allclose( + model.loglike(result.params_object), -2217.047, rtol=1e-5) + + # ML + data = pd.read_csv(fname) + model = MixedLM.from_formula( + "Weight ~ Time", groups="Pig", re_formula="1 + Time", data=data) + result = model.fit(method='powell', reml=False) + + # fixef(r) + assert_allclose(result.fe_params, np.r_[15.73863, 6.93902], rtol=1e-5) + + # sqrt(diag(vcov(r))) + assert_allclose( + result.bse[0:2], np.r_[0.54629282, 0.07926954], rtol=1e-3) + + # attr(VarCorr(r), "sc")^2 + assert_allclose(result.scale, 6.037441, rtol=1e-3) + + # as.numeric(VarCorr(r)[[1]]) + assert_allclose( + result.cov_re.values.ravel(), + np.r_[19.190922, 0.293568, 0.293568, 0.409695], + rtol=1e-2) + + # logLik(r) + assert_allclose( + model.loglike(result.params_object), -2215.753, rtol=1e-5) + + def test_pastes_vcomp(self): + # pastes data from lme4 + # + # Fit in R using: + # + # r = lmer(strength ~ (1|batch) + (1|batch:cask), data=data) + # r = lmer(strength ~ (1|batch) + (1|batch:cask), data=data, + # reml=FALSE) + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + rdir = os.path.join(cur_dir, 'results') + fname = os.path.join(rdir, 'pastes.csv') + data = pd.read_csv(fname) + vcf = {"cask": "0 + cask"} + + # REML + model = MixedLM.from_formula( + "strength ~ 1", + groups="batch", + re_formula="1", + vc_formula=vcf, + data=data) + result = model.fit() + + # fixef(r) + assert_allclose(result.fe_params.iloc[0], 60.0533, rtol=1e-3) + + # sqrt(diag(vcov(r))) + assert_allclose(result.bse.iloc[0], 0.6769, rtol=1e-3) + + # VarCorr(r)$batch[[1]] + assert_allclose(result.cov_re.iloc[0, 0], 1.657, rtol=1e-3) + + # attr(VarCorr(r), "sc")^2 + assert_allclose(result.scale, 0.678, rtol=1e-3) + + # logLik(r) + assert_allclose(result.llf, -123.49, rtol=1e-1) + + # don't provide aic/bic with REML + assert_equal(result.aic, np.nan) + assert_equal(result.bic, np.nan) + + # resid(r)[1:5] + resid = np.r_[0.17133538, -0.02866462, -1.08662875, 1.11337125, + -0.12093607] + assert_allclose(result.resid[0:5], resid, rtol=1e-3) + + # predict(r)[1:5] + fit = np.r_[62.62866, 62.62866, 61.18663, 61.18663, 62.82094] + assert_allclose(result.fittedvalues[0:5], fit, rtol=1e-4) + + # ML + model = MixedLM.from_formula( + "strength ~ 1", + groups="batch", + re_formula="1", + vc_formula=vcf, + data=data) + result = model.fit(reml=False) + + # fixef(r) + assert_allclose(result.fe_params.iloc[0], 60.0533, rtol=1e-3) + + # sqrt(diag(vcov(r))) + assert_allclose(result.bse.iloc[0], 0.642, rtol=1e-3) + + # VarCorr(r)$batch[[1]] + assert_allclose(result.cov_re.iloc[0, 0], 1.199, rtol=1e-3) + + # attr(VarCorr(r), "sc")^2 + assert_allclose(result.scale, 0.67799, rtol=1e-3) + + # logLik(r) + assert_allclose(result.llf, -123.997, rtol=1e-1) + + # AIC(r) + assert_allclose(result.aic, 255.9944, rtol=1e-3) + + # BIC(r) + assert_allclose(result.bic, 264.3718, rtol=1e-3) + + @pytest.mark.slow + def test_vcomp_formula(self): + + np.random.seed(6241) + n = 800 + exog = np.random.normal(size=(n, 2)) + exog[:, 0] = 1 + ex_vc = [] + groups = np.kron(np.arange(n / 4), np.ones(4)) + errors = 0 + exog_re = np.random.normal(size=(n, 2)) + slopes = np.random.normal(size=(n // 4, 2)) + slopes = np.kron(slopes, np.ones((4, 1))) * exog_re + errors += slopes.sum(1) + ex_vc = np.random.normal(size=(n, 4)) + slopes = np.random.normal(size=(n // 4, 4)) + slopes[:, 2:] *= 2 + slopes = np.kron(slopes, np.ones((4, 1))) * ex_vc + errors += slopes.sum(1) + errors += np.random.normal(size=n) + endog = exog.sum(1) + errors + + exog_vc = {"a": {}, "b": {}} + for k, group in enumerate(range(int(n / 4))): + ix = np.flatnonzero(groups == group) + exog_vc["a"][group] = ex_vc[ix, 0:2] + exog_vc["b"][group] = ex_vc[ix, 2:] + model1 = MixedLM(endog, exog, groups, exog_re=exog_re, exog_vc=exog_vc) + result1 = model1.fit() + + df = pd.DataFrame(exog[:, 1:], columns=["x1"]) + df["y"] = endog + df["re1"] = exog_re[:, 0] + df["re2"] = exog_re[:, 1] + df["vc1"] = ex_vc[:, 0] + df["vc2"] = ex_vc[:, 1] + df["vc3"] = ex_vc[:, 2] + df["vc4"] = ex_vc[:, 3] + vc_formula = {"a": "0 + vc1 + vc2", "b": "0 + vc3 + vc4"} + model2 = MixedLM.from_formula( + "y ~ x1", + groups=groups, + re_formula="0 + re1 + re2", + vc_formula=vc_formula, + data=df) + result2 = model2.fit() + + assert_allclose(result1.fe_params, result2.fe_params, rtol=1e-8) + assert_allclose(result1.cov_re, result2.cov_re, rtol=1e-8) + assert_allclose(result1.vcomp, result2.vcomp, rtol=1e-8) + assert_allclose(result1.params, result2.params, rtol=1e-8) + assert_allclose(result1.bse, result2.bse, rtol=1e-8) + + def test_formulas(self): + np.random.seed(2410) + exog = np.random.normal(size=(300, 4)) + exog_re = np.random.normal(size=300) + groups = np.kron(np.arange(100), [1, 1, 1]) + g_errors = exog_re * np.kron(np.random.normal(size=100), [1, 1, 1]) + endog = exog.sum(1) + g_errors + np.random.normal(size=300) + + mod1 = MixedLM(endog, exog, groups, exog_re) + # test the names + assert_(mod1.data.xnames == ["x1", "x2", "x3", "x4"]) + assert_(mod1.data.exog_re_names == ["x_re1"]) + assert_(mod1.data.exog_re_names_full == ["x_re1 Var"]) + rslt1 = mod1.fit() + + # Fit with a formula, passing groups as the actual values. + df = pd.DataFrame({"endog": endog}) + for k in range(exog.shape[1]): + df["exog%d" % k] = exog[:, k] + df["exog_re"] = exog_re + fml = "endog ~ 0 + exog0 + exog1 + exog2 + exog3" + re_fml = "0 + exog_re" + mod2 = MixedLM.from_formula(fml, df, re_formula=re_fml, groups=groups) + + assert_(mod2.data.xnames == ["exog0", "exog1", "exog2", "exog3"]) + assert_(mod2.data.exog_re_names == ["exog_re"]) + assert_(mod2.data.exog_re_names_full == ["exog_re Var"]) + + rslt2 = mod2.fit() + assert_almost_equal(rslt1.params, rslt2.params) + + # Fit with a formula, passing groups as the variable name. + df["groups"] = groups + mod3 = MixedLM.from_formula( + fml, df, re_formula=re_fml, groups="groups") + assert_(mod3.data.xnames == ["exog0", "exog1", "exog2", "exog3"]) + assert_(mod3.data.exog_re_names == ["exog_re"]) + assert_(mod3.data.exog_re_names_full == ["exog_re Var"]) + + rslt3 = mod3.fit(start_params=rslt2.params) + assert_allclose(rslt1.params, rslt3.params, rtol=1e-4) + + # Check default variance structure with non-formula model + # creation, also use different exog_re that produces a zero + # estimated variance parameter. + exog_re = np.ones(len(endog), dtype=np.float64) + mod4 = MixedLM(endog, exog, groups, exog_re) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + rslt4 = mod4.fit() + from statsmodels.formula.api import mixedlm + mod5 = mixedlm(fml, df, groups="groups") + assert_(mod5.data.exog_re_names == ["groups"]) + assert_(mod5.data.exog_re_names_full == ["groups Var"]) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + rslt5 = mod5.fit() + assert_almost_equal(rslt4.params, rslt5.params) + + @pytest.mark.slow + def test_regularized(self): + + np.random.seed(3453) + exog = np.random.normal(size=(400, 5)) + groups = np.kron(np.arange(100), np.ones(4)) + expected_endog = exog[:, 0] - exog[:, 2] + endog = expected_endog +\ + np.kron(np.random.normal(size=100), np.ones(4)) +\ + np.random.normal(size=400) + + # L1 regularization + md = MixedLM(endog, exog, groups) + mdf1 = md.fit_regularized(alpha=1.) + mdf1.summary() + + # L1 regularization + md = MixedLM(endog, exog, groups) + mdf2 = md.fit_regularized(alpha=10 * np.ones(5)) + mdf2.summary() + + # L2 regularization + pen = penalties.L2() + mdf3 = md.fit_regularized(method=pen, alpha=0.) + mdf3.summary() + + # L2 regularization + pen = penalties.L2() + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + mdf4 = md.fit_regularized(method=pen, alpha=10.) + mdf4.summary() + + # Pseudo-Huber regularization + pen = penalties.PseudoHuber(0.3) + mdf5 = md.fit_regularized(method=pen, alpha=1.) + mdf5.summary() + + +# ------------------------------------------------------------------ + + +class TestMixedLMSummary(object): + # Test various aspects of the MixedLM summary + @classmethod + def setup_class(cls): + # Setup the model and estimate it. + pid = np.repeat([0, 1], 5) + x0 = np.repeat([1], 10) + x1 = [1, 5, 7, 3, 5, 1, 2, 6, 9, 8] + x2 = [6, 2, 1, 0, 1, 4, 3, 8, 2, 1] + y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + df = pd.DataFrame({"y": y, "pid": pid, "x0": x0, "x1": x1, "x2": x2}) + endog = df["y"].values + exog = df[["x0", "x1", "x2"]].values + groups = df["pid"].values + cls.res = MixedLM(endog, exog, groups=groups).fit() + + def test_summary(self): + # Test that the summary correctly includes all variables. + summ = self.res.summary() + desired = ["const", "x1", "x2", "Group Var"] + # Second table is summary of params + actual = summ.tables[1].index.values + assert_equal(actual, desired) + + def test_summary_xname_fe(self): + # Test that the `xname_fe` argument is reflected in the summary table. + summ = self.res.summary(xname_fe=["Constant", "Age", "Weight"]) + desired = ["Constant", "Age", "Weight", "Group Var"] + actual = summ.tables[ + 1].index.values # Second table is summary of params + assert_equal(actual, desired) + + def test_summary_xname_re(self): + # Test that the `xname_re` argument is reflected in the summary table. + summ = self.res.summary(xname_re=["Random Effects"]) + desired = ["const", "x1", "x2", "Random Effects"] + actual = summ.tables[ + 1].index.values # Second table is summary of params + assert_equal(actual, desired) + + +# ------------------------------------------------------------------ + + +# TODO: better name +def do1(reml, irf, ds_ix): + + # No need to check independent random effects when there is + # only one of them. + if irf and ds_ix < 6: + return + + irfs = "irf" if irf else "drf" + meth = "reml" if reml else "ml" + + rslt = R_Results(meth, irfs, ds_ix) + + # Fit the model + md = MixedLM(rslt.endog, rslt.exog_fe, rslt.groups, rslt.exog_re) + if not irf: # Free random effects covariance + if np.any(np.diag(rslt.cov_re_r) < 1e-5): + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + mdf = md.fit(gtol=1e-7, reml=reml) + else: + mdf = md.fit(gtol=1e-7, reml=reml) + + else: # Independent random effects + k_fe = rslt.exog_fe.shape[1] + k_re = rslt.exog_re.shape[1] + free = MixedLMParams(k_fe, k_re, 0) + free.fe_params = np.ones(k_fe) + free.cov_re = np.eye(k_re) + free.vcomp = np.array([]) + if np.any(np.diag(rslt.cov_re_r) < 1e-5): + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + mdf = md.fit(reml=reml, gtol=1e-7, free=free) + else: + mdf = md.fit(reml=reml, gtol=1e-7, free=free) + + assert_almost_equal(mdf.fe_params, rslt.coef, decimal=4) + assert_almost_equal(mdf.cov_re, rslt.cov_re_r, decimal=4) + assert_almost_equal(mdf.scale, rslt.scale_r, decimal=4) + + k_fe = md.k_fe + assert_almost_equal( + rslt.vcov_r, mdf.cov_params()[0:k_fe, 0:k_fe], decimal=3) + + assert_almost_equal(mdf.llf, rslt.loglike[0], decimal=2) + + # Not supported in R except for independent random effects + if not irf: + assert_almost_equal( + mdf.random_effects[0], rslt.ranef_postmean, decimal=3) + assert_almost_equal( + mdf.random_effects_cov[0], rslt.ranef_condvar, decimal=3) + + +# ------------------------------------------------------------------ + +# Run all the tests against R +cur_dir = os.path.dirname(os.path.abspath(__file__)) +rdir = os.path.join(cur_dir, 'results') +fnames = os.listdir(rdir) +fnames = [x for x in fnames if x.startswith("lme") and x.endswith(".csv")] + + +# Copied from #3847 +@pytest.mark.parametrize('fname', fnames) +@pytest.mark.parametrize('reml', [False, True]) +@pytest.mark.parametrize('irf', [False, True]) +def test_r(fname, reml, irf): + ds_ix = int(fname[3:5]) + do1(reml, irf, ds_ix) + + +# ------------------------------------------------------------------ + + +def test_mixed_lm_wrapper(): + # a bit more complicated model to test + np.random.seed(2410) + exog = np.random.normal(size=(300, 4)) + exog_re = np.random.normal(size=300) + groups = np.kron(np.arange(100), [1, 1, 1]) + g_errors = exog_re * np.kron(np.random.normal(size=100), [1, 1, 1]) + endog = exog.sum(1) + g_errors + np.random.normal(size=300) + + # Fit with a formula, passing groups as the actual values. + df = pd.DataFrame({"endog": endog}) + for k in range(exog.shape[1]): + df["exog%d" % k] = exog[:, k] + df["exog_re"] = exog_re + fml = "endog ~ 0 + exog0 + exog1 + exog2 + exog3" + re_fml = "~ exog_re" + mod2 = MixedLM.from_formula(fml, df, re_formula=re_fml, groups=groups) + result = mod2.fit() + result.summary() + + xnames = ["exog0", "exog1", "exog2", "exog3"] + re_names = ["Group", "exog_re"] + re_names_full = ["Group Var", "Group x exog_re Cov", "exog_re Var"] + + assert_(mod2.data.xnames == xnames) + assert_(mod2.data.exog_re_names == re_names) + assert_(mod2.data.exog_re_names_full == re_names_full) + + params = result.params + assert_(params.index.tolist() == xnames + re_names_full) + bse = result.bse + assert_(bse.index.tolist() == xnames + re_names_full) + tvalues = result.tvalues + assert_(tvalues.index.tolist() == xnames + re_names_full) + cov_params = result.cov_params() + assert_(cov_params.index.tolist() == xnames + re_names_full) + assert_(cov_params.columns.tolist() == xnames + re_names_full) + fe = result.fe_params + assert_(fe.index.tolist() == xnames) + bse_fe = result.bse_fe + assert_(bse_fe.index.tolist() == xnames) + cov_re = result.cov_re + assert_(cov_re.index.tolist() == re_names) + assert_(cov_re.columns.tolist() == re_names) + cov_re_u = result.cov_re_unscaled + assert_(cov_re_u.index.tolist() == re_names) + assert_(cov_re_u.columns.tolist() == re_names) + bse_re = result.bse_re + assert_(bse_re.index.tolist() == re_names_full) + + +def test_random_effects(): + + np.random.seed(23429) + + # Default model (random effects only) + ngrp = 100 + gsize = 10 + rsd = 2 + gsd = 3 + mn = gsd * np.random.normal(size=ngrp) + gmn = np.kron(mn, np.ones(gsize)) + y = gmn + rsd * np.random.normal(size=ngrp * gsize) + gr = np.kron(np.arange(ngrp), np.ones(gsize)) + x = np.ones(ngrp * gsize) + model = MixedLM(y, x, groups=gr) + result = model.fit() + re = result.random_effects + assert_(isinstance(re, dict)) + assert_(len(re) == ngrp) + assert_(isinstance(re[0], pd.Series)) + assert_(len(re[0]) == 1) + + # Random intercept only, set explicitly + model = MixedLM(y, x, exog_re=x, groups=gr) + result = model.fit() + re = result.random_effects + assert_(isinstance(re, dict)) + assert_(len(re) == ngrp) + assert_(isinstance(re[0], pd.Series)) + assert_(len(re[0]) == 1) + + # Random intercept and slope + xr = np.random.normal(size=(ngrp * gsize, 2)) + xr[:, 0] = 1 + qp = np.linspace(-1, 1, gsize) + xr[:, 1] = np.kron(np.ones(ngrp), qp) + model = MixedLM(y, x, exog_re=xr, groups=gr) + result = model.fit() + re = result.random_effects + assert_(isinstance(re, dict)) + assert_(len(re) == ngrp) + assert_(isinstance(re[0], pd.Series)) + assert_(len(re[0]) == 2) + + +@pytest.mark.slow +def test_handle_missing(): + + np.random.seed(23423) + df = np.random.normal(size=(100, 6)) + df = pd.DataFrame(df) + df.columns = ["y", "g", "x1", "z1", "c1", "c2"] + df["g"] = np.kron(np.arange(50), np.ones(2)) + re = np.random.normal(size=(50, 4)) + re = np.kron(re, np.ones((2, 1))) + df["y"] = re[:, 0] + re[:, 1] * df.z1 + re[:, 2] * df.c1 + df["y"] += re[:, 3] * df.c2 + np.random.normal(size=100) + df.loc[1, "y"] = np.NaN + df.loc[2, "g"] = np.NaN + df.loc[3, "x1"] = np.NaN + df.loc[4, "z1"] = np.NaN + df.loc[5, "c1"] = np.NaN + df.loc[6, "c2"] = np.NaN + + fml = "y ~ x1" + re_formula = "1 + z1" + vc_formula = {"a": "0 + c1", "b": "0 + c2"} + for include_re in False, True: + for include_vc in False, True: + kwargs = {} + dx = df.copy() + va = ["y", "g", "x1"] + if include_re: + kwargs["re_formula"] = re_formula + va.append("z1") + if include_vc: + kwargs["vc_formula"] = vc_formula + va.extend(["c1", "c2"]) + + dx = dx[va].dropna() + + # Some of these models are severely misspecified with + # small n, so produce convergence warnings. Not relevant + # to what we are checking here. + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + + # Drop missing externally + model1 = MixedLM.from_formula( + fml, groups="g", data=dx, **kwargs) + result1 = model1.fit() + + # MixeLM handles missing + model2 = MixedLM.from_formula( + fml, groups="g", data=df, missing='drop', **kwargs) + result2 = model2.fit() + + assert_allclose(result1.params, result2.params) + assert_allclose(result1.bse, result2.bse) + assert_equal(len(result1.fittedvalues), result1.nobs) + + +def test_summary_col(): + from statsmodels.iolib.summary2 import summary_col + ids = [1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3] + x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] + # hard coded simulated y + # ids = np.asarray(ids) + # np.random.seed(123987) + # y = x + np.array([-1, 0, 1])[ids - 1] + 2 * np.random.randn(len(y)) + y = np.array([ + 1.727, -1.037, 2.904, 3.569, 4.629, 5.736, 6.747, 7.020, 5.624, 10.155, + 10.400, 17.164, 17.276, 14.988, 14.453 + ]) + d = {'Y': y, 'X': x, 'IDS': ids} + d = pd.DataFrame(d) + + # provide start_params to speed up convergence + sp1 = np.array([-1.26722599, 1.1617587, 0.19547518]) + mod1 = MixedLM.from_formula('Y ~ X', d, groups=d['IDS']) + results1 = mod1.fit(start_params=sp1) + sp2 = np.array([3.48416861, 0.55287862, 1.38537901]) + mod2 = MixedLM.from_formula('X ~ Y', d, groups=d['IDS']) + results2 = mod2.fit(start_params=sp2) + + out = summary_col([results1, results2], stars=True) + s = ('\n=============================\n Y X \n' + '-----------------------------\nGroup Var 0.1955 1.3854 \n' + ' (0.6032) (2.7377) \nIntercept -1.2672 3.4842* \n' + ' (1.6546) (1.8882) \nX 1.1618*** \n' + ' (0.1959) \nY 0.5529***\n' + ' (0.2080) \n=============================\n' + 'Standard errors in\nparentheses.\n* p<.1, ** p<.05, ***p<.01') + assert_equal(str(out), s) + + +@pytest.mark.slow +def test_random_effects_getters(): + # Simulation-based test to make sure that the BLUPs and actual + # random effects line up. + + np.random.seed(34234) + ng = 500 # number of groups + m = 10 # group size + + y, x, z, v0, v1, g, b, c0, c1 = [], [], [], [], [], [], [], [], [] + + for i in range(ng): + + # Fixed effects + xx = np.random.normal(size=(m, 2)) + yy = xx[:, 0] + 0.5 * np.random.normal(size=m) + + # Random effects (re_formula) + zz = np.random.normal(size=(m, 2)) + bb = np.random.normal(size=2) + bb[0] *= 3 + bb[1] *= 1 + yy += np.dot(zz, bb).flat + b.append(bb) + + # First variance component + vv0 = np.kron(np.r_[0, 1], np.ones(m // 2)).astype(np.int) + cc0 = np.random.normal(size=2) + yy += cc0[vv0] + v0.append(vv0) + c0.append(cc0) + + # Second variance component + vv1 = np.kron(np.ones(m // 2), np.r_[0, 1]).astype(np.int) + cc1 = np.random.normal(size=2) + yy += cc1[vv1] + v1.append(vv1) + c1.append(cc1) + + y.append(yy) + x.append(xx) + z.append(zz) + g.append(["g%d" % i] * m) + + y = np.concatenate(y) + x = np.concatenate(x) + z = np.concatenate(z) + v0 = np.concatenate(v0) + v1 = np.concatenate(v1) + g = np.concatenate(g) + df = pd.DataFrame({ + "y": y, + "x0": x[:, 0], + "x1": x[:, 1], + "z0": z[:, 0], + "z1": z[:, 1], + "v0": v0, + "v1": v1, + "g": g + }) + + b = np.asarray(b) + c0 = np.asarray(c0) + c1 = np.asarray(c1) + cc = np.concatenate((c0, c1), axis=1) + + model = MixedLM.from_formula( + "y ~ x0 + x1", + re_formula="~0 + z0 + z1", + vc_formula={ + "v0": "~0+C(v0)", + "v1": "0+C(v1)" + }, + groups="g", + data=df) + result = model.fit() + + ref = result.random_effects + b0 = [ref["g%d" % k][0:2] for k in range(ng)] + b0 = np.asarray(b0) + assert (np.corrcoef(b0[:, 0], b[:, 0])[0, 1] > 0.8) + assert (np.corrcoef(b0[:, 1], b[:, 1])[0, 1] > 0.8) + + cf0 = [ref["g%d" % k][2:6] for k in range(ng)] + cf0 = np.asarray(cf0) + for k in range(4): + assert (np.corrcoef(cf0[:, k], cc[:, k])[0, 1] > 0.8) + + # Smoke test for predictive covariances + refc = result.random_effects_cov + for g in refc.keys(): + p = ref[g].size + assert (refc[g].shape == (p, p)) + + +def check_smw_solver(p, q, r, s): + # Helper to check that _smw_solver results do in fact solve the desired + # SMW equation + d = q - r + + A = np.random.normal(size=(p, q)) + AtA = np.dot(A.T, A) + + B = np.zeros((q, q)) + B[0:r, 0:r] = np.random.normal(size=(r, r)) + di = np.random.uniform(size=d) + B[r:q, r:q] = np.diag(1 / di) + Qi = np.linalg.inv(B[0:r, 0:r]) + s = 0.5 + + x = np.random.normal(size=p) + y2 = np.linalg.solve(s * np.eye(p, p) + np.dot(A, np.dot(B, A.T)), x) + + f = _smw_solver(s, A, AtA, Qi, di) + y1 = f(x) + assert_allclose(y1, y2) + + f = _smw_solver(s, sparse.csr_matrix(A), sparse.csr_matrix(AtA), Qi, + di) + y1 = f(x) + assert_allclose(y1, y2) + + +class TestSMWSolver(object): + @classmethod + def setup_class(cls): + np.random.seed(23) + + @pytest.mark.parametrize("p", [5, 10]) + @pytest.mark.parametrize("q", [4, 8]) + @pytest.mark.parametrize("r", [2, 3]) + @pytest.mark.parametrize("s", [0, 0.5]) + def test_smw_solver(self, p, q, r, s): + check_smw_solver(p, q, r, s) + + +def check_smw_logdet(p, q, r, s): + # Helper to check that _smw_logdet results match non-optimized equivalent + d = q - r + A = np.random.normal(size=(p, q)) + AtA = np.dot(A.T, A) + + B = np.zeros((q, q)) + c = np.random.normal(size=(r, r)) + B[0:r, 0:r] = np.dot(c.T, c) + di = np.random.uniform(size=d) + B[r:q, r:q] = np.diag(1 / di) + Qi = np.linalg.inv(B[0:r, 0:r]) + s = 0.5 + + _, d2 = np.linalg.slogdet(s * np.eye(p, p) + np.dot(A, np.dot(B, A.T))) + + _, bd = np.linalg.slogdet(B) + d1 = _smw_logdet(s, A, AtA, Qi, di, bd) + # GH 5642, OSX OpenBlas tolerance increase + rtol = 1e-6 if PLATFORM_OSX else 1e-7 + assert_allclose(d1, d2, rtol=rtol) + + +class TestSMWLogdet(object): + @classmethod + def setup_class(cls): + np.random.seed(23) + + @pytest.mark.parametrize("p", [5, 10]) + @pytest.mark.parametrize("q", [4, 8]) + @pytest.mark.parametrize("r", [2, 3]) + @pytest.mark.parametrize("s", [0, 0.5]) + def test_smw_logdet(self, p, q, r, s): + check_smw_logdet(p, q, r, s) + + +def test_get_distribution(): + + np.random.seed(234) + + n = 100 + n_groups = 10 + fe_params = np.r_[1, -2] + cov_re = np.asarray([[1, 0.5], [0.5, 2]]) + vcomp = np.r_[0.5**2, 1.5**2] + scale = 1.5 + + exog_fe = np.random.normal(size=(n, 2)) + exog_re = np.random.normal(size=(n, 2)) + exog_vca = np.random.normal(size=(n, 2)) + exog_vcb = np.random.normal(size=(n, 2)) + + groups = np.repeat(np.arange(n_groups, dtype=np.int), + n / n_groups) + + ey = np.dot(exog_fe, fe_params) + + u = np.random.normal(size=(n_groups, 2)) + u = np.dot(u, np.linalg.cholesky(cov_re).T) + + u1 = np.sqrt(vcomp[0]) * np.random.normal(size=(n_groups, 2)) + u2 = np.sqrt(vcomp[1]) * np.random.normal(size=(n_groups, 2)) + + y = ey + (u[groups, :] * exog_re).sum(1) + y += (u1[groups, :] * exog_vca).sum(1) + y += (u2[groups, :] * exog_vcb).sum(1) + y += np.sqrt(scale) * np.random.normal(size=n) + + df = pd.DataFrame({"y": y, "x1": exog_fe[:, 0], "x2": exog_fe[:, 1], + "z0": exog_re[:, 0], "z1": exog_re[:, 1], + "grp": groups}) + df["z2"] = exog_vca[:, 0] + df["z3"] = exog_vca[:, 1] + df["z4"] = exog_vcb[:, 0] + df["z5"] = exog_vcb[:, 1] + + vcf = {"a": "0 + z2 + z3", "b": "0 + z4 + z5"} + m = MixedLM.from_formula("y ~ 0 + x1 + x2", groups="grp", + re_formula="0 + z0 + z1", + vc_formula=vcf, data=df) + + # Build a params vector that is comparable to + # MixedLMResults.params + import statsmodels + mp = statsmodels.regression.mixed_linear_model.MixedLMParams + po = mp.from_components(fe_params=fe_params, cov_re=cov_re, + vcomp=vcomp) + pa = po.get_packed(has_fe=True, use_sqrt=False) + pa[len(fe_params):] /= scale + + # Get a realization + dist = m.get_distribution(pa, scale, None) + yr = dist.rvs(0) + + # Check the overall variance + v = (np.dot(exog_re, cov_re) * exog_re).sum(1).mean() + v += vcomp[0] * (exog_vca**2).sum(1).mean() + v += vcomp[1] * (exog_vcb**2).sum(1).mean() + v += scale + assert_allclose(np.var(yr - ey), v, rtol=1e-2, atol=1e-4) diff --git a/statsmodels/regression/tests/test_predict.py b/statsmodels/regression/tests/test_predict.py new file mode 100644 index 0000000..80631ad --- /dev/null +++ b/statsmodels/regression/tests/test_predict.py @@ -0,0 +1,260 @@ +# -*- coding: utf-8 -*- +""" +Created on Sun Apr 20 17:12:53 2014 + +author: Josef Perktold + +""" + +import numpy as np +from numpy.testing import assert_allclose, assert_equal + +from statsmodels.regression.linear_model import OLS, WLS +from statsmodels.sandbox.regression.predstd import wls_prediction_std +from statsmodels.regression._prediction import get_prediction + + +def test_predict_se(): + # this test doesn't use reference values + # checks conistency across options, and compares to direct calculation + + # generate dataset + nsample = 50 + x1 = np.linspace(0, 20, nsample) + x = np.c_[x1, (x1 - 5)**2, np.ones(nsample)] + np.random.seed(0)#9876789) #9876543) + beta = [0.5, -0.01, 5.] + y_true2 = np.dot(x, beta) + w = np.ones(nsample) + w[int(nsample * 6. / 10):] = 3 + sig = 0.5 + y2 = y_true2 + sig * w * np.random.normal(size=nsample) + x2 = x[:,[0,2]] + + # estimate OLS + res2 = OLS(y2, x2).fit() + + #direct calculation + covb = res2.cov_params() + predvar = res2.mse_resid + (x2 * np.dot(covb, x2.T).T).sum(1) + predstd = np.sqrt(predvar) + + prstd, iv_l, iv_u = wls_prediction_std(res2) + np.testing.assert_almost_equal(prstd, predstd, 15) + + #stats.t.isf(0.05/2., 50 - 2) + q = 2.0106347546964458 + ci_half = q * predstd + np.testing.assert_allclose(iv_u, res2.fittedvalues + ci_half, rtol=1e-12) + np.testing.assert_allclose(iv_l, res2.fittedvalues - ci_half, rtol=1e-12) + + prstd, iv_l, iv_u = wls_prediction_std(res2, x2[:3,:]) + np.testing.assert_equal(prstd, prstd[:3]) + np.testing.assert_allclose(iv_u, res2.fittedvalues[:3] + ci_half[:3], + rtol=1e-12) + np.testing.assert_allclose(iv_l, res2.fittedvalues[:3] - ci_half[:3], + rtol=1e-12) + + + # check WLS + res3 = WLS(y2, x2, 1. / w).fit() + + #direct calculation + covb = res3.cov_params() + predvar = res3.mse_resid * w + (x2 * np.dot(covb, x2.T).T).sum(1) + predstd = np.sqrt(predvar) + + prstd, iv_l, iv_u = wls_prediction_std(res3) + np.testing.assert_almost_equal(prstd, predstd, 15) + + #stats.t.isf(0.05/2., 50 - 2) + q = 2.0106347546964458 + ci_half = q * predstd + np.testing.assert_allclose(iv_u, res3.fittedvalues + ci_half, rtol=1e-12) + np.testing.assert_allclose(iv_l, res3.fittedvalues - ci_half, rtol=1e-12) + + # testing shapes of exog + prstd, iv_l, iv_u = wls_prediction_std(res3, x2[-1:,:], weights=3.) + np.testing.assert_equal(prstd, prstd[-1]) + prstd, iv_l, iv_u = wls_prediction_std(res3, x2[-1,:], weights=3.) + np.testing.assert_equal(prstd, prstd[-1]) + + prstd, iv_l, iv_u = wls_prediction_std(res3, x2[-2:,:], weights=3.) + np.testing.assert_equal(prstd, prstd[-2:]) + + prstd, iv_l, iv_u = wls_prediction_std(res3, x2[-2:,:], weights=[3, 3]) + np.testing.assert_equal(prstd, prstd[-2:]) + + prstd, iv_l, iv_u = wls_prediction_std(res3, x2[:3,:]) + np.testing.assert_equal(prstd, prstd[:3]) + np.testing.assert_allclose(iv_u, res3.fittedvalues[:3] + ci_half[:3], + rtol=1e-12) + np.testing.assert_allclose(iv_l, res3.fittedvalues[:3] - ci_half[:3], + rtol=1e-12) + + #use wrong size for exog + #prstd, iv_l, iv_u = wls_prediction_std(res3, x2[-1,0], weights=3.) + np.testing.assert_raises(ValueError, wls_prediction_std, res3, x2[-1,0], + weights=3.) + + # check some weight values + sew1 = wls_prediction_std(res3, x2[-3:,:])[0]**2 + for wv in np.linspace(0.5, 3, 5): + + sew = wls_prediction_std(res3, x2[-3:,:], weights=1. / wv)[0]**2 + np.testing.assert_allclose(sew, sew1 + res3.scale * (wv - 1)) + + +class TestWLSPrediction(object): + + @classmethod + def setup_class(cls): + + # from example wls.py + + nsample = 50 + x = np.linspace(0, 20, nsample) + X = np.column_stack((x, (x - 5)**2)) + from statsmodels.tools.tools import add_constant + X = add_constant(X) + beta = [5., 0.5, -0.01] + sig = 0.5 + w = np.ones(nsample) + w[int(nsample * 6. / 10):] = 3 + y_true = np.dot(X, beta) + e = np.random.normal(size=nsample) + y = y_true + sig * w * e + X = X[:,[0,1]] + + + # ### WLS knowing the true variance ratio of heteroscedasticity + + mod_wls = WLS(y, X, weights=1./w) + cls.res_wls = mod_wls.fit() + + + def test_ci(self): + res_wls = self.res_wls + prstd, iv_l, iv_u = wls_prediction_std(res_wls) + pred_res = get_prediction(res_wls) + ci = pred_res.conf_int(obs=True) + + assert_allclose(pred_res.se_obs, prstd, rtol=1e-13) + assert_allclose(ci, np.column_stack((iv_l, iv_u)), rtol=1e-13) + + sf = pred_res.summary_frame() + + col_names = ['mean', 'mean_se', 'mean_ci_lower', 'mean_ci_upper', + 'obs_ci_lower', 'obs_ci_upper'] + assert_equal(sf.columns.tolist(), col_names) + + pred_res2 = res_wls.get_prediction() + ci2 = pred_res2.conf_int(obs=True) + + assert_allclose(pred_res2.se_obs, prstd, rtol=1e-13) + assert_allclose(ci2, np.column_stack((iv_l, iv_u)), rtol=1e-13) + + sf2 = pred_res2.summary_frame() + assert_equal(sf2.columns.tolist(), col_names) + + # check that list works, issue 4437 + x = res_wls.model.exog.mean(0) + pred_res3 = res_wls.get_prediction(x) + ci3 = pred_res3.conf_int(obs=True) + pred_res3b = res_wls.get_prediction(x.tolist()) + ci3b = pred_res3b.conf_int(obs=True) + assert_allclose(pred_res3b.se_obs, pred_res3.se_obs, rtol=1e-13) + assert_allclose(ci3b, ci3, rtol=1e-13) + res_df = pred_res3b.summary_frame() + assert_equal(res_df.index.values, [0]) + + x = res_wls.model.exog[-2:] + pred_res3 = res_wls.get_prediction(x) + ci3 = pred_res3.conf_int(obs=True) + pred_res3b = res_wls.get_prediction(x.tolist()) + ci3b = pred_res3b.conf_int(obs=True) + assert_allclose(pred_res3b.se_obs, pred_res3.se_obs, rtol=1e-13) + assert_allclose(ci3b, ci3, rtol=1e-13) + res_df = pred_res3b.summary_frame() + assert_equal(res_df.index.values, [0, 1]) + + + def test_glm(self): + # prelimnimary, getting started with basic test for GLM.get_prediction + from statsmodels.genmod.generalized_linear_model import GLM + + res_wls = self.res_wls + mod_wls = res_wls.model + y, X, wi = mod_wls.endog, mod_wls.exog, mod_wls.weights + + w_sqrt = np.sqrt(wi) # notation wi is weights, `w` is var + mod_glm = GLM(y * w_sqrt, X * w_sqrt[:,None]) + + # compare using t distribution + res_glm = mod_glm.fit(use_t=True) + pred_glm = res_glm.get_prediction() + sf_glm = pred_glm.summary_frame() + + pred_res_wls = res_wls.get_prediction() + sf_wls = pred_res_wls.summary_frame() + n_compare = 30 # in glm with predict wendog + assert_allclose(sf_glm.values[:n_compare], + sf_wls.values[:n_compare, :4]) + + # compare using normal distribution + + res_glm = mod_glm.fit() # default use_t=False + pred_glm = res_glm.get_prediction() + sf_glm = pred_glm.summary_frame() + + res_wls = mod_wls.fit(use_t=False) + pred_res_wls = res_wls.get_prediction() + sf_wls = pred_res_wls.summary_frame() + assert_allclose(sf_glm.values[:n_compare], + sf_wls.values[:n_compare, :4]) + + # function for parameter transformation + # should be separate test method + from statsmodels.genmod._prediction import params_transform_univariate + rates = params_transform_univariate(res_glm.params, res_glm.cov_params()) + + rates2 = np.column_stack((np.exp(res_glm.params), + res_glm.bse * np.exp(res_glm.params), + np.exp(res_glm.conf_int()))) + assert_allclose(rates.summary_frame().values, rates2, rtol=1e-13) + + from statsmodels.genmod.families import links + + # with identity transform + pt = params_transform_univariate(res_glm.params, res_glm.cov_params(), link=links.identity()) + + assert_allclose(pt.tvalues, res_glm.tvalues, rtol=1e-13) + assert_allclose(pt.se_mean, res_glm.bse, rtol=1e-13) + ptt = pt.t_test() + assert_allclose(ptt[0], res_glm.tvalues, rtol=1e-13) + assert_allclose(ptt[1], res_glm.pvalues, rtol=1e-13) + + # prediction with exog and no weights does not error + res_glm = mod_glm.fit() + pred_glm = res_glm.get_prediction(X) + + # check that list works, issue 4437 + x = res_glm.model.exog.mean(0) + pred_res3 = res_glm.get_prediction(x) + ci3 = pred_res3.conf_int() + pred_res3b = res_glm.get_prediction(x.tolist()) + ci3b = pred_res3b.conf_int() + assert_allclose(pred_res3b.se_mean, pred_res3.se_mean, rtol=1e-13) + assert_allclose(ci3b, ci3, rtol=1e-13) + res_df = pred_res3b.summary_frame() + assert_equal(res_df.index.values, [0]) + + x = res_glm.model.exog[-2:] + pred_res3 = res_glm.get_prediction(x) + ci3 = pred_res3.conf_int() + pred_res3b = res_glm.get_prediction(x.tolist()) + ci3b = pred_res3b.conf_int() + assert_allclose(pred_res3b.se_mean, pred_res3.se_mean, rtol=1e-13) + assert_allclose(ci3b, ci3, rtol=1e-13) + res_df = pred_res3b.summary_frame() + assert_equal(res_df.index.values, [0, 1]) diff --git a/statsmodels/regression/tests/test_processreg.py b/statsmodels/regression/tests/test_processreg.py new file mode 100644 index 0000000..d51cba5 --- /dev/null +++ b/statsmodels/regression/tests/test_processreg.py @@ -0,0 +1,202 @@ +# -*- coding: utf-8 -*- +from statsmodels.compat.platform import PLATFORM_OSX + +from statsmodels.regression.process_regression import ( + ProcessMLE, GaussianCovariance) +import numpy as np +import pandas as pd +import pytest + +import collections +import statsmodels.tools.numdiff as nd +from numpy.testing import assert_allclose, assert_equal + + +def model1(): + mn_par = np.r_[1, 0, -1, 0] + sc_par = np.r_[1, 1] + sm_par = np.r_[0.5, 0.1] + no_par = np.r_[0.25, 0.25] + + return mn_par, sc_par, sm_par, no_par + + +def setup1(n, get_model): + + mn_par, sc_par, sm_par, no_par = get_model() + + groups = np.kron(np.arange(n // 5), np.ones(5)) + time = np.kron(np.ones(n // 5), np.arange(5)) + time_z = (time - time.mean()) / time.std() + + x_mean = np.random.normal(size=(n, len(mn_par))) + x_sc = np.random.normal(size=(n, len(sc_par))) + x_sc[:, 0] = 1 + x_sc[:, 1] = time_z + x_sm = np.random.normal(size=(n, len(sm_par))) + x_sm[:, 0] = 1 + x_sm[:, 1] = time_z + x_no = np.random.normal(size=(n, len(no_par))) + x_no[:, 0] = 1 + x_no[:, 1] = time_z + + mn = np.dot(x_mean, mn_par) + sc = np.exp(np.dot(x_sc, sc_par)) + sm = np.exp(np.dot(x_sm, sm_par)) + no = np.exp(np.dot(x_no, no_par)) + + y = mn.copy() + + gc = GaussianCovariance() + + ix = collections.defaultdict(lambda: []) + for i, g in enumerate(groups): + ix[g].append(i) + + for g, ii in ix.items(): + c = gc.get_cov(time[ii], sc[ii], sm[ii]) + r = np.linalg.cholesky(c) + y[ii] += np.dot(r, np.random.normal(size=len(ii))) + + # Additive white noise + y += no * np.random.normal(size=y.shape) + + return y, x_mean, x_sc, x_sm, x_no, time, groups + + +def run_arrays(n, get_model): + + y, x_mean, x_sc, x_sm, x_no, time, groups = setup1(n, get_model) + + preg = ProcessMLE(y, x_mean, x_sc, x_sm, x_no, time, groups) + + return preg.fit() + + +@pytest.mark.slow +def test_arrays(): + + np.random.seed(8234) + + f = run_arrays(1000, model1) + mod = f.model + + f.summary() # Smoke test + + # Compare the parameter estimates to population values. + epar = np.concatenate(model1()) + assert_allclose(f.params, epar, atol=0.3, rtol=0.3) + + # Test the fitted covariance matrix + cv = f.covariance(mod.time[0:5], mod.exog_scale[0:5, :], + mod.exog_smooth[0:5, :]) + assert_allclose(cv, cv.T) # Check symmetry + a, _ = np.linalg.eig(cv) + assert_equal(a > 0, True) # Check PSD + + # Test predict + yhat = f.predict() + assert_equal(np.corrcoef(yhat, mod.endog)[0, 1] > 0.2, True) + yhatm = f.predict(exog=mod.exog) + assert_equal(yhat, yhatm) + yhat0 = mod.predict(params=f.params, exog=mod.exog) + assert_equal(yhat, yhat0) + + # Smoke test t-test + f.t_test(np.eye(len(f.params))) + + +def run_formula(n, get_model): + + y, x_mean, x_sc, x_sm, x_no, time, groups = setup1(n, get_model) + + df = pd.DataFrame({ + "y": y, + "x1": x_mean[:, 0], + "x2": x_mean[:, 1], + "x3": x_mean[:, 2], + "x4": x_mean[:, 3], + "xsc1": x_sc[:, 0], + "xsc2": x_sc[:, 1], + "xsm1": x_sm[:, 0], + "xsm2": x_sm[:, 1], + "xno1": x_no[:, 0], + "xno2": x_no[:, 1], + "time": time, + "groups": groups + }) + + mean_formula = "y ~ 0 + x1 + x2 + x3 + x4" + scale_formula = "0 + xsc1 + xsc2" + smooth_formula = "0 + xsm1 + xsm2" + noise_formula = "0 + xno1 + xno2" + preg = ProcessMLE.from_formula( + mean_formula, + data=df, + scale_formula=scale_formula, + smooth_formula=smooth_formula, + noise_formula=noise_formula, + time="time", + groups="groups") + f = preg.fit() + + return f, df + + +@pytest.mark.slow +def test_formulas(): + + np.random.seed(8789) + + f, df = run_formula(1000, model1) + mod = f.model + + f.summary() # Smoke test + + # Compare the parameter estimates to population values. + epar = np.concatenate(model1()) + assert_allclose(f.params, epar, atol=0.1, rtol=1) + + # Test the fitted covariance matrix + exog_scale = pd.DataFrame(mod.exog_scale[0:5, :], + columns=["xsc1", "xsc2"]) + exog_smooth = pd.DataFrame(mod.exog_smooth[0:5, :], + columns=["xsm1", "xsm2"]) + cv = f.covariance(mod.time[0:5], exog_scale, exog_smooth) + assert_allclose(cv, cv.T) + a, _ = np.linalg.eig(cv) + assert_equal(a > 0, True) + + # Test predict + yhat = f.predict() + assert_equal(np.corrcoef(yhat, mod.endog)[0, 1] > 0.2, True) + yhatm = f.predict(exog=df) + assert_equal(yhat, yhatm) + yhat0 = mod.predict(params=f.params, exog=df) + assert_equal(yhat, yhat0) + + # Smoke test t-test + f.t_test(np.eye(len(f.params))) + + +# Test the score functions using numerical derivatives. +def test_score_numdiff(): + + y, x_mean, x_sc, x_sm, x_no, time, groups = setup1(1000, model1) + + preg = ProcessMLE(y, x_mean, x_sc, x_sm, x_no, time, groups) + + def loglike(x): + return preg.loglike(x) + + q = x_mean.shape[1] + x_sc.shape[1] + x_sm.shape[1] + x_no.shape[1] + + np.random.seed(342) + + atol = 2e-3 if PLATFORM_OSX else 1e-2 + for _ in range(5): + par0 = preg._get_start() + par = par0 + 0.1 * np.random.normal(size=q) + score = preg.score(par) + score_nd = nd.approx_fprime(par, loglike, epsilon=1e-7) + assert_allclose(score, score_nd, atol=atol, rtol=1e-4) diff --git a/statsmodels/regression/tests/test_quantile_regression.py b/statsmodels/regression/tests/test_quantile_regression.py new file mode 100644 index 0000000..f3bafb1 --- /dev/null +++ b/statsmodels/regression/tests/test_quantile_regression.py @@ -0,0 +1,283 @@ +import scipy.stats +import numpy as np +import statsmodels.api as sm +from numpy.testing import assert_allclose, assert_equal, assert_almost_equal +from patsy import dmatrices # pylint: disable=E0611 +from statsmodels.regression.quantile_regression import QuantReg +from .results.results_quantile_regression import ( + biweight_chamberlain, biweight_hsheather, biweight_bofinger, + cosine_chamberlain, cosine_hsheather, cosine_bofinger, + gaussian_chamberlain, gaussian_hsheather, gaussian_bofinger, + epan2_chamberlain, epan2_hsheather, epan2_bofinger, + parzen_chamberlain, parzen_hsheather, parzen_bofinger, + # rectangle_chamberlain, rectangle_hsheather, rectangle_bofinger, + # triangle_chamberlain, triangle_hsheather, triangle_bofinger, + # epanechnikov_chamberlain, epanechnikov_hsheather, epanechnikov_bofinger, + epanechnikov_hsheather_q75, Rquantreg) + +idx = ['income', 'Intercept'] + + +class CheckModelResultsMixin(object): + def test_params(self): + assert_allclose(np.ravel(self.res1.params.loc[idx]), + self.res2.table[:, 0], rtol=1e-3) + + def test_bse(self): + assert_equal(self.res1.scale, 1) + assert_allclose(np.ravel(self.res1.bse.loc[idx]), + self.res2.table[:, 1], rtol=1e-3) + + def test_tvalues(self): + assert_allclose(np.ravel(self.res1.tvalues.loc[idx]), + self.res2.table[:, 2], rtol=1e-2) + + def test_pvalues(self): + pvals_stata = scipy.stats.t.sf(self.res2.table[:, 2], self.res2.df_r) + assert_allclose(np.ravel(self.res1.pvalues.loc[idx]), + pvals_stata, rtol=1.1) + + # test that we use the t distribution for the p-values + pvals_t = scipy.stats.t.sf(self.res1.tvalues, self.res2.df_r) * 2 + assert_allclose(np.ravel(self.res1.pvalues), + pvals_t, rtol=1e-9, atol=1e-10) + + def test_conf_int(self): + assert_allclose(self.res1.conf_int().loc[idx], + self.res2.table[:, -2:], rtol=1e-3) + + def test_nobs(self): + assert_allclose(self.res1.nobs, self.res2.N, rtol=1e-3) + + def test_df_model(self): + assert_allclose(self.res1.df_model, self.res2.df_m, rtol=1e-3) + + def test_df_resid(self): + assert_allclose(self.res1.df_resid, self.res2.df_r, rtol=1e-3) + + def test_prsquared(self): + assert_allclose(self.res1.prsquared, self.res2.psrsquared, rtol=1e-3) + + def test_sparsity(self): + assert_allclose(np.array(self.res1.sparsity), + self.res2.sparsity, rtol=1e-3) + + def test_bandwidth(self): + assert_allclose(np.array(self.res1.bandwidth), + self.res2.kbwidth, rtol=1e-3) + + +d = {('biw', 'bofinger'): biweight_bofinger, + ('biw', 'chamberlain'): biweight_chamberlain, + ('biw', 'hsheather'): biweight_hsheather, + ('cos', 'bofinger'): cosine_bofinger, + ('cos', 'chamberlain'): cosine_chamberlain, + ('cos', 'hsheather'): cosine_hsheather, + ('gau', 'bofinger'): gaussian_bofinger, + ('gau', 'chamberlain'): gaussian_chamberlain, + ('gau', 'hsheather'): gaussian_hsheather, + ('par', 'bofinger'): parzen_bofinger, + ('par', 'chamberlain'): parzen_chamberlain, + ('par', 'hsheather'): parzen_hsheather, + # ('rec','bofinger'): rectangle_bofinger, + # ('rec','chamberlain'): rectangle_chamberlain, + # ('rec','hsheather'): rectangle_hsheather, + # ('tri','bofinger'): triangle_bofinger, + # ('tri','chamberlain'): triangle_chamberlain, + # ('tri','hsheather'): triangle_hsheather, + ('epa', 'bofinger'): epan2_bofinger, + ('epa', 'chamberlain'): epan2_chamberlain, + ('epa', 'hsheather'): epan2_hsheather + # ('epa2', 'bofinger'): epan2_bofinger, + # ('epa2', 'chamberlain'): epan2_chamberlain, + # ('epa2', 'hsheather'): epan2_hsheather + } + + +def setup_fun(kernel='gau', bandwidth='bofinger'): + data = sm.datasets.engel.load_pandas().data + y, X = dmatrices('foodexp ~ income', data, return_type='dataframe') + statsm = QuantReg(y, X).fit(vcov='iid', kernel=kernel, bandwidth=bandwidth) + stata = d[(kernel, bandwidth)] + return statsm, stata + + +def test_fitted_residuals(): + data = sm.datasets.engel.load_pandas().data + y, X = dmatrices('foodexp ~ income', data, return_type='dataframe') + res = QuantReg(y, X).fit(q=.1) + # Note: maxabs relative error with fitted is 1.789e-09 + assert_almost_equal(np.array(res.fittedvalues), Rquantreg.fittedvalues, 5) + assert_almost_equal(np.array(res.predict()), Rquantreg.fittedvalues, 5) + assert_almost_equal(np.array(res.resid), Rquantreg.residuals, 5) + + +class TestEpanechnikovHsheatherQ75(CheckModelResultsMixin): + # Vincent Arel-Bundock also spot-checked q=.1 + @classmethod + def setup_class(cls): + data = sm.datasets.engel.load_pandas().data + y, X = dmatrices('foodexp ~ income', data, return_type='dataframe') + cls.res1 = QuantReg(y, X).fit(q=.75, vcov='iid', kernel='epa', + bandwidth='hsheather') + cls.res2 = epanechnikov_hsheather_q75 + + +class TestEpanechnikovBofinger(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('epa', 'bofinger') + + +class TestEpanechnikovChamberlain(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('epa', 'chamberlain') + + +class TestEpanechnikovHsheather(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('epa', 'hsheather') + + +class TestGaussianBofinger(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('gau', 'bofinger') + + +class TestGaussianChamberlain(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('gau', 'chamberlain') + + +class TestGaussianHsheather(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('gau', 'hsheather') + + +class TestBiweightBofinger(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('biw', 'bofinger') + + +class TestBiweightChamberlain(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('biw', 'chamberlain') + + +class TestBiweightHsheather(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('biw', 'hsheather') + + +class TestCosineBofinger(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('cos', 'bofinger') + + +class TestCosineChamberlain(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('cos', 'chamberlain') + + +class TestCosineHsheather(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('cos', 'hsheather') + + +class TestParzeneBofinger(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('par', 'bofinger') + + +class TestParzeneChamberlain(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('par', 'chamberlain') + + +class TestParzeneHsheather(CheckModelResultsMixin): + @classmethod + def setup_class(cls): + cls.res1, cls.res2 = setup_fun('par', 'hsheather') + +# class TestTriangleBofinger(CheckModelResultsMixin): +# @classmethod +# def setup_class(cls): +# cls.res1, cls.res2 = setup_fun('tri', 'bofinger') + +# class TestTriangleChamberlain(CheckModelResultsMixin): +# @classmethod +# def setup_class(cls): +# cls.res1, cls.res2 = setup_fun('tri', 'chamberlain') + +# class TestTriangleHsheather(CheckModelResultsMixin): +# @classmethod +# def setup_class(cls): +# cls.res1, cls.res2 = setup_fun('tri', 'hsheather') + + +def test_zero_resid(): + # smoke and regression tests + + X = np.array([[1, 0], [0, 1], [0, 2.1], [0, 3.1]], dtype=np.float64) + y = np.array([0, 1, 2, 3], dtype=np.float64) + + res = QuantReg(y, X).fit(0.5, bandwidth='chamberlain') # 'bofinger') + res.summary() + + assert_allclose(res.params, + np.array([0.0, 0.96774163]), + rtol=1e-4, atol=1e-20) + assert_allclose(res.bse, + np.array([0.0447576, 0.01154867]), + rtol=1e-4, atol=1e-20) + assert_allclose(res.resid, + np.array([0.0, 3.22583680e-02, + -3.22574272e-02, 9.40732912e-07]), + rtol=1e-4, atol=1e-20) + + X = np.array([[1, 0], [0.1, 1], [0, 2.1], [0, 3.1]], dtype=np.float64) + y = np.array([0, 1, 2, 3], dtype=np.float64) + + res = QuantReg(y, X).fit(0.5, bandwidth='chamberlain') + res.summary() + + assert_allclose(res.params, np.array([9.99982796e-08, 9.67741630e-01]), + rtol=1e-4, atol=1e-20) + assert_allclose(res.bse, np.array([0.04455029, 0.01155251]), rtol=1e-4, + atol=1e-20) + assert_allclose(res.resid, np.array([-9.99982796e-08, 3.22583598e-02, + -3.22574234e-02, 9.46361860e-07]), + rtol=1e-4, atol=1e-20) + + +def test_use_t_summary(): + X = np.array([[1, 0], [0, 1], [0, 2.1], [0, 3.1]], dtype=np.float64) + y = np.array([0, 1, 2, 3], dtype=np.float64) + + res = QuantReg(y, X).fit(0.5, bandwidth='chamberlain', use_t=True) + summ = res.summary() + assert 'P>|t|' in str(summ) + assert 'P>|z|' not in str(summ) + + +def test_alpha_summary(): + X = np.array([[1, 0], [0, 1], [0, 2.1], [0, 3.1]], dtype=np.float64) + y = np.array([0, 1, 2, 3], dtype=np.float64) + + res = QuantReg(y, X).fit(0.5, bandwidth='chamberlain', use_t=True) + summ_20 = res.summary(alpha=.2) + assert '[0.025 0.975]' not in str(summ_20) + assert '[0.1 0.9]' in str(summ_20) diff --git a/statsmodels/regression/tests/test_recursive_ls.py b/statsmodels/regression/tests/test_recursive_ls.py new file mode 100644 index 0000000..74beb79 --- /dev/null +++ b/statsmodels/regression/tests/test_recursive_ls.py @@ -0,0 +1,475 @@ +""" +Tests for recursive least squares models + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import numpy as np +import pandas as pd +import pytest +from scipy.stats import norm +import os + +from statsmodels.datasets import macrodata +from statsmodels.regression.linear_model import OLS +from statsmodels.genmod.api import GLM +from statsmodels.tools.eval_measures import aic, bic +from statsmodels.regression.recursive_ls import RecursiveLS +from statsmodels.stats.diagnostic import recursive_olsresiduals +from statsmodels.tools import add_constant +from statsmodels.tools.sm_exceptions import ValueWarning +from numpy.testing import assert_equal, assert_raises, assert_allclose + +current_path = os.path.dirname(os.path.abspath(__file__)) + +results_R_path = 'results' + os.sep + 'results_rls_R.csv' +results_R = pd.read_csv(current_path + os.sep + results_R_path) + +results_stata_path = 'results' + os.sep + 'results_rls_stata.csv' +results_stata = pd.read_csv(current_path + os.sep + results_stata_path) + +dta = macrodata.load_pandas().data +dta.index = pd.date_range(start='1959-01-01', end='2009-07-01', freq='QS') + +endog = dta['cpi'] +exog = add_constant(dta['m1']) + + +def test_endog(): + # Tests for numpy input + mod = RecursiveLS(endog.values, exog.values) + res = mod.fit() + + # Test the RLS estimates against OLS estimates + mod_ols = OLS(endog, exog) + res_ols = mod_ols.fit() + assert_allclose(res.params, res_ols.params) + + # Tests for 1-dim exog + mod = RecursiveLS(endog, dta['m1'].values) + res = mod.fit() + + # Test the RLS estimates against OLS estimates + mod_ols = OLS(endog, dta['m1']) + res_ols = mod_ols.fit() + assert_allclose(res.params, res_ols.params) + +def test_ols(): + # More comprehensive tests against OLS estimates + mod = RecursiveLS(endog, dta['m1']) + res = mod.fit() + + mod_ols = OLS(endog, dta['m1']) + res_ols = mod_ols.fit() + + # Regression coefficients, standard errors, and estimated scale + assert_allclose(res.params, res_ols.params) + assert_allclose(res.bse, res_ols.bse) + # Note: scale here is computed according to Harvey, 1989, 4.2.5, and is + # the called the ML estimator and sometimes (e.g. later in section 5) + # denoted \tilde \sigma_*^2 + assert_allclose(res.filter_results.obs_cov[0, 0], res_ols.scale) + + # OLS residuals are equivalent to smoothed forecast errors + # (the latter are defined as e_t|T by Harvey, 1989, 5.4.5) + # (this follows since the smoothed state simply contains the + # full-information estimates of the regression coefficients) + actual = (mod.endog[:, 0] - + np.sum(mod['design', 0, :, :] * res.smoothed_state, axis=0)) + assert_allclose(actual, res_ols.resid) + + # Given the estimate of scale as `sum(v_t^2 / f_t) / (T - d)` (see + # Harvey, 1989, 4.2.5 on p. 183), then llf_recursive is equivalent to the + # full OLS loglikelihood (i.e. without the scale concentrated out). + desired = mod_ols.loglike(res_ols.params, scale=res_ols.scale) + assert_allclose(res.llf_recursive, desired) + # Alternatively, we can constrcut the concentrated OLS loglikelihood + # by computing the scale term with `nobs` in the denominator rather than + # `nobs - d`. + scale_alternative = np.sum(( + res.standardized_forecasts_error[0, 1:] * + res.filter_results.obs_cov[0, 0]**0.5)**2) / mod.nobs + llf_alternative = np.log(norm.pdf(res.resid_recursive, loc=0, + scale=scale_alternative**0.5)).sum() + assert_allclose(llf_alternative, res_ols.llf) + + # Prediction + actual = res.forecast(10, design=np.ones((1, 1, 10))) + assert_allclose(actual, res_ols.predict(np.ones((10, 1)))) + + # Sums of squares, R^2 + assert_allclose(res.ess, res_ols.ess) + assert_allclose(res.ssr, res_ols.ssr) + assert_allclose(res.centered_tss, res_ols.centered_tss) + assert_allclose(res.uncentered_tss, res_ols.uncentered_tss) + assert_allclose(res.rsquared, res_ols.rsquared) + + # Mean squares + assert_allclose(res.mse_model, res_ols.mse_model) + assert_allclose(res.mse_resid, res_ols.mse_resid) + assert_allclose(res.mse_total, res_ols.mse_total) + + # Hypothesis tests + actual = res.t_test('m1 = 0') + desired = res_ols.t_test('m1 = 0') + assert_allclose(actual.statistic, desired.statistic) + assert_allclose(actual.pvalue, desired.pvalue, atol=1e-15) + + actual = res.f_test('m1 = 0') + desired = res_ols.f_test('m1 = 0') + assert_allclose(actual.statistic, desired.statistic) + assert_allclose(actual.pvalue, desired.pvalue, atol=1e-15) + + # Information criteria + # Note: the llf and llf_obs given in the results are based on the Kalman + # filter and so the ic given in results will not be identical to the + # OLS versions. Additionally, llf_recursive is comparable to the + # non-concentrated llf, and not the concentrated llf that is by default + # used in OLS. Compute new ic based on llf_alternative to compare. + actual_aic = aic(llf_alternative, res.nobs_effective, res.df_model) + assert_allclose(actual_aic, res_ols.aic) + actual_bic = bic(llf_alternative, res.nobs_effective, res.df_model) + assert_allclose(actual_bic, res_ols.bic) + + +def test_glm(constraints=None): + # More comprehensive tests against GLM estimates (this is sort of redundant + # given `test_ols`, but this is mostly to complement the tests in + # `test_glm_constrained`) + endog = dta.infl + exog = add_constant(dta[['unemp', 'm1']]) + + mod = RecursiveLS(endog, exog, constraints=constraints) + res = mod.fit() + + mod_glm = GLM(endog, exog) + if constraints is None: + res_glm = mod_glm.fit() + else: + res_glm = mod_glm.fit_constrained(constraints=constraints) + + # Regression coefficients, standard errors, and estimated scale + assert_allclose(res.params, res_glm.params) + assert_allclose(res.bse, res_glm.bse, atol=1e-6) + # Note: scale here is computed according to Harvey, 1989, 4.2.5, and is + # the called the ML estimator and sometimes (e.g. later in section 5) + # denoted \tilde \sigma_*^2 + assert_allclose(res.filter_results.obs_cov[0, 0], res_glm.scale) + + # DoF + # Note: GLM does not include intercept in DoF, so modify by -1 + assert_equal(res.df_model - 1, res_glm.df_model) + + # OLS residuals are equivalent to smoothed forecast errors + # (the latter are defined as e_t|T by Harvey, 1989, 5.4.5) + # (this follows since the smoothed state simply contains the + # full-information estimates of the regression coefficients) + actual = (mod.endog[:, 0] - + np.sum(mod['design', 0, :, :] * res.smoothed_state, axis=0)) + assert_allclose(actual, res_glm.resid_response, atol=1e-7) + + # Given the estimate of scale as `sum(v_t^2 / f_t) / (T - d)` (see + # Harvey, 1989, 4.2.5 on p. 183), then llf_recursive is equivalent to the + # full OLS loglikelihood (i.e. without the scale concentrated out). + desired = mod_glm.loglike(res_glm.params, scale=res_glm.scale) + assert_allclose(res.llf_recursive, desired) + # Alternatively, we can construct the concentrated OLS loglikelihood + # by computing the scale term with `nobs` in the denominator rather than + # `nobs - d`. + scale_alternative = np.sum(( + res.standardized_forecasts_error[0, 1:] * + res.filter_results.obs_cov[0, 0]**0.5)**2) / mod.nobs + llf_alternative = np.log(norm.pdf(res.resid_recursive, loc=0, + scale=scale_alternative**0.5)).sum() + assert_allclose(llf_alternative, res_glm.llf) + + # Prediction + # TODO: prediction in this case is not working. + if constraints is None: + design = np.ones((1, 3, 10)) + actual = res.forecast(10, design=design) + assert_allclose(actual, res_glm.predict(np.ones((10, 3)))) + else: + design = np.ones((2, 3, 10)) + assert_raises(NotImplementedError, res.forecast, 10, design=design) + + # Hypothesis tests + actual = res.t_test('m1 = 0') + desired = res_glm.t_test('m1 = 0') + assert_allclose(actual.statistic, desired.statistic) + assert_allclose(actual.pvalue, desired.pvalue, atol=1e-15) + + actual = res.f_test('m1 = 0') + desired = res_glm.f_test('m1 = 0') + assert_allclose(actual.statistic, desired.statistic) + assert_allclose(actual.pvalue, desired.pvalue) + + # Information criteria + # Note: the llf and llf_obs given in the results are based on the Kalman + # filter and so the ic given in results will not be identical to the + # OLS versions. Additionally, llf_recursive is comparable to the + # non-concentrated llf, and not the concentrated llf that is by default + # used in OLS. Compute new ic based on llf_alternative to compare. + actual_aic = aic(llf_alternative, res.nobs_effective, res.df_model) + assert_allclose(actual_aic, res_glm.aic) + # See gh#1733 for details on why the BIC doesn't match while AIC does + # actual_bic = bic(llf_alternative, res.nobs_effective, res.df_model) + # assert_allclose(actual_bic, res_glm.bic) + +def test_glm_constrained(): + test_glm(constraints='m1 + unemp = 1') + + +def test_filter(): + # Basic test for filtering + mod = RecursiveLS(endog, exog) + res = mod.filter() + + # Test the RLS estimates against OLS estimates + mod_ols = OLS(endog, exog) + res_ols = mod_ols.fit() + assert_allclose(res.params, res_ols.params) + + +def test_estimates(): + mod = RecursiveLS(endog, exog) + res = mod.fit() + + # Test for start_params + assert_equal(mod.start_params, 0) + + + # Test the RLS coefficient estimates against those from R (quantreg) + # Due to initialization issues, we get more agreement as we get + # farther from the initial values. + assert_allclose(res.recursive_coefficients.filtered[:, 2:10].T, + results_R.iloc[:8][['beta1', 'beta2']], rtol=1e-5) + assert_allclose(res.recursive_coefficients.filtered[:, 9:20].T, + results_R.iloc[7:18][['beta1', 'beta2']]) + assert_allclose(res.recursive_coefficients.filtered[:, 19:].T, + results_R.iloc[17:][['beta1', 'beta2']]) + + # Test the RLS estimates against OLS estimates + mod_ols = OLS(endog, exog) + res_ols = mod_ols.fit() + assert_allclose(res.params, res_ols.params) + + +@pytest.mark.matplotlib +def test_plots(close_figures): + exog = add_constant(dta[['m1', 'pop']]) + mod = RecursiveLS(endog, exog) + res = mod.fit() + + # Basic plot + try: + from pandas.plotting import register_matplotlib_converters + register_matplotlib_converters() + except ImportError: + pass + fig = res.plot_recursive_coefficient() + + # Specific variable + fig = res.plot_recursive_coefficient(variables=['m1']) + + # All variables + fig = res.plot_recursive_coefficient(variables=[0, 'm1', 'pop']) + + # Basic plot + fig = res.plot_cusum() + + # Other alphas + for alpha in [0.01, 0.10]: + fig = res.plot_cusum(alpha=alpha) + + # Invalid alpha + assert_raises(ValueError, res.plot_cusum, alpha=0.123) + + # Basic plot + fig = res.plot_cusum_squares() + + # Numpy input (no dates) + mod = RecursiveLS(endog.values, exog.values) + res = mod.fit() + + # Basic plot + fig = res.plot_recursive_coefficient() + + # Basic plot + fig = res.plot_cusum() + + # Basic plot + fig = res.plot_cusum_squares() + + +def test_from_formula(): + with pytest.warns(ValueWarning, match="No frequency information"): + mod = RecursiveLS.from_formula('cpi ~ m1', data=dta) + + res = mod.fit() + + # Test the RLS estimates against OLS estimates + mod_ols = OLS.from_formula('cpi ~ m1', data=dta) + res_ols = mod_ols.fit() + assert_allclose(res.params, res_ols.params) + + +def test_resid_recursive(): + mod = RecursiveLS(endog, exog) + res = mod.fit() + + # Test the recursive residuals against those from R (strucchange) + assert_allclose(res.resid_recursive[2:10].T, + results_R.iloc[:8]['rec_resid']) + assert_allclose(res.resid_recursive[9:20].T, + results_R.iloc[7:18]['rec_resid']) + assert_allclose(res.resid_recursive[19:].T, + results_R.iloc[17:]['rec_resid']) + + # Test the RLS estimates against those from Stata (cusum6) + assert_allclose(res.resid_recursive[3:], + results_stata.iloc[3:]['rr'], atol=1e-5, rtol=1e-5) + + # Test the RLS estimates against statsmodels estimates + mod_ols = OLS(endog, exog) + res_ols = mod_ols.fit() + desired_resid_recursive = recursive_olsresiduals(res_ols)[4][2:] + assert_allclose(res.resid_recursive[2:], desired_resid_recursive) + + +def test_cusum(): + mod = RecursiveLS(endog, exog) + res = mod.fit() + + # Test the cusum statistics against those from R (strucchange) + # These values are not even close to ours, to Statas, or to the alternate + # statsmodels values + # assert_allclose(res.cusum, results_R['cusum']) + + # Test the cusum statistics against Stata (cusum6) + # Note: cusum6 excludes the first 3 elements due to OLS initialization + # whereas we exclude only the first 2. Also there are initialization + # differences (as seen above in the recursive residuals). + # Here we explicitly reverse engineer our cusum to match their to show the + # equivalence + d = res.nobs_diffuse + cusum = res.cusum * np.std(res.resid_recursive[d:], ddof=1) + cusum -= res.resid_recursive[d] + cusum /= np.std(res.resid_recursive[d+1:], ddof=1) + cusum = cusum[1:] + assert_allclose(cusum, results_stata.iloc[3:]['cusum'], atol=1e-6, rtol=1e-5) + + # Test the cusum statistics against statsmodels estimates + mod_ols = OLS(endog, exog) + res_ols = mod_ols.fit() + desired_cusum = recursive_olsresiduals(res_ols)[-2][1:] + assert_allclose(res.cusum, desired_cusum, rtol=1e-6) + + # Test the cusum bounds against Stata (cusum6) + # Again note that cusum6 excludes the first 3 elements, so we need to + # change the ddof and points. + actual_bounds = res._cusum_significance_bounds( + alpha=0.05, ddof=1, points=np.arange(d+1, res.nobs)) + desired_bounds = results_stata.iloc[3:][['lw', 'uw']].T + assert_allclose(actual_bounds, desired_bounds, rtol=1e-6) + + # Test the cusum bounds against statsmodels + actual_bounds = res._cusum_significance_bounds( + alpha=0.05, ddof=0, points=np.arange(d, res.nobs)) + desired_bounds = recursive_olsresiduals(res_ols)[-1] + assert_allclose(actual_bounds, desired_bounds) + + # Test for invalid calls + assert_raises(ValueError, res._cusum_squares_significance_bounds, + alpha=0.123) + + +def test_stata(): + # Test the cusum and cusumsq statistics against Stata (cusum6) + mod = RecursiveLS(endog, exog, loglikelihood_burn=3) + with pytest.warns(UserWarning): + res = mod.fit() + d = max(res.nobs_diffuse, res.loglikelihood_burn) + + assert_allclose(res.resid_recursive[3:], results_stata.iloc[3:]['rr'], + atol=1e-5, rtol=1e-5) + assert_allclose(res.cusum, results_stata.iloc[3:]['cusum'], atol=1e-5) + assert_allclose(res.cusum_squares, results_stata.iloc[3:]['cusum2'], + atol=1e-5) + + actual_bounds = res._cusum_significance_bounds( + alpha=0.05, ddof=0, points=np.arange(d+1, res.nobs+1)) + desired_bounds = results_stata.iloc[3:][['lw', 'uw']].T + assert_allclose(actual_bounds, desired_bounds, atol=1e-5) + + # Note: Stata uses a set of tabulated critical values whereas we use an + # approximation formula, so this test is quite imprecise + actual_bounds = res._cusum_squares_significance_bounds( + alpha=0.05, points=np.arange(d+1, res.nobs+1)) + desired_bounds = results_stata.iloc[3:][['lww', 'uww']].T + assert_allclose(actual_bounds, desired_bounds, atol=1e-2) + + +def test_constraints_stata(): + endog = dta['infl'] + exog = add_constant(dta[['m1', 'unemp']]) + + mod = RecursiveLS(endog, exog, constraints='m1 + unemp = 1') + res = mod.fit() + + # See tests/results/test_rls.do + desired = [-0.7001083844336, -0.0018477514060, 1.0018477514060] + assert_allclose(res.params, desired) + + # See tests/results/test_rls.do + desired = [.4699552366, .0005369357, .0005369357] + assert_allclose(res.bse[0], desired[0], atol=1e-1) + assert_allclose(res.bse[1:], desired[1:], atol=1e-4) + + # See tests/results/test_rls.do + desired = -534.4292052931121 + # Note that to compute what Stata reports as the llf, we need to use a + # different denominator for estimating the scale, and then compute the + # llf from the alternative recursive residuals + scale_alternative = np.sum(( + res.standardized_forecasts_error[0, 1:] * + res.filter_results.obs_cov[0, 0]**0.5)**2) / mod.nobs + llf_alternative = np.log(norm.pdf(res.resid_recursive, loc=0, + scale=scale_alternative**0.5)).sum() + assert_allclose(llf_alternative, desired) + + +def test_multiple_constraints(): + endog = dta['infl'] + exog = add_constant(dta[['m1', 'unemp', 'cpi']]) + + constraints = [ + 'm1 + unemp = 1', + 'cpi = 0', + ] + + mod = RecursiveLS(endog, exog, constraints=constraints) + res = mod.fit() + + # See tests/results/test_rls.do + desired = [-0.7001083844336, -0.0018477514060, 1.0018477514060, 0] + assert_allclose(res.params, desired, atol=1e-10) + + # See tests/results/test_rls.do + desired = [.4699552366, .0005369357, .0005369357, 0] + assert_allclose(res.bse[0], desired[0], atol=1e-1) + assert_allclose(res.bse[1:-1], desired[1:-1], atol=1e-4) + + # See tests/results/test_rls.do + desired = -534.4292052931121 + # Note that to compute what Stata reports as the llf, we need to use a + # different denominator for estimating the scale, and then compute the + # llf from the alternative recursive residuals + scale_alternative = np.sum(( + res.standardized_forecasts_error[0, 1:] * + res.filter_results.obs_cov[0, 0]**0.5)**2) / mod.nobs + llf_alternative = np.log(norm.pdf(res.resid_recursive, loc=0, + scale=scale_alternative**0.5)).sum() + assert_allclose(llf_alternative, desired) diff --git a/statsmodels/regression/tests/test_regression.py b/statsmodels/regression/tests/test_regression.py new file mode 100644 index 0000000..48ca02a --- /dev/null +++ b/statsmodels/regression/tests/test_regression.py @@ -0,0 +1,1342 @@ +""" +Test functions for models.regression +""" +# TODO: Test for LM +from statsmodels.compat.python import long, lrange +import warnings +import pandas +import numpy as np +from numpy.testing import (assert_almost_equal, assert_, + assert_raises, assert_equal, assert_allclose) +import pytest +from scipy.linalg import toeplitz +from statsmodels.tools.tools import add_constant, categorical +from statsmodels.regression.linear_model import (OLS, WLS, GLS, yule_walker, + burg) +from statsmodels.datasets import longley +from scipy.stats import t as student_t + +DECIMAL_4 = 4 +DECIMAL_3 = 3 +DECIMAL_2 = 2 +DECIMAL_1 = 1 +DECIMAL_7 = 7 +DECIMAL_0 = 0 + +try: + import cvxopt # noqa:F401 + has_cvxopt = True +except ImportError: + has_cvxopt = False + +class CheckRegressionResults(object): + """ + res2 contains results from Rmodelwrap or were obtained from a statistical + packages such as R, Stata, or SAS and were written to model_results + """ + + decimal_params = DECIMAL_4 + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, + self.decimal_params) + + decimal_standarderrors = DECIMAL_4 + def test_standarderrors(self): + assert_almost_equal(self.res1.bse, self.res2.bse, + self.decimal_standarderrors) + + decimal_confidenceintervals = DECIMAL_4 + def test_confidenceintervals(self): + # NOTE: stata rounds residuals (at least) to sig digits so approx_equal + conf1 = self.res1.conf_int() + conf2 = self.res2.conf_int() + for i in range(len(conf1)): + assert_allclose(conf1[i][0], conf2[i][0], + rtol=10**-self.decimal_confidenceintervals) + assert_allclose(conf1[i][1], conf2[i][1], + rtol=10**-self.decimal_confidenceintervals) + + decimal_conf_int_subset = DECIMAL_4 + def test_conf_int_subset(self): + if len(self.res1.params) > 1: + ci1 = self.res1.conf_int(cols=(1, 2)) + ci2 = self.res1.conf_int()[1:3] + assert_almost_equal(ci1, ci2, self.decimal_conf_int_subset) + else: + pass + + decimal_scale = DECIMAL_4 + def test_scale(self): + assert_almost_equal(self.res1.scale, self.res2.scale, + self.decimal_scale) + + decimal_rsquared = DECIMAL_4 + def test_rsquared(self): + assert_almost_equal(self.res1.rsquared, self.res2.rsquared, + self.decimal_rsquared) + + decimal_rsquared_adj = DECIMAL_4 + def test_rsquared_adj(self): + assert_almost_equal(self.res1.rsquared_adj, self.res2.rsquared_adj, + self.decimal_rsquared_adj) + + def test_degrees(self): + assert_equal(self.res1.model.df_model, self.res2.df_model) + assert_equal(self.res1.model.df_resid, self.res2.df_resid) + + decimal_ess = DECIMAL_4 + def test_ess(self): + # Explained Sum of Squares + assert_almost_equal(self.res1.ess, self.res2.ess, + self.decimal_ess) + + decimal_ssr = DECIMAL_4 + def test_sumof_squaredresids(self): + assert_almost_equal(self.res1.ssr, self.res2.ssr, self.decimal_ssr) + + decimal_mse_resid = DECIMAL_4 + def test_mse_resid(self): + # Mean squared error of residuals + assert_almost_equal(self.res1.mse_model, self.res2.mse_model, + self.decimal_mse_resid) + + decimal_mse_model = DECIMAL_4 + def test_mse_model(self): + assert_almost_equal(self.res1.mse_resid, self.res2.mse_resid, + self.decimal_mse_model) + + decimal_mse_total = DECIMAL_4 + def test_mse_total(self): + assert_almost_equal(self.res1.mse_total, self.res2.mse_total, + self.decimal_mse_total, + err_msg="Test class %s" % self) + + decimal_fvalue = DECIMAL_4 + def test_fvalue(self): + # didn't change this, not sure it should complain -inf not equal -inf + # if not (np.isinf(self.res1.fvalue) and np.isinf(self.res2.fvalue)): + assert_almost_equal(self.res1.fvalue, self.res2.fvalue, + self.decimal_fvalue) + + decimal_loglike = DECIMAL_4 + def test_loglike(self): + assert_almost_equal(self.res1.llf, self.res2.llf, self.decimal_loglike) + + decimal_aic = DECIMAL_4 + def test_aic(self): + assert_almost_equal(self.res1.aic, self.res2.aic, self.decimal_aic) + + decimal_bic = DECIMAL_4 + def test_bic(self): + assert_almost_equal(self.res1.bic, self.res2.bic, self.decimal_bic) + + decimal_pvalues = DECIMAL_4 + def test_pvalues(self): + assert_almost_equal(self.res1.pvalues, self.res2.pvalues, + self.decimal_pvalues) + + decimal_wresid = DECIMAL_4 + def test_wresid(self): + assert_almost_equal(self.res1.wresid, self.res2.wresid, + self.decimal_wresid) + + decimal_resids = DECIMAL_4 + def test_resids(self): + assert_almost_equal(self.res1.resid, self.res2.resid, + self.decimal_resids) + + decimal_norm_resids = DECIMAL_4 + def test_norm_resids(self): + assert_almost_equal(self.res1.resid_pearson, self.res2.resid_pearson, + self.decimal_norm_resids) + +# TODO: test fittedvalues and what else? + + +class TestOLS(CheckRegressionResults): + @classmethod + def setup_class(cls): + from .results.results_regression import Longley + data = longley.load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + res1 = OLS(data.endog, data.exog).fit() + res2 = Longley() + res2.wresid = res1.wresid # workaround hack + cls.res1 = res1 + cls.res2 = res2 + + res_qr = OLS(data.endog, data.exog).fit(method="qr") + + model_qr = OLS(data.endog, data.exog) + Q, R = np.linalg.qr(data.exog) + model_qr.exog_Q, model_qr.exog_R = Q, R + model_qr.normalized_cov_params = np.linalg.inv(np.dot(R.T, R)) + model_qr.rank = np.linalg.matrix_rank(R) + res_qr2 = model_qr.fit(method="qr") + + cls.res_qr = res_qr + cls.res_qr_manual = res_qr2 + + def test_eigenvalues(self): + eigenval_perc_diff = (self.res_qr.eigenvals - + self.res_qr_manual.eigenvals) + eigenval_perc_diff /= self.res_qr.eigenvals + zeros = np.zeros_like(eigenval_perc_diff) + assert_almost_equal(eigenval_perc_diff, zeros, DECIMAL_7) + + # Robust error tests. Compare values computed with SAS + def test_HC0_errors(self): + # They are split up because the copied results do not have any + # DECIMAL_4 places for the last place. + assert_almost_equal(self.res1.HC0_se[:-1], + self.res2.HC0_se[:-1], DECIMAL_4) + assert_allclose(np.round(self.res1.HC0_se[-1]), + self.res2.HC0_se[-1]) + + def test_HC1_errors(self): + assert_almost_equal(self.res1.HC1_se[:-1], + self.res2.HC1_se[:-1], DECIMAL_4) + # Note: tolerance is tight; rtol=3e-7 fails while 4e-7 passes + assert_allclose(self.res1.HC1_se[-1], self.res2.HC1_se[-1], + rtol=4e-7) + + def test_HC2_errors(self): + assert_almost_equal(self.res1.HC2_se[:-1], + self.res2.HC2_se[:-1], DECIMAL_4) + # Note: tolerance is tight; rtol=4e-7 fails while 5e-7 passes + assert_allclose(self.res1.HC2_se[-1], self.res2.HC2_se[-1], + rtol=5e-7) + + def test_HC3_errors(self): + assert_almost_equal(self.res1.HC3_se[:-1], + self.res2.HC3_se[:-1], DECIMAL_4) + # Note: tolerance is tight; rtol=1e-7 fails while 1.5e-7 passes + assert_allclose(self.res1.HC3_se[-1], self.res2.HC3_se[-1], + rtol=1.5e-7) + + def test_qr_params(self): + assert_almost_equal(self.res1.params, + self.res_qr.params, 6) + + def test_qr_normalized_cov_params(self): + # todo: need assert_close + assert_almost_equal(np.ones_like(self.res1.normalized_cov_params), + self.res1.normalized_cov_params / + self.res_qr.normalized_cov_params, 5) + + def test_missing(self): + data = longley.load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + data.endog[[3, 7, 14]] = np.nan + mod = OLS(data.endog, data.exog, missing='drop') + assert_equal(mod.endog.shape[0], 13) + assert_equal(mod.exog.shape[0], 13) + + def test_rsquared_adj_overfit(self): + # Test that if df_resid = 0, rsquared_adj = 0. + # This is a regression test for user issue: + # https://github.com/statsmodels/statsmodels/issues/868 + with warnings.catch_warnings(record=True): + x = np.random.randn(5) + y = np.random.randn(5, 6) + results = OLS(x, y).fit() + rsquared_adj = results.rsquared_adj + assert_equal(rsquared_adj, np.nan) + + def test_qr_alternatives(self): + assert_allclose(self.res_qr.params, self.res_qr_manual.params, + rtol=5e-12) + + def test_norm_resid(self): + resid = self.res1.wresid + norm_resid = resid / np.sqrt(np.sum(resid**2.0) / self.res1.df_resid) + model_norm_resid = self.res1.resid_pearson + assert_almost_equal(model_norm_resid, norm_resid, DECIMAL_7) + + def test_norm_resid_zero_variance(self): + with warnings.catch_warnings(record=True): + y = self.res1.model.endog + res = OLS(y, y).fit() + assert_allclose(res.scale, 0, atol=1e-20) + assert_allclose(res.wresid, res.resid_pearson, atol=5e-11) + + +class TestRTO(CheckRegressionResults): + @classmethod + def setup_class(cls): + from .results.results_regression import LongleyRTO + data = longley.load(as_pandas=False) + res1 = OLS(data.endog, data.exog).fit() + res2 = LongleyRTO() + res2.wresid = res1.wresid # workaround hack + cls.res1 = res1 + cls.res2 = res2 + + res_qr = OLS(data.endog, data.exog).fit(method="qr") + cls.res_qr = res_qr + +class TestFtest(object): + """ + Tests f_test vs. RegressionResults + """ + @classmethod + def setup_class(cls): + data = longley.load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + cls.res1 = OLS(data.endog, data.exog).fit() + R = np.identity(7)[:-1, :] + cls.Ftest = cls.res1.f_test(R) + + def test_F(self): + assert_almost_equal(self.Ftest.fvalue, self.res1.fvalue, DECIMAL_4) + + def test_p(self): + assert_almost_equal(self.Ftest.pvalue, self.res1.f_pvalue, DECIMAL_4) + + def test_Df_denom(self): + assert_equal(self.Ftest.df_denom, self.res1.model.df_resid) + + def test_Df_num(self): + assert_equal(self.Ftest.df_num, 6) + +class TestFTest2(object): + """ + A joint test that the coefficient on + GNP = the coefficient on UNEMP and that the coefficient on + POP = the coefficient on YEAR for the Longley dataset. + + Ftest1 is from statsmodels. Results are from Rpy using R's car library. + """ + @classmethod + def setup_class(cls): + data = longley.load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + res1 = OLS(data.endog, data.exog).fit() + R2 = [[0, 1, -1, 0, 0, 0, 0], [0, 0, 0, 0, 1, -1, 0]] + cls.Ftest1 = res1.f_test(R2) + hyp = 'x2 = x3, x5 = x6' + cls.NewFtest1 = res1.f_test(hyp) + + def test_new_ftest(self): + assert_equal(self.NewFtest1.fvalue, self.Ftest1.fvalue) + + def test_fvalue(self): + assert_almost_equal(self.Ftest1.fvalue, 9.7404618732968196, DECIMAL_4) + + def test_pvalue(self): + assert_almost_equal(self.Ftest1.pvalue, 0.0056052885317493459, + DECIMAL_4) + + def test_df_denom(self): + assert_equal(self.Ftest1.df_denom, 9) + + def test_df_num(self): + assert_equal(self.Ftest1.df_num, 2) + + +class TestFtestQ(object): + """ + A joint hypothesis test that Rb = q. Coefficient tests are essentially + made up. Test values taken from Stata. + """ + @classmethod + def setup_class(cls): + data = longley.load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + res1 = OLS(data.endog, data.exog).fit() + R = np.array([[0, 1, 1, 0, 0, 0, 0], + [0, 1, 0, 1, 0, 0, 0], + [0, 1, 0, 0, 0, 0, 0], + [0, 0, 0, 0, 1, 0, 0], + [0, 0, 0, 0, 0, 1, 0]]) + q = np.array([0, 0, 0, 1, 0]) + cls.Ftest1 = res1.f_test((R, q)) + + def test_fvalue(self): + assert_almost_equal(self.Ftest1.fvalue, 70.115557, 5) + + def test_pvalue(self): + assert_almost_equal(self.Ftest1.pvalue, 6.229e-07, 10) + + def test_df_denom(self): + assert_equal(self.Ftest1.df_denom, 9) + + def test_df_num(self): + assert_equal(self.Ftest1.df_num, 5) + +class TestTtest(object): + """ + Test individual t-tests. Ie., are the coefficients significantly + different than zero. + + """ + @classmethod + def setup_class(cls): + data = longley.load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + cls.res1 = OLS(data.endog, data.exog).fit() + R = np.identity(7) + cls.Ttest = cls.res1.t_test(R) + hyp = 'x1 = 0, x2 = 0, x3 = 0, x4 = 0, x5 = 0, x6 = 0, const = 0' + cls.NewTTest = cls.res1.t_test(hyp) + + def test_new_tvalue(self): + assert_equal(self.NewTTest.tvalue, self.Ttest.tvalue) + + def test_tvalue(self): + assert_almost_equal(self.Ttest.tvalue, self.res1.tvalues, DECIMAL_4) + + def test_sd(self): + assert_almost_equal(self.Ttest.sd, self.res1.bse, DECIMAL_4) + + def test_pvalue(self): + assert_almost_equal(self.Ttest.pvalue, student_t.sf( + np.abs(self.res1.tvalues), self.res1.model.df_resid)*2, + DECIMAL_4) + + def test_df_denom(self): + assert_equal(self.Ttest.df_denom, self.res1.model.df_resid) + + def test_effect(self): + assert_almost_equal(self.Ttest.effect, self.res1.params) + +class TestTtest2(object): + """ + Tests the hypothesis that the coefficients on POP and YEAR + are equal. + + Results from RPy using 'car' package. + """ + @classmethod + def setup_class(cls): + R = np.zeros(7) + R[4:6] = [1, -1] + data = longley.load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + res1 = OLS(data.endog, data.exog).fit() + cls.Ttest1 = res1.t_test(R) + + def test_tvalue(self): + assert_almost_equal(self.Ttest1.tvalue, -4.0167754636397284, + DECIMAL_4) + + def test_sd(self): + assert_almost_equal(self.Ttest1.sd, 455.39079425195314, DECIMAL_4) + + def test_pvalue(self): + assert_almost_equal(self.Ttest1.pvalue, 2*0.0015163772380932246, + DECIMAL_4) + + def test_df_denom(self): + assert_equal(self.Ttest1.df_denom, 9) + + def test_effect(self): + assert_almost_equal(self.Ttest1.effect, -1829.2025687186533, DECIMAL_4) + +class TestGLS(object): + """ + These test results were obtained by replication with R. + """ + @classmethod + def setup_class(cls): + from .results.results_regression import LongleyGls + + data = longley.load(as_pandas=False) + exog = add_constant(np.column_stack( + (data.exog[:, 1], data.exog[:, 4])), prepend=False) + tmp_results = OLS(data.endog, exog).fit() + rho = np.corrcoef(tmp_results.resid[1:], + tmp_results.resid[:-1])[0][1] # by assumption + order = toeplitz(np.arange(16)) + sigma = rho**order + GLS_results = GLS(data.endog, exog, sigma=sigma).fit() + cls.res1 = GLS_results + cls.res2 = LongleyGls() + # attach for test_missing + cls.sigma = sigma + cls.exog = exog + cls.endog = data.endog + + def test_aic(self): + # Note: tolerance is tight; rtol=3e-3 fails while 4e-3 passes + assert_allclose(self.res1.aic+2, self.res2.aic, rtol=4e-3) + + def test_bic(self): + # Note: tolerance is tight; rtol=1e-2 fails while 1.5e-2 passes + assert_allclose(self.res1.bic, self.res2.bic, rtol=1.5e-2) + + def test_loglike(self): + assert_almost_equal(self.res1.llf, self.res2.llf, DECIMAL_0) + + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, DECIMAL_1) + + def test_resid(self): + assert_almost_equal(self.res1.resid, self.res2.resid, DECIMAL_4) + + def test_scale(self): + assert_almost_equal(self.res1.scale, self.res2.scale, DECIMAL_4) + + def test_tvalues(self): + assert_almost_equal(self.res1.tvalues, self.res2.tvalues, DECIMAL_4) + + def test_standarderrors(self): + assert_almost_equal(self.res1.bse, self.res2.bse, DECIMAL_4) + + def test_fittedvalues(self): + assert_almost_equal(self.res1.fittedvalues, self.res2.fittedvalues, + DECIMAL_4) + + def test_pvalues(self): + assert_almost_equal(self.res1.pvalues, self.res2.pvalues, DECIMAL_4) + + def test_missing(self): + endog = self.endog.copy() # copy or changes endog for other methods + endog[[4, 7, 14]] = np.nan + mod = GLS(endog, self.exog, sigma=self.sigma, missing='drop') + assert_equal(mod.endog.shape[0], 13) + assert_equal(mod.exog.shape[0], 13) + assert_equal(mod.sigma.shape, (13, 13)) + + +class TestGLS_alt_sigma(CheckRegressionResults): + """ + Test that GLS with no argument is equivalent to OLS. + """ + @classmethod + def setup_class(cls): + data = longley.load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + ols_res = OLS(data.endog, data.exog).fit() + gls_res = GLS(data.endog, data.exog).fit() + gls_res_scalar = GLS(data.endog, data.exog, sigma=1) + cls.endog = data.endog + cls.exog = data.exog + cls.res1 = gls_res + cls.res2 = ols_res + cls.res3 = gls_res_scalar +# self.res2.conf_int = self.res2.conf_int() + + def test_wrong_size_sigma_1d(self): + n = len(self.endog) + assert_raises(ValueError, GLS, self.endog, self.exog, + sigma=np.ones(n-1)) + + def test_wrong_size_sigma_2d(self): + n = len(self.endog) + assert_raises(ValueError, GLS, self.endog, self.exog, + sigma=np.ones((n-1, n-1))) + +# def check_confidenceintervals(self, conf1, conf2): +# assert_almost_equal(conf1, conf2, DECIMAL_4) + + +class TestLM(object): + + @classmethod + def setup_class(cls): + # TODO: Test HAC method + X = np.random.randn(100, 3) + b = np.ones((3, 1)) + e = np.random.randn(100, 1) + y = np.dot(X, b) + e + # Cases? + # Homoskedastic + # HC0 + cls.res1_full = OLS(y, X).fit() + cls.res1_restricted = OLS(y, X[:, 0]).fit() + + cls.res2_full = cls.res1_full.get_robustcov_results('HC0') + cls.res2_restricted = cls.res1_restricted.get_robustcov_results('HC0') + + cls.X = X + cls.Y = y + + def test_LM_homoskedastic(self): + resid = self.res1_restricted.wresid + n = resid.shape[0] + X = self.X + S = np.dot(resid, resid) / n * np.dot(X.T, X) / n + Sinv = np.linalg.inv(S) + s = np.mean(X * resid[:, None], 0) + LMstat = n * np.dot(np.dot(s, Sinv), s.T) + LMstat_OLS = self.res1_full.compare_lm_test(self.res1_restricted) + LMstat2 = LMstat_OLS[0] + assert_almost_equal(LMstat, LMstat2, DECIMAL_7) + + def test_LM_heteroskedastic_nodemean(self): + resid = self.res1_restricted.wresid + n = resid.shape[0] + X = self.X + scores = X * resid[:, None] + S = np.dot(scores.T, scores) / n + Sinv = np.linalg.inv(S) + s = np.mean(scores, 0) + LMstat = n * np.dot(np.dot(s, Sinv), s.T) + LMstat_OLS = self.res2_full.compare_lm_test(self.res2_restricted, + demean=False) + LMstat2 = LMstat_OLS[0] + assert_almost_equal(LMstat, LMstat2, DECIMAL_7) + + def test_LM_heteroskedastic_demean(self): + resid = self.res1_restricted.wresid + n = resid.shape[0] + X = self.X + scores = X * resid[:, None] + scores_demean = scores - scores.mean(0) + S = np.dot(scores_demean.T, scores_demean) / n + Sinv = np.linalg.inv(S) + s = np.mean(scores, 0) + LMstat = n * np.dot(np.dot(s, Sinv), s.T) + LMstat_OLS = self.res2_full.compare_lm_test(self.res2_restricted) + LMstat2 = LMstat_OLS[0] + assert_almost_equal(LMstat, LMstat2, DECIMAL_7) + + def test_LM_heteroskedastic_LRversion(self): + resid = self.res1_restricted.wresid + resid_full = self.res1_full.wresid + n = resid.shape[0] + X = self.X + scores = X * resid[:, None] + s = np.mean(scores, 0) + scores = X * resid_full[:, None] + S = np.dot(scores.T, scores) / n + Sinv = np.linalg.inv(S) + LMstat = n * np.dot(np.dot(s, Sinv), s.T) + LMstat_OLS = self.res2_full.compare_lm_test(self.res2_restricted, + use_lr=True) + LMstat2 = LMstat_OLS[0] + assert_almost_equal(LMstat, LMstat2, DECIMAL_7) + + + def test_LM_nonnested(self): + assert_raises(ValueError, self.res2_restricted.compare_lm_test, + self.res2_full) + + +class TestOLS_GLS_WLS_equivalence(object): + + @classmethod + def setup_class(cls): + data = longley.load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + y = data.endog + X = data.exog + n = y.shape[0] + w = np.ones(n) + cls.results = [] + cls.results.append(OLS(y, X).fit()) + cls.results.append(WLS(y, X, w).fit()) + cls.results.append(GLS(y, X, 100*w).fit()) + cls.results.append(GLS(y, X, np.diag(0.1*w)).fit()) + + def test_ll(self): + llf = np.array([r.llf for r in self.results]) + llf_1 = np.ones_like(llf) * self.results[0].llf + assert_almost_equal(llf, llf_1, DECIMAL_7) + + ic = np.array([r.aic for r in self.results]) + ic_1 = np.ones_like(ic) * self.results[0].aic + assert_almost_equal(ic, ic_1, DECIMAL_7) + + ic = np.array([r.bic for r in self.results]) + ic_1 = np.ones_like(ic) * self.results[0].bic + assert_almost_equal(ic, ic_1, DECIMAL_7) + + def test_params(self): + params = np.array([r.params for r in self.results]) + params_1 = np.array([self.results[0].params] * len(self.results)) + assert_allclose(params, params_1) + + def test_ss(self): + bse = np.array([r.bse for r in self.results]) + bse_1 = np.array([self.results[0].bse] * len(self.results)) + assert_allclose(bse, bse_1) + + def test_rsquared(self): + rsquared = np.array([r.rsquared for r in self.results]) + rsquared_1 = np.array([self.results[0].rsquared] * len(self.results)) + assert_almost_equal(rsquared, rsquared_1, DECIMAL_7) + + +class TestGLS_WLS_equivalence(TestOLS_GLS_WLS_equivalence): + # reuse test methods + + @classmethod + def setup_class(cls): + data = longley.load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + y = data.endog + X = data.exog + n = y.shape[0] + np.random.seed(5) + w = np.random.uniform(0.5, 1, n) + w_inv = 1. / w + cls.results = [] + cls.results.append(WLS(y, X, w).fit()) + cls.results.append(WLS(y, X, 0.01 * w).fit()) + cls.results.append(GLS(y, X, 100 * w_inv).fit()) + cls.results.append(GLS(y, X, np.diag(0.1 * w_inv)).fit()) + + +class TestNonFit(object): + @classmethod + def setup_class(cls): + data = longley.load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + cls.endog = data.endog + cls.exog = data.exog + cls.ols_model = OLS(data.endog, data.exog) + + def test_df_resid(self): + df_resid = self.endog.shape[0] - self.exog.shape[1] + assert_equal(self.ols_model.df_resid, long(9)) + + +class TestWLS_CornerCases(object): + @classmethod + def setup_class(cls): + cls.exog = np.ones((1,)) + cls.endog = np.ones((1,)) + weights = 1 + cls.wls_res = WLS(cls.endog, cls.exog, weights=weights).fit() + + def test_wrong_size_weights(self): + weights = np.ones((10, 10)) + assert_raises(ValueError, WLS, self.endog, self.exog, weights=weights) + + +class TestWLSExogWeights(CheckRegressionResults): + # Test WLS with Greene's credit card data + # reg avgexp age income incomesq ownrent [aw=1/incomesq] + @classmethod + def setup_class(cls): + from .results.results_regression import CCardWLS + from statsmodels.datasets.ccard import load + dta = load(as_pandas=False) + + dta.exog = add_constant(dta.exog, prepend=False) + nobs = 72. + + weights = 1 / dta.exog[:, 2] + # for comparison with stata analytic weights + scaled_weights = ((weights * nobs) / weights.sum()) + + cls.res1 = WLS(dta.endog, dta.exog, weights=scaled_weights).fit() + cls.res2 = CCardWLS() + cls.res2.wresid = scaled_weights ** .5 * cls.res2.resid + + # correction because we use different definition for loglike/llf + corr_ic = 2 * (cls.res1.llf - cls.res2.llf) + cls.res2.aic -= corr_ic + cls.res2.bic -= corr_ic + cls.res2.llf += 0.5 * np.sum(np.log(cls.res1.model.weights)) + + +def test_wls_example(): + # example from the docstring, there was a note about a bug, should + # be fixed now + Y = [1, 3, 4, 5, 2, 3, 4] + X = lrange(1, 8) + X = add_constant(X, prepend=False) + wls_model = WLS(Y, X, weights=lrange(1, 8)).fit() + # taken from R lm.summary + assert_almost_equal(wls_model.fvalue, 0.127337843215, 6) + assert_almost_equal(wls_model.scale, 2.44608530786**2, 6) + + +def test_wls_tss(): + y = np.array([22, 22, 22, 23, 23, 23]) + X = [[1, 0], [1, 0], [1, 1], [0, 1], [0, 1], [0, 1]] + + ols_mod = OLS(y, add_constant(X, prepend=False)).fit() + + yw = np.array([22, 22, 23.]) + Xw = [[1, 0], [1, 1], [0, 1]] + w = np.array([2, 1, 3.]) + + wls_mod = WLS(yw, add_constant(Xw, prepend=False), weights=w).fit() + assert_equal(ols_mod.centered_tss, wls_mod.centered_tss) + + +class TestWLSScalarVsArray(CheckRegressionResults): + @classmethod + def setup_class(cls): + from statsmodels.datasets.longley import load + dta = load(as_pandas=False) + dta.exog = add_constant(dta.exog, prepend=True) + wls_scalar = WLS(dta.endog, dta.exog, weights=1./3).fit() + weights = [1/3.] * len(dta.endog) + wls_array = WLS(dta.endog, dta.exog, weights=weights).fit() + cls.res1 = wls_scalar + cls.res2 = wls_array + +#class TestWLS_GLS(CheckRegressionResults): +# @classmethod +# def setup_class(cls): +# from statsmodels.datasets.ccard import load +# data = load(as_pandas=False) +# cls.res1 = WLS(data.endog, data.exog, weights = 1/data.exog[:,2]).fit() +# cls.res2 = GLS(data.endog, data.exog, sigma = data.exog[:,2]).fit() +# +# def check_confidenceintervals(self, conf1, conf2): +# assert_almost_equal(conf1, conf2(), DECIMAL_4) + + +def test_wls_missing(): + from statsmodels.datasets.ccard import load + data = load(as_pandas=False) + endog = data.endog + endog[[10, 25]] = np.nan + mod = WLS(data.endog, data.exog, weights=1 / data.exog[:, 2], + missing='drop') + assert_equal(mod.endog.shape[0], 70) + assert_equal(mod.exog.shape[0], 70) + assert_equal(mod.weights.shape[0], 70) + + +class TestWLS_OLS(CheckRegressionResults): + @classmethod + def setup_class(cls): + data = longley.load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + cls.res1 = OLS(data.endog, data.exog).fit() + cls.res2 = WLS(data.endog, data.exog).fit() + + def check_confidenceintervals(self, conf1, conf2): + assert_almost_equal(conf1, conf2(), DECIMAL_4) + + +class TestGLS_OLS(CheckRegressionResults): + @classmethod + def setup_class(cls): + data = longley.load(as_pandas=False) + data.exog = add_constant(data.exog, prepend=False) + cls.res1 = GLS(data.endog, data.exog).fit() + cls.res2 = OLS(data.endog, data.exog).fit() + + def check_confidenceintervals(self, conf1, conf2): + assert_almost_equal(conf1, conf2(), DECIMAL_4) + +# TODO: test AR +# why the two-stage in AR? +# class test_ar(object): +# from statsmodels.datasets.sunspots import load +# data = load(as_pandas=False) +# model = AR(data.endog, rho=4).fit() +# R_res = RModel(data.endog, aic="FALSE", order_max=4)# + +# def test_params(self): +# assert_almost_equal(self.model.rho, +# pass + +# def test_order(self): +# In R this can be defined or chosen by minimizing the AIC if aic=True +# pass + + +class TestYuleWalker(object): + @classmethod + def setup_class(cls): + from statsmodels.datasets.sunspots import load + data = load(as_pandas=False) + cls.rho, cls.sigma = yule_walker(data.endog, order=4, + method="mle") + cls.R_params = [1.2831003105694765, -0.45240924374091945, + -0.20770298557575195, 0.047943648089542337] + + def test_params(self): + assert_almost_equal(self.rho, self.R_params, DECIMAL_4) + + +class TestDataDimensions(CheckRegressionResults): + @classmethod + def setup_class(cls): + np.random.seed(54321) + cls.endog_n_ = np.random.uniform(0, 20, size=30) + cls.endog_n_one = cls.endog_n_[:, None] + cls.exog_n_ = np.random.uniform(0, 20, size=30) + cls.exog_n_one = cls.exog_n_[:, None] + cls.degen_exog = cls.exog_n_one[:-1] + cls.mod1 = OLS(cls.endog_n_one, cls.exog_n_one) + cls.mod1.df_model += 1 + cls.res1 = cls.mod1.fit() + # Note that these are created for every subclass.. + # A little extra overhead probably + cls.mod2 = OLS(cls.endog_n_one, cls.exog_n_one) + cls.mod2.df_model += 1 + cls.res2 = cls.mod2.fit() + + def check_confidenceintervals(self, conf1, conf2): + assert_almost_equal(conf1, conf2(), DECIMAL_4) + + +class TestGLS_large_data(TestDataDimensions): + @classmethod + def setup_class(cls): + super(TestGLS_large_data, cls).setup_class() + nobs = 1000 + y = np.random.randn(nobs, 1) + X = np.random.randn(nobs, 20) + sigma = np.ones_like(y) + cls.gls_res = GLS(y, X, sigma=sigma).fit() + cls.gls_res_scalar = GLS(y, X, sigma=1).fit() + cls.gls_res_none = GLS(y, X).fit() + cls.ols_res = OLS(y, X).fit() + + def test_large_equal_params(self): + assert_almost_equal(self.ols_res.params, self.gls_res.params, DECIMAL_7) + + def test_large_equal_loglike(self): + assert_almost_equal(self.ols_res.llf, self.gls_res.llf, DECIMAL_7) + + def test_large_equal_params_none(self): + assert_almost_equal(self.gls_res.params, self.gls_res_none.params, + DECIMAL_7) + + +class TestNxNx(TestDataDimensions): + @classmethod + def setup_class(cls): + super(TestNxNx, cls).setup_class() + cls.mod2 = OLS(cls.endog_n_, cls.exog_n_) + cls.mod2.df_model += 1 + cls.res2 = cls.mod2.fit() + + +class TestNxOneNx(TestDataDimensions): + @classmethod + def setup_class(cls): + super(TestNxOneNx, cls).setup_class() + cls.mod2 = OLS(cls.endog_n_one, cls.exog_n_) + cls.mod2.df_model += 1 + cls.res2 = cls.mod2.fit() + + +class TestNxNxOne(TestDataDimensions): + @classmethod + def setup_class(cls): + super(TestNxNxOne, cls).setup_class() + cls.mod2 = OLS(cls.endog_n_, cls.exog_n_one) + cls.mod2.df_model += 1 + cls.res2 = cls.mod2.fit() + + +def test_bad_size(): + np.random.seed(54321) + data = np.random.uniform(0, 20, 31) + assert_raises(ValueError, OLS, data, data[1:]) + + +def test_const_indicator(): + np.random.seed(12345) + X = np.random.randint(0, 3, size=30) + X = categorical(X, drop=True) + y = np.dot(X, [1., 2., 3.]) + np.random.normal(size=30) + resc = OLS(y, add_constant(X[:, 1:], prepend=True)).fit() + res = OLS(y, X, hasconst=True).fit() + assert_almost_equal(resc.rsquared, res.rsquared, 12) + assert res.model.data.k_constant == 1 + assert resc.model.data.k_constant == 1 + + +def test_fvalue_const_only(): + np.random.seed(12345) + x = np.random.randint(0, 3, size=30) + x = categorical(x, drop=True) + x[:, 0] = 1 + y = np.dot(x, [1., 2., 3.]) + np.random.normal(size=30) + res = OLS(y, x, hasconst=True).fit(cov_type='HC1') + assert not np.isnan(res.fvalue) + + +def test_conf_int_single_regressor(): + # GH#706 single-regressor model (i.e. no intercept) with 1D exog + # should get passed to DataFrame for conf_int + y = pandas.Series(np.random.randn(10)) + x = pandas.Series(np.ones(10)) + res = OLS(y, x).fit() + conf_int = res.conf_int() + np.testing.assert_equal(conf_int.shape, (1, 2)) + np.testing.assert_(isinstance(conf_int, pandas.DataFrame)) + + +def test_summary_as_latex(): + # GH#734 + import re + dta = longley.load_pandas() + X = dta.exog + X["constant"] = 1 + y = dta.endog + res = OLS(y, X).fit() + with pytest.warns(UserWarning): + table = res.summary().as_latex() + # replace the date and time + table = re.sub("(?<=\n\\\\textbf\\{Date:\\} &).+?&", + " Sun, 07 Apr 2013 &", table) + table = re.sub("(?<=\n\\\\textbf\\{Time:\\} &).+?&", + " 13:46:07 &", table) + + expected = """\\begin{center} +\\begin{tabular}{lclc} +\\toprule +\\textbf{Dep. Variable:} & TOTEMP & \\textbf{ R-squared: } & 0.995 \\\\ +\\textbf{Model:} & OLS & \\textbf{ Adj. R-squared: } & 0.992 \\\\ +\\textbf{Method:} & Least Squares & \\textbf{ F-statistic: } & 330.3 \\\\ +\\textbf{Date:} & Sun, 07 Apr 2013 & \\textbf{ Prob (F-statistic):} & 4.98e-10 \\\\ +\\textbf{Time:} & 13:46:07 & \\textbf{ Log-Likelihood: } & -109.62 \\\\ +\\textbf{No. Observations:} & 16 & \\textbf{ AIC: } & 233.2 \\\\ +\\textbf{Df Residuals:} & 9 & \\textbf{ BIC: } & 238.6 \\\\ +\\textbf{Df Model:} & 6 & \\textbf{ } & \\\\ +\\bottomrule +\\end{tabular} +\\begin{tabular}{lcccccc} + & \\textbf{coef} & \\textbf{std err} & \\textbf{t} & \\textbf{P$> |$t$|$} & \\textbf{[0.025} & \\textbf{0.975]} \\\\ +\\midrule +\\textbf{GNPDEFL} & 15.0619 & 84.915 & 0.177 & 0.863 & -177.029 & 207.153 \\\\ +\\textbf{GNP} & -0.0358 & 0.033 & -1.070 & 0.313 & -0.112 & 0.040 \\\\ +\\textbf{UNEMP} & -2.0202 & 0.488 & -4.136 & 0.003 & -3.125 & -0.915 \\\\ +\\textbf{ARMED} & -1.0332 & 0.214 & -4.822 & 0.001 & -1.518 & -0.549 \\\\ +\\textbf{POP} & -0.0511 & 0.226 & -0.226 & 0.826 & -0.563 & 0.460 \\\\ +\\textbf{YEAR} & 1829.1515 & 455.478 & 4.016 & 0.003 & 798.788 & 2859.515 \\\\ +\\textbf{constant} & -3.482e+06 & 8.9e+05 & -3.911 & 0.004 & -5.5e+06 & -1.47e+06 \\\\ +\\bottomrule +\\end{tabular} +\\begin{tabular}{lclc} +\\textbf{Omnibus:} & 0.749 & \\textbf{ Durbin-Watson: } & 2.559 \\\\ +\\textbf{Prob(Omnibus):} & 0.688 & \\textbf{ Jarque-Bera (JB): } & 0.684 \\\\ +\\textbf{Skew:} & 0.420 & \\textbf{ Prob(JB): } & 0.710 \\\\ +\\textbf{Kurtosis:} & 2.434 & \\textbf{ Cond. No. } & 4.86e+09 \\\\ +\\bottomrule +\\end{tabular} +%\\caption{OLS Regression Results} +\\end{center} + +Warnings: \\newline + [1] Standard Errors assume that the covariance matrix of the errors is correctly specified. \\newline + [2] The condition number is large, 4.86e+09. This might indicate that there are \\newline + strong multicollinearity or other numerical problems.""" + assert_equal(table, expected) + + +class TestRegularizedFit(object): + + # Make sure there are no problems when no variables are selected. + def test_empty_model(self): + + np.random.seed(742) + n = 100 + endog = np.random.normal(size=n) + exog = np.random.normal(size=(n, 3)) + + for cls in OLS, WLS, GLS: + model = cls(endog, exog) + result = model.fit_regularized(alpha=1000) + assert_equal(result.params, 0.) + + def test_regularized(self): + + import os + from .results import glmnet_r_results + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + data = np.loadtxt(os.path.join(cur_dir, "results", "lasso_data.csv"), + delimiter=",") + + tests = [x for x in dir(glmnet_r_results) if x.startswith("rslt_")] + + for test in tests: + + vec = getattr(glmnet_r_results, test) + + n = vec[0] + p = vec[1] + L1_wt = float(vec[2]) + lam = float(vec[3]) + params = vec[4:].astype(np.float64) + + endog = data[0:int(n), 0] + exog = data[0:int(n), 1:(int(p)+1)] + + endog = endog - endog.mean() + endog /= endog.std(ddof=1) + exog = exog - exog.mean(0) + exog /= exog.std(0, ddof=1) + + for cls in OLS, WLS, GLS: + mod = cls(endog, exog) + rslt = mod.fit_regularized(L1_wt=L1_wt, alpha=lam) + assert_almost_equal(rslt.params, params, decimal=3) + + # Smoke test for profile likeihood + mod.fit_regularized(L1_wt=L1_wt, alpha=lam, + profile_scale=True) + + def test_regularized_weights(self): + + np.random.seed(1432) + exog1 = np.random.normal(size=(100, 3)) + endog1 = exog1[:, 0] + exog1[:, 1] + np.random.normal(size=100) + exog2 = np.random.normal(size=(100, 3)) + endog2 = exog2[:, 0] + exog2[:, 1] + np.random.normal(size=100) + + exog_a = np.vstack((exog1, exog1, exog2)) + endog_a = np.concatenate((endog1, endog1, endog2)) + + # Should be equivalent to exog_a, endog_a. + exog_b = np.vstack((exog1, exog2)) + endog_b = np.concatenate((endog1, endog2)) + wgts = np.ones(200) + wgts[0:100] = 2 + sigma = np.diag(1/wgts) + + for L1_wt in 0, 0.5, 1: + for alpha in 0, 1: + mod1 = OLS(endog_a, exog_a) + rslt1 = mod1.fit_regularized(L1_wt=L1_wt, alpha=alpha) + + mod2 = WLS(endog_b, exog_b, weights=wgts) + rslt2 = mod2.fit_regularized(L1_wt=L1_wt, alpha=alpha) + + mod3 = GLS(endog_b, exog_b, sigma=sigma) + rslt3 = mod3.fit_regularized(L1_wt=L1_wt, alpha=alpha) + + assert_almost_equal(rslt1.params, rslt2.params, decimal=3) + assert_almost_equal(rslt1.params, rslt3.params, decimal=3) + + +def test_formula_missing_cat(): + # gh-805 + + import statsmodels.api as sm + from statsmodels.formula.api import ols + from patsy import PatsyError + + dta = sm.datasets.grunfeld.load_pandas().data + dta.loc[dta.index[0], 'firm'] = np.nan + + mod = ols(formula='value ~ invest + capital + firm + year', + data=dta.dropna()) + res = mod.fit() + + mod2 = ols(formula='value ~ invest + capital + firm + year', + data=dta) + res2 = mod2.fit() + + assert_almost_equal(res.params.values, res2.params.values) + + assert_raises(PatsyError, ols, 'value ~ invest + capital + firm + year', + data=dta, missing='raise') + + +def test_missing_formula_predict(): + # see 2171 + nsample = 30 + + data = np.linspace(0, 10, nsample) + null = np.array([np.nan]) + data = pandas.DataFrame({'x': np.concatenate((data, null))}) + beta = np.array([1, 0.1]) + e = np.random.normal(size=nsample+1) + data['y'] = beta[0] + beta[1] * data['x'] + e + model = OLS.from_formula('y ~ x', data=data) + fit = model.fit() + fit.predict(exog=data[:-1]) + + +def test_fvalue_implicit_constant(): + # if constant is implicit, return nan see #2444 + nobs = 100 + np.random.seed(2) + x = np.random.randn(nobs, 1) + x = ((x > 0) == [True, False]).astype(int) + y = x.sum(1) + np.random.randn(nobs) + + from statsmodels.regression.linear_model import OLS, WLS + + res = OLS(y, x).fit(cov_type='HC1') + assert_(np.isnan(res.fvalue)) + assert_(np.isnan(res.f_pvalue)) + res.summary() + + res = WLS(y, x).fit(cov_type='HC1') + assert_(np.isnan(res.fvalue)) + assert_(np.isnan(res.f_pvalue)) + res.summary() + + +def test_fvalue_only_constant(): + # if only constant in model, return nan see #3642 + nobs = 20 + np.random.seed(2) + x = np.ones(nobs) + y = np.random.randn(nobs) + + from statsmodels.regression.linear_model import OLS, WLS + + res = OLS(y, x).fit(cov_type='hac', cov_kwds={'maxlags': 3}) + assert_(np.isnan(res.fvalue)) + assert_(np.isnan(res.f_pvalue)) + res.summary() + + res = WLS(y, x).fit(cov_type='HC1') + assert_(np.isnan(res.fvalue)) + assert_(np.isnan(res.f_pvalue)) + res.summary() + + +def test_ridge(): + n = 100 + p = 5 + np.random.seed(3132) + xmat = np.random.normal(size=(n, p)) + yvec = xmat.sum(1) + np.random.normal(size=n) + + v = np.ones(p) + v[0] = 0 + + for a in (0, 1, 10): + for alpha in (a, a*np.ones(p), a*v): + model1 = OLS(yvec, xmat) + result1 = model1._fit_ridge(alpha=alpha) + model2 = OLS(yvec, xmat) + result2 = model2.fit_regularized(alpha=alpha, L1_wt=0) + assert_allclose(result1.params, result2.params) + model3 = OLS(yvec, xmat) + result3 = model3.fit_regularized(alpha=alpha, L1_wt=1e-10) + assert_allclose(result1.params, result3.params) + + fv1 = result1.fittedvalues + fv2 = np.dot(xmat, result1.params) + assert_allclose(fv1, fv2) + + +def test_regularized_refit(): + n = 100 + p = 5 + np.random.seed(3132) + xmat = np.random.normal(size=(n, p)) + # covariates 0 and 2 matter + yvec = xmat[:, 0] + xmat[:, 2] + np.random.normal(size=n) + model1 = OLS(yvec, xmat) + result1 = model1.fit_regularized(alpha=2., L1_wt=0.5, refit=True) + model2 = OLS(yvec, xmat[:, [0, 2]]) + result2 = model2.fit() + ii = [0, 2] + assert_allclose(result1.params[ii], result2.params) + assert_allclose(result1.bse[ii], result2.bse) + + +def test_regularized_predict(): + n = 100 + p = 5 + np.random.seed(3132) + xmat = np.random.normal(size=(n, p)) + yvec = xmat.sum(1) + np.random.normal(size=n) + wgt = np.random.uniform(1, 2, n) + + for klass in WLS, GLS: + model1 = klass(yvec, xmat, weights=wgt) + result1 = model1.fit_regularized(alpha=2., L1_wt=0.5, refit=True) + + params = result1.params + fittedvalues = np.dot(xmat, params) + pr = model1.predict(result1.params) + assert_allclose(fittedvalues, pr) + assert_allclose(result1.fittedvalues, pr) + + pr = result1.predict() + assert_allclose(fittedvalues, pr) + +def test_regularized_options(): + n = 100 + p = 5 + np.random.seed(3132) + xmat = np.random.normal(size=(n, p)) + yvec = xmat.sum(1) + np.random.normal(size=n) + model1 = OLS(yvec - 1, xmat) + result1 = model1.fit_regularized(alpha=1., L1_wt=0.5) + model2 = OLS(yvec, xmat, offset=1) + result2 = model2.fit_regularized(alpha=1., L1_wt=0.5, + start_params=np.zeros(5)) + assert_allclose(result1.params, result2.params) + + +def test_burg(): + rnd = np.random.RandomState(12345) + e = rnd.randn(10001) + y = e[1:] + 0.5 * e[:-1] + # R, ar.burg + expected = [ + [0.3909931], + [0.4602607, -0.1771582], + [0.47473245, -0.21475602, 0.08168813], + [0.4787017, -0.2251910, 0.1047554, -0.0485900], + [0.47975462, - 0.22746106, 0.10963527, -0.05896347, 0.02167001] + ] + + for i in range(1, 6): + ar, _ = burg(y, i) + assert_allclose(ar, expected[i - 1], atol=1e-6) + as_nodemean, _ = burg(1 + y, i, False) + assert np.all(ar != as_nodemean) + + +def test_burg_errors(): + with pytest.raises(ValueError): + burg(np.ones((100, 2))) + with pytest.raises(ValueError): + burg(np.random.randn(100), 0) + with pytest.raises(ValueError): + burg(np.random.randn(100), 'apple') + + +@pytest.mark.skipif(not has_cvxopt, reason="sqrt_lasso requires cvxopt") +def test_sqrt_lasso(): + + np.random.seed(234923) + + # Based on the example in the Belloni paper + n = 100 + p = 500 + ii = np.arange(p) + cx = 0.5 ** np.abs(np.subtract.outer(ii, ii)) + cxr = np.linalg.cholesky(cx) + + x = np.dot(np.random.normal(size=(n, p)), cxr.T) + b = np.zeros(p) + b[0:5] = [1, 1, 1, 1, 1] + + from scipy.stats.distributions import norm + alpha = 1.1 * np.sqrt(n) * norm.ppf(1 - 0.05 / (2 * p)) + + # Use very low noise level for a unit test + y = np.dot(x, b) + 0.25 * np.random.normal(size=n) + + # At low noise levels, the sqrt lasso should be around a + # factor of 3 from the oracle without refit, and should + # almost equal the oracle with refit. + expected_oracle = {False: 3, True: 1} + + # Used for regression testing + expected_params = {False: np.r_[0.87397122, 0.96051874, 0.9905915 , 0.93868953, 0.90771773], + True: np.r_[0.95114241, 1.0302987 , 1.01723074, 0.97587343, 0.99846403]} + + for refit in False, True: + + rslt = OLS(y, x).fit_regularized(method="sqrt_lasso", alpha=alpha, refit=refit) + err = rslt.params - b + numer = np.sqrt(np.dot(err, np.dot(cx, err))) + + oracle = OLS(y, x[:, 0:5]).fit() + oracle_err = np.zeros(p) + oracle_err[0:5] = oracle.params - b[0:5] + denom = np.sqrt(np.dot(oracle_err, np.dot(cx, oracle_err))) + + # Check performance relative to oracle, should be around + assert_allclose(numer / denom, expected_oracle[refit], + rtol=0.5, atol=0.1) + + # Regression test the parameters + assert_allclose(rslt.params[0:5], expected_params[refit], + rtol=1e-5, atol=1e-5) diff --git a/statsmodels/regression/tests/test_robustcov.py b/statsmodels/regression/tests/test_robustcov.py new file mode 100644 index 0000000..b93c049 --- /dev/null +++ b/statsmodels/regression/tests/test_robustcov.py @@ -0,0 +1,920 @@ +# -*- coding: utf-8 -*- +"""Testing OLS robust covariance matrices against STATA + +Created on Mon Oct 28 15:25:14 2013 + +Author: Josef Perktold +""" + +import pytest +import numpy as np +from scipy import stats + +from numpy.testing import (assert_allclose, assert_equal, assert_warns, + assert_raises) + + +from statsmodels.regression.linear_model import OLS, WLS +import statsmodels.stats.sandwich_covariance as sw +from statsmodels.tools.tools import add_constant +from statsmodels.datasets import macrodata +from statsmodels.tools.sm_exceptions import InvalidTestWarning + +from .results import results_macro_ols_robust as res +from .results import results_grunfeld_ols_robust_cluster as res2 +# TODO: implement test_hac_simple + + +class CheckOLSRobust(object): + + def test_basic(self): + res1 = self.res1 + res2 = self.res2 + rtol = getattr(self, 'rtol', 1e-10) + assert_allclose(res1.params, res2.params, rtol=rtol) + assert_allclose(self.bse_robust, res2.bse, rtol=rtol) + assert_allclose(self.cov_robust, res2.cov, rtol=rtol) + + @pytest.mark.smoke + def test_t_test_summary(self): + res1 = self.res1 + mat = np.eye(len(res1.params)) + # TODO: if the t_test call is expensive, possibly make it a fixture? + tt = res1.t_test(mat, cov_p=self.cov_robust) + + tt.summary() + + @pytest.mark.smoke + def test_t_test_summary_frame(self): + res1 = self.res1 + mat = np.eye(len(res1.params)) + tt = res1.t_test(mat, cov_p=self.cov_robust) + + tt.summary_frame() + + @pytest.mark.smoke + def test_f_test_summary(self): + res1 = self.res1 + mat = np.eye(len(res1.params)) + ft = res1.f_test(mat[:-1], cov_p=self.cov_robust) + + ft.summary() + + def test_tests(self): # TODO: break into well-scoped tests + # Note: differences between small (t-distribution, ddof) and large (normal) + # F statistic has no ddof correction in large, but uses F distribution (?) + res1 = self.res1 + res2 = self.res2 + rtol = getattr(self, 'rtol', 1e-10) + rtolh = getattr(self, 'rtolh', 1e-12) + mat = np.eye(len(res1.params)) + tt = res1.t_test(mat, cov_p=self.cov_robust) + # has 'effect', 'pvalue', 'sd', 'tvalue' + # TODO confint missing + assert_allclose(tt.effect, res2.params, rtol=rtol) + assert_allclose(tt.sd, res2.bse, rtol=rtol) + assert_allclose(tt.tvalue, res2.tvalues, rtol=rtol) + if self.small: + assert_allclose(tt.pvalue, res2.pvalues, rtol=5 * rtol) + else: + pval = stats.norm.sf(np.abs(tt.tvalue)) * 2 + assert_allclose(pval, res2.pvalues, rtol=5 * rtol, atol=1e-25) + + ft = res1.f_test(mat[:-1], cov_p=self.cov_robust) + if self.small: + #'df_denom', 'df_num', 'fvalue', 'pvalue' + assert_allclose(ft.fvalue, res2.F, rtol=rtol) + # f-pvalue is not directly available in Stata results, but is in ivreg2 + if hasattr(res2, 'Fp'): + assert_allclose(ft.pvalue, res2.Fp, rtol=rtol) + else: + if not getattr(self, 'skip_f', False): + dof_corr = res1.df_resid * 1. / res1.nobs + assert_allclose(ft.fvalue * dof_corr, res2.F, rtol=rtol) + + if hasattr(res2, 'df_r'): + assert_equal(ft.df_num, res2.df_m) + assert_equal(ft.df_denom, res2.df_r) + else: + # ivreg2 + assert_equal(ft.df_num, res2.Fdf1) + assert_equal(ft.df_denom, res2.Fdf2) + + +class TestOLSRobust1(CheckOLSRobust): + # compare with regress robust + + def setup(self): + res_ols = self.res1 + self.bse_robust = res_ols.HC1_se + self.cov_robust = res_ols.cov_HC1 + self.small = True + self.res2 = res.results_hc0 + + @classmethod + def setup_class(cls): + d2 = macrodata.load_pandas().data + g_gdp = 400*np.diff(np.log(d2['realgdp'].values)) + g_inv = 400*np.diff(np.log(d2['realinv'].values)) + exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1].values], prepend=False) + + cls.res1 = res_ols = OLS(g_inv, exogg).fit() + + +class TestOLSRobust2(TestOLSRobust1): + # compare with ivreg robust small + + def setup(self): + res_ols = self.res1 + self.bse_robust = res_ols.HC1_se + self.cov_robust = res_ols.cov_HC1 + self.small = True + + self.res2 = res.results_ivhc0_small + + + +class TestOLSRobust3(TestOLSRobust1): + # compare with ivreg robust (not small) + + def setup(self): + res_ols = self.res1 + self.bse_robust = res_ols.HC0_se + self.cov_robust = res_ols.cov_HC0 + self.small = False + + self.res2 = res.results_ivhc0_large + + +class TestOLSRobustHacSmall(TestOLSRobust1): + # compare with ivreg robust small + + def setup(self): + res_ols = self.res1 + cov1 = sw.cov_hac_simple(res_ols, nlags=4, use_correction=True) + se1 = sw.se_cov(cov1) + self.bse_robust = se1 + self.cov_robust = cov1 + self.small = True + + self.res2 = res.results_ivhac4_small + + + +class TestOLSRobustHacLarge(TestOLSRobust1): + # compare with ivreg robust (not small) + + def setup(self): + res_ols = self.res1 + cov1 = sw.cov_hac_simple(res_ols, nlags=4, use_correction=False) + se1 = sw.se_cov(cov1) + self.bse_robust = se1 + self.cov_robust = cov1 + self.small = False + + self.res2 = res.results_ivhac4_large + + +class CheckOLSRobustNewMixin(object): + # This uses the robust covariance as default covariance + + def test_compare(self): + rtol = getattr(self, 'rtol', 1e-10) + assert_allclose(self.cov_robust, self.cov_robust2, rtol=rtol) + assert_allclose(self.bse_robust, self.bse_robust2, rtol=rtol) + + def test_fvalue(self): + if not getattr(self, 'skip_f', False): + rtol = getattr(self, 'rtol', 1e-10) + assert_allclose(self.res1.fvalue, self.res2.F, rtol=rtol) + if hasattr(self.res2, 'Fp'): + # only available with ivreg2 + assert_allclose(self.res1.f_pvalue, self.res2.Fp, rtol=rtol) + else: + raise pytest.skip("TODO: document why this test is skipped") + + def test_confint(self): + rtol = getattr(self, 'rtol', 1e-10) + ci1 = self.res1.conf_int() + ci2 = self.res2.params_table[:,4:6] + assert_allclose(ci1, ci2, rtol=rtol) + + # check critical value + crit1 = np.diff(ci1, 1).ravel() / 2 / self.res1.bse + crit2 = np.diff(ci1, 1).ravel() / 2 / self.res1.bse + assert_allclose(crit1, crit2, rtol=12) + + + def test_ttest(self): + res1 = self.res1 + res2 = self.res2 + rtol = getattr(self, 'rtol', 1e-10) + rtolh = getattr(self, 'rtol', 1e-12) + + mat = np.eye(len(res1.params)) + tt = res1.t_test(mat, cov_p=self.cov_robust) + # has 'effect', 'pvalue', 'sd', 'tvalue' + # TODO confint missing + assert_allclose(tt.effect, res2.params, rtol=rtolh) + assert_allclose(tt.sd, res2.bse, rtol=rtol) + assert_allclose(tt.tvalue, res2.tvalues, rtol=rtolh) + assert_allclose(tt.pvalue, res2.pvalues, rtol=5 * rtol) + ci1 = tt.conf_int() + ci2 = self.res2.params_table[:,4:6] + assert_allclose(ci1, ci2, rtol=rtol) + + + def test_scale(self): + res1 = self.res1 + res2 = self.res2 + rtol = 1e-5 + # Note we always use df_resid for scale + # Stata uses nobs or df_resid for rmse, not always available in Stata + #assert_allclose(res1.scale, res2.rmse**2 * res2.N / (res2.N - res2.df_m - 1), rtol=rtol) + skip = False + if hasattr(res2, 'rss'): + scale = res2.rss / (res2.N - res2.df_m - 1) + elif hasattr(res2, 'rmse'): + scale = res2.rmse**2 + else: + skip = True + + if isinstance(res1.model, WLS): + skip = True + # Stata uses different scaling and using unweighted resid for rmse + + if not skip: + assert_allclose(res1.scale, scale, rtol=rtol) + + if not res2.vcetype == 'Newey-West': + # no rsquared in Stata + r2 = res2.r2 if hasattr(res2, 'r2') else res2.r2c + assert_allclose(res1.rsquared, r2, rtol=rtol, err_msg=str(skip)) + + + # consistency checks, not against Stata + df_resid = res1.nobs - res1.df_model - 1 + assert_equal(res1.df_resid, df_resid) + # variance of resid_pearson is 1, with ddof, and loc=0 + psum = (res1.resid_pearson**2).sum() + assert_allclose(psum, df_resid, rtol=1e-13) + + @pytest.mark.smoke + def test_summary(self): + self.res1.summary() + + +class TestOLSRobust2SmallNew(TestOLSRobust1, CheckOLSRobustNewMixin): + # compare with ivreg robust small + + def setup(self): + res_ols = self.res1.get_robustcov_results('HC1', use_t=True) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + self.bse_robust2 = res_ols.HC1_se + self.cov_robust2 = res_ols.cov_HC1 + self.small = True + self.res2 = res.results_ivhc0_small + + def test_compare(self): + #check that we get a warning using the nested compare methods + res1 = self.res1 + endog = res1.model.endog + exog = res1.model.exog[:, [0, 2]] # drop one variable + res_ols2 = OLS(endog, exog).fit() + # results from Stata + r_pval = .0307306938402991 + r_chi2 = 4.667944083588736 + r_df = 1 + assert_warns(InvalidTestWarning, res1.compare_lr_test, res_ols2) + import warnings + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + chi2, pval, df = res1.compare_lr_test(res_ols2) + assert_allclose(chi2, r_chi2, rtol=1e-11) + assert_allclose(pval, r_pval, rtol=1e-11) + assert_equal(df, r_df) + + assert_warns(InvalidTestWarning, res1.compare_f_test, res_ols2) + #fva, pval, df = res1.compare_f_test(res_ols2) + + + +class TestOLSRobustHACSmallNew(TestOLSRobust1, CheckOLSRobustNewMixin): + # compare with ivreg robust small + + def setup(self): + res_ols = self.res1.get_robustcov_results('HAC', maxlags=4, + use_correction=True, + use_t=True) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + cov1 = sw.cov_hac_simple(res_ols, nlags=4, use_correction=True) + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = True + self.res2 = res.results_ivhac4_small + + +class TestOLSRobust2LargeNew(TestOLSRobust1, CheckOLSRobustNewMixin): + # compare with ivreg robust small + + def setup(self): + res_ols = self.res1.get_robustcov_results('HC0') + res_ols.use_t = False + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + self.bse_robust2 = res_ols.HC0_se + self.cov_robust2 = res_ols.cov_HC0 + self.small = False + self.res2 = res.results_ivhc0_large + + @pytest.mark.skip(reason="not refactored yet for `large`") + def test_fvalue(self): + super(TestOLSRobust2LargeNew, self).test_fvalue() + + @pytest.mark.skip(reason="not refactored yet for `large`") + def test_confint(self): + super(TestOLSRobust2LargeNew, self).test_confint() + + +####################################################### +# cluster robust standard errors +####################################################### + + +class CheckOLSRobustCluster(CheckOLSRobust): + # compare with regress robust + + + @classmethod + def setup_class(cls): + #import pandas as pa + from statsmodels.datasets import grunfeld + + dtapa = grunfeld.data.load_pandas() + #Stata example/data seems to miss last firm + dtapa_endog = dtapa.endog[:200] + dtapa_exog = dtapa.exog[:200] + exog = add_constant(dtapa_exog[['value', 'capital']], prepend=False) + #asserts don't work for pandas + cls.res1 = OLS(dtapa_endog, exog).fit() + + firm_names, firm_id = np.unique(np.asarray(dtapa_exog[['firm']], 'S20'), + return_inverse=True) + cls.groups = firm_id + #time indicator in range(max Ti) + time = np.asarray(dtapa_exog[['year']]) + time -= time.min() + cls.time = np.squeeze(time).astype(int) + # nw_panel function requires interval bounds + cls.tidx = [(i*20, 20*(i+1)) for i in range(10)] + + + +class TestOLSRobustCluster2(CheckOLSRobustCluster, CheckOLSRobustNewMixin): + # compare with `reg cluster` + + def setup(self): + res_ols = self.res1.get_robustcov_results('cluster', + groups=self.groups, + use_correction=True, + use_t=True) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + cov1 = sw.cov_cluster(self.res1, self.groups, use_correction=True) + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = True + self.res2 = res2.results_cluster + + self.rtol = 1e-6 + self.rtolh = 1e-10 + + +class TestOLSRobustCluster2Input(CheckOLSRobustCluster, CheckOLSRobustNewMixin): + # compare with `reg cluster` + + def setup(self): + import pandas as pd + fat_array = self.groups.reshape(-1, 1) + fat_groups = pd.DataFrame(fat_array) + + res_ols = self.res1.get_robustcov_results('cluster', + groups=fat_groups, + use_correction=True, + use_t=True) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + cov1 = sw.cov_cluster(self.res1, self.groups, use_correction=True) + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = True + self.res2 = res2.results_cluster + + self.rtol = 1e-6 + self.rtolh = 1e-10 + + def test_too_many_groups(self): + long_groups = self.groups.reshape(-1, 1) + groups3 = np.hstack((long_groups, long_groups, long_groups)) + assert_raises(ValueError, self.res1.get_robustcov_results,'cluster', + groups=groups3, use_correction=True, use_t=True) + + def test_2way_dataframe(self): + import pandas as pd + long_groups = self.groups.reshape(-1, 1) + groups2 = pd.DataFrame(np.hstack((long_groups, long_groups))) + res = self.res1.get_robustcov_results( + 'cluster', groups=groups2, use_correction=True, use_t=True) + +class TestOLSRobustCluster2Fit(CheckOLSRobustCluster, CheckOLSRobustNewMixin): + # copy, past uses fit method + # compare with `reg cluster` + + def setup(self): + res_ols = self.res1.model.fit(cov_type='cluster', + cov_kwds=dict(groups=self.groups, + use_correction=True, + use_t=True)) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + cov1 = sw.cov_cluster(self.res1, self.groups, use_correction=True) + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = True + self.res2 = res2.results_cluster + + self.rtol = 1e-6 + self.rtolh = 1e-10 + + + def test_basic_inference(self): + res1 = self.res1 + res2 = self.res2 + rtol = 1e-7 + assert_allclose(res1.params, res2.params, rtol=1e-8) + assert_allclose(res1.bse, res2.bse, rtol=rtol) + assert_allclose(res1.pvalues, res2.pvalues, rtol=rtol, atol=1e-20) + ci = res2.params_table[:, 4:6] + assert_allclose(res1.conf_int(), ci, rtol=5e-7, atol=1e-20) + + +class TestOLSRobustCluster2Large(CheckOLSRobustCluster, CheckOLSRobustNewMixin): + # compare with `reg cluster` + + def setup(self): + res_ols = self.res1.get_robustcov_results('cluster', + groups=self.groups, + use_correction=False, + use_t=False, + df_correction=True) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + cov1 = sw.cov_cluster(self.res1, self.groups, use_correction=False) + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = False + self.res2 = res2.results_cluster_large + + self.skip_f = True + self.rtol = 1e-6 + self.rtolh = 1e-10 + + @pytest.mark.skip(reason="GH#1189 issuecomment-29141741") + def test_f_value(self): + super(TestOLSRobustCluster2Large, self).test_fvalue() + + +class TestOLSRobustCluster2LargeFit(CheckOLSRobustCluster, CheckOLSRobustNewMixin): + # compare with `reg cluster` + + def setup(self): + model = OLS(self.res1.model.endog, self.res1.model.exog) + #res_ols = self.res1.model.fit(cov_type='cluster', + res_ols = model.fit(cov_type='cluster', + cov_kwds=dict(groups=self.groups, + use_correction=False, + use_t=False, + df_correction=True)) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + cov1 = sw.cov_cluster(self.res1, self.groups, use_correction=False) + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = False + self.res2 = res2.results_cluster_large + + self.skip_f = True + self.rtol = 1e-6 + self.rtolh = 1e-10 + + @pytest.mark.skip(reason="GH#1189 issuecomment-29141741") + def test_fvalue(self): + super(TestOLSRobustCluster2LargeFit, self).test_fvalue() + + +class TestOLSRobustClusterGS(CheckOLSRobustCluster, CheckOLSRobustNewMixin): + # compare with `reg cluster` + + def setup(self): + res_ols = self.res1.get_robustcov_results('nw-groupsum', + time=self.time, + maxlags=4, + use_correction=False, + use_t=True) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + cov1 = sw.cov_nw_groupsum(self.res1, 4, self.time, use_correction=False) + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = True + self.res2 = res2.results_nw_groupsum4 + + self.skip_f = True + self.rtol = 1e-6 + self.rtolh = 1e-10 + + +class TestOLSRobustClusterGSFit(CheckOLSRobustCluster, CheckOLSRobustNewMixin): + # compare with `reg cluster` + + def setup(self): + res_ols = self.res1.model.fit(cov_type='nw-groupsum', + cov_kwds=dict(time=self.time, + maxlags=4, + use_correction=False, + use_t=True)) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + cov1 = sw.cov_nw_groupsum(self.res1, 4, self.time, use_correction=False) + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = True + self.res2 = res2.results_nw_groupsum4 + + self.skip_f = True + self.rtol = 1e-6 + self.rtolh = 1e-10 + + +class TestOLSRobustClusterNWP(CheckOLSRobustCluster, CheckOLSRobustNewMixin): + # compare with `reg cluster` + + def setup(self): + res_ols = self.res1.get_robustcov_results('nw-panel', + time=self.time, + maxlags=4, + use_correction='hac', + use_t=True, + df_correction=False) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + cov1 = sw.cov_nw_panel(self.res1, 4, self.tidx) + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = True + self.res2 = res2.results_nw_panel4 + + self.skip_f = True + self.rtol = 1e-6 + self.rtolh = 1e-10 + + + def test_keyword(self): + # check corrected keyword + res_ols = self.res1.get_robustcov_results('hac-panel', + time=self.time, + maxlags=4, + use_correction='hac', + use_t=True, + df_correction=False) + assert_allclose(res_ols.bse, self.res1.bse, rtol=1e-12) + + +class TestOLSRobustClusterNWPGroupsFit(CheckOLSRobustCluster, CheckOLSRobustNewMixin): + # compare with `reg cluster` + + def setup(self): + res_ols = self.res1.model.fit(cov_type='nw-panel', + cov_kwds = dict(groups=self.groups, + maxlags=4, + use_correction='hac', + use_t=True, + df_correction=False)) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + cov1 = sw.cov_nw_panel(self.res1, 4, self.tidx) + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = True + self.res2 = res2.results_nw_panel4 + + self.skip_f = True + self.rtol = 1e-6 + self.rtolh = 1e-10 + + +# TODO: low precision/agreement +class TestOLSRobustCluster2G(CheckOLSRobustCluster, CheckOLSRobustNewMixin): + # compare with `reg cluster` + + def setup(self): + res_ols = self.res1.get_robustcov_results('cluster', + groups=(self.groups, self.time), + use_correction=True, + use_t=True) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + cov1 = sw.cov_cluster_2groups(self.res1, self.groups, group2=self.time, + use_correction=True)[0] + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = True + self.res2 = res2.results_cluster_2groups_small + + self.rtol = 0.35 # only f_pvalue and confint for constant differ >rtol=0.05 + self.rtolh = 1e-10 + + + +class TestOLSRobustCluster2GLarge(CheckOLSRobustCluster, CheckOLSRobustNewMixin): + # compare with `reg cluster` + + def setup(self): + res_ols = self.res1.get_robustcov_results('cluster', + groups=(self.groups, self.time), + use_correction=False, #True, + use_t=False) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + cov1 = sw.cov_cluster_2groups(self.res1, self.groups, group2=self.time, + use_correction=False)[0] + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = False + self.res2 = res2.results_cluster_2groups_large + + self.skip_f = True + self.rtol = 1e-7 + self.rtolh = 1e-10 + + +###################################### +# WLS +###################################### + +class CheckWLSRobustCluster(CheckOLSRobust): + # compare with regress robust + + + @classmethod + def setup_class(cls): + #import pandas as pa + from statsmodels.datasets import grunfeld + + dtapa = grunfeld.data.load_pandas() + #Stata example/data seems to miss last firm + dtapa_endog = dtapa.endog[:200] + dtapa_exog = dtapa.exog[:200] + exog = add_constant(dtapa_exog[['value', 'capital']], prepend=False) + #asserts don't work for pandas + cls.res1 = WLS(dtapa_endog, exog, weights=1/dtapa_exog['value']).fit() + + firm_names, firm_id = np.unique(np.asarray(dtapa_exog[['firm']], 'S20'), + return_inverse=True) + cls.groups = firm_id + #time indicator in range(max Ti) + time = np.asarray(dtapa_exog[['year']]) + time -= time.min() + cls.time = np.squeeze(time).astype(int) + # nw_panel function requires interval bounds + cls.tidx = [(i*20, 20*(i+1)) for i in range(10)] + + +# not available yet for WLS +class TestWLSRobustCluster2(CheckWLSRobustCluster, CheckOLSRobustNewMixin): + # compare with `reg cluster` + + def setup(self): + res_ols = self.res1.get_robustcov_results('cluster', + groups=self.groups, + use_correction=True, + use_t=True) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + cov1 = sw.cov_cluster(self.res1, self.groups, use_correction=True) + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = True + self.res2 = res2.results_cluster_wls_small + + self.rtol = 1e-6 + self.rtolh = 1e-10 + + +# not available yet for WLS +class TestWLSRobustCluster2Large(CheckWLSRobustCluster, CheckOLSRobustNewMixin): + # compare with `reg cluster` + + def setup(self): + res_ols = self.res1.get_robustcov_results('cluster', + groups=self.groups, + use_correction=False, + use_t=False, + df_correction=True) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + cov1 = sw.cov_cluster(self.res1, self.groups, use_correction=False) + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = False + self.res2 = res2.results_cluster_wls_large + + self.skip_f = True + self.rtol = 1e-6 + self.rtolh = 1e-10 + +class TestWLSRobustSmall(CheckWLSRobustCluster, CheckOLSRobustNewMixin): + # compare with `reg cluster` + + def setup(self): + res_ols = self.res1.get_robustcov_results('HC1', + use_t=True) + self.res3 = self.res1 + self.res1 = res_ols + self.bse_robust = res_ols.bse + self.cov_robust = res_ols.cov_params() + #TODO: check standalone function + #cov1 = sw.cov_cluster(self.res1, self.groups, use_correction=False) + cov1 = res_ols.cov_HC1 + se1 = sw.se_cov(cov1) + self.bse_robust2 = se1 + self.cov_robust2 = cov1 + self.small = True + self.res2 = res2.results_hc1_wls_small + + self.skip_f = True + self.rtol = 1e-6 + self.rtolh = 1e-10 + + +class TestWLSOLSRobustSmall(object): + + @classmethod + def setup_class(cls): + #import pandas as pa + from statsmodels.datasets import grunfeld + + dtapa = grunfeld.data.load_pandas() + #Stata example/data seems to miss last firm + dtapa_endog = dtapa.endog[:200] + dtapa_exog = dtapa.exog[:200] + exog = add_constant(dtapa_exog[['value', 'capital']], prepend=False) + #asserts don't work for pandas + cls.res_wls = WLS(dtapa_endog, exog, weights=1/dtapa_exog['value']).fit() + w_sqrt = 1 / np.sqrt(np.asarray(dtapa_exog['value'])) + cls.res_ols = OLS(dtapa_endog * w_sqrt, + np.asarray(exog) * w_sqrt[:, None]).fit() # hasconst=True ? + + firm_names, firm_id = np.unique(np.asarray(dtapa_exog[['firm']], 'S20'), + return_inverse=True) + cls.groups = firm_id + #time indicator in range(max Ti) + time = np.asarray(dtapa_exog[['year']]) + time -= time.min() + cls.time = np.squeeze(time).astype(int) + # nw_panel function requires interval bounds + cls.tidx = [(i*20, 20*(i+1)) for i in range(10)] + + + def test_all(self): + all_cov = [('HC0', dict(use_t=True)), + ('HC1', dict(use_t=True)), + ('HC2', dict(use_t=True)), + ('HC3', dict(use_t=True))] + + # fvalue are not the same, see #1212 + #res_ols = self.res_ols + #res_wls = self.res_wls + #assert_allclose(res_ols.fvalue, res_wls.fvalue, rtol=1e-13) + #assert_allclose(res_ols.f_pvalue, res_wls.f_pvalue, rtol=1e-13) + + for cov_type, kwds in all_cov: + res1 = self.res_ols.get_robustcov_results(cov_type, **kwds) + res2 = self.res_wls.get_robustcov_results(cov_type, **kwds) + assert_allclose(res1.params, res2.params, rtol=1e-13) + assert_allclose(res1.cov_params(), res2.cov_params(), rtol=1e-13) + assert_allclose(res1.bse, res2.bse, rtol=1e-13) + assert_allclose(res1.pvalues, res2.pvalues, rtol=1e-13) + #Note: Fvalue doesn't match up, difference in calculation ? + # The only difference should be in the constant detection + #assert_allclose(res1.fvalue, res2.fvalue, rtol=1e-13) + #assert_allclose(res1.f_pvalue, res2.f_pvalue, rtol=1e-13) + mat = np.eye(len(res1.params)) + ft1 = res1.f_test(mat) + ft2 = res2.f_test(mat) + assert_allclose(ft1.fvalue, ft2.fvalue, rtol=1e-12) + assert_allclose(ft1.pvalue, ft2.pvalue, rtol=5e-11) + + def test_fixed_scale(self): + cov_type = 'fixed_scale' + kwds = {} + res1 = self.res_ols.get_robustcov_results(cov_type, **kwds) + res2 = self.res_wls.get_robustcov_results(cov_type, **kwds) + assert_allclose(res1.params, res2.params, rtol=1e-13) + assert_allclose(res1.cov_params(), res2.cov_params(), rtol=1e-13) + assert_allclose(res1.bse, res2.bse, rtol=1e-13) + assert_allclose(res1.pvalues, res2.pvalues, rtol=1e-12) + + tt = res2.t_test(np.eye(len(res2.params)), + cov_p=res2.normalized_cov_params) + assert_allclose(res2.cov_params(), res2.normalized_cov_params, + rtol=1e-13) + assert_allclose(res2.bse, tt.sd, rtol=1e-13) + assert_allclose(res2.pvalues, tt.pvalue, rtol=1e-13) + assert_allclose(res2.tvalues, tt.tvalue, rtol=1e-13) + + # using cov_type in fit + mod = self.res_wls.model + mod3 = WLS(mod.endog, mod.exog, weights=mod.weights) + res3 = mod3.fit(cov_type=cov_type, cov_kwds=kwds) + tt = res3.t_test(np.eye(len(res3.params)), + cov_p=res3.normalized_cov_params) + assert_allclose(res3.cov_params(), res3.normalized_cov_params, + rtol=1e-13) + assert_allclose(res3.bse, tt.sd, rtol=1e-13) + assert_allclose(res3.pvalues, tt.pvalue, rtol=1e-13) + assert_allclose(res3.tvalues, tt.tvalue, rtol=1e-13) + + +def test_cov_type_fixed_scale(): + # this is a unit test from scipy curvefit for `absolute_sigma` keyword + xdata = np.array([0, 1, 2, 3, 4, 5]) + ydata = np.array([1, 1, 5, 7, 8, 12]) + sigma = np.array([1, 2, 1, 2, 1, 2]) + + xdata = np.column_stack((xdata, np.ones(len(xdata)))) + weights = 1. / sigma**2 + + res = WLS(ydata, xdata, weights=weights).fit() + assert_allclose(res.bse, [0.20659803, 0.57204404], rtol=1e-3) + + res = WLS(ydata, xdata, weights=weights).fit() + assert_allclose(res.bse, [0.20659803, 0.57204404], rtol=1e-3) + + res = WLS(ydata, xdata, weights=weights).fit(cov_type='fixed scale') + assert_allclose(res.bse, [0.30714756, 0.85045308], rtol=1e-3) + + res = WLS(ydata, xdata, weights=weights / 9.).fit(cov_type='fixed scale') + assert_allclose(res.bse, [3*0.30714756, 3*0.85045308], rtol=1e-3) + + res = WLS(ydata, xdata, weights=weights).fit(cov_type='fixed scale', + cov_kwds={'scale':9}) + assert_allclose(res.bse, [3*0.30714756, 3*0.85045308], rtol=1e-3) diff --git a/statsmodels/regression/tests/test_theil.py b/statsmodels/regression/tests/test_theil.py new file mode 100644 index 0000000..da10fea --- /dev/null +++ b/statsmodels/regression/tests/test_theil.py @@ -0,0 +1,368 @@ +# -*- coding: utf-8 -*- +""" +Created on Mon May 05 17:29:56 2014 + +Author: Josef Perktold +""" + +import os + +import numpy as np +import pandas as pd +import pytest + +from numpy.testing import assert_allclose + +from statsmodels.regression.linear_model import OLS, GLS + +from statsmodels.sandbox.regression.penalized import TheilGLS + + +class TestTheilTextile(object): + + @classmethod + def setup_class(cls): + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + filepath = os.path.join(cur_dir, "results", + "theil_textile_predict.csv") + cls.res_predict = pd.read_csv(filepath, sep=",") + + names = "year lconsump lincome lprice".split() + + data = np.array('''\ + 1923 1.99651 1.98543 2.00432 + 1924 1.99564 1.99167 2.00043 + 1925 2 2 2 + 1926 2.04766 2.02078 1.95713 + 1927 2.08707 2.02078 1.93702 + 1928 2.07041 2.03941 1.95279 + 1929 2.08314 2.04454 1.95713 + 1930 2.13354 2.05038 1.91803 + 1931 2.18808 2.03862 1.84572 + 1932 2.18639 2.02243 1.81558 + 1933 2.20003 2.00732 1.78746 + 1934 2.14799 1.97955 1.79588 + 1935 2.13418 1.98408 1.80346 + 1936 2.22531 1.98945 1.72099 + 1937 2.18837 2.0103 1.77597 + 1938 2.17319 2.00689 1.77452 + 1939 2.2188 2.0162 1.78746'''.split(), float).reshape(-1, 4) + + + endog = data[:, 1] + # constant at the end to match Stata + exog = np.column_stack((data[:, 2:], np.ones(endog.shape[0]))) + + #prior(lprice -0.7 0.15 lincome 1 0.15) cov(lprice lincome -0.01) + r_matrix = np.array([[1, 0, 0], [0, 1, 0]]) + r_mean = [1, -0.7] + + cov_r = np.array([[0.15**2, -0.01], [-0.01, 0.15**2]]) + mod = TheilGLS(endog, exog, r_matrix, q_matrix=r_mean, sigma_prior=cov_r) + cls.res1 = mod.fit(cov_type='data-prior', use_t=True) + #cls.res1._cache['scale'] = 0.0001852252884817586 # from tg_mixed + cls.res1._cache['scale'] = 0.00018334123641580062 # from OLS + from .results import results_theil_textile as resmodule + cls.res2 = resmodule.results_theil_textile + + + def test_basic(self): + pt = self.res2.params_table[:,:6].T + params2, bse2, tvalues2, pvalues2, ci_low, ci_upp = pt + assert_allclose(self.res1.params, params2, rtol=2e-6) + + #TODO tgmixed seems to use scale from initial OLS, not from final res + # np.sqrt(res.scale / res_ols.scale) + # see below mse_resid which is equal to scale + corr_fact = 0.9836026210570028 + corr_fact = 0.97376865041463734 + corr_fact = 1 + assert_allclose(self.res1.bse / corr_fact, bse2, rtol=2e-6) + assert_allclose(self.res1.tvalues * corr_fact, tvalues2, rtol=2e-6) + # pvalues are very small + #assert_allclose(self.res1.pvalues, pvalues2, atol=2e-6) + #assert_allclose(self.res1.pvalues, pvalues2, rtol=0.7) + ci = self.res1.conf_int() + # not scale corrected + assert_allclose(ci[:,0], ci_low, rtol=0.01) + assert_allclose(ci[:,1], ci_upp, rtol=0.01) + assert_allclose(self.res1.rsquared, self.res2.r2, rtol=2e-6) + + # Note: tgmixed is using k_exog for df_resid + corr_fact = self.res1.df_resid / self.res2.df_r + assert_allclose(np.sqrt(self.res1.mse_resid * corr_fact), + self.res2.rmse, rtol=2e-6) + + assert_allclose(self.res1.fittedvalues, + self.res_predict['fittedvalues'], atol=5e7) + + def test_other(self): + tc = self.res1.test_compatibility() + assert_allclose(np.squeeze(tc[0]), self.res2.compat, rtol=2e-6) + assert_allclose(np.squeeze(tc[1]), self.res2.pvalue, rtol=2e-6) + + frac = self.res1.share_data() + # TODO check again, I guess tgmixed uses final scale in hatmatrix + # but I'm not sure, it passed in previous version, but now we override + # scale with OLS scale + # assert_allclose(frac, self.res2.frac_sample, rtol=2e-6) + # regression tests: + assert_allclose(frac, 0.6946116246864239, rtol=2e-6) + + + def test_no_penalization(self): + res_ols = OLS(self.res1.model.endog, self.res1.model.exog).fit() + res_theil = self.res1.model.fit(pen_weight=0, cov_type='data-prior') + assert_allclose(res_theil.params, res_ols.params, rtol=1e-10) + assert_allclose(res_theil.bse, res_ols.bse, rtol=1e-10) + + @pytest.mark.smoke + def test_summary(self): + with pytest.warns(UserWarning): + self.res1.summary() + + +class CheckEquivalenceMixin(object): + + tol = {'default': (1e-4, 1e-20)} + + @classmethod + def get_sample(cls): + np.random.seed(987456) + nobs, k_vars = 200, 5 + beta = 0.5 * np.array([0.1, 1, 1, 0, 0]) + x = np.random.randn(nobs, k_vars) + x[:, 0] = 1 + y = np.dot(x, beta) + 2 * np.random.randn(nobs) + return y, x + + def test_attributes(self): + + attributes_fit = ['params', 'rsquared', 'df_resid', 'df_model', + 'llf', 'aic', 'bic' + #'fittedvalues', 'resid' + ] + attributes_inference = ['bse', 'tvalues', 'pvalues'] + import copy + attributes = copy.copy(attributes_fit) + + if not getattr(self, 'skip_inference', False): + attributes.extend(attributes_inference) + + for att in attributes: + r1 = getattr(self.res1, att) + r2 = getattr(self.res2, att) + if not np.size(r1) == 1: + r1 = r1[:len(r2)] + + # check if we have overwritten tolerance + rtol, atol = self.tol.get(att, self.tol['default']) + message = 'attribute: ' + att #+ '\n%r\n\%r' % (r1, r2) + assert_allclose(r1, r2, rtol=rtol, atol=atol, err_msg=message) + + # models are not close enough for some attributes at high precision + assert_allclose(self.res1.fittedvalues, self.res1.fittedvalues, + rtol=1e-3, atol=1e-4) + assert_allclose(self.res1.resid, self.res1.resid, + rtol=1e-3, atol=1e-4) + + +class TestTheil1(CheckEquivalenceMixin): + # penalize last two parameters to zero + + @classmethod + def setup_class(cls): + y, x = cls.get_sample() + mod1 = TheilGLS(y, x, sigma_prior=[0, 0, 1., 1.]) + cls.res1 = mod1.fit(200000) + cls.res2 = OLS(y, x[:, :3]).fit() + +class TestTheil2(CheckEquivalenceMixin): + # no penalization = same as OLS + + @classmethod + def setup_class(cls): + y, x = cls.get_sample() + mod1 = TheilGLS(y, x, sigma_prior=[0, 0, 1., 1.]) + cls.res1 = mod1.fit(0) + cls.res2 = OLS(y, x).fit() + + +class TestTheil3(CheckEquivalenceMixin): + # perfect multicollinearity = same as OLS in terms of fit + # inference: bse, ... is different + + @classmethod + def setup_class(cls): + cls.skip_inference = True + y, x = cls.get_sample() + xd = np.column_stack((x, x)) + #sp = np.zeros(5), np.ones(5) + r_matrix = np.eye(5, 10, 5) + mod1 = TheilGLS(y, xd, r_matrix=r_matrix) #sigma_prior=[0, 0, 1., 1.]) + cls.res1 = mod1.fit(0.001, cov_type='data-prior') + cls.res2 = OLS(y, x).fit() + + +class TestTheilGLS(CheckEquivalenceMixin): + # penalize last two parameters to zero + + @classmethod + def setup_class(cls): + y, x = cls.get_sample() + nobs = len(y) + weights = (np.arange(nobs) < (nobs // 2)) + 0.5 + mod1 = TheilGLS(y, x, sigma=weights, sigma_prior=[0, 0, 1., 1.]) + cls.res1 = mod1.fit(200000) + cls.res2 = GLS(y, x[:, :3], sigma=weights).fit() + + +class TestTheilLinRestriction(CheckEquivalenceMixin): + # impose linear restriction with small uncertainty - close to OLS + + @classmethod + def setup_class(cls): + y, x = cls.get_sample() + #merge var1 and var2 + x2 = x[:, :2].copy() + x2[:, 1] += x[:, 2] + #mod1 = TheilGLS(y, x, r_matrix =[[0, 1, -1, 0, 0]]) + mod1 = TheilGLS(y, x[:, :3], r_matrix =[[0, 1, -1]]) + cls.res1 = mod1.fit(200000) + cls.res2 = OLS(y, x2).fit() + + # adjust precision, careful: cls.tol is mutable + tol = {'pvalues': (1e-4, 2e-7), + 'tvalues': (5e-4, 0)} + tol.update(cls.tol) + cls.tol = tol + + +class TestTheilLinRestrictionApprox(CheckEquivalenceMixin): + # impose linear restriction with some uncertainty + + @classmethod + def setup_class(cls): + y, x = cls.get_sample() + #merge var1 and var2 + x2 = x[:, :2].copy() + x2[:, 1] += x[:, 2] + #mod1 = TheilGLS(y, x, r_matrix =[[0, 1, -1, 0, 0]]) + mod1 = TheilGLS(y, x[:, :3], r_matrix =[[0, 1, -1]]) + cls.res1 = mod1.fit(100) + cls.res2 = OLS(y, x2).fit() + + # adjust precision, careful: cls.tol is mutable + import copy + tol = copy.copy(cls.tol) + tol2 = {'default': (0.15, 0), + 'params': (0.05, 0), + 'pvalues': (0.02, 0.001), + } + tol.update(tol2) + cls.tol = tol + + +class TestTheilPanel(object): + + @classmethod + def setup_class(cls): + #example 3 + nobs = 300 + nobs_i = 5 + n_groups = nobs // nobs_i + k_vars = 3 + + from statsmodels.sandbox.panel.random_panel import PanelSample + dgp = PanelSample(nobs, k_vars, n_groups, seed=303305) + # add random intercept, using same RandomState + dgp.group_means = 2 + dgp.random_state.randn(n_groups) + print('seed', dgp.seed) + y = dgp.generate_panel() + x = np.column_stack((dgp.exog[:,1:], + dgp.groups[:,None] == np.arange(n_groups))) + cls.dgp = dgp + cls.endog = y + cls.exog = x + cls.res_ols = OLS(y, x).fit() + + def test_regression(self): + y = self.endog + x = self.exog + n_groups, k_vars = self.dgp.n_groups, self.dgp.k_vars + + Rg = (np.eye(n_groups-1) - 1. / n_groups * + np.ones((n_groups - 1, n_groups-1))) + R = np.c_[np.zeros((n_groups - 1, k_vars)), Rg] + r = np.zeros(n_groups - 1) + R[:, k_vars-1] = -1 + + lambd = 1 #1e-4 + mod = TheilGLS(y, x, r_matrix=R, q_matrix=r, sigma_prior=lambd) + res = mod.fit() + + # regression test + params1 = np.array([ + 0.9751655 , 1.05215277, 0.37135028, 2.0492626 , 2.82062503, + 2.82139775, 1.92940468, 2.96942081, 2.86349583, 3.20695368, + 4.04516422, 3.04918839, 4.54748808, 3.49026961, 3.15529618, + 4.25552932, 2.65471759, 3.62328747, 3.07283053, 3.49485898, + 3.42301424, 2.94677593, 2.81549427, 2.24895113, 2.29222784, + 2.89194946, 3.17052308, 2.37754241, 3.54358533, 3.79838425, + 1.91189071, 1.15976407, 4.05629691, 1.58556827, 4.49941666, + 4.08608599, 3.1889269 , 2.86203652, 3.06785013, 1.9376162 , + 2.90657681, 3.71910592, 3.15607617, 3.58464547, 2.15466323, + 4.87026717, 2.92909833, 2.64998337, 2.891171 , 4.04422964, + 3.54616122, 4.12135273, 3.70232028, 3.8314497 , 2.2591451 , + 2.39321422, 3.13064532, 2.1569678 , 2.04667506, 3.92064689, + 3.66243644, 3.11742725]) + assert_allclose(res.params, params1) + + pen_weight_aicc = mod.select_pen_weight(method='aicc') + pen_weight_gcv = mod.select_pen_weight(method='gcv') + pen_weight_cv = mod.select_pen_weight(method='cv') + pen_weight_bic = mod.select_pen_weight(method='bic') + assert_allclose(pen_weight_gcv, pen_weight_aicc, rtol=0.1) + # regression tests: + assert_allclose(pen_weight_aicc, 4.77333984, rtol=1e-4) + assert_allclose(pen_weight_gcv, 4.45546875, rtol=1e-4) + assert_allclose(pen_weight_bic, 9.35957031, rtol=1e-4) + assert_allclose(pen_weight_cv, 1.99277344, rtol=1e-4) + + def test_combine_subset_regression(self): + # split sample into two, use first sample as prior for second + endog = self.endog + exog = self.exog + nobs = len(endog) + + n05 = nobs // 2 + np.random.seed(987125) + # shuffle to get random subsamples + shuffle_idx = np.random.permutation(np.arange(nobs)) + ys = endog[shuffle_idx] + xs = exog[shuffle_idx] + k = 10 + res_ols0 = OLS(ys[:n05], xs[:n05, :k]).fit() + res_ols1 = OLS(ys[n05:], xs[n05:, :k]).fit() + + w = res_ols1.scale / res_ols0.scale #1.01 + mod_1 = TheilGLS(ys[n05:], xs[n05:, :k], r_matrix=np.eye(k), + q_matrix=res_ols0.params, + sigma_prior=w * res_ols0.cov_params()) + res_1p = mod_1.fit(cov_type='data-prior') + res_1s = mod_1.fit(cov_type='sandwich') + res_olsf = OLS(ys, xs[:, :k]).fit() + + assert_allclose(res_1p.params, res_olsf.params, rtol=1e-9) + corr_fact = np.sqrt(res_1p.scale / res_olsf.scale) + # corrct for differences in scale computation + assert_allclose(res_1p.bse, res_olsf.bse * corr_fact, rtol=1e-3) + + # regression test, does not verify numbers + # especially why are these smaller than OLS on full sample + # in larger sample, nobs=600, those were close to full OLS + bse1 = np.array([ + 0.26589869, 0.15224812, 0.38407399, 0.75679949, 0.66084200, + 0.54174080, 0.53697607, 0.66006377, 0.38228551, 0.53920485]) + assert_allclose(res_1s.bse, bse1, rtol=1e-7) diff --git a/statsmodels/regression/tests/test_tools.py b/statsmodels/regression/tests/test_tools.py new file mode 100644 index 0000000..3f46cee --- /dev/null +++ b/statsmodels/regression/tests/test_tools.py @@ -0,0 +1,62 @@ +import numpy as np +from numpy.testing import assert_allclose +import pytest + +from statsmodels.regression.linear_model import WLS +from statsmodels.regression._tools import _MinimalWLS + + +class TestMinimalWLS(object): + @classmethod + def setup_class(cls): + rs = np.random.RandomState(1234) + cls.exog1 = rs.randn(200, 5) + cls.endog1 = cls.exog1.sum(1) + rs.randn(200) + cls.weights1 = 1.0 + np.sin(np.arange(200.0) / 100.0 * np.pi) + cls.exog2 = rs.randn(50, 1) + cls.endog2 = 0.3 * cls.exog2.ravel() + rs.randn(50) + cls.weights2 = 1.0 + np.log(np.arange(1.0, 51.0)) + + @pytest.mark.parametrize('check', [True, False]) + def test_equivalence_with_wls(self, check): + res = WLS(self.endog1, self.exog1).fit() + minres = _MinimalWLS(self.endog1, self.exog1, + check_endog=check, check_weights=check).fit() + assert_allclose(res.params, minres.params) + assert_allclose(res.resid, minres.resid) + + res = WLS(self.endog2, self.exog2).fit() + minres = _MinimalWLS(self.endog2, self.exog2, + check_endog=check, check_weights=check).fit() + assert_allclose(res.params, minres.params) + assert_allclose(res.resid, minres.resid) + + res = WLS(self.endog1, self.exog1, weights=self.weights1).fit() + minres = _MinimalWLS(self.endog1, self.exog1, weights=self.weights1, + check_endog=check, check_weights=check).fit() + assert_allclose(res.params, minres.params) + assert_allclose(res.resid, minres.resid) + + res = WLS(self.endog2, self.exog2, weights=self.weights2).fit() + minres = _MinimalWLS(self.endog2, self.exog2, weights=self.weights2, + check_endog=check, check_weights=check).fit() + assert_allclose(res.params, minres.params) + assert_allclose(res.resid, minres.resid) + + @pytest.mark.parametrize('bad_value', [np.nan, np.inf]) + def test_inf_nan(self, bad_value): + with pytest.raises( + ValueError, + match=r'detected in endog, estimation infeasible'): + endog = self.endog1.copy() + endog[0] = bad_value + _MinimalWLS(endog, self.exog1, self.weights1, + check_endog=True, check_weights=True).fit() + + with pytest.raises( + ValueError, + match=r'detected in weights, estimation infeasible'): + weights = self.weights1.copy() + weights[-1] = bad_value + _MinimalWLS(self.endog1, self.exog1, weights, + check_endog=True, check_weights=True).fit() diff --git a/statsmodels/resampling/__init__.py b/statsmodels/resampling/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/robust/__init__.py b/statsmodels/robust/__init__.py new file mode 100644 index 0000000..69e78e9 --- /dev/null +++ b/statsmodels/robust/__init__.py @@ -0,0 +1,10 @@ +""" +Robust statistical models +""" +__all__ = ["norms", "mad", "Huber", "HuberScale", "hubers_scale", "test"] +from . import norms +from .scale import mad, Huber, HuberScale, hubers_scale + +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/robust/norms.py b/statsmodels/robust/norms.py new file mode 100644 index 0000000..f84d1b2 --- /dev/null +++ b/statsmodels/robust/norms.py @@ -0,0 +1,864 @@ +from statsmodels.compat.python import range +import numpy as np + +#TODO: add plots to weighting functions for online docs. + + +class RobustNorm(object): + """ + The parent class for the norms used for robust regression. + + Lays out the methods expected of the robust norms to be used + by statsmodels.RLM. + + Parameters + ---------- + None : + Some subclasses have optional tuning constants. + + References + ---------- + PJ Huber. 'Robust Statistics' John Wiley and Sons, Inc., New York, 1981. + + DC Montgomery, EA Peck. 'Introduction to Linear Regression Analysis', + John Wiley and Sons, Inc., New York, 2001. + + R Venables, B Ripley. 'Modern Applied Statistics in S' + Springer, New York, 2002. + + See Also + -------- + statsmodels.rlm + + Notes + ----- + Currently only M-estimators are available. + """ + + def rho(self, z): + """ + The robust criterion estimator function. + + Abstract method: + + -2 loglike used in M-estimator + """ + raise NotImplementedError + + def psi(self, z): + """ + Derivative of rho. Sometimes referred to as the influence function. + + Abstract method: + + psi = rho' + """ + raise NotImplementedError + + def weights(self, z): + """ + Returns the value of psi(z) / z + + Abstract method: + + psi(z) / z + """ + raise NotImplementedError + + def psi_deriv(self, z): + """ + Deriative of psi. Used to obtain robust covariance matrix. + + See statsmodels.rlm for more information. + + Abstract method: + + psi_derive = psi' + """ + raise NotImplementedError + + def __call__(self, z): + """ + Returns the value of estimator rho applied to an input + """ + return self.rho(z) + + +class LeastSquares(RobustNorm): + + """ + Least squares rho for M-estimation and its derived functions. + + See Also + -------- + statsmodels.robust.norms.RobustNorm + """ + + def rho(self, z): + """ + The least squares estimator rho function + + Parameters + ---------- + z : array + 1d array + + Returns + ------- + rho : array + rho(z) = (1/2.)*z**2 + """ + + return z**2 * 0.5 + + def psi(self, z): + """ + The psi function for the least squares estimator + + The analytic derivative of rho + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + psi : array + psi(z) = z + """ + + return np.asarray(z) + + def weights(self, z): + """ + The least squares estimator weighting function for the IRLS algorithm. + + The psi function scaled by the input z + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + weights : array + weights(z) = np.ones(z.shape) + """ + + z = np.asarray(z) + return np.ones(z.shape, np.float64) + + def psi_deriv(self, z): + """ + The derivative of the least squares psi function. + + Returns + ------- + psi_deriv : array + ones(z.shape) + + Notes + ----- + Used to estimate the robust covariance matrix. + """ + return np.ones(z.shape, np.float64) + + +class HuberT(RobustNorm): + """ + Huber's T for M estimation. + + Parameters + ---------- + t : float, optional + The tuning constant for Huber's t function. The default value is + 1.345. + + See Also + -------- + statsmodels.robust.norms.RobustNorm + """ + + def __init__(self, t=1.345): + self.t = t + + def _subset(self, z): + """ + Huber's T is defined piecewise over the range for z + """ + z = np.asarray(z) + return np.less_equal(np.fabs(z), self.t) + + def rho(self, z): + r""" + The robust criterion function for Huber's t. + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + rho : array + rho(z) = .5*z**2 for \|z\| <= t + + rho(z) = \|z\|*t - .5*t**2 for \|z\| > t + """ + z = np.asarray(z) + test = self._subset(z) + return (test * 0.5 * z**2 + + (1 - test) * (np.fabs(z) * self.t - 0.5 * self.t**2)) + + def psi(self, z): + r""" + The psi function for Huber's t estimator + + The analytic derivative of rho + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + psi : array + psi(z) = z for \|z\| <= t + + psi(z) = sign(z)*t for \|z\| > t + """ + z = np.asarray(z) + test = self._subset(z) + return test * z + (1 - test) * self.t * np.sign(z) + + def weights(self, z): + r""" + Huber's t weighting function for the IRLS algorithm + + The psi function scaled by z + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + weights : array + weights(z) = 1 for \|z\| <= t + + weights(z) = t/\|z\| for \|z\| > t + """ + z = np.asarray(z) + test = self._subset(z) + absz = np.fabs(z) + absz[test] = 1.0 + return test + (1 - test) * self.t / absz + + def psi_deriv(self, z): + """ + The derivative of Huber's t psi function + + Notes + ----- + Used to estimate the robust covariance matrix. + """ + return np.less_equal(np.fabs(z), self.t) + + +#TODO: untested, but looks right. RamsayE not available in R or SAS? +class RamsayE(RobustNorm): + """ + Ramsay's Ea for M estimation. + + Parameters + ---------- + a : float, optional + The tuning constant for Ramsay's Ea function. The default value is + 0.3. + + See Also + -------- + statsmodels.robust.norms.RobustNorm + """ + + def __init__(self, a = .3): + self.a = a + + def rho(self, z): + r""" + The robust criterion function for Ramsay's Ea. + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + rho : array + rho(z) = a**-2 * (1 - exp(-a*\|z\|)*(1 + a*\|z\|)) + """ + z = np.asarray(z) + return (1 - np.exp(-self.a * np.fabs(z)) * + (1 + self.a * np.fabs(z))) / self.a**2 + + def psi(self, z): + r""" + The psi function for Ramsay's Ea estimator + + The analytic derivative of rho + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + psi : array + psi(z) = z*exp(-a*\|z\|) + """ + z = np.asarray(z) + return z * np.exp(-self.a * np.fabs(z)) + + def weights(self, z): + r""" + Ramsay's Ea weighting function for the IRLS algorithm + + The psi function scaled by z + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + weights : array + weights(z) = exp(-a*\|z\|) + """ + + z = np.asarray(z) + return np.exp(-self.a * np.fabs(z)) + + def psi_deriv(self, z): + """ + The derivative of Ramsay's Ea psi function. + + Notes + ----- + Used to estimate the robust covariance matrix. + """ + + return np.exp(-self.a * np.fabs(z)) + z**2*\ + np.exp(-self.a*np.fabs(z))*-self.a/np.fabs(z) + + +class AndrewWave(RobustNorm): + + """ + Andrew's wave for M estimation. + + Parameters + ---------- + a : float, optional + The tuning constant for Andrew's Wave function. The default value is + 1.339. + + See Also + -------- + statsmodels.robust.norms.RobustNorm + """ + def __init__(self, a=1.339): + self.a = a + + def _subset(self, z): + """ + Andrew's wave is defined piecewise over the range of z. + """ + z = np.asarray(z) + return np.less_equal(np.fabs(z), self.a * np.pi) + + def rho(self, z): + r""" + The robust criterion function for Andrew's wave. + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + rho : array + rho(z) = a*(1-cos(z/a)) for \|z\| <= a*pi + + rho(z) = 2*a for \|z\| > a*pi + """ + + a = self.a + z = np.asarray(z) + test = self._subset(z) + return (test * a * (1 - np.cos(z / a)) + + (1 - test) * 2 * a) + + def psi(self, z): + r""" + The psi function for Andrew's wave + + The analytic derivative of rho + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + psi : array + psi(z) = sin(z/a) for \|z\| <= a*pi + + psi(z) = 0 for \|z\| > a*pi + """ + + a = self.a + z = np.asarray(z) + test = self._subset(z) + return test * np.sin(z / a) + + def weights(self, z): + r""" + Andrew's wave weighting function for the IRLS algorithm + + The psi function scaled by z + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + weights : array + weights(z) = sin(z/a)/(z/a) for \|z\| <= a*pi + + weights(z) = 0 for \|z\| > a*pi + """ + a = self.a + z = np.asarray(z) + test = self._subset(z) + return test * np.sin(z / a) / (z / a) + + def psi_deriv(self, z): + """ + The derivative of Andrew's wave psi function + + Notes + ----- + Used to estimate the robust covariance matrix. + """ + + test = self._subset(z) + return test*np.cos(z / self.a)/self.a + + +# TODO: this is untested +class TrimmedMean(RobustNorm): + """ + Trimmed mean function for M-estimation. + + Parameters + ---------- + c : float, optional + The tuning constant for Ramsay's Ea function. The default value is + 2.0. + + See Also + -------- + statsmodels.robust.norms.RobustNorm + """ + + def __init__(self, c=2.): + self.c = c + + def _subset(self, z): + """ + Least trimmed mean is defined piecewise over the range of z. + """ + + z = np.asarray(z) + return np.less_equal(np.fabs(z), self.c) + + def rho(self, z): + r""" + The robust criterion function for least trimmed mean. + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + rho : array + rho(z) = (1/2.)*z**2 for \|z\| <= c + + rho(z) = 0 for \|z\| > c + """ + + z = np.asarray(z) + test = self._subset(z) + return test * z**2 * 0.5 + + def psi(self, z): + r""" + The psi function for least trimmed mean + + The analytic derivative of rho + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + psi : array + psi(z) = z for \|z\| <= c + + psi(z) = 0 for \|z\| > c + + """ + z = np.asarray(z) + test = self._subset(z) + return test * z + + def weights(self, z): + r""" + Least trimmed mean weighting function for the IRLS algorithm + + The psi function scaled by z + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + weights : array + weights(z) = 1 for \|z\| <= c + + weights(z) = 0 for \|z\| > c + + """ + z = np.asarray(z) + test = self._subset(z) + return test + + def psi_deriv(self, z): + """ + The derivative of least trimmed mean psi function + + Notes + ----- + Used to estimate the robust covariance matrix. + """ + test = self._subset(z) + return test + + +class Hampel(RobustNorm): + """ + + Hampel function for M-estimation. + + Parameters + ---------- + a : float, optional + b : float, optional + c : float, optional + The tuning constants for Hampel's function. The default values are + a,b,c = 2, 4, 8. + + See Also + -------- + statsmodels.robust.norms.RobustNorm + """ + + def __init__(self, a=2., b=4., c=8.): + self.a = a + self.b = b + self.c = c + + def _subset(self, z): + """ + Hampel's function is defined piecewise over the range of z + """ + z = np.fabs(np.asarray(z)) + t1 = np.less_equal(z, self.a) + t2 = np.less_equal(z, self.b) * np.greater(z, self.a) + t3 = np.less_equal(z, self.c) * np.greater(z, self.b) + return t1, t2, t3 + + def rho(self, z): + r""" + The robust criterion function for Hampel's estimator + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + rho : array + rho(z) = (1/2.)*z**2 for \|z\| <= a + + rho(z) = a*\|z\| - 1/2.*a**2 for a < \|z\| <= b + + rho(z) = a*(c*\|z\|-(1/2.)*z**2)/(c-b) for b < \|z\| <= c + + rho(z) = a*(b + c - a) for \|z\| > c + """ + + z = np.fabs(z) + a = self.a + b = self.b + c = self.c + t1, t2, t3 = self._subset(z) + v = (t1 * z**2 * 0.5 + + t2 * (a * z - a**2 * 0.5) + + t3 * (a * (c * z - z**2 * 0.5) / (c - b) - 7 * a**2 / 6.) + + (1 - t1 + t2 + t3) * a * (b + c - a)) + return v + + def psi(self, z): + r""" + The psi function for Hampel's estimator + + The analytic derivative of rho + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + psi : array + psi(z) = z for \|z\| <= a + + psi(z) = a*sign(z) for a < \|z\| <= b + + psi(z) = a*sign(z)*(c - \|z\|)/(c-b) for b < \|z\| <= c + + psi(z) = 0 for \|z\| > c + """ + z = np.asarray(z) + a = self.a + b = self.b + c = self.c + t1, t2, t3 = self._subset(z) + s = np.sign(z) + z = np.fabs(z) + v = s * (t1 * z + + t2 * a*s + + t3 * a*s * (c - z) / (c - b)) + return v + + def weights(self, z): + r""" + Hampel weighting function for the IRLS algorithm + + The psi function scaled by z + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + weights : array + weights(z) = 1 for \|z\| <= a + + weights(z) = a/\|z\| for a < \|z\| <= b + + weights(z) = a*(c - \|z\|)/(\|z\|*(c-b)) for b < \|z\| <= c + + weights(z) = 0 for \|z\| > c + + """ + z = np.asarray(z) + a = self.a + b = self.b + c = self.c + t1, t2, t3 = self._subset(z) + v = (t1 + + t2 * a/np.fabs(z) + + t3 * a*(c-np.fabs(z))/(np.fabs(z)*(c-b))) + v[np.where(np.isnan(v))]=1. # for some reason 0 returns a nan? + return v + + def psi_deriv(self, z): + t1, t2, t3 = self._subset(z) + return t1 + t3 * (self.a*np.sign(z)*z)/(np.fabs(z)*(self.c-self.b)) + + +class TukeyBiweight(RobustNorm): + """ + + Tukey's biweight function for M-estimation. + + Parameters + ---------- + c : float, optional + The tuning constant for Tukey's Biweight. The default value is + c = 4.685. + + Notes + ----- + Tukey's biweight is sometime's called bisquare. + """ + + def __init__(self, c = 4.685): + self.c = c + + def _subset(self, z): + """ + Tukey's biweight is defined piecewise over the range of z + """ + z = np.fabs(np.asarray(z)) + return np.less_equal(z, self.c) + + def rho(self, z): + r""" + The robust criterion function for Tukey's biweight estimator + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + rho : array + rho(z) = -(1 - (z/c)**2)**3 * c**2/6. for \|z\| <= R + + rho(z) = 0 for \|z\| > R + """ + subset = self._subset(z) + return -(1 - (z / self.c)**2)**3 * subset * self.c**2 / 6. + + def psi(self, z): + r""" + The psi function for Tukey's biweight estimator + + The analytic derivative of rho + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + psi : array + psi(z) = z*(1 - (z/c)**2)**2 for \|z\| <= R + + psi(z) = 0 for \|z\| > R + """ + + z = np.asarray(z) + subset = self._subset(z) + return z * (1 - (z / self.c)**2)**2 * subset + + def weights(self, z): + r""" + Tukey's biweight weighting function for the IRLS algorithm + + The psi function scaled by z + + Parameters + ---------- + z : array-like + 1d array + + Returns + ------- + weights : array + psi(z) = (1 - (z/c)**2)**2 for \|z\| <= R + + psi(z) = 0 for \|z\| > R + """ + + subset = self._subset(z) + return (1 - (z / self.c)**2)**2 * subset + + def psi_deriv(self, z): + """ + The derivative of Tukey's biweight psi function + + Notes + ----- + Used to estimate the robust covariance matrix. + """ + subset = self._subset(z) + return subset*((1 - (z/self.c)**2)**2 - (4*z**2/self.c**2) *\ + (1-(z/self.c)**2)) + +def estimate_location(a, scale, norm=None, axis=0, initial=None, + maxiter=30, tol=1.0e-06): + """ + M-estimator of location using self.norm and a current + estimator of scale. + + This iteratively finds a solution to + + norm.psi((a-mu)/scale).sum() == 0 + + Parameters + ---------- + a : array + Array over which the location parameter is to be estimated + scale : array + Scale parameter to be used in M-estimator + norm : RobustNorm, optional + Robust norm used in the M-estimator. The default is HuberT(). + axis : int, optional + Axis along which to estimate the location parameter. The default is 0. + initial : array, optional + Initial condition for the location parameter. Default is None, which + uses the median of a. + niter : int, optional + Maximum number of iterations. The default is 30. + tol : float, optional + Toleration for convergence. The default is 1e-06. + + Returns + ------- + mu : array + Estimate of location + """ + if norm is None: + norm = HuberT() + + if initial is None: + mu = np.median(a, axis) + else: + mu = initial + + for iter in range(maxiter): + W = norm.weights((a-mu)/scale) + nmu = np.sum(W*a, axis) / np.sum(W, axis) + if np.alltrue(np.less(np.fabs(mu - nmu), scale * tol)): + return nmu + else: + mu = nmu + raise ValueError("location estimator failed to converge in %d iterations" + % maxiter) diff --git a/statsmodels/robust/robust_linear_model.py b/statsmodels/robust/robust_linear_model.py new file mode 100644 index 0000000..29087a3 --- /dev/null +++ b/statsmodels/robust/robust_linear_model.py @@ -0,0 +1,642 @@ +""" +Robust linear models with support for the M-estimators listed under +:ref:`norms `. + +References +---------- +PJ Huber. 'Robust Statistics' John Wiley and Sons, Inc., New York. 1981. + +PJ Huber. 1973, 'The 1972 Wald Memorial Lectures: Robust Regression: + Asymptotics, Conjectures, and Monte Carlo.' The Annals of Statistics, + 1.5, 799-821. + +R Venables, B Ripley. 'Modern Applied Statistics in S' Springer, New York, + 2002. +""" +import numpy as np +import scipy.stats as stats + +from statsmodels.tools.decorators import cache_readonly +import statsmodels.regression.linear_model as lm +import statsmodels.regression._tools as reg_tools +import statsmodels.robust.norms as norms +import statsmodels.robust.scale as scale +import statsmodels.base.model as base +import statsmodels.base.wrapper as wrap + +__all__ = ['RLM'] + + +def _check_convergence(criterion, iteration, tol, maxiter): + return not (np.any(np.fabs(criterion[iteration] - + criterion[iteration-1]) > tol) and iteration < maxiter) + + +class RLM(base.LikelihoodModel): + __doc__ = """ + Robust Linear Models + + Estimate a robust linear model via iteratively reweighted least squares + given a robust criterion estimator. + + %(params)s + M : statsmodels.robust.norms.RobustNorm, optional + The robust criterion function for downweighting outliers. + The current options are LeastSquares, HuberT, RamsayE, AndrewWave, + TrimmedMean, Hampel, and TukeyBiweight. The default is HuberT(). + See statsmodels.robust.norms for more information. + %(extra_params)s + + Attributes + ---------- + + df_model : float + The degrees of freedom of the model. The number of regressors p less + one for the intercept. Note that the reported model degrees + of freedom does not count the intercept as a regressor, though + the model is assumed to have an intercept. + df_resid : float + The residual degrees of freedom. The number of observations n + less the number of regressors p. Note that here p does include + the intercept as using a degree of freedom. + endog : array + See above. Note that endog is a reference to the data so that if + data is already an array and it is changed, then `endog` changes + as well. + exog : array + See above. Note that endog is a reference to the data so that if + data is already an array and it is changed, then `endog` changes + as well. + M : statsmodels.robust.norms.RobustNorm + See above. Robust estimator instance instantiated. + nobs : float + The number of observations n + pinv_wexog : array + The pseudoinverse of the design / exogenous data array. Note that + RLM has no whiten method, so this is just the pseudo inverse of the + design. + normalized_cov_params : array + The p x p normalized covariance of the design / exogenous data. + This is approximately equal to (X.T X)^(-1) + + + Examples + -------- + >>> import statsmodels.api as sm + >>> data = sm.datasets.stackloss.load(as_pandas=False) + >>> data.exog = sm.add_constant(data.exog) + >>> rlm_model = sm.RLM(data.endog, data.exog, \ + M=sm.robust.norms.HuberT()) + + >>> rlm_results = rlm_model.fit() + >>> rlm_results.params + array([ 0.82938433, 0.92606597, -0.12784672, -41.02649835]) + >>> rlm_results.bse + array([ 0.11100521, 0.30293016, 0.12864961, 9.79189854]) + >>> rlm_results_HC2 = rlm_model.fit(cov="H2") + >>> rlm_results_HC2.params + array([ 0.82938433, 0.92606597, -0.12784672, -41.02649835]) + >>> rlm_results_HC2.bse + array([ 0.11945975, 0.32235497, 0.11796313, 9.08950419]) + >>> mod = sm.RLM(data.endog, data.exog, M=sm.robust.norms.Hampel()) + >>> rlm_hamp_hub = mod.fit(scale_est=sm.robust.scale.HuberScale()) + >>> rlm_hamp_hub.params + array([ 0.73175452, 1.25082038, -0.14794399, -40.27122257]) + """ % {'params' : base._model_params_doc, + 'extra_params' : base._missing_param_doc} + + def __init__(self, endog, exog, M=None, missing='none', + **kwargs): + self.M = M if M is not None else norms.HuberT() + super(base.LikelihoodModel, self).__init__(endog, exog, + missing=missing, **kwargs) + self._initialize() + #things to remove_data + self._data_attr.extend(['weights', 'pinv_wexog']) + + def _initialize(self): + """ + Initializes the model for the IRLS fit. + + Resets the history and number of iterations. + """ + self.pinv_wexog = np.linalg.pinv(self.exog) + self.normalized_cov_params = np.dot(self.pinv_wexog, + np.transpose(self.pinv_wexog)) + self.df_resid = (np.float(self.exog.shape[0] - + np.linalg.matrix_rank(self.exog))) + self.df_model = np.float(np.linalg.matrix_rank(self.exog)-1) + self.nobs = float(self.endog.shape[0]) + + def score(self, params): + raise NotImplementedError + + def information(self, params): + raise NotImplementedError + + def predict(self, params, exog=None): + """ + Return linear predicted values from a design matrix. + + Parameters + ---------- + params : array-like, optional after fit has been called + Parameters of a linear model + exog : array-like, optional. + Design / exogenous data. Model exog is used if None. + + Returns + ------- + An array of fitted values + + Notes + ----- + If the model as not yet been fit, params is not optional. + """ + #copied from linear_model + if exog is None: + exog = self.exog + return np.dot(exog, params) + + def loglike(self, params): + raise NotImplementedError + + def deviance(self, tmp_results): + """ + Returns the (unnormalized) log-likelihood from the M estimator. + """ + return self.M((self.endog - tmp_results.fittedvalues) / + tmp_results.scale).sum() + + def _update_history(self, tmp_results, history, conv): + history['params'].append(tmp_results.params) + history['scale'].append(tmp_results.scale) + if conv == 'dev': + history['deviance'].append(self.deviance(tmp_results)) + elif conv == 'sresid': + history['sresid'].append(tmp_results.resid/tmp_results.scale) + elif conv == 'weights': + history['weights'].append(tmp_results.model.weights) + return history + + def _estimate_scale(self, resid): + """ + Estimates the scale based on the option provided to the fit method. + """ + if isinstance(self.scale_est, str): + if self.scale_est.lower() == 'mad': + return scale.mad(resid, center=0) + else: + raise ValueError("Option %s for scale_est not understood" % + self.scale_est) + elif isinstance(self.scale_est, scale.HuberScale): + return self.scale_est(self.df_resid, self.nobs, resid) + else: + return scale.scale_est(self, resid)**2 + + def fit(self, maxiter=50, tol=1e-8, scale_est='mad', init=None, cov='H1', + update_scale=True, conv='dev'): + """ + Fits the model using iteratively reweighted least squares. + + The IRLS routine runs until the specified objective converges to `tol` + or `maxiter` has been reached. + + Parameters + ---------- + conv : string + Indicates the convergence criteria. + Available options are "coefs" (the coefficients), "weights" (the + weights in the iteration), "sresid" (the standardized residuals), + and "dev" (the un-normalized log-likelihood for the M + estimator). The default is "dev". + cov : string, optional + 'H1', 'H2', or 'H3' + Indicates how the covariance matrix is estimated. Default is 'H1'. + See rlm.RLMResults for more information. + init : string + Specifies method for the initial estimates of the parameters. + Default is None, which means that the least squares estimate + is used. Currently it is the only available choice. + maxiter : int + The maximum number of iterations to try. Default is 50. + scale_est : string or HuberScale() + 'mad' or HuberScale() + Indicates the estimate to use for scaling the weights in the IRLS. + The default is 'mad' (median absolute deviation. Other options are + 'HuberScale' for Huber's proposal 2. Huber's proposal 2 has + optional keyword arguments d, tol, and maxiter for specifying the + tuning constant, the convergence tolerance, and the maximum number + of iterations. See statsmodels.robust.scale for more information. + tol : float + The convergence tolerance of the estimate. Default is 1e-8. + update_scale : Bool + If `update_scale` is False then the scale estimate for the + weights is held constant over the iteration. Otherwise, it + is updated for each fit in the iteration. Default is True. + + Returns + ------- + results : object + statsmodels.rlm.RLMresults + """ + if cov.upper() not in ["H1","H2","H3"]: + raise ValueError("Covariance matrix %s not understood" % cov) + else: + self.cov = cov.upper() + conv = conv.lower() + if conv not in ["weights","coefs","dev","sresid"]: + raise ValueError("Convergence argument %s not understood" \ + % conv) + self.scale_est = scale_est + + wls_results = lm.WLS(self.endog, self.exog).fit() + if not init: + self.scale = self._estimate_scale(wls_results.resid) + + history = dict(params = [np.inf], scale = []) + if conv == 'coefs': + criterion = history['params'] + elif conv == 'dev': + history.update(dict(deviance = [np.inf])) + criterion = history['deviance'] + elif conv == 'sresid': + history.update(dict(sresid = [np.inf])) + criterion = history['sresid'] + elif conv == 'weights': + history.update(dict(weights = [np.inf])) + criterion = history['weights'] + + # done one iteration so update + history = self._update_history(wls_results, history, conv) + iteration = 1 + converged = 0 + while not converged: + self.weights = self.M.weights(wls_results.resid/self.scale) + wls_results = reg_tools._MinimalWLS(self.endog, self.exog, + weights=self.weights, + check_weights=True).fit() + if update_scale is True: + self.scale = self._estimate_scale(wls_results.resid) + history = self._update_history(wls_results, history, conv) + iteration += 1 + converged = _check_convergence(criterion, iteration, tol, maxiter) + results = RLMResults(self, wls_results.params, + self.normalized_cov_params, self.scale) + + history['iteration'] = iteration + results.fit_history = history + results.fit_options = dict(cov=cov.upper(), scale_est=scale_est, + norm=self.M.__class__.__name__, conv=conv) + #norm is not changed in fit, no old state + + #doing the next causes exception + #self.cov = self.scale_est = None #reset for additional fits + #iteration and history could contain wrong state with repeated fit + return RLMResultsWrapper(results) + +class RLMResults(base.LikelihoodModelResults): + """ + Class to contain RLM results + + Attributes + ---------- + + bcov_scaled : array + p x p scaled covariance matrix specified in the model fit method. + The default is H1. H1 is defined as + ``k**2 * (1/df_resid*sum(M.psi(sresid)**2)*scale**2)/ + ((1/nobs*sum(M.psi_deriv(sresid)))**2) * (X.T X)^(-1)`` + + where ``k = 1 + (df_model +1)/nobs * var_psiprime/m**2`` + where ``m = mean(M.psi_deriv(sresid))`` and + ``var_psiprime = var(M.psi_deriv(sresid))`` + + H2 is defined as + ``k * (1/df_resid) * sum(M.psi(sresid)**2) *scale**2/ + ((1/nobs)*sum(M.psi_deriv(sresid)))*W_inv`` + + H3 is defined as + ``1/k * (1/df_resid * sum(M.psi(sresid)**2)*scale**2 * + (W_inv X.T X W_inv))`` + + where `k` is defined as above and + ``W_inv = (M.psi_deriv(sresid) exog.T exog)^(-1)`` + + See the technical documentation for cleaner formulae. + bcov_unscaled : array + The usual p x p covariance matrix with scale set equal to 1. It + is then just equivalent to normalized_cov_params. + bse : array + An array of the standard errors of the parameters. The standard + errors are taken from the robust covariance matrix specified in the + argument to fit. + chisq : array + An array of the chi-squared values of the paramter estimates. + df_model + See RLM.df_model + df_resid + See RLM.df_resid + fit_history : dict + Contains information about the iterations. Its keys are `deviance`, + `params`, `iteration` and the convergence criteria specified in + `RLM.fit`, if different from `deviance` or `params`. + fit_options : dict + Contains the options given to fit. + fittedvalues : array + The linear predicted values. dot(exog, params) + model : statsmodels.rlm.RLM + A reference to the model instance + nobs : float + The number of observations n + normalized_cov_params : array + See RLM.normalized_cov_params + params : array + The coefficients of the fitted model + pinv_wexog : array + See RLM.pinv_wexog + pvalues : array + The p values associated with `tvalues`. Note that `tvalues` are assumed to be distributed + standard normal rather than Student's t. + resid : array + The residuals of the fitted model. endog - fittedvalues + scale : float + The type of scale is determined in the arguments to the fit method in + RLM. The reported scale is taken from the residuals of the weighted + least squares in the last IRLS iteration if update_scale is True. If + update_scale is False, then it is the scale given by the first OLS + fit before the IRLS iterations. + sresid : array + The scaled residuals. + tvalues : array + The "t-statistics" of params. These are defined as params/bse where bse are taken + from the robust covariance matrix specified in the argument to fit. + weights : array + The reported weights are determined by passing the scaled residuals + from the last weighted least squares fit in the IRLS algortihm. + + See Also + -------- + statsmodels.base.model.LikelihoodModelResults + """ + + + def __init__(self, model, params, normalized_cov_params, scale): + super(RLMResults, self).__init__(model, params, + normalized_cov_params, scale) + self.model = model + self.df_model = model.df_model + self.df_resid = model.df_resid + self.nobs = model.nobs + self._cache = {} + #for remove_data + self.data_in_cache = ['sresid'] + + self.cov_params_default = self.bcov_scaled + #TODO: "pvals" should come from chisq on bse? + + @cache_readonly + def fittedvalues(self): + return np.dot(self.model.exog, self.params) + + @cache_readonly + def resid(self): + return self.model.endog - self.fittedvalues # before bcov + + @cache_readonly + def sresid(self): + return self.resid/self.scale + + @cache_readonly + def bcov_unscaled(self): + return self.normalized_cov_params + + @cache_readonly + def weights(self): + return self.model.weights + + @cache_readonly + def bcov_scaled(self): + model = self.model + m = np.mean(model.M.psi_deriv(self.sresid)) + var_psiprime = np.var(model.M.psi_deriv(self.sresid)) + k = 1 + (self.df_model+1)/self.nobs * var_psiprime/m**2 + + if model.cov == "H1": + return k**2 * (1/self.df_resid*\ + np.sum(model.M.psi(self.sresid)**2)*self.scale**2)\ + /((1/self.nobs*np.sum(model.M.psi_deriv(self.sresid)))**2)\ + *model.normalized_cov_params + else: + W = np.dot(model.M.psi_deriv(self.sresid)*model.exog.T, + model.exog) + W_inv = np.linalg.inv(W) + # [W_jk]^-1 = [SUM(psi_deriv(Sr_i)*x_ij*x_jk)]^-1 + # where Sr are the standardized residuals + if model.cov == "H2": + # These are correct, based on Huber (1973) 8.13 + return k*(1/self.df_resid)*np.sum(\ + model.M.psi(self.sresid)**2)*self.scale**2\ + /((1/self.nobs)*np.sum(\ + model.M.psi_deriv(self.sresid)))*W_inv + elif model.cov == "H3": + return k**-1*1/self.df_resid*np.sum(\ + model.M.psi(self.sresid)**2)*self.scale**2\ + *np.dot(np.dot(W_inv, np.dot(model.exog.T,model.exog)),\ + W_inv) + + @cache_readonly + def pvalues(self): + return stats.norm.sf(np.abs(self.tvalues))*2 + + @cache_readonly + def bse(self): + return np.sqrt(np.diag(self.bcov_scaled)) + + @cache_readonly + def chisq(self): + return (self.params/self.bse)**2 + + def summary(self, yname=None, xname=None, title=0, alpha=.05, + return_fmt='text'): + """ + This is for testing the new summary setup + """ + top_left = [('Dep. Variable:', None), + ('Model:', None), + ('Method:', ['IRLS']), + ('Norm:', [self.fit_options['norm']]), + ('Scale Est.:', [self.fit_options['scale_est']]), + ('Cov Type:', [self.fit_options['cov']]), + ('Date:', None), + ('Time:', None), + ('No. Iterations:', ["%d" % self.fit_history['iteration']]) + ] + top_right = [('No. Observations:', None), + ('Df Residuals:', None), + ('Df Model:', None) + ] + + if title is not None: + title = "Robust linear Model Regression Results" + + # boiler plate + from statsmodels.iolib.summary import Summary + smry = Summary() + smry.add_table_2cols(self, gleft=top_left, gright=top_right, + yname=yname, xname=xname, title=title) + smry.add_table_params(self, yname=yname, xname=xname, alpha=alpha, + use_t=self.use_t) + + # add warnings/notes, added to text format only + etext = [] + wstr = ("If the model instance has been used for another fit " + "with different fit\n" + "parameters, then the fit options might not be the correct " + "ones anymore .") + etext.append(wstr) + + if etext: + smry.add_extra_txt(etext) + + return smry + + def summary2(self, xname=None, yname=None, title=None, alpha=.05, + float_format="%.4f"): + """Experimental summary function for regression results + + Parameters + ---------- + xname : List of strings of length equal to the number of parameters + Names of the independent variables (optional) + yname : string + Name of the dependent variable (optional) + title : string, optional + Title for the top table. If not None, then this replaces the + default title + alpha : float + significance level for the confidence intervals + float_format: string + print format for floats in parameters summary + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary2.Summary : class to hold summary results + """ + from statsmodels.iolib import summary2 + smry = summary2.Summary() + smry.add_base(results=self, alpha=alpha, float_format=float_format, + xname=xname, yname=yname, title=title) + + return smry + + +class RLMResultsWrapper(lm.RegressionResultsWrapper): + pass +wrap.populate_wrapper(RLMResultsWrapper, RLMResults) # noqa:E305 + + +if __name__=="__main__": +#NOTE: This is to be removed +#Delivery Time Data is taken from Montgomery and Peck + import statsmodels.api as sm + +#delivery time(minutes) + endog = np.array([16.68, 11.50, 12.03, 14.88, 13.75, 18.11, 8.00, 17.83, + 79.24, 21.50, 40.33, 21.00, 13.50, 19.75, 24.00, 29.00, 15.35, 19.00, + 9.50, 35.10, 17.90, 52.32, 18.75, 19.83, 10.75]) + +#number of cases, distance (Feet) + exog = np.array([[7, 3, 3, 4, 6, 7, 2, 7, 30, 5, 16, 10, 4, 6, 9, 10, 6, + 7, 3, 17, 10, 26, 9, 8, 4], [560, 220, 340, 80, 150, 330, 110, 210, 1460, + 605, 688, 215, 255, 462, 448, 776, 200, 132, 36, 770, 140, 810, 450, 635, + 150]]) + exog = exog.T + exog = sm.add_constant(exog) + +# model_ols = models.regression.OLS(endog, exog) +# results_ols = model_ols.fit() + +# model_ramsaysE = RLM(endog, exog, M=norms.RamsayE()) +# results_ramsaysE = model_ramsaysE.fit(update_scale=False) + +# model_andrewWave = RLM(endog, exog, M=norms.AndrewWave()) +# results_andrewWave = model_andrewWave.fit(update_scale=False) + +# model_hampel = RLM(endog, exog, M=norms.Hampel(a=1.7,b=3.4,c=8.5)) # convergence problems with scale changed, not with 2,4,8 though? +# results_hampel = model_hampel.fit(update_scale=False) + +####################### +### Stack Loss Data ### +####################### + from statsmodels.datasets.stackloss import load + data = load(as_pandas=False) + data.exog = sm.add_constant(data.exog) +############# +### Huber ### +############# +# m1_Huber = RLM(data.endog, data.exog, M=norms.HuberT()) +# results_Huber1 = m1_Huber.fit() +# m2_Huber = RLM(data.endog, data.exog, M=norms.HuberT()) +# results_Huber2 = m2_Huber.fit(cov="H2") +# m3_Huber = RLM(data.endog, data.exog, M=norms.HuberT()) +# results_Huber3 = m3_Huber.fit(cov="H3") +############## +### Hampel ### +############## +# m1_Hampel = RLM(data.endog, data.exog, M=norms.Hampel()) +# results_Hampel1 = m1_Hampel.fit() +# m2_Hampel = RLM(data.endog, data.exog, M=norms.Hampel()) +# results_Hampel2 = m2_Hampel.fit(cov="H2") +# m3_Hampel = RLM(data.endog, data.exog, M=norms.Hampel()) +# results_Hampel3 = m3_Hampel.fit(cov="H3") +################ +### Bisquare ### +################ +# m1_Bisquare = RLM(data.endog, data.exog, M=norms.TukeyBiweight()) +# results_Bisquare1 = m1_Bisquare.fit() +# m2_Bisquare = RLM(data.endog, data.exog, M=norms.TukeyBiweight()) +# results_Bisquare2 = m2_Bisquare.fit(cov="H2") +# m3_Bisquare = RLM(data.endog, data.exog, M=norms.TukeyBiweight()) +# results_Bisquare3 = m3_Bisquare.fit(cov="H3") + + +############################################## +# Huber's Proposal 2 scaling # +############################################## + +################ +### Huber'sT ### +################ + m1_Huber_H = RLM(data.endog, data.exog, M=norms.HuberT()) + results_Huber1_H = m1_Huber_H.fit(scale_est=scale.HuberScale()) +# m2_Huber_H +# m3_Huber_H +# m4 = RLM(data.endog, data.exog, M=norms.HuberT()) +# results4 = m1.fit(scale_est="Huber") +# m5 = RLM(data.endog, data.exog, M=norms.Hampel()) +# results5 = m2.fit(scale_est="Huber") +# m6 = RLM(data.endog, data.exog, M=norms.TukeyBiweight()) +# results6 = m3.fit(scale_est="Huber") + + + + +# print """Least squares fit +#%s +#Huber Params, t = 2. +#%s +#Ramsay's E Params +#%s +#Andrew's Wave Params +#%s +#Hampel's 17A Function +#%s +#""" % (results_ols.params, results_huber.params, results_ramsaysE.params, +# results_andrewWave.params, results_hampel.params) diff --git a/statsmodels/robust/scale.py b/statsmodels/robust/scale.py new file mode 100644 index 0000000..de5917f --- /dev/null +++ b/statsmodels/robust/scale.py @@ -0,0 +1,241 @@ +""" +Support and standalone functions for Robust Linear Models + +References +---------- +PJ Huber. 'Robust Statistics' John Wiley and Sons, Inc., New York, 1981. + +R Venables, B Ripley. 'Modern Applied Statistics in S' + Springer, New York, 2002. +""" +from statsmodels.compat.python import range +import numpy as np +from scipy.stats import norm as Gaussian +from . import norms +from statsmodels.tools import tools + + +def mad(a, c=Gaussian.ppf(3/4.), axis=0, center=np.median): + # c \approx .6745 + """ + The Median Absolute Deviation along given axis of an array + + Parameters + ---------- + a : array-like + Input array. + c : float, optional + The normalization constant. Defined as scipy.stats.norm.ppf(3/4.), + which is approximately .6745. + axis : int, optional + The defaul is 0. Can also be None. + center : callable or float + If a callable is provided, such as the default `np.median` then it + is expected to be called center(a). The axis argument will be applied + via np.apply_over_axes. Otherwise, provide a float. + + Returns + ------- + mad : float + `mad` = median(abs(`a` - center))/`c` + """ + a = np.asarray(a) + if callable(center): + center = np.apply_over_axes(center, a, axis) + return np.median((np.fabs(a-center))/c, axis=axis) + + +class Huber(object): + """ + Huber's proposal 2 for estimating location and scale jointly. + + Parameters + ---------- + c : float, optional + Threshold used in threshold for chi=psi**2. Default value is 1.5. + tol : float, optional + Tolerance for convergence. Default value is 1e-08. + maxiter : int, optional0 + Maximum number of iterations. Default value is 30. + norm : statsmodels.robust.norms.RobustNorm, optional + A robust norm used in M estimator of location. If None, + the location estimator defaults to a one-step + fixed point version of the M-estimator using Huber's T. + + call + Return joint estimates of Huber's scale and location. + + Examples + -------- + >>> import numpy as np + >>> import statsmodels.api as sm + >>> chem_data = np.array([2.20, 2.20, 2.4, 2.4, 2.5, 2.7, 2.8, 2.9, 3.03, + ... 3.03, 3.10, 3.37, 3.4, 3.4, 3.4, 3.5, 3.6, 3.7, 3.7, 3.7, 3.7, + ... 3.77, 5.28, 28.95]) + >>> sm.robust.scale.huber(chem_data) + (array(3.2054980819923693), array(0.67365260010478967)) + """ + + def __init__(self, c=1.5, tol=1.0e-08, maxiter=30, norm=None): + self.c = c + self.maxiter = maxiter + self.tol = tol + self.norm = norm + tmp = 2 * Gaussian.cdf(c) - 1 + self.gamma = tmp + c**2 * (1 - tmp) - 2 * c * Gaussian.pdf(c) + + def __call__(self, a, mu=None, initscale=None, axis=0): + """ + Compute Huber's proposal 2 estimate of scale, using an optional + initial value of scale and an optional estimate of mu. If mu + is supplied, it is not reestimated. + + Parameters + ---------- + a : array + 1d array + mu : float or None, optional + If the location mu is supplied then it is not reestimated. + Default is None, which means that it is estimated. + initscale : float or None, optional + A first guess on scale. If initscale is None then the standardized + median absolute deviation of a is used. + + Notes + ----- + `Huber` minimizes the function + + sum(psi((a[i]-mu)/scale)**2) + + as a function of (mu, scale), where + + psi(x) = np.clip(x, -self.c, self.c) + """ + a = np.asarray(a) + if mu is None: + n = a.shape[0] - 1 + mu = np.median(a, axis=axis) + est_mu = True + else: + n = a.shape[0] + mu = mu + est_mu = False + + if initscale is None: + scale = mad(a, axis=axis) + else: + scale = initscale + scale = tools.unsqueeze(scale, axis, a.shape) + mu = tools.unsqueeze(mu, axis, a.shape) + return self._estimate_both(a, scale, mu, axis, est_mu, n) + + def _estimate_both(self, a, scale, mu, axis, est_mu, n): + """ + Estimate scale and location simultaneously with the following + pseudo_loop: + + while not_converged: + mu, scale = estimate_location(a, scale, mu), estimate_scale(a, scale, mu) + + where estimate_location is an M-estimator and estimate_scale implements + the check used in Section 5.5 of Venables & Ripley + """ + for _ in range(self.maxiter): + # Estimate the mean along a given axis + if est_mu: + if self.norm is None: + # This is a one-step fixed-point estimator + # if self.norm == norms.HuberT + # It should be faster than using norms.HuberT + nmu = np.clip(a, mu-self.c*scale, + mu+self.c*scale).sum(axis) / a.shape[axis] + else: + nmu = norms.estimate_location(a, scale, self.norm, axis, mu, + self.maxiter, self.tol) + else: + # Effectively, do nothing + nmu = mu.squeeze() + nmu = tools.unsqueeze(nmu, axis, a.shape) + + subset = np.less_equal(np.fabs((a - mu)/scale), self.c) + card = subset.sum(axis) + + nscale = np.sqrt(np.sum(subset * (a - nmu)**2, axis) \ + / (n * self.gamma - (a.shape[axis] - card) * self.c**2)) + nscale = tools.unsqueeze(nscale, axis, a.shape) + + test1 = np.alltrue(np.less_equal(np.fabs(scale - nscale), + nscale * self.tol)) + test2 = np.alltrue(np.less_equal(np.fabs(mu - nmu), nscale*self.tol)) + if not (test1 and test2): + mu = nmu + scale = nscale + else: + return nmu.squeeze(), nscale.squeeze() + raise ValueError('joint estimation of location and scale failed to converge in %d iterations' % self.maxiter) + + +huber = Huber() + + +class HuberScale(object): + r""" + Huber's scaling for fitting robust linear models. + + Huber's scale is intended to be used as the scale estimate in the + IRLS algorithm and is slightly different than the `Huber` class. + + Parameters + ---------- + d : float, optional + d is the tuning constant for Huber's scale. Default is 2.5 + tol : float, optional + The convergence tolerance + maxiter : int, optiona + The maximum number of iterations. The default is 30. + + Methods + ------- + call + Return's Huber's scale computed as below + + Notes + -------- + Huber's scale is the iterative solution to + + scale_(i+1)**2 = 1/(n*h)*sum(chi(r/sigma_i)*sigma_i**2 + + where the Huber function is + + chi(x) = (x**2)/2 for \|x\| < d + chi(x) = (d**2)/2 for \|x\| >= d + + and the Huber constant h = (n-p)/n*(d**2 + (1-d**2)*\ + scipy.stats.norm.cdf(d) - .5 - d*sqrt(2*pi)*exp(-0.5*d**2) + """ + def __init__(self, d=2.5, tol=1e-08, maxiter=30): + self.d = d + self.tol = tol + self.maxiter = maxiter + + def __call__(self, df_resid, nobs, resid): + h = (df_resid)/nobs*(self.d**2 + (1-self.d**2)*\ + Gaussian.cdf(self.d)-.5 - self.d/(np.sqrt(2*np.pi))*\ + np.exp(-.5*self.d**2)) + s = mad(resid) + subset = lambda x: np.less(np.fabs(resid/x),self.d) + chi = lambda s: subset(s)*(resid/s)**2/2+(1-subset(s))*(self.d**2/2) + scalehist = [np.inf,s] + niter = 1 + while (np.abs(scalehist[niter-1] - scalehist[niter])>self.tol \ + and niter < self.maxiter): + nscale = np.sqrt(1/(nobs*h)*np.sum(chi(scalehist[-1]))*\ + scalehist[-1]**2) + scalehist.append(nscale) + niter += 1 + #if niter == self.maxiter: + # raise ValueError("Huber's scale failed to converge") + return scalehist[-1] + + +hubers_scale = HuberScale() diff --git a/statsmodels/robust/tests/__init__.py b/statsmodels/robust/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/robust/tests/results/__init__.py b/statsmodels/robust/tests/results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/robust/tests/results/results_rlm.py b/statsmodels/robust/tests/results/results_rlm.py new file mode 100644 index 0000000..6065912 --- /dev/null +++ b/statsmodels/robust/tests/results/results_rlm.py @@ -0,0 +1,435 @@ +# RLM MODEL RESULTS + +import numpy as np + + +def _shift_intercept(arr): + """ + A convenience function to make the SAS covariance matrix + compatible with statsmodels.rlm covariance + """ + arr = np.asarray(arr) + side = int(np.sqrt(len(arr))) + return np.roll(np.roll(arr.reshape(side, side), -1, axis=1), -1, axis=0) + + +class Huber(object): + """ + """ + def __init__(self): + self.params = np.array([0.82937387, 0.92610818, + -0.12784916, -41.02653105]) + self.bse = np.array([0.11118035, 0.3034081, 0.12885259, 9.8073472]) + self.scale = 2.4407137948148447 + self.weights = np.array([ + 1., 1., 0.7858871, 0.50494094, 1., + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., + 0.36814106]) + self.resid = np.array([ + 3.05027584, -2.07757332, 4.17721071, + 6.50163171, -1.64615192, -2.57226011, -1.73127333, -0.73127333, + -2.25476463, 0.48083217, 1.63147461, 1.42973363, -2.26346951, + -0.78323693, 2.26646556, 0.88291808, -0.83307835, 0.06186577, + 0.26360675, 1.54306186, -8.91752986]) + self.df_model = 3 + self.df_resid = 17 + self.bcov_unscaled = np.array([ + [1.72887367e-03, -3.47079127e-03, + -6.79080082e-04, 2.73387119e-02], + [-3.47079127e-03, 1.28754242e-02, 9.95952051e-07, + -6.19611175e-02], + [-6.79080082e-04, 9.95952051e-07, 2.32216722e-03, + -1.59355028e-01], + [2.73387119e-02, -6.19611175e-02, -1.59355028e-01, + 1.34527267e+01]]) # From R + self.fittedvalues = np.array([ + 38.94972416, 39.07757332, 32.82278929, 21.49836829, + 19.64615192, 20.57226011, 20.73127333, 20.73127333, + 17.25476463, 13.51916783, 12.36852539, 11.57026637, + 13.26346951, 12.78323693, 5.73353444, 6.11708192, + 8.83307835, 7.93813423, 8.73639325, 13.45693814, + 23.91752986]) + self.tvalues = np.array([7.45971657, 3.0523516, + -0.99221261, -4.18324448]) + # from R this is equivalent to + # self.res1.params/np.sqrt(np.diag(self.res1.bcov_scaled)) + + # The below are taken from SAS + huber_h1 = [ + 95.8813, 0.19485, -0.44161, -1.13577, 0.1949, 0.01232, + -0.02474, -0.00484, -0.4416, -0.02474, 0.09177, 0.00001, -1.1358, + -0.00484, 0.00001, 0.01655] + h1 = _shift_intercept(huber_h1) + + huber_h2 = [ + 82.6191, 0.07942, -0.23915, -0.95604, 0.0794, 0.01427, + -0.03013, -0.00344, -0.2392, -0.03013, 0.10391, -0.00166, -0.9560, + -0.00344, -0.00166, 0.01392] + h2 = _shift_intercept(huber_h2) + + huber_h3 = [ + 70.1633, -0.04533, -0.00790, -0.78618, -0.0453, 0.01656, + -0.03608, -0.00203, -0.0079, -0.03608, 0.11610, -0.00333, -0.7862, + -0.00203, -0.00333, 0.01138] + h3 = _shift_intercept(huber_h3) + + +class Hampel(object): + """ + """ + def __init__(self): + self.params = np.array([0.74108304, 1.22507934, + -0.14552506, -40.47473236]) + self.bse = np.array([0.13482596, 0.36793632, 0.1562567, 11.89315426]) + self.scale = 3.0882646556217064 + self.weights = np.array([ + 1., 1., 1., 1., 1., 1., 1., 1., 1., + 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0.80629719]) + self.resid = np.array([ + 3.06267708, -2.08284798, 4.36377602, + 5.78635972, -1.7634816, + -2.98856094, -2.34048993, -1.34048993, -3.02422878, 1.08249252, + 2.39221804, 2.47177232, -1.62645737, -0.25076107, 2.32088237, + 0.88430719, -1.37812296, -0.35944755, -0.43900184, 1.40555003, + -7.65988702]) + self.df_model = 3 + self.df_resid = 17 + self.bcov_unscaled = np.array([ + [1.72887367e-03, -3.47079127e-03, + -6.79080082e-04, 2.73387119e-02], + [-3.47079127e-03, 1.28754242e-02, 9.95952051e-07, + -6.19611175e-02], + [-6.79080082e-04, 9.95952051e-07, 2.32216722e-03, + -1.59355028e-01], + [2.73387119e-02, -6.19611175e-02, -1.59355028e-01, + 1.34527267e+01]]) + self.fittedvalues = np.array([ + 38.93732292, 39.08284798, + 32.63622398, 22.21364028, + 19.7634816, 20.98856094, 21.34048993, 21.34048993, + 18.02422878, 12.91750748, 11.60778196, 10.52822768, + 12.62645737, 12.25076107, 5.67911763, 6.11569281, + 9.37812296, 8.35944755, 9.43900184, 13.59444997, + 22.65988702]) + self.tvalues = np.array([5.49659011, 3.32959607, + -0.93132046, -3.40319578]) + + hampel_h1 = [ + 141.309, 0.28717, -0.65085, -1.67388, 0.287, 0.01816, + -0.03646, -0.00713, -0.651, -0.03646, 0.13524, 0.00001, -1.674, + -0.00713, 0.00001, 0.02439] + h1 = _shift_intercept(hampel_h1) + + hampel_h2 = [ + 135.248, 0.18207, -0.36884, -1.60217, 0.182, 0.02120, + -0.04563, -0.00567, -0.369, -0.04563, 0.15860, -0.00290, -1.602, + -0.00567, -0.00290, 0.02329] + h2 = _shift_intercept(hampel_h2) + + hampel_h3 = [ + 128.921, 0.05409, -0.02445, -1.52732, 0.054, 0.02514, + -0.05732, -0.00392, -0.024, -0.05732, 0.18871, -0.00652, -1.527, + -0.00392, -0.00652, 0.02212] + h3 = _shift_intercept(hampel_h3) + + +class BiSquare(object): + def __init__(self): + self.params = np.array([0.9275471, 0.65073222, + -0.11233103, -42.28525369]) + self.bse = np.array([0.10805398, 0.29487634, 0.12522928, 9.5315672]) + self.scale = 2.2818858795649497 + self.weights = np.array([ + 0.89283149, 0.88496132, 0.79040651, + 0.3358111, 0.94617358, 0.90040725, 0.96630596, 0.99729171, + 0.94968061, 0.99900087, 0.98959903, 0.99831448, 0.84731833, + 0.96455873, 0.91767906, 0.98724523, 0.99762848, 0.99694419, + 0.98650731, 0.95897484, 0.00222999]) + self.resid = np.array([ + 2.50917802, -2.60315301, 3.56070896, + 6.93256033, -1.76597524, -2.41670746, -1.39345348, -.39345348, + -1.70651907, -0.23917521, 0.77180408, 0.31020526, + -3.01451315, -1.42960401, 2.19218084, 0.85518774, + -0.36817892, 0.4181383, 0.87973712, 1.53911661, + -10.43556344]) + self.df_model = 3 + self.df_resid = 17 + self.bcov_unscaled = np.array([ + [1.72887367e-03, -3.47079127e-03, + -6.79080082e-04, 2.73387119e-02], + [-3.47079127e-03, 1.28754242e-02, 9.95952051e-07, + -6.19611175e-02], + [-6.79080082e-04, 9.95952051e-07, 2.32216722e-03, + -1.59355028e-01], + [2.73387119e-02, -6.19611175e-02, -1.59355028e-01, + 1.34527267e+01]]) + self.fittedvalues = np.array([ + 39.49082198, 39.60315301, 33.43929104, + 21.06743967, + 19.76597524, 20.41670746, 20.39345348, 20.39345348, + 16.70651907, 14.23917521, 13.22819592, 12.68979474, + 14.01451315, 13.42960401, 5.80781916, 6.14481226, + 8.36817892, 7.5818617, 8.12026288, 13.46088339, + 25.43556344]) + self.tvalues = np.array([8.58410823, 2.20679698, + -0.8970029, -4.43633799]) + + bisquare_h1 = [ + 90.3354, 0.18358, -0.41607, -1.07007, 0.1836, 0.01161, + -0.02331, -0.00456, -0.4161, -0.02331, 0.08646, 0.00001, -1.0701, + -0.00456, 0.00001, 0.01559] + h1 = _shift_intercept(bisquare_h1) + + bisquare_h2 = [ + 67.82521, 0.091288, -0.29038, -0.78124, 0.091288, + 0.013849, -0.02914, -0.00352, -0.29038, -0.02914, 0.101088, -0.001, + -0.78124, -0.00352, -0.001, 0.011766] + h2 = _shift_intercept(bisquare_h2) + + bisquare_h3 = [ + 48.8983, 0.000442, -0.15919, -0.53523, 0.000442, + 0.016113, -0.03461, -0.00259, -0.15919, -0.03461, 0.112728, + -0.00164, -0.53523, -0.00259, -0.00164, 0.008414] + h3 = _shift_intercept(bisquare_h3) + + +class Andrews(object): + def __init__(self): + self.params = [0.9282, 0.6492, -.1123, -42.2930] + self.bse = [.1061, .2894, .1229, 9.3561] + self.scale = 2.2801 + self.df_model = 3. + self.df_resid = 17. + # bcov_unscaled not defined because it is not given as part of SAS + self.resid = [ + 2.503338458, -2.608934536, 3.5548678338, 6.9333705014, + -1.768179527, -2.417404513, -1.392991531, -0.392991531, + -1.704759385, -0.244545418, 0.7659115325, 0.3028635237, + -3.019999429, -1.434221475, 2.1912017882, 0.8543828047, + -0.366664104, 0.4192468573, 0.8822948661, 1.5378731634, + -10.44592783] + + self.sresids = [ + 1.0979293816, -1.144242351, 1.5591155202, 3.040879735, + -0.775498914, -1.06023995, -0.610946684, -0.172360612, + -0.747683723, -0.107254214, 0.3359181307, 0.1328317233, + -1.324529688, -0.629029563, 0.9610305856, 0.3747203984, + -0.160813769, 0.1838758324, 0.3869622398, 0.6744897502, + -4.581438458] + + self.weights = [ + 0.8916509101, 0.8826581922, 0.7888664106, 0.3367252734, + 0.9450252405, 0.8987321912, 0.9656622, 0.9972406688, + 0.948837669, 0.9989310017, 0.9895434667, 0.998360628, + 0.8447116551, 0.9636222149, 0.916330067, 0.9869982597, + 0.9975977354, 0.9968600162, 0.9861384742, 0.9582432444, 0] + + def conf_int(self): # method to be consistent with sm + return [(0.7203, 1.1360), (.0819, 1.2165), (-.3532, .1287), + (-60.6305, -23.9555)] + + andrews_h1 = [ + 87.5357, 0.177891, -0.40318, -1.03691, 0.177891, 0.01125, + -0.02258, -0.00442, -0.40318, -0.02258, 0.083779, 6.481E-6, + -1.03691, -0.00442, 6.481E-6, 0.01511] + h1 = _shift_intercept(andrews_h1) + + andrews_h2 = [ + 66.50472, 0.10489, -0.3246, -0.76664, 0.10489, 0.012786, + -0.02651, -0.0036, -0.3246, -0.02651, 0.09406, -0.00065, + -0.76664, -0.0036, -0.00065, 0.011567] + h2 = _shift_intercept(andrews_h2) + + andrews_h3 = [ + 48.62157, 0.034949, -0.24633, -0.53394, 0.034949, 0.014088, + -0.02956, -0.00287, -0.24633, -0.02956, 0.100628, -0.00104, + -0.53394, -0.00287, -0.00104, 0.008441] + h3 = _shift_intercept(andrews_h3) + + +# RLM Results with Huber's Proposal 2 +# Obtained from SAS + +class HuberHuber(object): + def __init__(self): + self.h1 = [ + 114.4936, 0.232675, -0.52734, -1.35624, 0.232675, 0.014714, + -0.02954, -0.00578, -0.52734, -0.02954, 0.10958, 8.476E-6, + -1.35624, -0.00578, 8.476E-6, 0.019764] + self.h1 = _shift_intercept(self.h1) + self.h2 = [ + 103.2876, 0.152602, -0.33476, -1.22084, 0.152602, 0.016904, + -0.03766, -0.00434, -0.33476, -0.03766, 0.132043, -0.00214, + -1.22084, -0.00434, -0.00214, 0.017739] + self.h2 = _shift_intercept(self.h2) + self.h3 = [ + 91.7544, 0.064027, -0.11379, -1.08249, 0.064027, 0.019509, + -0.04702, -0.00278, -0.11379, -0.04702, 0.157872, -0.00462, + -1.08249, -0.00278, -0.00462, 0.015677] + self.h3 = _shift_intercept(self.h3) + self.resid = [ + 2.909155172, -2.225912162, 4.134132661, 6.163172632, + -1.741815737, -2.789321552, -2.02642336, -1.02642336, + -2.593402734, 0.698655, 1.914261011, 1.826699492, -2.031210331, + -0.592975466, 2.306098648, 0.900896645, -1.037551854, + -0.092080512, -0.004518993, 1.471737448, -8.498372406] + self.sresids = [ + 0.883018497, -0.675633129, 1.25483702, 1.870713355, + -0.528694904, -0.84664529, -0.615082113, -0.311551209, + -0.787177874, 0.212063383, 0.581037374, 0.554459746, + -0.616535106, -0.179986379, 0.699972205, 0.273449972, + -0.314929051, -0.027949281, -0.001371654, 0.446717797, + -2.579518651] + self.weights = [ + 1, 1, 1, 0.718977066, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 0.52141511] + + self.params = (.7990, 1.0475, -0.1351, -41.0892) + self.bse = (.1213, .3310, .1406, 10.7002) + self.scale = 3.2946 + self.df_model = 3 + self.df_resid = 17 + + def conf_int(self): # method for consistency with sm + return [(0.5612, 1.0367), (.3987, 1.6963), + (-.4106, .1405), (-62.0611, -20.1172)] + + +class HampelHuber(object): + def __init__(self): + self.h1 = [ + 147.4727, 0.299695, -0.67924, -1.7469, 0.299695, 0.018952, + -0.03805, -0.00744, -0.67924, -0.03805, 0.141144, 0.000011, + -1.7469, -0.00744, 0.000011, 0.025456] + self.h1 = _shift_intercept(self.h1) + self.h2 = [ + 141.148, 0.190007, -0.38493, -1.67206, 0.190007, 0.02213, + -0.04762, -0.00592, -0.38493, -0.04762, 0.165518, -0.00303, + -1.67206, -0.00592, -0.00303, 0.024301] + self.h2 = _shift_intercept(self.h2) + self.h3 = [ + 134.5444, 0.05645, -0.02552, -1.59394, 0.05645, 0.026232, + -0.05982, -0.00409, -0.02552, -0.05982, 0.196946, -0.0068, + -1.59394, -0.00409, -0.0068, 0.023083] + self.h3 = _shift_intercept(self.h3) + self.resid = [ + 3.125725599, -2.022218392, 4.434082972, 5.753880172, + -1.744479058, -2.995299443, -2.358455878, -1.358455878, + -3.068281354, 1.150212629, 2.481708553, 2.584584946, + -1.553899388, -0.177335865, 2.335744732, 0.891912757, + -1.43012351, -0.394515569, -0.497391962, 1.407968887, + -7.505098501] + self.sresids = [ + 0.952186413, -0.616026205, 1.350749906, 1.752798302, + -0.531418771, -0.912454834, -0.718453867, -0.413824947, + -0.934687235, 0.350388031, 0.756000196, 0.787339321, + -0.473362692, -0.054021633, 0.711535395, 0.27170242, + -0.43565698, -0.120180852, -0.151519976, 0.428908041, + -2.28627005] + self.weights = [ + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 0.874787298] + + self.params = (.7318, 1.2508, -0.1479, -40.2712) + self.bse = (.1377, .3757, .1596, 12.1438) + self.scale = 3.2827 + self.df_model = 3 + self.df_resid = 17 + + def conf_int(self): + return [(0.4619, 1.0016), (.5145, 1.9872), + (-.4607, .1648), (-64.0727, -16.4697)] + + +class BisquareHuber(object): + def __init__(self): + self.h1 = [ + 129.9556, 0.264097, -0.59855, -1.5394, 0.264097, + 0.016701, -0.03353, -0.00656, -0.59855, -0.03353, + 0.124379, 9.621E-6, -1.5394, -0.00656, 9.621E-6, 0.022433] + self.h1 = _shift_intercept(self.h1) + self.h2 = [ + 109.7685, 0.103038, -0.25926, -1.28355, 0.103038, 0.0214, + -0.04688, -0.00453, -0.25926, -0.04688, 0.158535, -0.00327, + -1.28355, -0.00453, -0.00327, 0.018892] + self.h2 = _shift_intercept(self.h2) + self.h3 = [ + 91.80527, -0.09171, 0.171716, -1.05244, -0.09171, + 0.027999, -0.06493, -0.00223, 0.171716, -0.06493, 0.203254, + -0.0071, -1.05244, -0.00223, -0.0071, 0.015584] + self.h3 = _shift_intercept(self.h3) + self.resid = [ + 3.034895447, -2.09863887, 4.229870063, 6.18871385, + -1.715906134, -2.763596142, -2.010080245, -1.010080245, + -2.590747917, 0.712961901, 1.914770759, 1.82892645, -2.019969464, + -0.598781979, 2.260467209, 0.859864256, -1.057306197, -0.122565974, + -0.036721665, 1.471074632, -8.432085298] + self.sresids = [ + 0.918227061, -0.634956635, 1.279774287, 1.872435025, + -0.519158394, -0.836143718, -0.608162656, -0.305606249, -.78384738, + 0.215711191, 0.579326161, 0.553353415, -0.611154703, -0.181165324, + 0.683918836, 0.26015744, -0.319894764, -0.037083121, -0.011110375, + 0.445083055, -2.551181429] + self.weights = [ + 0.924649089, 0.963600796, 0.856330585, 0.706048833, + 0.975591792, 0.937309703, 0.966582366, 0.991507994, 0.944798311, + 0.995764589, 0.969652425, 0.972293856, 0.966255569, 0.997011618, + 0.957833493, 0.993842376, 0.990697247, 0.9998747, 0.999988752, + 0.982030803, 0.494874977] + self.params = (.7932, 1.0477, -0.1335, -40.8949) + self.bse = (.1292, .3527, .1498, 11.3998) + self.scale = 3.3052 + self.df_model = 3 + self.df_resid = 17 + + def conf_int(self): + return [(0.5399, 1.0465), (.3565, 1.7389), + (-.4271, .1600), (-63.2381, -18.5517)] + + +class AndrewsHuber(object): + def __init__(self): + self.h1 = [ + 129.9124, 0.264009, -0.59836, -1.53888, 0.264009, + 0.016696, -0.03352, -0.00656, -0.59836, -0.03352, 0.124337, + 9.618E-6, -1.53888, -0.00656, 9.618E-6, 0.022425] + self.h1 = _shift_intercept(self.h1) + self.h2 = [ + 109.7595, 0.105022, -0.26535, -1.28332, .105022, 0.021321, + -0.04664, -0.00456, -0.26535, -0.04664, 0.157885, -0.00321, + -1.28332, -0.00456, -0.00321, 0.018895] + self.h2 = _shift_intercept(self.h2) + self.h3 = [ + 91.82518, -0.08649, 0.155965, -1.05238, -0.08649, 0.027785, + -0.06427, -0.0023, 0.155965, -0.06427, 0.201544, -0.00693, + -1.05238, -0.0023, -0.00693, 0.015596] + self.h3 = _shift_intercept(self.h3) + self.resid = [ + 3.040515104, -2.093093543, 4.235081748, 6.188729166, + -1.714119676, -2.762695255, -2.009618953, -1.009618953, + -2.591649784, 0.715967584, 1.918445405, 1.833412337, + -2.016815123, -0.595695587, 2.260536347, 0.859710406, + -1.059386228, -0.1241257, -0.039092633, 1.471556455, + -8.424624872] + self.sresids = [ + 0.919639919, -0.633081011, 1.280950793, 1.871854667, + -0.518455862, -0.835610004, -0.607833129, -0.305371248, + -0.783875269, 0.216552902, 0.580256606, 0.554537345, + -0.610009696, -0.180175208, 0.683726076, 0.260029627, + -0.320423952, -0.037543293, -0.011824031, 0.445089734, + -2.548127888] + self.weights = [ + 0.923215335, 0.963157359, 0.854300342, 0.704674258, + 0.975199805, 0.936344742, 0.9660077, 0.991354016, 0.943851708, + 0.995646409, 0.968993767, 0.971658421, 0.965766352, 0.99698502, + 0.957106815, 0.993726436, 0.990483134, 0.999868981, 0.999987004, + 0.981686004, 0.496752113] + self.params = (.7928, 1.0486, -0.1336, -40.8818) + self.bse = (.1292, .3526, .1498, 11.3979) + self.scale = 3.3062 + self.df_model = 3 + self.df_resid = 17 + + def conf_int(self): + return [(0.5395, 1.0460), (.3575, 1.7397), + (-.4271, .1599), (-63.2213, -18.5423)] diff --git a/statsmodels/robust/tests/test_rlm.py b/statsmodels/robust/tests/test_rlm.py new file mode 100644 index 0000000..0e43757 --- /dev/null +++ b/statsmodels/robust/tests/test_rlm.py @@ -0,0 +1,293 @@ +""" +Test functions for sm.rlm +""" +import numpy as np +from numpy.testing import assert_almost_equal, assert_allclose +import pytest +from scipy import stats +import statsmodels.api as sm +from statsmodels.robust.robust_linear_model import RLM +from statsmodels.robust import norms +from statsmodels.robust.scale import HuberScale + +DECIMAL_4 = 4 +DECIMAL_3 = 3 +DECIMAL_2 = 2 +DECIMAL_1 = 1 + + +class CheckRlmResultsMixin(object): + ''' + res2 contains results from Rmodelwrap or were obtained from a statistical + packages such as R, Stata, or SAS and written to results.results_rlm + + Covariance matrices were obtained from SAS and are imported from + results.results_rlm + ''' + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, DECIMAL_4) + + decimal_standarderrors = DECIMAL_4 + + def test_standarderrors(self): + assert_almost_equal(self.res1.bse, self.res2.bse, + self.decimal_standarderrors) + + # TODO: get other results from SAS, though if it works for one... + def test_confidenceintervals(self): + if not hasattr(self.res2, 'conf_int'): + pytest.skip("Results from R") + + assert_almost_equal(self.res1.conf_int(), self.res2.conf_int(), + DECIMAL_4) + + decimal_scale = DECIMAL_4 + + def test_scale(self): + assert_almost_equal(self.res1.scale, self.res2.scale, + self.decimal_scale) + + def test_weights(self): + assert_almost_equal(self.res1.weights, self.res2.weights, DECIMAL_4) + + def test_residuals(self): + assert_almost_equal(self.res1.resid, self.res2.resid, DECIMAL_4) + + def test_degrees(self): + assert_almost_equal(self.res1.model.df_model, self.res2.df_model, + DECIMAL_4) + assert_almost_equal(self.res1.model.df_resid, self.res2.df_resid, + DECIMAL_4) + + def test_bcov_unscaled(self): + if not hasattr(self.res2, 'bcov_unscaled'): + pytest.skip("No unscaled cov matrix from SAS") + + assert_almost_equal(self.res1.bcov_unscaled, + self.res2.bcov_unscaled, DECIMAL_4) + + decimal_bcov_scaled = DECIMAL_4 + + def test_bcov_scaled(self): + assert_almost_equal(self.res1.bcov_scaled, self.res2.h1, + self.decimal_bcov_scaled) + assert_almost_equal(self.res1.h2, self.res2.h2, + self.decimal_bcov_scaled) + assert_almost_equal(self.res1.h3, self.res2.h3, + self.decimal_bcov_scaled) + + def test_tvalues(self): + if not hasattr(self.res2, 'tvalues'): + pytest.skip("No tvalues in benchmark") + + assert_allclose(self.res1.tvalues, self.res2.tvalues, rtol=0.003) + + def test_tpvalues(self): + # test comparing tvalues and pvalues with normal implementation + # make sure they use normal distribution (inherited in results class) + params = self.res1.params + tvalues = params / self.res1.bse + pvalues = stats.norm.sf(np.abs(tvalues)) * 2 + half_width = stats.norm.isf(0.025) * self.res1.bse + conf_int = np.column_stack((params - half_width, params + half_width)) + + assert_almost_equal(self.res1.tvalues, tvalues) + assert_almost_equal(self.res1.pvalues, pvalues) + assert_almost_equal(self.res1.conf_int(), conf_int) + + +class TestRlm(CheckRlmResultsMixin): + @classmethod + def setup_class(cls): + from statsmodels.datasets.stackloss import load + cls.data = load(as_pandas=False) # class attributes for subclasses + cls.data.exog = sm.add_constant(cls.data.exog, prepend=False) + # Test precisions + cls.decimal_standarderrors = DECIMAL_1 + cls.decimal_scale = DECIMAL_3 + + model = RLM(cls.data.endog, cls.data.exog, M=norms.HuberT()) + results = model.fit() + h2 = model.fit(cov="H2").bcov_scaled + h3 = model.fit(cov="H3").bcov_scaled + cls.res1 = results + cls.res1.h2 = h2 + cls.res1.h3 = h3 + + def setup(self): + from .results.results_rlm import Huber + self.res2 = Huber() + + @pytest.mark.smoke + def test_summary(self): + self.res1.summary() + + +class TestHampel(TestRlm): + @classmethod + def setup_class(cls): + super(TestHampel, cls).setup_class() + # Test precisions + cls.decimal_standarderrors = DECIMAL_2 + cls.decimal_scale = DECIMAL_3 + cls.decimal_bcov_scaled = DECIMAL_3 + + model = RLM(cls.data.endog, cls.data.exog, M=norms.Hampel()) + results = model.fit() + h2 = model.fit(cov="H2").bcov_scaled + h3 = model.fit(cov="H3").bcov_scaled + cls.res1 = results + cls.res1.h2 = h2 + cls.res1.h3 = h3 + + def setup(self): + from .results.results_rlm import Hampel + self.res2 = Hampel() + + +class TestRlmBisquare(TestRlm): + @classmethod + def setup_class(cls): + super(TestRlmBisquare, cls).setup_class() + # Test precisions + cls.decimal_standarderrors = DECIMAL_1 + + model = RLM(cls.data.endog, cls.data.exog, M=norms.TukeyBiweight()) + results = model.fit() + h2 = model.fit(cov="H2").bcov_scaled + h3 = model.fit(cov="H3").bcov_scaled + cls.res1 = results + cls.res1.h2 = h2 + cls.res1.h3 = h3 + + def setup(self): + from .results.results_rlm import BiSquare + self.res2 = BiSquare() + + +class TestRlmAndrews(TestRlm): + @classmethod + def setup_class(cls): + super(TestRlmAndrews, cls).setup_class() + + model = RLM(cls.data.endog, cls.data.exog, M=norms.AndrewWave()) + results = model.fit() + h2 = model.fit(cov="H2").bcov_scaled + h3 = model.fit(cov="H3").bcov_scaled + cls.res1 = results + cls.res1.h2 = h2 + cls.res1.h3 = h3 + + def setup(self): + from .results.results_rlm import Andrews + self.res2 = Andrews() + + +# -------------------------------------------------------------------- +# tests with Huber scaling + +class TestRlmHuber(CheckRlmResultsMixin): + @classmethod + def setup_class(cls): + from statsmodels.datasets.stackloss import load + cls.data = load(as_pandas=False) + cls.data.exog = sm.add_constant(cls.data.exog, prepend=False) + + model = RLM(cls.data.endog, cls.data.exog, M=norms.HuberT()) + results = model.fit(scale_est=HuberScale()) + h2 = model.fit(cov="H2", scale_est=HuberScale()).bcov_scaled + h3 = model.fit(cov="H3", scale_est=HuberScale()).bcov_scaled + cls.res1 = results + cls.res1.h2 = h2 + cls.res1.h3 = h3 + + def setup(self): + from .results.results_rlm import HuberHuber + self.res2 = HuberHuber() + + +class TestHampelHuber(TestRlm): + @classmethod + def setup_class(cls): + super(TestHampelHuber, cls).setup_class() + + model = RLM(cls.data.endog, cls.data.exog, M=norms.Hampel()) + results = model.fit(scale_est=HuberScale()) + h2 = model.fit(cov="H2", scale_est=HuberScale()).bcov_scaled + h3 = model.fit(cov="H3", scale_est=HuberScale()).bcov_scaled + cls.res1 = results + cls.res1.h2 = h2 + cls.res1.h3 = h3 + + def setup(self): + from .results.results_rlm import HampelHuber + self.res2 = HampelHuber() + + +class TestRlmBisquareHuber(TestRlm): + @classmethod + def setup_class(cls): + super(TestRlmBisquareHuber, cls).setup_class() + + model = RLM(cls.data.endog, cls.data.exog, M=norms.TukeyBiweight()) + results = model.fit(scale_est=HuberScale()) + h2 = model.fit(cov="H2", scale_est=HuberScale()).bcov_scaled + h3 = model.fit(cov="H3", scale_est=HuberScale()).bcov_scaled + cls.res1 = results + cls.res1.h2 = h2 + cls.res1.h3 = h3 + + def setup(self): + from .results.results_rlm import BisquareHuber + self.res2 = BisquareHuber() + + +class TestRlmAndrewsHuber(TestRlm): + @classmethod + def setup_class(cls): + super(TestRlmAndrewsHuber, cls).setup_class() + + model = RLM(cls.data.endog, cls.data.exog, M=norms.AndrewWave()) + results = model.fit(scale_est=HuberScale()) + h2 = model.fit(cov="H2", scale_est=HuberScale()).bcov_scaled + h3 = model.fit(cov="H3", scale_est=HuberScale()).bcov_scaled + cls.res1 = results + cls.res1.h2 = h2 + cls.res1.h3 = h3 + + def setup(self): + from .results.results_rlm import AndrewsHuber + self.res2 = AndrewsHuber() + + +class TestRlmSresid(CheckRlmResultsMixin): + # Check GH#187 + @classmethod + def setup_class(cls): + from statsmodels.datasets.stackloss import load + cls.data = load(as_pandas=False) # class attributes for subclasses + cls.data.exog = sm.add_constant(cls.data.exog, prepend=False) + # Test precisions + cls.decimal_standarderrors = DECIMAL_1 + cls.decimal_scale = DECIMAL_3 + + model = RLM(cls.data.endog, cls.data.exog, M=norms.HuberT()) + results = model.fit(conv='sresid') + h2 = model.fit(cov="H2").bcov_scaled + h3 = model.fit(cov="H3").bcov_scaled + cls.res1 = results + cls.res1.h2 = h2 + cls.res1.h3 = h3 + + def setup(self): + from .results.results_rlm import Huber + self.res2 = Huber() + + +@pytest.mark.smoke +def test_missing(): + # see GH#2083 + import statsmodels.formula.api as smf + + d = {'Foo': [1, 2, 10, 149], 'Bar': [1, 2, 3, np.nan]} + smf.rlm('Foo ~ Bar', data=d) diff --git a/statsmodels/robust/tests/test_scale.py b/statsmodels/robust/tests/test_scale.py new file mode 100644 index 0000000..55e15e3 --- /dev/null +++ b/statsmodels/robust/tests/test_scale.py @@ -0,0 +1,126 @@ +""" +Test functions for models.robust.scale +""" + +import numpy as np +from numpy.random import standard_normal +from numpy.testing import assert_almost_equal, assert_equal +# Example from Section 5.5, Venables & Ripley (2002) + +import statsmodels.robust.scale as scale + +DECIMAL = 4 +# TODO: Can replicate these tests using stackloss data and R if this +# data is a problem + + +class TestChem(object): + @classmethod + def setup_class(cls): + cls.chem = np.array([ + 2.20, 2.20, 2.4, 2.4, 2.5, 2.7, 2.8, 2.9, 3.03, + 3.03, 3.10, 3.37, 3.4, 3.4, 3.4, 3.5, 3.6, 3.7, 3.7, 3.7, 3.7, + 3.77, 5.28, 28.95]) + + def test_mean(self): + assert_almost_equal(np.mean(self.chem), 4.2804, DECIMAL) + + def test_median(self): + assert_almost_equal(np.median(self.chem), 3.385, DECIMAL) + + def test_mad(self): + assert_almost_equal(scale.mad(self.chem), 0.52632, DECIMAL) + + def test_huber_scale(self): + assert_almost_equal(scale.huber(self.chem)[0], 3.20549, DECIMAL) + + def test_huber_location(self): + assert_almost_equal(scale.huber(self.chem)[1], 0.67365, DECIMAL) + + def test_huber_huberT(self): + n = scale.norms.HuberT() + n.t = 1.5 + h = scale.Huber(norm=n) + assert_almost_equal(scale.huber(self.chem)[0], h(self.chem)[0], + DECIMAL) + assert_almost_equal(scale.huber(self.chem)[1], h(self.chem)[1], + DECIMAL) + + def test_huber_Hampel(self): + hh = scale.Huber(norm=scale.norms.Hampel()) + assert_almost_equal(hh(self.chem)[0], 3.17434, DECIMAL) + assert_almost_equal(hh(self.chem)[1], 0.66782, DECIMAL) + + +class TestMad(object): + @classmethod + def setup_class(cls): + np.random.seed(54321) + cls.X = standard_normal((40, 10)) + + def test_mad(self): + m = scale.mad(self.X) + assert_equal(m.shape, (10,)) + + def test_mad_center(self): + n = scale.mad(self.X, center=0) + assert_equal(n.shape, (10,)) + + +class TestMadAxes(object): + @classmethod + def setup_class(cls): + np.random.seed(54321) + cls.X = standard_normal((40, 10, 30)) + + def test_axis0(self): + m = scale.mad(self.X, axis=0) + assert_equal(m.shape, (10, 30)) + + def test_axis1(self): + m = scale.mad(self.X, axis=1) + assert_equal(m.shape, (40, 30)) + + def test_axis2(self): + m = scale.mad(self.X, axis=2) + assert_equal(m.shape, (40, 10)) + + def test_axisneg1(self): + m = scale.mad(self.X, axis=-1) + assert_equal(m.shape, (40, 10)) + + +class TestHuber(object): + @classmethod + def setup_class(cls): + np.random.seed(54321) + cls.X = standard_normal((40, 10)) + + def basic_functionality(self): + h = scale.Huber(maxiter=100) + m, s = h(self.X) + assert_equal(m.shape, (10,)) + + +class TestHuberAxes(object): + @classmethod + def setup_class(cls): + np.random.seed(54321) + cls.X = standard_normal((40, 10, 30)) + cls.h = scale.Huber(maxiter=1000, tol=1.0e-05) + + def test_default(self): + m, s = self.h(self.X, axis=0) + assert_equal(m.shape, (10, 30)) + + def test_axis1(self): + m, s = self.h(self.X, axis=1) + assert_equal(m.shape, (40, 30)) + + def test_axis2(self): + m, s = self.h(self.X, axis=2) + assert_equal(m.shape, (40, 10)) + + def test_axisneg1(self): + m, s = self.h(self.X, axis=-1) + assert_equal(m.shape, (40, 10)) diff --git a/statsmodels/sandbox/__init__.py b/statsmodels/sandbox/__init__.py new file mode 100644 index 0000000..48965ff --- /dev/null +++ b/statsmodels/sandbox/__init__.py @@ -0,0 +1,6 @@ +'''This is sandbox code + +''' +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/sandbox/archive/__init__.py b/statsmodels/sandbox/archive/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/sandbox/archive/linalg_covmat.py b/statsmodels/sandbox/archive/linalg_covmat.py new file mode 100644 index 0000000..1e7cf7d --- /dev/null +++ b/statsmodels/sandbox/archive/linalg_covmat.py @@ -0,0 +1,274 @@ +from __future__ import print_function +import math +import numpy as np +from scipy import linalg, stats, special + +from .linalg_decomp_1 import SvdArray + + +#univariate standard normal distribution +#following from scipy.stats.distributions with adjustments +sqrt2pi = math.sqrt(2 * np.pi) +logsqrt2pi = math.log(sqrt2pi) + +class StandardNormal(object): + '''Distribution of vector x, with independent distribution N(0,1) + + this is the same as univariate normal for pdf and logpdf + + other methods not checked/adjusted yet + + ''' + def rvs(self, size): + return np.random.standard_normal(size) + def pdf(self, x): + return np.exp(-x**2 * 0.5) / sqrt2pi + def logpdf(self, x): + return -x**2 * 0.5 - logsqrt2pi + def _cdf(self, x): + return special.ndtr(x) + def _logcdf(self, x): + return np.log(special.ndtr(x)) + def _ppf(self, q): + return special.ndtri(q) + + +class AffineTransform(object): + '''affine full rank transformation of a multivariate distribution + + no dimension checking, assumes everything broadcasts correctly + first version without bound support + + provides distribution of y given distribution of x + y = const + tmat * x + + ''' + def __init__(self, const, tmat, dist): + self.const = const + self.tmat = tmat + self.dist = dist + self.nrv = len(const) + if not np.equal(self.nrv, tmat.shape).all(): + raise ValueError('dimension of const and tmat do not agree') + + #replace the following with a linalgarray class + self.tmatinv = linalg.inv(tmat) + self.absdet = np.abs(np.linalg.det(self.tmat)) + self.logabsdet = np.log(np.abs(np.linalg.det(self.tmat))) + self.dist + + def rvs(self, size): + #size can only be integer not yet tuple + print((size,)+(self.nrv,)) + return self.transform(self.dist.rvs(size=(size,)+(self.nrv,))) + + def transform(self, x): + #return np.dot(self.tmat, x) + self.const + return np.dot(x, self.tmat) + self.const + + def invtransform(self, y): + return np.dot(self.tmatinv, y - self.const) + + def pdf(self, x): + return 1. / self.absdet * self.dist.pdf(self.invtransform(x)) + + def logpdf(self, x): + return - self.logabsdet + self.dist.logpdf(self.invtransform(x)) + + + + +class MultivariateNormalChol(object): + '''multivariate normal distribution with cholesky decomposition of sigma + + ignoring mean at the beginning, maybe + + needs testing for broadcasting to contemporaneously but not intertemporaly + correlated random variable, which axis?, + maybe swapaxis or rollaxis if x.ndim != mean.ndim == (sigma.ndim - 1) + + initially 1d is ok, 2d should work with iid in axis 0 and mvn in axis 1 + + ''' + + def __init__(self, mean, sigma): + self.mean = mean + self.sigma = sigma + self.sigmainv = sigmainv + self.cholsigma = linalg.cholesky(sigma) + #the following makes it lower triangular with increasing time + self.cholsigmainv = linalg.cholesky(sigmainv)[::-1,::-1] + #todo: this might be a trick todo backward instead of forward filtering + + def whiten(self, x): + return np.dot(cholsigmainv, x) + + def logpdf_obs(self, x): + x = x - self.mean + x_whitened = self.whiten(x) + + #sigmainv = linalg.cholesky(sigma) + logdetsigma = np.log(np.linalg.det(sigma)) + + sigma2 = 1. # error variance is included in sigma + + llike = 0.5 * (np.log(sigma2) + - 2.* np.log(np.diagonal(self.cholsigmainv)) + + (x_whitened**2)/sigma2 + + np.log(2*np.pi)) + + return llike + + def logpdf(self, x): + return self.logpdf_obs(x).sum(-1) + + def pdf(self, x): + return np.exp(self.logpdf(x)) + + + +class MultivariateNormal(object): + + def __init__(self, mean, sigma): + self.mean = mean + self.sigma = SvdArray(sigma) + + + + +def loglike_ar1(x, rho): + '''loglikelihood of AR(1) process, as a test case + + sigma_u partially hard coded + + Greene chapter 12 eq. (12-31) + ''' + x = np.asarray(x) + u = np.r_[x[0], x[1:] - rho * x[:-1]] + sigma_u2 = 2*(1-rho**2) + loglik = 0.5*(-(u**2).sum(0) / sigma_u2 + np.log(1-rho**2) + - x.shape[0] * (np.log(2*np.pi) + np.log(sigma_u2))) + return loglik + + +def ar2transform(x, arcoefs): + ''' + + (Greene eq 12-30) + ''' + a1, a2 = arcoefs + y = np.zeros_like(x) + y[0] = np.sqrt((1+a2) * ((1-a2)**2 - a1**2) / (1-a2)) * x[0] + y[1] = np.sqrt(1-a2**2) * x[2] - a1 * np.sqrt(1-a1**2)/(1-a2) * x[1] #TODO:wrong index in x + y[2:] = x[2:] - a1 * x[1:-1] - a2 * x[:-2] + return y + + +def mvn_loglike(x, sigma): + '''loglike multivariate normal + + assumes x is 1d, (nobs,) and sigma is 2d (nobs, nobs) + + brute force from formula + no checking of correct inputs + use of inv and log-det should be replace with something more efficient + ''' + #see numpy thread + #Sturla: sqmahal = (cx*cho_solve(cho_factor(S),cx.T).T).sum(axis=1) + sigmainv = linalg.inv(sigma) + logdetsigma = np.log(np.linalg.det(sigma)) + nobs = len(x) + + llf = - np.dot(x, np.dot(sigmainv, x)) + llf -= nobs * np.log(2 * np.pi) + llf -= logdetsigma + llf *= 0.5 + return llf + +def mvn_nloglike_obs(x, sigma): + '''loglike multivariate normal + + assumes x is 1d, (nobs,) and sigma is 2d (nobs, nobs) + + brute force from formula + no checking of correct inputs + use of inv and log-det should be replace with something more efficient + ''' + #see numpy thread + #Sturla: sqmahal = (cx*cho_solve(cho_factor(S),cx.T).T).sum(axis=1) + + #Still wasteful to calculate pinv first + sigmainv = linalg.inv(sigma) + cholsigmainv = linalg.cholesky(sigmainv) + #2 * np.sum(np.log(np.diagonal(np.linalg.cholesky(A)))) #Dag mailinglist + # logdet not needed ??? + #logdetsigma = 2 * np.sum(np.log(np.diagonal(cholsigmainv))) + x_whitened = np.dot(cholsigmainv, x) + + #sigmainv = linalg.cholesky(sigma) + logdetsigma = np.log(np.linalg.det(sigma)) + + sigma2 = 1. # error variance is included in sigma + + llike = 0.5 * (np.log(sigma2) - 2.* np.log(np.diagonal(cholsigmainv)) + + (x_whitened**2)/sigma2 + + np.log(2*np.pi)) + + return llike, (x_whitened**2) + +nobs = 10 +x = np.arange(nobs) +autocov = 2*0.8**np.arange(nobs)# +0.01 * np.random.randn(nobs) +sigma = linalg.toeplitz(autocov) +#sigma = np.diag(1+np.random.randn(10)**2) + +cholsigma = linalg.cholesky(sigma).T#, lower=True) + +sigmainv = linalg.inv(sigma) +cholsigmainv = linalg.cholesky(sigmainv) +#2 * np.sum(np.log(np.diagonal(np.linalg.cholesky(A)))) #Dag mailinglist +# logdet not needed ??? +#logdetsigma = 2 * np.sum(np.log(np.diagonal(cholsigmainv))) +x_whitened = np.dot(cholsigmainv, x) + +#sigmainv = linalg.cholesky(sigma) +logdetsigma = np.log(np.linalg.det(sigma)) + +sigma2 = 1. # error variance is included in sigma + +llike = 0.5 * (np.log(sigma2) - 2.* np.log(np.diagonal(cholsigmainv)) + + (x_whitened**2)/sigma2 + + np.log(2*np.pi)) + +ll, ls = mvn_nloglike_obs(x, sigma) +#the following are all the same for diagonal sigma +print(ll.sum(), 'll.sum()') +print(llike.sum(), 'llike.sum()') +print(np.log(stats.norm._pdf(x_whitened)).sum() - 0.5 * logdetsigma,) +print('stats whitened') +print(np.log(stats.norm.pdf(x,scale=np.sqrt(np.diag(sigma)))).sum(),) +print('stats scaled') +print(0.5*(np.dot(linalg.cho_solve((linalg.cho_factor(sigma, lower=False)[0].T, + False),x.T), x) + + nobs*np.log(2*np.pi) + - 2.* np.log(np.diagonal(cholsigmainv)).sum())) +print(0.5*(np.dot(linalg.cho_solve((linalg.cho_factor(sigma)[0].T, False),x.T), x) + nobs*np.log(2*np.pi)- 2.* np.log(np.diagonal(cholsigmainv)).sum())) +print(0.5*(np.dot(linalg.cho_solve(linalg.cho_factor(sigma),x.T), x) + nobs*np.log(2*np.pi)- 2.* np.log(np.diagonal(cholsigmainv)).sum())) +print(mvn_loglike(x, sigma)) + + +normtransf = AffineTransform(np.zeros(nobs), cholsigma, StandardNormal()) +print(normtransf.logpdf(x_whitened).sum()) +#print(normtransf.rvs(5) +print(loglike_ar1(x, 0.8)) + +mch = MultivariateNormalChol(np.zeros(nobs), sigma) +print(mch.logpdf(x)) + +#from .linalg_decomp_1 import tiny2zero +#print(tiny2zero(mch.cholsigmainv / mch.cholsigmainv[-1,-1]) + +xw = mch.whiten(x) +print('xSigmax', np.dot(xw,xw)) +print('xSigmax', np.dot(x,linalg.cho_solve(linalg.cho_factor(mch.sigma),x))) +print('xSigmax', np.dot(x,linalg.cho_solve((mch.cholsigma, False),x))) diff --git a/statsmodels/sandbox/archive/linalg_decomp_1.py b/statsmodels/sandbox/archive/linalg_decomp_1.py new file mode 100644 index 0000000..8b349bc --- /dev/null +++ b/statsmodels/sandbox/archive/linalg_decomp_1.py @@ -0,0 +1,292 @@ +'''Recipes for more efficient work with linalg using classes + + +intended for use for multivariate normal and linear regression +calculations + +x is the data (nobs, nvars) +m is the moment matrix (x'x) or a covariance matrix Sigma + +examples: +x'sigma^{-1}x +z = Px where P=Sigma^{-1/2} or P=Sigma^{1/2} + +Initially assume positive definite, then add spectral cutoff and +regularization of moment matrix, and extend to PCA + +maybe extend to sparse if some examples work out +(transformation matrix P for random effect and for toeplitz) + + +Author: josef-pktd +Created on 2010-10-20 +''' + +from __future__ import print_function +import numpy as np +from scipy import linalg + +from statsmodels.tools.decorators import cache_readonly + + +class PlainMatrixArray(object): + '''Class that defines linalg operation on an array + + simplest version as benchmark + + linear algebra recipes for multivariate normal and linear + regression calculations + + ''' + def __init__(self, data=None, sym=None): + if data is not None: + if sym is None: + self.x = np.asarray(data) + self.m = np.dot(self.x.T, self.x) + else: + raise ValueError('data and sym cannot be both given') + elif sym is not None: + self.m = np.asarray(sym) + self.x = np.eye(*self.m.shape) #default + + else: + raise ValueError('either data or sym need to be given') + + @cache_readonly + def minv(self): + return np.linalg.inv(self.m) + + def m_y(self, y): + return np.dot(self.m, y) + + def minv_y(self, y): + return np.dot(self.minv, y) + + @cache_readonly + def mpinv(self): + return linalg.pinv(self.m) + + @cache_readonly + def xpinv(self): + return linalg.pinv(self.x) + + def yt_m_y(self, y): + return np.dot(y.T, np.dot(self.m, y)) + + def yt_minv_y(self, y): + return np.dot(y.T, np.dot(self.minv, y)) + + #next two are redundant + def y_m_yt(self, y): + return np.dot(y, np.dot(self.m, y.T)) + + def y_minv_yt(self, y): + return np.dot(y, np.dot(self.minv, y.T)) + + @cache_readonly + def mdet(self): + return linalg.det(self.m) + + @cache_readonly + def mlogdet(self): + return np.log(linalg.det(self.m)) + + @cache_readonly + def meigh(self): + evals, evecs = linalg.eigh(self.m) + sortind = np.argsort(evals)[::-1] + return evals[sortind], evecs[:,sortind] + + @cache_readonly + def mhalf(self): + evals, evecs = self.meigh + return np.dot(np.diag(evals**0.5), evecs.T) + #return np.dot(evecs, np.dot(np.diag(evals**0.5), evecs.T)) + #return np.dot(evecs, 1./np.sqrt(evals) * evecs.T)) + + @cache_readonly + def minvhalf(self): + evals, evecs = self.meigh + return np.dot(evecs, 1./np.sqrt(evals) * evecs.T) + + + +class SvdArray(PlainMatrixArray): + '''Class that defines linalg operation on an array + + svd version, where svd is taken on original data array, if + or when it matters + + no spectral cutoff in first version + ''' + + def __init__(self, data=None, sym=None): + super(SvdArray, self).__init__(data=data, sym=sym) + + u, s, v = np.linalg.svd(self.x, full_matrices=1) + self.u, self.s, self.v = u, s, v + self.sdiag = linalg.diagsvd(s, *x.shape) + self.sinvdiag = linalg.diagsvd(1./s, *x.shape) + + def _sdiagpow(self, p): + return linalg.diagsvd(np.power(self.s, p), *x.shape) + + @cache_readonly + def minv(self): + sinvv = np.dot(self.sinvdiag, self.v) + return np.dot(sinvv.T, sinvv) + + @cache_readonly + def meigh(self): + evecs = self.v.T + evals = self.s**2 + return evals, evecs + + @cache_readonly + def mdet(self): + return self.meigh[0].prod() + + @cache_readonly + def mlogdet(self): + return np.log(self.meigh[0]).sum() + + @cache_readonly + def mhalf(self): + return np.dot(np.diag(self.s), self.v) + + @cache_readonly + def xxthalf(self): + return np.dot(self.u, self.sdiag) + + @cache_readonly + def xxtinvhalf(self): + return np.dot(self.u, self.sinvdiag) + + +class CholArray(PlainMatrixArray): + '''Class that defines linalg operation on an array + + cholesky version, where svd is taken on original data array, if + or when it matters + + plan: use cholesky factor and cholesky solve + nothing implemented yet + ''' + + def __init__(self, data=None, sym=None): + super(SvdArray, self).__init__(data=data, sym=sym) + + + def yt_minv_y(self, y): + '''xSigmainvx + doesn't use stored cholesky yet + ''' + return np.dot(x,linalg.cho_solve(linalg.cho_factor(self.m),x)) + #same as + #lower = False #if cholesky(sigma) is used, default is upper + #np.dot(x,linalg.cho_solve((self.cholsigma, lower),x)) + + + +def testcompare(m1, m2): + from numpy.testing import assert_almost_equal, assert_approx_equal + decimal = 12 + + #inv + assert_almost_equal(m1.minv, m2.minv, decimal=decimal) + + #matrix half and invhalf + #fix sign in test, should this be standardized + s1 = np.sign(m1.mhalf.sum(1))[:,None] + s2 = np.sign(m2.mhalf.sum(1))[:,None] + scorr = s1/s2 + assert_almost_equal(m1.mhalf, m2.mhalf * scorr, decimal=decimal) + assert_almost_equal(m1.minvhalf, m2.minvhalf, decimal=decimal) + + #eigenvalues, eigenvectors + evals1, evecs1 = m1.meigh + evals2, evecs2 = m2.meigh + assert_almost_equal(evals1, evals2, decimal=decimal) + #normalization can be different: evecs in columns + s1 = np.sign(evecs1.sum(0)) + s2 = np.sign(evecs2.sum(0)) + scorr = s1/s2 + assert_almost_equal(evecs1, evecs2 * scorr, decimal=decimal) + + #determinant + assert_approx_equal(m1.mdet, m2.mdet, significant=13) + assert_approx_equal(m1.mlogdet, m2.mlogdet, significant=13) + +####### helper function for interactive work +def tiny2zero(x, eps = 1e-15): + '''replace abs values smaller than eps by zero, makes copy + ''' + mask = np.abs(x.copy()) < eps + x[mask] = 0 + return x + +def maxabs(x): + return np.max(np.abs(x)) + + +if __name__ == '__main__': + + + n = 5 + y = np.arange(n) + x = np.random.randn(100,n) + autocov = 2*0.8**np.arange(n) +0.01 * np.random.randn(n) + sigma = linalg.toeplitz(autocov) + + mat = PlainMatrixArray(sym=sigma) + print(tiny2zero(mat.mhalf)) + mih = mat.minvhalf + print(tiny2zero(mih)) #for nicer printing + + mat2 = PlainMatrixArray(data=x) + print(maxabs(mat2.yt_minv_y(np.dot(x.T, x)) - mat2.m)) + print(tiny2zero(mat2.minv_y(mat2.m))) + + mat3 = SvdArray(data=x) + print(mat3.meigh[0]) + print(mat2.meigh[0]) + + testcompare(mat2, mat3) + + ''' + m = np.dot(x.T, x) + + u,s,v = np.linalg.svd(x, full_matrices=1) + Sig = linalg.diagsvd(s,*x.shape) + + >>> np.max(np.abs(np.dot(u, np.dot(Sig, v)) - x)) + 3.1086244689504383e-015 + >>> np.max(np.abs(np.dot(u.T, u) - np.eye(100))) + 3.3306690738754696e-016 + >>> np.max(np.abs(np.dot(v.T, v) - np.eye(5))) + 6.6613381477509392e-016 + >>> np.max(np.abs(np.dot(Sig.T, Sig) - np.diag(s**2))) + 5.6843418860808015e-014 + + >>> evals,evecs = linalg.eigh(np.dot(x.T, x)) + >>> evals[::-1] + array([ 123.36404464, 112.17036442, 102.04198468, 76.60832278, + 74.70484487]) + + >>> s**2 + array([ 123.36404464, 112.17036442, 102.04198468, 76.60832278, + 74.70484487]) + + >>> np.max(np.abs(np.dot(v.T, np.dot(np.diag(s**2), v)) - m)) + 1.1368683772161603e-013 + + >>> us = np.dot(u, Sig) + >>> np.max(np.abs(np.dot(us, us.T) - np.dot(x, x.T))) + 1.0658141036401503e-014 + + >>> sv = np.dot(Sig, v) + >>> np.max(np.abs(np.dot(sv.T, sv) - np.dot(x.T, x))) + 1.1368683772161603e-013 + + + ''' diff --git a/statsmodels/sandbox/archive/tsa.py b/statsmodels/sandbox/archive/tsa.py new file mode 100644 index 0000000..b26380a --- /dev/null +++ b/statsmodels/sandbox/archive/tsa.py @@ -0,0 +1,49 @@ +'''Collection of alternative implementations for time series analysis + + +>>> signal.fftconvolve(x,x[::-1])[len(x)-1:len(x)+10]/x.shape[0] +array([ 2.12286549e+00, 1.27450889e+00, 7.86898619e-02, + -5.80017553e-01, -5.74814915e-01, -2.28006995e-01, + 9.39554926e-02, 2.00610244e-01, 1.32239575e-01, + 1.24504352e-03, -8.81846018e-02]) +>>> sm.tsa.stattools.acovf(X, fft=True)[:order+1] +array([ 2.12286549e+00, 1.27450889e+00, 7.86898619e-02, + -5.80017553e-01, -5.74814915e-01, -2.28006995e-01, + 9.39554926e-02, 2.00610244e-01, 1.32239575e-01, + 1.24504352e-03, -8.81846018e-02]) + +>>> import nitime.utils as ut +>>> ut.autocov(s)[:order+1] +array([ 2.12286549e+00, 1.27450889e+00, 7.86898619e-02, + -5.80017553e-01, -5.74814915e-01, -2.28006995e-01, + 9.39554926e-02, 2.00610244e-01, 1.32239575e-01, + 1.24504352e-03, -8.81846018e-02]) +''' +import numpy as np + + +def acovf_fft(x, demean=True): + '''autocovariance function with call to fftconvolve, biased + + Parameters + ---------- + x : array_like + timeseries, signal + demean : boolean + If true, then demean time series + + Returns + ------- + acovf : array + autocovariance for data, same length as x + + might work for nd in parallel with time along axis 0 + + ''' + from scipy import signal + x = np.asarray(x) + + if demean: + x = x - x.mean() + + signal.fftconvolve(x,x[::-1])[len(x)-1:len(x)+10]/x.shape[0] diff --git a/statsmodels/sandbox/bspline.py b/statsmodels/sandbox/bspline.py new file mode 100644 index 0000000..85c9541 --- /dev/null +++ b/statsmodels/sandbox/bspline.py @@ -0,0 +1,668 @@ +''' +Bspines and smoothing splines. + +General references: + + Craven, P. and Wahba, G. (1978) "Smoothing noisy data with spline functions. + Estimating the correct degree of smoothing by + the method of generalized cross-validation." + Numerische Mathematik, 31(4), 377-403. + + Hastie, Tibshirani and Friedman (2001). "The Elements of Statistical + Learning." Springer-Verlag. 536 pages. + + Hutchison, M. and Hoog, F. "Smoothing noisy data with spline functions." + Numerische Mathematik, 47(1), 99-106. +''' + +from statsmodels.compat.python import range +import numpy as np +import numpy.linalg as L + +from scipy.linalg import solveh_banded +from scipy.optimize import golden +from models import _hbspline #removed because this was segfaulting + +# Issue warning regarding heavy development status of this module +import warnings +_msg = """ +The bspline code is technology preview and requires significant work +on the public API and documentation. The API will likely change in the future +""" +warnings.warn(_msg, FutureWarning) + + +def _band2array(a, lower=0, symmetric=False, hermitian=False): + """ + Take an upper or lower triangular banded matrix and return a + numpy array. + + INPUTS: + a -- a matrix in upper or lower triangular banded matrix + lower -- is the matrix upper or lower triangular? + symmetric -- if True, return the original result plus its transpose + hermitian -- if True (and symmetric False), return the original + result plus its conjugate transposed + + """ + + n = a.shape[1] + r = a.shape[0] + _a = 0 + + if not lower: + for j in range(r): + _b = np.diag(a[r-1-j],k=j)[j:(n+j),j:(n+j)] + _a += _b + if symmetric and j > 0: _a += _b.T + elif hermitian and j > 0: _a += _b.conjugate().T + else: + for j in range(r): + _b = np.diag(a[j],k=j)[0:n,0:n] + _a += _b + if symmetric and j > 0: _a += _b.T + elif hermitian and j > 0: _a += _b.conjugate().T + _a = _a.T + + return _a + + +def _upper2lower(ub): + """ + Convert upper triangular banded matrix to lower banded form. + + INPUTS: + ub -- an upper triangular banded matrix + + OUTPUTS: lb + lb -- a lower triangular banded matrix with same entries + as ub + """ + + lb = np.zeros(ub.shape, ub.dtype) + nrow, ncol = ub.shape + for i in range(ub.shape[0]): + lb[i,0:(ncol-i)] = ub[nrow-1-i,i:ncol] + lb[i,(ncol-i):] = ub[nrow-1-i,0:i] + return lb + +def _lower2upper(lb): + """ + Convert lower triangular banded matrix to upper banded form. + + INPUTS: + lb -- a lower triangular banded matrix + + OUTPUTS: ub + ub -- an upper triangular banded matrix with same entries + as lb + """ + + ub = np.zeros(lb.shape, lb.dtype) + nrow, ncol = lb.shape + for i in range(lb.shape[0]): + ub[nrow-1-i,i:ncol] = lb[i,0:(ncol-i)] + ub[nrow-1-i,0:i] = lb[i,(ncol-i):] + return ub + +def _triangle2unit(tb, lower=0): + """ + Take a banded triangular matrix and return its diagonal and the + unit matrix: the banded triangular matrix with 1's on the diagonal, + i.e. each row is divided by the corresponding entry on the diagonal. + + INPUTS: + tb -- a lower triangular banded matrix + lower -- if True, then tb is assumed to be lower triangular banded, + in which case return value is also lower triangular banded. + + OUTPUTS: d, b + d -- diagonal entries of tb + b -- unit matrix: if lower is False, b is upper triangular + banded and its rows of have been divided by d, + else lower is True, b is lower triangular banded + and its columns have been divieed by d. + + """ + + if lower: d = tb[0].copy() + else: d = tb[-1].copy() + + if lower: + return d, (tb / d) + else: + lnum = _upper2lower(tb) + return d, _lower2upper(lnum / d) + + +def _trace_symbanded(a, b, lower=0): + """ + Compute the trace(ab) for two upper or banded real symmetric matrices + stored either in either upper or lower form. + + INPUTS: + a, b -- two banded real symmetric matrices (either lower or upper) + lower -- if True, a and b are assumed to be the lower half + + + OUTPUTS: trace + trace -- trace(ab) + + """ + + if lower: + t = _zero_triband(a * b, lower=1) + return t[0].sum() + 2 * t[1:].sum() + else: + t = _zero_triband(a * b, lower=0) + return t[-1].sum() + 2 * t[:-1].sum() + + +def _zero_triband(a, lower=0): + """ + Explicitly zero out unused elements of a real symmetric banded matrix. + + INPUTS: + a -- a real symmetric banded matrix (either upper or lower hald) + lower -- if True, a is assumed to be the lower half + + """ + + nrow, ncol = a.shape + if lower: + for i in range(nrow): a[i,(ncol-i):] = 0. + else: + for i in range(nrow): a[i,0:i] = 0. + return a + + +class BSpline(object): + + ''' + + Bsplines of a given order and specified knots. + + Implementation is based on description in Chapter 5 of + + Hastie, Tibshirani and Friedman (2001). "The Elements of Statistical + Learning." Springer-Verlag. 536 pages. + + + INPUTS: + knots -- a sorted array of knots with knots[0] the lower boundary, + knots[1] the upper boundary and knots[1:-1] the internal + knots. + order -- order of the Bspline, default is 4 which yields cubic + splines + M -- number of additional boundary knots, if None it defaults + to order + coef -- an optional array of real-valued coefficients for the Bspline + of shape (knots.shape + 2 * (M - 1) - order,). + x -- an optional set of x values at which to evaluate the + Bspline to avoid extra evaluation in the __call__ method + + ''' + # FIXME: update parameter names, replace single character names + # FIXME: `order` should be actual spline order (implemented as order+1) + ## FIXME: update the use of spline order in extension code (evaluate is recursively called) + # FIXME: eliminate duplicate M and m attributes (m is order, M is related to tau size) + + def __init__(self, knots, order=4, M=None, coef=None, x=None): + + knots = np.squeeze(np.unique(np.asarray(knots))) + + if knots.ndim != 1: + raise ValueError('expecting 1d array for knots') + + self.m = order + if M is None: + M = self.m + self.M = M + + self.tau = np.hstack([[knots[0]]*(self.M-1), knots, [knots[-1]]*(self.M-1)]) + + self.K = knots.shape[0] - 2 + if coef is None: + self.coef = np.zeros((self.K + 2 * self.M - self.m), np.float64) + else: + self.coef = np.squeeze(coef) + if self.coef.shape != (self.K + 2 * self.M - self.m): + raise ValueError('coefficients of Bspline have incorrect shape') + if x is not None: + self.x = x + + def _setx(self, x): + self._x = x + self._basisx = self.basis(self._x) + + def _getx(self): + return self._x + + x = property(_getx, _setx) + + def __call__(self, *args): + """ + Evaluate the BSpline at a given point, yielding + a matrix B and return + + B * self.coef + + + INPUTS: + args -- optional arguments. If None, it returns self._basisx, + the BSpline evaluated at the x values passed in __init__. + Otherwise, return the BSpline evaluated at the + first argument args[0]. + + OUTPUTS: y + y -- value of Bspline at specified x values + + BUGS: + If self has no attribute x, an exception will be raised + because self has no attribute _basisx. + + """ + + if not args: + b = self._basisx.T + else: + x = args[0] + b = np.asarray(self.basis(x)).T + return np.squeeze(np.dot(b, self.coef)) + + def basis_element(self, x, i, d=0): + """ + Evaluate a particular basis element of the BSpline, + or its derivative. + + INPUTS: + x -- x values at which to evaluate the basis element + i -- which element of the BSpline to return + d -- the order of derivative + + OUTPUTS: y + y -- value of d-th derivative of the i-th basis element + of the BSpline at specified x values + + """ + + x = np.asarray(x, np.float64) + _shape = x.shape + if _shape == (): + x.shape = (1,) + x.shape = (np.product(_shape,axis=0),) + if i < self.tau.shape[0] - 1: + # TODO: OWNDATA flags... + v = _hbspline.evaluate(x, self.tau, self.m, d, i, i+1) + else: + return np.zeros(x.shape, np.float64) + + if (i == self.tau.shape[0] - self.m): + v = np.where(np.equal(x, self.tau[-1]), 1, v) + v.shape = _shape + return v + + def basis(self, x, d=0, lower=None, upper=None): + """ + Evaluate the basis of the BSpline or its derivative. + If lower or upper is specified, then only + the [lower:upper] elements of the basis are returned. + + INPUTS: + x -- x values at which to evaluate the basis element + i -- which element of the BSpline to return + d -- the order of derivative + lower -- optional lower limit of the set of basis + elements + upper -- optional upper limit of the set of basis + elements + + OUTPUTS: y + y -- value of d-th derivative of the basis elements + of the BSpline at specified x values + + """ + x = np.asarray(x) + _shape = x.shape + if _shape == (): + x.shape = (1,) + x.shape = (np.product(_shape,axis=0),) + + if upper is None: + upper = self.tau.shape[0] - self.m + if lower is None: + lower = 0 + upper = min(upper, self.tau.shape[0] - self.m) + lower = max(0, lower) + + d = np.asarray(d) + if d.shape == (): + v = _hbspline.evaluate(x, self.tau, self.m, int(d), lower, upper) + else: + if d.shape[0] != 2: + raise ValueError("if d is not an integer, expecting a jx2 \ + array with first row indicating order \ + of derivative, second row coefficient in front.") + v = 0 + for i in range(d.shape[1]): + v += d[1,i] * _hbspline.evaluate(x, self.tau, self.m, d[0,i], lower, upper) + + v.shape = (upper-lower,) + _shape + if upper == self.tau.shape[0] - self.m: + v[-1] = np.where(np.equal(x, self.tau[-1]), 1, v[-1]) + return v + + def gram(self, d=0): + """ + Compute Gram inner product matrix, storing it in lower + triangular banded form. + + The (i,j) entry is + + G_ij = integral b_i^(d) b_j^(d) + + where b_i are the basis elements of the BSpline and (d) is the + d-th derivative. + + If d is a matrix then, it is assumed to specify a differential + operator as follows: the first row represents the order of derivative + with the second row the coefficient corresponding to that order. + + For instance: + + [[2, 3], + [3, 1]] + + represents 3 * f^(2) + 1 * f^(3). + + INPUTS: + d -- which derivative to apply to each basis element, + if d is a matrix, it is assumed to specify + a differential operator as above + + OUTPUTS: gram + gram -- the matrix of inner products of (derivatives) + of the BSpline elements + + """ + + d = np.squeeze(d) + if np.asarray(d).shape == (): + self.g = _hbspline.gram(self.tau, self.m, int(d), int(d)) + else: + d = np.asarray(d) + if d.shape[0] != 2: + raise ValueError("if d is not an integer, expecting a jx2 \ + array with first row indicating order \ + of derivative, second row coefficient in front.") + if d.shape == (2,): + d.shape = (2,1) + self.g = 0 + for i in range(d.shape[1]): + for j in range(d.shape[1]): + self.g += d[1,i]* d[1,j] * _hbspline.gram(self.tau, self.m, int(d[0,i]), int(d[0,j])) + self.g = self.g.T + self.d = d + return np.nan_to_num(self.g) + +class SmoothingSpline(BSpline): + + penmax = 30. + method = "target_df" + target_df = 5 + default_pen = 1.0e-03 + optimize = True + + ''' + A smoothing spline, which can be used to smooth scatterplots, i.e. + a list of (x,y) tuples. + + See fit method for more information. + + ''' + + def fit(self, y, x=None, weights=None, pen=0.): + """ + Fit the smoothing spline to a set of (x,y) pairs. + + INPUTS: + y -- response variable + x -- if None, uses self.x + weights -- optional array of weights + pen -- constant in front of Gram matrix + + OUTPUTS: None + The smoothing spline is determined by self.coef, + subsequent calls of __call__ will be the smoothing spline. + + ALGORITHM: + Formally, this solves a minimization: + + fhat = ARGMIN_f SUM_i=1^n (y_i-f(x_i))^2 + pen * int f^(2)^2 + + int is integral. pen is lambda (from Hastie) + + See Chapter 5 of + + Hastie, Tibshirani and Friedman (2001). "The Elements of Statistical + Learning." Springer-Verlag. 536 pages. + + for more details. + + TODO: + Should add arbitrary derivative penalty instead of just + second derivative. + """ + + banded = True + + if x is None: + x = self._x + bt = self._basisx.copy() + else: + bt = self.basis(x) + + if pen == 0.: # can't use cholesky for singular matrices + banded = False + + if x.shape != y.shape: + raise ValueError('x and y shape do not agree, by default x are \ + the Bspline\'s internal knots') + + if pen >= self.penmax: + pen = self.penmax + + + if weights is not None: + self.weights = weights + else: + self.weights = 1. + + _w = np.sqrt(self.weights) + bt *= _w + + # throw out rows with zeros (this happens at boundary points!) + + mask = np.flatnonzero(1 - np.alltrue(np.equal(bt, 0), axis=0)) + + bt = bt[:,mask] + y = y[mask] + + self.df_total = y.shape[0] + + bty = np.squeeze(np.dot(bt, _w * y)) + self.N = y.shape[0] + + if not banded: + self.btb = np.dot(bt, bt.T) + _g = _band2array(self.g, lower=1, symmetric=True) + self.coef, _, self.rank = L.lstsq(self.btb + pen*_g, bty)[0:3] + self.rank = min(self.rank, self.btb.shape[0]) + del(_g) + else: + self.btb = np.zeros(self.g.shape, np.float64) + nband, nbasis = self.g.shape + for i in range(nbasis): + for k in range(min(nband, nbasis-i)): + self.btb[k,i] = (bt[i] * bt[i+k]).sum() + + bty.shape = (1,bty.shape[0]) + self.pen = pen + self.chol, self.coef = solveh_banded(self.btb + + pen*self.g, + bty, lower=1) + + self.coef = np.squeeze(self.coef) + self.resid = y * self.weights - np.dot(self.coef, bt) + self.pen = pen + + del(bty) + del(mask) + del(bt) + + def smooth(self, y, x=None, weights=None): + + if self.method == "target_df": + if hasattr(self, 'pen'): + self.fit(y, x=x, weights=weights, pen=self.pen) + else: + self.fit_target_df(y, x=x, weights=weights, df=self.target_df) + elif self.method == "optimize_gcv": + self.fit_optimize_gcv(y, x=x, weights=weights) + + + def gcv(self): + """ + Generalized cross-validation score of current fit. + + Craven, P. and Wahba, G. "Smoothing noisy data with spline functions. + Estimating the correct degree of smoothing by + the method of generalized cross-validation." + Numerische Mathematik, 31(4), 377-403. + """ + + norm_resid = (self.resid**2).sum() + return norm_resid / (self.df_total - self.trace()) + + def df_resid(self): + """ + Residual degrees of freedom in the fit. + + self.N - self.trace() + + where self.N is the number of observations of last fit. + """ + + return self.N - self.trace() + + def df_fit(self): + """ + How many degrees of freedom used in the fit? + + self.trace() + + """ + return self.trace() + + def trace(self): + """ + Trace of the smoothing matrix S(pen) + + TODO: addin a reference to Wahba, and whoever else I used. + """ + + if self.pen > 0: + _invband = _hbspline.invband(self.chol.copy()) + tr = _trace_symbanded(_invband, self.btb, lower=1) + return tr + else: + return self.rank + + def fit_target_df(self, y, x=None, df=None, weights=None, tol=1.0e-03, + apen=0, bpen=1.0e-03): + + """ + Fit smoothing spline with approximately df degrees of freedom + used in the fit, i.e. so that self.trace() is approximately df. + + Uses binary search strategy. + + In general, df must be greater than the dimension of the null space + of the Gram inner product. For cubic smoothing splines, this means + that df > 2. + + INPUTS: + y -- response variable + x -- if None, uses self.x + df -- target degrees of freedom + weights -- optional array of weights + tol -- (relative) tolerance for convergence + apen -- lower bound of penalty for binary search + bpen -- upper bound of penalty for binary search + + OUTPUTS: None + The smoothing spline is determined by self.coef, + subsequent calls of __call__ will be the smoothing spline. + + """ + + df = df or self.target_df + + olddf = y.shape[0] - self.m + + if hasattr(self, "pen"): + self.fit(y, x=x, weights=weights, pen=self.pen) + curdf = self.trace() + if np.fabs(curdf - df) / df < tol: + return + if curdf > df: + apen, bpen = self.pen, 2 * self.pen + else: + apen, bpen = 0., self.pen + + while True: + + curpen = 0.5 * (apen + bpen) + self.fit(y, x=x, weights=weights, pen=curpen) + curdf = self.trace() + if curdf > df: + apen, bpen = curpen, 2 * curpen + else: + apen, bpen = apen, curpen + if apen >= self.penmax: + raise ValueError("penalty too large, try setting penmax \ + higher or decreasing df") + if np.fabs(curdf - df) / df < tol: + break + + def fit_optimize_gcv(self, y, x=None, weights=None, tol=1.0e-03, + brack=(-100,20)): + """ + Fit smoothing spline trying to optimize GCV. + + Try to find a bracketing interval for scipy.optimize.golden + based on bracket. + + It is probably best to use target_df instead, as it is + sometimes difficult to find a bracketing interval. + + INPUTS: + y -- response variable + x -- if None, uses self.x + df -- target degrees of freedom + weights -- optional array of weights + tol -- (relative) tolerance for convergence + brack -- an initial guess at the bracketing interval + + OUTPUTS: None + The smoothing spline is determined by self.coef, + subsequent calls of __call__ will be the smoothing spline. + + """ + + def _gcv(pen, y, x): + self.fit(y, x=x, pen=np.exp(pen)) + a = self.gcv() + return a + + a = golden(_gcv, args=(y,x), brack=brack, tol=tol) diff --git a/statsmodels/sandbox/contrast_old.py b/statsmodels/sandbox/contrast_old.py new file mode 100644 index 0000000..cdbb4a0 --- /dev/null +++ b/statsmodels/sandbox/contrast_old.py @@ -0,0 +1,169 @@ +import copy + +import numpy as np +from numpy.linalg import pinv +from statsmodels.sandbox import utils_old as utils + +class ContrastResults(object): + """ + Results from looking at a particular contrast of coefficients in + a parametric model. The class does nothing, it is a container + for the results from T and F contrasts. + """ + + def __init__(self, t=None, F=None, sd=None, effect=None, df_denom=None, + df_num=None): + if F is not None: + self.F = F + self.df_denom = df_denom + self.df_num = df_num + else: + self.t = t + self.sd = sd + self.effect = effect + self.df_denom = df_denom + + def __array__(self): + if hasattr(self, "F"): + return self.F + else: + return self.t + + def __str__(self): + if hasattr(self, 'F'): + return '' % \ + (repr(self.F), self.df_denom, self.df_num) + else: + return '' % \ + (repr(self.effect), repr(self.sd), repr(self.t), self.df_denom) + + +class Contrast(object): + """ + This class is used to construct contrast matrices in regression models. + They are specified by a (term, formula) pair. + + The term, T, is a linear combination of columns of the design + matrix D=formula(). The matrix attribute is + a contrast matrix C so that + + colspan(dot(D, C)) = colspan(dot(D, dot(pinv(D), T))) + + where pinv(D) is the generalized inverse of D. Further, the matrix + + Tnew = dot(C, D) + + is full rank. The rank attribute is the rank of + + dot(D, dot(pinv(D), T)) + + In a regression model, the contrast tests that E(dot(Tnew, Y)) = 0 + for each column of Tnew. + + """ + + def __init__(self, term, formula, name=''): + self.term = term + self.formula = formula + if name == '': + self.name = str(term) + else: + self.name = name + + def __str__(self): + return '' % \ + repr({'term':str(self.term), 'formula':str(self.formula)}) + + def compute_matrix(self, *args, **kw): + """ + Construct a contrast matrix C so that + + colspan(dot(D, C)) = colspan(dot(D, dot(pinv(D), T))) + + where pinv(D) is the generalized inverse of D=self.D=self.formula(). + + If the design, self.D is already set, + then evaldesign can be set to False. + """ + + t = copy.copy(self.term) + t.namespace = self.formula.namespace + T = np.transpose(np.array(t(*args, **kw))) + + if T.ndim == 1: + T.shape = (T.shape[0], 1) + + self.T = utils.clean0(T) + + self.D = self.formula.design(*args, **kw) + + self._matrix = contrastfromcols(self.T, self.D) + try: + self.rank = self.matrix.shape[1] + except: + self.rank = 1 + + def _get_matrix(self): + """ + This will fail if the formula needs arguments to construct + the design. + """ + if not hasattr(self, "_matrix"): + self.compute_matrix() + return self._matrix + matrix = property(_get_matrix) + +def contrastfromcols(L, D, pseudo=None): + """ + From an n x p design matrix D and a matrix L, tries + to determine a p x q contrast matrix C which + determines a contrast of full rank, i.e. the + n x q matrix + + dot(transpose(C), pinv(D)) + + is full rank. + + L must satisfy either L.shape[0] == n or L.shape[1] == p. + + If L.shape[0] == n, then L is thought of as representing + columns in the column space of D. + + If L.shape[1] == p, then L is thought of as what is known + as a contrast matrix. In this case, this function returns an estimable + contrast corresponding to the dot(D, L.T) + + Note that this always produces a meaningful contrast, not always + with the intended properties because q is always non-zero unless + L is identically 0. That is, it produces a contrast that spans + the column space of L (after projection onto the column space of D). + + """ + + L = np.asarray(L) + D = np.asarray(D) + + n, p = D.shape + + if L.shape[0] != n and L.shape[1] != p: + raise ValueError('shape of L and D mismatched') + + if pseudo is None: + pseudo = pinv(D) + + if L.shape[0] == n: + C = np.dot(pseudo, L).T + else: + C = L + C = np.dot(pseudo, np.dot(D, C.T)).T + + Lp = np.dot(D, C.T) + + if len(Lp.shape) == 1: + Lp.shape = (n, 1) + + if utils.rank(Lp) != Lp.shape[1]: + Lp = utils.fullrank(Lp) + C = np.dot(pseudo, Lp).T + + return np.squeeze(C) diff --git a/statsmodels/sandbox/datarich/__init__.py b/statsmodels/sandbox/datarich/__init__.py new file mode 100644 index 0000000..1e26f0c --- /dev/null +++ b/statsmodels/sandbox/datarich/__init__.py @@ -0,0 +1,165 @@ +''' + +Econometrics for a Datarich Environment +======================================= + +Introduction +------------ +In many cases we are performing statistical analysis when many observed variables are +available, when we are in a data rich environment. Machine learning has a wide variety +of tools for dimension reduction and penalization when there are many varibles compared +to the number of observation. Chemometrics has a long tradition of using Partial Least +Squares, NIPALS and similar in these cases. In econometrics the same problem shows up +when there are either many possible regressors, many (weak) instruments or when there are +a large number of moment conditions in GMM. + +This section is intended to collect some models and tools in this area that are relevant +for the statical analysis and econometrics. + +Covariance Matrices +=================== +Several methods are available to reduce the small sample noise in estimated covariance +matrices with many variable. +Some applications: +weighting matrix with many moments, +covariance matrix for portfolio choice + +Dimension Reduction +=================== +Principal Component and Partial Least Squares try to extract the important low dimensional +factors from the data with many variables. + +Regression with many regressors +=============================== +Factor models, selection of regressors and shrinkage and penalization are used to improve +the statistical properties, when the presence of too many regressors leads to over-fitting +and too noisy small sample estimators and statistics. + +Regression with many moments or many instruments +================================================ +The same tools apply and can be used in these two cases. +e.g. Tychonov regularization of weighting matrix in GMM, similar to Ridge regression, the +weighting matrix can be shrunk towards the identity matrix. +Simplest case will be part of GMM. I don't know how much will be standalone +functions. + + +Intended Content +================ + +PLS +--- +what should be available in class? + +Factormodel and supporting helper functions +------------------------------------------- + +PCA based +~~~~~~~~~ +First version based PCA on Stock/Watson and Bai/Ng, and recent papers on the +selection of the number of factors. Not sure about Forni et al. in approach. +Basic support of this needs additional results for PCA, error covariance matrix +of data on reduced factors, required for criteria in Bai/Ng. +Selection criteria based on eigenvalue cutoffs. + +Paper on PCA and structural breaks. Could add additional results during +find_nfact to test for parameter stability. I haven't read the paper yet. + +Idea: for forecasting, use up to h-step ahead endogenous variables to directly +get the forecasts. + +Asymptotic results and distribution: not too much idea yet. +Standard OLS results are conditional on factors, paper by Haerdle (abstract +seems to suggest that this is ok, Park 2009). + +Simulation: add function to simulate DGP of Bai/Ng and recent extension. +Sensitivity of selection criteria to heteroscedasticity and autocorrelation. + +Bai, J. & Ng, S., 2002. Determining the Number of Factors in + Approximate Factor Models. Econometrica, 70(1), pp.191-221. + +Kapetanios, G., 2010. A Testing Procedure for Determining the Number + of Factors in Approximate Factor Models With Large Datasets. Journal + of Business and Economic Statistics, 28(3), pp.397-409. + +Onatski, A., 2010. Determining the Number of Factors from Empirical + Distribution of Eigenvalues. Review of Economics and Statistics, + 92(4), pp.1004-1016. + +Alessi, L., Barigozzi, M. & Capasso, M., 2010. Improved penalization + for determining the number of factors in approximate factor models. + Statistics & Probability Letters, 80(23-24), pp.1806-1813. + +Breitung, J. & Eickmeier, S., Testing for structural breaks in dynamic + factor models. Journal of Econometrics, In Press, Accepted Manuscript. + Available at: + http://www.sciencedirect.com/science/article/B6VC0-51G3W92-1/2/f45ce2332443374fd770e42e5a68ddb4 + [Accessed November 15, 2010]. + +Croux, C., Renault, E. & Werker, B., 2004. Dynamic factor models. + Journal of Econometrics, 119(2), pp.223-230. + +Forni, M. et al., 2009. Opening the Black Box: Structural Factor + Models with Large Cross Sections. Econometric Theory, 25(05), + pp.1319-1347. + +Forni, M. et al., 2000. The Generalized Dynamic-Factor Model: + Identification and Estimation. Review of Economics and Statistics, + 82(4), pp.540-554. + +Forni, M. & Lippi, M., The general dynamic factor model: One-sided + representation results. Journal of Econometrics, In Press, Accepted + Manuscript. Available at: + http://www.sciencedirect.com/science/article/B6VC0-51FNPJN-1/2/4fcdd0cfb66e3050ff5d19bf2752ed19 + [Accessed November 15, 2010]. + +Kapetanios, G., 2010. A Testing Procedure for Determining the Number + of Factors in Approximate Factor Models With Large Datasets. Journal + of Business and Economic Statistics, 28(3), pp.397-409. + +Onatski, A., 2010. Determining the Number of Factors from Empirical + Distribution of Eigenvalues. Review of Economics and Statistics, + 92(4), pp.1004-1016. + +Park, B.U. et al., 2009. Time Series Modelling With Semiparametric + Factor Dynamics. Journal of the American Statistical Association, + 104(485), pp.284-298. + + + +other factor algorithm +~~~~~~~~~~~~~~~~~~~~~~ +PLS should fit in reasonably well. + +Bai/Ng have a recent paper, where they compare LASSO, PCA, and similar, individual +and in combination. +Check how much we can use scikits.learn for this. + + +miscellaneous +~~~~~~~~~~~~~ +Time series modeling of factors for prediction, ARMA, VARMA. +SUR and correlation structure +What about sandwich estimation, robust covariance matrices? +Similarity to Factor-Garch and Go-Garch +Updating: incremental PCA, ...? + + +TODO next +========= +MVOLS : OLS with multivariate endogenous and identical exogenous variables. + rewrite and expand current varma_process.VAR +PCA : write a class after all, and/or adjust the current donated class + and keep adding required statistics, e.g. + residual variance, projection of X on k-factors, ... updating ? +FactorModelUnivariate : started, does basic principal component regression, + based on standard information criteria, not Bai/Ng adjusted +FactorModelMultivariate : follow pattern for univariate version and use + MVOLS + + + + + + +''' diff --git a/statsmodels/sandbox/datarich/factormodels.py b/statsmodels/sandbox/datarich/factormodels.py new file mode 100644 index 0000000..d9afe3c --- /dev/null +++ b/statsmodels/sandbox/datarich/factormodels.py @@ -0,0 +1,188 @@ +# -*- coding: utf-8 -*- +""" +Created on Sun Nov 14 08:21:41 2010 + +Author: josef-pktd +License: BSD (3-clause) +""" + +from __future__ import print_function +import numpy as np +import statsmodels.api as sm +from statsmodels.sandbox.tools import pca +from statsmodels.sandbox.tools.cross_val import LeaveOneOut + +#converting example Principal Component Regression to a class +#from sandbox/example_pca_regression.py + + +class FactorModelUnivariate(object): + ''' + + Todo: + check treatment of const, make it optional ? + add hasconst (0 or 1), needed when selecting nfact+hasconst + options are arguments in calc_factors, should be more public instead + cross-validation is slow for large number of observations + ''' + def __init__(self, endog, exog): + #do this in a superclass? + self.endog = np.asarray(endog) + self.exog = np.asarray(exog) + + + def calc_factors(self, x=None, keepdim=0, addconst=True): + '''get factor decomposition of exogenous variables + + This uses principal component analysis to obtain the factors. The number + of factors kept is the maximum that will be considered in the regression. + ''' + if x is None: + x = self.exog + else: + x = np.asarray(x) + xred, fact, evals, evecs = pca(x, keepdim=keepdim, normalize=1) + self.exog_reduced = xred + #self.factors = fact + if addconst: + self.factors = sm.add_constant(fact, prepend=True) + self.hasconst = 1 #needs to be int + else: + self.factors = fact + self.hasconst = 0 #needs to be int + + self.evals = evals + self.evecs = evecs + + def fit_fixed_nfact(self, nfact): + if not hasattr(self, 'factors_wconst'): + self.calc_factors() + return sm.OLS(self.endog, self.factors[:,:nfact+1]).fit() + + def fit_find_nfact(self, maxfact=None, skip_crossval=True, cv_iter=None): + '''estimate the model and selection criteria for up to maxfact factors + + The selection criteria that are calculated are AIC, BIC, and R2_adj. and + additionally cross-validation prediction error sum of squares if `skip_crossval` + is false. Cross-validation is not used by default because it can be + time consuming to calculate. + + By default the cross-validation method is Leave-one-out on the full dataset. + A different cross-validation sample can be specified as an argument to + cv_iter. + + Results are attached in `results_find_nfact` + + + + ''' + #print 'OLS on Factors' + if not hasattr(self, 'factors'): + self.calc_factors() + + hasconst = self.hasconst + if maxfact is None: + maxfact = self.factors.shape[1] - hasconst + + if (maxfact+hasconst) < 1: + raise ValueError('nothing to do, number of factors (incl. constant) should ' + + 'be at least 1') + + #temporary safety + maxfact = min(maxfact, 10) + + y0 = self.endog + results = [] + #xred, fact, eva, eve = pca(x0, keepdim=0, normalize=1) + for k in range(1, maxfact+hasconst): #k includes now the constnat + #xred, fact, eva, eve = pca(x0, keepdim=k, normalize=1) + # this is faster and same result + fact = self.factors[:,:k] + res = sm.OLS(y0, fact).fit() + ## print 'k =', k + ## print res.params + ## print 'aic: ', res.aic + ## print 'bic: ', res.bic + ## print 'llf: ', res.llf + ## print 'R2 ', res.rsquared + ## print 'R2 adj', res.rsquared_adj + + if not skip_crossval: + if cv_iter is None: + cv_iter = LeaveOneOut(len(y0)) + prederr2 = 0. + for inidx, outidx in cv_iter: + res_l1o = sm.OLS(y0[inidx], fact[inidx,:]).fit() + #print data.endog[outidx], res.model.predict(data.exog[outidx,:]), + prederr2 += (y0[outidx] - + res_l1o.model.predict(res_l1o.params, fact[outidx,:]))**2. + else: + prederr2 = np.nan + + results.append([k, res.aic, res.bic, res.rsquared_adj, prederr2]) + + self.results_find_nfact = results = np.array(results) + self.best_nfact = np.r_[(np.argmin(results[:,1:3],0), np.argmax(results[:,3],0), + np.argmin(results[:,-1],0))] + + def summary_find_nfact(self): + '''provides a summary for the selection of the number of factors + + Returns + ------- + sumstr : string + summary of the results for selecting the number of factors + + ''' + if not hasattr(self, 'results_find_nfact'): + self.fit_find_nfact() + + + results = self.results_find_nfact + sumstr = '' + sumstr += '\n' + 'Best result for k, by AIC, BIC, R2_adj, L1O' +# best = np.r_[(np.argmin(results[:,1:3],0), np.argmax(results[:,3],0), +# np.argmin(results[:,-1],0))] + + sumstr += '\n' + ' '*19 + '%5d %4d %6d %5d' % tuple(self.best_nfact) + + from statsmodels.iolib.table import SimpleTable + + headers = 'k, AIC, BIC, R2_adj, L1O'.split(', ') + numformat = ['%6d'] + ['%10.3f']*4 #'%10.4f' + txt_fmt1 = dict(data_fmts = numformat) + tabl = SimpleTable(results, headers, None, txt_fmt=txt_fmt1) + + sumstr += '\n' + "PCA regression on simulated data," + sumstr += '\n' + "DGP: 2 factors and 4 explanatory variables" + sumstr += '\n' + tabl.__str__() + sumstr += '\n' + "Notes: k is number of components of PCA," + sumstr += '\n' + " constant is added additionally" + sumstr += '\n' + " k=0 means regression on constant only" + sumstr += '\n' + " L1O: sum of squared prediction errors for leave-one-out" + return sumstr + + +if __name__ == '__main__': + + examples = [1] + if 1 in examples: + nobs = 500 + f0 = np.c_[np.random.normal(size=(nobs,2)), np.ones((nobs,1))] + f2xcoef = np.c_[np.repeat(np.eye(2),2,0),np.arange(4)[::-1]].T + f2xcoef = np.array([[ 1., 1., 0., 0.], + [ 0., 0., 1., 1.], + [ 3., 2., 1., 0.]]) + f2xcoef = np.array([[ 0.1, 3., 1., 0.], + [ 0., 0., 1.5, 0.1], + [ 3., 2., 1., 0.]]) + x0 = np.dot(f0, f2xcoef) + x0 += 0.1*np.random.normal(size=x0.shape) + ytrue = np.dot(f0,[1., 1., 1.]) + y0 = ytrue + 0.1*np.random.normal(size=ytrue.shape) + + mod = FactorModelUnivariate(y0, x0) + print(mod.summary_find_nfact()) + print("with cross validation - slower") + mod.fit_find_nfact(maxfact=None, skip_crossval=False, cv_iter=None) + print(mod.summary_find_nfact()) diff --git a/statsmodels/sandbox/dataset_notes.rst b/statsmodels/sandbox/dataset_notes.rst new file mode 100644 index 0000000..b57ecac --- /dev/null +++ b/statsmodels/sandbox/dataset_notes.rst @@ -0,0 +1,66 @@ +Adding a dataset. + +Main Steps +1) Obtain permission to use the data. + +1) Obtain permission! This is really important! I usually look up an e-mail +address and politely (and briefly) explain why I would like to use the data. +Most people get back to me almost immediately, and I have never had anyone say +no. After all, I think most academics are sympathetic to the idea that +information wants to be free... + +2) Make a directory in the datasets folder. For this example I will be using +the Spector and Mazzeo data from Greene's Econometric Analysis, so I make a +folder called statsmodels/datasets/spector + +3) Copy the template_data.py file over to the new directory, but rename it data.py. It contains all the meta information for the datasets. So we now have datasets/spector/data.py + +4) Put the raw data into this folder and convert it. + +Sometimes the data used for examples is different than the raw data. If this +is the case then the datasets/spector directory should contain a folder named +src for the original data. In this case, the data is clean, so I just put a +file name spector.csv into datasets/spector. This file is just an ascii file +with spaces as delimiters. If the file requires a little cleaning, then put the +raw data in src and create a file called spector.csv in the spector folder for +the cleaned data. + +After this is done, we use the convert function in scikits.statsmodels.datasets.data_utils to convert the data into the format needed. In the folder with our .csv file, just do. + +from scikits.statsmodels.datasets.data_utils import convert +convert('./spector.csv', delimiter=" ") + +This creates a spector.py file, which contains all of the variables as lists of strings. + +5) Edit data.py to reflect the correct meta information. + +Usually, this will require editing the COPYRIGHT, TITLE, SOURCE, +DESCRSHORT (and/or DESCRLONG), and "NOTE" + +6) Edit the Load class of data.py to load the newly created dataset. + +In this case, we change the following lines to read + +from spector import __dict__, names +self.endog = np.array(self._d[self._names[4]], dtype=float) +self.exog = np.column_stack(self._d[i] \ + for i in self._names[1:4]).astype(np.float) + +This is probably not the best way to handle the datasets class, and will +probably change in the future as the datasets package becomes more robust. +Suggetions are very welcome. + +7) Create an __init__.py in the new folder + +The __init__.py file should contain + +from data import * + +8) Edit the datasets.__init__.py to import the new directory + +9) Make sure everything is correct, and you've saved everything, + and put the directory under version control. + +bzr add spector + + diff --git a/statsmodels/sandbox/descstats.py b/statsmodels/sandbox/descstats.py new file mode 100644 index 0000000..1b90db6 --- /dev/null +++ b/statsmodels/sandbox/descstats.py @@ -0,0 +1,190 @@ +''' +Glue for returning descriptive statistics. +''' +import numpy as np +from scipy import stats +import os +from statsmodels.stats.descriptivestats import sign_test + +############################################# +# +#============================================ +# Univariate Descriptive Statistics +#============================================ +# + +def descstats(data, cols=None, axis=0): + ''' + Prints descriptive statistics for one or multiple variables. + + Parameters + ---------- + data: numpy array + `x` is the data + + v: list, optional + A list of the column number or field names (for a recarray) of variables. + Default is all columns. + + axis: 1 or 0 + axis order of data. Default is 0 for column-ordered data. + + Examples + -------- + >>> descstats(data.exog,v=['x_1','x_2','x_3']) + ''' + + x = np.array(data) # or rather, the data we're interested in + if cols is None: +# if isinstance(x, np.recarray): +# cols = np.array(len(x.dtype.names)) + if not isinstance(x, np.recarray) and x.ndim == 1: + x = x[:,None] + + if x.shape[1] == 1: + desc = ''' + --------------------------------------------- + Univariate Descriptive Statistics + --------------------------------------------- + + Var. Name %(name)12s + ---------- + Obs. %(nobs)22i Range %(range)22s + Sum of Wts. %(sum)22s Coeff. of Variation %(coeffvar)22.4g + Mode %(mode)22.4g Skewness %(skewness)22.4g + Repeats %(nmode)22i Kurtosis %(kurtosis)22.4g + Mean %(mean)22.4g Uncorrected SS %(uss)22.4g + Median %(median)22.4g Corrected SS %(ss)22.4g + Variance %(variance)22.4g Sum Observations %(sobs)22.4g + Std. Dev. %(stddev)22.4g + ''' % {'name': cols, 'sum': 'N/A', 'nobs': len(x), 'mode': \ + stats.mode(x)[0][0], 'nmode': stats.mode(x)[1][0], \ + 'mean': x.mean(), 'median': np.median(x), 'range': \ + '('+str(x.min())+', '+str(x.max())+')', 'variance': \ + x.var(), 'stddev': x.std(), 'coeffvar': \ + stats.variation(x), 'skewness': stats.skew(x), \ + 'kurtosis': stats.kurtosis(x), 'uss': np.sum(x**2, axis=0),\ + 'ss': np.sum((x-x.mean())**2, axis=0), 'sobs': np.sum(x)} + + desc+= ''' + + Percentiles + ------------- + 1 %% %12.4g + 5 %% %12.4g + 10 %% %12.4g + 25 %% %12.4g + + 50 %% %12.4g + + 75 %% %12.4g + 90 %% %12.4g + 95 %% %12.4g + 99 %% %12.4g + ''' % tuple([stats.scoreatpercentile(x,per) for per in (1,5,10,25, + 50,75,90,95,99)]) + t,p_t=stats.ttest_1samp(x,0) + M,p_M=sign_test(x) + S,p_S=stats.wilcoxon(np.squeeze(x)) + + desc+= ''' + + Tests of Location (H0: Mu0=0) + ----------------------------- + Test Statistic Two-tailed probability + -----------------+----------------------------------------- + Student's t | t %7.5f Pr > |t| <%.4f + Sign | M %8.2f Pr >= |M| <%.4f + Signed Rank | S %8.2f Pr >= |S| <%.4f + + ''' % (t,p_t,M,p_M,S,p_S) +# Should this be part of a 'descstats' +# in any event these should be split up, so that they can be called +# individually and only returned together if someone calls summary +# or something of the sort + + elif x.shape[1] > 1: + desc =''' + Var. Name | Obs. Mean Std. Dev. Range + ------------+--------------------------------------------------------'''+\ + os.linesep + +# for recarrays with columns passed as names +# if isinstance(cols[0],str): +# for var in cols: +# desc += "%(name)15s %(obs)9i %(mean)12.4g %(stddev)12.4g \ +#%(range)20s" % {'name': var, 'obs': len(x[var]), 'mean': x[var].mean(), +# 'stddev': x[var].std(), 'range': '('+str(x[var].min())+', '\ +# +str(x[var].max())+')'+os.linesep} +# else: + for var in range(x.shape[1]): + xv = x[:, var] + kwargs = { + 'name': var, + 'obs': len(xv), + 'mean': xv.mean(), + 'stddev': xv.std(), + 'range': '('+str(xv.min())+', '+str(xv.max())+')'+os.linesep + } + desc += ("%(name)15s %(obs)9i %(mean)12.4g %(stddev)12.4g " + "%(range)20s" % kwargs) + else: + raise ValueError("data not understood") + + return desc + +#if __name__=='__main__': +# test descstats +# import os +# loc='http://eagle1.american.edu/~js2796a/data/handguns_data.csv' +# relpath=(load_dataset(loc)) +# dta=np.recfromcsv(relpath) +# descstats(dta,['stpop']) +# raw_input('Hit enter for multivariate test') +# descstats(dta,['stpop','avginc','vio']) + +# with plain arrays +# import string2dummy as s2d +# dts=s2d.string2dummy(dta) +# ndts=np.vstack(dts[col] for col in dts.dtype.names) +# observations in columns and data in rows +# is easier for the call to stats + +# what to make of +# ndts=np.column_stack(dts[col] for col in dts.dtype.names) +# ntda=ntds.swapaxis(1,0) +# ntda is ntds returns false? + +# or now we just have detailed information about the different strings +# would this approach ever be inappropriate for a string typed variable +# other than dates? +# descstats(ndts, [1]) +# raw_input("Enter to try second part") +# descstats(ndts, [1,20,3]) + +if __name__ == '__main__': + import statsmodels.api as sm + data = sm.datasets.longley.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + sum1 = descstats(data.exog) + sum1a = descstats(data.exog[:,:1]) + +# loc='http://eagle1.american.edu/~js2796a/data/handguns_data.csv' +# dta=np.recfromcsv(loc) +# summary2 = descstats(dta,['stpop']) +# summary3 = descstats(dta,['stpop','avginc','vio']) +#TODO: needs a by argument +# summary4 = descstats(dta) this fails +# this is a bug +# p = dta[['stpop']] +# p.view(dtype = np.float, type = np.ndarray) +# this works +# p.view(dtype = np.int, type = np.ndarray) + +### This is *really* slow ### + if os.path.isfile('./Econ724_PS_I_Data.csv'): + data2 = np.recfromcsv('./Econ724_PS_I_Data.csv') + sum2 = descstats(data2.ahe) + sum3 = descstats(np.column_stack((data2.ahe,data2.yrseduc))) + sum4 = descstats(np.column_stack(([data2[_] for \ + _ in data2.dtype.names]))) diff --git a/statsmodels/sandbox/distributions/__init__.py b/statsmodels/sandbox/distributions/__init__.py new file mode 100644 index 0000000..49b1d30 --- /dev/null +++ b/statsmodels/sandbox/distributions/__init__.py @@ -0,0 +1,23 @@ +'''temporary location for enhancements to scipy.stats + +includes +^^^^^^^^ + +* Per Brodtkorb's estimation enhancements to scipy.stats.distributions + - distributions_per.py is copy of scipy.stats.distributions.py with changes + - distributions_profile.py partially extracted classes and functions to + separate code into more managable pieces +* josef's extra distribution and helper functions + - moment helpers + - goodness of fit test + - fitting distributions with some fixed parameters + - find best distribution that fits data: working script +* example and test folders to keep all together + +status +^^^^^^ + +mixed status : from not-working to well-tested + + +''' diff --git a/statsmodels/sandbox/distributions/copula.py b/statsmodels/sandbox/distributions/copula.py new file mode 100644 index 0000000..384b3a0 --- /dev/null +++ b/statsmodels/sandbox/distributions/copula.py @@ -0,0 +1,462 @@ +''' + +Which Archimedean is Best? +Extreme Value copulas formulas are based on Genest 2009 + +References +---------- + +Genest, C., 2009. Rank-based inference for bivariate extreme-value +copulas. The Annals of Statistics, 37(5), pp.2990-3022. + + + +''' + + +import numpy as np +from scipy.special import expm1 + + +def copula_bv_indep(u,v): + '''independent bivariate copula + ''' + return u*v + +def copula_bv_min(u,v): + '''comonotonic bivariate copula + ''' + return np.minimum(u, v) + +def copula_bv_max(u, v): + '''countermonotonic bivariate copula + ''' + return np.maximum(u + v - 1, 0) + +def copula_bv_clayton(u, v, theta): + '''Clayton or Cook, Johnson bivariate copula + ''' + if not theta > 0: + raise ValueError('theta needs to be strictly positive') + return np.power(np.power(u, -theta) + np.power(v, -theta) - 1, -theta) + + +def copula_bv_frank(u, v, theta): + '''Cook, Johnson bivariate copula + ''' + if not theta > 0: + raise ValueError('theta needs to be strictly positive') + cdfv = -np.log(1 + expm1(-theta*u) * expm1(-theta*v) / expm1(-theta))/theta + cdfv = np.minimum(cdfv, 1) #necessary for example if theta=100 + return cdfv + + +def copula_bv_gauss(u, v, rho): + raise NotImplementedError + + +def copula_bv_t(u, v, rho, df): + raise NotImplementedError + + +#Archimedean Copulas through generator functions +#=============================================== + + +#not used yet +class Transforms(object): + def __init__(self): + pass + + +class TransfFrank(object): + + def evaluate(self, t, theta): + return - (np.log(-expm1(-theta*t)) - np.log(-expm1(-theta))) + #return - np.log(expm1(-theta*t) / expm1(-theta)) + + def inverse(self, phi, theta): + return -np.log1p(np.exp(-phi) * expm1(-theta)) / theta + + def deriv(self, t, theta): + tmp = np.exp(-t*theta) + return theta * tmp/(1 + tmp) + + def deriv2(self, t, theta): + tmp1 = - t * theta + tmp2 = (1. + np.exp(tmp1)) + + d2 = theta**2 * (-np.exp(tmp1) / tmp2 + np.exp(2*tmp1) / tmp2**2) + return d2 + + def is_completly_monotonic(self, theta): + #range of theta for which it is copula for d>2 (more than 2 rvs) + return theta > 0 & theta < 1 + + +class TransfClayton(object): + + def _checkargs(self, theta): + return theta > 0 + + def evaluate(self, t, theta): + return np.power(t, -theta) - 1. + + def inverse(self, phi, theta): + return np.power(1 + phi, -theta) + + def deriv(self, t, theta): + return -theta * np.power(t, -theta-1) + + def deriv2(self, t, theta): + return theta * (theta + 1) * np.power(t, -theta-2) + + def is_completly_monotonic(self, theta): + return theta > 0 + + +class TransfGumbel(object): + ''' + requires theta >=1 + ''' + + def _checkargs(self, theta): + return theta >= 1 + + def evaluate(self, t, theta): + return np.power(-np.log(t), theta) + + def inverse(self, phi, theta): + return np.exp(-np.power(phi, 1. / theta)) + + def deriv(self, t, theta): + return - theta * (-np.log(t))**(theta - 1) / t + + def deriv2(self, t, theta): + tmp1 = np.log(t) + d2 = (theta*(-1)**(1 + theta) * tmp1**(theta-1) * (1 - theta) + + theta*(-1)**(1 + theta)*tmp1**theta)/(t**2*tmp1) + #d2 = (theta * tmp1**(-1 + theta) * (1 - theta) + theta * tmp1**theta + # ) / (t**2 * tmp1) + + return d2 + + def is_completly_monotonic(self, theta): + return theta > 1 + + +class TransfIndep(object): + def evaluate(self, t): + return -np.log(t) + + def inverse(self, phi): + return np.exp(-phi) + + def deriv(self, t): + return - 1./t + + def deriv2(self, t): + return - 1./t**2 + + +def copula_bv_archimedean(u, v, transform, args=()): + ''' + ''' + phi = transform.evaluate + phi_inv = transform.inverse + cdfv = phi_inv(phi(u, *args) + phi(v, *args), *args) + return cdfv + + +def copula_mv_archimedean(u, transform, args=(), axis=-1): + '''generic multivariate Archimedean copula + ''' + phi = transform.evaluate + phi_inv = transform.inverse + cdfv = phi_inv(phi(u, *args).sum(axis), *args) + return cdfv + + +def copula_power_mv_archimedean(u, transform, alpha, beta, args=(), axis=-1): + '''generic multivariate Archimedean copula with additional power transforms + + Nelson p.144, equ. 4.5.2 + ''' + + def phi(u, alpha, beta, args=()): + return np.power(transform.evaluate(np.power(u, alpha), *args), beta) + + def phi_inv(t, alpha, beta, args=()): + return np.power(transform.evaluate(np.power(t, 1./beta), *args), 1./alpha) + + cdfv = phi_inv(phi(u, *args).sum(axis), *args) + return cdfv + + +class CopulaArchimedean(object): + + def __init__(self, transform): + self.transform = transform + + def cdf(self, u, args=(), axis=-1): + '''evaluate cdf of multivariate Archimedean copula + ''' + phi = self.transform.evaluate + phi_inv = self.transform.inverse + cdfv = phi_inv(phi(u, *args).sum(axis), *args) + return cdfv + + def pdf(self, u, args=(), axis=-1): + '''evaluate cdf of multivariate Archimedean copula + ''' + phi = self.transform.evaluate + phi_inv = self.transform.inverse + phi_d1 = self.transform.deriv + phi_d2 = self.transform.deriv2 + + + cdfv = self.cdf(u, args=args, axis=axis) + + pdfv = - np.product(phi_d1(u, *args), axis) + pdfv *= phi_d2(cdfv, *args) + pdfv /= phi_d1(cdfv, *args)**3 + + return pdfv + + + + +#Extreme Value Copulas +#===================== + +def copula_bv_ev(u, v, transform, args=()): + '''generic bivariate extreme value copula + ''' + return np.exp(np.log(u * v) * (transform(np.log(v)/np.log(u*v), *args))) + + +def transform_tawn(t, a1, a2, theta): + '''asymmetric logistic model of Tawn 1988 + + special case: a1=a2=1 : Gumbel + + restrictions: + - theta in (0,1] + - a1, a2 in [0,1] + ''' + + def _check_args(a1, a2, theta): + condth = (theta > 0) and (theta <= 1) + conda1 = (a1 >= 0) and (a1 <= 1) + conda2 = (a2 >= 0) and (a2 <= 1) + return condth and conda1 and conda2 + + if not np.all(_check_args(a1, a2, theta)): + raise ValueError('invalid args') + + transf = (1 - a1) * (1-t) + transf += (1 - a2) * t + transf += ((a1 * t)**(1./theta) + (a2 * (1-t))**(1./theta))**theta + + return transf + + +def transform_joe(t, a1, a2, theta): + '''asymmetric negative logistic model of Joe 1990 + + special case: a1=a2=1 : symmetric negative logistic of Galambos 1978 + + restrictions: + - theta in (0,inf) + - a1, a2 in (0,1] + ''' + + def _check_args(a1, a2, theta): + condth = (theta > 0) + conda1 = (a1 > 0) and (a1 <= 1) + conda2 = (a2 > 0) and (a2 <= 1) + return condth and conda1 and conda2 + + if not np.all(_check_args(a1, a2, theta)): + raise ValueError('invalid args') + + transf = 1 - ((a1 * (1-t))**(-1./theta) + (a2 * t)**(-1./theta))**(-theta) + return transf + + +def transform_tawn2(t, theta, k): + '''asymmetric mixed model of Tawn 1988 + + special case: k=0, theta in [0,1] : symmetric mixed model of + Tiago de Oliveira 1980 + + restrictions: + - theta > 0 + - theta + 3*k > 0 + - theta + k <= 1 + - theta + 2*k <= 1 + ''' + + def _check_args(theta, k): + condth = (theta >= 0) + cond1 = (theta + 3*k > 0) and (theta + k <= 1) and (theta + 2*k <= 1) + return condth and cond1 + + if not np.all(_check_args(theta, k)): + raise ValueError('invalid args') + + transf = 1 - (theta + k) * t + theta * t*t + k * t**3 + return transf + + +def transform_bilogistic(t, beta, delta): + '''bilogistic model of Coles and Tawn 1994, Joe, Smith and Weissman 1992 + + restrictions: + - (beta, delta) in (0,1)^2 or + - (beta, delta) in (-inf,0)^2 + + not vectorized because of numerical integration + ''' + + def _check_args(beta, delta): + cond1 = (beta > 0) and (beta <= 1) and (delta > 0) and (delta <= 1) + cond2 = (beta < 0) and (delta < 0) + return cond1 | cond2 + + if not np.all(_check_args(beta, delta)): + raise ValueError('invalid args') + + def _integrant(w): + term1 = (1 - beta) * np.power(w, -beta) * (1-t) + term2 = (1 - delta) * np.power(1-w, -delta) * t + np.maximum(term1, term2) + + from scipy.integrate import quad + transf = quad(_integrant, 0, 1) + return transf + + +def transform_hr(t, lamda): + '''model of Huesler Reiss 1989 + + special case: a1=a2=1 : symmetric negative logistic of Galambos 1978 + + restrictions: + - lambda in (0,inf) + ''' + + def _check_args(lamda): + cond = (lamda > 0) + return cond + + if not np.all(_check_args(lamda)): + raise ValueError('invalid args') + + term = np.log((1. - t) / t) * 0.5 / lamda + + from scipy.stats import norm #use special if I want to avoid stats import + transf = (1 - t) * norm._cdf(lamda + term) + t * norm._cdf(lamda - term) + return transf + + +def transform_tev(t, rho, x): + '''t-EV model of Demarta and McNeil 2005 + + restrictions: + - rho in (-1,1) + - x > 0 + ''' + + def _check_args(rho, x): + cond1 = (x > 0) + cond2 = (rho > 0) and (rho < 1) + return cond1 and cond2 + + if not np.all(_check_args(rho, x)): + raise ValueError('invalid args') + + from scipy.stats import t as stats_t #use special if I want to avoid stats import + + z = np.sqrt(1. + x) * (np.power(t/(1.-t), 1./x) - rho) + z /= np.sqrt(1 - rho*rho) + transf = (1 - t) * stats_t._cdf(z, x+1) + t * stats_t._cdf(z, x+1) + return transf + + + +#========================================================================== + +#define dictionary of copulas by names and aliases +copulanamesbv = {'indep' : copula_bv_indep, + 'i' : copula_bv_indep, + 'min' : copula_bv_min, + 'max' : copula_bv_max, + 'clayton' : copula_bv_clayton, + 'cookjohnson' : copula_bv_clayton, + 'cj' : copula_bv_clayton, + 'frank' : copula_bv_frank, + 'gauss' : copula_bv_gauss, + 'normal' : copula_bv_gauss, + 't' : copula_bv_t} + + +class CopulaDistributionBivariate(object): + '''bivariate copula class + + Instantiation needs the arguments, cop_args, that are required for copula + ''' + def __init__(self, marginalcdfs, copula, copargs=()): + if copula in copulanamesbv: + self.copula = copulanamesbv[copula] + else: + #see if we can call it as a copula function + try: + tmp = copula(0.5, 0.5, *copargs) + except: #blanket since we throw again + raise ValueError('copula needs to be a copula name or callable') + self.copula = copula + + #no checking done on marginals + self.marginalcdfs = marginalcdfs + self.copargs = copargs + + def cdf(self, xy, args=None): + '''xx needs to be iterable, instead of x,y for extension to multivariate + ''' + x, y = xy + if args is None: + args = self.copargs + return self.copula(self.marginalcdfs[0](x), self.marginalcdfs[1](y), + *args) + + +class CopulaDistribution(object): + '''bivariate copula class + + Instantiation needs the arguments, cop_args, that are required for copula + ''' + def __init__(self, marginalcdfs, copula, copargs=()): + if copula in copulanamesbv: + self.copula = copulanamesbv[copula] + else: + #see if we can call it as a copula function + try: + tmp = copula(0.5, 0.5, *copargs) + except: #blanket since we throw again + raise ValueError('copula needs to be a copula name or callable') + self.copula = copula + + + #no checking done on marginals + self.marginalcdfs = marginalcdfs + self.copargs = copargs + + def cdf(self, xy, args=None): + '''xx needs to be iterable, instead of x,y for extension to multivariate + ''' + x, y = xy + if args is None: + args = self.copargs + return self.copula(self.marginalcdfs[0](x), self.marginalcdfs[1](y), + *args) diff --git a/statsmodels/sandbox/distributions/estimators.py b/statsmodels/sandbox/distributions/estimators.py new file mode 100644 index 0000000..10b950a --- /dev/null +++ b/statsmodels/sandbox/distributions/estimators.py @@ -0,0 +1,678 @@ +'''estimate distribution parameters by various methods +method of moments or matching quantiles, and Maximum Likelihood estimation +based on binned data and Maximum Product-of-Spacings + +Warning: I'm still finding cut-and-paste and refactoring errors, e.g. + hardcoded variables from outer scope in functions + some results don't seem to make sense for Pareto case, + looks better now after correcting some name errors + +initially loosely based on a paper and blog for quantile matching + by John D. Cook + formula for gamma quantile (ppf) matching by him (from paper) + http://www.codeproject.com/KB/recipes/ParameterPercentile.aspx + http://www.johndcook.com/blog/2010/01/31/parameters-from-percentiles/ + this is what I actually used (in parts): + http://www.bepress.com/mdandersonbiostat/paper55/ + +quantile based estimator +^^^^^^^^^^^^^^^^^^^^^^^^ +only special cases for number or parameters so far +Is there a literature for GMM estimation of distribution parameters? check + found one: Wu/Perloff 2007 + + +binned estimator +^^^^^^^^^^^^^^^^ +* I added this also +* use it for chisquare tests with estimation distribution parameters +* move this to distribution_extras (next to gof tests powerdiscrepancy and + continuous) or add to distribution_patch + + +example: t-distribution +* works with quantiles if they contain tail quantiles +* results with momentcondquant don't look as good as mle estimate + +TODOs +* rearange and make sure I don't use module globals (as I did initially) DONE + make two version exactly identified method of moments with fsolve + and GMM (?) version with fmin + and maybe the special cases of JD Cook + update: maybe exact (MM) version is not so interesting compared to GMM +* add semifrozen version of moment and quantile based estimators, + e.g. for beta (both loc and scale fixed), or gamma (loc fixed) +* add beta example to the semifrozen MLE, fitfr, code + -> added method of moment estimator to _fitstart for beta +* start a list of how well different estimators, especially current mle work + for the different distributions +* need general GMM code (with optimal weights ?), looks like a good example + for it +* get example for binned data estimation, mailing list a while ago +* any idea when these are better than mle ? +* check language: I use quantile to mean the value of the random variable, not + quantile between 0 and 1. +* for GMM: move moment conditions to separate function, so that they can be + used for further analysis, e.g. covariance matrix of parameter estimates +* question: Are GMM properties different for matching quantiles with cdf or + ppf? Estimate should be the same, but derivatives of moment conditions + differ. +* add maximum spacings estimator, Wikipedia, Per Brodtkorb -> basic version Done +* add parameter estimation based on empirical characteristic function + (Carrasco/Florens), especially for stable distribution +* provide a model class based on estimating all distributions, and collect + all distribution specific information + + +References +---------- + +Ximing Wu, Jeffrey M. Perloff, GMM estimation of a maximum entropy +distribution with interval data, Journal of Econometrics, Volume 138, +Issue 2, 'Information and Entropy Econometrics' - A Volume in Honor of +Arnold Zellner, June 2007, Pages 532-546, ISSN 0304-4076, +DOI: 10.1016/j.jeconom.2006.05.008. +http://www.sciencedirect.com/science/article/B6VC0-4K606TK-4/2/78bc07c6245546374490f777a6bdbbcc +http://escholarship.org/uc/item/7jf5w1ht (working paper) + +Johnson, Kotz, Balakrishnan: Volume 2 + + +Author : josef-pktd +License : BSD +created : 2010-04-20 + +changes: +added Maximum Product-of-Spacings 2010-05-12 + +''' + +from __future__ import print_function +import numpy as np +from scipy import stats, optimize, special + +cache = {} #module global storage for temp results, not used + + +# the next two use distfn from module scope - not anymore +def gammamomentcond(distfn, params, mom2, quantile=None): + '''estimate distribution parameters based method of moments (mean, + variance) for distributions with 1 shape parameter and fixed loc=0. + + Returns + ------- + cond : function + + Notes + ----- + first test version, quantile argument not used + + ''' + def cond(params): + alpha, scale = params + mom2s = distfn.stats(alpha, 0.,scale) + #quantil + return np.array(mom2)-mom2s + return cond + +def gammamomentcond2(distfn, params, mom2, quantile=None): + '''estimate distribution parameters based method of moments (mean, + variance) for distributions with 1 shape parameter and fixed loc=0. + + Returns + ------- + difference : array + difference between theoretical and empirical moments + + Notes + ----- + first test version, quantile argument not used + + The only difference to previous function is return type. + + ''' + alpha, scale = params + mom2s = distfn.stats(alpha, 0.,scale) + return np.array(mom2)-mom2s + + + +######### fsolve doesn't move in small samples, fmin not very accurate +def momentcondunbound(distfn, params, mom2, quantile=None): + '''moment conditions for estimating distribution parameters using method + of moments, uses mean, variance and one quantile for distributions + with 1 shape parameter. + + Returns + ------- + difference : array + difference between theoretical and empirical moments and quantiles + + ''' + shape, loc, scale = params + mom2diff = np.array(distfn.stats(shape, loc,scale)) - mom2 + if quantile is not None: + pq, xq = quantile + #ppfdiff = distfn.ppf(pq, alpha) + cdfdiff = distfn.cdf(xq, shape, loc, scale) - pq + return np.concatenate([mom2diff, cdfdiff[:1]]) + return mom2diff + + +###### loc scale only +def momentcondunboundls(distfn, params, mom2, quantile=None, shape=None): + '''moment conditions for estimating loc and scale of a distribution + with method of moments using either 2 quantiles or 2 moments (not both). + + Returns + ------- + difference : array + difference between theoretical and empirical moments or quantiles + + ''' + loc, scale = params + mom2diff = np.array(distfn.stats(shape, loc, scale)) - mom2 + if quantile is not None: + pq, xq = quantile + #ppfdiff = distfn.ppf(pq, alpha) + cdfdiff = distfn.cdf(xq, shape, loc, scale) - pq + #return np.concatenate([mom2diff, cdfdiff[:1]]) + return cdfdiff + return mom2diff + + + +######### try quantile GMM with identity weight matrix +#(just a guess that's what it is + +def momentcondquant(distfn, params, mom2, quantile=None, shape=None): + '''moment conditions for estimating distribution parameters by matching + quantiles, defines as many moment conditions as quantiles. + + Returns + ------- + difference : array + difference between theoretical and empirical quantiles + + Notes + ----- + This can be used for method of moments or for generalized method of + moments. + + ''' + #this check looks redundant/unused know + if len(params) == 2: + loc, scale = params + elif len(params) == 3: + shape, loc, scale = params + else: + #raise NotImplementedError + pass #see whether this might work, seems to work for beta with 2 shape args + + #mom2diff = np.array(distfn.stats(*params)) - mom2 + #if not quantile is None: + pq, xq = quantile + #ppfdiff = distfn.ppf(pq, alpha) + cdfdiff = distfn.cdf(xq, *params) - pq + #return np.concatenate([mom2diff, cdfdiff[:1]]) + return cdfdiff + #return mom2diff + +def fitquantilesgmm(distfn, x, start=None, pquant=None, frozen=None): + if pquant is None: + pquant = np.array([0.01, 0.05,0.1,0.4,0.6,0.9,0.95,0.99]) + if start is None: + if hasattr(distfn, '_fitstart'): + start = distfn._fitstart(x) + else: + start = [1]*distfn.numargs + [0.,1.] + #TODO: vectorize this: + xqs = [stats.scoreatpercentile(x, p) for p in pquant*100] + mom2s = None + parest = optimize.fmin(lambda params:np.sum( + momentcondquant(distfn, params, mom2s,(pquant,xqs), shape=None)**2), start) + return parest + + + +def fitbinned(distfn, freq, binedges, start, fixed=None): + '''estimate parameters of distribution function for binned data using MLE + + Parameters + ---------- + distfn : distribution instance + needs to have cdf method, as in scipy.stats + freq : array, 1d + frequency count, e.g. obtained by histogram + binedges : array, 1d + binedges including lower and upper bound + start : tuple or array_like ? + starting values, needs to have correct length + + Returns + ------- + paramest : array + estimated parameters + + Notes + ----- + todo: add fixed parameter option + + added factorial + + ''' + if fixed is not None: + raise NotImplementedError + nobs = np.sum(freq) + lnnobsfact = special.gammaln(nobs+1) + + def nloglike(params): + '''negative loglikelihood function of binned data + + corresponds to multinomial + ''' + prob = np.diff(distfn.cdf(binedges, *params)) + return -(lnnobsfact + np.sum(freq*np.log(prob)- special.gammaln(freq+1))) + return optimize.fmin(nloglike, start) + + +def fitbinnedgmm(distfn, freq, binedges, start, fixed=None, weightsoptimal=True): + '''estimate parameters of distribution function for binned data using GMM + + Parameters + ---------- + distfn : distribution instance + needs to have cdf method, as in scipy.stats + freq : array, 1d + frequency count, e.g. obtained by histogram + binedges : array, 1d + binedges including lower and upper bound + start : tuple or array_like ? + starting values, needs to have correct length + fixed : None + not used yet + weightsoptimal : boolean + If true, then the optimal weighting matrix for GMM is used. If false, + then the identity matrix is used + + Returns + ------- + paramest : array + estimated parameters + + Notes + ----- + todo: add fixed parameter option + + added factorial + + ''' + if fixed is not None: + raise NotImplementedError + nobs = np.sum(freq) + if weightsoptimal: + weights = freq/float(nobs) + else: + weights = np.ones(len(freq)) + freqnormed = freq/float(nobs) + # skip turning weights into matrix diag(freq/float(nobs)) + + def gmmobjective(params): + '''negative loglikelihood function of binned data + + corresponds to multinomial + ''' + prob = np.diff(distfn.cdf(binedges, *params)) + momcond = freqnormed - prob + return np.dot(momcond*weights, momcond) + return optimize.fmin(gmmobjective, start) + +#Addition from try_maxproductspacings: +"""Estimating Parameters of Log-Normal Distribution with Maximum +Likelihood and Maximum Product-of-Spacings + +MPS definiton from JKB page 233 + +Created on Tue May 11 13:52:50 2010 +Author: josef-pktd +License: BSD +""" + +def hess_ndt(fun, pars, args, options): + import numdifftools as ndt + if not ('stepMax' in options or 'stepFix' in options): + options['stepMax'] = 1e-5 + f = lambda params: fun(params, *args) + h = ndt.Hessian(f, **options) + return h(pars), h + +def logmps(params, xsorted, dist): + '''calculate negative log of Product-of-Spacings + + Parameters + ---------- + params : array_like, tuple ? + parameters of the distribution funciton + xsorted : array_like + data that is already sorted + dist : instance of a distribution class + only cdf method is used + + Returns + ------- + mps : float + negative log of Product-of-Spacings + + + Notes + ----- + MPS definiton from JKB page 233 + ''' + xcdf = np.r_[0., dist.cdf(xsorted, *params), 1.] + D = np.diff(xcdf) + return -np.log(D).mean() + +def getstartparams(dist, data): + '''get starting values for estimation of distribution parameters + + Parameters + ---------- + dist : distribution instance + the distribution instance needs to have either a method fitstart + or an attribute numargs + data : ndarray + data for which preliminary estimator or starting value for + parameter estimation is desired + + Returns + ------- + x0 : ndarray + preliminary estimate or starting value for the parameters of + the distribution given the data, including loc and scale + + ''' + if hasattr(dist, 'fitstart'): + #x0 = getattr(dist, 'fitstart')(data) + x0 = dist.fitstart(data) + else: + if np.isfinite(dist.a): + x0 = np.r_[[1.]*dist.numargs, (data.min()-1), 1.] + else: + x0 = np.r_[[1.]*dist.numargs, (data.mean()-1), 1.] + return x0 + +def fit_mps(dist, data, x0=None): + '''Estimate distribution parameters with Maximum Product-of-Spacings + + Parameters + ---------- + params : array_like, tuple ? + parameters of the distribution funciton + xsorted : array_like + data that is already sorted + dist : instance of a distribution class + only cdf method is used + + Returns + ------- + x : ndarray + estimates for the parameters of the distribution given the data, + including loc and scale + + + ''' + xsorted = np.sort(data) + if x0 is None: + x0 = getstartparams(dist, xsorted) + args = (xsorted, dist) + print(x0) + #print(args) + return optimize.fmin(logmps, x0, args=args) + + + +if __name__ == '__main__': + + #Example: gamma - distribution + #----------------------------- + + print('\n\nExample: gamma Distribution') + print( '---------------------------') + + alpha = 2 + xq = [0.5, 4] + pq = [0.1, 0.9] + print(stats.gamma.ppf(pq, alpha)) + xq = stats.gamma.ppf(pq, alpha) + print(np.diff((stats.gamma.ppf(pq, np.linspace(0.01,4,10)[:,None])*xq[::-1]))) + #optimize.bisect(lambda alpha: np.diff((stats.gamma.ppf(pq, alpha)*xq[::-1]))) + print(optimize.fsolve(lambda alpha: np.diff((stats.gamma.ppf(pq, alpha)*xq[::-1])), 3.)) + + distfn = stats.gamma + mcond = gammamomentcond(distfn, [5.,10], mom2=stats.gamma.stats(alpha, 0.,1.), quantile=None) + print(optimize.fsolve(mcond, [1.,2.])) + mom2 = stats.gamma.stats(alpha, 0.,1.) + print(optimize.fsolve(lambda params:gammamomentcond2(distfn, params, mom2), [1.,2.])) + + grvs = stats.gamma.rvs(alpha, 0.,2., size=1000) + mom2 = np.array([grvs.mean(), grvs.var()]) + alphaestq = optimize.fsolve(lambda params:gammamomentcond2(distfn, params, mom2), [1.,3.]) + print(alphaestq) + print('scale = ', xq/stats.gamma.ppf(pq, alphaestq)) + + + #Example beta - distribution + #--------------------------- + + #Warning: this example had cut-and-paste errors + + print('\n\nExample: beta Distribution') + print( '--------------------------') + + #monkey patching : +## if hasattr(stats.beta, '_fitstart'): +## del stats.beta._fitstart #bug in _fitstart #raises AttributeError: _fitstart + #stats.distributions.beta_gen._fitstart = lambda self, data : np.array([1,1,0,1]) + #_fitstart seems to require a tuple + stats.distributions.beta_gen._fitstart = lambda self, data : (5,5,0,1) + + pq = np.array([0.01, 0.05,0.1,0.4,0.6,0.9,0.95,0.99]) + #rvsb = stats.beta.rvs(0.5,0.15,size=200) + rvsb = stats.beta.rvs(10,15,size=2000) + print('true params', 10, 15, 0, 1) + print(stats.beta.fit(rvsb)) + xqsb = [stats.scoreatpercentile(rvsb, p) for p in pq*100] + mom2s = np.array([rvsb.mean(), rvsb.var()]) + betaparest_gmmquantile = optimize.fmin(lambda params:np.sum(momentcondquant(stats.beta, params, mom2s,(pq,xqsb), shape=None)**2), + [10,10, 0., 1.], maxiter=2000) + print('betaparest_gmmquantile', betaparest_gmmquantile) + #result sensitive to initial condition + + + #Example t - distribution + #------------------------ + + print('\n\nExample: t Distribution') + print( '-----------------------') + + nobs = 1000 + distfn = stats.t + pq = np.array([0.1,0.9]) + paramsdgp = (5, 0, 1) + trvs = distfn.rvs(5, 0, 1, size=nobs) + xqs = [stats.scoreatpercentile(trvs, p) for p in pq*100] + mom2th = distfn.stats(*paramsdgp) + mom2s = np.array([trvs.mean(), trvs.var()]) + tparest_gmm3quantilefsolve = optimize.fsolve(lambda params:momentcondunbound(distfn,params, mom2s,(pq,xqs)), [10,1.,2.]) + print('tparest_gmm3quantilefsolve', tparest_gmm3quantilefsolve) + tparest_gmm3quantile = optimize.fmin(lambda params:np.sum(momentcondunbound(distfn,params, mom2s,(pq,xqs))**2), [10,1.,2.]) + print('tparest_gmm3quantile', tparest_gmm3quantile) + print(distfn.fit(trvs)) + + ## + + ##distfn = stats.t + ##pq = np.array([0.1,0.9]) + ##paramsdgp = (5, 0, 1) + ##trvs = distfn.rvs(5, 0, 1, size=nobs) + ##xqs = [stats.scoreatpercentile(trvs, p) for p in pq*100] + ##mom2th = distfn.stats(*paramsdgp) + ##mom2s = np.array([trvs.mean(), trvs.var()]) + print(optimize.fsolve(lambda params:momentcondunboundls(distfn, params, mom2s,shape=5), [1.,2.])) + print(optimize.fmin(lambda params:np.sum(momentcondunboundls(distfn, params, mom2s,shape=5)**2), [1.,2.])) + print(distfn.fit(trvs)) + #loc, scale, based on quantiles + print(optimize.fsolve(lambda params:momentcondunboundls(distfn, params, mom2s,(pq,xqs),shape=5), [1.,2.])) + + ## + + pq = np.array([0.01, 0.05,0.1,0.4,0.6,0.9,0.95,0.99]) + #paramsdgp = (5, 0, 1) + xqs = [stats.scoreatpercentile(trvs, p) for p in pq*100] + tparest_gmmquantile = optimize.fmin(lambda params:np.sum(momentcondquant(distfn, params, mom2s,(pq,xqs), shape=None)**2), [10, 1.,2.]) + print('tparest_gmmquantile', tparest_gmmquantile) + tparest_gmmquantile2 = fitquantilesgmm(distfn, trvs, start=[10, 1.,2.], pquant=None, frozen=None) + print('tparest_gmmquantile2', tparest_gmmquantile2) + + + ## + + + #use trvs from before + bt = stats.t.ppf(np.linspace(0,1,21),5) + ft,bt = np.histogram(trvs,bins=bt) + print('fitbinned t-distribution') + tparest_mlebinew = fitbinned(stats.t, ft, bt, [10, 0, 1]) + tparest_gmmbinewidentity = fitbinnedgmm(stats.t, ft, bt, [10, 0, 1]) + tparest_gmmbinewoptimal = fitbinnedgmm(stats.t, ft, bt, [10, 0, 1], weightsoptimal=False) + print(paramsdgp) + + #Note: this can be used for chisquare test and then has correct asymptotic + # distribution for a distribution with estimated parameters, find ref again + #TODO combine into test with binning included, check rule for number of bins + + #bt2 = stats.t.ppf(np.linspace(trvs.,1,21),5) + ft2,bt2 = np.histogram(trvs,bins=50) + 'fitbinned t-distribution' + tparest_mlebinel = fitbinned(stats.t, ft2, bt2, [10, 0, 1]) + tparest_gmmbinelidentity = fitbinnedgmm(stats.t, ft2, bt2, [10, 0, 1]) + tparest_gmmbineloptimal = fitbinnedgmm(stats.t, ft2, bt2, [10, 0, 1], weightsoptimal=False) + tparest_mle = stats.t.fit(trvs) + + np.set_printoptions(precision=6) + print('sample size', nobs) + print('true (df, loc, scale) ', paramsdgp) + print('parest_mle ', tparest_mle) + print + print('tparest_mlebinel ', tparest_mlebinel) + print('tparest_gmmbinelidentity ', tparest_gmmbinelidentity) + print('tparest_gmmbineloptimal ', tparest_gmmbineloptimal) + print + print('tparest_mlebinew ', tparest_mlebinew) + print('tparest_gmmbinewidentity ', tparest_gmmbinewidentity) + print('tparest_gmmbinewoptimal ', tparest_gmmbinewoptimal) + print + print('tparest_gmmquantileidentity', tparest_gmmquantile) + print('tparest_gmm3quantilefsolve ', tparest_gmm3quantilefsolve) + print('tparest_gmm3quantile ', tparest_gmm3quantile) + + ''' example results: + standard error for df estimate looks large + note: iI don't impose that df is an integer, (b/c not necessary) + need Monte Carlo to check variance of estimators + + + sample size 1000 + true (df, loc, scale) (5, 0, 1) + parest_mle [ 4.571405 -0.021493 1.028584] + + tparest_mlebinel [ 4.534069 -0.022605 1.02962 ] + tparest_gmmbinelidentity [ 2.653056 0.012807 0.896958] + tparest_gmmbineloptimal [ 2.437261 -0.020491 0.923308] + + tparest_mlebinew [ 2.999124 -0.0199 0.948811] + tparest_gmmbinewidentity [ 2.900939 -0.020159 0.93481 ] + tparest_gmmbinewoptimal [ 2.977764 -0.024925 0.946487] + + tparest_gmmquantileidentity [ 3.940797 -0.046469 1.002001] + tparest_gmm3quantilefsolve [ 10. 1. 2.] + tparest_gmm3quantile [ 6.376101 -0.029322 1.112403] + ''' + + #Example with Maximum Product of Spacings Estimation + #=================================================== + + #Example: Lognormal Distribution + #------------------------------- + + #tough problem for MLE according to JKB + #but not sure for which parameters + + print('\n\nExample: Lognormal Distribution') + print( '-------------------------------') + + sh = np.exp(10) + sh = 0.01 + print(sh) + x = stats.lognorm.rvs(sh,loc=100, scale=10,size=200) + + print(x.min()) + print(stats.lognorm.fit(x, 1.,loc=x.min()-1,scale=1)) + + xsorted = np.sort(x) + + x0 = [1., x.min()-1, 1] + args = (xsorted, stats.lognorm) + print(optimize.fmin(logmps,x0,args=args)) + + + #Example: Lomax, Pareto, Generalized Pareto Distributions + #-------------------------------------------------------- + + #partially a follow-up to the discussion about numpy.random.pareto + #Reference: JKB + #example Maximum Product of Spacings Estimation + + # current results: + # doesn't look very good yet sensitivity to starting values + # Pareto and Generalized Pareto look like a tough estimation problemprint('\n\nExample: Lognormal Distribution' + + print('\n\nExample: Lomax, Pareto, Generalized Pareto Distributions') + print( '--------------------------------------------------------') + + p2rvs = stats.genpareto.rvs(2, size=500) + #Note: is Lomax without +1; and classical Pareto with +1 + p2rvssorted = np.sort(p2rvs) + argsp = (p2rvssorted, stats.pareto) + x0p = [1., p2rvs.min()-5, 1] + print(optimize.fmin(logmps,x0p,args=argsp)) + print(stats.pareto.fit(p2rvs, 0.5, loc=-20, scale=0.5)) + print('gpdparest_ mle', stats.genpareto.fit(p2rvs)) + parsgpd = fit_mps(stats.genpareto, p2rvs) + print('gpdparest_ mps', parsgpd) + argsgpd = (p2rvssorted, stats.genpareto) + options = dict(stepFix=1e-7) + #hess_ndt(fun, pars, argsgdp, options) + #the results for the following look strange, maybe refactoring error + he, h = hess_ndt(logmps, parsgpd, argsgpd, options) + print(np.linalg.eigh(he)[0]) + f = lambda params: logmps(params, *argsgpd) + print(f(parsgpd)) + #add binned + fp2, bp2 = np.histogram(p2rvs, bins=50) + 'fitbinned t-distribution' + gpdparest_mlebinel = fitbinned(stats.genpareto, fp2, bp2, x0p) + gpdparest_gmmbinelidentity = fitbinnedgmm(stats.genpareto, fp2, bp2, x0p) + print('gpdparest_mlebinel', gpdparest_mlebinel) + print('gpdparest_gmmbinelidentity', gpdparest_gmmbinelidentity) + gpdparest_gmmquantile2 = fitquantilesgmm( + stats.genpareto, p2rvs, start=x0p, pquant=None, frozen=None) + print('gpdparest_gmmquantile2', gpdparest_gmmquantile2) + + print(fitquantilesgmm(stats.genpareto, p2rvs, start=x0p, + pquant=np.linspace(0.01,0.99,10), frozen=None)) + fp2, bp2 = np.histogram( + p2rvs, + bins=stats.genpareto(2).ppf(np.linspace(0,0.99,10))) + print('fitbinnedgmm equal weight bins') + print(fitbinnedgmm(stats.genpareto, fp2, bp2, x0p)) diff --git a/statsmodels/sandbox/distributions/examples/__init__.py b/statsmodels/sandbox/distributions/examples/__init__.py new file mode 100644 index 0000000..792d600 --- /dev/null +++ b/statsmodels/sandbox/distributions/examples/__init__.py @@ -0,0 +1 @@ +# diff --git a/statsmodels/sandbox/distributions/examples/ex_extras.py b/statsmodels/sandbox/distributions/examples/ex_extras.py new file mode 100644 index 0000000..9ab22c8 --- /dev/null +++ b/statsmodels/sandbox/distributions/examples/ex_extras.py @@ -0,0 +1,127 @@ +# -*- coding: utf-8 -*- +""" + +Created on Wed Feb 19 12:39:49 2014 + +Author: Josef Perktold +""" + +import numpy as np +from scipy import stats + +from statsmodels.sandbox.distributions.extras import (SkewNorm_gen, skewnorm, + ACSkewT_gen, + NormExpan_gen, pdf_moments, + ExpTransf_gen, LogTransf_gen) +from statsmodels.stats.moment_helpers import mc2mvsk, mnc2mc, mvsk2mnc + + +def example_n(): + + print(skewnorm.pdf(1,0), stats.norm.pdf(1), skewnorm.pdf(1,0) - stats.norm.pdf(1)) + print(skewnorm.pdf(1,1000), stats.chi.pdf(1,1), skewnorm.pdf(1,1000) - stats.chi.pdf(1,1)) + print(skewnorm.pdf(-1,-1000), stats.chi.pdf(1,1), skewnorm.pdf(-1,-1000) - stats.chi.pdf(1,1)) + rvs = skewnorm.rvs(0,size=500) + print('sample mean var: ', rvs.mean(), rvs.var()) + print('theoretical mean var', skewnorm.stats(0)) + rvs = skewnorm.rvs(5,size=500) + print('sample mean var: ', rvs.mean(), rvs.var()) + print('theoretical mean var', skewnorm.stats(5)) + print(skewnorm.cdf(1,0), stats.norm.cdf(1), skewnorm.cdf(1,0) - stats.norm.cdf(1)) + print(skewnorm.cdf(1,1000), stats.chi.cdf(1,1), skewnorm.cdf(1,1000) - stats.chi.cdf(1,1)) + print(skewnorm.sf(0.05,1000), stats.chi.sf(0.05,1), skewnorm.sf(0.05,1000) - stats.chi.sf(0.05,1)) + + +def example_T(): + skewt = ACSkewT_gen() + rvs = skewt.rvs(10,0,size=500) + print('sample mean var: ', rvs.mean(), rvs.var()) + print('theoretical mean var', skewt.stats(10,0)) + print('t mean var', stats.t.stats(10)) + print(skewt.stats(10,1000)) # -> folded t distribution, as alpha -> inf + rvs = np.abs(stats.t.rvs(10,size=1000)) + print(rvs.mean(), rvs.var()) + + + +def examples_normexpand(): + skewnorm = SkewNorm_gen() + rvs = skewnorm.rvs(5,size=100) + normexpan = NormExpan_gen(rvs, mode='sample') + + smvsk = stats.describe(rvs)[2:] + print('sample: mu,sig,sk,kur') + print(smvsk) + + dmvsk = normexpan.stats(moments='mvsk') + print('normexpan: mu,sig,sk,kur') + print(dmvsk) + print('mvsk diff distribution - sample') + print(np.array(dmvsk) - np.array(smvsk)) + print('normexpan attributes mvsk') + print(mc2mvsk(normexpan.cnt)) + print(normexpan.mvsk) + + mnc = mvsk2mnc(dmvsk) + mc = mnc2mc(mnc) + print('central moments') + print(mc) + print('non-central moments') + print(mnc) + + + pdffn = pdf_moments(mc) + print('\npdf approximation from moments') + print('pdf at', mc[0]-1,mc[0]+1) + print(pdffn([mc[0]-1,mc[0]+1])) + print(normexpan.pdf([mc[0]-1,mc[0]+1])) + + +def examples_transf(): + ##lognormal = ExpTransf(a=0.0, xa=-10.0, name = 'Log transformed normal') + ##print(lognormal.cdf(1)) + ##print(stats.lognorm.cdf(1,1)) + ##print(lognormal.stats()) + ##print(stats.lognorm.stats(1)) + ##print(lognormal.rvs(size=10)) + + print('Results for lognormal') + lognormalg = ExpTransf_gen(stats.norm, a=0, name = 'Log transformed normal general') + print(lognormalg.cdf(1)) + print(stats.lognorm.cdf(1,1)) + print(lognormalg.stats()) + print(stats.lognorm.stats(1)) + print(lognormalg.rvs(size=5)) + + ##print('Results for loggamma') + ##loggammag = ExpTransf_gen(stats.gamma) + ##print(loggammag._cdf(1,10)) + ##print(stats.loggamma.cdf(1,10)) + + print('Results for expgamma') + loggammaexpg = LogTransf_gen(stats.gamma) + print(loggammaexpg._cdf(1,10)) + print(stats.loggamma.cdf(1,10)) + print(loggammaexpg._cdf(2,15)) + print(stats.loggamma.cdf(2,15)) + + + # this requires change in scipy.stats.distribution + #print(loggammaexpg.cdf(1,10)) + + print('Results for loglaplace') + loglaplaceg = LogTransf_gen(stats.laplace) + print(loglaplaceg._cdf(2)) + print(stats.loglaplace.cdf(2,1)) + loglaplaceexpg = ExpTransf_gen(stats.laplace) + print(loglaplaceexpg._cdf(2)) + stats.loglaplace.cdf(3,3) + #0.98148148148148151 + loglaplaceexpg._cdf(3,0,1./3) + #0.98148148148148151 + +if __name__ == '__main__': + example_n() + example_T() + examples_normexpand() + examples_transf() diff --git a/statsmodels/sandbox/distributions/examples/ex_fitfr.py b/statsmodels/sandbox/distributions/examples/ex_fitfr.py new file mode 100644 index 0000000..c62ce65 --- /dev/null +++ b/statsmodels/sandbox/distributions/examples/ex_fitfr.py @@ -0,0 +1,29 @@ +'''Example for estimating distribution parameters when some are fixed. + +This uses currently a patched version of the distributions, two methods are +added to the continuous distributions. This has no side effects. +It also adds bounds to vonmises, which changes the behavior of it for some +methods. + +''' + +from __future__ import print_function +import numpy as np +from scipy import stats +# Note the following import attaches methods to scipy.stats.distributions +# and adds bounds to stats.vonmises +# from statsmodels.sandbox.distributions import sppatch + + +np.random.seed(12345) +x = stats.gamma.rvs(2.5, loc=0, scale=1.2, size=200) + +#estimate all parameters +print(stats.gamma.fit(x)) +print(stats.gamma.fit_fr(x, frozen=[np.nan, np.nan, np.nan])) +#estimate shape parameter only +print(stats.gamma.fit_fr(x, frozen=[np.nan, 0., 1.2])) + +np.random.seed(12345) +x = stats.lognorm.rvs(2, loc=0, scale=2, size=200) +print(stats.lognorm.fit_fr(x, frozen=[np.nan, 0., np.nan])) diff --git a/statsmodels/sandbox/distributions/examples/ex_gof.py b/statsmodels/sandbox/distributions/examples/ex_gof.py new file mode 100644 index 0000000..c8f65f5 --- /dev/null +++ b/statsmodels/sandbox/distributions/examples/ex_gof.py @@ -0,0 +1,12 @@ +from __future__ import print_function +from scipy import stats +from statsmodels.stats import gof + +poissrvs = stats.poisson.rvs(0.6, size = 200) + +freq, expfreq, histsupp = gof.gof_binning_discrete(poissrvs, stats.poisson, (0.6,), nsupp=20) +(chi2val, pval) = stats.chisquare(freq, expfreq) +print(chi2val, pval) + +print(gof.gof_chisquare_discrete(stats.poisson, (0.6,), poissrvs, 0.05, + 'Poisson')) diff --git a/statsmodels/sandbox/distributions/examples/ex_mvelliptical.py b/statsmodels/sandbox/distributions/examples/ex_mvelliptical.py new file mode 100644 index 0000000..32c3bc0 --- /dev/null +++ b/statsmodels/sandbox/distributions/examples/ex_mvelliptical.py @@ -0,0 +1,164 @@ +# -*- coding: utf-8 -*- +"""examples for multivariate normal and t distributions + + +Created on Fri Jun 03 16:00:26 2011 + +@author: josef + + +for comparison I used R mvtnorm version 0.9-96 + +""" +from __future__ import print_function +import numpy as np +from numpy.testing import assert_array_almost_equal +import matplotlib.pyplot as plt + +import statsmodels.api as sm +import statsmodels.distributions.mixture_rvs as mix +import statsmodels.sandbox.distributions.mv_normal as mvd + + +cov3 = np.array([[ 1. , 0.5 , 0.75], + [ 0.5 , 1.5 , 0.6 ], + [ 0.75, 0.6 , 2. ]]) + +mu = np.array([-1, 0.0, 2.0]) + +#************** multivariate normal distribution *************** + +mvn3 = mvd.MVNormal(mu, cov3) + +#compare with random sample +x = mvn3.rvs(size=1000000) + +xli = [[2., 1., 1.5], + [0., 2., 1.5], + [1.5, 1., 2.5], + [0., 1., 1.5]] + +xliarr = np.asarray(xli).T[None,:, :] + +#from R session +#pmvnorm(lower=-Inf,upper=(x[0,.]-mu)/sqrt(diag(cov3)),mean=rep(0,3),corr3) +r_cdf = [0.3222292, 0.3414643, 0.5450594, 0.3116296] +r_cdf_errors = [1.715116e-05, 1.590284e-05, 5.356471e-05, 3.567548e-05] +n_cdf = [mvn3.cdf(a) for a in xli] +assert_array_almost_equal(r_cdf, n_cdf, decimal=4) + +print(n_cdf) +print('') +print((x>> np.random.seed(464239857) + >>> rvstsq = squaretg.rvs(10,size=100000) + >>> squaretg.moment(4,10) + 2734.3750000000009 + >>> (rvstsq**4).mean() + 2739.672765170933 + >>> squaretg.moment(3,10) + 78.124999999997044 + >>> (rvstsq**3).mean() + 84.13950048850549 + >>> squaretg.stats(10, moments='mvsk') + (array(1.2500000000000022), array(4.6874999999630909), array(5.7735026919777912), array(106.00000000170148)) + >>> stats.describe(rvstsq) + (100000, (3.2953470738423724e-009, 92.649615690914473), 1.2534924690963247, 4.7741427958594098, 6.1562177957041895, 100.99331166052181) + ''' + # checking the distribution + # fraction of observations in each decile + dec = squaretg.ppf(np.linspace(0.,1,11),10) + freq,edges = np.histogram(rvstsq, bins=dec) + print(freq/float(len(rvstsq))) + + import matplotlib.pyplot as plt + freq,edges,_ = plt.hist(rvstsq, bins=50, range=(0,4),normed=True) + edges += (edges[1]-edges[0])/2.0 + plt.plot(edges[:-1], squaretg.pdf(edges[:-1], 10), 'r') + #plt.show() + #plt.close() + + ''' + >>> plt.plot(edges[:-1], squaretg.pdf(edges[:-1], 10), 'r') + [] + >>> plt.fill(edges[4:8], squaretg.pdf(edges[4:8], 10), 'r') + [] + >>> plt.show() + >>> plt.fill_between(edges[4:8], squaretg.pdf(edges[4:8], 10), y2=0, 'r') + SyntaxError: non-keyword arg after keyword arg (, line 1) + >>> plt.fill_between(edges[4:8], squaretg.pdf(edges[4:8], 10), 0, 'r') + Traceback (most recent call last): + AttributeError: 'module' object has no attribute 'fill_between' + >>> fig = figure() + Traceback (most recent call last): + NameError: name 'figure' is not defined + >>> ax1 = fig.add_subplot(311) + Traceback (most recent call last): + NameError: name 'fig' is not defined + >>> fig = plt.figure() + >>> ax1 = fig.add_subplot(111) + >>> ax1.fill_between(edges[4:8], squaretg.pdf(edges[4:8], 10), 0, 'r') + Traceback (most recent call last): + AttributeError: 'AxesSubplot' object has no attribute 'fill_between' + >>> ax1.fill(edges[4:8], squaretg.pdf(edges[4:8], 10), 0, 'r') + Traceback (most recent call last): + ''' + + import pytest + pytest.main([__file__, '-vvs', '-x', '--pdb']) diff --git a/statsmodels/sandbox/distributions/examples/matchdist.py b/statsmodels/sandbox/distributions/examples/matchdist.py new file mode 100644 index 0000000..e77f566 --- /dev/null +++ b/statsmodels/sandbox/distributions/examples/matchdist.py @@ -0,0 +1,261 @@ +'''given a 1D sample of observation, find a matching distribution + +* estimate maximum likelihood paramater for each distribution +* rank estimated distribution by Kolmogorov-Smirnov and Anderson-Darling + test statistics + +Author: Josef Pktd +License: Simplified BSD +original December 2008 + +TODO: + +* refactor to result class +* split estimation by support, add option and choose automatically +* + +''' +from __future__ import print_function +from scipy import stats +import numpy as np +import matplotlib.pyplot as plt + +#stats.distributions.beta_gen._fitstart = lambda self, data : (5,5,0,1) + +def plothist(x,distfn, args, loc, scale, right=1): + + plt.figure() + # the histogram of the data + n, bins, patches = plt.hist(x, 25, normed=1, facecolor='green', alpha=0.75) + maxheight = max([p.get_height() for p in patches]) + print(maxheight) + axlim = list(plt.axis()) + #print(axlim) + axlim[-1] = maxheight*1.05 + #plt.axis(tuple(axlim)) +## print(bins) +## print('args in plothist', args) + # add a 'best fit' line + #yt = stats.norm.pdf( bins, loc=loc, scale=scale) + yt = distfn.pdf( bins, loc=loc, scale=scale, *args) + yt[yt>maxheight]=maxheight + lt = plt.plot(bins, yt, 'r--', linewidth=1) + ys = stats.t.pdf( bins, 10,scale=10,)*right + ls = plt.plot(bins, ys, 'b-', linewidth=1) + + plt.xlabel('Smarts') + plt.ylabel('Probability') + plt.title(r'$\mathrm{Testing: %s :}\ \mu=%f,\ \sigma=%f$' % (distfn.name,loc,scale)) + + #plt.axis([bins[0], bins[-1], 0, 0.134+0.05]) + + plt.grid(True) + plt.draw() + #plt.show() + #plt.close() + + + + + +#targetdist = ['norm','t','truncnorm','johnsonsu','johnsonsb', +targetdist = ['norm','alpha', 'anglit', 'arcsine', + 'beta', 'betaprime', 'bradford', 'burr', 'fisk', 'cauchy', + 'chi', 'chi2', 'cosine', 'dgamma', 'dweibull', 'erlang', + 'expon', 'exponweib', 'exponpow', 'fatiguelife', 'foldcauchy', + 'f', 'foldnorm', 'frechet_r', 'weibull_min', 'frechet_l', + 'weibull_max', 'genlogistic', 'genpareto', 'genexpon', 'genextreme', + 'gamma', 'gengamma', 'genhalflogistic', 'gompertz', 'gumbel_r', + 'gumbel_l', 'halfcauchy', 'halflogistic', 'halfnorm', 'hypsecant', + 'gausshyper', 'invgamma', 'invnorm', 'invweibull', 'johnsonsb', + 'johnsonsu', 'laplace', 'levy', 'levy_l', + 'logistic', 'loggamma', 'loglaplace', 'lognorm', 'gilbrat', + 'maxwell', 'mielke', 'nakagami', 'ncx2', 'ncf', 't', + 'nct', 'pareto', 'lomax', 'powerlaw', 'powerlognorm', 'powernorm', + 'rdist', 'rayleigh', 'reciprocal', 'rice', 'recipinvgauss', + 'semicircular', 'triang', 'truncexpon', 'truncnorm', + 'tukeylambda', 'uniform', 'vonmises', 'wald', 'wrapcauchy', + + 'binom', 'bernoulli', 'nbinom', 'geom', 'hypergeom', 'logser', + 'poisson', 'planck', 'boltzmann', 'randint', 'zipf', 'dlaplace'] + +left = [] +right = [] +finite = [] +unbound = [] +other = [] +contdist = [] +discrete = [] + +categ = {('open','open'):'unbound', ('0','open'):'right',('open','0',):'left', + ('finite','finite'):'finite',('oth','oth'):'other'} +categ = {('open','open'):unbound, ('0','open'):right,('open','0',):left, + ('finite','finite'):finite,('oth','oth'):other} + +categ2 = { + ('open', '0') : ['frechet_l', 'weibull_max', 'levy_l'], + ('finite', 'finite') : ['anglit', 'cosine', 'rdist', 'semicircular'], + ('0', 'open') : ['alpha', 'burr', 'fisk', 'chi', 'chi2', 'erlang', + 'expon', 'exponweib', 'exponpow', 'fatiguelife', 'foldcauchy', 'f', + 'foldnorm', 'frechet_r', 'weibull_min', 'genpareto', 'genexpon', + 'gamma', 'gengamma', 'genhalflogistic', 'gompertz', 'halfcauchy', + 'halflogistic', 'halfnorm', 'invgamma', 'invnorm', 'invweibull', + 'levy', 'loglaplace', 'lognorm', 'gilbrat', 'maxwell', 'mielke', + 'nakagami', 'ncx2', 'ncf', 'lomax', 'powerlognorm', 'rayleigh', + 'rice', 'recipinvgauss', 'truncexpon', 'wald'], + ('open', 'open') : ['cauchy', 'dgamma', 'dweibull', 'genlogistic', 'genextreme', + 'gumbel_r', 'gumbel_l', 'hypsecant', 'johnsonsu', 'laplace', + 'logistic', 'loggamma', 't', 'nct', 'powernorm', 'reciprocal', + 'truncnorm', 'tukeylambda', 'vonmises'], + ('0', 'finite') : ['arcsine', 'beta', 'betaprime', 'bradford', 'gausshyper', + 'johnsonsb', 'powerlaw', 'triang', 'uniform', 'wrapcauchy'], + ('finite', 'open') : ['pareto'] + } + +#Note: weibull_max == frechet_l + +right_incorrect = ['genextreme'] + +right_all = categ2[('0', 'open')] + categ2[('0', 'finite')] + categ2[('finite', 'open')]\ + + right_incorrect + +for distname in targetdist: + distfn = getattr(stats,distname) + if hasattr(distfn,'_pdf'): + if np.isinf(distfn.a): + low = 'open' + elif distfn.a == 0: + low = '0' + else: + low = 'finite' + if np.isinf(distfn.b): + high = 'open' + elif distfn.b == 0: + high = '0' + else: + high = 'finite' + contdist.append(distname) + categ.setdefault((low,high),[]).append(distname) + +not_good = ['genextreme', 'reciprocal', 'vonmises'] +# 'genextreme' is right (or left?), 'reciprocal' requires 00] + rightfactor = 1 + rvs_right = rvs_pos + print('='*50) + print('samplesize = ', n) + for distname in targetdist: + distfn = getattr(stats,distname) + if distname in right_all: + rvs = rvs_right + rind = rightfactor + + else: + rvs = rvs_orig + rind = 1 + print('-'*30) + print('target = %s' % distname) + sm = rvs.mean() + sstd = np.sqrt(rvs.var()) + ssupp = (rvs.min(), rvs.max()) + if distname in ['truncnorm','betaprime','reciprocal']: + + par0 = (sm-2*sstd,sm+2*sstd) + par_est = tuple(distfn.fit(rvs,loc=sm,scale=sstd,*par0)) + elif distname == 'norm': + par_est = tuple(distfn.fit(rvs,loc=sm,scale=sstd)) + elif distname == 'genextreme': + par_est = tuple(distfn.fit(rvs,-5,loc=sm,scale=sstd)) + elif distname == 'wrapcauchy': + par_est = tuple(distfn.fit(rvs,0.5,loc=0,scale=sstd)) + elif distname == 'f':\ + par_est = tuple(distfn.fit(rvs,10,15,loc=0,scale=1)) + + elif distname in right: + sm = rvs.mean() + sstd = np.sqrt(rvs.var()) + par_est = tuple(distfn.fit(rvs,loc=0,scale=1)) + else: + sm = rvs.mean() + sstd = np.sqrt(rvs.var()) + par_est = tuple(distfn.fit(rvs,loc=sm,scale=sstd)) + + + print('fit', par_est) + arg_est = par_est[:-2] + loc_est = par_est[-2] + scale_est = par_est[-1] + rvs_normed = (rvs-loc_est)/scale_est + ks_stat, ks_pval = stats.kstest(rvs_normed,distname, arg_est) + print('kstest', ks_stat, ks_pval) + quant = 0.1 + crit = distfn.ppf(1-quant*float(rind), loc=loc_est, scale=scale_est,*par_est) + tail_prob = stats.t.sf(crit,dgp_arg,scale=dgp_scale) + print('crit, prob', quant, crit, tail_prob) + #if distname == 'norm': + #plothist(rvs,loc_est,scale_est) + #args = tuple() + results.append([distname,ks_stat, ks_pval,arg_est,loc_est,scale_est,crit,tail_prob ]) + #plothist(rvs,distfn,arg_est,loc_est,scale_est) + + #plothist(rvs,distfn,arg_est,loc_est,scale_est) + #plt.show() + #plt.close() + #TODO: collect results and compare tail quantiles + + + from operator import itemgetter + + res_sort = sorted(results, key = itemgetter(2)) + + res_sort.reverse() #kstest statistic: smaller is better, pval larger is better + + print('number of distributions', len(res_sort)) + imagedir = 'matchresults' + import os + if not os.path.exists(imagedir): + os.makedirs(imagedir) + + for ii,di in enumerate(res_sort): + distname,ks_stat, ks_pval,arg_est,loc_est,scale_est,crit,tail_prob = di[:] + distfn = getattr(stats,distname) + if distname in right_all: + rvs = rvs_right + rind = rightfactor + ri = 'r' + else: + rvs = rvs_orig + ri = '' + rind = 1 + print('%s ks-stat = %f, ks-pval = %f tail_prob = %f)' % \ + (distname, ks_stat, ks_pval, tail_prob)) + ## print('arg_est = %s, loc_est = %f scale_est = %f)' % \ + ## (repr(arg_est),loc_est,scale_est)) + plothist(rvs,distfn,arg_est,loc_est,scale_est,right = rind) + plt.savefig(os.path.join(imagedir,'%s%s%02d_%s.png'% (prefix, ri,ii, distname))) + ##plt.show() + ##plt.close() diff --git a/statsmodels/sandbox/distributions/extras.py b/statsmodels/sandbox/distributions/extras.py new file mode 100644 index 0000000..ec702cc --- /dev/null +++ b/statsmodels/sandbox/distributions/extras.py @@ -0,0 +1,1137 @@ +'''Various extensions to distributions + +* skew normal and skew t distribution by Azzalini, A. & Capitanio, A. +* Gram-Charlier expansion distribution (using 4 moments), +* distributions based on non-linear transformation + - Transf_gen + - ExpTransf_gen, LogTransf_gen + - TransfTwo_gen + (defines as examples: square, negative square and abs transformations) + - this versions are without __new__ +* mnvormcdf, mvstdnormcdf : cdf, rectangular integral for multivariate normal + distribution + +TODO: +* Where is Transf_gen for general monotonic transformation ? found and added it +* write some docstrings, some parts I don't remember +* add Box-Cox transformation, parameterized ? + + +this is only partially cleaned, still includes test examples as functions + +main changes +* add transf_gen (2010-05-09) +* added separate example and tests (2010-05-09) +* collect transformation function into classes + +Example +------- + +>>> logtg = Transf_gen(stats.t, np.exp, np.log, + numargs = 1, a=0, name = 'lnnorm', + longname = 'Exp transformed normal', + extradoc = '\ndistribution of y = exp(x), with x standard normal' + 'precision for moment andstats is not very high, 2-3 decimals') +>>> logtg.cdf(5, 6) +0.92067704211191848 +>>> stats.t.cdf(np.log(5), 6) +0.92067704211191848 + +>>> logtg.pdf(5, 6) +0.021798547904239293 +>>> stats.t.pdf(np.log(5), 6) +0.10899273954837908 +>>> stats.t.pdf(np.log(5), 6)/5. #derivative +0.021798547909675815 + + +Author: josef-pktd +License: BSD + +''' +from __future__ import print_function + +import numpy as np +from numpy import poly1d,sqrt, exp + +import scipy +from scipy import stats, special +from scipy.stats import distributions + +from statsmodels.compat.python import range, iteritems +from statsmodels.stats.moment_helpers import mvsk2mc, mc2mvsk + + +#note copied from distr_skewnorm_0.py + + +class SkewNorm_gen(distributions.rv_continuous): + '''univariate Skew-Normal distribution of Azzalini + + class follows scipy.stats.distributions pattern + but with __init__ + + + ''' + def __init__(self): + #super(SkewNorm_gen,self).__init__( + distributions.rv_continuous.__init__(self, + name = 'Skew Normal distribution', shapes = 'alpha', + extradoc = ''' ''' ) + + def _argcheck(self, alpha): + return 1 #(alpha >= 0) + + def _rvs(self, alpha): + # see http://azzalini.stat.unipd.it/SN/faq.html + delta = alpha/np.sqrt(1+alpha**2) + u0 = stats.norm.rvs(size=self._size) + u1 = delta*u0 + np.sqrt(1-delta**2)*stats.norm.rvs(size=self._size) + return np.where(u0>0, u1, -u1) + + def _munp(self, n, alpha): + # use pdf integration with _mom0_sc if only _pdf is defined. + # default stats calculation uses ppf, which is much slower + return self._mom0_sc(n, alpha) + + def _pdf(self,x,alpha): + # 2*normpdf(x)*normcdf(alpha*x) + return 2.0/np.sqrt(2*np.pi)*np.exp(-x**2/2.0) * special.ndtr(alpha*x) + + def _stats_skip(self,x,alpha,moments='mvsk'): + #skip for now to force moment integration as check + pass + +skewnorm = SkewNorm_gen() + + +# generated the same way as distributions in stats.distributions +class SkewNorm2_gen(distributions.rv_continuous): + '''univariate Skew-Normal distribution of Azzalini + + class follows scipy.stats.distributions pattern + + ''' + def _argcheck(self, alpha): + return 1 #where(alpha>=0, 1, 0) + + def _pdf(self,x,alpha): + # 2*normpdf(x)*normcdf(alpha*x + return 2.0/np.sqrt(2*np.pi)*np.exp(-x**2/2.0) * special.ndtr(alpha*x) + +skewnorm2 = SkewNorm2_gen(name = 'Skew Normal distribution', shapes = 'alpha', + extradoc = ''' -inf < alpha < inf''') + + + +class ACSkewT_gen(distributions.rv_continuous): + '''univariate Skew-T distribution of Azzalini + + class follows scipy.stats.distributions pattern + but with __init__ + ''' + def __init__(self): + #super(SkewT_gen,self).__init__( + distributions.rv_continuous.__init__(self, + name = 'Skew T distribution', shapes = 'df, alpha', + extradoc = ''' +Skewed T distribution by Azzalini, A. & Capitanio, A. (2003)_ + +the pdf is given by: + pdf(x) = 2.0 * t.pdf(x, df) * t.cdf(df+1, alpha*x*np.sqrt((1+df)/(x**2+df))) + +with alpha >=0 + +Note: different from skewed t distribution by Hansen 1999 +.._ +Azzalini, A. & Capitanio, A. (2003), Distributions generated by perturbation of +symmetry with emphasis on a multivariate skew-t distribution, +appears in J.Roy.Statist.Soc, series B, vol.65, pp.367-389 + +''' ) + + def _argcheck(self, df, alpha): + return (alpha == alpha)*(df>0) + +## def _arg_check(self, alpha): +## return np.where(alpha>=0, 0, 1) +## def _argcheck(self, alpha): +## return np.where(alpha>=0, 1, 0) + + def _rvs(self, df, alpha): + # see http://azzalini.stat.unipd.it/SN/faq.html + #delta = alpha/np.sqrt(1+alpha**2) + V = stats.chi2.rvs(df, size=self._size) + z = skewnorm.rvs(alpha, size=self._size) + return z/np.sqrt(V/df) + + def _munp(self, n, df, alpha): + # use pdf integration with _mom0_sc if only _pdf is defined. + # default stats calculation uses ppf + return self._mom0_sc(n, df, alpha) + + def _pdf(self, x, df, alpha): + # 2*normpdf(x)*normcdf(alpha*x) + return 2.0*distributions.t._pdf(x, df) * special.stdtr(df+1, alpha*x*np.sqrt((1+df)/(x**2+df))) + + +## +##def mvsk2cm(*args): +## mu,sig,sk,kur = args +## # Get central moments +## cnt = [None]*4 +## cnt[0] = mu +## cnt[1] = sig #*sig +## cnt[2] = sk * sig**1.5 +## cnt[3] = (kur+3.0) * sig**2.0 +## return cnt +## +## +##def mvsk2m(args): +## mc, mc2, skew, kurt = args#= self._stats(*args,**mdict) +## mnc = mc +## mnc2 = mc2 + mc*mc +## mc3 = skew*(mc2**1.5) # 3rd central moment +## mnc3 = mc3+3*mc*mc2+mc**3 # 3rd non-central moment +## mc4 = (kurt+3.0)*(mc2**2.0) # 4th central moment +## mnc4 = mc4+4*mc*mc3+6*mc*mc*mc2+mc**4 +## return (mc, mc2, mc3, mc4), (mnc, mnc2, mnc3, mnc4) +## +##def mc2mvsk(args): +## mc, mc2, mc3, mc4 = args +## skew = mc3 / mc2**1.5 +## kurt = mc4 / mc2**2.0 - 3.0 +## return (mc, mc2, skew, kurt) +## +##def m2mc(args): +## mnc, mnc2, mnc3, mnc4 = args +## mc = mnc +## mc2 = mnc2 - mnc*mnc +## #mc3 = skew*(mc2**1.5) # 3rd central moment +## mc3 = mnc3 - (3*mc*mc2+mc**3) # 3rd central moment +## #mc4 = (kurt+3.0)*(mc2**2.0) # 4th central moment +## mc4 = mnc4 - (4*mc*mc3+6*mc*mc*mc2+mc**4) +## return (mc, mc2, mc3, mc4) + + +def _hermnorm(N): + # return the negatively normalized hermite polynomials up to order N-1 + # (inclusive) + # using the recursive relationship + # p_n+1 = p_n(x)' - x*p_n(x) + # and p_0(x) = 1 + plist = [None]*N + plist[0] = poly1d(1) + for n in range(1,N): + plist[n] = plist[n-1].deriv() - poly1d([1,0])*plist[n-1] + return plist + +def pdf_moments_st(cnt): + """Return the Gaussian expanded pdf function given the list of central + moments (first one is mean). + + version of scipy.stats, any changes ? + the scipy.stats version has a bug and returns normal distribution + + """ + + N = len(cnt) + if N < 2: + raise ValueError("At least two moments must be given to " + "approximate the pdf.") + + totp = poly1d(1) + sig = sqrt(cnt[1]) + mu = cnt[0] + if N > 2: + Dvals = _hermnorm(N+1) + for k in range(3,N+1): + # Find Ck + Ck = 0.0 + for n in range((k-3)/2): + m = k-2*n + if m % 2: # m is odd + momdiff = cnt[m-1] + else: + momdiff = cnt[m-1] - sig*sig*scipy.factorial2(m-1) + Ck += Dvals[k][m] / sig**m * momdiff + # Add to totp + raise SystemError + print(Dvals) + print(Ck) + totp = totp + Ck*Dvals[k] + + def thisfunc(x): + xn = (x-mu)/sig + return totp(xn)*exp(-xn*xn/2.0)/sqrt(2*np.pi)/sig + return thisfunc, totp + +def pdf_mvsk(mvsk): + """Return the Gaussian expanded pdf function given the list of 1st, 2nd + moment and skew and Fisher (excess) kurtosis. + + + + Parameters + ---------- + mvsk : list of mu, mc2, skew, kurt + distribution is matched to these four moments + + Returns + ------- + pdffunc : function + function that evaluates the pdf(x), where x is the non-standardized + random variable. + + + Notes + ----- + + Changed so it works only if four arguments are given. Uses explicit + formula, not loop. + + This implements a Gram-Charlier expansion of the normal distribution + where the first 2 moments coincide with those of the normal distribution + but skew and kurtosis can deviate from it. + + In the Gram-Charlier distribution it is possible that the density + becomes negative. This is the case when the deviation from the + normal distribution is too large. + + + + References + ---------- + http://en.wikipedia.org/wiki/Edgeworth_series + Johnson N.L., S. Kotz, N. Balakrishnan: Continuous Univariate + Distributions, Volume 1, 2nd ed., p.30 + """ + N = len(mvsk) + if N < 4: + raise ValueError("Four moments must be given to " + "approximate the pdf.") + + mu, mc2, skew, kurt = mvsk + + totp = poly1d(1) + sig = sqrt(mc2) + if N > 2: + Dvals = _hermnorm(N+1) + C3 = skew/6.0 + C4 = kurt/24.0 + # Note: Hermite polynomial for order 3 in _hermnorm is negative + # instead of positive + totp = totp - C3*Dvals[3] + C4*Dvals[4] + + def pdffunc(x): + xn = (x-mu)/sig + return totp(xn)*np.exp(-xn*xn/2.0)/np.sqrt(2*np.pi)/sig + return pdffunc + +def pdf_moments(cnt): + """Return the Gaussian expanded pdf function given the list of central + moments (first one is mean). + + Changed so it works only if four arguments are given. Uses explicit + formula, not loop. + + Notes + ----- + + This implements a Gram-Charlier expansion of the normal distribution + where the first 2 moments coincide with those of the normal distribution + but skew and kurtosis can deviate from it. + + In the Gram-Charlier distribution it is possible that the density + becomes negative. This is the case when the deviation from the + normal distribution is too large. + + + + References + ---------- + http://en.wikipedia.org/wiki/Edgeworth_series + Johnson N.L., S. Kotz, N. Balakrishnan: Continuous Univariate + Distributions, Volume 1, 2nd ed., p.30 + """ + N = len(cnt) + if N < 2: + raise ValueError("At least two moments must be given to " + "approximate the pdf.") + + + + mc, mc2, mc3, mc4 = cnt + skew = mc3 / mc2**1.5 + kurt = mc4 / mc2**2.0 - 3.0 # Fisher kurtosis, excess kurtosis + + totp = poly1d(1) + sig = sqrt(cnt[1]) + mu = cnt[0] + if N > 2: + Dvals = _hermnorm(N+1) +## for k in range(3,N+1): +## # Find Ck +## Ck = 0.0 +## for n in range((k-3)/2): +## m = k-2*n +## if m % 2: # m is odd +## momdiff = cnt[m-1] +## else: +## momdiff = cnt[m-1] - sig*sig*scipy.factorial2(m-1) +## Ck += Dvals[k][m] / sig**m * momdiff +## # Add to totp +## raise +## print Dvals +## print Ck +## totp = totp + Ck*Dvals[k] + C3 = skew/6.0 + C4 = kurt/24.0 + totp = totp - C3*Dvals[3] + C4*Dvals[4] + + def thisfunc(x): + xn = (x-mu)/sig + return totp(xn)*np.exp(-xn*xn/2.0)/np.sqrt(2*np.pi)/sig + return thisfunc + +class NormExpan_gen(distributions.rv_continuous): + '''Gram-Charlier Expansion of Normal distribution + + class follows scipy.stats.distributions pattern + but with __init__ + + ''' + def __init__(self,args, **kwds): + #todo: replace with super call + distributions.rv_continuous.__init__(self, + name = 'Normal Expansion distribution', shapes = ' ', + extradoc = ''' + The distribution is defined as the Gram-Charlier expansion of + the normal distribution using the first four moments. The pdf + is given by + + pdf(x) = (1+ skew/6.0 * H(xc,3) + kurt/24.0 * H(xc,4))*normpdf(xc) + + where xc = (x-mu)/sig is the standardized value of the random variable + and H(xc,3) and H(xc,4) are Hermite polynomials + + Note: This distribution has to be parameterized during + initialization and instantiation, and does not have a shape + parameter after instantiation (similar to frozen distribution + except for location and scale.) Location and scale can be used + as with other distributions, however note, that they are relative + to the initialized distribution. + ''' ) + #print args, kwds + mode = kwds.get('mode', 'sample') + + if mode == 'sample': + mu,sig,sk,kur = stats.describe(args)[2:] + self.mvsk = (mu,sig,sk,kur) + cnt = mvsk2mc((mu,sig,sk,kur)) + elif mode == 'mvsk': + cnt = mvsk2mc(args) + self.mvsk = args + elif mode == 'centmom': + cnt = args + self.mvsk = mc2mvsk(cnt) + else: + raise ValueError("mode must be 'mvsk' or centmom") + + self.cnt = cnt + #self.mvsk = (mu,sig,sk,kur) + #self._pdf = pdf_moments(cnt) + self._pdf = pdf_mvsk(self.mvsk) + + def _munp(self,n): + # use pdf integration with _mom0_sc if only _pdf is defined. + # default stats calculation uses ppf + return self._mom0_sc(n) + + def _stats_skip(self): + # skip for now to force numerical integration of pdf for testing + return self.mvsk + + +## copied from nonlinear_transform_gen.py + +''' A class for the distribution of a non-linear monotonic transformation of a continuous random variable + +simplest usage: +example: create log-gamma distribution, i.e. y = log(x), + where x is gamma distributed (also available in scipy.stats) + loggammaexpg = Transf_gen(stats.gamma, np.log, np.exp) + +example: what is the distribution of the discount factor y=1/(1+x) + where interest rate x is normally distributed with N(mux,stdx**2)')? + (just to come up with a story that implies a nice transformation) + invnormalg = Transf_gen(stats.norm, inversew, inversew_inv, decr=True, a=-np.inf) + +This class does not work well for distributions with difficult shapes, + e.g. 1/x where x is standard normal, because of the singularity and jump at zero. + +Note: I'm working from my version of scipy.stats.distribution. + But this script runs under scipy 0.6.0 (checked with numpy: 1.2.0rc2 and python 2.4) + +This is not yet thoroughly tested, polished or optimized + +TODO: + * numargs handling is not yet working properly, numargs needs to be specified (default = 0 or 1) + * feeding args and kwargs to underlying distribution is untested and incomplete + * distinguish args and kwargs for the transformed and the underlying distribution + - currently all args and no kwargs are transmitted to underlying distribution + - loc and scale only work for transformed, but not for underlying distribution + - possible to separate args for transformation and underlying distribution parameters + + * add _rvs as method, will be faster in many cases + + +Created on Tuesday, October 28, 2008, 12:40:37 PM +Author: josef-pktd +License: BSD + +''' + + +def get_u_argskwargs(**kwargs): + #Todo: What's this? wrong spacing, used in Transf_gen TransfTwo_gen + u_kwargs = dict((k.replace('u_','',1),v) for k,v in iteritems(kwargs) + if k.startswith('u_')) + u_args = u_kwargs.pop('u_args',None) + return u_args, u_kwargs + +class Transf_gen(distributions.rv_continuous): + '''a class for non-linear monotonic transformation of a continuous random variable + + ''' + def __init__(self, kls, func, funcinv, *args, **kwargs): + #print args + #print kwargs + + self.func = func + self.funcinv = funcinv + #explicit for self.__dict__.update(kwargs) + #need to set numargs because inspection does not work + self.numargs = kwargs.pop('numargs', 0) + #print self.numargs + name = kwargs.pop('name','transfdist') + longname = kwargs.pop('longname','Non-linear transformed distribution') + extradoc = kwargs.pop('extradoc',None) + a = kwargs.pop('a', -np.inf) + b = kwargs.pop('b', np.inf) + self.decr = kwargs.pop('decr', False) + #defines whether it is a decreasing (True) + # or increasing (False) monotonic transformation + + + self.u_args, self.u_kwargs = get_u_argskwargs(**kwargs) + self.kls = kls #(self.u_args, self.u_kwargs) + # possible to freeze the underlying distribution + + super(Transf_gen,self).__init__(a=a, b=b, name = name, + longname = longname, extradoc = extradoc) + + def _rvs(self, *args, **kwargs): + self.kls._size = self._size + return self.funcinv(self.kls._rvs(*args)) + + + def _cdf(self,x,*args, **kwargs): + #print args + if not self.decr: + return self.kls._cdf(self.funcinv(x),*args, **kwargs) + #note scipy _cdf only take *args not *kwargs + else: + return 1.0 - self.kls._cdf(self.funcinv(x),*args, **kwargs) + def _ppf(self, q, *args, **kwargs): + if not self.decr: + return self.func(self.kls._ppf(q,*args, **kwargs)) + else: + return self.func(self.kls._ppf(1-q,*args, **kwargs)) + + +def inverse(x): + return np.divide(1.0,x) + +mux, stdx = 0.05, 0.1 +mux, stdx = 9.0, 1.0 +def inversew(x): + return 1.0/(1+mux+x*stdx) +def inversew_inv(x): + return (1.0/x - 1.0 - mux)/stdx #.np.divide(1.0,x)-10 + +def identit(x): + return x + +invdnormalg = Transf_gen(stats.norm, inversew, inversew_inv, decr=True, #a=-np.inf, + numargs = 0, name = 'discf', longname = 'normal-based discount factor', + extradoc = '\ndistribution of discount factor y=1/(1+x)) with x N(0.05,0.1**2)') + +lognormalg = Transf_gen(stats.norm, np.exp, np.log, + numargs = 2, a=0, name = 'lnnorm', + longname = 'Exp transformed normal', + extradoc = '\ndistribution of y = exp(x), with x standard normal' + 'precision for moment andstats is not very high, 2-3 decimals') + + +loggammaexpg = Transf_gen(stats.gamma, np.log, np.exp, numargs=1) + +## copied form nonlinear_transform_short.py + +'''univariate distribution of a non-linear monotonic transformation of a +random variable + +''' + +class ExpTransf_gen(distributions.rv_continuous): + '''Distribution based on log/exp transformation + + the constructor can be called with a distribution class + and generates the distribution of the transformed random variable + + ''' + def __init__(self, kls, *args, **kwargs): + #print args + #print kwargs + #explicit for self.__dict__.update(kwargs) + if 'numargs' in kwargs: + self.numargs = kwargs['numargs'] + else: + self.numargs = 1 + if 'name' in kwargs: + name = kwargs['name'] + else: + name = 'Log transformed distribution' + if 'a' in kwargs: + a = kwargs['a'] + else: + a = 0 + super(ExpTransf_gen,self).__init__(a=0, name = name) + self.kls = kls + def _cdf(self,x,*args): + pass + #print args + return self.kls.cdf(np.log(x),*args) + def _ppf(self, q, *args): + return np.exp(self.kls.ppf(q,*args)) + +class LogTransf_gen(distributions.rv_continuous): + '''Distribution based on log/exp transformation + + the constructor can be called with a distribution class + and generates the distribution of the transformed random variable + + ''' + def __init__(self, kls, *args, **kwargs): + #explicit for self.__dict__.update(kwargs) + if 'numargs' in kwargs: + self.numargs = kwargs['numargs'] + else: + self.numargs = 1 + if 'name' in kwargs: + name = kwargs['name'] + else: + name = 'Log transformed distribution' + if 'a' in kwargs: + a = kwargs['a'] + else: + a = 0 + + super(LogTransf_gen,self).__init__(a=a, name = name) + self.kls = kls + + def _cdf(self,x, *args): + #print args + return self.kls._cdf(np.exp(x),*args) + def _ppf(self, q, *args): + return np.log(self.kls._ppf(q,*args)) + + +## copied from transformtwo.py + +''' +Created on Apr 28, 2009 + +@author: Josef Perktold +''' + +''' A class for the distribution of a non-linear u-shaped or hump shaped transformation of a +continuous random variable + +This is a companion to the distributions of non-linear monotonic transformation to the case +when the inverse mapping is a 2-valued correspondence, for example for absolute value or square + +simplest usage: +example: create squared distribution, i.e. y = x**2, + where x is normal or t distributed + + +This class does not work well for distributions with difficult shapes, + e.g. 1/x where x is standard normal, because of the singularity and jump at zero. + + +This verifies for normal - chi2, normal - halfnorm, foldnorm, and t - F + +TODO: + * numargs handling is not yet working properly, + numargs needs to be specified (default = 0 or 1) + * feeding args and kwargs to underlying distribution works in t distribution example + * distinguish args and kwargs for the transformed and the underlying distribution + - currently all args and no kwargs are transmitted to underlying distribution + - loc and scale only work for transformed, but not for underlying distribution + - possible to separate args for transformation and underlying distribution parameters + + * add _rvs as method, will be faster in many cases + +''' + + +class TransfTwo_gen(distributions.rv_continuous): + '''Distribution based on a non-monotonic (u- or hump-shaped transformation) + + the constructor can be called with a distribution class, and functions + that define the non-linear transformation. + and generates the distribution of the transformed random variable + + Note: the transformation, it's inverse and derivatives need to be fully + specified: func, funcinvplus, funcinvminus, derivplus, derivminus. + Currently no numerical derivatives or inverse are calculated + + This can be used to generate distribution instances similar to the + distributions in scipy.stats. + + ''' + #a class for non-linear non-monotonic transformation of a continuous random variable + def __init__(self, kls, func, funcinvplus, funcinvminus, derivplus, + derivminus, *args, **kwargs): + #print args + #print kwargs + + self.func = func + self.funcinvplus = funcinvplus + self.funcinvminus = funcinvminus + self.derivplus = derivplus + self.derivminus = derivminus + #explicit for self.__dict__.update(kwargs) + #need to set numargs because inspection does not work + self.numargs = kwargs.pop('numargs', 0) + #print self.numargs + name = kwargs.pop('name','transfdist') + longname = kwargs.pop('longname','Non-linear transformed distribution') + extradoc = kwargs.pop('extradoc',None) + a = kwargs.pop('a', -np.inf) # attached to self in super + b = kwargs.pop('b', np.inf) # self.a, self.b would be overwritten + self.shape = kwargs.pop('shape', False) + #defines whether it is a `u` shaped or `hump' shaped + # transformation + + + self.u_args, self.u_kwargs = get_u_argskwargs(**kwargs) + self.kls = kls #(self.u_args, self.u_kwargs) + # possible to freeze the underlying distribution + + super(TransfTwo_gen,self).__init__(a=a, b=b, name = name, + shapes = kls.shapes, + longname = longname, extradoc = extradoc) + + # add enough info for self.freeze() to be able to reconstruct the instance + try: + self._ctor_param.update(dict(kls=kls, func=func, + funcinvplus=funcinvplus, funcinvminus=funcinvminus, + derivplus=derivplus, derivminus=derivminus, + shape=self.shape)) + except AttributeError: + # scipy < 0.14 does not have this, ignore and do nothing + pass + + def _rvs(self, *args): + self.kls._size = self._size #size attached to self, not function argument + return self.func(self.kls._rvs(*args)) + + def _pdf(self,x,*args, **kwargs): + #print args + if self.shape == 'u': + signpdf = 1 + elif self.shape == 'hump': + signpdf = -1 + else: + raise ValueError('shape can only be `u` or `hump`') + + return signpdf * (self.derivplus(x)*self.kls._pdf(self.funcinvplus(x),*args, **kwargs) - + self.derivminus(x)*self.kls._pdf(self.funcinvminus(x),*args, **kwargs)) + #note scipy _cdf only take *args not *kwargs + + def _cdf(self,x,*args, **kwargs): + #print args + if self.shape == 'u': + return self.kls._cdf(self.funcinvplus(x),*args, **kwargs) - \ + self.kls._cdf(self.funcinvminus(x),*args, **kwargs) + #note scipy _cdf only take *args not *kwargs + else: + return 1.0 - self._sf(x,*args, **kwargs) + + def _sf(self,x,*args, **kwargs): + #print args + if self.shape == 'hump': + return self.kls._cdf(self.funcinvplus(x),*args, **kwargs) - \ + self.kls._cdf(self.funcinvminus(x),*args, **kwargs) + #note scipy _cdf only take *args not *kwargs + else: + return 1.0 - self._cdf(x, *args, **kwargs) + + def _munp(self, n,*args, **kwargs): + return self._mom0_sc(n,*args) +# ppf might not be possible in general case? +# should be possible in symmetric case +# def _ppf(self, q, *args, **kwargs): +# if self.shape == 'u': +# return self.func(self.kls._ppf(q,*args, **kwargs)) +# elif self.shape == 'hump': +# return self.func(self.kls._ppf(1-q,*args, **kwargs)) + +#TODO: rename these functions to have unique names + +class SquareFunc(object): + '''class to hold quadratic function with inverse function and derivative + + using instance methods instead of class methods, if we want extension + to parameterized function + ''' + def inverseplus(self, x): + return np.sqrt(x) + + def inverseminus(self, x): + return 0.0 - np.sqrt(x) + + def derivplus(self, x): + return 0.5/np.sqrt(x) + + def derivminus(self, x): + return 0.0 - 0.5/np.sqrt(x) + + def squarefunc(self, x): + return np.power(x,2) + +sqfunc = SquareFunc() + +squarenormalg = TransfTwo_gen(stats.norm, sqfunc.squarefunc, sqfunc.inverseplus, + sqfunc.inverseminus, sqfunc.derivplus, sqfunc.derivminus, + shape='u', a=0.0, b=np.inf, + numargs = 0, name = 'squarenorm', longname = 'squared normal distribution', + extradoc = '\ndistribution of the square of a normal random variable' +\ + ' y=x**2 with x N(0.0,1)') + #u_loc=l, u_scale=s) +squaretg = TransfTwo_gen(stats.t, sqfunc.squarefunc, sqfunc.inverseplus, + sqfunc.inverseminus, sqfunc.derivplus, sqfunc.derivminus, + shape='u', a=0.0, b=np.inf, + numargs = 1, name = 'squarenorm', longname = 'squared t distribution', + extradoc = '\ndistribution of the square of a t random variable' +\ + ' y=x**2 with x t(dof,0.0,1)') + +def inverseplus(x): + return np.sqrt(-x) + +def inverseminus(x): + return 0.0 - np.sqrt(-x) + +def derivplus(x): + return 0.0 - 0.5/np.sqrt(-x) + +def derivminus(x): + return 0.5/np.sqrt(-x) + +def negsquarefunc(x): + return -np.power(x,2) + + + +negsquarenormalg = TransfTwo_gen(stats.norm, negsquarefunc, inverseplus, inverseminus, + derivplus, derivminus, shape='hump', a=-np.inf, b=0.0, + numargs = 0, name = 'negsquarenorm', longname = 'negative squared normal distribution', + extradoc = '\ndistribution of the negative square of a normal random variable' +\ + ' y=-x**2 with x N(0.0,1)') + #u_loc=l, u_scale=s) + +def inverseplus(x): + return x + +def inverseminus(x): + return 0.0 - x + +def derivplus(x): + return 1.0 + +def derivminus(x): + return 0.0 - 1.0 + +def absfunc(x): + return np.abs(x) + + +absnormalg = TransfTwo_gen(stats.norm, np.abs, inverseplus, inverseminus, + derivplus, derivminus, shape='u', a=0.0, b=np.inf, + numargs = 0, name = 'absnorm', longname = 'absolute of normal distribution', + extradoc = '\ndistribution of the absolute value of a normal random variable' +\ + ' y=abs(x) with x N(0,1)') + + +#copied from mvncdf.py +'''multivariate normal probabilities and cumulative distribution function +a wrapper for scipy.stats.kde.mvndst + + + SUBROUTINE MVNDST( N, LOWER, UPPER, INFIN, CORREL, MAXPTS, + & ABSEPS, RELEPS, ERROR, VALUE, INFORM ) +* +* A subroutine for computing multivariate normal probabilities. +* This subroutine uses an algorithm given in the paper +* "Numerical Computation of Multivariate Normal Probabilities", in +* J. of Computational and Graphical Stat., 1(1992), pp. 141-149, by +* Alan Genz +* Department of Mathematics +* Washington State University +* Pullman, WA 99164-3113 +* Email : AlanGenz@wsu.edu +* +* Parameters +* +* N INTEGER, the number of variables. +* LOWER REAL, array of lower integration limits. +* UPPER REAL, array of upper integration limits. +* INFIN INTEGER, array of integration limits flags: +* if INFIN(I) < 0, Ith limits are (-infinity, infinity); +* if INFIN(I) = 0, Ith limits are (-infinity, UPPER(I)]; +* if INFIN(I) = 1, Ith limits are [LOWER(I), infinity); +* if INFIN(I) = 2, Ith limits are [LOWER(I), UPPER(I)]. +* CORREL REAL, array of correlation coefficients; the correlation +* coefficient in row I column J of the correlation matrix +* should be stored in CORREL( J + ((I-2)*(I-1))/2 ), for J < I. +* THe correlation matrix must be positive semidefinite. +* MAXPTS INTEGER, maximum number of function values allowed. This +* parameter can be used to limit the time. A sensible +* strategy is to start with MAXPTS = 1000*N, and then +* increase MAXPTS if ERROR is too large. +* ABSEPS REAL absolute error tolerance. +* RELEPS REAL relative error tolerance. +* ERROR REAL estimated absolute error, with 99% confidence level. +* VALUE REAL estimated value for the integral +* INFORM INTEGER, termination status parameter: +* if INFORM = 0, normal completion with ERROR < EPS; +* if INFORM = 1, completion with ERROR > EPS and MAXPTS +* function vaules used; increase MAXPTS to +* decrease ERROR; +* if INFORM = 2, N > 500 or N < 1. +* + + + +>>> scipy.stats.kde.mvn.mvndst([0.0,0.0],[10.0,10.0],[0,0],[0.5]) +(2e-016, 1.0, 0) +>>> scipy.stats.kde.mvn.mvndst([0.0,0.0],[100.0,100.0],[0,0],[0.0]) +(2e-016, 1.0, 0) +>>> scipy.stats.kde.mvn.mvndst([0.0,0.0],[1.0,1.0],[0,0],[0.0]) +(2e-016, 0.70786098173714096, 0) +>>> scipy.stats.kde.mvn.mvndst([0.0,0.0],[0.001,1.0],[0,0],[0.0]) +(2e-016, 0.42100802096993045, 0) +>>> scipy.stats.kde.mvn.mvndst([0.0,0.0],[0.001,10.0],[0,0],[0.0]) +(2e-016, 0.50039894221391101, 0) +>>> scipy.stats.kde.mvn.mvndst([0.0,0.0],[0.001,100.0],[0,0],[0.0]) +(2e-016, 0.50039894221391101, 0) +>>> scipy.stats.kde.mvn.mvndst([0.0,0.0],[0.01,100.0],[0,0],[0.0]) +(2e-016, 0.5039893563146316, 0) +>>> scipy.stats.kde.mvn.mvndst([0.0,0.0],[0.1,100.0],[0,0],[0.0]) +(2e-016, 0.53982783727702899, 0) +>>> scipy.stats.kde.mvn.mvndst([0.0,0.0],[0.1,100.0],[2,2],[0.0]) +(2e-016, 0.019913918638514494, 0) +>>> scipy.stats.kde.mvn.mvndst([0.0,0.0],[0.0,0.0],[0,0],[0.0]) +(2e-016, 0.25, 0) +>>> scipy.stats.kde.mvn.mvndst([0.0,0.0],[0.0,0.0],[-1,0],[0.0]) +(2e-016, 0.5, 0) +>>> scipy.stats.kde.mvn.mvndst([0.0,0.0],[0.0,0.0],[-1,0],[0.5]) +(2e-016, 0.5, 0) +>>> scipy.stats.kde.mvn.mvndst([0.0,0.0],[0.0,0.0],[0,0],[0.5]) +(2e-016, 0.33333333333333337, 0) +>>> scipy.stats.kde.mvn.mvndst([0.0,0.0],[0.0,0.0],[0,0],[0.99]) +(2e-016, 0.47747329317779391, 0) +''' + +#from scipy.stats import kde + +informcode = {0: 'normal completion with ERROR < EPS', + 1: '''completion with ERROR > EPS and MAXPTS function values used; + increase MAXPTS to decrease ERROR;''', + 2: 'N > 500 or N < 1'} + +def mvstdnormcdf(lower, upper, corrcoef, **kwds): + '''standardized multivariate normal cumulative distribution function + + This is a wrapper for scipy.stats.kde.mvn.mvndst which calculates + a rectangular integral over a standardized multivariate normal + distribution. + + This function assumes standardized scale, that is the variance in each dimension + is one, but correlation can be arbitrary, covariance = correlation matrix + + Parameters + ---------- + lower, upper : array_like, 1d + lower and upper integration limits with length equal to the number + of dimensions of the multivariate normal distribution. It can contain + -np.inf or np.inf for open integration intervals + corrcoef : float or array_like + specifies correlation matrix in one of three ways, see notes + optional keyword parameters to influence integration + * maxpts : int, maximum number of function values allowed. This + parameter can be used to limit the time. A sensible + strategy is to start with `maxpts` = 1000*N, and then + increase `maxpts` if ERROR is too large. + * abseps : float absolute error tolerance. + * releps : float relative error tolerance. + + Returns + ------- + cdfvalue : float + value of the integral + + + Notes + ----- + The correlation matrix corrcoef can be given in 3 different ways + If the multivariate normal is two-dimensional than only the + correlation coefficient needs to be provided. + For general dimension the correlation matrix can be provided either + as a one-dimensional array of the upper triangular correlation + coefficients stacked by rows, or as full square correlation matrix + + See Also + -------- + mvnormcdf : cdf of multivariate normal distribution without + standardization + + Examples + -------- + + >>> print(mvstdnormcdf([-np.inf,-np.inf], [0.0,np.inf], 0.5)) + 0.5 + >>> corr = [[1.0, 0, 0.5],[0,1,0],[0.5,0,1]] + >>> print(mvstdnormcdf([-np.inf,-np.inf,-100.0], [0.0,0.0,0.0], corr, abseps=1e-6)) + 0.166666399198 + >>> print(mvstdnormcdf([-np.inf,-np.inf,-100.0],[0.0,0.0,0.0],corr, abseps=1e-8)) + something wrong completion with ERROR > EPS and MAXPTS function values used; + increase MAXPTS to decrease ERROR; 1.048330348e-006 + 0.166666546218 + >>> print(mvstdnormcdf([-np.inf,-np.inf,-100.0],[0.0,0.0,0.0], corr, \ + maxpts=100000, abseps=1e-8)) + 0.166666588293 + + ''' + n = len(lower) + #don't know if converting to array is necessary, + #but it makes ndim check possible + lower = np.array(lower) + upper = np.array(upper) + corrcoef = np.array(corrcoef) + + correl = np.zeros(int(n*(n-1)/2.0)) #dtype necessary? + + if (lower.ndim != 1) or (upper.ndim != 1): + raise ValueError('can handle only 1D bounds') + if len(upper) != n: + raise ValueError('bounds have different lengths') + if n==2 and corrcoef.size==1: + correl = corrcoef + #print 'case scalar rho', n + elif corrcoef.ndim == 1 and len(corrcoef) == n*(n-1)/2.0: + #print 'case flat corr', corrcoeff.shape + correl = corrcoef + elif corrcoef.shape == (n,n): + #print 'case square corr', correl.shape + correl = corrcoef[np.tril_indices(n, -1)] +# for ii in range(n): +# for jj in range(ii): +# correl[ jj + ((ii-2)*(ii-1))/2] = corrcoef[ii,jj] + else: + raise ValueError('corrcoef has incorrect dimension') + + if 'maxpts' not in kwds: + if n >2: + kwds['maxpts'] = 10000*n + + lowinf = np.isneginf(lower) + uppinf = np.isposinf(upper) + infin = 2.0*np.ones(n) + + np.putmask(infin,lowinf,0)# infin.putmask(0,lowinf) + np.putmask(infin,uppinf,1) #infin.putmask(1,uppinf) + #this has to be last + np.putmask(infin,lowinf*uppinf,-1) + +## #remove infs +## np.putmask(lower,lowinf,-100)# infin.putmask(0,lowinf) +## np.putmask(upper,uppinf,100) #infin.putmask(1,uppinf) + + #print lower,',',upper,',',infin,',',correl + #print correl.shape + #print kwds.items() + error, cdfvalue, inform = scipy.stats.kde.mvn.mvndst(lower,upper,infin,correl,**kwds) + if inform: + print('something wrong', informcode[inform], error) + return cdfvalue + + +def mvnormcdf(upper, mu, cov, lower=None, **kwds): + '''multivariate normal cumulative distribution function + + This is a wrapper for scipy.stats.kde.mvn.mvndst which calculates + a rectangular integral over a multivariate normal distribution. + + Parameters + ---------- + lower, upper : array_like, 1d + lower and upper integration limits with length equal to the number + of dimensions of the multivariate normal distribution. It can contain + -np.inf or np.inf for open integration intervals + mu : array_lik, 1d + list or array of means + cov : array_like, 2d + specifies covariance matrix + optional keyword parameters to influence integration + * maxpts : int, maximum number of function values allowed. This + parameter can be used to limit the time. A sensible + strategy is to start with `maxpts` = 1000*N, and then + increase `maxpts` if ERROR is too large. + * abseps : float absolute error tolerance. + * releps : float relative error tolerance. + + Returns + ------- + cdfvalue : float + value of the integral + + + Notes + ----- + This function normalizes the location and scale of the multivariate + normal distribution and then uses `mvstdnormcdf` to call the integration. + + See Also + -------- + mvstdnormcdf : location and scale standardized multivariate normal cdf + ''' + + upper = np.array(upper) + if lower is None: + lower = -np.ones(upper.shape) * np.inf + else: + lower = np.array(lower) + cov = np.array(cov) + stdev = np.sqrt(np.diag(cov)) # standard deviation vector + #do I need to make sure stdev is float and not int? + #is this correct to normalize to corr? + lower = (lower - mu)/stdev + upper = (upper - mu)/stdev + divrow = np.atleast_2d(stdev) + corr = cov/divrow/divrow.T + #v/np.sqrt(np.atleast_2d(np.diag(covv)))/np.sqrt(np.atleast_2d(np.diag(covv))).T + + return mvstdnormcdf(lower, upper, corr, **kwds) diff --git a/statsmodels/sandbox/distributions/genpareto.py b/statsmodels/sandbox/distributions/genpareto.py new file mode 100644 index 0000000..568f644 --- /dev/null +++ b/statsmodels/sandbox/distributions/genpareto.py @@ -0,0 +1,235 @@ +# -*- coding: utf-8 -*- +""" +Created on Thu Aug 12 14:59:03 2010 + +Warning: not tried out or tested yet, Done + +Author: josef-pktd +""" +from __future__ import print_function +import numpy as np +from scipy import stats +from scipy.special import comb +from scipy.stats.distributions import rv_continuous +import matplotlib.pyplot as plt + +from numpy import where, inf +from numpy import abs as np_abs + +## Generalized Pareto with reversed sign of c as in literature +class genpareto2_gen(rv_continuous): + def _argcheck(self, c): + c = np.asarray(c) + self.b = where(c > 0, 1.0/np_abs(c), inf) + return where(c==0, 0, 1) + def _pdf(self, x, c): + Px = np.power(1-c*x,-1.0+1.0/c) + return Px + def _logpdf(self, x, c): + return (-1.0+1.0/c) * np.log1p(-c*x) + def _cdf(self, x, c): + return 1.0 - np.power(1-c*x,1.0/c) + def _ppf(self, q, c): + vals = -1.0/c * (np.power(1-q, c)-1) + return vals + def _munp(self, n, c): + k = np.arange(0,n+1) + val = (1.0/c)**n * np.sum(comb(n,k)*(-1)**k / (1.0+c*k),axis=0) + return where(c*n > -1, val, inf) + def _entropy(self, c): + if (c < 0): + return 1-c + else: + self.b = 1.0 / c + return rv_continuous._entropy(self, c) + +genpareto2 = genpareto2_gen(a=0.0,name='genpareto', + longname="A generalized Pareto", + shapes='c',extradoc=""" + +Generalized Pareto distribution + +genpareto2.pdf(x,c) = (1+c*x)**(-1-1/c) +for c != 0, and for x >= 0 for all c, and x < 1/abs(c) for c < 0. +""") + +shape, loc, scale = 0.5, 0, 1 +rv = np.arange(5) +quant = [0.01, 0.1, 0.5, 0.9, 0.99] +for method, x in [('pdf', rv), + ('cdf', rv), + ('sf', rv), + ('ppf', quant), + ('isf', quant)]: + print(getattr(genpareto2, method)(x, shape, loc, scale)) + print(getattr(stats.genpareto, method)(x, -shape, loc, scale)) + +print(genpareto2.stats(shape, loc, scale, moments='mvsk')) +print(stats.genpareto.stats(-shape, loc, scale, moments='mvsk')) +print(genpareto2.entropy(shape, loc, scale)) +print(stats.genpareto.entropy(-shape, loc, scale)) + + +def paramstopot(thresh, shape, scale): + '''transform shape scale for peak over threshold + + y = x-u|x>u ~ GPD(k, sigma-k*u) if x ~ GPD(k, sigma) + notation of de Zea Bermudez, Kotz + k, sigma is shape, scale + ''' + return shape, scale - shape*thresh + +def paramsfrompot(thresh, shape, scalepot): + return shape, scalepot + shape*thresh + +def warnif(cond, msg): + if not cond: + print(msg, 'does not hold') + +def meanexcess(thresh, shape, scale): + '''mean excess function of genpareto + + assert are inequality conditions in de Zea Bermudez, Kotz + ''' + warnif(shape > -1, 'shape > -1') + warnif(thresh >= 0, 'thresh >= 0') #make it weak inequality + warnif((scale - shape*thresh) > 0, '(scale - shape*thresh) > 0') + return (scale - shape*thresh) / (1 + shape) + + +def meanexcess_plot(data, params=None, lidx=100, uidx=10, method='emp', plot=0): + if method == 'est': + #doesn't make much sense yet, + #estimate the parameters and use theoretical meanexcess + if params is None: + raise NotImplementedError + else: + pass #estimate parames + elif method == 'emp': + #calculate meanexcess from data + datasorted = np.sort(data) + meanexcess = (datasorted[::-1].cumsum())/np.arange(1,len(data)+1) - datasorted[::-1] + meanexcess = meanexcess[::-1] + if plot: + plt.plot(datasorted[:-uidx], meanexcess[:-uidx]) + if params is not None: + shape, scale = params + plt.plot(datasorted[:-uidx], (scale - datasorted[:-uidx] * shape) / (1. + shape)) + return datasorted, meanexcess + + +print(meanexcess(5, -0.5, 10)) +print(meanexcess(5, -2, 10)) + +data = genpareto2.rvs(-0.75, scale=5, size=1000) +#data = np.random.uniform(50, size=1000) +#data = stats.norm.rvs(0, np.sqrt(50), size=1000) +#data = stats.pareto.rvs(1.5, np.sqrt(50), size=1000) +tmp = meanexcess_plot(data, params=(-0.75, 5), plot=1) +print(tmp[1][-20:]) +print(tmp[0][-20:]) +#plt.show() + +def meanexcess_emp(data): + datasorted = np.sort(data).astype(float) + meanexcess = (datasorted[::-1].cumsum())/np.arange(1,len(data)+1) - datasorted[::-1] + meancont = (datasorted[::-1].cumsum())/np.arange(1,len(data)+1) + meanexcess = meanexcess[::-1] + return datasorted, meanexcess, meancont[::-1] + +def meanexcess_dist(self, lb, *args, **kwds): + #default function in expect is identity + # need args in call + if np.ndim(lb) == 0: + return self.expect(lb=lb, conditional=True) + else: + return np.array([self.expect(lb=lbb, conditional=True) for + lbb in lb]) + +ds, me, mc = meanexcess_emp(1.*np.arange(1,10)) +print(ds) +print(me) +print(mc) + +print(meanexcess_dist(stats.norm, lb=0.5)) +print(meanexcess_dist(stats.norm, lb=[-np.inf, -0.5, 0, 0.5])) +rvs = stats.norm.rvs(size=100000) +rvs = rvs - rvs.mean() +print(rvs.mean(), rvs[rvs>-0.5].mean(), rvs[rvs>0].mean(), rvs[rvs>0.5].mean()) + + + +''' +[ 1. 0.5 0. 0. 0. ] +[ 1. 0.5 0. 0. 0. ] +[ 0. 0.75 1. 1. 1. ] +[ 0. 0.75 1. 1. 1. ] +[ 1. 0.25 0. 0. 0. ] +[ 1. 0.25 0. 0. 0. ] +[ 0.01002513 0.1026334 0.58578644 1.36754447 1.8 ] +[ 0.01002513 0.1026334 0.58578644 1.36754447 1.8 ] +[ 1.8 1.36754447 0.58578644 0.1026334 0.01002513] +[ 1.8 1.36754447 0.58578644 0.1026334 0.01002513] +(array(0.66666666666666674), array(0.22222222222222243), array(0.56568542494923058), array(-0.60000000000032916)) +(array(0.66666666666666674), array(0.22222222222222243), array(0.56568542494923058), array(-0.60000000000032916)) +0.5 +0.5 +25.0 +shape > -1 does not hold +-20 +[ 41.4980671 42.83145298 44.24197578 45.81622844 47.57145212 + 49.52692287 51.70553275 54.0830766 56.61358997 59.53409167 + 62.8970042 66.73494156 71.04227973 76.24015612 82.71835988 + 89.79611663 99.4252195 106.2372462 94.83432424 0. ] +[ 15.79736355 16.16373531 17.44204268 17.47968055 17.73264951 + 18.23939099 19.02638455 20.79746264 23.7169161 24.48807136 + 25.90496638 28.35556795 32.27623618 34.65714495 37.37093362 + 47.32957609 51.27970515 78.98913941 129.04309012 189.66864848] +>>> np.arange(10) +array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) +>>> meanexcess_emp(np.arange(10)) +(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), array([4, 4, 5, 5, 5, 6, 6, 5, 4, 0]), array([9, 8, 8, 7, 7, 6, 6, 5, 5, 4])) +>>> meanexcess_emp(1*np.arange(10)) +(array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]), array([4, 4, 5, 5, 5, 6, 6, 5, 4, 0]), array([9, 8, 8, 7, 7, 6, 6, 5, 5, 4])) +>>> meanexcess_emp(1.*np.arange(10)) +(array([ 0., 1., 2., 3., 4., 5., 6., 7., 8., 9.]), array([ 4.5 , 4.88888889, 5.25 , 5.57142857, 5.83333333, + 6. , 6. , 5.66666667, 4.5 , 0. ]), array([ 9. , 8.5, 8. , 7.5, 7. , 6.5, 6. , 5.5, 5. , 4.5])) +>>> meanexcess_emp(0.5**np.arange(10)) +(array([ 0.00195313, 0.00390625, 0.0078125 , 0.015625 , 0.03125 , + 0.0625 , 0.125 , 0.25 , 0.5 , 1. ]), array([ 0.19960938, 0.22135417, 0.24804688, 0.28125 , 0.32291667, + 0.375 , 0.4375 , 0.5 , 0.5 , 0. ]), array([ 1. , 0.75 , 0.58333333, 0.46875 , 0.3875 , + 0.328125 , 0.28348214, 0.24902344, 0.22178819, 0.19980469])) +>>> meanexcess_emp(np.arange(10)**0.5) +(array([ 0. , 1. , 1.41421356, 1.73205081, 2. , + 2.23606798, 2.44948974, 2.64575131, 2.82842712, 3. ]), array([ 1.93060005, 2.03400006, 2.11147337, 2.16567659, 2.19328936, + 2.18473364, 2.11854461, 1.94280904, 1.5 , 0. ]), array([ 3. , 2.91421356, 2.82472615, 2.73091704, 2.63194723, + 2.52662269, 2.41311242, 2.28825007, 2.14511117, 1.93060005])) +>>> meanexcess_emp(np.arange(10)**-2) +(array([-2147483648, 0, 0, 0, 0, + 0, 0, 0, 0, 1]), array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), array([ 1, 0, 0, 0, 0, + 0, 0, 0, 0, -214748365])) +>>> meanexcess_emp(np.arange(10)**(-0.5)) +(array([ 0.33333333, 0.35355339, 0.37796447, 0.40824829, 0.4472136 , + 0.5 , 0.57735027, 0.70710678, 1. , Inf]), array([ Inf, Inf, Inf, Inf, Inf, Inf, Inf, Inf, Inf, NaN]), array([ Inf, Inf, Inf, Inf, Inf, Inf, Inf, Inf, Inf, Inf])) +>>> np.arange(10)**(-0.5) +array([ Inf, 1. , 0.70710678, 0.57735027, 0.5 , + 0.4472136 , 0.40824829, 0.37796447, 0.35355339, 0.33333333]) +>>> meanexcess_emp(np.arange(1,10)**(-0.5)) +(array([ 0.33333333, 0.35355339, 0.37796447, 0.40824829, 0.4472136 , + 0.5 , 0.57735027, 0.70710678, 1. ]), array([ 0.4857152 , 0.50223543, 0.51998842, 0.53861177, 0.55689141, + 0.57111426, 0.56903559, 0.5 , 0. ]), array([ 1. , 0.85355339, 0.76148568, 0.69611426, 0.64633413, + 0.60665316, 0.57398334, 0.5464296 , 0.52275224])) +>>> meanexcess_emp(np.arange(1,10)) +(array([1, 2, 3, 4, 5, 6, 7, 8, 9]), array([4, 5, 5, 5, 6, 6, 5, 4, 0]), array([9, 8, 8, 7, 7, 6, 6, 5, 5])) +>>> meanexcess_emp(1.*np.arange(1,10)) +(array([ 1., 2., 3., 4., 5., 6., 7., 8., 9.]), array([ 4.88888889, 5.25 , 5.57142857, 5.83333333, 6. , + 6. , 5.66666667, 4.5 , 0. ]), array([ 9. , 8.5, 8. , 7.5, 7. , 6.5, 6. , 5.5, 5. ])) +>>> datasorted = np.sort(1.*np.arange(1,10)) +>>> (datasorted[::-1].cumsum()-datasorted[::-1]) +array([ 0., 9., 17., 24., 30., 35., 39., 42., 44.]) +>>> datasorted[::-1].cumsum() +array([ 9., 17., 24., 30., 35., 39., 42., 44., 45.]) +>>> datasorted[::-1] +array([ 9., 8., 7., 6., 5., 4., 3., 2., 1.]) +>>> +''' diff --git a/statsmodels/sandbox/distributions/gof_new.py b/statsmodels/sandbox/distributions/gof_new.py new file mode 100644 index 0000000..33c43bb --- /dev/null +++ b/statsmodels/sandbox/distributions/gof_new.py @@ -0,0 +1,689 @@ +'''More Goodness of fit tests + +contains + +GOF : 1 sample gof tests based on Stephens 1970, plus AD A^2 +bootstrap : vectorized bootstrap p-values for gof test with fitted parameters + + +Created : 2011-05-21 +Author : Josef Perktold + +parts based on ks_2samp and kstest from scipy.stats +(license: Scipy BSD, but were completely rewritten by Josef Perktold) + + +References +---------- + +''' +from __future__ import print_function +from statsmodels.compat.python import range, lmap, string_types +import numpy as np + +from scipy.stats import distributions + +from statsmodels.tools.decorators import cache_readonly + +from scipy.special import kolmogorov as ksprob + +#from scipy.stats unchanged +def ks_2samp(data1, data2): + """ + Computes the Kolmogorov-Smirnof statistic on 2 samples. + + This is a two-sided test for the null hypothesis that 2 independent samples + are drawn from the same continuous distribution. + + Parameters + ---------- + a, b : sequence of 1-D ndarrays + two arrays of sample observations assumed to be drawn from a continuous + distribution, sample sizes can be different + + + Returns + ------- + D : float + KS statistic + p-value : float + two-tailed p-value + + + Notes + ----- + + This tests whether 2 samples are drawn from the same distribution. Note + that, like in the case of the one-sample K-S test, the distribution is + assumed to be continuous. + + This is the two-sided test, one-sided tests are not implemented. + The test uses the two-sided asymptotic Kolmogorov-Smirnov distribution. + + If the K-S statistic is small or the p-value is high, then we cannot + reject the hypothesis that the distributions of the two samples + are the same. + + Examples + -------- + + >>> from scipy import stats + >>> import numpy as np + >>> from scipy.stats import ks_2samp + + >>> #fix random seed to get the same result + >>> np.random.seed(12345678) + + >>> n1 = 200 # size of first sample + >>> n2 = 300 # size of second sample + + different distribution + we can reject the null hypothesis since the pvalue is below 1% + + >>> rvs1 = stats.norm.rvs(size=n1,loc=0.,scale=1) + >>> rvs2 = stats.norm.rvs(size=n2,loc=0.5,scale=1.5) + >>> ks_2samp(rvs1,rvs2) + (0.20833333333333337, 4.6674975515806989e-005) + + slightly different distribution + we cannot reject the null hypothesis at a 10% or lower alpha since + the pvalue at 0.144 is higher than 10% + + >>> rvs3 = stats.norm.rvs(size=n2,loc=0.01,scale=1.0) + >>> ks_2samp(rvs1,rvs3) + (0.10333333333333333, 0.14498781825751686) + + identical distribution + we cannot reject the null hypothesis since the pvalue is high, 41% + + >>> rvs4 = stats.norm.rvs(size=n2,loc=0.0,scale=1.0) + >>> ks_2samp(rvs1,rvs4) + (0.07999999999999996, 0.41126949729859719) + + """ + data1, data2 = lmap(np.asarray, (data1, data2)) + n1 = data1.shape[0] + n2 = data2.shape[0] + n1 = len(data1) + n2 = len(data2) + data1 = np.sort(data1) + data2 = np.sort(data2) + data_all = np.concatenate([data1,data2]) + #reminder: searchsorted inserts 2nd into 1st array + cdf1 = np.searchsorted(data1,data_all,side='right')/(1.0*n1) + cdf2 = (np.searchsorted(data2,data_all,side='right'))/(1.0*n2) + d = np.max(np.absolute(cdf1-cdf2)) + #Note: d absolute not signed distance + en = np.sqrt(n1*n2/float(n1+n2)) + try: + prob = ksprob((en+0.12+0.11/en)*d) + except: + prob = 1.0 + return d, prob + + + +#from scipy.stats unchanged +def kstest(rvs, cdf, args=(), N=20, alternative = 'two_sided', mode='approx',**kwds): + """ + Perform the Kolmogorov-Smirnov test for goodness of fit + + This performs a test of the distribution G(x) of an observed + random variable against a given distribution F(x). Under the null + hypothesis the two distributions are identical, G(x)=F(x). The + alternative hypothesis can be either 'two_sided' (default), 'less' + or 'greater'. The KS test is only valid for continuous distributions. + + Parameters + ---------- + rvs : string or array or callable + string: name of a distribution in scipy.stats + + array: 1-D observations of random variables + + callable: function to generate random variables, requires keyword + argument `size` + + cdf : string or callable + string: name of a distribution in scipy.stats, if rvs is a string then + cdf can evaluate to `False` or be the same as rvs + callable: function to evaluate cdf + + args : tuple, sequence + distribution parameters, used if rvs or cdf are strings + N : int + sample size if rvs is string or callable + alternative : 'two_sided' (default), 'less' or 'greater' + defines the alternative hypothesis (see explanation) + + mode : 'approx' (default) or 'asymp' + defines the distribution used for calculating p-value + + 'approx' : use approximation to exact distribution of test statistic + + 'asymp' : use asymptotic distribution of test statistic + + + Returns + ------- + D : float + KS test statistic, either D, D+ or D- + p-value : float + one-tailed or two-tailed p-value + + Notes + ----- + + In the one-sided test, the alternative is that the empirical + cumulative distribution function of the random variable is "less" + or "greater" than the cumulative distribution function F(x) of the + hypothesis, G(x)<=F(x), resp. G(x)>=F(x). + + Examples + -------- + + >>> from scipy import stats + >>> import numpy as np + >>> from scipy.stats import kstest + + >>> x = np.linspace(-15,15,9) + >>> kstest(x,'norm') + (0.44435602715924361, 0.038850142705171065) + + >>> np.random.seed(987654321) # set random seed to get the same result + >>> kstest('norm','',N=100) + (0.058352892479417884, 0.88531190944151261) + + is equivalent to this + + >>> np.random.seed(987654321) + >>> kstest(stats.norm.rvs(size=100),'norm') + (0.058352892479417884, 0.88531190944151261) + + Test against one-sided alternative hypothesis: + + >>> np.random.seed(987654321) + + Shift distribution to larger values, so that cdf_dgp(x)< norm.cdf(x): + + >>> x = stats.norm.rvs(loc=0.2, size=100) + >>> kstest(x,'norm', alternative = 'less') + (0.12464329735846891, 0.040989164077641749) + + Reject equal distribution against alternative hypothesis: less + + >>> kstest(x,'norm', alternative = 'greater') + (0.0072115233216311081, 0.98531158590396395) + + Don't reject equal distribution against alternative hypothesis: greater + + >>> kstest(x,'norm', mode='asymp') + (0.12464329735846891, 0.08944488871182088) + + + Testing t distributed random variables against normal distribution: + + With 100 degrees of freedom the t distribution looks close to the normal + distribution, and the kstest does not reject the hypothesis that the sample + came from the normal distribution + + >>> np.random.seed(987654321) + >>> stats.kstest(stats.t.rvs(100,size=100),'norm') + (0.072018929165471257, 0.67630062862479168) + + With 3 degrees of freedom the t distribution looks sufficiently different + from the normal distribution, that we can reject the hypothesis that the + sample came from the normal distribution at a alpha=10% level + + >>> np.random.seed(987654321) + >>> stats.kstest(stats.t.rvs(3,size=100),'norm') + (0.131016895759829, 0.058826222555312224) + + """ + if isinstance(rvs, string_types): + #cdf = getattr(stats, rvs).cdf + if (not cdf) or (cdf == rvs): + cdf = getattr(distributions, rvs).cdf + rvs = getattr(distributions, rvs).rvs + else: + raise AttributeError('if rvs is string, cdf has to be the same distribution') + + + if isinstance(cdf, string_types): + cdf = getattr(distributions, cdf).cdf + if callable(rvs): + kwds = {'size':N} + vals = np.sort(rvs(*args,**kwds)) + else: + vals = np.sort(rvs) + N = len(vals) + cdfvals = cdf(vals, *args) + + if alternative in ['two_sided', 'greater']: + Dplus = (np.arange(1.0, N+1)/N - cdfvals).max() + if alternative == 'greater': + return Dplus, distributions.ksone.sf(Dplus,N) + + if alternative in ['two_sided', 'less']: + Dmin = (cdfvals - np.arange(0.0, N)/N).max() + if alternative == 'less': + return Dmin, distributions.ksone.sf(Dmin,N) + + if alternative == 'two_sided': + D = np.max([Dplus,Dmin]) + if mode == 'asymp': + return D, distributions.kstwobign.sf(D*np.sqrt(N)) + if mode == 'approx': + pval_two = distributions.kstwobign.sf(D*np.sqrt(N)) + if N > 2666 or pval_two > 0.80 - N*0.3/1000.0 : + return D, distributions.kstwobign.sf(D*np.sqrt(N)) + else: + return D, distributions.ksone.sf(D,N)*2 + +#TODO: split into modification and pvalue functions separately ? +# for separate testing and combining different pieces + +def dplus_st70_upp(stat, nobs): + mod_factor = np.sqrt(nobs) + 0.12 + 0.11 / np.sqrt(nobs) + stat_modified = stat * mod_factor + pval = np.exp(-2 * stat_modified**2) + digits = np.sum(stat > np.array([0.82, 0.82, 1.00])) + #repeat low to get {0,2,3} + return stat_modified, pval, digits + +dminus_st70_upp = dplus_st70_upp + + +def d_st70_upp(stat, nobs): + mod_factor = np.sqrt(nobs) + 0.12 + 0.11 / np.sqrt(nobs) + stat_modified = stat * mod_factor + pval = 2 * np.exp(-2 * stat_modified**2) + digits = np.sum(stat > np.array([0.91, 0.91, 1.08])) + #repeat low to get {0,2,3} + return stat_modified, pval, digits + +def v_st70_upp(stat, nobs): + mod_factor = np.sqrt(nobs) + 0.155 + 0.24 / np.sqrt(nobs) + #repeat low to get {0,2,3} + stat_modified = stat * mod_factor + zsqu = stat_modified**2 + pval = (8 * zsqu - 2) * np.exp(-2 * zsqu) + digits = np.sum(stat > np.array([1.06, 1.06, 1.26])) + return stat_modified, pval, digits + +def wsqu_st70_upp(stat, nobs): + nobsinv = 1. / nobs + stat_modified = (stat - 0.4 * nobsinv + 0.6 * nobsinv**2) * (1 + nobsinv) + pval = 0.05 * np.exp(2.79 - 6 * stat_modified) + digits = np.nan # some explanation in txt + #repeat low to get {0,2,3} + return stat_modified, pval, digits + +def usqu_st70_upp(stat, nobs): + nobsinv = 1. / nobs + stat_modified = (stat - 0.1 * nobsinv + 0.1 * nobsinv**2) + stat_modified *= (1 + 0.8 * nobsinv) + pval = 2 * np.exp(- 2 * stat_modified * np.pi**2) + digits = np.sum(stat > np.array([0.29, 0.29, 0.34])) + #repeat low to get {0,2,3} + return stat_modified, pval, digits + +def a_st70_upp(stat, nobs): + nobsinv = 1. / nobs + stat_modified = (stat - 0.7 * nobsinv + 0.9 * nobsinv**2) + stat_modified *= (1 + 1.23 * nobsinv) + pval = 1.273 * np.exp(- 2 * stat_modified / 2. * np.pi**2) + digits = np.sum(stat > np.array([0.11, 0.11, 0.452])) + #repeat low to get {0,2,3} + return stat_modified, pval, digits + + + +gof_pvals = {} + +gof_pvals['stephens70upp'] = { + 'd_plus' : dplus_st70_upp, + 'd_minus' : dplus_st70_upp, + 'd' : d_st70_upp, + 'v' : v_st70_upp, + 'wsqu' : wsqu_st70_upp, + 'usqu' : usqu_st70_upp, + 'a' : a_st70_upp } + +def pval_kstest_approx(D, N): + pval_two = distributions.kstwobign.sf(D*np.sqrt(N)) + if N > 2666 or pval_two > 0.80 - N*0.3/1000.0 : + return D, distributions.kstwobign.sf(D*np.sqrt(N)), np.nan + else: + return D, distributions.ksone.sf(D,N)*2, np.nan + +gof_pvals['scipy'] = { + 'd_plus' : lambda Dplus, N: (Dplus, distributions.ksone.sf(Dplus, N), np.nan), + 'd_minus' : lambda Dmin, N: (Dmin, distributions.ksone.sf(Dmin,N), np.nan), + 'd' : lambda D, N: (D, distributions.kstwobign.sf(D*np.sqrt(N)), np.nan) + } + +gof_pvals['scipy_approx'] = { + 'd' : pval_kstest_approx } + +class GOF(object): + '''One Sample Goodness of Fit tests + + includes Kolmogorov-Smirnov D, D+, D-, Kuiper V, Cramer-von Mises W^2, U^2 and + Anderson-Darling A, A^2. The p-values for all tests except for A^2 are based on + the approximatiom given in Stephens 1970. A^2 has currently no p-values. For + the Kolmogorov-Smirnov test the tests as given in scipy.stats are also available + as options. + + + + + design: I might want to retest with different distributions, to calculate + data summary statistics only once, or add separate class that holds + summary statistics and data (sounds good). + + + + + ''' + + + + + def __init__(self, rvs, cdf, args=(), N=20): + if isinstance(rvs, string_types): + #cdf = getattr(stats, rvs).cdf + if (not cdf) or (cdf == rvs): + cdf = getattr(distributions, rvs).cdf + rvs = getattr(distributions, rvs).rvs + else: + raise AttributeError('if rvs is string, cdf has to be the same distribution') + + + if isinstance(cdf, string_types): + cdf = getattr(distributions, cdf).cdf + if callable(rvs): + kwds = {'size':N} + vals = np.sort(rvs(*args,**kwds)) + else: + vals = np.sort(rvs) + N = len(vals) + cdfvals = cdf(vals, *args) + + self.nobs = N + self.vals_sorted = vals + self.cdfvals = cdfvals + + + + @cache_readonly + def d_plus(self): + nobs = self.nobs + cdfvals = self.cdfvals + return (np.arange(1.0, nobs+1)/nobs - cdfvals).max() + + @cache_readonly + def d_minus(self): + nobs = self.nobs + cdfvals = self.cdfvals + return (cdfvals - np.arange(0.0, nobs)/nobs).max() + + @cache_readonly + def d(self): + return np.max([self.d_plus, self.d_minus]) + + @cache_readonly + def v(self): + '''Kuiper''' + return self.d_plus + self.d_minus + + @cache_readonly + def wsqu(self): + '''Cramer von Mises''' + nobs = self.nobs + cdfvals = self.cdfvals + #use literal formula, TODO: simplify with arange(,,2) + wsqu = ((cdfvals - (2. * np.arange(1., nobs+1) - 1)/nobs/2.)**2).sum() \ + + 1./nobs/12. + return wsqu + + @cache_readonly + def usqu(self): + nobs = self.nobs + cdfvals = self.cdfvals + #use literal formula, TODO: simplify with arange(,,2) + usqu = self.wsqu - nobs * (cdfvals.mean() - 0.5)**2 + return usqu + + @cache_readonly + def a(self): + nobs = self.nobs + cdfvals = self.cdfvals + + #one loop instead of large array + msum = 0 + for j in range(1,nobs): + mj = cdfvals[j] - cdfvals[:j] + mask = (mj > 0.5) + mj[mask] = 1 - mj[mask] + msum += mj.sum() + + a = nobs / 4. - 2. / nobs * msum + return a + + @cache_readonly + def asqu(self): + '''Stephens 1974, doesn't have p-value formula for A^2''' + nobs = self.nobs + cdfvals = self.cdfvals + + asqu = -((2. * np.arange(1., nobs+1) - 1) * + (np.log(cdfvals) + np.log(1-cdfvals[::-1]) )).sum()/nobs - nobs + + return asqu + + + def get_test(self, testid='d', pvals='stephens70upp'): + ''' + + ''' + #print gof_pvals[pvals][testid] + stat = getattr(self, testid) + if pvals == 'stephens70upp': + return gof_pvals[pvals][testid](stat, self.nobs), stat + else: + return gof_pvals[pvals][testid](stat, self.nobs) + + + + + + + + +def gof_mc(randfn, distr, nobs=100): + #print '\nIs it correctly sized?' + from collections import defaultdict + + results = defaultdict(list) + for i in range(1000): + rvs = randfn(nobs) + goft = GOF(rvs, distr) + for ti in all_gofs: + results[ti].append(goft.get_test(ti, 'stephens70upp')[0][1]) + + resarr = np.array([results[ti] for ti in all_gofs]) + print(' ', ' '.join(all_gofs)) + print('at 0.01:', (resarr < 0.01).mean(1)) + print('at 0.05:', (resarr < 0.05).mean(1)) + print('at 0.10:', (resarr < 0.1).mean(1)) + +def asquare(cdfvals, axis=0): + '''vectorized Anderson Darling A^2, Stephens 1974''' + ndim = len(cdfvals.shape) + nobs = cdfvals.shape[axis] + slice_reverse = [slice(None)] * ndim #might make copy if not specific axis??? + islice = [None] * ndim + islice[axis] = slice(None) + slice_reverse[axis] = slice(None, None, -1) + asqu = -((2. * np.arange(1., nobs+1)[tuple(islice)] - 1) * + (np.log(cdfvals) + np.log(1-cdfvals[tuple(slice_reverse)]))/nobs).sum(axis) \ + - nobs + + return asqu + + +#class OneSGOFFittedVec(object): +# '''for vectorized fitting''' + # currently I use the bootstrap as function instead of full class + + #note: kwds loc and scale are a pain + # I would need to overwrite rvs, fit and cdf depending on fixed parameters + + #def bootstrap(self, distr, args=(), kwds={}, nobs=200, nrep=1000, +def bootstrap(distr, args=(), nobs=200, nrep=100, value=None, batch_size=None): + '''Monte Carlo (or parametric bootstrap) p-values for gof + + currently hardcoded for A^2 only + + assumes vectorized fit_vec method, + builds and analyses (nobs, nrep) sample in one step + + rename function to less generic + + this works also with nrep=1 + + ''' + #signature similar to kstest ? + #delegate to fn ? + + #rvs_kwds = {'size':(nobs, nrep)} + #rvs_kwds.update(kwds) + + + #it will be better to build a separate batch function that calls bootstrap + #keep batch if value is true, but batch iterate from outside if stat is returned + if batch_size is not None: + if value is None: + raise ValueError('using batching requires a value') + n_batch = int(np.ceil(nrep/float(batch_size))) + count = 0 + for irep in range(n_batch): + rvs = distr.rvs(args, **{'size':(batch_size, nobs)}) + params = distr.fit_vec(rvs, axis=1) + params = lmap(lambda x: np.expand_dims(x, 1), params) + cdfvals = np.sort(distr.cdf(rvs, params), axis=1) + stat = asquare(cdfvals, axis=1) + count += (stat >= value).sum() + return count / float(n_batch * batch_size) + else: + #rvs = distr.rvs(args, **kwds) #extension to distribution kwds ? + rvs = distr.rvs(args, **{'size':(nrep, nobs)}) + params = distr.fit_vec(rvs, axis=1) + params = lmap(lambda x: np.expand_dims(x, 1), params) + cdfvals = np.sort(distr.cdf(rvs, params), axis=1) + stat = asquare(cdfvals, axis=1) + if value is None: #return all bootstrap results + stat_sorted = np.sort(stat) + return stat_sorted + else: #calculate and return specific p-value + return (stat >= value).mean() + + + +def bootstrap2(value, distr, args=(), nobs=200, nrep=100): + '''Monte Carlo (or parametric bootstrap) p-values for gof + + currently hardcoded for A^2 only + + non vectorized, loops over all parametric bootstrap replications and calculates + and returns specific p-value, + + rename function to less generic + + ''' + #signature similar to kstest ? + #delegate to fn ? + + #rvs_kwds = {'size':(nobs, nrep)} + #rvs_kwds.update(kwds) + + + count = 0 + for irep in range(nrep): + #rvs = distr.rvs(args, **kwds) #extension to distribution kwds ? + rvs = distr.rvs(args, **{'size':nobs}) + params = distr.fit_vec(rvs) + cdfvals = np.sort(distr.cdf(rvs, params)) + stat = asquare(cdfvals, axis=0) + count += (stat >= value) + return count * 1. / nrep + + +class NewNorm(object): + '''just a holder for modified distributions + ''' + + def fit_vec(self, x, axis=0): + return x.mean(axis), x.std(axis) + + def cdf(self, x, args): + return distributions.norm.cdf(x, loc=args[0], scale=args[1]) + + def rvs(self, args, size): + loc=args[0] + scale=args[1] + return loc + scale * distributions.norm.rvs(size=size) + + + + + +if __name__ == '__main__': + from scipy import stats + #rvs = np.random.randn(1000) + rvs = stats.t.rvs(3, size=200) + print('scipy kstest') + print(kstest(rvs, 'norm')) + goft = GOF(rvs, 'norm') + print(goft.get_test()) + + all_gofs = ['d', 'd_plus', 'd_minus', 'v', 'wsqu', 'usqu', 'a'] + for ti in all_gofs: + print(ti, goft.get_test(ti, 'stephens70upp')) + + print('\nIs it correctly sized?') + from collections import defaultdict + + results = defaultdict(list) + nobs = 200 + for i in range(100): + rvs = np.random.randn(nobs) + goft = GOF(rvs, 'norm') + for ti in all_gofs: + results[ti].append(goft.get_test(ti, 'stephens70upp')[0][1]) + + resarr = np.array([results[ti] for ti in all_gofs]) + print(' ', ' '.join(all_gofs)) + print('at 0.01:', (resarr < 0.01).mean(1)) + print('at 0.05:', (resarr < 0.05).mean(1)) + print('at 0.10:', (resarr < 0.1).mean(1)) + + gof_mc(lambda nobs: stats.t.rvs(3, size=nobs), 'norm', nobs=200) + + nobs = 200 + nrep = 100 + bt = bootstrap(NewNorm(), args=(0,1), nobs=nobs, nrep=nrep, value=None) + quantindex = np.floor(nrep * np.array([0.99, 0.95, 0.9])).astype(int) + print(bt[quantindex]) + + #the bootstrap results match Stephens pretty well for nobs=100, but not so well for + #large (1000) or small (20) nobs + ''' + >>> np.array([15.0, 10.0, 5.0, 2.5, 1.0])/100. #Stephens + array([ 0.15 , 0.1 , 0.05 , 0.025, 0.01 ]) + >>> nobs = 100 + >>> [bootstrap(NewNorm(), args=(0,1), nobs=nobs, nrep=10000, value=c/ (1 + 4./nobs - 25./nobs**2)) for c in [0.576, 0.656, 0.787, 0.918, 1.092]] + [0.1545, 0.10009999999999999, 0.049000000000000002, 0.023, 0.0104] + >>> + ''' diff --git a/statsmodels/sandbox/distributions/multivariate.py b/statsmodels/sandbox/distributions/multivariate.py new file mode 100644 index 0000000..02dc9ca --- /dev/null +++ b/statsmodels/sandbox/distributions/multivariate.py @@ -0,0 +1,172 @@ +'''Multivariate Distribution + +Probability of a multivariate t distribution + +Now also mvstnormcdf has tests against R mvtnorm + +Still need non-central t, extra options, and convenience function for +location, scale version. + +Author: Josef Perktold +License: BSD (3-clause) + +Reference: +Genz and Bretz for formula + +''' +from __future__ import print_function +import numpy as np +from scipy import integrate, stats, special +from scipy.stats import chi + +from .extras import mvstdnormcdf + +from numpy import exp as np_exp +from numpy import log as np_log +from scipy.special import gamma as sps_gamma +from scipy.special import gammaln as sps_gammaln + +def chi2_pdf(self, x, df): + '''pdf of chi-square distribution''' + #from scipy.stats.distributions + Px = x**(df/2.0-1)*np.exp(-x/2.0) + Px /= special.gamma(df/2.0)* 2**(df/2.0) + return Px + +def chi_pdf(x, df): + tmp = (df-1.)*np_log(x) + (-x*x*0.5) - (df*0.5-1)*np_log(2.0) \ + - sps_gammaln(df*0.5) + return np_exp(tmp) + #return x**(df-1.)*np_exp(-x*x*0.5)/(2.0)**(df*0.5-1)/sps_gamma(df*0.5) + +def chi_logpdf(x, df): + tmp = (df-1.)*np_log(x) + (-x*x*0.5) - (df*0.5-1)*np_log(2.0) \ + - sps_gammaln(df*0.5) + return tmp + +def funbgh(s, a, b, R, df): + sqrt_df = np.sqrt(df+0.5) + ret = chi_logpdf(s,df) + ret += np_log(mvstdnormcdf(s*a/sqrt_df, s*b/sqrt_df, R, + maxpts=1000000, abseps=1e-6)) + ret = np_exp(ret) + return ret + +def funbgh2(s, a, b, R, df): + n = len(a) + sqrt_df = np.sqrt(df) + #np.power(s, df-1) * np_exp(-s*s*0.5) + return np_exp((df-1)*np_log(s)-s*s*0.5) \ + * mvstdnormcdf(s*a/sqrt_df, s*b/sqrt_df, R[np.tril_indices(n, -1)], + maxpts=1000000, abseps=1e-4) + +def bghfactor(df): + return np.power(2.0, 1-df*0.5) / sps_gamma(df*0.5) + + +def mvstdtprob(a, b, R, df, ieps=1e-5, quadkwds=None, mvstkwds=None): + """ + Probability of rectangular area of standard t distribution + + assumes mean is zero and R is correlation matrix + + Notes + ----- + This function does not calculate the estimate of the combined error + between the underlying multivariate normal probability calculations + and the integration. + """ + kwds = dict(args=(a, b, R, df), epsabs=1e-4, epsrel=1e-2, limit=150) + if quadkwds is not None: + kwds.update(quadkwds) + lower, upper = chi.ppf([ieps, 1 - ieps], df) + res, err = integrate.quad(funbgh2, lower, upper, **kwds) + prob = res * bghfactor(df) + return prob + +#written by Enzo Michelangeli, style changes by josef-pktd +# Student's T random variable +def multivariate_t_rvs(m, S, df=np.inf, n=1): + '''generate random variables of multivariate t distribution + + Parameters + ---------- + m : array_like + mean of random variable, length determines dimension of random variable + S : array_like + square array of covariance matrix + df : int or float + degrees of freedom + n : int + number of observations, return random array will be (n, len(m)) + + Returns + ------- + rvs : ndarray, (n, len(m)) + each row is an independent draw of a multivariate t distributed + random variable + + + ''' + m = np.asarray(m) + d = len(m) + if df == np.inf: + x = 1. + else: + x = np.random.chisquare(df, n)/df + z = np.random.multivariate_normal(np.zeros(d),S,(n,)) + return m + z/np.sqrt(x)[:,None] # same output format as random.multivariate_normal + + + + +if __name__ == '__main__': + corr = np.asarray([[1.0, 0, 0.5],[0,1,0],[0.5,0,1]]) + corr_indep = np.asarray([[1.0, 0, 0],[0,1,0],[0,0,1]]) + corr_equal = np.asarray([[1.0, 0.5, 0.5],[0.5,1,0.5],[0.5,0.5,1]]) + R = corr_equal + a = np.array([-np.inf,-np.inf,-100.0]) + a = np.array([-0.96,-0.96,-0.96]) + b = np.array([0.0,0.0,0.0]) + b = np.array([0.96,0.96, 0.96]) + a[:] = -1 + b[:] = 3 + df = 10. + sqrt_df = np.sqrt(df) + print(mvstdnormcdf(a, b, corr, abseps=1e-6)) + + #print integrate.quad(funbgh, 0, np.inf, args=(a,b,R,df)) + print((stats.t.cdf(b[0], df) - stats.t.cdf(a[0], df))**3) + + s = 1 + print(mvstdnormcdf(s*a/sqrt_df, s*b/sqrt_df, R)) + + + df=4 + print(mvstdtprob(a, b, R, df)) + + S = np.array([[1.,.5],[.5,1.]]) + print(multivariate_t_rvs([10.,20.], S, 2, 5)) + + nobs = 10000 + rvst = multivariate_t_rvs([10.,20.], S, 2, nobs) + print(np.sum((rvst<[10.,20.]).all(1),0) * 1. / nobs) + print(mvstdtprob(-np.inf*np.ones(2), np.zeros(2), R[:2,:2], 2)) + + + ''' + > lower <- -1 + > upper <- 3 + > df <- 4 + > corr <- diag(3) + > delta <- rep(0, 3) + > pmvt(lower=lower, upper=upper, delta=delta, df=df, corr=corr) + [1] 0.5300413 + attr(,"error") + [1] 4.321136e-05 + attr(,"msg") + [1] "Normal Completion" + > (pt(upper, df) - pt(lower, df))**3 + [1] 0.4988254 + + ''' diff --git a/statsmodels/sandbox/distributions/mv_measures.py b/statsmodels/sandbox/distributions/mv_measures.py new file mode 100644 index 0000000..b6244f6 --- /dev/null +++ b/statsmodels/sandbox/distributions/mv_measures.py @@ -0,0 +1,195 @@ +'''using multivariate dependence and divergence measures + +The standard correlation coefficient measures only linear dependence between +random variables. +kendall's tau measures any monotonic relationship also non-linear. + +mutual information measures any kind of dependence, but does not distinguish +between positive and negative relationship + + +mutualinfo_kde and mutualinfo_binning follow Khan et al. 2007 + +Shiraj Khan, Sharba Bandyopadhyay, Auroop R. Ganguly, Sunil Saigal, +David J. Erickson, III, Vladimir Protopopescu, and George Ostrouchov, +Relative performance of mutual information estimation methods for +quantifying the dependence among short and noisy data, +Phys. Rev. E 76, 026209 (2007) +http://pre.aps.org/abstract/PRE/v76/i2/e026209 + + +''' + +import numpy as np +from scipy import stats +from scipy.stats import gaussian_kde + +import statsmodels.sandbox.infotheo as infotheo + + +def mutualinfo_kde(y, x, normed=True): + '''mutual information of two random variables estimated with kde + + ''' + nobs = len(x) + if not len(y) == nobs: + raise ValueError('both data arrays need to have the same size') + x = np.asarray(x, float) + y = np.asarray(y, float) + yx = np.vstack((y,x)) + kde_x = gaussian_kde(x)(x) + kde_y = gaussian_kde(y)(y) + kde_yx = gaussian_kde(yx)(yx) + + mi_obs = np.log(kde_yx) - np.log(kde_x) - np.log(kde_y) + mi = mi_obs.sum() / nobs + if normed: + mi_normed = np.sqrt(1. - np.exp(-2 * mi)) + return mi_normed + else: + return mi + +def mutualinfo_kde_2sample(y, x, normed=True): + '''mutual information of two random variables estimated with kde + + ''' + nobs = len(x) + x = np.asarray(x, float) + y = np.asarray(y, float) + #yx = np.vstack((y,x)) + kde_x = gaussian_kde(x.T)(x.T) + kde_y = gaussian_kde(y.T)(x.T) + #kde_yx = gaussian_kde(yx)(yx) + + mi_obs = np.log(kde_x) - np.log(kde_y) + if len(mi_obs) != nobs: + raise ValueError("Wrong number of observations") + mi = mi_obs.mean() + if normed: + mi_normed = np.sqrt(1. - np.exp(-2 * mi)) + return mi_normed + else: + return mi + +def mutualinfo_binned(y, x, bins, normed=True): + '''mutual information of two random variables estimated with kde + + + + Notes + ----- + bins='auto' selects the number of bins so that approximately 5 observations + are expected to be in each bin under the assumption of independence. This + follows roughly the description in Kahn et al. 2007 + + ''' + nobs = len(x) + if not len(y) == nobs: + raise ValueError('both data arrays need to have the same size') + x = np.asarray(x, float) + y = np.asarray(y, float) + #yx = np.vstack((y,x)) + + +## fyx, binsy, binsx = np.histogram2d(y, x, bins=bins) +## fx, binsx_ = np.histogram(x, bins=binsx) +## fy, binsy_ = np.histogram(y, bins=binsy) + + if bins == 'auto': + ys = np.sort(y) + xs = np.sort(x) + #quantiles = np.array([0,0.25, 0.4, 0.6, 0.75, 1]) + qbin_sqr = np.sqrt(5./nobs) + quantiles = np.linspace(0, 1, 1./qbin_sqr) + quantile_index = ((nobs-1)*quantiles).astype(int) + #move edges so that they don't coincide with an observation + shift = 1e-6 + np.ones(quantiles.shape) + shift[0] -= 2*1e-6 + binsy = ys[quantile_index] + shift + binsx = xs[quantile_index] + shift + + elif np.size(bins) == 1: + binsy = bins + binsx = bins + elif (len(bins) == 2): + binsy, binsx = bins +## if np.size(bins[0]) == 1: +## binsx = bins[0] +## if np.size(bins[1]) == 1: +## binsx = bins[1] + + fx, binsx = np.histogram(x, bins=binsx) + fy, binsy = np.histogram(y, bins=binsy) + fyx, binsy, binsx = np.histogram2d(y, x, bins=(binsy, binsx)) + + pyx = fyx * 1. / nobs + px = fx * 1. / nobs + py = fy * 1. / nobs + + + mi_obs = pyx * (np.log(pyx+1e-10) - np.log(py)[:,None] - np.log(px)) + mi = mi_obs.sum() + + if normed: + mi_normed = np.sqrt(1. - np.exp(-2 * mi)) + return mi_normed, (pyx, py, px, binsy, binsx), mi_obs + else: + return mi + + +if __name__ == '__main__': + import statsmodels.api as sm + + funtype = ['linear', 'quadratic'][1] + nobs = 200 + sig = 2#5. + #x = np.linspace(-3, 3, nobs) + np.random.randn(nobs) + x = np.sort(3*np.random.randn(nobs)) + exog = sm.add_constant(x, prepend=True) + #y = 0 + np.log(1+x**2) + sig * np.random.randn(nobs) + if funtype == 'quadratic': + y = 0 + x**2 + sig * np.random.randn(nobs) + if funtype == 'linear': + y = 0 + x + sig * np.random.randn(nobs) + + print('correlation') + print(np.corrcoef(y,x)[0, 1]) + print('pearsonr', stats.pearsonr(y,x)) + print('spearmanr', stats.spearmanr(y,x)) + print('kendalltau', stats.kendalltau(y,x)) + + pxy, binsx, binsy = np.histogram2d(x,y, bins=5) + px, binsx_ = np.histogram(x, bins=binsx) + py, binsy_ = np.histogram(y, bins=binsy) + print('mutualinfo', infotheo.mutualinfo(px*1./nobs, py*1./nobs, + 1e-15+pxy*1./nobs, logbase=np.e)) + + print('mutualinfo_kde normed', mutualinfo_kde(y,x)) + print('mutualinfo_kde ', mutualinfo_kde(y,x, normed=False)) + mi_normed, (pyx2, py2, px2, binsy2, binsx2), mi_obs = \ + mutualinfo_binned(y, x, 5, normed=True) + print('mutualinfo_binned normed', mi_normed) + print('mutualinfo_binned ', mi_obs.sum()) + + mi_normed, (pyx2, py2, px2, binsy2, binsx2), mi_obs = \ + mutualinfo_binned(y, x, 'auto', normed=True) + print('auto') + print('mutualinfo_binned normed', mi_normed) + print('mutualinfo_binned ', mi_obs.sum()) + + ys = np.sort(y) + xs = np.sort(x) + by = ys[((nobs-1)*np.array([0, 0.25, 0.4, 0.6, 0.75, 1])).astype(int)] + bx = xs[((nobs-1)*np.array([0, 0.25, 0.4, 0.6, 0.75, 1])).astype(int)] + mi_normed, (pyx2, py2, px2, binsy2, binsx2), mi_obs = \ + mutualinfo_binned(y, x, (by,bx), normed=True) + print('quantiles') + print('mutualinfo_binned normed', mi_normed) + print('mutualinfo_binned ', mi_obs.sum()) + + doplot = 1#False + if doplot: + import matplotlib.pyplot as plt + plt.plot(x, y, 'o') + olsres = sm.OLS(y, exog).fit() + plt.plot(x, olsres.fittedvalues) diff --git a/statsmodels/sandbox/distributions/mv_normal.py b/statsmodels/sandbox/distributions/mv_normal.py new file mode 100644 index 0000000..d7f9b93 --- /dev/null +++ b/statsmodels/sandbox/distributions/mv_normal.py @@ -0,0 +1,1277 @@ +# -*- coding: utf-8 -*- +"""Multivariate Normal and t distributions + + + +Created on Sat May 28 15:38:23 2011 + +@author: Josef Perktold + +TODO: +* renaming, + - after adding t distribution, cov doesn't make sense for Sigma DONE + - should mean also be renamed to mu, if there will be distributions + with mean != mu +* not sure about corner cases + - behavior with (almost) singular sigma or transforms + - df <= 2, is everything correct if variance is not finite or defined ? +* check to return possibly univariate distribution for marginals or conditional + distributions, does univariate special case work? seems ok for conditional +* are all the extra transformation methods useful outside of testing ? + - looks like I have some mixup in definitions of standardize, normalize +* new methods marginal, conditional, ... just added, typos ? + - largely tested for MVNormal, not yet for MVT DONE +* conditional: reusing, vectorizing, should we reuse a projection matrix or + allow for a vectorized, conditional_mean similar to OLS.predict +* add additional things similar to LikelihoodModelResults? quadratic forms, + F distribution, and others ??? +* add Delta method for nonlinear functions here, current function is hidden + somewhere in miscmodels +* raise ValueErrors for wrong input shapes, currently only partially checked + +* quantile method (ppf for equal bounds for multiple testing) is missing + http://svitsrv25.epfl.ch/R-doc/library/mvtnorm/html/qmvt.html seems to use + just a root finder for inversion of cdf + +* normalize has ambiguous definition, and mixing it up in different versions + std from sigma or std from cov ? + I would like to get what I need for mvt-cdf, or not + univariate standard t distribution has scale=1 but std>1 + FIXED: add std_sigma, and normalize uses std_sigma + +* more work: bivariate distributions, + inherit from multivariate but overwrite some methods for better efficiency, + e.g. cdf and expect + +I kept the original MVNormal0 class as reference, can be deleted + + +See Also +-------- +sandbox/examples/ex_mvelliptical.py + +Examples +-------- + +Note, several parts of these examples are random and the numbers will not be +(exactly) the same. + +>>> import numpy as np +>>> import statsmodels.sandbox.distributions.mv_normal as mvd +>>> +>>> from numpy.testing import assert_array_almost_equal +>>> +>>> cov3 = np.array([[ 1. , 0.5 , 0.75], +... [ 0.5 , 1.5 , 0.6 ], +... [ 0.75, 0.6 , 2. ]]) + +>>> mu = np.array([-1, 0.0, 2.0]) + +multivariate normal distribution +-------------------------------- + +>>> mvn3 = mvd.MVNormal(mu, cov3) +>>> mvn3.rvs(size=3) +array([[-0.08559948, -1.0319881 , 1.76073533], + [ 0.30079522, 0.55859618, 4.16538667], + [-1.36540091, -1.50152847, 3.87571161]]) + +>>> mvn3.std +array([ 1. , 1.22474487, 1.41421356]) +>>> a = [0.0, 1.0, 1.5] +>>> mvn3.pdf(a) +0.013867410439318712 +>>> mvn3.cdf(a) +0.31163181123730122 + +Monte Carlo integration + +>>> mvn3.expect_mc(lambda x: (x>> mvn3.expect_mc(lambda x: (x>> mvt3 = mvd.MVT(mu, cov3, 4) +>>> mvt3.rvs(size=4) +array([[-0.94185437, 0.3933273 , 2.40005487], + [ 0.07563648, 0.06655433, 7.90752238], + [ 1.06596474, 0.32701158, 2.03482886], + [ 3.80529746, 7.0192967 , 8.41899229]]) + +>>> mvt3.pdf(a) +0.010402959362646937 +>>> mvt3.cdf(a) +0.30269483623249821 +>>> mvt3.expect_mc(lambda x: (x>> mvt3.cov +array([[ 2. , 1. , 1.5], + [ 1. , 3. , 1.2], + [ 1.5, 1.2, 4. ]]) +>>> mvt3.corr +array([[ 1. , 0.40824829, 0.53033009], + [ 0.40824829, 1. , 0.34641016], + [ 0.53033009, 0.34641016, 1. ]]) + +get normalized distribution + +>>> mvt3n = mvt3.normalized() +>>> mvt3n.sigma +array([[ 1. , 0.40824829, 0.53033009], + [ 0.40824829, 1. , 0.34641016], + [ 0.53033009, 0.34641016, 1. ]]) +>>> mvt3n.cov +array([[ 2. , 0.81649658, 1.06066017], + [ 0.81649658, 2. , 0.69282032], + [ 1.06066017, 0.69282032, 2. ]]) + +What's currently there? + +>>> [i for i in dir(mvn3) if not i[0]=='_'] +['affine_transformed', 'cdf', 'cholsigmainv', 'conditional', 'corr', 'cov', +'expect_mc', 'extra_args', 'logdetsigma', 'logpdf', 'marginal', 'mean', +'normalize', 'normalized', 'normalized2', 'nvars', 'pdf', 'rvs', 'sigma', +'sigmainv', 'standardize', 'standardized', 'std', 'std_sigma', 'whiten'] + +>>> [i for i in dir(mvt3) if not i[0]=='_'] +['affine_transformed', 'cdf', 'cholsigmainv', 'corr', 'cov', 'df', 'expect_mc', +'extra_args', 'logdetsigma', 'logpdf', 'marginal', 'mean', 'normalize', +'normalized', 'normalized2', 'nvars', 'pdf', 'rvs', 'sigma', 'sigmainv', +'standardize', 'standardized', 'std', 'std_sigma', 'whiten'] + +""" +from __future__ import print_function +import numpy as np +from scipy import special + +from statsmodels.sandbox.distributions.multivariate import mvstdtprob +from .extras import mvnormcdf + + +def expect_mc(dist, func=lambda x: 1, size=50000): + '''calculate expected value of function by Monte Carlo integration + + Parameters + ---------- + dist : distribution instance + needs to have rvs defined as a method for drawing random numbers + func : callable + function for which expectation is calculated, this function needs to + be vectorized, integration is over axis=0 + size : int + number of random samples to use in the Monte Carlo integration, + + + Notes + ----- + this doesn't batch + + Returns + ------- + expected value : ndarray + return of function func integrated over axis=0 by MonteCarlo, this will + have the same shape as the return of func without axis=0 + + Examples + -------- + + integrate probability that both observations are negative + + >>> mvn = mve.MVNormal([0,0],2.) + >>> mve.expect_mc(mvn, lambda x: (x>> c = stats.norm.isf(0.05, scale=np.sqrt(2.)) + >>> expect_mc(mvn, lambda x: (np.abs(x)>np.array([c, c])), size=100000) + array([ 0.09969, 0.0986 ]) + + or calling the method + + >>> mvn.expect_mc(lambda x: (np.abs(x)>np.array([c, c])), size=100000) + array([ 0.09937, 0.10075]) + + + ''' + def fun(x): + return func(x) # * dist.pdf(x) + rvs = dist.rvs(size=size) + return fun(rvs).mean(0) + +def expect_mc_bounds(dist, func=lambda x: 1, size=50000, lower=None, upper=None, + conditional=False, overfact=1.2): + '''calculate expected value of function by Monte Carlo integration + + Parameters + ---------- + dist : distribution instance + needs to have rvs defined as a method for drawing random numbers + func : callable + function for which expectation is calculated, this function needs to + be vectorized, integration is over axis=0 + size : int + minimum number of random samples to use in the Monte Carlo integration, + the actual number used can be larger because of oversampling. + lower : None or array_like + lower integration bounds, if None, then it is set to -inf + upper : None or array_like + upper integration bounds, if None, then it is set to +inf + conditional : bool + If true, then the expectation is conditional on being in within + [lower, upper] bounds, otherwise it is unconditional + overfact : float + oversampling factor, the actual number of random variables drawn in + each attempt are overfact * remaining draws. Extra draws are also + used in the integration. + + + Notes + ----- + this doesn't batch + + Returns + ------- + expected value : ndarray + return of function func integrated over axis=0 by MonteCarlo, this will + have the same shape as the return of func without axis=0 + + Examples + -------- + >>> mvn = mve.MVNormal([0,0],2.) + >>> mve.expect_mc_bounds(mvn, lambda x: np.ones(x.shape[0]), + lower=[-10,-10],upper=[0,0]) + 0.24990416666666668 + + get 3 marginal moments with one integration + + >>> mvn = mve.MVNormal([0,0],1.) + >>> mve.expect_mc_bounds(mvn, lambda x: np.dstack([x, x**2, x**3, x**4]), + lower=[-np.inf,-np.inf], upper=[np.inf,np.inf]) + array([[ 2.88629497e-03, 9.96706297e-01, -2.51005344e-03, + 2.95240921e+00], + [ -5.48020088e-03, 9.96004409e-01, -2.23803072e-02, + 2.96289203e+00]]) + >>> from scipy import stats + >>> [stats.norm.moment(i) for i in [1,2,3,4]] + [0.0, 1.0, 0.0, 3.0] + + + ''' + #call rvs once to find length of random vector + rvsdim = dist.rvs(size=1).shape[-1] + if lower is None: + lower = -np.inf * np.ones(rvsdim) + else: + lower = np.asarray(lower) + if upper is None: + upper = np.inf * np.ones(rvsdim) + else: + upper = np.asarray(upper) + + def fun(x): + return func(x) # * dist.pdf(x) + + rvsli = [] + used = 0 #remain = size #inplace changes size + total = 0 + while True: + remain = size - used #just a temp variable + rvs = dist.rvs(size=int(remain * overfact)) + total += int(size * overfact) + + rvsok = rvs[((rvs >= lower) & (rvs <= upper)).all(-1)] + #if rvsok.ndim == 1: #possible shape problems if only 1 random vector + rvsok = np.atleast_2d(rvsok) + used += rvsok.shape[0] + + rvsli.append(rvsok) #[:remain]) use extras instead + print(used) + if used >= size: break + rvs = np.vstack(rvsli) + print(rvs.shape) + assert used == rvs.shape[0] #saftey check + mean_conditional = fun(rvs).mean(0) + if conditional: + return mean_conditional + else: + return mean_conditional * (used * 1. / total) + + +def bivariate_normal(x, mu, cov): + """ + Bivariate Gaussian distribution for equal shape *X*, *Y*. + + See `bivariate normal + `_ + at mathworld. + """ + X, Y = np.transpose(x) + mux, muy = mu + sigmax, sigmaxy, tmp, sigmay = np.ravel(cov) + sigmax, sigmay = np.sqrt(sigmax), np.sqrt(sigmay) + Xmu = X-mux + Ymu = Y-muy + + rho = sigmaxy/(sigmax*sigmay) + z = Xmu**2/sigmax**2 + Ymu**2/sigmay**2 - 2*rho*Xmu*Ymu/(sigmax*sigmay) + denom = 2*np.pi*sigmax*sigmay*np.sqrt(1-rho**2) + return np.exp( -z/(2*(1-rho**2))) / denom + + + +class BivariateNormal(object): + + + #TODO: make integration limits more flexible + # or normalize before integration + + def __init__(self, mean, cov): + self.mean = mu + self.cov = cov + self.sigmax, self.sigmaxy, tmp, self.sigmay = np.ravel(cov) + self.nvars = 2 + + def rvs(self, size=1): + return np.random.multivariate_normal(self.mean, self.cov, size=size) + + def pdf(self, x): + return bivariate_normal(x, self.mean, self.cov) + + def logpdf(self, x): + #TODO: replace this + return np.log(self.pdf(x)) + + def cdf(self, x): + return self.expect(upper=x) + + def expect(self, func=lambda x: 1, lower=(-10,-10), upper=(10,10)): + def fun(x, y): + x = np.column_stack((x,y)) + return func(x) * self.pdf(x) + from scipy.integrate import dblquad + return dblquad(fun, lower[0], upper[0], lambda y: lower[1], + lambda y: upper[1]) + + def kl(self, other): + '''Kullback-Leibler divergence between this and another distribution + + int f(x) (log f(x) - log g(x)) dx + + where f is the pdf of self, and g is the pdf of other + + uses double integration with scipy.integrate.dblquad + + limits currently hardcoded + + ''' + fun = lambda x : self.logpdf(x) - other.logpdf(x) + return self.expect(fun) + + def kl_mc(self, other, size=500000): + fun = lambda x : self.logpdf(x) - other.logpdf(x) + rvs = self.rvs(size=size) + return fun(rvs).mean() + +class MVElliptical(object): + '''Base Class for multivariate elliptical distributions, normal and t + + contains common initialization, and some common methods + subclass needs to implement at least rvs and logpdf methods + + ''' + #getting common things between normal and t distribution + + + def __init__(self, mean, sigma, *args, **kwds): + '''initialize instance + + Parameters + ---------- + mean : array_like + parameter mu (might be renamed), for symmetric distributions this + is the mean + sigma : array_like, 2d + dispersion matrix, covariance matrix in normal distribution, but + only proportional to covariance matrix in t distribution + args : list + distribution specific arguments, e.g. df for t distribution + kwds : dict + currently not used + + ''' + + self.extra_args = [] + self.mean = np.asarray(mean) + self.sigma = sigma = np.asarray(sigma) + sigma = np.squeeze(sigma) + self.nvars = nvars = len(mean) + #self.covchol = np.linalg.cholesky(sigma) + + + #in the following sigma is original, self.sigma is full matrix + if sigma.shape == (): + #iid + self.sigma = np.eye(nvars) * sigma + self.sigmainv = np.eye(nvars) / sigma + self.cholsigmainv = np.eye(nvars) / np.sqrt(sigma) + elif (sigma.ndim == 1) and (len(sigma) == nvars): + #independent heteroscedastic + self.sigma = np.diag(sigma) + self.sigmainv = np.diag(1. / sigma) + self.cholsigmainv = np.diag( 1. / np.sqrt(sigma)) + elif sigma.shape == (nvars, nvars): #python tuple comparison + #general + self.sigmainv = np.linalg.pinv(sigma) + self.cholsigmainv = np.linalg.cholesky(self.sigmainv).T + else: + raise ValueError('sigma has invalid shape') + + #store logdetsigma for logpdf + self.logdetsigma = np.log(np.linalg.det(self.sigma)) + + def rvs(self, size=1): + '''random variable + + Parameters + ---------- + size : int or tuple + the number and shape of random variables to draw. + + Returns + ------- + rvs : ndarray + the returned random variables with shape given by size and the + dimension of the multivariate random vector as additional last + dimension + + + ''' + raise NotImplementedError + + def logpdf(self, x): + '''logarithm of probability density function + + Parameters + ---------- + x : array_like + can be 1d or 2d, if 2d, then each row is taken as independent + multivariate random vector + + Returns + ------- + logpdf : float or array + probability density value of each random vector + + + this should be made to work with 2d x, + with multivariate normal vector in each row and iid across rows + doesn't work now because of dot in whiten + + ''' + + + raise NotImplementedError + + def cdf(self, x, **kwds): + '''cumulative distribution function + + Parameters + ---------- + x : array_like + can be 1d or 2d, if 2d, then each row is taken as independent + multivariate random vector + kwds : dict + contains options for the numerical calculation of the cdf + + Returns + ------- + cdf : float or array + probability density value of each random vector + + ''' + raise NotImplementedError + + + def affine_transformed(self, shift, scale_matrix): + '''affine transformation define in subclass because of distribution + specific restrictions''' + #implemented in subclass at least for now + raise NotImplementedError + + def whiten(self, x): + """ + whiten the data by linear transformation + + Parameters + ---------- + x : array-like, 1d or 2d + Data to be whitened, if 2d then each row contains an independent + sample of the multivariate random vector + + Returns + ------- + np.dot(x, self.cholsigmainv.T) + + Notes + ----- + This only does rescaling, it doesn't subtract the mean, use standardize + for this instead + + See Also + -------- + standardize : subtract mean and rescale to standardized random variable. + + """ + x = np.asarray(x) + return np.dot(x, self.cholsigmainv.T) + + def pdf(self, x): + '''probability density function + + Parameters + ---------- + x : array_like + can be 1d or 2d, if 2d, then each row is taken as independent + multivariate random vector + + Returns + ------- + pdf : float or array + probability density value of each random vector + + ''' + return np.exp(self.logpdf(x)) + + def standardize(self, x): + '''standardize the random variable, i.e. subtract mean and whiten + + Parameters + ---------- + x : array-like, 1d or 2d + Data to be whitened, if 2d then each row contains an independent + sample of the multivariate random vector + + Returns + ------- + np.dot(x - self.mean, self.cholsigmainv.T) + + Notes + ----- + + + See Also + -------- + whiten : rescale random variable, standardize without subtracting mean. + + + ''' + return self.whiten(x - self.mean) + + def standardized(self): + '''return new standardized MVNormal instance + ''' + return self.affine_transformed(-self.mean, self.cholsigmainv) + + + def normalize(self, x): + '''normalize the random variable, i.e. subtract mean and rescale + + The distribution will have zero mean and sigma equal to correlation + + Parameters + ---------- + x : array-like, 1d or 2d + Data to be whitened, if 2d then each row contains an independent + sample of the multivariate random vector + + Returns + ------- + (x - self.mean)/std_sigma + + Notes + ----- + + + See Also + -------- + whiten : rescale random variable, standardize without subtracting mean. + + + ''' + std_ = np.atleast_2d(self.std_sigma) + return (x - self.mean)/std_ #/std_.T + + def normalized(self, demeaned=True): + '''return a normalized distribution where sigma=corr + + if demeaned is True, then mean will be set to zero + + ''' + if demeaned: + mean_new = np.zeros_like(self.mean) + else: + mean_new = self.mean / self.std_sigma + sigma_new = self.corr + args = [getattr(self, ea) for ea in self.extra_args] + return self.__class__(mean_new, sigma_new, *args) + + def normalized2(self, demeaned=True): + '''return a normalized distribution where sigma=corr + + + + second implementation for testing affine transformation + ''' + if demeaned: + shift = -self.mean + else: + shift = self.mean * (1. / self.std_sigma - 1.) + return self.affine_transformed(shift, np.diag(1. / self.std_sigma)) + #the following "standardizes" cov instead + #return self.affine_transformed(shift, self.cholsigmainv) + + + + @property + def std(self): + '''standard deviation, square root of diagonal elements of cov + ''' + return np.sqrt(np.diag(self.cov)) + + @property + def std_sigma(self): + '''standard deviation, square root of diagonal elements of sigma + ''' + return np.sqrt(np.diag(self.sigma)) + + + @property + def corr(self): + '''correlation matrix''' + return self.cov / np.outer(self.std, self.std) + + expect_mc = expect_mc + + def marginal(self, indices): + '''return marginal distribution for variables given by indices + + this should be correct for normal and t distribution + + Parameters + ---------- + indices : array_like, int + list of indices of variables in the marginal distribution + + Returns + ------- + mvdist : instance + new instance of the same multivariate distribution class that + contains the marginal distribution of the variables given in + indices + + ''' + indices = np.asarray(indices) + mean_new = self.mean[indices] + sigma_new = self.sigma[indices[:,None], indices] + args = [getattr(self, ea) for ea in self.extra_args] + return self.__class__(mean_new, sigma_new, *args) + + +#parts taken from linear_model, but heavy adjustments +class MVNormal0(object): + '''Class for Multivariate Normal Distribution + + original full version, kept for testing, new version inherits from + MVElliptical + + uses Cholesky decomposition of covariance matrix for the transformation + of the data + + ''' + + + def __init__(self, mean, cov): + self.mean = mean + self.cov = cov = np.asarray(cov) + cov = np.squeeze(cov) + self.nvars = nvars = len(mean) + + + #in the following cov is original, self.cov is full matrix + if cov.shape == (): + #iid + self.cov = np.eye(nvars) * cov + self.covinv = np.eye(nvars) / cov + self.cholcovinv = np.eye(nvars) / np.sqrt(cov) + elif (cov.ndim == 1) and (len(cov) == nvars): + #independent heteroscedastic + self.cov = np.diag(cov) + self.covinv = np.diag(1. / cov) + self.cholcovinv = np.diag( 1. / np.sqrt(cov)) + elif cov.shape == (nvars, nvars): #python tuple comparison + #general + self.covinv = np.linalg.pinv(cov) + self.cholcovinv = np.linalg.cholesky(self.covinv).T + else: + raise ValueError('cov has invalid shape') + + #store logdetcov for logpdf + self.logdetcov = np.log(np.linalg.det(self.cov)) + + def whiten(self, x): + """ + whiten the data by linear transformation + + Parameters + ---------- + X : array-like, 1d or 2d + Data to be whitened, if 2d then each row contains an independent + sample of the multivariate random vector + + Returns + ------- + np.dot(x, self.cholcovinv.T) + + Notes + ----- + This only does rescaling, it doesn't subtract the mean, use standardize + for this instead + + See Also + -------- + standardize : subtract mean and rescale to standardized random variable. + + """ + x = np.asarray(x) + if np.any(self.cov): + #return np.dot(self.cholcovinv, x) + return np.dot(x, self.cholcovinv.T) + else: + return x + + def rvs(self, size=1): + '''random variable + + Parameters + ---------- + size : int or tuple + the number and shape of random variables to draw. + + Returns + ------- + rvs : ndarray + the returned random variables with shape given by size and the + dimension of the multivariate random vector as additional last + dimension + + Notes + ----- + uses numpy.random.multivariate_normal directly + + ''' + return np.random.multivariate_normal(self.mean, self.cov, size=size) + + def pdf(self, x): + '''probability density function + + Parameters + ---------- + x : array_like + can be 1d or 2d, if 2d, then each row is taken as independent + multivariate random vector + + Returns + ------- + pdf : float or array + probability density value of each random vector + + ''' + + return np.exp(self.logpdf(x)) + + def logpdf(self, x): + '''logarithm of probability density function + + Parameters + ---------- + x : array_like + can be 1d or 2d, if 2d, then each row is taken as independent + multivariate random vector + + Returns + ------- + logpdf : float or array + probability density value of each random vector + + + this should be made to work with 2d x, + with multivariate normal vector in each row and iid across rows + doesn't work now because of dot in whiten + + ''' + x = np.asarray(x) + x_whitened = self.whiten(x - self.mean) + SSR = np.sum(x_whitened**2, -1) + llf = -SSR + llf -= self.nvars * np.log(2. * np.pi) + llf -= self.logdetcov + llf *= 0.5 + return llf + + expect_mc = expect_mc + + +class MVNormal(MVElliptical): + '''Class for Multivariate Normal Distribution + + uses Cholesky decomposition of covariance matrix for the transformation + of the data + + ''' + __name__ == 'Multivariate Normal Distribution' + + + def rvs(self, size=1): + '''random variable + + Parameters + ---------- + size : int or tuple + the number and shape of random variables to draw. + + Returns + ------- + rvs : ndarray + the returned random variables with shape given by size and the + dimension of the multivariate random vector as additional last + dimension + + Notes + ----- + uses numpy.random.multivariate_normal directly + + ''' + return np.random.multivariate_normal(self.mean, self.sigma, size=size) + + def logpdf(self, x): + '''logarithm of probability density function + + Parameters + ---------- + x : array_like + can be 1d or 2d, if 2d, then each row is taken as independent + multivariate random vector + + Returns + ------- + logpdf : float or array + probability density value of each random vector + + + this should be made to work with 2d x, + with multivariate normal vector in each row and iid across rows + doesn't work now because of dot in whiten + + ''' + x = np.asarray(x) + x_whitened = self.whiten(x - self.mean) + SSR = np.sum(x_whitened**2, -1) + llf = -SSR + llf -= self.nvars * np.log(2. * np.pi) + llf -= self.logdetsigma + llf *= 0.5 + return llf + + def cdf(self, x, **kwds): + '''cumulative distribution function + + Parameters + ---------- + x : array_like + can be 1d or 2d, if 2d, then each row is taken as independent + multivariate random vector + kwds : dict + contains options for the numerical calculation of the cdf + + Returns + ------- + cdf : float or array + probability density value of each random vector + + ''' + #lower = -np.inf * np.ones_like(x) + #return mvstdnormcdf(lower, self.standardize(x), self.corr, **kwds) + return mvnormcdf(x, self.mean, self.cov, **kwds) + + @property + def cov(self): + '''covariance matrix''' + return self.sigma + + def affine_transformed(self, shift, scale_matrix): + '''return distribution of an affine transform + + for full rank scale_matrix only + + Parameters + ---------- + shift : array_like + shift of mean + scale_matrix : array_like + linear transformation matrix + + Returns + ------- + mvt : instance of MVT + instance of multivariate t distribution given by affine + transformation + + + Notes + ----- + the affine transformation is defined by + y = a + B x + + where a is shift, + B is a scale matrix for the linear transformation + + Notes + ----- + This should also work to select marginal distributions, but not + tested for this case yet. + + currently only tested because it's called by standardized + + ''' + B = scale_matrix #tmp variable + mean_new = np.dot(B, self.mean) + shift + sigma_new = np.dot(np.dot(B, self.sigma), B.T) + return MVNormal(mean_new, sigma_new) + + def conditional(self, indices, values): + r'''return conditional distribution + + indices are the variables to keep, the complement is the conditioning + set + values are the values of the conditioning variables + + \bar{\mu} = \mu_1 + \Sigma_{12} \Sigma_{22}^{-1} \left( a - \mu_2 \right) + + and covariance matrix + + \overline{\Sigma} = \Sigma_{11} - \Sigma_{12} \Sigma_{22}^{-1} \Sigma_{21}.T + + Parameters + ---------- + indices : array_like, int + list of indices of variables in the marginal distribution + given : array_like + values of the conditioning variables + + Returns + ------- + mvn : instance of MVNormal + new instance of the MVNormal class that contains the conditional + distribution of the variables given in indices for given + values of the excluded variables. + + + ''' + #indices need to be nd arrays for broadcasting + keep = np.asarray(indices) + given = np.asarray([i for i in range(self.nvars) if i not in keep]) + sigmakk = self.sigma[keep[:, None], keep] + sigmagg = self.sigma[given[:, None], given] + sigmakg = self.sigma[keep[:, None], given] + sigmagk = self.sigma[given[:, None], keep] + + + sigma_new = sigmakk - np.dot(sigmakg, np.linalg.solve(sigmagg, sigmagk)) + mean_new = self.mean[keep] + \ + np.dot(sigmakg, np.linalg.solve(sigmagg, values-self.mean[given])) + +# #or +# sig = np.linalg.solve(sigmagg, sigmagk).T +# mean_new = self.mean[keep] + np.dot(sigmakg, values-self.mean[given]) +# sigma_new = sigmakk - np.dot(sigmakg, sig) + return MVNormal(mean_new, sigma_new) + + +#redefine some shortcuts +np_log = np.log +np_pi = np.pi +sps_gamln = special.gammaln + +class MVT(MVElliptical): + + __name__ == 'Multivariate Student T Distribution' + + def __init__(self, mean, sigma, df): + '''initialize instance + + Parameters + ---------- + mean : array_like + parameter mu (might be renamed), for symmetric distributions this + is the mean + sigma : array_like, 2d + dispersion matrix, covariance matrix in normal distribution, but + only proportional to covariance matrix in t distribution + args : list + distribution specific arguments, e.g. df for t distribution + kwds : dict + currently not used + + ''' + super(MVT, self).__init__(mean, sigma) + self.extra_args = ['df'] #overwrites extra_args of super + self.df = df + + def rvs(self, size=1): + '''random variables with Student T distribution + + Parameters + ---------- + size : int or tuple + the number and shape of random variables to draw. + + Returns + ------- + rvs : ndarray + the returned random variables with shape given by size and the + dimension of the multivariate random vector as additional last + dimension + - TODO: Not sure if this works for size tuples with len>1. + + Notes + ----- + generated as a chi-square mixture of multivariate normal random + variables. + does this require df>2 ? + + + ''' + from .multivariate import multivariate_t_rvs + return multivariate_t_rvs(self.mean, self.sigma, df=self.df, n=size) + + + def logpdf(self, x): + '''logarithm of probability density function + + Parameters + ---------- + x : array_like + can be 1d or 2d, if 2d, then each row is taken as independent + multivariate random vector + + Returns + ------- + logpdf : float or array + probability density value of each random vector + + ''' + + x = np.asarray(x) + + df = self.df + nvars = self.nvars + + x_whitened = self.whiten(x - self.mean) #should be float + + llf = - nvars * np_log(df * np_pi) + llf -= self.logdetsigma + llf -= (df + nvars) * np_log(1 + np.sum(x_whitened**2,-1) / df) + llf *= 0.5 + llf += sps_gamln((df + nvars) / 2.) - sps_gamln(df / 2.) + + return llf + + def cdf(self, x, **kwds): + '''cumulative distribution function + + Parameters + ---------- + x : array_like + can be 1d or 2d, if 2d, then each row is taken as independent + multivariate random vector + kwds : dict + contains options for the numerical calculation of the cdf + + Returns + ------- + cdf : float or array + probability density value of each random vector + + ''' + lower = -np.inf * np.ones_like(x) + #std_sigma = np.sqrt(np.diag(self.sigma)) + upper = (x - self.mean)/self.std_sigma + return mvstdtprob(lower, upper, self.corr, self.df, **kwds) + #mvstdtcdf doesn't exist yet + #return mvstdtcdf(lower, x, self.corr, df, **kwds) + + @property + def cov(self): + '''covariance matrix + + The covariance matrix for the t distribution does not exist for df<=2, + and is equal to sigma * df/(df-2) for df>2 + + ''' + if self.df <= 2: + return np.nan * np.ones_like(self.sigma) + else: + return self.df / (self.df - 2.) * self.sigma + + def affine_transformed(self, shift, scale_matrix): + '''return distribution of a full rank affine transform + + for full rank scale_matrix only + + Parameters + ---------- + shift : array_like + shift of mean + scale_matrix : array_like + linear transformation matrix + + Returns + ------- + mvt : instance of MVT + instance of multivariate t distribution given by affine + transformation + + + Notes + ----- + + This checks for eigvals<=0, so there are possible problems for cases + with positive eigenvalues close to zero. + + see: http://www.statlect.com/mcdstu1.htm + + I'm not sure about general case, non-full rank transformation are not + multivariate t distributed. + + y = a + B x + + where a is shift, + B is full rank scale matrix with same dimension as sigma + + ''' + #full rank method could also be in elliptical and called with super + #after the rank check + B = scale_matrix #tmp variable as shorthand + if not B.shape == (self.nvars, self.nvars): + if (np.linalg.eigvals(B) <= 0).any(): + raise ValueError('affine transform has to be full rank') + + mean_new = np.dot(B, self.mean) + shift + sigma_new = np.dot(np.dot(B, self.sigma), B.T) + return MVT(mean_new, sigma_new, self.df) + + +def quad2d(func=lambda x: 1, lower=(-10,-10), upper=(10,10)): + def fun(x, y): + x = np.column_stack((x,y)) + return func(x) + from scipy.integrate import dblquad + return dblquad(fun, lower[0], upper[0], lambda y: lower[1], + lambda y: upper[1]) + +if __name__ == '__main__': + + from numpy.testing import assert_almost_equal, assert_array_almost_equal + + examples = ['mvn'] + + mu = (0,0) + covx = np.array([[1.0, 0.5], [0.5, 1.0]]) + mu3 = [-1, 0., 2.] + cov3 = np.array([[ 1. , 0.5 , 0.75], + [ 0.5 , 1.5 , 0.6 ], + [ 0.75, 0.6 , 2. ]]) + + + if 'mvn' in examples: + bvn = BivariateNormal(mu, covx) + rvs = bvn.rvs(size=1000) + print(rvs.mean(0)) + print(np.cov(rvs, rowvar=0)) + print(bvn.expect()) + print(bvn.cdf([0,0])) + bvn1 = BivariateNormal(mu, np.eye(2)) + bvn2 = BivariateNormal(mu, 4*np.eye(2)) + fun = lambda x : np.log(bvn1.pdf(x)) - np.log(bvn.pdf(x)) + print(bvn1.expect(fun)) + print(bvn1.kl(bvn2), bvn1.kl_mc(bvn2)) + print(bvn2.kl(bvn1), bvn2.kl_mc(bvn1)) + print(bvn1.kl(bvn), bvn1.kl_mc(bvn)) + mvn = MVNormal(mu, covx) + mvn.pdf([0,0]) + mvn.pdf(np.zeros((2,2))) + #np.dot(mvn.cholcovinv.T, mvn.cholcovinv) - mvn.covinv + + cov3 = np.array([[ 1. , 0.5 , 0.75], + [ 0.5 , 1.5 , 0.6 ], + [ 0.75, 0.6 , 2. ]]) + mu3 = [-1, 0., 2.] + mvn3 = MVNormal(mu3, cov3) + mvn3.pdf((0., 2., 3.)) + mvn3.logpdf((0., 2., 3.)) + #comparisons with R mvtnorm::dmvnorm + #decimal=14 +# mvn3.logpdf(cov3) - [-7.667977543898155, -6.917977543898155, -5.167977543898155] +# #decimal 18 +# mvn3.pdf(cov3) - [0.000467562492721686, 0.000989829804859273, 0.005696077243833402] +# #cheating new mean, same cov +# mvn3.mean = np.array([0,0,0]) +# #decimal= 16 +# mvn3.pdf(cov3) - [0.02914269740502042, 0.02269635555984291, 0.01767593948287269] + + #as asserts + r_val = [-7.667977543898155, -6.917977543898155, -5.167977543898155] + assert_array_almost_equal( mvn3.logpdf(cov3), r_val, decimal = 14) + #decimal 18 + r_val = [0.000467562492721686, 0.000989829804859273, 0.005696077243833402] + assert_array_almost_equal( mvn3.pdf(cov3), r_val, decimal = 17) + #cheating new mean, same cov, too dangerous, got wrong instance in tests + #mvn3.mean = np.array([0,0,0]) + mvn3c = MVNormal(np.array([0,0,0]), cov3) + r_val = [0.02914269740502042, 0.02269635555984291, 0.01767593948287269] + assert_array_almost_equal( mvn3c.pdf(cov3), r_val, decimal = 16) + + mvn3b = MVNormal((0,0,0), 1) + fun = lambda x : np.log(mvn3.pdf(x)) - np.log(mvn3b.pdf(x)) + print(mvn3.expect_mc(fun)) + print(mvn3.expect_mc(fun, size=200000)) + + + mvt = MVT((0,0), 1, 5) + assert_almost_equal(mvt.logpdf(np.array([0.,0.])), -1.837877066409345, + decimal=15) + assert_almost_equal(mvt.pdf(np.array([0.,0.])), 0.1591549430918953, + decimal=15) + + mvt.logpdf(np.array([1.,1.]))-(-3.01552989458359) + + mvt1 = MVT((0,0), 1, 1) + mvt1.logpdf(np.array([1.,1.]))-(-3.48579549941151) #decimal=16 + + rvs = mvt.rvs(100000) + assert_almost_equal(np.cov(rvs, rowvar=0), mvt.cov, decimal=1) + + mvt31 = MVT(mu3, cov3, 1) + assert_almost_equal(mvt31.pdf(cov3), + [0.0007276818698165781, 0.0009980625182293658, 0.0027661422056214652], + decimal=18) + + mvt = MVT(mu3, cov3, 3) + assert_almost_equal(mvt.pdf(cov3), + [0.000863777424247410, 0.001277510788307594, 0.004156314279452241], + decimal=17) diff --git a/statsmodels/sandbox/distributions/otherdist.py b/statsmodels/sandbox/distributions/otherdist.py new file mode 100644 index 0000000..1b06bf1 --- /dev/null +++ b/statsmodels/sandbox/distributions/otherdist.py @@ -0,0 +1,308 @@ +'''Parametric Mixture Distributions + +Created on Sat Jun 04 2011 + +Author: Josef Perktold + + +Notes: + +Compound Poisson has mass point at zero +http://en.wikipedia.org/wiki/Compound_Poisson_distribution +and would need special treatment + +need a distribution that has discrete mass points and contiuous range, e.g. +compound Poisson, Tweedie (for some parameter range), +pdf of Tobit model (?) - truncation with clipping + +Question: Metaclasses and class factories for generating new distributions from +existing distributions by transformation, mixing, compounding + +''' + + +from __future__ import print_function +import numpy as np +from scipy import stats + +class ParametricMixtureD(object): + '''mixtures with a discrete distribution + + The mixing distribution is a discrete distribution like scipy.stats.poisson. + All distribution in the mixture of the same type and parameterized + by the outcome of the mixing distribution and have to be a continuous + distribution (or have a pdf method). + As an example, a mixture of normal distributed random variables with + Poisson as the mixing distribution. + + + assumes vectorized shape, loc and scale as in scipy.stats.distributions + + assume mixing_dist is frozen + + initialization looks fragile for all possible cases of lower and upper + bounds of the distributions. + + ''' + def __init__(self, mixing_dist, base_dist, bd_args_func, bd_kwds_func, + cutoff=1e-3): + '''create a mixture distribution + + Parameters + ---------- + mixing_dist : discrete frozen distribution + mixing distribution + base_dist : continuous distribution + parameterized distributions in the mixture + bd_args_func : callable + function that builds the tuple of args for the base_dist. + The function obtains as argument the values in the support of + the mixing distribution and should return an empty tuple or + a tuple of arrays. + bd_kwds_func : callable + function that builds the dictionary of kwds for the base_dist. + The function obtains as argument the values in the support of + the mixing distribution and should return an empty dictionary or + a dictionary with arrays as values. + cutoff : float + If the mixing distribution has infinite support, then the + distribution is truncated with approximately (subject to integer + conversion) the cutoff probability in the missing tail. Random + draws that are outside the truncated range are clipped, that is + assigned to the highest or lowest value in the truncated support. + + ''' + self.mixing_dist = mixing_dist + self.base_dist = base_dist + #self.bd_args = bd_args + if not np.isneginf(mixing_dist.dist.a): + lower = mixing_dist.dist.a + else: + lower = mixing_dist.ppf(1e-4) + if not np.isposinf(mixing_dist.dist.b): + upper = mixing_dist.dist.b + else: + upper = mixing_dist.isf(1e-4) + self.ma = lower + self.mb = upper + mixing_support = np.arange(lower, upper+1) + self.mixing_probs = mixing_dist.pmf(mixing_support) + + self.bd_args = bd_args_func(mixing_support) + self.bd_kwds = bd_kwds_func(mixing_support) + + def rvs(self, size=1): + mrvs = self.mixing_dist.rvs(size) + #TODO: check strange cases ? this assumes continous integers + mrvs_idx = (np.clip(mrvs, self.ma, self.mb) - self.ma).astype(int) + + bd_args = tuple(md[mrvs_idx] for md in self.bd_args) + bd_kwds = dict((k, self.bd_kwds[k][mrvs_idx]) for k in self.bd_kwds) + kwds = {'size':size} + kwds.update(bd_kwds) + rvs = self.base_dist.rvs(*self.bd_args, **kwds) + return rvs, mrvs_idx + + + + + + def pdf(self, x): + x = np.asarray(x) + if np.size(x) > 1: + x = x[...,None] #[None, ...] + bd_probs = self.base_dist.pdf(x, *self.bd_args, **self.bd_kwds) + prob = (bd_probs * self.mixing_probs).sum(-1) + return prob, bd_probs + + def cdf(self, x): + x = np.asarray(x) + if np.size(x) > 1: + x = x[...,None] #[None, ...] + bd_probs = self.base_dist.cdf(x, *self.bd_args, **self.bd_kwds) + prob = (bd_probs * self.mixing_probs).sum(-1) + return prob, bd_probs + + +#try: + +class ClippedContinuous(object): + '''clipped continuous distribution with a masspoint at clip_lower + + + Notes + ----- + first version, to try out possible designs + insufficient checks for valid arguments and not clear + whether it works for distributions that have compact support + + clip_lower is fixed and independent of the distribution parameters. + The clip_lower point in the pdf has to be interpreted as a mass point, + i.e. different treatment in integration and expect function, which means + none of the generic methods for this can be used. + + maybe this will be better designed as a mixture between a degenerate or + discrete and a continuous distribution + + Warning: uses equality to check for clip_lower values in function + arguments, since these are floating points, the comparison might fail + if clip_lower values are not exactly equal. + We could add a check whether the values are in a small neighborhood, but + it would be expensive (need to search and check all values). + + ''' + + def __init__(self, base_dist, clip_lower): + self.base_dist = base_dist + self.clip_lower = clip_lower + + def _get_clip_lower(self, kwds): + '''helper method to get clip_lower from kwds or attribute + + ''' + if 'clip_lower' not in kwds: + clip_lower = self.clip_lower + else: + clip_lower = kwds.pop('clip_lower') + return clip_lower, kwds + + def rvs(self, *args, **kwds): + clip_lower, kwds = self._get_clip_lower(kwds) + rvs_ = self.base_dist.rvs(*args, **kwds) + #same as numpy.clip ? + rvs_[rvs_ < clip_lower] = clip_lower + return rvs_ + + + + def pdf(self, x, *args, **kwds): + x = np.atleast_1d(x) + if 'clip_lower' not in kwds: + clip_lower = self.clip_lower + else: + #allow clip_lower to be a possible parameter + clip_lower = kwds.pop('clip_lower') + pdf_raw = np.atleast_1d(self.base_dist.pdf(x, *args, **kwds)) + clip_mask = (x == self.clip_lower) + if np.any(clip_mask): + clip_prob = self.base_dist.cdf(clip_lower, *args, **kwds) + pdf_raw[clip_mask] = clip_prob + + #the following will be handled by sub-classing rv_continuous + pdf_raw[x < clip_lower] = 0 + + return pdf_raw + + def cdf(self, x, *args, **kwds): + if 'clip_lower' not in kwds: + clip_lower = self.clip_lower + else: + #allow clip_lower to be a possible parameter + clip_lower = kwds.pop('clip_lower') + cdf_raw = self.base_dist.cdf(x, *args, **kwds) + + #not needed if equality test is used +## clip_mask = (x == self.clip_lower) +## if np.any(clip_mask): +## clip_prob = self.base_dist.cdf(clip_lower, *args, **kwds) +## pdf_raw[clip_mask] = clip_prob + + #the following will be handled by sub-classing rv_continuous + #if self.a is defined + cdf_raw[x < clip_lower] = 0 + + return cdf_raw + + def sf(self, x, *args, **kwds): + if 'clip_lower' not in kwds: + clip_lower = self.clip_lower + else: + #allow clip_lower to be a possible parameter + clip_lower = kwds.pop('clip_lower') + + sf_raw = self.base_dist.sf(x, *args, **kwds) + sf_raw[x <= clip_lower] = 1 + + return sf_raw + + + def ppf(self, x, *args, **kwds): + raise NotImplementedError + + def plot(self, x, *args, **kwds): + + clip_lower, kwds = self._get_clip_lower(kwds) + mass = self.pdf(clip_lower, *args, **kwds) + xr = np.concatenate(([clip_lower+1e-6], x[x>clip_lower])) + import matplotlib.pyplot as plt + #x = np.linspace(-4, 4, 21) + #plt.figure() + plt.xlim(clip_lower-0.1, x.max()) + #remove duplicate calculation + xpdf = self.pdf(x, *args, **kwds) + plt.ylim(0, max(mass, xpdf.max())*1.1) + plt.plot(xr, self.pdf(xr, *args, **kwds)) + #plt.vline(clip_lower, self.pdf(clip_lower, *args, **kwds)) + plt.stem([clip_lower], [mass], + linefmt='b-', markerfmt='bo', basefmt='r-') + return + + + + +if __name__ == '__main__': + + doplots = 1 + + #*********** Poisson-Normal Mixture + mdist = stats.poisson(2.) + bdist = stats.norm + bd_args_fn = lambda x: () + #bd_kwds_fn = lambda x: {'loc': np.atleast_2d(10./(1+x))} + bd_kwds_fn = lambda x: {'loc': x, 'scale': 0.1*np.ones_like(x)} #10./(1+x)} + + + pd = ParametricMixtureD(mdist, bdist, bd_args_fn, bd_kwds_fn) + print(pd.pdf(1)) + p, bp = pd.pdf(np.linspace(0,20,21)) + pc, bpc = pd.cdf(np.linspace(0,20,21)) + print(pd.rvs()) + rvs, m = pd.rvs(size=1000) + + + if doplots: + import matplotlib.pyplot as plt + plt.hist(rvs, bins = 100) + plt.title('poisson mixture of normal distributions') + + #********** clipped normal distribution (Tobit) + + bdist = stats.norm + clip_lower_ = 0. #-0.5 + cnorm = ClippedContinuous(bdist, clip_lower_) + x = np.linspace(1e-8, 4, 11) + print(cnorm.pdf(x)) + print(cnorm.cdf(x)) + + if doplots: + #plt.figure() + #cnorm.plot(x) + plt.figure() + cnorm.plot(x = np.linspace(-1, 4, 51), loc=0.5, scale=np.sqrt(2)) + plt.title('clipped normal distribution') + + fig = plt.figure() + for i, loc in enumerate([0., 0.5, 1.,2.]): + fig.add_subplot(2,2,i+1) + cnorm.plot(x = np.linspace(-1, 4, 51), loc=loc, scale=np.sqrt(2)) + plt.title('clipped normal, loc = %3.2f' % loc) + + + loc = 1.5 + rvs = cnorm.rvs(loc=loc, size=2000) + plt.figure() + plt.hist(rvs, bins=50) + plt.title('clipped normal rvs, loc = %3.2f' % loc) + + + #plt.show() diff --git a/statsmodels/sandbox/distributions/quantize.py b/statsmodels/sandbox/distributions/quantize.py new file mode 100644 index 0000000..254d2a2 --- /dev/null +++ b/statsmodels/sandbox/distributions/quantize.py @@ -0,0 +1,142 @@ +'''Quantizing a continuous distribution in 2d + +Author: josef-pktd +''' +from __future__ import print_function +from statsmodels.compat.python import range, lmap +import numpy as np + +def prob_bv_rectangle(lower, upper, cdf): + '''helper function for probability of a rectangle in a bivariate distribution + + Parameters + ---------- + lower : array_like + tuple of lower integration bounds + upper : array_like + tuple of upper integration bounds + cdf : callable + cdf(x,y), cumulative distribution function of bivariate distribution + + + how does this generalize to more than 2 variates ? + ''' + probuu = cdf(*upper) + probul = cdf(upper[0], lower[1]) + problu = cdf(lower[0], upper[1]) + probll = cdf(*lower) + return probuu - probul - problu + probll + +def prob_mv_grid(bins, cdf, axis=-1): + '''helper function for probability of a rectangle grid in a multivariate distribution + + how does this generalize to more than 2 variates ? + + bins : tuple + tuple of bin edges, currently it is assumed that they broadcast + correctly + + ''' + if not isinstance(bins, np.ndarray): + bins = lmap(np.asarray, bins) + n_dim = len(bins) + bins_ = [] + #broadcast if binedges are 1d + if all(lmap(np.ndim, bins) == np.ones(n_dim)): + for d in range(n_dim): + sl = [None]*n_dim + sl[d] = slice(None) + bins_.append(bins[d][sl]) + else: #assume it is already correctly broadcasted + n_dim = bins.shape[0] + bins_ = bins + + print(len(bins)) + cdf_values = cdf(bins_) + probs = cdf_values.copy() + for d in range(n_dim): + probs = np.diff(probs, axis=d) + + return probs + + +def prob_quantize_cdf(binsx, binsy, cdf): + '''quantize a continuous distribution given by a cdf + + Parameters + ---------- + binsx : array_like, 1d + binedges + + ''' + binsx = np.asarray(binsx) + binsy = np.asarray(binsy) + nx = len(binsx) - 1 + ny = len(binsy) - 1 + probs = np.nan * np.ones((nx, ny)) #np.empty(nx,ny) + cdf_values = cdf(binsx[:,None], binsy) + cdf_func = lambda x, y: cdf_values[x,y] + for xind in range(1, nx+1): + for yind in range(1, ny+1): + upper = (xind, yind) + lower = (xind-1, yind-1) + #print upper,lower, + probs[xind-1,yind-1] = prob_bv_rectangle(lower, upper, cdf_func) + + assert not np.isnan(probs).any() + return probs + +def prob_quantize_cdf_old(binsx, binsy, cdf): + '''quantize a continuous distribution given by a cdf + + old version without precomputing cdf values + + Parameters + ---------- + binsx : array_like, 1d + binedges + + ''' + binsx = np.asarray(binsx) + binsy = np.asarray(binsy) + nx = len(binsx) - 1 + ny = len(binsy) - 1 + probs = np.nan * np.ones((nx, ny)) #np.empty(nx,ny) + for xind in range(1, nx+1): + for yind in range(1, ny+1): + upper = (binsx[xind], binsy[yind]) + lower = (binsx[xind-1], binsy[yind-1]) + #print upper,lower, + probs[xind-1,yind-1] = prob_bv_rectangle(lower, upper, cdf) + + assert not np.isnan(probs).any() + return probs + + + + +if __name__ == '__main__': + from numpy.testing import assert_almost_equal + unif_2d = lambda x,y: x*y + assert_almost_equal(prob_bv_rectangle([0,0], [1,0.5], unif_2d), 0.5, 14) + assert_almost_equal(prob_bv_rectangle([0,0], [0.5,0.5], unif_2d), 0.25, 14) + + arr1b = np.array([[ 0.05, 0.05, 0.05, 0.05], + [ 0.05, 0.05, 0.05, 0.05], + [ 0.05, 0.05, 0.05, 0.05], + [ 0.05, 0.05, 0.05, 0.05], + [ 0.05, 0.05, 0.05, 0.05]]) + + arr1a = prob_quantize_cdf(np.linspace(0,1,6), np.linspace(0,1,5), unif_2d) + assert_almost_equal(arr1a, arr1b, 14) + + arr2b = np.array([[ 0.25], + [ 0.25], + [ 0.25], + [ 0.25]]) + arr2a = prob_quantize_cdf(np.linspace(0,1,5), np.linspace(0,1,2), unif_2d) + assert_almost_equal(arr2a, arr2b, 14) + + arr3b = np.array([[ 0.25, 0.25, 0.25, 0.25]]) + arr3a = prob_quantize_cdf(np.linspace(0,1,2), np.linspace(0,1,5), unif_2d) + assert_almost_equal(arr3a, arr3b, 14) diff --git a/statsmodels/sandbox/distributions/sppatch.py b/statsmodels/sandbox/distributions/sppatch.py new file mode 100644 index 0000000..b6abe66 --- /dev/null +++ b/statsmodels/sandbox/distributions/sppatch.py @@ -0,0 +1,728 @@ +'''patching scipy to fit distributions and expect method + +This adds new methods to estimate continuous distribution parameters with some +fixed/frozen parameters. It also contains functions that calculate the expected +value of a function for any continuous or discrete distribution + +It temporarily also contains Bootstrap and Monte Carlo function for testing the +distribution fit, but these are neither general nor verified. + +Author: josef-pktd +License: Simplified BSD +''' +from __future__ import print_function +from statsmodels.compat.python import range, lmap +import numpy as np +from scipy import stats, optimize, integrate + + +########## patching scipy + +#vonmises doesn't define finite bounds, because it is intended for circular +#support which does not define a proper pdf on the real line + +stats.distributions.vonmises.a = -np.pi +stats.distributions.vonmises.b = np.pi + +#the next 3 functions are for fit with some fixed parameters +#As they are written, they do not work as functions, only as methods + +def _fitstart(self, x): + '''example method, method of moment estimator as starting values + + Parameters + ---------- + x : array + data for which the parameters are estimated + + Returns + ------- + est : tuple + preliminary estimates used as starting value for fitting, not + necessarily a consistent estimator + + Notes + ----- + This needs to be written and attached to each individual distribution + + This example was written for the gamma distribution, but not verified + with literature + + ''' + loc = np.min([x.min(),0]) + a = 4/stats.skew(x)**2 + scale = np.std(x) / np.sqrt(a) + return (a, loc, scale) + +def _fitstart_beta(self, x, fixed=None): + '''method of moment estimator as starting values for beta distribution + + Parameters + ---------- + x : array + data for which the parameters are estimated + fixed : None or array_like + sequence of numbers and np.nan to indicate fixed parameters and parameters + to estimate + + Returns + ------- + est : tuple + preliminary estimates used as starting value for fitting, not + necessarily a consistent estimator + + Notes + ----- + This needs to be written and attached to each individual distribution + + References + ---------- + for method of moment estimator for known loc and scale + http://en.wikipedia.org/wiki/Beta_distribution#Parameter_estimation + http://www.itl.nist.gov/div898/handbook/eda/section3/eda366h.htm + NIST reference also includes reference to MLE in + Johnson, Kotz, and Balakrishan, Volume II, pages 221-235 + + ''' + #todo: separate out this part to be used for other compact support distributions + # e.g. rdist, vonmises, and truncnorm + # but this might not work because it might still be distribution specific + a, b = x.min(), x.max() + eps = (a-b)*0.01 + if fixed is None: + #this part not checked with books + loc = a - eps + scale = (a - b) * (1 + 2*eps) + else: + if np.isnan(fixed[-2]): + #estimate loc + loc = a - eps + else: + loc = fixed[-2] + if np.isnan(fixed[-1]): + #estimate scale + scale = (b + eps) - loc + else: + scale = fixed[-1] + + #method of moment for known loc scale: + scale = float(scale) + xtrans = (x - loc)/scale + xm = xtrans.mean() + xv = xtrans.var() + tmp = (xm*(1-xm)/xv - 1) + p = xm * tmp + q = (1 - xm) * tmp + + return (p, q, loc, scale) #check return type and should fixed be returned ? + +def _fitstart_poisson(self, x, fixed=None): + '''maximum likelihood estimator as starting values for Poisson distribution + + Parameters + ---------- + x : array + data for which the parameters are estimated + fixed : None or array_like + sequence of numbers and np.nan to indicate fixed parameters and parameters + to estimate + + Returns + ------- + est : tuple + preliminary estimates used as starting value for fitting, not + necessarily a consistent estimator + + Notes + ----- + This needs to be written and attached to each individual distribution + + References + ---------- + MLE : + http://en.wikipedia.org/wiki/Poisson_distribution#Maximum_likelihood + + ''' + #todo: separate out this part to be used for other compact support distributions + # e.g. rdist, vonmises, and truncnorm + # but this might not work because it might still be distribution specific + a = x.min() + eps = 0 # is this robust ? + if fixed is None: + #this part not checked with books + loc = a - eps + else: + if np.isnan(fixed[-1]): + #estimate loc + loc = a - eps + else: + loc = fixed[-1] + + #MLE for standard (unshifted, if loc=0) Poisson distribution + + xtrans = (x - loc) + lambd = xtrans.mean() + #second derivative d loglike/ dlambd Not used + #dlldlambd = 1/lambd # check + + return (lambd, loc) #check return type and should fixed be returned ? + + +def nnlf_fr(self, thetash, x, frmask): + # new frozen version + # - sum (log pdf(x, theta),axis=0) + # where theta are the parameters (including loc and scale) + # + try: + if frmask is not None: + theta = frmask.copy() + theta[np.isnan(frmask)] = thetash + else: + theta = thetash + loc = theta[-2] + scale = theta[-1] + args = tuple(theta[:-2]) + except IndexError: + raise ValueError("Not enough input arguments.") + if not self._argcheck(*args) or scale <= 0: + return np.inf + x = np.array((x-loc) / scale) + cond0 = (x <= self.a) | (x >= self.b) + if (np.any(cond0)): + return np.inf + else: + N = len(x) + #raise ValueError + return self._nnlf(x, *args) + N*np.log(scale) + +def fit_fr(self, data, *args, **kwds): + '''estimate distribution parameters by MLE taking some parameters as fixed + + Parameters + ---------- + data : array, 1d + data for which the distribution parameters are estimated, + args : list ? check + starting values for optimization + kwds : + + - 'frozen' : array_like + values for frozen distribution parameters and, for elements with + np.nan, the corresponding parameter will be estimated + + Returns + ------- + argest : array + estimated parameters + + + Examples + -------- + generate random sample + >>> np.random.seed(12345) + >>> x = stats.gamma.rvs(2.5, loc=0, scale=1.2, size=200) + + estimate all parameters + >>> stats.gamma.fit(x) + array([ 2.0243194 , 0.20395655, 1.44411371]) + >>> stats.gamma.fit_fr(x, frozen=[np.nan, np.nan, np.nan]) + array([ 2.0243194 , 0.20395655, 1.44411371]) + + keep loc fixed, estimate shape and scale parameters + >>> stats.gamma.fit_fr(x, frozen=[np.nan, 0.0, np.nan]) + array([ 2.45603985, 1.27333105]) + + keep loc and scale fixed, estimate shape parameter + >>> stats.gamma.fit_fr(x, frozen=[np.nan, 0.0, 1.0]) + array([ 3.00048828]) + >>> stats.gamma.fit_fr(x, frozen=[np.nan, 0.0, 1.2]) + array([ 2.57792969]) + + estimate only scale parameter for fixed shape and loc + >>> stats.gamma.fit_fr(x, frozen=[2.5, 0.0, np.nan]) + array([ 1.25087891]) + + Notes + ----- + self is an instance of a distribution class. This can be attached to + scipy.stats.distributions.rv_continuous + + *Todo* + + * check if docstring is correct + * more input checking, args is list ? might also apply to current fit method + + ''' + loc0, scale0 = lmap(kwds.get, ['loc', 'scale'],[0.0, 1.0]) + Narg = len(args) + + if Narg == 0 and hasattr(self, '_fitstart'): + x0 = self._fitstart(data) + elif Narg > self.numargs: + raise ValueError("Too many input arguments.") + else: + args += (1.0,)*(self.numargs-Narg) + # location and scale are at the end + x0 = args + (loc0, scale0) + + if 'frozen' in kwds: + frmask = np.array(kwds['frozen']) + if len(frmask) != self.numargs+2: + raise ValueError("Incorrect number of frozen arguments.") + else: + # keep starting values for not frozen parameters + for n in range(len(frmask)): + # Troubleshooting ex_generic_mle_tdist + if isinstance(frmask[n], np.ndarray) and frmask[n].size == 1: + frmask[n] = frmask[n].item() + + # If there were array elements, then frmask will be object-dtype, + # in which case np.isnan will raise TypeError + frmask = frmask.astype(np.float64) + x0 = np.array(x0)[np.isnan(frmask)] + else: + frmask = None + + #print(x0 + #print(frmask + return optimize.fmin(self.nnlf_fr, x0, + args=(np.ravel(data), frmask), disp=0) + + +#The next two functions/methods calculate expected value of an arbitrary +#function, however for the continuous functions intquad is use, which might +#require continuouity or smoothness in the function. + + +#TODO: add option for Monte Carlo integration + +def expect(self, fn=None, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False): + '''calculate expected value of a function with respect to the distribution + + location and scale only tested on a few examples + + Parameters + ---------- + all parameters are keyword parameters + fn : function (default: identity mapping) + Function for which integral is calculated. Takes only one argument. + args : tuple + argument (parameters) of the distribution + lb, ub : numbers + lower and upper bound for integration, default is set to the support + of the distribution + conditional : boolean (False) + If true then the integral is corrected by the conditional probability + of the integration interval. The return value is the expectation + of the function, conditional on being in the given interval. + + Returns + ------- + expected value : float + + Notes + ----- + This function has not been checked for it's behavior when the integral is + not finite. The integration behavior is inherited from scipy.integrate.quad. + + ''' + if fn is None: + def fun(x, *args): + return x*self.pdf(x, loc=loc, scale=scale, *args) + else: + def fun(x, *args): + return fn(x)*self.pdf(x, loc=loc, scale=scale, *args) + if lb is None: + lb = loc + self.a * scale #(self.a - loc)/(1.0*scale) + if ub is None: + ub = loc + self.b * scale #(self.b - loc)/(1.0*scale) + if conditional: + invfac = (self.sf(lb, loc=loc, scale=scale, *args) + - self.sf(ub, loc=loc, scale=scale, *args)) + else: + invfac = 1.0 + return integrate.quad(fun, lb, ub, + args=args)[0]/invfac + + +def expect_v2(self, fn=None, args=(), loc=0, scale=1, lb=None, ub=None, conditional=False): + '''calculate expected value of a function with respect to the distribution + + location and scale only tested on a few examples + + Parameters + ---------- + all parameters are keyword parameters + fn : function (default: identity mapping) + Function for which integral is calculated. Takes only one argument. + args : tuple + argument (parameters) of the distribution + lb, ub : numbers + lower and upper bound for integration, default is set using + quantiles of the distribution, see Notes + conditional : boolean (False) + If true then the integral is corrected by the conditional probability + of the integration interval. The return value is the expectation + of the function, conditional on being in the given interval. + + Returns + ------- + expected value : float + + Notes + ----- + This function has not been checked for it's behavior when the integral is + not finite. The integration behavior is inherited from scipy.integrate.quad. + + The default limits are lb = self.ppf(1e-9, *args), ub = self.ppf(1-1e-9, *args) + + For some heavy tailed distributions, 'alpha', 'cauchy', 'halfcauchy', + 'levy', 'levy_l', and for 'ncf', the default limits are not set correctly + even when the expectation of the function is finite. In this case, the + integration limits, lb and ub, should be chosen by the user. For example, + for the ncf distribution, ub=1000 works in the examples. + + There are also problems with numerical integration in some other cases, + for example if the distribution is very concentrated and the default limits + are too large. + + ''' + #changes: 20100809 + #correction and refactoring how loc and scale are handled + #uses now _pdf + #needs more testing for distribution with bound support, e.g. genpareto + + if fn is None: + def fun(x, *args): + return (loc + x*scale)*self._pdf(x, *args) + else: + def fun(x, *args): + return fn(loc + x*scale)*self._pdf(x, *args) + if lb is None: + #lb = self.a + try: + lb = self.ppf(1e-9, *args) #1e-14 quad fails for pareto + except ValueError: + lb = self.a + else: + lb = max(self.a, (lb - loc)/(1.0*scale)) #transform to standardized + if ub is None: + #ub = self.b + try: + ub = self.ppf(1-1e-9, *args) + except ValueError: + ub = self.b + else: + ub = min(self.b, (ub - loc)/(1.0*scale)) + if conditional: + invfac = self._sf(lb,*args) - self._sf(ub,*args) + else: + invfac = 1.0 + return integrate.quad(fun, lb, ub, + args=args, limit=500)[0]/invfac + +### for discrete distributions + +#TODO: check that for a distribution with finite support the calculations are +# done with one array summation (np.dot) + +#based on _drv2_moment(self, n, *args), but streamlined +def expect_discrete(self, fn=None, args=(), loc=0, lb=None, ub=None, + conditional=False): + '''calculate expected value of a function with respect to the distribution + for discrete distribution + + Parameters + ---------- + (self : distribution instance as defined in scipy stats) + fn : function (default: identity mapping) + Function for which integral is calculated. Takes only one argument. + args : tuple + argument (parameters) of the distribution + optional keyword parameters + lb, ub : numbers + lower and upper bound for integration, default is set to the support + of the distribution, lb and ub are inclusive (ul<=k<=ub) + conditional : boolean (False) + If true then the expectation is corrected by the conditional + probability of the integration interval. The return value is the + expectation of the function, conditional on being in the given + interval (k such that ul<=k<=ub). + + Returns + ------- + expected value : float + + Notes + ----- + * function is not vectorized + * accuracy: uses self.moment_tol as stopping criterium + for heavy tailed distribution e.g. zipf(4), accuracy for + mean, variance in example is only 1e-5, + increasing precision (moment_tol) makes zipf very slow + * suppnmin=100 internal parameter for minimum number of points to evaluate + could be added as keyword parameter, to evaluate functions with + non-monotonic shapes, points include integers in (-suppnmin, suppnmin) + * uses maxcount=1000 limits the number of points that are evaluated + to break loop for infinite sums + (a maximum of suppnmin+1000 positive plus suppnmin+1000 negative integers + are evaluated) + + + ''' + + #moment_tol = 1e-12 # increase compared to self.moment_tol, + # too slow for only small gain in precision for zipf + + #avoid endless loop with unbound integral, eg. var of zipf(2) + maxcount = 1000 + suppnmin = 100 #minimum number of points to evaluate (+ and -) + + if fn is None: + def fun(x): + #loc and args from outer scope + return (x+loc)*self._pmf(x, *args) + else: + def fun(x): + #loc and args from outer scope + return fn(x+loc)*self._pmf(x, *args) + # used pmf because _pmf does not check support in randint + # and there might be problems(?) with correct self.a, self.b at this stage + # maybe not anymore, seems to work now with _pmf + + self._argcheck(*args) # (re)generate scalar self.a and self.b + if lb is None: + lb = (self.a) + else: + lb = lb - loc + + if ub is None: + ub = (self.b) + else: + ub = ub - loc + if conditional: + invfac = self.sf(lb,*args) - self.sf(ub+1,*args) + else: + invfac = 1.0 + + tot = 0.0 + low, upp = self._ppf(0.001, *args), self._ppf(0.999, *args) + low = max(min(-suppnmin, low), lb) + upp = min(max(suppnmin, upp), ub) + supp = np.arange(low, upp+1, self.inc) #check limits + #print('low, upp', low, upp + tot = np.sum(fun(supp)) + diff = 1e100 + pos = upp + self.inc + count = 0 + + #handle cases with infinite support + + while (pos <= ub) and (diff > self.moment_tol) and count <= maxcount: + diff = fun(pos) + tot += diff + pos += self.inc + count += 1 + + if self.a < 0: #handle case when self.a = -inf + diff = 1e100 + pos = low - self.inc + while (pos >= lb) and (diff > self.moment_tol) and count <= maxcount: + diff = fun(pos) + tot += diff + pos -= self.inc + count += 1 + if count > maxcount: + # replace with proper warning + print('sum did not converge') + return tot/invfac + +stats.distributions.rv_continuous.fit_fr = fit_fr +stats.distributions.rv_continuous.nnlf_fr = nnlf_fr +stats.distributions.rv_continuous.expect = expect +stats.distributions.rv_discrete.expect = expect_discrete +stats.distributions.beta_gen._fitstart = _fitstart_beta #not tried out yet +stats.distributions.poisson_gen._fitstart = _fitstart_poisson #not tried out yet + +########## end patching scipy + + +def distfitbootstrap(sample, distr, nrepl=100): + '''run bootstrap for estimation of distribution parameters + + hard coded: only one shape parameter is allowed and estimated, + loc=0 and scale=1 are fixed in the estimation + + Parameters + ---------- + sample : array + original sample data for bootstrap + distr : distribution instance with fit_fr method + nrepl : integer + number of bootstrap replications + + Returns + ------- + res : array (nrepl,) + parameter estimates for all bootstrap replications + + ''' + nobs = len(sample) + res = np.zeros(nrepl) + for ii in range(nrepl): + rvsind = np.random.randint(nobs, size=nobs) + x = sample[rvsind] + res[ii] = distr.fit_fr(x, frozen=[np.nan, 0.0, 1.0]) + return res + +def distfitmc(sample, distr, nrepl=100, distkwds={}): + '''run Monte Carlo for estimation of distribution parameters + + hard coded: only one shape parameter is allowed and estimated, + loc=0 and scale=1 are fixed in the estimation + + Parameters + ---------- + sample : array + original sample data, in Monte Carlo only used to get nobs, + distr : distribution instance with fit_fr method + nrepl : integer + number of Monte Carlo replications + + Returns + ------- + res : array (nrepl,) + parameter estimates for all Monte Carlo replications + + ''' + arg = distkwds.pop('arg') + nobs = len(sample) + res = np.zeros(nrepl) + for ii in range(nrepl): + x = distr.rvs(arg, size=nobs, **distkwds) + res[ii] = distr.fit_fr(x, frozen=[np.nan, 0.0, 1.0]) + return res + + +def printresults(sample, arg, bres, kind='bootstrap'): + '''calculate and print(Bootstrap or Monte Carlo result + + Parameters + ---------- + sample : array + original sample data + arg : float (for general case will be array) + bres : array + parameter estimates from Bootstrap or Monte Carlo run + kind : {'bootstrap', 'montecarlo'} + output is printed for Mootstrap (default) or Monte Carlo + + Returns + ------- + None, currently only printing + + Notes + ----- + still a bit a mess because it is used for both Bootstrap and Monte Carlo + + made correction: + reference point for bootstrap is estimated parameter + + not clear: + I'm not doing any ddof adjustment in estimation of variance, do we + need ddof>0 ? + + todo: return results and string instead of printing + + ''' + print('true parameter value') + print(arg) + print('MLE estimate of parameters using sample (nobs=%d)'% (nobs)) + argest = distr.fit_fr(sample, frozen=[np.nan, 0.0, 1.0]) + print(argest) + if kind == 'bootstrap': + #bootstrap compares to estimate from sample + argorig = arg + arg = argest + + print('%s distribution of parameter estimate (nrepl=%d)'% (kind, nrepl)) + print('mean = %f, bias=%f' % (bres.mean(0), bres.mean(0)-arg)) + print('median', np.median(bres, axis=0)) + print('var and std', bres.var(0), np.sqrt(bres.var(0))) + bmse = ((bres - arg)**2).mean(0) + print('mse, rmse', bmse, np.sqrt(bmse)) + bressorted = np.sort(bres) + print('%s confidence interval (90%% coverage)' % kind) + print(bressorted[np.floor(nrepl*0.05)], bressorted[np.floor(nrepl*0.95)]) + print('%s confidence interval (90%% coverage) normal approximation' % kind) + print(stats.norm.ppf(0.05, loc=bres.mean(), scale=bres.std()),) + print(stats.norm.isf(0.05, loc=bres.mean(), scale=bres.std())) + print('Kolmogorov-Smirnov test for normality of %s distribution' % kind) + print(' - estimated parameters, p-values not really correct') + print(stats.kstest(bres, 'norm', (bres.mean(), bres.std()))) + + +if __name__ == '__main__': + + examplecases = ['largenumber', 'bootstrap', 'montecarlo'][:] + + if 'largenumber' in examplecases: + + print('\nDistribution: vonmises') + + for nobs in [200]:#[20000, 1000, 100]: + x = stats.vonmises.rvs(1.23, loc=0, scale=1, size=nobs) + print('\nnobs:', nobs) + print('true parameter') + print('1.23, loc=0, scale=1') + print('unconstraint') + print(stats.vonmises.fit(x)) + print(stats.vonmises.fit_fr(x, frozen=[np.nan, np.nan, np.nan])) + print('with fixed loc and scale') + print(stats.vonmises.fit_fr(x, frozen=[np.nan, 0.0, 1.0])) + + print('\nDistribution: gamma') + distr = stats.gamma + arg, loc, scale = 2.5, 0., 20. + + for nobs in [200]:#[20000, 1000, 100]: + x = distr.rvs(arg, loc=loc, scale=scale, size=nobs) + print('\nnobs:', nobs) + print('true parameter') + print('%f, loc=%f, scale=%f' % (arg, loc, scale)) + print('unconstraint') + print(distr.fit(x)) + print(distr.fit_fr(x, frozen=[np.nan, np.nan, np.nan])) + print('with fixed loc and scale') + print(distr.fit_fr(x, frozen=[np.nan, 0.0, 1.0])) + print('with fixed loc') + print(distr.fit_fr(x, frozen=[np.nan, 0.0, np.nan])) + + + ex = ['gamma', 'vonmises'][0] + + if ex == 'gamma': + distr = stats.gamma + arg, loc, scale = 2.5, 0., 1 + elif ex == 'vonmises': + distr = stats.vonmises + arg, loc, scale = 1.5, 0., 1 + else: + raise ValueError('wrong example') + + nobs = 100 + nrepl = 1000 + + sample = distr.rvs(arg, loc=loc, scale=scale, size=nobs) + + print('\nDistribution:', distr) + if 'bootstrap' in examplecases: + print('\nBootstrap') + bres = distfitbootstrap(sample, distr, nrepl=nrepl ) + printresults(sample, arg, bres) + + if 'montecarlo' in examplecases: + print('\nMonteCarlo') + mcres = distfitmc(sample, distr, nrepl=nrepl, + distkwds=dict(arg=arg, loc=loc, scale=scale)) + printresults(sample, arg, mcres, kind='montecarlo') diff --git a/statsmodels/sandbox/distributions/tests/__init__.py b/statsmodels/sandbox/distributions/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/sandbox/distributions/tests/_est_fit.py b/statsmodels/sandbox/distributions/tests/_est_fit.py new file mode 100644 index 0000000..7a9f897 --- /dev/null +++ b/statsmodels/sandbox/distributions/tests/_est_fit.py @@ -0,0 +1,68 @@ +# NOTE: contains only one test, _est_cont_fit, that is renamed so that +# the test runner doesn't run it +# I put this here for the record and for the case when someone wants to +# verify the quality of fit +# with current parameters: relatively small sample size, default starting values +# Ran 84 tests in 401.797s +# FAILED (failures=15) + + +import numpy as np + +from scipy import stats + +from .distparams import distcont + +# this is not a proper statistical test for convergence, but only +# verifies that the estimate and true values don't differ by too much +n_repl1 = 1000 # sample size for first run +n_repl2 = 5000 # sample size for second run, if first run fails +thresh_percent = 0.25 # percent of true parameters for fail cut-off +thresh_min = 0.75 # minimum difference estimate - true to fail test + +#distcont = [['genextreme', (3.3184017469423535,)]] + +def _est_cont_fit(): + # this tests the closeness of the estimated parameters to the true + # parameters with fit method of continuous distributions + # Note: is slow, some distributions don't converge with sample size <= 10000 + + for distname, arg in distcont: + yield check_cont_fit, distname,arg + + +def check_cont_fit(distname,arg): + distfn = getattr(stats, distname) + rvs = distfn.rvs(size=n_repl1,*arg) + est = distfn.fit(rvs) #,*arg) # start with default values + + truearg = np.hstack([arg,[0.0,1.0]]) + diff = est-truearg + + txt = '' + diffthreshold = np.max(np.vstack([truearg*thresh_percent, + np.ones(distfn.numargs+2)*thresh_min]),0) + # threshold for location + diffthreshold[-2] = np.max([np.abs(rvs.mean())*thresh_percent,thresh_min]) + + if np.any(np.isnan(est)): + raise AssertionError('nan returned in fit') + else: + if np.any((np.abs(diff) - diffthreshold) > 0.0): +## txt = 'WARNING - diff too large with small sample' +## print 'parameter diff =', diff - diffthreshold, txt + rvs = np.concatenate([rvs,distfn.rvs(size=n_repl2-n_repl1,*arg)]) + est = distfn.fit(rvs) #,*arg) + truearg = np.hstack([arg,[0.0,1.0]]) + diff = est-truearg + if np.any((np.abs(diff) - diffthreshold) > 0.0): + txt = 'parameter: %s\n' % str(truearg) + txt += 'estimated: %s\n' % str(est) + txt += 'diff : %s\n' % str(diff) + raise AssertionError('fit not very good in %s\n' % distfn.name + txt) + + + +if __name__ == "__main__": + import pytest + pytest.main([__file__, '-vvs', '-x', '--pdb']) diff --git a/statsmodels/sandbox/distributions/tests/check_moments.py b/statsmodels/sandbox/distributions/tests/check_moments.py new file mode 100644 index 0000000..6ba46f2 --- /dev/null +++ b/statsmodels/sandbox/distributions/tests/check_moments.py @@ -0,0 +1,159 @@ +'''script to test expect and moments in distributions.stats method + +not written as a test, prints results, renamed to prevent test runner from running it + + +''' +from statsmodels.compat.python import iteritems +import numpy as np +from scipy import stats +#from statsmodels.stats.moment_helpers import mnc2mvsk +from statsmodels.sandbox.distributions.sppatch import expect_v2 + +from .distparams import distcont + + +specialcases = {'ncf':{'ub':1000} # diverges if it's too large, checked for mean + } + +#next functions are copies from sm.stats.moment_helpers +def mc2mvsk(args): + '''convert central moments to mean, variance, skew, kurtosis + ''' + mc, mc2, mc3, mc4 = args + skew = np.divide(mc3, mc2**1.5) + kurt = np.divide(mc4, mc2**2.0) - 3.0 + return (mc, mc2, skew, kurt) + +def mnc2mvsk(args): + '''convert central moments to mean, variance, skew, kurtosis + ''' + #convert four non-central moments to central moments + mnc, mnc2, mnc3, mnc4 = args + mc = mnc + mc2 = mnc2 - mnc*mnc + mc3 = mnc3 - (3*mc*mc2+mc**3) # 3rd central moment + mc4 = mnc4 - (4*mc*mc3+6*mc*mc*mc2+mc**4) + return mc2mvsk((mc, mc2, mc3, mc4)) + +def mom_nc0(x): + return 1. + +def mom_nc1(x): + return x + +def mom_nc2(x): + return x*x + +def mom_nc3(x): + return x*x*x + +def mom_nc4(x): + return np.power(x,4) + +res = {} +distex = [] +distlow = [] +distok = [] +distnonfinite = [] + +def check_cont_basic(): + #results saved in module global variable + + for distname, distargs in distcont[:]: + #if distname not in distex_0: continue + distfn = getattr(stats, distname) +## np.random.seed(765456) +## sn = 1000 +## rvs = distfn.rvs(size=sn,*arg) +## sm = rvs.mean() +## sv = rvs.var() +## skurt = stats.kurtosis(rvs) +## sskew = stats.skew(rvs) + m,v,s,k = distfn.stats(*distargs, **dict(moments='mvsk')) + st = np.array([m,v,s,k]) + mask = np.isfinite(st) + if mask.sum() < 4: + distnonfinite.append(distname) + print(distname) + #print 'stats ', m,v,s,k + expect = distfn.expect + expect = lambda *args, **kwds : expect_v2(distfn, *args, **kwds) + + special_kwds = specialcases.get(distname, {}) + mnc0 = expect(mom_nc0, args=distargs, **special_kwds) + mnc1 = expect(args=distargs, **special_kwds) + mnc2 = expect(mom_nc2, args=distargs, **special_kwds) + mnc3 = expect(mom_nc3, args=distargs, **special_kwds) + mnc4 = expect(mom_nc4, args=distargs, **special_kwds) + + mnc1_lc = expect(args=distargs, loc=1, scale=2, **special_kwds) + #print mnc1, mnc2, mnc3, mnc4 + try: + me, ve, se, ke = mnc2mvsk((mnc1, mnc2, mnc3, mnc4)) + except: + print('exception', mnc1, mnc2, mnc3, mnc4, st) + me, ve, se, ke = [np.nan]*4 + if mask.size > 0: + distex.append(distname) + #print 'expect', me, ve, se, ke, + #print mnc1, mnc2, mnc3, mnc4 + + em = np.array([me, ve, se, ke]) + + diff = st[mask] - em[mask] + print(diff, mnc1_lc - (1 + 2*mnc1)) + if np.size(diff)>0 and np.max(np.abs(diff)) > 1e-3: + distlow.append(distname) + else: + distok.append(distname) + + res[distname] = [mnc0, st, em, diff, mnc1_lc] + +def nct_kurt_bug(): + '''test for incorrect kurtosis of nct + + D. Hogben, R. S. Pinkham, M. B. Wilk: The Moments of the Non-Central + t-DistributionAuthor(s): Biometrika, Vol. 48, No. 3/4 (Dec., 1961), + pp. 465-468 + ''' + from numpy.testing import assert_almost_equal + mvsk_10_1 = (1.08372, 1.325546, 0.39993, 1.2499424941142943) + assert_almost_equal(stats.nct.stats(10, 1, moments='mvsk'), mvsk_10_1, decimal=6) + c1=np.array([1.08372]) + c2=np.array([.0755460, 1.25000]) + c3 = np.array([.0297802, .580566]) + c4 = np.array([0.0425458, 1.17491, 6.25]) + + #calculation for df=10, for arbitrary nc + nc = 1 + mc1 = c1.item() + mc2 = (c2*nc**np.array([2,0])).sum() + mc3 = (c3*nc**np.array([3,1])).sum() + mc4 = c4=np.array([0.0425458, 1.17491, 6.25]) + mvsk_nc = mc2mvsk((mc1,mc2,mc3,mc4)) + +if __name__ == '__main__': + + check_cont_basic() + #print [(k, v[0]) for k,v in iteritems(res) if np.abs(v[0]-1)>1e-3] + #print [(k, v[2][0], 1+2*v[2][0]) for k,v in iteritems(res) if np.abs(v[-1]-(1+2*v[2][0]))>1e-3] + mean_ = [(k, v[1][0], v[2][0]) for k,v in iteritems(res) + if np.abs(v[1][0] - v[2][0])>1e-6 and np.isfinite(v[1][0])] + var_ = [(k, v[1][1], v[2][1]) for k,v in iteritems(res) + if np.abs(v[1][1] - v[2][1])>1e-2 and np.isfinite(v[1][1])] + skew = [(k, v[1][2], v[2][2]) for k,v in iteritems(res) + if np.abs(v[1][2] - v[2][2])>1e-2 and np.isfinite(v[1][1])] + kurt = [(k, v[1][3], v[2][3]) for k,v in iteritems(res) + if np.abs(v[1][3] - v[2][3])>1e-2 and np.isfinite(v[1][1])] + + from statsmodels.iolib import SimpleTable + if len(mean_) > 0: + print('\nMean difference at least 1e-6') + print(SimpleTable(mean_, headers=['distname', 'diststats', 'expect'])) + print('\nVariance difference at least 1e-2') + print(SimpleTable(var_, headers=['distname', 'diststats', 'expect'])) + print('\nSkew difference at least 1e-2') + print(SimpleTable(skew, headers=['distname', 'diststats', 'expect'])) + print('\nKurtosis difference at least 1e-2') + print(SimpleTable(kurt, headers=['distname', 'diststats', 'expect'])) diff --git a/statsmodels/sandbox/distributions/tests/distparams.py b/statsmodels/sandbox/distributions/tests/distparams.py new file mode 100644 index 0000000..19b11ae --- /dev/null +++ b/statsmodels/sandbox/distributions/tests/distparams.py @@ -0,0 +1,121 @@ + + +distcont = [ + ['alpha', (3.5704770516650459,)], + ['anglit', ()], + ['arcsine', ()], + ['beta', (2.3098496451481823, 0.62687954300963677)], + ['betaprime', (5, 6)], # avoid unbound error in entropy with (100, 86)], + ['bradford', (0.29891359763170633,)], + ['burr', (10.5, 4.3)], #incorrect mean and var for(0.94839838075366045, 4.3820284068855795)], + ['cauchy', ()], + ['chi', (78,)], + ['chi2', (55,)], + ['cosine', ()], + ['dgamma', (1.1023326088288166,)], + ['dweibull', (2.0685080649914673,)], + ['erlang', (20,)], #correction numargs = 1 + ['expon', ()], + ['exponpow', (2.697119160358469,)], + ['exponweib', (2.8923945291034436, 1.9505288745913174)], + ['f', (29, 18)], + #['fatiguelife', (29,)], #correction numargs = 1, variance very large + ['fatiguelife', (2,)], + ['fisk', (3.0857548622253179,)], + ['foldcauchy', (4.7164673455831894,)], + ['foldnorm', (1.9521253373555869,)], + ['frechet_l', (3.6279911255583239,)], + ['frechet_r', (1.8928171603534227,)], + ['gamma', (1.9932305483800778,)], + ['gausshyper', (13.763771604130699, 3.1189636648681431, + 2.5145980350183019, 5.1811649903971615)], #veryslow + ['genexpon', (9.1325976465418908, 16.231956600590632, 3.2819552690843983)], + ['genextreme', (-0.1,)], # sample mean test fails for (3.3184017469423535,)], + ['gengamma', (4.4162385429431925, 3.1193091679242761)], + ['genhalflogistic', (0.77274727809929322,)], + ['genlogistic', (0.41192440799679475,)], + ['genpareto', (0.1,)], # use case with finite moments + ['gilbrat', ()], + ['gompertz', (0.94743713075105251,)], + ['gumbel_l', ()], + ['gumbel_r', ()], + ['halfcauchy', ()], + ['halflogistic', ()], + ['halfnorm', ()], + ['hypsecant', ()], + #['invgamma', (2.0668996136993067,)], #convergence problem with expect + #['invgamma', (3.0,)], + ['invgamma', (5.0,)], #kurtosis requires alpha > 4 + ['invnorm', (0.14546264555347513,)], + ['invweibull', (10.58,)], # sample mean test fails at(0.58847112119264788,)] + ['johnsonsb', (4.3172675099141058, 3.1837781130785063)], + ['johnsonsu', (2.554395574161155, 2.2482281679651965)], + ['ksone', (1000,)], #replace 22 by 100 to avoid failing range, ticket 956 + ['kstwobign', ()], + ['laplace', ()], + ['levy', ()], + ['levy_l', ()], +# ['levy_stable', (0.35667405469844993, +# -0.67450531578494011)], #NotImplementedError + # rvs not tested + ['loggamma', (0.41411931826052117,)], + ['logistic', ()], + ['loglaplace', (3.2505926592051435,)], + ['lognorm', (0.95368226960575331,)], + ['lomax', (1.8771398388773268,)], #this has infinite variance + ['lomax', (10,)], #first 4 moments are finite + ['maxwell', ()], + ['mielke', (10.4, 3.6)], # sample mean test fails for (4.6420495492121487, 0.59707419545516938)], + # mielke: good results if 2nd parameter >2, weird mean or var below + ['nakagami', (4.9673794866666237,)], + ['ncf', (27, 27, 0.41578441799226107)], + ['nct', (14, 0.24045031331198066)], + ['ncx2', (21, 1.0560465975116415)], + ['norm', ()], + ['pareto', (2.621716532144454,)], + ['powerlaw', (1.6591133289905851,)], + ['powerlognorm', (2.1413923530064087, 0.44639540782048337)], + ['powernorm', (4.4453652254590779,)], + ['rayleigh', ()], + ['rdist', (0.9,)], # feels also slow +# ['rdist', (3.8266985793976525,)], #veryslow, especially rvs + #['rdist', (541.0,)], # from ticket #758 #veryslow + ['recipinvgauss', (0.63004267809369119,)], + ['reciprocal', (0.0062309367010521255, 1.0062309367010522)], + ['rice', (0.7749725210111873,)], + ['semicircular', ()], + ['t', (2.7433514990818093,)], + ['triang', (0.15785029824528218,)], + ['truncexpon', (4.6907725456810478,)], + ['truncnorm', (-1.0978730080013919, 2.7306754109031979)], + ['tukeylambda', (3.1321477856738267,)], + ['uniform', ()], + ['vonmises', (3.9939042581071398,)], + ['wald', ()], + ['weibull_max', (2.8687961709100187,)], + ['weibull_min', (1.7866166930421596,)], + ['wrapcauchy', (0.031071279018614728,)]] + +distdiscrete = [ + ['bernoulli',(0.3,)], + ['binom', (5, 0.4)], + ['boltzmann',(1.4, 19)], + ['dlaplace', (0.8,)], #0.5 + ['geom', (0.5,)], + ['hypergeom',(30, 12, 6)], + ['hypergeom',(21,3,12)], #numpy.random (3,18,12) numpy ticket:921 + ['hypergeom',(21,18,11)], #numpy.random (18,3,11) numpy ticket:921 + ['logser', (0.6,)], # reenabled, numpy ticket:921 + ['nbinom', (5, 0.5)], + ['nbinom', (0.4, 0.4)], #from tickets: 583 + ['planck', (0.51,)], #4.1 + ['poisson', (0.6,)], + ['randint', (7, 31)], + ['skellam', (15, 8)], + ['zipf', (4,)] ] # arg=4 is ok, + # Zipf broken for arg = 2, e.g. weird .stats + # looking closer, mean, var should be inf for arg=2 + +distslow = ['rdist', 'gausshyper', 'recipinvgauss', 'ksone', 'genexpon', + 'vonmises', 'rice', 'mielke', 'semicircular', 'cosine', 'invweibull', + 'powerlognorm', 'johnsonsu', 'kstwobign'] diff --git a/statsmodels/sandbox/distributions/tests/test_extras.py b/statsmodels/sandbox/distributions/tests/test_extras.py new file mode 100644 index 0000000..0f5cd62 --- /dev/null +++ b/statsmodels/sandbox/distributions/tests/test_extras.py @@ -0,0 +1,118 @@ +# -*- coding: utf-8 -*- +""" +Created on Sun Apr 17 22:13:36 2011 + +@author: josef +""" + +import numpy as np +from numpy.testing import assert_, assert_almost_equal + +from statsmodels.sandbox.distributions.extras import (skewnorm, + skewnorm2, ACSkewT_gen) + + +def test_skewnorm(): + #library("sn") + #dsn(c(-2,-1,0,1,2), shape=10) + #psn(c(-2,-1,0,1,2), shape=10) + #noquote(sprintf("%.15e,", snp)) + pdf_r = np.array([2.973416551551523e-90, 3.687562713971017e-24, + 3.989422804014327e-01, 4.839414490382867e-01, + 1.079819330263761e-01]) + pdf_sn = skewnorm.pdf([-2,-1,0,1,2], 10) + + #res = (snp-snp_r)/snp + assert_(np.allclose(pdf_sn, pdf_r,rtol=1e-13, atol=0)) + + pdf_sn2 = skewnorm2.pdf([-2,-1,0,1,2], 10) + assert_(np.allclose(pdf_sn2, pdf_r, rtol=1e-13, atol=0)) + + + cdf_r = np.array([0.000000000000000e+00, 0.000000000000000e+00, + 3.172551743055357e-02, 6.826894921370859e-01, + 9.544997361036416e-01]) + cdf_sn = skewnorm.cdf([-2,-1,0,1,2], 10) + maxabs = np.max(np.abs(cdf_sn - cdf_r)) + maxrel = np.max(np.abs(cdf_sn - cdf_r)/(cdf_r+1e-50)) + msg = "maxabs=%15.13g, maxrel=%15.13g\n%r\n%r" % (maxabs, maxrel, cdf_sn, + cdf_r) + #assert_(np.allclose(cdf_sn, cdf_r, rtol=1e-13, atol=1e-25), msg=msg) + assert_almost_equal(cdf_sn, cdf_r, decimal=10) + + cdf_sn2 = skewnorm2.cdf([-2,-1,0,1,2], 10) + maxabs = np.max(np.abs(cdf_sn2 - cdf_r)) + maxrel = np.max(np.abs(cdf_sn2 - cdf_r)/(cdf_r+1e-50)) + msg = "maxabs=%15.13g, maxrel=%15.13g" % (maxabs, maxrel) + #assert_(np.allclose(cdf_sn2, cdf_r, rtol=1e-13, atol=1e-25), msg=msg) + assert_almost_equal(cdf_sn2, cdf_r, decimal=10, err_msg=msg) + + +def test_skewt(): + skewt = ACSkewT_gen() + x = [-2, -1, -0.5, 0, 1, 2] + #noquote(sprintf("%.15e,", dst(c(-2,-1, -0.5,0,1,2), shape=10))) + #default in R:sn is df=inf + pdf_r = np.array([2.973416551551523e-90, 3.687562713971017e-24, + 2.018401586422970e-07, 3.989422804014327e-01, + 4.839414490382867e-01, 1.079819330263761e-01]) + pdf_st = skewt.pdf(x, 1000000, 10) + pass + np.allclose(pdf_st, pdf_r, rtol=0, atol=1e-6) + np.allclose(pdf_st, pdf_r, rtol=1e-1, atol=0) + + + #noquote(sprintf("%.15e,", pst(c(-2,-1, -0.5,0,1,2), shape=10))) + cdf_r = np.array([0.000000000000000e+00, 0.000000000000000e+00, + 3.729478836866917e-09, 3.172551743055357e-02, + 6.826894921370859e-01, 9.544997361036416e-01]) + cdf_st = skewt.cdf(x, 1000000, 10) + np.allclose(cdf_st, cdf_r, rtol=0, atol=1e-6) + np.allclose(cdf_st, cdf_r, rtol=1e-1, atol=0) + #assert_(np.allclose(cdf_st, cdf_r, rtol=1e-13, atol=1e-15)) + + + #noquote(sprintf("%.15e,", dst(c(-2,-1, -0.5,0,1,2), shape=10, df=5))) + pdf_r = np.array([2.185448836190663e-07, 1.272381597868587e-05, + 5.746937644959992e-04, 3.796066898224945e-01, + 4.393468708859825e-01, 1.301804021075493e-01]) + pdf_st = skewt.pdf(x, 5, 10) #args = (df, alpha) + assert_(np.allclose(pdf_st, pdf_r, rtol=1e-13, atol=1e-25)) + + #noquote(sprintf("%.15e,", pst(c(-2,-1, -0.5,0,1,2), shape=10, df=5))) + cdf_r = np.array([8.822783669199699e-08, 2.638467463775795e-06, + 6.573106017198583e-05, 3.172551743055352e-02, + 6.367851708183412e-01, 8.980606093979784e-01]) + cdf_st = skewt.cdf(x, 5, 10) #args = (df, alpha) + assert_(np.allclose(cdf_st, cdf_r, rtol=1e-10, atol=0)) + + + #noquote(sprintf("%.15e,", dst(c(-2,-1, -0.5,0,1,2), shape=10, df=1))) + pdf_r = np.array([3.941955996757291e-04, 1.568067236862745e-03, + 6.136996029432048e-03, 3.183098861837907e-01, + 3.167418189469279e-01, 1.269297588738406e-01]) + pdf_st = skewt.pdf(x, 1, 10) #args = (df, alpha) = (1, 10)) + assert_(np.allclose(pdf_st, pdf_r, rtol=1e-13, atol=1e-25)) + + #noquote(sprintf("%.15e,", pst(c(-2,-1, -0.5,0,1,2), shape=10, df=1))) + cdf_r = np.array([7.893671370544414e-04, 1.575817262600422e-03, + 3.128720749105560e-03, 3.172551743055351e-02, + 5.015758172626005e-01, 7.056221318361879e-01]) + cdf_st = skewt.cdf(x, 1, 10) #args = (df, alpha) = (1, 10) + assert_(np.allclose(cdf_st, cdf_r, rtol=1e-13, atol=1e-25)) + + + +if __name__ == '__main__': + import pytest + pytest.main([__file__, '-vvs', '-x', '--pdb']) + print('Done') + + +''' +>>> skewt.pdf([-2,-1,0,1,2], 10000000, 10) +array([ 2.98557345e-90, 3.68850289e-24, 3.98942271e-01, + 4.83941426e-01, 1.07981952e-01]) +>>> skewt.pdf([-2,-1,0,1,2], np.inf, 10) +array([ nan, nan, nan, nan, nan]) +''' diff --git a/statsmodels/sandbox/distributions/tests/test_gof_new.py b/statsmodels/sandbox/distributions/tests/test_gof_new.py new file mode 100644 index 0000000..8fc3b2b --- /dev/null +++ b/statsmodels/sandbox/distributions/tests/test_gof_new.py @@ -0,0 +1,27 @@ +import numpy as np +from numpy.testing import assert_array_almost_equal + +from statsmodels.sandbox.distributions.gof_new import bootstrap, NewNorm + + +def test_loop_vectorized_batch_equivalence(): + # test equality of loop, vectorized, batch-vectorized + nobs = 200 + + np.random.seed(8765679) + resu1 = bootstrap(NewNorm(), args=(0, 1), nobs=nobs, nrep=100, + value=0.576/(1 + 4./nobs - 25./nobs**2)) + + np.random.seed(8765679) + tmp = [bootstrap(NewNorm(), args=(0, 1), nobs=nobs, nrep=1) + for _ in range(100)] + resu2 = (np.array(tmp) > 0.576/(1 + 4./nobs - 25./nobs**2)).mean() + + np.random.seed(8765679) + tmp = [bootstrap(NewNorm(), args=(0, 1), nobs=nobs, nrep=1, + value=0.576/(1 + 4./nobs - 25./nobs**2), + batch_size=10) for _ in range(10)] + resu3 = np.array(tmp).mean() + + assert_array_almost_equal(resu1, resu2, 15) + assert_array_almost_equal(resu2, resu3, 15) diff --git a/statsmodels/sandbox/distributions/tests/test_multivariate.py b/statsmodels/sandbox/distributions/tests/test_multivariate.py new file mode 100644 index 0000000..3fd6f56 --- /dev/null +++ b/statsmodels/sandbox/distributions/tests/test_multivariate.py @@ -0,0 +1,176 @@ +# -*- coding: utf-8 -*- +""" +Created on Sat Apr 16 15:02:13 2011 +@author: Josef Perktold +""" +import numpy as np +from numpy.testing import (assert_almost_equal, assert_array_almost_equal, + assert_allclose) + +from statsmodels.sandbox.distributions.multivariate import ( + mvstdtprob, mvstdnormcdf) +from statsmodels.sandbox.distributions.mv_normal import MVT, MVNormal + + +class Test_MVN_MVT_prob(object): + #test for block integratal, cdf, of multivariate t and normal + #comparison results from R + + @classmethod + def setup_class(cls): + cls.corr_equal = np.asarray([[1.0, 0.5, 0.5],[0.5,1,0.5],[0.5,0.5,1]]) + cls.a = -1 * np.ones(3) + cls.b = 3 * np.ones(3) + cls.df = 4 + + corr2 = cls.corr_equal.copy() + corr2[2,1] = -0.5 + cls.corr2 = corr2 + + def test_mvn_mvt_1(self): + a, b = self.a, self.b + df = self.df + corr_equal = self.corr_equal + #result from R, mvtnorm with option + #algorithm = GenzBretz(maxpts = 100000, abseps = 0.000001, releps = 0) + # or higher + probmvt_R = 0.60414 #report, ed error approx. 7.5e-06 + probmvn_R = 0.673970 #reported error approx. 6.4e-07 + assert_almost_equal(probmvt_R, mvstdtprob(a, b, corr_equal, df), 4) + assert_almost_equal(probmvn_R, + mvstdnormcdf(a, b, corr_equal, abseps=1e-5), 4) + + mvn_high = mvstdnormcdf(a, b, corr_equal, abseps=1e-8, maxpts=10000000) + assert_almost_equal(probmvn_R, mvn_high, 5) + #this still barely fails sometimes at 6 why?? error is -7.2627419411830374e-007 + #>>> 0.67396999999999996 - 0.67397072627419408 + #-7.2627419411830374e-007 + #>>> assert_almost_equal(0.67396999999999996, 0.67397072627419408, 6) + #Fail + + def test_mvn_mvt_2(self): + a, b = self.a, self.b + df = self.df + corr2 = self.corr2 + + probmvn_R = 0.6472497 #reported error approx. 7.7e-08 + probmvt_R = 0.5881863 #highest reported error up to approx. 1.99e-06 + assert_almost_equal(probmvt_R, mvstdtprob(a, b, corr2, df), 4) + assert_almost_equal(probmvn_R, mvstdnormcdf(a, b, corr2, abseps=1e-5), 4) + + def test_mvn_mvt_3(self): + a, b = self.a, self.b + df = self.df + corr2 = self.corr2 + + a2 = a.copy() + a2[:] = -np.inf + # using higher precision in R, error approx. 6.866163e-07 + probmvn_R = 0.9961141 + # using higher precision in R, error approx. 1.6e-07 + probmvt_R = 0.9522146 + quadkwds = {'epsabs': 1e-08} + probmvt = mvstdtprob(a2, b, corr2, df, quadkwds=quadkwds) + assert_allclose(probmvt_R, probmvt, atol=5e-4) + probmvn = mvstdnormcdf(a2, b, corr2, maxpts=100000, abseps=1e-5) + assert_allclose(probmvn_R, probmvn, atol=1e-4) + + def test_mvn_mvt_4(self): + a, bl = self.a, self.b + df = self.df + corr2 = self.corr2 + + #from 0 to inf + #print '0 inf' + a2 = a.copy() + a2[:] = -np.inf + probmvn_R = 0.1666667 #error approx. 6.1e-08 + probmvt_R = 0.1666667 #error approx. 8.2e-08 + assert_almost_equal(probmvt_R, mvstdtprob(np.zeros(3), -a2, corr2, df), 4) + assert_almost_equal(probmvn_R, + mvstdnormcdf(np.zeros(3), -a2, corr2, + maxpts=100000, abseps=1e-5), 4) + + def test_mvn_mvt_5(self): + a, bl = self.a, self.b + df = self.df + corr2 = self.corr2 + + #unequal integration bounds + #print "ue" + a3 = np.array([0.5, -0.5, 0.5]) + probmvn_R = 0.06910487 #using higher precision in R, error approx. 3.5e-08 + probmvt_R = 0.05797867 #using higher precision in R, error approx. 5.8e-08 + assert_almost_equal(mvstdtprob(a3, a3+1, corr2, df), probmvt_R, 4) + assert_almost_equal(probmvn_R, mvstdnormcdf(a3, a3+1, corr2, + maxpts=100000, abseps=1e-5), 4) + + +class TestMVDistributions(object): + #this is not well organized + + @classmethod + def setup_class(cls): + covx = np.array([[1.0, 0.5], [0.5, 1.0]]) + mu3 = [-1, 0., 2.] + cov3 = np.array([[ 1. , 0.5 , 0.75], + [ 0.5 , 1.5 , 0.6 ], + [ 0.75, 0.6 , 2. ]]) + cls.mu3 = mu3 + cls.cov3 = cov3 + + mvn3 = MVNormal(mu3, cov3) + mvn3c = MVNormal(np.array([0,0,0]), cov3) + cls.mvn3 = mvn3 + cls.mvn3c = mvn3c + + def test_mvn_pdf(self): + cov3 = self.cov3 + mvn3 = self.mvn3 + + r_val = [-7.667977543898155, -6.917977543898155, -5.167977543898155] + assert_array_almost_equal(mvn3.logpdf(cov3), r_val, decimal=14) + # decimal 18 + r_val = [0.000467562492721686, 0.000989829804859273, + 0.005696077243833402] + assert_array_almost_equal(mvn3.pdf(cov3), r_val, decimal=17) + + mvn3b = MVNormal(np.array([0, 0, 0]), cov3) + r_val = [0.02914269740502042, 0.02269635555984291, 0.01767593948287269] + assert_array_almost_equal(mvn3b.pdf(cov3), r_val, decimal=16) + + def test_mvt_pdf(self, reset_randomstate): + cov3 = self.cov3 + mu3 = self.mu3 + + mvt = MVT((0, 0), 1, 5) + assert_almost_equal(mvt.logpdf(np.array([0., 0.])), -1.837877066409345, + decimal=15) + assert_almost_equal(mvt.pdf(np.array([0., 0.])), 0.1591549430918953, + decimal=15) + + mvt.logpdf(np.array([1., 1.])) - (-3.01552989458359) + + mvt1 = MVT((0, 0), 1, 1) + mvt1.logpdf(np.array([1., 1.])) - (-3.48579549941151) # decimal=16 + + rvs = mvt.rvs(100000) + assert_almost_equal(np.cov(rvs, rowvar=False), mvt.cov, decimal=1) + + mvt31 = MVT(mu3, cov3, 1) + assert_almost_equal(mvt31.pdf(cov3), + [0.0007276818698165781, 0.0009980625182293658, + 0.0027661422056214652], + decimal=17) + + mvt = MVT(mu3, cov3, 3) + assert_almost_equal(mvt.pdf(cov3), + [0.000863777424247410, 0.001277510788307594, + 0.004156314279452241], + decimal=17) + + +if __name__ == '__main__': + import pytest + + pytest.main([__file__, '-vvs', '-x', '--pdb']) diff --git a/statsmodels/sandbox/distributions/tests/test_norm_expan.py b/statsmodels/sandbox/distributions/tests/test_norm_expan.py new file mode 100644 index 0000000..4efa49c --- /dev/null +++ b/statsmodels/sandbox/distributions/tests/test_norm_expan.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +"""Unit tests for Gram-Charlier exansion + +No reference results, test based on consistency and normal case. + +Created on Wed Feb 19 12:39:49 2014 + +Author: Josef Perktold +""" + +import pytest +import numpy as np +from scipy import stats + +from numpy.testing import assert_allclose, assert_array_less + +from statsmodels.sandbox.distributions.extras import NormExpan_gen + + +class CheckDistribution(object): + + @pytest.mark.smoke + def test_dist1(self): + self.dist1.rvs(size=10) + self.dist1.pdf(np.linspace(-4, 4, 11)) + + def test_cdf_ppf_roundtrip(self): + # round trip + probs = np.linspace(0.001, 0.999, 6) + ppf = self.dist2.ppf(probs) + cdf = self.dist2.cdf(ppf) + assert_allclose(cdf, probs, rtol=1e-6) + sf = self.dist2.sf(ppf) + assert_allclose(sf, 1 - probs, rtol=1e-6) + + +class CheckExpandNorm(CheckDistribution): + + def test_pdf(self): + scale = getattr(self, 'scale', 1) + x = np.linspace(-4, 4, 11) * scale + pdf2 = self.dist2.pdf(x) + pdf1 = self.dist1.pdf(x) + atol_pdf = getattr(self, 'atol_pdf', 0) + assert_allclose(((pdf2 - pdf1)**2).mean(), 0, rtol=1e-6, atol=atol_pdf) + assert_allclose(pdf2, pdf1, rtol=1e-6, atol=atol_pdf) + + def test_mvsk(self): + #compare defining mvsk with numerical integration, generic stats + mvsk2 = self.dist2.mvsk + mvsk1 = self.dist2.stats(moments='mvsk') + assert_allclose(mvsk2, mvsk1, rtol=1e-6, atol=1e-13) + + # check mvsk that was used to generate distribution + assert_allclose(self.dist2.mvsk, self.mvsk, rtol=1e-12) + + + +class TestExpandNormMom(CheckExpandNorm): + # compare with normal, skew=0, excess_kurtosis=0 + + @classmethod + def setup_class(kls): + kls.scale = 2 + kls.dist1 = stats.norm(1, 2) + kls.mvsk = [1., 2**2, 0, 0] + kls.dist2 = NormExpan_gen(kls.mvsk, mode='mvsk') + + +class TestExpandNormSample(object): + # don't subclass CheckExpandNorm, + # precision not high enough because of mvsk from data + + @classmethod + def setup_class(kls): + kls.dist1 = dist1 = stats.norm(1, 2) + np.random.seed(5999) + kls.rvs = dist1.rvs(size=200) + #rvs = np.concatenate([rvs, -rvs]) + # fix mean and std of sample + #rvs = (rvs - rvs.mean())/rvs.std(ddof=1) * np.sqrt(2) + 1 + kls.dist2 = NormExpan_gen(kls.rvs, mode='sample') + + kls.scale = 2 + kls.atol_pdf = 1e-3 + + def test_ks(self): + # cdf is slow + # Kolmogorov-Smirnov test against generating sample + stat, pvalue = stats.kstest(self.rvs, self.dist2.cdf) + assert_array_less(0.25, pvalue) + + def test_mvsk(self): + mvsk = stats.describe(self.rvs)[-4:] + assert_allclose(self.dist2.mvsk, mvsk, rtol=1e-12) diff --git a/statsmodels/sandbox/distributions/tests/test_transf.py b/statsmodels/sandbox/distributions/tests/test_transf.py new file mode 100644 index 0000000..b28fc3b --- /dev/null +++ b/statsmodels/sandbox/distributions/tests/test_transf.py @@ -0,0 +1,180 @@ +# -*- coding: utf-8 -*- +""" + + +Created on Sun May 09 22:35:21 2010 +Author: josef-pktd +License: BSD + +todo: +change moment calculation, (currently uses default _ppf method - I think) +>>> lognormalg.moment(4) +Warning: The algorithm does not converge. Roundoff error is detected + in the extrapolation table. It is assumed that the requested tolerance + cannot be achieved, and that the returned result (if full_output = 1) is + the best which can be obtained. +array(2981.0032380193438) +""" +from __future__ import print_function +import warnings # for silencing, see above... +import numpy as np +from numpy.testing import assert_almost_equal +from scipy import stats, special +from statsmodels.sandbox.distributions.extras import ( + squarenormalg, absnormalg, negsquarenormalg, squaretg) + + +# some patches to scipy.stats.distributions so tests work and pass +# this should be necessary only for older scipy + +#patch frozen distributions with a name +stats.distributions.rv_frozen.name = property(lambda self: self.dist.name) + +#patch f distribution, correct skew and maybe kurtosis +def f_stats(self, dfn, dfd): + arr, where, inf, sqrt, nan = np.array, np.where, np.inf, np.sqrt, np.nan + v2 = arr(dfd*1.0) + v1 = arr(dfn*1.0) + mu = where(v2 > 2, v2 / arr(v2 - 2), inf) + mu2 = 2*v2*v2*(v2+v1-2)/(v1*(v2-2)**2 * (v2-4)) + mu2 = where(v2 > 4, mu2, inf) + #g1 = 2*(v2+2*v1-2)/(v2-6)*sqrt((2*v2-4)/(v1*(v2+v1-2))) + g1 = 2*(v2+2*v1-2.)/(v2-6.)*np.sqrt(2*(v2-4.)/(v1*(v2+v1-2.))) + g1 = where(v2 > 6, g1, nan) + #g2 = 3/(2*v2-16)*(8+g1*g1*(v2-6)) + g2 = 3/(2.*v2-16)*(8+g1*g1*(v2-6.)) + g2 = where(v2 > 8, g2, nan) + return mu, mu2, g1, g2 + +#stats.distributions.f_gen._stats = f_stats +stats.f.__class__._stats = f_stats + +#correct kurtosis by subtracting 3 (Fisher) +#after this it matches halfnorm for arg close to zero +def foldnorm_stats(self, c): + arr, where, inf, sqrt, nan = np.array, np.where, np.inf, np.sqrt, np.nan + exp = np.exp + pi = np.pi + + fac = special.erf(c/sqrt(2)) + mu = sqrt(2.0/pi)*exp(-0.5*c*c)+c*fac + mu2 = c*c + 1 - mu*mu + c2 = c*c + g1 = sqrt(2/pi)*exp(-1.5*c2)*(4-pi*exp(c2)*(2*c2+1.0)) + g1 += 2*c*fac*(6*exp(-c2) + 3*sqrt(2*pi)*c*exp(-c2/2.0)*fac + \ + pi*c*(fac*fac-1)) + g1 /= pi*mu2**1.5 + + g2 = c2*c2+6*c2+3+6*(c2+1)*mu*mu - 3*mu**4 + g2 -= 4*exp(-c2/2.0)*mu*(sqrt(2.0/pi)*(c2+2)+c*(c2+3)*exp(c2/2.0)*fac) + g2 /= mu2**2.0 + g2 -= 3. + return mu, mu2, g1, g2 + +#stats.distributions.foldnorm_gen._stats = foldnorm_stats +stats.foldnorm.__class__._stats = foldnorm_stats + + +#----------------------------- + +DECIMAL = 5 + +class Test_Transf2(object): + + @classmethod + def setup_class(cls): + cls.dist_equivalents = [ + #transf, stats.lognorm(1)) + #The below fails on the SPARC box with scipy 10.1 + #(lognormalg, stats.lognorm(1)), + #transf2 + (squarenormalg, stats.chi2(1)), + (absnormalg, stats.halfnorm), + (absnormalg, stats.foldnorm(1e-5)), #try frozen + #(negsquarenormalg, 1-stats.chi2), # won't work as distribution + (squaretg(10), stats.f(1, 10)) + ] #try both frozen + + l,s = 0.0, 1.0 + cls.ppfq = [0.1,0.5,0.9] + cls.xx = [0.95,1.0,1.1] + cls.nxx = [-0.95,-1.0,-1.1] + + def test_equivalent(self): + xx, ppfq = self.xx, self.ppfq + for d1,d2 in self.dist_equivalents: +## print d1.name + assert_almost_equal(d1.cdf(xx), d2.cdf(xx), err_msg='cdf'+d1.name) + assert_almost_equal(d1.pdf(xx), d2.pdf(xx), + err_msg='pdf '+d1.name+d2.name) + assert_almost_equal(d1.sf(xx), d2.sf(xx), + err_msg='sf '+d1.name+d2.name) + assert_almost_equal(d1.ppf(ppfq), d2.ppf(ppfq), + err_msg='ppq '+d1.name+d2.name) + assert_almost_equal(d1.isf(ppfq), d2.isf(ppfq), + err_msg='isf '+d1.name+d2.name) + self.d1 = d1 + self.d2 = d2 +## print d1, d2 +## print d1.moment(3) +## print d2.moment(3) + #work around bug#1293 + if hasattr(d2, 'dist'): + d2mom = d2.dist.moment(3, *d2.args) + else: + d2mom = d2.moment(3) + assert_almost_equal(d1.moment(3), d2mom, + DECIMAL, + err_msg='moment '+d1.name+d2.name) + # silence warnings in scipy, works for versions + # after print changed to warning in scipy + orig_filter = warnings.filters[:] + warnings.simplefilter('ignore') + try: + s1 = d1.stats(moments='mvsk') + s2 = d2.stats(moments='mvsk') + finally: + warnings.filters = orig_filter + #stats(moments='k') prints warning for lognormalg + assert_almost_equal(s1[:2], s2[:2], + err_msg='stats '+d1.name+d2.name) + assert_almost_equal(s1[2:], s2[2:], + decimal=2, #lognorm for kurtosis + err_msg='stats '+d1.name+d2.name) + + + + def test_equivalent_negsq(self): + #special case negsquarenormalg + #negsquarenormalg.cdf(x) == stats.chi2(1).cdf(-x), for x<=0 + + xx, nxx, ppfq = self.xx, self.nxx, self.ppfq + d1,d2 = (negsquarenormalg, stats.chi2(1)) + #print d1.name + assert_almost_equal(d1.cdf(nxx), 1-d2.cdf(xx), err_msg='cdf'+d1.name) + assert_almost_equal(d1.pdf(nxx), d2.pdf(xx)) + assert_almost_equal(d1.sf(nxx), 1-d2.sf(xx)) + assert_almost_equal(d1.ppf(ppfq), -d2.ppf(ppfq)[::-1]) + assert_almost_equal(d1.isf(ppfq), -d2.isf(ppfq)[::-1]) + assert_almost_equal(d1.moment(3), -d2.moment(3)) + ch2oddneg = [v*(-1)**(i+1) for i,v in + enumerate(d2.stats(moments='mvsk'))] + assert_almost_equal(d1.stats(moments='mvsk'), ch2oddneg, + err_msg='stats '+d1.name+d2.name) + + +if __name__ == '__main__': + tt = Test_Transf2() + tt.test_equivalent() + tt.test_equivalent_negsq() + + debug = 0 + if debug: + print(negsquarenormalg.ppf([0.1,0.5,0.9])) + print(stats.chi2.ppf([0.1,0.5,0.9],1)) + print(negsquarenormalg.a) + print(negsquarenormalg.b) + + print(absnormalg.stats( moments='mvsk')) + print(stats.foldnorm(1e-10).stats( moments='mvsk')) + print(stats.halfnorm.stats( moments='mvsk')) diff --git a/statsmodels/sandbox/distributions/transform_functions.py b/statsmodels/sandbox/distributions/transform_functions.py new file mode 100644 index 0000000..9f94043 --- /dev/null +++ b/statsmodels/sandbox/distributions/transform_functions.py @@ -0,0 +1,189 @@ +# -*- coding: utf-8 -*- +"""Nonlinear Transformation classes + + +Created on Sat Apr 16 16:06:11 2011 + +Author: Josef Perktold +License : BSD +""" +from __future__ import print_function +import numpy as np + + +class TransformFunction(object): + + def __call__(self, x): + self.func(x) + + + +## Hump and U-shaped functions + + +class SquareFunc(TransformFunction): + '''class to hold quadratic function with inverse function and derivative + + using instance methods instead of class methods, if we want extension + to parameterized function + ''' + + def func(self, x): + return np.power(x, 2.) + + def inverseplus(self, x): + return np.sqrt(x) + + def inverseminus(self, x): + return 0.0 - np.sqrt(x) + + def derivplus(self, x): + return 0.5/np.sqrt(x) + + def derivminus(self, x): + return 0.0 - 0.5/np.sqrt(x) + + + + +class NegSquareFunc(TransformFunction): + '''negative quadratic function + + ''' + def func(self, x): + return -np.power(x,2) + + def inverseplus(self, x): + return np.sqrt(-x) + + def inverseminus(self, x): + return 0.0 - np.sqrt(-x) + + def derivplus(self, x): + return 0.0 - 0.5/np.sqrt(-x) + + def derivminus(self, x): + return 0.5/np.sqrt(-x) + + +class AbsFunc(TransformFunction): + '''class for absolute value transformation + ''' + + def func(self, x): + return np.abs(x) + + def inverseplus(self, x): + return x + + def inverseminus(self, x): + return 0.0 - x + + def derivplus(self, x): + return 1.0 + + def derivminus(self, x): + return 0.0 - 1.0 + + +## monotonic functions +# more monotone functions in families.links, some for restricted domains + + +class LogFunc(TransformFunction): + + def func(self, x): + return np.log(x) + + def inverse(self, y): + return np.exp(y) + + def deriv(self, x): + return 1./x + +class ExpFunc(TransformFunction): + + + def func(self, x): + return np.exp(x) + + def inverse(self, y): + return np.log(y) + + def deriv(self, x): + return np.exp(x) + + +class BoxCoxNonzeroFunc(TransformFunction): + + def __init__(self, lamda): + self.lamda = lamda + + def func(self, x): + return (np.power(x, self.lamda) - 1)/self.lamda + + def inverse(self, y): + return (self.lamda * y + 1)/self.lamda + + def deriv(self, x): + return np.power(x, self.lamda - 1) + + +class AffineFunc(TransformFunction): + + def __init__(self, constant, slope): + self.constant = constant + self.slope = slope + + def func(self, x): + return self.constant + self.slope * x + + def inverse(self, y): + return (y - self.constant) / self.slope + + def deriv(self, x): + return self.slope + + +class ChainFunc(TransformFunction): + + def __init__(self, finn, fout): + self.finn = finn + self.fout = fout + + def func(self, x): + return self.fout.func(self.finn.func(x)) + + def inverse(self, y): + return self.f1.inverse(self.fout.inverse(y)) + + def deriv(self, x): + z = self.finn.func(x) + return self.fout.deriv(z) * self.finn.deriv(x) + + +#def inverse(x): +# return np.divide(1.0,x) +# +#mux, stdx = 0.05, 0.1 +#mux, stdx = 9.0, 1.0 +#def inversew(x): +# return 1.0/(1+mux+x*stdx) +#def inversew_inv(x): +# return (1.0/x - 1.0 - mux)/stdx #.np.divide(1.0,x)-10 +# +#def identit(x): +# return x + + +if __name__ == '__main__': + absf = AbsFunc() + absf.func(5) == 5 + absf.func(-5) == 5 + absf.inverseplus(5) == 5 + absf.inverseminus(5) == -5 + + chainf = ChainFunc(AffineFunc(1,2), BoxCoxNonzeroFunc(2)) + print(chainf.func(3.)) + chainf2 = ChainFunc(BoxCoxNonzeroFunc(2), AffineFunc(1,2)) + print(chainf.func(3.)) diff --git a/statsmodels/sandbox/distributions/transformed.py b/statsmodels/sandbox/distributions/transformed.py new file mode 100644 index 0000000..0d3df7a --- /dev/null +++ b/statsmodels/sandbox/distributions/transformed.py @@ -0,0 +1,456 @@ + + +## copied from nonlinear_transform_gen.py + +''' A class for the distribution of a non-linear monotonic transformation of a continuous random variable + +simplest usage: +example: create log-gamma distribution, i.e. y = log(x), + where x is gamma distributed (also available in scipy.stats) + loggammaexpg = Transf_gen(stats.gamma, np.log, np.exp) + +example: what is the distribution of the discount factor y=1/(1+x) + where interest rate x is normally distributed with N(mux,stdx**2)')? + (just to come up with a story that implies a nice transformation) + invnormalg = Transf_gen(stats.norm, inversew, inversew_inv, decr=True, a=-np.inf) + +This class does not work well for distributions with difficult shapes, + e.g. 1/x where x is standard normal, because of the singularity and jump at zero. + +Note: I'm working from my version of scipy.stats.distribution. + But this script runs under scipy 0.6.0 (checked with numpy: 1.2.0rc2 and python 2.4) + +This is not yet thoroughly tested, polished or optimized + +TODO: + * numargs handling is not yet working properly, numargs needs to be specified (default = 0 or 1) + * feeding args and kwargs to underlying distribution is untested and incomplete + * distinguish args and kwargs for the transformed and the underlying distribution + - currently all args and no kwargs are transmitted to underlying distribution + - loc and scale only work for transformed, but not for underlying distribution + - possible to separate args for transformation and underlying distribution parameters + + * add _rvs as method, will be faster in many cases + + +Created on Tuesday, October 28, 2008, 12:40:37 PM +Author: josef-pktd +License: BSD + +''' +from __future__ import print_function +from statsmodels.compat.python import iteritems + +from scipy import stats +from scipy.stats import distributions +import numpy as np + + +def get_u_argskwargs(**kwargs): + #Todo: What's this? wrong spacing, used in Transf_gen TransfTwo_gen + u_kwargs = dict((k.replace('u_','',1),v) for k,v in iteritems(kwargs) + if k.startswith('u_')) + u_args = u_kwargs.pop('u_args',None) + return u_args, u_kwargs + +class Transf_gen(distributions.rv_continuous): + '''a class for non-linear monotonic transformation of a continuous random variable + + ''' + def __init__(self, kls, func, funcinv, *args, **kwargs): + #print(args + #print(kwargs + + self.func = func + self.funcinv = funcinv + #explicit for self.__dict__.update(kwargs) + #need to set numargs because inspection does not work + self.numargs = kwargs.pop('numargs', 0) + #print(self.numargs + name = kwargs.pop('name','transfdist') + longname = kwargs.pop('longname','Non-linear transformed distribution') + extradoc = kwargs.pop('extradoc',None) + a = kwargs.pop('a', -np.inf) + b = kwargs.pop('b', np.inf) + self.decr = kwargs.pop('decr', False) + #defines whether it is a decreasing (True) + # or increasing (False) monotonic transformation + + + self.u_args, self.u_kwargs = get_u_argskwargs(**kwargs) + self.kls = kls #(self.u_args, self.u_kwargs) + # possible to freeze the underlying distribution + + super(Transf_gen,self).__init__(a=a, b=b, name = name, + shapes=kls.shapes, + longname = longname, + extradoc = extradoc) + + def _cdf(self,x,*args, **kwargs): + #print(args + if not self.decr: + return self.kls._cdf(self.funcinv(x),*args, **kwargs) + #note scipy _cdf only take *args not *kwargs + else: + return 1.0 - self.kls._cdf(self.funcinv(x),*args, **kwargs) + def _ppf(self, q, *args, **kwargs): + if not self.decr: + return self.func(self.kls._ppf(q,*args, **kwargs)) + else: + return self.func(self.kls._ppf(1-q,*args, **kwargs)) + + +def inverse(x): + return np.divide(1.0,x) + +mux, stdx = 0.05, 0.1 +mux, stdx = 9.0, 1.0 +def inversew(x): + return 1.0/(1+mux+x*stdx) +def inversew_inv(x): + return (1.0/x - 1.0 - mux)/stdx #.np.divide(1.0,x)-10 + +def identit(x): + return x + +invdnormalg = Transf_gen(stats.norm, inversew, inversew_inv, decr=True, #a=-np.inf, + numargs = 0, name = 'discf', longname = 'normal-based discount factor', + extradoc = '\ndistribution of discount factor y=1/(1+x)) with x N(0.05,0.1**2)') + +lognormalg = Transf_gen(stats.norm, np.exp, np.log, + numargs = 2, a=0, name = 'lnnorm', + longname = 'Exp transformed normal', + extradoc = '\ndistribution of y = exp(x), with x standard normal' + 'precision for moment andstats is not very high, 2-3 decimals') + + +loggammaexpg = Transf_gen(stats.gamma, np.log, np.exp, numargs=1) + +## copied form nonlinear_transform_short.py + +'''univariate distribution of a non-linear monotonic transformation of a +random variable + +''' + +class ExpTransf_gen(distributions.rv_continuous): + '''Distribution based on log/exp transformation + + the constructor can be called with a distribution class + and generates the distribution of the transformed random variable + + ''' + def __init__(self, kls, *args, **kwargs): + #print(args + #print(kwargs + #explicit for self.__dict__.update(kwargs) + if 'numargs' in kwargs: + self.numargs = kwargs['numargs'] + else: + self.numargs = 1 + if 'name' in kwargs: + name = kwargs['name'] + else: + name = 'Log transformed distribution' + if 'a' in kwargs: + a = kwargs['a'] + else: + a = 0 + super(ExpTransf_gen,self).__init__(a=a, name=name) + self.kls = kls + def _cdf(self,x,*args): + #print(args + return self.kls._cdf(np.log(x),*args) + def _ppf(self, q, *args): + return np.exp(self.kls._ppf(q,*args)) + +class LogTransf_gen(distributions.rv_continuous): + '''Distribution based on log/exp transformation + + the constructor can be called with a distribution class + and generates the distribution of the transformed random variable + + ''' + def __init__(self, kls, *args, **kwargs): + #explicit for self.__dict__.update(kwargs) + if 'numargs' in kwargs: + self.numargs = kwargs['numargs'] + else: + self.numargs = 1 + if 'name' in kwargs: + name = kwargs['name'] + else: + name = 'Log transformed distribution' + if 'a' in kwargs: + a = kwargs['a'] + else: + a = 0 + + super(LogTransf_gen,self).__init__(a=a, name = name) + self.kls = kls + + def _cdf(self,x, *args): + #print(args + return self.kls._cdf(np.exp(x),*args) + def _ppf(self, q, *args): + return np.log(self.kls._ppf(q,*args)) + +def examples_transf(): + ##lognormal = ExpTransf(a=0.0, xa=-10.0, name = 'Log transformed normal') + ##print(lognormal.cdf(1) + ##print(stats.lognorm.cdf(1,1) + ##print(lognormal.stats() + ##print(stats.lognorm.stats(1) + ##print(lognormal.rvs(size=10) + + print('Results for lognormal') + lognormalg = ExpTransf_gen(stats.norm, a=0, name = 'Log transformed normal general') + print(lognormalg.cdf(1)) + print(stats.lognorm.cdf(1,1)) + print(lognormalg.stats()) + print(stats.lognorm.stats(1)) + print(lognormalg.rvs(size=5)) + + ##print('Results for loggamma' + ##loggammag = ExpTransf_gen(stats.gamma) + ##print(loggammag._cdf(1,10) + ##print(stats.loggamma.cdf(1,10) + + print('Results for expgamma') + loggammaexpg = LogTransf_gen(stats.gamma) + print(loggammaexpg._cdf(1,10)) + print(stats.loggamma.cdf(1,10)) + print(loggammaexpg._cdf(2,15)) + print(stats.loggamma.cdf(2,15)) + + + # this requires change in scipy.stats.distribution + #print(loggammaexpg.cdf(1,10) + + print('Results for loglaplace') + loglaplaceg = LogTransf_gen(stats.laplace) + print(loglaplaceg._cdf(2,10)) + print(stats.loglaplace.cdf(2,10)) + loglaplaceexpg = ExpTransf_gen(stats.laplace) + print(loglaplaceexpg._cdf(2,10)) + + + + +## copied from transformtwo.py + +''' +Created on Apr 28, 2009 + +@author: Josef Perktold +''' + +''' A class for the distribution of a non-linear u-shaped or hump shaped transformation of a +continuous random variable + +This is a companion to the distributions of non-linear monotonic transformation to the case +when the inverse mapping is a 2-valued correspondence, for example for absolute value or square + +simplest usage: +example: create squared distribution, i.e. y = x**2, + where x is normal or t distributed + + +This class does not work well for distributions with difficult shapes, + e.g. 1/x where x is standard normal, because of the singularity and jump at zero. + + +This verifies for normal - chi2, normal - halfnorm, foldnorm, and t - F + +TODO: + * numargs handling is not yet working properly, + numargs needs to be specified (default = 0 or 1) + * feeding args and kwargs to underlying distribution works in t distribution example + * distinguish args and kwargs for the transformed and the underlying distribution + - currently all args and no kwargs are transmitted to underlying distribution + - loc and scale only work for transformed, but not for underlying distribution + - possible to separate args for transformation and underlying distribution parameters + + * add _rvs as method, will be faster in many cases + +''' + + +class TransfTwo_gen(distributions.rv_continuous): + '''Distribution based on a non-monotonic (u- or hump-shaped transformation) + + the constructor can be called with a distribution class, and functions + that define the non-linear transformation. + and generates the distribution of the transformed random variable + + Note: the transformation, it's inverse and derivatives need to be fully + specified: func, funcinvplus, funcinvminus, derivplus, derivminus. + Currently no numerical derivatives or inverse are calculated + + This can be used to generate distribution instances similar to the + distributions in scipy.stats. + + ''' + #a class for non-linear non-monotonic transformation of a continuous random variable + def __init__(self, kls, func, funcinvplus, funcinvminus, derivplus, + derivminus, *args, **kwargs): + #print(args + #print(kwargs + + self.func = func + self.funcinvplus = funcinvplus + self.funcinvminus = funcinvminus + self.derivplus = derivplus + self.derivminus = derivminus + #explicit for self.__dict__.update(kwargs) + #need to set numargs because inspection does not work + self.numargs = kwargs.pop('numargs', 0) + #print(self.numargs + name = kwargs.pop('name','transfdist') + longname = kwargs.pop('longname','Non-linear transformed distribution') + extradoc = kwargs.pop('extradoc',None) + a = kwargs.pop('a', -np.inf) # attached to self in super + b = kwargs.pop('b', np.inf) # self.a, self.b would be overwritten + self.shape = kwargs.pop('shape', False) + #defines whether it is a `u` shaped or `hump' shaped + # transformation + + + self.u_args, self.u_kwargs = get_u_argskwargs(**kwargs) + self.kls = kls #(self.u_args, self.u_kwargs) + # possible to freeze the underlying distribution + + super(TransfTwo_gen,self).__init__(a=a, b=b, + name = name, + shapes=kls.shapes, + longname = longname, + extradoc = extradoc) + + def _rvs(self, *args): + self.kls._size = self._size #size attached to self, not function argument + return self.func(self.kls._rvs(*args)) + + def _pdf(self,x,*args, **kwargs): + #print(args + if self.shape == 'u': + signpdf = 1 + elif self.shape == 'hump': + signpdf = -1 + else: + raise ValueError('shape can only be `u` or `hump`') + + return signpdf * (self.derivplus(x)*self.kls._pdf(self.funcinvplus(x),*args, **kwargs) - + self.derivminus(x)*self.kls._pdf(self.funcinvminus(x),*args, **kwargs)) + #note scipy _cdf only take *args not *kwargs + + def _cdf(self,x,*args, **kwargs): + #print(args + if self.shape == 'u': + return self.kls._cdf(self.funcinvplus(x),*args, **kwargs) - \ + self.kls._cdf(self.funcinvminus(x),*args, **kwargs) + #note scipy _cdf only take *args not *kwargs + else: + return 1.0 - self._sf(x,*args, **kwargs) + + def _sf(self,x,*args, **kwargs): + #print(args + if self.shape == 'hump': + return self.kls._cdf(self.funcinvplus(x),*args, **kwargs) - \ + self.kls._cdf(self.funcinvminus(x),*args, **kwargs) + #note scipy _cdf only take *args not *kwargs + else: + return 1.0 - self._cdf(x, *args, **kwargs) + + def _munp(self, n,*args, **kwargs): + return self._mom0_sc(n,*args) +# ppf might not be possible in general case? +# should be possible in symmetric case +# def _ppf(self, q, *args, **kwargs): +# if self.shape == 'u': +# return self.func(self.kls._ppf(q,*args, **kwargs)) +# elif self.shape == 'hump': +# return self.func(self.kls._ppf(1-q,*args, **kwargs)) + +#TODO: rename these functions to have unique names + +class SquareFunc(object): + '''class to hold quadratic function with inverse function and derivative + + using instance methods instead of class methods, if we want extension + to parameterized function + ''' + def inverseplus(self, x): + return np.sqrt(x) + + def inverseminus(self, x): + return 0.0 - np.sqrt(x) + + def derivplus(self, x): + return 0.5/np.sqrt(x) + + def derivminus(self, x): + return 0.0 - 0.5/np.sqrt(x) + + def squarefunc(self, x): + return np.power(x,2) + +sqfunc = SquareFunc() + +squarenormalg = TransfTwo_gen(stats.norm, sqfunc.squarefunc, sqfunc.inverseplus, + sqfunc.inverseminus, sqfunc.derivplus, sqfunc.derivminus, + shape='u', a=0.0, b=np.inf, + numargs = 0, name = 'squarenorm', longname = 'squared normal distribution', + extradoc = '\ndistribution of the square of a normal random variable' +\ + ' y=x**2 with x N(0.0,1)') + #u_loc=l, u_scale=s) +squaretg = TransfTwo_gen(stats.t, sqfunc.squarefunc, sqfunc.inverseplus, + sqfunc.inverseminus, sqfunc.derivplus, sqfunc.derivminus, + shape='u', a=0.0, b=np.inf, + numargs = 1, name = 'squarenorm', longname = 'squared t distribution', + extradoc = '\ndistribution of the square of a t random variable' +\ + ' y=x**2 with x t(dof,0.0,1)') + +def inverseplus(x): + return np.sqrt(-x) + +def inverseminus(x): + return 0.0 - np.sqrt(-x) + +def derivplus(x): + return 0.0 - 0.5/np.sqrt(-x) + +def derivminus(x): + return 0.5/np.sqrt(-x) + +def negsquarefunc(x): + return -np.power(x,2) + + +negsquarenormalg = TransfTwo_gen(stats.norm, negsquarefunc, inverseplus, inverseminus, + derivplus, derivminus, shape='hump', a=-np.inf, b=0.0, + numargs = 0, name = 'negsquarenorm', longname = 'negative squared normal distribution', + extradoc = '\ndistribution of the negative square of a normal random variable' +\ + ' y=-x**2 with x N(0.0,1)') + #u_loc=l, u_scale=s) + +def inverseplus(x): + return x + +def inverseminus(x): + return 0.0 - x + +def derivplus(x): + return 1.0 + +def derivminus(x): + return 0.0 - 1.0 + +def absfunc(x): + return np.abs(x) + + +absnormalg = TransfTwo_gen(stats.norm, np.abs, inverseplus, inverseminus, + derivplus, derivminus, shape='u', a=0.0, b=np.inf, + numargs = 0, name = 'absnorm', longname = 'absolute of normal distribution', + extradoc = '\ndistribution of the absolute value of a normal random variable' +\ + ' y=abs(x) with x N(0,1)') diff --git a/statsmodels/sandbox/distributions/try_max.py b/statsmodels/sandbox/distributions/try_max.py new file mode 100644 index 0000000..ff9fae3 --- /dev/null +++ b/statsmodels/sandbox/distributions/try_max.py @@ -0,0 +1,74 @@ +''' + +adjusted from Denis on pystatsmodels mailing list + +there might still be problems with loc and scale, + +''' + + +from __future__ import division +from scipy import stats +__date__ = "2010-12-29 dec" + +class MaxDist(stats.rv_continuous): + """ max of n of scipy.stats normal expon ... + Example: + maxnormal10 = RVmax( scipy.stats.norm, 10 ) + sample = maxnormal10( size=1000 ) + sample.cdf = cdf ^ n, ppf ^ (1/n) + """ + def __init__( self, dist, n ): + self.dist = dist + self.n = n + extradoc = 'maximumdistribution is the distribution of the '\ + + 'maximum of n i.i.d. random variable' + super(MaxDist, self).__init__(name='maxdist', a=dist.a, b=dist.b, + longname = 'A maximumdistribution', extradoc = extradoc) + + def _pdf(self, x, *args, **kw): + return self.n * self.dist.pdf(x, *args, **kw) \ + * self.dist.cdf(x, *args, **kw )**(self.n-1) + + def _cdf(self, x, *args, **kw): + return self.dist.cdf(x, *args, **kw)**self.n + + def _ppf(self, q, *args, **kw): + # y = F(x) ^ n <=> x = F-1( y ^ 1/n) + return self.dist.ppf(q**(1./self.n), *args, **kw) + +## def rvs( self, *args, **kw ): +## size = kw.pop( "size", 1 ) +## u = np.random.uniform( size=size, **kw ) ** (1 / self.n) +## return self.dist.ppf( u, **kw ) + + +maxdistr = MaxDist(stats.norm, 10) + +print(maxdistr.rvs(size=10)) +print(maxdistr.stats(moments = 'mvsk')) + +''' +>>> print maxdistr.stats(moments = 'mvsk') +(array(1.5387527308351818), array(0.34434382328492852), array(0.40990510188513779), array(0.33139861783918922)) +>>> rvs = np.random.randn(1000,10) +>>> stats.describe(rvs.max(1)) +(1000, (-0.028558517753519492, 3.6134958002753685), 1.5560520428553426, 0.34965234046170773, 0.48504309950278557, 0.17691859056779258) +>>> rvs2 = maxdistr.rvs(size=1000) +>>> stats.describe(rvs2) +(1000, (-0.015290995091401905, 3.3227019151170931), 1.5248146840651813, 0.32827518543128631, 0.23998620901199566, -0.080555658370268013) +>>> rvs2 = maxdistr.rvs(size=10000) +>>> stats.describe(rvs2) +(10000, (-0.15855091764294812, 4.1898138060896937), 1.532862047388899, 0.34361316060467512, 0.43128838106936973, 0.41115043864619061) + +>>> maxdistr.pdf(1.5) +0.69513824417156755 + +#integrating the pdf +>>> maxdistr.expect() +1.5387527308351729 +>>> maxdistr.expect(lambda x:1) +0.99999999999999956 + + +''' diff --git a/statsmodels/sandbox/distributions/try_pot.py b/statsmodels/sandbox/distributions/try_pot.py new file mode 100644 index 0000000..6c410e4 --- /dev/null +++ b/statsmodels/sandbox/distributions/try_pot.py @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- +""" +Created on Wed May 04 06:09:18 2011 + +@author: josef +""" +from __future__ import print_function +import numpy as np + + +def mean_residual_life(x, frac=None, alpha=0.05): + '''emprirical mean residual life or expected shortfall + + Parameters + ---------- + x : 1-dimensional array-like + frac : list[float], optional + All entries must be between 0 and 1 + alpha : float, default 0.05 + FIXME: not actually used. + + TODO: + check formula for std of mean + doesn't include case for all observations + last observations std is zero + vectorize loop using cumsum + frac doesn't work yet + ''' + + axis = 0 # searchsorted is 1d only + x = np.asarray(x) + nobs = x.shape[axis] + xsorted = np.sort(x, axis=axis) + if frac is None: + xthreshold = xsorted + else: + xthreshold = xsorted[np.floor(nobs * frac).astype(int)] + # use searchsorted instead of simple index in case of ties + xlargerindex = np.searchsorted(xsorted, xthreshold, side='right') + + # TODO:replace loop with cumsum ? + result = [] + for i in range(len(xthreshold)-1): + k_ind = xlargerindex[i] + rmean = x[k_ind:].mean() + rstd = x[k_ind:].std() # this doesn't work for last observations, nans + rmstd = rstd/np.sqrt(nobs-k_ind) # std error of mean, check formula + result.append((k_ind, xthreshold[i], rmean, rmstd)) + + res = np.array(result) + crit = 1.96 # TODO: without loading stats, crit = -stats.t.ppf(0.05) + confint = res[:, 1:2] + crit * res[:, -1:] * np.array([[-1, 1]]) + return np.column_stack((res, confint)) + + +expected_shortfall = mean_residual_life # alias + + +if __name__ == "__main__": + rvs = np.random.standard_t(5, size=10) + res = mean_residual_life(rvs) + print(res) + rmean = [rvs[i:].mean() for i in range(len(rvs))] + print(res[:, 2] - rmean[1:]) + + res_frac = mean_residual_life(rvs, frac=[0.5]) + print(res_frac) diff --git a/statsmodels/sandbox/examples/bayesprior.py b/statsmodels/sandbox/examples/bayesprior.py new file mode 100644 index 0000000..dfd703d --- /dev/null +++ b/statsmodels/sandbox/examples/bayesprior.py @@ -0,0 +1,245 @@ +# +# This script examines the predictive prior densities of two local level +# models given the same priors for parameters that appear to be the same. +# Reference: Del Negro and Schorfheide. + +try: + import pymc + pymc_installed = 1 +except: + print("pymc not imported") + pymc_installed = 0 + +import numpy as np +from matplotlib import pyplot as plt +from scipy import stats, integrate +from scipy.stats import rv_continuous +from scipy.special import gammaln, gammaincinv, gammainc +from numpy import log,exp + +#np.random.seed(12345) + +class igamma_gen(rv_continuous): + def _pdf(self, x, a, b): + return exp(self._logpdf(x,a,b)) + def _logpdf(self, x, a, b): + return a*log(b) - gammaln(a) -(a+1)*log(x) - b/x + def _cdf(self, x, a, b): + return 1.0-gammainc(a,b/x) # why is this different than the wiki? + def _ppf(self, q, a, b): + return b/gammaincinv(a,1-q) +#NOTE: should be correct, work through invgamma example and 2 param inv gamma +#CDF + def _munp(self, n, a, b): + args = (a,b) + super(igamma_gen, self)._munp(self, n, *args) +#TODO: is this robust for differential entropy in this case? closed form or +#shortcuts in special? + def _entropy(self, *args): + def integ(x): + val = self._pdf(x, *args) + return val*log(val) + + entr = -integrate.quad(integ, self.a, self.b)[0] + if not np.isnan(entr): + return entr + else: + raise ValueError("Problem with integration. Returned nan.") + +igamma = igamma_gen(a=0.0, name='invgamma', longname="An inverted gamma", + shapes = 'a,b', extradoc=""" + +Inverted gamma distribution + +invgamma.pdf(x,a,b) = b**a*x**(-a-1)/gamma(a) * exp(-b/x) +for x > 0, a > 0, b>0. +""") + + +#NOTE: the above is unnecessary. B takes the same role as the scale parameter +# in inverted gamma + +palpha = np.random.gamma(400.,.005, size=10000) +print("First moment: %s\nSecond moment: %s" % (palpha.mean(),palpha.std())) +palpha = palpha[0] + +prho = np.random.beta(49.5,49.5, size=1e5) +print("Beta Distribution") +print("First moment: %s\nSecond moment: %s" % (prho.mean(),prho.std())) +prho = prho[0] + +psigma = igamma.rvs(1.,4.**2/2, size=1e5) +print("Inverse Gamma Distribution") +print("First moment: %s\nSecond moment: %s" % (psigma.mean(),psigma.std())) + +# First do the univariate case +# y_t = theta_t + epsilon_t +# epsilon ~ N(0,1) +# Where theta ~ N(mu,lambda**2) + + +# or the model +# y_t = theta2_t + theta1_t * y_t-1 + epsilon_t + +# Prior 1: +# theta1 ~ uniform(0,1) +# theta2|theta1 ~ N(mu,lambda**2) +# Prior 2: +# theta1 ~ U(0,1) +# theta2|theta1 ~ N(mu(1-theta1),lambda**2(1-theta1)**2) + +draws = 400 +# prior beliefs, from JME paper +mu_, lambda_ = 1.,2. + +# Model 1 +y1y2 = np.zeros((draws,2)) +for draw in range(draws): + theta = np.random.normal(mu_,lambda_**2) + y1 = theta + np.random.normal() + y2 = theta + np.random.normal() + y1y2[draw] = y1,y2 + + +# log marginal distribution +lnp1p2_mod1 = stats.norm.pdf(y1,loc=mu_, scale=lambda_**2+1)*\ + stats.norm.pdf(y2,mu_,scale=lambda_**2+1) + + +# Model 2 +pmu_pairsp1 = np.zeros((draws,2)) +y1y2pairsp1 = np.zeros((draws,2)) +# prior 1 +for draw in range(draws): + theta1 = np.random.uniform(0,1) + theta2 = np.random.normal(mu_, lambda_**2) +# mu = theta2/(1-theta1) +#don't do this to maintain independence theta2 is the _location_ +# y1 = np.random.normal(mu_, lambda_**2) + y1 = theta2 +# pmu_pairsp1[draw] = mu, theta1 + pmu_pairsp1[draw] = theta2, theta1 # mean, autocorr + y2 = theta2 + theta1 * y1 + np.random.normal() + y1y2pairsp1[draw] = y1,y2 + + + +# for a = 0, b = 1 - epsilon = .99999 +# mean of u is .5*.99999 +# variance is 1./12 * .99999**2 + +# Model 2 +pmu_pairsp2 = np.zeros((draws,2)) +y1y2pairsp2 = np.zeros((draws,2)) +# prior 2 +theta12_2 = [] +for draw in range(draws): +# y1 = np.random.uniform(-4,6) + theta1 = np.random.uniform(0,1) + theta2 = np.random.normal(mu_*(1-theta1), lambda_**2*(1-theta1)**2) + theta12_2.append([theta1,theta2]) + + mu = theta2/(1-theta1) + y1 = np.random.normal(mu_,lambda_**2) + y2 = theta2 + theta1 * y1 + np.random.normal() + pmu_pairsp2[draw] = mu, theta1 + y1y2pairsp2[draw] = y1,y2 + +fig = plt.figure() +fsp = fig.add_subplot(221) +fsp.scatter(pmu_pairsp1[:,0], pmu_pairsp1[:,1], color='b', facecolor='none') +fsp.set_ylabel('Autocorrelation (Y)') +fsp.set_xlabel('Mean (Y)') +fsp.set_title('Model 2 (P1)') +fsp.axis([-20,20,0,1]) + +fsp = fig.add_subplot(222) +fsp.scatter(pmu_pairsp2[:,0],pmu_pairsp2[:,1], color='b', facecolor='none') +fsp.set_title('Model 2 (P2)') +fsp.set_ylabel('Autocorrelation (Y)') +fsp.set_xlabel('Mean (Y)') +fsp.set_title('Model 2 (P2)') +fsp.axis([-20,20,0,1]) + +fsp = fig.add_subplot(223) +fsp.scatter(y1y2pairsp1[:,0], y1y2pairsp1[:,1], color='b', marker='o', + facecolor='none') +fsp.scatter(y1y2[:,0], y1y2[:,1], color ='g', marker='+') +fsp.set_title('Model 1 vs. Model 2 (P1)') +fsp.set_ylabel('Y(2)') +fsp.set_xlabel('Y(1)') +fsp.axis([-20,20,-20,20]) + +fsp = fig.add_subplot(224) +fsp.scatter(y1y2pairsp2[:,0], y1y2pairsp2[:,1], color='b', marker='o') +fsp.scatter(y1y2[:,0], y1y2[:,1], color='g', marker='+') +fsp.set_title('Model 1 vs. Model 2 (P2)') +fsp.set_ylabel('Y(2)') +fsp.set_xlabel('Y(1)') +fsp.axis([-20,20,-20,20]) + +#plt.show() + +#TODO: this doesn't look the same as the working paper? +#NOTE: but it matches the language? I think mine is right! + +# Contour plots. +# on the basis of observed data. ie., the mgrid +#np.mgrid[6:-4:10j,-4:6:10j] + + + + +# Example 2: +# 2 NK Phillips Curves +# Structural form +# M1: y_t = 1/alpha *E_t[y_t+1] + mu_t +# mu_t = p1 * mu_t-1 + epsilon_t +# epsilon_t ~ N(0,sigma2) + +# Reduced form Law of Motion +# M1: y_t = p1*y_t-1 + 1/(1-p1/alpha)*epsilon_t + +# specify prior for M1 +# for i = 1,2 +# theta_i = [alpha +# p_i +# sigma] +# truncate effective priors by the determinancy region +# for determinancy we need alpha > 1 +# p in [0,1) +# palpha ~ Gamma(2.00,.10) +# mean = 2.00 +# std = .1 which implies k = 400, theta = .005 +palpha = np.random.gamma(400,.005) + +# pi ~ Beta(.5,.05) +pi = np.random.beta(49.5, 49.5) + +# psigma ~ InvGamma(1.00,4.00) +#def invgamma(a,b): +# return np.sqrt(b*a**2/np.sum(np.random.random(b,1)**2, axis=1)) +#NOTE: Use inverse gamma distribution igamma +psigma = igamma.rvs(1.,4.0, size=1e6) #TODO: parameterization is not correct vs. +# Del Negro and Schorfheide +if pymc_installed: + psigma2 = pymc.rinverse_gamma(1.,4.0, size=1e6) +else: + psigma2 = stats.invgamma.rvs(1., scale=4.0, size=1e6) +nsims = 500 +y = np.zeros((nsims)) +#for i in range(1,nsims): +# y[i] = .9*y[i-1] + 1/(1-p1/alpha) + np.random.normal() + +#Are these supposed to be sampled jointly? + +# InvGamma(sigma|v,s) propto sigma**(-v-1)*e**(-vs**2/2*sigma**2) +#igamma = + +# M2: y_t = 1/alpha * E_t[y_t+1] + p2*y_t-1 + mu_t +# mu_t ~ epsilon_t +# epsilon_t ~ n(0,sigma2) + +# Reduced form Law of Motion +# y_t = 1/2 (alpha-sqrt(alpha**2-4*p2*alpha)) * y_t-1 + 2*alpha/(alpha + \ +# sqrt(alpha**2 - 4*p2*alpha)) * epsilon_t diff --git a/statsmodels/sandbox/examples/dji_table.csv b/statsmodels/sandbox/examples/dji_table.csv new file mode 100644 index 0000000..4715fd7 --- /dev/null +++ b/statsmodels/sandbox/examples/dji_table.csv @@ -0,0 +1,20434 @@ +Date,Open,High,Low,Close,Volume,Adj Close +2010-02-12,10137.23,10140.18,9962.13,10099.14,4160680000,10099.14 +2010-02-11,10037.85,10184.85,9963.19,10144.19,4400870000,10144.19 +2010-02-10,10055.46,10120.15,9946.26,10038.38,4251450000,10038.38 +2010-02-09,9910.28,10154.24,9910.28,10058.64,5114260000,10058.64 +2010-02-08,10005.43,10059.24,9882.85,9908.39,4089820000,9908.39 +2010-02-05,10003.69,10078.89,9822.84,10012.23,6438900000,10012.23 +2010-02-04,10273.12,10273.12,9984.35,10002.18,5859690000,10002.18 +2010-02-03,10291.73,10356.86,10192.03,10270.55,4285450000,10270.55 +2010-02-02,10186.13,10333.35,10138.75,10296.85,4749540000,10296.85 +2010-02-01,10068.99,10227.24,10068.99,10185.53,4077610000,10185.53 +2010-01-29,10122.04,10272.29,10014.35,10067.33,5412850000,10067.33 +2010-01-28,10236.92,10310.68,10023.80,10120.46,5452400000,10120.46 +2010-01-27,10194.29,10294.13,10060.98,10236.16,5319120000,10236.16 +2010-01-26,10195.35,10323.00,10102.17,10194.29,4731910000,10194.29 +2010-01-25,10175.10,10316.65,10135.95,10196.86,4481390000,10196.86 +2010-01-22,10389.58,10450.04,10133.15,10172.98,6208650000,10172.98 +2010-01-21,10603.91,10651.14,10334.18,10389.88,6874289600,10389.88 +2010-01-20,10719.69,10719.69,10492.36,10603.15,4810560000,10603.15 +2010-01-19,10608.37,10763.45,10555.47,10725.43,4724830000,10725.43 +2010-01-15,10706.99,10736.54,10529.09,10609.65,4758730000,10609.65 +2010-01-14,10680.16,10767.15,10619.02,10710.55,3915200000,10710.55 +2010-01-13,10628.09,10747.12,10569.07,10680.77,4170360000,10680.77 +2010-01-12,10662.86,10701.48,10523.35,10627.26,4716160000,10627.26 +2010-01-11,10620.31,10739.87,10538.91,10663.99,4255780000,10663.99 +2010-01-08,10606.40,10653.11,10509.74,10618.19,4389590000,10618.19 +2010-01-07,10571.11,10655.60,10471.73,10606.86,5270680000,10606.86 +2010-01-06,10564.72,10655.22,10488.28,10573.68,4972660000,10573.68 +2010-01-05,10584.56,10647.14,10468.86,10572.02,2491020000,10572.02 +2010-01-04,10430.69,10641.62,10430.69,10583.96,3991400000,10583.96 +2009-12-31,10548.51,10578.74,10420.56,10428.05,2076990000,10428.05 +2009-12-30,10544.36,10583.28,10470.75,10548.51,2277300000,10548.51 +2009-12-29,10547.83,10605.65,10518.59,10545.41,2491020000,10545.41 +2009-12-28,10517.91,10550.78,10517.91,10547.07,2716400000,10547.07 +2009-12-24,10467.12,10541.26,10450.95,10520.10,1267710000,10520.10 +2009-12-23,10464.32,10520.93,10409.00,10466.44,3166870000,10466.44 +2009-12-22,10414.67,10511.56,10399.33,10464.93,3641130000,10464.93 +2009-12-21,10330.10,10489.41,10330.10,10414.14,3977340000,10414.14 +2009-12-18,10309.39,10412.55,10237.75,10328.89,6325890000,10328.89 +2009-12-17,10439.99,10439.99,10279.39,10308.26,7615070400,10308.26 +2009-12-16,10449.81,10552.75,10401.90,10441.12,4829820000,10441.12 +2009-12-15,10499.31,10542.09,10380.96,10452.00,5045100000,10452.00 +2009-12-14,10471.28,10566.88,10431.60,10501.05,4548490000,10501.05 +2009-12-11,10403.41,10516.47,10385.42,10471.50,3791090000,10471.50 +2009-12-10,10336.00,10479.06,10332.14,10405.83,3996490000,10405.83 +2009-12-09,10282.85,10377.11,10207.29,10337.05,4115410000,10337.05 +2009-12-08,10385.42,10385.42,10216.44,10285.97,4748030000,10285.97 +2009-12-07,10386.86,10478.23,10321.11,10390.11,4103360000,10390.11 +2009-12-04,10368.57,10549.04,10285.44,10388.90,5781140000,10388.90 +2009-12-03,10455.63,10533.55,10338.49,10366.15,4810030000,10366.15 +2009-12-02,10470.44,10537.63,10386.03,10452.68,3941340000,10452.68 +2009-12-01,10343.82,10537.03,10343.82,10471.58,4249310000,10471.58 +2009-11-30,10309.77,10394.34,10238.05,10344.84,3895520000,10344.84 +2009-11-27,10452.23,10452.23,10179.33,10309.92,2362910000,10309.92 +2009-11-25,10432.96,10513.60,10385.65,10464.40,3036350000,10464.40 +2009-11-24,10451.25,10488.66,10335.62,10433.71,3700820000,10433.71 +2009-11-23,10320.13,10524.40,10320.13,10450.95,3827920000,10450.95 +2009-11-20,10327.91,10377.41,10237.60,10318.16,3751230000,10318.16 +2009-11-19,10425.33,10425.33,10226.41,10332.44,4178030000,10332.44 +2009-11-18,10426.27,10471.28,10330.33,10426.31,4293340000,10426.31 +2009-11-17,10404.77,10465.76,10318.69,10437.42,3824070000,10437.42 +2009-11-16,10267.53,10465.83,10267.53,10406.96,4565850000,10406.96 +2009-11-13,10197.85,10332.29,10162.93,10270.47,3792610000,10270.47 +2009-11-12,10289.82,10341.21,10157.64,10197.47,4160250000,10197.47 +2009-11-11,10247.42,10357.38,10217.19,10291.26,4286700000,10291.26 +2009-11-10,10223.01,10300.33,10148.12,10246.97,4394770000,10246.97 +2009-11-09,10020.62,10248.93,10020.62,10226.94,4460030000,10226.94 +2009-11-06,10001.35,10077.08,9898.49,10023.42,4277130000,10023.42 +2009-11-05,9807.80,10043.75,9807.80,10005.96,4848350000,10005.96 +2009-11-04,9767.30,9962.35,9745.76,9802.14,5635510000,9802.14 +2009-11-03,9787.47,9844.84,9649.78,9771.91,5487500000,9771.91 +2009-11-02,9712.13,9883.68,9647.06,9789.44,6202640000,9789.44 +2009-10-30,9961.52,9980.19,9664.89,9712.73,6512420000,9712.73 +2009-10-29,9762.91,9996.67,9762.91,9962.58,5595040000,9962.58 +2009-10-28,9881.11,9940.89,9723.31,9762.69,6600350000,9762.69 +2009-10-27,9868.34,9994.55,9802.36,9882.17,5337380000,9882.17 +2009-10-26,9972.33,10107.99,9817.55,9867.96,6363380000,9867.96 +2009-10-23,10099.90,10138.59,9908.70,9972.18,4767460000,9972.18 +2009-10-22,9946.18,10133.08,9879.07,10081.31,5192410000,10081.31 +2009-10-21,10038.84,10157.94,9909.83,9949.36,5616290000,9949.36 +2009-10-20,10092.42,10157.26,9952.98,10041.48,5396930000,10041.48 +2009-10-19,9996.67,10146.61,9967.49,10092.19,4619240000,10092.19 +2009-10-16,10061.36,10072.62,9884.51,9995.91,4894740000,9995.91 +2009-10-15,10014.88,10087.43,9916.93,10062.94,5369780000,10062.94 +2009-10-14,9873.55,10064.98,9873.55,10015.86,5406420000,10015.86 +2009-10-13,9883.98,9935.53,9780.90,9871.06,4320480000,9871.06 +2009-10-12,9865.24,9978.07,9814.45,9885.80,3710430000,9885.80 +2009-10-09,9786.04,9890.41,9731.32,9864.94,3763780000,9864.94 +2009-10-08,9728.22,9872.50,9709.78,9786.87,4988400000,9786.87 +2009-10-07,9725.69,9782.56,9634.96,9725.58,4238220000,9725.58 +2009-10-06,9601.26,9793.37,9601.26,9731.25,5029840000,9731.25 +2009-10-05,9488.73,9640.33,9449.81,9599.75,4313310000,9599.75 +2009-10-02,9507.62,9571.71,9378.77,9487.67,5583240000,9487.67 +2009-10-01,9711.60,9714.70,9482.98,9509.28,5791450000,9509.28 +2009-09-30,9741.83,9817.17,9583.04,9712.28,5998860000,9712.28 +2009-09-29,9789.74,9861.99,9705.10,9742.20,4949900000,9742.20 +2009-09-28,9663.23,9861.39,9658.09,9789.36,3726950000,9789.36 +2009-09-25,9706.68,9781.73,9605.19,9665.19,4507090000,9665.19 +2009-09-24,9749.99,9836.82,9637.53,9707.44,5505610000,9707.44 +2009-09-23,9830.63,9937.72,9724.90,9748.55,5531930000,9748.55 +2009-09-22,9779.61,9890.71,9742.96,9829.87,5246600000,9829.87 +2009-09-21,9818.61,9846.12,9688.40,9778.86,4615280000,9778.86 +2009-09-18,9784.75,9898.57,9751.27,9820.20,5607970000,9820.20 +2009-09-17,9789.82,9896.38,9706.23,9783.92,6668110000,9783.92 +2009-09-16,9683.71,9837.05,9648.95,9791.71,6793529600,9791.71 +2009-09-15,9626.42,9745.91,9553.80,9683.41,6185620000,9683.41 +2009-09-14,9598.08,9662.10,9492.96,9626.80,4979610000,9626.80 +2009-09-11,9625.44,9698.67,9532.11,9605.41,4922600000,9605.41 +2009-09-10,9546.54,9666.55,9479.20,9627.48,5191380000,9627.48 +2009-09-09,9496.59,9604.43,9435.45,9547.22,5202550000,9547.22 +2009-09-08,9440.13,9564.45,9402.80,9497.34,5235160000,9497.34 +2009-09-04,9345.36,9465.37,9302.28,9441.27,4097370000,9441.27 +2009-09-03,9282.03,9350.27,9252.93,9344.61,4624280000,9344.61 +2009-09-02,9306.21,9378.77,9223.08,9280.67,5842730000,9280.67 +2009-09-01,9492.32,9573.67,9275.15,9310.60,6862360000,9310.60 +2009-08-31,9542.91,9552.97,9389.27,9496.28,5004560000,9496.28 +2009-08-28,9582.74,9666.71,9476.63,9544.20,5785780000,9544.20 +2009-08-27,9541.63,9629.98,9440.43,9580.63,5785880000,9580.63 +2009-08-26,9538.61,9613.65,9446.71,9543.52,5080060000,9543.52 +2009-08-25,9509.21,9646.53,9485.70,9539.29,5768740000,9539.29 +2009-08-24,9506.18,9625.89,9442.17,9509.28,6302450000,9509.28 +2009-08-21,9347.86,9549.19,9347.86,9505.96,5885550000,9505.96 +2009-08-20,9278.55,9385.72,9237.52,9350.05,4893160000,9350.05 +2009-08-19,9208.68,9333.34,9099.14,9279.16,4257000000,9279.16 +2009-08-18,9134.36,9262.08,9124.08,9217.94,4198970000,9217.94 +2009-08-17,9313.85,9313.85,9078.28,9135.34,4854970000,9135.34 +2009-08-14,9398.04,9425.17,9214.47,9321.40,4940750000,9321.40 +2009-08-13,9362.29,9448.97,9269.26,9398.19,5250660000,9398.19 +2009-08-12,9236.06,9442.47,9199.80,9361.61,5498170000,9361.61 +2009-08-11,9334.33,9351.86,9180.23,9241.45,5773160000,9241.45 +2009-08-10,9368.41,9420.56,9249.99,9337.95,5406080000,9337.95 +2009-08-07,9258.45,9466.89,9258.45,9370.07,6827089600,9370.07 +2009-08-06,9277.19,9378.01,9168.44,9256.26,6753380000,9256.26 +2009-08-05,9315.36,9374.38,9173.20,9280.97,7242120000,9280.97 +2009-08-04,9285.05,9370.30,9207.21,9320.19,5713700000,9320.19 +2009-08-03,9173.65,9342.11,9162.09,9286.56,5603440000,9286.56 +2009-07-31,9154.61,9264.65,9081.30,9171.61,5139070000,9171.61 +2009-07-30,9072.84,9298.13,9072.84,9154.46,6035180000,9154.46 +2009-07-29,9092.34,9141.23,8967.26,9070.72,5178770000,9070.72 +2009-07-28,9106.92,9154.76,8980.03,9096.72,5490350000,9096.72 +2009-07-27,9093.09,9154.23,8996.58,9108.51,4631290000,9108.51 +2009-07-24,9066.11,9144.48,8955.77,9093.24,4458300000,9093.24 +2009-07-23,8882.31,9143.05,8837.95,9069.29,5761650000,9069.29 +2009-07-22,8912.39,8993.48,8802.13,8881.26,4634100000,8881.26 +2009-07-21,8848.15,8991.07,8780.82,8915.94,5309300000,8915.94 +2009-07-20,8746.05,8884.43,8717.26,8848.15,4853150000,8848.15 +2009-07-17,8711.89,8797.97,8638.81,8743.94,5141380000,8743.94 +2009-07-16,8612.66,8750.28,8543.97,8711.82,4898640000,8711.82 +2009-07-15,8363.95,8643.04,8363.95,8616.21,5238830000,8616.21 +2009-07-14,8331.37,8407.48,8255.27,8359.49,4149030000,8359.49 +2009-07-13,8146.82,8348.08,8106.16,8331.68,4499440000,8331.68 +2009-07-10,8182.49,8216.65,8057.57,8146.52,3912080000,8146.52 +2009-07-09,8179.01,8273.48,8117.27,8183.17,4347170000,8183.17 +2009-07-08,8157.02,8259.05,8057.94,8178.41,5721780000,8178.41 +2009-07-07,8324.95,8355.48,8138.51,8163.60,4673300000,8163.60 +2009-07-06,8279.30,8364.02,8156.49,8324.87,4712580000,8324.87 +2009-07-02,8503.00,8503.00,8260.41,8280.74,3931000000,8280.74 +2009-07-01,8447.53,8610.32,8447.00,8504.06,3919400000,8504.06 +2009-06-30,8528.93,8584.17,8369.99,8447.00,4627570000,8447.00 +2009-06-29,8440.13,8569.59,8406.57,8529.38,4211760000,8529.38 +2009-06-26,8468.54,8509.73,8364.17,8438.39,6076660000,8438.39 +2009-06-25,8299.25,8512.60,8236.07,8472.40,4911240000,8472.40 +2009-06-24,8323.51,8456.83,8246.20,8299.86,4636720000,8299.86 +2009-06-23,8340.44,8413.22,8239.17,8322.91,5071020000,8322.91 +2009-06-22,8538.52,8538.52,8306.66,8339.01,4903940000,8339.01 +2009-06-19,8556.96,8665.26,8476.02,8539.73,5713390000,8539.73 +2009-06-18,8496.73,8634.28,8438.61,8555.60,4684010000,8555.60 +2009-06-17,8504.36,8602.99,8421.46,8497.18,5523650000,8497.18 +2009-06-16,8612.44,8688.69,8483.58,8504.67,4951200000,8504.67 +2009-06-15,8798.50,8798.50,8540.87,8612.13,4697880000,8612.13 +2009-06-12,8770.01,8850.95,8671.61,8799.26,4528120000,8799.26 +2009-06-11,8736.23,8911.11,8697.99,8770.92,5500840000,8770.92 +2009-06-10,8763.66,8871.36,8625.21,8739.02,5379420000,8739.02 +2009-06-09,8764.83,8854.80,8688.99,8763.06,4439950000,8763.06 +2009-06-08,8759.35,8832.13,8593.84,8764.49,4483430000,8764.49 +2009-06-05,8751.75,8900.48,8673.41,8763.13,5277910000,8763.13 +2009-06-04,8665.72,8802.59,8609.17,8750.24,5352890000,8750.24 +2009-06-03,8740.07,8750.83,8556.90,8675.24,5323770000,8675.24 +2009-06-02,8721.60,8832.16,8635.25,8740.87,5987340000,8740.87 +2009-06-01,8501.53,8797.58,8501.53,8721.44,6370440000,8721.44 +2009-05-29,8404.04,8541.27,8323.91,8500.33,6050420000,8500.33 +2009-05-28,8300.50,8463.70,8221.65,8403.80,5738980000,8403.80 +2009-05-27,8473.65,8534.66,8280.82,8300.02,5698800000,8300.02 +2009-05-26,8275.33,8523.59,8194.33,8473.49,5667050000,8473.49 +2009-05-22,8292.21,8415.75,8218.86,8277.32,5155320000,8277.32 +2009-05-21,8416.07,8416.07,8185.25,8292.13,6019840000,8292.13 +2009-05-20,8471.82,8645.85,8376.40,8422.04,8205060000,8422.04 +2009-05-19,8502.48,8594.16,8402.61,8474.85,6616270000,8474.85 +2009-05-18,8270.15,8534.66,8270.15,8504.08,5702150000,8504.08 +2009-05-15,8326.22,8422.28,8206.67,8268.64,5439720000,8268.64 +2009-05-14,8285.92,8427.93,8218.94,8331.32,6134870000,8331.32 +2009-05-13,8461.80,8461.80,8208.74,8284.89,7091820000,8284.89 +2009-05-12,8419.17,8574.88,8306.47,8469.11,6871750400,8469.11 +2009-05-11,8569.23,8569.23,8347.41,8418.77,6150600000,8418.77 +2009-05-08,8410.73,8657.96,8388.11,8574.65,8163280000,8574.65 +2009-05-07,8513.56,8651.51,8296.04,8409.85,9120100000,8409.85 +2009-05-06,8403.48,8608.26,8350.12,8512.28,8555040000,8512.28 +2009-05-05,8425.55,8520.80,8321.37,8410.65,6882860000,8410.65 +2009-05-04,8213.60,8488.87,8213.60,8426.74,7038840000,8426.74 +2009-05-01,8167.41,8278.28,8047.54,8212.41,5312170000,8212.41 +2009-04-30,8188.51,8383.81,8083.62,8168.12,6862540000,8168.12 +2009-04-29,8018.31,8278.12,8018.31,8185.73,6101620000,8185.73 +2009-04-28,8023.56,8136.74,7898.75,8016.95,6328000000,8016.95 +2009-04-27,8073.82,8152.27,7920.42,8025.00,5613460000,8025.00 +2009-04-24,7957.45,8182.30,7905.60,8076.29,7114440000,8076.29 +2009-04-23,7886.81,8015.36,7762.80,7957.06,6563100000,7957.06 +2009-04-22,7964.78,8111.02,7802.46,7886.57,7327860000,7886.57 +2009-04-21,7841.73,8027.54,7699.79,7969.56,7436489600,7969.56 +2009-04-20,8128.94,8128.94,7801.58,7841.73,6973960000,7841.73 +2009-04-17,8125.43,8251.20,8024.92,8131.33,7352009600,8131.33 +2009-04-16,8029.14,8201.81,7933.08,8125.43,6598670000,8125.43 +2009-04-15,7914.92,8069.92,7808.19,8029.62,6241100000,8029.62 +2009-04-14,8057.41,8076.05,7840.53,7920.18,7569840000,7920.18 +2009-04-13,8082.02,8146.86,7888.96,8057.81,6434890000,8057.81 +2009-04-09,7839.89,8150.44,7839.89,8083.38,7600710400,8083.38 +2009-04-08,7788.68,7925.36,7715.09,7837.11,5938460000,7837.11 +2009-04-07,7968.92,7968.92,7733.56,7789.56,5155580000,7789.56 +2009-04-06,8016.16,8037.42,7830.66,7975.85,6210000000,7975.85 +2009-04-03,7980.63,8090.71,7850.33,8017.59,5855640000,8017.59 +2009-04-02,7763.99,8129.33,7763.99,7978.08,7542809600,7978.08 +2009-04-01,7606.13,7804.77,7450.74,7761.60,6034140000,7761.60 +2009-03-31,7523.77,7744.24,7502.98,7608.92,6089100000,7608.92 +2009-03-30,7773.31,7773.31,7406.85,7522.02,5912660000,7522.02 +2009-03-27,7922.57,7922.57,7695.97,7776.18,5600210000,7776.18 +2009-03-26,7752.36,7969.00,7709.19,7924.56,6992960000,7924.56 +2009-03-25,7659.81,7897.48,7539.54,7749.81,7687180000,7749.81 +2009-03-24,7773.47,7837.11,7585.98,7660.21,6767980000,7660.21 +2009-03-23,7279.25,7789.24,7279.25,7775.86,7715769600,7775.86 +2009-03-20,7402.31,7524.81,7215.77,7278.38,7643720000,7278.38 +2009-03-19,7489.68,7624.45,7325.13,7400.80,9033870400,7400.80 +2009-03-18,7395.70,7592.03,7218.24,7486.58,9098449600,7486.58 +2009-03-17,7218.00,7407.41,7129.60,7395.70,6156800000,7395.70 +2009-03-16,7225.33,7428.75,7171.41,7216.97,7883540000,7216.97 +2009-03-13,7219.20,7241.98,7106.34,7223.98,6787089600,7223.98 +2009-03-12,6932.39,7198.25,6840.79,7170.06,7326630400,7170.06 +2009-03-11,6923.13,7078.22,6804.55,6930.40,7287809600,6930.40 +2009-03-10,6547.01,6951.50,6547.01,6926.49,8618329600,6926.49 +2009-03-09,6625.74,6758.44,6440.08,6547.05,7277320000,6547.05 +2009-03-06,6595.16,6776.44,6443.27,6626.94,7331830400,6626.94 +2009-03-05,6874.01,6874.01,6531.28,6594.44,7507249600,6594.44 +2009-03-04,6726.50,7012.19,6715.11,6875.84,7673620000,6875.84 +2009-03-03,6764.81,6922.59,6661.74,6726.02,7583230400,6726.02 +2009-03-02,7056.48,7056.48,6736.69,6763.29,7868289600,6763.29 +2009-02-27,7180.97,7244.61,6952.06,7062.93,8926480000,7062.93 +2009-02-26,7269.06,7451.13,7135.25,7182.08,7599969600,7182.08 +2009-02-25,7349.58,7442.13,7123.94,7270.89,7483640000,7270.89 +2009-02-24,7115.34,7396.34,7077.35,7350.94,7234489600,7350.94 +2009-02-23,7365.99,7477.10,7092.64,7114.78,6509300000,7114.78 +2009-02-20,7461.49,7500.44,7226.29,7365.67,8210590400,7365.67 +2009-02-19,7555.23,7679.01,7420.63,7465.95,5746940000,7465.95 +2009-02-18,7546.35,7661.56,7451.37,7555.63,5740710000,7555.63 +2009-02-17,7845.63,7845.63,7502.59,7552.60,5907820000,7552.60 +2009-02-13,7933.00,8005.96,7811.38,7850.41,5296650000,7850.41 +2009-02-12,7931.97,7956.02,7662.04,7932.76,6476460000,7932.76 +2009-02-11,7887.05,8042.36,7820.14,7939.53,5926460000,7939.53 +2009-02-10,8269.36,8293.17,7835.83,7888.88,6770169600,7888.88 +2009-02-09,8281.38,8376.56,8137.70,8270.87,5574370000,8270.87 +2009-02-06,8056.38,8360.07,8044.03,8280.59,6484100000,8280.59 +2009-02-05,7954.83,8138.65,7811.70,8063.07,6624030000,8063.07 +2009-02-04,8070.32,8197.04,7899.79,7956.66,6420450000,7956.66 +2009-02-03,7936.99,8157.13,7855.19,8078.36,5886310000,8078.36 +2009-02-02,8000.62,8053.43,7796.17,7936.83,5673270000,7936.83 +2009-01-30,8149.01,8243.95,7924.88,8000.86,5350580000,8000.86 +2009-01-29,8373.06,8373.06,8092.14,8149.01,5067060000,8149.01 +2009-01-28,8175.93,8446.33,8175.93,8375.45,6199180000,8375.45 +2009-01-27,8117.39,8264.10,8042.60,8174.73,5353260000,8174.73 +2009-01-26,8078.04,8278.12,7971.15,8116.03,6039940000,8116.03 +2009-01-23,8108.79,8187.88,7856.86,8077.56,5832160000,8077.56 +2009-01-22,8224.43,8239.33,7925.75,8122.80,5843830000,8122.80 +2009-01-21,7949.17,8286.40,7890.63,8228.10,6467830000,8228.10 +2009-01-20,8279.63,8309.02,7920.66,7949.09,6375230000,7949.09 +2009-01-16,8215.67,8424.59,8086.01,8281.22,6786040000,8281.22 +2009-01-15,8196.24,8326.06,7949.65,8212.49,7807350400,8212.49 +2009-01-14,8446.01,8446.01,8097.95,8200.14,5407880000,8200.14 +2009-01-13,8474.61,8584.68,8325.59,8448.56,5567460000,8448.56 +2009-01-12,8599.26,8653.97,8391.85,8473.97,4725050000,8473.97 +2009-01-09,8738.80,8800.45,8541.75,8599.18,4716500000,8599.18 +2009-01-08,8769.94,8807.14,8593.52,8742.46,4991550000,8742.46 +2009-01-07,8996.94,8996.94,8690.45,8769.70,4704940000,8769.70 +2009-01-06,8954.57,9175.19,8868.07,9015.10,5392620000,9015.10 +2009-01-05,9027.13,9093.47,8841.70,8952.89,5413910000,8952.89 +2009-01-02,8772.25,9080.57,8725.10,9034.69,4048270000,9034.69 +2008-12-31,8666.48,8862.65,8634.06,8776.39,4172940000,8776.39 +2008-12-30,8487.51,8700.89,8463.70,8668.39,3627800000,8668.39 +2008-12-29,8515.87,8575.60,8349.24,8483.93,3323430000,8483.93 +2008-12-26,8468.71,8581.58,8434.94,8515.55,1880050000,8515.55 +2008-12-24,8428.17,8498.26,8417.02,8468.48,1546550000,8468.48 +2008-12-23,8518.65,8647.60,8376.80,8419.49,4051970000,8419.49 +2008-12-22,8573.37,8672.06,8351.79,8519.69,4869850000,8519.69 +2008-12-19,8606.50,8823.78,8499.06,8579.11,6705310000,8579.11 +2008-12-18,8823.94,8946.36,8516.02,8604.99,5675000000,8604.99 +2008-12-17,8921.91,9001.96,8701.13,8824.34,5907380000,8824.34 +2008-12-16,8565.65,8985.63,8534.03,8924.14,6009780000,8924.14 +2008-12-15,8628.81,8738.40,8431.04,8564.53,4982390000,8564.53 +2008-12-12,8563.10,8705.43,8272.22,8629.68,5959590000,8629.68 +2008-12-11,8750.13,8861.86,8480.18,8565.09,5513840000,8565.09 +2008-12-10,8693.00,8942.46,8589.86,8761.42,5942130000,8761.42 +2008-12-09,8934.10,8978.14,8591.69,8691.33,5693110000,8691.33 +2008-12-08,8637.65,9151.61,8637.65,8934.18,6553600000,8934.18 +2008-12-05,8376.08,8722.47,8084.25,8635.42,6165370000,8635.42 +2008-12-04,8587.07,8705.98,8222.84,8376.24,5860390000,8376.24 +2008-12-03,8409.14,8654.77,8170.19,8591.69,6221880000,8591.69 +2008-12-02,8153.75,8490.62,8072.47,8419.09,6170100000,8419.09 +2008-12-01,8826.89,8826.89,8123.04,8149.09,6052010000,8149.09 +2008-11-28,8690.24,8840.33,8687.05,8829.04,2740860000,8829.04 +2008-11-26,8464.49,8760.46,8250.80,8726.61,5793260000,8726.61 +2008-11-25,8445.14,8682.09,8244.43,8479.47,6952700000,8479.47 +2008-11-24,8048.09,8624.27,8023.32,8443.39,7879440000,8443.39 +2008-11-21,7552.37,8121.45,7392.27,8046.42,9495900000,8046.42 +2008-11-20,7995.53,8224.35,7464.51,7552.29,9093740000,7552.29 +2008-11-19,8420.69,8534.34,7967.33,7997.28,6548600000,7997.28 +2008-11-18,8273.34,8540.08,8075.81,8424.75,6679470000,8424.75 +2008-11-17,8494.84,8596.31,8197.12,8273.58,4927490000,8273.58 +2008-11-14,8822.19,8980.93,8421.08,8497.31,5881030000,8497.31 +2008-11-13,8281.14,8898.41,7947.74,8835.25,7849120000,8835.25 +2008-11-12,8684.52,8684.52,8235.66,8282.66,5764180000,8282.66 +2008-11-11,8864.32,8892.20,8499.62,8693.96,4998340000,8693.96 +2008-11-10,8946.60,9212.94,8735.61,8870.54,4572000000,8870.54 +2008-11-07,8696.03,9032.54,8661.22,8943.81,4931640000,8943.81 +2008-11-06,9134.01,9216.37,8607.14,8695.79,6102230000,8695.79 +2008-11-05,9616.60,9628.15,9086.06,9139.27,5426640000,9139.27 +2008-11-04,9323.89,9711.46,9323.89,9625.28,5531290000,9625.28 +2008-11-03,9326.04,9488.92,9175.03,9319.83,4492280000,9319.83 +2008-10-31,9179.09,9498.48,9014.78,9325.01,6394350000,9325.01 +2008-10-30,9004.66,9380.36,8916.81,9180.69,6175830000,9180.69 +2008-10-29,9062.33,9405.05,8800.61,8990.96,7077800000,8990.96 +2008-10-28,8178.72,9112.51,8153.79,9065.12,7096950400,9065.12 +2008-10-27,8375.92,8639.64,8085.37,8175.77,5558050000,8175.77 +2008-10-24,8683.21,8683.21,8088.63,8378.95,6550050000,8378.95 +2008-10-23,8519.77,8864.48,8200.06,8691.25,7189900000,8691.25 +2008-10-22,9027.84,9027.84,8324.07,8519.21,6147980000,8519.21 +2008-10-21,9179.11,9293.07,9017.30,9045.21,5121830000,9045.21 +2008-10-20,8852.30,9305.89,8799.49,9265.43,5175640000,9265.43 +2008-10-17,8975.35,9304.38,8640.83,8852.22,6581780000,8852.22 +2008-10-16,8577.04,9073.64,8176.17,8979.26,7984500000,8979.26 +2008-10-15,9301.91,9301.91,8516.50,8577.91,6542330000,8577.91 +2008-10-14,9388.97,9924.28,9050.06,9310.99,8161990400,9310.99 +2008-10-13,8462.42,9501.91,8462.42,9387.61,7263369600,9387.61 +2008-10-10,8568.67,8989.13,7773.71,8451.19,11456230400,8451.19 +2008-10-09,9261.69,9522.77,8523.27,8579.19,8285670400,8579.19 +2008-10-08,9437.23,9778.04,9042.97,9258.10,8716329600,9258.10 +2008-10-07,9955.42,10205.04,9391.67,9447.11,7069209600,9447.11 +2008-10-06,10322.52,10322.52,9503.10,9955.50,7956020000,9955.50 +2008-10-03,10483.96,10844.69,10261.75,10325.38,6716120000,10325.38 +2008-10-02,10825.54,10843.10,10368.08,10482.85,6285640000,10482.85 +2008-10-01,10847.40,11022.06,10495.99,10831.07,5782130000,10831.07 +2008-09-30,10371.58,10922.03,10371.58,10850.66,6065000000,10850.66 +2008-09-29,11139.62,11139.62,10266.76,10365.45,7305060000,10365.45 +2008-09-26,11019.04,11218.48,10781.37,11143.13,5383610000,11143.13 +2008-09-25,10827.17,11206.05,10799.77,11022.06,5877640000,11022.06 +2008-09-24,10850.02,11041.02,10696.38,10825.17,4820360000,10825.17 +2008-09-23,11015.69,11214.65,10763.77,10854.17,5185730000,10854.17 +2008-09-22,11394.42,11450.81,10956.43,11015.69,5368130000,11015.69 +2008-09-19,11027.51,11415.48,11027.51,11388.44,9387169600,11388.44 +2008-09-18,10609.01,11149.07,10403.75,11019.69,10082689600,11019.69 +2008-09-17,11056.58,11068.87,10521.81,10609.66,9431870400,10609.66 +2008-09-16,10905.62,11193.12,10604.70,11059.02,9459830400,11059.02 +2008-09-15,11416.37,11416.37,10849.85,10917.51,8279510400,10917.51 +2008-09-12,11429.32,11532.72,11191.08,11421.99,6273260000,11421.99 +2008-09-11,11264.44,11461.15,11018.72,11433.71,6869249600,11433.71 +2008-09-10,11233.91,11453.50,11135.64,11268.92,6543440000,11268.92 +2008-09-09,11514.73,11623.50,11209.81,11230.73,7380630400,11230.73 +2008-09-08,11224.87,11656.64,11224.87,11510.74,7351340000,11510.74 +2008-09-05,11185.63,11301.73,10998.77,11220.96,5017080000,11220.96 +2008-09-04,11532.48,11532.48,11130.26,11188.23,5212500000,11188.23 +2008-09-03,11506.01,11629.69,11328.84,11532.88,5056980000,11532.88 +2008-09-02,11545.63,11831.29,11444.79,11516.92,4783560000,11516.92 +2008-08-29,11713.23,11730.49,11508.78,11543.55,3288120000,11543.55 +2008-08-28,11499.87,11756.46,11493.72,11715.18,3854280000,11715.18 +2008-08-27,11412.46,11575.14,11349.69,11502.51,3499610000,11502.51 +2008-08-26,11383.56,11483.62,11284.47,11412.87,3587570000,11412.87 +2008-08-25,11626.19,11626.19,11336.82,11386.25,3420600000,11386.25 +2008-08-22,11426.79,11684.00,11426.79,11628.06,3741070000,11628.06 +2008-08-21,11415.23,11501.29,11263.63,11430.21,4032590000,11430.21 +2008-08-20,11345.94,11511.06,11240.18,11417.43,4555030000,11417.43 +2008-08-19,11478.09,11501.45,11260.53,11348.55,4159760000,11348.55 +2008-08-18,11659.65,11744.49,11410.18,11479.39,3829290000,11479.39 +2008-08-15,11611.21,11776.41,11540.05,11659.90,4041820000,11659.90 +2008-08-14,11532.07,11744.33,11399.84,11615.93,4064000000,11615.93 +2008-08-13,11632.81,11689.05,11377.37,11532.96,4787600000,11532.96 +2008-08-12,11781.70,11830.39,11541.43,11642.47,4711290000,11642.47 +2008-08-11,11729.67,11933.55,11580.19,11782.35,5067310000,11782.35 +2008-08-08,11432.09,11808.49,11344.23,11734.32,4966810000,11734.32 +2008-08-07,11655.42,11680.50,11355.63,11431.43,5319380000,11431.43 +2008-08-06,11603.64,11745.71,11454.64,11656.07,4873420000,11656.07 +2008-08-05,11286.02,11652.24,11286.02,11615.77,1219310000,11615.77 +2008-08-04,11326.32,11449.67,11144.59,11284.15,4562280000,11284.15 +2008-08-01,11379.89,11512.61,11205.41,11326.32,4684870000,11326.32 +2008-07-31,11577.99,11631.16,11317.69,11378.02,5346050000,11378.02 +2008-07-30,11397.56,11681.47,11328.68,11583.69,5631330000,11583.69 +2008-07-29,11133.44,11444.05,11086.13,11397.56,5414240000,11397.56 +2008-07-28,11369.47,11439.25,11094.76,11131.08,4282960000,11131.08 +2008-07-25,11341.14,11540.78,11252.47,11370.69,4672560000,11370.69 +2008-07-24,11630.34,11714.21,11288.79,11349.28,6127980000,11349.28 +2008-07-23,11603.39,11820.21,11410.02,11632.38,6705830000,11632.38 +2008-07-22,11457.90,11692.79,11273.32,11602.50,6180230000,11602.50 +2008-07-21,11495.02,11663.40,11339.02,11467.34,4630640000,11467.34 +2008-07-18,11436.56,11599.57,11290.50,11496.57,5653280000,11496.57 +2008-07-17,11238.39,11538.50,11118.46,11446.66,7365209600,11446.66 +2008-07-16,10961.89,11308.41,10831.61,11239.28,6738630400,11239.28 +2008-07-15,11050.80,11201.67,10731.96,10962.54,7363640000,10962.54 +2008-07-14,11103.64,11299.70,10972.63,11055.19,5434860000,11055.19 +2008-07-11,11226.17,11292.04,10908.64,11100.54,6742200000,11100.54 +2008-07-10,11148.01,11351.24,11006.01,11229.02,5840430000,11229.02 +2008-07-09,11381.93,11505.12,11115.61,11147.44,5181000000,11147.44 +2008-07-08,11225.03,11459.52,11101.19,11384.21,6034110000,11384.21 +2008-07-07,11289.19,11477.52,11094.44,11231.96,5265420000,11231.96 +2008-07-03,11297.33,11336.49,11158.02,11288.53,3247590000,11288.53 +2008-07-02,11382.34,11510.41,11180.58,11215.51,5276090000,11215.51 +2008-07-01,11344.64,11465.79,11106.65,11382.26,5846290000,11382.26 +2008-06-30,11345.70,11504.55,11226.34,11350.01,5032330000,11350.01 +2008-06-27,11452.85,11556.33,11248.48,11346.51,6208260000,11346.51 +2008-06-26,11808.57,11808.57,11431.92,11453.42,5231280000,11453.42 +2008-06-25,11805.31,12008.70,11683.75,11811.83,4825640000,11811.83 +2008-06-24,11842.36,11962.37,11668.53,11807.43,4705050000,11807.43 +2008-06-23,11843.83,11986.96,11731.06,11842.36,4186370000,11842.36 +2008-06-20,12062.19,12078.23,11785.04,11842.69,5324900000,11842.69 +2008-06-19,12022.54,12188.31,11881.03,12063.09,4811670000,12063.09 +2008-06-18,12158.68,12212.33,11947.07,12029.06,4573570000,12029.06 +2008-06-17,12269.65,12378.67,12114.14,12160.30,3801960000,12160.30 +2008-06-16,12306.86,12381.44,12139.79,12269.08,3706940000,12269.08 +2008-06-13,12144.59,12376.72,12096.23,12307.35,4080420000,12307.35 +2008-06-12,12089.63,12337.72,12041.43,12141.58,4734240000,12141.58 +2008-06-11,12286.34,12317.20,12029.46,12083.77,4779980000,12083.77 +2008-06-10,12277.71,12425.98,12116.58,12289.76,4635070000,12289.76 +2008-06-09,12210.13,12406.36,12102.50,12280.32,4404570000,12280.32 +2008-06-06,12602.74,12602.74,12180.50,12209.81,4771660000,12209.81 +2008-06-05,12388.81,12652.81,12358.07,12604.45,4350790000,12604.45 +2008-06-04,12391.86,12540.37,12283.74,12390.48,4338640000,12390.48 +2008-06-03,12503.20,12620.98,12317.61,12402.85,4396380000,12402.85 +2008-06-02,12637.67,12645.40,12385.76,12503.82,3714320000,12503.82 +2008-05-30,12647.36,12750.84,12555.60,12638.32,3845630000,12638.32 +2008-05-29,12593.87,12760.21,12493.47,12646.22,3894440000,12646.22 +2008-05-28,12542.90,12693.77,12437.38,12594.03,3927240000,12594.03 +2008-05-27,12479.63,12626.84,12397.56,12548.35,3588860000,12548.35 +2008-05-23,12620.90,12637.43,12420.20,12479.63,3516380000,12479.63 +2008-05-22,12597.69,12743.68,12515.78,12625.62,3955960000,12625.62 +2008-05-21,12824.94,12926.71,12550.39,12601.19,4517990000,12601.19 +2008-05-20,13026.04,13026.04,12742.29,12828.68,3854320000,12828.68 +2008-05-19,12985.41,13170.97,12899.19,13028.16,3683970000,13028.16 +2008-05-16,12992.74,13069.52,12860.60,12986.80,3842590000,12986.80 +2008-05-15,12891.29,13028.16,12798.39,12992.66,3836480000,12992.66 +2008-05-14,12825.12,13037.44,12806.21,12898.38,3979370000,12898.38 +2008-05-13,12872.08,12957.65,12716.16,12832.18,4018590000,12832.18 +2008-05-12,12768.38,12903.33,12746.36,12876.05,3370630000,12876.05 +2008-05-09,12860.68,12871.75,12648.09,12745.88,3518620000,12745.88 +2008-05-08,12814.84,12965.95,12727.56,12866.78,3827550000,12866.78 +2008-05-07,13010.82,13097.77,12756.14,12814.35,4075860000,12814.35 +2008-05-06,12968.89,13071.07,12817.53,13020.83,3924100000,13020.83 +2008-05-05,13056.57,13105.75,12896.50,12969.54,3410090000,12969.54 +2008-05-02,13012.53,13191.49,12931.35,13058.20,3953030000,13058.20 +2008-05-01,12818.34,13079.94,12721.94,13010.00,4448780000,13010.00 +2008-04-30,12831.45,13052.91,12746.45,12820.13,4508890000,12820.13 +2008-04-29,12870.37,12970.27,12737.82,12831.94,3815320000,12831.94 +2008-04-28,12890.76,13015.62,12791.55,12871.75,3607000000,12871.75 +2008-04-25,12848.38,12987.29,12703.70,12891.86,3891150000,12891.86 +2008-04-24,12764.68,12979.88,12651.51,12848.95,4461660000,12848.95 +2008-04-23,12721.45,12883.80,12627.00,12763.22,4103610000,12763.22 +2008-04-22,12825.02,12870.86,12604.53,12720.23,3821900000,12720.23 +2008-04-21,12850.91,12902.69,12666.08,12825.02,3420570000,12825.02 +2008-04-18,12626.76,12965.47,12626.76,12849.36,4222380000,12849.36 +2008-04-17,12617.40,12725.93,12472.71,12620.49,3713880000,12620.49 +2008-04-16,12371.51,12670.56,12371.51,12619.27,4260370000,12619.27 +2008-04-15,12303.60,12459.36,12223.97,12362.47,3581230000,12362.47 +2008-04-14,12324.77,12430.86,12208.42,12302.06,3565020000,12302.06 +2008-04-11,12579.78,12579.78,12280.89,12325.42,3723790000,12325.42 +2008-04-10,12526.78,12705.90,12447.96,12581.98,3686150000,12581.98 +2008-04-09,12574.65,12686.93,12416.53,12527.26,3556670000,12527.26 +2008-04-08,12602.66,12664.38,12440.55,12576.44,3602500000,12576.44 +2008-04-07,12612.59,12786.83,12550.22,12612.43,3747780000,12612.43 +2008-04-04,12626.35,12738.30,12489.40,12609.42,3703100000,12609.42 +2008-04-03,12604.69,12734.97,12455.04,12626.03,3920100000,12626.03 +2008-04-02,12651.67,12790.28,12488.22,12608.92,4320440000,12608.92 +2008-04-01,12266.64,12693.93,12266.64,12654.36,4745120000,12654.36 +2008-03-31,12215.92,12384.84,12095.18,12262.89,4188990000,12262.89 +2008-03-28,12303.92,12441.67,12164.22,12216.40,3686980000,12216.40 +2008-03-27,12421.88,12528.13,12264.76,12302.46,4037930000,12302.46 +2008-03-26,12531.79,12531.79,12309.62,12422.86,4055670000,12422.86 +2008-03-25,12547.34,12639.82,12397.62,12532.60,4145120000,12532.60 +2008-03-24,12361.97,12687.61,12346.17,12548.64,4499000000,12548.64 +2008-03-20,12102.43,12434.34,12024.68,12361.32,6145220000,12361.32 +2008-03-19,12391.52,12525.19,12077.27,12099.66,5358550000,12099.66 +2008-03-18,11975.92,12411.63,11975.92,12392.66,5335630000,12392.66 +2008-03-17,11946.45,12119.69,11650.44,11972.25,5683010000,11972.25 +2008-03-14,12146.39,12249.86,11781.43,11951.09,5153780000,11951.09 +2008-03-13,12096.49,12242.29,11832.88,12145.74,5073360000,12145.74 +2008-03-12,12148.61,12360.58,12037.79,12110.24,4414280000,12110.24 +2008-03-11,11741.33,12205.98,11741.33,12156.81,5109080000,12156.81 +2008-03-10,11893.04,11993.75,11691.47,11740.15,4261240000,11740.15 +2008-03-07,12039.09,12131.33,11778.66,11893.69,4565410000,11893.69 +2008-03-06,12254.59,12267.86,12010.03,12040.39,4323460000,12040.39 +2008-03-05,12204.93,12392.74,12105.36,12254.99,4277710000,12254.99 +2008-03-04,12259.14,12291.22,11991.06,12213.80,4757180000,12213.80 +2008-03-03,12264.36,12344.71,12101.29,12258.90,4117570000,12258.90 +2008-02-29,12579.58,12579.58,12210.30,12266.39,4426730000,12266.39 +2008-02-28,12689.28,12713.99,12463.32,12582.18,3938580000,12582.18 +2008-02-27,12683.54,12815.59,12527.64,12694.28,3904700000,12694.28 +2008-02-26,12569.48,12771.14,12449.08,12684.92,4096060000,12684.92 +2008-02-25,12380.77,12612.47,12292.03,12570.22,3866350000,12570.22 +2008-02-22,12281.09,12429.05,12116.92,12381.02,3572660000,12381.02 +2008-02-21,12426.85,12545.79,12225.36,12284.30,3696660000,12284.30 +2008-02-20,12333.31,12489.29,12159.42,12427.26,3870520000,12427.26 +2008-02-19,12349.59,12571.11,12276.81,12337.22,3613550000,12337.22 +2008-02-15,12376.66,12441.20,12216.68,12348.21,3583300000,12348.21 +2008-02-14,12551.51,12611.26,12332.03,12376.98,3644760000,12376.98 +2008-02-13,12368.12,12627.76,12354.22,12552.24,3856420000,12552.24 +2008-02-12,12241.56,12524.12,12207.90,12373.41,4044640000,12373.41 +2008-02-11,12181.89,12332.76,12006.79,12240.01,3593140000,12240.01 +2008-02-08,12248.47,12330.97,12058.01,12182.13,3768490000,12182.13 +2008-02-07,12196.20,12366.99,12045.00,12247.00,4589160000,12247.00 +2008-02-06,12257.25,12436.33,12142.14,12200.10,4008120000,12200.10 +2008-02-05,12631.85,12631.85,12234.97,12265.13,4315740000,12265.13 +2008-02-04,12743.11,12810.34,12557.61,12635.16,3495780000,12635.16 +2008-02-01,12638.17,12841.88,12510.05,12743.19,4650770000,12743.19 +2008-01-31,12438.28,12734.74,12197.09,12650.36,4970290000,12650.36 +2008-01-30,12480.14,12715.96,12311.55,12442.83,4742760000,12442.83 +2008-01-29,12385.19,12604.92,12262.29,12480.30,4232960000,12480.30 +2008-01-28,12205.71,12423.81,12061.42,12383.89,4100930000,12383.89 +2008-01-25,12391.70,12590.69,12103.61,12207.17,4882250000,12207.17 +2008-01-24,12272.69,12522.82,12114.83,12378.61,5735300000,12378.61 +2008-01-23,11969.08,12339.10,11530.12,12270.17,3241680000,12270.17 +2008-01-22,12092.72,12167.42,11508.74,11971.19,6544690000,11971.19 +2008-01-18,12159.94,12441.85,11953.71,12099.30,6004840000,12099.30 +2008-01-17,12467.05,12597.85,12089.38,12159.21,5303130000,12159.21 +2008-01-16,12476.81,12699.05,12294.48,12466.16,5440620000,12466.16 +2008-01-15,12777.50,12777.50,12425.92,12501.11,4601640000,12501.11 +2008-01-14,12613.78,12866.10,12596.95,12778.15,3682090000,12778.15 +2008-01-11,12850.74,12863.34,12495.91,12606.30,4495840000,12606.30 +2008-01-10,12733.11,12931.29,12632.15,12853.09,5170490000,12853.09 +2008-01-09,12590.21,12814.97,12431.53,12735.31,5351030000,12735.31 +2008-01-08,12820.90,12998.11,12511.03,12589.07,4705390000,12589.07 +2008-01-07,12801.15,12984.95,12640.44,12827.49,4221260000,12827.49 +2008-01-04,13046.56,13049.65,12740.51,12800.18,4166000000,12800.18 +2008-01-03,13044.12,13197.43,12968.44,13056.72,3429500000,13056.72 +2008-01-02,13261.82,13338.23,12969.42,13043.96,3452650000,13043.96 +2007-12-31,13364.16,13423.91,13197.35,13264.82,2440880000,13264.82 +2007-12-28,13361.23,13494.30,13272.14,13365.87,2420510000,13365.87 +2007-12-27,13549.17,13551.53,13325.71,13359.61,2365770000,13359.61 +2007-12-26,13547.95,13614.53,13440.16,13551.69,2010500000,13551.69 +2007-12-24,13487.12,13562.72,13451.35,13550.04,2200000,13550.04 +2007-12-21,13241.66,13518.20,13241.66,13450.65,4508590000,13450.65 +2007-12-20,13206.46,13354.00,13112.98,13245.64,3526890000,13245.64 +2007-12-19,13231.98,13368.79,13097.77,13207.27,3401300000,13207.27 +2007-12-18,13168.66,13346.84,13059.32,13232.47,3723690000,13232.47 +2007-12-17,13339.20,13378.38,13111.92,13167.20,3569030000,13167.20 +2007-12-14,13515.11,13557.54,13284.66,13339.85,3401050000,13339.85 +2007-12-13,13473.98,13586.73,13281.00,13517.96,3635170000,13517.96 +2007-12-12,13434.80,13778.98,13299.61,13473.90,4482120000,13473.90 +2007-12-11,13726.87,13850.92,13374.89,13432.77,4080180000,13432.77 +2007-12-10,13623.55,13807.02,13582.50,13727.03,2911760000,13727.03 +2007-12-07,13618.27,13744.02,13514.22,13625.58,3177710000,13625.58 +2007-12-06,13445.85,13652.49,13362.37,13619.89,3568570000,13619.89 +2007-12-05,13244.01,13513.00,13244.01,13444.96,3663660000,13444.96 +2007-12-04,13311.24,13395.21,13139.56,13248.73,3343620000,13248.73 +2007-12-03,13368.22,13490.24,13207.60,13314.57,3323250000,13314.57 +2007-11-30,13314.25,13570.31,13225.32,13371.72,4422200000,13371.72 +2007-11-29,13287.91,13399.03,13150.21,13311.73,3524730000,13311.73 +2007-11-28,12958.04,13353.51,12958.04,13289.45,4508020000,13289.45 +2007-11-27,12744.78,13040.38,12711.98,12958.44,4320720000,12958.44 +2007-11-26,12979.99,13104.44,12707.26,12743.44,3706470000,12743.44 +2007-11-23,12889.45,12981.56,12796.29,12980.88,1612720000,12980.88 +2007-11-21,13006.65,13055.59,12725.39,12799.04,4076230000,12799.04 +2007-11-20,12955.92,13179.23,12800.74,13010.14,4875150000,13010.14 +2007-11-19,13176.30,13195.48,12871.14,12958.44,4119650000,12958.44 +2007-11-16,13109.48,13293.44,12987.22,13176.79,4168870000,13176.79 +2007-11-15,13230.68,13333.59,13007.95,13110.05,3941010000,13110.05 +2007-11-14,13305.47,13465.20,13159.88,13231.01,4031470000,13231.01 +2007-11-13,12975.11,13357.57,12975.11,13307.09,4141310000,13307.09 +2007-11-12,13039.16,13238.73,12910.40,12987.55,4192520000,12987.55 +2007-11-09,13261.17,13321.81,12920.65,13042.74,4587050000,13042.74 +2007-11-08,13299.70,13463.66,13001.93,13266.29,5439720000,13266.29 +2007-11-07,13646.72,13646.72,13269.46,13300.02,4353160000,13300.02 +2007-11-06,13542.34,13716.55,13460.73,13660.94,3879160000,13660.94 +2007-11-05,13592.58,13666.15,13393.67,13543.40,3819330000,13543.40 +2007-11-02,13569.90,13708.58,13381.64,13595.10,4285990000,13595.10 +2007-11-01,13924.16,13924.16,13522.75,13567.87,4241470000,13567.87 +2007-10-31,13792.06,13990.65,13711.59,13930.01,3953070000,13930.01 +2007-10-30,13869.04,13930.91,13719.80,13792.47,3212520000,13792.47 +2007-10-29,13807.35,13966.18,13748.33,13870.26,3124480000,13870.26 +2007-10-26,13675.66,13885.95,13622.01,13806.70,3612120000,13806.70 +2007-10-25,13677.85,13819.78,13471.87,13671.92,4183960000,13671.92 +2007-10-24,13675.58,13751.50,13423.74,13675.25,4003300000,13675.25 +2007-10-23,13568.93,13754.91,13494.95,13676.23,3309120000,13676.23 +2007-10-22,13521.62,13636.80,13337.90,13566.97,3471830000,13566.97 +2007-10-19,13888.47,13888.47,13478.94,13522.02,4160970000,13522.02 +2007-10-18,13887.90,13984.39,13746.22,13888.96,3203210000,13888.96 +2007-10-17,13920.66,14075.84,13738.66,13892.54,3638070000,13892.54 +2007-10-16,13986.34,14061.37,13810.68,13912.94,3234560000,13912.94 +2007-10-15,14092.43,14157.38,13877.82,13984.80,3139290000,13984.80 +2007-10-12,14016.34,14168.51,13949.85,14093.08,2788690000,14093.08 +2007-10-11,14079.10,14279.96,13917.82,14015.12,3911260000,14015.12 +2007-10-10,14165.02,14225.66,13963.26,14078.69,3044760000,14078.69 +2007-10-09,14043.73,14198.83,13980.90,14164.53,2932040000,14164.53 +2007-10-08,14065.36,14134.05,13747.41,14043.73,2040650000,14043.73 +2007-10-05,13969.07,14169.49,13965.05,14066.01,2919030000,14066.01 +2007-10-04,13967.89,14074.54,13894.98,13974.31,2690430000,13974.31 +2007-10-03,14038.86,14090.48,13883.43,13968.05,3065320000,13968.05 +2007-10-02,14087.14,14166.16,13951.72,14047.31,3101910000,14047.31 +2007-10-01,13895.71,14147.30,13869.86,14087.55,3281990000,14087.55 +2007-09-28,13912.94,13994.64,13802.96,13895.63,2925350000,13895.63 +2007-09-27,13879.53,13991.63,13811.17,13912.94,2872180000,13912.94 +2007-09-26,13779.30,13962.61,13741.26,13878.15,3237390000,13878.15 +2007-09-25,13757.84,13847.10,13629.16,13778.65,3187770000,13778.65 +2007-09-24,13821.57,13930.74,13702.89,13759.06,3131310000,13759.06 +2007-09-21,13768.33,13948.95,13740.61,13820.19,3679460000,13820.19 +2007-09-20,13813.52,13893.02,13680.21,13766.70,2957700000,13766.70 +2007-09-19,13740.61,13936.68,13689.80,13815.56,3846750000,13815.56 +2007-09-18,13403.18,13772.15,13379.68,13739.39,3708940000,13739.39 +2007-09-17,13441.95,13514.71,13306.69,13403.42,2598390000,13403.42 +2007-09-14,13421.39,13507.55,13273.68,13442.52,2641740000,13442.52 +2007-09-13,13292.38,13519.91,13292.38,13424.88,2877080000,13424.88 +2007-09-12,13298.31,13408.62,13195.40,13291.65,2885720000,13291.65 +2007-09-11,13129.40,13369.77,13124.68,13308.39,3015330000,13308.39 +2007-09-10,13116.39,13280.67,12992.02,13127.85,2835720000,13127.85 +2007-09-07,13360.74,13360.74,13059.16,13113.38,3191080000,13113.38 +2007-09-06,13306.44,13464.79,13217.11,13363.35,2459590000,13363.35 +2007-09-05,13442.85,13442.85,13203.86,13305.47,2991600000,13305.47 +2007-09-04,13358.39,13521.86,13248.57,13448.86,2766600000,13448.86 +2007-08-31,13240.84,13472.35,13240.84,13357.74,2731610000,13357.74 +2007-08-30,13287.91,13355.46,13126.39,13238.73,2582960000,13238.73 +2007-08-29,13043.07,13336.93,13020.63,13289.29,2824070000,13289.29 +2007-08-28,13318.43,13319.61,13024.29,13041.85,3078090000,13041.85 +2007-08-27,13377.16,13438.46,13248.32,13322.13,2406180000,13322.13 +2007-08-24,13231.78,13402.20,13174.27,13378.87,2541400000,13378.87 +2007-08-23,13237.27,13358.22,13127.69,13235.88,3084390000,13235.88 +2007-08-22,13088.26,13304.33,13075.34,13236.13,3309120000,13236.13 +2007-08-21,13120.05,13228.57,12975.68,13090.86,3012150000,13090.86 +2007-08-20,13078.51,13245.80,12938.77,13121.35,3321340000,13121.35 +2007-08-17,12848.05,13289.70,12847.24,13079.08,3570040000,13079.08 +2007-08-16,12859.52,12996.73,12455.92,12845.78,6509300000,12845.78 +2007-08-15,13021.93,13184.51,12800.83,12861.47,4290930000,12861.47 +2007-08-14,13235.72,13309.04,12974.30,13028.92,3814630000,13028.92 +2007-08-13,13238.24,13440.08,13163.54,13236.53,3696280000,13236.53 +2007-08-10,13270.59,13386.43,12958.04,13239.54,5345780000,13239.54 +2007-08-09,13652.33,13675.66,13196.05,13270.68,5889600000,13270.68 +2007-08-08,13497.23,13769.63,13386.92,13657.86,5499560000,13657.86 +2007-08-07,13467.72,13635.09,13282.38,13504.30,4909390000,13504.30 +2007-08-06,13183.13,13501.86,13077.05,13468.78,5067200000,13468.78 +2007-08-03,13462.25,13539.50,13156.79,13181.91,4272110000,13181.91 +2007-08-02,13357.82,13547.47,13272.79,13463.33,4368850000,13463.33 +2007-08-01,13211.09,13431.06,13041.77,13362.37,5256780000,13362.37 +2007-07-31,13360.66,13579.41,13182.15,13211.99,4524520000,13211.99 +2007-07-30,13266.21,13445.12,13143.87,13358.31,4128780000,13358.31 +2007-07-27,13472.68,13589.17,13228.57,13265.47,4784650000,13265.47 +2007-07-26,13783.12,13793.61,13307.74,13473.57,4472550000,13473.57 +2007-07-25,13718.25,13919.77,13607.70,13785.07,4283200000,13785.07 +2007-07-24,13940.90,13967.65,13661.51,13716.95,4115830000,13716.95 +2007-07-23,13851.73,14039.59,13819.54,13943.42,3102700000,13943.42 +2007-07-20,14000.73,14039.67,13745.65,13851.08,3745780000,13851.08 +2007-07-19,13918.79,14121.04,13860.18,14000.41,3251450000,14000.41 +2007-07-18,13955.05,14020.89,13768.73,13918.22,3609220000,13918.22 +2007-07-17,13951.96,14095.60,13880.67,13971.55,3007140000,13971.55 +2007-07-16,13907.09,14053.57,13834.33,13950.98,2704110000,13950.98 +2007-07-13,13859.86,13982.93,13784.83,13907.25,2801120000,13907.25 +2007-07-12,13579.33,13889.45,13579.33,13861.73,3489600000,13861.73 +2007-07-11,13500.40,13638.75,13435.45,13577.87,3082920000,13577.87 +2007-07-10,13648.59,13685.90,13463.57,13501.70,3244280000,13501.70 +2007-07-09,13612.66,13739.06,13563.89,13649.97,2715330000,13649.97 +2007-07-06,13559.01,13670.46,13501.54,13611.68,2441520000,13611.68 +2007-07-05,13576.24,13637.78,13459.84,13565.84,2622950000,13565.84 +2007-07-03,13556.87,13592.07,13531.83,13577.30,1560790000,13577.30 +2007-07-02,13409.60,13586.97,13406.59,13535.43,2648990000,13535.43 +2007-06-29,13422.61,13556.16,13291.32,13408.62,3165410000,13408.62 +2007-06-28,13427.48,13537.47,13342.05,13422.28,3006710000,13422.28 +2007-06-27,13336.93,13455.36,13205.08,13427.73,3398150000,13427.73 +2007-06-26,13352.37,13491.70,13272.79,13337.66,3398530000,13337.66 +2007-06-25,13360.09,13519.34,13273.68,13352.05,3287250000,13352.05 +2007-06-22,13545.03,13564.13,13323.51,13360.26,4284320000,13360.26 +2007-06-21,13486.66,13596.56,13368.79,13545.84,3161110000,13545.84 +2007-06-20,13636.56,13735.08,13469.43,13489.42,3286900000,13489.42 +2007-06-19,13611.68,13705.41,13527.14,13635.42,2873590000,13635.42 +2007-06-18,13639.00,13720.29,13560.15,13612.98,2480240000,13612.98 +2007-06-15,13556.65,13741.18,13556.65,13639.48,3406030000,13639.48 +2007-06-14,13482.43,13622.66,13444.07,13553.73,2813630000,13553.73 +2007-06-13,13287.62,13502.76,13287.62,13482.35,3077930000,13482.35 +2007-06-12,13424.39,13474.12,13264.05,13295.01,3056200000,13295.01 +2007-06-11,13423.74,13519.88,13335.16,13424.96,2525280000,13424.96 +2007-06-08,13267.14,13445.19,13207.73,13424.39,2993460000,13424.39 +2007-06-07,13463.48,13517.85,13236.34,13266.73,3538470000,13266.73 +2007-06-06,13590.66,13606.75,13403.10,13465.67,2964190000,13465.67 +2007-06-05,13673.19,13689.40,13523.70,13595.46,2939450000,13595.46 +2007-06-04,13667.21,13723.37,13575.14,13676.32,2738930000,13676.32 +2007-06-01,13628.69,13756.69,13562.54,13668.11,2927020000,13668.11 +2007-05-31,13633.00,13718.82,13564.49,13627.64,3335530000,13627.64 +2007-05-30,13517.89,13650.64,13403.26,13633.08,2980210000,13633.08 +2007-05-29,13507.28,13603.26,13428.86,13521.34,2571790000,13521.34 +2007-05-25,13441.94,13571.48,13410.00,13507.28,2316250000,13507.28 +2007-05-24,13522.60,13645.52,13391.56,13441.13,3365530000,13441.13 +2007-05-23,13540.84,13648.69,13476.72,13525.65,3084260000,13525.65 +2007-05-22,13544.99,13632.03,13466.57,13539.95,2860500000,13539.95 +2007-05-21,13556.53,13636.98,13473.31,13542.88,3465360000,13542.88 +2007-05-18,13476.40,13611.95,13454.46,13556.53,2959050000,13556.53 +2007-05-17,13486.96,13558.24,13384.89,13476.72,2868640000,13476.72 +2007-05-16,13374.13,13526.54,13325.49,13487.53,2915350000,13487.53 +2007-05-15,13346.05,13518.33,13302.65,13383.84,3071020000,13383.84 +2007-05-14,13325.81,13432.84,13265.02,13346.78,2776130000,13346.78 +2007-05-11,13212.20,13373.35,13192.62,13326.22,2720780000,13326.22 +2007-05-10,13359.05,13376.20,13161.08,13215.13,3031240000,13215.13 +2007-05-09,13300.62,13410.17,13229.92,13362.87,2935550000,13362.87 +2007-05-08,13309.40,13359.05,13192.45,13309.07,2795720000,13309.07 +2007-05-07,13264.13,13385.06,13218.87,13312.97,2545090000,13312.97 +2007-05-04,13243.08,13340.60,13176.61,13264.62,2761930000,13264.62 +2007-05-03,13206.65,13306.55,13131.42,13241.38,3007970000,13241.38 +2007-05-02,13133.94,13291.60,13105.34,13211.88,3189800000,13211.88 +2007-05-01,13062.75,13188.96,12993.02,13136.14,3400350000,13136.14 +2007-04-30,13120.21,13226.99,13003.91,13062.91,3093420000,13062.91 +2007-04-27,13104.04,13195.05,13002.37,13120.94,2732810000,13120.94 +2007-04-26,13088.84,13197.49,13016.43,13105.50,3211800000,13105.50 +2007-04-25,12951.42,13142.31,12929.80,13089.89,3252590000,13089.89 +2007-04-24,12919.64,13033.66,12845.12,12953.94,3119750000,12953.94 +2007-04-23,12961.49,13029.59,12867.96,12919.40,2575020000,12919.40 +2007-04-20,12811.15,13035.77,12811.15,12961.98,3329940000,12961.98 +2007-04-19,12799.77,12889.17,12677.47,12808.63,2913610000,12808.63 +2007-04-18,12771.08,12871.21,12691.20,12803.84,2971330000,12803.84 +2007-04-17,12719.56,12837.40,12669.50,12773.04,2920570000,12773.04 +2007-04-16,12611.64,12770.60,12596.36,12720.46,2870140000,12720.46 +2007-04-13,12551.91,12654.47,12504.04,12612.13,2690020000,12612.13 +2007-04-12,12483.64,12580.92,12407.50,12552.96,2770570000,12552.96 +2007-04-11,12573.12,12618.63,12432.53,12484.62,2950190000,12484.62 +2007-04-10,12568.49,12641.87,12496.48,12573.85,2510110000,12573.85 +2007-04-09,12562.64,12641.22,12505.83,12569.14,2349410000,12569.14 +2007-04-05,12505.73,12573.02,12501.25,12560.83,2357230000,12560.83 +2007-04-04,12511.36,12591.81,12444.55,12530.05,2616320000,12530.05 +2007-04-03,12431.28,12534.49,12378.94,12510.93,2921760000,12510.93 +2007-04-02,12354.52,12450.81,12284.54,12382.30,2875880000,12382.30 +2007-03-30,12348.91,12442.40,12237.87,12354.35,2903960000,12354.35 +2007-03-29,12301.48,12424.77,12251.89,12348.75,2854710000,12348.75 +2007-03-28,12396.49,12415.56,12234.50,12300.36,3000440000,12300.36 +2007-03-27,12468.59,12484.54,12336.89,12397.29,2673040000,12397.29 +2007-03-26,12480.37,12526.27,12339.53,12469.07,2754660000,12469.07 +2007-03-23,12460.50,12550.07,12396.89,12481.01,2619020000,12481.01 +2007-03-22,12446.72,12524.03,12364.21,12461.14,3129970000,12461.14 +2007-03-21,12288.98,12489.02,12220.49,12447.52,3184770000,12447.52 +2007-03-20,12226.81,12324.31,12172.66,12288.10,2795940000,12288.10 +2007-03-19,12110.41,12273.52,12110.41,12226.17,2777180000,12226.17 +2007-03-16,12160.16,12226.01,12053.05,12110.41,3393640000,12110.41 +2007-03-15,12133.16,12228.42,12060.10,12159.68,2821900000,12159.68 +2007-03-14,12074.52,12187.88,11926.79,12133.40,3758350000,12133.40 +2007-03-13,12307.49,12319.66,12049.85,12075.96,3485570000,12075.96 +2007-03-12,12275.68,12385.44,12205.58,12318.62,2664000000,12318.62 +2007-03-09,12262.06,12379.51,12200.62,12276.32,2623050000,12276.32 +2007-03-08,12193.33,12355.47,12183.79,12260.70,3014850000,12260.70 +2007-03-07,12204.46,12315.18,12122.11,12192.45,3141350000,12192.45 +2007-03-06,12051.17,12252.61,12051.17,12207.59,3358160000,12207.59 +2007-03-05,12111.61,12220.16,11973.58,12050.41,3480520000,12050.41 +2007-03-02,12233.78,12293.15,12064.91,12114.10,3312260000,12114.10 +2007-03-01,12265.59,12338.89,11996.17,12234.34,3874910000,12234.34 +2007-02-28,12214.92,12396.81,12122.03,12268.63,3925250000,12268.63 +2007-02-27,12628.90,12628.90,12078.85,12216.24,4065230000,12216.24 +2007-02-26,12647.88,12746.34,12562.72,12632.26,2822170000,12632.26 +2007-02-23,12679.89,12726.79,12578.51,12647.48,2579950000,12647.48 +2007-02-22,12735.77,12792.97,12621.93,12686.02,1950770000,12686.02 +2007-02-21,12782.87,12813.88,12662.79,12738.41,2606980000,12738.41 +2007-02-20,12766.85,12845.76,12675.04,12786.64,2337860000,12786.64 +2007-02-16,12764.13,12829.42,12685.86,12767.57,2399450000,12767.57 +2007-02-15,12741.70,12828.38,12681.85,12765.01,2490920000,12765.01 +2007-02-14,12651.29,12793.29,12623.21,12741.86,2699290000,12741.86 +2007-02-13,12549.19,12702.36,12549.19,12654.85,2652150000,12654.85 +2007-02-12,12595.90,12605.11,12536.77,12552.55,2395680000,12552.55 +2007-02-09,12638.03,12725.59,12518.58,12580.83,2951810000,12580.83 +2007-02-08,12639.16,12666.88,12576.59,12637.63,2816180000,12637.63 +2007-02-07,12656.86,12748.99,12589.56,12666.87,2618820000,12666.87 +2007-02-06,12661.66,12738.41,12586.44,12666.31,2608710000,12666.31 +2007-02-05,12641.08,12681.06,12630.50,12661.74,2439430000,12661.74 +2007-02-02,12673.84,12740.65,12582.99,12653.49,2569450000,12653.49 +2007-02-01,12617.20,12741.30,12563.85,12673.68,2914890000,12673.68 +2007-01-31,12520.03,12685.54,12461.30,12621.69,2976690000,12621.69 +2007-01-30,12484.70,12538.06,12463.07,12523.31,2706250000,12523.31 +2007-01-29,12487.10,12599.74,12422.93,12490.78,2730480000,12490.78 +2007-01-26,12503.28,12582.67,12391.44,12487.02,2626620000,12487.02 +2007-01-25,12621.77,12670.48,12461.54,12502.56,2994330000,12502.56 +2007-01-24,12534.37,12659.42,12489.98,12621.77,2783180000,12621.77 +2007-01-23,12467.96,12553.44,12467.96,12533.80,2975070000,12533.80 +2007-01-22,12566.33,12619.04,12389.68,12477.16,2540120000,12477.16 +2007-01-19,12567.93,12649.89,12462.50,12565.53,2777480000,12565.53 +2007-01-18,12575.06,12674.16,12487.90,12567.93,2822430000,12567.93 +2007-01-17,12563.53,12613.28,12550.95,12577.15,2690270000,12577.15 +2007-01-16,12555.84,12638.27,12489.90,12582.59,2599530000,12582.59 +2007-01-12,12514.66,12616.08,12432.30,12556.08,2686480000,12556.08 +2007-01-11,12442.96,12586.12,12413.72,12514.98,2857870000,12514.98 +2007-01-10,12417.00,12487.18,12313.01,12442.16,2764660000,12442.16 +2007-01-09,12424.77,12516.66,12337.85,12416.60,3038380000,12416.60 +2007-01-08,12393.93,12445.37,12337.53,12423.49,2763340000,12423.49 +2007-01-05,12480.05,12504.40,12326.79,12398.01,2919400000,12398.01 +2007-01-04,12467.32,12510.26,12405.47,12480.69,3004460000,12480.69 +2007-01-03,12459.54,12630.34,12373.82,12474.52,3429160000,12474.52 +2006-12-29,12500.48,12560.16,12423.81,12463.15,1678200000,12463.15 +2006-12-28,12510.57,12566.17,12440.23,12501.52,1508570000,12501.52 +2006-12-27,12463.46,12518.34,12407.62,12510.57,1667370000,12510.57 +2006-12-26,12341.94,12439.19,12301.40,12407.63,1310310000,12407.63 +2006-12-22,12407.87,12417.96,12341.77,12343.21,1647590000,12343.21 +2006-12-21,12461.62,12526.59,12369.97,12421.25,2322410000,12421.25 +2006-12-20,12471.32,12549.35,12393.45,12463.87,2387630000,12463.87 +2006-12-19,12439.51,12517.78,12348.50,12471.32,2717060000,12471.32 +2006-12-18,12446.24,12545.74,12372.30,12441.27,2568140000,12441.27 +2006-12-15,12417.96,12536.37,12377.35,12445.52,3229580000,12445.52 +2006-12-14,12317.50,12472.76,12271.44,12416.76,2729700000,12416.76 +2006-12-13,12312.71,12411.55,12263.19,12317.50,2552260000,12317.50 +2006-12-12,12328.24,12396.01,12222.65,12315.58,2738170000,12315.58 +2006-12-11,12306.21,12399.54,12245.32,12328.48,2289900000,12328.48 +2006-12-08,12256.21,12332.16,12243.31,12307.48,2440460000,12307.48 +2006-12-07,12310.13,12396.33,12233.06,12278.41,2743150000,12278.41 +2006-12-06,12328.72,12390.88,12239.95,12309.25,2725280000,12309.25 +2006-12-05,12283.69,12398.57,12218.24,12331.60,2755700000,12331.60 +2006-12-04,12195.57,12349.87,12149.27,12283.85,2766320000,12283.85 +2006-12-01,12220.97,12289.30,12070.52,12194.13,2800980000,12194.13 +2006-11-30,12226.73,12317.10,12118.42,12221.93,4006230000,12221.93 +2006-11-29,12134.40,12283.05,12119.70,12226.73,2790970000,12226.73 +2006-11-28,12095.27,12148.78,12073.40,12136.44,2639750000,12136.44 +2006-11-27,12279.13,12303.32,12079.01,12121.71,2711210000,12121.71 +2006-11-24,12321.71,12340.89,12219.28,12280.17,832550000,12280.17 +2006-11-22,12321.91,12403.54,12238.43,12326.95,2237710000,12326.95 +2006-11-21,12312.13,12409.31,12233.94,12321.59,2597940000,12321.59 +2006-11-20,12340.71,12400.10,12257.34,12316.54,2546710000,12316.54 +2006-11-17,12293.49,12342.55,12278.20,12342.55,2726100000,12342.55 +2006-11-16,12250.05,12375.37,12204.00,12305.82,2835730000,12305.82 +2006-11-15,12214.37,12326.07,12156.37,12251.71,2831130000,12251.71 +2006-11-14,12132.44,12261.15,12051.68,12218.01,3027480000,12218.01 +2006-11-13,12084.89,12164.22,12084.89,12131.88,2386340000,12131.88 +2006-11-10,12102.74,12173.08,12074.01,12108.43,2290200000,12108.43 +2006-11-09,12174.70,12236.10,12039.59,12103.30,3012050000,12103.30 +2006-11-08,12147.38,12233.54,12051.60,12176.54,2814820000,12176.54 +2006-11-07,12104.75,12239.94,12065.20,12156.77,2636390000,12156.77 +2006-11-06,11985.16,12146.45,11973.23,12105.55,2533550000,12105.55 +2006-11-03,12018.30,12095.30,11928.97,11986.04,2419730000,11986.04 +2006-11-02,12023.98,12070.25,11938.89,12018.54,2646180000,12018.54 +2006-11-01,12080.25,12160.70,11972.99,12031.02,2821160000,12031.02 +2006-10-31,12086.18,12160.46,11986.84,12080.73,2803030000,12080.73 +2006-10-30,12074.01,12117.07,12050.23,12086.49,2770440000,12086.49 +2006-10-27,12164.78,12202.72,12024.78,12090.26,2458450000,12090.26 +2006-10-26,12134.84,12236.10,12037.99,12163.66,2793350000,12163.66 +2006-10-25,12127.24,12212.16,12017.66,12134.68,2953540000,12134.68 +2006-10-24,12116.51,12204.80,12028.14,12127.88,2876890000,12127.88 +2006-10-23,12001.33,12177.35,11940.41,12116.91,2480430000,12116.91 +2006-10-20,12013.01,12087.38,11881.34,12002.37,2526410000,12002.37 +2006-10-19,11988.92,12082.33,11911.44,12011.73,2619830000,12011.73 +2006-10-18,11947.62,12108.91,11900.79,11992.68,2658840000,11992.68 +2006-10-17,11977.40,12024.54,11849.16,11950.02,2519620000,11950.02 +2006-10-16,11957.70,11996.92,11945.70,11980.59,2305920000,11980.59 +2006-10-13,11947.22,12009.97,11862.29,11960.51,2482920000,11960.51 +2006-10-12,11896.63,11959.14,11852.12,11947.70,2514350000,11947.70 +2006-10-11,11865.49,11907.60,11762.72,11852.13,2521000000,11852.13 +2006-10-10,11857.73,11930.33,11778.09,11867.17,2376140000,11867.17 +2006-10-09,11849.56,11923.53,11759.36,11857.81,1935170000,11857.81 +2006-10-06,11865.49,11921.04,11743.35,11850.21,2523000000,11850.21 +2006-10-05,11832.51,11869.33,11821.55,11866.69,2817240000,11866.69 +2006-10-04,11722.94,11879.18,11654.02,11850.61,3019880000,11850.61 +2006-10-03,11670.11,11794.41,11608.23,11727.34,2682690000,11727.34 +2006-10-02,11678.99,11773.60,11608.79,11670.35,2154480000,11670.35 +2006-09-29,11718.05,11782.49,11642.17,11679.07,2273430000,11679.07 +2006-09-28,11689.40,11775.36,11625.92,11718.45,2397820000,11718.45 +2006-09-27,11670.19,11775.60,11595.75,11689.24,2749190000,11689.24 +2006-09-26,11575.73,11723.74,11517.54,11669.39,2673350000,11669.39 +2006-09-25,11536.67,11616.23,11486.00,11575.81,2710240000,11575.81 +2006-09-22,11532.91,11588.62,11423.57,11508.10,2162880000,11508.10 +2006-09-21,11611.67,11677.39,11471.76,11533.23,2627440000,11533.23 +2006-09-20,11542.28,11680.19,11514.50,11613.19,2543070000,11613.19 +2006-09-19,11554.60,11605.67,11450.30,11540.91,2390850000,11540.91 +2006-09-18,11538.35,11588.22,11528.43,11555.00,2325080000,11555.00 +2006-09-15,11528.75,11661.38,11504.57,11560.77,3198030000,11560.77 +2006-09-14,11508.82,11548.84,11495.77,11527.39,2351220000,11527.39 +2006-09-13,11487.69,11605.59,11423.73,11543.32,2597220000,11543.32 +2006-09-12,11412.52,11512.74,11396.83,11498.09,2791580000,11498.09 +2006-09-11,11389.87,11468.88,11295.90,11396.84,2506430000,11396.84 +2006-09-08,11332.24,11448.30,11295.18,11392.11,2132890000,11392.11 +2006-09-07,11405.16,11443.66,11273.89,11331.44,2325850000,11331.44 +2006-09-06,11421.33,11469.27,11395.15,11406.20,2329870000,11406.20 +2006-09-05,11461.83,11533.87,11385.95,11469.28,2114480000,11469.28 +2006-09-01,11427.41,11476.40,11381.14,11464.15,1800520000,11464.15 +2006-08-31,11383.47,11451.03,11326.80,11381.15,1974540000,11381.15 +2006-08-30,11365.98,11452.95,11309.99,11382.91,2060690000,11382.91 +2006-08-29,11352.65,11432.38,11255.88,11369.94,2093720000,11369.94 +2006-08-28,11285.33,11411.24,11240.91,11352.01,1834920000,11352.01 +2006-08-25,11301.22,11350.09,11218.66,11284.05,1667580000,11284.05 +2006-08-24,11297.82,11386.59,11232.83,11304.46,1930320000,11304.46 +2006-08-23,11337.12,11394.75,11238.67,11297.90,1893670000,11297.90 +2006-08-22,11344.41,11426.13,11279.25,11339.84,1908740000,11339.84 +2006-08-21,11353.29,11381.46,11322.31,11345.04,1759240000,11345.04 +2006-08-18,11333.76,11437.66,11273.49,11381.47,2033910000,11381.47 +2006-08-17,11321.19,11372.34,11298.54,11334.96,2458340000,11334.96 +2006-08-16,11224.91,11373.78,11207.85,11327.12,2554570000,11327.12 +2006-08-15,11098.03,11271.25,11098.03,11230.26,2334100000,11230.26 +2006-08-14,11089.07,11242.83,11049.68,11097.87,2118020000,11097.87 +2006-08-11,11103.55,11121.40,11042.88,11088.02,2004540000,11088.02 +2006-08-10,11073.14,11176.47,10998.06,11124.37,2402190000,11124.37 +2006-08-09,11168.47,11296.22,11044.64,11076.18,2555180000,11076.18 +2006-08-08,11218.18,11319.51,11117.80,11173.59,2457840000,11173.59 +2006-08-07,11239.47,11294.14,11143.02,11219.38,2045660000,11219.38 +2006-08-04,11244.59,11367.94,11165.11,11240.35,2530970000,11240.35 +2006-08-03,11195.28,11304.78,11101.55,11242.59,2728440000,11242.59 +2006-08-02,11167.91,11228.98,11124.52,11199.92,2610750000,11199.92 +2006-08-01,11184.80,11210.65,11035.92,11125.73,2527690000,11125.73 +2006-07-31,11218.90,11265.80,11115.24,11185.68,2461300000,11185.68 +2006-07-28,11102.11,11282.05,11102.11,11219.70,2480420000,11219.70 +2006-07-27,11104.19,11245.47,11040.80,11100.43,2776710000,11100.43 +2006-07-26,11102.91,11208.09,10987.41,11102.51,2667710000,11102.51 +2006-07-25,11037.59,11133.73,11000.05,11103.71,2563930000,11103.71 +2006-07-24,10868.70,11096.35,10868.70,11051.05,2312720000,11051.05 +2006-07-21,10937.94,10995.73,10778.58,10868.38,2704090000,10868.38 +2006-07-20,11007.26,11098.75,10884.47,10928.10,2345580000,10928.10 +2006-07-19,10854.22,11038.16,10796.74,11011.42,2701980000,11011.42 +2006-07-18,10745.84,10867.02,10658.35,10799.23,2481750000,10799.23 +2006-07-17,10739.35,10858.22,10668.35,10747.36,2146410000,10747.36 +2006-07-14,10846.53,10892.64,10664.43,10739.35,2467120000,10739.35 +2006-07-13,11012.62,11015.19,10790.82,10846.29,2545760000,10846.29 +2006-07-12,11133.97,11181.12,10973.37,11013.18,2250450000,11013.18 +2006-07-11,11102.59,11186.32,10987.33,11134.77,2310850000,11134.77 +2006-07-10,11130.53,11174.47,11090.10,11103.55,1854590000,11103.55 +2006-07-07,11224.18,11227.62,11040.32,11090.67,1988150000,11090.67 +2006-07-06,11147.12,11301.58,11117.16,11225.30,2009160000,11225.30 +2006-07-05,11225.06,11239.47,11083.94,11151.82,2165070000,11151.82 +2006-07-03,11149.34,11277.09,11146.06,11228.02,1114470000,11228.02 +2006-06-30,11190.80,11288.86,11100.11,11150.22,3049560000,11150.22 +2006-06-29,10974.36,11225.06,10974.36,11190.80,2621250000,11190.80 +2006-06-28,10925.30,11026.07,10869.02,10973.56,2085490000,10973.56 +2006-06-27,11048.24,11064.09,10920.73,10924.74,2203130000,10924.74 +2006-06-26,10990.29,11089.07,10937.06,11045.28,1878580000,11045.28 +2006-06-23,11019.19,11098.67,10932.82,10989.09,2017270000,10989.09 +2006-06-22,11077.78,11127.73,10954.83,11019.11,2148180000,11019.11 +2006-06-21,10975.24,11165.91,10952.43,11079.46,2361230000,11079.46 +2006-06-20,10942.03,11066.73,10895.28,10974.84,2232950000,10974.84 +2006-06-19,11014.87,11098.99,10886.63,10942.11,2517200000,10942.11 +2006-06-16,11009.10,11045.04,10984.29,11014.54,2783390000,11014.54 +2006-06-15,10817.48,11049.85,10788.34,11015.19,2775480000,11015.19 +2006-06-14,10713.10,10816.99,10699.25,10816.91,2667990000,10816.91 +2006-06-13,10783.14,10893.04,10653.23,10706.14,3215770000,10706.14 +2006-06-12,10892.00,10969.32,10767.61,10792.58,2247010000,10792.58 +2006-06-09,10939.14,11015.67,10842.89,10891.92,2214000000,10891.92 +2006-06-08,10929.70,11032.15,10726.15,10938.82,3543790000,10938.82 +2006-06-07,11002.06,11107.48,10897.76,10930.90,2644170000,10930.90 +2006-06-06,11048.24,11140.45,10890.24,11002.14,2697650000,11002.14 +2006-06-05,11247.55,11259.96,11025.75,11048.72,2313470000,11048.72 +2006-06-02,11260.52,11329.28,11158.06,11247.87,2295540000,11247.87 +2006-06-01,11169.03,11290.86,11115.40,11260.28,2360160000,11260.28 +2006-05-31,11091.15,11225.78,11050.40,11168.31,2692160000,11168.31 +2006-05-30,11277.25,11277.25,11071.70,11094.43,2176190000,11094.43 +2006-05-26,11211.69,11329.36,11177.43,11278.61,1814020000,11278.61 +2006-05-25,11114.96,11258.12,11089.55,11211.05,2372730000,11211.05 +2006-05-24,11100.11,11241.15,10980.29,11117.32,2999030000,11117.32 +2006-05-23,11126.29,11254.68,11068.49,11098.35,2605250000,11098.35 +2006-05-22,11092.90,11175.03,11040.16,11125.32,2773010000,11125.32 +2006-05-19,11124.37,11254.60,11009.98,11144.06,2982300000,11144.06 +2006-05-18,11206.17,11301.26,11096.35,11128.29,2537490000,11128.29 +2006-05-17,11410.13,11412.28,11139.17,11205.61,2830200000,11205.61 +2006-05-16,11428.21,11520.42,11334.64,11419.89,2386210000,11419.89 +2006-05-15,11380.43,11485.61,11273.65,11428.77,2505660000,11428.77 +2006-05-12,11500.01,11551.40,11336.96,11380.99,2567970000,11380.99 +2006-05-11,11639.29,11660.58,11449.74,11500.73,2531520000,11500.73 +2006-05-10,11630.48,11709.09,11545.64,11642.65,2268550000,11642.65 +2006-05-09,11584.62,11684.28,11535.71,11639.77,2157290000,11639.77 +2006-05-08,11576.37,11665.14,11504.09,11584.54,2151300000,11584.54 +2006-05-05,11440.62,11616.16,11440.62,11577.74,2294760000,11577.74 +2006-05-04,11401.80,11512.18,11366.82,11438.86,2431450000,11438.86 +2006-05-03,11414.69,11472.96,11308.55,11400.28,2395230000,11400.28 +2006-05-02,11372.74,11427.43,11343.28,11416.44,2403470000,11416.44 +2006-05-01,11367.78,11476.96,11304.30,11343.29,2437040000,11343.29 +2006-04-28,11358.33,11462.95,11278.13,11367.14,2419920000,11367.14 +2006-04-27,11349.53,11465.75,11220.74,11382.51,2772010000,11382.51 +2006-04-26,11283.25,11428.77,11256.12,11354.49,2502690000,11354.49 +2006-04-25,11336.56,11401.32,11213.05,11283.25,2366380000,11283.25 +2006-04-24,11346.81,11420.05,11246.35,11336.32,2117330000,11336.32 +2006-04-21,11343.45,11468.16,11272.61,11347.45,2392630000,11347.45 +2006-04-20,11278.53,11429.25,11221.30,11342.89,2512920000,11342.89 +2006-04-19,11265.40,11379.79,11181.84,11278.77,2447310000,11278.77 +2006-04-18,11074.58,11302.30,11064.01,11268.77,2595440000,11268.77 +2006-04-17,11137.33,11203.13,11017.43,11073.78,1794650000,11073.78 +2006-04-13,11130.13,11210.73,11053.29,11137.65,1891940000,11137.65 +2006-04-12,11089.47,11194.00,11052.17,11129.97,1938100000,11129.97 +2006-04-11,11141.33,11220.98,11017.99,11089.63,2232880000,11089.63 +2006-04-10,11119.88,11211.37,11083.06,11141.33,1898320000,11141.33 +2006-04-07,11228.10,11268.92,11108.75,11120.04,2082470000,11120.04 +2006-04-06,11233.01,11294.30,11137.57,11216.50,2281680000,11216.50 +2006-04-05,11203.21,11290.30,11141.82,11239.55,2420020000,11239.55 +2006-04-04,11142.54,11269.17,11094.03,11203.85,2147660000,11203.85 +2006-04-03,11113.00,11287.02,11101.07,11144.94,2494080000,11144.94 +2006-03-31,11151.34,11229.47,11069.78,11109.32,2236710000,11109.32 +2006-03-30,11195.36,11259.08,11118.12,11150.70,2294560000,11150.70 +2006-03-29,11154.94,11283.97,11117.48,11215.70,2143540000,11215.70 +2006-03-28,11250.11,11312.31,11132.05,11154.54,2148580000,11154.54 +2006-03-27,11280.13,11314.96,11194.07,11250.11,2029700000,11250.11 +2006-03-24,11270.61,11353.21,11197.21,11279.97,2326070000,11279.97 +2006-03-23,11317.35,11363.46,11207.85,11270.29,1980940000,11270.29 +2006-03-22,11234.51,11358.01,11200.22,11317.43,2039810000,11317.43 +2006-03-21,11275.89,11364.34,11188.56,11235.47,2147370000,11235.47 +2006-03-20,11278.93,11350.73,11208.33,11274.53,1976830000,11274.53 +2006-03-17,11294.94,11294.94,11253.23,11279.65,2549620000,11279.65 +2006-03-16,11210.97,11324.80,11176.07,11253.24,2292180000,11253.24 +2006-03-15,11149.76,11258.28,11097.23,11209.77,2293000000,11209.77 +2006-03-14,11076.02,11190.96,11030.23,11151.34,2165270000,11151.34 +2006-03-13,11067.61,11157.82,11019.75,11076.02,2070330000,11076.02 +2006-03-10,10972.92,11125.41,10948.43,11076.34,2123450000,11076.34 +2006-03-09,11005.66,11093.39,10923.86,10972.28,2140110000,10972.28 +2006-03-08,10977.08,11065.61,10885.99,11005.74,2442870000,11005.74 +2006-03-07,10957.31,11032.31,10885.35,10980.69,2268050000,10980.69 +2006-03-06,11022.47,11084.66,10899.76,10958.59,2280190000,10958.59 +2006-03-03,11024.23,11125.01,10942.99,11021.59,2152950000,11021.59 +2006-03-02,11052.57,11090.91,10951.71,11025.51,2494590000,11025.51 +2006-03-01,10993.25,11115.80,10960.60,11053.53,2308320000,11053.53 +2006-02-28,11096.75,11115.24,10947.07,10993.41,2370860000,10993.41 +2006-02-27,11062.81,11180.48,11038.72,11097.55,1975320000,11097.55 +2006-02-24,11068.33,11085.38,11010.46,11061.85,1933010000,11061.85 +2006-02-23,11133.52,11167.83,11017.27,11069.22,2144210000,11069.22 +2006-02-22,11086.98,11159.02,11064.25,11137.17,2222380000,11137.17 +2006-02-21,11115.48,11182.68,11011.18,11069.06,2104320000,11069.06 +2006-02-17,11119.56,11178.80,11035.44,11115.32,2128260000,11115.32 +2006-02-16,11059.05,11154.14,10997.66,11120.68,2251490000,11120.68 +2006-02-15,11025.67,11115.56,10940.18,11058.97,2317590000,11058.97 +2006-02-14,10890.72,11071.54,10873.62,11028.39,2437940000,11028.39 +2006-02-13,10915.21,10982.93,10824.60,10892.32,1850080000,10892.32 +2006-02-10,10883.51,10972.76,10787.62,10919.05,2290050000,10919.05 +2006-02-09,10859.42,11003.50,10800.91,10883.35,2441920000,10883.35 +2006-02-08,10742.16,10897.44,10712.30,10858.62,2456860000,10858.62 +2006-02-07,10796.42,10874.79,10691.97,10749.76,2366370000,10749.76 +2006-02-06,10793.30,10868.62,10725.91,10798.27,2132360000,10798.27 +2006-02-03,10849.57,10905.28,10725.35,10793.62,2282210000,10793.62 +2006-02-02,10950.11,10987.73,10800.35,10851.98,2565300000,10851.98 +2006-02-01,10862.14,11001.82,10815.39,10953.95,2589410000,10953.95 +2006-01-31,10900.40,10970.28,10807.55,10864.86,2708310000,10864.86 +2006-01-30,10913.13,10930.34,10887.67,10899.92,2282730000,10899.92 +2006-01-27,10815.32,10988.29,10766.01,10907.21,2623620000,10907.21 +2006-01-26,10768.17,10827.96,10709.73,10809.47,2856780000,10809.47 +2006-01-25,10713.26,10832.93,10615.20,10709.74,2617060000,10709.74 +2006-01-24,10690.21,10804.75,10624.49,10712.22,2608720000,10712.22 +2006-01-23,10668.75,10783.70,10607.36,10688.77,2256070000,10688.77 +2006-01-20,10880.71,10890.08,10637.21,10667.39,2845810000,10667.39 +2006-01-19,10855.18,10965.00,10796.66,10880.71,2444020000,10880.71 +2006-01-18,10890.08,10934.90,10778.33,10854.86,2233200000,10854.86 +2006-01-17,10957.55,10977.01,10841.17,10896.32,2179970000,10896.32 +2006-01-13,10961.48,11033.04,10888.88,10959.87,2206510000,10959.87 +2006-01-12,11043.12,11070.10,10918.09,10962.36,2318350000,10962.36 +2006-01-11,11011.66,11099.15,10939.86,11043.44,2406130000,11043.44 +2006-01-10,11010.46,11054.49,10902.96,11011.58,2373080000,11011.58 +2006-01-09,10959.47,11053.93,10906.33,11011.90,2301490000,11011.90 +2006-01-06,10875.45,11005.98,10846.21,10959.31,2446560000,10959.31 +2006-01-05,10880.39,10951.39,10797.55,10882.15,2433340000,10882.15 +2006-01-04,10843.97,10946.27,10772.89,10880.15,2515330000,10880.15 +2006-01-03,10718.30,10888.40,10650.18,10847.41,2554570000,10847.41 +2005-12-30,10783.86,10801.87,10675.64,10717.50,1443500000,10717.50 +2005-12-29,10795.70,10870.71,10747.76,10784.82,1382540000,10784.82 +2005-12-28,10778.25,10858.07,10750.40,10796.26,1422360000,10796.26 +2005-12-27,10883.75,10956.99,10754.16,10777.77,1540470000,10777.77 +2005-12-23,10901.68,10904.40,10869.98,10883.27,1285810000,10883.27 +2005-12-22,10831.56,10928.34,10785.93,10889.44,1888500000,10889.44 +2005-12-21,10805.63,10933.70,10776.01,10833.73,2065170000,10833.73 +2005-12-20,10836.93,10905.28,10754.56,10805.55,1996690000,10805.55 +2005-12-19,10875.51,10970.04,10781.70,10836.53,2208810000,10836.53 +2005-12-16,10881.67,10978.21,10830.84,10875.59,2584190000,10875.59 +2005-12-15,10883.43,10985.01,10803.55,10881.67,2180590000,10881.67 +2005-12-14,10821.32,10953.07,10786.34,10883.51,2145520000,10883.51 +2005-12-13,10765.69,10902.64,10694.29,10823.72,2390020000,10823.72 +2005-12-12,10778.66,10857.02,10707.18,10767.77,1876550000,10767.77 +2005-12-09,10751.76,10845.33,10694.05,10778.58,1896290000,10778.58 +2005-12-08,10808.43,10871.11,10705.17,10755.12,2178300000,10755.12 +2005-12-07,10856.86,10916.89,10737.27,10810.91,2093830000,10810.91 +2005-12-06,10835.41,10956.13,10809.15,10856.86,2110740000,10856.86 +2005-12-05,10876.95,10923.37,10766.57,10835.01,2325840000,10835.01 +2005-12-02,10912.01,10952.83,10818.36,10877.51,2125580000,10877.51 +2005-12-01,10806.03,10969.97,10806.03,10912.57,2614830000,10912.57 +2005-11-30,10883.91,10959.80,10789.38,10805.87,2374690000,10805.87 +2005-11-29,10888.48,10994.85,10850.29,10888.16,2268340000,10888.16 +2005-11-28,10932.74,10992.39,10839.37,10890.72,2016900000,10890.72 +2005-11-25,10915.13,10997.50,10883.55,10931.62,724940000,10931.62 +2005-11-23,10865.90,10950.59,10855.42,10916.09,1985400000,10916.09 +2005-11-22,10815.96,10907.77,10729.99,10871.43,2291420000,10871.43 +2005-11-21,10766.33,10871.11,10708.86,10820.28,2117350000,10820.28 +2005-11-18,10719.34,10865.58,10663.79,10766.33,2453290000,10766.33 +2005-11-17,10677.00,10778.50,10619.61,10720.22,2298040000,10720.22 +2005-11-16,10697.81,10710.78,10653.14,10674.76,2121580000,10674.76 +2005-11-15,10697.01,10783.62,10610.08,10686.44,2359370000,10686.44 +2005-11-14,10686.60,10756.88,10618.89,10697.17,1899780000,10697.17 +2005-11-11,10641.30,10725.99,10595.89,10686.04,1773140000,10686.04 +2005-11-10,10550.61,10655.22,10519.71,10640.10,2378460000,10640.10 +2005-11-09,10539.24,10637.78,10466.24,10546.21,2214460000,10546.21 +2005-11-08,10574.18,10606.80,10478.49,10539.72,1965050000,10539.72 +2005-11-07,10531.24,10632.34,10488.74,10586.23,1987580000,10586.23 +2005-11-04,10523.23,10593.51,10441.59,10530.76,2050510000,10530.76 +2005-11-03,10470.49,10613.84,10421.98,10522.59,2716630000,10522.59 +2005-11-02,10406.29,10527.32,10347.70,10472.73,2648090000,10472.73 +2005-11-01,10437.51,10510.03,10352.42,10406.77,2457850000,10406.77 +2005-10-31,10403.17,10539.16,10372.67,10440.07,2567470000,10440.07 +2005-10-28,10231.15,10433.51,10213.14,10402.77,2379400000,10402.77 +2005-10-27,10334.81,10348.66,10229.95,10229.95,2395370000,10229.95 +2005-10-26,10377.39,10474.18,10283.10,10344.98,2467750000,10344.98 +2005-10-25,10383.88,10457.52,10282.78,10377.87,2312470000,10377.87 +2005-10-24,10219.15,10411.57,10219.15,10385.00,2197790000,10385.00 +2005-10-21,10282.22,10354.02,10161.60,10215.22,2470920000,10215.22 +2005-10-20,10411.73,10483.21,10230.27,10281.10,2617250000,10281.10 +2005-10-19,10277.18,10444.15,10173.52,10414.13,2703590000,10414.13 +2005-10-18,10349.14,10412.85,10233.47,10285.26,2197010000,10285.26 +2005-10-17,10287.42,10419.58,10213.06,10348.10,2054570000,10348.10 +2005-10-14,10216.59,10327.21,10165.12,10287.34,2188940000,10287.34 +2005-10-13,10216.91,10309.20,10098.18,10216.59,2351150000,10216.59 +2005-10-12,10247.40,10308.23,10186.17,10216.90,2491280000,10216.90 +2005-10-11,10239.16,10361.15,10195.13,10253.17,2299040000,10253.17 +2005-10-10,10292.95,10378.19,10184.09,10238.76,2195990000,10238.76 +2005-10-07,10287.42,10387.48,10221.47,10292.31,2126080000,10292.31 +2005-10-06,10317.36,10425.98,10200.81,10287.10,2792030000,10287.10 +2005-10-05,10434.81,10477.21,10299.27,10317.36,2546780000,10317.36 +2005-10-04,10534.36,10618.41,10409.89,10441.11,2341420000,10441.11 +2005-10-03,10569.50,10637.00,10486.17,10535.48,2097490000,10535.48 +2005-09-30,10540.51,10569.81,10526.34,10568.70,2097520000,10568.70 +2005-09-29,10472.61,10583.43,10389.01,10552.78,2176120000,10552.78 +2005-09-28,10456.61,10560.02,10390.05,10473.08,2106980000,10473.08 +2005-09-27,10444.58,10534.31,10376.83,10456.21,1976270000,10456.21 +2005-09-26,10420.22,10544.98,10381.53,10443.63,2022220000,10443.63 +2005-09-23,10421.81,10494.42,10328.59,10419.59,1973020000,10419.59 +2005-09-22,10376.20,10489.64,10303.51,10422.05,2424720000,10422.05 +2005-09-21,10484.23,10512.02,10335.28,10378.03,2548150000,10378.03 +2005-09-20,10558.19,10642.26,10453.98,10481.52,2319250000,10481.52 +2005-09-19,10641.87,10656.75,10497.29,10557.63,2076540000,10557.63 +2005-09-16,10560.50,10696.24,10539.64,10641.94,3152470000,10641.94 +2005-09-15,10545.85,10627.85,10488.05,10558.75,2079340000,10558.75 +2005-09-14,10545.85,10627.85,10488.05,10558.75,1986750000,10558.75 +2005-09-13,10673.71,10701.57,10561.61,10597.44,2082360000,10597.44 +2005-09-12,10678.41,10743.77,10618.13,10682.94,1938050000,10682.94 +2005-09-09,10594.10,10727.53,10573.47,10678.56,1992560000,10678.56 +2005-09-08,10633.11,10670.60,10530.01,10595.93,1955380000,10595.93 +2005-09-07,10588.68,10667.10,10534.23,10633.50,2067700000,10633.50 +2005-09-06,10447.69,10621.96,10447.69,10589.24,1932090000,10589.24 +2005-09-02,10460.67,10536.14,10400.88,10447.37,1640160000,10447.37 +2005-09-01,10481.44,10557.47,10382.09,10459.63,2229860000,10459.63 +2005-08-31,10415.84,10484.55,10357.65,10481.60,2365510000,10481.60 +2005-08-30,10461.54,10476.83,10329.15,10412.82,1916470000,10412.82 +2005-08-29,10396.90,10508.35,10321.42,10463.05,1599450000,10463.05 +2005-08-26,10450.95,10480.01,10355.02,10397.29,1541090000,10397.29 +2005-08-25,10434.39,10506.60,10391.71,10450.63,1571110000,10450.63 +2005-08-24,10519.34,10584.30,10407.56,10434.87,1930800000,10434.87 +2005-08-23,10571.01,10604.29,10475.63,10519.58,1678620000,10519.58 +2005-08-22,10559.78,10669.81,10509.07,10569.89,1621330000,10569.89 +2005-08-19,10552.70,10656.59,10503.90,10559.23,1558790000,10559.23 +2005-08-18,10531.12,10592.34,10517.67,10554.92,1808170000,10554.92 +2005-08-17,10505.60,10625.86,10472.45,10550.71,1859150000,10550.71 +2005-08-16,10631.59,10650.14,10489.24,10513.45,1820410000,10513.45 +2005-08-15,10599.19,10687.72,10532.48,10634.38,1562880000,10634.38 +2005-08-12,10682.70,10688.68,10549.19,10600.30,1709300000,10600.30 +2005-08-11,10591.83,10721.56,10549.43,10685.89,1941560000,10685.89 +2005-08-10,10606.52,10746.87,10553.81,10594.41,2172320000,10594.41 +2005-08-09,10537.65,10662.80,10537.01,10615.67,1897520000,10615.67 +2005-08-08,10557.24,10635.65,10497.45,10536.93,1804140000,10536.93 +2005-08-05,10610.34,10643.46,10512.49,10558.03,1930280000,10558.03 +2005-08-04,10696.80,10709.77,10568.70,10610.10,1981220000,10610.10 +2005-08-03,10681.51,10735.17,10600.02,10697.59,1999980000,10697.59 +2005-08-02,10623.79,10729.60,10600.62,10683.74,2043120000,10683.74 +2005-08-01,10641.78,10713.51,10578.97,10623.15,1716870000,10623.15 +2005-07-29,10705.16,10754.60,10608.27,10640.91,1789600000,10640.91 +2005-07-28,10633.50,10745.68,10603.49,10705.55,2001680000,10705.55 +2005-07-27,10579.45,10689.31,10530.50,10637.09,1945800000,10637.09 +2005-07-26,10597.60,10667.90,10535.58,10579.77,1934180000,10579.77 +2005-07-25,10651.66,10709.69,10565.12,10596.48,1717580000,10596.48 +2005-07-22,10624.19,10702.21,10552.54,10651.18,1766990000,10651.18 +2005-07-21,10690.03,10735.33,10567.98,10627.77,2129840000,10627.77 +2005-07-20,10629.52,10726.81,10535.10,10689.15,2063340000,10689.15 +2005-07-19,10576.90,10718.69,10573.00,10646.56,2041280000,10646.56 +2005-07-18,10640.19,10681.99,10533.59,10574.99,1582100000,10574.99 +2005-07-15,10629.44,10698.07,10559.46,10640.83,1716400000,10640.83 +2005-07-14,10559.86,10696.96,10559.86,10628.88,2048710000,10628.88 +2005-07-13,10513.36,10596.98,10481.36,10557.39,1812500000,10557.39 +2005-07-12,10519.49,10583.02,10444.46,10513.89,1932010000,10513.89 +2005-07-11,10449.60,10570.67,10425.97,10519.72,1846300000,10519.72 +2005-07-08,10302.90,10486.50,10279.65,10449.14,1900810000,10449.14 +2005-07-07,10269.76,10337.84,10142.24,10302.29,1952440000,10302.29 +2005-07-06,10366.52,10413.23,10242.21,10270.68,1883470000,10270.68 +2005-07-05,10292.62,10388.91,10282.64,10371.80,1805820000,10371.80 +2005-07-01,10273.59,10380.78,10239.91,10303.44,1593820000,10303.44 +2005-06-30,10374.18,10458.19,10253.49,10274.97,2109490000,10274.97 +2005-06-29,10405.94,10472.46,10332.52,10374.48,1769280000,10374.48 +2005-06-28,10291.01,10434.18,10285.86,10405.63,1772410000,10405.63 +2005-06-27,10298.07,10377.55,10229.40,10290.78,1738620000,10290.78 +2005-06-24,10422.28,10452.82,10266.30,10297.83,2418800000,10297.83 +2005-06-23,10587.09,10617.39,10401.49,10421.44,2029920000,10421.44 +2005-06-22,10599.36,10676.24,10543.28,10587.93,1823250000,10587.93 +2005-06-21,10608.88,10670.56,10545.89,10599.67,1720700000,10599.67 +2005-06-20,10621.54,10656.66,10539.21,10609.10,1714530000,10609.10 +2005-06-17,10580.41,10710.38,10561.00,10623.07,2407370000,10623.07 +2005-06-16,10566.76,10632.20,10501.92,10578.65,1776040000,10578.65 +2005-06-15,10548.65,10628.67,10471.69,10566.37,1840440000,10566.37 +2005-06-14,10521.95,10617.01,10473.92,10547.57,1698150000,10547.57 +2005-06-13,10503.57,10611.10,10437.32,10522.56,1661350000,10522.56 +2005-06-10,10503.02,10581.13,10410.50,10512.63,1664180000,10512.63 +2005-06-09,10477.75,10556.90,10410.80,10503.02,1824120000,10503.02 +2005-06-08,10484.84,10575.81,10439.77,10476.86,1715490000,10476.86 +2005-06-07,10466.00,10603.15,10454.18,10483.07,1851370000,10483.07 +2005-06-06,10461.64,10519.79,10410.28,10467.03,1547120000,10467.03 +2005-06-03,10552.82,10572.18,10427.35,10460.97,1627520000,10460.97 +2005-06-02,10548.83,10590.07,10478.26,10553.49,1813790000,10553.49 +2005-06-01,10462.86,10616.15,10433.48,10549.87,1810100000,10549.87 +2005-05-31,10541.89,10574.92,10437.77,10467.48,1840680000,10467.48 +2005-05-27,10537.08,10579.94,10489.35,10542.55,1381430000,10542.55 +2005-05-26,10458.68,10581.87,10450.55,10537.60,1654110000,10537.60 +2005-05-25,10503.17,10516.17,10396.46,10457.80,1742180000,10457.80 +2005-05-24,10522.68,10550.24,10433.78,10503.68,1681000000,10503.68 +2005-05-23,10472.80,10589.92,10438.36,10523.56,1681170000,10523.56 +2005-05-20,10492.75,10535.24,10400.60,10471.91,1631750000,10471.91 +2005-05-19,10464.45,10538.71,10394.39,10493.19,1775860000,10493.19 +2005-05-18,10323.19,10518.17,10323.19,10464.45,2266320000,10464.45 +2005-05-17,10247.49,10357.30,10175.81,10331.88,1887260000,10331.88 +2005-05-16,10139.61,10274.39,10118.32,10252.29,1856860000,10252.29 +2005-05-13,10188.23,10268.85,10062.76,10140.12,2188590000,10140.12 +2005-05-12,10299.74,10357.37,10155.86,10189.48,1995290000,10189.48 +2005-05-11,10272.91,10355.31,10172.86,10300.25,1834970000,10300.25 +2005-05-10,10382.94,10389.96,10230.35,10281.11,1889660000,10281.11 +2005-05-09,10345.40,10416.56,10288.95,10384.34,1857020000,10384.34 +2005-05-06,10339.71,10454.40,10300.70,10345.40,1707200000,10345.40 +2005-05-05,10384.49,10447.08,10276.75,10340.38,1997100000,10340.38 +2005-05-04,10255.25,10412.20,10239.95,10384.64,2306480000,10384.64 +2005-05-03,10251.04,10327.37,10169.39,10256.95,2167020000,10256.95 +2005-05-02,10192.00,10309.86,10149.06,10251.70,1980040000,10251.70 +2005-04-29,10073.47,10231.31,10021.23,10192.51,2362360000,10192.51 +2005-04-28,10194.58,10229.09,10036.74,10070.37,2182270000,10070.37 +2005-04-27,10150.32,10250.23,10048.27,10198.80,2151520000,10198.80 +2005-04-26,10240.99,10298.85,10108.79,10151.13,1959740000,10151.13 +2005-04-25,10158.52,10305.87,10148.25,10242.47,1795030000,10242.47 +2005-04-22,10216.68,10266.48,10055.29,10157.71,2045880000,10157.71 +2005-04-21,10010.51,10250.30,10010.51,10218.60,2308560000,10218.60 +2005-04-20,10131.18,10232.34,9978.74,10012.36,2217050000,10012.36 +2005-04-19,10071.55,10220.21,10021.08,10127.41,2142700000,10127.41 +2005-04-18,10088.54,10183.50,9961.52,10071.25,2180670000,10071.25 +2005-04-15,10276.61,10311.26,10059.36,10087.51,2689960000,10087.51 +2005-04-14,10403.71,10457.06,10248.23,10278.75,2355040000,10278.75 +2005-04-13,10507.45,10567.38,10355.16,10403.93,2049740000,10403.93 +2005-04-12,10448.63,10552.60,10331.21,10507.97,1979830000,10507.97 +2005-04-11,10462.08,10530.58,10393.36,10448.56,1525310000,10448.56 +2005-04-08,10546.32,10584.60,10445.31,10461.34,1661330000,10461.34 +2005-04-07,10485.88,10589.99,10434.30,10546.32,1900620000,10546.32 +2005-04-06,10453.45,10557.18,10434.22,10486.02,1797400000,10486.02 +2005-04-05,10421.14,10530.14,10372.59,10458.46,1870800000,10458.46 +2005-04-04,10401.71,10496.44,10307.64,10421.14,2079770000,10421.14 +2005-04-01,10504.57,10600.56,10349.02,10404.30,2168690000,10404.30 +2005-03-31,10541.59,10586.15,10448.19,10503.76,2214230000,10503.76 +2005-03-30,10405.77,10564.80,10395.21,10540.93,2097110000,10540.93 +2005-03-29,10486.10,10565.46,10351.76,10405.70,2223250000,10405.70 +2005-03-28,10444.13,10568.05,10412.79,10485.65,1746220000,10485.65 +2005-03-24,10457.06,10554.60,10415.16,10442.87,1721720000,10442.87 +2005-03-23,10470.58,10558.51,10384.34,10456.02,2246870000,10456.02 +2005-03-22,10565.39,10651.41,10446.78,10470.51,2114470000,10470.51 +2005-03-21,10629.90,10662.93,10503.46,10565.39,1819440000,10565.39 +2005-03-18,10627.83,10709.85,10520.60,10629.67,2344370000,10629.67 +2005-03-17,10633.30,10707.86,10561.10,10626.35,1581930000,10626.35 +2005-03-16,10741.63,10764.16,10569.30,10633.07,1653190000,10633.07 +2005-03-15,10804.29,10884.76,10716.87,10745.10,1513530000,10745.10 +2005-03-14,10773.92,10859.12,10709.26,10804.51,1437430000,10804.51 +2005-03-11,10845.30,10897.68,10728.62,10774.36,1449820000,10774.36 +2005-03-10,10806.28,10907.45,10757.36,10851.51,1604020000,10851.51 +2005-03-09,10912.32,10949.20,10768.66,10805.62,1704970000,10805.62 +2005-03-08,10935.60,10996.56,10863.40,10912.62,1523090000,10912.62 +2005-03-07,10940.55,11027.15,10886.09,10936.86,1488830000,10936.86 +2005-03-04,10834.51,10996.93,10834.51,10940.55,1636820000,10940.55 +2005-03-03,10812.27,10904.34,10744.14,10833.03,1616240000,10833.03 +2005-03-02,10825.68,10896.66,10736.16,10811.97,1568540000,10811.97 +2005-03-01,10794.98,10849.14,10769.04,10830.00,1708060000,10830.00 +2005-02-28,10842.05,10877.07,10709.41,10766.23,1795480000,10766.23 +2005-02-25,10748.42,10871.53,10698.32,10841.60,1523680000,10841.60 +2005-02-24,10672.24,10779.39,10612.24,10748.79,1518750000,10748.79 +2005-02-23,10609.28,10735.42,10583.64,10673.79,1501090000,10673.79 +2005-02-22,10783.38,10806.36,10596.79,10611.20,1744940000,10611.20 +2005-02-18,10755.15,10854.98,10682.29,10785.22,1551200000,10785.22 +2005-02-17,10835.03,10873.60,10729.95,10754.26,1580120000,10754.26 +2005-02-16,10832.03,10889.78,10746.21,10834.88,1490100000,10834.88 +2005-02-15,10791.06,10886.31,10745.10,10837.32,1527080000,10837.32 +2005-02-14,10795.72,10853.80,10722.63,10791.13,1290180000,10791.13 +2005-02-11,10742.92,10865.69,10680.15,10796.01,1562300000,10796.01 +2005-02-10,10665.00,10803.92,10633.67,10749.61,1491670000,10749.61 +2005-02-09,10717.76,10781.38,10621.84,10664.11,1511040000,10664.11 +2005-02-08,10712.51,10783.97,10647.85,10724.63,1416170000,10724.63 +2005-02-07,10715.76,10774.80,10650.59,10715.76,1347270000,10715.76 +2005-02-04,10593.17,10750.94,10553.93,10716.13,1648160000,10716.13 +2005-02-03,10592.21,10640.69,10511.96,10593.10,1554460000,10593.10 +2005-02-02,10551.05,10638.25,10501.02,10596.79,1561740000,10596.79 +2005-02-01,10489.72,10609.73,10464.38,10551.94,1681980000,10551.94 +2005-01-31,10428.76,10559.77,10414.49,10489.94,1679800000,10489.94 +2005-01-28,10470.58,10520.61,10331.58,10427.20,1641800000,10427.20 +2005-01-27,10498.14,10535.16,10379.47,10467.40,1600600000,10467.40 +2005-01-26,10463.19,10571.66,10433.56,10498.59,1635900000,10498.59 +2005-01-25,10369.42,10534.72,10369.42,10461.56,1610400000,10461.56 +2005-01-24,10393.58,10491.71,10317.10,10368.61,1494600000,10368.61 +2005-01-21,10471.98,10541.30,10370.97,10392.99,1643500000,10392.99 +2005-01-20,10538.90,10582.09,10414.72,10471.47,1692000000,10471.47 +2005-01-19,10626.05,10668.40,10519.20,10539.97,1498700000,10539.97 +2005-01-18,10554.23,10665.44,10456.61,10628.79,1596800000,10628.79 +2005-01-14,10506.71,10606.47,10475.01,10558.00,1335400000,10558.00 +2005-01-13,10617.41,10650.96,10463.26,10505.83,1510300000,10505.83 +2005-01-12,10561.32,10648.52,10481.37,10617.78,1562100000,10617.78 +2005-01-11,10619.77,10632.63,10504.72,10556.22,1488800000,10556.22 +2005-01-10,10603.44,10696.85,10544.99,10621.03,1490400000,10621.03 +2005-01-07,10624.80,10697.81,10545.80,10603.96,1477900000,10603.96 +2005-01-06,10593.19,10708.37,10555.48,10622.88,1569100000,10622.88 +2005-01-05,10629.53,10736.16,10561.03,10597.83,1738900000,10597.83 +2005-01-04,10727.81,10803.62,10587.48,10630.78,1720200000,10630.78 +2005-01-03,10783.75,10892.67,10694.18,10729.43,1505900000,10729.43 +2004-12-31,10800.30,10849.81,10759.94,10783.01,786900000,10783.01 +2004-12-30,10829.12,10880.03,10781.67,10800.30,829800000,10800.30 +2004-12-29,10853.72,10872.71,10771.26,10829.19,924900000,10829.19 +2004-12-28,10776.06,10890.82,10774.51,10854.54,984200000,10854.54 +2004-12-27,10828.01,10892.52,10755.67,10776.13,922000000,10776.13 +2004-12-23,10815.00,10895.10,10780.12,10827.12,956100000,10827.12 +2004-12-22,10752.34,10861.33,10709.78,10815.89,1390800000,10815.89 +2004-12-21,10661.89,10789.66,10646.60,10759.43,1483700000,10759.43 +2004-12-20,10652.14,10769.13,10622.20,10661.60,1422800000,10661.60 +2004-12-17,10704.83,10766.01,10562.76,10649.92,2335000000,10649.92 +2004-12-16,10691.71,10776.43,10612.31,10705.64,1793900000,10705.64 +2004-12-15,10675.71,10749.53,10601.74,10691.45,1695800000,10691.45 +2004-12-14,10640.53,10715.76,10571.67,10676.45,1544400000,10676.45 +2004-12-13,10543.44,10678.52,10520.61,10638.32,1436100000,10638.32 +2004-12-10,10552.16,10616.23,10469.62,10543.22,1443700000,10543.22 +2004-12-09,10492.45,10579.94,10389.81,10552.82,1624700000,10552.82 +2004-12-08,10438.77,10550.16,10395.05,10494.23,1525200000,10494.23 +2004-12-07,10546.80,10612.90,10423.21,10440.58,1533900000,10440.58 +2004-12-06,10591.32,10614.82,10490.31,10547.06,1354400000,10547.06 +2004-12-03,10597.90,10670.47,10515.73,10592.21,1566700000,10592.21 +2004-12-02,10590.44,10670.02,10485.21,10585.12,1774900000,10585.12 +2004-12-01,10425.80,10618.59,10421.66,10590.22,1772800000,10590.22 +2004-11-30,10475.27,10530.80,10380.58,10428.02,1553500000,10428.02 +2004-11-29,10520.64,10590.73,10390.92,10475.90,1378500000,10475.90 +2004-11-26,10518.69,10574.70,10479.52,10522.23,504580000,10522.23 +2004-11-24,10493.86,10565.76,10451.66,10520.31,1149600000,10520.31 +2004-11-23,10486.69,10547.28,10407.18,10492.60,1428300000,10492.60 +2004-11-22,10455.73,10535.46,10380.95,10489.42,1392700000,10489.42 +2004-11-19,10571.63,10588.29,10419.89,10456.91,1526600000,10456.91 +2004-11-18,10549.20,10639.43,10499.62,10572.55,1456700000,10572.55 +2004-11-17,10481.83,10655.09,10470.21,10549.57,1684200000,10549.57 +2004-11-16,10549.79,10570.56,10445.31,10487.65,1364400000,10487.65 +2004-11-15,10541.89,10612.31,10463.34,10550.24,1453300000,10550.24 +2004-11-12,10469.21,10565.48,10419.77,10539.01,1531600000,10539.01 +2004-11-11,10386.95,10513.42,10364.10,10469.84,1393000000,10469.84 +2004-11-10,10378.59,10470.21,10330.54,10385.48,1504300000,10385.48 +2004-11-09,10387.62,10466.81,10327.00,10386.37,1450800000,10386.37 +2004-11-08,10385.15,10452.58,10313.51,10391.31,1358700000,10391.31 +2004-11-05,10317.05,10458.10,10279.96,10387.54,1724400000,10387.54 +2004-11-04,10132.48,10352.81,10076.36,10314.76,1782700000,10314.76 +2004-11-03,10137.05,10253.27,10062.80,10137.05,1767500000,10137.05 +2004-11-02,10053.87,10180.85,9976.29,10035.73,1659000000,10035.73 +2004-11-01,10028.73,10124.44,9953.29,10054.39,1395900000,10054.39 +2004-10-29,10004.69,10083.44,9936.77,10027.47,1500800000,10027.47 +2004-10-28,9998.94,10074.89,9900.42,10004.54,1628200000,10004.54 +2004-10-27,9888.25,10051.96,9807.80,10002.03,1741900000,10002.03 +2004-10-26,9750.59,9914.65,9718.94,9888.48,1685400000,9888.48 +2004-10-25,9757.22,9827.20,9660.18,9749.99,1380500000,9749.99 +2004-10-22,9863.85,9920.99,9732.81,9757.81,1469600000,9757.81 +2004-10-21,9884.65,9969.07,9769.16,9865.76,1673000000,9865.76 +2004-10-20,9895.19,9957.05,9766.95,9886.93,1685700000,9886.93 +2004-10-19,9958.38,10064.20,9854.19,9897.62,1737500000,9897.62 +2004-10-18,9932.98,10002.18,9816.73,9956.32,1373300000,9956.32 +2004-10-15,9895.63,10022.31,9845.56,9933.38,1645100000,9933.38 +2004-10-14,10002.54,10048.48,9837.22,9894.45,1489500000,9894.45 +2004-10-13,10085.21,10157.11,9935.08,10002.33,1546200000,10002.33 +2004-10-12,10080.42,10121.49,9985.44,10077.18,1320100000,10077.18 +2004-10-11,10056.09,10142.74,10017.67,10081.97,943800000,10081.97 +2004-10-08,10124.11,10177.53,10013.91,10055.20,1291600000,10055.20 +2004-10-07,10239.84,10267.57,10086.83,10125.40,1447500000,10125.40 +2004-10-06,10170.70,10267.14,10112.20,10239.92,1416700000,10239.92 +2004-10-05,10216.76,10253.93,10123.19,10177.68,1418400000,10177.68 +2004-10-04,10191.40,10313.81,10153.79,10216.54,1534000000,10216.54 +2004-10-01,10082.04,10237.05,10081.38,10192.65,1582200000,10192.65 +2004-09-30,10136.38,10155.49,9987.36,10080.27,1748000000,10080.27 +2004-09-29,10078.06,10160.50,10002.57,10136.24,1402900000,10136.24 +2004-09-28,9989.73,10132.04,9950.71,10077.40,1396600000,10077.40 +2004-09-27,10046.65,10077.32,9952.78,9988.54,1263500000,9988.54 +2004-09-24,10039.42,10111.39,9993.92,10047.24,1255400000,10047.24 +2004-09-23,10108.29,10134.84,9999.67,10038.90,1286300000,10038.90 +2004-09-22,10244.05,10244.05,10075.33,10109.18,1379900000,10109.18 +2004-09-21,10204.52,10291.39,10159.54,10244.93,1325000000,10244.93 +2004-09-20,10283.87,10293.23,10152.90,10204.89,1197600000,10204.89 +2004-09-17,10245.82,10352.37,10219.71,10284.46,1422600000,10284.46 +2004-09-16,10231.59,10315.72,10194.35,10244.49,1113900000,10244.49 +2004-09-15,10316.90,10324.87,10195.60,10231.36,1256000000,10231.36 +2004-09-14,10315.13,10374.79,10260.93,10318.16,1204500000,10318.16 +2004-09-13,10306.65,10380.47,10250.61,10314.76,1299800000,10314.76 +2004-09-10,10289.47,10348.68,10196.19,10313.07,1261200000,10313.07 +2004-09-09,10313.36,10337.33,10269.49,10289.10,1371300000,10289.10 +2004-09-08,10342.42,10390.64,10267.94,10313.36,1246300000,10313.36 +2004-09-07,10261.52,10388.95,10255.62,10341.16,1214400000,10341.16 +2004-09-03,10277.82,10346.99,10229.52,10260.20,924170000,10260.20 +2004-09-02,10168.39,10312.99,10129.01,10290.28,1118400000,10290.28 +2004-09-01,10170.12,10230.48,10092.37,10168.46,1142100000,10168.46 +2004-08-31,10121.97,10198.03,10056.09,10173.92,1138200000,10173.92 +2004-08-30,10193.83,10226.87,10110.43,10122.52,843100000,10122.52 +2004-08-27,10174.07,10235.49,10143.91,10195.01,845400000,10195.01 +2004-08-26,10181.07,10225.61,10124.88,10173.41,1023600000,10173.41 +2004-08-25,10098.49,10224.29,10041.93,10181.74,1192200000,10181.74 +2004-08-24,10074.89,10165.07,10044.66,10098.63,1092500000,10098.63 +2004-08-23,10111.10,10159.54,10046.72,10073.05,1021900000,10073.05 +2004-08-20,10040.81,10143.76,9989.65,10110.14,1199900000,10110.14 +2004-08-19,10082.78,10111.91,9972.39,10040.82,1249400000,10040.82 +2004-08-18,9964.22,10097.01,9910.82,10083.15,1282500000,10083.15 +2004-08-17,9955.50,10053.21,9916.05,9972.83,1267800000,9972.83 +2004-08-16,9825.35,9987.58,9807.44,9954.55,1206200000,9954.55 +2004-08-13,9814.11,9897.34,9746.60,9825.35,1175100000,9825.35 +2004-08-12,9936.48,9940.02,9780.52,9814.59,1405100000,9814.59 +2004-08-11,9931.24,9981.61,9804.63,9938.32,1410400000,9938.32 +2004-08-10,9815.55,9961.70,9798.44,9944.67,1245600000,9944.67 +2004-08-09,9816.14,9902.49,9773.74,9814.66,1086000000,9814.66 +2004-08-06,9960.67,9963.47,9767.54,9815.33,1521000000,9815.33 +2004-08-05,10127.10,10158.44,9945.84,9963.03,1397400000,9963.03 +2004-08-04,10117.96,10186.16,10029.02,10126.51,1369200000,10126.51 +2004-08-03,10178.27,10228.49,10064.57,10120.24,1338300000,10120.24 +2004-08-02,10138.45,10224.29,10063.75,10179.16,1276000000,10179.16 +2004-07-30,10129.12,10194.13,10045.76,10139.71,1298200000,10139.71 +2004-07-29,10115.52,10213.08,10049.74,10129.24,1530100000,10129.24 +2004-07-28,10084.03,10170.31,9966.34,10117.07,1554300000,10117.07 +2004-07-27,9963.54,10133.95,9942.75,10085.14,1610800000,10085.14 +2004-07-26,9964.71,10054.32,9874.38,9961.92,1413400000,9961.92 +2004-07-23,10045.46,10069.51,9893.93,9962.22,1337500000,9962.22 +2004-07-22,10047.60,10114.41,9906.62,10050.33,1680800000,10050.33 +2004-07-21,10156.30,10279.96,10027.92,10046.13,1679500000,10046.13 +2004-07-20,10094.43,10186.90,10031.24,10149.07,1445800000,10149.07 +2004-07-19,10140.95,10211.60,10027.33,10094.06,1319900000,10094.06 +2004-07-16,10162.34,10289.40,10095.32,10139.78,1450300000,10139.78 +2004-07-15,10208.20,10275.27,10115.81,10163.16,1408700000,10163.16 +2004-07-14,10232.84,10313.95,10129.31,10208.80,1462000000,10208.80 +2004-07-13,10238.37,10297.58,10188.45,10247.59,1199700000,10247.59 +2004-07-12,10211.75,10284.39,10130.42,10238.22,1114600000,10238.22 +2004-07-09,10173.12,10277.16,10150.32,10213.22,1186300000,10213.22 +2004-07-08,10238.52,10297.73,10134.99,10171.56,1401100000,10171.56 +2004-07-07,10211.92,10300.53,10156.45,10240.29,1328600000,10240.29 +2004-07-06,10280.26,10308.43,10163.60,10219.34,1283300000,10219.34 +2004-07-02,10334.00,10371.40,10228.71,10282.83,1085000000,10282.83 +2004-07-01,10434.00,10473.23,10255.55,10334.16,1495700000,10334.16 +2004-06-30,10413.43,10489.16,10348.98,10435.48,1473800000,10435.48 +2004-06-29,10356.35,10460.25,10315.65,10413.43,1375000000,10413.43 +2004-06-28,10377.52,10505.16,10317.64,10357.09,1354600000,10357.09 +2004-06-25,10444.24,10514.67,10329.88,10371.84,1812900000,10371.84 +2004-06-24,10477.43,10530.01,10398.16,10443.81,1394900000,10443.81 +2004-06-23,10395.14,10498.67,10323.32,10479.57,1444200000,10479.57 +2004-06-22,10370.21,10431.05,10284.24,10395.07,1382300000,10395.07 +2004-06-21,10417.82,10471.76,10336.44,10371.47,1123900000,10371.47 +2004-06-18,10375.82,10471.84,10328.20,10416.41,1500600000,10416.41 +2004-06-17,10378.59,10417.69,10308.25,10377.52,1296700000,10377.52 +2004-06-16,10380.23,10433.52,10320.60,10379.58,1168400000,10379.58 +2004-06-15,10336.51,10464.04,10319.89,10380.43,1345900000,10380.43 +2004-06-14,10401.23,10403.50,10283.48,10334.73,1179400000,10334.73 +2004-06-10,10367.80,10448.00,10333.94,10410.10,1160600000,10410.10 +2004-06-09,10431.10,10466.59,10325.07,10368.44,1276800000,10368.44 +2004-06-08,10389.41,10462.97,10323.94,10432.52,1190300000,10432.52 +2004-06-07,10243.31,10410.81,10243.31,10391.08,1211800000,10391.08 +2004-06-04,10196.83,10327.84,10196.83,10242.82,1115300000,10242.82 +2004-06-03,10261.85,10309.46,10163.40,10195.91,1232400000,10195.91 +2004-06-02,10199.78,10310.10,10170.57,10262.97,1251700000,10262.97 +2004-06-01,10187.18,10254.17,10104.07,10202.65,1238000000,10202.65 +2004-05-28,10205.83,10250.27,10137.14,10188.45,1172600000,10188.45 +2004-05-27,10109.89,10267.66,10106.13,10205.20,1447500000,10205.20 +2004-05-26,10116.84,10175.75,10034.16,10109.89,1369400000,10109.89 +2004-05-25,9958.08,10139.27,9895.41,10117.62,1545700000,10117.62 +2004-05-24,9968.02,10084.91,9891.22,9958.43,1227500000,9958.43 +2004-05-21,9939.34,10058.50,9910.81,9966.74,1258600000,9966.74 +2004-05-20,9939.12,10014.50,9867.73,9937.64,1211000000,9937.64 +2004-05-19,9962.55,10124.79,9919.90,9937.71,1548600000,9937.71 +2004-05-18,9906.71,10028.27,9895.77,9968.51,1353000000,9968.51 +2004-05-17,10009.92,10009.92,9827.21,9906.91,1430100000,9906.91 +2004-05-14,10008.43,10096.69,9912.45,10012.87,1335900000,10012.87 +2004-05-13,10044.31,10100.24,9924.94,10010.74,1411100000,10010.74 +2004-05-12,10011.52,10089.87,9822.10,10045.16,1697600000,10045.16 +2004-05-11,9989.24,10092.78,9928.91,10019.47,1533800000,10019.47 +2004-05-10,10116.28,10116.28,9881.86,9990.02,1918400000,9990.02 +2004-05-07,10240.62,10302.93,10086.94,10117.34,1653600000,10117.34 +2004-05-06,10308.20,10332.10,10147.21,10241.26,1509300000,10241.26 +2004-05-05,10316.98,10382.98,10249.63,10310.95,1469000000,10310.95 +2004-05-04,10314.32,10403.14,10232.31,10317.20,1662100000,10317.20 +2004-05-03,10227.27,10365.74,10199.67,10314.00,1571600000,10314.00 +2004-04-30,10273.06,10374.61,10198.39,10225.57,1634700000,10225.57 +2004-04-29,10339.41,10443.81,10199.31,10272.27,1859000000,10272.27 +2004-04-28,10476.67,10479.58,10301.65,10342.60,1855600000,10342.60 +2004-04-27,10445.38,10570.92,10410.52,10478.16,1518000000,10478.16 +2004-04-26,10472.91,10540.26,10396.75,10444.73,1290600000,10444.73 +2004-04-23,10463.11,10543.95,10362.97,10472.84,1396100000,10472.84 +2004-04-22,10314.99,10529.12,10255.88,10461.20,1826700000,10461.20 +2004-04-21,10311.87,10398.53,10200.38,10317.27,1738100000,10317.27 +2004-04-20,10437.85,10530.61,10297.39,10314.50,1508500000,10314.50 +2004-04-19,10451.62,10501.79,10351.97,10437.85,1194900000,10437.85 +2004-04-16,10398.32,10500.57,10343.74,10451.97,1487800000,10451.97 +2004-04-15,10377.95,10481.21,10279.37,10397.46,1568700000,10397.46 +2004-04-14,10378.10,10453.39,10259.35,10377.95,1547700000,10377.95 +2004-04-13,10516.05,10572.13,10343.17,10381.28,1423200000,10381.28 +2004-04-12,10444.38,10559.28,10439.27,10515.56,1102400000,10515.56 +2004-04-08,10482.77,10590.15,10383.84,10442.03,1199800000,10442.03 +2004-04-07,10569.26,10580.51,10422.74,10480.15,1458800000,10480.15 +2004-04-06,10553.76,10596.37,10467.26,10570.81,1397700000,10570.81 +2004-04-05,10470.59,10582.22,10423.33,10558.37,1413700000,10558.37 +2004-04-02,10375.33,10548.74,10375.33,10470.59,1629200000,10470.59 +2004-04-01,10357.52,10449.33,10299.48,10373.33,1560700000,10373.33 +2004-03-31,10380.89,10428.59,10287.11,10357.70,1560700000,10357.70 +2004-03-30,10327.63,10411.41,10264.15,10381.70,1332400000,10381.70 +2004-03-29,10212.91,10389.93,10212.91,10329.63,1405500000,10329.63 +2004-03-26,10218.37,10306.22,10145.63,10212.97,1319100000,10212.97 +2004-03-25,10049.56,10246.15,10049.56,10218.82,1471700000,10218.82 +2004-03-24,10065.41,10140.23,9975.86,10048.23,1527800000,10048.23 +2004-03-23,10066.67,10177.04,10020.75,10063.64,1458200000,10063.64 +2004-03-22,10185.93,10185.93,9985.19,10064.75,1452300000,10064.75 +2004-03-19,10295.85,10355.41,10163.71,10186.60,1457400000,10186.60 +2004-03-18,10298.96,10355.04,10187.78,10295.78,1369200000,10295.78 +2004-03-17,10184.30,10356.59,10184.30,10300.30,1490100000,10300.30 +2004-03-16,10103.41,10253.26,10085.34,10184.67,1500700000,10184.67 +2004-03-15,10238.45,10252.68,10066.08,10102.89,1600600000,10102.89 +2004-03-12,10130.67,10281.63,10097.04,10240.08,1388500000,10240.08 +2004-03-11,10288.85,10356.22,10102.75,10128.38,1889900000,10128.38 +2004-03-10,10457.59,10523.11,10259.34,10296.89,1648400000,10296.89 +2004-03-09,10529.52,10567.03,10391.48,10456.96,1499400000,10456.96 +2004-03-08,10595.37,10677.85,10505.85,10529.48,1254400000,10529.48 +2004-03-05,10582.59,10681.40,10497.11,10595.55,1398200000,10595.55 +2004-03-04,10593.48,10645.33,10522.59,10588.00,1265800000,10588.00 +2004-03-03,10588.59,10651.03,10506.66,10593.11,1334500000,10593.11 +2004-03-02,10678.36,10713.92,10539.40,10591.48,1476000000,10591.48 +2004-03-01,10582.25,10720.14,10568.74,10678.14,1497100000,10678.14 +2004-02-27,10581.55,10689.55,10519.03,10583.92,1540400000,10583.92 +2004-02-26,10598.14,10652.96,10493.70,10580.14,1383900000,10580.14 +2004-02-25,10566.59,10660.73,10509.40,10601.62,1360700000,10601.62 +2004-02-24,10609.55,10681.40,10479.33,10566.37,1543600000,10566.37 +2004-02-23,10619.55,10711.84,10508.89,10609.62,1380400000,10609.62 +2004-02-20,10666.29,10722.77,10559.11,10619.03,1479600000,10619.03 +2004-02-19,10674.59,10794.95,10626.44,10664.73,1562800000,10664.73 +2004-02-18,10706.68,10764.36,10623.62,10671.99,1382400000,10671.99 +2004-02-17,10628.88,10762.07,10628.88,10714.88,1396500000,10714.88 +2004-02-13,10696.22,10755.47,10578.66,10627.85,1329200000,10627.85 +2004-02-12,10735.18,10775.03,10636.44,10694.07,1464300000,10694.07 +2004-02-11,10605.48,10779.40,10561.55,10737.70,1699300000,10737.70 +2004-02-10,10578.74,10667.03,10511.18,10613.85,1403900000,10613.85 +2004-02-09,10592.00,10634.81,10433.70,10579.03,1303500000,10579.03 +2004-02-06,10494.89,10634.81,10433.70,10593.03,1477600000,10593.03 +2004-02-05,10469.33,10566.37,10399.92,10495.55,1566600000,10495.55 +2004-02-04,10503.11,10567.85,10394.81,10470.74,1634800000,10470.74 +2004-02-03,10499.48,10571.48,10414.15,10505.18,1476900000,10505.18 +2004-02-02,10487.78,10614.44,10395.55,10499.18,1599200000,10499.18 +2004-01-30,10510.22,10551.03,10385.56,10488.07,1635000000,10488.07 +2004-01-29,10467.41,10611.56,10369.92,10510.29,1921900000,10510.29 +2004-01-28,10610.07,10703.25,10412.44,10468.37,1842000000,10468.37 +2004-01-27,10701.10,10748.81,10579.33,10609.92,1673100000,10609.92 +2004-01-26,10568.00,10725.18,10510.44,10702.51,1480600000,10702.51 +2004-01-23,10625.25,10691.77,10490.14,10568.29,1561200000,10568.29 +2004-01-22,10624.22,10717.40,10545.03,10623.18,1693700000,10623.18 +2004-01-21,10522.77,10665.70,10453.11,10623.62,1757600000,10623.62 +2004-01-20,10601.40,10676.96,10447.92,10528.66,1698200000,10528.66 +2004-01-16,10556.37,10666.88,10503.70,10600.51,1721100000,10600.51 +2004-01-15,10534.52,10639.03,10454.52,10553.85,1695000000,10553.85 +2004-01-14,10428.67,10573.85,10426.89,10538.37,1514600000,10538.37 +2004-01-13,10485.18,10539.25,10341.19,10427.18,1595900000,10427.18 +2004-01-12,10461.55,10543.03,10389.85,10485.18,1510200000,10485.18 +2004-01-09,10589.25,10603.48,10420.52,10458.89,1720700000,10458.89 +2004-01-08,10530.07,10651.99,10480.59,10592.44,1868400000,10592.44 +2004-01-07,10535.46,10587.55,10432.00,10529.03,1704900000,10529.03 +2004-01-06,10543.85,10584.07,10454.37,10538.66,1494500000,10538.66 +2004-01-05,10411.85,10575.92,10411.85,10544.07,1578200000,10544.07 +2004-01-02,10452.74,10554.96,10367.41,10409.85,1153200000,10409.85 +2003-12-31,10426.30,10494.44,10382.89,10453.92,1027500000,10453.92 +2003-12-30,10449.70,10493.11,10374.52,10425.04,1012600000,10425.04 +2003-12-29,10321.35,10457.78,10319.70,10450.00,1058800000,10450.00 +2003-12-26,10305.85,10368.89,10282.22,10324.67,356070000,10324.67 +2003-12-24,10341.41,10365.63,10263.04,10305.19,518060000,10305.19 +2003-12-23,10337.56,10421.48,10265.71,10341.26,1145300000,10341.26 +2003-12-22,10276.48,10371.11,10216.08,10338.00,1251700000,10338.00 +2003-12-19,10249.48,10345.44,10189.63,10278.22,1657300000,10278.22 +2003-12-18,10141.41,10278.82,10117.78,10248.08,1579900000,10248.08 +2003-12-17,10128.75,10186.67,10040.08,10145.26,1441700000,10145.26 +2003-12-16,10023.34,10173.19,9986.23,10129.56,1547900000,10129.56 +2003-12-15,10046.53,10180.97,9994.38,10022.82,1520800000,10022.82 +2003-12-12,10008.75,10091.71,9946.60,10042.16,1223100000,10042.16 +2003-12-11,9922.45,10056.97,9896.16,10008.16,1441100000,10008.16 +2003-12-10,9922.38,10000.53,9848.97,9921.86,1444000000,9921.86 +2003-12-09,9966.45,10048.75,9887.57,9923.42,1465500000,9923.42 +2003-12-08,9862.01,9997.34,9824.83,9965.27,1218900000,9965.27 +2003-12-05,9923.27,9954.16,9819.05,9862.68,1265900000,9862.68 +2003-12-04,9874.83,9978.08,9814.97,9930.82,1463100000,9930.82 +2003-12-03,9851.94,9974.45,9824.31,9873.42,1441700000,9873.42 +2003-12-02,9899.64,9936.97,9798.83,9853.64,1383200000,9853.64 +2003-12-01,9785.35,9943.34,9777.64,9899.05,1375000000,9899.05 +2003-11-28,9779.72,9832.16,9733.20,9782.46,487220000,9782.46 +2003-11-26,9763.49,9838.01,9689.05,9779.57,1097700000,9779.57 +2003-11-25,9748.68,9821.94,9679.13,9763.94,1333700000,9763.94 +2003-11-24,9629.87,9788.60,9629.87,9747.79,1302800000,9747.79 +2003-11-21,9622.02,9692.53,9556.68,9628.53,1273800000,9628.53 +2003-11-20,9688.46,9756.09,9576.91,9619.42,1326700000,9619.42 +2003-11-19,9620.68,9731.94,9584.31,9690.46,1326200000,9690.46 +2003-11-18,9711.44,9792.16,9601.35,9624.16,1354300000,9624.16 +2003-11-17,9765.64,9775.35,9603.57,9710.83,1374300000,9710.83 +2003-11-14,9836.46,9919.19,9709.13,9768.68,1356100000,9768.68 +2003-11-13,9846.97,9895.71,9740.53,9837.94,1383000000,9837.94 +2003-11-12,9729.50,9882.60,9700.02,9848.83,1349300000,9848.83 +2003-11-11,9756.53,9801.21,9673.64,9737.79,1162500000,9737.79 +2003-11-10,9807.49,9861.05,9702.46,9756.53,1243600000,9756.53 +2003-11-07,9857.12,9945.71,9770.31,9809.79,1440500000,9809.79 +2003-11-06,9820.68,9888.90,9738.53,9856.97,1453900000,9856.97 +2003-11-05,9837.64,9883.86,9746.98,9820.83,1401800000,9820.83 +2003-11-04,9857.49,9905.94,9770.46,9838.83,1417600000,9838.83 +2003-11-03,9802.46,9936.31,9792.60,9858.46,1378200000,9858.46 +2003-10-31,9786.75,9880.08,9745.94,9801.12,1498900000,9801.12 +2003-10-30,9772.01,9882.97,9719.20,9786.61,1629700000,9786.61 +2003-10-29,9747.05,9830.23,9663.27,9774.53,1562600000,9774.53 +2003-10-28,9609.72,9769.57,9592.54,9748.31,1629200000,9748.31 +2003-10-27,9584.54,9696.98,9553.80,9608.16,1371800000,9608.16 +2003-10-24,9600.98,9631.50,9463.28,9582.46,1420300000,9582.46 +2003-10-23,9597.20,9661.05,9517.50,9613.13,1604300000,9613.13 +2003-10-22,9741.98,9741.98,9551.65,9598.24,1647200000,9598.24 +2003-10-21,9778.31,9824.90,9697.94,9747.64,1498000000,9747.64 +2003-10-20,9721.50,9816.97,9665.35,9777.94,1172600000,9777.94 +2003-10-17,9791.86,9833.12,9679.72,9721.79,1352000000,9721.79 +2003-10-16,9798.68,9838.53,9679.13,9791.72,1417700000,9791.72 +2003-10-15,9824.09,9901.64,9731.57,9803.05,1521100000,9803.05 +2003-10-14,9763.27,9833.42,9696.90,9812.98,1271900000,9812.98 +2003-10-13,9675.72,9814.97,9675.72,9764.38,1040500000,9764.38 +2003-10-10,9682.90,9743.12,9622.31,9674.68,1108100000,9674.68 +2003-10-09,9633.35,9798.08,9617.35,9680.01,1578700000,9680.01 +2003-10-08,9653.33,9699.35,9571.35,9630.90,1262500000,9630.90 +2003-10-07,9593.28,9672.68,9512.76,9654.61,1279500000,9654.61 +2003-10-06,9572.39,9656.09,9524.39,9594.98,1025800000,9594.98 +2003-10-03,9492.54,9701.87,9492.54,9572.31,1570500000,9572.31 +2003-10-02,9464.76,9539.20,9397.87,9487.80,1269300000,9487.80 +2003-10-01,9275.06,9472.69,9275.06,9469.20,1566300000,9469.20 +2003-09-30,9378.10,9393.35,9199.43,9275.06,1590500000,9275.06 +2003-09-29,9314.42,9431.54,9259.68,9380.24,1366500000,9380.24 +2003-09-26,9342.43,9407.89,9257.99,9313.08,1472500000,9313.08 +2003-09-25,9425.58,9493.44,9311.47,9343.96,1530000000,9343.96 +2003-09-24,9575.97,9612.53,9400.67,9425.51,1556000000,9425.51 +2003-09-23,9535.76,9623.34,9479.41,9576.04,1301700000,9576.04 +2003-09-22,9641.80,9641.87,9467.83,9535.41,1278800000,9535.41 +2003-09-19,9661.80,9719.49,9582.64,9644.82,1518600000,9644.82 +2003-09-18,9544.04,9691.55,9513.37,9659.13,1498800000,9659.13 +2003-09-17,9566.08,9641.45,9510.28,9545.65,1338210000,9545.65 +2003-09-16,9449.16,9587.90,9426.84,9567.34,1403200000,9567.34 +2003-09-15,9471.19,9541.02,9396.03,9448.81,1151300000,9448.81 +2003-09-12,9456.88,9517.37,9348.59,9471.55,1236700000,9471.55 +2003-09-11,9415.05,9540.60,9374.49,9459.76,1335900000,9459.76 +2003-09-10,9504.88,9545.51,9373.08,9420.46,1582100000,9420.46 +2003-09-09,9584.92,9617.02,9459.85,9507.20,1414800000,9507.20 +2003-09-08,9503.41,9638.57,9492.25,9586.29,1299300000,9586.29 +2003-09-05,9589.52,9602.22,9441.93,9503.34,1465200000,9503.34 +2003-09-04,9569.09,9661.80,9492.74,9587.90,1453900000,9587.90 +2003-09-03,9521.86,9632.75,9465.72,9568.46,1675600000,9568.46 +2003-09-02,9416.67,9563.83,9357.44,9523.27,1470500000,9523.27 +2003-08-29,9373.33,9444.25,9320.52,9415.82,945100000,9415.82 +2003-08-28,9334.35,9415.68,9246.48,9374.21,1165200000,9374.21 +2003-08-27,9339.82,9387.82,9280.03,9333.79,1051400000,9333.79 +2003-08-26,9316.03,9372.45,9203.54,9340.45,1178700000,9340.45 +2003-08-25,9349.44,9381.51,9242.56,9317.64,971700000,9317.64 +2003-08-22,9436.04,9535.97,9323.26,9348.87,1308900000,9348.87 +2003-08-21,9399.96,9517.37,9345.71,9423.68,1407100000,9423.68 +2003-08-20,9420.13,9454.49,9324.03,9397.51,1210800000,9397.51 +2003-08-19,9412.17,9490.60,9315.25,9428.90,1300600000,9428.90 +2003-08-18,9320.66,9466.79,9309.16,9412.45,1127600000,9412.45 +2003-08-15,9308.52,9360.27,9253.20,9321.69,636370000,9321.69 +2003-08-14,9272.25,9356.63,9193.33,9310.56,1186800000,9310.56 +2003-08-13,9303.69,9350.19,9213.43,9271.76,1208800000,9271.76 +2003-08-12,9218.12,9329.04,9163.29,9310.06,1132300000,9310.06 +2003-08-11,9189.62,9275.61,9124.00,9217.35,1022200000,9217.35 +2003-08-08,9127.36,9230.37,9097.74,9191.09,1086600000,9191.09 +2003-08-07,9060.48,9171.13,9003.63,9126.45,1389300000,9126.45 +2003-08-06,9032.96,9151.38,8964.13,9061.74,1491000000,9061.74 +2003-08-05,9185.27,9210.21,9024.77,9036.32,1351700000,9036.32 +2003-08-04,9154.18,9231.84,9033.66,9186.04,1318700000,9186.04 +2003-08-01,9232.68,9266.37,9100.12,9153.97,1390600000,9153.97 +2003-07-31,9199.35,9398.02,9183.80,9233.80,1608000000,9233.80 +2003-07-30,9204.39,9272.88,9131.70,9200.05,1391900000,9200.05 +2003-07-29,9268.19,9327.36,9135.62,9204.46,1508900000,9204.46 +2003-07-28,9284.92,9356.77,9182.96,9266.51,1328600000,9266.51 +2003-07-25,9113.85,9296.62,9062.38,9284.57,1397500000,9284.57 +2003-07-24,9196.56,9313.99,9092.98,9112.51,1559000000,9112.51 +2003-07-23,9159.08,9249.91,9064.69,9194.24,1362700000,9194.24 +2003-07-22,9098.65,9221.83,9008.60,9158.45,1439700000,9158.45 +2003-07-21,9187.80,9219.87,9025.12,9096.69,1254200000,9096.69 +2003-07-18,9052.29,9212.31,9034.36,9188.15,1365200000,9188.15 +2003-07-17,9089.34,9160.27,8968.82,9050.82,1661400000,9050.82 +2003-07-16,9133.70,9185.63,9005.23,9094.59,1662000000,9094.59 +2003-07-15,9179.18,9260.42,9054.60,9128.97,1518600000,9128.97 +2003-07-14,9126.45,9316.44,9126.45,9177.15,1448900000,9177.15 +2003-07-11,9036.39,9176.59,9009.01,9119.59,1212700000,9119.59 +2003-07-10,9154.53,9154.53,8978.13,9036.04,1465700000,9036.04 +2003-07-09,9221.90,9270.22,9077.91,9156.21,1618000000,9156.21 +2003-07-08,9213.48,9281.77,9122.24,9223.09,1565700000,9223.09 +2003-07-07,9073.92,9289.90,9073.92,9216.79,1429100000,9216.79 +2003-07-03,9141.16,9164.48,9014.06,9070.21,775900000,9070.21 +2003-07-02,9043.54,9168.82,9025.12,9142.84,1519300000,9142.84 +2003-07-01,8983.66,9068.05,8843.61,9040.95,1460200000,9040.95 +2003-06-30,8990.74,9100.12,8934.71,8985.44,1587200000,8985.44 +2003-06-27,9079.74,9135.91,8938.26,8989.05,1267800000,8989.05 +2003-06-26,9011.06,9118.82,8953.83,9079.04,1387400000,9079.04 +2003-06-25,9109.57,9195.20,8984.29,9011.53,1459200000,9011.53 +2003-06-24,9071.48,9179.25,9020.08,9109.85,1388300000,9109.85 +2003-06-23,9199.49,9215.32,9003.83,9072.95,1398100000,9072.95 +2003-06-20,9180.93,9306.36,9149.21,9200.75,1698000000,9200.75 +2003-06-19,9293.80,9346.34,9134.50,9179.53,1530100000,9179.53 +2003-06-18,9322.67,9363.15,9185.17,9293.80,1488900000,9293.80 +2003-06-17,9319.66,9406.50,9234.78,9323.02,1479700000,9323.02 +2003-06-16,9117.56,9335.49,9117.56,9318.96,1345900000,9318.96 +2003-06-13,9197.88,9234.23,9042.63,9117.12,1271600000,9117.12 +2003-06-12,9184.29,9270.64,9089.38,9196.55,1553100000,9196.55 +2003-06-11,9048.85,9202.08,9010.13,9183.22,1520000000,9183.22 +2003-06-10,8980.79,9111.11,8946.06,9054.89,1275400000,9054.89 +2003-06-09,9061.18,9109.43,8909.78,8980.00,1307000000,8980.00 +2003-06-06,9045.57,9248.71,9008.87,9062.79,1837200000,9062.79 +2003-06-05,9036.67,9106.70,8905.37,9041.30,1693100000,9041.30 +2003-06-04,8919.94,9076.94,8882.75,9038.98,1618700000,9038.98 +2003-06-03,8898.23,8973.02,8823.51,8922.95,1450200000,8922.95 +2003-06-02,8851.45,9040.46,8833.66,8897.81,1662500000,8897.81 +2003-05-30,8711.46,8897.04,8711.46,8850.26,1688800000,8850.26 +2003-05-29,8787.23,8895.99,8657.96,8711.18,1685800000,8711.18 +2003-05-28,8781.84,8885.34,8721.90,8793.12,1559000000,8793.12 +2003-05-27,8600.54,8812.30,8523.64,8781.35,1532000000,8781.35 +2003-05-23,8594.02,8668.47,8513.98,8601.38,1201000000,8601.38 +2003-05-22,8516.99,8650.33,8495.35,8594.02,1448500000,8594.02 +2003-05-21,8485.62,8577.64,8389.68,8516.43,1457800000,8516.43 +2003-05-20,8494.09,8593.61,8394.51,8491.36,1505300000,8491.36 +2003-05-19,8676.52,8676.52,8455.72,8493.39,1375700000,8493.39 +2003-05-16,8710.36,8766.36,8614.33,8678.97,1505500000,8678.97 +2003-05-15,8649.22,8766.58,8613.84,8713.14,1508700000,8713.14 +2003-05-14,8673.29,8744.94,8575.96,8647.82,1401800000,8647.82 +2003-05-13,8722.88,8757.40,8611.18,8679.25,1418100000,8679.25 +2003-05-12,8603.90,8764.12,8544.24,8726.73,1378800000,8726.73 +2003-05-09,8492.69,8637.58,8482.89,8604.60,1326100000,8604.60 +2003-05-08,8558.67,8591.01,8435.61,8491.22,1379600000,8491.22 +2003-05-07,8585.42,8650.82,8494.87,8560.63,1531900000,8560.63 +2003-05-06,8531.28,8658.18,8486.88,8588.36,1649600000,8588.36 +2003-05-05,8583.17,8643.11,8472.67,8531.57,1446300000,8531.57 +2003-05-02,8453.48,8612.86,8389.40,8582.68,1554300000,8582.68 +2003-05-01,8478.48,8519.09,8328.55,8454.25,1397500000,8454.25 +2003-04-30,8501.38,8557.62,8402.36,8480.09,1788510000,8480.09 +2003-04-29,8472.88,8578.55,8414.61,8502.99,1525600000,8502.99 +2003-04-28,8306.84,8515.80,8290.46,8471.61,1273000000,8471.61 +2003-04-25,8438.98,8453.06,8258.80,8306.35,1335800000,8306.35 +2003-04-24,8512.44,8527.99,8363.28,8440.04,1648100000,8440.04 +2003-04-23,8484.92,8587.72,8398.65,8515.66,1667200000,8515.66 +2003-04-22,8326.38,8509.43,8238.14,8484.99,1631200000,8484.99 +2003-04-21,8336.67,8423.09,8270.56,8328.90,1118700000,8328.90 +2003-04-17,8255.79,8388.28,8172.52,8337.65,1430600000,8337.65 +2003-04-16,8405.72,8459.15,8217.27,8257.61,1587600000,8257.61 +2003-04-15,8347.66,8443.11,8251.38,8402.36,1460200000,8402.36 +2003-04-14,8203.97,8375.19,8175.60,8351.10,1131000000,8351.10 +2003-04-11,8223.22,8360.76,8156.77,8203.41,1141600000,8203.41 +2003-04-10,8198.99,8274.56,8109.85,8221.33,1275300000,8221.33 +2003-04-09,8299.28,8404.25,8174.90,8197.94,1293700000,8197.94 +2003-04-08,8299.12,8382.43,8222.24,8298.92,1235400000,8298.92 +2003-04-07,8284.15,8550.40,8272.24,8300.41,1494000000,8300.41 +2003-04-04,8240.59,8348.29,8176.66,8277.15,1241200000,8277.15 +2003-04-03,8285.76,8378.76,8199.49,8240.38,1351500000,8240.38 +2003-04-02,8070.98,8342.27,8070.98,8285.06,1589800000,8285.06 +2003-04-01,7992.83,8133.03,7947.38,8069.86,1461600000,8069.86 +2003-03-31,8142.83,8142.83,7903.97,7992.13,1495500000,7992.13 +2003-03-28,8198.85,8224.83,8070.77,8145.77,1227000000,8145.77 +2003-03-27,8226.39,8272.03,8085.40,8201.45,1232900000,8201.45 +2003-03-26,8279.88,8323.01,8165.52,8229.88,1319700000,8229.88 +2003-03-25,8216.85,8355.93,8155.65,8280.23,1333400000,8280.23 +2003-03-24,8514.82,8514.82,8166.78,8214.68,1293000000,8214.68 +2003-03-21,8290.38,8552.08,8290.38,8521.97,1883710000,8521.97 +2003-03-20,8264.68,8335.20,8122.59,8286.60,1439100000,8286.60 +2003-03-19,8193.04,8304.04,8116.01,8265.45,1473400000,8265.45 +2003-03-18,8142.69,8253.48,8057.54,8194.23,1555100000,8194.23 +2003-03-17,7857.96,8163.56,7763.56,8141.92,1700420000,8141.92 +2003-03-14,7822.17,7961.60,7761.25,7859.71,1541900000,7859.71 +2003-03-13,7555.29,7847.03,7555.29,7821.75,1816300000,7821.75 +2003-03-12,7517.76,7582.96,7397.31,7552.07,1620000000,7552.07 +2003-03-11,7568.53,7673.98,7488.00,7524.06,1427700000,7524.06 +2003-03-10,7739.40,7739.40,7545.77,7568.18,1255000000,7568.18 +2003-03-07,7671.75,7780.57,7536.18,7740.03,1368500000,7740.03 +2003-03-06,7774.76,7795.07,7624.97,7673.99,1299200000,7673.99 +2003-03-05,7702.35,7801.79,7639.82,7775.60,1332700000,7775.60 +2003-03-04,7838.14,7859.08,7688.98,7704.87,1256600000,7704.87 +2003-03-03,7890.24,7997.66,7809.05,7837.86,1208900000,7837.86 +2003-02-28,7886.11,7987.80,7826.72,7891.08,1373300000,7891.08 +2003-02-27,7807.96,7950.46,7774.34,7884.99,1287800000,7884.99 +2003-02-26,7907.39,7944.93,7767.62,7806.98,1374400000,7806.98 +2003-02-25,7856.42,7931.14,7700.53,7909.50,1483700000,7909.50 +2003-02-24,8017.34,8017.34,7828.06,7858.24,1229200000,7858.24 +2003-02-21,7915.52,8055.79,7843.81,8018.11,1398200000,8018.11 +2003-02-20,8002.70,8051.37,7858.24,7914.96,1194100000,7914.96 +2003-02-19,8033.80,8079.11,7913.70,8000.60,1075600000,8000.60 +2003-02-18,7909.30,8114.82,7909.30,8041.15,1250800000,8041.15 +2003-02-14,7750.90,7936.56,7704.96,7908.80,1404600000,7908.80 +2003-02-13,7756.55,7817.88,7602.81,7749.87,1489300000,7749.87 +2003-02-12,7836.36,7892.96,7720.39,7758.17,1260500000,7758.17 +2003-02-11,7920.93,8010.89,7798.69,7843.11,1307000000,7843.11 +2003-02-10,7865.74,7963.03,7777.98,7920.11,1238200000,7920.11 +2003-02-07,7932.45,8019.46,7811.10,7864.23,1276800000,7864.23 +2003-02-06,7981.95,8031.66,7855.87,7929.30,1430900000,7929.30 +2003-02-05,8014.45,8162.96,7950.42,7985.18,1450800000,7985.18 +2003-02-04,8104.61,8104.61,7915.93,8013.29,1451600000,8013.29 +2003-02-03,8053.74,8189.35,8032.90,8109.82,1258500000,8109.82 +2003-01-31,7939.72,8121.37,7884.66,8053.81,1578530000,8053.81 +2003-01-30,8109.14,8169.81,7918.19,7945.13,1510300000,7945.13 +2003-01-29,8087.95,8173.31,7916.89,8110.71,1595400000,8110.71 +2003-01-28,7991.07,8153.36,7954.95,8088.84,1459100000,8088.84 +2003-01-27,8128.54,8167.41,7929.16,7989.56,1435900000,7989.56 +2003-01-24,8367.89,8367.89,8092.00,8131.01,1574800000,8131.01 +2003-01-23,8320.72,8437.69,8215.61,8369.47,1744550000,8369.47 +2003-01-22,8439.54,8493.50,8270.94,8318.73,1560800000,8318.73 +2003-01-21,8586.26,8650.43,8421.03,8442.90,1335200000,8442.90 +2003-01-17,8695.82,8695.82,8523.60,8586.74,1358200000,8586.74 +2003-01-16,8721.12,8837.47,8634.46,8697.87,1534600000,8697.87 +2003-01-15,8843.64,8865.65,8674.43,8723.18,1432100000,8723.18 +2003-01-14,8787.22,8865.41,8717.56,8842.62,1379400000,8842.62 +2003-01-13,8787.83,8896.09,8721.12,8785.98,1396300000,8785.98 +2003-01-10,8776.04,8846.25,8654.21,8784.89,1485400000,8784.89 +2003-01-09,8596.68,8814.09,8596.68,8776.18,1560300000,8776.18 +2003-01-08,8735.93,8749.44,8549.72,8595.31,1467600000,8595.31 +2003-01-07,8775.84,8843.37,8661.20,8740.59,1545200000,8740.59 +2003-01-06,8602.78,8826.71,8578.86,8773.57,1435900000,8773.57 +2003-01-03,8607.38,8669.91,8503.71,8601.69,1130800000,8601.69 +2003-01-02,8342.38,8633.02,8342.38,8607.52,1229200000,8607.52 +2002-12-31,8332.24,8400.46,8216.44,8341.63,1088500000,8341.63 +2002-12-30,8304.06,8405.67,8214.93,8332.85,1057800000,8332.85 +2002-12-27,8429.28,8470.05,8272.31,8303.78,758400000,8303.78 +2002-12-26,8448.86,8587.98,8392.23,8432.61,721100000,8432.61 +2002-12-24,8491.99,8522.98,8407.45,8448.11,458310000,8448.11 +2002-12-23,8511.39,8573.92,8418.90,8493.29,1112100000,8493.29 +2002-12-20,8367.41,8557.47,8367.41,8511.32,1782730000,8511.32 +2002-12-19,8441.94,8530.25,8302.41,8364.80,1385900000,8364.80 +2002-12-18,8531.31,8553.76,8367.89,8447.35,1446200000,8447.35 +2002-12-17,8626.99,8672.38,8495.21,8535.39,1251800000,8535.39 +2002-12-16,8436.59,8649.06,8421.58,8627.40,1271600000,8627.40 +2002-12-13,8536.07,8563.16,8374.68,8433.71,1330800000,8433.71 +2002-12-12,8590.99,8662.71,8466.21,8538.40,1255300000,8538.40 +2002-12-11,8571.52,8669.91,8452.84,8589.14,1285100000,8589.14 +2002-12-10,8473.61,8624.93,8419.86,8574.26,1286600000,8574.26 +2002-12-09,8643.99,8643.99,8438.24,8473.41,1320800000,8473.41 +2002-12-06,8620.88,8707.21,8469.16,8645.77,1241100000,8645.77 +2002-12-05,8740.66,8796.68,8572.00,8623.28,1250200000,8623.28 +2002-12-04,8734.22,8834.04,8600.93,8737.85,1588900000,8737.85 +2002-12-03,8861.13,8882.04,8649.89,8742.93,1488400000,8742.93 +2002-12-02,8902.95,9076.35,8757.60,8862.57,1612000000,8862.57 +2002-11-29,8933.67,8995.78,8847.42,8896.09,643460000,8896.09 +2002-11-27,8678.96,8975.08,8678.96,8931.68,1350300000,8931.68 +2002-11-26,8844.12,8845.01,8634.53,8676.42,1543600000,8676.42 +2002-11-25,8804.97,8918.03,8717.63,8849.40,1574000000,8849.40 +2002-11-22,8842.41,8944.16,8732.23,8804.84,1626800000,8804.84 +2002-11-21,8625.48,8910.83,8619.58,8845.15,2415100000,8845.15 +2002-11-20,8469.57,8675.12,8402.72,8623.01,1517300000,8623.01 +2002-11-19,8484.93,8566.45,8355.62,8474.78,1337400000,8474.78 +2002-11-18,8579.74,8671.41,8444.26,8486.57,1282600000,8486.57 +2002-11-15,8535.64,8622.30,8421.10,8579.09,1400100000,8579.09 +2002-11-14,8403.69,8596.50,8396.27,8542.13,1488100000,8542.13 +2002-11-13,8380.32,8523.47,8237.65,8398.49,1463400000,8398.49 +2002-11-12,8356.73,8557.25,8286.13,8386.00,1377100000,8386.00 +2002-11-11,8535.81,8541.09,8315.40,8358.95,1113000000,8358.95 +2002-11-08,8585.75,8688.96,8455.01,8537.13,1446500000,8537.13 +2002-11-07,8766.08,8766.08,8517.78,8586.24,1466900000,8586.24 +2002-11-06,8677.17,8841.61,8561.48,8771.01,1623700000,8771.01 +2002-11-05,8568.76,8730.92,8497.60,8678.27,1354100000,8678.27 +2002-11-04,8521.60,8787.30,8510.08,8571.60,1645900000,8571.60 +2002-11-01,8395.64,8569.24,8271.77,8517.64,1450400000,8517.64 +2002-10-31,8427.34,8538.17,8293.17,8397.03,1641300000,8397.03 +2002-10-30,8363.95,8502.32,8273.99,8427.41,1422300000,8427.41 +2002-10-29,8367.28,8456.19,8161.01,8368.94,1529700000,8368.94 +2002-10-28,8448.98,8601.01,8281.34,8368.04,1382600000,8368.04 +2002-10-25,8317.48,8474.92,8210.74,8443.99,1340400000,8443.99 +2002-10-24,8495.38,8607.04,8253.60,8317.34,1700570000,8317.34 +2002-10-23,8448.56,8546.57,8256.79,8494.27,1593900000,8494.27 +2002-10-22,8534.08,8543.65,8303.33,8450.16,1549200000,8450.16 +2002-10-21,8320.74,8580.13,8191.87,8538.24,1447000000,8538.24 +2002-10-18,8287.72,8383.16,8115.72,8322.40,1423100000,8322.40 +2002-10-17,8038.31,8395.99,8038.31,8275.04,1780390000,8275.04 +2002-10-16,8232.10,8232.10,7958.34,8036.03,1585000000,8036.03 +2002-10-15,7883.23,8304.58,7883.23,8255.68,1956000000,8255.68 +2002-10-14,7848.21,7948.91,7725.23,7877.40,1200300000,7877.40 +2002-10-11,7540.74,7919.57,7540.74,7850.29,1854130000,7850.29 +2002-10-10,7286.34,7588.25,7181.47,7533.95,2090230000,7533.95 +2002-10-09,7499.96,7500.03,7215.39,7286.27,1885030000,7286.27 +2002-10-08,7425.82,7680.57,7294.53,7501.49,1938430000,7501.49 +2002-10-07,7528.68,7685.42,7368.46,7422.84,1576500000,7422.84 +2002-10-04,7719.34,7817.06,7428.32,7528.40,1835930000,7528.40 +2002-10-03,7753.46,7943.64,7638.47,7717.19,1674500000,7717.19 +2002-10-02,7936.57,7996.77,7696.66,7755.61,1668900000,7755.61 +2002-10-01,7593.04,7964.24,7558.36,7938.79,1780900000,7938.79 +2002-09-30,7698.81,7729.53,7422.28,7591.93,1721870000,7591.93 +2002-09-27,7996.01,7997.12,7664.89,7701.45,1507300000,7701.45 +2002-09-26,7844.62,8086.86,7800.97,7997.12,1650000000,7997.12 +2002-09-25,7687.16,7939.90,7641.87,7841.82,1651500000,7841.82 +2002-09-24,7871.23,7893.36,7606.77,7683.13,1670240000,7683.13 +2002-09-23,7984.77,7984.77,7738.06,7872.15,1381100000,7872.15 +2002-09-20,7945.93,8081.04,7868.60,7986.02,1792800000,7986.02 +2002-09-19,8170.65,8170.65,7904.87,7942.39,1524000000,7942.39 +2002-09-18,8203.07,8283.49,8013.42,8172.45,1501000000,8172.45 +2002-09-17,8386.35,8508.61,8169.88,8207.55,1448600000,8207.55 +2002-09-16,8311.79,8435.04,8214.27,8380.18,1001400000,8380.18 +2002-09-13,8377.68,8414.79,8175.85,8312.69,1271000000,8312.69 +2002-09-12,8574.94,8574.94,8334.82,8379.41,1191600000,8379.41 +2002-09-11,8604.27,8767.82,8545.11,8581.17,846600000,8581.17 +2002-09-10,8520.14,8660.94,8447.73,8602.61,1186400000,8602.61 +2002-09-09,8425.88,8584.30,8288.28,8519.38,1130600000,8519.38 +2002-09-06,8296.46,8526.80,8296.46,8427.20,1184500000,8427.20 +2002-09-05,8420.20,8420.20,8173.56,8283.70,1401300000,8283.70 +2002-09-04,8308.53,8495.03,8216.98,8425.12,1372100000,8425.12 +2002-09-03,8659.27,8659.27,8282.87,8308.05,1323400000,8308.05 +2002-08-30,8669.26,8811.72,8572.85,8663.50,929900000,8663.50 +2002-08-29,8690.69,8769.34,8514.10,8670.99,1271100000,8670.99 +2002-08-28,8823.93,8832.18,8610.79,8694.09,1146600000,8694.09 +2002-08-27,8917.49,9040.04,8747.77,8824.41,1307700000,8824.41 +2002-08-26,8873.93,8981.23,8723.43,8919.01,1016900000,8919.01 +2002-08-23,9051.49,9051.49,8806.38,8872.96,1071500000,8872.96 +2002-08-22,8961.18,9129.10,8860.34,9053.64,1373000000,9053.64 +2002-08-21,8866.14,9033.52,8768.51,8957.23,1353100000,8957.23 +2002-08-20,8986.50,8989.69,8789.13,8872.07,1308500000,8872.07 +2002-08-19,8777.09,9037.38,8720.81,8990.79,1299800000,8990.79 +2002-08-16,8813.07,8899.42,8644.59,8778.06,1265300000,8778.06 +2002-08-15,8745.04,8914.37,8620.98,8818.14,1505100000,8818.14 +2002-08-14,8479.14,8778.89,8295.34,8743.31,1533800000,8743.31 +2002-08-13,8683.15,8801.87,8445.91,8482.39,1297700000,8482.39 +2002-08-12,8741.92,8753.14,8528.15,8688.89,1036500000,8688.89 +2002-08-09,8707.24,8824.92,8538.46,8745.45,1294900000,8745.45 +2002-08-08,8456.29,8755.70,8364.29,8712.02,1646700000,8712.02 +2002-08-07,8282.25,8520.95,8171.70,8456.15,1490400000,8456.15 +2002-08-06,8049.93,8472.28,8049.93,8274.09,1514100000,8274.09 +2002-08-05,8312.92,8371.00,7991.43,8043.63,1425500000,8043.63 +2002-08-02,8504.96,8566.36,8179.80,8313.13,1538100000,8313.13 +2002-08-01,8732.58,8758.40,8430.68,8506.62,1672200000,8506.62 +2002-07-31,8678.65,8793.36,8463.21,8736.59,2049360000,8736.59 +2002-07-30,8707.03,8806.86,8484.05,8680.03,1826090000,8680.03 +2002-07-29,8267.99,8749.12,8267.99,8711.88,1778650000,8711.88 +2002-07-26,8192.61,8350.10,8039.89,8264.39,1796100000,8264.39 +2002-07-25,8185.89,8390.39,7893.34,8186.31,2424700000,8186.31 +2002-07-24,7698.46,8243.07,7489.53,8191.29,2775560000,8191.29 +2002-07-23,7785.55,8007.91,7590.75,7702.34,2441020000,7702.34 +2002-07-22,8015.04,8173.08,7668.35,7784.58,2248060000,7784.58 +2002-07-19,8356.74,8356.74,7940.83,8019.26,2654100000,8019.26 +2002-07-18,8540.47,8683.84,8350.72,8409.49,1736300000,8409.49 +2002-07-17,8476.21,8765.39,8401.12,8542.48,2566500000,8542.48 +2002-07-16,8635.31,8697.69,8346.29,8473.11,1843700000,8473.11 +2002-07-15,8681.28,8720.18,8220.78,8639.19,2574800000,8639.19 +2002-07-12,8805.33,8903.00,8555.15,8684.53,1607400000,8684.53 +2002-07-11,8812.12,8937.87,8557.84,8801.53,2080480000,8801.53 +2002-07-10,9098.16,9188.71,8772.94,8813.50,1816900000,8813.50 +2002-07-09,9273.38,9357.35,9065.88,9096.09,1348900000,9096.09 +2002-07-08,9375.70,9433.08,9184.90,9274.90,1184400000,9274.90 +2002-07-05,9061.54,9399.65,9054.97,9379.50,699400000,9379.50 +2002-07-03,9006.37,9140.32,8832.89,9054.97,1527800000,9054.97 +2002-07-02,9104.95,9185.88,8918.11,9007.75,1823000000,9007.75 +2002-07-01,9239.25,9381.37,9059.88,9109.79,1425500000,9109.79 +2002-06-28,9270.33,9435.44,9131.49,9243.26,2117000000,9243.26 +2002-06-27,9122.12,9342.33,8992.32,9269.92,1908600000,9269.92 +2002-06-26,9108.22,9207.07,8831.92,9120.11,336570000,9120.11 +2002-06-25,9285.56,9457.38,9089.17,9126.82,1513700000,9126.82 +2002-06-24,9252.47,9417.23,9046.04,9281.82,1552600000,9281.82 +2002-06-21,9430.66,9456.76,9186.71,9253.79,1497200000,9253.79 +2002-06-20,9561.64,9628.11,9390.10,9431.77,1389700000,9431.77 +2002-06-19,9702.00,9760.20,9514.29,9561.57,1336100000,9561.57 +2002-06-18,9684.52,9775.83,9588.29,9706.12,1193100000,9706.12 +2002-06-17,9476.50,9736.58,9462.30,9687.42,1236600000,9687.42 +2002-06-14,9498.92,9538.93,9229.63,9474.21,1549000000,9474.21 +2002-06-13,9612.87,9671.64,9454.41,9502.80,1405500000,9502.80 +2002-06-12,9515.12,9682.37,9380.82,9617.71,1795720000,9617.71 +2002-06-11,9647.62,9794.17,9487.91,9517.26,1212400000,9517.26 +2002-06-10,9587.38,9744.33,9509.91,9645.40,1226200000,9645.40 +2002-06-07,9592.38,9668.18,9416.33,9589.67,1341300000,9589.67 +2002-06-06,9795.70,9820.41,9552.85,9624.64,1601500000,9624.64 +2002-06-05,9688.53,9860.91,9636.82,9796.80,1300100000,9796.80 +2002-06-04,9710.34,9798.74,9541.36,9687.84,1466600000,9687.84 +2002-06-03,9923.94,10016.04,9685.49,9709.79,1324300000,9709.79 +2002-05-31,9915.15,10074.16,9865.89,9925.25,1277300000,9925.25 +2002-05-30,9915.01,9995.76,9769.64,9911.69,1286600000,9911.69 +2002-05-29,9976.94,10056.31,9860.42,9923.04,1081800000,9923.04 +2002-05-28,10106.54,10144.53,9917.64,9981.58,996500000,9981.58 +2002-05-24,10211.92,10255.93,10054.58,10104.26,885400000,10104.26 +2002-05-23,10158.30,10268.87,10044.20,10216.08,1192900000,10216.08 +2002-05-22,10098.58,10200.78,10004.41,10157.88,1136300000,10157.88 +2002-05-21,10229.08,10322.15,10060.46,10105.71,1169200000,10105.71 +2002-05-20,10348.93,10357.44,10164.39,10229.50,989800000,10229.50 +2002-05-17,10291.05,10400.62,10209.49,10353.08,1274400000,10353.08 +2002-05-16,10242.11,10374.05,10168.64,10289.21,1256600000,10289.21 +2002-05-15,10288.56,10382.97,10152.97,10243.68,1420200000,10243.68 +2002-05-14,10119.34,10346.59,10119.34,10298.14,1414500000,10298.14 +2002-05-13,9938.82,10148.71,9892.73,10109.66,1088600000,10109.66 +2002-05-10,10040.25,10115.23,9891.04,9939.92,1171900000,9939.92 +2002-05-09,10137.96,10185.08,9966.63,10037.42,1153000000,10037.42 +2002-05-08,9847.96,10203.76,9847.96,10141.83,1502000000,10141.83 +2002-05-07,9810.53,9985.32,9749.73,9836.55,1354700000,9836.55 +2002-05-06,10005.80,10081.98,9780.29,9808.04,1122600000,9808.04 +2002-05-03,10091.73,10130.97,9891.49,10006.63,1284500000,10006.63 +2002-05-02,10057.62,10182.94,9970.92,10091.87,1364000000,10091.87 +2002-05-01,9944.90,10121.21,9778.42,10059.63,1451400000,10059.63 +2002-04-30,9818.90,10063.64,9775.10,9946.22,1628600000,9946.22 +2002-04-29,9910.52,10012.16,9767.15,9819.87,1314700000,9819.87 +2002-04-26,10037.42,10127.85,9875.44,9910.72,1374200000,9910.72 +2002-04-25,10028.70,10103.64,9864.08,10035.06,1517400000,10035.06 +2002-04-24,10090.07,10209.64,9984.00,10030.43,1373200000,10030.43 +2002-04-23,10137.20,10243.06,10003.84,10089.24,1388500000,10089.24 +2002-04-22,10256.00,10299.39,10056.45,10136.43,1181800000,10136.43 +2002-04-19,10212.69,10338.83,10151.52,10257.11,1185000000,10257.11 +2002-04-18,10219.47,10334.67,10010.22,10205.28,1359300000,10205.28 +2002-04-17,10299.66,10379.51,10137.47,10220.78,1376900000,10220.78 +2002-04-16,10100.38,10365.12,10100.38,10301.32,1341300000,10301.32 +2002-04-15,10189.57,10261.05,10037.90,10093.67,1120400000,10093.67 +2002-04-12,10178.57,10312.26,10083.92,10190.82,1282100000,10190.82 +2002-04-11,10378.89,10425.87,10116.37,10176.08,1505600000,10176.08 +2002-04-10,10210.40,10437.43,10175.18,10381.73,1447900000,10381.73 +2002-04-09,10249.84,10362.98,10156.57,10208.67,1235400000,10208.67 +2002-04-08,10258.91,10300.78,10049.94,10249.08,1095300000,10249.08 +2002-04-05,10235.80,10403.66,10169.79,10271.64,1110200000,10271.64 +2002-04-04,10199.54,10301.53,10118.10,10235.17,1283800000,10235.17 +2002-04-03,10311.81,10377.09,10116.02,10198.29,1219700000,10198.29 +2002-04-02,10352.46,10394.94,10204.66,10313.71,1176700000,10313.71 +2002-04-01,10402.07,10434.52,10226.59,10362.70,1050900000,10362.70 +2002-03-28,10429.68,10537.48,10341.59,10403.94,1147600000,10403.94 +2002-03-27,10351.28,10490.15,10300.29,10426.91,1180100000,10426.91 +2002-03-26,10280.51,10475.00,10233.65,10353.36,1223600000,10353.36 +2002-03-25,10428.43,10497.76,10255.59,10281.67,1057900000,10281.67 +2002-03-22,10477.70,10537.62,10324.23,10427.67,1243300000,10427.67 +2002-03-21,10501.99,10577.82,10326.99,10479.84,1339200000,10479.84 +2002-03-20,10626.85,10634.84,10455.56,10501.57,1304900000,10501.57 +2002-03-19,10578.38,10722.78,10530.63,10635.25,1255000000,10635.25 +2002-03-18,10608.54,10707.01,10488.84,10577.75,1169500000,10577.75 +2002-03-15,10516.45,10663.69,10452.10,10607.23,1493900000,10607.23 +2002-03-14,10501.29,10615.74,10421.17,10517.14,1208800000,10517.14 +2002-03-13,10620.17,10648.68,10427.67,10501.85,1354000000,10501.85 +2002-03-12,10604.32,10682.72,10462.34,10632.35,1304400000,10632.35 +2002-03-11,10570.07,10679.68,10470.85,10611.24,1210200000,10611.24 +2002-03-08,10531.67,10728.87,10480.33,10572.49,1412000000,10572.49 +2002-03-07,10578.10,10663.82,10405.95,10525.37,1517400000,10525.37 +2002-03-06,10431.96,10637.19,10393.84,10574.29,1541300000,10574.29 +2002-03-05,10591.38,10639.96,10349.90,10433.41,1549300000,10433.41 +2002-03-04,10368.10,10656.50,10313.01,10586.82,1594300000,10586.82 +2002-03-01,10111.04,10397.09,10086.51,10368.86,1456500000,10368.86 +2002-02-28,10130.28,10283.89,10055.34,10106.13,1392200000,10106.13 +2002-02-27,10117.65,10315.72,10025.86,10127.58,1393800000,10127.58 +2002-02-26,10145.86,10241.89,9986.84,10115.26,1309200000,10115.26 +2002-02-25,9969.75,10204.04,9934.94,10145.71,1367400000,10145.71 +2002-02-22,9834.89,10032.45,9726.67,9968.15,1411000000,9968.15 +2002-02-21,9933.56,10072.98,9788.11,9834.68,1381600000,9834.68 +2002-02-20,9742.37,9990.78,9674.91,9941.17,1438900000,9941.17 +2002-02-19,9899.24,9923.39,9704.03,9745.14,1189900000,9745.14 +2002-02-15,10000.83,10065.37,9843.54,9903.04,1359200000,9903.04 +2002-02-14,9989.67,10092.29,9905.95,10001.99,1272500000,10001.99 +2002-02-13,9856.99,10056.24,9839.18,9989.67,1215900000,9989.67 +2002-02-12,9880.35,9943.24,9766.18,9863.74,1094200000,9863.74 +2002-02-11,9739.81,9933.07,9668.34,9884.78,1159400000,9884.78 +2002-02-08,9627.65,9795.38,9503.52,9744.24,1371900000,9744.24 +2002-02-07,9650.97,9799.67,9562.12,9625.44,1441600000,9625.44 +2002-02-06,9682.04,9801.33,9558.18,9653.39,1665800000,9653.39 +2002-02-05,9684.74,9842.77,9553.96,9685.43,1778300000,9685.43 +2002-02-04,9905.46,9940.96,9648.55,9687.09,1437600000,9687.09 +2002-02-01,9923.04,10022.82,9795.45,9907.26,1367200000,9907.26 +2002-01-31,9763.20,9963.79,9701.76,9920.00,1557000000,9920.00 +2002-01-30,9619.14,9821.81,9443.32,9762.86,2019600000,9762.86 +2002-01-29,9865.54,9952.59,9576.65,9618.24,1812000000,9618.24 +2002-01-28,9843.05,9959.44,9746.66,9865.75,1186800000,9865.75 +2002-01-25,9793.23,9949.54,9697.47,9840.08,1345100000,9840.08 +2002-01-24,9734.21,9926.71,9670.99,9796.07,1552800000,9796.07 +2002-01-23,9710.96,9853.64,9588.49,9730.96,1479200000,9730.96 +2002-01-22,9772.34,9905.26,9652.01,9713.80,1311600000,9713.80 +2002-01-18,9830.94,9873.98,9673.11,9771.85,1333300000,9771.85 +2002-01-17,9712.21,9910.11,9684.39,9850.04,1380100000,9850.04 +2002-01-16,9916.54,9923.32,9661.00,9712.27,1482500000,9712.27 +2002-01-15,9892.73,10038.94,9805.33,9924.15,1386900000,9924.15 +2002-01-14,9985.38,10038.87,9831.98,9891.42,1286400000,9891.42 +2002-01-11,10069.52,10163.77,9938.12,9987.53,1211900000,9987.53 +2002-01-10,10092.50,10174.91,9956.67,10067.86,1299000000,10067.86 +2002-01-09,10153.18,10311.98,10049.25,10094.09,1452000000,10094.09 +2002-01-08,10195.76,10270.53,10063.43,10150.55,1258800000,10150.55 +2002-01-07,10261.33,10345.40,10137.61,10197.05,1308300000,10197.05 +2002-01-04,10176.84,10341.87,10132.14,10259.74,1513000000,10259.74 +2002-01-03,10073.88,10227.36,10002.54,10172.14,1398900000,10172.14 +2002-01-02,10021.71,10125.85,9889.69,10073.40,1171000000,10073.40 +2001-12-31,10136.36,10178.71,10002.96,10021.57,943600000,10021.57 +2001-12-28,10133.94,10220.78,10067.17,10136.99,917400000,10136.99 +2001-12-27,10088.71,10187.71,10036.10,10131.31,876300000,10131.31 +2001-12-26,10035.55,10203.28,10014.10,10088.14,791100000,10088.14 +2001-12-24,10036.59,10114.91,9987.39,10035.34,439670000,10035.34 +2001-12-21,9986.84,10148.13,9935.70,10035.34,1694000000,10035.34 +2001-12-20,10064.13,10141.21,9912.76,9985.18,1490500000,9985.18 +2001-12-19,9994.59,10142.95,9876.96,10070.49,1484900000,10070.49 +2001-12-18,9893.22,10066.27,9876.19,9998.39,1354000000,9998.39 +2001-12-17,9809.42,9996.25,9747.77,9891.97,1260400000,9891.97 +2001-12-14,9764.72,9888.44,9661.14,9811.15,1306800000,9811.15 +2001-12-13,9889.13,9927.95,9691.30,9766.45,1511500000,9766.45 +2001-12-12,9887.27,9985.59,9745.42,9894.81,1449700000,9894.81 +2001-12-11,9925.60,10063.98,9794.48,9888.37,1367200000,9888.37 +2001-12-10,10047.04,10123.78,9868.03,9921.45,1218700000,9921.45 +2001-12-07,10099.14,10160.24,9938.54,10049.46,1248200000,10049.46 +2001-12-06,10113.53,10220.23,9997.98,10099.14,1487900000,10099.14 +2001-12-05,9891.35,10195.04,9875.92,10114.29,1765300000,10114.29 +2001-12-04,9765.55,9937.29,9700.24,9893.84,1318500000,9893.84 +2001-12-03,9848.93,9861.94,9651.87,9763.96,1202900000,9763.96 +2001-11-30,9828.80,9945.80,9752.26,9851.56,1343600000,9851.56 +2001-11-29,9710.34,9873.29,9629.72,9829.42,1375700000,9829.42 +2001-11-28,9867.06,9889.13,9662.80,9711.86,1423700000,9711.86 +2001-11-27,9980.33,10021.48,9776.07,9872.60,1288000000,9872.60 +2001-11-26,9961.58,10054.58,9862.22,9982.75,1129800000,9982.75 +2001-11-23,9833.09,9983.24,9804.37,9959.71,410300000,9959.71 +2001-11-21,9894.19,9932.31,9746.45,9834.68,1029300000,9834.68 +2001-11-20,9968.64,10023.37,9825.06,9901.38,1330200000,9901.38 +2001-11-19,9870.45,10040.46,9826.96,9976.46,1316800000,9976.46 +2001-11-16,9871.51,9967.94,9754.07,9866.99,1337400000,9866.99 +2001-11-15,9824.65,9967.46,9745.43,9872.39,1454500000,9872.39 +2001-11-14,9751.13,9943.18,9683.97,9823.61,1443400000,9823.61 +2001-11-13,9551.43,9811.29,9551.43,9750.95,1370100000,9750.95 +2001-11-12,9606.13,9642.25,9347.76,9554.37,991600000,9554.37 +2001-11-09,9586.96,9692.35,9478.75,9608.00,1093800000,9608.00 +2001-11-08,9558.39,9765.00,9506.91,9587.52,1517500000,9587.52 +2001-11-07,9584.68,9695.67,9457.99,9554.37,1411300000,9554.37 +2001-11-06,9437.09,9627.44,9315.79,9591.12,1356000000,9591.12 +2001-11-05,9326.59,9534.58,9326.59,9441.03,1267700000,9441.03 +2001-11-02,9264.52,9406.93,9152.91,9323.54,1121900000,9323.54 +2001-11-01,9087.45,9320.77,8987.61,9263.90,1317400000,9263.90 +2001-10-31,9123.64,9281.68,9018.26,9075.14,1352500000,9075.14 +2001-10-30,9264.52,9265.34,9011.96,9121.98,1297400000,9121.98 +2001-10-29,9543.37,9543.37,9232.83,9269.50,1106100000,9269.50 +2001-10-26,9462.28,9626.54,9369.35,9545.17,1244500000,9545.17 +2001-10-25,9342.29,9491.48,9143.09,9462.90,1364400000,9462.90 +2001-10-24,9341.40,9456.40,9218.29,9345.62,1336200000,9345.62 +2001-10-23,9379.17,9499.78,9249.02,9340.08,1317300000,9340.08 +2001-10-22,9203.91,9438.75,9101.08,9377.03,1105700000,9377.03 +2001-10-19,9162.81,9278.36,9027.74,9204.11,1294900000,9204.11 +2001-10-18,9230.75,9310.33,9061.02,9163.22,1262900000,9163.22 +2001-10-17,9389.76,9539.22,9199.89,9232.97,1452200000,9232.97 +2001-10-16,9346.31,9479.37,9239.68,9384.23,1210500000,9384.23 +2001-10-15,9340.84,9417.51,9181.07,9347.62,1024700000,9347.62 +2001-10-12,9409.07,9426.30,9146.34,9344.16,1331400000,9344.16 +2001-10-11,9242.63,9522.61,9204.04,9410.45,1704580000,9410.45 +2001-10-10,9052.30,9305.97,8975.15,9240.86,1312400000,9240.86 +2001-10-09,9066.56,9168.42,8927.34,9052.44,1227800000,9052.44 +2001-10-08,9115.75,9187.85,8937.86,9067.94,979000000,9067.94 +2001-10-05,9058.83,9208.41,8894.47,9119.77,1301700000,9119.77 +2001-10-04,9127.24,9259.61,8982.28,9060.88,1609100000,9060.88 +2001-10-03,8946.02,9193.32,8800.99,9123.78,1650600000,9123.78 +2001-10-02,8836.69,9001.03,8737.61,8950.59,1289800000,8950.59 +2001-10-01,8845.97,8931.70,8659.90,8836.83,1175600000,8836.83 +2001-09-28,8679.07,8945.68,8633.75,8847.56,1727400000,8847.56 +2001-09-27,8567.46,8757.47,8398.14,8681.42,1467000000,8681.42 +2001-09-26,8660.06,8766.81,8457.37,8567.39,1519100000,8567.39 +2001-09-25,8605.59,8778.23,8435.56,8659.97,1613800000,8659.97 +2001-09-24,8242.32,8733.39,8242.32,8603.86,1746600000,8603.86 +2001-09-21,8356.56,8484.22,7926.93,8235.81,2317300000,8235.81 +2001-09-20,8375.72,8711.38,8304.45,8376.21,2004800000,8376.21 +2001-09-19,8903.54,8990.37,8453.01,8759.13,2120550000,8759.13 +2001-09-18,8922.70,9126.89,8743.91,8903.40,1650410000,8903.40 +2001-09-17,9294.55,9294.55,8755.46,8920.70,2330830000,8920.70 +2001-09-10,9603.36,9740.44,9431.07,9605.51,1276600000,9605.51 +2001-09-07,9841.25,9842.08,9507.04,9605.85,1424300000,9605.85 +2001-09-06,10028.35,10053.73,9762.03,9840.84,1359700000,9840.84 +2001-09-05,9998.12,10140.79,9820.98,10033.27,1384500000,10033.27 +2001-09-04,9946.98,10238.50,9858.34,9997.49,1178300000,9997.49 +2001-08-31,9918.96,10072.22,9846.72,9949.75,920100000,9949.75 +2001-08-30,10077.07,10149.10,9829.35,9919.58,1157000000,9919.58 +2001-08-29,10224.45,10292.60,10030.43,10090.90,963700000,10090.90 +2001-08-28,10382.56,10405.88,10175.60,10222.03,987100000,10222.03 +2001-08-27,10422.76,10498.03,10334.88,10382.35,842600000,10382.35 +2001-08-24,10232.48,10487.52,10190.34,10423.17,1043600000,10423.17 +2001-08-23,10276.41,10357.09,10142.66,10229.15,986200000,10229.15 +2001-08-22,10170.30,10340.76,10099.07,10276.90,1110800000,10276.90 +2001-08-21,10320.07,10436.39,10132.92,10174.14,1041600000,10174.14 +2001-08-20,10239.33,10388.23,10146.05,10320.07,897100000,10320.07 +2001-08-17,10385.46,10418.68,10143.49,10240.78,974300000,10240.78 +2001-08-16,10342.10,10460.82,10198.15,10392.52,1055400000,10392.52 +2001-08-15,10407.05,10530.36,10289.01,10345.95,1065600000,10345.95 +2001-08-14,10416.95,10513.68,10333.29,10412.17,964600000,10412.17 +2001-08-13,10411.90,10504.82,10314.95,10415.91,837600000,10415.91 +2001-08-10,10296.89,10473.34,10164.67,10416.25,960900000,10416.25 +2001-08-09,10291.15,10361.52,10160.51,10298.56,1104200000,10298.56 +2001-08-08,10456.18,10509.80,10245.68,10293.50,1124600000,10293.50 +2001-08-07,10399.03,10520.11,10324.50,10458.74,1012000000,10458.74 +2001-08-06,10504.13,10549.59,10337.23,10401.31,811700000,10401.31 +2001-08-03,10550.01,10592.98,10381.10,10512.78,939900000,10512.78 +2001-08-02,10513.47,10663.07,10454.53,10551.18,1218300000,10551.18 +2001-08-01,10527.38,10659.33,10423.31,10510.01,1340300000,10510.01 +2001-07-31,10403.18,10639.40,10364.84,10522.81,1129200000,10522.81 +2001-07-30,10418.68,10513.26,10301.05,10401.72,909100000,10401.72 +2001-07-27,10451.89,10516.38,10316.27,10416.67,1015300000,10416.67 +2001-07-26,10403.46,10498.73,10237.46,10455.63,1213900000,10455.63 +2001-07-25,10241.75,10466.28,10159.34,10405.67,1280700000,10405.67 +2001-07-24,10423.80,10469.40,10170.82,10241.12,1198700000,10241.12 +2001-07-23,10576.92,10644.73,10374.81,10424.42,986900000,10424.42 +2001-07-20,10606.19,10668.33,10456.25,10576.65,1170900000,10576.65 +2001-07-19,10574.33,10758.14,10480.54,10610.00,1343500000,10610.00 +2001-07-18,10594.54,10676.83,10374.55,10569.83,1316300000,10569.83 +2001-07-17,10468.62,10683.76,10363.51,10606.39,1238100000,10606.39 +2001-07-16,10537.98,10649.02,10374.55,10472.12,1039800000,10472.12 +2001-07-13,10478.39,10615.42,10374.01,10539.06,1121700000,10539.06 +2001-07-12,10269.31,10542.02,10249.58,10478.99,1394000000,10478.99 +2001-07-11,10174.70,10355.83,10049.38,10241.02,1384100000,10241.02 +2001-07-10,10300.82,10406.87,10104.06,10175.64,1263800000,10175.64 +2001-07-09,10253.62,10389.91,10166.55,10299.40,1045700000,10299.40 +2001-07-06,10476.73,10483.82,10176.26,10252.68,1056700000,10252.68 +2001-07-05,10566.23,10617.47,10403.57,10479.86,934900000,10479.86 +2001-07-03,10588.89,10648.00,10479.99,10571.11,622110000,10571.11 +2001-07-02,10504.95,10707.24,10397.20,10593.72,1128300000,10593.72 +2001-06-29,10565.27,10729.18,10374.32,10502.40,1832360000,10502.40 +2001-06-28,10438.73,10736.43,10429.74,10566.21,1327300000,10566.21 +2001-06-27,10470.35,10608.48,10351.10,10434.84,1162100000,10434.84 +2001-06-26,10497.30,10600.90,10313.40,10472.48,1198900000,10472.48 +2001-06-25,10607.88,10711.19,10417.93,10504.22,1050100000,10504.22 +2001-06-22,10716.50,10753.27,10513.61,10604.59,1189200000,10604.59 +2001-06-21,10646.39,10848.47,10512.67,10715.43,1546820000,10715.43 +2001-06-20,10593.79,10770.88,10480.20,10647.33,1350100000,10647.33 +2001-06-19,10654.30,10793.46,10514.74,10596.67,1184900000,10596.67 +2001-06-18,10622.50,10781.45,10531.78,10645.38,1111600000,10645.38 +2001-06-15,10690.13,10792.25,10495.69,10623.64,1635550000,10623.64 +2001-06-14,10868.27,10874.91,10604.45,10690.13,1242900000,10690.13 +2001-06-13,10942.00,11065.92,10817.21,10871.62,1063600000,10871.62 +2001-06-12,10914.67,11009.93,10744.99,10948.38,1136500000,10948.38 +2001-06-11,10974.79,11038.56,10819.29,10922.09,870100000,10922.09 +2001-06-08,11095.62,11096.46,10882.92,10977.00,726200000,10977.00 +2001-06-07,11069.58,11169.34,10940.11,11090.74,1089600000,11090.74 +2001-06-06,11177.73,11236.68,10998.48,11070.24,1061900000,11070.24 +2001-06-05,11061.39,11234.98,10973.10,11175.84,1116800000,11175.84 +2001-06-04,10991.77,11125.99,10898.80,11061.52,836500000,11061.52 +2001-06-01,10913.57,11063.61,10793.46,10990.41,1015000000,10990.41 +2001-05-31,10873.23,11023.25,10798.53,10911.94,1226600000,10911.94 +2001-05-30,11032.96,11089.89,10819.74,10872.64,1158600000,10872.64 +2001-05-29,11004.66,11162.96,10913.44,11039.14,1026000000,11039.14 +2001-05-25,11122.03,11166.92,10949.01,11005.37,828100000,11005.37 +2001-05-24,11107.07,11248.19,10977.20,11122.42,1100700000,11122.42 +2001-05-23,11257.76,11308.44,11033.16,11105.51,1134800000,11105.51 +2001-05-22,11339.80,11411.63,11162.83,11257.24,1260400000,11257.24 +2001-05-21,11299.14,11436.42,11149.82,11337.92,1174900000,11337.92 +2001-05-18,11245.78,11374.87,11123.01,11301.74,1130800000,11301.74 +2001-05-17,11218.65,11413.46,11104.34,11248.58,1355600000,11248.58 +2001-05-16,10864.74,11258.21,10779.66,11215.92,1405300000,11215.92 +2001-05-15,10877.46,10979.35,10752.73,10872.97,1071800000,10872.97 +2001-05-14,10819.55,10930.09,10730.74,10877.33,858200000,10877.33 +2001-05-11,10908.30,10969.39,10716.16,10821.31,906200000,10821.31 +2001-05-10,10868.87,11049.39,10826.90,10910.44,1056700000,10910.44 +2001-05-09,10875.96,10964.84,10739.78,10866.98,1132400000,10866.98 +2001-05-08,10936.66,11001.66,10755.07,10883.51,1006300000,10883.51 +2001-05-07,10952.35,11059.51,10822.74,10935.17,949000000,10935.17 +2001-05-04,10793.20,10989.95,10638.48,10951.24,1082100000,10951.24 +2001-05-03,10872.32,10911.06,10657.99,10796.65,1137900000,10796.65 +2001-05-02,10902.77,11024.31,10726.77,10876.68,1342200000,10876.68 +2001-05-01,10734.05,10966.07,10669.32,10898.34,1181300000,10898.34 +2001-04-30,10814.41,10973.15,10666.13,10734.97,1226000000,10734.97 +2001-04-27,10694.95,10894.60,10632.36,10810.05,1091300000,10810.05 +2001-04-26,10633.01,10820.72,10533.98,10692.35,1345200000,10692.35 +2001-04-25,10453.43,10675.95,10373.14,10625.20,1203600000,10625.20 +2001-04-24,10529.75,10694.61,10401.45,10454.34,1216500000,10454.34 +2001-04-23,10571.00,10669.71,10393.05,10532.23,1012600000,10532.23 +2001-04-20,10690.33,10755.46,10445.43,10579.85,1338700000,10579.85 +2001-04-19,10616.09,10768.28,10468.79,10693.71,1486800000,10693.71 +2001-04-18,10226.88,10806.41,10215.69,10615.83,1918900000,10615.83 +2001-04-17,10151.73,10286.61,9980.22,10216.73,1109600000,10216.73 +2001-04-16,10118.16,10282.38,9991.14,10158.56,913900000,10158.56 +2001-04-12,10013.08,10178.22,9862.71,10126.94,1102000000,10126.94 +2001-04-11,10109.05,10246.59,9898.77,10013.47,1290300000,10013.47 +2001-04-10,9850.35,10226.85,9850.35,10102.74,1349600000,10102.74 +2001-04-09,9793.58,9999.35,9699.92,9845.15,1062800000,9845.15 +2001-04-06,9913.94,9951.73,9600.91,9791.09,1266800000,9791.09 +2001-04-05,9527.21,9969.92,9527.21,9918.05,1368000000,9918.05 +2001-04-04,9480.95,9693.05,9303.48,9515.42,1425590000,9515.42 +2001-04-03,9774.78,9779.74,9385.43,9485.71,1386100000,9485.71 +2001-04-02,9877.16,10043.02,9638.35,9777.93,1204200000,9777.93 +2001-03-30,9799.47,9998.49,9685.07,9878.78,1280800000,9878.78 +2001-03-29,9784.94,9950.22,9583.67,9799.06,1234500000,9799.06 +2001-03-28,9939.68,9939.68,9607.06,9785.35,1333400000,9785.35 +2001-03-27,9687.93,10012.98,9584.29,9947.54,1314200000,9947.54 +2001-03-26,9509.25,9820.50,9489.75,9687.53,1114000000,9687.53 +2001-03-23,9395.58,9631.80,9249.63,9504.78,1364900000,9504.78 +2001-03-22,9490.66,9565.40,9047.56,9389.48,1723950000,9389.48 +2001-03-21,9717.46,9807.08,9391.42,9487.00,1346300000,9487.00 +2001-03-20,9961.14,10130.45,9675.51,9720.76,1235900000,9720.76 +2001-03-19,9820.05,10059.08,9720.94,9959.11,1126200000,9959.11 +2001-03-16,10023.55,10119.44,9720.17,9823.41,1543560000,9823.41 +2001-03-15,9982.92,10190.80,9887.68,10031.28,1259500000,10031.28 +2001-03-14,10279.42,10279.42,9817.74,9973.46,1397400000,9973.46 +2001-03-13,10206.89,10397.83,10021.60,10290.80,1360900000,10290.80 +2001-03-12,10638.52,10638.63,10138.90,10208.25,1229000000,10208.25 +2001-03-09,10850.11,10874.15,10520.42,10644.62,1085900000,10644.62 +2001-03-08,10727.16,10940.45,10625.95,10858.25,1114100000,10858.25 +2001-03-07,10591.86,10822.23,10524.76,10729.60,1132200000,10729.60 +2001-03-06,10570.17,10759.40,10508.43,10591.22,1091800000,10591.22 +2001-03-05,10468.93,10659.52,10393.59,10562.30,929200000,10562.30 +2001-03-02,10438.04,10645.57,10239.81,10466.31,1294000000,10466.31 +2001-03-01,10493.25,10605.23,10236.92,10450.14,1294900000,10450.14 +2001-02-28,10639.32,10750.23,10374.62,10495.28,1225300000,10495.28 +2001-02-27,10638.44,10787.29,10463.92,10636.88,1114100000,10636.88 +2001-02-26,10447.59,10701.92,10347.59,10642.53,1130800000,10642.53 +2001-02-23,10529.25,10595.01,10225.14,10441.90,1231300000,10441.90 +2001-02-22,10527.80,10694.50,10278.93,10526.81,1365900000,10526.81 +2001-02-21,10721.29,10828.48,10468.32,10526.58,1208500000,10526.58 +2001-02-20,10800.23,10988.29,10612.25,10730.88,1112200000,10730.88 +2001-02-16,10884.11,10946.11,10652.33,10799.82,1257200000,10799.82 +2001-02-15,10800.65,11023.44,10694.43,10891.02,1153700000,10891.02 +2001-02-14,10899.42,10989.61,10683.39,10795.41,1150300000,10795.41 +2001-02-13,10950.18,11114.44,10774.98,10903.32,1075200000,10903.32 +2001-02-12,10779.42,11024.92,10727.02,10946.77,1039100000,10946.77 +2001-02-09,10878.51,10979.12,10682.77,10781.45,1075500000,10781.45 +2001-02-08,10940.62,11080.42,10776.04,10880.55,1107200000,10880.55 +2001-02-07,10948.95,11140.09,10794.29,10946.72,1158300000,10946.72 +2001-02-06,10965.03,11117.80,10820.28,10957.42,1059600000,10957.42 +2001-02-05,10860.44,11061.42,10759.98,10965.85,1013000000,10965.85 +2001-02-02,10982.71,11093.01,10786.69,10864.10,1048400000,10864.10 +2001-02-01,10884.82,11063.95,10759.85,10983.63,1118800000,10983.63 +2001-01-31,10882.25,11072.28,10705.23,10887.36,1295300000,10887.36 +2001-01-30,10702.19,10950.38,10609.77,10881.20,1149800000,10881.20 +2001-01-29,10657.13,10832.56,10515.99,10702.19,1053100000,10702.19 +2001-01-26,10727.08,10874.28,10506.26,10659.98,1098000000,10659.98 +2001-01-25,10644.53,10882.42,10520.90,10729.52,1258000000,10729.52 +2001-01-24,10651.85,10795.80,10483.49,10646.97,1309000000,10646.97 +2001-01-23,10575.80,10773.94,10459.91,10649.81,1232600000,10649.81 +2001-01-22,10581.90,10749.44,10371.66,10578.24,1164000000,10578.24 +2001-01-19,10686.00,10792.14,10448.93,10587.59,1407800000,10587.59 +2001-01-18,10584.57,10834.43,10466.01,10678.28,1445000000,10678.28 +2001-01-17,10660.95,10817.35,10442.83,10584.34,1349100000,10584.34 +2001-01-16,10525.78,10751.48,10362.72,10652.66,1205700000,10652.66 +2001-01-12,10608.74,10743.75,10339.94,10525.38,1276000000,10525.38 +2001-01-11,10600.20,10808.00,10400.94,10609.55,1411200000,10609.55 +2001-01-10,10568.48,10728.30,10325.71,10604.27,1296500000,10604.27 +2001-01-09,10625.21,10801.09,10387.12,10572.55,1191300000,10572.55 +2001-01-08,10658.73,10818.98,10407.85,10621.35,1115500000,10621.35 +2001-01-05,10912.81,10990.59,10492.84,10662.01,1430800000,10662.01 +2001-01-04,10944.94,11224.41,10672.58,10912.41,216940000,10912.41 +2001-01-03,10637.42,11212.62,10367.19,10945.75,188070000,10945.75 +2001-01-02,10790.92,10916.98,10450.55,10646.15,1129400000,10646.15 +2000-12-29,10868.76,11031.05,10675.75,10787.99,1035500000,10787.99 +2000-12-28,10795.20,11009.44,10645.42,10868.76,1015300000,10868.76 +2000-12-27,10690.10,10944.60,10551.00,10803.16,1092700000,10803.16 +2000-12-26,10638.21,10813.78,10479.71,10692.44,806500000,10692.44 +2000-12-22,10495.26,10772.07,10364.06,10635.56,1087100000,10635.56 +2000-12-21,10314.38,10651.96,10158.16,10487.29,1449900000,10487.29 +2000-12-20,10580.97,10604.08,10197.59,10318.93,1421600000,10318.93 +2000-12-19,10643.14,10865.35,10441.41,10584.37,1324900000,10584.37 +2000-12-18,10433.34,10783.82,10417.43,10645.42,1189900000,10645.42 +2000-12-15,10647.98,10706.84,10324.24,10434.96,156110000,10434.96 +2000-12-14,10794.82,10864.49,10508.53,10674.99,1061300000,10674.99 +2000-12-13,10777.95,11002.23,10653.76,10794.44,1195100000,10794.44 +2000-12-12,10722.77,10968.77,10582.09,10768.27,1083400000,10768.27 +2000-12-11,10719.36,10931.33,10521.04,10725.80,1202400000,10725.80 +2000-12-08,10632.14,10896.82,10534.69,10712.91,1358300000,10712.91 +2000-12-07,10644.66,10791.40,10448.99,10617.36,1128000000,10617.36 +2000-12-06,10896.14,10995.41,10513.84,10664.38,1399300000,10664.38 +2000-12-05,10576.78,11044.70,10504.36,10898.72,900300000,10898.72 +2000-12-04,10377.33,10701.35,10227.17,10560.95,1103000000,10560.95 +2000-12-01,10416.76,10645.42,10238.54,10373.54,1195200000,10373.54 +2000-11-30,10610.53,10690.16,10204.80,10414.49,1186530000,10414.49 +2000-11-29,10502.74,10746.66,10383.02,10629.11,402100000,10629.11 +2000-11-28,10537.86,10730.35,10356.47,10507.58,1028200000,10507.58 +2000-11-27,10479.33,10758.04,10411.08,10546.07,946100000,10546.07 +2000-11-24,10403.87,10596.50,10354.20,10470.23,404870000,10470.23 +2000-11-22,10484.26,10589.67,10251.06,10399.32,963200000,10399.32 +2000-11-21,10465.57,10676.13,10303.39,10494.50,1137100000,10494.50 +2000-11-20,10624.18,10707.22,10331.45,10462.65,955800000,10462.65 +2000-11-17,10657.13,10824.77,10462.55,10629.87,1070400000,10629.87 +2000-11-16,10705.33,10857.38,10536.30,10656.03,956300000,10656.03 +2000-11-15,10681.21,10863.83,10544.17,10707.60,1066800000,10707.60 +2000-11-14,10528.25,10809.61,10484.64,10681.06,1118800000,10681.06 +2000-11-13,10595.35,10701.54,10273.24,10517.25,1129300000,10517.25 +2000-11-10,10813.78,10886.20,10497.53,10602.95,962500000,10602.95 +2000-11-09,10902.11,10989.34,10576.40,10834.25,1111000000,10834.25 +2000-11-08,10954.34,11152.02,10779.27,10907.06,909300000,10907.06 +2000-11-07,10978.72,11105.75,10825.15,10952.18,880900000,10952.18 +2000-11-06,10820.60,11092.10,10741.73,10977.21,930900000,10977.21 +2000-11-03,10883.17,10996.17,10650.72,10817.95,997700000,10817.95 +2000-11-02,10903.17,11071.06,10731.49,10880.51,1167700000,10880.51 +2000-11-01,10966.21,11103.10,10736.42,10899.47,1206800000,10899.47 +2000-10-31,10835.39,11108.79,10681.06,10971.14,1366400000,10971.14 +2000-10-30,10588.06,10944.98,10506.25,10835.77,1186500000,10835.77 +2000-10-27,10381.60,10696.43,10296.70,10590.62,1086300000,10590.62 +2000-10-26,10330.18,10563.25,10128.18,10380.12,1303800000,10380.12 +2000-10-25,10395.66,10563.99,10170.08,10326.48,1315600000,10326.48 +2000-10-24,10273.57,10583.96,10136.69,10393.07,1158600000,10393.07 +2000-10-23,10230.29,10496.28,10078.24,10271.72,1046800000,10271.72 +2000-10-20,10141.13,10406.76,9925.82,10226.59,1177400000,10226.59 +2000-10-19,10014.61,10317.23,9901.77,10142.98,1297900000,10142.98 +2000-10-18,10085.99,10171.47,9571.40,9975.02,1441700000,9975.02 +2000-10-17,10242.87,10402.32,9924.34,10089.71,1161500000,10089.71 +2000-10-16,10184.78,10428.95,10033.84,10238.80,1005400000,10238.80 +2000-10-13,10031.62,10325.37,9883.27,10192.18,1223900000,10192.18 +2000-10-12,10424.14,10462.25,9873.66,10034.58,1388600000,10034.58 +2000-10-11,10521.07,10647.23,10228.44,10413.79,1387500000,10413.79 +2000-10-10,10569.17,10744.52,10377.16,10524.40,1044000000,10524.40 +2000-10-09,10596.91,10762.10,10438.94,10568.43,716600000,10568.43 +2000-10-06,10726.76,10871.42,10440.05,10596.54,1150100000,10596.54 +2000-10-05,10783.72,10940.23,10570.28,10724.92,1176100000,10724.92 +2000-10-04,10723.33,10972.41,10596.54,10784.48,1167400000,10784.48 +2000-10-03,10709.84,10976.11,10561.03,10719.74,1098100000,10719.74 +2000-10-02,10659.06,10876.23,10479.27,10700.13,1051200000,10700.13 +2000-09-29,10821.40,10923.21,10552.15,10650.92,1197100000,10650.92 +2000-09-28,10629.84,10948.00,10539.48,10824.06,1206200000,10824.06 +2000-09-27,10634.45,10821.10,10439.31,10628.36,1174700000,10628.36 +2000-09-26,10806.30,10915.44,10499.61,10631.32,1106600000,10631.32 +2000-09-25,10847.37,11039.47,10664.24,10808.15,982400000,10808.15 +2000-09-22,10678.30,10936.53,10505.16,10847.37,1185500000,10847.37 +2000-09-21,10680.52,10902.12,10548.08,10765.52,1105400000,10765.52 +2000-09-20,10794.47,10906.93,10500.35,10687.92,1104000000,10687.92 +2000-09-19,10812.22,10960.95,10645.38,10789.29,1024900000,10789.29 +2000-09-18,10926.42,11053.80,10693.84,10808.52,962500000,10808.52 +2000-09-15,11087.84,11203.26,10857.73,10927.00,1268400000,10927.00 +2000-09-14,11189.58,11285.39,10986.47,11087.47,1014000000,11087.47 +2000-09-13,11225.03,11350.87,11020.14,11182.18,1068300000,11182.18 +2000-09-12,11197.71,11351.98,11015.70,11233.23,991200000,11233.23 +2000-09-11,11219.54,11367.15,11043.07,11195.49,899300000,11195.49 +2000-09-08,11261.72,11381.95,11059.72,11220.65,961000000,11220.65 +2000-09-07,11316.01,11444.84,11124.83,11259.87,985500000,11259.87 +2000-09-06,11253.58,11518.83,11186.25,11310.64,995100000,11310.64 +2000-09-05,11221.76,11382.69,11094.50,11260.61,838500000,11260.61 +2000-09-01,11219.54,11406.74,11130.01,11238.78,767700000,11238.78 +2000-08-31,11105.23,11415.99,11040.85,11215.10,1056600000,11215.10 +2000-08-30,11209.01,11282.06,11034.57,11103.01,818400000,11103.01 +2000-08-29,11249.27,11356.42,11100.79,11215.10,795600000,11215.10 +2000-08-28,11194.48,11410.44,11123.35,11252.84,733600000,11252.84 +2000-08-25,11180.54,11301.41,11073.59,11192.63,685600000,11192.63 +2000-08-24,11143.91,11302.51,11009.12,11182.74,837100000,11182.74 +2000-08-23,11130.55,11253.06,10990.44,11144.65,871000000,11144.65 +2000-08-22,11082.20,11274.67,11000.33,11139.15,818800000,11139.15 +2000-08-21,11058.85,11193.73,10945.39,11079.81,731600000,11079.81 +2000-08-18,11051.20,11180.54,10933.30,11046.48,821400000,11046.48 +2000-08-17,11010.95,11180.91,10899.24,11055.64,922400000,11055.64 +2000-08-16,11068.83,11171.02,10888.62,11008.39,929800000,11008.39 +2000-08-15,11175.05,11227.06,10965.54,11067.00,895900000,11067.00 +2000-08-14,11027.07,11232.92,10928.91,11176.14,783800000,11176.14 +2000-08-11,10905.98,11131.83,10841.37,11027.80,835500000,11027.80 +2000-08-10,10901.06,11069.93,10779.47,10908.76,940800000,10908.76 +2000-08-09,10970.94,11097.03,10780.02,10905.83,1054000000,10905.83 +2000-08-08,10865.15,11083.11,10741.38,10976.89,992200000,10976.89 +2000-08-07,10773.98,10973.23,10657.50,10867.01,854800000,10867.01 +2000-08-04,10713.36,10873.97,10555.68,10767.75,956000000,10767.75 +2000-08-03,10679.37,10844.30,10518.68,10706.58,1095600000,10706.58 +2000-08-02,10609.15,10818.66,10514.29,10687.53,986300000,10687.53 +2000-08-01,10523.81,10728.92,10428.58,10606.95,938700000,10606.95 +2000-07-31,10514.29,10727.09,10374.00,10521.98,952600000,10521.98 +2000-07-28,10594.97,10732.14,10367.28,10511.17,980000000,10511.17 +2000-07-27,10516.83,10745.93,10450.01,10586.13,1156400000,10586.13 +2000-07-26,10689.36,10790.13,10447.18,10516.48,1235800000,10516.48 +2000-07-25,10689.28,10867.20,10557.49,10699.97,969400000,10699.97 +2000-07-24,10731.44,10895.84,10545.47,10685.12,880300000,10685.12 +2000-07-21,10843.51,10949.58,10614.06,10733.56,968300000,10733.56 +2000-07-20,10700.68,10980.34,10671.33,10843.87,1064600000,10843.87 +2000-07-19,10724.15,10907.15,10587.89,10696.08,909400000,10696.08 +2000-07-18,10799.16,10895.57,10613.00,10739.92,908300000,10739.92 +2000-07-17,10812.40,10969.38,10653.30,10804.27,906000000,10804.27 +2000-07-14,10793.31,10935.44,10661.43,10812.75,960600000,10812.75 +2000-07-13,10774.92,10963.02,10643.40,10788.71,1026800000,10788.71 +2000-07-12,10722.24,10930.84,10639.51,10783.76,1001200000,10783.76 +2000-07-11,10649.06,10877.46,10544.76,10727.19,980500000,10727.19 +2000-07-10,10627.14,10792.25,10520.01,10646.58,838700000,10646.58 +2000-07-07,10483.33,10742.04,10419.25,10635.98,931700000,10635.98 +2000-07-06,10481.45,10644.11,10303.28,10481.47,947300000,10481.47 +2000-07-05,10538.23,10674.16,10362.33,10483.60,1019300000,10483.60 +2000-07-03,10450.36,10610.17,10353.66,10560.67,451900000,10560.67 +2000-06-30,10393.09,10626.79,10161.51,10447.89,1459700000,10447.89 +2000-06-29,10523.90,10582.94,10279.24,10398.04,1110900000,10398.04 +2000-06-28,10506.39,10712.70,10399.10,10527.79,1095100000,10527.79 +2000-06-27,10541.58,10741.69,10384.60,10504.46,1042500000,10504.46 +2000-06-26,10403.69,10680.26,10365.15,10542.99,889000000,10542.99 +2000-06-23,10376.47,10555.37,10283.13,10404.75,847600000,10404.75 +2000-06-22,10495.97,10596.73,10256.97,10376.12,1022700000,10376.12 +2000-06-21,10446.83,10607.69,10312.48,10497.74,1009600000,10497.74 +2000-06-20,10558.90,10632.09,10318.84,10435.16,1031500000,10435.16 +2000-06-19,10448.40,10733.56,10322.02,10557.84,921700000,10557.84 +2000-06-16,10717.76,10784.47,10393.44,10449.30,1250800000,10449.30 +2000-06-15,10689.63,10889.48,10552.89,10714.82,1011400000,10714.82 +2000-06-14,10632.46,10860.84,10542.99,10687.95,929700000,10687.95 +2000-06-13,10562.31,10751.86,10395.56,10621.84,935900000,10621.84 +2000-06-12,10615.12,10757.60,10476.88,10564.21,774100000,10564.21 +2000-06-09,10678.47,10848.38,10515.52,10614.06,786000000,10614.06 +2000-06-08,10818.78,10887.72,10524.92,10668.72,854300000,10668.72 +2000-06-07,10733.48,10974.07,10588.64,10812.86,854600000,10812.86 +2000-06-06,10822.61,10916.97,10592.82,10735.57,950100000,10735.57 +2000-06-05,10793.11,10951.79,10629.03,10815.30,838600000,10815.30 +2000-06-02,10660.09,11013.05,10600.46,10794.76,1162400000,10794.76 +2000-06-01,10532.27,10780.37,10422.95,10652.20,960100000,10652.20 +2000-05-31,10528.28,10692.73,10377.37,10522.33,960500000,10522.33 +2000-05-30,10302.31,10596.00,10287.94,10527.13,844200000,10527.13 +2000-05-26,10322.89,10487.72,10163.20,10299.24,722600000,10299.24 +2000-05-25,10529.87,10644.32,10207.75,10323.92,984500000,10323.92 +2000-05-24,10420.90,10679.53,10240.99,10535.35,1152300000,10535.35 +2000-05-23,10539.12,10671.74,10325.63,10422.27,869900000,10422.27 +2000-05-22,10624.79,10718.00,10308.15,10542.55,869000000,10542.55 +2000-05-19,10764.22,10821.83,10468.18,10626.85,853700000,10626.85 +2000-05-18,10771.80,10938.34,10669.00,10777.28,807900000,10777.28 +2000-05-17,10930.64,10947.25,10648.78,10769.74,820500000,10769.74 +2000-05-16,10816.01,11086.72,10723.48,10934.57,955500000,10934.57 +2000-05-15,10606.97,10902.36,10509.31,10807.78,854600000,10807.78 +2000-05-12,10549.06,10780.37,10444.54,10609.37,858200000,10609.37 +2000-05-11,10369.27,10676.88,10315.69,10545.97,953600000,10545.97 +2000-05-10,10533.09,10649.95,10169.77,10367.78,1006400000,10367.78 +2000-05-09,10607.54,10765.75,10435.96,10536.75,896600000,10536.75 +2000-05-08,10571.31,10744.22,10400.40,10603.63,787600000,10603.63 +2000-05-05,10409.70,10688.61,10312.91,10577.86,805500000,10577.86 +2000-05-04,10478.89,10631.53,10293.05,10412.49,925800000,10412.49 +2000-05-03,10732.21,10754.39,10345.17,10480.13,991600000,10480.13 +2000-05-02,10805.58,10932.47,10580.65,10731.12,1011500000,10731.12 +2000-05-01,10749.42,11001.34,10622.22,10811.78,966300000,10811.78 +2000-04-28,10892.76,11005.07,10632.46,10733.91,984600000,10733.91 +2000-04-27,10941.91,11024.61,10650.14,10888.10,1111000000,10888.10 +2000-04-26,11127.92,11246.75,10816.44,10945.50,999600000,10945.50 +2000-04-25,10916.65,11265.67,10764.62,11124.82,1071100000,11124.82 +2000-04-24,10822.33,11060.29,10579.10,10906.10,868700000,10906.10 +2000-04-20,10668.19,10941.47,10582.51,10844.05,896200000,10844.05 +2000-04-19,10748.97,10909.20,10503.40,10674.96,1001400000,10674.96 +2000-04-18,10584.02,10941.78,10424.90,10767.42,1109400000,10767.42 +2000-04-17,10303.29,10721.50,10128.62,10582.51,1204700000,10582.51 +2000-04-14,10922.85,10922.85,10173.92,10305.77,1279700000,10305.77 +2000-04-13,11132.58,11290.80,10806.51,10923.55,1032000000,10923.55 +2000-04-12,11283.05,11600.43,11026.47,11125.13,1175900000,11125.13 +2000-04-11,11180.98,11459.58,11024.22,11287.08,971400000,11287.08 +2000-04-10,11114.89,11404.35,10955.43,11186.56,853700000,11186.56 +2000-04-07,11122.03,11317.79,10932.78,11111.48,891600000,11111.48 +2000-04-06,11029.56,11303.83,10921.07,11114.27,1008000000,11114.27 +2000-04-05,11163.29,11326.79,10894.00,11033.92,1110300000,11033.92 +2000-04-04,11225.34,11531.24,10682.72,11164.84,1515460000,11164.84 +2000-04-03,10863.28,11344.17,10821.71,11221.93,1021700000,11221.93 +2000-03-31,10993.28,11244.58,10801.23,10921.92,1227400000,10921.92 +2000-03-30,11008.17,11258.23,10796.58,10980.25,1193400000,10980.25 +2000-03-29,10939.05,11214.48,10792.24,11018.72,1061900000,11018.72 +2000-03-28,11023.68,11192.76,10804.65,10936.11,959100000,10936.11 +2000-03-27,11093.25,11274.98,10881.90,11025.85,901000000,11025.85 +2000-03-24,11107.45,11311.28,10901.44,11112.72,1052200000,11112.72 +2000-03-23,10884.38,11224.72,10737.63,11119.86,1078300000,11119.86 +2000-03-22,10916.96,11054.71,10671.86,10866.70,1075000000,10866.70 +2000-03-21,10680.24,11012.20,10515.50,10907.34,1065900000,10907.34 +2000-03-20,10594.75,10866.08,10456.86,10680.24,920800000,10680.24 +2000-03-17,10629.98,10849.32,10399.15,10595.23,1295100000,10595.23 +2000-03-16,10139.58,10716.23,10139.58,10630.60,1482300000,10630.60 +2000-03-15,9808.15,10294.60,9676.90,10131.41,1302800000,10131.41 +2000-03-14,9957.67,10149.41,9747.33,9811.24,1094000000,9811.24 +2000-03-13,9911.22,10111.25,9670.07,9947.13,1016100000,9947.13 +2000-03-10,10008.55,10211.77,9792.93,9928.82,1138800000,9928.82 +2000-03-09,9855.29,10097.28,9667.28,10010.73,1123000000,10010.73 +2000-03-08,9800.69,10037.41,9611.75,9856.53,1203000000,9856.53 +2000-03-07,10197.61,10208.66,9651.77,9796.03,1314100000,9796.03 +2000-03-06,10358.96,10518.91,10038.65,10170.50,1029000000,10170.50 +2000-03-03,10171.12,10581.89,10148.16,10367.20,1150300000,10367.20 +2000-03-02,10135.44,10361.61,9986.53,10164.92,1198600000,10164.92 +2000-03-01,10128.11,10355.72,9935.96,10137.93,1274100000,10137.93 +2000-02-29,10039.58,10332.14,9926.65,10128.31,1204300000,10128.31 +2000-02-28,9854.66,10228.52,9760.36,10038.65,1026500000,10038.65 +2000-02-25,10090.77,10196.02,9767.80,9862.12,1065200000,9862.12 +2000-02-24,10242.48,10321.90,9877.94,10092.63,1215000000,10092.63 +2000-02-23,10294.82,10443.21,10077.74,10225.73,993700000,10225.73 +2000-02-22,10219.83,10446.62,10011.66,10304.84,980000000,10304.84 +2000-02-18,10514.57,10562.34,10129.24,10219.52,1042300000,10219.52 +2000-02-17,10565.76,10768.66,10348.66,10514.57,1034800000,10514.57 +2000-02-16,10711.82,10831.64,10468.65,10561.41,1018800000,10561.41 +2000-02-15,10520.15,10821.09,10377.44,10718.09,1092100000,10718.09 +2000-02-14,10431.65,10674.96,10327.56,10519.84,927300000,10519.84 +2000-02-11,10638.64,10763.38,10301.12,10425.21,1025700000,10425.21 +2000-02-10,10697.92,10853.67,10491.30,10643.63,1058800000,10643.63 +2000-02-09,10948.82,11016.54,10647.97,10699.16,1050500000,10699.16 +2000-02-08,10904.26,11139.40,10826.67,10957.60,1047700000,10957.60 +2000-02-07,10965.97,11097.52,10732.67,10905.79,918100000,10905.79 +2000-02-04,11014.37,11200.83,10847.54,10963.80,1045100000,10963.80 +2000-02-03,11010.48,11207.97,10799.68,11013.44,1146500000,11013.44 +2000-02-02,11037.64,11228.44,10876.00,11003.20,1038600000,11003.20 +2000-02-01,10937.74,11187.18,10798.44,11041.05,981000000,11041.05 +2000-01-31,10735.77,11059.67,10610.43,10940.53,993800000,10940.53 +2000-01-28,11024.92,11115.20,10649.21,10738.87,1095800000,10738.87 +2000-01-27,11035.55,11274.36,10818.30,11028.02,1129500000,11028.02 +2000-01-26,11025.85,11280.87,10870.73,11032.99,1117300000,11032.99 +2000-01-25,11010.96,11228.75,10779.83,11029.89,1073700000,11029.89 +2000-01-24,11251.94,11501.15,10849.01,11008.17,1115800000,11008.17 +2000-01-21,11356.26,11513.87,11113.65,11251.71,1209800000,11251.71 +2000-01-20,11490.29,11654.72,11194.32,11351.30,1100700000,11351.30 +2000-01-19,11535.24,11710.57,11320.28,11489.36,1087800000,11489.36 +2000-01-18,11719.19,11834.67,11397.22,11560.72,1056700000,11560.72 +2000-01-14,11619.35,11908.50,11506.42,11722.98,1085900000,11722.98 +2000-01-13,11558.24,11761.14,11421.42,11582.43,1030400000,11582.43 +2000-01-12,11506.73,11751.83,11385.74,11551.10,974600000,11551.10 +2000-01-11,11568.47,11748.11,11398.30,11511.08,1014000000,11511.08 +2000-01-10,11532.48,11765.17,11427.00,11572.20,1064800000,11572.20 +2000-01-07,11247.06,11655.65,11168.26,11522.56,1225200000,11522.56 +2000-01-06,11113.37,11447.79,10963.18,11253.26,1092300000,11253.26 +2000-01-05,10989.37,11337.65,10862.66,11122.65,1085500000,11122.65 +2000-01-04,11349.75,11358.44,10907.03,10997.93,1009000000,10997.93 +2000-01-03,11501.85,11641.07,11180.98,11357.51,931800000,11357.51 +1999-12-31,11453.48,11598.26,11368.05,11497.12,374050000,11497.12 +1999-12-30,11484.36,11640.33,11388.94,11452.86,554680000,11452.86 +1999-12-29,11472.88,11658.68,11367.53,11484.66,567860000,11484.66 +1999-12-28,11389.24,11613.72,11302.08,11476.71,655400000,11476.71 +1999-12-27,11410.65,11603.02,11253.15,11391.08,722600000,11391.08 +1999-12-23,11202.07,11506.38,11202.07,11405.76,728600000,11405.76 +1999-12-22,11199.45,11375.17,11075.76,11203.60,850000000,11203.60 +1999-12-21,11142.43,11336.03,10973.61,11200.54,963500000,11200.54 +1999-12-20,11254.50,11417.38,11026.22,11144.27,904600000,11144.27 +1999-12-17,11259.26,11497.20,11103.59,11257.43,1349800000,11257.43 +1999-12-16,11224.40,11396.89,11016.13,11244.89,1070300000,11244.89 +1999-12-15,11158.78,11400.48,11014.60,11225.32,1033900000,11225.32 +1999-12-14,11195.34,11336.33,11027.13,11160.17,1027800000,11160.17 +1999-12-13,11217.46,11379.46,11024.38,11192.59,977600000,11192.59 +1999-12-10,11137.85,11358.66,11042.12,11224.70,987200000,11224.70 +1999-12-09,11073.62,11327.46,10962.60,11134.79,1122100000,11134.79 +1999-12-08,11107.26,11273.33,10957.41,11068.12,957000000,11068.12 +1999-12-07,11221.65,11351.32,10993.49,11106.65,1085800000,11106.65 +1999-12-06,11286.79,11412.79,11100.53,11225.01,916800000,11225.01 +1999-12-03,11046.10,11423.50,11046.10,11286.18,1006400000,11286.18 +1999-12-02,10995.02,11183.72,10896.24,11039.06,900700000,11039.06 +1999-12-01,10876.47,11111.24,10798.07,10998.39,884000000,10998.39 +1999-11-30,10945.49,11142.13,10785.22,10877.81,951500000,10877.81 +1999-11-29,10985.73,11059.25,10813.97,10947.92,866100000,10947.92 +1999-11-26,11007.26,11115.83,10938.44,10988.91,312120000,10988.91 +1999-11-24,11000.22,11131.12,10859.23,11008.17,734800000,11008.17 +1999-11-23,11090.29,11178.83,10899.60,10995.63,926100000,10995.63 +1999-11-22,11008.78,11195.34,10887.67,11089.52,873500000,11089.52 +1999-11-19,11033.25,11146.41,10871.77,11003.89,893800000,11003.89 +1999-11-18,10887.67,11147.02,10859.92,11035.70,1022800000,11035.70 +1999-11-17,10929.00,11040.90,10774.21,10883.09,960000000,10883.09 +1999-11-16,10762.89,10992.88,10691.94,10932.33,942200000,10932.33 +1999-11-15,10764.73,10899.22,10626.80,10760.75,795700000,10760.75 +1999-11-12,10593.51,10845.16,10513.03,10769.32,900200000,10769.32 +1999-11-11,10603.25,10716.71,10485.20,10595.30,891300000,10595.30 +1999-11-10,10611.94,10713.04,10449.42,10597.74,984700000,10597.74 +1999-11-09,10715.10,10806.02,10506.61,10617.32,854300000,10617.32 +1999-11-08,10668.42,10838.74,10548.20,10718.85,806800000,10718.85 +1999-11-05,10639.95,10885.53,10636.59,10704.48,1007300000,10704.48 +1999-11-04,10612.42,10817.95,10523.43,10639.64,981700000,10639.64 +1999-11-03,10582.54,10759.22,10485.50,10609.06,914400000,10609.06 +1999-11-02,10653.71,10816.11,10508.14,10581.84,904500000,10581.84 +1999-11-01,10730.78,10828.96,10568.08,10648.51,861000000,10648.51 +1999-10-29,10629.18,10883.10,10580.11,10729.86,1120500000,10729.86 +1999-10-28,10397.67,10726.70,10397.67,10622.53,1135100000,10622.53 +1999-10-27,10302.76,10515.21,10172.32,10394.89,950100000,10394.89 +1999-10-26,10350.88,10486.39,10208.73,10302.13,878300000,10302.13 +1999-10-25,10468.98,10518.37,10225.82,10349.93,777000000,10349.93 +1999-10-22,10581.69,10581.69,10301.18,10470.25,959200000,10470.25 +1999-10-21,10390.71,10414.52,10047.57,10297.69,1012500000,10297.69 +1999-10-20,10203.31,10485.13,10144.46,10392.36,928800000,10392.36 +1999-10-19,10117.54,10418.01,10093.80,10204.93,905700000,10204.93 +1999-10-18,10018.45,10221.08,9884.20,10116.28,818700000,10116.28 +1999-10-15,10286.61,10286.61,9911.43,10019.71,912600000,10019.71 +1999-10-14,10230.89,10416.74,10071.64,10286.61,892300000,10286.61 +1999-10-13,10412.31,10495.89,10173.58,10232.16,821500000,10232.16 +1999-10-12,10648.81,10659.58,10366.08,10417.06,778300000,10417.06 +1999-10-11,10649.76,10781.16,10545.60,10648.18,655900000,10648.18 +1999-10-08,10534.52,10743.48,10423.71,10649.76,897300000,10649.76 +1999-10-07,10588.34,10687.12,10430.99,10537.05,827800000,10537.05 +1999-10-06,10399.77,10655.46,10340.75,10588.34,895200000,10588.34 +1999-10-05,10401.23,10578.21,10250.20,10400.59,965700000,10400.59 +1999-10-04,10274.58,10538.32,10220.44,10401.23,803300000,10401.23 +1999-10-01,10335.69,10425.92,10108.05,10273.00,896200000,10273.00 +1999-09-30,10214.11,10456.32,10156.85,10336.95,1017600000,10336.95 +1999-09-29,10274.27,10408.51,10119.76,10213.48,856000000,10213.48 +1999-09-28,10300.51,10386.03,10055.17,10275.53,885400000,10275.53 +1999-09-27,10279.33,10498.74,10201.76,10303.39,780600000,10303.39 +1999-09-24,10311.94,10428.14,10128.63,10279.33,872800000,10279.33 +1999-09-23,10524.07,10643.75,10260.33,10318.59,890800000,10318.59 +1999-09-22,10599.42,10688.39,10407.56,10524.07,822200000,10524.07 +1999-09-21,10822.95,10822.95,10517.10,10598.47,817300000,10598.47 +1999-09-20,10801.87,10918.88,10715.93,10823.90,568000000,10823.90 +1999-09-17,10745.38,10946.74,10690.61,10803.63,861900000,10803.63 +1999-09-16,10795.77,10876.46,10592.46,10737.46,739000000,10737.46 +1999-09-15,10910.40,11049.96,10757.41,10801.42,787300000,10801.42 +1999-09-14,11028.74,11061.04,10815.67,10910.33,734500000,10910.33 +1999-09-13,11027.40,11146.52,10886.90,11030.33,657900000,11030.33 +1999-09-10,11087.00,11218.39,10965.74,11028.43,808500000,11028.43 +1999-09-09,11031.28,11172.17,10900.83,11079.40,773900000,11079.40 +1999-09-08,11034.13,11164.89,10898.62,11036.34,791200000,11036.34 +1999-09-07,11079.08,11191.80,10910.65,11034.13,715300000,11034.13 +1999-09-03,10922.36,11155.70,10922.36,11078.45,663200000,11078.45 +1999-09-02,10923.95,10923.95,10669.71,10843.21,687100000,10843.21 +1999-09-01,10828.44,11013.55,10784.32,10937.88,708200000,10937.88 +1999-08-31,10909.70,11079.08,10725.43,10829.28,861700000,10829.28 +1999-08-30,11087.69,11176.60,10869.81,10914.13,597900000,10914.13 +1999-08-27,11198.45,11295.33,11021.14,11090.17,570050000,11090.17 +1999-08-26,11326.04,11393.48,11133.86,11198.45,719000000,11198.45 +1999-08-25,11282.38,11428.94,11106.31,11326.04,864600000,11326.04 +1999-08-24,11297.54,11404.87,11135.76,11283.30,732700000,11283.30 +1999-08-23,11099.66,11344.09,11087.95,11299.76,682600000,11299.76 +1999-08-20,10963.84,11155.07,10916.35,11100.61,661200000,11100.61 +1999-08-19,10988.85,11037.29,10809.65,10963.84,684200000,10963.84 +1999-08-18,11109.66,11153.49,10913.50,10991.38,682800000,10991.38 +1999-08-17,11049.64,11180.08,10963.52,11117.08,691500000,11117.08 +1999-08-16,10980.11,11105.05,10853.98,11046.79,583550000,11046.79 +1999-08-13,10822.00,11049.64,10822.00,10973.65,691700000,10973.65 +1999-08-12,10785.65,10967.64,10688.07,10789.39,745600000,10789.39 +1999-08-11,10650.59,10878.99,10596.26,10787.80,792300000,10787.80 +1999-08-10,10704.22,10812.82,10487.34,10655.15,836200000,10655.15 +1999-08-09,10714.03,10854.61,10571.56,10707.70,684300000,10707.70 +1999-08-06,10792.58,10896.08,10584.54,10714.03,698900000,10714.03 +1999-08-05,10675.41,10876.77,10509.19,10793.82,859300000,10793.82 +1999-08-04,10675.66,10901.78,10585.17,10674.77,789300000,10674.77 +1999-08-03,10645.96,10812.82,10538.00,10677.31,739600000,10677.31 +1999-08-02,10654.83,10849.23,10551.30,10645.96,649550000,10645.96 +1999-07-30,10791.29,10897.98,10594.99,10655.15,736800000,10655.15 +1999-07-29,10920.15,10920.15,10672.24,10791.29,770100000,10791.29 +1999-07-28,10979.04,11090.48,10851.13,10972.07,690900000,10972.07 +1999-07-27,10863.16,11079.40,10834.35,10979.04,723800000,10979.04 +1999-07-26,10910.96,11014.50,10748.86,10863.16,613450000,10863.16 +1999-07-23,10979.67,11069.59,10813.77,10910.96,630580000,10910.96 +1999-07-22,11002.78,11140.51,10796.67,10969.22,771700000,10969.22 +1999-07-21,10998.94,11142.72,10865.69,11002.78,785500000,11002.78 +1999-07-20,11130.06,11245.62,10914.13,10996.13,754800000,10996.13 +1999-07-19,11209.84,11321.61,11069.90,11187.68,642330000,11187.68 +1999-07-16,11188.63,11300.08,11069.27,11209.84,714100000,11209.84 +1999-07-15,11200.03,11313.37,11072.75,11186.41,818800000,11186.41 +1999-07-14,11202.24,11289.95,11051.86,11148.10,756100000,11148.10 +1999-07-13,11106.31,11277.60,11013.55,11175.02,736000000,11175.02 +1999-07-12,11234.22,11314.64,11087.95,11200.98,685300000,11200.98 +1999-07-09,11142.72,11284.25,11050.59,11193.70,701000000,11193.70 +1999-07-08,11118.66,11290.58,10985.68,11126.89,830600000,11126.89 +1999-07-07,11129.74,11268.42,11008.16,11187.36,791200000,11187.36 +1999-07-06,11119.93,11291.21,11021.78,11135.12,722900000,11135.12 +1999-07-02,11089.53,11205.41,10995.50,11139.24,613570000,11139.24 +1999-07-01,10972.39,11156.65,10841.63,11066.42,843400000,11066.42 +1999-06-30,10805.22,11120.24,10657.36,10970.80,1117000000,10970.80 +1999-06-29,10673.83,10855.56,10589.61,10815.35,820100000,10815.35 +1999-06-28,10633.93,10792.24,10535.15,10655.15,652910000,10655.15 +1999-06-25,10586.44,10719.42,10477.21,10552.56,623460000,10552.56 +1999-06-24,10620.32,10736.83,10404.07,10534.83,690400000,10534.83 +1999-06-23,10702.32,10791.29,10542.75,10666.86,731800000,10666.86 +1999-06-22,10768.49,10879.94,10639.63,10721.63,716500000,10721.63 +1999-06-21,10865.06,10960.36,10684.91,10815.98,686600000,10815.98 +1999-06-18,10885.00,10978.09,10751.39,10855.56,914500000,10855.56 +1999-06-17,10732.71,10936.61,10642.80,10841.63,700300000,10841.63 +1999-06-16,10709.92,10883.74,10608.92,10784.95,806800000,10784.95 +1999-06-15,10612.09,10740.00,10500.01,10594.99,696600000,10594.99 +1999-06-14,10490.83,10691.24,10414.52,10563.33,669400000,10563.33 +1999-06-11,10619.69,10744.11,10386.98,10490.51,698200000,10490.51 +1999-06-10,10621.58,10736.20,10452.52,10621.27,716500000,10621.27 +1999-06-09,10780.84,10871.39,10602.59,10690.29,662000000,10690.29 +1999-06-08,10878.35,10954.66,10671.93,10765.64,685900000,10765.64 +1999-06-07,10805.20,11016.40,10718.47,10909.38,664300000,10909.38 +1999-06-04,10702.64,10892.60,10558.26,10799.84,694500000,10799.84 +1999-06-03,10629.18,10767.86,10515.52,10663.69,719600000,10663.69 +1999-06-02,10591.82,10694.09,10388.24,10577.89,728000000,10577.89 +1999-06-01,10549.08,10717.20,10334.42,10596.26,683800000,10596.26 +1999-05-28,10489.56,10690.07,10389.94,10559.74,649960000,10559.74 +1999-05-27,10643.04,10734.21,10372.96,10466.93,811400000,10466.93 +1999-05-26,10580.94,10818.08,10416.06,10702.16,870800000,10702.16 +1999-05-25,10651.73,10818.96,10494.52,10531.09,826700000,10531.09 +1999-05-24,10829.87,10924.26,10568.85,10654.67,754700000,10654.67 +1999-05-21,10879.13,10974.69,10728.12,10829.28,686600000,10829.28 +1999-05-20,10892.40,11020.70,10773.83,10866.74,752200000,10866.74 +1999-05-19,10836.67,10988.85,10722.81,10887.39,801100000,10887.39 +1999-05-18,10895.94,11017.75,10678.86,10836.95,753400000,10836.95 +1999-05-17,10864.35,10976.32,10677.64,10853.47,665500000,10853.47 +1999-05-14,10950.26,11076.55,10787.03,10913.32,727800000,10913.32 +1999-05-13,11087.71,11244.36,10931.36,11107.19,796900000,11107.19 +1999-05-12,11002.38,11146.71,10759.54,11000.37,825500000,11000.37 +1999-05-11,11059.65,11185.08,10882.11,11026.15,836100000,11026.15 +1999-05-10,11029.25,11173.05,10876.38,11007.25,773300000,11007.25 +1999-05-07,10967.16,11135.54,10838.29,11031.59,814900000,11031.59 +1999-05-06,10909.02,11093.44,10730.33,10946.82,875400000,10946.82 +1999-05-05,10902.72,11055.36,10711.15,10955.41,913500000,10955.41 +1999-05-04,11012.11,11140.12,10787.32,10886.11,933100000,10886.11 +1999-05-03,10788.75,11083.13,10701.12,11014.69,811400000,11014.69 +1999-04-30,10933.94,11072.25,10603.76,10789.04,936500000,10789.04 +1999-04-29,10864.64,11052.49,10710.00,10878.38,1003600000,10878.38 +1999-04-28,10806.22,11050.77,10665.90,10845.45,951700000,10845.45 +1999-04-27,10781.88,10977.46,10647.29,10831.71,891700000,10831.71 +1999-04-26,10721.17,10854.33,10540.47,10718.59,712000000,10718.59 +1999-04-23,10646.71,10858.34,10530.45,10689.67,744900000,10689.67 +1999-04-22,10735.77,10896.42,10517.85,10727.18,927900000,10727.18 +1999-04-21,10462.58,10702.56,10309.09,10581.42,920000000,10581.42 +1999-04-20,10440.53,10610.06,10212.87,10448.55,985400000,10448.55 +1999-04-19,10566.07,10879.76,10284.39,10440.53,1214400000,10440.53 +1999-04-16,10497.26,10632.90,10299.55,10493.89,1002300000,10493.89 +1999-04-15,10411.66,10673.90,10201.31,10462.72,1089800000,10462.72 +1999-04-14,10436.91,10692.49,10196.87,10411.66,952000000,10411.66 +1999-04-13,10340.62,10512.11,10239.33,10395.01,810900000,10395.01 +1999-04-12,10094.19,10384.46,10042.02,10339.51,810800000,10339.51 +1999-04-09,10166.62,10298.71,10035.09,10173.84,716100000,10173.84 +1999-04-08,10083.93,10282.62,9980.69,10197.70,850500000,10197.70 +1999-04-07,10023.43,10166.62,9859.98,10085.31,816400000,10085.31 +1999-04-06,9985.69,10097.25,9862.48,9963.49,787500000,9963.49 +1999-04-05,9893.84,10080.87,9826.40,10007.33,695800000,10007.33 +1999-04-01,9825.29,9927.69,9707.91,9832.51,703000000,9832.51 +1999-03-31,9968.21,10025.10,9744.82,9786.16,924300000,9786.16 +1999-03-30,10003.84,10035.36,9812.53,9913.26,729000000,9913.26 +1999-03-29,9879.41,10089.48,9837.78,10006.78,747900000,10006.78 +1999-03-26,9795.88,9923.53,9700.69,9822.24,707200000,9822.24 +1999-03-25,9735.66,9916.59,9666.28,9836.39,784200000,9836.39 +1999-03-24,9702.08,9803.09,9547.23,9666.84,761900000,9666.84 +1999-03-23,9846.66,9897.72,9593.85,9671.83,811300000,9671.83 +1999-03-22,9901.88,10005.95,9796.99,9890.51,658200000,9890.51 +1999-03-19,10107.79,10158.57,9856.37,9903.55,914700000,9903.55 +1999-03-18,9958.59,10060.62,9776.17,9997.62,831000000,9997.62 +1999-03-17,9939.90,10024.54,9792.55,9879.41,752300000,9879.41 +1999-03-16,9969.32,10062.84,9857.48,9930.47,751900000,9930.47 +1999-03-15,9880.24,10027.59,9807.53,9958.77,727200000,9958.77 +1999-03-12,9927.14,10042.58,9779.78,9876.35,825800000,9876.35 +1999-03-11,9815.86,9992.35,9742.32,9897.44,904800000,9897.44 +1999-03-10,9735.10,9849.71,9624.94,9772.84,841900000,9772.84 +1999-03-09,9703.47,9856.65,9586.08,9693.76,803700000,9693.76 +1999-03-08,9728.72,9825.02,9616.33,9727.61,714600000,9727.61 +1999-03-05,9636.65,9799.92,9558.41,9736.08,834900000,9736.08 +1999-03-04,9339.18,9549.99,9272.08,9467.40,770900000,9467.40 +1999-03-03,9311.74,9397.86,9163.41,9275.88,751700000,9275.88 +1999-03-02,9382.10,9494.57,9216.66,9297.61,753600000,9297.61 +1999-03-01,9315.27,9419.32,9167.76,9324.78,699500000,9324.78 +1999-02-26,9382.64,9459.52,9177.54,9306.58,784600000,9306.58 +1999-02-25,9395.66,9446.32,9200.27,9366.34,740500000,9366.34 +1999-02-24,9547.88,9662.77,9357.81,9399.67,782000000,9399.67 +1999-02-23,9549.21,9659.58,9425.26,9544.42,781100000,9544.42 +1999-02-22,9346.62,9596.13,9289.04,9552.68,718500000,9552.68 +1999-02-19,9284.51,9430.59,9218.13,9339.95,700000000,9339.95 +1999-02-18,9239.72,9368.48,9145.09,9298.63,742400000,9298.63 +1999-02-17,9240.79,9409.53,9124.03,9195.47,735100000,9195.47 +1999-02-16,9333.34,9458.46,9187.10,9297.03,653760000,9297.03 +1999-02-12,9346.47,9437.35,9161.35,9274.89,691500000,9274.89 +1999-02-11,9176.28,9423.19,9088.49,9363.46,815800000,9363.46 +1999-02-10,9135.86,9267.68,9025.41,9177.31,721400000,9177.31 +1999-02-09,9268.46,9361.92,9076.13,9133.03,736000000,9133.03 +1999-02-08,9318.66,9427.83,9148.99,9291.11,705400000,9291.11 +1999-02-05,9317.12,9457.43,9141.27,9304.24,872000000,9304.24 +1999-02-04,9389.72,9511.50,9178.60,9304.50,854400000,9304.50 +1999-02-03,9275.41,9454.09,9176.80,9366.81,876500000,9366.81 +1999-02-02,9318.40,9394.10,9146.16,9274.12,845500000,9274.12 +1999-02-01,9405.43,9513.05,9266.91,9345.70,799400000,9345.70 +1999-01-29,9317.37,9457.18,9172.16,9358.83,917000000,9358.83 +1999-01-28,9220.57,9384.83,9134.57,9281.33,848800000,9281.33 +1999-01-27,9378.65,9461.04,9135.86,9200.23,893800000,9200.23 +1999-01-26,9210.78,9408.77,9118.35,9324.58,896400000,9324.58 +1999-01-25,9117.58,9273.09,8994.26,9203.32,723900000,9203.32 +1999-01-22,9149.51,9289.31,8998.89,9120.67,785900000,9120.67 +1999-01-21,9371.96,9479.83,9150.28,9264.08,871800000,9264.08 +1999-01-20,9395.64,9555.01,9230.35,9335.91,905700000,9335.91 +1999-01-19,9408.52,9499.14,9165.73,9355.22,785500000,9355.22 +1999-01-15,9200.74,9381.74,9124.02,9340.55,798100000,9340.55 +1999-01-14,9315.06,9380.20,9052.44,9120.93,797200000,9120.93 +1999-01-13,9213.62,9485.24,9134.06,9349.56,931500000,9349.56 +1999-01-12,9599.55,9680.40,9394.87,9474.68,800200000,9474.68 +1999-01-11,9613.97,9751.46,9446.36,9619.89,818000000,9619.89 +1999-01-08,9612.17,9759.44,9447.91,9643.32,937800000,9643.32 +1999-01-07,9445.33,9616.29,9369.12,9537.76,863000000,9537.76 +1999-01-06,9399.25,9608.05,9331.02,9544.97,986900000,9544.97 +1999-01-05,9201.00,9389.46,9137.66,9311.19,775000000,9311.19 +1999-01-04,9212.84,9393.84,9089.00,9184.27,877000000,9184.27 +1998-12-31,9271.55,9343.64,9106.77,9181.43,719200000,9181.43 +1998-12-30,9310.17,9390.75,9211.30,9274.64,594220000,9274.64 +1998-12-29,9222.63,9375.30,9152.34,9320.98,586490000,9320.98 +1998-12-28,9251.21,9330.50,9133.54,9226.75,531560000,9226.75 +1998-12-24,9202.29,9289.57,9146.42,9217.99,246980000,9217.99 +1998-12-23,9085.91,9255.84,9022.58,9202.03,697500000,9202.03 +1998-12-22,9000.95,9122.99,8909.29,9044.46,680500000,9044.46 +1998-12-21,8903.89,9150.54,8874.28,8988.85,744800000,8988.85 +1998-12-18,8902.86,9012.28,8789.31,8903.63,839600000,8903.63 +1998-12-17,8787.55,8959.76,8725.21,8875.82,739400000,8875.82 +1998-12-16,8843.38,8922.94,8675.52,8790.60,725500000,8790.60 +1998-12-15,8725.72,8878.40,8614.75,8823.30,777900000,8823.30 +1998-12-14,8767.95,8868.10,8610.63,8695.60,741800000,8695.60 +1998-12-11,8814.29,8916.24,8680.41,8821.76,688900000,8821.76 +1998-12-10,9008.42,9034.42,8795.24,8841.58,748600000,8841.58 +1998-12-09,9025.41,9138.18,8881.23,9009.19,694200000,9009.19 +1998-12-08,9038.03,9153.63,8903.37,9027.98,727700000,9027.98 +1998-12-07,9031.59,9146.93,8946.11,9070.47,671200000,9070.47 +1998-12-04,8964.91,9078.70,8873.76,9016.14,709700000,9016.14 +1998-12-03,9031.33,9112.69,8839.78,8879.68,799100000,8879.68 +1998-12-02,9039.57,9154.40,8922.94,9064.54,727400000,9064.54 +1998-12-01,9039.57,9214.65,8934.52,9133.54,789200000,9133.54 +1998-11-30,9292.40,9348.53,9074.07,9116.55,687900000,9116.55 +1998-11-27,9333.85,9403.62,9263.82,9333.08,256950000,9333.08 +1998-11-25,9292.91,9387.66,9199.20,9314.28,583580000,9314.28 +1998-11-24,9327.93,9457.95,9219.28,9301.15,766200000,9301.15 +1998-11-23,9225.72,9425.77,9137.92,9374.27,774100000,9374.27 +1998-11-20,9129.94,9215.93,9048.32,9159.55,721200000,9159.55 +1998-11-19,9081.02,9147.96,8967.22,9056.05,671000000,9056.05 +1998-11-18,8988.85,9095.70,8897.96,9041.11,652510000,9041.11 +1998-11-17,8991.17,9158.26,8870.42,8986.28,705200000,8986.28 +1998-11-16,8921.14,9093.12,8885.09,9011.25,615580000,9011.25 +1998-11-13,8863.21,8982.16,8782.62,8919.59,602270000,8919.59 +1998-11-12,8823.04,8951.26,8733.70,8829.74,662300000,8829.74 +1998-11-11,8922.42,8980.35,8759.19,8823.82,715700000,8823.82 +1998-11-10,8895.17,9020.00,8760.99,8863.98,671300000,8863.98 +1998-11-09,8980.87,9024.89,8813.00,8897.96,592990000,8897.96 +1998-11-06,8902.86,9042.40,8831.02,8975.46,683100000,8975.46 +1998-11-05,8782.11,8943.79,8676.55,8915.47,770200000,8915.47 +1998-11-04,8801.93,8933.49,8660.33,8783.14,861100000,8783.14 +1998-11-03,8708.99,8819.18,8601.88,8706.15,704300000,8706.15 +1998-11-02,8645.65,8804.51,8573.56,8706.15,753800000,8706.15 +1998-10-30,8591.58,8718.25,8481.39,8592.10,785000000,8592.10 +1998-10-29,8371.22,8539.83,8305.54,8495.03,699400000,8495.03 +1998-10-28,8372.74,8504.04,8271.55,8371.97,677500000,8371.97 +1998-10-27,8503.79,8586.69,8309.92,8366.04,764500000,8366.04 +1998-10-26,8483.96,8564.03,8349.57,8432.21,609910000,8432.21 +1998-10-23,8531.34,8589.01,8366.04,8452.29,637640000,8452.29 +1998-10-22,8519.03,8629.17,8334.12,8533.14,754900000,8533.14 +1998-10-21,8504.67,8641.02,8380.72,8519.23,745100000,8519.23 +1998-10-20,8540.09,8713.62,8419.08,8505.85,958200000,8505.85 +1998-10-19,8415.48,8591.07,8321.50,8466.45,738600000,8466.45 +1998-10-16,8384.84,8521.29,8244.26,8416.76,1042200000,8416.76 +1998-10-15,7953.07,8375.57,7885.62,8299.36,937600000,8299.36 +1998-10-14,7925.01,8107.29,7812.75,7968.78,791200000,7968.78 +1998-10-13,7982.68,8093.90,7805.29,7938.14,733300000,7938.14 +1998-10-12,8038.03,8162.65,7931.19,8001.47,691100000,8001.47 +1998-10-09,7806.57,7976.76,7628.15,7899.52,878100000,7899.52 +1998-10-08,7734.48,7822.02,7399.78,7731.91,1114600000,7731.91 +1998-10-07,7754.82,7913.94,7558.89,7741.69,977000000,7741.69 +1998-10-06,7733.97,7951.53,7646.43,7742.98,845700000,7742.98 +1998-10-05,7760.75,7866.82,7507.14,7726.24,817500000,7726.24 +1998-10-02,7631.50,7866.31,7496.84,7784.69,902900000,7784.69 +1998-10-01,7749.42,7856.26,7540.87,7632.53,899700000,7632.53 +1998-09-30,8025.42,8097.51,7775.42,7842.62,800100000,7842.62 +1998-09-29,8141.28,8253.79,7946.63,8080.52,760100000,8080.52 +1998-09-28,8114.76,8239.37,7986.80,8108.84,690500000,8108.84 +1998-09-25,7911.10,8127.89,7849.06,8028.77,736800000,8028.77 +1998-09-24,8117.33,8227.53,7906.73,8001.99,805900000,8001.99 +1998-09-23,7988.60,8198.43,7891.79,8154.41,899700000,8154.41 +1998-09-22,7987.83,8038.29,7816.87,7897.20,694900000,7897.20 +1998-09-21,7739.12,8008.43,7653.64,7933.25,609880000,7933.25 +1998-09-18,7942.77,8012.03,7759.97,7895.66,794700000,7895.66 +1998-09-17,7905.96,8001.99,7795.50,7873.77,694500000,7873.77 +1998-09-16,8061.46,8159.30,7923.46,8089.78,797500000,8089.78 +1998-09-15,7918.83,8087.21,7840.30,8024.39,724600000,8024.39 +1998-09-14,7936.08,8081.29,7848.03,7945.35,714400000,7945.35 +1998-09-11,7583.61,7866.31,7497.10,7795.50,819100000,7795.50 +1998-09-10,7680.42,7761.00,7469.04,7615.54,880300000,7615.54 +1998-09-09,7995.04,8094.16,7796.79,7865.02,704300000,7865.02 +1998-09-08,7964.91,8103.69,7779.03,8020.78,814800000,8020.78 +1998-09-04,7737.32,7831.29,7450.24,7640.25,780300000,7640.25 +1998-09-03,7679.13,7841.59,7499.68,7682.22,880500000,7682.22 +1998-09-02,7901.06,8036.23,7710.54,7782.37,894600000,7782.37 +1998-09-01,7583.09,7937.37,7379.70,7827.43,1216600000,7827.43 +1998-08-31,8078.97,8149.00,7517.70,7539.07,917500000,7539.07 +1998-08-28,8193.54,8301.68,7951.27,8051.68,840300000,8051.68 +1998-08-27,8377.89,8448.69,8062.24,8165.99,938600000,8165.99 +1998-08-26,8492.97,8639.47,8396.68,8523.35,674100000,8523.35 +1998-08-25,8632.00,8740.91,8510.22,8602.65,664900000,8602.65 +1998-08-24,8584.63,8680.66,8452.29,8566.61,558100000,8566.61 +1998-08-21,8600.34,8600.34,8307.60,8533.65,725700000,8533.65 +1998-08-20,8639.47,8726.75,8538.29,8611.41,621630000,8611.41 +1998-08-19,8745.80,8797.81,8635.61,8693.28,633630000,8693.28 +1998-08-18,8593.90,8767.69,8551.93,8714.65,690600000,8714.65 +1998-08-17,8404.66,8613.98,8350.34,8574.85,584380000,8574.85 +1998-08-14,8531.85,8635.87,8342.10,8425.00,644030000,8425.00 +1998-08-13,8535.46,8656.46,8399.51,8459.50,660700000,8459.50 +1998-08-12,8528.76,8621.71,8437.10,8552.96,711700000,8552.96 +1998-08-11,8431.44,8538.29,8263.32,8462.85,774400000,8462.85 +1998-08-10,8585.40,8689.16,8491.17,8574.85,579180000,8574.85 +1998-08-07,8610.63,8745.03,8490.40,8598.02,759100000,8598.02 +1998-08-06,8513.83,8671.14,8415.22,8577.68,768400000,8577.68 +1998-08-05,8493.75,8641.79,8316.10,8546.78,851600000,8546.78 +1998-08-04,8859.86,8896.68,8463.37,8487.31,852600000,8487.31 +1998-08-03,8868.10,8948.17,8729.58,8786.74,620400000,8786.74 +1998-07-31,9024.64,9109.34,8810.94,8883.29,645910000,8883.29 +1998-07-30,8962.85,9113.20,8884.83,9026.95,687400000,9026.95 +1998-07-29,8976.49,9039.57,8831.28,8914.96,644350000,8914.96 +1998-07-28,8982.16,9065.57,8786.48,8934.78,703600000,8934.78 +1998-07-27,8905.17,9084.63,8806.05,9028.24,619990000,9028.24 +1998-07-24,9002.24,9077.67,8814.29,8937.36,698600000,8937.36 +1998-07-23,9130.46,9196.11,8892.56,8932.98,741600000,8932.98 +1998-07-22,9185.71,9264.85,8996.83,9128.91,739800000,9128.91 +1998-07-21,9296.26,9369.12,9145.65,9190.19,659700000,9190.19 +1998-07-20,9340.55,9408.26,9206.15,9295.75,560580000,9295.75 +1998-07-17,9328.19,9412.64,9259.96,9337.97,618030000,9337.97 +1998-07-16,9233.23,9368.35,9173.19,9328.19,677800000,9328.19 +1998-07-15,9246.57,9388.69,9165.99,9234.47,723900000,9234.47 +1998-07-14,9100.07,9314.54,9087.20,9245.54,700300000,9245.54 +1998-07-13,9107.03,9186.58,9020.52,9096.21,574880000,9096.21 +1998-07-10,9098.53,9194.82,8976.23,9105.74,576080000,9105.74 +1998-07-09,9135.36,9217.07,9014.30,9089.78,663600000,9089.78 +1998-07-08,9107.96,9231.27,9041.70,9174.97,607230000,9174.97 +1998-07-07,9094.76,9209.85,9001.84,9085.04,624890000,9085.04 +1998-07-06,9017.53,9137.11,8965.97,9091.77,514750000,9091.77 +1998-07-02,9037.71,9094.01,8956.25,9025.26,510210000,9025.26 +1998-07-01,9011.56,9103.23,8918.64,9048.67,701600000,9048.67 +1998-06-30,9010.81,9085.79,8868.57,8952.02,757200000,8952.02 +1998-06-29,9002.34,9099.24,8930.84,8997.36,564350000,8997.36 +1998-06-26,8948.28,9047.93,8879.78,8944.54,520050000,8944.54 +1998-06-25,8950.52,9079.56,8863.58,8935.58,669900000,8935.58 +1998-06-24,8828.46,8970.20,8740.52,8923.87,714900000,8923.87 +1998-06-23,8789.35,8877.78,8724.83,8828.46,657100000,8828.46 +1998-06-22,8705.65,8805.04,8639.38,8711.13,531550000,8711.13 +1998-06-19,8844.90,8885.01,8664.79,8712.87,715500000,8712.87 +1998-06-18,8825.72,8900.20,8740.77,8813.01,590440000,8813.01 +1998-06-17,8745.51,8932.34,8695.43,8829.46,744400000,8829.46 +1998-06-16,8666.04,8751.24,8524.55,8665.29,664600000,8665.29 +1998-06-15,8723.34,8818.99,8588.32,8627.93,595820000,8627.93 +1998-06-12,8812.77,8891.24,8660.56,8834.94,633300000,8834.94 +1998-06-11,8975.43,9015.54,8774.40,8811.77,627470000,8811.77 +1998-06-10,9031.98,9145.08,8891.98,8971.70,609410000,8971.70 +1998-06-09,9074.58,9130.13,8966.72,9049.92,563610000,9049.92 +1998-06-08,9052.66,9155.04,8994.12,9069.60,543390000,9069.60 +1998-06-05,8920.88,9057.39,8866.57,9037.71,558440000,9037.71 +1998-06-04,8798.07,8916.64,8719.85,8870.56,577470000,8870.56 +1998-06-03,8909.42,8970.20,8769.67,8803.80,584480000,8803.80 +1998-06-02,8961.48,9014.05,8838.92,8891.24,590930000,8891.24 +1998-06-01,8907.93,9023.01,8805.04,8922.37,537660000,8922.37 +1998-05-29,9004.83,9060.13,8859.60,8899.95,556780000,8899.95 +1998-05-28,8947.53,9040.70,8861.59,8970.20,588900000,8970.20 +1998-05-27,8902.45,9015.04,8760.95,8936.57,682040000,8936.57 +1998-05-26,9167.00,9201.63,8949.78,8963.73,541410000,8963.73 +1998-05-22,9153.05,9209.35,9040.70,9114.44,444070000,9114.44 +1998-05-21,9173.48,9248.96,9058.64,9132.37,551970000,9132.37 +1998-05-20,9101.98,9219.06,9010.56,9171.48,587240000,9171.48 +1998-05-19,9097.00,9164.51,8997.36,9054.65,566020000,9054.65 +1998-05-18,9088.53,9171.23,8972.20,9050.91,519100000,9050.91 +1998-05-15,9161.52,9240.74,9051.91,9096.00,621990000,9096.00 +1998-05-14,9136.86,9266.89,9077.07,9172.23,578380000,9172.23 +1998-05-13,9178.06,9283.09,9119.67,9211.84,600010000,9211.84 +1998-05-12,9098.00,9214.08,9023.51,9161.77,604420000,9161.77 +1998-05-11,9125.65,9231.52,9045.43,9091.52,560840000,9091.52 +1998-05-08,8981.91,9143.09,8951.27,9055.15,567890000,9055.15 +1998-05-07,9044.44,9102.98,8914.90,8976.68,582240000,8976.68 +1998-05-06,9174.72,9223.80,9017.28,9054.65,606540000,9054.65 +1998-05-05,9189.92,9251.95,9062.37,9147.57,583630000,9147.57 +1998-05-04,9201.38,9311.98,9134.86,9192.66,551700000,9192.66 +1998-05-01,9106.47,9211.84,9015.54,9147.07,581970000,9147.07 +1998-04-30,9018.28,9169.99,8970.95,9063.37,695600000,9063.37 +1998-04-29,8899.21,9036.47,8857.85,8951.52,638790000,8951.52 +1998-04-28,8920.88,9051.16,8828.71,8898.96,678600000,8898.96 +1998-04-27,8937.07,9026.25,8796.08,8917.64,685960000,8917.64 +1998-04-24,9143.83,9206.36,8983.65,9064.62,633890000,9064.62 +1998-04-23,9176.96,9269.88,9061.88,9143.33,653190000,9143.33 +1998-04-22,9184.93,9287.32,9083.80,9176.72,696740000,9176.72 +1998-04-21,9137.85,9250.20,9051.41,9184.94,675640000,9184.94 +1998-04-20,9166.75,9245.22,9027.25,9141.84,595190000,9141.84 +1998-04-17,9077.57,9213.58,9010.06,9167.50,672290000,9167.50 +1998-04-16,9162.27,9204.12,8978.92,9076.57,699570000,9076.57 +1998-04-15,9110.45,9249.95,9017.53,9162.27,685020000,9162.27 +1998-04-14,9014.30,9177.96,8971.45,9110.20,613730000,9110.20 +1998-04-13,8997.11,9107.21,8870.31,9012.30,564480000,9012.30 +1998-04-09,8891.48,9062.12,8891.48,8994.86,548940000,8994.86 +1998-04-08,8951.52,9023.51,8821.73,8891.48,616330000,8891.48 +1998-04-07,8995.36,9072.34,8862.34,8956.50,670760000,8956.50 +1998-04-06,9051.16,9170.74,8958.49,9033.23,625810000,9033.23 +1998-04-03,8986.64,9085.79,8896.22,8983.41,653880000,8983.41 +1998-04-02,8900.20,9025.26,8829.21,8986.64,674340000,8986.64 +1998-04-01,8818.50,8935.33,8715.61,8868.32,677310000,8868.32 +1998-03-31,8852.12,8937.57,8726.32,8799.81,674930000,8799.81 +1998-03-30,8802.30,8877.04,8701.66,8782.12,497400000,8782.12 +1998-03-27,8835.68,8941.31,8741.77,8796.08,582190000,8796.08 +1998-03-26,8847.89,8931.09,8769.92,8846.89,606770000,8846.89 +1998-03-25,8943.05,8997.11,8780.88,8872.80,676550000,8872.80 +1998-03-24,8887.00,8962.48,8815.01,8904.44,605720000,8904.44 +1998-03-23,8839.42,8939.31,8758.71,8816.25,631350000,8816.25 +1998-03-20,8814.01,8957.25,8766.43,8906.43,717310000,8906.43 +1998-03-19,8776.89,8855.11,8708.64,8803.05,598240000,8803.05 +1998-03-18,8749.24,8825.72,8655.83,8775.40,632690000,8775.40 +1998-03-17,8706.64,8812.52,8633.41,8749.99,680960000,8749.99 +1998-03-16,8647.36,8760.45,8573.37,8718.85,548980000,8718.85 +1998-03-13,8669.28,8733.30,8563.90,8602.52,597800000,8602.52 +1998-03-12,8622.20,8725.58,8576.86,8659.56,594940000,8659.56 +1998-03-11,8682.73,8740.52,8599.28,8675.75,655260000,8675.75 +1998-03-10,8623.19,8688.71,8550.45,8643.12,631920000,8643.12 +1998-03-09,8601.02,8661.56,8482.45,8567.14,624700000,8567.14 +1998-03-06,8505.86,8610.49,8432.62,8569.39,665500000,8569.39 +1998-03-05,8480.20,8536.80,8377.32,8444.33,648270000,8444.33 +1998-03-04,8524.55,8609.99,8454.79,8539.24,644280000,8539.24 +1998-03-03,8532.77,8632.16,8464.26,8584.83,612360000,8584.83 +1998-03-02,8528.78,8649.35,8427.89,8550.45,591470000,8550.45 +1998-02-27,8532.77,8616.72,8426.15,8545.72,574480000,8545.72 +1998-02-26,8471.48,8541.98,8377.82,8490.67,646280000,8490.67 +1998-02-25,8455.29,8510.60,8362.37,8457.78,611350000,8457.78 +1998-02-24,8370.10,8457.78,8303.83,8370.10,589880000,8370.10 +1998-02-23,8381.31,8490.92,8331.98,8410.20,550730000,8410.20 +1998-02-20,8350.67,8449.06,8291.88,8413.94,594300000,8413.94 +1998-02-19,8379.56,8463.26,8327.25,8375.58,581820000,8375.58 +1998-02-18,8419.17,8503.12,8326.75,8451.06,606000000,8451.06 +1998-02-17,8439.35,8483.94,8335.97,8398.50,605890000,8398.50 +1998-02-13,8346.68,8416.43,8269.21,8370.10,531940000,8370.10 +1998-02-12,8260.49,8412.20,8206.93,8369.60,611480000,8369.60 +1998-02-11,8298.60,8367.61,8223.87,8314.55,599300000,8314.55 +1998-02-10,8241.81,8368.10,8149.88,8295.61,642800000,8295.61 +1998-02-09,8185.26,8256.75,8104.55,8180.52,524810000,8180.52 +1998-02-06,8178.28,8255.26,8102.30,8189.49,569650000,8189.49 +1998-02-05,8129.71,8215.65,8037.54,8117.25,703980000,8117.25 +1998-02-04,8160.35,8188.00,8050.99,8129.71,695420000,8129.71 +1998-02-03,8107.78,8193.23,8010.63,8160.35,692120000,8160.35 +1998-02-02,7987.46,8157.86,7987.46,8107.78,724320000,8107.78 +1998-01-30,7973.02,8023.83,7850.95,7906.50,613380000,7906.50 +1998-01-29,7915.47,8015.12,7883.09,7973.02,750760000,7973.02 +1998-01-28,7815.08,7985.97,7761.52,7915.47,708470000,7915.47 +1998-01-27,7712.94,7890.56,7677.07,7815.08,679140000,7815.08 +1998-01-26,7700.74,7813.59,7629.99,7712.94,555080000,7712.94 +1998-01-23,7730.88,7814.08,7609.31,7700.74,635770000,7700.74 +1998-01-22,7794.40,7833.26,7637.71,7730.88,646570000,7730.88 +1998-01-21,7873.12,7874.87,7707.96,7794.40,626160000,7794.40 +1998-01-20,7753.55,7908.00,7696.01,7873.12,644790000,7873.12 +1998-01-16,7691.77,7846.47,7687.04,7753.55,670080000,7753.55 +1998-01-15,7784.69,7803.87,7651.66,7691.77,569050000,7691.77 +1998-01-14,7732.13,7836.25,7669.10,7784.69,603280000,7784.69 +1998-01-13,7647.18,7791.17,7610.31,7732.13,646740000,7732.13 +1998-01-12,7580.42,7706.22,7391.59,7647.18,705450000,7647.18 +1998-01-09,7802.62,7815.08,7513.41,7580.42,746420000,7580.42 +1998-01-08,7902.27,7935.40,7733.12,7802.62,652140000,7802.62 +1998-01-07,7906.25,7943.87,7751.56,7902.27,667390000,7902.27 +1998-01-06,7978.99,7999.17,7832.52,7906.25,618360000,7906.25 +1998-01-05,7965.04,8072.91,7865.40,7978.99,628070000,7978.99 +1998-01-02,7908.25,8001.41,7845.47,7965.04,366730000,7965.04 +1997-12-31,7915.97,7995.93,7833.76,7908.25,467280000,7908.25 +1997-12-30,7792.41,7958.32,7787.68,7915.97,499500000,7915.97 +1997-12-29,7712.94,7835.01,7712.94,7792.41,443160000,7792.41 +1997-12-26,7660.13,7743.34,7634.72,7679.31,154900000,7679.31 +1997-12-24,7691.77,7767.75,7624.26,7660.13,265980000,7660.13 +1997-12-23,7819.31,7874.12,7667.11,7691.77,515070000,7691.77 +1997-12-22,7756.29,7892.05,7710.45,7819.31,530670000,7819.31 +1997-12-19,7846.50,7878.60,7563.23,7756.29,793200000,7756.29 +1997-12-18,7957.41,7991.48,7781.35,7846.50,618870000,7846.50 +1997-12-17,7976.31,8068.81,7879.08,7957.41,618900000,7957.41 +1997-12-16,7922.59,8069.06,7889.52,7976.31,623320000,7976.31 +1997-12-15,7838.30,7992.72,7807.96,7922.59,597150000,7922.59 +1997-12-12,7848.99,7947.21,7756.73,7838.30,579280000,7838.30 +1997-12-11,7961.64,7961.64,7778.37,7848.99,631770000,7848.99 +1997-12-10,8049.66,8077.27,7881.07,7978.79,602290000,7978.79 +1997-12-09,8110.84,8142.67,7990.98,8049.66,539130000,8049.66 +1997-12-08,8149.13,8195.88,8057.37,8110.84,490320000,8110.84 +1997-12-05,8050.16,8209.56,7980.04,8149.13,563590000,8149.13 +1997-12-04,8032.01,8159.58,7978.30,8050.16,633470000,8050.16 +1997-12-03,8018.83,8118.30,7915.63,8032.01,624610000,8032.01 +1997-12-02,8013.11,8096.66,7935.03,8018.83,576120000,8018.83 +1997-12-01,7823.62,8048.92,7823.62,8013.11,590300000,8013.11 +1997-11-28,7794.78,7872.86,7786.08,7823.13,189070000,7823.13 +1997-11-26,7808.95,7893.50,7749.77,7794.78,487750000,7794.78 +1997-11-25,7767.92,7880.32,7706.00,7808.95,587890000,7808.95 +1997-11-24,7881.07,7887.28,7723.41,7767.92,514920000,7767.92 +1997-11-21,7826.61,7934.53,7758.47,7881.07,611000000,7881.07 +1997-11-20,7724.74,7889.77,7718.19,7826.61,602610000,7826.61 +1997-11-19,7650.82,7779.75,7599.50,7724.74,542720000,7724.74 +1997-11-18,7698.22,7772.62,7607.11,7650.82,521380000,7650.82 +1997-11-17,7613.49,7781.71,7613.49,7698.22,576540000,7698.22 +1997-11-14,7487.76,7634.61,7431.03,7572.48,635760000,7572.48 +1997-11-13,7401.32,7546.45,7334.77,7487.76,653960000,7487.76 +1997-11-12,7558.73,7573.22,7359.32,7401.32,585340000,7401.32 +1997-11-11,7552.59,7599.74,7518.21,7558.73,435660000,7558.73 +1997-11-10,7581.32,7687.90,7511.83,7552.59,464140000,7552.59 +1997-11-07,7646.89,7646.89,7460.99,7581.32,569980000,7581.32 +1997-11-06,7692.57,7758.63,7597.78,7683.24,522890000,7683.24 +1997-11-05,7689.13,7791.78,7628.96,7692.57,565680000,7692.57 +1997-11-04,7674.39,7757.15,7583.29,7689.13,541590000,7689.13 +1997-11-03,7443.07,7674.39,7443.07,7674.39,564740000,7674.39 +1997-10-31,7381.67,7544.24,7329.61,7442.08,638070000,7442.08 +1997-10-30,7506.67,7569.78,7340.42,7381.67,712230000,7381.67 +1997-10-29,7498.32,7664.08,7409.67,7506.67,777660000,7506.67 +1997-10-28,7161.15,7553.57,6936.45,7498.32,1202550000,7498.32 +1997-10-27,7715.41,7717.37,7150.10,7161.15,693730000,7161.15 +1997-10-24,7847.77,7975.47,7645.91,7715.41,677630000,7715.41 +1997-10-23,7957.05,7957.05,7767.22,7847.77,673270000,7847.77 +1997-10-22,8060.44,8124.78,7941.33,8034.65,613490000,8034.65 +1997-10-21,7921.44,8090.40,7909.41,8060.44,582310000,8060.44 +1997-10-20,7847.03,7966.63,7774.83,7921.44,483880000,7921.44 +1997-10-17,7938.88,7953.61,7731.12,7847.03,624980000,7847.03 +1997-10-16,8057.98,8146.14,7880.18,7938.88,597010000,7938.88 +1997-10-15,8096.29,8127.48,7997.57,8057.98,505310000,8057.98 +1997-10-14,8072.22,8168.24,7990.20,8096.29,510330000,8096.29 +1997-10-13,8045.21,8150.31,8026.30,8072.22,354800000,8072.22 +1997-10-10,8061.42,8091.38,7961.96,8045.21,500680000,8045.21 +1997-10-09,8095.06,8127.72,7980.87,8061.42,551840000,8061.42 +1997-10-08,8178.31,8208.52,8019.92,8095.06,573110000,8095.06 +1997-10-07,8100.22,8218.34,8058.96,8178.31,551970000,8178.31 +1997-10-06,8038.58,8160.63,8017.71,8100.22,495620000,8100.22 +1997-10-03,8027.53,8183.22,7937.89,8038.58,623370000,8038.58 +1997-10-02,8015.50,8087.45,7943.79,8027.53,474760000,8027.53 +1997-10-01,7945.26,8081.06,7909.41,8015.50,598660000,8015.50 +1997-09-30,7991.43,8045.70,7900.08,7945.26,587500000,7945.26 +1997-09-29,7922.18,8030.48,7862.99,7991.43,477100000,7991.43 +1997-09-26,7853.66,7970.80,7853.66,7922.18,505340000,7922.18 +1997-09-25,7906.71,7962.45,7802.34,7848.01,524880000,7848.01 +1997-09-24,7970.06,8065.84,7866.43,7906.71,639460000,7906.71 +1997-09-23,7996.83,8048.16,7885.34,7970.06,522930000,7970.06 +1997-09-22,7917.27,8078.36,7889.27,7996.83,490900000,7996.83 +1997-09-19,7922.72,7972.29,7821.69,7917.27,631040000,7917.27 +1997-09-18,7886.44,8049.36,7858.93,7922.72,566830000,7922.72 +1997-09-17,7895.92,7981.54,7816.47,7886.44,590550000,7886.44 +1997-09-16,7721.14,7951.18,7709.75,7895.92,636380000,7895.92 +1997-09-15,7742.97,7832.86,7680.95,7721.14,468030000,7721.14 +1997-09-12,7660.98,7779.67,7584.56,7742.97,544150000,7742.97 +1997-09-11,7719.28,7745.29,7556.23,7660.98,575020000,7660.98 +1997-09-10,7851.91,7868.16,7686.30,7719.28,517620000,7719.28 +1997-09-09,7835.18,7922.05,7768.52,7851.91,502200000,7851.91 +1997-09-08,7822.41,7921.35,7795.00,7835.18,466430000,7835.18 +1997-09-05,7867.24,7952.01,7765.27,7822.41,536400000,7822.41 +1997-09-04,7894.64,7936.45,7788.50,7867.24,559310000,7867.24 +1997-09-03,7879.78,7972.22,7828.45,7894.64,549060000,7894.64 +1997-09-02,7650.99,7903.47,7650.99,7879.78,491870000,7879.78 +1997-08-29,7694.43,7729.73,7580.85,7622.42,413910000,7622.42 +1997-08-28,7787.33,7831.70,7634.50,7694.43,486300000,7694.43 +1997-08-27,7782.22,7850.51,7666.55,7787.33,492150000,7787.33 +1997-08-26,7859.57,7891.62,7734.61,7782.22,449110000,7782.22 +1997-08-25,7887.91,7974.08,7791.75,7859.57,388990000,7859.57 +1997-08-22,7893.95,7904.86,7695.36,7887.91,460160000,7887.91 +1997-08-21,8021.23,8043.06,7834.02,7893.95,499000000,7893.95 +1997-08-20,7918.10,8037.95,7870.95,8021.23,521270000,8021.23 +1997-08-19,7803.36,7947.37,7776.65,7918.10,545630000,7918.10 +1997-08-18,7694.66,7847.49,7588.28,7803.36,514330000,7803.36 +1997-08-15,7919.26,7919.26,7685.14,7694.66,537820000,7694.66 +1997-08-14,7928.32,8027.73,7843.54,7942.03,530460000,7942.03 +1997-08-13,7960.84,8075.58,7848.19,7928.32,587210000,7928.32 +1997-08-12,8062.11,8132.49,7926.46,7960.84,499310000,7960.84 +1997-08-11,8031.22,8122.27,7922.52,8062.11,480340000,8062.11 +1997-08-08,8170.58,8170.58,7961.07,8031.22,563420000,8031.22 +1997-08-07,8259.31,8340.14,8158.73,8188.00,576030000,8188.00 +1997-08-06,8187.54,8302.05,8130.63,8259.31,565200000,8259.31 +1997-08-05,8198.45,8251.88,8129.93,8187.54,525710000,8187.54 +1997-08-04,8194.04,8261.40,8097.65,8198.45,456000000,8198.45 +1997-08-01,8222.61,8287.65,8062.11,8194.04,513750000,8194.04 +1997-07-31,8254.89,8328.99,8160.36,8222.61,547830000,8222.61 +1997-07-30,8174.53,8313.19,8156.88,8254.89,568470000,8254.89 +1997-07-29,8121.11,8232.36,8049.34,8174.53,544540000,8174.53 +1997-07-28,8113.44,8221.68,8051.89,8121.11,466920000,8121.11 +1997-07-25,8116.93,8200.31,8037.95,8113.44,521510000,8113.44 +1997-07-24,8088.36,8174.53,7968.51,8116.93,571020000,8116.93 +1997-07-23,8061.65,8199.15,8024.95,8088.36,616930000,8088.36 +1997-07-22,7906.72,8093.93,7870.72,8061.65,579590000,8061.65 +1997-07-21,7890.46,7981.51,7783.85,7906.72,459500000,7906.72 +1997-07-18,8020.77,8057.23,7829.61,7890.46,589710000,7890.46 +1997-07-17,8038.88,8136.67,7910.67,8020.77,629250000,8020.77 +1997-07-16,7975.71,8108.10,7919.73,8038.88,647390000,8038.88 +1997-07-15,7922.98,8037.03,7843.78,7975.71,598370000,7975.71 +1997-07-14,7921.82,8001.26,7831.00,7922.98,485960000,7922.98 +1997-07-11,7886.76,7984.02,7837.68,7921.82,500050000,7921.82 +1997-07-10,7842.43,7953.94,7777.06,7886.76,551340000,7886.76 +1997-07-09,7962.31,8027.68,7775.48,7842.43,589110000,7842.43 +1997-07-08,7858.49,8000.08,7824.33,7962.31,526010000,7962.31 +1997-07-07,7895.81,7983.79,7805.34,7858.49,518780000,7858.49 +1997-07-03,7805.79,7952.35,7805.79,7895.81,374680000,7895.81 +1997-07-02,7722.33,7814.38,7648.14,7795.38,526970000,7795.38 +1997-07-01,7672.79,7801.04,7613.53,7722.33,544190000,7722.33 +1997-06-30,7687.72,7768.01,7571.46,7672.79,561540000,7672.79 +1997-06-27,7654.25,7793.12,7627.33,7687.72,472540000,7687.72 +1997-06-26,7689.98,7754.22,7581.64,7654.25,499780000,7654.25 +1997-06-25,7758.06,7832.48,7615.57,7689.98,603040000,7689.98 +1997-06-24,7787.01,7787.01,7602.90,7758.06,542650000,7758.06 +1997-06-23,7796.51,7816.87,7592.04,7604.26,492940000,7604.26 +1997-06-20,7777.06,7868.44,7733.64,7796.51,653110000,7796.51 +1997-06-19,7718.71,7834.51,7697.45,7777.06,536940000,7777.06 +1997-06-18,7760.78,7789.28,7651.30,7718.71,491740000,7718.71 +1997-06-17,7772.09,7834.97,7680.71,7760.78,543010000,7760.78 +1997-06-16,7782.04,7829.99,7712.37,7772.09,414280000,7772.09 +1997-06-13,7711.47,7829.08,7683.42,7782.04,575810000,7782.04 +1997-06-12,7575.83,7741.42,7569.66,7711.47,592730000,7711.47 +1997-06-11,7539.27,7633.96,7476.29,7575.83,513740000,7575.83 +1997-06-10,7478.50,7599.61,7459.12,7539.27,526980000,7539.27 +1997-06-09,7435.78,7548.52,7412.44,7478.50,465810000,7478.50 +1997-06-06,7305.29,7473.98,7290.26,7435.78,488940000,7435.78 +1997-06-05,7269.66,7376.97,7241.33,7305.29,452610000,7305.29 +1997-06-04,7312.15,7350.36,7214.29,7269.66,466690000,7269.66 +1997-06-03,7289.40,7379.98,7225.02,7312.15,527120000,7312.15 +1997-06-02,7331.04,7383.84,7244.76,7289.40,435950000,7289.40 +1997-05-30,7330.18,7385.99,7203.99,7331.04,537200000,7331.04 +1997-05-29,7357.23,7404.44,7272.24,7330.18,462600000,7330.18 +1997-05-28,7383.41,7430.20,7287.26,7357.23,487340000,7357.23 +1997-05-27,7345.91,7421.32,7276.68,7383.41,436150000,7383.41 +1997-05-23,7260.61,7382.58,7260.61,7345.91,417030000,7345.91 +1997-05-22,7290.69,7348.79,7210.33,7258.13,426940000,7258.13 +1997-05-21,7303.46,7385.47,7218.99,7290.69,540730000,7290.69 +1997-05-20,7228.88,7336.02,7123.38,7303.46,450850000,7303.46 +1997-05-19,7194.67,7274.21,7140.69,7228.88,345140000,7228.88 +1997-05-16,7332.31,7332.31,7192.61,7194.67,486780000,7194.67 +1997-05-15,7286.16,7363.63,7225.99,7333.55,458180000,7333.55 +1997-05-14,7274.21,7381.76,7238.35,7286.16,504960000,7286.16 +1997-05-13,7292.75,7350.85,7211.16,7274.21,489760000,7274.21 +1997-05-12,7169.53,7317.47,7156.35,7292.75,459370000,7292.75 +1997-05-09,7136.62,7235.76,7079.63,7169.53,455690000,7169.53 +1997-05-08,7085.65,7236.96,7040.30,7136.62,534120000,7136.62 +1997-05-07,7225.32,7246.60,7064.78,7085.65,500580000,7085.65 +1997-05-06,7213.68,7299.98,7139.43,7225.32,603680000,7225.32 +1997-05-05,7071.20,7220.91,7029.46,7213.68,549410000,7213.68 +1997-05-02,6976.48,7104.51,6935.54,7071.20,499770000,7071.20 +1997-05-01,7008.99,7041.90,6891.39,6976.48,460380000,6976.48 +1997-04-30,6962.03,7081.23,6912.26,7008.99,562830000,7008.99 +1997-04-29,6820.75,6998.15,6820.75,6962.03,547690000,6962.03 +1997-04-28,6738.87,6826.37,6691.51,6783.02,404470000,6783.02 +1997-04-25,6792.25,6826.77,6681.08,6738.87,414350000,6738.87 +1997-04-24,6812.72,6923.90,6742.89,6792.25,493640000,6792.25 +1997-04-23,6833.59,6902.23,6746.50,6812.72,489350000,6812.72 +1997-04-22,6660.21,6858.08,6628.50,6833.59,507500000,6833.59 +1997-04-21,6703.55,6768.17,6594.38,6660.21,397300000,6660.21 +1997-04-18,6658.60,6749.71,6616.46,6703.55,468940000,6703.55 +1997-04-17,6679.87,6750.91,6600.80,6658.60,503760000,6658.60 +1997-04-16,6587.16,6708.77,6506.08,6679.87,498820000,6679.87 +1997-04-15,6457.92,6626.09,6457.92,6587.16,507370000,6587.16 +1997-04-14,6391.69,6487.22,6315.84,6451.90,406800000,6451.90 +1997-04-11,6529.48,6529.48,6358.42,6391.69,444380000,6391.69 +1997-04-10,6563.84,6626.91,6495.48,6540.05,421790000,6540.05 +1997-04-09,6609.16,6662.41,6521.16,6563.84,451500000,6563.84 +1997-04-08,6555.91,6638.62,6491.71,6609.16,450790000,6609.16 +1997-04-07,6526.07,6639.00,6508.70,6555.91,453790000,6555.91 +1997-04-04,6477.35,6561.57,6376.90,6526.07,544580000,6526.07 +1997-04-03,6517.01,6540.43,6379.16,6477.35,498010000,6477.35 +1997-04-02,6611.05,6636.73,6476.60,6517.01,478210000,6517.01 +1997-04-01,6583.48,6667.70,6482.64,6611.05,515770000,6611.05 +1997-03-31,6740.59,6743.23,6532.49,6583.48,555880000,6583.48 +1997-03-27,6880.70,6918.47,6654.86,6740.59,476790000,6740.59 +1997-03-26,6876.17,6954.72,6811.21,6880.70,506670000,6880.70 +1997-03-25,6905.25,6984.94,6832.74,6876.17,487520000,6876.17 +1997-03-24,6804.79,6933.58,6746.63,6905.25,451970000,6905.25 +1997-03-21,6820.28,6890.52,6742.85,6804.79,544830000,6804.79 +1997-03-20,6877.68,6901.47,6765.14,6820.28,497480000,6820.28 +1997-03-19,6896.56,6944.15,6794.22,6877.68,539200000,6877.68 +1997-03-18,6955.48,6997.40,6841.05,6896.56,467490000,6896.56 +1997-03-17,6935.46,7004.20,6820.28,6955.48,495260000,6955.48 +1997-03-14,6878.89,6996.27,6851.19,6935.46,491540000,6935.46 +1997-03-13,7023.59,7023.59,6852.72,6878.89,507560000,6878.89 +1997-03-12,7085.16,7111.72,6988.96,7039.37,490200000,7039.37 +1997-03-11,7079.39,7158.28,7026.28,7085.16,493250000,7085.16 +1997-03-10,7000.89,7103.25,6970.10,7079.39,468780000,7079.39 +1997-03-07,6944.70,7047.07,6927.00,7000.89,508270000,7000.89 +1997-03-06,6945.85,7017.05,6896.60,6944.70,540310000,6944.70 +1997-03-05,6852.72,6966.64,6836.95,6945.85,532500000,6945.85 +1997-03-04,6918.92,6983.95,6814.63,6852.72,537890000,6852.72 +1997-03-03,6877.74,6957.01,6798.46,6918.92,437220000,6918.92 +1997-02-28,6925.07,6978.18,6820.78,6877.74,508280000,6877.74 +1997-02-27,6983.18,7028.59,6885.44,6925.07,467190000,6925.07 +1997-02-26,7037.83,7076.31,6878.12,6983.18,573920000,6983.18 +1997-02-25,7008.20,7099.79,6935.08,7037.83,527450000,7037.83 +1997-02-24,6931.62,7049.76,6868.50,7008.20,462450000,7008.20 +1997-02-21,6927.38,6984.72,6869.27,6931.62,478450000,6931.62 +1997-02-20,7020.13,7035.91,6890.82,6927.38,492220000,6927.38 +1997-02-19,7067.46,7112.87,6980.87,7020.13,519350000,7020.13 +1997-02-18,6988.96,7084.39,6946.62,7067.46,474110000,7067.46 +1997-02-14,7022.44,7074.77,6935.85,6988.96,491540000,6988.96 +1997-02-13,6961.63,7074.39,6924.30,7022.44,593710000,7022.44 +1997-02-12,6858.11,6976.64,6844.26,6961.63,563890000,6961.63 +1997-02-11,6806.54,6887.36,6756.90,6858.11,483090000,6858.11 +1997-02-10,6855.80,6908.14,6771.14,6806.54,471590000,6806.54 +1997-02-07,6773.06,6906.22,6747.28,6855.80,540910000,6855.80 +1997-02-06,6746.90,6821.17,6683.40,6773.06,519660000,6773.06 +1997-02-05,6833.48,6913.14,6704.56,6746.90,580520000,6746.90 +1997-02-04,6806.16,6859.65,6738.43,6833.48,506530000,6833.48 +1997-02-03,6813.09,6858.11,6733.04,6806.16,463600000,6806.16 +1997-01-31,6823.86,6912.37,6769.99,6813.09,578550000,6813.09 +1997-01-30,6740.74,6845.03,6719.96,6823.86,524160000,6823.86 +1997-01-29,6656.08,6766.91,6627.98,6740.74,498390000,6740.74 +1997-01-28,6660.69,6823.48,6612.20,6656.08,541580000,6656.08 +1997-01-27,6696.48,6748.82,6598.73,6660.69,445760000,6660.69 +1997-01-24,6755.75,6798.08,6629.91,6696.48,542920000,6696.48 +1997-01-23,6850.03,6953.55,6724.19,6755.75,685070000,6755.75 +1997-01-22,6883.90,6913.14,6801.16,6850.03,587300000,6850.03 +1997-01-21,6843.87,6934.69,6771.14,6883.90,571280000,6883.90 +1997-01-20,6833.10,6893.13,6777.30,6843.87,440470000,6843.87 +1997-01-17,6765.37,6863.88,6732.66,6833.10,534640000,6833.10 +1997-01-16,6726.88,6818.47,6688.40,6765.37,537290000,6765.37 +1997-01-15,6762.29,6800.77,6669.93,6726.88,524990000,6726.88 +1997-01-14,6709.18,6816.17,6689.94,6762.29,531600000,6762.29 +1997-01-13,6703.79,6773.45,6647.99,6709.18,445400000,6709.18 +1997-01-10,6625.67,6725.35,6530.62,6703.79,545860000,6703.79 +1997-01-09,6549.48,6677.24,6520.23,6625.67,555370000,6625.67 +1997-01-08,6600.66,6650.30,6509.84,6549.48,557510000,6549.48 +1997-01-07,6567.18,6621.82,6481.75,6600.66,538220000,6600.66 +1997-01-06,6544.09,6647.22,6508.30,6567.18,531350000,6567.18 +1997-01-03,6442.49,6586.42,6437.10,6544.09,452970000,6544.09 +1997-01-02,6448.27,6511.38,6318.96,6442.49,463230000,6442.49 +1996-12-31,6549.37,6580.90,6421.74,6448.27,399760000,6448.27 +1996-12-30,6560.91,6623.96,6518.23,6549.37,339060000,6549.37 +1996-12-27,6546.68,6607.81,6510.93,6560.91,253810000,6560.91 +1996-12-26,6522.85,6594.74,6495.94,6546.68,254630000,6546.68 +1996-12-24,6489.02,6546.68,6467.10,6522.85,165140000,6522.85 +1996-12-23,6484.40,6539.76,6428.27,6489.02,343280000,6489.02 +1996-12-20,6473.64,6597.43,6445.19,6484.40,654340000,6484.40 +1996-12-19,6352.15,6499.40,6352.15,6473.64,526410000,6473.64 +1996-12-18,6308.33,6399.06,6272.96,6346.77,500490000,6346.77 +1996-12-17,6268.35,6354.46,6206.83,6308.33,519840000,6308.33 +1996-12-16,6304.87,6388.68,6227.98,6268.35,447560000,6268.35 +1996-12-13,6303.71,6377.14,6227.59,6304.87,458540000,6304.87 +1996-12-12,6402.52,6465.57,6283.72,6303.71,492920000,6303.71 +1996-12-11,6457.88,6457.88,6317.94,6402.52,494210000,6402.52 +1996-12-10,6463.94,6545.56,6427.04,6473.25,446120000,6473.25 +1996-12-09,6381.94,6496.73,6375.98,6463.94,381570000,6463.94 +1996-12-06,6437.10,6441.20,6274.24,6381.94,500860000,6381.94 +1996-12-05,6422.94,6491.14,6363.31,6437.10,483710000,6437.10 +1996-12-04,6442.69,6482.20,6339.46,6422.94,498240000,6422.94 +1996-12-03,6521.70,6577.23,6422.94,6442.69,516160000,6442.69 +1996-12-02,6521.70,6553.01,6439.34,6521.70,412520000,6521.70 +1996-11-29,6499.34,6551.15,6490.40,6521.70,151550000,6521.70 +1996-11-27,6528.41,6566.43,6457.97,6499.34,377780000,6499.34 +1996-11-26,6547.79,6606.30,6475.49,6528.41,527380000,6528.41 +1996-11-25,6471.76,6565.68,6443.44,6547.79,475260000,6547.79 +1996-11-22,6418.47,6498.22,6402.44,6471.76,525210000,6471.76 +1996-11-21,6430.02,6463.56,6370.02,6418.47,464430000,6418.47 +1996-11-20,6397.60,6482.20,6370.02,6430.02,497900000,6430.02 +1996-11-19,6346.91,6428.16,6323.06,6397.60,461980000,6397.60 +1996-11-18,6348.03,6407.66,6297.34,6346.91,388520000,6346.91 +1996-11-15,6313.00,6414.37,6277.22,6348.03,529100000,6348.03 +1996-11-14,6274.24,6350.64,6232.50,6313.00,480350000,6313.00 +1996-11-13,6266.04,6317.10,6206.78,6274.24,429840000,6274.24 +1996-11-12,6255.60,6314.49,6199.70,6266.04,472940000,6266.04 +1996-11-11,6219.82,6292.87,6198.58,6255.60,353960000,6255.60 +1996-11-08,6206.04,6247.40,6151.62,6219.82,402320000,6219.82 +1996-11-07,6177.71,6238.83,6130.38,6206.04,502530000,6206.04 +1996-11-06,6081.18,6200.44,6060.69,6177.71,509600000,6177.71 +1996-11-05,6041.68,6125.53,6029.01,6081.18,492860000,6081.18 +1996-11-04,6021.93,6083.05,5981.30,6041.68,398790000,6041.68 +1996-11-01,6029.38,6082.67,5975.34,6021.93,465510000,6021.93 +1996-10-31,5993.23,6063.67,5955.59,6029.38,488500000,6029.38 +1996-10-30,6007.02,6055.84,5956.71,5993.23,437770000,5993.23 +1996-10-29,5972.73,6054.72,5938.82,6007.02,443890000,6007.02 +1996-10-28,6007.02,6063.67,5952.61,5972.73,383630000,5972.73 +1996-10-25,5992.48,6047.64,5954.47,6007.02,367640000,6007.02 +1996-10-24,6036.46,6080.07,5953.72,5992.48,418970000,5992.48 +1996-10-23,6061.80,6081.93,5965.65,6036.46,442170000,6036.46 +1996-10-22,6090.87,6114.73,6015.59,6061.80,410790000,6061.80 +1996-10-21,6094.23,6162.80,6027.89,6090.87,414630000,6090.87 +1996-10-18,6059.20,6119.57,6011.49,6094.23,473020000,6094.23 +1996-10-17,6020.81,6101.31,5994.72,6059.20,478550000,6059.20 +1996-10-16,6004.78,6056.21,5943.66,6020.81,441410000,6020.81 +1996-10-15,6010.00,6077.83,5951.12,6004.78,458980000,6004.78 +1996-10-14,5969.38,6043.91,5952.61,6010.00,322000000,6010.00 +1996-10-11,5921.67,5999.56,5912.36,5969.38,396050000,5969.38 +1996-10-10,5930.62,5956.71,5876.58,5921.67,394950000,5921.67 +1996-10-09,5966.77,5985.03,5892.23,5930.62,408450000,5930.62 +1996-10-08,5979.81,6032.36,5930.24,5966.77,435070000,5966.77 +1996-10-07,5992.86,6025.28,5945.15,5979.81,380750000,5979.81 +1996-10-04,5932.85,6023.79,5917.20,5992.86,463940000,5992.86 +1996-10-03,5933.97,5972.36,5887.76,5932.85,386500000,5932.85 +1996-10-02,5904.90,5966.02,5888.88,5933.97,440130000,5933.97 +1996-10-01,5882.17,5942.17,5833.72,5904.90,421550000,5904.90 +1996-09-30,5845.18,5934.32,5845.18,5882.17,394260000,5882.17 +1996-09-27,5868.85,5903.99,5819.65,5872.92,414760000,5872.92 +1996-09-26,5877.36,5928.04,5828.90,5868.85,500870000,5868.85 +1996-09-25,5874.03,5928.77,5827.42,5877.36,451710000,5877.36 +1996-09-24,5894.74,5952.08,5831.86,5874.03,460150000,5874.03 +1996-09-23,5888.46,5913.24,5820.39,5894.74,297760000,5894.74 +1996-09-20,5867.74,5925.82,5840.74,5888.46,519420000,5888.46 +1996-09-19,5877.36,5908.80,5818.17,5867.74,398580000,5867.74 +1996-09-18,5888.83,5919.90,5838.15,5877.36,396600000,5877.36 +1996-09-17,5889.20,5929.51,5830.38,5888.83,449850000,5888.83 +1996-09-16,5838.52,5920.64,5823.72,5889.20,430080000,5889.20 +1996-09-13,5786.73,5871.44,5786.73,5838.52,488360000,5838.52 +1996-09-12,5754.92,5815.59,5739.76,5771.94,398820000,5771.94 +1996-09-11,5727.18,5777.49,5696.85,5754.92,376880000,5754.92 +1996-09-10,5733.84,5767.87,5681.68,5727.18,372960000,5727.18 +1996-09-09,5662.08,5756.40,5662.08,5733.84,311530000,5733.84 +1996-09-06,5606.96,5696.48,5585.51,5659.86,348710000,5659.86 +1996-09-05,5656.90,5669.47,5592.53,5606.96,361430000,5606.96 +1996-09-04,5648.39,5682.05,5608.81,5656.90,351290000,5656.90 +1996-09-03,5616.21,5667.99,5550.37,5648.39,345740000,5648.39 +1996-08-30,5647.65,5659.86,5571.45,5616.21,258380000,5616.21 +1996-08-29,5712.38,5716.82,5615.47,5647.65,321120000,5647.65 +1996-08-28,5711.27,5747.89,5678.72,5712.38,296440000,5712.38 +1996-08-27,5693.89,5735.32,5670.58,5711.27,310520000,5711.27 +1996-08-26,5722.74,5742.71,5665.41,5693.89,281430000,5693.89 +1996-08-23,5733.47,5761.58,5679.09,5722.74,308010000,5722.74 +1996-08-22,5689.82,5761.95,5662.45,5733.47,354950000,5733.47 +1996-08-21,5721.26,5734.95,5648.76,5689.82,348820000,5689.82 +1996-08-20,5699.44,5747.52,5670.21,5721.26,334960000,5721.26 +1996-08-19,5689.45,5728.66,5664.30,5699.44,294080000,5699.44 +1996-08-16,5665.78,5722.74,5646.54,5689.45,337650000,5689.45 +1996-08-15,5666.88,5701.66,5633.22,5665.78,323950000,5665.78 +1996-08-14,5647.28,5695.00,5614.36,5666.88,343470000,5666.88 +1996-08-13,5618.06,5713.86,5618.06,5647.28,362470000,5647.28 +1996-08-12,5681.31,5746.04,5625.83,5704.98,312170000,5704.98 +1996-08-09,5713.49,5747.15,5654.31,5681.31,327280000,5681.31 +1996-08-08,5718.67,5746.41,5661.34,5713.49,334570000,5713.49 +1996-08-07,5696.11,5754.55,5659.12,5718.67,394340000,5718.67 +1996-08-06,5674.28,5716.45,5630.26,5696.11,347290000,5696.11 +1996-08-05,5679.83,5719.04,5639.14,5674.28,307240000,5674.28 +1996-08-02,5601.41,5703.51,5601.41,5679.83,442080000,5679.83 +1996-08-01,5528.91,5628.79,5507.83,5594.75,439110000,5594.75 +1996-07-31,5481.93,5558.13,5460.48,5528.91,403560000,5528.91 +1996-07-30,5434.59,5503.73,5403.52,5481.93,341090000,5481.93 +1996-07-29,5473.06,5497.47,5414.61,5434.59,281560000,5434.59 +1996-07-26,5422.01,5503.02,5397.97,5473.06,349900000,5473.06 +1996-07-25,5355.80,5469.36,5355.80,5422.01,405390000,5422.01 +1996-07-24,5346.55,5402.04,5244.83,5354.69,463030000,5354.69 +1996-07-23,5390.94,5447.90,5313.63,5346.55,421900000,5346.55 +1996-07-22,5426.82,5446.05,5346.92,5390.94,327300000,5390.94 +1996-07-19,5464.18,5490.44,5393.53,5426.82,408070000,5426.82 +1996-07-18,5376.88,5500.43,5352.10,5464.18,474460000,5464.18 +1996-07-17,5358.76,5465.29,5325.10,5376.88,513830000,5376.88 +1996-07-16,5349.51,5438.66,5170.11,5358.76,68290000,5358.76 +1996-07-15,5510.56,5527.93,5326.98,5349.51,419020000,5349.51 +1996-07-12,5520.54,5562.65,5455.16,5510.56,397790000,5510.56 +1996-07-11,5600.33,5600.33,5447.77,5520.54,520470000,5520.54 +1996-07-10,5581.86,5628.03,5515.00,5603.65,421350000,5603.65 +1996-07-09,5550.83,5622.49,5540.12,5581.86,379200000,5581.86 +1996-07-08,5588.14,5622.12,5519.80,5550.83,367560000,5550.83 +1996-07-05,5657.58,5657.58,5570.77,5588.14,181470000,5588.14 +1996-07-03,5720.38,5749.93,5656.47,5703.02,336260000,5703.02 +1996-07-02,5729.98,5769.88,5668.29,5720.38,388000000,5720.38 +1996-07-01,5654.63,5749.19,5637.26,5729.98,345750000,5729.98 +1996-06-28,5677.53,5724.44,5625.81,5654.63,470460000,5654.63 +1996-06-27,5682.70,5715.21,5616.21,5677.53,405580000,5677.53 +1996-06-26,5719.27,5739.22,5652.04,5682.70,386520000,5682.70 +1996-06-25,5717.79,5760.27,5668.66,5719.27,391900000,5719.27 +1996-06-24,5705.23,5770.61,5688.61,5717.79,333840000,5717.79 +1996-06-21,5659.43,5722.22,5639.11,5705.23,520340000,5705.23 +1996-06-20,5648.35,5709.30,5606.97,5659.43,441060000,5659.43 +1996-06-19,5628.03,5693.78,5600.70,5648.35,383610000,5648.35 +1996-06-18,5652.78,5683.44,5607.71,5628.03,373290000,5628.03 +1996-06-17,5649.45,5689.72,5614.36,5652.78,298410000,5652.78 +1996-06-14,5657.95,5687.13,5609.93,5649.45,390630000,5649.45 +1996-06-13,5668.29,5714.84,5622.86,5657.95,397620000,5657.95 +1996-06-12,5668.66,5725.55,5637.63,5668.29,397190000,5668.29 +1996-06-11,5687.87,5747.71,5637.63,5668.66,405390000,5668.66 +1996-06-10,5697.11,5727.03,5643.54,5687.87,337480000,5687.87 +1996-06-07,5667.19,5708.93,5559.69,5697.11,445710000,5697.11 +1996-06-06,5697.48,5750.67,5639.48,5667.19,464800000,5667.19 +1996-06-05,5665.71,5718.53,5631.35,5697.48,380360000,5697.48 +1996-06-04,5624.71,5697.84,5616.58,5665.71,386040000,5665.71 +1996-06-03,5643.18,5662.75,5587.40,5624.71,318470000,5624.71 +1996-05-31,5693.41,5712.62,5614.36,5643.18,351750000,5643.18 +1996-05-30,5673.83,5734.41,5625.07,5693.41,381960000,5693.41 +1996-05-29,5709.67,5743.65,5632.46,5673.83,346730000,5673.83 +1996-05-28,5762.86,5798.69,5680.48,5709.67,341480000,5709.67 +1996-05-24,5762.12,5815.68,5722.59,5762.86,329150000,5762.86 +1996-05-23,5778.00,5833.04,5704.12,5762.12,431850000,5762.12 +1996-05-22,5736.26,5803.49,5687.87,5778.00,423670000,5778.00 +1996-05-21,5748.82,5794.63,5698.21,5736.26,409610000,5736.26 +1996-05-20,5687.50,5778.74,5657.58,5748.82,385000000,5748.82 +1996-05-17,5635.05,5729.61,5631.35,5687.50,429140000,5687.50 +1996-05-16,5625.44,5677.53,5577.42,5635.05,392070000,5635.05 +1996-05-15,5624.71,5691.57,5590.72,5625.44,447790000,5625.44 +1996-05-14,5582.60,5663.12,5566.71,5624.71,460440000,5624.71 +1996-05-13,5518.14,5601.80,5495.42,5582.60,394180000,5582.60 +1996-05-10,5478.03,5559.68,5478.03,5518.14,428370000,5518.14 +1996-05-09,5474.06,5534.76,5419.87,5475.14,404310000,5475.14 +1996-05-08,5420.95,5486.34,5327.74,5474.06,495460000,5474.06 +1996-05-07,5464.31,5486.34,5392.05,5420.95,410770000,5420.95 +1996-05-06,5478.03,5528.97,5397.83,5464.31,375820000,5464.31 +1996-05-03,5498.27,5555.71,5439.74,5478.03,434010000,5478.03 +1996-05-02,5575.22,5578.11,5455.27,5498.27,442960000,5498.27 +1996-05-01,5569.08,5619.29,5523.56,5575.22,404620000,5575.22 +1996-04-30,5573.41,5606.29,5522.83,5569.08,393390000,5569.08 +1996-04-29,5567.99,5611.71,5515.25,5573.41,344030000,5573.41 +1996-04-26,5566.91,5618.57,5517.78,5567.99,402530000,5567.99 +1996-04-25,5553.90,5601.23,5490.68,5566.91,461120000,5566.91 +1996-04-24,5588.59,5619.29,5512.36,5553.90,494220000,5553.90 +1996-04-23,5564.74,5621.82,5534.76,5588.59,452690000,5588.59 +1996-04-22,5535.48,5610.62,5516.33,5564.74,397460000,5564.74 +1996-04-19,5551.74,5593.64,5504.41,5535.48,435690000,5535.48 +1996-04-18,5549.93,5600.51,5493.93,5551.74,415150000,5551.74 +1996-04-17,5620.02,5653.25,5500.07,5549.93,465200000,5549.93 +1996-04-16,5592.92,5656.14,5554.99,5620.02,453310000,5620.02 +1996-04-15,5532.59,5614.60,5517.41,5592.92,346370000,5592.92 +1996-04-12,5487.07,5577.39,5445.16,5532.59,413270000,5532.59 +1996-04-11,5485.98,5540.17,5382.66,5487.07,519710000,5487.07 +1996-04-10,5560.41,5601.23,5452.02,5485.98,475150000,5485.98 +1996-04-09,5594.37,5644.58,5530.06,5560.41,426790000,5560.41 +1996-04-08,5624.71,5624.71,5518.14,5594.37,411810000,5594.37 +1996-04-04,5689.74,5737.07,5633.02,5682.88,383400000,5682.88 +1996-04-03,5671.68,5712.50,5619.29,5689.74,386620000,5689.74 +1996-04-02,5637.72,5706.72,5597.26,5671.68,406640000,5671.68 +1996-04-01,5587.14,5670.23,5562.57,5637.72,392120000,5637.72 +1996-03-29,5630.85,5682.88,5550.29,5587.14,413510000,5587.14 +1996-03-28,5626.88,5664.45,5564.74,5630.85,370750000,5630.85 +1996-03-27,5670.60,5703.47,5596.53,5626.88,406280000,5626.88 +1996-03-26,5643.86,5701.30,5595.81,5670.60,400090000,5670.60 +1996-03-25,5636.64,5712.14,5592.92,5643.86,336700000,5643.86 +1996-03-22,5626.88,5681.07,5589.67,5636.64,329390000,5636.64 +1996-03-21,5655.42,5696.25,5590.03,5626.88,367180000,5626.88 +1996-03-20,5669.51,5724.06,5590.39,5655.42,409780000,5655.42 +1996-03-19,5683.60,5755.86,5619.66,5669.51,438300000,5669.51 +1996-03-18,5584.97,5706.00,5573.41,5683.60,437100000,5683.60 +1996-03-15,5586.06,5628.69,5523.56,5584.97,529970000,5584.97 +1996-03-14,5568.72,5662.29,5536.56,5586.06,492630000,5586.06 +1996-03-13,5583.89,5626.52,5513.80,5568.72,413030000,5568.72 +1996-03-12,5581.00,5622.55,5464.67,5583.89,454980000,5583.89 +1996-03-11,5470.45,5605.20,5425.29,5581.00,449500000,5581.00 +1996-03-08,5612.79,5612.79,5395.30,5470.45,546550000,5470.45 +1996-03-07,5629.77,5667.34,5572.33,5641.69,425790000,5641.69 +1996-03-06,5642.42,5700.22,5585.70,5629.77,428220000,5629.77 +1996-03-05,5600.15,5655.78,5558.24,5642.42,445700000,5642.42 +1996-03-04,5536.56,5646.39,5511.99,5600.15,417270000,5600.15 +1996-03-01,5485.62,5573.41,5424.20,5536.56,471480000,5536.56 +1996-02-29,5506.21,5562.21,5440.46,5485.62,453170000,5485.62 +1996-02-28,5549.21,5625.07,5487.07,5506.21,447790000,5506.21 +1996-02-27,5565.10,5597.26,5478.76,5549.21,431340000,5549.21 +1996-02-26,5630.49,5647.83,5530.42,5565.10,399330000,5565.10 +1996-02-23,5608.46,5693.36,5546.32,5630.49,443130000,5630.49 +1996-02-22,5515.97,5638.44,5511.63,5608.46,494750000,5608.46 +1996-02-21,5458.53,5548.12,5440.82,5515.97,431220000,5515.97 +1996-02-20,5503.32,5515.97,5393.50,5458.53,395910000,5458.53 +1996-02-16,5551.37,5563.30,5470.45,5503.32,445570000,5503.32 +1996-02-15,5579.55,5623.27,5514.88,5551.37,415320000,5551.37 +1996-02-14,5601.23,5633.02,5534.39,5579.55,421790000,5579.55 +1996-02-13,5600.15,5644.94,5530.06,5601.23,441540000,5601.23 +1996-02-12,5541.62,5643.50,5531.14,5600.15,401490000,5600.15 +1996-02-09,5539.45,5603.76,5474.06,5541.62,477640000,5541.62 +1996-02-08,5492.12,5559.68,5441.55,5539.45,474970000,5539.45 +1996-02-07,5459.61,5520.30,5423.84,5492.12,462730000,5492.12 +1996-02-06,5407.59,5483.82,5371.82,5459.61,465940000,5459.61 +1996-02-05,5373.99,5433.96,5319.43,5407.59,377760000,5407.59 +1996-02-02,5405.06,5442.99,5338.94,5373.99,420020000,5373.99 +1996-02-01,5395.30,5438.29,5335.69,5405.06,461610000,5405.06 +1996-01-31,5381.21,5433.24,5314.38,5395.30,472210000,5395.30 +1996-01-30,5304.98,5409.75,5288.73,5381.21,464350000,5381.21 +1996-01-29,5271.75,5338.22,5246.82,5304.98,363330000,5304.98 +1996-01-26,5216.83,5293.78,5187.21,5271.75,385700000,5271.75 +1996-01-25,5242.84,5289.45,5173.84,5216.83,453270000,5216.83 +1996-01-24,5192.27,5297.04,5176.73,5242.84,476380000,5242.84 +1996-01-23,5219.36,5241.76,5141.33,5192.27,416910000,5192.27 +1996-01-22,5184.68,5254.77,5133.02,5219.36,398040000,5219.36 +1996-01-19,5124.35,5214.66,5087.49,5184.68,497720000,5184.68 +1996-01-18,5066.90,5166.98,5032.58,5124.35,450410000,5124.35 +1996-01-17,5088.22,5133.38,5028.61,5066.90,458720000,5066.90 +1996-01-16,5043.78,5116.04,5000.79,5088.22,425220000,5088.22 +1996-01-15,5061.12,5099.42,5012.71,5043.78,306180000,5043.78 +1996-01-12,5065.10,5114.23,5000.07,5061.12,383400000,5061.12 +1996-01-11,5032.94,5099.78,5002.96,5065.10,408800000,5065.10 +1996-01-10,5130.13,5151.69,5000.07,5032.94,496830000,5032.94 +1996-01-09,5197.70,5239.23,5100.86,5130.13,417400000,5130.13 +1996-01-08,5181.43,5207.08,5179.98,5197.70,130360000,5197.70 +1996-01-05,5173.84,5217.55,5107.00,5181.43,437110000,5181.43 +1996-01-04,5194.07,5259.46,5114.23,5173.84,512580000,5173.84 +1996-01-03,5177.45,5252.60,5143.13,5194.07,468950000,5194.07 +1996-01-02,5117.12,5208.16,5087.13,5177.45,364180000,5177.45 +1995-12-29,5095.80,5144.58,5063.65,5117.12,319680000,5117.12 +1995-12-28,5105.92,5132.65,5062.21,5095.80,288470000,5095.80 +1995-12-27,5110.26,5146.74,5077.74,5105.92,252270000,5105.92 +1995-12-26,5097.97,5149.27,5072.32,5110.26,217030000,5110.26 +1995-12-22,5096.53,5146.74,5064.01,5097.97,289600000,5097.97 +1995-12-21,5059.32,5135.91,5031.50,5096.53,415780000,5096.53 +1995-12-20,5109.89,5173.48,5047.39,5059.32,437650000,5059.32 +1995-12-19,5075.21,5146.02,5016.68,5109.89,18440000,5109.89 +1995-12-18,5159.39,5159.39,5042.70,5075.21,426230000,5075.21 +1995-12-15,5182.15,5217.55,5135.54,5176.73,636780000,5176.73 +1995-12-14,5216.47,5266.69,5148.55,5182.15,461960000,5182.15 +1995-12-13,5174.92,5246.10,5144.22,5216.47,414680000,5216.47 +1995-12-12,5184.32,5226.23,5132.29,5174.92,349410000,5174.92 +1995-12-11,5156.86,5225.50,5122.18,5184.32,342050000,5184.32 +1995-12-08,5159.39,5200.21,5115.31,5156.86,327500000,5156.86 +1995-12-07,5199.13,5211.05,5124.35,5159.39,379260000,5159.39 +1995-12-06,5177.45,5234.53,5147.47,5199.13,417750000,5199.13 +1995-12-05,5139.52,5216.83,5108.45,5177.45,434000000,5177.45 +1995-12-04,5087.13,5157.58,5057.87,5139.52,405080000,5139.52 +1995-12-01,5074.49,5133.02,5038.36,5087.13,392650000,5087.13 +1995-11-30,5105.56,5143.13,5033.17,5074.49,439470000,5074.49 +1995-11-29,5078.10,5126.51,5047.03,5105.56,398230000,5105.56 +1995-11-28,5070.88,5105.56,5006.21,5078.10,408860000,5078.10 +1995-11-27,5048.84,5114.23,5034.03,5070.88,356180000,5070.88 +1995-11-24,5041.61,5072.68,5028.61,5048.84,125870000,5048.84 +1995-11-22,5023.55,5096.17,4982.72,5041.61,404900000,5041.61 +1995-11-21,4983.09,5050.28,4948.04,5023.55,405860000,5023.55 +1995-11-20,4989.95,5030.77,4946.60,4983.09,333110000,4983.09 +1995-11-17,4969.36,5022.10,4934.31,4989.95,429990000,4989.95 +1995-11-16,4922.75,5003.68,4902.16,4969.36,418430000,4969.36 +1995-11-15,4871.81,4939.73,4835.69,4922.75,373090000,4922.75 +1995-11-14,4872.90,4923.11,4826.29,4871.81,353650000,4871.81 +1995-11-13,4870.37,4909.75,4821.23,4872.90,292390000,4872.90 +1995-11-10,4864.23,4896.02,4820.51,4870.37,297950000,4870.37 +1995-11-09,4852.67,4902.52,4811.84,4864.23,379500000,4864.23 +1995-11-08,4797.03,4877.59,4775.71,4852.67,359770000,4852.67 +1995-11-07,4814.01,4839.30,4770.66,4797.03,365720000,4797.03 +1995-11-06,4825.57,4862.78,4779.33,4814.01,309090000,4814.01 +1995-11-03,4808.59,4858.81,4774.63,4825.57,344360000,4825.57 +1995-11-02,4766.68,4833.16,4745.00,4808.59,396150000,4808.59 +1995-11-01,4755.48,4801.73,4719.72,4766.68,377930000,4766.68 +1995-10-31,4756.57,4821.96,4735.97,4755.48,377350000,4755.48 +1995-10-30,4741.75,4798.84,4716.46,4756.57,318840000,4756.57 +1995-10-27,4703.82,4766.68,4653.24,4741.75,378820000,4741.75 +1995-10-26,4753.68,4777.88,4655.05,4703.82,464190000,4703.82 +1995-10-25,4783.66,4824.49,4708.88,4753.68,433570000,4753.68 +1995-10-24,4755.48,4819.07,4730.92,4783.66,415400000,4783.66 +1995-10-23,4794.86,4805.70,4724.41,4755.48,329720000,4755.48 +1995-10-20,4802.45,4836.41,4758.37,4794.86,388140000,4794.86 +1995-10-19,4777.52,4830.27,4744.28,4802.45,406620000,4802.45 +1995-10-18,4795.95,4837.49,4747.53,4777.52,411270000,4777.52 +1995-10-17,4784.38,4831.35,4747.90,4795.95,352940000,4795.95 +1995-10-16,4793.78,4823.04,4751.51,4784.38,299520000,4784.38 +1995-10-13,4764.88,4845.08,4749.70,4793.78,373970000,4793.78 +1995-10-12,4735.25,4790.16,4709.24,4764.88,343930000,4764.88 +1995-10-11,4720.80,4773.91,4686.43,4735.25,343060000,4735.25 +1995-10-10,4726.22,4745.73,4638.43,4720.80,412670000,4720.80 +1995-10-09,4769.21,4781.13,4691.54,4726.22,275280000,4726.22 +1995-10-06,4762.71,4805.70,4731.64,4769.21,314170000,4769.21 +1995-10-05,4740.67,4794.86,4705.63,4762.71,367410000,4762.71 +1995-10-04,4749.70,4787.27,4689.01,4740.67,339350000,4740.67 +1995-10-03,4761.26,4791.61,4702.74,4749.70,385890000,4749.70 +1995-10-02,4789.08,4817.98,4732.72,4761.26,304990000,4761.26 +1995-09-29,4787.64,4834.96,4757.65,4789.08,337670000,4789.08 +1995-09-28,4762.35,4810.03,4731.64,4787.64,367610000,4787.64 +1995-09-27,4765.60,4790.16,4692.98,4762.35,410970000,4762.35 +1995-09-26,4769.93,4816.54,4738.86,4765.60,362550000,4765.60 +1995-09-25,4764.15,4804.62,4728.02,4769.93,273110000,4769.93 +1995-09-22,4767.40,4789.44,4706.35,4764.15,370750000,4764.15 +1995-09-21,4792.69,4820.15,4728.75,4767.40,367060000,4767.40 +1995-09-20,4767.04,4828.46,4746.45,4792.69,402530000,4792.69 +1995-09-19,4780.41,4798.11,4734.53,4767.04,371080000,4767.04 +1995-09-18,4797.57,4814.01,4729.47,4780.41,328630000,4780.41 +1995-09-15,4801.80,4839.48,4762.35,4797.57,459370000,4797.57 +1995-09-14,4765.52,4830.32,4731.36,4801.80,382860000,4801.80 +1995-09-13,4747.21,4801.09,4697.55,4765.52,381450000,4765.52 +1995-09-12,4704.94,4762.35,4689.45,4747.21,342580000,4747.21 +1995-09-11,4700.72,4744.04,4672.54,4704.94,296820000,4704.94 +1995-09-08,4669.72,4722.91,4648.59,4700.72,317260000,4700.72 +1995-09-07,4683.81,4710.58,4640.14,4669.72,321710000,4669.72 +1995-09-06,4670.08,4716.21,4648.95,4683.81,369510000,4683.81 +1995-09-05,4647.54,4697.90,4625.70,4670.08,332660000,4670.08 +1995-09-01,4610.56,4672.19,4594.71,4647.54,255710000,4647.54 +1995-08-31,4604.57,4634.51,4582.38,4610.56,300890000,4610.56 +1995-08-30,4608.44,4639.79,4582.38,4604.57,329780000,4604.57 +1995-08-29,4594.00,4625.35,4554.21,4608.44,311290000,4608.44 +1995-08-28,4601.40,4632.39,4566.53,4594.00,267860000,4594.00 +1995-08-25,4580.62,4629.93,4569.70,4601.40,255990000,4601.40 +1995-08-24,4584.85,4618.30,4552.80,4580.62,299200000,4580.62 +1995-08-23,4620.42,4636.27,4571.81,4584.85,291380000,4584.85 +1995-08-22,4614.78,4646.13,4580.62,4620.42,290350000,4620.42 +1995-08-21,4617.60,4676.42,4593.65,4614.78,303200000,4614.78 +1995-08-18,4630.63,4665.15,4597.88,4617.60,312030000,4617.60 +1995-08-17,4639.08,4659.16,4587.66,4630.63,354460000,4630.63 +1995-08-16,4640.84,4673.60,4593.30,4639.08,390070000,4639.08 +1995-08-15,4659.86,4672.89,4602.10,4640.84,330040000,4640.84 +1995-08-14,4618.30,4677.12,4601.75,4659.86,263750000,4659.86 +1995-08-11,4643.66,4659.51,4584.85,4618.30,267850000,4618.30 +1995-08-10,4671.49,4698.96,4621.47,4643.66,306660000,4643.66 +1995-08-09,4693.32,4712.34,4649.30,4671.49,303390000,4671.49 +1995-08-08,4693.32,4722.55,4654.23,4693.32,305150000,4693.32 +1995-08-07,4683.46,4727.84,4667.26,4693.32,276040000,4693.32 +1995-08-04,4701.42,4728.54,4660.57,4683.46,314730000,4683.46 +1995-08-03,4690.15,4720.44,4632.04,4701.42,353110000,4701.42 +1995-08-02,4700.37,4772.56,4667.96,4690.15,374310000,4690.15 +1995-08-01,4708.47,4742.98,4648.59,4700.37,334770000,4700.37 +1995-07-31,4715.51,4753.55,4671.13,4708.47,291950000,4708.47 +1995-07-28,4732.77,4762.70,4686.28,4715.51,311580000,4715.51 +1995-07-27,4707.06,4767.99,4691.56,4732.77,356570000,4732.77 +1995-07-26,4714.45,4750.73,4665.15,4707.06,393460000,4707.06 +1995-07-25,4668.67,4743.69,4651.76,4714.45,373210000,4714.45 +1995-07-24,4641.55,4701.42,4620.42,4668.67,315170000,4668.67 +1995-07-21,4641.55,4676.06,4596.82,4641.55,427770000,4641.55 +1995-07-20,4628.87,4684.52,4578.51,4641.55,383380000,4641.55 +1995-07-19,4686.28,4698.60,4530.26,4628.87,489850000,4628.87 +1995-07-18,4734.53,4734.53,4648.24,4686.28,372230000,4686.28 +1995-07-17,4708.82,4767.63,4681.35,4736.29,322540000,4736.29 +1995-07-14,4727.48,4736.99,4664.79,4708.82,312930000,4708.82 +1995-07-13,4727.29,4766.58,4676.06,4727.48,387470000,4727.48 +1995-07-12,4680.60,4747.00,4654.66,4727.29,416000000,4727.29 +1995-07-11,4702.39,4724.52,4647.74,4680.60,376770000,4680.60 +1995-07-10,4702.73,4747.69,4670.91,4702.39,409700000,4702.39 +1995-07-07,4664.00,4740.77,4628.38,4702.73,466540000,4702.73 +1995-07-06,4615.23,4681.98,4587.91,4664.00,420470000,4664.00 +1995-07-05,4585.15,4652.24,4561.63,4615.23,357810000,4615.23 +1995-07-03,4556.10,4594.83,4536.04,4585.15,117870000,4585.15 +1995-06-30,4550.56,4606.24,4513.90,4556.10,311320000,4556.10 +1995-06-29,4556.79,4592.76,4510.45,4550.56,313060000,4550.56 +1995-06-28,4542.61,4587.22,4512.87,4556.79,368060000,4556.79 +1995-06-27,4551.25,4592.41,4511.48,4542.61,346950000,4542.61 +1995-06-26,4585.84,4600.02,4536.38,4551.25,296720000,4551.25 +1995-06-23,4589.64,4609.70,4549.18,4585.84,321530000,4585.84 +1995-06-22,4547.10,4614.20,4535.35,4589.64,420950000,4589.64 +1995-06-21,4550.56,4583.07,4517.02,4547.10,398210000,4547.10 +1995-06-20,4553.68,4587.22,4497.99,4550.56,382290000,4550.56 +1995-06-19,4510.79,4577.19,4498.69,4553.68,322620000,4553.68 +1995-06-16,4496.27,4533.96,4482.43,4510.79,442740000,4510.79 +1995-06-15,4491.08,4527.74,4466.87,4496.27,334640000,4496.27 +1995-06-14,4484.51,4510.79,4449.23,4491.08,330750000,4491.08 +1995-06-13,4446.46,4504.91,4440.24,4484.51,339620000,4484.51 +1995-06-12,4423.99,4482.09,4415.69,4446.46,287830000,4446.46 +1995-06-09,4458.57,4466.87,4394.59,4423.99,328960000,4423.99 +1995-06-08,4462.03,4492.12,4431.59,4458.57,289880000,4458.57 +1995-06-07,4485.20,4497.65,4432.29,4462.03,327790000,4462.03 +1995-06-06,4476.55,4520.47,4446.46,4485.20,340470000,4485.20 +1995-06-05,4444.39,4510.45,4417.76,4476.55,337520000,4476.55 +1995-06-02,4472.75,4496.27,4406.35,4444.39,366000000,4444.39 +1995-06-01,4465.14,4499.72,4421.56,4472.75,345890000,4472.75 +1995-05-31,4378.68,4467.91,4360.70,4465.14,358160000,4465.14 +1995-05-30,4369.00,4412.92,4334.41,4378.68,283020000,4378.68 +1995-05-26,4412.23,4423.64,4338.91,4369.00,290730000,4369.00 +1995-05-25,4427.44,4451.31,4375.91,4412.23,341820000,4412.23 +1995-05-24,4436.44,4480.70,4390.78,4438.16,391750000,4438.16 +1995-05-23,4395.63,4451.65,4372.46,4436.44,362690000,4436.44 +1995-05-22,4341.33,4416.03,4337.87,4395.63,285600000,4395.63 +1995-05-19,4340.64,4368.65,4287.38,4341.33,354010000,4341.33 +1995-05-18,4422.60,4426.41,4330.95,4340.64,351850000,4340.64 +1995-05-17,4435.05,4452.69,4386.63,4422.60,347930000,4422.60 +1995-05-16,4437.47,4464.10,4408.08,4435.05,366180000,4435.05 +1995-05-15,4430.56,4468.94,4398.74,4437.47,316240000,4437.47 +1995-05-12,4411.19,4463.07,4371.07,4430.56,361000000,4430.56 +1995-05-11,4404.62,4446.12,4365.19,4411.19,339900000,4411.19 +1995-05-10,4390.78,4440.24,4347.55,4404.62,381990000,4404.62 +1995-05-09,4383.87,4421.22,4360.00,4390.78,361430000,4390.78 +1995-05-08,4343.40,4407.04,4316.43,4383.87,291810000,4383.87 +1995-05-05,4359.66,4389.75,4310.55,4343.40,342380000,4343.40 +1995-05-04,4373.15,4426.41,4329.92,4359.66,434920000,4359.66 +1995-05-03,4328.88,4392.51,4312.28,4373.15,392290000,4373.15 +1995-05-02,4316.08,4348.25,4288.42,4328.88,300660000,4328.88 +1995-05-01,4321.27,4352.74,4278.73,4316.08,296830000,4316.08 +1995-04-28,4314.70,4348.94,4270.78,4321.27,320270000,4321.27 +1995-04-27,4299.83,4335.10,4269.05,4314.70,350850000,4314.70 +1995-04-26,4300.17,4324.73,4267.32,4299.83,350790000,4299.83 +1995-04-25,4303.98,4337.18,4267.32,4300.17,351790000,4300.17 +1995-04-24,4270.09,4328.88,4239.65,4303.98,325760000,4303.98 +1995-04-21,4230.66,4296.37,4214.41,4270.09,403210000,4270.09 +1995-04-20,4207.49,4263.86,4186.39,4230.66,368440000,4230.66 +1995-04-19,4179.13,4232.39,4143.51,4207.49,377520000,4207.49 +1995-04-18,4195.38,4221.67,4152.15,4179.13,344680000,4179.13 +1995-04-17,4208.18,4260.06,4174.63,4195.38,333930000,4195.38 +1995-04-13,4197.81,4243.46,4173.94,4208.18,301510000,4208.18 +1995-04-12,4187.08,4221.67,4163.57,4197.81,327880000,4197.81 +1995-04-11,4198.15,4229.97,4168.06,4187.08,309710000,4187.08 +1995-04-10,4192.62,4219.94,4163.91,4198.15,260980000,4198.15 +1995-04-07,4205.41,4226.86,4154.23,4192.62,314750000,4192.62 +1995-04-06,4200.57,4239.31,4179.13,4205.41,320460000,4205.41 +1995-04-05,4201.61,4229.62,4166.33,4200.57,315170000,4200.57 +1995-04-04,4168.41,4220.98,4154.23,4201.61,330550000,4201.61 +1995-04-03,4157.69,4202.30,4129.68,4168.41,287380000,4168.41 +1995-03-31,4172.56,4194.00,4100.28,4157.69,352940000,4157.69 +1995-03-30,4160.80,4213.37,4128.29,4172.56,362020000,4172.56 +1995-03-29,4151.81,4213.71,4121.72,4160.80,385910000,4160.80 +1995-03-28,4157.34,4176.02,4120.68,4151.81,320360000,4151.81 +1995-03-27,4138.67,4177.40,4113.08,4157.34,296160000,4157.34 +1995-03-24,4087.83,4155.27,4087.14,4138.67,358370000,4138.67 +1995-03-23,4082.99,4107.89,4046.33,4087.83,318490000,4087.83 +1995-03-22,4072.61,4107.54,4039.07,4082.99,313120000,4082.99 +1995-03-21,4083.68,4122.41,4046.67,4072.61,367110000,4072.61 +1995-03-20,4073.65,4115.15,4051.17,4083.68,301720000,4083.68 +1995-03-17,4069.15,4101.66,4044.94,4073.65,415810000,4073.65 +1995-03-16,4038.37,4095.78,4021.77,4069.15,336330000,4069.15 +1995-03-15,4048.75,4070.19,4008.63,4038.37,309540000,4038.37 +1995-03-14,4025.23,4087.14,4014.86,4048.75,346140000,4048.75 +1995-03-13,4035.61,4060.85,3999.29,4025.23,275280000,4025.23 +1995-03-10,3983.39,4054.97,3978.20,4035.61,383000000,4035.61 +1995-03-09,3979.23,4011.40,3953.99,3983.39,319100000,3983.39 +1995-03-08,3962.63,4002.41,3944.65,3979.23,349700000,3979.23 +1995-03-07,3997.56,4009.67,3935.31,3962.63,355550000,3962.63 +1995-03-06,3989.61,4015.89,3944.31,3997.56,298850000,3997.56 +1995-03-03,3979.93,4004.83,3946.03,3989.61,330840000,3989.61 +1995-03-02,3994.80,4009.67,3947.07,3979.93,329430000,3979.93 +1995-03-01,4011.05,4033.19,3960.56,3994.80,362590000,3994.80 +1995-02-28,3988.57,4021.43,3967.48,4011.05,317120000,4011.05 +1995-02-27,4011.74,4033.19,3966.78,3988.57,285790000,3988.57 +1995-02-24,4003.33,4033.61,3974.06,4011.74,302850000,4011.74 +1995-02-23,3979.45,4034.62,3979.45,4003.33,394100000,4003.33 +1995-02-22,3963.97,4002.32,3944.46,3973.05,339140000,3973.05 +1995-02-21,3953.54,3989.88,3930.66,3963.97,308060000,3963.97 +1995-02-17,3987.52,4001.99,3937.05,3953.54,350560000,3953.54 +1995-02-16,3986.17,4011.07,3948.16,3987.52,360990000,3987.52 +1995-02-15,3958.25,4019.15,3937.73,3986.17,377940000,3986.17 +1995-02-14,3954.21,3984.83,3930.66,3958.25,300720000,3958.25 +1995-02-13,3939.07,3974.74,3920.57,3954.21,256210000,3954.21 +1995-02-10,3932.68,3962.96,3908.46,3939.07,295550000,3939.07 +1995-02-09,3935.37,3967.33,3904.76,3932.68,325570000,3932.68 +1995-02-08,3937.39,3967.67,3909.13,3935.37,317910000,3935.37 +1995-02-07,3937.73,3960.27,3907.45,3937.39,317110000,3937.39 +1995-02-06,3928.64,3964.31,3900.04,3937.73,325660000,3937.73 +1995-02-03,3876.16,3959.60,3876.16,3928.64,440950000,3928.64 +1995-02-02,3847.56,3884.23,3828.38,3870.77,322030000,3870.77 +1995-02-01,3843.86,3886.25,3809.21,3847.56,395300000,3847.56 +1995-01-31,3832.08,3872.12,3809.54,3843.86,411570000,3843.86 +1995-01-30,3857.99,3881.20,3794.40,3832.08,318530000,3832.08 +1995-01-27,3870.44,3914.18,3827.37,3857.99,339490000,3857.99 +1995-01-26,3871.45,3903.41,3839.15,3870.44,304650000,3870.44 +1995-01-25,3862.70,3908.79,3832.08,3871.45,342240000,3871.45 +1995-01-24,3867.41,3898.36,3840.16,3862.70,315410000,3862.70 +1995-01-23,3869.43,3885.58,3815.26,3867.41,325810000,3867.41 +1995-01-20,3882.21,3898.70,3826.70,3869.43,376870000,3869.43 +1995-01-19,3928.98,3929.99,3866.74,3882.21,297220000,3882.21 +1995-01-18,3930.66,3950.85,3889.95,3928.98,343100000,3928.98 +1995-01-17,3932.34,3953.88,3895.33,3930.66,330890000,3930.66 +1995-01-16,3908.46,3955.56,3889.95,3932.34,315800000,3932.34 +1995-01-13,3859.00,3924.27,3852.61,3908.46,336740000,3908.46 +1995-01-12,3862.03,3886.59,3831.41,3859.00,313040000,3859.00 +1995-01-11,3866.74,3899.71,3824.68,3862.03,346310000,3862.03 +1995-01-10,3861.35,3912.49,3844.87,3866.74,352440000,3866.74 +1995-01-09,3867.41,3889.28,3834.44,3861.35,278710000,3861.35 +1995-01-06,3850.92,3902.40,3823.67,3867.41,308070000,3867.41 +1995-01-05,3857.65,3876.83,3825.35,3850.92,309140000,3850.92 +1995-01-04,3838.48,3876.83,3815.26,3857.65,319510000,3857.65 +1995-01-03,3834.44,3864.72,3805.50,3838.48,262450000,3838.48 +1994-12-30,3833.43,3874.48,3812.91,3834.44,256260000,3834.44 +1994-12-29,3839.49,3867.41,3812.91,3833.43,250650000,3833.43 +1994-12-28,3861.69,3871.45,3816.94,3839.49,246260000,3839.49 +1994-12-27,3833.43,3882.21,3832.08,3861.69,211180000,3861.69 +1994-12-23,3814.92,3860.01,3808.53,3833.43,196540000,3833.43 +1994-12-22,3801.80,3850.59,3780.61,3814.92,339670000,3814.92 +1994-12-21,3767.15,3836.46,3761.77,3801.80,378790000,3801.80 +1994-12-20,3790.70,3807.19,3752.35,3767.15,325510000,3767.15 +1994-12-19,3807.19,3815.26,3764.46,3790.70,271850000,3790.70 +1994-12-16,3765.47,3817.95,3758.07,3807.19,481860000,3807.19 +1994-12-15,3746.29,3794.07,3729.13,3765.47,332790000,3765.47 +1994-12-14,3715.34,3772.20,3700.53,3746.29,355000000,3746.29 +1994-12-13,3718.37,3749.32,3690.78,3715.34,307110000,3715.34 +1994-12-12,3691.11,3734.52,3667.90,3718.37,285730000,3718.37 +1994-12-09,3685.73,3713.32,3638.97,3691.11,336440000,3691.11 +1994-12-08,3735.52,3757.39,3670.25,3685.73,362280000,3685.73 +1994-12-07,3745.95,3758.07,3700.87,3735.52,283490000,3735.52 +1994-12-06,3741.92,3762.10,3703.56,3745.95,298890000,3745.95 +1994-12-05,3745.62,3779.93,3715.67,3741.92,258480000,3741.92 +1994-12-02,3700.87,3755.04,3680.68,3745.62,284740000,3745.62 +1994-12-01,3739.23,3755.37,3680.68,3700.87,285920000,3700.87 +1994-11-30,3738.55,3783.30,3718.37,3739.23,300800000,3739.23 +1994-11-29,3739.56,3755.04,3703.90,3738.55,286580000,3738.55 +1994-11-28,3708.27,3759.41,3693.13,3739.56,265020000,3739.56 +1994-11-25,3675.97,3722.40,3675.97,3708.27,118290000,3708.27 +1994-11-23,3677.99,3704.91,3612.05,3674.63,430730000,3674.63 +1994-11-22,3769.51,3787.34,3669.58,3677.99,387270000,3677.99 +1994-11-21,3815.26,3845.20,3758.74,3769.51,293030000,3769.51 +1994-11-18,3828.05,3844.87,3773.21,3815.26,356730000,3815.26 +1994-11-17,3845.20,3868.08,3797.77,3828.05,323190000,3828.05 +1994-11-16,3826.36,3864.38,3803.82,3845.20,296980000,3845.20 +1994-11-15,3829.73,3871.45,3794.40,3826.36,336330000,3826.36 +1994-11-14,3801.47,3849.91,3795.07,3829.73,260380000,3829.73 +1994-11-11,3821.99,3830.06,3779.93,3801.47,220800000,3801.47 +1994-11-10,3831.75,3873.47,3821.99,3821.99,280910000,3821.99 +1994-11-09,3830.74,3882.89,3798.44,3831.75,341500000,3831.75 +1994-11-08,3808.87,3857.65,3798.75,3830.74,290860000,3830.74 +1994-11-07,3807.52,3830.40,3781.62,3808.87,255030000,3808.87 +1994-11-04,3845.88,3879.52,3802.81,3807.52,280560000,3807.52 +1994-11-03,3837.13,3872.46,3814.25,3845.88,284480000,3845.88 +1994-11-02,3863.37,3888.94,3820.31,3837.13,331360000,3837.13 +1994-11-01,3908.12,3919.90,3836.79,3863.37,314940000,3863.37 +1994-10-31,3930.66,3956.90,3889.28,3908.12,302810000,3908.12 +1994-10-28,3875.15,3953.54,3863.37,3930.66,381450000,3930.66 +1994-10-27,3848.23,3893.99,3834.44,3875.15,327790000,3875.15 +1994-10-26,3850.59,3891.97,3816.61,3848.23,322560000,3848.23 +1994-10-25,3855.30,3883.56,3803.49,3850.59,326100000,3850.59 +1994-10-24,3891.30,3925.61,3840.16,3855.30,282800000,3855.30 +1994-10-21,3911.15,3921.58,3861.35,3891.30,309410000,3891.30 +1994-10-20,3936.04,3954.89,3873.13,3911.15,326100000,3911.15 +1994-10-19,3917.54,3958.25,3887.93,3936.04,317030000,3936.04 +1994-10-18,3923.93,3945.46,3892.64,3917.54,259730000,3917.54 +1994-10-17,3910.47,3949.84,3883.22,3923.93,238490000,3923.93 +1994-10-14,3889.95,3927.97,3862.03,3910.47,251770000,3910.47 +1994-10-13,3878.18,3944.12,3878.18,3889.95,337900000,3889.95 +1994-10-12,3876.83,3903.07,3844.87,3875.15,269550000,3875.15 +1994-10-11,3828.96,3898.36,3828.96,3876.83,355540000,3876.83 +1994-10-10,3797.43,3843.19,3789.36,3821.32,213110000,3821.32 +1994-10-07,3775.56,3826.03,3754.37,3797.43,284230000,3797.43 +1994-10-06,3787.34,3810.89,3752.01,3775.56,272620000,3775.56 +1994-10-05,3801.13,3811.56,3736.20,3787.34,359670000,3787.34 +1994-10-04,3846.89,3873.47,3788.35,3801.13,325620000,3801.13 +1994-10-03,3843.19,3872.79,3809.21,3846.89,269130000,3846.89 +1994-09-30,3854.63,3891.30,3825.69,3843.19,292060000,3843.19 +1994-09-29,3878.18,3892.64,3834.78,3854.63,302280000,3854.63 +1994-09-28,3863.04,3904.76,3854.29,3878.18,330020000,3878.18 +1994-09-27,3849.24,3891.63,3828.72,3863.04,290330000,3863.04 +1994-09-26,3831.75,3869.43,3804.50,3849.24,272530000,3849.24 +1994-09-23,3837.13,3872.46,3806.51,3831.75,300060000,3831.75 +1994-09-22,3851.60,3882.55,3818.29,3837.13,305210000,3837.13 +1994-09-21,3869.09,3886.92,3806.85,3851.60,355330000,3851.60 +1994-09-20,3932.01,3932.01,3859.67,3869.09,326050000,3869.09 +1994-09-19,3933.35,3972.72,3909.80,3936.72,272920000,3936.72 +1994-09-16,3953.88,3955.22,3894.66,3933.35,410750000,3933.35 +1994-09-15,3895.33,3959.93,3883.90,3953.88,281890000,3953.88 +1994-09-14,3879.86,3918.55,3856.64,3895.33,297480000,3895.33 +1994-09-13,3860.34,3905.76,3854.29,3879.86,293370000,3879.86 +1994-09-12,3874.81,3897.02,3843.86,3860.34,244680000,3860.34 +1994-09-09,3902.06,3902.06,3844.20,3874.81,293330000,3874.81 +1994-09-08,3886.25,3926.96,3872.46,3908.46,295010000,3908.46 +1994-09-07,3898.70,3920.90,3860.68,3886.25,292110000,3886.25 +1994-09-06,3885.58,3918.55,3860.01,3898.70,199670000,3898.70 +1994-09-02,3901.44,3928.64,3871.98,3885.58,216150000,3885.58 +1994-09-01,3913.42,3927.99,3871.66,3901.44,285670000,3901.44 +1994-08-31,3917.30,3954.54,3878.78,3913.42,354650000,3913.42 +1994-08-30,3898.85,3934.14,3875.87,3917.30,294520000,3917.30 +1994-08-29,3881.05,3927.34,3869.39,3898.85,266080000,3898.85 +1994-08-26,3836.69,3903.38,3836.69,3881.05,305120000,3881.05 +1994-08-25,3846.73,3872.63,3810.47,3829.89,284200000,3829.89 +1994-08-24,3775.83,3852.56,3767.41,3846.73,309780000,3846.73 +1994-08-23,3751.22,3804.64,3745.07,3775.83,307240000,3775.83 +1994-08-22,3755.11,3771.94,3722.41,3751.22,235870000,3751.22 +1994-08-19,3755.43,3785.22,3727.59,3755.11,276630000,3755.11 +1994-08-18,3776.48,3793.63,3736.98,3755.43,287330000,3755.43 +1994-08-17,3784.57,3812.09,3754.46,3776.48,309250000,3776.48 +1994-08-16,3760.29,3804.64,3732.45,3784.57,306640000,3784.57 +1994-08-15,3768.71,3798.17,3742.16,3760.29,223210000,3760.29 +1994-08-12,3750.90,3792.66,3738.27,3768.71,249270000,3768.71 +1994-08-11,3766.76,3785.86,3728.56,3750.90,275690000,3750.90 +1994-08-10,3755.76,3793.97,3738.27,3766.76,279470000,3766.76 +1994-08-09,3753.81,3773.89,3728.56,3755.76,259130000,3755.76 +1994-08-08,3747.02,3780.68,3732.77,3753.81,217670000,3753.81 +1994-08-05,3765.79,3769.68,3725.00,3747.02,230270000,3747.02 +1994-08-04,3792.66,3807.23,3752.52,3765.79,289150000,3765.79 +1994-08-03,3796.22,3815.00,3762.88,3792.66,283840000,3792.66 +1994-08-02,3798.17,3829.25,3776.48,3796.22,294740000,3796.22 +1994-08-01,3764.50,3809.50,3749.28,3798.17,258180000,3798.17 +1994-07-29,3730.83,3782.63,3726.30,3764.50,269560000,3764.50 +1994-07-28,3720.47,3757.05,3701.69,3730.83,247560000,3730.83 +1994-07-27,3735.68,3753.17,3693.27,3720.47,251680000,3720.47 +1994-07-26,3741.84,3764.50,3706.22,3735.68,232670000,3735.68 +1994-07-25,3735.04,3762.56,3713.67,3741.84,213470000,3741.84 +1994-07-22,3732.45,3765.15,3707.19,3735.04,261090000,3735.04 +1994-07-21,3727.27,3763.20,3684.86,3732.45,292080000,3732.45 +1994-07-20,3748.31,3763.85,3706.22,3727.27,267740000,3727.27 +1994-07-19,3755.43,3777.45,3726.30,3748.31,251530000,3748.31 +1994-07-18,3753.81,3779.39,3725.00,3755.43,227480000,3755.43 +1994-07-15,3739.25,3769.35,3712.37,3753.81,275860000,3753.81 +1994-07-14,3704.28,3763.53,3697.48,3739.25,319950000,3739.25 +1994-07-13,3702.66,3738.27,3683.89,3704.28,265840000,3704.28 +1994-07-12,3702.99,3725.32,3660.90,3702.66,252250000,3702.66 +1994-07-11,3709.14,3735.36,3671.26,3702.99,222580000,3702.99 +1994-07-08,3688.42,3728.56,3660.90,3709.14,236520000,3709.14 +1994-07-07,3674.50,3714.32,3656.04,3688.42,258500000,3688.42 +1994-07-06,3652.48,3698.13,3631.11,3674.50,233640000,3674.50 +1994-07-05,3646.65,3680.65,3621.73,3652.48,193030000,3652.48 +1994-07-01,3624.96,3675.79,3611.04,3646.65,199030000,3646.65 +1994-06-30,3667.05,3683.56,3610.72,3624.96,294110000,3624.96 +1994-06-29,3669.64,3711.73,3645.68,3667.05,263890000,3667.05 +1994-06-28,3685.50,3705.58,3630.47,3669.64,265880000,3669.64 +1994-06-27,3636.94,3694.89,3603.92,3685.50,250110000,3685.50 +1994-06-24,3699.09,3704.80,3616.65,3636.94,261260000,3636.94 +1994-06-23,3724.77,3752.04,3685.14,3699.09,256480000,3699.09 +1994-06-22,3707.97,3748.87,3694.65,3724.77,251110000,3724.77 +1994-06-21,3741.90,3756.80,3674.68,3707.97,298730000,3707.97 +1994-06-20,3771.07,3771.07,3716.21,3741.90,229520000,3741.90 +1994-06-17,3811.34,3821.48,3764.09,3776.78,373400000,3776.78 +1994-06-16,3790.41,3830.68,3771.39,3811.34,254880000,3811.34 +1994-06-15,3814.83,3838.29,3772.02,3790.41,269740000,3790.41 +1994-06-14,3783.12,3839.88,3769.17,3814.83,288550000,3814.83 +1994-06-13,3773.45,3808.17,3741.26,3783.12,242810000,3783.12 +1994-06-10,3753.14,3798.68,3739.60,3773.45,222480000,3773.45 +1994-06-09,3749.45,3776.83,3721.45,3753.14,252870000,3753.14 +1994-06-08,3755.91,3780.83,3721.45,3749.45,256000000,3749.45 +1994-06-07,3768.52,3788.52,3733.14,3755.91,234680000,3755.91 +1994-06-06,3772.22,3812.83,3749.75,3768.52,259080000,3768.52 +1994-06-03,3758.99,3792.22,3732.52,3772.22,271490000,3772.22 +1994-06-02,3760.83,3791.60,3732.83,3758.99,271150000,3758.99 +1994-06-01,3758.37,3785.14,3717.76,3760.83,279910000,3760.83 +1994-05-31,3757.14,3783.29,3725.45,3758.37,216700000,3758.37 +1994-05-27,3753.46,3772.18,3723.68,3757.14,186430000,3757.14 +1994-05-26,3755.30,3785.07,3722.76,3753.46,255740000,3753.46 +1994-05-25,3745.17,3768.19,3710.79,3755.30,254410000,3755.30 +1994-05-24,3742.41,3786.30,3707.11,3745.17,280040000,3745.17 +1994-05-23,3766.35,3770.65,3711.40,3742.41,249390000,3742.41 +1994-05-20,3758.98,3788.76,3721.84,3766.35,295180000,3766.35 +1994-05-19,3732.89,3782.92,3707.72,3758.98,303680000,3758.98 +1994-05-18,3720.61,3761.74,3683.16,3732.89,339280000,3732.89 +1994-05-17,3671.50,3735.04,3653.70,3720.61,311280000,3720.61 +1994-05-16,3659.68,3694.21,3628.52,3671.50,234680000,3671.50 +1994-05-13,3652.84,3690.32,3626.37,3659.68,252070000,3659.68 +1994-05-12,3629.04,3682.58,3624.58,3652.84,272770000,3652.84 +1994-05-11,3656.41,3678.42,3609.71,3629.04,277400000,3629.04 +1994-05-10,3629.04,3684.67,3627.56,3656.41,297660000,3656.41 +1994-05-09,3669.50,3676.93,3612.39,3629.04,250870000,3629.04 +1994-05-06,3695.97,3702.51,3625.77,3669.50,291910000,3669.50 +1994-05-05,3697.75,3731.07,3675.45,3695.97,255690000,3695.97 +1994-05-04,3714.41,3730.17,3670.09,3697.75,267940000,3697.75 +1994-05-03,3701.02,3736.12,3669.79,3714.41,288270000,3714.41 +1994-05-02,3681.69,3734.04,3648.97,3701.02,296130000,3701.02 +1994-04-29,3668.31,3707.87,3642.13,3681.69,293970000,3681.69 +1994-04-28,3699.54,3723.93,3640.35,3668.31,325200000,3668.31 +1994-04-26,3705.78,3733.15,3669.79,3699.54,288110000,3699.54 +1994-04-25,3648.68,3721.25,3635.29,3705.78,262220000,3705.78 +1994-04-22,3652.54,3690.32,3621.01,3648.68,295710000,3648.68 +1994-04-21,3598.71,3673.96,3582.94,3652.54,378760000,3652.54 +1994-04-20,3619.82,3662.66,3546.65,3598.71,366540000,3598.71 +1994-04-19,3620.42,3670.39,3567.18,3619.82,323280000,3619.82 +1994-04-18,3661.47,3679.61,3593.35,3620.42,271450000,3620.42 +1994-04-15,3663.25,3699.24,3631.13,3661.47,309550000,3661.47 +1994-04-14,3661.47,3693.59,3625.77,3663.25,275130000,3663.25 +1994-04-13,3681.69,3704.30,3616.85,3661.47,278030000,3661.47 +1994-04-12,3688.83,3722.14,3661.17,3681.69,256250000,3681.69 +1994-04-11,3674.26,3720.66,3651.35,3688.83,243180000,3688.83 +1994-04-08,3693.26,3717.15,3644.03,3674.26,264090000,3674.26 +1994-04-07,3679.73,3712.83,3642.59,3693.26,289280000,3693.26 +1994-04-06,3675.41,3722.34,3643.16,3679.73,302000000,3679.73 +1994-04-05,3625.02,3698.15,3625.02,3675.41,366890000,3675.41 +1994-04-04,3633.08,3633.08,3520.80,3593.35,344390000,3593.35 +1994-03-31,3626.75,3673.10,3544.12,3635.96,403580000,3635.96 +1994-03-30,3699.02,3718.88,3612.36,3626.75,390520000,3626.75 +1994-03-29,3762.35,3771.86,3689.23,3699.02,301630000,3699.02 +1994-03-28,3774.73,3793.45,3719.74,3762.35,287360000,3762.35 +1994-03-25,3821.09,3845.85,3764.66,3774.73,249670000,3774.73 +1994-03-24,3865.42,3865.42,3792.58,3821.09,303800000,3821.09 +1994-03-23,3862.55,3901.41,3839.80,3869.46,284600000,3869.46 +1994-03-22,3864.85,3896.23,3840.66,3862.55,283090000,3862.55 +1994-03-21,3895.65,3898.25,3838.65,3864.85,247390000,3864.85 +1994-03-18,3865.14,3911.78,3838.65,3895.65,462240000,3895.65 +1994-03-17,3848.15,3891.34,3821.66,3865.14,303950000,3865.14 +1994-03-16,3849.59,3879.53,3819.94,3848.15,306820000,3848.15 +1994-03-15,3862.98,3888.46,3826.85,3849.59,329260000,3849.59 +1994-03-14,3862.70,3894.21,3835.96,3862.98,260160000,3862.98 +1994-03-11,3830.62,3872.83,3806.69,3862.70,303250000,3862.70 +1994-03-10,3853.41,3865.51,3801.63,3830.62,369370000,3830.62 +1994-03-09,3851.72,3874.52,3817.95,3853.41,309810000,3853.41 +1994-03-08,3856.22,3881.55,3822.45,3851.72,298110000,3851.72 +1994-03-07,3832.30,3882.40,3824.71,3856.22,285580000,3856.22 +1994-03-04,3824.42,3868.04,3800.50,3832.30,311850000,3832.30 +1994-03-03,3831.74,3862.13,3784.74,3824.42,291960000,3824.42 +1994-03-02,3809.23,3845.25,3741.69,3831.74,361130000,3831.74 +1994-03-01,3832.02,3848.34,3772.93,3809.23,304450000,3809.23 +1994-02-28,3838.78,3874.52,3817.95,3832.02,267610000,3832.02 +1994-02-25,3839.90,3868.89,3811.76,3838.78,273680000,3838.78 +1994-02-24,3891.68,3895.62,3823.86,3839.90,342940000,3839.90 +1994-02-23,3911.66,3931.36,3872.83,3891.68,309910000,3891.68 +1994-02-22,3887.46,3928.83,3873.39,3911.66,270900000,3911.66 +1994-02-18,3922.64,3931.92,3869.73,3887.46,293210000,3887.46 +1994-02-17,3937.27,3975.82,3894.21,3922.64,340030000,3922.64 +1994-02-16,3928.27,3964.85,3906.32,3937.27,295450000,3937.27 +1994-02-15,3904.06,3950.50,3891.40,3928.27,306790000,3928.27 +1994-02-14,3894.78,3935.86,3873.67,3904.06,263190000,3904.06 +1994-02-11,3895.34,3920.95,3855.94,3894.78,213740000,3894.78 +1994-02-10,3931.92,3953.59,3882.96,3895.34,327250000,3895.34 +1994-02-09,3906.03,3956.97,3887.74,3931.92,332670000,3931.92 +1994-02-08,3906.32,3951.34,3873.67,3906.03,318180000,3906.03 +1994-02-07,3871.42,3923.48,3840.75,3906.32,348270000,3906.32 +1994-02-04,3967.66,3979.76,3857.63,3871.42,378380000,3871.42 +1994-02-03,3975.54,3995.52,3932.77,3967.66,318350000,3967.66 +1994-02-02,3964.01,3997.78,3937.27,3975.54,328960000,3975.54 +1994-02-01,3978.36,3998.06,3938.12,3964.01,322510000,3964.01 +1994-01-31,3945.43,4002.84,3937.27,3978.36,322870000,3978.36 +1994-01-28,3926.30,3971.89,3919.54,3945.43,313140000,3945.43 +1994-01-27,3908.00,3951.34,3876.77,3926.30,346500000,3926.30 +1994-01-26,3895.34,3934.74,3863.82,3908.00,304660000,3908.00 +1994-01-25,3912.79,3937.55,3863.82,3895.34,326120000,3895.34 +1994-01-24,3914.48,3947.68,3882.11,3912.79,296900000,3912.79 +1994-01-21,3891.96,3933.33,3875.36,3914.48,346220000,3914.48 +1994-01-20,3884.37,3915.60,3857.91,3891.96,310450000,3891.96 +1994-01-19,3870.29,3909.97,3839.34,3884.37,311370000,3884.37 +1994-01-18,3870.29,3905.19,3840.75,3870.29,309730000,3870.29 +1994-01-17,3867.20,3896.75,3833.71,3870.29,233980000,3870.29 +1994-01-14,3842.43,3891.96,3830.62,3867.20,304910000,3867.20 +1994-01-13,3848.63,3864.67,3808.38,3842.43,277970000,3842.43 +1994-01-12,3850.31,3876.49,3809.79,3848.63,310690000,3848.63 +1994-01-11,3865.51,3885.21,3823.02,3850.31,305490000,3850.31 +1994-01-10,3820.77,3874.52,3804.72,3865.51,319490000,3865.51 +1994-01-07,3803.88,3842.15,3778.83,3820.77,324920000,3820.77 +1994-01-06,3798.82,3843.84,3771.52,3803.88,367880000,3803.88 +1994-01-05,3783.90,3821.33,3750.41,3798.82,400030000,3798.82 +1994-01-04,3756.60,3798.25,3718.89,3783.90,326600000,3783.90 +1994-01-03,3754.09,3790.70,3715.24,3756.60,270140000,3756.60 +1993-12-31,3775.88,3804.11,3745.15,3754.09,168590000,3754.09 +1993-12-30,3794.33,3806.34,3759.96,3775.88,195860000,3775.88 +1993-12-29,3793.77,3818.92,3764.43,3794.33,269570000,3794.33 +1993-12-28,3792.93,3813.33,3766.10,3793.77,200960000,3793.77 +1993-12-27,3757.72,3804.95,3750.46,3792.93,171200000,3792.93 +1993-12-23,3762.19,3791.81,3739.56,3757.72,227240000,3757.72 +1993-12-22,3745.15,3780.64,3725.86,3762.19,272440000,3762.19 +1993-12-21,3755.21,3774.77,3719.72,3745.15,273370000,3745.15 +1993-12-20,3751.57,3777.84,3728.66,3755.21,255900000,3755.21 +1993-12-17,3726.14,3768.90,3706.30,3751.57,363750000,3751.57 +1993-12-16,3716.92,3756.60,3694.29,3726.14,284620000,3726.14 +1993-12-15,3742.63,3776.44,3689.82,3716.92,331770000,3716.92 +1993-12-14,3764.43,3785.94,3726.70,3742.63,275050000,3742.63 +1993-12-13,3740.67,3780.64,3711.33,3764.43,256580000,3764.43 +1993-12-10,3729.78,3758.84,3704.91,3740.67,245620000,3740.67 +1993-12-09,3734.53,3764.43,3709.94,3729.78,287570000,3729.78 +1993-12-08,3718.88,3756.60,3693.73,3734.53,314460000,3734.53 +1993-12-07,3710.21,3746.82,3689.26,3718.88,285690000,3718.88 +1993-12-06,3704.07,3738.44,3687.30,3710.21,292370000,3710.21 +1993-12-03,3702.11,3726.98,3677.80,3704.07,268780000,3704.07 +1993-12-02,3697.08,3725.30,3674.17,3702.11,256370000,3702.11 +1993-12-01,3683.95,3731.73,3673.33,3697.08,293870000,3697.08 +1993-11-30,3677.80,3713.57,3654.88,3683.95,290250000,3683.95 +1993-11-29,3683.95,3721.67,3654.33,3677.80,272710000,3677.80 +1993-11-26,3687.58,3703.23,3660.75,3683.95,90220000,3683.95 +1993-11-24,3674.17,3709.94,3654.33,3687.58,230630000,3687.58 +1993-11-23,3670.25,3702.67,3649.57,3674.17,261590000,3674.17 +1993-11-22,3694.01,3697.92,3627.78,3670.25,280130000,3670.25 +1993-11-19,3685.34,3711.05,3640.07,3694.01,302970000,3694.01 +1993-11-18,3704.35,3721.95,3649.57,3685.34,313480000,3685.34 +1993-11-17,3710.77,3749.90,3660.19,3704.35,319560000,3704.35 +1993-11-16,3677.52,3723.91,3653.77,3710.77,303980000,3710.77 +1993-11-15,3684.51,3705.74,3653.49,3677.52,251030000,3677.52 +1993-11-12,3662.43,3707.42,3648.74,3684.51,326240000,3684.51 +1993-11-11,3663.55,3700.43,3638.40,3662.43,287110000,3662.43 +1993-11-10,3640.07,3683.39,3616.60,3663.55,283450000,3663.55 +1993-11-09,3647.90,3689.82,3623.03,3640.07,278290000,3640.07 +1993-11-08,3643.43,3674.17,3621.91,3647.90,232340000,3647.90 +1993-11-05,3624.98,3663.83,3585.86,3643.43,336900000,3643.43 +1993-11-04,3661.87,3681.99,3609.61,3624.98,323430000,3624.98 +1993-11-03,3697.64,3714.69,3638.40,3661.87,342110000,3661.87 +1993-11-02,3692.61,3724.75,3656.00,3697.64,304780000,3697.64 +1993-11-01,3680.59,3708.26,3656.84,3692.61,256030000,3692.61 +1993-10-29,3687.86,3712.45,3656.84,3680.59,270570000,3680.59 +1993-10-28,3664.66,3713.57,3657.96,3687.86,301220000,3687.86 +1993-10-27,3672.49,3692.33,3634.76,3664.66,279830000,3664.66 +1993-10-26,3673.61,3701.55,3636.16,3672.49,284530000,3672.49 +1993-10-25,3649.30,3694.01,3618.28,3673.61,260310000,3673.61 +1993-10-22,3636.16,3697.92,3612.13,3649.30,301440000,3649.30 +1993-10-21,3645.10,3678.36,3610.45,3636.16,288820000,3636.16 +1993-10-20,3635.32,3667.74,3611.85,3645.10,305670000,3645.10 +1993-10-19,3642.31,3669.97,3601.79,3635.32,304400000,3635.32 +1993-10-18,3629.73,3675.84,3595.92,3642.31,329570000,3642.31 +1993-10-15,3621.63,3664.66,3596.20,3629.73,366110000,3629.73 +1993-10-14,3603.19,3652.09,3574.40,3621.63,353820000,3621.63 +1993-10-13,3593.13,3628.34,3574.12,3603.19,290930000,3603.19 +1993-10-12,3593.41,3619.39,3575.24,3593.13,263970000,3593.13 +1993-10-11,3584.74,3611.01,3565.46,3593.41,183190000,3593.41 +1993-10-08,3583.63,3610.45,3550.37,3584.74,243590000,3584.74 +1993-10-07,3598.99,3616.32,3564.90,3583.63,255210000,3583.63 +1993-10-06,3587.26,3620.79,3570.21,3598.99,277070000,3598.99 +1993-10-05,3577.76,3616.88,3553.72,3587.26,294570000,3587.26 +1993-10-04,3581.11,3603.19,3550.65,3577.76,229380000,3577.76 +1993-10-01,3555.12,3605.14,3541.71,3581.11,256870000,3581.11 +1993-09-30,3566.30,3583.63,3528.57,3555.12,282740000,3555.12 +1993-09-29,3566.02,3596.48,3538.91,3566.30,277690000,3566.30 +1993-09-28,3567.70,3589.49,3542.27,3566.02,243320000,3566.02 +1993-09-27,3543.11,3589.49,3539.47,3567.70,244920000,3567.70 +1993-09-24,3539.75,3568.54,3507.90,3543.11,248270000,3543.11 +1993-09-23,3547.02,3567.70,3513.48,3539.75,276660000,3539.75 +1993-09-22,3537.24,3577.20,3516.56,3547.02,288960000,3547.02 +1993-09-21,3575.80,3592.57,3501.47,3537.24,301740000,3537.24 +1993-09-20,3613.25,3632.81,3567.98,3575.80,228040000,3575.80 +1993-09-17,3630.85,3637.28,3580.83,3613.25,369600000,3613.25 +1993-09-16,3633.65,3651.25,3601.79,3630.85,229700000,3630.85 +1993-09-15,3615.76,3644.82,3573.84,3633.65,294410000,3633.65 +1993-09-14,3634.21,3639.51,3590.61,3615.76,258620000,3615.76 +1993-09-13,3621.63,3655.16,3607.66,3634.21,244970000,3634.21 +1993-09-10,3589.49,3636.16,3576.64,3621.63,269950000,3621.63 +1993-09-09,3588.93,3616.04,3556.52,3589.49,258070000,3589.49 +1993-09-08,3607.10,3623.31,3561.27,3588.93,283100000,3588.93 +1993-09-07,3633.93,3649.02,3592.57,3607.10,229500000,3607.10 +1993-09-03,3626.10,3651.53,3603.75,3633.93,197160000,3633.93 +1993-09-02,3645.10,3660.19,3610.17,3626.10,259870000,3626.10 +1993-09-01,3651.25,3665.50,3619.67,3645.10,245040000,3645.10 +1993-08-31,3643.99,3662.99,3619.67,3651.25,252830000,3651.25 +1993-08-30,3640.63,3667.46,3621.63,3643.99,194180000,3643.99 +1993-08-27,3648.18,3656.28,3606.54,3640.63,196140000,3640.63 +1993-08-26,3652.09,3681.71,3620.23,3648.18,247800000,3648.18 +1993-08-25,3638.96,3674.17,3620.51,3652.09,301640000,3652.09 +1993-08-24,3605.98,3648.18,3590.89,3638.96,270700000,3638.96 +1993-08-23,3615.48,3630.57,3578.87,3605.98,212500000,3605.98 +1993-08-20,3612.13,3633.37,3580.55,3615.48,276800000,3615.48 +1993-08-19,3604.86,3632.25,3581.11,3612.13,293330000,3612.13 +1993-08-18,3586.98,3638.96,3577.48,3604.86,312940000,3604.86 +1993-08-17,3579.15,3611.29,3554.00,3586.98,261320000,3586.98 +1993-08-16,3569.65,3606.54,3547.86,3579.15,229190000,3579.15 +1993-08-13,3569.09,3594.52,3547.58,3569.65,214370000,3569.65 +1993-08-12,3583.35,3607.66,3537.24,3569.09,278530000,3569.09 +1993-08-11,3572.73,3607.94,3550.93,3583.35,268330000,3583.35 +1993-08-10,3576.08,3599.83,3547.02,3572.73,255520000,3572.73 +1993-08-09,3560.43,3599.83,3541.15,3576.08,232750000,3576.08 +1993-08-06,3548.97,3583.35,3536.12,3560.43,221150000,3560.43 +1993-08-05,3552.05,3574.12,3523.54,3548.97,249650000,3548.97 +1993-08-04,3561.27,3579.99,3530.25,3552.05,230040000,3552.05 +1993-08-03,3560.99,3588.10,3530.81,3561.27,254540000,3561.27 +1993-08-02,3539.47,3578.32,3524.94,3560.99,230380000,3560.99 +1993-07-30,3567.42,3581.11,3515.72,3539.47,254420000,3539.47 +1993-07-29,3553.45,3593.41,3531.37,3567.42,261240000,3567.42 +1993-07-28,3565.46,3588.38,3524.38,3553.45,270530000,3553.45 +1993-07-27,3567.70,3604.86,3533.60,3565.46,256750000,3565.46 +1993-07-26,3546.74,3584.74,3541.43,3567.70,223280000,3567.70 +1993-07-23,3525.22,3569.37,3508.17,3546.74,222170000,3546.74 +1993-07-22,3555.40,3566.86,3514.32,3525.22,249630000,3525.22 +1993-07-21,3544.78,3573.84,3516.84,3555.40,278590000,3555.40 +1993-07-20,3535.28,3567.98,3500.63,3544.78,275130000,3544.78 +1993-07-19,3528.29,3563.23,3502.87,3535.28,216370000,3535.28 +1993-07-16,3550.93,3571.61,3505.94,3528.29,263100000,3528.29 +1993-07-15,3542.55,3573.01,3509.85,3550.93,277810000,3550.93 +1993-07-14,3515.44,3562.39,3507.34,3542.55,285890000,3542.55 +1993-07-13,3524.38,3544.22,3491.13,3515.44,236720000,3515.44 +1993-07-12,3521.06,3545.97,3495.04,3524.38,202310000,3524.38 +1993-07-09,3514.42,3544.03,3490.89,3521.06,235210000,3521.06 +1993-07-08,3475.67,3532.41,3462.38,3514.42,282910000,3514.42 +1993-07-07,3449.93,3495.32,3443.28,3475.67,253170000,3475.67 +1993-07-06,3483.97,3502.52,3443.28,3449.93,233420000,3449.93 +1993-07-02,3510.54,3511.65,3468.47,3483.97,220750000,3483.97 +1993-07-01,3516.08,3542.10,3487.29,3510.54,292040000,3510.54 +1993-06-30,3518.85,3543.48,3493.11,3516.08,281120000,3516.08 +1993-06-29,3530.20,3544.87,3491.44,3518.85,276310000,3518.85 +1993-06-28,3490.89,3542.10,3486.74,3530.20,242090000,3530.20 +1993-06-25,3490.61,3512.76,3473.18,3490.89,210430000,3490.89 +1993-06-24,3466.81,3504.73,3449.10,3490.61,267450000,3490.61 +1993-06-23,3497.53,3514.14,3445.77,3466.81,278260000,3466.81 +1993-06-22,3510.82,3530.47,3474.28,3497.53,259530000,3497.53 +1993-06-21,3494.77,3531.86,3477.05,3510.82,223650000,3510.82 +1993-06-18,3521.89,3539.88,3478.44,3494.77,300500000,3494.77 +1993-06-17,3511.65,3539.61,3488.68,3521.89,239810000,3521.89 +1993-06-16,3492.00,3527.43,3460.17,3511.65,264500000,3511.65 +1993-06-15,3514.69,3531.86,3471.24,3492.00,234110000,3492.00 +1993-06-14,3505.01,3538.22,3486.74,3514.69,210440000,3514.69 +1993-06-11,3491.72,3536.01,3479.27,3505.01,255200000,3505.01 +1993-06-10,3511.93,3538.22,3461.83,3491.72,231760000,3491.72 +1993-06-09,3510.54,3541.54,3490.89,3511.93,249030000,3511.93 +1993-06-08,3532.13,3543.48,3494.21,3510.54,238170000,3510.54 +1993-06-07,3545.14,3570.33,3510.82,3532.13,236930000,3532.13 +1993-06-04,3544.87,3563.13,3516.63,3545.14,226440000,3545.14 +1993-06-03,3553.45,3569.50,3516.08,3544.87,285770000,3544.87 +1993-06-02,3552.34,3576.14,3530.47,3553.45,287120000,3553.45 +1993-06-01,3527.43,3577.25,3518.02,3552.34,229690000,3552.34 +1993-05-28,3554.83,3563.41,3503.62,3527.43,207820000,3527.43 +1993-05-27,3540.16,3582.23,3523.28,3554.83,300810000,3554.83 +1993-05-26,3516.63,3558.98,3498.64,3540.16,274230000,3540.16 +1993-05-25,3507.78,3534.35,3486.46,3516.63,222090000,3516.63 +1993-05-24,3492.83,3526.60,3472.35,3507.78,197990000,3507.78 +1993-05-21,3523.28,3532.96,3468.47,3492.83,279120000,3492.83 +1993-05-20,3500.03,3539.88,3475.39,3523.28,289160000,3523.28 +1993-05-19,3444.39,3511.10,3405.09,3500.03,342420000,3500.03 +1993-05-18,3449.93,3468.47,3409.79,3444.39,264300000,3444.39 +1993-05-17,3443.01,3465.98,3421.42,3449.93,227580000,3449.93 +1993-05-14,3447.99,3472.62,3421.14,3443.01,252910000,3443.01 +1993-05-13,3482.31,3486.74,3428.89,3447.99,289860000,3447.99 +1993-05-12,3468.75,3501.69,3441.07,3482.31,255680000,3482.31 +1993-05-11,3443.28,3481.76,3421.42,3468.75,218480000,3468.75 +1993-05-10,3437.19,3485.36,3420.31,3443.28,235580000,3443.28 +1993-05-07,3441.90,3468.47,3413.67,3437.19,223570000,3437.19 +1993-05-06,3449.10,3475.67,3418.93,3441.90,255460000,3441.90 +1993-05-05,3446.19,3478.44,3420.86,3449.10,270960000,3449.10 +1993-05-04,3446.46,3477.26,3424.04,3446.19,268310000,3446.19 +1993-05-03,3427.55,3462.94,3402.42,3446.46,220860000,3446.46 +1993-04-30,3425.12,3466.18,3405.39,3427.55,247460000,3427.55 +1993-04-29,3413.50,3444.57,3377.57,3425.12,249760000,3425.12 +1993-04-28,3415.93,3445.65,3372.16,3413.50,267980000,3413.50 +1993-04-27,3398.37,3433.76,3364.06,3415.93,284140000,3415.93 +1993-04-26,3413.77,3442.14,3369.46,3398.37,281180000,3398.37 +1993-04-23,3429.17,3448.08,3385.67,3413.77,259810000,3413.77 +1993-04-22,3439.44,3488.33,3399.99,3429.17,310390000,3429.17 +1993-04-21,3443.49,3480.77,3401.34,3439.44,287300000,3439.44 +1993-04-20,3466.99,3486.71,3400.26,3443.49,317990000,3443.49 +1993-04-19,3478.61,3499.41,3436.73,3466.99,244710000,3466.99 +1993-04-16,3455.92,3498.60,3437.54,3478.61,305160000,3478.61 +1993-04-15,3455.64,3484.28,3419.17,3455.92,259500000,3455.92 +1993-04-14,3444.03,3482.93,3424.85,3455.64,257340000,3455.64 +1993-04-13,3428.09,3469.42,3408.37,3444.03,286690000,3444.03 +1993-04-12,3396.48,3452.67,3391.08,3428.09,259610000,3428.09 +1993-04-08,3397.02,3429.44,3357.58,3396.48,282470000,3396.48 +1993-04-07,3377.57,3417.55,3355.41,3397.02,296290000,3397.02 +1993-04-06,3379.19,3417.55,3339.75,3377.57,289640000,3377.57 +1993-04-05,3370.81,3411.61,3338.39,3379.19,238630000,3379.19 +1993-04-02,3439.44,3439.44,3344.88,3370.81,323330000,3370.81 +1993-04-01,3435.11,3466.45,3419.98,3439.44,231950000,3439.44 +1993-03-31,3457.27,3484.82,3424.85,3435.11,275710000,3435.11 +1993-03-30,3455.10,3481.58,3422.14,3457.27,233330000,3457.27 +1993-03-29,3439.98,3487.52,3431.87,3455.10,199890000,3455.10 +1993-03-26,3461.32,3484.28,3428.63,3439.98,219130000,3439.98 +1993-03-25,3445.38,3485.36,3429.44,3461.32,250040000,3461.32 +1993-03-24,3461.86,3489.14,3417.55,3445.38,271980000,3445.38 +1993-03-23,3463.48,3488.60,3438.08,3461.86,231900000,3461.86 +1993-03-22,3471.58,3483.20,3429.71,3463.48,231900000,3463.48 +1993-03-19,3465.64,3493.20,3446.46,3471.58,295510000,3471.58 +1993-03-18,3427.01,3486.17,3427.01,3465.64,240490000,3465.64 +1993-03-17,3442.95,3458.35,3408.91,3426.74,237850000,3426.74 +1993-03-16,3442.41,3466.72,3423.77,3442.95,217730000,3442.95 +1993-03-15,3427.82,3460.51,3412.96,3442.41,192690000,3442.41 +1993-03-12,3447.81,3447.81,3385.40,3427.82,244740000,3427.82 +1993-03-11,3478.34,3493.74,3437.27,3457.00,250720000,3457.00 +1993-03-10,3472.12,3497.25,3432.68,3478.34,255190000,3478.34 +1993-03-09,3469.42,3495.63,3443.76,3472.12,290120000,3472.12 +1993-03-08,3404.58,3476.99,3401.34,3469.42,274560000,3469.42 +1993-03-05,3398.91,3447.81,3373.25,3404.58,247130000,3404.58 +1993-03-04,3404.04,3423.77,3372.43,3398.91,230780000,3398.91 +1993-03-03,3400.53,3437.00,3368.92,3404.04,272290000,3404.04 +1993-03-02,3355.41,3406.21,3334.07,3400.53,269640000,3400.53 +1993-03-01,3370.81,3404.58,3336.23,3355.41,232090000,3355.41 +1993-02-26,3365.14,3396.21,3336.23,3370.81,234160000,3370.81 +1993-02-25,3356.50,3387.02,3326.78,3365.14,252790000,3365.14 +1993-02-24,3323.27,3371.89,3311.92,3356.50,298940000,3356.50 +1993-02-23,3342.99,3373.52,3296.79,3323.27,321050000,3323.27 +1993-02-22,3322.18,3367.30,3297.06,3342.99,311510000,3342.99 +1993-02-19,3302.19,3347.04,3270.04,3322.18,307960000,3322.18 +1993-02-18,3312.19,3362.98,3262.48,3302.19,309570000,3302.19 +1993-02-17,3309.49,3338.12,3273.56,3312.19,287240000,3312.19 +1993-02-16,3391.62,3391.62,3285.98,3309.49,325350000,3309.49 +1993-02-12,3422.69,3436.19,3378.11,3392.43,215750000,3392.43 +1993-02-11,3412.42,3455.64,3395.94,3422.69,252780000,3422.69 +1993-02-10,3414.58,3438.08,3379.19,3412.42,248480000,3412.42 +1993-02-09,3437.54,3449.16,3394.86,3414.58,233670000,3414.58 +1993-02-08,3442.14,3472.94,3408.91,3437.54,240350000,3437.54 +1993-02-05,3416.74,3463.21,3391.62,3442.14,320960000,3442.14 +1993-02-04,3373.79,3441.33,3367.03,3416.74,346480000,3416.74 +1993-02-03,3328.67,3397.83,3322.73,3373.79,342530000,3373.79 +1993-02-02,3332.18,3355.68,3300.30,3328.67,269250000,3328.67 +1993-02-01,3310.03,3343.80,3300.30,3332.18,238260000,3332.18 +1993-01-29,3306.25,3331.10,3287.06,3310.03,247010000,3310.03 +1993-01-28,3291.39,3327.86,3270.58,3306.25,255550000,3306.25 +1993-01-27,3298.95,3318.67,3260.05,3291.39,276880000,3291.39 +1993-01-26,3292.20,3331.91,3272.47,3298.95,311450000,3298.95 +1993-01-25,3256.81,3324.89,3243.84,3292.20,288010000,3292.20 +1993-01-22,3253.02,3292.74,3225.74,3256.81,293250000,3256.81 +1993-01-21,3241.95,3269.77,3219.25,3253.02,257350000,3253.02 +1993-01-20,3255.99,3278.96,3231.41,3241.95,267740000,3241.95 +1993-01-19,3274.91,3299.49,3239.52,3255.99,283110000,3255.99 +1993-01-18,3271.12,3296.52,3244.65,3274.91,195980000,3274.91 +1993-01-15,3267.88,3300.03,3238.70,3271.12,306140000,3271.12 +1993-01-14,3263.56,3297.06,3230.87,3267.88,280020000,3267.88 +1993-01-13,3264.64,3283.01,3225.47,3263.56,245020000,3263.56 +1993-01-12,3262.75,3287.06,3229.79,3264.64,239250000,3264.64 +1993-01-11,3251.67,3284.09,3228.98,3262.75,217150000,3262.75 +1993-01-08,3268.96,3280.31,3221.68,3251.67,262620000,3251.67 +1993-01-07,3305.16,3333.51,3250.30,3268.96,303140000,3268.96 +1993-01-06,3307.87,3330.29,3276.53,3305.16,282850000,3305.16 +1993-01-05,3309.22,3338.12,3279.23,3307.87,240550000,3307.87 +1993-01-04,3301.11,3335.69,3282.74,3309.22,199680000,3309.22 +1992-12-31,3321.10,3340.29,3294.36,3301.11,165910000,3301.11 +1992-12-30,3310.84,3340.54,3298.93,3321.10,183870000,3321.10 +1992-12-29,3333.26,3364.87,3295.71,3310.84,213660000,3310.84 +1992-12-28,3326.24,3352.17,3297.33,3333.26,143800000,3333.26 +1992-12-24,3313.54,3339.48,3303.27,3326.24,95240000,3326.24 +1992-12-23,3321.10,3350.55,3293.01,3313.54,227980000,3313.54 +1992-12-22,3312.46,3347.04,3286.52,3321.10,249670000,3321.10 +1992-12-21,3313.27,3335.15,3280.85,3312.46,224680000,3312.46 +1992-12-18,3269.23,3325.97,3261.94,3313.27,371080000,3313.27 +1992-12-17,3255.18,3289.22,3229.79,3269.23,248590000,3269.23 +1992-12-16,3284.36,3303.00,3238.70,3255.18,241910000,3255.18 +1992-12-15,3292.20,3313.27,3260.32,3284.36,225880000,3284.36 +1992-12-14,3304.08,3324.89,3279.50,3292.20,183510000,3292.20 +1992-12-11,3312.19,3324.89,3280.85,3304.08,164450000,3304.08 +1992-12-10,3323.81,3335.69,3285.17,3312.19,240570000,3312.19 +1992-12-09,3322.18,3345.42,3295.98,3323.81,229980000,3323.81 +1992-12-08,3307.33,3331.64,3288.41,3322.18,234300000,3322.18 +1992-12-07,3288.68,3320.56,3274.37,3307.33,217700000,3307.33 +1992-12-04,3276.53,3312.46,3261.40,3288.68,227410000,3288.68 +1992-12-03,3286.25,3302.73,3252.48,3276.53,238200000,3276.53 +1992-12-02,3294.36,3310.84,3265.18,3286.25,241860000,3286.25 +1992-12-01,3305.16,3321.64,3268.15,3294.36,259020000,3294.36 +1992-11-30,3282.20,3326.51,3270.31,3305.16,230190000,3305.16 +1992-11-27,3266.26,3304.62,3259.24,3282.20,106010000,3282.20 +1992-11-25,3248.70,3285.71,3243.57,3266.26,206700000,3266.26 +1992-11-24,3223.04,3277.88,3209.26,3248.70,241520000,3248.70 +1992-11-23,3227.36,3251.13,3196.83,3223.04,190490000,3223.04 +1992-11-20,3209.53,3249.78,3197.64,3227.36,256340000,3227.36 +1992-11-19,3207.37,3231.14,3190.35,3209.53,218700000,3209.53 +1992-11-18,3193.32,3227.09,3176.84,3207.37,218660000,3207.37 +1992-11-17,3205.74,3223.31,3178.19,3193.32,185460000,3193.32 +1992-11-16,3233.03,3241.41,3191.16,3205.74,173500000,3205.74 +1992-11-13,3239.79,3252.48,3211.69,3233.03,192320000,3233.03 +1992-11-12,3240.33,3264.91,3214.39,3239.79,224580000,3239.79 +1992-11-11,3225.47,3258.70,3203.31,3240.33,240160000,3240.33 +1992-11-10,3240.87,3268.15,3212.50,3225.47,221990000,3225.47 +1992-11-09,3240.06,3268.69,3220.33,3240.87,197490000,3240.87 +1992-11-06,3243.84,3264.64,3216.82,3240.06,204870000,3240.06 +1992-11-05,3223.04,3259.78,3203.58,3243.84,219580000,3243.84 +1992-11-04,3252.48,3274.10,3211.15,3223.04,193980000,3223.04 +1992-11-03,3262.21,3285.44,3226.82,3252.48,209740000,3252.48 +1992-11-02,3226.28,3274.64,3211.42,3262.21,201620000,3262.21 +1992-10-30,3246.27,3260.59,3208.45,3226.28,196740000,3226.28 +1992-10-29,3251.40,3268.96,3224.39,3246.27,206300000,3246.27 +1992-10-28,3235.73,3262.48,3210.34,3251.40,203040000,3251.40 +1992-10-27,3244.11,3270.31,3210.88,3235.73,201650000,3235.73 +1992-10-26,3207.64,3256.00,3190.08,3244.11,187950000,3244.11 +1992-10-23,3200.88,3233.57,3175.76,3207.64,197400000,3207.64 +1992-10-22,3187.10,3221.14,3162.79,3200.88,216080000,3200.88 +1992-10-21,3186.02,3211.69,3163.33,3187.10,218990000,3187.10 +1992-10-20,3188.45,3223.31,3166.30,3186.02,258220000,3186.02 +1992-10-19,3174.41,3211.15,3154.14,3188.45,218670000,3188.45 +1992-10-16,3174.68,3203.85,3123.89,3174.41,234480000,3174.41 +1992-10-15,3195.48,3207.37,3147.66,3174.68,206990000,3174.68 +1992-10-14,3201.42,3225.74,3167.11,3195.48,175440000,3195.48 +1992-10-13,3174.41,3222.77,3159.28,3201.42,184120000,3201.42 +1992-10-12,3140.10,3186.29,3140.10,3174.41,126590000,3174.41 +1992-10-09,3176.03,3176.57,3120.37,3136.58,178910000,3136.58 +1992-10-08,3152.25,3195.48,3135.77,3176.03,203780000,3176.03 +1992-10-07,3178.19,3200.88,3136.85,3152.25,183100000,3152.25 +1992-10-06,3179.00,3205.20,3147.93,3178.19,196660000,3178.19 +1992-10-05,3197.10,3197.10,3087.41,3179.00,284380000,3179.00 +1992-10-02,3254.37,3259.51,3193.59,3200.61,187400000,3200.61 +1992-10-01,3271.66,3291.39,3237.35,3254.37,203670000,3254.37 +1992-09-30,3266.80,3291.66,3247.89,3271.66,184220000,3271.66 +1992-09-29,3276.26,3295.98,3247.08,3266.80,170350000,3266.80 +1992-09-28,3250.32,3283.01,3226.55,3276.26,157480000,3276.26 +1992-09-25,3287.87,3292.20,3226.82,3250.32,213650000,3250.32 +1992-09-24,3278.69,3310.84,3267.07,3287.87,187770000,3287.87 +1992-09-23,3280.85,3302.19,3252.48,3278.69,204350000,3278.69 +1992-09-22,3320.83,3327.05,3270.58,3280.85,186990000,3280.85 +1992-09-21,3327.05,3341.91,3295.71,3320.83,153900000,3320.83 +1992-09-18,3315.70,3340.56,3297.87,3327.05,236080000,3327.05 +1992-09-17,3319.21,3347.04,3292.20,3315.70,188270000,3315.70 +1992-09-16,3327.32,3353.52,3288.95,3319.21,229380000,3319.21 +1992-09-15,3372.98,3372.98,3317.86,3327.32,200220000,3327.32 +1992-09-14,3326.51,3391.35,3326.51,3376.22,250900000,3376.22 +1992-09-11,3305.16,3327.32,3285.44,3305.70,180640000,3305.70 +1992-09-10,3271.39,3318.94,3261.67,3305.16,221970000,3305.16 +1992-09-09,3260.59,3284.09,3244.92,3271.39,172890000,3271.39 +1992-09-08,3281.93,3292.20,3245.73,3260.59,160930000,3260.59 +1992-09-04,3292.20,3306.23,3265.16,3281.93,124340000,3281.93 +1992-09-03,3290.31,3325.95,3268.94,3292.20,212540000,3292.20 +1992-09-02,3266.26,3301.90,3249.76,3290.31,187010000,3290.31 +1992-09-01,3257.35,3279.21,3239.77,3266.26,172650000,3266.26 +1992-08-31,3267.61,3287.04,3244.90,3257.35,160230000,3257.35 +1992-08-28,3254.64,3280.56,3237.88,3267.61,152230000,3267.61 +1992-08-27,3246.81,3285.69,3237.06,3254.64,178490000,3254.64 +1992-08-26,3232.22,3261.38,3217.07,3246.81,171840000,3246.81 +1992-08-25,3228.17,3253.00,3200.86,3232.22,201630000,3232.22 +1992-08-24,3254.09,3258.41,3207.08,3228.17,165130000,3228.17 +1992-08-21,3304.89,3330.27,3243.55,3254.09,202640000,3254.09 +1992-08-20,3307.06,3326.22,3285.69,3304.89,183390000,3304.89 +1992-08-19,3329.48,3347.56,3302.44,3307.06,186710000,3307.06 +1992-08-18,3324.89,3343.80,3309.22,3329.48,169880000,3329.48 +1992-08-17,3328.94,3350.28,3310.03,3324.89,152750000,3324.89 +1992-08-14,3313.27,3342.16,3300.82,3328.94,166180000,3328.94 +1992-08-13,3320.83,3347.29,3294.07,3313.27,185700000,3313.27 +1992-08-12,3331.10,3349.72,3304.88,3320.83,176440000,3320.83 +1992-08-11,3337.58,3356.48,3304.34,3331.10,173810000,3331.10 +1992-08-10,3332.18,3350.26,3305.14,3337.58,142440000,3337.58 +1992-08-07,3340.56,3378.38,3318.40,3332.18,188340000,3332.18 +1992-08-06,3365.14,3374.33,3327.05,3340.56,181390000,3340.56 +1992-08-05,3384.32,3391.35,3347.58,3365.14,172410000,3365.14 +1992-08-04,3395.40,3405.12,3367.03,3384.32,166740000,3384.32 +1992-08-03,3393.78,3413.23,3365.14,3395.40,164360000,3395.40 +1992-07-31,3391.89,3414.85,3371.89,3393.78,172920000,3393.78 +1992-07-30,3379.19,3409.16,3351.07,3391.89,193280000,3391.89 +1992-07-29,3345.13,3399.70,3345.13,3379.19,275760000,3379.19 +1992-07-28,3282.20,3345.67,3277.59,3334.07,217950000,3334.07 +1992-07-27,3285.71,3311.38,3265.99,3282.20,164680000,3282.20 +1992-07-24,3290.04,3305.68,3261.94,3285.71,163870000,3285.71 +1992-07-23,3277.61,3308.39,3255.43,3290.04,175460000,3290.04 +1992-07-22,3308.41,3310.28,3262.19,3277.61,190130000,3277.61 +1992-07-21,3303.00,3335.94,3292.45,3308.41,173800000,3308.41 +1992-07-20,3318.38,3318.38,3271.11,3303.00,165730000,3303.00 +1992-07-17,3359.74,3359.74,3308.14,3331.64,187520000,3331.64 +1992-07-16,3345.42,3375.66,3318.65,3361.63,206040000,3361.63 +1992-07-15,3358.39,3381.87,3319.73,3345.42,206550000,3345.42 +1992-07-14,3337.31,3371.88,3315.95,3358.39,195310000,3358.39 +1992-07-13,3330.56,3357.55,3315.41,3337.31,148820000,3337.31 +1992-07-10,3324.08,3355.93,3304.88,3330.56,164750000,3330.56 +1992-07-09,3293.28,3345.40,3292.45,3324.08,207970000,3324.08 +1992-07-08,3295.17,3322.98,3258.70,3293.28,200020000,3293.28 +1992-07-07,3339.21,3360.80,3285.69,3295.17,218740000,3295.17 +1992-07-06,3330.29,3367.57,3295.96,3339.21,186410000,3339.21 +1992-07-02,3354.10,3385.43,3303.30,3330.29,220130000,3330.29 +1992-07-01,3318.52,3366.43,3305.45,3354.10,214240000,3354.10 +1992-06-30,3319.86,3347.71,3295.01,3318.52,195520000,3318.52 +1992-06-29,3282.41,3330.32,3278.16,3319.86,176710000,3319.86 +1992-06-26,3284.01,3303.04,3254.89,3282.41,154430000,3282.41 +1992-06-25,3290.70,3319.62,3261.31,3284.01,182310000,3284.01 +1992-06-24,3285.62,3317.75,3262.11,3290.70,193850000,3290.70 +1992-06-23,3280.80,3312.13,3263.45,3285.62,189170000,3285.62 +1992-06-22,3285.35,3298.22,3242.32,3280.80,169340000,3280.80 +1992-06-19,3274.12,3313.20,3264.79,3285.35,233440000,3285.35 +1992-06-18,3287.76,3313.74,3245.53,3274.12,215080000,3274.12 +1992-06-17,3329.49,3347.98,3271.21,3287.76,227650000,3287.76 +1992-06-16,3354.90,3379.01,3321.76,3329.49,178850000,3329.49 +1992-06-15,3354.36,3371.79,3327.11,3354.90,159100000,3354.90 +1992-06-12,3351.51,3397.68,3339.62,3354.36,181830000,3354.36 +1992-06-11,3343.22,3374.61,3301.51,3351.51,192940000,3351.51 +1992-06-10,3369.92,3385.76,3328.99,3343.22,206380000,3343.22 +1992-06-09,3404.14,3412.98,3350.25,3369.92,190780000,3369.92 +1992-06-08,3398.69,3422.83,3370.21,3404.14,161130000,3404.14 +1992-06-05,3399.73,3424.64,3356.98,3398.69,199050000,3398.69 +1992-06-04,3406.99,3428.02,3376.43,3399.73,204360000,3399.73 +1992-06-03,3396.10,3431.13,3378.76,3406.99,215730000,3406.99 +1992-06-02,3413.21,3435.27,3380.84,3396.10,200660000,3396.10 +1992-06-01,3396.88,3424.39,3365.02,3413.21,180780000,3413.21 +1992-05-29,3398.43,3433.98,3384.20,3396.88,202730000,3396.88 +1992-05-28,3370.44,3408.31,3354.91,3398.43,195230000,3398.43 +1992-05-27,3364.21,3396.65,3337.29,3370.44,179980000,3370.44 +1992-05-26,3386.77,3410.91,3338.84,3364.21,196950000,3364.21 +1992-05-22,3378.71,3408.49,3364.08,3386.77,146640000,3386.77 +1992-05-21,3393.84,3402.88,3354.80,3378.71,182190000,3378.71 +1992-05-20,3397.99,3421.42,3376.04,3393.84,198170000,3393.84 +1992-05-19,3376.03,3413.37,3350.41,3397.99,187030000,3397.99 +1992-05-18,3353.09,3398.24,3349.93,3376.03,149830000,3376.03 +1992-05-15,3368.88,3380.30,3330.43,3353.09,192040000,3353.09 +1992-05-14,3391.98,3397.46,3347.59,3368.88,187700000,3368.88 +1992-05-13,3385.12,3414.17,3362.93,3391.98,171610000,3391.98 +1992-05-12,3397.58,3414.81,3361.51,3385.12,192810000,3385.12 +1992-05-11,3369.41,3410.11,3363.82,3397.58,155730000,3397.58 +1992-05-08,3363.37,3388.41,3344.59,3369.41,168670000,3369.41 +1992-05-07,3369.41,3390.65,3343.25,3363.37,168910000,3363.37 +1992-05-06,3359.35,3398.70,3346.60,3369.41,199070000,3369.41 +1992-05-05,3378.13,3393.78,3346.15,3359.35,198860000,3359.35 +1992-05-04,3340.79,3394.68,3340.79,3378.13,174520000,3378.13 +1992-05-01,3359.12,3375.67,3316.64,3336.09,177360000,3336.09 +1992-04-30,3333.18,3377.01,3314.40,3359.12,223160000,3359.12 +1992-04-29,3307.92,3353.75,3295.39,3333.18,199740000,3333.18 +1992-04-28,3304.56,3329.83,3273.03,3307.92,186740000,3307.92 +1992-04-27,3324.46,3340.79,3284.66,3304.56,172820000,3304.56 +1992-04-24,3348.61,3381.48,3305.23,3324.46,198740000,3324.46 +1992-04-23,3338.77,3376.34,3298.52,3348.61,235740000,3348.61 +1992-04-22,3343.25,3366.72,3309.48,3338.77,218790000,3338.77 +1992-04-21,3336.31,3366.50,3305.68,3343.25,214400000,3343.25 +1992-04-20,3366.50,3375.67,3300.98,3336.31,191910000,3336.31 +1992-04-16,3353.76,3387.97,3321.33,3366.50,232480000,3366.50 +1992-04-15,3306.13,3370.08,3296.51,3353.76,228400000,3353.76 +1992-04-14,3269.90,3336.54,3259.39,3306.13,232040000,3306.13 +1992-04-13,3255.37,3293.60,3230.77,3269.90,143100000,3269.90 +1992-04-10,3227.64,3280.86,3227.64,3255.37,199450000,3255.37 +1992-04-09,3181.35,3245.08,3171.06,3224.96,231330000,3224.96 +1992-04-08,3213.55,3221.38,3141.77,3181.35,249210000,3181.35 +1992-04-07,3275.49,3291.81,3207.51,3213.55,205110000,3213.55 +1992-04-06,3249.11,3295.84,3238.37,3275.49,179330000,3275.49 +1992-04-03,3234.12,3271.91,3201.92,3249.11,188530000,3249.11 +1992-04-02,3249.33,3277.06,3209.08,3234.12,185110000,3234.12 +1992-04-01,3235.47,3262.52,3202.37,3249.33,186260000,3249.33 +1992-03-31,3235.24,3272.81,3216.46,3235.47,182200000,3235.47 +1992-03-30,3231.44,3260.06,3215.79,3235.24,133980000,3235.24 +1992-03-27,3267.67,3272.58,3218.92,3231.44,166140000,3231.44 +1992-03-26,3259.39,3288.91,3245.08,3267.67,176690000,3267.67 +1992-03-25,3260.96,3290.47,3238.15,3259.39,192080000,3259.39 +1992-03-24,3272.14,3296.96,3242.84,3260.96,191580000,3260.96 +1992-03-23,3276.39,3288.68,3249.33,3272.14,156620000,3272.14 +1992-03-20,3261.40,3292.48,3240.83,3276.39,246170000,3276.39 +1992-03-19,3254.25,3286.22,3240.38,3261.40,197240000,3261.40 +1992-03-18,3256.04,3281.98,3230.10,3254.25,190800000,3254.25 +1992-03-17,3236.36,3272.58,3222.27,3256.04,187240000,3256.04 +1992-03-16,3235.91,3249.11,3201.25,3236.36,151280000,3236.36 +1992-03-13,3208.63,3252.23,3203.71,3235.91,176000000,3235.91 +1992-03-12,3208.63,3232.33,3176.21,3208.63,180240000,3208.63 +1992-03-11,3230.99,3242.17,3189.85,3208.63,185320000,3208.63 +1992-03-10,3215.12,3259.17,3207.29,3230.99,194530000,3230.99 +1992-03-09,3221.60,3242.62,3188.95,3215.12,160620000,3215.12 +1992-03-06,3241.50,3262.97,3204.61,3221.60,185040000,3221.60 +1992-03-05,3268.56,3283.54,3226.74,3241.50,205730000,3241.50 +1992-03-04,3290.25,3318.42,3256.04,3268.56,206770000,3268.56 +1992-03-03,3275.27,3313.28,3258.50,3290.25,200860000,3290.25 +1992-03-02,3267.67,3298.97,3242.39,3275.27,180380000,3275.27 +1992-02-28,3269.45,3304.11,3247.09,3267.67,202130000,3267.67 +1992-02-27,3283.32,3300.54,3251.79,3269.45,215050000,3269.45 +1992-02-26,3257.83,3305.01,3246.20,3283.32,240690000,3283.32 +1992-02-25,3282.42,3293.60,3226.74,3257.83,208400000,3257.83 +1992-02-24,3280.19,3305.01,3253.58,3282.42,177470000,3282.42 +1992-02-21,3280.64,3307.47,3242.17,3280.19,258700000,3280.19 +1992-02-20,3230.32,3304.34,3224.28,3280.64,270550000,3280.64 +1992-02-19,3224.73,3259.17,3199.02,3230.32,232900000,3230.32 +1992-02-18,3245.97,3280.19,3195.66,3224.73,234270000,3224.73 +1992-02-14,3246.65,3271.91,3208.63,3245.97,214840000,3245.97 +1992-02-13,3276.83,3296.73,3226.07,3246.65,229360000,3246.65 +1992-02-12,3251.57,3291.37,3233.68,3276.83,230230000,3276.83 +1992-02-11,3245.08,3277.28,3222.49,3251.57,200110000,3251.57 +1992-02-10,3225.40,3269.00,3208.85,3245.08,184390000,3245.08 +1992-02-07,3255.59,3283.09,3199.91,3225.40,230950000,3225.40 +1992-02-06,3257.60,3285.55,3224.95,3255.59,238210000,3255.59 +1992-02-05,3272.81,3299.87,3233.68,3257.60,261960000,3257.60 +1992-02-04,3234.12,3283.09,3208.63,3272.81,231530000,3272.81 +1992-02-03,3223.39,3261.40,3193.42,3234.12,182150000,3234.12 +1992-01-31,3244.86,3274.37,3207.96,3223.39,197060000,3223.39 +1992-01-30,3224.96,3269.68,3200.58,3244.86,194670000,3244.86 +1992-01-29,3272.14,3313.51,3204.16,3224.96,248900000,3224.96 +1992-01-28,3240.61,3298.30,3230.99,3272.14,217070000,3272.14 +1992-01-27,3232.78,3267.44,3216.23,3240.61,190430000,3240.61 +1992-01-24,3226.74,3264.31,3203.71,3232.78,213600000,3232.78 +1992-01-23,3255.81,3279.52,3205.95,3226.74,229680000,3226.74 +1992-01-22,3223.39,3272.80,3190.96,3255.81,225030000,3255.81 +1992-01-21,3254.03,3275.49,3194.09,3223.39,218650000,3223.39 +1992-01-20,3264.98,3283.32,3230.99,3254.03,180870000,3254.03 +1992-01-17,3249.55,3297.63,3224.28,3264.98,284560000,3264.98 +1992-01-16,3258.50,3289.13,3200.80,3249.55,333750000,3249.55 +1992-01-15,3246.20,3299.19,3207.73,3258.50,312400000,3258.50 +1992-01-14,3185.60,3255.81,3167.93,3246.20,264540000,3246.20 +1992-01-13,3199.46,3215.56,3161.67,3185.60,200270000,3185.60 +1992-01-10,3209.53,3235.91,3165.92,3199.46,236060000,3199.46 +1992-01-09,3203.94,3246.64,3173.75,3209.53,291780000,3209.53 +1992-01-08,3204.83,3245.53,3164.58,3203.94,289690000,3203.94 +1992-01-07,3200.13,3224.73,3165.25,3204.83,251280000,3204.83 +1992-01-06,3201.48,3230.32,3166.37,3200.13,241980000,3200.13 +1992-01-03,3172.41,3221.38,3156.30,3201.48,219170000,3201.48 +1992-01-02,3168.83,3184.70,3119.86,3172.41,203610000,3172.41 +1991-12-31,3163.91,3204.61,3121.20,3168.83,247670000,3168.83 +1991-12-30,3101.52,3174.64,3090.79,3163.91,245450000,3163.91 +1991-12-27,3082.96,3121.65,3063.73,3101.52,157940000,3101.52 +1991-12-26,3050.98,3101.97,3036.23,3082.96,149200000,3082.96 +1991-12-24,3022.58,3087.88,3015.65,3050.98,162300000,3050.98 +1991-12-23,2934.48,3037.57,2919.05,3022.58,228730000,3022.58 +1991-12-20,2914.36,2965.79,2907.65,2934.48,313810000,2934.48 +1991-12-19,2908.09,2927.10,2881.48,2914.36,199830000,2914.36 +1991-12-18,2902.28,2921.29,2870.30,2908.09,192350000,2908.09 +1991-12-17,2919.05,2936.27,2886.40,2902.28,191280000,2902.28 +1991-12-16,2914.36,2946.33,2900.49,2919.05,173010000,2919.05 +1991-12-13,2895.13,2936.72,2893.34,2914.36,195790000,2914.36 +1991-12-12,2865.38,2911.67,2861.14,2895.13,192930000,2895.13 +1991-12-11,2863.82,2889.53,2832.29,2865.38,207410000,2865.38 +1991-12-10,2871.65,2891.10,2841.23,2863.82,191800000,2863.82 +1991-12-09,2886.40,2913.46,2856.22,2871.65,174700000,2871.65 +1991-12-06,2889.09,2924.87,2854.65,2886.40,198170000,2886.40 +1991-12-05,2911.67,2923.75,2874.77,2889.09,165660000,2889.09 +1991-12-04,2929.56,2945.66,2892.22,2911.67,186380000,2911.67 +1991-12-03,2935.38,2958.18,2904.74,2929.56,187160000,2929.56 +1991-12-02,2894.68,2941.64,2855.32,2935.38,188050000,2935.38 +1991-11-29,2900.04,2913.46,2877.46,2894.68,77420000,2894.68 +1991-11-27,2916.14,2929.11,2883.72,2900.04,159790000,2900.04 +1991-11-26,2902.06,2942.31,2861.14,2916.14,213650000,2916.14 +1991-11-25,2902.73,2921.96,2870.30,2902.06,173520000,2902.06 +1991-11-22,2932.69,2940.30,2880.81,2902.73,188110000,2902.73 +1991-11-21,2930.01,2953.94,2902.28,2932.69,195060000,2932.69 +1991-11-20,2931.57,2973.61,2912.12,2930.01,192670000,2930.01 +1991-11-19,2960.20,2960.20,2883.72,2931.57,243880000,2931.57 +1991-11-18,2943.20,2990.61,2923.30,2972.72,238170000,2972.72 +1991-11-15,3063.51,3069.54,2936.05,2943.20,236000000,2943.20 +1991-11-14,3065.30,3084.97,3037.34,3063.51,200030000,3063.51 +1991-11-13,3054.11,3075.58,3023.70,3065.30,184080000,3065.30 +1991-11-12,3042.26,3078.71,3028.62,3054.11,198600000,3054.11 +1991-11-11,3045.62,3057.69,3025.27,3042.26,128910000,3042.26 +1991-11-08,3054.11,3080.95,3034.66,3045.62,183260000,3045.62 +1991-11-07,3038.46,3066.19,3020.35,3054.11,205440000,3054.11 +1991-11-06,3031.31,3056.57,3010.51,3038.46,167370000,3038.46 +1991-11-05,3045.62,3062.84,3015.88,3031.31,171950000,3031.31 +1991-11-04,3056.35,3061.27,3019.01,3045.62,155530000,3045.62 +1991-11-01,3069.10,3091.91,3031.75,3056.35,205750000,3056.35 +1991-10-31,3071.78,3091.01,3045.62,3069.10,179490000,3069.10 +1991-10-30,3061.94,3090.12,3038.24,3071.78,195340000,3071.78 +1991-10-29,3045.62,3077.82,3020.13,3061.94,192700000,3061.94 +1991-10-28,3004.92,3055.23,3001.57,3045.62,160220000,3045.62 +1991-10-25,3016.32,3034.44,2983.01,3004.92,167260000,3004.92 +1991-10-24,3040.92,3047.63,2991.73,3016.32,178990000,3016.32 +1991-10-23,3039.80,3065.52,3015.21,3040.92,185340000,3040.92 +1991-10-22,3060.38,3084.53,3020.57,3039.80,194120000,3039.80 +1991-10-21,3077.15,3085.20,3042.49,3060.38,153770000,3060.38 +1991-10-18,3053.00,3089.45,3045.62,3077.15,204030000,3077.15 +1991-10-17,3061.72,3077.15,3027.06,3053.00,202780000,3053.00 +1991-10-16,3041.37,3082.29,3016.10,3061.72,225290000,3061.72 +1991-10-15,3019.45,3057.69,3000.22,3041.37,213440000,3041.37 +1991-10-14,2983.68,3026.39,2975.85,3019.45,130110000,3019.45 +1991-10-11,2976.52,3000.89,2957.51,2983.68,146560000,2983.68 +1991-10-10,2946.33,2985.47,2930.23,2976.52,164120000,2976.52 +1991-10-09,2963.77,2984.79,2925.54,2946.33,186590000,2946.33 +1991-10-08,2942.75,2983.68,2927.77,2963.77,170000000,2963.77 +1991-10-07,2961.76,2973.17,2926.21,2942.75,148430000,2942.75 +1991-10-04,2984.79,3007.16,2956.17,2961.76,163930000,2961.76 +1991-10-03,3012.52,3021.24,2972.50,2984.79,174230000,2984.79 +1991-10-02,3018.34,3040.25,2992.40,3012.52,166290000,3012.52 +1991-10-01,3016.77,3043.60,3002.46,3018.34,163520000,3018.34 +1991-09-30,3006.04,3032.87,2982.78,3016.77,146740000,3016.77 +1991-09-27,3017.22,3040.70,2989.49,3006.04,160430000,3006.04 +1991-09-26,3021.02,3040.70,2996.87,3017.22,160190000,3017.22 +1991-09-25,3029.07,3048.52,3004.92,3021.02,153800000,3021.02 +1991-09-24,3010.51,3043.38,2995.97,3029.07,170300000,3029.07 +1991-09-23,3019.23,3037.79,2997.76,3010.51,145530000,3010.51 +1991-09-20,3024.37,3045.39,3002.46,3019.23,241340000,3019.23 +1991-09-19,3017.89,3050.76,3002.91,3024.37,210770000,3024.37 +1991-09-18,3013.19,3025.49,2993.52,3017.89,141280000,3017.89 +1991-09-17,3015.21,3036.00,2992.62,3013.19,168310000,3013.19 +1991-09-16,2985.69,3023.03,2973.61,3015.21,171960000,3015.21 +1991-09-13,3007.83,3021.47,2963.10,2985.69,167800000,2985.69 +1991-09-12,2987.03,3023.26,2977.64,3007.83,160310000,3007.83 +1991-09-11,2982.56,3004.70,2964.67,2987.03,147910000,2987.03 +1991-09-10,3007.16,3012.97,2967.80,2982.56,146730000,2982.56 +1991-09-09,3011.63,3025.49,2987.70,3007.16,109250000,3007.16 +1991-09-06,3008.50,3033.32,2987.48,3011.63,166410000,3011.63 +1991-09-05,3008.50,3031.98,2989.71,3008.50,162250000,3008.50 +1991-09-04,3017.67,3034.66,2990.83,3008.50,156770000,3008.50 +1991-09-03,3043.60,3066.64,3013.64,3017.67,153550000,3017.67 +1991-08-30,3049.64,3059.26,3024.82,3043.60,125830000,3043.60 +1991-08-29,3055.23,3068.65,3030.86,3049.64,150180000,3049.64 +1991-08-28,3026.16,3064.85,3018.11,3055.23,169590000,3055.23 +1991-08-27,3039.36,3047.41,3007.83,3026.16,143920000,3026.16 +1991-08-26,3040.25,3057.02,3020.80,3039.36,128400000,3039.36 +1991-08-23,3007.38,3065.97,2999.11,3040.25,187010000,3040.25 +1991-08-22,3001.79,3029.96,2989.94,3007.38,172900000,3007.38 +1991-08-21,2941.64,3009.17,2941.64,3001.79,231720000,3001.79 +1991-08-20,2898.03,2937.39,2886.85,2913.69,184090000,2913.69 +1991-08-19,2924.42,2924.42,2836.31,2898.03,229590000,2898.03 +1991-08-16,2998.43,3013.64,2945.89,2968.02,188360000,2968.02 +1991-08-15,3005.37,3029.96,2985.24,2998.43,174310000,2998.43 +1991-08-14,3008.72,3036.67,2988.60,3005.37,195890000,3005.37 +1991-08-13,3001.34,3041.14,2989.27,3008.72,211890000,3008.72 +1991-08-12,2996.20,3013.42,2974.06,3001.34,145280000,3001.34 +1991-08-09,3013.86,3036.45,2986.81,2996.20,143610000,2996.20 +1991-08-08,3026.61,3045.17,2995.30,3013.86,163620000,3013.86 +1991-08-07,3027.28,3050.54,3008.50,3026.61,170820000,3026.61 +1991-08-06,2989.04,3034.88,2970.48,3027.28,174340000,3027.28 +1991-08-05,3006.26,3019.68,2978.76,2989.04,125790000,2989.04 +1991-08-02,3017.67,3042.26,2994.41,3006.26,162050000,3006.26 +1991-08-01,3024.82,3037.12,2997.76,3017.67,169920000,3017.67 +1991-07-31,3016.32,3039.58,2999.11,3024.82,166650000,3024.82 +1991-07-30,2985.24,3029.07,2983.68,3016.32,168950000,3016.32 +1991-07-29,2972.50,2996.20,2957.07,2985.24,135240000,2985.24 +1991-07-26,2980.10,2994.86,2953.26,2972.50,127690000,2972.50 +1991-07-25,2966.23,2999.11,2947.23,2980.10,145510000,2980.10 +1991-07-24,2983.23,3003.13,2950.80,2966.23,158530000,2966.23 +1991-07-23,3012.97,3038.24,2972.94,2983.23,160010000,2983.23 +1991-07-22,3016.32,3034.44,2990.83,3012.97,148880000,3012.97 +1991-07-19,3016.32,3036.23,2989.49,3016.32,187290000,3016.32 +1991-07-18,2978.76,3026.61,2970.93,3016.32,199470000,3016.32 +1991-07-17,2983.90,3011.18,2961.54,2978.76,194150000,2978.76 +1991-07-16,2990.61,3012.52,2962.88,2983.90,182740000,2983.90 +1991-07-15,2980.77,3007.38,2965.79,2990.61,159340000,2990.61 +1991-07-12,2959.75,3003.35,2942.98,2980.77,173060000,2980.77 +1991-07-11,2944.77,2975.63,2933.36,2959.75,157680000,2959.75 +1991-07-10,2947.23,2990.83,2927.77,2944.77,178170000,2944.77 +1991-07-09,2961.99,2980.10,2934.03,2947.23,151430000,2947.23 +1991-07-08,2932.47,2966.23,2897.36,2961.99,138210000,2961.99 +1991-07-05,2934.70,2953.26,2917.71,2932.47,69790000,2932.47 +1991-07-03,2957.07,2957.07,2915.03,2934.70,139290000,2934.70 +1991-07-02,2958.41,2987.03,2939.62,2972.72,157140000,2972.72 +1991-07-01,2911.67,2971.15,2911.67,2958.41,166880000,2958.41 +1991-06-28,2934.03,2934.03,2879.25,2906.75,162670000,2906.75 +1991-06-27,2913.01,2946.56,2909.21,2934.93,155820000,2934.93 +1991-06-26,2910.11,2934.03,2879.25,2913.01,186830000,2913.01 +1991-06-25,2913.01,2938.51,2887.97,2910.11,155450000,2910.11 +1991-06-24,2957.29,2957.29,2904.29,2913.01,137700000,2913.01 +1991-06-21,2953.94,2977.64,2937.84,2965.56,193110000,2965.56 +1991-06-20,2955.50,2969.81,2927.33,2953.94,163780000,2953.94 +1991-06-19,2978.31,2978.31,2933.59,2955.50,156070000,2955.50 +1991-06-18,2993.96,3022.14,2970.48,2986.81,154900000,2986.81 +1991-06-17,3000.45,3021.69,2977.86,2993.96,133910000,2993.96 +1991-06-14,2967.58,3014.98,2967.58,3000.45,167530000,3000.45 +1991-06-13,2961.99,2982.11,2942.53,2965.12,144870000,2965.12 +1991-06-12,2985.91,2987.25,2928.89,2961.99,165720000,2961.99 +1991-06-11,2975.40,3012.08,2963.10,2985.91,161240000,2985.91 +1991-06-10,2976.74,2992.84,2958.41,2975.40,127420000,2975.40 +1991-06-07,2994.86,3005.14,2954.61,2976.74,167830000,2976.74 +1991-06-06,3005.37,3027.06,2975.63,2994.86,168050000,2994.86 +1991-06-05,3027.95,3042.93,2989.49,3005.37,186300000,3005.37 +1991-06-04,3035.33,3042.04,2992.62,3027.95,180170000,3027.95 +1991-06-03,3027.50,3057.47,3000.67,3035.33,173710000,3035.33 +1991-05-31,3000.45,3044.50,2972.94,3027.50,231680000,3027.50 +1991-05-30,2969.59,3022.81,2950.58,3000.45,234090000,3000.45 +1991-05-29,2958.86,2987.92,2940.74,2969.59,188150000,2969.59 +1991-05-28,2913.91,2965.12,2903.85,2958.86,161950000,2958.86 +1991-05-24,2900.04,2931.13,2893.78,2913.91,124500000,2913.91 +1991-05-23,2910.33,2935.38,2881.04,2900.04,173080000,2900.04 +1991-05-22,2906.08,2930.01,2881.93,2910.33,159310000,2910.33 +1991-05-21,2892.22,2931.80,2875.00,2906.08,186860000,2906.08 +1991-05-20,2886.63,2910.78,2872.76,2892.22,109510000,2892.22 +1991-05-17,2894.01,2908.54,2860.02,2886.63,174210000,2886.63 +1991-05-16,2865.38,2905.64,2863.82,2894.01,154460000,2894.01 +1991-05-15,2886.85,2901.83,2834.53,2865.38,193110000,2865.38 +1991-05-14,2922.85,2922.85,2870.08,2886.85,207910000,2886.85 +1991-05-13,2920.17,2945.44,2896.24,2924.42,129620000,2924.42 +1991-05-10,2971.15,2986.14,2906.08,2920.17,172730000,2920.17 +1991-05-09,2930.90,2983.68,2926.88,2971.15,180210000,2971.15 +1991-05-08,2917.49,2945.21,2898.70,2930.90,157240000,2930.90 +1991-05-07,2941.64,2962.66,2906.53,2917.49,153290000,2917.49 +1991-05-06,2938.86,2956.84,2911.45,2941.64,128360000,2941.64 +1991-05-03,2938.61,2959.90,2906.93,2938.86,158160000,2938.86 +1991-05-02,2930.20,2966.34,2917.33,2938.61,187090000,2938.61 +1991-05-01,2887.87,2945.30,2882.43,2930.20,181900000,2930.20 +1991-04-30,2876.98,2929.21,2859.41,2887.87,204930000,2887.87 +1991-04-29,2912.38,2941.09,2869.55,2876.98,149860000,2876.98 +1991-04-26,2921.04,2934.90,2888.61,2912.38,154550000,2912.38 +1991-04-25,2949.51,2958.42,2905.20,2921.04,166940000,2921.04 +1991-04-24,2930.45,2965.10,2913.37,2949.51,166800000,2949.51 +1991-04-23,2927.72,2957.92,2905.94,2930.45,167840000,2930.45 +1991-04-22,2962.13,2962.13,2911.63,2927.72,164410000,2927.72 +1991-04-19,2999.26,3000.25,2943.56,2965.59,195510000,2965.59 +1991-04-18,3004.46,3027.72,2976.24,2999.26,217410000,2999.26 +1991-04-17,2986.88,3030.45,2963.12,3004.46,246930000,3004.46 +1991-04-16,2933.17,2995.79,2912.13,2986.88,214480000,2986.88 +1991-04-15,2920.79,2957.18,2896.29,2933.17,161800000,2933.17 +1991-04-12,2905.45,2946.53,2884.16,2920.79,198610000,2920.79 +1991-04-11,2877.72,2937.62,2877.72,2905.45,196570000,2905.45 +1991-04-10,2873.02,2902.48,2848.51,2874.50,167940000,2874.50 +1991-04-09,2918.56,2932.42,2863.36,2873.02,169940000,2873.02 +1991-04-08,2896.78,2929.21,2877.72,2918.56,138580000,2918.56 +1991-04-05,2924.50,2949.26,2876.98,2896.78,187410000,2896.78 +1991-04-04,2926.73,2959.41,2899.75,2924.50,198120000,2924.50 +1991-04-03,2945.05,2970.54,2915.84,2926.73,213720000,2926.73 +1991-04-02,2881.19,2951.98,2878.22,2945.05,189530000,2945.05 +1991-04-01,2913.86,2919.31,2868.32,2881.19,144010000,2881.19 +1991-03-28,2917.57,2942.08,2893.32,2913.86,150750000,2913.86 +1991-03-27,2914.85,2956.93,2886.14,2917.57,201830000,2917.57 +1991-03-26,2865.84,2924.01,2848.02,2914.85,198720000,2914.85 +1991-03-25,2858.91,2897.52,2837.87,2865.84,153920000,2865.84 +1991-03-22,2855.45,2879.95,2829.21,2858.91,160890000,2858.91 +1991-03-21,2872.03,2907.92,2841.58,2855.45,199830000,2855.45 +1991-03-20,2867.82,2897.03,2840.84,2872.03,196810000,2872.03 +1991-03-19,2908.17,2908.17,2840.84,2867.82,177070000,2867.82 +1991-03-18,2948.27,2960.64,2899.75,2929.95,163100000,2929.95 +1991-03-15,2952.23,2966.58,2918.81,2948.27,237660000,2948.27 +1991-03-14,2955.20,3000.00,2925.74,2952.23,231000000,2952.23 +1991-03-13,2922.52,2967.82,2910.89,2955.20,176000000,2955.20 +1991-03-12,2939.36,2962.13,2906.68,2922.52,176440000,2922.52 +1991-03-11,2955.20,2975.50,2923.27,2939.36,161600000,2939.36 +1991-03-08,2963.37,3003.47,2934.90,2955.20,206850000,2955.20 +1991-03-07,2973.27,2998.51,2948.51,2963.37,197060000,2963.37 +1991-03-06,2972.52,3017.82,2957.67,2973.27,262290000,2973.27 +1991-03-05,2914.11,2995.54,2913.86,2972.52,253700000,2972.52 +1991-03-04,2909.90,2950.74,2897.03,2914.11,199830000,2914.11 +1991-03-01,2882.18,2923.51,2846.78,2909.90,221510000,2909.90 +1991-02-28,2889.11,2923.51,2858.42,2882.18,223010000,2882.18 +1991-02-27,2864.60,2915.35,2839.85,2889.11,211410000,2889.11 +1991-02-26,2887.87,2895.30,2840.10,2864.60,164170000,2864.60 +1991-02-25,2889.36,2935.89,2865.35,2887.87,193820000,2887.87 +1991-02-22,2891.83,2945.79,2860.40,2889.36,218760000,2889.36 +1991-02-21,2899.01,2927.72,2871.29,2891.83,180770000,2891.83 +1991-02-20,2923.76,2923.76,2879.46,2899.01,185680000,2899.01 +1991-02-19,2934.65,2955.20,2895.30,2932.18,189900000,2932.18 +1991-02-15,2877.23,2947.28,2868.07,2934.65,222370000,2934.65 +1991-02-14,2909.16,2942.08,2852.48,2877.23,230750000,2877.23 +1991-02-13,2874.75,2918.32,2848.51,2909.16,209960000,2909.16 +1991-02-12,2902.23,2923.02,2848.27,2874.75,256160000,2874.75 +1991-02-11,2830.69,2910.64,2822.52,2902.23,265930000,2902.23 +1991-02-08,2810.64,2847.28,2787.13,2830.69,187830000,2830.69 +1991-02-07,2830.94,2875.50,2790.59,2810.64,292190000,2810.64 +1991-02-06,2788.37,2844.80,2760.15,2830.94,276940000,2830.94 +1991-02-05,2772.28,2805.20,2742.82,2788.37,290570000,2788.37 +1991-02-04,2730.69,2791.83,2714.85,2772.28,250750000,2772.28 +1991-02-01,2736.39,2764.60,2694.31,2730.69,246670000,2730.69 +1991-01-31,2713.12,2747.28,2691.58,2736.39,204240000,2736.39 +1991-01-30,2662.62,2725.99,2654.70,2713.12,226790000,2713.12 +1991-01-29,2654.46,2677.23,2627.23,2662.62,155740000,2662.62 +1991-01-28,2659.41,2688.61,2635.15,2654.46,141270000,2654.46 +1991-01-25,2643.07,2679.46,2623.27,2659.41,194350000,2659.41 +1991-01-24,2619.06,2667.33,2615.10,2643.07,223150000,2643.07 +1991-01-23,2603.22,2645.54,2584.65,2619.06,169440000,2619.06 +1991-01-22,2629.21,2645.05,2586.39,2603.22,175590000,2603.22 +1991-01-21,2646.29,2646.29,2602.97,2629.21,136290000,2629.21 +1991-01-18,2623.51,2663.37,2600.25,2646.78,226770000,2646.78 +1991-01-17,2571.78,2635.40,2571.78,2623.51,318890000,2623.51 +1991-01-16,2490.59,2525.25,2475.99,2508.91,134560000,2508.91 +1991-01-15,2483.91,2504.46,2470.05,2490.59,109980000,2490.59 +1991-01-14,2500.99,2500.99,2447.03,2483.91,120830000,2483.91 +1991-01-11,2498.76,2516.09,2472.77,2501.49,123050000,2501.49 +1991-01-10,2470.30,2512.13,2467.08,2498.76,124510000,2498.76 +1991-01-09,2509.41,2562.38,2456.19,2470.30,191100000,2470.30 +1991-01-08,2522.77,2544.06,2493.07,2509.41,143390000,2509.41 +1991-01-07,2563.37,2563.37,2514.11,2522.77,130610000,2522.77 +1991-01-04,2573.51,2601.98,2540.84,2566.09,140820000,2566.09 +1991-01-03,2610.64,2622.28,2567.57,2573.51,141450000,2573.51 +1991-01-02,2633.66,2651.73,2600.99,2610.64,126280000,2610.64 +1990-12-31,2629.21,2641.09,2611.14,2633.66,114130000,2633.66 +1990-12-28,2625.50,2639.11,2607.92,2629.21,111030000,2629.21 +1990-12-27,2637.13,2652.23,2616.58,2625.50,102900000,2625.50 +1990-12-26,2621.29,2653.96,2613.37,2637.13,78730000,2637.13 +1990-12-24,2633.66,2638.12,2609.65,2621.29,57200000,2621.29 +1990-12-21,2629.46,2662.62,2619.55,2633.66,233400000,2633.66 +1990-12-20,2626.73,2645.81,2591.58,2629.46,174700000,2629.46 +1990-12-19,2626.73,2648.51,2602.48,2626.73,180380000,2626.73 +1990-12-18,2593.32,2639.36,2583.17,2626.73,176460000,2626.73 +1990-12-17,2593.81,2600.74,2563.61,2593.32,118560000,2593.32 +1990-12-14,2614.36,2617.82,2572.03,2593.81,150880000,2593.81 +1990-12-13,2622.28,2640.59,2598.76,2614.36,162110000,2614.36 +1990-12-12,2586.14,2630.69,2578.22,2622.28,182270000,2622.28 +1990-12-11,2596.78,2606.93,2565.59,2586.14,145330000,2586.14 +1990-12-10,2590.10,2609.40,2566.58,2596.78,138650000,2596.78 +1990-12-07,2602.48,2618.07,2571.78,2590.10,164950000,2590.10 +1990-12-06,2610.40,2656.44,2589.36,2602.48,256380000,2602.48 +1990-12-05,2579.70,2615.84,2558.42,2610.40,205820000,2610.40 +1990-12-04,2565.59,2592.08,2534.65,2579.70,185820000,2579.70 +1990-12-03,2559.65,2589.60,2543.56,2565.59,177010000,2565.59 +1990-11-30,2518.81,2577.23,2498.51,2559.65,192350000,2559.65 +1990-11-29,2535.15,2544.31,2501.23,2518.81,140920000,2518.81 +1990-11-28,2543.81,2564.60,2521.04,2535.15,145490000,2535.15 +1990-11-27,2533.17,2562.62,2516.09,2543.81,147590000,2543.81 +1990-11-26,2527.23,2541.58,2489.85,2533.17,131540000,2533.17 +1990-11-23,2539.36,2557.92,2521.04,2527.23,63350000,2527.23 +1990-11-21,2530.20,2552.23,2502.72,2539.36,140660000,2539.36 +1990-11-20,2565.35,2574.50,2524.01,2530.20,161170000,2530.20 +1990-11-19,2550.25,2580.69,2543.07,2565.35,140950000,2565.35 +1990-11-16,2545.05,2570.79,2522.28,2550.25,165440000,2550.25 +1990-11-15,2559.65,2567.33,2528.71,2545.05,151370000,2545.05 +1990-11-14,2535.40,2581.19,2522.77,2559.65,179310000,2559.65 +1990-11-13,2540.35,2559.90,2512.38,2535.40,160240000,2535.40 +1990-11-12,2490.10,2550.99,2490.10,2540.35,161390000,2540.35 +1990-11-09,2443.81,2500.74,2438.61,2488.61,145160000,2488.61 +1990-11-08,2440.84,2468.81,2415.84,2443.81,155570000,2443.81 +1990-11-07,2485.15,2490.35,2430.94,2440.84,149130000,2440.84 +1990-11-06,2502.23,2516.83,2471.53,2485.15,141130000,2485.15 +1990-11-05,2490.84,2519.06,2472.77,2502.23,147510000,2502.23 +1990-11-02,2454.95,2501.73,2447.28,2490.84,168700000,2490.84 +1990-11-01,2442.33,2473.02,2415.59,2454.95,159270000,2454.95 +1990-10-31,2448.02,2475.99,2419.55,2442.33,156060000,2442.33 +1990-10-30,2430.20,2462.87,2400.50,2448.02,153450000,2448.02 +1990-10-29,2436.14,2470.30,2407.67,2430.20,133980000,2430.20 +1990-10-26,2482.18,2482.18,2429.21,2436.14,130190000,2436.14 +1990-10-25,2504.21,2525.99,2464.11,2484.41,141460000,2484.41 +1990-10-24,2494.06,2523.02,2470.54,2504.21,149290000,2504.21 +1990-10-23,2516.09,2527.97,2480.20,2494.06,146300000,2494.06 +1990-10-22,2520.79,2535.40,2476.73,2516.09,152650000,2516.09 +1990-10-19,2453.47,2536.88,2453.47,2520.79,221480000,2520.79 +1990-10-18,2391.83,2461.63,2391.83,2452.72,204110000,2452.72 +1990-10-17,2381.19,2418.56,2358.17,2387.87,161260000,2387.87 +1990-10-16,2416.34,2434.41,2366.83,2381.19,149570000,2381.19 +1990-10-15,2398.02,2451.24,2354.95,2416.34,164980000,2416.34 +1990-10-12,2365.10,2428.71,2349.75,2398.02,187940000,2398.02 +1990-10-11,2407.92,2427.23,2344.31,2365.10,180060000,2365.10 +1990-10-10,2445.54,2472.03,2388.36,2407.92,167890000,2407.92 +1990-10-09,2514.60,2514.60,2437.87,2445.54,145610000,2445.54 +1990-10-08,2510.64,2548.02,2507.18,2523.76,99470000,2523.76 +1990-10-05,2516.83,2544.55,2453.47,2510.64,153380000,2510.64 +1990-10-04,2489.36,2528.22,2464.85,2516.83,145410000,2516.83 +1990-10-03,2505.20,2534.65,2470.79,2489.36,135490000,2489.36 +1990-10-02,2515.84,2565.35,2487.62,2505.20,188360000,2505.20 +1990-10-01,2452.48,2534.65,2446.53,2515.84,202210000,2515.84 +1990-09-28,2427.48,2465.59,2367.82,2452.48,201010000,2452.48 +1990-09-27,2459.65,2492.33,2396.29,2427.48,182690000,2427.48 +1990-09-26,2485.64,2496.04,2435.40,2459.65,155570000,2459.65 +1990-09-25,2452.97,2501.24,2437.38,2485.64,155940000,2485.64 +1990-09-24,2498.02,2498.02,2438.12,2452.97,162210000,2452.97 +1990-09-21,2518.32,2538.37,2479.95,2512.38,201050000,2512.38 +1990-09-20,2549.01,2549.01,2495.54,2518.32,145100000,2518.32 +1990-09-19,2571.29,2594.55,2534.41,2557.43,147530000,2557.43 +1990-09-18,2567.33,2587.87,2524.26,2571.29,141130000,2571.29 +1990-09-17,2564.11,2585.89,2537.13,2567.33,110600000,2567.33 +1990-09-14,2582.67,2585.15,2545.54,2564.11,133390000,2564.11 +1990-09-13,2625.74,2629.21,2570.54,2582.67,123370000,2582.67 +1990-09-12,2612.62,2639.11,2592.33,2625.74,129890000,2625.74 +1990-09-11,2615.59,2635.64,2586.88,2612.62,113220000,2612.62 +1990-09-10,2619.55,2665.35,2600.99,2615.59,119730000,2615.59 +1990-09-07,2596.29,2635.89,2577.72,2619.55,123800000,2619.55 +1990-09-06,2628.22,2633.17,2575.99,2596.29,125620000,2596.29 +1990-09-05,2613.37,2643.07,2588.61,2628.22,120610000,2628.22 +1990-09-04,2614.36,2618.07,2573.02,2613.37,92940000,2613.37 +1990-08-31,2593.32,2624.50,2569.31,2614.36,96480000,2614.36 +1990-08-30,2632.43,2641.34,2578.47,2593.32,120890000,2593.32 +1990-08-29,2614.85,2651.24,2596.53,2632.43,134240000,2632.43 +1990-08-28,2611.63,2629.95,2582.92,2614.85,127660000,2614.85 +1990-08-27,2590.59,2645.05,2590.59,2611.63,160150000,2611.63 +1990-08-24,2483.42,2555.69,2480.45,2532.92,199040000,2532.92 +1990-08-23,2539.60,2539.60,2459.41,2483.42,250440000,2483.42 +1990-08-22,2603.96,2630.69,2553.22,2560.15,175550000,2560.15 +1990-08-21,2645.53,2645.53,2566.09,2603.96,194630000,2603.96 +1990-08-20,2644.80,2679.21,2632.43,2656.44,129630000,2656.44 +1990-08-17,2679.21,2679.21,2598.02,2644.80,212560000,2644.80 +1990-08-16,2746.53,2746.53,2676.24,2681.44,138850000,2681.44 +1990-08-15,2747.77,2778.71,2736.38,2748.27,135210000,2748.27 +1990-08-14,2746.78,2773.02,2720.54,2747.77,130320000,2747.77 +1990-08-13,2716.58,2752.23,2676.73,2746.78,122820000,2746.78 +1990-08-10,2758.91,2763.61,2692.82,2716.58,145340000,2716.58 +1990-08-09,2734.90,2774.26,2716.58,2758.91,155810000,2758.91 +1990-08-08,2710.64,2763.37,2691.34,2734.90,190400000,2734.90 +1990-08-07,2716.34,2763.86,2676.24,2710.64,231580000,2710.64 +1990-08-06,2758.42,2758.42,2683.17,2716.34,240400000,2716.34 +1990-08-03,2863.86,2863.86,2722.03,2809.65,292360000,2809.65 +1990-08-02,2899.26,2903.71,2833.17,2864.60,253090000,2864.60 +1990-08-01,2905.20,2931.19,2875.00,2899.26,176810000,2899.26 +1990-07-31,2917.33,2940.10,2878.47,2905.20,173810000,2905.20 +1990-07-30,2898.51,2922.52,2861.14,2917.33,146470000,2917.33 +1990-07-27,2920.79,2938.36,2877.72,2898.51,149070000,2898.51 +1990-07-26,2930.94,2945.79,2888.12,2920.79,155040000,2920.79 +1990-07-25,2922.52,2946.53,2896.78,2930.94,163530000,2930.94 +1990-07-24,2904.70,2939.60,2866.83,2922.52,181920000,2922.52 +1990-07-23,2961.14,2961.39,2833.17,2904.70,209030000,2904.70 +1990-07-20,2993.81,3019.31,2953.71,2961.14,177810000,2961.14 +1990-07-19,2981.68,3006.19,2948.27,2993.81,161990000,2993.81 +1990-07-18,2999.75,3009.65,2963.61,2981.68,168760000,2981.68 +1990-07-17,2999.75,3024.26,2970.05,2999.75,176790000,2999.75 +1990-07-16,2980.20,3017.08,2971.78,2999.75,149450000,2999.75 +1990-07-13,2969.80,3012.38,2956.68,2980.20,215600000,2980.20 +1990-07-12,2932.67,2980.69,2917.82,2969.80,211510000,2969.80 +1990-07-11,2890.84,2942.33,2890.10,2932.67,162220000,2932.67 +1990-07-10,2914.11,2928.22,2882.18,2890.84,147630000,2890.84 +1990-07-09,2904.95,2927.97,2890.84,2914.11,119390000,2914.11 +1990-07-06,2879.21,2919.80,2867.57,2904.95,111730000,2904.95 +1990-07-05,2906.44,2906.44,2863.61,2879.21,128320000,2879.21 +1990-07-03,2899.26,2925.74,2891.09,2911.63,130050000,2911.63 +1990-07-02,2880.69,2908.66,2869.80,2899.26,130200000,2899.26 +1990-06-29,2878.71,2901.98,2865.84,2880.69,145510000,2880.69 +1990-06-28,2862.13,2896.04,2850.50,2878.71,136120000,2878.71 +1990-06-27,2842.33,2878.96,2821.53,2862.13,146620000,2862.13 +1990-06-26,2845.05,2882.92,2832.67,2842.33,141420000,2842.33 +1990-06-25,2857.18,2882.18,2834.90,2845.05,133100000,2845.05 +1990-06-22,2901.73,2931.93,2848.02,2857.18,172570000,2857.18 +1990-06-21,2895.30,2916.58,2870.05,2901.73,138570000,2901.73 +1990-06-20,2893.56,2914.60,2868.81,2895.30,137420000,2895.30 +1990-06-19,2882.18,2907.92,2866.58,2893.56,134930000,2893.56 +1990-06-18,2930.45,2930.45,2877.48,2882.18,133470000,2882.18 +1990-06-15,2928.22,2947.77,2902.72,2935.89,205130000,2935.89 +1990-06-14,2929.95,2943.56,2902.97,2928.22,135770000,2928.22 +1990-06-13,2933.42,2956.93,2910.15,2929.95,158910000,2929.95 +1990-06-12,2892.57,2947.52,2877.97,2933.42,157100000,2933.42 +1990-06-11,2862.38,2901.98,2852.97,2892.57,119550000,2892.57 +1990-06-08,2897.33,2908.50,2850.73,2862.38,142600000,2862.38 +1990-06-07,2911.65,2930.58,2880.34,2897.33,160360000,2897.33 +1990-06-06,2925.00,2936.65,2891.99,2911.65,164030000,2911.65 +1990-06-05,2935.19,2956.55,2911.89,2925.00,199720000,2925.00 +1990-06-04,2900.97,2943.69,2883.98,2935.19,175520000,2935.19 +1990-06-01,2876.66,2919.90,2868.69,2900.97,187860000,2900.97 +1990-05-31,2878.56,2900.62,2854.64,2876.66,165690000,2876.66 +1990-05-30,2870.49,2908.21,2853.89,2878.56,199540000,2878.56 +1990-05-29,2820.92,2876.19,2812.62,2870.49,137410000,2870.49 +1990-05-25,2855.55,2856.50,2806.69,2820.92,120250000,2820.92 +1990-05-24,2856.26,2878.08,2828.04,2855.55,155140000,2855.55 +1990-05-23,2852.23,2869.07,2824.95,2856.26,172330000,2856.26 +1990-05-22,2844.68,2877.13,2828.51,2852.23,203350000,2852.23 +1990-05-21,2819.91,2859.72,2802.08,2844.68,166280000,2844.68 +1990-05-18,2831.71,2838.43,2804.63,2819.91,162520000,2819.91 +1990-05-17,2819.68,2856.25,2811.57,2831.71,164770000,2831.71 +1990-05-16,2822.45,2841.44,2800.23,2819.68,159810000,2819.68 +1990-05-15,2821.53,2840.74,2798.15,2822.45,165730000,2822.45 +1990-05-14,2801.58,2857.87,2793.75,2821.53,225410000,2821.53 +1990-05-11,2743.02,2810.36,2743.02,2801.58,234040000,2801.58 +1990-05-10,2732.88,2755.63,2716.44,2738.51,158460000,2738.51 +1990-05-09,2733.56,2745.50,2710.14,2732.88,152220000,2732.88 +1990-05-08,2721.62,2739.41,2710.36,2733.56,144230000,2733.56 +1990-05-07,2710.36,2739.19,2698.87,2721.62,132760000,2721.62 +1990-05-04,2696.17,2718.92,2682.43,2710.36,140550000,2710.36 +1990-05-03,2689.64,2716.22,2682.88,2696.17,145560000,2696.17 +1990-05-02,2668.92,2697.30,2659.01,2689.64,141610000,2689.64 +1990-05-01,2656.76,2687.39,2651.35,2668.92,149020000,2668.92 +1990-04-30,2645.05,2667.79,2627.70,2656.76,122750000,2656.76 +1990-04-27,2676.58,2687.39,2639.19,2645.05,130630000,2645.05 +1990-04-26,2666.44,2691.89,2650.22,2676.58,141330000,2676.58 +1990-04-25,2654.50,2685.36,2649.32,2666.44,133480000,2666.44 +1990-04-24,2666.67,2686.04,2643.69,2654.50,137360000,2654.50 +1990-04-23,2690.77,2690.77,2650.90,2666.67,136150000,2666.67 +1990-04-20,2711.94,2722.07,2668.47,2695.95,174260000,2695.95 +1990-04-19,2732.88,2742.12,2700.00,2711.94,152930000,2711.94 +1990-04-18,2765.77,2775.68,2722.75,2732.88,147130000,2732.88 +1990-04-17,2763.06,2774.77,2738.29,2765.77,127990000,2765.77 +1990-04-16,2751.80,2793.47,2748.87,2763.06,142810000,2763.06 +1990-04-12,2729.73,2763.96,2729.50,2751.80,142470000,2751.80 +1990-04-11,2731.08,2751.35,2713.29,2729.73,141080000,2729.73 +1990-04-10,2722.07,2741.67,2707.88,2731.08,136020000,2731.08 +1990-04-09,2717.12,2737.39,2701.35,2722.07,114970000,2722.07 +1990-04-06,2721.17,2732.43,2695.50,2717.12,137490000,2717.12 +1990-04-05,2719.37,2746.17,2709.01,2721.17,144170000,2721.17 +1990-04-04,2736.71,2755.86,2708.56,2719.37,159540000,2719.37 +1990-04-03,2700.45,2747.30,2699.55,2736.71,154310000,2736.71 +1990-04-02,2707.21,2708.78,2668.69,2700.45,124360000,2700.45 +1990-03-30,2727.70,2736.71,2692.34,2707.21,139340000,2707.21 +1990-03-29,2743.69,2753.38,2711.49,2727.70,132190000,2727.70 +1990-03-28,2736.94,2755.63,2716.21,2743.69,142300000,2743.69 +1990-03-27,2707.66,2738.96,2691.89,2736.94,131610000,2736.94 +1990-03-26,2704.28,2735.81,2697.97,2707.66,116110000,2707.66 +1990-03-23,2695.72,2722.75,2688.06,2704.28,132070000,2704.28 +1990-03-22,2727.93,2734.01,2674.32,2695.72,175930000,2695.72 +1990-03-21,2738.74,2759.68,2718.24,2727.93,130990000,2727.93 +1990-03-20,2755.63,2775.00,2724.10,2738.74,177320000,2738.74 +1990-03-19,2741.22,2761.71,2706.53,2755.63,142300000,2755.63 +1990-03-16,2699.32,2745.50,2699.32,2741.22,222520000,2741.22 +1990-03-15,2687.84,2714.86,2677.93,2695.72,144410000,2695.72 +1990-03-14,2674.55,2705.18,2662.39,2687.84,145060000,2687.84 +1990-03-13,2686.71,2699.55,2657.88,2674.55,145440000,2674.55 +1990-03-12,2683.33,2698.65,2661.94,2686.71,114790000,2686.71 +1990-03-09,2696.17,2705.63,2665.54,2683.33,150410000,2683.33 +1990-03-08,2669.59,2705.18,2661.26,2696.17,170900000,2696.17 +1990-03-07,2676.80,2696.85,2656.08,2669.59,163580000,2669.59 +1990-03-06,2649.55,2684.46,2638.06,2676.80,143640000,2676.80 +1990-03-05,2660.36,2675.22,2636.71,2649.55,140110000,2649.55 +1990-03-02,2635.59,2669.82,2630.18,2660.36,164330000,2660.36 +1990-03-01,2627.25,2655.63,2607.88,2635.59,157930000,2635.59 +1990-02-28,2617.12,2652.48,2603.60,2627.25,184410000,2627.25 +1990-02-27,2602.48,2637.84,2592.12,2617.12,152590000,2617.12 +1990-02-26,2564.19,2606.30,2560.13,2602.48,148910000,2602.48 +1990-02-23,2574.77,2591.44,2540.99,2564.19,148490000,2564.19 +1990-02-22,2583.56,2622.30,2568.02,2574.77,184320000,2574.77 +1990-02-21,2596.85,2602.48,2556.31,2583.56,159240000,2583.56 +1990-02-20,2619.14,2619.14,2579.05,2596.85,147300000,2596.85 +1990-02-16,2649.55,2669.37,2623.65,2635.59,166840000,2635.59 +1990-02-15,2624.32,2658.78,2614.86,2649.55,174630000,2649.55 +1990-02-14,2624.10,2643.69,2608.11,2624.32,138530000,2624.32 +1990-02-13,2619.14,2639.19,2592.57,2624.10,144490000,2624.10 +1990-02-12,2648.20,2652.48,2610.59,2619.14,118390000,2619.14 +1990-02-09,2644.37,2666.67,2628.15,2648.20,146910000,2648.20 +1990-02-08,2640.09,2674.32,2622.30,2644.37,176240000,2644.37 +1990-02-07,2606.31,2651.35,2579.28,2640.09,186710000,2640.09 +1990-02-06,2622.52,2629.50,2588.29,2606.31,134070000,2606.31 +1990-02-05,2602.70,2633.56,2592.12,2622.52,130950000,2622.52 +1990-02-02,2586.26,2623.65,2577.03,2602.70,164400000,2602.70 +1990-02-01,2590.54,2611.49,2571.85,2586.26,154580000,2586.26 +1990-01-31,2546.85,2600.90,2546.85,2590.54,189660000,2590.54 +1990-01-30,2553.38,2576.13,2513.06,2543.24,186030000,2543.24 +1990-01-29,2559.23,2583.56,2522.97,2553.38,150770000,2553.38 +1990-01-26,2561.04,2591.67,2516.89,2559.23,198190000,2559.23 +1990-01-25,2604.50,2628.83,2546.17,2561.04,172270000,2561.04 +1990-01-24,2615.32,2619.59,2534.23,2604.50,207830000,2604.50 +1990-01-23,2600.45,2639.64,2584.01,2615.32,179300000,2615.32 +1990-01-22,2677.90,2683.33,2595.27,2600.45,148380000,2600.45 +1990-01-19,2666.38,2696.89,2657.85,2677.90,185590000,2677.90 +1990-01-18,2659.13,2678.11,2625.85,2666.38,178590000,2666.38 +1990-01-17,2692.62,2711.39,2643.77,2659.13,170470000,2659.13 +1990-01-16,2669.37,2698.38,2634.17,2692.62,186070000,2692.62 +1990-01-15,2689.21,2698.11,2656.36,2669.37,140590000,2669.37 +1990-01-12,2735.92,2735.92,2675.98,2689.21,183880000,2689.21 +1990-01-11,2750.64,2783.27,2748.29,2760.67,154390000,2760.67 +1990-01-10,2766.00,2772.82,2725.47,2750.64,175990000,2750.64 +1990-01-09,2794.37,2810.79,2760.03,2766.00,155210000,2766.00 +1990-01-08,2773.25,2803.97,2753.41,2794.37,140110000,2794.37 +1990-01-05,2796.08,2810.15,2758.11,2773.25,158530000,2773.25 +1990-01-04,2809.73,2821.46,2766.42,2796.08,177000000,2796.08 +1990-01-03,2810.15,2834.04,2786.26,2809.73,192330000,2809.73 +1990-01-02,2753.20,2811.65,2732.51,2810.15,162070000,2810.15 +1989-12-29,2732.30,2763.01,2726.96,2753.20,145940000,2753.20 +1989-12-28,2724.40,2742.53,2709.04,2732.30,128030000,2732.30 +1989-12-27,2709.26,2739.12,2700.30,2724.40,133740000,2724.40 +1989-12-26,2711.39,2728.88,2694.75,2709.26,77610000,2709.26 +1989-12-22,2691.13,2721.20,2682.59,2711.39,120980000,2711.39 +1989-12-21,2687.93,2714.16,2671.72,2691.13,175150000,2691.13 +1989-12-20,2695.61,2719.07,2667.02,2687.93,176520000,2687.93 +1989-12-19,2697.53,2720.14,2658.70,2695.61,186060000,2695.61 +1989-12-18,2739.55,2755.55,2679.82,2697.53,184750000,2697.53 +1989-12-15,2753.63,2763.65,2703.92,2739.55,240390000,2739.55 +1989-12-14,2761.09,2771.33,2732.08,2753.63,178700000,2753.63 +1989-12-13,2752.13,2784.77,2737.20,2761.09,184660000,2761.09 +1989-12-12,2728.24,2764.51,2716.51,2752.13,176820000,2752.13 +1989-12-11,2731.44,2742.75,2705.63,2728.24,147130000,2728.24 +1989-12-08,2720.78,2750.85,2716.51,2731.44,144910000,2731.44 +1989-12-07,2736.77,2756.83,2702.00,2720.78,161980000,2720.78 +1989-12-06,2741.68,2754.91,2722.70,2736.77,145850000,2736.77 +1989-12-05,2753.63,2773.89,2731.23,2741.68,154640000,2741.68 +1989-12-04,2747.65,2772.18,2731.02,2753.63,150360000,2753.63 +1989-12-01,2706.27,2763.87,2705.42,2747.65,199200000,2747.65 +1989-11-30,2688.78,2718.22,2681.95,2706.27,153200000,2706.27 +1989-11-29,2702.01,2713.10,2677.47,2688.78,147270000,2688.78 +1989-11-28,2694.97,2715.02,2677.26,2702.01,153770000,2702.01 +1989-11-27,2675.55,2713.95,2663.40,2694.97,149390000,2694.97 +1989-11-24,2657.00,2686.01,2657.00,2675.55,86290000,2675.55 +1989-11-22,2639.29,2668.30,2629.91,2656.78,145730000,2656.78 +1989-11-21,2632.04,2654.22,2614.97,2639.29,147900000,2639.29 +1989-11-20,2652.66,2659.56,2615.40,2632.04,128170000,2632.04 +1989-11-17,2635.66,2665.37,2623.15,2652.66,151020000,2652.66 +1989-11-16,2632.58,2650.61,2613.52,2635.66,148370000,2635.66 +1989-11-15,2610.25,2641.60,2600.00,2632.58,155130000,2632.58 +1989-11-14,2626.43,2640.57,2597.13,2610.25,143170000,2610.25 +1989-11-13,2625.61,2648.36,2602.05,2626.43,140750000,2626.43 +1989-11-10,2603.69,2635.86,2603.07,2625.61,131800000,2625.61 +1989-11-09,2623.36,2634.84,2595.90,2603.69,143390000,2603.69 +1989-11-08,2597.13,2644.26,2594.67,2623.36,170150000,2623.36 +1989-11-07,2582.17,2608.81,2563.11,2597.13,163000000,2597.13 +1989-11-06,2621.72,2621.72,2574.59,2582.17,135480000,2582.17 +1989-11-03,2631.56,2650.82,2612.91,2629.51,131500000,2629.51 +1989-11-02,2645.90,2653.69,2607.58,2631.56,152440000,2631.56 +1989-11-01,2645.08,2665.78,2622.95,2645.90,154240000,2645.90 +1989-10-31,2606.97,2662.09,2606.97,2645.08,176100000,2645.08 +1989-10-30,2596.72,2627.05,2588.11,2603.48,126630000,2603.48 +1989-10-27,2613.73,2621.11,2573.56,2596.72,170330000,2596.72 +1989-10-26,2653.28,2657.99,2597.74,2613.73,175240000,2613.73 +1989-10-25,2659.22,2684.84,2627.66,2653.28,155650000,2653.28 +1989-10-24,2662.91,2680.74,2570.28,2659.22,237960000,2659.22 +1989-10-23,2689.14,2704.71,2648.77,2662.91,135860000,2662.91 +1989-10-20,2683.20,2703.07,2660.25,2689.14,164830000,2689.14 +1989-10-19,2650.61,2707.58,2650.61,2683.20,198120000,2683.20 +1989-10-18,2638.73,2664.34,2610.66,2643.65,166900000,2643.65 +1989-10-17,2657.38,2665.37,2588.73,2638.73,224070000,2638.73 +1989-10-16,2569.26,2667.42,2496.93,2657.38,416290000,2657.38 +1989-10-13,2759.84,2773.36,2545.49,2569.26,251170000,2569.26 +1989-10-12,2744.06,2785.25,2744.06,2759.84,160120000,2759.84 +1989-10-11,2785.33,2790.98,2750.82,2773.36,164070000,2773.36 +1989-10-10,2791.41,2809.08,2766.53,2785.33,147560000,2785.33 +1989-10-09,2785.52,2804.52,2766.32,2791.41,86810000,2791.41 +1989-10-06,2773.56,2808.13,2765.58,2785.52,172520000,2785.52 +1989-10-05,2771.09,2797.11,2747.15,2773.56,177890000,2773.56 +1989-10-04,2754.56,2785.52,2738.79,2771.09,194590000,2771.09 +1989-10-03,2713.72,2765.96,2708.97,2754.56,182550000,2754.56 +1989-10-02,2692.82,2724.16,2677.05,2713.72,127410000,2713.72 +1989-09-29,2694.91,2721.12,2675.72,2692.82,155300000,2692.82 +1989-09-28,2673.06,2709.16,2657.86,2694.91,164240000,2694.91 +1989-09-27,2663.94,2685.03,2636.78,2673.06,158400000,2673.06 +1989-09-26,2659.19,2688.64,2652.93,2663.94,158350000,2663.94 +1989-09-25,2681.61,2685.41,2647.61,2659.19,121130000,2659.19 +1989-09-22,2680.28,2696.62,2667.55,2681.61,133350000,2681.61 +1989-09-21,2683.89,2707.83,2665.65,2680.28,146930000,2680.28 +1989-09-20,2687.31,2703.46,2672.49,2683.89,136640000,2683.89 +1989-09-19,2687.50,2709.35,2675.91,2687.31,141610000,2687.31 +1989-09-18,2674.58,2694.91,2662.61,2687.50,136940000,2687.50 +1989-09-15,2664.89,2695.67,2643.05,2674.58,234870000,2674.58 +1989-09-14,2679.52,2690.16,2647.61,2664.89,149250000,2664.89 +1989-09-13,2707.26,2725.87,2671.35,2679.52,175330000,2679.52 +1989-09-12,2704.41,2726.06,2689.59,2707.26,142140000,2707.26 +1989-09-11,2709.54,2720.74,2677.05,2704.41,126020000,2704.41 +1989-09-08,2706.88,2728.72,2679.33,2709.54,154090000,2709.54 +1989-09-07,2719.79,2748.10,2692.06,2706.88,160160000,2706.88 +1989-09-06,2744.68,2752.09,2697.95,2719.79,161800000,2719.79 +1989-09-05,2752.09,2768.24,2731.76,2744.68,145180000,2744.68 +1989-09-01,2737.27,2766.91,2726.82,2752.09,133300000,2752.09 +1989-08-31,2728.15,2744.68,2717.90,2737.27,144820000,2737.27 +1989-08-30,2726.63,2753.61,2705.36,2728.15,174350000,2728.15 +1989-08-29,2743.36,2757.60,2704.98,2726.63,175210000,2726.63 +1989-08-28,2732.36,2748.10,2710.74,2743.36,131180000,2743.36 +1989-08-25,2734.64,2758.73,2715.48,2732.36,165930000,2732.36 +1989-08-24,2678.11,2738.43,2672.23,2734.64,225520000,2734.64 +1989-08-23,2650.99,2683.61,2641.20,2678.11,159640000,2678.11 +1989-08-22,2647.00,2659.71,2619.71,2650.99,141930000,2650.99 +1989-08-21,2687.97,2693.29,2640.74,2647.00,136800000,2647.00 +1989-08-18,2679.63,2697.29,2665.97,2687.97,145810000,2687.97 +1989-08-17,2693.29,2703.72,2663.13,2679.63,157560000,2679.63 +1989-08-16,2687.78,2712.25,2680.58,2693.29,150060000,2693.29 +1989-08-15,2677.92,2705.24,2665.02,2687.78,148770000,2687.78 +1989-08-14,2683.99,2702.96,2654.97,2677.92,142010000,2677.92 +1989-08-11,2712.63,2747.53,2668.06,2683.99,197550000,2683.99 +1989-08-10,2686.08,2732.93,2669.58,2712.63,198660000,2712.63 +1989-08-09,2699.17,2725.15,2678.11,2686.08,209900000,2686.08 +1989-08-08,2694.99,2718.51,2676.97,2699.17,200340000,2699.17 +1989-08-07,2653.45,2701.82,2643.59,2694.99,197580000,2694.99 +1989-08-04,2661.61,2679.44,2629.17,2653.45,169750000,2653.45 +1989-08-03,2657.44,2676.97,2640.74,2661.61,168690000,2661.61 +1989-08-02,2641.12,2668.44,2626.33,2657.44,181760000,2657.44 +1989-08-01,2660.66,2687.03,2628.98,2641.12,225280000,2641.12 +1989-07-31,2635.24,2668.25,2615.52,2660.66,166650000,2660.66 +1989-07-28,2635.43,2656.68,2615.71,2635.24,180610000,2635.24 +1989-07-27,2613.05,2649.28,2604.70,2635.43,213680000,2635.43 +1989-07-26,2583.08,2621.21,2563.73,2613.05,188270000,2613.05 +1989-07-25,2584.98,2610.39,2565.63,2583.08,179270000,2583.08 +1989-07-24,2607.36,2607.55,2574.36,2584.98,136260000,2584.98 +1989-07-21,2575.49,2613.81,2558.23,2607.36,174880000,2607.36 +1989-07-20,2584.41,2616.46,2566.58,2575.49,204590000,2575.49 +1989-07-19,2546.47,2590.48,2546.47,2584.41,215740000,2584.41 +1989-07-18,2553.49,2560.70,2531.68,2544.76,152350000,2544.76 +1989-07-17,2554.82,2565.82,2535.85,2553.49,131960000,2553.49 +1989-07-14,2538.32,2563.16,2512.52,2554.82,183480000,2554.82 +1989-07-13,2532.63,2553.30,2517.83,2538.32,153820000,2538.32 +1989-07-12,2514.61,2543.25,2504.93,2532.63,160550000,2532.63 +1989-07-11,2503.41,2537.37,2503.41,2514.61,171590000,2514.61 +1989-07-10,2487.86,2513.47,2482.74,2502.66,131870000,2502.66 +1989-07-07,2462.44,2503.22,2456.56,2487.86,166430000,2487.86 +1989-07-06,2456.56,2475.53,2446.51,2462.44,140450000,2462.44 +1989-07-05,2452.77,2467.18,2431.53,2456.56,127710000,2456.56 +1989-07-03,2440.06,2461.49,2434.37,2452.77,68870000,2452.77 +1989-06-30,2458.27,2466.05,2412.94,2440.06,170490000,2440.06 +1989-06-29,2500.00,2500.00,2451.25,2458.27,167100000,2458.27 +1989-06-28,2526.37,2531.87,2485.77,2504.74,158470000,2504.74 +1989-06-27,2511.38,2544.95,2507.40,2526.37,171090000,2526.37 +1989-06-26,2531.87,2536.99,2500.57,2511.38,143600000,2511.38 +1989-06-23,2490.14,2536.04,2490.14,2531.87,198720000,2531.87 +1989-06-22,2464.91,2489.75,2452.77,2481.98,176510000,2481.98 +1989-06-21,2472.88,2489.38,2450.87,2464.91,168830000,2464.91 +1989-06-20,2479.89,2496.02,2463.96,2472.88,167650000,2472.88 +1989-06-19,2486.38,2497.15,2465.10,2479.89,130720000,2479.89 +1989-06-16,2475.00,2495.52,2461.57,2486.38,244510000,2486.38 +1989-06-15,2503.36,2505.97,2460.82,2475.00,179480000,2475.00 +1989-06-14,2503.54,2520.71,2486.01,2503.36,170540000,2503.36 +1989-06-13,2518.84,2520.71,2484.70,2503.54,164870000,2503.54 +1989-06-12,2513.42,2528.17,2484.70,2518.84,151460000,2518.84 +1989-06-09,2516.91,2533.64,2494.85,2513.42,173240000,2513.42 +1989-06-08,2512.32,2534.38,2499.81,2516.91,212310000,2516.91 +1989-06-07,2496.32,2526.65,2493.38,2512.32,213710000,2512.32 +1989-06-06,2480.70,2507.54,2471.32,2496.32,187570000,2496.32 +1989-06-05,2517.83,2523.71,2476.84,2480.70,163420000,2480.70 +1989-06-02,2492.46,2530.88,2492.46,2517.83,229140000,2517.83 +1989-06-01,2480.15,2504.23,2469.67,2490.63,223160000,2490.63 +1989-05-31,2475.55,2497.06,2462.68,2480.15,162530000,2480.15 +1989-05-30,2493.77,2510.66,2459.74,2475.55,151780000,2475.55 +1989-05-26,2482.59,2501.83,2473.06,2493.77,143120000,2493.77 +1989-05-25,2483.87,2498.72,2467.56,2482.59,154470000,2482.59 +1989-05-24,2478.01,2494.68,2458.03,2483.87,178600000,2483.87 +1989-05-23,2501.83,2501.83,2467.19,2478.01,187690000,2478.01 +1989-05-22,2501.10,2521.63,2481.30,2502.02,185010000,2502.02 +1989-05-19,2470.12,2509.34,2468.29,2501.10,242410000,2501.10 +1989-05-18,2462.43,2482.77,2448.86,2470.12,177480000,2470.12 +1989-05-17,2453.45,2478.74,2439.70,2462.43,191210000,2462.43 +1989-05-16,2463.89,2469.76,2439.88,2453.45,173100000,2453.45 +1989-05-15,2439.70,2474.89,2432.37,2463.89,179350000,2463.89 +1989-05-12,2408.54,2447.95,2408.54,2439.70,221490000,2439.70 +1989-05-11,2374.45,2393.51,2365.83,2382.88,151620000,2382.88 +1989-05-10,2371.33,2387.83,2361.25,2374.45,146000000,2374.45 +1989-05-09,2376.47,2390.03,2356.85,2371.33,150090000,2371.33 +1989-05-08,2381.96,2387.28,2356.30,2376.47,135130000,2376.47 +1989-05-05,2384.90,2415.69,2371.88,2381.96,180810000,2381.96 +1989-05-04,2393.70,2399.01,2373.35,2384.90,153130000,2384.90 +1989-05-03,2402.86,2410.56,2382.51,2393.70,171690000,2393.70 +1989-05-02,2414.96,2434.38,2394.61,2402.86,172560000,2402.86 +1989-05-01,2418.80,2420.45,2390.03,2414.96,138050000,2414.96 +1989-04-28,2418.99,2430.17,2403.59,2418.80,158390000,2418.80 +1989-04-27,2389.10,2433.10,2387.83,2418.99,191170000,2418.99 +1989-04-26,2386.85,2404.14,2373.90,2389.10,146090000,2389.10 +1989-04-25,2402.68,2421.55,2378.85,2386.85,165430000,2386.85 +1989-04-24,2409.46,2416.06,2385.08,2402.68,142100000,2402.68 +1989-04-21,2377.38,2412.57,2373.35,2409.46,187310000,2409.46 +1989-04-20,2386.91,2399.19,2356.85,2377.38,175970000,2377.38 +1989-04-19,2379.40,2398.46,2369.50,2386.91,191510000,2386.91 +1989-04-18,2351.36,2386.00,2351.36,2379.40,208650000,2379.40 +1989-04-17,2337.06,2348.42,2324.23,2337.79,128540000,2337.79 +1989-04-14,2308.83,2342.93,2308.83,2337.06,169780000,2337.06 +1989-04-13,2319.65,2321.85,2289.59,2296.00,141590000,2296.00 +1989-04-12,2311.58,2332.84,2304.44,2319.65,165200000,2319.65 +1989-04-11,2301.87,2321.48,2295.27,2311.58,146830000,2311.58 +1989-04-10,2304.80,2316.35,2293.62,2301.87,123990000,2301.87 +1989-04-07,2291.97,2314.88,2282.07,2304.80,156950000,2304.80 +1989-04-06,2304.80,2305.72,2282.81,2291.97,146530000,2291.97 +1989-04-05,2298.20,2315.80,2286.84,2304.80,165880000,2304.80 +1989-04-04,2304.80,2314.88,2282.44,2298.20,160680000,2298.20 +1989-04-03,2293.62,2317.45,2284.09,2304.80,164660000,2304.80 +1989-03-31,2281.34,2303.34,2277.49,2293.62,170960000,2293.62 +1989-03-30,2281.52,2296.92,2264.30,2281.34,159950000,2281.34 +1989-03-29,2275.54,2293.62,2262.65,2281.52,144240000,2281.52 +1989-03-28,2258.93,2287.86,2258.93,2275.54,146420000,2275.54 +1989-03-27,2243.04,2264.29,2234.46,2257.86,112960000,2257.86 +1989-03-23,2263.21,2274.82,2235.89,2243.04,153750000,2243.04 +1989-03-22,2266.25,2276.61,2247.14,2263.21,146570000,2263.21 +1989-03-21,2262.50,2284.82,2259.64,2266.25,142010000,2266.25 +1989-03-20,2286.25,2286.25,2249.46,2262.50,151260000,2262.50 +1989-03-17,2307.68,2307.68,2267.86,2292.14,242900000,2292.14 +1989-03-16,2320.54,2351.07,2315.36,2340.71,196040000,2340.71 +1989-03-15,2306.25,2332.86,2300.71,2320.54,167070000,2320.54 +1989-03-14,2306.25,2322.68,2296.79,2306.25,139970000,2306.25 +1989-03-13,2282.68,2319.64,2282.68,2306.25,140460000,2306.25 +1989-03-10,2291.43,2295.54,2261.61,2282.14,146830000,2282.14 +1989-03-09,2295.54,2306.61,2282.86,2291.43,143160000,2291.43 +1989-03-08,2290.71,2316.79,2280.00,2295.54,167620000,2295.54 +1989-03-07,2294.82,2308.57,2278.93,2290.71,172500000,2290.71 +1989-03-06,2274.29,2302.50,2270.36,2294.82,168880000,2294.82 +1989-03-03,2265.71,2281.79,2255.00,2274.29,151790000,2274.29 +1989-03-02,2243.04,2274.82,2239.82,2265.71,161980000,2265.71 +1989-03-01,2258.39,2277.50,2234.82,2243.04,177210000,2243.04 +1989-02-28,2250.36,2269.82,2242.68,2258.39,147430000,2258.39 +1989-02-27,2245.54,2260.18,2232.14,2250.36,139900000,2250.36 +1989-02-24,2289.46,2291.79,2242.68,2245.54,160680000,2245.54 +1989-02-23,2283.93,2295.71,2266.96,2289.46,150370000,2289.46 +1989-02-22,2326.43,2327.50,2276.43,2283.93,163140000,2283.93 +1989-02-21,2324.82,2340.89,2311.79,2326.43,141950000,2326.43 +1989-02-17,2311.43,2339.11,2301.96,2324.82,159520000,2324.82 +1989-02-16,2303.93,2326.07,2293.04,2311.43,177450000,2311.43 +1989-02-15,2281.25,2309.64,2275.71,2303.93,154220000,2303.93 +1989-02-14,2282.50,2308.04,2274.82,2281.25,150610000,2281.25 +1989-02-13,2286.07,2295.71,2266.07,2282.50,143520000,2282.50 +1989-02-10,2322.32,2322.32,2278.93,2286.07,173560000,2286.07 +1989-02-09,2343.21,2347.68,2308.39,2323.04,224220000,2323.04 +1989-02-08,2347.14,2369.29,2332.86,2343.21,189420000,2343.21 +1989-02-07,2321.07,2363.75,2314.64,2347.14,217260000,2347.14 +1989-02-06,2331.25,2338.04,2307.67,2321.07,150980000,2321.07 +1989-02-03,2333.75,2348.75,2319.29,2331.25,172980000,2331.25 +1989-02-02,2338.21,2352.86,2319.64,2333.75,183430000,2333.75 +1989-02-01,2342.32,2355.00,2319.29,2338.21,215640000,2338.21 +1989-01-31,2324.11,2350.18,2302.68,2342.32,194050000,2342.32 +1989-01-30,2322.86,2336.61,2304.82,2324.11,167830000,2324.11 +1989-01-27,2295.18,2349.64,2295.18,2322.86,254870000,2322.86 +1989-01-26,2265.89,2303.57,2252.86,2291.07,212250000,2291.07 +1989-01-25,2256.43,2277.68,2242.32,2265.89,183610000,2265.89 +1989-01-24,2218.39,2264.82,2214.82,2256.43,189620000,2256.43 +1989-01-23,2235.36,2254.64,2214.29,2218.39,141640000,2218.39 +1989-01-20,2239.11,2249.46,2221.25,2235.36,166120000,2235.36 +1989-01-19,2238.75,2254.64,2225.71,2239.11,192030000,2239.11 +1989-01-18,2214.64,2247.32,2202.50,2238.75,187450000,2238.75 +1989-01-17,2224.64,2227.50,2203.75,2214.64,143930000,2214.64 +1989-01-16,2226.07,2236.25,2215.36,2224.64,117380000,2224.64 +1989-01-13,2222.32,2235.00,2210.54,2226.07,132320000,2226.07 +1989-01-12,2206.43,2239.11,2200.71,2222.32,183000000,2222.32 +1989-01-11,2193.21,2211.96,2185.71,2206.43,148950000,2206.43 +1989-01-10,2199.46,2213.75,2182.32,2193.21,140420000,2193.21 +1989-01-09,2194.29,2209.11,2185.00,2199.46,163180000,2199.46 +1989-01-06,2190.54,2213.75,2182.32,2194.29,161330000,2194.29 +1989-01-05,2177.68,2205.18,2173.04,2190.54,174040000,2190.54 +1989-01-04,2146.61,2183.39,2146.61,2177.68,149700000,2177.68 +1989-01-03,2168.39,2168.39,2127.14,2144.64,128500000,2144.64 +1988-12-30,2182.68,2193.75,2162.50,2168.57,127210000,2168.57 +1988-12-29,2166.43,2193.04,2165.18,2182.68,131290000,2182.68 +1988-12-28,2162.68,2179.64,2153.57,2166.43,110630000,2166.43 +1988-12-27,2168.93,2179.29,2156.43,2162.68,87490000,2162.68 +1988-12-23,2160.36,2176.79,2157.86,2168.93,81760000,2168.93 +1988-12-22,2164.64,2176.43,2151.43,2160.36,150510000,2160.36 +1988-12-21,2166.07,2178.57,2146.07,2164.64,147250000,2164.64 +1988-12-20,2172.68,2192.68,2161.25,2166.07,161090000,2166.07 +1988-12-19,2150.71,2179.64,2141.07,2172.68,162250000,2172.68 +1988-12-16,2133.00,2155.00,2131.25,2150.71,196480000,2150.71 +1988-12-15,2134.25,2146.87,2120.91,2133.00,136820000,2133.00 +1988-12-14,2143.49,2149.71,2121.44,2134.25,132350000,2134.25 +1988-12-13,2139.58,2151.14,2119.31,2143.49,132340000,2143.49 +1988-12-12,2143.49,2165.18,2133.89,2139.58,124160000,2139.58 +1988-12-09,2141.71,2157.00,2131.40,2143.49,133770000,2143.49 +1988-12-08,2153.63,2162.70,2133.18,2141.71,124150000,2141.71 +1988-12-07,2149.36,2167.50,2136.38,2153.63,148360000,2153.63 +1988-12-06,2123.76,2158.96,2117.18,2149.36,158340000,2149.36 +1988-12-05,2092.64,2135.49,2092.64,2123.76,144660000,2123.76 +1988-12-02,2101.88,2105.80,2075.39,2092.28,124610000,2092.28 +1988-12-01,2114.51,2120.02,2095.48,2101.88,129380000,2101.88 +1988-11-30,2101.53,2126.60,2095.48,2114.51,157810000,2114.51 +1988-11-29,2081.44,2112.73,2072.37,2101.53,127420000,2101.53 +1988-11-28,2074.68,2095.48,2062.23,2081.44,123480000,2081.44 +1988-11-25,2085.53,2085.53,2062.77,2074.68,72090000,2074.68 +1988-11-23,2077.70,2103.49,2071.48,2092.28,112010000,2092.28 +1988-11-22,2065.97,2086.77,2052.63,2077.70,127000000,2077.70 +1988-11-21,2062.41,2070.06,2036.81,2065.97,120430000,2065.97 +1988-11-18,2052.45,2070.41,2047.12,2062.41,119320000,2062.41 +1988-11-17,2038.58,2064.19,2033.25,2052.45,141280000,2052.45 +1988-11-16,2077.17,2081.43,2026.67,2038.58,161710000,2038.58 +1988-11-15,2065.08,2088.02,2060.28,2077.17,115170000,2077.17 +1988-11-14,2067.03,2084.81,2050.85,2065.08,142900000,2065.08 +1988-11-11,2107.04,2107.04,2063.48,2067.03,135500000,2067.03 +1988-11-10,2118.24,2132.82,2103.31,2114.69,128920000,2114.69 +1988-11-09,2127.49,2134.25,2100.82,2118.24,153140000,2118.24 +1988-11-08,2124.64,2146.87,2119.67,2127.49,141660000,2127.49 +1988-11-07,2143.14,2143.14,2113.62,2124.64,133870000,2124.64 +1988-11-04,2170.34,2173.90,2139.58,2145.80,143580000,2145.80 +1988-11-03,2156.83,2185.99,2153.45,2170.34,152980000,2170.34 +1988-11-02,2150.96,2167.67,2131.40,2156.83,161300000,2156.83 +1988-11-01,2148.65,2165.36,2132.82,2150.96,151250000,2150.96 +1988-10-31,2149.89,2161.63,2125.36,2148.65,143460000,2148.65 +1988-10-28,2140.83,2166.43,2135.67,2149.89,146300000,2149.89 +1988-10-27,2165.18,2165.54,2120.90,2140.83,196540000,2140.83 +1988-10-26,2173.36,2182.61,2148.47,2165.18,181550000,2165.18 +1988-10-25,2170.34,2188.66,2156.83,2173.36,155190000,2173.36 +1988-10-24,2183.50,2195.06,2162.16,2170.34,170590000,2170.34 +1988-10-21,2181.19,2193.28,2152.56,2183.50,195410000,2183.50 +1988-10-20,2137.27,2183.68,2129.80,2181.19,189580000,2181.19 +1988-10-19,2159.85,2173.01,2110.95,2137.27,186350000,2137.27 +1988-10-18,2140.47,2163.41,2124.29,2159.85,162500000,2159.85 +1988-10-17,2133.18,2150.60,2120.02,2140.47,119290000,2140.47 +1988-10-14,2133.36,2153.80,2118.77,2133.18,160240000,2133.18 +1988-10-13,2126.24,2149.54,2114.33,2133.36,154530000,2133.36 +1988-10-12,2146.34,2146.34,2113.44,2126.24,154840000,2126.24 +1988-10-11,2158.96,2164.83,2137.09,2156.47,140900000,2156.47 +1988-10-10,2150.25,2167.85,2139.05,2158.96,124660000,2158.96 +1988-10-07,2112.02,2157.72,2112.02,2150.25,216390000,2150.25 +1988-10-06,2106.51,2118.07,2092.64,2107.75,153570000,2107.75 +1988-10-05,2102.06,2119.84,2082.33,2106.51,175130000,2106.51 +1988-10-04,2105.26,2119.49,2090.68,2102.06,157760000,2102.06 +1988-10-03,2112.91,2116.82,2083.39,2105.26,130380000,2105.26 +1988-09-30,2119.31,2140.29,2104.02,2112.91,175750000,2112.91 +1988-09-29,2085.53,2123.76,2084.46,2119.31,155790000,2119.31 +1988-09-28,2082.33,2096.37,2070.23,2085.53,113720000,2085.53 +1988-09-27,2085.17,2095.30,2069.88,2082.33,113010000,2082.33 +1988-09-26,2090.68,2098.33,2075.75,2085.17,116420000,2085.17 +1988-09-23,2080.01,2097.79,2070.41,2090.68,145100000,2090.68 +1988-09-22,2090.50,2097.08,2066.68,2080.01,150670000,2080.01 +1988-09-21,2087.48,2103.31,2078.77,2090.50,127400000,2090.50 +1988-09-20,2081.08,2097.26,2073.26,2087.48,142220000,2087.48 +1988-09-19,2096.55,2096.55,2066.86,2081.08,135770000,2081.08 +1988-09-16,2092.28,2113.26,2077.70,2098.15,211110000,2098.15 +1988-09-15,2100.64,2112.55,2084.28,2092.28,161210000,2092.28 +1988-09-14,2083.04,2111.66,2079.13,2100.64,177220000,2100.64 +1988-09-13,2072.37,2088.19,2055.30,2083.04,162490000,2083.04 +1988-09-12,2068.81,2088.55,2057.43,2072.37,114880000,2072.37 +1988-09-09,2063.12,2088.73,2038.94,2068.81,141540000,2068.81 +1988-09-08,2065.79,2079.30,2052.10,2063.12,149380000,2063.12 +1988-09-07,2065.26,2084.10,2052.98,2065.79,139590000,2065.79 +1988-09-06,2054.59,2074.68,2046.41,2065.26,122250000,2065.26 +1988-09-02,2022.40,2064.72,2022.40,2054.59,159840000,2054.59 +1988-09-01,2027.56,2027.56,1988.44,2002.31,144090000,2002.31 +1988-08-31,2038.23,2052.45,2022.94,2031.65,130480000,2031.65 +1988-08-30,2041.43,2052.63,2028.63,2038.23,108720000,2038.23 +1988-08-29,2019.56,2047.47,2019.56,2041.43,99280000,2041.43 +1988-08-26,2010.85,2027.38,2002.13,2017.43,89240000,2017.43 +1988-08-25,2022.05,2022.05,1990.40,2010.85,127640000,2010.85 +1988-08-24,1990.04,2028.98,1990.04,2026.67,127800000,2026.67 +1988-08-23,1990.22,2008.36,1978.66,1989.33,119540000,1989.33 +1988-08-22,2016.00,2027.56,1987.02,1990.22,122250000,1990.22 +1988-08-19,2027.03,2048.89,2011.38,2016.00,122370000,2016.00 +1988-08-18,2025.96,2046.59,2014.22,2027.03,139820000,2027.03 +1988-08-17,2021.51,2042.50,2003.38,2025.96,169500000,2025.96 +1988-08-16,2004.27,2043.56,1993.78,2021.51,162790000,2021.51 +1988-08-15,2037.52,2040.72,1998.76,2004.27,128560000,2004.27 +1988-08-12,2039.30,2046.41,2019.38,2037.52,176960000,2037.52 +1988-08-11,2034.14,2050.68,2014.05,2039.30,173000000,2039.30 +1988-08-10,2078.41,2078.41,2023.65,2034.14,200950000,2034.14 +1988-08-09,2107.40,2110.95,2061.17,2079.13,200710000,2079.13 +1988-08-08,2119.13,2134.60,2103.13,2107.40,148800000,2107.40 +1988-08-05,2126.60,2128.73,2105.44,2119.13,113400000,2119.13 +1988-08-04,2134.07,2147.23,2117.71,2126.60,157240000,2126.60 +1988-08-03,2131.22,2147.94,2115.40,2134.07,203590000,2134.07 +1988-08-02,2130.51,2151.85,2112.20,2131.22,166660000,2131.22 +1988-08-01,2128.73,2146.16,2111.84,2130.51,138170000,2130.51 +1988-07-29,2084.28,2133.01,2084.28,2128.73,192340000,2128.73 +1988-07-28,2053.70,2089.26,2047.30,2082.33,154570000,2082.33 +1988-07-27,2073.97,2089.97,2047.30,2053.70,135890000,2053.70 +1988-07-26,2071.83,2089.79,2059.57,2073.97,121960000,2073.97 +1988-07-25,2060.99,2082.68,2048.54,2071.83,215140000,2071.83 +1988-07-22,2086.59,2092.46,2050.32,2060.99,148880000,2060.99 +1988-07-21,2110.60,2113.62,2077.17,2086.59,149460000,2086.59 +1988-07-20,2097.26,2119.31,2091.39,2110.60,151990000,2110.60 +1988-07-19,2117.89,2127.67,2081.08,2097.26,144110000,2097.26 +1988-07-18,2129.45,2132.47,2099.40,2117.89,156210000,2117.89 +1988-07-15,2113.62,2140.11,2099.57,2129.45,199710000,2129.45 +1988-07-14,2104.37,2125.71,2089.26,2113.62,172410000,2113.62 +1988-07-13,2092.64,2114.15,2073.44,2104.37,218930000,2104.37 +1988-07-12,2111.31,2121.44,2077.52,2092.64,161650000,2092.64 +1988-07-11,2106.15,2126.07,2098.68,2111.31,123300000,2111.31 +1988-07-08,2122.69,2133.53,2099.40,2106.15,136070000,2106.15 +1988-07-07,2130.16,2136.02,2101.35,2122.69,156100000,2122.69 +1988-07-06,2158.61,2169.45,2107.40,2130.16,189630000,2130.16 +1988-07-05,2131.58,2162.52,2117.71,2158.61,171790000,2158.61 +1988-07-01,2141.71,2151.14,2118.95,2131.58,238330000,2131.58 +1988-06-30,2121.98,2147.22,2112.38,2141.71,227410000,2141.71 +1988-06-29,2130.87,2144.91,2106.15,2121.98,159590000,2121.98 +1988-06-28,2108.46,2139.94,2100.11,2130.87,152370000,2130.87 +1988-06-27,2142.96,2147.76,2101.17,2108.46,264410000,2108.46 +1988-06-24,2148.29,2165.36,2133.53,2142.96,179880000,2142.96 +1988-06-23,2152.20,2169.10,2131.58,2148.29,185770000,2148.29 +1988-06-22,2131.05,2160.10,2131.05,2152.20,217510000,2152.20 +1988-06-21,2083.93,2115.75,2072.55,2109.17,155060000,2109.17 +1988-06-20,2100.11,2100.11,2072.72,2083.93,116750000,2083.93 +1988-06-17,2094.24,2116.47,2070.06,2104.02,343920000,2104.02 +1988-06-16,2120.73,2120.73,2081.97,2094.24,161550000,2094.24 +1988-06-15,2124.47,2137.45,2109.53,2131.40,150260000,2131.40 +1988-06-14,2111.13,2148.12,2111.13,2124.47,227150000,2124.47 +1988-06-13,2101.71,2114.15,2084.64,2099.40,125310000,2099.40 +1988-06-10,2093.35,2123.58,2084.81,2101.71,155710000,2101.71 +1988-06-09,2102.95,2119.31,2081.79,2093.35,235160000,2093.35 +1988-06-08,2055.83,2113.62,2055.83,2102.95,310030000,2102.95 +1988-06-07,2075.21,2082.86,2042.85,2054.59,168710000,2054.59 +1988-06-06,2071.31,2083.93,2049.08,2075.21,152460000,2075.21 +1988-06-03,2052.45,2080.73,2040.00,2071.31,189600000,2071.31 +1988-06-02,2064.01,2073.26,2030.94,2052.45,193540000,2052.45 +1988-06-01,2031.12,2076.28,2021.34,2064.01,234560000,2064.01 +1988-05-31,1959.38,2034.50,1959.38,2031.12,247610000,2031.12 +1988-05-27,1966.70,1970.84,1944.35,1956.44,133590000,1956.44 +1988-05-26,1961.37,1981.15,1951.28,1966.70,164260000,1966.70 +1988-05-25,1962.53,1984.58,1952.42,1961.37,138310000,1961.37 +1988-05-24,1941.48,1967.67,1938.16,1962.53,139930000,1962.53 +1988-05-23,1952.59,1962.37,1927.22,1941.48,102640000,1941.48 +1988-05-20,1958.72,1978.78,1940.48,1952.59,120600000,1952.59 +1988-05-19,1951.09,1963.86,1921.58,1958.72,165160000,1958.72 +1988-05-18,1986.41,1992.87,1941.31,1951.09,209420000,1951.09 +1988-05-17,2007.63,2026.69,1982.10,1986.41,133850000,1986.41 +1988-05-16,1990.55,2012.60,1980.27,2007.63,155010000,2007.63 +1988-05-13,1971.65,2001.49,1971.65,1990.55,147240000,1990.55 +1988-05-12,1965.85,1986.07,1960.54,1968.00,143880000,1968.00 +1988-05-11,1988.56,1988.56,1950.27,1965.85,176720000,1965.85 +1988-05-10,1997.35,2020.23,1984.42,2003.64,131200000,2003.64 +1988-05-09,2007.46,2013.59,1984.08,1997.35,166320000,1997.35 +1988-05-06,2013.59,2013.59,1997.84,2007.46,129080000,2007.46 +1988-05-05,2036.31,2038.46,2008.95,2020.23,171840000,2020.23 +1988-05-04,2058.36,2067.14,2029.51,2036.31,141320000,2036.31 +1988-05-03,2043.27,2071.95,2036.64,2058.36,176920000,2058.36 +1988-05-02,2032.33,2050.40,2019.89,2043.27,136470000,2043.27 +1988-04-29,2041.28,2047.91,2014.09,2032.33,135620000,2032.33 +1988-04-28,2047.91,2057.53,2026.03,2041.28,128680000,2041.28 +1988-04-27,2044.76,2066.64,2033.16,2047.91,133810000,2047.91 +1988-04-26,2035.97,2062.83,2023.04,2044.76,152300000,2044.76 +1988-04-25,2015.09,2048.57,2011.60,2035.97,156950000,2035.97 +1988-04-22,1987.40,2029.01,1985.58,2015.09,152520000,2015.09 +1988-04-21,1985.41,2030.50,1968.00,1987.40,168440000,1987.40 +1988-04-20,1999.50,2015.42,1975.46,1985.41,147590000,1985.41 +1988-04-19,2008.12,2047.08,1990.55,1999.50,161910000,1999.50 +1988-04-18,2013.93,2023.04,1985.74,2008.12,144650000,2008.12 +1988-04-15,2005.64,2031.33,1969.99,2013.93,234160000,2013.93 +1988-04-14,2083.22,2083.22,1998.18,2005.64,211810000,2005.64 +1988-04-13,2110.08,2121.35,2082.56,2107.10,185120000,2107.10 +1988-04-12,2095.99,2120.69,2085.38,2110.08,146400000,2110.08 +1988-04-11,2090.19,2110.08,2075.27,2095.99,146370000,2095.99 +1988-04-08,2062.17,2103.78,2051.06,2090.19,169300000,2090.19 +1988-04-07,2061.67,2084.22,2042.94,2062.17,177840000,2062.17 +1988-04-06,1997.51,2067.47,1987.67,2061.67,189760000,2061.67 +1988-04-05,1980.60,2011.27,1969.99,1997.51,135290000,1997.51 +1988-04-04,1988.06,2013.26,1969.50,1980.60,182240000,1980.60 +1988-03-31,1978.12,2000.66,1957.89,1988.06,139870000,1988.06 +1988-03-30,1998.34,2017.57,1973.81,1978.12,151810000,1978.12 +1988-03-29,1979.77,2018.57,1979.61,1998.34,152680000,1998.34 +1988-03-28,1978.95,1990.88,1951.26,1979.77,142820000,1979.77 +1988-03-25,2023.87,2031.00,1973.81,1978.95,163170000,1978.95 +1988-03-24,2052.22,2052.22,2011.44,2023.87,184910000,2023.87 +1988-03-23,2066.15,2085.05,2047.41,2067.64,167370000,2067.64 +1988-03-22,2067.14,2082.89,2052.06,2066.15,142000000,2066.15 +1988-03-21,2081.23,2081.23,2050.56,2067.14,128830000,2067.14 +1988-03-18,2086.04,2110.91,2067.64,2087.37,245750000,2087.37 +1988-03-17,2064.32,2093.17,2057.03,2086.04,211920000,2086.04 +1988-03-16,2047.41,2070.62,2027.02,2064.32,153590000,2064.32 +1988-03-15,2050.07,2062.17,2030.17,2047.41,133170000,2047.41 +1988-03-14,2034.98,2056.70,2023.04,2050.07,131890000,2050.07 +1988-03-11,2026.03,2049.07,1996.52,2034.98,200020000,2034.98 +1988-03-10,2074.27,2081.40,2020.72,2026.03,197260000,2026.03 +1988-03-09,2081.07,2094.16,2064.49,2074.27,210900000,2074.27 +1988-03-08,2056.37,2090.02,2055.04,2081.07,237680000,2081.07 +1988-03-07,2057.86,2069.30,2034.15,2056.37,152980000,2056.37 +1988-03-04,2063.49,2076.76,2033.49,2057.86,201410000,2057.86 +1988-03-03,2071.29,2085.38,2048.41,2063.49,203310000,2063.49 +1988-03-02,2070.47,2094.50,2058.19,2071.29,199630000,2071.29 +1988-03-01,2071.62,2086.87,2048.57,2070.47,199990000,2070.47 +1988-02-29,2023.21,2074.60,2017.24,2071.62,236050000,2071.62 +1988-02-26,2017.57,2034.81,2005.14,2023.21,158060000,2023.21 +1988-02-25,2039.95,2078.08,2006.96,2017.57,213490000,2017.57 +1988-02-24,2039.12,2061.34,2022.88,2039.95,212730000,2039.95 +1988-02-23,2040.29,2057.03,2017.24,2039.12,192260000,2039.12 +1988-02-22,2014.59,2051.72,1998.67,2040.29,178930000,2040.29 +1988-02-19,1986.41,2018.90,1973.31,2014.59,180300000,2014.59 +1988-02-18,2000.99,2011.94,1972.81,1986.41,151430000,1986.41 +1988-02-17,2005.97,2026.19,1982.59,2000.99,176830000,2000.99 +1988-02-16,1983.26,2010.44,1969.83,2005.97,135380000,2005.97 +1988-02-12,1961.54,1995.69,1958.06,1983.26,177190000,1983.26 +1988-02-11,1962.04,1982.43,1942.81,1961.54,200760000,1961.54 +1988-02-10,1916.78,1967.84,1916.78,1962.04,187980000,1962.04 +1988-02-09,1895.72,1921.58,1885.78,1914.46,162350000,1914.46 +1988-02-08,1910.48,1911.14,1878.15,1895.72,168850000,1895.72 +1988-02-05,1923.57,1940.32,1906.32,1910.48,161310000,1910.48 +1988-02-04,1924.57,1941.48,1902.85,1923.57,186490000,1923.57 +1988-02-03,1952.92,1971.98,1907.00,1924.57,237270000,1924.57 +1988-02-02,1944.63,1965.02,1921.09,1952.92,164920000,1952.92 +1988-02-01,1958.22,1985.41,1935.84,1944.63,210660000,1944.63 +1988-01-29,1930.04,1967.67,1921.09,1958.22,211880000,1958.22 +1988-01-28,1911.14,1944.13,1904.34,1930.04,166430000,1930.04 +1988-01-27,1920.59,1951.76,1889.42,1911.14,176360000,1911.14 +1988-01-26,1946.45,1957.73,1906.50,1920.59,138380000,1920.59 +1988-01-25,1903.51,1960.54,1897.05,1946.45,275250000,1946.45 +1988-01-22,1879.31,1911.80,1876.16,1903.51,147050000,1903.51 +1988-01-21,1879.14,1903.35,1845.99,1879.31,158080000,1879.31 +1988-01-20,1934.85,1934.85,1858.59,1879.14,181660000,1879.14 +1988-01-19,1963.86,1977.29,1923.41,1936.34,153550000,1936.34 +1988-01-18,1956.07,1977.45,1938.99,1963.86,135100000,1963.86 +1988-01-15,1942.47,1988.40,1942.47,1956.07,197940000,1956.07 +1988-01-14,1924.73,1940.15,1894.06,1916.11,140570000,1916.11 +1988-01-13,1928.55,1959.55,1884.95,1924.73,154020000,1924.73 +1988-01-12,1945.13,1950.76,1877.98,1928.55,165730000,1928.55 +1988-01-11,1911.31,1985.25,1886.94,1945.13,158980000,1945.13 +1988-01-08,2051.89,2058.69,1898.04,1911.31,197300000,1911.31 +1988-01-07,2037.80,2061.51,2004.64,2051.89,175360000,2051.89 +1988-01-06,2031.50,2058.19,2012.77,2037.80,169730000,2037.80 +1988-01-05,2021.39,2075.27,2021.39,2031.50,209520000,2031.50 +1988-01-04,1950.76,2030.01,1950.76,2015.25,181810000,2015.25 +1987-12-31,1950.10,1951.26,1912.63,1938.83,170140000,1938.83 +1987-12-30,1926.89,1966.18,1925.73,1950.10,149230000,1950.10 +1987-12-29,1942.97,1951.76,1918.10,1926.89,111580000,1926.89 +1987-12-28,1966.18,1966.18,1921.92,1942.97,131220000,1942.97 +1987-12-24,2005.64,2013.10,1985.74,1999.67,108800000,1999.67 +1987-12-23,1978.45,2019.56,1977.62,2005.64,203110000,2005.64 +1987-12-22,1990.38,1999.67,1949.27,1978.45,192650000,1978.45 +1987-12-21,1975.30,2008.45,1959.56,1990.38,161790000,1990.38 +1987-12-18,1924.73,1982.92,1924.73,1975.30,276220000,1975.30 +1987-12-17,1974.47,1987.23,1917.44,1924.40,191780000,1924.40 +1987-12-16,1941.48,1984.08,1918.44,1974.47,193820000,1974.47 +1987-12-15,1932.86,1969.00,1916.28,1941.48,214970000,1941.48 +1987-12-14,1867.04,1942.31,1860.41,1932.86,187680000,1932.86 +1987-12-11,1855.44,1887.93,1838.36,1867.04,151680000,1867.04 +1987-12-10,1902.52,1923.57,1835.71,1855.44,188960000,1855.44 +1987-12-09,1868.37,1924.90,1846.65,1902.52,231430000,1902.52 +1987-12-08,1812.17,1870.69,1794.60,1868.37,227310000,1868.37 +1987-12-07,1766.74,1818.14,1765.75,1812.17,146660000,1812.17 +1987-12-04,1776.53,1794.60,1733.92,1766.74,184800000,1766.74 +1987-12-03,1848.97,1859.08,1772.21,1776.53,204160000,1776.53 +1987-12-02,1842.34,1871.52,1825.27,1848.97,148890000,1848.97 +1987-12-01,1833.55,1877.98,1829.08,1842.34,149870000,1842.34 +1987-11-30,1867.37,1867.37,1795.26,1833.55,268910000,1833.55 +1987-11-27,1946.95,1955.24,1907.00,1910.48,86360000,1910.48 +1987-11-25,1963.53,1982.59,1935.68,1946.95,139780000,1946.95 +1987-11-24,1936.84,1985.25,1936.84,1963.53,199520000,1963.53 +1987-11-23,1913.63,1931.86,1889.26,1923.08,143160000,1923.08 +1987-11-20,1895.39,1926.39,1853.61,1913.63,189170000,1913.63 +1987-11-19,1939.16,1941.98,1881.80,1895.39,157140000,1895.39 +1987-11-18,1922.25,1951.92,1888.93,1939.16,158260000,1939.16 +1987-11-17,1939.99,1939.99,1888.76,1922.25,148240000,1922.25 +1987-11-16,1935.01,1979.28,1921.75,1949.10,164340000,1949.10 +1987-11-13,1960.21,1973.81,1923.08,1935.01,174920000,1935.01 +1987-11-12,1934.84,1983.92,1934.84,1960.21,206280000,1960.21 +1987-11-11,1881.96,1927.72,1881.96,1899.20,147850000,1899.20 +1987-11-10,1900.20,1911.97,1845.99,1878.15,184310000,1878.15 +1987-11-09,1941.81,1941.81,1881.96,1900.20,160690000,1900.20 +1987-11-06,1985.41,2023.54,1938.83,1959.05,228290000,1959.05 +1987-11-05,1945.29,2011.94,1920.42,1985.41,226000000,1985.41 +1987-11-04,1963.53,1980.60,1913.50,1945.29,202500000,1945.29 +1987-11-03,1988.40,1988.40,1891.74,1963.53,227800000,1963.53 +1987-11-02,1993.53,2027.52,1957.23,2014.09,176000000,2014.09 +1987-10-30,1965.68,2049.07,1965.68,1993.53,303400000,1993.53 +1987-10-29,1849.30,1971.98,1849.30,1938.33,258100000,1938.33 +1987-10-28,1846.49,1904.51,1767.74,1846.82,279400000,1846.82 +1987-10-27,1806.70,1904.68,1806.70,1846.49,260200000,1846.49 +1987-10-26,1881.80,1881.80,1774.04,1793.93,308800000,1793.93 +1987-10-23,1950.43,1993.87,1898.54,1950.76,245600000,1950.76 +1987-10-22,2004.97,2004.97,1837.86,1950.43,392200000,1950.43 +1987-10-21,1951.76,2081.07,1951.76,2027.85,449600000,2027.85 +1987-10-20,1738.74,2067.47,1616.21,1841.01,608100000,1841.01 +1987-10-19,2164.16,2164.16,1677.55,1738.74,604300000,1738.74 +1987-10-16,2355.09,2396.21,2207.73,2246.73,338500000,2246.73 +1987-10-15,2412.70,2439.78,2345.63,2355.09,263200000,2355.09 +1987-10-14,2485.15,2485.15,2400.46,2412.70,207400000,2412.70 +1987-10-13,2471.44,2528.39,2456.92,2508.16,172900000,2508.16 +1987-10-12,2482.21,2504.90,2433.91,2471.44,141900000,2471.44 +1987-10-09,2516.64,2531.66,2472.26,2482.21,158300000,2482.21 +1987-10-08,2551.08,2561.36,2491.51,2516.64,198700000,2516.64 +1987-10-07,2548.63,2570.99,2511.75,2551.08,186300000,2551.08 +1987-10-06,2632.83,2632.83,2542.59,2548.63,175600000,2548.63 +1987-10-05,2640.99,2658.78,2610.97,2640.18,159700000,2640.18 +1987-10-02,2639.20,2662.37,2622.06,2640.99,189100000,2640.99 +1987-10-01,2596.28,2648.99,2593.18,2639.20,193200000,2639.20 +1987-09-30,2590.57,2613.58,2563.64,2596.28,183100000,2596.28 +1987-09-29,2601.50,2627.61,2569.03,2590.57,173500000,2590.57 +1987-09-28,2574.58,2634.95,2574.58,2601.50,188100000,2601.50 +1987-09-25,2566.42,2584.04,2543.73,2570.17,138000000,2570.17 +1987-09-24,2585.67,2603.95,2552.06,2566.42,162200000,2566.42 +1987-09-23,2568.05,2602.15,2554.83,2585.67,220300000,2585.67 +1987-09-22,2492.82,2572.62,2468.99,2568.05,209500000,2568.05 +1987-09-21,2524.64,2559.73,2479.77,2492.82,170100000,2492.82 +1987-09-18,2527.90,2554.83,2514.03,2524.64,188100000,2524.64 +1987-09-17,2530.19,2557.28,2508.00,2527.90,150700000,2527.90 +1987-09-16,2566.58,2585.18,2522.52,2530.19,195700000,2530.19 +1987-09-15,2610.48,2610.48,2560.22,2566.58,136200000,2566.58 +1987-09-14,2608.74,2634.57,2587.85,2613.04,154400000,2613.04 +1987-09-11,2576.05,2625.95,2575.41,2608.74,178000000,2608.74 +1987-09-10,2549.43,2595.50,2549.43,2576.05,179800000,2576.05 +1987-09-09,2545.12,2570.63,2522.80,2549.27,164900000,2549.27 +1987-09-08,2561.38,2571.43,2493.78,2545.12,242900000,2545.12 +1987-09-04,2599.49,2617.19,2556.28,2561.38,129100000,2561.38 +1987-09-03,2602.04,2642.22,2560.11,2599.49,165200000,2599.49 +1987-09-02,2610.97,2631.06,2567.76,2602.04,199900000,2602.04 +1987-09-01,2662.95,2695.47,2594.07,2610.97,193500000,2610.97 +1987-08-31,2639.35,2679.53,2623.57,2662.95,165800000,2662.95 +1987-08-28,2675.06,2680.32,2632.02,2639.35,156300000,2639.35 +1987-08-27,2701.85,2705.52,2661.35,2675.06,163600000,2675.06 +1987-08-26,2722.42,2742.03,2686.54,2701.85,196200000,2701.85 +1987-08-25,2697.07,2746.65,2694.83,2722.42,213500000,2722.42 +1987-08-24,2709.50,2730.55,2678.89,2697.07,149400000,2697.07 +1987-08-21,2706.79,2735.49,2689.09,2709.50,189600000,2709.50 +1987-08-20,2665.97,2714.60,2665.97,2706.79,196600000,2706.79 +1987-08-19,2654.66,2676.18,2628.19,2665.82,180900000,2665.82 +1987-08-18,2691.01,2691.01,2626.59,2654.66,198400000,2654.66 +1987-08-17,2685.43,2713.97,2674.43,2700.57,166100000,2700.57 +1987-08-14,2691.49,2713.33,2660.08,2685.43,196100000,2685.43 +1987-08-13,2669.32,2714.92,2656.57,2691.49,217100000,2691.49 +1987-08-12,2680.48,2700.73,2648.60,2669.32,235800000,2669.32 +1987-08-11,2635.84,2691.96,2635.52,2680.48,278100000,2680.48 +1987-08-10,2592.00,2640.15,2587.85,2635.84,187200000,2635.84 +1987-08-07,2594.23,2611.93,2576.21,2592.00,212700000,2592.00 +1987-08-06,2566.65,2600.92,2551.82,2594.23,192000000,2594.23 +1987-08-05,2546.72,2586.58,2540.98,2566.65,192700000,2566.65 +1987-08-04,2557.08,2568.72,2525.99,2546.72,166500000,2546.72 +1987-08-03,2572.07,2585.30,2536.67,2557.08,207800000,2557.08 +1987-07-31,2567.44,2588.33,2551.02,2572.07,181900000,2572.07 +1987-07-30,2539.54,2576.85,2527.42,2567.44,208000000,2567.44 +1987-07-29,2519.77,2548.47,2501.59,2539.54,196200000,2539.54 +1987-07-28,2493.94,2537.15,2489.32,2519.77,172600000,2519.77 +1987-07-27,2485.33,2511.64,2468.75,2493.94,152000000,2493.94 +1987-07-24,2471.94,2494.90,2462.53,2485.33,158400000,2485.33 +1987-07-23,2470.18,2492.67,2447.07,2471.94,163700000,2471.94 +1987-07-22,2467.95,2488.68,2448.50,2470.18,174700000,2470.18 +1987-07-21,2487.82,2500.16,2444.67,2467.95,186600000,2467.95 +1987-07-20,2510.04,2512.28,2476.88,2487.82,168100000,2487.82 +1987-07-17,2496.97,2533.64,2485.65,2510.04,210000000,2510.04 +1987-07-16,2483.74,2511.48,2471.78,2496.97,210900000,2496.97 +1987-07-15,2481.35,2502.23,2455.20,2483.74,202300000,2483.74 +1987-07-14,2452.97,2492.98,2442.60,2481.35,185900000,2481.35 +1987-07-13,2455.99,2470.34,2427.14,2452.97,152500000,2452.97 +1987-07-10,2451.21,2470.50,2435.91,2455.99,172100000,2455.99 +1987-07-09,2463.97,2478.48,2441.17,2451.21,195400000,2451.21 +1987-07-08,2449.78,2476.24,2432.56,2463.97,207500000,2463.97 +1987-07-07,2429.53,2467.63,2425.06,2449.78,200700000,2449.78 +1987-07-06,2436.70,2460.30,2412.95,2429.53,155000000,2429.53 +1987-07-02,2415.66,2446.27,2415.66,2436.70,154900000,2436.70 +1987-07-01,2418.53,2430.80,2391.26,2409.76,157000000,2409.76 +1987-06-30,2446.91,2456.31,2401.15,2418.53,165500000,2418.53 +1987-06-29,2436.86,2460.30,2423.79,2446.91,142500000,2446.91 +1987-06-26,2451.05,2453.92,2423.63,2436.86,150500000,2436.86 +1987-06-25,2430.33,2460.14,2430.33,2451.05,173500000,2451.05 +1987-06-24,2439.73,2454.08,2415.34,2428.41,153800000,2428.41 +1987-06-23,2445.51,2466.04,2421.72,2439.73,194200000,2439.73 +1987-06-22,2420.85,2457.29,2417.40,2445.51,178200000,2445.51 +1987-06-19,2408.13,2431.85,2395.26,2420.85,220500000,2420.85 +1987-06-18,2407.35,2419.91,2386.46,2408.13,168600000,2408.13 +1987-06-17,2407.35,2427.29,2390.70,2407.35,184700000,2407.35 +1987-06-16,2391.54,2415.36,2376.10,2407.35,157800000,2407.35 +1987-06-15,2377.73,2409.44,2374.39,2391.54,156900000,2391.54 +1987-06-12,2360.74,2399.42,2360.74,2377.73,175100000,2377.73 +1987-06-11,2353.61,2380.46,2341.93,2360.13,138900000,2360.13 +1987-06-10,2352.70,2389.71,2328.58,2353.61,197400000,2353.61 +1987-06-09,2351.64,2366.05,2331.77,2352.70,164200000,2352.70 +1987-06-08,2326.15,2362.71,2306.89,2351.64,136400000,2351.64 +1987-06-05,2337.08,2346.33,2312.35,2326.15,129100000,2326.15 +1987-06-04,2320.69,2343.45,2308.71,2337.08,140300000,2337.08 +1987-06-03,2283.37,2330.10,2283.37,2320.69,164200000,2320.69 +1987-06-02,2288.23,2306.43,2260.62,2278.22,153400000,2278.22 +1987-06-01,2291.57,2319.78,2277.00,2288.23,149300000,2288.23 +1987-05-29,2310.68,2332.39,2281.10,2291.57,153500000,2291.57 +1987-05-28,2295.81,2323.57,2265.93,2310.68,153800000,2310.68 +1987-05-27,2297.94,2320.24,2274.27,2295.81,171400000,2295.81 +1987-05-26,2252.88,2305.52,2252.88,2297.94,152500000,2297.94 +1987-05-22,2225.77,2258.42,2220.15,2243.20,135800000,2243.20 +1987-05-21,2215.87,2256.06,2212.77,2225.77,164800000,2225.77 +1987-05-20,2221.28,2248.08,2188.53,2215.87,206800000,2215.87 +1987-05-19,2258.66,2280.46,2205.40,2221.28,175400000,2221.28 +1987-05-18,2272.52,2282.91,2227.05,2258.66,174200000,2258.66 +1987-05-15,2324.48,2324.48,2266.60,2272.52,180800000,2272.52 +1987-05-14,2329.68,2349.31,2307.16,2325.49,152000000,2325.49 +1987-05-13,2322.60,2346.85,2302.11,2329.68,171000000,2329.68 +1987-05-12,2307.30,2333.14,2289.84,2322.60,155300000,2322.60 +1987-05-11,2322.30,2380.77,2297.92,2307.30,203700000,2307.30 +1987-05-08,2334.66,2357.24,2303.13,2322.30,161900000,2322.30 +1987-05-07,2342.19,2368.61,2315.77,2334.66,215200000,2334.66 +1987-05-06,2338.07,2369.89,2309.94,2342.19,196600000,2342.19 +1987-05-05,2294.60,2348.01,2294.60,2338.07,192300000,2338.07 +1987-05-04,2280.40,2305.96,2255.26,2286.22,140600000,2286.22 +1987-05-01,2286.36,2312.22,2256.68,2280.40,160100000,2280.40 +1987-04-30,2254.26,2314.20,2250.00,2286.36,183100000,2286.36 +1987-04-29,2231.96,2283.24,2228.27,2254.26,173600000,2254.26 +1987-04-28,2230.54,2270.74,2214.06,2231.96,180100000,2231.96 +1987-04-27,2235.37,2264.35,2180.54,2230.54,222700000,2230.54 +1987-04-24,2279.55,2279.55,2221.59,2235.37,178000000,2235.37 +1987-04-23,2285.94,2318.61,2255.82,2280.97,173900000,2280.97 +1987-04-22,2337.07,2353.13,2282.10,2285.94,185900000,2285.94 +1987-04-21,2270.60,2341.05,2240.91,2337.07,191300000,2337.07 +1987-04-20,2275.99,2300.57,2252.56,2270.60,139100000,2270.60 +1987-04-16,2282.95,2320.88,2264.63,2275.99,189600000,2275.99 +1987-04-15,2252.98,2307.53,2243.32,2282.95,198200000,2282.95 +1987-04-14,2287.07,2293.89,2213.64,2252.98,266500000,2252.98 +1987-04-13,2338.78,2355.68,2278.41,2287.07,181000000,2287.07 +1987-04-10,2339.20,2358.66,2305.11,2338.78,169500000,2338.78 +1987-04-09,2372.16,2383.81,2320.60,2339.20,180300000,2339.20 +1987-04-08,2360.94,2396.16,2342.61,2372.16,179800000,2372.16 +1987-04-07,2405.54,2428.41,2352.84,2360.94,186400000,2360.94 +1987-04-06,2390.34,2425.00,2384.80,2405.54,173700000,2405.54 +1987-04-03,2320.45,2402.41,2307.67,2390.34,213400000,2390.34 +1987-04-02,2316.05,2347.59,2299.29,2320.45,183000000,2320.45 +1987-04-01,2304.69,2325.14,2271.16,2316.05,182600000,2316.05 +1987-03-31,2278.41,2315.48,2271.31,2304.69,171800000,2304.69 +1987-03-30,2303.41,2303.41,2230.26,2278.41,208400000,2278.41 +1987-03-27,2372.59,2386.65,2326.99,2335.80,184400000,2335.80 +1987-03-26,2363.49,2399.57,2359.38,2372.59,196000000,2372.59 +1987-03-25,2369.18,2383.52,2344.46,2363.49,171300000,2363.49 +1987-03-24,2363.78,2387.36,2348.01,2369.18,189900000,2369.18 +1987-03-23,2333.52,2373.01,2322.44,2363.78,189100000,2363.78 +1987-03-20,2299.57,2342.05,2295.03,2333.52,234000000,2333.52 +1987-03-19,2286.93,2310.65,2270.17,2299.57,166100000,2299.57 +1987-03-18,2284.80,2315.20,2262.22,2286.93,198100000,2286.93 +1987-03-17,2248.44,2287.78,2238.21,2284.80,177300000,2284.80 +1987-03-16,2258.66,2263.64,2224.86,2248.44,134900000,2248.44 +1987-03-13,2267.34,2282.39,2245.03,2258.66,150900000,2258.66 +1987-03-12,2268.98,2288.15,2250.14,2267.34,174500000,2267.34 +1987-03-11,2280.09,2302.17,2256.47,2268.98,186900000,2268.98 +1987-03-10,2260.12,2289.93,2246.48,2280.09,174800000,2280.09 +1987-03-09,2279.67,2279.67,2238.61,2260.12,165400000,2260.12 +1987-03-06,2276.43,2298.23,2256.47,2280.23,181600000,2280.23 +1987-03-05,2257.45,2295.70,2253.94,2276.43,205400000,2276.43 +1987-03-04,2226.52,2270.11,2226.24,2257.45,198400000,2257.45 +1987-03-03,2220.47,2240.44,2209.93,2226.52,149200000,2226.52 +1987-03-02,2223.99,2242.55,2209.08,2220.47,156700000,2220.47 +1987-02-27,2216.68,2237.91,2204.87,2223.99,142800000,2223.99 +1987-02-26,2226.24,2239.31,2196.71,2216.68,165800000,2216.68 +1987-02-25,2223.28,2248.59,2209.36,2226.24,184100000,2226.24 +1987-02-24,2216.54,2244.09,2202.62,2223.28,151300000,2223.28 +1987-02-23,2235.24,2249.86,2186.30,2216.54,170500000,2216.54 +1987-02-20,2244.09,2260.12,2220.89,2235.24,175800000,2235.24 +1987-02-19,2237.63,2263.22,2212.32,2244.09,181500000,2244.09 +1987-02-18,2237.49,2266.45,2213.16,2237.63,218200000,2237.63 +1987-02-17,2184.90,2242.41,2184.90,2237.49,187800000,2237.49 +1987-02-13,2165.78,2201.35,2148.76,2183.35,184400000,2183.35 +1987-02-12,2171.96,2203.18,2146.09,2165.78,200400000,2165.78 +1987-02-11,2158.04,2182.51,2145.53,2171.96,172400000,2171.96 +1987-02-10,2176.74,2183.63,2134.42,2158.04,168300000,2158.04 +1987-02-09,2186.87,2195.73,2157.90,2176.74,143300000,2176.74 +1987-02-06,2201.49,2213.30,2176.32,2186.87,184100000,2186.87 +1987-02-05,2191.23,2223.28,2174.63,2201.49,256700000,2201.49 +1987-02-04,2168.45,2198.40,2154.67,2191.23,222400000,2191.23 +1987-02-03,2179.42,2201.21,2159.73,2168.45,198100000,2168.45 +1987-02-02,2158.04,2193.62,2142.15,2179.42,177400000,2179.42 +1987-01-30,2160.01,2173.51,2127.67,2158.04,163400000,2158.04 +1987-01-29,2163.39,2193.34,2139.20,2160.01,205300000,2160.01 +1987-01-28,2150.45,2181.10,2136.39,2163.39,195800000,2163.39 +1987-01-27,2110.24,2160.85,2110.24,2150.45,192300000,2150.45 +1987-01-26,2101.52,2125.42,2079.72,2107.28,138900000,2107.28 +1987-01-23,2145.67,2214.57,2062.85,2101.52,302400000,2101.52 +1987-01-22,2094.07,2151.86,2083.66,2145.67,188700000,2145.67 +1987-01-21,2104.47,2123.88,2079.02,2094.07,184200000,2094.07 +1987-01-20,2102.50,2131.61,2082.54,2104.47,224800000,2104.47 +1987-01-19,2076.63,2112.49,2051.32,2102.50,162800000,2102.50 +1987-01-16,2070.73,2099.69,2054.56,2076.63,218400000,2076.63 +1987-01-15,2035.01,2091.25,2030.79,2070.73,253100000,2070.73 +1987-01-14,2012.94,2046.26,2003.94,2035.01,214200000,2035.01 +1987-01-13,2009.42,2027.14,1994.52,2012.94,170900000,2012.94 +1987-01-12,2005.91,2022.08,1987.63,2009.42,184200000,2009.42 +1987-01-09,2002.25,2021.65,1988.61,2005.91,193000000,2005.91 +1987-01-08,1993.95,2014.20,1975.96,2002.25,194500000,2002.25 +1987-01-07,1974.83,2003.09,1965.69,1993.95,190900000,1993.95 +1987-01-06,1971.32,1993.81,1961.90,1974.83,189300000,1974.83 +1987-01-05,1936.59,1980.74,1936.59,1971.32,181900000,1971.32 +1987-01-02,1897.36,1933.49,1897.36,1927.31,91880000,1927.31 +1986-12-31,1908.61,1920.42,1885.40,1895.95,139200000,1895.95 +1986-12-30,1912.12,1920.70,1894.69,1908.61,126200000,1908.61 +1986-12-29,1930.40,1931.38,1904.53,1912.12,99800000,1912.12 +1986-12-26,1926.88,1939.12,1919.71,1930.40,48860000,1930.40 +1986-12-24,1914.37,1937.57,1910.01,1926.88,95410000,1926.88 +1986-12-23,1926.18,1933.77,1902.28,1914.37,188700000,1914.37 +1986-12-22,1928.85,1938.84,1907.76,1926.18,157600000,1926.18 +1986-12-19,1912.82,1935.18,1899.89,1928.85,244700000,1928.85 +1986-12-18,1918.31,1927.02,1900.17,1912.82,155400000,1912.82 +1986-12-17,1936.16,1937.57,1909.45,1918.31,148800000,1918.31 +1986-12-16,1922.81,1942.91,1912.40,1936.16,157000000,1936.16 +1986-12-15,1912.26,1925.34,1887.09,1922.81,148200000,1922.81 +1986-12-12,1923.65,1932.09,1904.39,1912.26,126600000,1912.26 +1986-12-11,1932.93,1947.41,1904.81,1923.65,136000000,1923.65 +1986-12-10,1916.90,1943.05,1908.32,1932.93,139700000,1932.93 +1986-12-09,1930.26,1939.82,1909.87,1916.90,128700000,1916.90 +1986-12-08,1925.06,1946.71,1906.92,1930.26,159000000,1930.26 +1986-12-05,1939.68,1950.22,1911.70,1925.06,139800000,1925.06 +1986-12-04,1947.27,1963.30,1930.26,1939.68,156900000,1939.68 +1986-12-03,1955.57,1971.74,1933.91,1947.27,200100000,1947.27 +1986-12-02,1914.93,1958.80,1914.93,1955.57,230400000,1955.57 +1986-12-01,1914.23,1915.91,1880.48,1912.54,133800000,1912.54 +1986-11-28,1916.76,1923.51,1903.82,1914.23,93530000,1914.23 +1986-11-26,1912.12,1926.46,1895.11,1916.76,152000000,1916.76 +1986-11-25,1906.07,1922.81,1890.04,1912.12,154600000,1912.12 +1986-11-24,1893.56,1921.40,1879.08,1906.07,150800000,1906.07 +1986-11-21,1860.66,1901.86,1853.07,1893.56,200700000,1893.56 +1986-11-20,1826.63,1866.28,1823.12,1860.66,158100000,1860.66 +1986-11-19,1817.21,1838.02,1797.10,1826.63,183300000,1826.63 +1986-11-18,1860.52,1864.31,1806.52,1817.21,185300000,1817.21 +1986-11-17,1873.59,1879.92,1846.74,1860.52,133300000,1860.52 +1986-11-14,1862.20,1883.57,1848.28,1873.59,172100000,1873.59 +1986-11-13,1893.70,1901.01,1857.28,1862.20,164000000,1862.20 +1986-11-12,1895.95,1909.31,1876.97,1893.70,162200000,1893.70 +1986-11-11,1892.29,1904.95,1882.45,1895.95,118500000,1895.95 +1986-11-10,1886.53,1901.01,1871.20,1892.29,120200000,1892.29 +1986-11-07,1891.59,1899.47,1870.78,1886.53,142300000,1886.53 +1986-11-06,1899.04,1907.48,1868.95,1891.59,165300000,1891.59 +1986-11-05,1892.44,1911.14,1876.55,1899.04,183200000,1899.04 +1986-11-04,1894.26,1902.00,1873.88,1892.44,163200000,1892.44 +1986-11-03,1877.71,1902.28,1870.78,1894.26,138200000,1894.26 +1986-10-31,1878.37,1891.73,1858.13,1877.71,147200000,1877.71 +1986-10-30,1862.77,1894.69,1862.77,1878.37,194200000,1878.37 +1986-10-29,1845.47,1863.33,1834.51,1851.80,164400000,1851.80 +1986-10-28,1841.82,1863.47,1830.99,1845.47,145900000,1845.47 +1986-10-27,1832.36,1850.11,1817.49,1841.82,133200000,1841.82 +1986-10-24,1834.93,1851.66,1821.71,1832.36,137500000,1832.36 +1986-10-23,1808.35,1845.05,1806.95,1834.93,150900000,1834.93 +1986-10-22,1805.68,1821.29,1793.59,1808.35,114000000,1808.35 +1986-10-21,1811.02,1822.98,1792.04,1805.68,110000000,1805.68 +1986-10-20,1826.63,1826.63,1793.87,1811.02,109000000,1811.02 +1986-10-17,1836.19,1844.91,1817.07,1837.04,124100000,1837.04 +1986-10-16,1831.69,1852.64,1819.18,1836.19,156900000,1836.19 +1986-10-15,1800.20,1835.77,1792.18,1831.69,144300000,1831.69 +1986-10-14,1798.37,1816.51,1783.32,1800.20,116800000,1800.20 +1986-10-13,1793.17,1806.95,1781.50,1798.37,54990000,1798.37 +1986-10-10,1796.82,1806.38,1780.93,1793.17,105100000,1793.17 +1986-10-09,1803.85,1824.24,1785.85,1796.82,153400000,1796.82 +1986-10-08,1784.45,1812.43,1772.22,1803.85,141700000,1803.85 +1986-10-07,1784.45,1799.35,1765.19,1784.45,125100000,1784.45 +1986-10-06,1774.18,1794.85,1763.36,1784.45,88250000,1784.45 +1986-10-03,1781.21,1806.38,1761.25,1774.18,128100000,1774.18 +1986-10-02,1782.90,1796.54,1767.72,1781.21,128100000,1781.21 +1986-10-01,1767.58,1805.82,1762.65,1782.90,143600000,1782.90 +1986-09-30,1755.20,1790.35,1750.14,1767.58,124900000,1767.58 +1986-09-29,1768.98,1768.98,1732.99,1755.20,115600000,1755.20 +1986-09-26,1768.56,1788.10,1750.14,1769.69,115300000,1769.69 +1986-09-25,1803.15,1803.15,1753.80,1768.56,134300000,1768.56 +1986-09-24,1797.81,1820.02,1786.28,1803.29,134600000,1803.29 +1986-09-23,1793.45,1809.76,1778.54,1797.81,132600000,1797.81 +1986-09-22,1762.65,1797.81,1761.67,1793.45,126100000,1793.45 +1986-09-19,1774.18,1783.04,1747.61,1762.65,153900000,1762.65 +1986-09-18,1769.40,1789.93,1748.03,1774.18,132200000,1774.18 +1986-09-17,1778.54,1799.35,1757.87,1769.40,141000000,1769.40 +1986-09-16,1767.58,1785.01,1739.60,1778.54,131200000,1778.54 +1986-09-15,1758.72,1786.98,1746.20,1767.58,155600000,1767.58 +1986-09-12,1792.89,1805.40,1733.55,1758.72,240500000,1758.72 +1986-09-11,1868.67,1868.67,1780.79,1792.89,237600000,1792.89 +1986-09-10,1884.14,1897.50,1863.05,1879.50,140300000,1879.50 +1986-09-09,1888.64,1909.45,1874.02,1884.14,137500000,1884.14 +1986-09-08,1899.75,1907.06,1866.84,1888.64,153300000,1888.64 +1986-09-05,1919.71,1933.35,1890.19,1899.75,180600000,1899.75 +1986-09-04,1881.33,1927.87,1877.25,1919.71,189400000,1919.71 +1986-09-03,1870.36,1888.22,1852.78,1881.33,154300000,1881.33 +1986-09-02,1898.34,1913.39,1857.42,1870.36,135500000,1870.36 +1986-08-29,1900.17,1913.53,1883.44,1898.34,125300000,1898.34 +1986-08-28,1904.53,1912.26,1882.73,1900.17,125100000,1900.17 +1986-08-27,1904.25,1918.59,1887.80,1904.53,143300000,1904.53 +1986-08-26,1871.77,1911.28,1870.50,1904.25,156600000,1904.25 +1986-08-25,1887.80,1893.42,1860.52,1871.77,104400000,1871.77 +1986-08-22,1881.19,1899.04,1868.11,1887.80,118100000,1887.80 +1986-08-21,1881.33,1899.47,1864.31,1881.19,135200000,1881.19 +1986-08-20,1862.91,1889.34,1849.97,1881.33,156600000,1881.33 +1986-08-19,1869.52,1880.20,1846.88,1862.91,109300000,1862.91 +1986-08-18,1855.60,1875.14,1842.66,1869.52,112800000,1869.52 +1986-08-15,1844.91,1863.61,1829.02,1855.60,123500000,1855.60 +1986-08-14,1844.49,1859.81,1832.54,1844.91,123800000,1844.91 +1986-08-13,1835.49,1860.66,1822.98,1844.49,156400000,1844.49 +1986-08-12,1811.16,1840.55,1804.42,1835.49,131700000,1835.49 +1986-08-11,1782.62,1824.66,1779.25,1811.16,125600000,1811.16 +1986-08-08,1786.28,1799.78,1769.69,1782.62,106300000,1782.62 +1986-08-07,1779.53,1802.02,1766.17,1786.28,122400000,1786.28 +1986-08-06,1777.00,1788.67,1759.84,1779.53,127500000,1779.53 +1986-08-05,1769.97,1800.20,1766.87,1777.00,153100000,1777.00 +1986-08-04,1763.64,1785.15,1730.60,1769.97,130000000,1769.97 +1986-08-01,1775.31,1788.80,1753.09,1763.64,114900000,1763.64 +1986-07-31,1779.39,1794.29,1764.20,1775.31,112700000,1775.31 +1986-07-30,1766.87,1794.15,1741.56,1779.39,146700000,1779.39 +1986-07-29,1773.90,1788.95,1752.95,1766.87,115700000,1766.87 +1986-07-28,1810.04,1815.24,1760.26,1773.90,128000000,1773.90 +1986-07-25,1791.62,1821.57,1791.06,1810.04,132000000,1810.04 +1986-07-24,1798.37,1806.81,1778.68,1791.62,134700000,1791.62 +1986-07-23,1795.13,1813.70,1780.09,1798.37,133300000,1798.37 +1986-07-22,1779.11,1810.46,1769.12,1795.13,138500000,1795.13 +1986-07-21,1777.98,1792.60,1763.92,1779.11,106300000,1779.11 +1986-07-18,1781.78,1807.37,1754.64,1777.98,149700000,1777.98 +1986-07-17,1774.18,1802.73,1762.09,1781.78,132400000,1781.78 +1986-07-16,1768.70,1794.29,1759.70,1774.18,160800000,1774.18 +1986-07-15,1793.45,1805.54,1760.12,1768.70,184000000,1768.70 +1986-07-14,1816.65,1816.65,1785.29,1793.45,123200000,1793.45 +1986-07-11,1831.83,1840.97,1810.88,1821.43,124500000,1821.43 +1986-07-10,1826.07,1842.94,1799.07,1831.83,146200000,1831.83 +1986-07-09,1820.73,1838.58,1807.65,1826.07,142900000,1826.07 +1986-07-08,1834.36,1834.36,1794.99,1820.73,174100000,1820.73 +1986-07-07,1895.53,1895.53,1834.08,1838.86,138200000,1838.86 +1986-07-03,1909.03,1918.59,1887.23,1900.87,108300000,1900.87 +1986-07-02,1903.54,1922.67,1891.31,1909.03,150000000,1909.03 +1986-07-01,1892.72,1911.28,1878.52,1903.54,147700000,1903.54 +1986-06-30,1885.26,1908.62,1876.12,1892.72,135100000,1892.72 +1986-06-27,1880.20,1898.90,1871.34,1885.26,123800000,1885.26 +1986-06-26,1885.05,1897.22,1867.41,1880.20,134100000,1880.20 +1986-06-25,1875.55,1903.36,1870.32,1885.05,161800000,1885.05 +1986-06-24,1864.26,1891.80,1853.94,1875.55,140600000,1875.55 +1986-06-23,1879.54,1883.40,1853.39,1864.26,123800000,1864.26 +1986-06-20,1855.86,1882.85,1847.64,1879.54,149100000,1879.54 +1986-06-19,1868.94,1883.12,1851.46,1855.86,129000000,1855.86 +1986-06-18,1865.78,1881.33,1843.75,1868.94,117000000,1868.94 +1986-06-17,1871.77,1886.98,1853.94,1865.78,123100000,1865.78 +1986-06-16,1874.19,1890.61,1863.29,1871.77,112100000,1871.77 +1986-06-13,1843.92,1883.21,1843.92,1874.19,141200000,1874.19 +1986-06-12,1846.07,1851.86,1826.29,1838.13,109100000,1838.13 +1986-06-11,1837.19,1854.68,1825.75,1846.07,127400000,1846.07 +1986-06-10,1840.15,1852.80,1816.07,1837.19,125000000,1837.19 +1986-06-09,1880.25,1880.25,1833.83,1840.15,123300000,1840.15 +1986-06-06,1879.44,1894.38,1866.12,1885.90,110900000,1885.90 +1986-06-05,1863.29,1880.79,1851.18,1879.44,110900000,1879.44 +1986-06-04,1870.43,1882.00,1846.34,1863.29,117000000,1863.29 +1986-06-03,1861.95,1875.54,1845.67,1870.43,114700000,1870.43 +1986-06-02,1876.71,1886.17,1845.53,1861.95,120600000,1861.95 +1986-05-30,1882.35,1898.22,1857.95,1876.71,151200000,1876.71 +1986-05-29,1878.28,1892.97,1857.42,1882.35,135700000,1882.35 +1986-05-28,1853.03,1891.79,1851.92,1878.28,159600000,1878.28 +1986-05-27,1823.48,1856.56,1823.48,1853.03,121200000,1853.03 +1986-05-23,1806.30,1842.14,1804.69,1823.29,130200000,1823.29 +1986-05-22,1775.17,1813.74,1774.18,1806.30,144900000,1806.30 +1986-05-21,1783.98,1798.61,1766.62,1775.17,117100000,1775.17 +1986-05-20,1758.18,1788.44,1752.48,1783.98,113000000,1783.98 +1986-05-19,1759.80,1769.84,1746.53,1758.18,85840000,1758.18 +1986-05-16,1774.68,1775.67,1749.88,1759.80,113500000,1759.80 +1986-05-15,1808.28,1808.78,1766.99,1774.68,131600000,1774.68 +1986-05-14,1785.34,1815.23,1775.55,1808.28,132100000,1808.28 +1986-05-13,1787.33,1804.07,1772.32,1785.34,119200000,1785.34 +1986-05-12,1789.43,1804.32,1774.80,1787.33,125400000,1787.33 +1986-05-09,1786.21,1797.12,1767.73,1789.43,137400000,1789.43 +1986-05-08,1775.30,1797.87,1768.48,1786.21,136000000,1786.21 +1986-05-07,1787.95,1790.05,1755.21,1775.30,129900000,1775.30 +1986-05-06,1793.77,1803.32,1775.92,1787.95,121200000,1787.95 +1986-05-05,1774.68,1800.35,1770.96,1793.77,102400000,1793.77 +1986-05-02,1777.78,1795.88,1763.14,1774.68,126300000,1774.68 +1986-05-01,1783.98,1796.88,1761.04,1777.78,146500000,1777.78 +1986-04-30,1825.89,1831.23,1777.90,1783.98,147500000,1783.98 +1986-04-29,1843.75,1856.15,1813.12,1825.89,148800000,1825.89 +1986-04-28,1835.57,1852.66,1817.71,1843.75,123900000,1843.75 +1986-04-25,1831.72,1848.46,1813.74,1835.57,142300000,1835.57 +1986-04-24,1829.61,1848.46,1818.95,1831.72,146600000,1831.72 +1986-04-23,1830.98,1841.27,1803.94,1829.61,149700000,1829.61 +1986-04-22,1855.90,1866.44,1815.97,1830.98,161500000,1830.98 +1986-04-21,1840.40,1864.21,1829.86,1855.90,136100000,1855.90 +1986-04-18,1855.03,1870.16,1830.98,1840.40,153600000,1840.40 +1986-04-17,1847.97,1870.16,1831.72,1855.03,161400000,1855.03 +1986-04-16,1814.73,1859.62,1814.73,1847.97,173800000,1847.97 +1986-04-15,1805.31,1822.05,1789.68,1809.65,123700000,1809.65 +1986-04-14,1790.18,1811.38,1781.00,1805.31,106700000,1805.31 +1986-04-11,1794.30,1812.50,1779.14,1790.18,139400000,1790.18 +1986-04-10,1778.62,1807.83,1768.20,1794.30,184800000,1794.30 +1986-04-09,1769.76,1807.71,1754.19,1778.62,156300000,1778.62 +1986-04-08,1737.07,1779.57,1737.07,1769.76,146300000,1769.76 +1986-04-07,1739.22,1749.04,1712.52,1735.51,129800000,1735.51 +1986-04-04,1766.40,1772.87,1728.45,1739.22,147300000,1739.22 +1986-04-03,1795.26,1809.27,1753.71,1766.40,148200000,1766.40 +1986-04-02,1790.11,1803.64,1769.76,1795.26,145300000,1795.26 +1986-04-01,1818.61,1829.02,1777.54,1790.11,167400000,1790.11 +1986-03-31,1821.72,1841.83,1803.16,1818.61,134400000,1818.61 +1986-03-27,1810.70,1849.74,1806.51,1821.72,178100000,1821.72 +1986-03-26,1778.50,1817.41,1775.98,1810.70,161500000,1810.70 +1986-03-25,1782.93,1794.30,1762.09,1778.50,139300000,1778.50 +1986-03-24,1768.56,1796.22,1763.29,1782.93,143800000,1782.93 +1986-03-21,1804.24,1821.24,1764.85,1768.56,199100000,1768.56 +1986-03-20,1787.95,1820.76,1784.36,1804.24,148000000,1804.24 +1986-03-19,1789.87,1806.99,1773.47,1787.95,150000000,1787.95 +1986-03-18,1776.86,1806.75,1763.65,1789.87,148000000,1789.87 +1986-03-17,1790.59,1790.59,1758.38,1776.86,137500000,1776.86 +1986-03-14,1753.71,1799.93,1745.21,1792.74,181900000,1792.74 +1986-03-13,1745.45,1768.80,1729.53,1753.71,171500000,1753.71 +1986-03-12,1746.05,1773.35,1733.48,1745.45,210300000,1745.45 +1986-03-11,1704.26,1752.17,1704.26,1746.05,187300000,1746.05 +1986-03-10,1699.83,1715.16,1688.70,1702.95,129900000,1702.95 +1986-03-07,1696.60,1713.48,1682.83,1699.83,163200000,1699.83 +1986-03-06,1686.66,1711.21,1681.75,1696.60,159000000,1696.60 +1986-03-05,1686.42,1695.40,1663.07,1686.66,154600000,1686.66 +1986-03-04,1696.67,1718.63,1679.72,1686.42,174500000,1686.42 +1986-03-03,1709.06,1714.33,1684.63,1696.67,142700000,1696.67 +1986-02-28,1713.99,1732.57,1687.50,1709.06,191700000,1709.06 +1986-02-27,1696.90,1728.90,1683.37,1713.99,181700000,1713.99 +1986-02-26,1692.66,1714.79,1679.59,1696.90,158000000,1696.90 +1986-02-25,1698.28,1709.52,1674.08,1692.66,148000000,1692.66 +1986-02-24,1697.71,1709.75,1678.67,1698.28,144700000,1698.28 +1986-02-21,1672.82,1702.75,1668.69,1697.71,177600000,1697.71 +1986-02-20,1658.26,1675.46,1641.97,1672.82,139700000,1672.82 +1986-02-19,1678.78,1689.22,1651.03,1658.26,152000000,1658.26 +1986-02-18,1664.45,1685.55,1649.43,1678.78,160200000,1678.78 +1986-02-14,1645.07,1668.69,1636.12,1664.45,155600000,1664.45 +1986-02-13,1629.93,1649.31,1616.86,1645.07,136500000,1645.07 +1986-02-12,1622.82,1640.48,1611.70,1629.93,136400000,1629.93 +1986-02-11,1626.38,1637.50,1613.30,1622.82,141300000,1622.82 +1986-02-10,1613.42,1633.14,1605.16,1626.38,129900000,1626.38 +1986-02-07,1600.69,1622.82,1576.83,1613.42,144400000,1613.42 +1986-02-06,1593.12,1616.51,1587.50,1600.69,146100000,1600.69 +1986-02-05,1593.23,1601.83,1576.26,1593.12,134300000,1593.12 +1986-02-04,1594.27,1611.47,1575.46,1593.23,175700000,1593.23 +1986-02-03,1570.99,1600.11,1564.33,1594.27,145300000,1594.27 +1986-01-31,1552.18,1582.91,1548.17,1570.99,143500000,1570.99 +1986-01-30,1558.94,1572.59,1545.76,1552.18,125300000,1552.18 +1986-01-29,1556.42,1578.10,1548.05,1558.94,193800000,1558.94 +1986-01-28,1537.61,1561.35,1530.50,1556.42,145700000,1556.42 +1986-01-27,1529.93,1548.17,1524.43,1537.61,122900000,1537.61 +1986-01-24,1511.24,1537.39,1507.68,1529.93,128900000,1529.93 +1986-01-23,1502.29,1519.39,1491.74,1511.24,130300000,1511.24 +1986-01-22,1514.45,1525.57,1494.84,1502.29,131200000,1502.29 +1986-01-21,1529.13,1535.89,1502.87,1514.45,128300000,1514.45 +1986-01-20,1536.01,1536.01,1516.86,1529.13,85340000,1529.13 +1986-01-17,1541.63,1552.52,1519.72,1536.70,132100000,1536.70 +1986-01-16,1527.29,1547.71,1517.09,1541.63,130500000,1541.63 +1986-01-15,1519.04,1535.32,1512.96,1527.29,122400000,1527.29 +1986-01-14,1520.53,1530.62,1508.03,1519.04,113900000,1519.04 +1986-01-13,1513.53,1526.83,1502.29,1520.53,108700000,1520.53 +1986-01-10,1518.23,1530.96,1500.57,1513.53,122800000,1513.53 +1986-01-09,1526.61,1530.85,1495.64,1518.23,176500000,1518.23 +1986-01-08,1565.71,1578.10,1516.63,1526.61,180300000,1526.61 +1986-01-07,1547.59,1573.74,1544.50,1565.71,153000000,1565.71 +1986-01-06,1549.20,1557.00,1537.04,1547.59,99610000,1547.59 +1986-01-03,1537.73,1557.11,1534.98,1549.20,105000000,1549.20 +1986-01-02,1546.67,1551.95,1523.74,1537.73,98960000,1537.73 +1985-12-31,1550.46,1562.84,1537.50,1546.67,112700000,1546.67 +1985-12-30,1543.00,1557.34,1534.98,1550.46,91970000,1550.46 +1985-12-27,1527.29,1548.85,1527.29,1543.00,81560000,1543.00 +1985-12-26,1519.15,1532.57,1514.68,1526.49,62050000,1526.49 +1985-12-24,1528.78,1532.45,1508.83,1519.15,78300000,1519.15 +1985-12-23,1543.00,1547.82,1516.63,1528.78,107900000,1528.78 +1985-12-20,1543.92,1564.56,1535.67,1543.00,170300000,1543.00 +1985-12-19,1542.43,1552.98,1532.00,1543.92,130200000,1543.92 +1985-12-18,1544.50,1560.44,1528.44,1542.43,137900000,1542.43 +1985-12-17,1553.10,1568.81,1536.35,1544.50,155200000,1544.50 +1985-12-16,1535.21,1570.87,1528.90,1553.10,176000000,1553.10 +1985-12-13,1511.24,1546.44,1502.75,1535.21,177900000,1535.21 +1985-12-12,1511.70,1523.51,1496.79,1511.24,170500000,1511.24 +1985-12-11,1499.20,1520.30,1492.09,1511.70,178500000,1511.70 +1985-12-10,1497.02,1514.91,1483.94,1499.20,156500000,1499.20 +1985-12-09,1478.10,1504.13,1478.10,1497.02,144000000,1497.02 +1985-12-06,1482.91,1488.30,1464.79,1477.18,125500000,1477.18 +1985-12-05,1484.40,1504.01,1477.98,1482.91,181000000,1482.91 +1985-12-04,1459.06,1488.76,1457.45,1484.40,153200000,1484.40 +1985-12-03,1457.91,1466.40,1450.34,1459.06,109700000,1459.06 +1985-12-02,1472.13,1476.26,1451.26,1457.91,103500000,1457.91 +1985-11-29,1475.69,1486.93,1463.99,1472.13,84060000,1472.13 +1985-11-27,1456.77,1483.83,1454.01,1475.69,143700000,1475.69 +1985-11-26,1456.65,1470.07,1447.25,1456.77,123100000,1456.77 +1985-11-25,1464.33,1467.09,1449.43,1456.65,91710000,1456.65 +1985-11-22,1462.27,1475.57,1451.61,1464.33,133800000,1464.33 +1985-11-21,1439.79,1466.06,1439.79,1462.27,150300000,1462.27 +1985-11-20,1438.99,1451.49,1429.24,1439.22,105100000,1439.22 +1985-11-19,1440.02,1452.18,1430.05,1438.99,126100000,1438.99 +1985-11-18,1435.09,1447.25,1422.25,1440.02,108400000,1440.02 +1985-11-15,1439.22,1450.57,1425.69,1435.09,130200000,1435.09 +1985-11-14,1427.75,1443.81,1420.64,1439.22,124900000,1439.22 +1985-11-13,1433.60,1439.79,1419.38,1427.75,109700000,1427.75 +1985-11-12,1431.88,1446.10,1421.10,1433.60,170800000,1433.60 +1985-11-11,1404.36,1432.57,1402.41,1431.88,126500000,1431.88 +1985-11-08,1399.54,1410.44,1391.06,1404.36,115000000,1404.36 +1985-11-07,1403.44,1410.11,1389.91,1399.54,119000000,1399.54 +1985-11-06,1396.67,1411.01,1386.47,1403.44,129500000,1403.44 +1985-11-05,1389.68,1402.52,1380.28,1396.67,119200000,1396.67 +1985-11-04,1390.25,1398.51,1377.06,1389.68,104900000,1389.68 +1985-11-01,1374.31,1393.58,1367.78,1390.25,129400000,1390.25 +1985-10-31,1375.57,1383.60,1362.61,1374.31,121500000,1374.31 +1985-10-30,1368.73,1384.63,1361.01,1375.57,120400000,1375.57 +1985-10-29,1359.99,1377.69,1356.18,1368.73,110600000,1368.73 +1985-10-28,1356.52,1364.02,1346.55,1359.99,97880000,1359.99 +1985-10-25,1362.34,1366.71,1351.59,1356.52,101800000,1356.52 +1985-10-24,1367.16,1374.55,1355.29,1362.34,123100000,1362.34 +1985-10-23,1364.36,1373.43,1357.08,1367.16,121700000,1367.16 +1985-10-22,1364.14,1374.66,1356.18,1364.36,111300000,1364.36 +1985-10-21,1368.84,1375.67,1357.75,1364.14,95680000,1364.14 +1985-10-18,1369.29,1383.40,1358.87,1368.84,107100000,1368.84 +1985-10-17,1368.50,1378.36,1356.85,1369.29,140500000,1369.29 +1985-10-16,1350.81,1371.30,1346.21,1368.50,117400000,1368.50 +1985-10-15,1354.73,1364.14,1343.53,1350.81,110400000,1350.81 +1985-10-14,1339.94,1356.18,1336.58,1354.73,78540000,1354.73 +1985-10-11,1328.07,1343.41,1323.70,1339.94,96370000,1339.94 +1985-10-10,1326.72,1333.33,1318.44,1328.07,90910000,1328.07 +1985-10-09,1325.49,1336.81,1320.23,1326.72,99140000,1326.72 +1985-10-08,1324.37,1333.89,1316.20,1325.49,97170000,1325.49 +1985-10-07,1328.74,1335.91,1315.19,1324.37,95550000,1324.37 +1985-10-04,1333.11,1335.01,1321.12,1328.74,101200000,1328.74 +1985-10-03,1333.67,1345.43,1323.81,1333.11,127500000,1333.11 +1985-10-02,1340.95,1351.59,1327.96,1333.67,147300000,1333.67 +1985-10-01,1328.63,1343.97,1323.48,1340.95,130200000,1340.95 +1985-09-30,1320.79,1336.81,1318.55,1328.63,103600000,1328.63 +1985-09-26,1312.05,1325.27,1301.97,1320.79,106100000,1320.79 +1985-09-25,1321.12,1330.20,1306.00,1312.05,92120000,1312.05 +1985-09-24,1316.31,1334.57,1301.86,1321.12,97870000,1321.12 +1985-09-23,1305.78,1323.59,1305.78,1316.31,104800000,1316.31 +1985-09-20,1306.79,1313.40,1294.47,1297.94,101400000,1297.94 +1985-09-19,1300.40,1312.95,1291.22,1306.79,100300000,1306.79 +1985-09-18,1298.16,1307.57,1283.71,1300.40,105700000,1300.40 +1985-09-17,1309.14,1314.52,1291.22,1298.16,111900000,1298.16 +1985-09-16,1307.68,1315.75,1301.08,1309.14,66700000,1309.14 +1985-09-13,1312.39,1320.12,1296.71,1307.68,111400000,1307.68 +1985-09-12,1319.44,1327.40,1307.01,1312.39,107100000,1312.39 +1985-09-11,1333.45,1334.01,1314.85,1319.44,100400000,1319.44 +1985-09-10,1339.27,1346.55,1324.82,1333.45,104700000,1333.45 +1985-09-09,1335.69,1348.23,1326.61,1339.27,89850000,1339.27 +1985-09-06,1325.83,1341.40,1323.92,1335.69,95040000,1335.69 +1985-09-05,1326.72,1333.00,1318.66,1325.83,94480000,1325.83 +1985-09-04,1329.19,1334.12,1318.21,1326.72,85510000,1326.72 +1985-09-03,1334.01,1337.14,1322.80,1329.19,81190000,1329.19 +1985-08-30,1335.13,1342.41,1325.27,1334.01,81620000,1334.01 +1985-08-29,1331.09,1340.05,1325.16,1335.13,85660000,1335.13 +1985-08-28,1322.47,1334.79,1316.98,1331.09,88530000,1331.09 +1985-08-27,1317.65,1328.63,1315.19,1322.47,82140000,1322.47 +1985-08-26,1318.32,1324.26,1309.81,1317.65,70290000,1317.65 +1985-08-23,1318.10,1322.92,1310.48,1318.32,75270000,1318.32 +1985-08-22,1329.53,1334.68,1313.51,1318.10,90600000,1318.10 +1985-08-21,1323.70,1333.67,1319.11,1329.53,94880000,1329.53 +1985-08-20,1312.50,1328.07,1311.83,1323.70,91230000,1323.70 +1985-08-19,1312.72,1319.22,1307.57,1312.50,67930000,1312.50 +1985-08-16,1317.76,1321.57,1305.89,1312.72,87910000,1312.72 +1985-08-15,1316.98,1324.71,1308.13,1317.76,86100000,1317.76 +1985-08-14,1315.30,1326.05,1311.38,1316.98,85780000,1316.98 +1985-08-13,1314.29,1325.49,1303.65,1315.30,80300000,1315.30 +1985-08-12,1320.79,1324.37,1309.14,1314.29,77340000,1314.29 +1985-08-09,1329.86,1331.88,1317.65,1320.79,81750000,1320.79 +1985-08-08,1325.04,1334.79,1318.32,1329.86,102900000,1329.86 +1985-08-07,1325.16,1331.21,1316.31,1325.04,100000000,1325.04 +1985-08-06,1346.89,1350.02,1322.92,1325.16,104000000,1325.16 +1985-08-05,1352.71,1352.71,1336.92,1346.89,79610000,1346.89 +1985-08-02,1355.62,1360.10,1345.43,1353.05,87860000,1353.05 +1985-08-01,1347.45,1361.90,1342.97,1355.62,121500000,1355.62 +1985-07-31,1346.10,1357.41,1340.05,1347.45,124200000,1347.45 +1985-07-30,1343.86,1352.60,1334.90,1346.10,102300000,1346.10 +1985-07-29,1357.08,1358.09,1338.93,1343.86,95960000,1343.86 +1985-07-26,1353.61,1365.59,1345.21,1357.08,107000000,1357.08 +1985-07-25,1348.90,1359.88,1338.60,1353.61,123300000,1353.61 +1985-07-24,1351.81,1359.21,1335.69,1348.90,128600000,1348.90 +1985-07-23,1357.64,1372.20,1344.76,1351.81,143600000,1351.81 +1985-07-22,1359.54,1362.12,1346.89,1357.64,93540000,1357.64 +1985-07-19,1350.92,1363.35,1346.44,1359.54,114800000,1359.54 +1985-07-18,1357.97,1363.26,1345.32,1350.92,131400000,1350.92 +1985-07-17,1347.89,1365.93,1346.21,1357.97,159900000,1357.97 +1985-07-16,1335.46,1351.93,1331.54,1347.89,132500000,1347.89 +1985-07-15,1338.60,1347.67,1326.95,1335.46,103900000,1335.46 +1985-07-12,1337.70,1345.99,1326.39,1338.60,120300000,1338.60 +1985-07-11,1332.89,1343.64,1326.16,1337.70,122800000,1337.70 +1985-07-10,1321.91,1336.81,1315.30,1332.89,108200000,1332.89 +1985-07-09,1328.41,1333.67,1313.40,1321.91,99060000,1321.91 +1985-07-08,1334.45,1336.47,1318.88,1328.41,83670000,1328.41 +1985-07-05,1326.39,1340.61,1324.93,1334.45,62450000,1334.45 +1985-07-03,1334.01,1337.59,1320.23,1326.39,98410000,1326.39 +1985-07-02,1337.14,1343.75,1329.19,1334.01,111100000,1334.01 +1985-07-01,1335.46,1342.18,1322.58,1337.14,96080000,1337.14 +1985-06-28,1332.21,1341.17,1326.16,1335.46,105200000,1335.46 +1985-06-27,1323.81,1338.71,1321.80,1332.21,106700000,1332.21 +1985-06-26,1323.03,1329.19,1314.74,1323.81,94130000,1323.81 +1985-06-25,1320.56,1338.82,1314.07,1323.03,115700000,1323.03 +1985-06-24,1324.48,1326.72,1307.80,1320.56,96040000,1320.56 +1985-06-21,1299.73,1326.05,1293.79,1324.48,125400000,1324.48 +1985-06-20,1297.38,1305.44,1287.75,1299.73,87500000,1299.73 +1985-06-19,1304.77,1312.72,1293.57,1297.38,108300000,1297.38 +1985-06-18,1298.39,1312.39,1293.68,1304.77,106900000,1304.77 +1985-06-17,1300.96,1303.99,1288.75,1298.39,82170000,1298.39 +1985-06-14,1290.10,1305.44,1288.88,1300.96,93090000,1300.96 +1985-06-13,1306.34,1308.13,1285.39,1290.10,107000000,1290.10 +1985-06-12,1313.84,1318.21,1300.74,1306.34,97700000,1306.34 +1985-06-11,1318.44,1323.81,1308.02,1313.84,102100000,1313.84 +1985-06-10,1316.42,1322.58,1307.24,1318.44,87940000,1318.44 +1985-06-07,1327.28,1331.99,1312.95,1316.42,99630000,1316.42 +1985-06-06,1320.56,1330.53,1311.94,1327.28,117200000,1327.28 +1985-06-05,1315.30,1331.77,1312.61,1320.56,143900000,1320.56 +1985-06-04,1310.93,1321.24,1304.44,1315.30,115400000,1315.30 +1985-06-03,1315.41,1325.04,1304.21,1310.93,125000000,1310.93 +1985-05-31,1305.78,1320.79,1298.72,1315.41,134100000,1315.41 +1985-05-30,1302.98,1314.18,1293.91,1305.78,108300000,1305.78 +1985-05-29,1301.52,1308.36,1292.79,1302.98,96540000,1302.98 +1985-05-28,1301.97,1312.84,1293.23,1301.52,90600000,1301.52 +1985-05-24,1296.71,1305.67,1291.11,1301.97,85970000,1301.97 +1985-05-23,1303.76,1307.80,1290.99,1296.71,101000000,1296.71 +1985-05-22,1308.92,1308.92,1294.35,1303.76,101400000,1303.76 +1985-05-21,1304.88,1316.08,1297.49,1309.70,130200000,1309.70 +1985-05-20,1292.23,1310.37,1292.23,1304.88,146300000,1304.88 +1985-05-17,1278.05,1295.83,1271.42,1285.34,124600000,1285.34 +1985-05-16,1273.52,1285.11,1270.10,1278.05,99420000,1278.05 +1985-05-15,1273.30,1283.57,1265.46,1273.52,106100000,1273.52 +1985-05-14,1277.50,1288.65,1267.67,1273.30,97360000,1273.30 +1985-05-13,1274.18,1283.57,1268.77,1277.50,85830000,1277.50 +1985-05-10,1261.59,1282.46,1261.59,1274.18,140300000,1274.18 +1985-05-09,1249.78,1265.57,1246.58,1260.27,111000000,1260.27 +1985-05-08,1252.75,1258.94,1239.51,1249.78,101300000,1249.78 +1985-05-07,1247.79,1261.37,1243.15,1252.75,100200000,1252.75 +1985-05-06,1247.24,1256.40,1241.39,1247.79,85650000,1247.79 +1985-05-03,1242.27,1253.86,1238.30,1247.24,94870000,1247.24 +1985-05-02,1242.05,1251.21,1235.53,1242.27,107700000,1242.27 +1985-05-01,1258.06,1262.81,1239.07,1242.05,101600000,1242.05 +1985-04-30,1259.72,1266.23,1245.80,1258.06,111800000,1258.06 +1985-04-29,1275.18,1277.94,1257.40,1259.72,88860000,1259.72 +1985-04-26,1284.78,1290.30,1270.54,1275.18,86570000,1275.18 +1985-04-25,1278.49,1289.20,1272.53,1284.78,108600000,1284.78 +1985-04-24,1278.71,1286.44,1269.88,1278.49,99600000,1278.49 +1985-04-23,1266.56,1282.91,1261.15,1278.71,108900000,1278.71 +1985-04-22,1266.56,1273.63,1257.62,1266.56,79930000,1266.56 +1985-04-19,1265.13,1272.53,1258.50,1266.56,81110000,1266.56 +1985-04-18,1272.31,1281.91,1260.82,1265.13,100600000,1265.13 +1985-04-17,1269.55,1277.50,1263.47,1272.31,96020000,1272.31 +1985-04-16,1266.78,1276.61,1256.96,1269.55,98480000,1269.55 +1985-04-15,1265.68,1272.42,1257.84,1266.78,80660000,1266.78 +1985-04-12,1263.69,1270.43,1257.29,1265.68,86220000,1265.68 +1985-04-11,1259.94,1274.85,1257.18,1263.69,108400000,1263.69 +1985-04-10,1253.86,1269.10,1252.10,1259.94,108200000,1259.94 +1985-04-09,1252.98,1262.04,1246.58,1253.86,83980000,1253.86 +1985-04-08,1259.05,1267.01,1246.02,1252.98,79960000,1252.98 +1985-04-04,1258.06,1264.24,1248.34,1259.05,86910000,1259.05 +1985-04-03,1265.68,1268.11,1251.55,1258.06,95480000,1258.06 +1985-04-02,1272.75,1280.15,1261.48,1265.68,101700000,1265.68 +1985-04-01,1266.78,1276.28,1260.49,1272.75,89900000,1272.75 +1985-03-29,1260.71,1270.65,1255.85,1266.78,101400000,1266.78 +1985-03-28,1264.91,1275.51,1256.63,1260.71,99780000,1260.71 +1985-03-27,1259.72,1270.87,1255.96,1264.91,101000000,1264.91 +1985-03-26,1259.94,1267.56,1252.10,1259.72,89930000,1259.72 +1985-03-25,1267.45,1268.33,1252.87,1259.94,74040000,1259.94 +1985-03-22,1268.22,1277.39,1261.70,1267.45,99250000,1267.45 +1985-03-21,1265.24,1278.93,1257.62,1268.22,95930000,1268.22 +1985-03-20,1271.09,1277.39,1257.84,1265.24,107500000,1265.24 +1985-03-19,1249.67,1274.18,1245.69,1271.09,119200000,1271.09 +1985-03-18,1247.35,1260.93,1242.82,1249.67,94020000,1249.67 +1985-03-15,1260.05,1266.89,1245.14,1247.35,105200000,1247.35 +1985-03-14,1261.70,1269.21,1254.20,1260.05,103400000,1260.05 +1985-03-13,1271.75,1278.27,1257.62,1261.70,101700000,1261.70 +1985-03-12,1268.55,1279.48,1262.48,1271.75,92840000,1271.75 +1985-03-11,1269.66,1277.05,1260.93,1268.55,84110000,1268.55 +1985-03-08,1271.53,1280.81,1264.13,1269.66,96390000,1269.66 +1985-03-07,1280.37,1283.24,1265.46,1271.53,112100000,1271.53 +1985-03-06,1291.85,1296.93,1275.51,1280.37,116900000,1280.37 +1985-03-05,1289.53,1300.02,1281.03,1291.85,116400000,1291.85 +1985-03-04,1299.36,1304.55,1283.13,1289.53,102100000,1289.53 +1985-03-01,1284.01,1309.96,1282.69,1299.36,139900000,1299.36 +1985-02-28,1281.03,1288.32,1271.42,1284.01,100700000,1284.01 +1985-02-27,1286.11,1295.27,1274.40,1281.03,107700000,1281.03 +1985-02-26,1277.50,1293.18,1272.31,1286.11,114200000,1286.11 +1985-02-25,1275.84,1283.13,1263.91,1277.50,89740000,1277.50 +1985-02-22,1279.04,1286.55,1269.99,1275.84,93680000,1275.84 +1985-02-21,1283.13,1287.10,1272.64,1279.04,104000000,1279.04 +1985-02-20,1280.59,1292.51,1272.53,1283.13,118200000,1283.13 +1985-02-19,1282.02,1287.43,1273.52,1280.59,90400000,1280.59 +1985-02-15,1287.88,1296.27,1275.07,1282.02,106500000,1282.02 +1985-02-14,1297.92,1307.53,1283.68,1287.88,139700000,1287.88 +1985-02-13,1276.61,1304.66,1274.51,1297.92,142500000,1297.92 +1985-02-12,1276.06,1283.13,1266.34,1276.61,111100000,1276.61 +1985-02-11,1289.97,1291.74,1268.66,1276.06,104000000,1276.06 +1985-02-08,1290.08,1297.15,1281.36,1289.97,116500000,1289.97 +1985-02-07,1280.59,1297.04,1279.81,1290.08,151700000,1290.08 +1985-02-06,1285.23,1294.50,1275.07,1280.59,141000000,1280.59 +1985-02-05,1290.08,1301.13,1278.60,1285.23,143900000,1285.23 +1985-02-04,1277.72,1294.94,1268.99,1290.08,113700000,1290.08 +1985-02-01,1286.11,1286.11,1269.77,1277.72,105400000,1277.72 +1985-01-31,1287.88,1293.40,1272.64,1286.77,132500000,1286.77 +1985-01-30,1292.62,1305.10,1278.93,1287.88,170000000,1287.88 +1985-01-29,1277.83,1295.49,1266.89,1292.62,115700000,1292.62 +1985-01-28,1276.06,1290.97,1264.24,1277.83,128400000,1277.83 +1985-01-25,1270.43,1284.67,1262.04,1276.06,122400000,1276.06 +1985-01-24,1274.73,1287.99,1264.58,1270.43,160700000,1270.43 +1985-01-23,1259.50,1278.27,1252.54,1274.73,144400000,1274.73 +1985-01-22,1261.37,1277.27,1252.87,1259.50,174800000,1259.50 +1985-01-21,1227.36,1266.45,1226.70,1261.37,146800000,1261.37 +1985-01-18,1228.69,1237.63,1219.52,1227.36,104700000,1227.36 +1985-01-17,1230.68,1234.65,1219.74,1228.69,113600000,1228.69 +1985-01-16,1230.79,1241.17,1220.74,1230.68,135500000,1230.68 +1985-01-15,1234.54,1243.71,1223.06,1230.79,155300000,1230.79 +1985-01-14,1218.09,1238.18,1210.36,1234.54,124900000,1234.54 +1985-01-11,1223.50,1229.35,1210.91,1218.09,107600000,1218.09 +1985-01-10,1202.74,1225.93,1195.56,1223.50,124700000,1223.50 +1985-01-09,1191.70,1209.47,1190.26,1202.74,99230000,1202.74 +1985-01-08,1190.59,1199.54,1184.08,1191.70,92110000,1191.70 +1985-01-07,1184.96,1198.32,1182.86,1190.59,86190000,1190.59 +1985-01-04,1189.82,1192.69,1178.67,1184.96,77480000,1184.96 +1985-01-03,1198.87,1207.93,1185.18,1189.82,88880000,1189.82 +1985-01-02,1211.57,1212.46,1194.35,1198.87,67820000,1198.87 +1984-12-31,1204.17,1215.55,1199.20,1211.57,80260000,1211.57 +1984-12-28,1202.52,1210.47,1196.11,1204.17,77070000,1204.17 +1984-12-27,1208.92,1214.22,1199.09,1202.52,70100000,1202.52 +1984-12-26,1210.14,1213.69,1201.74,1208.92,46700000,1208.92 +1984-12-24,1199.20,1214.44,1199.20,1210.14,55550000,1210.14 +1984-12-21,1203.29,1210.14,1186.84,1198.98,101200000,1198.98 +1984-12-20,1208.04,1219.52,1198.87,1203.29,93220000,1203.29 +1984-12-19,1211.57,1223.61,1201.52,1208.04,139600000,1208.04 +1984-12-18,1182.31,1213.23,1182.31,1211.57,169000000,1211.57 +1984-12-17,1175.91,1182.31,1164.53,1176.79,89490000,1176.79 +1984-12-14,1168.84,1187.28,1165.64,1175.91,95060000,1175.91 +1984-12-13,1175.13,1183.52,1162.65,1168.84,80850000,1168.84 +1984-12-12,1178.33,1183.97,1170.38,1175.13,78710000,1175.13 +1984-12-11,1172.26,1183.86,1167.51,1178.33,80240000,1178.33 +1984-12-10,1163.21,1179.00,1154.70,1172.26,81140000,1172.26 +1984-12-07,1170.49,1177.78,1160.00,1163.21,81000000,1163.21 +1984-12-06,1171.60,1178.67,1159.23,1170.49,96560000,1170.49 +1984-12-05,1185.07,1187.17,1166.85,1171.60,88700000,1171.60 +1984-12-04,1182.42,1192.58,1178.67,1185.07,81250000,1185.07 +1984-12-03,1188.94,1192.25,1173.37,1182.42,95300000,1182.42 +1984-11-30,1193.46,1197.77,1181.10,1188.94,77580000,1188.94 +1984-11-29,1205.39,1206.60,1188.16,1193.46,75860000,1193.46 +1984-11-28,1220.19,1224.71,1203.51,1205.39,86300000,1205.39 +1984-11-27,1212.35,1226.92,1204.62,1220.19,95470000,1220.19 +1984-11-26,1220.30,1224.49,1206.16,1212.35,76520000,1212.35 +1984-11-23,1204.28,1224.49,1204.28,1220.30,73910000,1220.30 +1984-11-21,1195.12,1207.05,1185.07,1201.52,81620000,1201.52 +1984-11-20,1185.29,1202.41,1184.30,1195.12,83240000,1195.12 +1984-11-19,1187.94,1197.44,1180.76,1185.29,69730000,1185.29 +1984-11-16,1206.16,1213.01,1186.73,1187.94,83140000,1187.94 +1984-11-15,1206.93,1214.22,1198.54,1206.16,81530000,1206.16 +1984-11-14,1206.60,1215.88,1198.98,1206.93,73940000,1206.93 +1984-11-13,1219.19,1222.17,1203.07,1206.60,69790000,1206.60 +1984-11-12,1218.97,1223.72,1209.25,1219.19,55610000,1219.19 +1984-11-09,1228.69,1238.63,1216.65,1218.97,83620000,1218.97 +1984-11-08,1233.22,1237.52,1220.30,1228.69,88580000,1228.69 +1984-11-07,1244.15,1245.69,1223.72,1233.22,110800000,1233.22 +1984-11-06,1229.24,1247.46,1227.03,1244.15,101200000,1244.15 +1984-11-05,1216.65,1233.11,1212.57,1229.24,84730000,1229.24 +1984-11-02,1217.09,1225.82,1208.26,1216.65,96810000,1216.65 +1984-11-01,1207.38,1224.38,1204.51,1217.09,107300000,1217.09 +1984-10-31,1217.31,1219.63,1201.52,1207.38,91890000,1207.38 +1984-10-30,1201.41,1224.60,1200.42,1217.31,95200000,1217.31 +1984-10-29,1204.95,1207.49,1195.01,1201.41,63200000,1201.41 +1984-10-26,1211.02,1213.45,1197.77,1204.95,83900000,1204.95 +1984-10-25,1216.43,1223.61,1206.05,1211.02,92760000,1211.02 +1984-10-24,1213.01,1223.06,1205.17,1216.43,91620000,1216.43 +1984-10-23,1217.20,1226.70,1206.71,1213.01,92260000,1213.01 +1984-10-22,1225.93,1230.34,1210.80,1217.20,81020000,1217.20 +1984-10-19,1225.38,1246.02,1213.56,1225.93,186900000,1225.93 +1984-10-18,1195.89,1226.70,1185.73,1225.38,149500000,1225.38 +1984-10-17,1197.77,1208.59,1185.62,1195.89,99740000,1195.89 +1984-10-16,1202.96,1209.36,1192.25,1197.77,82930000,1197.77 +1984-10-15,1190.70,1209.58,1186.73,1202.96,87590000,1202.96 +1984-10-12,1183.08,1198.43,1181.10,1190.70,92190000,1190.70 +1984-10-11,1177.23,1189.93,1170.61,1183.08,87020000,1183.08 +1984-10-10,1175.13,1182.97,1158.24,1177.23,94270000,1177.23 +1984-10-09,1177.89,1188.16,1171.93,1175.13,76840000,1175.13 +1984-10-08,1182.53,1183.08,1170.49,1177.89,46360000,1177.89 +1984-10-05,1187.39,1196.33,1176.57,1182.53,82950000,1182.53 +1984-10-04,1182.86,1195.01,1181.10,1187.39,76700000,1187.39 +1984-10-03,1191.36,1195.78,1174.69,1182.86,92400000,1182.86 +1984-10-02,1198.98,1207.38,1188.60,1191.36,89360000,1191.36 +1984-10-01,1206.71,1208.15,1192.36,1198.98,73630000,1198.98 +1984-09-28,1216.76,1217.98,1200.09,1206.71,78950000,1206.71 +1984-09-27,1212.12,1225.27,1211.35,1216.76,88880000,1216.76 +1984-09-26,1207.16,1222.06,1199.98,1212.12,100200000,1212.12 +1984-09-25,1205.06,1216.87,1192.80,1207.16,86250000,1207.16 +1984-09-24,1201.74,1216.43,1196.00,1205.06,76380000,1205.06 +1984-09-21,1216.54,1231.01,1197.00,1201.74,120600000,1201.74 +1984-09-20,1213.01,1221.73,1202.52,1216.54,92030000,1216.54 +1984-09-19,1226.26,1234.10,1206.05,1213.01,119900000,1213.01 +1984-09-18,1237.08,1239.95,1221.18,1226.26,107700000,1226.26 +1984-09-17,1237.52,1248.01,1226.26,1237.08,88790000,1237.08 +1984-09-14,1228.25,1248.23,1227.92,1237.52,137400000,1237.52 +1984-09-13,1200.31,1232.11,1196.00,1228.25,110500000,1228.25 +1984-09-12,1197.99,1206.60,1189.82,1200.31,77980000,1200.31 +1984-09-11,1202.52,1221.07,1196.33,1197.99,101300000,1197.99 +1984-09-10,1207.38,1214.33,1191.81,1202.52,74410000,1202.52 +1984-09-07,1218.86,1226.59,1201.63,1207.38,84110000,1207.38 +1984-09-06,1209.03,1226.04,1208.70,1218.86,91920000,1218.86 +1984-09-05,1212.35,1215.88,1199.65,1209.03,69250000,1209.03 +1984-09-04,1222.39,1222.39,1206.93,1212.35,62110000,1212.35 +1984-08-31,1223.28,1226.70,1213.89,1224.38,57460000,1224.38 +1984-08-30,1226.92,1231.89,1218.64,1223.28,70840000,1223.28 +1984-08-29,1232.11,1243.04,1222.50,1226.92,90660000,1226.92 +1984-08-28,1227.92,1236.20,1220.85,1232.11,70560000,1232.11 +1984-08-27,1234.76,1234.76,1219.08,1227.92,57660000,1227.92 +1984-08-24,1232.44,1240.72,1227.14,1236.53,69640000,1236.53 +1984-08-23,1231.78,1241.94,1221.51,1232.44,83130000,1232.44 +1984-08-22,1239.73,1250.55,1225.82,1231.78,116000000,1231.78 +1984-08-21,1216.98,1247.35,1216.65,1239.73,128100000,1239.73 +1984-08-20,1211.90,1221.18,1203.62,1216.98,75450000,1216.98 +1984-08-17,1209.14,1222.06,1205.94,1211.90,71500000,1211.90 +1984-08-16,1198.98,1218.42,1196.78,1209.14,93610000,1209.14 +1984-08-15,1214.11,1219.74,1195.56,1198.98,91880000,1198.98 +1984-08-14,1220.08,1230.45,1208.70,1214.11,81470000,1214.11 +1984-08-13,1218.09,1226.15,1204.39,1220.08,77960000,1220.08 +1984-08-10,1224.05,1253.75,1214.66,1218.09,171000000,1218.09 +1984-08-09,1196.11,1231.45,1189.49,1224.05,131100000,1224.05 +1984-08-08,1204.62,1215.44,1191.70,1196.11,121200000,1196.11 +1984-08-07,1202.96,1216.98,1184.96,1204.62,127900000,1204.62 +1984-08-06,1202.08,1230.90,1191.14,1202.96,203000000,1202.96 +1984-08-03,1176.13,1213.34,1176.13,1202.08,236500000,1202.08 +1984-08-02,1138.14,1171.38,1138.14,1166.08,172800000,1166.08 +1984-08-01,1115.28,1139.58,1114.95,1134.61,127500000,1134.61 +1984-07-31,1109.98,1123.56,1104.90,1115.28,86910000,1115.28 +1984-07-30,1114.62,1121.69,1103.25,1109.98,72330000,1109.98 +1984-07-27,1107.55,1124.23,1101.59,1114.62,101350000,1114.62 +1984-07-26,1096.95,1113.18,1093.42,1107.55,90410000,1107.55 +1984-07-25,1086.57,1106.45,1078.95,1096.95,90520000,1096.95 +1984-07-24,1096.62,1103.91,1083.59,1086.57,74370000,1086.57 +1984-07-23,1101.37,1102.58,1083.37,1096.62,77990000,1096.62 +1984-07-20,1102.92,1109.10,1092.42,1101.37,79090000,1101.37 +1984-07-19,1111.64,1114.07,1098.28,1102.92,85230000,1102.92 +1984-07-18,1122.90,1125.44,1106.01,1111.64,76640000,1111.64 +1984-07-17,1116.83,1128.53,1110.87,1122.90,82890000,1122.90 +1984-07-16,1109.87,1120.25,1100.82,1116.83,73420000,1116.83 +1984-07-13,1104.57,1118.04,1101.92,1109.87,75480000,1109.87 +1984-07-12,1108.55,1116.72,1096.18,1104.57,86050000,1104.57 +1984-07-11,1126.88,1127.87,1106.23,1108.55,89540000,1108.55 +1984-07-10,1134.05,1139.47,1119.92,1126.88,74010000,1126.88 +1984-07-09,1122.57,1138.69,1112.63,1134.05,74830000,1134.05 +1984-07-06,1124.56,1127.10,1112.19,1122.57,65850000,1122.57 +1984-07-05,1134.28,1138.47,1122.24,1124.56,66100000,1124.56 +1984-07-03,1130.08,1139.13,1124.01,1134.28,69960000,1134.28 +1984-07-02,1132.40,1137.81,1120.25,1130.08,69230000,1130.08 +1984-06-29,1126.55,1143.33,1124.56,1132.40,90770000,1132.40 +1984-06-28,1116.72,1131.62,1112.74,1126.55,77660000,1126.55 +1984-06-27,1122.79,1130.08,1109.98,1116.72,78400000,1116.72 +1984-06-26,1130.52,1133.61,1116.83,1122.79,82600000,1122.79 +1984-06-25,1131.07,1140.68,1124.01,1130.52,72850000,1130.52 +1984-06-22,1127.21,1139.02,1118.93,1131.07,98400000,1131.07 +1984-06-21,1131.63,1143.44,1115.17,1127.21,123380000,1127.21 +1984-06-20,1115.83,1135.16,1097.73,1131.63,99090000,1131.63 +1984-06-19,1109.65,1123.12,1105.79,1115.83,98000000,1115.83 +1984-06-18,1086.90,1114.29,1079.39,1109.65,94900000,1109.65 +1984-06-15,1097.61,1106.34,1083.59,1086.90,85460000,1086.90 +1984-06-14,1110.53,1113.96,1089.55,1097.61,79120000,1097.61 +1984-06-13,1110.53,1120.91,1103.80,1110.53,67510000,1110.53 +1984-06-12,1115.61,1119.92,1101.92,1110.53,84660000,1110.53 +1984-06-11,1130.96,1130.96,1112.63,1115.61,69050000,1115.61 +1984-06-08,1132.44,1137.82,1123.81,1131.25,67840000,1131.25 +1984-06-07,1133.84,1139.12,1125.11,1132.44,82120000,1132.44 +1984-06-06,1124.89,1144.83,1117.89,1133.84,83440000,1133.84 +1984-06-05,1131.57,1133.62,1117.13,1124.89,84840000,1124.89 +1984-06-04,1125.32,1143.53,1125.32,1131.57,96740000,1131.57 +1984-06-01,1106.25,1127.26,1106.25,1124.35,96040000,1124.35 +1984-05-31,1102.59,1113.90,1095.15,1104.85,81890000,1104.85 +1984-05-30,1101.24,1116.59,1083.19,1102.59,105660000,1102.59 +1984-05-29,1107.10,1113.80,1093.80,1101.24,69060000,1101.24 +1984-05-25,1103.43,1114.32,1096.84,1107.10,78190000,1107.10 +1984-05-24,1113.80,1117.15,1096.31,1103.43,99040000,1103.43 +1984-05-23,1116.62,1125.63,1109.19,1113.80,82690000,1113.80 +1984-05-22,1125.31,1126.99,1105.95,1116.62,88030000,1116.62 +1984-05-21,1133.79,1139.13,1121.23,1125.31,73380000,1125.31 +1984-05-18,1142.27,1147.82,1125.73,1133.79,81270000,1133.79 +1984-05-17,1153.16,1154.10,1134.84,1142.27,90310000,1142.27 +1984-05-16,1150.86,1159.86,1146.88,1153.16,89210000,1153.16 +1984-05-15,1151.07,1160.80,1143.43,1150.86,88250000,1150.86 +1984-05-14,1157.14,1160.49,1141.96,1151.07,64900000,1151.07 +1984-05-11,1167.19,1168.24,1145.31,1157.14,82780000,1157.14 +1984-05-10,1165.52,1176.61,1158.71,1167.19,101810000,1167.19 +1984-05-09,1176.30,1182.47,1157.45,1165.52,100590000,1165.52 +1984-05-08,1166.56,1181.11,1159.97,1176.30,81610000,1176.30 +1984-05-07,1165.31,1170.96,1157.87,1166.56,72760000,1166.56 +1984-05-04,1181.53,1185.41,1158.92,1165.31,98580000,1165.31 +1984-05-03,1186.56,1192.73,1174.10,1181.53,91910000,1181.53 +1984-05-02,1183.00,1194.41,1174.10,1186.56,107080000,1186.56 +1984-05-01,1170.75,1188.86,1167.40,1183.00,110550000,1183.00 +1984-04-30,1169.07,1177.45,1160.07,1170.75,72740000,1170.75 +1984-04-27,1175.25,1180.49,1163.32,1169.07,88530000,1169.07 +1984-04-26,1163.53,1182.06,1162.79,1175.25,98000000,1175.25 +1984-04-25,1162.90,1170.33,1153.69,1163.53,83520000,1163.53 +1984-04-24,1149.50,1170.54,1144.37,1162.90,87060000,1162.90 +1984-04-23,1158.08,1164.78,1146.04,1149.50,73080000,1149.50 +1984-04-19,1156.51,1162.79,1145.41,1158.08,75860000,1158.08 +1984-04-18,1164.57,1167.71,1151.07,1156.51,85040000,1156.51 +1984-04-17,1160.28,1173.99,1156.83,1164.57,98150000,1164.57 +1984-04-16,1150.13,1162.90,1139.55,1160.28,73870000,1160.28 +1984-04-13,1157.14,1169.28,1144.58,1150.13,99620000,1150.13 +1984-04-12,1130.97,1159.55,1121.02,1157.14,96330000,1157.14 +1984-04-11,1138.30,1145.10,1127.20,1130.97,80280000,1130.97 +1984-04-10,1133.90,1147.93,1131.28,1138.30,78990000,1138.30 +1984-04-09,1132.22,1141.86,1123.64,1133.90,71570000,1133.90 +1984-04-06,1130.55,1138.18,1117.25,1132.22,86620000,1132.22 +1984-04-05,1148.56,1157.87,1128.35,1130.55,101750000,1130.55 +1984-04-04,1148.76,1156.83,1141.02,1148.56,92860000,1148.56 +1984-04-03,1153.16,1159.13,1140.39,1148.76,87980000,1148.76 +1984-04-02,1164.89,1175.36,1145.94,1153.16,85680000,1153.16 +1984-03-30,1170.75,1173.68,1157.87,1164.89,71590000,1164.89 +1984-03-29,1174.62,1184.25,1165.52,1170.75,81470000,1170.75 +1984-03-28,1154.31,1176.61,1151.80,1174.62,104870000,1174.62 +1984-03-27,1152.95,1162.27,1145.62,1154.31,73670000,1154.31 +1984-03-26,1154.84,1161.96,1146.25,1152.95,69070000,1152.95 +1984-03-23,1155.88,1161.54,1145.31,1154.84,79760000,1154.84 +1984-03-22,1170.85,1170.85,1150.75,1155.88,87340000,1155.88 +1984-03-21,1175.77,1181.95,1165.62,1170.85,87170000,1170.85 +1984-03-20,1171.38,1184.15,1166.25,1175.77,86460000,1175.77 +1984-03-19,1179.02,1179.02,1163.00,1171.38,64060000,1171.38 +1984-03-16,1176.19,1197.24,1176.19,1184.36,118000000,1184.36 +1984-03-15,1166.04,1177.24,1159.23,1167.40,79520000,1167.40 +1984-03-14,1164.78,1173.68,1155.67,1166.04,77250000,1166.04 +1984-03-13,1156.09,1176.51,1156.09,1164.78,102600000,1164.78 +1984-03-12,1139.76,1160.80,1136.52,1155.36,84470000,1155.36 +1984-03-09,1147.09,1149.29,1132.54,1139.76,73170000,1139.76 +1984-03-08,1143.63,1155.46,1136.10,1147.09,80630000,1147.09 +1984-03-07,1152.53,1153.27,1131.70,1143.63,90080000,1143.63 +1984-03-06,1165.20,1171.59,1148.24,1152.53,83590000,1152.53 +1984-03-05,1171.48,1174.31,1158.50,1165.20,69870000,1165.20 +1984-03-02,1163.21,1181.01,1163.21,1171.48,108270000,1171.48 +1984-03-01,1154.63,1166.46,1146.25,1159.44,82010000,1159.44 +1984-02-29,1157.14,1171.38,1146.46,1154.63,92810000,1154.63 +1984-02-28,1177.45,1177.45,1150.34,1157.14,91010000,1157.14 +1984-02-27,1165.10,1186.66,1156.41,1179.96,99140000,1179.96 +1984-02-24,1137.04,1167.09,1137.04,1165.10,102620000,1165.10 +1984-02-23,1134.21,1142.38,1114.95,1134.63,100220000,1134.63 +1984-02-22,1139.34,1145.83,1128.66,1134.21,90080000,1134.21 +1984-02-21,1148.87,1153.79,1134.00,1139.34,71890000,1139.34 +1984-02-17,1154.94,1164.36,1141.23,1148.87,76600000,1148.87 +1984-02-16,1158.71,1164.99,1143.74,1154.94,81750000,1154.94 +1984-02-15,1163.84,1175.67,1154.31,1158.71,94870000,1158.71 +1984-02-14,1150.13,1170.54,1147.09,1163.84,91800000,1163.84 +1984-02-13,1160.70,1164.05,1139.97,1150.13,78460000,1150.13 +1984-02-10,1152.74,1167.92,1149.92,1160.70,92220000,1160.70 +1984-02-09,1156.30,1167.29,1139.03,1152.74,128190000,1152.74 +1984-02-08,1180.49,1188.76,1151.28,1156.30,96890000,1156.30 +1984-02-07,1174.31,1187.29,1161.12,1180.49,107640000,1180.49 +1984-02-06,1193.15,1193.15,1167.92,1174.31,109090000,1174.31 +1984-02-03,1213.88,1226.55,1192.00,1197.03,109100000,1197.03 +1984-02-02,1212.31,1223.93,1198.49,1213.88,111330000,1213.88 +1984-02-01,1220.58,1226.34,1203.31,1212.31,107100000,1212.31 +1984-01-31,1221.52,1231.68,1209.59,1220.58,113510000,1220.58 +1984-01-30,1230.00,1239.64,1212.42,1221.52,103120000,1221.52 +1984-01-27,1229.69,1238.69,1218.91,1230.00,103720000,1230.00 +1984-01-26,1231.89,1242.57,1222.78,1229.69,111100000,1229.69 +1984-01-25,1242.88,1255.44,1227.39,1231.89,113470000,1231.89 +1984-01-24,1244.45,1251.57,1234.61,1242.88,103050000,1242.88 +1984-01-23,1259.11,1259.42,1240.05,1244.45,82010000,1244.45 +1984-01-20,1266.02,1270.94,1252.30,1259.11,93360000,1259.11 +1984-01-19,1269.37,1276.17,1259.32,1266.02,98340000,1266.02 +1984-01-18,1271.46,1280.36,1261.93,1269.37,109010000,1269.37 +1984-01-17,1267.59,1275.75,1260.89,1271.46,92750000,1271.46 +1984-01-16,1270.10,1275.96,1259.53,1267.59,93790000,1267.59 +1984-01-13,1279.31,1289.57,1262.98,1270.10,101790000,1270.10 +1984-01-12,1277.32,1287.90,1271.78,1279.31,99410000,1279.31 +1984-01-11,1278.48,1284.13,1267.59,1277.32,98660000,1277.32 +1984-01-10,1286.22,1295.44,1273.97,1278.48,109570000,1278.48 +1984-01-09,1286.64,1295.33,1275.86,1286.22,107100000,1286.22 +1984-01-06,1282.24,1293.66,1271.78,1286.64,137590000,1286.64 +1984-01-05,1269.05,1290.72,1268.74,1282.24,159990000,1282.24 +1984-01-04,1252.74,1271.36,1246.55,1269.05,112980000,1269.05 +1984-01-03,1258.64,1264.13,1247.46,1252.74,71340000,1252.74 +1983-12-30,1260.16,1265.24,1253.15,1258.64,71840000,1258.64 +1983-12-29,1263.21,1273.88,1256.30,1260.16,86560000,1260.16 +1983-12-28,1263.72,1268.90,1254.17,1263.21,85660000,1263.21 +1983-12-27,1250.51,1267.28,1249.80,1263.72,63800000,1263.72 +1983-12-23,1253.66,1259.25,1241.97,1250.51,62710000,1250.51 +1983-12-22,1254.98,1265.24,1246.65,1253.66,106260000,1253.66 +1983-12-21,1241.97,1260.26,1240.24,1254.98,108080000,1254.98 +1983-12-20,1244.61,1251.93,1236.79,1241.97,83740000,1241.97 +1983-12-19,1242.17,1254.88,1238.21,1244.61,75180000,1244.61 +1983-12-16,1236.79,1248.27,1231.40,1242.17,81030000,1242.17 +1983-12-15,1246.65,1250.20,1231.20,1236.79,88300000,1236.79 +1983-12-14,1255.89,1261.38,1241.77,1246.65,85430000,1246.65 +1983-12-13,1261.59,1267.17,1250.81,1255.89,93500000,1255.89 +1983-12-12,1260.06,1269.11,1248.78,1261.59,77340000,1261.59 +1983-12-09,1261.89,1268.09,1252.03,1260.06,98280000,1260.06 +1983-12-08,1273.78,1278.15,1256.91,1261.89,96530000,1261.89 +1983-12-07,1269.31,1282.42,1263.21,1273.78,105670000,1273.78 +1983-12-06,1270.53,1281.30,1262.80,1269.31,89690000,1269.31 +1983-12-05,1265.24,1275.41,1256.40,1270.53,88330000,1270.53 +1983-12-02,1275.10,1281.30,1259.76,1265.24,93960000,1265.24 +1983-12-01,1276.02,1285.47,1265.45,1275.10,106970000,1275.10 +1983-11-30,1287.19,1296.95,1271.04,1276.02,120130000,1276.02 +1983-11-29,1269.82,1290.95,1264.22,1287.19,100460000,1287.19 +1983-11-28,1277.44,1279.78,1263.11,1269.82,78210000,1269.82 +1983-11-25,1275.61,1282.22,1268.80,1277.44,57820000,1277.44 +1983-11-23,1275.81,1284.55,1265.04,1275.61,108080000,1275.61 +1983-11-22,1268.80,1287.80,1262.91,1275.81,117550000,1275.81 +1983-11-21,1251.02,1272.36,1248.17,1268.80,97740000,1268.80 +1983-11-18,1254.67,1260.77,1240.35,1251.02,88280000,1251.02 +1983-11-17,1251.32,1262.09,1243.19,1254.67,80740000,1254.67 +1983-11-16,1247.95,1260.47,1242.07,1251.32,83380000,1251.32 +1983-11-15,1254.07,1260.87,1242.28,1247.95,77840000,1247.95 +1983-11-14,1250.20,1265.04,1244.61,1254.07,86880000,1254.07 +1983-11-11,1235.87,1253.56,1230.79,1250.20,74270000,1250.20 +1983-11-10,1232.52,1245.83,1226.83,1235.87,88730000,1235.87 +1983-11-09,1214.94,1235.47,1212.20,1232.52,83100000,1232.52 +1983-11-08,1214.84,1222.05,1208.74,1214.94,64900000,1214.94 +1983-11-07,1218.29,1226.52,1209.35,1214.84,69400000,1214.84 +1983-11-04,1227.13,1227.74,1211.89,1218.29,72080000,1218.29 +1983-11-03,1237.30,1242.68,1222.76,1227.13,85350000,1227.13 +1983-11-02,1229.27,1244.11,1220.83,1237.30,95210000,1237.30 +1983-11-01,1225.20,1233.94,1210.47,1229.27,84460000,1229.27 +1983-10-31,1223.48,1236.48,1214.63,1225.20,79460000,1225.20 +1983-10-28,1242.07,1248.68,1217.07,1223.48,81180000,1223.48 +1983-10-27,1243.80,1249.09,1230.49,1242.07,79570000,1242.07 +1983-10-26,1252.44,1259.15,1238.62,1243.80,79570000,1243.80 +1983-10-25,1248.98,1263.41,1245.22,1252.44,82530000,1252.44 +1983-10-24,1248.88,1252.54,1227.74,1248.98,85420000,1248.98 +1983-10-21,1251.52,1260.77,1231.61,1248.88,91640000,1248.88 +1983-10-20,1246.75,1258.74,1241.06,1251.52,86000000,1251.52 +1983-10-19,1250.81,1255.28,1229.37,1246.75,107790000,1246.75 +1983-10-18,1268.70,1272.76,1245.53,1250.81,91080000,1250.81 +1983-10-17,1263.52,1278.66,1256.20,1268.70,77730000,1268.70 +1983-10-14,1261.38,1270.12,1251.83,1263.52,71600000,1263.52 +1983-10-13,1259.65,1270.63,1250.51,1261.38,67750000,1261.38 +1983-10-12,1265.14,1273.07,1252.95,1259.65,75630000,1259.65 +1983-10-11,1284.65,1285.26,1261.89,1265.14,79510000,1265.14 +1983-10-10,1272.15,1286.69,1261.59,1284.65,67050000,1284.65 +1983-10-07,1268.80,1280.28,1262.60,1272.15,103630000,1272.15 +1983-10-06,1250.20,1272.15,1246.95,1268.80,118270000,1268.80 +1983-10-05,1236.69,1254.88,1228.96,1250.20,101710000,1250.20 +1983-10-04,1231.30,1247.56,1225.71,1236.69,90270000,1236.69 +1983-10-03,1233.13,1237.70,1216.26,1231.30,77230000,1231.30 +1983-09-30,1240.14,1242.89,1224.59,1233.13,70860000,1233.13 +1983-09-29,1241.97,1252.03,1236.08,1240.14,73730000,1240.14 +1983-09-28,1247.97,1253.45,1234.35,1241.97,75820000,1241.97 +1983-09-27,1259.25,1259.25,1239.33,1247.97,81100000,1247.97 +1983-09-26,1255.59,1270.73,1247.56,1260.77,86400000,1260.77 +1983-09-23,1257.52,1265.55,1246.24,1255.59,93180000,1255.59 +1983-09-22,1243.29,1261.28,1236.79,1257.52,97050000,1257.52 +1983-09-21,1249.19,1255.89,1236.79,1243.29,91280000,1243.29 +1983-09-20,1233.94,1257.01,1233.64,1249.19,103050000,1249.19 +1983-09-19,1225.71,1242.68,1221.24,1233.94,85630000,1233.94 +1983-09-16,1215.04,1232.72,1210.16,1225.71,75530000,1225.71 +1983-09-15,1229.47,1232.83,1213.01,1215.04,70420000,1215.04 +1983-09-14,1224.09,1233.94,1218.80,1229.47,73370000,1229.47 +1983-09-13,1229.07,1233.43,1214.63,1224.09,73970000,1224.09 +1983-09-12,1239.74,1262.80,1225.00,1229.07,114020000,1229.07 +1983-09-09,1246.14,1252.74,1233.33,1239.74,77990000,1239.74 +1983-09-08,1244.11,1252.95,1232.83,1246.14,79250000,1246.14 +1983-09-07,1238.72,1253.96,1229.27,1244.11,94240000,1244.11 +1983-09-06,1222.05,1244.11,1222.05,1238.72,87500000,1238.72 +1983-09-02,1206.81,1221.34,1204.17,1215.45,59300000,1215.45 +1983-09-01,1216.16,1221.24,1197.36,1206.81,76120000,1206.81 +1983-08-31,1196.04,1219.82,1191.16,1216.16,80800000,1216.16 +1983-08-30,1194.11,1204.37,1187.20,1196.04,62370000,1196.04 +1983-08-29,1192.07,1198.37,1178.15,1194.11,53030000,1194.11 +1983-08-26,1185.06,1196.95,1174.59,1192.07,61650000,1192.07 +1983-08-25,1184.25,1195.22,1173.27,1185.06,70140000,1185.06 +1983-08-24,1192.89,1199.80,1179.67,1184.25,72200000,1184.25 +1983-08-23,1203.15,1205.49,1186.38,1192.89,66800000,1192.89 +1983-08-22,1194.21,1216.26,1191.36,1203.15,76420000,1203.15 +1983-08-19,1192.48,1200.51,1183.64,1194.21,58950000,1194.21 +1983-08-18,1206.54,1215.45,1188.52,1192.48,82280000,1192.48 +1983-08-17,1190.45,1212.09,1186.28,1206.54,87800000,1206.54 +1983-08-16,1193.50,1199.70,1180.49,1190.45,71780000,1190.45 +1983-08-15,1186.69,1208.74,1186.69,1193.50,83200000,1193.50 +1983-08-12,1174.39,1189.63,1169.82,1182.83,71840000,1182.83 +1983-08-11,1175.98,1185.87,1165.55,1174.39,70630000,1174.39 +1983-08-10,1168.27,1182.19,1157.25,1175.98,82900000,1175.98 +1983-08-09,1163.06,1177.28,1152.14,1168.27,81420000,1168.27 +1983-08-08,1180.19,1180.19,1157.55,1163.06,71460000,1163.06 +1983-08-05,1183.09,1191.91,1173.58,1183.29,67850000,1183.29 +1983-08-04,1197.82,1200.52,1166.57,1183.09,100870000,1183.09 +1983-08-03,1188.00,1203.73,1179.29,1197.82,80370000,1197.82 +1983-08-02,1194.21,1202.52,1183.89,1188.00,74460000,1188.00 +1983-08-01,1199.22,1204.33,1183.79,1194.21,77210000,1194.21 +1983-07-29,1216.35,1216.75,1188.10,1199.22,95240000,1199.22 +1983-07-28,1230.47,1236.58,1211.74,1216.35,78410000,1216.35 +1983-07-27,1243.69,1258.51,1225.86,1230.47,99290000,1230.47 +1983-07-26,1232.87,1250.00,1226.46,1243.69,91280000,1243.69 +1983-07-25,1231.17,1239.78,1217.45,1232.87,73680000,1232.87 +1983-07-22,1229.37,1238.18,1220.45,1231.17,68850000,1231.17 +1983-07-21,1227.86,1238.48,1217.35,1229.37,101830000,1229.37 +1983-07-20,1206.03,1230.57,1206.03,1227.86,109310000,1227.86 +1983-07-19,1189.90,1205.13,1188.40,1197.12,74030000,1197.12 +1983-07-18,1192.31,1197.62,1179.79,1189.90,69110000,1189.90 +1983-07-15,1204.33,1205.73,1187.10,1192.31,63160000,1192.31 +1983-07-14,1197.82,1215.04,1195.11,1204.33,83500000,1204.33 +1983-07-13,1198.52,1205.83,1189.40,1197.82,68900000,1197.82 +1983-07-12,1215.54,1218.35,1194.11,1198.52,70220000,1198.52 +1983-07-11,1207.23,1221.96,1205.53,1215.54,61610000,1215.54 +1983-07-08,1210.44,1218.95,1201.52,1207.23,66520000,1207.23 +1983-07-07,1220.65,1227.26,1203.33,1210.44,97130000,1210.44 +1983-07-06,1208.53,1224.46,1202.72,1220.65,85670000,1220.65 +1983-07-05,1217.25,1217.25,1200.22,1208.53,67320000,1208.53 +1983-07-01,1221.96,1231.07,1213.94,1225.26,65110000,1225.26 +1983-06-30,1213.84,1229.27,1209.54,1221.96,76310000,1221.96 +1983-06-29,1209.23,1222.16,1201.22,1213.84,81580000,1213.84 +1983-06-28,1229.47,1237.68,1205.83,1209.23,82730000,1209.23 +1983-06-27,1241.69,1246.29,1221.85,1229.47,69360000,1229.47 +1983-06-24,1241.79,1250.20,1229.87,1241.69,80810000,1241.69 +1983-06-23,1245.69,1250.60,1231.67,1241.79,89590000,1241.79 +1983-06-22,1247.40,1258.21,1234.27,1245.69,110270000,1245.69 +1983-06-21,1239.18,1253.00,1228.27,1247.40,102880000,1247.40 +1983-06-20,1242.19,1258.61,1230.77,1239.18,84270000,1239.18 +1983-06-17,1248.30,1260.72,1232.87,1242.19,93630000,1242.19 +1983-06-16,1237.28,1259.82,1236.08,1248.30,124560000,1248.30 +1983-06-15,1227.26,1240.18,1216.85,1237.28,93410000,1237.28 +1983-06-14,1220.55,1237.28,1214.64,1227.26,97710000,1227.26 +1983-06-13,1199.12,1223.46,1199.12,1220.55,90700000,1220.55 +1983-06-10,1189.00,1204.53,1187.30,1196.11,78470000,1196.11 +1983-06-09,1185.50,1196.71,1176.78,1189.00,87440000,1189.00 +1983-06-08,1194.91,1199.52,1179.59,1185.50,96600000,1185.50 +1983-06-07,1214.24,1218.15,1193.21,1194.91,88550000,1194.91 +1983-06-06,1213.04,1223.26,1203.83,1214.24,87670000,1214.24 +1983-06-03,1211.44,1222.46,1204.23,1213.04,83110000,1213.04 +1983-06-02,1202.21,1218.15,1195.01,1211.44,89750000,1211.44 +1983-06-01,1199.98,1208.30,1187.69,1202.21,84460000,1202.21 +1983-05-31,1216.14,1217.59,1191.95,1199.98,73910000,1199.98 +1983-05-27,1223.49,1229.20,1209.95,1216.14,76290000,1216.14 +1983-05-26,1229.01,1237.04,1215.17,1223.49,94980000,1223.49 +1983-05-25,1219.04,1234.04,1207.62,1229.01,121050000,1229.01 +1983-05-24,1200.56,1224.07,1199.21,1219.04,109850000,1219.04 +1983-05-23,1190.02,1205.40,1174.25,1200.56,84960000,1200.56 +1983-05-20,1191.37,1197.27,1179.08,1190.02,73150000,1190.02 +1983-05-19,1203.56,1208.49,1186.15,1191.37,83260000,1191.37 +1983-05-18,1205.79,1225.04,1196.98,1203.56,99780000,1203.56 +1983-05-17,1202.98,1211.88,1193.30,1205.79,79510000,1205.79 +1983-05-16,1209.95,1209.95,1190.21,1202.98,76250000,1202.98 +1983-05-13,1214.40,1228.04,1209.17,1218.75,83110000,1218.75 +1983-05-12,1219.72,1226.59,1204.82,1214.40,84060000,1214.40 +1983-05-11,1229.68,1234.42,1210.72,1219.72,99820000,1219.72 +1983-05-10,1228.23,1240.03,1220.49,1229.68,104010000,1229.68 +1983-05-09,1232.59,1241.29,1219.04,1228.23,93670000,1228.23 +1983-05-06,1219.72,1244.49,1217.69,1232.59,128200000,1232.59 +1983-05-05,1212.65,1225.81,1202.40,1219.72,107860000,1219.72 +1983-05-04,1208.01,1227.94,1198.63,1212.65,101690000,1212.65 +1983-05-03,1204.33,1214.11,1188.37,1208.01,89550000,1208.01 +1983-05-02,1225.43,1225.43,1197.27,1204.33,88170000,1204.33 +1983-04-29,1219.52,1235.49,1208.59,1226.20,105750000,1226.20 +1983-04-28,1208.40,1226.97,1201.04,1219.52,94410000,1219.52 +1983-04-27,1209.46,1225.04,1197.37,1208.40,118140000,1208.40 +1983-04-26,1187.21,1210.82,1177.92,1209.46,91210000,1209.46 +1983-04-25,1196.30,1206.75,1183.24,1187.21,90150000,1187.21 +1983-04-22,1188.27,1204.62,1184.21,1196.30,92270000,1196.30 +1983-04-21,1191.47,1202.11,1180.92,1188.27,106170000,1188.27 +1983-04-20,1174.54,1197.56,1170.47,1191.47,110240000,1191.47 +1983-04-19,1183.24,1187.98,1166.22,1174.54,91210000,1174.54 +1983-04-18,1171.34,1187.89,1164.57,1183.24,88560000,1183.24 +1983-04-15,1165.25,1177.05,1159.06,1171.34,89590000,1171.34 +1983-04-14,1156.64,1171.05,1146.67,1165.25,90160000,1165.25 +1983-04-13,1145.32,1165.34,1142.22,1156.64,100520000,1156.64 +1983-04-12,1141.83,1151.80,1134.09,1145.32,79900000,1145.32 +1983-04-11,1127.23,1144.54,1127.23,1141.83,81440000,1141.83 +1983-04-08,1117.65,1128.87,1109.52,1124.71,67710000,1124.71 +1983-04-07,1113.49,1123.36,1106.71,1117.65,69480000,1117.65 +1983-04-06,1120.16,1122.48,1102.17,1113.49,77140000,1113.49 +1983-04-05,1127.61,1137.58,1116.39,1120.16,76810000,1120.16 +1983-04-04,1130.03,1133.03,1115.13,1127.61,66010000,1127.61 +1983-03-31,1143.29,1158.48,1125.29,1130.03,100570000,1130.03 +1983-03-30,1131.19,1146.67,1129.64,1143.29,75800000,1143.29 +1983-03-29,1133.32,1142.80,1125.39,1131.19,65300000,1131.19 +1983-03-28,1140.09,1145.80,1126.84,1133.32,58510000,1133.32 +1983-03-25,1145.90,1153.83,1132.64,1140.09,77330000,1140.09 +1983-03-24,1140.87,1154.41,1134.48,1145.90,92340000,1145.90 +1983-03-23,1122.97,1147.83,1121.81,1140.87,94980000,1140.87 +1983-03-22,1125.29,1135.74,1118.61,1122.97,79610000,1122.97 +1983-03-21,1117.74,1130.32,1109.33,1125.29,72160000,1125.29 +1983-03-18,1116.97,1128.00,1109.71,1117.74,75110000,1117.74 +1983-03-17,1116.00,1123.55,1108.07,1116.97,70290000,1116.97 +1983-03-16,1124.52,1134.77,1111.46,1116.00,83570000,1116.00 +1983-03-15,1114.45,1126.84,1109.62,1124.52,62410000,1124.52 +1983-03-14,1117.74,1124.61,1105.07,1114.45,61890000,1114.45 +1983-03-11,1120.94,1127.61,1107.97,1117.74,67240000,1117.74 +1983-03-10,1132.64,1145.22,1116.49,1120.94,95410000,1120.94 +1983-03-09,1119.78,1136.42,1112.04,1132.64,84250000,1132.64 +1983-03-08,1141.74,1143.00,1117.55,1119.78,79410000,1119.78 +1983-03-07,1140.96,1149.67,1128.19,1141.74,84020000,1141.74 +1983-03-04,1138.06,1146.28,1125.58,1140.96,90930000,1140.96 +1983-03-03,1135.06,1151.12,1128.39,1138.06,114440000,1138.06 +1983-03-02,1130.71,1144.45,1121.90,1135.06,112600000,1135.06 +1983-03-01,1112.16,1139.22,1110.20,1130.71,103750000,1130.71 +1983-02-28,1120.94,1128.58,1105.26,1112.16,83750000,1112.16 +1983-02-25,1121.81,1135.26,1115.13,1120.94,100970000,1120.94 +1983-02-24,1100.62,1126.74,1100.62,1121.81,113220000,1121.81 +1983-02-23,1080.40,1100.14,1077.69,1096.94,84100000,1096.94 +1983-02-22,1092.82,1097.72,1074.01,1080.40,84080000,1080.40 +1983-02-18,1088.91,1099.42,1079.99,1092.82,77420000,1092.82 +1983-02-17,1087.43,1096.35,1075.52,1088.91,74930000,1088.91 +1983-02-16,1093.10,1103.70,1083.43,1087.43,82100000,1087.43 +1983-02-15,1097.10,1107.61,1086.22,1093.10,89040000,1093.10 +1983-02-14,1086.50,1103.33,1080.64,1097.10,72640000,1097.10 +1983-02-11,1087.75,1100.82,1080.17,1086.50,86700000,1086.50 +1983-02-10,1067.88,1094.83,1067.88,1087.75,93510000,1087.75 +1983-02-09,1075.33,1081.59,1058.13,1067.42,84520000,1067.42 +1983-02-08,1087.10,1091.70,1068.71,1075.33,76580000,1075.33 +1983-02-07,1077.91,1097.04,1073.77,1087.10,86030000,1087.10 +1983-02-04,1064.66,1081.13,1056.75,1077.91,87000000,1077.91 +1983-02-03,1062.64,1075.06,1057.03,1064.66,78890000,1064.66 +1983-02-02,1059.79,1070.09,1046.82,1062.64,77220000,1062.64 +1983-02-01,1075.70,1082.78,1057.58,1059.79,82750000,1059.79 +1983-01-31,1064.75,1079.75,1055.83,1075.70,67140000,1075.70 +1983-01-28,1063.65,1080.57,1056.66,1064.75,89490000,1064.75 +1983-01-27,1037.99,1068.16,1037.35,1063.65,88120000,1063.65 +1983-01-26,1042.03,1050.31,1027.78,1037.99,73720000,1037.99 +1983-01-25,1030.17,1048.93,1028.61,1042.03,79740000,1042.03 +1983-01-24,1039.28,1039.28,1013.43,1030.17,90800000,1030.17 +1983-01-21,1070.46,1070.46,1045.16,1052.98,77110000,1052.98 +1983-01-20,1068.06,1080.39,1060.15,1070.82,82790000,1070.82 +1983-01-19,1079.65,1082.97,1057.12,1068.06,80900000,1068.06 +1983-01-18,1084.81,1089.22,1068.06,1079.65,78380000,1079.65 +1983-01-17,1080.85,1098.60,1077.35,1084.81,89210000,1084.81 +1983-01-14,1073.95,1089.04,1070.36,1080.85,86480000,1080.85 +1983-01-13,1083.61,1091.06,1068.80,1073.95,77030000,1073.95 +1983-01-12,1083.79,1105.13,1075.88,1083.61,109850000,1083.61 +1983-01-11,1092.35,1097.50,1076.07,1083.79,98250000,1083.79 +1983-01-10,1076.07,1099.98,1065.12,1092.35,101890000,1092.35 +1983-01-07,1070.92,1091.34,1063.19,1076.07,127290000,1076.07 +1983-01-06,1044.89,1081.95,1042.40,1070.92,129410000,1070.92 +1983-01-05,1046.08,1056.75,1033.94,1044.89,95390000,1044.89 +1983-01-04,1027.04,1047.46,1020.24,1046.08,75530000,1046.08 +1983-01-03,1046.54,1057.21,1022.17,1027.04,59080000,1027.04 +1982-12-31,1047.37,1055.56,1041.84,1046.54,42110000,1046.54 +1982-12-30,1059.60,1066.13,1043.60,1047.37,56380000,1047.37 +1982-12-29,1058.87,1069.35,1050.68,1059.60,54810000,1059.60 +1982-12-28,1070.55,1077.91,1053.44,1058.87,58610000,1058.87 +1982-12-27,1045.07,1076.07,1043.60,1070.55,64690000,1070.55 +1982-12-23,1035.04,1051.51,1032.19,1045.07,62880000,1045.07 +1982-12-22,1030.26,1047.19,1021.62,1035.04,83470000,1035.04 +1982-12-21,1004.51,1036.33,998.53,1030.26,78010000,1030.26 +1982-12-20,1011.50,1022.63,998.44,1004.51,62210000,1004.51 +1982-12-17,990.25,1018.12,989.24,1011.50,76010000,1011.50 +1982-12-16,992.64,1004.42,983.35,990.25,73680000,990.25 +1982-12-15,1009.38,1013.52,985.74,992.64,81030000,992.64 +1982-12-14,1024.28,1047.28,1006.99,1009.38,98380000,1009.38 +1982-12-13,1018.76,1030.91,1013.34,1024.28,63140000,1024.28 +1982-12-10,1027.96,1038.36,1009.47,1018.76,86430000,1018.76 +1982-12-09,1047.09,1049.39,1020.79,1027.96,90320000,1027.96 +1982-12-08,1056.94,1069.72,1041.30,1047.09,97430000,1047.09 +1982-12-07,1055.65,1071.10,1045.07,1056.94,111620000,1056.94 +1982-12-06,1031.36,1061.26,1020.88,1055.65,83880000,1055.65 +1982-12-03,1033.11,1046.82,1027.04,1031.36,71540000,1031.36 +1982-12-02,1031.09,1047.37,1027.04,1033.11,77600000,1033.11 +1982-12-01,1039.28,1055.00,1025.57,1031.09,107850000,1031.09 +1982-11-30,1002.85,1042.40,998.34,1039.28,93470000,1039.28 +1982-11-29,1007.36,1014.72,993.84,1002.85,61080000,1002.85 +1982-11-26,1000.00,1012.60,998.53,1007.36,38810000,1007.36 +1982-11-24,990.99,1007.36,988.23,1000.00,67220000,1000.00 +1982-11-23,1000.00,1007.63,986.66,990.99,72920000,990.99 +1982-11-22,1021.25,1024.01,997.42,1000.00,74960000,1000.00 +1982-11-19,1032.10,1042.86,1017.11,1021.25,70310000,1021.25 +1982-11-18,1027.50,1040.47,1020.05,1032.10,77620000,1032.10 +1982-11-17,1012.05,1032.74,1012.05,1027.50,84440000,1027.50 +1982-11-16,1019.68,1019.68,993.10,1008.00,102910000,1008.00 +1982-11-15,1032.56,1032.56,1012.60,1021.43,78900000,1021.43 +1982-11-12,1054.73,1060.52,1035.60,1039.92,95080000,1039.92 +1982-11-11,1044.52,1057.03,1030.35,1054.73,78410000,1054.73 +1982-11-10,1060.25,1078.27,1037.71,1044.52,113240000,1044.52 +1982-11-09,1037.44,1065.86,1034.86,1060.25,111220000,1060.25 +1982-11-08,1048.57,1048.57,1029.25,1037.44,75240000,1037.44 +1982-11-05,1050.22,1061.17,1040.65,1051.78,96550000,1051.78 +1982-11-04,1065.49,1078.46,1042.59,1050.22,149350000,1050.22 +1982-11-03,1022.08,1068.16,1021.71,1065.49,137010000,1065.49 +1982-11-02,1007.45,1036.98,1007.45,1022.08,104770000,1022.08 +1982-11-01,991.72,1009.01,983.72,1005.70,73530000,1005.70 +1982-10-29,990.99,999.45,977.92,991.72,74830000,991.72 +1982-10-28,1006.35,1011.87,989.33,990.99,73590000,990.99 +1982-10-27,1006.07,1019.87,996.87,1006.35,81670000,1006.35 +1982-10-26,995.13,1011.13,975.90,1006.07,102080000,1006.07 +1982-10-25,1018.76,1018.76,991.91,995.13,83720000,995.13 +1982-10-22,1036.98,1051.88,1024.37,1031.46,101120000,1031.46 +1982-10-21,1034.12,1049.12,1018.40,1036.98,122460000,1036.98 +1982-10-20,1013.80,1035.23,1005.98,1034.12,98680000,1034.12 +1982-10-19,1019.22,1031.09,1001.66,1013.80,100850000,1013.80 +1982-10-18,993.10,1023.45,991.63,1019.22,83790000,1019.22 +1982-10-15,996.87,1003.86,981.88,993.10,80290000,993.10 +1982-10-14,1015.18,1020.97,991.17,996.87,107530000,996.87 +1982-10-13,1003.68,1033.57,991.63,1015.18,139800000,1015.18 +1982-10-12,1012.79,1026.95,992.00,1003.68,126310000,1003.68 +1982-10-11,991.54,1027.59,991.54,1012.79,138530000,1012.79 +1982-10-08,965.97,992.92,961.64,986.85,122250000,986.85 +1982-10-07,950.24,972.87,950.24,965.97,147070000,965.97 +1982-10-06,907.74,946.38,907.74,944.26,93570000,944.26 +1982-10-05,903.61,917.77,899.47,907.19,69770000,907.19 +1982-10-04,907.74,908.57,892.02,903.61,55650000,903.61 +1982-10-01,896.25,910.87,892.02,907.74,65000000,907.74 +1982-09-30,906.27,908.20,891.28,896.25,62610000,896.25 +1982-09-29,919.33,920.71,901.12,906.27,62550000,906.27 +1982-09-28,920.90,930.74,916.02,919.33,65900000,919.33 +1982-09-27,919.52,925.04,909.86,920.90,44840000,920.90 +1982-09-24,925.77,926.42,913.45,919.52,54600000,919.52 +1982-09-23,927.61,933.50,915.38,925.77,68260000,925.77 +1982-09-22,934.79,951.16,924.67,927.61,113150000,927.61 +1982-09-21,916.30,937.09,913.91,934.79,82920000,934.79 +1982-09-20,916.94,921.45,904.71,916.30,58520000,916.30 +1982-09-17,927.80,931.29,912.71,916.94,63950000,916.94 +1982-09-16,930.46,938.47,922.46,927.80,78900000,927.80 +1982-09-15,923.01,933.13,915.56,930.46,69680000,930.46 +1982-09-14,918.69,933.13,914.92,923.01,83070000,923.01 +1982-09-13,906.82,921.08,898.36,918.69,59520000,918.69 +1982-09-10,912.53,912.90,897.08,906.82,71080000,906.82 +1982-09-09,915.75,925.31,906.27,912.53,73090000,912.53 +1982-09-08,914.28,927.34,906.82,915.75,77960000,915.75 +1982-09-07,925.13,928.35,906.92,914.28,68960000,914.28 +1982-09-03,913.54,940.49,913.54,925.13,130910000,925.13 +1982-09-02,895.05,913.17,888.70,909.40,74740000,909.40 +1982-09-01,901.31,911.33,890.91,895.05,82830000,895.05 +1982-08-31,893.30,910.96,887.97,901.31,86360000,901.31 +1982-08-30,883.47,895.42,872.42,893.30,59560000,893.30 +1982-08-27,892.41,893.84,874.14,883.47,74410000,883.47 +1982-08-26,884.89,908.96,882.61,892.41,137330000,892.41 +1982-08-25,874.90,900.97,867.87,884.89,106200000,884.89 +1982-08-24,891.17,893.36,869.01,874.90,121650000,874.90 +1982-08-23,869.29,894.22,861.68,891.17,110310000,891.17 +1982-08-20,840.85,871.19,840.85,869.29,95890000,869.29 +1982-08-19,829.43,848.93,824.49,838.57,78270000,838.57 +1982-08-18,831.24,858.54,826.10,829.43,132690000,829.43 +1982-08-17,796.14,832.76,796.14,831.24,92860000,831.24 +1982-08-16,788.53,803.84,788.53,792.43,55420000,792.43 +1982-08-13,776.92,790.62,774.54,788.05,44720000,788.05 +1982-08-12,777.21,786.15,773.59,776.92,50080000,776.92 +1982-08-11,779.30,783.96,772.17,777.21,49040000,777.21 +1982-08-10,780.35,789.10,775.68,779.30,52680000,779.30 +1982-08-09,784.34,784.34,769.98,780.35,54560000,780.35 +1982-08-06,795.85,798.99,781.77,784.34,48660000,784.34 +1982-08-05,803.46,804.41,789.76,795.85,54700000,795.85 +1982-08-04,815.35,815.35,800.89,803.46,53440000,803.46 +1982-08-03,822.11,831.43,815.26,816.40,60480000,816.40 +1982-08-02,808.60,824.11,807.84,822.11,53460000,822.11 +1982-07-30,812.21,817.64,806.13,808.60,39270000,808.60 +1982-07-29,811.83,817.54,801.46,812.21,55680000,812.21 +1982-07-28,822.77,823.44,807.65,811.83,53830000,811.83 +1982-07-27,825.44,831.05,818.02,822.77,45740000,822.77 +1982-07-26,830.57,833.24,820.59,825.44,37740000,825.44 +1982-07-23,832.00,838.47,824.68,830.57,47280000,830.57 +1982-07-22,832.19,839.71,823.71,832.00,53870000,832.00 +1982-07-21,833.43,843.80,828.20,832.19,66770000,832.19 +1982-07-20,826.10,837.71,820.02,833.43,61060000,833.43 +1982-07-19,828.67,836.66,822.68,826.10,53030000,826.10 +1982-07-16,827.34,837.33,819.92,828.67,58740000,828.67 +1982-07-15,828.39,836.57,821.25,827.34,61090000,827.34 +1982-07-14,824.20,831.62,815.26,828.39,58160000,828.39 +1982-07-13,824.87,832.95,816.97,824.20,66170000,824.20 +1982-07-12,814.69,830.10,814.69,824.87,74690000,824.87 +1982-07-09,804.98,818.59,803.37,814.12,65870000,814.12 +1982-07-08,799.66,807.17,787.39,804.98,63270000,804.98 +1982-07-07,798.90,804.70,793.19,799.66,46920000,799.66 +1982-07-06,796.99,802.89,789.19,798.90,44350000,798.90 +1982-07-02,803.18,803.18,792.52,796.99,43760000,796.99 +1982-07-01,811.93,814.88,800.04,803.27,47900000,803.27 +1982-06-30,812.21,821.63,807.84,811.93,65280000,811.93 +1982-06-29,811.93,818.40,805.18,812.21,46990000,812.21 +1982-06-28,803.08,816.69,800.51,811.93,40700000,811.93 +1982-06-25,810.41,812.12,800.61,803.08,38740000,803.08 +1982-06-24,813.17,821.63,805.56,810.41,55860000,810.41 +1982-06-23,799.66,815.35,795.76,813.17,62710000,813.17 +1982-06-22,789.95,801.46,787.67,799.66,55290000,799.66 +1982-06-21,788.62,797.85,784.25,789.95,50370000,789.95 +1982-06-18,791.48,793.57,784.53,788.62,53800000,788.62 +1982-06-17,796.90,797.56,787.01,791.48,49230000,791.48 +1982-06-16,801.27,809.17,793.85,796.90,56280000,796.90 +1982-06-15,801.85,805.18,793.38,801.27,44970000,801.27 +1982-06-14,809.74,810.22,798.61,801.85,40100000,801.85 +1982-06-11,803.37,815.92,803.37,809.74,68610000,809.74 +1982-06-10,795.57,803.37,790.53,798.71,50950000,798.71 +1982-06-09,802.23,804.03,789.76,795.57,55770000,795.57 +1982-06-08,804.03,809.84,799.28,802.23,46820000,802.23 +1982-06-07,804.98,809.93,797.09,804.03,44630000,804.03 +1982-06-04,816.50,818.87,802.42,804.98,44110000,804.98 +1982-06-03,816.88,824.30,810.79,816.50,48450000,816.50 +1982-06-02,814.97,822.39,810.88,816.88,49220000,816.88 +1982-06-01,819.54,822.96,811.92,814.97,41650000,814.97 +1982-05-28,824.96,828.86,815.54,819.54,43900000,819.54 +1982-05-27,828.77,832.19,821.06,824.96,44730000,824.96 +1982-05-26,834.57,836.85,824.20,828.77,51250000,828.77 +1982-05-25,836.38,845.32,832.38,834.57,44010000,834.57 +1982-05-24,835.90,840.09,830.10,836.38,38510000,836.38 +1982-05-21,832.48,841.23,829.24,835.90,45260000,835.90 +1982-05-20,835.90,839.71,827.62,832.48,48330000,832.48 +1982-05-19,840.85,845.41,832.57,835.90,48840000,835.90 +1982-05-18,845.32,848.08,836.66,840.85,48970000,840.85 +1982-05-17,857.21,857.21,842.94,845.32,45600000,845.32 +1982-05-14,859.11,864.54,853.88,857.78,49900000,857.78 +1982-05-13,865.77,869.86,855.88,859.11,58230000,859.11 +1982-05-12,865.87,874.52,858.92,865.77,59210000,865.77 +1982-05-11,860.92,870.62,857.31,865.87,54680000,865.87 +1982-05-10,869.20,870.24,857.97,860.92,46300000,860.92 +1982-05-07,863.20,876.52,859.78,869.20,67130000,869.20 +1982-05-06,856.35,867.96,856.35,863.20,67540000,863.20 +1982-05-05,854.45,861.97,848.74,854.45,58860000,854.45 +1982-05-04,849.03,860.16,848.17,854.45,58720000,854.45 +1982-05-03,848.36,852.74,837.52,849.03,46490000,849.03 +1982-04-30,844.94,852.55,841.70,848.36,48200000,848.36 +1982-04-29,852.64,852.93,840.09,844.94,51330000,844.94 +1982-04-28,857.50,861.49,845.99,852.64,50530000,852.64 +1982-04-27,865.58,868.34,853.50,857.50,56480000,857.50 +1982-04-26,862.16,871.19,856.45,865.58,60500000,865.58 +1982-04-23,853.12,865.37,851.79,862.16,71840000,862.16 +1982-04-22,843.70,857.02,843.70,853.12,64470000,853.12 +1982-04-21,840.56,847.70,835.81,843.42,57820000,843.42 +1982-04-20,846.08,848.93,836.38,840.56,54610000,840.56 +1982-04-19,843.42,854.26,838.66,846.08,58470000,846.08 +1982-04-16,839.61,848.36,836.85,843.42,55890000,843.42 +1982-04-15,838.09,842.85,832.38,839.61,45700000,839.61 +1982-04-14,841.04,844.46,831.91,838.09,45150000,838.09 +1982-04-13,841.32,847.89,836.19,841.04,48660000,841.04 +1982-04-12,842.94,847.32,836.38,841.32,46520000,841.32 +1982-04-08,836.35,847.51,833.33,842.94,60190000,842.94 +1982-04-07,839.33,845.03,832.48,836.35,53130000,836.35 +1982-04-06,835.33,842.85,827.91,839.33,43200000,839.33 +1982-04-05,838.57,843.89,830.96,835.33,46900000,835.33 +1982-04-02,833.24,843.23,831.53,838.57,59800000,838.57 +1982-04-01,822.77,836.66,820.49,833.24,57100000,833.24 +1982-03-31,824.49,830.57,818.40,822.77,43300000,822.77 +1982-03-30,823.82,829.72,816.97,824.49,43900000,824.49 +1982-03-29,817.92,826.77,813.17,823.82,37100000,823.82 +1982-03-26,827.44,827.44,814.12,817.92,42400000,817.92 +1982-03-25,823.34,833.71,818.59,827.63,51970000,827.63 +1982-03-24,826.67,831.81,819.92,823.34,49380000,823.34 +1982-03-23,819.54,830.67,817.54,826.67,67130000,826.67 +1982-03-22,805.65,824.01,804.79,819.54,57610000,819.54 +1982-03-19,805.27,811.64,799.75,805.65,46250000,805.65 +1982-03-18,795.85,808.41,795.00,805.27,54270000,805.27 +1982-03-17,798.33,802.70,791.29,795.85,48900000,795.85 +1982-03-16,800.99,808.41,795.57,798.33,48900000,798.33 +1982-03-15,797.37,805.18,789.38,800.99,43370000,800.99 +1982-03-12,805.56,806.32,792.05,797.37,49600000,797.37 +1982-03-11,804.89,814.88,800.51,805.56,52960000,805.56 +1982-03-10,803.84,815.26,797.85,804.89,59440000,804.89 +1982-03-09,795.47,810.79,786.15,803.84,76060000,803.84 +1982-03-08,807.36,819.82,794.52,795.47,67330000,795.47 +1982-03-05,807.55,814.97,799.28,807.36,67440000,807.36 +1982-03-04,815.16,819.82,800.70,807.55,74340000,807.55 +1982-03-03,825.82,826.01,808.69,815.16,70230000,815.16 +1982-03-02,828.39,840.66,821.54,825.82,63800000,825.82 +1982-03-01,824.39,834.28,818.21,828.39,53010000,828.39 +1982-02-26,825.82,831.24,817.83,824.39,43840000,824.39 +1982-02-25,826.77,837.42,820.78,825.82,54160000,825.82 +1982-02-24,812.98,829.72,806.51,826.77,64800000,826.77 +1982-02-23,811.26,817.73,802.23,812.98,60100000,812.98 +1982-02-22,824.30,835.81,809.55,811.26,58310000,811.26 +1982-02-19,828.96,833.33,818.59,824.30,51340000,824.30 +1982-02-18,827.63,836.95,824.01,828.96,60810000,828.96 +1982-02-17,831.34,836.95,822.68,827.63,47660000,827.63 +1982-02-16,833.81,834.67,817.26,831.34,48880000,831.34 +1982-02-12,834.67,841.32,829.24,833.81,37070000,833.81 +1982-02-11,836.66,841.42,827.25,834.67,46730000,834.67 +1982-02-10,830.57,842.09,829.34,836.66,46620000,836.66 +1982-02-09,833.43,838.47,824.11,830.57,54420000,830.57 +1982-02-08,849.70,849.70,830.86,833.43,48500000,833.43 +1982-02-05,847.03,858.26,842.94,851.03,53350000,851.03 +1982-02-04,845.03,852.74,835.71,847.03,53300000,847.03 +1982-02-03,852.55,858.26,841.89,845.03,49560000,845.03 +1982-02-02,851.69,860.83,846.46,852.55,45020000,852.55 +1982-02-01,866.34,866.34,848.08,851.69,47720000,851.69 +1982-01-29,864.25,876.71,859.78,871.10,73400000,871.10 +1982-01-28,845.32,867.20,845.32,864.25,66690000,864.25 +1982-01-27,841.51,848.08,832.67,842.66,50060000,842.66 +1982-01-26,842.75,849.79,836.76,841.51,44870000,841.51 +1982-01-25,845.03,846.75,832.57,842.75,43170000,842.75 +1982-01-22,848.27,853.31,839.80,845.03,44370000,845.03 +1982-01-21,845.89,856.64,842.85,848.27,48610000,848.27 +1982-01-20,847.41,853.50,838.95,845.89,48860000,845.89 +1982-01-19,855.12,861.97,845.22,847.41,45070000,847.41 +1982-01-18,847.60,857.78,838.47,855.12,44920000,855.12 +1982-01-15,842.28,852.64,840.37,847.60,43310000,847.60 +1982-01-14,838.95,848.36,834.09,842.28,42940000,842.28 +1982-01-13,847.70,855.31,835.14,838.95,49130000,838.95 +1982-01-12,850.46,856.07,842.66,847.70,49800000,847.70 +1982-01-11,866.53,872.43,848.55,850.46,51900000,850.46 +1982-01-08,861.78,872.15,858.92,866.53,42050000,866.53 +1982-01-07,861.02,865.39,851.22,861.78,43410000,861.78 +1982-01-06,865.30,868.72,853.41,861.02,51510000,861.02 +1982-01-05,882.52,882.61,862.82,865.30,47510000,865.30 +1982-01-04,875.00,887.37,871.86,882.52,36760000,882.52 +1981-12-31,873.10,880.33,868.91,875.00,40780000,875.00 +1981-12-30,868.25,879.76,865.96,873.10,42960000,873.10 +1981-12-29,870.34,875.67,864.44,868.25,35300000,868.25 +1981-12-28,873.38,878.04,867.77,870.34,28320000,870.34 +1981-12-24,869.67,876.14,866.15,873.38,23940000,873.38 +1981-12-23,871.96,877.28,865.39,869.67,42910000,869.67 +1981-12-22,873.10,878.81,867.77,871.96,48320000,871.96 +1981-12-21,875.76,879.57,868.63,873.10,41290000,873.10 +1981-12-18,870.53,880.71,867.39,875.76,50940000,875.76 +1981-12-17,868.72,874.71,862.82,870.53,47230000,870.53 +1981-12-16,875.95,878.42,865.11,868.72,42770000,868.72 +1981-12-15,871.48,880.33,867.77,875.95,44130000,875.95 +1981-12-14,882.52,882.52,868.72,871.48,44740000,871.48 +1981-12-11,892.03,897.45,883.37,886.51,45850000,886.51 +1981-12-10,888.22,897.74,885.18,892.03,47020000,892.03 +1981-12-09,881.75,891.46,879.19,888.22,44810000,888.22 +1981-12-08,886.99,889.36,875.29,881.75,45140000,881.75 +1981-12-07,892.69,897.17,883.37,886.99,45720000,886.99 +1981-12-04,885.75,898.50,885.75,892.69,55040000,892.69 +1981-12-03,882.61,888.32,875.86,883.85,43770000,883.85 +1981-12-02,890.22,892.41,879.28,882.61,44510000,882.61 +1981-12-01,888.98,896.12,881.37,890.22,53980000,890.22 +1981-11-30,885.94,892.79,878.14,888.98,47580000,888.98 +1981-11-27,878.14,890.89,875.76,885.94,32770000,885.94 +1981-11-25,870.72,884.99,870.72,878.14,58570000,878.14 +1981-11-24,851.79,873.29,850.17,870.24,53200000,870.24 +1981-11-23,852.93,860.92,848.17,851.79,45250000,851.79 +1981-11-20,844.75,858.16,841.80,852.93,52010000,852.93 +1981-11-19,844.08,850.08,834.57,844.75,48890000,844.75 +1981-11-18,850.17,854.26,839.99,844.08,49980000,844.08 +1981-11-17,845.03,853.50,841.23,850.17,43190000,850.17 +1981-11-16,853.79,853.79,839.04,845.03,43740000,845.03 +1981-11-13,860.54,865.20,851.79,855.88,45550000,855.88 +1981-11-12,857.12,869.01,854.07,860.54,55720000,860.54 +1981-11-11,853.98,860.83,849.03,857.12,41920000,857.12 +1981-11-10,855.21,865.58,849.12,853.98,53940000,853.98 +1981-11-09,852.45,861.49,844.65,855.21,48310000,855.21 +1981-11-06,859.11,861.21,847.89,852.45,43270000,852.45 +1981-11-05,866.82,874.14,856.93,859.11,50860000,859.11 +1981-11-04,868.72,876.05,859.30,866.82,53450000,866.82 +1981-11-03,866.82,873.19,859.87,868.72,54620000,868.72 +1981-11-02,855.97,872.53,855.97,866.82,65100000,866.82 +1981-10-30,832.95,854.83,826.96,852.55,59570000,852.55 +1981-10-29,837.61,842.47,826.58,832.95,40070000,832.95 +1981-10-28,838.38,847.89,832.29,837.61,48100000,837.61 +1981-10-27,830.96,846.94,828.01,838.38,53030000,838.38 +1981-10-26,837.99,837.99,823.63,830.96,38210000,830.96 +1981-10-23,847.60,847.60,833.14,837.99,41990000,837.99 +1981-10-22,851.03,854.07,840.85,848.27,40630000,848.27 +1981-10-21,851.88,861.97,846.46,851.03,48490000,851.03 +1981-10-20,847.13,860.06,844.75,851.88,51530000,851.88 +1981-10-19,851.69,853.88,840.09,847.13,41590000,847.13 +1981-10-16,856.26,860.73,846.37,851.69,37800000,851.69 +1981-10-15,850.65,861.49,845.61,856.26,42830000,856.26 +1981-10-14,865.58,866.53,848.46,850.65,40260000,850.65 +1981-10-13,869.48,876.05,859.59,865.58,43360000,865.58 +1981-10-12,873.00,877.76,862.25,869.48,30030000,869.48 +1981-10-09,878.14,885.84,866.34,873.00,50060000,873.00 +1981-10-08,868.72,881.66,862.63,878.14,47090000,878.14 +1981-10-07,856.26,871.58,853.98,868.72,50030000,868.72 +1981-10-06,859.87,870.81,848.74,856.26,45460000,856.26 +1981-10-05,860.73,873.95,854.83,859.87,51290000,859.87 +1981-10-02,852.26,866.34,848.65,860.73,54540000,860.73 +1981-10-01,849.98,855.88,840.47,852.26,41600000,852.26 +1981-09-30,847.89,854.36,839.61,849.98,40700000,849.98 +1981-09-29,842.56,858.83,837.80,847.89,49800000,847.89 +1981-09-28,824.01,844.65,807.46,842.56,61320000,842.56 +1981-09-25,834.47,834.47,815.37,824.01,54390000,824.01 +1981-09-24,840.94,850.65,832.00,835.14,48880000,835.14 +1981-09-23,845.70,847.51,827.25,840.94,52700000,840.94 +1981-09-22,846.56,855.40,838.18,845.70,46830000,845.70 +1981-09-21,836.19,851.69,829.43,846.56,44570000,846.56 +1981-09-18,840.09,845.51,829.43,836.19,47350000,836.19 +1981-09-17,851.59,858.26,837.33,840.09,48300000,840.09 +1981-09-16,858.35,858.44,845.98,851.59,43660000,851.59 +1981-09-15,866.15,872.53,856.74,858.35,38580000,858.35 +1981-09-14,872.81,876.24,860.06,866.15,34040000,866.15 +1981-09-11,862.44,875.48,857.21,872.81,42170000,872.81 +1981-09-10,853.88,868.82,853.12,862.44,47430000,862.44 +1981-09-09,851.12,861.30,844.94,853.88,43910000,853.88 +1981-09-08,861.68,863.39,843.13,851.12,47340000,851.12 +1981-09-04,867.01,869.96,856.16,861.68,42760000,861.68 +1981-09-03,884.23,888.70,865.11,867.01,41730000,867.01 +1981-09-02,882.71,892.41,879.28,884.23,37570000,884.23 +1981-09-01,881.47,889.36,873.10,882.71,45110000,882.71 +1981-08-31,892.22,900.88,879.09,881.47,40360000,881.47 +1981-08-28,889.08,898.78,884.80,892.22,38020000,892.22 +1981-08-27,899.26,900.49,883.66,889.08,43900000,889.08 +1981-08-26,901.83,908.39,893.65,899.26,39980000,899.26 +1981-08-25,900.11,904.30,887.46,901.83,54600000,901.83 +1981-08-24,917.43,917.43,896.97,900.11,46750000,900.11 +1981-08-21,928.37,930.65,917.14,920.57,37670000,920.57 +1981-08-20,926.46,935.31,923.52,928.37,38270000,928.37 +1981-08-19,924.37,932.08,918.38,926.46,39390000,926.46 +1981-08-18,926.75,932.74,916.38,924.37,47270000,924.37 +1981-08-17,936.93,939.40,924.37,926.75,40840000,926.75 +1981-08-14,944.35,947.77,933.79,936.93,42580000,936.93 +1981-08-13,945.21,952.91,938.55,944.35,42460000,944.35 +1981-08-12,949.30,955.86,942.26,945.21,53650000,945.21 +1981-08-11,943.68,955.48,939.50,949.30,52600000,949.30 +1981-08-10,942.54,948.82,935.88,943.68,38370000,943.68 +1981-08-07,952.91,954.15,938.45,942.54,38370000,942.54 +1981-08-06,953.58,961.47,947.30,952.91,52070000,952.91 +1981-08-05,945.97,958.81,942.16,953.58,54290000,953.58 +1981-08-04,946.25,951.39,937.40,945.97,39460000,945.97 +1981-08-03,952.34,955.48,940.45,946.25,39650000,946.25 +1981-07-31,945.11,956.72,943.40,952.34,43480000,952.34 +1981-07-30,937.40,948.25,934.36,945.11,41560000,945.11 +1981-07-29,939.40,947.30,933.50,937.40,37610000,937.40 +1981-07-28,945.87,948.15,934.65,939.40,38160000,939.40 +1981-07-27,937.12,950.82,937.12,945.87,39610000,945.87 +1981-07-24,928.56,941.78,926.94,936.74,38880000,936.74 +1981-07-23,924.66,932.84,918.66,928.56,41790000,928.56 +1981-07-22,934.46,942.07,922.37,924.66,47500000,924.66 +1981-07-21,940.54,944.35,927.23,934.46,47280000,934.46 +1981-07-20,954.81,954.81,937.02,940.54,40240000,940.54 +1981-07-17,955.48,964.80,949.30,958.90,42780000,958.90 +1981-07-16,954.15,960.52,947.11,955.48,39010000,955.48 +1981-07-15,948.25,960.33,945.49,954.15,48950000,954.15 +1981-07-14,954.34,956.53,941.50,948.25,45230000,948.25 +1981-07-13,955.67,962.42,949.87,954.34,38100000,954.34 +1981-07-10,959.00,963.38,950.15,955.67,39950000,955.67 +1981-07-09,953.48,963.18,950.06,959.00,45510000,959.00 +1981-07-08,954.15,961.28,944.06,953.48,46000000,953.48 +1981-07-07,949.30,962.90,943.49,954.15,53560000,954.15 +1981-07-06,957.95,957.95,941.97,949.30,44590000,949.30 +1981-07-02,967.66,972.70,954.72,959.19,45100000,959.19 +1981-07-01,976.88,978.98,963.28,967.66,49080000,967.66 +1981-06-30,984.59,988.01,972.69,976.88,41550000,976.88 +1981-06-29,992.87,996.39,981.16,984.59,37930000,984.59 +1981-06-26,996.77,1001.81,988.49,992.87,39240000,992.87 +1981-06-25,999.33,1007.99,992.58,996.77,43920000,996.77 +1981-06-24,1006.66,1008.09,993.15,999.33,46650000,999.33 +1981-06-23,994.20,1008.94,990.01,1006.66,51840000,1006.66 +1981-06-22,996.19,1004.19,988.96,994.20,41790000,994.20 +1981-06-19,995.15,1002.85,988.77,996.19,46430000,996.19 +1981-06-18,1006.56,1011.80,990.96,995.15,48400000,995.15 +1981-06-17,1003.33,1010.84,992.01,1006.56,55470000,1006.56 +1981-06-16,1011.99,1017.50,997.90,1003.33,57780000,1003.33 +1981-06-15,1006.85,1023.02,1006.85,1011.99,63350000,1011.99 +1981-06-12,1007.42,1017.22,996.77,1006.28,60790000,1006.28 +1981-06-11,993.88,1010.57,989.89,1007.42,59530000,1007.42 +1981-06-10,994.44,1003.71,985.91,993.88,53200000,993.88 +1981-06-09,995.64,1004.45,987.76,994.44,44600000,994.44 +1981-06-08,993.79,1003.52,990.54,995.64,41580000,995.64 +1981-06-05,986.74,999.44,981.18,993.79,47180000,993.79 +1981-06-04,989.71,996.66,980.25,986.74,48940000,986.74 +1981-06-03,987.48,993.14,976.82,989.71,54700000,989.71 +1981-06-02,997.96,1003.15,984.70,987.48,53930000,987.48 +1981-06-01,991.75,1010.48,988.97,997.96,62170000,997.96 +1981-05-29,994.25,1003.15,985.44,991.75,51580000,991.75 +1981-05-28,993.14,1002.97,982.66,994.25,59500000,994.25 +1981-05-27,983.96,998.70,978.76,993.14,58730000,993.14 +1981-05-26,971.72,987.20,965.69,983.96,42760000,983.96 +1981-05-22,976.59,982.62,966.59,971.72,40710000,971.72 +1981-05-21,976.86,984.06,969.11,976.59,46820000,976.59 +1981-05-20,980.01,984.87,971.36,976.86,42370000,976.86 +1981-05-19,985.77,988.29,972.26,980.01,42220000,980.01 +1981-05-18,985.95,994.42,978.84,985.77,42510000,985.77 +1981-05-15,973.07,990.09,971.72,985.95,45460000,985.95 +1981-05-14,967.76,979.02,963.08,973.07,42750000,973.07 +1981-05-13,970.82,978.12,961.82,967.76,42600000,967.76 +1981-05-12,963.44,973.70,956.68,970.82,40440000,970.82 +1981-05-11,976.40,979.47,959.83,963.44,37640000,963.44 +1981-05-08,978.39,983.88,972.71,976.40,41860000,976.40 +1981-05-07,973.34,981.99,969.29,978.39,42590000,978.39 +1981-05-06,972.44,983.16,969.47,973.34,47100000,973.34 +1981-05-05,979.11,979.38,964.52,972.44,49000000,972.44 +1981-05-04,985.41,985.41,971.90,979.11,40430000,979.11 +1981-05-01,997.75,1005.22,987.12,995.59,48360000,995.59 +1981-04-30,1004.32,1010.90,991.89,997.75,47970000,997.75 +1981-04-29,1016.93,1018.37,996.58,1004.32,53340000,1004.32 +1981-04-28,1024.05,1029.63,1009.37,1016.93,58210000,1016.93 +1981-04-27,1020.35,1030.98,1013.87,1024.05,51080000,1024.05 +1981-04-24,1010.27,1024.68,1004.32,1020.35,60000000,1020.35 +1981-04-23,1007.02,1022.33,1001.89,1010.27,64200000,1010.27 +1981-04-22,1005.94,1013.96,996.13,1007.02,60660000,1007.02 +1981-04-21,1015.94,1020.98,1001.44,1005.94,60280000,1005.94 +1981-04-20,1005.58,1020.71,995.14,1015.94,51020000,1015.94 +1981-04-16,1001.71,1012.79,995.23,1005.58,52950000,1005.58 +1981-04-15,989.10,1004.41,987.03,1001.71,56040000,1001.71 +1981-04-14,993.16,998.56,981.81,989.10,48350000,989.10 +1981-04-13,1000.27,1003.51,987.66,993.16,49860000,993.16 +1981-04-10,998.83,1009.01,990.63,1000.27,58130000,1000.27 +1981-04-09,993.43,1004.50,984.87,998.83,59520000,998.83 +1981-04-08,992.89,1000.45,987.84,993.43,48000000,993.43 +1981-04-07,994.24,1004.41,987.03,992.89,44540000,992.89 +1981-04-06,1004.59,1004.59,986.67,994.24,43190000,994.24 +1981-04-03,1009.01,1017.02,1000.72,1007.11,48680000,1007.11 +1981-04-02,1014.14,1020.62,1002.07,1009.01,52570000,1009.01 +1981-04-01,1003.87,1020.62,1002.16,1014.14,54880000,1014.14 +1981-03-31,996.58,1011.44,996.58,1003.87,50980000,1003.87 +1981-03-30,994.78,1005.04,987.21,992.16,33500000,992.16 +1981-03-27,1005.76,1008.29,990.00,994.78,46930000,994.78 +1981-03-26,1015.22,1021.79,1000.81,1005.76,60370000,1005.76 +1981-03-25,996.13,1016.48,992.71,1015.22,56320000,1015.22 +1981-03-24,1004.23,1015.58,992.35,996.13,66400000,996.13 +1981-03-23,992.80,1008.92,988.56,1004.23,57880000,1004.23 +1981-03-20,986.58,1002.07,981.27,992.80,61980000,992.80 +1981-03-19,994.06,1001.71,981.18,986.58,62440000,986.58 +1981-03-18,992.53,1003.33,984.15,994.06,55740000,994.06 +1981-03-17,1002.79,1011.08,986.22,992.53,65920000,992.53 +1981-03-16,985.77,1005.40,979.38,1002.79,49940000,1002.79 +1981-03-13,989.82,1002.70,981.09,985.77,68290000,985.77 +1981-03-12,967.67,991.35,966.05,989.82,54640000,989.82 +1981-03-11,972.67,978.30,959.11,967.67,47390000,967.67 +1981-03-10,976.42,987.60,968.47,972.67,56610000,972.67 +1981-03-09,964.62,981.22,962.79,976.42,46180000,976.42 +1981-03-06,964.62,972.13,955.71,964.62,43940000,964.62 +1981-03-05,971.44,977.11,961.39,964.62,45380000,964.62 +1981-03-04,966.02,980.70,959.47,971.44,47260000,971.44 +1981-03-03,977.99,982.01,961.65,966.02,48730000,966.02 +1981-03-02,974.58,983.75,964.36,977.99,47710000,977.99 +1981-02-27,966.81,980.87,960.60,974.58,53210000,974.58 +1981-02-26,954.40,972.22,953.00,966.81,60300000,966.81 +1981-02-25,946.10,958.51,932.22,954.40,45710000,954.40 +1981-02-24,945.23,955.63,938.77,946.10,43960000,946.10 +1981-02-23,936.09,952.22,930.64,945.23,39590000,945.23 +1981-02-20,933.36,942.41,926.11,936.09,41900000,936.09 +1981-02-19,947.10,952.05,930.29,933.36,41630000,933.36 +1981-02-18,939.68,950.34,935.15,947.10,40410000,947.10 +1981-02-17,931.57,944.28,930.38,939.68,37940000,939.68 +1981-02-13,936.60,940.19,926.45,931.57,33360000,931.57 +1981-02-12,942.49,947.53,933.02,936.60,34700000,936.60 +1981-02-11,948.63,954.44,938.99,942.49,37770000,942.49 +1981-02-10,947.18,955.12,940.02,948.63,40820000,948.63 +1981-02-09,952.30,958.53,943.26,947.18,38330000,947.18 +1981-02-06,946.76,959.98,944.20,952.30,45820000,952.30 +1981-02-05,941.98,952.22,936.09,946.76,45320000,946.76 +1981-02-04,941.38,948.21,933.28,941.98,45520000,941.98 +1981-02-03,932.25,944.37,925.77,941.38,45950000,941.38 +1981-02-02,947.10,947.10,923.89,932.25,44070000,932.25 +1981-01-30,948.89,960.24,940.61,947.27,41160000,947.27 +1981-01-29,942.58,955.63,937.12,948.89,38170000,948.89 +1981-01-28,949.49,956.91,939.68,942.58,36690000,942.58 +1981-01-27,938.91,954.69,935.92,949.49,42260000,949.49 +1981-01-26,940.19,947.70,930.89,938.91,35380000,938.91 +1981-01-23,940.44,947.10,934.30,940.19,37220000,940.19 +1981-01-22,946.25,951.28,934.13,940.44,39880000,940.44 +1981-01-21,950.68,954.01,938.48,946.25,39190000,946.25 +1981-01-20,970.99,975.94,948.55,950.68,41750000,950.68 +1981-01-19,973.29,980.38,965.36,970.99,36470000,970.99 +1981-01-16,969.97,980.29,964.85,973.29,43260000,973.29 +1981-01-15,966.47,975.17,959.30,969.97,39640000,969.97 +1981-01-14,965.10,978.07,960.75,966.47,41390000,966.47 +1981-01-13,968.77,971.25,956.48,965.10,40890000,965.10 +1981-01-12,968.69,983.87,964.76,968.77,48760000,968.77 +1981-01-09,965.70,977.05,957.76,968.69,50190000,968.69 +1981-01-08,980.89,986.01,959.13,965.70,55350000,965.70 +1981-01-07,986.35,986.35,962.63,980.89,92890000,980.89 +1981-01-06,992.66,1013.14,986.26,1004.69,67400000,1004.69 +1981-01-05,976.28,996.93,976.28,992.66,58710000,992.66 +1981-01-02,963.99,975.68,958.70,972.78,28870000,972.78 +1980-12-31,962.03,971.50,955.55,963.99,41210000,963.99 +1980-12-30,960.58,969.54,952.99,962.03,39750000,962.03 +1980-12-29,966.38,974.57,956.40,960.58,36060000,960.58 +1980-12-26,963.05,969.37,958.45,966.38,16130000,966.38 +1980-12-24,958.28,968.17,950.85,963.05,29490000,963.05 +1980-12-23,958.79,971.25,949.49,958.28,55260000,958.28 +1980-12-22,937.20,962.17,934.64,958.79,51950000,958.79 +1980-12-19,930.20,945.31,924.57,937.20,50770000,937.20 +1980-12-18,928.50,948.38,925.00,930.20,69570000,930.20 +1980-12-17,918.09,933.96,913.05,928.50,50800000,928.50 +1980-12-16,911.60,922.35,902.47,918.09,41630000,918.09 +1980-12-15,917.15,927.65,907.85,911.60,39700000,911.60 +1980-12-12,908.45,923.12,906.48,917.15,39530000,917.15 +1980-12-11,916.21,918.52,894.45,908.45,60220000,908.45 +1980-12-10,934.04,943.52,914.16,916.21,49860000,916.21 +1980-12-09,933.70,944.28,921.59,934.04,53220000,934.04 +1980-12-08,951.19,951.19,928.33,933.70,53390000,933.70 +1980-12-05,970.48,972.61,951.45,956.23,51990000,956.23 +1980-12-04,972.27,984.22,963.31,970.48,51170000,970.48 +1980-12-03,974.40,981.57,963.57,972.27,43430000,972.27 +1980-12-02,969.45,979.69,954.95,974.40,52340000,974.40 +1980-12-01,991.13,991.13,966.38,969.45,48180000,969.45 +1980-11-28,989.68,998.72,980.38,993.34,34240000,993.34 +1980-11-26,982.68,1000.77,979.86,989.68,55340000,989.68 +1980-11-25,978.75,993.52,973.04,982.68,55840000,982.68 +1980-11-24,988.14,988.14,967.66,978.75,51120000,978.75 +1980-11-21,1000.17,1004.69,984.30,989.93,55950000,989.93 +1980-11-20,991.04,1004.61,984.90,1000.17,60180000,1000.17 +1980-11-19,997.95,1009.39,983.36,991.04,69230000,991.04 +1980-11-18,986.26,1005.20,985.92,997.95,70380000,997.95 +1980-11-17,986.35,990.78,968.94,986.26,50260000,986.26 +1980-11-14,982.42,997.35,973.21,986.35,71630000,986.35 +1980-11-13,964.93,984.64,962.20,982.42,69340000,982.42 +1980-11-12,944.03,968.86,943.77,964.93,58500000,964.93 +1980-11-11,933.79,951.19,933.02,944.03,41520000,944.03 +1980-11-10,932.42,940.44,926.71,933.79,35720000,933.79 +1980-11-07,935.41,940.53,926.11,932.42,40070000,932.42 +1980-11-06,950.43,950.43,932.08,935.41,48890000,935.41 +1980-11-05,950.34,982.59,950.34,953.16,84080000,953.16 +1980-11-03,924.49,941.30,924.49,937.20,35820000,937.20 +1980-10-31,917.75,929.35,911.60,924.49,40110000,924.49 +1980-10-30,929.18,932.51,915.02,917.75,39060000,917.75 +1980-10-29,932.59,941.64,925.68,929.18,37200000,929.18 +1980-10-28,931.74,937.54,922.78,932.59,40300000,932.59 +1980-10-27,943.60,944.62,930.12,931.74,34430000,931.74 +1980-10-24,939.51,947.35,931.06,943.60,41050000,943.60 +1980-10-23,955.12,958.28,936.69,939.51,49200000,939.51 +1980-10-22,954.44,961.77,947.87,955.12,43060000,955.12 +1980-10-21,960.84,968.69,949.91,954.44,51220000,954.44 +1980-10-20,956.14,964.42,946.59,960.84,40910000,960.84 +1980-10-17,958.70,966.04,946.42,956.14,43920000,956.14 +1980-10-16,972.44,987.29,956.57,958.70,65450000,958.70 +1980-10-15,962.20,975.94,959.73,972.44,48260000,972.44 +1980-10-14,959.90,971.67,957.08,962.20,48830000,962.20 +1980-10-13,950.68,963.65,946.50,959.90,31360000,959.90 +1980-10-10,958.96,965.70,946.25,950.68,44040000,950.68 +1980-10-09,963.99,971.08,953.07,958.96,43980000,958.96 +1980-10-08,960.67,971.42,955.29,963.99,46580000,963.99 +1980-10-07,965.70,973.04,955.55,960.67,50310000,960.67 +1980-10-06,950.85,969.62,950.85,965.70,50130000,965.70 +1980-10-03,942.24,957.85,938.40,950.68,47510000,950.68 +1980-10-02,939.42,948.21,931.31,942.24,46160000,942.24 +1980-10-01,932.42,945.14,923.04,939.42,48720000,939.42 +1980-09-30,921.93,937.20,921.59,932.42,40290000,932.42 +1980-09-29,934.81,934.81,918.00,921.93,46410000,921.93 +1980-09-26,952.65,952.65,934.98,940.10,49460000,940.10 +1980-09-25,964.76,972.61,953.07,955.97,49510000,955.97 +1980-09-24,962.03,972.78,952.73,964.76,56860000,964.76 +1980-09-23,974.57,980.72,957.94,962.03,64390000,962.03 +1980-09-22,963.74,977.05,955.29,974.57,53140000,974.57 +1980-09-19,956.48,972.70,950.77,963.74,53780000,963.74 +1980-09-18,961.26,972.01,950.26,956.48,63390000,956.48 +1980-09-17,945.90,966.98,943.69,961.26,63990000,961.26 +1980-09-16,937.63,953.07,935.32,945.90,57290000,945.90 +1980-09-15,936.52,942.58,926.96,937.63,44630000,937.63 +1980-09-12,941.30,945.48,932.51,936.52,47180000,936.52 +1980-09-11,938.48,947.78,934.39,941.30,44770000,941.30 +1980-09-10,934.73,946.16,930.63,938.48,51430000,938.48 +1980-09-09,928.58,936.09,919.03,934.73,44460000,934.73 +1980-09-08,940.96,945.48,925.34,928.58,42050000,928.58 +1980-09-05,948.81,950.68,937.03,940.96,37990000,940.96 +1980-09-04,953.16,964.85,942.92,948.81,59030000,948.81 +1980-09-03,940.78,955.20,939.85,953.16,52370000,953.16 +1980-09-02,932.59,944.80,928.16,940.78,35290000,940.78 +1980-08-29,930.38,936.43,923.04,932.59,33510000,932.59 +1980-08-28,943.09,944.03,927.22,930.38,39890000,930.38 +1980-08-27,953.24,953.24,939.68,943.09,44000000,943.09 +1980-08-26,956.23,964.59,949.91,953.41,41700000,953.41 +1980-08-25,958.19,961.35,947.70,956.23,35400000,956.23 +1980-08-22,955.03,969.45,952.73,958.19,58210000,958.19 +1980-08-21,945.31,958.53,943.94,955.03,50770000,955.03 +1980-08-20,939.85,948.98,934.47,945.31,42560000,945.31 +1980-08-19,948.63,952.13,937.37,939.85,41930000,939.85 +1980-08-18,961.95,961.95,944.97,948.63,41890000,948.63 +1980-08-15,962.63,972.35,956.31,966.72,47780000,966.72 +1980-08-14,949.23,965.36,943.69,962.63,47700000,962.63 +1980-08-13,952.39,958.79,944.45,949.23,44350000,949.23 +1980-08-12,964.08,969.97,948.72,952.39,52050000,952.39 +1980-08-11,954.69,966.89,950.43,964.08,44690000,964.08 +1980-08-08,950.94,965.87,949.74,954.69,58860000,954.69 +1980-08-07,938.23,953.75,935.84,950.94,61820000,950.94 +1980-08-06,929.78,941.04,923.63,938.23,45050000,938.23 +1980-08-05,931.06,938.82,924.23,929.78,45510000,929.78 +1980-08-04,931.48,935.24,918.52,931.06,41550000,931.06 +1980-08-01,935.32,940.02,924.83,931.48,46440000,931.48 +1980-07-31,936.18,939.51,918.77,935.32,54610000,935.32 +1980-07-30,931.91,946.93,926.54,936.18,58060000,936.18 +1980-07-29,925.43,935.15,921.33,931.91,44840000,931.91 +1980-07-28,918.09,927.73,911.69,925.43,35330000,925.43 +1980-07-25,925.34,925.34,913.23,918.09,36250000,918.09 +1980-07-24,928.58,933.79,919.97,926.11,42420000,926.11 +1980-07-23,927.30,937.71,920.99,928.58,45890000,928.58 +1980-07-22,928.67,940.78,922.18,927.30,52230000,927.30 +1980-07-21,923.98,933.28,916.38,928.67,42750000,928.67 +1980-07-18,915.10,930.80,914.42,923.98,58040000,923.98 +1980-07-17,904.44,916.64,902.05,915.10,48850000,915.10 +1980-07-16,901.54,912.97,898.21,904.44,49140000,904.44 +1980-07-15,905.55,916.04,899.23,901.54,60920000,901.54 +1980-07-14,891.13,908.28,887.20,905.55,45500000,905.55 +1980-07-11,885.92,895.22,880.80,891.13,38310000,891.13 +1980-07-10,897.27,900.34,883.28,885.92,43730000,885.92 +1980-07-09,897.35,908.87,892.58,897.27,52010000,897.27 +1980-07-08,898.21,904.86,891.38,897.35,45830000,897.35 +1980-07-07,888.91,900.77,886.86,898.21,42540000,898.21 +1980-07-03,876.02,890.78,874.83,888.91,47230000,888.91 +1980-07-02,872.27,880.46,867.06,876.02,42950000,876.02 +1980-07-01,867.92,876.02,862.63,872.27,34340000,872.27 +1980-06-30,880.89,880.89,864.33,867.92,29910000,867.92 +1980-06-27,883.45,889.08,874.49,881.83,33110000,881.83 +1980-06-26,887.54,896.33,880.03,883.45,45110000,883.45 +1980-06-25,877.30,892.49,874.91,887.54,46500000,887.54 +1980-06-24,873.81,881.31,867.15,877.30,37730000,877.30 +1980-06-23,869.71,879.61,864.85,873.81,34180000,873.81 +1980-06-20,870.90,875.09,863.31,869.71,36530000,869.71 +1980-06-19,881.91,886.01,869.62,870.90,38280000,870.90 +1980-06-18,879.27,885.32,870.14,881.91,41960000,881.91 +1980-06-17,877.73,887.63,872.35,879.27,41990000,879.27 +1980-06-16,876.37,883.19,868.77,877.73,36190000,877.73 +1980-06-13,872.61,883.96,866.81,876.37,41880000,876.37 +1980-06-12,872.70,881.40,863.05,872.61,47300000,872.61 +1980-06-11,863.99,876.88,860.24,872.70,43800000,872.70 +1980-06-10,860.67,870.73,855.20,863.99,42030000,863.99 +1980-06-09,861.52,867.66,855.72,860.67,36820000,860.67 +1980-06-06,858.70,867.06,853.07,861.52,37230000,861.52 +1980-06-05,858.02,868.60,853.50,858.70,49070000,858.70 +1980-06-04,843.77,860.49,842.75,858.02,44180000,858.02 +1980-06-03,847.35,851.96,840.70,843.77,33150000,843.77 +1980-06-02,850.85,857.94,842.92,847.35,32710000,847.35 +1980-05-30,846.25,853.24,835.07,850.85,34820000,850.85 +1980-05-29,860.32,863.65,844.71,846.25,42000000,846.25 +1980-05-28,857.76,866.13,850.09,860.32,38580000,860.32 +1980-05-27,854.10,864.42,851.28,857.76,40810000,857.76 +1980-05-23,843.34,858.62,843.34,854.10,45790000,854.10 +1980-05-22,831.06,848.63,828.84,842.92,41040000,842.92 +1980-05-21,832.51,836.43,821.50,831.06,34830000,831.06 +1980-05-20,830.89,837.12,825.60,832.51,31800000,832.51 +1980-05-19,826.88,835.75,820.65,830.89,30970000,830.89 +1980-05-16,822.53,829.52,819.11,826.88,31710000,826.88 +1980-05-15,819.62,829.35,816.04,822.53,41120000,822.53 +1980-05-14,816.89,827.73,813.74,819.62,40840000,819.62 +1980-05-13,805.20,820.39,803.07,816.89,35460000,816.89 +1980-05-12,805.80,810.32,795.82,805.20,28220000,805.20 +1980-05-09,815.10,815.10,802.47,805.80,30280000,805.80 +1980-05-08,821.25,827.47,811.01,815.19,39280000,815.19 +1980-05-07,816.04,828.67,810.49,821.25,42600000,821.25 +1980-05-06,816.30,827.65,808.28,816.04,40160000,816.04 +1980-05-05,810.92,819.20,803.58,816.30,34090000,816.30 +1980-05-02,808.79,815.70,802.99,810.92,28040000,810.92 +1980-05-01,817.06,820.22,803.24,808.79,32480000,808.79 +1980-04-30,811.09,818.52,801.02,817.06,30850000,817.06 +1980-04-29,805.46,816.21,802.65,811.09,27940000,811.09 +1980-04-28,803.58,814.68,798.72,805.46,30600000,805.46 +1980-04-25,797.10,806.74,786.35,803.58,28590000,803.58 +1980-04-24,789.25,804.95,785.24,797.10,35790000,797.10 +1980-04-23,789.85,801.11,784.13,789.25,42620000,789.25 +1980-04-22,771.33,793.43,771.33,789.85,47920000,789.85 +1980-04-21,763.40,769.62,751.37,759.13,27560000,759.13 +1980-04-18,768.86,775.94,760.32,763.40,26880000,763.40 +1980-04-17,771.25,776.37,762.12,768.86,32770000,768.86 +1980-04-16,783.36,794.88,769.80,771.25,39730000,771.25 +1980-04-15,784.90,792.41,778.84,783.36,26670000,783.36 +1980-04-14,791.55,791.81,779.52,784.90,23060000,784.90 +1980-04-11,791.47,800.85,786.52,791.55,29960000,791.55 +1980-04-10,785.92,796.42,783.02,791.47,33940000,791.47 +1980-04-09,775.00,790.02,772.44,785.92,33020000,785.92 +1980-04-08,768.34,779.61,759.81,775.00,31700000,775.00 +1980-04-07,784.13,784.39,765.44,768.34,29130000,768.34 +1980-04-03,787.80,791.98,778.24,784.13,27970000,784.13 +1980-04-02,784.47,796.40,779.95,787.80,35210000,787.80 +1980-04-01,785.75,792.15,776.28,784.47,32230000,784.47 +1980-03-31,777.65,790.87,772.18,785.75,35840000,785.75 +1980-03-28,759.98,784.39,756.57,777.65,46720000,777.65 +1980-03-27,762.12,767.41,729.95,759.98,63680000,759.98 +1980-03-26,767.83,781.66,758.79,762.12,37370000,762.12 +1980-03-25,765.44,777.47,758.36,767.83,43790000,767.83 +1980-03-24,784.98,784.98,761.69,765.44,39230000,765.44 +1980-03-21,789.08,794.71,779.52,785.15,32220000,785.15 +1980-03-20,800.94,804.61,785.92,789.08,32580000,789.08 +1980-03-19,801.62,812.12,794.97,800.94,36520000,800.94 +1980-03-18,788.65,806.66,780.97,801.62,47340000,801.62 +1980-03-17,811.26,811.26,784.98,788.65,37020000,788.65 +1980-03-14,809.56,819.11,800.68,811.69,35180000,811.69 +1980-03-13,819.54,825.26,806.57,809.56,33070000,809.56 +1980-03-12,826.45,829.86,808.70,819.54,37990000,819.54 +1980-03-11,818.94,831.91,817.58,826.45,41350000,826.45 +1980-03-10,820.56,828.84,807.25,818.94,43750000,818.94 +1980-03-07,828.07,832.51,813.23,820.56,50950000,820.56 +1980-03-06,844.88,848.12,822.44,828.07,49610000,828.07 +1980-03-05,856.48,868.69,840.78,844.88,49240000,844.88 +1980-03-04,854.35,859.90,842.75,856.48,44310000,856.48 +1980-03-03,863.14,868.26,851.37,854.35,38690000,854.35 +1980-02-29,854.44,866.55,850.85,863.14,38810000,863.14 +1980-02-28,855.12,865.10,847.27,854.44,40330000,854.44 +1980-02-27,864.25,875.26,850.09,855.12,46430000,855.12 +1980-02-26,859.81,869.45,853.24,864.25,40000000,864.25 +1980-02-25,868.77,868.94,854.61,859.81,39140000,859.81 +1980-02-22,868.52,877.47,855.80,868.77,48210000,868.77 +1980-02-21,886.86,891.13,863.99,868.52,51530000,868.52 +1980-02-20,876.02,891.30,872.44,886.86,44340000,886.86 +1980-02-19,883.96,883.96,869.37,876.02,39480000,876.02 +1980-02-15,892.92,892.92,875.09,884.98,46680000,884.98 +1980-02-14,903.84,912.03,886.86,893.77,50540000,893.77 +1980-02-13,898.98,918.17,896.59,903.84,65230000,903.84 +1980-02-12,889.59,901.37,880.97,898.98,48090000,898.98 +1980-02-11,895.73,902.39,884.04,889.59,58660000,889.59 +1980-02-08,885.49,901.11,879.86,895.73,57860000,895.73 +1980-02-07,881.83,897.27,878.24,885.49,57690000,885.49 +1980-02-06,876.62,888.05,867.92,881.83,51950000,881.83 +1980-02-05,875.09,880.89,868.17,876.62,41880000,876.62 +1980-02-04,881.48,887.37,870.48,875.09,43070000,875.09 +1980-02-01,875.85,886.64,866.30,881.48,46610000,881.48 +1980-01-31,881.91,897.87,873.04,875.85,65900000,875.85 +1980-01-30,874.40,886.09,870.14,881.91,51170000,881.91 +1980-01-29,878.50,885.67,864.59,874.40,55480000,874.40 +1980-01-28,876.11,884.56,866.64,878.50,53620000,878.50 +1980-01-25,879.95,882.25,869.03,876.11,47100000,876.11 +1980-01-24,877.56,891.38,874.15,879.95,59070000,879.95 +1980-01-23,866.21,883.02,859.39,877.56,50730000,877.56 +1980-01-22,872.78,879.95,861.95,866.21,50620000,866.21 +1980-01-21,867.15,880.03,863.65,872.78,48040000,872.78 +1980-01-18,863.57,873.21,855.29,867.15,47150000,867.15 +1980-01-17,865.19,872.95,857.00,863.57,54170000,863.57 +1980-01-16,868.60,881.14,862.12,865.19,67700000,865.19 +1980-01-15,863.57,873.81,855.89,868.60,52320000,868.60 +1980-01-14,858.53,870.65,854.95,863.57,52930000,863.57 +1980-01-11,858.96,868.17,848.89,858.53,52890000,858.53 +1980-01-10,850.09,866.72,848.89,858.96,55980000,858.96 +1980-01-09,851.71,865.70,846.76,850.09,65260000,850.09 +1980-01-08,832.00,853.67,828.84,851.71,53390000,851.71 +1980-01-07,828.84,839.85,824.74,832.00,44500000,832.00 +1980-01-04,820.31,833.53,819.03,828.84,39130000,828.84 +1980-01-03,824.57,827.73,809.04,820.31,50480000,820.31 +1980-01-02,838.74,841.21,822.35,824.57,40610000,824.57 +1979-12-31,838.91,843.17,834.39,838.74,31530000,838.74 +1979-12-28,840.10,843.43,834.64,838.91,34430000,838.91 +1979-12-27,838.14,842.83,834.47,840.10,31410000,840.10 +1979-12-26,839.16,843.09,833.74,838.14,24960000,838.14 +1979-12-24,838.91,842.32,833.19,839.16,19150000,839.16 +1979-12-21,843.34,847.35,834.56,838.91,36160000,838.91 +1979-12-20,838.91,848.55,835.32,843.34,40380000,843.34 +1979-12-19,838.65,842.75,830.46,838.91,41780000,838.91 +1979-12-18,844.62,849.15,835.32,838.65,43310000,838.65 +1979-12-17,842.75,851.54,838.05,844.62,43830000,844.62 +1979-12-14,836.09,846.93,833.28,842.75,41800000,842.75 +1979-12-13,835.67,840.53,830.03,836.09,36690000,836.09 +1979-12-12,833.70,840.87,830.20,835.67,34630000,835.67 +1979-12-11,833.87,841.47,828.41,833.70,36160000,833.70 +1979-12-10,833.19,837.29,826.62,833.87,32270000,833.87 +1979-12-07,835.07,844.71,829.35,833.19,42370000,833.19 +1979-12-06,828.41,837.46,826.19,835.07,37510000,835.07 +1979-12-05,824.91,837.37,824.15,828.41,39300000,828.41 +1979-12-04,819.62,828.33,818.09,824.91,33510000,824.91 +1979-12-03,822.35,825.51,814.76,819.62,29030000,819.62 +1979-11-30,830.80,830.80,819.88,822.35,30480000,822.35 +1979-11-29,830.46,838.57,826.45,831.74,33550000,831.74 +1979-11-28,825.85,835.92,818.09,830.46,39690000,830.46 +1979-11-27,828.75,837.29,820.73,825.85,45140000,825.85 +1979-11-26,813.82,833.11,813.82,828.75,47940000,828.75 +1979-11-23,807.42,815.96,804.86,811.77,23300000,811.77 +1979-11-21,809.22,810.49,793.60,807.42,37020000,807.42 +1979-11-20,815.27,820.14,805.12,809.22,35010000,809.22 +1979-11-19,815.70,822.95,810.07,815.27,33090000,815.27 +1979-11-16,821.33,822.61,812.54,815.70,30060000,815.70 +1979-11-15,816.55,827.56,813.57,821.33,32380000,821.33 +1979-11-14,814.08,823.04,805.03,816.55,30970000,816.55 +1979-11-13,821.93,825.85,811.52,814.08,29240000,814.08 +1979-11-12,806.48,823.72,805.63,821.93,26640000,821.93 +1979-11-09,799.91,812.29,799.91,806.48,30060000,806.48 +1979-11-08,796.67,804.27,792.24,797.61,26270000,797.61 +1979-11-07,805.20,805.20,793.43,796.67,30830000,796.67 +1979-11-06,812.63,813.40,804.61,806.48,21960000,806.48 +1979-11-05,818.94,819.37,808.45,812.63,20470000,812.63 +1979-11-02,820.14,824.74,814.42,818.94,23670000,818.94 +1979-11-01,815.70,823.63,809.73,820.14,25880000,820.14 +1979-10-31,823.81,826.88,812.88,815.70,27780000,815.70 +1979-10-30,808.62,824.66,805.80,823.81,28890000,823.81 +1979-10-29,809.30,815.53,804.86,808.62,22720000,808.62 +1979-10-26,808.46,814.68,801.62,809.30,29660000,809.30 +1979-10-25,808.36,816.38,803.07,808.46,28440000,808.46 +1979-10-24,806.83,816.64,803.24,808.36,31480000,808.36 +1979-10-23,809.13,816.38,801.96,806.83,32910000,806.83 +1979-10-22,813.91,813.91,795.99,809.13,45240000,809.13 +1979-10-19,829.18,829.18,812.46,814.68,42430000,814.68 +1979-10-18,830.72,838.74,826.71,830.12,29590000,830.12 +1979-10-17,829.52,840.53,827.39,830.72,29650000,830.72 +1979-10-16,831.06,838.51,825.68,829.52,33770000,829.52 +1979-10-15,838.99,840.36,823.89,831.06,34850000,831.06 +1979-10-12,844.62,852.90,835.67,838.99,36390000,838.99 +1979-10-11,849.32,854.69,834.98,844.62,47530000,844.62 +1979-10-10,855.03,855.03,826.54,849.32,81620000,849.32 +1979-10-09,879.35,879.35,854.10,857.59,55560000,857.59 +1979-10-08,897.61,900.26,882.59,884.04,32610000,884.04 +1979-10-05,890.10,904.86,889.59,897.61,48250000,897.61 +1979-10-04,885.15,895.82,882.25,890.10,38800000,890.10 +1979-10-03,885.32,891.98,879.35,885.15,36470000,885.15 +1979-10-02,872.95,889.16,868.77,885.32,38310000,885.32 +1979-10-01,877.73,877.73,866.55,872.95,24980000,872.95 +1979-09-28,887.46,889.93,875.00,878.58,35950000,878.58 +1979-09-27,886.35,892.32,880.55,887.46,33110000,887.46 +1979-09-26,886.18,898.63,883.02,886.35,37700000,886.35 +1979-09-25,885.84,889.68,875.00,886.18,32410000,886.18 +1979-09-24,893.94,896.59,882.85,885.84,33790000,885.84 +1979-09-21,893.69,902.13,886.52,893.94,52380000,893.94 +1979-09-20,876.45,894.62,870.99,893.69,45100000,893.69 +1979-09-19,874.15,883.36,870.39,876.45,35370000,876.45 +1979-09-18,881.31,882.00,869.45,874.15,38750000,874.15 +1979-09-17,879.10,890.02,877.39,881.31,37610000,881.31 +1979-09-14,870.73,884.56,868.60,879.10,41980000,879.10 +1979-09-13,870.90,876.37,864.93,870.73,35240000,870.73 +1979-09-12,869.71,874.91,862.97,870.90,39350000,870.90 +1979-09-11,876.88,880.80,864.93,869.71,42530000,869.71 +1979-09-10,874.15,881.06,870.14,876.88,32980000,876.88 +1979-09-07,867.32,877.39,863.32,874.15,34360000,874.15 +1979-09-06,866.13,874.74,862.63,867.32,30330000,867.32 +1979-09-05,871.08,871.08,857.85,866.13,41650000,866.13 +1979-09-04,887.63,887.63,871.16,872.61,33350000,872.61 +1979-08-31,883.70,890.10,881.14,887.63,26370000,887.63 +1979-08-30,884.90,887.63,879.52,883.70,29300000,883.70 +1979-08-29,884.64,888.23,879.52,884.90,30810000,884.90 +1979-08-28,885.41,889.68,881.40,884.64,29430000,884.64 +1979-08-27,880.20,891.81,877.47,885.41,32050000,885.41 +1979-08-24,880.38,883.87,872.18,880.20,32730000,880.20 +1979-08-23,885.84,888.40,877.22,880.38,35710000,880.38 +1979-08-22,886.01,890.02,879.44,885.84,38450000,885.84 +1979-08-21,886.52,892.32,880.63,886.01,38860000,886.01 +1979-08-20,883.36,890.27,878.07,886.52,32300000,886.52 +1979-08-17,884.04,888.31,877.05,883.36,31630000,883.36 +1979-08-16,885.84,893.60,878.75,884.04,47000000,884.04 +1979-08-15,876.71,888.23,871.50,885.84,46130000,885.84 +1979-08-14,875.26,880.72,868.69,876.71,40910000,876.71 +1979-08-13,867.15,878.58,867.15,875.26,41980000,875.26 +1979-08-10,858.28,869.54,852.30,867.06,36740000,867.06 +1979-08-09,863.14,864.51,855.12,858.28,34630000,858.28 +1979-08-08,859.81,870.14,857.42,863.14,44970000,863.14 +1979-08-07,848.55,863.99,848.04,859.81,45410000,859.81 +1979-08-06,846.16,850.77,839.08,848.55,27190000,848.55 +1979-08-03,847.95,850.51,843.32,846.16,28160000,846.16 +1979-08-02,850.34,855.03,844.28,847.95,37720000,847.95 +1979-08-01,846.42,852.30,841.38,850.34,36570000,850.34 +1979-07-31,838.74,849.06,837.80,846.42,34360000,846.42 +1979-07-30,839.76,842.49,833.45,838.74,28640000,838.74 +1979-07-27,839.76,842.66,833.28,839.76,27760000,839.76 +1979-07-26,839.51,843.17,833.96,839.76,32270000,839.76 +1979-07-25,829.78,840.78,829.18,839.51,34890000,839.51 +1979-07-24,825.51,833.28,822.61,829.78,29690000,829.78 +1979-07-23,828.07,829.69,819.97,825.51,26860000,825.51 +1979-07-20,827.30,832.08,822.70,828.07,26360000,828.07 +1979-07-19,828.58,834.04,822.78,827.30,26780000,827.30 +1979-07-18,828.50,830.97,818.00,828.58,35950000,828.58 +1979-07-17,834.90,836.35,824.66,828.50,34270000,828.50 +1979-07-16,833.53,838.57,828.92,834.90,26620000,834.90 +1979-07-13,836.86,837.88,827.47,833.53,33080000,833.53 +1979-07-12,843.86,844.62,834.22,836.86,31780000,836.86 +1979-07-11,849.40,849.40,839.16,843.86,36650000,843.86 +1979-07-10,852.99,857.00,845.73,850.34,39730000,850.34 +1979-07-09,846.16,856.57,844.28,852.99,42460000,852.99 +1979-07-06,835.75,847.27,834.22,846.16,38570000,846.16 +1979-07-05,835.58,840.02,830.97,835.75,30290000,835.75 +1979-07-03,834.04,838.99,829.27,835.58,31670000,835.58 +1979-07-02,840.61,840.61,830.46,834.04,32060000,834.04 +1979-06-29,843.04,848.12,837.20,841.98,34690000,841.98 +1979-06-28,840.52,848.84,836.97,843.04,38470000,843.04 +1979-06-27,837.66,846.15,834.20,840.52,36720000,840.52 +1979-06-26,844.25,849.19,834.46,837.66,34680000,837.66 +1979-06-25,849.10,850.83,839.66,844.25,31330000,844.25 +1979-06-22,843.64,853.06,842.34,849.10,36410000,849.10 +1979-06-21,839.83,847.80,837.40,843.64,36490000,843.64 +1979-06-20,839.40,843.56,836.11,839.83,33790000,839.83 +1979-06-19,839.40,843.99,835.85,839.40,30780000,839.40 +1979-06-18,843.30,845.20,836.28,839.40,30970000,839.40 +1979-06-15,842.34,847.11,837.40,843.30,40740000,843.30 +1979-06-14,842.17,844.07,834.29,842.34,37850000,842.34 +1979-06-13,845.29,850.31,840.00,842.17,40740000,842.17 +1979-06-12,837.58,851.61,837.14,845.29,45450000,845.29 +1979-06-11,835.15,839.66,830.73,837.58,28270000,837.58 +1979-06-08,836.97,839.48,831.25,835.15,31470000,835.15 +1979-06-07,835.50,842.78,833.16,836.97,43380000,836.97 +1979-06-06,831.34,841.04,829.26,835.50,39830000,835.50 +1979-06-05,821.90,834.46,820.25,831.34,35050000,831.34 +1979-06-04,821.21,825.36,817.83,821.90,24040000,821.90 +1979-06-01,822.33,826.14,817.74,821.21,24560000,821.21 +1979-05-31,822.16,827.01,815.14,822.33,30300000,822.33 +1979-05-30,832.47,832.47,820.17,822.16,29250000,822.16 +1979-05-29,836.28,837.75,829.26,832.55,27040000,832.55 +1979-05-25,837.66,840.26,831.86,836.28,27810000,836.28 +1979-05-24,837.40,842.69,832.38,837.66,25710000,837.66 +1979-05-23,845.37,851.26,836.19,837.40,30390000,837.40 +1979-05-22,842.43,848.41,837.23,845.37,30400000,845.37 +1979-05-21,841.91,847.80,836.28,842.43,25550000,842.43 +1979-05-18,842.95,848.32,837.40,841.91,26590000,841.91 +1979-05-17,828.48,845.03,827.44,842.95,30550000,842.95 +1979-05-16,825.88,832.47,821.03,828.48,28350000,828.48 +1979-05-15,825.02,832.12,821.55,825.88,26190000,825.88 +1979-05-14,830.56,834.03,823.02,825.02,22450000,825.02 +1979-05-11,828.92,834.11,824.76,830.56,24010000,830.56 +1979-05-10,838.62,839.92,827.53,828.92,25230000,828.92 +1979-05-09,834.89,842.26,829.09,838.62,27670000,838.62 +1979-05-08,833.42,838.10,823.63,834.89,32720000,834.89 +1979-05-07,846.07,846.07,832.03,833.42,30480000,833.42 +1979-05-04,857.59,859.23,845.89,847.54,30630000,847.54 +1979-05-03,855.51,863.22,852.74,857.59,30870000,857.59 +1979-05-02,855.51,860.27,849.97,855.51,30510000,855.51 +1979-05-01,854.90,861.40,850.83,855.51,31040000,855.51 +1979-04-30,856.64,859.49,847.28,854.90,26440000,854.90 +1979-04-27,860.79,860.79,852.39,856.64,29610000,856.64 +1979-04-26,867.46,869.02,858.71,860.97,32400000,860.97 +1979-04-25,866.86,872.31,863.22,867.46,31750000,867.46 +1979-04-24,860.10,873.35,858.54,866.86,35540000,866.86 +1979-04-23,856.98,863.31,852.39,860.10,25610000,860.10 +1979-04-20,855.25,861.57,848.93,856.98,28830000,856.98 +1979-04-19,860.27,865.73,852.91,855.25,31150000,855.25 +1979-04-18,857.93,865.90,856.38,860.27,29510000,860.27 +1979-04-17,860.45,865.64,853.95,857.93,29260000,857.93 +1979-04-16,868.42,868.42,856.81,860.45,28050000,860.45 +1979-04-12,871.71,875.78,865.21,870.50,26780000,870.50 +1979-04-11,878.72,884.62,868.68,871.71,32900000,871.71 +1979-04-10,873.70,882.54,869.80,878.72,31900000,878.72 +1979-04-09,875.69,879.07,869.46,873.70,27230000,873.70 +1979-04-06,877.60,884.01,871.88,875.69,34710000,875.69 +1979-04-05,869.80,880.02,866.68,877.60,34520000,877.60 +1979-04-04,868.33,878.38,867.12,869.80,41940000,869.80 +1979-04-03,855.25,870.67,854.21,868.33,33530000,868.33 +1979-04-02,859.93,859.93,849.27,855.25,28990000,855.25 +1979-03-30,866.77,870.58,858.11,862.18,29970000,862.18 +1979-03-29,866.25,873.53,860.19,866.77,28510000,866.77 +1979-03-28,871.36,876.99,863.83,866.25,39920000,866.25 +1979-03-27,854.82,872.49,852.91,871.36,32940000,871.36 +1979-03-26,859.75,860.01,851.52,854.82,23430000,854.82 +1979-03-23,861.31,867.20,855.08,859.75,33570000,859.75 +1979-03-22,857.76,867.46,856.03,861.31,34380000,861.31 +1979-03-21,850.31,859.23,844.68,857.76,31120000,857.76 +1979-03-20,857.59,858.89,847.45,850.31,27180000,850.31 +1979-03-19,852.82,864.95,852.65,857.59,34620000,857.59 +1979-03-16,847.02,856.72,843.21,852.82,31770000,852.82 +1979-03-15,845.37,853.17,841.39,847.02,29370000,847.02 +1979-03-14,846.93,852.56,841.74,845.37,24630000,845.37 +1979-03-13,844.68,855.60,840.78,846.93,31170000,846.93 +1979-03-12,842.86,846.33,833.85,844.68,25740000,844.68 +1979-03-09,844.85,851.44,840.00,842.86,33410000,842.86 +1979-03-08,834.29,846.41,831.69,844.85,32000000,844.85 +1979-03-07,826.58,841.04,825.28,834.29,28930000,834.29 +1979-03-06,827.36,831.34,821.55,826.58,24490000,826.58 +1979-03-05,818.00,832.55,818.00,827.36,25690000,827.36 +1979-03-02,815.84,820.69,811.50,815.75,23130000,815.75 +1979-03-01,808.82,818.17,807.26,815.84,23830000,815.84 +1979-02-28,807.00,811.76,802.23,808.82,25090000,808.82 +1979-02-27,821.12,821.12,803.53,807.00,31470000,807.00 +1979-02-26,823.28,826.40,818.35,821.12,22620000,821.12 +1979-02-23,828.57,828.83,819.99,823.28,22750000,823.28 +1979-02-22,834.55,834.98,825.10,828.57,26290000,828.57 +1979-02-21,834.55,841.56,830.91,834.55,26050000,834.55 +1979-02-20,827.01,836.19,824.15,834.55,22010000,834.55 +1979-02-16,829.09,831.69,823.54,827.01,21110000,827.01 +1979-02-15,829.78,831.25,822.68,829.09,22550000,829.09 +1979-02-14,830.21,836.88,825.71,829.78,27220000,829.78 +1979-02-13,826.14,836.19,826.14,830.21,28470000,830.21 +1979-02-12,822.23,827.62,816.61,824.84,20610000,824.84 +1979-02-09,818.87,826.49,817.05,822.23,24320000,822.23 +1979-02-08,816.01,823.02,812.89,818.87,23360000,818.87 +1979-02-07,822.85,823.46,810.81,816.01,28450000,816.01 +1979-02-06,823.98,828.48,819.21,822.85,23570000,822.85 +1979-02-05,830.65,830.65,819.13,823.98,26490000,823.98 +1979-02-02,840.87,843.38,832.47,834.63,25350000,834.63 +1979-02-01,839.22,843.99,832.55,840.87,27930000,840.87 +1979-01-31,851.78,853.52,835.67,839.22,30330000,839.22 +1979-01-30,855.77,861.83,848.75,851.78,26910000,851.78 +1979-01-29,859.75,862.96,851.61,855.77,24170000,855.77 +1979-01-26,854.64,865.04,853.26,859.75,34230000,859.75 +1979-01-25,846.41,858.11,843.90,854.64,31440000,854.64 +1979-01-24,846.85,856.81,840.61,846.41,31730000,846.41 +1979-01-23,838.53,851.35,835.67,846.85,30130000,846.85 +1979-01-22,837.49,841.74,829.95,838.53,24390000,838.53 +1979-01-19,839.14,846.67,833.94,837.49,26800000,837.49 +1979-01-18,834.20,843.73,829.35,839.14,27260000,839.14 +1979-01-17,835.59,839.05,825.80,834.20,25310000,834.20 +1979-01-16,848.06,848.06,833.25,835.59,30340000,835.59 +1979-01-15,836.28,851.00,831.69,848.67,27520000,848.67 +1979-01-12,830.04,843.38,830.04,836.28,37120000,836.28 +1979-01-11,824.93,829.44,817.31,828.05,24580000,828.05 +1979-01-10,831.43,833.68,821.47,824.93,24990000,824.93 +1979-01-09,828.14,836.80,825.80,831.43,27340000,831.43 +1979-01-08,830.73,832.12,821.38,828.14,21440000,828.14 +1979-01-05,826.14,837.23,823.89,830.73,28890000,830.73 +1979-01-04,817.39,832.55,815.92,826.14,33290000,826.14 +1979-01-03,811.42,822.68,811.42,817.39,29180000,817.39 +1979-01-02,805.01,813.06,798.51,811.42,18340000,811.42 +1978-12-29,805.96,812.20,800.50,805.01,30030000,805.01 +1978-12-28,808.56,813.06,802.75,805.96,25440000,805.96 +1978-12-27,815.32,815.32,804.57,808.56,23580000,808.56 +1978-12-26,808.47,819.13,804.66,816.01,21470000,816.01 +1978-12-22,795.05,811.16,795.05,808.47,23790000,808.47 +1978-12-21,793.66,801.63,790.11,794.79,28670000,794.79 +1978-12-20,789.85,797.90,785.69,793.66,26520000,793.66 +1978-12-19,787.51,795.30,782.92,789.85,25960000,789.85 +1978-12-18,794.87,794.87,781.01,787.51,32900000,787.51 +1978-12-15,812.54,813.76,801.80,805.35,23620000,805.35 +1978-12-14,809.86,814.97,804.40,812.54,20840000,812.54 +1978-12-13,814.97,819.21,806.48,809.86,22480000,809.86 +1978-12-12,817.65,821.90,811.50,814.97,22210000,814.97 +1978-12-11,811.85,821.29,808.73,817.65,21000000,817.65 +1978-12-08,816.09,819.56,807.95,811.85,18560000,811.85 +1978-12-07,821.90,826.49,812.98,816.09,21170000,816.09 +1978-12-06,820.51,829.87,815.23,821.90,29680000,821.90 +1978-12-05,806.83,821.81,805.01,820.51,25670000,820.51 +1978-12-04,811.50,814.80,802.23,806.83,22020000,806.83 +1978-12-01,801.98,815.06,801.98,811.50,26830000,811.50 +1978-11-30,790.11,800.94,786.64,799.03,19900000,799.03 +1978-11-29,801.89,801.89,788.63,790.11,21160000,790.11 +1978-11-28,813.84,817.91,802.67,804.14,22740000,804.14 +1978-11-27,810.12,817.22,806.31,813.84,19790000,813.84 +1978-11-24,807.00,812.98,803.36,810.12,14590000,810.12 +1978-11-22,804.05,810.98,799.46,807.00,20010000,807.00 +1978-11-21,805.61,810.55,799.98,804.05,20750000,804.05 +1978-11-20,797.73,811.24,797.47,805.61,24440000,805.61 +1978-11-17,794.18,804.49,792.19,797.73,25170000,797.73 +1978-11-16,785.60,797.38,785.26,794.18,21340000,794.18 +1978-11-15,785.26,798.08,782.66,785.60,26280000,785.60 +1978-11-14,792.01,795.22,779.11,785.26,30610000,785.26 +1978-11-13,806.83,806.83,790.71,792.01,20960000,792.01 +1978-11-10,803.97,812.02,799.55,807.09,16750000,807.09 +1978-11-09,807.61,815.75,798.86,803.97,23320000,803.97 +1978-11-08,800.07,809.60,790.97,807.61,23560000,807.61 +1978-11-07,808.13,808.13,793.92,800.07,25320000,800.07 +1978-11-06,823.11,825.88,812.63,814.88,20450000,814.88 +1978-11-03,816.96,829.00,809.51,823.11,25990000,823.11 +1978-11-02,827.79,831.34,811.07,816.96,41030000,816.96 +1978-11-01,805.53,831.69,805.53,827.79,50450000,827.79 +1978-10-31,811.85,818.26,789.67,792.45,42720000,792.45 +1978-10-30,806.05,814.36,782.05,811.85,59480000,811.85 +1978-10-27,821.12,825.54,804.49,806.05,40360000,806.05 +1978-10-26,830.21,835.41,816.61,821.12,31990000,821.12 +1978-10-25,832.55,842.86,822.85,830.21,31380000,830.21 +1978-10-24,839.66,846.93,830.35,832.55,28880000,832.55 +1978-10-23,838.01,845.89,825.80,839.66,36090000,839.66 +1978-10-20,846.41,847.37,830.47,838.01,43670000,838.01 +1978-10-19,859.67,862.87,844.42,846.41,31810000,846.41 +1978-10-18,866.34,871.19,853.60,859.67,32940000,859.67 +1978-10-17,872.49,872.49,858.11,866.34,37870000,866.34 +1978-10-16,894.84,894.84,874.39,875.17,24600000,875.17 +1978-10-13,896.74,902.20,891.55,897.09,21920000,897.09 +1978-10-12,901.42,909.39,892.84,896.74,30170000,896.74 +1978-10-11,891.63,902.29,885.14,901.42,21740000,901.42 +1978-10-10,893.19,899.26,887.56,891.63,25470000,891.63 +1978-10-09,880.02,894.92,877.86,893.19,19720000,893.19 +1978-10-06,876.47,885.14,873.79,880.02,27380000,880.02 +1978-10-05,873.96,883.32,869.63,876.47,27820000,876.47 +1978-10-04,867.90,875.52,860.10,873.96,25090000,873.96 +1978-10-03,871.36,876.30,865.56,867.90,22540000,867.90 +1978-10-02,865.82,874.48,863.13,871.36,18700000,871.36 +1978-09-29,861.31,870.84,858.89,865.82,23610000,865.82 +1978-09-28,860.19,864.43,854.90,861.31,24390000,861.31 +1978-09-27,868.16,875.43,858.45,860.19,28370000,860.19 +1978-09-26,862.35,872.66,859.67,868.16,26330000,868.16 +1978-09-25,862.44,865.47,856.20,862.35,20970000,862.35 +1978-09-22,861.14,868.16,855.42,862.44,27960000,862.44 +1978-09-21,857.16,865.38,850.92,861.14,33640000,861.14 +1978-09-20,861.57,870.50,853.95,857.16,35080000,857.16 +1978-09-19,870.15,873.87,859.06,861.57,31660000,861.57 +1978-09-18,878.55,884.88,866.86,870.15,35860000,870.15 +1978-09-15,886.17,886.17,874.05,878.55,37290000,878.55 +1978-09-14,899.60,900.21,885.48,887.04,37400000,887.04 +1978-09-13,906.44,913.29,896.83,899.60,43340000,899.60 +1978-09-12,907.74,910.26,899.43,906.44,34400000,906.44 +1978-09-11,907.74,917.24,904.80,907.74,39670000,907.74 +1978-09-08,895.62,909.91,895.62,907.74,42170000,907.74 +1978-09-07,895.79,903.15,889.55,893.71,40310000,893.71 +1978-09-06,887.91,902.03,887.91,895.79,42600000,895.79 +1978-09-05,879.33,889.73,876.91,886.61,32170000,886.61 +1978-09-01,876.82,884.88,871.36,879.33,35070000,879.33 +1978-08-31,880.72,883.66,871.36,876.82,33850000,876.82 +1978-08-30,880.20,888.17,873.61,880.72,37750000,880.72 +1978-08-29,884.88,887.13,875.95,880.20,33780000,880.20 +1978-08-28,895.53,895.70,882.62,884.88,31760000,884.88 +1978-08-25,897.35,902.55,890.59,895.53,36190000,895.53 +1978-08-24,897.00,904.80,890.94,897.35,38500000,897.35 +1978-08-23,892.41,904.28,890.94,897.00,39630000,897.00 +1978-08-22,888.95,896.05,881.15,892.41,29620000,892.41 +1978-08-21,896.83,900.38,884.88,888.95,29440000,888.95 +1978-08-18,900.12,909.22,892.93,896.83,34650000,896.83 +1978-08-17,894.66,911.21,894.66,900.12,45270000,900.12 +1978-08-16,887.13,898.30,884.88,894.58,36120000,894.58 +1978-08-15,888.17,891.37,879.16,887.13,29760000,887.13 +1978-08-14,890.85,899.17,884.27,888.17,32320000,888.17 +1978-08-11,885.48,895.70,880.20,890.85,33550000,890.85 +1978-08-10,891.63,898.39,880.20,885.48,39760000,885.48 +1978-08-09,889.21,903.67,886.61,891.63,48800000,891.63 +1978-08-08,885.05,891.55,877.51,889.21,34290000,889.21 +1978-08-07,888.43,896.22,881.41,885.05,33350000,885.05 +1978-08-04,886.87,895.79,879.33,888.43,37910000,888.43 +1978-08-03,883.49,905.15,881.84,886.87,66370000,886.87 +1978-08-02,860.71,884.88,857.50,883.49,47470000,883.49 +1978-08-01,862.27,868.16,855.34,860.71,34810000,860.71 +1978-07-31,856.29,866.34,852.56,862.27,33990000,862.27 +1978-07-28,850.57,860.27,844.77,856.29,33390000,856.29 +1978-07-27,847.19,857.16,843.04,850.57,33970000,850.57 +1978-07-26,839.57,852.47,839.05,847.19,36830000,847.19 +1978-07-25,831.60,841.65,827.18,839.57,25400000,839.57 +1978-07-24,833.42,835.07,823.46,831.60,23280000,831.60 +1978-07-21,838.62,842.00,828.83,833.42,26060000,833.42 +1978-07-20,840.70,849.45,835.24,838.62,33350000,838.62 +1978-07-19,829.00,842.52,828.05,840.70,30850000,840.70 +1978-07-18,839.05,840.00,826.75,829.00,22860000,829.00 +1978-07-17,839.83,848.58,835.59,839.05,29180000,839.05 +1978-07-14,824.76,841.22,823.02,839.83,28370000,839.83 +1978-07-13,824.93,827.88,818.09,824.76,23620000,824.76 +1978-07-12,821.29,829.18,819.39,824.93,26640000,824.93 +1978-07-11,816.79,826.32,814.62,821.29,27470000,821.29 +1978-07-10,812.46,819.56,808.13,816.79,22470000,816.79 +1978-07-07,807.17,816.18,805.79,812.46,23480000,812.46 +1978-07-06,805.79,810.72,800.94,807.17,24990000,807.17 +1978-07-05,812.62,812.62,802.15,805.79,23730000,805.79 +1978-07-03,818.95,818.95,809.71,812.89,11560000,812.89 +1978-06-30,821.64,823.20,815.06,818.95,18100000,818.95 +1978-06-29,819.91,827.88,816.79,821.64,21660000,821.64 +1978-06-28,817.31,824.24,811.59,819.91,23260000,819.91 +1978-06-27,812.28,820.95,807.95,817.31,29280000,817.31 +1978-06-26,823.02,824.15,810.03,812.28,29250000,812.28 +1978-06-23,827.70,832.55,821.12,823.02,28530000,823.02 +1978-06-22,824.93,831.77,822.16,827.70,27160000,827.70 +1978-06-21,830.04,830.82,820.34,824.93,29100000,824.93 +1978-06-20,838.62,840.44,828.40,830.04,27920000,830.04 +1978-06-19,836.97,841.04,829.87,838.62,25500000,838.62 +1978-06-16,844.25,846.85,834.98,836.97,27690000,836.97 +1978-06-15,854.21,854.21,842.17,844.25,29280000,844.25 +1978-06-14,856.98,865.82,850.57,854.56,37290000,854.56 +1978-06-13,856.72,859.75,848.15,856.98,30760000,856.98 +1978-06-12,859.23,866.94,853.34,856.72,24440000,856.72 +1978-06-09,862.09,867.20,854.30,859.23,32470000,859.23 +1978-06-08,861.92,871.88,856.46,862.09,39380000,862.09 +1978-06-07,866.51,868.94,855.51,861.92,33060000,861.92 +1978-06-06,863.83,879.33,863.22,866.51,51970000,866.51 +1978-06-05,848.41,865.47,848.41,863.83,39580000,863.83 +1978-06-02,840.70,849.79,838.62,847.54,31860000,847.54 +1978-06-01,840.61,845.81,835.24,840.70,28750000,840.70 +1978-05-31,834.20,846.85,832.99,840.61,29070000,840.61 +1978-05-30,831.69,837.32,826.40,834.20,21040000,834.20 +1978-05-26,835.41,836.37,827.79,831.69,21410000,831.69 +1978-05-25,837.92,843.04,830.99,835.41,28410000,835.41 +1978-05-24,842.86,842.86,829.87,837.92,31450000,837.92 +1978-05-23,855.42,856.12,842.17,845.29,33230000,845.29 +1978-05-22,846.85,857.76,842.34,855.42,28680000,855.42 +1978-05-19,850.92,855.16,840.87,846.85,34360000,846.85 +1978-05-18,858.37,863.57,848.67,850.92,42270000,850.92 +1978-05-17,854.30,865.64,847.89,858.37,45490000,858.37 +1978-05-16,848.15,861.05,848.15,854.30,48170000,854.30 +1978-05-15,840.70,848.84,834.72,846.76,33890000,846.76 +1978-05-12,834.20,847.54,834.11,840.70,46600000,840.70 +1978-05-11,822.16,835.33,821.12,834.20,36630000,834.20 +1978-05-10,822.07,829.61,817.22,822.16,33330000,822.16 +1978-05-09,824.58,829.44,817.65,822.07,30860000,822.07 +1978-05-08,829.09,837.14,822.77,824.58,34680000,824.58 +1978-05-05,824.41,837.32,820.86,829.09,42680000,829.09 +1978-05-04,828.83,829.09,813.84,824.41,37520000,824.41 +1978-05-03,840.18,841.82,826.58,828.83,37560000,828.83 +1978-05-02,844.33,847.54,833.42,840.18,41400000,840.18 +1978-05-01,837.32,849.45,832.81,844.33,37020000,844.33 +1978-04-28,826.92,838.79,822.16,837.32,32850000,837.32 +1978-04-27,836.37,836.37,822.77,826.92,35470000,826.92 +1978-04-26,833.59,846.15,828.48,836.97,44430000,836.97 +1978-04-25,828.83,845.81,828.83,833.59,55800000,833.59 +1978-04-24,812.80,827.36,810.38,826.06,34510000,826.06 +1978-04-21,814.54,818.95,807.17,812.80,31540000,812.80 +1978-04-20,810.38,825.10,810.38,814.54,43230000,814.54 +1978-04-19,803.27,812.72,797.56,808.04,35060000,808.04 +1978-04-18,810.12,814.97,798.15,803.27,38950000,803.27 +1978-04-17,803.45,824.24,803.45,810.12,63510000,810.12 +1978-04-14,780.41,797.73,780.41,795.13,52280000,795.13 +1978-04-13,766.29,777.29,764.47,775.21,31580000,775.21 +1978-04-12,770.18,772.96,764.30,766.29,26210000,766.29 +1978-04-11,773.65,775.38,766.20,770.18,24300000,770.18 +1978-04-10,769.58,776.16,766.11,773.65,25740000,773.65 +1978-04-07,763.95,772.00,760.83,769.58,25160000,769.58 +1978-04-06,763.08,768.10,759.62,763.95,27360000,763.95 +1978-04-05,755.37,764.47,753.21,763.08,27260000,763.08 +1978-04-04,751.04,757.19,748.79,755.37,20130000,755.37 +1978-04-03,756.67,756.67,747.05,751.04,20230000,751.04 +1978-03-31,759.62,761.78,753.12,757.36,20130000,757.36 +1978-03-30,761.78,764.03,756.15,759.62,20460000,759.62 +1978-03-29,758.84,765.42,755.80,761.78,25450000,761.78 +1978-03-28,753.21,760.22,749.91,758.84,21600000,758.84 +1978-03-27,756.50,758.14,750.52,753.21,18870000,753.21 +1978-03-23,757.54,760.91,752.69,756.50,21290000,756.50 +1978-03-22,762.82,764.38,754.50,757.54,21950000,757.54 +1978-03-21,773.82,774.69,760.91,762.82,24410000,762.82 +1978-03-20,768.88,777.81,768.88,773.82,28360000,773.82 +1978-03-17,762.82,770.79,760.31,768.71,28470000,768.71 +1978-03-16,758.58,764.03,754.42,762.82,25400000,762.82 +1978-03-15,762.56,763.60,754.24,758.58,23340000,758.58 +1978-03-14,759.96,764.99,752.86,762.56,24300000,762.56 +1978-03-13,758.58,766.63,756.41,759.96,24070000,759.96 +1978-03-10,750.09,760.91,750.09,758.58,27090000,758.58 +1978-03-09,750.87,755.46,746.45,750.00,21820000,750.00 +1978-03-08,746.79,752.86,743.76,750.87,22030000,750.87 +1978-03-07,742.72,748.70,739.78,746.79,19900000,746.79 +1978-03-06,746.97,746.97,740.12,742.72,17230000,742.72 +1978-03-03,746.45,751.30,742.72,747.31,20120000,747.31 +1978-03-02,743.33,749.13,739.78,746.45,20280000,746.45 +1978-03-01,742.12,747.92,736.75,743.33,21010000,743.33 +1978-02-28,748.35,748.61,739.17,742.12,19750000,742.12 +1978-02-27,756.24,761.26,746.62,748.35,19990000,748.35 +1978-02-24,750.95,760.40,750.78,756.24,22510000,756.24 +1978-02-23,749.05,752.51,742.98,750.95,18720000,750.95 +1978-02-22,749.31,753.55,746.71,749.05,18450000,749.05 +1978-02-21,752.69,753.90,745.24,749.31,21890000,749.31 +1978-02-17,753.29,759.96,748.18,752.69,18500000,752.69 +1978-02-16,760.14,760.14,749.65,753.29,21570000,753.29 +1978-02-15,765.16,767.07,758.32,761.69,20170000,761.69 +1978-02-14,773.91,773.91,762.65,765.16,20470000,765.16 +1978-02-13,775.99,777.37,770.44,774.43,16810000,774.43 +1978-02-10,777.81,781.01,772.61,775.99,19480000,775.99 +1978-02-09,782.66,783.00,774.43,777.81,17940000,777.81 +1978-02-08,778.85,787.42,776.68,782.66,21300000,782.66 +1978-02-07,768.62,780.23,768.62,778.85,14730000,778.85 +1978-02-06,770.96,772.96,764.21,768.62,11630000,768.62 +1978-02-03,775.38,776.59,766.98,770.96,19400000,770.96 +1978-02-02,774.34,781.88,770.88,775.38,23050000,775.38 +1978-02-01,769.92,777.89,764.81,774.34,22240000,774.34 +1978-01-31,772.44,778.59,762.91,769.92,19870000,769.92 +1978-01-30,764.12,774.95,761.09,772.44,17400000,772.44 +1978-01-27,763.34,768.54,759.44,764.12,17600000,764.12 +1978-01-26,772.44,775.81,761.00,763.34,19600000,763.34 +1978-01-25,771.57,777.72,768.02,772.44,18690000,772.44 +1978-01-24,770.70,776.42,765.68,771.57,18690000,771.57 +1978-01-23,776.94,777.98,766.55,770.70,19380000,770.70 +1978-01-20,778.67,780.15,772.52,776.94,7580000,776.94 +1978-01-19,786.30,790.02,777.03,778.67,21500000,778.67 +1978-01-18,779.02,788.20,776.25,786.30,21390000,786.30 +1978-01-17,771.74,781.26,770.62,779.02,19360000,779.02 +1978-01-16,775.73,777.81,767.41,771.74,18760000,771.74 +1978-01-13,778.15,784.04,773.65,775.73,18010000,775.73 +1978-01-12,775.90,785.00,772.78,778.15,22730000,778.15 +1978-01-11,781.53,785.95,771.74,775.90,22880000,775.90 +1978-01-10,784.56,790.89,777.55,781.53,25180000,781.53 +1978-01-09,790.89,790.89,778.41,784.56,27990000,784.56 +1978-01-06,803.36,803.36,788.29,793.49,26150000,793.49 +1978-01-05,813.58,822.77,802.58,804.92,23570000,804.92 +1978-01-04,817.48,817.48,804.92,813.58,24090000,813.58 +1978-01-03,830.47,830.47,815.06,817.74,17720000,817.74 +1977-12-30,830.39,835.15,825.80,831.17,23560000,831.17 +1977-12-29,829.70,834.37,823.63,830.39,23610000,830.39 +1977-12-28,829.70,833.33,822.77,829.70,19630000,829.70 +1977-12-27,829.87,833.77,823.46,829.70,16750000,829.70 +1977-12-23,822.16,832.64,822.16,829.87,20080000,829.87 +1977-12-22,815.32,825.62,815.32,821.81,28100000,821.81 +1977-12-21,806.22,817.83,805.35,813.93,24510000,813.93 +1977-12-20,807.95,810.46,800.42,806.22,23250000,806.22 +1977-12-19,815.32,817.31,806.13,807.95,21150000,807.95 +1977-12-16,817.91,821.55,812.37,815.32,20270000,815.32 +1977-12-15,822.68,825.10,815.23,817.91,21610000,817.91 +1977-12-14,815.23,823.63,811.42,822.68,22110000,822.68 +1977-12-13,815.75,818.61,809.94,815.23,19190000,815.23 +1977-12-12,815.23,820.51,811.76,815.75,18180000,815.75 +1977-12-09,806.91,819.04,806.65,815.23,19210000,815.23 +1977-12-08,807.43,815.49,804.14,806.91,20400000,806.91 +1977-12-07,806.91,812.54,802.06,807.43,21050000,807.43 +1977-12-06,819.91,819.91,804.23,806.91,23770000,806.91 +1977-12-05,823.98,826.84,818.78,821.03,19160000,821.03 +1977-12-02,825.71,830.56,819.30,823.98,21160000,823.98 +1977-12-01,829.70,832.81,823.02,825.71,24220000,825.71 +1977-11-30,827.27,831.77,821.29,829.70,22670000,829.70 +1977-11-29,839.48,839.48,824.24,827.27,22950000,827.27 +1977-11-28,844.42,846.67,836.71,839.57,21570000,839.57 +1977-11-25,843.30,847.63,838.70,844.42,17910000,844.42 +1977-11-23,842.52,847.11,836.28,843.30,29150000,843.30 +1977-11-22,836.11,846.15,834.63,842.52,28600000,842.52 +1977-11-21,835.76,840.18,829.18,836.11,20110000,836.11 +1977-11-18,831.86,840.26,829.18,835.76,23930000,835.76 +1977-11-17,837.06,838.88,827.53,831.86,25110000,831.86 +1977-11-16,842.78,846.24,834.03,837.06,24950000,837.06 +1977-11-15,838.36,846.85,831.86,842.78,27740000,842.78 +1977-11-14,845.89,849.01,834.46,838.36,23220000,838.36 +1977-11-11,837.66,850.05,837.66,845.89,35260000,845.89 +1977-11-10,818.43,836.11,814.10,832.55,31980000,832.55 +1977-11-09,816.27,821.29,810.20,818.43,21330000,818.43 +1977-11-08,816.44,821.29,810.81,816.27,19210000,816.27 +1977-11-07,809.94,820.17,808.56,816.44,21270000,816.44 +1977-11-04,802.67,814.02,802.41,809.94,21700000,809.94 +1977-11-03,800.85,805.87,794.53,802.67,18090000,802.67 +1977-11-02,806.91,809.51,797.73,800.85,20760000,800.85 +1977-11-01,816.01,816.01,804.40,806.91,17170000,806.91 +1977-10-31,822.68,824.93,813.93,818.35,17070000,818.35 +1977-10-28,818.61,826.49,814.54,822.68,18050000,822.68 +1977-10-27,813.41,825.71,809.42,818.61,21920000,818.61 +1977-10-26,801.54,816.01,795.56,813.41,24860000,813.41 +1977-10-25,802.32,805.35,792.79,801.54,23590000,801.54 +1977-10-24,808.30,810.90,800.85,802.32,19210000,802.32 +1977-10-21,814.80,815.75,804.57,808.30,20230000,808.30 +1977-10-20,812.20,819.65,804.66,814.80,20520000,814.80 +1977-10-19,820.51,823.20,809.08,812.20,22030000,812.20 +1977-10-18,820.34,826.84,815.84,820.51,20130000,820.51 +1977-10-17,821.64,824.93,813.76,820.34,17340000,820.34 +1977-10-14,818.17,826.66,814.02,821.64,20410000,821.64 +1977-10-13,823.98,824.67,811.42,818.17,23870000,818.17 +1977-10-12,830.65,830.65,818.60,823.98,22440000,823.98 +1977-10-11,840.26,841.39,830.47,832.29,17870000,832.29 +1977-10-10,840.35,844.33,834.46,840.26,10580000,840.26 +1977-10-07,842.08,845.98,836.11,840.35,16250000,840.35 +1977-10-06,837.32,845.20,834.98,842.08,18490000,842.08 +1977-10-05,842.00,843.73,832.38,837.32,18300000,837.32 +1977-10-04,851.96,855.57,839.57,842.00,20850000,842.00 +1977-10-03,847.11,853.60,842.08,851.96,19460000,851.96 +1977-09-30,840.09,848.84,839.14,847.11,21170000,847.11 +1977-09-29,834.72,843.56,832.55,840.09,21160000,840.09 +1977-09-28,835.85,841.56,830.30,834.72,17960000,834.72 +1977-09-27,841.65,845.55,831.95,835.85,19080000,835.85 +1977-09-26,839.14,844.16,831.51,841.65,18230000,841.65 +1977-09-23,839.41,844.77,834.81,839.14,18760000,839.14 +1977-09-22,840.96,844.25,833.16,839.41,16660000,839.41 +1977-09-21,851.78,856.29,838.79,840.96,22200000,840.96 +1977-09-20,851.52,855.16,846.67,851.78,19030000,851.78 +1977-09-19,856.81,857.42,848.23,851.52,16890000,851.52 +1977-09-16,860.79,865.38,853.52,856.81,18340000,856.81 +1977-09-15,858.71,866.16,855.51,860.79,18230000,860.79 +1977-09-14,854.56,861.49,850.49,858.71,17330000,858.71 +1977-09-13,854.38,859.58,848.49,854.56,14900000,854.56 +1977-09-12,857.04,860.71,847.71,854.38,18700000,854.38 +1977-09-09,865.47,865.47,853.17,857.04,18100000,857.04 +1977-09-08,876.39,879.76,866.25,869.16,18290000,869.16 +1977-09-07,873.27,878.98,869.80,876.39,18070000,876.39 +1977-09-06,872.31,877.43,866.77,873.27,16130000,873.27 +1977-09-02,864.86,873.79,862.44,872.31,15620000,872.31 +1977-09-01,861.49,869.80,858.71,864.86,18820000,864.86 +1977-08-31,858.89,862.87,850.92,861.49,19080000,861.49 +1977-08-30,864.09,867.55,855.51,858.89,18220000,858.89 +1977-08-29,855.77,866.77,855.77,864.09,15280000,864.09 +1977-08-26,854.12,857.76,844.42,855.42,18480000,855.42 +1977-08-25,862.87,863.13,851.18,854.12,19400000,854.12 +1977-08-24,865.56,869.63,858.80,862.87,18170000,862.87 +1977-08-23,867.29,875.61,862.70,865.56,20290000,865.56 +1977-08-22,863.48,871.45,856.55,867.29,17870000,867.29 +1977-08-19,864.26,870.06,856.64,863.48,20800000,863.48 +1977-08-18,864.69,873.96,860.36,864.26,21040000,864.26 +1977-08-17,869.28,872.75,859.58,864.69,20920000,864.69 +1977-08-16,874.13,877.17,865.99,869.28,19340000,869.28 +1977-08-15,871.10,877.60,864.09,874.13,15750000,874.13 +1977-08-12,877.43,879.24,866.86,871.10,16870000,871.10 +1977-08-11,887.04,891.46,876.04,877.43,21740000,877.43 +1977-08-10,879.42,887.65,875.69,887.04,18280000,887.04 +1977-08-09,879.42,884.53,873.70,879.42,19900000,879.42 +1977-08-08,888.17,888.17,877.43,879.42,15870000,879.42 +1977-08-05,888.17,894.84,884.36,888.69,19940000,888.69 +1977-08-04,886.00,891.89,880.11,888.17,18870000,888.17 +1977-08-03,887.39,888.95,877.25,886.00,21710000,886.00 +1977-08-02,891.81,893.97,884.27,887.39,17910000,887.39 +1977-08-01,890.07,900.03,886.17,891.81,17920000,891.81 +1977-07-29,889.99,892.24,878.81,890.07,20350000,890.07 +1977-07-28,888.43,893.71,879.76,889.99,26340000,889.99 +1977-07-27,907.31,907.31,884.27,888.43,26440000,888.43 +1977-07-26,914.24,914.33,902.98,908.18,21390000,908.18 +1977-07-25,923.42,923.94,911.73,914.24,20430000,914.24 +1977-07-22,921.78,927.84,916.75,923.42,23110000,923.42 +1977-07-21,920.48,926.20,914.67,921.78,26880000,921.78 +1977-07-20,919.27,927.75,915.45,920.48,29380000,920.48 +1977-07-19,910.60,921.86,908.26,919.27,31930000,919.27 +1977-07-18,905.95,915.02,901.25,910.60,29890000,910.60 +1977-07-15,902.99,910.62,899.68,905.95,29120000,905.95 +1977-07-13,903.41,906.80,896.29,902.99,23160000,902.99 +1977-07-12,905.53,906.26,898.58,903.41,22470000,903.41 +1977-07-11,907.99,910.96,900.27,905.53,19790000,905.53 +1977-07-08,909.51,914.94,904.17,907.99,23820000,907.99 +1977-07-07,907.73,913.42,903.49,909.51,21740000,909.51 +1977-07-06,913.59,915.37,904.94,907.73,21230000,907.73 +1977-07-05,912.65,919.01,907.90,913.59,16850000,913.59 +1977-07-01,916.30,918.25,907.48,912.65,18160000,912.65 +1977-06-30,913.33,920.88,909.09,916.30,19410000,916.30 +1977-06-29,915.62,917.73,906.63,913.33,19000000,913.33 +1977-06-28,924.10,926.98,914.01,915.62,22670000,915.62 +1977-06-27,929.70,931.73,920.12,924.10,19870000,924.10 +1977-06-24,925.37,933.77,924.02,929.70,27490000,929.70 +1977-06-23,926.31,930.46,922.45,925.37,24330000,925.37 +1977-06-22,928.60,930.89,921.13,926.31,25070000,926.31 +1977-06-21,924.27,934.36,923.51,928.60,29730000,928.60 +1977-06-20,920.45,926.98,916.89,924.27,22950000,924.27 +1977-06-17,920.45,924.78,915.79,920.45,21960000,920.45 +1977-06-16,917.57,924.53,910.53,920.45,24310000,920.45 +1977-06-15,922.57,925.03,914.43,917.57,22640000,917.57 +1977-06-14,912.40,924.27,912.14,922.57,25390000,922.57 +1977-06-13,910.79,917.15,906.21,912.40,20250000,912.40 +1977-06-10,909.85,915.20,904.77,910.79,20630000,910.79 +1977-06-09,912.99,914.69,904.34,909.85,19940000,909.85 +1977-06-08,908.67,918.25,906.21,912.99,22200000,912.99 +1977-06-07,903.04,910.79,896.79,908.67,21110000,908.67 +1977-06-06,912.23,916.13,901.03,903.04,18930000,903.04 +1977-06-03,903.15,915.88,901.03,912.23,20330000,912.23 +1977-06-02,906.55,912.91,899.42,903.15,18620000,903.15 +1977-06-01,898.66,909.35,896.46,906.55,18320000,906.55 +1977-05-31,898.83,904.77,892.55,898.66,17800000,898.66 +1977-05-27,908.07,909.60,896.29,898.83,15730000,898.83 +1977-05-26,903.24,910.45,899.17,908.07,18620000,908.07 +1977-05-25,912.40,916.72,901.46,903.24,20710000,903.24 +1977-05-24,917.06,917.83,906.55,912.40,20050000,912.40 +1977-05-23,928.17,928.17,915.03,917.06,18290000,917.06 +1977-05-20,936.48,937.16,925.71,930.46,18950000,930.46 +1977-05-19,941.91,945.13,933.34,936.48,21280000,936.48 +1977-05-18,936.48,947.34,935.46,941.91,27800000,941.91 +1977-05-17,932.50,939.45,925.20,936.48,22290000,936.48 +1977-05-16,928.34,938.43,926.73,932.50,21170000,932.50 +1977-05-13,925.54,932.58,923.17,928.34,19780000,928.34 +1977-05-12,926.90,930.04,917.74,925.54,21980000,925.54 +1977-05-11,936.14,937.84,923.85,926.90,18980000,926.90 +1977-05-10,933.09,941.40,930.55,936.14,21090000,936.14 +1977-05-09,936.74,938.52,928.77,933.09,15230000,933.09 +1977-05-06,943.27,943.27,932.24,936.74,19370000,936.74 +1977-05-05,940.72,949.46,934.53,943.44,23450000,943.44 +1977-05-04,934.19,944.96,929.44,940.72,23330000,940.72 +1977-05-03,931.22,939.70,929.27,934.19,21950000,934.19 +1977-05-02,926.90,934.02,923.00,931.22,17970000,931.22 +1977-04-29,927.32,931.99,922.32,926.90,18330000,926.90 +1977-04-28,923.76,931.14,919.78,927.32,18370000,927.32 +1977-04-27,915.62,928.34,913.08,923.76,20590000,923.76 +1977-04-26,914.60,922.74,910.36,915.62,20040000,915.62 +1977-04-25,924.02,924.02,910.45,914.60,20440000,914.60 +1977-04-22,935.13,935.13,923.59,927.07,20700000,927.07 +1977-04-21,942.59,949.37,933.43,935.80,22740000,935.80 +1977-04-20,938.77,948.69,933.43,942.59,25090000,942.59 +1977-04-19,942.76,944.28,934.79,938.77,19510000,938.77 +1977-04-18,947.76,951.32,939.28,942.76,17830000,942.76 +1977-04-15,947.00,953.10,941.74,947.76,20230000,947.76 +1977-04-14,943.69,956.07,943.69,947.00,30490000,947.00 +1977-04-13,937.16,942.76,927.49,938.18,21800000,938.18 +1977-04-12,924.69,940.98,924.69,937.16,23760000,937.16 +1977-04-11,918.88,928.85,916.47,924.10,17650000,924.10 +1977-04-07,914.73,921.21,910.57,918.88,17260000,918.88 +1977-04-06,916.14,922.12,910.07,914.73,16600000,914.73 +1977-04-05,915.56,920.88,909.74,916.14,18330000,916.14 +1977-04-04,927.36,929.36,913.48,915.56,16250000,915.56 +1977-04-01,919.55,930.27,919.55,927.36,17050000,927.36 +1977-03-31,921.21,926.86,914.15,919.13,16510000,919.13 +1977-03-30,932.01,935.84,917.64,921.21,18810000,921.21 +1977-03-29,926.11,936.67,925.78,932.01,17030000,932.01 +1977-03-28,928.86,931.27,920.71,926.11,16710000,926.11 +1977-03-25,935.67,937.50,925.12,928.86,16550000,928.86 +1977-03-24,942.32,944.48,931.93,935.67,19650000,935.67 +1977-03-23,950.96,954.37,940.16,942.32,19360000,942.32 +1977-03-22,953.54,955.95,944.65,950.96,18660000,950.96 +1977-03-21,961.02,961.44,949.47,953.54,18040000,953.54 +1977-03-18,964.84,967.50,956.95,961.02,19840000,961.02 +1977-03-17,968.00,970.08,958.78,964.84,20700000,964.84 +1977-03-16,965.01,971.58,961.44,968.00,22140000,968.00 +1977-03-15,958.36,970.33,958.19,965.01,23940000,965.01 +1977-03-14,947.72,960.19,944.73,958.36,19290000,958.36 +1977-03-11,946.73,952.96,942.90,947.72,18230000,947.72 +1977-03-10,942.90,948.89,938.00,946.73,18620000,946.73 +1977-03-09,950.96,950.96,938.66,942.90,19680000,942.90 +1977-03-08,955.12,960.36,949.47,952.04,19520000,952.04 +1977-03-07,953.46,958.61,949.22,955.12,17410000,955.12 +1977-03-04,948.64,956.28,947.39,953.46,18950000,953.46 +1977-03-03,942.07,951.88,940.16,948.64,17560000,948.64 +1977-03-02,944.73,949.97,938.50,942.07,18010000,942.07 +1977-03-01,936.42,948.47,936.25,944.73,19480000,944.73 +1977-02-28,933.43,938.50,928.61,936.42,16220000,936.42 +1977-02-25,932.60,938.75,926.20,933.43,17610000,933.43 +1977-02-24,938.25,940.24,927.69,932.60,19730000,932.60 +1977-02-23,939.91,943.82,934.59,938.25,18240000,938.25 +1977-02-22,940.24,946.06,933.84,939.91,17730000,939.91 +1977-02-18,943.73,944.73,935.09,940.24,18040000,940.24 +1977-02-17,948.30,950.71,939.58,943.73,19040000,943.73 +1977-02-16,944.32,957.28,941.24,948.30,23430000,948.30 +1977-02-15,938.33,948.39,937.08,944.32,21620000,944.32 +1977-02-14,931.52,939.91,926.11,938.33,19230000,938.33 +1977-02-11,937.92,940.91,926.03,931.52,20510000,931.52 +1977-02-10,933.84,943.57,930.60,937.92,22340000,937.92 +1977-02-09,942.24,944.98,928.27,933.84,23640000,933.84 +1977-02-08,946.31,952.79,938.66,942.24,24040000,942.24 +1977-02-07,947.89,954.70,941.82,946.31,20700000,946.31 +1977-02-04,947.14,955.70,941.90,947.89,23130000,947.89 +1977-02-03,952.79,954.95,941.99,947.14,23790000,947.14 +1977-02-02,958.36,963.76,949.97,952.79,25700000,952.79 +1977-02-01,954.37,962.02,950.05,958.36,23700000,958.36 +1977-01-31,957.53,958.03,944.90,954.37,22920000,954.37 +1977-01-28,954.54,961.85,949.38,957.53,22700000,957.53 +1977-01-27,958.53,963.93,950.47,954.54,24360000,954.54 +1977-01-26,965.92,968.33,953.13,958.53,27840000,958.53 +1977-01-25,963.60,973.57,959.36,965.92,26340000,965.92 +1977-01-24,962.43,968.83,956.87,963.60,22890000,963.60 +1977-01-21,959.03,967.42,953.87,962.43,23930000,962.43 +1977-01-20,968.67,973.82,954.70,959.03,26520000,959.03 +1977-01-19,962.43,972.16,959.69,968.67,27120000,968.67 +1977-01-18,967.25,970.08,958.53,962.43,24380000,962.43 +1977-01-17,972.16,972.99,961.10,967.25,21060000,967.25 +1977-01-14,976.15,979.22,967.00,972.16,24480000,972.16 +1977-01-13,968.25,979.55,966.51,976.15,24780000,976.15 +1977-01-12,976.23,976.23,962.52,968.25,22670000,968.25 +1977-01-11,986.87,991.11,972.16,976.65,24100000,976.65 +1977-01-10,983.13,990.69,979.31,986.87,20860000,986.87 +1977-01-07,979.89,987.03,975.40,983.13,21720000,983.13 +1977-01-06,978.06,989.03,974.07,979.89,23920000,979.89 +1977-01-05,987.87,990.69,974.07,978.06,25010000,978.06 +1977-01-04,999.75,1001.99,985.70,987.87,22740000,987.87 +1977-01-03,1004.65,1007.81,994.18,999.75,21280000,999.75 +1976-12-31,999.09,1006.32,997.34,1004.65,19170000,1004.65 +1976-12-30,994.93,1005.49,991.69,999.09,23700000,999.09 +1976-12-29,1000.08,1003.49,990.94,994.93,21910000,994.93 +1976-12-28,996.09,1006.82,992.77,1000.08,25790000,1000.08 +1976-12-27,985.62,997.92,982.71,996.09,20130000,996.09 +1976-12-23,984.54,991.61,978.47,985.62,24560000,985.62 +1976-12-22,978.39,993.35,977.73,984.54,26970000,984.54 +1976-12-21,972.41,981.05,966.17,978.39,24390000,978.39 +1976-12-20,979.06,981.96,969.00,972.41,20690000,972.41 +1976-12-17,981.30,990.53,976.23,979.06,23870000,979.06 +1976-12-16,983.79,988.20,973.90,981.30,23920000,981.30 +1976-12-15,980.63,989.11,974.82,983.79,28300000,983.79 +1976-12-14,974.24,983.13,966.92,980.63,25130000,980.63 +1976-12-13,973.15,980.14,967.50,974.24,24830000,974.24 +1976-12-10,970.74,978.31,965.59,973.15,25960000,973.15 +1976-12-09,963.26,976.31,962.35,970.74,31800000,970.74 +1976-12-08,960.69,966.01,953.54,963.26,24560000,963.26 +1976-12-07,961.77,968.67,957.03,960.69,26140000,960.69 +1976-12-06,950.55,966.59,948.72,961.77,24830000,961.77 +1976-12-03,946.64,956.28,943.07,950.55,22640000,950.55 +1976-12-02,949.38,956.62,944.07,946.64,23300000,946.64 +1976-12-01,947.22,954.12,942.24,949.38,21960000,949.38 +1976-11-30,950.05,952.13,941.41,947.22,17030000,947.22 +1976-11-29,956.62,959.86,947.14,950.05,18750000,950.05 +1976-11-26,950.96,959.28,947.97,956.62,15000000,956.62 +1976-11-24,949.30,956.20,941.74,950.96,20420000,950.96 +1976-11-23,955.87,958.94,945.98,949.30,19090000,949.30 +1976-11-22,948.80,959.94,945.81,955.87,20930000,955.87 +1976-11-19,950.13,957.86,942.49,948.80,24550000,948.80 +1976-11-18,938.08,953.46,935.51,950.13,24000000,950.13 +1976-11-17,935.34,943.90,930.44,938.08,19900000,938.08 +1976-11-16,935.42,946.73,931.77,935.34,21020000,935.34 +1976-11-15,927.69,937.25,921.63,935.42,16710000,935.42 +1976-11-12,931.43,933.93,920.21,927.69,15550000,927.69 +1976-11-11,924.04,932.85,917.97,931.43,13230000,931.43 +1976-11-10,930.77,936.92,917.89,924.04,18890000,924.04 +1976-11-09,933.68,939.33,924.45,930.77,19210000,930.77 +1976-11-08,941.41,941.41,928.94,933.68,16520000,933.68 +1976-11-05,960.44,962.93,940.24,943.07,20780000,943.07 +1976-11-04,956.53,967.75,951.30,960.44,21700000,960.44 +1976-11-03,960.44,960.44,944.73,956.53,19350000,956.53 +1976-11-01,964.93,971.99,957.61,966.09,18390000,966.09 +1976-10-29,952.63,966.26,947.47,964.93,17030000,964.93 +1976-10-28,956.12,962.35,948.72,952.63,16920000,952.63 +1976-10-27,948.14,959.77,944.56,956.12,15790000,956.12 +1976-10-26,938.00,951.63,937.17,948.14,15490000,948.14 +1976-10-25,938.75,942.65,932.51,938.00,13310000,938.00 +1976-10-22,944.90,946.56,932.26,938.75,17870000,938.75 +1976-10-21,954.87,960.77,942.74,944.90,17980000,944.90 +1976-10-20,949.97,958.86,944.40,954.87,15860000,954.87 +1976-10-19,946.56,953.87,938.66,949.97,16200000,949.97 +1976-10-18,937.00,950.13,936.59,946.56,15710000,946.56 +1976-10-15,935.92,942.74,928.27,937.00,16210000,937.00 +1976-10-14,947.56,947.56,931.02,935.92,18610000,935.92 +1976-10-13,932.35,950.38,932.01,948.30,21690000,948.30 +1976-10-12,940.82,946.31,928.27,932.35,18210000,932.35 +1976-10-11,948.88,948.88,934.26,940.82,14620000,940.82 +1976-10-08,965.09,969.25,949.72,952.38,16740000,952.38 +1976-10-07,959.69,968.50,951.71,965.09,19830000,965.09 +1976-10-06,966.76,968.33,949.88,959.69,20870000,959.69 +1976-10-05,977.98,979.97,960.69,966.76,19200000,966.76 +1976-10-04,979.89,983.21,971.83,977.98,12630000,977.98 +1976-10-01,990.19,995.60,974.40,979.89,20620000,979.89 +1976-09-30,991.19,995.84,983.79,990.19,14700000,990.19 +1976-09-29,994.93,1001.25,985.54,991.19,18090000,991.19 +1976-09-28,1013.13,1014.38,992.11,994.93,20440000,994.93 +1976-09-27,1009.31,1016.54,1004.40,1013.13,17430000,1013.13 +1976-09-24,1010.80,1014.13,1001.75,1009.31,17400000,1009.31 +1976-09-23,1014.05,1019.78,1005.32,1010.80,24210000,1010.80 +1976-09-22,1014.79,1026.26,1009.56,1014.05,32970000,1014.05 +1976-09-21,994.51,1016.54,993.60,1014.79,30300000,1014.79 +1976-09-20,995.10,1002.74,990.69,994.51,21730000,994.51 +1976-09-17,987.95,1000.50,986.62,995.10,28270000,995.10 +1976-09-16,979.31,989.44,974.82,987.95,19620000,987.95 +1976-09-15,978.64,983.96,971.24,979.31,17570000,979.31 +1976-09-14,983.29,983.96,973.57,978.64,15550000,978.64 +1976-09-13,988.36,994.02,980.30,983.29,16100000,983.29 +1976-09-10,986.87,991.86,981.05,988.36,16930000,988.36 +1976-09-09,992.94,993.43,983.05,986.87,16540000,986.87 +1976-09-08,996.59,1001.41,987.87,992.94,19750000,992.94 +1976-09-07,989.11,998.67,985.12,996.59,16310000,996.59 +1976-09-03,984.79,991.19,979.22,989.11,13280000,989.11 +1976-09-02,985.95,993.10,980.14,984.79,18920000,984.79 +1976-09-01,973.74,987.95,971.24,985.95,18640000,985.95 +1976-08-31,968.92,979.97,966.84,973.74,15480000,973.74 +1976-08-30,963.93,972.91,961.44,968.92,11140000,968.92 +1976-08-27,960.44,967.50,954.12,963.93,12120000,963.93 +1976-08-26,970.83,975.90,958.28,960.44,15270000,960.44 +1976-08-25,962.93,973.82,956.37,970.83,17400000,970.83 +1976-08-24,971.49,977.14,960.77,962.93,16740000,962.93 +1976-08-23,974.07,975.73,962.18,971.49,15450000,971.49 +1976-08-20,982.63,982.63,970.99,974.07,14920000,974.07 +1976-08-19,995.01,995.84,979.31,983.88,17230000,983.88 +1976-08-18,999.34,1004.74,992.60,995.01,17150000,995.01 +1976-08-17,992.77,1002.41,990.44,999.34,18500000,999.34 +1976-08-16,990.19,997.51,986.95,992.77,16210000,992.77 +1976-08-13,987.12,994.35,983.05,990.19,13930000,990.19 +1976-08-12,986.79,992.10,979.22,987.12,15560000,987.12 +1976-08-11,993.43,1000.00,984.46,986.79,18710000,986.79 +1976-08-10,983.46,995.68,981.13,993.43,16690000,993.43 +1976-08-09,986.00,987.53,979.06,983.46,11700000,983.46 +1976-08-06,986.68,989.90,978.70,986.00,13930000,986.00 +1976-08-05,992.28,995.76,983.28,986.68,15530000,986.68 +1976-08-04,990.33,998.73,986.42,992.28,20650000,992.28 +1976-08-03,982.26,992.96,978.70,990.33,18500000,990.33 +1976-08-02,984.64,988.97,977.43,982.26,13870000,982.26 +1976-07-30,979.29,987.95,974.71,984.64,14830000,984.64 +1976-07-29,981.33,985.74,974.20,979.29,13330000,979.29 +1976-07-28,984.13,984.89,974.71,981.33,16000000,981.33 +1976-07-27,991.51,994.99,981.92,984.13,15580000,984.13 +1976-07-26,990.91,997.20,985.91,991.51,13530000,991.51 +1976-07-23,991.08,997.71,985.43,990.91,15870000,990.91 +1976-07-22,989.44,995.99,982.97,991.08,15600000,991.08 +1976-07-21,988.29,996.77,984.20,989.44,18350000,989.44 +1976-07-20,990.83,994.43,983.06,988.29,18810000,988.29 +1976-07-19,993.21,999.10,986.08,990.83,18200000,990.83 +1976-07-16,997.30,997.30,985.43,993.21,20450000,993.21 +1976-07-15,1005.16,1006.79,993.21,997.46,20400000,997.46 +1976-07-14,1006.06,1012.20,997.95,1005.16,23840000,1005.16 +1976-07-13,1011.21,1017.93,1001.64,1006.06,27550000,1006.06 +1976-07-12,1003.11,1015.72,998.94,1011.21,23750000,1011.21 +1976-07-09,991.98,1007.53,989.60,1003.11,23500000,1003.11 +1976-07-08,991.16,998.85,987.15,991.98,21710000,991.98 +1976-07-07,991.81,994.43,982.56,991.16,18470000,991.16 +1976-07-06,999.84,1003.85,989.19,991.81,16130000,991.81 +1976-07-02,994.84,1003.85,991.00,999.84,16730000,999.84 +1976-07-01,1002.78,1009.00,990.26,994.84,21130000,994.84 +1976-06-30,1000.65,1011.79,995.99,1002.78,23830000,1002.78 +1976-06-29,997.38,1004.50,992.47,1000.65,19620000,1000.65 +1976-06-28,999.84,1006.30,993.45,997.38,17490000,997.38 +1976-06-25,1003.77,1008.35,995.58,999.84,17830000,999.84 +1976-06-24,996.56,1009.09,994.52,1003.77,19850000,1003.77 +1976-06-23,997.63,1002.05,987.23,996.56,17530000,996.56 +1976-06-22,1007.45,1011.87,995.74,997.63,21150000,997.63 +1976-06-21,1001.88,1010.97,997.54,1007.45,18930000,1007.45 +1976-06-18,1003.19,1012.93,996.97,1001.88,25720000,1001.88 +1976-06-17,988.62,1007.86,988.38,1003.19,27810000,1003.19 +1976-06-16,985.92,995.66,979.94,988.62,21620000,988.62 +1976-06-15,991.24,994.19,981.42,985.92,18440000,985.92 +1976-06-14,979.78,995.17,979.78,991.24,21250000,991.24 +1976-06-11,964.39,980.52,963.98,978.80,19470000,978.80 +1976-06-10,958.09,967.99,956.12,964.39,16100000,964.39 +1976-06-09,959.97,965.54,954.98,958.09,14560000,958.09 +1976-06-08,958.09,968.48,956.45,959.97,16660000,959.97 +1976-06-07,963.90,965.62,951.70,958.09,14510000,958.09 +1976-06-04,973.80,973.97,961.28,963.90,15960000,963.90 +1976-06-03,975.93,983.14,971.02,973.80,18900000,973.80 +1976-06-02,973.13,979.37,968.57,975.93,16120000,975.93 +1976-06-01,975.23,981.26,969.27,973.13,13880000,973.13 +1976-05-28,965.57,978.60,962.92,975.23,16860000,975.23 +1976-05-27,968.63,970.48,955.84,965.57,15310000,965.57 +1976-05-26,971.69,976.43,963.48,968.63,16750000,968.63 +1976-05-25,971.53,976.99,961.95,971.69,18770000,971.69 +1976-05-24,988.82,988.82,969.03,971.53,16560000,971.53 +1976-05-21,997.27,999.03,986.41,990.75,18730000,990.75 +1976-05-20,988.90,1001.05,985.76,997.27,22560000,997.27 +1976-05-19,989.45,996.14,983.99,988.90,18450000,988.90 +1976-05-18,987.64,994.80,984.41,989.45,17410000,989.45 +1976-05-17,992.60,993.47,982.05,987.64,14720000,987.64 +1976-05-14,1000.24,1000.24,988.74,992.60,16800000,992.60 +1976-05-13,1005.67,1008.66,997.48,1001.10,16730000,1001.10 +1976-05-12,1006.61,1012.52,999.53,1005.67,18510000,1005.67 +1976-05-11,1007.48,1015.82,1001.42,1006.61,23590000,1006.61 +1976-05-10,996.22,1010.39,994.10,1007.48,22760000,1007.48 +1976-05-07,989.53,999.53,984.97,996.22,17810000,996.22 +1976-05-06,986.46,995.43,981.50,989.53,16200000,989.53 +1976-05-05,993.70,997.09,982.53,986.46,14970000,986.46 +1976-05-04,990.32,998.03,982.21,993.70,17240000,993.70 +1976-05-03,995.83,995.83,981.74,990.32,15180000,990.32 +1976-04-30,1002.13,1007.01,993.31,996.85,14530000,996.85 +1976-04-29,1000.70,1010.39,996.62,1002.13,17740000,1002.13 +1976-04-28,995.51,1002.36,987.09,1000.70,15790000,1000.70 +1976-04-27,1002.76,1008.42,993.15,995.51,17760000,995.51 +1976-04-26,1000.71,1005.20,991.03,1002.76,15520000,1002.76 +1976-04-23,1007.71,1008.89,995.36,1000.71,17000000,1000.71 +1976-04-22,1011.02,1017.71,1003.70,1007.71,20220000,1007.71 +1976-04-21,1003.46,1016.85,1000.31,1011.02,26600000,1011.02 +1976-04-20,998.51,1008.19,998.51,1003.46,23500000,1003.46 +1976-04-19,980.48,991.18,979.16,988.11,16500000,988.11 +1976-04-15,974.65,984.81,969.30,980.48,15100000,980.48 +1976-04-14,984.26,990.24,972.76,974.65,18440000,974.65 +1976-04-13,971.27,985.99,969.54,984.26,15990000,984.26 +1976-04-12,968.28,978.90,963.00,971.27,16030000,971.27 +1976-04-09,977.09,981.58,964.34,968.28,19050000,968.28 +1976-04-08,986.22,987.80,968.99,977.09,20860000,977.09 +1976-04-07,1001.65,1004.80,983.08,986.22,20190000,986.22 +1976-04-06,1004.09,1015.35,998.90,1001.65,24170000,1001.65 +1976-04-05,992.99,1008.74,992.99,1004.09,21940000,1004.09 +1976-04-02,994.10,996.54,982.13,991.58,17420000,991.58 +1976-04-01,999.45,1003.31,987.72,994.10,17910000,994.10 +1976-03-31,992.13,1000.79,988.35,999.45,17520000,999.45 +1976-03-30,997.40,1000.31,985.04,992.13,17930000,992.13 +1976-03-29,1003.46,1007.40,993.78,997.40,16100000,997.40 +1976-03-26,1002.13,1009.68,997.64,1003.46,18510000,1003.46 +1976-03-25,1009.21,1014.72,997.72,1002.13,22510000,1002.13 +1976-03-24,1001.65,1018.03,1001.65,1009.21,32610000,1009.21 +1976-03-23,982.29,997.01,978.12,995.43,22450000,995.43 +1976-03-22,979.85,988.27,977.64,982.29,19410000,982.29 +1976-03-19,979.85,985.36,970.80,979.85,18090000,979.85 +1976-03-18,985.99,988.98,971.35,979.85,20330000,979.85 +1976-03-17,983.47,995.59,981.03,985.99,26190000,985.99 +1976-03-16,974.50,986.62,970.09,983.47,22780000,983.47 +1976-03-15,986.85,986.85,969.69,974.50,19570000,974.50 +1976-03-12,1003.31,1006.61,984.49,987.64,26020000,987.64 +1976-03-11,995.28,1008.42,992.76,1003.31,27300000,1003.31 +1976-03-10,993.70,1003.15,987.17,995.28,24900000,995.28 +1976-03-09,988.74,1005.67,987.88,993.70,31770000,993.70 +1976-03-08,973.08,991.73,973.08,988.74,25060000,988.74 +1976-03-05,970.64,981.03,965.37,972.92,23030000,972.92 +1976-03-04,978.83,984.26,967.18,970.64,24410000,970.64 +1976-03-03,985.12,988.99,973.00,978.83,25450000,978.83 +1976-03-02,975.36,991.11,974.26,985.12,25590000,985.12 +1976-03-01,972.61,981.19,964.18,975.36,22070000,975.36 +1976-02-27,978.83,980.71,962.30,972.61,26940000,972.61 +1976-02-26,994.57,1000.94,975.99,978.83,34320000,978.83 +1976-02-25,993.55,1002.83,983.39,994.57,34680000,994.57 +1976-02-24,985.28,1001.65,983.00,993.55,34380000,993.55 +1976-02-23,987.80,993.39,977.25,985.28,31460000,985.28 +1976-02-20,977.80,996.93,977.80,987.80,44510000,987.80 +1976-02-19,961.74,979.85,961.74,975.76,39210000,975.76 +1976-02-18,950.57,965.68,946.16,960.09,29900000,960.09 +1976-02-17,958.36,963.48,946.63,950.57,25460000,950.57 +1976-02-13,966.78,968.99,953.56,958.36,23870000,958.36 +1976-02-12,971.90,978.12,963.00,966.78,28610000,966.78 +1976-02-11,968.75,980.24,965.76,971.90,32300000,971.90 +1976-02-10,957.18,971.74,953.09,968.75,27660000,968.75 +1976-02-09,954.90,967.18,948.44,957.18,25340000,957.18 +1976-02-06,964.81,965.60,948.84,954.90,27360000,954.90 +1976-02-05,976.62,980.71,961.98,964.81,33780000,964.81 +1976-02-04,972.61,981.66,966.94,976.62,38270000,976.62 +1976-02-03,971.35,979.69,960.80,972.61,34080000,972.61 +1976-02-02,975.28,976.54,962.06,971.35,24000000,971.35 +1976-01-30,968.75,985.99,966.07,975.28,38510000,975.28 +1976-01-29,951.35,970.80,948.13,968.75,29800000,968.75 +1976-01-28,957.81,963.08,942.38,951.35,27370000,951.35 +1976-01-27,961.51,973.16,950.80,957.81,32070000,957.81 +1976-01-26,953.95,969.22,953.87,961.51,34470000,961.51 +1976-01-23,943.48,958.38,940.57,953.95,33640000,953.95 +1976-01-22,946.24,949.62,933.96,943.48,27420000,943.48 +1976-01-21,949.86,954.97,934.35,946.24,34470000,946.24 +1976-01-20,943.72,954.03,935.77,949.86,36690000,949.86 +1976-01-19,929.63,946.08,923.80,943.72,29450000,943.72 +1976-01-16,924.51,935.22,917.98,929.63,25940000,929.63 +1976-01-15,929.63,940.26,921.21,924.51,38450000,924.51 +1976-01-14,912.94,932.62,908.22,929.63,30340000,929.63 +1976-01-13,922.39,930.26,909.40,912.94,34530000,912.94 +1976-01-12,911.13,925.93,905.38,922.39,30440000,922.39 +1976-01-09,907.98,916.88,903.73,911.13,26510000,911.13 +1976-01-08,898.69,916.64,893.89,907.98,29030000,907.98 +1976-01-07,890.82,908.69,886.41,898.69,33170000,898.69 +1976-01-06,878.70,894.99,878.70,890.82,31270000,890.82 +1976-01-05,858.71,879.80,858.63,877.83,21960000,877.83 +1976-01-02,852.41,860.44,848.63,858.71,10300000,858.71 +1975-12-31,852.41,859.65,848.71,852.41,16970000,852.41 +1975-12-30,856.66,860.75,847.13,852.41,16040000,852.41 +1975-12-29,859.81,866.11,853.59,856.66,17070000,856.66 +1975-12-26,851.94,860.91,850.20,859.81,10020000,859.81 +1975-12-24,845.01,854.93,845.01,851.94,11150000,851.94 +1975-12-23,838.63,847.84,833.36,843.75,17750000,843.75 +1975-12-22,844.38,847.29,835.33,838.63,15340000,838.63 +1975-12-19,852.09,854.30,841.39,844.38,17720000,844.38 +1975-12-18,846.27,857.13,843.12,852.09,18040000,852.09 +1975-12-17,844.30,852.17,840.37,846.27,16560000,846.27 +1975-12-16,836.59,849.73,833.91,844.30,18350000,844.30 +1975-12-15,832.81,841.23,828.72,836.59,13960000,836.59 +1975-12-12,832.73,836.74,825.53,832.81,13100000,832.81 +1975-12-11,833.99,840.13,828.87,832.73,15300000,832.73 +1975-12-10,824.15,835.72,820.92,833.99,15680000,833.99 +1975-12-09,821.63,827.53,814.47,824.15,16040000,824.15 +1975-12-08,818.80,826.43,812.81,821.63,14150000,821.63 +1975-12-05,829.11,833.60,816.99,818.80,14050000,818.80 +1975-12-04,825.49,833.67,818.17,829.11,16380000,829.11 +1975-12-03,836.67,836.67,822.10,825.49,21320000,825.49 +1975-12-02,856.34,856.66,841.70,843.20,17930000,843.20 +1975-12-01,860.67,865.95,853.04,856.34,16050000,856.34 +1975-11-28,858.55,865.24,854.06,860.67,12870000,860.67 +1975-11-26,855.40,863.90,851.07,858.55,18780000,858.55 +1975-11-25,845.64,859.10,845.56,855.40,17490000,855.40 +1975-11-24,840.76,849.10,833.83,845.64,13930000,845.64 +1975-11-21,843.51,848.39,834.62,840.76,14110000,840.76 +1975-11-20,848.24,853.35,838.87,843.51,16460000,843.51 +1975-11-19,855.24,857.53,842.25,848.24,16820000,848.24 +1975-11-18,856.66,865.79,851.78,855.24,20760000,855.24 +1975-11-17,853.67,862.56,847.61,856.66,17660000,856.66 +1975-11-14,851.23,857.92,845.32,853.67,16460000,853.67 +1975-11-13,852.25,863.11,848.47,851.23,25070000,851.23 +1975-11-12,838.55,855.64,838.40,852.25,23960000,852.25 +1975-11-11,835.48,843.28,831.63,838.55,14640000,838.55 +1975-11-10,835.80,840.99,824.62,835.48,14910000,835.48 +1975-11-07,840.92,843.83,830.29,835.80,15930000,835.80 +1975-11-06,836.27,845.40,827.93,840.92,18600000,840.92 +1975-11-05,830.13,843.91,829.50,836.27,17390000,836.27 +1975-11-04,825.72,834.07,821.08,830.13,11570000,830.13 +1975-11-03,836.04,836.82,822.26,825.72,11400000,825.72 +1975-10-31,839.42,842.49,829.97,836.04,12910000,836.04 +1975-10-30,838.63,847.29,832.97,839.42,15080000,839.42 +1975-10-29,850.83,850.83,834.86,838.63,16110000,838.63 +1975-10-28,838.48,853.67,837.53,851.46,17060000,851.46 +1975-10-27,840.52,845.17,831.31,838.48,13100000,838.48 +1975-10-24,855.16,857.76,837.22,840.52,18120000,840.52 +1975-10-23,849.57,859.57,844.46,855.16,17900000,855.16 +1975-10-22,846.82,855.09,840.37,849.57,16060000,849.57 +1975-10-21,842.25,855.71,841.23,846.82,20800000,846.82 +1975-10-20,832.18,844.14,828.24,842.25,13250000,842.25 +1975-10-17,837.85,841.23,824.46,832.18,15650000,832.18 +1975-10-16,837.22,851.46,833.60,837.85,18910000,837.85 +1975-10-15,835.25,843.91,828.01,837.22,14440000,837.22 +1975-10-14,837.77,852.41,830.13,835.25,19960000,835.25 +1975-10-13,823.91,838.95,818.48,837.77,12020000,837.77 +1975-10-10,824.54,832.57,817.14,823.91,14880000,823.91 +1975-10-09,823.91,834.93,817.30,824.54,17770000,824.54 +1975-10-08,816.51,829.35,809.82,823.91,17800000,823.91 +1975-10-07,819.66,821.79,806.12,816.51,13530000,816.51 +1975-10-06,813.21,826.83,811.32,819.66,15470000,819.66 +1975-10-03,794.71,816.12,794.71,813.21,16360000,813.21 +1975-10-02,784.16,799.28,781.72,794.55,14290000,794.55 +1975-10-01,793.88,799.35,780.54,784.16,14070000,784.16 +1975-09-30,804.44,804.44,789.66,793.88,12520000,793.88 +1975-09-29,818.60,820.56,803.43,805.23,10580000,805.23 +1975-09-26,820.24,827.28,811.33,818.60,12570000,818.60 +1975-09-25,826.19,828.85,812.89,820.24,12890000,820.24 +1975-09-24,820.24,836.83,820.24,826.19,16060000,826.19 +1975-09-23,820.40,824.31,807.96,819.85,12800000,819.85 +1975-09-22,829.79,835.65,817.58,820.40,14750000,820.40 +1975-09-19,816.72,834.72,816.72,829.79,20830000,829.79 +1975-09-18,799.05,817.19,797.64,814.61,14560000,814.61 +1975-09-17,795.13,804.52,792.01,799.05,12190000,799.05 +1975-09-16,803.19,809.76,792.79,795.13,13090000,795.13 +1975-09-15,809.23,811.25,799.05,803.19,8670000,803.19 +1975-09-12,812.66,823.69,806.63,809.23,12230000,809.23 +1975-09-11,817.66,820.32,808.12,812.66,11100000,812.66 +1975-09-10,825.33,825.33,809.53,817.66,14780000,817.66 +1975-09-09,840.11,849.03,826.58,827.75,15790000,827.75 +1975-09-08,835.97,843.95,830.18,840.11,11500000,840.11 +1975-09-05,838.31,843.63,830.26,835.97,11680000,835.97 +1975-09-04,832.29,843.55,827.21,838.31,12810000,838.31 +1975-09-03,823.69,834.64,815.94,832.29,12260000,832.29 +1975-09-02,835.34,840.19,821.26,823.69,11460000,823.69 +1975-08-29,829.47,844.02,828.69,835.34,15480000,835.34 +1975-08-28,809.92,831.59,809.92,829.47,14530000,829.47 +1975-08-27,803.11,809.61,797.09,807.20,11100000,807.20 +1975-08-26,812.34,815.55,799.98,803.11,11350000,803.11 +1975-08-25,804.76,817.43,803.19,812.34,11250000,812.34 +1975-08-22,791.69,806.95,789.97,804.76,13050000,804.76 +1975-08-21,793.26,801.31,785.75,791.69,16610000,791.69 +1975-08-20,805.46,805.46,789.58,793.26,18630000,793.26 +1975-08-19,822.75,824.23,806.56,808.51,14990000,808.51 +1975-08-18,825.64,833.31,819.38,822.75,10810000,822.75 +1975-08-15,817.04,830.73,814.06,825.64,10610000,825.64 +1975-08-14,820.56,824.08,812.73,817.04,12460000,817.04 +1975-08-13,828.54,831.20,817.43,820.56,12000000,820.56 +1975-08-12,823.76,838.63,823.29,828.54,14510000,828.54 +1975-08-11,817.74,825.33,809.92,823.76,12350000,823.76 +1975-08-08,815.79,826.19,812.66,817.74,11660000,817.74 +1975-08-07,813.67,824.86,809.84,815.79,12390000,815.79 +1975-08-06,810.15,820.40,804.60,813.67,16280000,813.67 +1975-08-05,818.05,824.94,806.95,810.15,15470000,810.15 +1975-08-04,826.50,826.81,813.52,818.05,12620000,818.05 +1975-08-01,831.51,833.78,822.20,826.50,13320000,826.50 +1975-07-31,831.66,843.09,828.77,831.51,14540000,831.51 +1975-07-30,824.86,837.69,819.15,831.66,16150000,831.66 +1975-07-29,827.83,840.74,820.32,824.86,19000000,824.86 +1975-07-28,834.09,836.91,821.96,827.83,14850000,827.83 +1975-07-25,840.27,846.92,829.40,834.09,15110000,834.09 +1975-07-24,836.67,847.78,829.24,840.27,20550000,840.27 +1975-07-23,846.76,853.41,834.64,836.67,20150000,836.67 +1975-07-22,854.74,854.97,838.70,846.76,20660000,846.76 +1975-07-21,862.41,867.88,852.00,854.74,16690000,854.74 +1975-07-18,864.28,867.02,854.27,862.41,16870000,862.41 +1975-07-17,872.11,877.35,858.73,864.28,21420000,864.28 +1975-07-16,881.81,888.53,868.59,872.11,25250000,872.11 +1975-07-15,875.86,888.85,874.14,881.81,28340000,881.81 +1975-07-14,871.09,880.71,865.22,875.86,21900000,875.86 +1975-07-11,871.87,881.49,862.80,871.09,22210000,871.09 +1975-07-10,871.87,884.46,868.19,871.87,28880000,871.87 +1975-07-09,858.65,875.00,858.65,871.87,26350000,871.87 +1975-07-08,861.08,863.97,850.52,857.79,18990000,857.79 +1975-07-07,871.79,873.36,859.04,861.08,15850000,861.08 +1975-07-03,870.38,877.42,863.50,871.79,19000000,871.79 +1975-07-02,876.25,876.25,861.62,870.38,18530000,870.38 +1975-07-01,878.99,884.86,869.60,877.42,20390000,877.42 +1975-06-30,873.12,884.62,867.96,878.99,19430000,878.99 +1975-06-27,874.14,880.48,867.18,873.12,18820000,873.12 +1975-06-26,872.73,883.37,866.55,874.14,24560000,874.14 +1975-06-25,869.06,878.05,861.94,872.73,21610000,872.73 +1975-06-24,864.83,878.44,861.00,869.06,26620000,869.06 +1975-06-23,855.44,867.10,846.92,864.83,20720000,864.83 +1975-06-20,847.86,864.67,847.86,855.44,26260000,855.44 +1975-06-19,827.83,848.64,826.11,845.35,21450000,845.35 +1975-06-18,828.61,834.01,818.99,827.83,15590000,827.83 +1975-06-17,834.56,843.09,824.00,828.61,19440000,828.61 +1975-06-16,824.47,837.77,821.34,834.56,16660000,834.56 +1975-06-13,819.31,829.01,811.23,824.47,16300000,824.47 +1975-06-12,824.55,831.43,815.39,819.31,15970000,819.31 +1975-06-11,822.12,833.54,819.85,824.55,18230000,824.55 +1975-06-10,829.08,829.08,813.75,822.12,21130000,822.12 +1975-06-09,839.64,844.49,827.99,830.10,20670000,830.10 +1975-06-06,842.15,849.73,833.15,839.64,22230000,839.64 +1975-06-05,839.96,845.04,829.94,842.15,21610000,842.15 +1975-06-04,846.14,850.83,834.17,839.96,24900000,839.96 +1975-06-03,846.61,855.44,839.57,846.14,26560000,846.14 +1975-06-02,835.73,853.49,835.73,846.61,28240000,846.61 +1975-05-30,817.43,836.20,817.43,832.29,22670000,832.29 +1975-05-29,817.04,823.53,808.12,815.00,18570000,815.00 +1975-05-28,826.11,832.84,812.81,817.04,21850000,817.04 +1975-05-27,831.90,837.53,820.09,826.11,17050000,826.11 +1975-05-23,818.91,835.50,818.28,831.90,17870000,831.90 +1975-05-22,818.68,828.54,807.96,818.91,17610000,818.91 +1975-05-21,830.26,830.26,815.24,818.68,17640000,818.68 +1975-05-20,837.69,843.79,827.52,830.49,18310000,830.49 +1975-05-19,837.61,843.71,823.22,837.69,17870000,837.69 +1975-05-16,848.80,849.03,831.35,837.61,16630000,837.61 +1975-05-15,858.73,868.58,847.15,848.80,27690000,848.80 +1975-05-14,850.13,866.00,846.84,858.73,29050000,858.73 +1975-05-13,847.47,857.87,840.19,850.13,24950000,850.13 +1975-05-12,850.13,857.32,841.99,847.47,22410000,847.47 +1975-05-09,840.50,856.77,839.41,850.13,28440000,850.13 +1975-05-08,836.44,845.20,828.07,840.50,22980000,840.50 +1975-05-07,834.72,842.69,822.67,836.44,22250000,836.44 +1975-05-06,855.60,860.06,832.68,834.72,25410000,834.72 +1975-05-05,848.48,860.06,839.72,855.60,22370000,855.60 +1975-05-02,832.21,853.25,832.21,848.48,25210000,848.48 +1975-05-01,821.34,837.22,817.82,830.96,20660000,830.96 +1975-04-30,803.04,823.22,796.93,821.34,18060000,821.34 +1975-04-29,810.00,817.04,797.79,803.04,17740000,803.04 +1975-04-28,811.80,820.56,803.50,810.00,17850000,810.00 +1975-04-25,803.66,819.77,800.77,811.80,20260000,811.80 +1975-04-24,802.49,810.15,792.32,803.66,19050000,803.66 +1975-04-23,814.14,815.94,798.97,802.49,20040000,802.49 +1975-04-22,815.86,828.93,811.17,814.14,26120000,814.14 +1975-04-21,808.43,821.57,803.74,815.86,23960000,815.86 +1975-04-18,819.46,822.12,802.25,808.43,26610000,808.43 +1975-04-17,815.71,835.18,813.75,819.46,32650000,819.46 +1975-04-16,815.08,819.77,800.30,815.71,22970000,815.71 +1975-04-15,806.95,822.43,801.31,815.08,29620000,815.08 +1975-04-14,790.83,811.48,790.83,806.95,26800000,806.95 +1975-04-11,781.29,792.94,775.81,789.50,20160000,789.50 +1975-04-10,769.40,788.25,769.40,781.29,24990000,781.29 +1975-04-09,749.22,771.04,748.44,767.99,18120000,767.99 +1975-04-08,742.88,755.38,741.00,749.22,14320000,749.22 +1975-04-07,747.26,749.84,736.62,742.88,13860000,742.88 +1975-04-04,752.19,755.40,740.69,747.26,14170000,747.26 +1975-04-03,760.56,763.22,749.06,752.19,13920000,752.19 +1975-04-02,761.58,770.96,754.77,760.56,15600000,760.56 +1975-04-01,768.15,771.12,756.49,761.58,14480000,761.58 +1975-03-31,770.26,779.72,764.39,768.15,16270000,768.15 +1975-03-27,766.19,778.63,763.45,770.26,18300000,770.26 +1975-03-26,750.94,769.97,750.94,766.19,18580000,766.19 +1975-03-25,743.43,753.29,731.46,747.89,18500000,747.89 +1975-03-24,752.50,752.50,737.48,743.43,17810000,743.43 +1975-03-21,764.00,768.93,753.13,763.06,15940000,763.06 +1975-03-20,769.48,779.65,758.29,764.00,20960000,764.00 +1975-03-19,776.83,776.83,761.19,769.48,19030000,769.48 +1975-03-18,786.53,796.93,776.60,779.41,29180000,779.41 +1975-03-17,773.47,789.42,771.35,786.53,26780000,786.53 +1975-03-14,762.98,779.57,761.81,773.47,24840000,773.47 +1975-03-13,763.69,766.97,752.58,762.98,18620000,762.98 +1975-03-12,770.89,774.33,756.73,763.69,21560000,763.69 +1975-03-11,776.13,784.73,765.64,770.89,31280000,770.89 +1975-03-10,770.10,779.41,761.58,776.13,25890000,776.13 +1975-03-07,761.81,775.66,759.62,770.10,25930000,770.10 +1975-03-06,761.81,764.71,761.81,761.81,21780000,761.81 +1975-03-05,757.74,766.97,745.54,752.82,24120000,752.82 +1975-03-04,753.83,773.23,753.83,757.74,34140000,757.74 +1975-03-03,739.05,756.49,737.64,753.13,24100000,753.13 +1975-02-28,731.15,741.94,724.50,739.05,17560000,739.05 +1975-02-27,728.10,738.50,725.13,731.15,16430000,731.15 +1975-02-26,719.18,731.77,713.70,728.10,18790000,728.10 +1975-02-25,732.79,732.79,714.57,719.18,20910000,719.18 +1975-02-24,749.77,750.16,733.49,736.94,19150000,736.94 +1975-02-21,745.38,757.35,742.49,749.77,24440000,749.77 +1975-02-20,736.39,749.53,731.38,745.38,22260000,745.38 +1975-02-19,731.30,740.61,721.92,736.39,21930000,736.39 +1975-02-18,734.20,742.10,722.39,731.30,23990000,731.30 +1975-02-14,726.92,739.52,719.81,734.20,23290000,734.20 +1975-02-13,718.48,738.27,718.48,726.92,35160000,726.92 +1975-02-12,707.60,716.83,700.64,715.03,19790000,715.03 +1975-02-11,708.39,711.67,697.83,707.60,16470000,707.60 +1975-02-10,711.91,717.85,702.75,708.39,16120000,708.39 +1975-02-07,714.17,715.97,697.51,711.91,19060000,711.91 +1975-02-06,717.85,731.54,710.81,714.17,32020000,714.17 +1975-02-05,708.07,721.45,699.78,717.85,25830000,717.85 +1975-02-04,711.44,713.47,695.24,708.07,25040000,708.07 +1975-02-03,703.69,717.62,696.50,711.44,25400000,711.44 +1975-01-31,696.42,709.56,690.16,703.69,24640000,703.69 +1975-01-30,705.96,717.30,693.13,696.42,29740000,696.42 +1975-01-29,694.77,712.22,686.95,705.96,27410000,705.96 +1975-01-28,692.66,705.10,689.69,694.77,31760000,694.77 +1975-01-27,678.43,698.69,678.43,692.66,32130000,692.66 +1975-01-24,656.76,671.46,652.69,666.61,20670000,666.61 +1975-01-23,652.61,666.61,647.45,656.76,17960000,656.76 +1975-01-22,641.90,654.02,634.39,652.61,15330000,652.61 +1975-01-21,647.45,656.60,637.91,641.90,14780000,641.90 +1975-01-20,644.63,650.19,635.09,647.45,13450000,647.45 +1975-01-17,655.74,657.70,641.90,644.63,14260000,644.63 +1975-01-16,653.39,660.12,648.08,655.74,17110000,655.74 +1975-01-15,648.70,657.15,640.25,653.39,16580000,653.39 +1975-01-14,654.18,657.93,644.01,648.70,16610000,648.70 +1975-01-13,658.79,669.27,651.36,654.18,19780000,654.18 +1975-01-10,650.11,666.69,650.11,658.79,25890000,658.79 +1975-01-09,635.40,646.90,627.58,645.26,16340000,645.26 +1975-01-08,641.19,646.28,632.12,635.40,15600000,635.40 +1975-01-07,637.20,645.42,630.24,641.19,14890000,641.19 +1975-01-06,634.54,646.43,631.88,637.20,17550000,637.20 +1975-01-03,632.04,642.60,623.67,634.54,15270000,634.54 +1975-01-02,619.13,637.12,619.13,632.04,14800000,632.04 +1974-12-31,603.25,619.84,602.86,616.24,20970000,616.24 +1974-12-30,602.16,607.24,595.04,603.25,18520000,603.25 +1974-12-27,604.74,608.26,597.47,602.16,13060000,602.16 +1974-12-26,598.40,610.37,597.07,604.74,11810000,604.74 +1974-12-24,589.64,602.16,589.57,598.40,9540000,598.40 +1974-12-23,598.48,598.95,583.70,589.64,18040000,589.64 +1974-12-20,604.43,607.01,594.49,598.48,15840000,598.48 +1974-12-19,603.49,611.00,596.21,604.43,15900000,604.43 +1974-12-18,597.62,610.84,597.62,603.49,18050000,603.49 +1974-12-17,586.83,599.42,582.45,597.54,16880000,597.54 +1974-12-16,592.77,598.09,584.25,586.83,15370000,586.83 +1974-12-13,596.37,602.00,586.67,592.77,14000000,592.77 +1974-12-12,595.35,604.27,586.67,596.37,15390000,596.37 +1974-12-11,593.87,606.15,589.17,595.35,15700000,595.35 +1974-12-10,582.21,602.08,582.21,593.87,15690000,593.87 +1974-12-09,577.60,587.14,570.01,579.94,14660000,579.94 +1974-12-06,587.06,588.00,572.12,577.60,15500000,577.60 +1974-12-05,598.64,604.11,585.11,587.06,12890000,587.06 +1974-12-04,596.61,606.77,592.07,598.64,12580000,598.64 +1974-12-03,603.02,603.33,590.82,596.61,13620000,596.61 +1974-12-02,616.08,616.08,599.58,603.02,11140000,603.02 +1974-11-29,619.29,623.90,610.92,618.66,7400000,618.66 +1974-11-27,617.26,633.45,612.64,619.29,14810000,619.29 +1974-11-26,611.94,625.08,606.85,617.26,13600000,617.26 +1974-11-25,615.30,620.70,604.43,611.94,11300000,611.94 +1974-11-22,609.59,625.31,609.59,615.30,13020000,615.30 +1974-11-21,609.59,616.55,599.81,608.57,13820000,608.57 +1974-11-20,614.05,622.81,605.76,609.59,12430000,609.59 +1974-11-19,624.92,627.42,609.75,614.05,15720000,614.05 +1974-11-18,641.11,641.11,621.71,624.92,15230000,624.92 +1974-11-15,658.40,660.04,642.60,647.61,12480000,647.61 +1974-11-14,659.18,671.31,635.55,658.40,13540000,658.40 +1974-11-13,659.18,666.22,647.29,659.18,16040000,659.18 +1974-11-12,672.64,675.06,656.45,659.18,15040000,659.18 +1974-11-11,667.16,675.69,660.51,672.64,13220000,672.64 +1974-11-08,671.93,676.55,661.53,667.16,15890000,667.16 +1974-11-07,669.12,681.79,660.75,671.93,17150000,671.93 +1974-11-06,674.75,692.82,666.07,669.12,23930000,669.12 +1974-11-05,657.23,676.63,651.83,674.75,15960000,674.75 +1974-11-04,664.19,664.19,647.37,657.23,12740000,657.23 +1974-11-01,665.52,673.03,655.74,665.28,13470000,665.28 +1974-10-31,673.03,685.62,659.18,665.52,18840000,665.52 +1974-10-30,659.34,681.40,655.19,673.03,20130000,673.03 +1974-10-29,638.77,661.53,638.77,659.34,15610000,659.34 +1974-10-28,636.19,639.63,624.06,633.84,10540000,633.84 +1974-10-25,636.26,648.00,629.93,636.19,12650000,636.19 +1974-10-24,643.85,643.85,624.30,636.26,14910000,636.26 +1974-10-23,660.51,660.51,637.83,645.03,14200000,645.03 +1974-10-22,669.82,680.07,658.56,662.86,18930000,662.86 +1974-10-21,654.88,674.12,645.65,669.82,14500000,669.82 +1974-10-18,651.44,669.51,646.04,654.88,16460000,654.88 +1974-10-17,642.29,657.31,635.48,651.44,14470000,651.44 +1974-10-16,658.40,660.51,636.97,642.29,14790000,642.29 +1974-10-15,673.50,679.21,652.38,658.40,17390000,658.40 +1974-10-14,659.73,689.30,659.73,673.50,19770000,673.50 +1974-10-11,648.08,665.91,638.14,658.17,20090000,658.17 +1974-10-10,634.00,664.03,634.00,648.08,26360000,648.08 +1974-10-09,602.63,633.37,591.91,631.02,18820000,631.02 +1974-10-08,607.56,615.93,596.21,602.63,15460000,602.63 +1974-10-07,587.77,610.45,587.77,607.56,15000000,607.56 +1974-10-04,587.61,593.71,573.22,584.56,15910000,584.56 +1974-10-03,600.75,600.75,582.21,587.61,13150000,587.61 +1974-10-02,604.82,613.89,596.84,601.53,12230000,601.53 +1974-10-01,607.87,613.27,589.57,604.82,16890000,604.82 +1974-09-30,619.37,619.37,598.80,607.87,15000000,607.87 +1974-09-27,637.98,643.62,619.37,621.95,12320000,621.95 +1974-09-26,648.39,648.39,633.60,637.98,9060000,637.98 +1974-09-25,654.10,671.46,643.77,649.95,17620000,649.95 +1974-09-24,662.08,662.08,648.78,654.10,9840000,654.10 +1974-09-23,670.76,678.19,657.78,663.72,12130000,663.72 +1974-09-20,674.05,680.54,659.34,670.76,16250000,670.76 +1974-09-19,659.34,679.83,659.34,674.05,17000000,674.05 +1974-09-18,648.78,654.57,635.09,651.91,11760000,651.91 +1974-09-17,642.76,662.16,642.76,648.78,13730000,648.78 +1974-09-16,627.19,645.89,617.73,639.79,18370000,639.79 +1974-09-13,641.74,643.77,624.37,627.19,16070000,627.19 +1974-09-12,654.72,655.04,637.44,641.74,16920000,641.74 +1974-09-11,658.17,665.60,650.58,654.72,11820000,654.72 +1974-09-10,662.94,669.51,652.22,658.17,11980000,658.17 +1974-09-09,676.71,676.71,660.59,662.94,11160000,662.94 +1974-09-06,670.76,685.00,663.56,677.88,15130000,677.88 +1974-09-05,649.95,673.50,649.95,670.76,14210000,670.76 +1974-09-04,657.46,657.46,638.38,648.00,16930000,648.00 +1974-09-03,678.58,686.48,662.23,663.33,12750000,663.33 +1974-08-30,661.14,681.71,661.14,678.58,16230000,678.58 +1974-08-29,666.61,669.51,651.60,656.84,13690000,656.84 +1974-08-28,671.54,681.79,663.56,666.61,16670000,666.61 +1974-08-27,688.13,690.86,668.02,671.54,12970000,671.54 +1974-08-26,686.80,697.12,671.46,688.13,14630000,688.13 +1974-08-23,704.63,710.73,683.90,686.80,13590000,686.80 +1974-08-22,711.59,713.94,694.15,704.63,15690000,704.63 +1974-08-21,726.85,730.05,709.25,711.59,11650000,711.59 +1974-08-20,721.84,736.31,717.46,726.85,13820000,726.85 +1974-08-19,731.15,731.15,715.35,721.84,11670000,721.84 +1974-08-16,737.88,744.45,728.65,731.54,10510000,731.54 +1974-08-15,740.54,749.14,732.24,737.88,11130000,737.88 +1974-08-14,755.01,755.01,735.37,740.54,11750000,740.54 +1974-08-13,767.29,768.54,750.55,756.44,10140000,756.44 +1974-08-12,777.30,780.04,762.83,767.29,7780000,767.29 +1974-08-09,784.89,787.47,771.90,777.30,10160000,777.30 +1974-08-08,797.56,803.43,779.02,784.89,16060000,784.89 +1974-08-07,773.78,798.89,770.81,797.56,13380000,797.56 +1974-08-06,766.97,790.99,766.97,773.78,15770000,773.78 +1974-08-05,752.58,768.46,747.97,760.40,11230000,760.40 +1974-08-02,751.10,758.45,745.31,752.58,10110000,752.58 +1974-08-01,757.43,764.16,745.62,751.10,11470000,751.10 +1974-07-31,765.57,767.44,754.38,757.43,10960000,757.43 +1974-07-30,770.89,775.03,758.84,765.57,11360000,765.57 +1974-07-29,780.74,780.74,764.55,770.89,11560000,770.89 +1974-07-26,795.68,798.03,781.52,784.57,10420000,784.57 +1974-07-25,805.77,807.65,790.05,795.68,13310000,795.68 +1974-07-24,797.72,809.76,791.54,805.77,12870000,805.77 +1974-07-23,790.36,805.62,789.82,797.72,12910000,797.72 +1974-07-22,787.94,795.53,779.49,790.36,9290000,790.36 +1974-07-19,789.19,796.62,780.43,787.94,11080000,787.94 +1974-07-18,784.97,803.04,781.45,789.19,13980000,789.19 +1974-07-17,775.97,788.56,765.80,784.97,11320000,784.97 +1974-07-16,785.20,785.20,771.82,775.97,9920000,775.97 +1974-07-15,787.23,800.92,777.85,786.61,13560000,786.61 +1974-07-12,770.03,790.68,770.03,787.23,17770000,787.23 +1974-07-11,762.12,769.76,753.13,759.62,14640000,759.62 +1974-07-10,772.29,779.18,759.54,762.12,13490000,762.12 +1974-07-09,770.57,782.85,764.63,772.29,15580000,772.29 +1974-07-08,788.41,788.41,765.33,770.57,15510000,770.57 +1974-07-05,792.87,796.31,786.22,791.77,7400000,791.77 +1974-07-03,790.68,798.58,785.12,792.87,13430000,792.87 +1974-07-02,806.24,808.75,788.25,790.68,13460000,790.68 +1974-07-01,802.41,811.95,797.48,806.24,10270000,806.24 +1974-06-28,803.66,808.20,796.46,802.41,12010000,802.41 +1974-06-27,816.96,817.27,800.77,803.66,12650000,803.66 +1974-06-26,828.85,830.41,815.47,816.96,11410000,816.96 +1974-06-25,817.66,832.53,817.66,828.85,11920000,828.85 +1974-06-24,815.39,822.43,808.90,816.33,9960000,816.33 +1974-06-21,820.79,822.59,810.15,815.39,11830000,815.39 +1974-06-20,826.11,831.20,818.13,820.79,11990000,820.79 +1974-06-19,830.26,833.54,821.26,826.11,10550000,826.11 +1974-06-18,833.23,838.55,826.50,830.26,10110000,830.26 +1974-06-17,843.09,843.24,829.47,833.23,9680000,833.23 +1974-06-14,850.67,850.67,837.84,843.09,10030000,843.09 +1974-06-13,848.56,861.00,843.79,852.08,11540000,852.08 +1974-06-12,852.08,853.80,837.92,848.56,11150000,848.56 +1974-06-11,859.67,865.54,848.09,852.08,12380000,852.08 +1974-06-10,853.72,864.60,846.14,859.67,13540000,859.67 +1974-06-07,845.59,863.27,845.59,853.72,19020000,853.72 +1974-06-06,830.18,847.54,824.08,845.35,13360000,845.35 +1974-06-05,828.69,839.41,819.23,830.18,13680000,830.18 +1974-06-04,821.81,837.06,821.81,828.69,16040000,828.69 +1974-06-03,802.17,822.36,799.83,821.26,12490000,821.26 +1974-05-31,803.58,808.04,792.32,802.17,10810000,802.17 +1974-05-30,795.37,808.28,788.80,803.58,13580000,803.58 +1974-05-29,814.30,817.27,793.02,795.37,12300000,795.37 +1974-05-28,816.65,824.55,809.14,814.30,10580000,814.30 +1974-05-24,806.24,824.31,806.24,816.65,13740000,816.65 +1974-05-23,802.57,811.33,796.15,805.23,14770000,805.23 +1974-05-22,809.53,818.84,800.14,802.57,15450000,802.57 +1974-05-21,812.42,822.67,803.04,809.53,12190000,809.53 +1974-05-20,818.84,826.19,807.49,812.42,10550000,812.42 +1974-05-17,833.31,833.31,813.75,818.84,13870000,818.84 +1974-05-16,846.06,853.41,833.15,835.34,12090000,835.34 +1974-05-15,847.86,853.02,839.25,846.06,11240000,846.06 +1974-05-14,845.59,856.07,842.30,847.86,10880000,847.86 +1974-05-13,850.44,854.82,838.70,845.59,11290000,845.59 +1974-05-10,865.77,870.38,846.84,850.44,15270000,850.44 +1974-05-09,850.99,870.07,849.19,865.77,14710000,865.77 +1974-05-08,847.15,856.93,843.01,850.99,11850000,850.99 +1974-05-07,844.88,855.84,840.50,847.15,10710000,847.15 +1974-05-06,845.90,847.47,834.32,844.88,9450000,844.88 +1974-05-03,851.06,852.78,839.88,845.90,11080000,845.90 +1974-05-02,853.88,865.85,845.90,851.06,13620000,851.06 +1974-05-01,836.75,861.08,832.77,853.88,15120000,853.88 +1974-04-30,835.42,844.49,829.63,836.75,10980000,836.75 +1974-04-29,834.64,839.80,824.70,835.42,10170000,835.42 +1974-04-26,827.68,841.29,823.22,834.64,13250000,834.64 +1974-04-25,832.37,835.11,818.68,827.68,15870000,827.68 +1974-04-24,845.98,847.23,828.22,832.37,16010000,832.37 +1974-04-23,858.57,859.51,843.55,845.98,14110000,845.98 +1974-04-22,859.90,864.28,852.39,858.57,10520000,858.57 +1974-04-19,868.90,868.90,856.15,859.90,10710000,859.90 +1974-04-18,867.41,875.94,862.64,869.92,12470000,869.92 +1974-04-17,861.23,874.45,856.38,867.41,14020000,867.41 +1974-04-16,845.74,863.58,845.74,861.23,14530000,861.23 +1974-04-15,844.81,852.00,839.33,843.79,10130000,843.79 +1974-04-11,843.71,849.97,837.77,844.81,9970000,844.81 +1974-04-10,846.84,855.52,840.27,843.71,11160000,843.71 +1974-04-09,839.96,852.55,836.12,846.84,11330000,846.84 +1974-04-08,847.23,847.23,834.25,839.96,10740000,839.96 +1974-04-05,858.57,858.57,842.46,847.54,11670000,847.54 +1974-04-04,858.03,865.46,852.32,858.89,11650000,858.89 +1974-04-03,846.61,860.45,844.65,858.03,11500000,858.03 +1974-04-02,843.48,853.18,839.17,846.61,12010000,846.61 +1974-04-01,846.68,856.38,839.72,843.48,11470000,843.48 +1974-03-29,854.35,858.57,842.38,846.68,12150000,846.68 +1974-03-28,867.18,867.18,850.59,854.35,14940000,854.35 +1974-03-27,883.68,887.83,869.76,871.17,11690000,871.17 +1974-03-26,881.02,890.18,875.16,883.68,11840000,883.68 +1974-03-25,878.13,884.78,866.79,881.02,10540000,881.02 +1974-03-22,875.47,884.31,868.43,878.13,11930000,878.13 +1974-03-21,872.34,887.12,870.23,875.47,12950000,875.47 +1974-03-20,867.57,878.60,863.03,872.34,12960000,872.34 +1974-03-19,874.22,875.70,861.86,867.57,12800000,867.57 +1974-03-18,887.83,889.86,870.38,874.22,14010000,874.22 +1974-03-15,889.78,893.38,878.68,887.83,14500000,887.83 +1974-03-14,891.66,904.02,885.17,889.78,19770000,889.78 +1974-03-13,887.12,900.81,881.88,891.66,16820000,891.66 +1974-03-12,888.45,895.57,877.50,887.12,17250000,887.12 +1974-03-11,878.05,893.30,865.93,888.45,18470000,888.45 +1974-03-08,869.06,880.94,858.81,878.05,16210000,878.05 +1974-03-07,879.85,880.24,865.07,869.06,14500000,869.06 +1974-03-06,872.42,885.25,866.47,879.85,19140000,879.85 +1974-03-05,860.40,880.40,860.40,872.42,21980000,872.42 +1974-03-04,851.92,854.97,841.76,853.18,12270000,853.18 +1974-03-01,860.53,861.62,845.90,851.92,12880000,851.92 +1974-02-28,863.42,868.19,851.85,860.53,13680000,860.53 +1974-02-27,859.51,871.40,855.76,863.42,18730000,863.42 +1974-02-26,851.38,861.78,843.09,859.51,15860000,859.51 +1974-02-25,855.99,859.20,843.79,851.38,12900000,851.38 +1974-02-22,846.84,862.41,843.01,855.99,16360000,855.99 +1974-02-21,831.04,849.66,830.18,846.84,13930000,846.84 +1974-02-20,819.54,834.87,814.22,831.04,11670000,831.04 +1974-02-19,820.32,840.50,816.65,819.54,15940000,819.54 +1974-02-15,809.92,825.72,808.12,820.32,12640000,820.32 +1974-02-14,806.87,816.57,802.17,809.92,12230000,809.92 +1974-02-13,806.63,816.18,803.04,806.87,10990000,806.87 +1974-02-12,803.90,811.72,795.68,806.63,12920000,806.63 +1974-02-11,820.40,821.26,802.24,803.90,12930000,803.90 +1974-02-08,828.46,831.90,817.82,820.40,12990000,820.40 +1974-02-07,824.62,833.93,819.38,828.46,11750000,828.46 +1974-02-06,820.64,831.35,817.51,824.62,11610000,824.62 +1974-02-05,821.50,829.87,811.95,820.64,12820000,820.64 +1974-02-04,838.63,838.63,816.49,821.50,14380000,821.50 +1974-02-01,855.55,856.55,838.02,843.94,12480000,843.94 +1974-01-31,862.32,868.85,852.01,855.55,14020000,855.55 +1974-01-30,853.09,869.77,853.09,862.32,16790000,862.32 +1974-01-29,853.01,858.86,844.48,852.32,12850000,852.32 +1974-01-28,859.39,862.16,847.32,853.01,13410000,853.01 +1974-01-25,863.08,869.16,850.71,859.39,14860000,859.39 +1974-01-24,871.00,875.85,853.47,863.08,15980000,863.08 +1974-01-23,863.47,878.69,859.01,871.00,16890000,871.00 +1974-01-22,854.63,871.62,850.71,863.47,17330000,863.47 +1974-01-21,855.47,858.86,835.79,854.63,15630000,854.63 +1974-01-18,872.16,873.15,850.86,855.47,16470000,855.47 +1974-01-17,856.32,878.54,856.32,872.16,21040000,872.16 +1974-01-16,846.40,861.16,842.48,856.09,14930000,856.09 +1974-01-15,840.18,855.78,834.64,846.40,13250000,846.40 +1974-01-14,841.48,855.63,833.26,840.18,14610000,840.18 +1974-01-11,823.11,847.63,819.88,841.48,15140000,841.48 +1974-01-10,834.79,845.17,816.57,823.11,16120000,823.11 +1974-01-09,853.01,853.01,831.41,834.79,18070000,834.79 +1974-01-08,876.85,880.77,857.70,861.78,18080000,861.78 +1974-01-07,880.23,883.99,866.31,876.85,19070000,876.85 +1974-01-04,880.69,890.38,868.08,880.23,21700000,880.23 +1974-01-03,858.86,886.69,858.86,880.69,24850000,880.69 +1974-01-02,850.86,859.16,841.41,855.32,12060000,855.32 +1973-12-31,848.02,857.09,836.18,850.86,23470000,850.86 +1973-12-28,851.01,857.63,839.94,848.02,21310000,848.02 +1973-12-27,839.02,858.93,839.02,851.01,22720000,851.01 +1973-12-26,820.19,844.10,820.19,837.56,18620000,837.56 +1973-12-24,818.73,820.73,805.73,814.81,11540000,814.81 +1973-12-21,828.11,830.72,809.81,818.73,18680000,818.73 +1973-12-20,829.57,841.64,820.50,828.11,17340000,828.11 +1973-12-19,829.49,847.86,820.96,829.57,20670000,829.57 +1973-12-18,811.12,834.72,807.12,829.49,19490000,829.49 +1973-12-17,815.65,821.42,804.20,811.12,12930000,811.12 +1973-12-14,800.43,823.57,793.51,815.65,20000000,815.65 +1973-12-13,810.73,821.57,794.43,800.43,18130000,800.43 +1973-12-12,828.64,828.64,805.27,810.73,18190000,810.73 +1973-12-11,851.14,861.09,830.80,834.18,20100000,834.18 +1973-12-10,838.05,857.31,829.17,851.14,18590000,851.14 +1973-12-07,815.47,846.63,815.47,838.05,23230000,838.05 +1973-12-06,788.31,816.68,786.50,814.12,23260000,814.12 +1973-12-05,803.21,806.82,783.56,788.31,19180000,788.31 +1973-12-04,806.52,817.73,795.68,803.21,19030000,803.21 +1973-12-03,820.51,820.51,798.31,806.52,17900000,806.52 +1973-11-30,835.11,836.02,819.39,822.25,15380000,822.25 +1973-11-29,839.78,846.93,824.28,835.11,18870000,835.11 +1973-11-28,817.73,843.47,814.80,839.78,19990000,839.78 +1973-11-27,824.95,833.16,810.36,817.73,19750000,817.73 +1973-11-26,844.15,844.15,816.60,824.95,19830000,824.95 +1973-11-23,854.98,861.45,847.46,854.00,11470000,854.00 +1973-11-21,844.90,869.21,839.78,854.98,24260000,854.98 +1973-11-20,862.43,862.43,836.17,844.90,23960000,844.90 +1973-11-19,889.75,889.75,860.78,862.66,16700000,862.66 +1973-11-16,874.55,905.10,869.21,891.33,22510000,891.33 +1973-11-15,869.88,886.82,859.27,874.55,24530000,874.55 +1973-11-14,891.03,899.53,865.37,869.88,22710000,869.88 +1973-11-13,897.65,902.47,876.88,891.03,20310000,891.03 +1973-11-12,908.41,910.82,885.54,897.65,19250000,897.65 +1973-11-09,932.65,932.95,902.92,908.41,17320000,908.41 +1973-11-08,923.92,946.79,923.92,932.65,19650000,932.65 +1973-11-07,913.08,929.64,909.69,920.08,16570000,920.08 +1973-11-06,919.40,933.77,909.69,913.08,16430000,913.08 +1973-11-05,932.87,932.87,912.55,919.40,17150000,919.40 +1973-11-02,948.83,951.31,929.11,935.28,16340000,935.28 +1973-11-01,956.58,963.80,941.83,948.83,16920000,948.83 +1973-10-31,968.54,973.13,951.31,956.58,17890000,956.58 +1973-10-30,984.80,985.93,963.65,968.54,17580000,968.54 +1973-10-29,987.06,997.59,979.98,984.80,17960000,984.80 +1973-10-26,974.49,992.62,972.61,987.06,17800000,987.06 +1973-10-25,971.85,981.26,957.10,974.49,15580000,974.49 +1973-10-24,966.51,977.50,960.79,971.85,15840000,971.85 +1973-10-23,960.57,976.44,944.46,966.51,17230000,966.51 +1973-10-22,963.73,970.42,951.08,960.57,14290000,960.57 +1973-10-19,959.74,974.04,954.55,963.73,17880000,963.73 +1973-10-18,962.52,974.34,950.11,959.74,19210000,959.74 +1973-10-17,967.41,976.67,956.35,962.52,18600000,962.52 +1973-10-16,967.04,971.63,951.76,967.41,18780000,967.41 +1973-10-15,977.80,977.80,960.19,967.04,16160000,967.04 +1973-10-12,976.07,991.80,972.00,978.63,22730000,978.63 +1973-10-11,960.57,981.19,957.71,976.07,20740000,976.07 +1973-10-10,974.19,980.28,953.79,960.57,19010000,960.57 +1973-10-09,977.65,984.65,964.63,974.19,19440000,974.19 +1973-10-08,971.25,983.22,955.82,977.65,18990000,977.65 +1973-10-05,955.90,975.92,950.78,971.25,18820000,971.25 +1973-10-04,964.55,969.30,949.50,955.90,19730000,955.90 +1973-10-03,956.80,971.78,952.14,964.55,22040000,964.55 +1973-10-02,948.83,961.54,943.93,956.80,20770000,956.80 +1973-10-01,947.10,954.09,937.69,948.83,15830000,948.83 +1973-09-28,953.27,954.92,937.54,947.10,16300000,947.10 +1973-09-27,949.50,964.55,942.50,953.27,23660000,953.27 +1973-09-26,940.55,954.55,935.43,949.50,21130000,949.50 +1973-09-25,936.71,947.02,927.53,940.55,21530000,940.55 +1973-09-24,927.90,940.70,924.37,936.71,19490000,936.71 +1973-09-21,920.53,934.38,911.72,927.90,23760000,927.90 +1973-09-20,910.37,925.42,909.54,920.53,25960000,920.53 +1973-09-19,891.26,915.41,891.26,910.37,24570000,910.37 +1973-09-18,892.99,900.14,882.38,891.26,16400000,891.26 +1973-09-17,886.36,900.29,884.86,892.99,15100000,892.99 +1973-09-14,880.57,889.15,873.34,886.36,13760000,886.36 +1973-09-13,881.32,888.09,874.17,880.57,11670000,880.57 +1973-09-12,885.76,889.75,874.77,881.32,12040000,881.32 +1973-09-11,891.33,892.46,878.61,885.76,12690000,885.76 +1973-09-10,898.63,903.45,888.62,891.33,11620000,891.33 +1973-09-07,901.04,905.70,892.61,898.63,14930000,898.63 +1973-09-06,899.08,908.04,894.04,901.04,15670000,901.04 +1973-09-05,895.39,903.52,887.94,899.08,14580000,899.08 +1973-09-04,887.57,900.25,885.69,895.39,14210000,895.39 +1973-08-31,882.53,890.95,876.51,887.57,10530000,887.57 +1973-08-30,883.43,892.31,877.48,882.53,12100000,882.53 +1973-08-29,872.07,890.35,870.56,883.43,15690000,883.43 +1973-08-28,870.71,877.63,865.37,872.07,11810000,872.07 +1973-08-27,863.49,874.32,860.02,870.71,9740000,870.71 +1973-08-24,864.46,873.12,856.56,863.49,11200000,863.49 +1973-08-23,853.48,869.81,853.48,864.46,11390000,864.46 +1973-08-22,857.84,860.55,845.50,851.90,10770000,851.90 +1973-08-21,867.40,869.96,855.51,857.84,11480000,857.84 +1973-08-20,871.84,875.08,862.73,867.40,8970000,867.40 +1973-08-17,872.74,877.18,864.69,871.84,11110000,871.84 +1973-08-16,874.17,886.44,867.62,872.74,12990000,872.74 +1973-08-15,870.71,879.82,863.71,874.17,12040000,874.17 +1973-08-14,883.20,887.42,867.70,870.71,11740000,870.71 +1973-08-13,892.38,892.91,878.09,883.20,11330000,883.20 +1973-08-10,901.49,903.52,887.12,892.38,10870000,892.38 +1973-08-09,902.02,910.60,893.96,901.49,12880000,901.49 +1973-08-08,911.95,913.23,897.43,902.02,12440000,902.02 +1973-08-07,912.78,920.38,905.25,911.95,13510000,911.95 +1973-08-06,908.87,918.50,900.96,912.78,12320000,912.78 +1973-08-03,910.14,913.91,900.36,908.87,9940000,908.87 +1973-08-02,912.18,917.37,899.46,910.14,16080000,910.14 +1973-08-01,924.37,924.37,907.28,912.18,13530000,912.18 +1973-07-31,933.77,941.15,923.39,926.40,13530000,926.40 +1973-07-30,936.71,942.35,926.32,933.77,11170000,933.77 +1973-07-27,934.53,942.28,925.65,936.71,12910000,936.71 +1973-07-26,933.02,944.08,924.74,934.53,18410000,934.53 +1973-07-25,918.72,942.58,917.22,933.02,22220000,933.02 +1973-07-24,913.15,922.19,903.67,918.72,16280000,918.72 +1973-07-23,910.90,921.88,907.36,913.15,15580000,913.15 +1973-07-20,906.68,918.05,902.54,910.90,16300000,910.90 +1973-07-19,905.40,916.47,893.66,906.68,18650000,906.68 +1973-07-18,898.03,911.20,889.90,905.40,17020000,905.40 +1973-07-17,897.58,911.80,892.84,898.03,18750000,898.03 +1973-07-16,885.99,900.44,881.32,897.58,12920000,897.58 +1973-07-13,901.94,902.77,883.05,885.99,11390000,885.99 +1973-07-12,908.19,910.82,895.39,901.94,16400000,901.94 +1973-07-11,889.90,911.80,889.90,908.19,18730000,908.19 +1973-07-10,879.06,894.64,879.06,888.32,15090000,888.32 +1973-07-09,870.11,879.74,863.94,877.26,11560000,877.26 +1973-07-06,874.32,878.09,865.82,870.11,9980000,870.11 +1973-07-05,874.17,879.74,867.10,874.32,10500000,874.32 +1973-07-03,880.57,882.53,868.75,874.17,10560000,874.17 +1973-07-02,890.20,890.20,876.66,880.57,9830000,880.57 +1973-06-29,894.64,900.59,886.59,891.71,10770000,891.71 +1973-06-28,884.63,897.88,880.87,894.64,12760000,894.64 +1973-06-27,879.44,888.09,872.44,884.63,12660000,884.63 +1973-06-26,869.13,881.85,864.46,879.44,14040000,879.44 +1973-06-25,879.82,880.72,865.67,869.13,11670000,869.13 +1973-06-22,875.23,897.58,875.23,879.82,18470000,879.82 +1973-06-21,884.71,887.49,871.84,873.65,11630000,873.65 +1973-06-20,881.55,890.65,876.28,884.71,10600000,884.71 +1973-06-19,875.08,889.52,868.08,881.55,12970000,881.55 +1973-06-18,887.34,887.34,869.36,875.08,11460000,875.08 +1973-06-15,899.68,899.68,882.60,888.55,11970000,888.55 +1973-06-14,915.49,922.49,899.61,902.92,13210000,902.92 +1973-06-13,927.00,935.58,912.48,915.49,15700000,915.49 +1973-06-12,915.11,930.01,912.85,927.00,13840000,927.00 +1973-06-11,920.00,924.67,911.05,915.11,9940000,915.11 +1973-06-08,909.62,926.85,908.19,920.00,14050000,920.00 +1973-06-07,898.18,913.68,896.37,909.62,14160000,909.62 +1973-06-06,900.81,908.87,891.71,898.18,13080000,898.18 +1973-06-05,885.91,905.63,883.43,900.81,14080000,900.81 +1973-06-04,893.96,894.42,880.72,885.91,11230000,885.91 +1973-06-01,901.41,902.32,887.27,893.96,10410000,893.96 +1973-05-31,908.87,912.03,895.62,901.41,12190000,901.41 +1973-05-30,924.37,924.37,906.01,908.87,11730000,908.87 +1973-05-29,930.84,934.08,921.36,925.57,11300000,925.57 +1973-05-25,924.44,938.82,915.64,930.84,19270000,930.84 +1973-05-24,895.02,926.48,890.35,924.44,17310000,924.44 +1973-05-23,892.46,904.80,884.18,895.02,14950000,895.02 +1973-05-22,886.51,905.93,884.86,892.46,18020000,892.46 +1973-05-21,894.79,894.79,875.45,886.51,20690000,886.51 +1973-05-18,908.79,908.79,889.00,895.17,17080000,895.17 +1973-05-17,917.14,919.93,907.59,911.72,13060000,911.72 +1973-05-16,917.44,927.83,907.66,917.14,13800000,917.14 +1973-05-15,909.69,920.83,894.49,917.44,18530000,917.44 +1973-05-14,925.27,925.27,906.31,909.69,13520000,909.69 +1973-05-11,939.12,939.12,924.14,927.98,12980000,927.98 +1973-05-10,949.05,950.63,934.75,939.34,13520000,939.34 +1973-05-09,956.58,965.16,945.29,949.05,16050000,949.05 +1973-05-08,950.71,961.24,940.92,956.58,13730000,956.58 +1973-05-07,953.87,956.80,941.98,950.71,12500000,950.71 +1973-05-04,945.67,962.67,944.31,953.87,19510000,953.87 +1973-05-03,932.34,950.03,915.04,945.67,17760000,945.67 +1973-05-02,921.21,938.37,920.23,932.34,14380000,932.34 +1973-05-01,921.43,929.03,905.40,921.21,15380000,921.21 +1973-04-30,922.19,929.18,907.51,921.43,14820000,921.43 +1973-04-27,937.76,941.38,918.05,922.19,13730000,922.19 +1973-04-26,930.54,944.24,919.78,937.76,16210000,937.76 +1973-04-25,940.77,941.60,925.42,930.54,15960000,930.54 +1973-04-24,955.37,958.68,938.37,940.77,13830000,940.77 +1973-04-23,963.20,966.51,951.23,955.37,12580000,955.37 +1973-04-19,958.31,970.95,953.79,963.20,14560000,963.20 +1973-04-18,953.43,961.47,944.39,958.31,13890000,958.31 +1973-04-17,956.73,959.29,947.62,953.43,12830000,953.43 +1973-04-16,959.36,965.53,950.03,956.73,11350000,956.73 +1973-04-13,964.03,967.56,950.71,959.36,14390000,959.36 +1973-04-12,967.41,975.32,956.73,964.03,16360000,964.03 +1973-04-11,960.49,970.50,953.94,967.41,14890000,967.41 +1973-04-10,950.71,966.74,950.71,960.49,16770000,960.49 +1973-04-09,931.07,950.63,927.45,947.55,13740000,947.55 +1973-04-06,923.46,937.31,921.43,931.07,13890000,931.07 +1973-04-05,925.05,929.03,914.81,923.46,12750000,923.46 +1973-04-04,927.75,935.66,919.55,925.05,11890000,925.05 +1973-04-03,936.18,936.71,920.45,927.75,12910000,927.75 +1973-04-02,951.01,951.84,932.72,936.18,10640000,936.18 +1973-03-30,959.14,961.69,944.84,951.01,13740000,951.01 +1973-03-29,948.00,962.82,941.75,959.14,16050000,959.14 +1973-03-28,944.91,955.82,936.94,948.00,15850000,948.00 +1973-03-27,930.16,948.52,930.16,944.91,17500000,944.91 +1973-03-26,922.71,931.74,914.28,927.90,14980000,927.90 +1973-03-23,925.20,934.53,911.12,922.71,18470000,922.71 +1973-03-22,937.46,937.46,919.25,925.20,17130000,925.20 +1973-03-21,949.43,958.84,934.90,938.37,16080000,938.37 +1973-03-20,952.06,956.80,941.15,949.43,13250000,949.43 +1973-03-19,962.45,962.45,946.79,952.06,12460000,952.06 +1973-03-16,969.82,973.21,957.41,963.05,15130000,963.05 +1973-03-15,978.85,982.47,966.21,969.82,14450000,969.82 +1973-03-14,976.07,982.31,972.00,978.85,14460000,978.85 +1973-03-13,969.75,980.13,966.29,976.07,14210000,976.07 +1973-03-12,972.23,979.00,965.68,969.75,13810000,969.75 +1973-03-09,976.44,978.03,963.58,972.23,14070000,972.23 +1973-03-08,979.98,985.25,973.59,976.44,15100000,976.44 +1973-03-07,979.00,984.80,966.74,979.98,19310000,979.98 +1973-03-06,966.89,982.39,966.44,979.00,17710000,979.00 +1973-03-05,961.32,972.00,955.67,966.89,13720000,966.89 +1973-03-02,949.65,962.97,937.69,961.32,17710000,961.32 +1973-03-01,955.07,967.04,947.17,949.65,18210000,949.65 +1973-02-28,947.92,958.31,938.82,955.07,17950000,955.07 +1973-02-27,953.79,963.12,943.26,947.92,16130000,947.92 +1973-02-26,959.89,962.90,943.78,953.79,15860000,953.79 +1973-02-23,971.78,973.81,957.10,959.89,15450000,959.89 +1973-02-22,974.34,978.63,963.05,971.78,14570000,971.78 +1973-02-21,983.59,988.79,970.27,974.34,14880000,974.34 +1973-02-20,979.23,991.04,975.69,983.59,14020000,983.59 +1973-02-16,973.13,981.86,965.76,979.23,13320000,979.23 +1973-02-15,979.91,984.12,966.29,973.13,13940000,973.13 +1973-02-14,996.76,997.97,974.11,979.91,16520000,979.91 +1973-02-13,991.65,1019.94,991.65,996.76,25320000,996.76 +1973-02-12,980.81,996.24,980.81,991.57,16130000,991.57 +1973-02-09,967.19,983.14,964.93,979.46,19260000,979.46 +1973-02-08,968.32,973.81,954.17,967.19,18440000,967.19 +1973-02-07,979.91,989.16,965.53,968.32,17960000,968.32 +1973-02-06,978.40,986.00,972.23,979.91,15720000,979.91 +1973-02-05,980.81,987.06,974.11,978.40,14580000,978.40 +1973-02-02,985.78,992.32,975.02,980.81,17470000,980.81 +1973-02-01,999.02,1008.58,983.14,985.78,20670000,985.78 +1973-01-31,992.93,1004.06,988.11,999.02,14870000,999.02 +1973-01-30,996.47,1005.34,989.09,992.93,15270000,992.93 +1973-01-29,1003.54,1008.80,988.18,996.47,14680000,996.47 +1973-01-26,1004.59,1008.50,989.46,1003.54,21130000,1003.54 +1973-01-24,1018.66,1025.74,998.57,1004.59,20870000,1004.59 +1973-01-23,1018.81,1024.68,1007.22,1018.66,19060000,1018.66 +1973-01-22,1026.19,1034.69,1014.52,1018.81,15570000,1018.81 +1973-01-19,1029.12,1031.68,1014.00,1026.19,17020000,1026.19 +1973-01-18,1029.12,1039.96,1024.01,1029.12,17810000,1029.12 +1973-01-17,1024.31,1036.35,1020.32,1029.12,17680000,1029.12 +1973-01-16,1025.59,1033.34,1014.37,1024.31,19170000,1024.31 +1973-01-15,1039.36,1053.28,1022.88,1025.59,21520000,1025.59 +1973-01-12,1051.70,1059.90,1033.41,1039.36,22230000,1039.36 +1973-01-11,1046.06,1067.20,1039.28,1051.70,25050000,1051.70 +1973-01-10,1047.11,1053.28,1040.94,1046.06,20880000,1046.06 +1973-01-09,1047.86,1053.21,1040.49,1047.11,16830000,1047.11 +1973-01-08,1047.49,1053.58,1040.86,1047.86,16840000,1047.86 +1973-01-05,1039.81,1053.43,1037.40,1047.49,19330000,1047.49 +1973-01-04,1043.80,1047.86,1027.62,1039.81,20230000,1039.81 +1973-01-03,1032.21,1049.59,1032.21,1043.80,20620000,1043.80 +1973-01-02,1022.88,1038.98,1022.88,1031.68,17090000,1031.68 +1972-12-29,1008.58,1027.39,1008.58,1020.02,27550000,1020.02 +1972-12-27,1006.70,1014.22,1001.13,1007.68,19100000,1007.68 +1972-12-26,1004.21,1010.91,999.85,1006.70,11120000,1006.70 +1972-12-22,1000.00,1010.01,996.84,1004.21,12540000,1004.21 +1972-12-21,1004.82,1010.91,996.09,1000.00,18290000,1000.00 +1972-12-20,1009.18,1014.98,1001.88,1004.82,18490000,1004.82 +1972-12-19,1013.25,1017.99,1004.06,1009.18,17000000,1009.18 +1972-12-18,1022.05,1022.05,1004.29,1013.25,17540000,1013.25 +1972-12-15,1025.06,1034.69,1018.59,1027.24,18300000,1027.24 +1972-12-14,1030.48,1035.45,1020.09,1025.06,17930000,1025.06 +1972-12-13,1033.19,1036.65,1025.14,1030.48,16540000,1030.48 +1972-12-12,1036.27,1042.44,1029.65,1033.19,17040000,1033.19 +1972-12-11,1033.19,1041.32,1029.80,1036.27,17230000,1036.27 +1972-12-08,1033.26,1039.21,1027.17,1033.19,18030000,1033.19 +1972-12-07,1027.54,1037.85,1025.36,1033.26,19320000,1033.26 +1972-12-06,1022.95,1031.16,1018.29,1027.54,18610000,1027.54 +1972-12-05,1027.02,1030.85,1017.46,1022.95,17800000,1022.95 +1972-12-04,1023.93,1033.19,1021.45,1027.02,19730000,1027.02 +1972-12-01,1018.21,1031.53,1016.56,1023.93,22570000,1023.93 +1972-11-30,1018.81,1025.81,1010.54,1018.21,19340000,1018.21 +1972-11-29,1019.34,1023.63,1011.89,1018.81,17380000,1018.81 +1972-11-28,1017.76,1026.79,1012.57,1019.34,19210000,1019.34 +1972-11-27,1025.21,1026.87,1008.65,1017.76,18190000,1017.76 +1972-11-24,1020.54,1029.73,1014.15,1025.21,15760000,1025.21 +1972-11-22,1013.25,1026.87,1009.93,1020.54,24510000,1020.54 +1972-11-21,1005.04,1017.61,1002.86,1013.25,22110000,1013.25 +1972-11-20,1005.57,1011.14,997.14,1005.04,16680000,1005.04 +1972-11-17,1003.69,1012.34,998.57,1005.57,20220000,1005.57 +1972-11-16,998.42,1008.13,991.57,1003.69,19580000,1003.69 +1972-11-15,1003.16,1013.55,993.08,998.42,23270000,998.42 +1972-11-14,997.07,1006.92,991.12,1003.16,20200000,1003.16 +1972-11-13,995.26,1004.89,988.49,997.07,17210000,997.07 +1972-11-10,988.26,1007.15,986.08,995.26,24360000,995.26 +1972-11-09,983.74,992.32,973.89,988.26,17040000,988.26 +1972-11-08,984.80,998.42,978.63,983.74,24620000,983.74 +1972-11-06,984.12,993.38,977.05,984.80,21330000,984.80 +1972-11-03,973.06,988.94,969.22,984.12,22510000,984.12 +1972-11-02,968.54,977.80,961.77,973.06,20690000,973.06 +1972-11-01,955.52,975.24,955.30,968.54,21360000,968.54 +1972-10-31,946.42,958.53,944.39,955.52,15450000,955.52 +1972-10-30,946.42,950.71,936.56,946.42,11820000,946.42 +1972-10-27,950.56,956.20,941.07,946.42,15470000,946.42 +1972-10-26,951.38,962.45,946.27,950.56,20790000,950.56 +1972-10-25,952.51,958.46,944.99,951.38,17430000,951.38 +1972-10-24,951.31,957.10,941.30,952.51,15240000,952.51 +1972-10-23,945.21,958.31,945.21,951.31,14190000,951.31 +1972-10-20,932.12,946.72,927.98,942.81,15740000,942.81 +1972-10-19,932.34,939.27,926.70,932.12,13850000,932.12 +1972-10-18,926.48,940.85,925.80,932.34,17290000,932.34 +1972-10-17,921.66,931.29,917.07,926.48,13410000,926.48 +1972-10-16,930.46,934.53,919.25,921.66,10940000,921.66 +1972-10-13,937.46,940.17,923.77,930.46,12870000,930.46 +1972-10-12,946.42,947.10,932.42,937.46,13130000,937.46 +1972-10-11,951.84,956.05,941.60,946.42,11900000,946.42 +1972-10-10,948.75,960.49,946.34,951.84,13310000,951.84 +1972-10-09,945.36,952.21,941.00,948.75,7940000,948.75 +1972-10-06,941.30,954.39,930.39,945.36,16630000,945.36 +1972-10-05,951.31,955.67,937.54,941.30,17730000,941.30 +1972-10-04,954.47,964.10,947.85,951.31,16640000,951.31 +1972-10-03,953.27,959.96,948.22,954.47,13090000,954.47 +1972-10-02,953.27,959.59,945.44,953.27,12440000,953.27 +1972-09-29,955.15,965.08,949.05,953.27,16250000,953.27 +1972-09-28,947.25,956.88,939.87,955.15,14710000,955.15 +1972-09-27,936.56,949.05,932.95,947.25,14620000,947.25 +1972-09-26,935.73,942.13,927.15,936.56,13150000,936.56 +1972-09-25,943.03,947.47,933.10,935.73,10920000,935.73 +1972-09-22,939.49,948.98,934.38,943.03,12570000,943.03 +1972-09-21,940.25,945.44,932.72,939.49,11940000,939.49 +1972-09-20,943.18,946.12,934.75,940.25,11980000,940.25 +1972-09-19,945.36,952.44,939.12,943.18,13330000,943.18 +1972-09-18,947.32,951.16,938.67,945.36,8880000,945.36 +1972-09-15,947.55,952.29,940.62,947.32,11690000,947.32 +1972-09-14,949.88,955.30,942.05,947.55,12500000,947.55 +1972-09-13,946.04,954.09,941.30,949.88,13070000,949.88 +1972-09-12,955.00,957.86,940.62,946.04,13560000,946.04 +1972-09-11,961.24,964.55,951.08,955.00,10710000,955.00 +1972-09-08,962.45,968.24,957.33,961.24,10980000,961.24 +1972-09-07,963.43,968.02,957.41,962.45,11090000,962.45 +1972-09-06,969.37,970.35,958.91,963.43,12010000,963.43 +1972-09-05,970.05,977.35,964.63,969.37,10630000,969.37 +1972-09-01,963.73,975.62,962.30,970.05,11600000,970.05 +1972-08-31,957.86,966.89,953.57,963.73,12340000,963.73 +1972-08-30,954.70,964.03,951.16,957.86,12470000,957.86 +1972-08-29,956.95,961.62,945.29,954.70,12300000,954.70 +1972-08-28,959.36,964.33,952.59,956.95,10720000,956.95 +1972-08-25,958.38,964.86,949.80,959.36,13840000,959.36 +1972-08-24,970.35,974.56,955.98,958.38,18280000,958.38 +1972-08-23,973.51,980.36,962.60,970.35,18670000,970.35 +1972-08-22,967.19,979.76,963.88,973.51,18560000,973.51 +1972-08-21,965.83,974.19,958.16,967.19,14290000,967.19 +1972-08-18,961.39,972.23,957.48,965.83,16150000,965.83 +1972-08-17,964.25,971.25,955.60,961.39,14360000,961.39 +1972-08-16,969.97,974.94,958.46,964.25,14950000,964.25 +1972-08-15,973.51,978.33,962.30,969.97,16670000,969.97 +1972-08-14,964.18,980.21,964.18,973.51,18870000,973.51 +1972-08-11,952.89,966.59,948.75,964.18,16570000,964.18 +1972-08-10,951.16,958.84,945.29,952.89,15260000,952.89 +1972-08-09,952.44,958.99,943.86,951.16,15730000,951.16 +1972-08-08,953.12,958.01,944.31,952.44,14550000,952.44 +1972-08-07,951.76,959.36,945.67,953.12,13220000,953.12 +1972-08-04,947.70,957.10,942.28,951.76,15700000,951.76 +1972-08-03,941.15,953.19,939.12,947.70,19970000,947.70 +1972-08-02,931.07,944.61,931.07,941.15,17920000,941.15 +1972-08-01,924.74,935.36,922.03,930.46,15540000,930.46 +1972-07-31,926.70,932.72,917.37,924.74,11120000,924.74 +1972-07-28,926.85,933.93,920.15,926.70,13050000,926.70 +1972-07-27,932.57,938.37,923.62,926.85,13870000,926.85 +1972-07-26,934.45,940.92,927.60,932.57,14130000,932.57 +1972-07-25,935.36,946.79,930.24,934.45,17180000,934.45 +1972-07-24,922.19,941.98,922.19,935.36,18020000,935.36 +1972-07-21,910.45,923.24,903.90,920.45,14010000,920.45 +1972-07-20,916.69,919.40,905.55,910.45,15050000,910.45 +1972-07-19,911.72,927.00,909.69,916.69,17880000,916.69 +1972-07-18,914.96,917.97,900.06,911.72,16820000,911.72 +1972-07-17,922.26,928.43,912.70,914.96,13170000,914.96 +1972-07-14,916.99,927.83,911.88,922.26,13910000,922.26 +1972-07-13,923.69,926.02,912.93,916.99,14740000,916.99 +1972-07-12,925.87,934.15,919.33,923.69,16150000,923.69 +1972-07-11,932.27,934.90,921.81,925.87,12830000,925.87 +1972-07-10,938.06,943.03,928.73,932.27,11700000,932.27 +1972-07-07,942.13,948.15,932.34,938.06,12900000,938.06 +1972-07-06,934.90,955.45,934.90,942.13,19520000,942.13 +1972-07-05,928.66,939.64,926.25,933.47,14710000,933.47 +1972-07-03,929.03,935.05,922.71,928.66,8140000,928.66 +1972-06-30,926.25,935.81,921.21,929.03,12860000,929.03 +1972-06-29,930.84,932.95,917.75,926.25,14610000,926.25 +1972-06-28,935.28,938.14,925.80,930.84,12140000,930.84 +1972-06-27,936.41,943.33,928.96,935.28,13750000,935.28 +1972-06-26,942.50,942.50,928.13,936.41,12720000,936.41 +1972-06-23,950.71,957.25,939.27,944.69,13940000,944.69 +1972-06-22,951.61,956.58,940.02,950.71,13410000,950.71 +1972-06-21,948.22,959.96,943.63,951.61,15510000,951.61 +1972-06-20,941.83,952.14,940.10,948.22,14970000,948.22 +1972-06-19,945.06,947.62,935.43,941.83,11660000,941.83 +1972-06-16,945.97,949.88,936.94,945.06,13010000,945.06 +1972-06-15,946.79,956.05,940.25,945.97,16940000,945.97 +1972-06-14,938.29,954.24,936.11,946.79,18320000,946.79 +1972-06-13,936.71,943.33,928.88,938.29,15710000,938.29 +1972-06-12,934.45,943.63,930.39,936.71,13390000,936.71 +1972-06-09,941.30,942.88,930.01,934.45,12790000,934.45 +1972-06-08,944.08,953.19,938.82,941.30,13820000,941.30 +1972-06-07,951.46,952.51,938.52,944.08,15220000,944.08 +1972-06-06,954.39,961.02,946.87,951.46,15980000,951.46 +1972-06-05,961.39,964.48,948.52,954.39,13450000,954.39 +1972-06-02,960.72,967.72,954.24,961.39,15400000,961.39 +1972-06-01,960.72,966.36,954.85,960.72,14910000,960.72 +1972-05-31,970.88,970.88,955.52,960.72,15230000,960.72 +1972-05-30,971.25,979.46,966.51,971.18,15810000,971.18 +1972-05-26,969.07,977.42,963.80,971.25,15730000,971.25 +1972-05-25,965.46,975.54,960.57,969.07,16480000,969.07 +1972-05-24,962.30,973.06,958.76,965.46,17870000,965.46 +1972-05-23,965.31,970.05,956.20,962.30,16410000,962.30 +1972-05-22,961.54,972.00,958.76,965.31,16030000,965.31 +1972-05-19,951.23,967.56,950.11,961.54,19580000,961.54 +1972-05-18,941.15,955.67,939.95,951.23,17370000,951.23 +1972-05-17,939.27,944.61,932.95,941.15,13600000,941.15 +1972-05-16,942.20,947.17,934.83,939.27,14070000,939.27 +1972-05-15,941.83,948.45,936.63,942.20,13600000,942.20 +1972-05-12,934.83,947.40,934.23,941.83,13990000,941.83 +1972-05-11,931.07,941.15,925.87,934.83,12900000,934.83 +1972-05-10,925.12,938.06,922.03,931.07,13870000,931.07 +1972-05-09,937.54,937.54,917.37,925.12,19910000,925.12 +1972-05-08,941.23,943.18,930.01,937.84,11250000,937.84 +1972-05-05,937.31,948.30,932.57,941.23,13210000,941.23 +1972-05-04,933.47,942.43,927.60,937.31,14790000,937.31 +1972-05-03,935.20,947.32,927.90,933.47,15900000,933.47 +1972-05-02,942.28,947.32,930.61,935.20,15370000,935.20 +1972-05-01,954.17,956.95,938.59,942.28,12880000,942.28 +1972-04-28,945.97,959.74,944.46,954.17,14160000,954.17 +1972-04-27,946.94,954.92,940.70,945.97,15740000,945.97 +1972-04-26,946.49,954.39,938.29,946.94,17710000,946.94 +1972-04-25,957.48,959.14,943.63,946.49,17030000,946.49 +1972-04-24,963.80,966.59,950.93,957.48,14650000,957.48 +1972-04-21,966.29,974.64,959.21,963.80,18200000,963.80 +1972-04-20,964.78,971.33,954.17,966.29,18190000,966.29 +1972-04-19,968.92,975.92,959.36,964.78,19180000,964.78 +1972-04-18,966.59,977.72,961.62,968.92,19410000,968.92 +1972-04-17,967.72,972.16,959.36,966.59,15390000,966.59 +1972-04-14,965.53,973.06,959.59,967.72,17460000,967.72 +1972-04-13,966.96,973.28,960.42,965.53,17990000,965.53 +1972-04-12,962.60,976.44,960.64,966.96,24690000,966.96 +1972-04-11,958.08,967.79,951.23,962.60,19930000,962.60 +1972-04-10,962.60,970.57,953.42,958.08,19470000,958.08 +1972-04-07,959.44,965.91,950.26,962.60,19900000,962.60 +1972-04-06,954.55,968.24,951.76,959.44,22830000,959.44 +1972-04-05,943.41,958.99,943.33,954.55,22960000,954.55 +1972-04-04,940.92,948.52,933.62,943.41,18110000,943.41 +1972-04-03,940.70,948.75,935.66,940.92,14990000,940.92 +1972-03-30,933.02,943.78,929.79,940.70,14360000,940.70 +1972-03-29,937.01,940.17,925.87,933.02,13860000,933.02 +1972-03-28,939.72,947.02,932.65,937.01,15380000,937.01 +1972-03-27,942.28,946.57,933.77,939.72,12180000,939.72 +1972-03-24,944.69,950.03,937.91,942.28,15390000,942.28 +1972-03-23,933.93,949.20,932.34,944.69,18380000,944.69 +1972-03-22,934.00,938.59,926.78,933.93,15400000,933.93 +1972-03-21,940.32,940.32,925.95,934.00,18610000,934.00 +1972-03-20,942.88,951.84,937.31,941.15,16420000,941.15 +1972-03-17,936.71,949.88,931.52,942.88,16040000,942.88 +1972-03-16,937.31,942.88,927.68,936.71,16700000,936.71 +1972-03-15,934.00,945.44,929.18,937.31,19460000,937.31 +1972-03-14,928.66,938.82,925.35,934.00,22370000,934.00 +1972-03-13,939.87,941.23,924.22,928.66,16730000,928.66 +1972-03-10,942.81,948.60,932.95,939.87,19690000,939.87 +1972-03-09,945.59,950.78,937.61,942.81,21460000,942.81 +1972-03-08,946.87,953.57,937.09,945.59,21290000,945.59 +1972-03-07,950.18,956.20,940.40,946.87,22640000,946.87 +1972-03-06,942.43,957.03,940.47,950.18,21000000,950.18 +1972-03-03,933.77,948.00,930.69,942.43,20420000,942.43 +1972-03-02,935.43,943.78,927.90,933.77,22200000,933.77 +1972-03-01,928.13,943.03,924.14,935.43,23670000,935.43 +1972-02-29,924.29,932.34,916.24,928.13,20320000,928.13 +1972-02-28,922.79,930.31,917.14,924.29,18200000,924.29 +1972-02-25,912.70,927.75,909.39,922.79,18180000,922.79 +1972-02-24,911.88,919.25,906.61,912.70,16000000,912.70 +1972-02-23,913.46,919.85,906.98,911.88,16770000,911.88 +1972-02-22,917.52,922.86,909.17,913.46,16670000,913.46 +1972-02-18,922.03,925.35,911.12,917.52,16590000,917.52 +1972-02-17,922.94,933.25,916.84,922.03,22330000,922.03 +1972-02-16,914.51,928.58,911.65,922.94,20670000,922.94 +1972-02-15,910.90,920.98,906.46,914.51,17770000,914.51 +1972-02-14,917.59,921.96,906.01,910.90,15840000,910.90 +1972-02-11,921.28,924.82,910.52,917.59,17850000,917.59 +1972-02-10,918.72,931.89,914.89,921.28,23460000,921.28 +1972-02-09,907.13,921.81,905.18,918.72,19850000,918.72 +1972-02-08,903.97,910.97,898.18,907.13,17390000,907.13 +1972-02-07,906.68,913.61,898.93,903.97,16930000,903.97 +1972-02-04,903.15,912.10,897.50,906.68,17890000,906.68 +1972-02-03,905.85,910.97,896.30,903.15,19880000,903.15 +1972-02-02,901.79,913.76,896.15,905.85,24070000,905.85 +1972-02-01,902.17,906.23,894.34,901.79,19600000,901.79 +1972-01-31,906.38,911.20,897.05,902.17,18250000,902.17 +1972-01-28,899.83,913.23,896.60,906.38,25000000,906.38 +1972-01-27,889.15,902.92,887.87,899.83,20360000,899.83 +1972-01-26,894.72,897.65,883.43,889.15,14940000,889.15 +1972-01-25,896.82,902.17,887.49,894.72,17570000,894.72 +1972-01-24,907.44,911.20,893.81,896.82,15640000,896.82 +1972-01-21,910.30,913.91,898.93,907.44,18810000,907.44 +1972-01-20,914.96,922.19,906.76,910.30,20210000,910.30 +1972-01-19,917.22,922.34,904.58,914.96,18800000,914.96 +1972-01-18,911.12,923.99,908.94,917.22,21070000,917.22 +1972-01-17,906.68,914.51,902.77,911.12,15860000,911.12 +1972-01-14,905.18,910.82,899.16,906.68,14960000,906.68 +1972-01-13,910.82,912.93,899.98,905.18,16410000,905.18 +1972-01-12,912.10,922.03,906.01,910.82,20970000,910.82 +1972-01-11,907.96,919.02,903.67,912.10,17970000,912.10 +1972-01-10,910.37,914.43,898.48,907.96,15320000,907.96 +1972-01-07,908.49,916.47,903.37,910.37,17140000,910.37 +1972-01-06,904.43,913.83,901.87,908.49,21100000,908.49 +1972-01-05,893.06,910.07,893.06,904.43,21350000,904.43 +1972-01-04,889.30,897.73,882.75,892.23,15190000,892.23 +1972-01-03,890.20,898.71,884.63,889.30,12570000,889.30 +1971-12-31,889.07,895.77,884.48,890.20,14040000,890.20 +1971-12-30,893.66,898.78,883.05,889.07,13810000,889.07 +1971-12-29,889.98,902.47,886.59,893.66,17150000,893.66 +1971-12-28,881.47,892.84,877.18,889.98,15090000,889.98 +1971-12-27,881.17,889.83,875.68,881.47,11890000,881.47 +1971-12-23,884.86,889.98,873.34,881.17,16000000,881.17 +1971-12-22,888.32,893.81,878.54,884.86,18930000,884.86 +1971-12-21,885.01,896.22,875.30,888.32,20460000,888.32 +1971-12-20,876.28,895.17,876.28,885.01,23810000,885.01 +1971-12-17,871.39,879.29,865.29,873.80,18270000,873.80 +1971-12-16,863.76,878.69,863.26,871.39,21070000,871.39 +1971-12-15,855.14,867.84,849.81,863.76,16890000,863.76 +1971-12-14,858.79,864.92,851.12,855.14,16070000,855.14 +1971-12-13,856.75,868.28,852.22,858.79,17020000,858.79 +1971-12-10,852.15,861.86,847.69,856.75,17510000,856.75 +1971-12-09,854.85,858.43,844.55,852.15,14710000,852.15 +1971-12-08,857.40,861.71,847.91,854.85,16650000,854.85 +1971-12-07,855.72,862.44,845.28,857.40,15250000,857.40 +1971-12-06,859.59,872.59,852.58,855.72,17480000,855.72 +1971-12-03,848.79,864.05,845.58,859.59,16760000,859.59 +1971-12-02,846.01,854.70,837.47,848.79,17780000,848.79 +1971-12-01,831.34,851.85,831.12,846.01,21040000,846.01 +1971-11-30,829.73,837.03,819.22,831.34,18320000,831.34 +1971-11-29,816.59,838.57,815.79,829.73,18910000,829.73 +1971-11-26,799.87,818.12,799.87,816.59,10870000,816.59 +1971-11-24,797.97,807.90,793.88,798.63,11870000,798.63 +1971-11-23,803.15,807.10,790.67,797.97,16840000,797.97 +1971-11-22,810.67,817.03,800.89,803.15,11390000,803.15 +1971-11-19,815.35,817.98,804.83,810.67,12420000,810.67 +1971-11-18,822.14,829.66,813.81,815.35,13010000,815.35 +1971-11-17,818.71,825.79,812.13,822.14,12840000,822.14 +1971-11-16,810.53,823.89,806.59,818.71,13300000,818.71 +1971-11-15,812.94,820.68,806.66,810.53,9370000,810.53 +1971-11-12,814.91,821.12,802.21,812.94,14540000,812.94 +1971-11-11,826.15,827.91,810.82,814.91,13310000,814.91 +1971-11-10,837.91,842.22,821.85,826.15,13410000,826.15 +1971-11-09,837.54,845.72,832.21,837.91,12080000,837.91 +1971-11-08,840.39,843.60,832.51,837.54,8520000,837.54 +1971-11-05,843.17,845.94,832.94,840.39,10780000,840.39 +1971-11-04,842.58,855.21,838.49,843.17,15750000,843.17 +1971-11-03,828.34,845.87,828.34,842.58,14590000,842.58 +1971-11-02,825.86,833.53,814.69,827.98,13330000,827.98 +1971-11-01,839.00,840.25,823.21,825.86,10960000,825.86 +1971-10-29,837.62,843.03,831.85,839.00,11710000,839.00 +1971-10-28,836.38,844.63,827.83,837.62,15530000,837.62 +1971-10-27,845.36,846.31,832.29,836.38,13480000,836.38 +1971-10-26,848.50,857.26,842.95,845.36,13390000,845.36 +1971-10-25,852.37,854.63,843.38,848.50,7340000,848.50 +1971-10-22,854.85,863.90,848.57,852.37,14560000,852.37 +1971-10-21,855.65,861.05,846.45,854.85,14990000,854.85 +1971-10-20,868.43,873.39,851.20,855.65,16340000,855.65 +1971-10-19,872.44,874.34,860.11,868.43,13040000,868.43 +1971-10-18,874.58,880.40,868.87,872.44,10420000,872.44 +1971-10-15,878.36,881.64,868.50,874.58,13120000,874.58 +1971-10-14,888.80,889.16,875.22,878.36,12870000,878.36 +1971-10-13,893.55,897.12,885.22,888.80,13540000,888.80 +1971-10-12,891.94,899.61,888.29,893.55,14340000,893.55 +1971-10-11,893.91,896.39,886.32,891.94,7800000,891.94 +1971-10-08,901.80,902.82,890.55,893.91,13870000,893.91 +1971-10-07,900.55,910.56,896.10,901.80,17780000,901.80 +1971-10-06,891.14,902.38,886.90,900.55,15630000,900.55 +1971-10-05,895.66,898.66,885.81,891.14,12360000,891.14 +1971-10-04,893.98,904.42,892.01,895.66,14570000,895.66 +1971-10-01,887.19,898.44,884.49,893.98,13400000,893.98 +1971-09-30,883.83,894.13,878.14,887.19,13490000,887.19 +1971-09-29,884.42,890.41,877.70,883.83,8580000,883.83 +1971-09-28,883.47,891.50,877.77,884.42,11250000,884.42 +1971-09-27,889.31,891.72,877.48,883.47,10220000,883.47 +1971-09-24,891.28,900.26,886.24,889.31,13460000,889.31 +1971-09-23,893.55,899.39,884.64,891.28,13250000,891.28 +1971-09-22,903.40,904.94,891.72,893.55,14250000,893.55 +1971-09-21,905.15,907.78,897.78,903.40,10640000,903.40 +1971-09-20,908.22,911.29,900.19,905.15,9540000,905.15 +1971-09-17,903.11,912.16,901.07,908.22,11020000,908.22 +1971-09-16,904.86,908.81,898.66,903.11,10550000,903.11 +1971-09-15,901.65,907.71,896.25,904.86,11080000,904.86 +1971-09-14,909.39,911.73,898.58,901.65,11410000,901.65 +1971-09-13,911.00,915.67,903.91,909.39,10000000,909.39 +1971-09-10,915.89,916.84,904.42,911.00,11380000,911.00 +1971-09-09,920.93,925.23,912.38,915.89,15790000,915.89 +1971-09-08,916.47,925.67,911.87,920.93,14230000,920.93 +1971-09-07,912.75,925.67,909.75,916.47,17080000,916.47 +1971-09-03,900.63,914.06,899.53,912.75,14040000,912.75 +1971-09-02,899.02,905.37,893.84,900.63,10690000,900.63 +1971-09-01,898.07,906.25,894.20,899.02,10770000,899.02 +1971-08-31,901.43,903.84,892.01,898.07,10430000,898.07 +1971-08-30,908.15,912.53,898.51,901.43,11140000,901.43 +1971-08-27,906.10,915.45,902.02,908.15,12490000,908.15 +1971-08-26,908.37,914.06,898.88,906.10,13990000,906.10 +1971-08-25,904.13,917.79,901.80,908.37,18280000,908.37 +1971-08-24,892.38,909.02,892.09,904.13,18700000,904.13 +1971-08-23,880.99,897.20,880.99,892.38,13040000,892.38 +1971-08-20,880.77,887.27,874.93,880.91,11890000,880.91 +1971-08-19,886.17,889.68,873.90,880.77,14190000,880.77 +1971-08-18,899.90,901.36,882.08,886.17,20680000,886.17 +1971-08-17,888.95,908.66,885.29,899.90,26790000,899.90 +1971-08-16,882.59,906.32,882.59,888.95,31730000,888.95 +1971-08-13,859.01,864.41,851.64,856.02,9960000,856.02 +1971-08-12,848.57,863.46,848.57,859.01,15910000,859.01 +1971-08-11,839.59,851.12,836.96,846.38,11370000,846.38 +1971-08-10,842.65,846.82,834.92,839.59,9460000,839.59 +1971-08-09,850.61,853.46,839.52,842.65,8110000,842.65 +1971-08-06,849.45,855.94,844.70,850.61,9490000,850.61 +1971-08-05,844.92,855.72,841.19,849.45,12100000,849.45 +1971-08-04,850.03,857.70,840.10,844.92,15410000,844.92 +1971-08-03,864.92,865.87,845.94,850.03,13490000,850.03 +1971-08-02,858.43,871.86,857.70,864.92,11870000,864.92 +1971-07-30,861.42,868.50,854.41,858.43,12970000,858.43 +1971-07-29,872.01,873.03,856.97,861.42,14570000,861.42 +1971-07-28,880.70,882.16,868.36,872.01,13940000,872.01 +1971-07-27,888.87,891.28,877.04,880.70,11560000,880.70 +1971-07-26,887.78,895.15,882.96,888.87,9930000,888.87 +1971-07-23,886.68,893.03,880.33,887.78,12370000,887.78 +1971-07-22,890.84,893.55,882.74,886.68,12570000,886.68 +1971-07-21,892.30,896.54,886.61,890.84,11920000,890.84 +1971-07-20,886.39,896.90,885.15,892.30,12540000,892.30 +1971-07-19,888.51,893.47,879.23,886.39,11430000,886.39 +1971-07-16,888.87,898.73,884.71,888.51,13870000,888.51 +1971-07-15,891.21,901.43,885.00,888.87,13080000,888.87 +1971-07-14,892.38,895.88,882.52,891.21,14360000,891.21 +1971-07-13,903.40,906.47,888.80,892.38,13540000,892.38 +1971-07-12,901.80,908.81,896.47,903.40,12020000,903.40 +1971-07-09,900.99,908.73,896.69,901.80,12640000,901.80 +1971-07-08,895.88,906.10,894.20,900.99,13920000,900.99 +1971-07-07,892.30,903.18,888.87,895.88,14520000,895.88 +1971-07-06,890.19,896.83,885.29,892.30,10440000,892.30 +1971-07-02,893.03,895.52,885.73,890.19,9960000,890.19 +1971-07-01,891.14,899.39,886.24,893.03,13090000,893.03 +1971-06-30,882.30,895.66,881.28,891.14,15410000,891.14 +1971-06-29,873.10,887.63,871.20,882.30,14460000,882.30 +1971-06-28,876.68,879.53,866.82,873.10,9810000,873.10 +1971-06-25,877.26,882.45,870.04,876.68,10580000,876.68 +1971-06-24,879.45,885.44,872.01,877.26,11360000,877.26 +1971-06-23,874.42,886.61,870.04,879.45,12640000,879.45 +1971-06-22,876.53,884.56,866.31,874.42,15200000,874.42 +1971-06-21,889.16,890.48,872.74,876.53,16490000,876.53 +1971-06-18,906.25,906.47,887.63,889.16,15040000,889.16 +1971-06-17,908.59,915.08,902.16,906.25,13980000,906.25 +1971-06-16,907.20,915.52,901.29,908.59,14300000,908.59 +1971-06-15,907.71,915.23,899.39,907.20,13550000,907.20 +1971-06-14,916.47,917.79,904.13,907.71,11530000,907.71 +1971-06-11,915.96,923.70,909.68,916.47,12270000,916.47 +1971-06-10,912.46,921.00,907.78,915.96,12450000,915.96 +1971-06-09,915.01,919.54,905.74,912.46,14250000,912.46 +1971-06-08,923.06,925.89,911.95,915.01,13610000,915.01 +1971-06-07,922.15,928.54,917.44,923.06,13800000,923.06 +1971-06-04,921.30,926.78,915.40,922.15,14400000,922.15 +1971-06-03,919.62,929.60,914.63,921.30,18790000,921.30 +1971-06-02,913.65,925.31,911.96,919.62,17740000,919.62 +1971-06-01,907.81,918.49,903.74,913.65,11930000,913.65 +1971-05-28,905.78,912.24,900.58,907.81,11760000,907.81 +1971-05-27,906.41,911.96,899.94,905.78,12610000,905.78 +1971-05-26,906.69,914.91,901.07,906.41,13550000,906.41 +1971-05-25,913.15,913.86,898.61,906.69,16050000,906.69 +1971-05-24,921.87,923.69,911.05,913.15,12060000,913.15 +1971-05-21,923.41,927.84,917.30,921.87,12090000,921.87 +1971-05-20,920.04,931.42,917.93,923.41,11740000,923.41 +1971-05-19,918.56,926.64,913.93,920.04,17640000,920.04 +1971-05-18,921.30,926.64,909.99,918.56,17640000,918.56 +1971-05-17,935.15,935.15,916.60,921.30,15980000,921.30 +1971-05-14,936.34,942.03,930.37,936.06,16430000,936.06 +1971-05-13,937.46,944.63,928.12,936.34,17640000,936.34 +1971-05-12,937.25,943.86,930.65,937.46,15140000,937.46 +1971-05-11,932.55,943.79,927.63,937.25,17730000,937.25 +1971-05-10,936.97,938.87,925.24,932.55,12810000,932.55 +1971-05-07,937.39,941.96,927.35,936.97,16490000,936.97 +1971-05-06,939.92,948.85,933.53,937.39,19300000,937.39 +1971-05-05,938.45,943.02,929.45,939.92,17270000,939.92 +1971-05-04,932.41,942.38,927.42,938.45,17310000,938.45 +1971-05-03,941.75,942.17,923.83,932.41,16120000,932.41 +1971-04-30,948.15,951.31,936.20,941.75,17490000,941.75 +1971-04-29,950.82,957.35,941.75,948.15,20340000,948.15 +1971-04-28,947.09,958.12,941.82,950.82,24820000,950.82 +1971-04-27,944.00,953.63,935.22,947.09,21250000,947.09 +1971-04-26,947.79,953.20,937.46,944.00,18860000,944.00 +1971-04-23,940.63,952.92,934.87,947.79,20150000,947.79 +1971-04-22,941.33,947.65,932.97,940.63,19270000,940.63 +1971-04-21,944.42,949.20,933.39,941.33,17040000,941.33 +1971-04-20,948.85,952.43,940.49,944.42,17880000,944.42 +1971-04-19,940.21,953.49,939.01,948.85,17730000,948.85 +1971-04-16,938.17,945.55,932.55,940.21,18280000,940.21 +1971-04-15,932.55,945.69,930.44,938.17,22540000,938.17 +1971-04-14,927.28,937.96,921.51,932.55,19440000,932.55 +1971-04-13,926.64,935.99,921.51,927.28,23200000,927.28 +1971-04-12,920.39,932.83,917.02,926.64,19410000,926.64 +1971-04-08,918.49,925.94,911.68,920.39,17590000,920.39 +1971-04-07,912.73,925.59,908.94,918.49,22270000,918.49 +1971-04-06,905.07,917.79,901.77,912.73,19990000,912.73 +1971-04-05,903.04,909.99,897.48,905.07,16040000,905.07 +1971-04-02,903.88,910.06,898.96,903.04,14520000,903.04 +1971-04-01,904.37,910.06,898.75,903.88,13470000,903.88 +1971-03-31,903.39,910.98,898.33,904.37,17610000,904.37 +1971-03-30,903.48,909.99,896.78,903.39,15430000,903.39 +1971-03-29,903.48,909.78,896.29,903.48,13650000,903.48 +1971-03-26,900.81,910.32,895.95,903.48,15560000,903.48 +1971-03-25,899.37,903.96,889.03,900.81,15870000,900.81 +1971-03-24,908.89,910.05,896.77,899.37,15770000,899.37 +1971-03-23,910.60,915.32,902.31,908.89,16470000,908.89 +1971-03-22,912.92,917.78,905.53,910.60,14290000,910.60 +1971-03-19,916.83,921.69,908.61,912.92,15150000,912.92 +1971-03-18,914.02,922.30,910.46,916.83,17910000,916.83 +1971-03-17,914.64,918.06,904.16,914.02,17070000,914.02 +1971-03-16,908.20,920.93,908.06,914.64,22270000,914.64 +1971-03-15,898.34,911.21,895.33,908.20,18920000,908.20 +1971-03-12,899.44,903.14,892.25,898.34,14680000,898.34 +1971-03-11,895.88,906.76,890.81,899.44,19830000,899.44 +1971-03-10,899.10,902.59,891.50,895.88,17220000,895.88 +1971-03-09,898.62,906.15,892.25,899.10,20490000,899.10 +1971-03-08,898.00,905.19,891.43,898.62,19340000,898.62 +1971-03-05,891.36,903.61,889.24,898.00,22430000,898.00 +1971-03-04,882.39,894.92,878.01,891.36,17350000,891.36 +1971-03-03,883.01,888.55,876.85,882.39,14680000,882.39 +1971-03-02,882.53,887.94,875.27,883.01,14870000,883.01 +1971-03-01,878.83,887.46,873.22,882.53,13020000,882.53 +1971-02-26,881.98,886.36,870.55,878.83,17250000,878.83 +1971-02-25,875.62,887.53,871.92,881.98,16200000,881.98 +1971-02-24,870.00,881.37,868.29,875.62,15930000,875.62 +1971-02-23,868.98,875.62,861.99,870.00,15080000,870.00 +1971-02-22,877.05,877.05,863.29,868.98,15840000,868.98 +1971-02-19,885.06,886.50,875.00,878.56,17860000,878.56 +1971-02-18,887.87,891.16,877.67,885.06,16650000,885.06 +1971-02-17,890.06,894.78,879.38,887.87,18720000,887.87 +1971-02-16,888.83,898.14,882.26,890.06,21350000,890.06 +1971-02-12,885.34,894.03,881.30,888.83,18470000,888.83 +1971-02-11,881.09,891.02,878.77,885.34,19260000,885.34 +1971-02-10,879.79,884.99,869.04,881.09,19040000,881.09 +1971-02-09,882.12,889.17,874.79,879.79,28250000,879.79 +1971-02-08,876.57,885.47,870.41,882.12,25590000,882.12 +1971-02-05,874.79,882.67,868.22,876.57,20480000,876.57 +1971-02-04,876.23,880.07,868.29,874.79,20860000,874.79 +1971-02-03,874.59,880.61,866.51,876.23,21680000,876.23 +1971-02-02,877.81,882.39,868.09,874.59,22030000,874.59 +1971-02-01,868.50,882.19,866.03,877.81,20650000,877.81 +1971-01-29,865.14,873.49,860.15,868.50,20960000,868.50 +1971-01-28,860.83,869.11,853.92,865.14,18840000,865.14 +1971-01-27,866.79,867.47,853.85,860.83,20640000,860.83 +1971-01-26,865.62,873.84,859.19,866.79,21380000,866.79 +1971-01-25,861.31,870.48,855.28,865.62,19050000,865.62 +1971-01-22,854.74,866.58,854.46,861.31,21680000,861.31 +1971-01-21,849.95,859.60,845.08,854.74,19060000,854.74 +1971-01-20,849.47,856.24,842.96,849.95,18330000,849.95 +1971-01-19,847.82,853.78,841.87,849.47,15800000,849.47 +1971-01-18,845.70,854.39,841.25,847.82,15400000,847.82 +1971-01-15,843.31,853.37,838.72,845.70,18010000,845.70 +1971-01-14,841.11,849.26,832.97,843.31,17600000,843.31 +1971-01-13,844.19,853.44,835.57,841.11,19070000,841.11 +1971-01-12,837.21,849.19,834.68,844.19,17820000,844.19 +1971-01-11,837.01,841.46,828.31,837.21,14720000,837.21 +1971-01-08,837.83,843.31,831.94,837.01,14100000,837.01 +1971-01-07,837.97,843.78,832.42,837.83,16460000,837.83 +1971-01-06,835.77,843.92,831.67,837.97,16960000,837.97 +1971-01-05,830.57,840.09,827.35,835.77,12600000,835.77 +1971-01-04,838.92,839.06,826.53,830.57,10010000,830.57 +1970-12-31,841.32,844.95,832.56,838.92,13390000,838.92 +1970-12-30,842.00,848.23,836.05,841.32,19140000,841.32 +1970-12-29,830.91,844.19,828.04,842.00,17750000,842.00 +1970-12-28,828.38,834.75,824.07,830.91,12290000,830.91 +1970-12-24,823.11,831.67,820.65,828.38,12140000,828.38 +1970-12-23,822.77,830.16,816.54,823.11,15400000,823.11 +1970-12-22,821.54,828.93,815.65,822.77,14510000,822.77 +1970-12-21,822.77,828.45,815.31,821.54,12690000,821.54 +1970-12-18,822.15,828.79,815.51,822.77,14360000,822.77 +1970-12-17,819.07,826.94,815.85,822.15,13660000,822.15 +1970-12-16,819.62,823.52,810.17,819.07,14240000,819.07 +1970-12-15,823.18,826.12,813.25,819.62,13420000,819.62 +1970-12-14,825.92,832.28,818.66,823.18,13810000,823.18 +1970-12-11,821.06,831.67,818.18,825.92,15790000,825.92 +1970-12-10,815.24,824.75,811.68,821.06,14610000,821.06 +1970-12-09,815.10,819.96,806.27,815.24,13550000,815.24 +1970-12-08,818.66,822.49,809.69,815.10,14370000,815.10 +1970-12-07,816.06,823.59,810.24,818.66,15530000,818.66 +1970-12-04,808.53,819.07,801.34,816.06,15980000,816.06 +1970-12-03,802.64,816.88,801.48,808.53,20480000,808.53 +1970-12-02,794.29,805.72,787.86,802.64,17960000,802.64 +1970-12-01,794.09,805.65,787.45,794.29,20170000,794.29 +1970-11-30,781.35,797.51,780.26,794.09,17700000,794.09 +1970-11-27,774.71,783.61,771.15,781.35,10130000,781.35 +1970-11-25,772.73,780.94,768.48,774.71,13490000,774.71 +1970-11-24,767.52,775.60,762.60,772.73,12560000,772.73 +1970-11-23,761.57,773.41,759.79,767.52,12720000,767.52 +1970-11-20,755.82,764.10,752.19,761.57,10920000,761.57 +1970-11-19,754.24,760.47,749.52,755.82,9280000,755.82 +1970-11-18,760.47,761.77,751.78,754.24,9850000,754.24 +1970-11-17,760.13,768.48,756.37,760.47,9450000,760.47 +1970-11-16,759.79,764.99,752.46,760.13,9160000,760.13 +1970-11-13,767.94,767.94,755.61,759.79,11890000,759.79 +1970-11-12,779.50,781.76,765.88,768.00,12520000,768.00 +1970-11-11,777.38,788.75,776.29,779.50,13520000,779.50 +1970-11-10,777.66,783.00,773.34,777.38,12030000,777.38 +1970-11-09,771.97,782.38,769.85,777.66,10890000,777.66 +1970-11-06,771.56,777.38,765.81,771.97,9970000,771.97 +1970-11-05,770.81,775.94,765.68,771.56,10800000,771.56 +1970-11-04,768.07,777.25,764.92,770.81,12180000,770.81 +1970-11-03,758.01,771.50,756.02,768.07,11760000,768.07 +1970-11-02,755.61,762.25,750.68,758.01,9470000,758.01 +1970-10-30,753.56,759.38,748.36,755.61,10520000,755.61 +1970-10-29,755.96,760.34,749.45,753.56,10440000,753.56 +1970-10-28,754.45,759.31,746.71,755.96,10660000,755.96 +1970-10-27,756.43,759.38,750.21,754.45,9680000,754.45 +1970-10-26,759.38,764.24,753.42,756.43,9200000,756.43 +1970-10-23,757.87,764.03,753.90,759.38,10270000,759.38 +1970-10-22,759.65,763.28,753.22,757.87,9000000,757.87 +1970-10-21,758.83,769.24,756.64,759.65,11330000,759.65 +1970-10-20,756.50,764.03,750.82,758.83,10630000,758.83 +1970-10-19,763.35,766.09,753.29,756.50,9890000,756.50 +1970-10-16,767.87,771.70,759.10,763.35,11300000,763.35 +1970-10-15,762.73,773.27,760.88,767.87,11250000,767.87 +1970-10-14,760.06,767.25,754.72,762.73,9920000,762.73 +1970-10-13,764.24,767.11,754.38,760.06,9500000,760.06 +1970-10-12,768.69,770.47,758.42,764.24,8570000,764.24 +1970-10-09,777.04,780.46,764.72,768.69,13980000,768.69 +1970-10-08,783.68,789.29,773.48,777.04,14500000,777.04 +1970-10-07,782.45,788.47,771.22,783.68,15610000,783.68 +1970-10-06,776.70,791.07,773.62,782.45,20240000,782.45 +1970-10-05,766.16,780.53,763.76,776.70,19760000,776.70 +1970-10-02,760.68,769.72,756.43,766.16,15420000,766.16 +1970-10-01,760.68,764.79,754.38,760.68,9700000,760.68 +1970-09-30,760.88,766.91,754.79,760.68,14830000,760.68 +1970-09-29,758.97,766.09,749.66,760.88,17880000,760.88 +1970-09-28,761.77,764.65,750.68,758.97,14390000,758.97 +1970-09-25,759.31,767.39,754.65,761.77,20470000,761.77 +1970-09-24,754.38,764.99,749.04,759.31,21340000,759.31 +1970-09-23,747.47,762.32,744.25,754.38,16940000,754.38 +1970-09-22,751.92,753.15,741.51,747.47,12110000,747.47 +1970-09-21,758.49,763.96,748.22,751.92,12540000,751.92 +1970-09-18,757.67,766.29,751.92,758.49,15900000,758.49 +1970-09-17,754.31,766.29,751.57,757.67,15530000,757.67 +1970-09-16,750.55,759.45,744.18,754.31,12090000,754.31 +1970-09-15,757.05,757.05,745.14,750.55,9830000,750.55 +1970-09-14,761.84,766.84,751.37,757.12,11900000,757.12 +1970-09-11,760.75,767.32,755.48,761.84,12140000,761.84 +1970-09-10,766.43,768.69,754.65,760.75,11900000,760.75 +1970-09-09,773.14,776.97,759.31,766.43,16250000,766.43 +1970-09-08,771.15,778.27,759.99,773.14,17110000,773.14 +1970-09-04,765.27,775.12,761.91,771.15,15360000,771.15 +1970-09-03,756.64,770.33,755.89,765.27,14110000,765.27 +1970-09-02,758.15,760.13,748.43,756.64,9710000,756.64 +1970-09-01,764.58,766.16,754.93,758.15,10960000,758.15 +1970-08-31,765.81,770.67,759.86,764.58,10740000,764.58 +1970-08-28,759.79,772.04,756.37,765.81,13820000,765.81 +1970-08-27,760.47,766.84,752.53,759.79,12440000,759.79 +1970-08-26,758.97,769.78,755.34,760.47,15970000,760.47 +1970-08-25,759.58,764.17,747.47,758.97,17520000,758.97 +1970-08-24,747.19,765.68,747.19,759.58,18910000,759.58 +1970-08-21,729.60,748.84,728.78,745.41,13420000,745.41 +1970-08-20,723.99,732.82,717.76,729.60,10170000,729.60 +1970-08-19,716.66,728.92,715.09,723.99,9870000,723.99 +1970-08-18,709.47,721.11,709.47,716.66,9500000,716.66 +1970-08-17,710.84,713.92,704.41,709.06,6940000,709.06 +1970-08-14,707.35,715.84,704.75,710.84,7850000,710.84 +1970-08-13,710.64,713.51,702.83,707.35,8640000,707.35 +1970-08-12,712.55,716.87,707.83,710.64,7440000,710.64 +1970-08-11,713.92,716.73,706.39,712.55,7330000,712.55 +1970-08-10,725.01,725.01,709.95,713.92,7580000,713.92 +1970-08-07,722.82,731.93,718.03,725.70,9370000,725.70 +1970-08-06,724.81,728.92,716.86,722.82,7560000,722.82 +1970-08-05,725.90,732.06,719.67,724.81,7660000,724.81 +1970-08-04,722.96,728.85,714.88,725.90,8310000,725.90 +1970-08-03,734.12,734.67,718.65,722.96,7650000,722.96 +1970-07-31,734.73,743.36,728.23,734.12,11640000,734.12 +1970-07-30,735.56,740.07,728.78,734.73,10430000,734.73 +1970-07-29,731.45,742.40,729.39,735.56,12580000,735.56 +1970-07-28,730.08,735.49,724.40,731.45,9040000,731.45 +1970-07-27,730.22,735.01,724.53,730.08,7460000,730.08 +1970-07-24,732.68,736.58,722.96,730.22,9520000,730.22 +1970-07-23,724.67,737.88,718.44,732.68,12460000,732.68 +1970-07-22,722.07,735.01,716.25,724.67,12460000,724.67 +1970-07-21,733.91,734.12,717.96,722.07,9940000,722.07 +1970-07-20,735.08,743.36,728.64,733.91,11660000,733.91 +1970-07-17,725.49,739.46,725.49,735.08,13870000,735.08 +1970-07-16,712.14,730.76,712.14,723.44,12200000,723.44 +1970-07-15,703.04,716.32,699.48,711.66,8860000,711.66 +1970-07-14,702.22,707.69,696.40,703.04,7360000,703.04 +1970-07-13,700.10,709.34,696.19,702.22,7450000,702.22 +1970-07-10,692.77,704.41,689.69,700.10,10160000,700.10 +1970-07-09,682.09,697.63,681.48,692.77,12820000,692.77 +1970-07-08,669.36,684.08,666.00,682.09,10970000,682.09 +1970-07-07,675.66,679.90,665.32,669.36,10470000,669.36 +1970-07-06,689.14,689.90,671.69,675.66,9340000,675.66 +1970-07-02,687.64,697.02,684.76,689.14,8440000,689.14 +1970-07-01,683.53,692.02,678.26,687.64,8610000,687.64 +1970-06-30,682.91,692.36,679.08,683.53,9280000,683.53 +1970-06-29,687.84,691.13,679.15,682.91,8770000,682.91 +1970-06-26,693.59,700.51,686.06,687.84,9160000,687.84 +1970-06-25,692.29,701.60,686.40,693.59,8200000,693.59 +1970-06-24,698.11,705.37,685.31,692.29,12630000,692.29 +1970-06-23,716.11,716.66,696.40,698.11,10790000,698.11 +1970-06-22,720.43,723.17,707.15,716.11,8700000,716.11 +1970-06-19,713.65,728.23,713.65,720.43,10980000,720.43 +1970-06-18,704.68,718.92,696.95,712.69,8870000,712.69 +1970-06-17,706.26,715.36,699.55,704.68,9870000,704.68 +1970-06-16,687.36,711.80,686.88,706.26,11330000,706.26 +1970-06-15,684.21,694.82,679.83,687.36,6920000,687.36 +1970-06-12,684.42,688.66,674.90,684.21,8890000,684.21 +1970-06-11,694.35,695.44,677.85,684.42,7770000,684.42 +1970-06-10,700.16,703.24,690.03,694.35,7240000,694.35 +1970-06-09,700.23,705.64,695.17,700.16,7050000,700.16 +1970-06-08,695.03,709.75,689.83,700.23,8040000,700.23 +1970-06-05,706.53,707.56,687.91,695.03,12450000,695.03 +1970-06-04,713.86,723.92,704.41,706.53,14380000,706.53 +1970-06-03,709.61,721.73,702.22,713.86,16600000,713.86 +1970-06-02,710.36,719.13,698.32,709.61,13480000,709.61 +1970-06-01,700.44,715.64,694.14,710.36,15020000,710.36 +1970-05-29,684.15,703.86,673.06,700.44,14630000,700.44 +1970-05-28,666.96,690.92,666.96,684.15,18910000,684.15 +1970-05-27,631.98,668.81,631.98,663.20,17460000,663.20 +1970-05-26,641.36,649.64,627.46,631.16,17030000,631.16 +1970-05-25,660.80,660.80,639.10,641.36,12660000,641.36 +1970-05-22,665.25,675.11,653.27,662.17,12170000,662.17 +1970-05-21,676.55,676.62,654.37,665.25,16710000,665.25 +1970-05-20,690.72,690.72,674.56,676.55,13020000,676.55 +1970-05-19,702.81,704.20,689.62,691.40,9480000,691.40 +1970-05-18,702.22,709.74,695.35,702.81,8280000,702.81 +1970-05-15,684.79,705.58,680.37,702.22,14570000,702.22 +1970-05-14,693.57,693.57,673.51,684.79,13920000,684.79 +1970-05-13,703.80,703.80,686.64,693.84,10720000,693.84 +1970-05-12,710.07,715.15,699.31,704.59,10850000,704.59 +1970-05-11,717.73,721.03,707.04,710.07,6650000,710.07 +1970-05-08,723.07,725.51,713.04,717.73,6930000,717.73 +1970-05-07,718.39,730.33,713.37,723.07,9530000,723.07 +1970-05-06,709.74,731.19,707.76,718.39,14380000,718.39 +1970-05-05,714.56,720.63,704.46,709.74,10580000,709.74 +1970-05-04,732.38,732.38,710.40,714.56,11450000,714.56 +1970-05-01,736.07,740.76,723.60,733.63,8290000,733.63 +1970-04-30,737.39,745.58,728.48,736.07,9880000,736.07 +1970-04-29,724.33,740.03,716.74,737.39,15800000,737.39 +1970-04-28,735.15,740.76,720.70,724.33,12620000,724.33 +1970-04-27,747.29,750.46,731.72,735.15,10240000,735.15 +1970-04-24,750.59,754.42,742.21,747.29,10410000,747.29 +1970-04-23,760.63,760.63,745.45,750.59,11050000,750.59 +1970-04-22,772.51,774.35,758.51,762.61,10780000,762.61 +1970-04-21,775.87,783.00,769.87,772.51,8490000,772.51 +1970-04-20,775.94,780.56,769.67,775.87,8280000,775.87 +1970-04-17,775.87,781.22,766.96,775.94,10990000,775.94 +1970-04-16,782.60,787.22,773.03,775.87,10250000,775.87 +1970-04-15,780.56,788.87,777.06,782.60,9410000,782.60 +1970-04-14,785.90,787.35,772.90,780.56,10840000,780.56 +1970-04-13,790.46,793.82,782.07,785.90,8810000,785.90 +1970-04-10,792.50,797.25,785.04,790.46,10020000,790.46 +1970-04-09,791.64,798.84,786.96,792.50,9060000,792.50 +1970-04-08,791.64,796.00,787.42,791.64,9070000,791.64 +1970-04-07,791.18,797.12,785.70,791.64,8490000,791.64 +1970-04-06,791.84,796.07,786.30,791.18,8380000,791.18 +1970-04-03,792.37,796.40,787.02,791.84,9920000,791.84 +1970-04-02,792.04,797.91,787.02,792.37,10520000,792.37 +1970-04-01,785.57,795.67,784.05,792.04,9810000,792.04 +1970-03-31,784.65,789.20,778.38,785.57,8370000,785.57 +1970-03-30,791.05,792.37,779.17,784.65,9600000,784.65 +1970-03-26,790.13,797.45,785.24,791.05,11350000,791.05 +1970-03-25,775.67,803.26,775.67,790.13,17500000,790.13 +1970-03-24,764.52,776.99,764.52,773.76,8840000,773.76 +1970-03-23,763.66,768.41,757.99,763.60,7330000,763.60 +1970-03-20,764.98,768.55,758.91,763.66,7910000,763.66 +1970-03-19,767.95,773.76,761.55,764.98,8930000,764.98 +1970-03-18,767.42,775.67,763.93,767.95,9790000,767.95 +1970-03-17,765.05,773.36,759.17,767.42,9090000,767.42 +1970-03-16,772.11,772.84,760.16,765.05,8910000,765.05 +1970-03-13,776.47,779.30,768.02,772.11,9560000,772.11 +1970-03-12,778.12,781.55,771.77,776.47,9140000,776.47 +1970-03-11,779.70,785.84,774.29,778.12,9180000,778.12 +1970-03-10,778.31,785.37,772.18,779.70,9450000,779.70 +1970-03-09,784.12,785.57,773.56,778.31,9760000,778.31 +1970-03-06,787.55,789.93,779.37,784.12,10980000,784.12 +1970-03-05,788.15,795.54,783.13,787.55,11370000,787.55 +1970-03-04,787.42,795.54,782.27,788.15,11850000,788.15 +1970-03-03,780.23,790.52,775.08,787.42,11700000,787.42 +1970-03-02,777.59,790.52,774.49,780.23,12270000,780.23 +1970-02-27,764.45,784.19,762.61,777.59,12890000,777.59 +1970-02-26,768.28,770.53,755.48,764.45,11540000,764.45 +1970-02-25,754.42,772.70,749.47,768.28,13210000,768.28 +1970-02-24,757.46,761.68,748.88,754.42,10810000,754.42 +1970-02-20,757.92,764.45,749.34,757.46,10790000,757.46 +1970-02-19,756.80,766.90,751.58,757.92,12890000,757.92 +1970-02-18,747.43,762.61,745.45,756.80,11950000,756.80 +1970-02-17,753.70,757.13,741.09,747.43,10140000,747.43 +1970-02-16,753.30,761.09,748.02,753.70,19780000,753.70 +1970-02-13,755.61,758.65,745.97,753.30,11060000,753.30 +1970-02-12,757.33,762.28,748.88,755.61,10010000,755.61 +1970-02-11,746.63,760.69,739.90,757.33,12260000,757.33 +1970-02-10,755.68,758.51,743.20,746.63,10110000,746.63 +1970-02-09,752.77,764.92,750.40,755.68,10830000,755.68 +1970-02-06,750.26,758.71,744.98,752.77,10150000,752.77 +1970-02-05,754.49,756.73,743.33,750.26,9430000,750.26 +1970-02-04,757.46,765.97,748.09,754.49,11040000,754.49 +1970-02-03,746.44,764.45,738.78,757.46,16050000,757.46 +1970-02-02,744.06,756.47,739.37,746.44,13440000,746.44 +1970-01-30,748.35,756.20,739.11,744.06,12320000,744.06 +1970-01-29,758.84,760.69,743.73,748.35,12210000,748.35 +1970-01-28,763.99,769.87,755.74,758.84,10510000,758.84 +1970-01-27,768.88,773.03,757.92,763.99,9630000,763.99 +1970-01-26,775.54,777.52,762.54,768.88,10670000,768.88 +1970-01-23,786.10,789.40,774.35,775.54,11000000,775.54 +1970-01-22,782.27,793.16,777.39,786.10,11050000,786.10 +1970-01-21,777.85,788.61,773.96,782.27,9880000,782.27 +1970-01-20,776.07,783.13,770.72,777.85,11050000,777.85 +1970-01-19,782.60,784.52,772.18,776.07,9500000,776.07 +1970-01-16,785.04,791.97,778.25,782.60,11940000,782.60 +1970-01-15,787.16,791.25,777.98,785.04,11120000,785.04 +1970-01-14,788.01,796.73,780.36,787.16,10380000,787.16 +1970-01-13,790.52,796.79,782.47,788.01,9870000,788.01 +1970-01-12,798.11,799.23,786.30,790.52,8900000,790.52 +1970-01-09,802.07,805.70,794.35,798.11,9380000,798.11 +1970-01-08,801.81,809.33,796.92,802.07,10670000,802.07 +1970-01-07,803.66,808.47,796.20,801.81,10010000,801.81 +1970-01-06,811.31,814.08,798.71,803.66,11460000,803.66 +1970-01-05,809.20,819.23,804.84,811.31,11490000,811.31 +1970-01-02,800.36,813.56,797.32,809.20,8050000,809.20 +1969-12-31,794.68,806.69,792.24,800.36,19380000,800.36 +1969-12-30,792.37,799.63,786.30,794.68,15790000,794.68 +1969-12-29,797.65,803.19,787.62,792.37,12500000,792.37 +1969-12-26,794.15,802.47,790.85,797.65,6750000,797.65 +1969-12-24,783.79,799.63,782.67,794.15,11670000,794.15 +1969-12-23,785.97,789.66,776.27,783.79,13890000,783.79 +1969-12-22,789.86,796.13,781.48,785.97,12680000,785.97 +1969-12-19,783.79,798.18,780.76,789.86,15420000,789.86 +1969-12-18,769.93,788.87,764.45,783.79,15950000,783.79 +1969-12-17,773.83,780.16,765.71,769.93,12840000,769.93 +1969-12-16,784.05,787.42,770.46,773.83,11880000,773.83 +1969-12-15,786.69,791.97,779.63,784.05,11100000,784.05 +1969-12-12,783.53,794.61,780.23,786.69,11630000,786.69 +1969-12-11,783.99,791.25,778.38,783.53,10430000,783.53 +1969-12-10,783.79,791.51,773.76,783.99,12590000,783.99 +1969-12-09,785.04,794.42,778.18,783.79,12290000,783.79 +1969-12-08,793.03,797.32,781.48,785.04,9990000,785.04 +1969-12-05,796.53,804.05,788.94,793.03,11150000,793.03 +1969-12-04,793.36,801.15,783.86,796.53,13230000,796.53 +1969-12-03,801.35,804.78,789.93,793.36,11300000,793.36 +1969-12-02,805.04,808.34,794.94,801.35,9940000,801.35 +1969-12-01,812.30,816.39,802.20,805.04,9950000,805.04 +1969-11-28,810.52,818.57,805.37,812.30,8550000,812.30 +1969-11-26,807.29,814.15,800.36,810.52,10630000,810.52 +1969-11-25,812.90,818.37,803.92,807.29,11560000,807.29 +1969-11-24,823.13,825.96,808.01,812.90,10940000,812.90 +1969-11-21,831.18,832.43,820.35,823.13,9840000,823.13 +1969-11-20,839.96,840.28,823.98,831.18,12010000,831.18 +1969-11-19,845.17,848.60,835.93,839.96,11240000,839.96 +1969-11-18,842.53,848.67,836.99,845.17,11010000,845.17 +1969-11-17,849.26,851.04,837.45,842.53,10120000,842.53 +1969-11-14,849.85,854.74,842.00,849.26,10580000,849.26 +1969-11-13,855.99,858.90,844.64,849.85,12090000,849.85 +1969-11-12,859.75,863.98,851.70,855.99,12480000,855.99 +1969-11-11,863.05,866.62,853.62,859.75,10080000,859.75 +1969-11-10,860.48,871.77,856.65,863.05,12490000,863.05 +1969-11-07,855.20,867.28,850.38,860.48,13280000,860.48 +1969-11-06,854.08,859.82,846.49,855.20,11110000,855.20 +1969-11-05,853.48,862.59,847.54,854.08,12110000,854.08 +1969-11-04,854.54,859.82,841.67,853.48,12340000,853.48 +1969-11-03,855.99,860.68,847.41,854.54,11140000,854.54 +1969-10-31,850.51,860.61,845.04,855.99,13100000,855.99 +1969-10-30,848.34,854.28,839.82,850.51,12820000,850.51 +1969-10-29,855.86,858.83,845.37,848.34,12380000,848.34 +1969-10-28,860.28,865.23,851.90,855.86,12410000,855.86 +1969-10-27,862.26,866.95,852.56,860.28,12160000,860.28 +1969-10-24,855.73,868.00,851.31,862.26,15430000,862.26 +1969-10-23,860.35,863.38,845.23,855.73,14780000,855.73 +1969-10-22,846.88,864.37,844.90,860.35,19320000,860.35 +1969-10-21,839.23,850.78,834.94,846.88,16460000,846.88 +1969-10-20,836.06,844.18,829.59,839.23,13540000,839.23 +1969-10-17,838.77,845.23,829.73,836.06,13740000,836.06 +1969-10-16,830.06,848.14,825.50,838.77,19500000,838.77 +1969-10-15,832.43,837.12,823.13,830.06,15740000,830.06 +1969-10-14,821.21,839.49,821.21,832.43,19950000,832.43 +1969-10-13,806.96,820.88,804.51,819.30,13620000,819.30 +1969-10-10,803.79,813.23,799.89,806.96,12210000,806.96 +1969-10-09,802.20,808.94,793.95,803.79,10420000,803.79 +1969-10-08,806.23,809.79,797.65,802.20,10370000,802.20 +1969-10-07,809.40,813.23,803.13,806.23,10050000,806.23 +1969-10-06,808.41,814.94,802.73,809.40,9180000,809.40 +1969-10-03,811.84,819.76,803.59,808.41,12410000,808.41 +1969-10-02,806.89,815.87,797.78,811.84,11430000,811.84 +1969-10-01,813.09,814.48,803.37,806.89,9090000,806.89 +1969-09-30,818.04,821.67,808.54,813.09,9180000,813.09 +1969-09-29,824.18,826.03,811.05,818.04,10170000,818.04 +1969-09-26,829.92,832.83,820.09,824.18,9680000,824.18 +1969-09-25,834.68,838.50,826.49,829.92,10690000,829.92 +1969-09-24,834.81,840.48,829.53,834.68,11320000,834.68 +1969-09-23,831.77,841.80,827.28,834.81,13030000,834.81 +1969-09-22,830.39,835.80,823.79,831.77,9280000,831.77 +1969-09-19,831.57,837.32,825.30,830.39,12270000,830.39 +1969-09-18,826.56,836.66,822.80,831.57,11170000,831.57 +1969-09-17,831.64,835.47,821.61,826.56,10980000,826.56 +1969-09-16,830.45,836.85,824.84,831.64,11160000,831.64 +1969-09-15,824.25,835.73,821.28,830.45,10680000,830.45 +1969-09-12,825.77,830.65,818.37,824.25,10800000,824.25 +1969-09-11,828.01,838.50,821.94,825.77,12370000,825.77 +1969-09-10,815.67,831.71,813.69,828.01,11490000,828.01 +1969-09-09,811.84,822.20,804.45,815.67,10980000,815.67 +1969-09-08,819.50,820.55,808.67,811.84,8310000,811.84 +1969-09-05,825.30,826.82,816.46,819.50,8890000,819.50 +1969-09-04,835.67,835.67,822.20,825.30,9380000,825.30 +1969-09-03,837.78,841.61,829.86,835.67,8760000,835.67 +1969-09-02,836.72,845.96,831.31,837.78,8560000,837.78 +1969-08-29,828.41,839.96,825.37,836.72,8850000,836.72 +1969-08-28,824.78,832.23,822.14,828.41,7730000,828.41 +1969-08-27,823.52,830.39,819.43,824.78,9100000,824.78 +1969-08-26,830.39,830.39,818.84,823.52,8910000,823.52 +1969-08-25,837.25,841.54,828.01,831.44,8410000,831.44 +1969-08-22,834.87,843.72,829.33,837.25,10140000,837.25 +1969-08-21,833.22,839.69,828.60,834.87,8420000,834.87 +1969-08-20,833.69,837.91,827.55,833.22,9680000,833.22 +1969-08-19,827.68,841.28,824.97,833.69,12640000,833.69 +1969-08-18,820.88,830.39,816.46,827.68,9420000,827.68 +1969-08-15,813.23,825.17,810.52,820.88,10210000,820.88 +1969-08-14,809.13,818.11,805.37,813.23,9690000,813.23 +1969-08-13,812.96,815.07,800.62,809.13,9910000,809.13 +1969-08-12,819.83,821.54,810.39,812.96,7870000,812.96 +1969-08-11,824.46,826.76,816.33,819.83,6680000,819.83 +1969-08-08,826.27,830.27,819.87,824.46,8760000,824.46 +1969-08-07,825.88,832.02,820.26,826.27,9450000,826.27 +1969-08-06,821.23,831.63,817.67,825.88,11100000,825.88 +1969-08-05,822.58,827.30,813.40,821.23,8940000,821.23 +1969-08-04,826.59,835.06,817.61,822.58,10700000,822.58 +1969-08-01,815.60,833.63,815.60,826.59,15070000,826.59 +1969-07-31,803.58,819.87,800.67,815.47,14160000,815.47 +1969-07-30,801.96,809.40,788.07,803.58,15580000,803.58 +1969-07-29,806.23,817.86,798.41,801.96,13630000,801.96 +1969-07-28,818.06,819.48,803.26,806.23,11800000,806.23 +1969-07-25,826.53,830.08,814.83,818.06,9800000,818.06 +1969-07-24,827.95,834.22,821.10,826.53,9750000,826.53 +1969-07-23,834.02,836.48,821.35,827.95,11680000,827.95 +1969-07-22,845.92,851.54,831.76,834.02,9780000,834.02 +1969-07-18,853.09,853.54,839.06,845.92,8590000,845.92 +1969-07-17,849.34,863.04,845.79,853.09,10450000,853.09 +1969-07-16,841.13,854.64,840.29,849.34,10470000,849.34 +1969-07-15,843.14,847.60,832.79,841.13,11110000,841.13 +1969-07-14,852.25,855.93,841.07,843.14,8310000,843.14 +1969-07-11,847.79,858.91,844.49,852.25,11730000,852.25 +1969-07-10,861.04,861.04,844.30,847.79,11450000,847.79 +1969-07-09,870.35,871.06,857.94,861.62,9320000,861.62 +1969-07-08,880.82,880.82,866.47,870.35,9320000,870.35 +1969-07-07,886.12,893.87,879.27,883.21,9970000,883.21 +1969-07-03,880.69,891.55,877.71,886.12,10110000,886.12 +1969-07-02,875.90,884.69,872.87,880.69,11350000,880.69 +1969-07-01,873.19,881.27,867.83,875.90,9890000,875.90 +1969-06-30,869.76,880.69,867.18,873.19,8640000,873.19 +1969-06-27,870.28,876.49,863.56,869.76,9020000,869.76 +1969-06-26,874.10,876.16,862.78,870.28,10310000,870.28 +1969-06-25,877.20,884.69,870.41,874.10,10490000,874.10 +1969-06-24,870.86,883.73,869.25,877.20,11460000,877.20 +1969-06-23,876.16,880.75,862.46,870.86,12900000,870.86 +1969-06-20,882.37,888.77,873.32,876.16,11360000,876.16 +1969-06-19,887.09,889.54,877.46,882.37,11160000,882.37 +1969-06-18,885.73,897.10,882.30,887.09,11290000,887.09 +1969-06-17,891.16,893.29,876.55,885.73,12210000,885.73 +1969-06-16,894.84,902.79,888.83,891.16,10400000,891.16 +1969-06-13,892.58,902.28,886.89,894.84,13070000,894.84 +1969-06-12,904.60,906.22,890.71,892.58,11790000,892.58 +1969-06-11,912.49,913.39,899.24,904.60,13640000,904.60 +1969-06-10,918.05,922.83,909.32,912.49,10660000,912.49 +1969-06-09,924.77,925.48,911.91,918.05,10650000,918.05 +1969-06-06,930.71,936.14,921.41,924.77,12520000,924.77 +1969-06-05,928.84,937.24,925.35,930.71,12350000,930.71 +1969-06-04,930.78,936.47,925.87,928.84,10840000,928.84 +1969-06-03,933.17,937.56,925.74,930.78,11190000,930.78 +1969-06-02,937.56,938.73,927.68,933.17,9180000,933.17 +1969-05-29,936.92,944.29,931.62,937.56,11770000,937.56 +1969-05-28,938.66,941.96,928.58,936.92,11330000,936.92 +1969-05-27,946.94,950.23,934.33,938.66,10580000,938.66 +1969-05-26,947.45,954.05,942.22,946.94,9030000,946.94 +1969-05-23,950.04,953.92,942.48,947.45,10900000,947.45 +1969-05-22,951.78,963.09,946.10,950.04,13710000,950.04 +1969-05-21,949.26,956.18,941.31,951.78,12100000,951.78 +1969-05-20,959.02,959.86,944.35,949.26,10280000,949.26 +1969-05-19,967.30,968.98,954.56,959.02,9790000,959.02 +1969-05-16,965.16,971.56,959.80,967.30,12280000,967.30 +1969-05-15,968.85,973.18,958.51,965.16,11930000,965.16 +1969-05-14,962.97,974.92,959.86,968.85,14360000,968.85 +1969-05-13,957.86,967.62,954.37,962.97,12910000,962.97 +1969-05-12,961.61,964.97,951.14,957.86,10550000,957.86 +1969-05-09,963.68,971.11,955.86,961.61,12530000,961.61 +1969-05-08,959.60,970.14,954.76,963.68,13050000,963.68 +1969-05-07,962.06,967.36,953.08,959.60,14030000,959.60 +1969-05-06,958.95,968.23,954.05,962.06,14700000,962.06 +1969-05-05,957.17,965.43,951.07,958.95,13300000,958.95 +1969-05-02,949.22,961.68,945.41,957.17,13070000,957.17 +1969-05-01,950.18,958.69,942.74,949.22,14380000,949.22 +1969-04-30,934.10,956.28,933.97,950.18,19350000,950.18 +1969-04-29,925.08,937.60,922.28,934.10,14730000,934.10 +1969-04-28,924.00,930.73,917.13,925.08,11120000,925.08 +1969-04-25,921.20,929.65,916.24,924.00,12480000,924.00 +1969-04-24,917.64,925.65,911.60,921.20,11340000,921.20 +1969-04-23,918.59,927.43,913.13,917.64,12220000,917.64 +1969-04-22,917.51,922.09,908.81,918.59,10250000,918.59 +1969-04-21,924.82,928.19,913.76,917.51,10010000,917.51 +1969-04-18,924.12,932.26,916.94,924.82,10850000,924.82 +1969-04-17,923.49,930.80,917.90,924.12,9360000,924.12 +1969-04-16,931.94,932.89,920.69,923.49,9680000,923.49 +1969-04-15,932.64,937.28,924.63,931.94,9610000,931.94 +1969-04-14,933.46,938.36,926.73,932.64,8990000,932.64 +1969-04-11,932.89,939.12,927.17,933.46,10650000,933.46 +1969-04-10,929.97,941.28,927.87,932.89,12200000,932.89 +1969-04-09,923.17,933.59,920.63,929.97,12530000,929.97 +1969-04-08,918.78,927.81,913.89,923.17,9360000,923.17 +1969-04-07,926.09,926.09,911.03,918.78,9430000,918.78 +1969-04-03,930.92,933.66,921.39,927.30,10300000,927.30 +1969-04-02,933.08,936.90,924.57,930.92,10110000,930.92 +1969-04-01,935.48,942.23,928.38,933.08,12360000,933.08 +1969-03-28,930.88,941.38,928.02,935.48,12430000,935.48 +1969-03-27,923.30,936.16,921.74,930.88,11900000,930.88 +1969-03-26,917.08,926.84,914.72,923.30,11030000,923.30 +1969-03-25,917.08,923.05,911.30,917.08,9820000,917.08 +1969-03-24,920.00,924.04,912.48,917.08,8110000,917.08 +1969-03-21,920.13,926.16,913.35,920.00,9830000,920.00 +1969-03-20,912.11,924.79,911.24,920.13,10260000,920.13 +1969-03-19,907.38,917.52,903.53,912.11,9740000,912.11 +1969-03-18,904.03,913.97,902.16,907.38,11210000,907.38 +1969-03-17,904.28,909.00,895.76,904.03,9150000,904.03 +1969-03-14,907.14,911.36,899.55,904.28,8640000,904.28 +1969-03-13,916.77,916.77,903.97,907.14,10030000,907.14 +1969-03-12,920.93,926.22,912.67,917.52,8720000,917.52 +1969-03-11,917.14,928.77,914.53,920.93,9870000,920.93 +1969-03-10,911.18,920.87,906.51,917.14,8920000,917.14 +1969-03-07,913.54,914.59,900.67,911.18,10830000,911.18 +1969-03-06,923.11,923.79,908.94,913.54,9670000,913.54 +1969-03-05,919.51,929.89,916.65,923.11,11370000,923.11 +1969-03-04,908.63,922.55,908.50,919.51,9320000,919.51 +1969-03-03,905.21,914.04,902.04,908.63,8260000,908.63 +1969-02-28,903.03,911.74,900.17,905.21,8990000,905.21 +1969-02-27,905.77,908.88,897.07,903.03,9670000,903.03 +1969-02-26,899.80,912.11,895.39,905.77,9540000,905.77 +1969-02-25,903.97,914.41,896.32,899.80,9540000,899.80 +1969-02-24,916.65,918.95,900.17,903.97,12730000,903.97 +1969-02-20,925.10,928.46,913.04,916.65,10990000,916.65 +1969-02-19,930.82,936.91,923.23,925.10,10390000,925.10 +1969-02-18,937.53,937.53,923.11,930.82,12490000,930.82 +1969-02-17,951.95,954.87,935.11,937.72,11670000,937.72 +1969-02-14,952.70,959.16,945.67,951.95,11460000,951.95 +1969-02-13,949.09,957.73,942.57,952.70,12010000,952.70 +1969-02-12,948.97,954.00,942.81,949.09,11530000,949.09 +1969-02-11,947.85,954.00,941.94,948.97,12320000,948.97 +1969-02-07,946.67,954.00,940.39,947.85,12780000,947.85 +1969-02-06,945.98,954.07,939.46,946.67,12570000,946.67 +1969-02-05,945.11,952.32,938.53,945.98,13750000,945.98 +1969-02-04,946.85,951.27,938.59,945.11,12550000,945.11 +1969-02-03,946.05,953.01,936.41,946.85,12510000,946.85 +1969-01-31,942.13,950.71,937.28,946.05,12020000,946.05 +1969-01-30,938.09,947.23,934.36,942.13,13010000,942.13 +1969-01-29,938.40,943.62,931.94,938.09,11470000,938.09 +1969-01-28,937.47,944.49,930.88,938.40,12070000,938.40 +1969-01-27,938.59,944.37,932.00,937.47,11020000,937.47 +1969-01-24,940.20,946.85,932.93,938.59,12520000,938.59 +1969-01-23,934.17,945.98,932.56,940.20,13140000,940.20 +1969-01-22,929.82,938.46,925.16,934.17,11480000,934.17 +1969-01-21,931.25,936.29,923.92,929.82,10910000,929.82 +1969-01-20,935.54,939.40,927.09,931.25,10950000,931.25 +1969-01-17,938.59,944.06,930.20,935.54,11590000,935.54 +1969-01-16,931.75,945.55,930.07,938.59,13120000,938.59 +1969-01-15,928.33,940.51,924.23,931.75,11810000,931.75 +1969-01-14,923.11,931.56,918.32,928.33,10700000,928.33 +1969-01-13,925.53,930.63,917.14,923.11,11160000,923.11 +1969-01-10,927.46,937.22,921.31,925.53,12680000,925.53 +1969-01-09,921.25,935.67,918.64,927.46,12100000,927.46 +1969-01-08,925.72,932.19,915.53,921.25,13840000,921.25 +1969-01-07,936.66,939.33,915.84,925.72,15740000,925.72 +1969-01-06,951.89,956.05,932.93,936.66,12720000,936.66 +1969-01-03,947.73,960.16,942.94,951.89,12750000,951.89 +1969-01-02,943.75,956.36,940.39,947.73,9800000,947.73 +1968-12-31,945.11,950.46,936.66,943.75,13130000,943.75 +1968-12-30,952.51,955.87,938.90,945.11,12080000,945.11 +1968-12-27,954.25,961.96,947.54,952.51,11200000,952.51 +1968-12-26,952.32,961.52,948.47,954.25,9670000,954.25 +1968-12-24,953.75,961.28,945.11,952.32,11540000,952.32 +1968-12-23,966.99,969.05,949.47,953.75,12970000,953.75 +1968-12-20,975.14,983.90,962.83,966.99,15910000,966.99 +1968-12-19,970.91,980.11,954.62,975.14,19630000,975.14 +1968-12-17,976.32,978.80,962.46,970.91,14700000,970.91 +1968-12-16,981.29,989.12,970.60,976.32,15950000,976.32 +1968-12-13,977.13,990.99,972.03,981.29,16740000,981.29 +1968-12-12,977.69,987.20,969.05,977.13,18160000,977.13 +1968-12-10,979.36,986.01,971.06,977.69,14500000,977.69 +1968-12-09,978.24,987.01,971.41,979.36,15800000,979.36 +1968-12-06,977.69,986.39,970.10,978.24,15320000,978.24 +1968-12-05,985.21,989.31,969.67,977.69,19330000,977.69 +1968-12-03,983.34,990.99,973.83,985.21,15460000,985.21 +1968-12-02,985.08,994.65,974.76,983.34,15390000,983.34 +1968-11-29,976.32,989.56,971.59,985.08,14390000,985.08 +1968-11-27,979.49,984.96,969.17,976.32,16550000,976.32 +1968-11-26,971.35,986.20,969.11,979.49,16360000,979.49 +1968-11-25,967.06,977.13,961.46,971.35,14490000,971.35 +1968-11-22,965.13,973.89,958.23,967.06,15420000,967.06 +1968-11-21,966.75,971.35,953.69,965.13,18320000,965.13 +1968-11-19,963.70,972.40,957.48,966.75,15120000,966.75 +1968-11-18,965.88,970.85,957.11,963.70,14390000,963.70 +1968-11-15,963.89,972.59,956.24,965.88,15040000,965.88 +1968-11-14,967.43,972.90,957.86,963.89,14900000,963.89 +1968-11-13,964.20,973.83,958.98,967.43,15660000,967.43 +1968-11-12,958.98,972.15,953.75,964.20,17250000,964.20 +1968-11-08,950.65,965.07,947.41,958.98,14250000,958.98 +1968-11-07,949.47,957.55,938.59,950.65,11660000,950.65 +1968-11-06,946.23,959.97,941.01,949.47,12640000,949.47 +1968-11-04,948.41,952.01,936.54,946.23,10930000,946.23 +1968-11-01,952.39,961.15,941.88,948.41,14480000,948.41 +1968-10-31,951.08,965.00,944.06,952.39,17650000,952.39 +1968-10-29,957.73,961.96,945.67,951.08,12340000,951.08 +1968-10-28,961.28,966.50,951.45,957.73,11740000,957.73 +1968-10-25,956.68,966.81,950.96,961.28,14150000,961.28 +1968-10-24,963.14,967.37,949.34,956.68,18300000,956.68 +1968-10-22,967.49,970.41,957.92,963.14,13970000,963.14 +1968-10-21,967.49,974.27,959.54,967.49,14380000,967.49 +1968-10-18,958.91,971.72,955.06,967.49,15130000,967.49 +1968-10-17,955.31,969.29,952.51,958.91,21060000,958.91 +1968-10-15,949.96,960.47,946.05,955.31,13410000,955.31 +1968-10-14,949.59,955.37,942.50,949.96,11980000,949.96 +1968-10-11,949.78,955.18,942.96,949.59,12650000,949.59 +1968-10-10,956.24,958.66,944.24,949.78,17000000,949.78 +1968-10-08,956.68,963.33,950.58,956.24,14000000,956.24 +1968-10-07,952.95,961.03,946.98,956.68,12420000,956.68 +1968-10-04,949.47,957.30,943.93,952.95,15350000,952.95 +1968-10-03,942.32,954.81,940.39,949.47,21110000,949.47 +1968-10-01,935.79,948.66,932.93,942.32,15560000,942.32 +1968-09-30,933.80,941.45,926.59,935.79,13610000,935.79 +1968-09-27,933.24,938.40,926.09,933.80,13860000,933.80 +1968-09-26,938.28,945.86,928.08,933.24,18950000,933.24 +1968-09-24,930.45,942.69,926.22,938.28,15210000,938.28 +1968-09-23,924.42,934.05,920.93,930.45,11550000,930.45 +1968-09-20,923.98,930.01,917.14,924.42,14190000,924.42 +1968-09-19,923.05,933.43,916.27,923.98,17910000,923.98 +1968-09-17,921.37,929.08,916.77,923.05,13920000,923.05 +1968-09-16,917.21,927.46,912.98,921.37,13260000,921.37 +1968-09-13,915.65,923.36,909.12,917.21,13070000,917.21 +1968-09-12,919.38,923.26,908.07,915.65,14630000,915.65 +1968-09-10,924.98,931.32,914.41,919.38,11430000,919.38 +1968-09-09,921.25,932.31,916.89,924.98,11890000,924.98 +1968-09-06,917.52,928.27,912.54,921.25,13180000,921.25 +1968-09-05,906.95,921.87,904.03,917.52,12980000,917.52 +1968-09-04,900.36,911.18,896.26,906.95,10040000,906.95 +1968-09-03,896.01,904.96,892.59,900.36,8620000,900.36 +1968-08-30,894.33,902.35,891.29,896.01,8190000,896.01 +1968-08-29,893.65,900.73,886.69,894.33,10940000,894.33 +1968-08-27,896.13,901.48,888.18,893.65,9710000,893.65 +1968-08-26,892.34,902.23,890.04,896.13,9740000,896.13 +1968-08-23,888.30,899.37,883.83,892.34,9890000,892.34 +1968-08-22,888.67,894.95,878.85,888.30,15140000,888.30 +1968-08-20,887.68,894.64,879.97,888.67,10640000,888.67 +1968-08-19,885.89,893.15,880.66,887.68,9900000,887.68 +1968-08-16,879.51,889.44,877.17,885.89,9940000,885.89 +1968-08-15,884.68,892.32,874.76,879.51,12710000,879.51 +1968-08-13,881.02,890.82,877.71,884.68,12730000,884.68 +1968-08-12,869.65,884.20,867.66,881.02,10420000,881.02 +1968-08-09,870.37,876.26,863.33,869.65,8390000,869.65 +1968-08-08,876.92,882.82,866.58,870.37,12920000,870.37 +1968-08-06,872.53,881.38,868.86,876.92,9620000,876.92 +1968-08-05,871.27,879.33,865.86,872.53,8850000,872.53 +1968-08-02,878.07,879.27,865.19,871.27,9860000,871.27 +1968-08-01,883.00,892.02,874.94,878.07,14380000,878.07 +1968-07-30,883.36,890.64,876.99,883.00,10250000,883.00 +1968-07-29,888.47,893.59,877.23,883.36,10940000,883.36 +1968-07-26,885.47,895.21,878.55,888.47,11690000,888.47 +1968-07-25,898.10,901.29,880.41,885.47,16140000,885.47 +1968-07-23,900.32,904.48,889.68,898.10,13570000,898.10 +1968-07-22,913.92,914.52,894.31,900.32,13530000,900.32 +1968-07-19,917.95,924.21,907.60,913.92,14620000,913.92 +1968-07-18,921.20,926.55,911.93,917.95,17420000,917.95 +1968-07-16,923.72,928.84,913.56,921.20,13380000,921.20 +1968-07-15,922.46,929.32,915.24,923.72,13390000,923.72 +1968-07-12,922.82,929.92,914.88,922.46,14810000,922.46 +1968-07-11,920.42,933.83,915.78,922.82,20290000,922.82 +1968-07-09,912.60,924.87,908.63,920.42,16540000,920.42 +1968-07-08,903.51,920.00,901.89,912.60,16860000,912.60 +1968-07-03,896.84,907.18,893.29,903.51,14390000,903.51 +1968-07-02,896.35,902.97,889.62,896.84,13350000,896.84 +1968-07-01,897.80,904.05,889.68,896.35,11280000,896.35 +1968-06-28,898.76,905.14,892.26,897.80,12040000,897.80 +1968-06-27,901.41,909.23,891.78,898.76,15370000,898.76 +1968-06-25,901.83,908.08,895.09,901.41,13200000,901.41 +1968-06-24,900.93,908.14,895.09,901.83,12320000,901.83 +1968-06-21,898.28,907.96,891.48,900.93,13450000,900.93 +1968-06-20,900.20,909.29,892.63,898.28,16290000,898.28 +1968-06-18,903.45,909.17,895.09,900.20,13630000,900.20 +1968-06-17,913.62,917.35,898.40,903.45,12570000,903.45 +1968-06-14,913.86,918.91,904.48,913.62,14690000,913.62 +1968-06-13,917.95,924.93,908.93,913.86,21350000,913.86 +1968-06-11,913.38,924.81,909.41,917.95,15700000,917.95 +1968-06-10,914.88,922.94,907.54,913.38,14640000,913.38 +1968-06-07,910.13,920.84,906.28,914.88,17320000,914.88 +1968-06-06,907.42,918.01,901.71,910.13,16130000,910.13 +1968-06-05,916.63,922.10,904.05,907.42,15590000,907.42 +1968-06-04,905.38,923.00,902.43,916.63,18030000,916.63 +1968-06-03,899.00,912.12,896.23,905.38,14970000,905.38 +1968-05-31,895.21,907.96,891.72,899.00,13090000,899.00 +1968-05-29,896.78,903.69,889.44,895.21,14100000,895.21 +1968-05-28,891.60,901.95,886.97,896.78,13850000,896.78 +1968-05-27,895.28,898.76,885.53,891.60,12720000,891.60 +1968-05-24,893.15,900.49,886.67,895.28,13300000,895.28 +1968-05-23,896.79,901.47,888.23,893.15,12840000,893.15 +1968-05-22,896.32,906.73,891.82,896.79,14200000,896.79 +1968-05-21,894.19,902.39,886.33,896.32,13160000,896.32 +1968-05-20,898.98,902.10,887.54,894.19,11180000,894.19 +1968-05-17,903.72,905.92,891.18,898.98,11830000,898.98 +1968-05-16,907.82,913.08,898.17,903.72,13030000,903.72 +1968-05-15,908.06,914.64,900.08,907.82,13180000,907.82 +1968-05-14,909.96,915.28,900.89,908.06,13160000,908.06 +1968-05-13,912.91,918.34,903.90,909.96,11860000,909.96 +1968-05-10,911.35,920.48,906.38,912.91,11700000,912.91 +1968-05-09,918.86,921.81,904.82,911.35,12890000,911.35 +1968-05-08,919.90,927.42,911.52,918.86,13120000,918.86 +1968-05-07,914.53,926.78,910.54,919.90,13920000,919.90 +1968-05-06,919.21,922.79,903.61,914.53,12160000,914.53 +1968-05-03,918.05,935.68,913.49,919.21,17990000,919.21 +1968-05-02,913.20,923.43,906.90,918.05,14260000,918.05 +1968-05-01,912.22,919.85,902.51,913.20,14440000,913.20 +1968-04-30,908.34,918.11,901.70,912.22,14380000,912.22 +1968-04-29,906.03,914.01,900.72,908.34,12030000,908.34 +1968-04-26,905.57,912.27,898.00,906.03,13500000,906.03 +1968-04-25,898.46,912.56,895.98,905.57,14430000,905.57 +1968-04-24,897.48,904.65,889.68,898.46,14810000,898.46 +1968-04-23,891.99,904.47,890.43,897.48,14010000,897.48 +1968-04-22,897.65,897.88,881.24,891.99,11720000,891.99 +1968-04-19,908.40,908.40,890.72,897.65,14560000,897.65 +1968-04-18,908.17,916.78,901.24,909.21,15890000,909.21 +1968-04-17,906.78,912.74,896.84,908.17,14090000,908.17 +1968-04-16,910.19,917.36,899.33,906.78,15680000,906.78 +1968-04-15,905.69,916.03,893.61,910.19,14220000,910.19 +1968-04-11,892.63,908.29,886.56,905.69,14230000,905.69 +1968-04-10,884.42,905.74,884.07,892.63,20410000,892.63 +1968-04-08,865.81,888.35,865.18,884.42,13010000,884.42 +1968-04-05,872.52,877.31,862.11,865.81,12570000,865.81 +1968-04-04,869.11,879.68,862.46,872.52,14340000,872.52 +1968-04-03,863.96,883.38,859.45,869.11,19290000,869.11 +1968-04-02,861.25,869.63,852.12,863.96,14520000,863.96 +1968-04-01,849.23,870.90,849.23,861.25,17730000,861.25 +1968-03-29,835.12,845.87,831.48,840.67,9000000,840.67 +1968-03-28,836.57,841.08,830.67,835.12,8000000,835.12 +1968-03-27,831.54,841.42,830.33,836.57,8970000,836.57 +1968-03-26,827.27,836.17,823.62,831.54,8670000,831.54 +1968-03-25,826.05,831.25,819.87,827.27,6700000,827.27 +1968-03-22,825.13,831.48,817.61,826.05,9900000,826.05 +1968-03-21,830.85,836.40,822.58,825.13,8580000,825.13 +1968-03-20,832.99,836.63,826.34,830.85,7390000,830.85 +1968-03-19,840.09,842.35,829.63,832.99,7410000,832.99 +1968-03-18,837.55,854.25,836.28,840.09,10800000,840.09 +1968-03-15,830.91,843.39,825.01,837.55,11210000,837.55 +1968-03-14,841.54,841.54,824.26,830.91,11640000,830.91 +1968-03-13,843.22,847.72,836.22,842.23,8990000,842.23 +1968-03-12,843.04,847.55,834.72,843.22,9250000,843.22 +1968-03-11,835.24,846.63,833.56,843.04,9520000,843.04 +1968-03-08,836.22,840.38,828.59,835.24,7410000,835.24 +1968-03-07,837.21,843.62,830.33,836.22,8630000,836.22 +1968-03-06,827.03,841.37,826.46,837.21,9900000,837.21 +1968-03-05,830.56,837.44,821.72,827.03,11440000,827.03 +1968-03-04,840.44,842.75,828.02,830.56,10590000,830.56 +1968-03-01,840.50,845.24,836.05,840.44,8610000,840.44 +1968-02-29,844.72,847.03,835.76,840.50,7700000,840.50 +1968-02-28,846.68,853.33,841.71,844.72,8020000,844.72 +1968-02-27,841.77,848.59,835.93,846.68,7600000,846.68 +1968-02-26,849.80,850.79,836.40,841.77,7810000,841.77 +1968-02-23,849.23,857.78,844.43,849.80,8810000,849.80 +1968-02-21,843.10,855.05,840.50,849.23,9170000,849.23 +1968-02-20,838.65,847.67,836.05,843.10,8800000,843.10 +1968-02-19,836.34,843.97,830.50,838.65,7270000,838.65 +1968-02-16,839.23,841.66,830.85,836.34,9070000,836.34 +1968-02-15,837.38,846.16,833.62,839.23,9770000,839.23 +1968-02-14,831.77,841.94,826.46,837.38,11390000,837.38 +1968-02-13,840.04,843.68,828.36,831.77,10830000,831.77 +1968-02-09,850.32,851.65,834.84,840.04,11850000,840.04 +1968-02-08,859.92,863.27,847.84,850.32,9660000,850.32 +1968-02-07,861.25,867.78,855.93,859.92,8380000,859.92 +1968-02-06,861.13,867.31,854.83,861.25,8560000,861.25 +1968-02-05,863.56,867.66,854.77,861.13,8980000,861.13 +1968-02-02,861.36,871.30,856.22,863.56,10120000,863.56 +1968-02-01,855.47,864.89,850.55,861.36,10590000,861.36 +1968-01-31,859.57,863.90,850.50,855.47,9410000,855.47 +1968-01-30,863.67,867.95,852.92,859.57,10110000,859.57 +1968-01-29,865.06,873.04,858.53,863.67,9950000,863.67 +1968-01-26,864.25,873.79,859.51,865.06,9980000,865.06 +1968-01-25,862.23,871.24,853.44,864.25,12410000,864.25 +1968-01-24,864.77,870.20,854.83,862.23,10570000,862.23 +1968-01-23,871.71,875.06,860.15,864.77,11030000,864.77 +1968-01-22,880.32,881.24,866.68,871.71,10630000,871.71 +1968-01-19,882.80,889.27,876.21,880.32,11950000,880.32 +1968-01-18,883.78,893.49,879.33,882.80,13840000,882.80 +1968-01-17,887.14,890.89,877.48,883.78,12910000,883.78 +1968-01-16,892.74,896.56,882.34,887.14,12340000,887.14 +1968-01-15,898.98,903.03,888.93,892.74,12640000,892.74 +1968-01-12,899.79,906.58,891.07,898.98,13080000,898.98 +1968-01-11,903.95,911.35,895.28,899.79,13220000,899.79 +1968-01-10,908.29,911.87,897.94,903.95,11670000,903.95 +1968-01-09,908.92,921.87,903.26,908.29,13720000,908.29 +1968-01-08,901.24,915.63,896.27,908.92,14260000,908.92 +1968-01-05,899.39,908.06,893.55,901.24,11880000,901.24 +1968-01-04,904.13,908.23,889.51,899.39,13440000,899.39 +1968-01-03,906.84,916.15,899.56,904.13,12650000,904.13 +1968-01-02,905.11,914.30,897.54,906.84,11080000,906.84 +1967-12-29,897.83,910.37,893.44,905.11,14950000,905.11 +1967-12-28,894.94,902.97,886.73,897.83,12530000,897.83 +1967-12-27,888.12,900.14,884.59,894.94,12690000,894.94 +1967-12-26,887.37,893.96,881.93,888.12,9150000,888.12 +1967-12-22,888.35,894.94,880.95,887.37,9570000,887.37 +1967-12-21,886.90,897.71,883.78,888.35,11010000,888.35 +1967-12-20,881.36,892.86,876.33,886.90,11390000,886.90 +1967-12-19,881.65,886.96,875.69,881.36,10610000,881.36 +1967-12-18,880.61,889.91,874.94,881.65,10320000,881.65 +1967-12-15,883.44,890.43,875.87,880.61,11530000,880.61 +1967-12-14,882.34,891.47,878.53,883.44,12310000,883.44 +1967-12-13,881.30,887.77,881.14,882.34,12480000,882.34 +1967-12-12,882.05,887.54,873.32,881.30,10860000,881.30 +1967-12-11,887.25,892.16,876.96,882.05,10500000,882.05 +1967-12-08,892.22,895.92,883.55,887.25,10710000,887.25 +1967-12-07,892.28,901.76,887.94,892.22,12490000,892.22 +1967-12-06,888.12,896.50,884.19,892.28,11940000,892.28 +1967-12-05,883.50,895.80,881.24,888.12,12940000,888.12 +1967-12-04,879.16,888.35,876.33,883.50,11740000,883.50 +1967-12-01,875.81,882.69,868.76,879.16,9740000,879.16 +1967-11-30,883.15,887.48,872.63,875.81,8860000,875.81 +1967-11-29,884.88,894.88,878.24,883.15,11400000,883.15 +1967-11-28,882.11,890.43,876.62,884.88,11040000,884.88 +1967-11-27,877.60,887.77,873.21,882.11,10040000,882.11 +1967-11-24,874.02,882.80,867.26,877.60,9470000,877.60 +1967-11-22,870.95,884.54,865.87,874.02,12180000,874.02 +1967-11-21,857.78,876.68,857.49,870.95,12300000,870.95 +1967-11-20,862.11,862.58,839.40,857.78,12750000,857.78 +1967-11-17,859.74,869.28,853.96,862.11,10050000,862.11 +1967-11-16,855.18,867.49,852.12,859.74,10570000,859.74 +1967-11-15,852.40,860.44,845.01,855.18,10000000,855.18 +1967-11-14,859.74,864.60,849.23,852.40,10350000,852.40 +1967-11-13,862.81,872.98,855.06,859.74,10130000,859.74 +1967-11-10,856.97,868.93,854.83,862.81,9960000,862.81 +1967-11-09,849.57,862.86,846.28,856.97,8890000,856.97 +1967-11-08,855.29,870.67,847.61,849.57,12630000,849.57 +1967-11-06,856.62,860.61,844.89,855.29,10320000,855.29 +1967-11-03,864.83,867.95,853.10,856.62,8800000,856.62 +1967-11-02,867.08,878.87,860.55,864.83,10760000,864.83 +1967-11-01,879.74,880.95,863.44,867.08,10930000,867.08 +1967-10-31,886.62,890.72,876.21,879.74,12020000,879.74 +1967-10-30,888.18,894.07,880.37,886.62,10250000,886.62 +1967-10-27,890.89,896.15,882.98,888.18,9880000,888.18 +1967-10-26,886.73,896.04,881.99,890.89,9920000,890.89 +1967-10-25,888.18,893.44,877.31,886.73,10300000,886.73 +1967-10-24,894.65,903.84,885.52,888.18,11110000,888.18 +1967-10-23,896.73,900.43,883.03,894.65,9680000,894.65 +1967-10-20,903.72,906.96,891.35,896.73,9510000,896.73 +1967-10-19,903.49,914.41,899.68,903.72,11620000,903.72 +1967-10-18,904.36,910.48,896.15,903.49,10500000,903.49 +1967-10-17,908.52,912.97,896.73,904.36,10290000,904.36 +1967-10-16,918.17,922.97,905.46,908.52,9080000,908.52 +1967-10-13,913.20,924.41,908.58,918.17,9040000,918.17 +1967-10-12,920.25,922.56,909.79,913.20,7770000,913.20 +1967-10-11,926.61,929.73,916.61,920.25,11230000,920.25 +1967-10-10,933.31,940.07,921.35,926.61,12000000,926.61 +1967-10-09,928.74,940.36,924.47,933.31,11180000,933.31 +1967-10-06,927.13,935.74,921.58,928.74,9830000,928.74 +1967-10-05,921.29,931.46,917.88,927.13,8490000,927.13 +1967-10-04,924.47,932.33,916.32,921.29,11520000,921.29 +1967-10-03,921.00,930.77,916.49,924.47,10320000,924.47 +1967-10-02,926.66,930.42,915.92,921.00,9240000,921.00 +1967-09-29,929.38,933.77,919.85,926.66,9710000,926.66 +1967-09-28,933.14,937.30,925.05,929.38,10470000,929.38 +1967-09-27,937.18,942.61,927.88,933.14,8810000,933.14 +1967-09-26,943.08,951.57,934.12,937.18,10940000,937.18 +1967-09-25,934.35,949.66,931.75,943.08,10910000,943.08 +1967-09-22,930.48,940.48,923.95,934.35,11160000,934.35 +1967-09-21,929.79,938.22,924.12,930.48,11290000,930.48 +1967-09-20,930.07,936.89,922.50,929.79,10980000,929.79 +1967-09-19,938.74,944.64,926.95,930.07,11540000,930.07 +1967-09-18,933.48,944.58,929.73,938.74,11620000,938.74 +1967-09-15,929.44,938.51,923.25,933.48,10270000,933.48 +1967-09-14,923.77,939.38,923.72,929.44,12220000,929.44 +1967-09-13,911.75,928.40,911.64,923.77,12400000,923.77 +1967-09-12,909.62,916.84,905.05,911.75,9930000,911.75 +1967-09-11,907.54,916.20,902.68,909.62,9170000,909.62 +1967-09-08,908.17,914.41,901.24,907.54,9300000,907.54 +1967-09-07,906.96,913.49,901.64,908.17,8910000,908.17 +1967-09-06,904.13,913.55,899.27,906.96,9550000,906.96 +1967-09-05,901.18,909.91,895.69,904.13,8320000,904.13 +1967-09-01,901.29,906.84,894.19,901.18,7460000,901.18 +1967-08-31,893.72,906.38,893.09,901.29,8840000,901.29 +1967-08-30,894.76,900.72,888.64,893.72,7200000,893.72 +1967-08-29,894.71,900.20,887.94,894.76,6350000,894.76 +1967-08-28,894.07,902.16,887.83,894.71,6270000,894.71 +1967-08-25,898.46,900.49,888.81,894.07,7250000,894.07 +1967-08-24,905.11,910.54,896.09,898.46,7740000,898.46 +1967-08-23,907.48,910.14,896.44,905.11,8760000,905.11 +1967-08-22,912.27,916.15,903.61,907.48,7940000,907.48 +1967-08-21,919.04,921.64,907.48,912.27,8600000,912.27 +1967-08-18,918.23,925.51,912.79,919.04,8250000,919.04 +1967-08-17,915.68,923.89,912.85,918.23,8790000,918.23 +1967-08-16,919.15,921.64,910.83,915.68,8220000,915.68 +1967-08-15,916.32,924.93,912.85,919.15,8710000,919.15 +1967-08-14,920.65,922.16,909.96,916.32,7990000,916.32 +1967-08-11,925.22,928.11,915.57,920.65,8250000,920.65 +1967-08-10,926.72,933.14,920.77,925.22,9040000,925.22 +1967-08-09,922.45,931.75,919.09,926.72,10100000,926.72 +1967-08-08,920.37,927.88,916.67,922.45,8970000,922.45 +1967-08-07,923.77,930.65,915.34,920.37,10160000,920.37 +1967-08-04,921.98,931.06,917.65,923.77,11130000,923.77 +1967-08-03,922.27,929.67,908.11,921.98,13440000,921.98 +1967-08-02,913.55,931.29,913.55,922.27,13510000,922.27 +1967-08-01,904.24,917.19,900.25,912.97,12290000,912.97 +1967-07-31,901.53,912.85,896.67,904.24,10330000,904.24 +1967-07-28,903.14,910.31,896.15,901.53,10900000,901.53 +1967-07-27,903.14,912.79,896.96,903.14,12400000,903.14 +1967-07-26,901.29,908.17,895.75,903.14,11160000,903.14 +1967-07-25,904.53,909.56,895.52,901.29,9890000,901.29 +1967-07-24,909.56,912.68,897.48,904.53,9580000,904.53 +1967-07-21,908.69,918.69,903.03,909.56,11710000,909.56 +1967-07-20,903.32,913.83,896.79,908.69,11160000,908.69 +1967-07-19,896.09,908.75,892.63,903.32,12850000,903.32 +1967-07-18,882.74,899.79,879.39,896.09,12060000,896.09 +1967-07-17,882.05,891.30,875.35,882.74,10390000,882.74 +1967-07-14,878.53,889.62,872.52,882.05,10880000,882.05 +1967-07-13,878.70,885.81,873.04,878.53,10730000,878.53 +1967-07-12,879.45,885.40,870.55,878.70,11240000,878.70 +1967-07-11,875.52,886.15,870.90,879.45,12400000,879.45 +1967-07-10,869.05,880.37,866.04,875.52,12130000,875.52 +1967-07-07,864.02,874.42,860.32,869.05,11540000,869.05 +1967-07-06,864.94,871.24,858.70,864.02,10170000,864.02 +1967-07-05,859.69,871.01,857.43,864.94,9170000,864.94 +1967-07-03,860.26,864.60,853.21,859.69,6040000,859.69 +1967-06-30,861.94,867.83,855.58,860.26,7850000,860.26 +1967-06-29,868.87,873.67,859.45,861.94,9940000,861.94 +1967-06-28,869.39,875.17,864.14,868.87,9310000,868.87 +1967-06-27,872.11,875.87,864.14,869.39,8780000,869.39 +1967-06-26,877.37,884.30,866.91,872.11,9040000,872.11 +1967-06-23,875.69,883.32,870.95,877.37,9130000,877.37 +1967-06-22,877.66,881.13,868.82,875.69,9550000,875.69 +1967-06-21,880.61,886.90,872.52,877.66,9760000,877.66 +1967-06-20,884.54,890.72,876.44,880.61,10350000,880.61 +1967-06-19,885.00,890.03,877.43,884.54,8570000,884.54 +1967-06-16,883.26,892.80,879.68,885.00,10740000,885.00 +1967-06-15,880.61,891.24,873.32,883.26,11240000,883.26 +1967-06-14,886.15,890.78,876.39,880.61,10960000,880.61 +1967-06-13,878.93,892.68,875.75,886.15,11570000,886.15 +1967-06-12,874.89,884.77,870.49,878.93,10230000,878.93 +1967-06-09,873.20,881.94,865.08,874.89,9650000,874.89 +1967-06-08,869.19,875.17,861.64,873.20,8300000,873.20 +1967-06-07,862.71,877.14,860.57,869.19,10170000,869.19 +1967-06-06,848.33,868.46,848.33,862.71,9230000,862.71 +1967-06-05,858.41,858.41,836.92,847.77,11110000,847.77 +1967-06-02,864.98,870.82,857.46,863.31,8070000,863.31 +1967-06-01,852.56,869.60,850.56,864.98,9040000,864.98 +1967-05-31,864.64,864.64,850.39,852.56,8870000,852.56 +1967-05-29,870.32,871.60,860.24,864.98,6590000,864.98 +1967-05-26,870.71,875.22,863.31,870.32,7810000,870.32 +1967-05-25,862.42,876.50,860.36,870.71,8960000,870.71 +1967-05-24,868.71,870.49,857.18,862.42,10290000,862.42 +1967-05-23,871.05,875.72,862.03,868.71,9810000,868.71 +1967-05-22,874.55,876.61,863.75,871.05,9600000,871.05 +1967-05-19,877.34,881.24,867.59,874.55,10560000,874.55 +1967-05-18,882.24,885.13,873.27,877.34,10290000,877.34 +1967-05-17,885.80,891.37,878.40,882.24,9560000,882.24 +1967-05-16,882.41,891.76,877.90,885.80,10700000,885.80 +1967-05-15,890.03,892.26,878.67,882.41,8320000,882.41 +1967-05-12,896.21,900.67,885.86,890.03,10470000,890.03 +1967-05-11,894.10,901.56,888.25,896.21,10320000,896.21 +1967-05-10,899.89,902.23,888.47,894.10,10410000,894.10 +1967-05-09,909.63,915.87,897.05,899.89,10830000,899.89 +1967-05-08,905.96,915.31,899.44,909.63,10330000,909.63 +1967-05-05,901.95,910.91,898.05,905.96,10630000,905.96 +1967-05-04,896.77,906.57,892.65,901.95,12850000,901.95 +1967-05-03,891.65,900.95,886.41,896.77,11550000,896.77 +1967-05-02,892.93,898.39,886.19,891.65,10260000,891.65 +1967-05-01,897.05,900.50,887.81,892.93,9410000,892.93 +1967-04-28,894.82,903.73,891.20,897.05,11200000,897.05 +1967-04-27,889.03,898.33,882.74,894.82,10250000,894.82 +1967-04-26,891.20,898.50,883.96,889.03,10560000,889.03 +1967-04-25,887.53,894.93,880.73,891.20,10420000,891.20 +1967-04-24,883.18,894.82,877.84,887.53,10250000,887.53 +1967-04-21,878.62,888.30,873.61,883.18,10210000,883.18 +1967-04-20,873.94,882.18,869.04,878.62,9690000,878.62 +1967-04-19,873.00,882.07,868.76,873.94,10860000,873.94 +1967-04-18,866.59,876.73,861.92,873.00,10500000,873.00 +1967-04-17,859.74,874.83,857.91,866.59,9070000,866.59 +1967-04-14,848.83,865.03,847.05,859.74,8810000,859.74 +1967-04-13,844.65,852.84,840.81,848.83,7610000,848.83 +1967-04-12,847.66,852.67,841.48,844.65,7750000,844.65 +1967-04-11,842.43,852.39,838.98,847.66,7710000,847.66 +1967-04-10,852.84,852.84,839.76,842.43,8110000,842.43 +1967-04-07,861.25,866.59,850.22,853.34,9090000,853.34 +1967-04-06,861.19,867.59,856.51,861.25,9470000,861.25 +1967-04-05,859.19,867.26,855.23,861.19,8810000,861.19 +1967-04-04,859.97,865.65,852.17,859.19,8750000,859.19 +1967-04-03,865.98,868.43,854.45,859.97,8530000,859.97 +1967-03-31,869.99,874.28,861.19,865.98,8130000,865.98 +1967-03-30,871.10,875.39,863.92,869.99,8340000,869.99 +1967-03-29,875.28,880.40,866.31,871.10,8430000,871.10 +1967-03-28,873.72,882.13,868.37,875.28,8940000,875.28 +1967-03-27,876.67,883.41,869.15,873.72,9260000,873.72 +1967-03-23,870.55,882.29,868.82,876.67,9500000,876.67 +1967-03-22,866.59,875.11,857.68,870.55,8820000,870.55 +1967-03-21,870.43,879.18,861.25,866.59,9820000,866.59 +1967-03-20,869.77,877.28,862.36,870.43,9040000,870.43 +1967-03-17,868.49,876.50,861.80,869.77,10020000,869.77 +1967-03-16,854.51,872.33,854.51,868.49,12170000,868.49 +1967-03-15,844.27,856.90,842.65,854.06,10830000,854.06 +1967-03-14,844.82,850.33,836.86,844.27,10260000,844.27 +1967-03-13,848.50,853.56,840.59,844.82,9910000,844.82 +1967-03-10,845.43,864.25,845.43,848.50,14900000,848.50 +1967-03-09,843.32,850.72,836.53,844.15,10480000,844.15 +1967-03-08,841.76,851.00,836.36,843.32,11070000,843.32 +1967-03-07,842.20,847.10,835.30,841.76,9810000,841.76 +1967-03-06,846.60,851.45,837.86,842.20,10400000,842.20 +1967-03-03,846.71,853.51,841.04,846.60,11100000,846.60 +1967-03-02,843.49,852.62,840.87,846.71,11900000,846.71 +1967-03-01,839.37,852.12,836.47,843.49,11510000,843.49 +1967-02-28,836.64,844.27,827.95,839.37,9970000,839.37 +1967-02-27,847.33,849.44,830.46,836.64,10210000,836.64 +1967-02-24,846.77,854.79,839.64,847.33,9830000,847.33 +1967-02-23,844.10,851.67,837.31,846.77,10010000,846.77 +1967-02-21,847.88,851.39,840.03,844.10,9030000,844.10 +1967-02-20,850.84,853.90,839.81,847.88,8640000,847.88 +1967-02-17,851.56,856.35,845.88,850.84,8530000,850.84 +1967-02-16,855.79,863.42,846.60,851.56,8490000,851.56 +1967-02-15,856.90,863.47,850.22,855.79,10480000,855.79 +1967-02-14,853.34,862.64,848.39,856.90,9760000,856.90 +1967-02-13,855.73,860.52,848.72,853.34,7570000,853.34 +1967-02-10,857.52,861.36,847.72,855.73,8850000,855.73 +1967-02-09,860.97,871.71,854.06,857.52,10970000,857.52 +1967-02-08,852.51,865.37,850.11,860.97,11220000,860.97 +1967-02-07,855.12,857.68,847.27,852.51,6400000,852.51 +1967-02-06,857.46,862.53,849.72,855.12,10680000,855.12 +1967-02-03,853.12,864.09,849.78,857.46,12010000,857.46 +1967-02-02,848.39,857.68,842.20,853.12,10720000,853.12 +1967-02-01,849.89,854.51,842.54,848.39,9580000,848.39 +1967-01-31,848.11,857.02,844.82,849.89,11540000,849.89 +1967-01-30,844.04,854.57,840.48,848.11,10250000,848.11 +1967-01-27,838.70,850.17,836.14,844.04,9690000,844.04 +1967-01-26,840.59,848.27,830.18,838.70,10630000,838.70 +1967-01-25,847.72,852.67,837.69,840.59,10260000,840.59 +1967-01-24,847.72,853.12,836.30,847.72,10430000,847.72 +1967-01-23,847.16,856.68,841.43,847.72,10830000,847.72 +1967-01-20,846.44,851.39,838.59,847.16,9530000,847.16 +1967-01-19,847.49,853.73,840.81,846.44,10230000,846.44 +1967-01-18,843.65,853.34,839.14,847.49,11390000,847.49 +1967-01-17,833.24,848.72,830.57,843.65,11590000,843.65 +1967-01-16,835.13,842.48,828.12,833.24,10280000,833.24 +1967-01-13,829.95,838.47,821.15,835.13,10000000,835.13 +1967-01-12,822.49,839.25,819.76,829.95,12830000,829.95 +1967-01-11,814.14,827.11,798.71,822.49,13230000,822.49 +1967-01-10,813.47,820.93,808.18,814.14,8120000,814.14 +1967-01-09,808.74,818.87,803.34,813.47,9180000,813.47 +1967-01-06,805.51,816.53,801.67,808.74,7830000,808.74 +1967-01-05,791.64,807.90,791.64,805.51,7320000,805.51 +1967-01-04,786.41,795.54,776.16,791.14,6150000,791.14 +1967-01-03,785.69,800.55,782.34,786.41,6100000,786.41 +1966-12-30,786.35,794.59,779.34,785.69,11330000,785.69 +1966-12-29,788.58,792.70,781.51,786.35,7900000,786.35 +1966-12-28,792.20,799.38,785.96,788.58,7160000,788.58 +1966-12-27,799.10,802.61,788.25,792.20,6280000,792.20 +1966-12-23,801.67,806.51,793.09,799.10,7350000,799.10 +1966-12-22,797.43,807.18,793.87,801.67,8560000,801.67 +1966-12-21,794.59,802.00,789.69,797.43,7690000,797.43 +1966-12-20,798.99,800.66,789.42,794.59,6830000,794.59 +1966-12-19,807.18,807.46,792.70,798.99,7340000,798.99 +1966-12-16,809.18,813.02,802.22,807.18,6980000,807.18 +1966-12-15,817.98,820.82,804.45,809.18,7150000,809.18 +1966-12-14,816.70,823.66,810.63,817.98,7470000,817.98 +1966-12-13,820.54,827.22,812.08,816.70,9650000,816.70 +1966-12-12,813.02,826.67,810.52,820.54,9530000,820.54 +1966-12-09,812.80,818.20,804.95,813.02,7650000,813.02 +1966-12-08,808.01,818.81,805.95,812.80,8370000,812.80 +1966-12-07,797.43,812.41,795.43,808.01,8980000,808.01 +1966-12-06,791.59,800.94,788.25,797.43,7670000,797.43 +1966-12-05,789.47,795.54,784.35,791.59,6470000,791.59 +1966-12-02,789.75,794.82,783.51,789.47,6230000,789.47 +1966-12-01,791.59,797.93,785.63,789.75,8480000,789.75 +1966-11-30,795.26,796.21,784.79,791.59,7230000,791.59 +1966-11-29,801.16,803.28,791.59,795.26,7320000,795.26 +1966-11-28,803.34,808.24,793.59,801.16,7630000,801.16 +1966-11-25,796.82,807.68,793.87,803.34,6810000,803.34 +1966-11-23,794.98,804.78,789.36,796.82,7350000,796.82 +1966-11-22,798.16,799.55,785.46,794.98,6430000,794.98 +1966-11-21,807.73,807.73,791.09,798.16,7450000,798.16 +1966-11-18,816.03,817.81,804.95,809.40,6900000,809.40 +1966-11-17,820.87,825.61,808.90,816.03,8900000,816.03 +1966-11-16,815.31,827.33,812.69,820.87,10350000,820.87 +1966-11-15,813.75,819.48,808.12,815.31,7190000,815.31 +1966-11-14,819.09,823.10,808.29,813.75,6540000,813.75 +1966-11-11,816.87,822.32,810.46,819.09,6690000,819.09 +1966-11-10,809.91,822.38,807.18,816.87,8870000,816.87 +1966-11-09,802.22,815.64,799.72,809.91,8390000,809.91 +1966-11-07,805.06,809.85,796.38,802.22,6120000,802.22 +1966-11-04,804.34,809.57,793.54,805.06,6530000,805.06 +1966-11-03,807.29,812.24,798.32,804.34,5860000,804.34 +1966-11-02,809.63,815.92,801.61,807.29,6740000,807.29 +1966-11-01,807.07,814.30,800.33,809.63,6480000,809.63 +1966-10-31,807.96,812.91,797.04,807.07,5860000,807.07 +1966-10-28,809.57,816.64,801.44,807.96,6420000,807.96 +1966-10-27,801.11,814.97,800.77,809.57,6670000,809.57 +1966-10-26,793.09,809.29,792.31,801.11,6760000,801.11 +1966-10-25,787.75,796.60,780.34,793.09,6190000,793.09 +1966-10-24,787.30,796.10,781.73,787.75,5780000,787.75 +1966-10-21,783.68,791.36,777.17,787.30,5690000,787.30 +1966-10-20,785.35,796.04,778.11,783.68,6840000,783.68 +1966-10-19,791.87,799.22,779.84,785.35,6460000,785.35 +1966-10-18,778.89,795.65,777.44,791.87,7180000,791.87 +1966-10-17,771.71,789.14,770.82,778.89,5570000,778.89 +1966-10-14,772.93,782.90,765.14,771.71,5610000,771.71 +1966-10-13,778.17,791.09,768.81,772.93,8680000,772.93 +1966-10-12,758.63,780.12,752.89,778.17,6910000,778.17 +1966-10-11,754.51,771.43,752.44,758.63,8430000,758.63 +1966-10-10,744.32,758.07,735.74,754.51,9630000,754.51 +1966-10-07,749.61,756.84,739.64,744.32,8140000,744.32 +1966-10-06,755.45,759.52,744.09,749.61,8110000,749.61 +1966-10-05,763.19,768.04,751.72,755.45,5880000,755.45 +1966-10-04,757.96,767.53,750.33,763.19,8910000,763.19 +1966-10-03,774.22,778.11,756.79,757.96,6490000,757.96 +1966-09-30,772.66,779.34,763.91,774.22,6170000,774.22 +1966-09-29,780.95,783.18,768.26,772.66,6110000,772.66 +1966-09-28,794.09,795.60,777.33,780.95,5990000,780.95 +1966-09-27,792.70,805.45,789.53,794.09,6300000,794.09 +1966-09-26,790.97,797.32,784.46,792.70,4960000,792.70 +1966-09-23,797.77,800.11,787.36,790.97,4560000,790.97 +1966-09-22,793.59,801.83,785.69,797.77,5760000,797.77 +1966-09-21,806.01,806.73,792.53,793.59,5360000,793.59 +1966-09-20,810.85,813.08,801.22,806.01,4560000,806.01 +1966-09-19,814.30,818.54,804.00,810.85,4920000,810.85 +1966-09-16,814.30,822.93,808.35,814.30,5150000,814.30 +1966-09-15,806.23,821.26,804.62,814.30,6140000,814.30 +1966-09-14,795.48,809.02,789.58,806.23,6250000,806.23 +1966-09-13,790.59,803.11,789.25,795.48,6870000,795.48 +1966-09-12,775.61,795.32,775.61,790.59,6780000,790.59 +1966-09-09,774.88,781.01,767.92,775.55,5280000,775.55 +1966-09-08,777.39,782.46,763.36,774.88,6660000,774.88 +1966-09-07,782.34,787.30,771.77,777.39,5530000,777.39 +1966-09-06,787.69,795.15,778.84,782.34,4350000,782.34 +1966-09-02,792.09,796.26,776.72,787.69,6080000,787.69 +1966-09-01,788.41,798.94,782.12,792.09,6250000,792.09 +1966-08-31,777.44,796.49,777.44,788.41,8690000,788.41 +1966-08-30,767.03,781.62,759.52,775.72,11230000,775.72 +1966-08-29,780.56,781.06,763.97,767.03,10900000,767.03 +1966-08-26,792.37,792.53,776.22,780.56,8190000,780.56 +1966-08-25,799.55,806.23,789.08,792.37,6760000,792.37 +1966-08-24,790.20,805.45,790.20,799.55,7050000,799.55 +1966-08-23,792.03,801.78,781.90,790.14,9830000,790.14 +1966-08-22,804.62,807.79,786.85,792.03,8690000,792.03 +1966-08-19,810.74,816.75,801.50,804.62,7070000,804.62 +1966-08-18,819.59,821.15,804.73,810.74,7000000,810.74 +1966-08-17,823.83,827.28,813.69,819.59,6630000,819.59 +1966-08-16,834.79,834.79,820.04,823.83,6130000,823.83 +1966-08-15,840.53,845.65,831.79,834.85,5680000,834.85 +1966-08-12,837.91,847.66,834.68,840.53,6230000,840.53 +1966-08-11,838.53,843.65,830.56,837.91,5700000,837.91 +1966-08-10,844.82,846.71,835.02,838.53,5290000,838.53 +1966-08-09,849.05,853.11,841.09,844.82,6270000,844.82 +1966-08-08,852.39,854.78,842.42,849.05,4900000,849.05 +1966-08-05,851.50,860.57,845.71,852.39,5500000,852.39 +1966-08-04,841.70,858.57,841.20,851.50,6880000,851.50 +1966-08-03,832.90,847.99,832.90,841.70,6220000,841.70 +1966-08-02,835.18,840.97,827.28,832.57,5710000,832.57 +1966-08-01,846.60,846.60,830.84,835.18,5880000,835.18 +1966-07-29,854.06,857.46,843.76,847.38,5150000,847.38 +1966-07-28,856.23,862.75,850.50,854.06,5680000,854.06 +1966-07-27,852.17,863.30,850.55,856.23,6070000,856.23 +1966-07-26,852.83,861.19,846.88,852.17,7610000,852.17 +1966-07-25,869.15,870.43,850.50,852.83,7050000,852.83 +1966-07-22,873.99,877.50,864.97,869.15,6540000,869.15 +1966-07-21,874.49,880.34,866.98,873.99,6200000,873.99 +1966-07-20,884.07,887.08,872.60,874.49,5470000,874.49 +1966-07-19,888.41,889.81,876.55,884.07,5960000,884.07 +1966-07-18,889.36,892.98,882.18,888.41,5110000,888.41 +1966-07-15,887.80,896.65,883.74,889.36,6090000,889.36 +1966-07-14,881.40,892.48,878.17,887.80,5950000,887.80 +1966-07-13,886.19,887.58,875.33,881.40,5580000,881.40 +1966-07-12,893.09,896.65,882.46,886.19,5180000,886.19 +1966-07-11,894.04,901.16,888.64,893.09,6200000,893.09 +1966-07-08,891.64,898.44,885.57,894.04,6100000,894.04 +1966-07-07,888.86,898.21,883.90,891.64,7200000,891.64 +1966-07-06,875.27,893.20,872.43,888.86,6860000,888.86 +1966-07-05,877.06,884.13,869.09,875.27,4610000,875.27 +1966-07-01,870.10,884.02,869.93,877.06,5200000,877.06 +1966-06-30,871.60,876.33,858.90,870.10,7250000,870.10 +1966-06-29,880.90,884.29,869.15,871.60,6020000,871.60 +1966-06-28,888.97,890.81,874.83,880.90,6280000,880.90 +1966-06-27,897.16,904.06,887.47,888.97,5330000,888.97 +1966-06-24,896.43,904.17,888.41,897.16,7140000,897.16 +1966-06-23,901.00,908.51,893.48,896.43,7930000,896.43 +1966-06-22,894.98,904.62,892.59,901.00,7800000,901.00 +1966-06-21,892.76,900.44,889.36,894.98,6860000,894.98 +1966-06-20,894.26,898.21,887.24,892.76,5940000,892.76 +1966-06-17,897.16,900.55,889.75,894.26,6580000,894.26 +1966-06-16,901.11,903.61,890.92,897.16,6870000,897.16 +1966-06-15,903.17,910.35,897.82,901.11,8520000,901.11 +1966-06-14,897.60,907.18,891.53,903.17,7600000,903.17 +1966-06-13,891.75,904.67,891.64,897.60,7600000,897.60 +1966-06-10,882.62,896.77,880.84,891.75,8240000,891.75 +1966-06-09,879.34,887.30,874.05,882.62,5810000,882.62 +1966-06-08,877.33,883.68,872.16,879.34,4580000,879.34 +1966-06-07,881.68,882.62,870.32,877.33,5040000,877.33 +1966-06-06,887.86,888.95,876.22,881.68,4260000,881.68 +1966-06-03,882.73,890.86,879.73,887.86,4430000,887.86 +1966-06-02,883.63,890.64,878.34,882.73,5080000,882.73 +1966-06-01,884.07,888.53,877.33,883.63,5290000,883.63 +1966-05-31,897.04,899.61,881.73,884.07,5770000,884.07 +1966-05-27,891.75,899.77,885.85,897.04,4790000,897.04 +1966-05-26,890.42,900.33,886.80,891.75,6080000,891.75 +1966-05-25,888.41,894.98,881.29,890.42,5820000,890.42 +1966-05-24,882.46,898.38,882.12,888.41,7210000,888.41 +1966-05-23,876.89,889.86,873.49,882.46,7080000,882.46 +1966-05-20,872.99,880.06,863.53,876.89,6430000,876.89 +1966-05-19,878.50,887.86,869.65,872.99,8640000,872.99 +1966-05-18,864.42,883.96,864.42,878.50,9310000,878.50 +1966-05-17,867.53,876.83,859.13,864.14,9870000,864.14 +1966-05-16,876.11,881.73,862.86,867.53,9260000,867.53 +1966-05-13,884.85,884.85,868.65,876.11,8970000,876.11 +1966-05-12,895.43,900.00,878.84,885.57,8210000,885.57 +1966-05-11,895.48,908.40,892.70,895.43,7470000,895.43 +1966-05-10,886.80,904.39,886.35,895.48,9050000,895.48 +1966-05-09,902.83,903.39,883.18,886.80,9290000,886.80 +1966-05-06,899.77,909.18,882.90,902.83,13110000,902.83 +1966-05-05,914.86,919.65,897.55,899.77,10100000,899.77 +1966-05-04,921.77,923.38,906.23,914.86,9740000,914.86 +1966-05-03,931.95,932.12,919.20,921.77,8020000,921.77 +1966-05-02,933.68,939.64,926.61,931.95,7070000,931.95 +1966-04-29,937.41,942.09,930.23,933.68,7220000,933.68 +1966-04-28,944.54,945.54,927.22,937.41,8310000,937.41 +1966-04-27,947.21,951.28,937.58,944.54,7950000,944.54 +1966-04-26,950.55,955.56,943.20,947.21,7540000,947.21 +1966-04-25,949.83,957.51,942.09,950.55,7270000,950.55 +1966-04-22,954.73,957.23,944.09,949.83,8650000,949.83 +1966-04-21,951.28,961.91,946.82,954.73,9560000,954.73 +1966-04-20,941.75,957.01,941.75,951.28,10530000,951.28 +1966-04-19,941.98,946.99,934.02,941.64,8820000,941.64 +1966-04-18,947.77,953.22,936.91,941.98,9150000,941.98 +1966-04-15,945.48,957.40,941.70,947.77,10270000,947.77 +1966-04-14,938.36,953.67,936.52,945.48,12980000,945.48 +1966-04-13,937.24,945.32,930.01,938.36,10440000,938.36 +1966-04-12,942.42,947.10,932.51,937.24,10500000,937.24 +1966-04-11,945.76,950.77,937.69,942.42,9310000,942.42 +1966-04-07,945.26,952.39,939.53,945.76,9650000,945.76 +1966-04-06,944.71,951.22,937.58,945.26,9040000,945.26 +1966-04-05,937.86,951.44,935.91,944.71,10560000,944.71 +1966-04-04,931.29,945.48,930.51,937.86,9360000,937.86 +1966-04-01,924.77,936.30,921.77,931.29,9050000,931.29 +1966-03-31,919.76,929.12,916.31,924.77,6690000,924.77 +1966-03-30,928.00,928.00,915.31,919.76,7980000,919.76 +1966-03-29,932.62,937.19,922.88,929.39,8300000,929.39 +1966-03-28,929.95,940.36,928.61,932.62,8640000,932.62 +1966-03-25,928.61,936.52,925.38,929.95,7750000,929.95 +1966-03-24,929.00,933.35,923.37,928.61,7880000,928.61 +1966-03-23,934.52,935.91,924.88,929.00,6720000,929.00 +1966-03-22,929.28,942.92,929.28,934.52,8910000,934.52 +1966-03-21,922.88,935.52,921.65,929.17,7230000,929.17 +1966-03-18,919.32,928.95,914.58,922.88,6450000,922.88 +1966-03-17,916.03,922.99,912.58,919.32,5460000,919.32 +1966-03-16,911.08,922.27,909.13,916.03,7330000,916.03 +1966-03-15,917.09,919.15,905.40,911.08,9440000,911.08 +1966-03-14,927.95,930.01,914.36,917.09,7400000,917.09 +1966-03-11,929.23,937.30,924.72,927.95,7000000,927.95 +1966-03-10,929.84,941.42,924.10,929.23,10310000,929.23 +1966-03-09,919.98,933.51,918.98,929.84,7980000,929.84 +1966-03-08,917.78,928.95,909.57,919.98,10120000,919.98 +1966-03-07,932.34,932.46,914.81,917.78,9370000,917.78 +1966-03-04,936.35,943.31,928.89,932.34,9000000,932.34 +1966-03-03,932.01,941.25,922.27,936.35,9900000,936.35 +1966-03-02,938.19,943.09,927.78,932.01,10470000,932.01 +1966-03-01,951.89,955.17,935.52,938.19,11030000,938.19 +1966-02-28,953.00,960.41,948.21,951.89,9910000,951.89 +1966-02-25,950.66,962.30,946.10,953.00,8140000,953.00 +1966-02-24,960.13,962.19,946.60,950.66,7860000,950.66 +1966-02-23,966.48,967.87,955.12,960.13,8080000,960.13 +1966-02-21,975.22,977.11,962.80,966.48,8510000,966.48 +1966-02-18,975.27,982.07,966.31,975.22,8470000,975.22 +1966-02-17,982.40,985.85,969.93,975.27,9330000,975.27 +1966-02-16,981.57,987.80,976.22,982.40,9180000,982.40 +1966-02-15,987.69,990.81,977.61,981.57,8750000,981.57 +1966-02-14,989.03,995.60,983.24,987.69,8360000,987.69 +1966-02-11,990.81,997.99,984.96,989.03,8150000,989.03 +1966-02-10,995.15,1000.27,986.74,990.81,9790000,990.81 +1966-02-09,991.03,1001.11,987.63,995.15,9760000,995.15 +1966-02-08,989.69,998.71,979.28,991.03,10560000,991.03 +1966-02-07,986.35,996.71,981.84,989.69,8000000,989.69 +1966-02-04,981.23,991.53,976.00,986.35,7560000,986.35 +1966-02-03,982.29,991.59,976.33,981.23,8160000,981.23 +1966-02-02,975.89,985.35,967.81,982.29,8130000,982.29 +1966-02-01,983.51,987.47,969.43,975.89,9090000,975.89 +1966-01-31,985.35,992.53,979.67,983.51,7800000,983.51 +1966-01-28,990.36,994.59,979.95,985.35,9000000,985.35 +1966-01-27,990.92,997.49,985.02,990.36,8970000,990.36 +1966-01-26,991.64,999.16,984.13,990.92,9910000,990.92 +1966-01-25,991.42,998.21,986.52,991.64,9300000,991.64 +1966-01-24,988.14,999.22,984.63,991.42,8780000,991.42 +1966-01-21,987.80,993.20,980.62,988.14,9180000,988.14 +1966-01-20,991.14,997.77,983.90,987.80,8670000,987.80 +1966-01-19,994.20,1000.55,985.30,991.14,10230000,991.14 +1966-01-18,989.75,1000.50,984.68,994.20,9790000,994.20 +1966-01-17,987.30,996.60,984.02,989.75,9430000,989.75 +1966-01-14,985.69,994.09,982.07,987.30,9210000,987.30 +1966-01-13,983.96,992.65,980.23,985.69,8860000,985.69 +1966-01-12,986.85,992.59,980.45,983.96,8530000,983.96 +1966-01-11,985.41,993.04,980.34,986.85,8910000,986.85 +1966-01-10,986.13,991.92,980.56,985.41,7720000,985.41 +1966-01-07,985.46,991.59,978.61,986.13,7600000,986.13 +1966-01-06,981.62,992.26,979.00,985.46,7880000,985.46 +1966-01-05,969.26,984.85,968.76,981.62,9650000,981.62 +1966-01-04,968.54,978.50,963.02,969.26,7540000,969.26 +1966-01-03,969.26,974.55,961.91,968.54,5950000,968.54 +1965-12-31,963.69,976.61,962.58,969.26,7240000,969.26 +1965-12-30,960.30,969.76,957.62,963.69,7060000,963.69 +1965-12-29,957.96,969.15,953.67,960.30,7610000,960.30 +1965-12-28,959.79,966.09,950.05,957.96,7280000,957.96 +1965-12-27,966.36,972.49,958.29,959.79,5950000,959.79 +1965-12-23,965.86,972.93,959.35,966.36,6870000,966.36 +1965-12-22,959.46,974.16,956.34,965.86,9720000,965.86 +1965-12-21,952.22,964.86,950.05,959.46,8230000,959.46 +1965-12-20,957.85,960.69,947.16,952.22,7350000,952.22 +1965-12-17,959.13,966.09,952.61,957.85,9490000,957.85 +1965-12-16,958.74,967.14,953.78,959.13,9950000,959.13 +1965-12-15,954.06,964.81,947.99,958.74,9560000,958.74 +1965-12-14,951.55,959.85,948.05,954.06,9920000,954.06 +1965-12-13,952.72,959.52,946.54,951.55,8660000,951.55 +1965-12-10,949.55,957.51,945.71,952.72,8740000,952.72 +1965-12-09,946.60,955.67,942.59,949.55,9150000,949.55 +1965-12-08,951.33,959.63,943.42,946.60,10120000,946.60 +1965-12-07,939.53,958.63,938.80,951.33,9340000,951.33 +1965-12-06,946.10,946.15,924.44,939.53,11440000,939.53 +1965-12-03,944.59,950.94,939.36,946.10,8160000,946.10 +1965-12-02,947.60,951.11,938.80,944.59,9070000,944.59 +1965-12-01,946.71,953.00,941.81,947.60,10140000,947.60 +1965-11-30,946.93,950.89,937.24,946.71,8990000,946.71 +1965-11-29,948.16,954.84,942.48,946.93,8760000,946.93 +1965-11-26,948.94,953.56,943.76,948.16,6970000,948.16 +1965-11-24,948.94,956.06,942.98,948.94,7870000,948.94 +1965-11-23,946.38,953.28,941.87,948.94,7150000,948.94 +1965-11-22,952.72,954.95,941.48,946.38,6370000,946.38 +1965-11-19,950.50,958.51,946.88,952.72,6850000,952.72 +1965-11-18,956.57,958.24,945.26,950.50,7040000,950.50 +1965-11-17,956.51,963.14,950.66,956.57,9120000,956.57 +1965-11-16,955.90,962.08,950.27,956.51,8380000,956.51 +1965-11-15,956.29,963.91,951.39,955.90,8310000,955.90 +1965-11-12,953.28,961.80,949.44,956.29,7780000,956.29 +1965-11-11,951.22,955.84,946.15,953.28,5430000,953.28 +1965-11-10,951.72,957.34,946.60,951.22,4860000,951.22 +1965-11-09,953.95,959.13,945.76,951.72,6680000,951.72 +1965-11-08,959.46,961.74,948.60,953.95,7000000,953.95 +1965-11-05,961.85,967.42,953.89,959.46,7310000,959.46 +1965-11-04,961.13,969.98,956.23,961.85,8380000,961.85 +1965-11-03,958.96,965.97,953.06,961.13,7520000,961.13 +1965-11-01,960.82,964.36,953.61,958.96,6340000,958.96 +1965-10-29,959.11,966.47,955.38,960.82,7240000,960.82 +1965-10-28,959.50,965.21,952.75,959.11,7230000,959.11 +1965-10-27,956.32,967.46,954.83,959.50,7670000,959.50 +1965-10-26,948.14,959.44,945.95,956.32,6750000,956.32 +1965-10-25,952.42,958.95,944.30,948.14,7090000,948.14 +1965-10-22,950.28,959.39,946.71,952.42,8960000,952.42 +1965-10-21,948.47,957.36,944.90,950.28,9170000,950.28 +1965-10-20,947.76,953.57,941.72,948.47,8200000,948.47 +1965-10-19,945.84,955.49,943.15,947.76,8620000,947.76 +1965-10-18,940.68,952.31,939.31,945.84,8180000,945.84 +1965-10-15,937.50,945.07,934.15,940.68,7470000,940.68 +1965-10-14,941.01,946.22,933.87,937.50,8580000,937.50 +1965-10-13,941.12,945.84,935.74,941.01,9470000,941.01 +1965-10-12,942.65,947.92,936.73,941.12,9470000,941.12 +1965-10-11,938.32,948.30,936.40,942.65,9600000,942.65 +1965-10-08,934.42,944.08,932.50,938.32,7670000,938.32 +1965-10-07,936.84,941.83,930.75,934.42,6670000,934.42 +1965-10-06,938.70,942.49,927.29,936.84,6010000,936.84 +1965-10-05,930.86,942.49,930.14,938.70,6980000,938.70 +1965-10-04,929.65,935.57,924.05,930.86,5590000,930.86 +1965-10-01,930.58,936.07,923.23,929.65,7470000,929.65 +1965-09-30,932.39,939.20,927.40,930.58,8670000,930.58 +1965-09-29,935.85,944.96,927.89,932.39,10600000,932.39 +1965-09-28,937.88,943.42,928.66,935.85,8750000,935.85 +1965-09-27,929.54,944.74,927.89,937.88,6820000,937.88 +1965-09-24,927.45,933.65,918.89,929.54,7810000,929.54 +1965-09-23,931.62,938.37,922.95,927.45,9990000,927.45 +1965-09-22,926.52,936.62,922.35,931.62,8290000,931.62 +1965-09-21,931.18,936.73,923.45,926.52,7750000,926.52 +1965-09-20,928.99,937.00,924.27,931.18,7040000,931.18 +1965-09-17,931.18,934.59,922.57,928.99,6610000,928.99 +1965-09-16,922.95,935.46,922.73,931.18,7410000,931.18 +1965-09-15,916.59,927.89,913.41,922.95,6220000,922.95 +1965-09-14,920.92,928.22,913.57,916.59,7830000,916.59 +1965-09-13,918.95,927.62,913.41,920.92,7020000,920.92 +1965-09-10,917.47,924.00,911.65,918.95,6650000,918.95 +1965-09-09,913.68,923.12,911.81,917.47,7360000,917.47 +1965-09-08,910.11,918.45,905.67,913.68,6240000,913.68 +1965-09-07,907.97,915.22,904.30,910.11,5750000,910.11 +1965-09-03,900.46,910.28,900.46,907.97,6010000,907.97 +1965-09-02,893.60,903.03,892.17,900.40,6470000,900.40 +1965-09-01,893.10,897.93,886.96,893.60,5890000,893.60 +1965-08-31,895.63,900.84,888.22,893.10,5170000,893.10 +1965-08-30,895.96,899.69,890.52,895.63,4400000,895.63 +1965-08-27,896.18,901.88,891.95,895.96,5570000,895.96 +1965-08-26,890.85,899.25,886.74,896.18,6010000,896.18 +1965-08-25,887.12,895.79,884.38,890.85,6240000,890.85 +1965-08-24,887.07,893.05,883.50,887.12,4740000,887.12 +1965-08-23,889.92,893.65,883.94,887.07,4470000,887.07 +1965-08-20,891.79,894.97,884.71,889.92,4170000,889.92 +1965-08-19,894.37,900.13,889.43,891.79,5000000,891.79 +1965-08-18,894.26,901.39,890.30,894.37,5850000,894.37 +1965-08-17,891.13,898.37,888.11,894.26,4520000,894.26 +1965-08-16,888.82,896.89,886.41,891.13,5270000,891.13 +1965-08-13,881.96,891.95,880.48,888.82,5430000,888.82 +1965-08-12,881.47,886.90,876.86,881.96,5160000,881.96 +1965-08-11,878.89,885.42,876.48,881.47,5030000,881.47 +1965-08-10,879.77,883.39,875.43,878.89,4690000,878.89 +1965-08-09,882.51,887.40,876.31,879.77,4540000,879.77 +1965-08-06,881.63,886.57,875.38,882.51,4200000,882.51 +1965-08-05,883.88,886.96,878.34,881.63,4920000,881.63 +1965-08-04,881.20,888.11,878.40,883.88,4830000,883.88 +1965-08-03,881.85,885.04,874.78,881.20,4640000,881.20 +1965-08-02,881.74,888.11,876.48,881.85,4220000,881.85 +1965-07-30,875.49,885.31,875.49,881.74,5200000,881.74 +1965-07-29,867.92,877.85,864.62,874.23,4690000,874.23 +1965-07-28,863.53,873.18,858.42,867.92,4760000,867.92 +1965-07-27,867.26,872.09,860.78,863.53,4190000,863.53 +1965-07-26,863.97,870.66,858.75,867.26,3790000,867.26 +1965-07-23,861.77,869.40,859.58,863.97,3600000,863.97 +1965-07-22,865.01,868.08,857.71,861.77,3310000,861.77 +1965-07-21,868.79,872.58,860.95,865.01,4350000,865.01 +1965-07-20,880.26,882.02,866.82,868.79,4670000,868.79 +1965-07-19,880.43,884.54,876.09,880.26,3220000,880.26 +1965-07-16,880.98,885.91,875.98,880.43,3520000,880.43 +1965-07-15,883.23,889.98,878.62,880.98,4420000,880.98 +1965-07-14,876.97,886.24,874.23,883.23,4100000,883.23 +1965-07-13,877.96,881.03,872.47,876.97,3260000,876.97 +1965-07-12,879.49,883.99,874.39,877.96,3690000,877.96 +1965-07-09,877.85,885.04,874.72,879.49,4800000,879.49 +1965-07-08,870.77,880.59,867.20,877.85,4380000,877.85 +1965-07-07,873.18,874.61,866.71,870.77,3020000,870.77 +1965-07-06,875.16,879.60,870.00,873.18,3400000,873.18 +1965-07-02,871.59,878.40,866.76,875.16,4260000,875.16 +1965-07-01,868.03,873.84,861.88,871.59,4520000,871.59 +1965-06-30,856.94,873.35,856.94,868.03,6930000,868.03 +1965-06-29,840.59,856.45,832.74,851.40,10450000,851.40 +1965-06-28,854.36,858.86,838.78,840.59,7650000,840.59 +1965-06-25,857.76,861.99,849.75,854.36,5790000,854.36 +1965-06-24,870.22,870.93,854.64,857.76,5840000,857.76 +1965-06-23,875.43,879.38,868.25,870.22,3580000,870.22 +1965-06-22,874.12,882.18,871.48,875.43,3330000,875.43 +1965-06-21,879.17,881.47,868.79,874.12,3280000,874.12 +1965-06-18,883.06,888.22,875.10,879.17,4330000,879.17 +1965-06-17,878.07,888.44,876.20,883.06,5220000,883.06 +1965-06-16,874.57,886.13,873.40,878.07,6290000,878.07 +1965-06-15,868.71,876.75,859.13,874.57,8450000,874.57 +1965-06-14,881.70,885.43,863.87,868.71,5920000,868.71 +1965-06-11,876.49,886.55,874.52,881.70,5350000,881.70 +1965-06-10,879.84,887.56,869.35,876.49,7470000,876.49 +1965-06-09,889.05,893.79,875.90,879.84,7070000,879.84 +1965-06-08,902.15,903.16,886.71,889.05,4660000,889.05 +1965-06-07,900.87,907.47,889.90,902.15,4680000,902.15 +1965-06-04,899.22,905.02,894.69,900.87,4530000,900.87 +1965-06-03,904.06,913.11,896.40,899.22,5720000,899.22 +1965-06-02,908.53,910.08,894.75,904.06,6790000,904.06 +1965-06-01,918.04,921.85,907.04,908.53,4830000,908.53 +1965-05-28,913.22,920.69,910.89,918.04,4270000,918.04 +1965-05-27,917.16,918.20,904.82,913.22,5520000,913.22 +1965-05-26,921.00,927.48,915.09,917.16,5330000,917.16 +1965-05-25,914.21,924.58,912.55,921.00,4950000,921.00 +1965-05-24,922.01,924.27,910.89,914.21,4790000,914.21 +1965-05-21,927.27,928.02,918.66,922.01,4660000,922.01 +1965-05-20,932.12,934.17,922.41,927.27,5750000,927.27 +1965-05-19,930.62,936.87,926.97,932.12,5860000,932.12 +1965-05-18,930.67,932.82,924.36,930.62,5130000,930.62 +1965-05-17,939.62,941.52,928.07,930.67,4980000,930.67 +1965-05-14,938.87,944.82,933.82,939.62,5860000,939.62 +1965-05-13,934.17,942.37,933.52,938.87,6460000,938.87 +1965-05-12,930.92,938.12,928.72,934.17,6310000,934.17 +1965-05-11,931.47,934.87,925.62,930.92,5150000,930.92 +1965-05-10,932.52,937.22,926.62,931.47,5600000,931.47 +1965-05-07,933.52,937.07,927.07,932.52,5820000,932.52 +1965-05-06,932.22,938.12,928.02,933.52,6340000,933.52 +1965-05-05,928.22,936.37,924.91,932.22,6350000,932.22 +1965-05-04,922.11,931.07,919.71,928.22,5720000,928.22 +1965-05-03,922.31,926.97,916.66,922.11,5340000,922.11 +1965-04-30,918.71,925.42,915.36,922.31,5190000,922.31 +1965-04-29,918.86,923.01,914.91,918.71,5510000,918.71 +1965-04-28,918.16,923.56,914.01,918.86,5680000,918.86 +1965-04-27,916.86,924.96,915.76,918.16,6310000,918.16 +1965-04-26,916.41,920.11,910.21,916.86,5410000,916.86 +1965-04-23,915.06,921.51,912.26,916.41,5860000,916.41 +1965-04-22,910.71,917.51,908.31,915.06,5990000,915.06 +1965-04-21,911.96,915.31,903.81,910.71,5590000,910.71 +1965-04-20,912.76,919.01,908.01,911.96,6480000,911.96 +1965-04-19,911.91,917.41,907.91,912.76,5700000,912.76 +1965-04-15,912.86,917.01,905.71,911.91,5830000,911.91 +1965-04-14,908.01,916.51,905.96,912.86,6580000,912.86 +1965-04-13,906.36,912.41,902.21,908.01,6690000,908.01 +1965-04-12,901.29,909.51,899.90,906.36,6040000,906.36 +1965-04-09,897.90,905.77,895.93,901.29,6580000,901.29 +1965-04-08,892.94,900.41,890.72,897.90,5770000,897.90 +1965-04-07,891.90,895.84,888.27,892.94,4430000,892.94 +1965-04-06,893.23,896.13,888.51,891.90,4610000,891.90 +1965-04-05,893.38,898.69,889.00,893.23,4920000,893.23 +1965-04-02,890.33,897.31,888.71,893.38,5060000,893.38 +1965-04-01,889.05,894.95,886.84,890.33,4890000,890.33 +1965-03-31,889.05,893.72,885.51,889.05,4470000,889.05 +1965-03-30,887.82,892.99,885.27,889.05,4270000,889.05 +1965-03-29,891.66,896.43,884.68,887.82,4590000,887.82 +1965-03-26,898.34,900.60,888.51,891.66,5020000,891.66 +1965-03-25,900.56,904.88,895.74,898.34,5460000,898.34 +1965-03-24,898.69,904.39,896.13,900.56,5420000,900.56 +1965-03-23,896.12,902.32,893.82,898.69,4820000,898.69 +1965-03-22,895.79,901.14,892.87,896.12,4920000,896.12 +1965-03-19,896.55,900.43,892.20,895.79,5040000,895.79 +1965-03-18,899.37,902.67,893.35,896.55,4990000,896.55 +1965-03-17,898.90,904.01,894.45,899.37,5120000,899.37 +1965-03-16,899.85,904.58,894.83,898.90,5480000,898.90 +1965-03-15,900.33,907.88,896.89,899.85,6000000,899.85 +1965-03-12,896.51,905.16,894.50,900.33,6370000,900.33 +1965-03-11,892.39,900.71,890.24,896.51,5770000,896.51 +1965-03-10,894.07,898.13,888.81,892.39,5100000,892.39 +1965-03-09,896.84,900.71,890.72,894.07,5210000,894.07 +1965-03-08,895.98,901.81,891.30,896.84,5250000,896.84 +1965-03-05,897.75,898.61,886.28,895.98,6120000,895.98 +1965-03-04,900.76,905.25,894.45,897.75,7300000,897.75 +1965-03-03,901.91,906.95,896.27,900.76,6600000,900.76 +1965-03-02,899.76,905.73,896.17,901.91,5730000,901.91 +1965-03-01,903.48,907.40,895.55,899.76,5780000,899.76 +1965-02-26,899.90,908.26,897.08,903.48,5800000,903.48 +1965-02-25,897.84,904.82,894.64,899.90,6680000,899.90 +1965-02-24,891.96,900.76,891.30,897.84,7160000,897.84 +1965-02-23,885.61,895.84,884.60,891.96,5880000,891.96 +1965-02-19,883.69,890.24,880.25,885.61,5560000,885.61 +1965-02-18,882.93,888.52,878.53,883.69,6060000,883.69 +1965-02-17,881.35,889.10,877.86,882.93,5510000,882.93 +1965-02-16,885.32,887.90,877.48,881.35,5000000,881.35 +1965-02-15,888.47,895.26,882.60,885.32,5760000,885.32 +1965-02-12,881.88,891.15,881.45,888.47,4960000,888.47 +1965-02-11,892.92,897.70,879.97,881.88,5800000,881.88 +1965-02-10,901.24,905.54,890.77,892.92,7210000,892.92 +1965-02-09,897.89,905.40,896.12,901.24,5690000,901.24 +1965-02-08,901.57,901.86,889.96,897.89,6010000,897.89 +1965-02-05,904.06,906.93,897.70,901.57,5690000,901.57 +1965-02-04,906.30,911.80,900.33,904.06,6230000,904.06 +1965-02-03,903.77,909.75,898.99,906.30,6130000,906.30 +1965-02-02,903.68,907.21,898.61,903.77,5460000,903.77 +1965-02-01,902.86,908.26,897.99,903.68,5690000,903.68 +1965-01-29,900.95,907.79,898.32,902.86,6940000,902.86 +1965-01-28,899.52,906.26,895.79,900.95,6730000,900.95 +1965-01-27,897.84,904.44,894.26,899.52,6010000,899.52 +1965-01-26,896.46,901.86,892.30,897.84,5760000,897.84 +1965-01-25,893.59,900.71,890.82,896.46,5370000,896.46 +1965-01-22,893.26,898.70,888.43,893.59,5430000,893.59 +1965-01-21,895.31,897.46,887.81,893.26,4780000,893.26 +1965-01-20,896.27,901.43,891.92,895.31,5550000,895.31 +1965-01-19,895.21,902.10,891.10,896.27,5550000,896.27 +1965-01-18,891.15,898.90,889.86,895.21,5550000,895.21 +1965-01-15,887.18,895.12,884.65,891.15,5340000,891.15 +1965-01-14,886.85,892.30,881.59,887.18,5810000,887.18 +1965-01-13,885.89,891.77,883.22,886.85,6160000,886.85 +1965-01-12,883.22,889.34,880.97,885.89,5400000,885.89 +1965-01-11,882.60,887.42,877.43,883.22,5440000,883.22 +1965-01-08,884.36,888.62,878.87,882.60,5340000,882.60 +1965-01-07,879.68,887.52,876.95,884.36,5080000,884.36 +1965-01-06,875.86,885.08,875.04,879.68,4850000,879.68 +1965-01-05,869.78,879.87,868.69,875.86,4110000,875.86 +1965-01-04,874.13,877.19,865.10,869.78,3930000,869.78 +1964-12-31,868.78,879.78,868.78,874.13,6470000,874.13 +1964-12-30,862.18,871.51,861.56,868.69,5610000,868.69 +1964-12-29,867.01,868.78,858.26,862.18,4450000,862.18 +1964-12-28,868.16,871.98,863.09,867.01,3990000,867.01 +1964-12-24,868.02,872.89,863.57,868.16,3600000,868.16 +1964-12-23,870.36,876.05,863.19,868.02,4470000,868.02 +1964-12-22,869.74,876.38,865.86,870.36,4520000,870.36 +1964-12-21,868.73,875.62,866.10,869.74,4470000,869.74 +1964-12-18,863.57,872.22,862.95,868.73,4630000,868.73 +1964-12-17,860.08,867.30,857.50,863.57,4850000,863.57 +1964-12-16,857.45,865.34,854.87,860.08,4610000,860.08 +1964-12-15,860.65,862.71,850.19,857.45,5340000,857.45 +1964-12-14,864.34,868.78,857.40,860.65,4340000,860.65 +1964-12-11,863.14,869.31,860.22,864.34,4530000,864.34 +1964-12-10,863.81,869.16,858.46,863.14,4790000,863.14 +1964-12-09,870.69,873.13,861.61,863.81,5120000,863.81 +1964-12-08,873.99,878.44,867.35,870.69,4990000,870.69 +1964-12-07,871.17,881.35,871.17,873.99,4770000,873.99 +1964-12-04,870.79,875.09,866.44,870.93,4340000,870.93 +1964-12-03,867.25,876.86,867.25,870.79,4250000,870.79 +1964-12-02,864.43,871.84,861.08,867.16,4930000,867.16 +1964-12-01,875.43,877.96,863.04,864.43,4940000,864.43 +1964-11-30,882.12,885.22,871.46,875.43,4890000,875.43 +1964-11-27,882.40,886.80,874.47,882.12,4070000,882.12 +1964-11-25,887.61,890.00,880.16,882.40,4800000,882.40 +1964-11-24,889.29,891.49,881.11,887.61,5070000,887.61 +1964-11-23,890.72,894.83,882.88,889.29,4860000,889.29 +1964-11-20,888.71,896.41,884.51,890.72,5210000,890.72 +1964-11-19,891.71,892.97,882.07,888.71,5570000,888.71 +1964-11-18,885.39,897.00,884.69,891.71,6560000,891.71 +1964-11-17,880.19,892.18,880.19,885.39,5920000,885.39 +1964-11-16,874.11,883.52,870.22,880.10,4870000,880.10 +1964-11-13,874.62,878.46,870.73,874.11,4860000,874.11 +1964-11-12,873.59,880.00,870.41,874.62,5250000,874.62 +1964-11-11,870.64,876.17,866.80,873.59,3790000,873.59 +1964-11-10,874.57,878.32,867.60,870.64,5020000,870.64 +1964-11-09,876.87,880.00,871.34,874.57,4560000,874.57 +1964-11-06,873.54,879.35,869.33,876.87,4810000,876.87 +1964-11-05,873.82,879.26,869.10,873.54,4380000,873.54 +1964-11-04,875.51,881.27,870.41,873.82,4720000,873.82 +1964-11-02,873.08,878.13,867.64,875.51,4430000,875.51 +1964-10-30,871.86,876.91,868.91,873.08,4120000,873.08 +1964-10-29,871.16,876.87,867.83,871.86,4390000,871.86 +1964-10-28,875.98,879.58,867.79,871.16,4890000,871.16 +1964-10-27,877.01,880.33,872.75,875.98,4470000,875.98 +1964-10-26,877.62,883.33,873.45,877.01,5230000,877.01 +1964-10-23,877.01,879.91,872.14,877.62,3830000,877.62 +1964-10-22,879.72,883.33,872.51,877.01,4670000,877.01 +1964-10-21,881.50,886.28,876.49,879.72,5170000,879.72 +1964-10-20,876.21,884.87,873.97,881.50,5140000,881.50 +1964-10-19,873.54,879.82,870.41,876.21,5010000,876.21 +1964-10-16,868.44,877.71,866.80,873.54,5140000,873.54 +1964-10-15,875.18,876.40,861.42,868.44,6500000,868.44 +1964-10-14,876.21,880.00,872.00,875.18,4530000,875.18 +1964-10-13,877.57,881.88,871.95,876.21,5400000,876.21 +1964-10-12,878.08,881.50,874.76,877.57,4110000,877.57 +1964-10-09,874.90,881.78,872.65,878.08,5290000,878.08 +1964-10-08,873.78,879.40,869.56,874.90,5060000,874.90 +1964-10-07,875.14,879.02,871.34,873.78,5090000,873.78 +1964-10-06,877.15,881.17,872.05,875.14,4820000,875.14 +1964-10-05,872.65,882.39,871.48,877.15,4850000,877.15 +1964-10-02,872.00,876.21,867.36,872.65,4370000,872.65 +1964-10-01,875.37,878.23,869.80,872.00,4470000,872.00 +1964-09-30,875.74,880.24,872.19,875.37,4720000,875.37 +1964-09-29,875.46,880.14,871.30,875.74,5070000,875.74 +1964-09-28,874.71,879.40,869.24,875.46,4810000,875.46 +1964-09-25,872.98,879.26,868.72,874.71,6170000,874.71 +1964-09-24,871.95,876.96,867.04,872.98,5840000,872.98 +1964-09-23,872.47,876.77,867.88,871.95,5920000,871.95 +1964-09-22,871.58,877.43,868.67,872.47,5250000,872.47 +1964-09-21,866.47,875.00,866.47,871.58,5310000,871.58 +1964-09-18,868.67,873.92,860.20,865.12,6160000,865.12 +1964-09-17,864.18,873.17,862.87,868.67,6380000,868.67 +1964-09-16,862.54,867.64,857.35,864.18,4230000,864.18 +1964-09-15,866.24,871.30,860.95,862.54,5690000,862.54 +1964-09-14,867.13,872.84,862.35,866.24,5370000,866.24 +1964-09-11,859.50,870.64,857.06,867.13,5630000,867.13 +1964-09-10,855.57,863.06,852.66,859.50,5470000,859.50 +1964-09-09,851.91,860.01,850.56,855.57,5690000,855.57 +1964-09-08,848.31,855.61,847.61,851.91,4090000,851.91 +1964-09-04,846.02,850.84,843.58,848.31,4210000,848.31 +1964-09-03,845.08,848.97,841.24,846.02,4310000,846.02 +1964-09-02,844.00,849.62,840.96,845.08,4800000,845.08 +1964-09-01,838.48,846.06,836.56,844.00,4650000,844.00 +1964-08-31,839.09,842.83,834.59,838.48,3340000,838.48 +1964-08-28,835.25,841.94,833.98,839.09,3760000,839.09 +1964-08-27,829.21,837.40,826.91,835.25,3560000,835.25 +1964-08-26,832.20,834.87,826.59,829.21,3300000,829.21 +1964-08-25,837.31,839.09,830.29,832.20,3780000,832.20 +1964-08-24,838.62,843.21,834.83,837.31,3790000,837.31 +1964-08-21,838.71,842.60,835.39,838.62,3620000,838.62 +1964-08-20,841.76,844.19,835.44,838.71,3840000,838.71 +1964-08-19,842.83,847.19,838.24,841.76,4160000,841.76 +1964-08-18,840.21,845.64,837.17,842.83,4180000,842.83 +1964-08-17,838.81,844.77,836.18,840.21,3780000,840.21 +1964-08-14,838.52,844.00,834.92,838.81,4080000,838.81 +1964-08-13,834.08,842.41,833.14,838.52,4600000,838.52 +1964-08-12,828.08,837.54,827.29,834.08,4140000,834.08 +1964-08-11,829.35,832.95,825.56,828.08,3450000,828.08 +1964-08-10,829.16,834.08,825.18,829.35,3050000,829.35 +1964-08-07,823.40,831.60,822.75,829.16,3190000,829.16 +1964-08-06,833.05,835.90,822.56,823.40,3940000,823.40 +1964-08-05,832.77,835.44,820.78,833.05,6160000,833.05 +1964-08-04,840.35,840.91,829.96,832.77,4780000,832.77 +1964-08-03,841.10,844.28,837.45,840.35,3780000,840.35 +1964-07-31,839.37,844.80,836.89,841.10,4220000,841.10 +1964-07-30,838.67,843.86,836.14,839.37,4530000,839.37 +1964-07-29,837.35,842.93,834.31,838.67,4050000,838.67 +1964-07-28,841.05,842.27,833.47,837.35,3860000,837.35 +1964-07-27,845.64,849.53,838.95,841.05,4090000,841.05 +1964-07-24,846.48,850.32,842.88,845.64,4210000,845.64 +1964-07-23,847.65,851.54,842.93,846.48,4560000,846.48 +1964-07-22,846.95,851.45,841.71,847.65,4570000,847.65 +1964-07-21,849.39,851.49,841.85,846.95,4570000,846.95 +1964-07-20,851.35,855.19,847.00,849.39,4390000,849.39 +1964-07-17,847.47,854.11,845.45,851.35,4640000,851.35 +1964-07-16,844.80,850.04,842.04,847.47,4640000,847.47 +1964-07-15,843.63,849.06,839.27,844.80,4610000,844.80 +1964-07-14,845.55,849.53,839.60,843.63,4760000,843.63 +1964-07-13,847.51,851.54,841.90,845.55,4800000,845.55 +1964-07-10,845.13,852.52,841.99,847.51,5420000,847.51 +1964-07-09,845.45,849.85,841.01,845.13,5040000,845.13 +1964-07-08,844.94,849.34,839.98,845.45,4760000,845.45 +1964-07-07,844.24,849.15,841.66,844.94,5240000,844.94 +1964-07-06,841.47,848.64,838.01,844.24,5080000,844.24 +1964-07-02,838.06,844.75,836.04,841.47,5230000,841.47 +1964-07-01,831.50,839.88,829.30,838.06,5320000,838.06 +1964-06-30,830.94,834.64,826.31,831.50,4360000,831.50 +1964-06-29,830.99,835.90,827.01,830.94,4380000,830.94 +1964-06-26,827.48,833.05,825.09,830.99,4440000,830.99 +1964-06-25,827.01,832.39,823.40,827.48,5010000,827.48 +1964-06-24,822.70,831.17,819.80,827.01,4840000,827.01 +1964-06-23,826.38,830.05,820.55,822.70,4060000,822.70 +1964-06-22,825.25,831.97,823.30,826.38,4540000,826.38 +1964-06-19,823.98,828.11,819.94,825.25,4050000,825.25 +1964-06-18,823.35,829.42,820.62,823.98,4730000,823.98 +1964-06-17,818.16,826.45,817.63,823.35,5340000,823.35 +1964-06-16,813.56,821.22,812.63,818.16,4590000,818.16 +1964-06-15,809.39,816.79,808.11,813.56,4110000,813.56 +1964-06-12,811.25,814.22,806.52,809.39,3840000,809.39 +1964-06-11,807.53,815.15,806.65,811.25,3620000,811.25 +1964-06-10,805.54,812.10,803.99,807.53,4170000,807.53 +1964-06-09,800.31,808.15,796.90,805.54,4470000,805.54 +1964-06-08,806.03,808.95,798.50,800.31,4010000,800.31 +1964-06-05,802.48,810.37,801.78,806.03,4240000,806.03 +1964-06-04,811.79,813.38,800.75,802.48,4880000,802.48 +1964-06-03,813.78,818.16,809.84,811.79,3990000,811.79 +1964-06-02,818.56,820.34,811.87,813.78,4180000,813.78 +1964-06-01,820.56,824.94,815.82,818.56,4300000,818.56 +1964-05-28,817.94,824.14,814.80,820.56,4560000,820.56 +1964-05-27,818.92,822.20,812.63,817.94,4450000,817.94 +1964-05-26,820.25,824.01,816.88,818.92,4290000,818.92 +1964-05-25,820.87,825.47,816.39,820.25,3990000,820.25 +1964-05-22,819.80,824.81,816.57,820.87,4640000,820.87 +1964-05-21,820.11,826.45,816.08,819.80,5350000,819.80 +1964-05-20,817.28,824.10,815.15,820.11,4790000,820.11 +1964-05-19,821.31,823.26,813.96,817.28,4360000,817.28 +1964-05-18,826.23,829.33,819.18,821.31,4590000,821.31 +1964-05-15,824.45,829.15,821.22,826.23,5070000,826.23 +1964-05-14,825.78,828.62,819.63,824.45,4720000,824.45 +1964-05-13,827.38,832.78,822.24,825.78,5890000,825.78 +1964-05-12,827.07,832.25,824.41,827.38,5200000,827.38 +1964-05-11,828.57,832.21,824.10,827.07,4490000,827.07 +1964-05-08,830.17,834.55,825.12,828.57,4910000,828.57 +1964-05-07,828.18,836.06,824.19,830.17,5600000,830.17 +1964-05-06,826.63,832.34,822.55,828.18,5560000,828.18 +1964-05-05,823.83,829.28,817.23,826.63,5340000,826.63 +1964-05-04,817.10,828.09,816.39,823.83,5360000,823.83 +1964-05-01,810.77,819.40,808.55,817.10,5990000,817.10 +1964-04-30,812.81,816.88,807.18,810.77,5690000,810.77 +1964-04-29,816.70,821.97,810.32,812.81,6200000,812.81 +1964-04-28,811.87,820.11,809.04,816.70,4790000,816.70 +1964-04-27,814.89,817.68,807.71,811.87,5070000,811.87 +1964-04-24,821.66,823.79,813.51,814.89,5610000,814.89 +1964-04-23,823.57,830.04,819.32,821.66,6690000,821.66 +1964-04-22,826.45,828.09,820.25,823.57,5390000,823.57 +1964-04-21,824.54,830.70,820.47,826.45,5750000,826.45 +1964-04-20,827.33,829.81,821.49,824.54,5560000,824.54 +1964-04-17,825.65,831.63,822.51,827.33,6030000,827.33 +1964-04-16,825.43,830.12,821.22,825.65,5240000,825.65 +1964-04-15,822.95,828.62,820.38,825.43,5270000,825.43 +1964-04-14,821.31,826.63,818.12,822.95,5120000,822.95 +1964-04-13,821.75,826.71,818.21,821.31,5330000,821.31 +1964-04-10,821.35,825.34,819.14,821.75,4990000,821.75 +1964-04-09,824.19,827.51,819.54,821.35,5300000,821.35 +1964-04-08,822.77,828.09,818.87,824.19,5380000,824.19 +1964-04-07,824.76,829.42,819.18,822.77,5900000,822.77 +1964-04-06,822.99,828.88,820.51,824.76,5840000,824.76 +1964-04-03,820.87,828.49,818.43,822.99,5990000,822.99 +1964-04-02,816.08,825.12,815.20,820.87,6840000,820.87 +1964-04-01,813.29,819.23,809.79,816.08,5510000,816.08 +1964-03-31,815.29,817.94,810.37,813.29,5270000,813.29 +1964-03-30,815.91,819.98,812.18,815.29,6060000,815.29 +1964-03-26,813.16,819.45,811.39,815.91,5760000,815.91 +1964-03-25,811.43,816.35,808.60,813.16,5420000,813.16 +1964-03-24,813.60,816.92,808.95,811.43,5210000,811.43 +1964-03-23,814.93,817.72,809.93,813.60,4940000,813.60 +1964-03-20,819.36,820.47,810.81,814.93,5020000,814.93 +1964-03-19,820.25,824.72,815.91,819.36,5670000,819.36 +1964-03-18,818.16,824.23,814.67,820.25,5890000,820.25 +1964-03-17,816.48,821.80,812.58,818.16,5480000,818.16 +1964-03-16,816.22,821.35,813.25,816.48,5140000,816.48 +1964-03-13,814.22,819.85,810.94,816.22,5660000,816.22 +1964-03-12,813.87,818.08,809.22,814.22,5290000,814.22 +1964-03-11,809.39,817.01,807.84,813.87,6180000,813.87 +1964-03-10,807.18,811.96,803.37,809.39,5500000,809.39 +1964-03-09,806.03,812.14,803.41,807.18,5510000,807.18 +1964-03-06,803.77,809.13,801.16,806.03,4790000,806.03 +1964-03-05,804.70,807.93,799.78,803.77,4680000,803.77 +1964-03-04,805.72,810.19,800.80,804.70,5250000,804.70 +1964-03-03,802.75,809.75,801.33,805.72,5350000,805.72 +1964-03-02,800.14,807.22,798.05,802.75,5690000,802.75 +1964-02-28,797.04,802.35,793.80,800.14,4980000,800.14 +1964-02-27,799.38,803.46,795.44,797.04,5420000,797.04 +1964-02-26,796.59,802.00,793.80,799.38,5350000,799.38 +1964-02-25,797.12,800.54,792.96,796.59,5010000,796.59 +1964-02-24,796.99,802.93,793.32,797.12,5630000,797.12 +1964-02-20,794.91,800.93,791.41,796.99,4690000,796.99 +1964-02-19,795.40,800.27,791.32,794.91,4280000,794.91 +1964-02-18,796.19,800.67,791.32,795.40,4660000,795.40 +1964-02-17,794.56,800.40,791.45,796.19,4780000,796.19 +1964-02-14,794.42,798.85,789.95,794.56,4360000,794.56 +1964-02-13,794.82,799.07,789.99,794.42,4820000,794.42 +1964-02-12,792.16,798.14,790.39,794.82,4650000,794.82 +1964-02-11,788.71,795.04,786.58,792.16,4040000,792.16 +1964-02-10,791.59,797.17,786.76,788.71,4150000,788.71 +1964-02-07,786.41,795.40,784.37,791.59,4710000,791.59 +1964-02-06,783.04,789.42,780.69,786.41,4110000,786.41 +1964-02-05,783.30,789.82,777.99,783.04,4010000,783.04 +1964-02-04,784.72,787.78,778.96,783.30,4320000,783.30 +1964-02-03,785.34,789.90,780.25,784.72,4140000,784.72 +1964-01-31,783.44,789.77,780.34,785.34,4000000,785.34 +1964-01-30,782.60,788.35,778.88,783.44,4230000,783.44 +1964-01-29,787.78,790.04,779.72,782.60,4450000,782.60 +1964-01-28,785.34,791.63,781.75,787.78,4720000,787.78 +1964-01-27,783.04,790.39,780.43,785.34,5240000,785.34 +1964-01-24,782.86,787.65,778.12,783.04,5080000,783.04 +1964-01-23,781.31,787.60,777.95,782.86,5380000,782.86 +1964-01-22,776.44,786.89,774.45,781.31,5430000,781.31 +1964-01-21,773.03,779.54,767.80,776.44,4800000,776.44 +1964-01-20,775.69,780.47,769.82,773.03,5570000,773.03 +1964-01-17,776.13,779.41,770.59,775.69,5600000,775.69 +1964-01-16,774.71,781.71,770.95,776.13,6200000,776.13 +1964-01-15,774.49,779.63,768.55,774.71,6750000,774.71 +1964-01-14,773.12,778.88,770.46,774.49,6500000,774.49 +1964-01-13,774.33,777.86,768.38,773.12,5440000,773.12 +1964-01-10,776.55,778.81,770.38,774.33,5260000,774.33 +1964-01-09,774.46,780.59,770.29,776.55,5180000,776.55 +1964-01-08,771.73,777.25,768.94,774.46,5380000,774.46 +1964-01-07,769.51,776.12,766.12,771.73,5700000,771.73 +1964-01-06,767.68,773.77,764.77,769.51,5480000,769.51 +1964-01-03,766.08,771.73,763.77,767.68,5550000,767.68 +1964-01-02,762.95,770.73,760.34,766.08,4680000,766.08 +1963-12-31,759.90,767.55,758.64,762.95,6730000,762.95 +1963-12-30,762.95,764.12,756.64,759.90,4930000,759.90 +1963-12-27,760.21,767.77,758.51,762.95,4360000,762.95 +1963-12-26,756.86,764.47,754.91,760.21,3700000,760.21 +1963-12-24,758.30,763.16,752.82,756.86,3970000,756.86 +1963-12-23,762.08,765.03,754.43,758.30,4540000,758.30 +1963-12-20,763.86,767.29,757.91,762.08,4600000,762.08 +1963-12-19,767.21,769.81,760.73,763.86,4410000,763.86 +1963-12-18,766.38,773.07,762.43,767.21,6000000,767.21 +1963-12-17,761.64,769.51,758.99,766.38,5140000,766.38 +1963-12-16,760.17,765.03,756.12,761.64,4280000,761.64 +1963-12-13,757.43,762.82,756.25,760.17,4290000,760.17 +1963-12-12,757.21,761.60,754.30,757.43,4220000,757.43 +1963-12-11,759.25,762.03,754.04,757.21,4400000,757.21 +1963-12-10,759.08,764.25,754.95,759.25,4560000,759.25 +1963-12-09,760.25,764.29,755.43,759.08,4430000,759.08 +1963-12-06,763.86,767.21,757.12,760.25,4830000,760.25 +1963-12-05,755.51,766.21,753.69,763.86,5190000,763.86 +1963-12-04,751.82,758.51,747.17,755.51,4790000,755.51 +1963-12-03,751.91,756.82,747.26,751.82,4520000,751.82 +1963-12-02,750.52,757.95,746.78,751.91,4770000,751.91 +1963-11-29,741.00,752.39,738.56,750.52,4810000,750.52 +1963-11-27,743.52,746.91,735.87,741.00,5210000,741.00 +1963-11-26,732.96,746.60,732.96,743.52,9320000,743.52 +1963-11-22,732.65,739.00,710.83,711.49,6630000,711.49 +1963-11-21,742.06,744.69,730.57,732.65,5670000,732.65 +1963-11-20,736.65,747.51,733.44,742.06,5330000,742.06 +1963-11-19,734.85,743.13,731.64,736.65,4430000,736.65 +1963-11-18,740.00,743.09,731.08,734.85,4730000,734.85 +1963-11-15,747.04,749.22,737.90,740.00,4790000,740.00 +1963-11-14,751.11,753.30,744.42,747.04,4610000,747.04 +1963-11-13,750.21,753.77,745.88,751.11,4710000,751.11 +1963-11-12,753.77,756.82,748.36,750.21,4610000,750.21 +1963-11-11,750.81,756.56,749.95,753.77,3970000,753.77 +1963-11-08,745.66,753.47,744.63,750.81,4570000,750.81 +1963-11-07,744.03,750.21,740.99,745.66,4320000,745.66 +1963-11-06,749.22,749.82,738.41,744.03,5600000,744.03 +1963-11-04,753.73,757.12,746.09,749.22,5440000,749.22 +1963-11-01,755.23,759.56,750.30,753.73,5240000,753.73 +1963-10-31,755.19,759.00,749.78,755.23,5030000,755.23 +1963-10-30,760.50,762.78,751.80,755.19,5170000,755.19 +1963-10-29,759.39,767.24,755.49,760.50,6100000,760.50 +1963-10-28,755.61,765.70,752.95,759.39,7150000,759.39 +1963-10-25,751.80,759.90,748.62,755.61,6390000,755.61 +1963-10-24,746.48,755.91,744.12,751.80,6280000,751.80 +1963-10-23,747.21,752.10,742.40,746.48,5830000,746.48 +1963-10-22,752.31,753.60,742.70,747.21,6420000,747.21 +1963-10-21,750.60,757.12,747.25,752.31,5450000,752.31 +1963-10-18,750.77,755.36,747.94,750.60,5830000,750.60 +1963-10-17,748.45,755.83,746.99,750.77,6790000,750.77 +1963-10-16,742.19,750.42,740.04,748.45,5570000,748.45 +1963-10-15,741.84,746.43,738.97,742.19,4550000,742.19 +1963-10-14,741.76,744.98,738.03,741.84,4270000,741.84 +1963-10-11,740.56,746.05,737.60,741.76,4740000,741.76 +1963-10-10,739.83,743.52,733.69,740.56,4470000,740.56 +1963-10-09,743.90,747.16,737.90,739.83,5520000,739.83 +1963-10-08,743.86,748.97,739.23,743.90,4920000,743.90 +1963-10-07,745.06,749.91,740.90,743.86,4050000,743.86 +1963-10-04,744.25,750.98,741.72,745.06,5120000,745.06 +1963-10-03,737.94,746.86,736.61,744.25,4510000,744.25 +1963-10-02,738.33,742.06,734.64,737.94,3780000,737.94 +1963-10-01,732.79,742.57,732.49,738.33,4420000,738.33 +1963-09-30,737.98,739.83,728.63,732.79,3730000,732.79 +1963-09-27,736.95,741.33,731.55,737.98,4350000,737.98 +1963-09-26,743.69,745.28,734.68,736.95,5100000,736.95 +1963-09-25,745.96,753.04,739.31,743.69,6340000,743.69 +1963-09-24,740.43,748.54,737.13,745.96,5520000,745.96 +1963-09-23,743.60,746.99,736.65,740.43,5140000,740.43 +1963-09-20,743.22,749.27,740.64,743.60,5310000,743.60 +1963-09-19,737.86,744.63,736.48,743.22,4080000,743.22 +1963-09-18,740.13,744.08,734.98,737.86,5070000,737.86 +1963-09-17,738.46,744.50,736.83,740.13,4950000,740.13 +1963-09-16,740.13,744.68,736.61,738.46,4740000,738.46 +1963-09-13,740.26,744.42,737.25,740.13,5230000,740.13 +1963-09-12,740.34,744.46,735.45,740.26,5560000,740.26 +1963-09-11,737.43,746.18,736.87,740.34,6670000,740.34 +1963-09-10,732.92,740.34,730.56,737.43,5310000,737.43 +1963-09-09,735.37,739.27,730.09,732.92,5020000,732.92 +1963-09-06,737.98,742.66,733.22,735.37,7160000,735.37 +1963-09-05,732.92,739.87,729.49,737.98,5700000,737.98 +1963-09-04,732.02,737.60,728.89,732.92,6070000,732.92 +1963-09-03,729.32,735.50,728.76,732.02,5570000,732.02 +1963-08-30,726.40,731.68,724.00,729.32,4560000,729.32 +1963-08-29,725.07,730.09,723.27,726.40,5110000,726.40 +1963-08-28,719.88,728.72,719.67,725.07,5120000,725.07 +1963-08-27,724.17,725.16,717.95,719.88,4080000,719.88 +1963-08-26,723.14,728.38,721.00,724.17,4700000,724.17 +1963-08-23,718.47,726.02,718.21,723.14,4880000,723.14 +1963-08-22,715.72,720.57,712.59,718.47,4540000,718.47 +1963-08-21,717.27,719.80,713.49,715.72,3820000,715.72 +1963-08-20,718.81,721.34,714.39,717.27,3660000,717.27 +1963-08-19,719.32,723.57,715.72,718.81,3650000,718.81 +1963-08-16,718.55,722.93,714.91,719.32,4130000,719.32 +1963-08-15,714.95,721.51,712.63,718.55,4980000,718.55 +1963-08-14,711.13,717.39,707.61,714.95,4420000,714.95 +1963-08-13,710.27,714.31,707.83,711.13,4450000,711.13 +1963-08-12,708.39,714.09,705.51,710.27,4770000,710.27 +1963-08-09,704.18,709.84,701.48,708.39,4050000,708.39 +1963-08-08,703.92,707.36,699.85,704.18,3460000,704.18 +1963-08-07,707.06,710.62,701.78,703.92,3790000,703.92 +1963-08-06,702.55,709.42,700.92,707.06,3760000,707.06 +1963-08-05,697.83,704.83,697.10,702.55,3370000,702.55 +1963-08-02,694.87,700.54,693.11,697.83,2940000,697.83 +1963-08-01,695.43,699.21,691.23,694.87,3410000,694.87 +1963-07-31,696.42,701.99,693.03,695.43,3960000,695.43 +1963-07-30,690.71,698.30,690.07,696.42,3550000,696.42 +1963-07-29,689.38,693.20,686.68,690.71,2840000,690.71 +1963-07-26,687.71,691.44,684.58,689.38,2510000,689.38 +1963-07-25,690.88,696.20,685.95,687.71,3710000,687.71 +1963-07-24,687.84,693.41,685.99,690.88,2810000,690.88 +1963-07-23,688.74,694.83,685.74,687.84,3500000,687.84 +1963-07-22,693.89,696.16,684.41,688.74,3700000,688.74 +1963-07-19,695.90,697.53,689.21,693.89,3340000,693.89 +1963-07-18,699.72,703.20,693.93,695.90,3710000,695.90 +1963-07-17,702.12,705.73,697.10,699.72,3940000,699.72 +1963-07-16,703.28,706.28,699.76,702.12,3000000,702.12 +1963-07-15,707.70,708.86,700.58,703.28,3290000,703.28 +1963-07-12,709.76,712.55,705.21,707.70,3660000,707.70 +1963-07-11,712.12,715.98,707.87,709.76,4100000,709.76 +1963-07-10,714.09,716.28,708.90,712.12,3730000,712.12 +1963-07-09,710.66,717.22,709.07,714.09,3830000,714.09 +1963-07-08,716.45,717.22,708.64,710.66,3290000,710.66 +1963-07-05,713.36,719.02,712.20,716.45,2910000,716.45 +1963-07-03,708.94,716.19,708.51,713.36,4030000,713.36 +1963-07-02,701.35,711.35,699.93,708.94,3540000,708.94 +1963-07-01,706.88,709.11,698.86,701.35,3360000,701.35 +1963-06-28,706.03,710.79,702.89,706.88,3020000,706.88 +1963-06-27,708.99,712.93,702.42,706.03,4540000,706.03 +1963-06-26,716.32,716.49,706.46,708.99,4500000,708.99 +1963-06-25,718.42,722.07,713.83,716.32,4120000,716.32 +1963-06-24,720.78,723.87,715.64,718.42,3700000,718.42 +1963-06-21,718.85,724.81,716.06,720.78,4190000,720.78 +1963-06-20,719.84,722.76,711.95,718.85,4970000,718.85 +1963-06-19,718.90,723.27,715.98,719.84,3970000,719.84 +1963-06-18,718.21,722.50,714.99,718.90,3910000,718.90 +1963-06-17,722.03,723.61,716.11,718.21,3510000,718.21 +1963-06-14,721.43,725.72,718.34,722.03,3840000,722.03 +1963-06-13,723.36,727.09,719.92,721.43,4690000,721.43 +1963-06-12,718.38,727.60,717.05,723.36,5210000,723.36 +1963-06-11,716.49,721.94,714.00,718.38,4390000,718.38 +1963-06-10,722.41,722.88,711.65,716.49,4690000,716.49 +1963-06-07,726.87,730.31,719.41,722.41,5110000,722.41 +1963-06-06,725.93,730.78,721.81,726.87,4990000,726.87 +1963-06-05,726.49,732.97,722.46,725.93,5860000,725.93 +1963-06-04,726.27,730.01,721.30,726.49,5970000,726.49 +1963-06-03,726.96,731.59,723.57,726.27,5400000,726.27 +1963-05-31,722.50,730.43,721.85,726.96,4680000,726.96 +1963-05-29,717.95,725.59,717.22,722.50,4320000,722.50 +1963-05-28,718.25,722.16,714.26,717.95,3860000,717.95 +1963-05-27,720.53,721.98,714.52,718.25,3760000,718.25 +1963-05-24,721.38,724.56,716.66,720.53,4320000,720.53 +1963-05-23,722.84,725.67,718.12,721.38,4400000,721.38 +1963-05-22,724.04,728.76,720.18,722.84,5560000,722.84 +1963-05-21,720.18,727.26,717.48,724.04,5570000,724.04 +1963-05-20,724.81,726.19,716.45,720.18,4710000,720.18 +1963-05-17,722.84,727.13,720.01,724.81,4410000,724.81 +1963-05-16,724.34,728.63,719.75,722.84,5640000,722.84 +1963-05-15,719.84,727.69,717.22,724.34,5650000,724.34 +1963-05-14,723.01,724.94,717.95,719.84,4740000,719.84 +1963-05-13,723.30,727.13,720.53,723.01,4920000,723.01 +1963-05-10,721.97,726.02,718.62,723.30,5260000,723.30 +1963-05-09,718.54,726.48,717.20,721.97,5600000,721.97 +1963-05-08,712.55,720.96,710.96,718.54,5140000,718.54 +1963-05-07,713.77,716.78,708.16,712.55,4140000,712.55 +1963-05-06,718.08,721.84,711.68,713.77,4090000,713.77 +1963-05-03,721.09,723.77,716.53,718.08,4760000,718.08 +1963-05-02,719.67,724.69,717.32,721.09,4480000,721.09 +1963-05-01,717.70,723.89,716.40,719.67,5060000,719.67 +1963-04-30,715.11,721.46,711.93,717.70,4680000,717.70 +1963-04-29,717.16,719.54,712.05,715.11,3980000,715.11 +1963-04-26,718.33,721.59,714.77,717.16,4490000,717.16 +1963-04-25,717.74,721.92,712.68,718.33,5070000,718.33 +1963-04-24,714.98,720.96,713.89,717.74,5910000,717.74 +1963-04-23,711.01,717.53,707.83,714.98,5220000,714.98 +1963-04-22,711.68,717.07,708.70,711.01,5180000,711.01 +1963-04-19,708.16,713.72,705.32,711.68,4660000,711.68 +1963-04-18,710.25,713.31,705.44,708.16,4770000,708.16 +1963-04-17,710.92,715.23,705.19,710.25,5220000,710.25 +1963-04-16,711.38,716.74,706.32,710.92,5570000,710.92 +1963-04-15,708.45,716.61,705.94,711.38,5930000,711.38 +1963-04-11,704.35,711.34,700.09,708.45,5250000,708.45 +1963-04-10,706.03,710.50,698.25,704.35,5880000,704.35 +1963-04-09,706.03,709.83,701.05,706.03,5090000,706.03 +1963-04-08,702.43,709.46,700.84,706.03,5940000,706.03 +1963-04-05,697.12,703.77,693.18,702.43,5240000,702.43 +1963-04-04,690.76,699.12,690.76,697.12,5300000,697.12 +1963-04-03,684.27,692.81,683.23,690.51,4660000,690.51 +1963-04-02,685.86,691.18,682.14,684.27,4360000,684.27 +1963-04-01,682.52,689.34,680.55,685.86,3890000,685.86 +1963-03-29,682.47,685.74,678.92,682.52,3390000,682.52 +1963-03-28,684.73,687.37,680.80,682.47,3890000,682.47 +1963-03-27,680.38,686.95,679.17,684.73,4270000,684.73 +1963-03-26,678.17,684.23,676.79,680.38,4100000,680.38 +1963-03-25,677.83,682.31,674.94,678.17,3700000,678.17 +1963-03-22,675.57,680.68,673.19,677.83,3820000,677.83 +1963-03-21,677.12,680.01,673.15,675.57,3220000,675.57 +1963-03-20,672.06,679.34,671.10,677.12,3690000,677.12 +1963-03-19,673.56,675.95,669.17,672.06,3180000,672.06 +1963-03-18,676.33,678.92,671.14,673.56,3250000,673.56 +1963-03-15,673.73,679.30,671.72,676.33,3400000,676.33 +1963-03-14,677.66,680.09,671.97,673.73,3540000,673.73 +1963-03-13,675.20,680.93,673.56,677.66,4120000,677.66 +1963-03-12,674.02,678.17,671.31,675.20,3350000,675.20 +1963-03-11,672.43,677.83,670.01,674.02,3180000,674.02 +1963-03-08,671.43,675.57,668.38,672.43,3360000,672.43 +1963-03-07,668.08,675.03,667.12,671.43,3350000,671.43 +1963-03-06,667.16,669.80,662.02,668.08,3100000,668.08 +1963-03-05,667.04,672.85,663.02,667.16,3280000,667.16 +1963-03-04,659.72,670.30,659.22,667.04,3650000,667.04 +1963-03-01,662.94,667.63,656.66,659.72,3920000,659.72 +1963-02-28,670.80,672.64,661.27,662.94,4090000,662.94 +1963-02-27,675.28,678.12,669.05,670.80,3680000,670.80 +1963-02-26,674.61,679.21,671.31,675.28,3670000,675.28 +1963-02-25,681.64,682.06,673.15,674.61,3680000,674.61 +1963-02-21,682.06,684.94,675.87,681.64,3980000,681.64 +1963-02-20,686.07,686.07,678.79,682.06,4120000,682.06 +1963-02-19,688.96,690.51,683.73,686.83,4130000,686.83 +1963-02-18,686.07,694.27,685.15,688.96,4700000,688.96 +1963-02-15,684.86,689.67,680.89,686.07,4410000,686.07 +1963-02-14,681.72,688.71,679.59,684.86,5640000,684.86 +1963-02-13,676.62,684.82,674.48,681.72,4960000,681.72 +1963-02-12,674.74,678.08,669.84,676.62,3710000,676.62 +1963-02-11,679.92,681.85,672.98,674.74,3880000,674.74 +1963-02-08,679.09,682.31,673.90,679.92,3890000,679.92 +1963-02-07,682.52,686.32,676.49,679.09,4240000,679.09 +1963-02-06,681.30,686.74,678.25,682.52,4340000,682.52 +1963-02-05,682.01,683.65,672.60,681.30,4050000,681.30 +1963-02-04,683.19,687.20,678.92,682.01,3670000,682.01 +1963-02-01,682.85,686.57,679.21,683.19,4280000,683.19 +1963-01-31,678.58,685.24,675.28,682.85,4270000,682.85 +1963-01-30,683.73,684.48,675.82,678.58,3740000,678.58 +1963-01-29,682.89,686.91,678.29,683.73,4360000,683.73 +1963-01-28,679.71,686.53,678.50,682.89,4720000,682.89 +1963-01-25,676.99,683.81,673.31,679.71,4770000,679.71 +1963-01-24,677.58,681.09,673.94,676.99,4810000,676.99 +1963-01-23,675.53,680.38,674.02,677.58,4820000,677.58 +1963-01-22,675.24,679.13,671.81,675.53,4810000,675.53 +1963-01-21,672.52,676.74,668.42,675.24,4090000,675.24 +1963-01-18,672.98,679.09,669.55,672.52,4760000,672.52 +1963-01-17,669.00,676.07,665.07,672.98,5230000,672.98 +1963-01-16,675.36,676.03,666.70,669.00,4260000,669.00 +1963-01-15,675.74,680.80,672.14,675.36,5930000,675.36 +1963-01-14,671.60,678.46,669.38,675.74,5000000,675.74 +1963-01-11,669.51,673.61,665.91,671.60,4410000,671.60 +1963-01-10,668.00,673.73,666.54,669.51,4520000,669.51 +1963-01-09,669.88,674.23,665.95,668.00,5110000,668.00 +1963-01-08,662.14,672.18,661.10,669.88,5410000,669.88 +1963-01-07,662.23,666.70,657.83,662.14,4440000,662.14 +1963-01-04,657.42,665.66,656.25,662.23,5400000,662.23 +1963-01-03,646.79,659.17,646.62,657.42,4570000,657.42 +1963-01-02,652.10,654.53,643.57,646.79,2540000,646.79 +1962-12-31,651.43,654.53,648.05,652.10,5420000,652.10 +1962-12-28,650.56,653.90,647.21,651.43,4140000,651.43 +1962-12-27,651.64,655.07,648.42,650.56,3670000,650.56 +1962-12-26,647.71,654.40,647.33,651.64,3370000,651.64 +1962-12-24,646.41,651.48,643.65,647.71,3180000,647.71 +1962-12-21,648.55,651.81,643.40,646.41,3470000,646.41 +1962-12-20,647.00,652.69,645.20,648.55,4220000,648.55 +1962-12-19,640.14,648.63,636.88,647.00,4000000,647.00 +1962-12-18,645.49,646.75,638.09,640.14,3620000,640.14 +1962-12-17,648.09,650.97,643.03,645.49,3590000,645.49 +1962-12-14,645.20,650.35,641.02,648.09,3280000,648.09 +1962-12-13,647.33,651.94,641.73,645.20,3380000,645.20 +1962-12-12,645.16,653.02,643.49,647.33,3760000,647.33 +1962-12-11,645.08,648.46,638.88,645.16,3700000,645.16 +1962-12-10,652.10,655.07,642.73,645.08,4270000,645.08 +1962-12-07,651.73,655.83,646.87,652.10,3900000,652.10 +1962-12-06,653.99,657.00,646.92,651.73,4600000,651.73 +1962-12-05,651.48,658.78,649.68,653.99,6280000,653.99 +1962-12-04,646.41,654.61,644.07,651.48,5210000,651.48 +1962-12-03,649.30,651.22,642.06,646.41,3810000,646.41 +1962-11-30,652.61,655.03,645.70,649.30,4570000,649.30 +1962-11-29,651.85,655.95,646.54,652.61,5810000,652.61 +1962-11-28,648.05,654.86,646.50,651.85,5980000,651.85 +1962-11-27,642.06,650.39,639.72,648.05,5500000,648.05 +1962-11-26,644.87,651.27,638.34,642.06,5650000,642.06 +1962-11-23,637.25,649.26,635.50,644.87,5660000,644.87 +1962-11-21,632.94,640.36,630.18,637.25,5100000,637.25 +1962-11-20,626.21,634.91,624.20,632.94,4290000,632.94 +1962-11-19,630.98,633.36,624.03,626.21,3410000,626.21 +1962-11-16,629.14,633.82,623.87,630.98,4000000,630.98 +1962-11-15,630.48,636.25,626.67,629.14,5050000,629.14 +1962-11-14,623.11,632.99,619.77,630.48,5090000,630.48 +1962-11-13,624.41,628.47,618.85,623.11,4550000,623.11 +1962-11-12,617.38,627.25,617.38,624.41,5090000,624.41 +1962-11-09,609.14,617.51,605.33,616.13,4340000,616.13 +1962-11-08,615.75,619.68,606.84,609.14,4160000,609.14 +1962-11-07,610.48,620.06,605.58,615.75,4580000,615.75 +1962-11-05,604.58,614.45,602.66,610.48,4320000,610.48 +1962-11-02,597.13,609.43,592.87,604.58,5470000,604.58 +1962-11-01,589.77,599.60,582.66,597.13,3400000,597.13 +1962-10-31,588.98,594.79,586.13,589.77,3090000,589.77 +1962-10-30,579.35,591.49,578.94,588.98,3830000,588.98 +1962-10-29,576.13,586.59,576.13,579.35,4280000,579.35 +1962-10-26,570.86,573.54,564.88,569.02,2580000,569.02 +1962-10-25,575.84,575.84,562.79,570.86,3950000,570.86 +1962-10-24,558.06,578.52,549.65,576.68,6720000,576.68 +1962-10-23,568.60,573.96,556.18,558.06,6110000,558.06 +1962-10-22,573.29,573.41,563.16,568.60,5690000,568.60 +1962-10-19,581.15,582.78,570.44,573.29,4650000,573.29 +1962-10-18,587.68,588.01,579.44,581.15,3280000,581.15 +1962-10-17,589.35,590.52,581.91,587.68,3240000,587.68 +1962-10-16,589.69,594.12,587.01,589.35,2860000,589.35 +1962-10-15,586.47,592.28,584.08,589.69,2640000,589.69 +1962-10-12,586.47,589.02,582.83,586.47,2020000,586.47 +1962-10-11,588.14,590.69,584.08,586.47,2460000,586.47 +1962-10-10,587.18,594.00,586.26,588.14,3040000,588.14 +1962-10-09,586.09,589.35,582.70,587.18,2340000,587.18 +1962-10-08,586.59,589.90,583.24,586.09,1950000,586.09 +1962-10-05,582.41,588.47,581.11,586.59,2730000,586.59 +1962-10-04,578.52,583.37,575.38,582.41,2530000,582.41 +1962-10-03,578.73,584.37,576.09,578.52,2610000,578.52 +1962-10-02,571.95,582.66,570.78,578.73,3000000,578.73 +1962-10-01,578.98,579.90,569.23,571.95,3090000,571.95 +1962-09-28,574.12,582.70,573.20,578.98,2850000,578.98 +1962-09-27,578.48,581.99,572.16,574.12,3540000,574.12 +1962-09-26,588.22,591.28,576.30,578.48,3550000,578.48 +1962-09-25,582.91,590.52,578.73,588.22,3620000,588.22 +1962-09-24,589.06,589.06,578.73,582.91,5000000,582.91 +1962-09-21,601.32,601.32,589.52,591.78,4280000,591.78 +1962-09-20,607.09,608.93,600.31,601.65,3350000,601.65 +1962-09-19,607.09,609.89,603.66,607.09,2950000,607.09 +1962-09-18,607.63,612.44,604.83,607.09,3690000,607.09 +1962-09-17,605.84,611.57,603.45,607.63,3330000,607.63 +1962-09-14,603.99,607.93,601.28,605.84,2880000,605.84 +1962-09-13,606.34,609.77,601.94,603.99,3100000,603.99 +1962-09-12,603.99,608.97,601.28,606.34,3100000,606.34 +1962-09-11,602.03,607.88,599.23,603.99,3040000,603.99 +1962-09-10,600.86,603.66,595.38,602.03,2520000,602.03 +1962-09-07,600.81,606.34,598.26,600.86,2890000,600.86 +1962-09-06,599.14,603.32,594.08,600.81,3180000,600.81 +1962-09-05,602.45,604.96,596.42,599.14,3050000,599.14 +1962-09-04,609.18,612.44,601.28,602.45,2970000,602.45 +1962-08-31,602.32,610.19,600.27,609.18,2830000,609.18 +1962-08-30,603.24,606.80,599.85,602.32,2260000,602.32 +1962-08-29,605.25,606.42,598.81,603.24,2900000,603.24 +1962-08-28,612.57,613.11,602.95,605.25,3180000,605.25 +1962-08-27,613.74,616.84,609.27,612.57,3140000,612.57 +1962-08-24,616.00,617.67,608.81,613.74,2890000,613.74 +1962-08-23,615.54,622.02,612.32,616.00,4770000,616.00 +1962-08-22,608.64,617.63,606.42,615.54,4520000,615.54 +1962-08-21,612.86,614.66,605.79,608.64,3730000,608.64 +1962-08-20,610.02,615.67,608.09,612.86,4580000,612.86 +1962-08-17,606.71,611.98,604.62,610.02,3430000,610.02 +1962-08-16,606.76,611.15,602.74,606.71,4180000,606.71 +1962-08-15,601.94,610.90,601.94,606.76,4880000,606.76 +1962-08-14,595.29,603.91,593.03,601.90,3640000,601.90 +1962-08-13,592.32,597.51,590.65,595.29,2670000,595.29 +1962-08-10,591.19,595.67,587.55,592.32,2470000,592.32 +1962-08-09,590.94,595.17,588.43,591.19,2670000,591.19 +1962-08-08,588.35,592.11,582.12,590.94,3080000,590.94 +1962-08-07,593.24,593.66,585.71,588.35,2970000,588.35 +1962-08-06,596.38,598.56,590.27,593.24,3110000,593.24 +1962-08-03,593.83,598.35,591.11,596.38,5990000,596.38 +1962-08-02,591.36,596.55,588.26,593.83,3410000,593.83 +1962-08-01,597.64,597.64,588.68,591.36,3100000,591.36 +1962-07-31,591.78,601.15,591.78,597.93,4190000,597.93 +1962-07-30,585.00,593.03,583.87,591.44,3200000,591.44 +1962-07-27,579.61,586.80,577.14,585.00,2890000,585.00 +1962-07-26,574.67,582.87,574.08,579.61,2790000,579.61 +1962-07-25,574.12,576.55,568.10,574.67,2910000,574.67 +1962-07-24,577.47,579.31,572.03,574.12,2560000,574.12 +1962-07-23,577.18,582.24,574.50,577.47,2770000,577.47 +1962-07-20,573.16,579.86,570.78,577.18,2610000,577.18 +1962-07-19,571.24,578.68,568.98,573.16,3090000,573.16 +1962-07-18,577.39,577.39,568.02,571.24,3620000,571.24 +1962-07-17,588.10,588.77,576.59,577.85,3500000,577.85 +1962-07-16,590.19,591.23,582.41,588.10,3130000,588.10 +1962-07-13,590.27,592.99,583.87,590.19,3380000,590.19 +1962-07-12,589.06,596.59,586.68,590.27,5370000,590.27 +1962-07-11,586.01,590.94,580.36,589.06,4250000,589.06 +1962-07-10,583.50,599.02,583.50,586.01,7120000,586.01 +1962-07-09,576.17,582.28,569.65,580.82,2950000,580.82 +1962-07-06,582.58,582.58,571.28,576.17,3110000,576.17 +1962-07-05,579.48,586.30,577.39,583.87,3350000,583.87 +1962-07-03,573.75,582.99,570.53,579.48,3920000,579.48 +1962-07-02,561.28,576.63,557.31,573.75,3450000,573.75 +1962-06-29,557.35,569.06,555.22,561.28,4720000,561.28 +1962-06-28,541.49,559.32,541.49,557.35,5440000,557.35 +1962-06-27,535.76,539.28,528.73,536.98,3890000,536.98 +1962-06-26,536.77,548.61,533.46,535.76,4630000,535.76 +1962-06-25,539.19,541.24,524.55,536.77,7090000,536.77 +1962-06-22,550.49,551.99,537.56,539.19,5640000,539.19 +1962-06-21,561.87,561.87,549.15,550.49,4560000,550.49 +1962-06-20,571.61,574.59,561.28,563.08,3360000,563.08 +1962-06-19,574.21,575.21,566.59,571.61,2680000,571.61 +1962-06-18,578.18,583.08,567.05,574.21,4580000,574.21 +1962-06-15,563.00,579.90,556.09,578.18,7130000,578.18 +1962-06-14,574.04,579.14,560.28,563.00,6240000,563.00 +1962-06-13,580.94,586.42,572.20,574.04,5850000,574.04 +1962-06-12,593.83,593.83,580.11,580.94,4690000,580.94 +1962-06-11,601.61,603.20,592.66,595.17,2870000,595.17 +1962-06-08,602.20,607.30,598.64,601.61,2560000,601.61 +1962-06-07,603.91,608.14,599.27,602.20,2760000,602.20 +1962-06-06,595.50,611.82,595.50,603.91,4190000,603.91 +1962-06-05,593.68,603.37,584.12,594.96,6140000,594.96 +1962-06-04,608.82,608.82,591.37,593.68,5380000,593.68 +1962-06-01,613.36,616.54,603.58,611.05,5760000,611.05 +1962-05-31,605.73,625.00,605.73,613.36,10710000,613.36 +1962-05-29,576.93,613.11,553.75,603.96,14750000,603.96 +1962-05-28,609.77,609.77,573.55,576.93,9350000,576.93 +1962-05-25,622.56,625.94,606.18,611.88,6380000,611.88 +1962-05-24,626.52,634.24,619.84,622.56,5250000,622.56 +1962-05-23,636.34,637.83,622.56,626.52,5450000,626.52 +1962-05-22,648.59,649.33,634.57,636.34,3640000,636.34 +1962-05-21,650.70,652.14,645.09,648.59,2260000,648.59 +1962-05-18,649.79,653.63,644.55,650.70,2490000,650.70 +1962-05-17,654.04,654.33,644.01,649.79,2950000,649.79 +1962-05-16,655.36,660.23,650.12,654.04,3360000,654.04 +1962-05-15,647.56,660.64,647.56,655.36,4780000,655.36 +1962-05-14,640.63,649.13,626.85,646.20,5990000,646.20 +1962-05-11,647.23,653.79,637.45,640.63,4510000,640.63 +1962-05-10,654.70,656.06,641.50,647.23,4730000,647.23 +1962-05-09,663.90,664.15,652.31,654.70,3670000,654.70 +1962-05-08,670.99,672.68,661.38,663.90,3020000,663.90 +1962-05-07,671.20,675.74,666.41,670.99,2530000,670.99 +1962-05-04,675.49,676.77,666.79,671.20,3010000,671.20 +1962-05-03,669.96,679.20,668.93,675.49,3320000,675.49 +1962-05-02,671.24,677.35,666.08,669.96,3780000,669.96 +1962-05-01,665.33,673.59,655.44,671.24,5100000,671.24 +1962-04-30,672.20,678.64,661.48,665.33,4150000,665.33 +1962-04-27,678.68,685.84,668.40,672.20,4140000,672.20 +1962-04-26,683.69,687.82,676.29,678.68,3650000,678.68 +1962-04-25,693.00,694.13,681.55,683.69,3340000,683.69 +1962-04-24,694.61,698.42,690.29,693.00,3040000,693.00 +1962-04-23,694.25,700.04,690.37,694.61,3240000,694.61 +1962-04-19,691.01,696.80,688.63,694.25,3100000,694.25 +1962-04-18,688.43,696.03,686.77,691.01,3350000,691.01 +1962-04-17,684.06,690.93,681.31,688.43,2940000,688.43 +1962-04-16,687.90,690.65,681.18,684.06,3070000,684.06 +1962-04-13,685.67,691.86,679.08,687.90,3470000,687.90 +1962-04-12,694.37,694.37,683.49,685.67,3320000,685.67 +1962-04-11,695.46,703.68,693.40,694.90,3240000,694.90 +1962-04-10,692.96,697.85,688.75,695.46,2880000,695.46 +1962-04-09,699.63,701.17,691.30,692.96,3020000,692.96 +1962-04-06,700.88,705.42,697.73,699.63,2730000,699.63 +1962-04-05,696.88,703.35,693.32,700.88,3130000,700.88 +1962-04-04,700.60,705.05,695.26,696.88,3290000,696.88 +1962-04-03,705.42,707.52,697.61,700.60,3350000,700.60 +1962-04-02,706.95,709.74,702.91,705.42,2790000,705.42 +1962-03-30,711.28,712.17,703.27,706.95,2950000,706.95 +1962-03-29,712.25,716.94,709.58,711.28,2870000,711.28 +1962-03-28,707.28,714.64,705.70,712.25,2940000,712.25 +1962-03-27,710.67,713.34,704.12,707.28,3090000,707.28 +1962-03-26,716.46,717.88,708.69,710.67,3040000,710.67 +1962-03-23,716.70,720.18,713.02,716.46,3050000,716.46 +1962-03-22,716.62,720.18,713.38,716.70,3130000,716.70 +1962-03-21,719.66,722.49,713.59,716.62,3360000,716.62 +1962-03-20,720.38,723.17,716.78,719.66,3060000,719.66 +1962-03-19,722.27,725.28,717.39,720.38,3220000,720.38 +1962-03-16,723.54,727.14,719.29,722.27,3060000,722.27 +1962-03-15,720.95,726.65,718.08,723.54,3250000,723.54 +1962-03-14,716.58,724.67,715.89,720.95,3670000,720.95 +1962-03-13,714.68,719.66,711.56,716.58,3200000,716.58 +1962-03-12,714.44,718.44,709.62,714.68,3280000,714.68 +1962-03-09,713.75,718.28,710.96,714.44,3340000,714.44 +1962-03-08,706.63,715.25,704.57,713.75,3210000,713.75 +1962-03-07,708.17,710.63,703.88,706.63,2890000,706.63 +1962-03-06,709.99,712.94,704.81,708.17,2870000,708.17 +1962-03-05,711.00,714.15,706.02,709.99,3020000,709.99 +1962-03-02,711.81,715.61,707.64,711.00,2980000,711.00 +1962-03-01,708.05,715.89,706.67,711.81,2960000,711.81 +1962-02-28,709.22,713.75,704.93,708.05,3030000,708.05 +1962-02-27,706.22,712.98,704.16,709.22,3110000,709.22 +1962-02-26,709.54,711.77,702.91,706.22,2910000,706.22 +1962-02-23,713.02,713.71,705.09,709.54,3230000,709.54 +1962-02-21,717.55,720.14,710.43,713.02,3310000,713.02 +1962-02-20,714.36,719.61,711.24,717.55,3300000,717.55 +1962-02-19,716.46,720.14,711.28,714.36,3350000,714.36 +1962-02-16,717.27,721.39,713.22,716.46,3700000,716.46 +1962-02-15,713.67,720.79,711.77,717.27,3470000,717.27 +1962-02-14,714.32,716.90,709.14,713.67,3630000,713.67 +1962-02-13,714.92,718.72,711.32,714.32,3400000,714.32 +1962-02-12,714.27,718.52,711.81,714.92,2620000,714.92 +1962-02-09,716.82,718.40,709.34,714.27,3370000,714.27 +1962-02-08,715.73,719.86,712.45,716.82,3810000,716.82 +1962-02-07,710.39,717.35,708.94,715.73,4140000,715.73 +1962-02-06,706.14,713.22,702.06,710.39,3650000,710.39 +1962-02-05,706.55,710.84,702.34,706.14,3890000,706.14 +1962-02-02,702.54,709.34,699.11,706.55,3950000,706.55 +1962-02-01,700.00,707.36,696.07,702.54,4260000,702.54 +1962-01-31,694.09,702.75,692.27,700.00,3840000,700.00 +1962-01-30,689.92,698.38,687.82,694.09,3520000,694.09 +1962-01-29,692.19,695.71,686.89,689.92,3050000,689.92 +1962-01-26,696.52,698.13,689.11,692.19,3330000,692.19 +1962-01-25,698.17,703.80,694.17,696.52,3560000,696.52 +1962-01-24,698.54,701.69,689.52,698.17,3760000,698.17 +1962-01-23,701.98,704.40,694.57,698.54,3350000,698.54 +1962-01-22,700.72,706.27,698.05,701.98,3810000,701.98 +1962-01-19,696.03,703.35,694.29,700.72,3800000,700.72 +1962-01-18,697.41,700.12,690.21,696.03,3460000,696.03 +1962-01-17,705.29,707.03,694.86,697.41,3780000,697.41 +1962-01-16,709.50,711.20,700.97,705.29,3650000,705.29 +1962-01-15,711.73,715.00,706.18,709.50,3450000,709.50 +1962-01-12,710.67,717.71,707.92,711.73,3730000,711.73 +1962-01-11,706.02,713.10,702.26,710.67,3390000,710.67 +1962-01-10,707.64,711.81,701.69,706.02,3300000,706.02 +1962-01-09,708.98,714.96,703.88,707.64,3600000,707.64 +1962-01-08,714.84,715.69,698.42,708.98,4620000,708.98 +1962-01-05,722.53,725.60,709.74,714.84,4630000,714.84 +1962-01-04,726.01,733.77,718.00,722.53,4450000,722.53 +1962-01-03,724.71,729.61,720.22,726.01,3590000,726.01 +1962-01-02,731.14,734.38,721.39,724.71,3120000,724.71 +1961-12-29,731.51,734.99,726.41,731.14,5370000,731.14 +1961-12-28,731.43,738.79,728.88,731.51,4530000,731.51 +1961-12-27,723.34,734.54,723.34,731.43,4170000,731.43 +1961-12-26,720.87,727.42,717.92,723.09,3180000,723.09 +1961-12-22,720.10,725.08,714.60,720.87,3390000,720.87 +1961-12-21,722.57,725.64,717.27,720.10,3440000,720.10 +1961-12-20,722.41,728.19,718.32,722.57,3640000,722.57 +1961-12-19,727.66,727.66,719.25,722.41,3440000,722.41 +1961-12-18,729.40,734.91,724.43,727.71,3810000,727.71 +1961-12-15,730.94,734.58,725.72,729.40,3710000,729.40 +1961-12-14,734.91,737.82,727.34,730.94,4350000,730.94 +1961-12-13,734.02,739.88,730.58,734.91,4890000,734.91 +1961-12-12,732.56,739.36,728.23,734.02,4680000,734.02 +1961-12-11,728.23,736.40,725.84,732.56,4360000,732.56 +1961-12-08,726.45,732.92,722.24,728.23,4010000,728.23 +1961-12-07,730.09,732.96,723.42,726.45,3900000,726.45 +1961-12-06,731.31,735.80,725.04,730.09,4200000,730.09 +1961-12-05,731.22,734.91,726.82,731.31,4330000,731.31 +1961-12-04,728.80,737.62,725.16,731.22,4560000,731.22 +1961-12-01,721.60,731.99,719.74,728.80,4420000,728.80 +1961-11-30,727.18,727.50,717.88,721.60,4210000,721.60 +1961-11-29,728.07,732.11,722.57,727.18,4550000,727.18 +1961-11-28,731.99,735.19,724.23,728.07,4360000,728.07 +1961-11-27,732.60,738.38,726.94,731.99,4700000,731.99 +1961-11-24,730.42,735.92,726.61,732.60,4020000,732.60 +1961-11-22,729.32,734.18,724.95,730.42,4500000,730.42 +1961-11-21,730.09,737.58,724.06,729.32,4890000,729.32 +1961-11-20,729.53,735.59,725.32,730.09,4190000,730.09 +1961-11-17,733.33,736.00,724.83,729.53,3960000,729.53 +1961-11-16,734.34,737.54,725.84,733.33,3980000,733.33 +1961-11-15,732.56,741.30,730.86,734.34,4660000,734.34 +1961-11-14,728.43,736.65,724.35,732.56,4750000,732.56 +1961-11-13,724.83,732.48,721.27,728.43,4540000,728.43 +1961-11-10,722.28,727.46,718.28,724.83,4180000,724.83 +1961-11-09,723.74,726.82,717.75,722.28,4680000,722.28 +1961-11-08,714.68,726.73,714.68,723.74,6090000,723.74 +1961-11-06,709.26,717.47,707.11,714.60,4340000,714.60 +1961-11-03,706.83,712.62,702.62,709.26,4070000,709.26 +1961-11-02,703.84,710.35,701.29,706.83,3890000,706.83 +1961-11-01,703.92,708.09,700.12,703.84,3210000,703.84 +1961-10-31,701.09,706.67,699.35,703.92,3350000,703.92 +1961-10-30,698.74,704.57,696.35,701.09,3430000,701.09 +1961-10-27,700.68,703.60,694.94,698.74,3200000,698.74 +1961-10-26,700.72,704.81,694.82,700.68,3330000,700.68 +1961-10-25,697.24,706.47,695.55,700.72,3590000,700.72 +1961-10-24,698.98,704.00,693.77,697.24,3430000,697.24 +1961-10-23,705.62,708.73,695.55,698.98,3440000,698.98 +1961-10-20,704.85,708.77,700.52,705.62,3470000,705.62 +1961-10-19,704.20,710.43,700.48,704.85,3850000,704.85 +1961-10-18,701.98,708.37,699.63,704.20,3520000,704.20 +1961-10-17,703.15,706.18,698.62,701.98,3110000,701.98 +1961-10-16,703.31,707.84,699.23,703.15,2840000,703.15 +1961-10-13,705.50,708.77,700.12,703.31,3090000,703.31 +1961-10-12,705.62,709.54,701.13,705.50,3060000,705.50 +1961-10-11,706.67,710.59,701.69,705.62,3670000,705.62 +1961-10-10,705.42,709.62,700.56,706.67,3430000,706.67 +1961-10-09,708.25,712.05,700.93,705.42,2920000,705.42 +1961-10-06,708.49,714.07,704.40,708.25,3470000,708.25 +1961-10-05,703.31,711.89,701.13,708.49,3920000,708.49 +1961-10-04,698.66,706.75,698.13,703.31,3380000,703.31 +1961-10-03,699.83,703.03,693.12,698.66,2680000,698.66 +1961-10-02,701.21,704.97,695.63,699.83,2800000,699.83 +1961-09-29,700.28,704.93,694.25,701.21,3060000,701.21 +1961-09-28,701.13,706.18,696.80,700.28,3000000,700.28 +1961-09-27,693.20,703.47,691.58,701.13,3440000,701.13 +1961-09-26,691.86,700.44,689.07,693.20,3320000,693.20 +1961-09-25,701.57,702.99,688.87,691.86,3700000,691.86 +1961-09-22,706.31,707.48,698.70,701.57,3070000,701.57 +1961-09-21,707.32,713.22,703.43,706.31,3340000,706.31 +1961-09-20,702.54,709.22,699.87,707.32,2700000,707.32 +1961-09-19,711.24,712.98,700.52,702.54,3260000,702.54 +1961-09-18,716.30,716.94,705.62,711.24,3550000,711.24 +1961-09-15,715.00,720.06,710.23,716.30,3130000,716.30 +1961-09-14,722.20,723.22,713.14,715.00,2920000,715.00 +1961-09-13,722.61,727.66,718.81,722.20,3110000,722.20 +1961-09-12,714.36,725.88,713.99,722.61,2950000,722.61 +1961-09-11,720.91,721.39,710.47,714.36,2790000,714.36 +1961-09-08,726.53,727.30,717.71,720.91,3430000,720.91 +1961-09-07,726.01,733.53,723.05,726.53,3900000,726.53 +1961-09-06,719.61,728.76,719.61,726.01,3440000,726.01 +1961-09-05,721.19,726.01,716.26,718.72,3000000,718.72 +1961-09-01,719.94,724.95,716.30,721.19,2710000,721.19 +1961-08-31,716.90,723.13,713.75,719.94,2920000,719.94 +1961-08-30,714.15,720.06,711.08,716.90,3220000,716.90 +1961-08-29,716.01,718.52,709.78,714.15,3160000,714.15 +1961-08-28,716.70,722.24,712.33,716.01,3150000,716.01 +1961-08-25,714.03,720.10,712.01,716.70,3050000,716.70 +1961-08-24,719.41,719.41,709.54,714.03,3090000,714.03 +1961-08-23,725.76,726.86,717.27,720.46,3550000,720.46 +1961-08-22,724.75,730.17,720.34,725.76,3640000,725.76 +1961-08-21,723.54,728.35,719.49,724.75,3880000,724.75 +1961-08-18,721.84,727.54,719.25,723.54,4030000,723.54 +1961-08-17,718.20,725.80,715.53,721.84,4130000,721.84 +1961-08-16,716.18,720.67,712.62,718.20,3430000,718.20 +1961-08-15,718.93,722.85,714.15,716.18,3320000,716.18 +1961-08-14,722.61,724.02,714.48,718.93,3120000,718.93 +1961-08-11,720.49,726.57,717.31,722.61,3260000,722.61 +1961-08-10,717.57,722.98,713.46,720.49,3570000,720.49 +1961-08-09,720.22,722.31,713.86,717.57,3710000,717.57 +1961-08-08,719.58,725.78,715.91,720.22,4050000,720.22 +1961-08-07,720.69,723.14,712.95,719.58,3560000,719.58 +1961-08-04,715.71,723.57,715.08,720.69,3710000,720.69 +1961-08-03,710.46,720.41,709.04,715.71,3650000,715.71 +1961-08-02,713.94,719.86,707.93,710.46,4300000,710.46 +1961-08-01,705.37,716.03,702.21,713.94,3990000,713.94 +1961-07-31,705.13,709.75,700.51,705.37,3170000,705.37 +1961-07-28,702.80,709.75,700.00,705.13,3610000,705.13 +1961-07-27,694.19,705.96,693.40,702.80,4170000,702.80 +1961-07-26,687.63,697.98,687.63,694.19,4070000,694.19 +1961-07-25,682.14,688.89,679.66,686.37,3010000,686.37 +1961-07-24,682.81,687.16,678.27,682.14,2490000,682.14 +1961-07-21,682.97,686.84,679.10,682.81,2360000,682.81 +1961-07-20,682.74,686.21,678.31,682.97,2530000,682.97 +1961-07-19,679.30,685.22,674.80,682.74,2940000,682.74 +1961-07-18,684.59,687.95,677.44,679.30,3010000,679.30 +1961-07-17,690.95,693.48,683.49,684.59,2690000,684.59 +1961-07-14,685.90,693.68,682.58,690.95,2760000,690.95 +1961-07-13,690.79,690.83,683.17,685.90,2670000,685.90 +1961-07-12,694.47,696.28,687.28,690.79,3070000,690.79 +1961-07-11,693.16,698.18,690.95,694.47,3160000,694.47 +1961-07-10,692.73,698.49,689.33,693.16,3180000,693.16 +1961-07-07,694.27,697.90,689.61,692.73,3030000,692.73 +1961-07-06,692.77,698.97,690.36,694.27,3470000,694.27 +1961-07-05,689.81,696.76,688.34,692.77,3270000,692.77 +1961-07-03,683.96,691.50,681.91,689.81,2180000,689.81 +1961-06-30,681.95,687.16,678.23,683.96,2380000,683.96 +1961-06-29,684.59,687.28,679.62,681.95,2560000,681.95 +1961-06-28,683.88,690.04,681.20,684.59,2830000,684.59 +1961-06-27,681.16,687.16,676.30,683.88,3090000,683.88 +1961-06-26,688.66,689.96,679.22,681.16,2690000,681.16 +1961-06-23,685.62,692.81,683.64,688.66,2720000,688.66 +1961-06-22,686.09,689.96,680.13,685.62,2880000,685.62 +1961-06-21,687.87,691.42,683.13,686.09,3210000,686.09 +1961-06-20,680.68,691.03,679.50,687.87,3280000,687.87 +1961-06-19,685.50,686.53,673.49,680.68,3980000,680.68 +1961-06-16,691.27,691.98,681.16,685.50,3380000,685.50 +1961-06-15,695.81,699.72,689.69,691.27,3220000,691.27 +1961-06-14,694.15,700.47,691.42,695.81,3430000,695.81 +1961-06-13,696.76,698.93,690.24,694.15,3030000,694.15 +1961-06-12,700.90,702.29,693.20,696.76,3260000,696.76 +1961-06-09,701.69,705.88,697.39,700.90,3520000,700.90 +1961-06-08,700.86,704.46,695.26,701.69,3810000,701.69 +1961-06-07,703.79,708.05,697.70,700.86,3980000,700.86 +1961-06-06,703.43,708.88,699.21,703.79,4250000,703.79 +1961-06-05,697.70,708.57,695.33,703.43,4150000,703.43 +1961-06-02,695.37,700.82,691.54,697.70,3670000,697.70 +1961-06-01,696.72,700.86,691.39,695.37,3770000,695.37 +1961-05-31,696.28,703.04,692.65,696.72,4320000,696.72 +1961-05-26,690.16,699.48,686.13,696.28,3780000,696.28 +1961-05-25,696.52,699.13,687.55,690.16,3760000,690.16 +1961-05-24,700.59,702.56,689.77,696.52,3970000,696.52 +1961-05-23,702.44,707.34,697.31,700.59,3660000,700.59 +1961-05-22,705.96,714.69,697.74,702.44,4070000,702.44 +1961-05-19,701.14,708.88,698.38,705.96,4200000,705.96 +1961-05-18,705.52,709.00,697.70,701.14,4610000,701.14 +1961-05-17,697.74,708.49,695.18,705.52,5520000,705.52 +1961-05-16,692.37,700.35,690.52,697.74,5110000,697.74 +1961-05-15,687.91,696.44,684.47,692.37,4840000,692.37 +1961-05-12,686.49,691.54,683.41,687.91,4840000,687.91 +1961-05-11,686.61,689.81,682.06,686.49,5170000,686.49 +1961-05-10,686.92,690.67,682.93,686.61,5450000,686.61 +1961-05-09,689.06,692.73,683.49,686.92,5380000,686.92 +1961-05-08,690.67,695.41,685.15,689.06,5170000,689.06 +1961-05-05,692.25,697.31,687.59,690.67,4980000,690.67 +1961-05-04,688.90,696.16,686.49,692.25,5350000,692.25 +1961-05-03,682.34,691.54,682.10,688.90,4940000,688.90 +1961-05-02,677.05,685.34,674.68,682.34,4110000,682.34 +1961-05-01,678.71,683.17,672.98,677.05,3710000,677.05 +1961-04-28,679.54,683.96,673.34,678.71,3710000,678.71 +1961-04-27,682.18,686.76,675.78,679.54,4450000,679.54 +1961-04-26,683.09,688.98,678.94,682.18,4980000,682.18 +1961-04-25,672.66,686.72,672.59,683.09,4670000,683.09 +1961-04-24,684.16,684.16,671.64,672.66,4590000,672.66 +1961-04-21,684.24,689.41,678.79,685.26,4340000,685.26 +1961-04-20,686.21,689.02,679.77,684.24,4810000,684.24 +1961-04-19,690.60,690.67,679.58,686.21,4870000,686.21 +1961-04-18,696.72,697.43,687.63,690.60,4830000,690.60 +1961-04-17,693.72,700.75,689.29,696.72,5860000,696.72 +1961-04-14,692.02,698.45,688.07,693.72,5240000,693.72 +1961-04-13,690.16,696.12,685.54,692.02,4770000,692.02 +1961-04-12,694.11,697.39,686.96,690.16,4870000,690.16 +1961-04-11,692.06,700.31,687.87,694.11,5230000,694.11 +1961-04-10,684.16,695.77,684.16,692.06,5550000,692.06 +1961-04-07,679.34,687.76,676.52,683.68,5100000,683.68 +1961-04-06,677.32,682.58,673.39,679.34,4910000,679.34 +1961-04-05,678.73,680.98,671.79,677.32,5430000,677.32 +1961-04-04,677.59,683.11,673.81,678.73,7080000,678.73 +1961-04-03,676.63,684.29,672.98,677.59,6470000,677.59 +1961-03-30,676.41,682.01,673.13,676.63,5610000,676.63 +1961-03-29,669.58,679.19,667.64,676.41,5330000,676.41 +1961-03-28,671.03,674.96,665.73,669.58,4630000,669.58 +1961-03-27,672.48,675.30,667.22,671.03,4190000,671.03 +1961-03-24,675.45,677.28,668.59,672.48,4390000,672.48 +1961-03-23,679.38,680.48,671.79,675.45,2170000,675.45 +1961-03-22,678.73,685.32,675.19,679.38,5840000,679.38 +1961-03-21,678.84,682.92,672.44,678.73,5800000,678.73 +1961-03-20,676.48,684.07,674.12,678.84,5780000,678.84 +1961-03-17,670.80,681.63,670.80,676.48,5960000,676.48 +1961-03-16,662.88,674.19,660.36,670.38,5610000,670.38 +1961-03-15,661.08,665.96,656.36,662.88,4900000,662.88 +1961-03-14,664.44,667.11,657.85,661.08,4900000,661.08 +1961-03-13,663.56,668.52,659.48,664.44,5080000,664.44 +1961-03-10,663.33,667.91,658.57,663.56,5950000,663.56 +1961-03-09,666.15,670.08,660.40,663.33,6010000,663.33 +1961-03-08,667.14,670.54,660.70,666.15,5910000,666.15 +1961-03-07,674.46,674.84,662.76,667.14,5540000,667.14 +1961-03-06,671.57,678.23,668.78,674.46,5650000,674.46 +1961-03-03,669.39,676.14,666.61,671.57,5530000,671.57 +1961-03-02,663.03,671.53,661.01,669.39,5300000,669.39 +1961-03-01,662.08,666.27,657.12,663.03,4970000,663.03 +1961-02-28,660.44,667.03,657.16,662.08,5830000,662.08 +1961-02-27,655.60,662.11,652.59,660.44,5470000,660.44 +1961-02-24,654.42,659.56,650.99,655.60,5330000,655.60 +1961-02-23,652.40,657.46,648.55,654.42,5620000,654.42 +1961-02-21,653.65,657.54,649.00,652.40,5070000,652.40 +1961-02-20,651.67,657.27,649.04,653.65,4680000,653.65 +1961-02-17,651.86,656.21,647.90,651.67,4640000,651.67 +1961-02-16,648.89,656.36,646.64,651.86,5070000,651.86 +1961-02-15,642.91,651.94,641.46,648.89,5200000,648.89 +1961-02-14,637.04,646.37,635.44,642.91,4490000,642.91 +1961-02-13,639.67,640.89,632.81,637.04,3560000,637.04 +1961-02-10,645.12,645.99,635.55,639.67,4840000,639.67 +1961-02-09,648.85,651.56,641.57,645.12,5590000,645.12 +1961-02-08,643.94,651.41,641.04,648.85,4940000,648.85 +1961-02-07,645.65,647.48,637.99,643.94,4020000,643.94 +1961-02-06,652.97,653.65,642.07,645.65,3890000,645.65 +1961-02-03,653.62,657.20,647.37,652.97,5210000,652.97 +1961-02-02,649.39,655.56,646.41,653.62,4900000,653.62 +1961-02-01,648.20,652.82,643.67,649.39,4380000,649.39 +1961-01-31,650.64,655.18,644.24,648.20,4690000,648.20 +1961-01-30,643.59,653.96,642.33,650.64,5190000,650.64 +1961-01-27,638.87,648.17,636.47,643.59,4510000,643.59 +1961-01-26,637.72,641.84,632.66,638.87,4110000,638.87 +1961-01-25,638.79,643.10,633.76,637.72,4470000,637.72 +1961-01-24,639.82,642.22,634.87,638.79,4280000,638.79 +1961-01-23,634.37,642.68,634.07,639.82,4450000,639.82 +1961-01-20,632.39,637.76,630.41,634.37,3270000,634.37 +1961-01-19,634.10,637.15,628.77,632.39,4740000,632.39 +1961-01-18,628.96,636.39,626.48,634.10,4390000,634.10 +1961-01-17,633.19,634.26,625.49,628.96,3830000,628.96 +1961-01-16,633.65,639.17,629.91,633.19,4510000,633.19 +1961-01-13,628.50,636.20,626.48,633.65,4520000,633.65 +1961-01-12,627.21,633.23,623.28,628.50,4270000,628.50 +1961-01-11,625.72,631.85,622.37,627.21,4370000,627.21 +1961-01-10,624.42,630.90,620.96,625.72,4840000,625.72 +1961-01-09,621.64,627.93,620.12,624.42,4210000,624.42 +1961-01-06,622.67,624.58,615.66,621.64,3620000,621.64 +1961-01-05,621.49,628.35,619.24,622.67,4130000,622.67 +1961-01-04,610.25,623.36,608.46,621.49,3840000,621.49 +1961-01-03,615.89,616.65,606.09,610.25,2770000,610.25 +1960-12-30,616.19,620.80,612.76,615.89,5300000,615.89 +1960-12-29,615.75,620.37,612.42,616.19,4340000,616.19 +1960-12-28,613.38,618.60,610.76,615.75,3620000,615.75 +1960-12-27,613.23,617.78,609.65,613.38,3270000,613.38 +1960-12-23,613.31,617.52,608.28,613.23,3580000,613.23 +1960-12-22,615.42,619.67,610.65,613.31,3820000,613.31 +1960-12-21,614.82,621.33,610.42,615.42,4060000,615.42 +1960-12-20,615.56,619.82,610.94,614.82,3340000,614.82 +1960-12-19,617.78,621.07,612.50,615.56,3630000,615.56 +1960-12-16,610.76,620.37,609.06,617.78,3770000,617.78 +1960-12-15,612.68,616.42,607.21,610.76,3660000,610.76 +1960-12-14,611.72,618.34,608.24,612.68,3880000,612.68 +1960-12-13,611.94,615.49,606.80,611.72,3500000,611.72 +1960-12-12,610.90,615.31,606.87,611.94,3020000,611.94 +1960-12-09,605.17,612.86,601.88,610.90,4460000,610.90 +1960-12-08,604.62,608.61,601.14,605.17,3540000,605.17 +1960-12-07,597.11,606.84,595.93,604.62,3660000,604.62 +1960-12-06,593.49,599.44,591.34,597.11,3360000,597.11 +1960-12-05,596.00,597.52,590.79,593.49,3290000,593.49 +1960-12-02,594.56,600.14,592.12,596.00,3140000,596.00 +1960-12-01,597.22,598.18,589.82,594.56,3090000,594.56 +1960-11-30,602.40,602.99,595.15,597.22,3080000,597.22 +1960-11-29,605.43,606.98,599.03,602.40,3630000,602.40 +1960-11-28,606.47,611.31,602.25,605.43,3860000,605.43 +1960-11-25,602.47,608.57,600.18,606.47,3190000,606.47 +1960-11-23,601.10,605.10,597.00,602.47,3000000,602.47 +1960-11-22,604.54,608.02,598.55,601.10,3430000,601.10 +1960-11-21,603.62,607.87,600.44,604.54,3090000,604.54 +1960-11-18,602.18,608.02,599.96,603.62,2760000,603.62 +1960-11-17,604.77,606.58,598.89,602.18,2450000,602.18 +1960-11-16,606.87,611.61,602.29,604.77,3110000,604.77 +1960-11-15,604.80,608.83,598.66,606.87,2990000,606.87 +1960-11-14,608.61,610.09,600.66,604.80,2660000,604.80 +1960-11-11,611.79,611.79,604.43,608.61,2730000,608.61 +1960-11-10,602.25,614.09,600.48,612.01,4030000,612.01 +1960-11-09,597.63,603.62,587.35,602.25,3450000,602.25 +1960-11-07,596.07,604.32,593.52,597.63,3540000,597.63 +1960-11-04,590.82,599.40,589.71,596.07,3050000,596.07 +1960-11-03,588.23,592.60,584.65,590.82,2580000,590.82 +1960-11-02,585.24,592.97,584.35,588.23,2780000,588.23 +1960-11-01,580.36,589.42,579.43,585.24,2600000,585.24 +1960-10-31,577.92,582.28,573.11,580.36,2460000,580.36 +1960-10-28,580.95,582.10,575.18,577.92,2490000,577.92 +1960-10-27,575.18,583.80,575.07,580.95,2900000,580.95 +1960-10-26,566.60,577.66,566.60,575.18,3020000,575.18 +1960-10-25,571.93,575.73,564.23,566.05,3030000,566.05 +1960-10-24,577.55,578.18,566.64,571.93,4420000,571.93 +1960-10-21,582.69,584.61,575.40,577.55,3090000,577.55 +1960-10-20,587.01,589.71,580.62,582.69,2910000,582.69 +1960-10-19,588.75,590.64,582.32,587.01,2410000,587.01 +1960-10-18,593.34,594.71,585.61,588.75,2220000,588.75 +1960-10-17,596.48,600.03,590.45,593.34,2280000,593.34 +1960-10-14,591.49,599.51,590.45,596.48,2470000,596.48 +1960-10-13,585.83,594.30,584.87,591.49,2220000,591.49 +1960-10-12,588.75,590.90,583.72,585.83,1890000,585.83 +1960-10-11,587.31,593.01,585.02,588.75,2350000,588.75 +1960-10-10,586.42,591.49,583.17,587.31,2030000,587.31 +1960-10-07,583.69,590.82,581.28,586.42,2530000,586.42 +1960-10-06,579.54,589.20,579.54,583.69,2510000,583.69 +1960-10-05,573.15,580.36,569.04,578.88,2650000,578.88 +1960-10-04,577.81,578.73,569.74,573.15,2270000,573.15 +1960-10-03,580.14,582.98,574.26,577.81,2220000,577.81 +1960-09-30,572.22,582.47,572.22,580.14,3370000,580.14 +1960-09-29,569.08,575.77,565.49,570.59,2850000,570.59 +1960-09-28,574.81,579.40,565.53,569.08,3520000,569.08 +1960-09-27,577.14,581.80,570.85,574.81,3170000,574.81 +1960-09-26,584.76,584.76,573.29,577.14,3930000,577.14 +1960-09-23,592.15,592.64,583.61,585.20,2580000,585.20 +1960-09-22,594.26,596.70,588.57,592.15,1970000,592.15 +1960-09-21,589.31,597.85,589.31,594.26,2930000,594.26 +1960-09-20,586.76,592.08,581.91,588.20,3660000,588.20 +1960-09-19,601.18,601.18,585.72,586.76,3790000,586.76 +1960-09-16,602.69,606.61,598.22,602.18,2340000,602.18 +1960-09-15,605.69,607.24,598.26,602.69,2870000,602.69 +1960-09-14,611.79,614.01,604.43,605.69,2530000,605.69 +1960-09-13,609.35,614.34,606.47,611.79,2180000,611.79 +1960-09-12,614.12,615.05,606.73,609.35,2160000,609.35 +1960-09-09,611.42,617.41,609.87,614.12,2750000,614.12 +1960-09-08,612.27,615.79,607.39,611.42,2670000,611.42 +1960-09-07,620.85,621.85,611.35,612.27,2850000,612.27 +1960-09-06,625.22,627.58,618.97,620.85,2580000,620.85 +1960-09-02,626.10,629.17,622.07,625.22,2680000,625.22 +1960-09-01,625.99,630.95,622.78,626.10,3460000,626.10 +1960-08-31,626.40,628.73,620.93,625.99,3130000,625.99 +1960-08-30,634.46,636.35,624.44,626.40,2890000,626.40 +1960-08-29,636.13,639.31,631.76,634.46,2780000,634.46 +1960-08-26,637.16,640.34,632.13,636.13,2780000,636.13 +1960-08-25,641.56,643.71,634.24,637.16,2680000,637.16 +1960-08-24,638.29,645.30,636.68,641.56,3500000,641.56 +1960-08-23,631.25,640.40,631.25,638.29,3560000,638.29 +1960-08-22,629.27,634.55,625.53,630.71,2760000,630.71 +1960-08-19,625.82,631.42,624.64,629.27,2570000,629.27 +1960-08-18,626.54,629.31,622.70,625.82,2890000,625.82 +1960-08-17,625.43,628.98,621.62,626.54,3090000,626.54 +1960-08-16,624.17,628.98,622.19,625.43,2710000,625.43 +1960-08-15,626.18,628.41,621.15,624.17,2450000,624.17 +1960-08-12,622.88,630.53,622.34,626.18,3160000,626.18 +1960-08-11,617.52,624.85,616.27,622.88,3070000,622.88 +1960-08-10,615.69,620.54,612.67,617.52,2810000,617.52 +1960-08-09,614.79,619.10,610.95,615.69,2700000,615.69 +1960-08-08,614.29,618.57,609.15,614.79,2960000,614.79 +1960-08-05,609.23,617.88,606.60,614.29,3000000,614.29 +1960-08-04,608.69,611.24,600.28,609.23,2840000,609.23 +1960-08-03,613.68,614.94,605.67,608.69,2470000,608.69 +1960-08-02,617.85,622.34,610.09,613.68,2090000,613.68 +1960-08-01,616.73,622.37,613.36,617.85,2440000,617.85 +1960-07-29,605.67,618.35,605.24,616.73,2730000,616.73 +1960-07-28,601.76,610.88,599.53,605.67,3020000,605.67 +1960-07-27,606.75,611.96,600.35,601.76,2560000,601.76 +1960-07-26,601.68,612.78,600.50,606.75,2720000,606.75 +1960-07-25,609.87,612.17,597.30,601.68,2840000,601.68 +1960-07-22,616.63,617.60,605.45,609.87,2850000,609.87 +1960-07-21,624.13,626.76,614.22,616.63,2510000,616.63 +1960-07-20,624.78,629.23,620.72,624.13,2370000,624.13 +1960-07-19,626.00,629.52,621.22,624.78,2490000,624.78 +1960-07-18,630.24,632.93,623.85,626.00,2350000,626.00 +1960-07-15,631.32,635.16,627.47,630.24,2140000,630.24 +1960-07-14,632.11,637.14,629.34,631.32,2480000,631.32 +1960-07-13,634.12,638.18,629.16,632.11,2590000,632.11 +1960-07-12,640.44,642.24,631.64,634.12,2860000,634.12 +1960-07-11,646.91,649.17,637.60,640.44,2920000,640.44 +1960-07-08,644.89,650.10,641.52,646.91,3010000,646.91 +1960-07-07,640.37,646.83,638.21,644.89,3050000,644.89 +1960-07-06,640.91,645.22,636.45,640.37,2970000,640.37 +1960-07-05,641.30,645.11,636.27,640.91,2780000,640.91 +1960-07-01,640.62,644.71,636.60,641.30,2620000,641.30 +1960-06-30,638.39,644.39,634.91,640.62,2940000,640.62 +1960-06-29,637.46,642.78,634.37,638.39,3160000,638.39 +1960-06-28,642.49,644.75,634.66,637.46,3120000,637.46 +1960-06-27,647.01,650.75,640.33,642.49,2960000,642.49 +1960-06-24,647.41,650.32,641.91,647.01,3220000,647.01 +1960-06-23,645.36,651.97,642.52,647.41,3620000,647.41 +1960-06-22,644.93,649.06,639.22,645.36,3600000,645.36 +1960-06-21,647.52,650.89,640.55,644.93,3860000,644.93 +1960-06-20,650.89,654.09,642.02,647.52,3970000,647.52 +1960-06-17,648.27,655.24,644.79,650.89,3920000,650.89 +1960-06-16,649.42,653.95,644.00,648.27,3540000,648.27 +1960-06-15,654.88,657.32,647.37,649.42,3630000,649.42 +1960-06-14,655.85,660.05,650.71,654.88,3430000,654.88 +1960-06-13,654.88,661.45,650.61,655.85,3180000,655.85 +1960-06-10,656.42,659.55,650.68,654.88,2940000,654.88 +1960-06-09,650.35,663.64,647.41,656.42,3820000,656.42 +1960-06-08,645.58,652.83,642.49,650.35,3800000,650.35 +1960-06-07,637.85,647.98,637.85,645.58,3710000,645.58 +1960-06-06,628.98,639.43,627.19,636.92,3220000,636.92 +1960-06-03,627.87,634.33,624.92,628.98,3340000,628.98 +1960-06-02,624.89,631.28,620.76,627.87,3730000,627.87 +1960-06-01,625.50,629.88,620.61,624.89,3770000,624.89 +1960-05-31,624.78,631.28,622.66,625.50,3750000,625.50 +1960-05-27,622.79,628.81,620.86,624.78,3040000,624.78 +1960-05-26,621.28,626.78,618.20,622.79,3720000,622.79 +1960-05-25,621.39,625.66,616.87,621.28,3440000,621.28 +1960-05-24,623.66,626.89,617.71,621.39,3240000,621.39 +1960-05-23,625.24,629.34,620.34,623.66,2530000,623.66 +1960-05-20,624.68,631.44,621.60,625.24,3170000,625.24 +1960-05-19,623.00,628.08,618.62,624.68,3700000,624.68 +1960-05-18,621.63,630.21,617.71,623.00,5240000,623.00 +1960-05-17,617.39,624.92,613.30,621.63,4080000,621.63 +1960-05-16,616.03,621.84,611.76,617.39,3530000,617.39 +1960-05-13,607.87,618.20,607.31,616.03,3750000,616.03 +1960-05-12,606.54,612.70,603.81,607.87,3220000,607.87 +1960-05-11,604.82,608.88,601.70,606.54,2900000,606.54 +1960-05-10,607.48,610.14,602.86,604.82,2870000,604.82 +1960-05-09,607.62,612.74,604.19,607.48,2670000,607.48 +1960-05-06,608.32,611.41,603.56,607.62,2560000,607.62 +1960-05-05,610.99,613.79,605.80,608.32,2670000,608.32 +1960-05-04,607.73,613.47,606.05,610.99,2870000,610.99 +1960-05-03,599.61,610.14,598.73,607.73,2910000,607.73 +1960-05-02,601.70,605.52,596.61,599.61,2930000,599.61 +1960-04-29,604.33,607.85,598.35,601.70,2850000,601.70 +1960-04-28,609.96,612.22,599.27,604.33,3190000,604.33 +1960-04-27,610.92,616.76,606.89,609.96,3020000,609.96 +1960-04-26,611.13,613.76,606.65,610.92,2940000,610.92 +1960-04-25,616.32,617.00,607.71,611.13,2980000,611.13 +1960-04-22,619.15,622.64,614.47,616.32,2850000,616.32 +1960-04-21,618.71,621.92,615.19,619.15,2700000,619.15 +1960-04-20,625.68,625.68,615.94,618.71,3150000,618.71 +1960-04-19,630.77,634.97,624.86,626.40,3080000,626.40 +1960-04-18,630.12,637.16,626.33,630.77,3200000,630.77 +1960-04-14,626.50,632.54,624.62,630.12,2730000,630.12 +1960-04-13,626.50,630.15,623.39,626.50,2730000,626.50 +1960-04-12,624.89,628.62,621.41,626.50,2470000,626.50 +1960-04-11,628.10,631.28,622.40,624.89,2520000,624.89 +1960-04-08,629.03,632.07,624.14,628.10,2820000,628.10 +1960-04-07,628.31,634.08,626.91,629.03,3070000,629.03 +1960-04-06,622.64,631.35,622.64,628.31,3450000,628.31 +1960-04-05,618.54,624.69,616.56,622.19,2840000,622.19 +1960-04-04,615.98,621.68,613.35,618.54,2450000,618.54 +1960-04-01,616.59,619.94,612.94,615.98,2260000,615.98 +1960-03-31,619.94,622.74,614.75,616.59,2690000,616.59 +1960-03-30,620.35,623.56,616.28,619.94,2450000,619.94 +1960-03-29,621.78,623.97,617.68,620.35,2320000,620.35 +1960-03-28,622.47,625.68,618.81,621.78,2500000,621.78 +1960-03-25,624.00,625.95,619.29,622.47,2640000,622.47 +1960-03-24,622.06,627.86,621.51,624.00,2940000,624.00 +1960-03-23,618.09,624.35,616.25,622.06,3020000,622.06 +1960-03-22,617.00,622.09,614.20,618.09,2490000,618.09 +1960-03-21,616.42,620.52,613.99,617.00,2500000,617.00 +1960-03-18,615.09,620.69,613.52,616.42,2620000,616.42 +1960-03-17,616.73,618.61,610.85,615.09,2140000,615.09 +1960-03-16,612.18,620.90,611.74,616.73,2960000,616.73 +1960-03-15,606.79,614.68,605.52,612.18,2690000,612.18 +1960-03-14,605.83,610.17,602.96,606.79,2530000,606.79 +1960-03-11,602.31,608.70,599.61,605.83,2770000,605.83 +1960-03-10,607.16,609.72,600.40,602.31,3350000,602.31 +1960-03-09,599.10,608.29,596.20,607.16,3580000,607.16 +1960-03-08,604.02,607.88,596.64,599.10,3370000,599.10 +1960-03-07,609.79,614.61,601.59,604.02,2900000,604.02 +1960-03-04,612.05,613.55,600.36,609.79,4060000,609.79 +1960-03-03,621.37,622.64,610.03,612.05,3160000,612.05 +1960-03-02,626.87,628.34,618.95,621.37,3110000,621.37 +1960-03-01,630.12,632.65,623.77,626.87,2920000,626.87 +1960-02-29,632.00,635.31,627.56,630.12,2990000,630.12 +1960-02-26,628.51,636.30,627.76,632.00,3380000,632.00 +1960-02-25,623.73,630.22,621.65,628.51,3600000,628.51 +1960-02-24,626.19,627.90,620.79,623.73,2740000,623.73 +1960-02-23,628.45,633.50,624.04,626.19,2960000,626.19 +1960-02-19,622.19,630.26,621.31,628.45,3230000,628.45 +1960-02-18,615.29,625.95,615.29,622.19,3800000,622.19 +1960-02-17,611.33,615.33,603.34,613.55,4210000,613.55 +1960-02-16,617.58,619.29,608.94,611.33,3270000,611.33 +1960-02-15,622.23,624.31,615.94,617.58,2780000,617.58 +1960-02-12,618.57,623.70,617.38,622.23,2230000,622.23 +1960-02-11,623.36,626.09,617.34,618.57,2610000,618.57 +1960-02-10,628.45,631.79,620.25,623.36,2440000,623.36 +1960-02-09,619.43,630.53,617.72,628.45,2860000,628.45 +1960-02-08,626.50,626.50,610.17,619.43,3350000,619.43 +1960-02-05,631.14,632.10,623.63,626.77,2530000,626.77 +1960-02-04,630.97,634.53,627.11,631.14,2600000,631.14 +1960-02-03,636.92,640.30,629.03,630.97,3020000,630.97 +1960-02-02,628.04,638.86,628.04,636.92,3080000,636.92 +1960-02-01,622.62,630.75,619.68,626.20,2820000,626.20 +1960-01-29,629.84,631.51,619.51,622.62,3060000,622.62 +1960-01-28,637.67,638.27,627.77,629.84,2630000,629.84 +1960-01-27,639.84,643.05,633.89,637.67,2460000,637.67 +1960-01-26,639.07,642.81,633.49,639.84,3060000,639.84 +1960-01-25,645.85,648.83,637.20,639.07,2790000,639.07 +1960-01-22,645.43,650.92,643.33,645.85,2690000,645.85 +1960-01-21,643.69,649.51,641.40,645.43,2700000,645.43 +1960-01-20,645.07,650.13,641.57,643.69,2720000,643.69 +1960-01-19,653.86,654.97,642.58,645.07,3100000,645.07 +1960-01-18,659.68,662.06,651.70,653.86,3020000,653.86 +1960-01-15,660.53,666.38,656.25,659.68,3400000,659.68 +1960-01-14,656.44,663.14,655.13,660.53,3560000,660.53 +1960-01-13,660.43,664.68,653.11,656.44,3470000,656.44 +1960-01-12,667.16,667.39,655.49,660.43,3760000,660.43 +1960-01-11,675.73,676.74,663.67,667.16,3470000,667.16 +1960-01-08,677.66,680.86,671.38,675.73,3290000,675.73 +1960-01-07,682.62,683.05,674.98,677.66,3310000,677.66 +1960-01-06,685.47,687.36,678.34,682.62,3730000,682.62 +1960-01-05,679.06,687.14,677.43,685.47,3710000,685.47 +1960-01-04,679.36,688.21,677.39,679.06,3990000,679.06 +1959-12-31,676.97,682.72,676.32,679.36,3810000,679.36 +1959-12-30,672.23,679.49,672.00,676.97,3680000,676.97 +1959-12-29,669.77,675.01,667.13,672.23,3020000,672.23 +1959-12-28,670.69,674.41,665.96,669.77,2830000,669.77 +1959-12-24,670.18,674.69,666.93,670.69,2320000,670.69 +1959-12-23,671.82,675.73,667.75,670.18,2890000,670.18 +1959-12-22,675.92,677.34,669.90,671.82,2930000,671.82 +1959-12-21,676.65,681.54,673.05,675.92,3290000,675.92 +1959-12-18,673.90,679.52,671.35,676.65,3230000,676.65 +1959-12-17,675.20,678.54,671.54,673.90,3040000,673.90 +1959-12-16,673.78,679.20,671.41,675.20,3270000,675.20 +1959-12-15,675.07,681.00,671.63,673.78,3450000,673.78 +1959-12-14,670.50,678.26,669.02,675.07,3100000,675.07 +1959-12-11,672.74,674.72,667.28,670.50,2910000,670.50 +1959-12-10,671.26,676.96,668.80,672.74,3170000,672.74 +1959-12-09,675.39,678.03,668.76,671.26,3430000,671.26 +1959-12-08,665.67,679.36,665.07,675.39,3870000,675.39 +1959-12-07,664.00,670.44,661.83,665.67,3620000,665.67 +1959-12-04,662.96,668.04,659.87,664.00,3590000,664.00 +1959-12-03,661.29,666.05,658.48,662.96,3280000,662.96 +1959-12-02,664.38,668.48,658.64,661.29,3490000,661.29 +1959-12-01,659.97,668.70,659.97,664.38,3990000,664.38 +1959-11-30,652.52,661.23,651.55,659.18,3670000,659.18 +1959-11-27,651.10,655.58,647.92,652.52,3030000,652.52 +1959-11-25,649.69,655.55,646.69,651.10,3550000,651.10 +1959-11-24,646.75,653.66,644.86,649.69,3650000,649.69 +1959-11-23,645.46,651.51,641.77,646.75,3400000,646.75 +1959-11-20,643.32,649.97,641.42,645.46,2960000,645.46 +1959-11-19,641.99,648.36,639.63,643.32,3230000,643.32 +1959-11-18,635.62,644.96,634.77,641.99,3660000,641.99 +1959-11-17,634.46,639.60,630.99,635.62,3570000,635.62 +1959-11-16,641.71,644.48,632.72,634.46,3710000,634.46 +1959-11-13,644.26,647.38,640.01,641.71,3050000,641.71 +1959-11-12,647.32,650.88,642.78,644.26,3600000,644.26 +1959-11-11,648.14,649.94,644.96,647.32,2820000,647.32 +1959-11-10,650.92,652.08,644.86,648.14,3020000,648.14 +1959-11-09,650.92,658.86,648.27,650.92,3700000,650.92 +1959-11-06,647.57,654.38,644.92,650.92,3450000,650.92 +1959-11-05,645.74,651.61,641.99,647.57,3170000,647.57 +1959-11-04,645.46,651.96,641.01,645.74,3940000,645.74 +1959-11-02,646.60,650.85,642.24,645.46,3320000,645.46 +1959-10-30,645.11,649.40,641.68,646.60,3560000,646.60 +1959-10-29,643.60,648.65,638.78,645.11,3890000,645.11 +1959-10-28,642.18,647.04,637.55,643.60,3920000,643.60 +1959-10-27,637.61,645.87,636.19,642.18,4160000,642.18 +1959-10-26,633.07,641.14,633.07,637.61,3580000,637.61 +1959-10-23,625.59,634.42,624.84,633.07,2880000,633.07 +1959-10-22,632.69,635.75,624.55,625.59,3060000,625.59 +1959-10-21,635.37,637.99,630.64,632.69,2730000,632.69 +1959-10-20,639.66,642.18,634.01,635.37,2740000,635.37 +1959-10-19,643.22,643.88,634.93,639.66,2470000,639.66 +1959-10-16,637.67,646.53,637.67,643.22,2760000,643.22 +1959-10-15,634.27,640.51,632.91,637.48,2190000,637.48 +1959-10-14,637.83,639.50,632.28,634.27,2320000,634.27 +1959-10-13,638.55,642.34,635.46,637.83,2530000,637.83 +1959-10-12,636.98,641.27,635.56,638.55,1750000,638.55 +1959-10-09,633.04,638.74,631.62,636.98,2540000,636.98 +1959-10-08,635.37,637.42,631.24,633.04,2510000,633.04 +1959-10-07,636.06,638.46,631.90,635.37,2380000,635.37 +1959-10-06,637.01,639.06,631.87,636.06,2330000,636.06 +1959-10-05,636.57,640.76,634.58,637.01,2100000,637.01 +1959-10-02,633.60,639.22,630.77,636.57,2270000,636.57 +1959-10-01,631.68,635.72,625.40,633.60,2660000,633.60 +1959-09-30,640.10,640.16,628.94,631.68,2850000,631.68 +1959-09-29,636.47,643.60,635.72,640.10,3220000,640.10 +1959-09-28,632.59,638.93,629.35,636.47,2640000,636.47 +1959-09-25,632.85,637.73,628.18,632.59,3280000,632.59 +1959-09-24,625.06,635.28,625.06,632.85,3480000,632.85 +1959-09-23,617.21,626.73,617.21,624.02,3010000,624.02 +1959-09-22,618.15,624.24,613.30,616.45,3000000,616.45 +1959-09-21,625.59,625.59,613.71,618.15,3240000,618.15 +1959-09-18,629.00,629.60,621.97,625.78,2530000,625.78 +1959-09-17,632.41,636.19,627.64,629.00,2090000,629.00 +1959-09-16,630.80,636.16,629.47,632.41,2180000,632.41 +1959-09-15,633.79,634.83,624.49,630.80,2830000,630.80 +1959-09-14,637.36,641.08,632.31,633.79,2590000,633.79 +1959-09-11,633.38,641.33,632.34,637.36,2640000,637.36 +1959-09-10,637.67,641.30,630.45,633.38,2520000,633.38 +1959-09-09,642.69,644.74,631.43,637.67,3030000,637.67 +1959-09-08,651.74,651.74,636.98,642.69,2940000,642.69 +1959-09-04,645.90,653.91,645.37,652.18,2300000,652.18 +1959-09-03,655.80,655.93,644.51,645.90,2330000,645.90 +1959-09-02,655.90,659.87,652.15,655.80,2370000,655.80 +1959-09-01,664.41,664.95,652.74,655.90,2430000,655.90 +1959-08-31,663.06,667.72,660.25,664.41,2140000,664.41 +1959-08-28,663.34,666.71,659.75,663.06,1930000,663.06 +1959-08-27,657.60,665.61,657.60,663.34,2550000,663.34 +1959-08-26,655.96,660.34,652.84,657.57,2210000,657.57 +1959-08-25,653.22,659.56,651.07,655.96,1960000,655.96 +1959-08-24,655.39,657.82,650.57,653.22,1860000,653.22 +1959-08-21,655.02,658.86,651.89,655.39,2000000,655.39 +1959-08-20,647.01,657.29,647.01,655.02,2450000,655.02 +1959-08-19,649.31,649.31,639.34,646.53,3050000,646.53 +1959-08-18,658.42,659.15,649.50,650.79,2280000,650.79 +1959-08-17,658.74,663.02,656.18,658.42,1980000,658.42 +1959-08-14,655.43,661.42,654.61,658.74,1990000,658.74 +1959-08-13,655.14,658.48,651.99,655.43,2020000,655.43 +1959-08-12,658.07,662.46,653.41,655.14,2700000,655.14 +1959-08-11,653.79,661.76,651.14,658.07,2980000,658.07 +1959-08-10,665.14,665.14,647.93,653.79,4190000,653.79 +1959-08-07,671.98,676.11,666.71,668.57,2580000,668.57 +1959-08-06,672.33,676.11,669.36,671.98,2610000,671.98 +1959-08-05,675.76,675.76,667.82,672.33,2630000,672.33 +1959-08-04,678.10,679.71,673.40,676.30,2530000,676.30 +1959-08-03,674.88,683.90,673.90,678.10,2410000,678.10 +1959-07-31,673.37,677.28,670.50,674.88,2270000,674.88 +1959-07-30,673.18,678.67,668.29,673.37,3240000,673.37 +1959-07-29,672.04,677.12,668.48,673.18,3460000,673.18 +1959-07-28,669.08,675.76,666.62,672.04,3190000,672.04 +1959-07-27,663.72,671.92,663.34,669.08,2910000,669.08 +1959-07-24,664.63,668.10,661.29,663.72,2720000,663.72 +1959-07-23,664.38,668.23,661.26,664.63,3310000,664.63 +1959-07-22,661.48,667.69,660.06,664.38,3310000,664.38 +1959-07-21,654.54,663.78,652.62,661.48,2950000,661.48 +1959-07-20,657.13,659.87,651.83,654.54,2500000,654.54 +1959-07-17,658.29,659.81,653.69,657.13,2510000,657.13 +1959-07-16,660.57,662.93,655.46,658.29,3170000,658.29 +1959-07-15,657.70,663.91,655.90,660.57,3280000,660.57 +1959-07-14,657.35,661.13,653.53,657.70,3230000,657.70 +1959-07-13,663.56,665.45,655.05,657.35,3360000,657.35 +1959-07-10,663.09,667.34,659.24,663.56,3600000,663.56 +1959-07-09,663.81,667.12,658.89,663.09,3560000,663.09 +1959-07-08,663.21,668.26,658.23,663.81,4010000,663.81 +1959-07-07,660.09,665.89,656.31,663.21,3840000,663.21 +1959-07-06,654.76,663.31,653.79,660.09,3720000,660.09 +1959-07-02,650.88,659.18,650.22,654.76,3610000,654.76 +1959-07-01,643.60,654.01,643.60,650.88,3150000,650.88 +1959-06-30,643.06,647.29,639.69,643.60,3200000,643.60 +1959-06-29,639.25,646.41,638.33,643.06,3000000,643.06 +1959-06-26,637.23,643.51,635.02,639.25,3100000,639.25 +1959-06-25,634.27,640.23,631.87,637.23,3250000,637.23 +1959-06-24,630.73,636.91,628.53,634.27,3180000,634.27 +1959-06-23,631.71,635.62,627.61,630.73,2600000,630.73 +1959-06-22,629.76,637.42,627.86,631.71,2630000,631.71 +1959-06-19,629.41,633.73,625.12,629.76,2260000,629.76 +1959-06-18,628.05,633.87,627.20,629.41,3150000,629.41 +1959-06-17,621.40,629.82,619.00,628.05,2850000,628.05 +1959-06-16,624.59,626.60,618.28,621.40,2440000,621.40 +1959-06-15,627.42,629.73,621.02,624.59,2410000,624.59 +1959-06-12,627.49,632.03,623.54,627.42,2580000,627.42 +1959-06-11,627.17,634.14,624.62,627.49,3120000,627.49 +1959-06-10,620.45,630.67,620.45,627.17,3310000,627.17 +1959-06-09,621.62,624.81,613.11,617.62,3490000,617.62 +1959-06-08,629.98,632.03,620.33,621.62,2970000,621.62 +1959-06-05,630.54,633.95,625.97,629.98,2800000,629.98 +1959-06-04,637.39,639.78,628.94,630.54,3210000,630.54 +1959-06-03,637.45,642.46,634.36,637.39,2910000,637.39 +1959-06-02,643.10,643.10,632.85,637.45,3120000,637.45 +1959-06-01,643.79,648.65,640.32,643.51,2730000,643.51 +1959-05-29,639.58,647.24,637.25,643.79,2790000,643.79 +1959-05-28,636.68,643.09,635.59,639.58,2970000,639.58 +1959-05-27,632.38,639.22,631.99,636.68,2940000,636.68 +1959-05-26,632.35,636.28,629.41,632.38,2910000,632.38 +1959-05-25,634.74,639.64,630.59,632.35,3260000,632.35 +1959-05-22,631.65,637.37,630.38,634.74,3030000,634.74 +1959-05-21,631.87,634.38,626.84,631.65,3230000,631.65 +1959-05-20,635.44,636.77,628.99,631.87,3550000,631.87 +1959-05-19,633.53,639.19,631.20,635.44,3170000,635.44 +1959-05-18,634.53,636.62,629.90,633.53,2970000,633.53 +1959-05-15,637.04,640.92,632.44,634.53,3510000,634.53 +1959-05-14,633.05,640.10,631.02,637.04,3660000,637.04 +1959-05-13,627.66,635.38,625.51,633.05,3540000,633.05 +1959-05-12,625.03,630.90,622.97,627.66,3550000,627.66 +1959-05-11,621.36,627.66,620.58,625.03,3860000,625.03 +1959-05-08,615.73,625.81,615.73,621.36,3930000,621.36 +1959-05-07,624.39,624.45,611.68,615.64,4530000,615.64 +1959-05-06,625.90,630.84,621.73,624.39,4110000,624.39 +1959-05-05,625.06,629.05,622.88,625.90,3360000,625.90 +1959-05-04,625.06,629.87,622.18,625.06,3060000,625.06 +1959-05-01,623.75,628.11,620.49,625.06,3020000,625.06 +1959-04-30,625.87,628.69,620.91,623.75,3510000,623.75 +1959-04-29,628.87,629.75,622.60,625.87,3470000,625.87 +1959-04-28,629.87,633.95,625.24,628.87,3920000,628.87 +1959-04-27,627.39,635.29,624.60,629.87,3850000,629.87 +1959-04-24,623.27,630.26,622.60,627.39,3790000,627.39 +1959-04-23,625.15,627.39,618.94,623.27,3310000,623.27 +1959-04-22,629.23,631.62,622.69,625.15,3430000,625.15 +1959-04-21,627.08,632.17,623.42,629.23,3650000,629.23 +1959-04-20,624.06,630.69,622.54,627.08,3610000,627.08 +1959-04-17,618.34,626.66,618.34,624.06,3870000,624.06 +1959-04-16,612.50,620.58,611.41,617.58,3790000,617.58 +1959-04-15,609.53,615.07,608.65,612.50,3680000,612.50 +1959-04-14,607.76,611.98,605.44,609.53,3320000,609.53 +1959-04-13,605.97,610.81,603.47,607.76,3140000,607.76 +1959-04-10,605.50,609.52,603.56,605.97,3000000,605.97 +1959-04-09,606.44,609.11,602.12,605.50,2830000,605.50 +1959-04-08,610.34,612.28,605.15,606.44,3260000,606.44 +1959-04-07,611.16,612.66,606.08,610.34,3020000,610.34 +1959-04-06,611.93,616.42,608.26,611.16,3510000,611.16 +1959-04-03,607.52,614.39,607.52,611.93,3680000,611.93 +1959-04-02,602.97,610.25,602.97,607.52,3220000,607.52 +1959-04-01,601.71,606.97,599.65,602.94,2980000,602.94 +1959-03-31,602.65,605.73,599.21,601.71,2820000,601.71 +1959-03-30,606.58,608.64,600.98,602.65,2940000,602.65 +1959-03-26,606.47,608.61,601.50,606.58,2900000,606.58 +1959-03-25,606.73,611.16,603.82,606.47,3280000,606.47 +1959-03-24,605.56,608.67,602.36,606.73,3000000,606.73 +1959-03-23,610.37,612.78,603.38,605.56,3700000,605.56 +1959-03-20,610.02,614.16,605.85,610.37,3770000,610.37 +1959-03-19,610.87,613.92,605.64,610.02,4150000,610.02 +1959-03-18,612.69,617.15,609.14,610.87,4530000,610.87 +1959-03-17,607.93,615.83,607.93,612.69,4730000,612.69 +1959-03-16,614.69,615.80,605.82,607.88,4420000,607.88 +1959-03-13,613.75,618.80,610.78,614.69,4880000,614.69 +1959-03-12,611.49,616.10,608.55,613.75,4690000,613.75 +1959-03-11,611.14,614.34,608.08,611.49,4160000,611.49 +1959-03-10,609.96,614.39,605.44,611.14,3920000,611.14 +1959-03-09,609.52,615.01,606.14,609.96,3530000,609.96 +1959-03-06,611.87,613.16,605.20,609.52,3930000,609.52 +1959-03-05,611.84,614.57,608.32,611.87,3930000,611.87 +1959-03-04,610.78,615.77,606.20,611.84,4150000,611.84 +1959-03-03,605.03,613.04,604.29,610.78,4790000,610.78 +1959-03-02,603.50,608.82,600.89,605.03,4210000,605.03 +1959-02-27,602.00,606.53,599.77,603.50,4300000,603.50 +1959-02-26,601.18,604.44,596.84,602.00,3930000,602.00 +1959-02-25,602.91,605.35,597.86,601.18,3780000,601.18 +1959-02-24,602.21,607.61,599.57,602.91,4340000,602.91 +1959-02-20,595.04,603.91,594.93,602.21,4190000,602.21 +1959-02-19,589.58,597.48,589.58,595.04,4160000,595.04 +1959-02-18,586.71,590.76,583.62,588.82,3480000,588.82 +1959-02-17,587.91,591.58,583.83,586.71,3190000,586.71 +1959-02-16,587.97,593.14,584.39,587.91,3480000,587.91 +1959-02-13,581.89,589.91,580.01,587.97,3070000,587.97 +1959-02-12,584.03,586.73,579.98,581.89,2630000,581.89 +1959-02-11,582.65,588.17,581.63,584.03,3000000,584.03 +1959-02-10,574.72,583.89,574.72,582.65,2960000,582.65 +1959-02-09,581.36,581.36,571.73,574.46,3130000,574.46 +1959-02-06,586.12,587.56,580.54,582.33,3010000,582.33 +1959-02-05,589.38,591.14,584.06,586.12,3140000,586.12 +1959-02-04,592.34,594.16,587.50,589.38,3170000,589.38 +1959-02-03,592.23,595.60,589.35,592.34,3220000,592.34 +1959-02-02,593.96,597.66,589.14,592.23,3610000,592.23 +1959-01-30,590.40,597.60,590.35,593.96,3600000,593.96 +1959-01-29,588.53,594.19,585.88,590.40,3470000,590.40 +1959-01-28,594.66,596.37,584.71,588.53,4190000,588.53 +1959-01-27,592.37,597.31,589.47,594.66,3480000,594.66 +1959-01-26,596.07,599.77,591.11,592.37,3980000,592.37 +1959-01-23,595.69,598.36,591.40,596.07,3600000,596.07 +1959-01-22,597.66,601.74,593.96,595.69,4250000,595.69 +1959-01-21,595.69,600.51,593.28,597.66,3940000,597.66 +1959-01-20,594.40,598.45,590.99,595.69,3680000,595.69 +1959-01-19,595.75,598.57,590.32,594.40,3840000,594.40 +1959-01-16,594.81,599.89,590.38,595.75,4300000,595.75 +1959-01-15,591.64,598.10,589.88,594.81,4500000,594.81 +1959-01-14,590.70,593.28,586.85,591.64,4090000,591.64 +1959-01-13,592.64,595.04,587.47,590.70,3790000,590.70 +1959-01-12,592.72,597.31,589.61,592.64,4320000,592.64 +1959-01-09,588.14,594.84,588.00,592.72,4760000,592.72 +1959-01-08,583.15,590.11,580.54,588.14,4030000,588.14 +1959-01-07,591.37,592.58,581.07,583.15,4140000,583.15 +1959-01-06,590.17,593.52,584.88,591.37,3690000,591.37 +1959-01-05,587.59,594.31,585.24,590.17,4210000,590.17 +1959-01-02,583.65,590.38,580.80,587.59,3380000,587.59 +1958-12-31,581.80,587.44,579.25,583.65,3970000,583.65 +1958-12-30,577.31,584.59,577.13,581.80,3900000,581.80 +1958-12-29,572.73,580.63,572.73,577.31,3790000,577.31 +1958-12-24,566.39,573.64,564.27,572.73,3050000,572.73 +1958-12-23,571.23,573.26,564.15,566.39,2870000,566.39 +1958-12-22,573.17,574.84,568.12,571.23,3030000,571.23 +1958-12-19,572.38,577.90,570.38,573.17,3540000,573.17 +1958-12-18,569.38,575.52,568.24,572.38,3900000,572.38 +1958-12-17,565.18,573.29,561.51,569.38,3900000,569.38 +1958-12-16,563.98,568.29,562.25,565.18,3970000,565.18 +1958-12-15,562.27,566.24,559.96,563.98,3340000,563.98 +1958-12-12,563.07,565.01,559.43,562.27,3140000,562.27 +1958-12-11,564.98,569.50,561.57,563.07,4250000,563.07 +1958-12-10,558.13,566.50,558.05,564.98,4340000,564.98 +1958-12-09,556.08,561.51,555.58,558.13,3790000,558.13 +1958-12-08,556.75,559.54,553.70,556.08,3590000,556.08 +1958-12-05,559.10,560.37,554.85,556.75,3360000,556.75 +1958-12-04,558.81,563.19,556.40,559.10,3630000,559.10 +1958-12-03,558.57,560.95,554.55,558.81,3460000,558.81 +1958-12-02,560.07,562.98,555.37,558.57,3320000,558.57 +1958-12-01,557.46,563.30,555.52,560.07,3800000,560.07 +1958-11-28,550.41,559.04,550.41,557.46,4120000,557.46 +1958-11-26,542.40,551.50,542.40,549.15,4090000,549.15 +1958-11-25,544.89,546.95,538.43,540.52,3940000,540.52 +1958-11-24,554.88,554.88,543.07,544.89,4770000,544.89 +1958-11-21,566.24,566.50,558.16,559.57,3950000,559.57 +1958-11-20,565.97,569.70,563.21,566.24,4320000,566.24 +1958-11-19,564.89,568.68,562.10,565.97,4090000,565.97 +1958-11-18,567.44,569.06,560.48,564.89,3820000,564.89 +1958-11-17,564.68,572.05,561.54,567.44,4540000,567.44 +1958-11-14,560.75,566.91,559.07,564.68,4390000,564.68 +1958-11-13,562.39,564.42,557.43,560.75,4200000,560.75 +1958-11-12,561.13,565.53,558.19,562.39,4440000,562.39 +1958-11-11,557.72,563.60,556.93,561.13,4040000,561.13 +1958-11-10,554.26,560.10,552.64,557.72,3730000,557.72 +1958-11-07,554.85,558.22,550.85,554.26,3700000,554.26 +1958-11-06,550.76,559.43,550.76,554.85,4890000,554.85 +1958-11-05,545.16,552.35,543.34,550.68,4080000,550.68 +1958-11-03,543.22,547.15,540.28,545.16,3240000,545.16 +1958-10-31,543.31,546.27,539.31,543.22,3920000,543.22 +1958-10-30,542.72,546.83,540.69,543.31,4360000,543.31 +1958-10-29,536.88,544.92,536.85,542.72,4790000,542.72 +1958-10-28,535.00,538.26,530.94,536.88,3670000,536.88 +1958-10-27,539.52,541.22,533.09,535.00,3980000,535.00 +1958-10-24,540.72,543.16,536.43,539.52,3770000,539.52 +1958-10-23,542.31,544.07,537.76,540.72,3610000,540.72 +1958-10-22,543.72,545.04,538.96,542.31,3500000,542.31 +1958-10-21,544.19,546.54,540.28,543.72,4010000,543.72 +1958-10-20,546.36,548.36,541.57,544.19,4560000,544.19 +1958-10-17,541.07,548.97,541.07,546.36,5360000,546.36 +1958-10-16,536.14,541.37,529.42,540.11,4560000,540.11 +1958-10-15,541.72,545.68,533.65,536.14,4810000,536.14 +1958-10-14,545.95,549.71,540.22,541.72,5110000,541.72 +1958-10-13,543.36,549.30,542.95,545.95,4550000,545.95 +1958-10-10,539.61,545.74,538.17,543.36,4610000,543.36 +1958-10-09,539.31,541.46,535.85,539.61,3670000,539.61 +1958-10-08,539.40,542.28,535.97,539.31,3680000,539.31 +1958-10-07,536.29,540.96,534.12,539.40,3570000,539.40 +1958-10-06,533.73,539.37,533.21,536.29,3570000,536.29 +1958-10-03,532.09,536.82,531.53,533.73,3830000,533.73 +1958-10-02,530.94,535.14,528.83,532.09,3750000,532.09 +1958-10-01,532.09,533.91,527.68,530.94,3780000,530.94 +1958-09-30,529.04,535.00,528.68,532.09,4160000,532.09 +1958-09-29,526.83,531.74,525.54,529.04,3680000,529.04 +1958-09-26,525.83,529.59,523.31,526.83,3420000,526.83 +1958-09-25,528.15,530.68,523.34,525.83,4490000,525.83 +1958-09-24,525.89,530.18,523.57,528.15,3120000,528.15 +1958-09-23,524.01,528.62,520.87,525.89,3950000,525.89 +1958-09-22,526.48,528.39,522.19,524.01,3490000,524.01 +1958-09-19,522.34,527.74,521.05,526.48,3880000,526.48 +1958-09-18,525.89,526.77,520.52,522.34,3460000,522.34 +1958-09-17,526.57,529.45,522.43,525.89,3790000,525.89 +1958-09-16,523.40,529.09,522.72,526.57,3940000,526.57 +1958-09-15,519.43,524.57,517.47,523.40,3040000,523.40 +1958-09-12,520.43,523.57,517.06,519.43,3100000,519.43 +1958-09-11,516.20,521.72,515.32,520.43,3300000,520.43 +1958-09-10,518.64,520.43,514.59,516.20,2820000,516.20 +1958-09-09,515.23,521.31,515.23,518.64,3480000,518.64 +1958-09-08,512.77,517.47,511.77,515.23,3030000,515.23 +1958-09-05,513.44,515.35,510.45,512.77,2520000,512.77 +1958-09-04,513.71,516.59,511.07,513.44,3100000,513.44 +1958-09-03,511.77,516.03,510.15,513.71,3240000,513.71 +1958-09-02,508.63,513.09,508.39,511.77,2930000,511.77 +1958-08-29,507.72,510.18,505.60,508.63,2260000,508.63 +1958-08-28,510.24,510.24,505.49,507.72,2540000,507.72 +1958-08-27,509.63,513.33,508.19,510.39,3250000,510.39 +1958-08-26,508.28,510.95,506.72,509.63,2910000,509.63 +1958-08-25,508.28,510.62,505.37,508.28,2610000,508.28 +1958-08-22,507.10,509.66,505.54,508.28,2660000,508.28 +1958-08-21,503.96,508.89,503.05,507.10,2500000,507.10 +1958-08-20,503.64,506.51,501.73,503.96,2460000,503.96 +1958-08-19,502.67,506.13,501.26,503.64,2250000,503.64 +1958-08-18,505.75,505.75,499.82,502.67,2390000,502.67 +1958-08-15,510.30,510.36,504.66,506.13,2960000,506.13 +1958-08-14,509.22,512.00,507.48,510.30,3370000,510.30 +1958-08-13,508.19,511.24,505.31,509.22,2790000,509.22 +1958-08-12,512.42,512.47,506.78,508.19,2600000,508.19 +1958-08-11,510.13,514.44,508.69,512.42,2870000,512.42 +1958-08-08,506.60,513.47,506.60,510.13,3650000,510.13 +1958-08-07,503.11,507.84,501.46,506.10,3200000,506.10 +1958-08-06,506.95,508.51,500.32,503.11,3440000,503.11 +1958-08-05,510.33,511.01,503.49,506.95,4210000,506.95 +1958-08-04,505.43,512.27,505.22,510.33,4000000,510.33 +1958-08-01,502.99,507.39,501.64,505.43,3380000,505.43 +1958-07-31,504.37,508.39,501.49,502.99,4440000,502.99 +1958-07-30,501.38,505.10,497.38,504.37,3680000,504.37 +1958-07-29,502.81,504.52,498.73,501.38,3310000,501.38 +1958-07-28,501.76,504.43,498.67,502.81,3940000,502.81 +1958-07-25,497.12,502.64,496.71,501.76,4430000,501.76 +1958-07-24,494.06,498.50,492.42,497.12,3740000,497.12 +1958-07-23,494.89,497.21,490.86,494.06,3550000,494.06 +1958-07-22,493.36,496.74,490.01,494.89,3420000,494.89 +1958-07-21,487.10,494.36,487.10,493.36,3440000,493.36 +1958-07-18,485.70,489.89,483.43,486.55,3350000,486.55 +1958-07-17,481.00,487.60,478.00,485.70,3180000,485.70 +1958-07-16,478.88,485.87,478.88,481.00,3240000,481.00 +1958-07-15,476.89,479.82,472.07,478.82,3090000,478.82 +1958-07-14,482.55,482.55,475.74,476.89,2540000,476.89 +1958-07-11,478.97,484.23,478.94,482.85,2400000,482.85 +1958-07-10,477.59,480.35,475.01,478.97,2510000,478.97 +1958-07-09,480.00,482.79,476.92,477.59,2630000,477.59 +1958-07-08,481.85,482.99,478.12,480.00,2430000,480.00 +1958-07-07,480.17,483.76,478.88,481.85,2510000,481.85 +1958-07-03,480.15,482.26,478.03,480.17,2630000,480.17 +1958-07-02,478.82,481.61,476.86,480.15,2370000,480.15 +1958-07-01,478.18,480.64,476.83,478.82,2600000,478.82 +1958-06-30,475.42,479.59,474.33,478.18,2820000,478.18 +1958-06-27,474.01,478.09,473.22,475.42,2800000,475.42 +1958-06-26,471.54,475.68,470.07,474.01,2910000,474.01 +1958-06-25,470.43,473.39,468.05,471.54,2720000,471.54 +1958-06-24,471.66,472.42,467.37,470.43,2560000,470.43 +1958-06-23,473.60,474.60,469.46,471.66,2340000,471.66 +1958-06-20,471.57,475.36,470.81,473.60,2590000,473.60 +1958-06-19,476.65,478.03,470.93,471.57,2690000,471.57 +1958-06-18,478.97,479.70,474.21,476.65,2640000,476.65 +1958-06-17,476.56,482.11,475.36,478.97,2950000,478.97 +1958-06-16,474.77,477.97,473.16,476.56,2870000,476.56 +1958-06-13,471.57,476.56,471.57,474.77,3100000,474.77 +1958-06-12,467.93,472.98,467.23,471.42,2760000,471.42 +1958-06-11,468.19,470.04,465.58,467.93,2570000,467.93 +1958-06-10,469.46,470.37,466.32,468.19,2390000,468.19 +1958-06-09,469.60,471.60,467.17,469.46,2380000,469.46 +1958-06-06,468.55,471.75,467.49,469.60,2680000,469.60 +1958-06-05,468.58,469.84,465.38,468.55,2600000,468.55 +1958-06-04,468.14,470.69,466.37,468.58,2690000,468.58 +1958-06-03,466.11,469.66,465.35,468.14,2780000,468.14 +1958-06-02,462.70,468.61,462.70,466.11,2770000,466.11 +1958-05-29,460.44,463.85,459.91,462.70,2350000,462.70 +1958-05-28,460.68,462.85,458.97,460.44,2260000,460.44 +1958-05-27,461.06,462.53,457.92,460.68,2180000,460.68 +1958-05-26,461.03,463.47,459.39,461.06,2500000,461.06 +1958-05-23,460.24,463.32,459.21,461.03,2570000,461.03 +1958-05-22,458.50,463.20,457.10,460.24,2950000,460.24 +1958-05-21,459.83,461.62,456.83,458.50,2580000,458.50 +1958-05-20,455.98,460.74,455.30,459.83,2500000,459.83 +1958-05-19,457.10,458.06,454.16,455.98,1910000,455.98 +1958-05-16,457.86,459.47,455.57,457.10,2030000,457.10 +1958-05-15,455.45,459.00,453.84,457.86,2470000,457.86 +1958-05-14,459.86,460.79,454.57,455.45,3060000,455.45 +1958-05-13,460.74,462.03,457.62,459.86,2940000,459.86 +1958-05-12,462.56,463.70,459.41,460.74,2780000,460.74 +1958-05-09,462.50,465.14,460.44,462.56,2760000,462.56 +1958-05-08,462.88,464.35,460.38,462.50,2790000,462.50 +1958-05-07,463.67,465.17,461.12,462.88,2770000,462.88 +1958-05-06,461.12,465.32,460.09,463.67,3110000,463.67 +1958-05-05,459.56,462.38,457.39,461.12,2670000,461.12 +1958-05-02,457.01,460.56,455.66,459.56,2290000,459.56 +1958-05-01,455.86,460.21,454.95,457.01,2630000,457.01 +1958-04-30,451.78,457.39,451.19,455.86,2900000,455.86 +1958-04-29,454.42,454.42,449.78,451.78,2190000,451.78 +1958-04-28,454.92,458.33,452.66,454.51,2400000,454.51 +1958-04-25,453.42,457.10,451.13,454.92,3020000,454.92 +1958-04-24,450.11,455.51,449.34,453.42,2870000,453.42 +1958-04-23,449.55,451.87,445.88,450.11,2720000,450.11 +1958-04-22,450.72,452.34,448.37,449.55,2440000,449.55 +1958-04-21,449.31,452.49,448.34,450.72,2550000,450.72 +1958-04-18,445.09,450.75,445.03,449.31,2700000,449.31 +1958-04-17,444.35,446.14,442.35,445.09,2500000,445.09 +1958-04-16,447.58,447.85,442.53,444.35,2240000,444.35 +1958-04-15,443.76,448.96,442.62,447.58,2590000,447.58 +1958-04-14,441.24,444.88,440.06,443.76,2180000,443.76 +1958-04-11,441.06,442.65,438.83,441.24,2060000,441.24 +1958-04-10,441.88,442.94,438.77,441.06,2000000,441.06 +1958-04-09,442.59,445.20,440.97,441.88,2040000,441.88 +1958-04-08,440.09,444.79,439.59,442.59,2190000,442.59 +1958-04-07,440.50,441.97,437.25,440.09,2090000,440.09 +1958-04-03,441.21,442.97,437.98,440.50,2130000,440.50 +1958-04-02,445.47,447.29,440.06,441.21,2390000,441.21 +1958-04-01,446.76,447.82,443.29,445.47,2070000,445.47 +1958-03-31,448.61,450.05,445.56,446.76,2050000,446.76 +1958-03-28,448.64,450.17,446.64,448.61,1930000,448.61 +1958-03-27,449.70,451.81,447.02,448.64,2140000,448.64 +1958-03-26,450.96,451.46,447.61,449.70,1990000,449.70 +1958-03-25,453.75,454.31,449.52,450.96,2210000,450.96 +1958-03-24,452.49,455.36,450.25,453.75,2580000,453.75 +1958-03-21,449.46,453.57,447.79,452.49,2430000,452.49 +1958-03-20,449.96,452.57,447.76,449.46,2280000,449.46 +1958-03-19,447.38,452.37,446.91,449.96,2410000,449.96 +1958-03-18,448.23,448.84,443.41,447.38,2070000,447.38 +1958-03-17,453.04,453.25,447.08,448.23,2130000,448.23 +1958-03-14,454.10,454.75,450.52,453.04,2150000,453.04 +1958-03-13,454.60,456.80,451.87,454.10,2830000,454.10 +1958-03-12,455.92,456.83,452.72,454.60,2420000,454.60 +1958-03-11,451.90,457.27,450.58,455.92,2640000,455.92 +1958-03-10,451.49,453.45,448.96,451.90,1980000,451.90 +1958-03-07,450.96,452.81,448.58,451.49,2130000,451.49 +1958-03-06,446.58,452.43,446.05,450.96,2470000,450.96 +1958-03-05,445.06,448.14,442.56,446.58,2020000,446.58 +1958-03-04,443.38,447.11,443.03,445.06,2010000,445.06 +1958-03-03,439.92,444.56,439.24,443.38,1810000,443.38 +1958-02-28,437.80,441.15,436.66,439.92,1580000,439.92 +1958-02-27,440.42,441.18,436.13,437.80,1670000,437.80 +1958-02-26,437.42,442.24,437.42,440.42,1880000,440.42 +1958-02-25,437.19,438.13,434.04,436.89,1920000,436.89 +1958-02-24,439.62,440.80,436.16,437.19,1570000,437.19 +1958-02-21,439.74,441.42,437.33,439.62,1700000,439.62 +1958-02-20,443.06,445.53,438.89,439.74,2060000,439.74 +1958-02-19,442.71,446.47,441.44,443.06,2070000,443.06 +1958-02-18,442.27,444.32,439.89,442.71,1680000,442.71 +1958-02-17,444.44,445.47,441.03,442.27,1700000,442.27 +1958-02-14,440.24,445.76,439.54,444.44,2070000,444.44 +1958-02-13,441.21,445.29,439.27,440.24,1880000,440.24 +1958-02-12,442.35,443.29,438.13,441.21,2030000,441.21 +1958-02-11,445.94,447.61,440.97,442.35,2110000,442.35 +1958-02-10,448.52,448.52,443.68,445.94,1900000,445.94 +1958-02-07,453.07,453.07,446.73,448.76,2220000,448.76 +1958-02-06,454.89,455.30,450.14,453.13,2210000,453.13 +1958-02-05,458.39,458.39,453.34,454.89,2480000,454.89 +1958-02-04,453.98,459.77,451.63,458.65,2970000,458.65 +1958-02-03,450.02,455.10,449.52,453.98,2490000,453.98 +1958-01-31,449.72,451.46,446.70,450.02,2030000,450.02 +1958-01-30,451.16,453.63,448.46,449.72,2150000,449.72 +1958-01-29,448.67,452.51,447.02,451.16,2220000,451.16 +1958-01-28,448.46,450.22,445.41,448.67,2030000,448.67 +1958-01-27,450.66,451.40,446.61,448.46,2320000,448.46 +1958-01-24,447.93,452.28,446.32,450.66,2830000,450.66 +1958-01-23,445.70,449.02,444.18,447.93,1910000,447.93 +1958-01-22,446.64,449.58,444.67,445.70,2390000,445.70 +1958-01-21,447.29,449.17,445.11,446.64,2160000,446.64 +1958-01-20,444.12,449.43,444.00,447.29,2310000,447.29 +1958-01-17,445.23,445.67,440.62,444.12,2200000,444.12 +1958-01-16,445.20,453.25,444.18,445.23,3950000,445.23 +1958-01-15,441.80,446.26,440.36,445.20,2080000,445.20 +1958-01-14,439.71,444.88,439.36,441.80,2010000,441.80 +1958-01-13,438.68,441.27,434.37,439.71,1860000,439.71 +1958-01-10,443.09,443.09,436.83,438.68,2010000,438.68 +1958-01-09,446.61,448.40,442.27,443.24,2180000,443.24 +1958-01-08,447.79,449.61,443.97,446.61,2230000,446.61 +1958-01-07,442.56,448.23,440.18,447.79,2220000,447.79 +1958-01-06,444.56,447.87,441.62,442.56,2500000,442.56 +1958-01-03,439.27,446.08,438.60,444.56,2440000,444.56 +1958-01-02,435.69,441.39,435.45,439.27,1800000,439.27 +1957-12-31,432.43,438.54,432.43,435.69,5070000,435.69 +1957-12-30,432.90,434.04,428.35,431.78,3750000,431.78 +1957-12-27,434.16,437.39,431.52,432.90,2620000,432.90 +1957-12-26,429.58,436.13,429.58,434.16,2280000,434.16 +1957-12-24,428.08,432.22,426.67,429.11,2220000,429.11 +1957-12-23,427.20,430.40,423.86,428.08,2790000,428.08 +1957-12-20,431.26,434.13,425.94,427.20,2500000,427.20 +1957-12-19,426.18,432.90,424.62,431.26,2740000,431.26 +1957-12-18,425.65,431.93,424.15,426.18,2750000,426.18 +1957-12-17,433.22,433.22,424.85,425.65,2820000,425.65 +1957-12-16,440.30,440.30,432.05,433.40,2350000,433.40 +1957-12-13,438.48,443.00,437.27,440.48,2310000,440.48 +1957-12-12,439.36,441.94,436.31,438.48,2330000,438.48 +1957-12-11,439.24,441.53,435.87,439.36,2240000,439.36 +1957-12-10,443.03,443.03,436.34,439.24,2360000,439.24 +1957-12-09,447.20,447.49,441.21,443.76,2230000,443.76 +1957-12-06,449.55,450.69,445.29,447.20,2350000,447.20 +1957-12-05,448.87,451.81,446.52,449.55,2020000,449.55 +1957-12-04,446.55,451.55,446.03,448.87,2220000,448.87 +1957-12-03,446.91,448.99,444.00,446.55,2060000,446.55 +1957-12-02,449.87,452.16,444.18,446.91,2430000,446.91 +1957-11-29,446.03,452.49,445.76,449.87,2740000,449.87 +1957-11-27,439.51,448.02,439.51,446.03,3330000,446.03 +1957-11-26,444.38,448.49,434.43,435.34,3650000,435.34 +1957-11-25,442.68,446.11,439.01,444.38,2600000,444.38 +1957-11-22,439.80,445.64,437.74,442.68,2850000,442.68 +1957-11-21,434.51,443.21,434.51,439.80,2900000,439.80 +1957-11-20,431.73,435.22,427.32,433.37,2400000,433.37 +1957-11-19,434.96,435.84,427.23,431.73,2240000,431.73 +1957-11-18,439.35,439.48,432.49,434.96,2110000,434.96 +1957-11-15,434.50,442.82,434.50,439.35,3510000,439.35 +1957-11-14,430.07,434.94,426.89,427.94,2450000,427.94 +1957-11-13,429.75,432.61,426.51,430.07,2120000,430.07 +1957-11-12,434.94,435.96,428.70,429.75,2050000,429.75 +1957-11-11,434.12,437.16,432.37,434.94,1540000,434.94 +1957-11-08,438.65,438.65,432.11,434.12,2140000,434.12 +1957-11-07,435.82,440.49,432.14,438.91,2580000,438.91 +1957-11-06,434.04,440.60,434.01,435.82,2550000,435.82 +1957-11-04,434.71,435.20,425.46,434.04,2380000,434.04 +1957-11-01,438.76,438.76,431.50,434.71,2060000,434.71 +1957-10-31,440.28,446.06,439.03,441.04,2170000,441.04 +1957-10-30,435.76,441.74,435.38,440.28,2060000,440.28 +1957-10-29,432.14,439.61,431.59,435.76,1860000,435.76 +1957-10-28,435.00,435.00,429.37,432.14,1800000,432.14 +1957-10-25,436.40,436.95,428.90,435.15,2400000,435.15 +1957-10-24,437.13,443.38,434.15,436.40,4030000,436.40 +1957-10-23,425.46,438.59,425.46,437.13,4600000,437.13 +1957-10-22,423.06,426.48,416.15,419.79,5090000,419.79 +1957-10-21,433.83,434.36,421.20,423.06,4670000,423.06 +1957-10-18,436.87,439.70,432.69,433.83,2670000,433.83 +1957-10-17,442.24,442.24,433.86,436.87,3060000,436.87 +1957-10-16,447.90,450.09,442.97,443.93,2050000,443.93 +1957-10-15,443.78,450.93,443.61,447.90,2620000,447.90 +1957-10-14,441.16,446.06,437.74,443.78,2770000,443.78 +1957-10-11,441.71,443.58,434.15,441.16,4460000,441.16 +1957-10-10,451.31,451.31,439.44,441.71,3300000,441.71 +1957-10-09,450.56,456.51,450.12,451.40,2120000,451.40 +1957-10-08,452.42,454.87,446.82,450.56,3190000,450.56 +1957-10-07,461.70,462.14,451.81,452.42,2490000,452.42 +1957-10-04,465.82,466.02,460.71,461.70,1520000,461.70 +1957-10-03,465.03,466.84,461.67,465.82,1590000,465.82 +1957-10-02,461.79,468.15,461.79,465.03,1760000,465.03 +1957-10-01,456.30,461.91,455.55,460.80,1680000,460.80 +1957-09-30,456.89,459.28,454.70,456.30,1520000,456.30 +1957-09-27,457.01,462.40,454.20,456.89,1750000,456.89 +1957-09-26,456.95,460.60,452.98,457.01,2130000,457.01 +1957-09-25,462.87,463.57,452.19,456.95,2770000,456.95 +1957-09-24,458.96,466.02,457.30,462.87,2840000,462.87 +1957-09-23,465.97,465.97,457.15,458.96,3160000,458.96 +1957-09-20,474.55,474.55,466.75,468.42,2340000,468.42 +1957-09-19,478.60,479.59,475.01,476.12,1520000,476.12 +1957-09-18,478.28,481.08,476.88,478.60,1540000,478.60 +1957-09-17,478.08,480.44,474.17,478.28,1490000,478.28 +1957-09-16,481.02,481.05,476.30,478.08,1290000,478.08 +1957-09-13,480.56,483.68,478.72,481.02,1620000,481.02 +1957-09-12,474.40,482.31,473.99,480.56,2010000,480.56 +1957-09-11,470.23,475.30,467.10,474.40,2130000,474.40 +1957-09-10,474.28,476.53,468.77,470.23,1870000,470.23 +1957-09-09,478.49,478.49,472.77,474.28,1420000,474.28 +1957-09-06,479.51,481.87,477.06,478.63,1320000,478.63 +1957-09-05,481.64,481.64,476.76,479.51,1420000,479.51 +1957-09-04,486.13,486.19,481.35,482.60,1260000,482.60 +1957-09-03,484.35,487.59,481.32,486.13,1490000,486.13 +1957-08-30,476.71,484.82,476.71,484.35,1600000,484.35 +1957-08-29,477.79,478.19,471.98,476.06,1630000,476.06 +1957-08-28,477.55,482.75,476.38,477.79,1840000,477.79 +1957-08-27,470.84,479.36,470.84,477.55,2250000,477.55 +1957-08-26,475.74,476.44,469.03,470.14,2680000,470.14 +1957-08-23,481.46,481.73,474.81,475.74,1960000,475.74 +1957-08-22,485.14,485.29,479.77,481.46,1500000,481.46 +1957-08-21,483.86,488.23,482.10,485.14,1720000,485.14 +1957-08-20,478.95,485.49,474.52,483.86,2700000,483.86 +1957-08-19,487.68,487.68,478.16,478.95,2040000,478.95 +1957-08-16,487.30,490.42,485.37,488.20,1470000,488.20 +1957-08-15,485.93,490.28,482.10,487.30,2040000,487.30 +1957-08-14,492.14,493.55,484.32,485.93,2040000,485.93 +1957-08-13,492.32,495.68,489.96,492.14,1580000,492.14 +1957-08-12,496.23,496.23,489.90,492.32,1650000,492.32 +1957-08-09,496.87,498.59,493.46,496.78,1570000,496.78 +1957-08-08,498.48,500.90,495.03,496.87,1690000,496.87 +1957-08-07,494.13,499.59,490.25,498.48,2460000,498.48 +1957-08-06,500.72,500.72,493.55,494.13,1910000,494.13 +1957-08-05,505.10,505.57,498.62,500.78,1790000,500.78 +1957-08-02,506.21,508.66,501.98,505.10,1610000,505.10 +1957-08-01,508.52,509.98,504.69,506.21,1660000,506.21 +1957-07-31,508.93,512.69,507.26,508.52,1830000,508.52 +1957-07-30,508.25,510.44,504.90,508.93,1780000,508.93 +1957-07-29,514.59,515.64,507.00,508.25,1990000,508.25 +1957-07-26,516.69,517.97,512.89,514.59,1710000,514.59 +1957-07-25,515.78,518.26,514.15,516.69,1800000,516.69 +1957-07-24,515.61,518.24,512.46,515.78,1730000,515.78 +1957-07-23,515.32,517.65,513.33,515.61,1840000,515.61 +1957-07-22,515.73,518.24,513.62,515.32,1950000,515.32 +1957-07-19,515.64,517.94,512.08,515.73,1930000,515.73 +1957-07-18,515.11,519.34,513.33,515.64,2130000,515.64 +1957-07-17,517.42,518.64,513.13,515.11,2060000,515.11 +1957-07-16,520.16,523.11,516.28,517.42,2510000,517.42 +1957-07-15,520.77,522.91,516.60,520.16,2480000,520.16 +1957-07-12,517.97,521.94,514.88,520.77,2240000,520.77 +1957-07-11,519.81,522.20,515.00,517.97,2830000,517.97 +1957-07-10,516.37,521.68,515.11,519.81,2880000,519.81 +1957-07-09,518.41,520.22,513.51,516.37,2450000,516.37 +1957-07-08,516.89,521.71,515.32,518.41,2840000,518.41 +1957-07-05,513.42,518.70,513.42,516.89,2240000,516.89 +1957-07-03,507.99,515.23,507.99,513.25,2720000,513.25 +1957-07-02,503.29,509.36,502.86,507.55,2450000,507.55 +1957-07-01,503.29,506.18,500.75,503.29,1840000,503.29 +1957-06-28,503.03,506.53,500.81,503.29,1770000,503.29 +1957-06-27,500.78,504.29,498.36,503.03,1800000,503.03 +1957-06-26,501.98,504.75,498.24,500.78,1870000,500.78 +1957-06-25,497.69,504.69,497.69,501.98,2000000,501.98 +1957-06-24,500.00,500.99,492.87,497.08,2040000,497.08 +1957-06-21,503.56,504.52,497.81,500.00,1970000,500.00 +1957-06-20,505.92,507.87,501.31,503.56,2050000,503.56 +1957-06-19,511.32,512.69,505.28,505.92,2220000,505.92 +1957-06-18,513.19,515.20,506.68,511.32,2440000,511.32 +1957-06-17,511.79,516.81,510.38,513.19,2220000,513.19 +1957-06-14,511.58,514.38,508.93,511.79,2090000,511.79 +1957-06-13,509.66,514.27,508.23,511.58,2630000,511.58 +1957-06-12,509.48,513.36,507.76,509.66,2600000,509.66 +1957-06-11,504.93,511.70,504.93,509.48,2850000,509.48 +1957-06-10,505.63,507.87,497.78,503.76,2050000,503.76 +1957-06-07,504.55,508.14,502.88,505.63,2380000,505.63 +1957-06-06,502.07,506.39,501.13,504.55,2300000,504.55 +1957-06-05,502.97,504.37,499.38,502.07,1940000,502.07 +1957-06-04,503.76,506.68,499.53,502.97,2200000,502.97 +1957-06-03,504.93,507.96,500.46,503.76,2050000,503.76 +1957-05-31,502.18,507.76,501.57,504.93,2050000,504.93 +1957-05-29,498.10,503.56,498.10,502.18,2270000,502.18 +1957-05-28,499.21,499.62,494.42,497.72,2070000,497.72 +1957-05-27,504.02,505.07,497.89,499.21,2290000,499.21 +1957-05-24,504.02,506.94,502.15,504.02,2340000,504.02 +1957-05-23,504.43,506.04,500.90,504.02,2110000,504.02 +1957-05-22,506.04,506.82,502.36,504.43,2060000,504.43 +1957-05-21,505.98,507.90,503.32,506.04,2370000,506.04 +1957-05-20,505.60,508.75,503.82,505.98,2300000,505.98 +1957-05-17,504.84,508.87,503.58,505.60,2510000,505.60 +1957-05-16,501.98,507.06,501.16,504.84,2690000,504.84 +1957-05-15,500.46,504.87,498.27,501.98,2590000,501.98 +1957-05-14,502.21,504.43,498.16,500.46,2580000,500.46 +1957-05-13,498.51,503.93,498.51,502.21,2720000,502.21 +1957-05-10,496.76,500.46,495.15,498.30,2430000,498.30 +1957-05-09,496.73,499.21,494.80,496.76,2520000,496.76 +1957-05-08,494.68,498.13,493.34,496.73,2590000,496.73 +1957-05-07,496.32,497.78,492.29,494.68,2300000,494.68 +1957-05-06,497.54,500.29,494.86,496.32,2210000,496.32 +1957-05-03,498.56,501.34,495.00,497.54,2390000,497.54 +1957-05-02,495.76,501.13,494.98,498.56,2860000,498.56 +1957-05-01,494.36,498.04,493.05,495.76,2310000,495.76 +1957-04-30,493.95,496.49,491.62,494.36,2200000,494.36 +1957-04-29,491.50,496.67,490.77,493.95,2290000,493.95 +1957-04-26,492.29,493.92,488.41,491.50,2380000,491.50 +1957-04-25,493.66,496.03,490.19,492.29,2640000,492.29 +1957-04-24,491.88,497.22,489.87,493.66,2990000,493.66 +1957-04-23,488.79,494.10,487.12,491.88,2840000,491.88 +1957-04-22,488.03,491.59,485.90,488.79,2560000,488.79 +1957-04-18,485.02,489.43,483.51,488.03,2480000,488.03 +1957-04-17,484.32,487.47,482.22,485.02,2290000,485.02 +1957-04-16,485.84,487.15,482.69,484.32,1890000,484.32 +1957-04-15,486.72,488.53,483.62,485.84,2010000,485.84 +1957-04-12,484.70,488.76,482.78,486.72,2370000,486.72 +1957-04-11,485.17,486.86,481.75,484.70,2350000,484.70 +1957-04-10,482.66,486.98,482.02,485.17,2920000,485.17 +1957-04-09,479.04,484.32,478.40,482.66,2400000,482.66 +1957-04-08,477.61,480.44,475.86,479.04,1950000,479.04 +1957-04-05,477.43,479.45,475.68,477.61,1830000,477.61 +1957-04-04,478.31,479.62,475.45,477.43,1820000,477.43 +1957-04-03,477.55,481.08,476.73,478.31,2160000,478.31 +1957-04-02,474.98,478.40,473.70,477.55,2300000,477.55 +1957-04-01,474.81,476.82,473.09,474.98,1620000,474.98 +1957-03-29,475.01,477.32,473.14,474.81,1650000,474.81 +1957-03-28,473.12,476.88,472.27,475.01,1930000,475.01 +1957-03-27,472.24,475.10,471.01,473.12,1710000,473.12 +1957-03-26,471.51,474.02,468.91,472.24,1660000,472.24 +1957-03-25,472.94,474.05,469.70,471.51,1590000,471.51 +1957-03-22,474.02,475.57,471.04,472.94,1610000,472.94 +1957-03-21,473.93,475.98,471.36,474.02,1630000,474.02 +1957-03-20,473.93,476.38,472.85,473.93,1830000,473.93 +1957-03-19,472.30,475.22,471.01,473.93,1540000,473.93 +1957-03-18,474.28,474.66,470.17,472.30,1450000,472.30 +1957-03-15,473.93,476.12,471.19,474.28,1600000,474.28 +1957-03-14,472.53,475.45,471.39,473.93,1580000,473.93 +1957-03-13,470.31,474.37,469.88,472.53,1840000,472.53 +1957-03-12,469.50,471.45,466.69,470.31,1600000,470.31 +1957-03-11,471.63,472.06,467.37,469.50,1650000,469.50 +1957-03-08,474.17,474.40,470.40,471.63,1630000,471.63 +1957-03-07,474.87,477.58,472.62,474.17,1830000,474.17 +1957-03-06,472.88,475.77,470.43,474.87,1840000,474.87 +1957-03-05,471.48,475.13,471.04,472.88,1860000,472.88 +1957-03-04,468.91,472.97,468.15,471.48,1890000,471.48 +1957-03-01,464.62,469.76,463.66,468.91,1700000,468.91 +1957-02-28,466.26,468.50,463.51,464.62,1620000,464.62 +1957-02-27,467.72,469.00,463.95,466.26,1620000,466.26 +1957-02-26,466.90,470.34,465.76,467.72,1580000,467.72 +1957-02-25,466.93,469.00,463.40,466.90,1710000,466.90 +1957-02-21,469.00,470.08,465.15,466.93,1680000,466.93 +1957-02-20,466.84,471.10,465.99,469.00,1790000,469.00 +1957-02-19,467.40,469.23,463.63,466.84,1670000,466.84 +1957-02-18,468.07,471.22,465.21,467.40,1800000,467.40 +1957-02-15,461.56,468.83,459.37,468.07,2060000,468.07 +1957-02-14,462.14,467.04,459.69,461.56,2220000,461.56 +1957-02-13,454.87,462.70,454.87,462.14,2380000,462.14 +1957-02-12,457.44,459.87,453.07,454.82,2550000,454.82 +1957-02-11,465.50,465.50,456.01,457.44,2740000,457.44 +1957-02-08,468.71,468.88,463.19,466.29,2120000,466.29 +1957-02-07,470.81,473.93,467.42,468.71,1840000,468.71 +1957-02-06,469.96,472.02,466.40,470.81,2110000,470.81 +1957-02-05,476.18,476.18,466.65,469.96,2610000,469.96 +1957-02-04,477.22,479.54,475.49,477.19,1750000,477.19 +1957-02-01,479.16,479.76,474.43,477.22,1680000,477.22 +1957-01-31,480.53,483.02,478.04,479.16,1920000,479.16 +1957-01-30,476.92,481.95,476.42,480.53,1950000,480.53 +1957-01-29,474.59,478.31,473.19,476.92,1800000,476.92 +1957-01-28,478.34,478.48,473.14,474.59,1700000,474.59 +1957-01-25,481.30,481.76,475.19,478.34,2010000,478.34 +1957-01-24,479.93,483.57,478.34,481.30,1910000,481.30 +1957-01-23,477.49,481.24,475.25,479.93,1920000,479.93 +1957-01-22,475.90,480.45,475.71,477.49,1920000,477.49 +1957-01-21,477.46,478.29,471.06,475.90,2740000,475.90 +1957-01-18,484.01,486.42,476.23,477.46,2400000,477.46 +1957-01-17,485.05,486.91,481.08,484.01,2140000,484.01 +1957-01-16,484.75,488.28,483.19,485.05,2210000,485.05 +1957-01-15,489.29,490.41,482.94,484.75,2370000,484.75 +1957-01-14,493.81,494.49,487.65,489.29,2350000,489.29 +1957-01-11,495.51,497.78,492.11,493.81,2340000,493.81 +1957-01-10,493.21,498.00,492.74,495.51,2470000,495.51 +1957-01-09,493.86,496.90,490.77,493.21,2330000,493.21 +1957-01-08,495.20,497.20,491.29,493.86,2230000,493.86 +1957-01-07,498.22,500.90,491.78,495.20,2500000,495.20 +1957-01-04,499.20,502.57,496.24,498.22,2710000,498.22 +1957-01-03,496.03,501.56,494.16,499.20,2260000,499.20 +1957-01-02,499.47,501.01,492.06,496.03,1960000,496.03 +1956-12-31,496.41,501.56,494.96,499.47,3680000,499.47 +1956-12-28,496.38,498.68,493.89,496.41,2790000,496.41 +1956-12-27,496.74,499.39,494.79,496.38,2420000,496.38 +1956-12-26,494.38,500.32,494.00,496.74,2440000,496.74 +1956-12-21,490.44,496.22,489.10,494.38,2380000,494.38 +1956-12-20,493.81,494.57,489.29,490.44,2060000,490.44 +1956-12-19,495.09,497.15,492.19,493.81,1900000,493.81 +1956-12-18,493.75,497.70,491.97,495.09,2370000,495.09 +1956-12-17,492.08,497.26,490.82,493.75,2500000,493.75 +1956-12-14,490.47,493.75,488.69,492.08,2450000,492.08 +1956-12-13,487.51,492.77,486.03,490.47,2370000,490.47 +1956-12-12,490.36,491.75,486.06,487.51,2180000,487.51 +1956-12-11,493.18,494.44,487.68,490.36,2210000,490.36 +1956-12-10,494.79,498.95,492.14,493.18,2600000,493.18 +1956-12-07,492.74,497.09,491.21,494.79,2400000,494.79 +1956-12-06,488.55,495.18,487.32,492.74,2470000,492.74 +1956-12-05,481.38,490.71,480.61,488.55,2360000,488.55 +1956-12-04,480.61,483.82,479.08,481.38,2180000,481.38 +1956-12-03,474.26,482.80,474.26,480.61,2570000,480.61 +1956-11-30,467.09,474.59,467.09,472.78,2300000,472.78 +1956-11-29,466.10,468.10,460.41,466.62,2440000,466.62 +1956-11-28,470.18,472.81,465.20,466.10,2190000,466.10 +1956-11-27,470.29,472.18,467.25,470.18,2130000,470.18 +1956-11-26,472.56,476.89,468.73,470.29,2230000,470.29 +1956-11-23,467.91,473.69,466.73,472.56,1880000,472.56 +1956-11-21,470.07,472.37,466.16,467.91,2310000,467.91 +1956-11-20,474.56,475.66,468.16,470.07,2240000,470.07 +1956-11-19,480.67,481.05,472.54,474.56,2560000,474.56 +1956-11-16,480.20,483.51,478.15,480.67,1820000,480.67 +1956-11-15,482.36,486.28,479.11,480.20,2210000,480.20 +1956-11-14,486.69,487.27,479.96,482.36,2290000,482.36 +1956-11-13,487.05,490.71,484.99,486.69,2140000,486.69 +1956-11-12,485.35,488.91,483.60,487.05,1600000,487.05 +1956-11-09,488.72,490.50,483.57,485.35,1690000,485.35 +1956-11-08,491.15,491.32,483.21,488.72,1970000,488.72 +1956-11-07,495.37,500.52,490.22,491.15,2650000,491.15 +1956-11-05,490.47,497.70,488.72,495.37,2830000,495.37 +1956-11-02,487.62,493.40,486.42,490.47,2180000,490.47 +1956-11-01,480.23,488.72,480.23,487.62,1890000,487.62 +1956-10-31,486.47,486.47,476.83,479.85,2280000,479.85 +1956-10-30,486.94,488.58,483.40,486.47,1830000,486.47 +1956-10-29,486.06,494.11,484.83,486.94,2420000,486.94 +1956-10-26,481.08,487.07,480.91,486.06,1800000,486.06 +1956-10-25,482.67,483.30,478.29,481.08,1580000,481.08 +1956-10-24,485.05,485.90,481.05,482.67,1640000,482.67 +1956-10-23,485.27,487.05,483.19,485.05,1390000,485.05 +1956-10-22,486.12,487.98,483.95,485.27,1430000,485.27 +1956-10-19,486.31,489.46,484.45,486.12,1720000,486.12 +1956-10-18,484.66,487.35,481.57,486.31,1640000,486.31 +1956-10-17,487.57,488.83,482.47,484.66,1640000,484.66 +1956-10-16,489.40,490.58,485.10,487.57,1580000,487.57 +1956-10-15,490.19,493.01,487.76,489.40,1610000,489.40 +1956-10-12,488.06,490.93,486.36,490.19,1330000,490.19 +1956-10-11,487.32,491.18,485.90,488.06,1760000,488.06 +1956-10-10,481.32,487.54,480.37,487.32,1620000,487.32 +1956-10-09,483.38,483.68,479.22,481.32,1220000,481.32 +1956-10-08,482.39,486.47,481.54,483.38,1450000,483.38 +1956-10-05,481.24,483.62,478.86,482.39,1580000,482.39 +1956-10-04,482.04,483.98,478.37,481.24,1600000,481.24 +1956-10-03,476.97,484.06,476.97,482.04,2180000,482.04 +1956-10-02,468.73,477.11,468.73,475.41,2400000,475.41 +1956-10-01,475.25,475.38,463.83,468.70,2600000,468.70 +1956-09-28,479.76,481.13,474.23,475.25,1720000,475.25 +1956-09-27,481.60,485.21,477.85,479.76,1770000,479.76 +1956-09-26,481.08,483.46,474.86,481.60,2370000,481.60 +1956-09-25,487.70,488.31,479.57,481.08,2100000,481.08 +1956-09-24,490.33,492.08,486.53,487.70,1840000,487.70 +1956-09-21,488.00,493.86,488.00,490.33,2110000,490.33 +1956-09-20,488.72,489.40,482.86,487.13,2150000,487.13 +1956-09-19,493.45,494.66,487.68,488.72,2040000,488.72 +1956-09-18,498.76,499.12,490.50,493.45,2200000,493.45 +1956-09-17,500.32,502.40,496.49,498.76,1940000,498.76 +1956-09-14,499.69,503.39,497.94,500.32,2110000,500.32 +1956-09-13,499.97,502.92,497.56,499.69,2000000,499.69 +1956-09-12,502.16,504.43,498.43,499.97,1930000,499.97 +1956-09-11,505.56,505.63,499.26,502.16,1920000,502.16 +1956-09-10,506.76,509.79,503.92,505.56,1860000,505.56 +1956-09-07,509.49,509.55,504.39,506.76,1690000,506.76 +1956-09-06,509.82,512.25,507.74,509.49,1550000,509.49 +1956-09-05,507.66,512.68,507.34,509.82,2130000,509.82 +1956-09-04,502.04,508.32,501.17,507.66,1790000,507.66 +1956-08-31,495.96,503.51,495.96,502.04,1620000,502.04 +1956-08-30,499.91,499.91,492.19,495.96,2050000,495.96 +1956-08-29,503.05,504.25,498.85,500.90,1530000,500.90 +1956-08-28,505.70,507.74,502.26,503.05,1400000,503.05 +1956-08-27,507.91,510.28,504.58,505.70,1420000,505.70 +1956-08-24,507.06,510.77,505.83,507.91,1530000,507.91 +1956-08-23,502.34,508.95,502.23,507.06,1590000,507.06 +1956-08-22,505.43,507.72,501.60,502.34,1570000,502.34 +1956-08-21,509.25,509.25,500.84,505.43,2440000,505.43 +1956-08-20,515.79,516.26,510.12,511.24,1770000,511.24 +1956-08-17,517.19,518.52,514.13,515.79,1720000,515.79 +1956-08-16,517.70,519.42,514.73,517.19,1790000,517.19 +1956-08-15,517.27,521.11,516.01,517.70,2000000,517.70 +1956-08-14,514.40,519.23,512.77,517.27,1790000,517.27 +1956-08-13,517.38,518.25,512.08,514.40,1730000,514.40 +1956-08-10,519.04,519.67,513.15,517.38,2040000,517.38 +1956-08-09,518.74,523.24,517.13,519.04,2550000,519.04 +1956-08-08,515.88,521.41,515.33,518.74,2480000,518.74 +1956-08-07,513.88,518.30,511.67,515.88,2180000,515.88 +1956-08-06,518.85,518.85,509.65,513.88,2280000,513.88 +1956-08-03,520.95,522.72,517.51,520.27,2210000,520.27 +1956-08-02,518.69,523.33,516.83,520.95,2530000,520.95 +1956-08-01,517.81,521.50,515.55,518.69,2230000,518.69 +1956-07-31,513.42,519.97,512.85,517.81,2520000,517.81 +1956-07-30,512.30,515.22,508.59,513.42,2100000,513.42 +1956-07-27,515.85,516.50,507.85,512.30,2240000,512.30 +1956-07-26,514.13,517.62,513.20,515.85,2060000,515.85 +1956-07-25,513.17,516.80,511.67,514.13,2220000,514.13 +1956-07-24,513.61,516.78,511.26,513.17,2040000,513.17 +1956-07-23,514.57,516.01,511.65,513.61,1970000,513.61 +1956-07-20,513.86,516.37,512.36,514.57,2020000,514.57 +1956-07-19,513.39,515.96,511.65,513.86,1950000,513.86 +1956-07-18,514.43,517.59,511.73,513.39,2530000,513.39 +1956-07-17,512.98,516.78,510.91,514.43,2520000,514.43 +1956-07-16,511.10,515.19,510.17,512.98,2260000,512.98 +1956-07-13,507.44,512.36,506.46,511.10,2020000,511.10 +1956-07-12,509.65,511.05,505.26,507.44,2180000,507.44 +1956-07-11,508.34,511.92,507.20,509.65,2520000,509.65 +1956-07-10,506.52,510.72,504.85,508.34,2450000,508.34 +1956-07-09,504.14,509.08,503.24,506.52,2180000,506.52 +1956-07-06,500.54,506.24,500.08,504.14,2180000,504.14 +1956-07-05,495.74,502.51,494.67,500.54,2240000,500.54 +1956-07-03,491.92,496.97,491.02,495.74,1840000,495.74 +1956-07-02,492.78,493.65,488.36,491.92,1610000,491.92 +1956-06-29,492.50,494.82,489.85,492.78,1780000,492.78 +1956-06-28,492.04,494.34,488.91,492.50,1900000,492.50 +1956-06-27,489.37,494.16,488.85,492.04,2090000,492.04 +1956-06-26,486.43,490.77,484.83,489.37,1730000,489.37 +1956-06-25,487.95,489.74,485.34,486.43,1500000,486.43 +1956-06-22,488.26,491.46,486.12,487.95,1630000,487.95 +1956-06-21,485.06,490.45,485.06,488.26,1820000,488.26 +1956-06-20,484.52,487.05,482.70,485.00,1670000,485.00 +1956-06-19,483.91,486.38,481.18,484.52,1430000,484.52 +1956-06-18,485.91,487.30,482.90,483.91,1440000,483.91 +1956-06-15,485.52,487.58,484.15,485.91,1550000,485.91 +1956-06-14,487.08,488.02,483.99,485.52,1670000,485.52 +1956-06-13,485.49,489.69,484.45,487.08,1760000,487.08 +1956-06-12,479.41,486.10,478.70,485.49,1900000,485.49 +1956-06-11,476.15,481.22,476.15,479.41,2000000,479.41 +1956-06-08,480.83,480.83,467.99,475.29,3630000,475.29 +1956-06-07,480.54,485.20,480.14,482.99,1630000,482.99 +1956-06-06,483.19,483.36,477.95,480.54,1460000,480.54 +1956-06-05,483.22,485.82,481.73,483.19,1650000,483.19 +1956-06-04,480.63,484.60,479.48,483.22,1500000,483.22 +1956-06-01,478.05,481.52,475.54,480.63,1440000,480.63 +1956-05-31,477.68,483.53,476.43,478.05,2020000,478.05 +1956-05-29,470.43,478.99,470.43,477.68,2430000,477.68 +1956-05-28,472.49,474.16,463.85,468.81,2780000,468.81 +1956-05-25,473.51,477.79,469.31,472.49,2570000,472.49 +1956-05-24,480.16,481.81,471.71,473.51,2600000,473.51 +1956-05-23,484.13,487.60,479.38,480.16,2140000,480.16 +1956-05-22,490.08,490.08,481.86,484.13,2290000,484.13 +1956-05-21,496.13,496.13,488.93,491.62,1940000,491.62 +1956-05-18,496.63,500.65,494.75,496.39,2020000,496.39 +1956-05-17,492.69,497.93,492.22,496.63,1970000,496.63 +1956-05-16,494.83,497.67,490.97,492.69,2080000,492.69 +1956-05-15,497.28,497.86,490.73,494.83,2650000,494.83 +1956-05-14,501.25,505.79,496.00,497.28,2440000,497.28 +1956-05-11,501.56,503.18,497.57,501.25,2450000,501.25 +1956-05-10,508.16,509.44,499.86,501.56,2850000,501.56 +1956-05-09,509.13,511.74,506.05,508.16,2550000,508.16 +1956-05-08,512.89,513.62,508.03,509.13,2440000,509.13 +1956-05-07,516.44,518.50,511.74,512.89,2550000,512.89 +1956-05-04,514.03,519.80,513.49,516.44,2860000,516.44 +1956-05-03,512.78,516.57,511.43,514.03,2640000,514.03 +1956-05-02,513.96,515.08,510.93,512.78,2440000,512.78 +1956-05-01,516.12,516.88,511.24,513.96,2500000,513.96 +1956-04-30,512.03,518.42,511.19,516.12,2730000,516.12 +1956-04-27,507.95,513.98,507.95,512.03,2760000,512.03 +1956-04-26,503.86,508.92,503.86,507.12,2630000,507.12 +1956-04-25,503.36,505.48,500.99,503.02,2270000,503.02 +1956-04-24,507.28,508.95,501.77,503.36,2500000,503.36 +1956-04-23,507.20,510.77,506.00,507.28,2440000,507.28 +1956-04-20,504.33,508.66,503.91,507.20,2320000,507.20 +1956-04-19,506.55,507.95,502.45,504.33,2210000,504.33 +1956-04-18,507.95,511.03,504.61,506.55,2470000,506.55 +1956-04-17,509.15,511.11,505.81,507.95,2330000,507.95 +1956-04-16,509.99,512.83,506.99,509.15,2310000,509.15 +1956-04-13,509.15,511.61,506.73,509.99,2450000,509.99 +1956-04-12,512.70,515.03,508.27,509.15,2700000,509.15 +1956-04-11,510.04,514.61,508.89,512.70,2440000,512.70 +1956-04-10,516.72,516.72,508.24,510.04,2590000,510.04 +1956-04-09,521.05,524.37,517.40,518.52,2760000,518.52 +1956-04-06,516.57,522.12,516.28,521.05,2600000,521.05 +1956-04-05,518.65,522.86,514.90,516.57,2950000,516.57 +1956-04-04,515.91,519.88,513.54,518.65,2760000,518.65 +1956-04-03,515.10,519.85,513.33,515.91,2760000,515.91 +1956-04-02,511.79,519.10,510.67,515.10,3120000,515.10 +1956-03-29,510.25,515.86,509.36,511.79,3480000,511.79 +1956-03-28,508.68,511.61,506.21,510.25,2610000,510.25 +1956-03-27,512.39,512.39,507.77,508.68,2540000,508.68 +1956-03-26,513.03,515.05,509.81,512.42,2720000,512.42 +1956-03-23,510.94,515.15,510.25,513.03,2980000,513.03 +1956-03-22,507.92,512.21,505.85,510.94,2650000,510.94 +1956-03-21,512.62,513.70,506.33,507.92,2930000,507.92 +1956-03-20,509.76,514.69,507.13,512.62,2960000,512.62 +1956-03-19,507.60,511.57,506.36,509.76,2570000,509.76 +1956-03-16,507.50,509.61,504.67,507.60,3120000,507.60 +1956-03-15,504.01,509.19,504.01,507.50,3270000,507.50 +1956-03-14,499.36,505.60,499.36,503.88,3140000,503.88 +1956-03-13,500.24,502.32,496.45,499.33,2790000,499.33 +1956-03-12,497.84,502.03,496.59,500.24,3110000,500.24 +1956-03-09,492.63,499.09,492.63,497.84,3430000,497.84 +1956-03-08,491.26,493.95,489.82,492.36,2500000,492.36 +1956-03-07,491.41,492.75,489.21,491.26,2380000,491.26 +1956-03-06,491.68,494.42,489.77,491.41,2770000,491.41 +1956-03-05,488.84,493.29,488.57,491.68,3090000,491.68 +1956-03-02,486.69,491.07,485.88,488.84,2860000,488.84 +1956-03-01,483.65,487.98,483.63,486.69,2410000,486.69 +1956-02-29,485.71,491.09,482.77,483.65,3900000,483.65 +1956-02-28,485.00,487.03,482.48,485.71,2540000,485.71 +1956-02-27,485.66,488.06,482.50,485.00,2440000,485.00 +1956-02-24,481.55,487.30,481.55,485.66,2890000,485.66 +1956-02-23,477.03,482.75,477.03,481.50,2900000,481.50 +1956-02-21,476.46,478.20,474.19,476.93,2240000,476.93 +1956-02-20,477.05,480.21,473.28,476.46,2530000,476.46 +1956-02-17,469.61,477.91,469.12,477.05,2840000,477.05 +1956-02-16,470.64,471.79,467.80,469.61,1750000,469.61 +1956-02-15,469.25,476.02,469.25,470.64,3000000,470.64 +1956-02-14,467.17,468.24,463.89,465.72,1590000,465.72 +1956-02-13,467.66,469.56,465.60,467.17,1420000,467.17 +1956-02-10,467.22,470.25,465.14,467.66,1770000,467.66 +1956-02-09,471.23,471.45,465.50,467.22,2080000,467.22 +1956-02-08,476.56,478.52,470.08,471.23,2170000,471.23 +1956-02-07,478.57,479.18,474.16,476.56,2060000,476.56 +1956-02-06,477.44,481.80,475.88,478.57,2230000,478.57 +1956-02-03,473.43,479.10,472.26,477.44,2110000,477.44 +1956-02-02,473.28,475.51,470.54,473.43,1900000,473.43 +1956-02-01,470.74,475.41,470.69,473.28,2010000,473.28 +1956-01-31,467.56,471.99,466.78,470.74,1900000,470.74 +1956-01-30,466.56,470.10,465.23,467.56,1830000,467.56 +1956-01-27,466.82,468.73,463.33,466.56,1950000,466.56 +1956-01-26,470.71,471.62,465.38,466.82,1840000,466.82 +1956-01-25,467.93,472.57,467.93,470.71,1950000,470.71 +1956-01-24,463.91,469.78,463.91,467.88,2160000,467.88 +1956-01-23,464.40,465.85,458.21,462.35,2720000,462.35 +1956-01-20,468.49,472.11,463.16,464.40,2430000,464.40 +1956-01-19,472.89,473.43,466.60,468.49,2500000,468.49 +1956-01-18,477.73,479.69,472.40,472.89,2110000,472.89 +1956-01-17,476.24,480.55,475.12,477.73,2050000,477.73 +1956-01-16,481.50,481.50,475.19,476.24,2260000,476.24 +1956-01-13,481.80,484.41,479.96,481.80,2120000,481.80 +1956-01-12,478.71,483.70,478.71,481.80,2330000,481.80 +1956-01-11,476.12,481.33,475.85,478.42,2310000,478.42 +1956-01-10,479.69,479.69,472.65,476.12,2640000,476.12 +1956-01-09,485.68,487.91,478.62,479.74,2700000,479.74 +1956-01-06,484.02,488.18,483.78,485.68,2570000,485.68 +1956-01-05,484.00,487.25,482.31,484.02,2110000,484.02 +1956-01-04,485.78,487.79,481.01,484.00,2290000,484.00 +1956-01-03,488.40,490.92,484.27,485.78,2390000,485.78 +1955-12-30,484.71,490.33,484.71,488.40,2820000,488.40 +1955-12-29,484.22,487.18,482.77,484.56,2190000,484.56 +1955-12-28,485.81,487.13,483.41,484.22,1990000,484.22 +1955-12-27,486.59,488.91,484.00,485.81,2010000,485.81 +1955-12-23,486.08,489.31,484.83,486.59,2090000,486.59 +1955-12-22,485.49,489.45,484.56,486.08,2650000,486.08 +1955-12-21,481.87,487.37,481.87,485.49,2540000,485.49 +1955-12-20,481.80,483.87,478.59,481.84,2280000,481.84 +1955-12-19,482.08,485.22,480.69,481.80,2380000,481.80 +1955-12-16,480.72,484.17,479.87,482.08,2310000,482.08 +1955-12-15,480.84,483.38,478.32,480.72,2260000,480.72 +1955-12-14,484.29,485.48,479.70,480.84,2670000,480.84 +1955-12-13,483.72,487.04,482.41,484.29,2430000,484.29 +1955-12-12,487.42,487.42,482.41,483.72,2510000,483.72 +1955-12-09,487.80,490.37,486.14,487.64,2660000,487.64 +1955-12-08,486.35,489.68,484.83,487.80,2970000,487.80 +1955-12-07,486.73,489.11,484.81,486.35,2480000,486.35 +1955-12-06,487.16,490.56,485.55,486.73,2540000,486.73 +1955-12-05,483.15,488.71,483.15,487.16,2440000,487.16 +1955-12-02,481.39,483.88,478.87,482.72,2400000,482.72 +1955-12-01,483.26,485.48,480.01,481.39,2370000,481.39 +1955-11-30,482.60,485.95,481.53,483.26,2900000,483.26 +1955-11-29,480.96,484.03,479.13,482.60,2370000,482.60 +1955-11-28,482.88,485.81,479.87,480.96,2460000,480.96 +1955-11-25,482.62,485.40,480.98,482.88,2190000,482.88 +1955-11-23,481.91,485.97,480.72,482.62,2550000,482.62 +1955-11-22,477.30,483.38,477.25,481.91,2270000,481.91 +1955-11-21,482.91,483.48,476.42,477.30,1960000,477.30 +1955-11-18,485.26,485.74,478.89,482.91,2320000,482.91 +1955-11-17,487.38,488.99,484.17,485.26,2310000,485.26 +1955-11-16,487.07,490.75,483.60,487.38,2460000,487.38 +1955-11-15,484.88,490.35,480.84,487.07,2560000,487.07 +1955-11-14,479.20,486.69,479.20,484.88,2760000,484.88 +1955-11-11,472.52,478.01,472.21,476.54,2000000,476.54 +1955-11-10,473.90,478.70,471.48,472.52,2550000,472.52 +1955-11-09,470.58,476.68,469.29,473.90,2580000,473.90 +1955-11-07,467.35,472.45,466.73,470.58,2230000,470.58 +1955-11-04,461.97,468.70,461.03,467.35,2430000,467.35 +1955-11-03,455.99,463.09,455.99,461.97,2260000,461.97 +1955-11-02,454.89,456.18,452.12,454.92,1610000,454.92 +1955-11-01,454.87,456.84,452.86,454.89,1590000,454.89 +1955-10-31,454.85,458.31,453.84,454.87,1800000,454.87 +1955-10-28,453.77,456.59,451.21,454.85,1720000,454.85 +1955-10-27,455.72,458.97,452.31,453.77,1830000,453.77 +1955-10-26,458.40,459.34,454.51,455.72,1660000,455.72 +1955-10-25,460.82,463.02,457.48,458.40,1950000,458.40 +1955-10-24,458.47,462.38,458.35,460.82,1820000,460.82 +1955-10-21,457.66,460.39,455.49,458.47,1710000,458.47 +1955-10-20,454.39,460.66,454.39,457.66,2160000,457.66 +1955-10-19,448.76,454.44,448.76,453.09,1760000,453.09 +1955-10-18,446.13,450.43,444.82,448.58,1550000,448.58 +1955-10-17,444.68,450.75,443.68,446.13,1480000,446.13 +1955-10-14,444.91,446.90,440.59,444.68,1640000,444.68 +1955-10-13,445.58,451.30,443.68,444.91,1980000,444.91 +1955-10-12,442.46,448.16,442.46,445.58,1900000,445.58 +1955-10-11,441.14,444.04,433.19,438.59,3590000,438.59 +1955-10-10,452.97,452.97,440.17,441.14,3100000,441.14 +1955-10-07,458.19,458.74,451.05,454.41,2150000,454.41 +1955-10-06,461.14,461.79,456.61,458.19,1690000,458.19 +1955-10-05,458.85,464.60,458.79,461.14,1920000,461.14 +1955-10-04,455.70,461.79,455.35,458.85,2020000,458.85 +1955-10-03,465.40,465.40,454.85,455.70,2720000,455.70 +1955-09-30,468.68,469.68,464.14,466.62,2140000,466.62 +1955-09-29,472.61,474.08,467.37,468.68,2560000,468.68 +1955-09-28,467.49,475.13,467.49,472.61,3780000,472.61 +1955-09-27,456.22,467.42,456.22,465.93,5500000,465.93 +1955-09-26,463.59,463.59,446.74,455.56,7720000,455.56 +1955-09-23,485.96,489.94,483.44,487.45,2540000,487.45 +1955-09-22,485.98,489.51,484.12,485.96,2550000,485.96 +1955-09-21,483.67,488.02,482.97,485.98,2460000,485.98 +1955-09-20,483.80,485.05,480.84,483.67,2090000,483.67 +1955-09-19,483.67,487.79,482.42,483.80,2390000,483.80 +1955-09-16,481.56,485.32,480.02,483.67,2540000,483.67 +1955-09-15,482.90,485.73,480.04,481.56,2890000,481.56 +1955-09-14,480.93,485.71,479.61,482.90,2570000,482.90 +1955-09-13,476.51,482.76,475.54,480.93,2580000,480.93 +1955-09-12,474.59,478.44,473.02,476.51,2520000,476.51 +1955-09-09,475.06,476.87,472.48,474.59,2480000,474.59 +1955-09-08,475.20,476.97,472.96,475.06,2470000,475.06 +1955-09-07,476.24,478.50,473.00,475.20,2380000,475.20 +1955-09-06,472.84,478.80,472.84,476.24,2360000,476.24 +1955-09-02,469.63,473.52,469.47,472.53,1700000,472.53 +1955-09-01,468.18,471.51,467.36,469.63,1860000,469.63 +1955-08-31,464.80,469.51,464.80,468.18,1850000,468.18 +1955-08-30,464.37,466.41,462.70,464.67,1740000,464.67 +1955-08-29,463.70,466.62,463.08,464.37,1910000,464.37 +1955-08-26,461.27,465.30,460.68,463.70,2200000,463.70 +1955-08-25,459.39,462.93,458.40,461.27,2120000,461.27 +1955-08-24,457.38,462.68,457.38,459.39,2140000,459.39 +1955-08-23,452.55,457.88,451.17,457.35,1890000,457.35 +1955-08-22,453.57,454.41,450.76,452.55,1430000,452.55 +1955-08-19,452.53,454.66,450.67,453.57,1400000,453.57 +1955-08-18,452.85,454.86,451.13,452.53,1560000,452.53 +1955-08-17,453.26,454.66,449.88,452.85,1570000,452.85 +1955-08-16,456.09,457.17,451.92,453.26,1520000,453.26 +1955-08-15,457.01,458.87,453.84,456.09,1230000,456.09 +1955-08-12,455.18,458.99,454.93,457.01,1530000,457.01 +1955-08-11,450.29,456.22,449.75,455.18,1620000,455.18 +1955-08-10,448.84,452.44,447.39,450.29,1580000,450.29 +1955-08-09,453.30,453.30,445.67,448.84,2240000,448.84 +1955-08-08,456.40,459.28,453.05,454.05,1730000,454.05 +1955-08-05,454.18,458.44,453.62,456.40,1690000,456.40 +1955-08-04,458.92,458.92,452.37,454.18,2210000,454.18 +1955-08-03,460.82,463.60,459.17,460.98,2190000,460.98 +1955-08-02,460.25,463.02,457.11,460.82,2260000,460.82 +1955-08-01,465.85,467.48,458.71,460.25,2190000,460.25 +1955-07-29,466.46,468.75,463.45,465.85,2070000,465.85 +1955-07-28,468.45,470.74,463.26,466.46,2090000,466.46 +1955-07-27,468.41,471.35,465.71,468.45,2170000,468.45 +1955-07-26,468.02,471.73,465.14,468.41,2340000,468.41 +1955-07-25,464.69,470.53,464.35,468.02,2500000,468.02 +1955-07-22,461.07,466.28,460.73,464.69,2500000,464.69 +1955-07-21,458.10,462.86,457.65,461.07,2530000,461.07 +1955-07-20,456.72,459.89,454.34,458.10,2080000,458.10 +1955-07-19,460.07,460.86,453.39,456.72,2300000,456.72 +1955-07-18,460.23,463.45,458.08,460.07,2160000,460.07 +1955-07-15,458.49,463.15,457.94,460.23,2230000,460.23 +1955-07-14,457.40,460.71,454.82,458.49,1980000,458.49 +1955-07-13,462.97,464.96,456.06,457.40,2360000,457.40 +1955-07-12,464.24,468.99,460.62,462.97,2630000,462.97 +1955-07-11,461.18,466.10,460.32,464.24,2420000,464.24 +1955-07-08,460.23,465.08,456.68,461.18,2450000,461.18 +1955-07-07,467.41,469.06,458.28,460.23,3300000,460.23 +1955-07-06,460.89,471.15,460.89,467.41,3140000,467.41 +1955-07-05,454.80,462.22,454.80,459.42,2680000,459.42 +1955-07-01,451.38,456.11,449.50,453.82,2540000,453.82 +1955-06-30,449.70,453.48,448.70,451.38,2370000,451.38 +1955-06-29,449.02,451.13,444.74,449.70,2180000,449.70 +1955-06-28,449.86,452.28,446.12,449.02,2180000,449.02 +1955-06-27,448.93,451.53,446.64,449.86,2250000,449.86 +1955-06-24,448.82,450.99,445.15,448.93,2410000,448.93 +1955-06-23,447.37,451.49,445.67,448.82,2900000,448.82 +1955-06-22,446.80,450.45,445.24,447.37,3010000,447.37 +1955-06-21,444.38,448.52,443.27,446.80,2720000,446.80 +1955-06-20,444.08,446.53,443.13,444.38,2490000,444.38 +1955-06-17,442.48,445.04,440.96,444.08,2340000,444.08 +1955-06-16,441.93,445.42,440.51,442.48,2760000,442.48 +1955-06-15,438.45,443.47,438.45,441.93,2650000,441.93 +1955-06-14,440.17,443.45,437.45,438.20,2860000,438.20 +1955-06-13,437.72,442.23,437.65,440.17,2770000,440.17 +1955-06-10,435.07,438.94,433.60,437.72,2470000,437.72 +1955-06-09,436.95,439.80,434.32,435.07,2960000,435.07 +1955-06-08,434.55,439.26,433.26,436.95,3300000,436.95 +1955-06-07,431.49,437.99,430.93,434.55,3230000,434.55 +1955-06-06,428.53,433.19,427.37,431.49,2560000,431.49 +1955-06-03,425.88,430.25,425.88,428.53,2590000,428.53 +1955-06-02,424.88,428.13,422.86,425.80,2610000,425.80 +1955-06-01,424.86,426.75,422.48,424.88,2510000,424.88 +1955-05-31,425.66,427.06,422.84,424.86,1990000,424.86 +1955-05-27,424.95,427.71,423.68,425.66,2220000,425.66 +1955-05-26,421.77,426.08,421.48,424.95,2260000,424.95 +1955-05-25,420.39,423.44,419.63,421.77,2100000,421.77 +1955-05-24,420.32,422.39,417.16,420.39,1650000,420.39 +1955-05-23,422.89,425.22,419.75,420.32,1900000,420.32 +1955-05-20,419.72,423.84,418.64,422.89,2240000,422.89 +1955-05-19,417.83,421.57,417.16,419.72,2380000,419.72 +1955-05-18,414.12,418.83,413.95,417.83,2010000,417.83 +1955-05-17,415.01,417.05,412.60,414.12,1900000,414.12 +1955-05-16,419.57,421.02,412.73,415.01,2160000,415.01 +1955-05-13,418.20,421.98,417.03,419.57,1860000,419.57 +1955-05-12,420.29,421.24,414.43,418.20,2830000,418.20 +1955-05-11,423.80,425.02,419.03,420.29,2120000,420.29 +1955-05-10,424.32,425.69,419.85,423.80,2150000,423.80 +1955-05-09,423.84,426.32,422.43,424.32,2090000,424.32 +1955-05-06,423.39,425.71,421.57,423.84,2250000,423.84 +1955-05-05,422.54,425.56,421.22,423.39,2270000,423.39 +1955-05-04,422.78,424.65,419.18,422.54,2220000,422.54 +1955-05-03,426.30,426.84,420.81,422.78,2630000,422.78 +1955-05-02,425.65,428.27,424.00,426.30,2220000,426.30 +1955-04-29,423.19,426.99,422.82,425.65,2230000,425.65 +1955-04-28,428.10,428.92,421.96,423.19,2550000,423.19 +1955-04-27,430.64,432.07,425.41,428.10,2660000,428.10 +1955-04-26,427.62,432.76,427.62,430.64,2720000,430.64 +1955-04-25,425.52,428.34,420.52,426.86,2720000,426.86 +1955-04-22,428.45,430.27,423.24,425.52,2800000,425.52 +1955-04-21,428.62,431.18,425.54,428.45,2810000,428.45 +1955-04-20,427.88,430.85,426.04,428.62,3090000,428.62 +1955-04-19,428.42,429.25,425.30,427.88,2700000,427.88 +1955-04-18,425.45,430.03,425.02,428.42,3080000,428.42 +1955-04-15,422.46,427.23,421.71,425.45,3180000,425.45 +1955-04-14,421.57,424.52,419.05,422.46,2890000,422.46 +1955-04-13,420.94,424.19,419.87,421.57,2820000,421.57 +1955-04-12,418.77,422.85,418.12,420.94,2770000,420.94 +1955-04-11,418.20,420.89,416.27,418.77,2680000,418.77 +1955-04-07,416.42,419.79,415.84,418.20,2330000,418.20 +1955-04-06,415.90,419.33,414.75,416.42,2500000,416.42 +1955-04-05,412.97,416.84,411.84,415.90,2100000,415.90 +1955-04-04,413.84,416.71,412.10,412.97,2500000,412.97 +1955-04-01,409.78,414.80,409.78,413.84,2660000,413.84 +1955-03-31,410.13,413.21,407.96,409.70,2680000,409.70 +1955-03-30,413.73,414.82,409.07,410.13,3410000,410.13 +1955-03-29,412.91,415.10,411.39,413.73,2770000,413.73 +1955-03-28,414.77,416.16,411.87,412.91,2540000,412.91 +1955-03-25,414.49,416.64,412.06,414.77,2540000,414.77 +1955-03-24,411.39,416.42,411.39,414.49,3170000,414.49 +1955-03-23,405.68,411.32,405.68,410.87,2730000,410.87 +1955-03-22,402.40,405.68,401.28,404.47,1910000,404.47 +1955-03-21,404.75,406.16,401.64,402.40,2020000,402.40 +1955-03-18,405.23,408.09,402.88,404.75,2050000,404.75 +1955-03-17,403.14,406.14,401.41,405.23,2200000,405.23 +1955-03-16,399.60,405.94,399.60,403.14,2900000,403.14 +1955-03-15,391.36,399.67,391.18,399.28,3160000,399.28 +1955-03-14,400.06,400.06,387.50,391.36,4220000,391.36 +1955-03-11,406.66,406.66,398.56,401.08,3040000,401.08 +1955-03-10,404.90,410.06,404.90,406.83,2760000,406.83 +1955-03-09,409.13,409.22,400.84,404.90,3590000,404.90 +1955-03-08,416.27,416.27,408.52,409.13,3160000,409.13 +1955-03-07,419.68,420.85,415.69,416.84,2630000,416.84 +1955-03-04,418.33,421.83,416.53,419.68,2770000,419.68 +1955-03-03,417.18,420.61,416.25,418.33,3330000,418.33 +1955-03-02,413.95,418.33,413.95,417.18,3370000,417.18 +1955-03-01,411.87,416.10,411.24,413.71,2830000,413.71 +1955-02-28,409.50,413.62,408.18,411.87,2620000,411.87 +1955-02-25,410.30,411.17,406.35,409.50,2540000,409.50 +1955-02-24,411.48,412.65,407.63,410.30,2920000,410.30 +1955-02-23,411.28,413.04,409.72,411.48,3030000,411.48 +1955-02-21,411.63,414.21,409.57,411.28,3010000,411.28 +1955-02-18,410.41,414.62,409.07,411.63,3660000,411.63 +1955-02-17,409.98,412.78,408.55,410.41,3030000,410.41 +1955-02-16,411.95,414.27,408.91,409.98,3660000,409.98 +1955-02-15,411.39,414.69,409.54,411.95,3510000,411.95 +1955-02-14,413.99,415.42,410.26,411.39,2950000,411.39 +1955-02-11,412.89,416.55,410.74,413.99,3260000,413.99 +1955-02-10,410.41,414.90,410.41,412.89,3460000,412.89 +1955-02-09,405.70,411.34,405.20,410.32,3360000,410.32 +1955-02-08,409.59,410.78,403.73,405.70,3400000,405.70 +1955-02-07,409.76,412.93,407.20,409.59,3610000,409.59 +1955-02-04,405.85,411.17,405.09,409.76,3370000,409.76 +1955-02-03,407.11,408.20,403.51,405.85,2890000,405.85 +1955-02-02,409.70,410.17,405.42,407.11,3210000,407.11 +1955-02-01,408.83,411.63,406.72,409.70,3320000,409.70 +1955-01-31,404.68,410.61,404.27,408.83,3500000,408.83 +1955-01-28,402.60,406.38,400.67,404.68,3290000,404.68 +1955-01-27,401.97,406.98,400.21,402.60,3500000,402.60 +1955-01-26,398.19,405.31,398.19,401.97,3860000,401.97 +1955-01-25,396.00,397.85,392.14,397.00,3230000,397.00 +1955-01-24,395.90,397.89,394.09,396.00,2910000,396.00 +1955-01-21,393.03,397.64,392.50,395.90,2690000,395.90 +1955-01-20,392.31,394.35,390.66,393.03,2210000,393.03 +1955-01-19,391.19,395.81,391.19,392.31,2760000,392.31 +1955-01-18,388.20,391.76,385.65,390.98,3020000,390.98 +1955-01-17,396.54,396.75,387.54,388.20,3360000,388.20 +1955-01-14,398.34,399.70,394.88,396.54,2630000,396.54 +1955-01-13,399.78,402.12,396.28,398.34,3350000,398.34 +1955-01-12,400.25,401.86,396.60,399.78,3400000,399.78 +1955-01-11,400.89,402.88,398.02,400.25,3680000,400.25 +1955-01-10,397.72,402.24,397.72,400.89,4300000,400.89 +1955-01-07,391.91,396.88,391.91,395.60,4030000,395.60 +1955-01-06,397.19,397.19,387.09,391.89,5300000,391.89 +1955-01-05,405.39,405.39,396.41,397.24,4640000,397.24 +1955-01-04,408.89,409.21,401.84,406.17,4420000,406.17 +1955-01-03,404.39,412.47,403.58,408.89,4570000,408.89 +1954-12-31,401.97,407.17,401.48,404.39,3840000,404.39 +1954-12-30,401.97,404.41,399.42,401.97,3590000,401.97 +1954-12-29,398.51,404.21,398.17,401.97,4430000,401.97 +1954-12-28,393.88,399.61,392.06,398.51,3660000,398.51 +1954-12-27,397.15,397.77,392.33,393.88,2970000,393.88 +1954-12-23,397.07,398.85,395.28,397.15,3310000,397.15 +1954-12-22,398.11,399.97,395.73,397.07,3460000,397.07 +1954-12-21,397.32,400.04,395.35,398.11,3630000,398.11 +1954-12-20,394.94,399.59,393.31,397.32,3770000,397.32 +1954-12-17,393.14,396.34,391.85,394.94,3730000,394.94 +1954-12-16,389.28,394.54,389.28,393.14,3390000,393.14 +1954-12-15,387.03,389.96,385.03,388.92,2740000,388.92 +1954-12-14,389.79,390.98,386.56,387.03,2650000,387.03 +1954-12-13,390.08,391.87,387.73,389.79,2750000,389.79 +1954-12-10,391.53,393.54,388.41,390.08,3250000,390.08 +1954-12-09,393.08,393.56,388.75,391.53,3300000,391.53 +1954-12-08,393.88,395.43,390.85,393.08,4150000,393.08 +1954-12-07,392.48,395.67,390.32,393.88,3820000,393.88 +1954-12-06,389.77,394.01,389.77,392.48,3960000,392.48 +1954-12-03,385.63,391.74,385.58,389.60,3790000,389.60 +1954-12-02,384.04,388.05,382.80,385.63,3190000,385.63 +1954-12-01,386.77,388.68,381.81,384.04,3100000,384.04 +1954-11-30,388.51,391.21,385.67,386.77,3440000,386.77 +1954-11-29,387.79,390.72,385.90,388.51,3300000,388.51 +1954-11-26,384.63,388.96,384.06,387.79,3010000,387.79 +1954-11-24,382.74,387.05,382.47,384.63,3990000,384.63 +1954-11-23,379.47,384.29,378.65,382.74,3690000,382.74 +1954-11-22,378.01,381.21,376.82,379.47,3000000,379.47 +1954-11-19,377.44,380.34,375.29,378.01,3130000,378.01 +1954-11-18,379.69,381.32,376.29,377.44,3530000,377.44 +1954-11-17,379.39,382.06,377.46,379.69,3830000,379.69 +1954-11-16,376.74,380.77,373.85,379.39,3260000,379.39 +1954-11-15,377.10,379.20,374.04,376.74,3080000,376.74 +1954-11-12,374.91,379.73,374.19,377.10,3720000,377.10 +1954-11-11,371.88,375.89,371.47,374.91,2960000,374.91 +1954-11-10,371.07,374.00,368.88,371.88,2070000,371.88 +1954-11-09,369.46,372.83,368.52,371.07,3240000,371.07 +1954-11-08,366.00,371.60,365.28,369.46,3180000,369.46 +1954-11-05,366.95,368.31,363.90,366.00,2950000,366.00 +1954-11-04,361.99,368.50,361.99,366.95,3140000,366.95 +1954-11-03,355.45,363.30,355.45,361.50,2700000,361.50 +1954-11-01,352.14,354.90,350.16,353.96,1790000,353.96 +1954-10-29,354.56,354.71,350.72,352.14,1900000,352.14 +1954-10-28,355.73,357.55,353.60,354.56,2190000,354.56 +1954-10-27,356.32,358.00,354.01,355.73,2030000,355.73 +1954-10-26,356.34,358.29,354.73,356.32,2010000,356.32 +1954-10-25,358.61,360.82,355.15,356.34,2340000,356.34 +1954-10-22,358.08,360.31,356.81,358.61,2080000,358.61 +1954-10-21,357.42,360.46,356.60,358.08,2320000,358.08 +1954-10-20,354.75,358.72,354.69,357.42,2380000,357.42 +1954-10-19,354.35,356.34,353.11,354.75,1900000,354.75 +1954-10-18,353.20,355.64,351.84,354.35,1790000,354.35 +1954-10-15,354.69,355.64,351.54,353.20,2250000,353.20 +1954-10-14,358.91,359.74,353.94,354.69,2540000,354.69 +1954-10-13,359.57,360.71,357.51,358.91,2070000,358.91 +1954-10-12,361.12,361.12,357.95,359.57,1620000,359.57 +1954-10-11,363.77,364.98,360.37,361.43,2100000,361.43 +1954-10-08,363.79,366.04,362.35,363.77,2120000,363.77 +1954-10-07,364.43,366.40,362.30,363.79,1810000,363.79 +1954-10-06,363.37,366.02,362.43,364.43,2570000,364.43 +1954-10-05,362.73,365.11,361.75,363.37,2300000,363.37 +1954-10-04,359.88,364.21,359.35,362.73,2000000,362.73 +1954-10-01,360.46,361.62,358.59,359.88,1850000,359.88 +1954-09-30,361.73,362.98,358.95,360.46,1840000,360.46 +1954-09-29,363.32,364.21,360.39,361.73,1810000,361.73 +1954-09-28,362.26,366.02,361.12,363.32,1800000,363.32 +1954-09-27,361.67,364.00,361.03,362.26,2190000,362.26 +1954-09-24,359.63,362.90,357.97,361.67,2340000,361.67 +1954-09-23,358.36,361.71,357.08,359.63,2340000,359.63 +1954-09-22,356.40,359.46,356.13,358.36,2260000,358.36 +1954-09-21,353.48,356.91,352.24,356.40,1770000,356.40 +1954-09-20,355.32,357.32,353.11,353.48,2060000,353.48 +1954-09-17,352.37,356.40,352.22,355.32,2250000,355.32 +1954-09-16,350.63,353.43,349.06,352.37,1880000,352.37 +1954-09-15,351.78,353.45,348.59,350.63,2110000,350.63 +1954-09-14,351.10,353.92,350.06,351.78,2120000,351.78 +1954-09-13,347.83,352.29,347.83,351.10,2030000,351.10 +1954-09-10,346.73,349.38,345.50,347.83,1870000,347.83 +1954-09-09,346.07,347.47,344.22,346.73,1700000,346.73 +1954-09-08,345.37,348.25,344.92,346.07,1970000,346.07 +1954-09-07,343.10,346.34,341.82,345.37,1860000,345.37 +1954-09-03,341.15,343.80,340.23,343.10,1630000,343.10 +1954-09-02,338.41,342.76,338.41,341.15,1600000,341.15 +1954-09-01,335.80,340.42,334.97,338.13,1790000,338.13 +1954-08-31,340.44,340.44,333.21,335.80,2640000,335.80 +1954-08-30,344.48,345.07,339.53,341.25,1950000,341.25 +1954-08-27,343.35,346.37,342.29,344.48,1740000,344.48 +1954-08-26,344.60,345.35,341.10,343.35,2060000,343.35 +1954-08-25,346.32,347.49,341.97,344.60,2280000,344.60 +1954-08-24,347.64,348.19,344.26,346.32,2000000,346.32 +1954-08-23,350.38,351.08,347.00,347.64,2020000,347.64 +1954-08-20,349.89,352.20,348.59,350.38,2110000,350.38 +1954-08-19,348.51,352.27,347.05,349.89,2320000,349.89 +1954-08-18,348.38,350.00,344.77,348.51,2390000,348.51 +1954-08-17,349.61,351.86,347.05,348.38,2900000,348.38 +1954-08-16,346.64,350.91,346.11,349.61,2760000,349.61 +1954-08-13,345.84,347.98,343.52,346.64,2500000,346.64 +1954-08-12,346.41,348.53,344.31,345.84,2680000,345.84 +1954-08-11,343.56,347.92,343.12,346.41,3440000,346.41 +1954-08-10,340.87,345.60,340.61,343.56,2890000,343.56 +1954-08-09,343.06,343.71,338.70,340.87,2280000,340.87 +1954-08-06,347.02,347.02,339.64,343.06,3350000,343.06 +1954-08-05,349.74,350.42,345.90,347.79,3150000,347.79 +1954-08-04,349.61,351.50,345.75,349.74,3620000,349.74 +1954-08-03,349.57,351.44,347.05,349.61,2970000,349.61 +1954-08-02,347.92,351.29,346.22,349.57,2850000,349.57 +1954-07-30,346.15,349.21,345.22,347.92,2800000,347.92 +1954-07-29,345.11,347.77,344.01,346.15,2710000,346.15 +1954-07-28,344.69,346.83,342.72,345.11,2740000,345.11 +1954-07-27,343.39,346.41,342.06,344.69,2690000,344.69 +1954-07-26,343.48,345.05,341.42,343.39,2110000,343.39 +1954-07-23,342.97,344.92,341.51,343.48,2520000,343.48 +1954-07-22,339.98,344.54,338.94,342.97,2890000,342.97 +1954-07-21,337.62,341.06,336.46,339.98,2510000,339.98 +1954-07-20,338.64,339.09,334.80,337.62,2580000,337.62 +1954-07-19,339.96,340.87,336.96,338.64,2370000,338.64 +1954-07-16,341.06,342.12,338.03,339.96,2540000,339.96 +1954-07-15,340.44,343.01,339.17,341.06,3000000,341.06 +1954-07-14,340.04,341.25,337.37,340.44,2520000,340.44 +1954-07-13,340.91,342.82,338.53,340.04,2430000,340.04 +1954-07-12,341.25,343.59,339.43,340.91,2330000,340.91 +1954-07-09,339.81,342.91,337.62,341.25,2240000,341.25 +1954-07-08,340.34,341.63,337.64,339.81,2080000,339.81 +1954-07-07,341.12,343.20,338.15,340.34,2380000,340.34 +1954-07-06,337.71,342.10,337.71,341.12,2560000,341.12 +1954-07-02,334.12,338.64,333.00,337.66,1980000,337.66 +1954-07-01,333.53,335.44,330.68,334.12,1860000,334.12 +1954-06-30,336.90,337.96,332.20,333.53,1950000,333.53 +1954-06-29,336.12,338.78,330.95,336.90,2580000,336.90 +1954-06-28,332.53,337.30,331.29,336.12,1890000,336.12 +1954-06-25,332.20,335.09,330.19,332.53,2060000,332.53 +1954-06-24,330.72,333.84,329.58,332.20,2260000,332.20 +1954-06-23,329.51,331.54,326.81,330.72,2090000,330.72 +1954-06-22,328.56,330.99,327.40,329.51,2100000,329.51 +1954-06-21,327.91,330.19,326.33,328.56,1820000,328.56 +1954-06-18,327.21,329.07,325.73,327.91,1580000,327.91 +1954-06-17,327.28,329.49,325.88,327.21,1810000,327.21 +1954-06-16,325.21,328.67,325.00,327.28,2070000,327.28 +1954-06-15,322.65,325.80,322.04,325.21,1630000,325.21 +1954-06-14,322.09,323.54,320.67,322.65,1420000,322.65 +1954-06-11,320.12,323.29,319.19,322.09,1630000,322.09 +1954-06-10,319.27,321.85,318.20,320.12,1610000,320.12 +1954-06-09,321.00,321.26,315.66,319.27,2360000,319.27 +1954-06-08,327.92,327.92,319.94,321.00,2540000,321.00 +1954-06-07,327.63,329.54,326.50,327.96,1520000,327.96 +1954-06-04,328.63,329.84,326.54,327.63,1720000,327.63 +1954-06-03,328.36,330.35,327.35,328.63,1810000,328.63 +1954-06-02,328.67,330.45,327.06,328.36,1930000,328.36 +1954-06-01,327.49,329.48,326.21,328.67,1850000,328.67 +1954-05-28,326.37,328.57,324.83,327.49,1940000,327.49 +1954-05-27,327.11,328.93,325.50,326.37,2230000,326.37 +1954-05-26,325.02,328.26,324.26,327.11,2180000,327.11 +1954-05-25,326.09,326.80,323.27,325.02,2050000,325.02 +1954-05-24,326.09,327.94,324.59,326.09,2330000,326.09 +1954-05-21,323.88,327.43,323.82,326.09,2620000,326.09 +1954-05-20,323.21,325.42,322.40,323.88,2070000,323.88 +1954-05-19,324.14,325.64,321.79,323.21,2170000,323.21 +1954-05-18,323.33,326.29,322.90,324.14,2250000,324.14 +1954-05-17,322.50,324.69,321.10,323.33,2040000,323.33 +1954-05-14,320.39,323.39,319.39,322.50,1970000,322.50 +1954-05-13,321.61,323.80,319.21,320.39,2340000,320.39 +1954-05-12,319.74,322.70,318.68,321.61,2210000,321.61 +1954-05-11,321.32,322.03,318.22,319.74,1770000,319.74 +1954-05-10,321.30,322.66,320.02,321.32,1800000,321.32 +1954-05-07,320.41,323.13,319.54,321.30,2070000,321.30 +1954-05-06,317.93,321.53,316.80,320.41,1980000,320.41 +1954-05-05,319.82,320.94,316.45,317.93,2020000,317.93 +1954-05-04,319.35,321.65,316.84,319.82,1990000,319.82 +1954-05-03,319.33,320.94,317.37,319.35,1870000,319.35 +1954-04-30,318.22,321.71,317.24,319.33,2450000,319.33 +1954-04-29,314.02,319.76,314.02,318.22,2150000,318.22 +1954-04-28,313.49,315.01,309.37,313.75,2120000,313.75 +1954-04-27,314.54,315.74,310.91,313.49,1970000,313.49 +1954-04-26,313.37,316.23,312.35,314.54,2150000,314.54 +1954-04-23,311.48,314.34,311.16,313.37,1990000,313.37 +1954-04-22,310.91,312.54,309.05,311.48,1750000,311.48 +1954-04-21,311.89,313.94,309.92,310.91,1870000,310.91 +1954-04-20,311.78,314.38,310.02,311.89,1860000,311.89 +1954-04-19,313.77,316.15,310.65,311.78,2430000,311.78 +1954-04-15,311.76,314.44,310.71,313.77,2200000,313.77 +1954-04-14,308.98,312.96,308.38,311.76,2330000,311.76 +1954-04-13,309.19,310.93,307.58,308.98,2020000,308.98 +1954-04-12,309.39,310.77,307.44,309.19,1790000,309.19 +1954-04-09,307.79,310.32,307.20,309.39,2360000,309.39 +1954-04-08,305.82,309.57,305.82,307.79,2300000,307.79 +1954-04-07,304.26,306.45,301.70,305.41,1830000,305.41 +1954-04-06,307.04,308.50,302.78,304.26,2120000,304.26 +1954-04-05,306.67,308.46,305.27,307.04,1710000,307.04 +1954-04-02,306.27,307.95,304.52,306.67,1830000,306.67 +1954-04-01,303.51,307.30,303.18,306.27,2270000,306.27 +1954-03-31,301.01,305.15,301.01,303.51,2690000,303.51 +1954-03-30,300.06,302.57,299.47,300.89,2130000,300.89 +1954-03-29,299.08,301.46,297.66,300.06,1870000,300.06 +1954-03-26,296.67,300.10,296.67,299.08,1550000,299.08 +1954-03-25,296.89,297.68,294.76,296.40,1720000,296.40 +1954-03-24,299.02,299.73,295.59,296.89,1900000,296.89 +1954-03-23,301.60,302.49,298.39,299.02,2180000,299.02 +1954-03-22,301.44,302.80,299.49,301.60,1800000,301.60 +1954-03-19,300.12,302.65,300.12,301.44,1930000,301.44 +1954-03-18,298.31,301.44,297.99,300.10,2020000,300.10 +1954-03-17,298.09,299.22,296.14,298.31,1740000,298.31 +1954-03-16,298.88,300.50,297.34,298.09,1540000,298.09 +1954-03-15,299.71,300.12,296.81,298.88,1680000,298.88 +1954-03-12,300.83,302.17,298.76,299.71,1980000,299.71 +1954-03-11,299.59,301.68,298.76,300.83,2050000,300.83 +1954-03-10,299.45,300.95,298.01,299.59,1870000,299.59 +1954-03-09,298.64,300.50,297.09,299.45,1630000,299.45 +1954-03-08,299.45,300.66,297.44,298.64,1650000,298.64 +1954-03-05,297.48,300.68,296.50,299.45,2030000,299.45 +1954-03-04,297.03,298.80,295.37,297.48,1830000,297.48 +1954-03-03,297.48,299.65,295.79,297.03,2240000,297.03 +1954-03-02,296.55,298.66,294.78,297.48,1980000,297.48 +1954-03-01,294.54,297.80,294.23,296.55,2040000,296.55 +1954-02-26,291.41,295.19,290.78,294.54,1910000,294.54 +1954-02-25,289.54,292.04,289.06,291.41,1470000,291.41 +1954-02-24,290.03,290.42,287.84,289.54,1350000,289.54 +1954-02-23,291.07,291.98,289.00,290.03,1470000,290.03 +1954-02-19,291.51,292.59,289.87,291.07,1510000,291.07 +1954-02-18,290.11,292.67,289.08,291.51,1500000,291.51 +1954-02-17,289.61,290.92,287.37,290.11,1740000,290.11 +1954-02-16,292.55,292.95,288.61,289.61,1870000,289.61 +1954-02-15,293.99,294.92,291.93,292.55,2080000,292.55 +1954-02-12,292.45,294.78,291.90,293.99,1730000,293.99 +1954-02-11,292.95,294.84,291.27,292.45,1860000,292.45 +1954-02-10,293.79,294.50,292.00,292.95,1790000,292.95 +1954-02-09,293.58,294.84,291.94,293.79,1880000,293.79 +1954-02-08,293.97,294.92,292.20,293.58,2180000,293.58 +1954-02-05,294.03,295.43,292.53,293.97,2030000,293.97 +1954-02-04,292.32,295.10,292.06,294.03,2040000,294.03 +1954-02-03,291.17,292.99,289.20,292.32,1690000,292.32 +1954-02-02,291.84,291.88,289.75,291.17,1420000,291.17 +1954-02-01,292.39,293.50,290.46,291.84,1740000,291.84 +1954-01-29,291.51,293.81,290.86,292.39,1950000,292.39 +1954-01-28,292.22,293.12,289.81,291.51,1730000,291.51 +1954-01-27,292.85,294.56,291.53,292.22,2020000,292.22 +1954-01-26,290.40,293.44,290.11,292.85,2120000,292.85 +1954-01-25,289.65,291.29,288.27,290.40,1860000,290.40 +1954-01-22,289.48,290.86,288.18,289.65,1890000,289.65 +1954-01-21,289.14,290.66,287.68,289.48,1780000,289.48 +1954-01-20,288.27,290.15,287.58,289.14,1960000,289.14 +1954-01-19,286.03,289.14,285.24,288.27,1840000,288.27 +1954-01-18,286.72,287.78,284.69,286.03,1580000,286.03 +1954-01-15,284.49,288.10,284.49,286.72,2180000,286.72 +1954-01-14,283.03,285.67,282.83,284.49,1530000,284.49 +1954-01-13,281.51,284.37,281.12,283.03,1420000,283.03 +1954-01-12,279.87,282.54,279.46,281.51,1250000,281.51 +1954-01-11,281.51,281.67,278.91,279.87,1220000,279.87 +1954-01-08,282.60,283.01,280.39,281.51,1260000,281.51 +1954-01-07,283.96,284.86,281.83,282.60,1540000,282.60 +1954-01-06,284.19,285.67,283.05,283.96,1460000,283.96 +1954-01-05,282.89,285.34,282.65,284.19,1520000,284.19 +1954-01-04,280.90,283.48,279.72,282.89,1310000,282.89 +1953-12-31,280.43,282.18,279.52,280.90,2490000,280.90 +1953-12-30,278.30,281.08,277.92,280.43,2050000,280.43 +1953-12-29,279.74,279.74,275.91,278.30,2140000,278.30 +1953-12-28,280.92,281.25,278.81,279.91,1570000,279.91 +1953-12-24,279.84,281.69,279.15,280.92,1270000,280.92 +1953-12-23,279.99,281.11,278.14,279.84,1570000,279.84 +1953-12-22,282.85,282.85,278.95,279.99,1720000,279.99 +1953-12-21,283.54,284.69,282.38,282.99,1690000,282.99 +1953-12-18,282.67,284.35,281.71,283.54,1550000,283.54 +1953-12-17,282.87,284.55,281.57,282.67,1600000,282.67 +1953-12-16,279.52,283.88,279.36,282.87,1880000,282.87 +1953-12-15,279.26,280.27,277.49,279.52,1450000,279.52 +1953-12-14,279.91,280.98,278.18,279.26,1540000,279.26 +1953-12-11,279.89,280.76,278.38,279.91,1440000,279.91 +1953-12-10,281.12,281.53,278.93,279.89,1420000,279.89 +1953-12-09,281.45,282.54,279.78,281.12,1410000,281.12 +1953-12-08,282.00,282.48,279.34,281.45,1390000,281.45 +1953-12-07,282.71,283.50,281.20,282.00,1410000,282.00 +1953-12-04,283.25,284.11,281.55,282.71,1390000,282.71 +1953-12-03,282.81,285.20,282.10,283.25,1740000,283.25 +1953-12-02,281.10,283.74,280.33,282.81,1850000,282.81 +1953-12-01,281.37,282.08,279.46,281.10,1580000,281.10 +1953-11-30,280.23,282.46,279.80,281.37,1960000,281.37 +1953-11-27,277.78,280.78,277.19,280.23,1600000,280.23 +1953-11-25,277.13,278.87,276.40,277.78,1540000,277.78 +1953-11-24,275.42,277.61,274.26,277.13,1470000,277.13 +1953-11-23,276.05,276.58,273.80,275.42,1410000,275.42 +1953-11-20,276.09,277.47,274.79,276.05,1300000,276.05 +1953-11-19,274.51,277.02,274.16,276.09,1420000,276.09 +1953-11-18,273.88,275.52,273.05,274.51,1250000,274.51 +1953-11-17,275.58,275.58,273.01,273.88,1250000,273.88 +1953-11-16,277.53,278.57,275.48,275.93,1490000,275.93 +1953-11-13,276.23,278.08,275.16,277.53,1540000,277.53 +1953-11-12,275.89,277.65,274.63,276.23,1390000,276.23 +1953-11-10,277.86,277.86,275.06,275.89,1340000,275.89 +1953-11-09,278.83,279.93,276.80,278.26,1440000,278.26 +1953-11-06,279.09,280.25,277.57,278.83,1700000,278.83 +1953-11-05,276.82,280.33,276.80,279.09,1720000,279.09 +1953-11-04,276.72,277.72,274.83,276.82,1480000,276.82 +1953-11-02,275.81,278.18,274.83,276.72,1340000,276.72 +1953-10-30,276.31,277.04,274.87,275.81,1400000,275.81 +1953-10-29,274.14,276.94,273.92,276.31,1610000,276.31 +1953-10-28,273.35,274.69,272.13,274.14,1260000,274.14 +1953-10-27,274.33,274.33,271.85,273.35,1170000,273.35 +1953-10-26,275.34,276.56,273.88,274.43,1340000,274.43 +1953-10-23,274.89,276.52,274.12,275.34,1330000,275.34 +1953-10-22,273.74,275.77,272.97,274.89,1330000,274.89 +1953-10-21,273.90,274.61,272.30,273.74,1320000,273.74 +1953-10-20,273.31,275.16,272.36,273.90,1280000,273.90 +1953-10-19,272.80,273.78,271.14,273.31,1190000,273.31 +1953-10-16,271.22,273.94,271.02,272.80,1620000,272.80 +1953-10-15,267.51,271.81,267.41,271.22,1710000,271.22 +1953-10-14,266.09,268.22,265.64,267.51,1290000,267.51 +1953-10-13,267.04,267.69,265.36,266.09,1130000,266.09 +1953-10-09,266.72,267.69,265.52,267.04,900000,267.04 +1953-10-08,266.53,267.97,265.96,266.72,960000,266.72 +1953-10-07,264.26,266.86,263.57,266.53,1010000,266.53 +1953-10-06,265.25,265.25,262.45,264.26,1100000,264.26 +1953-10-05,266.70,267.59,264.52,265.48,930000,265.48 +1953-10-02,265.68,267.59,265.32,266.70,890000,266.70 +1953-10-01,264.04,266.47,263.79,265.68,940000,265.68 +1953-09-30,264.77,265.38,262.94,264.04,940000,264.04 +1953-09-29,264.79,266.61,263.90,264.77,1170000,264.77 +1953-09-28,263.31,265.86,263.16,264.79,1150000,264.79 +1953-09-25,262.45,264.06,261.78,263.31,910000,263.31 +1953-09-24,262.35,263.83,261.36,262.45,1020000,262.45 +1953-09-23,261.40,263.83,261.40,262.35,1240000,262.35 +1953-09-22,258.01,261.89,257.85,261.28,1300000,261.28 +1953-09-21,258.78,260.00,257.36,258.01,1070000,258.01 +1953-09-18,259.84,259.84,257.65,258.78,1190000,258.78 +1953-09-17,259.07,261.30,258.42,259.88,1290000,259.88 +1953-09-16,257.97,260.95,257.97,259.07,1570000,259.07 +1953-09-15,255.49,258.68,254.36,257.67,2850000,257.67 +1953-09-14,259.71,260.20,255.29,255.49,2550000,255.49 +1953-09-11,262.37,262.37,258.94,259.71,1930000,259.71 +1953-09-10,265.38,265.38,262.58,262.88,1010000,262.88 +1953-09-09,265.42,266.23,264.56,265.48,860000,265.48 +1953-09-08,264.34,266.23,264.04,265.42,740000,265.42 +1953-09-04,263.61,265.09,262.70,264.34,770000,264.34 +1953-09-03,263.96,264.65,262.50,263.61,900000,263.61 +1953-09-02,262.54,265.21,262.43,263.96,1110000,263.96 +1953-09-01,261.22,263.23,260.32,262.54,1580000,262.54 +1953-08-31,265.70,265.70,260.83,261.22,2190000,261.22 +1953-08-28,265.68,266.86,264.89,265.74,1060000,265.74 +1953-08-27,266.51,267.45,264.65,265.68,1290000,265.68 +1953-08-26,267.45,269.17,266.27,266.51,1060000,266.51 +1953-08-25,268.70,268.83,265.92,267.45,1470000,267.45 +1953-08-24,271.93,271.99,268.06,268.70,1320000,268.70 +1953-08-21,271.73,272.80,270.81,271.93,850000,271.93 +1953-08-20,271.50,272.66,270.41,271.73,860000,271.73 +1953-08-19,273.01,273.01,270.06,271.50,1400000,271.50 +1953-08-18,275.04,275.91,273.13,273.29,1030000,273.29 +1953-08-17,275.71,276.13,273.92,275.04,910000,275.04 +1953-08-14,276.74,277.33,274.89,275.71,1000000,275.71 +1953-08-13,276.42,278.30,275.75,276.74,1040000,276.74 +1953-08-12,275.30,276.92,273.98,276.42,990000,276.42 +1953-08-11,275.32,276.05,273.72,275.30,940000,275.30 +1953-08-10,275.54,276.48,274.39,275.32,1090000,275.32 +1953-08-07,275.77,276.46,274.20,275.54,950000,275.54 +1953-08-06,275.08,276.54,274.63,275.77,1200000,275.77 +1953-08-05,275.40,275.40,273.19,275.08,1080000,275.08 +1953-08-04,276.13,276.46,274.28,275.68,1000000,275.68 +1953-08-03,275.38,277.19,274.71,276.13,1160000,276.13 +1953-07-31,272.82,275.85,272.58,275.38,1320000,275.38 +1953-07-30,270.49,273.41,270.49,272.82,1200000,272.82 +1953-07-29,269.13,271.16,268.83,270.43,1000000,270.43 +1953-07-28,268.46,269.52,267.30,269.13,1080000,269.13 +1953-07-27,269.76,270.71,267.83,268.46,1210000,268.46 +1953-07-24,269.94,270.92,268.79,269.76,890000,269.76 +1953-07-23,269.39,271.14,268.89,269.94,1000000,269.94 +1953-07-22,268.99,270.23,267.95,269.39,900000,269.39 +1953-07-21,269.74,269.90,268.28,268.99,850000,268.99 +1953-07-20,270.94,270.94,268.85,269.74,830000,269.74 +1953-07-17,269.41,271.59,268.95,270.96,840000,270.96 +1953-07-16,268.75,270.17,268.48,269.41,790000,269.41 +1953-07-15,268.06,270.02,267.73,268.75,840000,268.75 +1953-07-14,268.52,269.19,266.96,268.06,1030000,268.06 +1953-07-13,271.06,271.16,268.08,268.52,1120000,268.52 +1953-07-10,271.32,271.93,270.31,271.06,860000,271.06 +1953-07-09,272.19,272.38,270.98,271.32,910000,271.32 +1953-07-08,272.13,272.82,271.06,272.19,950000,272.19 +1953-07-07,270.88,272.60,270.17,272.13,1030000,272.13 +1953-07-06,270.53,271.71,269.94,270.88,820000,270.88 +1953-07-03,270.23,271.44,269.41,270.53,830000,270.53 +1953-07-02,269.39,271.20,269.15,270.23,1030000,270.23 +1953-07-01,268.26,269.90,267.51,269.39,910000,269.39 +1953-06-30,268.20,269.03,267.06,268.26,820000,268.26 +1953-06-29,269.05,269.70,267.26,268.20,800000,268.20 +1953-06-26,268.93,269.70,268.01,269.05,830000,269.05 +1953-06-25,267.85,270.31,267.85,268.93,1160000,268.93 +1953-06-24,268.48,269.11,266.80,267.79,1030000,267.79 +1953-06-23,267.26,269.15,266.68,268.48,1050000,268.48 +1953-06-22,265.88,268.70,265.88,267.26,1030000,267.26 +1953-06-19,265.86,266.53,264.24,265.80,890000,265.80 +1953-06-18,265.74,267.20,264.93,265.86,1010000,265.86 +1953-06-17,262.88,266.57,262.88,265.74,1150000,265.74 +1953-06-16,263.87,264.10,260.75,262.88,1370000,262.88 +1953-06-15,265.78,266.41,263.12,263.87,1090000,263.87 +1953-06-12,264.99,266.86,264.59,265.78,920000,265.78 +1953-06-11,263.39,266.68,263.39,264.99,1220000,264.99 +1953-06-10,263.39,264.18,260.89,263.35,1960000,263.35 +1953-06-09,267.91,268.14,262.90,263.39,2200000,263.39 +1953-06-08,268.32,269.46,267.28,267.91,1000000,267.91 +1953-06-05,267.63,269.33,266.57,268.32,1160000,268.32 +1953-06-04,269.60,269.98,266.17,267.63,1400000,267.63 +1953-06-03,269.84,271.77,268.99,269.60,1050000,269.60 +1953-06-02,268.40,270.41,267.00,269.84,1450000,269.84 +1953-06-01,272.28,272.64,267.91,268.40,1490000,268.40 +1953-05-29,271.48,273.07,270.88,272.28,920000,272.28 +1953-05-28,273.76,273.76,270.65,271.48,1240000,271.48 +1953-05-27,276.37,276.58,273.53,273.96,1330000,273.96 +1953-05-26,277.43,277.43,275.12,276.37,1160000,276.37 +1953-05-25,278.16,278.73,276.82,277.47,1180000,277.47 +1953-05-22,278.51,279.28,276.72,278.16,1350000,278.16 +1953-05-21,278.04,279.84,277.63,278.51,1590000,278.51 +1953-05-20,275.91,278.53,275.12,278.04,1690000,278.04 +1953-05-19,276.92,277.04,274.81,275.91,1120000,275.91 +1953-05-18,277.90,278.14,275.75,276.92,1080000,276.92 +1953-05-15,277.96,279.18,276.70,277.90,1200000,277.90 +1953-05-14,276.80,278.71,276.25,277.96,1210000,277.96 +1953-05-13,277.09,277.59,275.10,276.80,1120000,276.80 +1953-05-12,278.79,278.91,276.29,277.09,1080000,277.09 +1953-05-11,278.22,279.78,277.59,278.79,1010000,278.79 +1953-05-08,277.43,278.55,275.85,278.22,1220000,278.22 +1953-05-07,278.14,278.65,276.54,277.43,1110000,277.43 +1953-05-06,278.22,279.32,276.94,278.14,1110000,278.14 +1953-05-05,278.34,280.01,277.31,278.22,1290000,278.22 +1953-05-04,275.66,279.46,275.52,278.34,1520000,278.34 +1953-05-01,274.75,276.33,273.59,275.66,1200000,275.66 +1953-04-30,275.38,276.07,273.31,274.75,1140000,274.75 +1953-04-29,273.96,276.37,273.31,275.38,1310000,275.38 +1953-04-28,272.70,274.59,271.32,273.96,1330000,273.96 +1953-04-27,271.30,274.14,271.30,272.70,1400000,272.70 +1953-04-24,270.73,272.30,269.25,271.26,1780000,271.26 +1953-04-23,273.51,273.51,270.15,270.73,1920000,270.73 +1953-04-22,275.48,275.93,272.86,273.55,1390000,273.55 +1953-04-21,275.99,277.88,274.67,275.48,1250000,275.48 +1953-04-20,274.41,276.62,272.80,275.99,1520000,275.99 +1953-04-17,276.74,276.86,273.70,274.41,1430000,274.41 +1953-04-16,277.35,278.51,275.97,276.74,1310000,276.74 +1953-04-15,276.01,278.79,276.01,277.35,1580000,277.35 +1953-04-14,274.73,276.76,273.86,275.85,1480000,275.85 +1953-04-13,275.50,276.46,274.10,274.73,1280000,274.73 +1953-04-10,276.23,276.52,274.28,275.50,1360000,275.50 +1953-04-09,276.84,278.08,274.83,276.23,1520000,276.23 +1953-04-08,275.38,278.85,275.38,276.84,1860000,276.84 +1953-04-07,274.10,276.33,271.99,275.16,2500000,275.16 +1953-04-06,279.42,279.42,272.40,274.10,3050000,274.10 +1953-04-02,280.09,281.81,279.26,280.03,1720000,280.03 +1953-04-01,279.87,281.47,277.53,280.09,2240000,280.09 +1953-03-31,282.73,282.73,277.57,279.87,3120000,279.87 +1953-03-30,286.16,286.16,281.59,283.07,2740000,283.07 +1953-03-27,286.60,288.63,285.97,287.33,1640000,287.33 +1953-03-26,287.98,289.08,285.63,286.60,2000000,286.60 +1953-03-25,288.83,290.78,287.47,287.98,2320000,287.98 +1953-03-24,287.39,289.18,286.72,288.83,1970000,288.83 +1953-03-23,289.69,289.69,286.74,287.39,1750000,287.39 +1953-03-20,289.97,291.01,288.63,289.69,1730000,289.69 +1953-03-19,290.32,291.09,288.49,289.97,1840000,289.97 +1953-03-18,290.64,291.96,289.26,290.32,2110000,290.32 +1953-03-17,289.52,291.78,289.10,290.64,2110000,290.64 +1953-03-16,289.04,290.52,288.08,289.52,1770000,289.52 +1953-03-13,288.00,289.59,286.76,289.04,1760000,289.04 +1953-03-12,288.02,289.14,286.70,288.00,1780000,288.00 +1953-03-11,285.22,288.75,284.94,288.02,1890000,288.02 +1953-03-10,284.90,285.97,283.17,285.22,1530000,285.22 +1953-03-09,284.82,285.99,283.88,284.90,1600000,284.90 +1953-03-06,283.86,285.28,283.01,284.82,1690000,284.82 +1953-03-05,283.70,284.84,282.46,283.86,1540000,283.86 +1953-03-04,284.71,286.09,282.52,283.70,2010000,283.70 +1953-03-03,284.71,286.40,283.84,285.99,1850000,285.99 +1953-03-02,284.27,285.67,283.09,284.71,1760000,284.71 +1953-02-27,284.35,285.40,282.32,284.27,1990000,284.27 +1953-02-26,284.45,285.95,283.27,284.35,2290000,284.35 +1953-02-25,282.99,285.22,281.93,284.45,2360000,284.45 +1953-02-24,282.04,285.04,282.04,282.99,2300000,282.99 +1953-02-20,281.55,283.29,280.74,281.89,1400000,281.89 +1953-02-19,281.14,283.01,280.51,281.55,1390000,281.55 +1953-02-18,281.51,281.96,279.72,281.14,1220000,281.14 +1953-02-17,282.18,282.73,280.23,281.51,1290000,281.51 +1953-02-16,283.11,284.25,281.71,282.18,1330000,282.18 +1953-02-13,281.57,283.86,281.10,283.11,1350000,283.11 +1953-02-11,281.67,283.05,280.53,281.57,1240000,281.57 +1953-02-10,281.96,283.50,280.84,281.67,1350000,281.67 +1953-02-09,282.85,283.31,279.93,281.96,1780000,281.96 +1953-02-06,286.20,286.42,282.14,282.85,1870000,282.85 +1953-02-05,289.04,289.04,285.16,286.20,1900000,286.20 +1953-02-04,290.19,290.84,288.33,289.08,1660000,289.08 +1953-02-03,290.03,290.88,287.90,290.19,1560000,290.19 +1953-02-02,289.77,290.94,288.00,290.03,1890000,290.03 +1953-01-30,287.96,290.46,287.54,289.77,1760000,289.77 +1953-01-29,287.39,289.12,286.44,287.96,1830000,287.96 +1953-01-28,286.81,288.21,285.87,287.39,1640000,287.39 +1953-01-27,286.54,287.96,285.75,286.81,1550000,286.81 +1953-01-26,286.89,287.68,285.12,286.54,1420000,286.54 +1953-01-23,287.84,288.59,285.77,286.89,1340000,286.89 +1953-01-22,287.60,288.87,286.70,287.84,1380000,287.84 +1953-01-21,288.00,288.63,286.56,287.60,1300000,287.60 +1953-01-20,286.97,289.16,286.28,288.00,1490000,288.00 +1953-01-19,287.17,287.98,285.30,286.97,1360000,286.97 +1953-01-16,288.18,288.90,285.12,287.17,1710000,287.17 +1953-01-15,287.37,288.85,286.40,288.18,1450000,288.18 +1953-01-14,286.85,288.47,285.63,287.37,1370000,287.37 +1953-01-13,285.24,288.63,285.10,286.85,1680000,286.85 +1953-01-12,287.52,287.88,284.29,285.24,1500000,285.24 +1953-01-09,290.36,290.46,286.09,287.52,2080000,287.52 +1953-01-08,290.76,292.02,289.48,290.36,1780000,290.36 +1953-01-07,291.96,291.96,288.69,290.76,1760000,290.76 +1953-01-06,293.79,294.25,290.25,292.18,2080000,292.18 +1953-01-05,292.14,295.06,291.51,293.79,2130000,293.79 +1953-01-02,291.90,293.56,290.30,292.14,1450000,292.14 +1952-12-31,292.00,293.50,290.86,291.90,2050000,291.90 +1952-12-30,289.65,292.83,289.46,292.00,2070000,292.00 +1952-12-29,288.23,290.74,287.66,289.65,1820000,289.65 +1952-12-26,287.37,289.10,285.67,288.23,1290000,288.23 +1952-12-24,286.99,288.59,285.69,287.37,1510000,287.37 +1952-12-23,288.02,289.18,286.22,286.99,2100000,286.99 +1952-12-22,286.52,288.85,285.55,288.02,2100000,288.02 +1952-12-19,285.36,287.15,284.55,286.52,2050000,286.52 +1952-12-18,285.67,286.68,284.41,285.36,1860000,285.36 +1952-12-17,286.16,286.95,284.55,285.67,1700000,285.67 +1952-12-16,285.99,287.58,285.00,286.16,1980000,286.16 +1952-12-15,285.20,287.13,284.45,285.99,1940000,285.99 +1952-12-12,284.57,286.18,283.76,285.20,2030000,285.20 +1952-12-11,284.55,285.69,283.48,284.57,1790000,284.57 +1952-12-10,285.12,286.03,282.77,284.55,1880000,284.55 +1952-12-09,283.62,286.32,283.25,285.12,2120000,285.12 +1952-12-08,282.06,284.37,281.45,283.62,1790000,283.62 +1952-12-05,281.63,283.03,280.68,282.06,1510000,282.06 +1952-12-04,282.89,283.82,281.10,281.63,1570000,281.63 +1952-12-03,283.78,284.69,282.00,282.89,1610000,282.89 +1952-12-02,283.70,284.65,281.89,283.78,1610000,283.78 +1952-12-01,283.66,285.20,282.58,283.70,2100000,283.70 +1952-11-28,282.44,284.65,281.59,283.66,2160000,283.66 +1952-11-26,280.90,283.13,279.93,282.44,1920000,282.44 +1952-11-25,281.08,282.32,279.99,280.90,1930000,280.90 +1952-11-24,279.32,281.59,278.67,281.08,2100000,281.08 +1952-11-21,279.50,280.31,278.16,279.32,1760000,279.32 +1952-11-20,280.05,280.80,278.02,279.50,1740000,279.50 +1952-11-19,278.04,281.16,277.78,280.05,2350000,280.05 +1952-11-18,274.45,279.03,274.20,278.04,2250000,278.04 +1952-11-17,273.27,275.16,272.44,274.45,1490000,274.45 +1952-11-14,272.54,274.10,271.22,273.27,1700000,273.27 +1952-11-13,271.97,273.68,271.16,272.54,1330000,272.54 +1952-11-12,273.47,274.28,271.30,271.97,1490000,271.97 +1952-11-10,273.47,274.39,272.11,273.47,1360000,273.47 +1952-11-07,272.58,274.77,271.89,273.47,1540000,273.47 +1952-11-06,271.30,273.82,268.89,272.58,1390000,272.58 +1952-11-05,270.65,274.77,270.65,271.30,2030000,271.30 +1952-11-03,269.23,271.53,268.79,270.23,1670000,270.23 +1952-10-31,265.78,269.96,265.78,269.23,1760000,269.23 +1952-10-30,265.46,266.57,264.54,265.72,1090000,265.72 +1952-10-29,265.72,266.72,264.65,265.46,1020000,265.46 +1952-10-28,265.90,266.80,264.87,265.72,1080000,265.72 +1952-10-27,265.46,266.65,264.73,265.90,1000000,265.90 +1952-10-24,263.87,266.31,263.39,265.46,1060000,265.46 +1952-10-23,263.06,264.93,262.01,263.87,1260000,263.87 +1952-10-22,265.64,265.64,262.60,263.06,1160000,263.06 +1952-10-21,266.63,267.18,265.09,265.84,990000,265.84 +1952-10-20,267.30,268.06,265.37,266.63,1050000,266.63 +1952-10-17,265.21,268.36,265.21,267.30,1360000,267.30 +1952-10-16,267.12,267.45,263.33,264.87,1730000,264.87 +1952-10-15,270.43,270.59,266.09,267.12,1730000,267.12 +1952-10-14,270.61,271.59,269.48,270.43,1130000,270.43 +1952-10-10,270.98,271.81,269.94,270.61,1070000,270.61 +1952-10-09,271.40,272.36,270.15,270.98,1090000,270.98 +1952-10-08,269.88,271.91,269.52,271.40,1260000,271.40 +1952-10-07,270.00,271.04,268.97,269.88,950000,269.88 +1952-10-06,270.55,271.20,269.29,270.00,1070000,270.00 +1952-10-03,270.75,271.85,269.52,270.55,980000,270.55 +1952-10-02,270.17,271.55,269.72,270.75,1040000,270.75 +1952-10-01,270.61,271.08,269.21,270.17,1060000,270.17 +1952-09-30,271.73,272.21,269.98,270.61,1120000,270.61 +1952-09-29,271.95,272.76,270.51,271.73,970000,271.73 +1952-09-26,272.42,273.33,271.14,271.95,1180000,271.95 +1952-09-25,272.26,273.74,271.44,272.42,1210000,272.42 +1952-09-24,271.65,273.19,271.06,272.26,1390000,272.26 +1952-09-23,270.77,272.24,269.48,271.65,1240000,271.65 +1952-09-22,270.55,272.09,269.56,270.77,1160000,270.77 +1952-09-19,269.72,271.26,268.62,270.55,1150000,270.55 +1952-09-18,270.43,271.12,268.81,269.72,1030000,269.72 +1952-09-17,269.03,271.18,268.89,270.43,1000000,270.43 +1952-09-16,268.38,269.74,267.08,269.03,1140000,269.03 +1952-09-15,271.02,271.14,267.91,268.38,1100000,268.38 +1952-09-12,272.11,272.46,269.66,271.02,1040000,271.02 +1952-09-11,271.65,273.25,270.90,272.11,970000,272.11 +1952-09-10,273.01,273.01,269.56,271.65,1590000,271.65 +1952-09-09,275.87,276.29,273.13,273.53,1310000,273.53 +1952-09-08,276.50,277.55,275.38,275.87,1170000,275.87 +1952-09-05,276.76,277.43,275.18,276.50,1040000,276.50 +1952-09-04,277.15,278.10,276.03,276.76,1120000,276.76 +1952-09-03,276.40,278.16,275.95,277.15,1200000,277.15 +1952-09-02,275.10,277.25,275.10,276.40,970000,276.40 +1952-08-29,274.41,275.93,274.12,275.04,890000,275.04 +1952-08-28,273.84,275.28,273.35,274.41,980000,274.41 +1952-08-27,273.17,274.33,272.72,273.84,930000,273.84 +1952-08-26,273.57,274.37,272.28,273.17,890000,273.17 +1952-08-25,274.43,274.61,272.86,273.57,840000,273.57 +1952-08-22,274.45,275.24,273.74,274.43,910000,274.43 +1952-08-21,274.35,275.24,273.43,274.45,800000,274.45 +1952-08-20,274.14,275.62,273.41,274.35,960000,274.35 +1952-08-19,274.31,275.06,272.95,274.14,980000,274.14 +1952-08-18,277.19,277.19,273.90,274.31,1090000,274.31 +1952-08-15,277.75,278.61,276.54,277.37,890000,277.37 +1952-08-14,277.88,278.75,277.04,277.75,930000,277.75 +1952-08-13,278.14,278.81,276.62,277.88,990000,277.88 +1952-08-12,280.03,280.03,277.39,278.14,1110000,278.14 +1952-08-11,279.84,281.47,279.15,280.29,1160000,280.29 +1952-08-08,279.38,280.92,278.49,279.84,1170000,279.84 +1952-08-07,279.07,280.09,278.34,279.38,1180000,279.38 +1952-08-06,279.50,280.21,277.88,279.07,1140000,279.07 +1952-08-05,279.87,280.03,277.96,279.50,1050000,279.50 +1952-08-04,279.80,280.51,278.59,279.87,950000,279.87 +1952-08-01,279.56,280.49,278.81,279.80,1050000,279.80 +1952-07-31,279.24,280.25,278.34,279.56,1230000,279.56 +1952-07-30,278.57,280.07,277.78,279.24,1240000,279.24 +1952-07-29,277.94,279.40,277.17,278.57,1010000,278.57 +1952-07-28,277.71,278.95,276.92,277.94,1030000,277.94 +1952-07-25,279.26,279.76,277.02,277.71,1130000,277.71 +1952-07-24,277.63,280.05,277.63,279.26,1270000,279.26 +1952-07-23,275.95,278.28,275.64,277.63,1020000,277.63 +1952-07-22,274.91,276.54,274.14,275.95,910000,275.95 +1952-07-21,273.90,275.54,273.17,274.91,780000,274.91 +1952-07-18,275.62,275.85,273.11,273.90,1020000,273.90 +1952-07-17,276.76,277.17,274.95,275.62,1010000,275.62 +1952-07-16,276.76,278.02,275.83,276.76,1120000,276.76 +1952-07-15,275.08,277.35,274.81,276.76,1220000,276.76 +1952-07-14,274.22,276.07,274.06,275.08,1090000,275.08 +1952-07-11,272.58,274.89,272.28,274.22,1040000,274.22 +1952-07-10,273.25,273.80,271.73,272.58,1010000,272.58 +1952-07-09,274.43,275.62,272.93,273.25,1120000,273.25 +1952-07-08,274.20,275.10,273.51,274.43,850000,274.43 +1952-07-07,274.95,275.58,273.27,274.20,1080000,274.20 +1952-07-03,274.87,275.64,273.59,274.95,1150000,274.95 +1952-07-02,275.46,276.09,273.86,274.87,1320000,274.87 +1952-07-01,274.26,276.25,273.94,275.46,1450000,275.46 +1952-06-30,272.44,274.97,272.30,274.26,1380000,274.26 +1952-06-27,271.24,272.95,270.77,272.44,1210000,272.44 +1952-06-26,270.45,271.85,269.88,271.24,1190000,271.24 +1952-06-25,269.92,270.98,268.75,270.45,1230000,270.45 +1952-06-24,269.50,270.47,268.81,269.92,1200000,269.92 +1952-06-23,270.19,271.28,268.64,269.50,1200000,269.50 +1952-06-20,269.54,270.84,268.89,270.19,1190000,270.19 +1952-06-19,269.09,270.59,268.40,269.54,1320000,269.54 +1952-06-18,268.03,269.48,267.63,269.09,1270000,269.09 +1952-06-17,267.83,268.68,266.80,268.03,920000,268.03 +1952-06-16,268.56,269.15,267.28,267.83,980000,267.83 +1952-06-13,267.91,269.17,267.28,268.56,1130000,268.56 +1952-06-12,267.93,269.03,266.90,267.91,1370000,267.91 +1952-06-11,267.67,268.52,266.33,267.93,1190000,267.93 +1952-06-10,269.15,269.15,266.76,267.67,1220000,267.67 +1952-06-09,268.03,269.92,267.67,269.15,1270000,269.15 +1952-06-06,266.29,268.95,266.21,268.03,1520000,268.03 +1952-06-05,263.77,266.80,263.77,266.29,1410000,266.29 +1952-06-04,262.09,264.20,261.91,263.67,1200000,263.67 +1952-06-03,262.31,262.82,260.83,262.09,940000,262.09 +1952-06-02,262.94,264.61,261.48,262.31,1190000,262.31 +1952-05-29,262.78,263.51,261.62,262.94,1100000,262.94 +1952-05-28,263.92,264.54,262.25,262.78,1130000,262.78 +1952-05-27,264.22,265.17,262.82,263.92,1040000,263.92 +1952-05-26,263.23,264.87,262.62,264.22,940000,264.22 +1952-05-23,263.33,264.59,262.54,263.27,1150000,263.27 +1952-05-22,261.78,264.02,261.54,263.33,1360000,263.33 +1952-05-21,261.26,262.78,260.89,261.78,1210000,261.78 +1952-05-20,260.06,262.66,259.51,261.26,1150000,261.26 +1952-05-19,259.88,261.12,259.15,260.06,780000,260.06 +1952-05-16,260.10,260.93,259.00,259.82,910000,259.82 +1952-05-15,260.99,261.07,258.66,260.10,1050000,260.10 +1952-05-14,261.99,262.62,260.26,260.99,950000,260.99 +1952-05-13,261.72,263.04,260.87,261.99,890000,261.99 +1952-05-12,262.50,262.86,260.83,261.72,800000,261.72 +1952-05-09,262.39,263.47,260.99,262.74,960000,262.74 +1952-05-08,261.99,263.77,261.58,262.39,1230000,262.39 +1952-05-07,261.01,262.70,259.96,261.99,1120000,261.99 +1952-05-06,261.54,262.29,260.02,261.01,1120000,261.01 +1952-05-05,260.55,261.95,259.35,261.54,860000,261.54 +1952-05-02,257.67,260.93,257.67,260.00,1300000,260.00 +1952-05-01,257.44,257.44,254.70,256.35,1400000,256.35 +1952-04-30,259.34,259.39,257.06,257.63,1000000,257.63 +1952-04-29,259.95,260.52,258.19,259.34,1170000,259.34 +1952-04-28,260.27,260.96,258.65,259.95,980000,259.95 +1952-04-25,258.86,260.08,257.88,259.80,1240000,259.80 +1952-04-24,259.97,260.26,257.04,258.86,1580000,258.86 +1952-04-23,261.10,261.56,259.41,259.97,1090000,259.97 +1952-04-22,261.63,263.03,260.64,261.10,1240000,261.10 +1952-04-21,260.14,262.50,259.60,261.63,1110000,261.63 +1952-04-18,259.85,261.88,258.84,260.52,1240000,260.52 +1952-04-17,261.48,261.60,258.40,259.85,1620000,259.85 +1952-04-16,261.29,263.05,260.03,261.48,1400000,261.48 +1952-04-15,264.10,264.29,260.33,261.29,1720000,261.29 +1952-04-14,266.29,267.11,263.24,264.10,1790000,264.10 +1952-04-10,265.04,266.96,264.31,265.75,1130000,265.75 +1952-04-09,265.29,266.09,263.89,265.04,980000,265.04 +1952-04-08,263.38,265.88,262.57,265.29,1090000,265.29 +1952-04-07,265.31,265.31,262.44,263.38,1230000,263.38 +1952-04-04,266.80,266.86,264.45,265.62,1190000,265.62 +1952-04-03,267.03,267.87,265.81,266.80,1280000,266.80 +1952-04-02,267.22,268.08,265.79,267.03,1260000,267.03 +1952-04-01,269.46,269.81,266.42,267.22,1720000,267.22 +1952-03-31,269.00,270.40,267.17,269.46,1680000,269.46 +1952-03-28,265.21,267.76,265.06,266.96,1560000,266.96 +1952-03-27,263.87,265.88,263.20,265.21,1370000,265.21 +1952-03-26,264.28,265.06,262.82,263.87,1030000,263.87 +1952-03-25,265.52,265.52,263.72,264.28,1060000,264.28 +1952-03-24,265.69,266.48,264.58,265.60,1040000,265.60 +1952-03-21,265.33,267.05,264.93,265.62,1290000,265.62 +1952-03-20,264.37,266.23,263.70,265.33,1240000,265.33 +1952-03-19,264.10,265.16,262.80,264.37,1090000,264.37 +1952-03-18,264.08,265.08,262.59,264.10,1170000,264.10 +1952-03-17,264.43,265.48,263.26,264.08,1150000,264.08 +1952-03-14,264.24,265.46,262.50,264.05,1350000,264.05 +1952-03-13,263.78,265.62,262.65,264.24,1270000,264.24 +1952-03-12,262.76,264.56,261.75,263.78,1310000,263.78 +1952-03-11,262.76,263.80,261.25,262.76,1210000,262.76 +1952-03-10,264.14,264.64,262.32,262.76,1170000,262.76 +1952-03-07,264.03,264.89,262.53,263.87,1410000,263.87 +1952-03-06,264.66,265.04,262.72,264.03,1210000,264.03 +1952-03-05,263.95,266.17,263.61,264.66,1380000,264.66 +1952-03-04,260.35,264.24,260.35,263.95,1570000,263.95 +1952-03-03,260.27,261.17,258.95,260.08,1020000,260.08 +1952-02-29,260.49,261.46,259.36,260.08,1000000,260.08 +1952-02-28,259.68,261.79,259.28,260.49,1150000,260.49 +1952-02-27,259.30,260.49,257.44,259.68,1260000,259.68 +1952-02-26,260.58,260.98,258.69,259.30,1080000,259.30 +1952-02-25,261.40,262.86,259.89,260.58,1200000,260.58 +1952-02-21,258.49,261.63,258.49,259.60,1360000,259.60 +1952-02-20,261.37,261.46,257.46,258.49,1970000,258.49 +1952-02-19,265.14,265.14,260.93,261.37,1630000,261.37 +1952-02-18,266.30,266.94,264.35,265.35,1140000,265.35 +1952-02-15,265.88,267.57,265.29,266.27,1200000,266.27 +1952-02-14,266.21,266.67,264.54,265.88,1340000,265.88 +1952-02-13,268.37,268.37,265.52,266.21,1300000,266.21 +1952-02-11,269.83,269.88,267.57,268.45,1140000,268.45 +1952-02-08,268.35,270.48,267.61,269.85,1350000,269.85 +1952-02-07,268.77,269.50,267.05,268.35,1170000,268.35 +1952-02-06,269.04,270.27,267.38,268.77,1310000,268.77 +1952-02-05,269.79,270.17,266.80,269.04,1590000,269.04 +1952-02-04,272.51,272.64,268.79,269.79,1640000,269.79 +1952-02-01,270.69,272.91,269.94,271.68,1350000,271.68 +1952-01-31,270.71,272.18,268.05,270.69,1810000,270.69 +1952-01-30,274.00,275.38,270.53,270.71,1880000,270.71 +1952-01-29,274.17,275.44,272.91,274.00,1730000,274.00 +1952-01-28,273.69,275.13,273.00,274.17,1590000,274.17 +1952-01-25,273.90,275.07,272.43,273.41,1650000,273.41 +1952-01-24,274.27,275.19,272.68,273.90,1570000,273.90 +1952-01-23,275.40,275.95,273.44,274.27,1680000,274.27 +1952-01-22,274.10,276.26,273.58,275.40,1920000,275.40 +1952-01-21,272.93,274.55,272.32,274.10,1730000,274.10 +1952-01-18,271.91,272.69,271.03,272.10,1740000,272.10 +1952-01-17,271.13,273.00,270.53,271.91,1590000,271.91 +1952-01-16,270.46,272.28,269.27,271.13,1430000,271.13 +1952-01-15,271.59,272.09,269.44,270.46,1340000,270.46 +1952-01-14,270.73,272.70,270.36,271.59,1510000,271.59 +1952-01-11,269.46,271.20,268.74,270.31,1760000,270.31 +1952-01-10,268.14,271.09,268.14,269.46,1520000,269.46 +1952-01-09,268.66,270.04,266.34,268.08,1370000,268.08 +1952-01-08,270.34,270.98,268.14,268.66,1390000,268.66 +1952-01-07,271.26,272.60,269.94,270.34,1540000,270.34 +1952-01-04,270.38,271.95,269.73,271.03,1480000,271.03 +1952-01-03,269.86,271.28,268.58,270.38,1220000,270.38 +1952-01-02,269.23,271.01,268.24,269.86,1070000,269.86 +1951-12-31,268.52,270.00,267.84,269.23,1440000,269.23 +1951-12-28,266.74,269.02,266.30,268.18,1470000,268.18 +1951-12-27,264.06,267.26,263.85,266.74,1460000,266.74 +1951-12-26,265.79,266.67,263.26,264.06,1520000,264.06 +1951-12-24,265.94,266.69,264.91,265.79,680000,265.79 +1951-12-21,267.45,267.78,265.37,266.34,1250000,266.34 +1951-12-20,267.61,268.91,266.42,267.45,1340000,267.45 +1951-12-19,266.61,268.93,265.92,267.61,1510000,267.61 +1951-12-18,265.79,267.45,265.14,266.61,1290000,266.61 +1951-12-17,265.48,266.71,264.50,265.79,1220000,265.79 +1951-12-14,265.81,267.07,264.60,265.71,1360000,265.71 +1951-12-13,266.09,266.92,264.56,265.81,1380000,265.81 +1951-12-12,265.77,267.24,264.33,266.09,1280000,266.09 +1951-12-11,267.38,267.68,265.14,265.77,1360000,265.77 +1951-12-10,266.90,268.45,266.07,267.38,1340000,267.38 +1951-12-07,266.23,268.95,265.96,266.99,1990000,266.99 +1951-12-06,263.85,266.90,263.85,266.23,1840000,266.23 +1951-12-05,264.29,265.21,262.71,263.72,1330000,263.72 +1951-12-04,263.24,265.19,262.48,264.29,1280000,264.29 +1951-12-03,262.29,264.77,261.73,263.24,1220000,263.24 +1951-11-30,258.96,261.92,258.68,261.27,1530000,261.27 +1951-11-29,258.64,259.93,257.29,258.96,1070000,258.96 +1951-11-28,259.46,260.43,258.12,258.64,1150000,258.64 +1951-11-27,257.47,260.36,257.47,259.46,1310000,259.46 +1951-11-26,255.95,258.38,255.20,257.44,1180000,257.44 +1951-11-23,258.72,258.89,255.93,256.95,1210000,256.95 +1951-11-21,259.30,260.15,258.16,258.72,1090000,258.72 +1951-11-20,259.70,260.04,257.57,259.30,1130000,259.30 +1951-11-19,260.82,261.36,258.77,259.70,1030000,259.70 +1951-11-16,260.91,261.06,259.00,260.39,1140000,260.39 +1951-11-15,261.27,262.29,260.32,260.91,1200000,260.91 +1951-11-14,260.41,262.01,259.85,261.27,1220000,261.27 +1951-11-13,261.29,262.18,259.39,260.41,1160000,260.41 +1951-11-09,257.81,261.21,257.81,259.91,1470000,259.91 +1951-11-08,257.14,258.35,254.91,257.14,1410000,257.14 +1951-11-07,259.76,260.37,256.58,257.14,1490000,257.14 +1951-11-05,259.57,262.10,258.59,259.76,1130000,259.76 +1951-11-02,264.06,264.37,261.01,261.94,1230000,261.94 +1951-11-01,262.35,265.82,261.86,264.06,1430000,264.06 +1951-10-31,260.52,263.15,258.44,262.35,1490000,262.35 +1951-10-30,260.43,263.46,259.69,260.52,1530000,260.52 +1951-10-29,258.53,261.12,256.39,260.43,1780000,260.43 +1951-10-26,264.17,264.26,260.08,262.27,1710000,262.27 +1951-10-25,264.95,266.20,262.66,264.17,1360000,264.17 +1951-10-24,263.50,266.79,263.22,264.95,1670000,264.95 +1951-10-23,262.29,264.80,259.76,263.50,2110000,263.50 +1951-10-22,265.90,265.90,259.46,262.29,2690000,262.29 +1951-10-19,273.51,274.10,269.23,269.68,1990000,269.68 +1951-10-18,273.53,274.75,272.22,273.51,1450000,273.51 +1951-10-17,274.40,275.24,272.86,273.53,1460000,273.53 +1951-10-16,275.74,276.02,272.50,274.40,1730000,274.40 +1951-10-15,275.13,276.93,274.25,275.74,1720000,275.74 +1951-10-11,272.76,274.68,271.80,274.10,1760000,274.10 +1951-10-10,273.38,274.47,271.46,272.76,1320000,272.76 +1951-10-09,275.14,275.26,272.65,273.38,1750000,273.38 +1951-10-08,275.53,276.59,274.23,275.14,1860000,275.14 +1951-10-05,275.35,277.02,274.21,275.63,2080000,275.63 +1951-10-04,275.87,276.93,274.49,275.35,1810000,275.35 +1951-10-03,274.34,277.30,274.29,275.87,2780000,275.87 +1951-10-02,272.56,275.42,272.13,274.34,1870000,274.34 +1951-10-01,271.16,273.25,270.23,272.56,1330000,272.56 +1951-09-28,271.31,272.24,269.66,271.16,1390000,271.16 +1951-09-27,272.24,272.93,269.77,271.31,1540000,271.31 +1951-09-26,272.24,273.67,270.88,272.24,1520000,272.24 +1951-09-25,270.77,273.51,270.05,272.24,1740000,272.24 +1951-09-24,271.83,271.83,269.08,270.77,1630000,270.77 +1951-09-21,274.10,274.10,270.21,272.11,2180000,272.11 +1951-09-20,274.27,276.02,272.58,274.10,2100000,274.10 +1951-09-19,274.38,276.09,273.08,274.27,2070000,274.27 +1951-09-18,275.09,275.63,271.91,274.38,2030000,274.38 +1951-09-17,276.06,277.12,274.12,275.09,1800000,275.09 +1951-09-14,276.37,277.51,274.01,276.06,2170000,276.06 +1951-09-13,275.31,277.15,274.34,276.37,2350000,276.37 +1951-09-12,273.88,276.56,273.32,275.31,2180000,275.31 +1951-09-11,275.25,276.24,272.63,273.88,2040000,273.88 +1951-09-10,273.89,276.63,273.62,275.25,2190000,275.25 +1951-09-07,272.28,274.54,271.53,273.89,1970000,273.89 +1951-09-06,272.48,273.98,271.23,272.28,2150000,272.28 +1951-09-05,270.63,273.11,270.25,272.48,1850000,272.48 +1951-09-04,270.25,272.28,269.49,270.63,1520000,270.63 +1951-08-31,269.94,271.64,268.58,270.25,1530000,270.25 +1951-08-30,268.18,270.68,267.98,269.94,1950000,269.94 +1951-08-29,265.56,268.62,265.39,268.18,1520000,268.18 +1951-08-28,265.59,266.81,264.42,265.56,1280000,265.56 +1951-08-27,266.30,267.06,264.54,265.59,1080000,265.59 +1951-08-24,265.65,267.53,264.94,266.30,1210000,266.30 +1951-08-23,264.07,266.26,262.89,265.65,1230000,265.65 +1951-08-22,265.30,265.56,262.80,264.07,1130000,264.07 +1951-08-21,266.19,267.66,264.47,265.30,1400000,265.30 +1951-08-20,266.17,267.42,264.98,266.19,1130000,266.19 +1951-08-17,265.48,267.44,264.54,266.17,1620000,266.17 +1951-08-16,264.27,266.63,263.78,265.48,1750000,265.48 +1951-08-15,262.88,264.72,262.04,264.27,1340000,264.27 +1951-08-14,263.06,263.98,261.57,262.88,1180000,262.88 +1951-08-13,261.92,264.76,261.26,263.06,1320000,263.06 +1951-08-10,262.69,263.26,260.67,261.92,1260000,261.92 +1951-08-09,263.73,264.43,261.77,262.69,1500000,262.69 +1951-08-08,264.94,265.52,262.24,263.73,1410000,263.73 +1951-08-07,265.21,266.52,263.85,264.94,1810000,264.94 +1951-08-06,262.98,265.72,261.88,265.21,1600000,265.21 +1951-08-03,262.89,264.78,261.25,262.98,1570000,262.98 +1951-08-02,260.05,264.05,260.05,262.89,2130000,262.89 +1951-08-01,257.86,260.72,256.81,259.89,1680000,259.89 +1951-07-31,260.30,260.30,256.64,257.86,1550000,257.86 +1951-07-30,259.23,262.21,258.89,260.70,1600000,260.70 +1951-07-27,259.09,259.87,256.92,259.23,1450000,259.23 +1951-07-26,258.11,259.94,256.46,259.09,1480000,259.09 +1951-07-25,258.94,260.79,257.33,258.11,1870000,258.11 +1951-07-24,255.68,259.40,255.36,258.94,1740000,258.94 +1951-07-23,253.73,256.35,253.44,255.68,1320000,255.68 +1951-07-20,253.75,255.48,252.78,253.73,1390000,253.73 +1951-07-19,253.67,254.56,252.24,253.75,1120000,253.75 +1951-07-18,253.89,255.18,252.84,253.67,1370000,253.67 +1951-07-17,252.31,254.18,251.05,253.89,1280000,253.89 +1951-07-16,254.32,254.98,251.72,252.31,1200000,252.31 +1951-07-13,252.59,255.36,252.39,254.32,1320000,254.32 +1951-07-12,250.97,253.11,250.70,252.59,1050000,252.59 +1951-07-11,250.00,251.75,249.31,250.97,970000,250.97 +1951-07-10,250.65,251.41,249.09,250.00,990000,250.00 +1951-07-09,250.01,252.10,249.20,250.65,1110000,250.65 +1951-07-06,250.27,251.30,248.78,250.01,1170000,250.01 +1951-07-05,247.01,250.90,247.01,250.27,1410000,250.27 +1951-07-03,244.07,246.77,244.07,245.92,1250000,245.92 +1951-07-02,242.64,244.92,241.06,243.98,1350000,243.98 +1951-06-29,244.00,244.36,240.72,242.64,1730000,242.64 +1951-06-28,246.84,247.22,242.57,244.00,1940000,244.00 +1951-06-27,246.28,247.98,244.90,246.84,1360000,246.84 +1951-06-26,245.30,247.44,244.29,246.28,1260000,246.28 +1951-06-25,245.99,245.99,241.84,245.30,2440000,245.30 +1951-06-22,250.21,250.21,246.66,247.86,1340000,247.86 +1951-06-21,251.57,251.57,249.20,250.43,1100000,250.43 +1951-06-20,253.53,254.47,251.41,251.86,1120000,251.86 +1951-06-19,253.80,254.54,251.70,253.53,1100000,253.53 +1951-06-18,254.03,255.23,252.55,253.80,1050000,253.80 +1951-06-15,252.46,255.05,252.26,254.03,1370000,254.03 +1951-06-14,250.21,253.11,250.21,252.46,1300000,252.46 +1951-06-13,250.57,251.35,248.73,250.03,1060000,250.03 +1951-06-12,251.56,252.64,249.75,250.57,1200000,250.57 +1951-06-11,250.39,252.77,249.76,251.56,1220000,251.56 +1951-06-08,250.81,251.27,249.19,250.39,1000000,250.39 +1951-06-07,249.64,251.73,249.24,250.81,1340000,250.81 +1951-06-06,247.66,250.73,247.66,249.64,1200000,249.64 +1951-06-05,246.79,248.15,244.91,247.59,1180000,247.59 +1951-06-04,249.14,249.14,246.11,246.79,1100000,246.79 +1951-06-01,249.65,250.15,247.85,249.33,9810000,249.33 +1951-05-31,248.44,251.68,248.32,249.65,1220000,249.65 +1951-05-29,247.03,249.52,246.43,248.44,1190000,248.44 +1951-05-28,245.83,248.20,245.60,247.03,1240000,247.03 +1951-05-25,245.78,247.57,244.84,245.27,1210000,245.27 +1951-05-24,246.94,246.94,241.89,245.78,2580000,245.78 +1951-05-23,249.30,249.79,246.58,247.03,1540000,247.03 +1951-05-22,249.98,251.72,248.49,249.30,1440000,249.30 +1951-05-21,250.63,251.36,248.03,249.98,1580000,249.98 +1951-05-18,254.57,255.03,250.01,250.10,1660000,250.10 +1951-05-17,252.40,255.49,252.40,254.57,1370000,254.57 +1951-05-16,252.08,254.19,250.81,252.14,1660000,252.14 +1951-05-15,256.08,256.24,251.02,252.08,2020000,252.08 +1951-05-14,257.26,258.10,255.45,256.08,1250000,256.08 +1951-05-11,260.07,260.93,257.91,258.56,1640000,258.56 +1951-05-10,261.49,261.83,259.14,260.07,1660000,260.07 +1951-05-09,261.10,262.82,260.24,261.49,1960000,261.49 +1951-05-08,261.23,262.05,259.31,261.10,1600000,261.10 +1951-05-07,261.76,262.48,259.60,261.23,1580000,261.23 +1951-05-04,263.13,264.44,261.74,262.77,2050000,262.77 +1951-05-03,261.27,263.69,260.31,263.13,2060000,263.13 +1951-05-02,260.71,262.41,259.70,261.27,1900000,261.27 +1951-05-01,259.13,261.80,258.23,260.71,1760000,260.71 +1951-04-30,259.08,260.83,257.99,259.13,1790000,259.13 +1951-04-27,257.33,259.95,257.33,258.96,2120000,258.96 +1951-04-26,254.92,257.98,254.92,257.13,1800000,257.13 +1951-04-25,254.19,255.38,252.53,254.75,1520000,254.75 +1951-04-24,255.12,255.67,253.48,254.19,1420000,254.19 +1951-04-23,255.02,255.92,253.94,255.12,1160000,255.12 +1951-04-20,254.92,255.51,253.44,254.82,940000,254.82 +1951-04-19,256.01,256.53,253.99,254.92,1520000,254.92 +1951-04-18,255.34,257.30,254.53,256.01,1780000,256.01 +1951-04-17,254.85,256.06,253.88,255.34,1470000,255.34 +1951-04-16,256.18,257.03,254.05,254.85,1730000,254.85 +1951-04-13,251.76,255.31,251.76,254.75,2120000,254.75 +1951-04-12,249.76,252.10,249.37,251.66,1530000,251.66 +1951-04-11,250.42,250.57,247.70,249.76,1420000,249.76 +1951-04-10,250.57,251.88,249.52,250.42,1280000,250.42 +1951-04-09,250.28,251.46,249.62,250.57,1110000,250.57 +1951-04-06,250.32,252.22,250.06,250.83,1450000,250.83 +1951-04-05,247.75,250.91,247.75,250.32,1790000,250.32 +1951-04-04,246.02,247.80,244.98,247.31,1300000,247.31 +1951-04-03,246.63,247.69,245.46,246.02,1220000,246.02 +1951-04-02,247.82,247.82,245.02,246.63,1280000,246.63 +1951-03-30,246.95,249.25,246.95,248.53,1150000,248.53 +1951-03-29,246.19,248.28,245.95,246.90,1300000,246.90 +1951-03-28,248.74,249.15,245.34,246.19,1770000,246.19 +1951-03-27,249.13,250.81,248.18,248.74,1250000,248.74 +1951-03-26,248.14,249.79,247.04,249.13,1230000,249.13 +1951-03-22,249.37,251.57,249.04,250.52,1290000,250.52 +1951-03-21,247.87,250.39,247.45,249.37,1310000,249.37 +1951-03-20,248.08,248.64,246.53,247.87,1020000,247.87 +1951-03-19,249.03,249.45,246.45,248.08,1120000,248.08 +1951-03-16,245.88,249.33,245.88,248.62,1660000,248.62 +1951-03-15,243.95,245.80,242.06,244.85,2070000,244.85 +1951-03-14,245.88,246.56,243.13,243.95,2110000,243.95 +1951-03-13,249.35,249.35,244.61,245.88,2330000,245.88 +1951-03-12,252.00,252.00,248.70,249.89,1640000,249.89 +1951-03-09,252.81,254.27,251.98,252.75,1610000,252.75 +1951-03-08,252.45,253.68,251.55,252.81,1440000,252.81 +1951-03-07,251.55,253.41,250.71,252.45,1770000,252.45 +1951-03-06,251.82,252.37,250.43,251.55,1490000,251.55 +1951-03-05,253.43,253.43,250.23,251.82,1690000,251.82 +1951-03-02,252.80,254.42,252.22,253.61,1570000,253.61 +1951-03-01,252.05,253.73,250.96,252.80,1610000,252.80 +1951-02-28,251.34,253.14,249.70,252.05,1640000,252.05 +1951-02-27,253.18,253.73,250.81,251.34,1680000,251.34 +1951-02-26,252.93,254.47,251.57,253.18,1650000,253.18 +1951-02-23,252.28,253.59,251.21,252.18,1540000,252.18 +1951-02-21,251.12,253.53,250.77,252.28,1670000,252.28 +1951-02-20,251.67,252.15,248.78,251.12,2010000,251.12 +1951-02-19,254.70,255.08,251.29,251.67,1910000,251.67 +1951-02-16,253.61,255.58,253.10,254.90,1860000,254.90 +1951-02-15,255.10,255.30,253.13,253.61,1700000,253.61 +1951-02-14,255.71,256.34,253.34,255.10,2050000,255.10 +1951-02-13,254.80,257.06,254.34,255.71,2400000,255.71 +1951-02-09,253.34,255.58,253.08,254.24,2550000,254.24 +1951-02-08,252.70,254.27,250.92,253.34,2120000,253.34 +1951-02-07,254.47,254.47,251.69,252.70,2020000,252.70 +1951-02-06,255.17,255.30,252.25,254.62,2370000,254.62 +1951-02-05,253.92,256.06,252.91,255.17,2680000,255.17 +1951-02-02,250.76,253.71,250.66,252.78,3030000,252.78 +1951-02-01,248.83,251.17,247.04,250.76,2380000,250.76 +1951-01-31,249.58,250.56,247.43,248.83,2340000,248.83 +1951-01-30,248.64,250.46,247.49,249.58,2480000,249.58 +1951-01-29,247.36,249.48,246.50,248.64,2630000,248.64 +1951-01-26,242.22,245.42,241.86,244.51,2230000,244.51 +1951-01-25,244.08,244.08,240.11,242.22,2520000,242.22 +1951-01-24,245.30,246.28,243.45,244.36,1990000,244.36 +1951-01-23,244.33,245.87,242.40,245.30,2080000,245.30 +1951-01-22,246.91,247.48,242.70,244.33,2570000,244.33 +1951-01-19,247.39,248.62,245.45,246.76,3170000,246.76 +1951-01-18,248.01,249.07,245.60,247.39,3490000,247.39 +1951-01-17,246.65,248.95,243.76,248.01,3880000,248.01 +1951-01-16,245.02,247.64,244.76,246.65,3740000,246.65 +1951-01-15,243.61,245.75,241.47,245.02,2830000,245.02 +1951-01-12,244.72,245.87,242.77,243.81,2950000,243.81 +1951-01-11,240.40,245.20,240.35,244.72,3490000,244.72 +1951-01-10,243.50,244.61,239.12,240.40,3270000,240.40 +1951-01-09,242.29,245.10,242.02,243.50,3800000,243.50 +1951-01-08,240.68,243.05,239.62,242.29,2780000,242.29 +1951-01-05,240.86,242.60,240.15,240.96,3390000,240.96 +1951-01-04,238.99,241.71,237.64,240.86,3390000,240.86 +1951-01-03,239.92,241.29,237.43,238.99,3370000,238.99 +1951-01-02,235.41,240.46,234.93,239.92,3030000,239.92 +1950-12-29,235.34,236.52,233.63,235.42,3440000,235.42 +1950-12-28,234.21,236.25,233.02,235.34,3560000,235.34 +1950-12-27,230.30,234.64,230.30,234.21,2940000,234.21 +1950-12-26,231.54,232.41,228.44,229.65,2660000,229.65 +1950-12-22,230.43,232.94,229.65,231.54,2720000,231.54 +1950-12-21,231.20,232.02,229.06,230.43,3990000,230.43 +1950-12-20,231.54,232.27,229.10,231.20,3510000,231.20 +1950-12-19,231.01,233.05,229.77,231.54,3650000,231.54 +1950-12-18,228.58,233.27,228.58,231.01,4500000,231.01 +1950-12-15,225.89,226.57,223.19,224.70,2420000,224.70 +1950-12-14,228.82,229.47,224.98,225.89,2660000,225.89 +1950-12-13,229.27,230.35,227.42,228.82,2030000,228.82 +1950-12-12,229.19,231.13,228.13,229.27,2140000,229.27 +1950-12-11,227.30,230.78,227.05,229.19,2600000,229.19 +1950-12-08,225.94,227.33,224.23,226.74,2310000,226.74 +1950-12-07,226.16,227.35,224.41,225.94,1810000,225.94 +1950-12-06,225.44,228.10,224.78,226.16,2010000,226.16 +1950-12-05,222.33,225.97,222.01,225.44,1940000,225.44 +1950-12-04,225.23,225.23,221.31,222.33,2510000,222.33 +1950-12-01,227.60,230.42,227.05,228.89,1870000,228.89 +1950-11-30,226.42,229.70,225.97,227.60,2080000,227.60 +1950-11-29,227.78,227.78,223.82,226.42,2770000,226.42 +1950-11-28,231.34,231.34,227.40,228.61,2970000,228.61 +1950-11-27,235.06,236.09,232.75,234.96,1740000,234.96 +1950-11-24,233.81,236.63,233.81,235.47,2620000,235.47 +1950-11-22,231.16,234.26,230.37,233.81,2730000,233.81 +1950-11-21,231.53,232.64,229.99,231.16,2010000,231.16 +1950-11-20,231.64,233.55,230.48,231.53,2250000,231.53 +1950-11-17,228.94,231.01,228.29,230.27,2130000,230.27 +1950-11-16,229.52,229.75,226.70,228.94,1760000,228.94 +1950-11-15,229.54,230.45,227.98,229.52,1620000,229.52 +1950-11-14,229.44,230.17,227.58,229.54,1780000,229.54 +1950-11-13,229.29,230.83,227.98,229.44,1630000,229.44 +1950-11-10,227.17,229.90,226.74,229.29,1640000,229.29 +1950-11-09,224.25,228.01,224.23,227.17,1760000,227.17 +1950-11-08,222.86,226.55,222.86,224.25,1850000,224.25 +1950-11-06,224.91,224.91,220.59,222.52,2580000,222.52 +1950-11-03,227.25,229.44,226.21,228.10,1560000,228.10 +1950-11-02,225.69,228.74,225.64,227.25,1580000,227.25 +1950-11-01,225.01,226.75,223.07,225.69,1780000,225.69 +1950-10-31,226.42,227.32,223.59,225.01,2010000,225.01 +1950-10-30,228.56,230.05,225.87,226.42,1790000,226.42 +1950-10-27,226.65,228.92,225.77,228.28,1800000,228.28 +1950-10-26,230.85,230.85,225.44,226.65,3000000,226.65 +1950-10-25,231.39,232.75,230.40,231.49,1930000,231.49 +1950-10-24,230.62,231.87,229.55,231.39,1790000,231.39 +1950-10-23,230.88,232.02,229.95,230.62,1850000,230.62 +1950-10-20,230.83,231.41,229.07,230.33,1840000,230.33 +1950-10-19,230.60,232.01,229.62,230.83,2250000,230.83 +1950-10-18,229.26,231.54,229.26,230.60,2410000,230.60 +1950-10-17,227.50,229.74,227.42,229.22,2010000,229.22 +1950-10-16,227.63,228.38,225.39,227.50,1630000,227.50 +1950-10-13,228.97,229.97,227.53,228.54,2030000,228.54 +1950-10-11,227.60,229.92,226.59,228.97,2200000,228.97 +1950-10-10,230.02,230.33,226.79,227.60,1870000,227.60 +1950-10-09,231.81,232.47,228.49,230.02,2330000,230.02 +1950-10-06,229.85,232.50,229.57,231.74,2360000,231.74 +1950-10-05,231.15,232.17,229.16,229.85,2490000,229.85 +1950-10-04,228.89,232.31,228.21,231.15,2920000,231.15 +1950-10-03,228.94,230.86,228.01,228.89,2480000,228.89 +1950-10-02,226.46,229.57,226.46,228.94,2200000,228.94 +1950-09-29,225.93,227.40,225.32,226.36,1800000,226.36 +1950-09-28,225.74,227.69,225.09,225.93,2200000,225.93 +1950-09-27,222.84,226.06,222.00,225.74,2360000,225.74 +1950-09-26,226.06,226.49,222.26,222.84,2280000,222.84 +1950-09-25,226.64,227.51,224.77,226.06,2020000,226.06 +1950-09-22,226.01,228.17,225.61,226.64,2510000,226.64 +1950-09-21,224.33,226.49,223.58,226.01,1650000,226.01 +1950-09-20,225.78,226.49,223.00,224.33,2100000,224.33 +1950-09-19,226.78,226.85,224.40,225.78,1590000,225.78 +1950-09-18,225.85,227.89,225.45,226.78,2040000,226.78 +1950-09-15,224.48,226.32,223.13,225.85,2410000,225.85 +1950-09-14,223.42,225.19,222.71,224.48,2350000,224.48 +1950-09-13,221.18,224.22,221.18,223.42,2600000,223.42 +1950-09-12,218.17,221.19,218.17,220.81,1680000,220.81 +1950-09-11,220.03,220.77,217.44,218.10,1860000,218.10 +1950-09-08,218.52,220.94,218.52,220.03,1960000,220.03 +1950-09-07,218.20,219.20,217.15,218.33,1340000,218.33 +1950-09-06,219.52,219.52,217.38,218.20,1300000,218.20 +1950-09-05,218.42,220.71,217.88,220.02,1250000,220.02 +1950-09-01,217.12,219.00,217.12,218.42,1290000,218.42 +1950-08-31,217.05,217.79,216.21,216.87,1140000,216.87 +1950-08-30,218.29,218.83,216.43,217.05,1490000,217.05 +1950-08-29,218.55,220.20,217.86,218.29,1890000,218.29 +1950-08-28,218.10,219.29,216.81,218.55,1300000,218.55 +1950-08-25,219.45,219.45,217.10,218.10,1610000,218.10 +1950-08-24,221.51,222.17,220.34,221.13,1620000,221.13 +1950-08-23,219.79,221.93,219.48,221.51,1580000,221.51 +1950-08-22,220.21,220.81,218.91,219.79,1550000,219.79 +1950-08-21,219.23,222.12,218.87,220.21,1840000,220.21 +1950-08-18,217.76,219.88,217.26,219.23,1780000,219.23 +1950-08-17,215.82,218.94,215.82,217.76,2170000,217.76 +1950-08-16,215.31,216.58,214.65,215.78,1770000,215.78 +1950-08-15,215.31,216.24,214.11,215.31,1330000,215.31 +1950-08-14,215.03,216.10,213.98,215.31,1280000,215.31 +1950-08-11,216.64,216.89,214.41,215.03,1680000,215.03 +1950-08-10,216.97,217.48,215.56,216.64,1870000,216.64 +1950-08-09,215.44,217.45,214.16,216.97,1760000,216.97 +1950-08-08,215.82,217.53,214.76,215.44,2180000,215.44 +1950-08-07,212.66,216.21,212.48,215.82,1850000,215.82 +1950-08-04,211.26,213.14,210.41,212.66,1600000,212.66 +1950-08-03,211.26,212.28,209.55,211.26,1660000,211.26 +1950-08-02,211.87,213.71,209.78,211.26,1980000,211.26 +1950-08-01,209.56,212.98,209.56,211.87,1970000,211.87 +1950-07-31,208.21,209.85,207.19,209.40,1590000,209.40 +1950-07-28,206.76,209.56,206.76,208.21,2050000,208.21 +1950-07-27,204.39,207.77,204.39,206.37,2300000,206.37 +1950-07-26,203.83,205.68,201.91,204.39,2460000,204.39 +1950-07-25,206.57,206.57,202.99,203.83,2770000,203.83 +1950-07-24,207.65,208.66,205.64,206.95,2300000,206.95 +1950-07-21,207.73,208.89,205.51,207.65,2810000,207.65 +1950-07-20,205.13,208.62,204.41,207.73,3160000,207.73 +1950-07-19,202.08,205.61,202.08,205.13,2430000,205.13 +1950-07-18,198.00,202.42,198.00,201.88,1820000,201.88 +1950-07-17,199.47,199.47,196.44,197.63,1520000,197.63 +1950-07-14,197.89,201.48,197.89,199.83,1900000,199.83 +1950-07-13,199.09,199.69,195.40,197.46,2660000,197.46 +1950-07-12,203.83,203.83,197.44,199.09,3200000,199.09 +1950-07-11,208.09,209.39,203.83,204.60,3250000,204.60 +1950-07-10,208.59,209.42,206.31,208.09,1960000,208.09 +1950-07-07,210.85,211.75,207.78,208.59,1870000,208.59 +1950-07-06,210.03,212.19,209.46,210.85,1570000,210.85 +1950-07-05,208.35,210.92,207.27,210.03,1400000,210.03 +1950-07-03,209.11,209.48,205.92,208.35,1550000,208.35 +1950-06-30,206.72,211.96,206.03,209.11,2660000,209.11 +1950-06-29,214.68,214.74,206.33,206.72,3040000,206.72 +1950-06-28,212.39,216.99,212.39,214.68,2600000,214.68 +1950-06-27,213.91,217.13,206.33,212.22,4860000,212.22 +1950-06-26,220.75,220.75,213.03,213.91,3950000,213.91 +1950-06-23,224.51,225.55,223.57,224.35,1700000,224.35 +1950-06-22,222.53,225.00,222.47,224.51,1830000,224.51 +1950-06-21,220.81,223.07,220.81,222.53,1750000,222.53 +1950-06-20,222.09,222.19,218.99,220.72,1470000,220.72 +1950-06-19,222.71,223.94,221.49,222.09,1290000,222.09 +1950-06-16,222.46,223.67,221.89,222.71,1180000,222.71 +1950-06-15,223.32,224.97,221.79,222.46,1530000,222.46 +1950-06-14,226.02,226.02,222.76,223.32,1650000,223.32 +1950-06-13,228.09,228.09,225.58,226.44,1790000,226.44 +1950-06-12,226.86,229.20,226.40,228.38,1790000,228.38 +1950-06-09,225.52,227.82,225.16,226.86,2130000,226.86 +1950-06-08,223.68,226.21,223.57,225.52,1780000,225.52 +1950-06-07,223.46,225.17,221.82,223.68,1750000,223.68 +1950-06-06,221.76,224.32,218.66,223.46,2250000,223.46 +1950-06-05,223.71,224.12,221.13,221.76,1630000,221.76 +1950-06-02,223.23,224.34,222.53,223.71,1450000,223.71 +1950-06-01,223.42,224.06,222.40,223.23,1580000,223.23 +1950-05-31,222.47,224.18,222.40,223.42,1530000,223.42 +1950-05-29,221.71,223.11,221.16,222.47,1110000,222.47 +1950-05-26,222.44,223.11,221.22,221.93,1330000,221.93 +1950-05-25,222.57,223.10,220.74,222.44,1480000,222.44 +1950-05-24,222.47,224.24,221.83,222.57,1850000,222.57 +1950-05-23,221.55,222.82,220.85,222.47,1460000,222.47 +1950-05-22,222.41,223.14,220.95,221.55,1620000,221.55 +1950-05-19,220.63,222.79,220.23,222.11,2110000,222.11 +1950-05-18,220.60,221.52,219.70,220.63,5240000,220.63 +1950-05-17,219.70,221.48,219.39,220.60,2020000,220.60 +1950-05-16,218.04,220.05,217.86,219.70,1730000,219.70 +1950-05-15,217.78,218.90,216.87,218.04,1220000,218.04 +1950-05-12,218.72,218.96,216.37,217.61,1790000,217.61 +1950-05-11,218.64,219.32,217.26,218.72,1750000,218.72 +1950-05-10,217.41,219.64,217.41,218.64,1880000,218.64 +1950-05-09,216.71,217.86,216.00,217.40,1720000,217.40 +1950-05-08,217.03,217.76,215.72,216.71,1680000,216.71 +1950-05-05,214.87,216.30,214.14,215.72,1800000,215.72 +1950-05-04,216.26,216.71,214.25,214.87,2150000,214.87 +1950-05-03,214.87,217.13,214.30,216.26,2120000,216.26 +1950-05-02,215.81,216.46,214.30,214.87,2250000,214.87 +1950-05-01,214.33,216.35,214.06,215.81,2390000,215.81 +1950-04-28,212.44,214.29,212.16,213.56,2190000,213.56 +1950-04-27,211.72,213.21,210.76,212.44,2070000,212.44 +1950-04-26,212.55,213.05,210.51,211.72,1880000,211.72 +1950-04-25,212.58,213.65,211.50,212.55,1830000,212.55 +1950-04-24,213.90,214.17,211.02,212.58,2310000,212.58 +1950-04-21,213.72,215.09,212.85,214.14,2710000,214.14 +1950-04-20,215.21,215.65,212.67,213.72,2590000,213.72 +1950-04-19,215.05,216.32,214.22,215.21,2950000,215.21 +1950-04-18,214.41,216.04,213.59,215.05,3320000,215.05 +1950-04-17,214.48,215.27,213.18,214.41,2520000,214.41 +1950-04-14,214.14,216.17,214.14,215.31,2750000,215.31 +1950-04-13,213.94,215.40,213.36,214.13,2410000,214.13 +1950-04-12,211.47,214.35,211.18,213.94,2010000,213.94 +1950-04-11,212.29,213.40,210.15,211.47,2010000,211.47 +1950-04-10,212.55,213.60,211.47,212.29,2070000,212.29 +1950-04-06,210.34,212.68,210.26,212.10,2000000,212.10 +1950-04-05,209.05,210.76,208.70,210.34,1430000,210.34 +1950-04-04,208.44,210.19,208.15,209.05,2010000,209.05 +1950-04-03,206.37,208.82,205.93,208.44,1570000,208.44 +1950-03-31,206.43,207.54,205.28,206.05,1880000,206.05 +1950-03-30,208.40,208.42,205.53,206.43,2370000,206.43 +1950-03-29,209.50,209.58,207.77,208.40,2090000,208.40 +1950-03-28,209.10,210.08,207.74,209.50,1780000,209.50 +1950-03-27,210.62,211.22,208.74,209.10,1930000,209.10 +1950-03-24,209.62,210.22,208.01,209.78,1570000,209.78 +1950-03-23,209.31,210.67,208.61,209.62,2020000,209.62 +1950-03-22,208.27,209.72,207.76,209.31,2010000,209.31 +1950-03-21,207.78,209.16,207.38,208.27,1400000,208.27 +1950-03-20,208.09,209.11,207.40,207.78,1430000,207.78 +1950-03-17,207.89,208.92,206.81,207.57,1600000,207.57 +1950-03-16,207.46,209.43,206.92,207.89,2060000,207.89 +1950-03-15,204.85,207.80,204.85,207.46,1830000,207.46 +1950-03-14,203.09,205.10,202.71,204.70,1140000,204.70 +1950-03-13,202.96,203.91,202.09,203.09,1060000,203.09 +1950-03-10,202.33,202.88,201.14,202.44,1260000,202.44 +1950-03-09,203.71,203.95,201.97,202.33,1330000,202.33 +1950-03-08,203.69,204.42,202.69,203.71,1360000,203.71 +1950-03-07,204.88,204.89,202.33,203.69,1590000,203.69 +1950-03-06,204.71,205.65,204.20,204.88,1470000,204.88 +1950-03-03,203.54,204.85,203.09,204.48,1520000,204.48 +1950-03-02,203.62,204.52,202.96,203.54,1340000,203.54 +1950-03-01,203.44,204.02,202.15,203.62,1410000,203.62 +1950-02-28,204.33,204.53,202.82,203.44,1310000,203.44 +1950-02-27,204.15,204.85,203.46,204.33,1410000,204.33 +1950-02-24,203.32,204.87,203.22,204.15,1710000,204.15 +1950-02-23,203.35,203.95,202.31,203.32,1310000,203.32 +1950-02-21,203.47,203.93,202.55,203.35,1260000,203.35 +1950-02-20,203.97,204.26,202.53,203.47,1420000,203.47 +1950-02-17,201.69,203.49,201.13,203.17,1940000,203.17 +1950-02-16,201.93,202.49,200.59,201.69,1920000,201.69 +1950-02-15,202.02,202.60,200.63,201.93,1730000,201.93 +1950-02-14,203.32,203.32,200.75,202.02,2210000,202.02 +1950-02-10,203.80,204.87,202.69,203.49,1790000,203.49 +1950-02-09,202.71,204.67,202.24,203.80,1810000,203.80 +1950-02-08,203.43,203.43,201.60,202.71,1470000,202.71 +1950-02-07,204.40,204.40,202.59,203.53,1360000,203.53 +1950-02-06,205.03,205.39,203.58,204.59,1490000,204.59 +1950-02-03,204.11,205.39,203.55,204.53,2210000,204.53 +1950-02-02,201.89,204.55,201.35,204.11,2040000,204.11 +1950-02-01,201.79,202.96,201.36,201.89,1810000,201.89 +1950-01-31,201.39,202.51,200.82,201.79,1690000,201.79 +1950-01-30,200.08,201.93,199.66,201.39,1640000,201.39 +1950-01-27,198.53,199.58,197.69,199.08,1250000,199.08 +1950-01-26,198.39,199.22,197.54,198.53,1150000,198.53 +1950-01-25,199.32,199.32,196.64,198.39,1700000,198.39 +1950-01-24,200.42,200.42,198.78,199.62,1250000,199.62 +1950-01-23,200.97,201.39,199.43,200.42,1340000,200.42 +1950-01-20,199.80,200.86,199.14,200.13,1440000,200.13 +1950-01-19,199.50,200.49,198.49,199.80,1170000,199.80 +1950-01-18,198.78,200.74,198.35,199.50,1570000,199.50 +1950-01-17,197.17,200.08,197.14,198.78,1790000,198.78 +1950-01-16,196.92,197.75,195.57,197.17,1460000,197.17 +1950-01-13,197.93,197.93,193.94,196.81,3330000,196.81 +1950-01-12,201.61,202.08,197.53,197.93,2970000,197.93 +1950-01-11,201.17,202.42,200.52,201.61,2630000,201.61 +1950-01-10,201.98,202.04,200.13,201.17,2160000,201.17 +1950-01-09,201.94,202.92,200.86,201.98,2520000,201.98 +1950-01-06,200.57,201.62,199.84,200.96,2010000,200.96 +1950-01-05,200.20,201.76,199.69,200.57,2550000,200.57 +1950-01-04,198.89,200.55,198.26,200.20,1890000,200.20 +1950-01-03,200.13,200.20,197.73,198.89,1260000,198.89 +1949-12-30,199.39,200.91,198.97,200.52,2090000,200.52 +1949-12-29,199.59,200.26,198.75,199.39,1820000,199.39 +1949-12-28,198.28,200.19,198.10,199.59,1560000,199.59 +1949-12-27,198.88,199.58,197.73,198.28,1560000,198.28 +1949-12-23,198.52,199.73,197.88,198.88,1470000,198.88 +1949-12-22,196.49,198.91,196.49,198.52,1630000,198.52 +1949-12-21,197.22,197.64,195.79,196.45,1270000,196.45 +1949-12-20,198.17,198.28,196.55,197.22,1330000,197.22 +1949-12-19,197.98,199.15,197.46,198.17,1420000,198.17 +1949-12-16,198.05,199.13,196.90,197.88,1960000,197.88 +1949-12-15,197.51,198.59,196.34,198.05,2070000,198.05 +1949-12-14,196.81,198.10,196.12,197.51,2210000,197.51 +1949-12-13,196.17,197.22,195.22,196.81,2080000,196.81 +1949-12-12,194.68,196.57,194.39,196.17,1780000,196.17 +1949-12-09,194.45,194.99,193.54,194.35,1500000,194.35 +1949-12-08,194.21,195.32,193.61,194.45,1720000,194.45 +1949-12-07,194.59,194.59,192.59,194.21,1630000,194.21 +1949-12-06,194.74,195.25,193.91,194.64,1430000,194.64 +1949-12-05,194.43,195.54,193.69,194.74,1830000,194.74 +1949-12-02,192.71,194.16,191.94,193.63,2020000,193.63 +1949-12-01,191.55,193.11,191.12,192.71,1470000,192.71 +1949-11-30,191.62,192.35,190.68,191.55,1320000,191.55 +1949-11-29,192.24,192.54,190.54,191.62,1310000,191.62 +1949-11-28,193.23,193.43,191.72,192.24,1080000,192.24 +1949-11-25,193.52,194.34,192.27,192.78,1270000,192.78 +1949-11-23,193.23,194.35,192.48,193.52,1460000,193.52 +1949-11-22,192.35,193.65,191.69,193.23,1400000,193.23 +1949-11-21,193.62,193.84,191.72,192.35,1180000,192.35 +1949-11-18,191.77,193.97,191.77,193.41,1690000,193.41 +1949-11-17,189.37,191.82,189.27,191.34,1410000,191.34 +1949-11-16,187.98,190.13,187.83,189.37,1210000,189.37 +1949-11-15,189.25,189.25,186.98,187.98,1250000,187.98 +1949-11-14,190.46,191.08,188.71,189.27,1270000,189.27 +1949-11-10,190.60,191.07,189.65,190.42,1170000,190.42 +1949-11-09,190.89,192.43,190.06,190.60,1510000,190.60 +1949-11-07,191.37,192.05,190.41,190.89,1170000,190.89 +1949-11-04,192.19,192.31,190.57,191.29,1390000,191.29 +1949-11-03,192.96,193.19,191.34,192.19,1370000,192.19 +1949-11-02,191.23,193.63,191.15,192.96,1570000,192.96 +1949-11-01,189.54,191.74,189.25,191.23,1300000,191.23 +1949-10-31,190.36,191.08,189.15,189.54,1140000,189.54 +1949-10-28,190.36,191.44,189.47,190.16,1480000,190.16 +1949-10-27,189.08,191.12,188.96,190.36,1760000,190.36 +1949-10-26,187.70,189.41,187.30,189.08,1620000,189.08 +1949-10-25,186.54,188.01,186.38,187.70,1190000,187.70 +1949-10-24,186.20,187.01,185.58,186.54,1240000,186.54 +1949-10-21,186.64,186.97,185.62,186.20,1290000,186.20 +1949-10-20,187.04,187.65,185.87,186.64,1270000,186.64 +1949-10-19,186.12,187.34,185.81,187.04,1370000,187.04 +1949-10-18,184.72,186.56,184.72,186.12,1220000,186.12 +1949-10-17,186.06,186.06,183.94,184.72,1130000,184.72 +1949-10-14,186.78,187.26,185.47,186.43,1190000,186.43 +1949-10-13,186.74,187.91,186.29,186.78,1790000,186.78 +1949-10-11,185.15,187.04,184.75,186.74,1660000,186.74 +1949-10-10,185.36,185.55,184.49,185.15,1120000,185.15 +1949-10-07,185.37,185.62,183.92,185.27,1280000,185.27 +1949-10-06,184.80,185.99,184.53,185.37,1520000,185.37 +1949-10-05,184.13,185.38,184.00,184.80,1470000,184.80 +1949-10-04,182.68,184.39,182.68,184.13,1310000,184.13 +1949-10-03,181.98,183.05,180.90,182.67,770000,182.67 +1949-09-30,182.43,183.16,181.71,182.51,1100000,182.51 +1949-09-29,181.31,183.42,181.00,182.43,1380000,182.43 +1949-09-28,180.06,182.09,180.06,181.31,1300000,181.31 +1949-09-27,180.54,180.54,178.61,179.63,1070000,179.63 +1949-09-26,181.30,182.25,180.36,180.86,1020000,180.86 +1949-09-23,180.83,181.74,180.17,181.30,1290000,181.30 +1949-09-22,180.02,181.37,179.87,180.83,1280000,180.83 +1949-09-21,178.04,180.42,177.71,180.02,1150000,180.02 +1949-09-20,180.91,180.91,177.63,178.04,1350000,178.04 +1949-09-19,182.13,182.13,180.18,181.42,1300000,181.42 +1949-09-16,182.16,182.76,181.34,182.32,1160000,182.32 +1949-09-15,182.71,182.71,181.00,182.16,1160000,182.16 +1949-09-14,183.29,184.09,182.61,183.14,1700000,183.14 +1949-09-13,181.27,183.51,181.27,183.29,1720000,183.29 +1949-09-12,180.24,181.60,180.17,181.15,1080000,181.15 +1949-09-09,180.53,180.86,179.89,180.24,770000,180.24 +1949-09-08,180.21,181.30,179.99,180.53,940000,180.53 +1949-09-07,179.20,180.54,178.91,180.21,850000,180.21 +1949-09-06,179.38,179.85,178.65,179.20,640000,179.20 +1949-09-02,179.52,179.91,178.97,179.38,750000,179.38 +1949-09-01,178.66,180.20,178.54,179.52,840000,179.52 +1949-08-31,178.69,179.05,177.77,178.66,720000,178.66 +1949-08-30,177.75,179.04,177.60,178.69,590000,178.69 +1949-08-29,179.08,179.08,177.45,177.75,640000,177.75 +1949-08-26,179.01,179.69,178.42,179.24,660000,179.24 +1949-08-25,178.78,179.52,178.44,179.01,730000,179.01 +1949-08-24,178.51,179.15,177.86,178.78,720000,178.78 +1949-08-23,180.18,180.18,178.28,178.51,840000,178.51 +1949-08-22,181.16,181.33,180.06,180.53,710000,180.53 +1949-08-19,182.02,182.38,180.83,181.16,850000,181.16 +1949-08-18,181.59,182.67,181.44,182.02,1180000,182.02 +1949-08-17,180.00,181.78,179.80,181.59,1440000,181.59 +1949-08-16,178.97,180.40,178.71,180.00,840000,180.00 +1949-08-15,179.29,179.71,178.55,178.97,720000,178.97 +1949-08-12,180.02,180.10,178.62,179.29,770000,179.29 +1949-08-11,180.60,180.98,179.48,180.02,1030000,180.02 +1949-08-10,179.52,180.96,179.23,180.60,1280000,180.60 +1949-08-09,180.35,180.35,178.86,179.52,1140000,179.52 +1949-08-08,179.18,181.15,179.18,180.54,1660000,180.54 +1949-08-05,177.06,179.38,176.77,179.07,1440000,179.07 +1949-08-04,177.19,177.44,176.51,177.06,910000,177.06 +1949-08-03,177.56,177.91,176.72,177.19,1270000,177.19 +1949-08-02,176.84,177.78,176.35,177.56,800000,177.56 +1949-08-01,175.92,177.17,175.68,176.84,860000,176.84 +1949-07-29,176.26,176.54,175.30,175.92,640000,175.92 +1949-07-28,176.46,176.84,175.57,176.26,790000,176.26 +1949-07-27,176.37,177.04,175.93,176.46,1030000,176.46 +1949-07-26,175.12,176.65,174.86,176.37,1310000,176.37 +1949-07-25,174.53,175.99,174.28,175.12,860000,175.12 +1949-07-22,174.59,174.95,173.85,174.53,730000,174.53 +1949-07-21,175.49,175.49,174.15,174.59,780000,174.59 +1949-07-20,175.31,176.14,174.86,175.60,1380000,175.60 +1949-07-19,174.04,175.60,173.93,175.31,1590000,175.31 +1949-07-18,173.48,174.40,173.20,174.04,810000,174.04 +1949-07-15,173.59,173.89,172.64,173.48,800000,173.48 +1949-07-14,173.24,174.02,172.47,173.59,1170000,173.59 +1949-07-13,171.78,173.34,171.59,173.24,1050000,173.24 +1949-07-12,170.81,171.96,170.52,171.78,870000,171.78 +1949-07-11,170.92,171.41,170.10,170.81,680000,170.81 +1949-07-08,171.01,171.53,170.41,170.92,640000,170.92 +1949-07-07,170.68,171.27,169.95,171.01,890000,171.01 +1949-07-06,169.02,170.83,168.77,170.68,1410000,170.68 +1949-07-05,168.08,169.48,167.90,169.02,630000,169.02 +1949-07-01,167.42,168.61,166.94,168.08,720000,168.08 +1949-06-30,166.76,167.96,166.72,167.42,580000,167.42 +1949-06-29,165.75,167.05,165.24,166.76,590000,166.76 +1949-06-28,166.52,166.52,164.65,165.75,790000,165.75 +1949-06-27,166.99,167.82,166.29,166.79,670000,166.79 +1949-06-24,166.77,167.49,166.39,166.99,570000,166.99 +1949-06-23,165.74,167.30,165.74,166.77,730000,166.77 +1949-06-22,165.71,165.97,165.09,165.64,550000,165.64 +1949-06-21,165.49,166.65,165.09,165.71,770000,165.71 +1949-06-20,163.78,165.68,163.46,165.49,780000,165.49 +1949-06-17,163.94,164.30,162.95,163.78,540000,163.78 +1949-06-16,164.58,165.03,163.50,163.94,680000,163.94 +1949-06-15,162.10,164.81,162.10,164.58,950000,164.58 +1949-06-14,161.60,162.51,160.62,161.86,1120000,161.86 +1949-06-13,163.90,163.90,160.95,161.60,1350000,161.60 +1949-06-10,165.53,165.53,164.14,164.61,800000,164.61 +1949-06-09,165.76,166.28,165.19,165.73,600000,165.73 +1949-06-08,165.29,166.39,164.96,165.76,790000,165.76 +1949-06-07,165.15,165.96,164.32,165.29,1040000,165.29 +1949-06-06,167.24,167.35,164.27,165.15,1380000,165.15 +1949-06-03,168.15,168.31,166.77,167.24,700000,167.24 +1949-06-02,167.98,168.98,167.59,168.15,670000,168.15 +1949-06-01,168.36,168.54,166.53,167.98,1140000,167.98 +1949-05-31,171.53,171.60,168.14,168.36,1240000,168.36 +1949-05-27,171.95,172.07,170.95,171.53,690000,171.53 +1949-05-26,171.84,172.79,171.51,171.95,700000,171.95 +1949-05-25,171.49,172.07,170.57,171.84,880000,171.84 +1949-05-24,172.32,172.43,171.06,171.49,840000,171.49 +1949-05-23,173.43,173.43,172.10,172.32,720000,172.32 +1949-05-20,174.14,174.18,172.86,173.49,740000,173.49 +1949-05-19,174.92,175.12,173.76,174.14,840000,174.14 +1949-05-18,175.32,175.61,174.39,174.92,750000,174.92 +1949-05-17,175.76,176.07,174.86,175.32,780000,175.32 +1949-05-16,175.20,176.26,175.17,175.76,1030000,175.76 +1949-05-13,174.70,175.40,174.26,174.82,780000,174.82 +1949-05-12,174.40,175.17,174.14,174.70,790000,174.70 +1949-05-11,174.37,175.11,173.75,174.40,790000,174.40 +1949-05-10,175.17,175.32,173.97,174.37,730000,174.37 +1949-05-09,175.39,175.75,174.70,175.17,610000,175.17 +1949-05-06,176.24,176.24,174.74,175.50,780000,175.50 +1949-05-05,176.63,177.18,175.91,176.33,920000,176.33 +1949-05-04,175.09,177.04,175.09,176.63,1180000,176.63 +1949-05-03,174.53,175.32,173.86,175.00,830000,175.00 +1949-05-02,174.16,175.06,173.93,174.53,740000,174.53 +1949-04-29,173.89,174.48,173.52,174.06,810000,174.06 +1949-04-28,174.56,174.65,173.58,173.89,770000,173.89 +1949-04-27,174.21,175.24,173.92,174.56,830000,174.56 +1949-04-26,173.64,174.60,173.02,174.21,870000,174.21 +1949-04-25,173.76,174.38,173.05,173.64,740000,173.64 +1949-04-22,173.24,173.77,172.64,173.42,890000,173.42 +1949-04-21,175.49,175.49,173.08,173.24,1310000,173.24 +1949-04-20,176.73,176.79,175.38,175.69,970000,175.69 +1949-04-19,177.16,177.50,176.39,176.73,830000,176.73 +1949-04-18,177.07,177.71,176.47,177.16,890000,177.16 +1949-04-14,176.81,177.30,176.18,176.62,800000,176.62 +1949-04-13,176.99,177.69,172.26,176.81,920000,176.81 +1949-04-12,176.54,177.46,175.61,176.99,860000,176.99 +1949-04-11,176.75,177.14,175.94,176.54,720000,176.54 +1949-04-08,176.04,176.62,175.34,176.44,850000,176.44 +1949-04-07,176.71,176.94,175.43,176.04,850000,176.04 +1949-04-06,177.04,177.53,176.19,176.71,930000,176.71 +1949-04-05,176.59,177.67,175.94,177.04,900000,177.04 +1949-04-04,176.88,177.78,176.15,176.59,920000,176.59 +1949-04-01,177.04,177.04,175.86,176.28,850000,176.28 +1949-03-31,178.43,178.43,176.87,177.10,980000,177.10 +1949-03-30,178.39,179.19,177.69,178.45,1850000,178.45 +1949-03-29,176.81,178.90,176.81,178.39,1800000,178.39 +1949-03-28,175.82,176.72,175.35,175.99,700000,175.99 +1949-03-25,176.41,176.49,175.29,175.83,630000,175.83 +1949-03-24,176.20,177.37,176.13,176.41,920000,176.41 +1949-03-23,174.83,176.54,174.32,176.20,960000,176.20 +1949-03-22,175.61,175.85,174.34,174.83,840000,174.83 +1949-03-21,176.07,176.47,175.27,175.61,620000,175.61 +1949-03-18,176.33,176.78,175.73,176.29,670000,176.29 +1949-03-17,175.53,176.67,175.17,176.33,760000,176.33 +1949-03-16,176.02,176.08,174.87,175.53,670000,175.53 +1949-03-15,176.82,176.82,175.43,176.02,740000,176.02 +1949-03-14,176.96,177.66,176.35,176.98,800000,176.98 +1949-03-11,175.64,176.87,175.41,176.52,1070000,176.52 +1949-03-10,175.76,176.20,175.03,175.64,630000,175.64 +1949-03-09,176.09,176.29,175.22,175.76,640000,175.76 +1949-03-08,175.55,176.62,175.30,176.09,940000,176.09 +1949-03-07,174.93,175.82,174.30,175.55,840000,175.55 +1949-03-04,173.76,174.06,172.59,173.66,730000,173.66 +1949-03-03,173.82,174.44,173.17,173.76,600000,173.76 +1949-03-02,174.18,174.34,173.15,173.82,690000,173.82 +1949-03-01,173.36,174.61,173.36,174.18,720000,174.18 +1949-02-28,171.63,173.38,171.63,173.06,740000,173.06 +1949-02-25,171.48,172.11,170.56,171.10,830000,171.10 +1949-02-24,172.76,172.76,171.19,171.48,880000,171.48 +1949-02-23,174.19,174.60,173.07,173.23,770000,173.23 +1949-02-21,174.53,174.67,173.63,174.19,560000,174.19 +1949-02-18,174.82,175.62,174.11,174.71,700000,174.71 +1949-02-17,173.45,175.55,173.45,174.82,960000,174.82 +1949-02-16,172.48,173.92,172.27,173.28,700000,173.28 +1949-02-15,172.16,172.86,171.27,172.48,610000,172.48 +1949-02-14,171.93,173.17,171.57,172.16,700000,172.16 +1949-02-11,172.41,172.69,171.03,171.93,880000,171.93 +1949-02-10,174.61,174.80,172.23,172.41,980000,172.41 +1949-02-09,173.71,175.20,173.57,174.61,880000,174.61 +1949-02-08,174.37,174.37,172.91,173.71,960000,173.71 +1949-02-07,175.60,176.76,173.79,174.43,1330000,174.43 +1949-02-04,180.09,180.32,177.69,177.92,1060000,177.92 +1949-02-03,180.27,180.88,179.57,180.09,770000,180.09 +1949-02-02,180.39,180.94,179.63,180.27,720000,180.27 +1949-02-01,179.12,180.55,178.92,180.39,730000,180.39 +1949-01-31,179.35,179.73,178.46,179.12,610000,179.12 +1949-01-28,179.48,179.48,177.88,178.82,840000,178.82 +1949-01-27,179.88,180.30,178.58,179.52,840000,179.52 +1949-01-26,179.65,181.31,178.96,179.88,1040000,179.88 +1949-01-25,180.83,181.05,179.06,179.65,820000,179.65 +1949-01-24,181.54,182.28,180.51,180.83,850000,180.83 +1949-01-21,181.43,181.89,180.69,181.00,770000,181.00 +1949-01-20,181.12,181.85,180.44,181.43,820000,181.43 +1949-01-19,180.55,181.47,179.75,181.12,760000,181.12 +1949-01-18,180.14,181.55,180.09,180.55,770000,180.55 +1949-01-17,179.15,180.48,177.99,180.14,720000,180.14 +1949-01-14,180.17,180.20,178.19,178.80,930000,178.80 +1949-01-13,180.69,181.06,179.79,180.17,700000,180.17 +1949-01-12,180.76,181.66,180.21,180.69,710000,180.69 +1949-01-11,180.57,181.00,179.73,180.76,710000,180.76 +1949-01-10,181.41,181.47,179.78,180.57,770000,180.57 +1949-01-07,180.47,182.50,180.47,181.31,1400000,181.31 +1949-01-06,177.16,180.59,177.16,180.22,1150000,180.22 +1949-01-05,175.50,177.76,175.50,177.08,800000,177.08 +1949-01-04,175.03,175.97,174.56,175.49,640000,175.49 +1949-01-03,176.99,176.99,174.37,175.03,980000,175.03 +1948-12-31,177.92,178.50,176.81,177.30,1550000,177.30 +1948-12-30,177.58,179.15,177.10,177.92,1390000,177.92 +1948-12-29,175.98,177.85,175.88,177.58,1380000,177.58 +1948-12-28,177.37,177.37,175.19,175.98,1650000,175.98 +1948-12-27,177.42,178.35,176.63,177.40,1060000,177.40 +1948-12-24,176.49,177.82,176.04,177.42,970000,177.42 +1948-12-23,176.39,177.29,175.70,176.49,1080000,176.49 +1948-12-22,176.35,176.93,175.62,176.39,1000000,176.39 +1948-12-21,176.84,177.49,175.92,176.35,1000000,176.35 +1948-12-20,175.69,177.60,175.14,176.84,980000,176.84 +1948-12-17,175.83,176.78,175.17,175.92,1010000,175.92 +1948-12-16,176.20,176.59,175.20,175.83,1010000,175.83 +1948-12-15,176.59,177.26,175.78,176.20,920000,176.20 +1948-12-14,177.34,177.73,175.86,176.59,1000000,176.59 +1948-12-13,177.49,178.43,176.67,177.34,1180000,177.34 +1948-12-10,175.75,176.79,175.17,176.41,1040000,176.41 +1948-12-09,176.29,176.86,175.44,175.75,1220000,175.75 +1948-12-08,176.67,176.98,175.25,176.29,1140000,176.29 +1948-12-07,176.26,177.25,175.39,176.67,1160000,176.67 +1948-12-06,176.22,177.12,175.59,176.26,1180000,176.26 +1948-12-03,173.61,175.34,173.20,175.00,1100000,175.00 +1948-12-02,173.22,174.88,173.15,173.61,1210000,173.61 +1948-12-01,171.67,174.02,171.67,173.22,1320000,173.22 +1948-11-30,171.99,172.49,170.35,171.20,1200000,171.20 +1948-11-29,172.90,173.55,171.72,171.99,1010000,171.99 +1948-11-26,173.40,174.14,172.38,173.16,1040000,173.16 +1948-11-24,175.88,175.88,172.96,173.40,1290000,173.40 +1948-11-23,176.33,176.72,175.17,176.17,1010000,176.17 +1948-11-22,177.42,177.80,175.75,176.33,890000,176.33 +1948-11-19,176.07,177.96,175.99,176.98,990000,176.98 +1948-11-18,176.07,176.89,175.52,176.07,780000,176.07 +1948-11-17,176.20,176.92,175.14,176.07,980000,176.07 +1948-11-16,176.01,177.42,175.44,176.20,1060000,176.20 +1948-11-15,174.37,176.56,174.37,176.01,1030000,176.01 +1948-11-12,173.48,175.47,173.37,173.93,1110000,173.93 +1948-11-10,173.94,174.93,172.13,173.48,2100000,173.48 +1948-11-09,178.19,178.60,173.54,173.94,2260000,173.94 +1948-11-08,178.94,179.85,177.46,178.19,1130000,178.19 +1948-11-05,184.42,184.42,178.11,178.38,2530000,178.38 +1948-11-04,182.92,185.79,182.92,184.54,1530000,184.54 +1948-11-03,183.08,183.08,179.65,182.46,3240000,182.46 +1948-11-01,188.62,190.45,188.39,189.76,1220000,189.76 +1948-10-29,187.73,188.60,186.99,188.28,860000,188.28 +1948-10-28,189.28,189.59,187.29,187.73,970000,187.73 +1948-10-27,189.76,190.06,188.11,189.28,970000,189.28 +1948-10-26,189.52,190.88,188.97,189.76,1140000,189.76 +1948-10-25,190.19,190.53,188.54,189.52,1100000,189.52 +1948-10-22,186.70,190.08,186.70,189.76,1800000,189.76 +1948-10-21,186.51,187.16,185.49,186.44,1200000,186.44 +1948-10-20,186.18,187.00,185.62,186.51,1180000,186.51 +1948-10-19,185.33,186.58,185.15,186.18,1030000,186.18 +1948-10-18,184.93,186.22,184.63,185.33,1030000,185.33 +1948-10-15,184.52,185.26,183.76,184.62,910000,184.62 +1948-10-14,183.84,185.46,183.65,184.52,980000,184.52 +1948-10-13,182.41,184.25,182.30,183.84,830000,183.84 +1948-10-11,182.09,182.76,181.71,182.41,510000,182.41 +1948-10-08,182.52,182.99,181.55,182.02,630000,182.02 +1948-10-07,181.72,183.10,181.58,182.52,800000,182.52 +1948-10-06,181.23,182.34,180.91,181.72,710000,181.72 +1948-10-05,181.70,181.89,180.52,181.23,550000,181.23 +1948-10-04,180.78,182.19,180.74,181.70,610000,181.70 +1948-10-01,178.30,180.08,178.22,179.87,680000,179.87 +1948-09-30,179.04,179.71,177.95,178.30,700000,178.30 +1948-09-29,177.59,179.53,177.59,179.04,810000,179.04 +1948-09-28,175.99,177.91,175.84,177.54,910000,177.54 +1948-09-27,178.32,178.32,175.84,175.99,1210000,175.99 +1948-09-24,178.77,179.71,178.49,179.28,650000,179.28 +1948-09-23,179.16,179.22,178.22,178.77,550000,178.77 +1948-09-22,178.61,179.70,178.11,179.16,850000,179.16 +1948-09-21,177.37,178.89,176.94,178.61,920000,178.61 +1948-09-20,179.93,179.93,176.96,177.37,1260000,177.37 +1948-09-17,180.69,180.78,179.60,180.06,680000,180.06 +1948-09-16,180.62,181.10,179.84,180.69,580000,180.69 +1948-09-15,180.63,181.47,179.85,180.62,710000,180.62 +1948-09-14,179.41,181.12,179.41,180.63,710000,180.63 +1948-09-13,180.51,180.51,178.87,179.38,680000,179.38 +1948-09-10,180.33,181.26,179.04,180.61,970000,180.61 +1948-09-09,182.83,182.83,179.74,180.33,2000000,180.33 +1948-09-08,184.88,184.88,182.63,182.90,880000,182.90 +1948-09-07,184.35,185.64,183.68,185.36,910000,185.36 +1948-09-03,184.39,184.90,183.49,184.35,660000,184.35 +1948-09-02,183.60,184.88,183.16,184.39,900000,184.39 +1948-09-01,181.71,183.99,181.44,183.60,920000,183.60 +1948-08-31,182.09,182.47,181.18,181.71,610000,181.71 +1948-08-30,183.21,183.95,181.89,182.09,690000,182.09 +1948-08-27,182.52,183.55,182.38,183.21,540000,183.21 +1948-08-26,182.41,182.99,181.93,182.52,540000,182.52 +1948-08-25,182.58,183.01,181.89,182.41,520000,182.41 +1948-08-24,181.75,182.99,181.67,182.58,620000,182.58 +1948-08-23,183.52,183.52,181.45,181.75,630000,181.75 +1948-08-20,182.57,183.92,182.50,183.60,710000,183.60 +1948-08-19,182.12,182.78,181.45,182.57,580000,182.57 +1948-08-18,182.15,183.21,181.76,182.12,640000,182.12 +1948-08-17,180.75,182.63,180.75,182.15,680000,182.15 +1948-08-16,179.63,180.62,179.46,180.30,470000,180.30 +1948-08-13,179.63,180.44,178.99,179.63,510000,179.63 +1948-08-12,179.27,180.17,178.51,179.63,630000,179.63 +1948-08-11,179.88,179.88,177.40,179.27,1310000,179.27 +1948-08-10,182.26,182.26,179.91,180.02,840000,180.02 +1948-08-09,183.01,183.75,182.02,182.26,670000,182.26 +1948-08-06,182.92,183.44,181.89,183.01,680000,183.01 +1948-08-05,183.06,184.54,182.45,182.92,880000,182.92 +1948-08-04,180.98,183.29,180.82,183.06,870000,183.06 +1948-08-03,181.13,181.72,180.24,180.98,720000,180.98 +1948-08-02,181.33,182.61,180.61,181.13,710000,181.13 +1948-07-30,182.56,182.56,180.04,181.33,1310000,181.33 +1948-07-29,185.15,185.28,183.19,183.57,750000,183.57 +1948-07-28,186.09,187.00,184.92,185.15,840000,185.15 +1948-07-27,184.17,186.37,183.81,186.09,870000,186.09 +1948-07-26,185.31,185.83,183.81,184.17,720000,184.17 +1948-07-23,185.29,186.36,184.74,185.31,820000,185.31 +1948-07-22,184.44,185.90,184.19,185.29,850000,185.29 +1948-07-21,183.57,185.96,183.39,184.44,1200000,184.44 +1948-07-20,181.27,184.41,181.27,183.57,1470000,183.57 +1948-07-19,184.76,184.76,179.58,181.20,2570000,181.20 +1948-07-16,187.70,188.34,184.98,185.90,1760000,185.90 +1948-07-15,190.66,190.69,187.62,187.70,1620000,187.70 +1948-07-14,190.36,191.13,189.41,190.66,1340000,190.66 +1948-07-13,191.47,191.65,190.08,190.36,1200000,190.36 +1948-07-12,191.62,192.38,190.95,191.47,1300000,191.47 +1948-07-09,190.58,192.09,189.98,191.62,1370000,191.62 +1948-07-08,190.06,191.16,189.73,190.58,1000000,190.58 +1948-07-07,190.55,191.04,189.31,190.06,920000,190.06 +1948-07-06,190.06,191.37,189.54,190.55,950000,190.55 +1948-07-02,189.03,190.45,188.46,190.06,920000,190.06 +1948-07-01,189.46,189.85,188.43,189.03,820000,189.03 +1948-06-30,188.49,190.03,187.73,189.46,990000,189.46 +1948-06-29,187.90,189.19,187.50,188.49,820000,188.49 +1948-06-28,189.66,189.66,186.56,187.90,1210000,187.90 +1948-06-25,190.87,191.06,188.95,190.00,1150000,190.00 +1948-06-24,190.73,191.87,190.00,190.87,1560000,190.87 +1948-06-23,189.66,191.32,189.42,190.73,1760000,190.73 +1948-06-22,189.71,190.31,188.41,189.66,1410000,189.66 +1948-06-21,191.65,192.08,189.52,189.71,1750000,189.71 +1948-06-18,192.15,192.19,190.56,191.65,1250000,191.65 +1948-06-17,192.34,192.99,191.12,192.15,1520000,192.15 +1948-06-16,193.16,193.19,191.06,192.34,1580000,192.34 +1948-06-15,192.86,193.93,191.62,193.16,1630000,193.16 +1948-06-14,192.96,194.49,192.14,192.86,1750000,192.86 +1948-06-11,192.50,193.65,191.48,192.96,1520000,192.96 +1948-06-10,192.56,193.28,191.06,192.50,1700000,192.50 +1948-06-09,192.16,193.54,191.86,192.56,1880000,192.56 +1948-06-08,190.31,192.59,190.31,192.16,1520000,192.16 +1948-06-07,190.18,190.74,188.87,190.13,930000,190.13 +1948-06-04,191.05,191.31,189.56,190.18,1100000,190.18 +1948-06-03,191.32,192.09,190.40,191.05,1300000,191.05 +1948-06-02,191.18,192.18,190.30,191.32,1300000,191.32 +1948-06-01,190.74,192.00,190.29,191.18,1310000,191.18 +1948-05-28,190.97,191.48,189.49,190.74,1240000,190.74 +1948-05-27,191.06,192.31,190.39,190.97,1830000,190.97 +1948-05-26,189.71,191.57,189.06,191.06,1840000,191.06 +1948-05-25,189.82,190.77,188.55,189.71,1810000,189.71 +1948-05-24,190.00,190.67,188.98,189.82,1560000,189.82 +1948-05-21,189.26,191.44,189.17,189.78,2680000,189.78 +1948-05-20,188.28,190.00,187.52,189.26,2480000,189.26 +1948-05-19,188.56,189.44,187.46,188.28,1850000,188.28 +1948-05-18,190.44,191.01,188.16,188.56,2480000,188.56 +1948-05-17,190.25,191.00,188.37,190.44,3050000,190.44 +1948-05-14,185.01,188.93,185.01,188.60,3840000,188.60 +1948-05-13,183.95,185.40,183.32,184.82,2030000,184.82 +1948-05-12,183.75,184.39,182.49,183.95,1530000,183.95 +1948-05-11,182.94,184.25,182.21,183.75,1750000,183.75 +1948-05-10,182.50,183.46,181.68,182.94,1440000,182.94 +1948-05-07,181.68,183.20,181.68,182.29,1670000,182.29 +1948-05-06,180.94,182.14,180.16,181.65,1310000,181.65 +1948-05-05,181.44,182.05,180.56,180.94,1240000,180.94 +1948-05-04,181.09,182.43,180.70,181.44,1460000,181.44 +1948-05-03,180.28,181.71,179.47,181.09,1150000,181.09 +1948-04-30,180.65,181.64,179.69,180.51,1450000,180.51 +1948-04-29,181.01,181.47,179.33,180.65,1480000,180.65 +1948-04-28,180.97,182.01,180.16,181.01,1400000,181.01 +1948-04-27,181.32,181.87,180.07,180.97,1420000,180.97 +1948-04-26,183.09,183.09,180.93,181.32,1410000,181.32 +1948-04-23,182.98,184.48,182.67,183.78,2470000,183.78 +1948-04-22,181.37,183.40,180.88,182.98,2330000,182.98 +1948-04-21,180.72,181.79,179.49,181.37,1670000,181.37 +1948-04-20,181.05,181.87,179.98,180.72,1700000,180.72 +1948-04-19,180.38,181.42,179.90,181.05,1530000,181.05 +1948-04-16,180.27,181.69,179.90,180.63,2140000,180.63 +1948-04-15,179.13,180.94,178.60,180.27,1650000,180.27 +1948-04-14,179.45,179.91,178.59,179.13,1030000,179.13 +1948-04-13,179.05,179.89,178.58,179.45,950000,179.45 +1948-04-12,179.48,180.19,178.26,179.05,1030000,179.05 +1948-04-09,178.80,179.91,178.40,179.16,1380000,179.16 +1948-04-08,178.33,179.38,177.91,178.80,1060000,178.80 +1948-04-07,178.77,179.14,177.70,178.33,1160000,178.33 +1948-04-06,177.92,179.31,177.62,178.77,1310000,178.77 +1948-04-05,177.45,178.27,177.06,177.92,1040000,177.92 +1948-04-02,177.61,178.10,175.96,177.32,1080000,177.32 +1948-04-01,177.20,178.14,176.08,177.61,1490000,177.61 +1948-03-31,175.63,177.61,175.63,177.20,1780000,177.20 +1948-03-30,173.65,175.38,173.30,175.23,1060000,175.23 +1948-03-29,173.95,174.33,172.55,173.65,760000,173.65 +1948-03-25,173.62,174.63,173.08,174.05,1040000,174.05 +1948-03-24,173.50,174.45,172.84,173.62,1040000,173.62 +1948-03-23,173.66,174.26,172.71,173.50,1160000,173.50 +1948-03-22,173.12,175.23,173.05,173.66,2040000,173.66 +1948-03-19,166.92,169.75,166.50,169.67,1160000,169.67 +1948-03-18,166.24,168.02,166.07,166.92,890000,166.92 +1948-03-17,165.39,166.60,165.03,166.24,930000,166.24 +1948-03-16,167.21,167.21,165.03,165.39,940000,165.39 +1948-03-15,167.62,168.16,167.09,167.62,690000,167.62 +1948-03-12,167.21,167.54,166.51,166.99,690000,166.99 +1948-03-11,167.48,168.27,166.67,167.21,820000,167.21 +1948-03-10,166.76,167.74,166.04,167.48,730000,167.48 +1948-03-09,167.54,167.54,166.04,166.76,660000,166.76 +1948-03-08,168.94,169.13,167.46,167.71,740000,167.71 +1948-03-05,168.13,168.64,167.20,168.35,630000,168.35 +1948-03-04,168.61,168.92,167.69,168.13,580000,168.13 +1948-03-03,168.75,169.28,168.04,168.61,760000,168.61 +1948-03-02,168.14,169.18,167.78,168.75,780000,168.75 +1948-03-01,167.46,168.62,167.46,168.14,770000,168.14 +1948-02-27,167.56,167.56,165.92,166.80,770000,166.80 +1948-02-26,168.39,168.71,167.17,167.56,620000,167.56 +1948-02-25,167.80,169.01,167.72,168.39,710000,168.39 +1948-02-24,167.60,168.24,166.81,167.80,640000,167.80 +1948-02-20,167.86,167.96,166.38,167.44,700000,167.44 +1948-02-19,168.04,168.98,167.34,167.86,680000,167.86 +1948-02-18,167.89,168.36,167.23,168.04,610000,168.04 +1948-02-17,168.30,169.23,167.47,167.89,720000,167.89 +1948-02-16,166.86,168.96,166.86,168.30,830000,168.30 +1948-02-13,165.69,167.23,164.99,166.33,930000,166.33 +1948-02-11,165.65,166.41,164.07,165.69,1490000,165.69 +1948-02-10,168.92,168.92,165.26,165.65,1460000,165.65 +1948-02-09,169.79,170.83,169.33,169.82,660000,169.82 +1948-02-06,169.18,169.67,167.95,168.81,920000,168.81 +1948-02-05,170.43,170.43,168.13,169.18,1200000,169.18 +1948-02-04,173.39,173.39,170.41,170.95,1200000,170.95 +1948-02-03,174.92,175.03,173.54,173.95,700000,173.95 +1948-02-02,175.05,176.05,174.57,174.92,770000,174.92 +1948-01-30,174.47,175.58,173.61,174.76,890000,174.76 +1948-01-29,173.39,175.06,173.39,174.47,1060000,174.47 +1948-01-28,171.68,173.49,171.68,172.97,860000,172.97 +1948-01-27,171.18,172.66,170.83,171.42,830000,171.42 +1948-01-26,171.67,172.41,170.70,171.18,650000,171.18 +1948-01-23,172.15,173.04,171.36,171.97,790000,171.97 +1948-01-22,173.33,173.33,171.37,172.15,1110000,172.15 +1948-01-21,175.27,176.10,173.32,173.53,1190000,173.53 +1948-01-20,175.95,176.13,174.62,175.27,710000,175.27 +1948-01-19,177.24,177.34,175.21,175.95,1050000,175.95 +1948-01-16,177.03,177.71,176.28,177.15,760000,177.15 +1948-01-15,177.49,178.06,176.54,177.03,780000,177.03 +1948-01-14,177.49,178.16,176.50,177.37,820000,177.37 +1948-01-13,179.29,179.29,177.25,177.49,950000,177.49 +1948-01-12,180.20,180.62,178.70,179.33,1000000,179.33 +1948-01-09,180.60,181.40,179.74,180.09,980000,180.09 +1948-01-08,179.83,181.04,179.35,180.60,900000,180.60 +1948-01-07,179.12,180.40,178.48,179.83,820000,179.83 +1948-01-06,179.53,179.88,177.78,179.12,1030000,179.12 +1948-01-05,181.04,181.69,179.19,179.53,1090000,179.53 +1948-01-02,181.16,181.53,180.01,181.04,710000,181.04 +1947-12-31,180.56,181.82,180.29,181.16,1540000,181.16 +1947-12-30,178.58,180.93,178.43,180.56,1380000,180.56 +1947-12-29,179.23,179.81,177.93,178.58,1190000,178.58 +1947-12-26,180.71,180.71,178.90,179.28,930000,179.28 +1947-12-24,180.71,181.49,179.72,180.84,1190000,180.84 +1947-12-23,180.21,181.25,179.61,180.71,1360000,180.71 +1947-12-22,181.06,181.78,179.98,180.21,1450000,180.21 +1947-12-19,179.44,180.64,178.62,180.09,1250000,180.09 +1947-12-18,179.81,180.53,179.03,179.44,1130000,179.44 +1947-12-17,179.44,180.23,178.69,179.81,1250000,179.81 +1947-12-16,179.69,180.25,178.91,179.44,1090000,179.44 +1947-12-15,179.34,180.56,178.74,179.69,1430000,179.69 +1947-12-12,177.37,178.92,176.82,178.37,1220000,178.37 +1947-12-11,177.58,177.98,176.44,177.37,940000,177.37 +1947-12-10,177.47,178.22,176.89,177.58,1120000,177.58 +1947-12-09,176.71,177.98,176.00,177.47,1100000,177.47 +1947-12-08,175.74,177.35,175.19,176.71,960000,176.71 +1947-12-05,178.57,178.57,175.46,176.10,1290000,176.10 +1947-12-04,179.63,179.83,178.16,178.79,970000,178.79 +1947-12-03,180.57,180.57,179.18,179.63,930000,179.63 +1947-12-02,180.61,181.77,180.20,180.76,890000,180.76 +1947-12-01,179.40,181.09,179.09,180.61,800000,180.61 +1947-11-28,180.94,181.15,179.30,179.51,930000,179.51 +1947-11-26,181.35,182.39,180.67,180.94,910000,180.94 +1947-11-25,181.98,182.43,180.92,181.35,870000,181.35 +1947-11-24,182.33,183.06,181.23,181.98,790000,181.98 +1947-11-21,183.17,183.97,182.23,182.61,980000,182.61 +1947-11-20,182.71,183.68,181.15,183.17,960000,183.17 +1947-11-19,181.71,182.98,181.69,182.71,1050000,182.71 +1947-11-18,180.40,181.99,180.12,181.71,930000,181.71 +1947-11-17,180.26,180.95,179.57,180.40,750000,180.40 +1947-11-14,180.00,181.00,179.67,180.05,780000,180.05 +1947-11-13,180.96,180.96,179.60,180.00,790000,180.00 +1947-11-12,182.21,182.56,180.56,181.04,900000,181.04 +1947-11-10,181.49,182.70,181.17,182.21,720000,182.21 +1947-11-07,182.00,182.45,181.12,181.54,760000,181.54 +1947-11-06,181.89,182.33,180.61,182.00,850000,182.00 +1947-11-05,182.65,183.57,181.61,181.89,1050000,181.89 +1947-11-03,182.48,183.51,181.85,182.65,760000,182.65 +1947-10-31,181.32,182.40,180.43,181.81,800000,181.81 +1947-10-30,183.04,183.04,179.93,181.32,1390000,181.32 +1947-10-29,183.21,184.70,182.47,183.06,1140000,183.06 +1947-10-28,183.27,184.24,182.72,183.21,930000,183.21 +1947-10-27,182.73,183.70,181.76,183.27,850000,183.27 +1947-10-24,184.47,184.47,181.55,182.53,1650000,182.53 +1947-10-23,184.36,185.30,183.71,184.50,1190000,184.50 +1947-10-22,185.09,185.89,184.00,184.36,1260000,184.36 +1947-10-21,185.29,186.01,184.05,185.09,1400000,185.09 +1947-10-20,184.27,186.24,184.27,185.29,1770000,185.29 +1947-10-17,183.54,184.39,182.40,183.52,1270000,183.52 +1947-10-16,183.28,184.56,182.71,183.54,1400000,183.54 +1947-10-15,182.73,184.27,182.25,183.28,1930000,183.28 +1947-10-14,180.49,183.14,180.47,182.73,1810000,182.73 +1947-10-10,180.11,181.34,179.63,180.44,1120000,180.44 +1947-10-09,178.78,180.37,178.56,180.11,790000,180.11 +1947-10-08,180.01,180.56,178.26,178.78,1130000,178.78 +1947-10-07,180.08,180.49,179.33,180.01,880000,180.01 +1947-10-06,179.44,180.61,179.03,180.08,930000,180.08 +1947-10-03,178.47,180.31,178.26,179.53,1270000,179.53 +1947-10-02,178.10,178.96,177.50,178.47,850000,178.47 +1947-10-01,177.49,178.87,176.89,178.10,1160000,178.10 +1947-09-30,175.85,177.70,175.36,177.49,960000,177.49 +1947-09-29,174.86,176.44,174.74,175.85,740000,175.85 +1947-09-26,175.29,175.57,174.42,174.86,640000,174.86 +1947-09-25,176.39,176.84,174.92,175.29,770000,175.29 +1947-09-24,176.04,176.79,175.27,176.39,570000,176.39 +1947-09-23,178.02,178.25,175.54,176.04,880000,176.04 +1947-09-22,178.12,178.76,177.36,178.02,670000,178.02 +1947-09-19,178.31,178.61,177.03,178.12,750000,178.12 +1947-09-18,178.73,179.27,177.68,178.31,940000,178.31 +1947-09-17,176.86,179.37,176.86,178.73,1260000,178.73 +1947-09-16,175.30,177.01,174.73,176.70,740000,176.70 +1947-09-15,175.92,175.99,174.82,175.30,500000,175.30 +1947-09-12,176.16,176.67,174.98,175.92,600000,175.92 +1947-09-11,176.24,177.11,175.31,176.16,800000,176.16 +1947-09-10,175.32,176.61,174.70,176.24,740000,176.24 +1947-09-09,175.14,176.07,174.02,175.32,750000,175.32 +1947-09-08,176.97,176.97,174.79,175.14,830000,175.14 +1947-09-05,177.27,177.51,175.69,177.13,720000,177.13 +1947-09-04,178.84,178.84,176.57,177.27,870000,177.27 +1947-09-03,179.81,180.08,178.55,179.09,650000,179.09 +1947-09-02,178.85,180.56,178.75,179.81,650000,179.81 +1947-08-29,177.70,179.15,177.63,178.85,580000,178.85 +1947-08-28,177.88,178.64,177.22,177.70,580000,177.70 +1947-08-27,177.73,178.24,177.14,177.88,480000,177.88 +1947-08-26,177.57,178.05,176.54,177.73,620000,177.73 +1947-08-25,179.74,179.78,177.33,177.57,810000,177.57 +1947-08-22,179.42,180.29,179.34,179.74,580000,179.74 +1947-08-21,179.01,179.77,178.50,179.42,580000,179.42 +1947-08-20,179.75,180.10,178.76,179.01,600000,179.01 +1947-08-19,180.44,180.64,179.23,179.75,600000,179.75 +1947-08-18,181.04,181.43,179.98,180.44,710000,180.44 +1947-08-15,179.87,181.58,179.44,181.04,880000,181.04 +1947-08-14,179.80,180.43,178.64,179.87,690000,179.87 +1947-08-13,179.94,180.71,179.17,179.80,690000,179.80 +1947-08-12,179.14,180.76,179.14,179.94,690000,179.94 +1947-08-11,180.13,180.16,178.22,178.98,720000,178.98 +1947-08-08,181.99,181.99,179.77,180.13,790000,180.13 +1947-08-07,182.35,182.57,181.03,182.11,660000,182.11 +1947-08-06,183.08,183.48,181.85,182.35,660000,182.35 +1947-08-05,182.51,184.05,182.27,183.08,750000,183.08 +1947-08-04,183.69,183.69,182.01,182.51,730000,182.51 +1947-08-01,183.18,184.38,182.35,183.81,770000,183.81 +1947-07-31,181.17,183.56,181.17,183.18,840000,183.18 +1947-07-30,182.05,182.33,179.77,180.91,1170000,180.91 +1947-07-29,184.95,185.28,181.47,182.05,1390000,182.05 +1947-07-28,186.38,187.51,184.76,184.95,1090000,184.95 +1947-07-25,186.85,187.66,185.59,186.38,1150000,186.38 +1947-07-24,185.08,187.36,185.08,186.85,1570000,186.85 +1947-07-23,183.86,185.59,183.86,184.95,1070000,184.95 +1947-07-22,183.52,184.41,182.73,183.78,780000,183.78 +1947-07-21,184.60,184.86,183.02,183.52,850000,183.52 +1947-07-18,183.83,184.87,182.51,184.60,920000,184.60 +1947-07-17,185.46,185.92,183.43,183.83,1110000,183.83 +1947-07-16,185.38,186.23,184.05,185.46,1070000,185.46 +1947-07-15,185.60,186.24,184.23,185.38,1180000,185.38 +1947-07-14,184.77,187.15,184.64,185.60,1660000,185.60 +1947-07-11,183.14,185.52,183.14,184.77,1590000,184.77 +1947-07-10,181.72,183.24,180.82,182.80,1020000,182.80 +1947-07-09,182.66,183.29,181.12,181.72,1040000,181.72 +1947-07-08,182.04,183.74,181.53,182.66,1390000,182.66 +1947-07-07,181.73,182.61,180.62,182.04,1050000,182.04 +1947-07-03,179.88,182.07,179.18,181.73,1250000,181.73 +1947-07-02,180.33,181.17,179.33,179.88,1180000,179.88 +1947-07-01,177.48,180.42,177.48,180.33,1090000,180.33 +1947-06-30,176.56,177.66,175.82,177.30,670000,177.30 +1947-06-27,176.58,177.20,175.77,176.56,650000,176.56 +1947-06-26,175.73,177.15,175.44,176.58,820000,176.58 +1947-06-25,174.54,176.19,173.93,175.73,830000,175.73 +1947-06-24,177.44,177.55,174.13,174.54,1090000,174.54 +1947-06-23,176.44,178.08,176.22,177.44,950000,177.44 +1947-06-20,176.14,177.52,175.54,176.44,1130000,176.44 +1947-06-19,174.94,176.81,174.43,176.14,1010000,176.14 +1947-06-18,174.98,176.42,174.25,174.94,910000,174.94 +1947-06-17,175.81,176.11,174.28,174.98,670000,174.98 +1947-06-16,175.49,177.23,174.26,175.81,990000,175.81 +1947-06-13,173.78,176.02,173.26,175.49,960000,175.49 +1947-06-12,174.68,175.30,173.24,173.78,1040000,173.78 +1947-06-11,171.50,174.78,171.50,174.68,1350000,174.68 +1947-06-10,169.88,171.36,169.10,171.10,650000,171.10 +1947-06-09,170.28,170.71,169.26,169.88,550000,169.88 +1947-06-06,169.41,170.62,168.54,170.28,660000,170.28 +1947-06-05,169.56,170.16,168.90,169.41,520000,169.41 +1947-06-04,170.35,171.35,169.16,169.56,820000,169.56 +1947-06-03,168.00,170.69,168.00,170.35,690000,170.35 +1947-06-02,168.66,168.66,167.43,168.00,520000,168.00 +1947-05-29,168.06,169.78,168.06,169.25,900000,169.25 +1947-05-28,166.64,168.90,166.64,168.06,890000,168.06 +1947-05-27,166.29,166.53,164.59,166.17,660000,166.17 +1947-05-26,166.97,167.22,165.86,166.29,540000,166.29 +1947-05-23,166.73,167.68,166.06,166.95,680000,166.95 +1947-05-22,165.81,167.56,165.81,166.73,950000,166.73 +1947-05-21,163.59,166.03,162.98,165.77,1030000,165.77 +1947-05-20,163.55,164.81,162.99,163.59,920000,163.59 +1947-05-19,163.21,164.43,161.38,163.55,1860000,163.55 +1947-05-16,167.88,168.02,164.46,164.96,1430000,164.96 +1947-05-15,166.96,168.42,166.96,167.88,770000,167.88 +1947-05-14,167.34,167.34,165.93,166.68,1050000,166.68 +1947-05-13,169.17,169.17,167.07,167.34,1210000,167.34 +1947-05-12,171.67,171.69,169.76,169.80,700000,169.80 +1947-05-09,171.56,172.21,170.52,171.54,720000,171.54 +1947-05-08,172.49,172.87,171.20,171.56,670000,171.56 +1947-05-07,172.77,173.14,172.08,172.49,600000,172.49 +1947-05-06,173.83,173.83,171.89,172.77,750000,172.77 +1947-05-05,174.00,175.08,173.58,174.21,740000,174.21 +1947-05-02,171.91,174.45,171.85,173.45,950000,173.45 +1947-05-01,170.64,172.65,170.62,171.91,920000,171.91 +1947-04-30,168.76,170.85,168.76,170.64,780000,170.64 +1947-04-29,168.85,169.47,167.42,168.70,840000,168.70 +1947-04-28,169.13,170.00,168.56,168.85,590000,168.85 +1947-04-25,170.19,170.38,168.60,168.93,780000,168.93 +1947-04-24,170.87,171.20,169.81,170.19,620000,170.19 +1947-04-23,170.94,171.71,169.92,170.87,700000,170.87 +1947-04-22,169.50,171.25,169.24,170.94,890000,170.94 +1947-04-21,169.32,171.47,169.32,169.50,1160000,169.50 +1947-04-18,168.01,168.68,166.49,166.77,970000,166.77 +1947-04-17,168.22,168.91,167.49,168.01,760000,168.01 +1947-04-16,166.82,168.85,166.60,168.22,900000,168.22 +1947-04-15,166.69,168.09,165.39,166.82,1450000,166.82 +1947-04-14,170.42,170.42,166.17,166.69,2200000,166.69 +1947-04-11,173.98,174.76,172.90,173.43,860000,173.43 +1947-04-10,173.44,174.78,173.44,173.98,680000,173.98 +1947-04-09,173.29,173.72,172.39,173.40,850000,173.40 +1947-04-08,175.39,175.52,172.68,173.29,1020000,173.29 +1947-04-07,176.16,176.16,174.82,175.39,630000,175.39 +1947-04-03,177.21,177.21,175.60,176.52,680000,176.52 +1947-04-02,177.45,178.28,176.87,177.32,680000,177.32 +1947-04-01,177.20,177.74,176.18,177.45,770000,177.45 +1947-03-31,178.36,178.58,177.01,177.20,720000,177.20 +1947-03-28,179.19,179.68,178.18,178.63,830000,178.63 +1947-03-27,177.67,179.51,177.67,179.19,1140000,179.19 +1947-03-26,175.29,177.31,174.61,177.10,940000,177.10 +1947-03-25,176.40,176.66,175.05,175.29,660000,175.29 +1947-03-24,177.27,177.61,176.18,176.40,580000,176.40 +1947-03-21,175.37,177.12,175.37,176.90,710000,176.90 +1947-03-20,175.78,176.06,174.76,175.37,630000,175.37 +1947-03-19,175.11,176.90,175.11,175.78,760000,175.78 +1947-03-18,173.35,175.22,173.26,174.95,660000,174.95 +1947-03-17,172.53,174.15,172.53,173.35,640000,173.35 +1947-03-14,173.95,173.95,171.94,172.58,820000,172.58 +1947-03-13,174.68,175.32,173.95,174.35,650000,174.35 +1947-03-12,173.83,175.62,173.43,174.68,950000,174.68 +1947-03-11,175.18,175.20,173.09,173.83,1190000,173.83 +1947-03-10,175.84,176.36,174.73,175.18,830000,175.18 +1947-03-07,181.19,181.19,176.87,177.05,1210000,177.05 +1947-03-06,181.16,182.48,180.60,181.88,1020000,181.88 +1947-03-05,179.77,181.56,179.32,181.16,990000,181.16 +1947-03-04,179.43,180.31,178.46,179.77,680000,179.77 +1947-03-03,179.29,179.84,178.29,179.43,690000,179.43 +1947-02-28,178.91,179.73,177.75,178.90,690000,178.90 +1947-02-27,177.67,179.35,177.67,178.91,960000,178.91 +1947-02-26,179.02,179.02,176.34,177.22,1350000,177.22 +1947-02-25,181.40,181.92,178.86,179.31,1280000,179.31 +1947-02-24,182.26,182.47,181.03,181.40,810000,181.40 +1947-02-21,181.22,182.76,181.22,182.26,860000,182.26 +1947-02-20,180.78,181.40,179.12,180.74,1000000,180.74 +1947-02-19,181.85,181.85,179.85,180.78,980000,180.78 +1947-02-18,182.20,182.91,181.26,181.93,870000,181.93 +1947-02-17,181.36,182.74,180.89,182.20,870000,182.20 +1947-02-14,182.18,182.23,180.62,181.64,940000,181.64 +1947-02-13,184.06,184.25,181.64,182.18,1340000,182.18 +1947-02-11,183.57,184.43,181.81,184.06,1300000,184.06 +1947-02-10,184.49,184.96,183.12,183.57,1300000,183.57 +1947-02-07,181.57,184.18,181.33,183.74,1980000,183.74 +1947-02-06,182.27,182.27,180.72,181.57,1120000,181.57 +1947-02-05,182.28,183.12,181.45,182.52,1180000,182.52 +1947-02-04,181.92,183.15,181.44,182.28,1350000,182.28 +1947-02-03,180.88,182.37,180.57,181.92,1360000,181.92 +1947-01-31,179.74,181.34,179.49,180.44,1310000,180.44 +1947-01-30,180.17,181.18,179.33,179.74,1340000,179.74 +1947-01-29,178.68,180.47,178.03,180.17,1530000,180.17 +1947-01-28,177.28,178.98,177.17,178.68,1080000,178.68 +1947-01-27,175.35,177.55,175.05,177.28,900000,177.28 +1947-01-24,175.13,175.94,174.49,175.49,950000,175.49 +1947-01-23,173.77,175.35,173.59,175.13,880000,175.13 +1947-01-22,173.51,174.19,172.81,173.77,670000,173.77 +1947-01-21,173.95,173.95,172.64,173.51,700000,173.51 +1947-01-20,175.46,175.46,173.69,174.06,810000,174.06 +1947-01-17,172.58,174.87,172.58,174.76,850000,174.76 +1947-01-16,172.10,172.39,170.13,171.95,1050000,171.95 +1947-01-15,172.63,173.46,171.70,172.10,770000,172.10 +1947-01-14,172.49,173.24,171.31,172.63,850000,172.63 +1947-01-13,174.50,174.50,170.99,172.49,1590000,172.49 +1947-01-10,178.43,178.84,176.59,177.43,1060000,177.43 +1947-01-09,178.06,179.06,177.94,178.43,720000,178.43 +1947-01-08,177.49,178.43,176.54,178.06,790000,178.06 +1947-01-07,178.43,179.25,177.12,177.49,980000,177.49 +1947-01-06,176.99,179.04,176.99,178.43,980000,178.43 +1947-01-03,176.39,177.16,174.71,176.76,880000,176.76 +1947-01-02,177.20,177.83,176.04,176.39,750000,176.39 +1946-12-31,176.23,177.89,175.79,177.20,1820000,177.20 +1946-12-30,175.77,177.00,175.15,176.23,1400000,176.23 +1946-12-27,175.21,176.17,173.88,175.66,1290000,175.66 +1946-12-26,176.79,176.79,174.54,175.21,1150000,175.21 +1946-12-24,177.36,177.51,176.25,176.95,950000,176.95 +1946-12-23,178.32,178.54,176.85,177.36,1170000,177.36 +1946-12-20,177.29,178.58,176.82,177.85,1470000,177.85 +1946-12-19,175.28,178.06,175.28,177.29,1740000,177.29 +1946-12-18,174.47,175.62,173.62,174.84,1110000,174.84 +1946-12-17,174.85,175.42,173.93,174.47,1020000,174.47 +1946-12-16,174.73,175.93,174.18,174.85,1010000,174.85 +1946-12-13,173.91,174.41,172.57,173.90,1000000,173.90 +1946-12-12,175.75,175.75,173.17,173.91,1060000,173.91 +1946-12-11,175.92,176.67,174.80,176.07,1230000,176.07 +1946-12-10,175.76,177.21,174.84,175.92,1730000,175.92 +1946-12-09,173.43,176.48,173.43,175.76,2840000,175.76 +1946-12-06,169.95,170.92,169.20,170.39,1060000,170.39 +1946-12-05,170.33,170.66,168.63,169.95,1000000,169.95 +1946-12-04,168.05,170.98,167.48,170.33,1440000,170.33 +1946-12-03,167.50,168.60,166.20,168.05,960000,168.05 +1946-12-02,169.07,169.07,166.74,167.50,810000,167.50 +1946-11-29,168.34,170.25,168.23,169.78,1010000,169.78 +1946-11-27,167.35,169.18,167.35,168.34,1070000,168.34 +1946-11-26,165.31,167.81,165.31,166.94,1080000,166.94 +1946-11-25,165.10,165.99,164.37,165.23,790000,165.23 +1946-11-22,164.12,164.49,162.29,163.55,1200000,163.55 +1946-11-21,165.98,165.98,163.50,164.12,1380000,164.12 +1946-11-20,167.88,167.99,166.20,166.91,970000,166.91 +1946-11-19,167.91,168.35,166.28,167.88,910000,167.88 +1946-11-18,169.03,169.11,167.23,167.91,770000,167.91 +1946-11-15,170.88,171.48,168.89,169.67,930000,169.67 +1946-11-14,169.84,171.45,169.16,170.88,960000,170.88 +1946-11-13,170.52,170.52,168.02,169.84,1050000,169.84 +1946-11-12,171.80,173.48,170.41,170.87,1370000,170.87 +1946-11-08,169.75,171.78,169.75,170.79,1000000,170.79 +1946-11-07,168.88,170.59,167.50,169.60,1140000,169.60 +1946-11-06,174.40,175.00,168.38,168.88,2000000,168.88 +1946-11-04,173.03,175.78,173.03,174.40,1830000,174.40 +1946-11-01,169.50,172.33,169.50,171.76,1670000,171.76 +1946-10-31,164.71,169.68,164.71,169.15,1700000,169.15 +1946-10-30,164.21,165.32,160.49,164.20,1940000,164.20 +1946-10-29,166.04,166.62,163.98,164.21,1240000,164.21 +1946-10-28,168.44,168.48,165.98,166.04,1000000,166.04 +1946-10-25,169.96,169.96,167.84,168.76,920000,168.76 +1946-10-24,170.67,170.90,169.14,169.98,860000,169.98 +1946-10-23,171.25,171.27,168.68,170.67,950000,170.67 +1946-10-22,171.93,172.34,170.16,171.25,870000,171.25 +1946-10-21,171.34,172.59,170.63,171.93,840000,171.93 +1946-10-18,171.76,172.51,170.32,171.65,920000,171.65 +1946-10-17,173.61,173.61,170.47,171.76,1310000,171.76 +1946-10-16,175.94,177.05,174.03,174.35,1650000,174.35 +1946-10-15,173.05,176.52,173.05,175.94,2370000,175.94 +1946-10-14,167.97,170.60,167.53,169.86,1290000,169.86 +1946-10-11,165.60,168.59,165.60,167.97,1470000,167.97 +1946-10-10,163.12,165.53,161.61,164.94,2220000,164.94 +1946-10-09,166.53,166.53,162.80,163.12,2020000,163.12 +1946-10-08,168.87,170.00,167.00,167.34,1260000,167.34 +1946-10-07,169.00,169.83,167.82,168.87,950000,168.87 +1946-10-04,171.13,171.13,169.06,169.80,920000,169.80 +1946-10-03,172.72,173.10,171.13,171.64,920000,171.64 +1946-10-02,171.47,173.39,171.40,172.72,960000,172.72 +1946-10-01,172.42,172.42,170.43,171.47,890000,171.47 +1946-09-30,173.56,173.56,170.44,172.42,1060000,172.42 +1946-09-27,174.96,175.18,173.35,174.09,980000,174.09 +1946-09-26,172.95,175.45,171.59,174.96,1300000,174.96 +1946-09-25,169.43,173.44,169.43,172.95,1800000,172.95 +1946-09-24,166.56,169.75,164.21,168.89,2230000,168.89 +1946-09-23,169.06,172.15,166.09,166.56,2120000,166.56 +1946-09-20,165.17,170.13,164.77,169.06,2820000,169.06 +1946-09-19,169.05,169.05,164.09,165.17,2890000,165.17 +1946-09-18,173.43,173.43,168.40,169.07,2100000,169.07 +1946-09-17,174.45,174.82,172.13,173.66,1390000,173.66 +1946-09-16,173.39,176.26,173.02,174.45,1490000,174.45 +1946-09-13,171.70,173.99,170.87,173.39,1720000,173.39 +1946-09-12,172.13,173.34,170.00,171.70,2010000,171.70 +1946-09-11,167.80,173.20,167.80,172.13,2870000,172.13 +1946-09-10,172.03,172.89,166.56,167.30,3300000,167.30 +1946-09-09,177.52,177.52,170.53,172.03,2840000,172.03 +1946-09-06,181.18,181.67,178.43,179.96,1670000,179.96 +1946-09-05,177.96,181.81,177.96,181.18,2360000,181.18 +1946-09-04,178.68,178.93,173.64,176.72,3620000,176.72 +1946-09-03,188.21,188.21,177.49,178.68,2910000,178.68 +1946-08-30,190.47,190.49,187.44,189.19,1170000,189.19 +1946-08-29,190.03,192.50,189.71,190.47,1060000,190.47 +1946-08-28,191.04,191.28,187.26,190.03,2100000,190.03 +1946-08-27,195.46,195.46,190.03,191.04,1790000,191.04 +1946-08-26,197.75,198.97,196.47,196.99,760000,196.99 +1946-08-23,196.91,198.69,196.91,197.75,770000,197.75 +1946-08-22,198.05,198.05,194.53,196.66,1540000,196.66 +1946-08-21,201.27,202.49,199.70,200.00,840000,200.00 +1946-08-20,200.22,201.54,200.22,201.27,700000,201.27 +1946-08-19,200.69,201.18,198.90,200.19,660000,200.19 +1946-08-16,201.38,201.38,200.14,200.69,690000,200.69 +1946-08-15,203.81,203.81,202.30,202.49,620000,202.49 +1946-08-14,204.52,205.01,203.59,203.99,800000,203.99 +1946-08-13,203.36,204.94,203.28,204.52,930000,204.52 +1946-08-12,203.57,203.90,202.81,203.36,700000,203.36 +1946-08-09,204.10,204.46,203.16,203.57,910000,203.57 +1946-08-08,203.13,204.56,203.13,204.10,890000,204.10 +1946-08-07,201.35,203.08,201.18,202.96,880000,202.96 +1946-08-06,201.93,202.05,200.47,201.35,730000,201.35 +1946-08-05,202.82,203.03,201.39,201.93,700000,201.93 +1946-08-02,202.26,203.38,201.70,202.82,750000,202.82 +1946-08-01,201.56,202.97,201.32,202.26,830000,202.26 +1946-07-31,199.40,202.15,198.78,201.56,1020000,201.56 +1946-07-30,198.22,200.13,198.15,199.40,810000,199.40 +1946-07-29,197.63,199.11,197.46,198.22,720000,198.22 +1946-07-26,196.47,198.53,196.47,197.63,980000,197.63 +1946-07-25,195.37,197.58,195.28,196.25,900000,196.25 +1946-07-24,195.22,196.30,194.33,195.37,1170000,195.37 +1946-07-23,199.83,199.83,194.79,195.22,1690000,195.22 +1946-07-22,201.13,201.60,199.89,200.54,690000,200.54 +1946-07-19,201.86,202.06,200.68,201.13,650000,201.13 +1946-07-18,202.25,203.46,201.47,201.86,730000,201.86 +1946-07-17,200.85,202.79,200.85,202.25,920000,202.25 +1946-07-16,200.86,201.44,199.48,200.71,1180000,200.71 +1946-07-15,204.20,204.42,200.31,200.86,1170000,200.86 +1946-07-12,205.49,205.49,202.85,204.20,1130000,204.20 +1946-07-11,207.52,207.52,205.96,206.30,990000,206.30 +1946-07-10,207.43,208.17,206.84,207.56,910000,207.56 +1946-07-09,206.62,207.91,206.16,207.43,790000,207.43 +1946-07-08,206.72,207.40,206.37,206.62,680000,206.62 +1946-07-05,207.06,207.40,206.47,206.72,490000,206.72 +1946-07-03,206.64,207.50,206.36,207.06,650000,207.06 +1946-07-02,206.47,207.43,205.56,206.64,760000,206.64 +1946-07-01,205.79,208.59,205.79,206.47,1570000,206.47 +1946-06-28,205.03,206.41,204.32,205.62,1010000,205.62 +1946-06-27,202.83,205.68,202.83,205.03,1200000,205.03 +1946-06-26,202.54,202.98,200.52,202.10,1020000,202.10 +1946-06-25,203.56,203.83,202.11,202.54,880000,202.54 +1946-06-24,203.09,204.65,202.68,203.56,990000,203.56 +1946-06-21,200.52,203.42,198.98,203.09,1340000,203.09 +1946-06-20,205.65,205.65,200.31,200.52,1310000,200.52 +1946-06-19,206.93,206.93,205.24,205.74,1010000,205.74 +1946-06-18,210.01,210.01,207.42,207.71,1150000,207.71 +1946-06-17,210.36,211.16,209.65,210.13,1020000,210.13 +1946-06-14,210.56,211.46,209.73,210.36,980000,210.36 +1946-06-13,209.26,211.25,209.26,210.56,1150000,210.56 +1946-06-12,209.05,209.34,207.52,208.96,970000,208.96 +1946-06-11,210.68,211.14,208.92,209.05,1090000,209.05 +1946-06-10,209.96,211.44,209.73,210.68,1010000,210.68 +1946-06-07,209.50,210.40,208.63,209.96,1020000,209.96 +1946-06-06,209.78,210.03,208.33,209.50,980000,209.50 +1946-06-05,210.03,211.42,209.30,209.78,1170000,209.78 +1946-06-04,211.37,211.37,209.03,210.03,1210000,210.03 +1946-06-03,212.28,212.48,210.90,211.47,1210000,211.47 +1946-05-31,212.50,213.29,210.97,212.28,1310000,212.28 +1946-05-29,211.70,213.36,210.34,212.50,2000000,212.50 +1946-05-28,209.42,212.18,209.29,211.70,2220000,211.70 +1946-05-27,208.41,210.34,208.41,209.42,1730000,209.42 +1946-05-24,208.05,208.26,205.96,207.69,1210000,207.69 +1946-05-23,208.00,209.15,207.21,208.05,1350000,208.05 +1946-05-22,207.25,208.38,207.00,208.00,1610000,208.00 +1946-05-21,207.13,208.53,206.58,207.25,1250000,207.25 +1946-05-20,205.80,207.42,205.05,207.13,910000,207.13 +1946-05-17,206.17,207.04,205.50,206.56,980000,206.56 +1946-05-16,205.07,206.53,204.38,206.17,1140000,206.17 +1946-05-15,206.69,206.82,204.23,205.07,1020000,205.07 +1946-05-14,207.34,207.47,205.88,206.69,1140000,206.69 +1946-05-13,208.06,208.40,206.63,207.34,1250000,207.34 +1946-05-10,204.09,207.84,204.09,207.10,1820000,207.10 +1946-05-09,204.17,204.68,202.37,204.07,1070000,204.07 +1946-05-08,203.51,205.05,202.35,204.17,1210000,204.17 +1946-05-07,200.65,203.97,199.94,203.51,1350000,203.51 +1946-05-06,202.00,202.00,199.26,200.65,1080000,200.65 +1946-05-03,204.31,204.31,202.53,203.25,1020000,203.25 +1946-05-02,205.67,206.25,204.47,204.98,1000000,204.98 +1946-05-01,206.59,206.59,205.07,205.67,980000,205.67 +1946-04-30,206.09,207.23,205.53,206.77,1000000,206.77 +1946-04-29,206.13,206.97,205.07,206.09,1000000,206.09 +1946-04-26,204.60,205.21,203.13,204.59,1210000,204.59 +1946-04-25,205.60,205.60,203.09,204.60,1390000,204.60 +1946-04-24,207.31,208.12,205.81,206.13,1500000,206.13 +1946-04-23,207.99,208.19,206.01,207.31,1380000,207.31 +1946-04-22,208.06,208.94,207.33,207.99,1210000,207.99 +1946-04-18,207.93,209.10,207.27,208.31,1500000,208.31 +1946-04-17,207.97,209.36,206.97,207.93,1530000,207.93 +1946-04-16,206.28,208.51,206.28,207.97,1460000,207.97 +1946-04-15,206.02,206.36,204.57,206.01,1170000,206.01 +1946-04-12,206.93,207.89,206.16,206.96,1240000,206.96 +1946-04-11,207.90,207.90,206.05,206.93,1210000,206.93 +1946-04-10,208.03,208.93,207.20,208.02,1580000,208.02 +1946-04-09,205.43,208.54,205.43,208.03,1710000,208.03 +1946-04-08,204.98,206.00,204.31,205.43,1250000,205.43 +1946-04-05,204.77,205.18,202.88,204.04,1660000,204.04 +1946-04-04,203.25,205.79,203.25,204.77,2130000,204.77 +1946-04-03,199.83,203.29,199.81,203.12,1560000,203.12 +1946-04-02,199.19,200.16,198.98,199.83,1040000,199.83 +1946-04-01,199.75,199.97,198.47,199.19,1050000,199.19 +1946-03-29,198.23,200.36,198.23,199.56,1230000,199.56 +1946-03-28,198.73,198.92,197.27,198.18,900000,198.18 +1946-03-27,199.81,199.81,197.83,198.73,1000000,198.73 +1946-03-26,200.55,201.85,200.04,200.56,1440000,200.56 +1946-03-25,198.27,200.80,198.27,200.55,1640000,200.55 +1946-03-22,196.70,198.20,195.92,197.19,1180000,197.19 +1946-03-21,195.53,197.00,195.10,196.70,1210000,196.70 +1946-03-20,194.09,195.90,193.63,195.53,1280000,195.53 +1946-03-19,195.33,196.23,193.77,194.09,1050000,194.09 +1946-03-18,194.05,195.86,194.05,195.33,1070000,195.33 +1946-03-15,189.98,192.14,189.71,191.66,1060000,191.66 +1946-03-14,190.36,191.76,189.32,189.98,1090000,189.98 +1946-03-13,192.87,192.87,188.86,190.36,1620000,190.36 +1946-03-12,192.89,193.86,192.39,193.52,720000,193.52 +1946-03-11,194.45,194.73,192.34,192.89,880000,192.89 +1946-03-08,192.08,194.40,192.08,193.70,970000,193.70 +1946-03-07,190.30,191.93,190.30,191.50,900000,191.50 +1946-03-06,190.49,190.77,189.39,190.28,890000,190.28 +1946-03-05,188.91,191.16,188.91,190.49,1050000,190.49 +1946-03-04,188.73,188.87,186.77,188.46,970000,188.46 +1946-03-01,190.09,190.58,188.90,189.42,820000,189.42 +1946-02-28,189.06,190.64,188.19,190.09,1180000,190.09 +1946-02-27,187.34,189.56,187.34,189.06,1400000,189.06 +1946-02-26,187.23,188.09,184.05,186.02,2650000,186.02 +1946-02-25,194.04,194.04,186.87,187.23,2400000,187.23 +1946-02-21,193.05,196.30,193.05,195.62,1590000,195.62 +1946-02-20,195.06,195.06,191.17,192.38,2150000,192.38 +1946-02-19,200.42,200.42,194.90,196.13,2300000,196.13 +1946-02-18,204.13,204.13,200.84,201.63,1560000,201.63 +1946-02-15,201.06,203.56,201.06,203.09,1780000,203.09 +1946-02-14,198.74,201.18,198.45,199.75,1290000,199.75 +1946-02-13,200.81,200.81,197.65,198.74,1690000,198.74 +1946-02-11,202.30,202.72,200.59,201.14,1440000,201.14 +1946-02-08,205.09,205.60,203.62,204.38,1260000,204.38 +1946-02-07,205.48,205.73,203.63,205.09,1490000,205.09 +1946-02-06,206.61,207.24,205.15,205.48,1750000,205.48 +1946-02-05,205.84,206.84,204.55,206.61,1670000,206.61 +1946-02-04,206.97,207.49,205.05,205.84,1660000,205.84 +1946-02-01,204.67,206.06,203.69,205.79,1560000,205.79 +1946-01-31,204.84,205.22,203.07,204.67,1690000,204.67 +1946-01-30,205.35,206.59,203.37,204.84,2280000,204.84 +1946-01-29,204.62,206.49,203.75,205.35,2910000,205.35 +1946-01-28,202.10,205.50,202.10,204.62,3490000,204.62 +1946-01-25,200.04,200.13,198.17,199.50,1760000,199.50 +1946-01-24,198.84,200.86,198.68,200.04,2210000,200.04 +1946-01-23,197.35,199.48,197.20,198.84,2050000,198.84 +1946-01-22,196.63,198.00,195.63,197.35,1530000,197.35 +1946-01-21,198.03,198.03,195.52,196.63,1680000,196.63 +1946-01-18,203.49,203.70,200.78,202.18,3230000,202.18 +1946-01-17,203.81,205.03,202.95,203.49,2200000,203.49 +1946-01-16,202.97,204.50,201.93,203.81,2100000,203.81 +1946-01-15,201.93,204.02,201.73,202.97,2720000,202.97 +1946-01-14,200.25,202.59,200.25,201.93,2740000,201.93 +1946-01-11,199.16,200.86,198.67,200.04,2250000,200.04 +1946-01-10,197.33,199.78,197.17,199.16,2470000,199.16 +1946-01-09,195.16,198.40,195.16,197.33,2930000,197.33 +1946-01-08,192.04,194.98,192.04,194.65,2160000,194.65 +1946-01-07,191.47,192.40,190.87,191.77,1230000,191.77 +1946-01-04,191.25,191.81,190.27,190.90,1080000,190.90 +1946-01-03,191.66,191.97,189.77,191.25,1390000,191.25 +1946-01-02,192.65,192.65,191.15,191.66,1050000,191.66 +1945-12-31,192.84,193.47,192.07,192.91,1010000,192.91 +1945-12-28,192.31,192.95,191.58,192.43,1090000,192.43 +1945-12-27,192.76,193.89,191.76,192.31,1330000,192.31 +1945-12-26,191.59,193.45,191.59,192.76,1420000,192.76 +1945-12-21,189.36,189.67,187.51,189.07,940000,189.07 +1945-12-20,190.22,190.22,188.84,189.36,800000,189.36 +1945-12-19,190.98,191.43,190.11,190.62,980000,190.62 +1945-12-18,190.37,191.78,189.33,190.98,1360000,190.98 +1945-12-17,192.87,192.87,189.80,190.37,1990000,190.37 +1945-12-14,193.52,193.86,192.50,193.34,1130000,193.34 +1945-12-13,193.96,194.62,192.84,193.52,1220000,193.52 +1945-12-12,195.39,195.39,193.18,193.96,1680000,193.96 +1945-12-11,195.64,196.47,194.34,195.82,1690000,195.82 +1945-12-10,195.18,196.59,194.76,195.64,2140000,195.64 +1945-12-07,193.84,194.78,193.18,194.08,2050000,194.08 +1945-12-06,193.08,194.62,192.70,193.84,2290000,193.84 +1945-12-05,193.06,193.67,191.75,193.08,1860000,193.08 +1945-12-04,193.65,194.12,192.17,193.06,2310000,193.06 +1945-12-03,192.40,194.36,192.16,193.65,2610000,193.65 +1945-11-30,189.77,191.84,189.77,191.46,1820000,191.46 +1945-11-29,189.99,190.22,188.80,189.58,1750000,189.58 +1945-11-28,190.45,191.47,189.58,189.99,1800000,189.99 +1945-11-27,188.79,190.90,188.79,190.45,1830000,190.45 +1945-11-26,186.44,188.55,186.44,188.16,1530000,188.16 +1945-11-23,189.26,189.26,187.34,187.82,1350000,187.82 +1945-11-21,191.47,191.47,188.97,189.54,1910000,189.54 +1945-11-20,191.51,192.83,190.69,192.12,2180000,192.12 +1945-11-19,192.27,192.50,190.20,191.51,2020000,191.51 +1945-11-16,191.13,192.95,191.02,192.13,2340000,192.13 +1945-11-15,189.77,191.60,189.58,191.13,2010000,191.13 +1945-11-14,190.56,190.61,188.82,189.77,1610000,189.77 +1945-11-13,191.37,192.46,190.23,190.56,2500000,190.56 +1945-11-09,191.72,192.46,190.68,191.46,1830000,191.46 +1945-11-08,192.04,192.78,190.79,191.72,1960000,191.72 +1945-11-07,190.13,192.76,190.13,192.04,2380000,192.04 +1945-11-05,188.58,189.69,188.02,189.50,1650000,189.50 +1945-11-02,188.84,189.40,187.54,188.62,1840000,188.62 +1945-11-01,187.02,189.33,187.02,188.84,2210000,188.84 +1945-10-31,184.16,186.74,183.59,186.60,2060000,186.60 +1945-10-30,184.24,184.61,182.88,184.16,1170000,184.16 +1945-10-29,185.39,186.02,183.90,184.24,1260000,184.24 +1945-10-26,184.54,186.01,184.09,185.39,1300000,185.39 +1945-10-25,183.72,185.13,183.43,184.54,1230000,184.54 +1945-10-24,185.52,185.52,183.02,183.72,1370000,183.72 +1945-10-23,187.06,187.52,184.76,186.15,1370000,186.15 +1945-10-22,185.60,187.26,185.29,187.06,1140000,187.06 +1945-10-19,186.78,187.50,185.12,185.34,1730000,185.34 +1945-10-18,186.10,187.55,185.68,186.78,1670000,186.78 +1945-10-17,185.49,186.72,184.92,186.10,1800000,186.10 +1945-10-16,185.51,185.98,184.42,185.49,1630000,185.49 +1945-10-15,185.72,186.32,185.00,185.51,1630000,185.51 +1945-10-11,186.05,186.10,184.83,185.72,1560000,185.72 +1945-10-10,185.43,186.52,185.07,186.05,1700000,186.05 +1945-10-09,185.46,185.95,184.26,185.43,1640000,185.43 +1945-10-08,184.77,186.02,184.66,185.46,1780000,185.46 +1945-10-05,183.06,184.48,182.80,183.94,1420000,183.94 +1945-10-04,183.33,183.75,182.32,183.06,1340000,183.06 +1945-10-03,183.85,184.20,182.32,183.33,1430000,183.33 +1945-10-02,183.37,185.05,183.13,183.85,1800000,183.85 +1945-10-01,181.93,183.92,181.93,183.37,1990000,183.37 +1945-09-28,178.83,180.31,178.83,180.11,1380000,180.11 +1945-09-27,178.95,179.36,177.82,178.57,1060000,178.57 +1945-09-26,179.41,179.41,178.12,178.95,1040000,178.95 +1945-09-25,179.51,180.42,178.89,179.42,1190000,179.42 +1945-09-24,179.49,179.79,178.71,179.51,890000,179.51 +1945-09-21,180.22,180.80,178.87,179.69,1340000,179.69 +1945-09-20,179.51,180.72,178.92,180.22,1500000,180.22 +1945-09-19,178.32,180.06,178.32,179.51,1690000,179.51 +1945-09-18,175.19,177.76,175.19,177.58,1160000,177.58 +1945-09-17,175.11,175.11,173.30,174.75,900000,174.75 +1945-09-14,178.59,178.59,177.20,177.74,1020000,177.74 +1945-09-13,178.99,179.33,178.21,178.59,1170000,178.59 +1945-09-12,177.77,179.33,177.55,178.99,1340000,178.99 +1945-09-11,177.03,178.04,176.33,177.77,1130000,177.77 +1945-09-10,176.99,177.78,176.62,177.03,1110000,177.03 +1945-09-07,175.96,177.57,175.76,176.61,1330000,176.61 +1945-09-06,174.24,176.14,174.17,175.96,1380000,175.96 +1945-09-05,173.90,174.49,173.23,174.24,980000,174.24 +1945-09-04,174.29,174.86,173.52,173.90,1070000,173.90 +1945-08-31,172.73,174.54,172.73,174.29,1110000,174.29 +1945-08-30,172.09,172.58,171.46,172.37,890000,172.37 +1945-08-29,172.32,172.51,171.34,172.09,920000,172.09 +1945-08-28,171.96,172.93,171.43,172.32,1260000,172.32 +1945-08-27,170.11,172.26,170.11,171.96,1570000,171.96 +1945-08-24,167.64,170.04,167.54,169.89,1320000,169.89 +1945-08-23,164.99,167.94,164.99,167.64,1190000,167.64 +1945-08-22,163.38,164.94,163.35,164.54,760000,164.54 +1945-08-21,163.11,163.88,162.28,163.38,1160000,163.38 +1945-08-20,164.38,164.82,162.68,163.11,1320000,163.11 +1945-08-17,164.79,166.08,164.01,164.38,1210000,164.38 +1945-08-14,164.11,165.22,164.04,164.79,910000,164.79 +1945-08-13,165.02,165.02,162.81,164.11,970000,164.11 +1945-08-10,164.55,166.54,164.07,165.14,1690000,165.14 +1945-08-09,161.83,164.82,161.14,164.55,1460000,164.55 +1945-08-08,161.55,162.74,161.17,161.83,700000,161.83 +1945-08-07,162.87,162.87,161.16,161.55,980000,161.55 +1945-08-06,163.06,163.69,162.66,163.19,490000,163.19 +1945-08-03,162.49,163.23,162.27,163.06,510000,163.06 +1945-08-02,162.72,163.08,161.82,162.49,600000,162.49 +1945-08-01,162.88,163.21,162.27,162.72,650000,162.72 +1945-07-31,162.21,163.36,162.21,162.88,870000,162.88 +1945-07-30,160.92,162.51,160.88,162.09,910000,162.09 +1945-07-27,160.91,161.34,159.95,160.92,920000,160.92 +1945-07-26,162.44,162.91,160.71,160.91,1440000,160.91 +1945-07-25,162.10,162.63,162.10,162.44,620000,162.44 +1945-07-24,161.65,162.00,160.98,161.73,640000,161.73 +1945-07-23,162.50,162.82,161.49,161.65,760000,161.65 +1945-07-20,162.81,163.22,162.04,162.50,650000,162.50 +1945-07-19,161.95,163.39,161.95,162.81,780000,162.81 +1945-07-18,162.43,162.87,160.62,161.69,1450000,161.69 +1945-07-17,165.22,165.22,162.29,162.43,1560000,162.43 +1945-07-16,166.67,167.08,165.46,165.82,790000,165.82 +1945-07-13,166.85,167.41,166.29,166.67,960000,166.67 +1945-07-12,166.59,167.24,165.51,166.85,970000,166.85 +1945-07-11,167.09,167.49,166.16,166.59,810000,166.59 +1945-07-10,166.60,167.79,166.60,167.09,940000,167.09 +1945-07-09,164.67,166.76,164.64,166.55,800000,166.55 +1945-07-06,164.26,165.07,163.47,164.67,960000,164.67 +1945-07-05,165.36,165.36,164.02,164.26,920000,164.26 +1945-07-03,165.91,166.39,165.35,165.73,860000,165.73 +1945-07-02,165.39,166.75,165.39,165.91,1380000,165.91 +1945-06-29,166.22,166.24,163.78,164.57,2020000,164.57 +1945-06-28,168.78,168.80,165.70,166.22,2940000,166.22 +1945-06-27,168.92,169.27,168.36,168.78,1690000,168.78 +1945-06-26,168.59,169.55,168.40,168.92,2140000,168.92 +1945-06-25,168.24,168.90,167.97,168.59,1890000,168.59 +1945-06-22,168.14,168.69,167.48,167.90,1850000,167.90 +1945-06-21,167.74,168.84,167.53,168.14,2100000,168.14 +1945-06-20,167.23,168.01,166.81,167.74,1680000,167.74 +1945-06-19,166.94,167.80,166.50,167.23,1560000,167.23 +1945-06-18,167.54,167.72,166.67,166.94,1930000,166.94 +1945-06-15,167.08,168.10,166.92,167.64,1900000,167.64 +1945-06-14,166.75,167.47,166.51,167.08,1850000,167.08 +1945-06-13,166.39,167.10,166.07,166.75,1590000,166.75 +1945-06-12,166.25,166.78,165.89,166.39,1320000,166.39 +1945-06-11,166.85,167.20,166.09,166.25,1490000,166.25 +1945-06-08,167.16,167.67,166.54,166.83,1710000,166.83 +1945-06-07,167.29,167.63,166.58,167.16,1300000,167.16 +1945-06-06,168.13,168.16,166.58,167.29,1520000,167.29 +1945-06-05,168.08,168.80,167.54,168.13,1510000,168.13 +1945-06-04,167.96,168.49,167.36,168.08,1540000,168.08 +1945-06-01,168.30,168.51,167.47,168.08,1430000,168.08 +1945-05-31,169.08,169.41,167.90,168.30,1220000,168.30 +1945-05-29,168.21,169.53,168.06,169.08,1600000,169.08 +1945-05-28,166.45,168.75,166.45,168.21,1570000,168.21 +1945-05-25,164.41,165.55,164.38,165.12,1300000,165.12 +1945-05-24,164.50,164.81,163.73,164.41,960000,164.41 +1945-05-23,165.72,165.72,163.80,164.50,1310000,164.50 +1945-05-22,165.99,166.61,165.47,165.91,1050000,165.91 +1945-05-21,166.44,166.93,165.61,165.99,1080000,165.99 +1945-05-18,165.20,166.47,165.19,166.17,1430000,166.17 +1945-05-17,164.50,165.85,164.23,165.20,1370000,165.20 +1945-05-16,164.00,165.07,163.76,164.50,1210000,164.50 +1945-05-15,163.45,164.31,163.07,164.00,1010000,164.00 +1945-05-14,163.96,164.41,163.16,163.45,980000,163.45 +1945-05-11,163.09,163.82,162.60,163.21,1070000,163.21 +1945-05-10,164.56,164.56,162.68,163.09,1510000,163.09 +1945-05-09,166.42,166.72,165.06,165.24,1490000,165.24 +1945-05-08,166.53,167.25,165.62,166.42,1580000,166.42 +1945-05-07,166.71,167.25,165.76,166.53,1950000,166.53 +1945-05-04,165.84,166.61,165.40,166.27,1410000,166.27 +1945-05-03,165.03,166.02,164.77,165.84,1340000,165.84 +1945-05-02,165.09,165.38,164.45,165.03,1140000,165.03 +1945-05-01,165.44,166.18,164.49,165.09,1530000,165.09 +1945-04-30,164.71,165.71,164.10,165.44,1500000,165.44 +1945-04-27,163.22,164.27,163.12,163.94,1360000,163.94 +1945-04-26,163.78,163.78,162.06,163.22,1370000,163.22 +1945-04-25,164.31,164.46,163.17,163.91,1420000,163.91 +1945-04-24,163.58,164.62,163.33,164.31,1830000,164.31 +1945-04-23,163.20,164.08,162.88,163.58,1380000,163.58 +1945-04-20,163.18,163.67,162.46,162.83,1130000,162.83 +1945-04-19,163.83,164.45,162.72,163.18,1680000,163.18 +1945-04-18,162.60,164.17,162.35,163.83,1710000,163.83 +1945-04-17,162.43,163.72,162.15,162.60,2070000,162.60 +1945-04-16,160.57,162.76,160.57,162.43,2500000,162.43 +1945-04-13,158.48,159.95,157.73,159.75,1800000,159.75 +1945-04-12,158.06,159.14,157.89,158.48,1060000,158.48 +1945-04-11,156.59,158.17,156.59,158.06,1060000,158.06 +1945-04-10,156.10,156.82,155.54,156.51,760000,156.51 +1945-04-09,156.33,156.71,155.91,156.10,570000,156.10 +1945-04-06,154.99,155.95,154.70,155.85,610000,155.85 +1945-04-05,155.96,156.26,154.77,154.99,680000,154.99 +1945-04-04,156.20,156.41,155.69,155.96,520000,155.96 +1945-04-03,155.94,156.97,155.94,156.20,730000,156.20 +1945-04-02,154.51,156.05,154.51,155.86,650000,155.86 +1945-03-29,153.79,154.46,153.48,154.06,660000,154.06 +1945-03-28,152.89,154.08,152.89,153.79,720000,153.79 +1945-03-27,152.27,153.51,151.77,152.78,1110000,152.78 +1945-03-26,153.62,153.62,151.74,152.27,1390000,152.27 +1945-03-23,155.07,156.00,154.68,155.45,680000,155.45 +1945-03-22,155.30,155.73,154.82,155.07,830000,155.07 +1945-03-21,156.10,156.10,154.08,155.30,1340000,155.30 +1945-03-20,157.71,157.71,156.14,156.37,920000,156.37 +1945-03-19,158.75,158.88,157.36,157.89,1070000,157.89 +1945-03-16,158.53,159.42,158.41,158.92,880000,158.92 +1945-03-15,157.84,158.95,157.84,158.53,800000,158.53 +1945-03-14,157.59,158.16,157.29,157.83,750000,157.83 +1945-03-13,157.88,158.24,156.94,157.59,760000,157.59 +1945-03-12,157.33,158.38,157.33,157.88,920000,157.88 +1945-03-09,158.29,158.29,155.96,156.34,2060000,156.34 +1945-03-08,161.34,161.34,158.31,158.86,1860000,158.86 +1945-03-07,161.50,162.21,160.96,161.52,1400000,161.52 +1945-03-06,160.68,162.22,160.56,161.50,1690000,161.50 +1945-03-05,159.71,160.85,159.56,160.68,1190000,160.68 +1945-03-02,160.72,160.76,159.63,159.95,1770000,159.95 +1945-03-01,160.40,161.15,160.11,160.72,2090000,160.72 +1945-02-28,159.51,160.85,159.51,160.40,1960000,160.40 +1945-02-27,158.41,159.47,158.23,159.30,1190000,159.30 +1945-02-26,158.69,158.91,157.45,158.41,1260000,158.41 +1945-02-23,159.66,159.80,158.55,158.99,1320000,158.99 +1945-02-21,159.57,160.17,158.04,159.66,1720000,159.66 +1945-02-20,159.01,159.86,158.69,159.57,1770000,159.57 +1945-02-19,158.23,159.54,157.92,159.01,1880000,159.01 +1945-02-16,158.24,158.82,157.57,158.23,1900000,158.23 +1945-02-15,157.08,158.37,157.06,158.24,1870000,158.24 +1945-02-14,156.37,157.81,156.37,157.08,2060000,157.08 +1945-02-13,154.90,156.49,154.90,156.34,1800000,156.34 +1945-02-09,155.48,155.48,154.25,154.75,1180000,154.75 +1945-02-08,155.71,156.17,155.19,155.54,1530000,155.54 +1945-02-07,155.50,156.07,155.13,155.71,1500000,155.71 +1945-02-06,155.35,156.00,155.18,155.50,1600000,155.50 +1945-02-05,154.76,155.76,154.56,155.35,1800000,155.35 +1945-02-02,153.79,154.71,153.30,154.45,1870000,154.45 +1945-02-01,153.67,154.15,153.22,153.79,1560000,153.79 +1945-01-31,153.45,153.93,152.62,153.67,1180000,153.67 +1945-01-30,154.06,154.58,153.31,153.45,1530000,153.45 +1945-01-29,154.13,154.25,153.30,154.06,1370000,154.06 +1945-01-26,152.53,153.57,152.53,153.30,1260000,153.30 +1945-01-25,151.39,152.62,151.39,152.26,970000,152.26 +1945-01-24,151.36,152.15,150.53,151.35,1010000,151.35 +1945-01-23,152.03,152.97,151.23,151.36,1370000,151.36 +1945-01-22,152.41,152.41,151.10,152.03,1470000,152.03 +1945-01-19,154.58,154.58,153.37,153.84,1610000,153.84 +1945-01-18,155.33,155.50,153.95,154.61,1630000,154.61 +1945-01-17,154.60,155.99,154.53,155.33,1830000,155.33 +1945-01-16,154.76,155.04,153.96,154.60,1210000,154.60 +1945-01-15,155.58,155.72,154.30,154.76,2010000,154.76 +1945-01-12,155.85,156.22,154.99,155.42,1750000,155.42 +1945-01-11,155.67,156.68,155.32,155.85,2210000,155.85 +1945-01-10,155.01,155.95,154.38,155.67,2110000,155.67 +1945-01-09,154.85,155.72,154.52,155.01,2260000,155.01 +1945-01-08,153.69,155.04,153.69,154.85,2000000,154.85 +1945-01-05,154.42,155.02,153.79,154.00,1800000,154.00 +1945-01-04,154.31,155.00,153.72,154.42,1830000,154.42 +1945-01-03,153.02,154.61,153.02,154.31,2160000,154.31 +1945-01-02,152.32,152.83,151.63,152.58,1340000,152.58 +1944-12-29,150.48,152.53,150.48,151.93,1890000,151.93 +1944-12-28,148.71,150.73,148.62,150.47,1230000,150.47 +1944-12-27,149.46,149.46,147.93,148.71,1580000,148.71 +1944-12-26,150.36,150.36,149.41,149.66,1000000,149.66 +1944-12-22,150.28,151.04,150.04,150.43,1280000,150.43 +1944-12-21,150.59,150.73,149.88,150.28,950000,150.28 +1944-12-20,151.39,151.39,150.15,150.59,1480000,150.59 +1944-12-19,151.53,151.90,150.84,151.62,1280000,151.62 +1944-12-18,152.28,152.28,151.15,151.53,980000,151.53 +1944-12-15,150.93,152.75,150.93,152.28,2140000,152.28 +1944-12-14,150.64,151.02,150.11,150.80,1390000,150.80 +1944-12-13,151.20,151.34,150.43,150.64,1130000,150.64 +1944-12-12,151.62,151.75,150.69,151.20,1160000,151.20 +1944-12-11,151.31,152.14,150.65,151.62,1500000,151.62 +1944-12-08,149.23,150.68,149.07,150.48,1680000,150.48 +1944-12-07,148.77,149.64,148.55,149.23,1350000,149.23 +1944-12-06,148.58,149.14,148.03,148.77,1090000,148.77 +1944-12-05,148.22,149.23,148.05,148.58,1480000,148.58 +1944-12-04,147.50,148.41,147.21,148.22,1430000,148.22 +1944-12-01,147.33,147.65,146.76,147.30,930000,147.30 +1944-11-30,147.81,148.06,147.06,147.33,990000,147.33 +1944-11-29,147.14,148.07,146.89,147.81,1160000,147.81 +1944-11-28,146.92,147.40,146.62,147.14,870000,147.14 +1944-11-27,146.63,147.21,146.30,146.92,740000,146.92 +1944-11-24,146.92,147.04,145.99,146.40,680000,146.40 +1944-11-22,147.03,147.59,146.74,146.92,770000,146.92 +1944-11-21,146.34,147.27,146.34,147.03,860000,147.03 +1944-11-20,146.02,146.56,145.71,146.33,690000,146.33 +1944-11-17,145.67,146.15,145.33,145.77,710000,145.77 +1944-11-16,145.64,146.15,145.17,145.67,850000,145.67 +1944-11-15,145.60,146.04,145.22,145.64,820000,145.64 +1944-11-14,146.90,146.90,145.36,145.60,1100000,145.60 +1944-11-13,148.08,148.22,146.78,146.97,920000,146.97 +1944-11-10,147.75,148.39,147.64,148.08,1120000,148.08 +1944-11-09,147.52,148.02,146.98,147.75,850000,147.75 +1944-11-08,147.92,147.92,146.82,147.52,730000,147.52 +1944-11-06,147.37,148.19,147.06,147.92,870000,147.92 +1944-11-03,147.53,147.59,146.87,147.16,730000,147.16 +1944-11-02,146.73,147.69,146.71,147.53,790000,147.53 +1944-11-01,146.53,147.05,146.38,146.73,710000,146.73 +1944-10-31,146.28,147.01,146.12,146.53,680000,146.53 +1944-10-30,146.50,146.68,145.80,146.28,610000,146.28 +1944-10-27,145.83,146.46,145.33,146.29,830000,146.29 +1944-10-26,146.37,146.65,145.47,145.83,930000,145.83 +1944-10-25,146.58,146.82,146.03,146.37,640000,146.37 +1944-10-24,146.58,146.86,145.98,146.58,850000,146.58 +1944-10-23,148.35,148.46,146.37,146.58,1030000,146.58 +1944-10-20,148.55,148.70,147.96,148.21,750000,148.21 +1944-10-19,148.87,149.18,148.21,148.55,830000,148.55 +1944-10-18,148.47,149.18,148.47,148.87,910000,148.87 +1944-10-17,148.09,148.58,147.85,148.39,670000,148.39 +1944-10-16,148.59,148.67,147.97,148.09,580000,148.09 +1944-10-13,148.79,149.03,148.48,148.70,680000,148.70 +1944-10-11,148.25,149.00,148.19,148.79,720000,148.79 +1944-10-10,148.06,148.56,147.68,148.25,600000,148.25 +1944-10-09,148.86,148.86,147.98,148.06,610000,148.06 +1944-10-06,148.62,149.20,148.51,148.84,800000,148.84 +1944-10-05,147.89,148.95,147.78,148.62,1000000,148.62 +1944-10-04,146.93,148.06,146.93,147.89,820000,147.89 +1944-10-03,146.92,147.29,146.49,146.91,750000,146.91 +1944-10-02,146.73,147.30,146.41,146.92,820000,146.92 +1944-09-29,146.11,146.47,145.70,146.31,750000,146.31 +1944-09-28,146.28,146.49,145.67,146.11,640000,146.11 +1944-09-27,146.52,146.76,146.03,146.28,480000,146.28 +1944-09-26,146.77,147.08,146.32,146.52,600000,146.52 +1944-09-25,146.07,147.06,146.07,146.77,790000,146.77 +1944-09-22,145.43,145.95,145.33,145.60,550000,145.60 +1944-09-21,145.85,146.09,145.31,145.43,560000,145.43 +1944-09-20,145.62,146.29,145.42,145.85,700000,145.85 +1944-09-19,144.75,145.97,144.75,145.62,720000,145.62 +1944-09-18,144.36,144.85,144.24,144.75,350000,144.75 +1944-09-15,143.36,144.24,143.36,144.08,640000,144.08 +1944-09-14,143.44,143.44,142.65,142.96,730000,142.96 +1944-09-13,144.88,145.05,143.87,143.94,880000,143.94 +1944-09-12,144.40,145.09,144.40,144.88,550000,144.88 +1944-09-11,143.64,144.56,143.64,144.30,570000,144.30 +1944-09-08,143.58,144.28,143.10,143.51,630000,143.51 +1944-09-07,144.08,144.08,142.53,143.58,1480000,143.58 +1944-09-06,146.44,146.44,144.26,144.42,1470000,144.42 +1944-09-05,147.16,147.45,146.44,146.56,870000,146.56 +1944-09-01,146.99,147.47,146.73,147.16,640000,147.16 +1944-08-31,147.28,147.42,146.77,146.99,610000,146.99 +1944-08-30,147.12,147.69,146.93,147.28,900000,147.28 +1944-08-29,146.87,147.40,146.70,147.12,620000,147.12 +1944-08-28,147.02,147.17,146.53,146.87,550000,146.87 +1944-08-25,147.11,147.38,146.42,147.02,600000,147.02 +1944-08-24,147.87,147.88,146.81,147.11,770000,147.11 +1944-08-23,147.81,148.18,147.49,147.87,790000,147.87 +1944-08-22,148.44,148.44,147.59,147.81,800000,147.81 +1944-08-21,148.96,149.27,148.31,148.52,830000,148.52 +1944-08-18,148.46,149.28,148.42,148.96,1150000,148.96 +1944-08-17,147.62,148.58,147.62,148.46,1240000,148.46 +1944-08-16,146.45,147.42,146.40,147.30,860000,147.30 +1944-08-15,146.77,146.83,146.06,146.45,780000,146.45 +1944-08-14,146.56,146.99,146.45,146.77,690000,146.77 +1944-08-11,145.82,146.63,145.82,146.27,940000,146.27 +1944-08-10,144.95,145.81,144.95,145.65,1020000,145.65 +1944-08-09,144.97,145.25,144.48,144.90,960000,144.90 +1944-08-08,145.32,145.69,144.70,144.97,1270000,144.97 +1944-08-07,145.07,145.75,144.75,145.32,1070000,145.32 +1944-08-04,146.29,146.49,145.20,145.30,1120000,145.30 +1944-08-03,146.77,146.99,146.08,146.29,800000,146.29 +1944-08-02,146.50,147.07,146.50,146.77,800000,146.77 +1944-08-01,146.11,146.92,145.92,146.39,750000,146.39 +1944-07-31,146.14,146.59,145.86,146.11,580000,146.11 +1944-07-28,146.68,146.68,145.88,146.14,560000,146.14 +1944-07-27,146.64,147.08,146.07,146.74,690000,146.74 +1944-07-26,146.74,147.59,146.40,146.64,830000,146.64 +1944-07-25,145.91,146.87,145.91,146.74,830000,146.74 +1944-07-24,145.58,146.37,145.26,145.77,1010000,145.77 +1944-07-21,148.01,148.01,146.42,146.77,1430000,146.77 +1944-07-20,149.01,149.57,148.11,148.27,1340000,148.27 +1944-07-19,148.10,149.46,147.98,149.01,1140000,149.01 +1944-07-18,149.01,149.01,147.74,148.10,1280000,148.10 +1944-07-17,150.49,150.49,148.71,149.28,1480000,149.28 +1944-07-14,150.08,150.86,149.86,150.34,1090000,150.34 +1944-07-13,150.42,150.80,149.66,150.08,1380000,150.08 +1944-07-12,150.18,150.84,149.69,150.42,1420000,150.42 +1944-07-11,150.50,150.80,149.53,150.18,1350000,150.18 +1944-07-10,150.03,150.88,149.97,150.50,1840000,150.50 +1944-07-07,149.07,149.61,148.61,149.36,1280000,149.36 +1944-07-06,149.66,150.12,148.69,149.07,1710000,149.07 +1944-07-05,149.32,150.42,149.17,149.66,2440000,149.66 +1944-07-03,148.46,149.50,148.42,149.32,1560000,149.32 +1944-06-30,148.07,148.82,147.93,148.38,1750000,148.38 +1944-06-29,147.93,148.54,147.25,148.07,1890000,148.07 +1944-06-28,148.48,148.52,147.40,147.93,1750000,147.93 +1944-06-27,148.12,149.00,147.76,148.48,2180000,148.48 +1944-06-26,147.48,148.46,147.40,148.12,1720000,148.12 +1944-06-23,147.65,147.94,147.15,147.50,1300000,147.50 +1944-06-22,147.90,148.32,147.18,147.65,1280000,147.65 +1944-06-21,148.63,148.95,147.30,147.90,1520000,147.90 +1944-06-20,148.42,149.15,147.79,148.63,1620000,148.63 +1944-06-19,147.46,149.07,147.46,148.42,2370000,148.42 +1944-06-16,145.94,147.57,145.94,146.96,2520000,146.96 +1944-06-15,145.03,146.38,144.73,145.86,1850000,145.86 +1944-06-14,145.05,145.60,144.26,145.03,1440000,145.03 +1944-06-13,144.13,145.55,144.13,145.05,2330000,145.05 +1944-06-12,142.90,144.31,142.90,144.08,2240000,144.08 +1944-06-09,141.93,142.37,141.58,142.06,850000,142.06 +1944-06-08,142.12,142.60,141.61,141.93,860000,141.93 +1944-06-07,142.21,142.77,141.76,142.12,860000,142.12 +1944-06-06,141.62,143.01,140.90,142.21,1790000,142.21 +1944-06-05,142.34,142.53,141.49,141.62,860000,141.62 +1944-06-02,142.14,142.52,141.80,142.07,820000,142.07 +1944-06-01,142.24,142.92,141.95,142.14,1190000,142.14 +1944-05-31,141.53,142.44,141.28,142.24,1180000,142.24 +1944-05-29,141.24,141.68,140.97,141.53,810000,141.53 +1944-05-26,140.38,141.20,140.31,141.03,840000,141.03 +1944-05-25,140.48,140.69,139.89,140.38,800000,140.38 +1944-05-24,139.91,140.98,139.91,140.48,1090000,140.48 +1944-05-23,139.43,140.24,139.19,139.87,770000,139.87 +1944-05-22,139.37,139.74,139.13,139.43,700000,139.43 +1944-05-19,139.20,139.69,139.00,139.34,790000,139.34 +1944-05-18,138.99,139.54,138.63,139.20,940000,139.20 +1944-05-17,138.41,139.09,138.38,138.99,820000,138.99 +1944-05-16,138.60,138.89,138.23,138.41,540000,138.41 +1944-05-15,138.60,138.84,138.41,138.60,340000,138.60 +1944-05-12,138.93,139.38,138.22,138.51,750000,138.51 +1944-05-11,138.76,139.14,138.50,138.93,620000,138.93 +1944-05-10,138.65,139.03,138.41,138.76,650000,138.76 +1944-05-09,138.65,139.07,138.29,138.65,620000,138.65 +1944-05-08,138.87,139.08,138.38,138.65,590000,138.65 +1944-05-05,137.85,139.00,137.83,138.75,790000,138.75 +1944-05-04,137.83,138.14,137.52,137.85,510000,137.85 +1944-05-03,137.15,138.12,137.14,137.83,630000,137.83 +1944-05-02,137.06,137.53,136.77,137.15,570000,137.15 +1944-05-01,136.23,137.12,136.18,137.06,570000,137.06 +1944-04-28,136.07,136.50,135.77,136.21,560000,136.21 +1944-04-27,135.69,136.53,135.69,136.07,520000,136.07 +1944-04-26,135.18,135.93,135.18,135.67,490000,135.67 +1944-04-25,135.00,135.41,134.75,135.11,550000,135.11 +1944-04-24,136.19,136.22,134.91,135.00,690000,135.00 +1944-04-21,136.20,136.61,135.96,136.17,480000,136.17 +1944-04-20,135.74,136.59,135.74,136.20,530000,136.20 +1944-04-19,136.07,136.15,135.09,135.48,900000,135.48 +1944-04-18,137.76,137.76,135.99,136.07,1190000,136.07 +1944-04-17,138.06,138.25,137.64,137.77,540000,137.77 +1944-04-14,137.65,137.95,137.52,137.69,480000,137.69 +1944-04-13,137.93,137.93,137.33,137.65,660000,137.65 +1944-04-12,138.74,138.86,137.88,137.98,720000,137.98 +1944-04-11,139.11,139.16,138.50,138.74,730000,138.74 +1944-04-10,139.10,139.45,138.80,139.11,570000,139.11 +1944-04-06,138.31,139.24,138.31,138.91,760000,138.91 +1944-04-05,138.06,138.63,137.95,138.17,770000,138.17 +1944-04-04,138.01,138.39,137.67,138.06,570000,138.06 +1944-04-03,138.66,138.66,137.70,138.01,690000,138.01 +1944-03-31,138.60,139.29,138.50,138.84,800000,138.84 +1944-03-30,137.74,138.89,137.74,138.60,680000,138.60 +1944-03-29,137.88,138.17,136.98,137.45,1110000,137.45 +1944-03-28,139.12,139.36,137.64,137.88,1340000,137.88 +1944-03-27,139.19,139.67,138.99,139.12,690000,139.12 +1944-03-24,138.95,139.60,138.81,139.28,840000,139.28 +1944-03-23,139.98,140.33,138.81,138.95,1170000,138.95 +1944-03-22,140.20,140.77,139.83,139.98,1570000,139.98 +1944-03-21,139.89,140.47,139.63,140.20,1460000,140.20 +1944-03-20,140.28,140.28,139.53,139.89,1200000,139.89 +1944-03-17,140.91,141.10,140.24,140.80,1350000,140.80 +1944-03-16,140.71,141.43,140.44,140.91,1590000,140.91 +1944-03-15,140.37,141.00,140.08,140.71,1190000,140.71 +1944-03-14,140.75,140.75,139.90,140.37,1010000,140.37 +1944-03-13,140.44,141.37,140.33,141.00,1620000,141.00 +1944-03-10,139.33,140.34,139.14,140.01,1150000,140.01 +1944-03-09,139.50,139.70,138.89,139.33,930000,139.33 +1944-03-08,138.34,139.89,138.34,139.50,1690000,139.50 +1944-03-07,137.48,138.67,137.48,138.33,1210000,138.33 +1944-03-06,136.79,137.46,136.75,137.21,750000,137.21 +1944-03-03,136.69,136.97,136.38,136.59,760000,136.59 +1944-03-02,136.44,136.91,136.33,136.69,710000,136.69 +1944-03-01,136.30,136.75,135.86,136.44,630000,136.44 +1944-02-29,136.79,136.91,136.02,136.30,870000,136.30 +1944-02-28,136.58,137.01,136.36,136.79,750000,136.79 +1944-02-25,136.58,136.74,136.11,136.56,900000,136.56 +1944-02-24,136.51,137.00,136.25,136.58,1160000,136.58 +1944-02-23,135.71,136.63,135.52,136.51,940000,136.51 +1944-02-21,135.91,136.11,135.52,135.71,590000,135.71 +1944-02-18,136.58,136.74,135.81,136.08,670000,136.08 +1944-02-17,136.04,136.77,135.74,136.58,900000,136.58 +1944-02-16,136.19,136.73,135.64,136.04,870000,136.04 +1944-02-15,135.39,136.36,135.28,136.19,1030000,136.19 +1944-02-14,135.41,135.71,135.00,135.39,550000,135.39 +1944-02-11,135.55,136.08,135.19,135.41,850000,135.41 +1944-02-10,135.03,135.74,134.80,135.55,860000,135.55 +1944-02-09,135.06,135.44,134.55,135.03,630000,135.03 +1944-02-08,134.36,135.24,134.36,135.06,610000,135.06 +1944-02-07,135.11,135.11,134.10,134.22,570000,134.22 +1944-02-04,135.89,135.89,134.75,135.04,600000,135.04 +1944-02-03,137.08,137.16,135.76,136.24,960000,136.24 +1944-02-02,137.45,137.45,136.79,137.08,900000,137.08 +1944-02-01,137.40,137.69,137.09,137.45,860000,137.45 +1944-01-31,137.15,137.85,136.83,137.40,630000,137.40 +1944-01-28,136.65,137.37,136.65,137.19,620000,137.19 +1944-01-27,136.71,137.10,136.38,136.59,600000,136.59 +1944-01-26,137.77,137.77,136.59,136.71,780000,136.71 +1944-01-25,137.97,138.21,137.59,137.97,690000,137.97 +1944-01-24,138.24,138.50,137.70,137.97,690000,137.97 +1944-01-21,138.16,138.32,137.69,138.07,810000,138.07 +1944-01-20,137.83,138.49,137.79,138.16,730000,138.16 +1944-01-19,137.87,138.28,137.20,137.83,640000,137.83 +1944-01-18,138.10,138.22,137.51,137.87,820000,137.87 +1944-01-17,138.40,138.60,137.78,138.10,820000,138.10 +1944-01-14,137.36,138.31,137.21,138.15,940000,138.15 +1944-01-13,137.86,137.86,136.99,137.36,680000,137.36 +1944-01-12,138.47,138.71,137.74,137.94,710000,137.94 +1944-01-11,137.97,138.89,137.97,138.47,1000000,138.47 +1944-01-10,138.09,138.21,137.40,137.80,720000,137.80 +1944-01-07,138.34,138.65,137.67,138.08,830000,138.08 +1944-01-06,138.65,138.80,137.98,138.34,840000,138.34 +1944-01-05,137.78,138.88,137.78,138.65,1160000,138.65 +1944-01-04,135.92,137.23,135.91,137.15,730000,137.15 +1944-01-03,135.89,136.47,135.51,135.92,520000,135.92 +1943-12-31,136.20,136.73,135.54,135.89,990000,135.89 +1943-12-30,135.00,136.37,135.00,136.20,1140000,136.20 +1943-12-29,135.04,135.51,134.08,134.61,1000000,134.61 +1943-12-28,136.08,136.08,134.81,135.04,920000,135.04 +1943-12-27,136.24,136.60,135.67,136.14,650000,136.14 +1943-12-24,136.07,136.47,135.75,136.24,510000,136.24 +1943-12-23,136.15,136.57,135.77,136.07,580000,136.07 +1943-12-22,135.86,136.53,135.65,136.15,560000,136.15 +1943-12-21,136.10,136.49,135.51,135.86,660000,135.86 +1943-12-20,135.89,136.56,135.47,136.10,860000,136.10 +1943-12-17,135.19,135.90,134.92,135.44,880000,135.44 +1943-12-16,134.18,135.47,133.96,135.19,760000,135.19 +1943-12-15,134.19,134.53,133.69,134.18,660000,134.18 +1943-12-14,134.74,134.74,133.72,134.19,680000,134.19 +1943-12-13,135.28,135.81,134.37,134.80,730000,134.80 +1943-12-10,134.05,135.47,133.96,135.04,870000,135.04 +1943-12-09,134.42,134.89,133.57,134.05,860000,134.05 +1943-12-08,133.64,134.85,133.64,134.42,1320000,134.42 +1943-12-07,132.45,133.46,132.21,133.37,880000,133.37 +1943-12-06,131.87,133.07,131.71,132.45,820000,132.45 +1943-12-03,131.67,132.32,131.42,131.91,560000,131.91 +1943-12-02,130.75,132.06,130.75,131.67,720000,131.67 +1943-12-01,129.76,131.16,129.76,130.68,710000,130.68 +1943-11-30,129.95,130.34,128.94,129.57,710000,129.57 +1943-11-29,131.25,131.34,129.86,129.95,700000,129.95 +1943-11-26,132.10,132.25,131.06,131.33,600000,131.33 +1943-11-24,132.45,132.86,131.76,132.10,710000,132.10 +1943-11-23,132.65,132.93,132.26,132.45,540000,132.45 +1943-11-22,132.94,133.10,132.30,132.65,610000,132.65 +1943-11-19,130.96,132.51,130.96,132.30,910000,132.30 +1943-11-18,130.24,131.29,130.08,130.79,620000,130.79 +1943-11-17,131.18,131.19,129.86,130.24,830000,130.24 +1943-11-16,131.56,131.91,130.86,131.18,620000,131.18 +1943-11-15,131.76,132.13,131.08,131.56,680000,131.56 +1943-11-12,132.68,133.07,131.63,132.15,800000,132.15 +1943-11-10,132.11,133.37,132.11,132.68,930000,132.68 +1943-11-09,131.68,132.48,130.84,131.85,1510000,131.85 +1943-11-08,135.03,135.03,131.42,131.68,2340000,131.68 +1943-11-05,136.30,136.49,135.23,135.47,800000,135.47 +1943-11-04,137.35,137.94,136.10,136.30,1150000,136.30 +1943-11-03,138.50,138.96,137.19,137.35,1070000,137.35 +1943-11-01,138.27,138.79,137.85,138.50,650000,138.50 +1943-10-29,138.97,139.06,138.02,138.29,670000,138.29 +1943-10-28,139.35,139.74,138.84,138.97,720000,138.97 +1943-10-27,138.69,139.65,138.55,139.35,880000,139.35 +1943-10-26,138.22,139.08,138.19,138.69,900000,138.69 +1943-10-25,138.29,138.66,137.88,138.22,650000,138.22 +1943-10-22,138.00,138.53,137.84,138.25,560000,138.25 +1943-10-21,138.72,138.72,137.74,138.00,590000,138.00 +1943-10-20,138.71,139.21,138.43,138.88,610000,138.88 +1943-10-19,138.40,138.93,138.11,138.71,610000,138.71 +1943-10-18,138.40,138.87,138.06,138.40,540000,138.40 +1943-10-15,137.30,138.30,137.30,137.90,560000,137.90 +1943-10-14,136.48,137.30,136.34,137.01,470000,137.01 +1943-10-13,136.61,136.91,135.92,136.48,590000,136.48 +1943-10-11,137.10,137.21,136.38,136.61,480000,136.61 +1943-10-08,136.39,137.17,136.21,136.74,560000,136.74 +1943-10-07,137.43,137.43,136.01,136.39,850000,136.39 +1943-10-06,139.15,139.15,137.71,137.84,720000,137.84 +1943-10-05,139.63,139.76,138.87,139.27,490000,139.27 +1943-10-04,140.17,140.17,139.36,139.63,500000,139.63 +1943-10-01,140.12,140.63,139.87,140.33,560000,140.33 +1943-09-30,139.75,140.48,139.55,140.12,570000,140.12 +1943-09-29,139.27,139.95,139.06,139.75,470000,139.75 +1943-09-28,139.41,139.98,139.04,139.27,610000,139.27 +1943-09-27,140.14,140.14,139.11,139.41,620000,139.41 +1943-09-24,140.30,140.61,139.79,140.21,640000,140.21 +1943-09-23,141.09,141.18,139.75,140.30,670000,140.30 +1943-09-22,141.49,141.68,140.61,141.09,660000,141.09 +1943-09-21,141.75,141.87,141.03,141.49,740000,141.49 +1943-09-20,141.42,142.50,141.42,141.75,1100000,141.75 +1943-09-17,138.42,139.71,138.42,139.60,890000,139.60 +1943-09-16,137.62,138.43,137.50,138.36,530000,138.36 +1943-09-15,137.53,138.21,137.31,137.62,600000,137.62 +1943-09-14,137.82,137.98,137.24,137.53,440000,137.53 +1943-09-13,138.04,138.17,137.52,137.82,510000,137.82 +1943-09-10,137.75,138.26,137.50,137.96,760000,137.96 +1943-09-09,136.92,138.12,136.92,137.75,1090000,137.75 +1943-09-08,137.59,137.72,136.37,136.91,800000,136.91 +1943-09-07,137.33,137.75,137.17,137.59,350000,137.59 +1943-09-03,137.11,137.43,136.53,137.18,400000,137.18 +1943-09-02,137.12,137.48,136.67,137.11,490000,137.11 +1943-09-01,136.65,137.48,136.65,137.12,570000,137.12 +1943-08-31,135.95,137.01,135.95,136.62,610000,136.62 +1943-08-30,135.79,136.10,135.30,135.73,340000,135.73 +1943-08-27,136.25,136.26,135.64,135.83,420000,135.83 +1943-08-26,135.90,136.40,135.81,136.25,440000,136.25 +1943-08-25,135.60,136.25,135.54,135.90,460000,135.90 +1943-08-24,135.05,136.04,135.00,135.60,480000,135.60 +1943-08-23,135.81,135.81,134.40,135.05,720000,135.05 +1943-08-20,138.31,138.31,136.80,136.93,540000,136.93 +1943-08-19,138.45,138.83,137.93,138.34,470000,138.34 +1943-08-18,137.59,138.83,137.59,138.45,560000,138.45 +1943-08-17,137.08,137.93,136.96,137.54,550000,137.54 +1943-08-16,137.23,137.74,136.78,137.08,490000,137.08 +1943-08-13,136.44,137.49,136.40,137.39,440000,137.39 +1943-08-12,136.79,137.05,136.15,136.44,450000,136.44 +1943-08-11,136.23,137.15,136.21,136.79,620000,136.79 +1943-08-10,135.33,136.44,135.33,136.23,650000,136.23 +1943-08-09,135.38,136.08,134.75,135.18,560000,135.18 +1943-08-06,136.76,136.80,135.36,135.58,620000,135.58 +1943-08-05,136.87,137.17,136.33,136.76,540000,136.76 +1943-08-04,136.20,137.54,136.20,136.87,730000,136.87 +1943-08-03,134.04,136.00,134.04,135.64,1200000,135.64 +1943-08-02,135.95,136.50,133.87,134.00,1350000,134.00 +1943-07-30,139.41,139.66,136.87,137.25,1230000,137.25 +1943-07-29,138.28,139.90,138.28,139.41,1020000,139.41 +1943-07-28,138.75,139.08,136.72,137.64,1850000,137.64 +1943-07-27,142.07,142.07,138.65,138.75,1790000,138.75 +1943-07-26,143.65,143.65,141.73,142.07,1460000,142.07 +1943-07-23,143.77,144.18,143.31,143.80,910000,143.80 +1943-07-22,143.94,144.13,143.38,143.77,820000,143.77 +1943-07-21,143.93,144.22,143.33,143.94,770000,143.94 +1943-07-20,144.74,144.79,143.50,143.93,990000,143.93 +1943-07-19,144.72,145.31,144.39,144.74,830000,144.74 +1943-07-16,144.87,145.67,144.41,144.75,1040000,144.75 +1943-07-15,145.82,146.41,144.76,144.87,1220000,144.87 +1943-07-14,145.30,146.26,145.08,145.82,1680000,145.82 +1943-07-13,144.62,145.54,144.37,145.30,1390000,145.30 +1943-07-12,144.23,144.79,143.94,144.62,1050000,144.62 +1943-07-09,143.64,144.32,143.34,144.18,1050000,144.18 +1943-07-08,143.41,144.09,143.15,143.64,960000,143.64 +1943-07-07,143.76,143.82,142.83,143.41,710000,143.41 +1943-07-06,143.70,144.41,143.46,143.76,960000,143.76 +1943-07-02,143.58,144.05,143.17,143.68,890000,143.68 +1943-07-01,143.38,144.02,142.98,143.58,1150000,143.58 +1943-06-30,142.62,143.57,142.50,143.38,940000,143.38 +1943-06-29,143.00,143.30,142.06,142.62,810000,142.62 +1943-06-28,142.88,143.70,142.44,143.00,1030000,143.00 +1943-06-25,140.96,142.49,140.96,142.27,1150000,142.27 +1943-06-24,140.04,141.06,139.70,140.86,730000,140.86 +1943-06-23,139.30,140.43,139.30,140.04,830000,140.04 +1943-06-22,138.79,139.30,138.07,139.03,700000,139.03 +1943-06-21,139.52,139.52,138.34,138.79,720000,138.79 +1943-06-18,139.85,140.22,139.27,139.68,680000,139.68 +1943-06-17,139.78,140.41,139.49,139.85,740000,139.85 +1943-06-16,139.39,140.55,139.26,139.78,880000,139.78 +1943-06-15,139.09,139.58,138.21,139.39,1010000,139.39 +1943-06-14,140.91,140.91,138.86,139.09,1350000,139.09 +1943-06-11,141.68,142.01,141.11,141.44,840000,141.44 +1943-06-10,141.49,142.42,141.21,141.68,910000,141.68 +1943-06-09,141.44,141.71,140.45,141.49,810000,141.49 +1943-06-08,141.82,141.91,140.56,141.44,1080000,141.44 +1943-06-07,142.99,142.99,141.50,141.82,1210000,141.82 +1943-06-04,142.75,143.04,141.82,142.28,1260000,142.28 +1943-06-03,142.39,143.05,141.51,142.75,1180000,142.75 +1943-06-02,142.43,143.17,141.85,142.39,1310000,142.39 +1943-06-01,142.06,142.90,141.72,142.43,1260000,142.43 +1943-05-28,140.82,141.58,140.30,141.18,1050000,141.18 +1943-05-27,140.38,141.54,140.13,140.82,1470000,140.82 +1943-05-26,139.24,140.82,139.24,140.38,1320000,140.38 +1943-05-25,138.84,139.37,138.06,139.17,890000,139.17 +1943-05-24,138.78,139.14,138.41,138.84,790000,138.84 +1943-05-21,138.84,139.25,138.10,138.90,920000,138.90 +1943-05-20,139.15,140.09,138.60,138.84,1300000,138.84 +1943-05-19,138.05,139.39,138.04,139.15,1490000,139.15 +1943-05-18,136.98,138.39,136.92,138.05,930000,138.05 +1943-05-17,137.31,137.43,136.30,136.98,850000,136.98 +1943-05-14,137.85,137.85,136.13,136.82,1630000,136.82 +1943-05-13,138.24,138.55,137.56,137.88,1030000,137.88 +1943-05-12,138.36,138.96,137.83,138.24,1430000,138.24 +1943-05-11,138.64,138.75,137.54,138.36,1790000,138.36 +1943-05-10,138.36,139.30,138.12,138.64,2520000,138.64 +1943-05-07,138.85,139.04,136.99,137.27,2150000,137.27 +1943-05-06,138.34,139.13,137.97,138.85,2080000,138.85 +1943-05-05,138.18,138.79,137.54,138.34,2470000,138.34 +1943-05-04,137.43,138.71,137.27,138.18,2810000,138.18 +1943-05-03,136.20,137.69,136.08,137.43,2350000,137.43 +1943-04-30,135.24,136.17,135.01,135.48,1360000,135.48 +1943-04-29,134.14,135.49,134.11,135.24,1340000,135.24 +1943-04-28,134.39,134.61,133.46,134.14,880000,134.14 +1943-04-27,134.34,134.75,133.75,134.39,830000,134.39 +1943-04-26,134.34,134.89,133.91,134.34,1130000,134.34 +1943-04-22,134.00,134.75,133.70,134.20,1250000,134.20 +1943-04-21,133.17,134.31,133.17,134.00,1140000,134.00 +1943-04-20,133.46,133.64,132.68,133.09,730000,133.09 +1943-04-19,133.59,134.23,133.20,133.46,910000,133.46 +1943-04-16,133.49,133.71,132.40,133.07,900000,133.07 +1943-04-15,132.85,134.19,132.85,133.49,1390000,133.49 +1943-04-14,131.38,132.90,131.38,132.49,1090000,132.49 +1943-04-13,131.27,131.49,129.79,131.18,1410000,131.18 +1943-04-12,131.63,132.86,131.11,131.27,1270000,131.27 +1943-04-09,134.02,134.02,131.01,131.22,2520000,131.22 +1943-04-08,136.00,136.68,135.18,135.52,1810000,135.52 +1943-04-07,136.73,136.73,135.14,136.00,2100000,136.00 +1943-04-06,136.44,137.45,136.09,136.93,2460000,136.93 +1943-04-05,135.62,137.10,135.62,136.44,2650000,136.44 +1943-04-02,136.44,136.44,135.08,135.67,1660000,135.67 +1943-04-01,136.57,137.04,135.94,136.56,1740000,136.56 +1943-03-31,136.82,137.07,135.86,136.57,1540000,136.57 +1943-03-30,136.10,137.20,135.52,136.82,1940000,136.82 +1943-03-29,134.75,136.41,134.75,136.10,2000000,136.10 +1943-03-26,133.22,134.51,133.21,133.96,2140000,133.96 +1943-03-25,130.91,133.30,130.91,133.22,2120000,133.22 +1943-03-24,129.98,131.00,129.74,130.62,1160000,130.62 +1943-03-23,129.46,130.47,129.46,129.98,1190000,129.98 +1943-03-22,129.13,129.65,128.67,129.44,850000,129.44 +1943-03-19,129.66,129.95,129.09,129.25,1070000,129.25 +1943-03-18,129.49,130.00,129.07,129.66,870000,129.66 +1943-03-17,130.22,130.22,128.86,129.49,1270000,129.49 +1943-03-16,130.64,130.83,129.91,130.33,1030000,130.33 +1943-03-15,130.73,130.95,130.03,130.64,1370000,130.64 +1943-03-12,130.48,131.39,130.07,130.73,1970000,130.73 +1943-03-11,129.16,130.74,128.95,130.48,1430000,130.48 +1943-03-10,129.76,129.76,128.49,129.16,930000,129.16 +1943-03-09,130.52,130.52,128.68,129.80,1420000,129.80 +1943-03-08,130.74,131.23,130.14,130.56,1250000,130.56 +1943-03-05,130.38,130.93,129.75,130.61,1210000,130.61 +1943-03-04,130.03,131.20,129.97,130.38,2010000,130.38 +1943-03-03,128.60,130.20,128.51,130.03,2020000,130.03 +1943-03-02,129.18,129.18,127.91,128.60,1330000,128.60 +1943-03-01,130.11,130.61,129.13,129.44,2000000,129.44 +1943-02-26,130.04,130.25,129.20,129.71,1440000,129.71 +1943-02-25,129.58,130.43,129.28,130.04,1780000,130.04 +1943-02-24,128.78,130.00,128.39,129.58,1690000,129.58 +1943-02-23,127.80,129.06,127.34,128.78,1430000,128.78 +1943-02-19,127.06,127.25,125.82,126.67,900000,126.67 +1943-02-18,128.29,128.29,126.82,127.06,1040000,127.06 +1943-02-17,128.31,128.88,127.86,128.41,1100000,128.41 +1943-02-16,128.60,128.88,127.70,128.31,1180000,128.31 +1943-02-15,128.00,129.15,128.00,128.60,1840000,128.60 +1943-02-11,127.01,127.54,126.53,127.09,1410000,127.09 +1943-02-10,126.30,127.55,126.21,127.01,1500000,127.01 +1943-02-09,125.57,126.59,125.38,126.30,920000,126.30 +1943-02-08,125.81,126.10,125.19,125.57,730000,125.57 +1943-02-05,125.07,126.00,124.71,125.75,880000,125.75 +1943-02-04,125.56,125.57,124.69,125.07,800000,125.07 +1943-02-03,125.88,126.10,124.84,125.56,830000,125.56 +1943-02-02,125.86,126.38,125.51,125.88,1050000,125.88 +1943-02-01,125.58,126.15,124.87,125.86,1090000,125.86 +1943-01-29,124.38,125.71,124.23,125.41,1230000,125.41 +1943-01-28,124.08,124.57,123.41,124.38,990000,124.38 +1943-01-27,124.31,124.47,122.92,124.08,1030000,124.08 +1943-01-26,123.74,124.59,123.63,124.31,1040000,124.31 +1943-01-25,122.38,123.94,122.30,123.74,800000,123.74 +1943-01-22,121.79,122.92,121.50,121.99,880000,121.99 +1943-01-21,120.63,122.00,120.63,121.79,810000,121.79 +1943-01-20,120.48,120.86,119.71,120.55,520000,120.55 +1943-01-19,121.56,121.59,120.25,120.48,770000,120.48 +1943-01-18,121.60,121.93,121.24,121.56,710000,121.56 +1943-01-15,120.86,121.84,120.86,121.58,1000000,121.58 +1943-01-14,120.25,121.03,120.09,120.79,680000,120.79 +1943-01-13,119.98,120.59,119.80,120.25,630000,120.25 +1943-01-12,119.95,120.52,119.54,119.98,630000,119.98 +1943-01-11,119.51,120.41,119.51,119.95,810000,119.95 +1943-01-08,119.37,119.71,118.92,119.26,800000,119.26 +1943-01-07,119.66,119.95,118.84,119.37,710000,119.37 +1943-01-06,119.70,120.31,119.40,119.66,550000,119.66 +1943-01-05,120.25,120.62,119.50,119.70,670000,119.70 +1943-01-04,119.93,120.82,119.75,120.25,620000,120.25 +1942-12-31,119.56,120.19,119.08,119.40,1050000,119.40 +1942-12-30,118.40,119.83,118.28,119.56,1120000,119.56 +1942-12-29,118.50,118.95,117.30,118.40,1440000,118.40 +1942-12-28,119.71,119.96,118.22,118.50,1200000,118.50 +1942-12-24,119.07,119.67,118.56,119.27,800000,119.27 +1942-12-23,118.49,119.58,118.24,119.07,920000,119.07 +1942-12-22,118.66,119.23,118.09,118.49,780000,118.49 +1942-12-21,118.75,119.35,118.12,118.66,770000,118.66 +1942-12-18,118.68,119.76,118.41,118.97,1090000,118.97 +1942-12-17,117.06,119.07,116.60,118.68,1310000,118.68 +1942-12-16,116.31,117.38,116.08,117.06,910000,117.06 +1942-12-15,115.83,116.64,115.65,116.31,700000,116.31 +1942-12-14,115.82,116.13,115.21,115.83,690000,115.83 +1942-12-11,116.00,116.55,115.16,115.70,640000,115.70 +1942-12-10,115.93,116.38,115.41,116.00,570000,116.00 +1942-12-09,115.76,116.38,115.35,115.93,620000,115.93 +1942-12-08,115.03,116.05,115.03,115.76,620000,115.76 +1942-12-07,115.24,115.57,114.71,115.00,500000,115.00 +1942-12-04,115.19,115.42,114.41,115.02,530000,115.02 +1942-12-03,115.16,115.87,114.76,115.19,630000,115.19 +1942-12-02,114.61,115.61,114.43,115.16,540000,115.16 +1942-12-01,114.50,115.12,114.08,114.61,560000,114.61 +1942-11-30,114.95,115.03,114.01,114.50,470000,114.50 +1942-11-27,114.13,115.12,114.08,114.86,530000,114.86 +1942-11-25,114.10,114.66,113.55,114.13,570000,114.13 +1942-11-24,114.46,114.61,113.46,114.10,640000,114.10 +1942-11-23,115.27,115.27,114.03,114.46,630000,114.46 +1942-11-20,114.55,115.67,114.37,115.27,660000,115.27 +1942-11-19,114.64,114.95,114.24,114.55,500000,114.55 +1942-11-18,114.53,115.08,114.12,114.64,510000,114.64 +1942-11-17,115.70,116.24,114.42,114.53,670000,114.53 +1942-11-16,116.24,116.32,115.41,115.70,520000,115.70 +1942-11-13,116.46,116.76,115.80,116.26,670000,116.26 +1942-11-12,116.30,117.14,115.63,116.46,710000,116.46 +1942-11-10,117.14,117.14,115.96,116.30,770000,116.30 +1942-11-09,116.92,118.18,116.61,117.30,1210000,117.30 +1942-11-06,114.87,116.25,114.80,116.12,860000,116.12 +1942-11-05,114.56,115.29,114.23,114.87,600000,114.87 +1942-11-04,114.68,115.55,114.29,114.56,770000,114.56 +1942-11-02,114.07,115.09,114.02,114.68,760000,114.68 +1942-10-30,113.13,113.64,112.80,113.50,520000,113.50 +1942-10-29,113.11,113.47,112.59,113.13,460000,113.13 +1942-10-28,113.86,113.87,112.57,113.11,500000,113.11 +1942-10-27,115.06,115.06,113.50,113.86,630000,113.86 +1942-10-26,115.01,115.61,114.74,115.29,630000,115.29 +1942-10-23,114.94,115.52,114.45,114.88,730000,114.88 +1942-10-22,115.09,115.22,114.15,114.94,550000,114.94 +1942-10-21,115.22,116.01,114.61,115.09,700000,115.09 +1942-10-20,114.17,115.47,114.17,115.22,670000,115.22 +1942-10-19,113.40,113.89,113.13,113.64,400000,113.64 +1942-10-16,113.27,113.79,112.71,113.55,510000,113.55 +1942-10-15,114.56,114.56,113.11,113.27,600000,113.27 +1942-10-14,115.01,115.24,113.99,114.69,660000,114.69 +1942-10-13,114.93,115.80,114.68,115.01,860000,115.01 +1942-10-09,113.60,114.67,113.45,113.93,1050000,113.93 +1942-10-08,112.01,113.86,112.01,113.60,1090000,113.60 +1942-10-07,111.53,112.11,111.25,111.86,660000,111.86 +1942-10-06,111.93,112.09,111.16,111.53,700000,111.53 +1942-10-05,111.34,112.29,111.03,111.93,790000,111.93 +1942-10-02,109.68,111.02,109.68,110.83,900000,110.83 +1942-10-01,109.16,109.90,109.16,109.65,560000,109.65 +1942-09-30,109.24,109.37,108.70,109.11,340000,109.11 +1942-09-29,109.56,109.75,109.01,109.24,430000,109.24 +1942-09-28,109.32,109.98,109.29,109.56,400000,109.56 +1942-09-25,109.11,109.72,108.89,109.37,680000,109.37 +1942-09-24,108.27,109.42,108.18,109.11,850000,109.11 +1942-09-23,107.59,108.40,107.45,108.27,700000,108.27 +1942-09-22,107.27,107.83,107.16,107.59,520000,107.59 +1942-09-21,107.22,107.45,107.01,107.27,320000,107.27 +1942-09-18,106.72,107.59,106.72,107.47,420000,107.47 +1942-09-17,106.66,106.96,106.44,106.66,410000,106.66 +1942-09-16,106.49,106.93,106.19,106.66,380000,106.66 +1942-09-15,106.17,106.82,106.17,106.49,390000,106.49 +1942-09-14,106.20,106.32,105.92,106.15,310000,106.15 +1942-09-11,106.36,106.36,105.58,106.03,380000,106.03 +1942-09-10,107.17,107.17,106.30,106.38,350000,106.38 +1942-09-09,107.62,107.80,106.97,107.26,360000,107.26 +1942-09-08,106.76,107.88,106.76,107.62,400000,107.62 +1942-09-04,106.34,106.70,106.09,106.39,310000,106.39 +1942-09-03,106.49,106.50,106.07,106.34,280000,106.34 +1942-09-02,106.28,106.68,106.05,106.49,270000,106.49 +1942-09-01,106.33,106.52,105.76,106.28,290000,106.28 +1942-08-31,106.41,106.81,106.08,106.33,250000,106.33 +1942-08-28,106.03,106.64,105.92,106.23,300000,106.23 +1942-08-27,105.55,106.20,105.49,106.03,270000,106.03 +1942-08-26,106.28,106.28,105.37,105.55,360000,105.55 +1942-08-25,107.11,107.11,106.23,106.51,350000,106.51 +1942-08-24,107.30,107.73,106.94,107.25,380000,107.25 +1942-08-21,106.83,107.25,106.53,107.07,370000,107.07 +1942-08-20,107.21,107.21,106.46,106.83,310000,106.83 +1942-08-19,107.55,107.88,106.67,107.28,500000,107.28 +1942-08-18,106.96,107.72,106.96,107.55,560000,107.55 +1942-08-17,106.38,107.04,106.21,106.68,290000,106.68 +1942-08-14,105.75,106.65,105.75,106.15,380000,106.15 +1942-08-13,105.47,105.86,105.08,105.70,320000,105.70 +1942-08-12,105.42,105.81,105.00,105.47,280000,105.47 +1942-08-11,105.01,105.67,105.01,105.42,260000,105.42 +1942-08-10,104.90,105.18,104.55,104.91,210000,104.91 +1942-08-07,104.80,105.33,104.50,105.05,210000,105.05 +1942-08-06,104.85,105.07,104.55,104.80,250000,104.80 +1942-08-05,105.30,105.30,104.50,104.85,290000,104.85 +1942-08-04,106.08,106.21,105.43,105.55,320000,105.55 +1942-08-03,105.90,106.44,105.67,106.08,280000,106.08 +1942-07-31,105.37,106.27,105.37,105.72,310000,105.72 +1942-07-30,105.44,105.73,104.79,105.24,250000,105.24 +1942-07-29,106.34,106.34,105.30,105.44,290000,105.44 +1942-07-28,106.66,106.82,106.22,106.48,270000,106.48 +1942-07-27,106.53,106.97,106.32,106.66,260000,106.66 +1942-07-24,106.65,106.65,105.84,106.37,260000,106.37 +1942-07-23,107.88,107.88,106.45,106.65,330000,106.65 +1942-07-22,108.36,108.94,107.69,108.03,440000,108.03 +1942-07-21,107.98,108.68,107.94,108.36,280000,108.36 +1942-07-20,107.69,108.26,107.50,107.98,210000,107.98 +1942-07-17,108.91,108.92,107.68,107.82,280000,107.82 +1942-07-16,108.89,109.21,108.17,108.91,270000,108.91 +1942-07-15,108.72,109.49,108.50,108.89,390000,108.89 +1942-07-14,108.22,108.89,107.40,108.72,370000,108.72 +1942-07-13,108.69,108.69,107.79,108.22,280000,108.22 +1942-07-10,108.75,108.99,107.68,108.66,440000,108.66 +1942-07-09,107.94,109.26,107.60,108.75,840000,108.75 +1942-07-08,105.76,108.01,105.48,107.94,580000,107.94 +1942-07-07,106.10,106.34,105.32,105.76,330000,105.76 +1942-07-06,104.92,106.30,104.92,106.10,420000,106.10 +1942-07-03,103.84,104.77,103.84,104.49,360000,104.49 +1942-07-02,102.69,103.89,102.27,103.73,340000,103.73 +1942-07-01,103.29,103.29,102.28,102.69,210000,102.69 +1942-06-30,103.17,103.61,102.93,103.34,250000,103.34 +1942-06-29,102.68,103.57,102.68,103.17,260000,103.17 +1942-06-26,102.71,103.09,102.27,102.54,290000,102.54 +1942-06-25,102.67,103.06,101.94,102.71,250000,102.71 +1942-06-24,103.03,103.24,102.43,102.67,240000,102.67 +1942-06-23,102.77,103.44,102.73,103.03,210000,103.03 +1942-06-22,103.52,103.52,102.11,102.77,310000,102.77 +1942-06-19,105.52,105.52,104.55,104.77,290000,104.77 +1942-06-18,106.29,106.63,105.49,105.70,350000,105.70 +1942-06-17,104.68,106.38,104.68,106.29,390000,106.29 +1942-06-16,104.41,104.94,104.18,104.51,280000,104.51 +1942-06-15,104.08,104.54,103.99,104.41,260000,104.41 +1942-06-12,104.32,104.32,103.27,103.77,220000,103.77 +1942-06-11,104.19,104.69,103.94,104.49,280000,104.49 +1942-06-10,104.90,104.90,103.70,104.19,310000,104.19 +1942-06-09,105.55,106.34,104.83,105.09,400000,105.09 +1942-06-08,104.71,105.86,104.71,105.55,360000,105.55 +1942-06-05,103.61,105.26,103.60,104.41,490000,104.41 +1942-06-04,102.25,103.87,102.25,103.61,520000,103.61 +1942-06-03,101.30,102.33,101.01,102.15,330000,102.15 +1942-06-02,101.37,101.67,100.93,101.30,320000,101.30 +1942-06-01,100.96,101.84,100.96,101.37,310000,101.37 +1942-05-29,100.99,101.29,100.43,100.88,250000,100.88 +1942-05-28,101.09,101.50,100.52,100.99,350000,100.99 +1942-05-27,99.41,101.21,99.31,101.09,430000,101.09 +1942-05-26,99.18,100.00,99.02,99.41,290000,99.41 +1942-05-25,99.25,99.47,98.68,99.18,230000,99.18 +1942-05-22,99.72,99.95,98.83,99.18,330000,99.18 +1942-05-21,98.13,100.21,98.11,99.72,560000,99.72 +1942-05-20,97.96,98.50,97.22,98.13,410000,98.13 +1942-05-19,98.65,98.84,97.70,97.96,380000,97.96 +1942-05-18,98.63,99.16,98.24,98.65,220000,98.65 +1942-05-15,97.38,98.27,97.38,97.98,260000,97.98 +1942-05-14,97.21,97.37,96.39,97.13,280000,97.13 +1942-05-13,98.19,98.19,96.92,97.21,340000,97.21 +1942-05-12,99.20,99.35,98.31,98.56,250000,98.56 +1942-05-11,98.70,99.49,98.45,99.20,290000,99.20 +1942-05-08,97.77,98.57,97.65,97.91,310000,97.91 +1942-05-07,96.93,98.11,96.93,97.77,340000,97.77 +1942-05-06,97.29,97.35,96.19,96.71,270000,96.71 +1942-05-05,96.70,97.74,96.54,97.29,270000,97.29 +1942-05-04,96.44,97.15,96.34,96.70,260000,96.70 +1942-05-01,95.35,96.29,95.08,95.83,300000,95.83 +1942-04-30,94.71,95.76,94.71,95.35,280000,95.35 +1942-04-29,92.92,95.18,92.74,94.65,410000,94.65 +1942-04-28,93.69,93.69,92.69,92.92,310000,92.92 +1942-04-27,94.31,94.89,93.66,93.89,280000,93.89 +1942-04-24,94.80,94.80,93.59,94.13,390000,94.13 +1942-04-23,96.91,96.91,94.84,94.98,430000,94.98 +1942-04-22,97.51,97.64,96.79,97.20,260000,97.20 +1942-04-21,97.25,98.02,97.16,97.51,270000,97.51 +1942-04-20,96.92,97.47,96.63,97.25,240000,97.25 +1942-04-17,97.61,97.61,95.80,96.05,420000,96.05 +1942-04-16,98.06,98.46,97.61,97.87,260000,97.87 +1942-04-15,97.89,98.75,97.50,98.06,350000,98.06 +1942-04-14,99.21,99.21,97.77,97.89,560000,97.89 +1942-04-13,99.45,99.78,99.25,99.44,240000,99.44 +1942-04-10,99.69,100.15,99.31,99.74,300000,99.74 +1942-04-09,100.56,100.56,99.51,99.69,350000,99.69 +1942-04-08,101.89,101.97,100.89,101.23,300000,101.23 +1942-04-07,102.50,102.75,101.73,101.89,310000,101.89 +1942-04-06,101.11,102.69,101.05,102.50,340000,102.50 +1942-04-02,100.19,101.31,100.19,100.89,370000,100.89 +1942-04-01,99.53,100.19,99.32,99.95,280000,99.95 +1942-03-31,100.04,100.21,99.25,99.53,280000,99.53 +1942-03-30,100.00,100.54,99.76,100.04,230000,100.04 +1942-03-27,101.00,101.00,99.78,100.00,310000,100.00 +1942-03-26,101.48,101.54,100.73,101.05,300000,101.05 +1942-03-25,102.09,102.16,101.39,101.48,320000,101.48 +1942-03-24,101.20,102.43,101.02,102.09,360000,102.09 +1942-03-23,100.82,101.58,100.81,101.20,280000,101.20 +1942-03-20,101.25,101.31,100.43,100.75,280000,100.75 +1942-03-19,101.64,101.82,100.91,101.25,280000,101.25 +1942-03-18,102.54,102.73,101.26,101.64,340000,101.64 +1942-03-17,100.82,102.70,100.82,102.54,470000,102.54 +1942-03-16,99.64,100.81,99.50,100.68,320000,100.68 +1942-03-13,99.23,100.39,98.93,99.73,340000,99.73 +1942-03-12,99.21,100.25,98.32,99.23,460000,99.23 +1942-03-11,101.14,101.14,99.11,99.21,410000,99.21 +1942-03-10,102.09,102.32,101.17,101.49,340000,101.49 +1942-03-09,102.31,102.88,101.56,102.09,310000,102.09 +1942-03-06,104.08,104.08,102.03,102.10,640000,102.10 +1942-03-05,105.59,105.59,104.37,104.55,450000,104.55 +1942-03-04,106.97,107.04,105.69,105.99,380000,105.99 +1942-03-03,105.75,107.16,105.48,106.97,410000,106.97 +1942-03-02,106.49,106.49,105.33,105.75,330000,105.75 +1942-02-27,106.16,106.93,106.16,106.58,360000,106.58 +1942-02-26,105.64,106.24,105.40,105.88,350000,105.88 +1942-02-25,106.00,106.30,105.41,105.64,340000,105.64 +1942-02-24,105.54,106.73,105.54,106.00,390000,106.00 +1942-02-20,105.57,105.57,104.78,105.10,330000,105.10 +1942-02-19,105.35,106.03,104.93,105.57,350000,105.57 +1942-02-18,105.40,105.70,104.67,105.35,340000,105.35 +1942-02-17,107.05,107.05,105.20,105.40,390000,105.40 +1942-02-16,107.30,107.96,106.70,107.31,380000,107.31 +1942-02-13,106.51,107.01,106.12,106.73,320000,106.73 +1942-02-11,106.75,107.19,106.00,106.51,420000,106.51 +1942-02-10,107.81,107.81,106.21,106.75,640000,106.75 +1942-02-09,108.92,108.92,107.92,108.12,400000,108.12 +1942-02-06,110.44,110.53,109.30,109.47,430000,109.47 +1942-02-05,110.80,110.97,110.09,110.44,440000,110.44 +1942-02-04,109.99,111.04,109.91,110.80,500000,110.80 +1942-02-03,109.47,110.29,109.38,109.99,370000,109.99 +1942-02-02,109.11,109.68,109.08,109.47,330000,109.47 +1942-01-30,109.90,110.20,109.23,109.41,380000,109.41 +1942-01-29,110.15,110.39,109.50,109.90,420000,109.90 +1942-01-28,110.68,110.99,109.69,110.15,460000,110.15 +1942-01-27,110.67,111.20,110.31,110.68,550000,110.68 +1942-01-26,109.52,111.00,109.52,110.67,600000,110.67 +1942-01-23,108.94,109.44,108.39,109.12,430000,109.12 +1942-01-22,109.06,109.16,108.30,108.94,430000,108.94 +1942-01-21,110.12,110.12,108.71,109.06,580000,109.06 +1942-01-20,110.81,111.21,110.24,110.45,490000,110.45 +1942-01-19,110.68,111.34,109.98,110.81,430000,110.81 +1942-01-16,112.59,112.64,111.01,111.25,480000,111.25 +1942-01-15,112.59,113.02,112.17,112.59,450000,112.59 +1942-01-14,112.44,113.29,112.05,112.59,610000,112.59 +1942-01-13,110.90,112.61,110.90,112.44,730000,112.44 +1942-01-12,110.54,111.48,110.10,110.65,490000,110.65 +1942-01-09,111.55,111.97,110.45,111.02,660000,111.02 +1942-01-08,112.91,112.91,111.20,111.55,530000,111.55 +1942-01-07,113.93,113.93,112.62,113.10,630000,113.10 +1942-01-06,114.22,114.96,113.22,113.99,800000,113.99 +1942-01-05,113.75,114.76,113.20,114.22,720000,114.22 +1942-01-02,110.96,113.00,110.07,112.77,580000,112.77 +1941-12-31,111.32,111.99,109.75,110.96,1750000,110.96 +1941-12-30,107.56,112.04,107.45,111.32,2560000,111.32 +1941-12-29,107.54,108.94,106.36,107.56,2930000,107.56 +1941-12-26,106.67,107.86,105.92,106.95,1410000,106.95 +1941-12-24,106.34,107.56,105.52,106.67,1380000,106.67 +1941-12-23,106.59,107.21,105.57,106.34,1420000,106.34 +1941-12-22,107.81,108.83,106.23,106.59,1460000,106.59 +1941-12-19,108.21,109.52,107.61,108.28,1270000,108.28 +1941-12-18,109.36,109.67,107.18,108.21,1310000,108.21 +1941-12-17,110.86,111.05,108.68,109.36,1220000,109.36 +1941-12-16,111.15,112.30,110.29,110.86,1230000,110.86 +1941-12-15,110.73,112.01,109.97,111.15,1110000,111.15 +1941-12-12,110.91,111.76,109.53,110.58,1120000,110.58 +1941-12-11,109.01,111.73,108.38,110.91,1400000,110.91 +1941-12-10,109.27,109.76,106.87,109.01,2090000,109.01 +1941-12-09,112.52,112.73,107.56,109.27,2560000,109.27 +1941-12-08,115.46,115.46,111.53,112.52,2030000,112.52 +1941-12-05,116.44,116.44,115.09,115.90,980000,115.90 +1941-12-04,116.65,117.54,115.96,116.60,1130000,116.60 +1941-12-03,115.57,117.00,115.24,116.65,1090000,116.65 +1941-12-02,113.60,115.79,113.60,115.57,1180000,115.57 +1941-12-01,114.23,114.89,113.06,113.59,840000,113.59 +1941-11-28,115.64,115.68,114.10,114.66,870000,114.66 +1941-11-27,115.93,116.49,115.00,115.64,810000,115.64 +1941-11-26,116.96,116.98,115.61,115.93,850000,115.93 +1941-11-25,117.30,117.60,116.38,116.96,840000,116.96 +1941-11-24,117.04,118.19,116.89,117.30,820000,117.30 +1941-11-21,116.68,117.50,116.07,117.05,850000,117.05 +1941-11-19,115.87,116.90,115.47,116.68,800000,116.68 +1941-11-18,116.20,116.62,115.20,115.87,680000,115.87 +1941-11-17,116.72,117.03,115.69,116.20,630000,116.20 +1941-11-14,115.75,117.30,115.75,116.81,840000,116.81 +1941-11-13,115.44,116.34,114.91,115.67,830000,115.67 +1941-11-12,117.16,117.16,115.03,115.44,1020000,115.44 +1941-11-10,118.26,118.41,117.24,117.45,630000,117.45 +1941-11-07,118.84,118.84,117.64,118.33,700000,118.33 +1941-11-06,119.80,119.80,118.41,118.84,670000,118.84 +1941-11-05,118.87,120.34,118.84,119.85,920000,119.85 +1941-11-03,118.11,119.32,118.11,118.87,600000,118.87 +1941-10-31,119.17,119.17,117.40,117.82,640000,117.82 +1941-10-30,119.37,119.65,118.57,119.18,550000,119.18 +1941-10-29,119.60,119.96,118.99,119.37,550000,119.37 +1941-10-28,119.43,120.07,119.03,119.60,560000,119.60 +1941-10-27,120.04,120.04,119.11,119.43,480000,119.43 +1941-10-24,120.62,121.69,120.62,121.18,710000,121.18 +1941-10-23,120.56,120.84,119.77,120.47,540000,120.47 +1941-10-22,121.07,121.19,120.25,120.56,490000,120.56 +1941-10-21,120.13,121.27,119.83,121.07,580000,121.07 +1941-10-20,120.10,120.75,119.64,120.13,620000,120.13 +1941-10-17,118.52,119.56,117.88,119.15,670000,119.15 +1941-10-16,120.04,120.04,118.43,118.52,840000,118.52 +1941-10-15,121.36,121.36,120.19,120.52,480000,120.52 +1941-10-14,122.63,122.80,121.62,121.82,440000,121.82 +1941-10-10,122.53,123.06,122.01,122.46,490000,122.46 +1941-10-09,124.08,124.08,122.18,122.53,720000,122.53 +1941-10-08,124.42,124.52,123.61,124.13,440000,124.13 +1941-10-07,125.83,125.86,124.08,124.42,600000,124.42 +1941-10-06,126.10,126.20,125.50,125.83,490000,125.83 +1941-10-03,126.15,126.44,125.57,126.06,420000,126.06 +1941-10-02,126.85,127.06,126.08,126.15,470000,126.15 +1941-10-01,126.82,127.20,126.39,126.85,370000,126.85 +1941-09-30,126.49,127.31,126.49,126.82,460000,126.82 +1941-09-29,126.03,126.54,125.76,126.05,400000,126.05 +1941-09-26,126.38,126.68,125.55,125.81,490000,125.81 +1941-09-25,127.54,127.71,125.33,126.38,1170000,126.38 +1941-09-24,128.03,128.79,127.35,127.54,550000,127.54 +1941-09-23,127.64,128.50,127.59,128.03,490000,128.03 +1941-09-22,127.54,128.08,127.25,127.64,420000,127.64 +1941-09-19,128.77,128.81,127.74,127.95,580000,127.95 +1941-09-18,129.32,130.00,128.54,128.77,790000,128.77 +1941-09-17,127.43,129.48,127.27,129.32,890000,129.32 +1941-09-16,127.20,127.71,126.85,127.43,610000,127.43 +1941-09-15,127.28,127.54,126.95,127.20,460000,127.20 +1941-09-12,127.15,127.72,126.87,127.18,520000,127.18 +1941-09-11,126.53,127.45,126.31,127.15,690000,127.15 +1941-09-10,127.43,127.48,126.37,126.53,520000,126.53 +1941-09-09,127.51,128.38,127.16,127.43,870000,127.43 +1941-09-08,127.26,127.94,126.99,127.51,620000,127.51 +1941-09-05,127.51,127.54,126.88,127.17,580000,127.17 +1941-09-04,127.88,127.88,127.21,127.51,540000,127.51 +1941-09-03,128.31,128.56,127.54,127.91,460000,127.91 +1941-09-02,127.77,128.62,127.77,128.31,520000,128.31 +1941-08-29,127.77,127.88,127.05,127.43,350000,127.43 +1941-08-28,127.25,127.95,127.25,127.77,400000,127.77 +1941-08-27,126.60,127.37,126.60,127.08,430000,127.08 +1941-08-26,126.08,126.82,126.08,126.56,460000,126.56 +1941-08-25,125.91,126.25,125.50,125.86,330000,125.86 +1941-08-22,125.99,126.12,125.39,125.84,360000,125.84 +1941-08-21,126.01,126.42,125.72,125.99,390000,125.99 +1941-08-20,125.57,126.42,125.48,126.01,490000,126.01 +1941-08-19,125.62,125.91,125.20,125.57,390000,125.57 +1941-08-18,125.20,125.96,125.20,125.62,400000,125.62 +1941-08-15,125.96,125.97,124.66,124.90,390000,124.90 +1941-08-14,125.65,126.43,125.57,125.96,420000,125.96 +1941-08-13,125.81,126.10,125.42,125.65,420000,125.65 +1941-08-12,126.01,126.24,125.30,125.81,430000,125.81 +1941-08-11,126.40,126.61,125.63,126.01,450000,126.01 +1941-08-08,128.09,128.27,127.31,127.48,550000,127.48 +1941-08-07,128.10,128.57,127.68,128.09,500000,128.09 +1941-08-06,128.14,128.55,127.62,128.10,580000,128.10 +1941-08-05,128.17,128.54,127.61,128.14,640000,128.14 +1941-08-04,128.21,128.56,127.61,128.17,630000,128.17 +1941-08-01,128.68,128.68,127.64,128.22,680000,128.22 +1941-07-31,128.95,129.45,128.43,128.79,850000,128.79 +1941-07-30,129.19,129.34,128.07,128.95,750000,128.95 +1941-07-29,130.06,130.33,128.93,129.19,960000,129.19 +1941-07-28,128.70,130.37,128.65,130.06,940000,130.06 +1941-07-25,128.59,128.92,127.74,128.06,810000,128.06 +1941-07-24,129.16,129.40,128.39,128.59,620000,128.59 +1941-07-23,129.58,129.71,128.79,129.16,630000,129.16 +1941-07-22,129.51,131.10,129.22,129.58,1350000,129.58 +1941-07-21,127.98,129.57,127.78,129.51,910000,129.51 +1941-07-18,127.14,127.89,126.92,127.69,420000,127.69 +1941-07-17,127.83,127.88,126.75,127.14,460000,127.14 +1941-07-16,128.19,128.70,127.62,127.83,640000,127.83 +1941-07-15,127.89,128.68,127.53,128.19,700000,128.19 +1941-07-14,127.80,128.17,127.44,127.89,560000,127.89 +1941-07-11,127.78,128.70,127.35,127.90,810000,127.90 +1941-07-10,127.63,128.36,127.05,127.78,840000,127.78 +1941-07-09,127.64,128.77,127.12,127.63,1100000,127.63 +1941-07-08,126.16,128.00,126.07,127.64,1380000,127.64 +1941-07-07,124.54,126.24,124.54,126.16,900000,126.16 +1941-07-03,123.58,124.43,123.43,124.04,470000,124.04 +1941-07-02,122.85,123.90,122.78,123.58,390000,123.58 +1941-07-01,123.14,123.37,122.54,122.85,350000,122.85 +1941-06-30,123.40,123.58,122.87,123.14,270000,123.14 +1941-06-27,123.96,124.03,123.22,123.46,410000,123.46 +1941-06-26,123.52,124.13,123.42,123.96,530000,123.96 +1941-06-25,123.24,123.83,122.85,123.52,430000,123.52 +1941-06-24,123.97,124.03,122.88,123.24,440000,123.24 +1941-06-23,123.41,125.14,123.41,123.97,760000,123.97 +1941-06-20,123.30,123.30,121.85,122.19,360000,122.19 +1941-06-19,123.50,123.73,122.61,123.48,460000,123.48 +1941-06-18,123.17,124.31,123.17,123.50,580000,123.50 +1941-06-17,122.14,123.21,122.14,123.12,400000,123.12 +1941-06-16,122.04,122.58,121.72,121.95,340000,121.95 +1941-06-13,122.88,122.88,121.75,122.31,440000,122.31 +1941-06-12,122.18,123.48,122.17,122.98,560000,122.98 +1941-06-11,121.89,122.64,121.46,122.18,540000,122.18 +1941-06-10,120.61,122.48,120.61,121.89,830000,121.89 +1941-06-09,118.99,120.27,118.99,120.16,440000,120.16 +1941-06-06,118.13,118.26,117.78,118.00,330000,118.00 +1941-06-05,117.68,118.60,117.59,118.13,610000,118.13 +1941-06-04,117.38,117.98,116.89,117.68,430000,117.68 +1941-06-03,116.32,117.85,116.32,117.38,420000,117.38 +1941-06-02,115.76,116.45,115.52,116.18,260000,116.18 +1941-05-29,116.16,116.80,115.84,116.23,350000,116.23 +1941-05-28,115.95,116.50,115.56,116.16,340000,116.16 +1941-05-27,115.73,116.31,115.33,115.95,390000,115.95 +1941-05-26,116.28,116.28,115.51,115.73,300000,115.73 +1941-05-23,116.81,117.16,116.22,116.73,260000,116.73 +1941-05-22,117.82,117.98,116.56,116.81,400000,116.81 +1941-05-21,117.65,118.45,117.34,117.82,540000,117.82 +1941-05-20,116.31,117.78,116.31,117.65,470000,117.65 +1941-05-19,116.11,116.36,115.92,116.15,220000,116.15 +1941-05-16,115.73,116.38,115.36,115.86,290000,115.86 +1941-05-15,117.01,117.37,115.54,115.73,500000,115.73 +1941-05-14,117.21,117.36,116.67,117.01,320000,117.01 +1941-05-13,117.14,117.93,116.88,117.21,430000,117.21 +1941-05-12,117.54,117.83,116.85,117.14,440000,117.14 +1941-05-09,116.34,116.90,116.18,116.46,400000,116.46 +1941-05-08,116.76,116.76,115.97,116.34,440000,116.34 +1941-05-07,117.10,117.49,116.53,116.87,560000,116.87 +1941-05-06,116.02,117.63,116.02,117.10,910000,117.10 +1941-05-05,115.55,116.20,114.97,115.84,420000,115.84 +1941-05-02,115.41,116.34,115.41,115.72,400000,115.72 +1941-05-01,115.54,115.64,114.78,115.30,310000,115.30 +1941-04-30,116.73,116.78,115.36,115.54,410000,115.54 +1941-04-29,116.63,117.48,116.45,116.73,510000,116.73 +1941-04-28,116.43,116.86,115.96,116.63,310000,116.63 +1941-04-25,117.35,117.56,116.45,116.58,430000,116.58 +1941-04-24,116.61,117.85,116.61,117.35,490000,117.35 +1941-04-23,115.78,116.82,115.33,116.59,480000,116.59 +1941-04-22,116.06,117.03,115.36,115.78,440000,115.78 +1941-04-21,116.15,116.39,115.49,116.06,430000,116.06 +1941-04-18,117.74,117.74,116.11,116.28,490000,116.28 +1941-04-17,118.60,118.75,117.78,118.16,400000,118.16 +1941-04-16,118.59,119.01,117.65,118.60,440000,118.60 +1941-04-15,118.89,119.61,118.24,118.59,450000,118.59 +1941-04-14,118.60,119.05,118.01,118.89,460000,118.89 +1941-04-10,119.85,120.45,119.40,119.66,360000,119.66 +1941-04-09,120.72,120.72,119.56,119.85,590000,119.85 +1941-04-08,122.94,122.94,121.00,121.21,740000,121.21 +1941-04-07,124.11,124.11,123.36,123.64,360000,123.64 +1941-04-04,124.65,125.28,124.23,124.64,700000,124.64 +1941-04-03,123.74,124.93,123.74,124.65,940000,124.65 +1941-04-02,123.26,123.55,122.66,123.43,450000,123.43 +1941-04-01,122.87,123.57,122.87,123.26,430000,123.26 +1941-03-31,122.37,123.02,122.32,122.72,440000,122.72 +1941-03-28,123.33,123.70,122.47,122.68,440000,122.68 +1941-03-27,122.84,123.75,122.84,123.33,550000,123.33 +1941-03-26,122.78,123.21,122.55,122.70,530000,122.70 +1941-03-25,122.39,123.00,121.98,122.78,450000,122.78 +1941-03-24,121.92,122.62,121.82,122.39,370000,122.39 +1941-03-21,123.39,123.39,122.26,122.47,470000,122.47 +1941-03-20,123.55,123.92,123.26,123.60,490000,123.60 +1941-03-19,123.92,124.35,123.24,123.55,540000,123.55 +1941-03-18,123.46,124.10,123.02,123.92,410000,123.92 +1941-03-17,123.40,124.12,123.18,123.46,380000,123.46 +1941-03-14,122.56,123.12,122.42,122.75,320000,122.75 +1941-03-13,123.19,123.27,122.35,122.56,340000,122.56 +1941-03-12,123.27,124.04,122.73,123.19,460000,123.19 +1941-03-11,123.64,124.20,123.03,123.27,510000,123.27 +1941-03-10,121.48,123.71,121.48,123.64,620000,123.64 +1941-03-07,121.63,122.25,121.34,121.59,350000,121.59 +1941-03-06,120.30,121.68,120.10,121.63,480000,121.63 +1941-03-05,121.15,121.15,119.98,120.30,290000,120.30 +1941-03-04,120.88,121.44,120.62,121.16,310000,121.16 +1941-03-03,121.65,121.65,120.58,120.88,330000,120.88 +1941-02-28,121.87,122.69,121.60,121.97,410000,121.97 +1941-02-27,122.22,122.22,121.22,121.87,310000,121.87 +1941-02-26,122.40,122.90,121.99,122.39,380000,122.39 +1941-02-25,121.60,122.77,121.60,122.40,360000,122.40 +1941-02-24,120.44,121.74,120.44,121.49,350000,121.49 +1941-02-21,119.99,120.64,119.60,120.24,300000,120.24 +1941-02-20,118.84,120.52,118.84,119.99,450000,119.99 +1941-02-19,118.71,118.71,117.43,117.94,470000,117.94 +1941-02-18,119.18,119.65,118.53,118.98,320000,118.98 +1941-02-17,118.70,119.73,118.70,119.18,360000,119.18 +1941-02-14,120.74,120.74,117.57,117.66,930000,117.66 +1941-02-13,122.06,122.06,120.57,121.10,640000,121.10 +1941-02-11,123.80,123.80,122.51,122.61,420000,122.61 +1941-02-10,124.71,125.13,123.93,124.19,300000,124.19 +1941-02-07,124.58,124.58,123.57,124.30,340000,124.30 +1941-02-06,124.25,125.27,124.25,124.76,420000,124.76 +1941-02-05,122.77,124.55,122.77,124.14,490000,124.14 +1941-02-04,122.67,123.29,122.29,122.63,350000,122.63 +1941-02-03,123.28,123.75,122.40,122.67,490000,122.67 +1941-01-31,124.05,124.85,123.86,124.13,470000,124.13 +1941-01-30,125.96,125.96,123.94,124.05,780000,124.05 +1941-01-29,127.93,127.93,125.76,126.00,600000,126.00 +1941-01-28,129.03,129.27,128.42,128.60,470000,128.60 +1941-01-27,128.96,129.47,128.54,129.03,360000,129.03 +1941-01-24,128.34,128.92,127.68,128.52,410000,128.52 +1941-01-23,128.65,129.15,127.74,128.34,470000,128.34 +1941-01-22,128.20,129.03,127.98,128.65,520000,128.65 +1941-01-21,129.24,129.51,127.83,128.20,580000,128.20 +1941-01-20,129.75,129.99,128.78,129.24,380000,129.24 +1941-01-17,129.93,130.20,128.73,129.54,580000,129.54 +1941-01-16,131.36,131.36,129.82,129.93,610000,129.93 +1941-01-15,132.43,132.43,131.20,131.51,400000,131.51 +1941-01-14,133.11,133.11,132.17,132.44,470000,132.44 +1941-01-13,133.49,133.85,132.92,133.25,480000,133.25 +1941-01-10,133.39,134.27,133.14,133.59,750000,133.59 +1941-01-09,133.02,133.94,132.79,133.39,860000,133.39 +1941-01-08,133.02,133.74,132.35,133.02,640000,133.02 +1941-01-07,132.83,133.50,132.19,133.02,530000,133.02 +1941-01-06,132.42,133.68,132.42,132.83,720000,132.83 +1941-01-03,130.57,132.19,130.24,132.01,510000,132.01 +1941-01-02,131.13,131.88,130.39,130.57,530000,130.57 +1940-12-31,131.04,131.86,130.40,131.13,1070000,131.13 +1940-12-30,130.18,131.85,130.18,131.04,1180000,131.04 +1940-12-27,129.02,130.11,128.55,129.51,1270000,129.51 +1940-12-26,128.89,129.70,128.42,129.02,840000,129.02 +1940-12-24,128.41,129.47,128.08,128.89,830000,128.89 +1940-12-23,128.89,129.29,127.83,128.41,820000,128.41 +1940-12-20,128.84,129.66,128.19,128.87,830000,128.87 +1940-12-19,129.42,129.43,128.19,128.84,790000,128.84 +1940-12-18,130.53,130.92,129.31,129.42,780000,129.42 +1940-12-17,131.07,131.34,130.09,130.53,700000,130.53 +1940-12-16,132.28,132.28,130.74,131.07,660000,131.07 +1940-12-13,132.14,133.00,131.56,132.35,960000,132.35 +1940-12-12,131.76,132.53,131.24,132.14,780000,132.14 +1940-12-11,131.37,132.50,131.24,131.76,810000,131.76 +1940-12-10,131.46,131.97,130.69,131.37,610000,131.37 +1940-12-09,131.29,132.22,130.91,131.46,630000,131.46 +1940-12-06,129.96,130.86,129.62,130.33,540000,130.33 +1940-12-05,130.75,130.81,129.54,129.96,600000,129.96 +1940-12-04,130.78,131.21,129.99,130.75,650000,130.75 +1940-12-03,130.93,131.23,130.25,130.78,450000,130.78 +1940-12-02,131.00,131.96,130.54,130.93,480000,130.93 +1940-11-29,130.14,130.78,129.49,130.03,530000,130.03 +1940-11-28,129.78,130.57,129.13,130.14,470000,130.14 +1940-11-27,131.45,131.45,129.29,129.78,850000,129.78 +1940-11-26,131.96,132.72,131.28,131.94,590000,131.94 +1940-11-25,131.47,132.76,131.35,131.96,520000,131.96 +1940-11-22,132.22,133.36,131.29,131.74,710000,131.74 +1940-11-20,134.08,134.08,131.72,132.22,810000,132.22 +1940-11-19,134.74,134.99,133.51,134.48,700000,134.48 +1940-11-18,134.73,135.47,134.36,134.74,570000,134.74 +1940-11-15,136.97,137.44,135.24,135.59,1050000,135.59 +1940-11-14,136.61,137.78,136.20,136.97,1380000,136.97 +1940-11-13,137.41,137.61,135.77,136.61,1070000,136.61 +1940-11-12,138.12,138.50,136.56,137.41,1450000,137.41 +1940-11-08,137.75,138.77,135.76,136.64,1750000,136.64 +1940-11-07,131.98,138.13,131.93,137.75,2080000,137.75 +1940-11-06,135.00,135.00,131.47,131.98,1210000,131.98 +1940-11-04,134.85,135.83,133.81,135.21,1240000,135.21 +1940-11-01,134.61,135.84,134.13,134.41,1260000,134.41 +1940-10-31,133.06,135.10,133.06,134.61,1340000,134.61 +1940-10-30,132.19,133.43,131.90,132.98,670000,132.98 +1940-10-29,131.77,132.80,131.66,132.19,590000,132.19 +1940-10-28,132.26,132.27,130.96,131.77,470000,131.77 +1940-10-25,131.36,131.71,130.38,131.16,520000,131.16 +1940-10-24,132.29,132.29,131.06,131.36,540000,131.36 +1940-10-23,131.98,132.79,131.26,132.40,810000,132.40 +1940-10-22,131.37,132.44,131.04,131.98,540000,131.98 +1940-10-21,132.18,132.28,131.13,131.37,370000,131.37 +1940-10-18,132.49,132.90,131.92,132.45,590000,132.45 +1940-10-17,131.97,132.84,131.20,132.49,650000,132.49 +1940-10-16,131.48,132.69,131.05,131.97,660000,131.97 +1940-10-15,130.73,131.63,129.47,131.48,550000,131.48 +1940-10-14,131.04,131.49,130.32,130.73,400000,130.73 +1940-10-11,130.39,131.62,130.20,131.04,400000,131.04 +1940-10-10,130.54,131.22,130.09,130.39,380000,130.39 +1940-10-09,131.31,131.31,130.11,130.54,450000,130.54 +1940-10-08,133.31,133.31,131.20,131.31,500000,131.31 +1940-10-07,133.90,134.54,133.31,133.51,390000,133.51 +1940-10-04,134.48,134.48,133.37,133.79,470000,133.79 +1940-10-03,134.97,135.86,134.59,135.09,780000,135.09 +1940-10-02,134.33,135.41,133.70,134.97,770000,134.97 +1940-10-01,133.04,135.04,133.04,134.33,810000,134.33 +1940-09-30,132.32,133.07,132.10,132.64,400000,132.64 +1940-09-27,132.98,132.98,131.38,131.76,560000,131.76 +1940-09-26,134.00,134.00,133.00,133.50,440000,133.50 +1940-09-25,134.44,134.58,133.40,134.15,600000,134.15 +1940-09-24,135.10,135.48,133.89,134.44,710000,134.44 +1940-09-23,132.98,135.31,132.98,135.10,980000,135.10 +1940-09-20,131.34,131.95,130.77,131.61,380000,131.61 +1940-09-19,131.28,132.03,130.83,131.34,470000,131.34 +1940-09-18,130.43,131.67,129.91,131.28,480000,131.28 +1940-09-17,129.44,130.89,129.44,130.43,400000,130.43 +1940-09-16,128.89,130.04,128.89,129.44,290000,129.44 +1940-09-13,127.87,128.37,127.22,127.74,270000,127.74 +1940-09-12,129.32,129.32,127.46,127.87,400000,127.87 +1940-09-11,129.61,131.21,129.07,129.36,450000,129.36 +1940-09-10,129.73,130.53,129.18,129.61,360000,129.61 +1940-09-09,130.98,130.98,129.36,129.73,590000,129.73 +1940-09-06,134.10,134.19,132.71,133.12,710000,133.12 +1940-09-05,132.31,134.54,132.31,134.10,1250000,134.10 +1940-09-04,129.74,132.25,128.89,132.16,780000,132.16 +1940-09-03,129.42,130.59,129.12,129.74,550000,129.74 +1940-08-30,126.98,129.18,126.98,128.88,560000,128.88 +1940-08-29,126.87,127.37,126.49,126.87,270000,126.87 +1940-08-28,125.81,127.37,125.81,126.87,380000,126.87 +1940-08-27,125.71,125.76,124.95,125.33,220000,125.33 +1940-08-26,125.48,126.04,125.34,125.71,160000,125.71 +1940-08-23,126.34,126.34,124.81,125.34,290000,125.34 +1940-08-22,125.62,126.97,125.62,126.46,440000,126.46 +1940-08-21,123.95,125.38,123.95,125.07,360000,125.07 +1940-08-20,122.52,123.41,122.52,123.17,240000,123.17 +1940-08-19,121.98,122.37,121.70,122.06,130000,122.06 +1940-08-16,122.50,122.50,120.90,121.28,310000,121.28 +1940-08-15,122.73,123.46,122.73,123.04,220000,123.04 +1940-08-14,122.98,123.17,122.00,122.25,270000,122.25 +1940-08-13,126.42,126.42,122.64,122.98,640000,122.98 +1940-08-12,126.99,127.55,126.50,127.26,290000,127.26 +1940-08-09,125.44,126.81,125.44,126.40,310000,126.40 +1940-08-08,125.12,125.48,124.87,125.13,210000,125.13 +1940-08-07,125.27,125.47,124.61,125.12,240000,125.12 +1940-08-06,126.28,126.28,125.11,125.27,290000,125.27 +1940-08-05,126.36,126.73,125.57,126.44,280000,126.44 +1940-08-02,126.13,126.97,125.77,126.37,300000,126.37 +1940-08-01,126.14,126.86,125.57,126.13,330000,126.13 +1940-07-31,125.97,127.18,125.47,126.14,560000,126.14 +1940-07-30,123.58,126.18,123.58,125.97,670000,125.97 +1940-07-29,122.45,123.38,122.16,123.15,260000,123.15 +1940-07-26,121.93,122.75,121.70,122.05,270000,122.05 +1940-07-25,121.64,122.09,121.19,121.93,250000,121.93 +1940-07-24,122.23,122.30,121.49,121.64,200000,121.64 +1940-07-23,122.06,122.53,121.49,122.23,250000,122.23 +1940-07-22,121.87,122.47,121.62,122.06,230000,122.06 +1940-07-19,122.93,122.93,122.01,122.18,260000,122.18 +1940-07-18,122.82,123.22,122.52,123.00,220000,123.00 +1940-07-17,123.12,123.91,122.34,122.82,380000,122.82 +1940-07-16,121.82,123.73,121.82,123.12,440000,123.12 +1940-07-15,121.48,122.13,121.29,121.72,230000,121.72 +1940-07-12,121.58,121.95,121.32,121.63,260000,121.63 +1940-07-11,121.49,122.30,121.28,121.58,330000,121.58 +1940-07-10,121.60,121.82,120.83,121.49,280000,121.49 +1940-07-09,121.63,122.33,121.36,121.60,300000,121.60 +1940-07-08,121.59,122.04,121.39,121.63,230000,121.63 +1940-07-05,121.02,121.96,121.02,121.51,280000,121.51 +1940-07-03,120.96,121.68,120.14,120.96,380000,120.96 +1940-07-02,121.12,122.01,120.71,120.96,320000,120.96 +1940-07-01,121.77,121.77,120.79,121.12,270000,121.12 +1940-06-28,121.82,124.42,121.82,122.06,1170000,122.06 +1940-06-27,120.01,121.23,120.01,120.69,440000,120.69 +1940-06-26,120.74,120.74,118.67,119.73,640000,119.73 +1940-06-25,123.76,123.99,120.78,121.05,700000,121.05 +1940-06-24,122.83,124.05,122.60,123.76,470000,123.76 +1940-06-21,122.35,123.07,121.89,122.61,330000,122.61 +1940-06-20,123.79,123.79,121.96,122.35,590000,122.35 +1940-06-19,123.21,124.51,122.50,123.86,560000,123.86 +1940-06-18,122.80,125.31,122.35,123.21,720000,123.21 +1940-06-17,123.36,123.73,119.18,122.80,1210000,122.80 +1940-06-14,119.91,122.95,118.96,122.27,950000,122.27 +1940-06-13,121.46,122.10,119.37,119.91,880000,119.91 +1940-06-12,117.41,122.38,117.41,121.46,1360000,121.46 +1940-06-11,113.24,116.38,113.24,115.97,760000,115.97 +1940-06-10,114.42,114.42,110.41,111.84,970000,111.84 +1940-06-07,114.60,116.58,114.60,115.67,470000,115.67 +1940-06-06,113.25,114.80,113.05,114.48,430000,114.48 +1940-06-05,115.12,115.12,112.30,113.25,670000,113.25 +1940-06-04,114.75,116.25,114.75,115.79,410000,115.79 +1940-06-03,115.67,116.44,114.35,114.73,450000,114.73 +1940-05-31,115.24,117.15,115.13,116.22,530000,116.22 +1940-05-29,114.26,116.66,114.08,115.24,660000,115.24 +1940-05-28,114.76,114.76,110.51,114.26,1260000,114.26 +1940-05-27,115.07,117.71,115.07,116.35,790000,116.35 +1940-05-24,114.71,116.15,113.37,113.94,870000,113.94 +1940-05-23,114.75,117.84,112.78,114.71,1640000,114.71 +1940-05-22,114.13,116.50,112.43,114.75,2130000,114.75 +1940-05-21,120.52,120.52,110.61,114.13,3940000,114.13 +1940-05-20,122.43,124.98,121.68,122.43,1240000,122.43 +1940-05-17,130.43,131.21,122.93,124.20,3080000,124.20 +1940-05-16,129.08,131.35,127.54,130.43,2350000,130.43 +1940-05-15,128.27,131.17,125.76,129.08,3770000,129.08 +1940-05-14,136.85,136.85,128.11,128.27,3680000,128.27 +1940-05-13,144.42,144.42,137.25,137.63,2560000,137.63 +1940-05-10,148.17,148.48,144.51,144.77,2090000,144.77 +1940-05-09,147.96,148.60,147.65,148.17,850000,148.17 +1940-05-08,147.74,148.70,147.49,147.96,690000,147.96 +1940-05-07,147.33,148.22,146.89,147.74,580000,147.74 +1940-05-06,147.55,148.12,147.05,147.33,530000,147.33 +1940-05-03,147.76,148.70,146.42,147.65,1070000,147.65 +1940-05-02,147.15,148.18,147.15,147.76,650000,147.76 +1940-05-01,148.14,148.14,146.84,147.13,810000,147.13 +1940-04-30,148.41,149.06,147.98,148.43,590000,148.43 +1940-04-29,148.12,148.88,148.02,148.41,570000,148.41 +1940-04-26,148.56,148.72,147.37,147.73,850000,147.73 +1940-04-25,148.45,149.22,148.07,148.56,820000,148.56 +1940-04-24,148.93,149.45,148.20,148.45,850000,148.45 +1940-04-23,148.01,149.18,147.77,148.93,880000,148.93 +1940-04-22,147.67,148.68,147.45,148.01,870000,148.01 +1940-04-19,147.15,147.31,145.86,146.80,1160000,146.80 +1940-04-18,148.35,148.64,146.76,147.15,1210000,147.15 +1940-04-17,148.18,149.12,147.77,148.35,900000,148.35 +1940-04-16,149.72,150.24,147.43,148.18,1510000,148.18 +1940-04-15,149.66,150.67,149.20,149.72,1260000,149.72 +1940-04-12,149.98,150.09,148.68,149.20,830000,149.20 +1940-04-11,149.59,150.96,149.49,149.98,890000,149.98 +1940-04-10,150.31,150.55,149.12,149.59,1290000,149.59 +1940-04-09,151.29,152.01,149.16,150.31,2140000,150.31 +1940-04-08,151.10,152.09,150.63,151.29,1260000,151.29 +1940-04-05,150.41,151.32,149.94,150.36,1260000,150.36 +1940-04-04,149.65,151.15,149.56,150.41,2000000,150.41 +1940-04-03,147.92,149.74,147.56,149.65,1730000,149.65 +1940-04-02,147.72,148.37,147.48,147.92,840000,147.92 +1940-04-01,147.95,148.44,147.49,147.72,750000,147.72 +1940-03-29,147.25,148.04,146.82,147.54,840000,147.54 +1940-03-28,147.47,148.16,146.92,147.25,1020000,147.25 +1940-03-27,146.24,147.83,146.24,147.47,1190000,147.47 +1940-03-26,146.25,146.56,145.49,145.86,620000,145.86 +1940-03-25,146.73,146.96,146.15,146.25,600000,146.25 +1940-03-21,146.91,147.20,146.38,146.73,580000,146.73 +1940-03-20,146.43,147.30,146.34,146.91,650000,146.91 +1940-03-19,145.61,146.85,145.61,146.43,650000,146.43 +1940-03-18,145.76,146.18,145.08,145.59,510000,145.59 +1940-03-15,148.11,148.21,146.34,146.53,880000,146.53 +1940-03-14,148.32,148.57,147.63,148.11,660000,148.11 +1940-03-13,148.37,148.92,147.69,148.32,630000,148.32 +1940-03-12,148.15,149.45,147.93,148.37,880000,148.37 +1940-03-11,148.14,148.65,147.57,148.15,590000,148.15 +1940-03-08,148.32,148.80,147.76,148.07,750000,148.07 +1940-03-07,147.97,148.67,147.83,148.32,690000,148.32 +1940-03-06,147.08,148.37,147.08,147.97,860000,147.97 +1940-03-05,146.43,147.15,146.41,146.89,570000,146.89 +1940-03-04,146.33,146.77,146.00,146.43,460000,146.43 +1940-03-01,146.54,146.79,145.85,146.23,600000,146.23 +1940-02-29,146.56,147.21,146.10,146.54,620000,146.54 +1940-02-28,146.17,147.16,146.07,146.56,570000,146.56 +1940-02-27,146.44,147.10,145.90,146.17,510000,146.17 +1940-02-26,146.72,146.82,145.81,146.44,440000,146.44 +1940-02-23,148.17,148.17,146.93,147.35,650000,147.35 +1940-02-21,148.65,149.04,148.02,148.34,780000,148.34 +1940-02-20,148.46,148.95,147.51,148.65,810000,148.65 +1940-02-19,148.72,148.95,147.93,148.46,630000,148.46 +1940-02-16,148.46,148.60,147.38,148.20,680000,148.20 +1940-02-15,148.33,149.19,148.20,148.46,750000,148.46 +1940-02-14,148.78,148.83,147.65,148.33,650000,148.33 +1940-02-13,148.84,149.64,148.38,148.78,580000,148.78 +1940-02-09,148.54,150.04,148.54,148.94,1100000,148.94 +1940-02-08,146.63,148.50,146.32,148.40,870000,148.40 +1940-02-07,145.93,146.97,145.84,146.63,490000,146.63 +1940-02-06,145.00,146.00,144.79,145.93,540000,145.93 +1940-02-05,145.58,145.58,144.69,145.00,410000,145.00 +1940-02-02,145.23,145.97,144.83,145.33,520000,145.33 +1940-02-01,145.33,145.57,144.73,145.23,460000,145.23 +1940-01-31,145.63,145.91,145.12,145.33,610000,145.33 +1940-01-30,146.26,146.37,145.19,145.63,550000,145.63 +1940-01-29,146.51,147.05,145.86,146.26,490000,146.26 +1940-01-26,146.29,147.16,146.00,146.61,600000,146.61 +1940-01-25,147.00,147.29,146.04,146.29,540000,146.29 +1940-01-24,145.71,147.11,145.71,147.00,710000,147.00 +1940-01-23,145.13,145.97,144.85,145.49,510000,145.49 +1940-01-22,145.64,145.66,144.57,145.13,440000,145.13 +1940-01-19,145.61,146.75,145.52,145.86,640000,145.86 +1940-01-18,145.81,146.44,144.77,145.61,610000,145.61 +1940-01-17,145.67,146.71,145.30,145.81,470000,145.81 +1940-01-16,144.65,146.11,144.37,145.67,530000,145.67 +1940-01-15,145.19,145.95,143.06,144.65,860000,144.65 +1940-01-12,148.23,148.35,145.76,145.96,1110000,145.96 +1940-01-11,150.15,150.64,148.22,148.23,850000,148.23 +1940-01-10,149.84,150.47,149.35,150.15,600000,150.15 +1940-01-09,151.21,151.21,149.45,149.84,670000,149.84 +1940-01-08,151.19,152.11,151.08,151.34,630000,151.34 +1940-01-05,152.43,152.89,151.27,151.54,760000,151.54 +1940-01-04,152.80,153.26,152.06,152.43,860000,152.43 +1940-01-03,151.86,153.29,151.86,152.80,1020000,152.80 +1940-01-02,150.45,151.79,150.45,151.43,580000,151.43 +1939-12-29,149.48,150.70,149.06,149.99,1140000,149.99 +1939-12-28,148.52,150.10,148.24,149.48,1080000,149.48 +1939-12-27,149.27,149.51,147.66,148.52,1150000,148.52 +1939-12-26,149.85,150.11,148.83,149.27,720000,149.27 +1939-12-22,149.10,149.97,148.87,149.59,720000,149.59 +1939-12-21,149.13,149.90,148.59,149.10,740000,149.10 +1939-12-20,148.93,149.86,148.41,149.13,910000,149.13 +1939-12-19,149.22,149.59,148.35,148.93,750000,148.93 +1939-12-18,149.36,149.80,148.69,149.22,730000,149.22 +1939-12-15,148.93,150.11,148.74,149.64,700000,149.64 +1939-12-14,148.94,150.09,148.25,148.93,890000,148.93 +1939-12-13,147.12,149.29,147.12,148.94,1060000,148.94 +1939-12-12,147.05,147.59,146.43,146.93,610000,146.93 +1939-12-11,147.93,148.27,146.67,147.05,570000,147.05 +1939-12-08,148.57,148.57,147.50,147.86,580000,147.86 +1939-12-07,148.78,149.59,147.98,148.70,1010000,148.70 +1939-12-06,146.83,148.99,146.83,148.78,990000,148.78 +1939-12-05,146.34,147.29,146.05,146.49,590000,146.49 +1939-12-04,146.62,146.79,145.74,146.34,430000,146.34 +1939-12-01,145.69,146.94,145.51,146.54,610000,146.54 +1939-11-30,146.73,146.73,144.85,145.69,880000,145.69 +1939-11-29,148.31,149.18,146.82,146.89,780000,146.89 +1939-11-28,148.59,149.65,148.02,148.31,620000,148.31 +1939-11-27,148.64,149.05,147.98,148.59,520000,148.59 +1939-11-24,150.34,150.46,148.12,148.47,820000,148.47 +1939-11-22,150.67,150.67,149.62,150.34,570000,150.34 +1939-11-21,151.69,152.11,150.72,150.98,560000,150.98 +1939-11-20,151.53,152.58,151.02,151.69,750000,151.69 +1939-11-17,151.15,152.21,150.55,151.00,770000,151.00 +1939-11-16,149.53,151.42,149.27,151.15,830000,151.15 +1939-11-15,149.77,150.48,149.23,149.53,640000,149.53 +1939-11-14,149.07,150.53,148.98,149.77,780000,149.77 +1939-11-13,149.09,149.70,148.55,149.07,650000,149.07 +1939-11-10,148.75,149.33,147.74,149.09,1090000,149.09 +1939-11-09,150.35,150.87,148.53,148.75,1200000,148.75 +1939-11-08,151.43,151.43,149.81,150.35,1070000,150.35 +1939-11-06,152.35,152.35,150.76,151.46,1270000,151.46 +1939-11-03,151.56,153.18,150.04,152.64,1820000,152.64 +1939-11-02,151.60,152.20,150.47,151.56,850000,151.56 +1939-11-01,151.88,152.26,150.64,151.60,790000,151.60 +1939-10-31,153.21,153.24,151.32,151.88,1010000,151.88 +1939-10-30,153.12,153.60,152.39,153.21,640000,153.21 +1939-10-27,154.05,154.34,152.30,153.46,1060000,153.46 +1939-10-26,155.48,155.95,153.84,154.05,1680000,154.05 +1939-10-25,154.07,155.95,153.98,155.48,1690000,155.48 +1939-10-24,153.71,154.76,153.04,154.07,1160000,154.07 +1939-10-23,153.86,154.56,153.19,153.71,970000,153.71 +1939-10-20,153.36,153.87,152.55,153.00,790000,153.00 +1939-10-19,153.54,154.42,152.78,153.36,1160000,153.36 +1939-10-18,154.56,155.28,153.23,153.54,1400000,153.54 +1939-10-17,151.29,154.81,151.29,154.56,1840000,154.56 +1939-10-16,150.38,151.34,149.95,150.84,490000,150.84 +1939-10-13,151.34,152.40,150.43,150.85,740000,150.85 +1939-10-11,150.66,151.89,150.49,151.34,630000,151.34 +1939-10-10,149.92,152.02,149.92,150.66,950000,150.66 +1939-10-09,149.60,150.51,148.91,149.89,620000,149.89 +1939-10-06,150.48,153.06,149.61,150.61,1330000,150.61 +1939-10-05,150.25,151.68,149.72,150.48,910000,150.48 +1939-10-04,150.23,151.20,148.73,150.25,980000,150.25 +1939-10-03,151.41,152.20,149.29,150.23,1000000,150.23 +1939-10-02,152.36,152.36,150.68,151.41,840000,151.41 +1939-09-29,150.89,150.89,148.92,150.16,1130000,150.16 +1939-09-28,153.08,153.13,150.41,151.12,1570000,151.12 +1939-09-27,153.54,154.92,152.01,153.08,2340000,153.08 +1939-09-26,152.64,154.27,151.77,153.54,1710000,153.54 +1939-09-25,152.99,153.91,152.05,152.64,1230000,152.64 +1939-09-22,153.48,154.76,151.97,152.57,1660000,152.57 +1939-09-21,152.25,154.56,151.49,153.48,1730000,153.48 +1939-09-20,152.14,154.96,151.57,152.25,2140000,152.25 +1939-09-19,148.46,152.83,148.46,152.14,1830000,152.14 +1939-09-18,150.57,150.57,147.35,147.78,1730000,147.78 +1939-09-15,153.71,155.57,152.56,154.03,1590000,154.03 +1939-09-14,154.10,155.54,151.96,153.71,2010000,153.71 +1939-09-13,155.92,157.77,152.74,154.10,3760000,154.10 +1939-09-12,155.12,157.30,151.78,155.92,4170000,155.92 +1939-09-11,150.91,156.34,150.85,155.12,4680000,155.12 +1939-09-08,148.32,152.58,148.08,150.04,3510000,150.04 +1939-09-07,148.04,150.52,146.74,148.32,2600000,148.32 +1939-09-06,148.12,150.76,146.08,148.04,3940000,148.04 +1939-09-05,142.38,150.07,142.38,148.12,5930000,148.12 +1939-09-01,134.41,136.03,127.51,135.25,1970000,135.25 +1939-08-31,135.76,135.76,133.38,134.41,460000,134.41 +1939-08-30,137.39,138.07,135.76,136.16,500000,136.16 +1939-08-29,135.91,137.84,135.91,137.39,480000,137.39 +1939-08-28,136.39,136.40,132.68,134.66,670000,134.66 +1939-08-25,131.33,134.53,130.58,133.73,690000,133.73 +1939-08-24,131.82,132.42,128.60,131.33,1290000,131.33 +1939-08-23,134.80,134.80,131.49,131.82,790000,131.82 +1939-08-22,133.07,135.84,133.07,135.07,860000,135.07 +1939-08-21,133.93,133.93,132.11,132.81,850000,132.81 +1939-08-18,138.15,138.15,134.83,135.54,840000,135.54 +1939-08-17,138.47,138.89,137.38,138.33,440000,138.33 +1939-08-16,139.86,139.86,137.61,138.47,640000,138.47 +1939-08-15,140.76,142.35,140.76,141.29,660000,141.29 +1939-08-14,138.75,140.54,138.75,140.18,550000,140.18 +1939-08-11,137.25,138.93,136.38,137.29,700000,137.29 +1939-08-10,138.83,138.83,136.62,137.25,700000,137.25 +1939-08-09,140.58,140.58,139.14,139.75,470000,139.75 +1939-08-08,140.76,141.93,140.55,141.10,450000,141.10 +1939-08-07,142.11,142.38,140.31,140.76,520000,140.76 +1939-08-04,144.06,144.06,141.26,141.73,900000,141.73 +1939-08-03,144.26,145.75,143.79,144.24,1010000,144.24 +1939-08-02,143.36,144.90,142.69,144.26,1030000,144.26 +1939-08-01,143.26,143.89,142.45,143.36,580000,143.36 +1939-07-31,144.00,144.04,142.77,143.26,520000,143.26 +1939-07-28,144.51,145.04,143.48,144.11,810000,144.11 +1939-07-27,143.82,144.92,143.08,144.51,820000,144.51 +1939-07-26,143.10,144.39,142.41,143.82,890000,143.82 +1939-07-25,144.18,145.72,142.83,143.10,1230000,143.10 +1939-07-24,144.71,144.89,143.38,144.18,1070000,144.18 +1939-07-21,141.88,144.28,141.88,143.46,1270000,143.46 +1939-07-20,142.64,143.24,141.05,141.24,810000,141.24 +1939-07-19,143.60,143.60,141.70,142.64,1020000,142.64 +1939-07-18,142.96,144.74,142.96,143.76,1890000,143.76 +1939-07-17,138.48,143.20,138.48,142.58,1750000,142.58 +1939-07-14,138.02,138.41,137.24,137.57,540000,137.57 +1939-07-13,137.34,139.05,137.34,138.02,950000,138.02 +1939-07-12,134.67,137.24,134.67,136.98,910000,136.98 +1939-07-11,133.84,135.06,133.84,134.56,430000,134.56 +1939-07-10,133.24,134.21,133.22,133.79,280000,133.79 +1939-07-07,133.58,133.84,132.93,133.22,330000,133.22 +1939-07-06,133.68,134.31,132.98,133.58,410000,133.58 +1939-07-05,132.74,133.94,132.74,133.68,350000,133.68 +1939-07-03,131.73,132.22,131.18,131.93,240000,131.93 +1939-06-30,130.05,131.16,128.97,130.63,600000,130.63 +1939-06-29,131.81,131.81,129.71,130.05,820000,130.05 +1939-06-28,135.06,135.06,132.76,132.83,540000,132.83 +1939-06-27,135.09,135.77,134.01,135.42,480000,135.42 +1939-06-26,136.77,136.77,134.83,135.09,500000,135.09 +1939-06-23,136.88,137.95,136.48,137.42,480000,137.42 +1939-06-22,137.61,137.63,136.34,136.88,450000,136.88 +1939-06-21,137.57,138.04,136.87,137.61,470000,137.61 +1939-06-20,136.72,137.97,136.72,137.57,490000,137.57 +1939-06-19,135.72,137.02,135.72,136.40,350000,136.40 +1939-06-16,134.41,135.36,133.79,134.67,400000,134.67 +1939-06-15,137.03,137.03,134.26,134.41,580000,134.41 +1939-06-14,138.02,138.02,136.44,137.50,400000,137.50 +1939-06-13,139.09,139.09,137.38,138.20,530000,138.20 +1939-06-12,139.95,139.95,138.34,139.13,420000,139.13 +1939-06-09,138.61,140.75,138.61,140.09,790000,140.09 +1939-06-08,138.71,138.84,137.53,138.49,410000,138.49 +1939-06-07,138.36,139.79,138.17,138.71,530000,138.71 +1939-06-06,137.06,138.84,136.98,138.36,600000,138.36 +1939-06-05,137.12,137.36,136.34,137.06,350000,137.06 +1939-06-02,136.29,137.42,136.29,136.74,400000,136.74 +1939-06-01,137.36,137.36,135.52,136.20,600000,136.20 +1939-05-31,137.80,139.23,137.52,138.18,670000,138.18 +1939-05-29,136.80,137.91,136.42,137.80,600000,137.80 +1939-05-26,135.53,136.76,135.22,136.09,620000,136.09 +1939-05-25,135.11,137.16,135.11,135.53,1010000,135.53 +1939-05-24,132.09,135.14,132.09,135.04,1010000,135.04 +1939-05-23,132.45,132.88,131.49,131.77,420000,131.77 +1939-05-22,131.22,132.54,130.50,132.45,420000,132.45 +1939-05-19,129.43,130.90,129.22,130.38,400000,130.38 +1939-05-18,129.09,130.28,128.79,129.43,420000,129.43 +1939-05-17,129.77,129.77,128.35,129.09,530000,129.09 +1939-05-16,132.56,132.56,129.79,129.86,620000,129.86 +1939-05-15,132.40,133.68,132.35,132.65,340000,132.65 +1939-05-12,132.79,132.79,131.74,132.16,340000,132.16 +1939-05-11,132.82,133.26,131.85,132.92,400000,132.92 +1939-05-10,133.67,134.66,132.63,132.82,690000,132.82 +1939-05-09,132.11,134.02,132.11,133.67,710000,133.67 +1939-05-08,131.74,132.22,130.70,131.67,350000,131.67 +1939-05-05,131.86,132.12,130.76,131.47,330000,131.47 +1939-05-04,132.30,133.24,131.30,131.86,660000,131.86 +1939-05-03,129.60,132.64,129.60,132.30,740000,132.30 +1939-05-02,128.31,130.13,128.31,129.32,450000,129.32 +1939-05-01,128.45,128.55,127.53,127.83,280000,127.83 +1939-04-28,129.78,131.42,127.58,128.38,730000,128.38 +1939-04-27,128.56,130.21,128.49,129.78,540000,129.78 +1939-04-26,127.36,129.06,126.44,128.56,580000,128.56 +1939-04-25,127.34,128.53,127.02,127.36,420000,127.36 +1939-04-24,128.55,129.03,127.20,127.34,410000,127.34 +1939-04-21,128.41,129.62,127.97,128.71,390000,128.71 +1939-04-20,127.87,129.59,127.87,128.41,520000,128.41 +1939-04-19,125.63,127.61,125.63,127.01,440000,127.01 +1939-04-18,127.02,127.02,124.81,125.38,440000,125.38 +1939-04-17,128.01,128.01,126.15,127.34,520000,127.34 +1939-04-14,126.58,126.58,124.52,126.20,620000,126.20 +1939-04-13,126.29,129.32,126.29,127.51,860000,127.51 +1939-04-12,125.15,127.51,125.15,126.15,1070000,126.15 +1939-04-11,124.03,124.42,120.04,123.75,1660000,123.75 +1939-04-10,121.44,124.27,120.82,124.03,1650000,124.03 +1939-04-06,129.23,129.23,125.49,126.32,1310000,126.32 +1939-04-05,129.80,131.38,128.64,130.34,880000,130.34 +1939-04-04,131.09,131.09,127.16,129.80,1530000,129.80 +1939-04-03,132.83,135.57,130.49,132.25,1470000,132.25 +1939-03-31,136.69,138.01,131.35,131.84,2890000,131.84 +1939-03-30,139.75,140.55,136.41,136.69,990000,136.69 +1939-03-29,139.33,140.55,138.84,139.75,470000,139.75 +1939-03-28,139.98,139.98,138.46,139.33,680000,139.33 +1939-03-27,141.55,143.14,140.91,141.14,570000,141.14 +1939-03-24,141.13,142.80,141.13,141.82,650000,141.82 +1939-03-23,139.51,142.17,139.42,140.33,830000,140.33 +1939-03-22,141.97,141.97,138.42,139.51,1440000,139.51 +1939-03-21,142.67,144.31,142.67,143.41,690000,143.41 +1939-03-20,141.68,143.14,140.57,141.28,950000,141.28 +1939-03-17,146.13,146.13,142.99,143.89,1470000,143.89 +1939-03-16,147.66,148.17,146.45,147.54,670000,147.54 +1939-03-15,150.28,150.28,147.16,147.66,1110000,147.66 +1939-03-14,150.79,151.39,149.91,151.10,690000,151.10 +1939-03-13,151.58,151.58,150.20,150.79,650000,150.79 +1939-03-10,151.33,152.71,151.22,152.28,1210000,152.28 +1939-03-09,151.42,152.42,150.52,151.33,1360000,151.33 +1939-03-08,149.37,151.56,149.17,151.42,1050000,151.42 +1939-03-07,148.86,149.88,148.86,149.37,570000,149.37 +1939-03-06,149.49,150.23,148.37,148.84,840000,148.84 +1939-03-03,147.31,148.89,147.31,148.76,1020000,148.76 +1939-03-02,147.15,147.19,146.34,146.96,600000,146.96 +1939-03-01,147.30,147.88,146.62,147.15,640000,147.15 +1939-02-28,146.76,148.16,146.76,147.30,1060000,147.30 +1939-02-27,146.82,147.32,146.10,146.62,750000,146.62 +1939-02-24,143.46,145.69,143.46,145.44,970000,145.44 +1939-02-23,142.64,143.63,142.45,142.93,460000,142.93 +1939-02-21,142.74,143.13,142.05,142.64,470000,142.64 +1939-02-20,144.54,144.54,142.48,142.74,690000,142.74 +1939-02-17,145.39,146.03,144.69,144.95,680000,144.95 +1939-02-16,144.60,146.12,144.50,145.39,850000,145.39 +1939-02-15,144.13,144.95,143.83,144.60,500000,144.60 +1939-02-14,144.48,144.48,143.49,144.13,420000,144.13 +1939-02-10,143.99,144.01,142.70,143.68,450000,143.68 +1939-02-09,145.43,145.56,143.83,143.99,550000,143.99 +1939-02-08,144.45,145.55,144.45,145.43,610000,145.43 +1939-02-07,145.03,145.11,143.50,144.10,570000,144.10 +1939-02-06,145.07,146.43,144.78,145.03,1040000,145.03 +1939-02-03,144.34,144.50,143.02,143.55,540000,143.55 +1939-02-02,142.59,144.49,142.59,144.34,700000,144.34 +1939-02-01,143.47,143.47,141.92,142.43,580000,142.43 +1939-01-31,142.52,144.74,142.52,143.76,1120000,143.76 +1939-01-30,139.32,141.80,139.32,141.56,790000,141.56 +1939-01-27,136.84,139.27,136.84,138.90,1060000,138.90 +1939-01-26,139.58,139.58,136.10,136.42,1540000,136.42 +1939-01-25,141.35,141.68,139.37,140.72,900000,140.72 +1939-01-24,141.32,142.83,139.62,141.35,1700000,141.35 +1939-01-23,144.13,144.13,141.00,141.32,1870000,141.32 +1939-01-20,149.47,149.75,148.77,149.11,740000,149.11 +1939-01-19,148.99,149.88,148.35,149.47,890000,149.47 +1939-01-18,148.93,149.56,148.55,148.99,630000,148.99 +1939-01-17,148.26,149.23,147.49,148.93,820000,148.93 +1939-01-16,148.26,148.71,147.70,148.26,670000,148.26 +1939-01-13,147.33,147.84,146.03,146.52,850000,146.52 +1939-01-12,148.65,149.43,146.17,147.33,1360000,147.33 +1939-01-11,150.18,150.18,148.45,148.65,920000,148.65 +1939-01-10,150.19,151.32,150.04,150.48,710000,150.48 +1939-01-09,151.07,151.07,149.23,150.19,1100000,150.19 +1939-01-06,153.18,153.55,152.42,152.87,950000,152.87 +1939-01-05,154.85,155.47,153.02,153.18,1570000,153.18 +1939-01-04,153.64,155.19,153.14,154.85,1500000,154.85 +1939-01-03,154.76,154.99,153.16,153.64,1150000,153.64 +1938-12-30,153.62,154.94,153.52,154.36,1400000,154.36 +1938-12-29,152.06,153.85,152.06,153.62,1880000,153.62 +1938-12-28,150.43,151.95,149.56,151.45,2160000,151.45 +1938-12-27,151.38,151.74,150.04,150.43,1340000,150.43 +1938-12-23,150.53,152.02,150.52,151.39,1220000,151.39 +1938-12-22,149.58,150.79,149.28,150.53,1040000,150.53 +1938-12-21,150.46,150.72,149.06,149.58,1060000,149.58 +1938-12-20,150.38,151.29,149.69,150.46,940000,150.46 +1938-12-19,150.36,151.77,149.72,150.38,1100000,150.38 +1938-12-16,151.82,152.21,150.52,150.89,1150000,150.89 +1938-12-15,151.83,153.16,151.44,151.82,1800000,151.82 +1938-12-14,149.59,152.08,149.38,151.83,1970000,151.83 +1938-12-13,148.65,150.16,148.60,149.59,1090000,149.59 +1938-12-12,148.31,149.71,148.23,148.65,900000,148.65 +1938-12-09,147.63,148.31,146.92,147.39,700000,147.39 +1938-12-08,148.73,148.79,147.35,147.63,740000,147.63 +1938-12-07,148.33,149.98,148.30,148.73,1110000,148.73 +1938-12-06,147.47,149.27,147.01,148.33,990000,148.33 +1938-12-05,147.50,147.88,146.44,147.47,680000,147.47 +1938-12-02,148.50,148.50,146.68,147.57,820000,147.57 +1938-12-01,149.82,150.20,148.17,148.63,860000,148.63 +1938-11-30,147.68,149.97,147.68,149.82,980000,149.82 +1938-11-29,146.38,147.85,146.38,147.07,820000,147.07 +1938-11-28,147.93,147.93,145.21,146.14,1240000,146.14 +1938-11-25,149.88,151.13,149.79,150.10,810000,150.10 +1938-11-23,149.56,151.00,149.27,149.88,1000000,149.88 +1938-11-22,150.14,150.14,148.90,149.56,880000,149.56 +1938-11-21,150.38,151.03,149.15,150.26,940000,150.26 +1938-11-18,152.78,153.19,149.16,149.93,1420000,149.93 +1938-11-17,151.54,153.18,151.34,152.78,1000000,152.78 +1938-11-16,154.66,155.60,151.41,151.54,1800000,151.54 +1938-11-15,155.33,155.33,153.17,154.66,1470000,154.66 +1938-11-14,157.57,157.57,155.16,155.61,1650000,155.61 +1938-11-10,158.08,158.90,156.79,157.47,2180000,157.47 +1938-11-09,155.62,158.39,155.62,158.08,3100000,158.08 +1938-11-07,152.12,155.56,152.02,154.91,1760000,154.91 +1938-11-04,152.31,153.08,151.44,152.10,1200000,152.10 +1938-11-03,152.21,153.13,151.72,152.31,1070000,152.31 +1938-11-02,151.39,152.64,150.68,152.21,780000,152.21 +1938-11-01,151.73,152.83,150.93,151.39,1280000,151.39 +1938-10-31,151.07,152.17,150.28,151.73,1090000,151.73 +1938-10-28,152.69,152.82,150.75,151.07,1560000,151.07 +1938-10-27,152.40,153.93,151.46,152.69,2000000,152.69 +1938-10-26,153.52,153.52,151.28,152.40,1700000,152.40 +1938-10-25,154.12,155.22,153.46,154.17,1500000,154.17 +1938-10-24,154.11,155.38,153.52,154.12,1680000,154.12 +1938-10-21,151.52,153.01,151.36,152.15,1720000,152.15 +1938-10-20,150.02,151.90,149.46,151.52,1620000,151.52 +1938-10-19,152.10,153.02,149.41,150.02,2430000,150.02 +1938-10-18,150.81,152.37,148.68,152.10,2410000,152.10 +1938-10-17,151.96,153.15,150.46,150.81,2520000,150.81 +1938-10-14,152.46,153.19,150.96,151.45,1950000,151.45 +1938-10-13,150.05,152.93,150.05,152.46,2360000,152.46 +1938-10-11,149.55,150.40,148.21,149.41,1530000,149.41 +1938-10-10,149.75,150.57,148.70,149.55,1660000,149.55 +1938-10-07,148.10,149.43,147.29,148.41,1470000,148.41 +1938-10-06,148.32,150.48,147.70,148.10,2450000,148.10 +1938-10-05,144.59,148.51,144.59,148.32,2240000,148.32 +1938-10-04,144.29,144.83,143.26,144.23,950000,144.23 +1938-10-03,143.13,145.21,142.64,144.29,1460000,144.29 +1938-09-30,139.61,142.05,139.61,141.45,1900000,141.45 +1938-09-29,134.58,137.45,134.58,137.16,1230000,137.16 +1938-09-28,130.19,134.54,127.85,133.68,1570000,133.68 +1938-09-27,129.91,132.49,129.62,130.19,770000,130.19 +1938-09-26,131.82,131.82,127.88,129.91,1230000,129.91 +1938-09-23,136.07,136.07,133.71,134.08,720000,134.08 +1938-09-22,138.17,138.17,136.81,137.35,470000,137.35 +1938-09-21,138.41,140.20,137.57,139.29,1030000,139.29 +1938-09-20,137.11,139.49,137.11,138.41,1200000,138.41 +1938-09-19,133.49,135.24,133.49,134.10,830000,134.10 +1938-09-16,135.53,135.53,134.06,134.85,670000,134.85 +1938-09-15,134.47,136.97,134.47,136.22,1140000,136.22 +1938-09-14,134.19,136.91,130.38,132.93,2820000,132.93 +1938-09-13,140.19,141.95,133.90,134.19,1700000,134.19 +1938-09-12,138.29,140.67,138.16,140.19,600000,140.19 +1938-09-09,141.39,141.39,139.20,139.90,700000,139.90 +1938-09-08,142.90,142.90,141.63,142.19,570000,142.19 +1938-09-07,141.47,143.42,141.05,143.08,890000,143.08 +1938-09-06,142.48,142.80,141.10,141.47,420000,141.47 +1938-09-02,138.52,141.48,138.52,141.38,550000,141.38 +1938-09-01,139.27,139.45,137.65,138.36,510000,138.36 +1938-08-31,138.30,139.80,138.30,139.27,460000,139.27 +1938-08-30,137.08,138.89,137.08,138.26,630000,138.26 +1938-08-29,139.56,139.56,136.64,137.06,1250000,137.06 +1938-08-26,144.07,144.61,142.69,142.94,820000,142.94 +1938-08-25,143.53,144.36,142.57,144.07,830000,144.07 +1938-08-24,143.70,145.30,143.28,143.53,1240000,143.53 +1938-08-23,141.03,144.00,141.03,143.70,1100000,143.70 +1938-08-22,141.20,141.61,140.12,140.92,400000,140.92 +1938-08-19,139.33,142.05,139.18,141.13,830000,141.13 +1938-08-18,139.03,139.76,138.38,139.33,450000,139.33 +1938-08-17,138.58,140.89,138.58,139.03,600000,139.03 +1938-08-16,137.09,139.38,137.09,138.44,610000,138.44 +1938-08-15,136.45,138.20,136.45,136.98,590000,136.98 +1938-08-12,138.31,138.31,135.38,136.51,1480000,136.51 +1938-08-11,142.40,142.75,139.13,139.32,1100000,139.32 +1938-08-10,143.21,143.67,141.80,142.40,810000,142.40 +1938-08-09,143.87,143.87,141.59,143.21,830000,143.21 +1938-08-08,145.67,145.89,143.75,144.33,910000,144.33 +1938-08-05,142.34,144.76,142.34,144.47,1170000,144.47 +1938-08-04,141.73,142.76,141.04,142.13,610000,142.13 +1938-08-03,141.97,143.40,141.10,141.73,820000,141.73 +1938-08-02,140.37,142.50,139.90,141.97,820000,141.97 +1938-08-01,140.96,140.96,139.83,140.37,590000,140.37 +1938-07-29,142.20,143.57,140.93,141.20,1200000,141.20 +1938-07-28,140.24,142.50,139.51,142.20,1070000,142.20 +1938-07-27,143.33,144.03,139.39,140.24,1970000,140.24 +1938-07-26,144.18,144.18,142.48,143.33,1250000,143.33 +1938-07-25,144.24,146.31,144.23,144.91,2110000,144.91 +1938-07-22,141.92,143.13,141.20,142.25,1220000,142.25 +1938-07-21,141.84,143.51,140.52,141.92,1810000,141.92 +1938-07-20,143.67,143.97,141.09,141.84,2510000,141.84 +1938-07-19,141.27,144.12,141.27,143.67,2940000,143.67 +1938-07-18,138.53,140.78,137.70,140.39,1560000,140.39 +1938-07-15,135.81,138.17,135.52,137.30,930000,137.30 +1938-07-14,136.90,137.85,135.22,135.81,1160000,135.81 +1938-07-13,137.49,140.52,136.46,136.90,2620000,136.90 +1938-07-12,134.56,138.22,133.84,137.49,1620000,137.49 +1938-07-11,136.20,136.72,133.97,134.56,1090000,134.56 +1938-07-08,136.76,136.76,134.51,135.66,1570000,135.66 +1938-07-07,137.78,140.05,136.44,137.45,2770000,137.45 +1938-07-06,136.52,138.20,134.57,137.78,1820000,137.78 +1938-07-05,138.50,138.50,135.19,136.52,1700000,136.52 +1938-07-01,133.88,137.13,133.53,136.53,2030000,136.53 +1938-06-30,135.87,138.19,133.24,133.88,2580000,133.88 +1938-06-29,130.38,136.13,130.36,135.87,2660000,135.87 +1938-06-28,130.48,132.28,129.44,130.38,1290000,130.38 +1938-06-27,131.94,132.98,129.79,130.48,2110000,130.48 +1938-06-24,127.54,130.71,127.54,129.06,2290000,129.06 +1938-06-23,123.99,128.49,123.71,127.40,2400000,127.40 +1938-06-22,121.34,124.74,120.65,123.99,1710000,123.99 +1938-06-21,119.01,122.36,119.01,121.34,1460000,121.34 +1938-06-20,115.31,118.92,115.31,118.61,1090000,118.61 +1938-06-17,113.97,114.51,112.82,113.06,330000,113.06 +1938-06-16,113.24,114.30,112.93,113.97,340000,113.97 +1938-06-15,112.88,114.18,112.88,113.24,340000,113.24 +1938-06-14,111.87,113.06,111.54,112.78,350000,112.78 +1938-06-13,113.37,113.37,111.75,111.87,330000,111.87 +1938-06-10,115.74,116.08,114.29,114.47,410000,114.47 +1938-06-09,113.79,116.03,113.79,115.74,590000,115.74 +1938-06-08,113.12,114.04,112.78,113.75,280000,113.75 +1938-06-07,113.19,114.51,112.84,113.12,370000,113.12 +1938-06-06,112.01,114.27,112.01,113.19,470000,113.19 +1938-06-03,110.52,110.52,109.35,109.71,290000,109.71 +1938-06-02,110.61,111.94,110.35,110.68,480000,110.68 +1938-06-01,107.74,110.87,107.58,110.61,540000,110.61 +1938-05-31,108.50,108.50,106.94,107.74,400000,107.74 +1938-05-27,108.28,108.55,106.44,107.98,760000,107.98 +1938-05-26,110.60,111.30,108.14,108.28,780000,108.28 +1938-05-25,112.24,112.24,110.43,110.60,560000,110.60 +1938-05-24,113.97,114.66,112.26,112.35,420000,112.35 +1938-05-23,113.25,114.27,112.88,113.97,330000,113.97 +1938-05-20,115.28,115.48,114.08,114.99,440000,114.99 +1938-05-19,117.02,117.08,114.92,115.28,490000,115.28 +1938-05-18,116.36,117.49,116.31,117.02,400000,117.02 +1938-05-17,115.38,116.65,114.75,116.36,410000,116.36 +1938-05-16,117.11,117.11,115.19,115.38,400000,115.38 +1938-05-13,118.41,118.41,116.30,116.87,610000,116.87 +1938-05-12,118.52,119.67,117.88,118.55,600000,118.55 +1938-05-11,117.93,119.70,117.78,118.52,980000,118.52 +1938-05-10,119.43,120.28,117.75,117.93,1040000,117.93 +1938-05-09,117.21,119.81,116.36,119.43,1020000,119.43 +1938-05-06,113.46,117.44,113.27,117.16,1020000,117.16 +1938-05-05,113.88,115.42,112.86,113.46,690000,113.46 +1938-05-04,112.71,114.32,111.69,113.88,550000,113.88 +1938-05-03,110.75,113.12,110.75,112.71,470000,112.71 +1938-05-02,110.55,110.55,109.40,110.09,350000,110.09 +1938-04-29,111.88,111.88,109.83,111.66,540000,111.66 +1938-04-28,114.83,114.83,111.73,111.98,540000,111.98 +1938-04-27,114.75,116.22,114.75,115.25,430000,115.25 +1938-04-26,115.70,115.70,113.51,113.94,450000,113.94 +1938-04-25,116.86,116.86,115.40,116.23,400000,116.23 +1938-04-22,115.74,119.67,115.74,118.52,1120000,118.52 +1938-04-21,114.90,115.98,114.05,115.40,600000,115.40 +1938-04-20,115.50,115.50,112.47,114.90,780000,114.90 +1938-04-19,118.46,118.46,116.00,116.34,570000,116.34 +1938-04-18,121.00,121.54,118.45,118.99,860000,118.99 +1938-04-14,114.85,117.57,113.56,116.82,1010000,116.82 +1938-04-13,113.88,116.29,113.79,114.85,640000,114.85 +1938-04-12,112.93,114.15,111.60,113.88,600000,113.88 +1938-04-11,115.32,115.71,112.43,112.93,1100000,112.93 +1938-04-08,106.89,110.23,106.89,109.57,830000,109.57 +1938-04-07,106.29,106.93,104.78,105.43,330000,105.43 +1938-04-06,107.90,107.90,105.72,106.29,480000,106.29 +1938-04-05,105.58,108.67,104.85,108.36,690000,108.36 +1938-04-04,106.11,106.79,104.47,105.58,690000,105.58 +1938-04-01,100.95,103.37,100.95,103.02,860000,103.02 +1938-03-31,100.97,102.86,97.46,98.95,1270000,98.95 +1938-03-30,101.92,103.89,100.17,100.97,1670000,100.97 +1938-03-29,105.87,105.87,101.56,101.92,1720000,101.92 +1938-03-28,106.63,108.55,105.68,107.25,1250000,107.25 +1938-03-25,114.37,114.37,108.12,108.57,1680000,108.57 +1938-03-24,114.38,115.97,112.73,114.64,890000,114.64 +1938-03-23,115.95,115.95,112.78,114.38,1470000,114.38 +1938-03-22,120.29,120.35,116.47,117.11,690000,117.11 +1938-03-21,120.43,122.48,120.09,120.29,540000,120.29 +1938-03-18,121.92,121.92,117.20,118.41,1580000,118.41 +1938-03-17,122.87,124.60,121.90,122.03,640000,122.03 +1938-03-16,126.10,126.10,121.84,122.87,1020000,122.87 +1938-03-15,124.52,127.44,124.52,127.24,760000,127.24 +1938-03-14,122.85,124.53,122.85,123.68,430000,123.68 +1938-03-11,123.89,123.89,121.93,122.44,770000,122.44 +1938-03-10,125.67,126.35,124.52,124.71,460000,124.71 +1938-03-09,125.33,126.83,124.57,125.67,560000,125.67 +1938-03-08,125.38,125.85,122.81,125.33,740000,125.33 +1938-03-07,127.63,127.63,125.19,125.38,620000,125.38 +1938-03-04,128.22,129.57,127.37,127.78,490000,127.78 +1938-03-03,128.75,128.75,127.39,128.22,470000,128.22 +1938-03-02,130.47,130.68,129.19,129.38,410000,129.38 +1938-03-01,129.64,131.03,128.84,130.47,530000,130.47 +1938-02-28,130.89,130.89,128.63,129.64,560000,129.64 +1938-02-25,130.85,132.66,129.85,131.58,900000,131.58 +1938-02-24,132.05,132.05,130.47,130.85,720000,130.85 +1938-02-23,130.69,132.86,130.69,132.41,1300000,132.41 +1938-02-21,127.60,130.19,127.60,129.49,760000,129.49 +1938-02-18,127.59,128.74,125.61,126.29,770000,126.29 +1938-02-17,125.03,128.35,125.03,127.59,860000,127.59 +1938-02-16,124.93,125.35,123.39,124.90,470000,124.90 +1938-02-15,125.97,127.00,124.60,124.93,520000,124.93 +1938-02-14,125.04,126.44,125.04,125.97,400000,125.97 +1938-02-11,125.54,126.53,124.45,124.94,390000,124.94 +1938-02-10,125.00,127.23,124.56,125.54,630000,125.54 +1938-02-09,125.52,126.98,124.65,125.00,750000,125.00 +1938-02-08,122.39,125.76,122.39,125.52,770000,125.52 +1938-02-07,122.88,123.15,120.88,121.39,510000,121.39 +1938-02-04,118.49,120.91,117.13,120.52,810000,120.52 +1938-02-03,121.49,121.49,117.78,118.49,1090000,118.49 +1938-02-02,123.97,125.00,122.74,123.06,580000,123.06 +1938-02-01,122.69,124.71,122.69,123.97,690000,123.97 +1938-01-31,120.14,122.28,120.09,121.87,760000,121.87 +1938-01-28,121.57,122.32,118.94,120.66,1190000,120.66 +1938-01-27,123.23,124.54,120.44,121.57,1210000,121.57 +1938-01-26,126.10,126.10,121.86,123.23,1620000,123.23 +1938-01-25,129.47,129.47,127.97,128.33,540000,128.33 +1938-01-24,130.00,130.52,129.13,129.89,540000,129.89 +1938-01-21,132.33,133.23,130.56,130.69,790000,130.69 +1938-01-20,130.39,132.54,130.39,132.33,820000,132.33 +1938-01-19,131.53,131.68,128.68,130.09,1000000,130.09 +1938-01-18,132.49,132.98,130.88,131.53,780000,131.53 +1938-01-17,134.31,134.70,132.19,132.49,930000,132.49 +1938-01-14,131.60,132.37,130.29,131.84,850000,131.84 +1938-01-13,133.22,133.40,131.27,131.60,970000,131.60 +1938-01-12,134.35,134.95,132.94,133.22,1210000,133.22 +1938-01-11,133.55,134.63,132.36,134.35,1510000,134.35 +1938-01-10,130.84,134.27,130.81,133.55,1830000,133.55 +1938-01-07,128.97,129.51,127.30,128.21,1050000,128.21 +1938-01-06,125.38,129.23,125.38,128.97,1210000,128.97 +1938-01-05,124.61,127.27,124.17,124.66,1150000,124.66 +1938-01-04,121.69,124.96,121.69,124.61,940000,124.61 +1938-01-03,120.85,123.07,119.60,120.57,920000,120.57 +1937-12-31,121.49,121.49,119.65,120.85,780000,120.85 +1937-12-30,120.71,122.63,120.71,121.56,910000,121.56 +1937-12-29,118.93,121.00,117.71,120.15,2460000,120.15 +1937-12-28,122.51,122.51,118.31,118.93,2380000,118.93 +1937-12-27,126.59,126.59,122.96,123.45,1360000,123.45 +1937-12-24,127.63,128.60,126.85,127.36,840000,127.36 +1937-12-23,128.53,128.53,126.50,127.63,1060000,127.63 +1937-12-22,129.98,130.52,127.99,128.55,1160000,128.55 +1937-12-21,129.08,130.76,128.60,129.98,1280000,129.98 +1937-12-20,127.29,130.38,127.29,129.08,1400000,129.08 +1937-12-17,125.75,126.29,124.44,124.98,790000,124.98 +1937-12-16,124.52,126.92,124.52,125.75,1030000,125.75 +1937-12-15,123.50,125.63,123.33,124.19,930000,124.19 +1937-12-14,122.83,124.25,121.85,123.50,900000,123.50 +1937-12-13,125.86,125.86,122.18,122.83,1020000,122.83 +1937-12-10,128.15,128.27,125.49,126.72,1080000,126.72 +1937-12-09,129.80,130.37,127.62,128.15,1080000,128.15 +1937-12-08,128.31,131.15,128.22,129.80,1520000,129.80 +1937-12-07,126.21,128.56,124.85,128.31,970000,128.31 +1937-12-06,127.79,128.36,125.76,126.21,840000,126.21 +1937-12-03,125.52,129.40,125.52,127.55,1560000,127.55 +1937-12-02,122.11,125.38,120.21,125.14,940000,125.14 +1937-12-01,123.48,124.09,121.41,122.11,700000,122.11 +1937-11-30,121.58,125.43,121.49,123.48,1150000,123.48 +1937-11-29,123.39,123.39,120.37,121.58,1150000,121.58 +1937-11-26,114.37,118.78,114.37,118.26,1180000,118.26 +1937-11-24,115.78,116.17,112.72,113.64,990000,113.64 +1937-11-23,114.19,117.08,112.54,115.78,1640000,115.78 +1937-11-22,119.28,119.28,113.77,114.19,1520000,114.19 +1937-11-19,124.32,124.32,117.98,118.13,1890000,118.13 +1937-11-18,127.54,127.73,124.35,125.48,900000,125.48 +1937-11-17,127.98,129.94,127.02,127.54,760000,127.54 +1937-11-16,129.22,129.63,125.34,127.98,1270000,127.98 +1937-11-15,133.05,134.36,129.08,129.22,1450000,129.22 +1937-11-12,132.16,135.70,131.64,133.09,1880000,133.09 +1937-11-10,128.63,132.59,128.63,132.16,1920000,132.16 +1937-11-09,124.07,127.11,124.07,126.16,1050000,126.16 +1937-11-08,124.93,124.93,121.61,123.98,1380000,123.98 +1937-11-05,128.84,132.31,128.35,128.92,1250000,128.92 +1937-11-04,130.14,130.17,126.67,128.84,1470000,128.84 +1937-11-03,135.49,135.49,129.56,130.14,1740000,130.14 +1937-11-01,137.01,137.01,135.00,135.94,1030000,135.94 +1937-10-29,136.46,141.22,136.46,138.48,2800000,138.48 +1937-10-28,132.58,138.31,132.58,135.22,2460000,135.22 +1937-10-27,132.78,134.01,130.48,132.26,1060000,132.26 +1937-10-26,134.43,136.79,131.77,132.78,1820000,132.78 +1937-10-25,127.15,135.12,124.56,134.43,2340000,134.43 +1937-10-22,135.48,135.66,131.74,132.26,2110000,132.26 +1937-10-21,134.56,137.82,132.09,135.48,3640000,135.48 +1937-10-20,126.87,135.48,126.87,134.56,4340000,134.56 +1937-10-19,125.73,127.61,115.84,126.85,7290000,126.85 +1937-10-18,136.30,137.00,125.14,125.73,3230000,125.73 +1937-10-15,136.54,138.14,133.95,135.48,2540000,135.48 +1937-10-14,138.20,140.88,136.09,136.54,1680000,136.54 +1937-10-13,138.79,140.94,134.79,138.20,2570000,138.20 +1937-10-11,143.66,143.66,137.71,138.79,1750000,138.79 +1937-10-08,146.59,148.26,143.00,144.03,1150000,144.03 +1937-10-07,147.18,150.47,145.76,146.59,1190000,146.59 +1937-10-06,144.08,147.62,141.63,147.18,1790000,147.18 +1937-10-05,149.97,149.97,143.01,144.08,1680000,144.08 +1937-10-04,154.08,154.63,151.84,152.19,630000,152.19 +1937-10-01,154.57,155.11,152.50,153.89,680000,153.89 +1937-09-30,154.70,157.12,153.97,154.57,1050000,154.57 +1937-09-29,153.16,155.24,150.09,154.70,1350000,154.70 +1937-09-28,152.03,155.22,151.41,153.16,1310000,153.16 +1937-09-27,147.47,152.49,146.25,152.03,2210000,152.03 +1937-09-24,151.58,151.58,146.22,147.38,2480000,147.38 +1937-09-23,157.45,157.51,153.79,153.98,890000,153.98 +1937-09-22,156.56,158.89,156.55,157.45,740000,157.45 +1937-09-21,155.96,159.26,155.96,156.56,980000,156.56 +1937-09-20,156.92,156.92,152.36,155.56,1550000,155.56 +1937-09-17,164.19,164.19,161.59,162.15,810000,162.15 +1937-09-16,162.85,165.37,162.29,164.75,890000,164.75 +1937-09-15,162.90,165.16,161.26,162.85,1140000,162.85 +1937-09-14,160.00,164.37,160.00,162.90,1510000,162.90 +1937-09-13,159.96,163.12,154.94,158.00,2560000,158.00 +1937-09-10,166.36,166.87,157.35,157.98,2320000,157.98 +1937-09-09,164.88,168.06,164.88,166.36,1410000,166.36 +1937-09-08,164.39,166.06,162.17,163.37,2260000,163.37 +1937-09-07,170.29,170.29,163.18,164.39,1870000,164.39 +1937-09-03,171.82,174.03,171.82,172.17,690000,172.17 +1937-09-02,172.71,172.71,169.75,170.84,1200000,170.84 +1937-09-01,176.11,176.11,172.89,173.08,820000,173.08 +1937-08-31,177.88,179.10,177.29,177.41,500000,177.41 +1937-08-30,176.10,178.26,176.10,177.88,460000,177.88 +1937-08-27,178.52,179.23,175.09,175.91,890000,175.91 +1937-08-26,180.71,180.71,177.57,178.52,970000,178.52 +1937-08-25,182.39,183.00,181.39,181.70,500000,181.70 +1937-08-24,181.88,182.87,180.80,182.39,560000,182.39 +1937-08-23,183.74,184.20,181.31,181.88,580000,181.88 +1937-08-20,185.28,185.28,182.30,182.95,800000,182.95 +1937-08-19,186.97,186.97,184.75,185.28,760000,185.28 +1937-08-18,188.68,189.10,187.30,187.39,700000,187.39 +1937-08-17,189.18,189.18,188.12,188.68,660000,188.68 +1937-08-16,189.94,189.94,188.60,189.34,620000,189.34 +1937-08-13,187.62,189.76,187.35,189.29,1040000,189.29 +1937-08-12,186.72,188.30,186.39,187.62,790000,187.62 +1937-08-11,186.98,187.31,185.93,186.72,570000,186.72 +1937-08-10,186.75,187.67,186.23,186.98,690000,186.98 +1937-08-09,186.41,187.33,186.06,186.75,750000,186.75 +1937-08-06,186.09,186.56,185.16,185.43,680000,185.43 +1937-08-05,186.80,187.22,185.76,186.09,800000,186.09 +1937-08-04,185.91,187.31,185.38,186.80,900000,186.80 +1937-08-03,186.91,187.14,185.43,185.91,900000,185.91 +1937-08-02,185.61,187.28,185.35,186.91,790000,186.91 +1937-07-30,183.01,184.66,182.92,184.01,620000,184.01 +1937-07-29,182.57,183.61,182.07,183.01,610000,183.01 +1937-07-28,184.24,184.54,182.17,182.57,870000,182.57 +1937-07-27,184.42,184.73,183.43,184.24,740000,184.24 +1937-07-26,184.85,185.15,183.72,184.42,900000,184.42 +1937-07-23,182.96,184.75,182.70,183.78,910000,183.78 +1937-07-22,182.35,184.13,182.14,182.96,960000,182.96 +1937-07-21,183.32,183.94,181.87,182.35,980000,182.35 +1937-07-20,182.06,183.90,182.01,183.32,1200000,183.32 +1937-07-19,180.11,182.39,180.11,182.06,950000,182.06 +1937-07-16,179.71,180.45,178.65,179.53,700000,179.53 +1937-07-15,178.57,180.09,177.78,179.71,740000,179.71 +1937-07-14,178.24,180.17,177.83,178.57,1040000,178.57 +1937-07-13,178.70,179.53,177.50,178.24,850000,178.24 +1937-07-12,176.72,179.16,176.69,178.70,1020000,178.70 +1937-07-09,177.70,178.36,176.65,177.40,850000,177.40 +1937-07-08,177.74,178.38,176.49,177.70,1030000,177.70 +1937-07-07,176.80,178.88,176.25,177.74,1410000,177.74 +1937-07-06,173.18,177.08,173.18,176.80,1410000,176.80 +1937-07-02,170.13,172.49,169.58,172.22,840000,172.22 +1937-07-01,169.32,171.28,169.13,170.13,670000,170.13 +1937-06-30,167.11,170.02,167.00,169.32,690000,169.32 +1937-06-29,166.71,168.10,166.11,167.11,550000,167.11 +1937-06-28,168.45,168.99,166.26,166.71,730000,166.71 +1937-06-25,170.08,170.98,169.10,169.59,580000,169.59 +1937-06-24,169.01,170.46,168.79,170.08,550000,170.08 +1937-06-23,168.22,169.72,168.22,169.01,550000,169.01 +1937-06-22,167.98,169.42,167.59,168.20,530000,168.20 +1937-06-21,168.60,168.79,167.28,167.98,420000,167.98 +1937-06-18,167.74,169.37,167.05,168.79,690000,168.79 +1937-06-17,165.86,167.95,163.31,167.74,1260000,167.74 +1937-06-16,167.40,167.59,165.49,165.86,700000,165.86 +1937-06-15,165.51,168.10,164.69,167.40,930000,167.40 +1937-06-14,168.45,168.45,163.73,165.51,1310000,165.51 +1937-06-11,172.59,172.59,170.33,170.77,720000,170.77 +1937-06-10,173.47,174.06,172.53,172.82,570000,172.82 +1937-06-09,174.33,175.00,173.12,173.47,620000,173.47 +1937-06-08,173.88,174.91,173.25,174.33,600000,174.33 +1937-06-07,175.00,175.40,173.56,173.88,590000,173.88 +1937-06-04,172.82,175.39,172.19,175.14,780000,175.14 +1937-06-03,172.63,173.09,171.56,172.82,550000,172.82 +1937-06-02,172.25,173.73,172.25,172.63,540000,172.63 +1937-06-01,172.69,172.69,170.72,171.59,750000,171.59 +1937-05-28,174.19,175.22,174.04,174.71,560000,174.71 +1937-05-27,173.70,175.03,173.22,174.19,600000,174.19 +1937-05-26,173.79,174.47,172.62,173.70,580000,173.70 +1937-05-25,175.59,176.11,173.30,173.79,840000,173.79 +1937-05-24,175.00,176.25,174.51,175.59,680000,175.59 +1937-05-21,173.59,174.59,173.12,173.83,770000,173.83 +1937-05-20,170.00,173.99,170.00,173.59,1230000,173.59 +1937-05-19,169.97,170.85,169.11,169.75,790000,169.75 +1937-05-18,167.84,170.55,166.20,169.97,1200000,169.97 +1937-05-17,169.60,169.98,167.64,167.84,600000,167.84 +1937-05-14,167.46,169.89,166.58,169.15,1230000,169.15 +1937-05-13,171.43,171.43,166.88,167.46,1770000,167.46 +1937-05-12,172.55,173.72,171.81,172.24,670000,172.24 +1937-05-11,173.04,173.28,171.59,172.55,750000,172.55 +1937-05-10,175.19,175.19,172.78,173.04,780000,173.04 +1937-05-07,175.81,176.91,175.50,175.89,820000,175.89 +1937-05-06,174.67,176.05,174.06,175.81,760000,175.81 +1937-05-05,176.30,176.81,174.41,174.67,770000,174.67 +1937-05-04,175.20,176.69,175.20,176.30,870000,176.30 +1937-05-03,174.42,175.58,174.16,174.59,640000,174.59 +1937-04-30,171.51,174.66,171.51,174.27,1450000,174.27 +1937-04-29,170.13,172.88,169.37,170.52,2030000,170.52 +1937-04-28,173.78,173.78,168.77,170.13,2530000,170.13 +1937-04-27,172.36,175.18,172.36,174.52,1410000,174.52 +1937-04-26,175.33,175.33,171.20,171.97,2020000,171.97 +1937-04-23,181.70,182.60,178.00,178.54,1200000,178.54 +1937-04-22,183.60,184.33,181.28,181.70,1180000,181.70 +1937-04-21,181.44,184.05,181.39,183.60,1250000,183.60 +1937-04-20,180.82,182.63,180.28,181.44,1130000,181.44 +1937-04-19,180.51,181.38,179.76,180.82,820000,180.82 +1937-04-16,181.19,182.27,179.70,180.75,1070000,180.75 +1937-04-15,181.93,182.25,180.69,181.19,940000,181.19 +1937-04-14,182.10,183.34,181.27,181.93,1480000,181.93 +1937-04-13,180.59,183.43,180.59,182.10,1590000,182.10 +1937-04-12,178.26,180.12,176.39,179.74,1130000,179.74 +1937-04-09,178.18,180.38,175.86,178.94,1730000,178.94 +1937-04-08,178.07,179.94,176.72,178.18,1920000,178.18 +1937-04-07,182.13,182.13,177.68,178.07,2290000,178.07 +1937-04-06,184.19,184.66,182.06,182.98,1250000,182.98 +1937-04-05,183.54,185.09,183.39,184.19,980000,184.19 +1937-04-02,184.43,184.43,180.89,182.75,1640000,182.75 +1937-04-01,186.41,186.63,184.37,185.19,1210000,185.19 +1937-03-31,186.77,187.99,185.77,186.41,1660000,186.41 +1937-03-30,184.09,186.93,183.64,186.77,1230000,186.77 +1937-03-29,184.95,185.75,183.79,184.09,870000,184.09 +1937-03-25,184.32,186.11,183.73,184.08,1250000,184.08 +1937-03-24,181.87,184.97,181.63,184.32,1430000,184.32 +1937-03-23,179.93,182.96,179.93,181.87,1600000,181.87 +1937-03-22,182.83,182.83,179.28,179.82,2030000,179.82 +1937-03-19,184.73,185.94,183.72,184.56,1740000,184.56 +1937-03-18,187.52,187.52,183.72,184.73,2280000,184.73 +1937-03-17,189.95,190.52,188.15,188.50,2120000,188.50 +1937-03-16,189.41,191.29,188.88,189.95,1750000,189.95 +1937-03-15,190.58,190.81,188.59,189.41,1770000,189.41 +1937-03-12,192.22,192.27,189.39,191.24,2290000,191.24 +1937-03-11,194.40,195.33,191.77,192.22,2740000,192.22 +1937-03-10,193.29,195.59,192.77,194.40,2820000,194.40 +1937-03-09,192.69,194.89,191.65,193.29,2390000,193.29 +1937-03-08,194.15,195.20,191.53,192.69,3180000,192.69 +1937-03-05,192.17,195.17,192.17,194.14,2830000,194.14 +1937-03-04,192.91,193.95,190.98,191.63,2730000,191.63 +1937-03-03,190.29,193.86,190.29,192.91,3570000,192.91 +1937-03-02,187.68,190.41,187.64,189.91,2300000,189.91 +1937-03-01,187.30,188.48,186.00,187.68,1660000,187.68 +1937-02-26,186.68,187.93,185.82,187.17,1780000,187.17 +1937-02-25,187.35,188.31,186.19,186.68,2230000,186.68 +1937-02-24,186.50,187.88,185.15,187.35,2080000,187.35 +1937-02-23,189.36,189.36,185.96,186.50,2870000,186.50 +1937-02-19,188.07,190.42,187.71,189.37,2730000,189.37 +1937-02-18,187.98,188.90,186.82,188.07,2130000,188.07 +1937-02-17,188.18,189.39,187.30,187.98,2580000,187.98 +1937-02-16,188.39,189.20,187.05,188.18,2220000,188.18 +1937-02-15,189.58,189.58,187.45,188.39,1960000,188.39 +1937-02-11,189.35,191.39,188.69,190.29,2920000,190.29 +1937-02-10,187.68,189.83,187.58,189.35,2920000,189.35 +1937-02-09,187.82,188.79,186.74,187.68,2590000,187.68 +1937-02-08,187.11,188.66,186.68,187.82,2990000,187.82 +1937-02-05,188.39,189.07,184.85,186.01,3320000,186.01 +1937-02-04,188.69,189.64,187.65,188.39,2390000,188.39 +1937-02-03,188.20,189.94,187.48,188.69,2450000,188.69 +1937-02-02,186.61,189.13,186.13,188.20,2430000,188.20 +1937-02-01,185.74,187.77,185.10,186.61,2360000,186.61 +1937-01-29,183.41,185.41,182.34,184.74,1970000,184.74 +1937-01-28,183.97,185.59,182.77,183.41,2340000,183.41 +1937-01-27,183.19,184.32,182.15,183.97,1940000,183.97 +1937-01-26,185.62,185.68,182.64,183.19,2180000,183.19 +1937-01-25,186.69,186.97,185.02,185.62,2220000,185.62 +1937-01-22,186.90,187.80,185.01,186.53,2680000,186.53 +1937-01-21,185.96,187.49,184.98,186.90,2990000,186.90 +1937-01-20,184.10,186.88,184.10,185.96,3270000,185.96 +1937-01-19,184.95,185.16,183.22,184.02,2620000,184.02 +1937-01-18,185.73,185.93,183.74,184.95,2860000,184.95 +1937-01-15,183.71,185.40,183.55,184.53,2900000,184.53 +1937-01-14,183.01,184.66,182.53,183.71,3260000,183.71 +1937-01-13,183.30,184.01,182.25,183.01,3680000,183.01 +1937-01-12,183.26,184.49,182.08,183.30,3570000,183.30 +1937-01-11,182.75,183.82,181.77,183.26,3080000,183.26 +1937-01-08,181.77,183.58,181.36,182.95,3220000,182.95 +1937-01-07,179.32,182.11,179.32,181.77,3060000,181.77 +1937-01-06,179.07,179.90,178.17,178.92,1920000,178.92 +1937-01-05,177.72,179.66,177.64,179.07,1870000,179.07 +1937-01-04,178.39,178.39,176.96,177.72,1510000,177.72 +1936-12-31,180.57,181.77,179.34,179.90,1760000,179.90 +1936-12-30,178.02,181.13,178.02,180.57,2310000,180.57 +1936-12-29,177.12,178.48,176.26,177.60,2280000,177.60 +1936-12-28,178.60,179.52,176.71,177.12,1790000,177.12 +1936-12-24,178.36,179.54,177.75,178.60,1610000,178.60 +1936-12-23,177.30,179.00,176.70,178.36,1870000,178.36 +1936-12-22,176.14,178.20,176.14,177.30,1670000,177.30 +1936-12-21,177.61,178.28,175.31,175.85,1760000,175.85 +1936-12-18,180.78,181.10,179.03,179.42,1910000,179.42 +1936-12-17,181.58,182.18,180.35,180.78,1950000,180.78 +1936-12-16,181.97,182.57,180.87,181.58,1950000,181.58 +1936-12-15,181.87,183.30,181.30,181.97,2480000,181.97 +1936-12-14,180.92,182.67,180.74,181.87,2880000,181.87 +1936-12-11,182.18,182.33,180.76,181.10,2610000,181.10 +1936-12-10,181.16,182.77,180.67,182.18,2440000,182.18 +1936-12-09,180.57,181.77,179.93,181.16,1860000,181.16 +1936-12-08,180.13,181.29,179.95,180.57,1620000,180.57 +1936-12-07,181.05,181.49,179.74,180.13,1680000,180.13 +1936-12-04,181.29,182.34,180.36,180.97,2160000,180.97 +1936-12-03,180.25,181.92,179.90,181.29,2040000,181.29 +1936-12-02,181.89,181.89,179.66,180.25,2320000,180.25 +1936-12-01,183.22,183.59,181.56,182.05,2230000,182.05 +1936-11-30,183.32,184.03,181.87,183.22,2140000,183.22 +1936-11-27,180.91,183.27,180.91,182.81,2280000,182.81 +1936-11-25,181.11,181.49,179.68,180.78,1860000,180.78 +1936-11-24,178.84,181.51,178.84,181.11,1920000,181.11 +1936-11-23,181.78,181.78,177.91,178.62,2160000,178.62 +1936-11-20,182.21,182.35,180.24,180.74,1820000,180.74 +1936-11-19,184.26,184.26,181.63,182.21,2440000,182.21 +1936-11-18,184.90,186.39,183.73,184.44,2920000,184.44 +1936-11-17,182.94,185.55,182.94,184.90,3270000,184.90 +1936-11-16,181.45,183.39,181.00,182.65,2380000,182.65 +1936-11-13,183.15,184.28,181.39,182.24,2480000,182.24 +1936-11-12,184.01,185.52,182.26,183.15,2580000,183.15 +1936-11-10,183.65,185.24,182.82,184.01,2700000,184.01 +1936-11-09,183.38,184.77,182.39,183.65,3140000,183.65 +1936-11-06,182.25,183.53,180.68,181.60,2720000,181.60 +1936-11-05,180.66,183.31,180.57,182.25,3620000,182.25 +1936-11-04,177.00,181.15,177.00,180.66,3290000,180.66 +1936-11-02,177.19,177.74,175.35,176.67,1600000,176.67 +1936-10-30,176.31,178.09,176.20,177.15,1680000,177.15 +1936-10-29,174.84,176.60,174.61,176.31,1710000,176.31 +1936-10-28,174.47,176.61,174.47,174.84,1630000,174.84 +1936-10-27,172.89,174.90,172.89,174.36,1310000,174.36 +1936-10-26,174.74,174.74,172.16,172.30,1480000,172.30 +1936-10-23,174.90,176.23,174.64,175.60,1510000,175.60 +1936-10-22,176.70,177.01,174.50,174.90,1980000,174.90 +1936-10-21,176.78,177.63,175.81,176.70,1630000,176.70 +1936-10-20,177.42,177.82,175.98,176.78,1670000,176.78 +1936-10-19,177.63,178.44,176.66,177.42,1890000,177.42 +1936-10-16,175.33,177.31,175.33,176.66,2050000,176.66 +1936-10-15,175.57,176.32,174.13,175.22,1790000,175.22 +1936-10-14,176.29,176.79,175.03,175.57,1640000,175.57 +1936-10-13,176.05,177.68,175.87,176.29,2070000,176.29 +1936-10-09,174.93,176.45,174.23,175.19,2240000,175.19 +1936-10-08,174.59,175.49,173.41,174.93,2230000,174.93 +1936-10-07,174.42,175.92,173.94,174.59,3030000,174.59 +1936-10-06,172.93,174.82,172.93,174.42,2260000,174.42 +1936-10-05,172.44,174.04,172.04,172.81,2080000,172.81 +1936-10-02,168.63,170.94,168.63,170.76,1930000,170.76 +1936-10-01,167.82,168.83,167.54,168.26,1100000,168.26 +1936-09-30,168.48,169.55,167.47,167.82,1350000,167.82 +1936-09-29,168.79,169.85,168.01,168.48,1380000,168.48 +1936-09-28,168.07,169.62,167.72,168.79,1450000,168.79 +1936-09-25,169.03,169.03,165.91,166.36,1160000,166.36 +1936-09-24,169.01,169.79,168.10,169.14,1190000,169.14 +1936-09-23,169.47,170.72,168.68,169.01,1480000,169.01 +1936-09-22,168.90,170.47,168.37,169.47,1550000,169.47 +1936-09-21,168.93,170.25,168.34,168.90,1770000,168.90 +1936-09-18,166.25,168.36,166.10,167.76,1270000,167.76 +1936-09-17,165.16,166.51,164.82,166.25,770000,166.25 +1936-09-16,166.44,166.75,164.97,165.16,1040000,165.16 +1936-09-15,166.86,167.14,165.41,166.44,1130000,166.44 +1936-09-14,167.98,167.98,166.11,166.86,1010000,166.86 +1936-09-11,169.00,169.38,167.59,168.59,1400000,168.59 +1936-09-10,168.50,169.59,168.05,169.00,1550000,169.00 +1936-09-09,169.55,169.73,168.07,168.50,1570000,168.50 +1936-09-08,168.32,170.02,168.32,169.55,1720000,169.55 +1936-09-04,166.24,167.62,166.01,167.04,1180000,167.04 +1936-09-03,166.65,167.25,165.64,166.24,1050000,166.24 +1936-09-02,166.35,167.89,166.15,166.65,1350000,166.65 +1936-09-01,166.29,167.21,165.24,166.35,1140000,166.35 +1936-08-31,166.91,167.25,165.84,166.29,1150000,166.29 +1936-08-28,166.77,168.02,166.31,166.78,1380000,166.78 +1936-08-27,163.32,166.94,163.21,166.77,1340000,166.77 +1936-08-26,164.34,165.00,162.98,163.32,910000,163.32 +1936-08-25,163.78,165.23,163.60,164.34,800000,164.34 +1936-08-24,162.90,164.64,162.90,163.78,800000,163.78 +1936-08-21,164.69,164.69,160.52,160.80,1480000,160.80 +1936-08-20,166.04,166.70,165.23,165.59,960000,165.59 +1936-08-19,165.42,166.87,165.26,166.04,1010000,166.04 +1936-08-18,165.38,166.37,164.89,165.42,790000,165.42 +1936-08-17,165.86,167.01,164.66,165.38,830000,165.38 +1936-08-14,167.64,167.80,165.40,165.75,1070000,165.75 +1936-08-13,169.05,169.59,167.30,167.64,1400000,167.64 +1936-08-12,167.86,169.63,167.50,169.05,1260000,169.05 +1936-08-11,168.80,169.08,167.20,167.86,1100000,167.86 +1936-08-10,169.10,170.15,168.15,168.80,1340000,168.80 +1936-08-07,165.71,168.63,165.34,168.01,1670000,168.01 +1936-08-06,165.07,166.24,164.17,165.71,1170000,165.71 +1936-08-05,165.41,166.57,163.91,165.07,1280000,165.07 +1936-08-04,165.32,165.91,164.41,165.41,1050000,165.41 +1936-08-03,165.42,166.53,164.63,165.32,1010000,165.32 +1936-07-31,165.98,167.27,164.32,164.86,1160000,164.86 +1936-07-30,165.67,167.05,165.13,165.98,1510000,165.98 +1936-07-29,167.01,167.83,165.13,165.67,1950000,165.67 +1936-07-28,166.92,168.23,165.98,167.01,1900000,167.01 +1936-07-27,165.56,167.63,165.51,166.92,1830000,166.92 +1936-07-24,164.61,165.31,164.00,164.37,1320000,164.37 +1936-07-23,164.49,165.06,163.46,164.61,1340000,164.61 +1936-07-22,165.23,166.06,163.99,164.49,1450000,164.49 +1936-07-21,164.43,165.81,163.75,165.23,1590000,165.23 +1936-07-20,164.42,165.48,163.84,164.43,1420000,164.43 +1936-07-17,163.64,165.07,163.02,163.55,1560000,163.55 +1936-07-16,163.24,164.38,162.27,163.64,1480000,163.64 +1936-07-15,162.80,164.42,162.28,163.24,1980000,163.24 +1936-07-14,161.35,163.22,160.99,162.80,1660000,162.80 +1936-07-13,160.72,162.14,160.33,161.35,1440000,161.35 +1936-07-10,158.07,160.67,158.07,160.07,1690000,160.07 +1936-07-09,156.20,158.17,156.05,157.71,1290000,157.71 +1936-07-08,155.60,156.76,154.85,156.20,870000,156.20 +1936-07-07,156.87,156.87,154.86,155.60,970000,155.60 +1936-07-06,158.11,158.86,156.73,157.11,850000,157.11 +1936-07-03,157.51,159.13,156.93,158.11,1020000,158.11 +1936-07-02,158.38,159.55,156.87,157.51,1070000,157.51 +1936-07-01,157.69,159.16,156.82,158.38,970000,158.38 +1936-06-30,158.01,158.76,157.11,157.69,820000,157.69 +1936-06-29,158.46,159.66,157.58,158.01,770000,158.01 +1936-06-26,158.64,159.54,157.86,158.21,890000,158.21 +1936-06-25,160.66,161.00,158.27,158.64,1340000,158.64 +1936-06-24,158.94,161.15,158.56,160.66,1240000,160.66 +1936-06-23,159.13,160.25,158.24,158.94,970000,158.94 +1936-06-22,157.40,159.66,157.40,159.13,990000,159.13 +1936-06-19,157.38,157.46,156.11,156.53,830000,156.53 +1936-06-18,156.97,158.05,156.54,157.38,940000,157.38 +1936-06-17,156.70,157.96,156.47,156.97,1220000,156.97 +1936-06-16,155.09,156.94,154.88,156.70,1120000,156.70 +1936-06-15,154.64,155.81,154.57,155.09,720000,155.09 +1936-06-12,155.16,155.91,153.55,153.71,1000000,153.71 +1936-06-11,153.02,155.38,152.65,155.16,1090000,155.16 +1936-06-10,152.90,153.87,152.44,153.02,1040000,153.02 +1936-06-09,151.44,153.12,151.44,152.90,880000,152.90 +1936-06-08,150.40,152.01,150.40,151.39,690000,151.39 +1936-06-05,149.39,149.95,148.52,149.26,640000,149.26 +1936-06-04,151.10,151.10,149.22,149.39,770000,149.39 +1936-06-03,151.97,152.38,151.20,151.53,640000,151.53 +1936-06-02,152.84,153.22,151.30,151.97,760000,151.97 +1936-06-01,152.64,154.02,152.62,152.84,790000,152.84 +1936-05-29,151.77,152.92,151.53,152.64,740000,152.64 +1936-05-28,152.57,152.91,151.49,151.77,760000,151.77 +1936-05-27,152.26,153.57,151.44,152.57,1220000,152.57 +1936-05-26,150.83,152.48,150.48,152.26,1140000,152.26 +1936-05-25,150.65,151.62,150.31,150.83,690000,150.83 +1936-05-22,148.80,150.26,148.61,149.58,680000,149.58 +1936-05-21,148.94,150.21,148.46,148.80,670000,148.80 +1936-05-20,147.49,149.28,147.30,148.94,690000,148.94 +1936-05-19,149.56,149.56,147.21,147.49,910000,147.49 +1936-05-18,151.42,152.44,150.09,150.35,990000,150.35 +1936-05-15,151.49,152.43,150.56,151.60,990000,151.60 +1936-05-14,149.00,151.97,149.00,151.49,1390000,151.49 +1936-05-13,146.92,148.38,146.92,147.90,590000,147.90 +1936-05-12,146.85,148.16,146.10,146.70,600000,146.70 +1936-05-11,147.85,148.85,146.44,146.85,680000,146.85 +1936-05-08,147.14,147.33,145.68,146.87,780000,146.87 +1936-05-07,149.73,149.96,146.29,147.14,1010000,147.14 +1936-05-06,148.56,150.52,148.52,149.73,1130000,149.73 +1936-05-05,147.69,149.97,147.69,148.56,1180000,148.56 +1936-05-04,146.41,147.63,144.18,146.96,1070000,146.96 +1936-05-01,145.67,147.86,145.67,147.07,1160000,147.07 +1936-04-30,143.65,146.20,141.53,145.67,2310000,145.67 +1936-04-29,146.75,147.23,143.20,143.65,1790000,143.65 +1936-04-28,147.05,147.79,144.80,146.75,2230000,146.75 +1936-04-27,151.81,151.81,145.96,147.05,2300000,147.05 +1936-04-24,151.08,152.51,149.63,151.54,1660000,151.54 +1936-04-23,154.92,155.16,149.63,151.08,2060000,151.08 +1936-04-22,153.60,155.59,153.60,154.92,1200000,154.92 +1936-04-21,152.40,154.09,151.29,153.36,1880000,153.36 +1936-04-20,156.07,156.73,152.10,152.40,1660000,152.40 +1936-04-17,158.49,159.22,157.32,157.78,1160000,157.78 +1936-04-16,159.61,160.33,157.93,158.49,1150000,158.49 +1936-04-15,158.41,160.27,157.92,159.61,1320000,159.61 +1936-04-14,160.76,161.10,157.51,158.41,1940000,158.41 +1936-04-13,160.48,161.26,159.71,160.76,1450000,160.76 +1936-04-09,160.97,161.44,159.46,160.26,1650000,160.26 +1936-04-08,160.94,162.54,160.34,160.97,1650000,160.97 +1936-04-07,161.99,162.33,160.42,160.94,1580000,160.94 +1936-04-06,161.50,163.07,161.18,161.99,2030000,161.99 +1936-04-03,160.43,161.84,159.80,160.09,1560000,160.09 +1936-04-02,159.12,161.55,159.12,160.43,2190000,160.43 +1936-04-01,157.04,159.42,157.04,158.96,1690000,158.96 +1936-03-31,155.37,157.01,155.06,156.34,1040000,156.34 +1936-03-30,155.54,156.73,155.16,155.37,950000,155.37 +1936-03-27,157.73,157.82,155.01,155.52,1550000,155.52 +1936-03-26,157.88,159.53,157.08,157.73,1870000,157.73 +1936-03-25,156.56,158.74,155.81,157.88,1910000,157.88 +1936-03-24,157.62,158.76,156.23,156.56,1900000,156.56 +1936-03-23,156.42,158.22,156.20,157.62,1680000,157.62 +1936-03-20,157.40,158.81,156.69,157.42,1890000,157.42 +1936-03-19,155.85,158.22,155.85,157.40,2020000,157.40 +1936-03-18,156.34,157.30,155.04,155.82,1750000,155.82 +1936-03-17,153.85,156.73,153.85,156.34,2240000,156.34 +1936-03-16,154.07,154.73,152.14,153.25,1840000,153.25 +1936-03-13,153.13,153.46,149.65,150.42,2660000,150.42 +1936-03-12,156.63,156.63,152.35,153.13,2920000,153.13 +1936-03-11,155.37,157.95,155.37,156.85,2190000,156.85 +1936-03-10,153.50,155.87,153.35,155.37,2320000,155.37 +1936-03-09,156.86,156.86,153.33,153.50,2750000,153.50 +1936-03-06,157.52,159.87,157.27,158.75,2890000,158.75 +1936-03-05,156.70,158.56,156.03,157.52,2590000,157.52 +1936-03-04,156.19,158.24,155.45,156.70,2980000,156.70 +1936-03-03,154.08,156.61,154.08,156.19,2700000,156.19 +1936-03-02,152.15,154.54,151.65,154.08,1980000,154.08 +1936-02-28,152.64,153.94,151.61,152.53,2460000,152.53 +1936-02-27,150.59,153.02,150.59,152.64,2320000,152.64 +1936-02-26,150.78,151.10,149.08,149.81,2040000,149.81 +1936-02-25,152.74,153.25,149.99,150.78,2390000,150.78 +1936-02-24,153.74,153.75,152.00,152.74,2200000,152.74 +1936-02-21,154.43,155.14,153.05,153.74,3010000,153.74 +1936-02-20,153.09,155.14,152.30,154.43,3460000,154.43 +1936-02-19,153.36,155.69,152.54,153.09,4580000,153.09 +1936-02-18,151.40,153.76,151.23,153.36,3530000,153.36 +1936-02-17,152.40,153.57,150.43,151.40,4720000,151.40 +1936-02-14,152.53,153.01,150.86,151.97,2600000,151.97 +1936-02-13,152.25,153.67,151.48,152.53,2920000,152.53 +1936-02-11,151.15,153.16,150.80,152.25,3350000,152.25 +1936-02-10,150.40,151.88,149.72,151.15,2460000,151.15 +1936-02-07,150.86,151.67,149.50,150.17,2570000,150.17 +1936-02-06,150.60,151.97,150.14,150.86,2750000,150.86 +1936-02-05,150.94,151.94,150.07,150.60,2920000,150.60 +1936-02-04,150.62,151.77,149.92,150.94,3010000,150.94 +1936-02-03,149.58,151.05,148.32,150.62,2320000,150.62 +1936-01-31,146.98,150.00,146.79,149.49,3230000,149.49 +1936-01-30,147.71,148.50,146.25,146.98,3010000,146.98 +1936-01-29,146.94,148.50,146.33,147.71,2680000,147.71 +1936-01-28,147.30,147.84,146.38,146.94,2290000,146.94 +1936-01-27,147.01,148.30,146.73,147.30,3100000,147.30 +1936-01-24,146.97,147.91,146.15,146.59,2540000,146.59 +1936-01-23,145.99,147.70,145.80,146.97,2940000,146.97 +1936-01-22,143.79,146.36,143.79,145.99,2150000,145.99 +1936-01-21,144.06,144.29,142.77,143.50,1330000,143.50 +1936-01-20,144.93,145.23,143.60,144.06,1810000,144.06 +1936-01-17,145.92,146.58,144.64,145.81,2350000,145.81 +1936-01-16,145.66,146.73,145.03,145.92,3110000,145.92 +1936-01-15,146.32,147.13,145.02,145.66,4630000,145.66 +1936-01-14,146.52,146.89,145.41,146.32,2790000,146.32 +1936-01-13,146.73,147.45,145.67,146.52,2600000,146.52 +1936-01-10,145.68,148.02,145.68,147.08,3270000,147.08 +1936-01-09,146.16,146.83,144.63,145.66,3000000,145.66 +1936-01-08,144.92,147.29,144.62,146.16,2530000,146.16 +1936-01-07,143.11,145.22,142.05,144.92,3080000,144.92 +1936-01-06,144.08,145.35,141.55,143.11,3730000,143.11 +1936-01-03,144.13,145.28,143.49,144.69,2830000,144.69 +1936-01-02,144.13,145.22,143.34,144.13,2240000,144.13 +1935-12-31,143.00,145.02,142.93,144.13,2440000,144.13 +1935-12-30,141.35,143.37,141.35,143.00,1630000,143.00 +1935-12-27,141.54,142.83,140.67,141.58,2130000,141.58 +1935-12-26,141.53,142.64,140.87,141.54,2340000,141.54 +1935-12-24,140.58,141.88,140.04,141.53,1710000,141.53 +1935-12-23,140.19,141.42,139.75,140.58,1920000,140.58 +1935-12-20,138.94,140.00,138.46,139.50,1410000,139.50 +1935-12-19,139.95,139.95,138.33,138.94,1260000,138.94 +1935-12-18,140.60,141.73,139.71,140.10,1690000,140.10 +1935-12-17,139.11,140.89,138.90,140.60,1390000,140.60 +1935-12-16,140.38,141.28,138.91,139.11,1400000,139.11 +1935-12-13,141.34,142.12,139.56,140.16,1890000,140.16 +1935-12-12,142.84,143.46,140.86,141.34,2140000,141.34 +1935-12-11,142.31,143.90,141.63,142.84,2130000,142.84 +1935-12-10,144.10,144.32,141.61,142.31,2340000,142.31 +1935-12-09,144.47,145.07,143.06,144.10,2510000,144.10 +1935-12-06,143.72,144.78,143.09,143.48,2370000,143.48 +1935-12-05,144.04,145.09,143.12,143.72,2260000,143.72 +1935-12-04,143.58,145.13,143.29,144.04,2960000,144.04 +1935-12-03,140.72,143.71,140.60,143.58,1930000,143.58 +1935-12-02,142.35,142.95,140.38,140.72,1520000,140.72 +1935-11-29,143.38,144.27,141.15,142.34,2170000,142.34 +1935-11-27,142.59,144.30,141.94,143.38,1860000,143.38 +1935-11-26,144.72,145.25,141.80,142.59,2330000,142.59 +1935-11-25,146.12,147.50,143.89,144.72,3370000,144.72 +1935-11-22,147.37,148.10,143.48,144.61,3920000,144.61 +1935-11-21,146.65,147.83,145.96,147.37,3280000,147.37 +1935-11-20,148.44,149.42,145.98,146.65,3820000,146.65 +1935-11-19,147.06,148.81,146.93,148.44,2880000,148.44 +1935-11-18,147.31,148.94,146.35,147.06,3200000,147.06 +1935-11-15,145.59,147.40,145.10,146.32,2940000,146.32 +1935-11-14,143.85,146.39,143.85,145.59,3950000,145.59 +1935-11-13,142.56,143.97,141.60,143.59,2050000,143.59 +1935-11-12,144.36,144.60,142.20,142.56,2140000,142.56 +1935-11-08,143.40,145.40,142.80,144.25,3350000,144.25 +1935-11-07,142.90,145.28,142.15,143.40,2790000,143.40 +1935-11-06,141.19,143.48,141.19,142.90,3080000,142.90 +1935-11-04,141.20,141.78,139.99,141.07,1750000,141.07 +1935-11-01,140.07,141.77,140.07,141.31,2040000,141.31 +1935-10-31,139.35,140.52,138.85,139.74,1810000,139.74 +1935-10-30,140.49,140.56,138.40,139.35,2150000,139.35 +1935-10-29,140.78,141.23,139.49,140.49,1710000,140.49 +1935-10-28,141.47,142.08,139.86,140.78,2110000,140.78 +1935-10-25,139.58,141.89,139.58,140.68,2470000,140.68 +1935-10-24,139.58,140.84,138.41,139.42,2160000,139.42 +1935-10-23,138.77,140.46,138.32,139.58,2760000,139.58 +1935-10-22,138.96,140.08,137.84,138.77,2840000,138.77 +1935-10-21,137.11,139.50,137.11,138.96,2870000,138.96 +1935-10-18,135.57,136.11,134.54,135.13,1450000,135.13 +1935-10-17,135.68,136.76,135.10,135.57,1610000,135.57 +1935-10-16,136.26,137.15,134.83,135.68,2240000,135.68 +1935-10-15,135.03,137.11,134.85,136.26,2570000,136.26 +1935-10-14,133.56,135.25,133.17,135.03,1590000,135.03 +1935-10-11,133.03,134.56,133.03,133.56,2060000,133.56 +1935-10-10,131.14,133.09,131.14,132.99,1860000,132.99 +1935-10-09,130.06,130.81,129.51,130.59,880000,130.59 +1935-10-08,130.77,131.30,129.85,130.06,1180000,130.06 +1935-10-07,130.35,131.35,130.24,130.77,950000,130.77 +1935-10-04,129.05,130.59,128.82,129.76,1420000,129.76 +1935-10-03,128.06,129.41,126.95,129.05,1490000,129.05 +1935-10-02,130.43,130.43,127.56,128.06,2190000,128.06 +1935-10-01,131.92,133.19,131.18,131.51,1420000,131.51 +1935-09-30,131.75,132.60,131.17,131.92,1260000,131.92 +1935-09-27,131.06,132.12,130.74,131.48,1120000,131.48 +1935-09-26,131.52,131.67,129.95,131.06,1090000,131.06 +1935-09-25,131.02,132.45,130.99,131.52,1080000,131.52 +1935-09-24,130.26,131.68,130.26,131.02,1010000,131.02 +1935-09-23,128.97,130.66,128.97,129.55,1010000,129.55 +1935-09-20,130.38,130.38,127.98,128.42,2220000,128.42 +1935-09-19,134.11,134.49,131.10,131.44,1920000,131.44 +1935-09-18,133.11,135.34,133.07,134.11,1940000,134.11 +1935-09-17,132.91,133.78,131.86,133.11,1330000,133.11 +1935-09-16,133.40,133.86,131.91,132.91,1490000,132.91 +1935-09-13,133.33,134.67,132.88,133.52,1730000,133.52 +1935-09-12,134.01,134.72,132.63,133.33,1880000,133.33 +1935-09-11,133.22,135.05,132.90,134.01,2590000,134.01 +1935-09-10,132.48,134.06,131.50,133.22,1980000,133.22 +1935-09-09,131.86,133.36,131.13,132.48,2000000,132.48 +1935-09-06,129.34,131.34,128.94,130.75,2150000,130.75 +1935-09-05,128.46,130.34,128.29,129.34,1890000,129.34 +1935-09-04,127.27,128.70,126.43,128.46,1000000,128.46 +1935-09-03,127.89,128.47,126.81,127.27,900000,127.27 +1935-08-30,126.95,127.70,126.76,127.35,830000,127.35 +1935-08-29,126.61,127.62,126.57,126.95,900000,126.95 +1935-08-28,126.81,127.32,125.65,126.61,1390000,126.61 +1935-08-27,128.99,129.97,126.27,126.81,2160000,126.81 +1935-08-26,127.93,129.53,127.61,128.99,1430000,128.99 +1935-08-23,128.52,129.59,127.82,128.93,1890000,128.93 +1935-08-22,127.66,129.49,127.33,128.52,1670000,128.52 +1935-08-21,126.59,128.25,126.59,127.66,1750000,127.66 +1935-08-20,126.33,126.68,124.97,126.31,1980000,126.31 +1935-08-19,127.96,128.39,126.07,126.33,2070000,126.33 +1935-08-16,127.47,128.03,126.51,127.63,1710000,127.63 +1935-08-15,128.27,128.72,127.07,127.47,1580000,127.47 +1935-08-14,128.09,128.94,127.35,128.27,1950000,128.27 +1935-08-13,128.00,128.85,127.15,128.09,2630000,128.09 +1935-08-12,127.94,128.84,127.44,128.00,2430000,128.00 +1935-08-09,125.98,127.80,125.72,127.27,2190000,127.27 +1935-08-08,125.61,126.59,125.16,125.98,1430000,125.98 +1935-08-07,125.64,126.54,125.18,125.61,1390000,125.61 +1935-08-06,126.07,126.96,125.00,125.64,1770000,125.64 +1935-08-05,125.90,126.62,125.31,126.07,1740000,126.07 +1935-08-02,125.85,126.13,124.28,124.93,1520000,124.93 +1935-08-01,126.23,126.88,125.19,125.85,1890000,125.85 +1935-07-31,125.57,127.04,125.00,126.23,1910000,126.23 +1935-07-30,126.56,126.78,125.03,125.57,1680000,125.57 +1935-07-29,125.27,126.89,125.10,126.56,1750000,126.56 +1935-07-26,123.80,124.45,123.37,124.02,990000,124.02 +1935-07-25,124.60,125.27,123.19,123.80,1330000,123.80 +1935-07-24,124.14,124.93,123.83,124.60,1310000,124.60 +1935-07-23,124.10,125.36,123.58,124.14,1730000,124.14 +1935-07-22,122.69,124.34,122.67,124.10,1370000,124.10 +1935-07-19,123.41,123.88,121.94,122.33,1150000,122.33 +1935-07-18,122.91,124.24,122.60,123.41,1500000,123.41 +1935-07-17,122.34,123.49,122.25,122.91,1360000,122.91 +1935-07-16,121.72,122.56,121.00,122.34,900000,122.34 +1935-07-15,121.88,122.74,121.40,121.72,950000,121.72 +1935-07-12,121.93,122.63,121.29,122.20,1100000,122.20 +1935-07-11,122.69,122.90,121.14,121.93,1000000,121.93 +1935-07-10,122.15,123.14,121.97,122.69,1150000,122.69 +1935-07-09,122.55,123.34,121.74,122.15,1350000,122.15 +1935-07-08,121.02,122.68,120.69,122.55,1310000,122.55 +1935-07-05,119.02,120.75,119.02,120.61,880000,120.61 +1935-07-03,118.69,118.98,117.80,118.81,720000,118.81 +1935-07-02,118.82,119.70,118.32,118.69,1200000,118.69 +1935-07-01,118.21,119.30,117.97,118.82,680000,118.82 +1935-06-28,117.69,118.83,117.69,118.36,760000,118.36 +1935-06-27,117.64,118.50,116.91,117.56,740000,117.56 +1935-06-26,118.73,119.49,117.51,117.64,960000,117.64 +1935-06-25,119.64,119.64,117.85,118.73,1140000,118.73 +1935-06-24,120.75,121.30,119.67,120.04,1120000,120.04 +1935-06-21,117.80,120.04,117.80,119.48,1520000,119.48 +1935-06-20,117.47,117.47,115.85,117.24,1000000,117.24 +1935-06-19,119.32,119.76,117.47,118.12,1630000,118.12 +1935-06-18,118.67,119.71,118.67,119.32,890000,119.32 +1935-06-17,119.17,119.33,118.21,118.67,910000,118.67 +1935-06-14,117.89,119.67,117.64,119.00,1280000,119.00 +1935-06-13,117.14,118.40,116.49,117.89,860000,117.89 +1935-06-12,117.08,118.53,116.27,117.14,1290000,117.14 +1935-06-11,115.89,117.53,115.77,117.08,1150000,117.08 +1935-06-10,114.72,116.12,114.04,115.89,630000,115.89 +1935-06-07,113.54,114.27,113.15,114.01,590000,114.01 +1935-06-06,113.92,114.89,113.27,113.54,680000,113.54 +1935-06-05,113.58,115.08,112.96,113.92,1100000,113.92 +1935-06-04,111.95,113.73,111.95,113.58,870000,113.58 +1935-06-03,110.15,111.84,110.15,111.45,600000,111.45 +1935-05-31,111.85,112.62,110.40,110.64,1120000,110.64 +1935-05-29,113.67,113.67,111.37,111.85,1500000,111.85 +1935-05-28,116.74,117.62,112.99,113.76,2310000,113.76 +1935-05-27,115.90,117.12,115.32,116.74,820000,116.74 +1935-05-24,116.81,117.43,115.91,116.17,1180000,116.17 +1935-05-23,116.24,117.51,116.20,116.81,1290000,116.81 +1935-05-22,115.56,116.69,115.07,116.24,1150000,116.24 +1935-05-21,114.67,116.31,114.57,115.56,1140000,115.56 +1935-05-20,114.58,115.27,114.18,114.67,970000,114.67 +1935-05-17,116.58,117.09,115.28,115.81,1820000,115.81 +1935-05-16,114.67,117.30,114.67,116.58,2420000,116.58 +1935-05-15,114.18,115.11,113.87,114.61,1050000,114.61 +1935-05-14,114.23,115.03,113.71,114.18,1210000,114.18 +1935-05-13,114.08,114.93,113.36,114.23,1130000,114.23 +1935-05-10,113.10,114.50,112.84,113.67,1580000,113.67 +1935-05-09,112.63,113.92,112.11,113.10,1660000,113.10 +1935-05-08,110.18,112.74,110.18,112.63,1400000,112.63 +1935-05-07,110.53,110.68,109.23,109.79,810000,109.79 +1935-05-06,110.83,111.60,110.22,110.53,1030000,110.53 +1935-05-03,109.04,110.93,109.04,110.49,950000,110.49 +1935-05-02,108.71,109.47,107.82,108.84,880000,108.84 +1935-05-01,109.45,110.26,108.52,108.71,820000,108.71 +1935-04-30,109.91,110.61,108.75,109.45,860000,109.45 +1935-04-29,109.68,110.40,108.65,109.91,890000,109.91 +1935-04-26,110.47,111.33,109.23,110.37,1520000,110.37 +1935-04-25,109.45,111.52,108.94,110.47,1640000,110.47 +1935-04-24,110.06,110.75,109.08,109.45,1280000,109.45 +1935-04-23,110.27,110.70,109.56,110.06,1230000,110.06 +1935-04-22,109.76,110.91,109.42,110.27,1380000,110.27 +1935-04-18,105.68,108.33,105.68,107.97,820000,107.97 +1935-04-17,106.33,106.67,105.24,105.43,850000,105.43 +1935-04-16,105.93,106.67,105.44,106.33,740000,106.33 +1935-04-15,105.42,106.44,105.05,105.93,1110000,105.93 +1935-04-12,104.03,104.69,103.59,104.45,840000,104.45 +1935-04-11,104.06,104.59,103.57,104.03,730000,104.03 +1935-04-10,104.32,105.06,103.74,104.06,990000,104.06 +1935-04-09,102.65,104.46,102.58,104.32,860000,104.32 +1935-04-08,103.04,103.40,102.31,102.65,710000,102.65 +1935-04-05,101.35,102.87,101.35,102.53,1210000,102.53 +1935-04-04,100.39,101.38,100.34,101.13,560000,101.13 +1935-04-03,101.00,101.11,99.75,100.39,530000,100.39 +1935-04-02,101.23,101.86,100.84,101.00,530000,101.00 +1935-04-01,100.81,101.59,100.67,101.23,440000,101.23 +1935-03-29,100.59,101.33,100.26,100.78,460000,100.78 +1935-03-28,100.35,101.54,99.69,100.59,610000,100.59 +1935-03-27,98.97,100.72,98.87,100.35,460000,100.35 +1935-03-26,99.50,99.80,98.61,98.97,440000,98.97 +1935-03-25,99.84,99.99,98.63,99.50,460000,99.50 +1935-03-22,99.72,100.88,99.10,100.68,780000,100.68 +1935-03-21,98.29,100.55,98.03,99.72,890000,99.72 +1935-03-20,98.31,99.11,97.75,98.29,490000,98.29 +1935-03-19,97.05,98.61,97.05,98.31,510000,98.31 +1935-03-18,97.62,97.62,95.95,97.01,590000,97.01 +1935-03-15,96.71,98.51,96.47,98.21,770000,98.21 +1935-03-14,98.02,98.50,96.49,96.71,810000,96.71 +1935-03-13,97.66,98.52,96.81,98.02,1080000,98.02 +1935-03-12,99.39,99.62,97.60,97.66,1050000,97.66 +1935-03-11,101.18,101.60,99.24,99.39,800000,99.39 +1935-03-08,101.27,102.37,101.27,101.58,440000,101.58 +1935-03-07,100.22,101.37,100.13,101.17,540000,101.17 +1935-03-06,100.09,101.94,98.77,100.22,1290000,100.22 +1935-03-05,102.29,102.29,100.00,100.09,900000,100.09 +1935-03-04,103.16,103.16,102.24,102.58,420000,102.58 +1935-03-01,102.38,103.59,102.03,103.27,640000,103.27 +1935-02-28,102.55,103.27,102.14,102.38,570000,102.38 +1935-02-27,102.24,102.86,101.27,102.55,930000,102.55 +1935-02-26,103.14,103.60,102.08,102.24,950000,102.24 +1935-02-25,103.25,103.57,102.33,103.14,740000,103.14 +1935-02-21,104.97,105.47,104.28,104.86,700000,104.86 +1935-02-20,105.89,106.25,104.60,104.97,970000,104.97 +1935-02-19,107.17,107.36,105.59,105.89,1100000,105.89 +1935-02-18,104.54,108.29,103.64,107.17,1910000,107.17 +1935-02-15,103.43,105.07,103.43,104.67,730000,104.67 +1935-02-14,102.69,103.31,102.56,103.05,410000,103.05 +1935-02-13,102.42,103.06,102.18,102.69,390000,102.69 +1935-02-11,102.66,102.67,101.65,102.42,360000,102.42 +1935-02-08,101.16,102.58,101.16,102.35,590000,102.35 +1935-02-07,100.23,101.34,100.02,101.00,520000,101.00 +1935-02-06,100.74,100.90,99.95,100.23,560000,100.23 +1935-02-05,101.40,101.40,100.46,100.74,560000,100.74 +1935-02-04,102.17,102.17,101.35,101.56,350000,101.56 +1935-02-01,101.69,102.05,101.10,101.53,490000,101.53 +1935-01-31,101.05,102.12,101.05,101.69,530000,101.69 +1935-01-30,100.69,101.39,100.38,101.00,430000,101.00 +1935-01-29,101.51,101.58,100.24,100.69,580000,100.69 +1935-01-28,102.31,102.31,101.03,101.51,690000,101.51 +1935-01-25,102.44,103.12,102.32,102.86,520000,102.86 +1935-01-24,102.85,102.85,102.01,102.44,440000,102.44 +1935-01-23,102.77,103.43,102.43,102.88,620000,102.88 +1935-01-22,103.35,103.64,102.60,102.77,590000,102.77 +1935-01-21,102.96,103.93,102.57,103.35,690000,103.35 +1935-01-18,101.92,102.63,101.58,102.36,690000,102.36 +1935-01-17,101.54,102.30,101.04,101.92,740000,101.92 +1935-01-16,100.49,101.95,100.40,101.54,670000,101.54 +1935-01-15,102.76,103.20,99.54,100.49,1370000,100.49 +1935-01-14,102.39,103.37,102.39,102.76,550000,102.76 +1935-01-11,104.87,105.49,102.50,103.35,1380000,103.35 +1935-01-10,105.05,105.65,104.41,104.87,780000,104.87 +1935-01-09,105.03,105.68,104.28,105.05,900000,105.05 +1935-01-08,105.88,106.22,104.56,105.03,1190000,105.03 +1935-01-07,105.56,106.71,105.24,105.88,1290000,105.88 +1935-01-04,105.14,105.43,104.18,104.69,970000,104.69 +1935-01-03,104.51,105.63,104.12,105.14,1070000,105.14 +1935-01-02,104.04,104.93,103.05,104.51,880000,104.51 +1934-12-31,103.90,104.46,103.36,104.04,1020000,104.04 +1934-12-28,100.57,103.29,100.57,103.15,1280000,103.15 +1934-12-27,100.35,101.41,99.58,100.26,1630000,100.26 +1934-12-26,100.69,101.32,100.05,100.35,1050000,100.35 +1934-12-24,99.73,101.00,99.52,100.69,810000,100.69 +1934-12-21,99.59,100.38,98.99,99.90,920000,99.90 +1934-12-20,99.78,100.01,98.93,99.59,880000,99.59 +1934-12-19,100.88,100.88,99.40,99.78,980000,99.78 +1934-12-18,100.92,101.37,100.41,101.00,820000,101.00 +1934-12-17,100.84,101.66,100.45,100.92,900000,100.92 +1934-12-14,100.68,101.30,100.34,100.69,940000,100.69 +1934-12-13,100.97,102.02,100.39,100.68,1000000,100.68 +1934-12-12,100.81,101.62,100.52,100.97,790000,100.97 +1934-12-11,102.76,103.58,100.50,100.81,1280000,100.81 +1934-12-10,102.83,103.52,102.18,102.76,850000,102.76 +1934-12-07,103.47,103.90,102.75,103.16,1020000,103.16 +1934-12-06,103.42,104.23,102.91,103.47,1420000,103.47 +1934-12-05,102.69,104.08,102.69,103.42,1640000,103.42 +1934-12-04,101.92,102.93,101.59,102.57,950000,102.57 +1934-12-03,102.77,102.77,101.74,101.92,750000,101.92 +1934-11-30,102.75,103.36,101.94,102.94,800000,102.94 +1934-11-28,102.38,103.47,101.90,102.75,1160000,102.75 +1934-11-27,103.08,103.12,101.80,102.38,1010000,102.38 +1934-11-26,102.40,103.51,102.16,103.08,1410000,103.08 +1934-11-23,100.17,101.99,100.17,101.62,1130000,101.62 +1934-11-22,99.47,100.48,98.93,99.93,770000,99.93 +1934-11-21,99.90,100.43,98.95,99.47,810000,99.47 +1934-11-20,99.89,100.14,98.96,99.90,870000,99.90 +1934-11-19,99.45,100.68,99.24,99.89,980000,99.89 +1934-11-16,99.72,100.08,98.70,99.39,1030000,99.39 +1934-11-15,99.42,100.80,99.34,99.72,1540000,99.72 +1934-11-14,99.19,99.81,98.49,99.42,960000,99.42 +1934-11-13,99.21,99.98,98.49,99.19,1130000,99.19 +1934-11-09,97.26,99.34,96.97,99.02,1230000,99.02 +1934-11-08,97.55,98.31,96.83,97.26,840000,97.26 +1934-11-07,96.06,97.81,95.31,97.55,1110000,97.55 +1934-11-05,94.95,96.17,94.83,96.06,760000,96.06 +1934-11-02,93.83,94.94,93.83,94.42,650000,94.42 +1934-11-01,93.36,93.98,92.79,93.46,540000,93.46 +1934-10-31,93.05,94.04,92.90,93.36,420000,93.36 +1934-10-30,92.59,93.46,92.59,93.05,430000,93.05 +1934-10-29,92.86,93.60,92.37,92.53,430000,92.53 +1934-10-26,93.86,93.86,92.20,93.01,870000,93.01 +1934-10-25,95.60,96.15,94.05,94.19,1030000,94.19 +1934-10-24,94.65,95.71,93.96,95.60,770000,95.60 +1934-10-23,94.78,95.17,94.19,94.65,540000,94.65 +1934-10-22,95.02,95.79,94.65,94.78,570000,94.78 +1934-10-19,95.33,95.33,94.39,94.90,530000,94.90 +1934-10-18,95.29,96.03,94.63,95.34,660000,95.34 +1934-10-17,95.25,96.36,94.83,95.29,660000,95.29 +1934-10-16,94.16,95.81,94.15,95.25,680000,95.25 +1934-10-15,94.90,95.37,94.01,94.16,510000,94.16 +1934-10-11,93.94,96.04,93.94,95.50,1400000,95.50 +1934-10-10,91.78,94.01,91.78,93.75,990000,93.75 +1934-10-09,92.50,93.03,91.31,91.71,770000,91.71 +1934-10-08,92.85,93.21,92.16,92.50,450000,92.50 +1934-10-05,91.74,93.58,91.74,92.96,870000,92.96 +1934-10-04,91.04,91.44,89.84,91.01,610000,91.01 +1934-10-03,90.88,91.82,90.66,91.04,410000,91.04 +1934-10-02,90.41,91.44,90.30,90.88,370000,90.88 +1934-10-01,92.17,92.17,90.14,90.41,620000,90.41 +1934-09-28,93.40,93.52,92.24,92.49,510000,92.49 +1934-09-27,92.44,94.02,92.23,93.40,800000,93.40 +1934-09-26,92.72,93.12,92.05,92.44,800000,92.44 +1934-09-25,90.45,92.79,89.91,92.72,840000,92.72 +1934-09-24,91.08,91.50,89.97,90.45,510000,90.45 +1934-09-21,89.65,91.34,89.65,91.10,710000,91.10 +1934-09-20,89.34,89.93,88.76,89.35,490000,89.35 +1934-09-19,87.91,89.58,87.91,89.34,560000,89.34 +1934-09-18,86.69,87.84,86.57,87.37,530000,87.37 +1934-09-17,87.34,87.41,85.72,86.69,650000,86.69 +1934-09-14,89.25,89.25,86.64,86.83,840000,86.83 +1934-09-13,89.62,90.45,89.12,89.44,420000,89.44 +1934-09-12,89.25,90.14,89.14,89.62,400000,89.62 +1934-09-11,89.27,89.75,88.42,89.25,630000,89.25 +1934-09-10,90.83,91.32,89.04,89.27,700000,89.27 +1934-09-07,91.82,92.52,90.50,90.99,690000,90.99 +1934-09-06,93.65,94.05,91.67,91.82,600000,91.82 +1934-09-05,92.64,93.96,92.64,93.65,480000,93.65 +1934-09-04,92.59,92.59,91.74,92.30,310000,92.30 +1934-08-31,92.76,93.05,92.05,92.86,400000,92.86 +1934-08-30,93.59,93.59,92.01,92.76,650000,92.76 +1934-08-29,94.19,95.59,93.64,93.69,760000,93.69 +1934-08-28,94.46,94.48,93.55,94.19,400000,94.19 +1934-08-27,95.31,95.31,94.25,94.46,530000,94.46 +1934-08-24,94.05,95.55,93.85,95.48,750000,95.48 +1934-08-23,94.32,94.97,93.64,94.05,750000,94.05 +1934-08-22,92.68,94.95,92.68,94.32,1300000,94.32 +1934-08-21,90.87,92.70,90.87,92.57,580000,92.57 +1934-08-20,90.86,91.02,90.08,90.44,280000,90.44 +1934-08-17,91.69,92.25,91.00,91.12,480000,91.12 +1934-08-16,91.08,92.51,91.08,91.69,610000,91.69 +1934-08-15,91.12,91.70,90.66,91.00,580000,91.00 +1934-08-14,91.80,91.98,90.82,91.12,530000,91.12 +1934-08-13,89.79,92.56,89.69,91.80,810000,91.80 +1934-08-10,91.34,91.47,89.39,89.66,770000,89.66 +1934-08-09,88.97,91.80,87.19,91.34,1420000,91.34 +1934-08-08,87.47,89.28,87.16,88.97,690000,88.97 +1934-08-07,88.11,89.10,86.70,87.47,610000,87.47 +1934-08-06,88.43,88.51,86.32,88.11,780000,88.11 +1934-08-03,90.87,91.08,89.82,90.14,470000,90.14 +1934-08-02,90.57,91.12,89.75,90.87,560000,90.87 +1934-08-01,88.55,90.96,88.55,90.57,780000,90.57 +1934-07-31,88.17,88.51,87.17,88.05,360000,88.05 +1934-07-30,88.72,88.96,86.90,88.17,810000,88.17 +1934-07-27,86.64,88.86,86.64,87.84,2210000,87.84 +1934-07-26,91.32,91.32,84.58,85.51,3340000,85.51 +1934-07-25,91.01,92.08,90.09,91.57,1350000,91.57 +1934-07-24,91.98,92.91,90.63,91.01,1600000,91.01 +1934-07-23,94.62,95.17,91.96,91.98,1880000,91.98 +1934-07-20,97.20,97.20,94.43,94.74,1240000,94.74 +1934-07-19,98.26,98.70,96.92,97.24,610000,97.24 +1934-07-18,97.18,98.45,97.18,98.26,490000,98.26 +1934-07-17,97.04,97.75,96.50,96.79,620000,96.79 +1934-07-16,98.51,98.51,96.91,97.04,590000,97.04 +1934-07-13,98.32,99.08,97.66,98.82,530000,98.82 +1934-07-12,98.67,99.01,97.93,98.32,470000,98.32 +1934-07-11,98.12,99.35,98.12,98.67,650000,98.67 +1934-07-10,97.04,98.63,97.02,98.07,650000,98.07 +1934-07-09,97.15,97.54,96.54,97.04,320000,97.04 +1934-07-06,96.56,97.80,96.56,97.32,460000,97.32 +1934-07-05,95.19,96.92,95.19,96.44,440000,96.44 +1934-07-03,94.80,95.13,94.25,94.77,400000,94.77 +1934-07-02,95.71,95.71,94.59,94.80,410000,94.80 +1934-06-29,96.84,96.84,95.59,95.75,440000,95.75 +1934-06-28,96.94,97.88,96.18,97.14,640000,97.14 +1934-06-27,97.33,98.31,96.74,96.94,630000,96.94 +1934-06-26,95.79,97.53,95.46,97.33,620000,97.33 +1934-06-25,96.59,97.03,95.49,95.79,490000,95.79 +1934-06-22,97.50,97.87,95.48,95.93,930000,95.93 +1934-06-21,98.25,98.62,97.39,97.50,530000,97.50 +1934-06-20,99.02,99.10,97.94,98.25,550000,98.25 +1934-06-19,100.42,101.11,98.75,99.02,850000,99.02 +1934-06-18,99.85,100.70,99.32,100.42,610000,100.42 +1934-06-15,97.23,99.29,97.23,98.70,730000,98.70 +1934-06-14,98.49,98.49,96.92,97.15,630000,97.15 +1934-06-13,98.78,99.92,98.32,98.75,880000,98.75 +1934-06-12,97.82,99.60,97.77,98.78,950000,98.78 +1934-06-11,98.70,98.70,97.40,97.82,750000,97.82 +1934-06-08,94.82,98.55,94.82,98.44,1610000,98.44 +1934-06-07,94.77,95.24,94.04,94.72,470000,94.72 +1934-06-06,94.66,95.68,94.27,94.77,670000,94.77 +1934-06-05,92.74,94.94,92.74,94.66,740000,94.66 +1934-06-04,91.84,93.04,91.84,92.73,360000,92.73 +1934-06-01,93.71,93.71,91.70,91.79,630000,91.79 +1934-05-31,94.78,94.78,93.71,94.00,440000,94.00 +1934-05-29,95.56,95.85,94.85,95.32,380000,95.32 +1934-05-28,95.32,96.33,95.32,95.56,620000,95.56 +1934-05-25,93.37,94.96,93.25,94.50,540000,94.50 +1934-05-24,92.86,94.08,92.57,93.37,500000,93.37 +1934-05-23,93.61,93.74,92.23,92.86,660000,92.86 +1934-05-22,95.76,96.29,93.26,93.61,830000,93.61 +1934-05-21,95.13,95.96,94.81,95.76,380000,95.76 +1934-05-18,95.98,96.57,94.62,95.17,910000,95.17 +1934-05-17,92.73,96.17,92.63,95.98,1290000,95.98 +1934-05-16,92.84,93.83,91.95,92.73,720000,92.73 +1934-05-15,91.81,93.65,91.47,92.84,890000,92.84 +1934-05-14,92.22,92.95,89.10,91.81,1680000,91.81 +1934-05-11,93.91,95.19,92.99,93.18,1000000,93.18 +1934-05-10,95.59,95.59,92.16,93.91,2130000,93.91 +1934-05-09,97.16,97.81,95.38,95.71,1030000,95.71 +1934-05-08,95.51,97.73,94.47,97.16,1860000,97.16 +1934-05-07,98.20,98.71,94.30,95.51,2360000,95.51 +1934-05-04,99.02,100.66,99.02,99.29,840000,99.29 +1934-05-03,98.82,100.06,98.36,98.94,1110000,98.94 +1934-05-02,100.62,101.36,98.47,98.82,1340000,98.82 +1934-05-01,100.49,101.20,99.55,100.62,1340000,100.62 +1934-04-30,102.72,102.72,100.31,100.49,1490000,100.49 +1934-04-27,103.56,104.30,103.12,103.65,840000,103.65 +1934-04-26,105.05,105.51,102.95,103.56,1640000,103.56 +1934-04-25,105.31,105.55,104.53,105.05,960000,105.05 +1934-04-24,105.92,106.19,104.70,105.31,1270000,105.31 +1934-04-23,106.34,106.73,105.31,105.92,1110000,105.92 +1934-04-20,105.52,107.00,105.08,106.55,1890000,106.55 +1934-04-19,105.45,106.18,104.34,105.52,1330000,105.52 +1934-04-18,104.58,106.26,104.58,105.45,1540000,105.45 +1934-04-17,103.57,104.82,103.34,104.46,940000,104.46 +1934-04-16,105.04,105.31,102.88,103.57,1290000,103.57 +1934-04-13,104.80,105.72,104.42,104.98,1180000,104.98 +1934-04-12,105.16,105.82,104.30,104.80,1330000,104.80 +1934-04-11,105.05,106.23,104.64,105.16,1550000,105.16 +1934-04-10,103.95,105.51,103.95,105.05,1410000,105.05 +1934-04-09,103.60,104.07,102.92,103.54,850000,103.54 +1934-04-06,103.37,104.30,102.86,103.97,1010000,103.97 +1934-04-05,103.19,104.09,102.47,103.37,1420000,103.37 +1934-04-04,102.74,103.91,102.21,103.19,1560000,103.19 +1934-04-03,101.96,103.00,101.18,102.74,1340000,102.74 +1934-04-02,101.85,102.82,101.41,101.96,1370000,101.96 +1934-03-29,99.18,100.83,99.18,100.31,1020000,100.31 +1934-03-28,98.76,99.84,98.60,99.02,840000,99.02 +1934-03-27,99.32,99.32,97.41,98.76,1590000,98.76 +1934-03-26,100.92,102.67,100.70,100.95,1280000,100.95 +1934-03-23,100.53,100.53,99.47,99.80,760000,99.80 +1934-03-22,99.33,100.94,98.87,100.54,1030000,100.54 +1934-03-21,100.73,100.73,98.45,99.33,1070000,99.33 +1934-03-20,99.68,101.82,98.75,101.01,1540000,101.01 +1934-03-19,101.04,101.04,98.99,99.68,1510000,99.68 +1934-03-16,102.21,103.26,101.46,102.72,1170000,102.72 +1934-03-15,103.54,103.73,101.43,102.21,1340000,102.21 +1934-03-14,104.00,104.69,103.31,103.54,1360000,103.54 +1934-03-13,104.23,104.89,103.54,104.00,1280000,104.00 +1934-03-12,102.77,104.61,102.66,104.23,1260000,104.23 +1934-03-09,103.21,103.91,102.13,102.44,1370000,102.44 +1934-03-08,101.59,103.44,100.78,103.21,1700000,103.21 +1934-03-07,103.84,104.59,101.12,101.59,1730000,101.59 +1934-03-06,104.94,104.94,103.40,103.84,810000,103.84 +1934-03-05,105.56,105.89,103.79,105.02,950000,105.02 +1934-03-02,103.74,105.99,103.74,105.79,1480000,105.79 +1934-03-01,103.46,103.81,101.93,103.18,1240000,103.18 +1934-02-28,103.67,105.37,103.09,103.46,1320000,103.46 +1934-02-27,103.12,104.55,102.63,103.67,1270000,103.67 +1934-02-26,104.49,104.49,102.21,103.12,2190000,103.12 +1934-02-23,108.50,109.36,105.72,106.14,2290000,106.14 +1934-02-21,108.14,109.39,107.55,108.50,1900000,108.50 +1934-02-20,107.53,108.68,107.24,108.14,1220000,108.14 +1934-02-19,109.07,109.57,107.04,107.53,2350000,107.53 +1934-02-16,108.30,109.96,107.60,108.61,2770000,108.61 +1934-02-15,106.92,109.04,106.92,108.30,2980000,108.30 +1934-02-14,106.10,107.21,104.64,106.78,1940000,106.78 +1934-02-13,105.47,107.35,104.78,106.10,2060000,106.10 +1934-02-09,108.45,108.76,104.29,106.09,3340000,106.09 +1934-02-08,107.95,109.09,106.05,108.45,3200000,108.45 +1934-02-07,110.20,110.20,106.53,107.95,4500000,107.95 +1934-02-06,110.74,111.25,108.88,110.24,4330000,110.24 +1934-02-05,109.50,111.93,109.50,110.74,4940000,110.74 +1934-02-02,108.95,109.69,107.67,108.31,2870000,108.31 +1934-02-01,107.94,110.35,107.94,108.95,4710000,108.95 +1934-01-31,108.99,109.17,106.81,107.22,3110000,107.22 +1934-01-30,107.91,110.06,107.91,108.99,4240000,108.99 +1934-01-29,106.11,108.42,106.11,107.90,2780000,107.90 +1934-01-26,106.85,107.93,105.85,106.38,2510000,106.38 +1934-01-25,107.02,107.52,105.44,106.85,2270000,106.85 +1934-01-24,106.62,108.20,106.26,107.02,3370000,107.02 +1934-01-23,105.09,107.00,104.47,106.62,2380000,106.62 +1934-01-22,105.52,106.92,104.34,105.09,2660000,105.09 +1934-01-19,103.46,106.19,103.46,105.60,3540000,105.60 +1934-01-18,103.50,104.48,102.50,103.30,2130000,103.30 +1934-01-17,103.40,104.87,102.38,103.50,2850000,103.50 +1934-01-16,103.19,104.60,102.66,103.40,3440000,103.40 +1934-01-15,99.50,103.48,99.50,103.19,3740000,103.19 +1934-01-12,99.38,99.98,98.24,98.73,1600000,98.73 +1934-01-11,99.77,100.49,98.77,99.38,1700000,99.38 +1934-01-10,97.78,99.99,97.78,99.77,1420000,99.77 +1934-01-09,97.09,98.53,97.09,97.57,870000,97.57 +1934-01-08,96.94,97.93,96.26,96.73,720000,96.73 +1934-01-05,98.78,99.39,96.97,97.23,1060000,97.23 +1934-01-04,99.09,99.13,96.48,98.78,1190000,98.78 +1934-01-03,100.36,100.83,97.75,99.09,1380000,99.09 +1934-01-02,99.90,101.94,99.61,100.36,1270000,100.36 +1933-12-29,99.29,99.73,97.85,98.67,1130000,98.67 +1933-12-28,97.16,100.04,97.16,99.29,1480000,99.29 +1933-12-27,96.30,98.21,95.16,96.80,3080000,96.80 +1933-12-26,97.76,97.76,95.56,96.30,1300000,96.30 +1933-12-22,95.93,99.90,95.93,98.87,2420000,98.87 +1933-12-21,95.28,96.16,94.78,95.50,1020000,95.50 +1933-12-20,97.25,97.96,93.70,95.28,2160000,95.28 +1933-12-19,97.20,97.99,96.30,97.25,1030000,97.25 +1933-12-18,98.06,98.42,95.77,97.20,1340000,97.20 +1933-12-15,101.44,101.67,99.44,99.95,1170000,99.95 +1933-12-14,100.69,102.92,100.58,101.44,1560000,101.44 +1933-12-13,101.64,101.98,99.94,100.69,1330000,100.69 +1933-12-12,101.94,103.03,101.06,101.64,1650000,101.64 +1933-12-11,102.92,103.97,101.63,101.94,2450000,101.94 +1933-12-08,102.04,102.47,100.30,101.04,1330000,101.04 +1933-12-07,101.28,103.01,101.07,102.04,1680000,102.04 +1933-12-06,101.99,102.72,100.70,101.28,1440000,101.28 +1933-12-05,99.20,102.44,99.20,101.99,2020000,101.99 +1933-12-04,99.07,99.41,98.19,98.89,670000,98.89 +1933-12-01,98.41,100.08,98.41,98.89,810000,98.89 +1933-11-29,96.57,98.51,96.57,98.14,750000,98.14 +1933-11-28,95.77,97.79,95.59,96.23,1010000,96.23 +1933-11-27,99.28,99.45,95.32,95.77,1560000,95.77 +1933-11-24,98.59,100.81,98.09,99.52,1420000,99.52 +1933-11-23,100.07,100.29,97.20,98.59,1370000,98.59 +1933-11-22,100.29,101.61,98.80,100.07,1570000,100.07 +1933-11-21,101.28,101.94,99.67,100.29,1800000,100.29 +1933-11-20,98.67,101.83,98.52,101.28,1900000,101.28 +1933-11-17,99.01,100.59,97.54,98.09,2320000,98.09 +1933-11-16,94.36,99.34,94.12,99.01,2580000,99.01 +1933-11-15,95.50,96.35,93.27,94.36,1350000,94.36 +1933-11-14,95.98,98.26,94.73,95.50,2170000,95.50 +1933-11-13,96.10,97.15,95.25,95.98,1090000,95.98 +1933-11-10,96.40,97.21,94.60,95.06,1370000,95.06 +1933-11-09,95.54,98.34,95.46,96.40,2900000,96.40 +1933-11-08,92.50,96.05,91.82,95.54,1800000,95.54 +1933-11-06,93.09,93.14,91.67,92.50,690000,92.50 +1933-11-03,90.54,93.92,89.96,93.60,1500000,93.60 +1933-11-02,89.62,91.38,89.17,90.54,1120000,90.54 +1933-11-01,88.16,89.92,86.83,89.62,1140000,89.62 +1933-10-31,88.43,89.44,86.50,88.16,1130000,88.16 +1933-10-30,92.01,93.99,88.05,88.43,1470000,88.43 +1933-10-27,92.02,94.11,90.83,93.22,1110000,93.22 +1933-10-26,93.54,93.95,91.29,92.02,1220000,92.02 +1933-10-25,91.35,95.23,91.23,93.54,2880000,93.54 +1933-10-24,88.13,91.67,87.10,91.35,2110000,91.35 +1933-10-23,86.25,90.54,86.25,88.13,2130000,88.13 +1933-10-20,84.38,88.41,83.57,86.63,2700000,86.63 +1933-10-19,88.62,88.62,84.26,84.38,2900000,84.38 +1933-10-18,92.67,92.72,88.47,88.95,1730000,88.95 +1933-10-17,90.49,93.47,88.69,92.67,2480000,92.67 +1933-10-16,94.93,94.93,89.35,90.49,2670000,90.49 +1933-10-13,98.77,98.77,95.14,95.36,1270000,95.36 +1933-10-11,98.77,99.94,97.54,98.85,1030000,98.85 +1933-10-10,99.72,100.20,98.05,98.77,1140000,98.77 +1933-10-09,98.20,100.58,98.14,99.72,1250000,99.72 +1933-10-06,98.05,99.18,95.92,97.54,1460000,97.54 +1933-10-05,98.60,99.34,96.95,98.05,1660000,98.05 +1933-10-04,94.89,99.21,94.89,98.60,2140000,98.60 +1933-10-03,92.99,94.43,91.93,93.55,930000,93.55 +1933-10-02,94.82,95.32,92.69,92.99,960000,92.99 +1933-09-29,94.66,97.21,93.94,94.24,1640000,94.24 +1933-09-28,93.18,95.30,92.89,94.66,1440000,94.66 +1933-09-27,96.91,96.91,92.44,93.18,2320000,93.18 +1933-09-26,98.03,100.23,96.84,97.41,1430000,97.41 +1933-09-25,99.34,99.34,96.46,98.03,1310000,98.03 +1933-09-22,97.56,99.93,95.73,99.06,3320000,99.06 +1933-09-21,102.29,102.29,97.15,97.56,3650000,97.56 +1933-09-20,105.71,105.71,102.26,103.99,2420000,103.99 +1933-09-19,105.30,106.25,102.44,105.74,2820000,105.74 +1933-09-18,105.32,107.68,104.36,105.30,2720000,105.30 +1933-09-15,104.66,106.14,102.14,102.63,2450000,102.63 +1933-09-14,103.81,106.53,103.81,104.66,2900000,104.66 +1933-09-13,102.90,104.13,102.90,103.65,740000,103.65 +1933-09-12,103.59,104.90,102.33,102.84,2240000,102.84 +1933-09-11,99.42,103.74,99.26,103.59,1920000,103.59 +1933-09-08,99.20,100.41,98.16,99.58,1300000,99.58 +1933-09-07,100.33,101.12,98.82,99.20,1070000,99.20 +1933-09-06,100.22,100.90,97.74,100.33,1890000,100.33 +1933-09-05,103.34,103.34,99.80,100.22,1250000,100.22 +1933-09-01,102.41,103.89,101.86,103.66,1220000,103.66 +1933-08-31,102.35,103.31,101.48,102.41,1140000,102.41 +1933-08-30,103.59,104.13,100.38,102.35,2170000,102.35 +1933-08-29,104.72,105.39,100.23,103.59,3120000,103.59 +1933-08-28,105.07,105.53,103.02,104.72,2120000,104.72 +1933-08-25,102.84,105.60,102.84,105.07,3330000,105.07 +1933-08-24,100.38,102.77,99.52,101.41,1730000,101.41 +1933-08-23,101.34,102.75,99.58,100.38,2580000,100.38 +1933-08-22,100.17,101.71,99.02,101.34,1960000,101.34 +1933-08-21,98.57,100.86,98.57,100.17,1560000,100.17 +1933-08-18,99.30,100.77,96.81,98.32,2090000,98.32 +1933-08-17,94.44,99.49,93.59,99.30,2470000,99.30 +1933-08-16,96.28,96.28,92.95,94.44,1800000,94.44 +1933-08-15,96.53,97.53,95.72,96.63,910000,96.63 +1933-08-14,97.40,97.40,94.63,96.53,1220000,96.53 +1933-08-11,97.58,98.68,96.28,97.47,1340000,97.47 +1933-08-10,99.06,100.14,96.48,97.58,2820000,97.58 +1933-08-09,96.17,99.39,96.17,99.06,2560000,99.06 +1933-08-08,93.16,96.10,93.16,95.84,1230000,95.84 +1933-08-07,92.62,93.32,91.63,92.55,770000,92.55 +1933-08-04,93.45,93.45,92.03,92.62,500000,92.62 +1933-08-03,94.84,95.86,93.21,94.10,1510000,94.10 +1933-08-02,92.70,95.27,91.97,94.84,1730000,94.84 +1933-08-01,90.77,93.23,89.61,92.70,1780000,92.70 +1933-07-31,94.18,94.18,87.75,90.77,3090000,90.77 +1933-07-28,95.90,95.90,93.75,94.54,1390000,94.54 +1933-07-27,95.05,97.28,94.12,96.03,2460000,96.03 +1933-07-26,92.83,95.50,92.23,95.05,2040000,95.05 +1933-07-25,94.28,96.27,91.77,92.83,3540000,92.83 +1933-07-24,90.63,94.75,90.63,94.28,3420000,94.28 +1933-07-21,96.26,98.69,84.45,88.71,9570000,88.71 +1933-07-20,103.58,105.65,94.76,96.26,8120000,96.26 +1933-07-19,108.67,109.23,102.32,103.58,7450000,103.58 +1933-07-18,108.27,110.53,106.98,108.67,6590000,108.67 +1933-07-17,106.22,110.30,106.22,108.27,6380000,108.27 +1933-07-14,105.51,107.63,103.94,105.04,5230000,105.04 +1933-07-13,104.55,107.77,104.54,105.51,7450000,105.51 +1933-07-12,103.08,105.46,101.87,104.55,5190000,104.55 +1933-07-11,104.08,105.10,101.97,103.08,5240000,103.08 +1933-07-10,105.15,105.87,103.12,104.08,4840000,104.08 +1933-07-07,104.98,107.51,103.23,105.35,6970000,105.35 +1933-07-06,102.73,105.56,101.21,104.98,6540000,104.98 +1933-07-05,103.77,104.70,101.02,102.73,5800000,102.73 +1933-07-03,101.64,104.99,101.64,103.77,6720000,103.77 +1933-06-30,96.99,98.69,95.50,98.14,3630000,98.14 +1933-06-29,97.74,99.23,95.90,96.99,4590000,96.99 +1933-06-28,98.74,100.48,96.69,97.74,5510000,97.74 +1933-06-27,98.49,100.27,98.01,98.74,5640000,98.74 +1933-06-26,95.93,99.10,95.93,98.49,4530000,98.49 +1933-06-23,92.93,95.59,91.93,95.53,3310000,95.53 +1933-06-22,95.91,97.79,91.69,92.93,4370000,92.93 +1933-06-21,95.23,97.34,94.41,95.91,3890000,95.91 +1933-06-20,95.99,98.34,94.57,95.23,5540000,95.23 +1933-06-19,92.86,96.36,92.86,95.99,5480000,95.99 +1933-06-16,88.87,91.11,86.48,89.22,5710000,89.22 +1933-06-15,93.94,93.94,88.17,88.87,4890000,88.87 +1933-06-14,94.79,96.29,91.41,94.06,5550000,94.06 +1933-06-13,96.75,97.92,94.21,94.79,6300000,94.79 +1933-06-12,94.42,97.10,94.16,96.75,5810000,96.75 +1933-06-09,93.52,95.03,91.64,94.29,5310000,94.29 +1933-06-08,92.98,95.15,91.59,93.52,6360000,93.52 +1933-06-07,91.90,94.38,91.04,92.98,6640000,92.98 +1933-06-06,91.89,93.83,90.66,91.90,6220000,91.90 +1933-06-05,90.02,92.37,89.14,91.89,5010000,91.89 +1933-06-02,89.10,92.66,88.97,92.21,6880000,92.21 +1933-06-01,88.11,90.57,87.37,89.10,4750000,89.10 +1933-05-31,90.02,91.05,87.72,88.11,6080000,88.11 +1933-05-29,89.61,91.33,87.87,90.02,6950000,90.02 +1933-05-26,83.73,86.98,83.47,86.42,4350000,86.42 +1933-05-25,84.29,85.48,82.70,83.73,4010000,83.73 +1933-05-24,83.53,85.47,83.53,84.29,4710000,84.29 +1933-05-23,80.56,83.49,80.56,83.06,3140000,83.06 +1933-05-22,80.21,81.08,78.61,79.94,2220000,79.94 +1933-05-19,82.57,83.20,80.65,81.75,3280000,81.75 +1933-05-18,82.64,84.13,80.70,82.57,4110000,82.57 +1933-05-17,81.33,84.18,81.33,82.64,4790000,82.64 +1933-05-16,79.70,82.25,79.54,81.29,3290000,81.29 +1933-05-15,80.85,81.23,79.06,79.70,3150000,79.70 +1933-05-12,82.48,82.75,80.13,82.14,4560000,82.14 +1933-05-11,81.18,83.61,81.18,82.48,6160000,82.48 +1933-05-10,77.95,81.01,77.95,80.78,3820000,80.78 +1933-05-09,76.63,78.03,75.61,77.23,2230000,77.23 +1933-05-08,77.61,79.67,76.01,76.63,3200000,76.63 +1933-05-05,79.16,81.27,78.81,79.78,5000000,79.78 +1933-05-04,77.37,79.80,76.19,79.16,4590000,79.16 +1933-05-03,77.29,78.92,75.69,77.37,4640000,77.37 +1933-05-02,77.79,78.37,75.66,77.29,3900000,77.29 +1933-05-01,77.66,79.98,76.91,77.79,6050000,77.79 +1933-04-28,71.71,73.34,69.78,73.10,2160000,73.10 +1933-04-27,72.64,73.06,70.72,71.71,1880000,71.71 +1933-04-26,72.45,73.58,70.86,72.64,2920000,72.64 +1933-04-25,73.69,73.70,70.77,72.45,3500000,72.45 +1933-04-24,72.32,74.84,72.32,73.69,4810000,73.69 +1933-04-21,72.27,72.80,68.64,69.78,5220000,69.78 +1933-04-20,69.78,75.20,69.78,72.27,7130000,72.27 +1933-04-19,63.56,68.70,63.56,68.31,5090000,68.31 +1933-04-18,61.59,63.31,60.74,62.65,1440000,62.65 +1933-04-17,62.75,62.75,60.93,61.59,1010000,61.59 +1933-04-13,60.35,63.31,60.35,62.69,1660000,62.69 +1933-04-12,61.08,61.08,59.68,60.26,750000,60.26 +1933-04-11,62.11,62.65,60.71,61.15,1440000,61.15 +1933-04-10,59.98,62.23,59.98,62.11,1760000,62.11 +1933-04-07,58.80,60.06,58.18,58.78,950000,58.78 +1933-04-06,57.73,59.56,57.73,58.80,1230000,58.80 +1933-04-05,56.53,58.69,56.53,57.50,1150000,57.50 +1933-04-04,55.69,56.61,55.00,56.09,720000,56.09 +1933-04-03,55.66,56.62,55.26,55.69,600000,55.69 +1933-03-31,56.49,57.05,54.94,55.40,880000,55.40 +1933-03-30,56.81,57.17,56.10,56.49,620000,56.49 +1933-03-29,57.90,57.90,56.57,56.81,640000,56.81 +1933-03-28,56.53,58.02,56.12,57.92,600000,57.92 +1933-03-27,57.62,57.62,56.31,56.53,500000,56.53 +1933-03-24,58.06,58.41,56.90,57.93,640000,57.93 +1933-03-23,57.69,59.91,57.69,58.06,980000,58.06 +1933-03-22,57.58,58.48,56.35,56.86,990000,56.86 +1933-03-21,59.85,59.85,57.23,57.58,1210000,57.58 +1933-03-20,60.56,61.33,59.72,59.90,780000,59.90 +1933-03-17,62.54,62.54,60.32,60.73,1730000,60.73 +1933-03-16,62.10,64.56,62.05,62.95,3300000,62.95 +1933-03-15,57.11,62.55,57.11,62.10,3070000,62.10 +1933-03-03,52.54,55.44,51.54,53.84,1410000,53.84 +1933-03-02,52.54,53.01,50.25,52.54,1000000,52.54 +1933-03-01,51.39,52.97,50.81,52.54,790000,52.54 +1933-02-28,50.16,52.12,49.83,51.39,910000,51.39 +1933-02-27,50.93,52.13,49.68,50.16,1250000,50.16 +1933-02-24,51.94,54.13,51.13,53.84,1070000,53.84 +1933-02-23,53.60,53.60,51.65,51.94,1330000,51.94 +1933-02-21,54.26,54.84,53.52,53.99,690000,53.99 +1933-02-20,55.61,55.61,53.82,54.26,860000,54.26 +1933-02-17,55.49,56.78,55.15,56.37,650000,56.37 +1933-02-16,56.63,56.63,54.69,55.49,1080000,55.49 +1933-02-15,56.57,57.59,56.08,56.71,750000,56.71 +1933-02-14,58.19,58.19,56.04,56.57,1540000,56.57 +1933-02-10,60.06,60.06,58.81,59.11,720000,59.11 +1933-02-09,59.17,60.85,59.17,60.09,1080000,60.09 +1933-02-08,58.38,59.21,57.85,58.87,720000,58.87 +1933-02-07,58.07,58.67,57.50,58.38,590000,58.38 +1933-02-06,57.55,58.27,56.65,58.07,670000,58.07 +1933-02-03,58.03,58.46,57.11,58.11,910000,58.11 +1933-02-02,58.90,58.90,57.45,58.03,1250000,58.03 +1933-02-01,60.89,60.89,58.63,59.08,1190000,59.08 +1933-01-31,60.77,61.34,60.48,60.90,660000,60.90 +1933-01-30,60.71,61.05,60.09,60.77,480000,60.77 +1933-01-27,61.73,61.98,60.03,61.43,970000,61.43 +1933-01-26,62.33,62.79,61.61,61.73,810000,61.73 +1933-01-25,61.30,62.66,60.84,62.33,750000,62.33 +1933-01-24,61.46,61.99,60.67,61.30,490000,61.30 +1933-01-23,61.79,62.10,60.55,61.46,660000,61.46 +1933-01-20,61.02,62.68,60.90,61.63,710000,61.63 +1933-01-19,60.37,61.99,60.37,61.02,620000,61.02 +1933-01-18,61.75,62.03,60.07,60.36,690000,60.36 +1933-01-17,61.62,62.09,60.93,61.75,660000,61.75 +1933-01-16,63.09,63.87,61.38,61.62,870000,61.62 +1933-01-13,63.09,63.94,62.12,63.18,830000,63.18 +1933-01-12,63.81,64.80,62.84,63.09,920000,63.09 +1933-01-11,64.35,65.28,63.62,63.81,1620000,63.81 +1933-01-10,62.31,64.57,61.83,64.35,1150000,64.35 +1933-01-09,62.96,63.64,61.90,62.31,930000,62.31 +1933-01-06,62.25,63.85,62.07,62.96,1140000,62.96 +1933-01-05,62.35,63.39,61.58,62.25,1140000,62.25 +1933-01-04,59.54,62.62,59.54,62.35,1090000,62.35 +1933-01-03,59.93,60.17,58.87,59.29,490000,59.29 +1932-12-30,59.12,60.84,58.82,60.26,1050000,60.26 +1932-12-29,57.85,59.38,57.39,59.12,1610000,59.12 +1932-12-28,57.60,59.49,57.10,57.85,1600000,57.85 +1932-12-27,57.98,58.57,56.95,57.60,800000,57.60 +1932-12-23,56.55,57.30,56.07,56.80,930000,56.80 +1932-12-22,58.97,59.29,56.24,56.55,1300000,56.55 +1932-12-21,58.78,59.65,58.27,58.97,730000,58.97 +1932-12-20,60.08,60.19,58.28,58.78,1000000,58.78 +1932-12-19,60.11,61.51,59.82,60.08,920000,60.08 +1932-12-16,61.16,61.40,59.75,60.52,920000,60.52 +1932-12-15,61.93,62.89,60.98,61.16,1180000,61.16 +1932-12-14,60.35,62.11,59.19,61.93,1020000,61.93 +1932-12-13,61.38,61.38,59.98,60.35,730000,60.35 +1932-12-12,61.25,62.50,60.68,61.48,920000,61.48 +1932-12-09,60.05,61.90,59.28,61.58,1180000,61.58 +1932-12-08,59.77,60.51,58.97,60.05,710000,60.05 +1932-12-07,59.58,60.97,59.12,59.77,1190000,59.77 +1932-12-06,56.95,59.96,56.95,59.58,1110000,59.58 +1932-12-05,55.83,58.06,55.58,56.53,730000,56.53 +1932-12-02,57.50,57.50,55.70,55.91,690000,55.91 +1932-12-01,56.35,58.40,56.02,58.02,760000,58.02 +1932-11-30,58.77,59.33,55.94,56.35,1090000,56.35 +1932-11-29,59.17,59.74,58.31,58.77,530000,58.77 +1932-11-28,58.89,59.71,58.10,59.17,540000,59.17 +1932-11-25,59.47,59.54,57.47,58.78,1000000,58.78 +1932-11-23,62.60,62.60,59.10,59.47,1200000,59.47 +1932-11-22,63.65,64.40,62.86,63.16,540000,63.16 +1932-11-21,64.14,64.68,63.23,63.65,610000,63.65 +1932-11-18,62.99,64.73,62.66,62.96,730000,62.96 +1932-11-17,63.24,63.83,62.18,62.99,710000,62.99 +1932-11-16,65.26,65.26,62.56,63.24,950000,63.24 +1932-11-15,65.57,66.17,63.54,65.26,1050000,65.26 +1932-11-14,67.88,67.88,64.87,65.57,1310000,65.57 +1932-11-11,65.54,68.27,65.41,68.03,2630000,68.03 +1932-11-10,61.67,65.61,61.44,65.54,1570000,65.54 +1932-11-09,64.58,65.42,61.02,61.67,1270000,61.67 +1932-11-07,63.22,65.43,63.22,64.58,1610000,64.58 +1932-11-04,58.99,62.07,58.99,61.53,970000,61.53 +1932-11-03,58.53,59.06,57.21,58.28,1020000,58.28 +1932-11-02,60.22,61.13,57.96,58.53,1100000,58.53 +1932-11-01,61.57,61.57,59.86,60.22,520000,60.22 +1932-10-31,62.09,62.19,61.06,61.90,390000,61.90 +1932-10-28,61.86,63.51,61.81,63.09,690000,63.09 +1932-10-27,61.36,62.83,60.77,61.86,720000,61.86 +1932-10-26,60.32,61.73,59.03,61.36,860000,61.36 +1932-10-25,61.03,61.69,59.70,60.32,600000,60.32 +1932-10-24,60.85,61.58,60.07,61.03,550000,61.03 +1932-10-21,63.64,63.64,60.71,61.01,1240000,61.01 +1932-10-20,65.74,66.13,63.92,64.40,1060000,64.40 +1932-10-19,63.49,66.06,63.35,65.74,1300000,65.74 +1932-10-18,62.69,64.82,62.06,63.49,1020000,63.49 +1932-10-17,64.07,64.07,62.21,62.69,770000,62.69 +1932-10-14,60.27,65.45,60.27,63.84,2030000,63.84 +1932-10-13,61.66,62.54,58.84,59.76,1230000,59.76 +1932-10-11,59.07,62.52,59.07,61.66,1750000,61.66 +1932-10-10,61.17,62.57,57.67,58.47,2280000,58.47 +1932-10-07,66.28,66.89,62.16,62.67,2300000,62.67 +1932-10-06,66.07,67.08,64.67,66.28,1940000,66.28 +1932-10-05,70.92,70.92,65.90,66.07,2950000,66.07 +1932-10-04,71.21,72.63,70.45,71.16,1240000,71.16 +1932-10-03,72.09,72.32,69.88,71.21,1000000,71.21 +1932-09-30,71.53,72.00,69.75,71.56,1160000,71.56 +1932-09-29,73.52,74.36,71.24,71.53,1340000,71.53 +1932-09-28,71.49,74.07,71.40,73.52,1380000,73.52 +1932-09-27,71.06,73.42,69.98,71.49,1400000,71.49 +1932-09-26,74.83,75.67,70.41,71.06,2080000,71.06 +1932-09-23,72.71,75.16,72.42,73.92,2200000,73.92 +1932-09-22,75.16,76.01,72.14,72.71,3690000,72.71 +1932-09-21,69.46,75.53,69.46,75.16,4350000,75.16 +1932-09-20,65.06,67.65,64.68,67.49,1250000,67.49 +1932-09-19,66.44,67.40,64.82,65.06,1260000,65.06 +1932-09-16,67.94,69.84,66.11,67.10,1910000,67.10 +1932-09-15,65.88,68.58,64.27,67.94,3140000,67.94 +1932-09-14,69.85,72.41,65.54,65.88,3250000,65.88 +1932-09-13,71.54,71.54,66.38,69.85,5100000,69.85 +1932-09-12,76.54,76.68,70.81,72.33,4050000,72.33 +1932-09-09,77.49,79.91,75.69,76.19,4040000,76.19 +1932-09-08,79.93,81.39,76.92,77.49,5370000,77.49 +1932-09-07,77.28,80.28,76.78,79.93,4150000,79.93 +1932-09-06,78.33,80.36,76.66,77.28,4360000,77.28 +1932-09-02,74.00,77.12,74.00,76.77,3490000,76.77 +1932-09-01,73.16,74.55,71.92,73.67,2420000,73.67 +1932-08-31,74.30,74.44,71.11,73.16,3000000,73.16 +1932-08-30,75.22,76.73,73.59,74.30,3300000,74.30 +1932-08-29,75.61,77.01,74.25,75.22,3930000,75.22 +1932-08-26,73.31,75.41,71.28,74.43,3120000,74.43 +1932-08-25,73.55,75.88,72.54,73.31,4170000,73.31 +1932-08-24,72.13,74.01,70.82,73.55,3690000,73.55 +1932-08-23,70.87,73.80,70.69,72.13,4570000,72.13 +1932-08-22,67.50,71.11,67.50,70.87,3180000,70.87 +1932-08-19,67.93,69.47,66.10,66.84,2170000,66.84 +1932-08-18,67.50,68.52,65.65,67.93,1790000,67.93 +1932-08-17,68.91,70.56,65.62,67.50,2870000,67.50 +1932-08-16,67.16,70.54,67.16,68.91,3610000,68.91 +1932-08-15,63.19,66.72,62.93,66.51,1910000,66.51 +1932-08-12,68.90,69.06,62.45,63.11,3710000,63.11 +1932-08-11,69.39,71.62,66.95,68.90,4400000,68.90 +1932-08-10,67.08,71.34,65.65,69.39,4430000,69.39 +1932-08-09,67.71,69.53,65.36,67.08,3840000,67.08 +1932-08-08,66.56,71.49,64.86,67.71,5460000,67.71 +1932-08-05,59.73,63.42,59.73,62.60,2680000,62.60 +1932-08-04,58.22,62.13,57.90,59.63,3520000,59.63 +1932-08-03,53.16,58.69,52.99,58.22,2400000,58.22 +1932-08-02,54.94,55.57,52.40,53.16,1440000,53.16 +1932-08-01,54.26,56.92,53.59,54.94,2110000,54.94 +1932-07-29,52.61,54.68,51.52,53.89,2100000,53.89 +1932-07-28,51.34,53.84,50.67,52.61,2730000,52.61 +1932-07-27,49.04,51.71,48.18,51.34,1700000,51.34 +1932-07-26,49.78,50.41,48.49,49.04,1500000,49.04 +1932-07-25,48.01,50.23,48.01,49.78,1550000,49.78 +1932-07-22,46.50,48.31,46.35,47.69,1450000,47.69 +1932-07-21,45.43,46.86,45.12,46.50,930000,46.50 +1932-07-20,44.22,45.56,44.22,45.43,630000,45.43 +1932-07-19,44.07,44.51,43.53,43.79,470000,43.79 +1932-07-18,45.29,45.61,43.83,44.07,610000,44.07 +1932-07-15,44.34,45.82,43.74,45.47,810000,45.47 +1932-07-14,44.88,45.85,43.91,44.34,1000000,44.34 +1932-07-13,42.68,45.05,42.35,44.88,980000,44.88 +1932-07-12,42.99,43.65,42.36,42.68,700000,42.68 +1932-07-11,41.63,43.03,40.92,42.99,600000,42.99 +1932-07-08,41.81,42.61,40.56,41.22,720000,41.22 +1932-07-07,44.08,44.26,41.63,41.81,780000,41.81 +1932-07-06,43.47,44.50,42.31,44.08,730000,44.08 +1932-07-05,44.39,44.43,42.53,43.47,610000,43.47 +1932-07-01,42.84,44.63,42.64,44.39,610000,44.39 +1932-06-30,43.66,44.44,42.41,42.84,630000,42.84 +1932-06-29,43.18,44.21,42.54,43.66,630000,43.66 +1932-06-28,42.93,44.30,42.31,43.18,830000,43.18 +1932-06-27,44.76,44.82,42.52,42.93,770000,42.93 +1932-06-24,46.83,47.57,44.55,44.84,770000,44.84 +1932-06-23,46.27,47.47,46.15,46.83,470000,46.83 +1932-06-22,46.58,46.66,45.43,46.27,610000,46.27 +1932-06-21,47.80,48.42,46.47,46.58,500000,46.58 +1932-06-20,47.55,48.66,47.41,47.80,390000,47.80 +1932-06-17,50.34,50.36,47.44,47.56,790000,47.56 +1932-06-16,50.62,51.43,49.73,50.34,850000,50.34 +1932-06-15,49.37,51.43,49.37,50.62,1160000,50.62 +1932-06-14,48.11,49.70,47.59,49.00,760000,49.00 +1932-06-13,48.26,48.97,47.12,48.11,570000,48.11 +1932-06-10,45.32,49.52,45.22,48.94,1270000,48.94 +1932-06-09,45.20,47.55,44.45,45.32,1190000,45.32 +1932-06-08,47.21,47.21,45.01,45.20,990000,45.20 +1932-06-07,49.32,49.74,47.18,47.47,830000,47.47 +1932-06-06,50.63,50.63,48.54,49.32,960000,49.32 +1932-06-03,47.35,50.29,47.35,48.40,1890000,48.40 +1932-06-02,44.93,47.74,43.49,47.25,1870000,47.25 +1932-06-01,44.74,48.60,44.13,44.93,1840000,44.93 +1932-05-31,46.93,46.93,44.27,44.74,1480000,44.74 +1932-05-27,49.94,49.94,47.17,47.47,900000,47.47 +1932-05-26,49.10,50.72,47.02,49.99,1850000,49.99 +1932-05-25,50.79,50.79,48.65,49.10,1300000,49.10 +1932-05-24,52.98,53.20,50.59,50.85,980000,50.85 +1932-05-23,53.04,54.34,52.61,52.98,560000,52.98 +1932-05-20,53.14,55.50,52.97,53.31,770000,53.31 +1932-05-19,52.81,53.88,51.79,53.14,680000,53.14 +1932-05-18,54.04,54.68,52.28,52.81,680000,52.81 +1932-05-17,53.96,55.65,52.16,54.04,930000,54.04 +1932-05-16,52.48,54.63,50.21,53.96,1310000,53.96 +1932-05-13,55.33,55.33,53.23,53.46,870000,53.46 +1932-05-12,57.71,57.71,54.91,55.62,920000,55.62 +1932-05-11,57.68,59.52,57.47,57.83,690000,57.83 +1932-05-10,57.04,58.94,56.68,57.68,740000,57.68 +1932-05-09,58.04,58.74,56.29,57.04,640000,57.04 +1932-05-06,54.58,59.76,54.58,59.01,1630000,59.01 +1932-05-05,54.88,55.74,52.73,54.10,1000000,54.10 +1932-05-04,54.15,55.21,52.33,54.88,1320000,54.88 +1932-05-03,55.37,56.12,53.80,54.15,900000,54.15 +1932-05-02,56.11,56.28,54.20,55.37,780000,55.37 +1932-04-29,57.81,57.81,55.37,55.93,1160000,55.93 +1932-04-28,61.28,61.36,57.98,58.24,930000,58.24 +1932-04-27,59.71,62.15,59.40,61.28,1120000,61.28 +1932-04-26,58.92,61.01,58.51,59.71,790000,59.71 +1932-04-25,59.22,60.51,58.06,58.92,640000,58.92 +1932-04-22,61.39,61.39,58.26,58.88,920000,58.88 +1932-04-21,59.46,62.71,59.04,62.01,1110000,62.01 +1932-04-20,59.75,60.81,58.70,59.46,990000,59.46 +1932-04-19,60.85,61.45,58.91,59.75,1030000,59.75 +1932-04-18,63.21,63.21,60.57,60.85,850000,60.85 +1932-04-15,63.27,66.51,62.21,64.49,1540000,64.49 +1932-04-14,61.18,63.84,59.10,63.27,1720000,63.27 +1932-04-13,62.33,63.74,60.66,61.18,1100000,61.18 +1932-04-12,62.04,64.13,60.62,62.33,1550000,62.33 +1932-04-11,64.48,64.54,60.76,62.04,1700000,62.04 +1932-04-08,65.73,65.73,61.98,62.90,2130000,62.90 +1932-04-07,66.46,68.29,65.23,66.20,1800000,66.20 +1932-04-06,68.07,68.93,65.85,66.46,3000000,66.46 +1932-04-05,70.67,70.67,67.29,68.07,1480000,68.07 +1932-04-04,71.30,71.84,68.32,71.19,1610000,71.19 +1932-04-01,73.28,74.38,71.21,72.18,1530000,72.18 +1932-03-31,77.15,77.80,72.49,73.28,1480000,73.28 +1932-03-30,75.50,77.64,75.08,77.15,1010000,77.15 +1932-03-29,75.09,76.98,74.68,75.50,1110000,75.50 +1932-03-28,75.69,75.79,73.55,75.09,1350000,75.09 +1932-03-24,78.64,79.58,77.49,77.99,840000,77.99 +1932-03-23,79.55,80.08,78.23,78.64,840000,78.64 +1932-03-22,79.90,80.59,77.79,79.55,1080000,79.55 +1932-03-21,78.09,80.19,77.32,79.90,890000,79.90 +1932-03-18,80.59,80.59,77.63,78.82,1410000,78.82 +1932-03-17,79.11,81.55,77.57,80.87,1770000,80.87 +1932-03-16,81.02,81.84,78.76,79.11,1460000,79.11 +1932-03-15,81.12,82.44,79.66,81.02,1470000,81.02 +1932-03-14,84.30,84.30,80.44,81.12,2030000,81.12 +1932-03-11,85.70,85.70,83.26,83.61,1260000,83.61 +1932-03-10,86.94,87.47,85.44,86.25,1050000,86.25 +1932-03-09,88.78,89.87,86.57,86.94,1330000,86.94 +1932-03-08,87.16,89.87,86.90,88.78,1640000,88.78 +1932-03-07,88.49,89.78,86.80,87.16,1580000,87.16 +1932-03-04,86.13,87.87,84.54,86.11,1510000,86.11 +1932-03-03,86.28,88.35,85.47,86.13,1720000,86.13 +1932-03-02,82.10,86.50,82.10,86.28,1760000,86.28 +1932-03-01,81.44,82.20,80.50,81.87,730000,81.87 +1932-02-29,82.02,83.89,80.84,81.44,880000,81.44 +1932-02-26,82.05,83.53,81.37,82.09,890000,82.09 +1932-02-25,82.73,82.92,80.13,82.05,1040000,82.05 +1932-02-24,80.26,83.32,79.57,82.73,1080000,82.73 +1932-02-23,83.59,84.03,79.85,80.26,1280000,80.26 +1932-02-19,85.26,89.84,85.26,85.98,2430000,85.98 +1932-02-18,82.24,85.74,81.45,85.13,1680000,85.13 +1932-02-17,85.75,87.18,81.67,82.24,2190000,82.24 +1932-02-16,82.18,86.51,80.49,85.75,2500000,85.75 +1932-02-15,85.36,85.36,80.88,82.18,1980000,82.18 +1932-02-11,74.27,79.62,74.27,78.60,2560000,78.60 +1932-02-10,72.38,73.98,70.64,71.80,1300000,71.80 +1932-02-09,73.45,74.50,71.85,72.38,1160000,72.38 +1932-02-08,74.45,75.15,72.31,73.45,1150000,73.45 +1932-02-05,77.50,77.50,74.71,75.00,1080000,75.00 +1932-02-04,78.26,78.88,77.15,77.66,680000,77.66 +1932-02-03,77.82,78.96,76.77,78.26,810000,78.26 +1932-02-02,79.63,80.74,77.61,77.82,1120000,77.82 +1932-02-01,76.32,80.62,76.32,79.63,1520000,79.63 +1932-01-29,76.73,77.14,74.19,76.55,1530000,76.55 +1932-01-28,77.82,78.03,75.85,76.73,1120000,76.73 +1932-01-27,79.20,79.20,76.66,77.82,1280000,77.82 +1932-01-26,78.92,80.79,78.92,79.76,760000,79.76 +1932-01-25,77.98,79.94,77.42,78.66,830000,78.66 +1932-01-22,83.42,83.51,78.56,78.81,1560000,78.81 +1932-01-21,83.57,85.03,82.70,83.42,1240000,83.42 +1932-01-20,81.10,83.79,80.45,83.57,1210000,83.57 +1932-01-19,81.45,82.79,80.35,81.10,1090000,81.10 +1932-01-18,84.44,85.32,81.29,81.45,1380000,81.45 +1932-01-15,85.35,86.59,83.24,85.88,1640000,85.88 +1932-01-14,84.70,87.78,84.70,85.35,2650000,85.35 +1932-01-13,79.96,84.67,79.96,84.36,2070000,84.36 +1932-01-12,80.44,82.08,78.84,79.39,1360000,79.39 +1932-01-11,79.98,82.20,77.23,80.44,1800000,80.44 +1932-01-08,78.03,82.11,76.74,81.80,1970000,81.80 +1932-01-07,76.31,80.17,76.11,78.03,2180000,78.03 +1932-01-06,73.02,77.16,73.02,76.31,1840000,76.31 +1932-01-05,71.59,72.78,69.85,71.24,1420000,71.24 +1932-01-04,74.06,74.06,70.91,71.59,1510000,71.59 +1931-12-31,77.14,79.92,76.92,77.90,1510000,77.90 +1931-12-30,75.84,77.86,75.12,77.14,2110000,77.14 +1931-12-29,73.84,77.81,73.54,75.84,2440000,75.84 +1931-12-28,75.84,76.27,72.41,73.84,2000000,73.84 +1931-12-24,76.02,77.45,75.14,75.84,1110000,75.84 +1931-12-23,79.55,80.17,75.42,76.02,1560000,76.02 +1931-12-22,78.08,80.32,77.26,79.55,1400000,79.55 +1931-12-21,80.75,81.76,77.55,78.08,1930000,78.08 +1931-12-18,73.79,81.10,72.62,80.69,3620000,80.69 +1931-12-17,76.33,76.33,71.79,73.79,2940000,73.79 +1931-12-16,78.60,80.00,75.93,76.49,1960000,76.49 +1931-12-15,77.22,79.44,75.50,78.60,2630000,78.60 +1931-12-14,78.93,82.57,76.15,77.22,2890000,77.22 +1931-12-11,82.46,83.11,79.26,79.63,2350000,79.63 +1931-12-10,84.14,84.15,80.75,82.46,2660000,82.46 +1931-12-09,86.50,86.52,82.49,84.14,2260000,84.14 +1931-12-08,90.11,90.98,85.81,86.50,1600000,86.50 +1931-12-07,90.14,92.60,89.16,90.11,1460000,90.11 +1931-12-04,89.70,91.97,85.75,86.76,1920000,86.76 +1931-12-03,87.90,90.59,86.28,89.70,1800000,89.70 +1931-12-02,91.17,93.06,87.39,87.90,1890000,87.90 +1931-12-01,93.38,93.38,87.78,91.17,2030000,91.17 +1931-11-30,90.02,95.77,89.35,93.87,2000000,93.87 +1931-11-27,93.79,93.79,90.65,91.55,1820000,91.55 +1931-11-25,98.54,98.54,93.67,94.15,1500000,94.15 +1931-11-24,96.60,100.10,96.53,98.61,1250000,98.61 +1931-11-23,97.42,98.83,95.00,96.60,1350000,96.60 +1931-11-20,100.99,100.99,96.45,97.96,2040000,97.96 +1931-11-19,101.69,103.81,99.83,101.25,1510000,101.25 +1931-11-18,105.86,105.86,101.21,101.69,1670000,101.69 +1931-11-17,104.76,108.02,103.76,106.16,1460000,106.16 +1931-11-16,106.35,107.86,103.43,104.76,1510000,104.76 +1931-11-13,111.95,112.39,106.71,107.33,1790000,107.33 +1931-11-12,112.01,114.61,110.86,111.95,1440000,111.95 +1931-11-11,113.98,114.63,110.38,112.01,1490000,112.01 +1931-11-10,116.58,116.58,112.24,113.98,1750000,113.98 +1931-11-09,115.60,119.15,114.47,116.79,3050000,116.79 +1931-11-06,108.58,113.28,106.43,112.72,2280000,112.72 +1931-11-05,108.33,110.68,107.45,108.58,1520000,108.58 +1931-11-04,104.50,108.85,103.19,108.33,1480000,108.33 +1931-11-02,105.43,107.76,103.94,104.50,1460000,104.50 +1931-10-30,100.75,104.51,100.75,103.97,1560000,103.97 +1931-10-29,100.52,101.66,98.19,100.66,1340000,100.66 +1931-10-28,104.25,104.50,99.20,100.52,1770000,100.52 +1931-10-27,106.31,106.31,102.43,104.25,1390000,104.25 +1931-10-26,109.36,109.36,105.69,106.37,1190000,106.37 +1931-10-23,105.02,109.17,104.58,108.88,1330000,108.88 +1931-10-22,108.39,108.58,104.09,105.02,1390000,105.02 +1931-10-21,108.65,109.69,103.86,108.39,2240000,108.39 +1931-10-20,104.69,109.59,104.69,108.65,2510000,108.65 +1931-10-19,102.28,104.19,100.87,103.45,860000,103.45 +1931-10-16,98.71,103.19,98.24,102.49,1420000,102.49 +1931-10-15,97.45,102.67,97.45,98.71,1380000,98.71 +1931-10-14,100.24,102.50,96.01,97.27,1640000,97.27 +1931-10-13,105.37,105.37,99.74,100.24,1250000,100.24 +1931-10-09,105.79,108.98,102.79,104.46,3220000,104.46 +1931-10-08,98.19,106.43,98.19,105.79,2870000,105.79 +1931-10-07,99.34,103.84,96.79,97.32,2820000,97.32 +1931-10-06,87.51,100.49,87.51,99.34,4310000,99.34 +1931-10-05,92.14,92.14,85.51,86.48,3190000,86.48 +1931-10-02,95.66,100.03,93.64,96.88,2530000,96.88 +1931-10-01,96.61,98.51,92.88,95.66,3640000,95.66 +1931-09-30,99.80,102.39,95.76,96.61,3210000,96.61 +1931-09-29,104.39,104.64,99.02,99.80,2900000,99.80 +1931-09-28,107.36,108.80,103.58,104.39,1490000,104.39 +1931-09-25,107.79,112.64,104.73,109.86,2850000,109.86 +1931-09-24,115.99,116.95,106.64,107.79,3050000,107.79 +1931-09-23,110.77,117.75,110.77,115.99,2930000,115.99 +1931-09-22,110.83,112.65,108.12,109.40,2050000,109.40 +1931-09-21,111.74,114.59,104.79,110.83,4400000,110.83 +1931-09-18,121.27,121.27,114.47,115.08,2900000,115.08 +1931-09-17,119.26,123.28,117.29,121.76,2420000,121.76 +1931-09-16,120.59,123.10,118.41,119.26,1980000,119.26 +1931-09-15,121.30,123.03,118.70,120.59,2170000,120.59 +1931-09-14,123.00,123.00,119.12,121.30,2450000,121.30 +1931-09-11,127.30,129.47,124.50,128.23,1970000,128.23 +1931-09-10,128.43,130.45,126.04,127.30,1510000,127.30 +1931-09-09,129.19,130.67,126.36,128.43,2020000,128.43 +1931-09-08,131.57,131.57,127.91,129.19,2040000,129.19 +1931-09-04,133.14,133.82,131.44,132.62,1200000,132.62 +1931-09-03,136.54,136.54,132.21,133.14,2130000,133.14 +1931-09-02,140.08,140.08,136.62,137.31,960000,137.31 +1931-09-01,139.41,140.54,138.51,140.13,540000,140.13 +1931-08-31,142.07,142.07,138.96,139.41,740000,139.41 +1931-08-28,138.82,142.11,138.82,140.78,930000,140.78 +1931-08-27,139.93,140.75,137.88,138.66,830000,138.66 +1931-08-26,136.65,140.32,135.98,139.93,840000,139.93 +1931-08-25,137.62,139.22,135.69,136.65,860000,136.65 +1931-08-24,137.76,137.99,135.62,137.62,820000,137.62 +1931-08-21,141.93,142.49,137.35,138.60,1310000,138.60 +1931-08-20,141.72,143.93,140.96,141.93,1070000,141.93 +1931-08-19,141.26,142.61,140.04,141.72,1080000,141.72 +1931-08-18,140.98,144.43,139.36,141.26,1710000,141.26 +1931-08-17,144.27,144.27,140.34,140.98,1320000,140.98 +1931-08-14,140.82,145.05,140.82,144.15,1830000,144.15 +1931-08-13,137.63,141.30,137.03,140.22,1380000,140.22 +1931-08-12,140.16,140.99,137.03,137.63,1260000,137.63 +1931-08-11,134.26,141.42,133.80,140.16,1600000,140.16 +1931-08-10,134.85,134.85,132.79,134.26,710000,134.26 +1931-08-07,133.77,135.72,132.96,135.13,740000,135.13 +1931-08-06,134.10,134.93,132.55,133.77,910000,133.77 +1931-08-05,135.83,135.83,133.59,134.10,820000,134.10 +1931-08-04,137.50,137.77,134.85,136.50,720000,136.50 +1931-08-03,136.65,139.35,136.36,137.50,880000,137.50 +1931-07-31,136.93,138.12,133.70,135.39,1220000,135.39 +1931-07-30,136.19,138.05,134.33,136.93,1350000,136.93 +1931-07-29,139.26,139.26,134.99,136.19,1580000,136.19 +1931-07-28,139.65,142.12,139.65,141.53,650000,141.53 +1931-07-27,138.24,140.16,137.72,139.64,570000,139.64 +1931-07-24,142.41,142.41,138.20,139.01,1070000,139.01 +1931-07-23,142.52,143.77,140.81,142.63,790000,142.63 +1931-07-22,145.88,145.88,142.11,142.52,990000,142.52 +1931-07-21,144.48,147.69,144.21,146.70,1150000,146.70 +1931-07-20,142.75,145.00,142.75,144.48,710000,144.48 +1931-07-17,141.99,144.84,141.44,142.61,1270000,142.61 +1931-07-16,137.86,142.30,137.30,141.99,1520000,141.99 +1931-07-15,140.13,140.13,134.39,137.86,2610000,137.86 +1931-07-14,142.43,143.19,139.67,140.85,1110000,140.85 +1931-07-13,143.44,143.44,139.59,142.43,1280000,142.43 +1931-07-10,144.91,148.50,143.46,146.97,1290000,146.97 +1931-07-09,143.83,145.97,142.24,144.91,1510000,144.91 +1931-07-08,145.92,147.24,141.36,143.83,2360000,143.83 +1931-07-07,152.80,155.39,144.65,145.92,3010000,145.92 +1931-07-06,154.08,154.08,151.20,152.80,1050000,152.80 +1931-07-03,152.21,156.74,152.21,155.26,2050000,155.26 +1931-07-02,152.66,154.84,150.72,151.48,1330000,151.48 +1931-07-01,150.18,153.86,147.44,152.66,1710000,152.66 +1931-06-30,152.67,153.67,148.63,150.18,1950000,150.18 +1931-06-29,156.59,156.59,151.30,152.67,2140000,152.67 +1931-06-26,150.75,155.50,150.75,154.04,3120000,154.04 +1931-06-25,151.60,156.33,148.79,150.36,4320000,150.36 +1931-06-24,144.56,153.42,144.56,151.60,5070000,151.60 +1931-06-23,145.82,146.71,141.41,143.89,2600000,143.89 +1931-06-22,140.08,147.97,140.08,145.82,4590000,145.82 +1931-06-19,130.56,131.86,128.64,130.31,1150000,130.31 +1931-06-18,133.58,133.58,130.09,130.56,1150000,130.56 +1931-06-17,135.47,135.93,132.91,133.68,920000,133.68 +1931-06-16,135.26,136.39,132.93,135.47,1120000,135.47 +1931-06-15,137.03,138.58,134.82,135.26,1270000,135.26 +1931-06-12,136.57,138.16,133.98,136.98,1590000,136.98 +1931-06-11,136.82,138.47,134.24,136.57,1750000,136.57 +1931-06-10,132.97,137.30,132.04,136.82,1800000,136.82 +1931-06-09,135.92,138.88,132.08,132.97,1890000,132.97 +1931-06-08,129.91,136.40,127.96,135.92,1710000,135.92 +1931-06-05,134.73,138.89,131.69,133.33,2850000,133.33 +1931-06-04,130.37,136.10,128.35,134.73,3170000,134.73 +1931-06-03,121.70,130.64,120.79,130.37,3310000,130.37 +1931-06-02,122.77,126.20,119.89,121.70,3320000,121.70 +1931-06-01,128.40,128.40,121.76,122.77,3100000,122.77 +1931-05-29,131.81,134.60,127.30,128.46,2050000,128.46 +1931-05-28,130.76,134.16,128.72,131.81,2090000,131.81 +1931-05-27,133.11,134.59,127.95,130.76,2510000,130.76 +1931-05-26,132.87,136.38,130.75,133.11,2410000,133.11 +1931-05-25,137.43,137.43,132.15,132.87,1880000,132.87 +1931-05-22,139.54,141.37,136.93,139.49,1560000,139.49 +1931-05-21,137.74,141.07,135.19,139.54,2350000,139.54 +1931-05-20,138.86,142.49,136.18,137.74,2320000,137.74 +1931-05-19,139.52,141.93,136.05,138.86,2780000,138.86 +1931-05-18,142.95,143.09,138.54,139.52,2540000,139.52 +1931-05-15,146.64,147.23,141.84,144.49,2380000,144.49 +1931-05-14,149.63,150.61,146.02,146.64,1770000,146.64 +1931-05-13,150.24,152.63,147.55,149.63,1670000,149.63 +1931-05-12,151.56,152.11,148.28,150.24,1310000,150.24 +1931-05-11,151.31,153.37,148.19,151.56,1650000,151.56 +1931-05-08,148.88,155.65,147.43,154.41,2660000,154.41 +1931-05-07,149.73,152.57,146.77,148.88,1690000,148.88 +1931-05-06,148.99,150.54,145.65,149.73,1500000,149.73 +1931-05-05,150.50,153.19,147.88,148.99,1580000,148.99 +1931-05-04,147.49,151.26,146.80,150.50,1360000,150.50 +1931-05-01,151.19,153.82,144.91,145.58,2870000,145.58 +1931-04-30,143.61,152.50,142.12,151.19,3340000,151.19 +1931-04-29,147.59,147.59,141.78,143.61,3180000,143.61 +1931-04-28,149.78,151.09,144.52,147.95,2860000,147.95 +1931-04-27,151.98,152.98,146.31,149.78,3650000,149.78 +1931-04-24,157.43,159.45,153.55,155.76,2600000,155.76 +1931-04-23,156.37,159.53,153.13,157.43,3820000,157.43 +1931-04-22,158.83,160.06,155.61,156.37,2670000,156.37 +1931-04-21,163.41,164.06,157.82,158.83,1990000,158.83 +1931-04-20,162.37,164.42,159.45,163.41,1560000,163.41 +1931-04-17,162.59,164.34,158.50,160.23,2550000,160.23 +1931-04-16,164.66,165.64,161.63,162.59,2330000,162.59 +1931-04-15,167.64,167.64,163.89,164.66,2050000,164.66 +1931-04-14,171.07,173.24,167.11,168.43,1940000,168.43 +1931-04-13,168.03,171.61,167.11,171.07,1630000,171.07 +1931-04-10,168.77,171.06,166.96,168.72,1570000,168.72 +1931-04-09,169.54,171.43,167.66,168.77,1940000,168.77 +1931-04-08,167.03,171.49,166.34,169.54,2050000,169.54 +1931-04-07,169.72,170.44,166.10,167.03,2190000,167.03 +1931-04-06,172.43,174.69,169.44,169.72,1460000,169.72 +1931-04-02,170.82,173.15,168.30,169.89,2510000,169.89 +1931-04-01,172.36,173.72,169.18,170.82,2270000,170.82 +1931-03-31,172.56,176.50,171.09,172.36,2410000,172.36 +1931-03-30,174.06,175.42,170.64,172.56,3190000,172.56 +1931-03-27,181.70,182.02,176.63,177.30,2950000,177.30 +1931-03-26,184.20,185.56,180.85,181.70,2550000,181.70 +1931-03-25,186.00,187.18,183.20,184.20,2100000,184.20 +1931-03-24,184.32,186.86,181.65,186.00,1880000,186.00 +1931-03-23,185.24,186.38,182.05,184.32,1990000,184.32 +1931-03-20,186.56,189.31,185.15,187.72,2740000,187.72 +1931-03-19,184.06,188.42,184.06,186.56,3530000,186.56 +1931-03-18,180.61,184.53,179.62,183.95,2100000,183.95 +1931-03-17,183.61,185.82,179.94,180.61,2800000,180.61 +1931-03-16,180.76,184.11,180.32,183.61,2130000,183.61 +1931-03-13,180.14,180.47,175.89,178.91,2380000,178.91 +1931-03-12,181.91,182.96,178.57,180.14,2490000,180.14 +1931-03-11,183.63,185.01,180.51,181.91,2290000,181.91 +1931-03-10,185.38,188.10,182.49,183.63,3240000,183.63 +1931-03-09,183.85,186.51,181.80,185.38,2850000,185.38 +1931-03-06,184.69,186.62,178.49,179.73,3860000,179.73 +1931-03-05,180.96,185.18,179.41,184.69,2730000,184.69 +1931-03-04,183.76,184.65,179.39,180.96,3090000,180.96 +1931-03-03,184.38,186.56,182.00,183.76,2940000,183.76 +1931-03-02,189.66,191.93,183.53,184.38,3320000,184.38 +1931-02-27,192.23,194.53,188.92,190.34,3730000,190.34 +1931-02-26,190.72,195.95,189.81,192.23,4620000,192.23 +1931-02-25,194.36,195.17,188.75,190.72,4390000,190.72 +1931-02-24,191.32,196.96,190.19,194.36,5350000,194.36 +1931-02-20,184.86,189.55,184.86,188.22,3830000,188.22 +1931-02-19,181.51,185.35,181.51,184.46,2480000,184.46 +1931-02-18,179.55,184.69,179.22,181.10,2840000,181.10 +1931-02-17,182.88,186.29,178.70,179.55,3990000,179.55 +1931-02-16,180.68,184.77,180.68,182.88,3170000,182.88 +1931-02-13,181.88,184.50,179.14,180.99,2750000,180.99 +1931-02-11,181.20,185.89,179.14,181.88,4700000,181.88 +1931-02-10,177.72,184.12,176.83,181.20,4760000,181.20 +1931-02-09,173.24,178.58,173.24,177.72,4130000,177.72 +1931-02-06,169.38,171.84,168.55,169.88,1660000,169.88 +1931-02-05,171.13,171.31,167.16,169.38,1490000,169.38 +1931-02-04,169.71,172.13,168.89,171.13,1520000,171.13 +1931-02-03,168.71,170.77,167.59,169.71,1190000,169.71 +1931-02-02,167.55,169.32,165.60,168.71,1160000,168.71 +1931-01-30,168.87,172.42,168.15,169.34,2210000,169.34 +1931-01-29,166.84,169.82,164.81,168.87,1650000,168.87 +1931-01-28,170.44,170.44,165.69,166.84,1620000,166.84 +1931-01-27,171.19,172.33,168.91,170.82,1600000,170.82 +1931-01-26,169.80,172.12,168.03,171.19,1540000,171.19 +1931-01-23,168.87,172.97,168.87,171.84,2870000,171.84 +1931-01-22,164.76,168.78,164.25,168.46,1860000,168.46 +1931-01-21,165.82,167.18,163.29,164.76,1410000,164.76 +1931-01-20,162.06,166.42,162.06,165.82,1330000,165.82 +1931-01-19,162.89,163.18,160.09,161.45,1120000,161.45 +1931-01-16,162.82,165.55,161.52,164.94,1320000,164.94 +1931-01-15,167.46,167.72,161.95,162.82,1930000,162.82 +1931-01-14,165.95,168.20,164.90,167.46,1280000,167.46 +1931-01-13,167.99,168.42,164.76,165.95,1710000,165.95 +1931-01-12,171.71,172.12,167.23,167.99,1500000,167.99 +1931-01-09,173.04,175.66,169.68,170.18,2800000,170.18 +1931-01-08,171.86,173.62,170.02,173.04,1710000,173.04 +1931-01-07,172.66,175.32,171.07,171.86,2140000,171.86 +1931-01-06,170.71,173.48,168.43,172.66,1910000,172.66 +1931-01-05,172.12,173.30,167.77,170.71,2090000,170.71 +1931-01-02,164.58,170.09,161.46,169.84,2030000,169.84 +1930-12-31,163.09,167.99,162.48,164.58,1940000,164.58 +1930-12-30,160.16,165.34,159.68,163.09,3430000,163.09 +1930-12-29,160.30,162.60,158.41,160.16,2790000,160.16 +1930-12-26,165.20,166.96,160.63,161.18,1800000,161.18 +1930-12-24,163.57,168.00,163.57,165.20,1580000,165.20 +1930-12-23,162.42,165.93,160.22,162.93,2450000,162.93 +1930-12-22,169.42,170.02,162.15,162.42,2100000,162.42 +1930-12-19,166.71,170.43,164.96,168.99,2270000,168.99 +1930-12-18,165.60,171.64,164.99,166.71,3290000,166.71 +1930-12-17,157.51,166.83,154.45,165.60,5010000,165.60 +1930-12-16,163.34,166.04,156.44,157.51,4160000,157.51 +1930-12-15,163.34,166.13,160.66,163.34,3440000,163.34 +1930-12-12,170.31,173.08,167.99,168.68,2030000,168.68 +1930-12-11,173.02,173.02,166.97,170.31,2890000,170.31 +1930-12-10,176.50,178.10,170.21,173.98,3150000,173.98 +1930-12-09,176.09,178.21,173.88,176.50,2120000,176.50 +1930-12-08,177.98,177.98,174.27,176.09,1980000,176.09 +1930-12-05,180.99,181.70,177.26,181.11,1590000,181.11 +1930-12-04,184.06,184.06,179.75,180.99,1590000,180.99 +1930-12-03,186.82,187.07,183.30,184.11,1220000,184.11 +1930-12-02,185.48,187.96,183.36,186.82,1580000,186.82 +1930-12-01,183.39,186.33,182.32,185.48,1100000,185.48 +1930-11-28,183.06,183.06,178.88,180.91,1740000,180.91 +1930-11-26,185.47,186.98,181.93,183.11,1950000,183.11 +1930-11-25,188.27,191.28,185.17,185.47,2150000,185.47 +1930-11-24,188.04,189.08,184.32,188.27,1630000,188.27 +1930-11-21,187.09,191.28,185.32,190.30,2250000,190.30 +1930-11-20,187.57,191.04,185.76,187.09,2630000,187.09 +1930-11-19,183.42,188.61,182.21,187.57,2480000,187.57 +1930-11-18,180.50,184.16,177.63,183.42,2020000,183.42 +1930-11-17,185.13,185.13,178.86,180.50,2140000,180.50 +1930-11-14,180.38,184.64,177.69,184.03,2640000,184.03 +1930-11-13,177.33,183.08,174.96,180.38,3450000,180.38 +1930-11-12,173.30,177.50,168.58,177.33,3420000,177.33 +1930-11-11,171.60,176.93,169.38,173.30,3330000,173.30 +1930-11-10,173.14,177.07,168.32,171.60,4420000,171.60 +1930-11-07,180.72,181.00,172.85,174.38,2370000,174.38 +1930-11-06,179.81,182.40,177.80,180.72,2450000,180.72 +1930-11-05,185.39,185.47,178.78,179.81,2150000,179.81 +1930-11-03,184.89,187.23,183.12,185.39,1260000,185.39 +1930-10-31,188.00,188.00,181.64,183.35,2250000,183.35 +1930-10-30,190.55,190.55,185.99,188.07,1910000,188.07 +1930-10-29,194.35,194.35,189.33,190.73,1670000,190.73 +1930-10-28,195.09,198.59,193.28,194.95,2020000,194.95 +1930-10-27,193.34,195.73,189.17,195.09,1810000,195.09 +1930-10-24,189.07,195.79,189.07,195.09,2760000,195.09 +1930-10-23,184.98,190.95,184.75,188.10,2670000,188.10 +1930-10-22,186.40,188.34,181.53,184.98,2740000,184.98 +1930-10-21,193.32,193.95,184.22,186.40,2430000,186.40 +1930-10-20,187.07,194.44,187.07,193.32,2140000,193.32 +1930-10-17,195.30,195.30,186.74,187.37,2660000,187.37 +1930-10-16,200.13,200.13,194.78,196.62,1860000,196.62 +1930-10-15,196.70,201.64,193.40,200.26,2380000,200.26 +1930-10-14,193.05,198.01,186.99,196.70,3390000,196.70 +1930-10-10,192.00,198.86,186.70,198.50,6300000,198.50 +1930-10-09,199.96,199.96,190.17,192.00,5050000,192.00 +1930-10-08,203.62,205.21,198.61,200.56,2070000,200.56 +1930-10-07,202.76,207.04,198.51,203.62,3570000,203.62 +1930-10-06,209.01,209.01,201.90,202.76,2370000,202.76 +1930-10-03,211.13,216.89,211.13,214.18,2050000,214.18 +1930-10-02,214.14,214.76,206.25,211.04,2320000,211.04 +1930-10-01,205.92,215.32,205.92,214.14,3160000,214.14 +1930-09-30,208.14,209.95,201.95,204.90,4500000,204.90 +1930-09-29,212.52,216.96,207.30,208.14,3760000,208.14 +1930-09-26,217.75,220.21,211.31,213.27,3710000,213.27 +1930-09-25,222.10,223.89,215.31,217.75,3070000,217.75 +1930-09-24,226.75,228.87,218.08,222.10,3440000,222.10 +1930-09-23,222.78,227.30,221.82,226.75,1920000,226.75 +1930-09-22,229.29,229.29,222.00,222.78,2330000,222.78 +1930-09-19,233.52,233.52,226.39,229.02,2950000,229.02 +1930-09-18,237.45,237.45,233.47,234.18,1380000,234.18 +1930-09-17,237.22,239.31,236.51,237.74,1190000,237.74 +1930-09-16,236.62,237.75,232.85,237.22,1770000,237.22 +1930-09-15,239.96,239.96,234.95,236.62,1560000,236.62 +1930-09-12,242.88,244.42,239.49,241.17,1910000,241.17 +1930-09-11,245.09,245.23,241.67,242.88,1740000,242.88 +1930-09-10,244.29,247.21,243.30,245.09,2480000,245.09 +1930-09-09,242.84,245.48,241.55,244.29,1940000,244.29 +1930-09-08,243.64,246.08,241.78,242.84,2240000,242.84 +1930-09-05,236.09,240.93,236.09,240.37,1650000,240.37 +1930-09-04,237.45,239.65,234.35,236.04,1520000,236.04 +1930-09-03,240.42,242.40,236.71,237.45,1750000,237.45 +1930-09-02,240.42,242.77,238.51,240.42,1770000,240.42 +1930-08-29,237.79,241.35,236.75,240.42,1860000,240.42 +1930-08-28,237.93,239.33,235.19,237.79,1440000,237.79 +1930-08-27,235.47,239.54,235.38,237.93,2200000,237.93 +1930-08-26,231.52,236.30,230.73,235.47,1750000,235.47 +1930-08-25,234.42,236.46,230.68,231.52,1600000,231.52 +1930-08-22,231.27,234.04,229.64,232.63,1340000,232.63 +1930-08-21,232.98,234.91,229.21,231.27,1710000,231.27 +1930-08-20,230.68,235.26,229.84,232.98,1820000,232.98 +1930-08-19,227.79,233.46,227.43,230.68,1860000,230.68 +1930-08-18,228.02,229.08,224.42,227.79,1410000,227.79 +1930-08-15,221.08,229.44,219.82,228.55,2110000,228.55 +1930-08-14,220.35,224.38,219.24,221.08,1530000,221.08 +1930-08-13,217.24,221.35,214.49,220.35,2290000,220.35 +1930-08-12,223.74,223.74,216.48,217.24,2090000,217.24 +1930-08-11,222.59,226.05,220.09,224.13,1750000,224.13 +1930-08-08,231.73,231.73,222.24,222.82,3310000,222.82 +1930-08-07,234.38,234.39,230.50,232.69,1450000,232.69 +1930-08-06,237.99,237.99,233.67,234.38,1320000,234.38 +1930-08-05,238.16,240.95,237.22,238.47,1220000,238.47 +1930-08-04,234.50,238.57,233.26,238.16,1200000,238.16 +1930-08-01,233.99,235.78,231.86,233.57,1090000,233.57 +1930-07-31,231.08,235.19,229.09,233.99,2160000,233.99 +1930-07-30,238.40,239.93,230.53,231.08,2510000,231.08 +1930-07-29,240.81,241.53,237.00,238.40,1860000,238.40 +1930-07-28,240.31,243.65,239.04,240.81,2430000,240.81 +1930-07-25,235.51,238.58,233.77,237.48,1360000,237.48 +1930-07-24,239.33,239.51,234.65,235.51,1480000,235.51 +1930-07-23,234.94,241.76,234.94,239.33,2530000,239.33 +1930-07-22,229.29,235.29,228.81,234.30,2080000,234.30 +1930-07-21,236.58,236.58,228.72,229.29,1950000,229.29 +1930-07-18,239.07,242.01,236.47,240.57,2750000,240.57 +1930-07-17,235.63,240.27,234.03,239.07,2500000,239.07 +1930-07-16,233.79,236.47,230.59,235.63,2590000,235.63 +1930-07-15,234.21,237.19,231.73,233.79,3090000,233.79 +1930-07-14,229.23,234.54,229.02,234.21,2740000,234.21 +1930-07-11,227.39,228.65,223.97,224.86,1530000,224.86 +1930-07-10,222.04,228.35,219.18,227.39,2170000,227.39 +1930-07-09,219.11,223.52,219.11,222.04,1360000,222.04 +1930-07-08,218.33,220.22,214.64,219.08,1560000,219.08 +1930-07-07,221.31,221.31,216.33,218.33,1480000,218.33 +1930-07-03,225.25,226.26,219.94,222.46,1380000,222.46 +1930-07-02,223.03,227.24,222.14,225.25,1230000,225.25 +1930-07-01,226.34,229.53,221.92,223.03,2280000,223.03 +1930-06-30,219.12,226.85,219.06,226.34,1840000,226.34 +1930-06-27,220.58,222.84,213.97,218.78,2080000,218.78 +1930-06-26,215.58,222.11,214.25,220.58,2270000,220.58 +1930-06-25,211.84,216.80,207.74,215.58,3400000,215.58 +1930-06-24,219.58,222.89,211.07,211.84,2870000,211.84 +1930-06-23,215.30,221.26,209.16,219.58,3840000,219.58 +1930-06-20,228.97,232.69,219.70,221.92,5660000,221.92 +1930-06-19,219.83,229.83,219.83,228.97,3760000,228.97 +1930-06-18,226.29,226.29,212.27,218.84,6430000,218.84 +1930-06-17,230.05,234.94,224.37,228.57,5020000,228.57 +1930-06-16,242.18,242.18,228.94,230.05,5660000,230.05 +1930-06-13,247.18,251.63,243.27,249.69,2230000,249.69 +1930-06-12,249.08,250.90,241.00,247.18,3900000,247.18 +1930-06-11,257.24,257.24,243.90,249.08,4480000,249.08 +1930-06-10,250.78,257.72,247.62,257.29,4770000,257.29 +1930-06-09,257.82,259.60,249.51,250.78,4650000,250.78 +1930-06-06,268.59,268.69,263.29,263.93,2160000,263.93 +1930-06-05,272.44,272.65,266.90,268.59,2390000,268.59 +1930-06-04,271.18,274.03,269.54,272.44,1690000,272.44 +1930-06-03,274.45,274.69,270.01,271.18,1750000,271.18 +1930-06-02,275.07,276.86,273.03,274.45,1710000,274.45 +1930-05-29,273.84,276.66,273.05,275.07,2200000,275.07 +1930-05-28,272.43,275.17,270.64,273.84,2410000,273.84 +1930-05-27,272.14,274.72,270.54,272.43,2260000,272.43 +1930-05-26,271.33,276.18,270.64,272.14,2250000,272.14 +1930-05-23,267.01,272.14,267.01,270.01,2160000,270.01 +1930-05-22,265.52,268.65,262.53,266.89,1860000,266.89 +1930-05-21,267.10,268.94,262.67,265.52,2080000,265.52 +1930-05-20,265.87,268.40,260.76,267.10,3530000,267.10 +1930-05-19,272.36,272.36,264.63,265.87,2410000,265.87 +1930-05-16,269.91,272.96,268.54,271.52,2090000,271.52 +1930-05-15,274.35,274.35,268.45,269.91,2680000,269.91 +1930-05-14,274.17,277.22,272.22,274.40,3180000,274.40 +1930-05-13,270.16,276.09,269.51,274.17,2700000,274.17 +1930-05-12,272.01,275.11,268.56,270.16,3030000,270.16 +1930-05-09,263.93,269.08,261.64,267.29,3010000,267.29 +1930-05-08,263.69,266.11,257.74,263.93,3760000,263.93 +1930-05-07,268.81,272.15,262.20,263.69,4300000,263.69 +1930-05-06,259.68,270.34,259.04,268.81,4760000,268.81 +1930-05-05,258.31,262.84,249.82,259.68,8280000,259.68 +1930-05-02,274.59,276.81,264.93,266.56,5990000,266.56 +1930-05-01,279.23,281.95,273.00,274.59,4640000,274.59 +1930-04-30,278.43,283.51,275.97,279.23,4550000,279.23 +1930-04-29,276.94,280.71,272.24,278.43,5410000,278.43 +1930-04-28,285.46,286.12,275.71,276.94,4850000,276.94 +1930-04-25,286.18,289.28,283.68,285.76,4730000,285.76 +1930-04-24,288.78,290.58,283.74,286.18,5230000,286.18 +1930-04-23,290.01,293.27,286.25,288.78,5570000,288.78 +1930-04-22,288.23,291.39,284.28,290.01,4590000,290.01 +1930-04-21,294.07,295.88,287.24,288.23,4490000,288.23 +1930-04-17,292.20,296.05,290.38,294.07,3940000,294.07 +1930-04-16,293.26,297.25,290.27,292.20,4400000,292.20 +1930-04-15,293.18,295.69,289.34,293.26,4220000,293.26 +1930-04-14,293.43,295.81,289.72,293.18,4150000,293.18 +1930-04-11,292.19,296.35,288.42,292.65,5630000,292.65 +1930-04-10,291.15,295.98,289.18,292.19,5680000,292.19 +1930-04-09,288.36,293.36,287.37,291.15,5190000,291.15 +1930-04-08,290.19,291.89,285.96,288.36,4690000,288.36 +1930-04-07,289.96,293.43,287.03,290.19,5490000,290.19 +1930-04-04,285.77,291.44,284.92,288.35,5930000,288.35 +1930-04-03,285.27,288.17,282.29,285.77,4630000,285.77 +1930-04-02,287.11,290.15,283.59,285.27,5300000,285.27 +1930-04-01,286.10,290.15,283.64,287.11,5400000,287.11 +1930-03-31,283.85,289.13,282.85,286.10,5160000,286.10 +1930-03-28,281.63,287.06,280.83,283.85,5070000,283.85 +1930-03-27,283.22,286.10,279.98,281.63,4710000,281.63 +1930-03-26,280.50,285.38,279.31,283.22,5030000,283.22 +1930-03-25,279.11,284.01,278.21,280.50,4530000,280.50 +1930-03-24,276.43,280.92,275.03,279.11,4130000,279.11 +1930-03-21,279.41,284.08,276.78,280.55,4630000,280.55 +1930-03-20,277.88,282.23,275.25,279.41,3260000,279.41 +1930-03-19,277.27,281.05,274.91,277.88,4340000,277.88 +1930-03-18,274.26,279.79,273.90,277.27,4250000,277.27 +1930-03-17,270.25,274.84,268.94,274.26,3640000,274.26 +1930-03-14,273.47,275.82,270.38,271.34,3950000,271.34 +1930-03-13,272.13,274.77,269.60,273.47,3850000,273.47 +1930-03-12,276.25,277.06,270.01,272.13,4470000,272.13 +1930-03-11,276.85,278.76,274.25,276.25,2640000,276.25 +1930-03-10,275.46,279.40,273.71,276.85,3990000,276.85 +1930-03-07,274.51,278.48,272.84,275.57,3640000,275.57 +1930-03-06,270.59,276.05,269.01,274.51,3360000,274.51 +1930-03-05,273.51,276.10,269.03,270.59,3720000,270.59 +1930-03-04,271.11,275.19,269.16,273.51,3460000,273.51 +1930-03-03,273.24,274.47,269.59,271.11,3630000,271.11 +1930-02-28,269.39,272.55,267.41,271.11,3210000,271.11 +1930-02-27,269.06,272.13,267.43,269.39,3310000,269.39 +1930-02-26,262.94,269.92,262.94,269.06,3020000,269.06 +1930-02-25,262.47,264.64,259.78,262.80,2630000,262.80 +1930-02-24,265.81,266.33,261.40,262.47,2320000,262.47 +1930-02-21,263.41,266.68,262.01,265.81,2570000,265.81 +1930-02-20,268.46,269.72,262.43,263.41,3660000,263.41 +1930-02-19,270.73,273.35,267.09,268.46,3490000,268.46 +1930-02-18,270.54,274.41,268.98,270.73,3800000,270.73 +1930-02-17,269.25,271.62,265.29,270.54,3290000,270.54 +1930-02-14,272.27,274.20,268.60,271.52,3510000,271.52 +1930-02-13,271.05,275.00,268.97,272.27,3670000,272.27 +1930-02-11,268.56,272.67,267.00,271.05,3320000,271.05 +1930-02-10,269.78,271.78,266.37,268.56,3170000,268.56 +1930-02-07,268.56,271.62,265.36,267.82,3390000,267.82 +1930-02-06,272.06,273.59,266.96,268.56,3710000,268.56 +1930-02-05,268.85,274.01,268.85,272.06,4360000,272.06 +1930-02-04,266.54,270.00,264.41,268.48,3230000,268.48 +1930-02-03,268.41,271.54,264.84,266.54,3800000,266.54 +1930-01-31,263.28,268.71,262.81,267.14,3740000,267.14 +1930-01-30,262.18,266.30,260.48,263.28,3640000,263.28 +1930-01-29,257.90,263.73,257.38,262.18,3250000,262.18 +1930-01-28,260.93,261.89,256.70,257.90,2910000,257.90 +1930-01-27,259.06,262.57,257.24,260.93,3460000,260.93 +1930-01-24,253.52,258.98,252.98,256.31,3480000,256.31 +1930-01-23,250.19,254.39,249.62,253.52,3230000,253.52 +1930-01-22,249.58,251.85,248.60,250.19,2310000,250.19 +1930-01-21,247.31,250.62,246.25,249.58,2230000,249.58 +1930-01-20,246.84,248.92,244.86,247.31,1700000,247.31 +1930-01-17,248.99,249.88,244.50,246.33,2680000,246.33 +1930-01-16,251.54,253.49,248.16,248.99,3040000,248.99 +1930-01-15,250.44,252.57,247.76,251.54,2630000,251.54 +1930-01-14,249.62,252.39,248.98,250.44,1880000,250.44 +1930-01-13,248.71,250.83,246.82,249.62,1460000,249.62 +1930-01-10,249.68,252.91,248.80,250.03,2400000,250.03 +1930-01-09,245.70,250.52,245.67,249.68,2400000,249.68 +1930-01-08,246.50,248.04,243.80,245.70,1640000,245.70 +1930-01-07,248.10,249.40,243.80,246.50,2030000,246.50 +1930-01-06,248.85,250.37,245.49,248.10,2170000,248.10 +1930-01-03,244.20,248.71,243.00,247.19,2070000,247.19 +1930-01-02,248.48,252.29,241.78,244.20,2930000,244.20 +1929-12-31,241.90,249.24,241.90,248.48,2680000,248.48 +1929-12-30,238.43,242.95,235.95,241.06,4160000,241.06 +1929-12-27,240.96,246.35,239.13,240.66,3350000,240.66 +1929-12-26,234.07,242.62,233.89,240.96,2580000,240.96 +1929-12-24,232.65,237.94,231.96,234.07,1000000,234.07 +1929-12-23,235.42,236.37,226.39,232.65,3490000,232.65 +1929-12-20,240.42,241.92,227.20,230.89,5550000,230.89 +1929-12-19,246.84,247.14,238.80,240.42,3410000,240.42 +1929-12-18,249.58,250.51,245.03,246.84,2290000,246.84 +1929-12-17,245.88,250.23,243.63,249.58,2440000,249.58 +1929-12-16,253.02,253.17,244.34,245.88,2590000,245.88 +1929-12-13,243.14,251.79,239.58,249.60,4390000,249.60 +1929-12-12,258.44,258.56,241.40,243.14,4510000,243.14 +1929-12-11,262.20,264.23,256.45,258.44,3900000,258.44 +1929-12-10,259.18,263.98,255.52,262.20,3650000,262.20 +1929-12-09,263.46,267.56,257.41,259.18,5020000,259.18 +1929-12-06,251.51,261.52,250.27,260.12,4720000,260.12 +1929-12-05,254.64,256.45,249.55,251.51,4380000,251.51 +1929-12-04,249.61,256.63,248.05,254.64,4440000,254.64 +1929-12-03,241.70,251.13,241.38,249.61,3810000,249.61 +1929-12-02,238.95,243.39,236.13,241.70,2510000,241.70 +1929-11-27,235.35,240.66,233.59,238.95,2430000,238.95 +1929-11-26,243.44,243.97,234.51,235.35,3630000,235.35 +1929-11-25,245.74,246.06,237.41,243.44,3020000,243.44 +1929-11-22,248.49,250.75,243.36,245.74,2930000,245.74 +1929-11-21,241.23,249.57,238.61,248.49,3140000,248.49 +1929-11-20,235.18,243.48,235.18,241.23,2830000,241.23 +1929-11-19,227.56,234.56,222.93,234.02,2720000,234.02 +1929-11-18,228.73,233.36,224.71,227.56,2750000,227.56 +1929-11-15,222.50,232.77,222.50,228.73,4340000,228.73 +1929-11-14,205.61,219.49,205.61,217.28,5570000,217.28 +1929-11-13,209.74,211.92,195.35,198.69,7760000,198.69 +1929-11-12,220.39,222.56,208.09,209.74,6450000,209.74 +1929-11-11,235.13,235.13,219.34,220.39,3640000,220.39 +1929-11-08,238.19,245.28,234.63,236.53,3220000,236.53 +1929-11-07,232.13,242.10,217.84,238.19,7180000,238.19 +1929-11-06,252.20,252.20,228.35,232.13,5920000,232.13 +1929-11-04,269.75,269.75,255.43,257.68,6200000,257.68 +1929-10-31,264.97,281.54,264.97,273.51,7150000,273.51 +1929-10-30,230.98,260.93,230.98,258.47,10730000,258.47 +1929-10-29,252.38,252.38,212.33,230.07,16410000,230.07 +1929-10-28,295.18,295.18,256.75,260.64,9210000,260.64 +1929-10-25,299.47,306.02,295.59,301.22,5920000,301.22 +1929-10-24,305.85,312.76,272.32,299.47,12900000,299.47 +1929-10-23,326.51,329.94,303.84,305.85,6370000,305.85 +1929-10-22,322.03,333.01,322.03,326.51,4130000,326.51 +1929-10-21,323.87,328.28,314.55,320.91,6090000,320.91 +1929-10-18,341.86,343.12,332.16,333.29,3510000,333.29 +1929-10-17,336.13,343.24,332.11,341.86,3860000,341.86 +1929-10-16,346.99,346.99,335.12,336.13,4090000,336.13 +1929-10-15,350.97,354.09,345.58,347.24,3110000,347.24 +1929-10-14,352.69,358.20,348.94,350.97,2760000,350.97 +1929-10-11,352.86,358.77,349.64,352.69,3960000,352.69 +1929-10-10,346.66,355.63,345.63,352.86,4000000,352.86 +1929-10-09,345.00,349.03,338.86,346.66,3160000,346.66 +1929-10-08,345.72,349.67,340.86,345.00,3760000,345.00 +1929-10-07,341.36,348.54,338.86,345.72,4260000,345.72 +1929-10-04,329.95,333.28,320.45,325.17,5620000,325.17 +1929-10-03,344.50,345.30,327.71,329.95,4750000,329.95 +1929-10-02,342.57,350.19,339.45,344.50,3370000,344.50 +1929-10-01,343.45,345.67,335.99,342.57,4530000,342.57 +1929-09-30,347.17,349.37,341.06,343.45,3210000,343.45 +1929-09-27,354.63,354.63,343.26,344.87,4590000,344.87 +1929-09-26,352.57,358.16,349.73,355.95,4000000,355.95 +1929-09-25,352.61,355.42,344.85,352.57,4960000,352.57 +1929-09-24,359.00,363.67,350.84,352.61,4410000,352.61 +1929-09-23,361.16,365.03,355.63,359.00,4390000,359.00 +1929-09-20,369.97,371.10,360.44,362.05,4880000,362.05 +1929-09-19,370.90,375.20,367.70,369.97,4130000,369.97 +1929-09-18,368.52,374.03,365.65,370.90,4040000,370.90 +1929-09-17,372.39,374.96,366.89,368.52,4290000,368.52 +1929-09-16,367.01,373.63,364.80,372.39,4180000,372.39 +1929-09-13,366.35,369.67,359.70,366.85,5070000,366.85 +1929-09-12,370.91,375.52,363.11,366.35,5020000,366.35 +1929-09-11,367.29,375.05,366.22,370.91,4790000,370.91 +1929-09-10,374.93,379.16,364.46,367.29,4520000,367.29 +1929-09-09,377.56,380.57,373.49,374.93,4860000,374.93 +1929-09-06,369.77,378.71,369.46,376.29,5120000,376.29 +1929-09-05,379.61,382.01,367.35,369.77,5560000,369.77 +1929-09-04,380.12,380.12,376.33,379.61,4690000,379.61 +1929-09-03,380.33,386.10,378.23,381.17,4440000,381.17 +1929-08-30,376.18,383.96,376.16,380.33,4570000,380.33 +1929-08-29,372.06,378.76,370.79,376.18,3480000,376.18 +1929-08-28,373.79,377.56,370.34,372.06,3960000,372.06 +1929-08-27,374.46,378.16,371.76,373.79,3900000,373.79 +1929-08-26,375.44,380.18,372.09,374.46,4430000,374.46 +1929-08-23,369.96,378.66,369.96,374.61,4800000,374.61 +1929-08-22,365.55,373.45,365.39,369.95,3440000,369.95 +1929-08-21,367.67,374.67,363.41,365.55,4720000,365.55 +1929-08-20,366.31,372.59,366.31,367.67,4640000,367.67 +1929-08-19,360.70,367.78,355.68,365.20,3980000,365.20 +1929-08-16,356.84,364.39,356.84,361.49,4800000,361.49 +1929-08-15,354.86,358.65,351.68,354.42,3410000,354.42 +1929-08-14,354.03,361.55,352.05,354.86,4200000,354.86 +1929-08-13,351.13,357.88,348.24,354.03,4100000,354.03 +1929-08-12,345.71,354.36,345.71,351.13,3610000,351.13 +1929-08-09,344.89,344.89,336.13,337.99,5020000,337.99 +1929-08-08,348.44,354.17,347.79,352.10,2830000,352.10 +1929-08-07,351.39,353.27,344.67,348.44,3160000,348.44 +1929-08-06,352.50,354.52,346.98,351.39,3800000,351.39 +1929-08-05,355.62,358.66,350.68,352.50,3860000,352.50 +1929-08-02,350.56,358.31,349.77,353.08,4030000,353.08 +1929-08-01,347.70,353.30,346.39,350.56,3320000,350.56 +1929-07-31,343.12,349.79,342.65,347.70,3410000,347.70 +1929-07-30,339.21,346.04,339.10,343.12,2690000,343.12 +1929-07-29,343.73,344.93,336.36,339.21,2760000,339.21 +1929-07-26,344.67,349.45,341.95,345.47,3550000,345.47 +1929-07-25,343.04,348.15,340.09,344.67,3480000,344.67 +1929-07-24,345.48,349.30,341.95,343.04,3780000,343.04 +1929-07-23,341.37,347.85,339.65,345.48,3780000,345.48 +1929-07-22,345.87,347.85,339.32,341.37,3680000,341.37 +1929-07-19,344.59,349.19,343.15,345.20,4200000,345.20 +1929-07-18,345.63,347.69,343.40,344.59,3730000,344.59 +1929-07-17,344.24,349.79,341.41,345.63,4360000,345.63 +1929-07-16,341.93,347.98,339.98,344.24,4500000,344.24 +1929-07-15,345.94,347.04,340.05,341.93,4290000,341.93 +1929-07-12,343.34,350.26,343.34,346.37,4760000,346.37 +1929-07-11,343.30,347.12,340.12,343.04,4210000,343.04 +1929-07-10,345.57,347.64,340.19,343.30,4210000,343.30 +1929-07-09,346.55,349.29,342.00,345.57,4250000,345.57 +1929-07-08,344.66,350.09,342.45,346.55,3520000,346.55 +1929-07-05,341.99,348.67,340.84,344.27,3750000,344.27 +1929-07-03,340.28,345.84,337.50,341.99,4690000,341.99 +1929-07-02,335.22,343.07,333.48,340.28,4590000,340.28 +1929-07-01,333.79,339.09,332.23,335.22,4090000,335.22 +1929-06-28,328.91,335.25,328.15,331.65,3950000,331.65 +1929-06-27,328.60,333.66,325.68,328.91,3910000,328.91 +1929-06-26,326.16,332.75,325.13,328.60,4030000,328.60 +1929-06-25,321.15,327.95,319.27,326.16,2930000,326.16 +1929-06-24,322.23,325.73,319.91,321.15,3030000,321.15 +1929-06-21,317.73,323.46,316.32,320.68,3190000,320.68 +1929-06-20,316.41,320.43,314.32,317.73,2760000,317.73 +1929-06-19,319.67,321.26,314.62,316.41,3060000,316.41 +1929-06-18,319.33,323.30,317.64,319.67,3340000,319.67 +1929-06-17,314.26,322.43,313.58,319.33,3210000,319.33 +1929-06-14,313.05,317.39,311.76,313.68,3240000,313.68 +1929-06-13,306.80,314.21,306.80,313.05,3160000,313.05 +1929-06-12,306.64,309.29,304.25,306.68,2130000,306.68 +1929-06-11,303.27,307.60,301.22,306.64,2140000,306.64 +1929-06-10,305.12,307.60,301.86,303.27,2200000,303.27 +1929-06-07,307.72,312.00,304.75,307.46,3080000,307.46 +1929-06-06,307.68,310.50,305.33,307.72,2930000,307.72 +1929-06-05,310.57,311.97,305.42,307.68,3340000,307.68 +1929-06-04,304.33,311.44,304.33,310.57,3410000,310.57 +1929-06-03,299.12,307.07,298.53,304.20,3020000,304.20 +1929-05-31,296.76,300.27,290.02,297.41,3300000,297.41 +1929-05-29,298.87,302.32,295.18,296.76,2980000,296.76 +1929-05-28,293.42,300.08,291.80,298.87,3940000,298.87 +1929-05-27,304.19,304.19,291.82,293.42,4350000,293.42 +1929-05-24,308.09,313.30,304.32,305.64,3270000,305.64 +1929-05-23,300.83,309.51,300.42,308.09,3810000,308.09 +1929-05-22,311.89,311.89,300.54,300.83,4840000,300.83 +1929-05-21,312.70,316.41,308.32,314.09,4410000,314.09 +1929-05-20,321.48,322.65,312.18,312.70,3810000,312.70 +1929-05-17,320.09,325.64,318.81,321.38,3330000,321.38 +1929-05-16,319.35,321.89,314.51,320.09,3440000,320.09 +1929-05-15,320.79,324.38,317.93,319.35,3350000,319.35 +1929-05-14,316.49,322.33,315.17,320.79,3630000,320.79 +1929-05-13,324.49,324.49,313.56,316.49,4630000,316.49 +1929-05-10,321.49,328.00,321.49,325.70,3920000,325.70 +1929-05-09,323.51,324.87,317.09,321.17,3660000,321.17 +1929-05-08,321.91,325.90,318.87,323.51,3470000,323.51 +1929-05-07,326.16,327.55,320.60,321.91,3490000,321.91 +1929-05-06,327.08,331.01,323.01,326.16,3810000,326.16 +1929-05-03,322.33,329.11,322.33,325.56,4530000,325.56 +1929-05-02,320.13,324.60,317.73,321.52,4180000,321.52 +1929-05-01,319.29,323.99,317.90,320.13,4690000,320.13 +1929-04-30,314.02,321.09,314.02,319.29,4320000,319.29 +1929-04-29,315.55,315.55,309.62,313.84,3270000,313.84 +1929-04-26,314.28,319.31,311.00,314.15,4010000,314.15 +1929-04-25,315.66,317.23,312.37,314.28,3340000,314.28 +1929-04-24,316.62,320.00,313.56,315.66,4070000,315.66 +1929-04-23,315.33,320.10,314.20,316.62,4130000,316.62 +1929-04-22,311.98,318.26,311.98,315.33,3570000,315.33 +1929-04-19,311.87,313.81,308.67,310.58,3060000,310.58 +1929-04-18,309.91,315.22,309.63,311.87,3770000,311.87 +1929-04-17,304.19,311.19,304.16,309.91,3500000,309.91 +1929-04-16,302.43,305.51,299.30,304.19,2370000,304.19 +1929-04-15,304.41,305.55,301.54,302.43,2640000,302.43 +1929-04-12,304.09,309.79,303.61,305.43,3410000,305.43 +1929-04-11,300.67,307.90,299.40,304.09,3100000,304.09 +1929-04-10,299.13,304.60,295.71,300.67,3280000,300.67 +1929-04-09,301.49,306.29,297.17,299.13,3630000,299.13 +1929-04-08,302.81,305.70,299.52,301.49,2720000,301.49 +1929-04-05,305.37,307.97,301.39,303.04,3410000,303.04 +1929-04-04,300.35,306.99,295.79,305.37,3330000,305.37 +1929-04-03,303.49,307.70,298.58,300.35,3700000,300.35 +1929-04-02,300.40,305.20,298.07,303.49,3780000,303.49 +1929-04-01,304.21,304.21,294.11,300.40,4160000,300.40 +1929-03-28,303.22,311.13,302.93,308.85,5100000,308.85 +1929-03-27,296.51,305.87,293.70,303.22,5620000,303.22 +1929-03-26,297.50,300.60,281.51,296.51,8250000,296.51 +1929-03-25,306.21,311.55,294.34,297.50,5860000,297.50 +1929-03-22,314.63,316.94,307.50,310.26,4830000,310.26 +1929-03-21,316.44,319.31,313.12,314.63,4460000,314.63 +1929-03-20,317.53,320.06,313.27,316.44,5190000,316.44 +1929-03-19,317.59,321.28,315.23,317.53,4450000,317.53 +1929-03-18,320.00,321.70,315.49,317.59,5020000,317.59 +1929-03-15,316.26,322.75,315.92,319.70,5890000,319.70 +1929-03-14,311.02,317.98,311.02,316.26,4630000,316.26 +1929-03-13,306.79,312.30,306.79,310.29,3330000,310.29 +1929-03-12,305.75,312.76,305.20,306.14,3060000,306.14 +1929-03-11,311.61,312.96,305.20,305.75,3630000,305.75 +1929-03-08,308.99,313.25,304.78,311.59,3950000,311.59 +1929-03-07,305.20,310.39,303.05,308.99,3630000,308.99 +1929-03-06,310.20,313.45,302.93,305.20,4490000,305.20 +1929-03-05,313.86,316.17,308.22,310.20,4430000,310.20 +1929-03-04,319.12,320.22,312.85,313.86,4560000,313.86 +1929-03-01,317.79,324.40,317.79,321.18,6020000,321.18 +1929-02-28,314.53,319.69,312.91,317.41,4970000,317.41 +1929-02-27,311.25,317.03,309.71,314.53,4370000,314.53 +1929-02-26,311.24,313.49,307.04,311.25,3740000,311.25 +1929-02-25,310.06,315.08,308.10,311.24,3510000,311.24 +1929-02-21,305.99,311.31,303.45,310.06,3400000,310.06 +1929-02-20,301.10,307.55,301.05,305.99,2910000,305.99 +1929-02-19,300.74,305.58,299.00,301.10,3210000,301.10 +1929-02-18,295.85,301.68,293.40,300.74,3480000,300.74 +1929-02-15,306.49,309.79,299.38,300.41,3900000,300.41 +1929-02-14,308.07,308.29,300.60,306.49,3730000,306.49 +1929-02-13,310.35,316.06,307.15,308.07,4530000,308.07 +1929-02-11,301.53,311.24,299.58,310.35,3890000,310.35 +1929-02-08,305.75,309.26,298.03,301.53,4550000,301.53 +1929-02-07,312.56,312.56,302.40,305.75,5210000,305.75 +1929-02-06,322.06,323.31,313.32,317.18,4680000,317.18 +1929-02-05,319.05,324.51,317.28,322.06,4070000,322.06 +1929-02-04,319.76,323.74,316.91,319.05,4050000,319.05 +1929-02-01,317.51,324.16,315.64,319.68,4970000,319.68 +1929-01-31,312.60,319.96,311.34,317.51,4680000,317.51 +1929-01-30,312.60,316.15,308.47,312.60,4130000,312.60 +1929-01-29,314.04,316.33,309.23,312.60,4290000,312.60 +1929-01-28,314.56,319.58,310.44,314.04,4980000,314.04 +1929-01-25,311.28,319.36,311.28,315.13,5510000,315.13 +1929-01-24,310.33,314.01,305.94,309.39,4500000,309.39 +1929-01-23,307.06,315.49,306.46,310.33,4920000,310.33 +1929-01-22,304.64,310.08,303.05,307.06,5120000,307.06 +1929-01-21,305.96,308.22,302.36,304.64,4900000,304.64 +1929-01-18,303.95,308.05,301.05,304.14,4940000,304.14 +1929-01-17,302.66,306.96,301.09,303.95,4260000,303.95 +1929-01-16,297.66,304.36,297.00,302.66,3670000,302.66 +1929-01-15,304.06,306.09,295.78,297.66,4180000,297.66 +1929-01-14,301.25,306.26,299.06,304.06,3920000,304.06 +1929-01-11,301.58,305.85,298.68,301.66,4240000,301.66 +1929-01-10,300.83,305.20,299.60,301.58,4020000,301.58 +1929-01-09,296.98,303.04,296.37,300.83,4050000,300.83 +1929-01-08,297.70,300.87,292.89,296.98,3850000,296.98 +1929-01-07,301.85,301.85,293.35,297.70,4800000,297.70 +1929-01-04,305.72,307.51,299.92,304.75,5530000,304.75 +1929-01-03,307.01,311.46,302.90,305.72,5100000,305.72 +1929-01-02,300.31,308.66,300.31,307.01,5410000,307.01 +1928-12-31,297.28,301.61,291.99,300.00,4890000,300.00 +1928-12-28,290.95,297.79,283.68,296.52,4800000,296.52 +1928-12-27,286.13,291.39,281.55,290.95,3570000,290.95 +1928-12-26,287.89,292.53,283.94,286.13,3620000,286.13 +1928-12-24,285.94,291.17,284.30,287.89,3700000,287.89 +1928-12-21,282.01,288.39,281.31,286.53,3460000,286.53 +1928-12-20,280.50,285.60,277.91,282.01,3810000,282.01 +1928-12-19,275.41,282.84,275.09,280.50,3400000,280.50 +1928-12-18,270.23,276.41,269.61,275.41,2270000,275.41 +1928-12-17,270.72,272.27,266.21,270.23,2230000,270.23 +1928-12-14,266.99,275.45,266.99,272.26,3010000,272.26 +1928-12-13,266.82,269.53,260.51,266.88,3270000,266.88 +1928-12-12,269.34,272.74,264.95,266.82,3990000,266.82 +1928-12-11,263.95,270.41,263.71,269.34,3920000,269.34 +1928-12-10,257.33,266.22,254.36,263.95,5220000,263.95 +1928-12-07,279.79,284.44,269.58,271.05,6190000,271.05 +1928-12-06,290.68,292.56,278.66,279.79,5410000,279.79 +1928-12-05,291.30,294.20,289.91,290.68,4380000,290.68 +1928-12-04,289.23,295.61,287.61,291.30,4920000,291.30 +1928-12-03,290.80,291.05,283.89,289.23,4490000,289.23 +1928-11-30,295.62,299.07,288.82,293.38,6410000,293.38 +1928-11-28,292.39,299.35,290.68,295.62,6370000,295.62 +1928-11-27,291.16,294.75,289.28,292.39,5280000,292.39 +1928-11-26,288.22,296.10,288.14,291.16,5320000,291.16 +1928-11-23,290.34,295.17,284.40,288.22,6940000,288.22 +1928-11-22,281.28,292.12,281.28,290.34,5840000,290.34 +1928-11-21,283.90,288.71,276.91,280.53,6170000,280.53 +1928-11-20,278.78,288.13,278.05,283.90,6440000,283.90 +1928-11-19,277.48,280.68,272.98,278.78,5100000,278.78 +1928-11-16,271.48,278.65,271.48,276.66,6730000,276.66 +1928-11-15,268.60,271.63,266.48,269.42,4730000,269.42 +1928-11-14,269.89,272.94,266.80,268.60,5410000,268.60 +1928-11-13,269.67,272.03,264.88,269.89,5240000,269.89 +1928-11-12,265.08,272.47,264.42,269.67,5680000,269.67 +1928-11-09,261.11,266.24,259.37,263.05,4950000,263.05 +1928-11-08,260.68,265.26,258.96,261.11,4850000,261.11 +1928-11-07,258.48,263.97,258.48,260.68,4830000,260.68 +1928-11-05,254.16,259.68,253.89,257.58,3740000,257.58 +1928-11-02,255.23,256.99,252.46,254.38,3490000,254.38 +1928-11-01,252.16,256.59,251.56,255.23,3450000,255.23 +1928-10-31,253.70,256.16,248.76,252.16,3490000,252.16 +1928-10-30,257.13,259.00,252.39,253.70,3450000,253.70 +1928-10-29,255.51,259.76,255.03,257.13,3690000,257.13 +1928-10-26,256.48,259.16,250.00,251.44,4520000,251.44 +1928-10-25,257.03,260.03,254.93,256.48,4210000,256.48 +1928-10-24,256.04,260.39,249.09,257.03,4550000,257.03 +1928-10-23,253.60,258.60,252.73,256.04,4160000,256.04 +1928-10-22,253.75,257.32,250.08,253.60,3860000,253.60 +1928-10-19,251.88,259.19,250.35,256.59,4560000,256.59 +1928-10-18,250.87,255.24,249.65,251.88,4400000,251.88 +1928-10-17,249.43,253.60,247.74,250.87,3960000,250.87 +1928-10-16,249.85,255.27,247.92,249.43,4530000,249.43 +1928-10-15,249.13,252.70,247.33,249.85,4040000,249.85 +1928-10-11,246.53,250.14,245.57,247.69,3970000,247.69 +1928-10-10,241.73,249.06,241.57,246.53,4170000,246.53 +1928-10-09,239.55,242.86,236.79,241.73,3820000,241.73 +1928-10-08,240.17,243.33,237.72,239.55,3940000,239.55 +1928-10-05,240.00,243.08,238.22,240.44,4360000,240.44 +1928-10-04,237.75,242.53,237.72,240.00,4330000,240.00 +1928-10-03,238.14,239.14,233.60,237.75,4060000,237.75 +1928-10-02,240.01,241.54,235.42,238.14,3850000,238.14 +1928-10-01,239.43,242.46,238.24,240.01,3500000,240.01 diff --git a/statsmodels/sandbox/examples/ex_cusum.py b/statsmodels/sandbox/examples/ex_cusum.py new file mode 100644 index 0000000..4923eb2 --- /dev/null +++ b/statsmodels/sandbox/examples/ex_cusum.py @@ -0,0 +1,106 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Apr 02 11:41:25 2010 + +Author: josef-pktd +""" + + +import numpy as np +from numpy.testing import assert_almost_equal +import matplotlib.pyplot as plt + +import statsmodels.api as sm +from statsmodels.stats.diagnostic import recursive_olsresiduals +from statsmodels.sandbox.stats.diagnostic import _recursive_olsresiduals2 as recursive_olsresiduals2 +from statsmodels.sandbox.stats.diagnostic import ( + breaks_hansen, breaks_cusumolsresid) + + +#examples from ex_onewaygls.py +#choose example +#-------------- +example = ['null', 'smalldiff', 'mediumdiff', 'largediff'][1] +example_size = [20, 100][1] +example_groups = ['2', '2-2'][1] +#'2-2': 4 groups, +# groups 0 and 1 and groups 2 and 3 have identical parameters in DGP + +#generate example +#---------------- +#np.random.seed(87654589) +nobs = example_size +x1 = 0.1+np.random.randn(nobs) +y1 = 10 + 15*x1 + 2*np.random.randn(nobs) + +x1 = sm.add_constant(x1, prepend=False) +#assert_almost_equal(x1, np.vander(x1[:,0],2), 16) +#res1 = sm.OLS(y1, x1).fit() +#print res1.params +#print np.polyfit(x1[:,0], y1, 1) +#assert_almost_equal(res1.params, np.polyfit(x1[:,0], y1, 1), 14) +#print res1.summary(xname=['x1','const1']) + +#regression 2 +x2 = 0.1+np.random.randn(nobs) +if example == 'null': + y2 = 10 + 15*x2 + 2*np.random.randn(nobs) # if H0 is true +elif example == 'smalldiff': + y2 = 11 + 16*x2 + 2*np.random.randn(nobs) +elif example == 'mediumdiff': + y2 = 12 + 16*x2 + 2*np.random.randn(nobs) +else: + y2 = 19 + 17*x2 + 2*np.random.randn(nobs) + +x2 = sm.add_constant(x2, prepend=False) + +# stack +x = np.concatenate((x1,x2),0) +y = np.concatenate((y1,y2)) +if example_groups == '2': + groupind = (np.arange(2*nobs)>nobs-1).astype(int) +else: + groupind = np.mod(np.arange(2*nobs),4) + groupind.sort() +#x = np.column_stack((x,x*groupind[:,None])) + +res1 = sm.OLS(y, x).fit() +skip = 8 + +rresid, rparams, rypred, rresid_standardized, rresid_scaled, rcusum, rcusumci = \ + recursive_olsresiduals(res1, skip) +print(rcusum) +print(rresid_scaled[skip-1:]) + +assert_almost_equal(rparams[-1], res1.params) + +plt.plot(rcusum) +plt.plot(rcusumci[0]) +plt.plot(rcusumci[1]) +plt.figure() +plt.plot(rresid) +plt.plot(np.abs(rresid)) + +print('cusum test reject:') +print(((rcusum[1:]>rcusumci[1]) | (rcusum[1:]>> dir(form) +['_Formula__namespace', '__add__', '__call__', '__class__', +'__delattr__', '__dict__', '__doc__', '__getattribute__', +'__getitem__', '__hash__', '__init__', '__module__', '__mul__', +'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', +'__str__', '__sub__', '__weakref__', '_del_namespace', +'_get_namespace', '_names', '_set_namespace', '_termnames', +'_terms_changed', 'design', 'hasterm', 'names', 'namespace', +'termcolumns', 'termnames', 'terms'] + +>>> form.design().shape +(40, 10) +>>> form.termnames() +['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] +>>> form.namespace.keys() +['A', 'C', 'B', 'E', 'D', 'G', 'F', 'I', 'H', 'J'] +>>> form.names() +['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J'] + +>>> form.termcolumns(formula.Term('C')) +[2] +>>> form.termcolumns('C') +Traceback (most recent call last): + File "", line 1, in + form.termcolumns('C') + File "C:\Josef\eclipsegworkspace\statsmodels-josef-experimental\scikits\statsmodels\sandbox\formula.py", line 494, in termcolumns + raise ValueError('term not in formula') +ValueError: term not in formula + + +''' +print(form.hasterm('C')) +print(form.termcolumns(formula.Term('C'))) #doesn't work with string argument + +#Example: use two columns and get contrast + +f2 = (form['A']+form['B']) +print(f2) +print(repr(f2)) +list(iterkeys(f2.namespace)) #namespace is still empty +f2.namespace = namespace #associate data +iterkeys(f2.namespace) +f2.design().shape +contrast.Contrast(formula.Term('A'), f2).matrix + +''' +>>> f2 = (form['A']+form['B']) +>>> print f2 + +>>> print repr(f2) + +>>> f2.namespace.keys() #namespace is still empty +[] +>>> f2.namespace = namespace #associate data +>>> f2.namespace.keys() +['A', 'C', 'B', 'E', 'D', 'G', 'F', 'I', 'H', 'J'] +>>> f2.design().shape +(40, 2) +>>> contrast.Contrast(formula.Term('A'), f2).matrix +array([ 1., 0.]) +''' + +#Example: product of terms +#------------------------- + +f3 = (form['A']*form['B']) +f3.namespace +f3.namespace = namespace +f3.design().shape +np.min(np.abs(f3.design() - f2.design().prod(1))) + +''' +>>> f3 = (form['A']*form['B']) +>>> f3.namespace +{} +>>> f3.namespace = namespace +>>> f3.design().shape +(40,) +>>> np.min(np.abs(f3.design() - f2.design().prod(1))) +0.0 +''' + +#Example: Interactions of two terms +#---------------------------------- + +#I don't get contrast of product term + +f4 = formula.interactions([form['A'],form['B']]) +f4.namespace +f4.namespace = namespace +print(f4) +f4.names() +f4.design().shape + +contrast.Contrast(formula.Term('A'), f4).matrix +#contrast.Contrast(formula.Term('A*B'), f4).matrix + +''' +>>> formula.interactions([form['A'],form['B']]) + +>>> f4 = formula.interactions([form['A'],form['B']]) +>>> f4.namespace +{} +>>> f4.namespace = namespace +>>> print f4 + +>>> f4.names() +['A*B', 'A', 'B'] +>>> f4.design().shape +(40, 3) + +>>> contrast.Contrast(formula.Term('A'), f4).matrix +array([ 0.00000000e+00, 1.00000000e+00, 7.63278329e-17]) +>>> contrast.Contrast(formula.Term('A*B'), f4).matrix +Traceback (most recent call last): + File "c:\...\scikits\statsmodels\sandbox\contrast_old.py", line 112, in _get_matrix + self.compute_matrix() + File "c:\...\scikits\statsmodels\sandbox\contrast_old.py", line 91, in compute_matrix + T = np.transpose(np.array(t(*args, **kw))) + File "c:\...\scikits\statsmodels\sandbox\formula.py", line 150, in __call__ + If the term has no 'func' attribute, it returns +KeyError: 'A*B' +''' + + + +#Other +#----- + +'''Exception if there is no data or key: +>>> contrast.Contrast(formula.Term('a'), f2).matrix +Traceback (most recent call last): + File "c:\..\scikits\statsmodels\sandbox\contrast_old.py", line 112, in _get_matrix + self.compute_matrix() + File "c:\...\scikits\statsmodels\sandbox\contrast_old.py", line 91, in compute_matrix + T = np.transpose(np.array(t(*args, **kw))) + File "c:\...\scikits\statsmodels\sandbox\formula.py", line 150, in __call__ + If the term has no 'func' attribute, it returns +KeyError: 'a' +''' + + +f = ['a']*3 + ['b']*3 + ['c']*2 +fac = formula.Factor('ff', f) +fac.namespace = {'ff':f} + + +#Example: formula with factor + +# I don't manage to combine factors with formulas, e.g. a joint +# designmatrix +# also I don't manage to get contrast matrices with factors +# it looks like I might have to add namespace for dummies myself ? +# even then combining still doesn't work + +f5 = formula.Term('A') + fac +namespace['A'] = form.namespace['A'] + +formula.Formula(fac).design() +''' +>>> formula.Formula(fac).design() +array([[ 1., 0., 0.], + [ 1., 0., 0.], + [ 1., 0., 0.], + [ 0., 1., 0.], + [ 0., 1., 0.], + [ 0., 1., 0.], + [ 0., 0., 1.], + [ 0., 0., 1.]]) + + +>>> contrast.Contrast(formula.Term('(ff==a)'), fac).matrix +Traceback (most recent call last): + File "c:\...\scikits\statsmodels\sandbox\contrast_old.py", line 112, in _get_matrix + self.compute_matrix() + File "c:\...\scikits\statsmodels\sandbox\contrast_old.py", line 91, in compute_matrix + T = np.transpose(np.array(t(*args, **kw))) + File "c:\...\scikits\statsmodels\sandbox\formula.py", line 150, in __call__ + If the term has no 'func' attribute, it returns +KeyError: '(ff==a)' +''' + +#convert factor to formula + +f7 = formula.Formula(fac) +# explicit updating of namespace with +f7.namespace.update(dict(zip(fac.names(),fac()))) + +# contrast matrix with 2 of 3 terms +contrast.Contrast(formula.Term('(ff==b)')+formula.Term('(ff==a)'), f7).matrix +#array([[ 1., 0., 0.], +# [ 0., 1., 0.]]) + +# contrast matrix for all terms +contrast.Contrast(f7, f7).matrix +#array([[ 1., 0., 0.], +# [ 0., 1., 0.], +# [ 0., 0., 1.]]) + +# contrast matrix for difference groups 1,2 versus group 0 +contrast.Contrast(formula.Term('(ff==b)')+formula.Term('(ff==c)'), f7).matrix - contrast.Contrast(formula.Term('(ff==a)'), f7).matrix +#array([[-1., 1., 0.], +# [-1., 0., 1.]]) + + +# all pairwise contrasts +cont = [] +for i,j in zip(*np.triu_indices(len(f7.names()),1)): + ci = contrast.Contrast(formula.Term(f7.names()[i]), f7).matrix + ci -= contrast.Contrast(formula.Term(f7.names()[j]), f7).matrix + cont.append(ci) + +cont = np.array(cont) +cont +#array([[ 1., -1., 0.], +# [ 1., 0., -1.], +# [ 0., 1., -1.]]) diff --git a/statsmodels/sandbox/examples/ex_formula_factor.py b/statsmodels/sandbox/examples/ex_formula_factor.py new file mode 100644 index 0000000..450dec7 --- /dev/null +++ b/statsmodels/sandbox/examples/ex_formula_factor.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +""" +Created on Sat May 15 19:59:42 2010 +Author: josef-pktd +""" + +from statsmodels.sandbox import formula + + +#define a categorical variable - factor + + +f0 = ['a','b','c']*4 +f = ['a']*4 + ['b']*3 + ['c']*4 +fac = formula.Factor('ff', f) +fac.namespace = {'ff':f} +list(fac.values()) +[x for x in dir(fac) if x[0] != '_'] + +#create dummy variable + +fac.get_columns().shape +fac.get_columns().T + +#this is a way of encoding effects from a categorical variable +#different from using dummy variables +#I never seen a reference for this. + +fac.main_effect(reference=1) +#dir(fac.main_effect(reference=1)) +fac.main_effect(reference=1)() +#fac.main_effect(reference=1).func +fac.main_effect(reference=1).names() +fac.main_effect(reference=2).names() +fac.main_effect(reference=2)().shape + +#columns for the design matrix + +fac.main_effect(reference=2)().T +fac.names() diff --git a/statsmodels/sandbox/examples/ex_gam_results.py b/statsmodels/sandbox/examples/ex_gam_results.py new file mode 100644 index 0000000..1e5b0d4 --- /dev/null +++ b/statsmodels/sandbox/examples/ex_gam_results.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +"""Example results for GAM from tests + +Created on Mon Nov 07 13:13:15 2011 + +Author: Josef Perktold + +The example is loaded from a test module. The test still fails but the +results look relatively good. +I don't know yet why there is the small difference and why GAM doesn't +converge in this case + +""" + + +import matplotlib.pyplot as plt + +from statsmodels.sandbox.tests.test_gam import _estGAMGaussianLogLink + + +tt = _estGAMGaussianLogLink() +comp, const = tt.res_gam.smoothed_demeaned(tt.mod_gam.exog) +comp_glm_ = tt.res2.model.exog * tt.res2.params +comp1 = comp_glm_[:,1:4].sum(1) +mean1 = comp1.mean() +comp1 -= mean1 +comp2 = comp_glm_[:,4:].sum(1) +mean2 = comp2.mean() +comp2 -= mean2 + +comp1_true = tt.res2.model.exog[:,1:4].sum(1) +mean1 = comp1_true.mean() +comp1_true -= mean1 +comp2_true = tt.res2.model.exog[:,4:].sum(1) +mean2 = comp2_true.mean() +comp2_true -= mean2 + +noise = tt.res2.model.endog - tt.mu_true +noise_eta = tt.family.link(tt.res2.model.endog) - tt.y_true + +plt.figure() +plt.plot(noise, 'k.') +plt.figure() +plt.plot(comp, 'r-') +plt.plot(comp1, 'b-') +plt.plot(comp2, 'b-') +plt.plot(comp1_true, 'k--', lw=2) +plt.plot(comp2_true, 'k--', lw=2) +#the next doesn't make sense - non-linear +#c1 = tt.family.link(tt.family.link.inverse(comp1_true) + noise) +#c2 = tt.family.link(tt.family.link.inverse(comp2_true) + noise) +#not nice in example/plot: noise variance is constant not proportional +plt.plot(comp1_true + noise_eta, 'g.', alpha=0.95) +plt.plot(comp2_true + noise_eta, 'r.', alpha=0.95) +#plt.plot(c1, 'g.', alpha=0.95) +#plt.plot(c2, 'r.', alpha=0.95) +plt.title('Gaussian loglink, GAM (red), GLM (blue), true (black)') +plt.show() diff --git a/statsmodels/sandbox/examples/ex_mixed_lls_0.py b/statsmodels/sandbox/examples/ex_mixed_lls_0.py new file mode 100644 index 0000000..4ac7883 --- /dev/null +++ b/statsmodels/sandbox/examples/ex_mixed_lls_0.py @@ -0,0 +1,155 @@ +# -*- coding: utf-8 -*- +"""Example using OneWayMixed + + +Created on Sat Dec 03 10:15:55 2011 + +Author: Josef Perktold + +This example constructs a linear model with individual specific random +effects and random coefficients, and uses OneWayMixed to estimate it. + + +""" +from __future__ import print_function +import numpy as np + +from statsmodels.sandbox.panel.mixed import OneWayMixed, Unit + +examples = ['ex1'] + +if 'ex1' in examples: + #np.random.seed(54321) + np.random.seed(978326) + nsubj = 2000 + units = [] + + nobs_i = 4 #number of observations per unit, changed below + + nx = 4 #number fixed effects + nz = 2 ##number random effects + beta = np.ones(nx) + gamma = 0.5 * np.ones(nz) #mean of random effect + gamma[0] = 0 + gamma_re_true = [] + for i in range(nsubj): + #create data for one unit + + #random effect/coefficient + gamma_re = gamma + 0.2 * np.random.standard_normal(nz) + #store true parameter for checking + gamma_re_true.append(gamma_re) + + #for testing unbalanced case, let's change nobs per unit + if i > nsubj//4: + nobs_i = 6 + + #generate exogenous variables + X = np.random.standard_normal((nobs_i, nx)) + Z = np.random.standard_normal((nobs_i, nz-1)) + Z = np.column_stack((np.ones(nobs_i), Z)) + + noise = 0.1 * np.random.randn(nobs_i) #sig_e = 0.1 + + #generate endogenous variable + Y = np.dot(X, beta) + np.dot(Z, gamma_re) + noise + + #add random effect design matrix also to fixed effects to + #capture the mean + #this seems to be necessary to force mean of RE to zero !? + #(It's not required for estimation but interpretation of random + #effects covariance matrix changes - still need to check details. + X = np.hstack((X,Z)) + + # create units and append to list + new_unit = Unit(Y, X, Z) + units.append(new_unit) + + + m = OneWayMixed(units) + + import time + t0 = time.time() + m.initialize() + res = m.fit(maxiter=100, rtol=1.0e-5, params_rtol=1e-6, params_atol=1e-6) + t1 = time.time() + print('time for initialize and fit', t1-t0) + print('number of iterations', m.iterations) + #print(dir(m) + #print(vars(m) + print('\nestimates for fixed effects') + print(m.a) + print(m.params) + bfixed_cov = m.cov_fixed() + print('beta fixed standard errors') + print(np.sqrt(np.diag(bfixed_cov))) + + print(m.bse) + b_re = m.params_random_units + print('RE mean:', b_re.mean(0)) + print('RE columns std', b_re.std(0)) + print('np.cov(b_re, rowvar=0), sample statistic') + print(np.cov(b_re, rowvar=0)) + print('std of above') + print(np.sqrt(np.diag(np.cov(b_re, rowvar=0)))) + print('m.cov_random()') + print(m.cov_random()) + print('std of above') + print(res.std_random()) + print(np.sqrt(np.diag(m.cov_random()))) + + print('\n(non)convergence of llf') + print(m.history['llf'][-4:]) + print('convergence of parameters') + #print(np.diff(np.vstack(m.history[-4:])[:,1:],axis=0) + print(np.diff(np.vstack(m.history['params'][-4:]),axis=0)) + print('convergence of D') + print(np.diff(np.array(m.history['D'][-4:]), axis=0)) + + #zdotb = np.array([np.dot(unit.Z, unit.b) for unit in m.units]) + zb = np.array([(unit.Z * unit.b[None,:]).sum(0) for unit in m.units]) + '''if Z is not included in X: + >>> np.dot(b_re.T, b_re)/100 + array([[ 0.03270611, -0.00916051], + [-0.00916051, 0.26432783]]) + >>> m.cov_random() + array([[ 0.0348722 , -0.00909159], + [-0.00909159, 0.26846254]]) + >>> #note cov_random doesn't subtract mean! + ''' + print('\nchecking the random effects distribution and prediction') + gamma_re_true = np.array(gamma_re_true) + print('mean of random effect true', gamma_re_true.mean(0)) + print('mean from fixed effects ', m.params[-2:]) + print('mean of estimated RE ', b_re.mean(0)) + + print('') + absmean_true = np.abs(gamma_re_true).mean(0) + mape = ((m.params[-2:] + b_re) / gamma_re_true - 1).mean(0)*100 + mean_abs_perc = np.abs((m.params[-2:] + b_re) - gamma_re_true).mean(0) \ + / absmean_true*100 + median_abs_perc = np.median(np.abs((m.params[-2:] + b_re) - gamma_re_true), 0) \ + / absmean_true*100 + rmse_perc = ((m.params[-2:] + b_re) - gamma_re_true).std(0) \ + / absmean_true*100 + print('mape ', mape) + print('mean_abs_perc ', mean_abs_perc) + print('median_abs_perc', median_abs_perc) + print('rmse_perc (std)', rmse_perc) + #from numpy.testing import assert_almost_equal + #assert is for n_units=100 in original example + #I changed random number generation, so this won't work anymore + #assert_almost_equal(rmse_perc, [ 34.14783884, 11.6031684 ], decimal=8) + + #now returns res + print(res.llf) #based on MLE, does not include constant + print(res.tvalues) + print(res.pvalues) + print(res.t_test([1,-1,0,0,0,0])) + print('test mean of both random effects variables is zero') + print(res.f_test([[0,0,0,0,1,0], [0,0,0,0,0,1]])) + plots = res.plot_random_univariate(bins=50) + fig = res.plot_scatter_pairs(0, 1) + import matplotlib.pyplot as plt + + plt.show() diff --git a/statsmodels/sandbox/examples/ex_mixed_lls_re.py b/statsmodels/sandbox/examples/ex_mixed_lls_re.py new file mode 100644 index 0000000..8ea44b1 --- /dev/null +++ b/statsmodels/sandbox/examples/ex_mixed_lls_re.py @@ -0,0 +1,159 @@ +# -*- coding: utf-8 -*- +"""Example using OneWayMixed + + +Created on Sat Dec 03 10:15:55 2011 + +Author: Josef Perktold + +This example constructs a linear model with individual specific random +effects, and uses OneWayMixed to estimate it. + +This is a variation on ex_mixed_lls_0.py. Here we only have a single +individual specific constant, that is just a random effect without exogenous +regressors. + +""" + +import numpy as np + +from statsmodels.sandbox.panel.mixed import OneWayMixed, Unit + +examples = ['ex1'] + +if 'ex1' in examples: + #np.random.seed(54321) + np.random.seed(978326) + nsubj = 2000 + units = [] + + nobs_i = 4 #number of observations per unit, changed below + + nx = 0 #number fixed effects + nz = 1 ##number random effects + beta = np.ones(nx) + gamma = 0.5 * np.ones(nz) #mean of random effect + gamma[0] = 0 + gamma_re_true = [] + for i in range(nsubj): + #create data for one unit + + #random effect/coefficient + gamma_re = gamma + 0.2 * np.random.standard_normal(nz) + #store true parameter for checking + gamma_re_true.append(gamma_re) + + #for testing unbalanced case, let's change nobs per unit + if i > nsubj//4: + nobs_i = 6 + + #generate exogenous variables + X = np.random.standard_normal((nobs_i, nx)) + Z = np.random.standard_normal((nobs_i, nz-1)) + Z = np.column_stack((np.ones(nobs_i), Z)) + + noise = 0.1 * np.random.randn(nobs_i) #sig_e = 0.1 + + #generate endogenous variable + Y = np.dot(X, beta) + np.dot(Z, gamma_re) + noise + + #add random effect design matrix also to fixed effects to + #capture the mean + #this seems to be necessary to force mean of RE to zero !? + #(It's not required for estimation but interpretation of random + #effects covariance matrix changes - still need to check details. + X = np.hstack((X,Z)) + + # create units and append to list + new_unit = Unit(Y, X, Z) + units.append(new_unit) + + + m = OneWayMixed(units) + + import time + t0 = time.time() + m.initialize() + res = m.fit(maxiter=100, rtol=1.0e-5, params_rtol=1e-6, params_atol=1e-6) + t1 = time.time() + print('time for initialize and fit', t1-t0) + print('number of iterations', m.iterations) + #print dir(m) + #print vars(m) + print('\nestimates for fixed effects') + print(m.a) + print(m.params) + bfixed_cov = m.cov_fixed() + print('beta fixed standard errors') + print(np.sqrt(np.diag(bfixed_cov))) + + print(m.bse) + b_re = m.params_random_units + print('RE mean:', b_re.mean(0)) + print('RE columns std', b_re.std(0)) + print('np.cov(b_re, rowvar=0), sample statistic') + print(np.cov(b_re, rowvar=0)) + print('std of above') + #need atleast_1d or diag raises exception + print(np.sqrt(np.diag(np.atleast_1d(np.cov(b_re, rowvar=0))))) + print('m.cov_random()') + print(m.cov_random()) + print('std of above') + print(res.std_random()) + print(np.sqrt(np.diag(m.cov_random()))) + + print('\n(non)convergence of llf') + print(m.history['llf'][-4:]) + print('convergence of parameters') + #print np.diff(np.vstack(m.history[-4:])[:,1:],axis=0) + print(np.diff(np.vstack(m.history['params'][-4:]),axis=0)) + print('convergence of D') + print(np.diff(np.array(m.history['D'][-4:]), axis=0)) + + #zdotb = np.array([np.dot(unit.Z, unit.b) for unit in m.units]) + zb = np.array([(unit.Z * unit.b[None,:]).sum(0) for unit in m.units]) + '''if Z is not included in X: + >>> np.dot(b_re.T, b_re)/100 + array([[ 0.03270611, -0.00916051], + [-0.00916051, 0.26432783]]) + >>> m.cov_random() + array([[ 0.0348722 , -0.00909159], + [-0.00909159, 0.26846254]]) + >>> #note cov_random doesn't subtract mean! + ''' + print('\nchecking the random effects distribution and prediction') + gamma_re_true = np.array(gamma_re_true) + print('mean of random effect true', gamma_re_true.mean(0)) + print('mean from fixed effects ', m.params[-2:]) + print('mean of estimated RE ', b_re.mean(0)) + + print() + absmean_true = np.abs(gamma_re_true).mean(0) + mape = ((m.params[-2:] + b_re) / gamma_re_true - 1).mean(0)*100 + mean_abs_perc = np.abs((m.params[-2:] + b_re) - gamma_re_true).mean(0) \ + / absmean_true*100 + median_abs_perc = np.median(np.abs((m.params[-2:] + b_re) - gamma_re_true), 0) \ + / absmean_true*100 + rmse_perc = ((m.params[-2:] + b_re) - gamma_re_true).std(0) \ + / absmean_true*100 + print('mape ', mape) + print('mean_abs_perc ', mean_abs_perc) + print('median_abs_perc', median_abs_perc) + print('rmse_perc (std)', rmse_perc) + #from numpy.testing import assert_almost_equal + #assert is for n_units=100 in original example + #I changed random number generation, so this won't work anymore + #assert_almost_equal(rmse_perc, [ 34.14783884, 11.6031684 ], decimal=8) + + #now returns res + print('llf', res.llf) #based on MLE, does not include constant + print('tvalues', res.tvalues) + print('pvalues', res.pvalues) + print(res.t_test([1])) + print('test mean of both random effects variables is zero') + print(res.f_test([[1]])) + plots = res.plot_random_univariate(bins=50) + #fig = res.plot_scatter_pairs(0, 1) #no pairs + import matplotlib.pyplot as plt + + plt.show() diff --git a/statsmodels/sandbox/examples/ex_mixed_lls_timecorr.py b/statsmodels/sandbox/examples/ex_mixed_lls_timecorr.py new file mode 100644 index 0000000..2b88c12 --- /dev/null +++ b/statsmodels/sandbox/examples/ex_mixed_lls_timecorr.py @@ -0,0 +1,211 @@ +# -*- coding: utf-8 -*- +"""Example using OneWayMixed with within group intertemporal correlation + + +Created on Sat Dec 03 10:15:55 2011 + +Author: Josef Perktold + +This example constructs a linear model with individual specific random +effects, and uses OneWayMixed to estimate it. + +This is a variation on ex_mixed_lls_0.py. +Here we use time dummies as random effects (all except 1st time period). + +I think, this should allow for (almost) arbitrary intertemporal correlation. +The assumption is that each unit can have different constants, however the +intertemporal covariance matrix is the same for all units. One caveat, to +avoid singular matrices, we have to treat one time period differently. + +Estimation requires that the number of units is larger than the number of +time periods. Also, it requires that we have the same number of periods for +each unit. + +I needed to remove the first observation from the time dummies to avoid a +singular matrix. So, interpretation of time effects should be relative to +first observation. (I didn't check the math.) +TODO: +Note, I don't already have constant in X. Constant for first +time observation is missing. +Do I need all dummies in exog_fe, Z, but not in exog_re, Z? Tried this and +it works. +In the error decomposition we also have the noise variable, I guess this works +like constant, so we get full rank (square) with only T-1 time dummies. +But we don't get correlation with the noise, or do we? conditional? +-> sample correlation of estimated random effects looks a bit high, + upward bias? or still some problems with initial condition? + correlation from estimated cov_random looks good. + +Since we include the time dummies also in the fixed effect, we can have +arbitrary trends, different constants in each period. + + +Intertemporal correlation in data generating process, DGP, to see if +the results correctly estimate it. +used AR(1) as example, but only starting at second period. (?) +Note: we don't impose AR structure in the estimation + +""" + +import numpy as np + +from statsmodels.sandbox.panel.mixed import OneWayMixed, Unit + +examples = ['ex1'] + +if 'ex1' in examples: + #np.random.seed(54321) + #np.random.seed(978326) + nsubj = 200 + units = [] + + nobs_i = 8 #number of observations per unit, changed below + + nx = 1 #number fixed effects + nz = nobs_i - 1 ##number random effects + beta = np.ones(nx) + gamma = 0.5 * np.ones(nz) #mean of random effect + #gamma[0] = 0 + gamma_re_true = [] + for i in range(nsubj): + #create data for one unit + + #random effect/coefficient + + use_correlated = True + if not use_correlated: + gamma_re = gamma + 0.2 * np.random.standard_normal(nz) + else: + #coefficients are AR(1) for all but first time periods + from scipy import linalg as splinalg + rho = 0.6 + corr_re = splinalg.toeplitz(rho**np.arange(nz)) + rvs = np.random.multivariate_normal(np.zeros(nz), corr_re) + gamma_re = gamma + 0.2 * rvs + + #store true parameter for checking + gamma_re_true.append(gamma_re) + + #generate exogenous variables + X = np.random.standard_normal((nobs_i, nx)) + + #try Z should be time dummies + time_dummies = (np.arange(nobs_i)[:, None] == np.arange(nobs_i)[None, :]).astype(float) + Z = time_dummies[:,1:] + +# Z = np.random.standard_normal((nobs_i, nz-1)) +# Z = np.column_stack((np.ones(nobs_i), Z)) + + noise = 0.1 * np.random.randn(nobs_i) #sig_e = 0.1 + + #generate endogenous variable + Y = np.dot(X, beta) + np.dot(Z, gamma_re) + noise + + #add random effect design matrix also to fixed effects to + #capture the mean + #this seems to be necessary to force mean of RE to zero !? + #(It's not required for estimation but interpretation of random + #effects covariance matrix changes - still need to check details. + #X = np.hstack((X,Z)) + X = np.hstack((X, time_dummies)) + + # create units and append to list + new_unit = Unit(Y, X, Z) + units.append(new_unit) + + + m = OneWayMixed(units) + + import time + t0 = time.time() + m.initialize() + res = m.fit(maxiter=100, rtol=1.0e-5, params_rtol=1e-6, params_atol=1e-6) + t1 = time.time() + print('time for initialize and fit', t1-t0) + print('number of iterations', m.iterations) + #print dir(m) + #print vars(m) + print('\nestimates for fixed effects') + print(m.a) + print(m.params) + bfixed_cov = m.cov_fixed() + print('beta fixed standard errors') + print(np.sqrt(np.diag(bfixed_cov))) + + print(m.bse) + b_re = m.params_random_units + print('RE mean:', b_re.mean(0)) + print('RE columns std', b_re.std(0)) + print('np.cov(b_re, rowvar=0), sample statistic') + print(np.cov(b_re, rowvar=0)) + print('sample correlation of estimated random effects') + print(np.corrcoef(b_re, rowvar=0)) + print('std of above') + #need atleast_1d or diag raises exception + print(np.sqrt(np.diag(np.atleast_1d(np.cov(b_re, rowvar=0))))) + print('m.cov_random()') + print(m.cov_random()) + print('correlation from above') + print(res.cov_random()/ res.std_random()[:,None] /res.std_random()) + print('std of above') + print(res.std_random()) + print(np.sqrt(np.diag(m.cov_random()))) + + print('\n(non)convergence of llf') + print(m.history['llf'][-4:]) + print('convergence of parameters') + #print np.diff(np.vstack(m.history[-4:])[:,1:],axis=0) + print(np.diff(np.vstack(m.history['params'][-4:]),axis=0)) + print('convergence of D') + print(np.diff(np.array(m.history['D'][-4:]), axis=0)) + + #zdotb = np.array([np.dot(unit.Z, unit.b) for unit in m.units]) + zb = np.array([(unit.Z * unit.b[None,:]).sum(0) for unit in m.units]) + '''if Z is not included in X: + >>> np.dot(b_re.T, b_re)/100 + array([[ 0.03270611, -0.00916051], + [-0.00916051, 0.26432783]]) + >>> m.cov_random() + array([[ 0.0348722 , -0.00909159], + [-0.00909159, 0.26846254]]) + >>> #note cov_random doesn't subtract mean! + ''' + print('\nchecking the random effects distribution and prediction') + gamma_re_true = np.array(gamma_re_true) + print('mean of random effect true', gamma_re_true.mean(0)) + print('mean from fixed effects ', m.params[-2:]) + print('mean of estimated RE ', b_re.mean(0)) + + print() + absmean_true = np.abs(gamma_re_true).mean(0) + mape = ((m.params[-nz:] + b_re) / gamma_re_true - 1).mean(0)*100 + mean_abs_perc = np.abs((m.params[-nz:] + b_re) - gamma_re_true).mean(0) \ + / absmean_true*100 + median_abs_perc = np.median(np.abs((m.params[-nz:] + b_re) - gamma_re_true), 0) \ + / absmean_true*100 + rmse_perc = ((m.params[-nz:] + b_re) - gamma_re_true).std(0) \ + / absmean_true*100 + print('mape ', mape) + print('mean_abs_perc ', mean_abs_perc) + print('median_abs_perc', median_abs_perc) + print('rmse_perc (std)', rmse_perc) + #from numpy.testing import assert_almost_equal + #assert is for n_units=100 in original example + #I changed random number generation, so this won't work anymore + #assert_almost_equal(rmse_perc, [ 34.14783884, 11.6031684 ], decimal=8) + + #now returns res + print('llf', res.llf) #based on MLE, does not include constant + print('tvalues', res.tvalues) + print('pvalues', res.pvalues) + rmat = np.zeros(len(res.params)) + rmat[-nz:] = 1 + print('t_test mean of random effects variables are zero') + print(res.t_test(rmat)) + print('f_test mean of both random effects variables is zero (joint hypothesis)') + print(res.f_test(rmat)) + plots = res.plot_random_univariate() #(bins=50) + fig = res.plot_scatter_all_pairs() + import matplotlib.pyplot as plt + + plt.show() diff --git a/statsmodels/sandbox/examples/ex_onewaygls.py b/statsmodels/sandbox/examples/ex_onewaygls.py new file mode 100644 index 0000000..bcc601e --- /dev/null +++ b/statsmodels/sandbox/examples/ex_onewaygls.py @@ -0,0 +1,196 @@ +# -*- coding: utf-8 -*- +"""Example: Test for equality of coefficients across groups/regressions + + +Created on Sat Mar 27 22:36:51 2010 +Author: josef-pktd +""" + +import numpy as np +from scipy import stats +#from numpy.testing import assert_almost_equal +import statsmodels.api as sm +from statsmodels.sandbox.regression.onewaygls import OneWayLS + +#choose example +#-------------- +example = ['null', 'diff'][1] #null: identical coefficients across groups +example_size = [10, 100][0] +example_size = [(10,2), (100,2)][0] +example_groups = ['2', '2-2'][1] +#'2-2': 4 groups, +# groups 0 and 1 and groups 2 and 3 have identical parameters in DGP + +#generate example +#---------------- +np.random.seed(87654589) +nobs, nvars = example_size +x1 = np.random.normal(size=(nobs, nvars)) +y1 = 10 + np.dot(x1,[15.]*nvars) + 2*np.random.normal(size=nobs) + +x1 = sm.add_constant(x1, prepend=False) +#assert_almost_equal(x1, np.vander(x1[:,0],2), 16) +#res1 = sm.OLS(y1, x1).fit() +#print res1.params +#print np.polyfit(x1[:,0], y1, 1) +#assert_almost_equal(res1.params, np.polyfit(x1[:,0], y1, 1), 14) +#print res1.summary(xname=['x1','const1']) + +#regression 2 +x2 = np.random.normal(size=(nobs,nvars)) +if example == 'null': + y2 = 10 + np.dot(x2,[15.]*nvars) + 2*np.random.normal(size=nobs) # if H0 is true +else: + y2 = 19 + np.dot(x2,[17.]*nvars) + 2*np.random.normal(size=nobs) + +x2 = sm.add_constant(x2, prepend=False) + +# stack +x = np.concatenate((x1,x2),0) +y = np.concatenate((y1,y2)) +if example_groups == '2': + groupind = (np.arange(2*nobs)>nobs-1).astype(int) +else: + groupind = np.mod(np.arange(2*nobs),4) + groupind.sort() +#x = np.column_stack((x,x*groupind[:,None])) + + +def print_results(res): + groupind = res.groups + #res.fitjoint() #not really necessary, because called by ftest_summary + ft = res.ftest_summary() + #print ft[0] #skip because table is nicer + print('\nTable of F-tests for overall or pairwise equality of coefficients') +## print 'hypothesis F-statistic p-value df_denom df_num reject' +## for row in ft[1]: +## print row, +## if row[1][1]<0.05: +## print '*' +## else: +## print '' + from statsmodels.iolib import SimpleTable + print(SimpleTable([(['%r' % (row[0],)] + + list(row[1]) + + ['*']*(row[1][1]>0.5).item() ) for row in ft[1]], + headers=['pair', 'F-statistic','p-value','df_denom', + 'df_num'])) + + print('Notes: p-values are not corrected for many tests') + print(' (no Bonferroni correction)') + print(' * : reject at 5% uncorrected confidence level') + print('Null hypothesis: all or pairwise coefficient are the same') + print('Alternative hypothesis: all coefficients are different') + + print('\nComparison with stats.f_oneway') + print(stats.f_oneway(*[y[groupind==gr] for gr in res.unique])) + print('\nLikelihood Ratio Test') + print('likelihood ratio p-value df') + print(res.lr_test()) + print('Null model: pooled all coefficients are the same across groups,') + print('Alternative model: all coefficients are allowed to be different') + print('not verified but looks close to f-test result') + + print('\nOls parameters by group from individual, separate ols regressions') + for group in sorted(res.olsbygroup): + r = res.olsbygroup[group] + print(group, r.params) + + print('\nCheck for heteroscedasticity, ') + print('variance and standard deviation for individual regressions') + print(' '*12, ' '.join('group %-10s' %(gr) for gr in res.unique)) + print('variance ', res.sigmabygroup) + print('standard dev', np.sqrt(res.sigmabygroup)) + +#now added to class +def print_results2(res): + groupind = res.groups + #res.fitjoint() #not really necessary, because called by ftest_summary + ft = res.ftest_summary() + txt = '' + #print ft[0] #skip because table is nicer + templ = \ +'''Table of F-tests for overall or pairwise equality of coefficients' +%(tab)s + + +Notes: p-values are not corrected for many tests + (no Bonferroni correction) + * : reject at 5%% uncorrected confidence level +Null hypothesis: all or pairwise coefficient are the same' +Alternative hypothesis: all coefficients are different' + + +Comparison with stats.f_oneway +%(statsfow)s + + +Likelihood Ratio Test +%(lrtest)s +Null model: pooled all coefficients are the same across groups,' +Alternative model: all coefficients are allowed to be different' +not verified but looks close to f-test result' + + +Ols parameters by group from individual, separate ols regressions' +%(olsbg)s +for group in sorted(res.olsbygroup): + r = res.olsbygroup[group] + print group, r.params + + +Check for heteroscedasticity, ' +variance and standard deviation for individual regressions' +%(grh)s +variance ', res.sigmabygroup +standard dev', np.sqrt(res.sigmabygroup) +''' + + from statsmodels.iolib import SimpleTable + resvals = {} + resvals['tab'] = str(SimpleTable([(['%r' % (row[0],)] + + list(row[1]) + + ['*']*(row[1][1]>0.5).item() ) for row in ft[1]], + headers=['pair', 'F-statistic','p-value','df_denom', + 'df_num'])) + resvals['statsfow'] = str(stats.f_oneway(*[y[groupind==gr] for gr in + res.unique])) + #resvals['lrtest'] = str(res.lr_test()) + resvals['lrtest'] = str(SimpleTable([res.lr_test()], + headers=['likelihood ratio', 'p-value', 'df'] )) + + resvals['olsbg'] = str(SimpleTable([[group] + + res.olsbygroup[group].params.tolist() + for group in sorted(res.olsbygroup)])) + resvals['grh'] = str(SimpleTable(np.vstack([res.sigmabygroup, + np.sqrt(res.sigmabygroup)]), + headers=res.unique.tolist())) + + return templ % resvals + + + +#get results for example +#----------------------- + +print('\nTest for equality of coefficients for all exogenous variables') +print('-------------------------------------------------------------') +res = OneWayLS(y,x, groups=groupind.astype(int)) +print_results(res) + +print('\n\nOne way ANOVA, constant is the only regressor') +print('---------------------------------------------') + +print('this is the same as scipy.stats.f_oneway') +res = OneWayLS(y,np.ones(len(y)), groups=groupind) +print_results(res) + + +print('\n\nOne way ANOVA, constant is the only regressor with het is true') +print('--------------------------------------------------------------') + +print('this is the similar to scipy.stats.f_oneway,') +print('but variance is not assumed to be the same across groups') +res = OneWayLS(y,np.ones(len(y)), groups=groupind.astype(str), het=True) +print_results(res) +print(res.print_summary()) #(res) diff --git a/statsmodels/sandbox/examples/ex_random_panel.py b/statsmodels/sandbox/examples/ex_random_panel.py new file mode 100644 index 0000000..a52eb83 --- /dev/null +++ b/statsmodels/sandbox/examples/ex_random_panel.py @@ -0,0 +1,151 @@ +# -*- coding: utf-8 -*- +""" + +Created on Fri May 18 13:05:47 2012 + +Author: Josef Perktold + +moved example from main of random_panel +""" + +import numpy as np +from statsmodels.sandbox.panel.panel_short import ShortPanelGLS, ShortPanelGLS2 +from statsmodels.sandbox.panel.random_panel import PanelSample +import statsmodels.sandbox.panel.correlation_structures as cs + +import statsmodels.stats.sandwich_covariance as sw +#from statsmodels.stats.sandwich_covariance import ( +# S_hac_groupsum, weights_bartlett, _HCCM2) +from statsmodels.stats.moment_helpers import se_cov +cov_nw_panel2 = sw.cov_nw_groupsum + + +examples = ['ex1'] + + +if 'ex1' in examples: + nobs = 100 + nobs_i = 5 + n_groups = nobs // nobs_i + k_vars = 3 + +# dgp = PanelSample(nobs, k_vars, n_groups, corr_structure=cs.corr_equi, +# corr_args=(0.6,)) +# dgp = PanelSample(nobs, k_vars, n_groups, corr_structure=cs.corr_ar, +# corr_args=([1, -0.95],)) + dgp = PanelSample(nobs, k_vars, n_groups, corr_structure=cs.corr_arma, + corr_args=([1], [1., -0.9],), seed=377769) + print('seed', dgp.seed) + y = dgp.generate_panel() + noise = y - dgp.y_true + print(np.corrcoef(y.reshape(-1,n_groups, order='F'))) + print(np.corrcoef(noise.reshape(-1,n_groups, order='F'))) + + mod = ShortPanelGLS2(y, dgp.exog, dgp.groups) + res = mod.fit() + print(res.params) + print(res.bse) + #Now what? + #res.resid is of transformed model + #np.corrcoef(res.resid.reshape(-1,n_groups, order='F')) + y_pred = np.dot(mod.exog, res.params) + resid = y - y_pred + print(np.corrcoef(resid.reshape(-1,n_groups, order='F'))) + print(resid.std()) + err = y_pred - dgp.y_true + print(err.std()) + #OLS standard errors are too small + mod.res_pooled.params + mod.res_pooled.bse + #heteroscedasticity robust doesn't help + mod.res_pooled.HC1_se + #compare with cluster robust se + + print(sw.se_cov(sw.cov_cluster(mod.res_pooled, dgp.groups.astype(int)))) + #not bad, pretty close to panel estimator + #and with Newey-West Hac + print(sw.se_cov(sw.cov_nw_panel(mod.res_pooled, 4, mod.group.groupidx))) + #too small, assuming no bugs, + #see Peterson assuming it refers to same kind of model + print(dgp.cov) + + mod2 = ShortPanelGLS(y, dgp.exog, dgp.groups) + res2 = mod2.fit_iterative(2) + print(res2.params) + print(res2.bse) + #both implementations produce the same results: + from numpy.testing import assert_almost_equal + assert_almost_equal(res.params, res2.params, decimal=12) + assert_almost_equal(res.bse, res2.bse, decimal=13) + mod5 = ShortPanelGLS(y, dgp.exog, dgp.groups) + res5 = mod5.fit_iterative(5) + print(res5.params) + print(res5.bse) + #fitting once is the same as OLS + #note: I need to create new instance, otherwise it continuous fitting + mod1 = ShortPanelGLS(y, dgp.exog, dgp.groups) + res1 = mod1.fit_iterative(1) + res_ols = mod1._fit_ols() + assert_almost_equal(res1.params, res_ols.params, decimal=12) + assert_almost_equal(res1.bse, res_ols.bse, decimal=13) + + #cov_hac_panel with uniform_kernel is the same as cov_cluster for balanced + #panel with full length kernel + #I fixe default correction to be equal + mod2._fit_ols() + cov_clu = sw.cov_cluster(mod2.res_pooled, dgp.groups.astype(int)) + clubse = se_cov(cov_clu) + cov_uni = sw.cov_nw_panel(mod2.res_pooled, 4, mod2.group.groupidx, + weights_func=sw.weights_uniform, + use_correction='cluster') + assert_almost_equal(cov_uni, cov_clu, decimal=7) + + #without correction + cov_clu2 = sw.cov_cluster(mod2.res_pooled, dgp.groups.astype(int), + use_correction=False) + cov_uni2 = sw.cov_nw_panel(mod2.res_pooled, 4, mod2.group.groupidx, + weights_func=sw.weights_uniform, + use_correction=False) + assert_almost_equal(cov_uni2, cov_clu2, decimal=8) + + cov_white = sw.cov_white_simple(mod2.res_pooled) + cov_pnw0 = sw.cov_nw_panel(mod2.res_pooled, 0, mod2.group.groupidx, + use_correction='hac') + assert_almost_equal(cov_pnw0, cov_white, decimal=13) + + time = np.tile(np.arange(nobs_i), n_groups) + #time = mod2.group.group_int + cov_pnw1 = sw.cov_nw_panel(mod2.res_pooled, 4, mod2.group.groupidx) + cov_pnw2 = cov_nw_panel2(mod2.res_pooled, 4, time) + #s = sw.group_sums(x, time) + + c2, ct, cg = sw.cov_cluster_2groups(mod2.res_pooled, time, dgp.groups.astype(int), use_correction=False) + ct_nw0 = cov_nw_panel2(mod2.res_pooled, 0, time, weights_func=sw.weights_uniform, use_correction=False) + cg_nw0 = cov_nw_panel2(mod2.res_pooled, 0, dgp.groups.astype(int), weights_func=sw.weights_uniform, use_correction=False) + assert_almost_equal(ct_nw0, ct, decimal=13) + assert_almost_equal(cg_nw0, cg, decimal=13) #pnw2 0 lags + assert_almost_equal(cov_clu2, cg, decimal=13) + assert_almost_equal(cov_uni2, cg, decimal=8) #pnw all lags + + + + + import pandas as pa + #pandas.DataFrame doesn't do inplace append + se = pa.DataFrame(res_ols.bse[None,:], index=['OLS']) + se = se.append(pa.DataFrame(res5.bse[None,:], index=['PGLSit5'])) + clbse = sw.se_cov(sw.cov_cluster(mod.res_pooled, dgp.groups.astype(int))) + se = se.append(pa.DataFrame(clbse[None,:], index=['OLSclu'])) + pnwse = sw.se_cov(sw.cov_nw_panel(mod.res_pooled, 4, mod.group.groupidx)) + se = se.append(pa.DataFrame(pnwse[None,:], index=['OLSpnw'])) + print(se) + #list(se.index) + from statsmodels.iolib.table import SimpleTable + headers = [str(i) for i in se.columns] + stubs=list(se.index) +# print SimpleTable(np.round(np.asarray(se), 4), +# headers=headers, +# stubs=stubs) + print(SimpleTable(np.asarray(se), headers=headers, stubs=stubs, + txt_fmt=dict(data_fmts=['%10.4f']), + title='Standard Errors')) diff --git a/statsmodels/sandbox/examples/example_crossval.py b/statsmodels/sandbox/examples/example_crossval.py new file mode 100644 index 0000000..3b12fdb --- /dev/null +++ b/statsmodels/sandbox/examples/example_crossval.py @@ -0,0 +1,63 @@ + +import numpy as np + +from statsmodels.sandbox.tools import cross_val + + +if __name__ == '__main__': + #A: josef-pktd + + import statsmodels.api as sm + #from statsmodels.datasets.longley import load + from statsmodels.datasets.stackloss import load + + data = load(as_pandas=False) + data.exog = sm.tools.add_constant(data.exog, prepend=False) + + resols = sm.OLS(data.endog, data.exog).fit() + + print('\n OLS leave 1 out') + for inidx, outidx in cross_val.LeaveOneOut(len(data.endog)): + res = sm.OLS(data.endog[inidx], data.exog[inidx,:]).fit() + print(data.endog[outidx], res.model.predict(res.params, data.exog[outidx,:], end=' ')) + print(data.endog[outidx] - res.model.predict(res.params, data.exog[outidx,:])) + + print('\n OLS leave 2 out') + resparams = [] + for inidx, outidx in cross_val.LeavePOut(len(data.endog), 2): + res = sm.OLS(data.endog[inidx], data.exog[inidx,:]).fit() + #print data.endog[outidx], res.model.predict(data.exog[outidx,:]), + #print ((data.endog[outidx] - res.model.predict(data.exog[outidx,:]))**2).sum() + resparams.append(res.params) + + resparams = np.array(resparams) + print(resparams) + + doplots = 1 + if doplots: + import matplotlib.pyplot as plt + from matplotlib.font_manager import FontProperties + + plt.figure() + figtitle = 'Leave2out parameter estimates' + + t = plt.gcf().text(0.5, + 0.95, figtitle, + horizontalalignment='center', + fontproperties=FontProperties(size=16)) + + for i in range(resparams.shape[1]): + plt.subplot(4, 2, i+1) + plt.hist(resparams[:,i], bins = 10) + #plt.title("Leave2out parameter estimates") + plt.show() + + + + + for inidx, outidx in cross_val.KStepAhead(20,2): + #note the following were broken because KStepAhead returns now a slice by default + print(inidx) + print(np.ones(20)[inidx].sum(), np.arange(20)[inidx][-4:]) + print(outidx) + print(np.nonzero(np.ones(20)[outidx])[0][()]) diff --git a/statsmodels/sandbox/examples/example_gam.py b/statsmodels/sandbox/examples/example_gam.py new file mode 100644 index 0000000..bb8422a --- /dev/null +++ b/statsmodels/sandbox/examples/example_gam.py @@ -0,0 +1,100 @@ +'''original example for checking how far GAM works + +Note: uncomment plt.show() to display graphs +''' + +import time + +import numpy as np +import numpy.random as R +import matplotlib.pyplot as plt +import scipy.stats + +from statsmodels.sandbox.gam import AdditiveModel +from statsmodels.sandbox.gam import Model as GAM #? +from statsmodels.genmod.families import family + +example = 2 # 1,2 or 3 + +standardize = lambda x: (x - x.mean()) / x.std() +demean = lambda x: (x - x.mean()) +nobs = 150 +x1 = R.standard_normal(nobs) +x1.sort() +x2 = R.standard_normal(nobs) +x2.sort() +y = R.standard_normal((nobs,)) + +f1 = lambda x1: (x1 + x1**2 - 3 - 1 * x1**3 + 0.1 * np.exp(-x1/4.)) +f2 = lambda x2: (x2 + x2**2 - 0.1 * np.exp(x2/4.)) +z = standardize(f1(x1)) + standardize(f2(x2)) +z = standardize(z) * 2 # 0.1 + +y += z +d = np.array([x1,x2]).T + + +if example == 1: + print("normal") + m = AdditiveModel(d) + m.fit(y) + x = np.linspace(-2,2,50) + + print(m) + + y_pred = m.results.predict(d) + plt.figure() + plt.plot(y, '.') + plt.plot(z, 'b-', label='true') + plt.plot(y_pred, 'r-', label='AdditiveModel') + plt.legend() + plt.title('gam.AdditiveModel') + + +if example == 2: + print("binomial") + f = family.Binomial() + b = np.asarray([scipy.stats.bernoulli.rvs(p) for p in f.link.inverse(y)]) + b.shape = y.shape + m = GAM(b, d, family=f) + toc = time.time() + m.fit(b) + tic = time.time() + print(tic-toc) + + +if example == 3: + print("Poisson") + f = family.Poisson() + y = y/y.max() * 3 + yp = f.link.inverse(y) + p = np.asarray([scipy.stats.poisson.rvs(p) for p in f.link.inverse(y)], float) + p.shape = y.shape + m = GAM(p, d, family=f) + toc = time.time() + m.fit(p) + tic = time.time() + print(tic-toc) + + +plt.figure() +plt.plot(x1, standardize(m.smoothers[0](x1)), 'r') +plt.plot(x1, standardize(f1(x1)), linewidth=2) +plt.figure() +plt.plot(x2, standardize(m.smoothers[1](x2)), 'r') +plt.plot(x2, standardize(f2(x2)), linewidth=2) + + + + +plt.show() + + + +## pylab.figure(num=1) +## pylab.plot(x1, standardize(m.smoothers[0](x1)), 'b') +## pylab.plot(x1, standardize(f1(x1)), linewidth=2) +## pylab.figure(num=2) +## pylab.plot(x2, standardize(m.smoothers[1](x2)), 'b') +## pylab.plot(x2, standardize(f2(x2)), linewidth=2) +## pylab.show() diff --git a/statsmodels/sandbox/examples/example_gam_0.py b/statsmodels/sandbox/examples/example_gam_0.py new file mode 100644 index 0000000..a1f842d --- /dev/null +++ b/statsmodels/sandbox/examples/example_gam_0.py @@ -0,0 +1,170 @@ +'''first examples for gam and PolynomialSmoother used for debugging + +This example was written as a test case. +The data generating process is chosen so the parameters are well identified +and estimated. + + +Note: uncomment plt.show() to display graphs +''' + +import time + +import numpy as np +from statsmodels.compat.python import zip +import numpy.random as R +import matplotlib.pyplot as plt +import scipy.stats + +from statsmodels.sandbox.gam import AdditiveModel +from statsmodels.sandbox.gam import Model as GAM #? +from statsmodels.genmod import families + + +example = 2 #3 # 1,2 or 3 + +#np.random.seed(987654) + +standardize = lambda x: (x - x.mean()) / x.std() +demean = lambda x: (x - x.mean()) +nobs = 500 +lb, ub = -1., 1. #for Poisson +#lb, ub = -0.75, 2 #0.75 #for Binomial +x1 = R.uniform(lb, ub, nobs) #R.standard_normal(nobs) +x1 = np.linspace(lb, ub, nobs) +x1.sort() +x2 = R.uniform(lb, ub, nobs) # +#x2 = R.standard_normal(nobs) +x2.sort() +#x2 = np.cos(x2) +x2 = x2 + np.exp(x2/2.) +#x2 = np.log(x2-x2.min()+0.1) +y = 0.5 * R.uniform(lb, ub, nobs) #R.standard_normal((nobs,)) + +f1 = lambda x1: (2*x1 - 0.5 * x1**2 - 0.75 * x1**3) # + 0.1 * np.exp(-x1/4.)) +f2 = lambda x2: (x2 - 1* x2**2) # - 0.75 * np.exp(x2)) +z = standardize(f1(x1)) + standardize(f2(x2)) +z = standardize(z) + 1 # 0.1 +#try this +z = f1(x1) + f2(x2) +#z = demean(z) +z -= np.median(z) +print('z.std()', z.std()) +#z = standardize(z) + 0.2 +# with standardize I get better values, but I don't know what the true params are +print(z.mean(), z.min(), z.max()) + +#y += z #noise +y = z + +d = np.array([x1,x2]).T + + +if example == 1: + print("normal") + m = AdditiveModel(d) + m.fit(y) + x = np.linspace(-2,2,50) + + print(m) + + +if example == 2: + print("binomial") + mod_name = 'Binomial' + f = families.Binomial() + #b = np.asarray([scipy.stats.bernoulli.rvs(p) for p in f.link.inverse(y)]) + b = np.asarray([scipy.stats.bernoulli.rvs(p) for p in f.link.inverse(z)]) + b.shape = y.shape + m = GAM(b, d, family=f) + toc = time.time() + m.fit(b) + tic = time.time() + print(tic-toc) + #for plotting + yp = f.link.inverse(y) + p = b + + +if example == 3: + print("Poisson") + f = families.Poisson() + #y = y/y.max() * 3 + yp = f.link.inverse(z) + p = np.asarray([scipy.stats.poisson.rvs(val) for val in f.link.inverse(z)], + float) + p.shape = y.shape + m = GAM(p, d, family=f) + toc = time.time() + m.fit(p) + tic = time.time() + print(tic-toc) + +if example > 1: + y_pred = m.results.mu# + m.results.alpha#m.results.predict(d) + plt.figure() + plt.subplot(2,2,1) + plt.plot(p, '.') + plt.plot(yp, 'b-', label='true') + plt.plot(y_pred, 'r-', label='GAM') + plt.legend(loc='upper left') + plt.title('gam.GAM ' + mod_name) + + counter = 2 + for ii, xx in zip(['z', 'x1', 'x2'], [z, x1, x2]): + sortidx = np.argsort(xx) + #plt.figure() + plt.subplot(2, 2, counter) + plt.plot(xx[sortidx], p[sortidx], '.') + plt.plot(xx[sortidx], yp[sortidx], 'b.', label='true') + plt.plot(xx[sortidx], y_pred[sortidx], 'r.', label='GAM') + plt.legend(loc='upper left') + plt.title('gam.GAM ' + mod_name + ' ' + ii) + counter += 1 + +# counter = 2 +# for ii, xx in zip(['z', 'x1', 'x2'], [z, x1, x2]): +# #plt.figure() +# plt.subplot(2, 2, counter) +# plt.plot(xx, p, '.') +# plt.plot(xx, yp, 'b-', label='true') +# plt.plot(xx, y_pred, 'r-', label='GAM') +# plt.legend(loc='upper left') +# plt.title('gam.GAM Poisson ' + ii) +# counter += 1 + + plt.figure() + plt.plot(z, 'b-', label='true' ) + plt.plot(np.log(m.results.mu), 'r-', label='GAM') + plt.title('GAM Poisson, raw') + + +plt.figure() +plt.plot(x1, standardize(m.smoothers[0](x1)), 'r') +plt.plot(x1, standardize(f1(x1)), linewidth=2) +plt.figure() +plt.plot(x2, standardize(m.smoothers[1](x2)), 'r') +plt.plot(x2, standardize(f2(x2)), linewidth=2) + +##y_pred = m.results.predict(d) +##plt.figure() +##plt.plot(z, p, '.') +##plt.plot(z, yp, 'b-', label='true') +##plt.plot(z, y_pred, 'r-', label='AdditiveModel') +##plt.legend() +##plt.title('gam.AdditiveModel') + + + + +#plt.show() + + + +## pylab.figure(num=1) +## pylab.plot(x1, standardize(m.smoothers[0](x1)), 'b') +## pylab.plot(x1, standardize(f1(x1)), linewidth=2) +## pylab.figure(num=2) +## pylab.plot(x2, standardize(m.smoothers[1](x2)), 'b') +## pylab.plot(x2, standardize(f2(x2)), linewidth=2) +## pylab.show() diff --git a/statsmodels/sandbox/examples/example_garch.py b/statsmodels/sandbox/examples/example_garch.py new file mode 100644 index 0000000..f23d196 --- /dev/null +++ b/statsmodels/sandbox/examples/example_garch.py @@ -0,0 +1,62 @@ +import numpy as np + +from statsmodels.sandbox.tsa.garch import Garch, garchplot, Garch0, optimize, loglikeGARCH11 + +#dta2 = ts.tsfromtxt(r'gspc_table.csv', +# datecols=0, skiprows=0, delimiter=',',names=True, freq='D') + +#print dta2 + +aa=np.genfromtxt(r'gspc_table.csv', skip_header=0, delimiter=',', names=True) + +cl = aa['Close'] +ret = np.diff(np.log(cl))[-2000:]*1000. + +ggmod = Garch(ret - ret.mean())#hgjr4[:nobs])#-hgjr4.mean()) #errgjr4) +ggmod.nar = 1 +ggmod.nma = 1 +ggmod._start_params = np.array([-0.1, 0.1, 0.1, 0.1]) +ggres = ggmod.fit(start_params=np.array([-0.1, 0.1, 0.1, 0.0]), + maxiter=1000,method='bfgs') +print('ggres.params', ggres.params) +garchplot(ggmod.errorsest, ggmod.h, title='Garch estimated') + +use_rpy = False +if use_rpy: + from rpy import r + r.library('fGarch') + f = r.formula('~garch(1, 1)') + fit = r.garchFit(f, data = ret - ret.mean(), include_mean=False) + f = r.formula('~arma(1,1) + ~garch(1, 1)') + fit = r.garchFit(f, data = ret) + + +ggmod0 = Garch0(ret - ret.mean())#hgjr4[:nobs])#-hgjr4.mean()) #errgjr4) +ggmod0.nar = 1 +ggmod.nma = 1 +start_params = np.array([-0.1, 0.1, ret.var()]) +ggmod0._start_params = start_params #np.array([-0.6, 0.1, 0.2, 0.0]) +ggres0 = ggmod0.fit(start_params=start_params, maxiter=2000) +print('ggres0.params', ggres0.params) + +g11res = optimize.fmin(lambda params: -loglikeGARCH11(params, ret - ret.mean())[0], [0.01, 0.1, 0.1]) +print(g11res) +llf = loglikeGARCH11(g11res, ret - ret.mean()) +print(llf[0]) + + +ggmod0 = Garch0(ret - ret.mean())#hgjr4[:nobs])#-hgjr4.mean()) #errgjr4) +ggmod0.nar = 2 +ggmod.nma = 2 +start_params = np.array([-0.1,-0.1, 0.1, 0.1, ret.var()]) +ggmod0._start_params = start_params #np.array([-0.6, 0.1, 0.2, 0.0]) +ggres0 = ggmod0.fit(start_params=start_params, maxiter=2000)#, method='ncg') +print('ggres0.params', ggres0.params) + +ggmod = Garch(ret - ret.mean())#hgjr4[:nobs])#-hgjr4.mean()) #errgjr4) +ggmod.nar = 2 +ggmod.nma = 2 +start_params = np.array([-0.1,-0.1, 0.1, 0.1, 0.1, 0.1, 0.1]) +ggmod._start_params = start_params +ggres = ggmod.fit(start_params=start_params, maxiter=1000)#,method='bfgs') +print('ggres.params', ggres.params) diff --git a/statsmodels/sandbox/examples/example_maxent.py b/statsmodels/sandbox/examples/example_maxent.py new file mode 100644 index 0000000..d161400 --- /dev/null +++ b/statsmodels/sandbox/examples/example_maxent.py @@ -0,0 +1,48 @@ +""" +This is an example of using scipy.maxentropy to solve Jaynes' dice problem + +See Golan, Judge, and Miller Section 2.3 +""" + +from scipy import maxentropy +import numpy as np + +samplespace = [1., 2., 3., 4., 5., 6.] +def sump(x): + return x in samplespace + +def meanp(x): + return np.mean(x) +# Set the constraints +# 1) We have a proper probability +# 2) The mean is equal to... +F = [sump, meanp] +model = maxentropy.model(F, samplespace) + +# set the desired feature expectations +K = np.ones((5,2)) +K[:,1] = [2.,3.,3.5,4.,5.] + +model.verbose = False + +for i in range(K.shape[0]): + model.fit(K[i]) + + # Output the distribution + print("\nFitted model parameters are:\n" + str(model.params)) + print("\nFitted distribution is:") + p = model.probdist() + for j in range(len(model.samplespace)): + x = model.samplespace[j] + print("y = %-15s\tx = %-15s" %(str(K[i,1])+":",str(x) + ":") + \ + " p(x) = "+str(p[j])) + + # Now show how well the constraints are satisfied: + print() + print("Desired constraints:") + print("\tsum_{i}p_{i}= 1") + print("\tE[X] = %-15s" % str(K[i,1])) + print() + print("Actual expectations under the fitted model:") + print("\tsum_{i}p_{i} =", np.sum(p)) + print("\tE[X] = " + str(np.sum(p*np.arange(1,7)))) diff --git a/statsmodels/sandbox/examples/example_mle.py b/statsmodels/sandbox/examples/example_mle.py new file mode 100644 index 0000000..f013b6f --- /dev/null +++ b/statsmodels/sandbox/examples/example_mle.py @@ -0,0 +1,69 @@ +'''Examples to compare MLE with OLS + +TODO: compare standard error of parameter estimates +''' + +from scipy import optimize +import numpy as np + +import statsmodels.api as sm +from statsmodels.datasets.longley import load + + +print('\nExample 1: Artificial Data') +print('--------------------------\n') + +np.random.seed(54321) +X = np.random.rand(40,2) +X = sm.add_constant(X, prepend=False) +beta = np.array((3.5, 5.7, 150)) +Y = np.dot(X,beta) + np.random.standard_normal(40) +mod2 = sm.OLS(Y,X) +res2 = mod2.fit() +f2 = lambda params: -1*mod2.loglike(params) +resfmin = optimize.fmin(f2, np.ones(3), ftol=1e-10) +print('OLS') +print(res2.params) +print('MLE') +print(resfmin) + + + +print('\nExample 2: Longley Data, high multicollinearity') +print('-----------------------------------------------\n') + +data = load(as_pandas=False) +data.exog = sm.add_constant(data.exog, prepend=False) +mod = sm.OLS(data.endog, data.exog) +f = lambda params: -1*mod.loglike(params) +score = lambda params: -1*mod.score(params) + +#now you're set up to try and minimize or root find, but I couldn't get this one to work +#note that if you want to get the results, it's also a property of mod, so you can do + +res = mod.fit() +#print mod.results.params +print('OLS') +print(res.params) +print('MLE') +#resfmin2 = optimize.fmin(f, mod.results.params*0.9, maxfun=5000, maxiter=5000, xtol=1e-10, ftol= 1e-10) +resfmin2 = optimize.fmin(f, np.ones(7), maxfun=5000, maxiter=5000, xtol=1e-10, ftol= 1e-10) +print(resfmin2) +# there isn't a unique solution? Is this due to the multicollinearity? Improved with use of analytically +# defined score function? + +#check X'X matrix +xtxi = np.linalg.inv(np.dot(data.exog.T,data.exog)) +eval, evec = np.linalg.eig(xtxi) +print('Eigenvalues') +print(eval) +# look at correlation +print('correlation matrix') +print(np.corrcoef(data.exog[:,:-1], rowvar=0)) #exclude constant +# --> conclusion high multicollinearity + +# compare +print('with matrix formula') +print(np.dot(xtxi,np.dot(data.exog.T, data.endog[:,np.newaxis])).ravel()) +print('with pinv') +print(np.dot(np.linalg.pinv(data.exog), data.endog[:,np.newaxis]).ravel()) diff --git a/statsmodels/sandbox/examples/example_nbin.py b/statsmodels/sandbox/examples/example_nbin.py new file mode 100644 index 0000000..d5bf64f --- /dev/null +++ b/statsmodels/sandbox/examples/example_nbin.py @@ -0,0 +1,378 @@ +# -*- coding: utf-8 -*- +''' +Author: Vincent Arel-Bundock +Date: 2012-08-25 + +This example file implements 5 variations of the negative binomial regression +model for count data: NB-P, NB-1, NB-2, geometric and left-truncated. + +The NBin class inherits from the GenericMaximumLikelihood statsmodels class +which provides automatic numerical differentiation for the score and hessian. + +NB-1, NB-2 and geometric are implemented as special cases of the NB-P model +described in Greene (2008) Functional forms for the negative binomial model for +count data. Economics Letters, v99n3. + +Tests are included to check how NB-1, NB-2 and geometric coefficient estimates +compare to equivalent models in R. Results usually agree up to the 4th digit. + +The NB-P and left-truncated model results have not been compared to other +implementations. Note that NB-P appears to only have been implemented in the +LIMDEP software. +''' + +import numpy as np +from numpy.testing import assert_almost_equal +from scipy.special import digamma +from scipy.stats import nbinom +import pandas +import patsy + +from statsmodels.compat.python import urlopen +from statsmodels.base.model import GenericLikelihoodModel +from statsmodels.base.model import GenericLikelihoodModelResults + + +#### Negative Binomial Log-likelihoods #### +def _ll_nbp(y, X, beta, alph, Q): + r''' + Negative Binomial Log-likelihood -- type P + + References: + + Greene, W. 2008. "Functional forms for the negtive binomial model + for count data". Economics Letters. Volume 99, Number 3, pp.585-590. + Hilbe, J.M. 2011. "Negative binomial regression". Cambridge University Press. + + Following notation in Greene (2008), with negative binomial heterogeneity + parameter :math:`\alpha`: + + .. math:: + + \lambda_i = exp(X\beta)\\ + \theta = 1 / \alpha \\ + g_i = \theta \lambda_i^Q \\ + w_i = g_i/(g_i + \lambda_i) \\ + r_i = \theta / (\theta+\lambda_i) \\ + ln \mathcal{L}_i = ln \Gamma(y_i+g_i) - ln \Gamma(1+y_i) + g_iln (r_i) + y_i ln(1-r_i) + ''' + mu = np.exp(np.dot(X, beta)) + size = 1/alph*mu**Q + prob = size/(size+mu) + ll = nbinom.logpmf(y, size, prob) + return ll + + +def _ll_nb1(y, X, beta, alph): + '''Negative Binomial regression (type 1 likelihood)''' + ll = _ll_nbp(y, X, beta, alph, Q=1) + return ll + + +def _ll_nb2(y, X, beta, alph): + '''Negative Binomial regression (type 2 likelihood)''' + ll = _ll_nbp(y, X, beta, alph, Q=0) + return ll + + +def _ll_geom(y, X, beta): + '''Geometric regression''' + ll = _ll_nbp(y, X, beta, alph=1, Q=0) + return ll + + +def _ll_nbt(y, X, beta, alph, C=0): + r''' + Negative Binomial (truncated) + + Truncated densities for count models (Cameron & Trivedi, 2005, 680): + + .. math:: + + f(y|\beta, y \geq C+1) = \frac{f(y|\beta)}{1-F(C|\beta)} + ''' + Q = 0 + mu = np.exp(np.dot(X, beta)) + size = 1/alph*mu**Q + prob = size/(size+mu) + ll = nbinom.logpmf(y, size, prob) - np.log(1 - nbinom.cdf(C, size, prob)) + return ll + + +#### Model Classes #### +class NBin(GenericLikelihoodModel): + ''' + Negative Binomial regression + + Parameters + ---------- + endog : array-like + 1-d array of the response variable. + exog : array-like + `exog` is an n x p array where n is the number of observations and p + is the number of regressors including the intercept if one is + included in the data. + ll_type: string + log-likelihood type + `nb2`: Negative Binomial type-2 (most common) + `nb1`: Negative Binomial type-1 + `nbp`: Negative Binomial type-P (Greene, 2008) + `nbt`: Left-truncated Negative Binomial (type-2) + `geom`: Geometric regression model + C: integer + Cut-point for `nbt` model + ''' + def __init__(self, endog, exog, ll_type='nb2', C=0, **kwds): + self.exog = np.array(exog) + self.endog = np.array(endog) + self.C = C + super(NBin, self).__init__(endog, exog, **kwds) + # Check user input + if ll_type not in ['nb2', 'nb1', 'nbp', 'nbt', 'geom']: + raise NameError('Valid ll_type are: nb2, nb1, nbp, nbt, geom') + self.ll_type = ll_type + # Starting values (assumes first column of exog is constant) + if ll_type == 'geom': + self.start_params_default = np.zeros(self.exog.shape[1]) + elif ll_type == 'nbp': + # Greene recommends starting NB-P at NB-2 + start_mod = NBin(endog, exog, 'nb2') + start_res = start_mod.fit(disp=False) + self.start_params_default = np.append(start_res.params, 0) + else: + self.start_params_default = np.append(np.zeros(self.exog.shape[1]), .5) + self.start_params_default[0] = np.log(self.endog.mean()) + # Define loglik based on ll_type argument + if ll_type == 'nb1': + self.ll_func = _ll_nb1 + elif ll_type == 'nb2': + self.ll_func = _ll_nb2 + elif ll_type == 'geom': + self.ll_func = _ll_geom + elif ll_type == 'nbp': + self.ll_func = _ll_nbp + elif ll_type == 'nbt': + self.ll_func = _ll_nbt + + def nloglikeobs(self, params): + alph = params[-1] + beta = params[:self.exog.shape[1]] + if self.ll_type == 'geom': + return -self.ll_func(self.endog, self.exog, beta) + elif self.ll_type == 'nbt': + return -self.ll_func(self.endog, self.exog, beta, alph, self.C) + elif self.ll_type == 'nbp': + Q = params[-2] + return -self.ll_func(self.endog, self.exog, beta, alph, Q) + else: + return -self.ll_func(self.endog, self.exog, beta, alph) + + def fit(self, start_params=None, maxiter=10000, maxfun=5000, **kwds): + if start_params is None: + countfit = super(NBin, self).fit(start_params=self.start_params_default, + maxiter=maxiter, maxfun=maxfun, **kwds) + else: + countfit = super(NBin, self).fit(start_params=start_params, + maxiter=maxiter, maxfun=maxfun, **kwds) + countfit = CountResults(self, countfit) + return countfit + + +class CountResults(GenericLikelihoodModelResults): + def __init__(self, model, mlefit): + self.model = model + self.__dict__.update(mlefit.__dict__) + def summary(self, yname=None, xname=None, title=None, alpha=.05, + yname_list=None): + top_left = [('Dep. Variable:', None), + ('Model:', [self.model.__class__.__name__]), + ('Method:', ['MLE']), + ('Date:', None), + ('Time:', None), + ('Converged:', ["%s" % self.mle_retvals['converged']])] + top_right = [('No. Observations:', None), + ('Log-Likelihood:', None), + ] + if title is None: + title = self.model.__class__.__name__ + ' ' + "Regression Results" + #boiler plate + from statsmodels.iolib.summary import Summary + smry = Summary() + # for top of table + smry.add_table_2cols(self, gleft=top_left, gright=top_right, #[], + yname=yname, xname=xname, title=title) + # for parameters, etc + smry.add_table_params(self, yname=yname_list, xname=xname, alpha=alpha, + use_t=True) + return smry + + +#### Score function for NB-P #### + + +def _score_nbp(y, X, beta, thet, Q): + r''' + Negative Binomial Score -- type P likelihood from Greene (2007) + .. math:: + + \lambda_i = exp(X\beta)\\ + g_i = \theta \lambda_i^Q \\ + w_i = g_i/(g_i + \lambda_i) \\ + r_i = \theta / (\theta+\lambda_i) \\ + A_i = \left [ \Psi(y_i+g_i) - \Psi(g_i) + ln w_i \right ] \\ + B_i = \left [ g_i (1-w_i) - y_iw_i \right ] \\ + \partial ln \mathcal{L}_i / \partial + \begin{pmatrix} \lambda_i \\ \theta \\ Q \end{pmatrix}= + [A_i+B_i] + \begin{pmatrix} Q/\lambda_i \\ 1/\theta \\ ln(\lambda_i) \end{pmatrix} + -B_i + \begin{pmatrix} 1/\lambda_i\\ 0 \\ 0 \end{pmatrix} \\ + \frac{\partial \lambda}{\partial \beta} = \lambda_i \mathbf{x}_i \\ + \frac{\partial \mathcal{L}_i}{\partial \beta} = + \left (\frac{\partial\mathcal{L}_i}{\partial \lambda_i} \right ) + \frac{\partial \lambda_i}{\partial \beta} + ''' + lamb = np.exp(np.dot(X, beta)) + g = thet * lamb**Q + w = g / (g + lamb) + r = thet / (thet+lamb) + A = digamma(y+g) - digamma(g) + np.log(w) + B = g*(1-w) - y*w + dl = (A+B) * Q/lamb - B * 1/lamb + dt = (A+B) * 1/thet + dq = (A+B) * np.log(lamb) + db = X * (dl * lamb)[:,np.newaxis] + sc = np.array([dt.sum(), dq.sum()]) + sc = np.concatenate([db.sum(axis=0), sc]) + return sc + + +#### Tests #### +medpar = pandas.read_csv(urlopen('https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/csv/COUNT/medpar.csv')) +mdvis = pandas.read_csv(urlopen('https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/csv/COUNT/mdvis.csv')) + +# NB-2 +''' +# R v2.15.1 +library(MASS) +library(COUNT) +data(medpar) +f <- los~factor(type)+hmo+white +mod <- glm.nb(f, medpar) +summary(mod) +Call: +glm.nb(formula = f, data = medpar, init.theta = 2.243376203, + link = log) + +Deviance Residuals: + Min 1Q Median 3Q Max +-2.4671 -0.9090 -0.2693 0.4320 3.8668 + +Coefficients: + Estimate Std. Error z value Pr(>|z|) +(Intercept) 2.31028 0.06745 34.253 < 2e-16 *** +factor(type)2 0.22125 0.05046 4.385 1.16e-05 *** +factor(type)3 0.70616 0.07600 9.292 < 2e-16 *** +hmo -0.06796 0.05321 -1.277 0.202 +white -0.12907 0.06836 -1.888 0.059 . +--- +Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 + +(Dispersion parameter for Negative Binomial(2.2434) family taken to be 1) + + Null deviance: 1691.1 on 1494 degrees of freedom +Residual deviance: 1568.1 on 1490 degrees of freedom +AIC: 9607 + +Number of Fisher Scoring iterations: 1 + + + Theta: 2.2434 + Std. Err.: 0.0997 + + 2 x log-likelihood: -9594.9530 +''' + +def test_nb2(): + y, X = patsy.dmatrices('los ~ C(type) + hmo + white', medpar) + y = np.array(y)[:,0] + nb2 = NBin(y,X,'nb2').fit(maxiter=10000, maxfun=5000) + assert_almost_equal(nb2.params, + [2.31027893349935, 0.221248978197356, 0.706158824346228, + -0.067955221930748, -0.129065442248951, 0.4457567], + decimal=2) + +# NB-1 +''' +# R v2.15.1 +# COUNT v1.2.3 +library(COUNT) +data(medpar) +f <- los~factor(type)+hmo+white +ml.nb1(f, medpar) + + Estimate SE Z LCL UCL +(Intercept) 2.34918407 0.06023641 38.9994023 2.23112070 2.46724744 +factor(type)2 0.16175471 0.04585569 3.5274735 0.07187757 0.25163186 +factor(type)3 0.41879257 0.06553258 6.3906006 0.29034871 0.54723643 +hmo -0.04533566 0.05004714 -0.9058592 -0.14342805 0.05275673 +white -0.12951295 0.06071130 -2.1332593 -0.24850710 -0.01051880 +alpha 4.57898241 0.22015968 20.7984603 4.14746943 5.01049539 +''' + +#def test_nb1(): + #y, X = patsy.dmatrices('los ~ C(type) + hmo + white', medpar) + #y = np.array(y)[:,0] + ## TODO: Test fails with some of the other optimization methods + #nb1 = NBin(y,X,'nb1').fit(method='ncg', maxiter=10000, maxfun=5000) + #assert_almost_equal(nb1.params, + #[2.34918407014186, 0.161754714412848, 0.418792569970658, + # -0.0453356614650342, -0.129512952033423, 4.57898241219275], + #decimal=2) + +# NB-Geometric +''' +MASS v7.3-20 +R v2.15.1 +library(MASS) +data(medpar) +f <- los~factor(type)+hmo+white +mod <- glm(f, family=negative.binomial(1), data=medpar) +summary(mod) +Call: +glm(formula = f, family = negative.binomial(1), data = medpar) + +Deviance Residuals: + Min 1Q Median 3Q Max +-1.7942 -0.6545 -0.1896 0.3044 2.6844 + +Coefficients: + Estimate Std. Error t value Pr(>|t|) +(Intercept) 2.30849 0.07071 32.649 < 2e-16 *** +factor(type)2 0.22121 0.05283 4.187 2.99e-05 *** +factor(type)3 0.70599 0.08092 8.724 < 2e-16 *** +hmo -0.06779 0.05521 -1.228 0.2197 +white -0.12709 0.07169 -1.773 0.0765 . +--- +Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 + +(Dispersion parameter for Negative Binomial(1) family taken to be 0.5409721) + + Null deviance: 872.29 on 1494 degrees of freedom +Residual deviance: 811.95 on 1490 degrees of freedom +AIC: 9927.3 + +Number of Fisher Scoring iterations: 5 +''' + +#def test_geom(): + #y, X = patsy.dmatrices('los ~ C(type) + hmo + white', medpar) + #y = np.array(y)[:,0] + ## TODO: remove alph from geom params + #geom = NBin(y,X,'geom').fit(maxiter=10000, maxfun=5000) + #assert_almost_equal(geom.params, + #[2.3084850946241, 0.221206159108742, 0.705986369841159, + # -0.0677871843613577, -0.127088772164963], + #decimal=4) + +test_nb2() diff --git a/statsmodels/sandbox/examples/example_pca.py b/statsmodels/sandbox/examples/example_pca.py new file mode 100644 index 0000000..2d32c25 --- /dev/null +++ b/statsmodels/sandbox/examples/example_pca.py @@ -0,0 +1,21 @@ +#!/usr/bin/env python + +import numpy as np +from statsmodels.sandbox.pca import Pca + +x=np.random.randn(1000) +y=x*2.3+5+np.random.randn(1000) +z=x*3.1+2.1*y+np.random.randn(1000)/2 + +#create the Pca object - requires a p x N array as the input +p=Pca((x,y,z)) +print('energies:',p.getEnergies()) +print('vecs:',p.getEigenvectors()) +print('projected data',p.project(vals=np.ones((3,10)))) + + +#p.plot2d() #requires matplotlib +#from matplotlib import pyplot as plt +#plt.show() #necessary for script + +#p.plot3d() #requires mayavi diff --git a/statsmodels/sandbox/examples/example_pca_regression.py b/statsmodels/sandbox/examples/example_pca_regression.py new file mode 100644 index 0000000..4927db5 --- /dev/null +++ b/statsmodels/sandbox/examples/example_pca_regression.py @@ -0,0 +1,104 @@ +'''Example: Principal Component Regression + +* simulate model with 2 factors and 4 explanatory variables +* use pca to extract factors from data, +* run OLS on factors, +* use information criteria to choose "best" model + +Warning: pca sorts factors by explaining variance in explanatory variables, +which are not necessarily the most important factors for explaining the +endogenous variable. + +# try out partial correlation for dropping (or adding) factors +# get algorithm for partial least squares as an alternative to PCR + +''' + + +import numpy as np +import statsmodels.api as sm +from statsmodels.iolib.table import SimpleTable +from statsmodels.sandbox.tools import pca +from statsmodels.sandbox.tools.cross_val import LeaveOneOut + + +# Example: principal component regression +nobs = 1000 +f0 = np.c_[np.random.normal(size=(nobs,2)), np.ones((nobs,1))] +f2xcoef = np.c_[np.repeat(np.eye(2),2,0),np.arange(4)[::-1]].T +f2xcoef = np.array([[ 1., 1., 0., 0.], + [ 0., 0., 1., 1.], + [ 3., 2., 1., 0.]]) +f2xcoef = np.array([[ 0.1, 3., 1., 0.], + [ 0., 0., 1.5, 0.1], + [ 3., 2., 1., 0.]]) +x0 = np.dot(f0, f2xcoef) +x0 += 0.1*np.random.normal(size=x0.shape) +ytrue = np.dot(f0,[1., 1., 1.]) +y0 = ytrue + 0.1*np.random.normal(size=ytrue.shape) + +xred, fact, eva, eve = pca(x0, keepdim=0) +print(eve) +print(fact[:5]) +print(f0[:5]) + +res = sm.OLS(y0, sm.add_constant(x0, prepend=False)).fit() +print('OLS on original data') +print(res.params) +print(res.aic) +print(res.rsquared) + +#print 'OLS on Factors' +#for k in range(x0.shape[1]): +# xred, fact, eva, eve = pca(x0, keepdim=k, normalize=1) +# fact_wconst = sm.add_constant(fact) +# res = sm.OLS(y0, fact_wconst).fit() +# print 'k =', k +# print res.params +# print 'aic: ', res.aic +# print 'bic: ', res.bic +# print 'llf: ', res.llf +# print 'R2 ', res.rsquared +# print 'R2 adj', res.rsquared_adj + +print('OLS on Factors') +results = [] +xred, fact, eva, eve = pca(x0, keepdim=0, normalize=1) +for k in range(0, x0.shape[1]+1): + #xred, fact, eva, eve = pca(x0, keepdim=k, normalize=1) + # this is faster and same result + fact_wconst = sm.add_constant(fact[:,:k], prepend=False) + res = sm.OLS(y0, fact_wconst).fit() +## print 'k =', k +## print res.params +## print 'aic: ', res.aic +## print 'bic: ', res.bic +## print 'llf: ', res.llf +## print 'R2 ', res.rsquared +## print 'R2 adj', res.rsquared_adj + prederr2 = 0. + for inidx, outidx in LeaveOneOut(len(y0)): + resl1o = sm.OLS(y0[inidx], fact_wconst[inidx,:]).fit() + #print data.endog[outidx], res.model.predict(data.exog[outidx,:]), + prederr2 += (y0[outidx] - resl1o.predict(fact_wconst[outidx,:]))**2. + results.append([k, res.aic, res.bic, res.rsquared_adj, prederr2]) + +results = np.array(results) +print(results) +print('best result for k, by AIC, BIC, R2_adj, L1O') +print(np.r_[(np.argmin(results[:,1:3],0), np.argmax(results[:,3],0), + np.argmin(results[:,-1],0))]) + + +headers = 'k, AIC, BIC, R2_adj, L1O'.split(', ') +numformat = ['%6d'] + ['%10.3f']*4 #'%10.4f' +txt_fmt1 = dict(data_fmts = numformat) +tabl = SimpleTable(results, headers, None, txt_fmt=txt_fmt1) + +print("PCA regression on simulated data,") +print("DGP: 2 factors and 4 explanatory variables") +print(tabl) +print("Notes: k is number of components of PCA,") +print(" constant is added additionally") +print(" k=0 means regression on constant only") +print(" L1O: sum of squared prediction errors for leave-one-out") diff --git a/statsmodels/sandbox/examples/example_sysreg.py b/statsmodels/sandbox/examples/example_sysreg.py new file mode 100644 index 0000000..aac8aba --- /dev/null +++ b/statsmodels/sandbox/examples/example_sysreg.py @@ -0,0 +1,207 @@ +"""Example: statsmodels.sandbox.sysreg +""" +#TODO: this is going to change significantly once we have a panel data structure +from statsmodels.compat.python import lmap, asbytes +import numpy as np +import statsmodels.api as sm +from statsmodels.sandbox.sysreg import SUR, Sem2SLS +from statsmodels.sandbox.regression.gmm import IV2SLS + +#for Python 3 compatibility + +# Seemingly Unrelated Regressions (SUR) Model + +# This example uses the subset of the Grunfeld data in Greene's Econometric +# Analysis Chapter 14 (5th Edition) + +grun_data = sm.datasets.grunfeld.load(as_pandas=False) + +firms = ['General Motors', 'Chrysler', 'General Electric', 'Westinghouse', + 'US Steel'] +#for Python 3 compatibility +firms = lmap(asbytes, firms) + +grun_exog = grun_data.exog +grun_endog = grun_data.endog + +# Right now takes SUR takes a list of arrays +# The array alternates between the LHS of an equation and RHS side of an +# equation +# This is very likely to change +grun_sys = [] +for i in firms: + index = grun_exog['firm'] == i + grun_sys.append(grun_endog[index]) + exog = grun_exog[index][['value','capital']].view(float).reshape(-1,2) + exog = sm.add_constant(exog, prepend=True) + grun_sys.append(exog) + +# Note that the results in Greene (5th edition) uses a slightly different +# version of the Grunfeld data. To reproduce Table 14.1 the following changes +# are necessary. +grun_sys[-2][5] = 261.6 +grun_sys[-2][-3] = 645.2 +grun_sys[-1][11,2] = 232.6 + +grun_mod = SUR(grun_sys) +grun_res = grun_mod.fit() +print("Results for the 2-step GLS") +print("Compare to Greene Table 14.1, 5th edition") +print(grun_res.params) +# or you can do an iterative fit +# you have to define a new model though this will be fixed +# TODO: note the above +print("Results for iterative GLS (equivalent to MLE)") +print("Compare to Greene Table 14.3") +#TODO: these are slightly off, could be a convergence issue +# or might use a different default DOF correction? +grun_imod = SUR(grun_sys) +grun_ires = grun_imod.fit(igls=True) +print(grun_ires.params) + +# Two-Stage Least Squares for Simultaneous Equations +#TODO: we are going to need *some kind* of formula framework + +# This follows the simple macroeconomic model given in +# Greene Example 15.1 (5th Edition) +# The data however is from statsmodels and is not the same as +# Greene's + +# The model is +# consumption: c_{t} = \alpha_{0} + \alpha_{1}y_{t} + \alpha_{2}c_{t-1} + \epsilon_{t1} +# investment: i_{t} = \beta_{0} + \beta_{1}r_{t} + \beta_{2}\left(y_{t}-y_{t-1}\right) + \epsilon_{t2} +# demand: y_{t} = c_{t} + I_{t} + g_{t} + +# See Greene's Econometric Analysis for more information + +# Load the data +macrodata = sm.datasets.macrodata.load(as_pandas=False).data + +# Not needed, but make sure the data is sorted +macrodata = np.sort(macrodata, order=['year','quarter']) + +# Impose the demand restriction +y = macrodata['realcons'] + macrodata['realinv'] + macrodata['realgovt'] + +# Build the system +macro_sys = [] +# First equation LHS +macro_sys.append(macrodata['realcons'][1:]) # leave off first date +# First equation RHS +exog1 = np.column_stack((y[1:],macrodata['realcons'][:-1])) +#TODO: it might be nice to have "lag" and "lead" functions +exog1 = sm.add_constant(exog1, prepend=True) +macro_sys.append(exog1) +# Second equation LHS +macro_sys.append(macrodata['realinv'][1:]) +# Second equation RHS +exog2 = np.column_stack((macrodata['tbilrate'][1:], np.diff(y))) +exog2 = sm.add_constant(exog2, prepend=True) +macro_sys.append(exog2) + +# We need to say that y_{t} in the RHS of equation 1 is an endogenous regressor +# We will call these independent endogenous variables +# Right now, we use a dictionary to declare these +indep_endog = {0 : [1]} + +# We also need to create a design of our instruments +# This will be done automatically in the future +instruments = np.column_stack((macrodata[['realgovt', + 'tbilrate']][1:].view(float).reshape(-1,2),macrodata['realcons'][:-1], + y[:-1])) +instruments = sm.add_constant(instruments, prepend=True) +macro_mod = Sem2SLS(macro_sys, indep_endog=indep_endog, instruments=instruments) +# Right now this only returns parameters +macro_params = macro_mod.fit() +print("The parameters for the first equation are correct.") +print("The parameters for the second equation are not.") +print(macro_params) + +#TODO: Note that the above is incorrect, because we have no way of telling the +# model that *part* of the y_{t} - y_{t-1} is an independent endogenous variable +# To correct for this we would have to do the following +y_instrumented = macro_mod.wexog[0][:,1] +whitened_ydiff = y_instrumented - y[:-1] +wexog = np.column_stack((macrodata['tbilrate'][1:],whitened_ydiff)) +wexog = sm.add_constant(wexog, prepend=True) +correct_params = sm.GLS(macrodata['realinv'][1:], wexog).fit().params + +print("If we correctly instrument everything, then these are the parameters") +print("for the second equation") +print(correct_params) +print("Compare to output of R script statsmodels/sandbox/tests/macrodata.s") + +print('\nUsing IV2SLS') +miv = IV2SLS(macro_sys[0], macro_sys[1], instruments) +resiv = miv.fit() +print("equation 1") +print(resiv.params) +miv2 = IV2SLS(macro_sys[2], macro_sys[3], instruments) +resiv2 = miv2.fit() +print("equation 2") +print(resiv2.params) + +### Below is the same example using Greene's data ### + +run_greene = 0 +if run_greene: + try: + data3 = np.genfromtxt('/home/skipper/school/MetricsII/Greene \ +TableF5-1.txt', names=True) + except: + raise ValueError("Based on Greene TableF5-1. You should download it " + "from his web site and edit this script accordingly.") + + # Example 15.1 in Greene 5th Edition +# c_t = constant + y_t + c_t-1 +# i_t = constant + r_t + (y_t - y_t-1) +# y_t = c_t + i_t + g_t + sys3 = [] + sys3.append(data3['realcons'][1:]) # have to leave off a beg. date +# impose 3rd equation on y + y = data3['realcons'] + data3['realinvs'] + data3['realgovt'] + + exog1 = np.column_stack((y[1:],data3['realcons'][:-1])) + exog1 = sm.add_constant(exog1, prepend=False) + sys3.append(exog1) + sys3.append(data3['realinvs'][1:]) + exog2 = np.column_stack((data3['tbilrate'][1:], + np.diff(y))) + # realint is missing 1st observation + exog2 = sm.add_constant(exog2, prepend=False) + sys3.append(exog2) + indep_endog = {0 : [0]} # need to be able to say that y_1 is an instrument.. + instruments = np.column_stack((data3[['realgovt', + 'tbilrate']][1:].view(float).reshape(-1,2),data3['realcons'][:-1], + y[:-1])) + instruments = sm.add_constant(instruments, prepend=False) + sem_mod = Sem2SLS(sys3, indep_endog = indep_endog, instruments=instruments) + sem_params = sem_mod.fit() # first equation is right, but not second? + # should y_t in the diff be instrumented? + # how would R know this in the script? + # well, let's check... + y_instr = sem_mod.wexog[0][:,0] + wyd = y_instr - y[:-1] + wexog = np.column_stack((data3['tbilrate'][1:],wyd)) + wexog = sm.add_constant(wexog, prepend=False) + params = sm.GLS(data3['realinvs'][1:], wexog).fit().params + + print("These are the simultaneous equation estimates for Greene's \ +example 13-1 (Also application 13-1 in 6th edition.") + print(sem_params) + print("The first set of parameters is correct. The second set is not.") + print("Compare to the solution manual at \ +http://pages.stern.nyu.edu/~wgreene/Text/econometricanalysis.htm") + print("The reason is the restriction on (y_t - y_1)") + print("Compare to R script GreeneEx15_1.s") + print("Somehow R carries y.1 in yd to know that it needs to be \ +instrumented") + print("If we replace our estimate with the instrumented one") + print(params) + print("We get the right estimate") + print("Without a formula framework we have to be able to do restrictions.") +# yep!, but how in the world does R know this when we just fed it yd?? +# must be implicit in the formula framework... +# we are going to need to keep the two equations separate and use +# a restrictions matrix. Ugh, is a formula framework really, necessary to get +# around this? diff --git a/statsmodels/sandbox/examples/gspc_table.csv b/statsmodels/sandbox/examples/gspc_table.csv new file mode 100644 index 0000000..92c1057 --- /dev/null +++ b/statsmodels/sandbox/examples/gspc_table.csv @@ -0,0 +1,15127 @@ +Date,Open,High,Low,Close,Volume,Adj Close +2010-02-12,1075.95,1077.81,1062.97,1075.51,4160680000,1075.51 +2010-02-11,1067.10,1080.04,1060.59,1078.47,4400870000,1078.47 +2010-02-10,1069.68,1073.67,1059.34,1068.13,4251450000,1068.13 +2010-02-09,1060.06,1079.28,1060.06,1070.52,5114260000,1070.52 +2010-02-08,1065.51,1071.20,1056.51,1056.74,4089820000,1056.74 +2010-02-05,1064.12,1067.13,1044.50,1066.19,6438900000,1066.19 +2010-02-04,1097.25,1097.25,1062.78,1063.11,5859690000,1063.11 +2010-02-03,1100.67,1102.72,1093.97,1097.28,4285450000,1097.28 +2010-02-02,1090.05,1104.73,1087.96,1103.32,4749540000,1103.32 +2010-02-01,1073.89,1089.38,1073.89,1089.19,4077610000,1089.19 +2010-01-29,1087.61,1096.45,1071.59,1073.87,5412850000,1073.87 +2010-01-28,1096.93,1100.22,1078.46,1084.53,5452400000,1084.53 +2010-01-27,1091.94,1099.51,1083.11,1097.50,5319120000,1097.50 +2010-01-26,1095.80,1103.69,1089.86,1092.17,4731910000,1092.17 +2010-01-25,1092.40,1102.97,1092.40,1096.78,4481390000,1096.78 +2010-01-22,1115.49,1115.49,1090.18,1091.76,6208650000,1091.76 +2010-01-21,1138.68,1141.58,1114.84,1116.48,6874289600,1116.48 +2010-01-20,1147.95,1147.95,1129.25,1138.04,4810560000,1138.04 +2010-01-19,1136.03,1150.45,1135.77,1150.23,4724830000,1150.23 +2010-01-15,1147.72,1147.77,1131.39,1136.03,4758730000,1136.03 +2010-01-14,1145.68,1150.41,1143.80,1148.46,3915200000,1148.46 +2010-01-13,1137.31,1148.40,1133.18,1145.68,4170360000,1145.68 +2010-01-12,1143.81,1143.81,1131.77,1136.22,4716160000,1136.22 +2010-01-11,1145.96,1149.74,1142.02,1146.98,4255780000,1146.98 +2010-01-08,1140.52,1145.39,1136.22,1144.98,4389590000,1144.98 +2010-01-07,1136.27,1142.46,1131.32,1141.69,5270680000,1141.69 +2010-01-06,1135.71,1139.19,1133.95,1137.14,4972660000,1137.14 +2010-01-05,1132.66,1136.63,1129.66,1136.52,2491020000,1136.52 +2010-01-04,1116.56,1133.87,1116.56,1132.99,3991400000,1132.99 +2009-12-31,1126.60,1127.64,1114.81,1115.10,2076990000,1115.10 +2009-12-30,1125.53,1126.42,1121.94,1126.42,2277300000,1126.42 +2009-12-29,1128.55,1130.38,1126.08,1126.20,2491020000,1126.20 +2009-12-28,1127.53,1130.38,1123.51,1127.78,2716400000,1127.78 +2009-12-24,1121.08,1126.48,1121.08,1126.48,1267710000,1126.48 +2009-12-23,1118.84,1121.58,1116.00,1120.59,3166870000,1120.59 +2009-12-22,1114.51,1120.27,1114.51,1118.02,3641130000,1118.02 +2009-12-21,1105.31,1117.68,1105.31,1114.05,3977340000,1114.05 +2009-12-18,1097.86,1103.74,1093.88,1102.47,6325890000,1102.47 +2009-12-17,1106.36,1106.36,1095.88,1096.08,7615070400,1096.08 +2009-12-16,1108.61,1116.21,1107.96,1109.18,4829820000,1109.18 +2009-12-15,1114.11,1114.11,1105.35,1107.93,5045100000,1107.93 +2009-12-14,1107.84,1114.76,1107.84,1114.11,4548490000,1114.11 +2009-12-11,1103.96,1108.50,1101.34,1106.41,3791090000,1106.41 +2009-12-10,1098.69,1106.25,1098.69,1102.35,3996490000,1102.35 +2009-12-09,1091.07,1097.04,1085.89,1095.95,4115410000,1095.95 +2009-12-08,1103.04,1103.04,1088.61,1091.94,4748030000,1091.94 +2009-12-07,1105.52,1110.72,1100.83,1103.25,4103360000,1103.25 +2009-12-04,1100.43,1119.13,1096.52,1105.98,5781140000,1105.98 +2009-12-03,1110.59,1117.28,1098.74,1099.92,4810030000,1099.92 +2009-12-02,1109.03,1115.58,1105.29,1109.24,3941340000,1109.24 +2009-12-01,1098.89,1112.28,1098.89,1108.86,4249310000,1108.86 +2009-11-30,1091.07,1097.24,1086.25,1095.63,3895520000,1095.63 +2009-11-27,1105.47,1105.47,1083.74,1091.49,2362910000,1091.49 +2009-11-25,1106.49,1111.18,1104.75,1110.63,3036350000,1110.63 +2009-11-24,1105.83,1107.56,1097.63,1105.65,3700820000,1105.65 +2009-11-23,1094.86,1112.38,1094.86,1106.24,3827920000,1106.24 +2009-11-20,1094.66,1094.66,1086.81,1091.38,3751230000,1091.38 +2009-11-19,1106.44,1106.44,1088.40,1094.90,4178030000,1094.90 +2009-11-18,1109.44,1111.10,1102.70,1109.80,4293340000,1109.80 +2009-11-17,1109.22,1110.52,1102.19,1110.32,3824070000,1110.32 +2009-11-16,1094.13,1113.69,1094.13,1109.30,4565850000,1109.30 +2009-11-13,1087.59,1097.79,1085.33,1093.48,3792610000,1093.48 +2009-11-12,1098.31,1101.97,1084.90,1087.24,4160250000,1087.24 +2009-11-11,1096.04,1105.37,1093.81,1098.51,4286700000,1098.51 +2009-11-10,1091.86,1096.42,1087.40,1093.01,4394770000,1093.01 +2009-11-09,1072.31,1093.19,1072.31,1093.08,4460030000,1093.08 +2009-11-06,1064.95,1071.48,1059.32,1069.30,4277130000,1069.30 +2009-11-05,1047.30,1066.65,1047.30,1066.63,4848350000,1066.63 +2009-11-04,1047.14,1061.00,1045.15,1046.50,5635510000,1046.50 +2009-11-03,1040.92,1046.36,1033.94,1045.41,5487500000,1045.41 +2009-11-02,1036.18,1052.18,1029.38,1042.88,6202640000,1042.88 +2009-10-30,1065.41,1065.41,1033.38,1036.19,6512420000,1036.19 +2009-10-29,1043.69,1066.83,1043.69,1066.11,5595040000,1066.11 +2009-10-28,1061.51,1063.26,1042.19,1042.63,6600350000,1042.63 +2009-10-27,1067.54,1072.48,1060.62,1063.41,5337380000,1063.41 +2009-10-26,1080.36,1091.75,1065.23,1066.95,6363380000,1066.95 +2009-10-23,1095.62,1095.83,1075.49,1079.60,4767460000,1079.60 +2009-10-22,1080.96,1095.21,1074.31,1092.91,5192410000,1092.91 +2009-10-21,1090.36,1101.36,1080.77,1081.40,5616290000,1081.40 +2009-10-20,1098.64,1098.64,1086.16,1091.06,5396930000,1091.06 +2009-10-19,1088.22,1100.17,1086.48,1097.91,4619240000,1097.91 +2009-10-16,1094.67,1094.67,1081.53,1087.68,4894740000,1087.68 +2009-10-15,1090.36,1096.56,1086.41,1096.56,5369780000,1096.56 +2009-10-14,1078.68,1093.17,1078.68,1092.02,5406420000,1092.02 +2009-10-13,1074.96,1075.30,1066.71,1073.19,4320480000,1073.19 +2009-10-12,1071.63,1079.46,1071.63,1076.19,3710430000,1076.19 +2009-10-09,1065.28,1071.51,1063.00,1071.49,3763780000,1071.49 +2009-10-08,1060.03,1070.67,1060.03,1065.48,4988400000,1065.48 +2009-10-07,1053.65,1058.02,1050.10,1057.58,4238220000,1057.58 +2009-10-06,1042.02,1060.55,1042.02,1054.72,5029840000,1054.72 +2009-10-05,1026.87,1042.58,1025.92,1040.46,4313310000,1040.46 +2009-10-02,1029.71,1030.60,1019.95,1025.21,5583240000,1025.21 +2009-10-01,1054.91,1054.91,1029.45,1029.85,5791450000,1029.85 +2009-09-30,1061.02,1063.40,1046.47,1057.08,5998860000,1057.08 +2009-09-29,1063.69,1069.62,1057.83,1060.61,4949900000,1060.61 +2009-09-28,1045.38,1065.13,1045.38,1062.98,3726950000,1062.98 +2009-09-25,1049.48,1053.47,1041.17,1044.38,4507090000,1044.38 +2009-09-24,1062.56,1066.29,1045.85,1050.78,5505610000,1050.78 +2009-09-23,1072.69,1080.15,1060.39,1060.87,5531930000,1060.87 +2009-09-22,1066.35,1073.81,1066.35,1071.66,5246600000,1071.66 +2009-09-21,1067.14,1067.28,1057.46,1064.66,4615280000,1064.66 +2009-09-18,1066.60,1071.52,1064.27,1068.30,5607970000,1068.30 +2009-09-17,1067.87,1074.77,1061.20,1065.49,6668110000,1065.49 +2009-09-16,1053.99,1068.76,1052.87,1068.76,6793529600,1068.76 +2009-09-15,1049.03,1056.04,1043.42,1052.63,6185620000,1052.63 +2009-09-14,1040.15,1049.74,1035.00,1049.34,4979610000,1049.34 +2009-09-11,1043.92,1048.18,1038.40,1042.73,4922600000,1042.73 +2009-09-10,1032.99,1044.14,1028.04,1044.14,5191380000,1044.14 +2009-09-09,1025.36,1036.34,1023.97,1033.37,5202550000,1033.37 +2009-09-08,1018.67,1026.07,1018.67,1025.39,5235160000,1025.39 +2009-09-04,1003.84,1016.48,1001.65,1016.40,4097370000,1016.40 +2009-09-03,996.12,1003.43,992.25,1003.24,4624280000,1003.24 +2009-09-02,996.07,1000.34,991.97,994.75,5842730000,994.75 +2009-09-01,1019.52,1028.45,996.28,998.04,6862360000,998.04 +2009-08-31,1025.21,1025.21,1014.62,1020.62,5004560000,1020.62 +2009-08-28,1031.62,1039.47,1023.13,1028.93,5785780000,1028.93 +2009-08-27,1027.81,1033.33,1016.20,1030.98,5785880000,1030.98 +2009-08-26,1027.35,1032.47,1021.57,1028.12,5080060000,1028.12 +2009-08-25,1026.63,1037.75,1026.21,1028.00,5768740000,1028.00 +2009-08-24,1026.59,1035.82,1022.48,1025.57,6302450000,1025.57 +2009-08-21,1009.06,1027.59,1009.06,1026.13,5885550000,1026.13 +2009-08-20,996.41,1008.92,996.39,1007.37,4893160000,1007.37 +2009-08-19,986.88,999.61,980.62,996.46,4257000000,996.46 +2009-08-18,980.62,991.20,980.62,989.67,4198970000,989.67 +2009-08-17,998.18,998.18,978.51,979.73,4088570000,979.73 +2009-08-14,1012.23,1012.60,994.60,1004.09,4940750000,1004.09 +2009-08-13,1005.86,1013.14,1000.82,1012.73,5250660000,1012.73 +2009-08-12,994.00,1012.78,993.36,1005.81,5498170000,1005.81 +2009-08-11,1005.77,1005.77,992.40,994.35,5773160000,994.35 +2009-08-10,1008.89,1010.12,1000.99,1007.10,5406080000,1007.10 +2009-08-07,999.83,1018.00,999.83,1010.48,6827089600,1010.48 +2009-08-06,1004.06,1008.00,992.49,997.08,6753380000,997.08 +2009-08-05,1005.41,1006.64,994.31,1002.72,7242120000,1002.72 +2009-08-04,1001.41,1007.12,996.68,1005.65,5713700000,1005.65 +2009-08-03,990.22,1003.61,990.22,1002.63,5603440000,1002.63 +2009-07-31,986.80,993.18,982.85,987.48,5139070000,987.48 +2009-07-30,976.01,996.68,976.01,986.75,6035180000,986.75 +2009-07-29,977.66,977.76,968.65,975.15,5178770000,975.15 +2009-07-28,981.48,982.35,969.35,979.62,5490350000,979.62 +2009-07-27,978.63,982.49,972.29,982.18,4631290000,982.18 +2009-07-24,972.16,979.79,965.95,979.26,4458300000,979.26 +2009-07-23,954.07,979.42,953.27,976.29,5761650000,976.29 +2009-07-22,953.40,959.83,947.75,954.07,4634100000,954.07 +2009-07-21,951.97,956.53,943.22,954.58,5309300000,954.58 +2009-07-20,942.07,951.62,940.99,951.13,4853150000,951.13 +2009-07-17,940.56,941.89,934.65,940.38,5141380000,940.38 +2009-07-16,930.17,943.96,927.45,940.74,4898640000,940.74 +2009-07-15,910.15,933.95,910.15,932.68,5238830000,932.68 +2009-07-14,900.77,905.84,896.50,905.84,4149030000,905.84 +2009-07-13,879.57,901.05,875.32,901.05,4499440000,901.05 +2009-07-10,880.03,883.57,872.81,879.13,3912080000,879.13 +2009-07-09,881.28,887.86,878.45,882.68,4347170000,882.68 +2009-07-08,881.90,886.80,869.32,879.56,5721780000,879.56 +2009-07-07,898.60,898.60,879.93,881.03,4673300000,881.03 +2009-07-06,894.27,898.72,886.36,898.72,4712580000,898.72 +2009-07-02,921.24,921.24,896.42,896.42,3931000000,896.42 +2009-07-01,920.82,931.92,920.82,923.33,3919400000,923.33 +2009-06-30,927.15,930.01,912.86,919.32,4627570000,919.32 +2009-06-29,919.86,927.99,916.18,927.23,4211760000,927.23 +2009-06-26,918.84,922.00,913.03,918.90,6076660000,918.90 +2009-06-25,899.45,921.42,896.27,920.26,4911240000,920.26 +2009-06-24,896.31,910.85,896.31,900.94,4636720000,900.94 +2009-06-23,893.46,898.69,888.86,895.10,5071020000,895.10 +2009-06-22,918.13,918.13,893.04,893.04,4903940000,893.04 +2009-06-19,919.96,927.09,915.80,921.23,5713390000,921.23 +2009-06-18,910.86,921.93,907.94,918.37,4684010000,918.37 +2009-06-17,911.89,918.44,903.78,910.71,5523650000,910.71 +2009-06-16,925.60,928.00,911.60,911.97,4951200000,911.97 +2009-06-15,942.45,942.45,919.65,923.72,4697880000,923.72 +2009-06-12,943.44,946.30,935.66,946.21,4528120000,946.21 +2009-06-11,939.04,956.23,939.04,944.89,5500840000,944.89 +2009-06-10,942.73,949.77,927.97,939.15,5379420000,939.15 +2009-06-09,940.35,946.92,936.15,942.43,4439950000,942.43 +2009-06-08,938.12,946.33,926.44,939.14,4483430000,939.14 +2009-06-05,945.67,951.69,934.13,940.09,5277910000,940.09 +2009-06-04,932.49,942.47,929.32,942.46,5352890000,942.46 +2009-06-03,942.51,942.51,923.85,931.76,5323770000,931.76 +2009-06-02,942.87,949.38,938.46,944.74,5987340000,944.74 +2009-06-01,923.26,947.77,923.26,942.87,6370440000,942.87 +2009-05-29,907.02,920.02,903.56,919.14,6050420000,919.14 +2009-05-28,892.96,909.45,887.60,906.83,5738980000,906.83 +2009-05-27,909.95,913.84,891.87,893.06,5698800000,893.06 +2009-05-26,887.00,911.76,881.46,910.33,5667050000,910.33 +2009-05-22,888.68,896.65,883.75,887.00,5155320000,887.00 +2009-05-21,900.42,900.42,879.61,888.33,6019840000,888.33 +2009-05-20,908.62,924.60,901.37,903.47,8205060000,903.47 +2009-05-19,909.67,916.39,905.22,908.13,6616270000,908.13 +2009-05-18,886.07,910.00,886.07,909.71,5702150000,909.71 +2009-05-15,892.76,896.97,878.94,882.88,5439720000,882.88 +2009-05-14,884.24,898.36,882.52,893.07,6134870000,893.07 +2009-05-13,905.40,905.40,882.80,883.92,7091820000,883.92 +2009-05-12,910.52,915.57,896.46,908.35,6871750400,908.35 +2009-05-11,922.99,922.99,908.68,909.24,6150600000,909.24 +2009-05-08,909.03,930.17,909.03,929.23,8163280000,929.23 +2009-05-07,919.58,929.58,901.36,907.39,9120100000,907.39 +2009-05-06,903.95,920.28,903.95,919.53,8555040000,919.53 +2009-05-05,906.10,907.70,897.34,903.80,6882860000,903.80 +2009-05-04,879.21,907.85,879.21,907.24,7038840000,907.24 +2009-05-01,872.74,880.48,866.10,877.52,5312170000,877.52 +2009-04-30,876.59,888.70,868.51,872.81,6862540000,872.81 +2009-04-29,856.85,882.06,856.85,873.64,6101620000,873.64 +2009-04-28,854.48,864.48,847.12,855.16,6328000000,855.16 +2009-04-27,862.82,868.83,854.65,857.51,5613460000,857.51 +2009-04-24,853.91,871.80,853.91,866.23,7114440000,866.23 +2009-04-23,844.62,852.87,835.45,851.92,6563100000,851.92 +2009-04-22,847.26,861.78,840.57,843.55,7327860000,843.55 +2009-04-21,831.25,850.09,826.83,850.08,7436489600,850.08 +2009-04-20,868.27,868.27,832.39,832.39,6973960000,832.39 +2009-04-17,865.18,875.63,860.87,869.60,7352009600,869.60 +2009-04-16,854.54,870.35,847.04,865.30,6598670000,865.30 +2009-04-15,839.44,852.93,835.58,852.06,6241100000,852.06 +2009-04-14,856.88,856.88,840.25,841.50,7569840000,841.50 +2009-04-13,855.33,864.31,845.35,858.73,6434890000,858.73 +2009-04-09,829.29,856.91,829.29,856.56,7600710400,856.56 +2009-04-08,816.76,828.42,814.84,825.16,5938460000,825.16 +2009-04-07,834.12,834.12,814.53,815.55,5155580000,815.55 +2009-04-06,839.75,839.75,822.79,835.48,6210000000,835.48 +2009-04-03,835.13,842.50,826.70,842.50,5855640000,842.50 +2009-04-02,814.53,845.61,814.53,834.38,7542809600,834.38 +2009-04-01,793.59,813.62,783.32,811.08,6034140000,811.08 +2009-03-31,790.88,810.48,790.88,797.87,6089100000,797.87 +2009-03-30,809.07,809.07,779.81,787.53,5912660000,787.53 +2009-03-27,828.68,828.68,813.43,815.94,5600210000,815.94 +2009-03-26,814.06,832.98,814.06,832.86,6992960000,832.86 +2009-03-25,806.81,826.78,791.37,813.88,7687180000,813.88 +2009-03-24,820.60,823.65,805.48,806.12,6767980000,806.12 +2009-03-23,772.31,823.37,772.31,822.92,7715769600,822.92 +2009-03-20,784.58,788.91,766.20,768.54,7643720000,768.54 +2009-03-19,797.92,803.24,781.82,784.04,9033870400,784.04 +2009-03-18,776.01,803.04,765.64,794.35,9098449600,794.35 +2009-03-17,753.88,778.12,749.93,778.12,6156800000,778.12 +2009-03-16,758.84,774.53,753.37,753.89,7883540000,753.89 +2009-03-13,751.97,758.29,742.46,756.55,6787089600,756.55 +2009-03-12,720.89,752.63,714.76,750.74,7326630400,750.74 +2009-03-11,719.59,731.92,713.85,721.36,7287809600,721.36 +2009-03-10,679.28,719.60,679.28,719.60,8618329600,719.60 +2009-03-09,680.76,695.27,672.88,676.53,7277320000,676.53 +2009-03-06,684.04,699.09,666.79,683.38,7331830400,683.38 +2009-03-05,708.27,708.27,677.93,682.55,7507249600,682.55 +2009-03-04,698.60,724.12,698.60,712.87,7673620000,712.87 +2009-03-03,704.44,711.67,692.30,696.33,7583230400,696.33 +2009-03-02,729.57,729.57,699.70,700.82,7868289600,700.82 +2009-02-27,749.93,751.27,734.52,735.09,8926480000,735.09 +2009-02-26,765.76,779.42,751.75,752.83,7599969600,752.83 +2009-02-25,770.64,780.12,752.89,764.90,7483640000,764.90 +2009-02-24,744.69,775.49,744.69,773.14,7234489600,773.14 +2009-02-23,773.25,777.85,742.37,743.33,6509300000,743.33 +2009-02-20,775.87,778.69,754.25,770.05,8210590400,770.05 +2009-02-19,787.91,797.58,777.03,778.94,5746940000,778.94 +2009-02-18,791.06,796.17,780.43,788.42,5740710000,788.42 +2009-02-17,818.61,818.61,789.17,789.17,5907820000,789.17 +2009-02-13,833.95,839.43,825.21,826.84,5296650000,826.84 +2009-02-12,829.91,835.48,808.06,835.19,6476460000,835.19 +2009-02-11,827.41,838.22,822.30,833.74,5926460000,833.74 +2009-02-10,866.87,868.05,822.99,827.16,6770169600,827.16 +2009-02-09,868.24,875.01,861.65,869.89,5574370000,869.89 +2009-02-06,846.09,870.75,845.42,868.60,6484100000,868.60 +2009-02-05,831.75,850.55,819.91,845.85,6624030000,845.85 +2009-02-04,837.77,851.85,829.18,832.23,6420450000,832.23 +2009-02-03,825.69,842.60,821.98,838.51,5886310000,838.51 +2009-02-02,823.09,830.78,812.87,825.44,5673270000,825.44 +2009-01-30,845.69,851.66,821.67,825.88,5350580000,825.88 +2009-01-29,868.89,868.89,844.15,845.14,5067060000,845.14 +2009-01-28,845.73,877.86,845.73,874.09,6199180000,874.09 +2009-01-27,837.30,850.45,835.40,845.71,5353260000,845.71 +2009-01-26,832.50,852.53,827.69,836.57,6039940000,836.57 +2009-01-23,822.16,838.61,806.07,831.95,5832160000,831.95 +2009-01-22,839.74,839.74,811.29,827.50,5843830000,827.50 +2009-01-21,806.77,841.72,804.30,840.24,6467830000,840.24 +2009-01-20,849.64,849.64,804.47,805.22,6375230000,805.22 +2009-01-16,844.45,858.13,830.66,850.12,6786040000,850.12 +2009-01-15,841.99,851.59,817.04,843.74,7807350400,843.74 +2009-01-14,867.28,867.28,836.93,842.62,5407880000,842.62 +2009-01-13,869.79,877.02,862.02,871.79,5017470000,871.79 +2009-01-12,890.40,890.40,864.32,870.26,4725050000,870.26 +2009-01-09,909.91,911.93,888.31,890.35,4716500000,890.35 +2009-01-08,905.73,910.00,896.81,909.73,4991550000,909.73 +2009-01-07,927.45,927.45,902.37,906.65,4704940000,906.65 +2009-01-06,931.17,943.85,927.28,934.70,5392620000,934.70 +2009-01-05,929.17,936.63,919.53,927.45,5413910000,927.45 +2009-01-02,902.99,934.73,899.35,931.80,4048270000,931.80 +2008-12-31,890.59,910.32,889.67,903.25,4172940000,903.25 +2008-12-30,870.58,891.12,870.58,890.64,3627800000,890.64 +2008-12-29,872.37,873.70,857.07,869.42,3323430000,869.42 +2008-12-26,869.51,873.74,866.52,872.80,1880050000,872.80 +2008-12-24,863.87,869.79,861.44,868.15,1546550000,868.15 +2008-12-23,874.31,880.44,860.10,863.16,4051970000,863.16 +2008-12-22,887.20,887.37,857.09,871.63,4869850000,871.63 +2008-12-19,886.96,905.47,883.02,887.88,6705310000,887.88 +2008-12-18,905.98,911.02,877.44,885.28,5675000000,885.28 +2008-12-17,908.16,918.85,895.94,904.42,5907380000,904.42 +2008-12-16,871.53,914.66,871.53,913.18,6009780000,913.18 +2008-12-15,881.07,884.63,857.72,868.57,4982390000,868.57 +2008-12-12,871.79,883.24,851.35,879.73,5959590000,879.73 +2008-12-11,898.35,904.63,868.73,873.59,5513840000,873.59 +2008-12-10,892.17,908.27,885.45,899.24,5942130000,899.24 +2008-12-09,906.48,916.26,885.38,888.67,5693110000,888.67 +2008-12-08,882.71,918.57,882.71,909.70,6553600000,909.70 +2008-12-05,844.43,879.42,818.41,876.07,6165370000,876.07 +2008-12-04,869.75,875.60,833.60,845.22,5860390000,845.22 +2008-12-03,843.60,873.12,827.60,870.74,6221880000,870.74 +2008-12-02,817.94,850.54,817.94,848.81,6170100000,848.81 +2008-12-01,888.61,888.61,815.69,816.21,6052010000,816.21 +2008-11-28,886.89,896.25,881.21,896.24,2740860000,896.24 +2008-11-26,852.90,887.68,841.37,887.68,5793260000,887.68 +2008-11-25,853.40,868.94,834.99,857.39,6952700000,857.39 +2008-11-24,801.20,865.60,801.20,851.81,7879440000,851.81 +2008-11-21,755.84,801.20,741.02,800.03,9495900000,800.03 +2008-11-20,805.87,820.52,747.78,752.44,9093740000,752.44 +2008-11-19,859.03,864.57,806.18,806.58,6548600000,806.58 +2008-11-18,852.34,865.90,826.84,859.12,6679470000,859.12 +2008-11-17,873.23,882.29,848.98,850.75,4927490000,850.75 +2008-11-14,904.36,916.88,869.88,873.29,5881030000,873.29 +2008-11-13,853.13,913.01,818.69,911.29,7849120000,911.29 +2008-11-12,893.39,893.39,850.48,852.30,5764180000,852.30 +2008-11-11,917.15,917.15,884.90,898.95,4998340000,898.95 +2008-11-10,936.75,951.95,907.47,919.21,4572000000,919.21 +2008-11-07,907.44,931.46,906.90,930.99,4931640000,930.99 +2008-11-06,952.40,952.40,899.73,904.88,6102230000,904.88 +2008-11-05,1001.84,1001.84,949.86,952.77,5426640000,952.77 +2008-11-04,971.31,1007.51,971.31,1005.75,5531290000,1005.75 +2008-11-03,968.67,975.57,958.82,966.30,4492280000,966.30 +2008-10-31,953.11,984.38,944.59,968.75,6394350000,968.75 +2008-10-30,939.38,963.23,928.50,954.09,6175830000,954.09 +2008-10-29,939.51,969.97,922.26,930.09,7077800000,930.09 +2008-10-28,848.92,940.51,845.27,940.51,7096950400,940.51 +2008-10-27,874.28,893.78,846.75,848.92,5558050000,848.92 +2008-10-24,895.22,896.30,852.85,876.77,6550050000,876.77 +2008-10-23,899.08,922.83,858.44,908.11,7184180000,908.11 +2008-10-22,951.67,951.67,875.81,896.78,6147980000,896.78 +2008-10-21,980.40,985.44,952.47,955.05,5121830000,955.05 +2008-10-20,943.51,985.40,943.51,985.40,5175640000,985.40 +2008-10-17,942.29,984.64,918.74,940.55,6581780000,940.55 +2008-10-16,909.53,947.71,865.83,946.43,7984500000,946.43 +2008-10-15,994.60,994.60,903.99,907.84,6542330000,907.84 +2008-10-14,1009.97,1044.31,972.07,998.01,8161990400,998.01 +2008-10-13,912.75,1006.93,912.75,1003.35,7263369600,1003.35 +2008-10-10,902.31,936.36,839.80,899.22,11456230400,899.22 +2008-10-09,988.42,1005.25,909.19,909.92,6819000000,909.92 +2008-10-08,988.91,1021.06,970.97,984.94,8716329600,984.94 +2008-10-07,1057.60,1072.91,996.23,996.23,7069209600,996.23 +2008-10-06,1097.56,1097.56,1007.97,1056.89,7956020000,1056.89 +2008-10-03,1115.16,1153.82,1098.14,1099.23,6716120000,1099.23 +2008-10-02,1160.64,1160.64,1111.43,1114.28,6285640000,1114.28 +2008-10-01,1164.17,1167.03,1140.77,1161.06,5782130000,1161.06 +2008-09-30,1113.78,1168.03,1113.78,1166.36,4937680000,1166.36 +2008-09-29,1209.07,1209.07,1106.42,1106.42,7305060000,1106.42 +2008-09-26,1204.47,1215.77,1187.54,1213.27,5383610000,1213.27 +2008-09-25,1187.87,1220.03,1187.87,1209.18,5877640000,1209.18 +2008-09-24,1188.79,1197.41,1179.79,1185.87,4820360000,1185.87 +2008-09-23,1207.61,1221.15,1187.06,1188.22,5185730000,1188.22 +2008-09-22,1255.37,1255.37,1205.61,1207.09,5332130000,1207.09 +2008-09-19,1213.11,1265.12,1213.11,1255.08,9387169600,1255.08 +2008-09-18,1157.08,1211.14,1133.50,1206.51,10082689600,1206.51 +2008-09-17,1210.34,1210.34,1155.88,1156.39,9431870400,1156.39 +2008-09-16,1188.31,1214.84,1169.28,1213.60,9459830400,1213.60 +2008-09-15,1250.92,1250.92,1192.70,1192.70,8279510400,1192.70 +2008-09-12,1245.88,1255.09,1233.81,1251.70,6273260000,1251.70 +2008-09-11,1229.04,1249.98,1211.54,1249.05,6869249600,1249.05 +2008-09-10,1227.50,1243.90,1221.60,1232.04,6543440000,1232.04 +2008-09-09,1267.98,1268.66,1224.51,1224.51,7380630400,1224.51 +2008-09-08,1249.50,1274.42,1247.12,1267.79,7351340000,1267.79 +2008-09-05,1233.21,1244.94,1217.23,1242.31,5017080000,1242.31 +2008-09-04,1271.80,1271.80,1232.83,1236.83,5212500000,1236.83 +2008-09-03,1276.61,1280.60,1265.59,1274.98,5056980000,1274.98 +2008-09-02,1287.83,1303.04,1272.20,1277.58,4783560000,1277.58 +2008-08-29,1296.49,1297.59,1282.74,1282.83,3288120000,1282.83 +2008-08-28,1283.79,1300.68,1283.79,1300.68,3854280000,1300.68 +2008-08-27,1271.29,1285.05,1270.03,1281.66,3499610000,1281.66 +2008-08-26,1267.03,1275.65,1263.21,1271.51,3587570000,1271.51 +2008-08-25,1290.47,1290.47,1264.87,1266.84,3420600000,1266.84 +2008-08-22,1277.59,1293.09,1277.59,1292.20,3741070000,1292.20 +2008-08-21,1271.07,1281.40,1265.22,1277.72,4032590000,1277.72 +2008-08-20,1267.34,1276.01,1261.16,1274.54,4555030000,1274.54 +2008-08-19,1276.65,1276.65,1263.11,1266.69,4159760000,1266.69 +2008-08-18,1298.14,1300.22,1274.51,1278.60,3829290000,1278.60 +2008-08-15,1293.85,1302.05,1290.74,1298.20,4041820000,1298.20 +2008-08-14,1282.11,1300.11,1276.84,1292.93,4064000000,1292.93 +2008-08-13,1288.64,1294.03,1274.86,1285.83,4787600000,1285.83 +2008-08-12,1304.79,1304.79,1285.64,1289.59,4711290000,1289.59 +2008-08-11,1294.42,1313.15,1291.41,1305.32,5067310000,1305.32 +2008-08-08,1266.29,1297.85,1262.11,1296.32,4966810000,1296.32 +2008-08-07,1286.51,1286.51,1264.29,1266.07,5319380000,1266.07 +2008-08-06,1283.99,1291.67,1276.00,1289.19,4873420000,1289.19 +2008-08-05,1254.87,1284.88,1254.67,1284.88,1219310000,1284.88 +2008-08-04,1253.27,1260.49,1247.45,1249.01,4562280000,1249.01 +2008-08-01,1269.42,1270.52,1254.54,1260.31,4684870000,1260.31 +2008-07-31,1281.37,1284.93,1265.97,1267.38,5346050000,1267.38 +2008-07-30,1264.52,1284.33,1264.52,1284.26,5631330000,1284.26 +2008-07-29,1236.38,1263.20,1236.38,1263.20,5414240000,1263.20 +2008-07-28,1257.76,1260.09,1234.37,1234.37,4282960000,1234.37 +2008-07-25,1253.51,1263.23,1251.75,1257.76,4672560000,1257.76 +2008-07-24,1283.22,1283.22,1251.48,1252.54,6127980000,1252.54 +2008-07-23,1278.87,1291.17,1276.06,1282.19,6705830000,1282.19 +2008-07-22,1257.08,1277.42,1248.83,1277.00,6180230000,1277.00 +2008-07-21,1261.82,1267.74,1255.70,1260.00,4630640000,1260.00 +2008-07-18,1258.22,1262.23,1251.81,1260.68,5653280000,1260.68 +2008-07-17,1246.31,1262.31,1241.49,1260.32,7365209600,1260.32 +2008-07-16,1214.65,1245.52,1211.39,1245.36,6738630400,1245.36 +2008-07-15,1226.83,1234.35,1200.44,1214.91,7363640000,1214.91 +2008-07-14,1241.61,1253.50,1225.01,1228.30,5434860000,1228.30 +2008-07-11,1248.66,1257.27,1225.35,1239.49,6742200000,1239.49 +2008-07-10,1245.25,1257.65,1236.76,1253.39,5840430000,1253.39 +2008-07-09,1273.38,1277.36,1244.57,1244.69,5181000000,1244.69 +2008-07-08,1251.84,1274.17,1242.84,1273.70,6034110000,1273.70 +2008-07-07,1262.90,1273.95,1240.68,1252.31,5265420000,1252.31 +2008-07-03,1262.96,1271.48,1252.01,1262.90,3247590000,1262.90 +2008-07-02,1285.82,1292.17,1261.51,1261.52,5276090000,1261.52 +2008-07-01,1276.69,1285.31,1260.68,1284.91,5846290000,1284.91 +2008-06-30,1278.06,1290.31,1274.86,1280.00,5032330000,1280.00 +2008-06-27,1283.60,1289.45,1272.00,1278.38,6208260000,1278.38 +2008-06-26,1316.29,1316.29,1283.15,1283.15,5231280000,1283.15 +2008-06-25,1314.54,1335.63,1314.54,1321.97,4825640000,1321.97 +2008-06-24,1317.23,1326.02,1304.42,1314.29,4705050000,1314.29 +2008-06-23,1319.77,1323.78,1315.31,1318.00,4186370000,1318.00 +2008-06-20,1341.02,1341.02,1314.46,1317.93,5324900000,1317.93 +2008-06-19,1336.89,1347.66,1330.50,1342.83,4811670000,1342.83 +2008-06-18,1349.59,1349.59,1333.40,1337.81,4573570000,1337.81 +2008-06-17,1360.71,1366.59,1350.54,1350.93,3801960000,1350.93 +2008-06-16,1358.85,1364.70,1352.07,1360.14,3706940000,1360.14 +2008-06-13,1341.81,1360.03,1341.71,1360.03,4080420000,1360.03 +2008-06-12,1335.78,1353.03,1331.29,1339.87,4734240000,1339.87 +2008-06-11,1357.09,1357.09,1335.47,1335.49,4779980000,1335.49 +2008-06-10,1358.98,1366.84,1351.56,1358.44,4635070000,1358.44 +2008-06-09,1360.83,1370.63,1350.62,1361.76,4404570000,1361.76 +2008-06-06,1400.06,1400.06,1359.90,1360.68,4771660000,1360.68 +2008-06-05,1377.48,1404.05,1377.48,1404.05,4350790000,1404.05 +2008-06-04,1376.26,1388.18,1371.74,1377.20,4338640000,1377.20 +2008-06-03,1386.42,1393.12,1370.12,1377.65,4396380000,1377.65 +2008-06-02,1399.62,1399.62,1377.79,1385.67,3714320000,1385.67 +2008-05-30,1398.36,1404.46,1398.08,1400.38,3845630000,1400.38 +2008-05-29,1390.50,1406.32,1388.59,1398.26,3894440000,1398.26 +2008-05-28,1386.54,1391.25,1378.16,1390.84,3927240000,1390.84 +2008-05-27,1375.97,1387.40,1373.07,1385.35,3588860000,1385.35 +2008-05-23,1392.20,1392.20,1373.72,1375.93,3516380000,1375.93 +2008-05-22,1390.83,1399.07,1390.23,1394.35,3955960000,1394.35 +2008-05-21,1414.06,1419.12,1388.81,1390.71,4517990000,1390.71 +2008-05-20,1424.49,1424.49,1409.09,1413.40,3854320000,1413.40 +2008-05-19,1425.28,1440.24,1421.63,1426.63,3683970000,1426.63 +2008-05-16,1423.89,1425.82,1414.35,1425.35,3842590000,1425.35 +2008-05-15,1408.36,1424.40,1406.87,1423.57,3836480000,1423.57 +2008-05-14,1405.65,1420.19,1405.65,1408.66,3979370000,1408.66 +2008-05-13,1404.40,1406.30,1396.26,1403.04,4018590000,1403.04 +2008-05-12,1389.40,1404.06,1386.20,1403.58,3370630000,1403.58 +2008-05-09,1394.90,1394.90,1384.11,1388.28,3518620000,1388.28 +2008-05-08,1394.29,1402.35,1389.39,1397.68,3827550000,1397.68 +2008-05-07,1417.49,1419.54,1391.16,1392.57,4075860000,1392.57 +2008-05-06,1405.60,1421.57,1397.10,1418.26,3924100000,1418.26 +2008-05-05,1415.34,1415.34,1404.37,1407.49,3410090000,1407.49 +2008-05-02,1409.16,1422.72,1406.25,1413.90,3953030000,1413.90 +2008-05-01,1385.97,1410.07,1383.07,1409.34,4448780000,1409.34 +2008-04-30,1391.22,1404.57,1384.25,1385.59,4508890000,1385.59 +2008-04-29,1395.61,1397.00,1386.70,1390.94,3815320000,1390.94 +2008-04-28,1397.96,1402.90,1394.40,1396.37,3607000000,1396.37 +2008-04-25,1387.88,1399.11,1379.98,1397.84,3891150000,1397.84 +2008-04-24,1380.52,1397.72,1371.09,1388.82,4461660000,1388.82 +2008-04-23,1378.40,1387.87,1372.24,1379.93,4103610000,1379.93 +2008-04-22,1386.43,1386.43,1369.84,1375.94,3821900000,1375.94 +2008-04-21,1387.72,1390.23,1379.25,1388.17,3420570000,1388.17 +2008-04-18,1369.00,1395.90,1369.00,1390.33,4222380000,1390.33 +2008-04-17,1363.37,1368.60,1357.25,1365.56,3713880000,1365.56 +2008-04-16,1337.02,1365.49,1337.02,1364.71,4260370000,1364.71 +2008-04-15,1331.72,1337.72,1324.35,1334.43,3581230000,1334.43 +2008-04-14,1332.20,1335.64,1326.16,1328.32,3565020000,1328.32 +2008-04-11,1357.98,1357.98,1331.21,1332.83,3723790000,1332.83 +2008-04-10,1355.37,1367.24,1350.11,1360.55,3686150000,1360.55 +2008-04-09,1365.50,1368.39,1349.97,1354.49,3556670000,1354.49 +2008-04-08,1370.16,1370.16,1360.62,1365.54,3602500000,1365.54 +2008-04-07,1373.69,1386.74,1369.02,1372.54,3747780000,1372.54 +2008-04-04,1369.85,1380.91,1362.83,1370.40,3703100000,1370.40 +2008-04-03,1365.69,1375.66,1358.68,1369.31,3920100000,1369.31 +2008-04-02,1369.96,1377.95,1361.55,1367.53,4320440000,1367.53 +2008-04-01,1326.41,1370.18,1326.41,1370.18,4745120000,1370.18 +2008-03-31,1315.92,1328.52,1312.81,1322.70,4188990000,1322.70 +2008-03-28,1327.02,1334.87,1312.95,1315.22,3686980000,1315.22 +2008-03-27,1340.34,1345.62,1325.66,1325.76,4037930000,1325.76 +2008-03-26,1352.45,1352.45,1336.41,1341.13,4055670000,1341.13 +2008-03-25,1349.07,1357.47,1341.21,1352.99,4145120000,1352.99 +2008-03-24,1330.29,1359.68,1330.29,1349.88,4499000000,1349.88 +2008-03-20,1299.67,1330.67,1295.22,1329.51,6145220000,1329.51 +2008-03-19,1330.97,1341.51,1298.42,1298.42,1203830000,1298.42 +2008-03-18,1277.16,1330.74,1277.16,1330.74,5335630000,1330.74 +2008-03-17,1283.21,1287.50,1256.98,1276.60,5683010000,1276.60 +2008-03-14,1316.05,1321.47,1274.86,1288.14,5153780000,1288.14 +2008-03-13,1305.26,1321.68,1282.11,1315.48,5073360000,1315.48 +2008-03-12,1321.13,1333.26,1307.86,1308.77,4414280000,1308.77 +2008-03-11,1274.40,1320.65,1274.40,1320.65,5109080000,1320.65 +2008-03-10,1293.16,1295.01,1272.66,1273.37,4261240000,1273.37 +2008-03-07,1301.53,1313.24,1282.43,1293.37,4565410000,1293.37 +2008-03-06,1332.20,1332.20,1303.42,1304.34,4323460000,1304.34 +2008-03-05,1327.69,1344.19,1320.22,1333.70,4277710000,1333.70 +2008-03-04,1329.58,1331.03,1307.39,1326.75,4757180000,1326.75 +2008-03-03,1330.45,1335.13,1320.04,1331.34,4117570000,1331.34 +2008-02-29,1364.07,1364.07,1325.42,1330.63,4426730000,1330.63 +2008-02-28,1378.16,1378.16,1363.16,1367.68,3938580000,1367.68 +2008-02-27,1378.95,1388.34,1372.00,1380.02,3904700000,1380.02 +2008-02-26,1371.76,1387.34,1363.29,1381.29,4096060000,1381.29 +2008-02-25,1352.75,1374.36,1346.03,1371.80,3866350000,1371.80 +2008-02-22,1344.22,1354.30,1327.04,1353.11,3572660000,1353.11 +2008-02-21,1362.21,1367.94,1339.34,1342.53,3696660000,1342.53 +2008-02-20,1348.39,1363.71,1336.55,1360.03,3870520000,1360.03 +2008-02-19,1355.86,1367.28,1345.05,1348.78,3613550000,1348.78 +2008-02-15,1347.52,1350.00,1338.13,1349.99,3583300000,1349.99 +2008-02-14,1367.33,1368.16,1347.31,1348.86,3644760000,1348.86 +2008-02-13,1353.12,1369.23,1350.78,1367.21,3856420000,1367.21 +2008-02-12,1340.55,1362.10,1339.36,1348.86,4044640000,1348.86 +2008-02-11,1331.92,1341.40,1320.32,1339.13,3593140000,1339.13 +2008-02-08,1336.88,1341.22,1321.06,1331.29,3768490000,1331.29 +2008-02-07,1324.01,1347.16,1316.75,1336.91,4589160000,1336.91 +2008-02-06,1339.48,1351.96,1324.34,1326.45,4008120000,1326.45 +2008-02-05,1380.28,1380.28,1336.64,1336.64,4315740000,1336.64 +2008-02-04,1395.38,1395.38,1379.69,1380.82,3495780000,1380.82 +2008-02-01,1378.60,1396.02,1375.93,1395.42,4650770000,1395.42 +2008-01-31,1351.98,1385.62,1334.08,1378.55,4970290000,1378.55 +2008-01-30,1362.22,1385.86,1352.95,1355.81,4742760000,1355.81 +2008-01-29,1355.94,1364.93,1350.19,1362.30,4232960000,1362.30 +2008-01-28,1330.70,1353.97,1322.26,1353.96,4100930000,1353.96 +2008-01-25,1357.32,1368.56,1327.50,1330.61,4882250000,1330.61 +2008-01-24,1340.13,1355.15,1334.31,1352.07,5735300000,1352.07 +2008-01-23,1310.41,1339.09,1270.05,1338.60,3241680000,1338.60 +2008-01-22,1312.94,1322.09,1274.29,1310.50,6544690000,1310.50 +2008-01-18,1333.90,1350.28,1312.51,1325.19,6004840000,1325.19 +2008-01-17,1374.79,1377.72,1330.67,1333.25,5303130000,1333.25 +2008-01-16,1377.41,1391.99,1364.27,1373.20,5440620000,1373.20 +2008-01-15,1411.88,1411.88,1380.60,1380.95,4601640000,1380.95 +2008-01-14,1402.91,1417.89,1402.91,1416.25,3682090000,1416.25 +2008-01-11,1419.91,1419.91,1394.83,1401.02,4495840000,1401.02 +2008-01-10,1406.78,1429.09,1395.31,1420.33,5170490000,1420.33 +2008-01-09,1390.25,1409.19,1378.70,1409.13,5351030000,1409.13 +2008-01-08,1415.71,1430.28,1388.30,1390.19,4705390000,1390.19 +2008-01-07,1414.07,1423.87,1403.45,1416.18,4221260000,1416.18 +2008-01-04,1444.01,1444.01,1411.19,1411.63,4166000000,1411.63 +2008-01-03,1447.55,1456.80,1443.73,1447.16,3429500000,1447.16 +2008-01-02,1467.97,1471.77,1442.07,1447.16,3452650000,1447.16 +2007-12-31,1475.25,1475.83,1465.13,1468.36,2440880000,1468.36 +2007-12-28,1479.83,1488.01,1471.70,1478.49,2420510000,1478.49 +2007-12-27,1495.05,1495.05,1475.86,1476.27,2365770000,1476.27 +2007-12-26,1495.12,1498.85,1488.20,1497.66,2010500000,1497.66 +2007-12-24,1484.55,1497.63,1484.55,1496.45,1267420000,1496.45 +2007-12-21,1463.19,1485.40,1463.19,1484.46,4508590000,1484.46 +2007-12-20,1456.42,1461.53,1447.22,1460.12,3526890000,1460.12 +2007-12-19,1454.70,1464.42,1445.31,1453.00,3401300000,1453.00 +2007-12-18,1445.92,1460.16,1435.65,1454.98,3723690000,1454.98 +2007-12-17,1465.05,1465.05,1445.43,1445.90,3569030000,1445.90 +2007-12-14,1486.19,1486.67,1467.78,1467.95,3401050000,1467.95 +2007-12-13,1483.27,1489.40,1469.21,1488.41,3635170000,1488.41 +2007-12-12,1487.58,1511.96,1468.23,1486.59,4482120000,1486.59 +2007-12-11,1516.68,1523.57,1475.99,1477.65,4080180000,1477.65 +2007-12-10,1505.11,1518.27,1504.96,1515.96,2911760000,1515.96 +2007-12-07,1508.60,1510.63,1502.66,1504.66,3177710000,1504.66 +2007-12-06,1484.59,1508.02,1482.19,1507.34,3568570000,1507.34 +2007-12-05,1465.22,1486.09,1465.22,1485.01,3663660000,1485.01 +2007-12-04,1471.34,1471.34,1460.66,1462.79,3343620000,1462.79 +2007-12-03,1479.63,1481.16,1470.08,1472.42,3323250000,1472.42 +2007-11-30,1471.83,1488.94,1470.89,1481.14,4422200000,1481.14 +2007-11-29,1467.41,1473.81,1458.36,1469.72,3524730000,1469.72 +2007-11-28,1432.95,1471.62,1432.95,1469.02,4508020000,1469.02 +2007-11-27,1409.59,1429.49,1407.43,1428.23,4320720000,1428.23 +2007-11-26,1440.74,1446.09,1406.10,1407.22,3706470000,1407.22 +2007-11-23,1417.62,1440.86,1417.62,1440.70,1612720000,1440.70 +2007-11-21,1434.71,1436.40,1415.64,1416.77,4076230000,1416.77 +2007-11-20,1434.51,1452.64,1419.28,1439.70,4875150000,1439.70 +2007-11-19,1456.70,1456.70,1430.42,1433.27,4119650000,1433.27 +2007-11-16,1453.09,1462.18,1443.99,1458.74,4168870000,1458.74 +2007-11-15,1468.04,1472.67,1443.49,1451.15,3941010000,1451.15 +2007-11-14,1483.40,1492.14,1466.47,1470.58,4031470000,1470.58 +2007-11-13,1441.35,1481.37,1441.35,1481.05,4141310000,1481.05 +2007-11-12,1453.66,1464.94,1438.53,1439.18,4192520000,1439.18 +2007-11-09,1467.59,1474.09,1448.51,1453.70,4587050000,1453.70 +2007-11-08,1475.27,1482.50,1450.31,1474.77,5439720000,1474.77 +2007-11-07,1515.46,1515.46,1475.04,1475.62,4353160000,1475.62 +2007-11-06,1505.33,1520.77,1499.07,1520.27,3879160000,1520.27 +2007-11-05,1505.61,1510.84,1489.95,1502.17,3819330000,1502.17 +2007-11-02,1511.07,1513.15,1492.53,1509.65,4285990000,1509.65 +2007-11-01,1545.79,1545.79,1506.66,1508.44,4241470000,1508.44 +2007-10-31,1532.15,1552.76,1529.40,1549.38,3953070000,1549.38 +2007-10-30,1539.42,1539.42,1529.55,1531.02,3212520000,1531.02 +2007-10-29,1536.92,1544.67,1536.43,1540.98,3124480000,1540.98 +2007-10-26,1522.17,1535.53,1520.18,1535.28,3612120000,1535.28 +2007-10-25,1516.15,1523.24,1500.46,1514.40,4183960000,1514.40 +2007-10-24,1516.61,1517.23,1489.56,1515.88,4003300000,1515.88 +2007-10-23,1509.30,1520.01,1503.61,1519.59,3309120000,1519.59 +2007-10-22,1497.79,1508.06,1490.40,1506.33,3471830000,1506.33 +2007-10-19,1540.00,1540.00,1500.26,1500.63,4160970000,1500.63 +2007-10-18,1539.29,1542.79,1531.76,1540.08,3203210000,1540.08 +2007-10-17,1544.44,1550.66,1526.01,1541.24,3638070000,1541.24 +2007-10-16,1547.81,1547.81,1536.29,1538.53,3234560000,1538.53 +2007-10-15,1562.25,1564.74,1540.81,1548.71,3139290000,1548.71 +2007-10-12,1555.41,1563.03,1554.09,1561.80,2788690000,1561.80 +2007-10-11,1564.72,1576.09,1546.72,1554.41,3911260000,1554.41 +2007-10-10,1564.98,1565.42,1555.46,1562.47,3044760000,1562.47 +2007-10-09,1553.18,1565.26,1551.82,1565.15,2932040000,1565.15 +2007-10-08,1556.51,1556.51,1549.00,1552.58,2040650000,1552.58 +2007-10-05,1543.84,1561.91,1543.84,1557.59,2919030000,1557.59 +2007-10-04,1539.91,1544.02,1537.63,1542.84,2690430000,1542.84 +2007-10-03,1545.80,1545.84,1536.34,1539.59,3065320000,1539.59 +2007-10-02,1546.96,1548.01,1540.37,1546.63,3101910000,1546.63 +2007-10-01,1527.29,1549.02,1527.25,1547.04,3281990000,1547.04 +2007-09-28,1531.24,1533.74,1521.99,1526.75,2925350000,1526.75 +2007-09-27,1527.32,1532.46,1525.81,1531.38,2872180000,1531.38 +2007-09-26,1518.62,1529.39,1518.62,1525.42,3237390000,1525.42 +2007-09-25,1516.34,1518.27,1507.13,1517.21,3187770000,1517.21 +2007-09-24,1525.75,1530.18,1516.15,1517.73,3131310000,1517.73 +2007-09-21,1518.75,1530.89,1518.75,1525.75,3679460000,1525.75 +2007-09-20,1528.69,1529.14,1516.42,1518.75,2957700000,1518.75 +2007-09-19,1519.75,1538.74,1519.75,1529.03,3846750000,1529.03 +2007-09-18,1476.63,1519.89,1476.63,1519.78,3708940000,1519.78 +2007-09-17,1484.24,1484.24,1471.82,1476.65,2598390000,1476.65 +2007-09-14,1483.95,1485.99,1473.18,1484.25,2641740000,1484.25 +2007-09-13,1471.47,1489.58,1471.47,1483.95,2877080000,1483.95 +2007-09-12,1471.10,1479.50,1465.75,1471.56,2885720000,1471.56 +2007-09-11,1451.69,1472.48,1451.69,1471.49,3015330000,1471.49 +2007-09-10,1453.50,1462.25,1439.29,1451.70,2835720000,1451.70 +2007-09-07,1478.55,1478.55,1449.07,1453.55,3191080000,1453.55 +2007-09-06,1472.03,1481.49,1467.41,1478.55,2459590000,1478.55 +2007-09-05,1488.76,1488.76,1466.34,1472.29,2991600000,1472.29 +2007-09-04,1473.96,1496.40,1472.15,1489.42,2766600000,1489.42 +2007-08-31,1457.61,1481.47,1457.61,1473.99,2731610000,1473.99 +2007-08-30,1463.67,1468.43,1451.25,1457.64,2582960000,1457.64 +2007-08-29,1432.01,1463.76,1432.01,1463.76,2824070000,1463.76 +2007-08-28,1466.72,1466.72,1432.01,1432.36,3078090000,1432.36 +2007-08-27,1479.36,1479.36,1465.98,1466.79,2406180000,1466.79 +2007-08-24,1462.34,1479.40,1460.54,1479.37,2541400000,1479.37 +2007-08-23,1464.05,1472.06,1453.88,1462.50,3084390000,1462.50 +2007-08-22,1447.03,1464.86,1447.03,1464.07,3309120000,1464.07 +2007-08-21,1445.55,1455.32,1439.76,1447.12,3012150000,1447.12 +2007-08-20,1445.94,1451.75,1430.54,1445.55,3321340000,1445.55 +2007-08-17,1411.26,1450.33,1411.26,1445.94,3570040000,1445.94 +2007-08-16,1406.64,1415.97,1370.60,1411.27,6509300000,1411.27 +2007-08-15,1426.15,1440.78,1404.36,1406.70,4290930000,1406.70 +2007-08-14,1452.87,1456.74,1426.20,1426.54,3814630000,1426.54 +2007-08-13,1453.42,1466.29,1451.54,1452.92,3696280000,1452.92 +2007-08-10,1453.09,1462.02,1429.74,1453.64,5345780000,1453.64 +2007-08-09,1497.21,1497.21,1453.09,1453.09,5889600000,1453.09 +2007-08-08,1476.22,1503.89,1476.22,1497.49,5499560000,1497.49 +2007-08-07,1467.62,1488.30,1455.80,1476.71,4909390000,1476.71 +2007-08-06,1433.04,1467.67,1427.39,1467.67,5067200000,1467.67 +2007-08-03,1472.18,1473.23,1432.80,1433.06,4272110000,1433.06 +2007-08-02,1465.46,1476.43,1460.58,1472.20,4368850000,1472.20 +2007-08-01,1455.18,1468.38,1439.59,1465.81,5256780000,1465.81 +2007-07-31,1473.90,1488.30,1454.25,1455.27,4524520000,1455.27 +2007-07-30,1458.93,1477.88,1454.32,1473.91,4128780000,1473.91 +2007-07-27,1482.44,1488.53,1458.95,1458.95,4784650000,1458.95 +2007-07-26,1518.09,1518.09,1465.30,1482.66,4472550000,1482.66 +2007-07-25,1511.03,1524.31,1503.73,1518.09,4283200000,1518.09 +2007-07-24,1541.57,1541.57,1508.62,1511.04,4115830000,1511.04 +2007-07-23,1534.06,1547.23,1534.06,1541.57,3102700000,1541.57 +2007-07-20,1553.19,1553.19,1529.20,1534.10,3745780000,1534.10 +2007-07-19,1546.13,1555.20,1546.13,1553.08,3251450000,1553.08 +2007-07-18,1549.20,1549.20,1533.67,1546.17,3609220000,1546.17 +2007-07-17,1549.52,1555.32,1547.74,1549.37,3007140000,1549.37 +2007-07-16,1552.50,1555.90,1546.69,1549.52,2704110000,1549.52 +2007-07-13,1547.68,1555.10,1544.85,1552.50,2801120000,1552.50 +2007-07-12,1518.74,1547.92,1518.74,1547.70,3489600000,1547.70 +2007-07-11,1509.93,1519.34,1506.10,1518.76,3082920000,1518.76 +2007-07-10,1531.85,1531.85,1510.01,1510.12,3244280000,1510.12 +2007-07-09,1530.43,1534.26,1527.45,1531.85,2715330000,1531.85 +2007-07-06,1524.96,1532.40,1520.47,1530.44,2441520000,1530.44 +2007-07-05,1524.86,1526.57,1517.72,1525.40,2622950000,1525.40 +2007-07-03,1519.12,1526.01,1519.12,1524.87,1560790000,1524.87 +2007-07-02,1504.66,1519.45,1504.66,1519.43,2644990000,1519.43 +2007-06-29,1505.70,1517.53,1493.61,1503.35,3165410000,1503.35 +2007-06-28,1506.32,1514.84,1503.41,1505.71,3006710000,1505.71 +2007-06-27,1492.62,1506.80,1484.18,1506.34,3398150000,1506.34 +2007-06-26,1497.68,1506.12,1490.54,1492.89,3398530000,1492.89 +2007-06-25,1502.56,1514.29,1492.68,1497.74,3287250000,1497.74 +2007-06-22,1522.19,1522.19,1500.74,1502.56,4284320000,1502.56 +2007-06-21,1512.50,1522.90,1504.75,1522.19,3161110000,1522.19 +2007-06-20,1533.68,1537.32,1512.36,1512.84,3286900000,1512.84 +2007-06-19,1531.02,1535.85,1525.67,1533.70,2873590000,1533.70 +2007-06-18,1532.90,1535.44,1529.31,1531.05,2480240000,1531.05 +2007-06-15,1522.97,1538.71,1522.97,1532.91,3406030000,1532.91 +2007-06-14,1515.58,1526.45,1515.58,1522.97,2813630000,1522.97 +2007-06-13,1492.65,1515.70,1492.65,1515.67,3077930000,1515.67 +2007-06-12,1509.12,1511.33,1492.97,1493.00,3056200000,1493.00 +2007-06-11,1507.64,1515.53,1503.35,1509.12,2525280000,1509.12 +2007-06-08,1490.71,1507.76,1487.41,1507.67,2993460000,1507.67 +2007-06-07,1517.36,1517.36,1490.37,1490.72,3538470000,1490.72 +2007-06-06,1530.57,1530.57,1514.13,1517.38,2964190000,1517.38 +2007-06-05,1539.12,1539.12,1525.62,1530.95,2939450000,1530.95 +2007-06-04,1536.28,1540.53,1532.31,1539.18,2738930000,1539.18 +2007-06-01,1530.62,1540.56,1530.62,1536.34,2927020000,1536.34 +2007-05-31,1530.19,1535.56,1528.26,1530.62,3335530000,1530.62 +2007-05-30,1517.60,1530.23,1510.06,1530.23,2980210000,1530.23 +2007-05-29,1515.55,1521.80,1512.02,1518.11,2571790000,1518.11 +2007-05-25,1507.50,1517.41,1507.50,1515.73,2316250000,1515.73 +2007-05-24,1522.10,1529.31,1505.18,1507.51,3365530000,1507.51 +2007-05-23,1524.09,1532.43,1521.90,1522.28,3084260000,1522.28 +2007-05-22,1525.10,1529.24,1522.05,1524.12,2860500000,1524.12 +2007-05-21,1522.75,1529.87,1522.71,1525.10,3465360000,1525.10 +2007-05-18,1512.74,1522.75,1512.74,1522.75,2959050000,1522.75 +2007-05-17,1514.01,1517.14,1509.29,1512.75,2868640000,1512.75 +2007-05-16,1500.75,1514.15,1500.75,1514.14,2915350000,1514.14 +2007-05-15,1503.11,1514.83,1500.43,1501.19,3071020000,1501.19 +2007-05-14,1505.76,1510.90,1498.34,1503.15,2776130000,1503.15 +2007-05-11,1491.47,1506.24,1491.47,1505.85,2720780000,1505.85 +2007-05-10,1512.33,1512.33,1491.42,1491.47,3031240000,1491.47 +2007-05-09,1507.32,1513.80,1503.77,1512.58,2935550000,1512.58 +2007-05-08,1509.36,1509.36,1500.66,1507.72,2795720000,1507.72 +2007-05-07,1505.57,1511.00,1505.54,1509.48,2545090000,1509.48 +2007-05-04,1502.35,1510.34,1501.80,1505.62,2761930000,1505.62 +2007-05-03,1495.56,1503.34,1495.56,1502.39,3007970000,1502.39 +2007-05-02,1486.13,1499.10,1486.13,1495.92,3189800000,1495.92 +2007-05-01,1482.37,1487.27,1476.70,1486.30,3400350000,1486.30 +2007-04-30,1494.07,1497.16,1482.29,1482.37,3093420000,1482.37 +2007-04-27,1494.21,1497.32,1488.67,1494.07,2732810000,1494.07 +2007-04-26,1495.27,1498.02,1491.17,1494.25,3211800000,1494.25 +2007-04-25,1480.28,1496.59,1480.28,1495.42,3252590000,1495.42 +2007-04-24,1480.93,1483.82,1473.74,1480.41,3119750000,1480.41 +2007-04-23,1484.33,1487.32,1480.19,1480.93,2575020000,1480.93 +2007-04-20,1470.69,1484.74,1470.69,1484.35,3329940000,1484.35 +2007-04-19,1472.48,1474.23,1464.47,1470.73,2913610000,1470.73 +2007-04-18,1471.47,1476.57,1466.41,1472.50,2971330000,1472.50 +2007-04-17,1468.47,1474.35,1467.15,1471.48,2920570000,1471.48 +2007-04-16,1452.84,1468.62,1452.84,1468.33,2870140000,1468.33 +2007-04-13,1447.80,1453.11,1444.15,1452.85,2690020000,1452.85 +2007-04-12,1438.87,1448.02,1433.91,1447.80,2770570000,1447.80 +2007-04-11,1448.23,1448.39,1436.15,1438.87,2950190000,1438.87 +2007-04-10,1444.58,1448.73,1443.99,1448.39,2510110000,1448.39 +2007-04-09,1443.77,1448.10,1443.28,1444.61,2349410000,1444.61 +2007-04-05,1438.94,1444.88,1436.67,1443.76,2357230000,1443.76 +2007-04-04,1437.75,1440.16,1435.08,1439.37,2616320000,1439.37 +2007-04-03,1424.27,1440.57,1424.27,1437.77,2921760000,1437.77 +2007-04-02,1420.83,1425.49,1416.37,1424.55,2875880000,1424.55 +2007-03-30,1422.52,1429.22,1408.90,1420.86,2903960000,1420.86 +2007-03-29,1417.17,1426.24,1413.27,1422.53,2854710000,1422.53 +2007-03-28,1428.35,1428.35,1414.07,1417.23,3000440000,1417.23 +2007-03-27,1437.49,1437.49,1425.54,1428.61,2673040000,1428.61 +2007-03-26,1436.11,1437.65,1423.28,1437.50,2754660000,1437.50 +2007-03-23,1434.54,1438.89,1433.21,1436.11,2619020000,1436.11 +2007-03-22,1435.04,1437.66,1429.88,1434.54,3129970000,1434.54 +2007-03-21,1410.92,1437.77,1409.75,1435.04,3184770000,1435.04 +2007-03-20,1402.04,1411.53,1400.70,1410.94,2795940000,1410.94 +2007-03-19,1386.95,1403.20,1386.95,1402.06,2777180000,1402.06 +2007-03-16,1392.28,1397.51,1383.63,1386.95,3393640000,1386.95 +2007-03-15,1387.11,1395.73,1385.16,1392.28,2821900000,1392.28 +2007-03-14,1377.86,1388.09,1363.98,1387.17,3758350000,1387.17 +2007-03-13,1406.23,1406.23,1377.71,1377.95,3485570000,1377.95 +2007-03-12,1402.80,1409.34,1398.40,1406.60,2664000000,1406.60 +2007-03-09,1401.89,1410.15,1397.30,1402.84,2623050000,1402.84 +2007-03-08,1391.88,1407.93,1391.88,1401.89,3014850000,1401.89 +2007-03-07,1395.02,1401.16,1390.64,1391.97,3141350000,1391.97 +2007-03-06,1374.06,1397.90,1374.06,1395.41,3358160000,1395.41 +2007-03-05,1387.11,1391.86,1373.97,1374.12,3480520000,1374.12 +2007-03-02,1403.16,1403.40,1386.87,1387.17,3312260000,1387.17 +2007-03-01,1406.80,1409.46,1380.87,1403.17,3874910000,1403.17 +2007-02-28,1398.64,1415.89,1396.65,1406.82,3925250000,1406.82 +2007-02-27,1449.25,1449.25,1389.42,1399.04,4065230000,1399.04 +2007-02-26,1451.04,1456.95,1445.48,1449.37,2822170000,1449.37 +2007-02-23,1456.22,1456.22,1448.36,1451.19,2579950000,1451.19 +2007-02-22,1457.29,1461.57,1450.51,1456.38,1950770000,1456.38 +2007-02-21,1459.60,1459.60,1452.02,1457.63,2606980000,1457.63 +2007-02-20,1455.53,1460.53,1449.20,1459.68,2337860000,1459.68 +2007-02-16,1456.77,1456.77,1451.57,1455.54,2399450000,1455.54 +2007-02-15,1455.15,1457.97,1453.19,1456.81,2490920000,1456.81 +2007-02-14,1443.91,1457.65,1443.91,1455.30,2699290000,1455.30 +2007-02-13,1433.22,1444.41,1433.22,1444.26,2652150000,1444.26 +2007-02-12,1438.00,1439.11,1431.44,1433.37,2395680000,1433.37 +2007-02-09,1448.25,1452.45,1433.44,1438.06,2951810000,1438.06 +2007-02-08,1449.99,1450.45,1442.81,1448.31,2816180000,1448.31 +2007-02-07,1447.41,1452.99,1446.44,1450.02,2618820000,1450.02 +2007-02-06,1446.98,1450.19,1443.40,1448.00,2608710000,1448.00 +2007-02-05,1448.33,1449.38,1443.85,1446.99,2439430000,1446.99 +2007-02-02,1445.94,1449.33,1444.49,1448.39,2569450000,1448.39 +2007-02-01,1437.90,1446.64,1437.90,1445.94,2914890000,1445.94 +2007-01-31,1428.65,1441.61,1424.78,1438.24,2976690000,1438.24 +2007-01-30,1420.61,1428.82,1420.61,1428.82,2706250000,1428.82 +2007-01-29,1422.03,1426.94,1418.46,1420.62,2730480000,1420.62 +2007-01-26,1423.90,1427.27,1416.96,1422.18,2626620000,1422.18 +2007-01-25,1440.12,1440.69,1422.34,1423.90,2994330000,1423.90 +2007-01-24,1427.96,1440.14,1427.96,1440.13,2783180000,1440.13 +2007-01-23,1422.95,1431.33,1421.66,1427.99,2975070000,1427.99 +2007-01-22,1430.47,1431.39,1420.40,1422.95,2540120000,1422.95 +2007-01-19,1426.35,1431.57,1425.19,1430.50,2777480000,1430.50 +2007-01-18,1430.59,1432.96,1424.21,1426.37,2822430000,1426.37 +2007-01-17,1431.77,1435.27,1428.57,1430.62,2690270000,1430.62 +2007-01-16,1430.73,1433.93,1428.62,1431.90,2599530000,1431.90 +2007-01-12,1423.82,1431.23,1422.58,1430.73,2686480000,1430.73 +2007-01-11,1414.84,1427.12,1414.84,1423.82,2857870000,1423.82 +2007-01-10,1408.70,1415.99,1405.32,1414.85,2764660000,1414.85 +2007-01-09,1412.84,1415.61,1405.42,1412.11,3038380000,1412.11 +2007-01-08,1409.26,1414.98,1403.97,1412.84,2763340000,1412.84 +2007-01-05,1418.34,1418.34,1405.75,1409.71,2919400000,1409.71 +2007-01-04,1416.60,1421.84,1408.43,1418.34,3004460000,1418.34 +2007-01-03,1418.03,1429.42,1407.86,1416.60,3429160000,1416.60 +2006-12-29,1424.71,1427.00,1416.84,1418.30,1678200000,1418.30 +2006-12-28,1426.77,1427.26,1422.05,1424.73,1508570000,1424.73 +2006-12-27,1416.63,1427.72,1416.63,1426.84,1667370000,1426.84 +2006-12-26,1410.75,1417.91,1410.45,1416.90,1310310000,1416.90 +2006-12-22,1418.10,1418.82,1410.28,1410.76,1647590000,1410.76 +2006-12-21,1423.20,1426.40,1415.90,1418.30,2322410000,1418.30 +2006-12-20,1425.51,1429.05,1423.51,1423.53,2387630000,1423.53 +2006-12-19,1422.42,1428.30,1414.88,1425.55,2717060000,1425.55 +2006-12-18,1427.08,1431.81,1420.65,1422.48,2568140000,1422.48 +2006-12-15,1425.48,1431.63,1425.48,1427.09,3229580000,1427.09 +2006-12-14,1413.16,1427.23,1413.16,1425.49,2729700000,1425.49 +2006-12-13,1411.32,1416.64,1411.05,1413.21,2552260000,1413.21 +2006-12-12,1413.00,1413.78,1404.75,1411.56,2738170000,1411.56 +2006-12-11,1409.81,1415.60,1408.56,1413.04,2289900000,1413.04 +2006-12-08,1407.27,1414.09,1403.67,1409.84,2440460000,1409.84 +2006-12-07,1412.86,1418.27,1406.80,1407.29,2743150000,1407.29 +2006-12-06,1414.40,1415.93,1411.05,1412.90,2725280000,1412.90 +2006-12-05,1409.10,1415.27,1408.78,1414.76,2755700000,1414.76 +2006-12-04,1396.67,1411.23,1396.67,1409.12,2766320000,1409.12 +2006-12-01,1400.63,1402.46,1385.93,1396.71,2800980000,1396.71 +2006-11-30,1399.47,1406.30,1393.83,1400.63,4006230000,1400.63 +2006-11-29,1386.11,1401.14,1386.11,1399.48,2790970000,1399.48 +2006-11-28,1381.61,1387.91,1377.83,1386.72,2639750000,1386.72 +2006-11-27,1400.95,1400.95,1381.44,1381.96,2711210000,1381.96 +2006-11-24,1405.94,1405.94,1399.25,1400.95,832550000,1400.95 +2006-11-22,1402.69,1407.89,1402.26,1406.09,2237710000,1406.09 +2006-11-21,1400.43,1403.49,1399.99,1402.81,2597940000,1402.81 +2006-11-20,1401.17,1404.37,1397.85,1400.50,2546710000,1400.50 +2006-11-17,1399.76,1401.21,1394.55,1401.20,2726100000,1401.20 +2006-11-16,1396.53,1403.76,1396.53,1399.76,2835730000,1399.76 +2006-11-15,1392.91,1401.35,1392.13,1396.57,2831130000,1396.57 +2006-11-14,1384.36,1394.49,1379.07,1393.22,3027480000,1393.22 +2006-11-13,1380.58,1387.61,1378.80,1384.42,2386340000,1384.42 +2006-11-10,1378.33,1381.04,1375.60,1380.90,2290200000,1380.90 +2006-11-09,1385.43,1388.92,1377.31,1378.33,3012050000,1378.33 +2006-11-08,1382.50,1388.61,1379.33,1385.72,2814820000,1385.72 +2006-11-07,1379.75,1388.19,1379.19,1382.84,2636390000,1382.84 +2006-11-06,1364.27,1381.40,1364.27,1379.78,2533550000,1379.78 +2006-11-03,1367.31,1371.68,1360.98,1364.30,2419730000,1364.30 +2006-11-02,1367.44,1368.39,1362.21,1367.34,2646180000,1367.34 +2006-11-01,1377.76,1381.95,1366.26,1367.81,2821160000,1367.81 +2006-10-31,1377.93,1381.21,1372.19,1377.94,2803030000,1377.94 +2006-10-30,1377.30,1381.22,1373.46,1377.93,2770440000,1377.93 +2006-10-27,1388.89,1388.89,1375.85,1377.34,2458450000,1377.34 +2006-10-26,1382.21,1389.45,1379.47,1389.08,2793350000,1389.08 +2006-10-25,1377.36,1383.61,1376.00,1382.22,2953540000,1382.22 +2006-10-24,1377.02,1377.78,1372.42,1377.38,2876890000,1377.38 +2006-10-23,1368.58,1377.40,1363.94,1377.02,2480430000,1377.02 +2006-10-20,1366.94,1368.66,1362.10,1368.60,2526410000,1368.60 +2006-10-19,1365.95,1368.09,1362.06,1366.96,2619830000,1366.96 +2006-10-18,1363.93,1372.87,1360.95,1365.80,2658840000,1365.80 +2006-10-17,1369.05,1369.05,1356.87,1364.05,2519620000,1364.05 +2006-10-16,1365.61,1370.20,1364.48,1369.06,2305920000,1369.06 +2006-10-13,1362.82,1366.63,1360.50,1365.62,2482920000,1365.62 +2006-10-12,1349.94,1363.76,1349.94,1362.83,2514350000,1362.83 +2006-10-11,1353.28,1353.97,1343.57,1349.95,2521000000,1349.95 +2006-10-10,1350.62,1354.23,1348.60,1353.42,2376140000,1353.42 +2006-10-09,1349.58,1352.69,1346.55,1350.66,1935170000,1350.66 +2006-10-06,1353.22,1353.22,1344.21,1349.59,2523000000,1349.59 +2006-10-05,1349.84,1353.79,1347.75,1353.22,2817240000,1353.22 +2006-10-04,1333.81,1350.20,1331.48,1350.20,3019880000,1350.20 +2006-10-03,1331.32,1338.31,1327.10,1334.11,2682690000,1334.11 +2006-10-02,1335.82,1338.54,1330.28,1331.32,2154480000,1331.32 +2006-09-29,1339.15,1339.88,1335.64,1335.85,2273430000,1335.85 +2006-09-28,1336.56,1340.28,1333.75,1338.88,2397820000,1338.88 +2006-09-27,1336.12,1340.08,1333.54,1336.59,2749190000,1336.59 +2006-09-26,1326.35,1336.60,1325.30,1336.35,2673350000,1336.35 +2006-09-25,1314.78,1329.35,1311.58,1326.37,2710240000,1326.37 +2006-09-22,1318.03,1318.03,1310.94,1314.78,2162880000,1314.78 +2006-09-21,1324.89,1328.19,1315.45,1318.03,2627440000,1318.03 +2006-09-20,1318.28,1328.53,1318.28,1325.18,2543070000,1325.18 +2006-09-19,1321.17,1322.04,1312.17,1317.64,2390850000,1317.64 +2006-09-18,1319.85,1324.87,1318.16,1321.18,2325080000,1321.18 +2006-09-15,1316.28,1324.65,1316.28,1319.66,3198030000,1319.66 +2006-09-14,1318.00,1318.00,1313.25,1316.28,2351220000,1316.28 +2006-09-13,1312.74,1319.92,1311.12,1318.07,2597220000,1318.07 +2006-09-12,1299.53,1314.28,1299.53,1313.00,2791580000,1313.00 +2006-09-11,1298.86,1302.36,1290.93,1299.54,2506430000,1299.54 +2006-09-08,1294.02,1300.14,1294.02,1298.92,2132890000,1298.92 +2006-09-07,1300.21,1301.25,1292.13,1294.02,2325850000,1294.02 +2006-09-06,1313.04,1313.04,1299.28,1300.26,2329870000,1300.26 +2006-09-05,1310.94,1314.67,1308.82,1313.25,2114480000,1313.25 +2006-09-01,1303.80,1312.03,1303.80,1311.01,1800520000,1311.01 +2006-08-31,1304.25,1306.11,1302.45,1303.82,1974540000,1303.82 +2006-08-30,1303.70,1306.74,1302.15,1305.37,2060690000,1305.37 +2006-08-29,1301.57,1305.02,1295.29,1304.28,2093720000,1304.28 +2006-08-28,1295.09,1305.02,1293.97,1301.78,1834920000,1301.78 +2006-08-25,1295.92,1298.88,1292.39,1295.09,1667580000,1295.09 +2006-08-24,1292.97,1297.23,1291.40,1296.06,1930320000,1296.06 +2006-08-23,1298.73,1301.50,1289.82,1292.99,1893670000,1292.99 +2006-08-22,1297.52,1302.49,1294.44,1298.82,1908740000,1298.82 +2006-08-21,1302.30,1302.30,1295.51,1297.52,1759240000,1297.52 +2006-08-18,1297.48,1302.30,1293.57,1302.30,2033910000,1302.30 +2006-08-17,1295.37,1300.78,1292.71,1297.48,2458340000,1297.48 +2006-08-16,1285.27,1296.21,1285.27,1295.43,2554570000,1295.43 +2006-08-15,1268.19,1286.23,1268.19,1285.58,2334100000,1285.58 +2006-08-14,1266.67,1278.90,1266.67,1268.21,2118020000,1268.21 +2006-08-11,1271.64,1271.64,1262.08,1266.74,2004540000,1266.74 +2006-08-10,1265.72,1272.55,1261.30,1271.81,2402190000,1271.81 +2006-08-09,1271.13,1283.74,1264.73,1265.95,2555180000,1265.95 +2006-08-08,1275.67,1282.75,1268.37,1271.48,2457840000,1271.48 +2006-08-07,1279.31,1279.31,1273.00,1275.77,2045660000,1275.77 +2006-08-04,1280.26,1292.92,1273.82,1279.36,2530970000,1279.36 +2006-08-03,1278.22,1283.96,1271.25,1280.27,2728440000,1280.27 +2006-08-02,1270.73,1283.42,1270.73,1277.41,2610750000,1277.41 +2006-08-01,1278.53,1278.66,1265.71,1270.92,2527690000,1270.92 +2006-07-31,1278.53,1278.66,1274.31,1276.66,2461300000,1276.66 +2006-07-28,1263.15,1280.42,1263.15,1278.55,2480420000,1278.55 +2006-07-27,1268.20,1275.85,1261.92,1263.20,2776710000,1263.20 +2006-07-26,1268.87,1273.89,1261.94,1268.40,2667710000,1268.40 +2006-07-25,1260.91,1272.39,1257.19,1268.88,2563930000,1268.88 +2006-07-24,1240.25,1262.50,1240.25,1260.91,2312720000,1260.91 +2006-07-21,1249.12,1250.96,1238.72,1240.29,2704090000,1240.29 +2006-07-20,1259.81,1262.56,1249.13,1249.13,2345580000,1249.13 +2006-07-19,1236.74,1261.81,1236.74,1259.81,2701980000,1259.81 +2006-07-18,1234.48,1239.86,1224.54,1236.86,2481750000,1236.86 +2006-07-17,1236.20,1240.07,1231.49,1234.49,2146410000,1234.49 +2006-07-14,1242.29,1242.70,1228.45,1236.20,2467120000,1236.20 +2006-07-13,1258.58,1258.58,1241.43,1242.28,2545760000,1242.28 +2006-07-12,1272.39,1273.31,1257.29,1258.60,2250450000,1258.60 +2006-07-11,1267.26,1273.64,1259.65,1272.43,2310850000,1272.43 +2006-07-10,1265.46,1274.06,1264.46,1267.34,1854590000,1267.34 +2006-07-07,1274.08,1275.38,1263.13,1265.48,1988150000,1265.48 +2006-07-06,1270.58,1278.32,1270.58,1274.08,2009160000,1274.08 +2006-07-05,1280.05,1280.05,1265.91,1270.91,2165070000,1270.91 +2006-07-03,1270.06,1280.38,1270.06,1280.19,1114470000,1280.19 +2006-06-30,1272.86,1276.30,1270.20,1270.20,3049560000,1270.20 +2006-06-29,1245.94,1272.88,1245.94,1272.87,2621250000,1272.87 +2006-06-28,1238.99,1247.06,1237.59,1246.00,2085490000,1246.00 +2006-06-27,1250.55,1253.37,1238.94,1239.20,2203130000,1239.20 +2006-06-26,1244.50,1250.92,1243.68,1250.56,1878580000,1250.56 +2006-06-23,1245.59,1253.13,1241.43,1244.50,2017270000,1244.50 +2006-06-22,1251.92,1251.92,1241.53,1245.60,2148180000,1245.60 +2006-06-21,1240.09,1257.96,1240.09,1252.20,2361230000,1252.20 +2006-06-20,1240.12,1249.01,1238.87,1240.12,2232950000,1240.12 +2006-06-19,1251.54,1255.93,1237.17,1240.13,2517200000,1240.13 +2006-06-16,1256.16,1256.27,1246.33,1251.54,2783390000,1251.54 +2006-06-15,1230.01,1258.64,1230.01,1256.16,2775480000,1256.16 +2006-06-14,1223.66,1231.46,1219.29,1230.04,2667990000,1230.04 +2006-06-13,1236.08,1243.37,1222.52,1223.69,3215770000,1223.69 +2006-06-12,1252.27,1255.22,1236.43,1237.44,2247010000,1237.44 +2006-06-09,1257.93,1262.58,1250.03,1252.30,2214000000,1252.30 +2006-06-08,1256.08,1259.85,1235.18,1257.93,3543790000,1257.93 +2006-06-07,1263.61,1272.47,1255.77,1256.15,2644170000,1256.15 +2006-06-06,1265.23,1269.88,1254.46,1263.85,2697650000,1263.85 +2006-06-05,1288.16,1288.16,1264.66,1265.29,2313470000,1265.29 +2006-06-02,1285.71,1290.68,1280.22,1288.22,2295540000,1288.22 +2006-06-01,1270.05,1285.71,1269.19,1285.71,2360160000,1285.71 +2006-05-31,1259.38,1270.09,1259.38,1270.09,2692160000,1270.09 +2006-05-30,1280.04,1280.04,1259.87,1259.87,2176190000,1259.87 +2006-05-26,1272.71,1280.54,1272.50,1280.16,1814020000,1280.16 +2006-05-25,1258.41,1273.26,1258.41,1272.88,2372730000,1272.88 +2006-05-24,1256.56,1264.53,1245.34,1258.57,2999030000,1258.57 +2006-05-23,1262.06,1273.67,1256.15,1256.58,2605250000,1256.58 +2006-05-22,1267.03,1268.77,1252.98,1262.07,2773010000,1262.07 +2006-05-19,1261.81,1272.15,1256.28,1267.03,2982300000,1267.03 +2006-05-18,1270.25,1274.89,1261.75,1261.81,2537490000,1261.81 +2006-05-17,1291.73,1291.73,1267.31,1270.32,2830200000,1270.32 +2006-05-16,1294.50,1297.88,1288.51,1292.08,2386210000,1292.08 +2006-05-15,1291.19,1294.81,1284.51,1294.50,2505660000,1294.50 +2006-05-12,1305.88,1305.88,1290.38,1291.24,2567970000,1291.24 +2006-05-11,1322.63,1322.63,1303.45,1305.92,2531520000,1305.92 +2006-05-10,1324.57,1325.51,1317.44,1322.85,2268550000,1322.85 +2006-05-09,1324.66,1326.60,1322.48,1325.14,2157290000,1325.14 +2006-05-08,1325.76,1326.70,1322.87,1324.66,2151300000,1324.66 +2006-05-05,1312.25,1326.53,1312.25,1325.76,2294760000,1325.76 +2006-05-04,1307.85,1315.14,1307.85,1312.25,2431450000,1312.25 +2006-05-03,1313.21,1313.47,1303.92,1308.12,2395230000,1308.12 +2006-05-02,1305.19,1313.66,1305.19,1313.21,2403470000,1313.21 +2006-05-01,1310.61,1317.21,1303.46,1305.19,2437040000,1305.19 +2006-04-28,1309.72,1316.04,1306.16,1310.61,2419920000,1310.61 +2006-04-27,1305.41,1315.00,1295.57,1309.72,2772010000,1309.72 +2006-04-26,1301.74,1310.97,1301.74,1305.41,2502690000,1305.41 +2006-04-25,1308.11,1310.79,1299.17,1301.74,2366380000,1301.74 +2006-04-24,1311.28,1311.28,1303.79,1308.11,2117330000,1308.11 +2006-04-21,1311.46,1317.67,1306.59,1311.28,2392630000,1311.28 +2006-04-20,1309.93,1318.16,1306.38,1311.46,2512920000,1311.46 +2006-04-19,1307.65,1310.39,1302.79,1309.93,2447310000,1309.93 +2006-04-18,1285.33,1309.02,1285.33,1307.28,2595440000,1307.28 +2006-04-17,1289.12,1292.45,1280.74,1285.33,1794650000,1285.33 +2006-04-13,1288.12,1292.09,1283.37,1289.12,1891940000,1289.12 +2006-04-12,1286.57,1290.93,1286.45,1288.12,1938100000,1288.12 +2006-04-11,1296.60,1300.71,1282.96,1286.57,2232880000,1286.57 +2006-04-10,1295.51,1300.74,1293.17,1296.62,1898320000,1296.62 +2006-04-07,1309.04,1314.07,1294.18,1295.50,2082470000,1295.50 +2006-04-06,1311.56,1311.99,1302.44,1309.04,2281680000,1309.04 +2006-04-05,1305.93,1312.81,1304.82,1311.56,2420020000,1311.56 +2006-04-04,1297.81,1307.55,1294.71,1305.93,2147660000,1305.93 +2006-04-03,1302.88,1309.19,1296.65,1297.81,2494080000,1297.81 +2006-03-31,1300.25,1303.00,1294.87,1294.87,2236710000,1294.87 +2006-03-30,1302.89,1310.15,1296.72,1300.25,2294560000,1300.25 +2006-03-29,1293.23,1305.60,1293.23,1302.89,2143540000,1302.89 +2006-03-28,1301.61,1306.24,1291.84,1293.23,2148580000,1293.23 +2006-03-27,1302.95,1303.74,1299.09,1301.61,2029700000,1301.61 +2006-03-24,1301.67,1306.53,1298.89,1302.95,2326070000,1302.95 +2006-03-23,1305.04,1305.04,1298.11,1301.67,1980940000,1301.67 +2006-03-22,1297.23,1305.97,1295.81,1305.04,2039810000,1305.04 +2006-03-21,1305.08,1310.88,1295.82,1297.23,2147370000,1297.23 +2006-03-20,1307.25,1310.00,1303.59,1305.08,1976830000,1305.08 +2006-03-17,1305.33,1309.79,1305.32,1307.25,2549620000,1307.25 +2006-03-16,1303.02,1310.45,1303.02,1305.33,2292180000,1305.33 +2006-03-15,1297.48,1304.40,1294.97,1303.02,2293000000,1303.02 +2006-03-14,1284.13,1298.14,1282.67,1297.48,2165270000,1297.48 +2006-03-13,1281.58,1287.37,1281.58,1284.13,2070330000,1284.13 +2006-03-10,1272.23,1284.37,1271.11,1281.42,2123450000,1281.42 +2006-03-09,1278.47,1282.74,1272.23,1272.23,2140110000,1272.23 +2006-03-08,1275.88,1280.33,1268.42,1278.47,2442870000,1278.47 +2006-03-07,1278.26,1278.26,1271.11,1275.88,2268050000,1275.88 +2006-03-06,1287.23,1288.23,1275.67,1278.26,2280190000,1278.26 +2006-03-03,1289.14,1297.33,1284.20,1287.23,2152950000,1287.23 +2006-03-02,1291.24,1291.24,1283.21,1289.14,2494590000,1289.14 +2006-03-01,1280.66,1291.80,1280.66,1291.24,2308320000,1291.24 +2006-02-28,1294.12,1294.12,1278.66,1280.66,2370860000,1280.66 +2006-02-27,1289.43,1297.57,1289.43,1294.12,1975320000,1294.12 +2006-02-24,1287.79,1292.11,1285.62,1289.43,1933010000,1289.43 +2006-02-23,1292.67,1293.84,1285.14,1287.79,2144210000,1287.79 +2006-02-22,1283.03,1294.17,1283.03,1292.67,2222380000,1292.67 +2006-02-21,1287.24,1291.92,1281.33,1283.03,2104320000,1283.03 +2006-02-17,1289.38,1289.47,1284.07,1287.24,2128260000,1287.24 +2006-02-16,1280.00,1289.39,1280.00,1289.38,2251490000,1289.38 +2006-02-15,1275.53,1281.00,1271.06,1280.00,2317590000,1280.00 +2006-02-14,1262.86,1278.21,1260.80,1275.53,2437940000,1275.53 +2006-02-13,1266.99,1266.99,1258.34,1262.86,1850080000,1262.86 +2006-02-10,1263.82,1269.89,1254.98,1266.99,2290050000,1266.99 +2006-02-09,1265.65,1274.56,1262.80,1263.78,2441920000,1263.78 +2006-02-08,1254.78,1266.47,1254.78,1265.65,2456860000,1265.65 +2006-02-07,1265.02,1265.78,1253.61,1254.78,2366370000,1254.78 +2006-02-06,1264.03,1267.04,1261.62,1265.02,2132360000,1265.02 +2006-02-03,1270.84,1270.87,1261.02,1264.03,2282210000,1264.03 +2006-02-02,1282.46,1282.46,1267.72,1270.84,2565300000,1270.84 +2006-02-01,1280.08,1283.33,1277.57,1282.46,2589410000,1282.46 +2006-01-31,1285.20,1285.20,1276.85,1280.08,2708310000,1280.08 +2006-01-30,1283.72,1287.94,1283.51,1285.19,2282730000,1285.19 +2006-01-27,1273.83,1286.38,1273.83,1283.72,2623620000,1283.72 +2006-01-26,1264.68,1276.44,1264.68,1273.83,2856780000,1273.83 +2006-01-25,1266.86,1271.87,1259.42,1264.68,2617060000,1264.68 +2006-01-24,1263.82,1271.47,1263.82,1266.86,2608720000,1266.86 +2006-01-23,1261.49,1268.19,1261.49,1263.82,2256070000,1263.82 +2006-01-20,1285.04,1285.04,1260.92,1261.49,2845810000,1261.49 +2006-01-19,1277.93,1287.79,1277.93,1285.04,2444020000,1285.04 +2006-01-18,1282.93,1282.93,1272.08,1277.93,2233200000,1277.93 +2006-01-17,1287.61,1287.61,1278.61,1283.03,2179970000,1283.03 +2006-01-13,1286.06,1288.96,1282.78,1287.61,2206510000,1287.61 +2006-01-12,1294.18,1294.18,1285.04,1286.06,2318350000,1286.06 +2006-01-11,1289.72,1294.90,1288.12,1294.18,2406130000,1294.18 +2006-01-10,1290.15,1290.15,1283.76,1289.69,2373080000,1289.69 +2006-01-09,1285.45,1290.78,1284.82,1290.15,2301490000,1290.15 +2006-01-06,1273.48,1286.09,1273.48,1285.45,2446560000,1285.45 +2006-01-05,1273.46,1276.91,1270.30,1273.48,2433340000,1273.48 +2006-01-04,1268.80,1275.37,1267.74,1273.46,2515330000,1273.46 +2006-01-03,1248.29,1270.22,1245.74,1268.80,2554570000,1268.80 +2005-12-30,1254.42,1254.42,1246.59,1248.29,1443500000,1248.29 +2005-12-29,1258.17,1260.61,1254.18,1254.42,1382540000,1254.42 +2005-12-28,1256.54,1261.10,1256.54,1258.17,1422360000,1258.17 +2005-12-27,1268.66,1271.83,1256.54,1256.54,1540470000,1256.54 +2005-12-23,1268.12,1269.76,1265.92,1268.66,1285810000,1268.66 +2005-12-22,1262.79,1268.19,1262.50,1268.12,1888500000,1268.12 +2005-12-21,1259.62,1269.37,1259.62,1262.79,2065170000,1262.79 +2005-12-20,1259.92,1263.86,1257.21,1259.62,1996690000,1259.62 +2005-12-19,1267.32,1270.51,1259.28,1259.92,2208810000,1259.92 +2005-12-16,1270.94,1275.24,1267.32,1267.32,2584190000,1267.32 +2005-12-15,1272.74,1275.17,1267.74,1270.94,2180590000,1270.94 +2005-12-14,1267.43,1275.80,1267.07,1272.74,2145520000,1272.74 +2005-12-13,1260.43,1272.11,1258.56,1267.43,2390020000,1267.43 +2005-12-12,1259.37,1263.86,1255.52,1260.43,1876550000,1260.43 +2005-12-09,1255.84,1263.08,1254.24,1259.37,1896290000,1259.37 +2005-12-08,1257.37,1263.36,1250.91,1255.84,2178300000,1255.84 +2005-12-07,1263.70,1264.85,1253.02,1257.37,2093830000,1257.37 +2005-12-06,1262.09,1272.89,1262.09,1263.70,2110740000,1263.70 +2005-12-05,1265.08,1265.08,1258.12,1262.09,2325840000,1262.09 +2005-12-02,1264.67,1266.85,1261.42,1265.08,2125580000,1265.08 +2005-12-01,1249.48,1266.17,1249.48,1264.67,2614830000,1264.67 +2005-11-30,1257.48,1260.93,1249.39,1249.48,2374690000,1249.48 +2005-11-29,1257.46,1266.18,1257.46,1257.48,2268340000,1257.48 +2005-11-28,1268.25,1268.44,1257.17,1257.46,2016900000,1257.46 +2005-11-25,1265.61,1268.78,1265.54,1268.25,724940000,1268.25 +2005-11-23,1261.23,1270.64,1259.51,1265.61,1985400000,1265.61 +2005-11-22,1254.85,1261.90,1251.40,1261.23,2291420000,1261.23 +2005-11-21,1248.27,1255.89,1246.90,1254.85,2117350000,1254.85 +2005-11-18,1242.80,1249.58,1240.71,1248.27,2453290000,1248.27 +2005-11-17,1231.21,1242.96,1231.21,1242.80,2298040000,1242.80 +2005-11-16,1229.01,1232.24,1227.18,1231.21,2121580000,1231.21 +2005-11-15,1233.76,1237.94,1226.41,1229.01,2359370000,1229.01 +2005-11-14,1234.72,1237.20,1231.78,1233.76,1899780000,1233.76 +2005-11-11,1230.96,1235.70,1230.72,1234.72,1773140000,1234.72 +2005-11-10,1220.65,1232.41,1215.05,1230.96,2378460000,1230.96 +2005-11-09,1218.59,1226.59,1216.53,1220.65,2214460000,1220.65 +2005-11-08,1222.81,1222.81,1216.08,1218.59,1965050000,1218.59 +2005-11-07,1220.14,1224.18,1217.29,1222.81,1987580000,1222.81 +2005-11-04,1219.94,1222.52,1214.45,1220.14,2050510000,1220.14 +2005-11-03,1214.76,1224.70,1214.76,1219.94,2716630000,1219.94 +2005-11-02,1202.76,1215.17,1201.07,1214.76,2648090000,1214.76 +2005-11-01,1207.01,1207.34,1201.66,1202.76,2457850000,1202.76 +2005-10-31,1198.41,1211.43,1198.41,1207.01,2567470000,1207.01 +2005-10-28,1178.90,1198.41,1178.90,1198.41,2379400000,1198.41 +2005-10-27,1191.38,1192.65,1178.89,1178.90,2395370000,1178.90 +2005-10-26,1196.54,1204.01,1191.38,1191.38,2467750000,1191.38 +2005-10-25,1199.38,1201.30,1189.29,1196.54,2312470000,1196.54 +2005-10-24,1179.59,1199.39,1179.59,1199.38,2197790000,1199.38 +2005-10-21,1177.80,1186.46,1174.92,1179.59,2470920000,1179.59 +2005-10-20,1195.76,1197.30,1173.30,1177.80,2617250000,1177.80 +2005-10-19,1178.14,1195.76,1170.55,1195.76,2703590000,1195.76 +2005-10-18,1190.10,1190.10,1178.13,1178.14,2197010000,1178.14 +2005-10-17,1186.57,1191.21,1184.48,1190.10,2054570000,1190.10 +2005-10-14,1176.84,1187.13,1175.44,1186.57,2188940000,1186.57 +2005-10-13,1177.68,1179.56,1168.20,1176.84,2351150000,1176.84 +2005-10-12,1184.87,1190.02,1173.65,1177.68,2491280000,1177.68 +2005-10-11,1187.33,1193.10,1183.16,1184.87,2299040000,1184.87 +2005-10-10,1195.90,1196.52,1186.12,1187.33,2195990000,1187.33 +2005-10-07,1191.49,1199.71,1191.46,1195.90,2126080000,1195.90 +2005-10-06,1196.39,1202.14,1181.92,1191.49,2792030000,1191.49 +2005-10-05,1214.47,1214.47,1196.25,1196.39,2546780000,1196.39 +2005-10-04,1226.70,1229.88,1214.02,1214.47,2341420000,1214.47 +2005-10-03,1228.81,1233.34,1225.15,1226.70,2097490000,1226.70 +2005-09-30,1227.68,1229.57,1225.22,1228.81,2097520000,1228.81 +2005-09-29,1216.89,1228.70,1211.54,1227.68,2176120000,1227.68 +2005-09-28,1215.66,1220.98,1212.72,1216.89,2106980000,1216.89 +2005-09-27,1215.63,1220.17,1211.11,1215.66,1976270000,1215.66 +2005-09-26,1215.29,1222.56,1211.84,1215.63,2022220000,1215.63 +2005-09-23,1214.62,1218.83,1209.80,1215.29,1973020000,1215.29 +2005-09-22,1210.20,1216.64,1205.35,1214.62,2424720000,1214.62 +2005-09-21,1221.34,1221.52,1209.89,1210.20,2548150000,1210.20 +2005-09-20,1231.02,1236.49,1220.07,1221.34,2319250000,1221.34 +2005-09-19,1237.91,1237.91,1227.65,1231.02,2076540000,1231.02 +2005-09-16,1228.42,1237.95,1228.42,1237.91,3152470000,1237.91 +2005-09-15,1227.16,1231.88,1224.85,1227.73,2079340000,1227.73 +2005-09-14,1231.20,1234.74,1226.16,1227.16,1986750000,1227.16 +2005-09-13,1240.57,1240.57,1231.20,1231.20,2082360000,1231.20 +2005-09-12,1241.48,1242.60,1239.15,1240.56,1938050000,1240.56 +2005-09-09,1231.67,1243.13,1231.67,1241.48,1992560000,1241.48 +2005-09-08,1236.36,1236.36,1229.51,1231.67,1955380000,1231.67 +2005-09-07,1233.39,1237.06,1230.93,1236.36,2067700000,1236.36 +2005-09-06,1218.02,1233.61,1218.02,1233.39,1932090000,1233.39 +2005-09-02,1221.59,1224.45,1217.75,1218.02,1640160000,1218.02 +2005-09-01,1220.33,1227.29,1216.18,1221.59,2229860000,1221.59 +2005-08-31,1208.41,1220.36,1204.40,1220.33,2365510000,1220.33 +2005-08-30,1212.28,1212.28,1201.07,1208.41,1916470000,1208.41 +2005-08-29,1205.10,1214.28,1201.53,1212.28,1599450000,1212.28 +2005-08-26,1212.40,1212.40,1204.23,1205.10,1541090000,1205.10 +2005-08-25,1209.59,1213.73,1209.57,1212.37,1571110000,1212.37 +2005-08-24,1217.57,1224.15,1209.37,1209.59,1930800000,1209.59 +2005-08-23,1221.73,1223.04,1214.44,1217.59,1678620000,1217.59 +2005-08-22,1219.71,1228.96,1216.47,1221.73,1621330000,1221.73 +2005-08-19,1219.02,1225.08,1219.02,1219.71,1558790000,1219.71 +2005-08-18,1220.24,1222.64,1215.93,1219.02,1808170000,1219.02 +2005-08-17,1219.34,1225.63,1218.07,1220.24,1859150000,1220.24 +2005-08-16,1233.87,1233.87,1219.05,1219.34,1820410000,1219.34 +2005-08-15,1230.40,1236.24,1226.20,1233.87,1562880000,1233.87 +2005-08-12,1237.81,1237.81,1225.87,1230.39,1709300000,1230.39 +2005-08-11,1229.13,1237.81,1228.33,1237.81,1941560000,1237.81 +2005-08-10,1231.38,1242.69,1226.58,1229.13,2172320000,1229.13 +2005-08-09,1223.13,1234.11,1223.13,1231.38,1897520000,1231.38 +2005-08-08,1226.42,1232.28,1222.67,1223.13,1804140000,1223.13 +2005-08-05,1235.86,1235.86,1225.62,1226.42,1930280000,1226.42 +2005-08-04,1245.04,1245.04,1235.15,1235.86,1981220000,1235.86 +2005-08-03,1244.12,1245.86,1240.57,1245.04,1999980000,1245.04 +2005-08-02,1235.35,1244.69,1235.35,1244.12,2043120000,1244.12 +2005-08-01,1234.18,1239.10,1233.80,1235.35,1716870000,1235.35 +2005-07-29,1243.72,1245.04,1234.18,1234.18,1789600000,1234.18 +2005-07-28,1236.79,1245.15,1235.81,1243.72,2001680000,1243.72 +2005-07-27,1231.16,1237.64,1230.15,1236.79,1945800000,1236.79 +2005-07-26,1229.03,1234.42,1229.03,1231.16,1934180000,1231.16 +2005-07-25,1233.68,1238.36,1228.15,1229.03,1717580000,1229.03 +2005-07-22,1227.04,1234.19,1226.15,1233.68,1766990000,1233.68 +2005-07-21,1235.20,1235.83,1224.70,1227.04,2129840000,1227.04 +2005-07-20,1229.35,1236.56,1222.91,1235.20,2063340000,1235.20 +2005-07-19,1221.13,1230.34,1221.13,1229.35,2041280000,1229.35 +2005-07-18,1227.92,1227.92,1221.13,1221.13,1582100000,1221.13 +2005-07-15,1226.50,1229.53,1223.50,1227.92,1716400000,1227.92 +2005-07-14,1223.29,1233.16,1223.29,1226.50,2048710000,1226.50 +2005-07-13,1222.21,1224.46,1219.64,1223.29,1812500000,1223.29 +2005-07-12,1219.44,1225.54,1216.60,1222.21,1932010000,1222.21 +2005-07-11,1211.86,1220.03,1211.86,1219.44,1846300000,1219.44 +2005-07-08,1197.87,1212.73,1197.20,1211.86,1900810000,1211.86 +2005-07-07,1194.94,1198.46,1183.55,1197.87,1952440000,1197.87 +2005-07-06,1204.99,1206.11,1194.78,1194.94,1883470000,1194.94 +2005-07-05,1194.44,1206.34,1192.49,1204.99,1805820000,1204.99 +2005-07-01,1191.33,1197.89,1191.33,1194.44,1593820000,1194.44 +2005-06-30,1199.85,1203.27,1190.51,1191.33,2109490000,1191.33 +2005-06-29,1201.57,1204.07,1198.70,1199.85,1769280000,1199.85 +2005-06-28,1190.69,1202.54,1190.69,1201.57,1772410000,1201.57 +2005-06-27,1191.57,1194.33,1188.30,1190.69,1738620000,1190.69 +2005-06-24,1200.73,1200.90,1191.45,1191.57,2418800000,1191.57 +2005-06-23,1213.88,1216.45,1200.72,1200.73,2029920000,1200.73 +2005-06-22,1213.61,1219.59,1211.69,1213.88,1823250000,1213.88 +2005-06-21,1216.10,1217.13,1211.86,1213.61,1720700000,1213.61 +2005-06-20,1216.96,1219.10,1210.65,1216.10,1714530000,1216.10 +2005-06-17,1210.93,1219.55,1210.93,1216.96,2407370000,1216.96 +2005-06-16,1206.55,1212.10,1205.47,1210.96,1776040000,1210.96 +2005-06-15,1203.91,1208.08,1198.66,1206.58,1840440000,1206.58 +2005-06-14,1200.82,1207.53,1200.18,1203.91,1698150000,1203.91 +2005-06-13,1198.11,1206.03,1194.51,1200.82,1661350000,1200.82 +2005-06-10,1200.93,1202.79,1192.64,1198.11,1664180000,1198.11 +2005-06-09,1194.67,1201.86,1191.09,1200.93,1824120000,1200.93 +2005-06-08,1197.26,1201.97,1193.33,1194.67,1715490000,1194.67 +2005-06-07,1197.51,1208.85,1197.26,1197.26,1851370000,1197.26 +2005-06-06,1196.02,1198.78,1192.75,1197.51,1547120000,1197.51 +2005-06-03,1204.29,1205.09,1194.55,1196.02,1627520000,1196.02 +2005-06-02,1202.27,1204.67,1198.42,1204.29,1813790000,1204.29 +2005-06-01,1191.50,1205.64,1191.03,1202.22,1810100000,1202.22 +2005-05-31,1198.78,1198.78,1191.50,1191.50,1840680000,1191.50 +2005-05-27,1197.62,1199.56,1195.28,1198.78,1381430000,1198.78 +2005-05-26,1190.01,1198.95,1190.01,1197.62,1654110000,1197.62 +2005-05-25,1194.07,1194.07,1185.96,1190.01,1742180000,1190.01 +2005-05-24,1193.86,1195.29,1189.87,1194.07,1681000000,1194.07 +2005-05-23,1189.28,1197.44,1188.76,1193.86,1681170000,1193.86 +2005-05-20,1191.08,1191.22,1185.19,1189.28,1631750000,1189.28 +2005-05-19,1185.56,1191.09,1184.49,1191.08,1775860000,1191.08 +2005-05-18,1173.80,1187.90,1173.80,1185.56,2266320000,1185.56 +2005-05-17,1165.69,1174.35,1159.86,1173.80,1887260000,1173.80 +2005-05-16,1154.05,1165.75,1153.64,1165.69,1856860000,1165.69 +2005-05-13,1159.36,1163.75,1146.18,1154.05,2188590000,1154.05 +2005-05-12,1171.11,1173.37,1157.76,1159.36,1995290000,1159.36 +2005-05-11,1166.22,1171.77,1157.71,1171.11,1834970000,1171.11 +2005-05-10,1178.84,1178.84,1162.98,1166.22,1889660000,1166.22 +2005-05-09,1171.35,1178.87,1169.38,1178.84,1857020000,1178.84 +2005-05-06,1172.63,1177.75,1170.50,1171.35,1707200000,1171.35 +2005-05-05,1175.65,1178.62,1166.77,1172.63,1997100000,1172.63 +2005-05-04,1161.17,1176.01,1161.17,1175.65,2306480000,1175.65 +2005-05-03,1162.16,1166.89,1156.71,1161.17,2167020000,1161.17 +2005-05-02,1156.85,1162.87,1154.71,1162.16,1980040000,1162.16 +2005-04-29,1143.22,1156.97,1139.19,1156.85,2362360000,1156.85 +2005-04-28,1156.38,1156.38,1143.22,1143.22,2182270000,1143.22 +2005-04-27,1151.74,1159.87,1144.42,1156.38,2151520000,1156.38 +2005-04-26,1162.10,1164.80,1151.83,1151.83,1959740000,1151.83 +2005-04-25,1152.12,1164.05,1152.12,1162.10,1795030000,1162.10 +2005-04-22,1159.95,1159.95,1142.95,1152.12,2045880000,1152.12 +2005-04-21,1137.50,1159.95,1137.50,1159.95,2308560000,1159.95 +2005-04-20,1152.78,1155.50,1136.15,1137.50,2217050000,1137.50 +2005-04-19,1145.98,1154.67,1145.98,1152.78,2142700000,1152.78 +2005-04-18,1142.62,1148.92,1139.80,1145.98,2180670000,1145.98 +2005-04-15,1162.05,1162.05,1141.92,1142.62,2689960000,1142.62 +2005-04-14,1173.79,1174.67,1161.70,1162.05,2355040000,1162.05 +2005-04-13,1187.76,1187.76,1171.40,1173.79,2049740000,1173.79 +2005-04-12,1181.21,1190.17,1170.85,1187.76,1979830000,1187.76 +2005-04-11,1181.20,1184.07,1178.69,1181.21,1525310000,1181.21 +2005-04-08,1191.14,1191.75,1181.13,1181.20,1661330000,1181.20 +2005-04-07,1184.07,1191.88,1183.81,1191.14,1900620000,1191.14 +2005-04-06,1181.39,1189.34,1181.39,1184.07,1797400000,1184.07 +2005-04-05,1176.12,1183.56,1176.12,1181.39,1870800000,1181.39 +2005-04-04,1172.79,1178.61,1167.72,1176.12,2079770000,1176.12 +2005-04-01,1180.59,1189.80,1169.91,1172.92,2168690000,1172.92 +2005-03-31,1181.41,1184.53,1179.49,1180.59,2214230000,1180.59 +2005-03-30,1165.36,1181.54,1165.36,1181.41,2097110000,1181.41 +2005-03-29,1174.28,1179.39,1163.69,1165.36,2223250000,1165.36 +2005-03-28,1171.42,1179.91,1171.42,1174.28,1746220000,1174.28 +2005-03-24,1172.53,1180.11,1171.42,1171.42,1721720000,1171.42 +2005-03-23,1171.71,1176.26,1168.70,1172.53,2246870000,1172.53 +2005-03-22,1183.78,1189.59,1171.63,1171.71,2114470000,1171.71 +2005-03-21,1189.65,1189.65,1178.82,1183.78,1819440000,1183.78 +2005-03-18,1190.21,1191.98,1182.78,1189.65,2344370000,1189.65 +2005-03-17,1188.07,1193.28,1186.34,1190.21,1581930000,1190.21 +2005-03-16,1197.75,1197.75,1185.61,1188.07,1653190000,1188.07 +2005-03-15,1206.83,1210.54,1197.75,1197.75,1513530000,1197.75 +2005-03-14,1200.08,1206.83,1199.51,1206.83,1437430000,1206.83 +2005-03-11,1209.25,1213.04,1198.15,1200.08,1449820000,1200.08 +2005-03-10,1207.01,1211.23,1201.41,1209.25,1604020000,1209.25 +2005-03-09,1219.43,1219.43,1206.66,1207.01,1704970000,1207.01 +2005-03-08,1225.31,1225.69,1218.57,1219.43,1523090000,1219.43 +2005-03-07,1222.12,1229.11,1222.12,1225.31,1488830000,1225.31 +2005-03-04,1210.47,1224.76,1210.47,1222.12,1636820000,1222.12 +2005-03-03,1210.08,1215.72,1204.45,1210.47,1616240000,1210.47 +2005-03-02,1210.41,1215.79,1204.22,1210.08,1568540000,1210.08 +2005-03-01,1203.60,1212.25,1203.60,1210.41,1708060000,1210.41 +2005-02-28,1211.37,1211.37,1198.13,1203.60,1795480000,1203.60 +2005-02-25,1200.20,1212.15,1199.61,1211.37,1523680000,1211.37 +2005-02-24,1190.80,1200.42,1187.80,1200.20,1518750000,1200.20 +2005-02-23,1184.16,1193.52,1184.16,1190.80,1501090000,1190.80 +2005-02-22,1201.59,1202.48,1184.16,1184.16,1744940000,1184.16 +2005-02-18,1200.75,1202.92,1197.35,1201.59,1551200000,1201.59 +2005-02-17,1210.34,1211.33,1200.74,1200.75,1580120000,1200.75 +2005-02-16,1210.12,1212.44,1205.06,1210.34,1490100000,1210.34 +2005-02-15,1206.14,1212.44,1205.52,1210.12,1527080000,1210.12 +2005-02-14,1205.30,1206.93,1203.59,1206.14,1290180000,1206.14 +2005-02-11,1197.01,1208.38,1193.28,1205.30,1562300000,1205.30 +2005-02-10,1191.99,1198.75,1191.54,1197.01,1491670000,1197.01 +2005-02-09,1202.30,1203.83,1191.54,1191.99,1511040000,1191.99 +2005-02-08,1201.72,1205.11,1200.16,1202.30,1416170000,1202.30 +2005-02-07,1203.03,1204.15,1199.27,1201.72,1347270000,1201.72 +2005-02-04,1189.89,1203.47,1189.67,1203.03,1648160000,1203.03 +2005-02-03,1193.19,1193.19,1185.64,1189.89,1554460000,1189.89 +2005-02-02,1189.41,1195.25,1188.92,1193.19,1561740000,1193.19 +2005-02-01,1181.27,1190.39,1180.95,1189.41,1681980000,1189.41 +2005-01-31,1171.36,1182.07,1171.36,1181.27,1679800000,1181.27 +2005-01-28,1174.55,1175.61,1166.25,1171.36,1641800000,1171.36 +2005-01-27,1174.07,1177.50,1170.15,1174.55,1600600000,1174.55 +2005-01-26,1168.41,1175.96,1168.41,1174.07,1635900000,1174.07 +2005-01-25,1163.75,1174.30,1163.75,1168.41,1610400000,1168.41 +2005-01-24,1167.87,1173.03,1163.75,1163.75,1494600000,1163.75 +2005-01-21,1175.41,1179.45,1167.82,1167.87,1643500000,1167.87 +2005-01-20,1184.63,1184.63,1173.42,1175.41,1692000000,1175.41 +2005-01-19,1195.98,1195.98,1184.41,1184.63,1498700000,1184.63 +2005-01-18,1184.52,1195.98,1180.10,1195.98,1596800000,1195.98 +2005-01-14,1177.45,1185.21,1177.45,1184.52,1335400000,1184.52 +2005-01-13,1187.70,1187.70,1175.81,1177.45,1510300000,1177.45 +2005-01-12,1182.99,1187.92,1175.64,1187.70,1562100000,1187.70 +2005-01-11,1190.25,1190.25,1180.43,1182.99,1488800000,1182.99 +2005-01-10,1186.19,1194.78,1184.80,1190.25,1490400000,1190.25 +2005-01-07,1187.89,1192.20,1182.16,1186.19,1477900000,1186.19 +2005-01-06,1183.74,1191.63,1183.27,1187.89,1569100000,1187.89 +2005-01-05,1188.05,1192.73,1183.72,1183.74,1738900000,1183.74 +2005-01-04,1202.08,1205.84,1185.39,1188.05,1721000000,1188.05 +2005-01-03,1211.92,1217.80,1200.32,1202.08,1510800000,1202.08 +2004-12-31,1213.55,1217.33,1211.65,1211.92,786900000,1211.92 +2004-12-30,1213.45,1216.47,1213.41,1213.55,829800000,1213.55 +2004-12-29,1213.54,1213.85,1210.95,1213.45,925900000,1213.45 +2004-12-28,1204.92,1213.54,1204.92,1213.54,983000000,1213.54 +2004-12-27,1210.13,1214.13,1204.92,1204.92,922000000,1204.92 +2004-12-23,1209.57,1213.66,1208.71,1210.13,956100000,1210.13 +2004-12-22,1205.45,1211.42,1203.85,1209.57,1390800000,1209.57 +2004-12-21,1194.65,1205.93,1194.65,1205.45,1483700000,1205.45 +2004-12-20,1194.20,1203.43,1193.36,1194.65,1422800000,1194.65 +2004-12-17,1203.21,1203.21,1193.49,1194.20,2335000000,1194.20 +2004-12-16,1205.72,1207.97,1198.41,1203.21,1793900000,1203.21 +2004-12-15,1203.38,1206.61,1199.44,1205.72,1695800000,1205.72 +2004-12-14,1198.68,1205.29,1197.84,1203.38,1544400000,1203.38 +2004-12-13,1188.00,1198.74,1188.00,1198.68,1436100000,1198.68 +2004-12-10,1189.24,1191.45,1185.24,1188.00,1443700000,1188.00 +2004-12-09,1182.81,1190.51,1173.79,1189.24,1624700000,1189.24 +2004-12-08,1177.07,1184.05,1177.07,1182.81,1525200000,1182.81 +2004-12-07,1190.25,1192.17,1177.07,1177.07,1533900000,1177.07 +2004-12-06,1191.17,1192.41,1185.18,1190.25,1354400000,1190.25 +2004-12-03,1190.33,1197.46,1187.71,1191.17,1566700000,1191.17 +2004-12-02,1191.37,1194.80,1186.72,1190.33,1774900000,1190.33 +2004-12-01,1173.78,1191.37,1173.78,1191.37,1772800000,1191.37 +2004-11-30,1178.57,1178.66,1173.81,1173.82,1553500000,1173.82 +2004-11-29,1182.65,1186.94,1172.37,1178.57,1378500000,1178.57 +2004-11-26,1181.76,1186.62,1181.08,1182.65,504580000,1182.65 +2004-11-24,1176.94,1182.46,1176.94,1181.76,1149600000,1181.76 +2004-11-23,1177.24,1179.52,1171.41,1176.94,1428300000,1176.94 +2004-11-22,1170.34,1178.18,1167.89,1177.24,1392700000,1177.24 +2004-11-19,1183.55,1184.00,1169.19,1170.34,1526600000,1170.34 +2004-11-18,1181.94,1184.90,1180.15,1183.55,1456700000,1183.55 +2004-11-17,1175.43,1188.46,1175.43,1181.94,1684200000,1181.94 +2004-11-16,1183.81,1183.81,1175.32,1175.43,1364400000,1175.43 +2004-11-15,1184.17,1184.48,1179.85,1183.81,1453300000,1183.81 +2004-11-12,1173.48,1184.17,1171.43,1184.17,1531600000,1184.17 +2004-11-11,1162.91,1174.80,1162.91,1173.48,1393000000,1173.48 +2004-11-10,1164.08,1169.25,1162.51,1162.91,1504300000,1162.91 +2004-11-09,1164.89,1168.96,1162.48,1164.08,1450800000,1164.08 +2004-11-08,1166.17,1166.77,1162.32,1164.89,1358700000,1164.89 +2004-11-05,1161.67,1170.87,1160.66,1166.17,1724400000,1166.17 +2004-11-04,1143.20,1161.67,1142.34,1161.67,1782700000,1161.67 +2004-11-03,1130.54,1147.57,1130.54,1143.20,1767500000,1143.20 +2004-11-02,1130.51,1140.48,1128.12,1130.56,1659000000,1130.56 +2004-11-01,1130.20,1133.41,1127.60,1130.51,1395900000,1130.51 +2004-10-29,1127.44,1131.40,1124.62,1130.20,1500800000,1130.20 +2004-10-28,1125.34,1130.67,1120.60,1127.44,1628200000,1127.44 +2004-10-27,1111.09,1126.29,1107.43,1125.40,1741900000,1125.40 +2004-10-26,1094.81,1111.10,1094.81,1111.09,1685400000,1111.09 +2004-10-25,1095.74,1096.81,1090.29,1094.80,1380500000,1094.80 +2004-10-22,1106.49,1108.14,1095.47,1095.74,1469600000,1095.74 +2004-10-21,1103.66,1108.87,1098.47,1106.49,1673000000,1106.49 +2004-10-20,1103.23,1104.09,1094.25,1103.66,1685700000,1103.66 +2004-10-19,1114.02,1117.96,1103.15,1103.23,1737500000,1103.23 +2004-10-18,1108.20,1114.46,1103.33,1114.02,1373300000,1114.02 +2004-10-15,1103.29,1113.17,1102.14,1108.20,1645100000,1108.20 +2004-10-14,1113.65,1114.96,1102.06,1103.29,1489500000,1103.29 +2004-10-13,1121.84,1127.01,1109.63,1113.65,1546200000,1113.65 +2004-10-12,1124.39,1124.39,1115.77,1121.84,1320100000,1121.84 +2004-10-11,1122.14,1126.20,1122.14,1124.39,943800000,1124.39 +2004-10-08,1130.65,1132.92,1120.19,1122.14,1291600000,1122.14 +2004-10-07,1142.05,1142.05,1130.50,1130.65,1447500000,1130.65 +2004-10-06,1134.48,1142.05,1132.94,1142.05,1416700000,1142.05 +2004-10-05,1135.17,1137.87,1132.03,1134.48,1418400000,1134.48 +2004-10-04,1131.50,1140.13,1131.50,1135.17,1534000000,1135.17 +2004-10-01,1114.58,1131.64,1114.58,1131.50,1582200000,1131.50 +2004-09-30,1114.80,1116.31,1109.68,1114.58,1748000000,1114.58 +2004-09-29,1110.06,1114.80,1107.42,1114.80,1402900000,1114.80 +2004-09-28,1103.52,1111.77,1101.29,1110.06,1396600000,1110.06 +2004-09-27,1110.11,1110.11,1103.24,1103.52,1263500000,1103.52 +2004-09-24,1108.36,1113.81,1108.36,1110.11,1255400000,1110.11 +2004-09-23,1113.56,1113.61,1108.05,1108.36,1286300000,1108.36 +2004-09-22,1129.30,1129.30,1112.67,1113.56,1379900000,1113.56 +2004-09-21,1122.20,1131.54,1122.20,1129.30,1325000000,1129.30 +2004-09-20,1128.55,1128.55,1120.34,1122.20,1197600000,1122.20 +2004-09-17,1123.50,1130.14,1123.50,1128.55,1422600000,1128.55 +2004-09-16,1120.37,1126.06,1120.37,1123.50,1113900000,1123.50 +2004-09-15,1128.33,1128.33,1119.82,1120.37,1256000000,1120.37 +2004-09-14,1125.82,1129.46,1124.72,1128.33,1204500000,1128.33 +2004-09-13,1123.92,1129.78,1123.35,1125.82,1299800000,1125.82 +2004-09-10,1118.38,1125.26,1114.39,1123.92,1261200000,1123.92 +2004-09-09,1116.27,1121.30,1113.62,1118.38,1371300000,1118.38 +2004-09-08,1121.30,1123.05,1116.27,1116.27,1246300000,1116.27 +2004-09-07,1113.63,1124.08,1113.63,1121.30,1214400000,1121.30 +2004-09-03,1118.31,1120.80,1113.57,1113.63,924170000,1113.63 +2004-09-02,1105.91,1119.11,1105.60,1118.31,1118400000,1118.31 +2004-09-01,1104.24,1109.24,1099.18,1105.91,1142100000,1105.91 +2004-08-31,1099.15,1104.24,1094.72,1104.24,1138200000,1104.24 +2004-08-30,1107.77,1107.77,1099.15,1099.15,843100000,1099.15 +2004-08-27,1105.09,1109.68,1104.62,1107.77,845400000,1107.77 +2004-08-26,1104.96,1106.78,1102.46,1105.09,1023600000,1105.09 +2004-08-25,1096.19,1106.29,1093.24,1104.96,1192200000,1104.96 +2004-08-24,1095.68,1100.94,1092.82,1096.19,1092500000,1096.19 +2004-08-23,1098.35,1101.40,1094.73,1095.68,1021900000,1095.68 +2004-08-20,1091.23,1100.26,1089.57,1098.35,1199900000,1098.35 +2004-08-19,1095.17,1095.17,1086.28,1091.23,1249400000,1091.23 +2004-08-18,1081.71,1095.17,1078.93,1095.17,1282500000,1095.17 +2004-08-17,1079.34,1086.78,1079.34,1081.71,1267800000,1081.71 +2004-08-16,1064.80,1080.66,1064.80,1079.34,1206200000,1079.34 +2004-08-13,1063.23,1067.58,1060.72,1064.80,1175100000,1064.80 +2004-08-12,1075.79,1075.79,1062.82,1063.23,1405100000,1063.23 +2004-08-11,1079.04,1079.04,1065.92,1075.79,1410400000,1075.79 +2004-08-10,1065.22,1079.04,1065.22,1079.04,1245600000,1079.04 +2004-08-09,1063.97,1069.46,1063.97,1065.22,1086000000,1065.22 +2004-08-06,1080.70,1080.70,1062.23,1063.97,1521000000,1063.97 +2004-08-05,1098.63,1098.79,1079.98,1080.70,1397400000,1080.70 +2004-08-04,1099.69,1102.45,1092.40,1098.63,1369200000,1098.63 +2004-08-03,1106.62,1106.62,1099.26,1099.69,1338300000,1099.69 +2004-08-02,1101.72,1108.60,1097.34,1106.62,1276000000,1106.62 +2004-07-30,1100.43,1103.73,1096.96,1101.72,1298200000,1101.72 +2004-07-29,1095.42,1103.51,1095.42,1100.43,1530100000,1100.43 +2004-07-28,1094.83,1098.84,1082.17,1095.42,1554300000,1095.42 +2004-07-27,1084.07,1096.65,1084.07,1094.83,1610800000,1094.83 +2004-07-26,1086.20,1089.82,1078.78,1084.07,1413400000,1084.07 +2004-07-23,1096.84,1096.84,1083.56,1086.20,1337500000,1086.20 +2004-07-22,1093.88,1099.66,1084.16,1096.84,1680800000,1096.84 +2004-07-21,1108.67,1116.27,1093.88,1093.88,1679500000,1093.88 +2004-07-20,1100.90,1108.88,1099.10,1108.67,1445800000,1108.67 +2004-07-19,1101.39,1105.52,1096.55,1100.90,1319900000,1100.90 +2004-07-16,1106.69,1112.17,1101.07,1101.39,1450300000,1101.39 +2004-07-15,1111.47,1114.63,1106.67,1106.69,1408700000,1106.69 +2004-07-14,1115.14,1119.60,1107.83,1111.47,1462000000,1111.47 +2004-07-13,1114.35,1116.30,1112.99,1115.14,1199700000,1115.14 +2004-07-12,1112.81,1116.11,1106.71,1114.35,1114600000,1114.35 +2004-07-09,1109.11,1115.57,1109.11,1112.81,1186300000,1112.81 +2004-07-08,1118.33,1119.12,1108.72,1109.11,1401100000,1109.11 +2004-07-07,1116.21,1122.37,1114.92,1118.33,1328600000,1118.33 +2004-07-06,1125.38,1125.38,1113.21,1116.21,1283300000,1116.21 +2004-07-02,1128.94,1129.15,1123.26,1125.38,1085000000,1125.38 +2004-07-01,1140.84,1140.84,1123.06,1128.94,1495700000,1128.94 +2004-06-30,1136.20,1144.20,1133.62,1140.84,1473800000,1140.84 +2004-06-29,1133.35,1138.26,1131.81,1136.20,1375000000,1136.20 +2004-06-28,1134.43,1142.60,1131.72,1133.35,1354600000,1133.35 +2004-06-25,1140.65,1145.97,1134.24,1134.43,1812900000,1134.43 +2004-06-24,1144.06,1146.34,1139.94,1140.65,1394900000,1140.65 +2004-06-23,1134.41,1145.15,1131.73,1144.06,1444200000,1144.06 +2004-06-22,1130.30,1135.05,1124.37,1134.41,1382300000,1134.41 +2004-06-21,1135.02,1138.05,1129.64,1130.30,1123900000,1130.30 +2004-06-18,1132.05,1138.96,1129.83,1135.02,1500600000,1135.02 +2004-06-17,1133.56,1133.56,1126.89,1132.05,1296700000,1132.05 +2004-06-16,1132.01,1135.28,1130.55,1133.56,1168400000,1133.56 +2004-06-15,1125.29,1137.36,1125.29,1132.01,1345900000,1132.01 +2004-06-14,1136.47,1136.47,1122.16,1125.29,1179400000,1125.29 +2004-06-10,1131.33,1136.47,1131.33,1136.47,1160600000,1136.47 +2004-06-09,1142.18,1142.18,1131.17,1131.33,1276800000,1131.33 +2004-06-08,1140.42,1142.18,1135.45,1142.18,1190300000,1142.18 +2004-06-07,1122.50,1140.54,1122.50,1140.42,1211800000,1140.42 +2004-06-04,1116.64,1129.17,1116.64,1122.50,1115300000,1122.50 +2004-06-03,1124.99,1125.31,1116.57,1116.64,1232400000,1116.64 +2004-06-02,1121.20,1128.10,1118.64,1124.99,1251700000,1124.99 +2004-06-01,1120.68,1122.70,1113.32,1121.20,1238000000,1121.20 +2004-05-28,1121.28,1122.69,1118.10,1120.68,1172600000,1120.68 +2004-05-27,1114.94,1123.95,1114.86,1121.28,1447500000,1121.28 +2004-05-26,1113.05,1116.71,1109.91,1114.94,1369400000,1114.94 +2004-05-25,1095.41,1113.80,1090.74,1113.05,1545700000,1113.05 +2004-05-24,1093.56,1101.28,1091.77,1095.41,1227500000,1095.41 +2004-05-21,1089.19,1099.64,1089.19,1093.56,1258600000,1093.56 +2004-05-20,1088.68,1092.62,1085.43,1089.19,1211000000,1089.19 +2004-05-19,1091.49,1105.93,1088.49,1088.68,1548600000,1088.68 +2004-05-18,1084.10,1094.10,1084.10,1091.49,1353000000,1091.49 +2004-05-17,1095.70,1095.70,1079.36,1084.10,1430100000,1084.10 +2004-05-14,1096.44,1102.10,1088.24,1095.70,1335900000,1095.70 +2004-05-13,1097.28,1102.77,1091.76,1096.44,1411100000,1096.44 +2004-05-12,1095.45,1097.55,1076.32,1097.28,1697600000,1097.28 +2004-05-11,1087.12,1095.69,1087.12,1095.45,1533800000,1095.45 +2004-05-10,1098.70,1098.70,1079.63,1087.12,1918400000,1087.12 +2004-05-07,1113.99,1117.30,1098.63,1098.70,1653600000,1098.70 +2004-05-06,1121.53,1121.53,1106.30,1113.99,1509300000,1113.99 +2004-05-05,1119.55,1125.07,1117.90,1121.53,1469000000,1121.53 +2004-05-04,1117.49,1127.74,1112.89,1119.55,1662100000,1119.55 +2004-05-03,1107.30,1118.72,1107.30,1117.49,1571600000,1117.49 +2004-04-30,1113.89,1119.26,1107.23,1107.30,1634700000,1107.30 +2004-04-29,1122.41,1128.80,1108.04,1113.89,1859000000,1113.89 +2004-04-28,1138.11,1138.11,1121.70,1122.41,1855600000,1122.41 +2004-04-27,1135.53,1146.56,1135.53,1138.11,1518000000,1138.11 +2004-04-26,1140.60,1145.08,1132.91,1135.53,1290600000,1135.53 +2004-04-23,1139.93,1141.92,1134.81,1140.60,1396100000,1140.60 +2004-04-22,1124.09,1142.77,1121.95,1139.93,1826700000,1139.93 +2004-04-21,1118.15,1125.72,1116.03,1124.09,1738100000,1124.09 +2004-04-20,1135.82,1139.26,1118.09,1118.15,1508500000,1118.15 +2004-04-19,1134.56,1136.18,1129.84,1135.82,1194900000,1135.82 +2004-04-16,1128.84,1136.80,1126.90,1134.61,1487800000,1134.61 +2004-04-15,1128.17,1134.08,1120.75,1128.84,1568700000,1128.84 +2004-04-14,1129.44,1132.52,1122.15,1128.17,1547700000,1128.17 +2004-04-13,1145.20,1147.78,1127.70,1129.44,1423200000,1129.44 +2004-04-12,1139.32,1147.29,1139.32,1145.20,1102400000,1145.20 +2004-04-08,1140.53,1148.97,1134.52,1139.32,1199800000,1139.32 +2004-04-07,1148.16,1148.16,1138.41,1140.53,1458800000,1140.53 +2004-04-06,1150.57,1150.57,1143.30,1148.16,1397700000,1148.16 +2004-04-05,1141.81,1150.57,1141.64,1150.57,1413700000,1150.57 +2004-04-02,1132.17,1144.81,1132.17,1141.81,1629200000,1141.81 +2004-04-01,1126.21,1135.67,1126.20,1132.17,1560700000,1132.17 +2004-03-31,1127.00,1130.83,1121.46,1126.21,1560700000,1126.21 +2004-03-30,1122.47,1127.60,1119.66,1127.00,1332400000,1127.00 +2004-03-29,1108.06,1124.37,1108.06,1122.47,1405500000,1122.47 +2004-03-26,1109.19,1115.27,1106.13,1108.06,1319100000,1108.06 +2004-03-25,1091.33,1110.38,1091.33,1109.19,1471700000,1109.19 +2004-03-24,1093.95,1098.32,1087.16,1091.33,1527800000,1091.33 +2004-03-23,1095.40,1101.52,1091.57,1093.95,1458200000,1093.95 +2004-03-22,1109.78,1109.78,1089.54,1095.40,1452300000,1095.40 +2004-03-19,1122.32,1122.72,1109.69,1109.78,1457400000,1109.78 +2004-03-18,1123.75,1125.50,1113.25,1122.32,1369200000,1122.32 +2004-03-17,1110.70,1125.76,1110.70,1123.75,1490100000,1123.75 +2004-03-16,1104.49,1113.76,1102.61,1110.70,1500700000,1110.70 +2004-03-15,1120.57,1120.57,1103.36,1104.49,1600600000,1104.49 +2004-03-12,1106.78,1120.63,1106.78,1120.57,1388500000,1120.57 +2004-03-11,1123.89,1125.96,1105.87,1106.78,1889900000,1106.78 +2004-03-10,1140.58,1141.45,1122.53,1123.89,1648400000,1123.89 +2004-03-09,1147.20,1147.32,1136.84,1140.58,1499400000,1140.58 +2004-03-08,1156.86,1159.94,1146.97,1147.20,1254400000,1147.20 +2004-03-05,1154.87,1163.23,1148.77,1156.86,1398200000,1156.86 +2004-03-04,1151.03,1154.97,1149.81,1154.87,1265800000,1154.87 +2004-03-03,1149.10,1152.44,1143.78,1151.03,1334500000,1151.03 +2004-03-02,1155.97,1156.54,1147.31,1149.10,1476000000,1149.10 +2004-03-01,1144.94,1157.45,1144.94,1155.97,1497100000,1155.97 +2004-02-27,1145.80,1151.68,1141.80,1144.94,1540400000,1144.94 +2004-02-26,1143.67,1147.23,1138.62,1144.91,1383900000,1144.91 +2004-02-25,1139.09,1145.24,1138.96,1143.67,1360700000,1143.67 +2004-02-24,1140.99,1144.54,1134.43,1139.09,1543600000,1139.09 +2004-02-23,1144.11,1146.69,1136.98,1140.99,1380400000,1140.99 +2004-02-20,1147.06,1149.81,1139.00,1144.11,1479600000,1144.11 +2004-02-19,1151.82,1158.57,1146.85,1147.06,1562800000,1147.06 +2004-02-18,1156.99,1157.40,1149.54,1151.82,1382400000,1151.82 +2004-02-17,1145.81,1158.98,1145.81,1156.99,1396500000,1156.99 +2004-02-13,1152.11,1156.88,1143.24,1145.81,1329200000,1145.81 +2004-02-12,1157.76,1157.76,1151.44,1152.11,1464300000,1152.11 +2004-02-11,1145.54,1158.89,1142.33,1157.76,1699300000,1157.76 +2004-02-10,1139.81,1147.02,1138.70,1145.54,1403900000,1145.54 +2004-02-09,1142.76,1144.46,1139.21,1139.81,1303500000,1139.81 +2004-02-06,1128.59,1142.79,1128.39,1142.76,1477600000,1142.76 +2004-02-05,1126.52,1131.17,1124.44,1128.59,1566600000,1128.59 +2004-02-04,1136.03,1136.03,1124.74,1126.52,1634800000,1126.52 +2004-02-03,1135.26,1137.44,1131.33,1136.03,1476900000,1136.03 +2004-02-02,1131.13,1142.45,1127.87,1135.26,1599200000,1135.26 +2004-01-30,1134.11,1134.17,1127.73,1131.13,1635000000,1131.13 +2004-01-29,1128.48,1134.39,1122.38,1134.11,1921900000,1134.11 +2004-01-28,1144.05,1149.14,1126.50,1128.48,1842000000,1128.48 +2004-01-27,1155.37,1155.37,1144.05,1144.05,1673100000,1144.05 +2004-01-26,1141.55,1155.38,1141.00,1155.37,1480600000,1155.37 +2004-01-23,1143.94,1150.31,1136.85,1141.55,1561200000,1141.55 +2004-01-22,1147.62,1150.51,1143.01,1143.94,1693700000,1143.94 +2004-01-21,1138.77,1149.21,1134.62,1147.62,1757600000,1147.62 +2004-01-20,1139.83,1142.93,1135.40,1138.77,1698200000,1138.77 +2004-01-16,1132.05,1139.83,1132.05,1139.83,1721100000,1139.83 +2004-01-15,1130.52,1137.11,1124.54,1132.05,1695000000,1132.05 +2004-01-14,1121.22,1130.75,1121.22,1130.52,1514600000,1130.52 +2004-01-13,1127.23,1129.07,1115.19,1121.22,1595900000,1121.22 +2004-01-12,1121.86,1127.85,1120.90,1127.23,1510200000,1127.23 +2004-01-09,1131.92,1131.92,1120.90,1121.86,1720700000,1121.86 +2004-01-08,1126.33,1131.92,1124.91,1131.92,1868400000,1131.92 +2004-01-07,1123.67,1126.33,1116.45,1126.33,1704900000,1126.33 +2004-01-06,1122.22,1124.46,1118.44,1123.67,1494500000,1123.67 +2004-01-05,1108.48,1122.22,1108.48,1122.22,1578200000,1122.22 +2004-01-02,1111.92,1118.85,1105.08,1108.48,1153200000,1108.48 +2003-12-31,1109.64,1112.56,1106.21,1111.92,1027500000,1111.92 +2003-12-30,1109.48,1109.75,1106.41,1109.64,1012600000,1109.64 +2003-12-29,1095.89,1109.48,1095.89,1109.48,1058800000,1109.48 +2003-12-26,1094.04,1098.47,1094.04,1095.89,356070000,1095.89 +2003-12-24,1096.02,1096.40,1092.73,1094.04,518060000,1094.04 +2003-12-23,1092.94,1096.95,1091.73,1096.02,1145300000,1096.02 +2003-12-22,1088.66,1092.94,1086.14,1092.94,1251700000,1092.94 +2003-12-19,1089.18,1091.06,1084.19,1088.66,1657300000,1088.66 +2003-12-18,1076.48,1089.50,1076.48,1089.18,1579900000,1089.18 +2003-12-17,1075.13,1076.54,1071.14,1076.48,1441700000,1076.48 +2003-12-16,1068.04,1075.94,1068.04,1075.13,1547900000,1075.13 +2003-12-15,1074.14,1082.79,1068.00,1068.04,1520800000,1068.04 +2003-12-12,1071.21,1074.76,1067.64,1074.14,1223100000,1074.14 +2003-12-11,1059.05,1073.63,1059.05,1071.21,1441100000,1071.21 +2003-12-10,1060.18,1063.02,1053.41,1059.05,1444000000,1059.05 +2003-12-09,1069.30,1071.94,1059.16,1060.18,1465500000,1060.18 +2003-12-08,1061.50,1069.59,1060.93,1069.30,1218900000,1069.30 +2003-12-05,1069.72,1069.72,1060.09,1061.50,1265900000,1061.50 +2003-12-04,1064.73,1070.37,1063.15,1069.72,1463100000,1069.72 +2003-12-03,1066.62,1074.30,1064.63,1064.73,1441700000,1064.73 +2003-12-02,1070.12,1071.22,1065.22,1066.62,1383200000,1066.62 +2003-12-01,1058.20,1070.47,1058.20,1070.12,1375000000,1070.12 +2003-11-28,1058.45,1060.63,1056.77,1058.20,487220000,1058.20 +2003-11-26,1053.89,1058.45,1048.28,1058.45,1097700000,1058.45 +2003-11-25,1052.08,1058.05,1049.31,1053.89,1333700000,1053.89 +2003-11-24,1035.28,1052.08,1035.28,1052.08,1302800000,1052.08 +2003-11-21,1033.65,1037.57,1031.20,1035.28,1273800000,1035.28 +2003-11-20,1042.44,1046.48,1033.42,1033.65,1326700000,1033.65 +2003-11-19,1034.15,1043.95,1034.15,1042.44,1326200000,1042.44 +2003-11-18,1043.63,1048.77,1034.00,1034.15,1354300000,1034.15 +2003-11-17,1050.35,1050.35,1035.28,1043.63,1374300000,1043.63 +2003-11-14,1058.41,1063.65,1048.11,1050.35,1356100000,1050.35 +2003-11-13,1058.56,1059.62,1052.96,1058.41,1383000000,1058.41 +2003-11-12,1046.57,1059.10,1046.57,1058.53,1349300000,1058.53 +2003-11-11,1047.11,1048.23,1043.46,1046.57,1162500000,1046.57 +2003-11-10,1053.21,1053.65,1045.58,1047.11,1243600000,1047.11 +2003-11-07,1058.05,1062.39,1052.17,1053.21,1440500000,1053.21 +2003-11-06,1051.81,1058.94,1046.93,1058.05,1453900000,1058.05 +2003-11-05,1053.25,1054.54,1044.88,1051.81,1401800000,1051.81 +2003-11-04,1059.02,1059.02,1051.70,1053.25,1417600000,1053.25 +2003-11-03,1050.71,1061.44,1050.71,1059.02,1378200000,1059.02 +2003-10-31,1046.94,1053.09,1046.94,1050.71,1498900000,1050.71 +2003-10-30,1048.11,1052.81,1043.82,1046.94,1629700000,1046.94 +2003-10-29,1046.79,1049.83,1043.35,1048.11,1562600000,1048.11 +2003-10-28,1031.13,1046.79,1031.13,1046.79,1629200000,1046.79 +2003-10-27,1028.91,1037.75,1028.91,1031.13,1371800000,1031.13 +2003-10-24,1033.77,1033.77,1018.32,1028.91,1420300000,1028.91 +2003-10-23,1030.36,1035.44,1025.89,1033.77,1604300000,1033.77 +2003-10-22,1046.03,1046.03,1028.39,1030.36,1647200000,1030.36 +2003-10-21,1044.68,1048.57,1042.59,1046.03,1498000000,1046.03 +2003-10-20,1039.32,1044.69,1036.13,1044.68,1172600000,1044.68 +2003-10-17,1050.07,1051.89,1036.57,1039.32,1352000000,1039.32 +2003-10-16,1046.76,1052.94,1044.04,1050.07,1417700000,1050.07 +2003-10-15,1049.48,1053.79,1043.15,1046.76,1521100000,1046.76 +2003-10-14,1045.35,1049.49,1040.84,1049.48,1271900000,1049.48 +2003-10-13,1038.06,1048.90,1038.06,1045.35,1040500000,1045.35 +2003-10-10,1038.73,1040.84,1035.74,1038.06,1108100000,1038.06 +2003-10-09,1033.78,1048.28,1033.78,1038.73,1578700000,1038.73 +2003-10-08,1039.25,1040.06,1030.96,1033.78,1262500000,1033.78 +2003-10-07,1034.35,1039.25,1026.27,1039.25,1279500000,1039.25 +2003-10-06,1029.85,1036.48,1029.15,1034.35,1025800000,1034.35 +2003-10-03,1020.24,1039.31,1020.24,1029.85,1570500000,1029.85 +2003-10-02,1018.22,1021.87,1013.38,1020.24,1269300000,1020.24 +2003-10-01,995.97,1018.22,995.97,1018.22,1566300000,1018.22 +2003-09-30,1006.58,1006.58,990.36,995.97,1590500000,995.97 +2003-09-29,996.85,1006.89,995.31,1006.58,1366500000,1006.58 +2003-09-26,1003.27,1003.45,996.08,996.85,1472500000,996.85 +2003-09-25,1009.38,1015.97,1003.26,1003.27,1530000000,1003.27 +2003-09-24,1029.03,1029.83,1008.93,1009.38,1556000000,1009.38 +2003-09-23,1022.82,1030.12,1021.54,1029.03,1301700000,1029.03 +2003-09-22,1036.30,1036.30,1018.30,1022.82,1278800000,1022.82 +2003-09-19,1039.58,1040.29,1031.89,1036.30,1518600000,1036.30 +2003-09-18,1025.97,1040.16,1025.75,1039.58,1498800000,1039.58 +2003-09-17,1029.32,1031.34,1024.53,1025.97,1338210000,1025.97 +2003-09-16,1014.81,1029.66,1014.81,1029.32,1403200000,1029.32 +2003-09-15,1018.63,1019.79,1013.59,1014.81,1151300000,1014.81 +2003-09-12,1016.42,1019.65,1007.71,1018.63,1236700000,1018.63 +2003-09-11,1010.92,1020.88,1010.92,1016.42,1335900000,1016.42 +2003-09-10,1023.17,1023.17,1009.74,1010.92,1582100000,1010.92 +2003-09-09,1031.64,1031.64,1021.14,1023.17,1414800000,1023.17 +2003-09-08,1021.39,1032.41,1021.39,1031.64,1299300000,1031.64 +2003-09-05,1027.97,1029.21,1018.19,1021.39,1465200000,1021.39 +2003-09-04,1026.27,1029.17,1022.19,1027.97,1453900000,1027.97 +2003-09-03,1021.99,1029.34,1021.99,1026.27,1675600000,1026.27 +2003-09-02,1008.01,1022.59,1005.73,1021.99,1470500000,1021.99 +2003-08-29,1002.84,1008.85,999.52,1008.01,945100000,1008.01 +2003-08-28,996.79,1004.12,991.42,1002.84,1165200000,1002.84 +2003-08-27,996.73,998.05,993.33,996.79,1051400000,996.79 +2003-08-26,993.71,997.93,983.57,996.73,1178700000,996.73 +2003-08-25,993.06,993.71,987.91,993.71,971700000,993.71 +2003-08-22,1003.27,1011.01,992.62,993.06,1308900000,993.06 +2003-08-21,1000.30,1009.53,999.33,1003.27,1407100000,1003.27 +2003-08-20,1002.35,1003.54,996.62,1000.30,1210800000,1000.30 +2003-08-19,999.74,1003.30,995.30,1002.35,1300600000,1002.35 +2003-08-18,990.67,1000.35,990.67,999.74,1127600000,999.74 +2003-08-15,990.51,992.39,987.10,990.67,636370000,990.67 +2003-08-14,984.03,991.91,980.36,990.51,1186800000,990.51 +2003-08-13,990.35,992.50,980.85,984.03,1208800000,984.03 +2003-08-12,980.59,990.41,979.90,990.35,1132300000,990.35 +2003-08-11,977.59,985.46,974.21,980.59,1022200000,980.59 +2003-08-08,974.12,980.57,973.83,977.59,1086600000,977.59 +2003-08-07,967.08,974.89,963.82,974.12,1389300000,974.12 +2003-08-06,965.46,975.74,960.84,967.08,1491000000,967.08 +2003-08-05,982.82,982.82,964.97,965.46,1351700000,965.46 +2003-08-04,980.15,985.75,966.79,982.82,1318700000,982.82 +2003-08-01,990.31,990.31,978.86,980.15,1390600000,980.15 +2003-07-31,987.49,1004.59,987.49,990.31,1608000000,990.31 +2003-07-30,989.28,992.62,985.96,987.49,1391900000,987.49 +2003-07-29,996.52,998.64,984.15,989.28,1508900000,989.28 +2003-07-28,998.68,1000.68,993.59,996.52,1328600000,996.52 +2003-07-25,981.60,998.71,977.49,998.68,1397500000,998.68 +2003-07-24,988.61,998.89,981.07,981.60,1559000000,981.60 +2003-07-23,988.11,989.86,979.79,988.61,1362700000,988.61 +2003-07-22,978.80,990.29,976.08,988.11,1439700000,988.11 +2003-07-21,993.32,993.32,975.63,978.80,1254200000,978.80 +2003-07-18,981.73,994.25,981.71,993.32,1365200000,993.32 +2003-07-17,994.00,994.00,978.60,981.73,1661400000,981.73 +2003-07-16,1000.42,1003.47,989.30,994.09,1662000000,994.09 +2003-07-15,1003.86,1009.61,996.67,1000.42,1518600000,1000.42 +2003-07-14,998.14,1015.41,998.14,1003.86,1448900000,1003.86 +2003-07-11,988.70,1000.86,988.70,998.14,1212700000,998.14 +2003-07-10,1002.21,1002.21,983.63,988.70,1465700000,988.70 +2003-07-09,1007.84,1010.43,998.17,1002.21,1618000000,1002.21 +2003-07-08,1004.42,1008.92,998.73,1007.84,1565700000,1007.84 +2003-07-07,985.70,1005.56,985.70,1004.42,1429100000,1004.42 +2003-07-03,993.75,995.00,983.34,985.70,775900000,985.70 +2003-07-02,982.32,993.78,982.32,993.75,1519300000,993.75 +2003-07-01,974.50,983.26,962.10,982.32,1460200000,982.32 +2003-06-30,976.22,983.61,973.60,974.50,1587200000,974.50 +2003-06-27,985.82,988.88,974.29,976.22,1267800000,976.22 +2003-06-26,975.32,986.53,973.80,985.82,1387400000,985.82 +2003-06-25,983.45,991.64,974.86,975.32,1459200000,975.32 +2003-06-24,981.64,987.84,979.08,983.45,1388300000,983.45 +2003-06-23,995.69,995.69,977.40,981.64,1398100000,981.64 +2003-06-20,994.70,1002.09,993.36,995.69,1698000000,995.69 +2003-06-19,1010.09,1011.22,993.08,994.70,1530100000,994.70 +2003-06-18,1011.66,1015.12,1004.61,1010.09,1488900000,1010.09 +2003-06-17,1010.74,1015.33,1007.04,1011.66,1479700000,1011.66 +2003-06-16,988.61,1010.86,988.61,1010.74,1345900000,1010.74 +2003-06-13,998.51,1000.92,984.27,988.61,1271600000,988.61 +2003-06-12,997.48,1002.74,991.27,998.51,1553100000,998.51 +2003-06-11,984.84,997.48,981.61,997.48,1520000000,997.48 +2003-06-10,975.93,984.84,975.93,984.84,1275400000,984.84 +2003-06-09,987.76,987.76,972.59,975.93,1307000000,975.93 +2003-06-06,990.14,1007.69,986.01,987.76,1837200000,987.76 +2003-06-05,986.24,990.14,978.13,990.14,1693100000,990.14 +2003-06-04,971.56,987.85,970.72,986.24,1618700000,986.24 +2003-06-03,967.00,973.02,964.47,971.56,1450200000,971.56 +2003-06-02,963.59,979.11,963.59,967.00,1662500000,967.00 +2003-05-30,949.64,965.38,949.64,963.59,1688800000,963.59 +2003-05-29,953.22,962.08,946.23,949.64,1685800000,949.64 +2003-05-28,951.48,959.39,950.12,953.22,1559000000,953.22 +2003-05-27,933.22,952.76,927.33,951.48,1532000000,951.48 +2003-05-23,931.87,935.20,927.42,933.22,1201000000,933.22 +2003-05-22,923.42,935.30,922.54,931.87,1448500000,931.87 +2003-05-21,919.73,923.85,914.91,923.42,1457800000,923.42 +2003-05-20,920.77,925.34,912.05,919.73,1505300000,919.73 +2003-05-19,944.30,944.30,920.23,920.77,1375700000,920.77 +2003-05-16,946.67,948.65,938.60,944.30,1505500000,944.30 +2003-05-15,939.28,948.23,938.79,946.67,1508700000,946.67 +2003-05-14,942.30,947.29,935.24,939.28,1401800000,939.28 +2003-05-13,945.11,947.51,938.91,942.30,1418100000,942.30 +2003-05-12,933.41,946.84,929.30,945.11,1378800000,945.11 +2003-05-09,920.27,933.77,920.27,933.41,1326100000,933.41 +2003-05-08,929.62,929.62,919.72,920.27,1379600000,920.27 +2003-05-07,934.39,937.22,926.41,929.62,1531900000,929.62 +2003-05-06,926.55,939.61,926.38,934.39,1649600000,934.39 +2003-05-05,930.08,933.88,924.55,926.55,1446300000,926.55 +2003-05-02,916.30,930.56,912.35,930.08,1554300000,930.08 +2003-05-01,916.92,919.68,902.83,916.30,1397500000,916.30 +2003-04-30,917.84,922.01,911.70,916.92,1788510000,916.92 +2003-04-29,914.84,924.24,911.10,917.84,1525600000,917.84 +2003-04-28,898.81,918.15,898.81,914.84,1273000000,914.84 +2003-04-25,911.43,911.43,897.52,898.81,1335800000,898.81 +2003-04-24,919.02,919.02,906.69,911.43,1648100000,911.43 +2003-04-23,911.37,919.74,909.89,919.02,1667200000,919.02 +2003-04-22,892.01,911.74,886.70,911.37,1631200000,911.37 +2003-04-21,893.58,898.01,888.17,892.01,1118700000,892.01 +2003-04-17,879.91,893.83,879.20,893.58,1430600000,893.58 +2003-04-16,890.81,896.77,877.93,879.91,1587600000,879.91 +2003-04-15,885.23,891.27,881.85,890.81,1460200000,890.81 +2003-04-14,868.30,885.26,868.30,885.23,1131000000,885.23 +2003-04-11,871.58,883.34,865.92,868.30,1141600000,868.30 +2003-04-10,865.99,871.78,862.76,871.58,1275300000,871.58 +2003-04-09,878.29,887.35,865.72,865.99,1293700000,865.99 +2003-04-08,879.93,883.11,874.68,878.29,1235400000,878.29 +2003-04-07,878.85,904.89,878.85,879.93,1494000000,879.93 +2003-04-04,876.45,882.73,874.23,878.85,1241200000,878.85 +2003-04-03,880.90,885.89,876.12,876.45,1339500000,876.45 +2003-04-02,858.48,884.57,858.48,880.90,1589800000,880.90 +2003-04-01,848.18,861.28,847.85,858.48,1461600000,858.48 +2003-03-31,863.50,863.50,843.68,848.18,1495500000,848.18 +2003-03-28,868.52,869.88,860.83,863.50,1227000000,863.50 +2003-03-27,869.95,874.15,858.09,868.52,1232900000,868.52 +2003-03-26,874.74,875.80,866.47,869.95,1319700000,869.95 +2003-03-25,864.23,879.87,862.59,874.74,1333400000,874.74 +2003-03-24,895.79,895.79,862.02,864.23,1293000000,864.23 +2003-03-21,875.84,895.90,875.84,895.79,1883710000,895.79 +2003-03-20,874.02,879.60,859.01,875.67,1439100000,875.67 +2003-03-19,866.45,874.99,861.21,874.02,1473400000,874.02 +2003-03-18,862.79,866.94,857.36,866.45,1555100000,866.45 +2003-03-17,833.27,862.79,827.17,862.79,1700420000,862.79 +2003-03-14,831.89,841.39,828.26,833.27,1541900000,833.27 +2003-03-13,804.19,832.02,804.19,831.90,1816300000,831.90 +2003-03-12,800.73,804.19,788.90,804.19,1620000000,804.19 +2003-03-11,807.48,814.25,800.30,800.73,1427700000,800.73 +2003-03-10,828.89,828.89,806.57,807.48,1255000000,807.48 +2003-03-07,822.10,829.55,811.23,828.89,1368500000,828.89 +2003-03-06,829.85,829.85,819.85,822.10,1299200000,822.10 +2003-03-05,821.99,829.87,819.00,829.85,1332700000,829.85 +2003-03-04,834.81,835.43,821.96,821.99,1256600000,821.99 +2003-03-03,841.15,852.34,832.74,834.81,1208900000,834.81 +2003-02-28,837.28,847.00,837.28,841.15,1373300000,841.15 +2003-02-27,827.55,842.19,827.55,837.28,1287800000,837.28 +2003-02-26,838.57,840.10,826.68,827.55,1374400000,827.55 +2003-02-25,832.58,839.55,818.54,838.57,1483700000,838.57 +2003-02-24,848.17,848.17,832.16,832.58,1229200000,832.58 +2003-02-21,837.10,852.28,831.48,848.17,1398200000,848.17 +2003-02-20,845.13,849.37,836.56,837.10,1194100000,837.10 +2003-02-19,851.17,851.17,838.79,845.13,1075600000,845.13 +2003-02-18,834.89,852.87,834.89,851.17,1250800000,851.17 +2003-02-14,817.37,834.89,815.03,834.89,1404600000,834.89 +2003-02-13,818.68,821.25,806.29,817.37,1489300000,817.37 +2003-02-12,829.20,832.12,818.49,818.68,1260500000,818.68 +2003-02-11,835.97,843.02,825.09,829.20,1307000000,829.20 +2003-02-10,829.69,837.16,823.53,835.97,1238200000,835.97 +2003-02-07,838.15,845.73,826.70,829.69,1276800000,829.69 +2003-02-06,843.59,844.23,833.25,838.15,1430900000,838.15 +2003-02-05,848.20,861.63,842.11,843.59,1450800000,843.59 +2003-02-04,860.32,860.32,840.19,848.20,1451600000,848.20 +2003-02-03,855.70,864.64,855.70,860.32,1258500000,860.32 +2003-01-31,844.61,858.33,840.34,855.70,1578530000,855.70 +2003-01-30,864.36,865.48,843.74,844.61,1510300000,844.61 +2003-01-29,858.54,868.72,845.86,864.36,1595400000,864.36 +2003-01-28,847.48,860.76,847.48,858.54,1459100000,858.54 +2003-01-27,861.40,863.95,844.25,847.48,1435900000,847.48 +2003-01-24,887.34,887.34,859.71,861.40,1574800000,861.40 +2003-01-23,878.36,890.25,876.89,887.34,1744550000,887.34 +2003-01-22,887.62,889.74,877.64,878.36,1560800000,878.36 +2003-01-21,901.78,906.00,887.62,887.62,1335200000,887.62 +2003-01-17,914.60,914.60,899.02,901.78,1358200000,901.78 +2003-01-16,918.22,926.03,911.98,914.60,1534600000,914.60 +2003-01-15,931.66,932.59,916.70,918.22,1432100000,918.22 +2003-01-14,926.26,931.66,921.72,931.66,1379400000,931.66 +2003-01-13,927.57,935.05,922.05,926.26,1396300000,926.26 +2003-01-10,927.58,932.89,917.66,927.57,1485400000,927.57 +2003-01-09,909.93,928.31,909.93,927.57,1560300000,927.57 +2003-01-08,922.93,922.93,908.32,909.93,1467600000,909.93 +2003-01-07,929.01,930.81,919.93,922.93,1545200000,922.93 +2003-01-06,908.59,931.77,908.59,929.01,1435900000,929.01 +2003-01-03,909.03,911.25,903.07,908.59,1130800000,908.59 +2003-01-02,879.82,909.03,879.82,909.03,1229200000,909.03 +2002-12-31,879.39,881.93,869.45,879.82,1088500000,879.82 +2002-12-30,875.40,882.10,870.23,879.39,1057800000,879.39 +2002-12-27,889.66,890.46,873.62,875.40,758400000,875.40 +2002-12-26,892.47,903.89,887.48,889.66,721100000,889.66 +2002-12-24,897.38,897.38,892.29,892.47,458310000,892.47 +2002-12-23,895.74,902.43,892.26,897.38,1112100000,897.38 +2002-12-20,884.25,897.79,884.25,895.76,1782730000,895.76 +2002-12-19,890.02,899.19,880.32,884.25,1385900000,884.25 +2002-12-18,902.99,902.99,887.82,891.12,1446200000,891.12 +2002-12-17,910.40,911.22,901.74,902.99,1251800000,902.99 +2002-12-16,889.48,910.42,889.48,910.40,1271600000,910.40 +2002-12-13,901.58,901.58,888.48,889.48,1330800000,889.48 +2002-12-12,904.96,908.37,897.00,901.58,1255300000,901.58 +2002-12-11,904.45,909.94,896.48,904.96,1285100000,904.96 +2002-12-10,892.00,904.95,892.00,904.45,1286600000,904.45 +2002-12-09,912.23,912.23,891.97,892.00,1320800000,892.00 +2002-12-06,906.55,915.48,895.96,912.23,1241100000,912.23 +2002-12-05,917.58,921.49,905.90,906.55,1250200000,906.55 +2002-12-04,920.75,925.25,909.51,917.58,1588900000,917.58 +2002-12-03,934.53,934.53,918.73,920.75,1488400000,920.75 +2002-12-02,936.31,954.28,927.72,934.53,1612000000,934.53 +2002-11-29,938.87,941.82,935.58,936.31,643460000,936.31 +2002-11-27,913.31,940.41,913.31,938.87,1350300000,938.87 +2002-11-26,932.87,932.87,912.10,913.31,1543600000,913.31 +2002-11-25,930.55,937.15,923.31,932.87,1574000000,932.87 +2002-11-22,933.76,937.28,928.41,930.55,1626800000,930.55 +2002-11-21,914.15,935.13,914.15,933.76,2415100000,933.76 +2002-11-20,896.74,915.01,894.93,914.15,1517300000,914.15 +2002-11-19,900.36,905.45,893.09,896.74,1337400000,896.74 +2002-11-18,909.83,915.91,899.48,900.36,1282600000,900.36 +2002-11-15,904.27,910.21,895.35,909.83,1400100000,909.83 +2002-11-14,882.53,904.27,882.53,904.27,1519000000,904.27 +2002-11-13,882.95,892.51,872.05,882.53,1463400000,882.53 +2002-11-12,876.19,894.30,876.19,882.95,1377100000,882.95 +2002-11-11,894.74,894.74,874.63,876.19,1113000000,876.19 +2002-11-08,902.65,910.11,891.62,894.74,1446500000,894.74 +2002-11-07,923.76,923.76,898.68,902.65,1466900000,902.65 +2002-11-06,915.39,925.66,905.00,923.76,1674000000,923.76 +2002-11-05,908.35,915.83,904.91,915.39,1354100000,915.39 +2002-11-04,900.96,924.58,900.96,908.35,1645900000,908.35 +2002-11-01,885.76,903.42,877.71,900.96,1450400000,900.96 +2002-10-31,890.71,898.83,879.75,885.76,1641300000,885.76 +2002-10-30,882.15,895.28,879.19,890.71,1422300000,890.71 +2002-10-29,890.23,890.64,867.91,882.15,1529700000,882.15 +2002-10-28,897.65,907.44,886.15,890.23,1382600000,890.23 +2002-10-25,882.50,897.71,877.03,897.65,1340400000,897.65 +2002-10-24,896.14,902.94,879.00,882.50,1700570000,882.50 +2002-10-23,890.16,896.14,873.82,896.14,1593900000,896.14 +2002-10-22,899.72,899.72,882.40,890.16,1549200000,890.16 +2002-10-21,884.39,900.69,873.06,899.72,1447000000,899.72 +2002-10-18,879.20,886.68,866.58,884.39,1423100000,884.39 +2002-10-17,860.02,885.35,860.02,879.20,1780390000,879.20 +2002-10-16,881.27,881.27,856.28,860.02,1585000000,860.02 +2002-10-15,841.44,881.27,841.44,881.27,1956000000,881.27 +2002-10-14,835.32,844.39,828.37,841.44,1200300000,841.44 +2002-10-11,803.92,843.27,803.92,835.32,1854130000,835.32 +2002-10-10,776.76,806.51,768.63,803.92,2090230000,803.92 +2002-10-09,798.55,798.55,775.80,776.76,1885030000,776.76 +2002-10-08,785.28,808.86,779.50,798.55,1938430000,798.55 +2002-10-07,800.58,808.21,782.96,785.28,1576500000,785.28 +2002-10-04,818.95,825.90,794.10,800.58,1835930000,800.58 +2002-10-03,827.91,840.02,817.25,818.95,1674500000,818.95 +2002-10-02,843.77,851.93,826.50,827.91,1668900000,827.91 +2002-10-01,815.28,847.93,812.82,847.91,1780900000,847.91 +2002-09-30,827.37,827.37,800.20,815.28,1721870000,815.28 +2002-09-27,854.95,854.95,826.84,827.37,1507300000,827.37 +2002-09-26,839.66,856.60,839.66,854.95,1650000000,854.95 +2002-09-25,819.27,844.22,818.46,839.66,1651500000,839.66 +2002-09-24,833.70,833.70,817.38,819.29,1670240000,819.29 +2002-09-23,845.39,845.39,825.76,833.70,1381100000,833.70 +2002-09-20,843.32,849.32,839.09,845.39,1792800000,845.39 +2002-09-19,869.46,869.46,843.09,843.32,1524000000,843.32 +2002-09-18,873.52,878.45,857.39,869.46,1501000000,869.46 +2002-09-17,891.10,902.68,872.38,873.52,1448600000,873.52 +2002-09-16,889.81,891.84,878.91,891.10,1001400000,891.10 +2002-09-13,886.91,892.75,877.05,889.81,1271000000,889.81 +2002-09-12,909.45,909.45,884.84,886.91,1191600000,886.91 +2002-09-11,910.63,924.02,908.47,909.45,846600000,909.45 +2002-09-10,902.96,909.89,900.50,909.58,1186400000,909.58 +2002-09-09,893.92,907.34,882.92,902.96,1130600000,902.96 +2002-09-06,879.15,899.07,879.15,893.92,1184500000,893.92 +2002-09-05,893.40,893.40,870.50,879.15,1401300000,879.15 +2002-09-04,878.02,896.10,875.73,893.40,1372100000,893.40 +2002-09-03,916.07,916.07,877.51,878.02,1289800000,878.02 +2002-08-30,917.80,928.15,910.17,916.07,929900000,916.07 +2002-08-29,917.87,924.59,903.33,917.80,1271100000,917.80 +2002-08-28,934.82,934.82,913.21,917.87,1146600000,917.87 +2002-08-27,947.95,955.82,930.36,934.82,1307700000,934.82 +2002-08-26,940.86,950.80,930.42,947.95,1016900000,947.95 +2002-08-23,962.70,962.70,937.17,940.86,1071500000,940.86 +2002-08-22,949.36,965.00,946.43,962.70,1373000000,962.70 +2002-08-21,937.43,951.59,931.32,949.36,1353100000,949.36 +2002-08-20,950.70,950.70,931.86,937.43,1308500000,937.43 +2002-08-19,928.77,951.17,927.21,950.70,1299800000,950.70 +2002-08-16,930.25,935.38,916.21,928.77,1265300000,928.77 +2002-08-15,919.62,933.29,918.17,930.25,1505100000,930.25 +2002-08-14,884.21,920.21,876.20,919.62,1533800000,919.62 +2002-08-13,903.80,911.71,883.62,884.21,1297700000,884.21 +2002-08-12,908.64,908.64,892.38,903.80,1036500000,903.80 +2002-08-09,898.73,913.95,890.77,908.64,1294900000,908.64 +2002-08-08,876.77,905.84,875.17,905.46,1646700000,905.46 +2002-08-07,859.57,878.74,854.15,876.77,1490400000,876.77 +2002-08-06,834.60,874.44,834.60,859.57,1514100000,859.57 +2002-08-05,864.24,864.24,833.44,834.60,1425500000,834.60 +2002-08-02,884.40,884.72,853.95,864.24,1538100000,864.24 +2002-08-01,911.62,911.62,882.48,884.66,1672200000,884.66 +2002-07-31,902.78,911.64,889.88,911.62,2049360000,911.62 +2002-07-30,898.96,909.81,884.70,902.78,1826090000,902.78 +2002-07-29,852.84,898.96,852.84,898.96,1778650000,898.96 +2002-07-26,838.68,852.85,835.92,852.84,1796100000,852.84 +2002-07-25,843.42,853.83,816.11,838.68,2424700000,838.68 +2002-07-24,797.71,844.32,775.68,843.43,2775560000,843.43 +2002-07-23,819.85,827.69,796.13,797.70,2441020000,797.70 +2002-07-22,847.76,854.13,813.26,819.85,2248060000,819.85 +2002-07-19,881.56,881.56,842.07,847.75,2654100000,847.75 +2002-07-18,905.45,907.80,880.60,881.56,1736300000,881.56 +2002-07-17,901.05,926.52,895.03,906.04,2566500000,906.04 +2002-07-16,917.93,918.65,897.13,900.94,1843700000,900.94 +2002-07-15,921.39,921.39,876.46,917.93,2574800000,917.93 +2002-07-12,927.37,934.31,913.71,921.39,1607400000,921.39 +2002-07-11,920.47,929.16,900.94,927.37,2080480000,927.37 +2002-07-10,952.83,956.34,920.29,920.47,1816900000,920.47 +2002-07-09,976.98,979.63,951.71,952.83,1348900000,952.83 +2002-07-08,989.03,993.56,972.91,976.98,1184400000,976.98 +2002-07-05,953.99,989.07,953.99,989.03,699400000,989.03 +2002-07-03,948.09,954.30,934.87,953.99,1527800000,953.99 +2002-07-02,968.65,968.65,945.54,948.09,1823000000,948.09 +2002-07-01,989.82,994.46,967.43,968.65,1425500000,968.65 +2002-06-28,990.64,1001.79,988.31,989.82,2117000000,989.82 +2002-06-27,973.53,990.67,963.74,990.64,1908600000,990.64 +2002-06-26,976.14,977.43,952.92,973.53,2014290000,973.53 +2002-06-25,992.72,1005.88,974.21,976.14,1513700000,976.14 +2002-06-24,989.14,1002.11,970.85,992.72,1552600000,992.72 +2002-06-21,1006.29,1006.29,985.65,989.14,1497200000,989.14 +2002-06-20,1019.99,1023.33,1004.59,1006.29,1389700000,1006.29 +2002-06-19,1037.14,1037.61,1017.88,1019.99,1336100000,1019.99 +2002-06-18,1036.17,1040.83,1030.92,1037.14,1193100000,1037.14 +2002-06-17,1007.27,1036.17,1007.27,1036.17,1236600000,1036.17 +2002-06-14,1009.56,1009.56,981.63,1007.27,1549000000,1007.27 +2002-06-13,1020.26,1023.47,1008.12,1009.56,1405500000,1009.56 +2002-06-12,1013.26,1021.85,1002.58,1020.26,1795720000,1020.26 +2002-06-11,1030.74,1039.04,1012.94,1013.60,1212400000,1013.60 +2002-06-10,1027.53,1038.18,1025.45,1030.74,1226200000,1030.74 +2002-06-07,1029.15,1033.02,1012.49,1027.53,1341300000,1027.53 +2002-06-06,1049.90,1049.90,1026.91,1029.15,1601500000,1029.15 +2002-06-05,1040.69,1050.11,1038.84,1049.90,1300100000,1049.90 +2002-06-04,1040.68,1046.06,1030.52,1040.69,1466600000,1040.69 +2002-06-03,1067.14,1070.74,1039.90,1040.68,1324300000,1040.68 +2002-05-31,1064.66,1079.93,1064.66,1067.14,1277300000,1067.14 +2002-05-30,1067.66,1069.50,1054.26,1064.66,1286600000,1064.66 +2002-05-29,1074.55,1074.83,1067.66,1067.66,1081800000,1067.66 +2002-05-28,1083.82,1085.98,1070.31,1074.55,996500000,1074.55 +2002-05-24,1097.08,1097.08,1082.19,1083.82,885400000,1083.82 +2002-05-23,1086.02,1097.10,1080.55,1097.08,1192900000,1097.08 +2002-05-22,1079.88,1086.02,1075.64,1086.02,1136300000,1086.02 +2002-05-21,1091.88,1099.55,1079.08,1079.88,1200500000,1079.88 +2002-05-20,1106.59,1106.59,1090.61,1091.88,989800000,1091.88 +2002-05-17,1098.23,1106.59,1096.77,1106.59,1274400000,1106.59 +2002-05-16,1091.07,1099.29,1089.17,1098.23,1256600000,1098.23 +2002-05-15,1097.28,1104.23,1088.94,1091.07,1420200000,1091.07 +2002-05-14,1074.56,1097.71,1074.56,1097.28,1414500000,1097.28 +2002-05-13,1054.99,1074.84,1053.90,1074.56,1088600000,1074.56 +2002-05-10,1073.01,1075.43,1053.93,1054.99,1171900000,1054.99 +2002-05-09,1088.85,1088.85,1072.23,1073.01,1153000000,1073.01 +2002-05-08,1049.49,1088.92,1049.49,1088.85,1502000000,1088.85 +2002-05-07,1052.67,1058.67,1048.96,1049.49,1354700000,1049.49 +2002-05-06,1073.43,1075.96,1052.65,1052.67,1122600000,1052.67 +2002-05-03,1084.56,1084.56,1068.89,1073.43,1284500000,1073.43 +2002-05-02,1086.46,1091.42,1079.46,1084.56,1364000000,1084.56 +2002-05-01,1076.92,1088.32,1065.29,1086.46,1451400000,1086.46 +2002-04-30,1065.45,1082.62,1063.46,1076.92,1628600000,1076.92 +2002-04-29,1076.32,1078.95,1063.62,1065.45,1314700000,1065.45 +2002-04-26,1091.48,1096.77,1076.31,1076.32,1374200000,1076.32 +2002-04-25,1093.14,1094.36,1084.81,1091.48,1517400000,1091.48 +2002-04-24,1100.96,1108.46,1092.51,1093.14,1373200000,1093.14 +2002-04-23,1107.83,1111.17,1098.94,1100.96,1388500000,1100.96 +2002-04-22,1125.17,1125.17,1105.62,1107.83,1181800000,1107.83 +2002-04-19,1124.47,1128.82,1122.59,1125.17,1185000000,1125.17 +2002-04-18,1126.07,1130.49,1109.29,1124.47,1359300000,1124.47 +2002-04-17,1128.37,1133.00,1123.37,1126.07,1376900000,1126.07 +2002-04-16,1102.55,1129.40,1102.55,1128.37,1341300000,1128.37 +2002-04-15,1111.01,1114.86,1099.41,1102.55,1120400000,1102.55 +2002-04-12,1103.69,1112.77,1102.74,1111.01,1282100000,1111.01 +2002-04-11,1130.47,1130.47,1102.42,1103.69,1505600000,1103.69 +2002-04-10,1117.80,1131.76,1117.80,1130.47,1447900000,1130.47 +2002-04-09,1125.29,1128.29,1116.73,1117.80,1235400000,1117.80 +2002-04-08,1122.73,1125.41,1111.79,1125.29,1095300000,1125.29 +2002-04-05,1126.34,1133.31,1119.49,1122.73,1110200000,1122.73 +2002-04-04,1125.40,1130.45,1120.06,1126.34,1283800000,1126.34 +2002-04-03,1136.76,1138.85,1119.68,1125.40,1219700000,1125.40 +2002-04-02,1146.54,1146.54,1135.71,1136.76,1176700000,1136.76 +2002-04-01,1147.39,1147.84,1132.87,1146.54,1050900000,1146.54 +2002-03-28,1144.58,1154.45,1144.58,1147.39,1147600000,1147.39 +2002-03-27,1138.49,1146.95,1135.33,1144.58,1180100000,1144.58 +2002-03-26,1131.87,1147.00,1131.61,1138.49,1223600000,1138.49 +2002-03-25,1148.70,1151.04,1131.87,1131.87,1057900000,1131.87 +2002-03-22,1153.59,1156.49,1144.60,1148.70,1243300000,1148.70 +2002-03-21,1151.85,1155.10,1139.48,1153.59,1339200000,1153.59 +2002-03-20,1170.29,1170.29,1151.61,1151.85,1304900000,1151.85 +2002-03-19,1165.55,1173.94,1165.55,1170.29,1255000000,1170.29 +2002-03-18,1166.16,1172.73,1159.14,1165.55,1169500000,1165.55 +2002-03-15,1153.04,1166.48,1153.04,1166.16,1493900000,1166.16 +2002-03-14,1154.09,1157.83,1151.08,1153.04,1208800000,1153.04 +2002-03-13,1165.58,1165.58,1151.01,1154.09,1354000000,1154.09 +2002-03-12,1168.26,1168.26,1154.34,1165.58,1304400000,1165.58 +2002-03-11,1164.31,1173.03,1159.58,1168.26,1210200000,1168.26 +2002-03-08,1157.54,1172.76,1157.54,1164.31,1412000000,1164.31 +2002-03-07,1162.77,1167.94,1150.69,1157.54,1517400000,1157.54 +2002-03-06,1146.14,1165.29,1145.11,1162.77,1541300000,1162.77 +2002-03-05,1153.84,1157.74,1144.78,1146.14,1549300000,1146.14 +2002-03-04,1131.78,1153.84,1130.93,1153.84,1594300000,1153.84 +2002-03-01,1106.73,1131.79,1106.73,1131.78,1456500000,1131.78 +2002-02-28,1109.89,1121.57,1106.73,1106.73,1392200000,1106.73 +2002-02-27,1109.38,1123.06,1102.26,1109.89,1393800000,1109.89 +2002-02-26,1109.43,1115.05,1101.72,1109.38,1309200000,1109.38 +2002-02-25,1089.84,1112.71,1089.84,1109.43,1367400000,1109.43 +2002-02-22,1080.95,1093.93,1074.39,1089.84,1411000000,1089.84 +2002-02-21,1097.98,1101.50,1080.24,1080.95,1381600000,1080.95 +2002-02-20,1083.34,1098.32,1074.36,1097.98,1438900000,1097.98 +2002-02-19,1104.18,1104.18,1082.24,1083.34,1189900000,1083.34 +2002-02-15,1116.48,1117.09,1103.23,1104.18,1359200000,1104.18 +2002-02-14,1118.51,1124.72,1112.30,1116.48,1272500000,1116.48 +2002-02-13,1107.50,1120.56,1107.50,1118.51,1215900000,1118.51 +2002-02-12,1111.94,1112.68,1102.98,1107.50,1094200000,1107.50 +2002-02-11,1096.22,1112.01,1094.68,1111.94,1159400000,1111.94 +2002-02-08,1080.17,1096.30,1079.91,1096.22,1371900000,1096.22 +2002-02-07,1083.51,1094.03,1078.44,1080.17,1441600000,1080.17 +2002-02-06,1090.02,1093.58,1077.78,1083.51,1665800000,1083.51 +2002-02-05,1094.44,1100.96,1082.58,1090.02,1778300000,1090.02 +2002-02-04,1122.20,1122.20,1092.25,1094.44,1437600000,1094.44 +2002-02-01,1130.20,1130.20,1118.51,1122.20,1367200000,1122.20 +2002-01-31,1113.57,1130.21,1113.30,1130.20,1557000000,1130.20 +2002-01-30,1100.64,1113.79,1081.66,1113.57,2019600000,1113.57 +2002-01-29,1133.06,1137.47,1098.74,1100.64,1812000000,1100.64 +2002-01-28,1133.28,1138.63,1126.66,1133.06,1186800000,1133.06 +2002-01-25,1132.15,1138.31,1127.82,1133.28,1345100000,1133.28 +2002-01-24,1128.18,1139.50,1128.18,1132.15,1552800000,1132.15 +2002-01-23,1119.31,1131.94,1117.43,1128.18,1479200000,1128.18 +2002-01-22,1127.58,1135.26,1117.91,1119.31,1311600000,1119.31 +2002-01-18,1138.88,1138.88,1124.45,1127.58,1333300000,1127.58 +2002-01-17,1127.57,1139.27,1127.57,1138.88,1380100000,1138.88 +2002-01-16,1146.19,1146.19,1127.49,1127.57,1482500000,1127.57 +2002-01-15,1138.41,1148.81,1136.88,1146.19,1386900000,1146.19 +2002-01-14,1145.60,1145.60,1138.15,1138.41,1286400000,1138.41 +2002-01-11,1156.55,1159.41,1145.45,1145.60,1211900000,1145.60 +2002-01-10,1155.14,1159.93,1150.85,1156.55,1299000000,1156.55 +2002-01-09,1160.71,1174.26,1151.89,1155.14,1452000000,1155.14 +2002-01-08,1164.89,1167.60,1157.46,1160.71,1258800000,1160.71 +2002-01-07,1172.51,1176.97,1163.55,1164.89,1308300000,1164.89 +2002-01-04,1165.27,1176.55,1163.42,1172.51,1513000000,1172.51 +2002-01-03,1154.67,1165.27,1154.01,1165.27,1398900000,1165.27 +2002-01-02,1148.08,1154.67,1136.23,1154.67,1171000000,1154.67 +2001-12-31,1161.02,1161.16,1148.04,1148.08,943600000,1148.08 +2001-12-28,1157.13,1164.64,1157.13,1161.02,917400000,1161.02 +2001-12-27,1149.37,1157.13,1149.37,1157.13,876300000,1157.13 +2001-12-26,1144.65,1159.18,1144.65,1149.37,791100000,1149.37 +2001-12-24,1144.89,1147.83,1144.62,1144.65,439670000,1144.65 +2001-12-21,1139.93,1147.46,1139.93,1144.89,1694000000,1144.89 +2001-12-20,1149.56,1151.42,1139.93,1139.93,1490500000,1139.93 +2001-12-19,1142.92,1152.44,1134.75,1149.56,1484900000,1149.56 +2001-12-18,1134.36,1145.10,1134.36,1142.92,1354000000,1142.92 +2001-12-17,1123.09,1137.30,1122.66,1134.36,1260400000,1134.36 +2001-12-14,1119.38,1128.28,1114.53,1123.09,1306800000,1123.09 +2001-12-13,1137.07,1137.07,1117.85,1119.38,1511500000,1119.38 +2001-12-12,1136.76,1141.58,1126.01,1137.07,1449700000,1137.07 +2001-12-11,1139.93,1150.89,1134.32,1136.76,1367200000,1136.76 +2001-12-10,1158.31,1158.31,1139.66,1139.93,1218700000,1139.93 +2001-12-07,1167.10,1167.10,1152.66,1158.31,1248200000,1158.31 +2001-12-06,1170.35,1173.35,1164.43,1167.10,1487900000,1167.10 +2001-12-05,1143.77,1173.62,1143.77,1170.35,1765300000,1170.35 +2001-12-04,1129.90,1144.80,1128.86,1144.80,1318500000,1144.80 +2001-12-03,1139.45,1139.45,1125.78,1129.90,1202900000,1129.90 +2001-11-30,1140.20,1143.57,1135.89,1139.45,1343600000,1139.45 +2001-11-29,1128.52,1140.40,1125.51,1140.20,1375700000,1140.20 +2001-11-28,1149.50,1149.50,1128.29,1128.52,1423700000,1128.52 +2001-11-27,1157.42,1163.38,1140.81,1149.50,1288000000,1149.50 +2001-11-26,1150.34,1157.88,1146.17,1157.42,1129800000,1157.42 +2001-11-23,1137.03,1151.05,1135.90,1150.34,410300000,1150.34 +2001-11-21,1142.66,1142.66,1129.78,1137.03,1029300000,1137.03 +2001-11-20,1151.06,1152.45,1142.17,1142.66,1330200000,1142.66 +2001-11-19,1138.65,1151.06,1138.65,1151.06,1316800000,1151.06 +2001-11-16,1142.24,1143.52,1129.92,1138.65,1337400000,1138.65 +2001-11-15,1141.21,1146.46,1135.06,1142.24,1454500000,1142.24 +2001-11-14,1139.09,1148.28,1132.87,1141.21,1443400000,1141.21 +2001-11-13,1118.33,1139.14,1118.33,1139.09,1370100000,1139.09 +2001-11-12,1120.31,1121.71,1098.32,1118.33,991600000,1118.33 +2001-11-09,1118.54,1123.02,1111.13,1120.31,1093800000,1120.31 +2001-11-08,1115.80,1135.75,1115.42,1118.54,1517500000,1118.54 +2001-11-07,1118.86,1126.62,1112.98,1115.80,1411300000,1115.80 +2001-11-06,1102.84,1119.73,1095.36,1118.86,1356000000,1118.86 +2001-11-05,1087.20,1106.72,1087.20,1102.84,1267700000,1102.84 +2001-11-02,1084.10,1089.63,1075.58,1087.20,1121900000,1087.20 +2001-11-01,1059.78,1085.61,1054.31,1084.10,1317400000,1084.10 +2001-10-31,1059.79,1074.79,1057.55,1059.78,1352500000,1059.78 +2001-10-30,1078.30,1078.30,1053.61,1059.79,1297400000,1059.79 +2001-10-29,1104.61,1104.61,1078.30,1078.30,1106100000,1078.30 +2001-10-26,1100.09,1110.61,1094.24,1104.61,1244500000,1104.61 +2001-10-25,1085.20,1100.09,1065.64,1100.09,1364400000,1100.09 +2001-10-24,1084.78,1090.26,1079.98,1085.20,1336200000,1085.20 +2001-10-23,1089.90,1098.99,1081.53,1084.78,1317300000,1084.78 +2001-10-22,1073.48,1090.57,1070.79,1089.90,1105700000,1089.90 +2001-10-19,1068.61,1075.52,1057.24,1073.48,1294900000,1073.48 +2001-10-18,1077.09,1077.94,1064.54,1068.61,1262900000,1068.61 +2001-10-17,1097.54,1107.12,1076.57,1077.09,1452200000,1077.09 +2001-10-16,1089.98,1101.66,1087.13,1097.54,1210500000,1097.54 +2001-10-15,1091.65,1091.65,1078.19,1089.98,1024700000,1089.98 +2001-10-12,1097.43,1097.43,1072.15,1091.65,1331400000,1091.65 +2001-10-11,1080.99,1099.16,1080.99,1097.43,1704580000,1097.43 +2001-10-10,1056.75,1081.62,1052.76,1080.99,1312400000,1080.99 +2001-10-09,1062.44,1063.37,1053.83,1056.75,1227800000,1056.75 +2001-10-08,1071.37,1071.37,1056.88,1062.44,979000000,1062.44 +2001-10-05,1069.62,1072.35,1053.50,1071.38,1301700000,1071.38 +2001-10-04,1072.28,1084.12,1067.82,1069.63,1609100000,1069.63 +2001-10-03,1051.33,1075.38,1041.48,1072.28,1650600000,1072.28 +2001-10-02,1038.55,1051.33,1034.47,1051.33,1289800000,1051.33 +2001-10-01,1040.94,1040.94,1026.76,1038.55,1175600000,1038.55 +2001-09-28,1018.61,1040.94,1018.61,1040.94,1631500000,1040.94 +2001-09-27,1007.04,1018.92,998.24,1018.61,1467000000,1018.61 +2001-09-26,1012.27,1020.29,1002.62,1007.04,1519100000,1007.04 +2001-09-25,1003.45,1017.14,998.33,1012.27,1613800000,1012.27 +2001-09-24,965.80,1008.44,965.80,1003.45,1746600000,1003.45 +2001-09-21,984.54,984.54,944.75,965.80,2317300000,965.80 +2001-09-20,1016.10,1016.10,984.49,984.54,2004800000,984.54 +2001-09-19,1032.74,1038.91,984.62,1016.10,2120550000,1016.10 +2001-09-18,1038.77,1046.42,1029.25,1032.74,1650410000,1032.74 +2001-09-17,1092.54,1092.54,1037.46,1038.77,2330830000,1038.77 +2001-09-10,1085.78,1096.94,1073.15,1092.54,1276600000,1092.54 +2001-09-07,1106.40,1106.40,1082.12,1085.78,1424300000,1085.78 +2001-09-06,1131.74,1131.74,1105.83,1106.40,1359700000,1106.40 +2001-09-05,1132.94,1135.52,1114.86,1131.74,1384500000,1131.74 +2001-09-04,1133.58,1155.40,1129.06,1132.94,1178300000,1132.94 +2001-08-31,1129.03,1141.83,1126.38,1133.58,920100000,1133.58 +2001-08-30,1148.60,1151.75,1124.87,1129.03,1157000000,1129.03 +2001-08-29,1161.51,1166.97,1147.38,1148.56,963700000,1148.56 +2001-08-28,1179.21,1179.66,1161.17,1161.51,987100000,1161.51 +2001-08-27,1184.93,1186.85,1178.07,1179.21,842600000,1179.21 +2001-08-24,1162.09,1185.15,1162.09,1184.93,1043600000,1184.93 +2001-08-23,1165.31,1169.86,1160.96,1162.09,986200000,1162.09 +2001-08-22,1157.26,1168.56,1153.34,1165.31,1110800000,1165.31 +2001-08-21,1171.41,1179.85,1156.56,1157.26,1041600000,1157.26 +2001-08-20,1161.97,1171.41,1160.94,1171.41,897100000,1171.41 +2001-08-17,1181.66,1181.66,1156.07,1161.97,974300000,1161.97 +2001-08-16,1178.02,1181.80,1166.08,1181.66,1055400000,1181.66 +2001-08-15,1186.73,1191.21,1177.61,1178.02,1065600000,1178.02 +2001-08-14,1191.29,1198.79,1184.26,1186.73,964600000,1186.73 +2001-08-13,1190.16,1193.82,1185.12,1191.29,837600000,1191.29 +2001-08-10,1183.43,1193.33,1169.55,1190.16,960900000,1190.16 +2001-08-09,1183.53,1184.71,1174.68,1183.43,1104200000,1183.43 +2001-08-08,1204.40,1206.79,1181.27,1183.53,1124600000,1183.53 +2001-08-07,1200.47,1207.56,1195.64,1204.40,1012000000,1204.40 +2001-08-06,1214.35,1214.35,1197.35,1200.48,811700000,1200.48 +2001-08-03,1220.75,1220.75,1205.31,1214.35,939900000,1214.35 +2001-08-02,1215.93,1226.27,1215.31,1220.75,1218300000,1220.75 +2001-08-01,1211.23,1223.04,1211.23,1215.93,1340300000,1215.93 +2001-07-31,1204.52,1222.74,1204.52,1211.23,1129200000,1211.23 +2001-07-30,1205.82,1209.05,1200.41,1204.52,909100000,1204.52 +2001-07-27,1202.93,1209.26,1195.99,1205.82,1015300000,1205.82 +2001-07-26,1190.49,1204.18,1182.65,1202.93,1213900000,1202.93 +2001-07-25,1171.65,1190.52,1171.28,1190.49,1280700000,1190.49 +2001-07-24,1191.03,1191.03,1165.54,1171.65,1198700000,1171.65 +2001-07-23,1210.85,1215.22,1190.50,1191.03,986900000,1191.03 +2001-07-20,1215.02,1215.69,1207.04,1210.85,1170900000,1210.85 +2001-07-19,1207.71,1225.04,1205.80,1215.02,1343500000,1215.02 +2001-07-18,1214.44,1214.44,1198.33,1207.71,1316300000,1207.71 +2001-07-17,1202.45,1215.36,1196.14,1214.44,1238100000,1214.44 +2001-07-16,1215.68,1219.63,1200.05,1202.45,1039800000,1202.45 +2001-07-13,1208.14,1218.54,1203.61,1215.68,1121700000,1215.68 +2001-07-12,1180.18,1210.25,1180.18,1208.14,1394000000,1208.14 +2001-07-11,1181.52,1184.93,1168.46,1180.18,1384100000,1180.18 +2001-07-10,1198.78,1203.43,1179.93,1181.52,1263800000,1181.52 +2001-07-09,1190.59,1201.76,1189.75,1198.78,1045700000,1198.78 +2001-07-06,1219.24,1219.24,1188.74,1190.59,1056700000,1190.59 +2001-07-05,1234.45,1234.45,1219.15,1219.24,934900000,1219.24 +2001-07-03,1236.71,1236.71,1229.43,1234.45,622110000,1234.45 +2001-07-02,1224.42,1239.78,1224.03,1236.72,1128300000,1236.72 +2001-06-29,1226.20,1237.29,1221.14,1224.38,1832360000,1224.38 +2001-06-28,1211.07,1234.44,1211.07,1226.20,1327300000,1226.20 +2001-06-27,1216.76,1219.92,1207.29,1211.07,1162100000,1211.07 +2001-06-26,1218.60,1220.70,1204.64,1216.76,1198900000,1216.76 +2001-06-25,1225.35,1231.50,1213.60,1218.60,1050100000,1218.60 +2001-06-22,1237.04,1237.73,1221.41,1225.35,1189200000,1225.35 +2001-06-21,1223.14,1240.24,1220.25,1237.04,1546820000,1237.04 +2001-06-20,1212.58,1225.61,1210.07,1223.14,1350100000,1223.14 +2001-06-19,1208.43,1226.11,1207.71,1212.58,1184900000,1212.58 +2001-06-18,1214.36,1221.23,1208.33,1208.43,1111600000,1208.43 +2001-06-15,1219.87,1221.50,1203.03,1214.36,1635550000,1214.36 +2001-06-14,1241.60,1241.60,1218.90,1219.87,1242900000,1219.87 +2001-06-13,1255.85,1259.75,1241.59,1241.60,1063600000,1241.60 +2001-06-12,1254.39,1261.00,1235.75,1255.85,1136500000,1255.85 +2001-06-11,1264.96,1264.96,1249.23,1254.39,870100000,1254.39 +2001-06-08,1276.96,1277.11,1259.99,1264.96,726200000,1264.96 +2001-06-07,1270.03,1277.08,1265.08,1276.96,1089600000,1276.96 +2001-06-06,1283.57,1283.85,1269.01,1270.03,1061900000,1270.03 +2001-06-05,1267.11,1286.62,1267.11,1283.57,1116800000,1283.57 +2001-06-04,1260.67,1267.17,1256.36,1267.11,836500000,1267.11 +2001-06-01,1255.82,1265.34,1246.88,1260.67,1015000000,1260.67 +2001-05-31,1248.08,1261.91,1248.07,1255.82,1226600000,1255.82 +2001-05-30,1267.93,1267.93,1245.96,1248.08,1158600000,1248.08 +2001-05-29,1277.89,1278.42,1265.41,1267.93,1026000000,1267.93 +2001-05-25,1293.17,1293.17,1276.42,1277.89,828100000,1277.89 +2001-05-24,1289.05,1295.04,1281.22,1293.17,1100700000,1293.17 +2001-05-23,1309.38,1309.38,1288.70,1289.05,1134800000,1289.05 +2001-05-22,1312.83,1315.93,1306.89,1309.38,1260400000,1309.38 +2001-05-21,1291.96,1312.95,1287.87,1312.83,1174900000,1312.83 +2001-05-18,1288.49,1292.06,1281.15,1291.96,1130800000,1291.96 +2001-05-17,1284.99,1296.48,1282.65,1288.49,1355600000,1288.49 +2001-05-16,1249.44,1286.39,1243.02,1284.99,1405300000,1284.99 +2001-05-15,1248.92,1257.45,1245.36,1249.44,1071800000,1249.44 +2001-05-14,1245.67,1249.68,1241.02,1248.92,858200000,1248.92 +2001-05-11,1255.18,1259.84,1240.79,1245.67,906200000,1245.67 +2001-05-10,1255.54,1268.14,1254.56,1255.18,1056700000,1255.18 +2001-05-09,1261.20,1261.65,1247.83,1255.54,1132400000,1255.54 +2001-05-08,1266.71,1267.01,1253.00,1261.20,1006300000,1261.20 +2001-05-07,1266.61,1270.00,1259.19,1263.51,949000000,1263.51 +2001-05-04,1248.58,1267.51,1232.00,1266.61,1082100000,1266.61 +2001-05-03,1267.43,1267.43,1239.88,1248.58,1137900000,1248.58 +2001-05-02,1266.44,1272.93,1257.70,1267.43,1342200000,1267.43 +2001-05-01,1249.46,1266.47,1243.55,1266.44,1181300000,1266.44 +2001-04-30,1253.05,1269.30,1243.99,1249.46,1266800000,1249.46 +2001-04-27,1234.52,1253.07,1234.52,1253.05,1091300000,1253.05 +2001-04-26,1228.75,1248.30,1228.75,1234.52,1345200000,1234.52 +2001-04-25,1209.47,1232.36,1207.38,1228.75,1203600000,1228.75 +2001-04-24,1224.36,1233.54,1208.89,1209.47,1216500000,1209.47 +2001-04-23,1242.98,1242.98,1217.47,1224.36,1012600000,1224.36 +2001-04-20,1253.70,1253.70,1234.41,1242.98,1338700000,1242.98 +2001-04-19,1238.16,1253.71,1233.39,1253.69,1486800000,1253.69 +2001-04-18,1191.81,1248.42,1191.81,1238.16,1918900000,1238.16 +2001-04-17,1179.68,1192.25,1168.90,1191.81,1109600000,1191.81 +2001-04-16,1183.50,1184.64,1167.38,1179.68,913900000,1179.68 +2001-04-12,1165.89,1183.51,1157.73,1183.50,1102000000,1183.50 +2001-04-11,1168.38,1182.24,1160.26,1165.89,1290300000,1165.89 +2001-04-10,1137.59,1173.92,1137.59,1168.38,1349600000,1168.38 +2001-04-09,1128.43,1146.13,1126.38,1137.59,1062800000,1137.59 +2001-04-06,1151.44,1151.44,1119.29,1128.43,1266800000,1128.43 +2001-04-05,1103.25,1151.47,1103.25,1151.44,1368000000,1151.44 +2001-04-04,1106.46,1117.50,1091.99,1103.25,1425590000,1103.25 +2001-04-03,1145.87,1145.87,1100.19,1106.46,1386100000,1106.46 +2001-04-02,1160.33,1169.51,1137.51,1145.87,1254900000,1145.87 +2001-03-30,1147.95,1162.80,1143.83,1160.33,1280800000,1160.33 +2001-03-29,1153.29,1161.69,1136.26,1147.95,1234500000,1147.95 +2001-03-28,1182.17,1182.17,1147.83,1153.29,1333400000,1153.29 +2001-03-27,1152.69,1183.35,1150.96,1182.17,1314200000,1182.17 +2001-03-26,1139.83,1160.02,1139.83,1152.69,1114000000,1152.69 +2001-03-23,1117.58,1141.83,1117.58,1139.83,1364900000,1139.83 +2001-03-22,1122.14,1124.27,1081.19,1117.58,1723950000,1117.58 +2001-03-21,1142.62,1149.39,1118.74,1122.14,1346300000,1122.14 +2001-03-20,1170.81,1180.56,1142.19,1142.62,1235900000,1142.62 +2001-03-19,1150.53,1173.50,1147.18,1170.81,1126200000,1170.81 +2001-03-16,1173.56,1173.56,1148.64,1150.53,1543560000,1150.53 +2001-03-15,1166.71,1182.04,1166.71,1173.56,1259500000,1173.56 +2001-03-14,1197.66,1197.66,1155.35,1166.71,1397400000,1166.71 +2001-03-13,1180.16,1197.83,1171.50,1197.66,1360900000,1197.66 +2001-03-12,1233.42,1233.42,1176.78,1180.16,1229000000,1180.16 +2001-03-09,1264.74,1264.74,1228.42,1233.42,1085900000,1233.42 +2001-03-08,1261.89,1266.50,1257.60,1264.74,1114100000,1264.74 +2001-03-07,1253.80,1263.86,1253.80,1261.89,1132200000,1261.89 +2001-03-06,1241.41,1267.42,1241.41,1253.80,1091800000,1253.80 +2001-03-05,1234.18,1242.55,1234.04,1241.41,929200000,1241.41 +2001-03-02,1241.23,1251.01,1219.74,1234.18,1294000000,1234.18 +2001-03-01,1239.94,1241.36,1214.50,1241.23,1294900000,1241.23 +2001-02-28,1257.94,1263.47,1229.65,1239.94,1225300000,1239.94 +2001-02-27,1267.65,1272.76,1252.26,1257.94,1114100000,1257.94 +2001-02-26,1245.86,1267.69,1241.71,1267.65,1130800000,1267.65 +2001-02-23,1252.82,1252.82,1215.44,1245.86,1231300000,1245.86 +2001-02-22,1255.27,1259.94,1228.33,1252.82,1365900000,1252.82 +2001-02-21,1278.94,1282.97,1253.16,1255.27,1208500000,1255.27 +2001-02-20,1301.53,1307.16,1278.44,1278.94,1112200000,1278.94 +2001-02-16,1326.61,1326.61,1293.18,1301.53,1257200000,1301.53 +2001-02-15,1315.92,1331.29,1315.92,1326.61,1153700000,1326.61 +2001-02-14,1318.80,1320.73,1304.72,1315.92,1150300000,1315.92 +2001-02-13,1330.31,1336.62,1317.51,1318.80,1075200000,1318.80 +2001-02-12,1314.76,1330.96,1313.64,1330.31,1039100000,1330.31 +2001-02-09,1332.53,1332.53,1309.98,1314.76,1075500000,1314.76 +2001-02-08,1341.10,1350.32,1332.42,1332.53,1107200000,1332.53 +2001-02-07,1352.26,1352.26,1334.26,1340.89,1158300000,1340.89 +2001-02-06,1354.31,1363.55,1350.04,1352.26,1059600000,1352.26 +2001-02-05,1349.47,1354.56,1344.48,1354.31,1013000000,1354.31 +2001-02-02,1373.47,1376.38,1348.72,1349.47,1048400000,1349.47 +2001-02-01,1366.01,1373.50,1359.34,1373.47,1118800000,1373.47 +2001-01-31,1373.73,1383.37,1364.66,1366.01,1295300000,1366.01 +2001-01-30,1364.17,1375.68,1356.20,1373.73,1149800000,1373.73 +2001-01-29,1354.92,1365.54,1350.36,1364.17,1053100000,1364.17 +2001-01-26,1357.51,1357.51,1342.75,1354.95,1098000000,1354.95 +2001-01-25,1364.30,1367.35,1354.63,1357.51,1258000000,1357.51 +2001-01-24,1360.40,1369.75,1357.28,1364.30,1309000000,1364.30 +2001-01-23,1342.90,1362.90,1339.63,1360.40,1232600000,1360.40 +2001-01-22,1342.54,1353.62,1333.84,1342.90,1164000000,1342.90 +2001-01-19,1347.97,1354.55,1336.74,1342.54,1407800000,1342.54 +2001-01-18,1329.89,1352.71,1327.41,1347.97,1445000000,1347.97 +2001-01-17,1326.65,1346.92,1325.41,1329.47,1349100000,1329.47 +2001-01-16,1318.32,1327.81,1313.33,1326.65,1205700000,1326.65 +2001-01-12,1326.82,1333.21,1311.59,1318.55,1276000000,1318.55 +2001-01-11,1313.27,1332.19,1309.72,1326.82,1411200000,1326.82 +2001-01-10,1300.80,1313.76,1287.28,1313.27,1296500000,1313.27 +2001-01-09,1295.86,1311.72,1295.14,1300.80,1191300000,1300.80 +2001-01-08,1298.35,1298.35,1276.29,1295.86,1115500000,1295.86 +2001-01-05,1333.34,1334.77,1294.95,1298.35,1430800000,1298.35 +2001-01-04,1347.56,1350.24,1329.14,1333.34,2131000000,1333.34 +2001-01-03,1283.27,1347.76,1274.62,1347.56,1880700000,1347.56 +2001-01-02,1320.28,1320.28,1276.05,1283.27,1129400000,1283.27 +2000-12-29,1334.22,1340.10,1317.51,1320.28,1035500000,1320.28 +2000-12-28,1328.92,1335.93,1325.78,1334.22,1015300000,1334.22 +2000-12-27,1315.19,1332.03,1310.96,1328.92,1092700000,1328.92 +2000-12-26,1305.97,1315.94,1301.64,1315.19,806500000,1315.19 +2000-12-22,1274.86,1305.97,1274.86,1305.95,1087100000,1305.95 +2000-12-21,1264.74,1285.31,1254.07,1274.86,1449900000,1274.86 +2000-12-20,1305.60,1305.60,1261.16,1264.74,1421600000,1264.74 +2000-12-19,1322.96,1346.44,1305.20,1305.60,1324900000,1305.60 +2000-12-18,1312.15,1332.32,1312.15,1322.74,1189900000,1322.74 +2000-12-15,1340.93,1340.93,1305.38,1312.15,1561100000,1312.15 +2000-12-14,1359.99,1359.99,1340.48,1340.93,1061300000,1340.93 +2000-12-13,1371.18,1385.82,1358.48,1359.99,1195100000,1359.99 +2000-12-12,1380.20,1380.27,1370.27,1371.18,1083400000,1371.18 +2000-12-11,1369.89,1389.05,1364.14,1380.20,1202400000,1380.20 +2000-12-08,1343.55,1380.33,1343.55,1369.89,1358300000,1369.89 +2000-12-07,1351.46,1353.50,1339.26,1343.55,1128000000,1343.55 +2000-12-06,1376.54,1376.54,1346.15,1351.46,1399300000,1351.46 +2000-12-05,1324.97,1376.56,1324.97,1376.54,900300000,1376.54 +2000-12-04,1315.18,1332.06,1310.23,1324.97,1103000000,1324.97 +2000-12-01,1314.95,1334.67,1307.02,1315.23,1195200000,1315.23 +2000-11-30,1341.91,1341.91,1294.90,1314.95,1186530000,1314.95 +2000-11-29,1336.09,1352.38,1329.28,1341.93,402100000,1341.93 +2000-11-28,1348.97,1358.81,1334.97,1336.09,1028200000,1336.09 +2000-11-27,1341.77,1362.50,1341.77,1348.97,946100000,1348.97 +2000-11-24,1322.36,1343.83,1322.36,1341.77,404870000,1341.77 +2000-11-22,1347.35,1347.35,1321.89,1322.36,963200000,1322.36 +2000-11-21,1342.62,1355.87,1333.62,1347.35,1137100000,1347.35 +2000-11-20,1367.72,1367.72,1341.67,1342.62,955800000,1342.62 +2000-11-17,1372.32,1384.85,1355.55,1367.72,1070400000,1367.72 +2000-11-16,1389.81,1394.76,1370.39,1372.32,956300000,1372.32 +2000-11-15,1382.95,1395.96,1374.75,1389.81,1066800000,1389.81 +2000-11-14,1351.26,1390.06,1351.26,1382.95,1118800000,1382.95 +2000-11-13,1365.98,1365.98,1328.62,1351.26,1129300000,1351.26 +2000-11-10,1400.14,1400.14,1365.97,1365.98,962500000,1365.98 +2000-11-09,1409.28,1409.28,1369.68,1400.14,1111000000,1400.14 +2000-11-08,1431.87,1437.28,1408.78,1409.28,909300000,1409.28 +2000-11-07,1432.19,1436.22,1423.26,1431.87,880900000,1431.87 +2000-11-06,1428.76,1438.46,1427.72,1432.19,930900000,1432.19 +2000-11-03,1428.32,1433.21,1420.92,1426.69,997700000,1426.69 +2000-11-02,1421.22,1433.40,1421.22,1428.32,1167700000,1428.32 +2000-11-01,1429.40,1429.60,1410.45,1421.22,1206800000,1421.22 +2000-10-31,1398.66,1432.22,1398.66,1429.40,1366400000,1429.40 +2000-10-30,1379.58,1406.36,1376.86,1398.66,1186500000,1398.66 +2000-10-27,1364.44,1384.57,1364.13,1379.58,1086300000,1379.58 +2000-10-26,1364.90,1372.72,1337.81,1364.44,1303800000,1364.44 +2000-10-25,1398.13,1398.13,1362.21,1364.90,1315600000,1364.90 +2000-10-24,1395.78,1415.64,1388.13,1398.13,1158600000,1398.13 +2000-10-23,1396.93,1406.96,1387.75,1395.78,1046800000,1395.78 +2000-10-20,1388.76,1408.47,1382.19,1396.93,1177400000,1396.93 +2000-10-19,1342.13,1389.93,1342.13,1388.76,1297900000,1388.76 +2000-10-18,1349.97,1356.65,1305.79,1342.13,1441700000,1342.13 +2000-10-17,1374.62,1380.99,1342.34,1349.97,1161500000,1349.97 +2000-10-16,1374.17,1379.48,1365.06,1374.62,1005400000,1374.62 +2000-10-13,1329.78,1374.17,1327.08,1374.17,1223900000,1374.17 +2000-10-12,1364.59,1374.93,1328.06,1329.78,1388600000,1329.78 +2000-10-11,1387.02,1387.02,1349.67,1364.59,1387500000,1364.59 +2000-10-10,1402.03,1408.83,1383.85,1387.02,1044000000,1387.02 +2000-10-09,1408.99,1409.69,1392.48,1402.03,716600000,1402.03 +2000-10-06,1436.28,1443.30,1397.06,1408.99,1150100000,1408.99 +2000-10-05,1434.32,1444.17,1431.80,1436.28,1176100000,1436.28 +2000-10-04,1426.46,1439.99,1416.31,1434.32,1167400000,1434.32 +2000-10-03,1436.23,1454.82,1425.28,1426.46,1098100000,1426.46 +2000-10-02,1436.52,1445.60,1429.83,1436.23,1051200000,1436.23 +2000-09-29,1458.29,1458.29,1436.29,1436.51,1197100000,1436.51 +2000-09-28,1426.57,1461.69,1425.78,1458.29,1206200000,1458.29 +2000-09-27,1427.21,1437.22,1419.44,1426.57,1174700000,1426.57 +2000-09-26,1439.03,1448.04,1425.25,1427.21,1106600000,1427.21 +2000-09-25,1448.72,1457.42,1435.93,1439.03,982400000,1439.03 +2000-09-22,1449.05,1449.05,1421.88,1448.72,1185500000,1448.72 +2000-09-21,1451.34,1452.77,1436.30,1449.05,1105400000,1449.05 +2000-09-20,1459.90,1460.49,1430.95,1451.34,1104000000,1451.34 +2000-09-19,1444.51,1461.16,1444.51,1459.90,1024900000,1459.90 +2000-09-18,1465.81,1467.77,1441.92,1444.51,962500000,1444.51 +2000-09-15,1480.87,1480.96,1460.22,1465.81,1268400000,1465.81 +2000-09-14,1484.91,1494.16,1476.73,1480.87,1014000000,1480.87 +2000-09-13,1481.99,1487.45,1473.61,1484.91,1068300000,1484.91 +2000-09-12,1489.26,1496.93,1479.67,1481.99,991200000,1481.99 +2000-09-11,1494.50,1506.76,1483.01,1489.26,899300000,1489.26 +2000-09-08,1502.51,1502.51,1489.88,1494.50,961000000,1494.50 +2000-09-07,1492.25,1505.34,1492.25,1502.51,985500000,1502.51 +2000-09-06,1507.08,1512.61,1492.12,1492.25,995100000,1492.25 +2000-09-05,1520.77,1520.77,1504.21,1507.08,838500000,1507.08 +2000-09-01,1517.68,1530.09,1515.53,1520.77,767700000,1520.77 +2000-08-31,1502.59,1525.21,1502.59,1517.68,1056600000,1517.68 +2000-08-30,1509.84,1510.49,1500.09,1502.59,818400000,1502.59 +2000-08-29,1514.09,1514.81,1505.46,1509.84,795600000,1509.84 +2000-08-28,1506.45,1523.95,1506.45,1514.09,733600000,1514.09 +2000-08-25,1508.31,1513.47,1505.09,1506.45,685600000,1506.45 +2000-08-24,1505.97,1511.16,1501.25,1508.31,837100000,1508.31 +2000-08-23,1498.13,1507.20,1489.52,1505.97,871000000,1505.97 +2000-08-22,1499.48,1508.45,1497.42,1498.13,818800000,1498.13 +2000-08-21,1491.72,1502.84,1491.13,1499.48,731600000,1499.48 +2000-08-18,1496.07,1499.47,1488.99,1491.72,821400000,1491.72 +2000-08-17,1479.85,1499.32,1479.85,1496.07,922400000,1496.07 +2000-08-16,1484.43,1496.09,1475.74,1479.85,929800000,1479.85 +2000-08-15,1491.56,1493.12,1482.74,1484.43,895900000,1484.43 +2000-08-14,1471.84,1491.64,1468.56,1491.56,783800000,1491.56 +2000-08-11,1460.25,1475.72,1453.06,1471.84,835500000,1471.84 +2000-08-10,1472.87,1475.15,1459.89,1460.25,940800000,1460.25 +2000-08-09,1482.80,1490.33,1471.16,1472.87,1054000000,1472.87 +2000-08-08,1479.32,1484.52,1472.61,1482.80,992200000,1482.80 +2000-08-07,1462.93,1480.80,1460.72,1479.32,854800000,1479.32 +2000-08-04,1452.56,1462.93,1451.31,1462.93,956000000,1462.93 +2000-08-03,1438.70,1454.19,1425.43,1452.56,1095600000,1452.56 +2000-08-02,1438.10,1451.59,1433.49,1438.70,994500000,1438.70 +2000-08-01,1430.83,1443.54,1428.96,1438.10,938700000,1438.10 +2000-07-31,1419.89,1437.65,1418.71,1430.83,952600000,1430.83 +2000-07-28,1449.62,1456.68,1413.89,1419.89,980000000,1419.89 +2000-07-27,1452.42,1464.91,1445.33,1449.62,1156400000,1449.62 +2000-07-26,1474.47,1474.47,1452.42,1452.42,1235800000,1452.42 +2000-07-25,1464.29,1476.23,1464.29,1474.47,969400000,1474.47 +2000-07-24,1480.19,1485.88,1463.80,1464.29,880300000,1464.29 +2000-07-21,1495.57,1495.57,1477.91,1480.19,968300000,1480.19 +2000-07-20,1481.96,1501.92,1481.96,1495.57,1064600000,1495.57 +2000-07-19,1493.74,1495.63,1479.92,1481.96,909400000,1481.96 +2000-07-18,1510.49,1510.49,1491.35,1493.74,908300000,1493.74 +2000-07-17,1509.98,1517.32,1505.26,1510.49,906000000,1510.49 +2000-07-14,1495.84,1509.99,1494.56,1509.98,960600000,1509.98 +2000-07-13,1492.92,1501.39,1489.65,1495.84,1026800000,1495.84 +2000-07-12,1480.88,1497.69,1480.88,1492.92,1001200000,1492.92 +2000-07-11,1475.62,1488.77,1470.48,1480.88,980500000,1480.88 +2000-07-10,1478.90,1486.56,1474.76,1475.62,838700000,1475.62 +2000-07-07,1456.67,1484.12,1456.67,1478.90,931700000,1478.90 +2000-07-06,1446.23,1461.65,1439.56,1456.67,947300000,1456.67 +2000-07-05,1469.54,1469.54,1442.45,1446.23,1019300000,1446.23 +2000-07-03,1454.60,1469.58,1450.85,1469.54,451900000,1469.54 +2000-06-30,1442.39,1454.68,1438.71,1454.60,1459700000,1454.60 +2000-06-29,1454.82,1455.14,1434.63,1442.39,1110900000,1442.39 +2000-06-28,1450.55,1467.63,1450.55,1454.82,1095100000,1454.82 +2000-06-27,1455.31,1463.35,1450.55,1450.55,1042500000,1450.55 +2000-06-26,1441.48,1459.66,1441.48,1455.31,889000000,1455.31 +2000-06-23,1452.18,1459.94,1438.31,1441.48,847600000,1441.48 +2000-06-22,1479.13,1479.13,1448.03,1452.18,1022700000,1452.18 +2000-06-21,1475.95,1482.19,1468.00,1479.13,1009600000,1479.13 +2000-06-20,1486.00,1487.32,1470.18,1475.95,1031500000,1475.95 +2000-06-19,1464.46,1488.93,1459.05,1486.00,921700000,1486.00 +2000-06-16,1478.73,1480.77,1460.42,1464.46,1250800000,1464.46 +2000-06-15,1470.54,1482.04,1464.62,1478.73,1011400000,1478.73 +2000-06-14,1469.44,1483.62,1467.71,1470.54,929700000,1470.54 +2000-06-13,1446.00,1470.42,1442.38,1469.44,935900000,1469.44 +2000-06-12,1456.95,1462.93,1445.99,1446.00,774100000,1446.00 +2000-06-09,1461.67,1472.67,1454.96,1456.95,786000000,1456.95 +2000-06-08,1471.36,1475.65,1456.49,1461.67,854300000,1461.67 +2000-06-07,1457.84,1474.64,1455.06,1471.36,854600000,1471.36 +2000-06-06,1467.63,1471.36,1454.74,1457.84,950100000,1457.84 +2000-06-05,1477.26,1477.28,1464.68,1467.63,838600000,1467.63 +2000-06-02,1448.81,1483.23,1448.81,1477.26,1162400000,1477.26 +2000-06-01,1420.60,1448.81,1420.60,1448.81,960100000,1448.81 +2000-05-31,1422.44,1434.49,1415.50,1420.60,960500000,1420.60 +2000-05-30,1378.02,1422.45,1378.02,1422.45,844200000,1422.45 +2000-05-26,1381.52,1391.42,1369.75,1378.02,722600000,1378.02 +2000-05-25,1399.05,1411.65,1373.93,1381.52,984500000,1381.52 +2000-05-24,1373.86,1401.75,1361.09,1399.05,1152300000,1399.05 +2000-05-23,1400.72,1403.77,1373.43,1373.86,869900000,1373.86 +2000-05-22,1406.95,1410.55,1368.73,1400.72,869000000,1400.72 +2000-05-19,1437.21,1437.21,1401.74,1406.95,853700000,1406.95 +2000-05-18,1447.80,1458.04,1436.59,1437.21,807900000,1437.21 +2000-05-17,1466.04,1466.04,1441.67,1447.80,820500000,1447.80 +2000-05-16,1452.36,1470.40,1450.76,1466.04,955500000,1466.04 +2000-05-15,1420.96,1452.39,1416.54,1452.36,854600000,1452.36 +2000-05-12,1407.81,1430.13,1407.81,1420.96,858200000,1420.96 +2000-05-11,1383.05,1410.26,1383.05,1407.81,953600000,1407.81 +2000-05-10,1412.14,1412.14,1375.14,1383.05,1006400000,1383.05 +2000-05-09,1424.17,1430.28,1401.85,1412.14,896600000,1412.14 +2000-05-08,1432.63,1432.63,1417.05,1424.17,787600000,1424.17 +2000-05-05,1409.57,1436.03,1405.08,1432.63,805500000,1432.63 +2000-05-04,1415.10,1420.99,1404.94,1409.57,925800000,1409.57 +2000-05-03,1446.29,1446.29,1398.36,1415.10,991600000,1415.10 +2000-05-02,1468.25,1468.25,1445.22,1446.29,1011500000,1446.29 +2000-05-01,1452.43,1481.51,1452.43,1468.25,966300000,1468.25 +2000-04-28,1464.92,1473.62,1448.15,1452.43,984600000,1452.43 +2000-04-27,1460.99,1469.21,1434.81,1464.92,1111000000,1464.92 +2000-04-26,1477.44,1482.94,1456.98,1460.99,999600000,1460.99 +2000-04-25,1429.86,1477.67,1429.86,1477.44,1071100000,1477.44 +2000-04-24,1434.54,1434.54,1407.13,1429.86,868700000,1429.86 +2000-04-20,1427.47,1435.49,1422.08,1434.54,896200000,1434.54 +2000-04-19,1441.61,1447.69,1424.26,1427.47,1001400000,1427.47 +2000-04-18,1401.44,1441.61,1397.81,1441.61,1109400000,1441.61 +2000-04-17,1356.56,1401.53,1346.50,1401.44,1204700000,1401.44 +2000-04-14,1440.51,1440.51,1339.40,1356.56,1279700000,1356.56 +2000-04-13,1467.17,1477.52,1439.34,1440.51,1032000000,1440.51 +2000-04-12,1500.59,1509.08,1466.15,1467.17,1175900000,1467.17 +2000-04-11,1504.46,1512.80,1486.78,1500.59,971400000,1500.59 +2000-04-10,1516.35,1527.19,1503.35,1504.46,853700000,1504.46 +2000-04-07,1501.34,1518.68,1501.34,1516.35,891600000,1516.35 +2000-04-06,1487.37,1511.76,1487.37,1501.34,1008000000,1501.34 +2000-04-05,1494.73,1506.55,1478.05,1487.37,1110300000,1487.37 +2000-04-04,1505.98,1526.45,1416.41,1494.73,1515460000,1494.73 +2000-04-03,1498.58,1507.19,1486.96,1505.97,1021700000,1505.97 +2000-03-31,1487.92,1519.81,1484.38,1498.58,1227400000,1498.58 +2000-03-30,1508.52,1517.38,1474.63,1487.92,1193400000,1487.92 +2000-03-29,1507.73,1521.45,1497.45,1508.52,1061900000,1508.52 +2000-03-28,1523.86,1527.36,1507.09,1507.73,959100000,1507.73 +2000-03-27,1527.46,1534.63,1518.46,1523.86,901000000,1523.86 +2000-03-24,1527.35,1552.87,1516.83,1527.46,1052200000,1527.46 +2000-03-23,1500.64,1532.50,1492.39,1527.35,1078300000,1527.35 +2000-03-22,1493.87,1505.08,1487.33,1500.64,1075000000,1500.64 +2000-03-21,1456.63,1493.92,1446.06,1493.87,1065900000,1493.87 +2000-03-20,1464.47,1470.30,1448.49,1456.63,920800000,1456.63 +2000-03-17,1458.47,1477.33,1453.32,1464.47,1295100000,1464.47 +2000-03-16,1392.15,1458.47,1392.15,1458.47,1482300000,1458.47 +2000-03-15,1359.15,1397.99,1356.99,1392.14,1302800000,1392.14 +2000-03-14,1383.62,1395.15,1359.15,1359.15,1094000000,1359.15 +2000-03-13,1395.07,1398.39,1364.84,1383.62,1016100000,1383.62 +2000-03-10,1401.69,1413.46,1392.07,1395.07,1138800000,1395.07 +2000-03-09,1366.70,1401.82,1357.88,1401.69,1123000000,1401.69 +2000-03-08,1355.62,1373.79,1346.62,1366.70,1203000000,1366.70 +2000-03-07,1391.28,1399.21,1349.99,1355.62,1314100000,1355.62 +2000-03-06,1409.17,1409.74,1384.75,1391.28,1029000000,1391.28 +2000-03-03,1381.76,1410.88,1381.76,1409.17,1150300000,1409.17 +2000-03-02,1379.19,1386.56,1370.35,1381.76,1198600000,1381.76 +2000-03-01,1366.42,1383.46,1366.42,1379.19,1274100000,1379.19 +2000-02-29,1348.05,1369.63,1348.05,1366.42,1204300000,1366.42 +2000-02-28,1333.36,1360.82,1325.07,1348.05,1026500000,1348.05 +2000-02-25,1353.43,1362.14,1329.15,1333.36,1065200000,1333.36 +2000-02-24,1360.69,1364.80,1329.88,1353.43,1215000000,1353.43 +2000-02-23,1352.17,1370.11,1342.44,1360.69,993700000,1360.69 +2000-02-22,1346.09,1358.11,1331.88,1352.17,980000000,1352.17 +2000-02-18,1388.26,1388.59,1345.32,1346.09,1042300000,1346.09 +2000-02-17,1387.67,1399.88,1380.07,1388.26,1034800000,1388.26 +2000-02-16,1402.05,1404.55,1385.58,1387.67,1018800000,1387.67 +2000-02-15,1389.94,1407.72,1376.25,1402.05,1092100000,1402.05 +2000-02-14,1387.12,1394.93,1380.53,1389.94,927300000,1389.94 +2000-02-11,1416.83,1416.83,1378.89,1387.12,1025700000,1387.12 +2000-02-10,1411.70,1422.10,1406.43,1416.83,1058800000,1416.83 +2000-02-09,1441.72,1444.55,1411.65,1411.71,1050500000,1411.71 +2000-02-08,1424.24,1441.83,1424.24,1441.72,1047700000,1441.72 +2000-02-07,1424.37,1427.15,1413.33,1424.24,918100000,1424.24 +2000-02-04,1424.97,1435.91,1420.63,1424.37,1045100000,1424.37 +2000-02-03,1409.12,1425.78,1398.52,1424.97,1146500000,1424.97 +2000-02-02,1409.28,1420.61,1403.49,1409.12,1038600000,1409.12 +2000-02-01,1394.46,1412.49,1384.79,1409.28,981000000,1409.28 +2000-01-31,1360.16,1394.48,1350.14,1394.46,993800000,1394.46 +2000-01-28,1398.56,1398.56,1356.20,1360.16,1095800000,1360.16 +2000-01-27,1404.09,1418.86,1370.99,1398.56,1129500000,1398.56 +2000-01-26,1410.03,1412.73,1400.16,1404.09,1117300000,1404.09 +2000-01-25,1401.53,1414.26,1388.49,1410.03,1073700000,1410.03 +2000-01-24,1441.36,1454.09,1395.42,1401.53,1115800000,1401.53 +2000-01-21,1445.57,1453.18,1439.60,1441.36,1209800000,1441.36 +2000-01-20,1455.90,1465.71,1438.54,1445.57,1100700000,1445.57 +2000-01-19,1455.14,1461.39,1448.68,1455.90,1087800000,1455.90 +2000-01-18,1465.15,1465.15,1451.30,1455.14,1056700000,1455.14 +2000-01-14,1449.68,1473.00,1449.68,1465.15,1085900000,1465.15 +2000-01-13,1432.25,1454.20,1432.25,1449.68,1030400000,1449.68 +2000-01-12,1438.56,1442.60,1427.08,1432.25,974600000,1432.25 +2000-01-11,1457.60,1458.66,1434.42,1438.56,1014000000,1438.56 +2000-01-10,1441.47,1464.36,1441.47,1457.60,1064800000,1457.60 +2000-01-07,1403.45,1441.47,1400.73,1441.47,1225200000,1441.47 +2000-01-06,1402.11,1411.90,1392.10,1403.45,1092300000,1403.45 +2000-01-05,1399.42,1413.27,1377.68,1402.11,1085500000,1402.11 +2000-01-04,1455.22,1455.22,1397.43,1399.42,1009000000,1399.42 +2000-01-03,1469.25,1478.00,1438.36,1455.22,931800000,1455.22 +1999-12-31,1464.47,1472.42,1458.19,1469.25,374050000,1469.25 +1999-12-30,1463.46,1473.10,1462.60,1464.47,554680000,1464.47 +1999-12-29,1457.66,1467.47,1457.66,1463.46,567860000,1463.46 +1999-12-28,1457.09,1462.68,1452.78,1457.66,655400000,1457.66 +1999-12-27,1458.34,1463.19,1450.83,1457.10,722600000,1457.10 +1999-12-23,1436.13,1461.44,1436.13,1458.34,728600000,1458.34 +1999-12-22,1433.43,1440.02,1429.13,1436.13,850000000,1436.13 +1999-12-21,1418.09,1436.47,1414.80,1433.43,963500000,1433.43 +1999-12-20,1421.03,1429.16,1411.10,1418.09,904600000,1418.09 +1999-12-17,1418.78,1431.77,1418.78,1421.03,1349800000,1421.03 +1999-12-16,1413.32,1423.11,1408.35,1418.78,1070300000,1418.78 +1999-12-15,1403.17,1417.40,1396.20,1413.33,1033900000,1413.33 +1999-12-14,1415.22,1418.30,1401.59,1403.17,1027800000,1403.17 +1999-12-13,1417.04,1421.58,1410.10,1415.22,977600000,1415.22 +1999-12-10,1408.11,1421.58,1405.65,1417.04,987200000,1417.04 +1999-12-09,1403.88,1418.43,1391.47,1408.11,1122100000,1408.11 +1999-12-08,1409.17,1415.66,1403.88,1403.88,957000000,1403.88 +1999-12-07,1423.33,1426.81,1409.17,1409.17,1085800000,1409.17 +1999-12-06,1433.30,1434.15,1418.25,1423.33,916800000,1423.33 +1999-12-03,1409.04,1447.42,1409.04,1433.30,1006400000,1433.30 +1999-12-02,1397.72,1409.04,1397.72,1409.04,900700000,1409.04 +1999-12-01,1388.91,1400.12,1387.38,1397.72,884000000,1397.72 +1999-11-30,1407.83,1410.59,1386.95,1388.91,951500000,1388.91 +1999-11-29,1416.62,1416.62,1404.15,1407.83,866100000,1407.83 +1999-11-26,1417.08,1425.24,1416.14,1416.62,312120000,1416.62 +1999-11-24,1404.64,1419.71,1399.17,1417.08,734800000,1417.08 +1999-11-23,1420.94,1423.91,1402.20,1404.64,926100000,1404.64 +1999-11-22,1422.00,1425.00,1412.40,1420.94,873500000,1420.94 +1999-11-19,1424.94,1424.94,1417.54,1422.00,893800000,1422.00 +1999-11-18,1410.71,1425.31,1410.71,1424.94,1022800000,1424.94 +1999-11-17,1420.07,1423.44,1410.69,1410.71,960000000,1410.71 +1999-11-16,1394.39,1420.36,1394.39,1420.07,942200000,1420.07 +1999-11-15,1396.06,1398.58,1392.28,1394.39,795700000,1394.39 +1999-11-12,1381.46,1396.12,1368.54,1396.06,900200000,1396.06 +1999-11-11,1373.46,1382.12,1372.19,1381.46,891300000,1381.46 +1999-11-10,1365.28,1379.18,1359.98,1373.46,984700000,1373.46 +1999-11-09,1377.01,1383.81,1361.45,1365.28,854300000,1365.28 +1999-11-08,1370.23,1380.78,1365.87,1377.01,806800000,1377.01 +1999-11-05,1362.64,1387.48,1362.64,1370.23,1007300000,1370.23 +1999-11-04,1354.93,1369.41,1354.93,1362.64,981700000,1362.64 +1999-11-03,1347.74,1360.33,1347.74,1354.93,914400000,1354.93 +1999-11-02,1354.12,1369.32,1346.41,1347.74,904500000,1347.74 +1999-11-01,1362.93,1367.30,1354.05,1354.12,861000000,1354.12 +1999-10-29,1342.44,1373.17,1342.44,1362.93,1120500000,1362.93 +1999-10-28,1296.71,1342.47,1296.71,1342.44,1135100000,1342.44 +1999-10-27,1281.91,1299.39,1280.48,1296.71,950100000,1296.71 +1999-10-26,1293.63,1303.46,1281.86,1281.91,878300000,1281.91 +1999-10-25,1301.65,1301.68,1286.07,1293.63,777000000,1293.63 +1999-10-22,1283.61,1308.81,1283.61,1301.65,959200000,1301.65 +1999-10-21,1289.43,1289.43,1265.61,1283.61,1012500000,1283.61 +1999-10-20,1261.32,1289.44,1261.32,1289.43,928800000,1289.43 +1999-10-19,1254.13,1279.32,1254.13,1261.32,905700000,1261.32 +1999-10-18,1247.41,1254.13,1233.70,1254.13,818700000,1254.13 +1999-10-15,1283.42,1283.42,1245.39,1247.41,912600000,1247.41 +1999-10-14,1285.55,1289.63,1267.62,1283.42,892300000,1283.42 +1999-10-13,1313.04,1313.04,1282.80,1285.55,821500000,1285.55 +1999-10-12,1335.21,1335.21,1311.80,1313.04,778300000,1313.04 +1999-10-11,1336.02,1339.23,1332.96,1335.21,655900000,1335.21 +1999-10-08,1317.64,1336.61,1311.88,1336.02,897300000,1336.02 +1999-10-07,1325.40,1328.05,1314.13,1317.64,827800000,1317.64 +1999-10-06,1301.35,1325.46,1301.35,1325.40,895200000,1325.40 +1999-10-05,1304.60,1316.41,1286.44,1301.35,965700000,1301.35 +1999-10-04,1282.81,1304.60,1282.81,1304.60,803300000,1304.60 +1999-10-01,1282.71,1283.17,1265.78,1282.81,896200000,1282.81 +1999-09-30,1268.37,1291.31,1268.37,1282.71,1017600000,1282.71 +1999-09-29,1282.20,1288.83,1268.16,1268.37,856000000,1268.37 +1999-09-28,1283.31,1285.55,1256.26,1282.20,885400000,1282.20 +1999-09-27,1277.36,1295.03,1277.36,1283.31,780600000,1283.31 +1999-09-24,1280.41,1281.17,1263.84,1277.36,872800000,1277.36 +1999-09-23,1310.51,1315.25,1277.30,1280.41,890800000,1280.41 +1999-09-22,1307.58,1316.18,1297.81,1310.51,822200000,1310.51 +1999-09-21,1335.52,1335.53,1301.97,1307.58,817300000,1307.58 +1999-09-20,1335.42,1338.38,1330.61,1335.53,568000000,1335.53 +1999-09-17,1318.48,1337.59,1318.48,1335.42,861900000,1335.42 +1999-09-16,1317.97,1322.51,1299.97,1318.48,739000000,1318.48 +1999-09-15,1336.29,1347.21,1317.97,1317.97,787300000,1317.97 +1999-09-14,1344.13,1344.18,1330.61,1336.29,734500000,1336.29 +1999-09-13,1351.66,1351.66,1341.70,1344.13,657900000,1344.13 +1999-09-10,1347.66,1357.62,1346.20,1351.66,808500000,1351.66 +1999-09-09,1344.15,1347.66,1333.91,1347.66,773900000,1347.66 +1999-09-08,1350.45,1355.18,1337.36,1344.15,791200000,1344.15 +1999-09-07,1357.24,1361.39,1349.59,1350.45,715300000,1350.45 +1999-09-03,1319.11,1357.74,1319.11,1357.24,663200000,1357.24 +1999-09-02,1331.07,1331.07,1304.88,1319.11,687100000,1319.11 +1999-09-01,1320.41,1331.18,1320.39,1331.07,708200000,1331.07 +1999-08-31,1324.02,1333.27,1306.96,1320.41,861700000,1320.41 +1999-08-30,1348.27,1350.70,1322.80,1324.02,597900000,1324.02 +1999-08-27,1362.01,1365.63,1347.35,1348.27,570050000,1348.27 +1999-08-26,1381.79,1381.79,1361.53,1362.01,719000000,1362.01 +1999-08-25,1363.50,1382.84,1359.20,1381.79,864600000,1381.79 +1999-08-24,1360.22,1373.32,1353.63,1363.50,732700000,1363.50 +1999-08-23,1336.61,1360.24,1336.61,1360.22,682600000,1360.22 +1999-08-20,1323.59,1336.61,1323.59,1336.61,661200000,1336.61 +1999-08-19,1332.84,1332.84,1315.35,1323.59,684200000,1323.59 +1999-08-18,1344.16,1344.16,1332.13,1332.84,682800000,1332.84 +1999-08-17,1330.77,1344.16,1328.76,1344.16,691500000,1344.16 +1999-08-16,1327.68,1331.05,1320.51,1330.77,583550000,1330.77 +1999-08-13,1298.16,1327.72,1298.16,1327.68,691700000,1327.68 +1999-08-12,1301.93,1313.61,1298.06,1298.16,745600000,1298.16 +1999-08-11,1281.43,1301.93,1281.43,1301.93,792300000,1301.93 +1999-08-10,1297.80,1298.62,1267.73,1281.43,836200000,1281.43 +1999-08-09,1300.29,1306.68,1295.99,1297.80,684300000,1297.80 +1999-08-06,1313.71,1316.74,1293.19,1300.29,698900000,1300.29 +1999-08-05,1305.33,1313.71,1287.23,1313.71,859300000,1313.71 +1999-08-04,1322.18,1330.16,1304.50,1305.33,789300000,1305.33 +1999-08-03,1328.05,1336.13,1314.91,1322.18,739600000,1322.18 +1999-08-02,1328.72,1344.69,1325.21,1328.05,649550000,1328.05 +1999-07-30,1341.03,1350.92,1328.49,1328.72,736800000,1328.72 +1999-07-29,1365.40,1365.40,1332.82,1341.03,770100000,1341.03 +1999-07-28,1362.84,1370.53,1355.54,1365.40,690900000,1365.40 +1999-07-27,1347.75,1368.70,1347.75,1362.84,723800000,1362.84 +1999-07-26,1356.94,1358.61,1346.20,1347.76,613450000,1347.76 +1999-07-23,1360.97,1367.41,1349.91,1356.94,630580000,1356.94 +1999-07-22,1379.29,1379.29,1353.98,1360.97,771700000,1360.97 +1999-07-21,1377.10,1386.66,1372.63,1379.29,785500000,1379.29 +1999-07-20,1407.65,1407.65,1375.15,1377.10,754800000,1377.10 +1999-07-19,1418.78,1420.33,1404.56,1407.65,642330000,1407.65 +1999-07-16,1409.62,1418.78,1407.07,1418.78,714100000,1418.78 +1999-07-15,1398.17,1409.84,1398.17,1409.62,818800000,1409.62 +1999-07-14,1393.56,1400.05,1386.51,1398.17,756100000,1398.17 +1999-07-13,1399.10,1399.10,1386.84,1393.56,736000000,1393.56 +1999-07-12,1403.28,1406.82,1394.70,1399.10,685300000,1399.10 +1999-07-09,1394.42,1403.28,1394.42,1403.28,701000000,1403.28 +1999-07-08,1395.86,1403.25,1386.69,1394.42,830600000,1394.42 +1999-07-07,1388.12,1395.88,1384.95,1395.86,791200000,1395.86 +1999-07-06,1391.22,1405.29,1387.08,1388.12,722900000,1388.12 +1999-07-02,1380.96,1391.22,1379.57,1391.22,613570000,1391.22 +1999-07-01,1372.71,1382.80,1360.80,1380.96,843400000,1380.96 +1999-06-30,1351.45,1372.93,1338.78,1372.71,1117000000,1372.71 +1999-06-29,1331.35,1351.51,1328.40,1351.45,820100000,1351.45 +1999-06-28,1315.31,1333.68,1315.31,1331.35,652910000,1331.35 +1999-06-25,1315.78,1329.13,1312.64,1315.31,623460000,1315.31 +1999-06-24,1333.06,1333.06,1308.47,1315.78,690400000,1315.78 +1999-06-23,1335.87,1335.88,1322.55,1333.06,731800000,1333.06 +1999-06-22,1349.00,1351.12,1335.52,1335.88,716500000,1335.88 +1999-06-21,1342.84,1349.06,1337.63,1349.00,686600000,1349.00 +1999-06-18,1339.90,1344.48,1333.52,1342.84,914500000,1342.84 +1999-06-17,1330.41,1343.54,1322.75,1339.90,700300000,1339.90 +1999-06-16,1301.16,1332.83,1301.16,1330.41,806800000,1330.41 +1999-06-15,1294.00,1310.76,1294.00,1301.16,696600000,1301.16 +1999-06-14,1293.64,1301.99,1292.20,1294.00,669400000,1294.00 +1999-06-11,1302.82,1311.97,1287.88,1293.64,698200000,1293.64 +1999-06-10,1318.64,1318.64,1293.28,1302.82,716500000,1302.82 +1999-06-09,1317.33,1326.01,1314.73,1318.64,662000000,1318.64 +1999-06-08,1334.52,1334.52,1312.83,1317.33,685900000,1317.33 +1999-06-07,1327.75,1336.42,1325.89,1334.52,664300000,1334.52 +1999-06-04,1299.54,1327.75,1299.54,1327.75,694500000,1327.75 +1999-06-03,1294.81,1304.15,1294.20,1299.54,719600000,1299.54 +1999-06-02,1294.26,1297.10,1277.47,1294.81,728000000,1294.81 +1999-06-01,1301.84,1301.84,1281.44,1294.26,683800000,1294.26 +1999-05-28,1281.41,1304.00,1281.41,1301.84,649960000,1301.84 +1999-05-27,1304.76,1304.76,1277.31,1281.41,811400000,1281.41 +1999-05-26,1284.40,1304.85,1278.43,1304.76,870800000,1304.76 +1999-05-25,1306.65,1317.52,1284.38,1284.40,826700000,1284.40 +1999-05-24,1330.29,1333.02,1303.53,1306.65,754700000,1306.65 +1999-05-21,1338.83,1340.88,1326.19,1330.29,686600000,1330.29 +1999-05-20,1344.23,1350.49,1338.83,1338.83,752200000,1338.83 +1999-05-19,1333.32,1344.23,1327.05,1344.23,801100000,1344.23 +1999-05-18,1339.49,1345.44,1323.46,1333.32,753400000,1333.32 +1999-05-17,1337.80,1339.95,1321.19,1339.49,665500000,1339.49 +1999-05-14,1367.56,1367.56,1332.63,1337.80,727800000,1337.80 +1999-05-13,1364.00,1375.98,1364.00,1367.56,796900000,1367.56 +1999-05-12,1355.61,1367.36,1333.10,1364.00,825500000,1364.00 +1999-05-11,1340.30,1360.00,1340.30,1355.61,836100000,1355.61 +1999-05-10,1345.00,1352.01,1334.00,1340.30,773300000,1340.30 +1999-05-07,1332.05,1345.99,1332.05,1345.00,814900000,1345.00 +1999-05-06,1347.31,1348.36,1322.56,1332.05,875400000,1332.05 +1999-05-05,1332.00,1347.32,1317.44,1347.31,913500000,1347.31 +1999-05-04,1354.63,1354.64,1330.64,1332.00,933100000,1332.00 +1999-05-03,1335.18,1354.63,1329.01,1354.63,811400000,1354.63 +1999-04-30,1342.83,1351.83,1314.58,1335.18,936500000,1335.18 +1999-04-29,1350.91,1356.75,1336.81,1342.83,1003600000,1342.83 +1999-04-28,1362.80,1368.62,1348.29,1350.91,951700000,1350.91 +1999-04-27,1360.04,1371.56,1356.55,1362.80,891700000,1362.80 +1999-04-26,1356.85,1363.56,1353.72,1360.04,712000000,1360.04 +1999-04-23,1358.83,1363.65,1348.45,1356.85,744900000,1356.85 +1999-04-22,1336.12,1358.84,1336.12,1358.82,927900000,1358.82 +1999-04-21,1306.17,1336.12,1301.84,1336.12,920000000,1336.12 +1999-04-20,1289.48,1306.30,1284.21,1306.17,985400000,1306.17 +1999-04-19,1319.00,1340.10,1284.48,1289.48,1214400000,1289.48 +1999-04-16,1322.86,1325.03,1311.40,1319.00,1002300000,1319.00 +1999-04-15,1328.44,1332.41,1308.38,1322.85,1089800000,1322.85 +1999-04-14,1349.82,1357.24,1326.41,1328.44,952000000,1328.44 +1999-04-13,1358.64,1362.38,1344.03,1349.82,810900000,1349.82 +1999-04-12,1348.35,1358.69,1333.48,1358.63,810800000,1358.63 +1999-04-09,1343.98,1351.22,1335.24,1348.35,716100000,1348.35 +1999-04-08,1326.89,1344.08,1321.60,1343.98,850500000,1343.98 +1999-04-07,1317.89,1329.58,1312.59,1326.89,816400000,1326.89 +1999-04-06,1321.12,1326.76,1311.07,1317.89,787500000,1317.89 +1999-04-05,1293.72,1321.12,1293.72,1321.12,695800000,1321.12 +1999-04-01,1286.37,1294.54,1282.56,1293.72,703000000,1293.72 +1999-03-31,1300.75,1313.60,1285.87,1286.37,924300000,1286.37 +1999-03-30,1310.17,1310.17,1295.47,1300.75,729000000,1300.75 +1999-03-29,1282.80,1311.76,1282.80,1310.17,747900000,1310.17 +1999-03-26,1289.99,1289.99,1277.25,1282.80,707200000,1282.80 +1999-03-25,1268.59,1289.99,1268.59,1289.99,784200000,1289.99 +1999-03-24,1262.14,1269.02,1256.43,1268.59,761900000,1268.59 +1999-03-23,1297.01,1297.01,1257.46,1262.14,811300000,1262.14 +1999-03-22,1299.29,1303.84,1294.26,1297.01,658200000,1297.01 +1999-03-19,1316.55,1323.82,1298.92,1299.29,914700000,1299.29 +1999-03-18,1297.82,1317.62,1294.75,1316.55,831000000,1316.55 +1999-03-17,1306.38,1306.55,1292.63,1297.82,752300000,1297.82 +1999-03-16,1307.26,1311.11,1302.29,1306.38,751900000,1306.38 +1999-03-15,1294.59,1307.47,1291.03,1307.26,727200000,1307.26 +1999-03-12,1297.68,1304.42,1289.17,1294.59,825800000,1294.59 +1999-03-11,1286.84,1306.43,1286.84,1297.68,904800000,1297.68 +1999-03-10,1279.84,1287.02,1275.16,1286.84,841900000,1286.84 +1999-03-09,1282.73,1293.74,1275.11,1279.84,803700000,1279.84 +1999-03-08,1275.47,1282.74,1271.58,1282.73,714600000,1282.73 +1999-03-05,1246.64,1275.73,1246.64,1275.47,834900000,1275.47 +1999-03-04,1227.70,1247.74,1227.70,1246.64,770900000,1246.64 +1999-03-03,1225.50,1231.63,1216.03,1227.70,751700000,1227.70 +1999-03-02,1236.16,1248.31,1221.87,1225.50,753600000,1225.50 +1999-03-01,1238.33,1238.70,1221.88,1236.16,699500000,1236.16 +1999-02-26,1245.02,1246.73,1226.24,1238.33,784600000,1238.33 +1999-02-25,1253.41,1253.41,1225.01,1245.02,740500000,1245.02 +1999-02-24,1271.18,1283.84,1251.94,1253.41,782000000,1253.41 +1999-02-23,1272.14,1280.38,1263.36,1271.18,781100000,1271.18 +1999-02-22,1239.22,1272.22,1239.22,1272.14,718500000,1272.14 +1999-02-19,1237.28,1247.91,1232.03,1239.22,700000000,1239.22 +1999-02-18,1224.03,1239.13,1220.70,1237.28,742400000,1237.28 +1999-02-17,1241.87,1249.31,1220.92,1224.03,735100000,1224.03 +1999-02-16,1230.13,1252.17,1230.13,1241.87,653760000,1241.87 +1999-02-12,1254.04,1254.04,1225.53,1230.13,691500000,1230.13 +1999-02-11,1223.55,1254.05,1223.19,1254.04,815800000,1254.04 +1999-02-10,1216.14,1226.78,1211.89,1223.55,721400000,1223.55 +1999-02-09,1243.77,1243.97,1215.63,1216.14,736000000,1216.14 +1999-02-08,1239.40,1246.93,1231.98,1243.77,705400000,1243.77 +1999-02-05,1248.49,1251.86,1232.28,1239.40,872000000,1239.40 +1999-02-04,1272.07,1272.23,1248.36,1248.49,854400000,1248.49 +1999-02-03,1261.99,1276.04,1255.27,1272.07,876500000,1272.07 +1999-02-02,1273.00,1273.49,1247.56,1261.99,845500000,1261.99 +1999-02-01,1279.64,1283.75,1271.31,1273.00,799400000,1273.00 +1999-01-29,1265.37,1280.37,1255.18,1279.64,917000000,1279.64 +1999-01-28,1243.17,1266.40,1243.17,1265.37,848800000,1265.37 +1999-01-27,1252.31,1262.61,1242.82,1243.17,893800000,1243.17 +1999-01-26,1233.98,1253.25,1233.98,1252.31,896400000,1252.31 +1999-01-25,1225.19,1233.98,1219.46,1233.98,723900000,1233.98 +1999-01-22,1235.16,1236.41,1217.97,1225.19,785900000,1225.19 +1999-01-21,1256.62,1256.94,1232.19,1235.16,871800000,1235.16 +1999-01-20,1252.00,1274.07,1251.54,1256.62,905700000,1256.62 +1999-01-19,1243.26,1253.27,1234.91,1252.00,785500000,1252.00 +1999-01-15,1212.19,1243.26,1212.19,1243.26,798100000,1243.26 +1999-01-14,1234.40,1236.81,1209.54,1212.19,797200000,1212.19 +1999-01-13,1239.51,1247.75,1205.46,1234.40,931500000,1234.40 +1999-01-12,1263.88,1264.45,1238.29,1239.51,800200000,1239.51 +1999-01-11,1275.09,1276.22,1253.34,1263.88,818000000,1263.88 +1999-01-08,1269.73,1278.24,1261.82,1275.09,937800000,1275.09 +1999-01-07,1272.34,1272.34,1257.68,1269.73,863000000,1269.73 +1999-01-06,1244.78,1272.50,1244.78,1272.34,986900000,1272.34 +1999-01-05,1228.10,1246.11,1228.10,1244.78,775000000,1244.78 +1999-01-04,1229.23,1248.81,1219.10,1228.10,877000000,1228.10 +1998-12-31,1231.93,1237.18,1224.96,1229.23,719200000,1229.23 +1998-12-30,1241.81,1244.93,1231.20,1231.93,594220000,1231.93 +1998-12-29,1225.49,1241.86,1220.78,1241.81,586490000,1241.81 +1998-12-28,1226.27,1231.52,1221.17,1225.49,531560000,1225.49 +1998-12-24,1228.54,1229.72,1224.85,1226.27,246980000,1226.27 +1998-12-23,1203.57,1229.89,1203.57,1228.54,697500000,1228.54 +1998-12-22,1202.84,1209.22,1192.72,1203.57,680500000,1203.57 +1998-12-21,1188.03,1210.88,1188.03,1202.84,744800000,1202.84 +1998-12-18,1179.98,1188.89,1178.27,1188.03,839600000,1188.03 +1998-12-17,1161.94,1180.03,1161.94,1179.98,739400000,1179.98 +1998-12-16,1162.83,1166.29,1154.69,1161.94,725500000,1161.94 +1998-12-15,1141.20,1162.83,1141.20,1162.83,777900000,1162.83 +1998-12-14,1166.46,1166.46,1136.89,1141.20,741800000,1141.20 +1998-12-11,1165.02,1167.89,1153.19,1166.46,688900000,1166.46 +1998-12-10,1183.49,1183.77,1163.75,1165.02,748600000,1165.02 +1998-12-09,1181.38,1185.22,1175.89,1183.49,694200000,1183.49 +1998-12-08,1187.70,1193.53,1172.78,1181.38,727700000,1181.38 +1998-12-07,1176.74,1188.96,1176.71,1187.70,671200000,1187.70 +1998-12-04,1150.14,1176.74,1150.14,1176.74,709700000,1176.74 +1998-12-03,1171.25,1176.99,1149.61,1150.14,799100000,1150.14 +1998-12-02,1175.28,1175.28,1157.76,1171.25,727400000,1171.25 +1998-12-01,1163.63,1175.89,1150.31,1175.28,789200000,1175.28 +1998-11-30,1192.33,1192.72,1163.63,1163.63,687900000,1163.63 +1998-11-27,1186.87,1192.97,1186.83,1192.33,256950000,1192.33 +1998-11-25,1182.99,1187.16,1179.37,1186.87,583580000,1186.87 +1998-11-24,1188.21,1191.30,1181.81,1182.99,766200000,1182.99 +1998-11-23,1163.55,1188.21,1163.55,1188.21,774100000,1188.21 +1998-11-20,1152.61,1163.55,1152.61,1163.55,721200000,1163.55 +1998-11-19,1144.48,1155.10,1144.42,1152.61,671000000,1152.61 +1998-11-18,1139.32,1144.52,1133.07,1144.48,652510000,1144.48 +1998-11-17,1135.87,1151.71,1129.67,1139.32,705200000,1139.32 +1998-11-16,1125.72,1138.72,1125.72,1135.87,615580000,1135.87 +1998-11-13,1117.69,1126.34,1116.76,1125.72,602270000,1125.72 +1998-11-12,1120.97,1126.57,1115.55,1117.69,662300000,1117.69 +1998-11-11,1128.26,1136.25,1117.40,1120.97,715700000,1120.97 +1998-11-10,1130.20,1135.37,1122.80,1128.26,671300000,1128.26 +1998-11-09,1141.01,1141.01,1123.17,1130.20,592990000,1130.20 +1998-11-06,1133.85,1141.30,1131.18,1141.01,683100000,1141.01 +1998-11-05,1118.67,1133.88,1109.55,1133.85,770200000,1133.85 +1998-11-04,1110.84,1127.18,1110.59,1118.67,861100000,1118.67 +1998-11-03,1111.60,1115.02,1106.42,1110.84,704300000,1110.84 +1998-11-02,1098.67,1114.44,1098.67,1111.60,753800000,1111.60 +1998-10-30,1085.93,1103.78,1085.93,1098.67,785000000,1098.67 +1998-10-29,1068.09,1086.11,1065.95,1085.93,699400000,1085.93 +1998-10-28,1065.34,1072.79,1059.65,1068.09,677500000,1068.09 +1998-10-27,1072.32,1087.08,1063.06,1065.34,764500000,1065.34 +1998-10-26,1070.67,1081.23,1068.17,1072.32,609910000,1072.32 +1998-10-23,1078.48,1078.48,1067.43,1070.67,637640000,1070.67 +1998-10-22,1069.92,1080.43,1061.47,1078.48,754900000,1078.48 +1998-10-21,1063.93,1073.61,1058.08,1069.92,745100000,1069.92 +1998-10-20,1062.39,1084.06,1060.61,1063.93,958200000,1063.93 +1998-10-19,1056.42,1065.21,1054.23,1062.39,738600000,1062.39 +1998-10-16,1047.49,1062.65,1047.49,1056.42,1042200000,1056.42 +1998-10-15,1005.53,1053.09,1000.12,1047.49,937600000,1047.49 +1998-10-14,994.80,1014.42,987.80,1005.53,791200000,1005.53 +1998-10-13,997.71,1000.78,987.55,994.80,733300000,994.80 +1998-10-12,984.39,1010.71,984.39,997.71,691100000,997.71 +1998-10-09,959.44,984.42,953.04,984.39,878100000,984.39 +1998-10-08,970.68,970.68,923.32,959.44,1114600000,959.44 +1998-10-07,984.59,995.66,957.15,970.68,977000000,970.68 +1998-10-06,988.56,1008.77,974.81,984.59,845700000,984.59 +1998-10-05,1002.60,1002.60,964.72,988.56,817500000,988.56 +1998-10-02,986.39,1005.45,971.69,1002.60,902900000,1002.60 +1998-10-01,1017.01,1017.01,981.29,986.39,899700000,986.39 +1998-09-30,1049.02,1049.02,1015.73,1017.01,800100000,1017.01 +1998-09-29,1048.69,1056.31,1039.88,1049.02,760100000,1049.02 +1998-09-28,1044.75,1061.46,1042.23,1048.69,690500000,1048.69 +1998-09-25,1042.72,1051.89,1028.49,1044.75,736800000,1044.75 +1998-09-24,1066.09,1066.11,1033.04,1042.72,805900000,1042.72 +1998-09-23,1029.63,1066.09,1029.63,1066.09,899700000,1066.09 +1998-09-22,1023.89,1033.89,1021.96,1029.63,694900000,1029.63 +1998-09-21,1020.09,1026.02,993.82,1023.89,609880000,1023.89 +1998-09-18,1018.87,1022.01,1011.86,1020.09,794700000,1020.09 +1998-09-17,1045.48,1045.48,1016.05,1018.87,694500000,1018.87 +1998-09-16,1037.68,1046.07,1029.31,1045.48,797500000,1045.48 +1998-09-15,1029.72,1037.90,1021.42,1037.68,724600000,1037.68 +1998-09-14,1009.06,1038.38,1009.06,1029.72,714400000,1029.72 +1998-09-11,980.19,1009.06,969.71,1009.06,819100000,1009.06 +1998-09-10,1006.20,1006.20,968.64,980.19,880300000,980.19 +1998-09-09,1023.46,1027.72,1004.56,1006.20,704300000,1006.20 +1998-09-08,973.89,1023.46,973.89,1023.46,814800000,1023.46 +1998-09-04,982.26,991.41,956.51,973.89,780300000,973.89 +1998-09-03,990.47,990.47,969.32,982.26,880500000,982.26 +1998-09-02,994.26,1013.19,988.40,990.48,894600000,990.48 +1998-09-01,957.28,1000.71,939.98,994.26,1216600000,994.26 +1998-08-31,1027.14,1033.47,957.28,957.28,917500000,957.28 +1998-08-28,1042.59,1051.80,1021.04,1027.14,840300000,1027.14 +1998-08-27,1084.19,1084.19,1037.61,1042.59,938600000,1042.59 +1998-08-26,1092.85,1092.85,1075.91,1084.19,674100000,1084.19 +1998-08-25,1088.14,1106.64,1085.53,1092.85,664900000,1092.85 +1998-08-24,1081.24,1093.82,1081.24,1088.14,558100000,1088.14 +1998-08-21,1091.60,1091.60,1054.92,1081.24,725700000,1081.24 +1998-08-20,1098.06,1098.79,1089.55,1091.60,621630000,1091.60 +1998-08-19,1101.20,1106.32,1094.93,1098.06,633630000,1098.06 +1998-08-18,1083.67,1101.72,1083.67,1101.20,690600000,1101.20 +1998-08-17,1062.75,1083.67,1055.08,1083.67,584380000,1083.67 +1998-08-14,1074.91,1083.92,1057.22,1062.75,644030000,1062.75 +1998-08-13,1084.22,1091.50,1074.91,1074.91,660700000,1074.91 +1998-08-12,1068.98,1084.70,1068.98,1084.22,711700000,1084.22 +1998-08-11,1083.14,1083.14,1054.00,1068.98,774400000,1068.98 +1998-08-10,1089.45,1092.82,1081.76,1083.14,579180000,1083.14 +1998-08-07,1089.63,1102.54,1084.72,1089.45,759100000,1089.45 +1998-08-06,1081.43,1090.95,1074.94,1089.63,768400000,1089.63 +1998-08-05,1072.12,1084.80,1057.35,1081.43,851600000,1081.43 +1998-08-04,1112.44,1119.73,1071.82,1072.12,852600000,1072.12 +1998-08-03,1120.67,1121.79,1110.39,1112.44,620400000,1112.44 +1998-07-31,1142.95,1142.97,1114.30,1120.67,645910000,1120.67 +1998-07-30,1125.21,1143.07,1125.21,1142.95,687400000,1142.95 +1998-07-29,1130.24,1138.56,1121.98,1125.21,644350000,1125.21 +1998-07-28,1147.27,1147.27,1119.44,1130.24,703600000,1130.24 +1998-07-27,1140.80,1147.27,1128.19,1147.27,619990000,1147.27 +1998-07-24,1139.75,1150.14,1129.11,1140.80,698600000,1140.80 +1998-07-23,1164.08,1164.35,1139.75,1139.75,741600000,1139.75 +1998-07-22,1165.07,1167.67,1155.20,1164.08,739800000,1164.08 +1998-07-21,1184.10,1187.37,1163.05,1165.07,659700000,1165.07 +1998-07-20,1186.75,1190.58,1179.19,1184.10,560580000,1184.10 +1998-07-17,1183.99,1188.10,1182.42,1186.75,618030000,1186.75 +1998-07-16,1174.81,1184.02,1170.40,1183.99,677800000,1183.99 +1998-07-15,1177.58,1181.48,1174.73,1174.81,723900000,1174.81 +1998-07-14,1165.19,1179.76,1165.19,1177.58,700300000,1177.58 +1998-07-13,1164.33,1166.98,1160.21,1165.19,574880000,1165.19 +1998-07-10,1158.57,1166.93,1150.88,1164.33,576080000,1164.33 +1998-07-09,1166.38,1166.38,1156.03,1158.56,663600000,1158.56 +1998-07-08,1154.66,1166.89,1154.66,1166.38,607230000,1166.38 +1998-07-07,1157.33,1159.81,1152.85,1154.66,624890000,1154.66 +1998-07-06,1146.42,1157.33,1145.03,1157.33,514750000,1157.33 +1998-07-02,1148.56,1148.56,1142.99,1146.42,510210000,1146.42 +1998-07-01,1133.84,1148.56,1133.84,1148.56,701600000,1148.56 +1998-06-30,1138.49,1140.80,1131.98,1133.84,757200000,1133.84 +1998-06-29,1133.20,1145.15,1133.20,1138.49,564350000,1138.49 +1998-06-26,1129.28,1136.83,1129.28,1133.20,520050000,1133.20 +1998-06-25,1132.88,1142.04,1127.60,1129.28,669900000,1129.28 +1998-06-24,1119.49,1134.40,1115.10,1132.88,714900000,1132.88 +1998-06-23,1103.21,1119.49,1103.21,1119.49,657100000,1119.49 +1998-06-22,1100.65,1109.01,1099.42,1103.21,531550000,1103.21 +1998-06-19,1106.37,1111.25,1097.10,1100.65,715500000,1100.65 +1998-06-18,1107.11,1109.36,1103.71,1106.37,590440000,1106.37 +1998-06-17,1087.59,1112.87,1087.58,1107.11,744400000,1107.11 +1998-06-16,1077.01,1087.59,1074.67,1087.59,664600000,1087.59 +1998-06-15,1098.84,1098.84,1077.01,1077.01,595820000,1077.01 +1998-06-12,1094.58,1098.84,1080.83,1098.84,633300000,1098.84 +1998-06-11,1112.28,1114.20,1094.28,1094.58,627470000,1094.58 +1998-06-10,1118.41,1126.00,1110.27,1112.28,609410000,1112.28 +1998-06-09,1115.72,1119.92,1111.31,1118.41,563610000,1118.41 +1998-06-08,1113.86,1119.70,1113.31,1115.72,543390000,1115.72 +1998-06-05,1095.10,1113.88,1094.83,1113.86,558440000,1113.86 +1998-06-04,1082.73,1095.93,1078.10,1094.83,577470000,1094.83 +1998-06-03,1093.22,1097.43,1081.09,1082.73,584480000,1082.73 +1998-06-02,1090.98,1098.71,1089.67,1093.22,590930000,1093.22 +1998-06-01,1090.82,1097.85,1084.22,1090.98,537660000,1090.98 +1998-05-29,1097.60,1104.16,1090.82,1090.82,556780000,1090.82 +1998-05-28,1092.23,1099.73,1089.06,1097.60,588900000,1097.60 +1998-05-27,1094.02,1094.44,1074.39,1092.23,682040000,1092.23 +1998-05-26,1110.47,1116.79,1094.01,1094.02,541410000,1094.02 +1998-05-22,1114.64,1116.89,1107.99,1110.47,444070000,1110.47 +1998-05-21,1119.06,1124.45,1111.94,1114.64,551970000,1114.64 +1998-05-20,1109.52,1119.08,1107.51,1119.06,587240000,1119.06 +1998-05-19,1105.82,1113.50,1105.82,1109.52,566020000,1109.52 +1998-05-18,1108.73,1112.44,1097.99,1105.82,519100000,1105.82 +1998-05-15,1117.37,1118.66,1107.11,1108.73,621990000,1108.73 +1998-05-14,1118.86,1124.03,1112.43,1117.37,578380000,1117.37 +1998-05-13,1115.79,1122.22,1114.93,1118.86,600010000,1118.86 +1998-05-12,1106.64,1115.96,1102.78,1115.79,604420000,1115.79 +1998-05-11,1108.14,1119.13,1103.72,1106.64,560840000,1106.64 +1998-05-08,1095.14,1111.42,1094.53,1108.14,567890000,1108.14 +1998-05-07,1104.92,1105.58,1094.59,1095.14,582240000,1095.14 +1998-05-06,1115.50,1118.39,1104.64,1104.92,606540000,1104.92 +1998-05-05,1122.07,1122.07,1111.16,1115.50,583630000,1115.50 +1998-05-04,1121.00,1130.52,1121.00,1122.07,551700000,1122.07 +1998-05-01,1111.75,1121.02,1111.75,1121.00,581970000,1121.00 +1998-04-30,1094.63,1116.97,1094.63,1111.75,695600000,1111.75 +1998-04-29,1085.11,1098.24,1084.65,1094.62,638790000,1094.62 +1998-04-28,1086.54,1095.94,1081.49,1085.11,678600000,1085.11 +1998-04-27,1107.90,1107.90,1076.70,1086.54,685960000,1086.54 +1998-04-24,1119.58,1122.81,1104.77,1107.90,633890000,1107.90 +1998-04-23,1130.54,1130.54,1117.49,1119.58,653190000,1119.58 +1998-04-22,1126.67,1132.98,1126.29,1130.54,696740000,1130.54 +1998-04-21,1123.65,1129.65,1119.54,1126.67,675640000,1126.67 +1998-04-20,1122.72,1124.88,1118.43,1123.65,595190000,1123.65 +1998-04-17,1108.17,1122.72,1104.95,1122.72,672290000,1122.72 +1998-04-16,1119.32,1119.32,1105.27,1108.17,699570000,1108.17 +1998-04-15,1115.75,1119.90,1112.24,1119.32,685020000,1119.32 +1998-04-14,1109.69,1115.95,1109.48,1115.75,613730000,1115.75 +1998-04-13,1110.67,1110.75,1100.60,1109.69,564480000,1109.69 +1998-04-09,1101.65,1111.45,1101.65,1110.67,548940000,1110.67 +1998-04-08,1109.55,1111.60,1098.21,1101.65,616330000,1101.65 +1998-04-07,1121.38,1121.38,1102.44,1109.55,670760000,1109.55 +1998-04-06,1122.70,1131.99,1121.37,1121.38,625810000,1121.38 +1998-04-03,1120.01,1126.36,1118.12,1122.70,653880000,1122.70 +1998-04-02,1108.15,1121.01,1107.89,1120.01,674340000,1120.01 +1998-04-01,1101.75,1109.19,1095.29,1108.15,677310000,1108.15 +1998-03-31,1093.55,1110.13,1093.55,1101.75,674930000,1101.75 +1998-03-30,1095.44,1099.10,1090.02,1093.60,497400000,1093.60 +1998-03-27,1100.80,1107.18,1091.14,1095.44,582190000,1095.44 +1998-03-26,1101.93,1106.28,1097.00,1100.80,606770000,1100.80 +1998-03-25,1105.65,1113.07,1092.84,1101.93,676550000,1101.93 +1998-03-24,1095.55,1106.75,1095.55,1105.65,605720000,1105.65 +1998-03-23,1099.16,1101.16,1094.25,1095.55,631350000,1095.55 +1998-03-20,1089.74,1101.04,1089.39,1099.16,717310000,1099.16 +1998-03-19,1085.52,1089.74,1084.30,1089.74,598240000,1089.74 +1998-03-18,1080.45,1085.52,1077.77,1085.52,632690000,1085.52 +1998-03-17,1079.27,1080.52,1073.29,1080.45,680960000,1080.45 +1998-03-16,1068.61,1079.46,1068.61,1079.27,548980000,1079.27 +1998-03-13,1069.92,1075.86,1066.57,1068.61,597800000,1068.61 +1998-03-12,1068.47,1071.87,1063.54,1069.92,594940000,1069.92 +1998-03-11,1064.25,1069.18,1064.22,1068.47,655260000,1068.47 +1998-03-10,1052.31,1064.59,1052.31,1064.25,631920000,1064.25 +1998-03-09,1055.69,1058.55,1050.02,1052.31,624700000,1052.31 +1998-03-06,1035.05,1055.69,1035.05,1055.69,665500000,1055.69 +1998-03-05,1047.33,1047.33,1030.87,1035.05,648270000,1035.05 +1998-03-04,1052.02,1052.02,1042.74,1047.33,644280000,1047.33 +1998-03-03,1047.70,1052.02,1043.41,1052.02,612360000,1052.02 +1998-03-02,1049.34,1053.98,1044.70,1047.70,591470000,1047.70 +1998-02-27,1048.67,1051.66,1044.40,1049.34,574480000,1049.34 +1998-02-26,1042.90,1048.68,1039.85,1048.67,646280000,1048.67 +1998-02-25,1030.56,1045.79,1030.56,1042.90,611350000,1042.90 +1998-02-24,1038.14,1038.73,1028.89,1030.56,589880000,1030.56 +1998-02-23,1034.21,1038.68,1031.76,1038.14,550730000,1038.14 +1998-02-20,1028.28,1034.21,1022.69,1034.21,594300000,1034.21 +1998-02-19,1032.08,1032.93,1026.62,1028.28,581820000,1028.28 +1998-02-18,1022.76,1032.08,1021.70,1032.08,606000000,1032.08 +1998-02-17,1020.09,1028.02,1020.09,1022.76,605890000,1022.76 +1998-02-13,1024.14,1024.14,1017.71,1020.09,531940000,1020.09 +1998-02-12,1020.01,1026.30,1008.55,1024.14,611480000,1024.14 +1998-02-11,1019.01,1020.71,1016.38,1020.01,599300000,1020.01 +1998-02-10,1010.74,1022.15,1010.71,1019.01,642800000,1019.01 +1998-02-09,1012.46,1015.33,1006.28,1010.74,524810000,1010.74 +1998-02-06,1003.54,1013.07,1003.36,1012.46,569650000,1012.46 +1998-02-05,1006.90,1013.51,1000.27,1003.54,703980000,1003.54 +1998-02-04,1006.00,1009.52,999.43,1006.90,695420000,1006.90 +1998-02-03,1001.27,1006.13,996.90,1006.00,692120000,1006.00 +1998-02-02,980.28,1002.48,980.28,1001.27,724320000,1001.27 +1998-01-30,985.49,987.41,979.63,980.28,613380000,980.28 +1998-01-29,977.46,992.65,975.21,985.49,750760000,985.49 +1998-01-28,969.02,978.63,969.02,977.46,708470000,977.46 +1998-01-27,956.95,973.23,956.26,969.02,679140000,969.02 +1998-01-26,957.59,963.04,954.24,956.95,555080000,956.95 +1998-01-23,963.04,966.44,950.86,957.59,635770000,957.59 +1998-01-22,970.81,970.81,959.49,963.04,646570000,963.04 +1998-01-21,978.60,978.60,963.29,970.81,626160000,970.81 +1998-01-20,961.51,978.60,961.48,978.60,644790000,978.60 +1998-01-16,950.73,965.12,950.73,961.51,670080000,961.51 +1998-01-15,957.94,957.94,950.27,950.73,569050000,950.73 +1998-01-14,952.12,958.12,948.00,957.94,603280000,957.94 +1998-01-13,939.21,952.14,939.21,952.12,646740000,952.12 +1998-01-12,927.69,939.25,912.83,939.21,705450000,939.21 +1998-01-09,956.05,956.05,921.72,927.69,746420000,927.69 +1998-01-08,964.00,964.00,955.04,956.05,652140000,956.05 +1998-01-07,966.58,966.58,952.67,964.00,667390000,964.00 +1998-01-06,977.07,977.07,962.68,966.58,618360000,966.58 +1998-01-05,975.04,982.63,969.00,977.07,628070000,977.07 +1998-01-02,970.43,975.04,965.73,975.04,366730000,975.04 +1997-12-31,970.84,975.02,967.41,970.43,467280000,970.43 +1997-12-30,953.35,970.84,953.35,970.84,499500000,970.84 +1997-12-29,936.46,953.95,936.46,953.35,443160000,953.35 +1997-12-26,932.70,939.99,932.70,936.46,154900000,936.46 +1997-12-24,939.13,942.88,932.70,932.70,265980000,932.70 +1997-12-23,953.70,954.51,938.91,939.13,515070000,939.13 +1997-12-22,946.78,956.73,946.25,953.70,530670000,953.70 +1997-12-19,955.30,955.30,924.92,946.78,793200000,946.78 +1997-12-18,965.54,965.54,950.55,955.30,618870000,955.30 +1997-12-17,968.04,974.30,964.25,965.54,618900000,965.54 +1997-12-16,963.39,973.00,963.39,968.04,623320000,968.04 +1997-12-15,953.39,965.96,953.39,963.39,597150000,963.39 +1997-12-12,954.94,961.32,947.00,953.39,579280000,953.39 +1997-12-11,969.79,969.79,951.89,954.94,631770000,954.94 +1997-12-10,975.78,975.78,962.68,969.79,602290000,969.79 +1997-12-09,982.37,982.37,973.81,975.78,539130000,975.78 +1997-12-08,983.79,985.67,979.57,982.37,490320000,982.37 +1997-12-05,973.10,986.25,969.10,983.79,563590000,983.79 +1997-12-04,976.77,983.36,971.37,973.10,633470000,973.10 +1997-12-03,971.68,980.81,966.16,976.77,624610000,976.77 +1997-12-02,974.78,976.20,969.83,971.68,576120000,971.68 +1997-12-01,955.40,974.77,955.40,974.77,590300000,974.77 +1997-11-28,951.64,959.13,951.64,955.40,189070000,955.40 +1997-11-26,950.82,956.47,950.82,951.64,487750000,951.64 +1997-11-25,946.67,954.47,944.71,950.82,587890000,950.82 +1997-11-24,963.09,963.09,945.22,946.67,514920000,946.67 +1997-11-21,958.98,964.55,954.60,963.09,611000000,963.09 +1997-11-20,944.59,961.83,944.59,958.98,602610000,958.98 +1997-11-19,938.23,947.28,934.83,944.59,542720000,944.59 +1997-11-18,946.20,947.65,937.43,938.23,521380000,938.23 +1997-11-17,928.35,949.66,928.35,946.20,576540000,946.20 +1997-11-14,916.66,930.44,915.34,928.35,635760000,928.35 +1997-11-13,905.96,917.79,900.61,916.66,653960000,916.66 +1997-11-12,923.78,923.88,905.34,905.96,585340000,905.96 +1997-11-11,921.13,928.29,919.63,923.78,435660000,923.78 +1997-11-10,927.51,935.90,920.26,921.13,464140000,921.13 +1997-11-07,938.03,938.03,915.39,927.51,569980000,927.51 +1997-11-06,942.76,942.85,934.16,938.03,522890000,938.03 +1997-11-05,940.76,949.62,938.16,942.76,565680000,942.76 +1997-11-04,938.99,941.40,932.66,940.76,541590000,940.76 +1997-11-03,914.62,939.02,914.62,938.99,564740000,938.99 +1997-10-31,903.68,919.93,903.68,914.62,638070000,914.62 +1997-10-30,919.16,923.28,903.68,903.68,712230000,903.68 +1997-10-29,921.85,935.24,913.88,919.16,777660000,919.16 +1997-10-28,876.99,923.09,855.27,921.85,1202550000,921.85 +1997-10-27,941.64,941.64,876.73,876.99,693730000,876.99 +1997-10-24,950.69,960.04,937.55,941.64,677630000,941.64 +1997-10-23,968.49,968.49,944.16,950.69,673270000,950.69 +1997-10-22,972.28,972.61,965.66,968.49,613490000,968.49 +1997-10-21,955.61,972.56,955.61,972.28,582310000,972.28 +1997-10-20,944.16,955.72,941.43,955.61,483880000,955.61 +1997-10-17,955.23,955.23,931.58,944.16,624980000,944.16 +1997-10-16,965.72,973.38,950.77,955.25,597010000,955.25 +1997-10-15,970.28,970.28,962.75,965.72,505310000,965.72 +1997-10-14,968.10,972.86,961.87,970.28,510330000,970.28 +1997-10-13,966.98,973.46,966.95,968.10,354800000,968.10 +1997-10-10,970.62,970.62,963.42,966.98,500680000,966.98 +1997-10-09,973.84,974.72,963.34,970.62,551840000,970.62 +1997-10-08,983.12,983.12,968.65,973.84,573110000,973.84 +1997-10-07,972.69,983.12,971.95,983.12,551970000,983.12 +1997-10-06,965.03,974.16,965.03,972.69,495620000,972.69 +1997-10-03,960.46,975.47,955.13,965.03,623370000,965.03 +1997-10-02,955.41,960.46,952.94,960.46,474760000,960.46 +1997-10-01,947.28,956.71,947.28,955.41,598660000,955.41 +1997-09-30,953.34,955.17,947.28,947.28,587500000,947.28 +1997-09-29,945.22,953.96,941.94,953.34,477100000,953.34 +1997-09-26,937.91,946.44,937.91,945.22,505340000,945.22 +1997-09-25,944.48,947.00,937.38,937.91,524880000,937.91 +1997-09-24,951.93,959.78,944.07,944.48,639460000,944.48 +1997-09-23,955.43,955.78,948.07,951.93,522930000,951.93 +1997-09-22,950.51,960.59,950.51,955.43,490900000,955.43 +1997-09-19,947.29,952.35,943.90,950.51,631040000,950.51 +1997-09-18,943.00,958.19,943.00,947.29,566830000,947.29 +1997-09-17,945.64,950.29,941.99,943.00,590550000,943.00 +1997-09-16,919.77,947.66,919.77,945.64,636380000,945.64 +1997-09-15,923.91,928.90,919.41,919.77,468030000,919.77 +1997-09-12,912.59,925.05,906.70,923.91,544150000,923.91 +1997-09-11,919.03,919.03,902.56,912.59,575020000,912.59 +1997-09-10,933.62,933.62,918.76,919.03,517620000,919.03 +1997-09-09,931.20,938.90,927.28,933.62,502200000,933.62 +1997-09-08,929.05,936.50,929.05,931.20,466430000,931.20 +1997-09-05,930.87,940.37,924.05,929.05,536400000,929.05 +1997-09-04,927.86,933.36,925.59,930.87,559310000,930.87 +1997-09-03,927.58,935.90,926.87,927.86,549060000,927.86 +1997-09-02,899.47,927.58,899.47,927.58,491870000,927.58 +1997-08-29,903.67,907.28,896.82,899.47,413910000,899.47 +1997-08-28,913.70,915.90,898.65,903.67,486300000,903.67 +1997-08-27,913.02,916.23,903.83,913.70,492150000,913.70 +1997-08-26,920.16,922.47,911.72,913.02,449110000,913.02 +1997-08-25,923.55,930.93,917.29,920.16,388990000,920.16 +1997-08-22,925.05,925.05,905.42,923.54,460160000,923.54 +1997-08-21,939.35,939.47,921.35,925.05,499000000,925.05 +1997-08-20,926.01,939.35,924.58,939.35,521270000,939.35 +1997-08-19,912.49,926.01,912.49,926.01,545630000,926.01 +1997-08-18,900.81,912.57,893.34,912.49,514330000,912.49 +1997-08-15,924.77,924.77,900.81,900.81,537820000,900.81 +1997-08-14,922.02,930.07,916.92,924.77,530460000,924.77 +1997-08-13,926.53,935.77,916.54,922.02,587210000,922.02 +1997-08-12,937.00,942.99,925.66,926.53,499310000,926.53 +1997-08-11,933.54,938.50,925.39,937.00,480340000,937.00 +1997-08-08,951.19,951.19,925.74,933.54,563420000,933.54 +1997-08-07,960.32,964.17,950.87,951.19,576030000,951.19 +1997-08-06,952.37,962.43,949.45,960.32,565200000,960.32 +1997-08-05,950.30,954.21,948.92,952.37,525710000,952.37 +1997-08-04,947.14,953.18,943.60,950.30,456000000,950.30 +1997-08-01,954.29,955.35,939.04,947.14,513750000,947.14 +1997-07-31,952.29,957.73,948.89,954.31,547830000,954.31 +1997-07-30,942.29,953.98,941.98,952.29,568470000,952.29 +1997-07-29,936.45,942.96,932.56,942.29,544540000,942.29 +1997-07-28,938.79,942.97,935.19,936.45,466920000,936.45 +1997-07-25,940.30,945.65,936.09,938.79,521510000,938.79 +1997-07-24,936.56,941.51,926.91,940.30,571020000,940.30 +1997-07-23,933.98,941.80,933.98,936.56,616930000,936.56 +1997-07-22,912.94,934.38,912.94,933.98,579590000,933.98 +1997-07-21,915.30,915.38,907.12,912.94,459500000,912.94 +1997-07-18,931.61,931.61,912.90,915.30,589710000,915.30 +1997-07-17,936.59,936.96,927.90,931.61,629250000,931.61 +1997-07-16,925.76,939.32,925.76,936.59,647390000,936.59 +1997-07-15,918.38,926.15,914.52,925.76,598370000,925.76 +1997-07-14,916.68,921.78,912.02,918.38,485960000,918.38 +1997-07-11,913.78,919.74,913.11,916.68,500050000,916.68 +1997-07-10,907.54,916.54,904.31,913.78,551340000,913.78 +1997-07-09,918.75,922.03,902.48,907.54,589110000,907.54 +1997-07-08,912.20,918.76,911.56,918.75,526010000,918.75 +1997-07-07,916.92,923.26,909.69,912.20,518780000,912.20 +1997-07-03,904.03,917.82,904.03,916.92,374680000,916.92 +1997-07-02,891.03,904.05,891.03,904.03,526970000,904.03 +1997-07-01,885.14,893.88,884.54,891.03,544190000,891.03 +1997-06-30,887.30,892.62,879.82,885.14,561540000,885.14 +1997-06-27,883.68,894.70,883.68,887.30,472540000,887.30 +1997-06-26,888.99,893.21,879.32,883.68,499780000,883.68 +1997-06-25,896.34,902.09,882.24,888.99,603040000,888.99 +1997-06-24,878.62,896.75,878.62,896.34,542650000,896.34 +1997-06-23,898.70,898.70,878.43,878.62,492940000,878.62 +1997-06-20,897.99,901.77,897.77,898.70,653110000,898.70 +1997-06-19,889.06,900.09,888.99,897.99,536940000,897.99 +1997-06-18,894.42,894.42,887.03,889.06,491740000,889.06 +1997-06-17,893.90,897.60,886.19,894.42,543010000,894.42 +1997-06-16,893.27,895.17,891.21,893.90,414280000,893.90 +1997-06-13,883.48,894.69,883.48,893.27,575810000,893.27 +1997-06-12,869.57,884.34,869.01,883.46,592730000,883.46 +1997-06-11,865.27,870.66,865.15,869.57,513740000,869.57 +1997-06-10,862.91,870.05,862.18,865.27,526980000,865.27 +1997-06-09,858.01,865.14,858.01,862.91,465810000,862.91 +1997-06-06,843.43,859.24,843.36,858.01,488940000,858.01 +1997-06-05,840.11,848.89,840.11,843.43,452610000,843.43 +1997-06-04,845.48,845.55,838.82,840.11,466690000,840.11 +1997-06-03,846.36,850.56,841.51,845.48,527120000,845.48 +1997-06-02,848.28,851.34,844.61,846.36,435950000,846.36 +1997-05-30,844.08,851.87,831.87,848.28,537200000,848.28 +1997-05-29,847.21,848.96,842.61,844.08,462600000,844.08 +1997-05-28,849.71,850.95,843.21,847.21,487340000,847.21 +1997-05-27,847.03,851.53,840.96,849.71,436150000,849.71 +1997-05-23,835.66,848.49,835.66,847.03,417030000,847.03 +1997-05-22,839.35,841.91,833.86,835.66,426940000,835.66 +1997-05-21,841.66,846.87,835.22,839.35,540730000,839.35 +1997-05-20,833.27,841.96,826.41,841.66,450850000,841.66 +1997-05-19,829.75,835.92,828.87,833.27,345140000,833.27 +1997-05-16,841.88,841.88,829.15,829.75,486780000,829.75 +1997-05-15,836.04,842.45,833.34,841.88,458170000,841.88 +1997-05-14,833.13,841.29,833.13,836.04,504960000,836.04 +1997-05-13,837.66,838.49,829.12,833.13,489760000,833.13 +1997-05-12,824.78,838.56,824.78,837.66,459370000,837.66 +1997-05-09,820.26,827.69,815.78,824.78,455690000,824.78 +1997-05-08,815.62,829.09,811.84,820.26,534120000,820.26 +1997-05-07,827.76,827.76,814.70,815.62,500580000,815.62 +1997-05-06,830.24,832.29,824.70,827.76,603680000,827.76 +1997-05-05,812.97,830.29,811.80,830.29,549410000,830.29 +1997-05-02,798.53,812.99,798.53,812.97,499770000,812.97 +1997-05-01,801.34,802.95,793.21,798.53,460380000,798.53 +1997-04-30,794.05,804.13,791.21,801.34,556070000,801.34 +1997-04-29,772.96,794.44,772.96,794.05,547690000,794.05 +1997-04-28,765.37,773.89,763.30,772.96,404470000,772.96 +1997-04-25,771.18,771.18,764.63,765.37,414350000,765.37 +1997-04-24,773.64,779.89,769.72,771.18,493640000,771.18 +1997-04-23,774.61,778.19,771.90,773.64,489350000,773.64 +1997-04-22,760.37,774.64,759.90,774.61,507500000,774.61 +1997-04-21,766.34,767.39,756.38,760.37,397300000,760.37 +1997-04-18,761.77,767.93,761.77,766.34,468940000,766.34 +1997-04-17,763.53,768.55,760.49,761.77,503760000,761.77 +1997-04-16,754.72,763.53,751.99,763.53,498820000,763.53 +1997-04-15,743.73,754.72,743.73,754.72,507370000,754.72 +1997-04-14,737.65,743.73,733.54,743.73,406800000,743.73 +1997-04-11,758.34,758.34,737.64,737.65,444380000,737.65 +1997-04-10,760.60,763.73,757.65,758.34,421790000,758.34 +1997-04-09,766.12,769.53,759.15,760.60,451500000,760.60 +1997-04-08,762.13,766.25,758.36,766.12,450790000,766.12 +1997-04-07,757.90,764.82,757.90,762.13,453790000,762.13 +1997-04-04,750.32,757.90,744.04,757.90,544580000,757.90 +1997-04-03,750.11,751.04,744.40,750.32,498010000,750.32 +1997-04-02,759.64,759.65,747.59,750.11,478210000,750.11 +1997-04-01,757.12,761.49,751.26,759.64,515770000,759.64 +1997-03-31,773.88,773.88,756.13,757.12,555880000,757.12 +1997-03-27,790.50,792.58,767.32,773.88,476790000,773.88 +1997-03-26,789.07,794.89,786.77,790.50,506670000,790.50 +1997-03-25,790.89,798.11,788.39,789.07,487520000,789.07 +1997-03-24,784.10,791.01,780.79,790.89,451970000,790.89 +1997-03-21,782.65,786.44,782.65,784.10,638760000,784.10 +1997-03-20,785.77,786.29,778.04,782.65,497480000,782.65 +1997-03-19,789.66,791.59,780.03,785.77,535580000,785.77 +1997-03-18,795.71,797.18,785.47,789.66,467330000,789.66 +1997-03-17,793.17,796.28,782.98,795.71,495260000,795.71 +1997-03-14,789.56,796.88,789.56,793.17,491540000,793.17 +1997-03-13,804.26,804.26,789.44,789.56,507560000,789.56 +1997-03-12,811.34,811.34,801.07,804.26,490200000,804.26 +1997-03-11,813.65,814.90,810.77,811.34,493250000,811.34 +1997-03-10,804.97,813.66,803.66,813.65,468780000,813.65 +1997-03-07,798.56,808.19,798.56,804.97,508270000,804.97 +1997-03-06,801.99,804.11,797.50,798.56,540310000,798.56 +1997-03-05,790.95,801.99,790.95,801.99,532500000,801.99 +1997-03-04,795.31,798.93,789.98,790.95,537890000,790.95 +1997-03-03,790.82,795.31,785.66,795.31,437220000,795.31 +1997-02-28,795.07,795.70,788.50,790.82,508280000,790.82 +1997-02-27,805.68,805.68,795.06,795.07,464660000,795.07 +1997-02-26,812.10,812.70,798.13,805.68,573920000,805.68 +1997-02-25,810.28,812.85,807.65,812.03,527450000,812.03 +1997-02-24,801.77,810.64,798.42,810.28,462450000,810.28 +1997-02-21,802.80,804.94,799.99,801.77,478450000,801.77 +1997-02-20,812.49,812.49,800.35,802.80,492220000,802.80 +1997-02-19,816.29,817.68,811.20,812.49,519350000,812.49 +1997-02-18,808.48,816.29,806.34,816.29,474110000,816.29 +1997-02-14,811.82,812.20,808.15,808.48,491540000,808.48 +1997-02-13,802.77,812.93,802.77,811.82,593710000,811.82 +1997-02-12,789.59,802.77,789.59,802.77,563890000,802.77 +1997-02-11,785.43,789.60,780.95,789.59,483090000,789.59 +1997-02-10,789.56,793.46,784.69,785.43,471590000,785.43 +1997-02-07,780.15,789.72,778.19,789.56,540910000,789.56 +1997-02-06,778.28,780.35,774.45,780.15,519660000,780.15 +1997-02-05,789.26,792.71,773.43,778.28,580520000,778.28 +1997-02-04,786.73,789.28,783.68,789.26,506530000,789.26 +1997-02-03,786.16,787.14,783.12,786.73,463600000,786.73 +1997-01-31,784.17,791.86,784.17,786.16,578550000,786.16 +1997-01-30,772.50,784.17,772.50,784.17,524160000,784.17 +1997-01-29,765.02,772.70,765.02,772.50,498390000,772.50 +1997-01-28,765.02,776.32,761.75,765.02,541580000,765.02 +1997-01-27,770.52,771.43,764.18,765.02,445760000,765.02 +1997-01-24,777.56,778.21,768.17,770.52,542920000,770.52 +1997-01-23,786.23,794.67,776.64,777.56,685070000,777.56 +1997-01-22,782.72,786.23,779.56,786.23,589230000,786.23 +1997-01-21,776.70,783.72,772.00,782.72,571280000,782.72 +1997-01-20,776.17,780.08,774.19,776.70,440470000,776.70 +1997-01-17,769.75,776.37,769.72,776.17,534640000,776.17 +1997-01-16,767.20,772.05,765.25,769.75,537290000,769.75 +1997-01-15,768.86,770.95,763.72,767.20,524990000,767.20 +1997-01-14,759.51,772.04,759.51,768.86,531600000,768.86 +1997-01-13,759.50,762.85,756.69,759.51,445400000,759.51 +1997-01-10,754.85,759.65,746.92,759.50,545850000,759.50 +1997-01-09,748.41,757.68,748.41,754.85,555370000,754.85 +1997-01-08,753.23,755.72,747.71,748.41,557510000,748.41 +1997-01-07,747.65,753.26,742.18,753.23,538220000,753.23 +1997-01-06,748.03,753.31,743.82,747.65,531350000,747.65 +1997-01-03,737.01,748.24,737.01,748.03,452970000,748.03 +1997-01-02,740.74,742.81,729.55,737.01,463230000,737.01 +1996-12-31,753.85,753.95,740.74,740.74,399760000,740.74 +1996-12-30,756.79,759.20,752.73,753.85,339060000,753.85 +1996-12-27,755.82,758.75,754.82,756.79,253810000,756.79 +1996-12-26,751.03,757.07,751.02,755.82,254630000,755.82 +1996-12-24,746.92,751.03,746.92,751.03,165140000,751.03 +1996-12-23,748.87,750.40,743.28,746.92,343280000,746.92 +1996-12-20,745.76,755.41,745.76,748.87,654340000,748.87 +1996-12-19,731.54,746.06,731.54,745.76,526410000,745.76 +1996-12-18,726.04,732.76,726.04,731.54,500490000,731.54 +1996-12-17,720.98,727.67,716.69,726.04,519840000,726.04 +1996-12-16,728.64,732.68,719.40,720.98,447560000,720.98 +1996-12-13,729.33,731.40,721.97,728.64,458540000,728.64 +1996-12-12,740.73,744.86,729.30,729.30,492920000,729.30 +1996-12-11,747.54,747.54,732.75,740.73,494210000,740.73 +1996-12-10,749.76,753.43,747.02,747.54,446120000,747.54 +1996-12-09,739.60,749.76,739.60,749.76,381570000,749.76 +1996-12-06,744.38,744.38,726.89,739.60,500860000,739.60 +1996-12-05,745.10,747.65,742.61,744.38,483710000,744.38 +1996-12-04,748.28,748.40,738.46,745.10,498240000,745.10 +1996-12-03,756.56,761.75,747.58,748.28,516160000,748.28 +1996-12-02,757.02,757.03,751.49,756.56,412520000,756.56 +1996-11-29,755.00,758.27,755.00,757.02,14990000,757.02 +1996-11-27,755.96,757.30,753.18,755.00,377780000,755.00 +1996-11-26,757.03,762.12,752.83,755.96,527380000,755.96 +1996-11-25,748.73,757.05,747.99,757.03,475260000,757.03 +1996-11-22,742.75,748.73,742.75,748.73,525210000,748.73 +1996-11-21,743.95,745.20,741.08,742.75,464430000,742.75 +1996-11-20,742.16,746.99,740.40,743.95,497900000,743.95 +1996-11-19,737.02,742.18,736.87,742.16,461980000,742.16 +1996-11-18,737.62,739.24,734.39,737.02,388520000,737.02 +1996-11-15,735.88,741.92,735.15,737.62,529100000,737.62 +1996-11-14,731.13,735.99,729.20,735.88,480350000,735.88 +1996-11-13,729.56,732.11,728.03,731.13,429840000,731.13 +1996-11-12,731.87,733.04,728.20,729.56,471740000,729.56 +1996-11-11,730.82,732.60,729.94,731.87,353960000,731.87 +1996-11-08,727.65,730.82,725.22,730.82,402320000,730.82 +1996-11-07,724.59,729.49,722.23,727.65,502530000,727.65 +1996-11-06,714.14,724.60,712.83,724.59,509600000,724.59 +1996-11-05,706.73,714.56,706.73,714.14,486660000,714.14 +1996-11-04,703.77,707.02,702.84,706.73,398790000,706.73 +1996-11-01,705.27,708.60,701.30,703.77,465510000,703.77 +1996-10-31,700.90,706.61,700.35,705.27,482840000,705.27 +1996-10-30,701.50,703.44,700.05,700.90,437770000,700.90 +1996-10-29,697.26,703.25,696.22,701.50,443890000,701.50 +1996-10-28,700.92,705.40,697.25,697.26,383620000,697.26 +1996-10-25,702.29,704.11,700.53,700.92,367640000,700.92 +1996-10-24,707.27,708.25,702.11,702.29,418970000,702.29 +1996-10-23,706.57,707.31,700.98,707.27,442170000,707.27 +1996-10-22,709.85,709.85,704.55,706.57,410790000,706.57 +1996-10-21,710.82,714.10,707.71,709.85,414630000,709.85 +1996-10-18,706.99,711.04,706.11,710.82,473020000,710.82 +1996-10-17,705.00,708.52,704.76,706.99,478550000,706.99 +1996-10-16,702.57,704.42,699.15,704.41,441410000,704.41 +1996-10-15,703.54,708.07,699.07,702.57,458980000,702.57 +1996-10-14,700.66,705.16,700.66,703.54,322000000,703.54 +1996-10-11,694.61,700.67,694.61,700.66,396050000,700.66 +1996-10-10,696.74,696.82,693.34,694.61,394950000,694.61 +1996-10-09,700.64,702.36,694.42,696.74,408450000,696.74 +1996-10-08,703.34,705.76,699.88,700.64,435070000,700.64 +1996-10-07,701.46,704.17,701.39,703.34,380750000,703.34 +1996-10-04,692.78,701.74,692.78,701.46,463940000,701.46 +1996-10-03,694.01,694.81,691.78,692.78,386500000,692.78 +1996-10-02,689.08,694.82,689.08,694.01,440130000,694.01 +1996-10-01,687.31,689.54,684.44,689.08,421550000,689.08 +1996-09-30,686.19,690.11,686.03,687.33,388570000,687.33 +1996-09-27,685.86,687.11,683.73,686.19,414760000,686.19 +1996-09-26,685.83,690.15,683.77,685.86,500870000,685.86 +1996-09-25,685.61,688.26,684.92,685.83,451710000,685.83 +1996-09-24,686.48,690.88,683.54,685.61,460150000,685.61 +1996-09-23,687.03,687.03,681.01,686.48,297760000,686.48 +1996-09-20,683.00,687.07,683.00,687.03,519420000,687.03 +1996-09-19,681.47,684.07,679.06,683.00,398580000,683.00 +1996-09-18,682.94,683.77,679.75,681.47,396600000,681.47 +1996-09-17,683.98,685.80,679.96,682.94,449850000,682.94 +1996-09-16,680.54,686.48,680.53,683.98,430080000,683.98 +1996-09-13,671.15,681.39,671.15,680.54,488360000,680.54 +1996-09-12,667.28,673.07,667.28,671.15,398820000,671.15 +1996-09-11,663.81,667.73,661.79,667.28,376880000,667.28 +1996-09-10,663.76,665.57,661.55,663.81,372960000,663.81 +1996-09-09,655.68,663.77,655.68,663.76,311530000,663.76 +1996-09-06,649.44,658.21,649.44,655.68,348710000,655.68 +1996-09-05,655.61,655.61,648.89,649.44,361430000,649.44 +1996-09-04,654.72,655.82,652.93,655.61,351290000,655.61 +1996-09-03,651.99,655.13,643.97,654.72,345740000,654.72 +1996-08-30,657.40,657.71,650.52,651.99,258380000,651.99 +1996-08-29,664.81,664.81,655.35,657.40,321120000,657.40 +1996-08-28,666.40,667.41,664.39,664.81,296440000,664.81 +1996-08-27,663.88,666.40,663.50,666.40,310520000,666.40 +1996-08-26,667.03,667.03,662.36,663.88,281430000,663.88 +1996-08-23,670.68,670.68,664.93,667.03,308010000,667.03 +1996-08-22,665.07,670.68,664.88,670.68,354950000,670.68 +1996-08-21,665.69,665.69,662.16,665.07,348820000,665.07 +1996-08-20,666.58,666.99,665.15,665.69,334960000,665.69 +1996-08-19,665.21,667.12,665.00,666.58,294080000,666.58 +1996-08-16,662.28,666.34,662.26,665.21,337650000,665.21 +1996-08-15,662.05,664.18,660.64,662.28,323950000,662.28 +1996-08-14,660.20,662.42,658.47,662.05,343460000,662.05 +1996-08-13,665.77,665.77,659.13,660.20,362470000,660.20 +1996-08-12,662.10,665.77,658.95,665.77,312170000,665.77 +1996-08-09,662.59,665.37,660.31,662.10,327280000,662.10 +1996-08-08,664.16,664.17,661.28,662.59,334570000,662.59 +1996-08-07,662.38,664.61,660.00,664.16,394340000,664.16 +1996-08-06,660.23,662.75,656.83,662.38,347290000,662.38 +1996-08-05,662.49,663.64,659.03,660.23,307240000,660.23 +1996-08-02,650.02,662.49,650.02,662.49,442080000,662.49 +1996-08-01,639.95,650.66,639.49,650.02,439110000,650.02 +1996-07-31,635.26,640.54,633.74,639.95,403560000,639.95 +1996-07-30,630.91,635.26,629.22,635.26,341090000,635.26 +1996-07-29,635.90,635.90,630.90,630.91,281560000,630.91 +1996-07-26,631.17,636.23,631.17,635.90,349900000,635.90 +1996-07-25,626.65,633.57,626.65,631.17,405390000,631.17 +1996-07-24,626.19,629.10,616.43,626.65,463030000,626.65 +1996-07-23,633.79,637.70,625.65,626.87,421900000,626.87 +1996-07-22,638.73,638.73,630.38,633.77,327300000,633.77 +1996-07-19,643.51,643.51,635.50,638.73,408070000,638.73 +1996-07-18,634.07,644.44,633.29,643.56,474460000,643.56 +1996-07-17,628.37,636.61,628.37,634.07,513830000,634.07 +1996-07-16,629.80,631.99,605.88,628.37,682980000,628.37 +1996-07-15,646.19,646.19,629.69,629.80,419020000,629.80 +1996-07-12,645.67,647.64,640.21,646.19,396740000,646.19 +1996-07-11,656.06,656.06,639.52,645.67,520470000,645.67 +1996-07-10,654.75,656.27,648.39,656.06,421350000,656.06 +1996-07-09,652.54,656.60,652.54,654.75,400170000,654.75 +1996-07-08,657.44,657.65,651.13,652.54,367560000,652.54 +1996-07-05,672.40,672.40,657.41,657.44,181470000,657.44 +1996-07-03,673.61,673.64,670.21,672.40,336260000,672.40 +1996-07-02,675.88,675.88,672.55,673.61,388000000,673.61 +1996-07-01,670.63,675.88,670.63,675.88,345750000,675.88 +1996-06-28,668.55,672.68,668.55,670.63,470460000,670.63 +1996-06-27,664.39,668.90,661.56,668.55,405580000,668.55 +1996-06-26,668.48,668.49,663.67,664.39,386520000,664.39 +1996-06-25,668.85,670.65,667.29,668.48,391900000,668.48 +1996-06-24,666.84,671.07,666.84,668.85,333840000,668.85 +1996-06-21,662.10,666.84,662.10,666.84,520340000,666.84 +1996-06-20,661.96,664.96,658.75,662.10,441060000,662.10 +1996-06-19,662.06,665.62,661.21,661.96,383610000,661.96 +1996-06-18,665.16,666.36,661.34,662.06,373290000,662.06 +1996-06-17,665.85,668.27,664.09,665.16,298410000,665.16 +1996-06-14,667.92,668.40,664.35,665.85,390630000,665.85 +1996-06-13,669.04,670.54,665.49,667.92,397620000,667.92 +1996-06-12,670.97,673.67,668.77,669.04,397190000,669.04 +1996-06-11,672.16,676.72,669.94,670.97,405390000,670.97 +1996-06-10,673.31,673.61,670.15,672.16,337480000,672.16 +1996-06-07,673.03,673.31,662.48,673.31,445710000,673.31 +1996-06-06,678.44,680.32,673.02,673.03,466940000,673.03 +1996-06-05,672.56,678.45,672.09,678.44,380360000,678.44 +1996-06-04,667.68,672.60,667.68,672.56,386040000,672.56 +1996-06-03,669.12,669.12,665.19,667.68,318470000,667.68 +1996-05-31,671.70,673.46,667.00,669.12,351750000,669.12 +1996-05-30,667.93,673.51,664.56,671.70,381960000,671.70 +1996-05-29,672.23,673.73,666.09,667.93,346730000,667.93 +1996-05-28,678.51,679.98,671.52,672.23,341480000,672.23 +1996-05-24,676.00,679.72,676.00,678.51,329150000,678.51 +1996-05-23,678.42,681.10,673.45,676.00,431850000,676.00 +1996-05-22,672.76,678.42,671.23,678.42,423670000,678.42 +1996-05-21,673.15,675.56,672.26,672.76,409610000,672.76 +1996-05-20,668.91,673.66,667.64,673.15,385000000,673.15 +1996-05-17,664.85,669.84,664.85,668.91,429140000,668.91 +1996-05-16,665.42,667.11,662.79,664.85,392070000,664.85 +1996-05-15,665.60,669.82,664.46,665.42,447790000,665.42 +1996-05-14,661.51,666.96,661.51,665.60,460440000,665.60 +1996-05-13,652.09,662.16,652.09,661.51,394180000,661.51 +1996-05-10,645.44,653.00,645.44,652.09,428370000,652.09 +1996-05-09,644.77,647.95,643.18,645.44,404310000,645.44 +1996-05-08,638.26,644.79,630.07,644.77,495460000,644.77 +1996-05-07,640.81,641.40,636.96,638.26,410770000,638.26 +1996-05-06,641.63,644.64,636.19,640.81,375820000,640.81 +1996-05-03,643.38,648.45,640.23,641.63,434010000,641.63 +1996-05-02,654.58,654.58,642.13,643.38,442960000,643.38 +1996-05-01,654.17,656.44,652.26,654.58,404620000,654.58 +1996-04-30,654.16,654.59,651.05,654.17,393390000,654.17 +1996-04-29,653.46,654.71,651.60,654.16,344030000,654.16 +1996-04-26,652.87,656.43,651.96,653.46,402530000,653.46 +1996-04-25,650.17,654.18,647.06,652.87,462120000,652.87 +1996-04-24,651.58,653.37,648.25,650.17,494220000,650.17 +1996-04-23,647.89,651.59,647.70,651.58,452690000,651.58 +1996-04-22,645.07,650.91,645.07,647.89,395370000,647.89 +1996-04-19,643.61,647.32,643.61,645.07,435690000,645.07 +1996-04-18,641.61,644.66,640.76,643.61,415150000,643.61 +1996-04-17,645.00,645.00,638.71,641.61,465200000,641.61 +1996-04-16,642.49,645.57,642.15,645.00,453310000,645.00 +1996-04-15,636.71,642.49,636.71,642.49,346370000,642.49 +1996-04-12,631.18,637.14,631.18,636.71,413270000,636.71 +1996-04-11,633.50,635.26,624.14,631.18,519710000,631.18 +1996-04-10,642.19,642.78,631.76,633.50,475150000,633.50 +1996-04-09,644.24,646.33,640.84,642.19,426790000,642.19 +1996-04-08,655.86,655.86,638.04,644.24,411810000,644.24 +1996-04-04,655.88,656.68,654.89,655.86,383400000,655.86 +1996-04-03,655.26,655.89,651.81,655.88,386620000,655.88 +1996-04-02,653.73,655.27,652.81,655.26,406640000,655.26 +1996-04-01,645.50,653.87,645.50,653.73,392120000,653.73 +1996-03-29,648.94,650.96,644.89,645.50,413510000,645.50 +1996-03-28,648.91,649.58,646.36,648.94,370750000,648.94 +1996-03-27,652.97,653.94,647.60,648.91,406280000,648.91 +1996-03-26,650.04,654.31,648.15,652.97,400090000,652.97 +1996-03-25,650.62,655.50,648.82,650.04,336700000,650.04 +1996-03-22,649.19,652.08,649.19,650.62,329390000,650.62 +1996-03-21,649.98,651.54,648.10,649.19,367180000,649.19 +1996-03-20,651.69,653.13,645.57,649.98,409780000,649.98 +1996-03-19,652.65,656.18,649.80,651.69,438300000,651.69 +1996-03-18,641.43,652.65,641.43,652.65,437100000,652.65 +1996-03-15,640.87,642.87,638.35,641.43,529970000,641.43 +1996-03-14,638.55,644.17,638.55,640.87,492630000,640.87 +1996-03-13,637.09,640.52,635.19,638.55,413030000,638.55 +1996-03-12,640.02,640.02,628.82,637.09,454980000,637.09 +1996-03-11,633.50,640.41,629.95,640.02,449500000,640.02 +1996-03-08,653.65,653.65,627.63,633.50,546550000,633.50 +1996-03-07,652.00,653.65,649.54,653.65,425790000,653.65 +1996-03-06,655.79,656.97,651.61,652.00,428220000,652.00 +1996-03-05,650.81,655.80,648.77,655.79,445700000,655.79 +1996-03-04,644.37,653.54,644.37,650.81,417270000,650.81 +1996-03-01,640.43,644.38,635.00,644.37,471480000,644.37 +1996-02-29,644.75,646.95,639.01,640.43,453170000,640.43 +1996-02-28,647.24,654.39,643.99,644.75,447790000,644.75 +1996-02-27,650.46,650.62,643.87,647.24,431340000,647.24 +1996-02-26,659.08,659.08,650.16,650.46,399330000,650.46 +1996-02-23,658.86,663.00,652.25,659.08,443130000,659.08 +1996-02-22,648.10,659.75,648.10,658.86,485470000,658.86 +1996-02-21,640.65,648.11,640.65,648.10,431220000,648.10 +1996-02-20,647.98,647.98,638.79,640.65,395910000,640.65 +1996-02-16,651.32,651.42,646.99,647.98,445570000,647.98 +1996-02-15,655.58,656.84,651.15,651.32,415320000,651.32 +1996-02-14,660.51,661.53,654.36,655.58,421790000,655.58 +1996-02-13,661.45,664.23,657.92,660.51,441540000,660.51 +1996-02-12,656.37,662.95,656.34,661.45,397890000,661.45 +1996-02-09,656.07,661.08,653.64,656.37,477640000,656.37 +1996-02-08,649.93,656.54,647.93,656.07,474970000,656.07 +1996-02-07,646.33,649.93,645.59,649.93,462730000,649.93 +1996-02-06,641.43,646.67,639.68,646.33,465940000,646.33 +1996-02-05,635.84,641.43,633.71,641.43,377760000,641.43 +1996-02-02,638.46,639.26,634.29,635.84,420020000,635.84 +1996-02-01,636.02,638.46,634.54,638.46,461430000,638.46 +1996-01-31,630.15,636.18,629.48,636.02,472210000,636.02 +1996-01-30,624.22,630.29,624.22,630.15,464350000,630.15 +1996-01-29,621.62,624.22,621.42,624.22,363330000,624.22 +1996-01-26,617.03,621.70,615.26,621.62,385700000,621.62 +1996-01-25,619.96,620.15,616.62,617.03,453270000,617.03 +1996-01-24,612.79,619.96,612.79,619.96,476380000,619.96 +1996-01-23,613.40,613.40,610.65,612.79,416910000,612.79 +1996-01-22,611.83,613.45,610.95,613.40,398040000,613.40 +1996-01-19,608.24,612.92,606.76,611.83,497720000,611.83 +1996-01-18,606.37,608.27,604.12,608.24,450410000,608.24 +1996-01-17,608.44,609.93,604.70,606.37,458720000,606.37 +1996-01-16,599.82,608.44,599.05,608.44,425220000,608.44 +1996-01-15,601.81,603.43,598.47,599.82,306180000,599.82 +1996-01-12,602.69,604.80,597.46,601.81,383400000,601.81 +1996-01-11,598.48,602.71,597.54,602.69,408800000,602.69 +1996-01-10,609.45,609.45,597.29,598.48,496830000,598.48 +1996-01-09,618.46,619.15,608.21,609.45,417400000,609.45 +1996-01-08,616.71,618.46,616.49,618.46,130360000,618.46 +1996-01-05,617.70,617.70,612.02,616.71,437110000,616.71 +1996-01-04,621.32,624.49,613.96,617.70,512580000,617.70 +1996-01-03,620.73,623.25,619.56,621.32,468950000,621.32 +1996-01-02,615.93,620.74,613.17,620.73,364180000,620.73 +1995-12-29,614.12,615.93,612.36,615.93,321250000,615.93 +1995-12-28,614.53,615.50,612.40,614.12,288660000,614.12 +1995-12-27,614.30,615.73,613.75,614.53,252300000,614.53 +1995-12-26,611.96,614.50,611.96,614.30,217280000,614.30 +1995-12-22,610.49,613.50,610.45,611.95,289600000,611.95 +1995-12-21,605.94,610.52,605.94,610.49,415810000,610.49 +1995-12-20,611.93,614.27,605.93,605.94,437680000,605.94 +1995-12-19,606.81,611.94,605.05,611.93,478280000,611.93 +1995-12-18,616.34,616.34,606.13,606.81,426270000,606.81 +1995-12-15,616.92,617.72,614.46,616.34,636800000,616.34 +1995-12-14,621.69,622.88,616.13,616.92,465300000,616.92 +1995-12-13,618.78,622.02,618.27,621.69,415290000,621.69 +1995-12-12,619.52,619.55,617.68,618.78,349860000,618.78 +1995-12-11,617.48,620.90,617.14,619.52,342070000,619.52 +1995-12-08,616.17,617.82,614.32,617.48,327900000,617.48 +1995-12-07,620.18,620.19,615.21,616.17,379260000,616.17 +1995-12-06,617.68,621.11,616.69,620.18,417780000,620.18 +1995-12-05,613.68,618.48,613.14,617.68,437360000,617.68 +1995-12-04,606.98,613.83,606.84,613.68,405480000,613.68 +1995-12-01,605.37,608.11,605.37,606.98,393310000,606.98 +1995-11-30,607.64,608.69,605.37,605.37,440050000,605.37 +1995-11-29,606.45,607.66,605.47,607.64,398280000,607.64 +1995-11-28,601.32,606.45,599.02,606.45,408860000,606.45 +1995-11-27,599.97,603.35,599.97,601.32,359130000,601.32 +1995-11-24,598.40,600.24,598.40,599.97,125870000,599.97 +1995-11-22,600.24,600.71,598.40,598.40,404980000,598.40 +1995-11-21,596.85,600.28,595.42,600.24,408320000,600.24 +1995-11-20,600.07,600.40,596.17,596.85,333150000,596.85 +1995-11-17,597.34,600.14,597.30,600.07,437200000,600.07 +1995-11-16,593.96,597.91,593.52,597.34,423280000,597.34 +1995-11-15,589.29,593.97,588.36,593.96,376100000,593.96 +1995-11-14,592.30,592.30,588.98,589.29,354420000,589.29 +1995-11-13,592.72,593.72,590.58,592.30,295840000,592.30 +1995-11-10,593.26,593.26,590.39,592.72,298690000,592.72 +1995-11-09,591.71,593.90,590.89,593.26,380760000,593.26 +1995-11-08,586.32,591.71,586.32,591.71,359780000,591.71 +1995-11-07,588.46,588.46,584.24,586.32,364680000,586.32 +1995-11-06,590.57,590.64,588.31,588.46,309100000,588.46 +1995-11-03,589.72,590.57,588.65,590.57,348500000,590.57 +1995-11-02,584.22,589.72,584.22,589.72,397070000,589.72 +1995-11-01,581.50,584.24,581.04,584.22,378090000,584.22 +1995-10-31,583.25,586.71,581.50,581.50,377390000,581.50 +1995-10-30,579.70,583.79,579.70,583.25,319160000,583.25 +1995-10-27,576.72,579.71,573.21,579.70,379230000,579.70 +1995-10-26,582.47,582.63,572.53,576.72,464270000,576.72 +1995-10-25,586.54,587.19,581.41,582.47,433620000,582.47 +1995-10-24,585.06,587.31,584.75,586.54,415540000,586.54 +1995-10-23,587.46,587.46,583.73,585.06,330750000,585.06 +1995-10-20,590.65,590.66,586.78,587.46,389360000,587.46 +1995-10-19,587.44,590.66,586.34,590.65,406620000,590.65 +1995-10-18,586.78,589.77,586.27,587.44,411270000,587.44 +1995-10-17,583.03,586.78,581.90,586.78,356380000,586.78 +1995-10-16,584.50,584.86,582.63,583.03,300750000,583.03 +1995-10-13,583.10,587.39,583.10,584.50,374680000,584.50 +1995-10-12,579.46,583.12,579.46,583.10,344060000,583.10 +1995-10-11,577.52,579.52,577.08,579.46,340740000,579.46 +1995-10-10,578.37,578.37,571.55,577.52,412710000,577.52 +1995-10-09,582.49,582.49,576.35,578.37,275320000,578.37 +1995-10-06,582.63,584.54,582.10,582.49,313680000,582.49 +1995-10-05,581.47,582.63,579.58,582.63,367480000,582.63 +1995-10-04,582.34,582.34,579.91,581.47,339380000,581.47 +1995-10-03,581.72,582.34,578.48,582.34,385940000,582.34 +1995-10-02,584.41,585.05,580.54,581.72,304990000,581.72 +1995-09-29,585.87,587.61,584.00,584.41,335250000,584.41 +1995-09-28,581.04,585.88,580.69,585.87,367720000,585.87 +1995-09-27,581.41,581.42,574.68,581.04,411300000,581.04 +1995-09-26,581.81,584.66,580.65,581.41,363630000,581.41 +1995-09-25,581.73,582.14,579.50,581.81,273120000,581.81 +1995-09-22,583.00,583.00,578.25,581.73,370790000,581.73 +1995-09-21,586.77,586.79,580.91,583.00,367100000,583.00 +1995-09-20,584.20,586.77,584.18,586.77,400050000,586.77 +1995-09-19,582.78,584.24,580.75,584.20,371170000,584.20 +1995-09-18,583.35,583.37,579.36,582.77,326090000,582.77 +1995-09-15,583.61,585.07,581.79,583.35,459370000,583.35 +1995-09-14,578.77,583.99,578.77,583.61,382880000,583.61 +1995-09-13,576.51,579.72,575.47,578.77,384380000,578.77 +1995-09-12,573.91,576.51,573.11,576.51,344540000,576.51 +1995-09-11,572.68,575.15,572.68,573.91,296840000,573.91 +1995-09-08,570.29,572.68,569.27,572.68,317940000,572.68 +1995-09-07,570.17,571.11,569.23,570.29,321720000,570.29 +1995-09-06,569.17,570.53,569.00,570.17,369540000,570.17 +1995-09-05,563.86,569.20,563.84,569.17,332670000,569.17 +1995-09-01,561.88,564.62,561.01,563.84,256730000,563.84 +1995-08-31,561.09,562.36,560.49,561.88,300920000,561.88 +1995-08-30,560.00,561.52,559.49,560.92,329840000,560.92 +1995-08-29,559.05,560.01,555.71,560.00,311290000,560.00 +1995-08-28,560.10,562.22,557.99,559.05,267860000,559.05 +1995-08-25,557.46,561.31,557.46,560.10,255990000,560.10 +1995-08-24,557.14,558.63,555.20,557.46,299200000,557.46 +1995-08-23,559.52,560.00,557.08,557.14,291890000,557.14 +1995-08-22,558.11,559.52,555.87,559.52,290890000,559.52 +1995-08-21,559.21,563.34,557.89,558.11,303200000,558.11 +1995-08-18,559.04,561.24,558.34,559.21,320490000,559.21 +1995-08-17,559.97,559.97,557.42,559.04,354460000,559.04 +1995-08-16,558.57,559.98,557.37,559.97,390170000,559.97 +1995-08-15,559.74,559.98,555.22,558.57,330070000,558.57 +1995-08-14,555.11,559.74,554.76,559.74,264920000,559.74 +1995-08-11,557.45,558.50,553.04,555.11,267850000,555.11 +1995-08-10,559.71,560.63,556.05,557.45,306660000,557.45 +1995-08-09,560.39,561.59,559.29,559.71,303390000,559.71 +1995-08-08,560.03,561.53,558.32,560.39,306090000,560.39 +1995-08-07,558.94,561.24,558.94,560.03,277050000,560.03 +1995-08-04,558.75,559.57,557.91,558.94,314740000,558.94 +1995-08-03,558.80,558.80,554.10,558.75,353110000,558.75 +1995-08-02,559.64,565.62,557.87,558.80,374330000,558.80 +1995-08-01,562.06,562.11,556.67,559.64,332210000,559.64 +1995-07-31,562.93,563.49,560.06,562.06,291950000,562.06 +1995-07-28,565.22,565.40,562.04,562.93,311590000,562.93 +1995-07-27,561.61,565.33,561.61,565.22,356570000,565.22 +1995-07-26,561.10,563.78,560.85,561.61,393470000,561.61 +1995-07-25,556.63,561.75,556.34,561.10,373200000,561.10 +1995-07-24,553.62,557.21,553.62,556.63,315300000,556.63 +1995-07-21,553.34,554.73,550.91,553.62,431830000,553.62 +1995-07-20,550.98,554.43,549.10,553.54,383380000,553.54 +1995-07-19,556.58,558.46,542.51,550.98,489850000,550.98 +1995-07-18,562.55,562.72,556.86,558.46,372230000,558.46 +1995-07-17,560.34,562.94,559.45,562.72,322540000,562.72 +1995-07-14,561.00,561.00,556.41,559.89,312930000,559.89 +1995-07-13,560.89,562.00,559.07,561.00,387500000,561.00 +1995-07-12,555.27,561.56,554.27,560.89,416360000,560.89 +1995-07-11,556.78,557.19,553.80,554.78,376770000,554.78 +1995-07-10,556.37,558.48,555.77,557.19,409700000,557.19 +1995-07-07,553.90,556.57,553.05,556.37,466540000,556.37 +1995-07-06,547.26,553.99,546.59,553.99,420500000,553.99 +1995-07-05,547.09,549.98,546.28,547.26,357850000,547.26 +1995-07-03,544.75,547.10,544.43,547.09,117900000,547.09 +1995-06-30,543.87,546.82,543.51,544.75,311650000,544.75 +1995-06-29,544.73,546.25,540.79,543.87,313080000,543.87 +1995-06-28,542.43,546.33,540.72,544.73,368060000,544.73 +1995-06-27,544.11,547.07,542.19,542.43,346950000,542.43 +1995-06-26,549.71,549.79,544.06,544.13,296720000,544.13 +1995-06-23,551.07,551.07,548.23,549.71,321660000,549.71 +1995-06-22,543.98,551.07,543.98,551.07,421000000,551.07 +1995-06-21,544.98,545.93,543.90,543.98,398210000,543.98 +1995-06-20,545.22,545.44,543.43,544.98,382370000,544.98 +1995-06-19,539.83,545.22,539.83,545.22,322990000,545.22 +1995-06-16,537.51,539.98,537.12,539.83,442740000,539.83 +1995-06-15,536.48,539.07,535.56,537.12,334700000,537.12 +1995-06-14,536.05,536.48,533.83,536.47,330770000,536.47 +1995-06-13,530.88,536.23,530.88,536.05,339660000,536.05 +1995-06-12,527.94,532.54,527.94,530.88,289920000,530.88 +1995-06-09,532.35,532.35,526.00,527.94,327570000,527.94 +1995-06-08,533.13,533.56,531.65,532.35,289880000,532.35 +1995-06-07,535.55,535.55,531.66,533.13,327790000,533.13 +1995-06-06,535.60,537.09,535.14,535.55,340490000,535.55 +1995-06-05,532.51,537.73,532.47,535.60,337520000,535.60 +1995-06-02,533.49,536.91,529.55,532.51,366000000,532.51 +1995-06-01,533.40,534.21,530.05,533.49,345920000,533.49 +1995-05-31,523.70,533.41,522.17,533.40,358180000,533.40 +1995-05-30,523.65,525.58,521.38,523.58,283020000,523.58 +1995-05-26,528.59,528.59,522.51,523.65,291220000,523.65 +1995-05-25,528.37,529.04,524.89,528.59,341820000,528.59 +1995-05-24,528.59,531.91,525.57,528.61,391770000,528.61 +1995-05-23,523.65,528.59,523.65,528.59,362690000,528.59 +1995-05-22,519.19,524.34,519.19,523.65,285600000,523.65 +1995-05-19,519.58,519.58,517.07,519.19,354010000,519.19 +1995-05-18,526.88,526.88,519.58,519.58,351900000,519.58 +1995-05-17,528.19,528.42,525.38,527.07,347930000,527.07 +1995-05-16,527.74,529.08,526.45,528.19,366180000,528.19 +1995-05-15,525.55,527.74,525.00,527.74,316240000,527.74 +1995-05-12,524.37,527.05,523.30,525.55,361000000,525.55 +1995-05-11,524.33,524.89,522.70,524.37,339900000,524.37 +1995-05-10,523.74,524.40,521.53,524.36,381990000,524.36 +1995-05-09,523.96,525.99,521.79,523.56,361300000,523.56 +1995-05-08,520.09,525.15,519.14,523.96,291810000,523.96 +1995-05-05,520.75,522.35,518.28,520.12,342380000,520.12 +1995-05-04,520.48,525.40,519.44,520.54,434990000,520.54 +1995-05-03,514.93,520.54,514.86,520.48,392370000,520.48 +1995-05-02,514.23,515.18,513.03,514.86,302560000,514.86 +1995-05-01,514.76,515.60,513.42,514.26,296830000,514.26 +1995-04-28,513.64,515.29,510.90,514.71,320440000,514.71 +1995-04-27,512.70,513.62,511.63,513.55,350850000,513.55 +1995-04-26,511.99,513.04,510.47,512.66,350810000,512.66 +1995-04-25,512.80,513.54,511.32,512.10,351790000,512.10 +1995-04-24,508.49,513.02,507.44,512.89,326280000,512.89 +1995-04-21,505.63,508.49,505.63,508.49,403250000,508.49 +1995-04-20,504.92,506.50,503.44,505.29,368450000,505.29 +1995-04-19,505.37,505.89,501.19,504.92,378050000,504.92 +1995-04-18,506.43,507.65,504.12,505.37,344680000,505.37 +1995-04-17,509.23,512.03,505.43,506.13,333930000,506.13 +1995-04-13,507.19,509.83,507.17,509.23,301580000,509.23 +1995-04-12,505.59,507.17,505.07,507.17,327880000,507.17 +1995-04-11,507.24,508.85,505.29,505.53,310660000,505.53 +1995-04-10,506.30,507.01,504.61,507.01,260980000,507.01 +1995-04-07,506.13,507.19,503.59,506.42,314760000,506.42 +1995-04-06,505.63,507.10,505.00,506.08,320460000,506.08 +1995-04-05,505.27,505.57,503.17,505.57,315170000,505.57 +1995-04-04,501.85,505.26,501.85,505.24,330580000,505.24 +1995-04-03,500.70,501.91,500.20,501.85,296430000,501.85 +1995-03-31,501.94,502.22,495.70,500.71,353060000,500.71 +1995-03-30,503.17,504.66,501.00,502.22,362940000,502.22 +1995-03-29,503.92,508.15,500.96,503.12,385940000,503.12 +1995-03-28,503.19,503.91,501.83,503.90,320360000,503.90 +1995-03-27,500.97,503.20,500.93,503.20,296270000,503.20 +1995-03-24,496.07,500.97,496.07,500.97,358370000,500.97 +1995-03-23,495.67,496.77,494.19,495.95,318530000,495.95 +1995-03-22,495.07,495.67,493.67,495.67,313120000,495.67 +1995-03-21,496.15,499.19,494.04,495.07,367110000,495.07 +1995-03-20,495.52,496.61,495.27,496.14,301740000,496.14 +1995-03-17,495.43,496.67,494.95,495.52,417380000,495.52 +1995-03-16,491.87,495.74,491.78,495.41,336670000,495.41 +1995-03-15,492.89,492.89,490.83,491.88,309540000,491.88 +1995-03-14,490.05,493.69,490.05,492.89,346160000,492.89 +1995-03-13,489.57,491.28,489.35,490.05,275280000,490.05 +1995-03-10,483.16,490.37,483.16,489.57,382940000,489.57 +1995-03-09,483.14,483.74,482.05,483.16,319320000,483.16 +1995-03-08,482.12,484.08,481.57,483.14,349780000,483.14 +1995-03-07,485.63,485.63,479.70,482.12,355550000,482.12 +1995-03-06,485.42,485.70,481.52,485.63,298870000,485.63 +1995-03-03,485.13,485.42,483.07,485.42,330840000,485.42 +1995-03-02,485.65,485.71,483.19,485.13,330030000,485.13 +1995-03-01,487.39,487.83,484.92,485.65,362600000,485.65 +1995-02-28,483.81,487.44,483.77,487.39,317220000,487.39 +1995-02-27,488.26,488.26,483.18,483.81,285790000,483.81 +1995-02-24,486.82,488.28,485.70,488.11,302930000,488.11 +1995-02-23,485.07,489.19,485.07,486.91,394280000,486.91 +1995-02-22,482.74,486.15,482.45,485.07,339460000,485.07 +1995-02-21,481.95,483.26,481.94,482.72,308090000,482.72 +1995-02-17,485.15,485.22,481.97,481.97,347970000,481.97 +1995-02-16,484.56,485.22,483.05,485.22,360990000,485.22 +1995-02-15,482.55,485.54,481.77,484.54,378040000,484.54 +1995-02-14,481.65,482.94,480.89,482.55,300720000,482.55 +1995-02-13,481.46,482.86,481.07,481.65,256270000,481.65 +1995-02-10,480.19,481.96,479.53,481.46,295600000,481.46 +1995-02-09,481.19,482.00,479.91,480.19,325570000,480.19 +1995-02-08,480.81,482.60,480.40,481.19,318430000,481.19 +1995-02-07,481.14,481.32,479.69,480.81,314660000,480.81 +1995-02-06,478.64,481.95,478.36,481.14,325660000,481.14 +1995-02-03,472.78,479.91,472.78,478.65,441000000,478.65 +1995-02-02,470.40,472.79,469.95,472.79,322110000,472.79 +1995-02-01,470.42,472.75,469.29,470.40,395310000,470.40 +1995-01-31,468.51,471.03,468.18,470.42,411590000,470.42 +1995-01-30,470.39,470.52,467.49,468.51,318550000,468.51 +1995-01-27,468.32,471.36,468.32,470.39,339510000,470.39 +1995-01-26,467.44,468.62,466.90,468.32,304730000,468.32 +1995-01-25,465.86,469.51,464.40,467.44,342610000,467.44 +1995-01-24,465.81,466.88,465.47,465.86,315430000,465.86 +1995-01-23,464.78,466.23,461.14,465.82,325830000,465.82 +1995-01-20,466.95,466.99,463.99,464.78,378190000,464.78 +1995-01-19,469.72,469.72,466.40,466.95,297220000,466.95 +1995-01-18,470.05,470.43,468.03,469.71,344660000,469.71 +1995-01-17,469.38,470.15,468.19,470.05,331520000,470.05 +1995-01-16,465.97,470.39,465.97,469.38,315810000,469.38 +1995-01-13,461.64,466.43,461.64,465.97,336740000,465.97 +1995-01-12,461.64,461.93,460.63,461.64,313040000,461.64 +1995-01-11,461.68,463.61,458.65,461.66,346310000,461.66 +1995-01-10,460.90,464.59,460.90,461.68,352450000,461.68 +1995-01-09,460.67,461.77,459.74,460.83,278790000,460.83 +1995-01-06,460.38,462.49,459.47,460.68,308070000,460.68 +1995-01-05,460.73,461.30,459.75,460.34,309050000,460.34 +1995-01-04,459.13,460.72,457.56,460.71,319510000,460.71 +1995-01-03,459.21,459.27,457.20,459.11,262450000,459.11 +1994-12-30,461.17,462.12,459.24,459.27,256260000,459.27 +1994-12-29,460.92,461.81,460.36,461.17,250650000,461.17 +1994-12-28,462.47,462.49,459.00,460.86,246260000,460.86 +1994-12-27,459.85,462.73,459.85,462.47,211180000,462.47 +1994-12-23,459.70,461.32,459.39,459.83,196540000,459.83 +1994-12-22,459.62,461.21,459.33,459.68,340330000,459.68 +1994-12-21,457.24,461.70,457.17,459.61,379130000,459.61 +1994-12-20,458.08,458.45,456.37,457.10,326530000,457.10 +1994-12-19,458.78,458.78,456.64,457.91,271850000,457.91 +1994-12-16,455.35,458.80,455.35,458.80,481860000,458.80 +1994-12-15,454.97,456.84,454.50,455.34,332790000,455.34 +1994-12-14,450.05,456.16,450.05,454.97,355000000,454.97 +1994-12-13,449.52,451.69,449.43,450.15,307110000,450.15 +1994-12-12,446.95,449.48,445.62,449.47,285730000,449.47 +1994-12-09,445.45,446.98,442.88,446.96,336440000,446.96 +1994-12-08,451.23,452.06,444.59,445.45,362290000,445.45 +1994-12-07,453.11,453.11,450.01,451.23,283490000,451.23 +1994-12-06,453.29,453.93,450.35,453.11,298930000,453.11 +1994-12-05,453.30,455.04,452.06,453.32,258490000,453.32 +1994-12-02,448.92,453.31,448.00,453.30,284750000,453.30 +1994-12-01,453.55,453.91,447.97,448.92,285920000,448.92 +1994-11-30,455.17,457.13,453.27,453.69,298650000,453.69 +1994-11-29,454.23,455.17,452.14,455.17,286620000,455.17 +1994-11-28,452.26,454.19,451.04,454.16,265480000,454.16 +1994-11-25,449.94,452.87,449.94,452.29,118290000,452.29 +1994-11-23,450.01,450.61,444.18,449.93,430760000,449.93 +1994-11-22,457.95,458.03,450.08,450.09,387270000,450.09 +1994-11-21,461.69,463.41,457.55,458.30,293030000,458.30 +1994-11-18,463.60,463.84,460.25,461.47,356730000,461.47 +1994-11-17,465.71,465.83,461.47,463.57,323190000,463.57 +1994-11-16,465.06,466.25,464.28,465.62,296980000,465.62 +1994-11-15,466.04,468.51,462.95,465.03,336450000,465.03 +1994-11-14,462.44,466.29,462.35,466.04,260380000,466.04 +1994-11-11,464.17,464.17,461.45,462.35,220800000,462.35 +1994-11-10,465.40,467.79,463.73,464.37,280910000,464.37 +1994-11-09,465.65,469.95,463.46,465.40,337780000,465.40 +1994-11-08,463.08,467.54,463.07,465.65,290860000,465.65 +1994-11-07,462.31,463.56,461.25,463.07,255030000,463.07 +1994-11-04,467.96,469.28,462.28,462.28,280560000,462.28 +1994-11-03,466.50,468.64,466.40,467.91,285170000,467.91 +1994-11-02,468.41,470.92,466.36,466.51,331360000,466.51 +1994-11-01,472.26,472.26,467.64,468.42,314940000,468.42 +1994-10-31,473.76,474.74,472.33,472.35,302820000,472.35 +1994-10-28,465.84,473.78,465.80,473.77,381450000,473.77 +1994-10-27,462.68,465.85,462.62,465.85,327790000,465.85 +1994-10-26,461.55,463.77,461.22,462.62,322570000,462.62 +1994-10-25,460.83,461.95,458.26,461.53,326110000,461.53 +1994-10-24,464.89,466.37,460.80,460.83,282800000,460.83 +1994-10-21,466.69,466.69,463.83,464.89,315310000,464.89 +1994-10-20,470.37,470.37,465.39,466.85,331460000,466.85 +1994-10-19,467.69,471.43,465.96,470.28,317030000,470.28 +1994-10-18,469.02,469.19,466.54,467.66,259730000,467.66 +1994-10-17,469.11,469.88,468.16,468.96,238490000,468.96 +1994-10-14,467.78,469.53,466.11,469.10,251770000,469.10 +1994-10-13,465.56,471.30,465.56,467.79,337900000,467.79 +1994-10-12,465.78,466.70,464.79,465.47,269550000,465.47 +1994-10-11,459.04,466.34,459.04,465.79,355540000,465.79 +1994-10-10,455.12,459.29,455.12,459.04,213110000,459.04 +1994-10-07,452.37,455.67,452.13,455.10,284230000,455.10 +1994-10-06,453.52,454.49,452.13,452.36,272620000,452.36 +1994-10-05,454.59,454.59,449.27,453.52,359670000,453.52 +1994-10-04,461.77,462.46,454.03,454.59,325620000,454.59 +1994-10-03,462.69,463.31,460.33,461.74,269130000,461.74 +1994-09-30,462.27,465.30,461.91,462.71,291900000,462.71 +1994-09-29,464.84,464.84,461.51,462.24,302280000,462.24 +1994-09-28,462.10,465.55,462.10,464.84,330020000,464.84 +1994-09-27,460.82,462.75,459.83,462.05,290330000,462.05 +1994-09-26,459.65,460.87,459.31,460.82,272530000,460.82 +1994-09-23,461.27,462.14,459.01,459.67,300060000,459.67 +1994-09-22,461.45,463.22,460.96,461.27,305210000,461.27 +1994-09-21,463.42,464.01,458.47,461.46,351830000,461.46 +1994-09-20,470.83,470.83,463.36,463.36,326050000,463.36 +1994-09-19,471.21,473.15,470.68,470.85,277110000,470.85 +1994-09-16,474.81,474.81,470.06,471.19,410750000,471.19 +1994-09-15,468.80,474.81,468.79,474.81,281920000,474.81 +1994-09-14,467.55,468.86,466.82,468.80,297480000,468.80 +1994-09-13,466.27,468.76,466.27,467.51,293370000,467.51 +1994-09-12,468.18,468.42,466.15,466.21,244680000,466.21 +1994-09-09,473.13,473.13,466.55,468.18,293360000,468.18 +1994-09-08,470.96,473.40,470.86,473.14,295010000,473.14 +1994-09-07,471.86,472.41,470.20,470.99,290330000,470.99 +1994-09-06,471.00,471.92,469.64,471.86,199670000,471.86 +1994-09-02,473.20,474.89,470.67,470.99,216150000,470.99 +1994-09-01,475.49,475.49,471.74,473.17,282830000,473.17 +1994-08-31,476.07,477.59,474.43,475.49,354650000,475.49 +1994-08-30,474.59,476.61,473.56,476.07,294520000,476.07 +1994-08-29,473.89,477.14,473.89,474.59,266080000,474.59 +1994-08-26,468.08,474.65,468.08,473.80,305120000,473.80 +1994-08-25,469.07,470.12,467.64,468.08,284230000,468.08 +1994-08-24,464.51,469.05,464.51,469.03,310510000,469.03 +1994-08-23,462.39,466.58,462.39,464.51,307240000,464.51 +1994-08-22,463.61,463.61,461.46,462.32,235870000,462.32 +1994-08-19,463.25,464.37,461.81,463.68,276630000,463.68 +1994-08-18,465.10,465.10,462.30,463.17,287330000,463.17 +1994-08-17,465.11,465.91,464.57,465.17,309250000,465.17 +1994-08-16,461.22,465.20,459.89,465.01,306640000,465.01 +1994-08-15,461.97,463.34,461.21,461.23,223210000,461.23 +1994-08-12,458.88,462.27,458.88,461.94,249280000,461.94 +1994-08-11,460.31,461.41,456.88,458.88,275690000,458.88 +1994-08-10,457.98,460.48,457.98,460.30,279500000,460.30 +1994-08-09,457.89,458.16,456.66,457.92,259140000,457.92 +1994-08-08,457.08,458.30,457.01,457.89,217680000,457.89 +1994-08-05,458.34,458.34,456.08,457.09,230270000,457.09 +1994-08-04,461.45,461.49,458.40,458.40,289150000,458.40 +1994-08-03,460.65,461.46,459.51,461.45,283840000,461.45 +1994-08-02,461.01,462.77,459.70,460.56,294740000,460.56 +1994-08-01,458.28,461.01,458.08,461.01,258180000,461.01 +1994-07-29,454.25,459.33,454.25,458.26,269560000,458.26 +1994-07-28,452.57,454.93,452.30,454.24,245990000,454.24 +1994-07-27,453.36,453.38,451.36,452.57,251680000,452.57 +1994-07-26,454.25,454.25,452.78,453.36,232670000,453.36 +1994-07-25,453.10,454.32,452.76,454.25,213470000,454.25 +1994-07-22,452.61,454.03,452.33,453.11,261600000,453.11 +1994-07-21,451.60,453.22,451.00,452.61,292120000,452.61 +1994-07-20,453.89,454.16,450.69,451.60,267840000,451.60 +1994-07-19,455.22,455.30,453.86,453.86,251530000,453.86 +1994-07-18,454.41,455.71,453.26,455.22,227460000,455.22 +1994-07-15,453.28,454.33,452.80,454.16,275860000,454.16 +1994-07-14,448.73,454.33,448.73,453.41,322330000,453.41 +1994-07-13,448.03,450.06,447.97,448.73,265840000,448.73 +1994-07-12,448.02,448.16,444.65,447.95,252250000,447.95 +1994-07-11,449.56,450.24,445.27,448.06,222970000,448.06 +1994-07-08,448.38,449.75,446.53,449.55,236520000,449.55 +1994-07-07,446.15,448.64,446.15,448.38,259740000,448.38 +1994-07-06,446.29,447.28,444.18,446.13,236230000,446.13 +1994-07-05,446.20,447.62,445.14,446.37,195410000,446.37 +1994-07-01,444.27,446.45,443.58,446.20,199030000,446.20 +1994-06-30,447.63,448.61,443.66,444.27,293410000,444.27 +1994-06-29,446.05,449.83,446.04,447.63,264430000,447.63 +1994-06-28,447.36,448.47,443.08,446.07,267740000,446.07 +1994-06-27,442.78,447.76,439.83,447.31,250080000,447.31 +1994-06-24,449.63,449.63,442.51,442.80,261260000,442.80 +1994-06-23,453.09,454.16,449.43,449.63,256480000,449.63 +1994-06-22,451.40,453.91,451.40,453.09,251110000,453.09 +1994-06-21,455.48,455.48,449.45,451.34,298730000,451.34 +1994-06-20,458.45,458.45,454.46,455.48,229520000,455.48 +1994-06-17,461.93,462.16,458.44,458.45,373450000,458.45 +1994-06-16,460.61,461.93,459.80,461.93,256390000,461.93 +1994-06-15,462.38,463.23,459.95,460.61,269740000,460.61 +1994-06-14,459.10,462.52,459.10,462.37,288550000,462.37 +1994-06-13,458.67,459.36,457.18,459.10,243640000,459.10 +1994-06-10,457.86,459.48,457.36,458.67,222480000,458.67 +1994-06-09,457.06,457.87,455.86,457.86,252870000,457.86 +1994-06-08,458.21,459.74,455.43,457.06,256000000,457.06 +1994-06-07,458.88,459.46,457.65,458.21,234680000,458.21 +1994-06-06,460.13,461.87,458.85,458.88,259080000,458.88 +1994-06-03,457.65,460.86,456.27,460.13,271490000,460.13 +1994-06-02,457.62,458.50,457.26,457.65,271630000,457.65 +1994-06-01,456.50,458.29,453.99,457.63,279910000,457.63 +1994-05-31,457.32,457.61,455.16,456.50,216700000,456.50 +1994-05-27,457.03,457.33,454.67,457.33,186430000,457.33 +1994-05-26,456.33,457.77,455.79,457.06,255740000,457.06 +1994-05-25,454.84,456.34,452.20,456.34,254420000,456.34 +1994-05-24,453.21,456.77,453.21,454.81,280040000,454.81 +1994-05-23,454.92,454.92,451.79,453.20,249420000,453.20 +1994-05-20,456.48,456.48,454.22,454.92,295180000,454.92 +1994-05-19,453.69,456.88,453.00,456.48,303680000,456.48 +1994-05-18,449.39,454.45,448.87,453.69,337670000,453.69 +1994-05-17,444.49,449.37,443.70,449.37,311280000,449.37 +1994-05-16,444.15,445.82,443.62,444.49,234700000,444.49 +1994-05-13,443.62,444.72,441.21,444.14,252070000,444.14 +1994-05-12,441.50,444.80,441.50,443.75,272770000,443.75 +1994-05-11,446.03,446.03,440.78,441.49,277400000,441.49 +1994-05-10,442.37,446.84,442.37,446.01,297660000,446.01 +1994-05-09,447.82,447.82,441.84,442.32,250870000,442.32 +1994-05-06,451.37,451.37,445.64,447.82,291910000,447.82 +1994-05-05,451.72,452.82,450.72,451.38,255690000,451.38 +1994-05-04,453.04,453.11,449.87,451.72,267940000,451.72 +1994-05-03,453.06,453.98,450.51,453.03,288270000,453.03 +1994-05-02,450.91,453.57,449.05,453.02,296130000,453.02 +1994-04-29,449.07,451.35,447.91,450.91,293970000,450.91 +1994-04-28,451.84,452.23,447.97,449.10,325200000,449.10 +1994-04-26,452.71,452.79,450.66,451.87,288120000,451.87 +1994-04-25,447.64,452.71,447.58,452.71,262320000,452.71 +1994-04-22,448.73,449.96,447.16,447.63,295710000,447.63 +1994-04-21,441.96,449.14,441.96,448.73,378770000,448.73 +1994-04-20,442.54,445.01,439.40,441.96,366540000,441.96 +1994-04-19,442.54,444.82,438.83,442.54,323280000,442.54 +1994-04-18,446.27,447.87,441.48,442.46,271470000,442.46 +1994-04-15,446.38,447.85,445.81,446.18,309550000,446.18 +1994-04-14,446.26,447.55,443.57,446.38,275130000,446.38 +1994-04-13,447.63,448.57,442.62,446.26,278030000,446.26 +1994-04-12,449.83,450.80,447.33,447.57,257990000,447.57 +1994-04-11,447.12,450.34,447.10,449.87,243180000,449.87 +1994-04-08,450.89,450.89,445.51,447.10,264090000,447.10 +1994-04-07,448.11,451.10,446.38,450.88,289280000,450.88 +1994-04-06,448.29,449.63,444.98,448.05,302000000,448.05 +1994-04-05,439.14,448.29,439.14,448.29,365990000,448.29 +1994-04-04,445.66,445.66,435.86,438.92,344390000,438.92 +1994-03-31,445.55,447.16,436.16,445.77,403580000,445.77 +1994-03-30,452.48,452.49,445.55,445.55,390520000,445.55 +1994-03-29,460.00,460.32,452.43,452.48,305360000,452.48 +1994-03-28,460.58,461.12,456.10,460.00,287350000,460.00 +1994-03-25,464.35,465.29,460.58,460.58,249640000,460.58 +1994-03-24,468.57,468.57,462.41,464.35,303740000,464.35 +1994-03-23,468.89,470.38,468.52,468.54,281500000,468.54 +1994-03-22,468.40,470.47,467.88,468.80,282240000,468.80 +1994-03-21,471.06,471.06,467.23,468.54,247380000,468.54 +1994-03-18,470.89,471.09,467.83,471.06,462240000,471.06 +1994-03-17,469.42,471.05,468.62,470.90,303930000,470.90 +1994-03-16,467.04,469.85,465.48,469.42,307640000,469.42 +1994-03-15,467.39,468.99,466.04,467.01,303750000,467.01 +1994-03-14,466.44,467.60,466.08,467.39,260150000,467.39 +1994-03-11,463.86,466.61,462.54,466.44,303890000,466.44 +1994-03-10,467.08,467.29,462.46,463.90,369370000,463.90 +1994-03-09,465.94,467.42,463.40,467.06,309810000,467.06 +1994-03-08,466.92,467.79,465.02,465.88,298110000,465.88 +1994-03-07,464.74,468.07,464.74,466.91,285590000,466.91 +1994-03-04,463.03,466.16,462.41,464.74,311850000,464.74 +1994-03-03,464.81,464.83,462.50,463.01,291790000,463.01 +1994-03-02,464.40,464.87,457.49,464.81,361130000,464.81 +1994-03-01,467.19,467.43,462.02,464.44,304450000,464.44 +1994-02-28,466.07,469.16,466.07,467.14,268690000,467.14 +1994-02-25,464.33,466.48,464.33,466.07,273680000,466.07 +1994-02-24,470.65,470.65,464.26,464.26,342940000,464.26 +1994-02-23,471.48,472.41,469.47,470.69,309910000,470.69 +1994-02-22,467.69,471.65,467.58,471.46,270900000,471.46 +1994-02-18,470.29,471.09,466.07,467.69,293210000,467.69 +1994-02-17,472.79,475.12,468.44,470.34,340030000,470.34 +1994-02-16,472.53,474.16,471.94,472.79,295450000,472.79 +1994-02-15,470.23,473.41,470.23,472.52,306790000,472.52 +1994-02-14,470.18,471.99,469.05,470.23,263190000,470.23 +1994-02-11,468.93,471.13,466.89,470.18,213740000,470.18 +1994-02-10,472.81,473.13,468.91,468.93,327250000,468.93 +1994-02-09,471.05,473.41,471.05,472.77,332670000,472.77 +1994-02-08,471.76,472.33,469.50,471.05,318180000,471.05 +1994-02-07,469.81,472.09,467.57,471.76,348270000,471.76 +1994-02-04,480.68,481.02,469.28,469.81,378380000,469.81 +1994-02-03,481.96,481.96,478.71,480.71,318350000,480.71 +1994-02-02,479.62,482.23,479.57,482.00,328960000,482.00 +1994-02-01,481.60,481.64,479.18,479.62,322510000,479.62 +1994-01-31,478.70,482.85,478.70,481.61,322870000,481.61 +1994-01-28,477.05,479.75,477.05,478.70,313140000,478.70 +1994-01-27,473.20,477.52,473.20,477.05,346500000,477.05 +1994-01-26,470.92,473.44,470.72,473.20,304660000,473.20 +1994-01-25,471.97,472.56,470.27,470.92,326120000,470.92 +1994-01-24,474.72,475.20,471.49,471.97,296900000,471.97 +1994-01-21,474.98,475.56,473.72,474.72,346350000,474.72 +1994-01-20,474.30,475.00,473.42,474.98,310450000,474.98 +1994-01-19,474.25,474.70,472.21,474.30,311370000,474.30 +1994-01-18,473.30,475.19,473.29,474.25,308840000,474.25 +1994-01-17,474.91,474.91,472.84,473.30,233980000,473.30 +1994-01-14,472.50,475.32,472.50,474.91,304920000,474.91 +1994-01-13,474.17,474.17,471.80,472.47,277970000,472.47 +1994-01-12,474.13,475.06,472.14,474.17,310690000,474.17 +1994-01-11,475.27,475.28,473.27,474.13,305490000,474.13 +1994-01-10,469.90,475.27,469.55,475.27,319490000,475.27 +1994-01-07,467.09,470.26,467.03,469.90,324920000,469.90 +1994-01-06,467.55,469.00,467.02,467.12,365960000,467.12 +1994-01-05,466.89,467.82,465.92,467.55,400030000,467.55 +1994-01-04,465.44,466.89,464.44,466.89,326600000,466.89 +1994-01-03,466.51,466.94,464.36,465.44,270140000,465.44 +1993-12-31,468.66,470.75,466.45,466.45,168590000,466.45 +1993-12-30,470.58,470.58,468.09,468.64,195860000,468.64 +1993-12-29,470.88,471.29,469.87,470.58,269570000,470.58 +1993-12-28,470.61,471.05,469.43,470.94,200960000,470.94 +1993-12-27,467.40,470.55,467.35,470.54,171200000,470.54 +1993-12-23,467.30,468.97,467.30,467.38,227240000,467.38 +1993-12-22,465.08,467.38,465.08,467.32,272440000,467.32 +1993-12-21,465.84,465.92,464.03,465.30,273370000,465.30 +1993-12-20,466.38,466.90,465.53,465.85,255900000,465.85 +1993-12-17,463.34,466.38,463.34,466.38,363750000,466.38 +1993-12-16,461.86,463.98,461.86,463.34,284620000,463.34 +1993-12-15,463.06,463.69,461.84,461.84,331770000,461.84 +1993-12-14,465.73,466.12,462.46,463.06,275050000,463.06 +1993-12-13,463.93,465.71,462.71,465.70,256580000,465.70 +1993-12-10,464.18,464.87,462.66,463.93,245620000,463.93 +1993-12-09,466.29,466.54,463.87,464.18,287570000,464.18 +1993-12-08,465.88,466.73,465.42,466.29,314460000,466.29 +1993-12-07,466.43,466.77,465.44,466.76,285690000,466.76 +1993-12-06,464.89,466.89,464.40,466.43,292370000,466.43 +1993-12-03,463.13,464.89,462.67,464.89,268360000,464.89 +1993-12-02,461.89,463.22,461.45,463.11,256370000,463.11 +1993-12-01,461.93,464.47,461.63,461.89,293870000,461.89 +1993-11-30,461.90,463.62,460.45,461.79,286660000,461.79 +1993-11-29,463.06,464.83,461.83,461.90,272710000,461.90 +1993-11-26,462.36,463.63,462.36,463.06,90220000,463.06 +1993-11-24,461.03,462.90,461.03,462.36,230630000,462.36 +1993-11-23,459.13,461.77,458.47,461.03,260400000,461.03 +1993-11-22,462.60,462.60,457.08,459.13,280130000,459.13 +1993-11-19,463.59,463.60,460.03,462.60,302970000,462.60 +1993-11-18,464.83,464.88,461.73,463.62,313490000,463.62 +1993-11-17,466.74,467.24,462.73,464.81,316940000,464.81 +1993-11-16,463.75,466.74,462.97,466.74,303980000,466.74 +1993-11-15,465.39,466.13,463.01,463.75,251030000,463.75 +1993-11-12,462.64,465.84,462.64,465.39,326240000,465.39 +1993-11-11,463.72,464.96,462.49,462.64,283820000,462.64 +1993-11-10,460.40,463.72,459.57,463.72,283450000,463.72 +1993-11-09,460.21,463.42,460.21,460.33,276360000,460.33 +1993-11-08,459.57,461.54,458.78,460.21,234340000,460.21 +1993-11-05,457.49,459.63,454.36,459.57,336890000,459.57 +1993-11-04,463.02,463.16,457.26,457.49,323430000,457.49 +1993-11-03,468.44,468.61,460.95,463.02,342110000,463.02 +1993-11-02,469.10,469.10,466.20,468.44,304780000,468.44 +1993-11-01,467.83,469.11,467.33,469.10,256030000,469.10 +1993-10-29,467.72,468.20,467.37,467.83,270570000,467.83 +1993-10-28,464.52,468.76,464.52,467.73,301220000,467.73 +1993-10-27,464.30,464.61,463.36,464.61,279830000,464.61 +1993-10-26,464.20,464.32,462.65,464.30,284530000,464.30 +1993-10-25,463.27,464.49,462.05,464.20,260310000,464.20 +1993-10-22,465.36,467.82,463.27,463.27,301440000,463.27 +1993-10-21,466.06,466.64,464.38,465.36,289600000,465.36 +1993-10-20,466.21,466.87,464.54,466.07,305670000,466.07 +1993-10-19,468.41,468.64,464.80,466.21,304400000,466.21 +1993-10-18,469.50,470.04,468.02,468.45,329580000,468.45 +1993-10-15,466.83,471.10,466.83,469.50,366110000,469.50 +1993-10-14,461.55,466.83,461.55,466.83,352530000,466.83 +1993-10-13,461.12,461.98,460.76,461.49,290930000,461.49 +1993-10-12,461.04,462.47,460.73,461.12,263970000,461.12 +1993-10-11,460.31,461.87,460.31,460.88,183060000,460.88 +1993-10-08,459.18,460.99,456.40,460.31,243600000,460.31 +1993-10-07,460.71,461.13,459.08,459.18,255210000,459.18 +1993-10-06,461.24,462.60,460.26,460.74,277070000,460.74 +1993-10-05,461.34,463.15,459.45,461.20,294570000,461.20 +1993-10-04,461.28,461.80,460.02,461.34,229380000,461.34 +1993-10-01,458.93,461.48,458.35,461.28,256880000,461.28 +1993-09-30,460.11,460.56,458.28,458.93,280980000,458.93 +1993-09-29,461.60,462.17,459.51,460.11,277690000,460.11 +1993-09-28,461.84,462.08,460.91,461.53,243320000,461.53 +1993-09-27,457.63,461.81,457.63,461.80,244920000,461.80 +1993-09-24,457.74,458.56,456.92,457.63,248270000,457.63 +1993-09-23,456.25,458.69,456.25,457.74,275350000,457.74 +1993-09-22,452.94,456.92,452.94,456.20,298960000,456.20 +1993-09-21,455.05,455.80,449.64,452.95,300310000,452.95 +1993-09-20,458.84,459.91,455.00,455.05,231130000,455.05 +1993-09-17,459.43,459.43,457.09,458.83,381370000,458.83 +1993-09-16,461.54,461.54,459.00,459.43,229700000,459.43 +1993-09-15,459.90,461.96,456.31,461.60,294410000,461.60 +1993-09-14,461.93,461.93,458.15,459.90,258650000,459.90 +1993-09-13,461.70,463.38,461.41,462.06,244970000,462.06 +1993-09-10,457.49,461.86,457.49,461.72,269950000,461.72 +1993-09-09,456.65,458.11,455.17,457.50,258070000,457.50 +1993-09-08,458.52,458.53,453.75,456.65,283100000,456.65 +1993-09-07,461.34,462.07,457.95,458.52,229500000,458.52 +1993-09-03,461.30,462.05,459.91,461.34,197160000,461.34 +1993-09-02,463.13,463.54,461.07,461.30,259870000,461.30 +1993-09-01,463.55,463.80,461.77,463.15,245040000,463.15 +1993-08-31,461.90,463.56,461.29,463.56,252830000,463.56 +1993-08-30,460.54,462.58,460.28,461.90,194180000,461.90 +1993-08-27,461.05,461.05,459.19,460.54,196140000,460.54 +1993-08-26,460.04,462.87,458.82,461.04,254070000,461.04 +1993-08-25,459.75,462.04,459.30,460.13,301650000,460.13 +1993-08-24,455.23,459.77,455.04,459.77,270700000,459.77 +1993-08-23,456.12,456.12,454.29,455.23,212500000,455.23 +1993-08-20,456.51,456.68,454.60,456.16,276800000,456.16 +1993-08-19,456.01,456.76,455.20,456.43,293330000,456.43 +1993-08-18,453.21,456.99,453.21,456.04,312940000,456.04 +1993-08-17,452.38,453.70,451.96,453.13,261320000,453.13 +1993-08-16,450.25,453.41,450.25,452.38,233640000,452.38 +1993-08-13,448.97,450.25,448.97,450.14,214370000,450.14 +1993-08-12,450.47,451.63,447.53,448.96,278530000,448.96 +1993-08-11,449.60,451.00,449.60,450.46,268330000,450.46 +1993-08-10,450.71,450.71,449.10,449.45,255520000,449.45 +1993-08-09,448.68,451.51,448.31,450.72,232750000,450.72 +1993-08-06,448.13,449.26,447.87,448.68,221170000,448.68 +1993-08-05,448.55,449.61,446.94,448.13,261900000,448.13 +1993-08-04,449.27,449.72,447.93,448.54,230040000,448.54 +1993-08-03,450.15,450.43,447.59,449.27,253110000,449.27 +1993-08-02,448.13,450.15,448.03,450.15,230380000,450.15 +1993-07-30,450.19,450.22,446.98,448.13,254420000,448.13 +1993-07-29,447.19,450.77,447.19,450.24,261240000,450.24 +1993-07-28,448.25,448.61,446.59,447.19,273100000,447.19 +1993-07-27,449.00,449.44,446.76,448.24,256750000,448.24 +1993-07-26,447.06,449.50,447.04,449.09,222580000,449.09 +1993-07-23,444.54,447.10,444.54,447.10,222170000,447.10 +1993-07-22,447.18,447.23,443.72,444.51,249630000,444.51 +1993-07-21,447.28,447.50,445.84,447.18,278590000,447.18 +1993-07-20,446.03,447.63,443.71,447.31,277420000,447.31 +1993-07-19,445.75,446.78,444.83,446.03,216370000,446.03 +1993-07-16,449.07,449.08,445.66,445.75,263100000,445.75 +1993-07-15,450.09,450.12,447.26,449.22,277810000,449.22 +1993-07-14,448.08,451.12,448.08,450.08,297430000,450.08 +1993-07-13,449.00,450.70,448.07,448.09,236720000,448.09 +1993-07-12,448.13,449.11,447.71,448.98,202310000,448.98 +1993-07-09,448.64,448.94,446.74,448.11,235210000,448.11 +1993-07-08,442.84,448.64,442.84,448.64,282910000,448.64 +1993-07-07,441.40,443.63,441.40,442.83,253170000,442.83 +1993-07-06,445.86,446.87,441.42,441.43,234810000,441.43 +1993-07-02,449.02,449.02,445.20,445.84,220750000,445.84 +1993-07-01,450.54,451.15,448.71,449.02,292040000,449.02 +1993-06-30,450.69,451.47,450.15,450.53,281120000,450.53 +1993-06-29,451.89,451.90,449.67,450.69,276310000,450.69 +1993-06-28,447.60,451.90,447.60,451.85,242090000,451.85 +1993-06-25,446.62,448.64,446.62,447.60,210430000,447.60 +1993-06-24,443.04,447.21,442.50,446.62,267450000,446.62 +1993-06-23,445.96,445.96,443.19,443.19,278260000,443.19 +1993-06-22,446.25,446.29,444.94,445.93,259530000,445.93 +1993-06-21,443.68,446.22,443.68,446.22,223650000,446.22 +1993-06-18,448.54,448.59,443.68,443.68,300500000,443.68 +1993-06-17,447.43,448.98,446.91,448.54,239810000,448.54 +1993-06-16,446.27,447.43,443.61,447.43,267500000,447.43 +1993-06-15,447.73,448.28,446.18,446.27,234110000,446.27 +1993-06-14,447.26,448.64,447.23,447.71,210440000,447.71 +1993-06-11,445.38,448.19,445.38,447.26,256750000,447.26 +1993-06-10,445.78,446.22,444.09,445.38,232600000,445.38 +1993-06-09,444.71,447.39,444.66,445.78,249030000,445.78 +1993-06-08,447.65,447.65,444.31,444.71,240640000,444.71 +1993-06-07,450.07,450.75,447.32,447.69,236920000,447.69 +1993-06-04,452.43,452.43,448.92,450.06,226440000,450.06 +1993-06-03,453.84,453.85,451.12,452.49,285570000,452.49 +1993-06-02,453.83,454.53,452.68,453.85,295560000,453.85 +1993-06-01,450.23,455.63,450.23,453.83,229690000,453.83 +1993-05-28,452.41,452.41,447.67,450.19,207820000,450.19 +1993-05-27,453.44,454.55,451.14,452.41,300810000,452.41 +1993-05-26,448.85,453.51,448.82,453.44,274230000,453.44 +1993-05-25,448.00,449.04,447.70,448.85,222090000,448.85 +1993-05-24,445.84,448.44,445.26,448.00,197990000,448.00 +1993-05-21,450.59,450.59,444.89,445.84,279120000,445.84 +1993-05-20,447.57,450.59,447.36,450.59,289160000,450.59 +1993-05-19,440.32,447.86,436.86,447.57,342420000,447.57 +1993-05-18,440.39,441.26,437.95,440.32,264300000,440.32 +1993-05-17,439.56,440.38,437.83,440.37,227580000,440.37 +1993-05-14,439.22,439.82,438.10,439.56,252910000,439.56 +1993-05-13,444.75,444.75,439.23,439.23,293920000,439.23 +1993-05-12,444.32,445.16,442.87,444.80,255680000,444.80 +1993-05-11,442.80,444.57,441.52,444.36,218480000,444.36 +1993-05-10,442.34,445.42,442.05,442.80,235580000,442.80 +1993-05-07,443.28,443.70,441.69,442.31,223570000,442.31 +1993-05-06,444.60,444.81,442.90,443.26,255460000,443.26 +1993-05-05,443.98,446.09,443.76,444.52,274240000,444.52 +1993-05-04,442.58,445.19,442.45,444.05,268310000,444.05 +1993-05-03,440.19,442.59,438.25,442.46,224970000,442.46 +1993-04-30,438.89,442.29,438.89,440.19,247460000,440.19 +1993-04-29,438.02,438.96,435.59,438.89,249760000,438.89 +1993-04-28,438.01,438.80,436.68,438.02,267980000,438.02 +1993-04-27,433.52,438.02,433.14,438.01,284140000,438.01 +1993-04-26,437.03,438.35,432.30,433.54,283260000,433.54 +1993-04-23,439.49,439.49,436.82,437.03,259810000,437.03 +1993-04-22,443.55,445.73,439.46,439.46,310390000,439.46 +1993-04-21,445.09,445.77,443.08,443.63,287300000,443.63 +1993-04-20,447.46,447.46,441.81,445.10,317990000,445.10 +1993-04-19,448.94,449.14,445.85,447.46,244710000,447.46 +1993-04-16,448.41,449.39,447.67,448.94,305160000,448.94 +1993-04-15,448.60,449.11,446.39,448.40,259500000,448.40 +1993-04-14,449.22,450.00,448.02,448.66,257340000,448.66 +1993-04-13,448.41,450.40,447.66,449.22,286690000,449.22 +1993-04-12,441.84,448.37,441.84,448.37,259690000,448.37 +1993-04-08,442.71,443.77,440.02,441.84,284370000,441.84 +1993-04-07,441.16,442.73,440.50,442.73,300000000,442.73 +1993-04-06,442.29,443.38,439.48,441.16,293680000,441.16 +1993-04-05,441.42,442.43,440.53,442.29,296080000,442.29 +1993-04-02,450.28,450.28,440.71,441.39,323330000,441.39 +1993-04-01,451.67,452.63,449.60,450.30,234530000,450.30 +1993-03-31,451.97,454.88,451.67,451.67,279190000,451.67 +1993-03-30,450.79,452.06,449.63,451.97,231190000,451.97 +1993-03-29,447.76,452.81,447.75,450.77,199970000,450.77 +1993-03-26,450.91,452.09,447.69,447.78,226650000,447.78 +1993-03-25,448.09,451.75,447.93,450.88,251530000,450.88 +1993-03-24,448.71,450.90,446.10,448.07,274300000,448.07 +1993-03-23,448.88,449.80,448.30,448.76,232730000,448.76 +1993-03-22,450.17,450.17,446.08,448.88,233190000,448.88 +1993-03-19,451.90,453.32,449.91,450.18,339660000,450.18 +1993-03-18,448.36,452.39,448.36,451.89,241180000,451.89 +1993-03-17,451.36,451.36,447.99,448.31,241270000,448.31 +1993-03-16,451.43,452.36,451.01,451.37,218820000,451.37 +1993-03-15,449.83,451.43,449.40,451.43,195930000,451.43 +1993-03-12,453.70,453.70,447.04,449.83,255420000,449.83 +1993-03-11,456.35,456.76,453.48,453.72,257060000,453.72 +1993-03-10,454.40,456.34,452.70,456.33,255610000,456.33 +1993-03-09,454.67,455.52,453.68,454.40,290670000,454.40 +1993-03-08,446.12,454.71,446.12,454.71,275290000,454.71 +1993-03-05,447.34,449.59,445.56,446.11,253480000,446.11 +1993-03-04,449.26,449.52,446.72,447.34,234220000,447.34 +1993-03-03,447.90,450.00,447.73,449.26,277380000,449.26 +1993-03-02,442.00,447.91,441.07,447.90,269750000,447.90 +1993-03-01,443.38,444.18,441.34,442.01,232460000,442.01 +1993-02-26,442.34,443.77,440.98,443.38,234160000,443.38 +1993-02-25,440.70,442.34,439.67,442.34,252860000,442.34 +1993-02-24,434.76,440.87,434.68,440.87,316750000,440.87 +1993-02-23,435.34,436.84,432.41,434.80,329060000,434.80 +1993-02-22,434.21,436.49,433.53,435.24,311570000,435.24 +1993-02-19,431.93,434.26,431.68,434.22,310700000,434.22 +1993-02-18,433.30,437.79,428.25,431.90,311180000,431.90 +1993-02-17,433.93,433.97,430.92,433.30,302210000,433.30 +1993-02-16,444.53,444.53,433.47,433.91,332850000,433.91 +1993-02-12,447.66,447.70,444.58,444.58,216810000,444.58 +1993-02-11,446.21,449.36,446.21,447.66,257190000,447.66 +1993-02-10,445.33,446.37,444.24,446.23,251910000,446.23 +1993-02-09,448.04,448.04,444.52,445.33,240410000,445.33 +1993-02-08,448.94,450.04,447.70,447.85,243400000,447.85 +1993-02-05,449.56,449.56,446.95,448.93,324710000,448.93 +1993-02-04,447.20,449.86,447.20,449.56,351140000,449.56 +1993-02-03,442.56,447.35,442.56,447.20,345410000,447.20 +1993-02-02,442.52,442.87,440.76,442.55,271560000,442.55 +1993-02-01,438.78,442.52,438.78,442.52,238570000,442.52 +1993-01-29,438.67,438.93,436.91,438.78,247200000,438.78 +1993-01-28,438.13,439.14,437.30,438.66,256980000,438.66 +1993-01-27,439.95,440.04,436.82,438.11,277020000,438.11 +1993-01-26,440.05,442.66,439.54,439.95,314110000,439.95 +1993-01-25,436.11,440.53,436.11,440.01,288740000,440.01 +1993-01-22,435.49,437.81,435.49,436.11,293320000,436.11 +1993-01-21,433.37,435.75,432.48,435.49,257620000,435.49 +1993-01-20,435.14,436.23,433.37,433.37,268790000,433.37 +1993-01-19,436.84,437.70,434.59,435.13,283240000,435.13 +1993-01-18,437.13,437.13,435.92,436.84,196030000,436.84 +1993-01-15,435.87,439.49,435.84,437.15,309720000,437.15 +1993-01-14,433.08,435.96,433.08,435.94,281040000,435.94 +1993-01-13,431.03,433.44,429.99,433.03,245360000,433.03 +1993-01-12,430.95,431.39,428.19,431.04,239410000,431.04 +1993-01-11,429.04,431.04,429.01,430.95,217150000,430.95 +1993-01-08,430.73,430.73,426.88,429.05,263470000,429.05 +1993-01-07,434.52,435.46,429.76,430.73,304850000,430.73 +1993-01-06,434.34,435.17,432.52,434.52,295240000,434.52 +1993-01-05,435.38,435.40,433.55,434.34,240350000,434.34 +1993-01-04,435.70,437.32,434.48,435.38,201210000,435.38 +1992-12-31,438.82,439.59,435.71,435.71,165910000,435.71 +1992-12-30,437.98,439.37,437.12,438.82,183930000,438.82 +1992-12-29,439.15,442.65,437.60,437.98,213660000,437.98 +1992-12-28,439.77,439.77,437.26,439.15,143970000,439.15 +1992-12-24,439.03,439.81,439.03,439.77,95240000,439.77 +1992-12-23,440.29,441.11,439.03,439.03,234140000,439.03 +1992-12-22,440.70,441.64,438.25,440.31,250430000,440.31 +1992-12-21,441.26,441.26,439.65,440.70,224680000,440.70 +1992-12-18,435.46,441.29,435.46,441.28,389300000,441.28 +1992-12-17,431.52,435.44,431.46,435.43,251640000,435.43 +1992-12-16,432.58,434.22,430.88,431.52,242130000,431.52 +1992-12-15,432.82,433.66,431.92,432.57,227770000,432.57 +1992-12-14,433.73,435.26,432.83,432.84,187040000,432.84 +1992-12-11,434.64,434.64,433.34,433.73,164510000,433.73 +1992-12-10,435.66,435.66,432.65,434.64,240640000,434.64 +1992-12-09,436.99,436.99,433.98,435.65,230060000,435.65 +1992-12-08,435.31,436.99,434.68,436.99,234330000,436.99 +1992-12-07,432.06,435.31,432.06,435.31,217700000,435.31 +1992-12-04,429.93,432.89,429.74,432.06,234960000,432.06 +1992-12-03,429.98,430.99,428.80,429.91,238050000,429.91 +1992-12-02,430.78,430.87,428.61,429.89,247010000,429.89 +1992-12-01,431.35,431.47,429.20,430.78,259050000,430.78 +1992-11-30,430.19,431.53,429.36,431.35,230150000,431.35 +1992-11-27,429.19,431.93,429.17,430.16,106020000,430.16 +1992-11-25,427.59,429.41,427.58,429.19,207700000,429.19 +1992-11-24,425.14,429.31,424.83,427.59,241540000,427.59 +1992-11-23,426.65,426.65,424.95,425.12,192530000,425.12 +1992-11-20,423.61,426.98,423.61,426.65,257460000,426.65 +1992-11-19,422.86,423.61,422.50,423.61,218720000,423.61 +1992-11-18,419.27,423.49,419.24,422.85,219080000,422.85 +1992-11-17,420.63,420.97,418.31,419.27,187660000,419.27 +1992-11-16,422.44,422.44,420.35,420.68,173600000,420.68 +1992-11-13,422.89,422.91,421.04,422.43,192950000,422.43 +1992-11-12,422.20,423.10,421.70,422.87,226010000,422.87 +1992-11-11,418.62,422.33,418.40,422.20,243750000,422.20 +1992-11-10,418.59,419.71,417.98,418.62,223180000,418.62 +1992-11-09,417.58,420.13,416.79,418.59,197560000,418.59 +1992-11-06,418.35,418.35,417.01,417.58,205310000,417.58 +1992-11-05,417.08,418.40,415.58,418.34,219730000,418.34 +1992-11-04,419.91,421.07,416.61,417.11,194400000,417.11 +1992-11-03,422.75,422.81,418.59,419.92,208140000,419.92 +1992-11-02,418.66,422.75,418.12,422.75,203280000,422.75 +1992-10-30,420.86,421.13,418.54,418.68,201930000,418.68 +1992-10-29,420.15,421.16,419.83,420.86,206550000,420.86 +1992-10-28,418.49,420.13,417.56,420.13,203910000,420.13 +1992-10-27,418.18,419.20,416.97,418.49,201730000,418.49 +1992-10-26,414.09,418.17,413.71,418.16,188060000,418.16 +1992-10-23,414.90,416.23,413.68,414.10,199060000,414.10 +1992-10-22,415.67,416.81,413.10,414.90,216400000,414.90 +1992-10-21,415.53,416.15,414.54,415.67,219100000,415.67 +1992-10-20,414.98,417.98,414.49,415.48,258210000,415.48 +1992-10-19,411.73,414.98,410.66,414.98,222150000,414.98 +1992-10-16,409.60,411.73,407.43,411.73,235920000,411.73 +1992-10-15,409.34,411.03,407.92,409.60,213590000,409.60 +1992-10-14,409.30,411.52,407.86,409.37,175900000,409.37 +1992-10-13,407.44,410.64,406.83,409.30,186650000,409.30 +1992-10-12,402.66,407.44,402.66,407.44,126670000,407.44 +1992-10-09,407.75,407.75,402.42,402.66,178940000,402.66 +1992-10-08,404.29,408.04,404.29,407.75,205000000,407.75 +1992-10-07,407.17,408.60,403.91,404.25,184380000,404.25 +1992-10-06,407.57,408.56,404.84,407.18,203500000,407.18 +1992-10-05,410.47,410.47,396.80,407.57,286550000,407.57 +1992-10-02,416.29,416.35,410.45,410.47,188030000,410.47 +1992-10-01,417.80,418.67,415.46,416.29,204780000,416.29 +1992-09-30,416.79,418.58,416.67,417.80,184470000,417.80 +1992-09-29,416.62,417.38,415.34,416.80,170750000,416.80 +1992-09-28,414.35,416.62,413.00,416.62,158760000,416.62 +1992-09-25,418.47,418.63,412.71,414.35,213670000,414.35 +1992-09-24,417.46,419.01,417.46,418.47,187960000,418.47 +1992-09-23,417.14,417.88,416.00,417.44,205700000,417.44 +1992-09-22,422.14,422.14,417.13,417.14,188810000,417.14 +1992-09-21,422.90,422.90,421.18,422.14,153940000,422.14 +1992-09-18,419.92,422.93,419.92,422.93,237440000,422.93 +1992-09-17,419.92,421.43,419.62,419.93,188270000,419.93 +1992-09-16,419.71,422.44,417.77,419.92,231450000,419.92 +1992-09-15,425.22,425.22,419.54,419.77,211860000,419.77 +1992-09-14,419.65,425.27,419.65,425.27,250940000,425.27 +1992-09-11,419.95,420.58,419.13,419.58,180560000,419.58 +1992-09-10,416.34,420.52,416.34,419.95,221990000,419.95 +1992-09-09,414.44,416.44,414.44,416.36,178800000,416.36 +1992-09-08,417.08,417.18,414.30,414.44,161440000,414.44 +1992-09-04,417.98,418.62,416.76,417.08,124380000,417.08 +1992-09-03,417.98,420.31,417.49,417.98,212500000,417.98 +1992-09-02,416.07,418.28,415.31,417.98,187480000,417.98 +1992-09-01,414.03,416.07,413.35,416.07,172680000,416.07 +1992-08-31,414.87,415.29,413.76,414.03,161480000,414.03 +1992-08-28,413.54,414.95,413.38,414.84,152260000,414.84 +1992-08-27,413.51,415.83,413.51,413.53,178600000,413.53 +1992-08-26,411.65,413.61,410.53,413.51,171860000,413.51 +1992-08-25,410.73,411.64,408.30,411.61,202760000,411.61 +1992-08-24,414.80,414.80,410.07,410.72,165690000,410.72 +1992-08-21,418.27,420.35,413.58,414.85,204800000,414.85 +1992-08-20,418.19,418.85,416.93,418.26,183420000,418.26 +1992-08-19,421.34,421.62,418.19,418.19,187070000,418.19 +1992-08-18,420.74,421.40,419.78,421.34,171750000,421.34 +1992-08-17,419.89,421.89,419.44,420.74,152830000,420.74 +1992-08-14,417.74,420.40,417.74,419.91,166820000,419.91 +1992-08-13,417.78,419.88,416.40,417.73,185750000,417.73 +1992-08-12,418.89,419.75,416.43,417.78,176560000,417.78 +1992-08-11,419.45,419.72,416.53,418.90,173940000,418.90 +1992-08-10,418.87,419.42,417.04,419.42,142480000,419.42 +1992-08-07,420.59,423.45,418.51,418.88,190640000,418.88 +1992-08-06,422.19,422.36,420.26,420.59,181440000,420.59 +1992-08-05,424.35,424.35,421.92,422.19,172450000,422.19 +1992-08-04,425.09,425.14,423.10,424.36,166760000,424.36 +1992-08-03,424.19,425.09,422.84,425.09,164460000,425.09 +1992-07-31,423.92,424.80,422.46,424.21,172920000,424.21 +1992-07-30,422.20,423.94,421.57,423.92,193410000,423.92 +1992-07-29,417.52,423.02,417.52,422.23,275850000,422.23 +1992-07-28,411.55,417.55,411.55,417.52,218060000,417.52 +1992-07-27,411.60,412.67,411.27,411.54,164700000,411.54 +1992-07-24,412.07,412.07,409.93,411.60,163890000,411.60 +1992-07-23,410.93,412.08,409.81,412.08,175490000,412.08 +1992-07-22,413.74,413.74,409.95,410.93,190160000,410.93 +1992-07-21,413.75,414.92,413.10,413.76,173760000,413.76 +1992-07-20,415.62,415.62,410.72,413.75,165760000,413.75 +1992-07-17,417.54,417.54,412.96,415.62,192120000,415.62 +1992-07-16,417.04,417.93,414.79,417.54,206900000,417.54 +1992-07-15,417.68,417.81,416.29,417.10,206560000,417.10 +1992-07-14,414.86,417.69,414.33,417.68,195570000,417.68 +1992-07-13,414.62,415.86,413.93,414.87,148870000,414.87 +1992-07-10,414.23,415.88,413.34,414.62,164770000,414.62 +1992-07-09,410.28,414.69,410.26,414.23,207980000,414.23 +1992-07-08,409.15,410.28,407.20,410.28,201030000,410.28 +1992-07-07,413.83,415.33,408.58,409.16,226050000,409.16 +1992-07-06,411.77,413.84,410.46,413.84,186920000,413.84 +1992-07-02,412.88,415.71,410.07,411.77,220200000,411.77 +1992-07-01,408.20,412.88,408.20,412.88,214250000,412.88 +1992-06-30,408.94,409.63,407.85,408.14,195530000,408.14 +1992-06-29,403.47,408.96,403.47,408.94,176750000,408.94 +1992-06-26,403.12,403.51,401.94,403.45,154430000,403.45 +1992-06-25,403.83,405.53,402.01,403.12,182960000,403.12 +1992-06-24,404.05,404.76,403.26,403.84,193870000,403.84 +1992-06-23,403.40,405.41,403.40,404.04,189190000,404.04 +1992-06-22,403.64,403.64,399.92,403.40,169370000,403.40 +1992-06-19,400.96,404.23,400.96,403.67,233460000,403.67 +1992-06-18,402.26,402.68,400.51,400.96,225600000,400.96 +1992-06-17,408.33,408.33,401.98,402.26,227760000,402.26 +1992-06-16,410.29,411.40,408.32,408.32,194400000,408.32 +1992-06-15,409.76,411.68,408.13,410.29,164080000,410.29 +1992-06-12,409.08,411.86,409.08,409.76,181860000,409.76 +1992-06-11,407.25,409.05,406.11,409.05,204780000,409.05 +1992-06-10,410.06,410.10,406.81,407.25,210750000,407.25 +1992-06-09,413.40,413.56,409.30,410.06,191170000,410.06 +1992-06-08,413.48,413.95,412.03,413.36,161240000,413.36 +1992-06-05,413.26,413.85,410.97,413.48,199050000,413.48 +1992-06-04,414.60,414.98,412.97,413.26,204450000,413.26 +1992-06-03,413.50,416.54,413.04,414.59,215770000,414.59 +1992-06-02,417.30,417.30,413.50,413.50,202560000,413.50 +1992-06-01,415.35,417.30,412.44,417.30,180800000,417.30 +1992-05-29,416.74,418.36,415.35,415.35,204010000,415.35 +1992-05-28,412.17,416.77,411.81,416.74,195300000,416.74 +1992-05-27,411.41,412.68,411.06,412.17,182240000,412.17 +1992-05-26,414.02,414.02,410.23,411.41,197700000,411.41 +1992-05-22,412.61,414.82,412.60,414.02,146710000,414.02 +1992-05-21,415.40,415.41,411.57,412.60,184860000,412.60 +1992-05-20,416.37,416.83,415.37,415.39,198180000,415.39 +1992-05-19,412.82,416.51,412.26,416.37,187130000,416.37 +1992-05-18,410.13,413.34,410.13,412.81,151380000,412.81 +1992-05-15,413.14,413.14,409.85,410.09,192740000,410.09 +1992-05-14,416.45,416.52,411.82,413.14,189150000,413.14 +1992-05-13,416.29,417.04,415.86,416.45,175850000,416.45 +1992-05-12,418.49,418.68,414.69,416.29,192870000,416.29 +1992-05-11,416.05,418.75,416.05,418.49,155730000,418.49 +1992-05-08,415.87,416.85,414.41,416.05,168720000,416.05 +1992-05-07,416.79,416.84,415.38,415.85,168980000,415.85 +1992-05-06,416.84,418.48,416.40,416.79,199950000,416.79 +1992-05-05,416.91,418.53,415.77,416.84,200550000,416.84 +1992-05-04,412.54,417.84,412.54,416.91,174540000,416.91 +1992-05-01,414.95,415.21,409.87,412.53,177390000,412.53 +1992-04-30,412.02,414.95,412.02,414.95,223590000,414.95 +1992-04-29,409.11,412.31,409.11,412.02,206780000,412.02 +1992-04-28,408.45,409.69,406.33,409.11,189220000,409.11 +1992-04-27,409.03,409.60,407.64,408.45,172900000,408.45 +1992-04-24,411.60,412.48,408.74,409.02,199310000,409.02 +1992-04-23,409.81,411.60,406.86,411.60,235860000,411.60 +1992-04-22,410.26,411.30,409.23,409.81,218850000,409.81 +1992-04-21,410.16,411.09,408.20,410.26,214460000,410.26 +1992-04-20,416.05,416.05,407.93,410.18,191980000,410.18 +1992-04-16,416.28,416.28,413.40,416.04,233230000,416.04 +1992-04-15,412.39,416.28,412.39,416.28,229710000,416.28 +1992-04-14,406.08,413.86,406.08,412.39,231130000,412.39 +1992-04-13,404.28,406.08,403.90,406.08,143140000,406.08 +1992-04-10,400.59,405.12,400.59,404.29,199530000,404.29 +1992-04-09,394.50,401.04,394.50,400.64,231430000,400.64 +1992-04-08,398.05,398.05,392.41,394.50,249280000,394.50 +1992-04-07,405.59,405.75,397.97,398.06,205210000,398.06 +1992-04-06,401.54,405.93,401.52,405.59,179910000,405.59 +1992-04-03,400.50,401.59,398.21,401.55,188580000,401.55 +1992-04-02,404.17,404.63,399.28,400.50,185210000,400.50 +1992-04-01,403.67,404.50,400.75,404.23,186530000,404.23 +1992-03-31,403.00,405.21,402.22,403.69,182360000,403.69 +1992-03-30,403.50,404.30,402.97,403.00,133990000,403.00 +1992-03-27,407.86,407.86,402.87,403.50,166140000,403.50 +1992-03-26,407.52,409.44,406.75,407.86,176720000,407.86 +1992-03-25,408.88,409.87,407.52,407.52,192650000,407.52 +1992-03-24,409.91,411.43,407.99,408.88,191610000,408.88 +1992-03-23,411.29,411.29,408.87,409.91,157050000,409.91 +1992-03-20,409.80,411.30,408.53,411.30,246210000,411.30 +1992-03-19,409.15,410.57,409.12,409.80,197310000,409.80 +1992-03-18,409.58,410.84,408.23,409.15,191720000,409.15 +1992-03-17,406.39,409.72,406.39,409.58,187250000,409.58 +1992-03-16,405.85,406.40,403.55,406.39,155950000,406.39 +1992-03-13,403.92,406.69,403.92,405.84,177900000,405.84 +1992-03-12,404.03,404.72,401.94,403.89,180310000,403.89 +1992-03-11,406.88,407.02,402.64,404.03,186330000,404.03 +1992-03-10,405.21,409.16,405.21,406.89,203000000,406.89 +1992-03-09,404.45,405.64,404.25,405.21,160650000,405.21 +1992-03-06,406.51,407.51,403.65,404.44,185190000,404.44 +1992-03-05,409.33,409.33,405.42,406.51,205770000,406.51 +1992-03-04,412.86,413.27,409.33,409.33,206860000,409.33 +1992-03-03,412.45,413.78,411.88,412.85,200890000,412.85 +1992-03-02,412.68,413.74,411.52,412.45,180380000,412.45 +1992-02-28,413.86,416.07,411.80,412.70,202320000,412.70 +1992-02-27,415.35,415.99,413.47,413.86,215110000,413.86 +1992-02-26,410.48,415.35,410.48,415.35,241500000,415.35 +1992-02-25,412.27,412.27,408.02,410.45,210350000,410.45 +1992-02-24,411.46,412.94,410.34,412.27,177540000,412.27 +1992-02-21,413.90,414.26,409.72,411.43,261650000,411.43 +1992-02-20,408.26,413.90,408.26,413.90,270650000,413.90 +1992-02-19,407.38,408.70,406.54,408.26,232970000,408.26 +1992-02-18,412.48,413.27,406.34,407.38,234300000,407.38 +1992-02-14,413.69,413.84,411.20,412.48,215110000,412.48 +1992-02-13,417.13,417.77,412.07,413.69,229360000,413.69 +1992-02-12,413.77,418.08,413.36,417.13,237630000,417.13 +1992-02-11,413.77,414.38,412.24,413.76,200130000,413.76 +1992-02-10,411.07,413.77,411.07,413.77,184410000,413.77 +1992-02-07,413.82,415.29,408.04,411.09,231120000,411.09 +1992-02-06,413.87,414.55,411.93,413.82,242050000,413.82 +1992-02-05,413.88,416.17,413.18,413.84,262440000,413.84 +1992-02-04,409.60,413.85,409.28,413.85,233680000,413.85 +1992-02-03,408.79,409.95,407.45,409.53,185290000,409.53 +1992-01-31,411.65,412.63,408.64,408.78,197620000,408.78 +1992-01-30,410.34,412.17,409.26,411.62,194680000,411.62 +1992-01-29,414.96,417.83,409.17,410.34,248940000,410.34 +1992-01-28,414.98,416.41,414.54,414.96,218400000,414.96 +1992-01-27,415.44,416.84,414.48,414.99,190970000,414.99 +1992-01-24,414.96,417.27,414.29,415.48,213630000,415.48 +1992-01-23,418.13,419.78,414.36,414.96,234580000,414.96 +1992-01-22,412.65,418.13,412.49,418.13,228140000,418.13 +1992-01-21,416.36,416.39,411.32,412.64,218750000,412.64 +1992-01-20,418.86,418.86,415.80,416.36,180900000,416.36 +1992-01-17,418.20,419.45,416.00,418.86,287370000,418.86 +1992-01-16,420.77,420.85,415.37,418.21,336240000,418.21 +1992-01-15,420.45,421.18,418.79,420.77,314830000,420.77 +1992-01-14,414.34,420.44,414.32,420.44,265900000,420.44 +1992-01-13,415.05,415.36,413.54,414.34,200270000,414.34 +1992-01-10,417.62,417.62,413.31,415.10,236130000,415.10 +1992-01-09,418.09,420.50,415.85,417.61,292350000,417.61 +1992-01-08,417.36,420.23,415.02,418.10,290750000,418.10 +1992-01-07,417.96,417.96,415.20,417.40,252780000,417.40 +1992-01-06,419.31,419.44,416.92,417.96,251210000,417.96 +1992-01-03,417.27,419.79,416.16,419.34,224270000,419.34 +1992-01-02,417.03,417.27,411.04,417.26,207570000,417.26 +1991-12-31,415.14,418.32,412.73,417.09,247080000,417.09 +1991-12-30,406.49,415.14,406.49,415.14,245600000,415.14 +1991-12-27,404.84,406.58,404.59,406.46,157950000,406.46 +1991-12-26,399.33,404.92,399.31,404.84,149230000,404.84 +1991-12-24,396.82,401.79,396.82,399.33,162640000,399.33 +1991-12-23,387.05,397.44,386.96,396.82,228900000,396.82 +1991-12-20,382.52,388.24,382.52,387.04,316140000,387.04 +1991-12-19,383.46,383.46,380.64,382.52,199330000,382.52 +1991-12-18,382.74,383.51,380.88,383.48,192410000,383.48 +1991-12-17,384.46,385.05,382.60,382.74,191310000,382.74 +1991-12-16,384.48,385.84,384.37,384.46,173080000,384.46 +1991-12-13,381.55,385.04,381.55,384.47,194470000,384.47 +1991-12-12,377.70,381.62,377.70,381.55,192950000,381.55 +1991-12-11,377.90,379.42,374.78,377.70,207430000,377.70 +1991-12-10,378.26,379.57,376.64,377.90,192920000,377.90 +1991-12-09,379.09,381.42,377.67,378.26,174760000,378.26 +1991-12-06,377.39,382.39,375.41,379.10,199160000,379.10 +1991-12-05,380.07,380.07,376.58,377.39,166350000,377.39 +1991-12-04,380.96,381.51,378.07,380.07,187960000,380.07 +1991-12-03,381.40,381.48,379.92,380.96,187230000,380.96 +1991-12-02,375.11,381.40,371.36,381.40,188410000,381.40 +1991-11-29,376.55,376.55,374.65,375.22,76830000,375.22 +1991-11-27,377.96,378.11,375.98,376.55,167720000,376.55 +1991-11-26,375.34,378.29,371.63,377.96,213810000,377.96 +1991-11-25,376.14,377.07,374.00,375.34,175870000,375.34 +1991-11-22,380.05,380.05,374.52,376.14,188240000,376.14 +1991-11-21,378.53,381.12,377.41,380.06,195130000,380.06 +1991-11-20,379.42,381.51,377.84,378.53,192760000,378.53 +1991-11-19,385.24,385.24,374.90,379.42,243880000,379.42 +1991-11-18,382.62,385.40,379.70,385.24,241940000,385.24 +1991-11-15,397.15,397.16,382.62,382.62,239690000,382.62 +1991-11-14,397.41,398.22,395.85,397.15,200030000,397.15 +1991-11-13,396.74,397.42,394.01,397.41,184480000,397.41 +1991-11-12,393.12,397.13,393.12,396.74,198610000,396.74 +1991-11-11,392.90,393.57,392.32,393.12,128920000,393.12 +1991-11-08,393.72,396.43,392.42,392.89,183260000,392.89 +1991-11-07,389.97,393.72,389.97,393.72,205480000,393.72 +1991-11-06,388.71,389.97,387.58,389.97,167440000,389.97 +1991-11-05,390.28,392.17,388.19,388.71,172090000,388.71 +1991-11-04,391.29,391.29,388.09,390.28,155660000,390.28 +1991-11-01,392.46,395.10,389.67,391.32,205780000,391.32 +1991-10-31,392.96,392.96,391.58,392.45,179680000,392.45 +1991-10-30,391.48,393.11,390.78,392.96,195400000,392.96 +1991-10-29,389.52,391.70,386.88,391.48,192810000,391.48 +1991-10-28,384.20,389.52,384.20,389.52,161630000,389.52 +1991-10-25,385.07,386.13,382.97,384.20,167310000,384.20 +1991-10-24,387.94,388.32,383.45,385.07,179040000,385.07 +1991-10-23,387.83,389.08,386.52,387.94,185390000,387.94 +1991-10-22,390.02,391.20,387.40,387.83,194160000,387.83 +1991-10-21,392.49,392.49,388.96,390.02,154140000,390.02 +1991-10-18,391.92,392.80,391.77,392.50,204090000,392.50 +1991-10-17,392.79,393.81,390.32,391.92,206030000,391.92 +1991-10-16,391.01,393.29,390.14,392.80,225380000,392.80 +1991-10-15,386.47,391.50,385.95,391.01,213540000,391.01 +1991-10-14,381.45,386.47,381.45,386.47,130120000,386.47 +1991-10-11,380.55,381.46,379.90,381.45,148850000,381.45 +1991-10-10,376.80,380.55,376.11,380.55,164240000,380.55 +1991-10-09,380.57,380.57,376.35,376.80,186710000,376.80 +1991-10-08,379.50,381.23,379.18,380.67,177120000,380.67 +1991-10-07,381.22,381.27,379.07,379.50,148430000,379.50 +1991-10-04,384.47,385.19,381.24,381.25,164000000,381.25 +1991-10-03,388.23,388.23,384.47,384.47,174360000,384.47 +1991-10-02,389.20,390.03,387.62,388.26,166380000,388.26 +1991-10-01,387.86,389.56,387.86,389.20,163570000,389.20 +1991-09-30,385.91,388.29,384.32,387.86,146780000,387.86 +1991-09-27,386.49,389.09,384.87,385.90,160660000,385.90 +1991-09-26,386.87,388.39,385.30,386.49,158980000,386.49 +1991-09-25,387.72,388.25,385.99,386.88,153910000,386.88 +1991-09-24,385.92,388.13,384.46,387.71,170350000,387.71 +1991-09-23,387.90,388.55,385.76,385.92,145940000,385.92 +1991-09-20,387.56,388.82,386.49,387.92,254520000,387.92 +1991-09-19,386.94,389.42,386.27,387.56,211010000,387.56 +1991-09-18,385.49,386.94,384.28,386.94,141340000,386.94 +1991-09-17,385.78,387.13,384.97,385.50,168340000,385.50 +1991-09-16,383.59,385.79,382.77,385.78,172560000,385.78 +1991-09-13,387.16,387.95,382.85,383.59,169630000,383.59 +1991-09-12,385.09,387.34,385.09,387.34,160420000,387.34 +1991-09-11,384.56,385.60,383.59,385.09,148000000,385.09 +1991-09-10,388.57,388.63,383.78,384.56,143390000,384.56 +1991-09-09,389.11,389.34,387.88,388.57,115100000,388.57 +1991-09-06,389.14,390.71,387.36,389.10,166560000,389.10 +1991-09-05,389.97,390.97,388.49,389.14,162380000,389.14 +1991-09-04,392.15,392.62,388.68,389.97,157520000,389.97 +1991-09-03,395.43,397.62,392.10,392.15,153600000,392.15 +1991-08-30,396.47,396.47,393.60,395.43,143440000,395.43 +1991-08-29,396.65,396.82,395.14,396.47,154150000,396.47 +1991-08-28,393.06,396.64,393.05,396.64,169890000,396.64 +1991-08-27,393.85,393.87,391.77,393.06,144670000,393.06 +1991-08-26,394.17,394.39,392.75,393.85,130570000,393.85 +1991-08-23,391.33,395.34,390.69,394.17,188870000,394.17 +1991-08-22,390.59,391.98,390.21,391.33,173090000,391.33 +1991-08-21,379.55,390.59,379.55,390.59,232690000,390.59 +1991-08-20,376.47,380.35,376.47,379.43,184260000,379.43 +1991-08-19,385.58,385.58,374.09,376.47,230350000,376.47 +1991-08-16,389.33,390.41,383.16,385.58,189480000,385.58 +1991-08-15,389.91,391.92,389.29,389.33,174690000,389.33 +1991-08-14,389.62,391.85,389.13,389.90,124230000,389.90 +1991-08-13,388.02,392.12,388.02,389.62,212760000,389.62 +1991-08-12,387.11,388.17,385.90,388.02,145440000,388.02 +1991-08-09,389.32,389.89,387.04,387.12,143740000,387.12 +1991-08-08,390.56,391.80,388.15,389.32,163890000,389.32 +1991-08-07,390.62,391.59,389.86,390.56,172220000,390.56 +1991-08-06,385.06,390.80,384.29,390.62,174460000,390.62 +1991-08-05,387.17,387.17,384.48,385.06,128050000,385.06 +1991-08-02,387.12,389.56,386.05,387.18,162270000,387.18 +1991-08-01,387.81,387.95,386.48,387.12,170610000,387.12 +1991-07-31,386.69,387.81,386.19,387.81,166830000,387.81 +1991-07-30,383.15,386.92,383.15,386.69,169010000,386.69 +1991-07-29,380.93,383.15,380.45,383.15,136000000,383.15 +1991-07-26,380.96,381.76,379.81,380.93,127760000,380.93 +1991-07-25,378.64,381.13,378.15,380.96,145800000,380.96 +1991-07-24,379.42,380.46,378.29,378.64,158700000,378.64 +1991-07-23,382.88,384.86,379.39,379.42,160190000,379.42 +1991-07-22,384.21,384.55,381.84,382.88,149050000,382.88 +1991-07-19,385.38,385.83,383.65,384.22,190700000,384.22 +1991-07-18,381.18,385.37,381.18,385.37,200930000,385.37 +1991-07-17,381.50,382.86,381.13,381.18,195460000,381.18 +1991-07-16,382.39,382.94,380.80,381.54,182990000,381.54 +1991-07-15,380.28,383.00,380.24,382.39,161750000,382.39 +1991-07-12,376.97,381.41,375.79,380.25,174770000,380.25 +1991-07-11,375.73,377.68,375.51,376.97,157930000,376.97 +1991-07-10,376.11,380.35,375.20,375.74,178290000,375.74 +1991-07-09,377.94,378.58,375.37,376.11,151820000,376.11 +1991-07-08,374.09,377.94,370.92,377.94,138330000,377.94 +1991-07-05,373.34,375.51,372.17,374.08,69910000,374.08 +1991-07-03,377.47,377.47,372.08,373.33,140580000,373.33 +1991-07-02,377.92,377.93,376.62,377.47,157290000,377.47 +1991-07-01,371.18,377.92,371.18,377.92,167480000,377.92 +1991-06-28,374.40,374.40,367.98,371.16,163770000,371.16 +1991-06-27,371.59,374.40,371.59,374.40,163080000,374.40 +1991-06-26,370.65,372.73,368.34,371.59,187170000,371.59 +1991-06-25,370.94,372.62,369.56,370.65,155710000,370.65 +1991-06-24,377.74,377.74,370.73,370.94,137940000,370.94 +1991-06-21,375.42,377.75,375.33,377.75,193310000,377.75 +1991-06-20,375.09,376.29,373.87,375.42,163980000,375.42 +1991-06-19,378.57,378.57,374.36,375.09,156440000,375.09 +1991-06-18,380.13,381.83,377.99,378.59,155200000,378.59 +1991-06-17,382.30,382.31,380.13,380.13,134230000,380.13 +1991-06-14,377.63,382.30,377.63,382.29,167950000,382.29 +1991-06-13,376.65,377.90,376.08,377.63,145650000,377.63 +1991-06-12,381.05,381.05,374.46,376.65,166140000,376.65 +1991-06-11,378.57,381.63,378.57,381.05,161610000,381.05 +1991-06-10,379.43,379.75,377.95,378.57,127720000,378.57 +1991-06-07,383.63,383.63,378.76,379.43,169570000,379.43 +1991-06-06,385.10,385.85,383.13,383.63,168260000,383.63 +1991-06-05,387.74,388.23,384.45,385.09,186560000,385.09 +1991-06-04,388.06,388.06,385.14,387.74,180450000,387.74 +1991-06-03,389.81,389.81,386.97,388.06,173990000,388.06 +1991-05-31,386.96,389.85,385.01,389.83,232040000,389.83 +1991-05-30,382.79,388.17,382.50,386.96,234440000,386.96 +1991-05-29,381.94,383.66,381.37,382.79,188450000,382.79 +1991-05-28,377.49,382.10,377.12,381.94,162350000,381.94 +1991-05-24,374.97,378.08,374.97,377.49,124640000,377.49 +1991-05-23,376.19,378.07,373.55,374.96,173080000,374.96 +1991-05-22,375.35,376.50,374.40,376.19,159310000,376.19 +1991-05-21,372.28,376.66,372.28,375.35,176620000,375.35 +1991-05-20,372.39,373.65,371.26,372.28,109510000,372.28 +1991-05-17,372.19,373.01,369.44,372.39,174210000,372.39 +1991-05-16,368.57,372.51,368.57,372.19,154460000,372.19 +1991-05-15,371.55,372.47,365.83,368.57,193110000,368.57 +1991-05-14,375.51,375.53,370.82,371.62,207890000,371.62 +1991-05-13,375.74,377.02,374.62,376.76,129620000,376.76 +1991-05-10,383.26,383.91,375.61,375.74,172730000,375.74 +1991-05-09,378.51,383.56,378.51,383.25,180460000,383.25 +1991-05-08,377.33,379.26,376.21,378.51,157240000,378.51 +1991-05-07,380.08,380.91,377.31,377.32,153290000,377.32 +1991-05-06,380.78,380.78,377.86,380.08,129110000,380.08 +1991-05-03,380.52,381.00,378.82,380.80,158150000,380.80 +1991-05-02,380.29,382.14,379.82,380.52,187090000,380.52 +1991-05-01,375.35,380.46,375.27,380.29,181900000,380.29 +1991-04-30,373.66,377.86,373.01,375.34,206230000,375.34 +1991-04-29,379.01,380.96,373.66,373.66,149860000,373.66 +1991-04-26,379.25,380.11,376.77,379.02,154550000,379.02 +1991-04-25,382.89,382.89,378.43,379.25,166940000,379.25 +1991-04-24,381.76,383.02,379.99,382.76,166800000,382.76 +1991-04-23,380.95,383.55,379.67,381.76,167840000,381.76 +1991-04-22,384.19,384.19,380.16,380.95,164410000,380.95 +1991-04-19,388.46,388.46,383.90,384.20,195520000,384.20 +1991-04-18,390.45,390.97,388.13,388.46,217410000,388.46 +1991-04-17,387.62,391.26,387.30,390.45,246930000,390.45 +1991-04-16,381.19,387.62,379.64,387.62,214480000,387.62 +1991-04-15,380.40,382.32,378.78,381.19,161800000,381.19 +1991-04-12,377.65,381.07,376.89,380.40,198610000,380.40 +1991-04-11,373.15,379.53,373.15,377.63,196570000,377.63 +1991-04-10,373.57,374.83,371.21,373.15,167940000,373.15 +1991-04-09,378.65,379.02,373.11,373.56,169940000,373.56 +1991-04-08,375.35,378.76,374.69,378.66,138580000,378.66 +1991-04-05,379.78,381.12,374.15,375.36,187410000,375.36 +1991-04-04,378.94,381.88,377.05,379.77,198120000,379.77 +1991-04-03,379.50,381.56,378.49,378.94,213720000,378.94 +1991-04-02,371.30,379.50,371.30,379.50,189530000,379.50 +1991-04-01,375.22,375.22,370.27,371.30,144010000,371.30 +1991-03-28,375.35,376.60,374.40,375.22,150750000,375.22 +1991-03-27,376.28,378.48,374.73,375.35,201830000,375.35 +1991-03-26,369.83,376.30,369.37,376.30,198720000,376.30 +1991-03-25,367.48,371.31,367.46,369.83,153920000,369.83 +1991-03-22,366.58,368.22,365.58,367.48,160890000,367.48 +1991-03-21,367.94,371.01,366.51,366.58,199830000,366.58 +1991-03-20,366.59,368.85,365.80,367.92,196810000,367.92 +1991-03-19,372.11,372.11,366.54,366.59,177070000,366.59 +1991-03-18,373.59,374.09,369.46,372.11,163100000,372.11 +1991-03-15,373.50,374.58,370.21,373.59,237650000,373.59 +1991-03-14,374.59,378.28,371.76,373.50,232070000,373.50 +1991-03-13,370.03,374.65,370.03,374.57,176000000,374.57 +1991-03-12,372.96,374.35,369.55,370.03,176440000,370.03 +1991-03-11,374.94,375.10,372.52,372.96,161600000,372.96 +1991-03-08,375.91,378.69,374.43,374.95,206850000,374.95 +1991-03-07,376.16,377.49,375.58,375.91,197060000,375.91 +1991-03-06,376.72,379.66,375.02,376.17,262290000,376.17 +1991-03-05,369.33,377.89,369.33,376.72,253700000,376.72 +1991-03-04,370.47,371.99,369.07,369.33,199830000,369.33 +1991-03-01,367.07,370.47,363.73,370.47,221510000,370.47 +1991-02-28,367.73,369.91,365.95,367.07,223010000,367.07 +1991-02-27,362.81,368.38,362.81,367.74,211410000,367.74 +1991-02-26,367.26,367.26,362.19,362.81,164170000,362.81 +1991-02-25,365.65,370.19,365.16,367.26,193820000,367.26 +1991-02-22,364.97,370.96,364.23,365.65,218760000,365.65 +1991-02-21,365.14,366.79,364.50,364.97,180770000,364.97 +1991-02-20,369.37,369.37,364.38,365.14,185680000,365.14 +1991-02-19,369.06,370.11,367.05,369.39,189900000,369.39 +1991-02-15,364.23,369.49,364.23,369.06,228480000,369.06 +1991-02-14,369.02,370.26,362.77,364.22,230750000,364.22 +1991-02-13,365.50,369.49,364.64,369.02,209960000,369.02 +1991-02-12,368.58,370.54,365.50,365.50,256160000,365.50 +1991-02-11,359.36,368.58,359.32,368.58,265350000,368.58 +1991-02-08,356.52,359.35,356.02,359.35,187830000,359.35 +1991-02-07,358.07,363.43,355.53,356.52,292190000,356.52 +1991-02-06,351.26,358.07,349.58,358.07,276940000,358.07 +1991-02-05,348.34,351.84,347.21,351.26,290570000,351.26 +1991-02-04,343.05,348.71,342.96,348.34,250750000,348.34 +1991-02-01,343.91,344.90,340.37,343.05,246670000,343.05 +1991-01-31,340.92,343.93,340.47,343.93,204520000,343.93 +1991-01-30,335.80,340.91,335.71,340.91,226790000,340.91 +1991-01-29,336.03,336.03,334.26,335.84,155740000,335.84 +1991-01-28,336.06,337.41,335.81,336.03,141270000,336.03 +1991-01-25,334.78,336.92,334.20,336.07,194350000,336.07 +1991-01-24,330.21,335.83,330.19,334.78,223150000,334.78 +1991-01-23,328.30,331.04,327.93,330.21,168620000,330.21 +1991-01-22,331.06,331.26,327.83,328.31,177060000,328.31 +1991-01-21,332.23,332.23,328.87,331.06,136290000,331.06 +1991-01-18,327.93,332.23,327.08,332.23,226770000,332.23 +1991-01-17,316.25,327.97,316.25,327.97,319080000,327.97 +1991-01-16,313.73,316.94,312.94,316.17,134560000,316.17 +1991-01-15,312.49,313.73,311.84,313.73,110000000,313.73 +1991-01-14,315.23,315.23,309.35,312.49,120830000,312.49 +1991-01-11,314.53,315.24,313.59,315.23,123050000,315.23 +1991-01-10,311.51,314.77,311.51,314.53,124510000,314.53 +1991-01-09,314.90,320.73,310.93,311.49,191100000,311.49 +1991-01-08,315.44,316.97,313.79,314.90,143390000,314.90 +1991-01-07,320.97,320.97,315.44,315.44,130610000,315.44 +1991-01-04,321.91,322.35,318.87,321.00,140820000,321.00 +1991-01-03,326.46,326.53,321.90,321.91,141450000,321.91 +1991-01-02,330.20,330.75,326.45,326.45,126280000,326.45 +1990-12-31,328.71,330.23,327.50,330.22,114130000,330.22 +1990-12-28,328.29,328.72,327.24,328.72,111030000,328.72 +1990-12-27,330.85,331.04,328.23,328.29,102900000,328.29 +1990-12-26,329.89,331.69,329.89,330.85,78730000,330.85 +1990-12-24,331.74,331.74,329.16,329.90,57200000,329.90 +1990-12-21,330.12,332.47,330.12,331.75,233400000,331.75 +1990-12-20,330.20,330.74,326.94,330.12,174700000,330.12 +1990-12-19,330.04,330.80,329.39,330.20,180380000,330.20 +1990-12-18,326.02,330.43,325.75,330.05,176460000,330.05 +1990-12-17,326.82,326.82,324.46,326.02,118560000,326.02 +1990-12-14,329.34,329.34,325.16,326.82,151010000,326.82 +1990-12-13,330.14,330.58,328.77,329.34,162110000,329.34 +1990-12-12,326.44,330.36,326.44,330.19,182270000,330.19 +1990-12-11,328.88,328.88,325.65,326.44,145330000,326.44 +1990-12-10,327.75,328.97,326.15,328.89,138650000,328.89 +1990-12-07,329.09,329.39,326.39,327.75,164950000,327.75 +1990-12-06,329.94,333.98,328.37,329.07,256380000,329.07 +1990-12-05,326.36,329.92,325.66,329.92,205820000,329.92 +1990-12-04,324.11,326.77,321.97,326.35,185820000,326.35 +1990-12-03,322.23,324.90,322.23,324.10,177000000,324.10 +1990-11-30,316.42,323.02,315.42,322.22,192350000,322.22 +1990-11-29,317.95,317.95,315.03,316.42,140920000,316.42 +1990-11-28,318.11,319.96,317.62,317.95,145490000,317.95 +1990-11-27,316.51,318.69,315.80,318.10,147590000,318.10 +1990-11-26,315.08,316.51,311.48,316.51,131540000,316.51 +1990-11-23,316.03,317.30,315.06,315.10,63350000,315.10 +1990-11-21,315.31,316.15,312.42,316.03,140660000,316.03 +1990-11-20,319.34,319.34,315.31,315.31,161170000,315.31 +1990-11-19,317.15,319.39,317.15,319.34,140950000,319.34 +1990-11-16,317.02,318.80,314.99,317.12,165440000,317.12 +1990-11-15,320.40,320.40,316.13,317.02,151370000,317.02 +1990-11-14,317.66,321.70,317.23,320.40,179310000,320.40 +1990-11-13,319.48,319.48,317.26,317.67,160240000,317.67 +1990-11-12,313.74,319.77,313.73,319.48,161390000,319.48 +1990-11-09,307.61,313.78,307.61,313.74,145160000,313.74 +1990-11-08,306.01,309.77,305.03,307.61,155570000,307.61 +1990-11-07,311.62,311.62,305.79,306.01,149130000,306.01 +1990-11-06,314.59,314.76,311.43,311.62,142660000,311.62 +1990-11-05,311.85,314.61,311.41,314.59,147510000,314.59 +1990-11-02,307.02,311.94,306.88,311.85,168700000,311.85 +1990-11-01,303.99,307.27,301.61,307.02,159270000,307.02 +1990-10-31,304.06,305.70,302.33,304.00,156060000,304.00 +1990-10-30,301.88,304.36,299.44,304.06,153450000,304.06 +1990-10-29,304.74,307.41,300.69,301.88,133980000,301.88 +1990-10-26,310.17,310.17,304.71,304.71,130190000,304.71 +1990-10-25,312.60,313.71,309.70,310.17,141460000,310.17 +1990-10-24,312.36,313.51,310.74,312.60,149290000,312.60 +1990-10-23,314.76,315.06,312.06,312.36,146300000,312.36 +1990-10-22,312.48,315.83,310.47,314.76,152650000,314.76 +1990-10-19,305.74,312.48,305.74,312.48,221480000,312.48 +1990-10-18,298.75,305.74,298.75,305.74,204110000,305.74 +1990-10-17,298.92,301.50,297.79,298.76,161260000,298.76 +1990-10-16,303.23,304.34,298.12,298.92,149570000,298.92 +1990-10-15,300.03,304.79,296.41,303.23,164980000,303.23 +1990-10-12,295.45,301.68,295.22,300.03,187940000,300.03 +1990-10-11,300.39,301.45,294.51,295.46,180060000,295.46 +1990-10-10,305.09,306.43,299.21,300.39,169190000,300.39 +1990-10-09,313.46,313.46,305.09,305.10,145610000,305.10 +1990-10-08,311.50,315.03,311.50,313.48,99470000,313.48 +1990-10-05,312.69,314.79,305.76,311.50,153380000,311.50 +1990-10-04,311.40,313.40,308.59,312.69,145410000,312.69 +1990-10-03,315.21,316.26,310.70,311.40,135490000,311.40 +1990-10-02,314.94,319.69,314.94,315.21,188360000,315.21 +1990-10-01,306.10,314.94,306.10,314.94,202210000,314.94 +1990-09-28,300.97,306.05,295.98,306.05,201010000,306.05 +1990-09-27,305.06,307.47,299.10,300.97,182690000,300.97 +1990-09-26,308.26,308.28,303.05,305.06,155570000,305.06 +1990-09-25,305.46,308.27,304.23,308.26,155940000,308.26 +1990-09-24,311.30,311.30,303.58,304.59,164070000,304.59 +1990-09-21,311.53,312.17,307.98,311.32,201050000,311.32 +1990-09-20,316.60,316.60,310.55,311.48,145100000,311.48 +1990-09-19,318.60,319.35,316.25,316.60,147530000,316.60 +1990-09-18,317.77,318.85,314.27,318.60,141130000,318.60 +1990-09-17,316.83,318.05,315.21,317.77,110600000,317.77 +1990-09-14,318.65,318.65,314.76,316.83,133390000,316.83 +1990-09-13,322.51,322.51,318.02,318.65,123390000,318.65 +1990-09-12,321.04,322.55,319.60,322.54,129890000,322.54 +1990-09-11,321.63,322.18,319.60,321.04,113220000,321.04 +1990-09-10,323.42,326.53,320.31,321.63,119730000,321.63 +1990-09-07,320.46,324.18,319.71,323.40,123800000,323.40 +1990-09-06,324.39,324.39,319.37,320.46,125620000,320.46 +1990-09-05,323.09,324.52,320.99,324.39,120610000,324.39 +1990-09-04,322.56,323.09,319.11,323.09,92940000,323.09 +1990-08-31,318.71,322.57,316.59,322.56,96480000,322.56 +1990-08-30,324.19,324.57,317.82,318.71,120890000,318.71 +1990-08-29,321.34,325.83,320.87,324.19,134240000,324.19 +1990-08-28,321.44,322.20,320.25,321.34,127660000,321.34 +1990-08-27,311.55,323.11,311.55,321.44,160150000,321.44 +1990-08-24,307.06,311.65,306.18,311.51,199040000,311.51 +1990-08-23,316.55,316.55,306.56,307.06,250440000,307.06 +1990-08-22,321.86,324.15,316.55,316.55,175550000,316.55 +1990-08-21,328.51,328.51,318.78,321.86,194630000,321.86 +1990-08-20,327.83,329.90,327.07,328.51,129630000,328.51 +1990-08-17,332.36,332.36,324.63,327.83,212560000,327.83 +1990-08-16,340.06,340.06,332.39,332.39,138850000,332.39 +1990-08-15,339.39,341.92,339.38,340.06,136710000,340.06 +1990-08-14,338.84,340.96,337.19,339.39,130320000,339.39 +1990-08-13,335.39,338.88,332.02,338.84,122820000,338.84 +1990-08-10,339.90,339.90,334.22,335.52,145340000,335.52 +1990-08-09,338.35,340.56,337.56,339.94,155810000,339.94 +1990-08-08,334.83,339.21,334.83,338.35,190400000,338.35 +1990-08-07,334.43,338.63,332.22,334.83,231580000,334.83 +1990-08-06,344.86,344.86,333.27,334.43,240400000,334.43 +1990-08-03,351.48,351.48,338.20,344.86,295880000,344.86 +1990-08-02,355.52,355.52,349.73,351.48,253090000,351.48 +1990-08-01,356.15,357.35,353.82,355.52,178260000,355.52 +1990-07-31,355.55,357.54,353.91,356.15,175380000,356.15 +1990-07-30,353.44,355.55,351.15,355.55,146470000,355.55 +1990-07-27,355.90,355.94,352.14,353.44,149070000,353.44 +1990-07-26,357.09,357.47,353.95,355.91,155040000,355.91 +1990-07-25,355.79,357.52,354.80,357.09,163530000,357.09 +1990-07-24,355.31,356.09,351.46,355.79,181920000,355.79 +1990-07-23,361.61,361.61,350.09,355.31,209030000,355.31 +1990-07-20,365.32,366.64,361.58,361.61,177810000,361.61 +1990-07-19,364.22,365.32,361.29,365.32,161990000,365.32 +1990-07-18,367.52,367.52,362.95,364.22,168760000,364.22 +1990-07-17,368.95,369.40,364.99,367.52,176790000,367.52 +1990-07-16,367.31,369.78,367.31,368.95,149430000,368.95 +1990-07-13,365.45,369.68,365.45,367.31,215600000,367.31 +1990-07-12,361.23,365.46,360.57,365.44,213180000,365.44 +1990-07-11,356.49,361.23,356.49,361.23,162220000,361.23 +1990-07-10,359.52,359.74,356.41,356.49,147630000,356.49 +1990-07-09,358.42,360.05,358.11,359.52,119390000,359.52 +1990-07-06,355.69,359.02,354.64,358.42,111730000,358.42 +1990-07-05,360.16,360.16,354.86,355.68,128320000,355.68 +1990-07-03,359.54,360.73,359.44,360.16,130050000,360.16 +1990-07-02,358.02,359.58,357.54,359.54,130200000,359.54 +1990-06-29,357.64,359.09,357.30,358.02,145510000,358.02 +1990-06-28,355.16,357.63,355.16,357.63,136120000,357.63 +1990-06-27,352.06,355.89,351.23,355.14,146620000,355.14 +1990-06-26,352.32,356.09,351.85,352.06,141420000,352.06 +1990-06-25,355.42,356.41,351.91,352.31,133100000,352.31 +1990-06-22,360.52,363.20,355.31,355.43,172570000,355.43 +1990-06-21,359.10,360.88,357.63,360.47,138570000,360.47 +1990-06-20,358.47,359.91,357.00,359.10,137420000,359.10 +1990-06-19,356.88,358.90,356.18,358.47,134930000,358.47 +1990-06-18,362.91,362.91,356.88,356.88,133470000,356.88 +1990-06-15,362.89,363.14,360.71,362.91,205130000,362.91 +1990-06-14,364.90,364.90,361.64,362.90,135770000,362.90 +1990-06-13,366.25,367.09,364.51,364.90,158910000,364.90 +1990-06-12,361.63,367.27,361.15,366.25,157100000,366.25 +1990-06-11,358.71,361.63,357.70,361.63,119550000,361.63 +1990-06-08,363.15,363.49,357.68,358.71,142600000,358.71 +1990-06-07,365.92,365.92,361.60,363.15,160360000,363.15 +1990-06-06,366.64,366.64,364.42,364.96,164030000,364.96 +1990-06-05,367.40,368.78,365.49,366.64,199720000,366.64 +1990-06-04,363.16,367.85,362.43,367.40,175520000,367.40 +1990-06-01,361.26,363.52,361.21,363.16,187860000,363.16 +1990-05-31,360.86,361.84,360.23,361.23,165690000,361.23 +1990-05-30,360.65,362.26,360.00,360.86,199540000,360.86 +1990-05-29,354.58,360.65,354.55,360.65,137410000,360.65 +1990-05-25,358.41,358.41,354.32,354.58,120250000,354.58 +1990-05-24,359.29,359.56,357.87,358.41,155140000,358.41 +1990-05-23,358.43,359.29,356.99,359.29,172330000,359.29 +1990-05-22,358.00,360.50,356.09,358.43,203350000,358.43 +1990-05-21,354.64,359.07,353.78,358.00,166280000,358.00 +1990-05-18,354.47,354.64,352.52,354.64,162520000,354.64 +1990-05-17,354.00,356.92,354.00,354.47,164770000,354.47 +1990-05-16,354.27,354.68,351.95,354.00,159810000,354.00 +1990-05-15,354.75,355.09,352.84,354.28,165730000,354.28 +1990-05-14,352.00,358.41,351.95,354.75,225410000,354.75 +1990-05-11,343.82,352.31,343.82,352.00,234040000,352.00 +1990-05-10,342.87,344.98,342.77,343.82,158460000,343.82 +1990-05-09,342.01,343.08,340.90,342.86,152220000,342.86 +1990-05-08,340.53,342.03,340.17,342.01,144230000,342.01 +1990-05-07,338.39,341.07,338.11,340.53,132760000,340.53 +1990-05-04,335.58,338.46,335.17,338.39,140550000,338.39 +1990-05-03,334.48,337.02,334.47,335.57,145560000,335.57 +1990-05-02,332.25,334.48,332.15,334.48,141610000,334.48 +1990-05-01,330.80,332.83,330.80,332.25,149020000,332.25 +1990-04-30,329.11,331.31,327.76,330.80,122750000,330.80 +1990-04-27,332.92,333.57,328.71,329.11,130630000,329.11 +1990-04-26,332.03,333.76,330.67,332.92,141330000,332.92 +1990-04-25,330.36,332.74,330.36,332.03,133480000,332.03 +1990-04-24,331.05,332.97,329.71,330.36,137360000,330.36 +1990-04-23,335.12,335.12,330.09,331.05,136150000,331.05 +1990-04-20,338.09,338.52,333.41,335.12,174260000,335.12 +1990-04-19,340.72,340.72,337.59,338.09,152930000,338.09 +1990-04-18,344.68,345.33,340.11,340.72,147130000,340.72 +1990-04-17,344.74,345.19,342.06,344.68,127990000,344.68 +1990-04-16,344.34,347.30,344.10,344.74,142810000,344.74 +1990-04-12,341.92,344.79,341.91,344.34,142470000,344.34 +1990-04-11,342.07,343.00,341.26,341.92,141080000,341.92 +1990-04-10,341.37,342.41,340.62,342.07,136020000,342.07 +1990-04-09,340.08,341.83,339.88,341.37,114970000,341.37 +1990-04-06,340.73,341.73,338.94,340.08,137490000,340.08 +1990-04-05,341.09,342.85,340.63,340.73,144170000,340.73 +1990-04-04,343.64,344.12,340.40,341.09,159530000,341.09 +1990-04-03,338.70,343.76,338.70,343.64,154310000,343.64 +1990-04-02,339.94,339.94,336.33,338.70,124360000,338.70 +1990-03-30,340.79,341.41,338.21,339.94,139340000,339.94 +1990-03-29,342.00,342.07,339.77,340.79,132190000,340.79 +1990-03-28,341.50,342.58,340.60,342.00,142300000,342.00 +1990-03-27,337.63,341.50,337.03,341.50,131610000,341.50 +1990-03-26,337.22,339.74,337.22,337.63,116110000,337.63 +1990-03-23,335.69,337.58,335.69,337.22,132070000,337.22 +1990-03-22,339.74,339.77,333.62,335.69,175930000,335.69 +1990-03-21,341.57,342.34,339.56,339.74,130990000,339.74 +1990-03-20,343.53,344.49,340.87,341.57,177320000,341.57 +1990-03-19,341.91,343.76,339.12,343.53,142300000,343.53 +1990-03-16,338.07,341.91,338.07,341.91,222520000,341.91 +1990-03-15,336.87,338.91,336.87,338.07,144410000,338.07 +1990-03-14,336.00,337.63,334.93,336.87,145060000,336.87 +1990-03-13,338.67,338.67,335.36,336.00,145440000,336.00 +1990-03-12,337.93,339.08,336.14,338.67,114790000,338.67 +1990-03-09,340.12,340.27,336.84,337.93,150410000,337.93 +1990-03-08,336.95,340.66,336.95,340.27,170900000,340.27 +1990-03-07,337.93,338.84,336.33,336.95,163580000,336.95 +1990-03-06,333.74,337.93,333.57,337.93,143640000,337.93 +1990-03-05,335.54,336.38,333.49,333.74,140110000,333.74 +1990-03-02,332.74,335.54,332.72,335.54,164330000,335.54 +1990-03-01,331.89,334.40,331.08,332.74,157930000,332.74 +1990-02-28,330.26,333.48,330.16,331.89,184400000,331.89 +1990-02-27,328.68,331.94,328.47,330.26,152590000,330.26 +1990-02-26,324.16,328.67,323.98,328.67,148900000,328.67 +1990-02-23,325.70,326.15,322.10,324.15,148490000,324.15 +1990-02-22,327.67,330.98,325.70,325.70,184320000,325.70 +1990-02-21,327.91,328.17,324.47,327.67,159240000,327.67 +1990-02-20,332.72,332.72,326.26,327.99,147300000,327.99 +1990-02-16,334.89,335.64,332.42,332.72,166840000,332.72 +1990-02-15,332.01,335.21,331.61,334.89,174620000,334.89 +1990-02-14,331.02,333.20,330.64,332.01,138530000,332.01 +1990-02-13,330.08,331.61,327.92,331.02,144490000,331.02 +1990-02-12,333.62,333.62,329.97,330.08,118390000,330.08 +1990-02-09,333.02,334.60,332.41,333.62,146910000,333.62 +1990-02-08,333.75,336.09,332.00,332.96,176240000,332.96 +1990-02-07,329.66,333.76,326.55,333.75,186710000,333.75 +1990-02-06,331.85,331.86,328.20,329.66,134070000,329.66 +1990-02-05,330.92,332.16,330.45,331.85,130950000,331.85 +1990-02-02,328.79,332.10,328.09,330.92,164400000,330.92 +1990-02-01,329.08,329.86,327.76,328.79,154580000,328.79 +1990-01-31,322.98,329.08,322.98,329.08,189660000,329.08 +1990-01-30,325.20,325.73,319.83,322.98,186030000,322.98 +1990-01-29,325.80,327.31,321.79,325.20,150770000,325.20 +1990-01-26,326.09,328.58,321.44,325.80,198190000,325.80 +1990-01-25,330.26,332.33,325.33,326.08,172270000,326.08 +1990-01-24,331.61,331.71,324.17,330.26,207830000,330.26 +1990-01-23,330.38,332.76,328.67,331.61,179300000,331.61 +1990-01-22,339.14,339.96,330.28,330.38,148380000,330.38 +1990-01-19,338.19,340.48,338.19,339.15,185590000,339.15 +1990-01-18,337.40,338.38,333.98,338.19,178590000,338.19 +1990-01-17,340.77,342.01,336.26,337.40,170470000,337.40 +1990-01-16,337.00,340.75,333.37,340.75,186070000,340.75 +1990-01-15,339.93,339.94,336.57,337.00,140590000,337.00 +1990-01-12,348.53,348.53,339.49,339.93,183880000,339.93 +1990-01-11,347.31,350.14,347.31,348.53,154390000,348.53 +1990-01-10,349.62,349.62,344.32,347.31,175990000,347.31 +1990-01-09,353.83,354.17,349.61,349.62,155210000,349.62 +1990-01-08,352.20,354.24,350.54,353.79,140110000,353.79 +1990-01-05,355.67,355.67,351.35,352.20,158530000,352.20 +1990-01-04,358.76,358.76,352.89,355.67,177000000,355.67 +1990-01-03,359.69,360.59,357.89,358.76,192330000,358.76 +1990-01-02,353.40,359.69,351.98,359.69,162070000,359.69 +1989-12-29,350.68,353.41,350.67,353.40,145940000,353.40 +1989-12-28,348.80,350.68,348.76,350.67,128030000,350.67 +1989-12-27,346.84,349.12,346.81,348.81,133740000,348.81 +1989-12-26,347.42,347.87,346.53,346.81,77610000,346.81 +1989-12-22,344.78,347.53,344.76,347.42,120980000,347.42 +1989-12-21,342.84,345.03,342.84,344.78,175150000,344.78 +1989-12-20,342.50,343.70,341.79,342.84,176520000,342.84 +1989-12-19,343.69,343.74,339.63,342.46,186060000,342.46 +1989-12-18,350.14,350.88,342.19,343.69,184750000,343.69 +1989-12-15,350.97,351.86,346.08,350.14,240390000,350.14 +1989-12-14,352.74,352.75,350.08,350.93,178700000,350.93 +1989-12-13,351.70,354.10,351.65,352.75,184660000,352.75 +1989-12-12,348.56,352.21,348.41,351.73,176820000,351.73 +1989-12-11,348.68,348.74,346.39,348.56,147130000,348.56 +1989-12-08,347.60,349.60,347.59,348.69,144910000,348.69 +1989-12-07,348.55,349.84,346.00,347.59,161980000,347.59 +1989-12-06,349.58,349.94,347.91,348.55,145850000,348.55 +1989-12-05,351.41,352.24,349.58,349.58,154640000,349.58 +1989-12-04,350.63,351.51,350.32,351.41,150360000,351.41 +1989-12-01,346.01,351.88,345.99,350.63,199200000,350.63 +1989-11-30,343.60,346.50,343.57,345.99,153200000,345.99 +1989-11-29,345.77,345.77,343.36,343.60,147270000,343.60 +1989-11-28,345.61,346.33,344.41,345.77,153770000,345.77 +1989-11-27,343.98,346.24,343.97,345.61,149390000,345.61 +1989-11-24,341.92,344.24,341.91,343.97,86290000,343.97 +1989-11-22,339.59,341.92,339.59,341.91,145730000,341.91 +1989-11-21,339.35,340.21,337.53,339.59,147900000,339.59 +1989-11-20,341.61,341.90,338.29,339.35,128170000,339.35 +1989-11-17,340.58,342.24,339.85,341.61,151020000,341.61 +1989-11-16,340.54,341.02,338.93,340.58,148370000,340.58 +1989-11-15,338.00,340.54,337.14,340.54,155130000,340.54 +1989-11-14,339.55,340.41,337.06,337.99,143170000,337.99 +1989-11-13,339.08,340.51,337.93,339.55,140750000,339.55 +1989-11-10,336.57,339.10,336.57,339.10,131800000,339.10 +1989-11-09,338.15,338.73,336.21,336.57,143390000,336.57 +1989-11-08,334.81,339.41,334.81,338.15,170150000,338.15 +1989-11-07,332.61,334.82,330.91,334.81,163000000,334.81 +1989-11-06,337.61,337.62,332.33,332.61,135480000,332.61 +1989-11-03,338.48,339.67,337.37,337.62,131500000,337.62 +1989-11-02,341.20,341.20,336.61,338.48,152440000,338.48 +1989-11-01,340.36,341.74,339.79,341.20,154240000,341.20 +1989-10-31,335.08,340.86,335.07,340.36,176100000,340.36 +1989-10-30,335.06,337.04,334.48,335.07,126630000,335.07 +1989-10-27,337.93,337.97,333.26,335.06,170330000,335.06 +1989-10-26,342.50,342.50,337.20,337.93,175240000,337.93 +1989-10-25,343.70,344.51,341.96,342.50,155650000,342.50 +1989-10-24,344.83,344.83,335.13,343.70,237960000,343.70 +1989-10-23,347.11,348.19,344.22,344.83,135860000,344.83 +1989-10-20,347.04,347.57,344.47,347.16,164830000,347.16 +1989-10-19,341.76,348.82,341.76,347.13,198120000,347.13 +1989-10-18,341.16,343.39,339.03,341.76,166900000,341.76 +1989-10-17,342.84,342.85,335.69,341.16,224070000,341.16 +1989-10-16,333.65,342.87,327.12,342.85,416290000,342.85 +1989-10-13,355.39,355.53,332.81,333.65,251170000,333.65 +1989-10-12,356.99,356.99,354.91,355.39,160120000,355.39 +1989-10-11,359.13,359.13,356.08,356.99,164070000,356.99 +1989-10-10,359.80,360.44,358.11,359.13,147560000,359.13 +1989-10-09,358.76,359.86,358.06,359.80,86810000,359.80 +1989-10-06,356.97,359.05,356.97,358.78,172520000,358.78 +1989-10-05,356.94,357.63,356.28,356.97,177890000,356.97 +1989-10-04,354.71,357.49,354.71,356.94,194590000,356.94 +1989-10-03,350.87,354.73,350.85,354.71,182550000,354.71 +1989-10-02,349.15,350.99,348.35,350.87,127410000,350.87 +1989-09-29,348.60,350.31,348.12,349.15,155300000,349.15 +1989-09-28,345.10,348.61,345.10,348.60,164240000,348.60 +1989-09-27,344.33,345.47,342.85,345.10,158400000,345.10 +1989-09-26,344.23,347.02,344.13,344.33,158350000,344.33 +1989-09-25,347.05,347.05,343.70,344.23,121130000,344.23 +1989-09-22,345.70,347.57,345.69,347.05,133350000,347.05 +1989-09-21,346.47,348.46,344.96,345.70,146930000,345.70 +1989-09-20,346.55,347.27,346.18,346.47,136640000,346.47 +1989-09-19,346.73,348.17,346.44,346.55,141610000,346.55 +1989-09-18,345.06,346.84,344.60,346.73,136940000,346.73 +1989-09-15,343.16,345.06,341.37,345.06,234860000,345.06 +1989-09-14,345.46,345.61,342.55,343.16,149250000,343.16 +1989-09-13,348.70,350.10,345.46,345.46,175330000,345.46 +1989-09-12,347.66,349.46,347.50,348.70,142140000,348.70 +1989-09-11,348.76,348.76,345.91,347.66,126020000,347.66 +1989-09-08,348.35,349.18,345.74,348.76,154090000,348.76 +1989-09-07,349.24,350.31,348.15,348.35,160160000,348.35 +1989-09-06,352.56,352.56,347.98,349.24,161800000,349.24 +1989-09-05,353.73,354.13,351.82,352.56,145180000,352.56 +1989-09-01,351.45,353.90,350.88,353.73,133300000,353.73 +1989-08-31,350.65,351.45,350.21,351.45,144820000,351.45 +1989-08-30,349.84,352.27,348.66,350.65,174350000,350.65 +1989-08-29,352.09,352.12,348.86,349.84,175210000,349.84 +1989-08-28,350.52,352.09,349.08,352.09,131180000,352.09 +1989-08-25,351.52,352.73,350.09,350.52,165930000,350.52 +1989-08-24,344.70,351.52,344.70,351.52,225520000,351.52 +1989-08-23,341.19,344.80,341.19,344.70,159640000,344.70 +1989-08-22,340.67,341.25,339.00,341.19,141930000,341.19 +1989-08-21,346.03,346.25,340.55,340.67,136800000,340.67 +1989-08-18,344.45,346.03,343.89,346.03,145810000,346.03 +1989-08-17,345.66,346.39,342.97,344.45,157560000,344.45 +1989-08-16,344.71,346.37,344.71,345.66,150060000,345.66 +1989-08-15,343.06,345.03,343.05,344.71,148770000,344.71 +1989-08-14,344.71,345.44,341.96,343.06,142010000,343.06 +1989-08-11,348.28,351.18,344.01,344.74,197550000,344.74 +1989-08-10,346.94,349.78,345.31,348.25,198660000,348.25 +1989-08-09,349.30,351.00,346.86,346.94,209900000,346.94 +1989-08-08,349.41,349.84,348.28,349.35,200340000,349.35 +1989-08-07,343.92,349.42,343.91,349.41,197580000,349.41 +1989-08-04,344.74,345.42,342.60,343.92,169750000,343.92 +1989-08-03,344.34,345.22,343.81,344.74,168690000,344.74 +1989-08-02,343.75,344.34,342.47,344.34,181760000,344.34 +1989-08-01,346.08,347.99,342.93,343.75,225280000,343.75 +1989-07-31,342.13,346.08,342.02,346.08,166650000,346.08 +1989-07-28,341.94,342.96,341.30,342.15,180610000,342.15 +1989-07-27,338.05,342.00,338.05,341.99,213680000,341.99 +1989-07-26,333.88,338.05,333.19,338.05,188270000,338.05 +1989-07-25,333.67,336.29,332.60,333.88,179270000,333.88 +1989-07-24,335.90,335.90,333.44,333.67,136260000,333.67 +1989-07-21,333.50,335.91,332.46,335.90,174880000,335.90 +1989-07-20,335.74,337.40,333.22,333.51,204590000,333.51 +1989-07-19,331.37,335.73,331.35,335.73,215740000,335.73 +1989-07-18,332.42,332.44,330.75,331.35,152350000,331.35 +1989-07-17,331.78,333.02,331.02,332.44,131960000,332.44 +1989-07-14,329.96,331.89,327.13,331.84,183480000,331.84 +1989-07-13,329.81,330.37,329.08,329.95,153820000,329.95 +1989-07-12,328.78,330.39,327.92,329.81,160550000,329.81 +1989-07-11,327.07,330.42,327.07,328.78,171590000,328.78 +1989-07-10,324.93,327.07,324.91,327.07,131870000,327.07 +1989-07-07,321.55,325.87,321.08,324.91,166430000,324.91 +1989-07-06,320.64,321.55,320.45,321.55,140450000,321.55 +1989-07-05,319.23,321.22,317.26,320.64,127710000,320.64 +1989-07-03,317.98,319.27,317.27,319.23,68870000,319.23 +1989-06-30,319.67,319.97,314.38,317.98,170490000,317.98 +1989-06-29,325.81,325.81,319.54,319.68,167100000,319.68 +1989-06-28,328.44,328.44,324.30,325.81,158470000,325.81 +1989-06-27,326.60,329.19,326.59,328.44,171090000,328.44 +1989-06-26,328.00,328.15,326.31,326.60,143600000,326.60 +1989-06-23,322.32,328.00,322.32,328.00,198720000,328.00 +1989-06-22,320.48,322.34,320.20,322.32,176510000,322.32 +1989-06-21,321.25,321.87,319.25,320.48,168830000,320.48 +1989-06-20,321.89,322.78,321.03,321.25,167650000,321.25 +1989-06-19,321.35,321.89,320.40,321.89,130720000,321.89 +1989-06-16,319.96,321.36,318.69,321.35,244510000,321.35 +1989-06-15,323.83,323.83,319.21,320.08,179480000,320.08 +1989-06-14,323.91,324.89,322.80,323.83,170540000,323.83 +1989-06-13,326.24,326.24,322.96,323.91,164870000,323.91 +1989-06-12,326.69,326.69,323.73,326.24,151460000,326.24 +1989-06-09,326.75,327.32,325.16,326.69,173240000,326.69 +1989-06-08,326.95,327.37,325.92,326.75,212310000,326.75 +1989-06-07,324.24,327.39,324.24,326.95,213710000,326.95 +1989-06-06,322.03,324.48,321.27,324.24,187570000,324.24 +1989-06-05,325.52,325.93,322.02,322.03,163420000,322.03 +1989-06-02,321.97,325.63,321.97,325.52,229140000,325.52 +1989-06-01,320.51,322.57,320.01,321.97,223160000,321.97 +1989-05-31,319.05,321.30,318.68,320.52,162530000,320.52 +1989-05-30,321.59,322.53,317.83,319.05,151780000,319.05 +1989-05-26,319.17,321.59,319.14,321.59,143120000,321.59 +1989-05-25,319.14,319.60,318.42,319.17,154470000,319.17 +1989-05-24,318.32,319.14,317.58,319.14,178600000,319.14 +1989-05-23,321.98,321.98,318.20,318.32,187690000,318.32 +1989-05-22,321.24,323.06,320.45,321.98,185010000,321.98 +1989-05-19,317.97,321.38,317.97,321.24,242410000,321.24 +1989-05-18,317.48,318.52,316.54,317.97,177480000,317.97 +1989-05-17,315.28,317.94,315.11,317.48,191210000,317.48 +1989-05-16,316.16,316.16,314.99,315.28,173100000,315.28 +1989-05-15,313.84,316.16,313.84,316.16,179350000,316.16 +1989-05-12,306.95,313.84,306.95,313.84,221490000,313.84 +1989-05-11,305.80,307.34,305.80,306.95,151620000,306.95 +1989-05-10,305.19,306.25,304.85,305.80,146000000,305.80 +1989-05-09,306.00,306.99,304.06,305.19,150090000,305.19 +1989-05-08,307.61,307.61,304.74,306.00,135130000,306.00 +1989-05-05,307.77,310.69,306.98,307.61,180810000,307.61 +1989-05-04,308.16,308.40,307.32,307.77,153130000,307.77 +1989-05-03,308.12,308.52,307.11,308.16,171690000,308.16 +1989-05-02,309.13,310.45,308.12,308.12,172560000,308.12 +1989-05-01,309.64,309.64,307.40,309.12,138050000,309.12 +1989-04-28,309.58,309.65,308.48,309.64,158390000,309.64 +1989-04-27,306.93,310.45,306.93,309.58,191170000,309.58 +1989-04-26,306.78,307.30,306.07,306.93,146090000,306.93 +1989-04-25,308.69,309.65,306.74,306.75,165430000,306.75 +1989-04-24,309.61,309.61,307.83,308.69,142100000,308.69 +1989-04-21,306.19,309.61,306.19,309.61,187310000,309.61 +1989-04-20,307.15,307.96,304.53,306.19,175970000,306.19 +1989-04-19,306.02,307.68,305.36,307.15,191510000,307.15 +1989-04-18,301.72,306.25,301.72,306.02,208650000,306.02 +1989-04-17,301.36,302.01,300.71,301.72,128540000,301.72 +1989-04-14,296.40,301.38,296.40,301.36,169780000,301.36 +1989-04-13,298.99,299.00,296.27,296.40,141590000,296.40 +1989-04-12,298.49,299.81,298.49,298.99,165200000,298.99 +1989-04-11,297.11,298.87,297.11,298.49,146830000,298.49 +1989-04-10,297.16,297.94,296.85,297.11,123990000,297.11 +1989-04-07,295.29,297.62,294.35,297.16,156950000,297.16 +1989-04-06,296.22,296.24,294.52,295.29,146530000,295.29 +1989-04-05,295.31,296.43,295.28,296.24,165880000,296.24 +1989-04-04,296.40,296.40,294.72,295.31,160680000,295.31 +1989-04-03,294.87,297.04,294.62,296.39,164660000,296.39 +1989-03-31,292.52,294.96,292.52,294.87,170960000,294.87 +1989-03-30,292.35,293.80,291.50,292.52,159950000,292.52 +1989-03-29,291.59,292.75,291.42,292.35,144240000,292.35 +1989-03-28,290.57,292.32,290.57,291.59,146420000,291.59 +1989-03-27,288.98,290.57,288.07,290.57,112960000,290.57 +1989-03-23,290.49,291.51,288.56,288.98,153750000,288.98 +1989-03-22,291.33,291.46,289.90,290.49,146570000,290.49 +1989-03-21,289.92,292.38,289.92,291.33,142010000,291.33 +1989-03-20,292.69,292.69,288.56,289.92,151260000,289.92 +1989-03-17,299.44,299.44,291.08,292.69,242900000,292.69 +1989-03-16,296.67,299.99,296.66,299.44,196040000,299.44 +1989-03-15,295.14,296.78,295.14,296.67,167070000,296.67 +1989-03-14,295.32,296.29,294.63,295.14,139970000,295.14 +1989-03-13,292.88,296.18,292.88,295.32,140460000,295.32 +1989-03-10,293.93,293.93,291.60,292.88,146830000,292.88 +1989-03-09,294.08,294.69,293.85,293.93,143160000,293.93 +1989-03-08,293.87,295.62,293.51,294.08,167620000,294.08 +1989-03-07,294.81,295.16,293.50,293.87,172500000,293.87 +1989-03-06,291.20,294.81,291.18,294.81,168880000,294.81 +1989-03-03,289.94,291.18,289.44,291.18,151790000,291.18 +1989-03-02,287.11,290.32,287.11,289.95,161980000,289.95 +1989-03-01,288.86,290.28,286.46,287.11,177210000,287.11 +1989-02-28,287.82,289.42,287.63,288.86,147430000,288.86 +1989-02-27,287.13,288.12,286.26,287.82,139900000,287.82 +1989-02-24,292.05,292.05,287.13,287.13,160680000,287.13 +1989-02-23,290.91,292.05,289.83,292.05,150370000,292.05 +1989-02-22,295.98,295.98,290.76,290.91,163140000,290.91 +1989-02-21,296.76,297.04,295.16,295.98,141950000,295.98 +1989-02-17,294.81,297.12,294.69,296.76,159520000,296.76 +1989-02-16,294.24,295.15,294.22,294.81,177450000,294.81 +1989-02-15,291.81,294.42,291.49,294.24,154220000,294.24 +1989-02-14,292.54,294.37,291.41,291.81,150610000,291.81 +1989-02-13,292.02,293.07,290.88,292.54,143520000,292.54 +1989-02-10,296.06,296.06,291.96,292.02,173560000,292.02 +1989-02-09,298.65,298.79,295.16,296.06,224220000,296.06 +1989-02-08,299.62,300.57,298.41,298.65,189420000,298.65 +1989-02-07,296.04,300.34,295.78,299.63,217260000,299.63 +1989-02-06,296.97,296.99,294.96,296.04,150980000,296.04 +1989-02-03,296.84,297.66,296.15,296.97,172980000,296.97 +1989-02-02,297.09,297.92,295.81,296.84,183430000,296.84 +1989-02-01,297.47,298.33,296.22,297.09,215640000,297.09 +1989-01-31,294.99,297.51,293.57,297.47,194050000,297.47 +1989-01-30,293.82,295.13,293.54,294.99,167830000,294.99 +1989-01-27,291.69,296.08,291.69,293.82,254870000,293.82 +1989-01-26,289.14,292.62,288.13,291.69,212250000,291.69 +1989-01-25,288.49,289.15,287.97,289.14,183610000,289.14 +1989-01-24,284.50,288.49,284.50,288.49,189620000,288.49 +1989-01-23,287.85,287.98,284.50,284.50,141640000,284.50 +1989-01-20,286.90,287.04,285.75,286.63,166120000,286.63 +1989-01-19,286.53,287.90,286.14,286.91,192030000,286.91 +1989-01-18,283.55,286.87,282.65,286.53,187450000,286.53 +1989-01-17,284.14,284.14,283.06,283.55,143930000,283.55 +1989-01-16,283.87,284.88,283.63,284.14,117380000,284.14 +1989-01-13,283.17,284.12,282.71,283.87,132320000,283.87 +1989-01-12,282.01,284.63,282.01,283.17,183000000,283.17 +1989-01-11,280.38,282.01,280.21,282.01,148950000,282.01 +1989-01-10,280.98,281.58,279.44,280.38,140420000,280.38 +1989-01-09,280.67,281.89,280.32,280.98,163180000,280.98 +1989-01-06,280.01,282.06,280.01,280.67,161330000,280.67 +1989-01-05,279.43,281.51,279.43,280.01,174040000,280.01 +1989-01-04,275.31,279.75,275.31,279.43,149700000,279.43 +1989-01-03,277.72,277.72,273.81,275.31,128500000,275.31 +1988-12-30,279.39,279.78,277.72,277.72,127210000,277.72 +1988-12-29,277.08,279.42,277.08,279.40,131290000,279.40 +1988-12-28,276.83,277.55,276.17,277.08,110630000,277.08 +1988-12-27,277.87,278.09,276.74,276.83,87490000,276.83 +1988-12-23,276.87,277.99,276.87,277.87,81760000,277.87 +1988-12-22,277.38,277.89,276.86,276.87,150510000,276.87 +1988-12-21,277.47,277.83,276.30,277.38,147250000,277.38 +1988-12-20,278.91,280.45,277.47,277.47,161090000,277.47 +1988-12-19,276.29,279.31,275.61,278.91,162250000,278.91 +1988-12-16,274.28,276.29,274.28,276.29,196480000,276.29 +1988-12-15,275.32,275.62,274.01,274.28,136820000,274.28 +1988-12-14,276.31,276.31,274.58,275.31,132350000,275.31 +1988-12-13,276.52,276.52,274.58,276.31,132340000,276.31 +1988-12-12,277.03,278.82,276.52,276.52,124160000,276.52 +1988-12-09,276.57,277.82,276.34,277.03,133770000,277.03 +1988-12-08,278.13,278.13,276.55,276.59,124150000,276.59 +1988-12-07,277.59,279.01,277.34,278.13,148360000,278.13 +1988-12-06,274.93,277.89,274.62,277.59,158340000,277.59 +1988-12-05,274.93,275.62,271.81,274.93,144660000,274.93 +1988-12-02,272.49,272.49,270.47,271.81,124610000,271.81 +1988-12-01,273.68,273.70,272.27,272.49,129380000,272.49 +1988-11-30,270.91,274.36,270.90,273.70,157810000,273.70 +1988-11-29,268.60,271.31,268.13,270.91,127420000,270.91 +1988-11-28,267.22,268.98,266.97,268.64,123480000,268.64 +1988-11-25,268.99,269.00,266.47,267.23,72090000,267.23 +1988-11-23,267.22,269.56,267.21,269.00,112010000,269.00 +1988-11-22,266.19,267.85,265.42,267.21,127000000,267.21 +1988-11-21,266.35,266.47,263.41,266.22,120430000,266.22 +1988-11-18,264.60,266.62,264.60,266.47,119320000,266.47 +1988-11-17,264.61,265.63,263.45,264.60,141280000,264.60 +1988-11-16,268.41,268.41,262.85,263.82,161710000,263.82 +1988-11-15,267.73,268.75,267.72,268.34,115170000,268.34 +1988-11-14,267.93,269.25,266.79,267.72,142900000,267.72 +1988-11-11,273.65,273.69,267.92,267.92,135500000,267.92 +1988-11-10,273.32,274.37,272.98,273.69,128920000,273.69 +1988-11-09,275.14,275.15,272.15,273.33,153140000,273.33 +1988-11-08,273.95,275.80,273.93,275.15,141660000,275.15 +1988-11-07,276.30,276.31,273.62,273.93,133870000,273.93 +1988-11-04,279.11,279.20,276.31,276.31,143580000,276.31 +1988-11-03,279.04,280.37,279.04,279.20,152980000,279.20 +1988-11-02,279.07,279.45,277.08,279.06,161300000,279.06 +1988-11-01,278.97,279.57,278.01,279.06,151250000,279.06 +1988-10-31,278.54,279.39,277.14,278.97,143460000,278.97 +1988-10-28,277.29,279.48,277.28,278.53,146300000,278.53 +1988-10-27,281.35,281.38,276.00,277.28,196540000,277.28 +1988-10-26,282.37,282.52,280.54,281.38,181550000,281.38 +1988-10-25,282.28,282.84,281.87,282.38,155190000,282.38 +1988-10-24,283.63,283.95,282.28,282.28,170590000,282.28 +1988-10-21,282.88,283.66,281.16,283.66,195410000,283.66 +1988-10-20,276.97,282.88,276.93,282.88,189580000,282.88 +1988-10-19,279.40,280.53,274.41,276.97,186350000,276.97 +1988-10-18,276.43,279.39,276.41,279.38,162500000,279.38 +1988-10-17,275.48,276.65,275.01,276.41,119290000,276.41 +1988-10-14,275.27,277.01,274.08,275.50,160240000,275.50 +1988-10-13,273.95,275.83,273.39,275.22,154530000,275.22 +1988-10-12,277.91,277.93,273.05,273.98,154840000,273.98 +1988-10-11,278.15,278.24,276.33,277.93,140900000,277.93 +1988-10-10,278.06,278.69,277.10,278.24,124660000,278.24 +1988-10-07,272.38,278.07,272.37,278.07,216390000,278.07 +1988-10-06,271.87,272.39,271.30,272.39,153570000,272.39 +1988-10-05,270.63,272.45,270.08,271.86,175130000,271.86 +1988-10-04,271.37,271.79,270.34,270.62,157760000,270.62 +1988-10-03,271.89,271.91,268.84,271.38,130380000,271.38 +1988-09-30,272.55,274.87,271.66,271.91,175750000,271.91 +1988-09-29,269.09,273.02,269.08,272.59,155790000,272.59 +1988-09-28,268.22,269.08,267.77,269.08,113720000,269.08 +1988-09-27,268.89,269.36,268.01,268.26,113010000,268.26 +1988-09-26,269.77,269.80,268.61,268.88,116420000,268.88 +1988-09-23,269.16,270.31,268.28,269.76,145100000,269.76 +1988-09-22,270.19,270.58,268.26,269.18,150670000,269.18 +1988-09-21,269.76,270.64,269.48,270.16,127400000,270.16 +1988-09-20,268.83,270.07,268.50,269.73,142220000,269.73 +1988-09-19,270.64,270.65,267.41,268.82,135770000,268.82 +1988-09-16,268.13,270.81,267.33,270.65,211110000,270.65 +1988-09-15,269.30,269.78,268.03,268.13,161210000,268.13 +1988-09-14,267.50,269.47,267.41,269.31,177220000,269.31 +1988-09-13,266.45,267.43,265.22,267.43,162490000,267.43 +1988-09-12,266.85,267.64,266.22,266.47,114880000,266.47 +1988-09-09,265.88,268.26,263.66,266.84,141540000,266.84 +1988-09-08,265.87,266.54,264.88,265.88,149380000,265.88 +1988-09-07,265.62,266.98,264.93,265.87,139590000,265.87 +1988-09-06,264.42,265.94,264.40,265.59,122250000,265.59 +1988-09-02,258.35,264.90,258.35,264.48,159840000,264.48 +1988-09-01,261.52,261.52,256.98,258.35,144090000,258.35 +1988-08-31,262.51,263.80,261.21,261.52,130480000,261.52 +1988-08-30,262.33,263.18,261.53,262.51,108720000,262.51 +1988-08-29,259.68,262.56,259.68,262.33,99280000,262.33 +1988-08-26,259.18,260.15,258.87,259.68,89240000,259.68 +1988-08-25,261.10,261.13,257.56,259.18,127640000,259.18 +1988-08-24,257.16,261.13,257.09,261.13,127800000,261.13 +1988-08-23,256.99,257.86,256.53,257.09,119540000,257.09 +1988-08-22,260.24,260.71,256.94,256.98,122250000,256.98 +1988-08-19,261.05,262.27,260.23,260.24,122370000,260.24 +1988-08-18,260.76,262.76,260.75,261.03,139820000,261.03 +1988-08-17,260.57,261.84,259.33,260.77,169500000,260.77 +1988-08-16,258.68,262.61,257.50,260.56,162790000,260.56 +1988-08-15,262.49,262.55,258.68,258.69,128560000,258.69 +1988-08-12,262.70,262.94,261.37,262.55,176960000,262.55 +1988-08-11,261.92,262.77,260.34,262.75,173000000,262.75 +1988-08-10,266.43,266.49,261.03,261.90,200950000,261.90 +1988-08-09,270.00,270.20,265.06,266.49,200710000,266.49 +1988-08-08,271.13,272.47,269.93,269.98,148800000,269.98 +1988-08-05,271.70,271.93,270.08,271.15,113400000,271.15 +1988-08-04,273.00,274.20,271.77,271.93,157240000,271.93 +1988-08-03,272.03,273.42,271.15,272.98,203590000,272.98 +1988-08-02,272.19,273.68,270.37,272.06,166660000,272.06 +1988-08-01,272.03,272.80,271.21,272.21,138170000,272.21 +1988-07-29,266.04,272.02,266.02,272.02,192340000,272.02 +1988-07-28,262.52,266.55,262.50,266.02,154570000,266.02 +1988-07-27,265.18,265.83,262.48,262.50,135890000,262.50 +1988-07-26,264.70,266.09,264.32,265.19,121960000,265.19 +1988-07-25,263.49,265.17,263.03,264.68,215140000,264.68 +1988-07-22,266.65,266.66,263.29,263.50,148880000,263.50 +1988-07-21,269.99,270.00,266.66,266.66,149460000,266.66 +1988-07-20,268.52,270.24,268.47,270.00,151990000,270.00 +1988-07-19,270.49,271.21,267.01,268.47,144110000,268.47 +1988-07-18,271.99,272.05,268.66,270.51,156210000,270.51 +1988-07-15,270.23,272.06,269.53,272.05,199710000,272.05 +1988-07-14,269.33,270.69,268.58,270.26,172410000,270.26 +1988-07-13,267.87,269.46,266.12,269.32,218930000,269.32 +1988-07-12,270.54,270.70,266.96,267.85,161650000,267.85 +1988-07-11,270.03,271.64,270.02,270.55,123300000,270.55 +1988-07-08,271.76,272.31,269.86,270.02,136070000,270.02 +1988-07-07,272.00,272.05,269.31,271.78,156100000,271.78 +1988-07-06,275.80,276.36,269.92,272.02,189630000,272.02 +1988-07-05,271.78,275.81,270.51,275.81,171790000,275.81 +1988-07-01,273.50,273.80,270.78,271.78,238330000,271.78 +1988-06-30,271.00,273.51,270.97,273.50,227410000,273.50 +1988-06-29,272.32,273.01,269.49,270.98,159590000,270.98 +1988-06-28,269.07,272.80,269.06,272.31,152370000,272.31 +1988-06-27,273.78,273.79,268.85,269.06,264410000,269.06 +1988-06-24,274.81,275.19,273.53,273.78,179880000,273.78 +1988-06-23,275.62,275.89,274.26,274.82,185770000,274.82 +1988-06-22,271.69,276.88,271.67,275.66,217510000,275.66 +1988-06-21,268.95,271.67,267.52,271.67,155060000,271.67 +1988-06-20,270.67,270.68,268.59,268.94,116750000,268.94 +1988-06-17,269.79,270.77,268.09,270.68,343920000,270.68 +1988-06-16,274.44,274.45,268.76,269.77,161550000,269.77 +1988-06-15,274.29,274.45,272.75,274.45,150260000,274.45 +1988-06-14,271.58,276.14,271.44,274.30,227150000,274.30 +1988-06-13,271.28,271.94,270.53,271.43,125310000,271.43 +1988-06-10,270.22,273.21,270.20,271.26,155710000,271.26 +1988-06-09,271.50,272.29,270.19,270.20,235160000,270.20 +1988-06-08,265.32,272.01,265.17,271.52,310030000,271.52 +1988-06-07,267.02,267.28,264.50,265.17,168710000,265.17 +1988-06-06,266.46,267.05,264.97,267.05,152460000,267.05 +1988-06-03,265.34,267.11,264.42,266.45,189600000,266.45 +1988-06-02,266.65,266.71,264.12,265.33,193540000,265.33 +1988-06-01,262.16,267.43,262.10,266.69,234560000,266.69 +1988-05-31,253.44,262.16,253.42,262.16,247610000,262.16 +1988-05-27,254.62,254.63,252.74,253.42,133590000,253.42 +1988-05-26,253.75,254.98,253.52,254.63,164260000,254.63 +1988-05-25,253.52,255.34,253.51,253.76,138310000,253.76 +1988-05-24,250.84,253.51,250.83,253.51,139930000,253.51 +1988-05-23,253.00,253.02,249.82,250.83,102640000,250.83 +1988-05-20,252.61,253.70,251.79,253.02,120600000,253.02 +1988-05-19,251.36,252.57,248.85,252.57,165160000,252.57 +1988-05-18,255.40,255.67,250.73,251.35,209420000,251.35 +1988-05-17,258.72,260.20,255.35,255.39,133850000,255.39 +1988-05-16,256.75,258.71,256.28,258.71,155010000,258.71 +1988-05-13,253.88,256.83,253.85,256.78,147240000,256.78 +1988-05-12,253.32,254.87,253.31,253.85,143880000,253.85 +1988-05-11,257.60,257.62,252.32,253.31,176720000,253.31 +1988-05-10,256.53,258.30,255.93,257.62,131200000,257.62 +1988-05-09,257.47,258.22,255.45,256.54,166320000,256.54 +1988-05-06,258.80,260.31,257.03,257.48,129080000,257.48 +1988-05-05,260.30,260.32,258.13,258.79,171840000,258.79 +1988-05-04,263.05,263.23,260.31,260.32,141320000,260.32 +1988-05-03,261.55,263.70,261.55,263.00,176920000,263.00 +1988-05-02,261.36,261.56,259.99,261.56,136470000,261.56 +1988-04-29,262.59,262.61,259.97,261.33,135620000,261.33 +1988-04-28,263.79,263.80,262.22,262.61,128680000,262.61 +1988-04-27,263.94,265.09,263.45,263.80,133810000,263.80 +1988-04-26,262.45,265.06,262.18,263.93,152300000,263.93 +1988-04-25,260.15,263.29,260.14,262.51,156950000,262.51 +1988-04-22,256.45,261.16,256.42,260.14,152520000,260.14 +1988-04-21,256.15,260.44,254.71,256.42,168440000,256.42 +1988-04-20,257.91,258.54,256.12,256.13,147590000,256.13 +1988-04-19,259.24,262.38,257.91,257.92,161910000,257.92 +1988-04-18,259.75,259.81,258.03,259.21,144650000,259.21 +1988-04-15,259.74,260.39,255.97,259.77,234160000,259.77 +1988-04-14,271.55,271.57,259.37,259.75,211810000,259.75 +1988-04-13,271.33,271.70,269.23,271.58,185120000,271.58 +1988-04-12,269.88,272.05,269.66,271.37,146400000,271.37 +1988-04-11,269.43,270.41,268.61,270.16,146370000,270.16 +1988-04-08,266.15,270.22,266.11,269.43,169300000,269.43 +1988-04-07,265.51,267.32,265.22,266.16,177840000,266.16 +1988-04-06,258.52,265.50,258.22,265.49,189760000,265.49 +1988-04-05,256.10,258.52,256.03,258.51,135290000,258.51 +1988-04-04,258.89,259.06,255.68,256.09,182240000,256.09 +1988-03-31,258.03,259.03,256.16,258.89,139870000,258.89 +1988-03-30,260.06,261.59,257.92,258.07,151810000,258.07 +1988-03-29,258.11,260.86,258.06,260.07,152690000,260.07 +1988-03-28,258.50,258.51,256.07,258.06,142820000,258.06 +1988-03-25,263.34,263.44,258.12,258.51,163170000,258.51 +1988-03-24,268.91,268.91,262.48,263.35,184910000,263.35 +1988-03-23,268.81,269.79,268.01,268.91,167370000,268.91 +1988-03-22,268.73,269.61,267.90,268.84,142000000,268.84 +1988-03-21,271.10,271.12,267.42,268.74,128830000,268.74 +1988-03-18,271.22,272.64,269.76,271.12,245750000,271.12 +1988-03-17,268.66,271.22,268.65,271.22,211920000,271.22 +1988-03-16,266.11,268.68,264.81,268.65,153590000,268.65 +1988-03-15,266.34,266.41,264.92,266.13,133170000,266.13 +1988-03-14,264.93,266.55,264.52,266.37,131890000,266.37 +1988-03-11,263.85,264.94,261.27,264.94,200020000,264.94 +1988-03-10,269.07,269.35,263.80,263.84,197260000,263.84 +1988-03-09,269.46,270.76,268.65,269.06,210900000,269.06 +1988-03-08,267.38,270.06,267.38,269.43,237680000,269.43 +1988-03-07,267.28,267.69,265.94,267.38,152980000,267.38 +1988-03-04,267.87,268.40,264.72,267.30,201410000,267.30 +1988-03-03,267.98,268.40,266.82,267.88,203310000,267.88 +1988-03-02,267.23,268.75,267.00,267.98,199630000,267.98 +1988-03-01,267.82,267.95,265.39,267.22,199990000,267.22 +1988-02-29,262.46,267.82,262.46,267.82,236050000,267.82 +1988-02-26,261.56,263.00,261.38,262.46,158060000,262.46 +1988-02-25,264.39,267.75,261.05,261.58,213490000,261.58 +1988-02-24,265.01,266.25,263.87,264.43,212730000,264.43 +1988-02-23,265.62,266.12,263.11,265.02,192260000,265.02 +1988-02-22,261.60,266.06,260.88,265.64,178930000,265.64 +1988-02-19,257.90,261.61,257.62,261.61,180300000,261.61 +1988-02-18,258.82,259.60,256.90,257.91,151430000,257.91 +1988-02-17,259.94,261.47,257.83,259.21,176830000,259.21 +1988-02-16,257.61,259.84,256.57,259.83,135380000,259.83 +1988-02-12,255.95,258.86,255.85,257.63,177190000,257.63 +1988-02-11,256.63,257.77,255.12,255.95,200760000,255.95 +1988-02-10,251.74,256.92,251.72,256.66,187980000,256.66 +1988-02-09,249.11,251.72,248.66,251.72,162350000,251.72 +1988-02-08,250.95,250.96,247.82,249.10,168850000,249.10 +1988-02-05,252.22,253.85,250.90,250.96,161310000,250.96 +1988-02-04,252.20,253.03,250.34,252.21,186490000,252.21 +1988-02-03,255.56,256.98,250.56,252.21,237270000,252.21 +1988-02-02,255.05,256.08,252.80,255.57,164920000,255.57 +1988-02-01,257.05,258.27,254.93,255.04,210660000,255.04 +1988-01-29,253.31,257.07,252.70,257.07,211880000,257.07 +1988-01-28,249.39,253.66,249.38,253.29,166430000,253.29 +1988-01-27,249.58,253.02,248.50,249.38,176360000,249.38 +1988-01-26,252.13,252.17,249.10,249.57,138380000,249.57 +1988-01-25,246.53,252.87,246.50,252.17,275250000,252.17 +1988-01-22,243.14,246.50,243.14,246.50,147050000,246.50 +1988-01-21,242.65,244.25,240.17,243.14,158080000,243.14 +1988-01-20,249.31,249.32,241.14,242.63,181660000,242.63 +1988-01-19,251.84,253.33,248.75,249.32,153550000,249.32 +1988-01-18,252.05,252.86,249.98,251.88,135100000,251.88 +1988-01-15,246.02,253.65,245.88,252.05,197940000,252.05 +1988-01-14,245.83,247.00,243.97,245.88,140570000,245.88 +1988-01-13,245.41,249.25,241.41,245.81,154020000,245.81 +1988-01-12,247.44,247.49,240.46,245.42,165730000,245.42 +1988-01-11,243.38,247.51,241.07,247.49,158980000,247.49 +1988-01-08,261.05,261.07,242.95,243.40,197300000,243.40 +1988-01-07,258.87,261.32,256.18,261.07,175360000,261.07 +1988-01-06,258.64,259.79,257.18,258.89,169730000,258.89 +1988-01-05,255.95,261.78,255.95,258.63,209520000,258.63 +1988-01-04,247.10,256.44,247.08,255.94,181810000,255.94 +1987-12-31,247.84,247.86,245.22,247.08,170140000,247.08 +1987-12-30,244.63,248.06,244.59,247.86,149230000,247.86 +1987-12-29,245.58,245.88,244.28,244.59,111580000,244.59 +1987-12-28,252.01,252.02,244.19,245.57,131220000,245.57 +1987-12-24,253.13,253.16,251.68,252.03,108800000,252.03 +1987-12-23,249.96,253.35,249.95,253.16,203110000,253.16 +1987-12-22,249.56,249.97,247.01,249.95,192650000,249.95 +1987-12-21,249.14,250.25,248.30,249.54,161790000,249.54 +1987-12-18,243.01,249.18,243.01,249.16,276220000,249.16 +1987-12-17,248.08,248.60,242.96,242.98,191780000,242.98 +1987-12-16,242.81,248.11,242.80,248.08,193820000,248.08 +1987-12-15,242.19,245.59,241.31,242.81,214970000,242.81 +1987-12-14,235.30,242.34,235.04,242.19,187680000,242.19 +1987-12-11,233.60,235.48,233.35,235.32,151680000,235.32 +1987-12-10,238.89,240.05,233.40,233.57,188960000,233.57 +1987-12-09,234.91,240.09,233.83,238.89,231430000,238.89 +1987-12-08,228.77,234.92,228.69,234.91,227310000,234.91 +1987-12-07,223.98,228.77,223.92,228.76,146660000,228.76 +1987-12-04,225.20,225.77,221.24,223.92,184800000,223.92 +1987-12-03,233.46,233.90,225.21,225.21,204160000,225.21 +1987-12-02,232.01,234.56,230.31,233.45,148890000,233.45 +1987-12-01,230.32,234.02,230.30,232.00,149870000,232.00 +1987-11-30,240.27,240.34,225.75,230.30,268910000,230.30 +1987-11-27,244.11,244.12,240.34,240.34,86360000,240.34 +1987-11-25,246.42,246.54,244.08,244.10,139780000,244.10 +1987-11-24,242.98,247.90,242.98,246.39,199520000,246.39 +1987-11-23,242.00,242.99,240.50,242.99,143160000,242.99 +1987-11-20,240.04,242.01,235.89,242.00,189170000,242.00 +1987-11-19,245.54,245.55,239.70,240.05,157140000,240.05 +1987-11-18,243.09,245.55,240.67,245.55,158270000,245.55 +1987-11-17,246.73,246.76,240.81,243.04,148240000,243.04 +1987-11-16,245.69,249.54,244.98,246.76,164340000,246.76 +1987-11-13,248.54,249.42,245.64,245.64,174920000,245.64 +1987-11-12,241.93,249.90,241.90,248.52,206280000,248.52 +1987-11-11,239.01,243.86,239.00,241.90,147850000,241.90 +1987-11-10,243.14,243.17,237.64,239.00,184310000,239.00 +1987-11-09,250.41,250.41,243.01,243.17,160690000,243.17 +1987-11-06,254.49,257.21,249.68,250.41,228290000,250.41 +1987-11-05,248.93,256.09,247.72,254.48,226000000,254.48 +1987-11-04,250.81,251.00,246.34,248.96,202500000,248.96 +1987-11-03,255.75,255.75,242.78,250.82,227800000,250.82 +1987-11-02,251.73,255.75,249.15,255.75,176000000,255.75 +1987-10-30,244.77,254.04,244.77,251.79,303400000,251.79 +1987-10-29,233.31,246.69,233.28,244.77,258100000,244.77 +1987-10-28,233.19,238.58,226.26,233.28,279400000,233.28 +1987-10-27,227.67,237.81,227.67,233.19,260200000,233.19 +1987-10-26,248.20,248.22,227.26,227.67,308800000,227.67 +1987-10-23,248.29,250.70,242.76,248.22,245600000,248.22 +1987-10-22,258.24,258.38,242.99,248.25,392200000,248.25 +1987-10-21,236.83,259.27,236.83,258.38,449600000,258.38 +1987-10-20,225.06,245.62,216.46,236.83,608100000,236.83 +1987-10-19,282.70,282.70,224.83,224.84,604300000,224.84 +1987-10-16,298.08,298.92,281.52,282.70,338500000,282.70 +1987-10-15,305.21,305.23,298.07,298.08,263200000,298.08 +1987-10-14,314.52,314.52,304.78,305.23,207400000,305.23 +1987-10-13,309.39,314.53,309.39,314.52,172900000,314.52 +1987-10-12,311.07,311.07,306.76,309.39,141900000,309.39 +1987-10-09,314.16,315.04,310.97,311.07,158300000,311.07 +1987-10-08,318.54,319.34,312.02,314.16,198700000,314.16 +1987-10-07,319.22,319.39,315.78,318.54,186300000,318.54 +1987-10-06,328.08,328.08,319.17,319.22,175600000,319.22 +1987-10-05,328.07,328.57,326.09,328.08,159700000,328.08 +1987-10-02,327.33,328.94,327.22,328.07,189100000,328.07 +1987-10-01,321.83,327.34,321.83,327.33,193200000,327.33 +1987-09-30,321.69,322.53,320.16,321.83,183100000,321.83 +1987-09-29,323.20,324.63,320.27,321.69,173500000,321.69 +1987-09-28,320.16,325.33,320.16,323.20,188100000,323.20 +1987-09-25,319.72,320.55,318.10,320.16,138000000,320.16 +1987-09-24,321.09,322.01,319.12,319.72,162200000,319.72 +1987-09-23,319.49,321.83,319.12,321.19,220300000,321.19 +1987-09-22,310.54,319.51,308.69,319.50,209500000,319.50 +1987-09-21,314.92,317.66,310.12,310.54,170100000,310.54 +1987-09-18,314.98,316.99,314.86,314.86,188100000,314.86 +1987-09-17,314.94,316.08,313.45,314.93,150700000,314.93 +1987-09-16,317.75,319.50,314.61,314.86,195700000,314.86 +1987-09-15,323.07,323.08,317.63,317.74,136200000,317.74 +1987-09-14,322.02,323.81,320.40,323.08,154400000,323.08 +1987-09-11,317.14,322.45,317.13,321.98,178000000,321.98 +1987-09-10,313.92,317.59,313.92,317.13,179800000,317.13 +1987-09-09,313.60,315.41,312.29,313.92,164900000,313.92 +1987-09-08,316.68,316.70,308.56,313.56,242900000,313.56 +1987-09-04,320.21,322.03,316.53,316.70,129100000,316.70 +1987-09-03,321.47,324.29,317.39,320.21,165200000,320.21 +1987-09-02,323.40,324.53,318.76,321.68,199900000,321.68 +1987-09-01,329.81,332.18,322.83,323.40,193500000,323.40 +1987-08-31,327.03,330.09,326.99,329.80,165800000,329.80 +1987-08-28,331.37,331.38,327.03,327.04,156300000,327.04 +1987-08-27,334.56,334.57,331.10,331.38,163600000,331.38 +1987-08-26,336.77,337.39,334.46,334.57,196200000,334.57 +1987-08-25,333.37,337.89,333.33,336.77,213500000,336.77 +1987-08-24,335.89,335.90,331.92,333.33,149400000,333.33 +1987-08-21,334.85,336.37,334.30,335.90,189600000,335.90 +1987-08-20,331.49,335.19,329.83,334.84,196600000,334.84 +1987-08-19,329.26,329.89,326.54,329.83,180900000,329.83 +1987-08-18,334.10,334.11,326.43,329.25,198400000,329.25 +1987-08-17,333.98,335.43,332.88,334.11,166100000,334.11 +1987-08-14,334.63,336.08,332.63,333.99,196100000,333.99 +1987-08-13,332.38,335.52,332.38,334.65,217100000,334.65 +1987-08-12,333.32,334.57,331.06,332.39,235800000,332.39 +1987-08-11,328.02,333.40,328.00,333.33,278100000,333.33 +1987-08-10,322.98,328.00,322.95,328.00,187200000,328.00 +1987-08-07,322.10,324.15,321.82,323.00,212700000,323.00 +1987-08-06,318.49,322.09,317.50,322.09,192000000,322.09 +1987-08-05,316.25,319.74,316.23,318.45,192700000,318.45 +1987-08-04,317.59,318.25,314.51,316.23,166500000,316.23 +1987-08-03,318.62,320.26,316.52,317.57,207800000,317.57 +1987-07-31,318.05,318.85,317.56,318.66,181900000,318.66 +1987-07-30,315.69,318.53,315.65,318.05,208000000,318.05 +1987-07-29,312.34,315.65,311.73,315.65,196200000,315.65 +1987-07-28,310.65,312.33,310.28,312.33,172600000,312.33 +1987-07-27,309.30,310.70,308.61,310.65,152000000,310.65 +1987-07-24,307.82,309.28,307.78,309.27,158400000,309.27 +1987-07-23,308.50,309.63,306.10,307.81,163700000,307.81 +1987-07-22,308.56,309.12,307.22,308.47,174700000,308.47 +1987-07-21,311.36,312.41,307.51,308.55,186600000,308.55 +1987-07-20,314.56,314.59,311.24,311.39,168100000,311.39 +1987-07-17,312.71,314.59,312.38,314.59,210000000,314.59 +1987-07-16,311.00,312.83,310.42,312.70,210900000,312.70 +1987-07-15,310.67,312.08,309.07,310.42,202300000,310.42 +1987-07-14,307.67,310.69,307.46,310.68,185900000,310.68 +1987-07-13,308.41,308.41,305.49,307.63,152500000,307.63 +1987-07-10,307.55,308.40,306.96,308.37,172100000,308.37 +1987-07-09,308.30,309.56,307.42,307.52,195400000,307.52 +1987-07-08,307.41,308.48,306.01,308.29,207500000,308.29 +1987-07-07,304.91,308.63,304.73,307.40,200700000,307.40 +1987-07-06,305.64,306.75,304.23,304.92,155000000,304.92 +1987-07-02,302.96,306.34,302.94,305.63,154900000,305.63 +1987-07-01,303.99,304.00,302.53,302.94,157000000,302.94 +1987-06-30,307.89,308.00,303.01,304.00,165500000,304.00 +1987-06-29,307.15,308.15,306.75,307.90,142500000,307.90 +1987-06-26,308.94,308.96,306.36,307.16,150500000,307.16 +1987-06-25,306.87,309.44,306.86,308.96,173500000,308.96 +1987-06-24,308.44,308.91,306.32,306.86,153800000,306.86 +1987-06-23,309.66,310.27,307.48,308.43,194200000,308.43 +1987-06-22,306.98,310.20,306.97,309.65,178200000,309.65 +1987-06-19,305.71,306.97,305.55,306.97,220500000,306.97 +1987-06-18,304.78,306.13,303.38,305.69,168600000,305.69 +1987-06-17,304.77,305.74,304.03,304.81,184700000,304.81 +1987-06-16,303.12,304.86,302.60,304.76,157800000,304.76 +1987-06-15,301.62,304.11,301.62,303.14,156900000,303.14 +1987-06-12,298.77,302.26,298.73,301.62,175100000,301.62 +1987-06-11,297.50,298.94,297.47,298.73,138900000,298.73 +1987-06-10,297.28,300.81,295.66,297.47,197400000,297.47 +1987-06-09,296.72,297.59,295.90,297.28,164200000,297.28 +1987-06-08,293.46,297.03,291.55,296.72,136400000,296.72 +1987-06-05,295.11,295.11,292.80,293.45,129100000,293.45 +1987-06-04,293.46,295.09,292.76,295.09,140300000,295.09 +1987-06-03,288.56,293.47,288.56,293.47,164200000,293.47 +1987-06-02,289.82,290.94,286.93,288.46,153400000,288.46 +1987-06-01,290.12,291.96,289.23,289.83,149300000,289.83 +1987-05-29,290.77,292.87,289.70,290.10,153500000,290.10 +1987-05-28,288.73,291.50,286.33,290.76,153800000,290.76 +1987-05-27,289.07,290.78,288.19,288.73,171400000,288.73 +1987-05-26,282.16,289.11,282.16,289.11,152500000,289.11 +1987-05-22,280.17,283.33,280.17,282.16,135800000,282.16 +1987-05-21,278.23,282.31,278.21,280.17,164800000,280.17 +1987-05-20,279.62,280.89,277.01,278.21,206800000,278.21 +1987-05-19,286.66,287.39,278.83,279.62,175400000,279.62 +1987-05-18,287.43,287.43,282.57,286.65,174200000,286.65 +1987-05-15,294.23,294.24,287.11,287.43,180800000,287.43 +1987-05-14,293.98,295.10,292.95,294.24,152000000,294.24 +1987-05-13,293.31,294.54,290.74,293.98,171000000,293.98 +1987-05-12,291.57,293.30,290.18,293.30,155300000,293.30 +1987-05-11,293.37,298.69,291.55,291.57,203700000,291.57 +1987-05-08,294.73,296.18,291.73,293.37,161900000,293.37 +1987-05-07,295.45,296.80,294.07,294.71,215200000,294.71 +1987-05-06,295.35,296.19,293.60,295.47,196600000,295.47 +1987-05-05,289.36,295.40,289.34,295.34,192300000,295.34 +1987-05-04,288.02,289.99,286.39,289.36,140600000,289.36 +1987-05-01,286.99,289.71,286.52,288.03,160100000,288.03 +1987-04-30,284.58,290.08,284.57,288.36,183100000,288.36 +1987-04-29,282.58,286.42,282.58,284.57,173600000,284.57 +1987-04-28,281.83,285.95,281.83,282.51,180100000,282.51 +1987-04-27,281.52,284.45,276.22,281.83,222700000,281.83 +1987-04-24,286.81,286.82,281.18,281.52,178000000,281.52 +1987-04-23,287.19,289.12,284.28,286.82,173900000,286.82 +1987-04-22,293.05,293.46,286.98,287.19,185900000,287.19 +1987-04-21,285.88,293.07,282.89,293.07,191300000,293.07 +1987-04-20,286.91,288.36,284.55,286.09,139100000,286.09 +1987-04-16,284.45,289.57,284.44,286.91,189600000,286.91 +1987-04-15,279.17,285.14,279.16,284.44,198200000,284.44 +1987-04-14,285.61,285.62,275.67,279.16,266500000,279.16 +1987-04-13,292.48,293.36,285.62,285.62,181000000,285.62 +1987-04-10,292.82,293.74,290.94,292.49,169500000,292.49 +1987-04-09,297.25,297.71,291.50,292.86,180300000,292.86 +1987-04-08,296.72,299.20,295.18,297.26,179800000,297.26 +1987-04-07,301.94,303.65,296.67,296.69,186400000,296.69 +1987-04-06,300.46,302.21,300.41,301.95,173700000,301.95 +1987-04-03,293.64,301.30,292.30,300.41,213400000,300.41 +1987-04-02,292.41,294.47,292.02,293.63,183000000,293.63 +1987-04-01,291.59,292.38,288.34,292.38,182600000,292.38 +1987-03-31,289.21,291.87,289.07,291.70,171800000,291.70 +1987-03-30,296.10,296.13,286.69,289.20,208400000,289.20 +1987-03-27,300.96,301.41,296.06,296.13,184400000,296.13 +1987-03-26,300.39,302.72,300.38,300.93,196000000,300.93 +1987-03-25,301.52,301.85,299.36,300.38,171300000,300.38 +1987-03-24,301.17,301.92,300.14,301.64,189900000,301.64 +1987-03-23,298.16,301.17,297.50,301.16,189100000,301.16 +1987-03-20,294.08,298.17,294.08,298.17,234000000,298.17 +1987-03-19,292.73,294.46,292.26,294.08,166100000,294.08 +1987-03-18,292.49,294.58,290.87,292.78,198100000,292.78 +1987-03-17,288.09,292.47,287.96,292.47,177300000,292.47 +1987-03-16,289.88,289.89,286.64,288.23,134900000,288.23 +1987-03-13,291.22,291.79,289.88,289.89,150900000,289.89 +1987-03-12,290.33,291.91,289.66,291.22,174500000,291.22 +1987-03-11,290.87,292.51,289.33,290.31,186900000,290.31 +1987-03-10,288.30,290.87,287.89,290.86,174800000,290.86 +1987-03-09,290.66,290.66,287.12,288.30,165400000,288.30 +1987-03-06,290.52,290.67,288.77,290.66,181600000,290.66 +1987-03-05,288.62,291.24,288.60,290.52,205400000,290.52 +1987-03-04,284.12,288.62,284.12,288.62,198400000,288.62 +1987-03-03,283.00,284.19,282.92,284.12,149200000,284.12 +1987-03-02,284.17,284.83,282.30,283.00,156700000,283.00 +1987-02-27,282.96,284.55,282.77,284.20,142800000,284.20 +1987-02-26,284.00,284.40,280.73,282.96,165800000,282.96 +1987-02-25,282.88,285.35,282.14,284.00,184100000,284.00 +1987-02-24,282.38,283.33,281.45,282.88,151300000,282.88 +1987-02-23,285.48,285.50,279.37,282.38,170500000,282.38 +1987-02-20,285.57,285.98,284.31,285.48,175800000,285.48 +1987-02-19,285.42,286.24,283.84,285.57,181500000,285.57 +1987-02-18,285.49,287.55,282.97,285.42,218200000,285.42 +1987-02-17,279.70,285.49,279.70,285.49,187800000,285.49 +1987-02-13,275.62,280.91,275.01,279.70,184400000,279.70 +1987-02-12,277.54,278.04,273.89,275.62,200400000,275.62 +1987-02-11,275.07,277.71,274.71,277.54,172400000,277.54 +1987-02-10,278.16,278.16,273.49,275.07,168300000,275.07 +1987-02-09,280.04,280.04,277.24,278.16,143300000,278.16 +1987-02-06,281.16,281.79,279.87,280.04,184100000,280.04 +1987-02-05,279.64,282.26,278.66,281.16,256700000,281.16 +1987-02-04,275.99,279.65,275.35,279.64,222400000,279.64 +1987-02-03,276.45,277.83,275.84,275.99,198100000,275.99 +1987-02-02,274.08,277.35,273.16,276.45,177400000,276.45 +1987-01-30,274.24,274.24,271.38,274.08,163400000,274.08 +1987-01-29,275.40,276.85,272.54,274.24,205300000,274.24 +1987-01-28,273.75,275.71,273.03,275.40,195800000,275.40 +1987-01-27,269.61,274.31,269.61,273.75,192300000,273.75 +1987-01-26,270.10,270.40,267.73,269.61,138900000,269.61 +1987-01-23,273.91,280.96,268.41,270.10,302400000,270.10 +1987-01-22,267.84,274.05,267.32,273.91,188700000,273.91 +1987-01-21,269.04,270.87,267.35,267.84,184200000,267.84 +1987-01-20,269.34,271.03,267.65,269.04,224800000,269.04 +1987-01-19,266.26,269.34,264.00,269.34,162800000,269.34 +1987-01-16,265.46,267.24,264.31,266.28,218400000,266.28 +1987-01-15,262.65,266.68,262.64,265.49,253100000,265.49 +1987-01-14,259.95,262.72,259.62,262.64,214200000,262.64 +1987-01-13,260.30,260.45,259.21,259.95,170900000,259.95 +1987-01-12,258.72,261.36,257.92,260.30,184200000,260.30 +1987-01-09,257.26,259.20,256.11,258.73,193000000,258.73 +1987-01-08,255.36,257.28,254.97,257.28,194500000,257.28 +1987-01-07,252.78,255.72,252.65,255.33,190900000,255.33 +1987-01-06,252.20,253.99,252.14,252.78,189300000,252.78 +1987-01-05,246.45,252.57,246.45,252.19,181900000,252.19 +1987-01-02,242.17,246.45,242.17,246.45,91880000,246.45 +1986-12-31,243.37,244.03,241.28,242.17,139200000,242.17 +1986-12-30,244.66,244.67,243.04,243.37,126200000,243.37 +1986-12-29,246.90,246.92,244.31,244.67,99800000,244.67 +1986-12-26,246.75,247.09,246.73,246.92,48860000,246.92 +1986-12-24,246.34,247.22,246.02,246.75,95410000,246.75 +1986-12-23,248.75,248.75,245.85,246.34,188700000,246.34 +1986-12-22,249.73,249.73,247.45,248.75,157600000,248.75 +1986-12-19,246.79,249.96,245.89,249.73,244700000,249.73 +1986-12-18,247.56,247.81,246.45,246.78,155400000,246.78 +1986-12-17,250.01,250.04,247.19,247.56,148800000,247.56 +1986-12-16,248.21,250.04,247.40,250.04,157000000,250.04 +1986-12-15,247.31,248.23,244.92,248.21,148200000,248.21 +1986-12-12,248.17,248.31,247.02,247.35,126600000,247.35 +1986-12-11,250.97,250.98,247.15,248.17,136000000,248.17 +1986-12-10,249.28,251.53,248.94,250.96,139700000,250.96 +1986-12-09,251.16,251.27,249.25,249.28,128700000,249.28 +1986-12-08,251.16,252.36,248.82,251.16,159000000,251.16 +1986-12-05,253.05,253.89,250.71,251.17,139800000,251.17 +1986-12-04,253.85,254.42,252.88,253.04,156900000,253.04 +1986-12-03,254.00,254.87,253.24,253.85,200100000,253.85 +1986-12-02,249.06,254.00,249.05,254.00,230400000,254.00 +1986-12-01,249.22,249.22,245.72,249.05,133800000,249.05 +1986-11-28,248.82,249.22,248.07,249.22,93530000,249.22 +1986-11-26,248.14,248.90,247.73,248.77,152000000,248.77 +1986-11-25,247.44,248.18,246.30,248.17,154600000,248.17 +1986-11-24,245.86,248.00,245.21,247.45,150800000,247.45 +1986-11-21,242.03,246.38,241.97,245.86,200700000,245.86 +1986-11-20,237.66,242.05,237.66,242.05,158100000,242.05 +1986-11-19,236.77,237.94,235.51,237.66,183300000,237.66 +1986-11-18,243.20,243.23,236.65,236.78,185300000,236.78 +1986-11-17,244.50,244.80,242.29,243.21,133300000,243.21 +1986-11-14,243.01,244.51,241.96,244.50,172100000,244.50 +1986-11-13,246.63,246.66,242.98,243.02,164000000,243.02 +1986-11-12,247.06,247.67,245.68,246.64,162200000,246.64 +1986-11-11,246.15,247.10,246.12,247.08,118500000,247.08 +1986-11-10,245.75,246.22,244.68,246.13,120200000,246.13 +1986-11-07,245.85,246.13,244.92,245.77,142300000,245.77 +1986-11-06,246.54,246.90,244.30,245.87,165300000,245.87 +1986-11-05,246.09,247.05,245.21,246.58,183200000,246.58 +1986-11-04,245.80,246.43,244.42,246.20,163200000,246.20 +1986-11-03,243.97,245.80,243.93,245.80,138200000,245.80 +1986-10-31,243.70,244.51,242.95,243.98,147200000,243.98 +1986-10-30,240.97,244.08,240.94,243.71,194200000,243.71 +1986-10-29,239.23,241.00,238.98,240.94,164400000,240.94 +1986-10-28,238.81,240.58,238.77,239.26,145900000,239.26 +1986-10-27,238.22,238.77,236.72,238.77,133200000,238.77 +1986-10-24,239.30,239.65,238.25,238.26,137500000,238.26 +1986-10-23,236.28,239.76,236.26,239.28,150900000,239.28 +1986-10-22,235.89,236.64,235.82,236.26,114000000,236.26 +1986-10-21,236.03,236.49,234.95,235.88,110000000,235.88 +1986-10-20,238.84,238.84,234.78,235.97,109000000,235.97 +1986-10-17,239.50,239.53,237.71,238.84,124100000,238.84 +1986-10-16,238.83,240.18,238.80,239.53,156900000,239.53 +1986-10-15,235.36,239.03,235.27,238.80,144300000,238.80 +1986-10-14,235.90,236.37,234.37,235.37,116800000,235.37 +1986-10-13,235.52,235.91,235.02,235.91,54990000,235.91 +1986-10-10,235.84,236.27,235.31,235.48,105100000,235.48 +1986-10-09,236.67,238.20,235.72,235.85,153400000,235.85 +1986-10-08,234.41,236.84,233.68,236.68,141700000,236.68 +1986-10-07,234.74,235.18,233.46,234.41,125100000,234.41 +1986-10-06,233.71,235.34,233.17,234.78,88250000,234.78 +1986-10-03,233.92,236.16,232.79,233.71,128100000,233.71 +1986-10-02,233.60,234.33,232.77,233.92,128100000,233.92 +1986-10-01,231.32,234.62,231.32,233.60,143600000,233.60 +1986-09-30,229.91,233.01,229.91,231.32,124900000,231.32 +1986-09-29,232.23,232.23,228.08,229.91,115600000,229.91 +1986-09-26,231.83,233.68,230.64,232.23,115300000,232.23 +1986-09-25,231.83,236.28,230.67,231.83,134300000,231.83 +1986-09-24,235.66,237.06,235.53,236.28,134600000,236.28 +1986-09-23,234.96,235.88,234.50,235.67,132600000,235.67 +1986-09-22,232.20,234.93,232.20,234.93,126100000,234.93 +1986-09-19,232.30,232.31,230.69,232.21,153900000,232.21 +1986-09-18,231.67,232.87,230.57,232.31,132200000,232.31 +1986-09-17,231.73,233.81,231.38,231.68,141000000,231.68 +1986-09-16,231.93,231.94,228.32,231.72,131200000,231.72 +1986-09-15,230.67,232.82,229.44,231.94,155600000,231.94 +1986-09-12,235.18,235.45,228.74,230.67,240500000,230.67 +1986-09-11,247.06,247.06,234.67,235.18,237600000,235.18 +1986-09-10,247.67,247.76,246.11,247.06,140300000,247.06 +1986-09-09,248.14,250.21,246.94,247.67,137500000,247.67 +1986-09-08,250.47,250.47,247.02,248.14,153300000,248.14 +1986-09-05,253.83,254.13,250.33,250.47,180600000,250.47 +1986-09-04,250.08,254.01,250.03,253.83,189400000,253.83 +1986-09-03,248.52,250.08,247.59,250.08,154300000,250.08 +1986-09-02,252.93,253.30,248.14,248.52,135500000,248.52 +1986-08-29,252.84,254.07,251.73,252.93,125300000,252.93 +1986-08-28,253.30,253.67,251.91,252.84,125100000,252.84 +1986-08-27,252.84,254.24,252.66,253.30,143300000,253.30 +1986-08-26,247.81,252.91,247.81,252.84,156600000,252.84 +1986-08-25,250.19,250.26,247.76,247.81,104400000,247.81 +1986-08-22,249.67,250.61,249.27,250.19,118100000,250.19 +1986-08-21,249.77,250.45,249.11,249.67,135200000,249.67 +1986-08-20,246.53,249.77,246.51,249.77,156600000,249.77 +1986-08-19,247.38,247.42,245.82,246.51,109300000,246.51 +1986-08-18,247.15,247.83,245.48,247.38,112800000,247.38 +1986-08-15,246.25,247.15,245.70,247.15,123500000,247.15 +1986-08-14,245.67,246.79,245.53,246.25,123800000,246.25 +1986-08-13,243.34,246.51,243.06,245.67,156400000,245.67 +1986-08-12,240.68,243.37,240.35,243.34,131700000,243.34 +1986-08-11,236.88,241.20,236.87,240.68,125600000,240.68 +1986-08-08,237.04,238.06,236.37,236.88,106300000,236.88 +1986-08-07,236.84,238.02,236.31,237.04,122400000,237.04 +1986-08-06,237.03,237.35,235.48,236.84,127500000,236.84 +1986-08-05,235.99,238.31,235.97,237.03,153100000,237.03 +1986-08-04,234.91,236.86,231.92,235.99,130000000,235.99 +1986-08-01,236.12,236.89,234.59,234.91,114900000,234.91 +1986-07-31,236.59,236.92,235.89,236.12,112700000,236.12 +1986-07-30,234.57,237.38,233.07,236.59,146700000,236.59 +1986-07-29,235.72,236.01,234.40,234.55,115700000,234.55 +1986-07-28,240.20,240.25,235.23,236.01,128000000,236.01 +1986-07-25,237.99,240.36,237.95,240.22,132000000,240.22 +1986-07-24,238.69,239.05,237.32,237.95,134700000,237.95 +1986-07-23,238.19,239.25,238.17,238.67,133300000,238.67 +1986-07-22,236.24,238.42,235.92,238.18,138500000,238.18 +1986-07-21,236.36,236.45,235.53,236.24,106300000,236.24 +1986-07-18,236.07,238.22,233.94,236.36,149700000,236.36 +1986-07-17,235.01,236.65,235.01,236.07,132400000,236.07 +1986-07-16,233.66,236.19,233.66,235.01,160800000,235.01 +1986-07-15,238.09,238.12,233.60,233.66,184000000,233.66 +1986-07-14,242.22,242.22,238.04,238.11,123200000,238.11 +1986-07-11,243.01,243.48,241.68,242.22,124500000,242.22 +1986-07-10,242.82,243.44,239.66,243.01,146200000,243.01 +1986-07-09,241.59,243.07,241.46,242.82,142900000,242.82 +1986-07-08,244.05,244.06,239.07,241.59,174100000,241.59 +1986-07-07,251.79,251.81,243.63,244.05,138200000,244.05 +1986-07-03,252.70,252.94,251.23,251.79,108300000,251.79 +1986-07-02,252.04,253.20,251.79,252.70,150000000,252.70 +1986-07-01,250.67,252.04,250.53,252.04,147700000,252.04 +1986-06-30,249.60,251.81,249.60,250.84,135100000,250.84 +1986-06-27,248.74,249.74,248.74,249.60,123800000,249.60 +1986-06-26,248.93,249.43,247.72,248.74,134100000,248.74 +1986-06-25,247.03,250.13,247.03,248.93,161800000,248.93 +1986-06-24,245.26,248.26,244.53,247.03,140600000,247.03 +1986-06-23,247.58,247.58,244.45,245.26,123800000,245.26 +1986-06-20,244.06,247.60,243.98,247.58,149100000,247.58 +1986-06-19,244.99,245.80,244.05,244.06,129000000,244.06 +1986-06-18,244.35,245.25,242.57,244.99,117000000,244.99 +1986-06-17,246.13,246.26,243.60,244.35,123100000,244.35 +1986-06-16,245.73,246.50,245.17,246.13,112100000,246.13 +1986-06-13,241.71,245.91,241.71,245.73,141200000,245.73 +1986-06-12,241.24,241.64,240.70,241.49,109100000,241.49 +1986-06-11,239.58,241.13,239.21,241.13,127400000,241.13 +1986-06-10,239.96,240.08,238.23,239.58,125000000,239.58 +1986-06-09,245.67,245.67,239.68,239.96,123300000,239.96 +1986-06-06,245.65,246.07,244.43,245.67,110900000,245.67 +1986-06-05,243.94,245.66,243.41,245.65,110900000,245.65 +1986-06-04,245.51,246.30,242.59,243.94,117000000,243.94 +1986-06-03,245.04,245.51,243.67,245.51,114700000,245.51 +1986-06-02,246.04,247.74,243.83,245.04,120600000,245.04 +1986-05-30,247.98,249.19,246.43,247.35,151200000,247.35 +1986-05-29,246.63,248.32,245.29,247.98,135700000,247.98 +1986-05-28,244.75,247.40,244.75,246.63,159600000,246.63 +1986-05-27,241.35,244.76,241.35,244.75,121200000,244.75 +1986-05-23,240.12,242.16,240.12,241.35,130200000,241.35 +1986-05-22,235.45,240.25,235.45,240.12,144900000,240.12 +1986-05-21,236.11,236.83,235.45,235.45,117100000,235.45 +1986-05-20,233.20,236.12,232.58,236.11,113000000,236.11 +1986-05-19,232.76,233.54,232.41,233.20,85840000,233.20 +1986-05-16,234.43,234.43,232.26,232.76,113500000,232.76 +1986-05-15,237.54,237.54,233.93,234.43,131600000,234.43 +1986-05-14,236.41,237.54,235.85,237.54,132100000,237.54 +1986-05-13,237.58,237.87,236.02,236.41,119200000,236.41 +1986-05-12,237.85,238.53,237.02,237.58,125400000,237.58 +1986-05-09,237.13,238.01,235.85,237.85,137400000,237.85 +1986-05-08,236.08,237.96,236.08,237.13,136000000,237.13 +1986-05-07,236.56,237.24,233.98,236.08,129900000,236.08 +1986-05-06,237.73,238.28,236.26,237.24,121200000,237.24 +1986-05-05,234.79,237.73,234.79,237.73,102400000,237.73 +1986-05-02,235.16,236.52,234.15,234.79,126300000,234.79 +1986-05-01,235.52,236.01,234.21,235.16,146500000,235.16 +1986-04-30,240.52,240.52,235.26,235.52,147500000,235.52 +1986-04-29,243.08,243.57,239.23,240.51,148800000,240.51 +1986-04-28,242.29,243.08,241.23,243.08,123900000,243.08 +1986-04-25,242.02,242.80,240.91,242.29,142300000,242.29 +1986-04-24,241.75,243.13,241.65,242.02,146600000,242.02 +1986-04-23,242.42,242.42,240.08,241.75,149700000,241.75 +1986-04-22,244.74,245.47,241.30,242.42,161500000,242.42 +1986-04-21,242.38,244.78,241.88,244.74,136100000,244.74 +1986-04-18,243.03,243.47,241.74,242.38,153600000,242.38 +1986-04-17,242.22,243.36,241.89,243.03,161400000,243.03 +1986-04-16,237.73,242.57,237.73,242.22,173800000,242.22 +1986-04-15,237.28,238.09,236.64,237.73,123700000,237.73 +1986-04-14,235.97,237.48,235.43,237.28,106700000,237.28 +1986-04-11,236.44,237.85,235.13,235.97,139400000,235.97 +1986-04-10,233.75,236.54,233.75,236.44,184800000,236.44 +1986-04-09,233.52,235.57,232.13,233.75,156300000,233.75 +1986-04-08,228.63,233.70,228.63,233.52,146300000,233.52 +1986-04-07,228.69,228.83,226.30,228.63,129800000,228.63 +1986-04-04,232.47,232.56,228.32,228.69,147300000,228.69 +1986-04-03,235.71,236.42,232.07,232.47,148200000,232.47 +1986-04-02,235.14,235.71,233.40,235.71,145300000,235.71 +1986-04-01,238.90,239.10,234.57,235.14,167400000,235.14 +1986-03-31,238.97,239.86,238.08,238.90,134400000,238.90 +1986-03-27,237.30,240.11,237.30,238.97,178100000,238.97 +1986-03-26,234.72,237.79,234.71,237.30,161500000,237.30 +1986-03-25,235.33,235.33,233.62,234.72,139300000,234.72 +1986-03-24,233.34,235.33,232.92,235.33,143800000,235.33 +1986-03-21,236.54,237.35,233.29,233.34,199100000,233.34 +1986-03-20,235.60,237.09,235.60,236.54,148000000,236.54 +1986-03-19,235.78,236.52,235.13,235.60,150000000,235.60 +1986-03-18,234.67,236.52,234.14,235.78,148000000,235.78 +1986-03-17,236.55,236.55,233.69,234.67,137500000,234.67 +1986-03-14,233.19,236.55,232.58,236.55,181900000,236.55 +1986-03-13,232.54,233.89,231.27,233.19,171500000,233.19 +1986-03-12,231.69,234.70,231.68,232.54,210300000,232.54 +1986-03-11,226.58,231.81,226.58,231.69,187300000,231.69 +1986-03-10,225.57,226.98,225.36,226.58,129900000,226.58 +1986-03-07,225.13,226.33,224.44,225.57,163200000,225.57 +1986-03-06,224.39,225.50,224.13,225.13,159000000,225.13 +1986-03-05,224.14,224.37,222.18,224.34,154600000,224.34 +1986-03-04,225.42,227.33,223.94,224.38,174500000,224.38 +1986-03-03,226.92,226.92,224.41,225.42,142700000,225.42 +1986-02-28,226.77,227.92,225.42,226.92,191700000,226.92 +1986-02-27,224.04,226.88,223.41,226.77,181700000,226.77 +1986-02-26,223.72,224.59,223.15,224.04,158000000,224.04 +1986-02-25,224.34,224.40,222.63,223.79,148000000,223.79 +1986-02-24,224.58,225.29,223.31,224.34,144700000,224.34 +1986-02-21,222.22,224.62,222.22,224.62,177600000,224.62 +1986-02-20,219.76,222.22,219.22,222.22,139700000,222.22 +1986-02-19,222.45,222.96,219.73,219.76,152000000,219.76 +1986-02-18,219.76,222.45,219.26,222.45,160200000,222.45 +1986-02-14,217.40,219.76,217.22,219.76,155600000,219.76 +1986-02-13,215.97,217.41,215.38,217.40,136500000,217.40 +1986-02-12,215.92,216.28,215.13,215.97,136400000,215.97 +1986-02-11,216.24,216.67,215.54,215.92,141300000,215.92 +1986-02-10,214.56,216.24,214.47,216.24,129900000,216.24 +1986-02-07,213.47,215.27,211.13,214.56,144400000,214.56 +1986-02-06,212.96,214.51,212.60,213.47,146100000,213.47 +1986-02-05,212.84,213.03,211.21,212.96,134300000,212.96 +1986-02-04,213.96,214.57,210.82,212.79,175700000,212.79 +1986-02-03,211.78,214.18,211.60,213.96,145300000,213.96 +1986-01-31,209.33,212.42,209.19,211.78,143500000,211.78 +1986-01-30,210.29,211.54,209.15,209.33,125300000,209.33 +1986-01-29,209.81,212.36,209.81,210.29,193800000,210.29 +1986-01-28,207.42,209.82,207.40,209.81,145700000,209.81 +1986-01-27,206.43,207.69,206.43,207.39,122900000,207.39 +1986-01-24,204.25,206.43,204.25,206.43,128900000,206.43 +1986-01-23,203.49,204.43,202.60,204.25,130300000,204.25 +1986-01-22,205.79,206.03,203.41,203.49,131200000,203.49 +1986-01-21,207.53,207.78,205.05,205.79,128300000,205.79 +1986-01-20,208.43,208.43,206.62,207.53,85340000,207.53 +1986-01-17,209.17,209.40,207.59,208.43,132100000,208.43 +1986-01-16,208.26,209.18,207.61,209.17,130500000,209.17 +1986-01-15,206.64,208.27,206.64,208.26,122400000,208.26 +1986-01-14,206.72,207.37,206.06,206.64,113900000,206.64 +1986-01-13,205.96,206.83,205.52,206.72,108700000,206.72 +1986-01-10,206.11,207.33,205.52,205.96,122800000,205.96 +1986-01-09,207.97,207.97,204.51,206.11,176500000,206.11 +1986-01-08,213.80,214.57,207.49,207.97,180300000,207.97 +1986-01-07,210.65,213.80,210.65,213.80,153000000,213.80 +1986-01-06,210.88,210.98,209.93,210.65,99610000,210.65 +1986-01-03,209.59,210.88,209.51,210.88,105000000,210.88 +1986-01-02,211.28,211.28,208.93,209.59,98960000,209.59 +1985-12-31,210.68,211.61,210.68,211.28,112700000,211.28 +1985-12-30,209.61,210.70,209.17,210.68,91970000,210.68 +1985-12-27,207.65,209.62,207.65,209.61,81560000,209.61 +1985-12-26,207.14,207.76,207.05,207.65,62050000,207.65 +1985-12-24,208.57,208.57,206.44,207.14,78300000,207.14 +1985-12-23,210.57,210.94,208.44,208.57,107900000,208.57 +1985-12-20,210.02,211.77,210.02,210.94,170300000,210.94 +1985-12-19,209.81,210.13,209.25,210.02,130200000,210.02 +1985-12-18,210.65,211.23,209.24,209.81,137900000,209.81 +1985-12-17,212.02,212.45,210.58,210.65,155200000,210.65 +1985-12-16,209.94,213.08,209.91,212.02,176000000,212.02 +1985-12-13,206.73,210.31,206.73,209.94,177900000,209.94 +1985-12-12,206.31,207.65,205.83,206.73,170500000,206.73 +1985-12-11,204.39,206.68,204.17,206.31,178500000,206.31 +1985-12-10,204.25,205.16,203.68,204.39,156500000,204.39 +1985-12-09,202.99,204.65,202.98,204.25,144000000,204.25 +1985-12-06,203.88,203.88,202.45,202.99,125500000,202.99 +1985-12-05,204.23,205.86,203.79,203.88,181000000,203.88 +1985-12-04,200.86,204.23,200.86,204.23,153200000,204.23 +1985-12-03,200.46,200.98,200.10,200.86,109700000,200.86 +1985-12-02,202.17,202.19,200.20,200.46,103500000,200.46 +1985-11-29,202.54,203.40,201.92,202.17,84060000,202.17 +1985-11-27,200.67,202.65,200.67,202.54,143700000,202.54 +1985-11-26,200.35,201.16,200.11,200.67,123100000,200.67 +1985-11-25,201.52,201.52,200.08,200.35,91710000,200.35 +1985-11-22,201.41,202.01,201.05,201.52,133800000,201.52 +1985-11-21,198.99,201.43,198.99,201.41,150300000,201.41 +1985-11-20,198.67,199.20,198.52,198.99,105100000,198.99 +1985-11-19,198.71,199.52,198.01,198.67,126100000,198.67 +1985-11-18,198.11,198.71,197.51,198.71,108400000,198.71 +1985-11-15,199.06,199.58,197.90,198.11,130200000,198.11 +1985-11-14,197.10,199.19,196.88,199.06,124900000,199.06 +1985-11-13,198.08,198.11,196.91,197.10,109700000,197.10 +1985-11-12,197.28,198.66,196.97,198.08,170800000,198.08 +1985-11-11,193.72,197.29,193.70,197.28,126500000,197.28 +1985-11-08,192.62,193.97,192.53,193.72,115000000,193.72 +1985-11-07,192.78,192.96,192.16,192.62,119000000,192.62 +1985-11-06,192.37,193.01,191.83,192.76,129500000,192.76 +1985-11-05,191.25,192.43,190.99,192.37,119200000,192.37 +1985-11-04,191.45,191.96,190.66,191.25,104900000,191.25 +1985-11-01,189.82,191.53,189.37,191.53,129400000,191.53 +1985-10-31,190.07,190.15,189.35,189.82,121500000,189.82 +1985-10-30,189.23,190.09,189.14,190.07,120400000,190.07 +1985-10-29,187.76,189.78,187.76,189.23,110600000,189.23 +1985-10-28,187.52,187.76,186.93,187.76,97880000,187.76 +1985-10-25,188.50,188.51,187.32,187.52,101800000,187.52 +1985-10-24,189.09,189.45,188.41,188.50,123100000,188.50 +1985-10-23,188.04,189.09,188.04,189.09,121700000,189.09 +1985-10-22,186.96,188.56,186.96,188.04,111300000,188.04 +1985-10-21,187.04,187.30,186.79,186.96,95680000,186.96 +1985-10-18,187.66,188.11,186.89,187.04,107100000,187.04 +1985-10-17,187.98,188.52,187.42,187.66,140500000,187.66 +1985-10-16,186.08,187.98,186.08,187.98,117400000,187.98 +1985-10-15,186.37,187.16,185.66,186.08,110400000,186.08 +1985-10-14,184.31,186.37,184.28,186.37,78540000,186.37 +1985-10-11,182.78,184.28,182.61,184.28,96370000,184.28 +1985-10-10,182.52,182.79,182.05,182.78,90910000,182.78 +1985-10-09,181.87,183.27,181.87,182.52,99140000,182.52 +1985-10-08,181.87,182.30,181.16,181.87,97170000,181.87 +1985-10-07,183.22,183.22,181.30,181.87,95550000,181.87 +1985-10-04,184.36,184.36,182.65,183.22,101200000,183.22 +1985-10-03,184.06,185.17,183.59,184.36,127500000,184.36 +1985-10-02,185.07,185.94,184.06,184.06,147300000,184.06 +1985-10-01,182.06,185.08,182.02,185.07,130200000,185.07 +1985-09-30,181.30,182.08,181.22,182.08,103600000,182.08 +1985-09-26,180.66,181.29,179.45,181.29,106100000,181.29 +1985-09-25,182.62,182.62,180.62,180.66,92120000,180.66 +1985-09-24,184.30,184.30,182.42,182.62,97870000,182.62 +1985-09-23,182.05,184.65,182.05,184.30,104800000,184.30 +1985-09-20,183.39,183.99,182.04,182.05,101400000,182.05 +1985-09-19,181.71,183.40,181.71,183.39,100300000,183.39 +1985-09-18,181.36,181.83,180.81,181.71,105700000,181.71 +1985-09-17,182.88,182.88,180.78,181.36,111900000,181.36 +1985-09-16,182.91,182.91,182.45,182.88,66700000,182.88 +1985-09-13,183.69,184.19,182.05,182.91,111400000,182.91 +1985-09-12,185.03,185.21,183.49,183.69,107100000,183.69 +1985-09-11,186.90,186.90,184.79,185.03,100400000,185.03 +1985-09-10,188.25,188.26,186.50,186.90,104700000,186.90 +1985-09-09,188.24,188.80,187.90,188.25,89850000,188.25 +1985-09-06,187.27,188.43,187.27,188.24,95040000,188.24 +1985-09-05,187.37,187.52,186.89,187.27,94480000,187.27 +1985-09-04,187.91,187.92,186.97,187.37,85510000,187.37 +1985-09-03,188.63,188.63,187.38,187.91,81190000,187.91 +1985-08-30,188.93,189.13,188.00,188.63,81620000,188.63 +1985-08-29,188.73,188.94,188.38,188.93,85660000,188.93 +1985-08-28,188.10,188.83,187.90,188.83,88530000,188.83 +1985-08-27,187.31,188.10,187.31,188.10,82140000,188.10 +1985-08-26,187.17,187.44,186.46,187.31,70290000,187.31 +1985-08-23,187.22,187.35,186.59,187.17,75270000,187.17 +1985-08-22,189.11,189.23,187.20,187.36,90600000,187.36 +1985-08-21,188.08,189.16,188.08,189.16,94880000,189.16 +1985-08-20,186.38,188.27,186.38,188.08,91230000,188.08 +1985-08-19,186.10,186.82,186.10,186.38,67930000,186.38 +1985-08-16,187.26,187.26,186.10,186.10,87910000,186.10 +1985-08-15,187.41,187.74,186.62,187.26,86100000,187.26 +1985-08-14,187.30,187.87,187.30,187.41,85780000,187.41 +1985-08-13,187.63,188.15,186.51,187.30,80300000,187.30 +1985-08-12,188.32,188.32,187.43,187.63,77340000,187.63 +1985-08-09,188.95,189.05,188.11,188.32,81750000,188.32 +1985-08-08,187.68,188.96,187.68,188.95,102900000,188.95 +1985-08-07,187.93,187.93,187.39,187.68,100000000,187.68 +1985-08-06,190.62,190.72,187.87,187.93,104000000,187.93 +1985-08-05,191.48,191.48,189.95,190.62,79610000,190.62 +1985-08-02,192.11,192.11,191.27,191.48,87860000,191.48 +1985-08-01,190.92,192.17,190.91,192.11,121500000,192.11 +1985-07-31,189.93,191.33,189.93,190.92,124200000,190.92 +1985-07-30,189.62,190.05,189.30,189.93,102300000,189.93 +1985-07-29,192.40,192.42,189.53,189.60,95960000,189.60 +1985-07-26,192.06,192.78,191.58,192.40,107000000,192.40 +1985-07-25,191.58,192.23,191.17,192.06,123300000,192.06 +1985-07-24,192.55,192.55,190.66,191.58,128600000,191.58 +1985-07-23,194.35,194.98,192.28,192.55,143600000,192.55 +1985-07-22,195.13,195.13,193.58,194.35,93540000,194.35 +1985-07-19,194.38,195.13,194.28,195.13,114800000,195.13 +1985-07-18,195.65,195.65,194.34,194.38,131400000,194.38 +1985-07-17,194.86,196.07,194.72,195.65,159900000,195.65 +1985-07-16,192.72,194.72,192.72,194.72,132500000,194.72 +1985-07-15,193.29,193.84,192.55,192.72,103900000,192.72 +1985-07-12,192.94,193.32,192.64,193.29,120300000,193.29 +1985-07-11,192.37,192.95,192.28,192.94,122800000,192.94 +1985-07-10,191.05,192.37,190.99,192.37,108200000,192.37 +1985-07-09,191.93,191.93,190.81,191.05,99060000,191.05 +1985-07-08,192.47,192.52,191.26,191.93,83670000,191.93 +1985-07-05,191.45,192.67,191.45,192.52,62450000,192.52 +1985-07-03,192.01,192.08,191.37,191.45,98410000,191.45 +1985-07-02,192.43,192.63,191.84,192.01,111100000,192.01 +1985-07-01,191.85,192.43,191.17,192.43,96080000,192.43 +1985-06-28,191.23,191.85,191.04,191.85,105200000,191.85 +1985-06-27,190.06,191.36,190.06,191.23,106700000,191.23 +1985-06-26,189.74,190.26,189.44,190.06,94130000,190.06 +1985-06-25,189.15,190.96,189.15,189.74,115700000,189.74 +1985-06-24,188.77,189.61,187.84,189.15,96040000,189.15 +1985-06-21,186.73,189.66,186.43,189.61,125400000,189.61 +1985-06-20,186.63,186.74,185.97,186.73,87500000,186.73 +1985-06-19,187.34,187.98,186.63,186.63,108300000,186.63 +1985-06-18,186.53,187.65,186.51,187.34,106900000,187.34 +1985-06-17,187.10,187.10,185.98,186.53,82170000,186.53 +1985-06-14,185.33,187.10,185.33,187.10,93090000,187.10 +1985-06-13,187.61,187.61,185.03,185.33,107000000,185.33 +1985-06-12,189.04,189.04,187.59,187.61,97700000,187.61 +1985-06-11,189.51,189.61,188.78,189.04,102100000,189.04 +1985-06-10,189.68,189.68,188.82,189.51,87940000,189.51 +1985-06-07,191.06,191.29,189.55,189.68,99630000,189.68 +1985-06-06,189.75,191.06,189.13,191.06,117200000,191.06 +1985-06-05,190.04,191.02,190.04,190.16,143900000,190.16 +1985-06-04,189.32,190.27,188.88,190.04,115400000,190.04 +1985-06-03,189.55,190.36,188.93,189.32,125000000,189.32 +1985-05-31,187.75,189.59,187.45,189.55,134100000,189.55 +1985-05-30,187.68,188.04,187.09,187.75,108300000,187.75 +1985-05-29,187.86,187.86,187.11,187.68,96540000,187.68 +1985-05-28,188.29,188.94,187.38,187.86,90600000,187.86 +1985-05-24,187.60,188.29,187.29,188.29,85970000,188.29 +1985-05-23,188.56,188.56,187.45,187.60,101000000,187.60 +1985-05-22,189.64,189.64,187.71,188.56,101400000,188.56 +1985-05-21,189.72,189.81,188.78,189.64,130200000,189.64 +1985-05-20,187.42,189.98,187.42,189.72,146300000,189.72 +1985-05-17,185.66,187.94,185.47,187.42,124600000,187.42 +1985-05-16,184.54,185.74,184.54,185.66,99420000,185.66 +1985-05-15,183.87,185.43,183.86,184.54,106100000,184.54 +1985-05-14,184.61,185.17,183.65,183.87,97360000,183.87 +1985-05-13,184.28,184.61,184.19,184.61,85830000,184.61 +1985-05-10,181.92,184.74,181.92,184.28,140300000,184.28 +1985-05-09,180.62,181.97,180.62,181.92,111000000,181.92 +1985-05-08,180.76,180.76,179.96,180.62,101300000,180.62 +1985-05-07,179.99,181.09,179.87,180.76,100200000,180.76 +1985-05-06,180.08,180.56,179.82,179.99,85650000,179.99 +1985-05-03,179.01,180.30,179.01,180.08,94870000,180.08 +1985-05-02,178.37,179.01,178.37,179.01,107700000,179.01 +1985-05-01,179.83,180.04,178.35,178.37,101600000,178.37 +1985-04-30,180.63,180.63,178.86,179.83,111800000,179.83 +1985-04-29,182.18,182.34,180.62,180.63,88860000,180.63 +1985-04-26,183.43,183.61,182.11,182.18,86570000,182.18 +1985-04-25,182.26,183.43,182.12,183.43,108600000,183.43 +1985-04-24,181.88,182.27,181.74,182.26,99600000,182.26 +1985-04-23,180.70,181.97,180.34,181.88,108900000,181.88 +1985-04-22,181.11,181.23,180.25,180.70,79930000,180.70 +1985-04-19,180.84,181.25,180.42,181.11,81110000,181.11 +1985-04-18,181.68,182.56,180.75,180.84,100600000,180.84 +1985-04-17,181.20,181.91,181.14,181.68,96020000,181.68 +1985-04-16,180.92,181.78,180.19,181.20,98480000,181.20 +1985-04-15,180.54,181.15,180.45,180.92,80660000,180.92 +1985-04-12,180.19,180.55,180.06,180.54,86220000,180.54 +1985-04-11,179.42,180.91,179.42,180.19,108400000,180.19 +1985-04-10,178.21,179.90,178.21,179.42,108200000,179.42 +1985-04-09,178.03,178.67,177.97,178.21,83980000,178.21 +1985-04-08,179.03,179.46,177.86,178.03,79960000,178.03 +1985-04-04,179.11,179.13,178.29,179.03,86910000,179.03 +1985-04-03,180.53,180.53,178.64,179.11,95480000,179.11 +1985-04-02,181.27,181.86,180.28,180.53,101700000,180.53 +1985-04-01,180.66,181.27,180.43,181.27,89900000,181.27 +1985-03-29,179.54,180.66,179.54,180.66,101400000,180.66 +1985-03-28,179.54,180.60,179.43,179.54,99780000,179.54 +1985-03-27,178.43,179.80,178.43,179.54,101000000,179.54 +1985-03-26,177.97,178.86,177.88,178.43,89930000,178.43 +1985-03-25,179.04,179.04,177.85,177.97,74040000,177.97 +1985-03-22,179.35,179.92,178.86,179.04,99250000,179.04 +1985-03-21,179.08,180.22,178.89,179.35,95930000,179.35 +1985-03-20,179.54,179.78,178.79,179.08,107500000,179.08 +1985-03-19,176.88,179.56,176.87,179.54,119200000,179.54 +1985-03-18,176.53,177.66,176.53,176.88,94020000,176.88 +1985-03-15,177.84,178.41,176.53,176.53,105200000,176.53 +1985-03-14,178.19,178.53,177.61,177.84,103400000,177.84 +1985-03-13,179.66,179.96,178.02,178.19,101700000,178.19 +1985-03-12,178.79,180.14,178.70,179.66,92840000,179.66 +1985-03-11,179.10,179.46,178.15,178.79,84110000,178.79 +1985-03-08,179.51,179.97,179.07,179.10,96390000,179.10 +1985-03-07,180.65,180.65,179.44,179.51,112100000,179.51 +1985-03-06,182.23,182.25,180.59,180.65,116900000,180.65 +1985-03-05,182.06,182.65,181.42,182.23,116400000,182.23 +1985-03-04,183.23,183.41,181.40,182.06,102100000,182.06 +1985-03-01,181.18,183.89,181.16,183.23,139900000,183.23 +1985-02-28,180.71,181.21,180.33,181.18,100700000,181.18 +1985-02-27,181.17,181.87,180.50,180.71,107700000,180.71 +1985-02-26,179.23,181.58,179.16,181.17,114200000,181.17 +1985-02-25,179.36,179.36,178.13,179.23,89740000,179.23 +1985-02-22,180.19,180.41,179.23,179.36,93680000,179.36 +1985-02-21,181.18,181.18,180.02,180.19,104000000,180.19 +1985-02-20,181.33,182.10,180.64,181.18,118200000,181.18 +1985-02-19,181.60,181.61,180.95,181.33,90400000,181.33 +1985-02-15,182.41,182.65,181.23,181.60,106500000,181.60 +1985-02-14,183.35,183.95,182.39,182.41,139700000,182.41 +1985-02-13,180.56,183.86,180.50,183.35,142500000,183.35 +1985-02-12,180.51,180.75,179.45,180.56,111100000,180.56 +1985-02-11,182.19,182.19,180.11,180.51,104000000,180.51 +1985-02-08,181.82,182.39,181.67,182.19,116500000,182.19 +1985-02-07,180.43,181.96,180.43,181.82,151700000,181.82 +1985-02-06,180.61,181.50,180.32,180.43,141000000,180.43 +1985-02-05,180.35,181.53,180.07,180.61,143900000,180.61 +1985-02-04,178.63,180.35,177.75,180.35,113700000,180.35 +1985-02-01,179.63,179.63,178.44,178.63,105400000,178.63 +1985-01-31,179.39,179.83,178.56,179.63,132500000,179.63 +1985-01-30,179.18,180.27,179.05,179.39,170000000,179.39 +1985-01-29,177.40,179.19,176.58,179.18,115700000,179.18 +1985-01-28,177.35,178.19,176.56,177.40,128400000,177.40 +1985-01-25,176.71,177.75,176.54,177.35,122400000,177.35 +1985-01-24,177.30,178.16,176.56,176.71,160700000,176.71 +1985-01-23,175.48,177.30,175.15,177.30,144400000,177.30 +1985-01-22,175.23,176.63,175.14,175.48,174800000,175.48 +1985-01-21,171.32,175.45,171.31,175.23,146800000,175.23 +1985-01-18,170.73,171.42,170.66,171.32,104700000,171.32 +1985-01-17,171.19,171.34,170.22,170.73,113600000,170.73 +1985-01-16,170.81,171.94,170.41,171.19,135500000,171.19 +1985-01-15,170.51,171.82,170.40,170.81,155300000,170.81 +1985-01-14,167.91,170.55,167.58,170.51,124900000,170.51 +1985-01-11,168.31,168.72,167.58,167.91,107600000,167.91 +1985-01-10,165.18,168.31,164.99,168.31,124700000,168.31 +1985-01-09,163.99,165.57,163.99,165.18,99230000,165.18 +1985-01-08,164.24,164.59,163.91,163.99,92110000,163.99 +1985-01-07,163.68,164.71,163.68,164.24,86190000,164.24 +1985-01-04,164.55,164.55,163.36,163.68,77480000,163.68 +1985-01-03,165.37,166.11,164.38,164.57,88880000,164.57 +1985-01-02,167.20,167.20,165.19,165.37,67820000,165.37 +1984-12-31,166.26,167.34,166.06,167.24,80260000,167.24 +1984-12-28,165.75,166.32,165.67,166.26,77070000,166.26 +1984-12-27,166.47,166.50,165.62,165.75,70100000,165.75 +1984-12-26,166.76,166.76,166.29,166.47,46700000,166.47 +1984-12-24,165.51,166.93,165.50,166.76,55550000,166.76 +1984-12-21,166.34,166.38,164.62,165.51,101200000,165.51 +1984-12-20,167.16,167.58,166.29,166.38,93220000,166.38 +1984-12-19,168.11,169.03,166.84,167.16,139600000,167.16 +1984-12-18,163.61,168.11,163.61,168.11,169000000,168.11 +1984-12-17,162.69,163.63,162.44,163.61,89490000,163.61 +1984-12-14,161.81,163.53,161.63,162.69,95060000,162.69 +1984-12-13,162.63,162.92,161.54,161.81,80850000,161.81 +1984-12-12,163.07,163.18,162.55,162.63,78710000,162.63 +1984-12-11,162.83,163.18,162.56,163.07,80240000,163.07 +1984-12-10,162.26,163.32,161.54,162.83,81140000,162.83 +1984-12-07,162.76,163.31,162.26,162.26,81000000,162.26 +1984-12-06,162.10,163.11,161.76,162.76,96560000,162.76 +1984-12-05,163.38,163.40,161.93,162.10,88700000,162.10 +1984-12-04,162.82,163.91,162.82,163.38,81250000,163.38 +1984-12-03,163.58,163.58,162.29,162.82,95300000,162.82 +1984-11-30,163.91,163.91,162.99,163.58,77580000,163.58 +1984-11-29,165.02,165.02,163.78,163.91,75860000,163.91 +1984-11-28,166.29,166.90,164.97,165.02,86300000,165.02 +1984-11-27,165.55,166.85,165.07,166.29,95470000,166.29 +1984-11-26,166.92,166.92,165.37,165.55,76520000,165.55 +1984-11-23,164.52,166.92,164.52,166.92,73910000,166.92 +1984-11-21,164.18,164.68,163.29,164.51,81620000,164.51 +1984-11-20,163.10,164.47,163.10,164.18,83240000,164.18 +1984-11-19,164.10,164.34,163.03,163.09,69730000,163.09 +1984-11-16,165.89,166.24,164.09,164.10,83140000,164.10 +1984-11-15,165.99,166.49,165.61,165.89,81530000,165.89 +1984-11-14,165.97,166.43,165.39,165.99,73940000,165.99 +1984-11-13,167.36,167.38,165.79,165.97,69790000,165.97 +1984-11-12,167.65,167.65,166.67,167.36,55610000,167.36 +1984-11-09,168.68,169.46,167.44,167.60,83620000,167.60 +1984-11-08,169.19,169.27,168.27,168.68,88580000,168.68 +1984-11-07,170.41,170.41,168.44,169.17,110800000,169.17 +1984-11-06,168.58,170.41,168.58,170.41,101200000,170.41 +1984-11-05,167.42,168.65,167.33,168.58,84730000,168.58 +1984-11-02,167.49,167.95,167.24,167.42,96810000,167.42 +1984-11-01,166.09,167.83,166.09,167.49,107300000,167.49 +1984-10-31,166.74,166.95,165.99,166.09,91890000,166.09 +1984-10-30,164.78,167.33,164.78,166.84,95200000,166.84 +1984-10-29,165.29,165.29,164.67,164.78,63200000,164.78 +1984-10-26,166.31,166.31,164.93,165.29,83900000,165.29 +1984-10-25,167.20,167.62,166.17,166.31,92760000,166.31 +1984-10-24,167.09,167.54,166.82,167.20,91620000,167.20 +1984-10-23,167.36,168.27,166.83,167.09,92260000,167.09 +1984-10-22,167.96,168.36,167.26,167.36,81020000,167.36 +1984-10-19,168.08,169.62,167.31,167.96,186900000,167.96 +1984-10-18,164.14,168.10,163.80,168.10,149500000,168.10 +1984-10-17,164.78,165.04,163.71,164.14,99740000,164.14 +1984-10-16,165.78,165.78,164.66,164.78,82930000,164.78 +1984-10-15,164.18,166.15,164.09,165.77,87590000,165.77 +1984-10-12,162.78,164.47,162.78,164.18,92190000,164.18 +1984-10-11,162.11,162.87,162.00,162.78,87020000,162.78 +1984-10-10,161.67,162.12,160.02,162.11,94270000,162.11 +1984-10-09,162.13,162.84,161.62,161.67,76840000,161.67 +1984-10-08,162.68,162.68,161.80,162.13,46360000,162.13 +1984-10-05,162.92,163.32,162.51,162.68,82950000,162.68 +1984-10-04,162.44,163.22,162.44,162.92,76700000,162.92 +1984-10-03,163.59,163.59,162.20,162.44,92400000,162.44 +1984-10-02,164.62,165.24,163.55,163.59,89360000,163.59 +1984-10-01,166.10,166.10,164.48,164.62,73630000,164.62 +1984-09-28,166.96,166.96,165.77,166.10,78950000,166.10 +1984-09-27,166.75,167.18,166.33,166.96,88880000,166.96 +1984-09-26,165.62,167.20,165.61,166.28,100200000,166.28 +1984-09-25,165.28,165.97,164.45,165.62,86250000,165.62 +1984-09-24,165.67,166.12,164.98,165.28,76380000,165.28 +1984-09-21,167.47,168.67,165.66,165.67,120600000,165.67 +1984-09-20,166.94,167.47,166.70,167.47,92030000,167.47 +1984-09-19,167.65,168.76,166.89,166.94,119900000,166.94 +1984-09-18,168.87,168.87,167.64,167.65,107700000,167.65 +1984-09-17,168.78,169.37,167.99,168.87,88790000,168.87 +1984-09-14,167.94,169.65,167.94,168.78,137400000,168.78 +1984-09-13,164.68,167.94,164.68,167.94,110500000,167.94 +1984-09-12,164.45,164.81,164.14,164.68,77980000,164.68 +1984-09-11,165.22,166.17,164.28,164.45,101300000,164.45 +1984-09-10,164.37,165.05,163.06,164.26,74410000,164.26 +1984-09-07,165.65,166.31,164.22,164.37,84110000,164.37 +1984-09-06,164.29,165.95,164.29,165.65,91920000,165.65 +1984-09-05,164.88,164.88,163.84,164.29,69250000,164.29 +1984-09-04,166.68,166.68,164.73,164.88,62110000,164.88 +1984-08-31,166.60,166.68,165.78,166.68,57460000,166.68 +1984-08-30,167.10,167.19,166.55,166.60,70840000,166.60 +1984-08-29,167.40,168.21,167.03,167.09,90660000,167.09 +1984-08-28,166.44,167.43,166.21,167.40,70560000,167.40 +1984-08-27,167.51,167.51,165.81,166.44,57660000,166.44 +1984-08-24,167.12,167.52,167.12,167.51,69640000,167.51 +1984-08-23,167.06,167.78,166.61,167.12,83130000,167.12 +1984-08-22,167.83,168.80,166.92,167.06,116000000,167.06 +1984-08-21,164.94,168.22,164.93,167.83,128100000,167.83 +1984-08-20,164.14,164.94,163.76,164.94,75450000,164.94 +1984-08-17,164.30,164.61,163.78,164.14,71500000,164.14 +1984-08-16,162.80,164.42,162.75,163.77,93610000,163.77 +1984-08-15,164.42,164.42,162.75,162.80,91880000,162.80 +1984-08-14,165.43,166.09,164.28,164.42,81470000,164.42 +1984-08-13,164.84,165.49,163.98,165.43,77960000,165.43 +1984-08-10,165.54,168.59,165.24,165.42,171000000,165.42 +1984-08-09,161.75,165.88,161.47,165.54,131100000,165.54 +1984-08-08,162.71,163.87,161.75,161.75,121200000,161.75 +1984-08-07,162.60,163.58,160.81,162.72,127900000,162.72 +1984-08-06,162.35,165.27,162.09,162.60,203000000,162.60 +1984-08-03,160.28,162.56,158.00,162.35,236500000,162.35 +1984-08-02,154.08,157.99,154.08,157.99,172800000,157.99 +1984-08-01,150.66,154.08,150.66,154.08,127500000,154.08 +1984-07-31,150.19,150.77,149.65,150.66,86910000,150.66 +1984-07-30,151.19,151.19,150.14,150.19,72330000,150.19 +1984-07-27,150.08,151.38,149.99,151.19,101350000,151.19 +1984-07-26,148.83,150.16,148.83,150.08,90410000,150.08 +1984-07-25,147.82,149.30,147.26,148.83,90520000,148.83 +1984-07-24,148.95,149.28,147.78,147.82,74370000,147.82 +1984-07-23,149.55,149.55,147.85,148.95,77990000,148.95 +1984-07-20,150.37,150.58,149.07,149.55,79090000,149.55 +1984-07-19,151.40,151.40,150.27,150.37,85230000,150.37 +1984-07-18,152.38,152.38,151.11,151.40,76640000,151.40 +1984-07-17,151.60,152.60,151.26,152.38,82890000,152.38 +1984-07-16,150.88,151.60,150.01,151.60,73420000,151.60 +1984-07-13,150.03,151.16,150.03,150.88,75480000,150.88 +1984-07-12,150.56,151.06,149.63,150.03,86050000,150.03 +1984-07-11,152.89,152.89,150.55,150.56,89540000,150.56 +1984-07-10,153.36,153.53,152.57,152.89,74010000,152.89 +1984-07-09,152.24,153.53,151.44,153.36,74830000,153.36 +1984-07-06,152.76,152.76,151.63,152.24,65850000,152.24 +1984-07-05,153.70,153.87,152.71,152.76,66100000,152.76 +1984-07-03,153.20,153.86,153.10,153.70,69960000,153.70 +1984-07-02,153.16,153.22,152.44,153.20,69230000,153.20 +1984-06-29,152.84,154.08,152.82,153.18,90770000,153.18 +1984-06-28,151.64,153.07,151.62,152.84,77660000,152.84 +1984-06-27,152.71,152.88,151.30,151.64,78400000,151.64 +1984-06-26,153.97,153.97,152.47,152.71,82600000,152.71 +1984-06-25,154.46,154.67,153.86,153.97,72850000,153.97 +1984-06-22,154.51,154.92,153.89,154.46,98400000,154.46 +1984-06-21,154.84,155.64,154.05,154.51,123380000,154.51 +1984-06-20,151.89,154.84,150.96,154.84,99090000,154.84 +1984-06-19,151.73,153.00,151.73,152.61,98000000,152.61 +1984-06-18,149.03,151.92,148.53,151.73,94900000,151.73 +1984-06-15,150.49,150.71,149.02,149.03,85460000,149.03 +1984-06-14,152.12,152.14,150.31,150.39,79120000,150.39 +1984-06-13,152.19,152.85,151.86,152.13,67510000,152.13 +1984-06-12,153.06,153.07,151.61,152.19,84660000,152.19 +1984-06-11,155.17,155.17,153.00,153.06,69050000,153.06 +1984-06-08,154.92,155.40,154.57,155.17,67840000,155.17 +1984-06-07,155.01,155.11,154.36,154.92,82120000,154.92 +1984-06-06,153.65,155.03,153.38,155.01,83440000,155.01 +1984-06-05,154.34,154.34,153.28,153.65,84840000,153.65 +1984-06-04,153.24,155.10,153.24,154.34,96740000,154.34 +1984-06-01,150.55,153.24,150.55,153.24,96040000,153.24 +1984-05-31,150.35,150.69,149.76,150.55,81890000,150.55 +1984-05-30,150.29,151.43,148.68,150.35,105660000,150.35 +1984-05-29,151.62,151.86,149.95,150.29,69060000,150.29 +1984-05-25,151.23,152.02,150.85,151.62,78190000,151.62 +1984-05-24,153.15,153.15,150.80,151.23,99040000,151.23 +1984-05-23,153.88,154.02,153.10,153.15,82690000,153.15 +1984-05-22,154.73,154.73,152.99,153.88,88030000,153.88 +1984-05-21,155.78,156.11,154.63,154.73,73380000,154.73 +1984-05-18,156.57,156.77,155.24,155.78,81270000,155.78 +1984-05-17,157.99,157.99,156.15,156.57,90310000,156.57 +1984-05-16,158.00,158.41,157.83,157.99,89210000,157.99 +1984-05-15,157.50,158.27,157.29,158.00,88250000,158.00 +1984-05-14,158.49,158.49,157.20,157.50,64900000,157.50 +1984-05-11,160.00,160.00,157.42,158.49,82780000,158.49 +1984-05-10,160.11,160.45,159.61,160.00,101810000,160.00 +1984-05-09,160.52,161.31,159.39,160.11,100590000,160.11 +1984-05-08,159.47,160.52,159.14,160.52,81610000,160.52 +1984-05-07,159.11,159.48,158.63,159.47,72760000,159.47 +1984-05-04,161.20,161.20,158.93,159.11,98580000,159.11 +1984-05-03,161.90,161.90,160.95,161.20,91910000,161.20 +1984-05-02,161.68,162.11,161.41,161.90,107080000,161.90 +1984-05-01,160.05,161.69,160.05,161.68,110550000,161.68 +1984-04-30,159.89,160.43,159.30,160.05,72740000,160.05 +1984-04-27,160.30,160.69,159.77,159.89,88530000,159.89 +1984-04-26,158.65,160.50,158.65,160.30,98000000,160.30 +1984-04-25,158.07,158.77,157.80,158.65,83520000,158.65 +1984-04-24,156.80,158.38,156.61,158.07,87060000,158.07 +1984-04-23,158.02,158.05,156.79,156.80,73080000,156.80 +1984-04-19,157.90,158.02,157.10,158.02,75860000,158.02 +1984-04-18,158.97,158.97,157.64,157.90,85040000,157.90 +1984-04-17,158.32,159.59,158.32,158.97,98150000,158.97 +1984-04-16,157.31,158.35,156.49,158.32,73870000,158.32 +1984-04-13,157.73,158.87,157.13,157.31,99620000,157.31 +1984-04-12,155.00,157.74,154.17,157.73,96330000,157.73 +1984-04-11,155.93,156.31,154.90,155.00,80280000,155.00 +1984-04-10,155.45,156.57,155.45,155.87,78990000,155.87 +1984-04-09,155.48,155.86,154.71,155.45,71570000,155.45 +1984-04-06,155.04,155.48,154.12,155.48,86620000,155.48 +1984-04-05,157.54,158.10,154.96,155.04,101750000,155.04 +1984-04-04,157.66,158.11,157.29,157.54,92860000,157.54 +1984-04-03,157.99,158.27,157.17,157.66,87980000,157.66 +1984-04-02,159.18,159.87,157.63,157.98,85680000,157.98 +1984-03-30,159.52,159.52,158.92,159.18,71590000,159.18 +1984-03-29,159.88,160.46,159.52,159.52,81470000,159.52 +1984-03-28,157.30,159.90,157.30,159.88,104870000,159.88 +1984-03-27,156.67,157.30,156.61,157.30,73670000,157.30 +1984-03-26,156.86,157.18,156.31,156.67,69070000,156.67 +1984-03-23,156.69,156.92,156.02,156.86,79760000,156.86 +1984-03-22,158.66,158.67,156.61,156.69,87340000,156.69 +1984-03-21,158.86,159.26,158.59,158.66,87170000,158.66 +1984-03-20,157.78,159.17,157.78,158.86,86460000,158.86 +1984-03-19,159.27,159.27,157.28,157.78,64060000,157.78 +1984-03-16,157.41,160.45,157.41,159.27,118000000,159.27 +1984-03-15,156.78,158.05,156.73,157.41,79520000,157.41 +1984-03-14,156.78,157.17,156.22,156.77,77250000,156.77 +1984-03-13,156.34,157.93,156.34,156.78,102600000,156.78 +1984-03-12,154.35,156.35,154.35,156.34,84470000,156.34 +1984-03-09,155.12,155.19,153.77,154.35,73170000,154.35 +1984-03-08,154.57,155.80,154.35,155.19,80630000,155.19 +1984-03-07,156.25,156.25,153.81,154.57,90080000,154.57 +1984-03-06,157.89,158.37,156.21,156.25,83590000,156.25 +1984-03-05,159.24,159.24,157.59,157.89,69870000,157.89 +1984-03-02,158.19,159.90,158.19,159.24,108270000,159.24 +1984-03-01,157.06,158.19,156.77,158.19,82010000,158.19 +1984-02-29,156.82,158.27,156.41,157.06,92810000,157.06 +1984-02-28,159.30,159.30,156.59,156.82,91010000,156.82 +1984-02-27,157.51,159.58,157.08,159.30,99140000,159.30 +1984-02-24,154.31,157.51,154.29,157.51,102620000,157.51 +1984-02-23,154.02,154.45,152.13,154.29,100220000,154.29 +1984-02-22,154.52,155.10,153.94,154.31,90080000,154.31 +1984-02-21,155.71,155.74,154.47,154.64,71890000,154.64 +1984-02-17,156.13,156.80,155.51,155.74,76600000,155.74 +1984-02-16,155.94,156.44,155.44,156.13,81750000,156.13 +1984-02-15,156.61,157.48,156.10,156.25,94870000,156.25 +1984-02-14,154.95,156.61,154.95,156.61,91800000,156.61 +1984-02-13,156.30,156.32,154.13,154.95,78460000,154.95 +1984-02-10,155.42,156.52,155.42,156.30,92220000,156.30 +1984-02-09,155.85,156.17,154.30,155.42,128190000,155.42 +1984-02-08,158.74,159.07,155.67,155.85,96890000,155.85 +1984-02-07,157.91,158.81,157.01,158.74,107640000,158.74 +1984-02-06,160.91,160.91,158.02,158.08,109090000,158.08 +1984-02-03,163.44,163.98,160.82,160.91,109100000,160.91 +1984-02-02,162.74,163.36,162.24,163.36,111330000,163.36 +1984-02-01,163.41,164.00,162.27,162.74,107100000,162.74 +1984-01-31,162.87,163.60,162.03,163.41,113510000,163.41 +1984-01-30,164.40,164.67,162.40,162.87,103120000,162.87 +1984-01-27,164.24,164.33,163.07,163.94,103720000,163.94 +1984-01-26,164.84,165.55,164.12,164.24,111100000,164.24 +1984-01-25,165.94,167.12,164.74,164.84,113470000,164.84 +1984-01-24,164.87,166.35,164.84,165.94,103050000,165.94 +1984-01-23,166.21,166.21,164.83,164.87,82010000,164.87 +1984-01-20,167.04,167.06,165.87,166.21,93360000,166.21 +1984-01-19,167.55,167.65,166.67,167.04,98340000,167.04 +1984-01-18,167.83,168.34,167.02,167.55,109010000,167.55 +1984-01-17,167.18,167.84,167.01,167.83,92750000,167.83 +1984-01-16,167.02,167.55,166.77,167.18,93790000,167.18 +1984-01-13,167.75,168.59,166.64,167.02,101790000,167.02 +1984-01-12,167.79,168.40,167.68,167.75,99410000,167.75 +1984-01-11,167.95,168.07,167.27,167.80,98660000,167.80 +1984-01-10,168.90,169.54,167.87,167.95,109570000,167.95 +1984-01-09,169.18,169.46,168.48,168.90,107100000,168.90 +1984-01-06,168.81,169.31,168.49,169.28,137590000,169.28 +1984-01-05,166.78,169.10,166.78,168.81,159990000,168.81 +1984-01-04,164.09,166.78,164.04,166.78,112980000,166.78 +1984-01-03,164.93,164.93,163.98,164.04,71340000,164.04 +1983-12-30,164.86,165.05,164.58,164.93,71840000,164.93 +1983-12-29,165.33,165.84,164.83,164.86,86560000,164.86 +1983-12-28,164.69,165.34,164.30,165.34,85660000,165.34 +1983-12-27,163.22,164.76,163.22,164.76,63800000,164.76 +1983-12-23,163.27,163.31,162.90,163.22,62710000,163.22 +1983-12-22,163.56,164.18,163.17,163.53,106260000,163.53 +1983-12-21,162.00,163.57,161.99,163.56,108080000,163.56 +1983-12-20,162.33,162.80,161.64,162.00,83740000,162.00 +1983-12-19,162.34,162.88,162.27,162.32,75180000,162.32 +1983-12-16,161.69,162.39,161.58,162.39,81030000,162.39 +1983-12-15,163.33,163.33,161.66,161.66,88300000,161.66 +1983-12-14,164.93,164.93,163.25,163.33,85430000,163.33 +1983-12-13,165.62,165.63,164.85,164.93,93500000,164.93 +1983-12-12,165.13,165.62,164.99,165.62,77340000,165.62 +1983-12-09,165.20,165.29,164.50,165.08,98280000,165.08 +1983-12-08,165.91,166.01,164.86,165.20,96530000,165.20 +1983-12-07,165.47,166.34,165.35,165.91,105670000,165.91 +1983-12-06,165.77,165.93,165.34,165.47,89690000,165.47 +1983-12-05,165.44,165.79,164.71,165.76,88330000,165.76 +1983-12-02,166.49,166.70,165.25,165.44,93960000,165.44 +1983-12-01,166.37,166.77,166.08,166.49,106970000,166.49 +1983-11-30,167.91,168.07,166.33,166.40,120130000,166.40 +1983-11-29,166.54,167.92,166.17,167.91,100460000,167.91 +1983-11-28,167.20,167.22,166.21,166.54,78210000,166.54 +1983-11-25,167.02,167.20,166.73,167.18,57820000,167.18 +1983-11-23,166.88,167.21,166.26,166.96,108080000,166.96 +1983-11-22,166.05,167.26,166.05,166.84,117550000,166.84 +1983-11-21,165.04,166.05,165.00,166.05,97740000,166.05 +1983-11-18,166.08,166.13,164.50,165.09,88280000,165.09 +1983-11-17,166.08,166.49,165.51,166.13,80740000,166.13 +1983-11-16,165.36,166.41,165.34,166.08,83380000,166.08 +1983-11-15,166.58,166.59,165.28,165.36,77840000,165.36 +1983-11-14,166.29,167.58,166.27,166.58,86880000,166.58 +1983-11-11,164.41,166.30,164.34,166.29,74270000,166.29 +1983-11-10,163.99,164.71,163.97,164.41,88730000,164.41 +1983-11-09,161.74,163.97,161.74,163.97,83100000,163.97 +1983-11-08,161.91,162.15,161.63,161.76,64900000,161.76 +1983-11-07,162.42,162.56,161.84,161.91,69400000,161.91 +1983-11-04,162.68,163.45,162.22,162.44,72080000,162.44 +1983-11-03,164.84,164.85,163.42,163.45,85350000,163.45 +1983-11-02,165.21,165.21,163.55,164.84,95210000,164.84 +1983-11-01,163.55,163.66,162.37,163.66,84460000,163.66 +1983-10-31,163.37,164.58,162.86,163.55,79460000,163.55 +1983-10-28,164.89,165.19,163.23,163.37,81180000,163.37 +1983-10-27,165.31,165.38,164.41,164.84,79570000,164.84 +1983-10-26,166.49,166.65,165.36,165.38,79570000,165.38 +1983-10-25,166.00,167.15,166.00,166.47,82530000,166.47 +1983-10-24,165.85,165.99,163.85,165.99,85420000,165.99 +1983-10-21,166.97,167.23,164.98,165.95,91640000,165.95 +1983-10-20,166.77,167.35,166.44,166.98,86000000,166.98 +1983-10-19,167.81,167.81,165.67,166.73,107790000,166.73 +1983-10-18,170.41,170.41,167.67,167.81,91080000,167.81 +1983-10-17,169.85,171.18,169.63,170.43,77730000,170.43 +1983-10-14,169.88,169.99,169.18,169.86,71600000,169.86 +1983-10-13,169.63,170.12,169.13,169.87,67750000,169.87 +1983-10-12,170.34,170.84,169.34,169.62,75630000,169.62 +1983-10-11,172.59,172.59,170.34,170.34,79510000,170.34 +1983-10-10,170.77,172.65,170.05,172.65,67050000,172.65 +1983-10-07,170.32,171.10,170.31,170.80,103630000,170.80 +1983-10-06,167.76,170.28,167.76,170.28,118270000,170.28 +1983-10-05,166.29,167.74,165.92,167.74,101710000,167.74 +1983-10-04,165.81,166.80,165.81,166.27,90270000,166.27 +1983-10-03,165.99,166.07,164.93,165.81,77230000,165.81 +1983-09-30,167.23,167.23,165.63,166.07,70860000,166.07 +1983-09-29,168.02,168.35,167.23,167.23,73730000,167.23 +1983-09-28,168.42,168.53,167.52,168.00,75820000,168.00 +1983-09-27,170.02,170.02,167.95,168.43,81100000,168.43 +1983-09-26,169.53,170.41,169.16,170.07,86400000,170.07 +1983-09-23,169.76,170.17,168.88,169.51,93180000,169.51 +1983-09-22,168.40,169.78,168.22,169.76,97050000,169.76 +1983-09-21,169.27,169.30,168.21,168.41,91280000,168.41 +1983-09-20,167.64,169.38,167.64,169.24,103050000,169.24 +1983-09-19,166.27,168.09,166.26,167.62,85630000,167.62 +1983-09-16,164.42,166.57,164.39,166.25,75530000,166.25 +1983-09-15,165.39,165.58,164.38,164.38,70420000,164.38 +1983-09-14,164.80,165.42,164.63,165.35,73370000,165.35 +1983-09-13,165.48,165.48,164.17,164.80,73970000,164.80 +1983-09-12,166.95,169.20,165.27,165.48,114020000,165.48 +1983-09-09,167.77,167.77,166.91,166.92,77990000,166.92 +1983-09-08,167.96,168.14,167.12,167.77,79250000,167.77 +1983-09-07,167.90,168.48,167.46,167.96,94240000,167.96 +1983-09-06,165.20,167.90,165.03,167.89,87500000,167.89 +1983-09-02,164.25,165.07,164.21,165.00,59300000,165.00 +1983-09-01,164.40,164.66,163.95,164.23,76120000,164.23 +1983-08-31,162.55,164.40,162.32,164.40,80800000,164.40 +1983-08-30,162.25,163.13,162.11,162.58,62370000,162.58 +1983-08-29,162.14,162.32,160.97,162.25,53030000,162.25 +1983-08-26,160.85,162.16,160.25,162.14,61650000,162.14 +1983-08-25,161.27,161.28,159.96,160.84,70140000,160.84 +1983-08-24,162.77,162.77,161.20,161.25,72200000,161.25 +1983-08-23,164.33,164.33,162.54,162.77,66800000,162.77 +1983-08-22,164.18,165.64,163.77,164.34,76420000,164.34 +1983-08-19,163.58,164.27,163.22,163.98,58950000,163.98 +1983-08-18,165.29,165.91,163.55,163.55,82280000,163.55 +1983-08-17,163.58,165.40,163.43,165.29,87800000,165.29 +1983-08-16,163.74,163.84,162.72,163.41,71780000,163.41 +1983-08-15,162.22,164.76,162.22,163.70,83200000,163.70 +1983-08-12,161.55,162.60,161.55,162.16,71840000,162.16 +1983-08-11,161.55,162.14,161.41,161.54,70630000,161.54 +1983-08-10,160.11,161.77,159.47,161.54,82900000,161.54 +1983-08-09,159.20,160.14,158.50,160.13,81420000,160.13 +1983-08-08,161.73,161.73,159.18,159.18,71460000,159.18 +1983-08-05,161.33,161.88,160.89,161.74,67850000,161.74 +1983-08-04,163.28,163.42,159.63,161.33,100870000,161.33 +1983-08-03,162.01,163.44,161.52,163.44,80370000,163.44 +1983-08-02,162.06,163.04,161.97,162.01,74460000,162.01 +1983-08-01,162.34,162.78,161.55,162.04,77210000,162.04 +1983-07-29,165.03,165.03,161.50,162.56,95240000,162.56 +1983-07-28,167.32,167.79,164.99,165.04,78410000,165.04 +1983-07-27,170.68,170.72,167.49,167.59,99290000,167.59 +1983-07-26,169.62,170.63,169.26,170.53,91280000,170.53 +1983-07-25,167.67,169.74,167.63,169.53,73680000,169.53 +1983-07-22,168.51,169.08,168.40,168.89,68850000,168.89 +1983-07-21,169.29,169.80,168.33,169.06,101830000,169.06 +1983-07-20,164.89,169.29,164.89,169.29,109310000,169.29 +1983-07-19,163.95,165.18,163.95,164.82,74030000,164.82 +1983-07-18,164.28,164.29,163.30,163.95,69110000,163.95 +1983-07-15,166.01,166.04,164.03,164.29,63160000,164.29 +1983-07-14,165.61,166.96,165.61,166.01,83500000,166.01 +1983-07-13,165.00,165.68,164.77,165.46,68900000,165.46 +1983-07-12,168.05,168.05,165.51,165.53,70220000,165.53 +1983-07-11,167.09,168.11,167.09,168.11,61610000,168.11 +1983-07-08,167.56,167.98,166.95,167.08,66520000,167.08 +1983-07-07,168.48,169.15,167.08,167.56,97130000,167.56 +1983-07-06,166.71,168.88,166.49,168.48,85670000,168.48 +1983-07-05,166.55,168.80,165.80,166.60,67320000,166.60 +1983-07-01,168.11,168.64,167.77,168.64,65110000,168.64 +1983-06-30,167.64,167.64,167.64,167.64,76310000,167.64 +1983-06-29,165.78,166.64,165.43,166.64,81580000,166.64 +1983-06-28,168.45,168.81,165.67,165.68,82730000,165.68 +1983-06-27,170.40,170.46,168.32,168.46,69360000,168.46 +1983-06-24,170.57,170.69,170.03,170.41,80810000,170.41 +1983-06-23,170.99,171.00,170.13,170.57,89590000,170.57 +1983-06-22,170.53,171.60,170.42,170.99,110270000,170.99 +1983-06-21,169.03,170.60,168.25,170.53,102880000,170.53 +1983-06-20,169.13,170.10,168.59,169.02,84270000,169.02 +1983-06-17,169.11,169.64,168.60,169.13,93630000,169.13 +1983-06-16,167.11,169.38,167.11,169.14,124560000,169.14 +1983-06-15,165.52,167.12,165.07,167.12,93410000,167.12 +1983-06-14,164.87,165.93,164.87,165.53,97710000,165.53 +1983-06-13,162.70,164.84,162.70,164.84,90700000,164.84 +1983-06-10,161.86,162.76,161.86,162.68,78470000,162.68 +1983-06-09,161.37,161.92,160.80,161.83,87440000,161.83 +1983-06-08,162.78,162.78,161.35,161.36,96600000,161.36 +1983-06-07,164.84,164.93,162.77,162.77,88550000,162.77 +1983-06-06,164.43,165.09,163.75,164.83,87670000,164.83 +1983-06-03,163.96,164.79,163.96,164.42,83110000,164.42 +1983-06-02,162.56,164.00,162.56,163.98,89750000,163.98 +1983-06-01,162.38,162.64,161.33,162.55,84460000,162.55 +1983-05-31,164.44,164.44,162.12,162.39,73910000,162.39 +1983-05-27,165.49,165.49,164.33,164.46,76290000,164.46 +1983-05-26,166.22,166.39,165.27,165.48,94980000,165.48 +1983-05-25,165.54,166.21,164.79,166.21,121050000,166.21 +1983-05-24,163.45,165.59,163.45,165.54,109850000,165.54 +1983-05-23,162.06,163.50,160.29,163.43,84960000,163.43 +1983-05-20,161.97,162.14,161.25,162.14,73150000,162.14 +1983-05-19,163.27,163.61,161.98,161.99,83260000,161.99 +1983-05-18,163.73,165.18,163.16,163.27,99780000,163.27 +1983-05-17,163.40,163.71,162.55,163.71,79510000,163.71 +1983-05-16,164.90,164.90,162.33,163.40,76250000,163.40 +1983-05-13,164.26,165.23,164.26,164.91,83110000,164.91 +1983-05-12,164.98,165.35,163.82,164.25,84060000,164.25 +1983-05-11,165.95,166.30,164.53,164.96,99820000,164.96 +1983-05-10,165.82,166.40,165.74,165.95,104010000,165.95 +1983-05-09,166.10,166.46,164.90,165.81,93670000,165.81 +1983-05-06,164.30,166.99,164.30,166.10,128200000,166.10 +1983-05-05,163.35,164.30,163.35,164.28,107860000,164.28 +1983-05-04,162.38,163.64,162.38,163.31,101690000,163.31 +1983-05-03,162.10,162.35,160.80,162.34,89550000,162.34 +1983-05-02,164.41,164.42,161.99,162.11,88170000,162.11 +1983-04-29,162.97,164.43,162.72,164.43,105750000,164.43 +1983-04-28,161.44,162.96,161.44,162.95,94410000,162.95 +1983-04-27,161.85,162.77,160.76,161.44,118140000,161.44 +1983-04-26,158.81,161.81,158.07,161.81,91210000,161.81 +1983-04-25,160.43,160.83,158.72,158.81,90150000,158.81 +1983-04-22,160.04,160.76,160.02,160.42,92270000,160.42 +1983-04-21,160.73,161.08,159.96,160.05,106170000,160.05 +1983-04-20,158.71,160.83,158.71,160.71,110240000,160.71 +1983-04-19,159.74,159.74,158.54,158.71,91210000,158.71 +1983-04-18,158.75,159.75,158.41,159.74,88560000,159.74 +1983-04-15,158.11,158.75,158.11,158.75,89590000,158.75 +1983-04-14,156.80,158.12,156.55,158.12,90160000,158.12 +1983-04-13,155.82,157.22,155.82,156.77,100520000,156.77 +1983-04-12,155.15,155.82,154.78,155.82,79900000,155.82 +1983-04-11,152.87,155.14,152.87,155.14,81440000,155.14 +1983-04-08,151.77,152.85,151.39,152.85,67710000,152.85 +1983-04-07,151.04,151.76,150.81,151.76,69480000,151.76 +1983-04-06,151.90,151.90,150.17,151.04,77140000,151.04 +1983-04-05,153.04,153.92,151.81,151.90,76810000,151.90 +1983-04-04,152.92,153.02,152.23,153.02,66010000,153.02 +1983-03-31,153.41,155.02,152.86,152.96,100570000,152.96 +1983-03-30,151.60,153.39,151.60,153.39,75800000,153.39 +1983-03-29,151.85,152.46,151.42,151.59,65300000,151.59 +1983-03-28,152.67,152.67,151.56,151.85,58510000,151.85 +1983-03-25,153.37,153.71,152.30,152.67,77330000,152.67 +1983-03-24,152.82,153.78,152.82,153.37,92340000,153.37 +1983-03-23,150.65,152.98,150.65,152.81,94980000,152.81 +1983-03-22,151.21,151.59,150.60,150.66,79610000,150.66 +1983-03-21,149.82,151.20,149.32,151.19,72160000,151.19 +1983-03-18,149.59,150.29,149.56,149.90,75110000,149.90 +1983-03-17,149.80,149.80,149.12,149.59,70290000,149.59 +1983-03-16,151.36,151.62,149.78,149.81,83570000,149.81 +1983-03-15,150.83,151.37,150.40,151.37,62410000,151.37 +1983-03-14,151.28,151.30,150.24,150.83,61890000,150.83 +1983-03-11,151.75,151.75,150.65,151.24,67240000,151.24 +1983-03-10,152.87,154.01,151.75,151.80,95410000,151.80 +1983-03-09,151.25,152.87,150.84,152.87,84250000,152.87 +1983-03-08,153.63,153.63,151.26,151.26,79410000,151.26 +1983-03-07,153.67,154.00,152.65,153.67,84020000,153.67 +1983-03-04,153.47,153.67,152.53,153.67,90930000,153.67 +1983-03-03,152.31,154.16,152.31,153.48,114440000,153.48 +1983-03-02,150.91,152.63,150.91,152.30,112600000,152.30 +1983-03-01,148.07,150.88,148.07,150.88,103750000,150.88 +1983-02-28,149.74,149.74,147.81,148.06,83750000,148.06 +1983-02-25,149.60,150.88,149.60,149.74,100970000,149.74 +1983-02-24,146.80,149.67,146.80,149.60,113220000,149.60 +1983-02-23,145.47,146.79,145.40,146.79,84100000,146.79 +1983-02-22,148.01,148.11,145.42,145.48,84080000,145.48 +1983-02-18,147.44,148.29,147.21,148.00,77420000,148.00 +1983-02-17,147.43,147.57,143.84,147.44,74930000,147.44 +1983-02-16,148.31,148.66,147.41,147.43,82100000,147.43 +1983-02-15,148.94,149.41,148.13,148.30,89040000,148.30 +1983-02-14,147.71,149.14,147.40,148.93,72640000,148.93 +1983-02-11,147.51,148.81,147.18,147.65,86700000,147.65 +1983-02-10,145.04,147.75,145.04,147.50,93510000,147.50 +1983-02-09,145.70,145.83,144.09,145.00,84520000,145.00 +1983-02-08,146.93,147.21,145.52,145.70,76580000,145.70 +1983-02-07,146.14,147.42,146.14,146.93,86030000,146.93 +1983-02-04,144.26,146.14,144.14,146.14,87000000,146.14 +1983-02-03,143.25,144.43,143.25,144.26,78890000,144.26 +1983-02-02,142.95,143.52,141.90,143.23,77220000,143.23 +1983-02-01,145.29,145.29,142.96,142.96,82750000,142.96 +1983-01-31,144.51,145.30,143.93,145.30,67140000,145.30 +1983-01-28,144.31,145.47,144.25,144.51,89490000,144.51 +1983-01-27,141.54,144.30,141.54,144.27,88120000,144.27 +1983-01-26,141.77,142.16,141.16,141.54,73720000,141.54 +1983-01-25,139.98,141.75,139.98,141.75,79740000,141.75 +1983-01-24,143.84,143.84,139.10,139.97,90800000,139.97 +1983-01-21,146.30,146.30,143.25,143.85,77110000,143.85 +1983-01-20,145.29,146.62,145.29,146.29,82790000,146.29 +1983-01-19,146.40,146.45,144.51,145.27,80900000,145.27 +1983-01-18,146.71,146.74,145.52,146.40,78380000,146.40 +1983-01-17,146.65,147.90,146.64,146.72,89210000,146.72 +1983-01-14,145.72,147.12,145.72,146.65,86480000,146.65 +1983-01-13,146.67,146.94,145.67,145.73,77030000,145.73 +1983-01-12,145.76,148.36,145.76,146.69,109850000,146.69 +1983-01-11,146.79,146.83,145.38,145.78,98250000,145.78 +1983-01-10,145.19,147.25,144.58,146.78,101890000,146.78 +1983-01-07,145.27,146.46,145.15,145.18,127290000,145.18 +1983-01-06,142.01,145.77,142.01,145.27,129410000,145.27 +1983-01-05,141.35,142.60,141.15,141.96,95390000,141.96 +1983-01-04,138.33,141.36,138.08,141.36,75530000,141.36 +1983-01-03,140.65,141.33,138.20,138.34,59080000,138.34 +1982-12-31,140.34,140.78,140.27,140.64,42110000,140.64 +1982-12-30,141.24,141.68,140.22,140.33,56380000,140.33 +1982-12-29,140.77,141.73,140.68,141.24,54810000,141.24 +1982-12-28,142.18,142.34,140.75,140.77,58610000,140.77 +1982-12-27,139.73,142.32,139.72,142.17,64690000,142.17 +1982-12-23,138.84,139.94,138.84,139.72,62880000,139.72 +1982-12-22,138.63,139.69,138.60,138.83,83470000,138.83 +1982-12-21,136.24,139.27,136.07,138.61,78010000,138.61 +1982-12-20,137.49,137.84,136.19,136.25,62210000,136.25 +1982-12-17,135.35,137.71,135.35,137.49,76010000,137.49 +1982-12-16,135.22,135.78,134.79,135.30,73680000,135.30 +1982-12-15,137.40,137.40,135.12,135.24,81030000,135.24 +1982-12-14,139.99,142.50,137.34,137.40,98380000,137.40 +1982-12-13,139.57,140.12,139.50,139.95,63140000,139.95 +1982-12-10,139.99,141.15,139.35,139.57,86430000,139.57 +1982-12-09,141.80,141.80,139.92,140.00,90320000,140.00 +1982-12-08,142.71,143.58,141.82,141.82,97430000,141.82 +1982-12-07,141.79,143.68,141.79,142.72,111620000,142.72 +1982-12-06,138.70,141.77,138.01,141.77,83880000,141.77 +1982-12-03,138.87,139.59,138.59,138.69,71540000,138.69 +1982-12-02,138.72,139.63,138.66,138.82,77600000,138.82 +1982-12-01,138.56,140.37,138.35,138.72,107850000,138.72 +1982-11-30,134.20,138.53,134.19,138.53,93470000,138.53 +1982-11-29,134.89,135.29,133.69,134.20,61080000,134.20 +1982-11-26,133.89,134.88,133.89,134.88,38810000,134.88 +1982-11-24,132.92,133.88,132.92,133.88,67220000,133.88 +1982-11-23,134.21,134.28,132.89,132.93,72920000,132.93 +1982-11-22,137.03,137.10,134.21,134.22,74960000,134.22 +1982-11-19,138.35,138.93,137.00,137.02,70310000,137.02 +1982-11-18,137.93,138.78,137.47,138.34,77620000,138.34 +1982-11-17,135.47,137.93,135.47,137.93,84440000,137.93 +1982-11-16,136.97,136.97,134.05,135.42,102910000,135.42 +1982-11-15,139.54,139.54,137.00,137.03,78900000,137.03 +1982-11-12,141.75,141.85,139.53,139.53,95080000,139.53 +1982-11-11,141.15,141.75,139.88,141.75,78410000,141.75 +1982-11-10,143.04,144.36,140.80,141.16,113240000,141.16 +1982-11-09,140.48,143.16,140.46,143.02,111220000,143.02 +1982-11-08,142.12,142.12,139.98,140.44,75240000,140.44 +1982-11-05,141.85,142.43,141.32,142.16,96550000,142.16 +1982-11-04,142.85,143.99,141.65,141.85,149350000,141.85 +1982-11-03,137.53,142.88,137.53,142.87,137010000,142.87 +1982-11-02,135.48,138.51,135.48,137.49,104770000,137.49 +1982-11-01,133.72,136.03,133.22,135.47,73530000,135.47 +1982-10-29,133.54,134.02,132.64,133.72,74830000,133.72 +1982-10-28,135.28,135.42,133.59,133.59,73590000,133.59 +1982-10-27,134.48,135.92,134.48,135.29,81670000,135.29 +1982-10-26,133.29,134.48,131.50,134.48,102080000,134.48 +1982-10-25,138.81,138.81,133.32,133.32,83720000,133.32 +1982-10-22,139.06,140.40,138.75,138.83,101120000,138.83 +1982-10-21,139.23,140.27,137.63,139.06,122460000,139.06 +1982-10-20,136.58,139.23,136.37,139.23,98680000,139.23 +1982-10-19,136.73,137.96,135.72,136.58,100850000,136.58 +1982-10-18,133.59,136.73,133.59,136.73,83790000,136.73 +1982-10-15,134.55,134.61,133.28,133.57,80290000,133.57 +1982-10-14,136.71,136.89,134.55,134.57,107530000,134.57 +1982-10-13,134.42,137.97,134.14,136.71,139800000,136.71 +1982-10-12,134.48,135.85,133.59,134.44,126310000,134.44 +1982-10-11,131.06,135.53,131.06,134.47,138530000,134.47 +1982-10-08,128.79,131.11,128.79,131.05,122250000,131.05 +1982-10-07,125.99,128.96,125.99,128.80,147070000,128.80 +1982-10-06,122.00,125.97,122.00,125.97,93570000,125.97 +1982-10-05,121.60,122.73,121.60,121.98,69770000,121.98 +1982-10-04,121.97,121.97,120.56,121.51,55650000,121.51 +1982-10-01,120.40,121.97,120.15,121.97,65000000,121.97 +1982-09-30,121.62,121.62,120.14,120.42,62610000,120.42 +1982-09-29,123.24,123.24,121.28,121.63,62550000,121.63 +1982-09-28,123.62,124.16,123.21,123.24,65900000,123.24 +1982-09-27,123.32,123.62,122.75,123.62,44840000,123.62 +1982-09-24,123.79,123.80,123.11,123.32,54600000,123.32 +1982-09-23,123.99,124.19,122.96,123.81,68260000,123.81 +1982-09-22,124.90,126.43,123.99,123.99,113150000,123.99 +1982-09-21,122.51,124.91,122.51,124.88,82920000,124.88 +1982-09-20,122.54,122.54,121.48,122.51,58520000,122.51 +1982-09-17,123.76,123.76,122.34,122.55,63950000,122.55 +1982-09-16,124.28,124.88,123.65,123.77,78900000,123.77 +1982-09-15,123.09,124.81,122.72,124.29,69680000,124.29 +1982-09-14,122.27,123.69,122.27,123.10,83070000,123.10 +1982-09-13,120.94,122.24,120.25,122.24,59520000,122.24 +1982-09-10,121.97,121.98,120.27,120.97,71080000,120.97 +1982-09-09,122.19,123.22,121.90,121.97,73090000,121.97 +1982-09-08,121.33,123.11,121.19,122.20,77960000,122.20 +1982-09-07,122.68,122.68,121.19,121.37,68960000,121.37 +1982-09-03,120.31,123.64,120.31,122.68,130910000,122.68 +1982-09-02,118.24,120.32,117.84,120.29,74740000,120.29 +1982-09-01,119.52,120.05,117.98,118.25,82830000,118.25 +1982-08-31,117.65,119.60,117.65,119.51,86360000,119.51 +1982-08-30,117.05,117.66,115.79,117.66,59560000,117.66 +1982-08-27,117.38,118.56,116.63,117.11,74410000,117.11 +1982-08-26,117.57,120.26,117.57,118.55,137330000,118.55 +1982-08-25,115.35,118.12,115.11,117.58,106200000,117.58 +1982-08-24,116.11,116.39,115.08,115.35,121650000,115.35 +1982-08-23,113.02,116.11,112.65,116.11,110310000,116.11 +1982-08-20,109.19,113.02,109.19,113.02,95890000,113.02 +1982-08-19,108.53,109.86,108.34,109.16,78270000,109.16 +1982-08-18,109.04,111.58,108.46,108.54,132690000,108.54 +1982-08-17,105.40,109.04,104.09,109.04,92860000,109.04 +1982-08-16,103.86,105.52,103.86,104.09,55420000,104.09 +1982-08-13,102.42,103.85,102.40,103.85,44720000,103.85 +1982-08-12,102.60,103.22,102.39,102.42,50080000,102.42 +1982-08-11,102.83,103.01,102.48,102.60,49040000,102.60 +1982-08-10,103.11,103.84,102.82,102.84,52680000,102.84 +1982-08-09,103.69,103.69,102.20,103.08,54560000,103.08 +1982-08-06,105.16,105.16,103.67,103.71,48660000,103.71 +1982-08-05,106.10,106.10,104.76,105.16,54700000,105.16 +1982-08-04,107.83,107.83,106.11,106.14,53440000,106.14 +1982-08-03,108.98,109.43,107.81,107.83,60480000,107.83 +1982-08-02,107.71,109.09,107.11,108.98,53460000,108.98 +1982-07-30,107.35,107.95,107.01,107.09,39270000,107.09 +1982-07-29,107.42,107.92,106.62,107.72,55680000,107.72 +1982-07-28,109.42,109.42,107.53,107.74,53830000,107.74 +1982-07-27,110.26,110.35,109.36,109.43,45740000,109.43 +1982-07-26,110.66,111.16,110.29,110.36,37740000,110.36 +1982-07-23,111.46,111.58,111.05,111.17,47280000,111.17 +1982-07-22,110.95,112.02,110.94,111.48,53870000,111.48 +1982-07-21,112.15,112.39,111.38,111.42,66770000,111.42 +1982-07-20,111.11,111.56,110.35,111.54,61060000,111.54 +1982-07-19,111.75,111.78,110.66,110.73,53030000,110.73 +1982-07-16,110.16,111.48,110.16,111.07,58740000,111.07 +1982-07-15,110.83,110.95,110.27,110.47,61090000,110.47 +1982-07-14,109.68,110.44,109.08,110.44,58160000,110.44 +1982-07-13,109.19,110.07,109.19,109.45,66170000,109.45 +1982-07-12,109.48,109.62,108.89,109.57,74690000,109.57 +1982-07-09,108.23,108.97,107.56,108.83,65870000,108.83 +1982-07-08,106.85,107.53,105.57,107.53,63270000,107.53 +1982-07-07,107.08,107.61,106.99,107.22,46920000,107.22 +1982-07-06,107.27,107.67,106.74,107.29,44350000,107.29 +1982-07-02,108.10,108.71,107.60,107.65,43760000,107.65 +1982-07-01,109.52,109.63,108.62,108.71,47900000,108.71 +1982-06-30,110.95,111.00,109.50,109.61,65280000,109.61 +1982-06-29,110.26,110.57,109.68,110.21,46990000,110.21 +1982-06-28,109.30,110.45,109.17,110.26,40700000,110.26 +1982-06-25,109.56,109.83,109.09,109.14,38740000,109.14 +1982-06-24,110.25,110.92,109.79,109.83,55860000,109.83 +1982-06-23,108.59,110.14,108.09,110.14,62710000,110.14 +1982-06-22,107.25,108.30,107.17,108.30,55290000,108.30 +1982-06-21,107.28,107.88,107.01,107.20,50370000,107.20 +1982-06-18,107.60,107.60,107.07,107.28,53800000,107.28 +1982-06-17,108.01,108.85,107.48,107.60,49230000,107.60 +1982-06-16,110.10,110.13,108.82,108.87,56280000,108.87 +1982-06-15,109.63,109.96,108.98,109.69,44970000,109.69 +1982-06-14,110.50,111.22,109.90,109.96,40100000,109.96 +1982-06-11,111.11,111.48,109.65,111.24,68610000,111.24 +1982-06-10,109.35,109.70,108.96,109.61,50950000,109.61 +1982-06-09,109.46,109.63,108.53,108.99,55770000,108.99 +1982-06-08,110.33,110.33,109.60,109.63,46820000,109.63 +1982-06-07,109.59,110.59,109.42,110.12,44630000,110.12 +1982-06-04,111.66,111.85,110.02,110.09,44110000,110.09 +1982-06-03,112.04,112.48,111.45,111.86,48450000,111.86 +1982-06-02,111.74,112.19,111.55,112.04,49220000,112.04 +1982-06-01,111.97,112.07,111.66,111.68,41650000,111.68 +1982-05-28,112.79,112.80,111.66,111.88,43900000,111.88 +1982-05-27,113.11,113.12,112.58,112.66,44730000,112.66 +1982-05-26,113.68,114.40,112.88,113.11,51250000,113.11 +1982-05-25,115.50,115.51,114.40,114.40,44010000,114.40 +1982-05-24,114.46,114.86,114.24,114.79,38510000,114.79 +1982-05-21,115.03,115.13,114.60,114.89,45260000,114.89 +1982-05-20,114.85,115.07,114.37,114.59,48330000,114.59 +1982-05-19,115.61,115.96,114.82,114.89,48840000,114.89 +1982-05-18,116.35,116.70,115.71,115.84,48970000,115.84 +1982-05-17,117.62,118.02,116.66,116.71,45600000,116.71 +1982-05-14,118.20,118.40,118.01,118.01,49900000,118.01 +1982-05-13,119.08,119.20,118.13,118.22,58230000,118.22 +1982-05-12,119.89,119.92,118.76,119.17,59210000,119.17 +1982-05-11,118.54,119.59,118.32,119.42,54680000,119.42 +1982-05-10,119.08,119.49,118.37,118.38,46300000,118.38 +1982-05-07,119.08,119.89,118.71,119.47,67130000,119.47 +1982-05-06,118.82,118.83,117.68,118.68,67540000,118.68 +1982-05-05,117.85,118.05,117.31,117.67,58860000,117.67 +1982-05-04,117.41,117.64,116.85,117.46,58720000,117.46 +1982-05-03,115.96,116.82,115.91,116.82,46490000,116.82 +1982-04-30,116.21,116.78,116.07,116.44,48200000,116.44 +1982-04-29,116.40,117.24,116.11,116.14,51330000,116.14 +1982-04-28,117.83,118.05,116.94,117.26,50530000,117.26 +1982-04-27,119.07,119.26,117.73,118.00,56480000,118.00 +1982-04-26,118.94,119.33,118.25,119.26,60500000,119.26 +1982-04-23,118.02,118.64,117.19,118.64,71840000,118.64 +1982-04-22,115.72,117.25,115.72,117.19,64470000,117.19 +1982-04-21,115.48,115.87,115.30,115.72,57820000,115.72 +1982-04-20,115.80,117.14,114.83,115.44,54610000,115.44 +1982-04-19,116.81,118.16,115.83,116.70,58470000,116.70 +1982-04-16,116.35,117.70,115.68,116.81,55890000,116.81 +1982-04-15,115.83,116.86,115.02,116.35,45700000,116.35 +1982-04-14,115.99,116.69,114.80,115.83,45150000,115.83 +1982-04-13,116.00,117.12,115.16,115.99,48660000,115.99 +1982-04-12,116.22,117.02,115.16,116.00,46520000,116.00 +1982-04-08,115.46,116.94,114.94,116.22,60190000,116.22 +1982-04-07,115.36,116.45,114.58,115.46,53130000,115.46 +1982-04-06,114.73,115.92,113.70,115.36,43200000,115.36 +1982-04-05,115.12,115.90,113.94,114.73,46900000,114.73 +1982-04-02,113.79,115.79,113.65,115.12,59800000,115.12 +1982-04-01,111.96,114.22,111.48,113.79,57100000,113.79 +1982-03-31,112.27,113.17,111.32,111.96,43300000,111.96 +1982-03-30,112.30,113.09,111.30,112.27,43900000,112.27 +1982-03-29,111.94,112.82,110.90,112.30,37100000,112.30 +1982-03-26,113.21,113.43,111.26,111.94,42400000,111.94 +1982-03-25,112.97,114.26,112.02,113.21,51970000,113.21 +1982-03-24,113.55,114.31,112.23,112.97,49380000,112.97 +1982-03-23,112.77,114.51,112.29,113.55,67130000,113.55 +1982-03-22,110.71,113.35,110.71,112.77,57610000,112.77 +1982-03-19,110.30,111.59,109.64,110.61,46250000,110.61 +1982-03-18,109.08,111.02,108.85,110.30,54270000,110.30 +1982-03-17,109.28,110.10,108.11,109.08,48900000,109.08 +1982-03-16,109.45,110.92,108.57,109.28,48900000,109.28 +1982-03-15,108.61,109.99,107.47,109.45,43370000,109.45 +1982-03-12,109.36,109.72,104.46,108.61,49600000,108.61 +1982-03-11,109.41,110.87,108.38,109.36,52960000,109.36 +1982-03-10,108.83,110.98,108.09,109.41,59440000,109.41 +1982-03-09,107.34,109.88,106.17,108.83,76060000,108.83 +1982-03-08,109.34,111.06,107.03,107.34,67330000,107.34 +1982-03-05,109.88,110.90,108.31,109.34,67440000,109.34 +1982-03-04,110.92,111.78,108.77,109.88,74340000,109.88 +1982-03-03,112.51,112.51,109.98,110.92,70230000,110.92 +1982-03-02,113.31,114.80,112.03,112.68,63800000,112.68 +1982-03-01,113.11,114.32,111.86,113.31,53010000,113.31 +1982-02-26,113.21,114.01,112.04,113.11,43840000,113.11 +1982-02-25,113.47,114.86,112.44,113.21,54160000,113.21 +1982-02-24,111.51,113.88,110.71,113.47,64800000,113.47 +1982-02-23,111.59,112.46,110.03,111.51,60100000,111.51 +1982-02-22,113.22,114.90,111.20,111.59,58310000,111.59 +1982-02-19,113.82,114.58,112.33,113.22,51340000,113.22 +1982-02-18,113.69,115.04,112.97,113.82,60810000,113.82 +1982-02-17,114.06,115.09,112.97,113.69,47660000,113.69 +1982-02-16,114.38,114.63,112.06,114.06,48880000,114.06 +1982-02-12,114.43,115.39,113.70,114.38,37070000,114.38 +1982-02-11,114.66,115.59,113.41,114.43,46730000,114.43 +1982-02-10,113.68,115.62,113.45,114.66,46620000,114.66 +1982-02-09,114.63,115.15,112.82,113.68,54420000,113.68 +1982-02-08,117.04,117.04,114.20,114.63,48500000,114.63 +1982-02-05,116.42,118.26,115.74,117.26,53350000,117.26 +1982-02-04,116.48,117.49,114.88,116.42,53300000,116.42 +1982-02-03,118.01,118.67,116.04,116.48,49560000,116.48 +1982-02-02,117.78,119.15,116.91,118.01,45020000,118.01 +1982-02-01,119.81,119.81,117.14,117.78,47720000,117.78 +1982-01-29,118.92,121.38,118.64,120.40,73400000,120.40 +1982-01-28,116.10,119.35,116.10,118.92,66690000,118.92 +1982-01-27,115.19,116.60,114.38,115.74,50060000,115.74 +1982-01-26,115.41,116.60,114.49,115.19,44870000,115.19 +1982-01-25,115.38,115.93,113.63,115.41,43170000,115.41 +1982-01-22,115.75,116.53,114.58,115.38,44370000,115.38 +1982-01-21,115.27,116.92,114.60,115.75,48610000,115.75 +1982-01-20,115.97,116.64,114.29,115.27,48860000,115.27 +1982-01-19,117.22,118.15,115.52,115.97,45070000,115.97 +1982-01-18,116.33,117.69,114.85,117.22,44920000,117.22 +1982-01-15,115.54,117.14,115.10,116.33,43310000,116.33 +1982-01-14,114.88,116.30,114.07,115.54,42940000,115.54 +1982-01-13,116.30,117.46,114.24,114.88,49130000,114.88 +1982-01-12,116.78,117.49,115.18,116.30,49800000,116.30 +1982-01-11,119.55,120.34,116.47,116.78,51900000,116.78 +1982-01-08,118.93,120.59,118.55,119.55,42050000,119.55 +1982-01-07,119.18,119.88,117.70,118.93,43410000,118.93 +1982-01-06,120.05,120.45,117.99,119.18,51510000,119.18 +1982-01-05,122.61,122.61,119.57,120.05,47510000,120.05 +1982-01-04,122.55,123.72,121.48,122.74,36760000,122.74 +1981-12-31,122.30,123.42,121.57,122.55,40780000,122.55 +1981-12-30,121.67,123.11,121.04,122.30,42960000,122.30 +1981-12-29,122.27,122.90,121.12,121.67,35300000,121.67 +1981-12-28,122.54,123.36,121.73,122.27,28320000,122.27 +1981-12-24,122.31,123.06,121.57,122.54,23940000,122.54 +1981-12-23,122.88,123.59,121.58,122.31,42910000,122.31 +1981-12-22,123.34,124.17,122.19,122.88,48320000,122.88 +1981-12-21,124.00,124.71,122.67,123.34,41290000,123.34 +1981-12-18,123.12,124.87,122.56,124.00,50940000,124.00 +1981-12-17,122.42,123.79,121.82,123.12,47230000,123.12 +1981-12-16,122.99,123.66,121.73,122.42,42770000,122.42 +1981-12-15,122.78,123.78,121.83,122.99,44130000,122.99 +1981-12-14,124.37,124.37,122.17,122.78,44740000,122.78 +1981-12-11,125.71,126.26,124.32,124.93,45850000,124.93 +1981-12-10,125.48,126.54,124.60,125.71,47020000,125.71 +1981-12-09,124.82,126.08,124.09,125.48,44810000,125.48 +1981-12-08,125.19,125.75,123.52,124.82,45140000,124.82 +1981-12-07,126.26,126.91,124.67,125.19,45720000,125.19 +1981-12-04,125.12,127.32,125.12,126.26,55040000,126.26 +1981-12-03,124.69,125.84,123.63,125.12,43770000,125.12 +1981-12-02,126.10,126.45,124.18,124.69,44510000,124.69 +1981-12-01,126.35,127.30,124.84,126.10,53980000,126.10 +1981-11-30,125.09,126.97,124.18,126.35,47580000,126.35 +1981-11-27,124.05,125.71,123.63,125.09,32770000,125.09 +1981-11-25,123.51,125.29,123.07,124.05,58570000,124.05 +1981-11-24,121.60,124.04,121.22,123.51,53200000,123.51 +1981-11-23,121.71,123.09,120.76,121.60,45250000,121.60 +1981-11-20,120.71,122.59,120.13,121.71,52010000,121.71 +1981-11-19,120.26,121.67,119.42,120.71,48890000,120.71 +1981-11-18,121.15,121.66,119.61,120.26,49980000,120.26 +1981-11-17,120.24,121.78,119.50,121.15,43190000,121.15 +1981-11-16,121.64,121.64,119.13,120.24,43740000,120.24 +1981-11-13,123.19,123.61,121.06,121.67,45550000,121.67 +1981-11-12,122.92,124.71,122.19,123.19,55720000,123.19 +1981-11-11,122.70,123.82,121.51,122.92,41920000,122.92 +1981-11-10,123.29,124.69,122.01,122.70,53940000,122.70 +1981-11-09,122.67,124.13,121.59,123.29,48310000,123.29 +1981-11-06,123.54,124.03,121.85,122.67,43270000,122.67 +1981-11-05,124.74,125.80,122.98,123.54,50860000,123.54 +1981-11-04,124.80,126.00,123.64,124.74,53450000,124.74 +1981-11-03,124.20,125.52,123.14,124.80,54620000,124.80 +1981-11-02,122.35,125.14,122.35,124.20,65100000,124.20 +1981-10-30,119.06,122.53,118.43,121.89,59570000,121.89 +1981-10-29,119.45,120.37,118.14,119.06,40070000,119.06 +1981-10-28,119.29,120.96,118.39,119.45,48100000,119.45 +1981-10-27,118.16,120.43,117.80,119.29,53030000,119.29 +1981-10-26,118.60,119.00,116.81,118.16,38210000,118.16 +1981-10-23,119.64,119.92,117.78,118.60,41990000,118.60 +1981-10-22,120.10,120.78,118.48,119.64,40630000,119.64 +1981-10-21,120.28,121.94,119.35,120.10,48490000,120.10 +1981-10-20,118.98,121.29,118.78,120.28,51530000,120.28 +1981-10-19,119.19,119.85,117.58,118.98,41590000,118.98 +1981-10-16,119.71,120.46,118.38,119.19,37800000,119.19 +1981-10-15,118.80,120.58,118.01,119.71,42830000,119.71 +1981-10-14,120.78,120.97,118.38,118.80,40260000,118.80 +1981-10-13,121.21,122.37,119.96,120.78,43360000,120.78 +1981-10-12,121.45,122.37,120.17,121.21,30030000,121.21 +1981-10-09,122.31,123.28,120.63,121.45,50060000,121.45 +1981-10-08,121.31,123.08,120.23,122.31,47090000,122.31 +1981-10-07,119.39,121.87,119.09,121.31,50030000,121.31 +1981-10-06,119.51,121.39,118.08,119.39,45460000,119.39 +1981-10-05,119.36,121.54,118.61,119.51,51290000,119.51 +1981-10-02,117.08,120.16,117.07,119.36,54540000,119.36 +1981-10-01,116.18,117.66,115.00,117.08,41600000,117.08 +1981-09-30,115.94,117.05,114.60,116.18,40700000,116.18 +1981-09-29,115.53,117.75,114.75,115.94,49800000,115.94 +1981-09-28,112.77,115.83,110.19,115.53,61320000,115.53 +1981-09-25,114.69,114.69,111.64,112.77,54390000,112.77 +1981-09-24,115.65,117.47,114.32,115.01,48880000,115.01 +1981-09-23,116.68,116.68,113.60,115.65,52700000,115.65 +1981-09-22,117.24,118.19,115.93,116.68,46830000,116.68 +1981-09-21,116.26,118.07,115.04,117.24,44570000,117.24 +1981-09-18,117.15,117.69,115.18,116.26,47350000,116.26 +1981-09-17,118.87,119.87,116.63,117.15,48300000,117.15 +1981-09-16,119.77,120.00,117.89,118.87,43660000,118.87 +1981-09-15,120.66,121.77,119.27,119.77,38580000,119.77 +1981-09-14,121.61,122.00,119.67,120.66,34040000,120.66 +1981-09-11,120.14,122.13,119.29,121.61,42170000,121.61 +1981-09-10,118.40,122.18,118.33,120.14,47430000,120.14 +1981-09-09,117.98,119.49,116.87,118.40,43910000,118.40 +1981-09-08,120.07,120.12,116.85,117.98,47340000,117.98 +1981-09-04,121.24,121.54,119.24,120.07,42760000,120.07 +1981-09-03,123.49,124.16,120.82,121.24,41730000,121.24 +1981-09-02,123.02,124.58,122.54,123.49,37570000,123.49 +1981-09-01,122.79,123.92,121.59,123.02,45110000,123.02 +1981-08-31,124.08,125.58,122.29,122.79,40360000,122.79 +1981-08-28,123.51,125.09,122.85,124.08,38020000,124.08 +1981-08-27,124.96,125.31,122.90,123.51,43900000,123.51 +1981-08-26,125.13,126.17,123.99,124.96,39980000,124.96 +1981-08-25,125.50,125.77,123.00,125.13,54600000,125.13 +1981-08-24,128.59,128.59,125.02,125.50,46750000,125.50 +1981-08-21,130.69,131.06,128.70,129.23,37670000,129.23 +1981-08-20,130.49,131.74,129.84,130.69,38270000,130.69 +1981-08-19,130.11,131.20,128.99,130.49,39390000,130.49 +1981-08-18,131.22,131.73,129.10,130.11,47270000,130.11 +1981-08-17,132.49,133.02,130.75,131.22,40840000,131.22 +1981-08-14,133.51,134.33,131.91,132.49,42580000,132.49 +1981-08-13,133.40,134.58,132.53,133.51,42460000,133.51 +1981-08-12,133.85,135.18,132.73,133.40,53650000,133.40 +1981-08-11,132.54,134.63,132.09,133.85,52600000,133.85 +1981-08-10,131.75,133.32,130.83,132.54,38370000,132.54 +1981-08-07,132.64,133.04,130.96,131.75,38370000,131.75 +1981-08-06,132.67,134.04,131.74,132.64,52070000,132.64 +1981-08-05,131.18,133.39,130.76,132.67,54290000,132.67 +1981-08-04,130.48,131.66,129.43,131.18,39460000,131.18 +1981-08-03,130.92,131.74,129.42,130.48,39650000,130.48 +1981-07-31,130.01,131.78,129.60,130.92,43480000,130.92 +1981-07-30,129.16,130.68,128.56,130.01,41560000,130.01 +1981-07-29,129.14,130.09,128.37,129.16,37610000,129.16 +1981-07-28,129.90,130.44,128.28,129.14,38160000,129.14 +1981-07-27,128.46,130.61,128.43,129.90,39610000,129.90 +1981-07-24,127.40,129.31,127.11,128.46,38880000,128.46 +1981-07-23,127.13,128.26,125.96,127.40,41790000,127.40 +1981-07-22,128.34,129.72,126.70,127.13,47500000,127.13 +1981-07-21,128.72,129.60,127.08,128.34,47280000,128.34 +1981-07-20,130.60,130.60,127.98,128.72,40240000,128.72 +1981-07-17,130.34,131.60,129.49,130.76,42780000,130.76 +1981-07-16,130.23,131.41,129.30,130.34,39010000,130.34 +1981-07-15,129.65,131.59,128.89,130.23,48950000,130.23 +1981-07-14,129.64,130.78,128.14,129.65,45230000,129.65 +1981-07-13,129.37,130.82,128.79,129.64,38100000,129.64 +1981-07-10,129.30,130.43,128.38,129.37,39950000,129.37 +1981-07-09,128.32,130.08,127.57,129.30,45510000,129.30 +1981-07-08,128.24,129.57,126.95,128.32,46000000,128.32 +1981-07-07,127.37,129.60,126.39,128.24,53560000,128.24 +1981-07-06,128.64,128.99,126.44,127.37,44590000,127.37 +1981-07-02,129.77,130.48,127.84,128.64,45100000,128.64 +1981-07-01,131.21,131.69,129.04,129.77,49080000,129.77 +1981-06-30,131.89,132.67,130.31,131.21,41550000,131.21 +1981-06-29,132.56,133.50,131.20,131.89,37930000,131.89 +1981-06-26,132.81,133.75,131.71,132.56,39240000,132.56 +1981-06-25,132.66,134.30,131.78,132.81,43920000,132.81 +1981-06-24,133.35,133.90,131.65,132.66,46650000,132.66 +1981-06-23,131.95,133.98,131.16,133.35,51840000,133.35 +1981-06-22,132.27,133.54,131.10,131.95,41790000,131.95 +1981-06-19,131.64,133.27,130.49,132.27,46430000,132.27 +1981-06-18,133.32,133.98,130.94,131.64,48400000,131.64 +1981-06-17,132.15,133.98,130.81,133.32,55470000,133.32 +1981-06-16,133.61,134.00,131.29,132.15,57780000,132.15 +1981-06-15,133.49,135.67,132.78,133.61,63350000,133.61 +1981-06-12,133.75,135.09,132.40,133.49,60790000,133.49 +1981-06-11,132.32,134.31,131.58,133.75,59530000,133.75 +1981-06-10,131.97,133.49,131.04,132.32,53200000,132.32 +1981-06-09,132.24,133.30,130.94,131.97,44600000,131.97 +1981-06-08,132.22,133.68,131.29,132.24,41580000,132.24 +1981-06-05,130.96,132.98,130.17,132.22,47180000,132.22 +1981-06-04,130.71,132.21,129.72,130.96,48940000,130.96 +1981-06-03,130.62,131.37,128.77,130.71,54700000,130.71 +1981-06-02,132.41,132.96,129.84,130.62,53930000,130.62 +1981-06-01,132.59,134.62,131.49,132.41,62170000,132.41 +1981-05-29,133.45,134.36,131.52,132.59,51580000,132.59 +1981-05-28,133.77,134.92,132.00,133.45,59500000,133.45 +1981-05-27,132.77,134.65,131.85,133.77,58730000,133.77 +1981-05-26,131.33,133.30,130.64,132.77,42760000,132.77 +1981-05-22,131.75,132.65,130.42,131.33,40710000,131.33 +1981-05-21,132.00,133.03,130.70,131.75,46820000,131.75 +1981-05-20,132.09,133.03,130.59,132.00,42370000,132.00 +1981-05-19,132.54,133.22,130.78,132.09,42220000,132.09 +1981-05-18,132.17,133.65,131.49,132.54,42510000,132.54 +1981-05-15,131.28,133.21,130.75,132.17,45460000,132.17 +1981-05-14,130.55,132.15,129.91,131.28,42750000,131.28 +1981-05-13,130.72,131.96,129.53,130.55,42600000,130.55 +1981-05-12,129.71,131.17,128.78,130.72,40440000,130.72 +1981-05-11,131.66,132.23,129.11,129.71,37640000,129.71 +1981-05-08,131.67,132.69,130.84,131.66,41860000,131.66 +1981-05-07,130.78,132.41,130.21,131.67,42590000,131.67 +1981-05-06,130.32,132.38,130.09,130.78,47100000,130.78 +1981-05-05,130.67,131.33,128.93,130.32,49000000,130.32 +1981-05-04,131.78,131.78,129.61,130.67,40430000,130.67 +1981-05-01,132.81,134.17,131.43,132.72,48360000,132.72 +1981-04-30,133.05,134.44,131.85,132.81,47970000,132.81 +1981-04-29,134.33,134.69,131.82,133.05,53340000,133.05 +1981-04-28,135.48,136.09,133.10,134.33,58210000,134.33 +1981-04-27,135.14,136.56,134.13,135.48,51080000,135.48 +1981-04-24,133.94,136.00,132.88,135.14,60000000,135.14 +1981-04-23,134.14,135.90,132.90,133.94,64200000,133.94 +1981-04-22,134.23,135.54,132.72,134.14,60660000,134.14 +1981-04-21,135.45,136.38,133.49,134.23,60280000,134.23 +1981-04-20,134.70,136.25,133.19,135.45,51020000,135.45 +1981-04-16,134.17,135.82,133.43,134.70,52950000,134.70 +1981-04-15,132.68,134.79,132.20,134.17,56040000,134.17 +1981-04-14,133.15,134.03,131.58,132.68,48350000,132.68 +1981-04-13,134.51,134.91,132.24,133.15,49860000,133.15 +1981-04-10,134.67,136.23,133.18,134.51,58130000,134.51 +1981-04-09,134.31,135.80,132.59,134.67,59520000,134.67 +1981-04-08,133.91,135.34,133.26,134.31,48000000,134.31 +1981-04-07,133.93,135.27,132.96,133.91,44540000,133.91 +1981-04-06,135.49,135.61,132.91,133.93,43190000,133.93 +1981-04-03,136.32,137.04,134.67,135.49,48680000,135.49 +1981-04-02,136.57,137.72,135.16,136.32,52570000,136.32 +1981-04-01,136.00,137.56,135.04,136.57,54880000,136.57 +1981-03-31,134.68,137.15,134.68,136.00,50980000,136.00 +1981-03-30,134.65,135.87,133.51,134.28,33500000,134.28 +1981-03-27,136.27,136.89,133.91,134.65,46930000,134.65 +1981-03-26,137.11,138.38,135.29,136.27,60370000,136.27 +1981-03-25,134.67,137.32,133.92,137.11,56320000,137.11 +1981-03-24,135.69,137.40,134.10,134.67,66400000,134.67 +1981-03-23,134.08,136.50,133.41,135.69,57880000,135.69 +1981-03-20,133.46,135.29,132.50,134.08,61980000,134.08 +1981-03-19,134.22,135.37,132.37,133.46,62440000,133.46 +1981-03-18,133.92,135.66,132.80,134.22,55740000,134.22 +1981-03-17,134.68,136.09,132.80,133.92,65920000,133.92 +1981-03-16,133.11,135.35,132.10,134.68,49940000,134.68 +1981-03-13,133.19,135.53,132.39,133.11,68290000,133.11 +1981-03-12,129.95,133.56,129.76,133.19,54640000,133.19 +1981-03-11,130.46,131.20,128.72,129.95,47390000,129.95 +1981-03-10,131.12,132.64,129.72,130.46,56610000,130.46 +1981-03-09,129.85,131.94,129.39,131.12,46180000,131.12 +1981-03-06,129.93,131.18,128.56,129.85,43940000,129.85 +1981-03-05,130.86,131.82,129.25,129.93,45380000,129.93 +1981-03-04,130.56,132.07,129.57,130.86,47260000,130.86 +1981-03-03,132.01,132.72,129.66,130.56,48730000,130.56 +1981-03-02,131.27,132.96,130.15,132.01,47710000,132.01 +1981-02-27,130.10,132.02,129.35,131.27,53210000,131.27 +1981-02-26,128.52,130.93,128.02,130.10,60300000,130.10 +1981-02-25,127.39,129.21,125.77,128.52,45710000,128.52 +1981-02-24,127.35,128.76,126.49,127.39,43960000,127.39 +1981-02-23,126.58,128.28,125.69,127.35,39590000,127.35 +1981-02-20,126.61,127.65,124.66,126.58,41900000,126.58 +1981-02-19,128.48,129.07,125.98,126.61,41630000,126.61 +1981-02-18,127.81,129.25,127.09,128.48,40410000,128.48 +1981-02-17,126.98,128.75,126.43,127.81,37940000,127.81 +1981-02-13,127.48,128.34,126.04,126.98,33360000,126.98 +1981-02-12,128.24,128.95,126.78,127.48,34700000,127.48 +1981-02-11,129.24,129.92,127.60,128.24,37770000,128.24 +1981-02-10,129.27,130.19,128.05,129.24,40820000,129.24 +1981-02-09,130.60,131.39,128.61,129.27,38330000,129.27 +1981-02-06,129.63,131.81,129.03,130.60,45820000,130.60 +1981-02-05,128.59,130.49,127.99,129.63,45320000,129.63 +1981-02-04,128.46,129.71,127.29,128.59,45520000,128.59 +1981-02-03,126.91,128.92,125.89,128.46,45950000,128.46 +1981-02-02,129.48,129.48,125.82,126.91,44070000,126.91 +1981-01-30,130.24,131.65,128.61,129.55,41160000,129.55 +1981-01-29,130.34,131.78,128.97,130.24,38170000,130.24 +1981-01-28,131.12,132.41,129.82,130.34,36690000,130.34 +1981-01-27,129.84,131.95,129.32,131.12,42260000,131.12 +1981-01-26,130.23,131.18,128.57,129.84,35380000,129.84 +1981-01-23,130.26,131.34,129.00,130.23,37220000,130.23 +1981-01-22,131.36,132.08,129.23,130.26,39880000,130.26 +1981-01-21,131.65,132.48,129.93,131.36,39190000,131.36 +1981-01-20,134.37,135.30,131.26,131.65,41750000,131.65 +1981-01-19,134.77,135.86,133.51,134.37,36470000,134.37 +1981-01-16,134.22,135.91,133.35,134.77,43260000,134.77 +1981-01-15,133.47,135.15,132.44,134.22,39640000,134.22 +1981-01-14,133.29,135.25,132.65,133.47,41390000,133.47 +1981-01-13,133.52,134.27,131.69,133.29,40890000,133.29 +1981-01-12,133.48,135.88,132.79,133.52,48760000,133.52 +1981-01-09,133.06,134.76,131.71,133.48,50190000,133.48 +1981-01-08,135.08,136.10,131.96,133.06,55350000,133.06 +1981-01-07,136.02,136.02,132.30,135.08,92890000,135.08 +1981-01-06,137.97,140.32,135.78,138.12,67400000,138.12 +1981-01-05,136.34,139.24,135.86,137.97,58710000,137.97 +1981-01-02,135.76,137.10,134.61,136.34,28870000,136.34 +1980-12-31,135.33,136.76,134.29,135.76,41210000,135.76 +1980-12-30,135.03,136.51,134.04,135.33,39750000,135.33 +1980-12-29,136.57,137.51,134.36,135.03,36060000,135.03 +1980-12-26,135.88,137.02,135.20,136.57,16130000,136.57 +1980-12-24,135.30,136.55,134.15,135.88,29490000,135.88 +1980-12-23,135.78,137.48,134.01,135.30,55260000,135.30 +1980-12-22,133.70,136.68,132.88,135.78,51950000,135.78 +1980-12-19,133.00,134.00,131.80,133.70,50770000,133.70 +1980-12-18,132.89,135.90,131.89,133.00,69570000,133.00 +1980-12-17,130.60,133.59,130.22,132.89,50800000,132.89 +1980-12-16,129.45,131.22,128.33,130.60,41630000,130.60 +1980-12-15,129.23,131.33,128.64,129.45,39700000,129.45 +1980-12-12,127.36,129.98,127.15,129.23,39530000,129.23 +1980-12-11,128.26,128.73,125.32,127.36,60220000,127.36 +1980-12-10,130.48,131.99,127.94,128.26,49860000,128.26 +1980-12-09,130.61,131.92,128.77,130.48,53220000,130.48 +1980-12-08,133.19,133.19,129.71,130.61,53390000,130.61 +1980-12-05,136.37,136.37,132.91,134.03,51990000,134.03 +1980-12-04,136.71,138.40,135.09,136.48,51170000,136.48 +1980-12-03,136.97,138.09,135.43,136.71,43430000,136.71 +1980-12-02,137.21,138.11,134.37,136.97,52340000,136.97 +1980-12-01,140.52,140.66,136.75,137.21,48180000,137.21 +1980-11-28,140.17,141.54,139.00,140.52,34240000,140.52 +1980-11-26,139.33,141.96,138.60,140.17,55340000,140.17 +1980-11-25,138.31,140.83,137.42,139.33,55840000,139.33 +1980-11-24,139.11,139.36,136.36,138.31,51120000,138.31 +1980-11-21,140.40,141.24,138.10,139.11,55950000,139.11 +1980-11-20,139.06,141.24,137.79,140.40,60180000,140.40 +1980-11-19,139.70,141.76,138.06,139.06,69230000,139.06 +1980-11-18,137.91,140.92,137.91,139.70,70380000,139.70 +1980-11-17,137.15,138.46,134.90,137.75,50260000,137.75 +1980-11-14,136.49,138.96,135.12,137.15,71630000,137.15 +1980-11-13,134.59,137.21,134.12,136.49,69340000,136.49 +1980-11-12,131.33,135.12,131.33,134.59,58500000,134.59 +1980-11-11,129.48,132.30,129.48,131.26,41520000,131.26 +1980-11-10,129.18,130.51,128.19,129.48,35720000,129.48 +1980-11-07,128.91,130.08,127.74,129.18,40070000,129.18 +1980-11-06,131.30,131.30,128.23,128.91,48890000,128.91 +1980-11-05,130.77,135.65,130.77,131.33,84080000,131.33 +1980-11-03,127.47,129.85,127.23,129.04,35820000,129.04 +1980-10-31,126.29,128.24,125.29,127.47,40110000,127.47 +1980-10-30,127.91,128.71,125.78,126.29,39060000,126.29 +1980-10-29,128.05,129.91,127.07,127.91,37200000,127.91 +1980-10-28,127.88,128.86,126.36,128.05,40300000,128.05 +1980-10-27,129.85,129.94,127.34,127.88,34430000,127.88 +1980-10-24,129.53,130.55,128.04,129.85,41050000,129.85 +1980-10-23,131.92,132.54,128.87,129.53,49200000,129.53 +1980-10-22,131.84,132.97,130.62,131.92,43060000,131.92 +1980-10-21,132.61,134.01,130.78,131.84,51220000,131.84 +1980-10-20,131.52,133.21,130.04,132.61,40910000,132.61 +1980-10-17,132.22,133.07,130.22,131.52,43920000,131.52 +1980-10-16,133.70,135.88,131.64,132.22,65450000,132.22 +1980-10-15,132.02,134.35,131.59,133.70,48260000,133.70 +1980-10-14,132.03,133.57,131.16,132.02,48830000,132.02 +1980-10-13,130.29,132.46,129.37,132.03,31360000,132.03 +1980-10-10,131.04,132.15,129.58,130.29,44040000,130.29 +1980-10-09,131.65,132.65,130.25,131.04,43980000,131.04 +1980-10-08,131.00,132.78,130.28,131.65,46580000,131.65 +1980-10-07,131.73,132.88,130.10,131.00,50310000,131.00 +1980-10-06,129.35,132.38,129.35,131.73,50130000,131.73 +1980-10-03,128.09,130.44,127.65,129.33,47510000,129.33 +1980-10-02,127.13,128.82,126.04,128.09,46160000,128.09 +1980-10-01,125.46,127.88,124.66,127.13,48720000,127.13 +1980-09-30,123.54,126.09,123.54,125.46,40290000,125.46 +1980-09-29,125.41,125.41,122.87,123.54,46410000,123.54 +1980-09-26,128.17,128.17,125.29,126.35,49460000,126.35 +1980-09-25,130.37,131.53,128.13,128.72,49510000,128.72 +1980-09-24,129.43,131.34,128.45,130.37,56860000,130.37 +1980-09-23,130.40,132.17,128.55,129.43,64390000,129.43 +1980-09-22,129.25,130.99,127.89,130.40,53140000,130.40 +1980-09-19,128.40,130.33,127.57,129.25,53780000,129.25 +1980-09-18,128.87,130.38,127.63,128.40,63390000,128.40 +1980-09-17,126.74,129.68,126.37,128.87,63990000,128.87 +1980-09-16,125.67,127.78,125.15,126.74,57290000,126.74 +1980-09-15,125.54,126.35,124.09,125.67,44630000,125.67 +1980-09-12,125.66,126.75,124.72,125.54,47180000,125.54 +1980-09-11,124.81,126.48,124.19,125.66,44770000,125.66 +1980-09-10,124.07,125.95,123.60,124.81,51430000,124.81 +1980-09-09,123.31,124.52,121.94,124.07,44460000,124.07 +1980-09-08,124.88,125.67,122.78,123.31,42050000,123.31 +1980-09-05,125.42,126.12,124.08,124.88,37990000,124.88 +1980-09-04,126.12,127.70,124.42,125.42,59030000,125.42 +1980-09-03,123.87,126.43,123.87,126.12,52370000,126.12 +1980-09-02,122.38,124.36,121.79,123.74,35290000,123.74 +1980-08-29,122.08,123.01,121.06,122.38,33510000,122.38 +1980-08-28,123.52,123.91,121.61,122.08,39890000,122.08 +1980-08-27,124.84,124.98,122.93,123.52,44000000,123.52 +1980-08-26,125.16,126.29,124.01,124.84,41700000,124.84 +1980-08-25,126.02,126.28,124.65,125.16,35400000,125.16 +1980-08-22,125.46,127.78,125.18,126.02,58210000,126.02 +1980-08-21,123.77,125.99,123.61,125.46,50770000,125.46 +1980-08-20,122.60,124.27,121.91,123.77,42560000,123.77 +1980-08-19,123.39,124.00,121.97,122.60,41930000,122.60 +1980-08-18,125.28,125.28,122.82,123.39,41890000,123.39 +1980-08-15,125.25,126.61,124.57,125.72,47780000,125.72 +1980-08-14,123.28,125.62,122.68,125.25,47700000,125.25 +1980-08-13,123.79,124.67,122.49,123.28,44350000,123.28 +1980-08-12,124.78,125.78,123.29,123.79,52050000,123.79 +1980-08-11,123.61,125.31,122.85,124.78,44690000,124.78 +1980-08-08,123.30,125.23,122.82,123.61,58860000,123.61 +1980-08-07,121.66,123.84,121.66,123.30,61820000,123.30 +1980-08-06,120.74,122.01,119.94,121.55,45050000,121.55 +1980-08-05,120.98,122.09,119.96,120.74,45510000,120.74 +1980-08-04,121.21,121.63,119.42,120.98,41550000,120.98 +1980-08-01,121.67,122.38,120.08,121.21,46440000,121.21 +1980-07-31,122.23,122.34,119.40,121.67,54610000,121.67 +1980-07-30,122.40,123.93,121.16,122.23,58060000,122.23 +1980-07-29,121.43,122.99,120.76,122.40,44840000,122.40 +1980-07-28,120.78,122.02,119.78,121.43,35330000,121.43 +1980-07-25,121.79,121.96,119.94,120.78,36250000,120.78 +1980-07-24,121.93,122.98,120.83,121.79,42420000,121.79 +1980-07-23,122.19,123.26,120.93,121.93,45890000,121.93 +1980-07-22,122.51,123.90,121.38,122.19,52230000,122.19 +1980-07-21,122.04,123.15,120.85,122.51,42750000,122.51 +1980-07-18,121.44,123.19,120.88,122.04,58040000,122.04 +1980-07-17,119.63,121.84,119.43,121.44,48850000,121.44 +1980-07-16,119.30,120.87,118.54,119.63,49140000,119.63 +1980-07-15,120.01,121.56,118.85,119.30,60920000,119.30 +1980-07-14,117.84,120.37,117.45,120.01,45500000,120.01 +1980-07-11,116.95,118.38,116.29,117.84,38310000,117.84 +1980-07-10,117.98,118.57,116.38,116.95,43730000,116.95 +1980-07-09,117.84,119.52,117.10,117.98,52010000,117.98 +1980-07-08,118.29,119.11,117.07,117.84,45830000,117.84 +1980-07-07,117.46,118.85,116.96,118.29,42540000,118.29 +1980-07-03,115.68,117.80,115.49,117.46,47230000,117.46 +1980-07-02,114.93,116.44,114.36,115.68,42950000,115.68 +1980-07-01,114.24,115.45,113.54,114.93,34340000,114.93 +1980-06-30,116.00,116.04,113.55,114.24,29910000,114.24 +1980-06-27,116.19,116.93,115.06,116.00,33110000,116.00 +1980-06-26,116.72,117.98,115.58,116.19,45110000,116.19 +1980-06-25,115.14,117.37,115.07,116.72,46500000,116.72 +1980-06-24,114.51,115.75,113.76,115.14,37730000,115.14 +1980-06-23,114.06,115.28,113.35,114.51,34180000,114.51 +1980-06-20,114.66,114.90,113.12,114.06,36530000,114.06 +1980-06-19,116.26,116.81,114.36,114.66,38280000,114.66 +1980-06-18,116.03,116.84,114.77,116.26,41960000,116.26 +1980-06-17,116.09,117.16,115.13,116.03,41990000,116.03 +1980-06-16,115.81,116.80,114.78,116.09,36190000,116.09 +1980-06-13,115.52,116.94,114.67,115.81,41880000,115.81 +1980-06-12,116.02,117.01,114.28,115.52,47300000,115.52 +1980-06-11,114.66,116.64,114.22,116.02,43800000,116.02 +1980-06-10,113.71,115.50,113.17,114.66,42030000,114.66 +1980-06-09,113.20,114.51,112.68,113.71,36820000,113.71 +1980-06-06,112.78,114.01,112.11,113.20,37230000,113.20 +1980-06-05,112.61,114.38,111.89,112.78,49070000,112.78 +1980-06-04,110.51,113.45,110.22,112.61,44180000,112.61 +1980-06-03,110.76,111.63,109.77,110.51,33150000,110.51 +1980-06-02,111.24,112.15,110.06,110.76,32710000,110.76 +1980-05-30,110.27,111.55,108.87,111.24,34820000,111.24 +1980-05-29,112.06,112.64,109.86,110.27,42000000,110.27 +1980-05-28,111.40,112.72,110.42,112.06,38580000,112.06 +1980-05-27,110.62,112.30,110.35,111.40,40810000,111.40 +1980-05-23,109.01,111.37,109.01,110.62,45790000,110.62 +1980-05-22,107.72,109.73,107.34,109.01,41040000,109.01 +1980-05-21,107.62,108.31,106.54,107.72,34830000,107.72 +1980-05-20,107.67,108.39,106.75,107.62,31800000,107.62 +1980-05-19,107.35,108.43,106.51,107.67,30970000,107.67 +1980-05-16,106.99,107.89,106.25,107.35,31710000,107.35 +1980-05-15,106.85,107.99,106.07,106.99,41120000,106.99 +1980-05-14,106.30,107.89,106.00,106.85,40840000,106.85 +1980-05-13,104.78,106.76,104.44,106.30,35460000,106.30 +1980-05-12,104.72,105.48,103.50,104.78,28220000,104.78 +1980-05-09,106.13,106.20,104.18,104.72,30280000,104.72 +1980-05-08,107.18,108.02,105.50,106.13,39280000,106.13 +1980-05-07,106.25,108.12,105.83,107.18,42600000,107.18 +1980-05-06,106.38,107.83,105.36,106.25,40160000,106.25 +1980-05-05,105.58,106.83,104.64,106.38,34090000,106.38 +1980-05-02,105.46,106.25,104.61,105.58,28040000,105.58 +1980-05-01,106.29,106.86,104.72,105.46,32480000,105.46 +1980-04-30,105.86,106.72,104.50,106.29,30850000,106.29 +1980-04-29,105.64,106.70,104.86,105.86,27940000,105.86 +1980-04-28,105.16,106.79,104.64,105.64,30600000,105.64 +1980-04-25,104.40,105.57,103.02,105.16,28590000,105.16 +1980-04-24,103.73,105.43,102.93,104.40,35790000,104.40 +1980-04-23,103.43,105.11,102.81,103.73,42620000,103.73 +1980-04-22,100.81,104.02,100.81,103.43,47920000,103.43 +1980-04-21,100.55,101.26,98.95,99.80,27560000,99.80 +1980-04-18,101.05,102.07,99.97,100.55,26880000,100.55 +1980-04-17,101.54,102.21,100.12,101.05,32770000,101.05 +1980-04-16,102.63,104.42,101.13,101.54,39730000,101.54 +1980-04-15,102.84,103.94,101.85,102.63,26670000,102.63 +1980-04-14,103.79,103.92,102.08,102.84,23060000,102.84 +1980-04-11,104.08,105.15,103.20,103.79,29960000,103.79 +1980-04-10,103.11,105.00,102.81,104.08,33940000,104.08 +1980-04-09,101.20,103.60,101.01,103.11,33020000,103.11 +1980-04-08,100.19,101.88,99.23,101.20,31700000,101.20 +1980-04-07,102.15,102.27,99.73,100.19,29130000,100.19 +1980-04-03,102.68,103.34,101.31,102.15,27970000,102.15 +1980-04-02,102.18,103.87,101.45,102.68,35210000,102.68 +1980-04-01,102.09,103.28,100.85,102.18,32230000,102.18 +1980-03-31,100.68,102.65,100.02,102.09,35840000,102.09 +1980-03-28,98.22,101.43,97.72,100.68,46720000,100.68 +1980-03-27,98.68,99.58,94.23,98.22,63680000,98.22 +1980-03-26,99.19,101.22,98.10,98.68,37370000,98.68 +1980-03-25,99.28,100.58,97.89,99.19,43790000,99.19 +1980-03-24,102.18,102.18,98.88,99.28,39230000,99.28 +1980-03-21,103.12,103.73,101.55,102.31,32220000,102.31 +1980-03-20,104.31,105.17,102.52,103.12,32580000,103.12 +1980-03-19,104.10,105.72,103.35,104.31,36520000,104.31 +1980-03-18,102.26,104.71,101.14,104.10,47340000,104.10 +1980-03-17,105.23,105.23,101.82,102.26,37020000,102.26 +1980-03-14,105.62,106.49,104.01,105.43,35180000,105.43 +1980-03-13,106.87,107.55,105.10,105.62,33070000,105.62 +1980-03-12,107.78,108.40,105.42,106.87,37990000,106.87 +1980-03-11,106.51,108.54,106.18,107.78,41350000,107.78 +1980-03-10,106.90,107.86,104.92,106.51,43750000,106.51 +1980-03-07,108.65,108.96,105.99,106.90,50950000,106.90 +1980-03-06,111.13,111.29,107.85,108.65,49610000,108.65 +1980-03-05,112.78,113.94,110.58,111.13,49240000,111.13 +1980-03-04,112.50,113.41,110.83,112.78,44310000,112.78 +1980-03-03,113.66,114.34,112.01,112.50,38690000,112.50 +1980-02-29,112.35,114.12,111.77,113.66,38810000,113.66 +1980-02-28,112.38,113.70,111.33,112.35,40330000,112.35 +1980-02-27,113.98,115.12,111.91,112.38,46430000,112.38 +1980-02-26,113.33,114.76,112.30,113.98,40000000,113.98 +1980-02-25,114.93,114.93,112.62,113.33,39140000,113.33 +1980-02-22,115.28,116.46,113.43,115.04,48210000,115.04 +1980-02-21,116.47,117.90,114.44,115.28,51530000,115.28 +1980-02-20,114.60,117.18,114.06,116.47,44340000,116.47 +1980-02-19,115.41,115.67,113.35,114.60,39480000,114.60 +1980-02-15,116.70,116.70,114.12,115.41,46680000,115.41 +1980-02-14,118.44,119.30,116.04,116.72,50540000,116.72 +1980-02-13,117.90,120.22,117.57,118.44,65230000,118.44 +1980-02-12,117.12,118.41,115.75,117.90,48090000,117.90 +1980-02-11,117.95,119.05,116.31,117.12,58660000,117.12 +1980-02-08,116.28,118.66,115.72,117.95,57860000,117.95 +1980-02-07,115.72,117.87,115.22,116.28,57690000,116.28 +1980-02-06,114.66,116.57,113.65,115.72,51950000,115.72 +1980-02-05,114.37,115.25,112.15,114.66,41880000,114.66 +1980-02-04,115.12,116.01,113.83,114.37,43070000,114.37 +1980-02-01,114.16,115.54,113.13,115.12,46610000,115.12 +1980-01-31,115.20,117.17,113.78,114.16,65900000,114.16 +1980-01-30,114.07,115.85,113.37,115.20,51170000,115.20 +1980-01-29,114.85,115.77,113.03,114.07,55480000,114.07 +1980-01-28,113.61,115.65,112.93,114.85,53620000,114.85 +1980-01-25,113.70,114.45,112.36,113.61,47100000,113.61 +1980-01-24,113.44,115.27,112.95,113.70,59070000,113.70 +1980-01-23,111.51,113.93,110.93,113.44,50730000,113.44 +1980-01-22,112.10,113.10,110.92,111.51,50620000,111.51 +1980-01-21,111.07,112.90,110.66,112.10,48040000,112.10 +1980-01-18,110.70,111.74,109.88,111.07,47150000,111.07 +1980-01-17,111.05,112.01,109.81,110.70,54170000,110.70 +1980-01-16,111.14,112.90,110.38,111.05,67700000,111.05 +1980-01-15,110.38,111.93,109.45,111.14,52320000,111.14 +1980-01-14,109.92,111.44,109.34,110.38,52930000,110.38 +1980-01-11,109.89,111.16,108.89,109.92,52890000,109.92 +1980-01-10,109.05,110.86,108.47,109.89,55980000,109.89 +1980-01-09,108.95,111.09,108.41,109.05,65260000,109.05 +1980-01-08,106.81,109.29,106.29,108.95,53390000,108.95 +1980-01-07,106.52,107.80,105.80,106.81,44500000,106.81 +1980-01-04,105.22,107.08,105.09,106.52,39130000,106.52 +1980-01-03,105.76,106.08,103.26,105.22,50480000,105.22 +1980-01-02,107.94,108.43,105.29,105.76,40610000,105.76 +1979-12-31,107.84,108.53,107.26,107.94,31530000,107.94 +1979-12-28,107.96,108.61,107.16,107.84,34430000,107.84 +1979-12-27,107.78,108.50,107.14,107.96,31410000,107.96 +1979-12-26,107.66,108.37,107.06,107.78,24960000,107.78 +1979-12-24,107.59,108.08,106.80,107.66,19150000,107.66 +1979-12-21,108.26,108.76,106.99,107.59,36160000,107.59 +1979-12-20,108.20,109.24,107.40,108.26,40380000,108.26 +1979-12-19,108.30,108.79,107.02,108.20,41780000,108.20 +1979-12-18,109.33,109.83,107.83,108.30,43310000,108.30 +1979-12-17,108.92,110.33,108.36,109.33,43830000,109.33 +1979-12-14,107.67,109.49,107.37,108.92,41800000,108.92 +1979-12-13,107.52,108.29,106.68,107.67,36690000,107.67 +1979-12-12,107.49,108.32,106.78,107.52,34630000,107.52 +1979-12-11,107.67,108.58,106.79,107.49,36160000,107.49 +1979-12-10,107.52,108.27,106.65,107.67,32270000,107.67 +1979-12-07,108.00,109.24,106.55,107.52,42370000,107.52 +1979-12-06,107.25,108.47,106.71,108.00,37510000,108.00 +1979-12-05,106.79,108.36,106.60,107.25,39300000,107.25 +1979-12-04,105.83,107.25,105.66,106.79,33510000,106.79 +1979-12-03,106.16,106.65,105.07,105.83,29030000,105.83 +1979-11-30,106.81,107.16,105.56,106.16,30480000,106.16 +1979-11-29,106.77,107.84,106.17,106.81,33550000,106.81 +1979-11-28,106.38,107.55,105.29,106.77,39690000,106.77 +1979-11-27,106.80,107.89,105.64,106.38,45140000,106.38 +1979-11-26,104.83,107.44,104.83,106.80,47940000,106.80 +1979-11-23,103.89,105.13,103.56,104.67,23300000,104.67 +1979-11-21,103.69,104.23,102.04,103.89,37020000,103.89 +1979-11-20,104.23,105.11,103.14,103.69,35010000,103.69 +1979-11-19,103.79,105.08,103.17,104.23,33090000,104.23 +1979-11-16,104.13,104.72,103.07,103.79,30060000,103.79 +1979-11-15,103.39,104.94,103.10,104.13,32380000,104.13 +1979-11-14,102.94,104.13,101.91,103.39,30970000,103.39 +1979-11-13,103.51,104.21,102.42,102.94,29240000,102.94 +1979-11-12,101.51,103.72,101.27,103.51,26640000,103.51 +1979-11-09,100.58,102.18,100.58,101.51,30060000,101.51 +1979-11-08,99.87,101.00,99.49,100.30,26270000,100.30 +1979-11-07,100.97,100.97,99.42,99.87,30830000,99.87 +1979-11-06,101.82,102.01,100.77,101.20,21960000,101.20 +1979-11-05,102.51,102.66,101.24,101.82,20470000,101.82 +1979-11-02,102.57,103.21,101.92,102.51,23670000,102.51 +1979-11-01,101.82,103.07,101.10,102.57,25880000,102.57 +1979-10-31,102.67,103.16,101.38,101.82,27780000,101.82 +1979-10-30,100.71,102.83,100.41,102.67,28890000,102.67 +1979-10-29,100.57,101.56,100.13,100.71,22720000,100.71 +1979-10-26,100.00,101.31,99.59,100.57,29660000,100.57 +1979-10-25,100.44,101.39,99.56,100.00,28440000,100.00 +1979-10-24,100.28,101.45,99.66,100.44,31480000,100.44 +1979-10-23,100.71,101.44,99.61,100.28,32910000,100.28 +1979-10-22,101.38,101.38,99.06,100.71,45240000,100.71 +1979-10-19,103.58,103.58,101.24,101.60,42430000,101.60 +1979-10-18,103.39,104.62,102.92,103.61,29590000,103.61 +1979-10-17,103.19,104.54,102.74,103.39,29650000,103.39 +1979-10-16,103.36,104.37,102.52,103.19,33770000,103.19 +1979-10-15,104.49,104.74,102.69,103.36,34850000,103.36 +1979-10-12,105.05,106.20,104.01,104.49,36390000,104.49 +1979-10-11,105.30,106.33,103.70,105.05,47530000,105.05 +1979-10-10,106.23,106.23,102.31,105.30,81620000,105.30 +1979-10-09,109.43,109.43,106.04,106.63,55560000,106.63 +1979-10-08,111.27,111.83,109.65,109.88,32610000,109.88 +1979-10-05,110.17,112.16,110.16,111.27,48250000,111.27 +1979-10-04,109.59,110.81,109.14,110.17,38800000,110.17 +1979-10-03,109.59,110.43,108.88,109.59,36470000,109.59 +1979-10-02,108.56,110.08,108.03,109.59,38310000,109.59 +1979-10-01,109.19,109.19,107.70,108.56,24980000,108.56 +1979-09-28,110.21,110.67,108.70,109.32,35950000,109.32 +1979-09-27,109.96,110.75,109.19,110.21,33110000,110.21 +1979-09-26,109.68,111.25,109.37,109.96,37700000,109.96 +1979-09-25,109.61,110.19,108.27,109.68,32410000,109.68 +1979-09-24,110.47,110.90,109.16,109.61,33790000,109.61 +1979-09-21,110.51,111.58,109.46,110.47,52380000,110.47 +1979-09-20,108.28,110.69,107.59,110.51,45100000,110.51 +1979-09-19,108.00,109.02,107.52,108.28,35370000,108.28 +1979-09-18,108.84,109.00,107.32,108.00,38750000,108.00 +1979-09-17,108.76,110.06,108.40,108.84,37610000,108.84 +1979-09-14,107.85,109.48,107.42,108.76,41980000,108.76 +1979-09-13,107.82,108.53,107.06,107.85,35240000,107.85 +1979-09-12,107.51,108.41,106.72,107.82,39350000,107.82 +1979-09-11,108.17,108.83,106.80,107.51,42530000,107.51 +1979-09-10,107.66,108.71,107.21,108.17,32980000,108.17 +1979-09-07,106.85,108.09,106.30,107.66,34360000,107.66 +1979-09-06,106.40,107.61,105.97,106.85,30330000,106.85 +1979-09-05,107.19,107.19,105.38,106.40,41650000,106.40 +1979-09-04,109.32,109.41,107.22,107.44,33350000,107.44 +1979-08-31,109.02,109.80,108.58,109.32,26370000,109.32 +1979-08-30,109.02,109.59,108.40,109.02,29300000,109.02 +1979-08-29,109.02,109.59,108.36,109.02,30810000,109.02 +1979-08-28,109.14,109.65,108.47,109.02,29430000,109.02 +1979-08-27,108.60,109.84,108.12,109.14,32050000,109.14 +1979-08-24,108.63,109.11,107.65,108.60,32730000,108.60 +1979-08-23,108.99,109.59,108.12,108.63,35710000,108.63 +1979-08-22,108.91,109.56,108.09,108.99,38450000,108.99 +1979-08-21,108.83,109.68,108.17,108.91,38860000,108.91 +1979-08-20,108.30,109.32,107.69,108.83,32300000,108.83 +1979-08-17,108.09,108.94,107.25,108.30,31630000,108.30 +1979-08-16,108.25,109.18,107.38,108.09,47000000,108.09 +1979-08-15,107.52,108.64,106.75,108.25,46130000,108.25 +1979-08-14,107.42,108.03,106.60,107.52,40910000,107.52 +1979-08-13,106.40,107.90,106.28,107.42,41980000,107.42 +1979-08-10,105.49,106.79,104.81,106.40,36740000,106.40 +1979-08-09,105.98,106.25,104.89,105.49,34630000,105.49 +1979-08-08,105.65,106.84,105.20,105.98,44970000,105.98 +1979-08-07,104.30,106.23,104.12,105.65,45410000,105.65 +1979-08-06,104.04,104.66,103.27,104.30,27190000,104.30 +1979-08-03,104.10,104.56,103.36,104.04,28160000,104.04 +1979-08-02,104.17,105.02,103.59,104.10,37720000,104.10 +1979-08-01,103.81,104.57,103.14,104.17,36570000,104.17 +1979-07-31,103.15,104.26,102.89,103.81,34360000,103.81 +1979-07-30,103.10,103.63,102.42,103.15,28640000,103.15 +1979-07-27,103.10,103.50,102.29,103.10,27760000,103.10 +1979-07-26,103.08,103.63,102.34,103.10,32270000,103.10 +1979-07-25,101.97,103.44,101.85,103.08,34890000,103.08 +1979-07-24,101.59,102.50,101.14,101.97,29690000,101.97 +1979-07-23,101.82,102.13,100.84,101.59,26860000,101.59 +1979-07-20,101.61,102.32,101.06,101.82,26360000,101.82 +1979-07-19,101.69,102.42,101.04,101.61,26780000,101.61 +1979-07-18,101.83,102.06,100.35,101.69,35950000,101.69 +1979-07-17,102.74,103.06,101.27,101.83,34270000,101.83 +1979-07-16,102.32,103.20,101.81,102.74,26620000,102.74 +1979-07-13,102.69,102.99,101.49,102.32,33080000,102.32 +1979-07-12,103.64,103.72,102.22,102.69,31780000,102.69 +1979-07-11,104.20,104.34,102.87,103.64,36650000,103.64 +1979-07-10,104.47,105.17,103.52,104.20,39730000,104.20 +1979-07-09,103.62,105.07,103.36,104.47,42460000,104.47 +1979-07-06,102.43,103.91,102.12,103.62,38570000,103.62 +1979-07-05,102.09,102.88,101.59,102.43,30290000,102.43 +1979-07-03,101.99,102.57,101.31,102.09,31670000,102.09 +1979-07-02,102.91,103.00,101.45,101.99,32060000,101.99 +1979-06-29,102.80,103.67,102.04,102.91,34690000,102.91 +1979-06-28,102.27,103.46,101.91,102.80,38470000,102.80 +1979-06-27,101.66,102.95,101.29,102.27,36720000,102.27 +1979-06-26,102.09,102.09,101.22,101.66,34680000,101.66 +1979-06-25,102.64,102.91,101.45,102.09,31330000,102.09 +1979-06-22,102.09,103.16,101.91,102.64,36410000,102.64 +1979-06-21,101.63,102.74,101.20,102.09,36490000,102.09 +1979-06-20,101.58,102.19,100.93,101.63,33790000,101.63 +1979-06-19,101.56,102.28,100.91,101.58,30780000,101.58 +1979-06-18,102.09,102.48,101.05,101.56,30970000,101.56 +1979-06-15,102.20,102.78,101.38,102.09,40740000,102.09 +1979-06-14,102.31,102.63,101.04,102.20,37850000,102.20 +1979-06-13,102.85,103.58,101.83,102.31,40740000,102.31 +1979-06-12,101.91,103.64,101.81,102.85,45450000,102.85 +1979-06-11,101.49,102.24,100.91,101.91,28270000,101.91 +1979-06-08,101.79,102.23,100.91,101.49,31470000,101.49 +1979-06-07,101.30,102.54,101.15,101.79,43380000,101.79 +1979-06-06,100.62,101.96,100.38,101.30,39830000,101.30 +1979-06-05,99.32,101.07,99.17,100.62,35050000,100.62 +1979-06-04,99.17,99.76,98.61,99.32,24040000,99.32 +1979-06-01,99.08,99.70,98.57,99.17,24560000,99.17 +1979-05-31,99.11,99.61,98.29,99.08,30300000,99.08 +1979-05-30,100.05,100.25,98.79,99.11,29250000,99.11 +1979-05-29,100.22,100.76,99.56,100.05,27040000,100.05 +1979-05-25,99.93,100.68,99.52,100.22,27810000,100.22 +1979-05-24,99.89,100.44,99.14,99.93,25710000,99.93 +1979-05-23,100.51,101.31,99.63,99.89,30390000,99.89 +1979-05-22,100.14,100.93,99.45,100.51,30400000,100.51 +1979-05-21,99.93,100.75,99.37,100.14,25550000,100.14 +1979-05-18,99.94,100.73,99.33,99.93,26590000,99.93 +1979-05-17,98.42,100.22,98.29,99.94,30550000,99.94 +1979-05-16,98.14,98.80,97.49,98.42,28350000,98.42 +1979-05-15,98.06,98.90,97.60,98.14,26190000,98.14 +1979-05-14,98.52,98.95,97.71,98.06,22450000,98.06 +1979-05-11,98.52,99.03,97.92,98.52,24010000,98.52 +1979-05-10,99.46,99.63,98.22,98.52,25230000,98.52 +1979-05-09,99.17,100.01,98.50,99.46,27670000,99.46 +1979-05-08,99.02,99.56,97.98,99.17,32720000,99.17 +1979-05-07,100.37,100.37,98.78,99.02,30480000,99.02 +1979-05-04,101.81,102.08,100.42,100.69,30630000,100.69 +1979-05-03,101.72,102.57,101.25,101.81,30870000,101.81 +1979-05-02,101.68,102.28,101.00,101.72,30510000,101.72 +1979-05-01,101.76,102.50,101.22,101.68,31040000,101.68 +1979-04-30,101.80,102.24,100.91,101.76,26440000,101.76 +1979-04-27,102.01,102.32,101.04,101.80,29610000,101.80 +1979-04-26,102.50,102.91,101.58,102.01,32400000,102.01 +1979-04-25,102.20,103.07,101.79,102.50,31750000,102.50 +1979-04-24,101.57,103.02,101.39,102.20,35540000,102.20 +1979-04-23,101.23,102.00,100.68,101.57,25610000,101.57 +1979-04-20,101.28,101.81,100.46,101.23,28830000,101.23 +1979-04-19,101.70,102.40,100.88,101.28,31150000,101.28 +1979-04-18,101.24,102.23,100.96,101.70,29510000,101.70 +1979-04-17,101.12,101.94,100.65,101.24,29260000,101.24 +1979-04-16,102.00,102.02,100.67,101.12,28050000,101.12 +1979-04-12,102.31,102.77,101.51,102.00,26780000,102.00 +1979-04-11,103.34,103.77,101.92,102.31,32900000,102.31 +1979-04-10,102.87,103.83,102.42,103.34,31900000,103.34 +1979-04-09,103.18,103.56,102.28,102.87,27230000,102.87 +1979-04-06,103.26,103.95,102.58,103.18,34710000,103.18 +1979-04-05,102.65,103.60,102.16,103.26,34520000,103.26 +1979-04-04,102.40,103.73,102.16,102.65,41940000,102.65 +1979-04-03,100.90,102.67,100.81,102.40,33530000,102.40 +1979-04-02,101.56,101.56,100.14,100.90,28990000,100.90 +1979-03-30,102.03,102.51,101.03,101.59,29970000,101.59 +1979-03-29,102.12,102.78,101.43,102.03,28510000,102.03 +1979-03-28,102.48,103.31,101.74,102.12,39920000,102.12 +1979-03-27,101.04,102.71,100.81,102.48,32940000,102.48 +1979-03-26,101.60,101.77,100.60,101.04,23430000,101.04 +1979-03-23,101.67,102.37,101.02,101.60,33570000,101.60 +1979-03-22,101.25,102.41,101.04,101.67,34380000,101.67 +1979-03-21,100.50,101.48,99.87,101.25,31120000,101.25 +1979-03-20,101.06,101.34,100.01,100.50,27180000,100.50 +1979-03-19,100.69,101.94,100.35,101.06,34620000,101.06 +1979-03-16,99.86,101.16,99.53,100.69,31770000,100.69 +1979-03-15,99.71,100.57,99.11,99.86,29370000,99.86 +1979-03-14,99.84,100.43,99.23,99.71,24630000,99.71 +1979-03-13,99.67,100.66,99.13,99.84,31170000,99.84 +1979-03-12,99.54,100.04,98.56,99.67,25740000,99.67 +1979-03-09,99.58,100.58,99.12,99.54,33410000,99.54 +1979-03-08,98.44,99.82,98.10,99.58,32000000,99.58 +1979-03-07,97.87,99.23,97.67,98.44,28930000,98.44 +1979-03-06,98.06,98.53,97.36,97.87,24490000,97.87 +1979-03-05,97.03,98.64,97.03,98.06,25690000,98.06 +1979-03-02,96.90,97.55,96.44,96.97,23130000,96.97 +1979-03-01,96.28,97.28,95.98,96.90,23830000,96.90 +1979-02-28,96.13,96.69,95.38,96.28,25090000,96.28 +1979-02-27,97.65,97.65,95.69,96.13,31470000,96.13 +1979-02-26,97.78,98.28,97.20,97.67,22620000,97.67 +1979-02-23,98.33,98.50,97.29,97.78,22750000,97.78 +1979-02-22,99.07,99.21,97.88,98.33,26290000,98.33 +1979-02-21,99.42,100.07,98.69,99.07,26050000,99.07 +1979-02-20,98.67,99.67,98.26,99.42,22010000,99.42 +1979-02-16,98.73,99.23,98.11,98.67,21110000,98.67 +1979-02-15,98.87,99.13,97.96,98.73,22550000,98.73 +1979-02-14,98.93,99.64,98.21,98.87,27220000,98.87 +1979-02-13,98.25,99.58,98.25,98.93,28470000,98.93 +1979-02-12,97.87,98.55,97.05,98.20,20610000,98.20 +1979-02-09,97.65,98.50,97.28,97.87,24320000,97.87 +1979-02-08,97.16,98.11,96.82,97.65,23360000,97.65 +1979-02-07,98.05,98.07,96.51,97.16,28450000,97.16 +1979-02-06,98.09,98.74,97.48,98.05,23570000,98.05 +1979-02-05,99.07,99.07,97.57,98.09,26490000,98.09 +1979-02-02,99.96,100.52,99.10,99.50,25350000,99.50 +1979-02-01,99.93,100.38,99.01,99.96,27930000,99.96 +1979-01-31,101.05,101.41,99.47,99.93,30330000,99.93 +1979-01-30,101.55,102.07,100.68,101.05,26910000,101.05 +1979-01-29,101.86,102.33,100.99,101.55,24170000,101.55 +1979-01-26,101.19,102.59,101.03,101.86,34230000,101.86 +1979-01-25,100.16,101.66,99.99,101.19,31440000,101.19 +1979-01-24,100.60,101.31,99.67,100.16,31730000,100.16 +1979-01-23,99.90,101.05,99.35,100.60,30130000,100.60 +1979-01-22,99.75,100.35,98.90,99.90,24390000,99.90 +1979-01-19,99.72,100.57,99.22,99.75,26800000,99.75 +1979-01-18,99.48,100.35,98.91,99.72,27260000,99.72 +1979-01-17,99.46,100.00,98.33,99.48,25310000,99.48 +1979-01-16,100.69,100.88,99.11,99.46,30340000,99.46 +1979-01-15,99.93,101.13,99.58,100.69,27520000,100.69 +1979-01-12,99.32,100.91,99.32,99.93,37120000,99.93 +1979-01-11,98.77,99.41,97.95,99.10,24580000,99.10 +1979-01-10,99.33,99.75,98.28,98.77,24990000,98.77 +1979-01-09,98.80,99.96,98.62,99.33,27340000,99.33 +1979-01-08,99.13,99.30,97.83,98.80,21440000,98.80 +1979-01-05,98.58,99.79,98.25,99.13,28890000,99.13 +1979-01-04,97.80,99.42,97.52,98.58,33290000,98.58 +1979-01-03,96.81,98.54,96.81,97.80,29180000,97.80 +1979-01-02,96.11,96.96,95.22,96.73,18340000,96.73 +1978-12-29,96.28,97.03,95.48,96.11,30030000,96.11 +1978-12-28,96.66,97.19,95.82,96.28,25440000,96.28 +1978-12-27,97.51,97.51,96.15,96.66,23580000,96.66 +1978-12-26,96.31,97.89,95.99,97.52,21470000,97.52 +1978-12-22,94.77,96.62,94.77,96.31,23790000,96.31 +1978-12-21,94.68,95.66,94.11,94.71,28670000,94.71 +1978-12-20,94.24,95.20,93.70,94.68,26520000,94.68 +1978-12-19,93.44,94.85,93.05,94.24,25960000,94.24 +1978-12-18,94.33,94.33,92.64,93.44,32900000,93.44 +1978-12-15,96.04,96.28,94.88,95.33,23620000,95.33 +1978-12-14,96.06,96.44,95.20,96.04,20840000,96.04 +1978-12-13,96.59,97.07,95.59,96.06,22480000,96.06 +1978-12-12,97.11,97.58,96.27,96.59,22210000,96.59 +1978-12-11,96.63,97.56,96.07,97.11,21000000,97.11 +1978-12-08,97.08,97.48,96.14,96.63,18560000,96.63 +1978-12-07,97.49,98.10,96.58,97.08,21170000,97.08 +1978-12-06,97.44,98.58,96.83,97.49,29680000,97.49 +1978-12-05,96.15,97.70,95.88,97.44,25670000,97.44 +1978-12-04,96.28,96.96,95.37,96.15,22020000,96.15 +1978-12-01,95.01,96.69,95.01,96.28,26830000,96.28 +1978-11-30,93.75,94.94,93.29,94.70,19900000,94.70 +1978-11-29,94.92,94.92,93.48,93.75,21160000,93.75 +1978-11-28,95.99,96.51,94.88,95.15,22740000,95.15 +1978-11-27,95.79,96.52,95.17,95.99,19790000,95.99 +1978-11-24,95.48,96.17,94.98,95.79,14590000,95.79 +1978-11-22,95.01,95.91,94.54,95.48,20010000,95.48 +1978-11-21,95.25,95.83,94.49,95.01,20750000,95.01 +1978-11-20,94.42,95.86,94.29,95.25,24440000,95.25 +1978-11-17,93.71,95.03,93.59,94.42,25170000,94.42 +1978-11-16,92.71,94.08,92.59,93.71,21340000,93.71 +1978-11-15,92.49,94.00,92.29,92.71,26280000,92.71 +1978-11-14,93.13,93.53,91.77,92.49,30610000,92.49 +1978-11-13,94.77,94.90,92.96,93.13,20960000,93.13 +1978-11-10,94.42,95.39,93.94,94.77,16750000,94.77 +1978-11-09,94.45,95.50,93.81,94.42,23320000,94.42 +1978-11-08,93.85,94.74,92.89,94.45,23560000,94.45 +1978-11-07,94.75,94.75,93.14,93.85,25320000,93.85 +1978-11-06,96.18,96.49,94.84,95.19,20450000,95.19 +1978-11-03,95.61,96.98,94.78,96.18,25990000,96.18 +1978-11-02,96.85,97.31,94.84,95.61,41030000,95.61 +1978-11-01,94.13,97.41,94.13,96.85,50450000,96.85 +1978-10-31,95.06,95.80,92.72,93.15,42720000,93.15 +1978-10-30,94.59,95.49,91.65,95.06,59480000,95.06 +1978-10-27,96.03,96.62,94.30,94.59,40360000,94.59 +1978-10-26,97.31,97.71,95.59,96.03,31990000,96.03 +1978-10-25,97.49,98.56,96.33,97.31,31380000,97.31 +1978-10-24,98.18,98.95,97.13,97.49,28880000,97.49 +1978-10-23,97.95,98.84,96.63,98.18,36090000,98.18 +1978-10-20,99.26,99.26,97.12,97.95,43670000,97.95 +1978-10-19,100.49,101.03,99.04,99.33,31810000,99.33 +1978-10-18,101.26,101.76,99.89,100.49,32940000,100.49 +1978-10-17,102.35,102.35,100.47,101.26,37870000,101.26 +1978-10-16,104.63,104.63,102.43,102.61,24600000,102.61 +1978-10-13,104.88,105.34,104.07,104.66,21920000,104.66 +1978-10-12,105.39,106.23,104.42,104.88,30170000,104.88 +1978-10-11,104.46,105.64,103.80,105.39,21740000,105.39 +1978-10-10,104.59,105.36,103.90,104.46,25470000,104.46 +1978-10-09,103.52,104.89,103.31,104.59,19720000,104.59 +1978-10-06,103.27,104.23,102.82,103.52,27380000,103.52 +1978-10-05,103.06,104.10,102.54,103.27,27820000,103.27 +1978-10-04,102.60,103.36,101.76,103.06,25090000,103.06 +1978-10-03,102.96,103.56,102.18,102.60,22540000,102.60 +1978-10-02,102.54,103.42,102.13,102.96,18700000,102.96 +1978-09-29,101.96,103.08,101.65,102.54,23610000,102.54 +1978-09-28,101.66,102.38,100.94,101.96,24390000,101.96 +1978-09-27,102.62,103.44,101.33,101.66,28370000,101.66 +1978-09-26,101.86,103.15,101.58,102.62,26330000,102.62 +1978-09-25,101.84,102.36,101.05,101.86,20970000,101.86 +1978-09-22,101.90,102.69,101.13,101.84,27960000,101.84 +1978-09-21,101.73,102.54,100.66,101.90,33640000,101.90 +1978-09-20,102.53,103.29,101.28,101.73,35080000,101.73 +1978-09-19,103.21,103.82,102.12,102.53,31660000,102.53 +1978-09-18,104.12,105.03,102.75,103.21,35860000,103.21 +1978-09-15,105.10,105.12,103.56,104.12,37290000,104.12 +1978-09-14,106.34,106.62,104.77,105.10,37400000,105.10 +1978-09-13,106.99,107.85,105.87,106.34,43340000,106.34 +1978-09-12,106.98,107.48,106.02,106.99,34400000,106.99 +1978-09-11,106.79,108.05,106.42,106.98,39670000,106.98 +1978-09-08,105.50,107.19,105.50,106.79,42170000,106.79 +1978-09-07,105.38,106.49,104.76,105.42,40310000,105.42 +1978-09-06,104.51,106.19,104.51,105.38,42600000,105.38 +1978-09-05,103.68,104.83,103.31,104.49,32170000,104.49 +1978-09-01,103.29,104.27,102.73,103.68,35070000,103.68 +1978-08-31,103.50,104.05,102.63,103.29,33850000,103.29 +1978-08-30,103.39,104.26,102.70,103.50,37750000,103.50 +1978-08-29,103.96,104.34,102.92,103.39,33780000,103.39 +1978-08-28,104.90,105.14,103.61,103.96,31760000,103.96 +1978-08-25,105.08,105.68,104.24,104.90,36190000,104.90 +1978-08-24,104.91,105.86,104.29,105.08,38500000,105.08 +1978-08-23,104.31,105.68,104.12,104.91,39630000,104.91 +1978-08-22,103.89,104.79,103.14,104.31,29620000,104.31 +1978-08-21,104.73,105.20,103.44,103.89,29440000,103.89 +1978-08-18,105.08,105.98,104.23,104.73,34650000,104.73 +1978-08-17,104.65,106.27,104.34,105.08,45270000,105.08 +1978-08-16,103.85,105.15,103.41,104.65,36120000,104.65 +1978-08-15,103.97,104.38,102.86,103.85,29760000,103.85 +1978-08-14,103.96,104.98,103.40,103.97,32320000,103.97 +1978-08-11,103.66,104.67,102.85,103.96,33550000,103.96 +1978-08-10,104.50,105.11,103.10,103.66,39760000,103.66 +1978-08-09,104.01,105.72,103.70,104.50,48800000,104.50 +1978-08-08,103.55,104.35,102.60,104.01,34290000,104.01 +1978-08-07,103.92,104.84,103.03,103.55,33350000,103.55 +1978-08-04,103.51,104.67,102.75,103.92,37910000,103.92 +1978-08-03,102.92,105.41,102.82,103.51,66370000,103.51 +1978-08-02,100.66,103.21,100.18,102.92,47470000,102.92 +1978-08-01,100.68,101.46,99.95,100.66,34810000,100.66 +1978-07-31,100.00,101.18,99.37,100.68,33990000,100.68 +1978-07-28,99.54,100.51,98.90,100.00,33390000,100.00 +1978-07-27,99.08,100.17,98.60,99.54,33970000,99.54 +1978-07-26,99.08,99.08,99.08,99.08,36830000,99.08 +1978-07-25,97.72,98.73,97.20,98.44,25400000,98.44 +1978-07-24,97.75,98.13,96.72,97.72,23280000,97.72 +1978-07-21,98.03,98.57,97.02,97.75,26060000,97.75 +1978-07-20,98.12,99.18,97.49,98.03,33350000,98.03 +1978-07-19,96.87,98.41,96.71,98.12,30850000,98.12 +1978-07-18,97.78,97.98,96.52,96.87,22860000,96.87 +1978-07-17,97.58,98.84,97.24,97.78,29180000,97.78 +1978-07-14,96.25,97.88,95.89,97.58,28370000,97.58 +1978-07-13,96.24,96.66,95.42,96.25,23620000,96.25 +1978-07-12,95.93,96.83,95.50,96.24,26640000,96.24 +1978-07-11,95.27,96.49,94.92,95.93,27470000,95.93 +1978-07-10,94.89,95.67,94.28,95.27,22470000,95.27 +1978-07-07,94.32,95.32,94.02,94.89,23480000,94.89 +1978-07-06,94.27,94.83,93.59,94.32,24990000,94.32 +1978-07-05,95.09,95.20,93.78,94.27,23730000,94.27 +1978-07-03,95.53,95.65,94.62,95.09,11560000,95.09 +1978-06-30,95.57,95.96,94.87,95.53,18100000,95.53 +1978-06-29,95.40,96.26,95.00,95.57,21660000,95.57 +1978-06-28,94.98,95.79,94.44,95.40,23260000,95.40 +1978-06-27,94.60,95.48,93.99,94.98,29280000,94.98 +1978-06-26,95.85,96.06,94.31,94.60,29250000,94.60 +1978-06-23,96.24,96.98,95.49,95.85,28530000,95.85 +1978-06-22,96.01,96.76,95.52,96.24,27160000,96.24 +1978-06-21,96.51,96.74,95.42,96.01,29100000,96.01 +1978-06-20,97.49,97.78,96.15,96.51,27920000,96.51 +1978-06-19,97.42,97.94,96.53,97.49,25500000,97.49 +1978-06-16,98.34,98.59,97.10,97.42,27690000,97.42 +1978-06-15,99.48,99.54,97.97,98.34,29280000,98.34 +1978-06-14,99.57,100.68,98.89,99.48,37290000,99.48 +1978-06-13,99.55,99.98,98.43,99.57,30760000,99.57 +1978-06-12,99.93,100.60,99.16,99.55,24440000,99.55 +1978-06-09,100.21,100.71,99.30,99.93,32470000,99.93 +1978-06-08,100.12,101.21,99.55,100.21,39380000,100.21 +1978-06-07,100.32,100.81,99.36,100.12,33060000,100.12 +1978-06-06,99.95,101.84,99.90,100.32,51970000,100.32 +1978-06-05,98.14,100.27,97.97,99.95,39580000,99.95 +1978-06-02,97.35,98.52,97.01,98.14,31860000,98.14 +1978-06-01,97.24,97.95,96.63,97.35,28750000,97.35 +1978-05-31,96.86,97.97,96.50,97.24,29070000,97.24 +1978-05-30,96.58,97.23,95.95,96.86,21040000,96.86 +1978-05-26,96.80,97.14,96.01,96.58,21410000,96.58 +1978-05-25,97.08,97.80,96.30,96.80,28410000,96.80 +1978-05-24,97.74,97.74,96.27,97.08,31450000,97.08 +1978-05-23,99.09,99.17,97.53,98.05,33230000,98.05 +1978-05-22,98.12,99.43,97.65,99.09,28680000,99.09 +1978-05-19,98.62,99.06,97.42,98.12,34360000,98.12 +1978-05-18,99.60,100.04,98.19,98.62,42270000,98.62 +1978-05-17,99.35,100.32,98.63,99.60,45490000,99.60 +1978-05-16,98.76,100.16,98.61,99.35,48170000,99.35 +1978-05-15,98.07,99.11,97.40,98.76,33890000,98.76 +1978-05-12,97.20,98.89,97.14,98.07,46600000,98.07 +1978-05-11,95.92,97.47,95.60,97.20,36630000,97.20 +1978-05-10,95.90,96.69,95.35,95.92,33330000,95.92 +1978-05-09,96.19,96.68,95.33,95.90,30860000,95.90 +1978-05-08,96.53,97.50,95.82,96.19,34680000,96.19 +1978-05-05,95.93,97.44,95.56,96.53,42680000,96.53 +1978-05-04,96.26,96.43,94.57,95.93,37520000,95.93 +1978-05-03,97.25,97.61,95.84,96.26,37560000,96.26 +1978-05-02,97.67,98.11,96.44,97.25,41400000,97.25 +1978-05-01,96.83,98.30,96.41,97.67,37020000,97.67 +1978-04-28,95.86,97.10,95.24,96.83,32850000,96.83 +1978-04-27,96.82,96.93,95.30,95.86,35470000,95.86 +1978-04-26,96.64,97.75,95.96,96.82,44430000,96.82 +1978-04-25,96.05,97.91,96.05,96.64,55800000,96.64 +1978-04-24,94.34,96.00,94.08,95.77,34510000,95.77 +1978-04-21,94.54,95.09,93.71,94.34,31540000,94.34 +1978-04-20,93.97,95.71,93.97,94.54,43230000,94.54 +1978-04-19,93.43,94.48,92.75,93.86,35060000,93.86 +1978-04-18,94.45,94.72,92.87,93.43,38950000,93.43 +1978-04-17,93.60,95.89,93.60,94.45,63510000,94.45 +1978-04-14,91.40,93.31,91.40,92.92,52280000,92.92 +1978-04-13,90.11,91.27,89.82,90.98,31580000,90.98 +1978-04-12,90.25,90.78,89.65,90.11,26210000,90.11 +1978-04-11,90.49,90.79,89.77,90.25,24300000,90.25 +1978-04-10,90.17,90.88,89.73,90.49,25740000,90.49 +1978-04-07,89.79,90.59,89.39,90.17,25160000,90.17 +1978-04-06,89.64,90.46,89.31,89.79,27360000,89.79 +1978-04-05,88.86,89.91,88.62,89.64,27260000,89.64 +1978-04-04,88.46,89.18,88.16,88.86,20130000,88.86 +1978-04-03,89.20,89.20,88.07,88.46,20230000,88.46 +1978-03-31,89.41,89.64,88.68,89.21,20130000,89.21 +1978-03-30,89.64,89.89,88.97,89.41,20460000,89.41 +1978-03-29,89.50,90.17,89.14,89.64,25450000,89.64 +1978-03-28,88.87,89.76,88.47,89.50,21600000,89.50 +1978-03-27,89.36,89.50,88.51,88.87,18870000,88.87 +1978-03-23,89.47,89.90,88.83,89.36,21290000,89.36 +1978-03-22,89.79,90.07,88.99,89.47,21950000,89.47 +1978-03-21,90.82,91.06,89.50,89.79,24410000,89.79 +1978-03-20,90.20,91.35,90.10,90.82,28360000,90.82 +1978-03-17,89.51,90.52,89.17,90.20,28470000,90.20 +1978-03-16,89.12,89.77,88.58,89.51,25400000,89.51 +1978-03-15,89.35,89.73,88.52,89.12,23340000,89.12 +1978-03-14,88.95,89.62,88.21,89.35,24300000,89.35 +1978-03-13,88.88,89.77,88.48,88.95,24070000,88.95 +1978-03-10,87.89,89.25,87.82,88.88,27090000,88.88 +1978-03-09,87.84,88.49,87.34,87.89,21820000,87.89 +1978-03-08,87.36,88.08,86.97,87.84,22030000,87.84 +1978-03-07,86.90,87.63,86.55,87.36,19900000,87.36 +1978-03-06,87.45,87.52,86.48,86.90,17230000,86.90 +1978-03-03,87.32,87.98,86.83,87.45,20120000,87.45 +1978-03-02,87.19,87.81,86.69,87.32,20280000,87.32 +1978-03-01,87.04,87.63,86.45,87.19,21010000,87.19 +1978-02-28,87.72,87.76,86.58,87.04,19750000,87.04 +1978-02-27,88.49,88.97,87.49,87.72,19990000,87.72 +1978-02-24,87.66,88.87,87.66,88.49,22510000,88.49 +1978-02-23,87.56,87.92,86.83,87.64,18720000,87.64 +1978-02-22,87.59,88.15,87.19,87.56,18450000,87.56 +1978-02-21,87.96,88.19,87.09,87.59,21890000,87.59 +1978-02-17,88.08,88.70,87.55,87.96,18500000,87.96 +1978-02-16,88.77,88.77,87.64,88.08,21570000,88.08 +1978-02-15,89.04,89.40,88.30,88.83,20170000,88.83 +1978-02-14,89.86,89.89,88.70,89.04,20470000,89.04 +1978-02-13,90.08,90.30,89.38,89.86,16810000,89.86 +1978-02-10,90.30,90.69,89.56,90.08,19480000,90.08 +1978-02-09,90.83,90.96,89.84,90.30,17940000,90.30 +1978-02-08,90.33,91.32,90.09,90.83,21300000,90.83 +1978-02-07,89.50,90.53,89.38,90.33,14730000,90.33 +1978-02-06,89.62,89.85,88.95,89.50,11630000,89.50 +1978-02-03,90.13,90.32,89.19,89.62,19400000,89.62 +1978-02-02,89.93,90.91,89.54,90.13,23050000,90.13 +1978-02-01,89.25,90.24,88.82,89.93,22240000,89.93 +1978-01-31,89.34,89.92,88.61,89.25,19870000,89.25 +1978-01-30,88.58,89.67,88.26,89.34,17400000,89.34 +1978-01-27,88.58,89.10,88.02,88.58,17600000,88.58 +1978-01-26,89.39,89.79,88.31,88.58,19600000,88.58 +1978-01-25,89.25,89.94,88.83,89.39,18690000,89.39 +1978-01-24,89.24,89.80,88.67,89.25,18690000,89.25 +1978-01-23,89.89,90.08,88.81,89.24,19380000,89.24 +1978-01-20,90.09,90.27,89.41,89.89,7580000,89.89 +1978-01-19,90.56,91.04,89.74,90.09,21500000,90.09 +1978-01-18,89.88,90.86,89.59,90.56,21390000,90.56 +1978-01-17,89.43,90.31,89.05,89.88,19360000,89.88 +1978-01-16,89.69,90.11,88.88,89.43,18760000,89.43 +1978-01-13,89.82,90.47,89.26,89.69,18010000,89.69 +1978-01-12,89.74,90.60,89.25,89.82,22730000,89.82 +1978-01-11,90.17,90.70,89.23,89.74,22880000,89.74 +1978-01-10,90.64,91.29,89.72,90.17,25180000,90.17 +1978-01-09,91.48,91.48,89.97,90.64,27990000,90.64 +1978-01-06,92.66,92.66,91.05,91.62,26150000,91.62 +1978-01-05,93.52,94.53,92.51,92.74,23570000,92.74 +1978-01-04,93.82,94.10,92.57,93.52,24090000,93.52 +1978-01-03,95.10,95.15,93.49,93.82,17720000,93.82 +1977-12-30,94.94,95.67,94.44,95.10,23560000,95.10 +1977-12-29,94.75,95.43,94.10,94.94,23610000,94.94 +1977-12-28,94.69,95.20,93.99,94.75,19630000,94.75 +1977-12-27,94.69,95.21,94.09,94.69,16750000,94.69 +1977-12-23,93.80,94.99,93.75,94.69,20080000,94.69 +1977-12-22,93.05,94.37,93.05,93.80,28100000,93.80 +1977-12-21,92.50,93.58,92.20,93.05,24510000,93.05 +1977-12-20,92.69,93.00,91.76,92.50,23250000,92.50 +1977-12-19,93.40,93.71,92.42,92.69,21150000,92.69 +1977-12-16,93.55,94.04,92.93,93.40,20270000,93.40 +1977-12-15,94.03,94.42,93.23,93.55,21610000,93.55 +1977-12-14,93.56,94.26,92.94,94.03,22110000,94.03 +1977-12-13,93.63,94.04,92.90,93.56,19190000,93.56 +1977-12-12,93.65,94.29,93.18,93.63,18180000,93.63 +1977-12-09,92.96,94.11,92.77,93.65,19210000,93.65 +1977-12-08,92.78,93.76,92.51,92.96,20400000,92.96 +1977-12-07,92.83,93.39,92.15,92.78,21050000,92.78 +1977-12-06,94.09,94.09,92.44,92.83,23770000,92.83 +1977-12-05,94.67,95.01,93.91,94.27,19160000,94.27 +1977-12-02,94.69,95.25,94.08,94.67,21160000,94.67 +1977-12-01,94.83,95.45,94.23,94.69,24220000,94.69 +1977-11-30,94.55,95.17,93.78,94.83,22670000,94.83 +1977-11-29,96.04,96.09,94.28,94.55,22950000,94.55 +1977-11-28,96.69,96.98,95.67,96.04,21570000,96.04 +1977-11-25,96.49,97.11,95.86,96.69,17910000,96.69 +1977-11-23,96.09,96.94,95.60,96.49,29150000,96.49 +1977-11-22,95.25,96.52,95.05,96.09,28600000,96.09 +1977-11-21,95.33,95.77,94.59,95.25,20110000,95.25 +1977-11-18,95.16,95.88,94.70,95.33,23930000,95.33 +1977-11-17,95.45,95.88,94.59,95.16,25110000,95.16 +1977-11-16,95.93,96.47,95.06,95.45,24950000,95.45 +1977-11-15,95.32,96.47,94.73,95.93,27740000,95.93 +1977-11-14,95.98,96.38,94.91,95.32,23220000,95.32 +1977-11-11,95.10,96.49,95.10,95.98,35260000,95.98 +1977-11-10,92.98,95.10,92.69,94.71,31980000,94.71 +1977-11-09,92.46,93.27,92.01,92.98,21330000,92.98 +1977-11-08,92.29,92.97,91.82,92.46,19210000,92.46 +1977-11-07,91.58,92.70,91.32,92.29,21270000,92.29 +1977-11-04,90.76,91.97,90.72,91.58,21700000,91.58 +1977-11-03,90.71,91.18,90.01,90.76,18090000,90.76 +1977-11-02,91.35,91.59,90.29,90.71,20760000,90.71 +1977-11-01,92.19,92.19,91.00,91.35,17170000,91.35 +1977-10-31,92.61,93.03,91.85,92.34,17070000,92.34 +1977-10-28,92.34,93.13,91.88,92.61,18050000,92.61 +1977-10-27,92.10,93.15,91.54,92.34,21920000,92.34 +1977-10-26,91.00,92.46,90.44,92.10,24860000,92.10 +1977-10-25,91.63,91.71,90.20,91.00,23590000,91.00 +1977-10-24,92.32,92.62,91.36,91.63,19210000,91.63 +1977-10-21,92.67,92.99,91.80,92.32,20230000,92.32 +1977-10-20,92.38,93.12,91.60,92.67,20520000,92.67 +1977-10-19,93.46,93.71,92.07,92.38,22030000,92.38 +1977-10-18,93.47,94.19,93.01,93.46,20130000,93.46 +1977-10-17,93.56,94.03,92.87,93.47,17340000,93.47 +1977-10-14,93.46,94.19,92.88,93.56,20410000,93.56 +1977-10-13,94.04,94.32,92.89,93.46,23870000,93.46 +1977-10-12,94.82,94.82,93.40,94.04,22440000,94.04 +1977-10-11,95.75,95.97,94.73,94.93,17870000,94.93 +1977-10-10,95.97,96.15,95.32,95.75,10580000,95.75 +1977-10-07,96.05,96.51,95.48,95.97,16250000,95.97 +1977-10-06,95.68,96.45,95.30,96.05,18490000,96.05 +1977-10-05,96.03,96.36,95.20,95.68,18300000,95.68 +1977-10-04,96.74,97.27,95.73,96.03,20850000,96.03 +1977-10-03,96.53,97.11,95.86,96.74,19460000,96.74 +1977-09-30,95.85,96.85,95.66,96.53,21170000,96.53 +1977-09-29,95.31,96.28,95.09,95.85,21160000,95.85 +1977-09-28,95.24,95.91,94.73,95.31,17960000,95.31 +1977-09-27,95.38,96.01,94.76,95.24,19080000,95.24 +1977-09-26,95.04,95.68,94.44,95.38,18230000,95.38 +1977-09-23,95.09,95.69,94.60,95.04,18760000,95.04 +1977-09-22,95.10,95.61,94.51,95.09,16660000,95.09 +1977-09-21,95.89,96.52,94.83,95.10,22200000,95.10 +1977-09-20,95.85,96.29,95.23,95.89,19030000,95.89 +1977-09-19,96.48,96.59,95.46,95.85,16890000,95.85 +1977-09-16,96.80,97.30,96.05,96.48,18340000,96.48 +1977-09-15,96.55,97.31,96.15,96.80,18230000,96.80 +1977-09-14,96.09,96.88,95.66,96.55,17330000,96.55 +1977-09-13,96.03,96.56,95.48,96.09,14900000,96.09 +1977-09-12,96.37,96.64,95.37,96.03,18700000,96.03 +1977-09-09,97.10,97.10,95.97,96.37,18100000,96.37 +1977-09-08,98.01,98.43,97.01,97.28,18290000,97.28 +1977-09-07,97.71,98.38,97.33,98.01,18070000,98.01 +1977-09-06,97.45,98.13,96.93,97.71,16130000,97.71 +1977-09-02,96.83,97.76,96.51,97.45,15620000,97.45 +1977-09-01,96.77,97.54,96.35,96.83,18820000,96.83 +1977-08-31,96.38,97.00,95.59,96.77,19080000,96.77 +1977-08-30,96.92,97.55,96.04,96.38,18220000,96.38 +1977-08-29,96.06,97.25,95.93,96.92,15280000,96.92 +1977-08-26,96.15,96.42,95.04,96.06,18480000,96.06 +1977-08-25,97.18,97.18,95.81,96.15,19400000,96.15 +1977-08-24,97.62,97.99,96.77,97.23,18170000,97.23 +1977-08-23,97.79,98.52,97.18,97.62,20290000,97.62 +1977-08-22,97.51,98.29,96.84,97.79,17870000,97.79 +1977-08-19,97.68,98.29,96.78,97.51,20800000,97.51 +1977-08-18,97.74,98.69,97.21,97.68,21040000,97.68 +1977-08-17,97.73,98.40,97.12,97.74,20920000,97.74 +1977-08-16,98.18,98.60,97.35,97.73,19340000,97.73 +1977-08-15,97.88,98.56,97.14,98.18,15750000,98.18 +1977-08-12,98.16,98.51,97.31,97.88,16870000,97.88 +1977-08-11,98.92,99.45,97.90,98.16,21740000,98.16 +1977-08-10,98.05,99.06,97.67,98.92,18280000,98.92 +1977-08-09,97.99,98.63,97.48,98.05,19900000,98.05 +1977-08-08,98.76,98.86,97.68,97.99,15870000,97.99 +1977-08-05,98.74,99.44,98.31,98.76,19940000,98.76 +1977-08-04,98.37,99.19,97.79,98.74,18870000,98.74 +1977-08-03,98.50,98.86,97.53,98.37,21710000,98.37 +1977-08-02,99.12,99.27,98.14,98.50,17910000,98.50 +1977-08-01,98.85,99.84,98.46,99.12,17920000,99.12 +1977-07-29,98.79,99.21,97.71,98.85,20350000,98.85 +1977-07-28,98.64,99.36,97.78,98.79,26340000,98.79 +1977-07-27,100.27,100.29,98.31,98.64,26440000,98.64 +1977-07-26,100.85,100.92,99.72,100.27,21390000,100.27 +1977-07-25,101.67,101.85,100.46,100.85,20430000,100.85 +1977-07-22,101.59,102.28,101.02,101.67,23110000,101.67 +1977-07-21,101.73,102.19,100.85,101.59,26880000,101.59 +1977-07-20,101.79,102.57,101.14,101.73,29380000,101.73 +1977-07-19,100.95,102.17,100.68,101.79,31930000,101.79 +1977-07-18,100.18,101.40,99.94,100.95,29890000,100.95 +1977-07-15,99.59,100.68,99.28,100.18,29120000,100.18 +1977-07-13,99.45,99.99,98.83,99.59,23160000,99.59 +1977-07-12,99.55,100.01,98.81,99.45,22470000,99.45 +1977-07-11,99.79,100.16,98.90,99.55,19790000,99.55 +1977-07-08,99.93,100.62,99.37,99.79,23820000,99.79 +1977-07-07,99.58,100.30,99.12,99.93,21740000,99.93 +1977-07-06,100.09,100.41,99.20,99.58,21230000,99.58 +1977-07-05,100.10,100.72,99.62,100.09,16850000,100.09 +1977-07-01,100.48,100.76,99.63,100.10,18160000,100.10 +1977-06-30,100.11,100.88,99.68,100.48,19410000,100.48 +1977-06-29,100.14,100.49,99.30,100.11,19000000,100.11 +1977-06-28,100.98,101.36,99.87,100.14,22670000,100.14 +1977-06-27,101.19,101.63,100.47,100.98,19870000,100.98 +1977-06-24,100.62,101.65,100.41,101.19,27490000,101.19 +1977-06-23,100.46,101.10,99.88,100.62,24330000,100.62 +1977-06-22,100.74,101.07,99.90,100.46,25070000,100.46 +1977-06-21,100.42,101.41,100.16,100.74,29730000,100.74 +1977-06-20,99.97,100.76,99.56,100.42,22950000,100.42 +1977-06-17,99.85,100.47,99.34,99.97,21960000,99.97 +1977-06-16,99.61,100.33,98.91,99.85,24310000,99.85 +1977-06-15,99.86,100.31,99.12,99.61,22640000,99.61 +1977-06-14,98.76,100.12,98.76,99.86,25390000,99.86 +1977-06-13,98.46,99.21,98.06,98.74,20250000,98.74 +1977-06-10,98.14,98.86,97.68,98.46,20630000,98.46 +1977-06-09,98.20,98.62,97.51,98.14,19940000,98.14 +1977-06-08,97.73,98.75,97.49,98.20,22200000,98.20 +1977-06-07,97.23,98.01,96.60,97.73,21110000,97.73 +1977-06-06,97.69,98.26,96.89,97.23,18930000,97.23 +1977-06-03,96.74,98.12,96.55,97.69,20330000,97.69 +1977-06-02,96.93,97.53,96.23,96.74,18620000,96.74 +1977-06-01,96.12,97.27,95.89,96.93,18320000,96.93 +1977-05-31,96.27,96.75,95.52,96.12,17800000,96.12 +1977-05-27,97.01,97.26,95.92,96.27,15730000,96.27 +1977-05-26,96.77,97.47,96.20,97.01,18620000,97.01 +1977-05-25,97.67,98.14,96.50,96.77,20710000,96.77 +1977-05-24,98.15,98.25,97.00,97.67,20050000,97.67 +1977-05-23,99.35,99.35,97.88,98.15,18290000,98.15 +1977-05-20,99.88,100.12,98.91,99.45,18950000,99.45 +1977-05-19,100.30,100.74,99.49,99.88,21280000,99.88 +1977-05-18,99.77,100.93,99.58,100.30,27800000,100.30 +1977-05-17,99.47,100.11,98.76,99.77,22290000,99.77 +1977-05-16,99.03,99.98,98.79,99.47,21170000,99.47 +1977-05-13,98.73,99.52,98.37,99.03,19780000,99.03 +1977-05-12,98.78,99.25,97.91,98.73,21980000,98.73 +1977-05-11,99.47,99.77,98.40,98.78,18980000,98.78 +1977-05-10,99.18,100.09,98.82,99.47,21090000,99.47 +1977-05-09,99.49,99.78,98.66,99.18,15230000,99.18 +1977-05-06,100.11,100.20,98.95,99.49,19370000,99.49 +1977-05-05,99.96,100.79,99.28,100.11,23450000,100.11 +1977-05-04,99.43,100.56,98.90,99.96,23330000,99.96 +1977-05-03,98.93,99.96,98.72,99.43,21950000,99.43 +1977-05-02,98.44,99.26,97.97,98.93,17970000,98.93 +1977-04-29,98.20,98.87,97.58,98.44,18330000,98.44 +1977-04-28,97.96,98.77,97.47,98.20,18370000,98.20 +1977-04-27,97.11,98.47,96.90,97.96,20590000,97.96 +1977-04-26,97.15,97.94,96.53,97.11,20040000,97.11 +1977-04-25,98.32,98.32,96.54,97.15,20440000,97.15 +1977-04-22,99.67,99.67,98.08,98.44,20700000,98.44 +1977-04-21,100.40,101.20,99.35,99.75,22740000,99.75 +1977-04-20,100.07,100.98,99.49,100.40,25090000,100.40 +1977-04-19,100.54,100.81,99.58,100.07,19510000,100.07 +1977-04-18,101.04,101.36,100.09,100.54,17830000,100.54 +1977-04-15,101.00,101.63,100.35,101.04,20230000,101.04 +1977-04-14,100.42,102.07,100.42,101.00,30490000,101.00 +1977-04-13,100.15,100.72,99.02,100.16,21800000,100.16 +1977-04-12,98.97,100.58,98.97,100.15,23760000,100.15 +1977-04-11,98.35,99.37,98.08,98.88,17650000,98.88 +1977-04-07,97.91,98.65,97.48,98.35,17260000,98.35 +1977-04-06,98.01,98.61,97.45,97.91,16600000,97.91 +1977-04-05,98.23,98.60,97.43,98.01,18330000,98.01 +1977-04-04,99.21,99.50,97.98,98.23,16250000,98.23 +1977-04-01,98.42,99.57,98.38,99.21,17050000,99.21 +1977-03-31,98.54,99.14,97.80,98.42,16510000,98.42 +1977-03-30,99.69,99.99,98.18,98.54,18810000,98.54 +1977-03-29,99.00,100.12,98.95,99.69,17030000,99.69 +1977-03-28,99.06,99.54,98.35,99.00,16710000,99.00 +1977-03-25,99.70,100.05,98.71,99.06,16550000,99.06 +1977-03-24,100.20,100.60,99.26,99.70,19650000,99.70 +1977-03-23,101.00,101.42,99.88,100.20,19360000,100.20 +1977-03-22,101.31,101.58,100.35,101.00,18660000,101.00 +1977-03-21,101.86,102.13,100.92,101.31,18040000,101.31 +1977-03-18,102.08,102.61,101.39,101.86,19840000,101.86 +1977-03-17,102.17,102.58,101.28,102.08,20700000,102.08 +1977-03-16,101.98,102.70,101.52,102.17,22140000,102.17 +1977-03-15,101.42,102.61,101.34,101.98,23940000,101.98 +1977-03-14,100.65,101.75,100.24,101.42,19290000,101.42 +1977-03-11,100.67,101.37,100.14,100.65,18230000,100.65 +1977-03-10,100.10,100.96,99.49,100.67,18620000,100.67 +1977-03-09,100.87,100.89,99.63,100.10,19680000,100.10 +1977-03-08,101.25,101.85,100.48,100.87,19520000,100.87 +1977-03-07,101.20,101.77,100.64,101.25,17410000,101.25 +1977-03-04,100.88,101.67,100.52,101.20,18950000,101.20 +1977-03-03,100.39,101.28,100.01,100.88,17560000,100.88 +1977-03-02,100.66,101.24,99.97,100.39,18010000,100.39 +1977-03-01,99.82,101.03,99.65,100.66,19480000,100.66 +1977-02-28,99.48,100.06,98.91,99.82,16220000,99.82 +1977-02-25,99.60,100.02,98.82,99.48,17610000,99.48 +1977-02-24,100.19,100.42,99.18,99.60,19730000,99.60 +1977-02-23,100.49,100.95,99.78,100.19,18240000,100.19 +1977-02-22,100.49,101.22,99.94,100.49,17730000,100.49 +1977-02-18,100.92,101.13,99.95,100.49,18040000,100.49 +1977-02-17,101.50,101.76,100.43,100.92,19040000,100.92 +1977-02-16,101.04,102.22,100.68,101.50,23430000,101.50 +1977-02-15,100.74,101.67,100.35,101.04,21620000,101.04 +1977-02-14,100.22,101.06,99.51,100.74,19230000,100.74 +1977-02-11,100.82,101.18,99.74,100.22,20510000,100.22 +1977-02-10,100.73,101.51,100.16,100.82,22340000,100.82 +1977-02-09,101.60,101.88,100.12,100.73,23640000,100.73 +1977-02-08,101.89,102.65,101.16,101.60,24040000,101.60 +1977-02-07,101.88,102.43,101.25,101.89,20700000,101.89 +1977-02-04,101.85,102.71,101.30,101.88,23130000,101.88 +1977-02-03,102.36,102.57,101.28,101.85,23790000,101.85 +1977-02-02,102.54,103.32,101.89,102.36,25700000,102.36 +1977-02-01,102.03,103.06,101.57,102.54,23700000,102.54 +1977-01-31,101.93,102.44,100.91,102.03,22920000,102.03 +1977-01-28,101.79,102.61,101.08,101.93,22700000,101.93 +1977-01-27,102.34,102.81,101.27,101.79,24360000,101.79 +1977-01-26,103.13,103.48,101.84,102.34,27840000,102.34 +1977-01-25,103.25,104.08,102.42,103.13,26340000,103.13 +1977-01-24,103.32,104.06,102.50,103.25,22890000,103.25 +1977-01-21,102.97,103.91,102.35,103.32,23930000,103.32 +1977-01-20,103.85,104.45,102.50,102.97,26520000,102.97 +1977-01-19,103.32,104.38,102.83,103.85,27120000,103.85 +1977-01-18,103.73,104.29,102.71,103.32,24380000,103.32 +1977-01-17,104.01,104.37,103.04,103.73,21060000,103.73 +1977-01-14,104.20,104.71,103.37,104.01,24480000,104.01 +1977-01-13,103.40,104.60,103.21,104.20,24780000,104.20 +1977-01-12,104.12,104.18,102.75,103.40,22670000,103.40 +1977-01-11,105.20,105.60,103.76,104.12,24100000,104.12 +1977-01-10,105.01,105.75,104.46,105.20,20860000,105.20 +1977-01-07,105.02,105.59,104.30,105.01,21720000,105.01 +1977-01-06,104.76,105.86,104.40,105.02,23920000,105.02 +1977-01-05,105.70,106.07,104.33,104.76,25010000,104.76 +1977-01-04,107.00,107.31,105.40,105.70,22740000,105.70 +1977-01-03,107.46,107.97,106.42,107.00,21280000,107.00 +1976-12-31,106.88,107.82,106.55,107.46,19170000,107.46 +1976-12-30,106.34,107.41,105.97,106.88,23700000,106.88 +1976-12-29,106.77,107.17,105.83,106.34,21910000,106.34 +1976-12-28,106.06,107.36,105.90,106.77,25790000,106.77 +1976-12-27,104.84,106.31,104.58,106.06,20130000,106.06 +1976-12-23,104.71,105.49,104.09,104.84,24560000,104.84 +1976-12-22,104.22,105.59,104.03,104.71,26970000,104.71 +1976-12-21,103.65,104.66,102.99,104.22,24390000,104.22 +1976-12-20,104.26,104.63,103.21,103.65,20690000,103.65 +1976-12-17,104.80,105.60,103.89,104.26,23870000,104.26 +1976-12-16,105.14,105.53,104.07,104.80,23920000,104.80 +1976-12-15,105.07,105.89,104.33,105.14,28300000,105.14 +1976-12-14,104.63,105.44,103.80,105.07,25130000,105.07 +1976-12-13,104.70,105.33,103.94,104.63,24830000,104.63 +1976-12-10,104.51,105.36,103.90,104.70,25960000,104.70 +1976-12-09,104.08,105.27,103.71,104.51,31800000,104.51 +1976-12-08,103.49,104.40,102.94,104.08,24560000,104.08 +1976-12-07,103.56,104.40,102.96,103.49,26140000,103.49 +1976-12-06,102.76,104.15,102.53,103.56,24830000,103.56 +1976-12-03,102.12,103.31,101.75,102.76,22640000,102.76 +1976-12-02,102.49,103.30,101.70,102.12,23300000,102.12 +1976-12-01,102.10,103.03,101.62,102.49,21960000,102.49 +1976-11-30,102.44,102.72,101.46,102.10,17030000,102.10 +1976-11-29,103.15,103.46,102.07,102.44,18750000,102.44 +1976-11-26,102.41,103.51,102.13,103.15,15000000,103.15 +1976-11-24,101.96,102.85,101.41,102.41,20420000,102.41 +1976-11-23,102.59,102.90,101.50,101.96,19090000,101.96 +1976-11-22,101.92,103.15,101.63,102.59,20930000,102.59 +1976-11-19,101.89,102.77,101.17,101.92,24550000,101.92 +1976-11-18,100.61,102.22,100.49,101.89,24000000,101.89 +1976-11-17,100.04,101.32,99.64,100.61,19900000,100.61 +1976-11-16,99.90,101.12,99.44,100.04,21020000,100.04 +1976-11-15,99.24,100.16,98.53,99.90,16710000,99.90 +1976-11-12,99.64,99.95,98.51,99.24,15550000,99.24 +1976-11-11,98.81,99.89,98.35,99.64,13230000,99.64 +1976-11-10,99.32,99.98,98.18,98.81,18890000,98.81 +1976-11-09,99.60,100.21,98.38,99.32,19210000,99.32 +1976-11-08,100.62,100.62,99.10,99.60,16520000,99.60 +1976-11-05,102.41,102.70,100.48,100.82,20780000,100.82 +1976-11-04,101.92,103.16,101.40,102.41,21700000,102.41 +1976-11-03,102.49,102.49,100.73,101.92,19350000,101.92 +1976-11-01,102.90,103.78,102.19,103.10,18390000,103.10 +1976-10-29,101.61,103.10,101.15,102.90,17030000,102.90 +1976-10-28,101.76,102.50,101.12,101.61,16920000,101.61 +1976-10-27,101.06,102.12,100.61,101.76,15790000,101.76 +1976-10-26,100.07,101.50,99.91,101.06,15490000,101.06 +1976-10-25,99.96,100.60,99.21,100.07,13310000,100.07 +1976-10-22,100.77,100.93,99.24,99.96,17870000,99.96 +1976-10-21,101.74,102.32,100.49,100.77,17980000,100.77 +1976-10-20,101.45,102.23,100.81,101.74,15860000,101.74 +1976-10-19,101.47,102.04,100.42,101.45,16200000,101.45 +1976-10-18,100.88,101.99,100.62,101.47,15710000,101.47 +1976-10-15,100.85,101.50,100.02,100.88,16210000,100.88 +1976-10-14,102.12,102.14,100.28,100.85,18610000,100.85 +1976-10-13,100.81,102.44,100.54,102.12,21690000,102.12 +1976-10-12,101.64,102.19,100.38,100.81,18210000,100.81 +1976-10-11,102.48,102.48,100.98,101.64,14620000,101.64 +1976-10-08,103.54,104.00,102.24,102.56,16740000,102.56 +1976-10-07,102.97,103.90,102.16,103.54,19830000,103.54 +1976-10-06,103.23,103.72,102.05,102.97,20870000,102.97 +1976-10-05,104.03,104.25,102.51,103.23,19200000,103.23 +1976-10-04,104.17,104.62,103.42,104.03,12630000,104.03 +1976-10-01,105.24,105.75,103.60,104.17,20620000,104.17 +1976-09-30,105.37,105.84,104.57,105.24,14700000,105.24 +1976-09-29,105.92,106.45,104.83,105.37,18090000,105.37 +1976-09-28,107.27,107.54,105.61,105.92,20440000,105.92 +1976-09-27,106.80,107.70,106.35,107.27,17430000,107.27 +1976-09-24,106.92,107.36,106.03,106.80,17400000,106.80 +1976-09-23,107.46,107.96,106.40,106.92,24210000,106.92 +1976-09-22,107.83,108.72,106.92,107.46,32970000,107.46 +1976-09-21,106.32,108.13,106.09,107.83,30300000,107.83 +1976-09-20,106.27,107.20,105.74,106.32,21730000,106.32 +1976-09-17,105.34,106.81,105.14,106.27,28270000,106.27 +1976-09-16,104.25,105.59,103.84,105.34,19620000,105.34 +1976-09-15,103.94,104.70,103.28,104.25,17570000,104.25 +1976-09-14,104.29,104.50,103.31,103.94,15550000,103.94 +1976-09-13,104.65,105.29,103.88,104.29,16100000,104.29 +1976-09-10,104.40,105.03,103.79,104.65,16930000,104.65 +1976-09-09,104.94,105.12,103.91,104.40,16540000,104.40 +1976-09-08,105.03,105.73,104.34,104.94,19750000,104.94 +1976-09-07,104.30,105.31,103.93,105.03,16310000,105.03 +1976-09-03,103.92,104.63,103.36,104.30,13280000,104.30 +1976-09-02,104.06,104.84,103.47,103.92,18920000,103.92 +1976-09-01,102.91,104.30,102.60,104.06,18640000,104.06 +1976-08-31,102.07,103.38,101.94,102.91,15480000,102.91 +1976-08-30,101.48,102.51,101.22,102.07,11140000,102.07 +1976-08-27,101.32,101.90,100.55,101.48,12120000,101.48 +1976-08-26,102.03,102.59,101.01,101.32,15270000,101.32 +1976-08-25,101.27,102.41,100.43,102.03,17400000,102.03 +1976-08-24,101.96,102.65,100.98,101.27,16740000,101.27 +1976-08-23,102.37,102.49,101.04,101.96,15450000,101.96 +1976-08-20,103.31,103.31,101.96,102.37,14920000,102.37 +1976-08-19,104.56,104.74,103.01,103.39,17230000,103.39 +1976-08-18,104.80,105.41,104.12,104.56,17150000,104.56 +1976-08-17,104.43,105.25,103.98,104.80,18500000,104.80 +1976-08-16,104.25,104.99,103.74,104.43,16210000,104.43 +1976-08-13,104.22,104.79,103.61,104.25,13930000,104.25 +1976-08-12,104.06,104.64,103.38,104.22,15560000,104.22 +1976-08-11,104.41,105.24,103.73,104.06,18710000,104.06 +1976-08-10,103.49,104.71,103.21,104.41,16690000,104.41 +1976-08-09,103.79,104.02,103.01,103.49,11700000,103.49 +1976-08-06,103.85,104.25,103.10,103.79,13930000,103.79 +1976-08-05,104.43,104.76,103.48,103.85,15530000,103.85 +1976-08-04,104.14,105.18,103.72,104.43,20650000,104.43 +1976-08-03,103.19,104.49,102.79,104.14,18500000,104.14 +1976-08-02,103.44,103.98,102.64,103.19,13870000,103.19 +1976-07-30,102.93,103.88,102.47,103.44,14830000,103.44 +1976-07-29,103.05,103.59,102.36,102.93,13330000,102.93 +1976-07-28,103.48,103.58,102.31,103.05,16000000,103.05 +1976-07-27,104.07,104.51,103.13,103.48,15580000,103.48 +1976-07-26,104.06,104.69,103.46,104.07,13530000,104.07 +1976-07-23,103.93,104.71,103.49,104.06,15870000,104.06 +1976-07-22,103.82,104.42,103.15,103.93,15600000,103.93 +1976-07-21,103.72,104.56,103.21,103.82,18350000,103.82 +1976-07-20,104.29,104.57,103.05,103.72,18810000,103.72 +1976-07-19,104.68,105.32,103.84,104.29,18200000,104.29 +1976-07-16,105.20,105.27,103.87,104.68,20450000,104.68 +1976-07-15,105.95,106.25,104.76,105.20,20400000,105.20 +1976-07-14,105.67,106.61,105.05,105.95,23840000,105.95 +1976-07-13,105.90,106.78,105.15,105.67,27550000,105.67 +1976-07-12,104.98,106.30,104.74,105.90,23750000,105.90 +1976-07-09,103.98,105.41,103.80,104.98,23500000,104.98 +1976-07-08,103.83,104.75,103.44,103.98,21710000,103.98 +1976-07-07,103.54,104.23,102.80,103.83,18470000,103.83 +1976-07-06,104.11,104.67,103.19,103.54,16130000,103.54 +1976-07-02,103.59,104.53,103.13,104.11,16730000,104.11 +1976-07-01,104.28,104.98,103.14,103.59,21130000,103.59 +1976-06-30,103.86,105.07,103.52,104.28,23830000,104.28 +1976-06-29,103.43,104.33,102.95,103.86,19620000,103.86 +1976-06-28,103.72,104.35,102.97,103.43,17490000,103.43 +1976-06-25,103.79,104.54,103.17,103.72,17830000,103.72 +1976-06-24,103.25,104.37,102.90,103.79,19850000,103.79 +1976-06-23,103.47,103.90,102.40,103.25,17530000,103.25 +1976-06-22,104.28,104.82,103.16,103.47,21150000,103.47 +1976-06-21,103.76,104.73,103.18,104.28,18930000,104.28 +1976-06-18,103.61,104.80,103.06,103.76,25720000,103.76 +1976-06-17,102.01,104.12,101.97,103.61,27810000,103.61 +1976-06-16,101.46,102.65,100.96,102.01,21620000,102.01 +1976-06-15,101.95,102.39,100.84,101.46,18440000,101.46 +1976-06-14,101.00,102.51,101.00,101.95,21250000,101.95 +1976-06-11,99.56,101.22,99.38,100.92,19470000,100.92 +1976-06-10,98.74,99.98,98.55,99.56,16100000,99.56 +1976-06-09,98.80,99.49,98.23,98.74,14560000,98.74 +1976-06-08,98.63,99.71,98.32,98.80,16660000,98.80 +1976-06-07,99.15,99.39,97.97,98.63,14510000,98.63 +1976-06-04,100.13,100.27,98.79,99.15,15960000,99.15 +1976-06-03,100.22,101.10,99.68,100.13,18900000,100.13 +1976-06-02,99.85,100.69,99.26,100.22,16120000,100.22 +1976-06-01,100.18,100.74,99.36,99.85,13880000,99.85 +1976-05-28,99.38,100.64,99.00,100.18,16860000,100.18 +1976-05-27,99.34,99.77,98.26,99.38,15310000,99.38 +1976-05-26,99.49,100.14,98.65,99.34,16750000,99.34 +1976-05-25,99.44,100.02,98.48,99.49,18770000,99.49 +1976-05-24,101.07,101.07,99.11,99.44,16560000,99.44 +1976-05-21,102.00,102.34,100.81,101.26,18730000,101.26 +1976-05-20,101.18,102.53,100.69,102.00,22560000,102.00 +1976-05-19,101.26,102.01,100.55,101.18,18450000,101.18 +1976-05-18,101.09,102.00,100.72,101.26,17410000,101.26 +1976-05-17,101.34,101.71,100.41,101.09,14720000,101.09 +1976-05-14,102.16,102.23,100.82,101.34,16800000,101.34 +1976-05-13,102.77,103.03,101.73,102.16,16730000,102.16 +1976-05-12,102.95,103.55,102.14,102.77,18510000,102.77 +1976-05-11,103.10,103.99,102.39,102.95,23590000,102.95 +1976-05-10,101.88,103.51,101.76,103.10,22760000,103.10 +1976-05-07,101.16,102.27,100.77,101.88,17810000,101.88 +1976-05-06,100.88,101.70,100.31,101.16,16200000,101.16 +1976-05-05,101.46,101.92,100.45,100.88,14970000,100.88 +1976-05-04,100.92,101.93,100.29,101.46,17240000,101.46 +1976-05-03,101.64,101.73,100.14,100.92,15180000,100.92 +1976-04-30,102.13,102.65,101.16,101.64,14530000,101.64 +1976-04-29,102.13,102.97,101.45,102.13,17740000,102.13 +1976-04-28,101.86,102.46,100.91,102.13,15790000,102.13 +1976-04-27,102.43,103.18,101.51,101.86,17760000,101.86 +1976-04-26,102.29,102.80,101.36,102.43,15520000,102.43 +1976-04-23,102.98,103.21,101.70,102.29,17000000,102.29 +1976-04-22,103.32,104.04,102.52,102.98,20220000,102.98 +1976-04-21,102.87,104.03,102.30,103.32,26600000,103.32 +1976-04-20,101.44,103.32,101.42,102.87,23500000,102.87 +1976-04-19,100.67,101.83,100.32,101.44,16500000,101.44 +1976-04-15,100.31,101.18,99.73,100.67,15100000,100.67 +1976-04-14,101.05,101.77,99.98,100.31,18440000,100.31 +1976-04-13,100.20,101.39,99.64,101.05,15990000,101.05 +1976-04-12,100.35,101.30,99.57,100.20,16030000,100.20 +1976-04-09,101.28,101.74,99.87,100.35,19050000,100.35 +1976-04-08,102.21,102.38,100.53,101.28,20860000,101.28 +1976-04-07,103.36,103.85,101.92,102.21,20190000,102.21 +1976-04-06,103.51,104.63,102.93,103.36,24170000,103.36 +1976-04-05,102.32,104.13,102.32,103.51,21940000,103.51 +1976-04-02,102.24,102.76,101.23,102.25,17420000,102.25 +1976-04-01,102.77,103.24,101.50,102.24,17910000,102.24 +1976-03-31,102.01,103.08,101.60,102.77,17520000,102.77 +1976-03-30,102.41,103.36,101.25,102.01,17930000,102.01 +1976-03-29,102.85,103.36,101.99,102.41,16100000,102.41 +1976-03-26,102.85,103.65,102.20,102.85,18510000,102.85 +1976-03-25,103.42,104.00,102.19,102.85,22510000,102.85 +1976-03-24,102.51,104.39,102.51,103.42,32610000,103.42 +1976-03-23,100.71,102.54,100.32,102.24,22450000,102.24 +1976-03-22,100.58,101.53,100.14,100.71,19410000,100.71 +1976-03-19,100.45,101.23,99.70,100.58,18090000,100.58 +1976-03-18,100.86,101.37,99.73,100.45,20330000,100.45 +1976-03-17,100.92,102.01,100.28,100.86,26190000,100.86 +1976-03-16,99.80,101.25,99.38,100.92,22780000,100.92 +1976-03-15,100.86,100.90,99.24,99.80,19570000,99.80 +1976-03-12,101.89,102.46,100.49,100.86,26020000,100.86 +1976-03-11,100.94,102.41,100.62,101.89,27300000,101.89 +1976-03-10,100.58,101.80,99.98,100.94,24900000,100.94 +1976-03-09,100.19,101.90,99.95,100.58,31770000,100.58 +1976-03-08,99.11,100.71,98.93,100.19,25060000,100.19 +1976-03-05,98.92,99.88,98.23,99.11,23030000,99.11 +1976-03-04,99.98,100.40,98.49,98.92,24410000,98.92 +1976-03-03,100.58,100.97,99.23,99.98,25450000,99.98 +1976-03-02,100.02,101.26,99.61,100.58,25590000,100.58 +1976-03-01,99.71,100.64,98.67,100.02,22070000,100.02 +1976-02-27,100.11,100.53,98.60,99.71,26940000,99.71 +1976-02-26,101.69,102.36,99.74,100.11,34320000,100.11 +1976-02-25,102.03,102.71,100.69,101.69,34680000,101.69 +1976-02-24,101.61,102.92,101.03,102.03,34380000,102.03 +1976-02-23,102.10,102.54,100.69,101.61,31460000,101.61 +1976-02-20,101.41,103.07,101.18,102.10,44510000,102.10 +1976-02-19,99.94,101.92,99.94,101.41,39210000,101.41 +1976-02-18,99.05,100.43,98.50,99.85,29900000,99.85 +1976-02-17,99.67,100.25,98.56,99.05,25460000,99.05 +1976-02-13,100.25,100.66,99.01,99.67,23870000,99.67 +1976-02-12,100.77,101.55,99.82,100.25,28610000,100.25 +1976-02-11,100.47,101.80,100.10,100.77,32300000,100.77 +1976-02-10,99.62,100.96,99.11,100.47,27660000,100.47 +1976-02-09,99.46,100.66,98.77,99.62,25340000,99.62 +1976-02-06,100.39,100.53,98.64,99.46,27360000,99.46 +1976-02-05,101.91,102.30,100.06,100.39,33780000,100.39 +1976-02-04,101.18,102.57,100.70,101.91,38270000,101.91 +1976-02-03,100.87,101.97,99.58,101.18,34080000,101.18 +1976-02-02,100.86,101.39,99.74,100.87,24000000,100.87 +1976-01-30,100.11,101.99,99.94,100.86,38510000,100.86 +1976-01-29,98.53,100.54,98.32,100.11,29800000,100.11 +1976-01-28,99.07,99.64,97.66,98.53,27370000,98.53 +1976-01-27,99.68,100.52,98.28,99.07,32070000,99.07 +1976-01-26,99.21,100.75,98.92,99.68,34470000,99.68 +1976-01-23,98.04,99.88,97.68,99.21,33640000,99.21 +1976-01-22,98.24,98.79,97.07,98.04,27420000,98.04 +1976-01-21,98.86,99.24,97.12,98.24,34470000,98.24 +1976-01-20,98.32,99.44,97.43,98.86,36690000,98.86 +1976-01-19,97.00,98.84,96.36,98.32,29450000,98.32 +1976-01-16,96.61,97.73,95.84,97.00,25940000,97.00 +1976-01-15,97.13,98.34,96.15,96.61,38450000,96.61 +1976-01-14,95.57,97.47,94.91,97.13,30340000,97.13 +1976-01-13,96.33,97.39,95.11,95.57,34530000,95.57 +1976-01-12,94.95,96.76,94.38,96.33,30440000,96.33 +1976-01-09,94.58,95.71,94.05,94.95,26510000,94.95 +1976-01-08,93.95,95.47,93.41,94.58,29030000,94.58 +1976-01-07,93.53,95.15,92.91,93.95,33170000,93.95 +1976-01-06,92.58,94.18,92.37,93.53,31270000,93.53 +1976-01-05,90.90,92.84,90.85,92.58,21960000,92.58 +1976-01-02,90.19,91.18,89.81,90.90,10300000,90.90 +1975-12-31,89.77,90.75,89.17,90.19,16970000,90.19 +1975-12-30,90.13,90.55,89.20,89.77,16040000,89.77 +1975-12-29,90.25,91.09,89.63,90.13,17070000,90.13 +1975-12-26,89.46,90.45,89.25,90.25,10020000,90.25 +1975-12-24,88.73,89.84,88.73,89.46,11150000,89.46 +1975-12-23,88.14,89.23,87.64,88.73,17750000,88.73 +1975-12-22,88.80,89.13,87.74,88.14,15340000,88.14 +1975-12-19,89.43,89.81,88.39,88.80,17720000,88.80 +1975-12-18,89.15,90.09,88.62,89.43,18040000,89.43 +1975-12-17,88.93,89.80,88.46,89.15,16560000,89.15 +1975-12-16,88.09,89.49,87.78,88.93,18350000,88.93 +1975-12-15,87.83,88.64,87.32,88.09,13960000,88.09 +1975-12-12,87.80,88.22,87.05,87.83,13100000,87.83 +1975-12-11,88.08,88.79,87.41,87.80,15300000,87.80 +1975-12-10,87.30,88.39,86.91,88.08,15680000,88.08 +1975-12-09,87.07,87.80,86.16,87.30,16040000,87.30 +1975-12-08,86.82,87.75,86.15,87.07,14150000,87.07 +1975-12-05,87.84,88.38,86.54,86.82,14050000,86.82 +1975-12-04,87.60,88.39,86.68,87.84,16380000,87.84 +1975-12-03,88.83,88.83,87.08,87.60,21320000,87.60 +1975-12-02,90.67,90.81,89.08,89.33,17930000,89.33 +1975-12-01,91.24,91.90,90.33,90.67,16050000,90.67 +1975-11-28,90.94,91.74,90.44,91.24,12870000,91.24 +1975-11-26,90.71,91.58,90.17,90.94,18780000,90.94 +1975-11-25,89.70,91.10,89.66,90.71,17490000,90.71 +1975-11-24,89.53,90.17,88.65,89.70,13930000,89.70 +1975-11-21,89.64,90.23,88.79,89.53,14110000,89.53 +1975-11-20,89.98,90.68,89.09,89.64,16460000,89.64 +1975-11-19,91.00,91.28,89.47,89.98,16820000,89.98 +1975-11-18,91.46,92.30,90.60,91.00,20760000,91.00 +1975-11-17,90.97,91.99,90.50,91.46,17660000,91.46 +1975-11-14,91.04,91.59,90.19,90.97,16460000,90.97 +1975-11-13,91.19,92.33,90.56,91.04,25070000,91.04 +1975-11-12,89.87,91.63,89.80,91.19,23960000,91.19 +1975-11-11,89.34,90.47,89.04,89.87,14640000,89.87 +1975-11-10,89.33,89.98,88.35,89.34,14910000,89.34 +1975-11-07,89.55,90.18,88.67,89.33,15930000,89.33 +1975-11-06,89.15,90.15,88.16,89.55,18600000,89.55 +1975-11-05,88.51,90.08,88.32,89.15,17390000,89.15 +1975-11-04,88.09,89.03,87.63,88.51,11570000,88.51 +1975-11-03,89.04,89.21,87.78,88.09,11400000,88.09 +1975-10-31,89.31,89.80,88.35,89.04,12910000,89.04 +1975-10-30,89.39,90.20,88.70,89.31,15080000,89.31 +1975-10-29,90.51,90.61,88.89,89.39,16110000,89.39 +1975-10-28,89.73,91.01,89.40,90.51,17060000,90.51 +1975-10-27,89.83,90.40,88.85,89.73,13100000,89.73 +1975-10-24,91.24,91.52,89.46,89.83,18120000,89.83 +1975-10-23,90.71,91.75,90.09,91.24,17900000,91.24 +1975-10-22,90.56,91.38,89.77,90.71,16060000,90.71 +1975-10-21,89.82,91.43,89.79,90.56,20800000,90.56 +1975-10-20,88.86,90.14,88.43,89.82,13250000,89.82 +1975-10-17,89.37,89.87,88.08,88.86,15650000,88.86 +1975-10-16,89.23,90.73,88.90,89.37,18910000,89.37 +1975-10-15,89.28,90.07,88.50,89.23,14440000,89.23 +1975-10-14,89.46,90.80,88.81,89.28,19960000,89.28 +1975-10-13,88.21,89.67,87.73,89.46,12020000,89.46 +1975-10-10,88.37,89.17,87.44,88.21,14880000,88.21 +1975-10-09,87.94,89.42,87.60,88.37,17770000,88.37 +1975-10-08,86.77,88.46,86.34,87.94,17800000,87.94 +1975-10-07,86.88,87.32,85.56,86.77,13530000,86.77 +1975-10-06,85.98,87.64,85.98,86.88,15470000,86.88 +1975-10-03,83.88,86.21,83.88,85.95,16360000,85.95 +1975-10-02,82.93,84.33,82.82,83.82,14290000,83.82 +1975-10-01,83.87,85.45,82.57,82.93,14070000,82.93 +1975-09-30,85.01,85.01,83.44,83.87,12520000,83.87 +1975-09-29,86.19,86.38,84.74,85.03,10580000,85.03 +1975-09-26,85.64,86.86,85.13,86.19,12570000,86.19 +1975-09-25,85.74,86.41,84.79,85.64,12890000,85.64 +1975-09-24,85.03,86.70,85.03,85.74,16060000,85.74 +1975-09-23,85.07,85.51,83.80,84.94,12800000,84.94 +1975-09-22,85.88,86.70,84.70,85.07,14750000,85.07 +1975-09-19,84.26,86.39,84.26,85.88,20830000,85.88 +1975-09-18,82.37,84.34,82.23,84.06,14560000,84.06 +1975-09-17,82.09,82.93,81.57,82.37,12190000,82.37 +1975-09-16,82.88,83.43,81.79,82.09,13090000,82.09 +1975-09-15,83.30,83.49,82.29,82.88,8670000,82.88 +1975-09-12,83.45,84.47,82.84,83.30,12230000,83.30 +1975-09-11,83.79,84.30,82.88,83.45,11100000,83.45 +1975-09-10,84.59,84.59,83.00,83.79,14780000,83.79 +1975-09-09,85.89,86.73,84.37,84.60,15790000,84.60 +1975-09-08,85.62,86.31,84.89,85.89,11500000,85.89 +1975-09-05,86.20,86.49,85.19,85.62,11680000,85.62 +1975-09-04,86.03,86.91,85.29,86.20,12810000,86.20 +1975-09-03,85.48,86.38,84.62,86.03,12260000,86.03 +1975-09-02,86.88,87.42,85.21,85.48,11460000,85.48 +1975-08-29,86.40,87.73,86.10,86.88,15480000,86.88 +1975-08-28,84.68,86.64,84.68,86.40,14530000,86.40 +1975-08-27,83.96,84.79,83.35,84.43,11100000,84.43 +1975-08-26,85.06,85.40,83.65,83.96,11350000,83.96 +1975-08-25,84.28,85.58,84.06,85.06,11250000,85.06 +1975-08-22,83.07,84.61,82.79,84.28,13050000,84.28 +1975-08-21,83.22,84.15,82.21,83.07,16610000,83.07 +1975-08-20,84.78,84.78,82.76,83.22,18630000,83.22 +1975-08-19,86.20,86.47,84.66,84.95,14990000,84.95 +1975-08-18,86.36,87.21,85.76,86.20,10810000,86.20 +1975-08-15,85.60,86.76,85.33,86.36,10610000,86.36 +1975-08-14,85.97,86.34,85.02,85.60,12460000,85.60 +1975-08-13,87.12,87.41,85.61,85.97,12000000,85.97 +1975-08-12,86.55,88.17,86.49,87.12,14510000,87.12 +1975-08-11,86.02,86.89,85.34,86.55,12350000,86.55 +1975-08-08,86.30,87.00,85.52,86.02,11660000,86.02 +1975-08-07,86.25,87.24,85.69,86.30,12390000,86.30 +1975-08-06,86.23,87.04,85.34,86.25,16280000,86.25 +1975-08-05,87.15,87.81,85.89,86.23,15470000,86.23 +1975-08-04,87.99,88.17,86.68,87.15,12620000,87.15 +1975-08-01,88.75,89.04,87.46,87.99,13320000,87.99 +1975-07-31,88.83,90.07,88.31,88.75,14540000,88.75 +1975-07-30,88.19,89.49,87.68,88.83,16150000,88.83 +1975-07-29,88.69,89.91,87.71,88.19,19000000,88.19 +1975-07-28,89.29,89.68,88.02,88.69,14850000,88.69 +1975-07-25,90.07,90.72,88.72,89.29,15110000,89.29 +1975-07-24,90.18,90.95,88.90,90.07,20550000,90.07 +1975-07-23,91.45,92.15,89.83,90.18,20150000,90.18 +1975-07-22,92.44,92.49,90.63,91.45,20660000,91.45 +1975-07-21,93.20,93.93,92.03,92.44,16690000,92.44 +1975-07-18,93.63,93.96,92.39,93.20,16870000,93.20 +1975-07-17,94.61,95.03,92.99,93.63,21420000,93.63 +1975-07-16,95.61,96.37,94.20,94.61,25250000,94.61 +1975-07-15,95.19,96.58,94.71,95.61,28340000,95.61 +1975-07-14,94.66,95.76,94.04,95.19,21900000,95.19 +1975-07-11,94.81,95.69,93.83,94.66,22210000,94.66 +1975-07-10,94.80,96.19,94.25,94.81,28880000,94.81 +1975-07-09,93.39,95.22,93.38,94.80,26350000,94.80 +1975-07-08,93.54,94.03,92.51,93.39,18990000,93.39 +1975-07-07,94.36,94.82,93.16,93.54,15850000,93.54 +1975-07-03,94.18,95.04,93.49,94.36,19000000,94.36 +1975-07-02,94.85,94.91,93.37,94.18,18530000,94.18 +1975-07-01,95.19,95.73,94.13,94.85,20390000,94.85 +1975-06-30,94.81,95.85,94.30,95.19,19430000,95.19 +1975-06-27,94.81,95.66,94.10,94.81,18820000,94.81 +1975-06-26,94.62,95.72,93.88,94.81,24560000,94.81 +1975-06-25,94.19,95.29,93.53,94.62,21610000,94.62 +1975-06-24,93.62,95.23,93.31,94.19,26620000,94.19 +1975-06-23,92.61,93.98,91.81,93.62,20720000,93.62 +1975-06-20,92.02,93.75,91.83,92.61,26260000,92.61 +1975-06-19,90.39,92.37,90.12,92.02,21450000,92.02 +1975-06-18,90.58,91.07,89.60,90.39,15590000,90.39 +1975-06-17,91.46,92.22,90.17,90.58,19440000,90.58 +1975-06-16,90.52,91.85,90.12,91.46,16660000,91.46 +1975-06-13,90.08,91.06,89.30,90.52,16300000,90.52 +1975-06-12,90.55,91.36,89.64,90.08,15970000,90.08 +1975-06-11,90.44,91.67,90.00,90.55,18230000,90.55 +1975-06-10,91.21,91.21,89.46,90.44,21130000,90.44 +1975-06-09,92.48,92.87,90.91,91.21,20670000,91.21 +1975-06-06,92.69,93.60,91.75,92.48,22230000,92.48 +1975-06-05,92.60,93.16,91.41,92.69,21610000,92.69 +1975-06-04,92.89,93.61,91.82,92.60,24900000,92.60 +1975-06-03,92.58,93.76,91.88,92.89,26560000,92.89 +1975-06-02,91.32,93.41,91.32,92.58,28240000,92.58 +1975-05-30,89.87,91.62,89.87,91.15,22670000,91.15 +1975-05-29,89.71,90.59,88.83,89.68,18570000,89.68 +1975-05-28,90.34,91.14,89.07,89.71,21850000,89.71 +1975-05-27,90.58,91.29,89.60,90.34,17050000,90.34 +1975-05-23,89.39,91.02,89.30,90.58,17870000,90.58 +1975-05-22,89.06,90.30,88.35,89.39,17610000,89.39 +1975-05-21,90.07,90.25,88.47,89.06,17640000,89.06 +1975-05-20,90.53,91.45,89.58,90.07,18310000,90.07 +1975-05-19,90.43,91.07,88.98,90.53,17870000,90.53 +1975-05-16,91.41,91.59,89.74,90.43,16630000,90.43 +1975-05-15,92.27,93.51,90.94,91.41,27690000,91.41 +1975-05-14,91.58,93.23,91.17,92.27,29050000,92.27 +1975-05-13,90.61,92.26,89.99,91.58,24950000,91.58 +1975-05-12,90.53,91.67,89.91,90.61,22410000,90.61 +1975-05-09,89.56,91.24,89.33,90.53,28440000,90.53 +1975-05-08,89.08,90.13,88.23,89.56,22980000,89.56 +1975-05-07,88.64,89.75,87.60,89.08,22250000,89.08 +1975-05-06,90.08,90.86,88.15,88.64,25410000,88.64 +1975-05-05,89.22,90.82,88.26,90.08,22370000,90.08 +1975-05-02,88.10,89.98,87.91,89.22,25210000,89.22 +1975-05-01,87.30,89.10,86.94,88.10,20660000,88.10 +1975-04-30,85.64,87.61,85.00,87.30,18060000,87.30 +1975-04-29,86.23,86.79,85.04,85.64,17740000,85.64 +1975-04-28,86.62,87.33,85.54,86.23,17850000,86.23 +1975-04-25,86.04,87.50,85.62,86.62,20260000,86.62 +1975-04-24,86.12,86.92,85.00,86.04,19050000,86.04 +1975-04-23,87.09,87.42,85.65,86.12,20040000,86.12 +1975-04-22,87.23,88.64,86.58,87.09,26120000,87.09 +1975-04-21,86.30,87.99,85.92,87.23,23960000,87.23 +1975-04-18,87.25,87.59,85.53,86.30,26610000,86.30 +1975-04-17,86.60,88.79,86.43,87.25,32650000,87.25 +1975-04-16,86.30,87.10,84.93,86.60,22970000,86.60 +1975-04-15,85.60,87.24,85.03,86.30,29620000,86.30 +1975-04-14,84.18,86.12,83.98,85.60,26800000,85.60 +1975-04-11,83.77,84.68,82.93,84.18,20160000,84.18 +1975-04-10,82.84,84.70,82.68,83.77,24990000,83.77 +1975-04-09,80.99,83.22,80.91,82.84,18120000,82.84 +1975-04-08,80.35,81.65,80.13,80.99,14320000,80.99 +1975-04-07,80.88,81.11,79.66,80.35,13860000,80.35 +1975-04-04,81.51,81.90,80.29,80.88,14170000,80.88 +1975-04-03,82.43,82.84,80.88,81.51,13920000,81.51 +1975-04-02,82.64,83.57,81.80,82.43,15600000,82.43 +1975-04-01,83.36,83.59,81.98,82.64,14480000,82.64 +1975-03-31,83.85,84.62,82.84,83.36,16270000,83.36 +1975-03-27,83.59,84.88,83.04,83.85,18300000,83.85 +1975-03-26,82.16,84.24,82.16,83.59,18580000,83.59 +1975-03-25,81.42,82.67,80.08,82.06,18500000,82.06 +1975-03-24,82.39,82.39,80.60,81.42,17810000,81.42 +1975-03-21,83.61,84.11,82.52,83.39,15940000,83.39 +1975-03-20,84.34,85.30,83.02,83.61,20960000,83.61 +1975-03-19,85.13,85.17,83.43,84.34,19030000,84.34 +1975-03-18,86.01,87.08,84.75,85.13,29180000,85.13 +1975-03-17,84.76,86.52,84.39,86.01,26780000,86.01 +1975-03-14,83.74,85.43,83.50,84.76,24840000,84.76 +1975-03-13,83.59,84.26,82.52,83.74,18620000,83.74 +1975-03-12,84.36,84.73,82.87,83.59,21560000,83.59 +1975-03-11,84.95,85.89,83.80,84.36,31280000,84.36 +1975-03-10,84.30,85.47,83.43,84.95,25890000,84.95 +1975-03-07,83.69,85.14,83.25,84.30,25930000,84.30 +1975-03-06,83.90,84.17,81.94,83.69,21780000,83.69 +1975-03-05,83.56,84.71,82.16,83.90,24120000,83.90 +1975-03-04,83.03,85.43,82.85,83.56,34140000,83.56 +1975-03-03,81.59,83.46,81.32,83.03,24100000,83.03 +1975-02-28,80.77,82.02,80.07,81.59,17560000,81.59 +1975-02-27,80.37,81.64,80.06,80.77,16430000,80.77 +1975-02-26,79.53,80.89,78.91,80.37,18790000,80.37 +1975-02-25,81.09,81.09,79.05,79.53,20910000,79.53 +1975-02-24,82.62,82.71,80.87,81.44,19150000,81.44 +1975-02-21,82.21,83.56,81.72,82.62,24440000,82.62 +1975-02-20,81.44,82.78,80.82,82.21,22260000,82.21 +1975-02-19,80.93,81.94,79.83,81.44,21930000,81.44 +1975-02-18,81.50,82.45,80.16,80.93,23990000,80.93 +1975-02-14,81.01,82.33,80.13,81.50,23290000,81.50 +1975-02-13,79.98,82.53,79.98,81.01,35160000,81.01 +1975-02-12,78.58,80.21,77.94,79.92,19790000,79.92 +1975-02-11,78.36,79.07,77.38,78.58,16470000,78.58 +1975-02-10,78.63,79.40,77.77,78.36,16120000,78.36 +1975-02-07,78.56,79.12,77.00,78.63,19060000,78.63 +1975-02-06,78.95,80.72,78.09,78.56,32020000,78.56 +1975-02-05,77.61,79.40,76.81,78.95,25830000,78.95 +1975-02-04,77.82,78.37,76.00,77.61,25040000,77.61 +1975-02-03,76.98,78.55,76.36,77.82,25400000,77.82 +1975-01-31,76.21,77.72,75.41,76.98,24640000,76.98 +1975-01-30,77.26,78.69,75.82,76.21,29740000,76.21 +1975-01-29,76.03,78.03,75.23,77.26,27410000,77.26 +1975-01-28,75.37,77.59,75.36,76.03,31760000,76.03 +1975-01-27,73.76,76.03,73.76,75.37,32130000,75.37 +1975-01-24,72.07,73.57,71.55,72.98,20670000,72.98 +1975-01-23,71.74,73.11,71.09,72.07,17960000,72.07 +1975-01-22,70.70,71.97,69.86,71.74,15330000,71.74 +1975-01-21,71.08,72.04,70.25,70.70,14780000,70.70 +1975-01-20,70.96,71.46,69.80,71.08,13450000,71.08 +1975-01-17,72.05,72.36,70.56,70.96,14260000,70.96 +1975-01-16,72.14,72.93,71.26,72.05,17110000,72.05 +1975-01-15,71.68,72.77,70.45,72.14,16580000,72.14 +1975-01-14,72.31,72.70,71.02,71.68,16610000,71.68 +1975-01-13,72.61,73.81,71.83,72.31,19780000,72.31 +1975-01-10,71.60,73.75,71.60,72.61,25890000,72.61 +1975-01-09,70.04,71.42,69.04,71.17,16340000,71.17 +1975-01-08,71.02,71.53,69.65,70.04,15600000,70.04 +1975-01-07,71.07,71.75,69.92,71.02,14890000,71.02 +1975-01-06,70.71,72.24,70.33,71.07,17550000,71.07 +1975-01-03,70.23,71.64,69.29,70.71,15270000,70.71 +1975-01-02,68.65,70.92,68.65,70.23,14800000,70.23 +1974-12-31,67.16,69.04,67.15,68.56,20970000,68.56 +1974-12-30,67.14,67.65,66.23,67.16,18520000,67.16 +1974-12-27,67.44,67.99,66.49,67.14,13060000,67.14 +1974-12-26,66.88,68.19,66.62,67.44,11810000,67.44 +1974-12-24,65.96,67.25,65.86,66.88,9540000,66.88 +1974-12-23,66.91,67.18,65.34,65.96,18040000,65.96 +1974-12-20,67.65,67.93,66.36,66.91,15840000,66.91 +1974-12-19,67.90,68.62,66.93,67.65,15900000,67.65 +1974-12-18,67.58,69.01,67.30,67.90,18050000,67.90 +1974-12-17,66.46,67.92,65.86,67.58,16880000,67.58 +1974-12-16,67.07,67.74,66.02,66.46,15370000,66.46 +1974-12-13,67.45,68.15,66.32,67.07,14000000,67.07 +1974-12-12,67.67,68.61,66.56,67.45,15390000,67.45 +1974-12-11,67.28,69.03,66.83,67.67,15700000,67.67 +1974-12-10,65.88,68.17,65.88,67.28,15690000,67.28 +1974-12-09,65.01,66.29,64.13,65.60,14660000,65.60 +1974-12-06,66.13,66.20,64.40,65.01,15500000,65.01 +1974-12-05,67.41,68.00,65.90,66.13,12890000,66.13 +1974-12-04,67.17,68.32,66.61,67.41,12580000,67.41 +1974-12-03,68.11,68.13,66.62,67.17,13620000,67.17 +1974-12-02,69.80,69.80,67.81,68.11,11140000,68.11 +1974-11-29,69.94,70.49,69.18,69.97,7400000,69.97 +1974-11-27,69.47,71.31,69.17,69.94,14810000,69.94 +1974-11-26,68.83,70.36,68.19,69.47,13600000,69.47 +1974-11-25,68.90,69.68,67.79,68.83,11300000,68.83 +1974-11-22,68.24,70.00,68.24,68.90,13020000,68.90 +1974-11-21,67.90,68.94,66.85,68.18,13820000,68.18 +1974-11-20,68.20,69.25,67.36,67.90,12430000,67.90 +1974-11-19,69.27,69.71,67.66,68.20,15720000,68.20 +1974-11-18,71.10,71.10,68.95,69.27,15230000,69.27 +1974-11-15,73.06,73.27,71.41,71.91,12480000,71.91 +1974-11-14,73.35,74.54,72.53,73.06,13540000,73.06 +1974-11-13,73.67,74.25,72.32,73.35,16040000,73.35 +1974-11-12,75.15,75.59,73.34,73.67,15040000,73.67 +1974-11-11,74.91,75.70,74.04,75.15,13220000,75.15 +1974-11-08,75.21,76.00,74.01,74.91,15890000,74.91 +1974-11-07,74.75,76.30,73.85,75.21,17150000,75.21 +1974-11-06,75.11,77.41,74.23,74.75,23930000,74.75 +1974-11-05,73.08,75.36,72.49,75.11,15960000,75.11 +1974-11-04,73.80,73.80,71.93,73.08,12740000,73.08 +1974-11-01,73.90,74.85,72.68,73.88,13470000,73.88 +1974-10-31,74.31,75.90,73.15,73.90,18840000,73.90 +1974-10-30,72.83,75.45,72.40,74.31,20130000,74.31 +1974-10-29,70.49,73.19,70.49,72.83,15610000,72.83 +1974-10-28,70.12,70.67,68.89,70.09,10540000,70.09 +1974-10-25,70.22,71.59,69.46,70.12,12650000,70.12 +1974-10-24,70.98,70.98,68.80,70.22,14910000,70.22 +1974-10-23,72.81,72.81,70.40,71.03,14200000,71.03 +1974-10-22,73.50,75.09,72.55,73.13,18930000,73.13 +1974-10-21,72.28,73.92,71.24,73.50,14500000,73.50 +1974-10-18,71.20,73.34,71.20,72.28,16460000,72.28 +1974-10-17,70.33,72.00,69.41,71.17,14470000,71.17 +1974-10-16,71.44,71.98,69.54,70.33,14790000,70.33 +1974-10-15,72.74,73.35,70.61,71.44,17390000,71.44 +1974-10-14,71.17,74.43,71.17,72.74,19770000,72.74 +1974-10-11,69.79,71.99,68.80,71.14,20090000,71.14 +1974-10-10,68.30,71.48,68.30,69.79,26360000,69.79 +1974-10-09,64.84,68.15,63.74,67.82,18820000,67.82 +1974-10-08,64.95,66.07,63.95,64.84,15460000,64.84 +1974-10-07,62.78,65.40,62.78,64.95,15000000,64.95 +1974-10-04,62.28,63.23,60.96,62.34,15910000,62.34 +1974-10-03,63.38,63.48,61.66,62.28,13150000,62.28 +1974-10-02,63.39,64.62,62.74,63.38,12230000,63.38 +1974-10-01,63.54,64.37,61.75,63.39,16890000,63.39 +1974-09-30,64.85,64.85,62.52,63.54,15000000,63.54 +1974-09-27,66.46,67.09,64.58,64.94,12320000,64.94 +1974-09-26,67.40,67.40,65.79,66.46,9060000,66.46 +1974-09-25,68.02,69.77,66.86,67.57,17620000,67.57 +1974-09-24,69.03,69.03,67.42,68.02,9840000,68.02 +1974-09-23,70.14,71.02,68.79,69.42,12130000,69.42 +1974-09-20,70.09,71.12,68.62,70.14,16250000,70.14 +1974-09-19,68.36,70.76,68.36,70.09,17000000,70.09 +1974-09-18,67.38,68.14,65.92,67.72,11760000,67.72 +1974-09-17,66.45,68.84,66.45,67.38,13730000,67.38 +1974-09-16,65.20,66.92,64.15,66.26,18370000,66.26 +1974-09-13,66.71,66.91,64.74,65.20,16070000,65.20 +1974-09-12,68.54,68.54,66.22,66.71,16920000,66.71 +1974-09-11,69.24,70.00,68.22,68.55,11820000,68.55 +1974-09-10,69.72,70.47,68.55,69.24,11980000,69.24 +1974-09-09,71.35,71.35,69.38,69.72,11160000,69.72 +1974-09-06,70.87,72.42,70.08,71.42,15130000,71.42 +1974-09-05,68.69,71.30,68.65,70.87,14210000,70.87 +1974-09-04,69.85,69.85,67.64,68.69,16930000,68.69 +1974-09-03,72.15,73.01,70.28,70.52,12750000,70.52 +1974-08-30,70.22,72.68,70.22,72.15,16230000,72.15 +1974-08-29,70.76,71.22,69.37,69.99,13690000,69.99 +1974-08-28,70.94,72.17,70.13,70.76,16670000,70.76 +1974-08-27,72.16,72.50,70.50,70.94,12970000,70.94 +1974-08-26,71.55,73.17,70.42,72.16,14630000,72.16 +1974-08-23,72.80,73.71,70.75,71.55,13590000,71.55 +1974-08-22,73.51,74.05,71.61,72.80,15690000,72.80 +1974-08-21,74.95,75.50,73.16,73.51,11650000,73.51 +1974-08-20,74.57,76.11,73.82,74.95,13820000,74.95 +1974-08-19,75.65,75.65,73.78,74.57,11670000,74.57 +1974-08-16,76.30,77.02,75.29,75.67,10510000,75.67 +1974-08-15,76.73,77.52,75.19,76.30,11130000,76.30 +1974-08-14,76.73,76.73,76.73,76.73,11750000,76.73 +1974-08-13,79.75,79.95,77.83,78.49,10140000,78.49 +1974-08-12,80.86,81.26,79.30,79.75,7780000,79.75 +1974-08-09,81.57,81.88,80.11,80.86,10160000,80.86 +1974-08-08,82.65,83.53,80.86,81.57,16060000,81.57 +1974-08-07,80.52,82.93,80.13,82.65,13380000,82.65 +1974-08-06,79.78,82.65,79.78,80.52,15770000,80.52 +1974-08-05,78.59,80.31,78.03,79.29,11230000,79.29 +1974-08-02,78.75,79.39,77.84,78.59,10110000,78.59 +1974-08-01,79.31,80.02,77.97,78.75,11470000,78.75 +1974-07-31,80.50,80.82,78.96,79.31,10960000,79.31 +1974-07-30,80.94,81.52,79.58,80.50,11360000,80.50 +1974-07-29,82.02,82.02,80.22,80.94,11560000,80.94 +1974-07-26,83.98,84.17,82.00,82.40,10420000,82.40 +1974-07-25,84.99,85.67,83.13,83.98,13310000,83.98 +1974-07-24,84.65,85.64,83.61,84.99,12870000,84.99 +1974-07-23,83.81,85.63,83.67,84.65,12910000,84.65 +1974-07-22,83.54,84.44,82.59,83.81,9290000,83.81 +1974-07-19,83.78,84.67,82.87,83.54,11080000,83.54 +1974-07-18,83.70,85.39,83.13,83.78,13980000,83.78 +1974-07-17,82.81,84.13,81.70,83.70,11320000,83.70 +1974-07-16,83.78,83.85,82.14,82.81,9920000,82.81 +1974-07-15,83.15,84.89,82.65,83.78,13560000,83.78 +1974-07-12,80.97,83.65,80.97,83.15,17770000,83.15 +1974-07-11,79.99,81.08,79.08,79.89,14640000,79.89 +1974-07-10,81.48,82.22,79.74,79.99,13490000,79.99 +1974-07-09,81.09,82.50,80.35,81.48,15580000,81.48 +1974-07-08,83.13,83.13,80.48,81.09,15510000,81.09 +1974-07-05,84.25,84.45,83.17,83.66,7400000,83.66 +1974-07-03,84.30,85.15,83.46,84.25,13430000,84.25 +1974-07-02,86.02,86.26,83.98,84.30,13460000,84.30 +1974-07-01,86.00,86.89,85.32,86.02,10270000,86.02 +1974-06-28,86.31,86.78,85.13,86.00,12010000,86.00 +1974-06-27,87.61,87.61,85.88,86.31,12650000,86.31 +1974-06-26,88.98,89.12,87.30,87.61,11410000,87.61 +1974-06-25,87.69,89.48,87.67,88.98,11920000,88.98 +1974-06-24,87.46,88.38,86.70,87.69,9960000,87.69 +1974-06-21,88.21,88.31,86.77,87.46,11830000,87.46 +1974-06-20,88.84,89.35,87.80,88.21,11990000,88.21 +1974-06-19,89.45,89.80,88.39,88.84,10550000,88.84 +1974-06-18,90.04,90.53,88.92,89.45,10110000,89.45 +1974-06-17,91.30,91.34,89.63,90.04,9680000,90.04 +1974-06-14,92.23,92.23,90.73,91.30,10030000,91.30 +1974-06-13,92.06,93.33,91.48,92.34,11540000,92.34 +1974-06-12,92.28,92.61,90.89,92.06,11150000,92.06 +1974-06-11,93.10,93.57,91.76,92.28,12380000,92.28 +1974-06-10,92.55,93.64,91.53,93.10,13540000,93.10 +1974-06-07,91.96,93.76,91.74,92.55,19020000,92.55 +1974-06-06,90.31,92.31,89.71,91.96,13360000,91.96 +1974-06-05,90.14,91.42,89.04,90.31,13680000,90.31 +1974-06-04,89.10,91.13,89.09,90.14,16040000,90.14 +1974-06-03,87.28,89.40,86.78,89.10,12490000,89.10 +1974-05-31,87.43,88.02,86.19,87.28,10810000,87.28 +1974-05-30,86.89,88.09,85.87,87.43,13580000,87.43 +1974-05-29,88.37,88.84,86.52,86.89,12300000,86.89 +1974-05-28,88.58,89.37,87.69,88.37,10580000,88.37 +1974-05-24,87.29,89.27,87.20,88.58,13740000,88.58 +1974-05-23,87.09,87.98,86.12,87.29,14770000,87.29 +1974-05-22,87.91,88.79,86.72,87.09,15450000,87.09 +1974-05-21,87.86,88.98,87.19,87.91,12190000,87.91 +1974-05-20,88.21,89.09,87.19,87.86,10550000,87.86 +1974-05-17,89.53,89.53,87.67,88.21,13870000,88.21 +1974-05-16,90.45,91.31,89.36,89.72,12090000,89.72 +1974-05-15,90.69,91.22,89.65,90.45,11240000,90.45 +1974-05-14,90.66,91.68,90.05,90.69,10880000,90.69 +1974-05-13,91.47,91.72,89.91,90.66,11290000,90.66 +1974-05-10,92.96,93.57,91.03,91.47,15270000,91.47 +1974-05-09,91.64,93.49,91.27,92.96,14710000,92.96 +1974-05-08,91.46,92.34,90.71,91.64,11850000,91.64 +1974-05-07,91.12,92.36,90.69,91.46,10710000,91.46 +1974-05-06,91.29,91.60,90.13,91.12,9450000,91.12 +1974-05-03,92.09,92.27,90.59,91.29,11080000,91.29 +1974-05-02,92.22,93.59,91.46,92.09,13620000,92.09 +1974-05-01,90.31,93.03,89.82,92.22,15120000,92.22 +1974-04-30,90.00,91.09,89.38,90.31,10980000,90.31 +1974-04-29,90.18,90.78,89.02,90.00,10170000,90.00 +1974-04-26,89.57,91.10,89.06,90.18,13250000,90.18 +1974-04-25,90.30,90.53,88.62,89.57,15870000,89.57 +1974-04-24,91.81,91.82,89.91,90.30,16010000,90.30 +1974-04-23,93.38,93.51,91.53,91.81,14110000,91.81 +1974-04-22,93.75,94.12,92.71,93.38,10520000,93.38 +1974-04-19,94.77,94.77,93.20,93.75,10710000,93.75 +1974-04-18,94.36,95.42,93.75,94.78,12470000,94.78 +1974-04-17,93.66,95.04,93.12,94.36,14020000,94.36 +1974-04-16,92.05,94.06,92.05,93.66,14530000,93.66 +1974-04-15,92.12,92.94,91.49,92.05,10130000,92.05 +1974-04-11,92.40,92.92,91.55,92.12,9970000,92.12 +1974-04-10,92.61,93.52,91.89,92.40,11160000,92.40 +1974-04-09,92.03,93.28,91.61,92.61,11330000,92.61 +1974-04-08,93.00,93.00,91.50,92.03,10740000,92.03 +1974-04-05,94.24,94.24,92.55,93.01,11670000,93.01 +1974-04-04,94.33,95.14,93.55,94.33,11650000,94.33 +1974-04-03,93.35,94.70,92.94,94.33,11500000,94.33 +1974-04-02,93.25,94.15,92.59,93.35,12010000,93.35 +1974-04-01,93.98,94.68,92.82,93.25,11470000,93.25 +1974-03-29,94.82,95.12,93.44,93.98,12150000,93.98 +1974-03-28,96.20,96.20,94.36,94.82,14940000,94.82 +1974-03-27,97.95,98.26,96.32,96.59,11690000,96.59 +1974-03-26,97.64,98.66,97.11,97.95,11840000,97.95 +1974-03-25,97.27,98.02,95.69,97.64,10540000,97.64 +1974-03-22,97.34,98.04,96.35,97.27,11930000,97.27 +1974-03-21,97.57,98.59,96.82,97.34,12950000,97.34 +1974-03-20,97.23,98.22,96.67,97.57,12960000,97.57 +1974-03-19,98.05,98.20,96.63,97.23,12800000,97.23 +1974-03-18,99.28,99.71,97.62,98.05,14010000,98.05 +1974-03-15,99.65,99.99,98.22,99.28,14500000,99.28 +1974-03-14,99.74,101.05,98.80,99.65,19770000,99.65 +1974-03-13,99.15,100.73,98.72,99.74,16820000,99.74 +1974-03-12,98.88,100.02,97.97,99.15,17250000,99.15 +1974-03-11,97.78,99.40,96.38,98.88,18470000,98.88 +1974-03-08,96.94,98.28,95.77,97.78,16210000,97.78 +1974-03-07,97.98,98.20,96.37,96.94,14500000,96.94 +1974-03-06,97.32,98.57,96.54,97.98,19140000,97.98 +1974-03-05,95.98,98.17,95.98,97.32,21980000,97.32 +1974-03-04,95.53,95.95,94.19,95.53,12270000,95.53 +1974-03-01,96.22,96.40,94.81,95.53,12880000,95.53 +1974-02-28,96.40,96.98,95.20,96.22,13680000,96.22 +1974-02-27,96.00,97.43,95.49,96.40,18730000,96.40 +1974-02-26,95.03,96.38,94.20,96.00,15860000,96.00 +1974-02-25,95.39,95.96,94.24,95.03,12900000,95.03 +1974-02-22,94.71,96.19,94.08,95.39,16360000,95.39 +1974-02-21,93.44,95.19,93.20,94.71,13930000,94.71 +1974-02-20,92.12,93.92,91.34,93.44,11670000,93.44 +1974-02-19,92.27,94.44,91.68,92.12,15940000,92.12 +1974-02-15,90.95,92.98,90.62,92.27,12640000,92.27 +1974-02-14,90.98,91.89,90.17,90.95,12230000,90.95 +1974-02-13,90.94,92.13,90.37,90.98,10990000,90.98 +1974-02-12,90.66,91.60,89.53,90.94,12920000,90.94 +1974-02-11,92.33,92.54,90.26,90.66,12930000,90.66 +1974-02-08,93.30,93.79,91.87,92.33,12990000,92.33 +1974-02-07,93.26,94.09,92.43,93.30,11750000,93.30 +1974-02-06,93.00,94.09,92.37,93.26,11610000,93.26 +1974-02-05,93.29,94.17,92.26,93.00,12820000,93.00 +1974-02-04,94.89,94.89,92.74,93.29,14380000,93.29 +1974-02-01,96.57,96.63,94.66,95.32,12480000,95.32 +1974-01-31,97.06,98.06,96.11,96.57,14020000,96.57 +1974-01-30,96.02,97.90,96.02,97.06,16790000,97.06 +1974-01-29,96.09,96.81,94.97,96.01,12850000,96.01 +1974-01-28,96.63,97.32,95.37,96.09,13410000,96.09 +1974-01-25,96.82,97.64,95.68,96.63,14860000,96.63 +1974-01-24,97.07,97.75,95.49,96.82,15980000,96.82 +1974-01-23,96.55,98.11,95.88,97.07,16890000,97.07 +1974-01-22,95.40,97.41,94.92,96.55,17330000,96.55 +1974-01-21,95.56,95.96,93.23,95.40,15630000,95.40 +1974-01-18,97.30,97.63,95.00,95.56,16470000,95.56 +1974-01-17,95.67,98.35,95.67,97.30,21040000,97.30 +1974-01-16,94.23,96.20,93.78,95.67,14930000,95.67 +1974-01-15,93.42,95.26,92.84,94.23,13250000,94.23 +1974-01-14,93.66,95.24,92.35,93.42,14610000,93.42 +1974-01-11,92.39,94.57,91.75,93.66,15140000,93.66 +1974-01-10,93.42,94.63,91.62,92.39,16120000,92.39 +1974-01-09,95.40,95.40,92.63,93.42,18070000,93.42 +1974-01-08,98.07,98.26,95.58,96.12,18080000,96.12 +1974-01-07,98.90,99.31,96.86,98.07,19070000,98.07 +1974-01-04,99.80,100.70,97.70,98.90,21700000,98.90 +1974-01-03,98.02,100.94,98.02,99.80,24850000,99.80 +1974-01-02,97.55,98.38,96.25,97.68,12060000,97.68 +1973-12-31,97.54,98.30,95.95,97.55,23470000,97.55 +1973-12-28,97.74,98.76,96.41,97.54,21310000,97.54 +1973-12-27,96.00,98.53,96.00,97.74,22720000,97.74 +1973-12-26,93.87,96.52,93.87,95.74,18620000,95.74 +1973-12-24,93.54,93.77,91.68,92.90,11540000,92.90 +1973-12-21,94.55,95.11,92.70,93.54,18680000,93.54 +1973-12-20,94.82,96.26,93.51,94.55,17340000,94.55 +1973-12-19,94.74,96.83,93.81,94.82,20670000,94.82 +1973-12-18,92.75,95.41,92.18,94.74,19490000,94.74 +1973-12-17,93.29,94.00,91.87,92.75,12930000,92.75 +1973-12-14,92.38,94.53,91.05,93.29,20000000,93.29 +1973-12-13,93.57,94.68,91.64,92.38,18130000,92.38 +1973-12-12,95.52,95.52,92.90,93.57,18190000,93.57 +1973-12-11,97.95,99.09,95.62,96.04,20100000,96.04 +1973-12-10,96.51,98.58,95.44,97.95,18590000,97.95 +1973-12-07,94.49,97.58,94.49,96.51,23230000,96.51 +1973-12-06,92.16,94.89,91.68,94.42,23260000,94.42 +1973-12-05,93.59,93.93,91.55,92.16,19180000,92.16 +1973-12-04,93.90,95.23,92.60,93.59,19030000,93.59 +1973-12-03,95.83,95.83,92.92,93.90,17900000,93.90 +1973-11-30,97.31,97.55,95.40,95.96,15380000,95.96 +1973-11-29,97.65,98.72,96.01,97.31,18870000,97.31 +1973-11-28,95.70,98.40,95.22,97.65,19990000,97.65 +1973-11-27,96.58,97.70,94.88,95.70,19750000,95.70 +1973-11-26,98.64,98.64,95.79,96.58,19830000,96.58 +1973-11-23,99.76,100.49,98.59,99.44,11470000,99.44 +1973-11-21,98.66,101.33,97.87,99.76,24260000,99.76 +1973-11-20,100.65,100.65,97.64,98.66,23960000,98.66 +1973-11-19,103.65,103.65,100.37,100.71,16700000,100.71 +1973-11-16,102.43,105.41,101.77,103.88,22510000,103.88 +1973-11-15,102.45,103.85,100.69,102.43,24530000,102.43 +1973-11-14,104.36,105.25,101.87,102.45,22710000,102.45 +1973-11-13,104.44,105.42,102.91,104.36,20310000,104.36 +1973-11-12,105.30,105.75,103.12,104.44,19250000,104.44 +1973-11-09,107.02,107.27,104.77,105.30,17320000,105.30 +1973-11-08,106.10,108.45,106.10,107.02,19650000,107.02 +1973-11-07,104.96,106.72,104.53,105.80,16570000,105.80 +1973-11-06,105.52,107.00,104.52,104.96,16430000,104.96 +1973-11-05,106.97,106.97,104.87,105.52,17150000,105.52 +1973-11-02,107.69,108.35,106.33,107.07,16340000,107.07 +1973-11-01,108.29,109.20,106.88,107.69,16920000,107.69 +1973-10-31,109.33,109.82,107.64,108.29,17890000,108.29 +1973-10-30,111.15,111.30,108.95,109.33,17580000,109.33 +1973-10-29,111.38,112.56,110.52,111.15,17960000,111.15 +1973-10-26,110.50,112.31,110.08,111.38,17800000,111.38 +1973-10-25,110.27,111.33,108.85,110.50,15580000,110.50 +1973-10-24,109.75,110.98,109.03,110.27,15840000,110.27 +1973-10-23,109.16,110.91,107.40,109.75,17230000,109.75 +1973-10-22,110.22,110.56,108.18,109.16,14290000,109.16 +1973-10-19,110.01,111.56,109.30,110.22,17880000,110.22 +1973-10-18,109.97,111.43,108.97,110.01,19210000,110.01 +1973-10-17,110.19,111.41,109.19,109.97,18600000,109.97 +1973-10-16,110.05,110.80,108.50,110.19,18780000,110.19 +1973-10-15,111.32,111.32,109.29,110.05,16160000,110.05 +1973-10-12,111.09,112.82,110.52,111.44,22730000,111.44 +1973-10-11,109.22,111.77,108.96,111.09,20740000,111.09 +1973-10-10,110.13,111.31,108.51,109.22,19010000,109.22 +1973-10-09,110.23,111.19,109.05,110.13,19440000,110.13 +1973-10-08,109.85,110.93,108.02,110.23,18990000,110.23 +1973-10-05,108.41,110.46,107.76,109.85,18820000,109.85 +1973-10-04,108.78,109.53,107.30,108.41,19730000,108.41 +1973-10-03,108.79,109.95,107.74,108.78,22040000,108.78 +1973-10-02,108.21,109.46,107.48,108.79,20770000,108.79 +1973-10-01,108.43,108.98,107.08,108.21,15830000,108.21 +1973-09-28,109.08,109.42,107.48,108.43,16300000,108.43 +1973-09-27,108.83,110.45,108.02,109.08,23660000,109.08 +1973-09-26,108.05,109.61,107.43,108.83,21130000,108.83 +1973-09-25,107.36,108.79,106.50,108.05,21530000,108.05 +1973-09-24,107.20,108.36,106.21,107.36,19490000,107.36 +1973-09-21,106.76,108.02,105.43,107.20,23760000,107.20 +1973-09-20,105.88,107.55,105.32,106.76,25960000,106.76 +1973-09-19,103.80,106.43,103.80,105.88,24570000,105.88 +1973-09-18,104.15,104.62,102.41,103.77,16400000,103.77 +1973-09-17,104.44,105.41,103.21,104.15,15100000,104.15 +1973-09-14,103.36,104.75,102.66,104.44,13760000,104.44 +1973-09-13,103.06,104.09,102.37,103.36,11670000,103.36 +1973-09-12,103.22,103.98,102.15,103.06,12040000,103.06 +1973-09-11,103.85,104.09,102.13,103.22,12690000,103.22 +1973-09-10,104.76,105.12,103.33,103.85,11620000,103.85 +1973-09-07,105.15,105.87,104.04,104.76,14930000,104.76 +1973-09-06,104.64,105.95,104.05,105.15,15670000,105.15 +1973-09-05,104.51,105.33,103.60,104.64,14580000,104.64 +1973-09-04,104.25,105.35,103.60,104.51,14210000,104.51 +1973-08-31,103.88,104.72,103.15,104.25,10530000,104.25 +1973-08-30,104.03,104.84,103.29,103.88,12100000,103.88 +1973-08-29,103.02,104.92,102.69,104.03,15690000,104.03 +1973-08-28,102.42,103.66,102.06,103.02,11810000,103.02 +1973-08-27,101.62,102.82,101.09,102.42,9740000,102.42 +1973-08-24,101.91,102.65,100.88,101.62,11200000,101.62 +1973-08-23,100.62,102.50,100.62,101.91,11390000,101.91 +1973-08-22,100.89,101.39,99.74,100.53,10770000,100.53 +1973-08-21,101.61,102.10,100.51,100.89,11480000,100.89 +1973-08-20,102.31,102.54,101.11,101.61,8970000,101.61 +1973-08-17,102.29,102.98,101.38,102.31,11110000,102.31 +1973-08-16,103.01,103.97,101.85,102.29,12990000,102.29 +1973-08-15,102.71,103.79,101.92,103.01,12040000,103.01 +1973-08-14,103.71,104.29,102.34,102.71,11740000,102.71 +1973-08-13,104.77,104.83,103.13,103.71,11330000,103.71 +1973-08-10,105.61,106.03,104.21,104.77,10870000,104.77 +1973-08-09,105.55,106.65,104.89,105.61,12880000,105.61 +1973-08-08,106.55,106.73,105.04,105.55,12440000,105.55 +1973-08-07,106.73,107.57,105.87,106.55,13510000,106.55 +1973-08-06,106.49,107.54,105.45,106.73,12320000,106.73 +1973-08-03,106.67,107.17,105.68,106.49,9940000,106.49 +1973-08-02,106.83,107.38,105.51,106.67,16080000,106.67 +1973-08-01,108.17,108.17,106.29,106.83,13530000,106.83 +1973-07-31,109.25,110.09,107.89,108.22,13530000,108.22 +1973-07-30,109.59,110.12,108.24,109.25,11170000,109.25 +1973-07-27,109.85,110.49,108.70,109.59,12910000,109.59 +1973-07-26,109.64,111.04,108.51,109.85,18410000,109.85 +1973-07-25,108.14,110.76,107.92,109.64,22220000,109.64 +1973-07-24,107.52,108.63,106.31,108.14,16280000,108.14 +1973-07-23,107.14,108.42,106.54,107.52,15580000,107.52 +1973-07-20,106.55,108.02,105.95,107.14,16300000,107.14 +1973-07-19,106.35,107.58,105.06,106.55,18650000,106.55 +1973-07-18,105.72,107.05,104.73,106.35,17020000,106.35 +1973-07-17,105.67,107.28,104.99,105.72,18750000,105.72 +1973-07-16,104.09,106.01,103.42,105.67,12920000,105.67 +1973-07-13,105.50,105.80,103.66,104.09,11390000,104.09 +1973-07-12,105.80,106.62,104.38,105.50,16400000,105.50 +1973-07-11,103.64,106.21,103.64,105.80,18730000,105.80 +1973-07-10,102.26,104.20,102.26,103.52,15090000,103.52 +1973-07-09,101.28,102.45,100.44,102.14,11560000,102.14 +1973-07-06,101.78,102.22,100.67,101.28,9980000,101.28 +1973-07-05,101.87,102.48,100.80,101.78,10500000,101.78 +1973-07-03,102.90,103.02,101.14,101.87,10560000,101.87 +1973-07-02,104.10,104.10,102.44,102.90,9830000,102.90 +1973-06-29,104.69,105.30,103.68,104.26,10770000,104.26 +1973-06-28,103.62,105.17,103.18,104.69,12760000,104.69 +1973-06-27,103.30,104.23,102.29,103.62,12660000,103.62 +1973-06-26,102.25,103.78,101.45,103.30,14040000,103.30 +1973-06-25,103.64,103.64,101.71,102.25,11670000,102.25 +1973-06-22,103.21,105.66,103.07,103.70,18470000,103.70 +1973-06-21,104.44,104.77,102.84,103.21,11630000,103.21 +1973-06-20,103.99,105.13,103.51,104.44,10600000,104.44 +1973-06-19,103.60,104.96,102.46,103.99,12970000,103.99 +1973-06-18,104.96,104.96,103.08,103.60,11460000,103.60 +1973-06-15,106.21,106.21,104.37,105.10,11970000,105.10 +1973-06-14,107.60,108.27,105.83,106.40,13210000,106.40 +1973-06-13,108.29,109.52,107.08,107.60,15700000,107.60 +1973-06-12,106.70,108.78,106.40,108.29,13840000,108.29 +1973-06-11,107.03,107.79,106.11,106.70,9940000,106.70 +1973-06-08,105.84,107.75,105.60,107.03,14050000,107.03 +1973-06-07,104.31,106.39,104.19,105.84,14160000,105.84 +1973-06-06,104.62,105.78,103.60,104.31,13080000,104.31 +1973-06-05,102.97,105.27,102.61,104.62,14080000,104.62 +1973-06-04,103.93,103.98,102.33,102.97,11230000,102.97 +1973-06-01,104.95,105.04,103.31,103.93,10410000,103.93 +1973-05-31,105.91,106.30,104.35,104.95,12190000,104.95 +1973-05-30,107.51,107.64,105.48,105.91,11730000,105.91 +1973-05-29,107.94,108.58,106.77,107.51,11300000,107.51 +1973-05-25,107.14,108.86,106.08,107.94,19270000,107.94 +1973-05-24,104.07,107.44,103.59,107.14,17310000,107.14 +1973-05-23,103.58,105.10,102.82,104.07,14950000,104.07 +1973-05-22,102.73,105.04,102.58,103.58,18020000,103.58 +1973-05-21,103.77,103.77,101.36,102.73,20690000,102.73 +1973-05-18,105.41,105.41,103.18,103.86,17080000,103.86 +1973-05-17,106.43,106.82,105.15,105.56,13060000,105.56 +1973-05-16,106.57,107.61,105.49,106.43,13800000,106.43 +1973-05-15,105.90,107.16,104.12,106.57,18530000,106.57 +1973-05-14,107.74,107.74,105.52,105.90,13520000,105.90 +1973-05-11,109.49,109.49,107.70,108.17,12980000,108.17 +1973-05-10,110.44,110.86,108.86,109.54,13520000,109.54 +1973-05-09,111.25,112.25,109.97,110.44,16050000,110.44 +1973-05-08,110.53,111.72,109.46,111.25,13730000,111.25 +1973-05-07,111.00,111.38,109.68,110.53,12500000,110.53 +1973-05-04,110.22,111.99,109.89,111.00,19510000,111.00 +1973-05-03,108.43,110.64,106.81,110.22,17760000,110.22 +1973-05-02,107.10,109.06,106.95,108.43,14380000,108.43 +1973-05-01,106.97,108.00,105.34,107.10,15380000,107.10 +1973-04-30,107.23,107.90,105.44,106.97,14820000,106.97 +1973-04-27,108.89,109.28,106.76,107.23,13730000,107.23 +1973-04-26,108.34,109.66,107.14,108.89,16210000,108.89 +1973-04-25,109.82,109.82,107.79,108.34,15960000,108.34 +1973-04-24,111.57,111.89,109.64,109.99,13830000,109.99 +1973-04-23,112.17,112.66,110.91,111.57,12580000,111.57 +1973-04-19,111.54,112.93,111.06,112.17,14560000,112.17 +1973-04-18,110.94,112.03,109.99,111.54,13890000,111.54 +1973-04-17,111.44,111.81,110.19,110.94,12830000,110.94 +1973-04-16,112.08,112.61,110.91,111.44,11350000,111.44 +1973-04-13,112.58,112.91,111.23,112.08,14390000,112.08 +1973-04-12,112.68,113.65,111.83,112.58,16360000,112.58 +1973-04-11,112.21,113.27,111.21,112.68,14890000,112.68 +1973-04-10,110.92,112.85,110.92,112.21,16770000,112.21 +1973-04-09,109.28,111.24,108.74,110.86,13740000,110.86 +1973-04-06,108.52,110.04,108.22,109.28,13890000,109.28 +1973-04-05,108.77,109.15,107.44,108.52,12750000,108.52 +1973-04-04,109.24,109.96,108.10,108.77,11890000,108.77 +1973-04-03,110.18,110.35,108.47,109.24,12910000,109.24 +1973-04-02,111.52,111.70,109.68,110.18,10640000,110.18 +1973-03-30,112.71,112.87,110.89,111.52,13740000,111.52 +1973-03-29,111.62,113.22,111.07,112.71,16050000,112.71 +1973-03-28,111.56,112.47,110.54,111.62,15850000,111.62 +1973-03-27,109.95,112.07,109.95,111.56,17500000,111.56 +1973-03-26,108.88,110.40,108.29,109.84,14980000,109.84 +1973-03-23,108.84,109.97,107.41,108.88,18470000,108.88 +1973-03-22,110.39,110.39,108.19,108.84,17130000,108.84 +1973-03-21,111.95,112.81,110.17,110.49,16080000,110.49 +1973-03-20,112.17,112.68,111.02,111.95,13250000,111.95 +1973-03-19,113.50,113.50,111.65,112.17,12460000,112.17 +1973-03-16,114.12,114.62,112.84,113.54,15130000,113.54 +1973-03-15,114.98,115.47,113.77,114.12,14450000,114.12 +1973-03-14,114.48,115.61,113.97,114.98,14460000,114.98 +1973-03-13,113.86,115.05,113.32,114.48,14210000,114.48 +1973-03-12,113.79,114.80,113.25,113.86,13810000,113.86 +1973-03-09,114.23,114.55,112.93,113.79,14070000,113.79 +1973-03-08,114.45,115.23,113.57,114.23,15100000,114.23 +1973-03-07,114.10,115.12,112.83,114.45,19310000,114.45 +1973-03-06,112.68,114.71,112.57,114.10,17710000,114.10 +1973-03-05,112.28,113.43,111.33,112.68,13720000,112.68 +1973-03-02,111.05,112.62,109.45,112.28,17710000,112.28 +1973-03-01,111.68,112.98,110.68,111.05,18210000,111.05 +1973-02-28,110.90,112.21,109.80,111.68,17950000,111.68 +1973-02-27,112.19,112.90,110.50,110.90,16130000,110.90 +1973-02-26,113.16,113.26,111.15,112.19,15860000,112.19 +1973-02-23,114.44,114.67,112.77,113.16,15450000,113.16 +1973-02-22,114.69,115.20,113.44,114.44,14570000,114.44 +1973-02-21,115.40,116.01,114.13,114.69,14880000,114.69 +1973-02-20,114.98,116.26,114.57,115.40,14020000,115.40 +1973-02-16,114.45,115.47,113.73,114.98,13320000,114.98 +1973-02-15,115.10,115.68,113.70,114.45,13940000,114.45 +1973-02-14,116.78,116.92,114.52,115.10,16520000,115.10 +1973-02-13,116.09,118.98,116.09,116.78,25320000,116.78 +1973-02-12,114.69,116.66,114.69,116.06,16130000,116.06 +1973-02-09,113.16,115.20,113.08,114.68,19260000,114.68 +1973-02-08,113.66,114.05,111.85,113.16,18440000,113.16 +1973-02-07,114.45,115.48,113.24,113.66,17960000,113.66 +1973-02-06,114.23,115.33,113.45,114.45,15720000,114.45 +1973-02-05,114.35,115.15,113.62,114.23,14580000,114.23 +1973-02-02,114.76,115.40,113.45,114.35,17470000,114.35 +1973-02-01,116.03,117.01,114.26,114.76,20670000,114.76 +1973-01-31,115.83,116.84,115.05,116.03,14870000,116.03 +1973-01-30,116.01,117.11,115.26,115.83,15270000,115.83 +1973-01-29,116.45,117.18,115.13,116.01,14680000,116.01 +1973-01-26,116.73,117.29,114.97,116.45,21130000,116.45 +1973-01-24,118.22,119.04,116.09,116.73,20870000,116.73 +1973-01-23,118.21,119.00,116.84,118.22,19060000,118.22 +1973-01-22,118.78,119.63,117.72,118.21,15570000,118.21 +1973-01-19,118.85,119.45,117.46,118.78,17020000,118.78 +1973-01-18,118.68,119.93,118.15,118.85,17810000,118.85 +1973-01-17,118.14,119.35,117.61,118.68,17680000,118.68 +1973-01-16,118.44,119.17,117.04,118.14,19170000,118.14 +1973-01-15,119.30,120.82,118.04,118.44,21520000,118.44 +1973-01-12,120.24,121.27,118.69,119.30,22230000,119.30 +1973-01-11,119.43,121.74,119.01,120.24,25050000,120.24 +1973-01-10,119.73,120.44,118.78,119.43,20880000,119.43 +1973-01-09,119.85,120.40,118.89,119.73,16830000,119.73 +1973-01-08,119.87,120.55,119.04,119.85,16840000,119.85 +1973-01-05,119.40,120.71,118.88,119.87,19330000,119.87 +1973-01-04,119.57,120.17,118.12,119.40,20230000,119.40 +1973-01-03,119.10,120.45,118.69,119.57,20620000,119.57 +1973-01-02,118.06,119.90,118.06,119.10,17090000,119.10 +1972-12-29,116.93,118.77,116.70,118.05,27550000,118.05 +1972-12-27,116.30,117.55,115.89,116.93,19100000,116.93 +1972-12-26,115.83,116.87,115.54,116.30,11120000,116.30 +1972-12-22,115.11,116.40,114.78,115.83,12540000,115.83 +1972-12-21,115.95,116.60,114.63,115.11,18290000,115.11 +1972-12-20,116.34,117.13,115.38,115.95,18490000,115.95 +1972-12-19,116.90,117.37,115.69,116.34,17000000,116.34 +1972-12-18,117.88,117.88,115.89,116.90,17540000,116.90 +1972-12-15,118.24,119.25,117.37,118.26,18300000,118.26 +1972-12-14,118.56,119.19,117.63,118.24,17930000,118.24 +1972-12-13,118.66,119.23,117.77,118.56,16540000,118.56 +1972-12-12,119.12,119.79,118.09,118.66,17040000,118.66 +1972-12-11,118.86,119.78,118.24,119.12,17230000,119.12 +1972-12-08,118.60,119.54,117.92,118.86,18030000,118.86 +1972-12-07,118.01,119.17,117.57,118.60,19320000,118.60 +1972-12-06,117.58,118.56,116.90,118.01,18610000,118.01 +1972-12-05,117.77,118.42,116.89,117.58,17800000,117.58 +1972-12-04,117.38,118.54,116.99,117.77,19730000,117.77 +1972-12-01,116.67,118.18,116.29,117.38,22570000,117.38 +1972-11-30,116.52,117.39,115.74,116.67,19340000,116.67 +1972-11-29,116.47,117.14,115.56,116.52,17380000,116.52 +1972-11-28,116.72,117.48,115.78,116.47,19210000,116.47 +1972-11-27,117.27,117.55,115.66,116.72,18190000,116.72 +1972-11-24,116.90,117.91,116.19,117.27,15760000,117.27 +1972-11-22,116.21,117.61,115.67,116.90,24510000,116.90 +1972-11-21,115.53,116.84,115.04,116.21,22110000,116.21 +1972-11-20,115.49,116.25,114.57,115.53,16680000,115.53 +1972-11-17,115.13,116.23,114.44,115.49,20220000,115.49 +1972-11-16,114.50,115.57,113.73,115.13,19580000,115.13 +1972-11-15,114.95,116.07,113.87,114.50,23270000,114.50 +1972-11-14,113.90,115.41,113.36,114.95,20200000,114.95 +1972-11-13,113.73,114.75,112.91,113.90,17210000,113.90 +1972-11-10,113.50,115.15,112.85,113.73,24360000,113.73 +1972-11-09,113.35,114.11,112.08,113.50,17040000,113.50 +1972-11-08,113.98,115.23,112.77,113.35,24620000,113.35 +1972-11-06,114.22,115.17,112.91,113.98,21330000,113.98 +1972-11-03,113.23,114.81,112.71,114.22,22510000,114.22 +1972-11-02,112.67,113.81,111.96,113.23,20690000,113.23 +1972-11-01,111.58,113.31,111.32,112.67,21360000,112.67 +1972-10-31,110.59,112.05,110.40,111.58,15450000,111.58 +1972-10-30,110.62,111.19,109.66,110.59,11820000,110.59 +1972-10-27,110.99,111.62,109.99,110.62,15470000,110.62 +1972-10-26,110.72,112.26,110.26,110.99,20790000,110.99 +1972-10-25,110.81,111.56,109.96,110.72,17430000,110.72 +1972-10-24,110.35,111.34,109.38,110.81,15240000,110.81 +1972-10-23,109.51,111.10,109.51,110.35,14190000,110.35 +1972-10-20,108.05,109.79,107.59,109.24,15740000,109.24 +1972-10-19,108.19,108.81,107.40,108.05,13850000,108.05 +1972-10-18,107.50,109.11,107.36,108.19,17290000,108.19 +1972-10-17,106.77,108.04,106.27,107.50,13410000,107.50 +1972-10-16,107.92,108.40,106.38,106.77,10940000,106.77 +1972-10-13,108.60,108.88,107.17,107.92,12870000,107.92 +1972-10-12,109.50,109.69,108.03,108.60,13130000,108.60 +1972-10-11,109.99,110.51,108.77,109.50,11900000,109.50 +1972-10-10,109.90,111.11,109.32,109.99,13310000,109.99 +1972-10-09,109.62,110.44,109.28,109.90,7940000,109.90 +1972-10-06,108.89,110.49,107.78,109.62,16630000,109.62 +1972-10-05,110.09,110.52,108.49,108.89,17730000,108.89 +1972-10-04,110.30,111.35,109.58,110.09,16640000,110.09 +1972-10-03,110.16,110.90,109.47,110.30,13090000,110.30 +1972-10-02,110.55,110.98,109.49,110.16,12440000,110.16 +1972-09-29,110.35,110.55,108.05,110.55,16250000,110.55 +1972-09-28,109.66,110.75,108.75,110.35,14710000,110.35 +1972-09-27,108.12,109.92,107.79,109.66,14620000,109.66 +1972-09-26,108.05,108.97,107.35,108.12,13150000,108.12 +1972-09-25,108.52,109.09,107.67,108.05,10920000,108.05 +1972-09-22,108.43,109.20,107.72,108.52,12570000,108.52 +1972-09-21,108.60,109.13,107.75,108.43,11940000,108.43 +1972-09-20,108.55,109.12,107.84,108.60,11980000,108.60 +1972-09-19,108.61,109.57,108.08,108.55,13330000,108.55 +1972-09-18,108.81,109.22,107.86,108.61,8880000,108.61 +1972-09-15,108.93,109.49,108.10,108.81,11690000,108.81 +1972-09-14,108.90,109.64,108.21,108.93,12500000,108.93 +1972-09-13,108.47,109.36,107.84,108.90,13070000,108.90 +1972-09-12,109.51,109.84,107.81,108.47,13560000,108.47 +1972-09-11,110.15,110.57,109.01,109.51,10710000,109.51 +1972-09-08,110.29,110.90,109.67,110.15,10980000,110.15 +1972-09-07,110.55,111.06,109.71,110.29,11090000,110.29 +1972-09-06,111.23,111.38,110.04,110.55,12010000,110.55 +1972-09-05,111.51,112.08,110.75,111.23,10630000,111.23 +1972-09-01,111.09,112.12,110.70,111.51,11600000,111.51 +1972-08-31,110.57,111.52,110.08,111.09,12340000,111.09 +1972-08-30,110.41,111.33,109.90,110.57,12470000,110.57 +1972-08-29,110.23,111.02,109.26,110.41,12300000,110.41 +1972-08-28,110.67,111.24,109.71,110.23,10720000,110.23 +1972-08-25,111.02,111.53,109.78,110.67,13840000,110.67 +1972-08-24,112.26,112.81,110.62,111.02,18280000,111.02 +1972-08-23,112.41,113.27,111.30,112.26,18670000,112.26 +1972-08-22,111.72,113.16,111.28,112.41,18560000,112.41 +1972-08-21,111.76,112.74,110.75,111.72,14290000,111.72 +1972-08-18,111.34,112.53,110.81,111.76,16150000,111.76 +1972-08-17,111.66,112.41,110.72,111.34,14360000,111.34 +1972-08-16,112.06,112.80,110.87,111.66,14950000,111.66 +1972-08-15,112.55,113.04,111.27,112.06,16670000,112.06 +1972-08-14,111.95,113.45,111.66,112.55,18870000,112.55 +1972-08-11,111.05,112.40,110.52,111.95,16570000,111.95 +1972-08-10,110.86,111.68,110.09,111.05,15260000,111.05 +1972-08-09,110.69,111.57,109.98,110.86,15730000,110.86 +1972-08-08,110.61,111.32,109.67,110.69,14550000,110.69 +1972-08-07,110.43,111.38,109.69,110.61,13220000,110.61 +1972-08-04,110.14,111.12,109.37,110.43,15700000,110.43 +1972-08-03,109.29,110.88,108.90,110.14,19970000,110.14 +1972-08-02,108.40,109.85,108.12,109.29,17920000,109.29 +1972-08-01,107.39,108.85,107.06,108.40,15540000,108.40 +1972-07-31,107.38,108.06,106.60,107.39,11120000,107.39 +1972-07-28,107.28,108.03,106.52,107.38,13050000,107.38 +1972-07-27,107.53,108.31,106.61,107.28,13870000,107.28 +1972-07-26,107.60,108.42,106.79,107.53,14130000,107.53 +1972-07-25,107.92,108.88,107.06,107.60,17180000,107.60 +1972-07-24,106.66,108.67,106.63,107.92,18020000,107.92 +1972-07-21,105.81,107.05,104.99,106.66,14010000,106.66 +1972-07-20,106.14,106.68,105.12,105.81,15050000,105.81 +1972-07-19,105.83,107.36,105.47,106.14,17880000,106.14 +1972-07-18,105.88,106.40,104.43,105.83,16820000,105.83 +1972-07-17,106.80,107.37,105.55,105.88,13170000,105.88 +1972-07-14,106.28,107.58,105.77,106.80,13910000,106.80 +1972-07-13,106.89,107.30,105.62,106.28,14740000,106.28 +1972-07-12,107.32,108.15,106.42,106.89,16150000,106.89 +1972-07-11,108.11,108.35,106.87,107.32,12830000,107.32 +1972-07-10,108.69,109.16,107.62,108.11,11700000,108.11 +1972-07-07,109.04,109.66,108.16,108.69,12900000,108.69 +1972-07-06,108.28,110.27,108.28,109.04,19520000,109.04 +1972-07-05,107.49,108.80,107.14,108.10,14710000,108.10 +1972-07-03,107.14,107.95,106.72,107.49,8140000,107.49 +1972-06-30,106.82,107.91,106.40,107.14,12860000,107.14 +1972-06-29,107.02,107.47,105.94,106.82,14610000,106.82 +1972-06-28,107.37,107.87,106.49,107.02,12140000,107.02 +1972-06-27,107.48,108.29,106.70,107.37,13750000,107.37 +1972-06-26,108.23,108.23,106.68,107.48,12720000,107.48 +1972-06-23,108.68,109.33,107.69,108.27,13940000,108.27 +1972-06-22,108.79,109.26,107.62,108.68,13410000,108.68 +1972-06-21,108.56,109.66,107.98,108.79,15510000,108.79 +1972-06-20,108.11,109.12,107.64,108.56,14970000,108.56 +1972-06-19,108.36,108.78,107.37,108.11,11660000,108.11 +1972-06-16,108.44,108.94,107.54,108.36,13010000,108.36 +1972-06-15,108.39,109.52,107.78,108.44,16940000,108.44 +1972-06-14,107.55,109.15,107.38,108.39,18320000,108.39 +1972-06-13,107.01,108.03,106.38,107.55,15710000,107.55 +1972-06-12,106.86,107.92,106.29,107.01,13390000,107.01 +1972-06-09,107.28,107.68,106.30,106.86,12790000,106.86 +1972-06-08,107.65,108.52,106.90,107.28,13820000,107.28 +1972-06-07,108.21,108.52,106.91,107.65,15220000,107.65 +1972-06-06,108.82,109.32,107.71,108.21,15980000,108.21 +1972-06-05,109.73,109.92,108.28,108.82,13450000,108.82 +1972-06-02,109.69,110.51,108.93,109.73,15400000,109.73 +1972-06-01,109.53,110.35,108.97,109.69,14910000,109.69 +1972-05-31,110.35,110.52,108.92,109.53,15230000,109.53 +1972-05-30,110.66,111.48,109.78,110.35,15810000,110.35 +1972-05-26,110.46,111.31,109.84,110.66,15730000,110.66 +1972-05-25,110.31,111.20,109.67,110.46,16480000,110.46 +1972-05-24,109.78,111.07,109.39,110.31,17870000,110.31 +1972-05-23,109.69,110.46,108.91,109.78,16410000,109.78 +1972-05-22,108.98,110.37,108.79,109.69,16030000,109.69 +1972-05-19,107.94,109.59,107.74,108.98,19580000,108.98 +1972-05-18,106.89,108.39,106.72,107.94,17370000,107.94 +1972-05-17,106.66,107.38,106.02,106.89,13600000,106.89 +1972-05-16,106.86,107.55,106.13,106.66,14070000,106.66 +1972-05-15,106.38,107.45,106.06,106.86,13600000,106.86 +1972-05-12,105.77,107.02,105.49,106.38,13990000,106.38 +1972-05-11,105.42,106.45,104.90,105.77,12900000,105.77 +1972-05-10,104.74,106.10,104.43,105.42,13870000,105.42 +1972-05-09,106.06,106.06,103.83,104.74,19910000,104.74 +1972-05-08,106.63,106.81,105.36,106.14,11250000,106.14 +1972-05-05,106.25,107.33,105.70,106.63,13210000,106.63 +1972-05-04,105.99,106.81,105.14,106.25,14790000,106.25 +1972-05-03,106.08,107.24,105.44,105.99,15900000,105.99 +1972-05-02,106.69,107.37,105.55,106.08,15370000,106.08 +1972-05-01,107.67,108.00,106.30,106.69,12880000,106.69 +1972-04-28,107.05,108.28,106.70,107.67,14160000,107.67 +1972-04-27,106.89,107.89,106.42,107.05,15740000,107.05 +1972-04-26,107.12,107.89,106.18,106.89,17710000,106.89 +1972-04-25,108.19,108.29,106.70,107.12,17030000,107.12 +1972-04-24,108.89,109.19,107.62,108.19,14650000,108.19 +1972-04-21,109.04,109.92,108.30,108.89,18200000,108.89 +1972-04-20,109.20,109.69,108.08,109.04,18190000,109.04 +1972-04-19,109.77,110.35,108.71,109.20,19180000,109.20 +1972-04-18,109.51,110.64,109.02,109.77,19410000,109.77 +1972-04-17,109.84,110.22,108.77,109.51,15390000,109.51 +1972-04-14,109.91,110.56,109.07,109.84,17460000,109.84 +1972-04-13,110.18,110.79,109.37,109.91,17990000,109.91 +1972-04-12,109.76,111.11,109.36,110.18,24690000,110.18 +1972-04-11,109.45,110.38,108.76,109.76,19930000,109.76 +1972-04-10,109.62,110.54,108.89,109.45,19470000,109.45 +1972-04-07,109.53,110.15,108.53,109.62,19900000,109.62 +1972-04-06,109.00,110.29,108.53,109.53,22830000,109.53 +1972-04-05,108.12,109.64,107.96,109.00,22960000,109.00 +1972-04-04,107.48,108.62,106.77,108.12,18110000,108.12 +1972-04-03,107.20,108.26,106.75,107.48,14990000,107.48 +1972-03-30,106.49,107.67,106.07,107.20,14360000,107.20 +1972-03-29,107.17,107.41,105.98,106.49,13860000,106.49 +1972-03-28,107.30,108.08,106.22,107.17,15380000,107.17 +1972-03-27,107.52,108.00,106.53,107.30,12180000,107.30 +1972-03-24,107.75,108.36,106.95,107.52,15390000,107.52 +1972-03-23,106.84,108.33,106.67,107.75,18380000,107.75 +1972-03-22,106.69,107.52,106.00,106.84,15400000,106.84 +1972-03-21,107.59,107.68,105.86,106.69,18610000,106.69 +1972-03-20,107.92,108.81,107.18,107.59,16420000,107.59 +1972-03-17,107.50,108.61,106.89,107.92,16040000,107.92 +1972-03-16,107.75,108.22,106.55,107.50,16700000,107.50 +1972-03-15,107.61,108.55,107.09,107.75,19460000,107.75 +1972-03-14,107.33,108.20,106.71,107.61,22370000,107.61 +1972-03-13,108.38,108.52,106.71,107.33,16730000,107.33 +1972-03-10,108.94,109.37,107.77,108.38,19690000,108.38 +1972-03-09,108.96,109.75,108.19,108.94,21460000,108.94 +1972-03-08,108.87,109.68,108.04,108.96,21290000,108.96 +1972-03-07,108.77,109.72,108.02,108.87,22640000,108.87 +1972-03-06,107.94,109.40,107.64,108.77,21000000,108.77 +1972-03-03,107.32,108.51,106.78,107.94,20420000,107.94 +1972-03-02,107.35,108.39,106.63,107.32,22200000,107.32 +1972-03-01,106.57,108.13,106.21,107.35,23670000,107.35 +1972-02-29,106.19,107.16,105.45,106.57,20320000,106.57 +1972-02-28,106.18,107.04,105.37,106.19,18200000,106.19 +1972-02-25,105.45,106.73,105.04,106.18,18180000,106.18 +1972-02-24,105.38,106.24,104.76,105.45,16000000,105.45 +1972-02-23,105.29,106.18,104.72,105.38,16770000,105.38 +1972-02-22,105.28,106.18,104.65,105.29,16670000,105.29 +1972-02-18,105.59,106.01,104.47,105.28,16590000,105.28 +1972-02-17,105.62,106.65,104.96,105.59,22330000,105.59 +1972-02-16,105.03,106.25,104.65,105.62,20670000,105.62 +1972-02-15,104.59,105.59,104.10,105.03,17770000,105.03 +1972-02-14,105.08,105.53,104.03,104.59,15840000,104.59 +1972-02-11,105.59,105.91,104.45,105.08,17850000,105.08 +1972-02-10,105.55,106.69,104.97,105.59,23460000,105.59 +1972-02-09,104.74,106.03,104.36,105.55,19850000,105.55 +1972-02-08,104.54,105.22,103.90,104.74,17390000,104.74 +1972-02-07,104.86,105.46,103.97,104.54,16930000,104.54 +1972-02-04,104.64,105.48,104.05,104.86,17890000,104.86 +1972-02-03,104.68,105.43,103.85,104.64,19880000,104.64 +1972-02-02,104.01,105.41,103.50,104.68,24070000,104.68 +1972-02-01,103.94,104.57,103.10,104.01,19600000,104.01 +1972-01-31,104.16,104.88,103.30,103.94,18250000,103.94 +1972-01-28,103.50,104.98,103.22,104.16,25000000,104.16 +1972-01-27,102.50,103.93,102.20,103.50,20360000,103.50 +1972-01-26,102.70,103.31,101.81,102.50,14940000,102.50 +1972-01-25,102.57,103.59,101.63,102.70,17570000,102.70 +1972-01-24,103.65,104.03,102.20,102.57,15640000,102.57 +1972-01-21,103.88,104.40,102.75,103.65,18810000,103.65 +1972-01-20,103.88,105.00,103.32,103.88,20210000,103.88 +1972-01-19,104.05,104.61,102.83,103.88,18800000,103.88 +1972-01-18,103.70,104.85,103.35,104.05,21070000,104.05 +1972-01-17,103.39,104.24,102.80,103.70,15860000,103.70 +1972-01-14,102.99,103.89,102.41,103.39,14960000,103.39 +1972-01-13,103.59,103.80,102.29,102.99,16410000,102.99 +1972-01-12,103.65,104.66,103.05,103.59,20970000,103.59 +1972-01-11,103.32,104.30,102.85,103.65,17970000,103.65 +1972-01-10,103.47,103.97,102.44,103.32,15320000,103.32 +1972-01-07,103.51,104.29,102.38,103.47,17140000,103.47 +1972-01-06,103.06,104.20,102.66,103.51,21100000,103.51 +1972-01-05,102.09,103.69,101.90,103.06,21350000,103.06 +1972-01-04,101.67,102.59,100.87,102.09,15190000,102.09 +1972-01-03,102.09,102.85,101.19,101.67,12570000,101.67 +1971-12-31,102.09,102.09,102.09,102.09,14040000,102.09 +1971-12-30,101.78,101.78,101.78,101.78,13810000,101.78 +1971-12-29,102.21,102.21,102.21,102.21,17150000,102.21 +1971-12-28,101.95,101.95,101.95,101.95,15090000,101.95 +1971-12-27,100.95,100.95,100.95,100.95,11890000,100.95 +1971-12-23,100.74,100.74,100.74,100.74,16000000,100.74 +1971-12-22,101.18,101.18,101.18,101.18,18930000,101.18 +1971-12-21,101.80,101.80,101.80,101.80,20460000,101.80 +1971-12-20,101.55,101.55,101.55,101.55,23810000,101.55 +1971-12-17,100.26,100.26,100.26,100.26,18270000,100.26 +1971-12-16,99.74,99.74,99.74,99.74,21070000,99.74 +1971-12-15,98.54,98.54,98.54,98.54,16890000,98.54 +1971-12-14,97.67,97.67,97.67,97.67,16070000,97.67 +1971-12-13,97.97,97.97,97.97,97.97,17020000,97.97 +1971-12-10,97.69,97.69,97.69,97.69,17510000,97.69 +1971-12-09,96.96,96.96,96.96,96.96,14710000,96.96 +1971-12-08,96.87,97.65,96.08,96.92,16650000,96.92 +1971-12-07,96.51,97.35,95.40,96.87,15250000,96.87 +1971-12-06,97.06,98.17,96.07,96.51,17480000,96.51 +1971-12-03,95.84,97.57,95.36,97.06,16760000,97.06 +1971-12-02,95.44,96.59,94.73,95.84,17780000,95.84 +1971-12-01,93.99,96.12,93.95,95.44,21040000,95.44 +1971-11-30,93.41,94.43,92.51,93.99,18320000,93.99 +1971-11-29,92.04,94.90,92.04,93.41,18910000,93.41 +1971-11-26,90.33,92.19,90.27,91.94,10870000,91.94 +1971-11-24,90.16,91.14,89.73,90.33,11870000,90.33 +1971-11-23,90.79,91.10,89.34,90.16,16840000,90.16 +1971-11-22,91.61,92.12,90.51,90.79,11390000,90.79 +1971-11-19,92.13,92.38,90.95,91.61,12420000,91.61 +1971-11-18,92.85,93.62,91.88,92.13,13010000,92.13 +1971-11-17,92.71,93.35,91.80,92.85,12840000,92.85 +1971-11-16,91.81,93.15,91.21,92.71,13300000,92.71 +1971-11-15,92.12,92.69,91.38,91.81,9370000,91.81 +1971-11-12,92.12,92.90,90.93,92.12,14540000,92.12 +1971-11-11,93.41,93.54,91.64,92.12,13310000,92.12 +1971-11-10,94.46,94.84,93.10,93.41,13410000,93.41 +1971-11-09,94.39,95.31,93.94,94.46,12080000,94.46 +1971-11-08,94.46,94.97,93.78,94.39,8520000,94.39 +1971-11-05,94.79,95.01,93.64,94.46,10780000,94.46 +1971-11-04,94.91,96.08,94.37,94.79,15750000,94.79 +1971-11-03,93.27,95.31,93.27,94.91,14590000,94.91 +1971-11-02,92.80,93.73,91.84,93.18,13330000,93.18 +1971-11-01,94.23,94.43,92.48,92.80,10960000,92.80 +1971-10-29,93.96,94.71,93.28,94.23,11710000,94.23 +1971-10-28,93.79,94.75,92.96,93.96,15530000,93.96 +1971-10-27,94.74,94.99,93.39,93.79,13480000,93.79 +1971-10-26,95.02,95.02,94.38,94.74,13390000,94.74 +1971-10-25,95.57,95.76,94.57,95.10,7340000,95.10 +1971-10-22,95.60,96.83,94.97,95.57,14560000,95.57 +1971-10-21,95.65,96.33,94.59,95.60,14990000,95.60 +1971-10-20,97.00,97.45,95.23,95.65,16340000,95.65 +1971-10-19,97.35,97.66,96.05,97.00,13040000,97.00 +1971-10-18,97.79,98.33,96.98,97.35,10420000,97.35 +1971-10-15,98.13,98.45,97.03,97.79,13120000,97.79 +1971-10-14,99.03,99.25,97.74,98.13,12870000,98.13 +1971-10-13,99.57,100.08,98.61,99.03,13540000,99.03 +1971-10-12,99.21,100.20,98.62,99.57,14340000,99.57 +1971-10-11,99.36,99.62,98.58,99.21,7800000,99.21 +1971-10-08,100.02,100.30,98.87,99.36,13870000,99.36 +1971-10-07,99.82,100.96,99.42,100.02,17780000,100.02 +1971-10-06,99.11,100.13,98.49,99.82,15630000,99.82 +1971-10-05,99.21,99.78,98.34,99.11,12360000,99.11 +1971-10-04,98.93,100.04,98.62,99.21,14570000,99.21 +1971-10-01,98.34,99.49,97.96,98.93,13400000,98.93 +1971-09-30,97.90,98.97,97.48,98.34,13490000,98.34 +1971-09-29,97.88,98.51,97.29,97.90,8580000,97.90 +1971-09-28,97.62,98.55,97.12,97.88,11250000,97.88 +1971-09-27,98.15,98.41,96.97,97.62,10220000,97.62 +1971-09-24,98.38,99.35,97.78,98.15,13460000,98.15 +1971-09-23,98.47,99.12,97.61,98.38,13250000,98.38 +1971-09-22,99.34,99.72,98.15,98.47,14250000,98.47 +1971-09-21,99.68,100.08,98.71,99.34,10640000,99.34 +1971-09-20,99.96,100.40,99.14,99.68,9540000,99.68 +1971-09-17,99.66,100.52,99.26,99.96,11020000,99.96 +1971-09-16,99.77,100.35,99.07,99.66,10550000,99.66 +1971-09-15,99.34,100.24,98.79,99.77,11080000,99.77 +1971-09-14,100.07,100.35,98.99,99.34,11410000,99.34 +1971-09-13,100.42,100.84,99.49,100.07,10000000,100.07 +1971-09-10,100.80,101.01,99.69,100.42,11380000,100.42 +1971-09-09,101.34,101.88,100.38,100.80,15790000,100.80 +1971-09-08,101.15,101.94,100.52,101.34,14230000,101.34 +1971-09-07,100.69,102.25,100.43,101.15,17080000,101.15 +1971-09-03,99.29,100.93,99.10,100.69,14040000,100.69 +1971-09-02,99.07,99.80,98.52,99.29,10690000,99.29 +1971-09-01,99.03,99.84,98.50,99.07,10770000,99.07 +1971-08-31,99.52,99.76,98.32,99.03,10430000,99.03 +1971-08-30,100.48,100.89,99.17,99.52,11140000,99.52 +1971-08-27,100.24,101.22,99.76,100.48,12490000,100.48 +1971-08-26,100.41,101.12,99.40,100.24,13990000,100.24 +1971-08-25,100.40,101.51,99.77,100.41,18280000,100.41 +1971-08-24,99.25,101.02,99.15,100.40,18700000,100.40 +1971-08-23,98.33,99.96,98.09,99.25,13040000,99.25 +1971-08-20,98.16,98.94,97.52,98.33,11890000,98.33 +1971-08-19,98.60,99.07,97.35,98.16,14190000,98.16 +1971-08-18,99.99,100.19,98.06,98.60,20680000,98.60 +1971-08-17,98.76,101.00,98.49,99.99,26790000,99.99 +1971-08-16,97.90,100.96,97.90,98.76,31730000,98.76 +1971-08-13,96.00,96.53,95.19,95.69,9960000,95.69 +1971-08-12,94.81,96.50,94.81,96.00,15910000,96.00 +1971-08-11,93.54,95.06,93.35,94.66,11370000,94.66 +1971-08-10,93.53,94.13,92.81,93.54,9460000,93.54 +1971-08-09,94.25,94.55,93.17,93.53,8110000,93.53 +1971-08-06,94.09,94.91,93.63,94.25,9490000,94.25 +1971-08-05,93.89,94.89,93.33,94.09,12100000,94.09 +1971-08-04,94.51,95.34,93.35,93.89,15410000,93.89 +1971-08-03,95.96,96.11,94.06,94.51,13490000,94.51 +1971-08-02,95.58,96.76,95.22,95.96,11870000,95.96 +1971-07-30,96.02,96.78,95.08,95.58,12970000,95.58 +1971-07-29,97.07,97.22,95.37,96.02,14570000,96.02 +1971-07-28,97.78,98.15,96.51,97.07,13940000,97.07 +1971-07-27,98.14,98.99,97.42,97.78,11560000,97.78 +1971-07-26,98.94,99.47,96.67,98.14,9930000,98.14 +1971-07-23,99.11,99.60,98.26,98.94,12370000,98.94 +1971-07-22,99.28,99.82,98.50,99.11,12570000,99.11 +1971-07-21,99.32,100.00,98.74,99.28,11920000,99.28 +1971-07-20,98.93,100.01,98.60,99.32,12540000,99.32 +1971-07-19,99.11,99.57,98.11,98.93,11430000,98.93 +1971-07-16,99.28,100.35,98.64,99.11,13870000,99.11 +1971-07-15,99.22,100.48,98.76,99.28,13080000,99.28 +1971-07-14,99.50,99.83,98.23,99.22,14360000,99.22 +1971-07-13,100.82,101.06,99.07,99.50,13540000,99.50 +1971-07-12,100.69,101.52,100.19,100.82,12020000,100.82 +1971-07-09,100.34,101.33,99.86,100.69,12640000,100.69 +1971-07-08,100.04,101.03,99.59,100.34,13920000,100.34 +1971-07-07,99.76,100.83,99.25,100.04,14520000,100.04 +1971-07-06,99.78,100.35,99.10,99.76,10440000,99.76 +1971-07-02,99.78,100.31,99.09,99.78,9960000,99.78 +1971-07-01,99.16,100.65,99.16,99.78,13090000,99.78 +1971-06-30,98.82,100.29,98.68,98.70,15410000,98.70 +1971-06-29,97.74,99.39,97.61,98.82,14460000,98.82 +1971-06-28,97.99,98.48,97.02,97.74,9810000,97.74 +1971-06-25,98.13,98.66,97.33,97.99,10580000,97.99 +1971-06-24,98.41,99.00,97.59,98.13,11360000,98.13 +1971-06-23,97.59,98.95,97.36,98.41,12640000,98.41 +1971-06-22,97.87,98.66,96.92,97.59,15200000,97.59 +1971-06-21,98.97,99.18,97.22,97.87,16490000,97.87 +1971-06-18,100.50,100.63,98.65,98.97,15040000,98.97 +1971-06-17,100.52,101.37,99.87,100.50,13980000,100.50 +1971-06-16,100.32,101.29,99.68,100.52,14300000,100.52 +1971-06-15,100.22,101.10,99.45,100.32,13550000,100.32 +1971-06-14,101.07,101.28,99.78,100.22,11530000,100.22 +1971-06-11,100.64,101.71,100.18,101.07,12270000,101.07 +1971-06-10,100.29,101.23,99.78,100.64,12450000,100.64 +1971-06-09,100.32,100.97,99.28,100.29,14250000,100.29 +1971-06-08,101.09,101.50,99.91,100.32,13610000,100.32 +1971-06-07,101.30,102.02,100.55,101.09,13800000,101.09 +1971-06-04,101.01,101.88,100.43,101.30,14400000,101.30 +1971-06-03,100.96,102.07,100.30,101.01,18790000,101.01 +1971-06-02,100.20,101.53,99.89,100.96,17740000,100.96 +1971-06-01,99.63,100.76,99.22,100.20,11930000,100.20 +1971-05-28,99.40,100.17,98.68,99.63,11760000,99.63 +1971-05-27,99.59,100.14,98.78,99.40,12610000,99.40 +1971-05-26,99.47,100.49,98.93,99.59,13550000,99.59 +1971-05-25,100.13,100.39,98.73,99.47,16050000,99.47 +1971-05-24,100.99,101.24,99.72,100.13,12060000,100.13 +1971-05-21,101.31,101.84,100.41,100.99,12090000,100.99 +1971-05-20,101.07,102.17,100.61,101.31,11740000,101.31 +1971-05-19,100.83,101.75,100.30,101.07,17640000,101.07 +1971-05-18,100.69,101.62,99.68,100.83,17640000,100.83 +1971-05-17,102.08,102.08,100.25,100.69,15980000,100.69 +1971-05-14,102.69,103.17,101.65,102.21,16430000,102.21 +1971-05-13,102.90,103.57,101.98,102.69,17640000,102.69 +1971-05-12,102.62,103.57,102.12,102.90,15140000,102.90 +1971-05-11,102.36,103.37,101.50,102.62,17730000,102.62 +1971-05-10,102.87,103.15,101.71,102.36,12810000,102.36 +1971-05-07,103.23,103.50,101.86,102.87,16490000,102.87 +1971-05-06,103.78,104.42,102.80,103.23,19300000,103.23 +1971-05-05,103.79,104.28,102.68,103.78,17270000,103.78 +1971-05-04,103.29,104.36,102.71,103.79,17310000,103.79 +1971-05-03,103.95,104.11,102.37,103.29,16120000,103.29 +1971-04-30,104.63,104.96,103.25,103.95,17490000,103.95 +1971-04-29,104.77,105.58,103.90,104.63,20340000,104.63 +1971-04-28,104.59,105.60,103.85,104.77,24820000,104.77 +1971-04-27,103.94,105.07,103.23,104.59,21250000,104.59 +1971-04-26,104.05,104.83,103.19,103.94,18860000,103.94 +1971-04-23,103.56,104.63,102.79,104.05,20150000,104.05 +1971-04-22,103.36,104.27,102.58,103.56,19270000,103.56 +1971-04-21,103.61,104.16,102.55,103.36,17040000,103.36 +1971-04-20,104.01,104.58,103.06,103.61,17880000,103.61 +1971-04-19,103.49,104.63,103.09,104.01,17730000,104.01 +1971-04-16,103.52,104.18,102.68,103.49,18280000,103.49 +1971-04-15,103.37,104.40,102.76,103.52,22540000,103.52 +1971-04-14,102.98,104.01,102.28,103.37,19440000,103.37 +1971-04-13,102.88,103.96,102.25,102.98,23200000,102.98 +1971-04-12,102.10,103.54,101.75,102.88,19410000,102.88 +1971-04-08,101.98,102.86,101.30,102.10,17590000,102.10 +1971-04-07,101.51,102.87,101.13,101.98,22270000,101.98 +1971-04-06,100.79,102.11,100.30,101.51,19990000,101.51 +1971-04-05,100.56,101.41,99.88,100.79,16040000,100.79 +1971-04-02,100.39,101.23,99.86,100.56,14520000,100.56 +1971-04-01,100.31,100.99,99.63,100.39,13470000,100.39 +1971-03-31,100.26,101.05,99.69,100.31,17610000,100.31 +1971-03-30,100.03,100.86,99.41,100.26,15430000,100.26 +1971-03-29,99.95,100.74,99.36,100.03,13650000,100.03 +1971-03-26,99.61,100.65,99.18,99.95,15560000,99.95 +1971-03-25,99.62,100.03,98.36,99.61,15870000,99.61 +1971-03-24,100.28,100.63,99.15,99.62,15770000,99.62 +1971-03-23,100.62,101.06,99.62,100.28,16470000,100.28 +1971-03-22,101.01,101.46,100.08,100.62,14290000,100.62 +1971-03-19,101.19,101.74,100.35,101.01,15150000,101.01 +1971-03-18,101.12,102.03,100.43,101.19,17910000,101.19 +1971-03-17,101.21,101.66,99.98,101.12,17070000,101.12 +1971-03-16,100.71,101.94,100.36,101.21,22270000,101.21 +1971-03-15,99.57,101.15,99.12,100.71,18920000,100.71 +1971-03-12,99.39,100.09,98.64,99.57,14680000,99.57 +1971-03-11,99.30,100.29,98.57,99.39,19830000,99.39 +1971-03-10,99.46,100.10,98.63,99.30,17220000,99.30 +1971-03-09,99.38,100.31,98.72,99.46,20490000,99.46 +1971-03-08,98.96,99.44,98.42,99.38,19340000,99.38 +1971-03-05,97.92,99.49,97.82,98.96,22430000,98.96 +1971-03-04,96.95,98.38,96.90,97.92,17350000,97.92 +1971-03-03,96.98,97.54,96.30,96.95,14680000,96.95 +1971-03-02,97.00,97.60,96.32,96.98,14870000,96.98 +1971-03-01,96.75,97.48,96.11,97.00,13020000,97.00 +1971-02-26,96.96,97.54,95.84,96.75,17250000,96.75 +1971-02-25,96.73,97.71,96.08,96.96,16200000,96.96 +1971-02-24,96.09,97.34,95.86,96.73,15930000,96.73 +1971-02-23,95.72,96.67,94.92,96.09,15080000,96.09 +1971-02-22,96.65,96.65,94.97,95.72,15840000,95.72 +1971-02-19,97.56,97.79,96.25,96.74,17860000,96.74 +1971-02-18,98.20,98.60,96.96,97.56,16650000,97.56 +1971-02-17,98.66,99.32,97.32,98.20,18720000,98.20 +1971-02-16,98.43,99.59,97.85,98.66,21350000,98.66 +1971-02-12,97.91,98.96,97.56,98.43,18470000,98.43 +1971-02-11,97.39,98.49,96.99,97.91,19260000,97.91 +1971-02-10,97.51,97.97,96.23,97.39,19040000,97.39 +1971-02-09,97.45,98.50,96.90,97.51,28250000,97.51 +1971-02-08,96.93,98.04,96.13,97.45,25590000,97.45 +1971-02-05,96.62,97.58,95.84,96.93,20480000,96.93 +1971-02-04,96.63,97.26,95.69,96.62,20860000,96.62 +1971-02-03,96.43,97.19,95.58,96.63,21680000,96.63 +1971-02-02,96.42,97.19,95.60,96.43,22030000,96.43 +1971-02-01,95.88,97.05,95.38,96.42,20650000,96.42 +1971-01-29,95.21,96.49,94.79,95.88,20960000,95.88 +1971-01-28,94.89,95.78,94.12,95.21,18840000,95.21 +1971-01-27,95.59,95.78,93.96,94.89,20640000,94.89 +1971-01-26,95.28,96.36,94.69,95.59,21380000,95.59 +1971-01-25,94.88,95.93,94.16,95.28,19050000,95.28 +1971-01-22,94.19,95.53,93.96,94.88,21680000,94.88 +1971-01-21,93.78,94.69,93.15,94.19,19060000,94.19 +1971-01-20,93.76,94.53,93.07,93.78,18330000,93.78 +1971-01-19,93.41,94.28,92.85,93.76,15800000,93.76 +1971-01-18,93.03,94.11,92.63,93.41,15400000,93.41 +1971-01-15,92.80,93.94,92.25,93.03,18010000,93.03 +1971-01-14,92.56,93.36,91.67,92.80,17600000,92.80 +1971-01-13,92.72,93.66,91.88,92.56,19070000,92.56 +1971-01-12,91.98,93.28,91.63,92.72,17820000,92.72 +1971-01-11,92.19,92.67,90.99,91.98,14720000,91.98 +1971-01-08,92.38,93.02,91.60,92.19,14100000,92.19 +1971-01-07,92.35,93.26,91.75,92.38,16460000,92.38 +1971-01-06,91.80,93.00,91.50,92.35,16960000,92.35 +1971-01-05,91.15,92.28,90.69,91.80,12600000,91.80 +1971-01-04,92.15,92.19,90.64,91.15,10010000,91.15 +1970-12-31,92.27,92.79,91.36,92.15,13390000,92.15 +1970-12-30,92.08,92.99,91.60,92.27,19140000,92.27 +1970-12-29,91.09,92.38,90.73,92.08,17750000,92.08 +1970-12-28,90.61,91.49,90.28,91.09,12290000,91.09 +1970-12-24,90.10,91.08,89.81,90.61,12140000,90.61 +1970-12-23,90.04,90.86,89.35,90.10,15400000,90.10 +1970-12-22,89.94,90.84,89.35,90.04,14510000,90.04 +1970-12-21,90.22,90.77,89.36,89.94,12690000,89.94 +1970-12-18,90.04,90.77,89.42,90.22,14360000,90.22 +1970-12-17,89.72,90.61,89.31,90.04,13660000,90.04 +1970-12-16,89.66,90.22,88.77,89.72,14240000,89.72 +1970-12-15,89.80,90.32,88.93,89.66,13420000,89.66 +1970-12-14,90.26,90.81,89.28,89.80,13810000,89.80 +1970-12-11,89.92,90.93,89.44,90.26,15790000,90.26 +1970-12-10,89.54,90.87,89.01,89.92,14610000,89.92 +1970-12-09,89.47,90.03,88.48,89.54,13550000,89.54 +1970-12-08,89.94,90.47,88.87,89.47,14370000,89.47 +1970-12-07,89.46,90.39,88.76,89.94,15530000,89.94 +1970-12-04,88.90,89.89,88.12,89.46,15980000,89.46 +1970-12-03,88.48,89.87,88.11,88.90,20480000,88.90 +1970-12-02,87.47,88.83,86.72,88.48,17960000,88.48 +1970-12-01,87.20,88.61,86.11,87.47,20170000,87.47 +1970-11-30,85.93,87.60,85.79,87.20,17700000,87.20 +1970-11-27,85.09,86.21,84.67,85.93,10130000,85.93 +1970-11-25,84.78,85.70,84.35,85.09,13490000,85.09 +1970-11-24,84.24,85.18,83.59,84.78,12560000,84.78 +1970-11-23,83.72,84.92,83.47,84.24,12720000,84.24 +1970-11-20,82.91,84.06,82.49,83.72,10920000,83.72 +1970-11-19,82.79,83.48,82.23,82.91,9280000,82.91 +1970-11-18,83.47,83.53,82.41,82.79,9850000,82.79 +1970-11-17,83.24,84.17,82.81,83.47,9450000,83.47 +1970-11-16,83.37,83.75,82.34,83.24,9160000,83.24 +1970-11-13,84.15,84.33,82.92,83.37,11890000,83.37 +1970-11-12,85.03,85.54,83.81,84.15,12520000,84.15 +1970-11-11,84.79,86.24,84.69,85.03,13520000,85.03 +1970-11-10,84.67,85.69,84.18,84.79,12030000,84.79 +1970-11-09,84.22,85.27,83.82,84.67,10890000,84.67 +1970-11-06,84.10,84.73,83.55,84.22,9970000,84.22 +1970-11-05,84.39,84.79,83.53,84.10,10800000,84.10 +1970-11-04,84.22,85.26,83.82,84.39,12180000,84.39 +1970-11-03,83.51,84.77,83.21,84.22,11760000,84.22 +1970-11-02,83.25,83.99,82.66,83.51,9470000,83.51 +1970-10-30,83.36,83.80,82.52,83.25,10520000,83.25 +1970-10-29,83.43,84.10,82.82,83.36,10440000,83.36 +1970-10-28,83.12,83.81,82.29,83.43,10660000,83.43 +1970-10-27,83.31,83.73,82.52,83.12,9680000,83.12 +1970-10-26,83.77,84.26,82.89,83.31,9200000,83.31 +1970-10-23,83.38,84.30,82.91,83.77,10270000,83.77 +1970-10-22,83.66,84.04,82.77,83.38,9000000,83.38 +1970-10-21,83.64,84.72,83.21,83.66,11330000,83.66 +1970-10-20,83.15,84.19,82.62,83.64,10630000,83.64 +1970-10-19,84.28,84.29,82.81,83.15,9890000,83.15 +1970-10-16,84.65,85.21,83.83,84.28,11300000,84.28 +1970-10-15,84.19,85.28,83.82,84.65,11250000,84.65 +1970-10-14,84.06,84.83,83.42,84.19,9920000,84.19 +1970-10-13,84.17,84.70,83.24,84.06,9500000,84.06 +1970-10-12,85.05,85.05,83.58,84.17,8570000,84.17 +1970-10-09,85.95,86.25,84.54,85.08,13980000,85.08 +1970-10-08,86.89,87.37,85.55,85.95,14500000,85.95 +1970-10-07,86.85,87.47,85.55,86.89,15610000,86.89 +1970-10-06,86.47,87.75,86.04,86.85,20240000,86.85 +1970-10-05,85.16,86.99,85.01,86.47,19760000,86.47 +1970-10-02,84.32,85.56,84.06,85.16,15420000,85.16 +1970-10-01,84.30,84.70,83.46,84.32,9700000,84.32 +1970-09-30,83.86,84.99,82.78,84.30,14830000,84.30 +1970-09-29,83.91,84.57,83.11,83.86,17880000,83.86 +1970-09-28,82.83,84.56,82.61,83.91,14390000,83.91 +1970-09-25,81.66,83.60,81.41,82.83,20470000,82.83 +1970-09-24,81.91,82.24,80.82,81.66,21340000,81.66 +1970-09-23,81.86,83.15,81.52,81.91,16940000,81.91 +1970-09-22,81.91,82.24,80.82,81.86,12110000,81.86 +1970-09-21,82.62,83.15,81.52,81.91,12540000,81.91 +1970-09-18,82.29,83.50,81.77,82.62,15900000,82.62 +1970-09-17,81.79,83.09,81.51,82.29,15530000,82.29 +1970-09-16,81.36,82.57,80.61,81.79,12090000,81.79 +1970-09-15,82.07,82.11,80.75,81.36,9830000,81.36 +1970-09-14,82.52,83.13,81.43,82.07,11900000,82.07 +1970-09-11,82.30,83.19,81.81,82.52,12140000,82.52 +1970-09-10,82.79,82.98,81.62,82.30,11900000,82.30 +1970-09-09,83.04,83.78,81.90,82.79,16250000,82.79 +1970-09-08,82.83,83.69,81.48,83.04,17110000,83.04 +1970-09-04,82.09,83.42,81.79,82.83,15360000,82.83 +1970-09-03,80.96,82.63,80.88,82.09,14110000,82.09 +1970-09-02,80.95,81.35,79.95,80.96,9710000,80.96 +1970-09-01,81.52,81.80,80.43,80.95,10960000,80.95 +1970-08-31,81.86,82.33,80.95,81.52,10740000,81.52 +1970-08-28,81.08,82.47,80.69,81.86,13820000,81.86 +1970-08-27,81.21,81.91,80.13,81.08,12440000,81.08 +1970-08-26,81.12,82.26,80.60,81.21,15970000,81.21 +1970-08-25,80.99,81.81,79.69,81.12,17520000,81.12 +1970-08-24,79.41,81.62,79.41,80.99,18910000,80.99 +1970-08-21,77.84,79.60,77.46,79.24,13420000,79.24 +1970-08-20,76.96,77.99,76.30,77.84,10170000,77.84 +1970-08-19,76.20,77.58,76.01,76.96,9870000,76.96 +1970-08-18,75.33,76.79,75.30,76.20,9500000,76.20 +1970-08-17,75.18,75.79,74.52,75.33,6940000,75.33 +1970-08-14,74.76,75.74,74.39,75.18,7850000,75.18 +1970-08-13,75.42,75.69,74.13,74.76,8640000,74.76 +1970-08-12,75.82,76.24,75.04,75.42,7440000,75.42 +1970-08-11,76.20,76.33,75.16,75.82,7330000,75.82 +1970-08-10,77.28,77.40,75.72,76.20,7580000,76.20 +1970-08-07,77.08,78.09,76.46,77.28,9370000,77.28 +1970-08-06,77.18,77.68,76.39,77.08,7560000,77.08 +1970-08-05,77.19,77.86,76.59,77.18,7660000,77.18 +1970-08-04,77.02,77.56,76.12,77.19,8310000,77.19 +1970-08-03,78.05,78.24,76.56,77.02,7650000,77.02 +1970-07-31,78.07,79.03,77.44,78.05,11640000,78.05 +1970-07-30,78.04,78.66,77.36,78.07,10430000,78.07 +1970-07-29,77.77,78.81,77.28,78.04,12580000,78.04 +1970-07-28,77.65,78.35,76.96,77.77,9040000,77.77 +1970-07-27,77.82,78.27,77.07,77.65,7460000,77.65 +1970-07-24,78.00,78.48,76.96,77.82,9520000,77.82 +1970-07-23,77.03,78.51,76.46,78.00,12460000,78.00 +1970-07-22,76.98,78.20,76.22,77.03,12460000,77.03 +1970-07-21,77.79,77.94,76.39,76.98,9940000,76.98 +1970-07-20,77.69,78.72,77.04,77.79,11660000,77.79 +1970-07-17,76.37,78.23,76.37,77.69,13870000,77.69 +1970-07-16,75.23,77.09,75.12,76.34,12200000,76.34 +1970-07-15,74.42,75.68,74.06,75.23,8860000,75.23 +1970-07-14,74.55,75.04,73.78,74.42,7360000,74.42 +1970-07-13,74.45,75.37,73.83,74.55,7450000,74.55 +1970-07-10,74.06,75.21,73.49,74.45,10160000,74.45 +1970-07-09,73.00,74.77,72.88,74.06,12820000,74.06 +1970-07-08,71.23,73.30,70.99,73.00,10970000,73.00 +1970-07-07,71.78,72.32,70.69,71.23,10470000,71.23 +1970-07-06,72.92,73.12,71.38,71.78,9340000,71.78 +1970-07-02,72.94,73.92,72.43,72.92,8440000,72.92 +1970-07-01,72.72,73.66,72.11,72.94,8610000,72.94 +1970-06-30,72.89,73.89,72.25,72.72,9280000,72.72 +1970-06-29,73.47,73.86,72.34,72.89,8770000,72.89 +1970-06-26,74.02,74.68,73.09,73.47,9160000,73.47 +1970-06-25,73.97,74.93,73.30,74.02,8200000,74.02 +1970-06-24,74.76,75.42,73.40,73.97,12630000,73.97 +1970-06-23,76.64,76.83,74.52,74.76,10790000,74.76 +1970-06-22,77.05,77.43,75.61,76.64,8700000,76.64 +1970-06-19,76.51,78.05,76.31,77.05,10980000,77.05 +1970-06-18,76.00,77.17,74.99,76.51,8870000,76.51 +1970-06-17,76.15,78.04,75.63,76.00,9870000,76.00 +1970-06-16,74.58,76.76,74.21,76.15,11330000,76.15 +1970-06-15,73.88,75.27,73.67,74.58,6920000,74.58 +1970-06-12,74.45,74.84,73.25,73.88,8890000,73.88 +1970-06-11,75.48,75.52,73.96,74.45,7770000,74.45 +1970-06-10,76.25,76.62,74.92,75.48,7240000,75.48 +1970-06-09,76.29,79.96,75.58,76.25,7050000,76.25 +1970-06-08,76.17,77.37,75.30,76.29,8040000,76.29 +1970-06-05,77.36,77.48,75.25,76.17,12450000,76.17 +1970-06-04,78.52,79.42,76.99,77.36,14380000,77.36 +1970-06-03,77.84,79.22,76.97,78.52,16600000,78.52 +1970-06-02,77.84,78.73,76.51,77.84,13480000,77.84 +1970-06-01,76.55,78.40,75.84,77.84,15020000,77.84 +1970-05-29,74.61,76.92,73.53,76.55,14630000,76.55 +1970-05-28,72.77,75.44,72.59,74.61,18910000,74.61 +1970-05-27,69.37,73.22,69.37,72.77,17460000,72.77 +1970-05-26,70.25,71.17,68.61,69.29,17030000,69.29 +1970-05-25,72.16,72.16,69.92,70.25,12660000,70.25 +1970-05-22,72.16,73.42,71.42,72.25,12170000,72.25 +1970-05-21,73.51,73.51,70.94,72.16,16710000,72.16 +1970-05-20,75.35,75.35,73.25,73.52,13020000,73.52 +1970-05-19,76.96,77.20,75.21,75.46,9480000,75.46 +1970-05-18,76.90,77.68,76.07,76.96,8280000,76.96 +1970-05-15,75.44,77.42,74.59,76.90,14570000,76.90 +1970-05-14,76.53,76.64,74.03,75.44,13920000,75.44 +1970-05-13,77.75,77.75,75.92,76.53,10720000,76.53 +1970-05-12,78.60,79.15,77.06,77.85,10850000,77.85 +1970-05-11,79.44,79.72,78.29,78.60,6650000,78.60 +1970-05-08,79.83,80.15,78.71,79.44,6930000,79.44 +1970-05-07,79.47,80.60,78.89,79.83,9530000,79.83 +1970-05-06,78.60,80.91,78.23,79.47,14380000,79.47 +1970-05-05,79.37,79.83,78.02,78.60,10580000,78.60 +1970-05-04,81.28,81.28,78.85,79.37,11450000,79.37 +1970-05-01,81.52,82.32,80.27,81.44,8290000,81.44 +1970-04-30,81.81,82.57,80.76,81.52,9880000,81.52 +1970-04-29,80.27,83.23,79.31,81.81,15800000,81.81 +1970-04-28,81.46,82.16,79.86,80.27,12620000,80.27 +1970-04-27,82.77,83.08,81.08,81.46,10240000,81.46 +1970-04-24,83.04,83.62,81.96,82.77,10410000,82.77 +1970-04-23,84.27,84.30,82.61,83.04,11050000,83.04 +1970-04-22,85.38,85.51,83.84,84.27,10780000,84.27 +1970-04-21,85.83,86.54,84.99,85.38,8490000,85.38 +1970-04-20,85.67,86.36,84.99,85.83,8280000,85.83 +1970-04-17,85.88,86.36,84.75,85.67,10990000,85.67 +1970-04-16,86.73,87.13,85.51,85.88,10250000,85.88 +1970-04-15,86.89,87.71,86.53,86.73,9410000,86.73 +1970-04-14,87.64,87.73,86.01,86.89,10840000,86.89 +1970-04-13,88.24,88.67,87.15,87.64,8810000,87.64 +1970-04-10,88.53,89.14,87.82,88.24,10020000,88.24 +1970-04-09,88.49,89.32,87.96,88.53,9060000,88.53 +1970-04-08,88.52,89.09,87.83,88.49,9070000,88.49 +1970-04-07,88.76,89.31,87.94,88.52,8490000,88.52 +1970-04-06,89.39,89.61,88.15,88.76,8380000,88.76 +1970-04-03,89.79,90.16,88.81,89.39,9920000,89.39 +1970-04-02,90.07,90.70,89.28,89.79,10520000,89.79 +1970-04-01,89.63,90.62,89.30,90.07,9810000,90.07 +1970-03-31,89.63,90.17,88.85,89.63,8370000,89.63 +1970-03-30,89.92,90.41,88.91,89.63,9600000,89.63 +1970-03-26,89.77,90.65,89.18,89.92,11350000,89.92 +1970-03-25,88.11,91.07,88.11,89.77,17500000,89.77 +1970-03-24,86.99,88.43,86.90,87.98,8840000,87.98 +1970-03-23,87.06,87.64,86.19,86.99,7330000,86.99 +1970-03-20,87.42,87.77,86.43,87.06,7910000,87.06 +1970-03-19,87.54,88.20,86.88,87.42,8930000,87.42 +1970-03-18,87.29,88.28,86.93,87.54,9790000,87.54 +1970-03-17,86.91,87.86,86.36,87.29,9090000,87.29 +1970-03-16,87.86,87.97,86.39,86.91,8910000,86.91 +1970-03-13,88.33,89.43,87.29,87.86,9560000,87.86 +1970-03-12,88.69,89.09,87.68,88.33,9140000,88.33 +1970-03-11,88.75,89.58,88.11,88.69,9180000,88.69 +1970-03-10,88.51,89.41,87.89,88.75,9450000,88.75 +1970-03-09,89.43,89.43,87.94,88.51,9760000,88.51 +1970-03-06,90.00,90.36,88.84,89.44,10980000,89.44 +1970-03-05,90.04,90.99,89.38,90.00,11370000,90.00 +1970-03-04,90.23,91.05,89.32,90.04,11850000,90.04 +1970-03-03,89.71,90.67,88.96,90.23,11700000,90.23 +1970-03-02,89.50,90.80,88.92,89.71,12270000,89.71 +1970-02-27,88.90,90.33,88.42,89.50,12890000,89.50 +1970-02-26,89.35,89.63,87.63,88.90,11540000,88.90 +1970-02-25,87.99,89.80,87.11,89.35,13210000,89.35 +1970-02-24,88.03,88.91,87.28,87.99,10810000,87.99 +1970-02-20,87.76,88.74,86.87,88.03,10790000,88.03 +1970-02-19,87.44,88.70,86.94,87.76,12890000,87.76 +1970-02-18,86.37,88.07,86.19,87.44,11950000,87.44 +1970-02-17,86.47,87.08,85.57,86.37,10140000,86.37 +1970-02-16,86.54,87.30,85.80,86.47,19780000,86.47 +1970-02-13,86.73,87.30,85.71,86.54,11060000,86.54 +1970-02-12,86.94,87.54,85.93,86.73,10010000,86.73 +1970-02-11,86.10,87.38,85.30,86.94,12260000,86.94 +1970-02-10,87.01,87.40,85.58,86.10,10110000,86.10 +1970-02-09,86.33,87.85,86.16,87.01,10830000,87.01 +1970-02-06,85.90,86.88,85.23,86.33,10150000,86.33 +1970-02-05,86.24,86.62,84.95,85.90,9430000,85.90 +1970-02-04,86.77,87.66,85.59,86.24,11040000,86.24 +1970-02-03,85.75,87.54,84.64,86.77,16050000,86.77 +1970-02-02,85.02,86.76,84.76,85.75,13440000,85.75 +1970-01-30,85.69,86.33,84.42,85.02,12320000,85.02 +1970-01-29,86.79,87.09,85.02,85.69,12210000,85.69 +1970-01-28,87.62,88.24,86.44,86.79,10510000,86.79 +1970-01-27,88.17,88.54,86.92,87.62,9630000,87.62 +1970-01-26,89.23,89.23,87.49,88.17,10670000,88.17 +1970-01-23,90.04,90.45,88.74,89.37,11000000,89.37 +1970-01-22,89.95,90.80,89.20,90.04,11050000,90.04 +1970-01-21,89.83,90.61,89.20,89.95,9880000,89.95 +1970-01-20,89.65,90.45,88.64,89.83,11050000,89.83 +1970-01-19,90.72,90.72,89.14,89.65,9500000,89.65 +1970-01-16,91.68,92.49,90.36,90.92,11940000,90.92 +1970-01-15,91.65,92.35,90.73,91.68,11120000,91.68 +1970-01-14,91.92,92.40,90.88,91.65,10380000,91.65 +1970-01-13,91.70,92.61,90.99,91.92,9870000,91.92 +1970-01-12,92.40,92.67,91.20,91.70,8900000,91.70 +1970-01-09,92.68,93.25,91.82,92.40,9380000,92.40 +1970-01-08,92.63,93.47,91.99,92.68,10670000,92.68 +1970-01-07,92.82,93.38,91.93,92.63,10010000,92.63 +1970-01-06,93.46,93.81,92.13,92.82,11460000,92.82 +1970-01-05,93.00,94.25,92.53,93.46,11490000,93.46 +1970-01-02,92.06,93.54,91.79,93.00,8050000,93.00 +1969-12-31,91.60,92.94,91.15,92.06,19380000,92.06 +1969-12-30,91.25,92.20,90.47,91.60,15790000,91.60 +1969-12-29,91.89,92.49,90.66,91.25,12500000,91.25 +1969-12-26,91.18,92.30,90.94,91.89,6750000,91.89 +1969-12-24,90.23,91.89,89.93,91.18,11670000,91.18 +1969-12-23,90.58,91.13,89.40,90.23,13890000,90.23 +1969-12-22,91.38,92.03,90.10,90.58,12680000,90.58 +1969-12-19,90.61,92.34,90.33,91.38,15420000,91.38 +1969-12-18,89.20,91.15,88.62,90.61,15950000,90.61 +1969-12-17,89.72,90.32,88.94,89.20,12840000,89.20 +1969-12-16,90.54,91.05,89.23,89.72,11880000,89.72 +1969-12-15,90.81,91.42,89.96,90.54,11100000,90.54 +1969-12-12,90.52,91.67,90.05,90.81,11630000,90.81 +1969-12-11,90.48,91.37,89.74,90.52,10430000,90.52 +1969-12-10,90.55,91.22,89.33,90.48,12590000,90.48 +1969-12-09,90.84,91.79,89.93,90.55,12290000,90.55 +1969-12-08,91.73,92.05,90.29,90.84,9990000,90.84 +1969-12-05,91.95,92.91,91.14,91.73,11150000,91.73 +1969-12-04,91.65,92.45,90.36,91.95,13230000,91.95 +1969-12-03,92.65,93.05,91.25,91.65,11300000,91.65 +1969-12-02,93.22,93.54,91.95,92.65,9940000,92.65 +1969-12-01,93.81,94.47,92.78,93.22,9950000,93.22 +1969-11-28,93.27,94.41,92.88,93.81,8550000,93.81 +1969-11-26,92.94,93.85,92.24,93.27,10630000,93.27 +1969-11-25,93.24,94.17,92.38,92.94,11560000,92.94 +1969-11-24,94.32,94.43,92.63,93.24,10940000,93.24 +1969-11-21,94.91,95.34,93.87,94.32,9840000,94.32 +1969-11-20,95.90,95.94,94.12,94.91,12010000,94.91 +1969-11-19,96.39,96.95,95.36,95.90,11240000,95.90 +1969-11-18,96.41,97.00,95.57,96.39,11010000,96.39 +1969-11-17,97.07,97.36,95.82,96.41,10120000,96.41 +1969-11-14,97.42,97.44,96.36,97.07,10580000,97.07 +1969-11-13,97.89,98.34,96.54,97.42,12090000,97.42 +1969-11-12,98.07,98.72,97.28,97.89,12480000,97.89 +1969-11-11,98.33,98.79,97.45,98.07,10080000,98.07 +1969-11-10,98.26,99.23,97.65,98.33,12490000,98.33 +1969-11-07,97.67,99.01,97.18,98.26,13280000,98.26 +1969-11-06,97.64,98.31,96.80,97.67,11110000,97.67 +1969-11-05,97.21,98.39,96.75,97.64,12110000,97.64 +1969-11-04,97.15,97.82,95.84,97.21,12340000,97.21 +1969-11-03,97.12,97.82,96.19,97.15,11140000,97.15 +1969-10-31,96.93,98.03,96.33,97.12,13100000,97.12 +1969-10-30,96.81,97.47,95.61,96.93,12820000,96.93 +1969-10-29,97.66,97.92,96.26,96.81,12380000,96.81 +1969-10-28,97.97,98.55,97.02,97.66,12410000,97.66 +1969-10-27,98.12,98.78,97.49,97.97,12160000,97.97 +1969-10-24,97.46,98.83,96.97,98.12,15430000,98.12 +1969-10-23,97.83,98.39,96.46,97.46,14780000,97.46 +1969-10-22,97.20,98.61,96.56,97.83,19320000,97.83 +1969-10-21,96.46,97.84,95.86,97.20,16460000,97.20 +1969-10-20,96.26,97.17,95.29,96.46,13540000,96.46 +1969-10-17,96.37,97.24,95.38,96.26,13740000,96.26 +1969-10-16,95.72,97.54,95.05,96.37,19500000,96.37 +1969-10-15,95.70,96.56,94.65,95.72,15740000,95.72 +1969-10-14,94.55,96.53,94.32,95.70,19950000,95.70 +1969-10-13,93.56,94.86,93.20,94.55,13620000,94.55 +1969-10-10,93.03,94.19,92.60,93.56,12210000,93.56 +1969-10-09,92.67,93.55,91.75,93.03,10420000,93.03 +1969-10-08,93.09,93.56,92.04,92.67,10370000,92.67 +1969-10-07,93.38,94.03,92.59,93.09,10050000,93.09 +1969-10-06,93.19,93.99,92.50,93.38,9180000,93.38 +1969-10-03,93.24,94.39,92.65,93.19,12410000,93.19 +1969-10-02,92.52,93.63,91.66,93.24,11430000,93.24 +1969-10-01,93.12,93.51,92.12,92.52,9090000,92.52 +1969-09-30,93.41,94.05,92.55,93.12,9180000,93.12 +1969-09-29,94.16,94.45,92.62,93.41,10170000,93.41 +1969-09-26,94.77,95.23,93.53,94.16,9680000,94.16 +1969-09-25,95.50,95.92,94.28,94.77,10690000,94.77 +1969-09-24,95.63,96.20,94.75,95.50,11320000,95.50 +1969-09-23,95.63,96.62,94.86,95.63,13030000,95.63 +1969-09-22,95.19,96.13,94.58,95.63,9280000,95.63 +1969-09-19,94.90,95.92,94.35,95.19,12270000,95.19 +1969-09-18,94.76,95.53,94.05,94.90,11170000,94.90 +1969-09-17,94.95,95.70,94.04,94.76,10980000,94.76 +1969-09-16,94.87,95.73,94.06,94.95,11160000,94.95 +1969-09-15,94.13,95.61,93.73,94.87,10680000,94.87 +1969-09-12,94.22,95.04,93.26,94.13,10800000,94.13 +1969-09-11,94.95,95.77,93.72,94.22,12370000,94.22 +1969-09-10,93.38,95.35,93.23,94.95,11490000,94.95 +1969-09-09,92.70,93.94,91.77,93.38,10980000,93.38 +1969-09-08,93.64,93.76,92.35,92.70,8310000,92.70 +1969-09-05,94.20,94.51,93.09,93.64,8890000,93.64 +1969-09-04,94.98,95.20,93.66,94.20,9380000,94.20 +1969-09-03,95.54,96.11,94.38,94.98,8760000,94.98 +1969-09-02,95.51,96.31,94.85,95.54,8560000,95.54 +1969-08-29,94.89,95.51,94.46,95.51,8850000,95.51 +1969-08-28,94.49,95.38,94.04,94.89,7730000,94.89 +1969-08-27,94.30,95.16,93.76,94.49,9100000,94.49 +1969-08-26,94.93,95.04,93.65,94.30,8910000,94.30 +1969-08-25,95.92,96.13,94.52,94.93,8410000,94.93 +1969-08-22,95.35,96.43,94.91,95.92,10140000,95.92 +1969-08-21,95.07,95.87,94.56,95.35,8420000,95.35 +1969-08-20,95.07,95.64,94.25,95.07,9680000,95.07 +1969-08-19,94.57,95.18,93.95,95.07,12640000,95.07 +1969-08-18,94.00,95.00,93.51,94.57,9420000,94.57 +1969-08-15,93.34,94.50,92.92,94.00,10210000,94.00 +1969-08-14,92.70,93.87,92.32,93.34,9690000,93.34 +1969-08-13,92.63,93.26,91.48,92.70,9910000,92.70 +1969-08-12,93.36,93.66,92.19,92.63,7870000,92.63 +1969-08-11,93.94,94.24,92.77,93.36,6680000,93.36 +1969-08-08,93.99,94.63,93.29,93.94,8760000,93.94 +1969-08-07,93.92,94.77,93.17,93.99,9450000,93.99 +1969-08-06,93.41,94.76,93.02,93.92,11100000,93.92 +1969-08-05,92.99,94.02,92.13,93.41,8940000,93.41 +1969-08-04,93.47,94.42,92.29,92.99,10700000,92.99 +1969-08-01,91.92,94.19,91.92,93.47,15070000,93.47 +1969-07-31,89.96,92.40,89.96,91.83,14160000,91.83 +1969-07-30,89.48,90.82,88.04,89.93,15580000,89.93 +1969-07-29,90.21,91.56,89.06,89.48,13630000,89.48 +1969-07-28,91.91,91.91,89.83,90.21,11800000,90.21 +1969-07-25,92.80,93.28,91.54,92.06,9800000,92.06 +1969-07-24,93.12,93.87,92.29,92.80,9750000,92.80 +1969-07-23,93.52,93.99,92.07,93.12,11680000,93.12 +1969-07-22,94.95,95.45,93.15,93.52,9780000,93.52 +1969-07-18,95.76,95.84,94.18,94.95,8590000,94.95 +1969-07-17,95.18,96.71,95.07,95.76,10450000,95.76 +1969-07-16,94.24,95.83,94.22,95.18,10470000,95.18 +1969-07-15,94.55,95.00,93.11,94.24,11110000,94.24 +1969-07-14,95.77,96.17,94.20,94.55,8310000,94.55 +1969-07-11,95.38,96.65,94.81,95.77,11730000,95.77 +1969-07-10,96.88,97.04,95.03,95.38,11450000,95.38 +1969-07-09,97.63,97.85,96.33,96.88,9320000,96.88 +1969-07-08,98.98,98.98,97.15,97.63,9320000,97.63 +1969-07-07,99.61,100.33,98.45,99.03,9970000,99.03 +1969-07-03,98.94,100.25,98.62,99.61,10110000,99.61 +1969-07-02,98.08,99.50,97.81,98.94,11350000,98.94 +1969-07-01,97.71,98.66,97.13,98.08,9890000,98.08 +1969-06-30,97.33,98.64,96.82,97.71,8640000,97.71 +1969-06-27,97.25,98.15,96.65,97.33,9020000,97.33 +1969-06-26,97.01,97.91,95.97,97.25,10310000,97.25 +1969-06-25,97.32,98.30,96.56,97.01,10490000,97.01 +1969-06-24,96.29,98.04,96.29,97.32,11460000,97.32 +1969-06-23,96.67,97.17,95.21,96.23,12900000,96.23 +1969-06-20,97.24,98.22,96.29,96.67,11360000,96.67 +1969-06-19,97.81,98.38,96.61,97.24,11160000,97.24 +1969-06-18,97.95,99.20,97.45,97.81,11290000,97.81 +1969-06-17,98.32,98.71,96.88,97.95,12210000,97.95 +1969-06-16,98.65,99.64,97.91,98.32,10400000,98.32 +1969-06-13,98.26,99.51,97.59,98.65,13070000,98.65 +1969-06-12,99.05,99.78,97.96,98.26,11790000,98.26 +1969-06-11,100.42,100.71,99.02,99.05,13640000,99.05 +1969-06-10,101.20,101.76,100.02,100.42,10660000,100.42 +1969-06-09,102.12,102.16,100.54,101.20,10650000,101.20 +1969-06-06,102.76,103.41,101.68,102.12,12520000,102.12 +1969-06-05,102.59,103.45,102.05,102.76,12350000,102.76 +1969-06-04,102.63,103.45,102.07,102.59,10840000,102.59 +1969-06-03,102.94,103.60,102.09,102.63,11190000,102.63 +1969-06-02,103.46,103.75,102.40,102.94,9180000,102.94 +1969-05-29,103.26,104.27,102.76,103.46,11770000,103.46 +1969-05-28,103.57,103.91,102.29,103.26,11330000,103.26 +1969-05-27,104.36,104.68,103.12,103.57,10580000,103.57 +1969-05-26,104.59,105.14,103.80,104.36,9030000,104.36 +1969-05-23,104.60,105.32,103.78,104.59,10900000,104.59 +1969-05-22,104.47,105.66,103.92,104.60,13710000,104.60 +1969-05-21,104.04,105.03,103.37,104.47,12100000,104.47 +1969-05-20,104.97,105.16,103.56,104.04,10280000,104.04 +1969-05-19,105.94,106.15,104.52,104.97,9790000,104.97 +1969-05-16,105.85,106.59,105.18,105.94,12280000,105.94 +1969-05-15,106.16,106.69,105.08,105.85,11930000,105.85 +1969-05-14,105.34,106.74,105.07,106.16,14360000,106.16 +1969-05-13,104.89,105.91,104.31,105.34,12910000,105.34 +1969-05-12,105.05,105.65,104.12,104.89,10550000,104.89 +1969-05-09,105.10,106.01,104.35,105.05,12530000,105.05 +1969-05-08,104.67,105.74,104.10,105.10,13050000,105.10 +1969-05-07,104.86,105.59,103.83,104.67,14030000,104.67 +1969-05-06,104.37,105.50,103.84,104.86,14700000,104.86 +1969-05-05,104.00,105.08,103.48,104.37,13300000,104.37 +1969-05-02,103.51,104.63,102.98,104.00,13070000,104.00 +1969-05-01,103.69,104.59,102.74,103.51,14380000,103.51 +1969-04-30,102.79,104.56,102.50,103.69,19350000,103.69 +1969-04-29,102.03,103.31,101.51,102.79,14730000,102.79 +1969-04-28,101.72,102.65,100.97,102.03,11120000,102.03 +1969-04-25,101.27,102.29,100.81,101.72,12480000,101.72 +1969-04-24,100.80,101.80,100.21,101.27,11340000,101.27 +1969-04-23,100.78,101.77,100.15,100.80,12220000,100.80 +1969-04-22,100.56,101.29,99.52,100.78,10250000,100.78 +1969-04-21,101.24,101.68,100.11,100.56,10010000,100.56 +1969-04-18,100.78,102.09,100.30,101.24,10850000,101.24 +1969-04-17,100.63,101.41,99.99,100.78,9360000,100.78 +1969-04-16,101.53,101.78,100.16,100.63,9680000,100.63 +1969-04-15,101.57,102.15,100.76,101.53,9610000,101.53 +1969-04-14,101.65,102.40,101.02,101.57,8990000,101.57 +1969-04-11,101.55,102.28,100.97,101.65,10650000,101.65 +1969-04-10,101.02,102.22,100.73,101.55,12200000,101.55 +1969-04-09,100.14,101.44,99.88,101.02,12530000,101.02 +1969-04-08,99.89,101.27,99.35,100.14,9360000,100.14 +1969-04-07,100.63,100.63,99.08,99.89,9430000,99.89 +1969-04-03,100.78,101.30,99.87,100.68,10300000,100.68 +1969-04-02,101.42,101.65,100.61,100.78,10110000,100.78 +1969-04-01,101.51,102.45,100.84,101.42,12360000,101.42 +1969-03-28,101.10,102.35,100.73,101.51,12430000,101.51 +1969-03-27,100.39,101.81,100.03,101.10,11900000,101.10 +1969-03-26,99.66,100.86,99.24,100.39,11030000,100.39 +1969-03-25,99.50,100.30,98.88,99.66,9820000,99.66 +1969-03-24,99.63,100.16,98.85,99.50,8110000,99.50 +1969-03-21,99.84,100.37,98.88,99.63,9830000,99.63 +1969-03-20,99.21,100.39,98.90,99.84,10260000,99.84 +1969-03-19,98.49,99.70,98.03,99.21,9740000,99.21 +1969-03-18,98.25,99.41,97.83,98.49,11210000,98.49 +1969-03-17,98.00,98.71,97.06,98.25,9150000,98.25 +1969-03-14,98.39,98.70,97.40,98.00,8640000,98.00 +1969-03-13,99.05,99.35,97.82,98.39,10030000,98.39 +1969-03-12,99.32,99.87,98.35,99.05,8720000,99.05 +1969-03-11,98.99,100.14,98.58,99.32,9870000,99.32 +1969-03-10,98.65,99.47,97.87,98.99,8920000,98.99 +1969-03-07,98.70,99.13,97.32,98.65,10830000,98.65 +1969-03-06,99.71,99.93,98.11,98.70,9670000,98.70 +1969-03-05,99.32,100.48,98.95,99.71,11370000,99.71 +1969-03-04,98.38,99.76,98.17,99.32,9320000,99.32 +1969-03-03,98.13,99.08,97.61,98.38,8260000,98.38 +1969-02-28,98.14,99.02,97.53,98.13,8990000,98.13 +1969-02-27,98.45,99.00,97.50,98.14,9670000,98.14 +1969-02-26,97.98,99.10,97.36,98.45,9540000,98.45 +1969-02-25,98.60,99.65,97.50,97.98,9540000,97.98 +1969-02-24,99.79,100.07,98.09,98.60,12730000,98.60 +1969-02-20,100.65,101.03,99.29,99.79,10990000,99.79 +1969-02-19,101.40,102.07,100.30,100.65,10390000,100.65 +1969-02-18,102.27,102.27,100.58,101.40,12490000,101.40 +1969-02-17,103.61,104.03,102.04,102.44,11670000,102.44 +1969-02-14,103.71,104.37,102.88,103.61,11460000,103.61 +1969-02-13,103.63,104.36,102.86,103.71,12010000,103.71 +1969-02-12,103.65,104.34,102.98,103.63,11530000,103.63 +1969-02-11,103.53,104.61,102.96,103.65,12320000,103.65 +1969-02-07,103.54,104.22,102.50,103.53,12780000,103.53 +1969-02-06,103.20,104.30,102.55,103.54,12570000,103.54 +1969-02-05,102.92,103.84,102.26,103.20,13750000,103.20 +1969-02-04,102.89,103.59,102.15,102.92,12550000,102.92 +1969-02-03,103.01,103.75,102.04,102.89,12510000,102.89 +1969-01-31,102.55,103.64,102.08,103.01,12020000,103.01 +1969-01-30,102.51,103.33,101.73,102.55,13010000,102.55 +1969-01-29,102.41,103.31,101.69,102.51,11470000,102.51 +1969-01-28,102.40,103.30,101.56,102.41,12070000,102.41 +1969-01-27,102.38,103.15,101.64,102.40,11020000,102.40 +1969-01-24,102.43,103.23,101.71,102.38,12520000,102.38 +1969-01-23,101.98,103.21,101.57,102.43,13140000,102.43 +1969-01-22,101.63,102.55,101.06,101.98,11480000,101.98 +1969-01-21,101.69,102.40,100.88,101.63,10910000,101.63 +1969-01-20,102.03,102.60,101.00,101.69,10950000,101.69 +1969-01-17,102.18,103.06,101.32,102.03,11590000,102.03 +1969-01-16,101.62,103.25,101.27,102.18,13120000,102.18 +1969-01-15,101.13,102.48,100.78,101.62,11810000,101.62 +1969-01-14,100.44,101.63,99.04,101.13,10700000,101.13 +1969-01-13,100.93,101.35,96.63,100.44,11160000,100.44 +1969-01-10,101.22,102.14,100.32,100.93,12680000,100.93 +1969-01-09,100.80,102.09,100.35,101.22,12100000,101.22 +1969-01-08,101.22,102.12,100.14,100.80,13840000,100.80 +1969-01-07,102.47,102.68,100.15,101.22,15740000,101.22 +1969-01-06,103.99,104.36,101.94,102.47,12720000,102.47 +1969-01-03,103.93,104.87,103.17,103.99,12750000,103.99 +1969-01-02,103.86,104.85,103.21,103.93,9800000,103.93 +1968-12-31,103.80,104.61,102.98,103.86,13130000,103.86 +1968-12-30,104.74,104.99,103.09,103.80,12080000,103.80 +1968-12-27,105.15,105.87,104.20,104.74,11200000,104.74 +1968-12-26,105.04,106.03,104.29,105.15,9670000,105.15 +1968-12-24,105.21,105.95,104.37,105.04,11540000,105.04 +1968-12-23,106.34,106.68,104.61,105.21,12970000,105.21 +1968-12-20,106.97,107.98,105.73,106.34,15910000,106.34 +1968-12-19,106.66,107.67,105.10,106.97,19630000,106.97 +1968-12-17,107.10,107.65,105.86,106.66,14700000,106.66 +1968-12-16,107.58,108.40,106.40,107.10,15950000,107.10 +1968-12-13,107.32,108.50,106.56,107.58,16740000,107.58 +1968-12-12,107.39,108.43,106.33,107.32,18160000,107.32 +1968-12-10,107.66,108.33,106.68,107.39,14500000,107.39 +1968-12-09,107.93,108.77,106.89,107.66,15800000,107.66 +1968-12-06,107.67,108.91,106.85,107.93,15320000,107.93 +1968-12-05,108.02,108.90,106.71,107.67,19330000,107.67 +1968-12-03,108.12,108.74,107.02,108.02,15460000,108.02 +1968-12-02,108.37,109.37,107.15,108.12,15390000,108.12 +1968-11-29,107.76,109.09,107.32,108.37,14390000,108.37 +1968-11-27,107.26,108.55,106.59,107.76,16550000,107.76 +1968-11-26,106.48,107.93,106.11,107.26,16360000,107.26 +1968-11-25,106.30,107.29,105.47,106.48,14490000,106.48 +1968-11-22,105.97,106.89,105.21,106.30,15420000,106.30 +1968-11-21,106.14,106.77,104.85,105.97,18320000,105.97 +1968-11-19,105.92,106.84,105.06,106.14,15120000,106.14 +1968-11-18,105.78,106.74,105.05,105.92,14390000,105.92 +1968-11-15,105.20,106.44,104.61,105.78,15040000,105.78 +1968-11-14,105.13,106.01,104.34,105.20,14900000,105.20 +1968-11-13,104.62,105.76,104.08,105.13,15660000,105.13 +1968-11-12,103.95,105.28,103.51,104.62,17250000,104.62 +1968-11-08,103.50,104.59,102.96,103.95,14250000,103.95 +1968-11-07,103.27,104.47,102.31,103.50,11660000,103.50 +1968-11-06,103.10,104.41,102.45,103.27,12640000,103.27 +1968-11-04,103.06,103.69,101.85,103.10,10930000,103.10 +1968-11-01,103.41,104.30,102.36,103.06,14480000,103.06 +1968-10-31,103.30,104.57,102.43,103.41,17650000,103.41 +1968-10-29,103.90,104.50,102.65,103.30,12340000,103.30 +1968-10-28,104.20,104.89,103.16,103.90,11740000,103.90 +1968-10-25,103.84,104.81,103.14,104.20,14150000,104.20 +1968-10-24,104.57,105.15,103.15,103.84,18300000,103.84 +1968-10-22,104.99,105.48,103.84,104.57,13970000,104.57 +1968-10-21,104.82,105.78,104.09,104.99,14380000,104.99 +1968-10-18,104.01,105.34,103.54,104.82,15130000,104.82 +1968-10-17,103.81,105.01,103.81,104.01,21060000,104.01 +1968-10-15,103.32,104.25,102.66,103.53,13410000,103.53 +1968-10-14,103.18,104.03,102.48,103.32,11980000,103.32 +1968-10-11,103.29,103.90,102.39,103.18,12650000,103.18 +1968-10-10,103.74,104.30,102.61,103.29,17000000,103.29 +1968-10-08,103.70,104.45,102.84,103.74,14000000,103.74 +1968-10-07,103.71,104.40,102.93,103.70,12420000,103.70 +1968-10-04,103.22,104.35,102.65,103.71,15350000,103.71 +1968-10-03,102.86,104.13,102.34,103.22,21110000,103.22 +1968-10-01,102.67,103.58,101.80,102.86,15560000,102.86 +1968-09-30,102.31,103.29,101.71,102.67,13610000,102.67 +1968-09-27,102.36,103.07,101.36,102.31,13860000,102.31 +1968-09-26,102.59,103.63,101.59,102.36,18950000,102.36 +1968-09-24,102.24,103.21,101.59,102.59,15210000,102.59 +1968-09-23,101.66,102.82,101.20,102.24,11550000,102.24 +1968-09-20,101.59,102.37,100.81,101.66,14190000,101.66 +1968-09-19,101.50,102.53,100.84,101.59,17910000,101.59 +1968-09-17,101.24,102.18,100.64,101.50,13920000,101.50 +1968-09-16,100.86,102.01,100.33,101.24,13260000,101.24 +1968-09-13,100.52,101.53,99.89,100.86,13070000,100.86 +1968-09-12,100.73,101.40,99.70,100.52,14630000,100.52 +1968-09-10,101.23,101.81,100.12,100.73,11430000,100.73 +1968-09-09,101.20,102.09,100.47,101.23,11890000,101.23 +1968-09-06,100.74,101.88,100.23,101.20,13180000,101.20 +1968-09-05,100.02,101.34,99.63,100.74,12980000,100.74 +1968-09-04,99.32,100.49,98.95,100.02,10040000,100.02 +1968-09-03,98.86,99.89,98.31,99.32,8620000,99.32 +1968-08-30,98.74,99.52,98.20,98.86,8190000,98.86 +1968-08-29,98.81,99.49,97.90,98.74,10940000,98.74 +1968-08-27,98.94,99.61,98.16,98.81,9710000,98.81 +1968-08-26,98.69,99.67,98.29,98.94,9740000,98.94 +1968-08-23,98.70,99.57,97.71,98.69,9890000,98.69 +1968-08-22,98.96,99.58,97.71,98.70,15140000,98.70 +1968-08-20,99.00,99.65,98.08,98.96,10640000,98.96 +1968-08-19,98.68,99.64,98.16,99.00,9900000,99.00 +1968-08-16,98.07,99.21,97.62,98.68,9940000,98.68 +1968-08-15,98.53,99.36,97.48,98.07,12710000,98.07 +1968-08-13,98.01,99.20,97.68,98.53,12730000,98.53 +1968-08-12,97.01,98.49,96.72,98.01,10420000,98.01 +1968-08-09,97.04,97.56,96.11,97.01,8390000,97.01 +1968-08-08,97.25,98.32,96.58,97.04,12920000,97.04 +1968-08-06,96.85,97.82,96.42,97.25,9620000,97.25 +1968-08-05,96.63,97.51,95.95,96.85,8850000,96.85 +1968-08-02,97.28,97.47,95.79,96.63,9860000,96.63 +1968-08-01,97.74,98.82,96.78,97.28,14380000,97.28 +1968-07-30,97.65,98.62,96.84,97.74,10250000,97.74 +1968-07-29,98.34,98.78,96.89,97.65,10940000,97.65 +1968-07-26,97.94,99.14,97.22,98.34,11690000,98.34 +1968-07-25,99.21,100.07,97.43,97.94,16140000,97.94 +1968-07-23,99.33,99.93,97.89,99.21,13570000,99.21 +1968-07-22,100.46,100.88,98.51,99.33,13530000,99.33 +1968-07-19,101.44,101.82,99.80,100.46,14620000,100.46 +1968-07-18,101.70,102.65,100.49,101.44,17420000,101.44 +1968-07-16,102.26,102.72,100.97,101.70,13380000,101.70 +1968-07-15,102.34,103.15,101.44,102.26,13390000,102.26 +1968-07-12,102.39,103.24,101.39,102.34,14810000,102.34 +1968-07-11,102.23,103.67,101.41,102.39,20290000,102.39 +1968-07-09,101.94,102.93,101.19,102.23,16540000,102.23 +1968-07-08,100.91,102.76,100.72,101.94,16860000,101.94 +1968-07-03,99.74,101.36,99.60,100.91,14390000,100.91 +1968-07-02,99.40,100.60,98.60,99.74,13350000,99.74 +1968-07-01,99.58,100.33,98.77,99.40,11280000,99.40 +1968-06-28,99.98,100.63,98.91,99.58,12040000,99.58 +1968-06-27,100.08,101.01,99.11,99.98,15370000,99.98 +1968-06-25,100.39,101.10,99.28,100.08,13200000,100.08 +1968-06-24,100.66,101.48,99.66,100.39,12320000,100.39 +1968-06-21,101.51,101.59,99.80,100.66,13450000,100.66 +1968-06-20,99.99,101.60,99.52,101.51,16290000,101.51 +1968-06-18,100.13,101.09,99.43,99.99,13630000,99.99 +1968-06-17,101.13,101.71,99.43,100.13,12570000,100.13 +1968-06-14,101.25,101.82,99.98,101.13,14690000,101.13 +1968-06-13,101.66,102.84,100.55,101.25,21350000,101.25 +1968-06-11,101.41,102.40,100.74,101.66,15700000,101.66 +1968-06-10,101.27,102.25,100.42,101.41,14640000,101.41 +1968-06-07,100.65,101.89,100.24,101.27,17320000,101.27 +1968-06-06,99.89,101.59,99.50,100.65,16130000,100.65 +1968-06-05,100.38,101.13,99.26,99.89,15590000,99.89 +1968-06-04,99.99,101.26,99.32,100.38,18030000,100.38 +1968-06-03,98.72,100.62,98.72,99.99,14970000,99.99 +1968-05-31,97.92,99.40,97.66,98.68,13090000,98.68 +1968-05-29,97.62,98.74,97.01,97.92,14100000,97.92 +1968-05-28,96.99,98.20,96.41,97.62,13850000,97.62 +1968-05-27,97.15,97.81,96.29,96.99,12720000,96.99 +1968-05-24,96.97,97.73,96.21,97.15,13300000,97.15 +1968-05-23,97.18,97.79,96.38,96.97,12840000,96.97 +1968-05-22,96.93,98.17,96.47,97.18,14200000,97.18 +1968-05-21,96.45,97.52,95.92,96.93,13160000,96.93 +1968-05-20,96.90,97.41,95.80,96.45,11180000,96.45 +1968-05-17,97.60,97.81,96.11,96.90,11830000,96.90 +1968-05-16,98.07,98.69,97.05,97.60,13030000,97.60 +1968-05-15,98.12,98.79,97.32,98.07,13180000,98.07 +1968-05-14,98.19,98.85,97.33,98.12,13160000,98.12 +1968-05-13,98.50,99.10,97.52,98.19,11860000,98.19 +1968-05-10,98.39,99.30,97.76,98.50,11700000,98.50 +1968-05-09,98.91,99.47,97.68,98.39,12890000,98.39 +1968-05-08,98.90,99.74,98.25,98.91,13120000,98.91 +1968-05-07,98.35,99.59,97.86,98.90,13920000,98.90 +1968-05-06,98.66,99.11,97.27,98.35,12160000,98.35 +1968-05-03,98.59,100.19,97.98,98.66,17990000,98.66 +1968-05-02,97.97,99.18,97.53,98.59,14260000,98.59 +1968-05-01,97.46,98.61,96.84,97.97,14440000,97.97 +1968-04-30,97.97,98.17,96.58,97.46,14380000,97.46 +1968-04-29,97.21,98.61,96.81,97.97,12030000,97.97 +1968-04-26,96.62,97.83,96.22,97.21,13500000,97.21 +1968-04-25,96.92,97.48,95.68,96.62,14430000,96.62 +1968-04-24,96.62,97.81,95.98,96.92,14810000,96.92 +1968-04-23,95.68,97.48,95.68,96.62,14010000,96.62 +1968-04-22,95.85,96.07,94.22,95.32,11720000,95.32 +1968-04-19,97.08,97.08,95.15,95.85,14560000,95.85 +1968-04-18,96.81,97.89,96.12,97.08,15890000,97.08 +1968-04-17,96.62,97.40,95.76,96.81,14090000,96.81 +1968-04-16,96.59,97.54,95.72,96.62,15680000,96.62 +1968-04-15,96.53,97.36,95.33,96.59,14220000,96.59 +1968-04-11,95.67,96.93,94.81,96.53,14230000,96.53 +1968-04-10,94.95,97.11,94.74,95.67,20410000,95.67 +1968-04-08,93.29,95.45,93.11,94.95,13010000,94.95 +1968-04-05,93.84,94.51,92.67,93.29,12570000,93.29 +1968-04-04,93.47,94.59,92.63,93.84,14340000,93.84 +1968-04-03,92.64,95.13,92.24,93.47,19290000,93.47 +1968-04-02,92.48,93.44,91.39,92.64,14520000,92.64 +1968-04-01,91.11,93.55,91.11,92.48,17730000,92.48 +1968-03-29,89.57,90.92,89.21,90.20,9000000,90.20 +1968-03-28,89.66,90.40,89.05,89.57,8000000,89.57 +1968-03-27,88.93,90.20,88.88,89.66,8970000,89.66 +1968-03-26,88.33,89.50,88.10,88.93,8670000,88.93 +1968-03-25,88.42,88.88,87.65,88.33,6700000,88.33 +1968-03-22,88.33,89.14,87.50,88.42,9900000,88.42 +1968-03-21,88.98,89.48,88.05,88.33,8580000,88.33 +1968-03-20,88.99,89.65,88.48,88.98,7390000,88.98 +1968-03-19,89.59,90.05,88.61,88.99,7410000,88.99 +1968-03-18,89.11,91.09,89.11,89.59,10800000,89.59 +1968-03-15,88.32,89.75,87.61,89.10,11210000,89.10 +1968-03-14,89.75,89.75,87.81,88.32,11640000,88.32 +1968-03-13,90.23,90.71,89.40,90.03,8990000,90.03 +1968-03-12,90.13,90.78,89.39,90.23,9250000,90.23 +1968-03-11,89.03,90.56,88.81,90.13,9520000,90.13 +1968-03-08,89.10,89.57,88.23,89.03,7410000,89.03 +1968-03-07,89.26,89.98,88.44,89.10,8630000,89.10 +1968-03-06,87.72,89.76,87.64,89.26,9900000,89.26 +1968-03-05,87.92,88.72,86.99,87.72,11440000,87.72 +1968-03-04,89.11,89.33,87.52,87.92,10590000,87.92 +1968-03-01,89.36,89.82,88.58,89.11,8610000,89.11 +1968-02-29,90.08,90.24,88.93,89.36,7700000,89.36 +1968-02-28,90.53,91.19,89.71,90.08,8020000,90.08 +1968-02-27,90.18,90.91,89.56,90.53,7600000,90.53 +1968-02-26,90.89,91.08,89.67,90.18,7810000,90.18 +1968-02-23,91.24,91.80,90.28,90.89,8810000,90.89 +1968-02-21,91.24,91.87,90.54,91.24,9170000,91.24 +1968-02-20,90.31,91.34,89.95,91.24,8800000,91.24 +1968-02-19,89.96,90.87,89.42,90.31,7270000,90.31 +1968-02-16,90.30,90.62,89.28,89.96,9070000,89.96 +1968-02-15,90.30,90.30,90.30,90.30,9770000,90.30 +1968-02-14,89.07,90.60,88.66,90.14,11390000,90.14 +1968-02-13,89.86,90.46,86.73,89.07,10830000,89.07 +1968-02-09,90.90,91.00,89.23,89.86,11850000,89.86 +1968-02-08,92.06,92.40,90.60,90.90,9660000,90.90 +1968-02-07,91.90,92.74,91.48,92.06,8380000,92.06 +1968-02-06,91.87,92.52,91.15,91.90,8560000,91.90 +1968-02-05,92.27,92.72,91.24,91.87,8980000,91.87 +1968-02-02,92.56,93.44,91.69,92.27,10120000,92.27 +1968-02-01,92.24,93.14,91.57,92.56,10590000,92.56 +1968-01-31,92.89,93.26,91.27,92.24,9410000,92.24 +1968-01-30,93.35,93.71,92.18,92.89,10110000,92.89 +1968-01-29,93.45,94.38,92.71,93.35,9950000,93.35 +1968-01-26,93.30,94.34,92.77,93.45,9980000,93.45 +1968-01-25,93.17,94.11,91.96,93.30,12410000,93.30 +1968-01-24,93.66,94.12,92.45,93.17,10570000,93.17 +1968-01-23,94.03,94.66,92.88,93.66,11030000,93.66 +1968-01-22,95.24,95.40,93.55,94.03,10630000,94.03 +1968-01-19,95.56,96.22,94.60,95.24,11950000,95.24 +1968-01-18,95.64,96.66,95.01,95.56,13840000,95.56 +1968-01-17,95.82,96.41,94.78,95.64,12910000,95.64 +1968-01-16,96.42,96.91,95.32,95.82,12340000,95.82 +1968-01-15,96.72,97.46,95.85,96.42,12640000,96.42 +1968-01-12,96.62,97.44,95.87,96.72,13080000,96.72 +1968-01-11,96.52,97.82,95.88,96.62,13220000,96.62 +1968-01-10,96.50,97.26,95.66,96.52,11670000,96.52 +1968-01-09,96.62,97.84,95.89,96.50,13720000,96.50 +1968-01-08,95.94,97.40,95.54,96.62,14260000,96.62 +1968-01-05,95.36,96.66,94.97,95.94,11880000,95.94 +1968-01-04,95.67,96.23,94.31,95.36,13440000,95.36 +1968-01-03,96.11,96.95,95.04,95.67,12650000,95.67 +1968-01-02,96.47,97.33,95.31,96.11,11080000,96.11 +1967-12-29,95.89,96.90,95.85,96.47,14950000,96.47 +1967-12-28,95.91,96.65,94.91,95.89,12530000,95.89 +1967-12-27,95.26,96.42,94.82,95.91,12690000,95.91 +1967-12-26,95.20,96.02,94.61,95.26,9150000,95.26 +1967-12-22,95.38,96.11,94.61,95.20,9570000,95.20 +1967-12-21,95.15,96.25,94.69,95.38,11010000,95.38 +1967-12-20,94.63,95.75,94.17,95.15,11390000,95.15 +1967-12-19,94.77,95.41,94.00,94.63,10610000,94.63 +1967-12-18,95.03,95.88,94.17,94.77,10320000,94.77 +1967-12-15,95.47,96.20,94.51,95.03,11530000,95.03 +1967-12-14,95.34,96.35,94.85,95.47,12310000,95.47 +1967-12-13,95.01,96.00,94.58,95.34,12480000,95.34 +1967-12-12,95.12,95.78,94.34,95.01,10860000,95.01 +1967-12-11,95.42,95.99,94.50,95.12,10500000,95.12 +1967-12-08,95.53,96.25,94.78,95.42,10710000,95.42 +1967-12-07,95.64,96.67,95.04,95.53,12490000,95.53 +1967-12-06,95.23,96.16,94.10,95.64,11940000,95.64 +1967-12-05,95.10,96.27,94.52,95.23,12940000,95.23 +1967-12-04,94.50,95.68,94.09,95.10,11740000,95.10 +1967-12-01,94.00,94.95,93.41,94.50,9740000,94.50 +1967-11-30,94.47,94.94,93.49,94.00,8860000,94.00 +1967-11-29,94.49,95.51,93.85,94.47,11400000,94.47 +1967-11-28,94.17,95.08,93.57,94.49,11040000,94.49 +1967-11-27,93.90,94.80,93.32,94.17,10040000,94.17 +1967-11-24,93.65,94.46,92.74,93.90,9470000,93.90 +1967-11-22,93.10,94.41,92.70,93.65,12180000,93.65 +1967-11-21,91.65,93.71,91.64,93.10,12300000,93.10 +1967-11-20,92.38,92.38,90.09,91.65,12750000,91.65 +1967-11-17,92.60,93.62,92.02,92.82,10050000,92.82 +1967-11-16,91.76,93.28,91.50,92.60,10570000,92.60 +1967-11-15,91.39,92.25,90.44,91.76,10000000,91.76 +1967-11-14,91.97,92.49,90.81,91.39,10350000,91.39 +1967-11-13,92.21,93.23,91.46,91.97,10130000,91.97 +1967-11-10,91.59,92.84,91.29,92.21,9960000,92.21 +1967-11-09,91.14,92.25,90.61,91.59,8890000,91.59 +1967-11-08,91.48,93.07,90.80,91.14,12630000,91.14 +1967-11-06,91.78,92.23,90.39,91.48,10320000,91.48 +1967-11-03,92.34,92.90,91.33,91.78,8800000,91.78 +1967-11-02,92.71,93.69,91.85,92.34,10760000,92.34 +1967-11-01,93.30,94.21,92.45,92.71,10930000,92.71 +1967-10-31,94.79,95.25,93.29,93.30,12020000,93.30 +1967-10-30,94.96,95.67,94.14,94.79,10250000,94.79 +1967-10-27,94.94,95.79,94.31,94.96,9880000,94.96 +1967-10-26,94.52,95.56,93.99,94.94,9920000,94.94 +1967-10-25,94.42,95.18,93.47,94.52,10300000,94.52 +1967-10-24,94.96,95.98,94.05,94.42,11110000,94.42 +1967-10-23,95.38,95.69,93.92,94.96,9680000,94.96 +1967-10-20,95.43,96.12,94.62,95.38,9510000,95.38 +1967-10-19,95.25,96.46,94.86,95.43,11620000,95.43 +1967-10-18,95.00,95.82,94.34,95.25,10500000,95.25 +1967-10-17,95.25,95.92,94.19,95.00,10290000,95.00 +1967-10-16,96.00,96.55,94.85,95.25,9080000,95.25 +1967-10-13,95.75,96.69,95.16,96.00,9040000,96.00 +1967-10-12,96.37,96.70,95.32,95.75,7770000,95.75 +1967-10-11,96.84,97.34,95.70,96.37,11230000,96.37 +1967-10-10,97.51,98.15,96.38,96.84,12000000,96.84 +1967-10-09,97.26,98.25,96.70,97.51,11180000,97.51 +1967-10-06,96.67,97.83,96.34,97.26,9830000,97.26 +1967-10-05,96.43,97.25,95.89,96.67,8490000,96.67 +1967-10-04,96.65,97.47,95.94,96.43,11520000,96.43 +1967-10-03,96.32,97.23,95.75,96.65,10320000,96.65 +1967-10-02,96.71,97.25,95.82,96.32,9240000,96.32 +1967-09-29,96.79,97.37,96.06,96.71,9710000,96.71 +1967-09-28,96.79,97.59,96.19,96.79,10470000,96.79 +1967-09-27,96.76,97.54,96.00,96.79,8810000,96.79 +1967-09-26,97.59,98.20,96.40,96.76,10940000,96.76 +1967-09-25,97.00,98.31,96.74,97.59,10910000,97.59 +1967-09-22,96.75,97.61,96.11,97.00,11160000,97.00 +1967-09-21,96.13,97.50,95.67,96.75,11290000,96.75 +1967-09-20,96.17,96.84,95.39,96.13,10980000,96.13 +1967-09-19,96.53,97.35,95.84,96.17,11540000,96.17 +1967-09-18,96.27,97.31,95.73,96.53,11620000,96.53 +1967-09-15,96.20,96.94,95.47,96.27,10270000,96.27 +1967-09-14,95.99,97.40,95.59,96.20,12220000,96.20 +1967-09-13,94.99,96.62,94.80,95.99,12400000,95.99 +1967-09-12,94.54,95.48,94.01,94.99,9930000,94.99 +1967-09-11,94.36,95.26,93.88,94.54,9170000,94.54 +1967-09-08,94.33,95.04,93.70,94.36,9300000,94.36 +1967-09-07,94.39,94.95,93.70,94.33,8910000,94.33 +1967-09-06,94.21,95.06,93.72,94.39,9550000,94.39 +1967-09-05,93.68,94.70,93.36,94.21,8320000,94.21 +1967-09-01,93.64,94.21,93.00,93.68,7460000,93.68 +1967-08-31,93.07,94.19,92.84,93.64,8840000,93.64 +1967-08-30,92.88,93.67,92.43,93.07,7200000,93.07 +1967-08-29,92.64,93.58,92.17,92.88,6350000,92.88 +1967-08-28,92.70,93.31,92.01,92.64,6270000,92.64 +1967-08-25,93.09,93.38,92.04,92.70,7250000,92.70 +1967-08-24,93.61,94.28,92.77,93.09,7740000,93.09 +1967-08-23,93.74,94.15,92.77,93.61,8760000,93.61 +1967-08-22,94.25,94.72,93.35,93.74,7940000,93.74 +1967-08-21,94.78,95.22,93.79,94.25,8600000,94.25 +1967-08-18,94.63,95.40,94.16,94.78,8250000,94.78 +1967-08-17,94.55,95.33,94.11,94.63,8790000,94.63 +1967-08-16,94.77,95.15,93.93,94.55,8220000,94.55 +1967-08-15,94.64,95.54,94.18,94.77,8710000,94.77 +1967-08-14,95.15,95.40,94.02,94.64,7990000,94.64 +1967-08-11,95.53,95.98,94.62,95.15,8250000,95.15 +1967-08-10,95.78,96.67,95.05,95.53,9040000,95.53 +1967-08-09,95.69,96.47,95.11,95.78,10100000,95.78 +1967-08-08,95.58,96.28,95.04,95.69,8970000,95.69 +1967-08-07,95.83,96.43,95.02,95.58,10160000,95.58 +1967-08-04,95.66,96.54,95.15,95.83,11130000,95.83 +1967-08-03,95.78,96.36,94.42,95.66,13440000,95.66 +1967-08-02,95.37,96.64,95.03,95.78,13510000,95.78 +1967-08-01,94.75,95.84,94.20,95.37,12290000,95.37 +1967-07-31,94.49,95.51,94.01,94.75,10330000,94.75 +1967-07-28,94.35,95.23,93.77,94.49,10900000,94.49 +1967-07-27,94.06,95.19,93.51,94.35,12400000,94.35 +1967-07-26,93.24,94.71,93.12,94.06,11160000,94.06 +1967-07-25,93.73,94.56,93.03,93.24,9890000,93.24 +1967-07-24,94.04,94.68,92.91,93.73,9580000,93.73 +1967-07-21,93.85,94.92,93.24,94.04,11710000,94.04 +1967-07-20,93.65,94.49,93.01,93.85,11160000,93.85 +1967-07-19,93.50,94.40,92.83,93.65,12850000,93.65 +1967-07-18,92.75,94.05,92.30,93.50,12060000,93.50 +1967-07-17,92.74,93.53,92.10,92.75,10390000,92.75 +1967-07-14,92.42,93.35,91.87,92.74,10880000,92.74 +1967-07-13,92.40,93.17,91.82,92.42,10730000,92.42 +1967-07-12,92.48,93.10,91.62,92.40,11240000,92.40 +1967-07-11,92.05,93.16,91.58,92.48,12400000,92.48 +1967-07-10,91.69,92.80,91.11,92.05,12130000,92.05 +1967-07-07,91.32,92.28,90.76,91.69,11540000,91.69 +1967-07-06,91.36,92.03,90.64,91.32,10170000,91.32 +1967-07-05,90.91,91.91,90.56,91.36,9170000,91.36 +1967-07-03,90.64,91.32,90.12,90.91,6040000,90.91 +1967-06-30,90.64,90.64,90.64,90.64,7850000,90.64 +1967-06-29,90.85,90.85,90.85,90.85,9940000,90.85 +1967-06-28,91.31,91.31,91.31,91.31,9310000,91.31 +1967-06-27,91.30,91.30,91.30,91.30,8780000,91.30 +1967-06-26,91.64,91.64,91.64,91.64,9040000,91.64 +1967-06-23,92.00,92.00,92.00,92.00,9130000,92.00 +1967-06-22,91.97,91.97,91.97,91.97,9550000,91.97 +1967-06-21,92.20,92.20,92.20,92.20,9760000,92.20 +1967-06-20,92.48,92.48,92.48,92.48,10350000,92.48 +1967-06-19,92.51,92.51,92.51,92.51,8570000,92.51 +1967-06-16,92.49,93.28,91.98,92.54,10740000,92.54 +1967-06-15,92.40,93.26,91.76,92.49,11240000,92.49 +1967-06-14,92.62,93.21,91.81,92.40,10960000,92.40 +1967-06-13,92.04,93.27,91.65,92.62,11570000,92.62 +1967-06-12,91.56,92.66,91.12,92.04,10230000,92.04 +1967-06-09,91.40,92.26,90.77,91.56,9650000,91.56 +1967-06-08,90.91,91.78,90.24,91.40,8300000,91.40 +1967-06-07,90.23,91.75,89.92,90.91,10170000,90.91 +1967-06-06,88.48,90.59,88.48,90.23,9230000,90.23 +1967-06-05,89.56,89.56,87.19,88.43,11110000,88.43 +1967-06-02,90.23,90.90,89.27,89.79,8070000,89.79 +1967-06-01,89.08,90.76,88.81,90.23,9040000,90.23 +1967-05-31,90.39,90.39,88.71,89.08,8870000,89.08 +1967-05-29,90.98,91.22,89.92,90.49,6590000,90.49 +1967-05-26,91.19,91.70,90.34,90.98,7810000,90.98 +1967-05-25,90.18,91.84,90.04,91.19,8960000,91.19 +1967-05-24,91.23,91.36,89.68,90.18,10290000,90.18 +1967-05-23,91.67,92.07,90.58,91.23,9810000,91.23 +1967-05-22,92.07,92.40,90.83,91.67,9600000,91.67 +1967-05-19,92.53,92.86,91.40,92.07,10560000,92.07 +1967-05-18,92.78,93.30,91.98,92.53,10290000,92.53 +1967-05-17,93.14,93.75,92.34,92.78,9560000,92.78 +1967-05-16,92.71,93.85,92.19,93.14,10700000,93.14 +1967-05-15,93.48,93.75,92.27,92.71,8320000,92.71 +1967-05-12,93.75,94.45,92.94,93.48,10470000,93.48 +1967-05-11,93.35,94.37,92.90,93.75,10320000,93.75 +1967-05-10,93.60,94.04,92.51,93.35,10410000,93.35 +1967-05-09,94.58,95.25,93.28,93.60,10830000,93.60 +1967-05-08,94.44,95.22,93.71,94.58,10330000,94.58 +1967-05-05,94.32,95.14,93.64,94.44,10630000,94.44 +1967-05-04,93.91,94.92,93.41,94.32,12850000,94.32 +1967-05-03,93.67,94.48,92.94,93.91,11550000,93.91 +1967-05-02,93.84,94.42,93.06,93.67,10260000,93.67 +1967-05-01,94.01,94.60,93.08,93.84,9410000,93.84 +1967-04-28,93.81,94.77,93.33,94.01,11200000,94.01 +1967-04-27,93.02,94.25,92.41,93.81,10250000,93.81 +1967-04-26,93.11,93.99,92.44,93.02,10560000,93.02 +1967-04-25,92.62,93.57,92.01,93.11,10420000,93.11 +1967-04-24,92.30,93.45,91.78,92.62,10250000,92.62 +1967-04-21,92.11,92.90,91.48,92.30,10210000,92.30 +1967-04-20,91.94,92.61,91.21,92.11,9690000,92.11 +1967-04-19,91.86,92.73,91.25,91.94,10860000,91.94 +1967-04-18,91.07,92.31,90.70,91.86,10500000,91.86 +1967-04-17,90.43,91.78,90.18,91.07,9070000,91.07 +1967-04-14,89.46,91.08,89.26,90.43,8810000,90.43 +1967-04-13,88.78,89.86,88.49,89.46,7610000,89.46 +1967-04-12,88.88,89.54,88.36,88.78,7750000,88.78 +1967-04-11,88.24,89.34,87.92,88.88,7710000,88.88 +1967-04-10,89.32,89.32,87.86,88.24,8110000,88.24 +1967-04-07,89.94,90.60,88.96,89.36,9090000,89.36 +1967-04-06,89.79,90.74,89.44,89.94,9470000,89.94 +1967-04-05,89.22,90.31,88.92,89.79,8810000,89.79 +1967-04-04,89.24,89.93,88.45,89.22,8750000,89.22 +1967-04-03,90.20,90.37,88.76,89.24,8530000,89.24 +1967-03-31,90.70,91.15,89.75,90.20,8130000,90.20 +1967-03-30,90.73,91.32,90.06,90.70,8340000,90.70 +1967-03-29,90.91,91.45,90.17,90.73,8430000,90.73 +1967-03-28,90.87,91.62,90.23,90.91,8940000,90.91 +1967-03-27,90.94,91.72,90.19,90.87,9260000,90.87 +1967-03-23,90.25,91.51,90.04,90.94,9500000,90.94 +1967-03-22,90.00,90.70,89.17,90.25,8820000,90.25 +1967-03-21,90.20,91.05,89.52,90.00,9820000,90.00 +1967-03-20,90.25,90.87,89.35,90.20,9040000,90.20 +1967-03-17,90.09,90.84,89.39,90.25,10020000,90.25 +1967-03-16,89.19,90.66,89.09,90.09,12170000,90.09 +1967-03-15,88.35,89.60,88.00,89.19,10830000,89.19 +1967-03-14,88.43,89.07,87.58,88.35,10260000,88.35 +1967-03-13,88.89,89.41,87.93,88.43,9910000,88.43 +1967-03-10,88.53,90.37,88.46,88.89,14900000,88.89 +1967-03-09,88.27,89.04,87.70,88.53,10480000,88.53 +1967-03-08,88.16,89.10,87.69,88.27,11070000,88.27 +1967-03-07,88.10,88.74,87.34,88.16,9810000,88.16 +1967-03-06,88.29,89.08,87.46,88.10,10400000,88.10 +1967-03-03,88.16,89.00,87.51,88.29,11100000,88.29 +1967-03-02,87.68,88.85,87.39,88.16,11900000,88.16 +1967-03-01,86.78,88.36,86.67,87.68,11510000,87.68 +1967-02-28,86.46,87.26,85.61,86.78,9970000,86.78 +1967-02-27,87.41,87.61,85.68,86.46,10210000,86.46 +1967-02-24,87.45,88.16,86.76,87.41,9830000,87.41 +1967-02-23,87.34,88.00,86.64,87.45,10010000,87.45 +1967-02-21,87.40,88.01,86.80,87.34,9030000,87.34 +1967-02-20,87.89,88.13,86.65,87.40,8640000,87.40 +1967-02-17,87.86,88.40,87.25,87.89,8530000,87.89 +1967-02-16,88.27,88.80,87.43,87.86,8490000,87.86 +1967-02-15,88.17,89.00,87.62,88.27,10480000,88.27 +1967-02-14,87.58,88.74,87.15,88.17,9760000,88.17 +1967-02-13,87.63,88.19,86.95,87.58,7570000,87.58 +1967-02-10,87.36,88.19,86.79,87.63,8850000,87.63 +1967-02-09,87.72,88.57,86.99,87.36,10970000,87.36 +1967-02-08,86.95,88.25,86.64,87.72,11220000,87.72 +1967-02-07,87.18,87.52,86.48,86.95,6400000,86.95 +1967-02-06,87.36,87.98,86.61,87.18,10680000,87.18 +1967-02-03,86.73,87.97,86.51,87.36,12010000,87.36 +1967-02-02,86.43,87.31,85.87,86.73,10720000,86.73 +1967-02-01,86.61,87.04,85.68,86.43,9580000,86.43 +1967-01-31,86.66,87.46,86.06,86.61,11540000,86.61 +1967-01-30,86.16,87.35,85.84,86.66,10250000,86.66 +1967-01-27,85.81,86.76,85.34,86.16,9690000,86.16 +1967-01-26,85.85,86.66,84.87,85.81,10630000,85.81 +1967-01-25,86.51,87.02,85.47,85.85,10260000,85.85 +1967-01-24,86.39,87.00,85.29,86.51,10430000,86.51 +1967-01-23,86.07,88.17,85.64,86.39,10830000,86.39 +1967-01-20,85.82,86.47,85.07,86.07,9530000,86.07 +1967-01-19,85.79,86.61,85.17,85.82,10230000,85.82 +1967-01-18,85.24,86.36,84.90,85.79,11390000,85.79 +1967-01-17,84.31,85.81,84.03,85.24,11590000,85.24 +1967-01-16,84.53,85.28,83.73,84.31,10280000,84.31 +1967-01-13,83.91,84.90,83.10,84.53,10000000,84.53 +1967-01-12,83.47,84.80,83.11,83.91,12830000,83.91 +1967-01-11,82.81,83.92,81.37,83.47,13230000,83.47 +1967-01-10,82.81,83.54,82.22,82.81,8120000,82.81 +1967-01-09,82.18,83.31,81.78,82.81,9180000,82.81 +1967-01-06,81.60,82.79,81.32,82.18,7830000,82.18 +1967-01-05,80.55,81.93,80.50,81.60,7320000,81.60 +1967-01-04,80.38,81.01,79.43,80.55,6150000,80.55 +1967-01-03,80.33,81.61,79.59,80.38,6100000,80.38 +1966-12-30,80.37,81.14,79.66,80.33,11330000,80.33 +1966-12-29,80.61,81.08,79.84,80.37,7900000,80.37 +1966-12-28,81.00,81.67,80.29,80.61,7160000,80.61 +1966-12-27,81.47,81.84,80.55,81.00,6280000,81.00 +1966-12-23,81.69,82.22,80.97,81.47,7350000,81.47 +1966-12-22,81.38,82.34,81.00,81.69,8560000,81.69 +1966-12-21,80.96,81.91,80.42,81.38,7690000,81.38 +1966-12-20,81.27,81.69,80.31,80.96,6830000,80.96 +1966-12-19,81.58,82.06,80.56,81.27,7340000,81.27 +1966-12-16,81.64,82.21,80.94,81.58,6980000,81.58 +1966-12-15,82.64,82.89,81.20,81.64,7150000,81.64 +1966-12-14,82.73,83.35,81.97,82.64,7470000,82.64 +1966-12-13,83.00,83.88,82.28,82.73,9650000,82.73 +1966-12-12,82.14,83.54,81.94,83.00,9530000,83.00 +1966-12-09,82.05,82.68,81.33,82.14,7650000,82.14 +1966-12-08,81.72,82.72,81.34,82.05,8370000,82.05 +1966-12-07,80.84,82.19,80.59,81.72,8980000,81.72 +1966-12-06,80.24,81.29,79.95,80.84,7670000,80.84 +1966-12-05,80.13,80.81,79.60,80.24,6470000,80.24 +1966-12-02,80.08,81.29,79.49,80.13,6230000,80.13 +1966-12-01,80.45,81.04,79.66,80.08,8480000,80.08 +1966-11-30,80.42,80.90,79.62,80.45,7230000,80.45 +1966-11-29,80.71,81.16,79.94,80.42,7320000,80.42 +1966-11-28,80.85,81.38,79.96,80.71,7630000,80.71 +1966-11-25,80.21,81.37,79.83,80.85,6810000,80.85 +1966-11-23,79.67,80.85,79.39,80.21,7350000,80.21 +1966-11-22,80.09,80.32,78.89,79.67,6430000,79.67 +1966-11-21,81.09,81.09,79.51,80.09,7450000,80.09 +1966-11-18,81.80,82.05,80.79,81.26,6900000,81.26 +1966-11-17,82.37,82.80,81.24,81.80,8900000,81.80 +1966-11-16,81.69,83.01,81.55,82.37,10350000,82.37 +1966-11-15,81.37,82.07,80.82,81.69,7190000,81.69 +1966-11-14,81.94,82.18,80.81,81.37,6540000,81.37 +1966-11-11,81.89,82.36,81.27,81.94,6690000,81.94 +1966-11-10,81.38,82.43,81.00,81.89,8870000,81.89 +1966-11-09,80.73,81.90,80.46,81.38,8390000,81.38 +1966-11-07,80.81,81.48,80.16,80.73,6120000,80.73 +1966-11-04,80.56,81.21,79.64,80.81,6530000,80.81 +1966-11-03,80.88,81.35,79.98,80.56,5860000,80.56 +1966-11-02,80.81,81.68,80.30,80.88,6740000,80.88 +1966-11-01,80.20,81.18,79.79,80.81,6480000,80.81 +1966-10-31,80.24,80.82,79.34,80.20,5860000,80.20 +1966-10-28,80.23,80.91,79.49,80.24,6420000,80.24 +1966-10-27,79.58,80.72,79.28,80.23,6670000,80.23 +1966-10-26,78.90,80.29,78.70,79.58,6760000,79.58 +1966-10-25,78.42,79.22,77.56,78.90,6190000,78.90 +1966-10-24,78.19,79.20,77.73,78.42,5780000,78.42 +1966-10-21,77.84,78.62,77.16,78.19,5690000,78.19 +1966-10-20,78.05,78.96,77.26,77.84,6840000,77.84 +1966-10-19,78.68,79.34,77.54,78.05,6460000,78.05 +1966-10-18,77.47,79.08,77.35,78.68,7180000,78.68 +1966-10-17,76.60,78.41,76.48,77.47,5570000,77.47 +1966-10-14,76.89,77.80,76.01,76.60,5610000,76.60 +1966-10-13,77.04,78.45,76.22,76.89,8680000,76.89 +1966-10-12,74.91,77.26,74.37,77.04,6910000,77.04 +1966-10-11,74.53,76.20,74.22,74.91,8430000,74.91 +1966-10-10,73.20,74.97,72.28,74.53,9630000,74.53 +1966-10-07,74.05,74.67,72.77,73.20,8140000,73.20 +1966-10-06,74.69,75.09,73.47,74.05,8110000,74.05 +1966-10-05,75.10,76.10,74.31,74.69,5880000,74.69 +1966-10-04,74.90,75.76,73.91,75.10,8910000,75.10 +1966-10-03,76.56,76.98,74.71,74.90,6490000,74.90 +1966-09-30,76.31,77.09,75.45,76.56,6170000,76.56 +1966-09-29,77.11,77.28,75.85,76.31,6110000,76.31 +1966-09-28,78.10,78.36,76.70,77.11,5990000,77.11 +1966-09-27,77.86,79.10,77.56,78.10,6300000,78.10 +1966-09-26,77.67,78.34,76.88,77.86,4960000,77.86 +1966-09-23,77.94,78.43,77.15,77.67,4560000,77.67 +1966-09-22,77.71,78.41,76.81,77.94,5760000,77.94 +1966-09-21,79.04,79.15,77.52,77.71,5360000,77.71 +1966-09-20,79.59,79.90,78.57,79.04,4560000,79.04 +1966-09-19,79.99,80.50,79.02,79.59,4920000,79.59 +1966-09-16,80.08,80.81,79.33,79.99,5150000,79.99 +1966-09-15,79.13,80.60,78.87,80.08,6140000,80.08 +1966-09-14,78.32,79.43,77.73,79.13,6250000,79.13 +1966-09-13,77.91,79.16,77.66,78.32,6870000,78.32 +1966-09-12,76.47,78.34,76.47,77.91,6780000,77.91 +1966-09-09,76.05,76.94,75.43,76.29,5280000,76.29 +1966-09-08,76.37,76.95,75.03,76.05,6660000,76.05 +1966-09-07,76.96,77.26,75.77,76.37,5530000,76.37 +1966-09-06,77.42,78.16,76.55,76.96,4350000,76.96 +1966-09-02,77.70,78.20,76.27,77.42,6080000,77.42 +1966-09-01,77.10,78.50,76.66,77.70,6250000,77.70 +1966-08-31,75.98,78.06,75.98,77.10,8690000,77.10 +1966-08-30,74.53,76.46,73.91,75.86,11230000,75.86 +1966-08-29,76.24,76.24,74.18,74.53,10900000,74.53 +1966-08-26,77.85,77.85,76.10,76.41,8190000,76.41 +1966-08-25,79.07,79.79,77.80,78.06,6760000,78.06 +1966-08-24,78.11,79.63,77.92,79.07,7050000,79.07 +1966-08-23,78.24,79.24,77.05,78.11,9830000,78.11 +1966-08-22,79.62,79.88,77.58,78.24,8690000,78.24 +1966-08-19,80.16,80.78,79.24,79.62,7070000,79.62 +1966-08-18,81.18,81.38,79.60,80.16,7000000,80.16 +1966-08-17,81.63,81.90,80.53,81.18,6630000,81.18 +1966-08-16,82.71,82.71,81.26,81.63,6130000,81.63 +1966-08-15,83.17,83.69,82.39,82.74,5680000,82.74 +1966-08-12,83.02,83.88,82.57,83.17,6230000,83.17 +1966-08-11,83.11,83.53,82.34,83.02,5700000,83.02 +1966-08-10,83.49,83.83,82.69,83.11,5290000,83.11 +1966-08-09,83.75,84.36,83.04,83.49,6270000,83.49 +1966-08-08,84.00,84.31,82.97,83.75,4900000,83.75 +1966-08-05,83.93,84.70,83.43,84.00,5500000,84.00 +1966-08-04,83.15,84.54,83.07,83.93,6880000,83.93 +1966-08-03,82.33,83.71,82.30,83.15,6220000,83.15 +1966-08-02,82.31,83.04,81.77,82.33,5710000,82.33 +1966-08-01,83.50,83.50,81.98,82.31,5880000,82.31 +1966-07-29,83.77,84.30,83.10,83.60,5150000,83.60 +1966-07-28,84.10,84.76,83.44,83.77,5680000,83.77 +1966-07-27,83.70,84.83,83.50,84.10,6070000,84.10 +1966-07-26,83.83,84.67,83.05,83.70,7610000,83.70 +1966-07-25,85.41,85.57,83.56,83.83,7050000,83.83 +1966-07-22,85.52,86.11,84.93,85.41,6540000,85.41 +1966-07-21,85.51,86.24,84.77,85.52,6200000,85.52 +1966-07-20,86.33,86.64,85.26,85.51,5470000,85.51 +1966-07-19,86.99,87.17,85.75,86.33,5960000,86.33 +1966-07-18,87.08,87.59,86.42,86.99,5110000,86.99 +1966-07-15,86.82,87.68,86.44,87.08,6090000,87.08 +1966-07-14,86.30,87.34,85.85,86.82,5950000,86.82 +1966-07-13,86.88,87.06,85.83,86.30,5580000,86.30 +1966-07-12,87.45,87.78,86.45,86.88,5180000,86.88 +1966-07-11,87.61,88.19,86.97,87.45,6200000,87.45 +1966-07-08,87.38,88.04,86.85,87.61,6100000,87.61 +1966-07-07,87.06,88.02,86.67,87.38,7200000,87.38 +1966-07-06,85.82,87.38,85.57,87.06,6860000,87.06 +1966-07-05,85.61,86.41,85.09,85.82,4610000,85.82 +1966-07-01,84.74,86.08,84.74,85.61,5200000,85.61 +1966-06-30,84.86,85.37,83.75,84.74,7250000,84.74 +1966-06-29,85.67,85.98,84.52,84.86,6020000,84.86 +1966-06-28,86.08,86.43,85.00,85.67,6280000,85.67 +1966-06-27,86.58,87.31,85.77,86.08,5330000,86.08 +1966-06-24,86.50,87.31,85.68,86.58,7140000,86.58 +1966-06-23,86.85,87.73,86.11,86.50,7930000,86.50 +1966-06-22,86.71,87.38,86.15,86.85,7800000,86.85 +1966-06-21,86.48,87.28,86.07,86.71,6860000,86.71 +1966-06-20,86.51,87.03,85.84,86.48,5940000,86.48 +1966-06-17,86.47,87.11,85.89,86.51,6580000,86.51 +1966-06-16,86.73,87.18,85.88,86.47,6870000,86.47 +1966-06-15,87.07,87.74,86.33,86.73,8520000,86.73 +1966-06-14,86.83,87.57,86.02,87.07,7600000,87.07 +1966-06-13,86.44,87.59,86.20,86.83,7600000,86.83 +1966-06-10,85.50,86.97,85.32,86.44,8240000,86.44 +1966-06-09,84.93,85.98,84.56,85.50,5810000,85.50 +1966-06-08,84.83,85.43,84.31,84.93,4580000,84.93 +1966-06-07,85.42,85.54,84.25,84.83,5040000,84.83 +1966-06-06,86.06,86.28,85.03,85.42,4260000,85.42 +1966-06-03,85.96,86.55,85.43,86.06,4430000,86.06 +1966-06-02,86.10,86.85,85.55,85.96,5080000,85.96 +1966-06-01,86.13,86.65,85.28,86.10,5290000,86.10 +1966-05-31,87.33,87.65,85.80,86.13,5770000,86.13 +1966-05-27,87.07,87.42,86.43,87.33,4790000,87.33 +1966-05-26,87.07,87.88,86.54,87.07,6080000,87.07 +1966-05-25,86.77,87.48,86.05,87.07,5820000,87.07 +1966-05-24,86.20,87.70,86.19,86.77,7210000,86.77 +1966-05-23,85.43,86.91,85.29,86.20,7080000,86.20 +1966-05-20,85.02,85.79,84.21,85.43,6430000,85.43 +1966-05-19,85.12,86.33,84.54,85.02,8640000,85.02 +1966-05-18,83.72,85.64,83.72,85.12,9310000,85.12 +1966-05-17,84.41,85.03,83.18,83.63,9870000,83.63 +1966-05-16,85.47,86.04,83.90,84.41,9260000,84.41 +1966-05-13,86.23,86.31,84.77,85.47,8970000,85.47 +1966-05-12,87.23,87.49,85.72,86.23,8210000,86.23 +1966-05-11,87.08,88.38,86.84,87.23,7470000,87.23 +1966-05-10,86.32,87.88,86.12,87.08,9050000,87.08 +1966-05-09,87.84,87.96,85.92,86.32,9290000,86.32 +1966-05-06,87.93,88.52,86.24,87.84,13110000,87.84 +1966-05-05,89.39,89.77,87.60,87.93,10100000,87.93 +1966-05-04,89.85,90.11,88.54,89.39,9740000,89.39 +1966-05-03,90.90,91.10,89.46,89.85,8020000,89.85 +1966-05-02,91.06,91.75,90.43,90.90,7070000,90.90 +1966-04-29,91.13,91.86,90.57,91.06,7220000,91.06 +1966-04-28,91.76,91.92,90.24,91.13,8310000,91.13 +1966-04-27,91.99,92.49,91.10,91.76,7950000,91.76 +1966-04-26,92.08,92.77,91.47,91.99,7540000,91.99 +1966-04-25,92.27,92.86,91.41,92.08,7270000,92.08 +1966-04-22,92.42,92.87,91.60,92.27,8650000,92.27 +1966-04-21,92.08,93.02,91.78,92.42,9560000,92.42 +1966-04-20,91.57,92.75,91.34,92.08,10530000,92.08 +1966-04-19,91.58,92.31,90.89,91.57,8820000,91.57 +1966-04-18,91.99,92.59,91.09,91.58,9150000,91.58 +1966-04-15,91.87,92.75,91.28,91.99,10270000,91.99 +1966-04-14,91.54,92.80,91.12,91.87,12980000,91.87 +1966-04-13,91.45,92.81,90.73,91.54,10440000,91.54 +1966-04-12,91.79,92.51,90.92,91.45,10500000,91.45 +1966-04-11,91.76,92.60,91.08,91.79,9310000,91.79 +1966-04-07,91.56,92.42,90.99,91.76,9650000,91.76 +1966-04-06,91.31,92.10,90.77,91.56,9040000,91.56 +1966-04-05,90.76,92.04,90.47,91.31,10560000,91.31 +1966-04-04,89.94,91.33,89.92,90.76,9360000,90.76 +1966-04-01,89.23,90.37,88.96,89.94,9050000,89.94 +1966-03-31,88.78,89.70,88.47,89.23,6690000,89.23 +1966-03-30,89.27,89.57,88.31,88.78,7980000,88.78 +1966-03-29,89.62,90.04,88.63,89.27,8300000,89.27 +1966-03-28,89.54,90.41,89.15,89.62,8640000,89.62 +1966-03-25,89.29,90.14,88.96,89.54,7750000,89.54 +1966-03-24,89.13,89.80,88.68,89.29,7880000,89.29 +1966-03-23,89.46,89.80,88.69,89.13,6720000,89.13 +1966-03-22,89.20,90.28,89.01,89.46,8910000,89.46 +1966-03-21,88.53,89.73,88.40,89.20,7230000,89.20 +1966-03-18,88.17,89.23,87.82,88.53,6450000,88.53 +1966-03-17,87.86,88.60,87.45,88.17,5460000,88.17 +1966-03-16,87.35,88.55,87.09,87.86,7330000,87.86 +1966-03-15,87.85,88.20,86.69,87.35,9440000,87.35 +1966-03-14,88.85,88.92,87.56,87.85,7400000,87.85 +1966-03-11,88.96,89.63,88.30,88.85,7000000,88.85 +1966-03-10,88.96,90.14,88.36,88.96,10310000,88.96 +1966-03-09,88.18,89.21,87.96,88.96,7980000,88.96 +1966-03-08,88.04,89.00,87.17,88.18,10120000,88.18 +1966-03-07,89.24,89.39,87.67,88.04,9370000,88.04 +1966-03-04,89.47,90.25,88.72,89.24,9000000,89.24 +1966-03-03,89.15,90.03,88.26,89.47,9900000,89.47 +1966-03-02,90.06,90.65,88.70,89.15,10470000,89.15 +1966-03-01,91.22,91.65,89.76,90.06,11030000,90.06 +1966-02-28,91.14,91.95,90.65,91.22,9910000,91.22 +1966-02-25,90.89,91.88,90.43,91.14,8140000,91.14 +1966-02-24,91.48,91.81,90.45,90.89,7860000,90.89 +1966-02-23,91.87,92.21,90.99,91.48,8080000,91.48 +1966-02-21,92.41,92.83,91.35,91.87,8510000,91.87 +1966-02-18,92.66,93.14,91.80,92.41,8470000,92.41 +1966-02-17,93.16,93.58,92.11,92.66,9330000,92.66 +1966-02-16,93.17,93.74,92.63,93.16,9180000,93.16 +1966-02-15,93.53,94.04,92.67,93.17,8750000,93.17 +1966-02-14,93.81,94.40,93.15,93.53,8360000,93.53 +1966-02-11,93.83,94.52,93.25,93.81,8150000,93.81 +1966-02-10,94.06,94.70,93.32,93.83,9790000,93.83 +1966-02-09,93.55,94.72,93.29,94.06,9760000,94.06 +1966-02-08,93.59,94.29,92.58,93.55,10560000,93.55 +1966-02-07,93.26,94.22,92.85,93.59,8000000,93.59 +1966-02-04,92.65,93.70,92.33,93.26,7560000,93.26 +1966-02-03,92.53,93.67,92.11,92.65,8160000,92.65 +1966-02-02,92.16,92.91,91.32,92.53,8130000,92.53 +1966-02-01,92.88,93.36,91.61,92.16,9090000,92.16 +1966-01-31,93.31,93.77,92.46,92.88,7800000,92.88 +1966-01-28,93.67,94.15,92.84,93.31,9000000,93.31 +1966-01-27,93.70,94.34,93.09,93.67,8970000,93.67 +1966-01-26,93.85,94.53,93.18,93.70,9910000,93.70 +1966-01-25,93.71,94.56,93.24,93.85,9300000,93.85 +1966-01-24,93.47,94.41,93.07,93.71,8780000,93.71 +1966-01-21,93.36,93.97,92.60,93.47,9180000,93.47 +1966-01-20,93.69,94.33,92.87,93.36,8670000,93.36 +1966-01-19,93.95,94.62,93.16,93.69,10230000,93.69 +1966-01-18,93.77,94.64,93.23,93.95,9790000,93.95 +1966-01-17,93.50,94.46,93.10,93.77,9430000,93.77 +1966-01-14,93.36,94.14,92.98,93.50,9210000,93.50 +1966-01-13,93.19,94.00,92.68,93.36,8860000,93.36 +1966-01-12,93.41,93.98,92.80,93.19,8530000,93.19 +1966-01-11,93.33,94.05,92.85,93.41,8910000,93.41 +1966-01-10,93.14,93.94,92.75,93.33,7720000,93.33 +1966-01-07,93.06,93.64,92.47,93.14,7600000,93.14 +1966-01-06,92.85,93.65,92.51,93.06,7880000,93.06 +1966-01-05,92.26,93.33,91.99,92.85,9650000,92.85 +1966-01-04,92.18,93.04,91.68,92.26,7540000,92.26 +1966-01-03,92.43,92.87,91.63,92.18,5950000,92.18 +1965-12-31,92.20,93.05,91.82,92.43,7240000,92.43 +1965-12-30,91.81,92.68,91.52,92.20,7060000,92.20 +1965-12-29,91.53,92.39,91.14,91.81,7610000,91.81 +1965-12-28,91.52,92.13,90.63,91.53,7280000,91.53 +1965-12-27,92.19,92.71,91.28,91.52,5950000,91.52 +1965-12-23,92.29,92.89,91.58,92.19,6870000,92.19 +1965-12-22,92.01,93.07,91.53,92.29,9720000,92.29 +1965-12-21,91.65,92.59,91.24,92.01,8230000,92.01 +1965-12-20,92.08,92.35,91.09,91.65,7350000,91.65 +1965-12-17,92.12,92.76,91.51,92.08,9490000,92.08 +1965-12-16,92.02,92.95,91.53,92.12,9950000,92.12 +1965-12-15,91.88,92.67,91.30,92.02,9560000,92.02 +1965-12-14,91.83,92.59,91.35,91.88,9920000,91.88 +1965-12-13,91.80,92.45,91.27,91.83,8660000,91.83 +1965-12-10,91.56,92.28,91.14,91.80,8740000,91.80 +1965-12-09,91.28,92.06,90.87,91.56,9150000,91.56 +1965-12-08,91.39,92.24,90.84,91.28,10120000,91.28 +1965-12-07,90.59,92.00,90.45,91.39,9340000,91.39 +1965-12-06,91.20,91.20,89.20,90.59,11440000,90.59 +1965-12-03,91.21,91.80,90.53,91.27,8160000,91.27 +1965-12-02,91.50,91.95,90.69,91.21,9070000,91.21 +1965-12-01,91.61,92.26,91.02,91.50,10140000,91.50 +1965-11-30,91.80,92.14,90.81,91.61,8990000,91.61 +1965-11-29,92.03,92.60,91.37,91.80,8760000,91.80 +1965-11-26,91.94,92.65,91.39,92.03,6970000,92.03 +1965-11-24,91.78,92.50,91.14,91.94,7870000,91.94 +1965-11-23,91.64,92.24,91.15,91.78,7150000,91.78 +1965-11-22,92.24,92.48,91.16,91.64,6370000,91.64 +1965-11-19,92.22,92.88,91.73,92.24,6850000,92.24 +1965-11-18,92.60,92.94,91.72,92.22,7040000,92.22 +1965-11-17,92.41,93.28,91.85,92.60,9120000,92.60 +1965-11-16,92.63,93.13,91.90,92.41,8380000,92.41 +1965-11-15,92.55,93.30,92.04,92.63,8310000,92.63 +1965-11-12,92.11,93.07,91.83,92.55,7780000,92.55 +1965-11-11,91.83,92.37,91.31,92.11,5430000,92.11 +1965-11-10,91.93,92.40,91.35,91.83,4860000,91.83 +1965-11-09,92.23,92.65,91.47,91.93,6680000,91.93 +1965-11-08,92.37,92.97,91.63,92.23,7000000,92.23 +1965-11-05,92.46,92.92,91.78,92.37,7310000,92.37 +1965-11-04,92.31,93.07,91.90,92.46,8380000,92.46 +1965-11-03,92.23,92.79,91.62,92.31,7520000,92.31 +1965-11-01,92.42,92.92,91.73,92.23,6340000,92.23 +1965-10-29,92.21,92.94,91.83,92.42,7240000,92.42 +1965-10-28,92.51,92.95,91.60,92.21,7230000,92.21 +1965-10-27,92.20,93.19,91.95,92.51,7670000,92.51 +1965-10-26,91.67,92.63,91.36,92.20,6750000,92.20 +1965-10-25,91.98,92.72,91.34,91.67,7090000,91.67 +1965-10-22,91.94,92.74,91.54,91.98,8960000,91.98 +1965-10-21,91.78,92.51,91.42,91.94,9170000,91.94 +1965-10-20,91.80,92.26,91.12,91.78,8200000,91.78 +1965-10-19,91.68,92.45,91.35,91.80,8620000,91.80 +1965-10-18,91.38,92.28,91.06,91.68,8180000,91.68 +1965-10-15,91.19,92.09,90.76,91.38,7470000,91.38 +1965-10-14,91.34,91.90,90.71,91.19,8580000,91.19 +1965-10-13,91.35,91.81,90.73,91.34,9470000,91.34 +1965-10-12,91.37,91.94,90.83,91.35,9470000,91.35 +1965-10-11,90.85,91.84,90.73,91.37,9600000,91.37 +1965-10-08,90.47,91.31,90.30,90.85,7670000,90.85 +1965-10-07,90.54,91.09,90.09,90.47,6670000,90.47 +1965-10-06,90.63,90.94,89.74,90.54,6010000,90.54 +1965-10-05,90.08,91.02,89.92,90.63,6980000,90.63 +1965-10-04,89.90,90.56,89.47,90.08,5590000,90.08 +1965-10-01,89.96,90.48,89.30,89.90,7470000,89.90 +1965-09-30,90.02,90.71,89.51,89.96,8670000,89.96 +1965-09-29,90.43,91.11,89.56,90.02,10600000,90.02 +1965-09-28,90.65,91.13,89.83,90.43,8750000,90.43 +1965-09-27,90.65,90.65,90.65,90.65,6820000,90.65 +1965-09-24,89.86,90.47,89.13,90.02,7810000,90.02 +1965-09-23,90.22,90.78,89.43,89.86,9990000,89.86 +1965-09-22,89.81,90.67,89.45,90.22,8290000,90.22 +1965-09-21,90.08,90.66,89.43,89.81,7750000,89.81 +1965-09-20,90.05,90.67,89.51,90.08,7040000,90.08 +1965-09-17,90.02,90.47,89.32,90.05,6610000,90.05 +1965-09-16,90.02,90.02,90.02,90.02,7410000,90.02 +1965-09-15,89.03,89.96,88.71,89.52,6220000,89.52 +1965-09-14,89.38,90.01,88.69,89.03,7830000,89.03 +1965-09-13,89.12,89.91,88.77,89.38,7020000,89.38 +1965-09-10,88.89,89.85,88.41,89.12,6650000,89.12 +1965-09-09,88.66,89.46,88.35,88.89,7360000,88.89 +1965-09-08,88.36,89.08,87.93,88.66,6240000,88.66 +1965-09-07,88.06,88.77,87.76,88.36,5750000,88.36 +1965-09-03,87.65,88.41,87.52,88.06,6010000,88.06 +1965-09-02,87.17,87.96,86.98,87.65,6470000,87.65 +1965-09-01,87.17,87.63,86.69,87.17,5890000,87.17 +1965-08-31,87.21,87.79,86.78,87.17,5170000,87.17 +1965-08-30,87.20,87.64,86.76,87.21,4400000,87.21 +1965-08-27,87.14,87.74,86.81,87.20,5570000,87.20 +1965-08-26,86.81,87.52,86.40,87.14,6010000,87.14 +1965-08-25,86.71,87.27,86.33,86.81,6240000,86.81 +1965-08-24,86.56,87.19,86.22,86.71,4740000,86.71 +1965-08-23,86.69,87.10,86.22,86.56,4470000,86.56 +1965-08-20,86.79,87.14,86.21,86.69,4170000,86.69 +1965-08-19,86.99,87.48,86.49,86.79,5000000,86.79 +1965-08-18,87.04,87.57,86.63,86.99,5850000,86.99 +1965-08-17,86.87,87.42,86.48,87.04,4520000,87.04 +1965-08-16,86.77,87.43,86.46,86.87,5270000,86.87 +1965-08-13,86.38,87.14,86.09,86.77,5430000,86.77 +1965-08-12,86.13,86.75,85.85,86.38,5160000,86.38 +1965-08-11,85.87,86.48,85.64,86.13,5030000,86.13 +1965-08-10,85.86,86.31,85.45,85.87,4690000,85.87 +1965-08-09,86.07,86.54,85.52,85.86,4540000,85.86 +1965-08-06,85.79,86.40,85.42,86.07,4200000,86.07 +1965-08-05,85.79,86.28,85.43,85.79,4920000,85.79 +1965-08-04,85.46,86.12,85.22,85.79,4830000,85.79 +1965-08-03,85.42,85.81,84.80,85.46,4640000,85.46 +1965-08-02,85.25,85.87,84.87,85.42,4220000,85.42 +1965-07-30,84.68,85.64,84.64,85.25,5200000,85.25 +1965-07-29,84.03,85.00,83.79,84.68,4690000,84.68 +1965-07-28,83.87,84.52,83.30,84.03,4760000,84.03 +1965-07-27,84.05,84.59,83.58,83.87,4190000,83.87 +1965-07-26,84.07,84.47,83.49,84.05,3790000,84.05 +1965-07-23,83.85,84.52,83.57,84.07,3600000,84.07 +1965-07-22,84.07,84.45,83.53,83.85,3310000,83.85 +1965-07-21,84.55,84.84,83.76,84.07,4350000,84.07 +1965-07-20,85.63,85.85,84.39,84.55,4670000,84.55 +1965-07-19,85.69,86.04,85.21,85.63,3220000,85.63 +1965-07-16,85.72,86.14,85.26,85.69,3520000,85.69 +1965-07-15,85.87,86.47,85.44,85.72,4420000,85.72 +1965-07-14,85.59,86.23,85.18,85.87,4100000,85.87 +1965-07-13,85.69,86.01,85.12,85.59,3260000,85.59 +1965-07-12,85.71,86.08,85.24,85.69,3690000,85.69 +1965-07-09,85.39,86.11,85.11,85.71,4800000,85.71 +1965-07-08,84.67,85.60,84.29,85.39,4380000,85.39 +1965-07-07,84.99,85.14,84.28,84.67,3020000,84.67 +1965-07-06,85.16,85.63,84.57,84.99,3400000,84.99 +1965-07-02,84.48,85.40,84.13,85.16,4260000,85.16 +1965-07-01,84.12,84.64,83.57,84.48,4520000,84.48 +1965-06-30,82.97,84.63,82.97,84.12,6930000,84.12 +1965-06-29,81.60,83.04,80.73,82.41,10450000,82.41 +1965-06-28,83.06,83.34,81.36,81.60,7650000,81.60 +1965-06-25,83.56,83.83,82.60,83.06,5790000,83.06 +1965-06-24,84.67,84.73,83.30,83.56,5840000,83.56 +1965-06-23,85.21,85.59,84.52,84.67,3580000,84.67 +1965-06-22,85.05,85.70,84.76,85.21,3330000,85.21 +1965-06-21,85.34,85.64,84.53,85.05,3280000,85.05 +1965-06-18,85.74,86.10,84.90,85.34,4330000,85.34 +1965-06-17,85.20,86.22,84.98,85.74,5220000,85.74 +1965-06-16,84.58,85.79,84.58,85.20,6290000,85.20 +1965-06-15,84.01,84.86,83.01,84.49,8450000,84.49 +1965-06-14,85.12,85.68,83.64,84.01,5920000,84.01 +1965-06-11,84.73,85.68,84.50,85.12,5350000,85.12 +1965-06-10,85.04,85.82,84.10,84.73,7470000,84.73 +1965-06-09,85.93,86.37,84.75,85.04,7070000,85.04 +1965-06-08,86.88,87.10,85.74,85.93,4660000,85.93 +1965-06-07,87.11,87.45,86.04,86.88,4680000,86.88 +1965-06-04,86.90,87.46,86.36,87.11,4530000,87.11 +1965-06-03,87.09,88.05,86.58,86.90,5720000,86.90 +1965-06-02,87.87,87.87,86.25,87.09,6790000,87.09 +1965-06-01,88.42,88.80,87.88,88.72,4830000,88.72 +1965-05-28,87.84,88.68,87.58,88.42,4270000,88.42 +1965-05-27,88.30,88.36,87.24,87.84,5520000,87.84 +1965-05-26,88.60,89.22,88.04,88.30,5330000,88.30 +1965-05-25,88.09,88.96,87.82,88.60,4950000,88.60 +1965-05-24,88.75,88.89,87.75,88.09,4790000,88.09 +1965-05-21,89.18,89.41,88.40,88.75,4660000,88.75 +1965-05-20,89.67,89.86,88.74,89.18,5750000,89.18 +1965-05-19,89.46,90.15,89.17,89.67,5860000,89.67 +1965-05-18,89.54,89.84,88.87,89.46,5130000,89.46 +1965-05-17,90.10,90.44,89.24,89.54,4980000,89.54 +1965-05-14,90.27,90.66,89.63,90.10,5860000,90.10 +1965-05-13,89.94,90.68,89.68,90.27,6460000,90.27 +1965-05-12,89.55,90.31,89.30,89.94,6310000,89.94 +1965-05-11,89.66,89.98,89.05,89.55,5150000,89.55 +1965-05-10,89.85,90.22,89.22,89.66,5600000,89.66 +1965-05-07,89.92,90.30,89.33,89.85,5820000,89.85 +1965-05-06,89.71,90.57,89.39,89.92,6340000,89.92 +1965-05-05,89.51,90.40,89.14,89.71,6350000,89.71 +1965-05-04,89.23,89.89,88.82,89.51,5720000,89.51 +1965-05-03,89.11,89.68,88.62,89.23,5340000,89.23 +1965-04-30,88.93,89.44,88.50,89.11,5190000,89.11 +1965-04-29,89.00,89.43,88.47,88.93,5510000,88.93 +1965-04-28,89.04,89.48,88.51,89.00,5680000,89.00 +1965-04-27,88.89,89.64,88.71,89.04,6310000,89.04 +1965-04-26,88.88,89.29,88.30,88.89,5410000,88.89 +1965-04-23,88.78,89.41,88.48,88.88,5860000,88.88 +1965-04-22,88.30,89.13,88.12,88.78,5990000,88.78 +1965-04-21,88.46,88.82,87.70,88.30,5590000,88.30 +1965-04-20,88.51,89.07,88.02,88.46,6480000,88.46 +1965-04-19,88.15,88.90,87.90,88.51,5700000,88.51 +1965-04-15,88.24,88.63,87.55,88.15,5830000,88.15 +1965-04-14,88.04,88.65,87.71,88.24,6580000,88.24 +1965-04-13,87.94,88.48,87.54,88.04,6690000,88.04 +1965-04-12,87.56,88.36,87.31,87.94,6040000,87.94 +1965-04-09,87.04,87.87,86.86,87.56,6580000,87.56 +1965-04-08,86.55,87.35,86.34,87.04,5770000,87.04 +1965-04-07,86.50,86.88,86.14,86.55,4430000,86.55 +1965-04-06,86.53,86.91,86.08,86.50,4610000,86.50 +1965-04-05,86.53,87.08,86.14,86.53,4920000,86.53 +1965-04-02,86.32,86.89,86.08,86.53,5060000,86.53 +1965-04-01,86.16,86.73,85.87,86.32,4890000,86.32 +1965-03-31,86.20,86.64,85.83,86.16,4470000,86.16 +1965-03-30,86.03,86.53,85.69,86.20,4270000,86.20 +1965-03-29,86.20,86.66,85.65,86.03,4590000,86.03 +1965-03-26,86.84,87.06,85.96,86.20,5020000,86.20 +1965-03-25,87.09,87.50,86.55,86.84,5460000,86.84 +1965-03-24,86.93,87.55,86.68,87.09,5420000,87.09 +1965-03-23,86.83,87.34,86.45,86.93,4820000,86.93 +1965-03-22,86.84,87.34,86.41,86.83,4920000,86.83 +1965-03-19,86.81,87.37,86.43,86.84,5040000,86.84 +1965-03-18,87.02,87.48,86.50,86.81,4990000,86.81 +1965-03-17,87.13,87.51,86.63,87.02,5120000,87.02 +1965-03-16,87.24,87.61,86.67,87.13,5480000,87.13 +1965-03-15,87.21,87.92,86.82,87.24,6000000,87.24 +1965-03-12,86.90,87.65,86.60,87.21,6370000,87.21 +1965-03-11,86.54,87.29,86.17,86.90,5770000,86.90 +1965-03-10,86.69,87.07,86.20,86.54,5100000,86.54 +1965-03-09,86.83,87.27,86.33,86.69,5210000,86.69 +1965-03-08,86.80,87.28,86.31,86.83,5250000,86.83 +1965-03-05,86.98,87.26,86.00,86.80,6120000,86.80 +1965-03-04,87.26,87.72,86.63,86.98,7300000,86.98 +1965-03-03,87.40,87.83,86.88,87.26,6600000,87.26 +1965-03-02,87.25,87.79,86.84,87.40,5730000,87.40 +1965-03-01,87.43,87.93,86.92,87.25,5780000,87.25 +1965-02-26,87.20,87.84,86.81,87.43,5800000,87.43 +1965-02-25,87.17,87.70,86.70,87.20,6680000,87.20 +1965-02-24,86.64,87.72,86.43,87.17,7160000,87.17 +1965-02-23,86.21,87.01,86.03,86.64,5880000,86.64 +1965-02-19,86.05,86.67,85.71,86.21,5560000,86.21 +1965-02-18,85.77,86.48,85.47,86.05,6060000,86.05 +1965-02-17,85.67,86.25,85.25,85.77,5510000,85.77 +1965-02-16,86.07,86.31,85.33,85.67,5000000,85.67 +1965-02-15,86.17,86.86,85.75,86.07,5760000,86.07 +1965-02-12,85.54,86.48,85.54,86.17,4960000,86.17 +1965-02-11,86.46,86.89,85.40,85.54,5800000,85.54 +1965-02-10,87.24,87.70,86.20,86.46,7210000,86.46 +1965-02-09,86.95,87.64,86.70,87.24,5690000,87.24 +1965-02-08,87.00,87.00,85.95,86.95,6010000,86.95 +1965-02-05,87.57,87.98,86.90,87.29,5690000,87.29 +1965-02-04,87.63,88.06,87.06,87.57,6230000,87.57 +1965-02-03,87.55,88.01,87.07,87.63,6130000,87.63 +1965-02-02,87.58,87.94,87.03,87.55,5460000,87.55 +1965-02-01,87.56,88.01,87.05,87.58,5690000,87.58 +1965-01-29,87.48,88.19,87.18,87.56,6940000,87.56 +1965-01-28,87.23,87.88,86.89,87.48,6730000,87.48 +1965-01-27,86.94,87.67,86.70,87.23,6010000,87.23 +1965-01-26,86.86,87.45,86.51,86.94,5760000,86.94 +1965-01-25,86.74,87.27,86.39,86.86,5370000,86.86 +1965-01-22,86.52,87.15,86.20,86.74,5430000,86.74 +1965-01-21,86.60,86.90,86.02,86.52,4780000,86.52 +1965-01-20,86.63,87.10,86.26,86.60,5550000,86.60 +1965-01-19,86.49,87.09,86.15,86.63,5550000,86.63 +1965-01-18,86.21,87.15,85.99,86.49,5550000,86.49 +1965-01-15,85.84,86.52,85.60,86.21,5340000,86.21 +1965-01-14,85.84,86.38,85.41,85.84,5810000,85.84 +1965-01-13,85.61,86.27,85.35,85.84,6160000,85.84 +1965-01-12,85.40,85.98,85.13,85.61,5400000,85.61 +1965-01-11,85.37,85.81,84.90,85.40,5440000,85.40 +1965-01-08,85.26,85.84,84.91,85.37,5340000,85.37 +1965-01-07,84.89,85.62,84.66,85.26,5080000,85.26 +1965-01-06,84.63,85.38,84.45,84.89,4850000,84.89 +1965-01-05,84.23,85.02,84.02,84.63,4110000,84.63 +1965-01-04,84.75,85.15,83.77,84.23,3930000,84.23 +1964-12-31,84.30,85.18,84.18,84.75,6470000,84.75 +1964-12-30,83.81,84.63,83.63,84.30,5610000,84.30 +1964-12-29,84.07,84.35,83.38,83.81,4450000,83.81 +1964-12-28,84.15,84.58,83.70,84.07,3990000,84.07 +1964-12-24,84.15,84.59,83.74,84.15,3600000,84.15 +1964-12-23,84.33,84.76,83.79,84.15,4470000,84.15 +1964-12-22,84.38,84.88,83.94,84.33,4520000,84.33 +1964-12-21,84.29,84.91,84.11,84.38,4470000,84.38 +1964-12-18,83.90,84.65,83.73,84.29,4630000,84.29 +1964-12-17,83.55,84.24,83.34,83.90,4850000,83.90 +1964-12-16,83.22,83.94,83.00,83.55,4610000,83.55 +1964-12-15,83.45,83.79,82.65,83.22,5340000,83.22 +1964-12-14,83.66,84.17,83.10,83.45,4340000,83.45 +1964-12-11,83.45,84.05,83.09,83.66,4530000,83.66 +1964-12-10,83.46,83.96,82.98,83.45,4790000,83.45 +1964-12-09,84.00,84.24,83.24,83.46,5120000,83.46 +1964-12-08,84.33,84.71,83.69,84.00,4990000,84.00 +1964-12-07,84.35,85.03,84.04,84.33,4770000,84.33 +1964-12-04,84.35,84.35,84.35,84.35,4340000,84.35 +1964-12-03,83.79,84.74,83.71,84.18,4250000,84.18 +1964-12-02,83.55,84.23,83.12,83.79,4930000,83.79 +1964-12-01,84.42,84.56,83.36,83.55,4940000,83.55 +1964-11-30,85.16,85.41,84.10,84.42,4890000,84.42 +1964-11-27,85.44,85.68,84.55,85.16,4070000,85.16 +1964-11-25,85.73,86.18,85.10,85.44,4800000,85.44 +1964-11-24,86.00,86.12,85.15,85.73,5070000,85.73 +1964-11-23,86.28,86.59,85.48,86.00,4860000,86.00 +1964-11-20,86.18,86.80,85.73,86.28,5210000,86.28 +1964-11-19,86.22,86.57,85.60,86.18,5570000,86.18 +1964-11-18,86.03,86.80,85.73,86.22,6560000,86.22 +1964-11-17,85.65,86.55,85.48,86.03,5920000,86.03 +1964-11-16,85.21,85.94,84.88,85.65,4870000,85.65 +1964-11-13,85.19,85.68,84.76,85.21,4860000,85.21 +1964-11-12,85.08,85.63,84.75,85.19,5250000,85.19 +1964-11-11,84.84,85.30,84.49,85.08,3790000,85.08 +1964-11-10,85.19,85.55,84.49,84.84,5020000,84.84 +1964-11-09,85.23,85.72,84.93,85.19,4560000,85.19 +1964-11-06,85.16,85.55,84.65,85.23,4810000,85.23 +1964-11-05,85.14,85.62,84.72,85.16,4380000,85.16 +1964-11-04,85.18,85.90,84.80,85.14,4720000,85.14 +1964-11-02,84.86,85.54,84.51,85.18,4430000,85.18 +1964-10-30,84.73,85.22,84.41,84.86,4120000,84.86 +1964-10-29,84.69,85.15,84.36,84.73,4390000,84.73 +1964-10-28,85.00,85.37,84.43,84.69,4890000,84.69 +1964-10-27,85.00,85.40,84.61,85.00,4470000,85.00 +1964-10-26,85.14,85.70,84.65,85.00,5230000,85.00 +1964-10-23,84.94,85.42,84.57,85.14,3830000,85.14 +1964-10-22,85.10,85.44,84.51,84.94,4670000,84.94 +1964-10-21,85.18,85.64,84.77,85.10,5170000,85.10 +1964-10-20,84.93,85.57,84.56,85.18,5140000,85.18 +1964-10-19,84.83,85.36,84.47,84.93,5010000,84.93 +1964-10-16,84.25,85.10,84.10,84.83,5140000,84.83 +1964-10-15,84.79,84.99,83.65,84.25,6500000,84.25 +1964-10-14,84.96,85.29,84.50,84.79,4530000,84.79 +1964-10-13,85.24,85.57,84.63,84.96,5400000,84.96 +1964-10-12,85.22,85.58,84.88,85.24,4110000,85.24 +1964-10-09,85.04,85.60,84.72,85.22,5290000,85.22 +1964-10-08,84.80,85.40,84.47,85.04,5060000,85.04 +1964-10-07,84.79,85.25,84.42,84.80,5090000,84.80 +1964-10-06,84.74,85.24,84.37,84.79,4820000,84.79 +1964-10-05,84.36,85.25,84.20,84.74,4850000,84.74 +1964-10-02,84.08,84.64,83.71,84.36,4370000,84.36 +1964-10-01,84.18,84.53,83.74,84.08,4470000,84.08 +1964-09-30,84.24,84.66,83.86,84.18,4720000,84.18 +1964-09-29,84.28,84.80,83.84,84.24,5070000,84.24 +1964-09-28,84.21,84.73,83.79,84.28,4810000,84.28 +1964-09-25,84.00,84.62,83.56,84.21,6170000,84.21 +1964-09-24,83.91,84.43,83.45,84.00,5840000,84.00 +1964-09-23,83.89,84.37,83.45,83.91,5920000,83.91 +1964-09-22,83.86,84.44,83.53,83.89,5250000,83.89 +1964-09-21,83.48,84.32,83.41,83.86,5310000,83.86 +1964-09-18,83.79,84.29,83.03,83.48,6160000,83.48 +1964-09-17,83.24,84.18,83.17,83.79,6380000,83.79 +1964-09-16,83.00,83.52,82.57,83.24,4230000,83.24 +1964-09-15,83.22,83.68,82.69,83.00,5690000,83.00 +1964-09-14,83.45,83.89,82.88,83.22,5370000,83.22 +1964-09-11,83.10,83.84,82.79,83.45,5630000,83.45 +1964-09-10,83.05,83.50,82.60,83.10,5470000,83.10 +1964-09-09,82.87,83.51,82.54,83.05,5690000,83.05 +1964-09-08,82.76,83.24,82.46,82.87,4090000,82.87 +1964-09-04,82.56,83.03,82.31,82.76,4210000,82.76 +1964-09-03,82.31,82.83,82.04,82.56,4310000,82.56 +1964-09-02,82.18,82.76,81.95,82.31,4800000,82.31 +1964-09-01,81.83,82.50,81.57,82.18,4650000,82.18 +1964-08-31,81.99,82.48,81.46,81.83,3340000,81.83 +1964-08-28,81.70,82.29,81.54,81.99,3760000,81.99 +1964-08-27,81.32,81.94,81.07,81.70,3560000,81.70 +1964-08-26,81.44,81.74,80.99,81.32,3300000,81.32 +1964-08-25,81.91,82.13,81.20,81.44,3780000,81.44 +1964-08-24,82.07,82.48,81.64,81.91,3790000,81.91 +1964-08-21,81.94,82.43,81.64,82.07,3620000,82.07 +1964-08-20,82.32,82.57,81.60,81.94,3840000,81.94 +1964-08-19,82.40,82.80,81.99,82.32,4160000,82.32 +1964-08-18,82.36,82.79,82.01,82.40,4180000,82.40 +1964-08-17,82.35,82.85,82.02,82.36,3780000,82.36 +1964-08-14,82.41,82.83,82.03,82.35,4080000,82.35 +1964-08-13,82.17,82.87,81.98,82.41,4600000,82.41 +1964-08-12,81.76,82.53,81.60,82.17,4140000,82.17 +1964-08-11,81.78,82.25,81.45,81.76,3450000,81.76 +1964-08-10,81.86,82.23,81.43,81.78,3050000,81.78 +1964-08-07,81.34,82.20,81.19,81.86,3190000,81.86 +1964-08-06,82.09,82.45,81.20,81.34,3940000,81.34 +1964-08-05,81.96,82.41,80.80,82.09,6160000,82.09 +1964-08-04,83.00,83.02,81.68,81.96,4780000,81.96 +1964-08-03,83.18,83.49,82.65,83.00,3780000,83.00 +1964-07-31,83.09,83.57,82.72,83.18,4220000,83.18 +1964-07-30,82.92,83.50,82.63,83.09,4530000,83.09 +1964-07-29,82.85,83.30,82.47,82.92,4050000,82.92 +1964-07-28,83.08,83.30,82.40,82.85,3860000,82.85 +1964-07-27,83.46,83.82,82.82,83.08,4090000,83.08 +1964-07-24,83.48,83.92,83.07,83.46,4210000,83.46 +1964-07-23,83.52,83.91,83.06,83.48,4560000,83.48 +1964-07-22,83.54,83.95,82.96,83.52,4570000,83.52 +1964-07-21,83.74,83.99,83.06,83.54,4570000,83.54 +1964-07-20,84.01,84.33,83.44,83.74,4390000,83.74 +1964-07-17,83.64,84.33,83.37,84.01,4640000,84.01 +1964-07-16,83.34,83.98,83.06,83.64,4640000,83.64 +1964-07-15,83.06,83.67,82.72,83.34,4610000,83.34 +1964-07-14,83.31,83.71,82.72,83.06,4760000,83.06 +1964-07-13,83.36,83.86,82.92,83.31,4800000,83.31 +1964-07-10,83.22,83.99,82.87,83.36,5420000,83.36 +1964-07-09,83.12,83.64,82.74,83.22,5040000,83.22 +1964-07-08,83.12,83.56,82.58,83.12,4760000,83.12 +1964-07-07,82.98,83.53,82.60,83.12,5240000,83.12 +1964-07-06,82.60,83.38,82.37,82.98,5080000,82.98 +1964-07-02,82.27,82.98,82.09,82.60,5230000,82.60 +1964-07-01,81.69,82.51,81.46,82.27,5320000,82.27 +1964-06-30,81.64,82.07,81.19,81.69,4360000,81.69 +1964-06-29,81.46,82.10,81.10,81.64,4380000,81.64 +1964-06-26,81.21,81.78,80.86,81.46,4440000,81.46 +1964-06-25,81.06,81.73,80.75,81.21,5010000,81.21 +1964-06-24,80.77,81.45,80.41,81.06,4840000,81.06 +1964-06-23,81.11,81.43,80.50,80.77,4060000,80.77 +1964-06-22,80.89,81.54,80.66,81.11,4540000,81.11 +1964-06-19,80.79,81.23,80.39,80.89,4050000,80.89 +1964-06-18,80.81,81.34,80.43,80.79,4730000,80.79 +1964-06-17,80.40,81.13,80.22,80.81,5340000,80.81 +1964-06-16,79.97,80.72,79.85,80.40,4590000,80.40 +1964-06-15,79.60,80.33,79.39,79.97,4110000,79.97 +1964-06-12,79.73,80.05,79.19,79.60,3840000,79.60 +1964-06-11,79.44,80.13,79.24,79.73,3620000,79.73 +1964-06-10,79.14,79.84,79.02,79.44,4170000,79.44 +1964-06-09,78.64,79.39,78.15,79.14,4470000,79.14 +1964-06-08,79.02,79.44,78.44,78.64,4010000,78.64 +1964-06-05,78.67,79.45,78.50,79.02,4240000,79.02 +1964-06-04,79.49,79.75,78.44,78.67,4880000,78.67 +1964-06-03,79.70,80.12,79.27,79.49,3990000,79.49 +1964-06-02,80.11,80.60,79.50,79.70,4180000,79.70 +1964-06-01,80.37,80.83,79.83,80.11,4300000,80.11 +1964-05-28,80.26,80.75,79.88,80.37,4560000,80.37 +1964-05-27,80.39,80.72,79.78,80.26,4450000,80.26 +1964-05-26,80.56,80.94,80.12,80.39,4290000,80.39 +1964-05-25,80.73,81.16,80.21,80.56,3990000,80.56 +1964-05-22,80.94,81.15,80.36,80.73,4640000,80.73 +1964-05-21,80.66,81.49,80.36,80.94,5350000,80.94 +1964-05-20,80.30,81.02,80.09,80.66,4790000,80.66 +1964-05-19,80.72,81.04,79.96,80.30,4360000,80.30 +1964-05-18,81.10,81.47,80.42,80.72,4590000,80.72 +1964-05-15,80.86,81.45,80.49,81.10,5070000,81.10 +1964-05-14,80.97,81.28,80.37,80.86,4720000,80.86 +1964-05-13,81.16,81.65,80.66,80.97,5890000,80.97 +1964-05-12,80.90,81.81,80.66,81.16,5200000,81.16 +1964-05-11,81.00,81.51,80.58,80.90,4490000,80.90 +1964-05-08,81.00,81.00,81.00,81.00,4910000,81.00 +1964-05-07,81.06,81.72,80.67,81.15,5600000,81.15 +1964-05-06,80.88,81.57,80.53,81.06,5560000,81.06 +1964-05-05,80.47,81.20,79.99,80.88,5340000,80.88 +1964-05-04,80.17,81.01,79.87,80.47,5360000,80.47 +1964-05-01,79.46,80.47,79.46,80.17,5990000,80.17 +1964-04-30,79.70,80.08,79.08,79.46,5690000,79.46 +1964-04-29,79.90,80.60,79.29,79.70,6200000,79.70 +1964-04-28,79.35,80.26,79.14,79.90,4790000,79.90 +1964-04-27,79.75,80.01,78.90,79.35,5070000,79.35 +1964-04-24,80.38,80.62,79.45,79.75,5610000,79.75 +1964-04-23,80.49,81.20,80.09,80.38,6690000,80.38 +1964-04-22,80.54,80.92,80.06,80.49,5390000,80.49 +1964-04-21,80.50,80.98,80.05,80.54,5750000,80.54 +1964-04-20,80.55,81.04,80.11,80.50,5560000,80.50 +1964-04-17,80.20,80.98,79.99,80.55,6030000,80.55 +1964-04-16,80.09,80.62,79.73,80.20,5240000,80.20 +1964-04-15,79.99,80.50,79.63,80.09,5270000,80.09 +1964-04-14,79.77,80.37,79.46,79.99,5120000,79.99 +1964-04-13,79.85,80.30,79.42,79.77,5330000,79.77 +1964-04-10,79.70,80.26,79.43,79.85,4990000,79.85 +1964-04-09,79.75,80.23,79.36,79.70,5300000,79.70 +1964-04-08,79.74,80.17,79.26,79.75,5380000,79.75 +1964-04-07,80.02,80.44,79.41,79.74,5900000,79.74 +1964-04-06,79.94,80.45,79.55,80.02,5840000,80.02 +1964-04-03,79.70,80.37,79.45,79.94,5990000,79.94 +1964-04-02,79.24,80.09,79.13,79.70,6840000,79.70 +1964-04-01,78.98,79.58,78.67,79.24,5510000,79.24 +1964-03-31,79.14,79.51,78.57,78.98,5270000,78.98 +1964-03-30,79.19,79.67,78.75,79.14,6060000,79.14 +1964-03-26,78.98,79.58,78.67,79.19,5760000,79.19 +1964-03-25,78.79,79.33,78.17,78.98,5420000,78.98 +1964-03-24,78.93,79.34,78.51,78.79,5210000,78.79 +1964-03-23,78.92,79.33,78.45,78.93,4940000,78.93 +1964-03-20,79.30,79.35,78.92,78.92,5020000,78.92 +1964-03-19,79.38,79.85,78.94,79.30,5670000,79.30 +1964-03-18,79.32,79.89,78.90,79.38,5890000,79.38 +1964-03-17,79.14,79.65,78.77,79.32,5480000,79.32 +1964-03-16,79.14,79.60,78.72,79.14,5140000,79.14 +1964-03-13,79.08,79.59,78.74,79.14,5660000,79.14 +1964-03-12,78.95,79.41,78.55,79.08,5290000,79.08 +1964-03-11,78.59,79.42,78.45,78.95,6180000,78.95 +1964-03-10,78.33,78.90,77.95,78.59,5500000,78.59 +1964-03-09,78.31,78.88,77.95,78.33,5510000,78.33 +1964-03-06,78.06,78.60,77.85,78.31,4790000,78.31 +1964-03-05,78.07,78.44,77.58,78.06,4680000,78.06 +1964-03-04,78.22,78.70,77.70,78.07,5250000,78.07 +1964-03-03,77.97,78.66,77.69,78.22,5350000,78.22 +1964-03-02,77.80,78.38,77.50,77.97,5690000,77.97 +1964-02-28,77.62,78.06,77.20,77.80,4980000,77.80 +1964-02-27,77.87,78.29,77.38,77.62,5420000,77.62 +1964-02-26,77.68,78.13,77.33,77.87,5350000,77.87 +1964-02-25,77.68,78.31,77.19,77.68,5010000,77.68 +1964-02-24,77.62,78.16,77.27,77.68,5630000,77.68 +1964-02-20,77.55,77.99,77.16,77.62,4690000,77.62 +1964-02-19,77.47,77.98,77.13,77.55,4280000,77.55 +1964-02-18,77.46,77.90,77.00,77.47,4660000,77.47 +1964-02-17,77.48,77.93,77.04,77.46,4780000,77.46 +1964-02-14,77.52,77.82,77.02,77.48,4360000,77.48 +1964-02-13,77.57,77.93,77.10,77.52,4820000,77.52 +1964-02-12,77.33,77.88,77.14,77.57,4650000,77.57 +1964-02-11,77.05,77.65,76.81,77.33,4040000,77.33 +1964-02-10,77.18,77.77,76.83,77.05,4150000,77.05 +1964-02-07,76.93,77.51,76.66,77.18,4710000,77.18 +1964-02-06,76.75,77.26,76.47,76.93,4110000,76.93 +1964-02-05,76.88,77.28,76.36,76.75,4010000,76.75 +1964-02-04,76.97,77.31,76.46,76.88,4320000,76.88 +1964-02-03,77.04,77.55,76.53,76.97,4140000,76.97 +1964-01-31,76.70,77.37,76.39,77.04,4000000,77.04 +1964-01-30,76.63,77.20,76.26,76.70,4230000,76.70 +1964-01-29,77.10,77.36,76.33,76.63,4450000,76.63 +1964-01-28,77.08,77.56,76.63,77.10,4720000,77.10 +1964-01-27,77.11,77.78,76.64,77.08,5240000,77.08 +1964-01-24,77.09,77.56,76.58,77.11,5080000,77.11 +1964-01-23,77.03,77.62,76.67,77.09,5380000,77.09 +1964-01-22,76.62,77.62,76.45,77.03,5430000,77.03 +1964-01-21,76.41,76.99,75.87,76.62,4800000,76.62 +1964-01-20,76.56,77.19,76.02,76.41,5570000,76.41 +1964-01-17,76.55,77.09,76.02,76.56,5600000,76.56 +1964-01-16,76.64,77.21,76.05,76.55,6200000,76.55 +1964-01-15,76.36,77.06,75.96,76.64,6750000,76.64 +1964-01-14,76.22,76.85,75.88,76.36,6500000,76.36 +1964-01-13,76.24,76.71,75.78,76.22,5440000,76.22 +1964-01-10,76.28,76.67,75.74,76.24,5260000,76.24 +1964-01-09,76.00,76.64,75.60,76.28,5180000,76.28 +1964-01-08,75.69,76.35,75.39,76.00,5380000,76.00 +1964-01-07,75.67,76.24,75.25,75.69,5700000,75.69 +1964-01-06,75.50,76.12,75.18,75.67,5480000,75.67 +1964-01-03,75.43,76.04,75.09,75.50,5550000,75.50 +1964-01-02,75.02,75.79,74.82,75.43,4680000,75.43 +1963-12-31,74.56,75.36,74.40,75.02,6730000,75.02 +1963-12-30,74.44,74.94,74.13,74.56,4930000,74.56 +1963-12-27,74.32,74.91,74.09,74.44,4360000,74.44 +1963-12-26,73.97,74.63,73.74,74.32,3700000,74.32 +1963-12-24,73.81,74.48,73.44,73.97,3970000,73.97 +1963-12-23,74.28,74.45,73.49,73.81,4540000,73.81 +1963-12-20,74.40,74.75,73.85,74.28,4600000,74.28 +1963-12-19,74.63,74.92,74.08,74.40,4410000,74.40 +1963-12-18,74.74,75.21,74.25,74.63,6000000,74.63 +1963-12-17,74.30,75.08,74.07,74.74,5140000,74.74 +1963-12-16,74.06,74.66,73.78,74.30,4280000,74.30 +1963-12-13,73.91,74.39,73.68,74.06,4290000,74.06 +1963-12-12,73.90,74.31,73.58,73.91,4220000,73.91 +1963-12-11,73.99,74.37,73.58,73.90,4400000,73.90 +1963-12-10,73.96,74.48,73.40,73.99,4560000,73.99 +1963-12-09,74.00,74.41,73.56,73.96,4430000,73.96 +1963-12-06,74.28,74.63,73.62,74.00,4830000,74.00 +1963-12-05,73.80,74.57,73.45,74.28,5190000,74.28 +1963-12-04,73.62,74.18,73.21,73.80,4790000,73.80 +1963-12-03,73.66,74.01,73.14,73.62,4520000,73.62 +1963-12-02,73.23,74.08,73.02,73.66,4770000,73.66 +1963-11-29,72.25,73.47,72.05,73.23,4810000,73.23 +1963-11-27,72.38,72.78,71.76,72.25,5210000,72.25 +1963-11-26,71.40,72.74,71.40,72.38,9320000,72.38 +1963-11-22,71.62,72.17,69.48,69.61,6630000,69.61 +1963-11-21,72.56,72.86,71.40,71.62,5670000,71.62 +1963-11-20,71.90,73.14,71.49,72.56,5330000,72.56 +1963-11-19,71.83,72.61,71.42,71.90,4430000,71.90 +1963-11-18,72.35,72.52,71.42,71.83,4730000,71.83 +1963-11-15,72.95,73.20,72.09,72.35,4790000,72.35 +1963-11-14,73.29,73.53,72.63,72.95,4610000,72.95 +1963-11-13,73.23,73.67,72.89,73.29,4710000,73.29 +1963-11-12,73.23,73.23,73.23,73.23,4610000,73.23 +1963-11-11,73.52,73.52,73.52,73.52,3970000,73.52 +1963-11-08,73.06,73.66,72.80,73.36,4570000,73.36 +1963-11-07,72.81,73.48,72.58,73.06,4320000,73.06 +1963-11-06,73.45,73.47,72.33,72.81,5600000,72.81 +1963-11-04,73.83,74.27,73.09,73.45,5440000,73.45 +1963-11-01,74.01,74.44,73.47,73.83,5240000,73.83 +1963-10-31,73.80,74.35,73.25,74.01,5030000,74.01 +1963-10-30,74.46,74.59,73.43,73.80,5170000,73.80 +1963-10-29,74.48,75.18,73.97,74.46,6100000,74.46 +1963-10-28,74.01,75.15,73.75,74.48,7150000,74.48 +1963-10-25,73.28,74.41,73.06,74.01,6390000,74.01 +1963-10-24,73.00,73.73,72.74,73.28,6280000,73.28 +1963-10-23,72.96,73.55,72.59,73.00,5830000,73.00 +1963-10-22,73.38,73.55,72.48,72.96,6420000,72.96 +1963-10-21,73.32,73.87,73.03,73.38,5450000,73.38 +1963-10-18,73.26,73.74,72.85,73.32,5830000,73.32 +1963-10-17,72.97,73.77,72.84,73.26,6790000,73.26 +1963-10-16,72.40,73.20,72.08,72.97,5570000,72.97 +1963-10-15,72.30,72.79,71.99,72.40,4550000,72.40 +1963-10-14,72.27,72.43,71.85,72.30,4270000,72.30 +1963-10-11,72.20,72.71,71.87,72.27,4740000,72.27 +1963-10-10,71.87,72.52,71.60,72.20,4470000,72.20 +1963-10-09,71.98,71.98,71.60,71.87,5520000,71.87 +1963-10-08,72.70,73.14,72.24,72.60,4920000,72.60 +1963-10-07,72.85,73.27,72.39,72.70,4050000,72.70 +1963-10-04,72.83,73.19,72.46,72.85,5120000,72.85 +1963-10-03,72.30,73.10,72.10,72.83,4510000,72.83 +1963-10-02,72.22,72.67,71.92,72.30,3780000,72.30 +1963-10-01,71.70,72.65,71.57,72.22,4420000,72.22 +1963-09-30,72.13,72.37,71.28,71.70,3730000,71.70 +1963-09-27,72.27,72.60,71.60,72.13,4350000,72.13 +1963-09-26,72.89,73.07,72.01,72.27,5100000,72.27 +1963-09-25,73.30,73.87,72.58,72.89,6340000,72.89 +1963-09-24,72.96,73.67,72.59,73.30,5520000,73.30 +1963-09-23,73.30,73.53,72.62,72.96,5140000,72.96 +1963-09-20,73.22,73.71,72.92,73.30,5310000,73.30 +1963-09-19,72.80,73.47,72.61,73.22,4080000,73.22 +1963-09-18,73.12,73.44,72.51,72.80,5070000,72.80 +1963-09-17,73.07,73.64,72.79,73.12,4950000,73.12 +1963-09-16,73.17,73.63,72.80,73.07,4740000,73.07 +1963-09-13,73.15,73.59,72.82,73.17,5230000,73.17 +1963-09-12,73.20,73.60,72.72,73.15,5560000,73.15 +1963-09-11,72.99,73.79,72.83,73.20,6670000,73.20 +1963-09-10,72.58,73.27,72.25,72.99,5310000,72.99 +1963-09-09,72.84,73.23,72.26,72.58,5020000,72.58 +1963-09-06,73.00,73.51,72.51,72.84,7160000,72.84 +1963-09-05,72.64,73.19,72.15,73.00,5700000,73.00 +1963-09-04,72.66,73.18,72.32,72.64,6070000,72.64 +1963-09-03,72.50,73.09,72.30,72.66,5570000,72.66 +1963-08-30,72.16,72.71,71.88,72.50,4560000,72.50 +1963-08-29,72.04,72.56,71.83,72.16,5110000,72.16 +1963-08-28,71.52,72.39,71.49,72.04,5120000,72.04 +1963-08-27,71.91,72.04,71.27,71.52,4080000,71.52 +1963-08-26,71.76,72.30,71.57,71.91,4700000,71.91 +1963-08-23,71.54,72.14,71.33,71.76,4880000,71.76 +1963-08-22,71.29,71.81,70.95,71.54,4540000,71.54 +1963-08-21,71.38,71.73,71.00,71.29,3820000,71.29 +1963-08-20,71.44,71.91,71.03,71.38,3660000,71.38 +1963-08-19,71.49,71.92,71.15,71.44,3650000,71.44 +1963-08-16,71.38,71.95,71.05,71.49,4130000,71.49 +1963-08-15,71.07,71.71,70.81,71.38,4980000,71.38 +1963-08-14,70.79,71.32,70.39,71.07,4420000,71.07 +1963-08-13,70.59,71.09,70.32,70.79,4450000,70.79 +1963-08-12,70.48,71.00,70.19,70.59,4770000,70.59 +1963-08-09,70.02,70.65,69.83,70.48,4050000,70.48 +1963-08-08,69.96,70.31,69.58,70.02,3460000,70.02 +1963-08-07,70.17,70.53,69.69,69.96,3790000,69.96 +1963-08-06,69.71,70.40,69.57,70.17,3760000,70.17 +1963-08-05,69.30,69.97,69.20,69.71,3370000,69.71 +1963-08-02,69.07,69.56,68.86,69.30,2940000,69.30 +1963-08-01,69.13,69.47,68.64,69.07,3410000,69.07 +1963-07-31,69.24,69.83,68.91,69.13,3960000,69.13 +1963-07-30,68.67,69.45,68.58,69.24,3550000,69.24 +1963-07-29,68.54,68.96,68.32,68.67,2840000,68.67 +1963-07-26,68.26,68.76,68.03,68.54,2510000,68.54 +1963-07-25,68.28,68.92,68.02,68.26,3710000,68.26 +1963-07-24,67.91,68.54,67.76,68.28,2810000,68.28 +1963-07-23,67.90,68.57,67.65,67.91,3500000,67.91 +1963-07-22,68.35,68.60,67.54,67.90,3700000,67.90 +1963-07-19,68.49,68.70,67.90,68.35,3340000,68.35 +1963-07-18,68.93,69.27,68.34,68.49,3710000,68.49 +1963-07-17,69.14,69.53,68.68,68.93,3940000,68.93 +1963-07-16,69.20,69.51,68.85,69.14,3000000,69.14 +1963-07-15,69.64,69.73,68.97,69.20,3290000,69.20 +1963-07-12,69.76,70.13,69.36,69.64,3660000,69.64 +1963-07-11,69.89,70.30,69.52,69.76,4100000,69.76 +1963-07-10,70.04,70.31,69.56,69.89,3730000,69.89 +1963-07-09,69.74,70.39,69.55,70.04,3830000,70.04 +1963-07-08,70.22,70.35,69.47,69.74,3290000,69.74 +1963-07-05,69.94,70.48,69.78,70.22,2910000,70.22 +1963-07-03,69.46,70.28,69.42,69.94,4030000,69.94 +1963-07-02,68.86,69.72,68.74,69.46,3540000,69.46 +1963-07-01,69.37,69.53,68.58,68.86,3360000,68.86 +1963-06-28,69.07,69.68,68.93,69.37,3020000,69.37 +1963-06-27,69.41,69.81,68.78,69.07,4540000,69.07 +1963-06-26,70.04,70.10,69.17,69.41,4500000,69.41 +1963-06-25,70.20,70.51,69.75,70.04,4120000,70.04 +1963-06-24,70.25,70.67,69.84,70.20,3700000,70.20 +1963-06-21,70.01,70.57,69.79,70.25,4190000,70.25 +1963-06-20,70.09,70.36,69.31,70.01,4970000,70.01 +1963-06-19,70.02,70.47,69.75,70.09,3970000,70.09 +1963-06-18,69.95,70.43,69.63,70.02,3910000,70.02 +1963-06-17,69.95,69.95,69.95,69.95,3510000,69.95 +1963-06-14,70.23,70.60,69.87,70.25,3840000,70.25 +1963-06-13,70.41,70.85,69.98,70.23,4690000,70.23 +1963-06-12,70.03,70.81,69.91,70.41,5210000,70.41 +1963-06-11,69.94,70.41,69.58,70.03,4390000,70.03 +1963-06-10,70.41,70.51,69.57,69.94,4690000,69.94 +1963-06-07,70.58,70.98,70.10,70.41,5110000,70.41 +1963-06-06,70.53,70.95,70.11,70.58,4990000,70.58 +1963-06-05,70.70,71.17,70.17,70.53,5860000,70.53 +1963-06-04,70.69,71.08,70.20,70.70,5970000,70.70 +1963-06-03,70.80,71.24,70.39,70.69,5400000,70.69 +1963-05-31,70.33,71.14,70.27,70.80,4680000,70.80 +1963-05-29,70.01,70.65,69.86,70.33,4320000,70.33 +1963-05-28,69.87,70.41,69.55,70.01,3860000,70.01 +1963-05-27,70.02,70.27,69.48,69.87,3760000,69.87 +1963-05-24,70.10,70.44,69.66,70.02,4320000,70.02 +1963-05-23,70.14,70.53,69.79,70.10,4400000,70.10 +1963-05-22,70.14,70.68,69.82,70.14,5560000,70.14 +1963-05-21,69.96,70.51,69.62,70.14,5570000,70.14 +1963-05-20,70.29,70.48,69.59,69.96,4710000,69.96 +1963-05-17,70.25,70.63,69.83,70.29,4410000,70.29 +1963-05-16,70.43,70.81,69.91,70.25,5640000,70.25 +1963-05-15,70.21,70.77,69.87,70.43,5650000,70.43 +1963-05-14,70.48,70.73,69.92,70.21,4740000,70.21 +1963-05-13,70.52,70.89,70.11,70.48,4920000,70.48 +1963-05-10,70.35,70.81,69.99,70.52,5260000,70.52 +1963-05-09,70.01,70.74,69.86,70.35,5600000,70.35 +1963-05-08,69.44,70.24,69.23,70.01,5140000,70.01 +1963-05-07,69.53,69.92,69.03,69.44,4140000,69.44 +1963-05-06,70.03,70.31,69.32,69.53,4090000,69.53 +1963-05-03,70.17,70.51,69.78,70.03,4760000,70.03 +1963-05-02,69.97,70.50,69.75,70.17,4480000,70.17 +1963-05-01,69.80,70.43,69.61,69.97,5060000,69.97 +1963-04-30,69.65,70.18,69.26,69.80,4680000,69.80 +1963-04-29,69.70,70.04,69.26,69.65,3980000,69.65 +1963-04-26,69.76,70.11,69.23,69.70,4490000,69.70 +1963-04-25,69.72,70.08,69.25,69.76,5070000,69.76 +1963-04-24,69.53,70.12,69.34,69.72,5910000,69.72 +1963-04-23,69.30,69.83,68.95,69.53,5220000,69.53 +1963-04-22,69.23,69.82,69.01,69.30,5180000,69.30 +1963-04-19,68.89,69.46,68.60,69.23,4660000,69.23 +1963-04-18,68.92,69.34,68.56,68.89,4770000,68.89 +1963-04-17,69.14,69.37,68.47,68.92,5220000,68.92 +1963-04-16,69.09,69.61,68.66,69.14,5570000,69.14 +1963-04-15,68.77,69.56,68.58,69.09,5930000,69.09 +1963-04-11,68.29,69.07,67.97,68.77,5250000,68.77 +1963-04-10,68.45,68.89,67.66,68.29,5880000,68.29 +1963-04-09,68.52,68.84,68.03,68.45,5090000,68.45 +1963-04-08,68.28,68.91,68.05,68.52,5940000,68.52 +1963-04-05,67.85,68.46,67.46,68.28,5240000,68.28 +1963-04-04,67.36,68.12,67.28,67.85,5300000,67.85 +1963-04-03,66.84,67.55,66.63,67.36,4660000,67.36 +1963-04-02,66.85,67.36,66.51,66.84,4360000,66.84 +1963-04-01,66.57,67.18,66.23,66.85,3890000,66.85 +1963-03-29,66.58,66.90,66.23,66.57,3390000,66.57 +1963-03-28,66.68,67.01,66.32,66.58,3890000,66.58 +1963-03-27,66.40,66.93,66.21,66.68,4270000,66.68 +1963-03-26,66.21,66.73,66.01,66.40,4100000,66.40 +1963-03-25,66.19,66.60,65.92,66.21,3700000,66.21 +1963-03-22,65.85,66.44,65.68,66.19,3820000,66.19 +1963-03-21,65.95,66.25,65.60,65.85,3220000,65.85 +1963-03-20,65.47,66.15,65.30,65.95,3690000,65.95 +1963-03-19,65.61,65.85,65.19,65.47,3180000,65.47 +1963-03-18,65.93,66.17,65.36,65.61,3250000,65.61 +1963-03-15,65.60,66.22,65.39,65.93,3400000,65.93 +1963-03-14,65.91,66.21,65.39,65.60,3540000,65.60 +1963-03-13,65.67,66.27,65.54,65.91,4120000,65.91 +1963-03-12,65.51,65.97,65.26,65.67,3350000,65.67 +1963-03-11,65.33,65.86,65.11,65.51,3180000,65.51 +1963-03-08,65.26,65.74,65.03,65.33,3360000,65.33 +1963-03-07,64.85,65.60,64.81,65.26,3350000,65.26 +1963-03-06,64.74,65.06,64.31,64.85,3100000,64.85 +1963-03-05,64.72,65.27,64.41,64.74,3280000,64.74 +1963-03-04,64.10,65.08,63.88,64.72,3650000,64.72 +1963-03-01,64.29,64.75,63.80,64.10,3920000,64.10 +1963-02-28,65.01,65.14,64.08,64.29,4090000,64.29 +1963-02-27,65.47,65.74,64.86,65.01,3680000,65.01 +1963-02-26,65.46,65.86,65.06,65.47,3670000,65.47 +1963-02-25,65.92,66.09,65.24,65.46,3680000,65.46 +1963-02-21,65.83,66.23,65.36,65.92,3980000,65.92 +1963-02-20,66.20,66.28,65.44,65.83,4120000,65.83 +1963-02-19,66.52,66.67,65.92,66.20,4130000,66.20 +1963-02-18,66.41,66.96,66.10,66.52,4700000,66.52 +1963-02-15,66.35,66.74,65.96,66.41,4410000,66.41 +1963-02-14,66.15,66.75,65.93,66.35,5640000,66.35 +1963-02-13,65.83,66.53,65.56,66.15,4960000,66.15 +1963-02-12,65.76,66.01,65.16,65.83,3710000,65.83 +1963-02-11,66.17,66.41,65.50,65.76,3880000,65.76 +1963-02-08,66.17,66.45,65.65,66.17,3890000,66.17 +1963-02-07,66.40,66.81,65.91,66.17,4240000,66.17 +1963-02-06,66.11,66.76,65.88,66.40,4340000,66.40 +1963-02-05,66.17,66.35,65.38,66.11,4050000,66.11 +1963-02-04,66.31,66.66,65.89,66.17,3670000,66.17 +1963-02-01,66.31,66.31,66.31,66.31,4280000,66.31 +1963-01-31,65.85,66.45,65.51,66.20,4270000,66.20 +1963-01-30,66.23,66.33,65.55,65.85,3740000,65.85 +1963-01-29,66.24,66.58,65.83,66.23,4360000,66.23 +1963-01-28,65.92,66.59,65.77,66.24,4720000,66.24 +1963-01-25,65.75,66.23,65.38,65.92,4770000,65.92 +1963-01-24,65.62,66.09,65.33,65.75,4810000,65.75 +1963-01-23,65.44,65.91,65.23,65.62,4820000,65.62 +1963-01-22,65.28,65.80,65.03,65.44,4810000,65.44 +1963-01-21,65.18,65.52,64.64,65.28,4090000,65.28 +1963-01-18,65.13,65.70,64.86,65.18,4760000,65.18 +1963-01-17,64.67,65.40,64.35,65.13,5230000,65.13 +1963-01-16,65.11,65.25,64.42,64.67,4260000,64.67 +1963-01-15,65.20,65.62,64.82,65.11,5930000,65.11 +1963-01-14,64.85,65.50,64.61,65.20,5000000,65.20 +1963-01-11,64.71,65.10,64.31,64.85,4410000,64.85 +1963-01-10,64.59,65.16,64.33,64.71,4520000,64.71 +1963-01-09,64.74,65.22,64.32,64.59,5110000,64.59 +1963-01-08,64.12,64.98,64.00,64.74,5410000,64.74 +1963-01-07,64.13,64.59,63.67,64.12,4440000,64.12 +1963-01-04,63.72,64.45,63.57,64.13,5400000,64.13 +1963-01-03,62.69,63.89,62.67,63.72,4570000,63.72 +1963-01-02,63.10,63.39,62.32,62.69,2540000,62.69 +1962-12-31,62.96,63.43,62.68,63.10,5420000,63.10 +1962-12-28,62.93,63.25,62.53,62.96,4140000,62.96 +1962-12-27,63.02,63.41,62.67,62.93,3670000,62.93 +1962-12-26,62.63,63.32,62.56,63.02,3370000,63.02 +1962-12-24,62.64,63.03,62.19,62.63,3180000,62.63 +1962-12-21,62.82,63.13,62.26,62.64,3470000,62.64 +1962-12-20,62.58,63.28,62.44,62.82,4220000,62.82 +1962-12-19,62.07,62.81,61.72,62.58,4000000,62.58 +1962-12-18,62.37,62.66,61.78,62.07,3620000,62.07 +1962-12-17,62.57,62.95,62.14,62.37,3590000,62.37 +1962-12-14,62.42,62.83,61.96,62.57,3280000,62.57 +1962-12-13,62.63,63.07,62.09,62.42,3380000,62.42 +1962-12-12,62.32,63.16,62.13,62.63,3760000,62.63 +1962-12-11,62.27,62.58,61.72,62.32,3700000,62.32 +1962-12-10,63.06,63.35,61.96,62.27,4270000,62.27 +1962-12-07,62.93,63.43,62.45,63.06,3900000,63.06 +1962-12-06,62.39,63.36,62.28,62.93,4600000,62.93 +1962-12-05,62.64,63.50,62.37,62.39,6280000,62.39 +1962-12-04,61.94,62.93,61.77,62.64,5210000,62.64 +1962-12-03,62.26,62.45,61.28,61.94,3810000,61.94 +1962-11-30,62.41,62.78,61.78,62.26,4570000,62.26 +1962-11-29,62.12,62.72,61.69,62.41,5810000,62.41 +1962-11-28,61.73,62.48,61.51,62.12,5980000,62.12 +1962-11-27,61.36,62.04,60.98,61.73,5500000,61.73 +1962-11-26,61.54,62.13,60.95,61.36,5650000,61.36 +1962-11-23,60.81,62.03,60.66,61.54,5660000,61.54 +1962-11-21,60.45,61.18,60.19,60.81,5100000,60.81 +1962-11-20,59.82,60.63,59.57,60.45,4290000,60.45 +1962-11-19,60.16,60.42,59.46,59.82,3410000,59.82 +1962-11-16,59.97,60.46,59.46,60.16,4000000,60.16 +1962-11-15,60.16,60.67,59.74,59.97,5050000,59.97 +1962-11-14,59.46,60.41,59.18,60.16,5090000,60.16 +1962-11-13,59.59,60.06,59.06,59.46,4550000,59.46 +1962-11-12,58.78,60.00,58.59,59.59,5090000,59.59 +1962-11-09,58.32,58.99,57.90,58.78,4340000,58.78 +1962-11-08,58.71,59.12,58.09,58.32,4160000,58.32 +1962-11-07,58.35,59.11,57.76,58.71,4580000,58.71 +1962-11-05,57.75,58.70,57.69,58.35,4320000,58.35 +1962-11-02,57.12,58.19,56.78,57.75,5470000,57.75 +1962-11-01,56.52,57.31,55.90,57.12,3400000,57.12 +1962-10-31,56.54,57.00,56.19,56.52,3090000,56.52 +1962-10-30,55.72,56.84,55.52,56.54,3830000,56.54 +1962-10-29,55.34,56.38,55.34,55.72,4280000,55.72 +1962-10-26,54.69,54.96,54.08,54.54,2580000,54.54 +1962-10-25,55.17,55.17,53.82,54.69,3950000,54.69 +1962-10-24,53.49,55.44,52.55,55.21,6720000,55.21 +1962-10-23,54.96,55.19,53.24,53.49,6110000,53.49 +1962-10-22,55.48,55.48,54.38,54.96,5690000,54.96 +1962-10-19,56.34,56.54,55.34,55.59,4650000,55.59 +1962-10-18,56.89,57.02,56.18,56.34,3280000,56.34 +1962-10-17,57.08,57.23,56.37,56.89,3240000,56.89 +1962-10-16,57.27,57.63,56.87,57.08,2860000,57.08 +1962-10-15,56.95,57.50,56.66,57.27,2640000,57.27 +1962-10-12,57.05,57.21,56.66,56.95,2020000,56.95 +1962-10-11,57.24,57.46,56.78,57.05,2460000,57.05 +1962-10-10,57.20,57.83,56.96,57.24,3040000,57.24 +1962-10-09,57.07,57.40,56.71,57.20,2340000,57.20 +1962-10-08,57.07,57.41,56.68,57.07,1950000,57.07 +1962-10-05,56.70,57.30,56.55,57.07,2730000,57.07 +1962-10-04,56.16,56.84,55.90,56.70,2530000,56.70 +1962-10-03,56.10,56.71,55.84,56.16,2610000,56.16 +1962-10-02,55.49,56.46,55.31,56.10,3000000,56.10 +1962-10-01,56.27,56.31,55.26,55.49,3090000,55.49 +1962-09-28,55.77,56.58,55.59,56.27,2850000,56.27 +1962-09-27,56.15,56.55,55.53,55.77,3540000,55.77 +1962-09-26,56.96,57.29,55.92,56.15,3550000,56.15 +1962-09-25,56.63,57.22,56.12,56.96,3620000,56.96 +1962-09-24,57.45,57.45,56.30,56.63,5000000,56.63 +1962-09-21,58.54,58.64,57.43,57.69,4280000,57.69 +1962-09-20,58.95,59.29,58.33,58.54,3350000,58.54 +1962-09-19,59.03,59.26,58.59,58.95,2950000,58.95 +1962-09-18,59.08,59.54,58.77,59.03,3690000,59.03 +1962-09-17,58.89,59.42,58.65,59.08,3330000,59.08 +1962-09-14,58.70,59.14,58.40,58.89,2880000,58.89 +1962-09-13,58.84,59.18,58.46,58.70,3100000,58.70 +1962-09-12,58.59,59.06,58.40,58.84,3100000,58.84 +1962-09-11,58.45,58.93,58.17,58.59,3040000,58.59 +1962-09-10,58.38,58.64,57.88,58.45,2520000,58.45 +1962-09-07,58.36,58.90,58.09,58.38,2890000,58.38 +1962-09-06,58.12,58.60,57.72,58.36,3180000,58.36 +1962-09-05,58.56,58.77,57.95,58.12,3050000,58.12 +1962-09-04,59.12,59.49,58.44,58.56,2970000,58.56 +1962-08-31,58.68,59.25,58.45,59.12,2830000,59.12 +1962-08-30,58.66,59.06,58.39,58.68,2260000,58.68 +1962-08-29,58.79,58.96,58.17,58.66,2900000,58.66 +1962-08-28,59.55,59.61,58.66,58.79,3180000,58.79 +1962-08-27,59.58,59.94,59.24,59.55,3140000,59.55 +1962-08-24,59.70,59.92,59.18,59.58,2890000,59.58 +1962-08-23,59.78,60.33,59.47,59.70,4770000,59.70 +1962-08-22,59.12,59.93,58.91,59.78,4520000,59.78 +1962-08-21,59.37,59.66,58.90,59.12,3730000,59.12 +1962-08-20,59.01,59.72,58.90,59.37,4580000,59.37 +1962-08-17,58.64,59.24,58.43,59.01,3430000,59.01 +1962-08-16,58.66,59.11,58.24,58.64,4180000,58.64 +1962-08-15,58.25,59.11,58.22,58.66,4880000,58.66 +1962-08-14,57.63,58.43,57.41,58.25,3640000,58.25 +1962-08-13,57.55,57.90,57.22,57.63,2670000,57.63 +1962-08-10,57.57,57.85,57.16,57.55,2470000,57.55 +1962-08-09,57.51,57.88,57.19,57.57,2670000,57.57 +1962-08-08,57.36,57.64,56.76,57.51,3080000,57.51 +1962-08-07,57.75,57.81,57.07,57.36,2970000,57.36 +1962-08-06,58.12,58.35,57.54,57.75,3110000,57.75 +1962-08-03,57.98,58.32,57.63,58.12,5990000,58.12 +1962-08-02,57.75,58.20,57.38,57.98,3410000,57.98 +1962-08-01,58.23,58.30,57.51,57.75,3100000,57.75 +1962-07-31,57.83,58.58,57.74,58.23,4190000,58.23 +1962-07-30,57.20,57.98,57.08,57.83,3200000,57.83 +1962-07-27,56.77,57.36,56.56,57.20,2890000,57.20 +1962-07-26,56.46,57.18,56.16,56.77,2790000,56.77 +1962-07-25,56.36,56.67,55.78,56.46,2910000,56.46 +1962-07-24,56.80,56.93,56.14,56.36,2560000,56.36 +1962-07-23,56.81,57.32,56.53,56.80,2770000,56.80 +1962-07-20,56.42,57.09,56.27,56.81,2610000,56.81 +1962-07-19,56.20,56.95,55.96,56.42,3090000,56.42 +1962-07-18,56.78,56.81,55.86,56.20,3620000,56.20 +1962-07-17,57.83,57.96,56.68,56.78,3500000,56.78 +1962-07-16,57.83,58.10,57.18,57.83,3130000,57.83 +1962-07-13,58.03,58.18,57.23,57.83,3380000,57.83 +1962-07-12,57.73,58.67,57.59,58.03,5370000,58.03 +1962-07-11,57.20,57.95,56.77,57.73,4250000,57.73 +1962-07-10,56.99,58.36,56.99,57.20,7120000,57.20 +1962-07-09,56.17,56.73,55.54,56.55,2950000,56.55 +1962-07-06,56.73,56.73,55.64,56.17,3110000,56.17 +1962-07-05,56.49,57.10,56.15,56.81,3350000,56.81 +1962-07-03,55.86,56.74,55.57,56.49,3920000,56.49 +1962-07-02,54.75,56.02,54.47,55.86,3450000,55.86 +1962-06-29,54.41,55.47,54.20,54.75,4720000,54.75 +1962-06-28,52.98,54.64,52.98,54.41,5440000,54.41 +1962-06-27,52.32,52.83,51.77,52.60,3890000,52.60 +1962-06-26,52.45,53.58,52.10,52.32,4630000,52.32 +1962-06-25,52.68,52.96,51.35,52.45,7090000,52.45 +1962-06-22,53.59,53.78,52.48,52.68,5640000,52.68 +1962-06-21,54.78,54.78,53.50,53.59,4560000,53.59 +1962-06-20,55.54,55.92,54.66,54.78,3360000,54.78 +1962-06-19,55.74,55.88,54.98,55.54,2680000,55.54 +1962-06-18,55.89,56.53,54.97,55.74,4580000,55.74 +1962-06-15,54.33,55.96,53.66,55.89,7130000,55.89 +1962-06-14,55.50,56.00,54.12,54.33,6240000,54.33 +1962-06-13,56.34,56.80,55.24,55.50,5850000,55.50 +1962-06-12,57.66,57.66,56.23,56.34,4690000,56.34 +1962-06-11,58.45,58.58,57.51,57.82,2870000,57.82 +1962-06-08,58.40,58.97,58.14,58.45,2560000,58.45 +1962-06-07,58.39,58.90,58.00,58.40,2760000,58.40 +1962-06-06,57.64,59.17,57.64,58.39,4190000,58.39 +1962-06-05,57.27,58.42,56.33,57.57,6140000,57.57 +1962-06-04,59.12,59.12,57.14,57.27,5380000,57.27 +1962-06-01,59.63,59.96,58.52,59.38,5760000,59.38 +1962-05-31,58.80,60.82,58.80,59.63,10710000,59.63 +1962-05-29,55.50,58.29,53.13,58.08,14750000,58.08 +1962-05-28,59.15,59.15,55.42,55.50,9350000,55.50 +1962-05-25,60.62,60.98,59.00,59.47,6380000,59.47 +1962-05-24,61.11,61.79,60.36,60.62,5250000,60.62 +1962-05-23,62.34,62.42,60.90,61.11,5450000,61.11 +1962-05-22,63.59,63.69,62.26,62.34,3640000,62.34 +1962-05-21,63.82,64.00,63.21,63.59,2260000,63.59 +1962-05-18,63.93,64.14,63.29,63.82,2490000,63.82 +1962-05-17,64.27,64.41,63.38,63.93,2950000,63.93 +1962-05-16,64.29,64.88,63.82,64.27,3360000,64.27 +1962-05-15,63.41,64.87,63.41,64.29,4780000,64.29 +1962-05-14,62.65,63.31,61.11,63.10,5990000,63.10 +1962-05-11,63.57,64.10,62.44,62.65,4510000,62.65 +1962-05-10,64.26,64.39,62.99,63.57,4730000,63.57 +1962-05-09,65.17,65.17,64.02,64.26,3670000,64.26 +1962-05-08,66.02,66.13,64.88,65.17,3020000,65.17 +1962-05-07,66.24,66.56,65.66,66.02,2530000,66.02 +1962-05-04,66.53,66.80,65.80,66.24,3010000,66.24 +1962-05-03,65.99,66.93,65.81,66.53,3320000,66.53 +1962-05-02,65.70,66.67,65.56,65.99,3780000,65.99 +1962-05-01,65.24,65.94,63.76,65.70,5100000,65.70 +1962-04-30,66.30,66.90,64.95,65.24,4150000,65.24 +1962-04-27,67.05,67.61,65.99,66.30,4140000,66.30 +1962-04-26,67.71,67.97,66.92,67.05,3650000,67.05 +1962-04-25,68.46,68.58,67.53,67.71,3340000,67.71 +1962-04-24,68.53,68.91,68.16,68.46,3040000,68.46 +1962-04-23,68.59,69.01,68.17,68.53,3240000,68.53 +1962-04-19,68.27,68.90,68.07,68.59,3100000,68.59 +1962-04-18,67.90,68.72,67.83,68.27,3350000,68.27 +1962-04-17,67.60,68.20,67.24,67.90,2940000,67.90 +1962-04-16,67.90,68.19,67.21,67.60,3070000,67.60 +1962-04-13,67.90,68.11,67.03,67.90,3470000,67.90 +1962-04-12,68.41,68.43,67.47,67.90,3320000,67.90 +1962-04-11,68.56,69.26,68.24,68.41,3240000,68.41 +1962-04-10,68.31,68.80,67.94,68.56,2880000,68.56 +1962-04-09,68.84,69.02,68.09,68.31,3020000,68.31 +1962-04-06,68.91,69.42,68.58,68.84,2730000,68.84 +1962-04-05,68.49,69.09,68.12,68.91,3130000,68.91 +1962-04-04,68.81,69.22,68.33,68.49,3290000,68.49 +1962-04-03,69.37,69.53,68.53,68.81,3350000,68.81 +1962-04-02,69.55,69.82,69.13,69.37,2790000,69.37 +1962-03-30,70.01,70.09,69.16,69.55,2950000,69.55 +1962-03-29,70.04,70.50,69.81,70.01,2870000,70.01 +1962-03-28,69.70,70.33,69.54,70.04,2940000,70.04 +1962-03-27,69.89,70.20,69.41,69.70,3090000,69.70 +1962-03-26,70.45,70.63,69.73,69.89,3040000,69.89 +1962-03-23,70.40,70.78,70.12,70.45,3050000,70.45 +1962-03-22,70.51,70.84,70.14,70.40,3130000,70.40 +1962-03-21,70.66,70.93,70.16,70.51,3360000,70.51 +1962-03-20,70.85,71.08,70.40,70.66,3060000,70.66 +1962-03-19,70.94,71.31,70.53,70.85,3220000,70.85 +1962-03-16,71.06,71.34,70.67,70.94,3060000,70.94 +1962-03-15,70.91,71.44,70.59,71.06,3250000,71.06 +1962-03-14,70.60,71.25,70.48,70.91,3670000,70.91 +1962-03-13,70.40,70.86,70.06,70.60,3200000,70.60 +1962-03-12,70.42,70.76,70.02,70.40,3280000,70.40 +1962-03-09,70.19,70.71,70.00,70.42,3340000,70.42 +1962-03-08,69.69,70.37,69.40,70.19,3210000,70.19 +1962-03-07,69.78,70.07,69.37,69.69,2890000,69.69 +1962-03-06,70.01,70.24,69.46,69.78,2870000,69.78 +1962-03-05,70.16,70.48,69.65,70.01,3020000,70.01 +1962-03-02,70.16,70.16,69.75,70.16,2980000,70.16 +1962-03-01,69.96,70.60,69.76,70.20,2960000,70.20 +1962-02-28,69.89,70.42,69.57,69.96,3030000,69.96 +1962-02-27,69.76,70.32,69.48,69.89,3110000,69.89 +1962-02-26,70.16,70.33,69.44,69.76,2910000,69.76 +1962-02-23,70.32,70.57,69.73,70.16,3230000,70.16 +1962-02-21,70.66,70.97,70.12,70.32,3310000,70.32 +1962-02-20,70.41,70.91,70.13,70.66,3300000,70.66 +1962-02-19,70.59,70.96,70.12,70.41,3350000,70.41 +1962-02-16,70.74,71.13,70.27,70.59,3700000,70.59 +1962-02-15,70.42,71.06,70.23,70.74,3470000,70.74 +1962-02-14,70.45,70.79,70.03,70.42,3630000,70.42 +1962-02-13,70.46,70.89,70.07,70.45,3400000,70.45 +1962-02-12,70.48,70.81,70.14,70.46,2620000,70.46 +1962-02-09,70.58,70.83,69.93,70.48,3370000,70.48 +1962-02-08,70.42,70.95,70.16,70.58,3810000,70.58 +1962-02-07,69.96,70.67,69.78,70.42,4140000,70.42 +1962-02-06,69.88,70.32,69.41,69.96,3650000,69.96 +1962-02-05,69.81,70.30,69.42,69.88,3890000,69.88 +1962-02-02,69.26,70.02,69.02,69.81,3950000,69.81 +1962-02-01,68.84,69.65,68.56,69.26,4260000,69.26 +1962-01-31,68.17,69.09,68.12,68.84,3840000,68.84 +1962-01-30,67.90,68.65,67.62,68.17,3520000,68.17 +1962-01-29,68.13,68.50,67.55,67.90,3050000,67.90 +1962-01-26,68.35,68.67,67.83,68.13,3330000,68.13 +1962-01-25,68.40,69.05,68.10,68.35,3560000,68.35 +1962-01-24,68.29,68.68,67.55,68.40,3760000,68.40 +1962-01-23,68.81,68.96,68.00,68.29,3350000,68.29 +1962-01-22,68.75,69.37,68.45,68.81,3810000,68.81 +1962-01-19,68.39,70.08,68.14,68.75,3800000,68.75 +1962-01-18,68.32,68.73,67.75,68.39,3460000,68.39 +1962-01-17,69.07,69.31,68.13,68.32,3780000,68.32 +1962-01-16,69.47,69.61,68.68,69.07,3650000,69.07 +1962-01-15,69.61,69.96,69.06,69.47,3450000,69.47 +1962-01-12,69.37,70.17,69.23,69.61,3730000,69.61 +1962-01-11,68.96,69.54,68.57,69.37,3390000,69.37 +1962-01-10,69.15,69.58,68.62,68.96,3300000,68.96 +1962-01-09,69.12,69.93,68.83,69.15,3600000,69.15 +1962-01-08,69.66,69.84,68.17,69.12,4620000,69.12 +1962-01-05,70.64,70.84,69.35,69.66,4630000,69.66 +1962-01-04,71.13,71.62,70.45,70.64,4450000,70.64 +1962-01-03,70.96,71.48,70.38,71.13,3590000,71.13 +1962-01-02,71.55,71.96,70.71,70.96,3120000,70.96 +1961-12-29,71.55,71.55,71.55,71.55,5370000,71.55 +1961-12-28,71.69,71.69,71.69,71.69,4530000,71.69 +1961-12-27,71.65,71.65,71.65,71.65,4170000,71.65 +1961-12-26,71.02,71.02,71.02,71.02,3180000,71.02 +1961-12-22,70.91,70.91,70.91,70.91,3390000,70.91 +1961-12-21,70.86,70.86,70.86,70.86,3440000,70.86 +1961-12-20,71.12,71.12,71.12,71.12,3640000,71.12 +1961-12-19,71.26,71.26,71.26,71.26,3440000,71.26 +1961-12-18,71.76,71.76,71.76,71.76,3810000,71.76 +1961-12-15,72.01,72.01,72.01,72.01,3710000,72.01 +1961-12-14,71.98,71.98,71.98,71.98,4350000,71.98 +1961-12-13,72.53,72.53,72.53,72.53,4890000,72.53 +1961-12-12,72.64,72.64,72.64,72.64,4680000,72.64 +1961-12-11,72.39,72.39,72.39,72.39,4360000,72.39 +1961-12-08,72.04,72.04,72.04,72.04,4010000,72.04 +1961-12-07,71.70,71.70,71.70,71.70,3900000,71.70 +1961-12-06,71.99,71.99,71.99,71.99,4200000,71.99 +1961-12-05,71.93,71.93,71.93,71.93,4330000,71.93 +1961-12-04,72.01,72.01,72.01,72.01,4560000,72.01 +1961-12-01,71.78,71.78,71.78,71.78,4420000,71.78 +1961-11-30,71.32,71.32,71.32,71.32,4210000,71.32 +1961-11-29,71.70,71.70,71.70,71.70,4550000,71.70 +1961-11-28,71.75,71.75,71.75,71.75,4360000,71.75 +1961-11-27,71.85,71.85,71.85,71.85,4700000,71.85 +1961-11-24,71.84,71.84,71.84,71.84,4020000,71.84 +1961-11-22,71.70,71.70,71.70,71.70,4500000,71.70 +1961-11-21,71.78,71.78,71.78,71.78,4890000,71.78 +1961-11-20,71.72,71.72,71.72,71.72,4190000,71.72 +1961-11-17,71.62,71.62,71.62,71.62,3960000,71.62 +1961-11-16,71.62,71.62,71.62,71.62,3980000,71.62 +1961-11-15,71.67,71.67,71.67,71.67,4660000,71.67 +1961-11-14,71.66,71.66,71.66,71.66,4750000,71.66 +1961-11-13,71.27,71.27,71.27,71.27,4540000,71.27 +1961-11-10,71.07,71.07,71.07,71.07,4180000,71.07 +1961-11-09,70.77,70.77,70.77,70.77,4680000,70.77 +1961-11-08,70.87,70.87,70.87,70.87,6090000,70.87 +1961-11-06,70.01,70.01,70.01,70.01,4340000,70.01 +1961-11-03,69.47,69.47,69.47,69.47,4070000,69.47 +1961-11-02,69.11,69.11,69.11,69.11,3890000,69.11 +1961-11-01,68.73,68.73,68.73,68.73,3210000,68.73 +1961-10-31,68.62,68.62,68.62,68.62,3350000,68.62 +1961-10-30,68.42,68.42,68.42,68.42,3430000,68.42 +1961-10-27,68.34,68.34,68.34,68.34,3200000,68.34 +1961-10-26,68.46,68.46,68.46,68.46,3330000,68.46 +1961-10-25,68.34,68.34,68.34,68.34,3590000,68.34 +1961-10-24,67.98,67.98,67.98,67.98,3430000,67.98 +1961-10-23,68.06,68.06,68.06,68.06,3440000,68.06 +1961-10-20,68.00,68.00,68.00,68.00,3470000,68.00 +1961-10-19,68.45,68.45,68.45,68.45,3850000,68.45 +1961-10-18,68.21,68.21,68.21,68.21,3520000,68.21 +1961-10-17,67.87,67.87,67.87,67.87,3110000,67.87 +1961-10-16,67.85,67.85,67.85,67.85,2840000,67.85 +1961-10-13,68.04,68.04,68.04,68.04,3090000,68.04 +1961-10-12,68.16,68.16,68.16,68.16,3060000,68.16 +1961-10-11,68.17,68.17,68.17,68.17,3670000,68.17 +1961-10-10,68.11,68.11,68.11,68.11,3430000,68.11 +1961-10-09,67.94,67.94,67.94,67.94,2920000,67.94 +1961-10-06,66.97,66.97,66.97,66.97,3470000,66.97 +1961-10-05,67.77,67.77,67.77,67.77,3920000,67.77 +1961-10-04,67.18,67.18,67.18,67.18,3380000,67.18 +1961-10-03,66.73,66.73,66.73,66.73,2680000,66.73 +1961-10-02,66.77,66.77,66.77,66.77,2800000,66.77 +1961-09-29,66.73,66.73,66.73,66.73,3060000,66.73 +1961-09-28,66.58,66.58,66.58,66.58,3000000,66.58 +1961-09-27,66.47,66.47,66.47,66.47,3440000,66.47 +1961-09-26,65.78,65.78,65.78,65.78,3320000,65.78 +1961-09-25,65.77,65.77,65.77,65.77,3700000,65.77 +1961-09-22,66.72,66.72,66.72,66.72,3070000,66.72 +1961-09-21,66.99,66.99,66.99,66.99,3340000,66.99 +1961-09-20,66.96,66.96,66.96,66.96,2700000,66.96 +1961-09-19,66.08,66.08,66.08,66.08,3260000,66.08 +1961-09-18,67.21,67.21,67.21,67.21,3550000,67.21 +1961-09-15,67.65,67.65,67.65,67.65,3130000,67.65 +1961-09-14,67.53,67.53,67.53,67.53,2920000,67.53 +1961-09-13,68.01,68.01,68.01,68.01,3110000,68.01 +1961-09-12,67.96,67.96,67.96,67.96,2950000,67.96 +1961-09-11,67.28,67.28,67.28,67.28,2790000,67.28 +1961-09-08,67.88,67.88,67.88,67.88,3430000,67.88 +1961-09-07,68.35,68.35,68.35,68.35,3900000,68.35 +1961-09-06,68.46,68.46,68.46,68.46,3440000,68.46 +1961-09-05,67.96,67.96,67.96,67.96,3000000,67.96 +1961-09-01,68.19,68.19,68.19,68.19,2710000,68.19 +1961-08-31,68.07,68.07,68.07,68.07,2920000,68.07 +1961-08-30,67.81,67.81,67.81,67.81,3220000,67.81 +1961-08-29,67.55,67.55,67.55,67.55,3160000,67.55 +1961-08-28,67.70,67.70,67.70,67.70,3150000,67.70 +1961-08-25,67.67,67.67,67.67,67.67,3050000,67.67 +1961-08-24,67.59,67.59,67.59,67.59,3090000,67.59 +1961-08-23,67.98,67.98,67.98,67.98,3550000,67.98 +1961-08-22,68.44,68.44,68.44,68.44,3640000,68.44 +1961-08-21,68.43,68.43,68.43,68.43,3880000,68.43 +1961-08-18,68.29,68.29,68.29,68.29,4030000,68.29 +1961-08-17,68.11,68.11,68.11,68.11,4130000,68.11 +1961-08-16,67.73,67.73,67.73,67.73,3430000,67.73 +1961-08-15,67.55,67.55,67.55,67.55,3320000,67.55 +1961-08-14,67.72,67.72,67.72,67.72,3120000,67.72 +1961-08-11,68.06,68.06,68.06,68.06,3260000,68.06 +1961-08-10,67.95,67.95,67.95,67.95,3570000,67.95 +1961-08-09,67.74,67.74,67.74,67.74,3710000,67.74 +1961-08-08,67.82,67.82,67.82,67.82,4050000,67.82 +1961-08-07,67.67,67.67,67.67,67.67,3560000,67.67 +1961-08-04,67.68,67.68,67.68,67.68,3710000,67.68 +1961-08-03,67.29,67.29,67.29,67.29,3650000,67.29 +1961-08-02,66.94,66.94,66.94,66.94,4300000,66.94 +1961-08-01,67.37,67.37,67.37,67.37,3990000,67.37 +1961-07-31,66.76,66.76,66.76,66.76,3170000,66.76 +1961-07-28,66.71,66.71,66.71,66.71,3610000,66.71 +1961-07-27,66.61,66.61,66.61,66.61,4170000,66.61 +1961-07-26,65.84,65.84,65.84,65.84,4070000,65.84 +1961-07-25,65.23,65.23,65.23,65.23,3010000,65.23 +1961-07-24,64.87,64.87,64.87,64.87,2490000,64.87 +1961-07-21,64.86,64.86,64.86,64.86,2360000,64.86 +1961-07-20,64.71,64.71,64.71,64.71,2530000,64.71 +1961-07-19,64.70,64.70,64.70,64.70,2940000,64.70 +1961-07-18,64.41,64.41,64.41,64.41,3010000,64.41 +1961-07-17,64.79,64.79,64.79,64.79,2690000,64.79 +1961-07-14,65.28,65.28,65.28,65.28,2760000,65.28 +1961-07-13,64.86,64.86,64.86,64.86,2670000,64.86 +1961-07-12,65.32,65.32,65.32,65.32,3070000,65.32 +1961-07-11,65.69,65.69,65.69,65.69,3160000,65.69 +1961-07-10,65.71,65.71,65.71,65.71,3180000,65.71 +1961-07-07,65.77,65.77,65.77,65.77,3030000,65.77 +1961-07-06,65.81,65.81,65.81,65.81,3470000,65.81 +1961-07-05,65.63,65.63,65.63,65.63,3270000,65.63 +1961-07-03,65.21,65.21,65.21,65.21,2180000,65.21 +1961-06-30,64.64,64.64,64.64,64.64,2380000,64.64 +1961-06-29,64.52,64.52,64.52,64.52,2560000,64.52 +1961-06-28,64.59,64.59,64.59,64.59,2830000,64.59 +1961-06-27,64.47,64.47,64.47,64.47,3090000,64.47 +1961-06-26,64.47,64.47,64.47,64.47,2690000,64.47 +1961-06-23,65.16,65.16,65.16,65.16,2720000,65.16 +1961-06-22,64.90,64.90,64.90,64.90,2880000,64.90 +1961-06-21,65.14,65.14,65.14,65.14,3210000,65.14 +1961-06-20,65.15,65.15,65.15,65.15,3280000,65.15 +1961-06-19,64.58,64.58,64.58,64.58,3980000,64.58 +1961-06-16,65.18,65.18,65.18,65.18,3380000,65.18 +1961-06-15,65.69,65.69,65.69,65.69,3220000,65.69 +1961-06-14,65.98,65.98,65.98,65.98,3430000,65.98 +1961-06-13,65.80,65.80,65.80,65.80,3030000,65.80 +1961-06-12,66.15,66.15,66.15,66.15,3260000,66.15 +1961-06-09,66.66,66.66,66.66,66.66,3520000,66.66 +1961-06-08,66.67,66.67,66.67,66.67,3810000,66.67 +1961-06-07,65.64,65.64,65.64,65.64,3980000,65.64 +1961-06-06,66.89,66.89,66.89,66.89,4250000,66.89 +1961-06-05,67.08,67.08,67.08,67.08,4150000,67.08 +1961-06-02,66.73,66.73,66.73,66.73,3670000,66.73 +1961-06-01,66.56,66.56,66.56,66.56,3770000,66.56 +1961-05-31,66.56,66.56,66.56,66.56,4320000,66.56 +1961-05-26,66.43,66.43,66.43,66.43,3780000,66.43 +1961-05-25,66.01,66.01,66.01,66.01,3760000,66.01 +1961-05-24,66.26,66.26,66.26,66.26,3970000,66.26 +1961-05-23,66.68,66.68,66.68,66.68,3660000,66.68 +1961-05-22,66.85,66.85,66.85,66.85,4070000,66.85 +1961-05-19,67.27,67.27,67.27,67.27,4200000,67.27 +1961-05-18,66.99,66.99,66.99,66.99,4610000,66.99 +1961-05-17,67.39,67.39,67.39,67.39,5520000,67.39 +1961-05-16,67.08,67.08,67.08,67.08,5110000,67.08 +1961-05-15,66.83,66.83,66.83,66.83,4840000,66.83 +1961-05-12,66.50,66.50,66.50,66.50,4840000,66.50 +1961-05-11,66.39,66.39,66.39,66.39,5170000,66.39 +1961-05-10,66.41,66.41,66.41,66.41,5450000,66.41 +1961-05-09,66.47,66.47,66.47,66.47,5380000,66.47 +1961-05-08,66.41,66.41,66.41,66.41,5170000,66.41 +1961-05-05,66.52,66.52,66.52,66.52,4980000,66.52 +1961-05-04,66.44,66.44,66.44,66.44,5350000,66.44 +1961-05-03,66.18,66.18,66.18,66.18,4940000,66.18 +1961-05-02,65.64,65.64,65.64,65.64,4110000,65.64 +1961-05-01,65.17,65.17,65.17,65.17,3710000,65.17 +1961-04-28,65.31,65.31,65.31,65.31,3710000,65.31 +1961-04-27,65.46,65.46,65.46,65.46,4450000,65.46 +1961-04-26,65.55,65.55,65.55,65.55,4980000,65.55 +1961-04-25,65.30,65.30,65.30,65.30,4670000,65.30 +1961-04-24,64.40,64.40,64.40,64.40,4590000,64.40 +1961-04-21,65.77,65.77,65.77,65.77,4340000,65.77 +1961-04-20,65.82,65.82,65.82,65.82,4810000,65.82 +1961-04-19,65.81,65.81,65.81,65.81,4870000,65.81 +1961-04-18,66.20,66.20,66.20,66.20,4830000,66.20 +1961-04-17,68.68,68.68,68.68,68.68,5860000,68.68 +1961-04-14,66.37,66.37,66.37,66.37,5240000,66.37 +1961-04-13,66.26,66.26,66.26,66.26,4770000,66.26 +1961-04-12,66.31,66.31,66.31,66.31,4870000,66.31 +1961-04-11,66.62,66.62,66.62,66.62,5230000,66.62 +1961-04-10,66.53,66.53,66.53,66.53,5550000,66.53 +1961-04-07,65.96,65.96,65.96,65.96,5100000,65.96 +1961-04-06,65.61,65.61,65.61,65.61,4910000,65.61 +1961-04-05,65.46,65.46,65.46,65.46,5430000,65.46 +1961-04-04,65.66,65.66,65.66,65.66,7080000,65.66 +1961-04-03,65.60,65.60,65.60,65.60,6470000,65.60 +1961-03-30,65.06,65.06,65.06,65.06,5610000,65.06 +1961-03-29,64.93,64.93,64.93,64.93,5330000,64.93 +1961-03-28,64.38,64.38,64.38,64.38,4630000,64.38 +1961-03-27,64.35,64.35,64.35,64.35,4190000,64.35 +1961-03-24,64.42,64.42,64.42,64.42,4390000,64.42 +1961-03-23,64.53,64.53,64.53,64.53,2170000,64.53 +1961-03-22,64.70,64.70,64.70,64.70,5840000,64.70 +1961-03-21,64.74,64.74,64.74,64.74,5800000,64.74 +1961-03-20,64.86,64.86,64.86,64.86,5780000,64.86 +1961-03-17,64.00,64.00,64.00,64.00,5960000,64.00 +1961-03-16,64.21,64.21,64.21,64.21,5610000,64.21 +1961-03-15,63.57,63.57,63.57,63.57,4900000,63.57 +1961-03-14,63.38,63.38,63.38,63.38,4900000,63.38 +1961-03-13,63.66,63.66,63.66,63.66,5080000,63.66 +1961-03-10,63.48,63.48,63.48,63.48,5950000,63.48 +1961-03-09,63.50,63.50,63.50,63.50,6010000,63.50 +1961-03-08,63.44,63.44,63.44,63.44,5910000,63.44 +1961-03-07,63.47,63.47,63.47,63.47,5540000,63.47 +1961-03-06,64.05,64.05,64.05,64.05,5650000,64.05 +1961-03-03,63.95,63.95,63.95,63.95,5530000,63.95 +1961-03-02,63.85,63.85,63.85,63.85,5300000,63.85 +1961-03-01,63.43,63.43,63.43,63.43,4970000,63.43 +1961-02-28,63.44,63.44,63.44,63.44,5830000,63.44 +1961-02-27,63.30,63.30,63.30,63.30,5470000,63.30 +1961-02-24,62.84,62.84,62.84,62.84,5330000,62.84 +1961-02-23,62.59,62.59,62.59,62.59,5620000,62.59 +1961-02-21,62.36,62.36,62.36,62.36,5070000,62.36 +1961-02-20,62.32,62.32,62.32,62.32,4680000,62.32 +1961-02-17,62.10,62.10,62.10,62.10,4640000,62.10 +1961-02-16,62.30,62.30,62.30,62.30,5070000,62.30 +1961-02-15,61.92,61.92,61.92,61.92,5200000,61.92 +1961-02-14,61.41,61.41,61.41,61.41,4490000,61.41 +1961-02-13,61.14,61.14,61.14,61.14,3560000,61.14 +1961-02-10,61.50,61.50,61.50,61.50,4840000,61.50 +1961-02-09,62.02,62.02,62.02,62.02,5590000,62.02 +1961-02-08,62.21,62.21,62.21,62.21,4940000,62.21 +1961-02-07,61.65,61.65,61.65,61.65,4020000,61.65 +1961-02-06,61.76,61.76,61.76,61.76,3890000,61.76 +1961-02-03,62.22,62.22,62.22,62.22,5210000,62.22 +1961-02-02,62.30,62.30,62.30,62.30,4900000,62.30 +1961-02-01,61.90,61.90,61.90,61.90,4380000,61.90 +1961-01-31,61.78,61.78,61.78,61.78,4690000,61.78 +1961-01-30,61.97,61.97,61.97,61.97,5190000,61.97 +1961-01-27,61.24,61.24,61.24,61.24,4510000,61.24 +1961-01-26,60.62,60.62,60.62,60.62,4110000,60.62 +1961-01-25,60.53,60.53,60.53,60.53,4470000,60.53 +1961-01-24,60.45,60.45,60.45,60.45,4280000,60.45 +1961-01-23,60.29,60.29,60.29,60.29,4450000,60.29 +1961-01-20,59.96,59.96,59.96,59.96,3270000,59.96 +1961-01-19,59.77,59.77,59.77,59.77,4740000,59.77 +1961-01-18,59.68,59.68,59.68,59.68,4390000,59.68 +1961-01-17,59.64,59.64,59.64,59.64,3830000,59.64 +1961-01-16,59.58,59.58,59.58,59.58,4510000,59.58 +1961-01-13,59.60,59.60,59.60,59.60,4520000,59.60 +1961-01-12,59.32,59.32,59.32,59.32,4270000,59.32 +1961-01-11,59.14,59.14,59.14,59.14,4370000,59.14 +1961-01-10,58.97,58.97,58.97,58.97,4840000,58.97 +1961-01-09,58.81,58.81,58.81,58.81,4210000,58.81 +1961-01-06,58.40,58.40,58.40,58.40,3620000,58.40 +1961-01-05,58.57,58.57,58.57,58.57,4130000,58.57 +1961-01-04,58.36,58.36,58.36,58.36,3840000,58.36 +1961-01-03,57.57,57.57,57.57,57.57,2770000,57.57 +1960-12-30,58.11,58.11,58.11,58.11,5300000,58.11 +1960-12-29,58.05,58.05,58.05,58.05,4340000,58.05 +1960-12-28,57.78,57.78,57.78,57.78,3620000,57.78 +1960-12-27,57.52,57.52,57.52,57.52,3270000,57.52 +1960-12-23,57.44,57.44,57.44,57.44,3580000,57.44 +1960-12-22,57.39,57.39,57.39,57.39,3820000,57.39 +1960-12-21,57.55,57.55,57.55,57.55,4060000,57.55 +1960-12-20,57.09,57.09,57.09,57.09,3340000,57.09 +1960-12-19,57.13,57.13,57.13,57.13,3630000,57.13 +1960-12-16,57.20,57.20,57.20,57.20,3770000,57.20 +1960-12-15,56.68,56.68,56.68,56.68,3660000,56.68 +1960-12-14,56.84,56.84,56.84,56.84,3880000,56.84 +1960-12-13,56.88,56.88,56.88,56.88,3500000,56.88 +1960-12-12,56.85,56.85,56.85,56.85,3020000,56.85 +1960-12-09,56.65,56.65,56.65,56.65,4460000,56.65 +1960-12-08,56.15,56.15,56.15,56.15,3540000,56.15 +1960-12-07,56.02,56.02,56.02,56.02,3660000,56.02 +1960-12-06,55.47,55.47,55.47,55.47,3360000,55.47 +1960-12-05,55.31,55.31,55.31,55.31,3290000,55.31 +1960-12-02,55.39,55.39,55.39,55.39,3140000,55.39 +1960-12-01,55.30,55.30,55.30,55.30,3090000,55.30 +1960-11-30,55.54,55.54,55.54,55.54,3080000,55.54 +1960-11-29,55.83,55.83,55.83,55.83,3630000,55.83 +1960-11-28,56.03,56.03,56.03,56.03,3860000,56.03 +1960-11-25,56.13,56.13,56.13,56.13,3190000,56.13 +1960-11-23,55.80,55.80,55.80,55.80,3000000,55.80 +1960-11-22,55.72,55.72,55.72,55.72,3430000,55.72 +1960-11-21,55.93,55.93,55.93,55.93,3090000,55.93 +1960-11-18,55.82,55.82,55.82,55.82,2760000,55.82 +1960-11-17,55.55,55.55,55.55,55.55,2450000,55.55 +1960-11-16,55.70,55.70,55.70,55.70,3110000,55.70 +1960-11-15,55.81,55.81,55.81,55.81,2990000,55.81 +1960-11-14,55.59,55.59,55.59,55.59,2660000,55.59 +1960-11-11,55.87,55.87,55.87,55.87,2730000,55.87 +1960-11-10,56.43,56.43,56.43,56.43,4030000,56.43 +1960-11-09,55.35,55.35,55.35,55.35,3450000,55.35 +1960-11-07,55.11,55.11,55.11,55.11,3540000,55.11 +1960-11-04,54.90,54.90,54.90,54.90,3050000,54.90 +1960-11-03,54.43,54.43,54.43,54.43,2580000,54.43 +1960-11-02,54.22,54.22,54.22,54.22,2780000,54.22 +1960-11-01,53.94,53.94,53.94,53.94,2600000,53.94 +1960-10-31,53.39,53.39,53.39,53.39,2460000,53.39 +1960-10-28,53.41,53.41,53.41,53.41,2490000,53.41 +1960-10-27,53.62,53.62,53.62,53.62,2900000,53.62 +1960-10-26,53.05,53.05,53.05,53.05,3020000,53.05 +1960-10-25,52.20,52.20,52.20,52.20,3030000,52.20 +1960-10-24,52.70,52.70,52.70,52.70,4420000,52.70 +1960-10-21,53.72,53.72,53.72,53.72,3090000,53.72 +1960-10-20,53.86,53.86,53.86,53.86,2910000,53.86 +1960-10-19,54.25,54.25,54.25,54.25,2410000,54.25 +1960-10-18,54.35,54.35,54.35,54.35,2220000,54.35 +1960-10-17,54.63,54.63,54.63,54.63,2280000,54.63 +1960-10-14,54.86,54.86,54.86,54.86,2470000,54.86 +1960-10-13,54.57,54.57,54.57,54.57,2220000,54.57 +1960-10-12,54.15,54.15,54.15,54.15,1890000,54.15 +1960-10-11,54.22,54.22,54.22,54.22,2350000,54.22 +1960-10-10,54.14,54.14,54.14,54.14,2030000,54.14 +1960-10-07,54.03,54.03,54.03,54.03,2530000,54.03 +1960-10-06,53.72,53.72,53.72,53.72,2510000,53.72 +1960-10-05,53.39,53.39,53.39,53.39,2650000,53.39 +1960-10-04,52.99,52.99,52.99,52.99,2270000,52.99 +1960-10-03,53.36,53.36,53.36,53.36,2220000,53.36 +1960-09-30,53.52,53.52,53.52,53.52,3370000,53.52 +1960-09-29,52.62,52.62,52.62,52.62,2850000,52.62 +1960-09-28,52.48,52.48,52.48,52.48,3520000,52.48 +1960-09-27,52.94,52.94,52.94,52.94,3170000,52.94 +1960-09-26,53.06,53.06,53.06,53.06,3930000,53.06 +1960-09-23,53.90,53.90,53.90,53.90,2580000,53.90 +1960-09-22,54.36,54.36,54.36,54.36,1970000,54.36 +1960-09-21,54.57,54.57,54.57,54.57,2930000,54.57 +1960-09-20,54.01,54.01,54.01,54.01,3660000,54.01 +1960-09-19,53.86,53.86,53.86,53.86,3790000,53.86 +1960-09-16,55.11,55.11,55.11,55.11,2340000,55.11 +1960-09-15,55.22,55.22,55.22,55.22,2870000,55.22 +1960-09-14,55.44,55.44,55.44,55.44,2530000,55.44 +1960-09-13,55.83,55.83,55.83,55.83,2180000,55.83 +1960-09-12,55.72,55.72,55.72,55.72,2160000,55.72 +1960-09-09,56.11,56.11,56.11,56.11,2750000,56.11 +1960-09-08,55.74,55.74,55.74,55.74,2670000,55.74 +1960-09-07,55.79,55.79,55.79,55.79,2850000,55.79 +1960-09-06,56.49,56.49,56.49,56.49,2580000,56.49 +1960-09-02,57.00,57.00,57.00,57.00,2680000,57.00 +1960-09-01,57.09,57.09,57.09,57.09,3460000,57.09 +1960-08-31,56.96,56.96,56.96,56.96,3130000,56.96 +1960-08-30,56.84,56.84,56.84,56.84,2890000,56.84 +1960-08-29,57.44,57.44,57.44,57.44,2780000,57.44 +1960-08-26,57.60,57.60,57.60,57.60,2780000,57.60 +1960-08-25,57.79,57.79,57.79,57.79,2680000,57.79 +1960-08-24,58.07,58.07,58.07,58.07,3500000,58.07 +1960-08-23,57.75,57.75,57.75,57.75,3560000,57.75 +1960-08-22,57.19,57.19,57.19,57.19,2760000,57.19 +1960-08-19,57.01,57.01,57.01,57.01,2570000,57.01 +1960-08-18,56.81,56.81,56.81,56.81,2890000,56.81 +1960-08-17,56.84,56.84,56.84,56.84,3090000,56.84 +1960-08-16,56.72,56.72,56.72,56.72,2710000,56.72 +1960-08-15,56.61,56.61,56.61,56.61,2450000,56.61 +1960-08-12,56.66,56.66,56.66,56.66,3160000,56.66 +1960-08-11,56.28,56.28,56.28,56.28,3070000,56.28 +1960-08-10,56.07,56.07,56.07,56.07,2810000,56.07 +1960-08-09,55.84,55.84,55.84,55.84,2700000,55.84 +1960-08-08,55.52,55.52,55.52,55.52,2960000,55.52 +1960-08-05,55.44,55.44,55.44,55.44,3000000,55.44 +1960-08-04,54.89,54.89,54.89,54.89,2840000,54.89 +1960-08-03,54.72,54.72,54.72,54.72,2470000,54.72 +1960-08-02,55.04,55.04,55.04,55.04,2090000,55.04 +1960-08-01,55.53,55.53,55.53,55.53,2440000,55.53 +1960-07-29,55.51,55.51,55.51,55.51,2730000,55.51 +1960-07-28,54.57,54.57,54.57,54.57,3020000,54.57 +1960-07-27,54.17,54.17,54.17,54.17,2560000,54.17 +1960-07-26,54.51,54.51,54.51,54.51,2720000,54.51 +1960-07-25,54.18,54.18,54.18,54.18,2840000,54.18 +1960-07-22,54.72,54.72,54.72,54.72,2850000,54.72 +1960-07-21,55.10,55.10,55.10,55.10,2510000,55.10 +1960-07-20,55.61,55.61,55.61,55.61,2370000,55.61 +1960-07-19,55.70,55.70,55.70,55.70,2490000,55.70 +1960-07-18,55.70,55.70,55.70,55.70,2350000,55.70 +1960-07-15,56.05,56.05,56.05,56.05,2140000,56.05 +1960-07-14,56.12,56.12,56.12,56.12,2480000,56.12 +1960-07-13,56.10,56.10,56.10,56.10,2590000,56.10 +1960-07-12,56.25,56.25,56.25,56.25,2860000,56.25 +1960-07-11,56.87,56.87,56.87,56.87,2920000,56.87 +1960-07-08,57.38,57.38,57.38,57.38,3010000,57.38 +1960-07-07,57.24,57.24,57.24,57.24,3050000,57.24 +1960-07-06,56.94,56.94,56.94,56.94,2970000,56.94 +1960-07-05,57.02,57.02,57.02,57.02,2780000,57.02 +1960-07-01,57.06,57.06,57.06,57.06,2620000,57.06 +1960-06-30,56.92,56.92,56.92,56.92,2940000,56.92 +1960-06-29,56.94,56.94,56.94,56.94,3160000,56.94 +1960-06-28,56.94,56.94,56.94,56.94,3120000,56.94 +1960-06-27,57.33,57.33,57.33,57.33,2960000,57.33 +1960-06-24,57.68,57.68,57.68,57.68,3220000,57.68 +1960-06-23,57.59,57.59,57.59,57.59,3620000,57.59 +1960-06-22,57.28,57.28,57.28,57.28,3600000,57.28 +1960-06-21,57.11,57.11,57.11,57.11,3860000,57.11 +1960-06-20,57.16,57.16,57.16,57.16,3970000,57.16 +1960-06-17,57.44,57.44,57.44,57.44,3920000,57.44 +1960-06-16,57.50,57.50,57.50,57.50,3540000,57.50 +1960-06-15,57.57,57.57,57.57,57.57,3630000,57.57 +1960-06-14,57.91,57.91,57.91,57.91,3430000,57.91 +1960-06-13,57.99,57.99,57.99,57.99,3180000,57.99 +1960-06-10,57.97,57.97,57.97,57.97,2940000,57.97 +1960-06-09,58.00,58.00,58.00,58.00,3820000,58.00 +1960-06-08,57.89,57.89,57.89,57.89,3800000,57.89 +1960-06-07,57.43,57.43,57.43,57.43,3710000,57.43 +1960-06-06,56.89,56.89,56.89,56.89,3220000,56.89 +1960-06-03,56.23,56.23,56.23,56.23,3340000,56.23 +1960-06-02,56.13,56.13,56.13,56.13,3730000,56.13 +1960-06-01,55.89,55.89,55.89,55.89,3770000,55.89 +1960-05-31,55.83,55.83,55.83,55.83,3750000,55.83 +1960-05-27,55.74,55.74,55.74,55.74,3040000,55.74 +1960-05-26,55.71,55.71,55.71,55.71,3720000,55.71 +1960-05-25,55.67,55.67,55.67,55.67,3440000,55.67 +1960-05-24,55.70,55.70,55.70,55.70,3240000,55.70 +1960-05-23,55.76,55.76,55.76,55.76,2530000,55.76 +1960-05-20,55.73,55.73,55.73,55.73,3170000,55.73 +1960-05-19,55.68,55.68,55.68,55.68,3700000,55.68 +1960-05-18,55.44,55.44,55.44,55.44,5240000,55.44 +1960-05-17,55.46,55.46,55.46,55.46,4080000,55.46 +1960-05-16,55.25,55.25,55.25,55.25,3530000,55.25 +1960-05-13,55.30,55.30,55.30,55.30,3750000,55.30 +1960-05-12,54.85,54.85,54.85,54.85,3220000,54.85 +1960-05-11,54.57,54.57,54.57,54.57,2900000,54.57 +1960-05-10,54.42,54.42,54.42,54.42,2870000,54.42 +1960-05-09,54.80,54.80,54.80,54.80,2670000,54.80 +1960-05-06,54.75,54.75,54.75,54.75,2560000,54.75 +1960-05-05,54.86,54.86,54.86,54.86,2670000,54.86 +1960-05-04,55.04,55.04,55.04,55.04,2870000,55.04 +1960-05-03,54.83,54.83,54.83,54.83,2910000,54.83 +1960-05-02,54.13,54.13,54.13,54.13,2930000,54.13 +1960-04-29,54.37,54.37,54.37,54.37,2850000,54.37 +1960-04-28,54.56,54.56,54.56,54.56,3190000,54.56 +1960-04-27,55.04,55.04,55.04,55.04,3020000,55.04 +1960-04-26,55.04,55.04,55.04,55.04,2940000,55.04 +1960-04-25,54.86,54.86,54.86,54.86,2980000,54.86 +1960-04-22,55.42,55.42,55.42,55.42,2850000,55.42 +1960-04-21,55.59,55.59,55.59,55.59,2700000,55.59 +1960-04-20,55.44,55.44,55.44,55.44,3150000,55.44 +1960-04-19,56.13,56.13,56.13,56.13,3080000,56.13 +1960-04-18,56.59,56.59,56.59,56.59,3200000,56.59 +1960-04-14,56.43,56.43,56.43,56.43,2730000,56.43 +1960-04-13,56.30,56.30,56.30,56.30,2730000,56.30 +1960-04-12,56.30,56.30,56.30,56.30,2470000,56.30 +1960-04-11,56.17,56.17,56.17,56.17,2520000,56.17 +1960-04-08,56.39,56.39,56.39,56.39,2820000,56.39 +1960-04-07,56.52,56.52,56.52,56.52,3070000,56.52 +1960-04-06,56.51,56.51,56.51,56.51,3450000,56.51 +1960-04-05,55.37,55.37,55.37,55.37,2840000,55.37 +1960-04-04,55.54,55.54,55.54,55.54,2450000,55.54 +1960-04-01,55.43,55.43,55.43,55.43,2260000,55.43 +1960-03-31,55.34,55.34,55.34,55.34,2690000,55.34 +1960-03-30,55.66,55.66,55.66,55.66,2450000,55.66 +1960-03-29,55.78,55.78,55.78,55.78,2320000,55.78 +1960-03-28,55.86,55.86,55.86,55.86,2500000,55.86 +1960-03-25,55.98,55.98,55.98,55.98,2640000,55.98 +1960-03-24,55.98,55.98,55.98,55.98,2940000,55.98 +1960-03-23,55.74,55.74,55.74,55.74,3020000,55.74 +1960-03-22,55.29,55.29,55.29,55.29,2490000,55.29 +1960-03-21,55.07,55.07,55.07,55.07,2500000,55.07 +1960-03-18,55.01,55.01,55.01,55.01,2620000,55.01 +1960-03-17,54.96,54.96,54.96,54.96,2140000,54.96 +1960-03-16,55.04,55.04,55.04,55.04,2960000,55.04 +1960-03-15,54.74,54.74,54.74,54.74,2690000,54.74 +1960-03-14,54.32,54.32,54.32,54.32,2530000,54.32 +1960-03-11,54.24,54.24,54.24,54.24,2770000,54.24 +1960-03-10,53.83,53.83,53.83,53.83,3350000,53.83 +1960-03-09,54.04,54.04,54.04,54.04,3580000,54.04 +1960-03-08,53.47,53.47,53.47,53.47,3370000,53.47 +1960-03-07,54.02,54.02,54.02,54.02,2900000,54.02 +1960-03-04,54.57,54.57,54.57,54.57,4060000,54.57 +1960-03-03,54.78,54.78,54.78,54.78,3160000,54.78 +1960-03-02,55.62,55.62,55.62,55.62,3110000,55.62 +1960-03-01,56.01,56.01,56.01,56.01,2920000,56.01 +1960-02-29,56.12,56.12,56.12,56.12,2990000,56.12 +1960-02-26,56.16,56.16,56.16,56.16,3380000,56.16 +1960-02-25,55.93,55.93,55.93,55.93,3600000,55.93 +1960-02-24,55.74,55.74,55.74,55.74,2740000,55.74 +1960-02-23,55.94,55.94,55.94,55.94,2960000,55.94 +1960-02-19,56.24,56.24,56.24,56.24,3230000,56.24 +1960-02-18,55.80,55.80,55.80,55.80,3800000,55.80 +1960-02-17,55.03,55.03,55.03,55.03,4210000,55.03 +1960-02-16,54.73,54.73,54.73,54.73,3270000,54.73 +1960-02-15,55.17,55.17,55.17,55.17,2780000,55.17 +1960-02-12,55.46,55.46,55.46,55.46,2230000,55.46 +1960-02-11,55.18,55.18,55.18,55.18,2610000,55.18 +1960-02-10,55.49,55.49,55.49,55.49,2440000,55.49 +1960-02-09,55.84,55.84,55.84,55.84,2860000,55.84 +1960-02-08,55.32,55.32,55.32,55.32,3350000,55.32 +1960-02-05,55.98,55.98,55.98,55.98,2530000,55.98 +1960-02-04,56.27,56.27,56.27,56.27,2600000,56.27 +1960-02-03,56.32,56.32,56.32,56.32,3020000,56.32 +1960-02-02,56.82,56.82,56.82,56.82,3080000,56.82 +1960-02-01,55.96,55.96,55.96,55.96,2820000,55.96 +1960-01-29,55.61,55.61,55.61,55.61,3060000,55.61 +1960-01-28,56.13,56.13,56.13,56.13,2630000,56.13 +1960-01-27,56.72,56.72,56.72,56.72,2460000,56.72 +1960-01-26,56.86,56.86,56.86,56.86,3060000,56.86 +1960-01-25,56.78,56.78,56.78,56.78,2790000,56.78 +1960-01-22,57.38,57.38,57.38,57.38,2690000,57.38 +1960-01-21,57.21,57.21,57.21,57.21,2700000,57.21 +1960-01-20,57.07,57.07,57.07,57.07,2720000,57.07 +1960-01-19,57.27,57.27,57.27,57.27,3100000,57.27 +1960-01-18,57.89,57.89,57.89,57.89,3020000,57.89 +1960-01-15,58.38,58.38,58.38,58.38,3400000,58.38 +1960-01-14,58.40,58.40,58.40,58.40,3560000,58.40 +1960-01-13,58.08,58.08,58.08,58.08,3470000,58.08 +1960-01-12,58.41,58.41,58.41,58.41,3760000,58.41 +1960-01-11,58.77,58.77,58.77,58.77,3470000,58.77 +1960-01-08,59.50,59.50,59.50,59.50,3290000,59.50 +1960-01-07,59.69,59.69,59.69,59.69,3310000,59.69 +1960-01-06,60.13,60.13,60.13,60.13,3730000,60.13 +1960-01-05,60.39,60.39,60.39,60.39,3710000,60.39 +1960-01-04,59.91,59.91,59.91,59.91,3990000,59.91 +1959-12-31,59.89,59.89,59.89,59.89,3810000,59.89 +1959-12-30,59.77,59.77,59.77,59.77,3680000,59.77 +1959-12-29,59.30,59.30,59.30,59.30,3020000,59.30 +1959-12-28,58.98,58.98,58.98,58.98,2830000,58.98 +1959-12-24,59.00,59.00,59.00,59.00,2320000,59.00 +1959-12-23,58.96,58.96,58.96,58.96,2890000,58.96 +1959-12-22,59.14,59.14,59.14,59.14,2930000,59.14 +1959-12-21,59.21,59.21,59.21,59.21,3290000,59.21 +1959-12-18,59.14,59.14,59.14,59.14,3230000,59.14 +1959-12-17,58.86,58.86,58.86,58.86,3040000,58.86 +1959-12-16,58.97,58.97,58.97,58.97,3270000,58.97 +1959-12-15,58.90,58.90,58.90,58.90,3450000,58.90 +1959-12-14,59.04,59.04,59.04,59.04,3100000,59.04 +1959-12-11,58.88,58.88,58.88,58.88,2910000,58.88 +1959-12-10,59.02,59.02,59.02,59.02,3170000,59.02 +1959-12-09,58.97,58.97,58.97,58.97,3430000,58.97 +1959-12-08,59.34,59.34,59.34,59.34,3870000,59.34 +1959-12-07,58.96,58.96,58.96,58.96,3620000,58.96 +1959-12-04,58.85,58.85,58.85,58.85,3590000,58.85 +1959-12-03,58.73,58.73,58.73,58.73,3280000,58.73 +1959-12-02,58.60,58.60,58.60,58.60,3490000,58.60 +1959-12-01,58.70,58.70,58.70,58.70,3990000,58.70 +1959-11-30,58.28,58.28,58.28,58.28,3670000,58.28 +1959-11-27,57.70,57.70,57.70,57.70,3030000,57.70 +1959-11-25,57.44,57.44,57.44,57.44,3550000,57.44 +1959-11-24,57.35,57.35,57.35,57.35,3650000,57.35 +1959-11-23,57.08,57.08,57.08,57.08,3400000,57.08 +1959-11-20,56.97,56.97,56.97,56.97,2960000,56.97 +1959-11-19,56.94,56.94,56.94,56.94,3230000,56.94 +1959-11-18,56.99,56.99,56.99,56.99,3660000,56.99 +1959-11-17,56.38,56.38,56.38,56.38,3570000,56.38 +1959-11-16,56.22,56.22,56.22,56.22,3710000,56.22 +1959-11-13,56.85,56.85,56.85,56.85,3050000,56.85 +1959-11-12,57.17,57.17,57.17,57.17,3600000,57.17 +1959-11-11,57.49,57.49,57.49,57.49,2820000,57.49 +1959-11-10,57.48,57.48,57.48,57.48,3020000,57.48 +1959-11-09,57.50,57.50,57.50,57.50,3700000,57.50 +1959-11-06,57.60,57.60,57.60,57.60,3450000,57.60 +1959-11-05,57.32,57.32,57.32,57.32,3170000,57.32 +1959-11-04,57.26,57.26,57.26,57.26,3940000,57.26 +1959-11-02,57.41,57.41,57.41,57.41,3320000,57.41 +1959-10-30,57.52,57.52,57.52,57.52,3560000,57.52 +1959-10-29,57.41,57.41,57.41,57.41,3890000,57.41 +1959-10-28,57.46,57.46,57.46,57.46,3920000,57.46 +1959-10-27,57.42,57.42,57.42,57.42,4160000,57.42 +1959-10-26,56.94,56.94,56.94,56.94,3580000,56.94 +1959-10-23,56.56,56.56,56.56,56.56,2880000,56.56 +1959-10-22,56.00,56.00,56.00,56.00,3060000,56.00 +1959-10-21,56.55,56.55,56.55,56.55,2730000,56.55 +1959-10-20,56.66,56.66,56.66,56.66,2740000,56.66 +1959-10-19,57.01,57.01,57.01,57.01,2470000,57.01 +1959-10-16,57.33,57.33,57.33,57.33,2760000,57.33 +1959-10-15,56.87,56.87,56.87,56.87,2190000,56.87 +1959-10-14,56.71,56.71,56.71,56.71,2320000,56.71 +1959-10-13,57.16,57.16,57.16,57.16,2530000,57.16 +1959-10-12,57.32,57.32,57.32,57.32,1750000,57.32 +1959-10-09,57.00,57.00,57.00,57.00,2540000,57.00 +1959-10-08,56.81,56.81,56.81,56.81,2510000,56.81 +1959-10-07,56.94,56.94,56.94,56.94,2380000,56.94 +1959-10-06,57.09,57.09,57.09,57.09,2330000,57.09 +1959-10-05,57.14,57.14,57.14,57.14,2100000,57.14 +1959-10-02,57.20,57.20,57.20,57.20,2270000,57.20 +1959-10-01,56.94,56.94,56.94,56.94,2660000,56.94 +1959-09-30,56.88,56.88,56.88,56.88,2850000,56.88 +1959-09-29,57.51,57.51,57.51,57.51,3220000,57.51 +1959-09-28,57.15,57.15,57.15,57.15,2640000,57.15 +1959-09-25,56.73,56.73,56.73,56.73,3280000,56.73 +1959-09-24,56.78,56.78,56.78,56.78,3480000,56.78 +1959-09-23,55.82,55.82,55.82,55.82,3010000,55.82 +1959-09-22,55.14,55.14,55.14,55.14,3000000,55.14 +1959-09-21,55.27,55.27,55.27,55.27,3240000,55.27 +1959-09-18,56.19,56.19,56.19,56.19,2530000,56.19 +1959-09-17,56.41,56.41,56.41,56.41,2090000,56.41 +1959-09-16,56.72,56.72,56.72,56.72,2180000,56.72 +1959-09-15,56.68,56.68,56.68,56.68,2830000,56.68 +1959-09-14,56.99,56.99,56.99,56.99,2590000,56.99 +1959-09-11,57.41,57.41,57.41,57.41,2640000,57.41 +1959-09-10,56.99,56.99,56.99,56.99,2520000,56.99 +1959-09-09,57.29,57.29,57.29,57.29,3030000,57.29 +1959-09-08,57.70,57.70,57.70,57.70,2940000,57.70 +1959-09-04,58.54,58.54,58.54,58.54,2300000,58.54 +1959-09-03,58.26,58.26,58.26,58.26,2330000,58.26 +1959-09-02,58.92,58.92,58.92,58.92,2370000,58.92 +1959-09-01,58.87,58.87,58.87,58.87,2430000,58.87 +1959-08-31,59.60,59.60,59.60,59.60,2140000,59.60 +1959-08-28,59.60,59.60,59.60,59.60,1930000,59.60 +1959-08-27,59.58,59.58,59.58,59.58,2550000,59.58 +1959-08-26,59.07,59.07,59.07,59.07,2210000,59.07 +1959-08-25,58.99,58.99,58.99,58.99,1960000,58.99 +1959-08-24,58.87,58.87,58.87,58.87,1860000,58.87 +1959-08-21,59.08,59.08,59.08,59.08,2000000,59.08 +1959-08-20,59.14,59.14,59.14,59.14,2450000,59.14 +1959-08-19,58.27,58.27,58.27,58.27,3050000,58.27 +1959-08-18,58.62,58.62,58.62,58.62,2280000,58.62 +1959-08-17,59.17,59.17,59.17,59.17,1980000,59.17 +1959-08-14,59.29,59.29,59.29,59.29,1990000,59.29 +1959-08-13,59.15,59.15,59.15,59.15,2020000,59.15 +1959-08-12,59.25,59.25,59.25,59.25,2700000,59.25 +1959-08-11,59.39,59.39,59.39,59.39,2980000,59.39 +1959-08-10,58.62,58.62,58.62,58.62,4190000,58.62 +1959-08-07,59.87,59.87,59.87,59.87,2580000,59.87 +1959-08-06,60.24,60.24,60.24,60.24,2610000,60.24 +1959-08-05,60.30,60.30,60.30,60.30,2630000,60.30 +1959-08-04,60.61,60.61,60.61,60.61,2530000,60.61 +1959-08-03,60.71,60.71,60.71,60.71,2410000,60.71 +1959-07-31,60.51,60.51,60.51,60.51,2270000,60.51 +1959-07-30,60.50,60.50,60.50,60.50,3240000,60.50 +1959-07-29,60.62,60.62,60.62,60.62,3460000,60.62 +1959-07-28,60.32,60.32,60.32,60.32,3190000,60.32 +1959-07-27,60.02,60.02,60.02,60.02,2910000,60.02 +1959-07-24,59.65,59.65,59.65,59.65,2720000,59.65 +1959-07-23,59.67,59.67,59.67,59.67,3310000,59.67 +1959-07-22,59.61,59.61,59.61,59.61,3310000,59.61 +1959-07-21,59.41,59.41,59.41,59.41,2950000,59.41 +1959-07-20,58.91,58.91,58.91,58.91,2500000,58.91 +1959-07-17,59.19,59.19,59.19,59.19,2510000,59.19 +1959-07-16,59.41,59.41,59.41,59.41,3170000,59.41 +1959-07-15,59.59,59.59,59.59,59.59,3280000,59.59 +1959-07-14,59.55,59.55,59.55,59.55,3230000,59.55 +1959-07-13,59.41,59.41,59.41,59.41,3360000,59.41 +1959-07-10,59.91,59.91,59.91,59.91,3600000,59.91 +1959-07-09,59.97,59.97,59.97,59.97,3560000,59.97 +1959-07-08,60.03,60.03,60.03,60.03,4010000,60.03 +1959-07-07,60.01,60.01,60.01,60.01,3840000,60.01 +1959-07-06,59.65,59.65,59.65,59.65,3720000,59.65 +1959-07-02,59.28,59.28,59.28,59.28,3610000,59.28 +1959-07-01,58.97,58.97,58.97,58.97,3150000,58.97 +1959-06-30,58.47,58.47,58.47,58.47,3200000,58.47 +1959-06-29,58.37,58.37,58.37,58.37,3000000,58.37 +1959-06-26,57.98,57.98,57.98,57.98,3100000,57.98 +1959-06-25,57.73,57.73,57.73,57.73,3250000,57.73 +1959-06-24,57.41,57.41,57.41,57.41,3180000,57.41 +1959-06-23,57.12,57.12,57.12,57.12,2600000,57.12 +1959-06-22,57.13,57.13,57.13,57.13,2630000,57.13 +1959-06-19,57.13,57.13,57.13,57.13,2260000,57.13 +1959-06-18,57.05,57.05,57.05,57.05,3150000,57.05 +1959-06-17,57.09,57.09,57.09,57.09,2850000,57.09 +1959-06-16,56.56,56.56,56.56,56.56,2440000,56.56 +1959-06-15,56.99,56.99,56.99,56.99,2410000,56.99 +1959-06-12,57.29,57.29,57.29,57.29,2580000,57.29 +1959-06-11,57.25,57.25,57.25,57.25,3120000,57.25 +1959-06-10,57.19,57.19,57.19,57.19,3310000,57.19 +1959-06-09,56.36,56.36,56.36,56.36,3490000,56.36 +1959-06-08,56.76,56.76,56.76,56.76,2970000,56.76 +1959-06-05,57.51,57.51,57.51,57.51,2800000,57.51 +1959-06-04,57.63,57.63,57.63,57.63,3210000,57.63 +1959-06-03,58.25,58.25,58.25,58.25,2910000,58.25 +1959-06-02,58.23,58.23,58.23,58.23,3120000,58.23 +1959-06-01,58.63,58.63,58.63,58.63,2730000,58.63 +1959-05-29,58.68,58.68,58.68,58.68,2790000,58.68 +1959-05-28,58.39,58.39,58.39,58.39,2970000,58.39 +1959-05-27,58.19,58.19,58.19,58.19,2940000,58.19 +1959-05-26,58.09,58.09,58.09,58.09,2910000,58.09 +1959-05-25,58.18,58.18,58.18,58.18,3260000,58.18 +1959-05-22,58.33,58.33,58.33,58.33,3030000,58.33 +1959-05-21,58.14,58.14,58.14,58.14,3230000,58.14 +1959-05-20,58.09,58.09,58.09,58.09,3550000,58.09 +1959-05-19,58.32,58.32,58.32,58.32,3170000,58.32 +1959-05-18,58.15,58.15,58.15,58.15,2970000,58.15 +1959-05-15,58.16,58.16,58.16,58.16,3510000,58.16 +1959-05-14,58.37,58.37,58.37,58.37,3660000,58.37 +1959-05-13,57.97,57.97,57.97,57.97,3540000,57.97 +1959-05-12,57.96,57.96,57.96,57.96,3550000,57.96 +1959-05-11,57.96,57.96,57.96,57.96,3860000,57.96 +1959-05-08,57.32,57.32,57.32,57.32,3930000,57.32 +1959-05-07,56.88,56.88,56.88,56.88,4530000,56.88 +1959-05-06,57.61,57.61,57.61,57.61,4110000,57.61 +1959-05-05,57.75,57.75,57.75,57.75,3360000,57.75 +1959-05-04,57.65,57.65,57.65,57.65,3060000,57.65 +1959-05-01,57.65,57.65,57.65,57.65,3020000,57.65 +1959-04-30,57.59,57.59,57.59,57.59,3510000,57.59 +1959-04-29,57.69,57.69,57.69,57.69,3470000,57.69 +1959-04-28,57.92,57.92,57.92,57.92,3920000,57.92 +1959-04-27,58.14,58.14,58.14,58.14,3850000,58.14 +1959-04-24,57.96,57.96,57.96,57.96,3790000,57.96 +1959-04-23,57.60,57.60,57.60,57.60,3310000,57.60 +1959-04-22,57.73,57.73,57.73,57.73,3430000,57.73 +1959-04-21,58.11,58.11,58.11,58.11,3650000,58.11 +1959-04-20,58.17,58.17,58.17,58.17,3610000,58.17 +1959-04-17,57.92,57.92,57.92,57.92,3870000,57.92 +1959-04-16,57.43,57.43,57.43,57.43,3790000,57.43 +1959-04-15,56.96,56.96,56.96,56.96,3680000,56.96 +1959-04-14,56.71,56.71,56.71,56.71,3320000,56.71 +1959-04-13,56.43,56.43,56.43,56.43,3140000,56.43 +1959-04-10,56.22,56.22,56.22,56.22,3000000,56.22 +1959-04-09,56.17,56.17,56.17,56.17,2830000,56.17 +1959-04-08,56.21,56.21,56.21,56.21,3260000,56.21 +1959-04-07,56.48,56.48,56.48,56.48,3020000,56.48 +1959-04-06,56.60,56.60,56.60,56.60,3510000,56.60 +1959-04-03,56.44,56.44,56.44,56.44,3680000,56.44 +1959-04-02,56.00,56.00,56.00,56.00,3220000,56.00 +1959-04-01,55.69,55.69,55.69,55.69,2980000,55.69 +1959-03-31,55.44,55.44,55.44,55.44,2820000,55.44 +1959-03-30,55.45,55.45,55.45,55.45,2940000,55.45 +1959-03-26,55.76,55.76,55.76,55.76,2900000,55.76 +1959-03-25,55.88,55.88,55.88,55.88,3280000,55.88 +1959-03-24,55.96,55.96,55.96,55.96,3000000,55.96 +1959-03-23,55.87,55.87,55.87,55.87,3700000,55.87 +1959-03-20,56.39,56.39,56.39,56.39,3770000,56.39 +1959-03-19,56.34,56.34,56.34,56.34,4150000,56.34 +1959-03-18,56.39,56.39,56.39,56.39,4530000,56.39 +1959-03-17,56.52,56.52,56.52,56.52,4730000,56.52 +1959-03-16,56.06,56.06,56.06,56.06,4420000,56.06 +1959-03-13,56.67,56.67,56.67,56.67,4880000,56.67 +1959-03-12,56.60,56.60,56.60,56.60,4690000,56.60 +1959-03-11,56.35,56.35,56.35,56.35,4160000,56.35 +1959-03-10,56.31,56.31,56.31,56.31,3920000,56.31 +1959-03-09,56.15,56.15,56.15,56.15,3530000,56.15 +1959-03-06,56.21,56.21,56.21,56.21,3930000,56.21 +1959-03-05,56.43,56.43,56.43,56.43,3930000,56.43 +1959-03-04,56.35,56.35,56.35,56.35,4150000,56.35 +1959-03-03,56.25,56.25,56.25,56.25,4790000,56.25 +1959-03-02,55.73,55.73,55.73,55.73,4210000,55.73 +1959-02-27,55.41,55.41,55.41,55.41,4300000,55.41 +1959-02-26,55.34,55.34,55.34,55.34,3930000,55.34 +1959-02-25,55.24,55.24,55.24,55.24,3780000,55.24 +1959-02-24,55.48,55.48,55.48,55.48,4340000,55.48 +1959-02-20,55.52,55.52,55.52,55.52,4190000,55.52 +1959-02-19,55.50,55.50,55.50,55.50,4160000,55.50 +1959-02-18,54.30,54.30,54.30,54.30,3480000,54.30 +1959-02-17,54.29,54.29,54.29,54.29,3190000,54.29 +1959-02-16,54.50,54.50,54.50,54.50,3480000,54.50 +1959-02-13,54.42,54.42,54.42,54.42,3070000,54.42 +1959-02-12,54.00,54.00,54.00,54.00,2630000,54.00 +1959-02-11,54.35,54.35,54.35,54.35,3000000,54.35 +1959-02-10,54.32,54.32,54.32,54.32,2960000,54.32 +1959-02-09,53.58,53.58,53.58,53.58,3130000,53.58 +1959-02-06,54.37,54.37,54.37,54.37,3010000,54.37 +1959-02-05,54.81,54.81,54.81,54.81,3140000,54.81 +1959-02-04,55.06,55.06,55.06,55.06,3170000,55.06 +1959-02-03,55.28,55.28,55.28,55.28,3220000,55.28 +1959-02-02,55.21,55.21,55.21,55.21,3610000,55.21 +1959-01-30,55.45,55.45,55.45,55.45,3600000,55.45 +1959-01-29,55.20,55.20,55.20,55.20,3470000,55.20 +1959-01-28,55.16,55.16,55.16,55.16,4190000,55.16 +1959-01-27,55.78,55.78,55.78,55.78,3480000,55.78 +1959-01-26,55.77,55.77,55.77,55.77,3980000,55.77 +1959-01-23,56.00,56.00,56.00,56.00,3600000,56.00 +1959-01-22,55.97,55.97,55.97,55.97,4250000,55.97 +1959-01-21,56.04,56.04,56.04,56.04,3940000,56.04 +1959-01-20,55.72,55.72,55.72,55.72,3680000,55.72 +1959-01-19,55.68,55.68,55.68,55.68,3840000,55.68 +1959-01-16,55.81,55.81,55.81,55.81,4300000,55.81 +1959-01-15,55.83,55.83,55.83,55.83,4500000,55.83 +1959-01-14,55.62,55.62,55.62,55.62,4090000,55.62 +1959-01-13,55.47,55.47,55.47,55.47,3790000,55.47 +1959-01-12,55.78,55.78,55.78,55.78,4320000,55.78 +1959-01-09,55.77,55.77,55.77,55.77,4760000,55.77 +1959-01-08,55.40,55.40,55.40,55.40,4030000,55.40 +1959-01-07,54.89,54.89,54.89,54.89,4140000,54.89 +1959-01-06,55.59,55.59,55.59,55.59,3690000,55.59 +1959-01-05,55.66,55.66,55.66,55.66,4210000,55.66 +1959-01-02,55.44,55.44,55.44,55.44,3380000,55.44 +1958-12-31,55.21,55.21,55.21,55.21,3970000,55.21 +1958-12-30,54.93,54.93,54.93,54.93,3900000,54.93 +1958-12-29,54.74,54.74,54.74,54.74,3790000,54.74 +1958-12-24,54.11,54.11,54.11,54.11,3050000,54.11 +1958-12-23,53.42,53.42,53.42,53.42,2870000,53.42 +1958-12-22,53.71,53.71,53.71,53.71,3030000,53.71 +1958-12-19,54.07,54.07,54.07,54.07,3540000,54.07 +1958-12-18,54.15,54.15,54.15,54.15,3900000,54.15 +1958-12-17,53.92,53.92,53.92,53.92,3900000,53.92 +1958-12-16,53.57,53.57,53.57,53.57,3970000,53.57 +1958-12-15,53.37,53.37,53.37,53.37,3340000,53.37 +1958-12-12,53.22,53.22,53.22,53.22,3140000,53.22 +1958-12-11,53.35,53.35,53.35,53.35,4250000,53.35 +1958-12-10,53.46,53.46,53.46,53.46,4340000,53.46 +1958-12-09,52.82,52.82,52.82,52.82,3790000,52.82 +1958-12-08,52.46,52.46,52.46,52.46,3590000,52.46 +1958-12-05,52.46,52.46,52.46,52.46,3360000,52.46 +1958-12-04,52.55,52.55,52.55,52.55,3630000,52.55 +1958-12-03,52.53,52.53,52.53,52.53,3460000,52.53 +1958-12-02,52.46,52.46,52.46,52.46,3320000,52.46 +1958-12-01,52.69,52.69,52.69,52.69,3800000,52.69 +1958-11-28,52.48,52.48,52.48,52.48,4120000,52.48 +1958-11-26,51.90,51.90,51.90,51.90,4090000,51.90 +1958-11-25,51.02,51.02,51.02,51.02,3940000,51.02 +1958-11-24,52.03,52.03,52.03,52.03,4770000,52.03 +1958-11-21,52.70,52.70,52.70,52.70,3950000,52.70 +1958-11-20,53.21,53.21,53.21,53.21,4320000,53.21 +1958-11-19,53.20,53.20,53.20,53.20,4090000,53.20 +1958-11-18,53.13,53.13,53.13,53.13,3820000,53.13 +1958-11-17,53.24,53.24,53.24,53.24,4540000,53.24 +1958-11-14,53.09,53.09,53.09,53.09,4390000,53.09 +1958-11-13,52.83,52.83,52.83,52.83,4200000,52.83 +1958-11-12,53.05,53.05,53.05,53.05,4440000,53.05 +1958-11-11,52.98,52.98,52.98,52.98,4040000,52.98 +1958-11-10,52.57,52.57,52.57,52.57,3730000,52.57 +1958-11-07,52.26,52.26,52.26,52.26,3700000,52.26 +1958-11-06,52.45,52.45,52.45,52.45,4890000,52.45 +1958-11-05,52.03,52.03,52.03,52.03,4080000,52.03 +1958-11-03,51.56,51.56,51.56,51.56,3240000,51.56 +1958-10-31,51.33,51.33,51.33,51.33,3920000,51.33 +1958-10-30,51.27,51.27,51.27,51.27,4360000,51.27 +1958-10-29,51.07,51.07,51.07,51.07,4790000,51.07 +1958-10-28,50.58,50.58,50.58,50.58,3670000,50.58 +1958-10-27,50.42,50.42,50.42,50.42,3980000,50.42 +1958-10-24,50.81,50.81,50.81,50.81,3770000,50.81 +1958-10-23,50.97,50.97,50.97,50.97,3610000,50.97 +1958-10-22,51.07,51.07,51.07,51.07,3500000,51.07 +1958-10-21,51.27,51.27,51.27,51.27,4010000,51.27 +1958-10-20,51.27,51.27,51.27,51.27,4560000,51.27 +1958-10-17,51.46,51.46,51.46,51.46,5360000,51.46 +1958-10-16,50.94,50.94,50.94,50.94,4560000,50.94 +1958-10-15,50.58,50.58,50.58,50.58,4810000,50.58 +1958-10-14,51.26,51.26,51.26,51.26,5110000,51.26 +1958-10-13,51.62,51.62,51.62,51.62,4550000,51.62 +1958-10-10,51.39,51.39,51.39,51.39,4610000,51.39 +1958-10-09,51.05,51.05,51.05,51.05,3670000,51.05 +1958-10-08,51.06,51.06,51.06,51.06,3680000,51.06 +1958-10-07,51.07,51.07,51.07,51.07,3570000,51.07 +1958-10-06,51.07,51.07,51.07,51.07,3570000,51.07 +1958-10-03,50.37,50.37,50.37,50.37,3830000,50.37 +1958-10-02,50.17,50.17,50.17,50.17,3750000,50.17 +1958-10-01,49.98,49.98,49.98,49.98,3780000,49.98 +1958-09-30,50.06,50.06,50.06,50.06,4160000,50.06 +1958-09-29,49.87,49.87,49.87,49.87,3680000,49.87 +1958-09-26,49.66,49.66,49.66,49.66,3420000,49.66 +1958-09-25,49.57,49.57,49.57,49.57,4490000,49.57 +1958-09-24,49.78,49.78,49.78,49.78,3120000,49.78 +1958-09-23,49.56,49.56,49.56,49.56,3950000,49.56 +1958-09-22,49.20,49.20,49.20,49.20,3490000,49.20 +1958-09-19,49.40,49.40,49.40,49.40,3880000,49.40 +1958-09-18,49.38,49.38,49.38,49.38,3460000,49.38 +1958-09-17,49.35,49.35,49.35,49.35,3790000,49.35 +1958-09-16,49.35,49.35,49.35,49.35,3940000,49.35 +1958-09-15,48.96,48.96,48.96,48.96,3040000,48.96 +1958-09-12,48.53,48.53,48.53,48.53,3100000,48.53 +1958-09-11,48.64,48.64,48.64,48.64,3300000,48.64 +1958-09-10,48.31,48.31,48.31,48.31,2820000,48.31 +1958-09-09,48.46,48.46,48.46,48.46,3480000,48.46 +1958-09-08,48.13,48.13,48.13,48.13,3030000,48.13 +1958-09-05,47.97,47.97,47.97,47.97,2520000,47.97 +1958-09-04,48.10,48.10,48.10,48.10,3100000,48.10 +1958-09-03,48.18,48.18,48.18,48.18,3240000,48.18 +1958-09-02,48.00,48.00,48.00,48.00,2930000,48.00 +1958-08-29,47.75,47.75,47.75,47.75,2260000,47.75 +1958-08-28,47.66,47.66,47.66,47.66,2540000,47.66 +1958-08-27,47.91,47.91,47.91,47.91,3250000,47.91 +1958-08-26,47.90,47.90,47.90,47.90,2910000,47.90 +1958-08-25,47.74,47.74,47.74,47.74,2610000,47.74 +1958-08-22,47.73,47.73,47.73,47.73,2660000,47.73 +1958-08-21,47.63,47.63,47.63,47.63,2500000,47.63 +1958-08-20,47.32,47.32,47.32,47.32,2460000,47.32 +1958-08-19,47.30,47.30,47.30,47.30,2250000,47.30 +1958-08-18,47.22,47.22,47.22,47.22,2390000,47.22 +1958-08-15,47.50,47.50,47.50,47.50,2960000,47.50 +1958-08-14,47.91,47.91,47.91,47.91,3370000,47.91 +1958-08-13,47.81,47.81,47.81,47.81,2790000,47.81 +1958-08-12,47.73,47.73,47.73,47.73,2600000,47.73 +1958-08-11,48.16,48.16,48.16,48.16,2870000,48.16 +1958-08-08,48.05,48.05,48.05,48.05,3650000,48.05 +1958-08-07,47.77,47.77,47.77,47.77,3200000,47.77 +1958-08-06,47.46,47.46,47.46,47.46,3440000,47.46 +1958-08-05,47.75,47.75,47.75,47.75,4210000,47.75 +1958-08-04,47.94,47.94,47.94,47.94,4000000,47.94 +1958-08-01,47.49,47.49,47.49,47.49,3380000,47.49 +1958-07-31,47.19,47.19,47.19,47.19,4440000,47.19 +1958-07-30,47.09,47.09,47.09,47.09,3680000,47.09 +1958-07-29,46.96,46.96,46.96,46.96,3310000,46.96 +1958-07-28,47.15,47.15,47.15,47.15,3940000,47.15 +1958-07-25,46.97,46.97,46.97,46.97,4430000,46.97 +1958-07-24,46.65,46.65,46.65,46.65,3740000,46.65 +1958-07-23,46.40,46.40,46.40,46.40,3550000,46.40 +1958-07-22,46.41,46.41,46.41,46.41,3420000,46.41 +1958-07-21,46.33,46.33,46.33,46.33,3440000,46.33 +1958-07-18,45.77,45.77,45.77,45.77,3350000,45.77 +1958-07-17,45.55,45.55,45.55,45.55,3180000,45.55 +1958-07-16,45.25,45.25,45.25,45.25,3240000,45.25 +1958-07-15,45.11,45.11,45.11,45.11,3090000,45.11 +1958-07-14,45.14,45.14,45.14,45.14,2540000,45.14 +1958-07-11,45.72,45.72,45.72,45.72,2400000,45.72 +1958-07-10,45.42,45.42,45.42,45.42,2510000,45.42 +1958-07-09,45.25,45.25,45.25,45.25,2630000,45.25 +1958-07-08,45.40,45.40,45.40,45.40,2430000,45.40 +1958-07-07,45.62,45.62,45.62,45.62,2510000,45.62 +1958-07-03,45.47,45.47,45.47,45.47,2630000,45.47 +1958-07-02,45.32,45.32,45.32,45.32,2370000,45.32 +1958-07-01,45.28,45.28,45.28,45.28,2600000,45.28 +1958-06-30,45.24,45.24,45.24,45.24,2820000,45.24 +1958-06-27,44.90,44.90,44.90,44.90,2800000,44.90 +1958-06-26,44.84,44.84,44.84,44.84,2910000,44.84 +1958-06-25,44.63,44.63,44.63,44.63,2720000,44.63 +1958-06-24,44.52,44.52,44.52,44.52,2560000,44.52 +1958-06-23,44.69,44.69,44.69,44.69,2340000,44.69 +1958-06-20,44.85,44.85,44.85,44.85,2590000,44.85 +1958-06-19,44.61,44.61,44.61,44.61,2690000,44.61 +1958-06-18,45.34,45.34,45.34,45.34,2640000,45.34 +1958-06-17,44.94,44.94,44.94,44.94,2950000,44.94 +1958-06-16,45.18,45.18,45.18,45.18,2870000,45.18 +1958-06-13,45.02,45.02,45.02,45.02,3100000,45.02 +1958-06-12,44.75,44.75,44.75,44.75,2760000,44.75 +1958-06-11,44.49,44.49,44.49,44.49,2570000,44.49 +1958-06-10,44.48,44.48,44.48,44.48,2390000,44.48 +1958-06-09,44.57,44.57,44.57,44.57,2380000,44.57 +1958-06-06,44.64,44.64,44.64,44.64,2680000,44.64 +1958-06-05,44.55,44.55,44.55,44.55,2600000,44.55 +1958-06-04,44.50,44.50,44.50,44.50,2690000,44.50 +1958-06-03,44.46,44.46,44.46,44.46,2780000,44.46 +1958-06-02,44.31,44.31,44.31,44.31,2770000,44.31 +1958-05-29,44.09,44.09,44.09,44.09,2350000,44.09 +1958-05-28,43.85,43.85,43.85,43.85,2260000,43.85 +1958-05-27,43.79,43.79,43.79,43.79,2180000,43.79 +1958-05-26,43.85,43.85,43.85,43.85,2500000,43.85 +1958-05-23,43.87,43.87,43.87,43.87,2570000,43.87 +1958-05-22,43.78,43.78,43.78,43.78,2950000,43.78 +1958-05-21,43.55,43.55,43.55,43.55,2580000,43.55 +1958-05-20,43.61,43.61,43.61,43.61,2500000,43.61 +1958-05-19,43.24,43.24,43.24,43.24,1910000,43.24 +1958-05-16,43.36,43.36,43.36,43.36,2030000,43.36 +1958-05-15,43.34,43.34,43.34,43.34,2470000,43.34 +1958-05-14,43.12,43.12,43.12,43.12,3060000,43.12 +1958-05-13,43.62,43.62,43.62,43.62,2940000,43.62 +1958-05-12,43.75,43.75,43.75,43.75,2780000,43.75 +1958-05-09,44.09,44.09,44.09,44.09,2760000,44.09 +1958-05-08,43.99,43.99,43.99,43.99,2790000,43.99 +1958-05-07,43.93,43.93,43.93,43.93,2770000,43.93 +1958-05-06,44.01,44.01,44.01,44.01,3110000,44.01 +1958-05-05,43.79,43.79,43.79,43.79,2670000,43.79 +1958-05-02,43.69,43.69,43.69,43.69,2290000,43.69 +1958-05-01,43.54,43.54,43.54,43.54,2630000,43.54 +1958-04-30,43.44,43.44,43.44,43.44,2900000,43.44 +1958-04-29,43.00,43.00,43.00,43.00,2190000,43.00 +1958-04-28,43.22,43.22,43.22,43.22,2400000,43.22 +1958-04-25,43.36,43.36,43.36,43.36,3020000,43.36 +1958-04-24,43.14,43.14,43.14,43.14,2870000,43.14 +1958-04-23,42.80,42.80,42.80,42.80,2720000,42.80 +1958-04-22,42.80,42.80,42.80,42.80,2440000,42.80 +1958-04-21,42.93,42.93,42.93,42.93,2550000,42.93 +1958-04-18,42.71,42.71,42.71,42.71,2700000,42.71 +1958-04-17,42.25,42.25,42.25,42.25,2500000,42.25 +1958-04-16,42.10,42.10,42.10,42.10,2240000,42.10 +1958-04-15,42.43,42.43,42.43,42.43,2590000,42.43 +1958-04-14,42.00,42.00,42.00,42.00,2180000,42.00 +1958-04-11,41.74,41.74,41.74,41.74,2060000,41.74 +1958-04-10,41.70,41.70,41.70,41.70,2000000,41.70 +1958-04-09,41.65,41.65,41.65,41.65,2040000,41.65 +1958-04-08,41.43,41.43,41.43,41.43,2190000,41.43 +1958-04-07,41.33,41.33,41.33,41.33,2090000,41.33 +1958-04-03,41.48,41.48,41.48,41.48,2130000,41.48 +1958-04-02,41.60,41.60,41.60,41.60,2390000,41.60 +1958-04-01,41.93,41.93,41.93,41.93,2070000,41.93 +1958-03-31,42.10,42.10,42.10,42.10,2050000,42.10 +1958-03-28,42.20,42.20,42.20,42.20,1930000,42.20 +1958-03-27,42.17,42.17,42.17,42.17,2140000,42.17 +1958-03-26,42.30,42.30,42.30,42.30,1990000,42.30 +1958-03-25,42.44,42.44,42.44,42.44,2210000,42.44 +1958-03-24,42.58,42.58,42.58,42.58,2580000,42.58 +1958-03-21,42.42,42.42,42.42,42.42,2430000,42.42 +1958-03-20,42.11,42.11,42.11,42.11,2280000,42.11 +1958-03-19,42.09,42.09,42.09,42.09,2410000,42.09 +1958-03-18,41.89,41.89,41.89,41.89,2070000,41.89 +1958-03-17,42.04,42.04,42.04,42.04,2130000,42.04 +1958-03-14,42.33,42.33,42.33,42.33,2150000,42.33 +1958-03-13,42.46,42.46,42.46,42.46,2830000,42.46 +1958-03-12,42.41,42.41,42.41,42.41,2420000,42.41 +1958-03-11,42.51,42.51,42.51,42.51,2640000,42.51 +1958-03-10,42.21,42.21,42.21,42.21,1980000,42.21 +1958-03-07,42.07,42.07,42.07,42.07,2130000,42.07 +1958-03-06,42.00,42.00,42.00,42.00,2470000,42.00 +1958-03-05,41.47,41.47,41.47,41.47,2020000,41.47 +1958-03-04,41.35,41.35,41.35,41.35,2010000,41.35 +1958-03-03,41.13,41.13,41.13,41.13,1810000,41.13 +1958-02-28,40.84,40.84,40.84,40.84,1580000,40.84 +1958-02-27,40.68,40.68,40.68,40.68,1670000,40.68 +1958-02-26,40.92,40.92,40.92,40.92,1880000,40.92 +1958-02-25,40.61,40.61,40.61,40.61,1920000,40.61 +1958-02-24,40.65,40.65,40.65,40.65,1570000,40.65 +1958-02-21,40.88,40.88,40.88,40.88,1700000,40.88 +1958-02-20,40.91,40.91,40.91,40.91,2060000,40.91 +1958-02-19,41.15,41.15,41.15,41.15,2070000,41.15 +1958-02-18,41.17,41.17,41.17,41.17,1680000,41.17 +1958-02-17,41.11,41.11,41.11,41.11,1700000,41.11 +1958-02-14,41.33,41.33,41.33,41.33,2070000,41.33 +1958-02-13,40.94,40.94,40.94,40.94,1880000,40.94 +1958-02-12,40.93,40.93,40.93,40.93,2030000,40.93 +1958-02-11,41.11,41.11,41.11,41.11,2110000,41.11 +1958-02-10,41.48,41.48,41.48,41.48,1900000,41.48 +1958-02-07,41.73,41.73,41.73,41.73,2220000,41.73 +1958-02-06,42.10,42.10,42.10,42.10,2210000,42.10 +1958-02-05,42.19,42.19,42.19,42.19,2480000,42.19 +1958-02-04,42.46,42.46,42.46,42.46,2970000,42.46 +1958-02-03,42.04,42.04,42.04,42.04,2490000,42.04 +1958-01-31,41.70,41.70,41.70,41.70,2030000,41.70 +1958-01-30,41.68,41.68,41.68,41.68,2150000,41.68 +1958-01-29,41.88,41.88,41.88,41.88,2220000,41.88 +1958-01-28,41.63,41.63,41.63,41.63,2030000,41.63 +1958-01-27,41.59,41.59,41.59,41.59,2320000,41.59 +1958-01-24,41.71,41.71,41.71,41.71,2830000,41.71 +1958-01-23,41.36,41.36,41.36,41.36,1910000,41.36 +1958-01-22,41.20,41.20,41.20,41.20,2390000,41.20 +1958-01-21,41.30,41.30,41.30,41.30,2160000,41.30 +1958-01-20,41.35,41.35,41.35,41.35,2310000,41.35 +1958-01-17,41.10,41.10,41.10,41.10,2200000,41.10 +1958-01-16,41.06,41.06,41.06,41.06,3950000,41.06 +1958-01-15,40.99,40.99,40.99,40.99,2080000,40.99 +1958-01-14,40.67,40.67,40.67,40.67,2010000,40.67 +1958-01-13,40.49,40.49,40.49,40.49,1860000,40.49 +1958-01-10,40.37,40.37,40.37,40.37,2010000,40.37 +1958-01-09,40.75,40.75,40.75,40.75,2180000,40.75 +1958-01-08,40.99,40.99,40.99,40.99,2230000,40.99 +1958-01-07,41.00,41.00,41.00,41.00,2220000,41.00 +1958-01-06,40.68,40.68,40.68,40.68,2500000,40.68 +1958-01-03,40.87,40.87,40.87,40.87,2440000,40.87 +1958-01-02,40.33,40.33,40.33,40.33,1800000,40.33 +1957-12-31,39.99,39.99,39.99,39.99,5070000,39.99 +1957-12-30,39.58,39.58,39.58,39.58,3750000,39.58 +1957-12-27,39.78,39.78,39.78,39.78,2620000,39.78 +1957-12-26,39.92,39.92,39.92,39.92,2280000,39.92 +1957-12-24,39.52,39.52,39.52,39.52,2220000,39.52 +1957-12-23,39.48,39.48,39.48,39.48,2790000,39.48 +1957-12-20,39.48,39.48,39.48,39.48,2500000,39.48 +1957-12-19,39.80,39.80,39.80,39.80,2740000,39.80 +1957-12-18,39.38,39.38,39.38,39.38,2750000,39.38 +1957-12-17,39.42,39.42,39.42,39.42,2820000,39.42 +1957-12-16,40.12,40.12,40.12,40.12,2350000,40.12 +1957-12-13,40.73,40.73,40.73,40.73,2310000,40.73 +1957-12-12,40.55,40.55,40.55,40.55,2330000,40.55 +1957-12-11,40.51,40.51,40.51,40.51,2240000,40.51 +1957-12-10,40.56,40.56,40.56,40.56,2360000,40.56 +1957-12-09,40.92,40.92,40.92,40.92,2230000,40.92 +1957-12-06,41.31,41.31,41.31,41.31,2350000,41.31 +1957-12-05,41.52,41.52,41.52,41.52,2020000,41.52 +1957-12-04,41.54,41.54,41.54,41.54,2220000,41.54 +1957-12-03,41.37,41.37,41.37,41.37,2060000,41.37 +1957-12-02,41.36,41.36,41.36,41.36,2430000,41.36 +1957-11-29,41.72,41.72,41.72,41.72,2740000,41.72 +1957-11-27,41.25,41.25,41.25,41.25,3330000,41.25 +1957-11-26,40.09,40.09,40.09,40.09,3650000,40.09 +1957-11-25,41.18,41.18,41.18,41.18,2600000,41.18 +1957-11-22,40.87,40.87,40.87,40.87,2850000,40.87 +1957-11-21,40.48,40.48,40.48,40.48,2900000,40.48 +1957-11-20,39.92,39.92,39.92,39.92,2400000,39.92 +1957-11-19,39.81,39.81,39.81,39.81,2240000,39.81 +1957-11-18,40.04,40.04,40.04,40.04,2110000,40.04 +1957-11-15,40.37,40.37,40.37,40.37,3510000,40.37 +1957-11-14,39.44,39.44,39.44,39.44,2450000,39.44 +1957-11-13,39.55,39.55,39.55,39.55,2120000,39.55 +1957-11-12,39.60,39.60,39.60,39.60,2050000,39.60 +1957-11-11,40.18,40.18,40.18,40.18,1540000,40.18 +1957-11-08,40.19,40.19,40.19,40.19,2140000,40.19 +1957-11-07,40.67,40.67,40.67,40.67,2580000,40.67 +1957-11-06,40.43,40.43,40.43,40.43,2550000,40.43 +1957-11-04,40.37,40.37,40.37,40.37,2380000,40.37 +1957-11-01,40.44,40.44,40.44,40.44,2060000,40.44 +1957-10-31,41.06,41.06,41.06,41.06,2170000,41.06 +1957-10-30,41.02,41.02,41.02,41.02,2060000,41.02 +1957-10-29,40.69,40.69,40.69,40.69,1860000,40.69 +1957-10-28,40.42,40.42,40.42,40.42,1800000,40.42 +1957-10-25,40.59,40.59,40.59,40.59,2400000,40.59 +1957-10-24,40.71,40.71,40.71,40.71,4030000,40.71 +1957-10-23,40.73,40.73,40.73,40.73,4600000,40.73 +1957-10-22,38.98,38.98,38.98,38.98,5090000,38.98 +1957-10-21,39.15,39.15,39.15,39.15,4670000,39.15 +1957-10-18,40.33,40.33,40.33,40.33,2670000,40.33 +1957-10-17,40.65,40.65,40.65,40.65,3060000,40.65 +1957-10-16,41.33,41.33,41.33,41.33,2050000,41.33 +1957-10-15,41.67,41.67,41.67,41.67,2620000,41.67 +1957-10-14,41.24,41.24,41.24,41.24,2770000,41.24 +1957-10-11,40.94,40.94,40.94,40.94,4460000,40.94 +1957-10-10,40.96,40.96,40.96,40.96,3300000,40.96 +1957-10-09,41.99,41.99,41.99,41.99,2120000,41.99 +1957-10-08,41.95,41.95,41.95,41.95,3190000,41.95 +1957-10-07,42.22,42.22,42.22,42.22,2490000,42.22 +1957-10-04,42.79,42.79,42.79,42.79,1520000,42.79 +1957-10-03,43.14,43.14,43.14,43.14,1590000,43.14 +1957-10-02,43.10,43.10,43.10,43.10,1760000,43.10 +1957-10-01,42.76,42.76,42.76,42.76,1680000,42.76 +1957-09-30,42.42,42.42,42.42,42.42,1520000,42.42 +1957-09-27,42.55,42.55,42.55,42.55,1750000,42.55 +1957-09-26,42.57,42.57,42.57,42.57,2130000,42.57 +1957-09-25,42.98,42.98,42.98,42.98,2770000,42.98 +1957-09-24,42.98,42.98,42.98,42.98,2840000,42.98 +1957-09-23,42.69,42.69,42.69,42.69,3160000,42.69 +1957-09-20,43.69,43.69,43.69,43.69,2340000,43.69 +1957-09-19,44.40,44.40,44.40,44.40,1520000,44.40 +1957-09-18,44.69,44.69,44.69,44.69,1540000,44.69 +1957-09-17,44.64,44.64,44.64,44.64,1490000,44.64 +1957-09-16,44.58,44.58,44.58,44.58,1290000,44.58 +1957-09-13,44.80,44.80,44.80,44.80,1620000,44.80 +1957-09-12,44.82,44.82,44.82,44.82,2010000,44.82 +1957-09-11,44.26,44.26,44.26,44.26,2130000,44.26 +1957-09-10,43.87,43.87,43.87,43.87,1870000,43.87 +1957-09-09,44.28,44.28,44.28,44.28,1420000,44.28 +1957-09-06,44.68,44.68,44.68,44.68,1320000,44.68 +1957-09-05,44.82,44.82,44.82,44.82,1420000,44.82 +1957-09-04,45.05,45.05,45.05,45.05,1260000,45.05 +1957-09-03,45.44,45.44,45.44,45.44,1490000,45.44 +1957-08-30,45.22,45.22,45.22,45.22,1600000,45.22 +1957-08-29,44.46,44.46,44.46,44.46,1630000,44.46 +1957-08-28,44.64,44.64,44.64,44.64,1840000,44.64 +1957-08-27,44.61,44.61,44.61,44.61,2250000,44.61 +1957-08-26,43.89,43.89,43.89,43.89,2680000,43.89 +1957-08-23,44.51,44.51,44.51,44.51,1960000,44.51 +1957-08-22,45.16,45.16,45.16,45.16,1500000,45.16 +1957-08-21,45.49,45.49,45.49,45.49,1720000,45.49 +1957-08-20,45.29,45.29,45.29,45.29,2700000,45.29 +1957-08-19,44.91,44.91,44.91,44.91,2040000,44.91 +1957-08-16,45.83,45.83,45.83,45.83,1470000,45.83 +1957-08-15,45.75,45.75,45.75,45.75,2040000,45.75 +1957-08-14,45.73,45.73,45.73,45.73,2040000,45.73 +1957-08-13,46.30,46.30,46.30,46.30,1580000,46.30 +1957-08-12,46.33,46.33,46.33,46.33,1650000,46.33 +1957-08-09,46.92,46.92,46.92,46.92,1570000,46.92 +1957-08-08,46.90,46.90,46.90,46.90,1690000,46.90 +1957-08-07,47.03,47.03,47.03,47.03,2460000,47.03 +1957-08-06,46.67,46.67,46.67,46.67,1910000,46.67 +1957-08-05,47.26,47.26,47.26,47.26,1790000,47.26 +1957-08-02,47.68,47.68,47.68,47.68,1610000,47.68 +1957-08-01,47.79,47.79,47.79,47.79,1660000,47.79 +1957-07-31,47.91,47.91,47.91,47.91,1830000,47.91 +1957-07-30,47.92,47.92,47.92,47.92,1780000,47.92 +1957-07-29,47.92,47.92,47.92,47.92,1990000,47.92 +1957-07-26,48.45,48.45,48.45,48.45,1710000,48.45 +1957-07-25,48.61,48.61,48.61,48.61,1800000,48.61 +1957-07-24,48.61,48.61,48.61,48.61,1730000,48.61 +1957-07-23,48.56,48.56,48.56,48.56,1840000,48.56 +1957-07-22,48.47,48.47,48.47,48.47,1950000,48.47 +1957-07-19,48.58,48.58,48.58,48.58,1930000,48.58 +1957-07-18,48.53,48.53,48.53,48.53,2130000,48.53 +1957-07-17,48.58,48.58,48.58,48.58,2060000,48.58 +1957-07-16,48.88,48.88,48.88,48.88,2510000,48.88 +1957-07-15,49.13,49.13,49.13,49.13,2480000,49.13 +1957-07-12,49.08,49.08,49.08,49.08,2240000,49.08 +1957-07-11,48.86,48.86,48.86,48.86,2830000,48.86 +1957-07-10,49.00,49.00,49.00,49.00,2880000,49.00 +1957-07-09,48.90,48.90,48.90,48.90,2450000,48.90 +1957-07-08,48.90,48.90,48.90,48.90,2840000,48.90 +1957-07-05,48.69,48.69,48.69,48.69,2240000,48.69 +1957-07-03,48.46,48.46,48.46,48.46,2720000,48.46 +1957-07-02,47.90,47.90,47.90,47.90,2450000,47.90 +1957-07-01,47.43,47.43,47.43,47.43,1840000,47.43 +1957-06-28,47.37,47.37,47.37,47.37,1770000,47.37 +1957-06-27,47.26,47.26,47.26,47.26,1800000,47.26 +1957-06-26,47.09,47.09,47.09,47.09,1870000,47.09 +1957-06-25,47.15,47.15,47.15,47.15,2000000,47.15 +1957-06-24,46.78,46.78,46.78,46.78,2040000,46.78 +1957-06-21,47.15,47.15,47.15,47.15,1970000,47.15 +1957-06-20,47.43,47.43,47.43,47.43,2050000,47.43 +1957-06-19,47.72,47.72,47.72,47.72,2220000,47.72 +1957-06-18,48.04,48.04,48.04,48.04,2440000,48.04 +1957-06-17,48.24,48.24,48.24,48.24,2220000,48.24 +1957-06-14,48.15,48.15,48.15,48.15,2090000,48.15 +1957-06-13,48.14,48.14,48.14,48.14,2630000,48.14 +1957-06-12,48.05,48.05,48.05,48.05,2600000,48.05 +1957-06-11,47.94,47.94,47.94,47.94,2850000,47.94 +1957-06-10,47.90,47.90,47.90,47.90,2050000,47.90 +1957-06-07,47.85,47.85,47.85,47.85,2380000,47.85 +1957-06-06,47.80,47.80,47.80,47.80,2300000,47.80 +1957-06-05,47.27,47.27,47.27,47.27,1940000,47.27 +1957-06-04,47.28,47.28,47.28,47.28,2200000,47.28 +1957-06-03,47.37,47.37,47.37,47.37,2050000,47.37 +1957-05-31,47.43,47.43,47.43,47.43,2050000,47.43 +1957-05-29,47.11,47.11,47.11,47.11,2270000,47.11 +1957-05-28,46.69,46.69,46.69,46.69,2070000,46.69 +1957-05-27,46.78,46.78,46.78,46.78,2290000,46.78 +1957-05-24,47.21,47.21,47.21,47.21,2340000,47.21 +1957-05-23,47.15,47.15,47.15,47.15,2110000,47.15 +1957-05-22,47.14,47.14,47.14,47.14,2060000,47.14 +1957-05-21,47.33,47.33,47.33,47.33,2370000,47.33 +1957-05-20,47.35,47.35,47.35,47.35,2300000,47.35 +1957-05-17,47.15,47.15,47.15,47.15,2510000,47.15 +1957-05-16,47.02,47.02,47.02,47.02,2690000,47.02 +1957-05-15,46.83,46.83,46.83,46.83,2590000,46.83 +1957-05-14,46.67,46.67,46.67,46.67,2580000,46.67 +1957-05-13,46.88,46.88,46.88,46.88,2720000,46.88 +1957-05-10,46.59,46.59,46.59,46.59,2430000,46.59 +1957-05-09,46.36,46.36,46.36,46.36,2520000,46.36 +1957-05-08,46.31,46.31,46.31,46.31,2590000,46.31 +1957-05-07,46.13,46.13,46.13,46.13,2300000,46.13 +1957-05-06,46.27,46.27,46.27,46.27,2210000,46.27 +1957-05-03,46.34,46.34,46.34,46.34,2390000,46.34 +1957-05-02,46.39,46.39,46.39,46.39,2860000,46.39 +1957-05-01,46.02,46.02,46.02,46.02,2310000,46.02 +1957-04-30,45.74,45.74,45.74,45.74,2200000,45.74 +1957-04-29,45.73,45.73,45.73,45.73,2290000,45.73 +1957-04-26,45.50,45.50,45.50,45.50,2380000,45.50 +1957-04-25,45.56,45.56,45.56,45.56,2640000,45.56 +1957-04-24,45.72,45.72,45.72,45.72,2990000,45.72 +1957-04-23,45.65,45.65,45.65,45.65,2840000,45.65 +1957-04-22,45.48,45.48,45.48,45.48,2560000,45.48 +1957-04-18,45.41,45.41,45.41,45.41,2480000,45.41 +1957-04-17,45.08,45.08,45.08,45.08,2290000,45.08 +1957-04-16,45.02,45.02,45.02,45.02,1890000,45.02 +1957-04-15,44.95,44.95,44.95,44.95,2010000,44.95 +1957-04-12,44.98,44.98,44.98,44.98,2370000,44.98 +1957-04-11,44.98,44.98,44.98,44.98,2350000,44.98 +1957-04-10,44.98,44.98,44.98,44.98,2920000,44.98 +1957-04-09,44.79,44.79,44.79,44.79,2400000,44.79 +1957-04-08,44.39,44.39,44.39,44.39,1950000,44.39 +1957-04-05,44.49,44.49,44.49,44.49,1830000,44.49 +1957-04-04,44.44,44.44,44.44,44.44,1820000,44.44 +1957-04-03,44.54,44.54,44.54,44.54,2160000,44.54 +1957-04-02,44.42,44.42,44.42,44.42,2300000,44.42 +1957-04-01,44.14,44.14,44.14,44.14,1620000,44.14 +1957-03-29,44.11,44.11,44.11,44.11,1650000,44.11 +1957-03-28,44.18,44.18,44.18,44.18,1930000,44.18 +1957-03-27,44.09,44.09,44.09,44.09,1710000,44.09 +1957-03-26,43.91,43.91,43.91,43.91,1660000,43.91 +1957-03-25,43.88,43.88,43.88,43.88,1590000,43.88 +1957-03-22,44.06,44.06,44.06,44.06,1610000,44.06 +1957-03-21,44.11,44.11,44.11,44.11,1630000,44.11 +1957-03-20,44.10,44.10,44.10,44.10,1830000,44.10 +1957-03-19,44.04,44.04,44.04,44.04,1540000,44.04 +1957-03-18,43.85,43.85,43.85,43.85,1450000,43.85 +1957-03-15,44.05,44.05,44.05,44.05,1600000,44.05 +1957-03-14,44.07,44.07,44.07,44.07,1580000,44.07 +1957-03-13,44.04,44.04,44.04,44.04,1840000,44.04 +1957-03-12,43.75,43.75,43.75,43.75,1600000,43.75 +1957-03-11,43.78,43.78,43.78,43.78,1650000,43.78 +1957-03-08,44.07,44.07,44.07,44.07,1630000,44.07 +1957-03-07,44.21,44.21,44.21,44.21,1830000,44.21 +1957-03-06,44.23,44.23,44.23,44.23,1840000,44.23 +1957-03-05,44.22,44.22,44.22,44.22,1860000,44.22 +1957-03-04,44.06,44.06,44.06,44.06,1890000,44.06 +1957-03-01,43.74,43.74,43.74,43.74,1700000,43.74 +1957-02-28,43.26,43.26,43.26,43.26,1620000,43.26 +1957-02-27,43.41,43.41,43.41,43.41,1620000,43.41 +1957-02-26,43.45,43.45,43.45,43.45,1580000,43.45 +1957-02-25,43.38,43.38,43.38,43.38,1710000,43.38 +1957-02-21,43.48,43.48,43.48,43.48,1680000,43.48 +1957-02-20,43.63,43.63,43.63,43.63,1790000,43.63 +1957-02-19,43.49,43.49,43.49,43.49,1670000,43.49 +1957-02-18,43.46,43.46,43.46,43.46,1800000,43.46 +1957-02-15,43.51,43.51,43.51,43.51,2060000,43.51 +1957-02-14,42.99,42.99,42.99,42.99,2220000,42.99 +1957-02-13,43.04,43.04,43.04,43.04,2380000,43.04 +1957-02-12,42.39,42.39,42.39,42.39,2550000,42.39 +1957-02-11,42.57,42.57,42.57,42.57,2740000,42.57 +1957-02-08,43.32,43.32,43.32,43.32,2120000,43.32 +1957-02-07,43.62,43.62,43.62,43.62,1840000,43.62 +1957-02-06,43.82,43.82,43.82,43.82,2110000,43.82 +1957-02-05,43.89,43.89,43.89,43.89,2610000,43.89 +1957-02-04,44.53,44.53,44.53,44.53,1750000,44.53 +1957-02-01,44.62,44.62,44.62,44.62,1680000,44.62 +1957-01-31,44.72,44.72,44.72,44.72,1920000,44.72 +1957-01-30,44.91,44.91,44.91,44.91,1950000,44.91 +1957-01-29,44.71,44.71,44.71,44.71,1800000,44.71 +1957-01-28,44.49,44.49,44.49,44.49,1700000,44.49 +1957-01-25,44.82,44.82,44.82,44.82,2010000,44.82 +1957-01-24,45.03,45.03,45.03,45.03,1910000,45.03 +1957-01-23,44.87,44.87,44.87,44.87,1920000,44.87 +1957-01-22,44.53,44.53,44.53,44.53,1920000,44.53 +1957-01-21,44.40,44.40,44.40,44.40,2740000,44.40 +1957-01-18,44.64,44.64,44.64,44.64,2400000,44.64 +1957-01-17,45.22,45.22,45.22,45.22,2140000,45.22 +1957-01-16,45.23,45.23,45.23,45.23,2210000,45.23 +1957-01-15,45.18,45.18,45.18,45.18,2370000,45.18 +1957-01-14,45.86,45.86,45.86,45.86,2350000,45.86 +1957-01-11,46.18,46.18,46.18,46.18,2340000,46.18 +1957-01-10,46.27,46.27,46.27,46.27,2470000,46.27 +1957-01-09,46.16,46.16,46.16,46.16,2330000,46.16 +1957-01-08,46.25,46.25,46.25,46.25,2230000,46.25 +1957-01-07,46.42,46.42,46.42,46.42,2500000,46.42 +1957-01-04,46.66,46.66,46.66,46.66,2710000,46.66 +1957-01-03,46.60,46.60,46.60,46.60,2260000,46.60 +1957-01-02,46.20,46.20,46.20,46.20,1960000,46.20 +1956-12-31,46.67,46.67,46.67,46.67,3680000,46.67 +1956-12-28,46.56,46.56,46.56,46.56,2790000,46.56 +1956-12-27,46.35,46.35,46.35,46.35,2420000,46.35 +1956-12-26,46.39,46.39,46.39,46.39,2440000,46.39 +1956-12-21,46.37,46.37,46.37,46.37,2380000,46.37 +1956-12-20,46.07,46.07,46.07,46.07,2060000,46.07 +1956-12-19,46.43,46.43,46.43,46.43,1900000,46.43 +1956-12-18,46.54,46.54,46.54,46.54,2370000,46.54 +1956-12-17,46.54,46.54,46.54,46.54,2500000,46.54 +1956-12-14,46.54,46.54,46.54,46.54,2450000,46.54 +1956-12-13,46.50,46.50,46.50,46.50,2370000,46.50 +1956-12-12,46.13,46.13,46.13,46.13,2180000,46.13 +1956-12-11,46.48,46.48,46.48,46.48,2210000,46.48 +1956-12-10,46.80,46.80,46.80,46.80,2600000,46.80 +1956-12-07,47.04,47.04,47.04,47.04,2400000,47.04 +1956-12-06,46.81,46.81,46.81,46.81,2470000,46.81 +1956-12-05,46.39,46.39,46.39,46.39,2360000,46.39 +1956-12-04,45.84,45.84,45.84,45.84,2180000,45.84 +1956-12-03,45.98,45.98,45.98,45.98,2570000,45.98 +1956-11-30,45.08,45.08,45.08,45.08,2300000,45.08 +1956-11-29,44.38,44.38,44.38,44.38,2440000,44.38 +1956-11-28,44.43,44.43,44.43,44.43,2190000,44.43 +1956-11-27,44.91,44.91,44.91,44.91,2130000,44.91 +1956-11-26,44.87,44.87,44.87,44.87,2230000,44.87 +1956-11-23,45.14,45.14,45.14,45.14,1880000,45.14 +1956-11-21,44.67,44.67,44.67,44.67,2310000,44.67 +1956-11-20,44.89,44.89,44.89,44.89,2240000,44.89 +1956-11-19,45.29,45.29,45.29,45.29,2560000,45.29 +1956-11-16,45.74,45.74,45.74,45.74,1820000,45.74 +1956-11-15,45.72,45.72,45.72,45.72,2210000,45.72 +1956-11-14,46.01,46.01,46.01,46.01,2290000,46.01 +1956-11-13,46.27,46.27,46.27,46.27,2140000,46.27 +1956-11-12,46.49,46.49,46.49,46.49,1600000,46.49 +1956-11-09,46.34,46.34,46.34,46.34,1690000,46.34 +1956-11-08,46.73,46.73,46.73,46.73,1970000,46.73 +1956-11-07,47.11,47.11,47.11,47.11,2650000,47.11 +1956-11-05,47.60,47.60,47.60,47.60,2830000,47.60 +1956-11-02,46.98,46.98,46.98,46.98,2180000,46.98 +1956-11-01,46.52,46.52,46.52,46.52,1890000,46.52 +1956-10-31,45.58,45.58,45.58,45.58,2280000,45.58 +1956-10-30,46.37,46.37,46.37,46.37,1830000,46.37 +1956-10-29,46.40,46.40,46.40,46.40,2420000,46.40 +1956-10-26,46.27,46.27,46.27,46.27,1800000,46.27 +1956-10-25,45.85,45.85,45.85,45.85,1580000,45.85 +1956-10-24,45.93,45.93,45.93,45.93,1640000,45.93 +1956-10-23,46.12,46.12,46.12,46.12,1390000,46.12 +1956-10-22,46.23,46.23,46.23,46.23,1430000,46.23 +1956-10-19,46.24,46.24,46.24,46.24,1720000,46.24 +1956-10-18,46.34,46.34,46.34,46.34,1640000,46.34 +1956-10-17,46.26,46.26,46.26,46.26,1640000,46.26 +1956-10-16,46.62,46.62,46.62,46.62,1580000,46.62 +1956-10-15,46.86,46.86,46.86,46.86,1610000,46.86 +1956-10-12,47.00,47.00,47.00,47.00,1330000,47.00 +1956-10-11,46.81,46.81,46.81,46.81,1760000,46.81 +1956-10-10,46.84,46.84,46.84,46.84,1620000,46.84 +1956-10-09,46.20,46.20,46.20,46.20,1220000,46.20 +1956-10-08,46.43,46.43,46.43,46.43,1450000,46.43 +1956-10-05,46.45,46.45,46.45,46.45,1580000,46.45 +1956-10-04,46.29,46.29,46.29,46.29,1600000,46.29 +1956-10-03,46.28,46.28,46.28,46.28,2180000,46.28 +1956-10-02,45.52,45.52,45.52,45.52,2400000,45.52 +1956-10-01,44.70,44.70,44.70,44.70,2600000,44.70 +1956-09-28,45.35,45.35,45.35,45.35,1720000,45.35 +1956-09-27,45.60,45.60,45.60,45.60,1770000,45.60 +1956-09-26,45.82,45.82,45.82,45.82,2370000,45.82 +1956-09-25,45.75,45.75,45.75,45.75,2100000,45.75 +1956-09-24,46.40,46.40,46.40,46.40,1840000,46.40 +1956-09-21,46.58,46.58,46.58,46.58,2110000,46.58 +1956-09-20,46.21,46.21,46.21,46.21,2150000,46.21 +1956-09-19,46.24,46.24,46.24,46.24,2040000,46.24 +1956-09-18,46.79,46.79,46.79,46.79,2200000,46.79 +1956-09-17,47.10,47.10,47.10,47.10,1940000,47.10 +1956-09-14,47.21,47.21,47.21,47.21,2110000,47.21 +1956-09-13,46.09,46.09,46.09,46.09,2000000,46.09 +1956-09-12,47.05,47.05,47.05,47.05,1930000,47.05 +1956-09-11,47.38,47.38,47.38,47.38,1920000,47.38 +1956-09-10,47.56,47.56,47.56,47.56,1860000,47.56 +1956-09-07,47.81,47.81,47.81,47.81,1690000,47.81 +1956-09-06,48.10,48.10,48.10,48.10,1550000,48.10 +1956-09-05,48.02,48.02,48.02,48.02,2130000,48.02 +1956-09-04,47.89,47.89,47.89,47.89,1790000,47.89 +1956-08-31,47.51,47.51,47.51,47.51,1620000,47.51 +1956-08-30,46.94,46.94,46.94,46.94,2050000,46.94 +1956-08-29,47.36,47.36,47.36,47.36,1530000,47.36 +1956-08-28,47.57,47.57,47.57,47.57,1400000,47.57 +1956-08-27,47.66,47.66,47.66,47.66,1420000,47.66 +1956-08-24,47.95,47.95,47.95,47.95,1530000,47.95 +1956-08-23,48.00,48.00,48.00,48.00,1590000,48.00 +1956-08-22,47.42,47.42,47.42,47.42,1570000,47.42 +1956-08-21,47.89,47.89,47.89,47.89,2440000,47.89 +1956-08-20,48.25,48.25,48.25,48.25,1770000,48.25 +1956-08-17,48.82,48.82,48.82,48.82,1720000,48.82 +1956-08-16,48.88,48.88,48.88,48.88,1790000,48.88 +1956-08-15,48.99,48.99,48.99,48.99,2000000,48.99 +1956-08-14,48.00,48.00,48.00,48.00,1790000,48.00 +1956-08-13,48.58,48.58,48.58,48.58,1730000,48.58 +1956-08-10,49.09,49.09,49.09,49.09,2040000,49.09 +1956-08-09,49.32,49.32,49.32,49.32,2550000,49.32 +1956-08-08,49.36,49.36,49.36,49.36,2480000,49.36 +1956-08-07,49.16,49.16,49.16,49.16,2180000,49.16 +1956-08-06,48.96,48.96,48.96,48.96,2280000,48.96 +1956-08-03,49.64,49.64,49.64,49.64,2210000,49.64 +1956-08-02,49.64,49.64,49.64,49.64,2530000,49.64 +1956-08-01,49.62,49.62,49.62,49.62,2230000,49.62 +1956-07-31,49.39,49.39,49.39,49.39,2520000,49.39 +1956-07-30,49.00,49.00,49.00,49.00,2100000,49.00 +1956-07-27,49.08,49.08,49.08,49.08,2240000,49.08 +1956-07-26,49.48,49.48,49.48,49.48,2060000,49.48 +1956-07-25,49.44,49.44,49.44,49.44,2220000,49.44 +1956-07-24,49.33,49.33,49.33,49.33,2040000,49.33 +1956-07-23,49.33,49.33,49.33,49.33,1970000,49.33 +1956-07-20,49.35,49.35,49.35,49.35,2020000,49.35 +1956-07-19,49.32,49.32,49.32,49.32,1950000,49.32 +1956-07-18,49.30,49.30,49.30,49.30,2530000,49.30 +1956-07-17,49.31,49.31,49.31,49.31,2520000,49.31 +1956-07-16,49.14,49.14,49.14,49.14,2260000,49.14 +1956-07-13,48.72,48.72,48.72,48.72,2020000,48.72 +1956-07-12,48.58,48.58,48.58,48.58,2180000,48.58 +1956-07-11,48.69,48.69,48.69,48.69,2520000,48.69 +1956-07-10,48.54,48.54,48.54,48.54,2450000,48.54 +1956-07-09,48.25,48.25,48.25,48.25,2180000,48.25 +1956-07-06,48.04,48.04,48.04,48.04,2180000,48.04 +1956-07-05,47.80,47.80,47.80,47.80,2240000,47.80 +1956-07-03,47.32,47.32,47.32,47.32,1840000,47.32 +1956-07-02,46.93,46.93,46.93,46.93,1610000,46.93 +1956-06-29,46.97,46.97,46.97,46.97,1780000,46.97 +1956-06-28,47.13,47.13,47.13,47.13,1900000,47.13 +1956-06-27,47.07,47.07,47.07,47.07,2090000,47.07 +1956-06-26,46.72,46.72,46.72,46.72,1730000,46.72 +1956-06-25,46.41,46.41,46.41,46.41,1500000,46.41 +1956-06-22,46.59,46.59,46.59,46.59,1630000,46.59 +1956-06-21,46.73,46.73,46.73,46.73,1820000,46.73 +1956-06-20,46.41,46.41,46.41,46.41,1670000,46.41 +1956-06-19,46.22,46.22,46.22,46.22,1430000,46.22 +1956-06-18,46.17,46.17,46.17,46.17,1440000,46.17 +1956-06-15,46.37,46.37,46.37,46.37,1550000,46.37 +1956-06-14,46.31,46.31,46.31,46.31,1670000,46.31 +1956-06-13,46.42,46.42,46.42,46.42,1760000,46.42 +1956-06-12,46.36,46.36,46.36,46.36,1900000,46.36 +1956-06-11,45.71,45.71,45.71,45.71,2000000,45.71 +1956-06-08,45.14,45.14,45.14,45.14,3630000,45.14 +1956-06-07,45.99,45.99,45.99,45.99,1630000,45.99 +1956-06-06,45.63,45.63,45.63,45.63,1460000,45.63 +1956-06-05,45.86,45.86,45.86,45.86,1650000,45.86 +1956-06-04,45.85,45.85,45.85,45.85,1500000,45.85 +1956-06-01,45.58,45.58,45.58,45.58,1440000,45.58 +1956-05-31,45.20,45.20,45.20,45.20,2020000,45.20 +1956-05-29,45.11,45.11,45.11,45.11,2430000,45.11 +1956-05-28,44.10,44.10,44.10,44.10,2780000,44.10 +1956-05-25,44.62,44.62,44.62,44.62,2570000,44.62 +1956-05-24,44.60,44.60,44.60,44.60,2600000,44.60 +1956-05-23,45.02,45.02,45.02,45.02,2140000,45.02 +1956-05-22,45.26,45.26,45.26,45.26,2290000,45.26 +1956-05-21,45.99,45.99,45.99,45.99,1940000,45.99 +1956-05-18,46.39,46.39,46.39,46.39,2020000,46.39 +1956-05-17,46.61,46.61,46.61,46.61,1970000,46.61 +1956-05-16,46.05,46.05,46.05,46.05,2080000,46.05 +1956-05-15,46.37,46.37,46.37,46.37,2650000,46.37 +1956-05-14,46.86,46.86,46.86,46.86,2440000,46.86 +1956-05-11,47.12,47.12,47.12,47.12,2450000,47.12 +1956-05-10,47.16,47.16,47.16,47.16,2850000,47.16 +1956-05-09,47.94,47.94,47.94,47.94,2550000,47.94 +1956-05-08,48.02,48.02,48.02,48.02,2440000,48.02 +1956-05-07,48.22,48.22,48.22,48.22,2550000,48.22 +1956-05-04,48.51,48.51,48.51,48.51,2860000,48.51 +1956-05-03,48.34,48.34,48.34,48.34,2640000,48.34 +1956-05-02,48.17,48.17,48.17,48.17,2440000,48.17 +1956-05-01,48.16,48.16,48.16,48.16,2500000,48.16 +1956-04-30,48.38,48.38,48.38,48.38,2730000,48.38 +1956-04-27,47.99,47.99,47.99,47.99,2760000,47.99 +1956-04-26,47.49,47.49,47.49,47.49,2630000,47.49 +1956-04-25,47.09,47.09,47.09,47.09,2270000,47.09 +1956-04-24,47.26,47.26,47.26,47.26,2500000,47.26 +1956-04-23,47.65,47.65,47.65,47.65,2440000,47.65 +1956-04-20,47.76,47.76,47.76,47.76,2320000,47.76 +1956-04-19,47.57,47.57,47.57,47.57,2210000,47.57 +1956-04-18,47.74,47.74,47.74,47.74,2470000,47.74 +1956-04-17,47.93,47.93,47.93,47.93,2330000,47.93 +1956-04-16,47.96,47.96,47.96,47.96,2310000,47.96 +1956-04-13,47.95,47.95,47.95,47.95,2450000,47.95 +1956-04-12,48.02,48.02,48.02,48.02,2700000,48.02 +1956-04-11,48.31,48.31,48.31,48.31,2440000,48.31 +1956-04-10,47.93,47.93,47.93,47.93,2590000,47.93 +1956-04-09,48.61,48.61,48.61,48.61,2760000,48.61 +1956-04-06,48.85,48.85,48.85,48.85,2600000,48.85 +1956-04-05,48.57,48.57,48.57,48.57,2950000,48.57 +1956-04-04,48.80,48.80,48.80,48.80,2760000,48.80 +1956-04-03,48.53,48.53,48.53,48.53,2760000,48.53 +1956-04-02,48.70,48.70,48.70,48.70,3120000,48.70 +1956-03-29,48.48,48.48,48.48,48.48,3480000,48.48 +1956-03-28,48.51,48.51,48.51,48.51,2610000,48.51 +1956-03-27,48.25,48.25,48.25,48.25,2540000,48.25 +1956-03-26,48.62,48.62,48.62,48.62,2720000,48.62 +1956-03-23,48.83,48.83,48.83,48.83,2980000,48.83 +1956-03-22,48.72,48.72,48.72,48.72,2650000,48.72 +1956-03-21,48.23,48.23,48.23,48.23,2930000,48.23 +1956-03-20,48.87,48.87,48.87,48.87,2960000,48.87 +1956-03-19,48.59,48.59,48.59,48.59,2570000,48.59 +1956-03-16,48.14,48.14,48.14,48.14,3120000,48.14 +1956-03-15,47.99,47.99,47.99,47.99,3270000,47.99 +1956-03-14,47.53,47.53,47.53,47.53,3140000,47.53 +1956-03-13,47.06,47.06,47.06,47.06,2790000,47.06 +1956-03-12,47.13,47.13,47.13,47.13,3110000,47.13 +1956-03-09,46.70,46.70,46.70,46.70,3430000,46.70 +1956-03-08,46.12,46.12,46.12,46.12,2500000,46.12 +1956-03-07,46.01,46.01,46.01,46.01,2380000,46.01 +1956-03-06,46.04,46.04,46.04,46.04,2770000,46.04 +1956-03-05,46.06,46.06,46.06,46.06,3090000,46.06 +1956-03-02,45.81,45.81,45.81,45.81,2860000,45.81 +1956-03-01,45.54,45.54,45.54,45.54,2410000,45.54 +1956-02-29,45.34,45.34,45.34,45.34,3900000,45.34 +1956-02-28,45.43,45.43,45.43,45.43,2540000,45.43 +1956-02-27,45.27,45.27,45.27,45.27,2440000,45.27 +1956-02-24,45.32,45.32,45.32,45.32,2890000,45.32 +1956-02-23,44.95,44.95,44.95,44.95,2900000,44.95 +1956-02-21,44.56,44.56,44.56,44.56,2240000,44.56 +1956-02-20,44.45,44.45,44.45,44.45,2530000,44.45 +1956-02-17,44.52,44.52,44.52,44.52,2840000,44.52 +1956-02-16,43.82,43.82,43.82,43.82,1750000,43.82 +1956-02-15,44.04,44.04,44.04,44.04,3000000,44.04 +1956-02-14,43.42,43.42,43.42,43.42,1590000,43.42 +1956-02-13,43.58,43.58,43.58,43.58,1420000,43.58 +1956-02-10,43.64,43.64,43.64,43.64,1770000,43.64 +1956-02-09,43.66,43.66,43.66,43.66,2080000,43.66 +1956-02-08,44.16,44.16,44.16,44.16,2170000,44.16 +1956-02-07,44.60,44.60,44.60,44.60,2060000,44.60 +1956-02-06,44.81,44.81,44.81,44.81,2230000,44.81 +1956-02-03,44.78,44.78,44.78,44.78,2110000,44.78 +1956-02-02,44.22,44.22,44.22,44.22,1900000,44.22 +1956-02-01,44.03,44.03,44.03,44.03,2010000,44.03 +1956-01-31,43.82,43.82,43.82,43.82,1900000,43.82 +1956-01-30,43.50,43.50,43.50,43.50,1830000,43.50 +1956-01-27,43.35,43.35,43.35,43.35,1950000,43.35 +1956-01-26,43.46,43.46,43.46,43.46,1840000,43.46 +1956-01-25,43.72,43.72,43.72,43.72,1950000,43.72 +1956-01-24,43.65,43.65,43.65,43.65,2160000,43.65 +1956-01-23,43.11,43.11,43.11,43.11,2720000,43.11 +1956-01-20,43.22,43.22,43.22,43.22,2430000,43.22 +1956-01-19,43.72,43.72,43.72,43.72,2500000,43.72 +1956-01-18,44.17,44.17,44.17,44.17,2110000,44.17 +1956-01-17,44.47,44.47,44.47,44.47,2050000,44.47 +1956-01-16,44.14,44.14,44.14,44.14,2260000,44.14 +1956-01-13,44.67,44.67,44.67,44.67,2120000,44.67 +1956-01-12,44.75,44.75,44.75,44.75,2330000,44.75 +1956-01-11,44.38,44.38,44.38,44.38,2310000,44.38 +1956-01-10,44.16,44.16,44.16,44.16,2640000,44.16 +1956-01-09,44.51,44.51,44.51,44.51,2700000,44.51 +1956-01-06,45.14,45.14,45.14,45.14,2570000,45.14 +1956-01-05,44.95,44.95,44.95,44.95,2110000,44.95 +1956-01-04,45.00,45.00,45.00,45.00,2290000,45.00 +1956-01-03,45.16,45.16,45.16,45.16,2390000,45.16 +1955-12-30,45.48,45.48,45.48,45.48,2820000,45.48 +1955-12-29,45.15,45.15,45.15,45.15,2190000,45.15 +1955-12-28,45.05,45.05,45.05,45.05,1990000,45.05 +1955-12-27,45.22,45.22,45.22,45.22,2010000,45.22 +1955-12-23,45.50,45.50,45.50,45.50,2090000,45.50 +1955-12-22,45.41,45.41,45.41,45.41,2650000,45.41 +1955-12-21,45.84,45.84,45.84,45.84,2540000,45.84 +1955-12-20,44.95,44.95,44.95,44.95,2280000,44.95 +1955-12-19,45.02,45.02,45.02,45.02,2380000,45.02 +1955-12-16,45.13,45.13,45.13,45.13,2310000,45.13 +1955-12-15,45.06,45.06,45.06,45.06,2260000,45.06 +1955-12-14,45.07,45.07,45.07,45.07,2670000,45.07 +1955-12-13,45.45,45.45,45.45,45.45,2430000,45.45 +1955-12-12,45.42,45.42,45.42,45.42,2510000,45.42 +1955-12-09,45.89,45.89,45.89,45.89,2660000,45.89 +1955-12-08,45.82,45.82,45.82,45.82,2970000,45.82 +1955-12-07,45.55,45.55,45.55,45.55,2480000,45.55 +1955-12-06,45.70,45.70,45.70,45.70,2540000,45.70 +1955-12-05,45.70,45.70,45.70,45.70,2440000,45.70 +1955-12-02,45.44,45.44,45.44,45.44,2400000,45.44 +1955-12-01,45.35,45.35,45.35,45.35,2370000,45.35 +1955-11-30,45.51,45.51,45.51,45.51,2900000,45.51 +1955-11-29,45.56,45.56,45.56,45.56,2370000,45.56 +1955-11-28,45.38,45.38,45.38,45.38,2460000,45.38 +1955-11-25,45.68,45.68,45.68,45.68,2190000,45.68 +1955-11-23,45.72,45.72,45.72,45.72,2550000,45.72 +1955-11-22,45.66,45.66,45.66,45.66,2270000,45.66 +1955-11-21,45.22,45.22,45.22,45.22,1960000,45.22 +1955-11-18,45.54,45.54,45.54,45.54,2320000,45.54 +1955-11-17,45.59,45.59,45.59,45.59,2310000,45.59 +1955-11-16,45.91,45.91,45.91,45.91,2460000,45.91 +1955-11-15,46.21,46.21,46.21,46.21,2560000,46.21 +1955-11-14,46.41,46.41,46.41,46.41,2760000,46.41 +1955-11-11,45.24,45.24,45.24,45.24,2000000,45.24 +1955-11-10,44.72,44.72,44.72,44.72,2550000,44.72 +1955-11-09,44.61,44.61,44.61,44.61,2580000,44.61 +1955-11-07,44.15,44.15,44.15,44.15,2230000,44.15 +1955-11-04,43.96,43.96,43.96,43.96,2430000,43.96 +1955-11-03,43.24,43.24,43.24,43.24,2260000,43.24 +1955-11-02,42.35,42.35,42.35,42.35,1610000,42.35 +1955-11-01,42.28,42.28,42.28,42.28,1590000,42.28 +1955-10-31,42.34,42.34,42.34,42.34,1800000,42.34 +1955-10-28,42.37,42.37,42.37,42.37,1720000,42.37 +1955-10-27,42.34,42.34,42.34,42.34,1830000,42.34 +1955-10-26,42.29,42.29,42.29,42.29,1660000,42.29 +1955-10-25,42.63,42.63,42.63,42.63,1950000,42.63 +1955-10-24,42.91,42.91,42.91,42.91,1820000,42.91 +1955-10-21,42.59,42.59,42.59,42.59,1710000,42.59 +1955-10-20,42.59,42.59,42.59,42.59,2160000,42.59 +1955-10-19,42.07,42.07,42.07,42.07,1760000,42.07 +1955-10-18,41.65,41.65,41.65,41.65,1550000,41.65 +1955-10-17,41.35,41.35,41.35,41.35,1480000,41.35 +1955-10-14,41.22,41.22,41.22,41.22,1640000,41.22 +1955-10-13,41.39,41.39,41.39,41.39,1980000,41.39 +1955-10-12,41.52,41.52,41.52,41.52,1900000,41.52 +1955-10-11,40.80,40.80,40.80,40.80,3590000,40.80 +1955-10-10,41.15,41.15,41.15,41.15,3100000,41.15 +1955-10-07,42.38,42.38,42.38,42.38,2150000,42.38 +1955-10-06,42.70,42.70,42.70,42.70,1690000,42.70 +1955-10-05,42.99,42.99,42.99,42.99,1920000,42.99 +1955-10-04,42.82,42.82,42.82,42.82,2020000,42.82 +1955-10-03,42.49,42.49,42.49,42.49,2720000,42.49 +1955-09-30,43.67,43.67,43.67,43.67,2140000,43.67 +1955-09-29,44.03,44.03,44.03,44.03,2560000,44.03 +1955-09-28,44.31,44.31,44.31,44.31,3780000,44.31 +1955-09-27,43.58,43.58,43.58,43.58,5500000,43.58 +1955-09-26,42.61,42.61,42.61,42.61,7720000,42.61 +1955-09-23,45.63,45.63,45.63,45.63,2540000,45.63 +1955-09-22,45.39,45.39,45.39,45.39,2550000,45.39 +1955-09-21,45.39,45.39,45.39,45.39,2460000,45.39 +1955-09-20,45.13,45.13,45.13,45.13,2090000,45.13 +1955-09-19,45.16,45.16,45.16,45.16,2390000,45.16 +1955-09-16,45.09,45.09,45.09,45.09,2540000,45.09 +1955-09-15,44.75,44.75,44.75,44.75,2890000,44.75 +1955-09-14,44.99,44.99,44.99,44.99,2570000,44.99 +1955-09-13,44.80,44.80,44.80,44.80,2580000,44.80 +1955-09-12,44.19,44.19,44.19,44.19,2520000,44.19 +1955-09-09,43.89,43.89,43.89,43.89,2480000,43.89 +1955-09-08,43.88,43.88,43.88,43.88,2470000,43.88 +1955-09-07,43.85,43.85,43.85,43.85,2380000,43.85 +1955-09-06,43.86,43.86,43.86,43.86,2360000,43.86 +1955-09-02,43.60,43.60,43.60,43.60,1700000,43.60 +1955-09-01,43.37,43.37,43.37,43.37,1860000,43.37 +1955-08-31,43.18,43.18,43.18,43.18,1850000,43.18 +1955-08-30,42.92,42.92,42.92,42.92,1740000,42.92 +1955-08-29,42.96,42.96,42.96,42.96,1910000,42.96 +1955-08-26,42.99,42.99,42.99,42.99,2200000,42.99 +1955-08-25,42.80,42.80,42.80,42.80,2120000,42.80 +1955-08-24,42.61,42.61,42.61,42.61,2140000,42.61 +1955-08-23,42.55,42.55,42.55,42.55,1890000,42.55 +1955-08-22,41.98,41.98,41.98,41.98,1430000,41.98 +1955-08-19,42.02,42.02,42.02,42.02,1400000,42.02 +1955-08-18,41.84,41.84,41.84,41.84,1560000,41.84 +1955-08-17,41.90,41.90,41.90,41.90,1570000,41.90 +1955-08-16,41.86,41.86,41.86,41.86,1520000,41.86 +1955-08-15,42.17,42.17,42.17,42.17,1230000,42.17 +1955-08-12,42.21,42.21,42.21,42.21,1530000,42.21 +1955-08-11,42.13,42.13,42.13,42.13,1620000,42.13 +1955-08-10,41.74,41.74,41.74,41.74,1580000,41.74 +1955-08-09,41.75,41.75,41.75,41.75,2240000,41.75 +1955-08-08,42.31,42.31,42.31,42.31,1730000,42.31 +1955-08-05,42.56,42.56,42.56,42.56,1690000,42.56 +1955-08-04,42.36,42.36,42.36,42.36,2210000,42.36 +1955-08-03,43.09,43.09,43.09,43.09,2190000,43.09 +1955-08-02,43.03,43.03,43.03,43.03,2260000,43.03 +1955-08-01,42.93,42.93,42.93,42.93,2190000,42.93 +1955-07-29,43.52,43.52,43.52,43.52,2070000,43.52 +1955-07-28,43.50,43.50,43.50,43.50,2090000,43.50 +1955-07-27,43.76,43.76,43.76,43.76,2170000,43.76 +1955-07-26,43.58,43.58,43.58,43.58,2340000,43.58 +1955-07-25,43.48,43.48,43.48,43.48,2500000,43.48 +1955-07-22,43.00,43.00,43.00,43.00,2500000,43.00 +1955-07-21,42.64,42.64,42.64,42.64,2530000,42.64 +1955-07-20,42.23,42.23,42.23,42.23,2080000,42.23 +1955-07-19,42.10,42.10,42.10,42.10,2300000,42.10 +1955-07-18,42.36,42.36,42.36,42.36,2160000,42.36 +1955-07-15,42.40,42.40,42.40,42.40,2230000,42.40 +1955-07-14,42.25,42.25,42.25,42.25,1980000,42.25 +1955-07-13,42.24,42.24,42.24,42.24,2360000,42.24 +1955-07-12,42.75,42.75,42.75,42.75,2630000,42.75 +1955-07-11,42.75,42.75,42.75,42.75,2420000,42.75 +1955-07-08,42.64,42.64,42.64,42.64,2450000,42.64 +1955-07-07,42.58,42.58,42.58,42.58,3300000,42.58 +1955-07-06,43.18,43.18,43.18,43.18,3140000,43.18 +1955-07-05,41.69,41.69,41.69,41.69,2680000,41.69 +1955-07-01,41.19,41.19,41.19,41.19,2540000,41.19 +1955-06-30,41.03,41.03,41.03,41.03,2370000,41.03 +1955-06-29,40.79,40.79,40.79,40.79,2180000,40.79 +1955-06-28,40.77,40.77,40.77,40.77,2180000,40.77 +1955-06-27,40.99,40.99,40.99,40.99,2250000,40.99 +1955-06-24,40.96,40.96,40.96,40.96,2410000,40.96 +1955-06-23,40.75,40.75,40.75,40.75,2900000,40.75 +1955-06-22,40.60,40.60,40.60,40.60,3010000,40.60 +1955-06-21,40.51,40.51,40.51,40.51,2720000,40.51 +1955-06-20,40.14,40.14,40.14,40.14,2490000,40.14 +1955-06-17,40.10,40.10,40.10,40.10,2340000,40.10 +1955-06-16,39.96,39.96,39.96,39.96,2760000,39.96 +1955-06-15,39.89,39.89,39.89,39.89,2650000,39.89 +1955-06-14,39.67,39.67,39.67,39.67,2860000,39.67 +1955-06-13,39.62,39.62,39.62,39.62,2770000,39.62 +1955-06-10,39.25,39.25,39.25,39.25,2470000,39.25 +1955-06-09,39.01,39.01,39.01,39.01,2960000,39.01 +1955-06-08,39.22,39.22,39.22,39.22,3300000,39.22 +1955-06-07,39.96,39.96,39.96,39.96,3230000,39.96 +1955-06-06,39.69,39.69,39.69,39.69,2560000,39.69 +1955-06-03,38.37,38.37,38.37,38.37,2590000,38.37 +1955-06-02,38.01,38.01,38.01,38.01,2610000,38.01 +1955-06-01,37.96,37.96,37.96,37.96,2510000,37.96 +1955-05-31,37.91,37.91,37.91,37.91,1990000,37.91 +1955-05-27,37.93,37.93,37.93,37.93,2220000,37.93 +1955-05-26,37.85,37.85,37.85,37.85,2260000,37.85 +1955-05-25,37.60,37.60,37.60,37.60,2100000,37.60 +1955-05-24,37.46,37.46,37.46,37.46,1650000,37.46 +1955-05-23,37.48,37.48,37.48,37.48,1900000,37.48 +1955-05-20,37.74,37.74,37.74,37.74,2240000,37.74 +1955-05-19,37.49,37.49,37.49,37.49,2380000,37.49 +1955-05-18,37.28,37.28,37.28,37.28,2010000,37.28 +1955-05-17,36.97,36.97,36.97,36.97,1900000,36.97 +1955-05-16,37.02,37.02,37.02,37.02,2160000,37.02 +1955-05-13,37.44,37.44,37.44,37.44,1860000,37.44 +1955-05-12,37.20,37.20,37.20,37.20,2830000,37.20 +1955-05-11,37.42,37.42,37.42,37.42,2120000,37.42 +1955-05-10,37.85,37.85,37.85,37.85,2150000,37.85 +1955-05-09,37.93,37.93,37.93,37.93,2090000,37.93 +1955-05-06,37.89,37.89,37.89,37.89,2250000,37.89 +1955-05-05,37.82,37.82,37.82,37.82,2270000,37.82 +1955-05-04,37.64,37.64,37.64,37.64,2220000,37.64 +1955-05-03,37.70,37.70,37.70,37.70,2630000,37.70 +1955-05-02,38.04,38.04,38.04,38.04,2220000,38.04 +1955-04-29,37.96,37.96,37.96,37.96,2230000,37.96 +1955-04-28,37.68,37.68,37.68,37.68,2550000,37.68 +1955-04-27,38.11,38.11,38.11,38.11,2660000,38.11 +1955-04-26,38.31,38.31,38.31,38.31,2720000,38.31 +1955-04-25,38.11,38.11,38.11,38.11,2720000,38.11 +1955-04-22,38.01,38.01,38.01,38.01,2800000,38.01 +1955-04-21,38.32,38.32,38.32,38.32,2810000,38.32 +1955-04-20,38.28,38.28,38.28,38.28,3090000,38.28 +1955-04-19,38.22,38.22,38.22,38.22,2700000,38.22 +1955-04-18,38.27,38.27,38.27,38.27,3080000,38.27 +1955-04-15,37.96,37.96,37.96,37.96,3180000,37.96 +1955-04-14,37.79,37.79,37.79,37.79,2890000,37.79 +1955-04-13,37.71,37.71,37.71,37.71,2820000,37.71 +1955-04-12,37.66,37.66,37.66,37.66,2770000,37.66 +1955-04-11,37.44,37.44,37.44,37.44,2680000,37.44 +1955-04-07,37.34,37.34,37.34,37.34,2330000,37.34 +1955-04-06,37.17,37.17,37.17,37.17,2500000,37.17 +1955-04-05,36.98,36.98,36.98,36.98,2100000,36.98 +1955-04-04,36.83,36.83,36.83,36.83,2500000,36.83 +1955-04-01,36.95,36.95,36.95,36.95,2660000,36.95 +1955-03-31,36.58,36.58,36.58,36.58,2680000,36.58 +1955-03-30,36.52,36.52,36.52,36.52,3410000,36.52 +1955-03-29,36.85,36.85,36.85,36.85,2770000,36.85 +1955-03-28,36.83,36.83,36.83,36.83,2540000,36.83 +1955-03-25,36.96,36.96,36.96,36.96,2540000,36.96 +1955-03-24,36.93,36.93,36.93,36.93,3170000,36.93 +1955-03-23,36.64,36.64,36.64,36.64,2730000,36.64 +1955-03-22,36.17,36.17,36.17,36.17,1910000,36.17 +1955-03-21,35.95,35.95,35.95,35.95,2020000,35.95 +1955-03-18,36.18,36.18,36.18,36.18,2050000,36.18 +1955-03-17,36.12,36.12,36.12,36.12,2200000,36.12 +1955-03-16,35.98,35.98,35.98,35.98,2900000,35.98 +1955-03-15,35.71,35.71,35.71,35.71,3160000,35.71 +1955-03-14,34.96,34.96,34.96,34.96,4220000,34.96 +1955-03-11,35.82,35.82,35.82,35.82,3040000,35.82 +1955-03-10,36.45,36.45,36.45,36.45,2760000,36.45 +1955-03-09,36.22,36.22,36.22,36.22,3590000,36.22 +1955-03-08,36.58,36.58,36.58,36.58,3160000,36.58 +1955-03-07,37.28,37.28,37.28,37.28,2630000,37.28 +1955-03-04,37.52,37.52,37.52,37.52,2770000,37.52 +1955-03-03,37.29,37.29,37.29,37.29,3330000,37.29 +1955-03-02,37.15,37.15,37.15,37.15,3370000,37.15 +1955-03-01,36.83,36.83,36.83,36.83,2830000,36.83 +1955-02-28,36.76,36.76,36.76,36.76,2620000,36.76 +1955-02-25,36.57,36.57,36.57,36.57,2540000,36.57 +1955-02-24,36.62,36.62,36.62,36.62,2920000,36.62 +1955-02-23,36.82,36.82,36.82,36.82,3030000,36.82 +1955-02-21,36.85,36.85,36.85,36.85,3010000,36.85 +1955-02-18,36.89,36.89,36.89,36.89,3660000,36.89 +1955-02-17,36.84,36.84,36.84,36.84,3030000,36.84 +1955-02-16,36.77,36.77,36.77,36.77,3660000,36.77 +1955-02-15,36.89,36.89,36.89,36.89,3510000,36.89 +1955-02-14,36.89,36.89,36.89,36.89,2950000,36.89 +1955-02-11,37.15,37.15,37.15,37.15,3260000,37.15 +1955-02-10,37.08,37.08,37.08,37.08,3460000,37.08 +1955-02-09,36.75,36.75,36.75,36.75,3360000,36.75 +1955-02-08,36.46,36.46,36.46,36.46,3400000,36.46 +1955-02-07,36.96,36.96,36.96,36.96,3610000,36.96 +1955-02-04,36.96,36.96,36.96,36.96,3370000,36.96 +1955-02-03,36.44,36.44,36.44,36.44,2890000,36.44 +1955-02-02,36.61,36.61,36.61,36.61,3210000,36.61 +1955-02-01,36.72,36.72,36.72,36.72,3320000,36.72 +1955-01-31,36.63,36.63,36.63,36.63,3500000,36.63 +1955-01-28,36.19,36.19,36.19,36.19,3290000,36.19 +1955-01-27,35.99,35.99,35.99,35.99,3500000,35.99 +1955-01-26,35.95,35.95,35.95,35.95,3860000,35.95 +1955-01-25,35.51,35.51,35.51,35.51,3230000,35.51 +1955-01-24,35.52,35.52,35.52,35.52,2910000,35.52 +1955-01-21,35.44,35.44,35.44,35.44,2690000,35.44 +1955-01-20,35.13,35.13,35.13,35.13,2210000,35.13 +1955-01-19,34.96,34.96,34.96,34.96,2760000,34.96 +1955-01-18,34.80,34.80,34.80,34.80,3020000,34.80 +1955-01-17,34.58,34.58,34.58,34.58,3360000,34.58 +1955-01-14,35.28,35.28,35.28,35.28,2630000,35.28 +1955-01-13,35.43,35.43,35.43,35.43,3350000,35.43 +1955-01-12,35.58,35.58,35.58,35.58,3400000,35.58 +1955-01-11,35.68,35.68,35.68,35.68,3680000,35.68 +1955-01-10,35.79,35.79,35.79,35.79,4300000,35.79 +1955-01-07,35.33,35.33,35.33,35.33,4030000,35.33 +1955-01-06,35.04,35.04,35.04,35.04,5300000,35.04 +1955-01-05,35.52,35.52,35.52,35.52,4640000,35.52 +1955-01-04,36.42,36.42,36.42,36.42,4420000,36.42 +1955-01-03,36.75,36.75,36.75,36.75,4570000,36.75 +1954-12-31,35.98,35.98,35.98,35.98,3840000,35.98 +1954-12-30,35.74,35.74,35.74,35.74,3590000,35.74 +1954-12-29,35.74,35.74,35.74,35.74,4430000,35.74 +1954-12-28,35.43,35.43,35.43,35.43,3660000,35.43 +1954-12-27,35.07,35.07,35.07,35.07,2970000,35.07 +1954-12-23,35.37,35.37,35.37,35.37,3310000,35.37 +1954-12-22,35.34,35.34,35.34,35.34,3460000,35.34 +1954-12-21,35.38,35.38,35.38,35.38,3630000,35.38 +1954-12-20,35.33,35.33,35.33,35.33,3770000,35.33 +1954-12-17,35.92,35.92,35.92,35.92,3730000,35.92 +1954-12-16,34.93,34.93,34.93,34.93,3390000,34.93 +1954-12-15,34.56,34.56,34.56,34.56,2740000,34.56 +1954-12-14,34.35,34.35,34.35,34.35,2650000,34.35 +1954-12-13,34.59,34.59,34.59,34.59,2750000,34.59 +1954-12-10,34.56,34.56,34.56,34.56,3250000,34.56 +1954-12-09,34.69,34.69,34.69,34.69,3300000,34.69 +1954-12-08,34.86,34.86,34.86,34.86,4150000,34.86 +1954-12-07,34.92,34.92,34.92,34.92,3820000,34.92 +1954-12-06,34.76,34.76,34.76,34.76,3960000,34.76 +1954-12-03,34.49,34.49,34.49,34.49,3790000,34.49 +1954-12-02,34.18,34.18,34.18,34.18,3190000,34.18 +1954-12-01,33.99,33.99,33.99,33.99,3100000,33.99 +1954-11-30,34.24,34.24,34.24,34.24,3440000,34.24 +1954-11-29,34.54,34.54,34.54,34.54,3300000,34.54 +1954-11-26,34.55,34.55,34.55,34.55,3010000,34.55 +1954-11-24,34.22,34.22,34.22,34.22,3990000,34.22 +1954-11-23,34.03,34.03,34.03,34.03,3690000,34.03 +1954-11-22,33.58,33.58,33.58,33.58,3000000,33.58 +1954-11-19,33.45,33.45,33.45,33.45,3130000,33.45 +1954-11-18,33.44,33.44,33.44,33.44,3530000,33.44 +1954-11-17,33.63,33.63,33.63,33.63,3830000,33.63 +1954-11-16,33.57,33.57,33.57,33.57,3260000,33.57 +1954-11-15,33.47,33.47,33.47,33.47,3080000,33.47 +1954-11-12,33.54,33.54,33.54,33.54,3720000,33.54 +1954-11-11,33.47,33.47,33.47,33.47,2960000,33.47 +1954-11-10,33.18,33.18,33.18,33.18,2070000,33.18 +1954-11-09,33.15,33.15,33.15,33.15,3240000,33.15 +1954-11-08,33.02,33.02,33.02,33.02,3180000,33.02 +1954-11-05,32.71,32.71,32.71,32.71,2950000,32.71 +1954-11-04,32.82,32.82,32.82,32.82,3140000,32.82 +1954-11-03,32.44,32.44,32.44,32.44,2700000,32.44 +1954-11-01,31.79,31.79,31.79,31.79,1790000,31.79 +1954-10-29,31.68,31.68,31.68,31.68,1900000,31.68 +1954-10-28,31.88,31.88,31.88,31.88,2190000,31.88 +1954-10-27,32.02,32.02,32.02,32.02,2030000,32.02 +1954-10-26,31.94,31.94,31.94,31.94,2010000,31.94 +1954-10-25,31.96,31.96,31.96,31.96,2340000,31.96 +1954-10-22,32.13,32.13,32.13,32.13,2080000,32.13 +1954-10-21,32.13,32.13,32.13,32.13,2320000,32.13 +1954-10-20,32.17,32.17,32.17,32.17,2380000,32.17 +1954-10-19,31.91,31.91,31.91,31.91,1900000,31.91 +1954-10-18,31.83,31.83,31.83,31.83,1790000,31.83 +1954-10-15,31.71,31.71,31.71,31.71,2250000,31.71 +1954-10-14,31.88,31.88,31.88,31.88,2540000,31.88 +1954-10-13,32.27,32.27,32.27,32.27,2070000,32.27 +1954-10-12,32.28,32.28,32.28,32.28,1620000,32.28 +1954-10-11,32.41,32.41,32.41,32.41,2100000,32.41 +1954-10-08,32.67,32.67,32.67,32.67,2120000,32.67 +1954-10-07,32.69,32.69,32.69,32.69,1810000,32.69 +1954-10-06,32.76,32.76,32.76,32.76,2570000,32.76 +1954-10-05,32.63,32.63,32.63,32.63,2300000,32.63 +1954-10-04,32.47,32.47,32.47,32.47,2000000,32.47 +1954-10-01,32.29,32.29,32.29,32.29,1850000,32.29 +1954-09-30,32.31,32.31,32.31,32.31,1840000,32.31 +1954-09-29,32.50,32.50,32.50,32.50,1810000,32.50 +1954-09-28,32.69,32.69,32.69,32.69,1800000,32.69 +1954-09-27,32.53,32.53,32.53,32.53,2190000,32.53 +1954-09-24,32.40,32.40,32.40,32.40,2340000,32.40 +1954-09-23,32.18,32.18,32.18,32.18,2340000,32.18 +1954-09-22,32.00,32.00,32.00,32.00,2260000,32.00 +1954-09-21,31.79,31.79,31.79,31.79,1770000,31.79 +1954-09-20,31.57,31.57,31.57,31.57,2060000,31.57 +1954-09-17,31.71,31.71,31.71,31.71,2250000,31.71 +1954-09-16,31.46,31.46,31.46,31.46,1880000,31.46 +1954-09-15,31.29,31.29,31.29,31.29,2110000,31.29 +1954-09-14,31.28,31.28,31.28,31.28,2120000,31.28 +1954-09-13,31.12,31.12,31.12,31.12,2030000,31.12 +1954-09-10,30.84,30.84,30.84,30.84,1870000,30.84 +1954-09-09,30.73,30.73,30.73,30.73,1700000,30.73 +1954-09-08,30.68,30.68,30.68,30.68,1970000,30.68 +1954-09-07,30.66,30.66,30.66,30.66,1860000,30.66 +1954-09-03,30.50,30.50,30.50,30.50,1630000,30.50 +1954-09-02,30.27,30.27,30.27,30.27,1600000,30.27 +1954-09-01,30.04,30.04,30.04,30.04,1790000,30.04 +1954-08-31,29.83,29.83,29.83,29.83,2640000,29.83 +1954-08-30,30.35,30.35,30.35,30.35,1950000,30.35 +1954-08-27,30.66,30.66,30.66,30.66,1740000,30.66 +1954-08-26,30.57,30.57,30.57,30.57,2060000,30.57 +1954-08-25,30.65,30.65,30.65,30.65,2280000,30.65 +1954-08-24,30.87,30.87,30.87,30.87,2000000,30.87 +1954-08-23,31.00,31.00,31.00,31.00,2020000,31.00 +1954-08-20,31.21,31.21,31.21,31.21,2110000,31.21 +1954-08-19,31.16,31.16,31.16,31.16,2320000,31.16 +1954-08-18,31.09,31.09,31.09,31.09,2390000,31.09 +1954-08-17,31.12,31.12,31.12,31.12,2900000,31.12 +1954-08-16,31.05,31.05,31.05,31.05,2760000,31.05 +1954-08-13,30.72,30.72,30.72,30.72,2500000,30.72 +1954-08-12,30.59,30.59,30.59,30.59,2680000,30.59 +1954-08-11,30.72,30.72,30.72,30.72,3440000,30.72 +1954-08-10,30.37,30.37,30.37,30.37,2890000,30.37 +1954-08-09,30.12,30.12,30.12,30.12,2280000,30.12 +1954-08-06,30.38,30.38,30.38,30.38,3350000,30.38 +1954-08-05,30.77,30.77,30.77,30.77,3150000,30.77 +1954-08-04,30.90,30.90,30.90,30.90,3620000,30.90 +1954-08-03,30.93,30.93,30.93,30.93,2970000,30.93 +1954-08-02,30.99,30.99,30.99,30.99,2850000,30.99 +1954-07-30,30.88,30.88,30.88,30.88,2800000,30.88 +1954-07-29,30.69,30.69,30.69,30.69,2710000,30.69 +1954-07-28,30.58,30.58,30.58,30.58,2740000,30.58 +1954-07-27,30.52,30.52,30.52,30.52,2690000,30.52 +1954-07-26,30.34,30.34,30.34,30.34,2110000,30.34 +1954-07-23,30.31,30.31,30.31,30.31,2520000,30.31 +1954-07-22,30.27,30.27,30.27,30.27,2890000,30.27 +1954-07-21,30.03,30.03,30.03,30.03,2510000,30.03 +1954-07-20,29.84,29.84,29.84,29.84,2580000,29.84 +1954-07-19,29.98,29.98,29.98,29.98,2370000,29.98 +1954-07-16,30.06,30.06,30.06,30.06,2540000,30.06 +1954-07-15,30.19,30.19,30.19,30.19,3000000,30.19 +1954-07-14,30.09,30.09,30.09,30.09,2520000,30.09 +1954-07-13,30.02,30.02,30.02,30.02,2430000,30.02 +1954-07-12,30.12,30.12,30.12,30.12,2330000,30.12 +1954-07-09,30.14,30.14,30.14,30.14,2240000,30.14 +1954-07-08,29.94,29.94,29.94,29.94,2080000,29.94 +1954-07-07,29.94,29.94,29.94,29.94,2380000,29.94 +1954-07-06,29.92,29.92,29.92,29.92,2560000,29.92 +1954-07-02,29.59,29.59,29.59,29.59,1980000,29.59 +1954-07-01,29.21,29.21,29.21,29.21,1860000,29.21 +1954-06-30,29.21,29.21,29.21,29.21,1950000,29.21 +1954-06-29,29.43,29.43,29.43,29.43,2580000,29.43 +1954-06-28,29.28,29.28,29.28,29.28,1890000,29.28 +1954-06-25,29.20,29.20,29.20,29.20,2060000,29.20 +1954-06-24,29.26,29.26,29.26,29.26,2260000,29.26 +1954-06-23,29.13,29.13,29.13,29.13,2090000,29.13 +1954-06-22,29.08,29.08,29.08,29.08,2100000,29.08 +1954-06-21,29.06,29.06,29.06,29.06,1820000,29.06 +1954-06-18,29.04,29.04,29.04,29.04,1580000,29.04 +1954-06-17,28.96,28.96,28.96,28.96,1810000,28.96 +1954-06-16,29.04,29.04,29.04,29.04,2070000,29.04 +1954-06-15,28.83,28.83,28.83,28.83,1630000,28.83 +1954-06-14,28.62,28.62,28.62,28.62,1420000,28.62 +1954-06-11,28.58,28.58,28.58,28.58,1630000,28.58 +1954-06-10,28.34,28.34,28.34,28.34,1610000,28.34 +1954-06-09,28.15,28.15,28.15,28.15,2360000,28.15 +1954-06-08,28.34,28.34,28.34,28.34,2540000,28.34 +1954-06-07,28.99,28.99,28.99,28.99,1520000,28.99 +1954-06-04,29.10,29.10,29.10,29.10,1720000,29.10 +1954-06-03,29.15,29.15,29.15,29.15,1810000,29.15 +1954-06-02,29.16,29.16,29.16,29.16,1930000,29.16 +1954-06-01,29.19,29.19,29.19,29.19,1850000,29.19 +1954-05-28,29.19,29.19,29.19,29.19,1940000,29.19 +1954-05-27,29.05,29.05,29.05,29.05,2230000,29.05 +1954-05-26,29.17,29.17,29.17,29.17,2180000,29.17 +1954-05-25,28.93,28.93,28.93,28.93,2050000,28.93 +1954-05-24,29.00,29.00,29.00,29.00,2330000,29.00 +1954-05-21,28.99,28.99,28.99,28.99,2620000,28.99 +1954-05-20,28.82,28.82,28.82,28.82,2070000,28.82 +1954-05-19,28.72,28.72,28.72,28.72,2170000,28.72 +1954-05-18,28.85,28.85,28.85,28.85,2250000,28.85 +1954-05-17,28.84,28.84,28.84,28.84,2040000,28.84 +1954-05-14,28.80,28.80,28.80,28.80,1970000,28.80 +1954-05-13,28.56,28.56,28.56,28.56,2340000,28.56 +1954-05-12,28.72,28.72,28.72,28.72,2210000,28.72 +1954-05-11,28.49,28.49,28.49,28.49,1770000,28.49 +1954-05-10,28.62,28.62,28.62,28.62,1800000,28.62 +1954-05-07,28.65,28.65,28.65,28.65,2070000,28.65 +1954-05-06,28.51,28.51,28.51,28.51,1980000,28.51 +1954-05-05,28.29,28.29,28.29,28.29,2020000,28.29 +1954-05-04,28.28,28.28,28.28,28.28,1990000,28.28 +1954-05-03,28.21,28.21,28.21,28.21,1870000,28.21 +1954-04-30,28.26,28.26,28.26,28.26,2450000,28.26 +1954-04-29,28.18,28.18,28.18,28.18,2150000,28.18 +1954-04-28,27.76,27.76,27.76,27.76,2120000,27.76 +1954-04-27,27.71,27.71,27.71,27.71,1970000,27.71 +1954-04-26,27.88,27.88,27.88,27.88,2150000,27.88 +1954-04-23,27.78,27.78,27.78,27.78,1990000,27.78 +1954-04-22,27.68,27.68,27.68,27.68,1750000,27.68 +1954-04-21,27.64,27.64,27.64,27.64,1870000,27.64 +1954-04-20,27.75,27.75,27.75,27.75,1860000,27.75 +1954-04-19,27.76,27.76,27.76,27.76,2430000,27.76 +1954-04-15,27.94,27.94,27.94,27.94,2200000,27.94 +1954-04-14,27.85,27.85,27.85,27.85,2330000,27.85 +1954-04-13,27.64,27.64,27.64,27.64,2020000,27.64 +1954-04-12,27.57,27.57,27.57,27.57,1790000,27.57 +1954-04-09,27.38,27.38,27.38,27.38,2360000,27.38 +1954-04-08,27.38,27.38,27.38,27.38,2300000,27.38 +1954-04-07,27.11,27.11,27.11,27.11,1830000,27.11 +1954-04-06,27.01,27.01,27.01,27.01,2120000,27.01 +1954-04-05,27.26,27.26,27.26,27.26,1710000,27.26 +1954-04-02,27.21,27.21,27.21,27.21,1830000,27.21 +1954-04-01,27.17,27.17,27.17,27.17,2270000,27.17 +1954-03-31,26.94,26.94,26.94,26.94,2690000,26.94 +1954-03-30,26.69,26.69,26.69,26.69,2130000,26.69 +1954-03-29,26.66,26.66,26.66,26.66,1870000,26.66 +1954-03-26,26.56,26.56,26.56,26.56,1550000,26.56 +1954-03-25,26.42,26.42,26.42,26.42,1720000,26.42 +1954-03-24,26.47,26.47,26.47,26.47,1900000,26.47 +1954-03-23,26.60,26.60,26.60,26.60,2180000,26.60 +1954-03-22,26.79,26.79,26.79,26.79,1800000,26.79 +1954-03-19,26.81,26.81,26.81,26.81,1930000,26.81 +1954-03-18,26.73,26.73,26.73,26.73,2020000,26.73 +1954-03-17,26.62,26.62,26.62,26.62,1740000,26.62 +1954-03-16,26.56,26.56,26.56,26.56,1540000,26.56 +1954-03-15,26.57,26.57,26.57,26.57,1680000,26.57 +1954-03-12,26.69,26.69,26.69,26.69,1980000,26.69 +1954-03-11,26.69,26.69,26.69,26.69,2050000,26.69 +1954-03-10,26.57,26.57,26.57,26.57,1870000,26.57 +1954-03-09,26.51,26.51,26.51,26.51,1630000,26.51 +1954-03-08,26.45,26.45,26.45,26.45,1650000,26.45 +1954-03-05,26.52,26.52,26.52,26.52,2030000,26.52 +1954-03-04,26.41,26.41,26.41,26.41,1830000,26.41 +1954-03-03,26.32,26.32,26.32,26.32,2240000,26.32 +1954-03-02,26.32,26.32,26.32,26.32,1980000,26.32 +1954-03-01,26.25,26.25,26.25,26.25,2040000,26.25 +1954-02-26,26.15,26.15,26.15,26.15,1910000,26.15 +1954-02-25,25.91,25.91,25.91,25.91,1470000,25.91 +1954-02-24,25.83,25.83,25.83,25.83,1350000,25.83 +1954-02-23,25.83,25.83,25.83,25.83,1470000,25.83 +1954-02-19,25.92,25.92,25.92,25.92,1510000,25.92 +1954-02-18,25.86,25.86,25.86,25.86,1500000,25.86 +1954-02-17,25.86,25.86,25.86,25.86,1740000,25.86 +1954-02-16,25.81,25.81,25.81,25.81,1870000,25.81 +1954-02-15,26.04,26.04,26.04,26.04,2080000,26.04 +1954-02-12,26.12,26.12,26.12,26.12,1730000,26.12 +1954-02-11,26.06,26.06,26.06,26.06,1860000,26.06 +1954-02-10,26.14,26.14,26.14,26.14,1790000,26.14 +1954-02-09,26.17,26.17,26.17,26.17,1880000,26.17 +1954-02-08,26.23,26.23,26.23,26.23,2180000,26.23 +1954-02-05,26.30,26.30,26.30,26.30,2030000,26.30 +1954-02-04,26.20,26.20,26.20,26.20,2040000,26.20 +1954-02-03,26.01,26.01,26.01,26.01,1690000,26.01 +1954-02-02,25.92,25.92,25.92,25.92,1420000,25.92 +1954-02-01,25.99,25.99,25.99,25.99,1740000,25.99 +1954-01-29,26.08,26.08,26.08,26.08,1950000,26.08 +1954-01-28,26.02,26.02,26.02,26.02,1730000,26.02 +1954-01-27,26.01,26.01,26.01,26.01,2020000,26.01 +1954-01-26,26.09,26.09,26.09,26.09,2120000,26.09 +1954-01-25,25.93,25.93,25.93,25.93,1860000,25.93 +1954-01-22,25.85,25.85,25.85,25.85,1890000,25.85 +1954-01-21,25.79,25.79,25.79,25.79,1780000,25.79 +1954-01-20,25.75,25.75,25.75,25.75,1960000,25.75 +1954-01-19,25.68,25.68,25.68,25.68,1840000,25.68 +1954-01-18,25.43,25.43,25.43,25.43,1580000,25.43 +1954-01-15,25.43,25.43,25.43,25.43,2180000,25.43 +1954-01-14,25.19,25.19,25.19,25.19,1530000,25.19 +1954-01-13,25.07,25.07,25.07,25.07,1420000,25.07 +1954-01-12,24.93,24.93,24.93,24.93,1250000,24.93 +1954-01-11,24.80,24.80,24.80,24.80,1220000,24.80 +1954-01-08,24.93,24.93,24.93,24.93,1260000,24.93 +1954-01-07,25.06,25.06,25.06,25.06,1540000,25.06 +1954-01-06,25.14,25.14,25.14,25.14,1460000,25.14 +1954-01-05,25.10,25.10,25.10,25.10,1520000,25.10 +1954-01-04,24.95,24.95,24.95,24.95,1310000,24.95 +1953-12-31,24.81,24.81,24.81,24.81,2490000,24.81 +1953-12-30,24.76,24.76,24.76,24.76,2050000,24.76 +1953-12-29,24.55,24.55,24.55,24.55,2140000,24.55 +1953-12-28,24.71,24.71,24.71,24.71,1570000,24.71 +1953-12-24,24.80,24.80,24.80,24.80,1270000,24.80 +1953-12-23,24.69,24.69,24.69,24.69,1570000,24.69 +1953-12-22,24.76,24.76,24.76,24.76,1720000,24.76 +1953-12-21,24.95,24.95,24.95,24.95,1690000,24.95 +1953-12-18,24.99,24.99,24.99,24.99,1550000,24.99 +1953-12-17,24.94,24.94,24.94,24.94,1600000,24.94 +1953-12-16,24.96,24.96,24.96,24.96,1880000,24.96 +1953-12-15,24.71,24.71,24.71,24.71,1450000,24.71 +1953-12-14,24.69,24.69,24.69,24.69,1540000,24.69 +1953-12-11,24.76,24.76,24.76,24.76,1440000,24.76 +1953-12-10,24.78,24.78,24.78,24.78,1420000,24.78 +1953-12-09,24.84,24.84,24.84,24.84,1410000,24.84 +1953-12-08,24.87,24.87,24.87,24.87,1390000,24.87 +1953-12-07,24.95,24.95,24.95,24.95,1410000,24.95 +1953-12-04,24.98,24.98,24.98,24.98,1390000,24.98 +1953-12-03,24.97,24.97,24.97,24.97,1740000,24.97 +1953-12-02,24.95,24.95,24.95,24.95,1850000,24.95 +1953-12-01,24.78,24.78,24.78,24.78,1580000,24.78 +1953-11-30,24.76,24.76,24.76,24.76,1960000,24.76 +1953-11-27,24.66,24.66,24.66,24.66,1600000,24.66 +1953-11-25,24.52,24.52,24.52,24.52,1540000,24.52 +1953-11-24,24.50,24.50,24.50,24.50,1470000,24.50 +1953-11-23,24.36,24.36,24.36,24.36,1410000,24.36 +1953-11-20,24.44,24.44,24.44,24.44,1300000,24.44 +1953-11-19,24.40,24.40,24.40,24.40,1420000,24.40 +1953-11-18,24.29,24.29,24.29,24.29,1250000,24.29 +1953-11-17,24.25,24.25,24.25,24.25,1250000,24.25 +1953-11-16,24.38,24.38,24.38,24.38,1490000,24.38 +1953-11-13,24.54,24.54,24.54,24.54,1540000,24.54 +1953-11-12,24.46,24.46,24.46,24.46,1390000,24.46 +1953-11-10,24.37,24.37,24.37,24.37,1340000,24.37 +1953-11-09,24.66,24.66,24.66,24.66,1440000,24.66 +1953-11-06,24.61,24.61,24.61,24.61,1700000,24.61 +1953-11-05,24.64,24.64,24.64,24.64,1720000,24.64 +1953-11-04,24.51,24.51,24.51,24.51,1480000,24.51 +1953-11-02,24.66,24.66,24.66,24.66,1340000,24.66 +1953-10-30,24.54,24.54,24.54,24.54,1400000,24.54 +1953-10-29,24.58,24.58,24.58,24.58,1610000,24.58 +1953-10-28,24.29,24.29,24.29,24.29,1260000,24.29 +1953-10-27,24.26,24.26,24.26,24.26,1170000,24.26 +1953-10-26,24.31,24.31,24.31,24.31,1340000,24.31 +1953-10-23,24.35,24.35,24.35,24.35,1330000,24.35 +1953-10-22,24.30,24.30,24.30,24.30,1330000,24.30 +1953-10-21,24.19,24.19,24.19,24.19,1320000,24.19 +1953-10-20,24.17,24.17,24.17,24.17,1280000,24.17 +1953-10-19,24.16,24.16,24.16,24.16,1190000,24.16 +1953-10-16,24.14,24.14,24.14,24.14,1620000,24.14 +1953-10-15,23.95,23.95,23.95,23.95,1710000,23.95 +1953-10-14,23.68,23.68,23.68,23.68,1290000,23.68 +1953-10-13,23.57,23.57,23.57,23.57,1130000,23.57 +1953-10-09,23.66,23.66,23.66,23.66,900000,23.66 +1953-10-08,23.62,23.62,23.62,23.62,960000,23.62 +1953-10-07,23.58,23.58,23.58,23.58,1010000,23.58 +1953-10-06,23.39,23.39,23.39,23.39,1100000,23.39 +1953-10-05,23.48,23.48,23.48,23.48,930000,23.48 +1953-10-02,23.59,23.59,23.59,23.59,890000,23.59 +1953-10-01,23.49,23.49,23.49,23.49,940000,23.49 +1953-09-30,23.35,23.35,23.35,23.35,940000,23.35 +1953-09-29,23.49,23.49,23.49,23.49,1170000,23.49 +1953-09-28,23.45,23.45,23.45,23.45,1150000,23.45 +1953-09-25,23.30,23.30,23.30,23.30,910000,23.30 +1953-09-24,23.24,23.24,23.24,23.24,1020000,23.24 +1953-09-23,23.23,23.23,23.23,23.23,1240000,23.23 +1953-09-22,23.20,23.20,23.20,23.20,1300000,23.20 +1953-09-21,22.88,22.88,22.88,22.88,1070000,22.88 +1953-09-18,22.95,22.95,22.95,22.95,1190000,22.95 +1953-09-17,23.07,23.07,23.07,23.07,1290000,23.07 +1953-09-16,23.01,23.01,23.01,23.01,1570000,23.01 +1953-09-15,22.90,22.90,22.90,22.90,2850000,22.90 +1953-09-14,22.71,22.71,22.71,22.71,2550000,22.71 +1953-09-11,23.14,23.14,23.14,23.14,1930000,23.14 +1953-09-10,23.41,23.41,23.41,23.41,1010000,23.41 +1953-09-09,23.65,23.65,23.65,23.65,860000,23.65 +1953-09-08,23.61,23.61,23.61,23.61,740000,23.61 +1953-09-04,23.57,23.57,23.57,23.57,770000,23.57 +1953-09-03,23.51,23.51,23.51,23.51,900000,23.51 +1953-09-02,23.56,23.56,23.56,23.56,1110000,23.56 +1953-09-01,23.42,23.42,23.42,23.42,1580000,23.42 +1953-08-31,23.32,23.32,23.32,23.32,2190000,23.32 +1953-08-28,23.74,23.74,23.74,23.74,1060000,23.74 +1953-08-27,23.79,23.79,23.79,23.79,1290000,23.79 +1953-08-26,23.86,23.86,23.86,23.86,1060000,23.86 +1953-08-25,23.93,23.93,23.93,23.93,1470000,23.93 +1953-08-24,24.09,24.09,24.09,24.09,1320000,24.09 +1953-08-21,24.35,24.35,24.35,24.35,850000,24.35 +1953-08-20,24.29,24.29,24.29,24.29,860000,24.29 +1953-08-19,24.31,24.31,24.31,24.31,1400000,24.31 +1953-08-18,24.46,24.46,24.46,24.46,1030000,24.46 +1953-08-17,24.56,24.56,24.56,24.56,910000,24.56 +1953-08-14,24.62,24.62,24.62,24.62,1000000,24.62 +1953-08-13,24.73,24.73,24.73,24.73,1040000,24.73 +1953-08-12,24.78,24.78,24.78,24.78,990000,24.78 +1953-08-11,24.72,24.72,24.72,24.72,940000,24.72 +1953-08-10,24.75,24.75,24.75,24.75,1090000,24.75 +1953-08-07,24.78,24.78,24.78,24.78,950000,24.78 +1953-08-06,24.80,24.80,24.80,24.80,1200000,24.80 +1953-08-05,24.68,24.68,24.68,24.68,1080000,24.68 +1953-08-04,24.78,24.78,24.78,24.78,1000000,24.78 +1953-08-03,24.84,24.84,24.84,24.84,1160000,24.84 +1953-07-31,24.75,24.75,24.75,24.75,1320000,24.75 +1953-07-30,24.49,24.49,24.49,24.49,1200000,24.49 +1953-07-29,24.26,24.26,24.26,24.26,1000000,24.26 +1953-07-28,24.11,24.11,24.11,24.11,1080000,24.11 +1953-07-27,24.07,24.07,24.07,24.07,1210000,24.07 +1953-07-24,24.23,24.23,24.23,24.23,890000,24.23 +1953-07-23,24.23,24.23,24.23,24.23,1000000,24.23 +1953-07-22,24.19,24.19,24.19,24.19,900000,24.19 +1953-07-21,24.16,24.16,24.16,24.16,850000,24.16 +1953-07-20,24.22,24.22,24.22,24.22,830000,24.22 +1953-07-17,24.35,24.35,24.35,24.35,840000,24.35 +1953-07-16,24.18,24.18,24.18,24.18,790000,24.18 +1953-07-15,24.15,24.15,24.15,24.15,840000,24.15 +1953-07-14,24.08,24.08,24.08,24.08,1030000,24.08 +1953-07-13,24.17,24.17,24.17,24.17,1120000,24.17 +1953-07-10,24.41,24.41,24.41,24.41,860000,24.41 +1953-07-09,24.43,24.43,24.43,24.43,910000,24.43 +1953-07-08,24.50,24.50,24.50,24.50,950000,24.50 +1953-07-07,24.51,24.51,24.51,24.51,1030000,24.51 +1953-07-06,24.38,24.38,24.38,24.38,820000,24.38 +1953-07-03,24.36,24.36,24.36,24.36,830000,24.36 +1953-07-02,24.31,24.31,24.31,24.31,1030000,24.31 +1953-07-01,24.24,24.24,24.24,24.24,910000,24.24 +1953-06-30,24.14,24.14,24.14,24.14,820000,24.14 +1953-06-29,24.14,24.14,24.14,24.14,800000,24.14 +1953-06-26,24.21,24.21,24.21,24.21,830000,24.21 +1953-06-25,24.19,24.19,24.19,24.19,1160000,24.19 +1953-06-24,24.09,24.09,24.09,24.09,1030000,24.09 +1953-06-23,24.12,24.12,24.12,24.12,1050000,24.12 +1953-06-22,23.96,23.96,23.96,23.96,1030000,23.96 +1953-06-19,23.84,23.84,23.84,23.84,890000,23.84 +1953-06-18,23.84,23.84,23.84,23.84,1010000,23.84 +1953-06-17,23.85,23.85,23.85,23.85,1150000,23.85 +1953-06-16,23.55,23.55,23.55,23.55,1370000,23.55 +1953-06-15,23.62,23.62,23.62,23.62,1090000,23.62 +1953-06-12,23.82,23.82,23.82,23.82,920000,23.82 +1953-06-11,23.75,23.75,23.75,23.75,1220000,23.75 +1953-06-10,23.54,23.54,23.54,23.54,1960000,23.54 +1953-06-09,23.60,23.60,23.60,23.60,2200000,23.60 +1953-06-08,24.01,24.01,24.01,24.01,1000000,24.01 +1953-06-05,24.09,24.09,24.09,24.09,1160000,24.09 +1953-06-04,24.03,24.03,24.03,24.03,1400000,24.03 +1953-06-03,24.18,24.18,24.18,24.18,1050000,24.18 +1953-06-02,24.22,24.22,24.22,24.22,1450000,24.22 +1953-06-01,24.15,24.15,24.15,24.15,1490000,24.15 +1953-05-29,24.54,24.54,24.54,24.54,920000,24.54 +1953-05-28,24.46,24.46,24.46,24.46,1240000,24.46 +1953-05-27,24.64,24.64,24.64,24.64,1330000,24.64 +1953-05-26,24.87,24.87,24.87,24.87,1160000,24.87 +1953-05-25,24.99,24.99,24.99,24.99,1180000,24.99 +1953-05-22,25.03,25.03,25.03,25.03,1350000,25.03 +1953-05-21,25.06,25.06,25.06,25.06,1590000,25.06 +1953-05-20,24.93,24.93,24.93,24.93,1690000,24.93 +1953-05-19,24.70,24.70,24.70,24.70,1120000,24.70 +1953-05-18,24.75,24.75,24.75,24.75,1080000,24.75 +1953-05-15,24.84,24.84,24.84,24.84,1200000,24.84 +1953-05-14,24.85,24.85,24.85,24.85,1210000,24.85 +1953-05-13,24.71,24.71,24.71,24.71,1120000,24.71 +1953-05-12,24.74,24.74,24.74,24.74,1080000,24.74 +1953-05-11,24.91,24.91,24.91,24.91,1010000,24.91 +1953-05-08,24.90,24.90,24.90,24.90,1220000,24.90 +1953-05-07,24.90,24.90,24.90,24.90,1110000,24.90 +1953-05-06,25.00,25.00,25.00,25.00,1110000,25.00 +1953-05-05,25.03,25.03,25.03,25.03,1290000,25.03 +1953-05-04,25.00,25.00,25.00,25.00,1520000,25.00 +1953-05-01,24.73,24.73,24.73,24.73,1200000,24.73 +1953-04-30,24.62,24.62,24.62,24.62,1140000,24.62 +1953-04-29,24.68,24.68,24.68,24.68,1310000,24.68 +1953-04-28,24.52,24.52,24.52,24.52,1330000,24.52 +1953-04-27,24.34,24.34,24.34,24.34,1400000,24.34 +1953-04-24,24.20,24.20,24.20,24.20,1780000,24.20 +1953-04-23,24.19,24.19,24.19,24.19,1920000,24.19 +1953-04-22,24.46,24.46,24.46,24.46,1390000,24.46 +1953-04-21,24.67,24.67,24.67,24.67,1250000,24.67 +1953-04-20,24.73,24.73,24.73,24.73,1520000,24.73 +1953-04-17,24.62,24.62,24.62,24.62,1430000,24.62 +1953-04-16,24.91,24.91,24.91,24.91,1310000,24.91 +1953-04-15,24.96,24.96,24.96,24.96,1580000,24.96 +1953-04-14,24.86,24.86,24.86,24.86,1480000,24.86 +1953-04-13,24.77,24.77,24.77,24.77,1280000,24.77 +1953-04-10,24.82,24.82,24.82,24.82,1360000,24.82 +1953-04-09,24.88,24.88,24.88,24.88,1520000,24.88 +1953-04-08,24.93,24.93,24.93,24.93,1860000,24.93 +1953-04-07,24.71,24.71,24.71,24.71,2500000,24.71 +1953-04-06,24.61,24.61,24.61,24.61,3050000,24.61 +1953-04-02,25.23,25.23,25.23,25.23,1720000,25.23 +1953-04-01,25.25,25.25,25.25,25.25,2240000,25.25 +1953-03-31,25.29,25.29,25.29,25.29,3120000,25.29 +1953-03-30,25.61,25.61,25.61,25.61,2740000,25.61 +1953-03-27,25.99,25.99,25.99,25.99,1640000,25.99 +1953-03-26,25.95,25.95,25.95,25.95,2000000,25.95 +1953-03-25,26.10,26.10,26.10,26.10,2320000,26.10 +1953-03-24,26.17,26.17,26.17,26.17,1970000,26.17 +1953-03-23,26.02,26.02,26.02,26.02,1750000,26.02 +1953-03-20,26.18,26.18,26.18,26.18,1730000,26.18 +1953-03-19,26.22,26.22,26.22,26.22,1840000,26.22 +1953-03-18,26.24,26.24,26.24,26.24,2110000,26.24 +1953-03-17,26.33,26.33,26.33,26.33,2110000,26.33 +1953-03-16,26.22,26.22,26.22,26.22,1770000,26.22 +1953-03-13,26.18,26.18,26.18,26.18,1760000,26.18 +1953-03-12,26.13,26.13,26.13,26.13,1780000,26.13 +1953-03-11,26.12,26.12,26.12,26.12,1890000,26.12 +1953-03-10,25.91,25.91,25.91,25.91,1530000,25.91 +1953-03-09,25.83,25.83,25.83,25.83,1600000,25.83 +1953-03-06,25.84,25.84,25.84,25.84,1690000,25.84 +1953-03-05,25.79,25.79,25.79,25.79,1540000,25.79 +1953-03-04,25.78,25.78,25.78,25.78,2010000,25.78 +1953-03-03,26.00,26.00,26.00,26.00,1850000,26.00 +1953-03-02,25.93,25.93,25.93,25.93,1760000,25.93 +1953-02-27,25.90,25.90,25.90,25.90,1990000,25.90 +1953-02-26,25.95,25.95,25.95,25.95,2290000,25.95 +1953-02-25,25.91,25.91,25.91,25.91,2360000,25.91 +1953-02-24,25.75,25.75,25.75,25.75,2300000,25.75 +1953-02-20,25.63,25.63,25.63,25.63,1400000,25.63 +1953-02-19,25.57,25.57,25.57,25.57,1390000,25.57 +1953-02-18,25.48,25.48,25.48,25.48,1220000,25.48 +1953-02-17,25.50,25.50,25.50,25.50,1290000,25.50 +1953-02-16,25.65,25.65,25.65,25.65,1330000,25.65 +1953-02-13,25.74,25.74,25.74,25.74,1350000,25.74 +1953-02-11,25.64,25.64,25.64,25.64,1240000,25.64 +1953-02-10,25.62,25.62,25.62,25.62,1350000,25.62 +1953-02-09,25.69,25.69,25.69,25.69,1780000,25.69 +1953-02-06,26.51,26.51,26.51,26.51,1870000,26.51 +1953-02-05,26.15,26.15,26.15,26.15,1900000,26.15 +1953-02-04,26.42,26.42,26.42,26.42,1660000,26.42 +1953-02-03,26.54,26.54,26.54,26.54,1560000,26.54 +1953-02-02,26.51,26.51,26.51,26.51,1890000,26.51 +1953-01-30,26.38,26.38,26.38,26.38,1760000,26.38 +1953-01-29,26.20,26.20,26.20,26.20,1830000,26.20 +1953-01-28,26.13,26.13,26.13,26.13,1640000,26.13 +1953-01-27,26.05,26.05,26.05,26.05,1550000,26.05 +1953-01-26,26.02,26.02,26.02,26.02,1420000,26.02 +1953-01-23,26.07,26.07,26.07,26.07,1340000,26.07 +1953-01-22,26.12,26.12,26.12,26.12,1380000,26.12 +1953-01-21,26.09,26.09,26.09,26.09,1300000,26.09 +1953-01-20,26.14,26.14,26.14,26.14,1490000,26.14 +1953-01-19,26.01,26.01,26.01,26.01,1360000,26.01 +1953-01-16,26.02,26.02,26.02,26.02,1710000,26.02 +1953-01-15,26.13,26.13,26.13,26.13,1450000,26.13 +1953-01-14,26.08,26.08,26.08,26.08,1370000,26.08 +1953-01-13,26.02,26.02,26.02,26.02,1680000,26.02 +1953-01-12,25.86,25.86,25.86,25.86,1500000,25.86 +1953-01-09,26.08,26.08,26.08,26.08,2080000,26.08 +1953-01-08,26.33,26.33,26.33,26.33,1780000,26.33 +1953-01-07,26.37,26.37,26.37,26.37,1760000,26.37 +1953-01-06,26.48,26.48,26.48,26.48,2080000,26.48 +1953-01-05,26.66,26.66,26.66,26.66,2130000,26.66 +1953-01-02,26.54,26.54,26.54,26.54,1450000,26.54 +1952-12-31,26.57,26.57,26.57,26.57,2050000,26.57 +1952-12-30,26.59,26.59,26.59,26.59,2070000,26.59 +1952-12-29,26.40,26.40,26.40,26.40,1820000,26.40 +1952-12-26,26.25,26.25,26.25,26.25,1290000,26.25 +1952-12-24,26.21,26.21,26.21,26.21,1510000,26.21 +1952-12-23,26.19,26.19,26.19,26.19,2100000,26.19 +1952-12-22,26.30,26.30,26.30,26.30,2100000,26.30 +1952-12-19,26.15,26.15,26.15,26.15,2050000,26.15 +1952-12-18,26.03,26.03,26.03,26.03,1860000,26.03 +1952-12-17,26.04,26.04,26.04,26.04,1700000,26.04 +1952-12-16,26.07,26.07,26.07,26.07,1980000,26.07 +1952-12-15,26.04,26.04,26.04,26.04,1940000,26.04 +1952-12-12,26.04,26.04,26.04,26.04,2030000,26.04 +1952-12-11,25.96,25.96,25.96,25.96,1790000,25.96 +1952-12-10,25.98,25.98,25.98,25.98,1880000,25.98 +1952-12-09,25.93,25.93,25.93,25.93,2120000,25.93 +1952-12-08,25.76,25.76,25.76,25.76,1790000,25.76 +1952-12-05,25.62,25.62,25.62,25.62,1510000,25.62 +1952-12-04,25.61,25.61,25.61,25.61,1570000,25.61 +1952-12-03,25.71,25.71,25.71,25.71,1610000,25.71 +1952-12-02,25.74,25.74,25.74,25.74,1610000,25.74 +1952-12-01,25.68,25.68,25.68,25.68,2100000,25.68 +1952-11-28,25.66,25.66,25.66,25.66,2160000,25.66 +1952-11-26,25.52,25.52,25.52,25.52,1920000,25.52 +1952-11-25,25.36,25.36,25.36,25.36,1930000,25.36 +1952-11-24,25.42,25.42,25.42,25.42,2100000,25.42 +1952-11-21,25.27,25.27,25.27,25.27,1760000,25.27 +1952-11-20,25.28,25.28,25.28,25.28,1740000,25.28 +1952-11-19,25.33,25.33,25.33,25.33,2350000,25.33 +1952-11-18,25.16,25.16,25.16,25.16,2250000,25.16 +1952-11-17,24.80,24.80,24.80,24.80,1490000,24.80 +1952-11-14,24.75,24.75,24.75,24.75,1700000,24.75 +1952-11-13,24.71,24.71,24.71,24.71,1330000,24.71 +1952-11-12,24.65,24.65,24.65,24.65,1490000,24.65 +1952-11-10,24.77,24.77,24.77,24.77,1360000,24.77 +1952-11-07,24.78,24.78,24.78,24.78,1540000,24.78 +1952-11-06,24.77,24.77,24.77,24.77,1390000,24.77 +1952-11-05,24.67,24.67,24.67,24.67,2030000,24.67 +1952-11-03,24.60,24.60,24.60,24.60,1670000,24.60 +1952-10-31,24.52,24.52,24.52,24.52,1760000,24.52 +1952-10-30,24.15,24.15,24.15,24.15,1090000,24.15 +1952-10-29,24.15,24.15,24.15,24.15,1020000,24.15 +1952-10-28,24.13,24.13,24.13,24.13,1080000,24.13 +1952-10-27,24.09,24.09,24.09,24.09,1000000,24.09 +1952-10-24,24.03,24.03,24.03,24.03,1060000,24.03 +1952-10-23,23.87,23.87,23.87,23.87,1260000,23.87 +1952-10-22,23.80,23.80,23.80,23.80,1160000,23.80 +1952-10-21,24.07,24.07,24.07,24.07,990000,24.07 +1952-10-20,24.13,24.13,24.13,24.13,1050000,24.13 +1952-10-17,24.20,24.20,24.20,24.20,1360000,24.20 +1952-10-16,23.91,23.91,23.91,23.91,1730000,23.91 +1952-10-15,24.06,24.06,24.06,24.06,1730000,24.06 +1952-10-14,24.48,24.48,24.48,24.48,1130000,24.48 +1952-10-10,24.55,24.55,24.55,24.55,1070000,24.55 +1952-10-09,24.57,24.57,24.57,24.57,1090000,24.57 +1952-10-08,24.58,24.58,24.58,24.58,1260000,24.58 +1952-10-07,24.40,24.40,24.40,24.40,950000,24.40 +1952-10-06,24.44,24.44,24.44,24.44,1070000,24.44 +1952-10-03,24.50,24.50,24.50,24.50,980000,24.50 +1952-10-02,24.52,24.52,24.52,24.52,1040000,24.52 +1952-10-01,24.48,24.48,24.48,24.48,1060000,24.48 +1952-09-30,24.54,24.54,24.54,24.54,1120000,24.54 +1952-09-29,24.68,24.68,24.68,24.68,970000,24.68 +1952-09-26,24.73,24.73,24.73,24.73,1180000,24.73 +1952-09-25,24.81,24.81,24.81,24.81,1210000,24.81 +1952-09-24,24.79,24.79,24.79,24.79,1390000,24.79 +1952-09-23,24.70,24.70,24.70,24.70,1240000,24.70 +1952-09-22,24.59,24.59,24.59,24.59,1160000,24.59 +1952-09-19,24.57,24.57,24.57,24.57,1150000,24.57 +1952-09-18,24.51,24.51,24.51,24.51,1030000,24.51 +1952-09-17,24.58,24.58,24.58,24.58,1000000,24.58 +1952-09-16,24.53,24.53,24.53,24.53,1140000,24.53 +1952-09-15,24.45,24.45,24.45,24.45,1100000,24.45 +1952-09-12,24.71,24.71,24.71,24.71,1040000,24.71 +1952-09-11,24.72,24.72,24.72,24.72,970000,24.72 +1952-09-10,24.69,24.69,24.69,24.69,1590000,24.69 +1952-09-09,24.86,24.86,24.86,24.86,1310000,24.86 +1952-09-08,25.11,25.11,25.11,25.11,1170000,25.11 +1952-09-05,25.21,25.21,25.21,25.21,1040000,25.21 +1952-09-04,25.24,25.24,25.24,25.24,1120000,25.24 +1952-09-03,25.25,25.25,25.25,25.25,1200000,25.25 +1952-09-02,25.15,25.15,25.15,25.15,970000,25.15 +1952-08-29,25.03,25.03,25.03,25.03,890000,25.03 +1952-08-28,24.97,24.97,24.97,24.97,980000,24.97 +1952-08-27,24.94,24.94,24.94,24.94,930000,24.94 +1952-08-26,24.83,24.83,24.83,24.83,890000,24.83 +1952-08-25,24.87,24.87,24.87,24.87,840000,24.87 +1952-08-22,24.99,24.99,24.99,24.99,910000,24.99 +1952-08-21,24.98,24.98,24.98,24.98,800000,24.98 +1952-08-20,24.95,24.95,24.95,24.95,960000,24.95 +1952-08-19,24.89,24.89,24.89,24.89,980000,24.89 +1952-08-18,24.94,24.94,24.94,24.94,1090000,24.94 +1952-08-15,25.20,25.20,25.20,25.20,890000,25.20 +1952-08-14,25.28,25.28,25.28,25.28,930000,25.28 +1952-08-13,25.28,25.28,25.28,25.28,990000,25.28 +1952-08-12,25.31,25.31,25.31,25.31,1110000,25.31 +1952-08-11,25.52,25.52,25.52,25.52,1160000,25.52 +1952-08-08,25.55,25.55,25.55,25.55,1170000,25.55 +1952-08-07,25.52,25.52,25.52,25.52,1180000,25.52 +1952-08-06,25.44,25.44,25.44,25.44,1140000,25.44 +1952-08-05,25.46,25.46,25.46,25.46,1050000,25.46 +1952-08-04,25.43,25.43,25.43,25.43,950000,25.43 +1952-08-01,25.45,25.45,25.45,25.45,1050000,25.45 +1952-07-31,25.40,25.40,25.40,25.40,1230000,25.40 +1952-07-30,25.37,25.37,25.37,25.37,1240000,25.37 +1952-07-29,25.26,25.26,25.26,25.26,1010000,25.26 +1952-07-28,25.20,25.20,25.20,25.20,1030000,25.20 +1952-07-25,25.16,25.16,25.16,25.16,1130000,25.16 +1952-07-24,25.24,25.24,25.24,25.24,1270000,25.24 +1952-07-23,25.11,25.11,25.11,25.11,1020000,25.11 +1952-07-22,25.00,25.00,25.00,25.00,910000,25.00 +1952-07-21,24.95,24.95,24.95,24.95,780000,24.95 +1952-07-18,24.85,24.85,24.85,24.85,1020000,24.85 +1952-07-17,25.05,25.05,25.05,25.05,1010000,25.05 +1952-07-16,25.16,25.16,25.16,25.16,1120000,25.16 +1952-07-15,25.16,25.16,25.16,25.16,1220000,25.16 +1952-07-14,25.03,25.03,25.03,25.03,1090000,25.03 +1952-07-11,24.98,24.98,24.98,24.98,1040000,24.98 +1952-07-10,24.81,24.81,24.81,24.81,1010000,24.81 +1952-07-09,24.86,24.86,24.86,24.86,1120000,24.86 +1952-07-08,24.96,24.96,24.96,24.96,850000,24.96 +1952-07-07,24.97,24.97,24.97,24.97,1080000,24.97 +1952-07-03,25.05,25.05,25.05,25.05,1150000,25.05 +1952-07-02,25.06,25.06,25.06,25.06,1320000,25.06 +1952-07-01,25.12,25.12,25.12,25.12,1450000,25.12 +1952-06-30,24.96,24.96,24.96,24.96,1380000,24.96 +1952-06-27,24.83,24.83,24.83,24.83,1210000,24.83 +1952-06-26,24.75,24.75,24.75,24.75,1190000,24.75 +1952-06-25,24.66,24.66,24.66,24.66,1230000,24.66 +1952-06-24,24.60,24.60,24.60,24.60,1200000,24.60 +1952-06-23,24.56,24.56,24.56,24.56,1200000,24.56 +1952-06-20,24.59,24.59,24.59,24.59,1190000,24.59 +1952-06-19,24.51,24.51,24.51,24.51,1320000,24.51 +1952-06-18,24.43,24.43,24.43,24.43,1270000,24.43 +1952-06-17,24.33,24.33,24.33,24.33,920000,24.33 +1952-06-16,24.30,24.30,24.30,24.30,980000,24.30 +1952-06-13,24.37,24.37,24.37,24.37,1130000,24.37 +1952-06-12,24.31,24.31,24.31,24.31,1370000,24.31 +1952-06-11,24.31,24.31,24.31,24.31,1190000,24.31 +1952-06-10,24.23,24.23,24.23,24.23,1220000,24.23 +1952-06-09,24.37,24.37,24.37,24.37,1270000,24.37 +1952-06-06,24.26,24.26,24.26,24.26,1520000,24.26 +1952-06-05,24.10,24.10,24.10,24.10,1410000,24.10 +1952-06-04,23.95,23.95,23.95,23.95,1200000,23.95 +1952-06-03,23.78,23.78,23.78,23.78,940000,23.78 +1952-06-02,23.80,23.80,23.80,23.80,1190000,23.80 +1952-05-29,23.86,23.86,23.86,23.86,1100000,23.86 +1952-05-28,23.84,23.84,23.84,23.84,1130000,23.84 +1952-05-27,23.88,23.88,23.88,23.88,1040000,23.88 +1952-05-26,23.94,23.94,23.94,23.94,940000,23.94 +1952-05-23,23.89,23.89,23.89,23.89,1150000,23.89 +1952-05-22,23.91,23.91,23.91,23.91,1360000,23.91 +1952-05-21,23.78,23.78,23.78,23.78,1210000,23.78 +1952-05-20,23.74,23.74,23.74,23.74,1150000,23.74 +1952-05-19,23.61,23.61,23.61,23.61,780000,23.61 +1952-05-16,23.56,23.56,23.56,23.56,910000,23.56 +1952-05-15,23.60,23.60,23.60,23.60,1050000,23.60 +1952-05-14,23.68,23.68,23.68,23.68,950000,23.68 +1952-05-13,23.78,23.78,23.78,23.78,890000,23.78 +1952-05-12,23.75,23.75,23.75,23.75,800000,23.75 +1952-05-09,23.84,23.84,23.84,23.84,960000,23.84 +1952-05-08,23.86,23.86,23.86,23.86,1230000,23.86 +1952-05-07,23.81,23.81,23.81,23.81,1120000,23.81 +1952-05-06,23.67,23.67,23.67,23.67,1120000,23.67 +1952-05-05,23.66,23.66,23.66,23.66,860000,23.66 +1952-05-02,23.56,23.56,23.56,23.56,1300000,23.56 +1952-05-01,23.17,23.17,23.17,23.17,1400000,23.17 +1952-04-30,23.32,23.32,23.32,23.32,1000000,23.32 +1952-04-29,23.49,23.49,23.49,23.49,1170000,23.49 +1952-04-28,23.55,23.55,23.55,23.55,980000,23.55 +1952-04-25,23.54,23.54,23.54,23.54,1240000,23.54 +1952-04-24,23.43,23.43,23.43,23.43,1580000,23.43 +1952-04-23,23.48,23.48,23.48,23.48,1090000,23.48 +1952-04-22,23.58,23.58,23.58,23.58,1240000,23.58 +1952-04-21,23.69,23.69,23.69,23.69,1110000,23.69 +1952-04-18,23.50,23.50,23.50,23.50,1240000,23.50 +1952-04-17,23.41,23.41,23.41,23.41,1620000,23.41 +1952-04-16,23.58,23.58,23.58,23.58,1400000,23.58 +1952-04-15,23.65,23.65,23.65,23.65,1720000,23.65 +1952-04-14,23.95,23.95,23.95,23.95,1790000,23.95 +1952-04-10,24.11,24.11,24.11,24.11,1130000,24.11 +1952-04-09,23.94,23.94,23.94,23.94,980000,23.94 +1952-04-08,23.91,23.91,23.91,23.91,1090000,23.91 +1952-04-07,23.80,23.80,23.80,23.80,1230000,23.80 +1952-04-04,24.02,24.02,24.02,24.02,1190000,24.02 +1952-04-03,24.12,24.12,24.12,24.12,1280000,24.12 +1952-04-02,24.12,24.12,24.12,24.12,1260000,24.12 +1952-04-01,24.18,24.18,24.18,24.18,1720000,24.18 +1952-03-31,24.37,24.37,24.37,24.37,1680000,24.37 +1952-03-28,24.18,24.18,24.18,24.18,1560000,24.18 +1952-03-27,23.99,23.99,23.99,23.99,1370000,23.99 +1952-03-26,23.78,23.78,23.78,23.78,1030000,23.78 +1952-03-25,23.79,23.79,23.79,23.79,1060000,23.79 +1952-03-24,23.93,23.93,23.93,23.93,1040000,23.93 +1952-03-21,23.93,23.93,23.93,23.93,1290000,23.93 +1952-03-20,23.89,23.89,23.89,23.89,1240000,23.89 +1952-03-19,23.82,23.82,23.82,23.82,1090000,23.82 +1952-03-18,23.87,23.87,23.87,23.87,1170000,23.87 +1952-03-17,23.92,23.92,23.92,23.92,1150000,23.92 +1952-03-14,23.75,23.75,23.75,23.75,1350000,23.75 +1952-03-13,23.75,23.75,23.75,23.75,1270000,23.75 +1952-03-12,23.73,23.73,23.73,23.73,1310000,23.73 +1952-03-11,23.62,23.62,23.62,23.62,1210000,23.62 +1952-03-10,23.60,23.60,23.60,23.60,1170000,23.60 +1952-03-07,23.72,23.72,23.72,23.72,1410000,23.72 +1952-03-06,23.69,23.69,23.69,23.69,1210000,23.69 +1952-03-05,23.71,23.71,23.71,23.71,1380000,23.71 +1952-03-04,23.68,23.68,23.68,23.68,1570000,23.68 +1952-03-03,23.29,23.29,23.29,23.29,1020000,23.29 +1952-02-29,23.26,23.26,23.26,23.26,1000000,23.26 +1952-02-28,23.29,23.29,23.29,23.29,1150000,23.29 +1952-02-27,23.18,23.18,23.18,23.18,1260000,23.18 +1952-02-26,23.15,23.15,23.15,23.15,1080000,23.15 +1952-02-25,23.23,23.23,23.23,23.23,1200000,23.23 +1952-02-21,23.16,23.16,23.16,23.16,1360000,23.16 +1952-02-20,23.09,23.09,23.09,23.09,1970000,23.09 +1952-02-19,23.36,23.36,23.36,23.36,1630000,23.36 +1952-02-18,23.74,23.74,23.74,23.74,1140000,23.74 +1952-02-15,23.86,23.86,23.86,23.86,1200000,23.86 +1952-02-14,23.87,23.87,23.87,23.87,1340000,23.87 +1952-02-13,23.92,23.92,23.92,23.92,1300000,23.92 +1952-02-11,24.11,24.11,24.11,24.11,1140000,24.11 +1952-02-08,24.24,24.24,24.24,24.24,1350000,24.24 +1952-02-07,24.11,24.11,24.11,24.11,1170000,24.11 +1952-02-06,24.18,24.18,24.18,24.18,1310000,24.18 +1952-02-05,24.11,24.11,24.11,24.11,1590000,24.11 +1952-02-04,24.12,24.12,24.12,24.12,1640000,24.12 +1952-02-01,24.30,24.30,24.30,24.30,1350000,24.30 +1952-01-31,24.14,24.14,24.14,24.14,1810000,24.14 +1952-01-30,24.23,24.23,24.23,24.23,1880000,24.23 +1952-01-29,24.57,24.57,24.57,24.57,1730000,24.57 +1952-01-28,24.61,24.61,24.61,24.61,1590000,24.61 +1952-01-25,24.55,24.55,24.55,24.55,1650000,24.55 +1952-01-24,24.56,24.56,24.56,24.56,1570000,24.56 +1952-01-23,24.54,24.54,24.54,24.54,1680000,24.54 +1952-01-22,24.66,24.66,24.66,24.66,1920000,24.66 +1952-01-21,24.46,24.46,24.46,24.46,1730000,24.46 +1952-01-18,24.25,24.25,24.25,24.25,1740000,24.25 +1952-01-17,24.20,24.20,24.20,24.20,1590000,24.20 +1952-01-16,24.09,24.09,24.09,24.09,1430000,24.09 +1952-01-15,24.06,24.06,24.06,24.06,1340000,24.06 +1952-01-14,24.16,24.16,24.16,24.16,1510000,24.16 +1952-01-11,23.98,23.98,23.98,23.98,1760000,23.98 +1952-01-10,23.86,23.86,23.86,23.86,1520000,23.86 +1952-01-09,23.74,23.74,23.74,23.74,1370000,23.74 +1952-01-08,23.82,23.82,23.82,23.82,1390000,23.82 +1952-01-07,23.91,23.91,23.91,23.91,1540000,23.91 +1952-01-04,23.92,23.92,23.92,23.92,1480000,23.92 +1952-01-03,23.88,23.88,23.88,23.88,1220000,23.88 +1952-01-02,23.80,23.80,23.80,23.80,1070000,23.80 +1951-12-31,23.77,23.77,23.77,23.77,1440000,23.77 +1951-12-28,23.69,23.69,23.69,23.69,1470000,23.69 +1951-12-27,23.65,23.65,23.65,23.65,1460000,23.65 +1951-12-26,23.44,23.44,23.44,23.44,1520000,23.44 +1951-12-24,23.54,23.54,23.54,23.54,680000,23.54 +1951-12-21,23.51,23.51,23.51,23.51,1250000,23.51 +1951-12-20,23.57,23.57,23.57,23.57,1340000,23.57 +1951-12-19,23.57,23.57,23.57,23.57,1510000,23.57 +1951-12-18,23.49,23.49,23.49,23.49,1290000,23.49 +1951-12-17,23.41,23.41,23.41,23.41,1220000,23.41 +1951-12-14,23.37,23.37,23.37,23.37,1360000,23.37 +1951-12-13,23.39,23.39,23.39,23.39,1380000,23.39 +1951-12-12,23.37,23.37,23.37,23.37,1280000,23.37 +1951-12-11,23.30,23.30,23.30,23.30,1360000,23.30 +1951-12-10,23.42,23.42,23.42,23.42,1340000,23.42 +1951-12-07,23.38,23.38,23.38,23.38,1990000,23.38 +1951-12-06,23.34,23.34,23.34,23.34,1840000,23.34 +1951-12-05,23.07,23.07,23.07,23.07,1330000,23.07 +1951-12-04,23.14,23.14,23.14,23.14,1280000,23.14 +1951-12-03,23.01,23.01,23.01,23.01,1220000,23.01 +1951-11-30,22.88,22.88,22.88,22.88,1530000,22.88 +1951-11-29,22.67,22.67,22.67,22.67,1070000,22.67 +1951-11-28,22.61,22.61,22.61,22.61,1150000,22.61 +1951-11-27,22.66,22.66,22.66,22.66,1310000,22.66 +1951-11-26,22.43,22.43,22.43,22.43,1180000,22.43 +1951-11-23,22.40,22.40,22.40,22.40,1210000,22.40 +1951-11-21,22.64,22.64,22.64,22.64,1090000,22.64 +1951-11-20,22.68,22.68,22.68,22.68,1130000,22.68 +1951-11-19,22.73,22.73,22.73,22.73,1030000,22.73 +1951-11-16,22.82,22.82,22.82,22.82,1140000,22.82 +1951-11-15,22.84,22.84,22.84,22.84,1200000,22.84 +1951-11-14,22.85,22.85,22.85,22.85,1220000,22.85 +1951-11-13,22.79,22.79,22.79,22.79,1160000,22.79 +1951-11-09,22.75,22.75,22.75,22.75,1470000,22.75 +1951-11-08,22.47,22.47,22.47,22.47,1410000,22.47 +1951-11-07,22.49,22.49,22.49,22.49,1490000,22.49 +1951-11-05,22.82,22.82,22.82,22.82,1130000,22.82 +1951-11-02,22.93,22.93,22.93,22.93,1230000,22.93 +1951-11-01,23.10,23.10,23.10,23.10,1430000,23.10 +1951-10-31,22.94,22.94,22.94,22.94,1490000,22.94 +1951-10-30,22.66,22.66,22.66,22.66,1530000,22.66 +1951-10-29,22.69,22.69,22.69,22.69,1780000,22.69 +1951-10-26,22.81,22.81,22.81,22.81,1710000,22.81 +1951-10-25,22.96,22.96,22.96,22.96,1360000,22.96 +1951-10-24,23.03,23.03,23.03,23.03,1670000,23.03 +1951-10-23,22.84,22.84,22.84,22.84,2110000,22.84 +1951-10-22,22.75,22.75,22.75,22.75,2690000,22.75 +1951-10-19,23.32,23.32,23.32,23.32,1990000,23.32 +1951-10-18,23.67,23.67,23.67,23.67,1450000,23.67 +1951-10-17,23.69,23.69,23.69,23.69,1460000,23.69 +1951-10-16,23.77,23.77,23.77,23.77,1730000,23.77 +1951-10-15,23.85,23.85,23.85,23.85,1720000,23.85 +1951-10-11,23.70,23.70,23.70,23.70,1760000,23.70 +1951-10-10,23.61,23.61,23.61,23.61,1320000,23.61 +1951-10-09,23.65,23.65,23.65,23.65,1750000,23.65 +1951-10-08,23.75,23.75,23.75,23.75,1860000,23.75 +1951-10-05,23.78,23.78,23.78,23.78,2080000,23.78 +1951-10-04,23.72,23.72,23.72,23.72,1810000,23.72 +1951-10-03,23.79,23.79,23.79,23.79,2780000,23.79 +1951-10-02,23.64,23.64,23.64,23.64,1870000,23.64 +1951-10-01,23.47,23.47,23.47,23.47,1330000,23.47 +1951-09-28,23.26,23.26,23.26,23.26,1390000,23.26 +1951-09-27,23.27,23.27,23.27,23.27,1540000,23.27 +1951-09-26,23.40,23.40,23.40,23.40,1520000,23.40 +1951-09-25,23.38,23.38,23.38,23.38,1740000,23.38 +1951-09-24,23.30,23.30,23.30,23.30,1630000,23.30 +1951-09-21,23.40,23.40,23.40,23.40,2180000,23.40 +1951-09-20,23.57,23.57,23.57,23.57,2100000,23.57 +1951-09-19,23.59,23.59,23.59,23.59,2070000,23.59 +1951-09-18,23.59,23.59,23.59,23.59,2030000,23.59 +1951-09-17,23.62,23.62,23.62,23.62,1800000,23.62 +1951-09-14,23.69,23.69,23.69,23.69,2170000,23.69 +1951-09-13,23.71,23.71,23.71,23.71,2350000,23.71 +1951-09-12,23.60,23.60,23.60,23.60,2180000,23.60 +1951-09-11,23.50,23.50,23.50,23.50,2040000,23.50 +1951-09-10,23.62,23.62,23.62,23.62,2190000,23.62 +1951-09-07,23.53,23.53,23.53,23.53,1970000,23.53 +1951-09-06,23.47,23.47,23.47,23.47,2150000,23.47 +1951-09-05,23.42,23.42,23.42,23.42,1850000,23.42 +1951-09-04,23.28,23.28,23.28,23.28,1520000,23.28 +1951-08-31,23.28,23.28,23.28,23.28,1530000,23.28 +1951-08-30,23.24,23.24,23.24,23.24,1950000,23.24 +1951-08-29,23.08,23.08,23.08,23.08,1520000,23.08 +1951-08-28,22.90,22.90,22.90,22.90,1280000,22.90 +1951-08-27,22.85,22.85,22.85,22.85,1080000,22.85 +1951-08-24,22.88,22.88,22.88,22.88,1210000,22.88 +1951-08-23,22.90,22.90,22.90,22.90,1230000,22.90 +1951-08-22,22.75,22.75,22.75,22.75,1130000,22.75 +1951-08-21,22.83,22.83,22.83,22.83,1400000,22.83 +1951-08-20,22.93,22.93,22.93,22.93,1130000,22.93 +1951-08-17,22.94,22.94,22.94,22.94,1620000,22.94 +1951-08-16,22.87,22.87,22.87,22.87,1750000,22.87 +1951-08-15,22.79,22.79,22.79,22.79,1340000,22.79 +1951-08-14,22.70,22.70,22.70,22.70,1180000,22.70 +1951-08-13,22.80,22.80,22.80,22.80,1320000,22.80 +1951-08-10,22.79,22.79,22.79,22.79,1260000,22.79 +1951-08-09,22.84,22.84,22.84,22.84,1500000,22.84 +1951-08-08,22.93,22.93,22.93,22.93,1410000,22.93 +1951-08-07,23.03,23.03,23.03,23.03,1810000,23.03 +1951-08-06,23.01,23.01,23.01,23.01,1600000,23.01 +1951-08-03,22.85,22.85,22.85,22.85,1570000,22.85 +1951-08-02,22.82,22.82,22.82,22.82,2130000,22.82 +1951-08-01,22.51,22.51,22.51,22.51,1680000,22.51 +1951-07-31,22.40,22.40,22.40,22.40,1550000,22.40 +1951-07-30,22.63,22.63,22.63,22.63,1600000,22.63 +1951-07-27,22.53,22.53,22.53,22.53,1450000,22.53 +1951-07-26,22.47,22.47,22.47,22.47,1480000,22.47 +1951-07-25,22.32,22.32,22.32,22.32,1870000,22.32 +1951-07-24,22.44,22.44,22.44,22.44,1740000,22.44 +1951-07-23,22.10,22.10,22.10,22.10,1320000,22.10 +1951-07-20,21.88,21.88,21.88,21.88,1390000,21.88 +1951-07-19,21.84,21.84,21.84,21.84,1120000,21.84 +1951-07-18,21.88,21.88,21.88,21.88,1370000,21.88 +1951-07-17,21.92,21.92,21.92,21.92,1280000,21.92 +1951-07-16,21.73,21.73,21.73,21.73,1200000,21.73 +1951-07-13,21.98,21.98,21.98,21.98,1320000,21.98 +1951-07-12,21.80,21.80,21.80,21.80,1050000,21.80 +1951-07-11,21.68,21.68,21.68,21.68,970000,21.68 +1951-07-10,21.63,21.63,21.63,21.63,990000,21.63 +1951-07-09,21.73,21.73,21.73,21.73,1110000,21.73 +1951-07-06,21.64,21.64,21.64,21.64,1170000,21.64 +1951-07-05,21.64,21.64,21.64,21.64,1410000,21.64 +1951-07-03,21.23,21.23,21.23,21.23,1250000,21.23 +1951-07-02,21.10,21.10,21.10,21.10,1350000,21.10 +1951-06-29,20.96,20.96,20.96,20.96,1730000,20.96 +1951-06-28,21.10,21.10,21.10,21.10,1940000,21.10 +1951-06-27,21.37,21.37,21.37,21.37,1360000,21.37 +1951-06-26,21.30,21.30,21.30,21.30,1260000,21.30 +1951-06-25,21.29,21.29,21.29,21.29,2440000,21.29 +1951-06-22,21.55,21.55,21.55,21.55,1340000,21.55 +1951-06-21,21.78,21.78,21.78,21.78,1100000,21.78 +1951-06-20,21.91,21.91,21.91,21.91,1120000,21.91 +1951-06-19,22.02,22.02,22.02,22.02,1100000,22.02 +1951-06-18,22.05,22.05,22.05,22.05,1050000,22.05 +1951-06-15,22.04,22.04,22.04,22.04,1370000,22.04 +1951-06-14,21.84,21.84,21.84,21.84,1300000,21.84 +1951-06-13,21.55,21.55,21.55,21.55,1060000,21.55 +1951-06-12,21.52,21.52,21.52,21.52,1200000,21.52 +1951-06-11,21.61,21.61,21.61,21.61,1220000,21.61 +1951-06-08,21.49,21.49,21.49,21.49,1000000,21.49 +1951-06-07,21.56,21.56,21.56,21.56,1340000,21.56 +1951-06-06,21.48,21.48,21.48,21.48,1200000,21.48 +1951-06-05,21.33,21.33,21.33,21.33,1180000,21.33 +1951-06-04,21.24,21.24,21.24,21.24,1100000,21.24 +1951-06-01,21.48,21.48,21.48,21.48,9810000,21.48 +1951-05-31,21.52,21.52,21.52,21.52,1220000,21.52 +1951-05-29,21.35,21.35,21.35,21.35,1190000,21.35 +1951-05-28,21.21,21.21,21.21,21.21,1240000,21.21 +1951-05-25,21.03,21.03,21.03,21.03,1210000,21.03 +1951-05-24,21.05,21.05,21.05,21.05,2580000,21.05 +1951-05-23,21.16,21.16,21.16,21.16,1540000,21.16 +1951-05-22,21.36,21.36,21.36,21.36,1440000,21.36 +1951-05-21,21.46,21.46,21.46,21.46,1580000,21.46 +1951-05-18,21.51,21.51,21.51,21.51,1660000,21.51 +1951-05-17,21.91,21.91,21.91,21.91,1370000,21.91 +1951-05-16,21.69,21.69,21.69,21.69,1660000,21.69 +1951-05-15,21.76,21.76,21.76,21.76,2020000,21.76 +1951-05-14,22.18,22.18,22.18,22.18,1250000,22.18 +1951-05-11,22.33,22.33,22.33,22.33,1640000,22.33 +1951-05-10,22.51,22.51,22.51,22.51,1660000,22.51 +1951-05-09,22.64,22.64,22.64,22.64,1960000,22.64 +1951-05-08,22.61,22.61,22.61,22.61,1600000,22.61 +1951-05-07,22.63,22.63,22.63,22.63,1580000,22.63 +1951-05-04,22.77,22.77,22.77,22.77,2050000,22.77 +1951-05-03,22.81,22.81,22.81,22.81,2060000,22.81 +1951-05-02,22.62,22.62,22.62,22.62,1900000,22.62 +1951-05-01,22.53,22.53,22.53,22.53,1760000,22.53 +1951-04-30,22.43,22.43,22.43,22.43,1790000,22.43 +1951-04-27,22.39,22.39,22.39,22.39,2120000,22.39 +1951-04-26,22.16,22.16,22.16,22.16,1800000,22.16 +1951-04-25,21.97,21.97,21.97,21.97,1520000,21.97 +1951-04-24,21.96,21.96,21.96,21.96,1420000,21.96 +1951-04-23,22.05,22.05,22.05,22.05,1160000,22.05 +1951-04-20,22.04,22.04,22.04,22.04,940000,22.04 +1951-04-19,22.04,22.04,22.04,22.04,1520000,22.04 +1951-04-18,22.13,22.13,22.13,22.13,1780000,22.13 +1951-04-17,22.09,22.09,22.09,22.09,1470000,22.09 +1951-04-16,22.04,22.04,22.04,22.04,1730000,22.04 +1951-04-13,22.09,22.09,22.09,22.09,2120000,22.09 +1951-04-12,21.83,21.83,21.83,21.83,1530000,21.83 +1951-04-11,21.64,21.64,21.64,21.64,1420000,21.64 +1951-04-10,21.65,21.65,21.65,21.65,1280000,21.65 +1951-04-09,21.68,21.68,21.68,21.68,1110000,21.68 +1951-04-06,21.72,21.72,21.72,21.72,1450000,21.72 +1951-04-05,21.69,21.69,21.69,21.69,1790000,21.69 +1951-04-04,21.40,21.40,21.40,21.40,1300000,21.40 +1951-04-03,21.26,21.26,21.26,21.26,1220000,21.26 +1951-04-02,21.32,21.32,21.32,21.32,1280000,21.32 +1951-03-30,21.48,21.48,21.48,21.48,1150000,21.48 +1951-03-29,21.33,21.33,21.33,21.33,1300000,21.33 +1951-03-28,21.26,21.26,21.26,21.26,1770000,21.26 +1951-03-27,21.51,21.51,21.51,21.51,1250000,21.51 +1951-03-26,21.53,21.53,21.53,21.53,1230000,21.53 +1951-03-22,21.73,21.73,21.73,21.73,1290000,21.73 +1951-03-21,21.64,21.64,21.64,21.64,1310000,21.64 +1951-03-20,21.52,21.52,21.52,21.52,1020000,21.52 +1951-03-19,21.56,21.56,21.56,21.56,1120000,21.56 +1951-03-16,21.64,21.64,21.64,21.64,1660000,21.64 +1951-03-15,21.29,21.29,21.29,21.29,2070000,21.29 +1951-03-14,21.25,21.25,21.25,21.25,2110000,21.25 +1951-03-13,21.41,21.41,21.41,21.41,2330000,21.41 +1951-03-12,21.70,21.70,21.70,21.70,1640000,21.70 +1951-03-09,21.95,21.95,21.95,21.95,1610000,21.95 +1951-03-08,21.95,21.95,21.95,21.95,1440000,21.95 +1951-03-07,21.86,21.86,21.86,21.86,1770000,21.86 +1951-03-06,21.79,21.79,21.79,21.79,1490000,21.79 +1951-03-05,21.79,21.79,21.79,21.79,1690000,21.79 +1951-03-02,21.93,21.93,21.93,21.93,1570000,21.93 +1951-03-01,21.85,21.85,21.85,21.85,1610000,21.85 +1951-02-28,21.80,21.80,21.80,21.80,1640000,21.80 +1951-02-27,21.76,21.76,21.76,21.76,1680000,21.76 +1951-02-26,21.93,21.93,21.93,21.93,1650000,21.93 +1951-02-23,21.92,21.92,21.92,21.92,1540000,21.92 +1951-02-21,21.86,21.86,21.86,21.86,1670000,21.86 +1951-02-20,21.79,21.79,21.79,21.79,2010000,21.79 +1951-02-19,21.83,21.83,21.83,21.83,1910000,21.83 +1951-02-16,22.13,22.13,22.13,22.13,1860000,22.13 +1951-02-15,22.00,22.00,22.00,22.00,1700000,22.00 +1951-02-14,22.12,22.12,22.12,22.12,2050000,22.12 +1951-02-13,22.18,22.18,22.18,22.18,2400000,22.18 +1951-02-09,22.17,22.17,22.17,22.17,2550000,22.17 +1951-02-08,22.09,22.09,22.09,22.09,2120000,22.09 +1951-02-07,21.99,21.99,21.99,21.99,2020000,21.99 +1951-02-06,22.12,22.12,22.12,22.12,2370000,22.12 +1951-02-05,22.20,22.20,22.20,22.20,2680000,22.20 +1951-02-02,21.96,21.96,21.96,21.96,3030000,21.96 +1951-02-01,21.77,21.77,21.77,21.77,2380000,21.77 +1951-01-31,21.66,21.66,21.66,21.66,2340000,21.66 +1951-01-30,21.74,21.74,21.74,21.74,2480000,21.74 +1951-01-29,21.67,21.67,21.67,21.67,2630000,21.67 +1951-01-26,21.26,21.26,21.26,21.26,2230000,21.26 +1951-01-25,21.03,21.03,21.03,21.03,2520000,21.03 +1951-01-24,21.16,21.16,21.16,21.16,1990000,21.16 +1951-01-23,21.26,21.26,21.26,21.26,2080000,21.26 +1951-01-22,21.18,21.18,21.18,21.18,2570000,21.18 +1951-01-19,21.36,21.36,21.36,21.36,3170000,21.36 +1951-01-18,21.40,21.40,21.40,21.40,3490000,21.40 +1951-01-17,21.55,21.55,21.55,21.55,3880000,21.55 +1951-01-16,21.46,21.46,21.46,21.46,3740000,21.46 +1951-01-15,21.30,21.30,21.30,21.30,2830000,21.30 +1951-01-12,21.11,21.11,21.11,21.11,2950000,21.11 +1951-01-11,21.19,21.19,21.19,21.19,3490000,21.19 +1951-01-10,20.85,20.85,20.85,20.85,3270000,20.85 +1951-01-09,21.12,21.12,21.12,21.12,3800000,21.12 +1951-01-08,21.00,21.00,21.00,21.00,2780000,21.00 +1951-01-05,20.87,20.87,20.87,20.87,3390000,20.87 +1951-01-04,20.87,20.87,20.87,20.87,3390000,20.87 +1951-01-03,20.69,20.69,20.69,20.69,3370000,20.69 +1951-01-02,20.77,20.77,20.77,20.77,3030000,20.77 +1950-12-29,20.43,20.43,20.43,20.43,3440000,20.43 +1950-12-28,20.38,20.38,20.38,20.38,3560000,20.38 +1950-12-27,20.30,20.30,20.30,20.30,2940000,20.30 +1950-12-26,19.92,19.92,19.92,19.92,2660000,19.92 +1950-12-22,20.07,20.07,20.07,20.07,2720000,20.07 +1950-12-21,19.98,19.98,19.98,19.98,3990000,19.98 +1950-12-20,19.97,19.97,19.97,19.97,3510000,19.97 +1950-12-19,19.96,19.96,19.96,19.96,3650000,19.96 +1950-12-18,19.85,19.85,19.85,19.85,4500000,19.85 +1950-12-15,19.33,19.33,19.33,19.33,2420000,19.33 +1950-12-14,19.43,19.43,19.43,19.43,2660000,19.43 +1950-12-13,19.67,19.67,19.67,19.67,2030000,19.67 +1950-12-12,19.68,19.68,19.68,19.68,2140000,19.68 +1950-12-11,19.72,19.72,19.72,19.72,2600000,19.72 +1950-12-08,19.40,19.40,19.40,19.40,2310000,19.40 +1950-12-07,19.40,19.40,19.40,19.40,1810000,19.40 +1950-12-06,19.45,19.45,19.45,19.45,2010000,19.45 +1950-12-05,19.31,19.31,19.31,19.31,1940000,19.31 +1950-12-04,19.00,19.00,19.00,19.00,2510000,19.00 +1950-12-01,19.66,19.66,19.66,19.66,1870000,19.66 +1950-11-30,19.51,19.51,19.51,19.51,2080000,19.51 +1950-11-29,19.37,19.37,19.37,19.37,2770000,19.37 +1950-11-28,19.56,19.56,19.56,19.56,2970000,19.56 +1950-11-27,20.18,20.18,20.18,20.18,1740000,20.18 +1950-11-24,20.32,20.32,20.32,20.32,2620000,20.32 +1950-11-22,20.16,20.16,20.16,20.16,2730000,20.16 +1950-11-21,19.88,19.88,19.88,19.88,2010000,19.88 +1950-11-20,19.93,19.93,19.93,19.93,2250000,19.93 +1950-11-17,19.86,19.86,19.86,19.86,2130000,19.86 +1950-11-16,19.72,19.72,19.72,19.72,1760000,19.72 +1950-11-15,19.82,19.82,19.82,19.82,1620000,19.82 +1950-11-14,19.86,19.86,19.86,19.86,1780000,19.86 +1950-11-13,20.01,20.01,20.01,20.01,1630000,20.01 +1950-11-10,19.94,19.94,19.94,19.94,1640000,19.94 +1950-11-09,19.79,19.79,19.79,19.79,1760000,19.79 +1950-11-08,19.56,19.56,19.56,19.56,1850000,19.56 +1950-11-06,19.36,19.36,19.36,19.36,2580000,19.36 +1950-11-03,19.85,19.85,19.85,19.85,1560000,19.85 +1950-11-02,19.73,19.73,19.73,19.73,1580000,19.73 +1950-11-01,19.56,19.56,19.56,19.56,1780000,19.56 +1950-10-31,19.53,19.53,19.53,19.53,2010000,19.53 +1950-10-30,19.61,19.61,19.61,19.61,1790000,19.61 +1950-10-27,19.77,19.77,19.77,19.77,1800000,19.77 +1950-10-26,19.61,19.61,19.61,19.61,3000000,19.61 +1950-10-25,20.05,20.05,20.05,20.05,1930000,20.05 +1950-10-24,20.08,20.08,20.08,20.08,1790000,20.08 +1950-10-23,19.96,19.96,19.96,19.96,1850000,19.96 +1950-10-20,19.96,19.96,19.96,19.96,1840000,19.96 +1950-10-19,20.02,20.02,20.02,20.02,2250000,20.02 +1950-10-18,20.01,20.01,20.01,20.01,2410000,20.01 +1950-10-17,19.89,19.89,19.89,19.89,2010000,19.89 +1950-10-16,19.71,19.71,19.71,19.71,1630000,19.71 +1950-10-13,19.85,19.85,19.85,19.85,2030000,19.85 +1950-10-11,19.86,19.86,19.86,19.86,2200000,19.86 +1950-10-10,19.78,19.78,19.78,19.78,1870000,19.78 +1950-10-09,20.00,20.00,20.00,20.00,2330000,20.00 +1950-10-06,20.12,20.12,20.12,20.12,2360000,20.12 +1950-10-05,19.89,19.89,19.89,19.89,2490000,19.89 +1950-10-04,20.00,20.00,20.00,20.00,2920000,20.00 +1950-10-03,19.66,19.66,19.66,19.66,2480000,19.66 +1950-10-02,19.69,19.69,19.69,19.69,2200000,19.69 +1950-09-29,19.45,19.45,19.45,19.45,1800000,19.45 +1950-09-28,19.42,19.42,19.42,19.42,2200000,19.42 +1950-09-27,19.41,19.41,19.41,19.41,2360000,19.41 +1950-09-26,19.14,19.14,19.14,19.14,2280000,19.14 +1950-09-25,19.42,19.42,19.42,19.42,2020000,19.42 +1950-09-22,19.44,19.44,19.44,19.44,2510000,19.44 +1950-09-21,19.37,19.37,19.37,19.37,1650000,19.37 +1950-09-20,19.21,19.21,19.21,19.21,2100000,19.21 +1950-09-19,19.31,19.31,19.31,19.31,1590000,19.31 +1950-09-18,19.37,19.37,19.37,19.37,2040000,19.37 +1950-09-15,19.29,19.29,19.29,19.29,2410000,19.29 +1950-09-14,19.18,19.18,19.18,19.18,2350000,19.18 +1950-09-13,19.09,19.09,19.09,19.09,2600000,19.09 +1950-09-12,18.87,18.87,18.87,18.87,1680000,18.87 +1950-09-11,18.61,18.61,18.61,18.61,1860000,18.61 +1950-09-08,18.75,18.75,18.75,18.75,1960000,18.75 +1950-09-07,18.59,18.59,18.59,18.59,1340000,18.59 +1950-09-06,18.54,18.54,18.54,18.54,1300000,18.54 +1950-09-05,18.68,18.68,18.68,18.68,1250000,18.68 +1950-09-01,18.55,18.55,18.55,18.55,1290000,18.55 +1950-08-31,18.42,18.42,18.42,18.42,1140000,18.42 +1950-08-30,18.43,18.43,18.43,18.43,1490000,18.43 +1950-08-29,18.54,18.54,18.54,18.54,1890000,18.54 +1950-08-28,18.53,18.53,18.53,18.53,1300000,18.53 +1950-08-25,18.54,18.54,18.54,18.54,1610000,18.54 +1950-08-24,18.79,18.79,18.79,18.79,1620000,18.79 +1950-08-23,18.82,18.82,18.82,18.82,1580000,18.82 +1950-08-22,18.68,18.68,18.68,18.68,1550000,18.68 +1950-08-21,18.70,18.70,18.70,18.70,1840000,18.70 +1950-08-18,18.68,18.68,18.68,18.68,1780000,18.68 +1950-08-17,18.54,18.54,18.54,18.54,2170000,18.54 +1950-08-16,18.34,18.34,18.34,18.34,1770000,18.34 +1950-08-15,18.32,18.32,18.32,18.32,1330000,18.32 +1950-08-14,18.29,18.29,18.29,18.29,1280000,18.29 +1950-08-11,18.28,18.28,18.28,18.28,1680000,18.28 +1950-08-10,18.48,18.48,18.48,18.48,1870000,18.48 +1950-08-09,18.61,18.61,18.61,18.61,1760000,18.61 +1950-08-08,18.46,18.46,18.46,18.46,2180000,18.46 +1950-08-07,18.41,18.41,18.41,18.41,1850000,18.41 +1950-08-04,18.14,18.14,18.14,18.14,1600000,18.14 +1950-08-03,17.99,17.99,17.99,17.99,1660000,17.99 +1950-08-02,17.95,17.95,17.95,17.95,1980000,17.95 +1950-08-01,18.02,18.02,18.02,18.02,1970000,18.02 +1950-07-31,17.84,17.84,17.84,17.84,1590000,17.84 +1950-07-28,17.69,17.69,17.69,17.69,2050000,17.69 +1950-07-27,17.50,17.50,17.50,17.50,2300000,17.50 +1950-07-26,17.27,17.27,17.27,17.27,2460000,17.27 +1950-07-25,17.23,17.23,17.23,17.23,2770000,17.23 +1950-07-24,17.48,17.48,17.48,17.48,2300000,17.48 +1950-07-21,17.59,17.59,17.59,17.59,2810000,17.59 +1950-07-20,17.61,17.61,17.61,17.61,3160000,17.61 +1950-07-19,17.36,17.36,17.36,17.36,2430000,17.36 +1950-07-18,17.06,17.06,17.06,17.06,1820000,17.06 +1950-07-17,16.68,16.68,16.68,16.68,1520000,16.68 +1950-07-14,16.87,16.87,16.87,16.87,1900000,16.87 +1950-07-13,16.69,16.69,16.69,16.69,2660000,16.69 +1950-07-12,16.87,16.87,16.87,16.87,3200000,16.87 +1950-07-11,17.32,17.32,17.32,17.32,3250000,17.32 +1950-07-10,17.59,17.59,17.59,17.59,1960000,17.59 +1950-07-07,17.67,17.67,17.67,17.67,1870000,17.67 +1950-07-06,17.91,17.91,17.91,17.91,1570000,17.91 +1950-07-05,17.81,17.81,17.81,17.81,1400000,17.81 +1950-07-03,17.64,17.64,17.64,17.64,1550000,17.64 +1950-06-30,17.69,17.69,17.69,17.69,2660000,17.69 +1950-06-29,17.44,17.44,17.44,17.44,3040000,17.44 +1950-06-28,18.11,18.11,18.11,18.11,2600000,18.11 +1950-06-27,17.91,17.91,17.91,17.91,4860000,17.91 +1950-06-26,18.11,18.11,18.11,18.11,3950000,18.11 +1950-06-23,19.14,19.14,19.14,19.14,1700000,19.14 +1950-06-22,19.16,19.16,19.16,19.16,1830000,19.16 +1950-06-21,19.00,19.00,19.00,19.00,1750000,19.00 +1950-06-20,18.83,18.83,18.83,18.83,1470000,18.83 +1950-06-19,18.92,18.92,18.92,18.92,1290000,18.92 +1950-06-16,18.97,18.97,18.97,18.97,1180000,18.97 +1950-06-15,18.93,18.93,18.93,18.93,1530000,18.93 +1950-06-14,18.98,18.98,18.98,18.98,1650000,18.98 +1950-06-13,19.25,19.25,19.25,19.25,1790000,19.25 +1950-06-12,19.40,19.40,19.40,19.40,1790000,19.40 +1950-06-09,19.26,19.26,19.26,19.26,2130000,19.26 +1950-06-08,19.14,19.14,19.14,19.14,1780000,19.14 +1950-06-07,18.93,18.93,18.93,18.93,1750000,18.93 +1950-06-06,18.88,18.88,18.88,18.88,2250000,18.88 +1950-06-05,18.60,18.60,18.60,18.60,1630000,18.60 +1950-06-02,18.79,18.79,18.79,18.79,1450000,18.79 +1950-06-01,18.77,18.77,18.77,18.77,1580000,18.77 +1950-05-31,18.78,18.78,18.78,18.78,1530000,18.78 +1950-05-29,18.72,18.72,18.72,18.72,1110000,18.72 +1950-05-26,18.67,18.67,18.67,18.67,1330000,18.67 +1950-05-25,18.69,18.69,18.69,18.69,1480000,18.69 +1950-05-24,18.69,18.69,18.69,18.69,1850000,18.69 +1950-05-23,18.71,18.71,18.71,18.71,1460000,18.71 +1950-05-22,18.60,18.60,18.60,18.60,1620000,18.60 +1950-05-19,18.68,18.68,18.68,18.68,2110000,18.68 +1950-05-18,18.56,18.56,18.56,18.56,5240000,18.56 +1950-05-17,18.52,18.52,18.52,18.52,2020000,18.52 +1950-05-16,18.44,18.44,18.44,18.44,1730000,18.44 +1950-05-15,18.26,18.26,18.26,18.26,1220000,18.26 +1950-05-12,18.18,18.18,18.18,18.18,1790000,18.18 +1950-05-11,18.29,18.29,18.29,18.29,1750000,18.29 +1950-05-10,18.29,18.29,18.29,18.29,1880000,18.29 +1950-05-09,18.27,18.27,18.27,18.27,1720000,18.27 +1950-05-08,18.27,18.27,18.27,18.27,1680000,18.27 +1950-05-05,18.22,18.22,18.22,18.22,1800000,18.22 +1950-05-04,18.12,18.12,18.12,18.12,2150000,18.12 +1950-05-03,18.27,18.27,18.27,18.27,2120000,18.27 +1950-05-02,18.11,18.11,18.11,18.11,2250000,18.11 +1950-05-01,18.22,18.22,18.22,18.22,2390000,18.22 +1950-04-28,17.96,17.96,17.96,17.96,2190000,17.96 +1950-04-27,17.86,17.86,17.86,17.86,2070000,17.86 +1950-04-26,17.76,17.76,17.76,17.76,1880000,17.76 +1950-04-25,17.83,17.83,17.83,17.83,1830000,17.83 +1950-04-24,17.83,17.83,17.83,17.83,2310000,17.83 +1950-04-21,17.96,17.96,17.96,17.96,2710000,17.96 +1950-04-20,17.93,17.93,17.93,17.93,2590000,17.93 +1950-04-19,18.05,18.05,18.05,18.05,2950000,18.05 +1950-04-18,18.03,18.03,18.03,18.03,3320000,18.03 +1950-04-17,17.88,17.88,17.88,17.88,2520000,17.88 +1950-04-14,17.96,17.96,17.96,17.96,2750000,17.96 +1950-04-13,17.98,17.98,17.98,17.98,2410000,17.98 +1950-04-12,17.94,17.94,17.94,17.94,2010000,17.94 +1950-04-11,17.75,17.75,17.75,17.75,2010000,17.75 +1950-04-10,17.85,17.85,17.85,17.85,2070000,17.85 +1950-04-06,17.78,17.78,17.78,17.78,2000000,17.78 +1950-04-05,17.63,17.63,17.63,17.63,1430000,17.63 +1950-04-04,17.55,17.55,17.55,17.55,2010000,17.55 +1950-04-03,17.53,17.53,17.53,17.53,1570000,17.53 +1950-03-31,17.29,17.29,17.29,17.29,1880000,17.29 +1950-03-30,17.30,17.30,17.30,17.30,2370000,17.30 +1950-03-29,17.44,17.44,17.44,17.44,2090000,17.44 +1950-03-28,17.53,17.53,17.53,17.53,1780000,17.53 +1950-03-27,17.46,17.46,17.46,17.46,1930000,17.46 +1950-03-24,17.56,17.56,17.56,17.56,1570000,17.56 +1950-03-23,17.56,17.56,17.56,17.56,2020000,17.56 +1950-03-22,17.55,17.55,17.55,17.55,2010000,17.55 +1950-03-21,17.45,17.45,17.45,17.45,1400000,17.45 +1950-03-20,17.44,17.44,17.44,17.44,1430000,17.44 +1950-03-17,17.45,17.45,17.45,17.45,1600000,17.45 +1950-03-16,17.49,17.49,17.49,17.49,2060000,17.49 +1950-03-15,17.45,17.45,17.45,17.45,1830000,17.45 +1950-03-14,17.25,17.25,17.25,17.25,1140000,17.25 +1950-03-13,17.12,17.12,17.12,17.12,1060000,17.12 +1950-03-10,17.09,17.09,17.09,17.09,1260000,17.09 +1950-03-09,17.07,17.07,17.07,17.07,1330000,17.07 +1950-03-08,17.19,17.19,17.19,17.19,1360000,17.19 +1950-03-07,17.20,17.20,17.20,17.20,1590000,17.20 +1950-03-06,17.32,17.32,17.32,17.32,1470000,17.32 +1950-03-03,17.29,17.29,17.29,17.29,1520000,17.29 +1950-03-02,17.23,17.23,17.23,17.23,1340000,17.23 +1950-03-01,17.24,17.24,17.24,17.24,1410000,17.24 +1950-02-28,17.22,17.22,17.22,17.22,1310000,17.22 +1950-02-27,17.28,17.28,17.28,17.28,1410000,17.28 +1950-02-24,17.28,17.28,17.28,17.28,1710000,17.28 +1950-02-23,17.21,17.21,17.21,17.21,1310000,17.21 +1950-02-21,17.17,17.17,17.17,17.17,1260000,17.17 +1950-02-20,17.20,17.20,17.20,17.20,1420000,17.20 +1950-02-17,17.15,17.15,17.15,17.15,1940000,17.15 +1950-02-16,16.99,16.99,16.99,16.99,1920000,16.99 +1950-02-15,17.06,17.06,17.06,17.06,1730000,17.06 +1950-02-14,17.06,17.06,17.06,17.06,2210000,17.06 +1950-02-10,17.24,17.24,17.24,17.24,1790000,17.24 +1950-02-09,17.28,17.28,17.28,17.28,1810000,17.28 +1950-02-08,17.21,17.21,17.21,17.21,1470000,17.21 +1950-02-07,17.23,17.23,17.23,17.23,1360000,17.23 +1950-02-06,17.32,17.32,17.32,17.32,1490000,17.32 +1950-02-03,17.29,17.29,17.29,17.29,2210000,17.29 +1950-02-02,17.23,17.23,17.23,17.23,2040000,17.23 +1950-02-01,17.05,17.05,17.05,17.05,1810000,17.05 +1950-01-31,17.05,17.05,17.05,17.05,1690000,17.05 +1950-01-30,17.02,17.02,17.02,17.02,1640000,17.02 +1950-01-27,16.82,16.82,16.82,16.82,1250000,16.82 +1950-01-26,16.73,16.73,16.73,16.73,1150000,16.73 +1950-01-25,16.74,16.74,16.74,16.74,1700000,16.74 +1950-01-24,16.86,16.86,16.86,16.86,1250000,16.86 +1950-01-23,16.92,16.92,16.92,16.92,1340000,16.92 +1950-01-20,16.90,16.90,16.90,16.90,1440000,16.90 +1950-01-19,16.87,16.87,16.87,16.87,1170000,16.87 +1950-01-18,16.85,16.85,16.85,16.85,1570000,16.85 +1950-01-17,16.86,16.86,16.86,16.86,1790000,16.86 +1950-01-16,16.72,16.72,16.72,16.72,1460000,16.72 +1950-01-13,16.67,16.67,16.67,16.67,3330000,16.67 +1950-01-12,16.76,16.76,16.76,16.76,2970000,16.76 +1950-01-11,17.09,17.09,17.09,17.09,2630000,17.09 +1950-01-10,17.03,17.03,17.03,17.03,2160000,17.03 +1950-01-09,17.08,17.08,17.08,17.08,2520000,17.08 +1950-01-06,16.98,16.98,16.98,16.98,2010000,16.98 +1950-01-05,16.93,16.93,16.93,16.93,2550000,16.93 +1950-01-04,16.85,16.85,16.85,16.85,1890000,16.85 +1950-01-03,16.66,16.66,16.66,16.66,1260000,16.66 diff --git a/statsmodels/sandbox/examples/run_all.py b/statsmodels/sandbox/examples/run_all.py new file mode 100644 index 0000000..85ebff6 --- /dev/null +++ b/statsmodels/sandbox/examples/run_all.py @@ -0,0 +1,36 @@ +'''run all examples to make sure we don't get an exception + +Note: +If an example contaings plt.show(), then all plot windows have to be closed +manually, at least in my setup. + +uncomment plt.show() to show all plot windows + +''' +from statsmodels.compat.python import input +stop_on_error = True + + +filelist = ['example_pca.py', 'example_sysreg.py', 'example_mle.py', +# 'example_gam.py', # exclude, currently we are not working on it + 'example_pca_regression.py'] + +cont = input("""Are you sure you want to run all of the examples? +This is done mainly to check that they are up to date. +(y/n) >>> """) +if 'y' in cont.lower(): + for run_all_f in filelist: + try: + print("Executing example file", run_all_f) + print("-----------------------" + "-"*len(run_all_f)) + exec(open(run_all_f).read()) + except: + #f might be overwritten in the executed file + print("*********************") + print("ERROR in example file", run_all_f) + print("**********************" + "*"*len(run_all_f)) + if stop_on_error: + raise +#plt.show() +#plt.close('all') +#close doesn't work because I never get here without closing plots manually diff --git a/statsmodels/sandbox/examples/thirdparty/ex_ratereturn.py b/statsmodels/sandbox/examples/thirdparty/ex_ratereturn.py new file mode 100644 index 0000000..3da0502 --- /dev/null +++ b/statsmodels/sandbox/examples/thirdparty/ex_ratereturn.py @@ -0,0 +1,141 @@ +# -*- coding: utf-8 -*- +"""Playing with correlation of DJ-30 stock returns + +this uses pickled data that needs to be created with findow.py +to see graphs, uncomment plt.show() + + +Created on Sat Jan 30 16:30:18 2010 +Author: josef-pktd +""" + +import numpy as np +import matplotlib.pyplot as plt +import matplotlib as mpl + +from statsmodels.compat.python import cPickle + +import statsmodels.sandbox.tools as sbtools + +from statsmodels.graphics.correlation import plot_corr, plot_corr_grid + +try: + with open('dj30rr', 'rb') as fd: + rrdm = cPickle.load(fd) +except Exception: #blanket for any unpickling error + print("Error with unpickling, a new pickle file can be created with findow_1") + raise + +ticksym = rrdm.columns.tolist() +rr = rrdm.values[1:400] + +rrcorr = np.corrcoef(rr, rowvar=0) + + +plot_corr(rrcorr, xnames=ticksym) +nvars = rrcorr.shape[0] +plt.figure() +plt.hist(rrcorr[np.triu_indices(nvars,1)]) +plt.title('Correlation Coefficients') + +xreda, facta, evaa, evea = sbtools.pcasvd(rr) +evallcs = (evaa).cumsum() +print(evallcs/evallcs[-1]) +xred, fact, eva, eve = sbtools.pcasvd(rr, keepdim=4) +pcacorr = np.corrcoef(xred, rowvar=0) + +plot_corr(pcacorr, xnames=ticksym, title='Correlation PCA') + +resid = rr-xred +residcorr = np.corrcoef(resid, rowvar=0) +plot_corr(residcorr, xnames=ticksym, title='Correlation Residuals') + +plt.matshow(residcorr) +plt.imshow(residcorr, cmap=plt.cm.jet, interpolation='nearest', + extent=(0,30,0,30), vmin=-1.0, vmax=1.0) +plt.colorbar() + +normcolor = (0,1) #False #True +fig = plt.figure() +ax = fig.add_subplot(2,2,1) +plot_corr(rrcorr, xnames=ticksym, normcolor=normcolor, ax=ax) +ax2 = fig.add_subplot(2,2,3) +#pcacorr = np.corrcoef(xred, rowvar=0) +plot_corr(pcacorr, xnames=ticksym, title='Correlation PCA', + normcolor=normcolor, ax=ax2) +ax3 = fig.add_subplot(2,2,4) +plot_corr(residcorr, xnames=ticksym, title='Correlation Residuals', + normcolor=normcolor, ax=ax3) + +images = [c for fig_ax in fig.axes for c in fig_ax.get_children() if isinstance(c, mpl.image.AxesImage)] +print(images) +print(ax.get_children()) +#cax = fig.add_subplot(2,2,2) +#[0.85, 0.1, 0.075, 0.8] +fig. subplots_adjust(bottom=0.1, right=0.9, top=0.9) +cax = fig.add_axes([0.9, 0.1, 0.025, 0.8]) +fig.colorbar(images[0], cax=cax) +fig.savefig('corrmatrixgrid.png', dpi=120) + +has_sklearn = True +try: + import sklearn # noqa:F401 +except ImportError: + has_sklearn = False + print('sklearn not available') + + +def cov2corr(cov): + std_ = np.sqrt(np.diag(cov)) + corr = cov / np.outer(std_, std_) + return corr + +if has_sklearn: + from sklearn.covariance import LedoitWolf, OAS, MCD + + lw = LedoitWolf(store_precision=False) + lw.fit(rr, assume_centered=False) + cov_lw = lw.covariance_ + corr_lw = cov2corr(cov_lw) + + oas = OAS(store_precision=False) + oas.fit(rr, assume_centered=False) + cov_oas = oas.covariance_ + corr_oas = cov2corr(cov_oas) + + mcd = MCD()#.fit(rr, reweight=None) + mcd.fit(rr, assume_centered=False) + cov_mcd = mcd.covariance_ + corr_mcd = cov2corr(cov_mcd) + + titles = ['raw correlation', 'lw', 'oas', 'mcd'] + normcolor = None + fig = plt.figure() + for i, c in enumerate([rrcorr, corr_lw, corr_oas, corr_mcd]): + #for i, c in enumerate([np.cov(rr, rowvar=0), cov_lw, cov_oas, cov_mcd]): + ax = fig.add_subplot(2,2,i+1) + plot_corr(c, xnames=None, title=titles[i], + normcolor=normcolor, ax=ax) + + images = [c for fig_ax in fig.axes for c in fig_ax.get_children() if isinstance(c, mpl.image.AxesImage)] + fig. subplots_adjust(bottom=0.1, right=0.9, top=0.9) + cax = fig.add_axes([0.9, 0.1, 0.025, 0.8]) + fig.colorbar(images[0], cax=cax) + + corrli = [rrcorr, corr_lw, corr_oas, corr_mcd, pcacorr] + diffssq = np.array([[((ci-cj)**2).sum() for ci in corrli] + for cj in corrli]) + diffsabs = np.array([[np.max(np.abs(ci-cj)) for ci in corrli] + for cj in corrli]) + print(diffssq) + print('\nmaxabs') + print(diffsabs) + fig.savefig('corrmatrix_sklearn.png', dpi=120) + + fig2 = plot_corr_grid(corrli+[residcorr], ncols=3, + titles=titles+['pca', 'pca-residual'], + xnames=[], ynames=[]) + fig2.savefig('corrmatrix_sklearn_2.png', dpi=120) + +#plt.show() +#plt.close('all') diff --git a/statsmodels/sandbox/examples/thirdparty/findow_1.py b/statsmodels/sandbox/examples/thirdparty/findow_1.py new file mode 100644 index 0000000..5cc49bc --- /dev/null +++ b/statsmodels/sandbox/examples/thirdparty/findow_1.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- +"""A quick look at volatility of stock returns for 2009 + +Just an exercise to find my way around the pandas methods. +Shows the daily rate of return, the square of it (volatility) and +a 5 day moving average of the volatility. +No guarantee for correctness. +Assumes no missing values. +colors of lines in graphs are not great + +uses DataFrame and WidePanel to hold data downloaded from yahoo using matplotlib. +I haven't figured out storage, so the download happens at each run +of the script. + +Created on Sat Jan 30 16:30:18 2010 +Author: josef-pktd +""" +import os + +from statsmodels.compat.python import lzip +import numpy as np +import matplotlib.finance as fin +import matplotlib.pyplot as plt +import datetime as dt + +import pandas as pd + + +def getquotes(symbol, start, end): + # Taken from the no-longer-existent pandas.examples.finance + quotes = fin.quotes_historical_yahoo(symbol, start, end) + dates, open, close, high, low, volume = lzip(*quotes) + + data = { + 'open' : open, + 'close' : close, + 'high' : high, + 'low' : low, + 'volume' : volume + } + + dates = pd.Index([dt.datetime.fromordinal(int(d)) for d in dates]) + return pd.DataFrame(data, index=dates) + + +start_date = dt.datetime(2007, 1, 1) +end_date = dt.datetime(2009, 12, 31) + +dj30 = ['MMM', 'AA', 'AXP', 'T', 'BAC', 'BA', 'CAT', 'CVX', 'CSCO', + 'KO', 'DD', 'XOM', 'GE', 'HPQ', 'HD', 'INTC', 'IBM', 'JNJ', + 'JPM', 'KFT', 'MCD', 'MRK', 'MSFT', 'PFE', 'PG', 'TRV', + 'UTX', 'VZ', 'WMT', 'DIS'] +mysym = ['msft', 'ibm', 'goog'] +indexsym = ['gspc', 'dji'] + + +# download data +dmall = {} +for sy in dj30: + dmall[sy] = getquotes(sy, start_date, end_date) + +# combine into WidePanel +pawp = pd.WidePanel.fromDict(dmall) +print(pawp.values.shape) + +# select closing prices +paclose = pawp.getMinorXS('close') + +# take log and first difference over time +paclose_ratereturn = paclose.apply(np.log).diff() + +if not os.path.exists('dj30rr'): + #if pandas is updated, then sometimes unpickling fails, and need to save again + paclose_ratereturn.save('dj30rr') + +plt.figure() +paclose_ratereturn.plot() +plt.title('daily rate of return') + +# square the returns +paclose_ratereturn_vol = paclose_ratereturn.apply(lambda x:np.power(x,2)) +plt.figure() +plt.title('volatility (with 5 day moving average') +paclose_ratereturn_vol.plot() + +# use convolution to get moving average +paclose_ratereturn_vol_mov = paclose_ratereturn_vol.apply( + lambda x:np.convolve(x,np.ones(5)/5.,'same')) +paclose_ratereturn_vol_mov.plot() + + + +#plt.show() diff --git a/statsmodels/sandbox/examples/thirdparty/try_interchange.py b/statsmodels/sandbox/examples/thirdparty/try_interchange.py new file mode 100644 index 0000000..a803213 --- /dev/null +++ b/statsmodels/sandbox/examples/thirdparty/try_interchange.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- +"""groupmean, groupby in pandas, la and tabular from a scikits.timeseries + +after a question on the scipy-user mailing list I tried to do +groupmeans, which in this case are duplicate dates, in the 3 packages. + +I'm using the versions that I had installed, which are all based on +repository checkout, but are not fully up-to-date + +some brief comments + +* la.larry and pandas.DataFrame require unique labels/index so + groups have to represented in a separate data structure +* pandas is missing GroupBy in the docs, but the docstring is helpful +* both la and pandas handle datetime objects as object arrays +* tabular requires conversion to structured dtype, but easy helper + functions or methods are available in scikits.timeseries and tabular + +* not too bad for a first try + +Created on Sat Jan 30 08:33:11 2010 +Author: josef-pktd +""" +from statsmodels.compat.python import lrange, zip +import numpy as np +import scikits.timeseries as ts +import la +import pandas +import tabular as tb +from finance import msft, ibm # hack to make it run as standalone + +s = ts.time_series([1,2,3,4,5], + dates=ts.date_array(["2001-01","2001-01", + "2001-02","2001-03","2001-03"],freq="M")) + +print('\nUsing la') +dta = la.larry(s.data, label=[lrange(len(s.data))]) +dat = la.larry(s.dates.tolist(), label=[lrange(len(s.data))]) +s2 = ts.time_series(dta.group_mean(dat).x,dates=ts.date_array(dat.x,freq="M")) +s2u = ts.remove_duplicated_dates(s2) +print(repr(s)) +print(dat) +print(repr(s2)) +print(repr(s2u)) + +print('\nUsing pandas') +pdta = pandas.DataFrame(s.data, np.arange(len(s.data)), [1]) +pa = pdta.groupby(dict(zip(np.arange(len(s.data)), + s.dates.tolist()))).aggregate(np.mean) +s3 = ts.time_series(pa.values.ravel(), + dates=ts.date_array(pa.index.tolist(),freq="M")) + +print(pa) +print(repr(s3)) + +print('\nUsing tabular') +X = tb.tabarray(array=s.torecords(), dtype=s.torecords().dtype) +tabx = X.aggregate(On=['_dates'], AggFuncDict={'_data':np.mean,'_mask':np.all}) +s4 = ts.time_series(tabx['_data'],dates=ts.date_array(tabx['_dates'],freq="M")) +print(tabx) +print(repr(s4)) + +#after running pandas/examples/finance.py +larmsft = la.larry(msft.values, [msft.index.tolist(), msft.columns.tolist()]) +laribm = la.larry(ibm.values, [ibm.index.tolist(), ibm.columns.tolist()]) +lar1 = la.larry(np.dstack((msft.values,ibm.values)), [ibm.index.tolist(), ibm.columns.tolist(), ['msft', 'ibm']]) +print(lar1.mean(0)) + + +y = la.larry([[1.0, 2.0], [3.0, 4.0]], [['a', 'b'], ['c', 'd']]) +ysr = np.empty(y.x.shape[0],dtype=([('index','S1')]+[(i,np.float) for i in y.label[1]])) +ysr['index'] = y.label[0] +for i in ysr.dtype.names[1:]: + ysr[i] = y[y.labelindex(i, axis=1)].x diff --git a/statsmodels/sandbox/examples/try_gmm_other.py b/statsmodels/sandbox/examples/try_gmm_other.py new file mode 100644 index 0000000..3cc3fdc --- /dev/null +++ b/statsmodels/sandbox/examples/try_gmm_other.py @@ -0,0 +1,139 @@ + +import numpy as np +from scipy import stats + +from statsmodels.regression.linear_model import OLS +from statsmodels.tools import tools +from statsmodels.sandbox.regression.gmm import spec_hausman + +from statsmodels.sandbox.regression import gmm + + +if __name__ == '__main__': + examples = ['ivols', 'distquant'][:] + + if 'ivols' in examples: + exampledata = ['ols', 'iv', 'ivfake'][1] + nobs = nsample = 500 + sige = 3 + corrfactor = 0.025 + + + x = np.linspace(0,10, nobs) + X = tools.add_constant(np.column_stack((x, x**2)), prepend=False) + beta = np.array([1, 0.1, 10]) + + def sample_ols(exog): + endog = np.dot(exog, beta) + sige*np.random.normal(size=nobs) + return endog, exog, None + + def sample_iv(exog): + print('using iv example') + X = exog.copy() + e = sige * np.random.normal(size=nobs) + endog = np.dot(X, beta) + e + exog[:,0] = X[:,0] + corrfactor * e + z0 = X[:,0] + np.random.normal(size=nobs) + z1 = X.sum(1) + np.random.normal(size=nobs) + z2 = X[:,1] + z3 = (np.dot(X, np.array([2,1, 0])) + + sige/2. * np.random.normal(size=nobs)) + z4 = X[:,1] + np.random.normal(size=nobs) + instrument = np.column_stack([z0, z1, z2, z3, z4, X[:,-1]]) + return endog, exog, instrument + + def sample_ivfake(exog): + X = exog + e = sige * np.random.normal(size=nobs) + endog = np.dot(X, beta) + e + #X[:,0] += 0.01 * e + #z1 = X.sum(1) + np.random.normal(size=nobs) + #z2 = X[:,1] + z3 = (np.dot(X, np.array([2,1, 0])) + + sige/2. * np.random.normal(size=nobs)) + z4 = X[:,1] + np.random.normal(size=nobs) + instrument = np.column_stack([X[:,:2], z3, z4, X[:,-1]]) #last is constant + return endog, exog, instrument + + + if exampledata == 'ols': + endog, exog, _ = sample_ols(X) + instrument = exog + elif exampledata == 'iv': + endog, exog, instrument = sample_iv(X) + elif exampledata == 'ivfake': + endog, exog, instrument = sample_ivfake(X) + + + #using GMM and IV2SLS classes + #---------------------------- + + mod = gmm.IVGMM(endog, exog, instrument, nmoms=instrument.shape[1]) + res = mod.fit() + modgmmols = gmm.IVGMM(endog, exog, exog, nmoms=exog.shape[1]) + resgmmols = modgmmols.fit() + #the next is the same as IV2SLS, (Z'Z)^{-1} as weighting matrix + modgmmiv = gmm.IVGMM(endog, exog, instrument, nmoms=instrument.shape[1]) #same as mod + resgmmiv = modgmmiv.fitgmm(np.ones(exog.shape[1], float), + weights=np.linalg.inv(np.dot(instrument.T, instrument))) + modls = gmm.IV2SLS(endog, exog, instrument) + resls = modls.fit() + modols = OLS(endog, exog) + resols = modols.fit() + + print('\nIV case') + print('params') + print('IV2SLS', resls.params) + print('GMMIV ', resgmmiv) # .params + print('GMM ', res.params) + print('diff ', res.params - resls.params) + print('OLS ', resols.params) + print('GMMOLS', resgmmols.params) + + print('\nbse') + print('IV2SLS', resls.bse) + print('GMM ', res.bse) #bse currently only attached to model not results + print('diff ', res.bse - resls.bse) + print('%-diff', resls.bse / res.bse * 100 - 100) + print('OLS ', resols.bse) + print('GMMOLS', resgmmols.bse) + #print 'GMMiv', modgmmiv.bse + + print("Hausman's specification test") + print(resls.spec_hausman()) + print(spec_hausman(resols.params, res.params, resols.cov_params(), + res.cov_params())) + print(spec_hausman(resgmmols.params, res.params, resgmmols.cov_params(), + res.cov_params())) + + + if 'distquant' in examples: + + + #estimating distribution parameters from quantiles + #------------------------------------------------- + + #example taken from distribution_estimators.py + gparrvs = stats.genpareto.rvs(2, size=5000) + x0p = [1., gparrvs.min()-5, 1] + + moddist = gmm.DistQuantilesGMM(gparrvs, None, None, distfn=stats.genpareto) + #produces non-sense because optimal weighting matrix calculations don't + #apply to this case + #resgp = moddist.fit() #now with 'cov': LinAlgError: Singular matrix + pit1, wit1 = moddist.fititer([1.5,0,1.5], maxiter=1) + print(pit1) + p1 = moddist.fitgmm([1.5,0,1.5]) + print(p1) + moddist2 = gmm.DistQuantilesGMM(gparrvs, None, None, distfn=stats.genpareto, + pquant=np.linspace(0.01,0.99,10)) + pit1a, wit1a = moddist2.fititer([1.5,0,1.5], maxiter=1) + print(pit1a) + p1a = moddist2.fitgmm([1.5,0,1.5]) + print(p1a) + #Note: pit1a and p1a are the same and almost the same (1e-5) as + # fitquantilesgmm version (functions instead of class) + res1b = moddist2.fitonce([1.5,0,1.5]) + print(res1b.params) + print(res1b.bse) #they look much too large + print(np.sqrt(np.diag(res1b._cov_params))) diff --git a/statsmodels/sandbox/examples/try_multiols.py b/statsmodels/sandbox/examples/try_multiols.py new file mode 100644 index 0000000..5d8a31c --- /dev/null +++ b/statsmodels/sandbox/examples/try_multiols.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +""" + +Created on Sun May 26 13:23:40 2013 + +Author: Josef Perktold, based on Enrico Giampieri's multiOLS +""" + +#import numpy as np +import pandas as pd + +import statsmodels.api as sm +from statsmodels.sandbox.multilinear import multiOLS, multigroup + +data = sm.datasets.longley.load_pandas() +df = data.exog +df['TOTEMP'] = data.endog + +#This will perform the specified linear model on all the +#other columns of the dataframe +res0 = multiOLS('GNP + 1', df) + +#This select only a certain subset of the columns +res = multiOLS('GNP + 0', df, ['GNPDEFL', 'TOTEMP', 'POP']) +print(res.to_string()) + + +url = "https://raw.githubusercontent.com/vincentarelbundock/" +url = url + "Rdatasets/csv/HistData/Guerry.csv" +df = pd.read_csv(url, index_col=1) #'dept') + +#evaluate the relationship between the various parameters whith the Wealth +pvals = multiOLS('Wealth', df)['adj_pvals', '_f_test'] + +#define the groups +groups = {} +groups['crime'] = ['Crime_prop', 'Infanticide', + 'Crime_parents', 'Desertion', 'Crime_pers'] +groups['religion'] = ['Donation_clergy', 'Clergy', 'Donations'] +groups['wealth'] = ['Commerce', 'Lottery', 'Instruction', 'Literacy'] + +#do the analysis of the significance +res3 = multigroup(pvals < 0.05, groups) +print(res3) diff --git a/statsmodels/sandbox/examples/try_quantile_regression.py b/statsmodels/sandbox/examples/try_quantile_regression.py new file mode 100644 index 0000000..5f5e983 --- /dev/null +++ b/statsmodels/sandbox/examples/try_quantile_regression.py @@ -0,0 +1,50 @@ +'''Example to illustrate Quantile Regression + +Author: Josef Perktold + +''' + +import numpy as np +import matplotlib.pyplot as plt + +from statsmodels.compat.python import zip +import statsmodels.api as sm + +from statsmodels.regression.quantile_regression import QuantReg +sige = 5 +nobs, k_vars = 500, 5 +x = np.random.randn(nobs, k_vars) +#x[:,0] = 1 +y = x.sum(1) + sige * (np.random.randn(nobs)/2 + 1)**3 +p = 0.5 +exog = np.column_stack((np.ones(nobs), x)) +res_qr = QuantReg(y, exog).fit(p) + +res_qr2 = QuantReg(y, exog).fit(0.25) +res_qr3 = QuantReg(y, exog).fit(0.75) +res_ols = sm.OLS(y, exog).fit() + + +##print 'ols ', res_ols.params +##print '0.25', res_qr2 +##print '0.5 ', res_qr +##print '0.75', res_qr3 + +params = [res_ols.params, res_qr2.params, res_qr.params, res_qr3.params] +labels = ['ols', 'qr 0.25', 'qr 0.5', 'qr 0.75'] + +#sortidx = np.argsort(y) +fitted_ols = np.dot(res_ols.model.exog, params[0]) +sortidx = np.argsort(fitted_ols) +x_sorted = res_ols.model.exog[sortidx] +fitted_ols = np.dot(x_sorted, params[0]) +plt.figure() +plt.plot(y[sortidx], 'o', alpha=0.75) +for lab, beta in zip(['ols', 'qr 0.25', 'qr 0.5', 'qr 0.75'], params): + print('%-8s' % lab, np.round(beta, 4)) + fitted = np.dot(x_sorted, beta) + lw = 2 if lab == 'ols' else 1 + plt.plot(fitted, lw=lw, label=lab) +plt.legend() + +plt.show() diff --git a/statsmodels/sandbox/examples/try_quantile_regression1.py b/statsmodels/sandbox/examples/try_quantile_regression1.py new file mode 100644 index 0000000..28c2fa7 --- /dev/null +++ b/statsmodels/sandbox/examples/try_quantile_regression1.py @@ -0,0 +1,46 @@ +'''Example to illustrate Quantile Regression + +Author: Josef Perktold + +polynomial regression with systematic deviations above + +''' + +import numpy as np +import matplotlib.pyplot as plt + +from statsmodels.compat.python import zip +from scipy import stats +import statsmodels.api as sm + +from statsmodels.regression.quantile_regression import QuantReg + +sige = 0.1 +nobs, k_vars = 500, 3 +x = np.random.uniform(-1, 1, size=nobs) +x.sort() +exog = np.vander(x, k_vars+1)[:,::-1] +mix = 0.1 * stats.norm.pdf(x[:,None], loc=np.linspace(-0.5, 0.75, 4), scale=0.01).sum(1) +y = exog.sum(1) + mix + sige * (np.random.randn(nobs)/2 + 1)**3 + +p = 0.5 +res_qr = QuantReg(y, exog).fit(p) +res_qr2 = QuantReg(y, exog).fit(0.1) +res_qr3 = QuantReg(y, exog).fit(0.75) +res_ols = sm.OLS(y, exog).fit() + +params = [res_ols.params, res_qr2.params, res_qr.params, res_qr3.params] +labels = ['ols', 'qr 0.1', 'qr 0.5', 'qr 0.75'] + + +plt.figure() +plt.plot(x, y, '.', alpha=0.5) +for lab, beta in zip(['ols', 'qr 0.1', 'qr 0.5', 'qr 0.75'], params): + print('%-8s' % lab, np.round(beta, 4)) + fitted = np.dot(exog, beta) + lw = 2 + plt.plot(x, fitted, lw=lw, label=lab) +plt.legend() +plt.title('Quantile Regression') + +plt.show() diff --git a/statsmodels/sandbox/examples/try_smoothers.py b/statsmodels/sandbox/examples/try_smoothers.py new file mode 100644 index 0000000..81a12c9 --- /dev/null +++ b/statsmodels/sandbox/examples/try_smoothers.py @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- +""" +Created on Tue Nov 01 15:17:52 2011 + +Author: Mike +Author: Josef + +mainly script for checking Kernel Regression +""" +import numpy as np + +if __name__ == "__main__": + #from statsmodels.sandbox.nonparametric import smoothers as s + from statsmodels.sandbox.nonparametric import smoothers, kernels + import matplotlib.pyplot as plt + #from numpy import sin, array, random + + import time + np.random.seed(500) + nobs = 250 + sig_fac = 0.5 + #x = np.random.normal(size=nobs) + x = np.random.uniform(-2, 2, size=nobs) + #y = np.array([np.sin(i*5)/i + 2*i + (3+i)*np.random.normal() for i in x]) + y = np.sin(x*5)/x + 2*x + sig_fac * (3+x)*np.random.normal(size=nobs) + + K = kernels.Biweight(0.25) + K2 = kernels.CustomKernel(lambda x: (1 - x*x)**2, 0.25, domain = [-1.0, + 1.0]) + + KS = smoothers.KernelSmoother(x, y, K) + KS2 = smoothers.KernelSmoother(x, y, K2) + + + KSx = np.arange(-3, 3, 0.1) + start = time.time() + KSy = KS.conf(KSx) + KVar = KS.std(KSx) + print(time.time() - start) # This should be significantly quicker... + start = time.time() # + KS2y = KS2.conf(KSx) # + K2Var = KS2.std(KSx) # + print(time.time() - start) # ...than this. + + KSConfIntx, KSConfInty = KS.conf(15) + + print("Norm const should be 0.9375") + print(K2.norm_const) + + print("L2 Norms Should Match:") + print(K.L2Norm) + print(K2.L2Norm) + + print("Fit values should match:") + #print zip(KSy, KS2y) + print(KSy[28]) + print(KS2y[28]) + + print("Var values should match:") + #print zip(KVar, K2Var) + print(KVar[39]) + print(K2Var[39]) + + fig = plt.figure() + ax = fig.add_subplot(221) + ax.plot(x, y, "+") + ax.plot(KSx, KSy, "-o") + #ax.set_ylim(-20, 30) + ax2 = fig.add_subplot(222) + ax2.plot(KSx, KVar, "-o") + + ax3 = fig.add_subplot(223) + ax3.plot(x, y, "+") + ax3.plot(KSx, KS2y, "-o") + #ax3.set_ylim(-20, 30) + ax4 = fig.add_subplot(224) + ax4.plot(KSx, K2Var, "-o") + + fig2 = plt.figure() + ax5 = fig2.add_subplot(111) + ax5.plot(x, y, "+") + ax5.plot(KSConfIntx, KSConfInty, "-o") + + import statsmodels.nonparametric.smoothers_lowess as lo + ys = lo.lowess(y, x) + ax5.plot(ys[:,0], ys[:,1], 'b-') + ys2 = lo.lowess(y, x, frac=0.25) + ax5.plot(ys2[:,0], ys2[:,1], 'b--', lw=2) + + #need to sort for matplolib plot ? + xind = np.argsort(x) + pmod = smoothers.PolySmoother(5, x[xind]) + pmod.fit(y[xind]) + + yp = pmod(x[xind]) + ax5.plot(x[xind], yp, 'k-') + ax5.set_title('Kernel regression, lowess - blue, polysmooth - black') + + #plt.show() diff --git a/statsmodels/sandbox/formula.py b/statsmodels/sandbox/formula.py new file mode 100644 index 0000000..3c9417a --- /dev/null +++ b/statsmodels/sandbox/formula.py @@ -0,0 +1,769 @@ +""" +Provides the basic classes needed to specify statistical models. + + + +namespace : dictionary + mapping from names to data, used to associate data to a formula or term + + +""" +from collections import OrderedDict +from statsmodels.compat.python import (iterkeys, lrange, string_types, + itervalues, range) +import copy +import numpy as np + +__docformat__ = 'restructuredtext' + +default_namespace = {} + +class Term(object): + """ + This class is very simple: it is just a named term in a model formula. + + It is also callable: by default it namespace[self.name], where namespace + defaults to formula.default_namespace. + When called in an instance of formula, + the namespace used is that formula's namespace. + + Inheritance of the namespace under +,*,- operations: + ---------------------------------------------------- + + By default, the namespace is empty, which means it must be + specified before evaluating the design matrix. + + When it is unambiguous, the namespaces of objects are derived from the + context. + + Rules: + ------ + + i) "X * I", "X + I", "X**i": these inherit X's namespace + ii) "F.main_effect()": this inherits the Factor F's namespace + iii) "A-B": this inherits A's namespace + iv) if A.namespace == B.namespace, then A+B inherits this namespace + v) if A.namespace == B.namespace, then A*B inherits this namespace + + Equality of namespaces: + ----------------------- + + This is done by comparing the namespaces directly, if + an exception is raised in the check of equality, they are + assumed not to be equal. + """ + + def __pow__(self, power): + """ + Raise the quantitative term's values to an integer power, i.e. + polynomial. + """ + + try: + power = float(power) + except: + raise ValueError('expecting a float') + + if power == int(power): + name = '%s^%d' % (self.name, int(power)) + else: + name = '%s^%0.2f' % (self.name, power) + + value = Quantitative(name, func=self, transform=lambda x: np.power(x, power)) + value.power = power + value.namespace = self.namespace + return value + + def __init__(self, name, func=None, termname=None): + + self.name = name + self.__namespace = None + if termname is None: + self.termname = name + else: + self.termname = termname + + if not isinstance(self.termname, string_types): + raise ValueError('expecting a string for termname') + if func: + self.func = func + + # Namespace in which self.name will be looked up in, if needed + + def _get_namespace(self): + if isinstance(self.__namespace, np.ndarray): + return self.__namespace + else: return self.__namespace or default_namespace + + def _set_namespace(self, value): self.__namespace = value + def _del_namespace(self): del self.__namespace + namespace = property(_get_namespace, _set_namespace, _del_namespace) + + def __str__(self): + """ + '' % self.termname + """ + return '' % self.termname + + def __add__(self, other): + """ + Formula(self) + Formula(other) + """ + fother = Formula(other, namespace=other.namespace) + f = fother + self + if _namespace_equal(fother.namespace, self.namespace): + f.namespace = self.namespace + return f + + def __mul__(self, other): + """ + Formula(self) * Formula(other) + """ + + if isinstance(other, Term) and other.name == 'intercept': + f = Formula(self, namespace=self.namespace) + elif self.name == 'intercept': + f = Formula(other, namespace=other.namespace) + else: + other = Formula(other, namespace=other.namespace) + f = other * self + if _namespace_equal(other.namespace, self.namespace): + f.namespace = self.namespace + return f + + def names(self): + """ + Return the names of the columns in design associated to the terms, + i.e. len(self.names()) = self().shape[0]. + """ + if isinstance(self.name, string_types): + return [self.name] + else: + return list(self.name) + + def __call__(self, *args, **kw): + """ + Return the columns associated to self in a design matrix. + If the term has no 'func' attribute, it returns + ``self.namespace[self.termname]`` + else, it returns + ``self.func(*args, **kw)`` + """ + + if not hasattr(self, 'func'): + val = self.namespace[self.termname] + else: + val = self.func + if callable(val): + if isinstance(val, (Term, Formula)): + val = copy.copy(val) + val.namespace = self.namespace + val = val(*args, **kw) + + val = np.asarray(val) + return np.squeeze(val) + +class Factor(Term): + """A categorical factor.""" + + def __init__(self, termname, keys, ordinal=False): + """ + Factor is initialized with keys, representing all valid + levels of the factor. + + If ordinal is False, keys can have repeats: set(keys) is what is + used. + + If ordinal is True, the order is taken from the keys, and + there should be no repeats. + """ + + if not ordinal: + self.keys = list(set(keys)) + self.keys.sort() + else: + self.keys = keys + if len(set(keys)) != len(list(keys)): + raise ValueError('keys for ordinal Factor should be unique, in increasing order') + self._name = termname + self.termname = termname + self.ordinal = ordinal + + if self.ordinal: + name = self.termname + else: + name = ['(%s==%s)' % (self.termname, str(key)) for key in self.keys] + + Term.__init__(self, name, termname=self.termname, func=self.get_columns) + + def get_columns(self, *args, **kw): + """ + Calling function for factor instance. + """ + + v = self.namespace[self._name] + while True: + if callable(v): + if isinstance(v, (Term, Formula)): + v = copy.copy(v) + v.namespace = self.namespace + v = v(*args, **kw) + else: break + + n = len(v) + + if self.ordinal: + col = [float(self.keys.index(v[i])) for i in range(n)] + return np.array(col) + + else: + value = [] + for key in self.keys: + col = [float((v[i] == key)) for i in range(n)] + value.append(col) + return np.array(value) + + def values(self, *args, **kw): + """ + Return the keys of the factor, rather than the columns of the design + matrix. + """ + + del(self.func) + val = self(*args, **kw) + self.func = self.get_columns + return val + + def verify(self, values): + """ + Verify that all values correspond to valid keys in self. + """ + s = set(values) + if not s.issubset(self.keys): + raise ValueError('unknown keys in values') + + def __add__(self, other): + """ + Formula(self) + Formula(other) + + When adding \'intercept\' to a factor, this just returns + + Formula(self, namespace=self.namespace) + + """ + + if isinstance(other, Term) and other.name == 'intercept': + return Formula(self, namespace=self.namespace) + else: + return Term.__add__(self, other) + + def main_effect(self, reference=None): + """ + Return the 'main effect' columns of a factor, choosing + an optional reference key. + + The reference key can be one of the keys of the Factor, + or an integer, representing which column to remove. + It defaults to 0. + + """ + + names = self.names() + + if reference is None: + reference = 0 + else: + try: + reference = self.keys.index(reference) + except ValueError: + reference = int(reference) + + def maineffect_func(value, reference=reference): + rvalue = [] + keep = lrange(value.shape[0]) + keep.pop(reference) + for i in range(len(keep)): + rvalue.append(value[keep[i]] - value[reference]) + return np.array(rvalue) + + keep = lrange(len(self.names())) + keep.pop(reference) + __names = self.names() + _names = ['%s-%s' % (__names[keep[i]], __names[reference]) for i in range(len(keep))] + value = Quantitative(_names, func=self, + termname='%s:maineffect' % self.termname, + transform=maineffect_func) + value.namespace = self.namespace + return value + + def __getitem__(self, key): + """ + Retrieve the column corresponding to key in a Formula. + + Parameters + ---------- + key : Factor key + one of the Factor's keys + + Returns + ------- + ndarray corresponding to key, when evaluated in current namespace + """ + if not self.ordinal: + i = self.names().index('(%s==%s)' % (self.termname, str(key))) + return self()[i] + else: + v = self.namespace[self._name] + return np.array([(vv == key) for vv in v]).astype(np.float) + + +class Quantitative(Term): + """ + A subclass of term that can be used to apply point transformations + of another term, i.e. to take powers: + + >>> import numpy as np + >>> from nipy.fixes.scipy.stats.models import formula + >>> X = np.linspace(0,10,101) + >>> x = formula.Term('X') + >>> x.namespace={'X':X} + >>> x2 = x**2 + >>> print np.allclose(x()**2, x2()) + True + >>> x3 = formula.Quantitative('x2', func=x, transform=lambda x: x**2) + >>> x3.namespace = x.namespace + >>> print np.allclose(x()**2, x3()) + True + + """ + + def __init__(self, name, func=None, termname=None, transform=lambda x: x): + self.transform = transform + Term.__init__(self, name, func=func, termname=termname) + + def __call__(self, *args, **kw): + """ + A quantitative is just like term, except there is an additional + transformation: self.transform. + + """ + return self.transform(Term.__call__(self, *args, **kw)) + +class Formula(object): + """ + A formula object for manipulating design matrices in regression models, + essentially consisting of a list of term instances. + + The object supports addition and multiplication which correspond + to concatenation and pairwise multiplication, respectively, + of the columns of the two formulas. + + """ + + def _get_namespace(self): + if isinstance(self.__namespace, np.ndarray): + return self.__namespace + else: return self.__namespace or default_namespace + + def _set_namespace(self, value): self.__namespace = value + def _del_namespace(self): del self.__namespace + namespace = property(_get_namespace, _set_namespace, _del_namespace) + + def _terms_changed(self): + self._names = self.names() + self._termnames = self.termnames() + + def __init__(self, termlist, namespace=default_namespace): + """ + Create a formula from either: + i. a `formula` object + ii. a sequence of `term` instances + iii. one `term` + """ + + + self.__namespace = namespace + if isinstance(termlist, Formula): + self.terms = copy.copy(list(termlist.terms)) + elif isinstance(termlist, list): + self.terms = termlist + elif isinstance(termlist, Term): + self.terms = [termlist] + else: + raise ValueError + + self._terms_changed() + + def __str__(self): + """ + String representation of list of termnames of a formula. + """ + value = [] + for term in self.terms: + value += [term.termname] + return '' % ' + '.join(value) + + def __call__(self, *args, **kw): + + """ + Create (transpose) of the design matrix of the formula within + namespace. Extra arguments are passed to each term instance. If + the formula just contains an intercept, then the keyword + argument 'nrow' indicates the number of rows (observations). + """ + + if 'namespace' in kw: + namespace = kw['namespace'] + else: + namespace = self.namespace + + + allvals = [] + intercept = False + iindex = 0 + for t in self.terms: + t = copy.copy(t) + t.namespace = namespace + val = t(*args, **kw) + + isintercept = False + if hasattr(t, "termname"): + if t.termname == 'intercept': + intercept = True + isintercept = True + interceptindex = iindex + allvals.append(None) + + if val.ndim == 1 and not isintercept: + val.shape = (1, val.shape[0]) + allvals.append(val) + elif not isintercept: + allvals.append(val) + iindex += 1 + + if not intercept: + try: + allvals = np.concatenate(allvals) + except: + pass + else: + nrow = kw.get('nrow', -1) + if allvals != []: + if interceptindex > 0: + n = allvals[0].shape[1] + else: + n = allvals[1].shape[1] + allvals[interceptindex] = np.ones((1,n), np.float64) + allvals = np.concatenate(allvals) + elif nrow <= 1: + raise ValueError('with only intercept in formula, keyword \'nrow\' argument needed') + else: + allvals = I(nrow=nrow) + allvals.shape = (1,) + allvals.shape + return np.squeeze(allvals) + + def hasterm(self, query_term): + """ + Determine whether a given term is in a formula. + """ + + if not isinstance(query_term, Formula): + if isinstance(query_term, string_types): + try: + query = self[query_term] + return query.termname in self.termnames() + except: + return False + elif isinstance(query_term, Term): + return query_term.termname in self.termnames() + elif len(query_term.terms) == 1: + query_term = query_term.terms[0] + return query_term.termname in self.termnames() + else: + raise ValueError('more than one term passed to hasterm') + + def __getitem__(self, name): + t = self.termnames() + if name in t: + return self.terms[t.index(name)] + else: + raise KeyError('formula has no such term: %s' % repr(name)) + + def termcolumns(self, query_term, dict=False): + """ + Return a list of the indices of all columns associated + to a given term. + """ + + if self.hasterm(query_term): + names = query_term.names() + value = OrderedDict() + for name in names: + value[name] = self._names.index(name) + else: + raise ValueError('term not in formula') + if dict: + return value + else: + return list(itervalues(value)) + + def names(self): + """ + Return a list of the names in the formula. The order of the + names corresponds to the order of the columns when self + is evaluated. + """ + + allnames = [] + for term in self.terms: + allnames += term.names() + return allnames + + def termnames(self): + """ + Return a list of the term names in the formula. These + are the names of each term instance in self. + """ + + names = [] + for term in self.terms: + names += [term.termname] + return names + + def design(self, *args, **kw): + """ + ``transpose(self(*args, **kw))`` + """ + return self(*args, **kw).T + + def __mul__(self, other, nested=False): + """ + This returns a formula whose columns are the pairwise + product of the columns of self and other. + + TO DO: check for nesting relationship. Should not be too difficult. + """ + + other = Formula(other) + + selftermnames = self.termnames() + othertermnames = other.termnames() + + n_term_names = len(selftermnames) + J = len(othertermnames) + + terms = [] + termnames = [] + + for i in range(n_term_names): + for j in range(J): + termname = '%s*%s' % (str(selftermnames[i]), str(othertermnames[j])) + pieces = sorted(termname.split('*')) + termname = '*'.join(pieces) + termnames.append(termname) + + selfnames = self.terms[i].names() + othernames = other.terms[j].names() + + if self.terms[i].name == 'intercept': + _term = other.terms[j] + _term.namespace = other.namespace + elif other.terms[j].name == 'intercept': + _term = self.terms[i] + _term.namespace = self.namespace + else: + names = [] + + d1 = len(selfnames) + d2 = len(othernames) + + for r in range(d1): + for s in range(d2): + name = '%s*%s' % (str(selfnames[r]), str(othernames[s])) + pieces = sorted(name.split('*')) + name = '*'.join(pieces) + names.append(name) + + def product_func(value, d1=d1, d2=d2): + + out = [] + for r in range(d1): + for s in range(d2): + out.append(value[r] * value[d1+s]) + return np.array(out) + + cself = copy.copy(self.terms[i]) + cother = copy.copy(other.terms[j]) + sumterms = cself + cother + sumterms.terms = [cself, cother] # enforce the order we want + + _term = Quantitative(names, func=sumterms, + termname=termname, + transform=product_func) + + if _namespace_equal(self.namespace, other.namespace): + _term.namespace = self.namespace + + terms.append(_term) + + return Formula(terms) + + def __add__(self, other): + + """ + Return a formula whose columns are the + concatenation of the columns of self and other. + + terms in the formula are sorted alphabetically. + """ + + def _delist(x): + if isinstance(x, list): + return x[0] + else: + return x + + other = Formula(other) + terms = self.terms + other.terms + pieces = sorted([(_delist(term.name), term) for term in terms], key=lambda x: x[0]) + terms = [piece[1] for piece in pieces] + f = Formula(terms) + if _namespace_equal(self.namespace, other.namespace): + f.namespace = self.namespace + return f + + def __sub__(self, other): + + """ + Return a formula with all terms in other removed from self. + If other contains term instances not in formula, this + function does not raise an exception. + """ + + other = Formula(other) + terms = copy.copy(self.terms) + + for term in other.terms: + for i in range(len(terms)): + if terms[i].termname == term.termname: + terms.pop(i) + break + f = Formula(terms) + f.namespace = self.namespace + return f + +def isnested(A, B, namespace=None): + """ + Is factor B nested within factor A or vice versa: a very crude test + which depends on the namespace. + + If they are nested, returns (True, F) where F is the finest + level of the relationship. Otherwise, returns (False, None) + + """ + + if namespace is not None: + A = copy.copy(A) + A.namespace = namespace + B = copy.copy(B) + B.namespace = namespace + + a = A(values=True)[0] + b = B(values=True)[0] + + if len(a) != len(b): + raise ValueError('A() and B() should be sequences of the same length') + + nA = len(set(a)) + nB = len(set(b)) + n = max(nA, nB) + + AB = [(a[i],b[i]) for i in range(len(a))] + nAB = len(set(AB)) + + if nAB == n: + if nA > nB: + F = A + else: + F = B + return (True, F) + else: + return (False, None) + +def _intercept_fn(nrow=1, **extra): + return np.ones((1,nrow)) + +I = Term('intercept', func=_intercept_fn) # noqa:E741 +I.__doc__ = """ +Intercept term in a formula. If intercept is the +only term in the formula, then a keyword argument +\'nrow\' is needed. + +>>> from nipy.fixes.scipy.stats.models.formula import Formula, I +>>> I() +array(1.0) +>>> I(nrow=5) +array([ 1., 1., 1., 1., 1.]) +>>> f=Formula(I) +>>> f(nrow=5) +array([1, 1, 1, 1, 1]) + +""" + +def interactions(terms, order=[1,2]): + """ + Output all pairwise interactions of given order of a + sequence of terms. + + The argument order is a sequence specifying which order + of interactions should be generated -- the default + creates main effects and two-way interactions. If order + is an integer, it is changed to range(1,order+1), so + order=3 is equivalent to order=[1,2,3], generating + all one, two and three-way interactions. + + If any entry of order is greater than len(terms), it is + effectively treated as len(terms). + + >>> print interactions([Term(l) for l in ['a', 'b', 'c']]) + + >>> + >>> print interactions([Term(l) for l in ['a', 'b', 'c']], order=list(range(5))) + + >>> + + """ + n_terms = len(terms) + + values = {} + + if np.asarray(order).shape == (): + order = lrange(1, int(order)+1) + + # First order + + for o in order: + indices = np.indices((n_terms,)*(o)) + indices.shape = (indices.shape[0], np.product(indices.shape[1:])) + for m in range(indices.shape[1]): + + # only keep combinations that have unique entries + + if (np.unique(indices[:,m]).shape == indices[:,m].shape and + np.alltrue(np.equal(np.sort(indices[:,m]), indices[:,m]))): + ll = [terms[j] for j in indices[:,m]] + v = ll[0] + for ii in range(len(ll)-1): + v *= ll[ii+1] + values[tuple(indices[:,m])] = v + + key = list(iterkeys(values))[0] + value = values[key] + del(values[key]) + + for v in itervalues(values): + value += v + return value + +def _namespace_equal(space1, space2): + return space1 is space2 diff --git a/statsmodels/sandbox/gam.py b/statsmodels/sandbox/gam.py new file mode 100644 index 0000000..270ad45 --- /dev/null +++ b/statsmodels/sandbox/gam.py @@ -0,0 +1,434 @@ +""" +Generalized additive models + + + +Requirements for smoothers +-------------------------- + +smooth(y, weights=xxx) : ? no return ? alias for fit +predict(x=None) : smoothed values, fittedvalues or for new exog +df_fit() : degress of freedom of fit ? + + +Notes +----- +- using PolySmoother works for AdditiveModel, and GAM with Poisson and Binomial +- testfailure with Gamma, no other families tested +- there is still an indeterminacy in the split up of the constant across + components (smoothers) and alpha, sum, i.e. constant, looks good. + - role of offset, that I haven't tried to figure out yet + +Refactoring +----------- +currently result is attached to model instead of other way around +split up Result in class for AdditiveModel and for GAM, +subclass GLMResults, needs verification that result statistics are appropriate +how much inheritance, double inheritance? +renamings and cleanup +interface to other smoothers, scipy splines + +basic unittests as support for refactoring exist, but we should have a test +case for gamma and the others. Advantage of PolySmoother is that we can +benchmark against the parametric GLM results. + +""" + +# JP: +# changes: use PolySmoother instead of crashing bspline +# TODO: check/catalogue required interface of a smoother +# TODO: replace default smoother by corresponding function to initialize +# other smoothers +# TODO: fix iteration, don't define class with iterator methods, use looping; +# add maximum iteration and other optional stop criteria +# fixed some of the dimension problems in PolySmoother, +# now graph for example looks good +# NOTE: example script is now in examples folder +#update: I did some of the above, see module docstring + +from statsmodels.compat.python import range +import numpy as np + +from statsmodels.genmod import families +from statsmodels.sandbox.nonparametric.smoothers import PolySmoother +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.tools.sm_exceptions import IterationLimitWarning, iteration_limit_doc + +import warnings + +DEBUG = False + +def default_smoother(x, s_arg=None): + ''' + + ''' +# _x = x.copy() +# _x.sort() + _x = np.sort(x) + n = x.shape[0] + # taken form smooth.spline in R + + #if n < 50: + if n < 500: + nknots = n + else: + a1 = np.log(50) / np.log(2) + a2 = np.log(100) / np.log(2) + a3 = np.log(140) / np.log(2) + a4 = np.log(200) / np.log(2) + if n < 200: + nknots = 2**(a1 + (a2 - a1) * (n - 50)/150.) + elif n < 800: + nknots = 2**(a2 + (a3 - a2) * (n - 200)/600.) + elif n < 3200: + nknots = 2**(a3 + (a4 - a3) * (n - 800)/2400.) + else: + nknots = 200 + (n - 3200.)**0.2 + knots = _x[np.linspace(0, n-1, nknots).astype(np.int32)] + + #s = SmoothingSpline(knots, x=x.copy()) + #when I set order=2, I get nans in the GAM prediction + if s_arg is None: + order = 3 #what about knots? need smoother *args or **kwds + else: + order = s_arg + s = PolySmoother(order, x=x.copy()) #TODO: change order, why copy? +# s.gram(d=2) +# s.target_df = 5 + return s + +class Offset(object): + + def __init__(self, fn, offset): + self.fn = fn + self.offset = offset + + def __call__(self, *args, **kw): + return self.fn(*args, **kw) + self.offset + +class Results(object): + + def __init__(self, Y, alpha, exog, smoothers, family, offset): + self.nobs, self.k_vars = exog.shape #assumes exog is 2d + #weird: If I put the previous line after the definition of self.mu, + # then the attributed don't get added + self.Y = Y + self.alpha = alpha + self.smoothers = smoothers + self.offset = offset + self.family = family + self.exog = exog + self.offset = offset + self.mu = self.linkinversepredict(exog) #TODO: remove __call__ + + + + def __call__(self, exog): + '''expected value ? check new GLM, same as mu for given exog + maybe remove this + ''' + return self.linkinversepredict(exog) + + def linkinversepredict(self, exog): #TODO what's the name in GLM + '''expected value ? check new GLM, same as mu for given exog + ''' + return self.family.link.inverse(self.predict(exog)) + + def predict(self, exog): + '''predict response, sum of smoothed components + TODO: What's this in the case of GLM, corresponds to X*beta ? + ''' + #note: sum is here over axis=0, + #TODO: transpose in smoothed and sum over axis=1 + + #BUG: there is some inconsistent orientation somewhere + #temporary hack, won't work for 1d + #print dir(self) + #print 'self.nobs, self.k_vars', self.nobs, self.k_vars + exog_smoothed = self.smoothed(exog) + #print 'exog_smoothed.shape', exog_smoothed.shape + if exog_smoothed.shape[0] == self.k_vars: + import warnings + warnings.warn("old orientation, colvars, will go away", + FutureWarning) + return np.sum(self.smoothed(exog), axis=0) + self.alpha + if exog_smoothed.shape[1] == self.k_vars: + return np.sum(exog_smoothed, axis=1) + self.alpha + else: + raise ValueError('shape mismatch in predict') + + def smoothed(self, exog): + '''get smoothed prediction for each component + + ''' + #bug: with exog in predict I get a shape error + #print 'smoothed', exog.shape, self.smoothers[0].predict(exog).shape + #there was a mistake exog didn't have column index i + return np.array([self.smoothers[i].predict(exog[:,i]) + self.offset[i] + #shouldn't be a mistake because exog[:,i] is attached to smoother, but + #it is for different exog + #return np.array([self.smoothers[i].predict() + self.offset[i] + for i in range(exog.shape[1])]).T + + def smoothed_demeaned(self, exog): + components = self.smoothed(exog) + means = components.mean(0) + constant = means.sum() + self.alpha + components_demeaned = components - means + return components_demeaned, constant + +class AdditiveModel(object): + '''additive model with non-parametric, smoothed components + + Parameters + ---------- + exog : ndarray + smoothers : None or list of smoother instances + smoother instances not yet checked + weights : None or ndarray + family : None or family instance + I think only used because of shared results with GAM and subclassing. + If None, then Gaussian is used. + ''' + + def __init__(self, exog, smoothers=None, weights=None, family=None): + self.exog = exog + if weights is not None: + self.weights = weights + else: + self.weights = np.ones(self.exog.shape[0]) + + self.smoothers = smoothers or [default_smoother(exog[:,i]) for i in range(exog.shape[1])] + + #TODO: why do we set here df, refactoring temporary? + for i in range(exog.shape[1]): + self.smoothers[i].df = 10 + + if family is None: + self.family = families.Gaussian() + else: + self.family = family + #self.family = families.Gaussian() + + def _iter__(self): + '''initialize iteration ?, should be removed + + ''' + self.iter = 0 + self.dev = np.inf + return self + + def next(self): + '''internal calculation for one fit iteration + + BUG: I think this does not improve, what is supposed to improve + offset doesn't seem to be used, neither an old alpha + The smoothers keep coef/params from previous iteration + ''' + _results = self.results + Y = self.results.Y + mu = _results.predict(self.exog) + #TODO offset is never used ? + offset = np.zeros(self.exog.shape[1], np.float64) + alpha = (Y * self.weights).sum() / self.weights.sum() + for i in range(self.exog.shape[1]): + tmp = self.smoothers[i].predict() + #TODO: check what smooth needs to do + #smooth (alias for fit, fit given x to new y and attach + #print 'next shape', (Y - alpha - mu + tmp).shape + bad = np.isnan(Y - alpha - mu + tmp).any() + if bad: #temporary assert while debugging + print(Y, alpha, mu, tmp) + raise ValueError("nan encountered") + #self.smoothers[i].smooth(Y - alpha - mu + tmp, + self.smoothers[i].smooth(Y - mu + tmp, + weights=self.weights) + tmp2 = self.smoothers[i].predict() #fittedvalues of previous smooth/fit + self.results.offset[i] = -(tmp2*self.weights).sum() / self.weights.sum() + #self.offset used in smoothed + if DEBUG: + print(self.smoothers[i].params) + mu += tmp2 - tmp + #change setting offset here: tests still pass, offset equal to constant + #in component ??? what's the effect of offset + offset = self.results.offset + #print self.iter + #self.iter += 1 #missing incrementing of iter counter NOT + return Results(Y, alpha, self.exog, self.smoothers, self.family, offset) + + def cont(self): + '''condition to continue iteration loop + + Parameters + ---------- + tol + + Returns + ------- + cont : bool + If true, then iteration should be continued. + + ''' + self.iter += 1 #moved here to always count, not necessary + if DEBUG: + print(self.iter, self.results.Y.shape) + print(self.results.predict(self.exog).shape, self.weights.shape) + curdev = (((self.results.Y - self.results.predict(self.exog))**2) * self.weights).sum() + + if self.iter > self.maxiter: #kill it, no max iterationoption + return False + if np.fabs((self.dev - curdev) / curdev) < self.rtol: + self.dev = curdev + return False + + #self.iter += 1 + self.dev = curdev + return True + + def df_resid(self): + '''degrees of freedom of residuals, ddof is sum of all smoothers df + ''' + return self.results.Y.shape[0] - np.array([self.smoothers[i].df_fit() for i in range(self.exog.shape[1])]).sum() + + def estimate_scale(self): + '''estimate standard deviation of residuals + ''' + #TODO: remove use of self.results.__call__ + return ((self.results.Y - self.results(self.exog))**2).sum() / self.df_resid() + + def fit(self, Y, rtol=1.0e-06, maxiter=30): + '''fit the model to a given endogenous variable Y + + This needs to change for consistency with statsmodels + + ''' + self.rtol = rtol + self.maxiter = maxiter + #iter(self) # what does this do? anything? + self._iter__() + mu = 0 + alpha = (Y * self.weights).sum() / self.weights.sum() + + offset = np.zeros(self.exog.shape[1], np.float64) + + for i in range(self.exog.shape[1]): + self.smoothers[i].smooth(Y - alpha - mu, + weights=self.weights) + tmp = self.smoothers[i].predict() + offset[i] = (tmp * self.weights).sum() / self.weights.sum() + tmp -= tmp.sum() + mu += tmp + + self.results = Results(Y, alpha, self.exog, self.smoothers, self.family, offset) + + while self.cont(): + self.results = self.next() + + if self.iter >= self.maxiter: + warnings.warn(iteration_limit_doc, IterationLimitWarning) + + return self.results + +class Model(GLM, AdditiveModel): +#class Model(AdditiveModel): + #TODO: what does GLM do? Is it actually used ? + #only used in __init__, dropping it doesn't change results + #but where gets family attached now? - weird, it's Gaussian in this case now + #also where is the link defined? + #AdditiveModel overwrites family and sets it to Gaussian - corrected + + #I think both GLM and AdditiveModel subclassing is only used in __init__ + + #niter = 2 + +# def __init__(self, exog, smoothers=None, family=family.Gaussian()): +# GLM.__init__(self, exog, family=family) +# AdditiveModel.__init__(self, exog, smoothers=smoothers) +# self.family = family + def __init__(self, endog, exog, smoothers=None, family=families.Gaussian()): + #self.family = family + #TODO: inconsistent super __init__ + AdditiveModel.__init__(self, exog, smoothers=smoothers, family=family) + GLM.__init__(self, endog, exog, family=family) + assert self.family is family #make sure we got the right family + + def next(self): + _results = self.results + Y = _results.Y + if np.isnan(self.weights).all(): + print("nanweights1") + + _results.mu = self.family.link.inverse(_results.predict(self.exog)) + #eta = _results.predict(self.exog) + #_results.mu = self.family.fitted(eta) + weights = self.family.weights(_results.mu) + if np.isnan(weights).all(): + self.weights = weights + print("nanweights2") + self.weights = weights + if DEBUG: + print('deriv isnan', np.isnan(self.family.link.deriv(_results.mu)).any()) + + #Z = _results.predict(self.exog) + \ + Z = _results.predict(self.exog) + \ + self.family.link.deriv(_results.mu) * (Y - _results.mu) #- _results.alpha #?added alpha + + m = AdditiveModel(self.exog, smoothers=self.smoothers, + weights=self.weights, family=self.family) + + #TODO: I don't know what the next two lines do, Z, Y ? which is endog? + #Y is original endog, Z is endog for the next step in the iterative solver + + _results = m.fit(Z) + self.history.append([Z, _results.predict(self.exog)]) + _results.Y = Y + _results.mu = self.family.link.inverse(_results.predict(self.exog)) + self.iter += 1 + self.results = _results + + return _results + + def estimate_scale(self, Y=None): + """ + Return Pearson\'s X^2 estimate of scale. + """ + + if Y is None: + Y = self.Y + resid = Y - self.results.mu + return (np.power(resid, 2) / self.family.variance(self.results.mu)).sum() \ + / self.df_resid #TODO check this + #/ AdditiveModel.df_resid(self) #what is the class doing here? + + + def fit(self, Y, rtol=1.0e-06, maxiter=30): + + self.rtol = rtol + self.maxiter = maxiter + + self.Y = np.asarray(Y, np.float64) + + self.history = [] + + #iter(self) + self._iter__() + + #TODO code duplication with next? + alpha = self.Y.mean() + mu0 = self.family.starting_mu(Y) + #Z = self.family.link(alpha) + self.family.link.deriv(alpha) * (Y - alpha) + Z = self.family.link(alpha) + self.family.link.deriv(alpha) * (Y - mu0) + m = AdditiveModel(self.exog, smoothers=self.smoothers, family=self.family) + self.results = m.fit(Z) + self.results.mu = self.family.link.inverse(self.results.predict(self.exog)) + self.results.Y = Y + + while self.cont(): + self.results = self.next() + self.scale = self.results.scale = self.estimate_scale() + + if self.iter >= self.maxiter: + import warnings + warnings.warn(iteration_limit_doc, IterationLimitWarning) + + return self.results diff --git a/statsmodels/sandbox/infotheo.py b/statsmodels/sandbox/infotheo.py new file mode 100644 index 0000000..7fbec50 --- /dev/null +++ b/statsmodels/sandbox/infotheo.py @@ -0,0 +1,521 @@ +""" +Information Theoretic and Entropy Measures + +References +---------- +Golan, As. 2008. "Information and Entropy Econometrics -- A Review and + Synthesis." Foundations And Trends in Econometrics 2(1-2), 1-145. + +Golan, A., Judge, G., and Miller, D. 1996. Maximum Entropy Econometrics. + Wiley & Sons, Chichester. +""" +#For MillerMadow correction +#Miller, G. 1955. Note on the bias of information estimates. Info. Theory +# Psychol. Prob. Methods II-B:95-100. + +#For ChaoShen method +#Chao, A., and T.-J. Shen. 2003. Nonparametric estimation of Shannon's index of diversity when +#there are unseen species in sample. Environ. Ecol. Stat. 10:429-443. +#Good, I. J. 1953. The population frequencies of species and the estimation of population parameters. +#Biometrika 40:237-264. +#Horvitz, D.G., and D. J. Thompson. 1952. A generalization of sampling without replacement from a finute universe. J. Am. Stat. Assoc. 47:663-685. + +#For NSB method +#Nemenman, I., F. Shafee, and W. Bialek. 2002. Entropy and inference, revisited. In: Dietterich, T., +#S. Becker, Z. Gharamani, eds. Advances in Neural Information Processing Systems 14: 471-478. +#Cambridge (Massachusetts): MIT Press. + +#For shrinkage method +#Dougherty, J., Kohavi, R., and Sahami, M. (1995). Supervised and unsupervised discretization of +#continuous features. In International Conference on Machine Learning. +#Yang, Y. and Webb, G. I. (2003). Discretization for naive-bayes learning: managing discretization +#bias and variance. Technical Report 2003/131 School of Computer Science and Software Engineer- +#ing, Monash University. + +from statsmodels.compat.python import range, lzip, lmap +from scipy import stats +import numpy as np +from matplotlib import pyplot as plt +from scipy.misc import logsumexp as sp_logsumexp + +#TODO: change these to use maxentutils so that over/underflow is handled +#with the logsumexp. + + +def logsumexp(a, axis=None): + """ + Compute the log of the sum of exponentials log(e^{a_1}+...e^{a_n}) of a + + Avoids numerical overflow. + + Parameters + ---------- + a : array-like + The vector to exponentiate and sum + axis : int, optional + The axis along which to apply the operation. Defaults is None. + + Returns + ------- + sum(log(exp(a))) + + Notes + ----- + This function was taken from the mailing list + http://mail.scipy.org/pipermail/scipy-user/2009-October/022931.html + + This should be superceded by the ufunc when it is finished. + """ + if axis is None: + # Use the scipy.maxentropy version. + return sp_logsumexp(a) + a = np.asarray(a) + shp = list(a.shape) + shp[axis] = 1 + a_max = a.max(axis=axis) + s = np.log(np.exp(a - a_max.reshape(shp)).sum(axis=axis)) + lse = a_max + s + return lse + + +def _isproperdist(X): + """ + Checks to see if `X` is a proper probability distribution + """ + X = np.asarray(X) + if not np.allclose(np.sum(X), 1) or not np.all(X>=0) or not np.all(X<=1): + return False + else: + return True + +def discretize(X, method="ef", nbins=None): + """ + Discretize `X` + + Parameters + ---------- + bins : int, optional + Number of bins. Default is floor(sqrt(N)) + method : string + "ef" is equal-frequency binning + "ew" is equal-width binning + + Examples + -------- + """ + nobs = len(X) + if nbins is None: + nbins = np.floor(np.sqrt(nobs)) + if method == "ef": + discrete = np.ceil(nbins * stats.rankdata(X)/nobs) + if method == "ew": + width = np.max(X) - np.min(X) + width = np.floor(width/nbins) + svec, ivec = stats.fastsort(X) + discrete = np.zeros(nobs) + binnum = 1 + base = svec[0] + discrete[ivec[0]] = binnum + for i in range(1,nobs): + if svec[i] < base + width: + discrete[ivec[i]] = binnum + else: + base = svec[i] + binnum += 1 + discrete[ivec[i]] = binnum + return discrete +#TODO: looks okay but needs more robust tests for corner cases + + + +def logbasechange(a,b): + """ + There is a one-to-one transformation of the entropy value from + a log base b to a log base a : + + H_{b}(X)=log_{b}(a)[H_{a}(X)] + + Returns + ------- + log_{b}(a) + """ + return np.log(b)/np.log(a) + +def natstobits(X): + """ + Converts from nats to bits + """ + return logbasechange(np.e, 2) * X + +def bitstonats(X): + """ + Converts from bits to nats + """ + return logbasechange(2, np.e) * X + +#TODO: make this entropy, and then have different measures as +#a method +def shannonentropy(px, logbase=2): + """ + This is Shannon's entropy + + Parameters + ---------- + logbase, int or np.e + The base of the log + px : 1d or 2d array_like + Can be a discrete probability distribution, a 2d joint distribution, + or a sequence of probabilities. + + Returns + ----- + For log base 2 (bits) given a discrete distribution + H(p) = sum(px * log2(1/px) = -sum(pk*log2(px)) = E[log2(1/p(X))] + + For log base 2 (bits) given a joint distribution + H(px,py) = -sum_{k,j}*w_{kj}log2(w_{kj}) + + Notes + ----- + shannonentropy(0) is defined as 0 + """ +#TODO: haven't defined the px,py case? + px = np.asarray(px) + if not np.all(px <= 1) or not np.all(px >= 0): + raise ValueError("px does not define proper distribution") + entropy = -np.sum(np.nan_to_num(px*np.log2(px))) + if logbase != 2: + return logbasechange(2,logbase) * entropy + else: + return entropy + +# Shannon's information content +def shannoninfo(px, logbase=2): + """ + Shannon's information + + Parameters + ---------- + px : float or array-like + `px` is a discrete probability distribution + + Returns + ------- + For logbase = 2 + np.log2(px) + """ + px = np.asarray(px) + if not np.all(px <= 1) or not np.all(px >= 0): + raise ValueError("px does not define proper distribution") + if logbase != 2: + return - logbasechange(2,logbase) * np.log2(px) + else: + return - np.log2(px) + +def condentropy(px, py, pxpy=None, logbase=2): + """ + Return the conditional entropy of X given Y. + + Parameters + ---------- + px : array-like + py : array-like + pxpy : array-like, optional + If pxpy is None, the distributions are assumed to be independent + and conendtropy(px,py) = shannonentropy(px) + logbase : int or np.e + + Returns + ------- + sum_{kj}log(q_{j}/w_{kj} + + where q_{j} = Y[j] + and w_kj = X[k,j] + """ + if not _isproperdist(px) or not _isproperdist(py): + raise ValueError("px or py is not a proper probability distribution") + if pxpy is not None and not _isproperdist(pxpy): + raise ValueError("pxpy is not a proper joint distribtion") + if pxpy is None: + pxpy = np.outer(py,px) + condent = np.sum(pxpy * np.nan_to_num(np.log2(py/pxpy))) + if logbase == 2: + return condent + else: + return logbasechange(2, logbase) * condent + +def mutualinfo(px,py,pxpy, logbase=2): + """ + Returns the mutual information between X and Y. + + Parameters + ---------- + px : array-like + Discrete probability distribution of random variable X + py : array-like + Discrete probability distribution of random variable Y + pxpy : 2d array-like + The joint probability distribution of random variables X and Y. + Note that if X and Y are independent then the mutual information + is zero. + logbase : int or np.e, optional + Default is 2 (bits) + + Returns + ------- + shannonentropy(px) - condentropy(px,py,pxpy) + """ + if not _isproperdist(px) or not _isproperdist(py): + raise ValueError("px or py is not a proper probability distribution") + if pxpy is not None and not _isproperdist(pxpy): + raise ValueError("pxpy is not a proper joint distribtion") + if pxpy is None: + pxpy = np.outer(py,px) + return shannonentropy(px, logbase=logbase) - condentropy(px,py,pxpy, + logbase=logbase) + +def corrent(px,py,pxpy,logbase=2): + """ + An information theoretic correlation measure. + + Reflects linear and nonlinear correlation between two random variables + X and Y, characterized by the discrete probability distributions px and py + respectively. + + Parameters + ---------- + px : array-like + Discrete probability distribution of random variable X + py : array-like + Discrete probability distribution of random variable Y + pxpy : 2d array-like, optional + Joint probability distribution of X and Y. If pxpy is None, X and Y + are assumed to be independent. + logbase : int or np.e, optional + Default is 2 (bits) + + Returns + ------- + mutualinfo(px,py,pxpy,logbase=logbase)/shannonentropy(py,logbase=logbase) + + Notes + ----- + This is also equivalent to + + corrent(px,py,pxpy) = 1 - condent(px,py,pxpy)/shannonentropy(py) + """ + if not _isproperdist(px) or not _isproperdist(py): + raise ValueError("px or py is not a proper probability distribution") + if pxpy is not None and not _isproperdist(pxpy): + raise ValueError("pxpy is not a proper joint distribtion") + if pxpy is None: + pxpy = np.outer(py,px) + + return mutualinfo(px,py,pxpy,logbase=logbase)/shannonentropy(py, + logbase=logbase) + +def covent(px,py,pxpy,logbase=2): + """ + An information theoretic covariance measure. + + Reflects linear and nonlinear correlation between two random variables + X and Y, characterized by the discrete probability distributions px and py + respectively. + + Parameters + ---------- + px : array-like + Discrete probability distribution of random variable X + py : array-like + Discrete probability distribution of random variable Y + pxpy : 2d array-like, optional + Joint probability distribution of X and Y. If pxpy is None, X and Y + are assumed to be independent. + logbase : int or np.e, optional + Default is 2 (bits) + + Returns + ------- + condent(px,py,pxpy,logbase=logbase) + condent(py,px,pxpy, + logbase=logbase) + + Notes + ----- + This is also equivalent to + + covent(px,py,pxpy) = condent(px,py,pxpy) + condent(py,px,pxpy) + """ + if not _isproperdist(px) or not _isproperdist(py): + raise ValueError("px or py is not a proper probability distribution") + if pxpy is not None and not _isproperdist(pxpy): + raise ValueError("pxpy is not a proper joint distribtion") + if pxpy is None: + pxpy = np.outer(py,px) + + # FIXME: these should be `condentropy`, not `condent` + return (condent(px, py, pxpy, logbase=logbase) # noqa:F821 See GH#5756 + + condent(py, px, pxpy, logbase=logbase)) # noqa:F821 See GH#5756 + + + +#### Generalized Entropies #### + +def renyientropy(px,alpha=1,logbase=2,measure='R'): + """ + Renyi's generalized entropy + + Parameters + ---------- + px : array-like + Discrete probability distribution of random variable X. Note that + px is assumed to be a proper probability distribution. + logbase : int or np.e, optional + Default is 2 (bits) + alpha : float or inf + The order of the entropy. The default is 1, which in the limit + is just Shannon's entropy. 2 is Renyi (Collision) entropy. If + the string "inf" or numpy.inf is specified the min-entropy is returned. + measure : str, optional + The type of entropy measure desired. 'R' returns Renyi entropy + measure. 'T' returns the Tsallis entropy measure. + + Returns + ------- + 1/(1-alpha)*log(sum(px**alpha)) + + In the limit as alpha -> 1, Shannon's entropy is returned. + + In the limit as alpha -> inf, min-entropy is returned. + """ +#TODO:finish returns +#TODO:add checks for measure + if not _isproperdist(px): + raise ValueError("px is not a proper probability distribution") + alpha = float(alpha) + if alpha == 1: + genent = shannonentropy(px) + if logbase != 2: + return logbasechange(2, logbase) * genent + return genent + elif 'inf' in str(alpha).lower() or alpha == np.inf: + return -np.log(np.max(px)) + + # gets here if alpha != (1 or inf) + px = px**alpha + genent = np.log(px.sum()) + if logbase == 2: + return 1/(1-alpha) * genent + else: + return 1/(1-alpha) * logbasechange(2, logbase) * genent + +#TODO: before completing this, need to rethink the organization of +# (relative) entropy measures, ie., all put into one function +# and have kwdargs, etc.? +def gencrossentropy(px,py,pxpy,alpha=1,logbase=2, measure='T'): + """ + Generalized cross-entropy measures. + + Parameters + ---------- + px : array-like + Discrete probability distribution of random variable X + py : array-like + Discrete probability distribution of random variable Y + pxpy : 2d array-like, optional + Joint probability distribution of X and Y. If pxpy is None, X and Y + are assumed to be independent. + logbase : int or np.e, optional + Default is 2 (bits) + measure : str, optional + The measure is the type of generalized cross-entropy desired. 'T' is + the cross-entropy version of the Tsallis measure. 'CR' is Cressie-Read + measure. + + """ + + +if __name__ == "__main__": + print("From Golan (2008) \"Information and Entropy Econometrics -- A Review \ +and Synthesis") + print("Table 3.1") + # Examples from Golan (2008) + + X = [.2,.2,.2,.2,.2] + Y = [.322,.072,.511,.091,.004] + + for i in X: + print(shannoninfo(i)) + for i in Y: + print(shannoninfo(i)) + print(shannonentropy(X)) + print(shannonentropy(Y)) + + p = [1e-5,1e-4,.001,.01,.1,.15,.2,.25,.3,.35,.4,.45,.5] + + plt.subplot(111) + plt.ylabel("Information") + plt.xlabel("Probability") + x = np.linspace(0,1,100001) + plt.plot(x, shannoninfo(x)) +# plt.show() + + plt.subplot(111) + plt.ylabel("Entropy") + plt.xlabel("Probability") + x = np.linspace(0,1,101) + plt.plot(x, lmap(shannonentropy, lzip(x,1-x))) +# plt.show() + + # define a joint probability distribution + # from Golan (2008) table 3.3 + w = np.array([[0,0,1./3],[1/9.,1/9.,1/9.],[1/18.,1/9.,1/6.]]) + # table 3.4 + px = w.sum(0) + py = w.sum(1) + H_X = shannonentropy(px) + H_Y = shannonentropy(py) + H_XY = shannonentropy(w) + H_XgivenY = condentropy(px,py,w) + H_YgivenX = condentropy(py,px,w) +# note that cross-entropy is not a distance measure as the following shows + D_YX = logbasechange(2,np.e)*stats.entropy(px, py) + D_XY = logbasechange(2,np.e)*stats.entropy(py, px) + I_XY = mutualinfo(px,py,w) + print("Table 3.3") + print(H_X,H_Y, H_XY, H_XgivenY, H_YgivenX, D_YX, D_XY, I_XY) + + print("discretize functions") + X=np.array([21.2,44.5,31.0,19.5,40.6,38.7,11.1,15.8,31.9,25.8,20.2,14.2, + 24.0,21.0,11.3,18.0,16.3,22.2,7.8,27.8,16.3,35.1,14.9,17.1,28.2,16.4, + 16.5,46.0,9.5,18.8,32.1,26.1,16.1,7.3,21.4,20.0,29.3,14.9,8.3,22.5, + 12.8,26.9,25.5,22.9,11.2,20.7,26.2,9.3,10.8,15.6]) + discX = discretize(X) + #CF: R's infotheo +#TODO: compare to pyentropy quantize? + print + print("Example in section 3.6 of Golan, using table 3.3") + print("Bounding errors using Fano's inequality") + print("H(P_{e}) + P_{e}log(K-1) >= H(X|Y)") + print("or, a weaker inequality") + print("P_{e} >= [H(X|Y) - 1]/log(K)") + print("P(x) = %s" % px) + print("X = 3 has the highest probability, so this is the estimate Xhat") + pe = 1 - px[2] + print("The probability of error Pe is 1 - p(X=3) = %0.4g" % pe) + H_pe = shannonentropy([pe,1-pe]) + print("H(Pe) = %0.4g and K=3" % H_pe) + print("H(Pe) + Pe*log(K-1) = %0.4g >= H(X|Y) = %0.4g" % \ + (H_pe+pe*np.log2(2), H_XgivenY)) + print("or using the weaker inequality") + print("Pe = %0.4g >= [H(X) - 1]/log(K) = %0.4g" % (pe, (H_X - 1)/np.log2(3))) + print("Consider now, table 3.5, where there is additional information") + print("The conditional probabilities of P(X|Y=y) are ") + w2 = np.array([[0.,0.,1.],[1/3.,1/3.,1/3.],[1/6.,1/3.,1/2.]]) + print(w2) +# not a proper distribution? + print("The probability of error given this information is") + print("Pe = [H(X|Y) -1]/log(K) = %0.4g" % ((np.mean([0,shannonentropy(w2[1]),shannonentropy(w2[2])])-1)/np.log2(3))) + print("such that more information lowers the error") + +### Stochastic processes + markovchain = np.array([[.553,.284,.163],[.465,.312,.223],[.420,.322,.258]]) diff --git a/statsmodels/sandbox/mcevaluate/__init__.py b/statsmodels/sandbox/mcevaluate/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/sandbox/mcevaluate/arma.py b/statsmodels/sandbox/mcevaluate/arma.py new file mode 100644 index 0000000..6fe683e --- /dev/null +++ b/statsmodels/sandbox/mcevaluate/arma.py @@ -0,0 +1,147 @@ + +import numpy as np +from statsmodels.tsa.arima_process import arma_generate_sample +from statsmodels.tsa.arma_mle import Arma + + +#TODO: still refactoring problem with cov_x +#copied from sandbox.tsa.arima.py +def mcarma22(niter=10, nsample=1000, ar=None, ma=None, sig=0.5): + '''run Monte Carlo for ARMA(2,2) + + DGP parameters currently hard coded + also sample size `nsample` + + was not a self contained function, used instances from outer scope + now corrected + + ''' + #nsample = 1000 + #ar = [1.0, 0, 0] + if ar is None: + ar = [1.0, -0.55, -0.1] + #ma = [1.0, 0, 0] + if ma is None: + ma = [1.0, 0.3, 0.2] + results = [] + results_bse = [] + for _ in range(niter): + y2 = arma_generate_sample(ar,ma,nsample+1000, sig)[-nsample:] + y2 -= y2.mean() + arest2 = Arma(y2) + rhohat2a, cov_x2a, infodict, mesg, ier = arest2.fit((2,2)) + results.append(rhohat2a) + err2a = arest2.geterrors(rhohat2a) + sige2a = np.sqrt(np.dot(err2a,err2a)/nsample) + #print('sige2a', sige2a, + #print('cov_x2a.shape', cov_x2a.shape + #results_bse.append(sige2a * np.sqrt(np.diag(cov_x2a))) + if cov_x2a is not None: + results_bse.append(sige2a * np.sqrt(np.diag(cov_x2a))) + else: + results_bse.append(np.nan + np.zeros_like(rhohat2a)) + return np.r_[ar[1:], ma[1:]], np.array(results), np.array(results_bse) + +def mc_summary(res, rt=None): + if rt is None: + rt = np.zeros(res.shape[1]) + nanrows = np.isnan(res).any(1) + print('fractions of iterations with nans', nanrows.mean()) + res = res[~nanrows] + print('RMSE') + print(np.sqrt(((res-rt)**2).mean(0))) + print('mean bias') + print((res-rt).mean(0)) + print('median bias') + print(np.median((res-rt),0)) + print('median bias percent') + print(np.median((res-rt)/rt*100,0)) + print('median absolute error') + print(np.median(np.abs(res-rt),0)) + print('positive error fraction') + print((res > rt).mean(0)) + + +if __name__ == '__main__': + +#short version +# true, est, bse = mcarma22(niter=50) +# print(true +# #print(est +# print(est.mean(0) + + ''' niter 50, sample size=1000, 2 runs + [-0.55 -0.1 0.3 0.2 ] + [-0.542401 -0.09904305 0.30840599 0.2052473 ] + + [-0.55 -0.1 0.3 0.2 ] + [-0.54681176 -0.09742921 0.2996297 0.20624258] + + + niter=50, sample size=200, 3 runs + [-0.55 -0.1 0.3 0.2 ] + [-0.64669489 -0.01134491 0.19972259 0.20634019] + + [-0.55 -0.1 0.3 0.2 ] + [-0.53141595 -0.10653234 0.32297968 0.20505973] + + [-0.55 -0.1 0.3 0.2 ] + [-0.50244588 -0.125455 0.33867488 0.19498214] + + niter=50, sample size=100, 5 runs --> ar1 too low, ma1 too high + [-0.55 -0.1 0.3 0.2 ] + [-0.35715008 -0.23392766 0.48771794 0.21901059] + + [-0.55 -0.1 0.3 0.2 ] + [-0.3554852 -0.21581914 0.51744748 0.24759245] + + [-0.55 -0.1 0.3 0.2 ] + [-0.3737861 -0.24665911 0.48031939 0.17274438] + + [-0.55 -0.1 0.3 0.2 ] + [-0.30015385 -0.27705506 0.56168199 0.21995759] + + [-0.55 -0.1 0.3 0.2 ] + [-0.35879991 -0.22999604 0.4761953 0.19670835] + + new version, with burnin 1000 in DGP and demean + [-0.55 -0.1 0.3 0.2 ] + [-0.56770228 -0.00076025 0.25621825 0.24492449] + + [-0.55 -0.1 0.3 0.2 ] + [-0.27598305 -0.2312364 0.57599134 0.23582417] + + [-0.55 -0.1 0.3 0.2 ] + [-0.38059051 -0.17413628 0.45147109 0.20046776] + + [-0.55 -0.1 0.3 0.2 ] + [-0.47789765 -0.08650743 0.3554441 0.24196087] + ''' + + ar = [1.0, -0.55, -0.1] + ma = [1.0, 0.3, 0.2] + nsample = 200 + + + + run_mc = True#False + if run_mc: + for sig in [0.1, 0.5, 1.]: + import time + t0 = time.time() + rt, res_rho, res_bse = mcarma22(niter=100, sig=sig) + print('\nResults for Monte Carlo') + print('true') + print(rt) + print('nsample =', nsample, 'sigma = ', sig) + print('elapsed time for Monte Carlo', time.time()-t0) + # 20 seconds for ARMA(2,2), 1000 iterations with 1000 observations + #sige2a = np.sqrt(np.dot(err2a,err2a)/nsample) + #print('\nbse of one sample' + #print(sige2a * np.sqrt(np.diag(cov_x2a)) + print('\nMC of rho versus true') + mc_summary(res_rho, rt) + print('\nMC of bse versus zero') # this implies inf in percent + mc_summary(res_bse) + print('\nMC of bse versus std') + mc_summary(res_bse, res_rho.std(0)) diff --git a/statsmodels/sandbox/mcevaluate/mcresuts_arma1.txt b/statsmodels/sandbox/mcevaluate/mcresuts_arma1.txt new file mode 100644 index 0000000..6bf97da --- /dev/null +++ b/statsmodels/sandbox/mcevaluate/mcresuts_arma1.txt @@ -0,0 +1,325 @@ +MonteCarlo for Arma(2,2) fit with conditional least squares +=========================================================== + + +Comments: +--------- +scikits.statsmodels.tsa.arma_mle.Arma.fit((2,0,2)) +niter=100 +didn't use seed +some strange inf in median bias percent and +positive error fraction equal to 1 + + +Sample Size 1000 +---------------- +Results for Monte Carlo +true +[-0.55 -0.1 0.3 0.2 ] +nsample = 1000 sigma = 0.1 +elapsed time for Monte Carlo 3.67199993134 + +MC of rho versus true +fractions of iterations with nans 0.0 +RMSE +[ 0.20193839 0.1609546 0.19646184 0.03923539] +mean bias +[-0.00186601 0.00542719 -0.00533277 0.00676964] +median bias +[-0.00810009 0.01230101 -0.01806484 0.0026727 ] +median bias percent +[ 1.47274338 -12.30101426 -6.02161246 1.33634779] +median absolute error +[ 0.12849263 0.0892165 0.11939251 0.02566005] +positive error fraction +[ 0.49 0.52 0.48 0.54] + +MC of bse versus zero +fractions of iterations with nans 0.0 +RMSE +[ 0.18967743 0.1526568 0.18747709 0.0399396 ] +mean bias +[ 0.18424688 0.14866981 0.18194085 0.03985427] +median bias +[ 0.18197743 0.14733603 0.17935651 0.03915853] +median bias percent +[ Inf Inf Inf Inf] +median absolute error +[ 0.18197743 0.14733603 0.17935651 0.03915853] +positive error fraction +[ 1. 1. 1. 1.] + +MC of bse versus std +fractions of iterations with nans 0.0 +RMSE +[ 0.04840765 0.03674317 0.04747574 0.00287514] +mean bias +[-0.01768289 -0.01219327 -0.0144486 0.0012073 ] +median bias +[-0.01995233 -0.01352704 -0.01703294 0.00051156] +median bias percent +[-9.88082703 -8.40904072 -8.67304431 1.3236821 ] +median absolute error +[ 0.03143609 0.02330123 0.03006728 0.00095056] +positive error fraction +[ 0.31 0.31 0.35 0.65] + +Results for Monte Carlo +true +[-0.55 -0.1 0.3 0.2 ] +nsample = 1000 sigma = 0.5 +elapsed time for Monte Carlo 3.53200006485 + +MC of rho versus true +fractions of iterations with nans 0.0 +RMSE +[ 0.23357913 0.18306959 0.23336364 0.04347842] +mean bias +[-0.01220215 0.01449933 -0.00740801 0.00400656] +median bias +[ 0.00474757 -0.00285192 -0.00179209 0.00881695] +median bias percent +[-0.86319392 2.85192134 -0.59736288 4.40847694] +median absolute error +[ 0.14260379 0.10966381 0.1388728 0.02879121] +positive error fraction +[ 0.51 0.49 0.5 0.59] + +MC of bse versus zero +fractions of iterations with nans 0.0 +RMSE +[ 0.19115836 0.15300091 0.18899884 0.04041533] +mean bias +[ 0.18636096 0.14958803 0.18410379 0.04029974] +median bias +[ 0.17674161 0.14286746 0.17423869 0.03952101] +median bias percent +[ Inf Inf Inf Inf] +median absolute error +[ 0.17674161 0.14286746 0.17423869 0.03952101] +positive error fraction +[ 1. 1. 1. 1.] + +MC of bse versus std +fractions of iterations with nans 0.0 +RMSE +[ 0.0633297 0.04599496 0.06512538 0.004277 ] +mean bias +[-0.04689923 -0.03290647 -0.04914224 -0.00299369] +median bias +[-0.05651859 -0.03962704 -0.05900734 -0.00377242] +median bias percent +[-24.22984657 -21.71410167 -25.29832734 -8.71360165] +median absolute error +[ 0.05810372 0.04048892 0.06100925 0.00383568] +positive error fraction +[ 0.13 0.11 0.11 0.1 ] + +Results for Monte Carlo +true +[-0.55 -0.1 0.3 0.2 ] +nsample = 1000 sigma = 1.0 +elapsed time for Monte Carlo 3.78200006485 + +MC of rho versus true +fractions of iterations with nans 0.0 +RMSE +[ 0.23501983 0.18658536 0.23630675 0.04845701] +mean bias +[-0.0638577 0.0559638 -0.06116445 -0.00201522] +median bias +[-0.02571522 0.01710684 -0.02476506 -0.00040966] +median bias percent +[ 4.6754946 -17.10684152 -8.25501939 -0.20482813] +median absolute error +[ 0.13186172 0.11635244 0.1391435 0.03325726] +positive error fraction +[ 0.45 0.52 0.46 0.5 ] + +MC of bse versus zero +fractions of iterations with nans 0.0 +RMSE +[ 0.2057234 0.16345869 0.20369599 0.04110316] +mean bias +[ 0.19816783 0.15783531 0.19595057 0.04093056] +median bias +[ 0.18616527 0.14688067 0.18394698 0.03953418] +median bias percent +[ Inf Inf Inf Inf] +median absolute error +[ 0.18616527 0.14688067 0.18394698 0.03953418] +positive error fraction +[ 1. 1. 1. 1.] + +MC of bse versus std +fractions of iterations with nans 0.0 +RMSE +[ 0.06193706 0.04704427 0.06433453 0.00837719] +mean bias +[-0.02801022 -0.02015949 -0.03230322 -0.00748453] +median bias +[-0.04001279 -0.03111413 -0.04430681 -0.00888091] +median bias percent +[-17.69083491 -17.48036125 -19.41120455 -18.3432625 ] +median absolute error +[ 0.05454876 0.03993081 0.05735269 0.00892246] +positive error fraction +[ 0.24 0.21 0.2 0.07] + + +Sample Size 200 +--------------- +Results for Monte Carlo +true +[-0.55 -0.1 0.3 0.2 ] +nsample = 200 sigma = 0.1 +elapsed time for Monte Carlo 3.76600003242 + +MC of rho versus true +fractions of iterations with nans 0.0 +RMSE +[ 0.23797307 0.18908967 0.24248704 0.04532965] +mean bias +[-0.02240914 0.02006369 -0.02856247 0.00419784] +median bias +[ 0.0132667 -0.01695 -0.00779267 0.00943245] +median bias percent +[ -2.41212746 16.94999813 -2.5975563 4.71622452] +median absolute error +[ 0.14314755 0.10134399 0.13262758 0.02681113] +positive error fraction +[ 0.53 0.49 0.48 0.57] + +MC of bse versus zero +fractions of iterations with nans 0.0 +RMSE +[ 0.18994719 0.1524025 0.18777651 0.0401027 ] +mean bias +[ 0.18437936 0.14841141 0.18216825 0.03997125] +median bias +[ 0.18044553 0.14526126 0.17764634 0.03921749] +median bias percent +[ Inf Inf Inf Inf] +median absolute error +[ 0.18044553 0.14526126 0.17764634 0.03921749] +positive error fraction +[ 1. 1. 1. 1.] + +MC of bse versus std +fractions of iterations with nans 0.0 +RMSE +[ 0.0696006 0.05262689 0.07424492 0.00609829] +mean bias +[-0.05253626 -0.0396108 -0.05863073 -0.00516361] +median bias +[-0.0564701 -0.04276095 -0.06315264 -0.00591737] +median bias percent +[-23.83553085 -22.74250075 -26.22629031 -13.11041727] +median absolute error +[ 0.05851016 0.04572261 0.0646474 0.00594597] +positive error fraction +[ 0.11 0.13 0.1 0.04] + +Results for Monte Carlo +true +[-0.55 -0.1 0.3 0.2 ] +nsample = 200 sigma = 0.5 +elapsed time for Monte Carlo 3.86000013351 + +MC of rho versus true +fractions of iterations with nans 0.0 +RMSE +[ 0.21997161 0.17584013 0.22184246 0.04268358] +mean bias +[-0.04259758 0.03350341 -0.05393998 -0.01056256] +median bias +[-0.02365517 0.01051654 -0.04060612 -0.00710624] +median bias percent +[ 4.3009406 -10.51654169 -13.53537431 -3.55312073] +median absolute error +[ 0.13186161 0.1056892 0.13501117 0.02523291] +positive error fraction +[ 0.45 0.55 0.42 0.42] + +MC of bse versus zero +fractions of iterations with nans 0.0 +RMSE +[ 0.21373305 0.17013489 0.21176584 0.04080147] +mean bias +[ 0.20622114 0.16464733 0.20408995 0.04068523] +median bias +[ 0.19022777 0.15274254 0.1879751 0.03969161] +median bias percent +[ Inf Inf Inf Inf] +median absolute error +[ 0.19022777 0.15274254 0.1879751 0.03969161] +positive error fraction +[ 1. 1. 1. 1.] + +MC of bse versus std +fractions of iterations with nans 0.0 +RMSE +[ 0.05697861 0.0435968 0.05757744 0.00314984] +mean bias +[-0.00958654 -0.00797153 -0.01109498 -0.00067079] +median bias +[-0.02557991 -0.01987633 -0.02720983 -0.00166441] +median bias percent +[-11.85310581 -11.5145739 -12.64485773 -4.02458691] +median absolute error +[ 0.03635737 0.0292344 0.03793175 0.00238808] +positive error fraction +[ 0.31 0.29 0.3 0.28] + +Results for Monte Carlo +true +[-0.55 -0.1 0.3 0.2 ] +nsample = 200 sigma = 1.0 +elapsed time for Monte Carlo 3.59400010109 + +MC of rho versus true +fractions of iterations with nans 0.0 +RMSE +[ 0.22232599 0.17545665 0.21586404 0.04731953] +mean bias +[-0.02145001 0.02789994 -0.01930862 0.00418517] +median bias +[ 0.00685442 0.01411879 0.01616525 0.01340016] +median bias percent +[ -1.24625802 -14.11879188 5.38841584 6.70007966] +median absolute error +[ 0.1010917 0.09510124 0.10884815 0.02735024] +positive error fraction +[ 0.51 0.54 0.51 0.64] + +MC of bse versus zero +fractions of iterations with nans 0.0 +RMSE +[ 0.19090008 0.15218083 0.18870297 0.04077881] +mean bias +[ 0.1863764 0.14894541 0.18407595 0.04063975] +median bias +[ 0.17861243 0.14324048 0.17665358 0.03948681] +median bias percent +[ Inf Inf Inf Inf] +median absolute error +[ 0.17861243 0.14324048 0.17665358 0.03948681] +positive error fraction +[ 1. 1. 1. 1.] + +MC of bse versus std +fractions of iterations with nans 0.0 +RMSE +[ 0.05408839 0.03954405 0.0517791 0.00731427] +mean bias +[-0.03491242 -0.02427881 -0.03092279 -0.00649433] +median bias +[-0.04267639 -0.02998373 -0.03834516 -0.00764727] +median bias percent +[-19.2853791 -17.30920408 -17.83506488 -16.22449948] +median absolute error +[ 0.04673299 0.03434164 0.0433639 0.00769409] +positive error fraction +[ 0.13 0.14 0.16 0.07] + + diff --git a/statsmodels/sandbox/mle.py b/statsmodels/sandbox/mle.py new file mode 100644 index 0000000..5af4d5c --- /dev/null +++ b/statsmodels/sandbox/mle.py @@ -0,0 +1,64 @@ +'''What's the origin of this file? It is not ours. +Does not run because of missing mtx files, now included + +changes: JP corrections to imports so it runs, comment out print +''' +from __future__ import print_function +import numpy as np +from numpy import dot, outer, random +from scipy import io, linalg, optimize +from scipy.sparse import eye as speye +import matplotlib.pyplot as plt + +def R(v): + rq = dot(v.T,A*v)/dot(v.T,B*v) + res = (A*v-rq*B*v)/linalg.norm(B*v) + data.append(linalg.norm(res)) + return rq + +def Rp(v): + """ Gradient """ + result = 2*(A*v-R(v)*B*v)/dot(v.T,B*v) + #print "Rp: ", result + return result + +def Rpp(v): + """ Hessian """ + result = 2*(A-R(v)*B-outer(B*v,Rp(v))-outer(Rp(v),B*v))/dot(v.T,B*v) + #print "Rpp: ", result + return result + + +A = io.mmread('nos4.mtx') # clustered eigenvalues +#B = io.mmread('bcsstm02.mtx.gz') +#A = io.mmread('bcsstk06.mtx.gz') # clustered eigenvalues +#B = io.mmread('bcsstm06.mtx.gz') +n = A.shape[0] +B = speye(n,n) +random.seed(1) +v_0=random.rand(n) + +print("try fmin_bfgs") +full_output = 1 +data=[] +v,fopt, gopt, Hopt, func_calls, grad_calls, warnflag, allvecs = \ + optimize.fmin_bfgs(R,v_0,fprime=Rp,full_output=full_output,retall=1) +if warnflag == 0: + plt.semilogy(np.arange(0,len(data)),data) + print('Rayleigh quotient BFGS',R(v)) + + +print("fmin_bfgs OK") + +print("try fmin_ncg") + +# +# WARNING: the program may hangs if fmin_ncg is used +# +data=[] +v,fopt, fcalls, gcalls, hcalls, warnflag, allvecs = \ + optimize.fmin_ncg(R,v_0,fprime=Rp,fhess=Rpp,full_output=full_output,retall=1) +if warnflag==0: + plt.figure() + plt.semilogy(np.arange(0,len(data)),data) + print('Rayleigh quotient NCG',R(v)) diff --git a/statsmodels/sandbox/mlogitmath.lyx b/statsmodels/sandbox/mlogitmath.lyx new file mode 100644 index 0000000..198b7ee --- /dev/null +++ b/statsmodels/sandbox/mlogitmath.lyx @@ -0,0 +1,219 @@ +#LyX 1.6.2 created this file. For more info see http://www.lyx.org/ +\lyxformat 345 +\begin_document +\begin_header +\textclass article +\use_default_options true +\language english +\inputencoding auto +\font_roman default +\font_sans default +\font_typewriter default +\font_default_family default +\font_sc false +\font_osf false +\font_sf_scale 100 +\font_tt_scale 100 + +\graphics default +\paperfontsize default +\use_hyperref false +\papersize default +\use_geometry false +\use_amsmath 1 +\use_esint 1 +\cite_engine basic +\use_bibtopic false +\paperorientation portrait +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation indent +\defskip medskip +\quotes_language english +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\author "" +\author "" +\end_header + +\begin_body + +\begin_layout Standard +Notes on mlogit. +\end_layout + +\begin_layout Standard +Assume that +\begin_inset Formula $J=3$ +\end_inset + +, so that there are +\begin_inset Formula $2$ +\end_inset + + vectors of parameters for +\begin_inset Formula $J-1$ +\end_inset + +. + For now the parameters are passed around as +\begin_inset Formula \[ +\left[\beta_{1}^{\prime}\beta_{2}^{\prime}\right]\] + +\end_inset + + +\end_layout + +\begin_layout Standard +So if +\begin_inset Formula $K=3$ +\end_inset + + (including the constant), then the matrix of parameters is +\begin_inset Formula \[ +\left[\begin{array}{cc} +b_{10} & b_{20}\\ +b_{11} & b_{21}\\ +b_{12} & b_{22}\end{array}\right]^{\prime}\] + +\end_inset + + +\end_layout + +\begin_layout Standard +(changed to rows and added prime above, so this all changes and the score + is also just transposed and flattend along the zero axis.) This is flattened + along the zero axis for the sake of the solvers. + So that it is passed internally as +\begin_inset Formula \[ +\left[\begin{array}{cccccc} +b_{10} & b_{20} & b_{11} & b_{21} & b_{12} & b_{22}\end{array}\right]\] + +\end_inset + +Now the matrix of score vectors is +\begin_inset Formula \[ +\left[\begin{array}{cc} +\frac{\partial\ln L}{\partial b_{10}} & \frac{\partial\ln L}{\partial b_{20}}\\ +\frac{\partial\ln L}{\partial b_{11}} & \frac{\partial\ln L}{\partial b_{21}}\\ +\frac{\partial\ln L}{\partial b_{12}} & \frac{\partial\ln L}{\partial b_{22}}\end{array}\right]\] + +\end_inset + + +\end_layout + +\begin_layout Standard +In Dhrymes notation, this would be column vectors +\begin_inset Formula $\left(\partial\ln L/\partial\beta_{j}\right)^{\prime}\text{ for }j=1,2$ +\end_inset + + in our example. + So, our Jacobian is actually transposed vis-a-vis the more traditional + notation. + So that the solvers can handle this, though, it gets flattened but the + score gets flattened along the first axis to make things easier, which + is going to make things tricky. + Now, in traditional notation, the Hessian would be +\begin_inset Formula \[ +\frac{\partial^{2}\ln L}{\partial\beta_{j}\partial\beta_{j}}=\frac{\partial}{\partial\beta_{j}}\vec{\left[\left(\frac{\partial\ln L}{\partial\beta_{j}}\right)\right]}\] + +\end_inset + + +\end_layout + +\begin_layout Standard +where +\begin_inset Formula $\vec{}$ +\end_inset + + denotes a vectorized matrix, i.e., for a +\begin_inset Formula $n\times m$ +\end_inset + + matrix +\begin_inset Formula $X$ +\end_inset + +, +\begin_inset Formula $\vec{X}=\left(x_{\cdot1}^{\prime},x_{\cdot2}^{\prime},...,x_{\cdot m}^{\prime}\right)^{\prime}$ +\end_inset + + such that +\begin_inset Formula $x_{\cdot1}$ +\end_inset + + is the first +\begin_inset Formula $n$ +\end_inset + + elements of column 1 of +\begin_inset Formula $X$ +\end_inset + +. + This matrix is +\begin_inset Formula $mn\times n$ +\end_inset + +. + In our case +\begin_inset Formula $\ln L$ +\end_inset + + is a scalar so +\begin_inset Formula $m=1$ +\end_inset + +, so each second derivative is +\begin_inset Formula $n\times n$ +\end_inset + + and +\begin_inset Formula $n=K=3$ +\end_inset + + in our example. + Given our score +\begin_inset Quotes eld +\end_inset + +matrix, +\begin_inset Quotes erd +\end_inset + + our Hessian will look like +\begin_inset Formula \[ +H=\left[\begin{array}{cc} +\frac{\partial\ln L}{\partial\beta_{1}\partial\beta_{1}} & \frac{\partial\ln L}{\partial\beta_{1}\partial\beta_{2}}\\ +\frac{\partial\ln L}{\partial\beta_{2}\partial\beta_{1}} & \frac{\partial\ln L}{\partial\beta_{2}\partial\beta_{2}}\end{array}\right]\] + +\end_inset + + +\begin_inset Formula \[ +H=\left[\begin{array}{cccccc} +\frac{\partial^{2}\ln L}{\partial b_{10}\partial b_{10}} & \frac{\partial^{2}\ln L}{\partial b_{10}\partial b_{11}} & \frac{\partial^{2}\ln L}{\partial b_{10}\partial b_{12}} & \frac{\partial^{2}\ln L}{\partial b_{10}\partial b_{20}} & \frac{\partial^{2}\ln L}{\partial b_{10}\partial b_{21}} & \frac{\partial^{2}\ln L}{\partial b_{10}\partial b_{22}}\\ +\frac{\partial\ln L}{\partial b_{11}\partial b_{10}} & \frac{\partial\ln L}{\partial b_{11}\partial b_{11}} & \frac{\partial\ln L}{\partial b_{11}\partial b_{12}} & \frac{\partial\ln L}{\partial b_{11}\partial b_{20}} & \frac{\partial\ln L}{\partial b_{11}\partial b_{21}} & \frac{\partial\ln L}{\partial b_{11}\partial b_{22}}\\ +\frac{\partial\ln L}{\partial b_{12}\partial b_{10}} & \frac{\partial\ln L}{\partial b_{12}\partial b_{11}} & \frac{\partial\ln L}{\partial b_{12}\partial b_{12}} & \frac{\partial\ln L}{\partial b_{12}\partial b_{20}} & \frac{\partial\ln L}{\partial b_{12}\partial b_{21}} & \frac{\partial\ln L}{\partial b_{12}\partial b_{22}}\\ +\frac{\partial^{2}\ln L}{\partial b_{20}\partial b_{10}} & \frac{\partial^{2}\ln L}{\partial b_{20}\partial b_{11}} & \frac{\partial^{2}\ln L}{\partial b_{20}\partial b_{12}} & \frac{\partial^{2}\ln L}{\partial b_{20}\partial b_{20}} & \frac{\partial^{2}\ln L}{\partial b_{20}\partial b_{21}} & \frac{\partial^{2}\ln L}{\partial b_{20}\partial b_{22}}\\ +\frac{\partial\ln L}{\partial b_{21}\partial b_{10}} & \frac{\partial\ln L}{\partial b_{21}\partial b_{11}} & \frac{\partial\ln L}{\partial b_{21}\partial b_{12}} & \frac{\partial\ln L}{\partial b_{21}\partial b_{20}} & \frac{\partial\ln L}{\partial b_{21}\partial b_{21}} & \frac{\partial\ln L}{\partial b_{21}\partial b_{22}}\\ +\frac{\partial\ln L}{\partial b_{22}\partial b_{10}} & \frac{\partial\ln L}{\partial b_{22}\partial b_{11}} & \frac{\partial\ln L}{\partial b_{22}\partial b_{12}} & \frac{\partial\ln L}{\partial b_{22}\partial b_{20}} & \frac{\partial\ln L}{\partial b_{22}\partial b_{21}} & \frac{\partial\ln L}{\partial b_{22}\partial b_{22}}\end{array}\right]\] + +\end_inset + + +\end_layout + +\begin_layout Standard +But since our Jacobian is a row vector that alternate +\end_layout + +\end_body +\end_document diff --git a/statsmodels/sandbox/multilinear.py b/statsmodels/sandbox/multilinear.py new file mode 100644 index 0000000..8287cef --- /dev/null +++ b/statsmodels/sandbox/multilinear.py @@ -0,0 +1,325 @@ +"""Analyze a set of multiple variables with a linear models + +multiOLS: + take a model and test it on a series of variables defined over a + pandas dataset, returning a summary for each variable + +multigroup: + take a boolean vector and the definition of several groups of variables + and test if the group has a fraction of true values higher than the + rest. It allows to test if the variables in the group are significantly + more significant than outside the group. +""" + +from statsmodels.compat.python import iteritems, string_types +from patsy import dmatrix +import pandas as pd +from statsmodels.api import OLS +from statsmodels.api import stats +import numpy as np +import logging + +def _model2dataframe(model_endog, model_exog, model_type=OLS, **kwargs): + """return a series containing the summary of a linear model + + All the exceding parameters will be redirected to the linear model + """ + # create the linear model and perform the fit + model_result = model_type(model_endog, model_exog, **kwargs).fit() + # keeps track of some global statistics + statistics = pd.Series({'r2': model_result.rsquared, + 'adj_r2': model_result.rsquared_adj}) + # put them togher with the result for each term + result_df = pd.DataFrame({'params': model_result.params, + 'pvals': model_result.pvalues, + 'std': model_result.bse, + 'statistics': statistics}) + # add the complexive results for f-value and the total p-value + fisher_df = pd.DataFrame({'params': {'_f_test': model_result.fvalue}, + 'pvals': {'_f_test': model_result.f_pvalue}}) + # merge them and unstack to obtain a hierarchically indexed series + res_series = pd.concat([result_df, fisher_df]).unstack() + return res_series.dropna() + + +def multiOLS(model, dataframe, column_list=None, method='fdr_bh', + alpha=0.05, subset=None, model_type=OLS, **kwargs): + """apply a linear model to several endogenous variables on a dataframe + + Take a linear model definition via formula and a dataframe that will be + the environment of the model, and apply the linear model to a subset + (or all) of the columns of the dataframe. It will return a dataframe + with part of the information from the linear model summary. + + Parameters + ---------- + model : string + formula description of the model + dataframe : pandas.dataframe + dataframe where the model will be evaluated + column_list : list of strings, optional + Names of the columns to analyze with the model. + If None (Default) it will perform the function on all the + eligible columns (numerical type and not in the model definition) + model_type : model class, optional + The type of model to be used. The default is the linear model. + Can be any linear model (OLS, WLS, GLS, etc..) + method: string, optional + the method used to perform the pvalue correction for multiple testing. + default is the Benjamini/Hochberg, other available methods are: + + `bonferroni` : one-step correction + `sidak` : on-step correction + `holm-sidak` : + `holm` : + `simes-hochberg` : + `hommel` : + `fdr_bh` : Benjamini/Hochberg + `fdr_by` : Benjamini/Yekutieli + + alpha: float, optional + the significance level used for the pvalue correction (default 0.05) + subset: boolean array + the selected rows to be used in the regression + + all the other parameters will be directed to the model creation. + + Returns + ------- + summary : pandas.DataFrame + a dataframe containing an extract from the summary of the model + obtained for each columns. It will give the model complexive f test + result and p-value, and the regression value and standard deviarion + for each of the regressors. The Dataframe has a hierachical column + structure, divided as: + + - params: contains the parameters resulting from the models. Has + an additional column named _f_test containing the result of the + F test. + - pval: the pvalue results of the models. Has the _f_test column + for the significativity of the whole test. + - adj_pval: the corrected pvalues via the multitest function. + - std: uncertainties of the model parameters + - statistics: contains the r squared statistics and the adjusted + r squared. + + Notes + ----- + The main application of this function is on system biology to perform + a linear model testing of a lot of different parameters, like the + different genetic expression of several genes. + + See Also + -------- + statsmodels.stats.multitest + contains several functions to perform the multiple p-value correction + + Examples + -------- + Using the longley data as dataframe example + + >>> import statsmodels.api as sm + >>> data = sm.datasets.longley.load_pandas() + >>> df = data.exog + >>> df['TOTEMP'] = data.endog + + This will perform the specified linear model on all the + other columns of the dataframe + >>> multiOLS('GNP + 1', df) + + This select only a certain subset of the columns + >>> multiOLS('GNP + 0', df, ['GNPDEFL', 'TOTEMP', 'POP']) + + It is possible to specify a trasformation also on the target column, + conforming to the patsy formula specification + >>> multiOLS('GNP + 0', df, ['I(GNPDEFL**2)', 'center(TOTEMP)']) + + It is possible to specify the subset of the dataframe + on which perform the analysis + >> multiOLS('GNP + 1', df, subset=df.GNPDEFL > 90) + + Even a single column name can be given without enclosing it in a list + >>> multiOLS('GNP + 0', df, 'GNPDEFL') + """ + # data normalization + # if None take all the numerical columns that aren't present in the model + # it's not waterproof but is a good enough criterion for everyday use + if column_list is None: + column_list = [name for name in dataframe.columns + if dataframe[name].dtype != object and name not in model] + # if it's a single string transform it in a single element list + if isinstance(column_list, string_types): + column_list = [column_list] + if subset is not None: + dataframe = dataframe.loc[subset] + # perform each model and retrieve the statistics + col_results = {} + # as the model will use always the same endogenous variables + # we can create them once and reuse + model_exog = dmatrix(model, data=dataframe, return_type="dataframe") + for col_name in column_list: + # it will try to interpret the column name as a valid dataframe + # index as it can be several times faster. If it fails it + # interpret it as a patsy formula (for example for centering) + try: + model_endog = dataframe[col_name] + except KeyError: + model_endog = dmatrix(col_name + ' + 0', data=dataframe) + # retrieve the result and store them + res = _model2dataframe(model_endog, model_exog, model_type, **kwargs) + col_results[col_name] = res + # mangle them togheter and sort by complexive p-value + summary = pd.DataFrame(col_results) + # order by the p-value: the most useful model first! + summary = summary.T.sort_values([('pvals', '_f_test')]) + summary.index.name = 'endogenous vars' + # implementing the pvalue correction method + smt = stats.multipletests + for (key1, key2) in summary: + if key1 != 'pvals': + continue + p_values = summary[key1, key2] + corrected = smt(p_values, method=method, alpha=alpha)[1] + # extend the dataframe of results with the column + # of the corrected p_values + summary['adj_' + key1, key2] = corrected + return summary + + +def _test_group(pvalues, group_name, group, exact=True): + """test if the objects in the group are different from the general set. + + The test is performed on the pvalues set (ad a pandas series) over + the group specified via a fisher exact test. + """ + from scipy.stats import fisher_exact, chi2_contingency + + totals = 1.0 * len(pvalues) + total_significant = 1.0 * np.sum(pvalues) + cross_index = [c for c in group if c in pvalues.index] + missing = [c for c in group if c not in pvalues.index] + if missing: + s = ('the test is not well defined if the group ' + 'has elements not presents in the significativity ' + 'array. group name: {}, missing elements: {}') + logging.warning(s.format(group_name, missing)) + # how many are significant and not in the group + group_total = 1.0 * len(cross_index) + group_sign = 1.0 * len([c for c in cross_index if pvalues[c]]) + group_nonsign = 1.0 * (group_total - group_sign) + # how many are significant and not outside the group + extern_sign = 1.0 * (total_significant - group_sign) + extern_nonsign = 1.0 * (totals - total_significant - group_nonsign) + # make the fisher test or the chi squared + test = fisher_exact if exact else chi2_contingency + table = [[extern_nonsign, extern_sign], [group_nonsign, group_sign]] + pvalue = test(np.array(table))[1] + # is the group more represented or less? + part = group_sign, group_nonsign, extern_sign, extern_nonsign + #increase = (group_sign / group_total) > (total_significant / totals) + increase = np.log((totals * group_sign) + / (total_significant * group_total)) + return pvalue, increase, part + + +def multigroup(pvals, groups, exact=True, keep_all=True, alpha=0.05): + """Test if the given groups are different from the total partition. + + Given a boolean array test if each group has a proportion of positives + different than the complexive proportion. + The test can be done as an exact Fisher test or approximated as a + Chi squared test for more speed. + + Parameters + ---------- + pvals: pandas series of boolean + the significativity of the variables under analysis + groups: dict of list + the name of each category of variables under exam. + each one is a list of the variables included + exact: boolean, optional + If True (default) use the fisher exact test, otherwise + use the chi squared test for contingencies tables. + For high number of elements in the array the fisher test can + be significantly slower than the chi squared. + keep_all: boolean, optional + if False it will drop those groups where the fraction + of positive is below the expected result. If True (default) + it will keep all the significant results. + alpha: float, optional + the significativity level for the pvalue correction + on the whole set of groups (not inside the groups themselves). + + Returns + ------- + result_df: pandas dataframe + for each group returns: + + pvals - the fisher p value of the test + adj_pvals - the adjusted pvals + increase - the log of the odd ratio between the + internal significant ratio versus the external one + _in_sign - significative elements inside the group + _in_non - non significative elements inside the group + _out_sign - significative elements outside the group + _out_non - non significative elements outside the group + + Notes + ----- + This test allow to see if a category of variables is generally better + suited to be described for the model. For example to see if a predictor + gives more information on demographic or economical parameters, + by creating two groups containing the endogenous variables of each + category. + + This function is conceived for medical dataset with a lot of variables + that can be easily grouped into functional groups. This is because + The significativity of a group require a rather large number of + composing elements. + + Examples + -------- + A toy example on a real dataset, the Guerry dataset from R + >>> url = "https://raw.githubusercontent.com/vincentarelbundock/" + >>> url = url + "Rdatasets/csv/HistData/Guerry.csv" + >>> df = pd.read_csv(url, index_col='dept') + + evaluate the relationship between the variuos paramenters whith the Wealth + >>> pvals = multiOLS('Wealth', df)['adj_pvals', '_f_test'] + + define the groups + >>> groups = {} + >>> groups['crime'] = ['Crime_prop', 'Infanticide', + ... 'Crime_parents', 'Desertion', 'Crime_pers'] + >>> groups['religion'] = ['Donation_clergy', 'Clergy', 'Donations'] + >>> groups['wealth'] = ['Commerce', 'Lottery', 'Instruction', 'Literacy'] + + do the analysis of the significativity + >>> multigroup(pvals < 0.05, groups) + """ + pvals = pd.Series(pvals) + if not (set(pvals.unique()) <= set([False, True])): + raise ValueError("the series should be binary") + if hasattr(pvals.index, 'is_unique') and not pvals.index.is_unique: + raise ValueError("series with duplicated index is not accepted") + results = {'pvals': {}, + 'increase': {}, + '_in_sign': {}, + '_in_non': {}, + '_out_sign': {}, + '_out_non': {}} + for group_name, group_list in iteritems(groups): + res = _test_group(pvals, group_name, group_list, exact) + results['pvals'][group_name] = res[0] + results['increase'][group_name] = res[1] + results['_in_sign'][group_name] = res[2][0] + results['_in_non'][group_name] = res[2][1] + results['_out_sign'][group_name] = res[2][2] + results['_out_non'][group_name] = res[2][3] + result_df = pd.DataFrame(results).sort_values('pvals') + if not keep_all: + result_df = result_df[result_df.increase] + smt = stats.multipletests + corrected = smt(result_df['pvals'], method='fdr_bh', alpha=alpha)[1] + result_df['adj_pvals'] = corrected + return result_df diff --git a/statsmodels/sandbox/nonparametric/__init__.py b/statsmodels/sandbox/nonparametric/__init__.py new file mode 100644 index 0000000..40a96af --- /dev/null +++ b/statsmodels/sandbox/nonparametric/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/statsmodels/sandbox/nonparametric/densityorthopoly.py b/statsmodels/sandbox/nonparametric/densityorthopoly.py new file mode 100644 index 0000000..47e08bd --- /dev/null +++ b/statsmodels/sandbox/nonparametric/densityorthopoly.py @@ -0,0 +1,563 @@ +# -*- coding: utf-8 -*- +# some cut and paste characters are not ASCII +'''density estimation based on orthogonal polynomials + + +Author: Josef Perktold +Created: 2011-05017 +License: BSD + +2 versions work: based on Fourier, FPoly, and chebychev T, ChebyTPoly +also hermite polynomials, HPoly, works +other versions need normalization + + +TODO: + +* check fourier case again: base is orthonormal, + but needs offsetfact = 0 and doesn't integrate to 1, rescaled looks good +* hermite: works but DensityOrthoPoly requires currently finite bounds + I use it with offsettfactor 0.5 in example +* not implemented methods: + - add bonafide density correction + - add transformation to domain of polynomial base - DONE + possible problem: what is the behavior at the boundary, + offsetfact requires more work, check different cases, add as option + moved to polynomial class by default, as attribute +* convert examples to test cases +* need examples with large density on boundary, beta ? +* organize poly classes in separate module, check new numpy.polynomials, + polyvander +* MISE measures, order selection, ... + +enhancements: + * other polynomial bases: especially for open and half open support + * wavelets + * local or piecewise approximations + + +''' +from __future__ import print_function +from statsmodels.compat.python import zip +from scipy import stats, integrate, special + +import numpy as np + + +sqr2 = np.sqrt(2.) + +class FPoly(object): + '''Orthonormal (for weight=1) Fourier Polynomial on [0,1] + + orthonormal polynomial but density needs corfactor that I don't see what + it is analytically + + parameterization on [0,1] from + + Sam Efromovich: Orthogonal series density estimation, + 2010 John Wiley & Sons, Inc. WIREs Comp Stat 2010 2 467-476 + + + ''' + + def __init__(self, order): + self.order = order + self.domain = (0, 1) + self.intdomain = self.domain + + def __call__(self, x): + if self.order == 0: + return np.ones_like(x) + else: + return sqr2 * np.cos(np.pi * self.order * x) + +class F2Poly(object): + '''Orthogonal (for weight=1) Fourier Polynomial on [0,pi] + + is orthogonal but first component doesn't square-integrate to 1 + final result seems to need a correction factor of sqrt(pi) + _corfactor = sqrt(pi) from integrating the density + + Parameterization on [0, pi] from + + Peter Hall, Cross-Validation and the Smoothing of Orthogonal Series Density + Estimators, JOURNAL OF MULTIVARIATE ANALYSIS 21, 189-206 (1987) + + ''' + + def __init__(self, order): + self.order = order + self.domain = (0, np.pi) + self.intdomain = self.domain + self.offsetfactor = 0 + + def __call__(self, x): + if self.order == 0: + return np.ones_like(x) / np.sqrt(np.pi) + else: + return sqr2 * np.cos(self.order * x) / np.sqrt(np.pi) + +class ChebyTPoly(object): + '''Orthonormal (for weight=1) Chebychev Polynomial on (-1,1) + + + Notes + ----- + integration requires to stay away from boundary, offsetfactor > 0 + maybe this implies that we cannot use it for densities that are > 0 at + boundary ??? + + or maybe there is a mistake close to the boundary, sometimes integration works. + + ''' + + def __init__(self, order): + self.order = order + from scipy.special import chebyt + self.poly = chebyt(order) + self.domain = (-1, 1) + self.intdomain = (-1+1e-6, 1-1e-6) + #not sure if I need this, in integration nans are possible on the boundary + self.offsetfactor = 0.01 #required for integration + + + def __call__(self, x): + if self.order == 0: + return np.ones_like(x) / (1-x**2)**(1/4.) /np.sqrt(np.pi) + + else: + return self.poly(x) / (1-x**2)**(1/4.) /np.sqrt(np.pi) *np.sqrt(2) + + +logpi2 = np.log(np.pi)/2 + +class HPoly(object): + '''Orthonormal (for weight=1) Hermite Polynomial, uses finite bounds + + for current use with DensityOrthoPoly domain is defined as [-6,6] + + ''' + def __init__(self, order): + self.order = order + from scipy.special import hermite + self.poly = hermite(order) + self.domain = (-6, +6) + self.offsetfactor = 0.5 # note this is + + def __call__(self, x): + k = self.order + + lnfact = -(1./2)*(k*np.log(2.) + special.gammaln(k+1) + logpi2) - x*x/2 + fact = np.exp(lnfact) + + return self.poly(x) * fact + +def polyvander(x, polybase, order=5): + polyarr = np.column_stack([polybase(i)(x) for i in range(order)]) + return polyarr + +def inner_cont(polys, lower, upper, weight=None): + '''inner product of continuous function (with weight=1) + + Parameters + ---------- + polys : list of callables + polynomial instances + lower : float + lower integration limit + upper : float + upper integration limit + weight : callable or None + weighting function + + Returns + ------- + innp : ndarray + symmetric 2d square array with innerproduct of all function pairs + err : ndarray + numerical error estimate from scipy.integrate.quad, same dimension as innp + + Examples + -------- + >>> from scipy.special import chebyt + >>> polys = [chebyt(i) for i in range(4)] + >>> r, e = inner_cont(polys, -1, 1) + >>> r + array([[ 2. , 0. , -0.66666667, 0. ], + [ 0. , 0.66666667, 0. , -0.4 ], + [-0.66666667, 0. , 0.93333333, 0. ], + [ 0. , -0.4 , 0. , 0.97142857]]) + + ''' + n_polys = len(polys) + innerprod = np.empty((n_polys, n_polys)) + innerprod.fill(np.nan) + interr = np.zeros((n_polys, n_polys)) + + for i in range(n_polys): + for j in range(i+1): + p1 = polys[i] + p2 = polys[j] + if weight is not None: + innp, err = integrate.quad(lambda x: p1(x)*p2(x)*weight(x), + lower, upper) + else: + innp, err = integrate.quad(lambda x: p1(x)*p2(x), lower, upper) + innerprod[i,j] = innp + interr[i,j] = err + if not i == j: + innerprod[j,i] = innp + interr[j,i] = err + + return innerprod, interr + + +def is_orthonormal_cont(polys, lower, upper, rtol=0, atol=1e-08): + '''check whether functions are orthonormal + + Parameters + ---------- + polys : list of polynomials or function + + Returns + ------- + is_orthonormal : bool + is False if the innerproducts are not close to 0 or 1 + + Notes + ----- + this stops as soon as the first deviation from orthonormality is found. + + Examples + -------- + >>> from scipy.special import chebyt + >>> polys = [chebyt(i) for i in range(4)] + >>> r, e = inner_cont(polys, -1, 1) + >>> r + array([[ 2. , 0. , -0.66666667, 0. ], + [ 0. , 0.66666667, 0. , -0.4 ], + [-0.66666667, 0. , 0.93333333, 0. ], + [ 0. , -0.4 , 0. , 0.97142857]]) + >>> is_orthonormal_cont(polys, -1, 1, atol=1e-6) + False + + >>> polys = [ChebyTPoly(i) for i in range(4)] + >>> r, e = inner_cont(polys, -1, 1) + >>> r + array([[ 1.00000000e+00, 0.00000000e+00, -9.31270888e-14, + 0.00000000e+00], + [ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00, + -9.47850712e-15], + [ -9.31270888e-14, 0.00000000e+00, 1.00000000e+00, + 0.00000000e+00], + [ 0.00000000e+00, -9.47850712e-15, 0.00000000e+00, + 1.00000000e+00]]) + >>> is_orthonormal_cont(polys, -1, 1, atol=1e-6) + True + + ''' + for i in range(len(polys)): + for j in range(i+1): + p1 = polys[i] + p2 = polys[j] + innerprod = integrate.quad(lambda x: p1(x)*p2(x), lower, upper)[0] + #print i,j, innerprod + if not np.allclose(innerprod, i==j, rtol=rtol, atol=atol): + return False + return True + + + +#new versions + + +class DensityOrthoPoly(object): + '''Univariate density estimation by orthonormal series expansion + + + Uses an orthonormal polynomial basis to approximate a univariate density. + + + currently all arguments can be given to fit, I might change it to requiring + arguments in __init__ instead. + ''' + + def __init__(self, polybase=None, order=5): + if polybase is not None: + self.polybase = polybase + self.polys = polys = [polybase(i) for i in range(order)] + #try: + #self.offsetfac = 0.05 + #self.offsetfac = polys[0].offsetfactor #polys maybe not defined yet + self._corfactor = 1 + self._corshift = 0 + + + def fit(self, x, polybase=None, order=5, limits=None): + '''estimate the orthogonal polynomial approximation to the density + + ''' + if polybase is None: + polys = self.polys[:order] + else: + self.polybase = polybase + self.polys = polys = [polybase(i) for i in range(order)] + + #move to init ? + if not hasattr(self, 'offsetfac'): + self.offsetfac = polys[0].offsetfactor + + + xmin, xmax = x.min(), x.max() + if limits is None: + self.offset = offset = (xmax - xmin) * self.offsetfac + limits = self.limits = (xmin - offset, xmax + offset) + + interval_length = limits[1] - limits[0] + xinterval = xmax - xmin + # need to cover (half-)open intervalls + self.shrink = 1. / interval_length #xinterval/interval_length + offset = (interval_length - xinterval ) / 2. + self.shift = xmin - offset + + self.x = x = self._transform(x) + + coeffs = [(p(x)).mean() for p in polys] + self.coeffs = coeffs + self.polys = polys + self._verify() #verify that it is a proper density + + return self #coeffs, polys + + def evaluate(self, xeval, order=None): + xeval = self._transform(xeval) + if order is None: + order = len(self.polys) + res = sum(c*p(xeval) for c, p in list(zip(self.coeffs, self.polys))[:order]) + res = self._correction(res) + return res + + def __call__(self, xeval): + '''alias for evaluate, except no order argument''' + return self.evaluate(xeval) + + def _verify(self): + '''check for bona fide density correction + + currently only checks that density integrates to 1 + +` non-negativity - NotImplementedYet + ''' + #watch out for circular/recursive usage + + #evaluate uses domain of data, we stay offset away from bounds + intdomain = self.limits #self.polys[0].intdomain + self._corfactor = 1./integrate.quad(self.evaluate, *intdomain)[0] + #self._corshift = 0 + #self._corfactor + return self._corfactor + + + + def _correction(self, x): + '''bona fide density correction + + affine shift of density to make it into a proper density + + ''' + if self._corfactor != 1: + x *= self._corfactor + + if self._corshift != 0: + x += self._corshift + + return x + + def _transform(self, x): # limits=None): + '''transform observation to the domain of the density + + + uses shrink and shift attribute which are set in fit to stay + + + ''' + + #use domain from first instance + #class doesn't have domain self.polybase.domain[0] AttributeError + domain = self.polys[0].domain + + ilen = (domain[1] - domain[0]) + shift = self.shift - domain[0]/self.shrink/ilen + shrink = self.shrink * ilen + + return (x - shift) * shrink + + +#old version as a simple function +def density_orthopoly(x, polybase, order=5, xeval=None): + #polybase = legendre #chebyt #hermitenorm# + #polybase = chebyt + #polybase = FPoly + #polybase = ChtPoly + #polybase = hermite + #polybase = HPoly + + if xeval is None: + xeval = np.linspace(x.min(),x.max(),50) + + #polys = [legendre(i) for i in range(order)] + polys = [polybase(i) for i in range(order)] + #coeffs = [(p(x)*(1-x**2)**(-1/2.)).mean() for p in polys] + #coeffs = [(p(x)*np.exp(-x*x)).mean() for p in polys] + coeffs = [(p(x)).mean() for p in polys] + res = sum(c*p(xeval) for c, p in zip(coeffs, polys)) + #res *= (1-xeval**2)**(-1/2.) + #res *= np.exp(-xeval**2./2) + return res, xeval, coeffs, polys + + + +if __name__ == '__main__': + + examples = ['chebyt', 'fourier', 'hermite']#[2] + + nobs = 10000 + + import matplotlib.pyplot as plt + from statsmodels.distributions.mixture_rvs import ( + mixture_rvs, MixtureDistribution) + + #np.random.seed(12345) +## obs_dist = mixture_rvs([1/3.,2/3.], size=nobs, dist=[stats.norm, stats.norm], +## kwargs = (dict(loc=-1,scale=.5),dict(loc=1,scale=.75))) + mix_kwds = (dict(loc=-0.5,scale=.5),dict(loc=1,scale=.2)) + obs_dist = mixture_rvs([1/3.,2/3.], size=nobs, dist=[stats.norm, stats.norm], + kwargs=mix_kwds) + mix = MixtureDistribution() + + #obs_dist = np.random.randn(nobs)/4. #np.sqrt(2) + + + if "chebyt_" in examples: # needed for Cheby example below + #obs_dist = np.clip(obs_dist, -2, 2)/2.01 + #chebyt [0,1] + obs_dist = obs_dist[(obs_dist>-2) & (obs_dist<2)]/2.0 #/4. + 2/4.0 + #fourier [0,1] + #obs_dist = obs_dist[(obs_dist>-2) & (obs_dist<2)]/4. + 2/4.0 + f_hat, grid, coeffs, polys = density_orthopoly(obs_dist, ChebyTPoly, order=20, xeval=None) + #f_hat /= f_hat.sum() * (grid.max() - grid.min())/len(grid) + f_hat0 = f_hat + fint = integrate.trapz(f_hat, grid)# dx=(grid.max() - grid.min())/len(grid)) + #f_hat -= fint/2. + print('f_hat.min()', f_hat.min()) + f_hat = (f_hat - f_hat.min()) #/ f_hat.max() - f_hat.min + fint2 = integrate.trapz(f_hat, grid)# dx=(grid.max() - grid.min())/len(grid)) + print('fint2', fint, fint2) + f_hat /= fint2 + + # note that this uses a *huge* grid by default + #f_hat, grid = kdensityfft(emp_dist, kernel="gauss", bw="scott") + + # check the plot + + doplot = 0 + if doplot: + plt.hist(obs_dist, bins=50, normed=True, color='red') + plt.plot(grid, f_hat, lw=2, color='black') + plt.plot(grid, f_hat0, lw=2, color='g') + plt.show() + + for i,p in enumerate(polys[:5]): + for j,p2 in enumerate(polys[:5]): + print(i,j,integrate.quad(lambda x: p(x)*p2(x), -1,1)[0]) + + for p in polys: + print(integrate.quad(lambda x: p(x)**2, -1,1)) + + + #examples using the new class + + if "chebyt" in examples: + dop = DensityOrthoPoly().fit(obs_dist, ChebyTPoly, order=20) + grid = np.linspace(obs_dist.min(), obs_dist.max()) + xf = dop(grid) + #print('np.max(np.abs(xf - f_hat0))', np.max(np.abs(xf - f_hat0)) + dopint = integrate.quad(dop, *dop.limits)[0] + print('dop F integral', dopint) + mpdf = mix.pdf(grid, [1/3.,2/3.], dist=[stats.norm, stats.norm], + kwargs=mix_kwds) + + doplot = 1 + if doplot: + plt.figure() + plt.hist(obs_dist, bins=50, normed=True, color='red') + plt.plot(grid, xf, lw=2, color='black') + plt.plot(grid, mpdf, lw=2, color='green') + plt.title('using Chebychev polynomials') + #plt.show() + + if "fourier" in examples: + dop = DensityOrthoPoly() + dop.offsetfac = 0.5 + dop = dop.fit(obs_dist, F2Poly, order=30) + grid = np.linspace(obs_dist.min(), obs_dist.max()) + xf = dop(grid) + #print(np.max(np.abs(xf - f_hat0)) + dopint = integrate.quad(dop, *dop.limits)[0] + print('dop F integral', dopint) + mpdf = mix.pdf(grid, [1/3.,2/3.], dist=[stats.norm, stats.norm], + kwargs=mix_kwds) + + doplot = 1 + if doplot: + plt.figure() + plt.hist(obs_dist, bins=50, normed=True, color='red') + plt.title('using Fourier polynomials') + plt.plot(grid, xf, lw=2, color='black') + plt.plot(grid, mpdf, lw=2, color='green') + #plt.show() + + #check orthonormality: + print(np.max(np.abs(inner_cont(dop.polys[:5], 0, 1)[0] -np.eye(5)))) + + if "hermite" in examples: + dop = DensityOrthoPoly() + dop.offsetfac = 0 + dop = dop.fit(obs_dist, HPoly, order=20) + grid = np.linspace(obs_dist.min(), obs_dist.max()) + xf = dop(grid) + #print(np.max(np.abs(xf - f_hat0)) + dopint = integrate.quad(dop, *dop.limits)[0] + print('dop F integral', dopint) + + mpdf = mix.pdf(grid, [1/3.,2/3.], dist=[stats.norm, stats.norm], + kwargs=mix_kwds) + + doplot = 1 + if doplot: + plt.figure() + plt.hist(obs_dist, bins=50, normed=True, color='red') + plt.plot(grid, xf, lw=2, color='black') + plt.plot(grid, mpdf, lw=2, color='green') + plt.title('using Hermite polynomials') + plt.show() + + #check orthonormality: + print(np.max(np.abs(inner_cont(dop.polys[:5], 0, 1)[0] -np.eye(5)))) + + + #check orthonormality + + hpolys = [HPoly(i) for i in range(5)] + inn = inner_cont(hpolys, -6, 6)[0] + print(np.max(np.abs(inn - np.eye(5)))) + print((inn*100000).astype(int)) + + from scipy.special import hermite, chebyt + htpolys = [hermite(i) for i in range(5)] + innt = inner_cont(htpolys, -10, 10)[0] + print((innt*100000).astype(int)) + + polysc = [chebyt(i) for i in range(4)] + r, e = inner_cont(polysc, -1, 1, weight=lambda x: (1-x*x)**(-1/2.)) + print(np.max(np.abs(r - np.diag(np.diag(r))))) diff --git a/statsmodels/sandbox/nonparametric/dgp_examples.py b/statsmodels/sandbox/nonparametric/dgp_examples.py new file mode 100644 index 0000000..9d1e2fe --- /dev/null +++ b/statsmodels/sandbox/nonparametric/dgp_examples.py @@ -0,0 +1,213 @@ +# -*- coding: utf-8 -*- +"""Examples of non-linear functions for non-parametric regression + +Created on Sat Jan 05 20:21:22 2013 + +Author: Josef Perktold +""" + +import numpy as np + +## Functions + +def fg1(x): + '''Fan and Gijbels example function 1 + + ''' + return x + 2 * np.exp(-16 * x**2) + +def fg1eu(x): + '''Eubank similar to Fan and Gijbels example function 1 + + ''' + return x + 0.5 * np.exp(-50 * (x - 0.5)**2) + +def fg2(x): + '''Fan and Gijbels example function 2 + + ''' + return np.sin(2 * x) + 2 * np.exp(-16 * x**2) + +def func1(x): + '''made up example with sin, square + + ''' + return np.sin(x * 5) / x + 2. * x - 1. * x**2 + +## Classes with Data Generating Processes + +doc = {'description': +'''Base Class for Univariate non-linear example + + Does not work on it's own. + needs additional at least self.func +''', +'ref': ''} + +class _UnivariateFunction(object): + #Base Class for Univariate non-linear example. + #Does not work on it's own. needs additionally at least self.func + __doc__ = '''%(description)s + + Parameters + ---------- + nobs : int + number of observations to simulate + x : None or 1d array + If x is given then it is used for the exogenous variable instead of + creating a random sample + distr_x : None or distribution instance + Only used if x is None. The rvs method is used to create a random + sample of the exogenous (explanatory) variable. + distr_noise : None or distribution instance + The rvs method is used to create a random sample of the errors. + + Attributes + ---------- + x : ndarray, 1-D + exogenous or explanatory variable. x is sorted. + y : ndarray, 1-D + endogenous or response variable + y_true : ndarray, 1-D + expected values of endogenous or response variable, i.e. values of y + without noise + func : callable + underlying function (defined by subclass) + + %(ref)s + ''' #% doc + + def __init__(self, nobs=200, x=None, distr_x=None, distr_noise=None): + + if x is None: + if distr_x is None: + x = np.random.normal(loc=0, scale=self.s_x, size=nobs) + else: + x = distr_x.rvs(size=nobs) + x.sort() + + self.x = x + + if distr_noise is None: + noise = np.random.normal(loc=0, scale=self.s_noise, size=nobs) + else: + noise = distr_noise.rvs(size=nobs) + + if hasattr(self, 'het_scale'): + noise *= self.het_scale(self.x) + + #self.func = fg1 + self.y_true = y_true = self.func(x) + self.y = y_true + noise + + + def plot(self, scatter=True, ax=None): + '''plot the mean function and optionally the scatter of the sample + + Parameters + ---------- + scatter: bool + If true, then add scatterpoints of sample to plot. + ax : None or matplotlib axis instance + If None, then a matplotlib.pyplot figure is created, otherwise + the given axis, ax, is used. + + Returns + ------- + fig : matplotlib figure + This is either the created figure instance or the one associated + with ax if ax is given. + + ''' + if ax is None: + import matplotlib.pyplot as plt + fig = plt.figure() + ax = fig.add_subplot(1, 1, 1) + + if scatter: + ax.plot(self.x, self.y, 'o', alpha=0.5) + + xx = np.linspace(self.x.min(), self.x.max(), 100) + ax.plot(xx, self.func(xx), lw=2, color='b', label='dgp mean') + return ax.figure + +doc = {'description': +'''Fan and Gijbels example function 1 + +linear trend plus a hump +''', +'ref': +''' +References +---------- +Fan, Jianqing, and Irene Gijbels. 1992. "Variable Bandwidth and Local +Linear Regression Smoothers." +The Annals of Statistics 20 (4) (December): 2008-2036. doi:10.2307/2242378. + +'''} + +class UnivariateFanGijbels1(_UnivariateFunction): + __doc__ = _UnivariateFunction.__doc__ % doc + + + def __init__(self, nobs=200, x=None, distr_x=None, distr_noise=None): + self.s_x = 1. + self.s_noise = 0.7 + self.func = fg1 + super(self.__class__, self).__init__(nobs=nobs, x=x, + distr_x=distr_x, + distr_noise=distr_noise) + +doc['description'] =\ +'''Fan and Gijbels example function 2 + +sin plus a hump +''' + +class UnivariateFanGijbels2(_UnivariateFunction): + __doc__ = _UnivariateFunction.__doc__ % doc + + def __init__(self, nobs=200, x=None, distr_x=None, distr_noise=None): + self.s_x = 1. + self.s_noise = 0.5 + self.func = fg2 + super(self.__class__, self).__init__(nobs=nobs, x=x, + distr_x=distr_x, + distr_noise=distr_noise) + +class UnivariateFanGijbels1EU(_UnivariateFunction): + ''' + + Eubank p.179f + ''' + + def __init__(self, nobs=50, x=None, distr_x=None, distr_noise=None): + if distr_x is None: + from scipy import stats + distr_x = stats.uniform + self.s_noise = 0.15 + self.func = fg1eu + super(self.__class__, self).__init__(nobs=nobs, x=x, + distr_x=distr_x, + distr_noise=distr_noise) + +class UnivariateFunc1(_UnivariateFunction): + ''' + + made up, with sin and quadratic trend + ''' + + def __init__(self, nobs=200, x=None, distr_x=None, distr_noise=None): + if x is None and distr_x is None: + from scipy import stats + distr_x = stats.uniform(-2, 4) + else: + nobs = x.shape[0] + self.s_noise = 2. + self.func = func1 + super(UnivariateFunc1, self).__init__(nobs=nobs, x=x, + distr_x=distr_x, + distr_noise=distr_noise) + + def het_scale(self, x): + return np.sqrt(np.abs(3+x)) diff --git a/statsmodels/sandbox/nonparametric/kde2.py b/statsmodels/sandbox/nonparametric/kde2.py new file mode 100644 index 0000000..7dab02f --- /dev/null +++ b/statsmodels/sandbox/nonparametric/kde2.py @@ -0,0 +1,114 @@ +# -*- coding: utf-8 -*- +from __future__ import print_function +from statsmodels.compat.python import lzip, zip +import numpy as np +from . import kernels + + +#TODO: should this be a function? +class KDE(object): + """ + Kernel Density Estimator + + Parameters + ---------- + x : array-like + N-dimensional array from which the density is to be estimated + kernel : Kernel Class + Should be a class from * + + """ + #TODO: amend docs for Nd case? + def __init__(self, x, kernel=None): + x = np.asarray(x) + if x.ndim == 1: + x = x[:,None] + + nobs, n_series = x.shape + + if kernel is None: + kernel = kernels.Gaussian() # no meaningful bandwidth yet + + if n_series > 1: + if isinstance( kernel, kernels.CustomKernel ): + kernel = kernels.NdKernel(n_series, kernels = kernel) + + self.kernel = kernel + self.n = n_series #TODO change attribute + self.x = x + + def density(self, x): + return self.kernel.density(self.x, x) + + def __call__(self, x, h="scott"): + return np.array([self.density(xx) for xx in x]) + + def evaluate(self, x, h="silverman"): + density = self.kernel.density + return np.array([density(xx) for xx in x]) + + +if __name__ == "__main__": + from numpy import random + import matplotlib.pyplot as plt + import statsmodels.nonparametric.bandwidths as bw + from statsmodels.sandbox.nonparametric.testdata import kdetest + + # 1-D case + random.seed(142) + x = random.standard_t(4.2, size = 50) + h = bw.bw_silverman(x) + #NOTE: try to do it with convolution + support = np.linspace(-10,10,512) + + + kern = kernels.Gaussian(h = h) + kde = KDE( x, kern) + print(kde.density(1.015469)) + print(0.2034675) + Xs = np.arange(-10,10,0.1) + + fig = plt.figure() + ax = fig.add_subplot(111) + ax.plot(Xs, kde(Xs), "-") + ax.set_ylim(-10, 10) + ax.set_ylim(0,0.4) + + + # 2-D case + x = lzip(kdetest.faithfulData["eruptions"], kdetest.faithfulData["waiting"]) + x = np.array(x) + x = (x - x.mean(0))/x.std(0) + nobs = x.shape[0] + H = kdetest.Hpi + kern = kernels.NdKernel( 2 ) + kde = KDE( x, kern ) + print(kde.density( np.matrix( [1,2 ]))) #.T + plt.figure() + plt.plot(x[:,0], x[:,1], 'o') + + + n_grid = 50 + xsp = np.linspace(x.min(0)[0], x.max(0)[0], n_grid) + ysp = np.linspace(x.min(0)[1], x.max(0)[1], n_grid) +# xsorted = np.sort(x) +# xlow = xsorted[nobs/4] +# xupp = xsorted[3*nobs/4] +# xsp = np.linspace(xlow[0], xupp[0], n_grid) +# ysp = np.linspace(xlow[1], xupp[1], n_grid) + xr, yr = np.meshgrid(xsp, ysp) + kde_vals = np.array([kde.density( np.matrix( [xi, yi ]) ) for xi, yi in + zip(xr.ravel(), yr.ravel())]) + plt.contour(xsp, ysp, kde_vals.reshape(n_grid, n_grid)) + + plt.show() + + + # 5 D case +# random.seed(142) +# mu = [1.0, 4.0, 3.5, -2.4, 0.0] +# sigma = np.matrix( +# [[ 0.6 - 0.1*abs(i-j) if i != j else 1.0 for j in xrange(5)] for i in xrange(5)]) +# x = random.multivariate_normal(mu, sigma, size = 100) +# kern = kernel.Gaussian() +# kde = KernelEstimate( x, kern ) diff --git a/statsmodels/sandbox/nonparametric/kdecovclass.py b/statsmodels/sandbox/nonparametric/kdecovclass.py new file mode 100644 index 0000000..24e0179 --- /dev/null +++ b/statsmodels/sandbox/nonparametric/kdecovclass.py @@ -0,0 +1,164 @@ +'''subclassing kde + +Author: josef pktd +''' + +import numpy as np +from numpy.testing import assert_almost_equal, assert_ +import scipy +from scipy import stats +import matplotlib.pylab as plt + + +class gaussian_kde_set_covariance(stats.gaussian_kde): + ''' + from Anne Archibald in mailinglist: + http://www.nabble.com/Width-of-the-gaussian-in-stats.kde.gaussian_kde---td19558924.html#a19558924 + ''' + def __init__(self, dataset, covariance): + self.covariance = covariance + scipy.stats.gaussian_kde.__init__(self, dataset) + + def _compute_covariance(self): + self.inv_cov = np.linalg.inv(self.covariance) + self._norm_factor = np.sqrt(np.linalg.det(2*np.pi*self.covariance)) * self.n + + +class gaussian_kde_covfact(stats.gaussian_kde): + def __init__(self, dataset, covfact = 'scotts'): + self.covfact = covfact + scipy.stats.gaussian_kde.__init__(self, dataset) + + def _compute_covariance_(self): + '''not used''' + self.inv_cov = np.linalg.inv(self.covariance) + self._norm_factor = np.sqrt(np.linalg.det(2*np.pi*self.covariance)) * self.n + + def covariance_factor(self): + if self.covfact in ['sc', 'scotts']: + return self.scotts_factor() + if self.covfact in ['si', 'silverman']: + return self.silverman_factor() + elif self.covfact: + return float(self.covfact) + else: + raise ValueError('covariance factor has to be scotts, silverman or a number') + + def reset_covfact(self, covfact): + self.covfact = covfact + self.covariance_factor() + self._compute_covariance() + +def plotkde(covfact): + gkde.reset_covfact(covfact) + kdepdf = gkde.evaluate(ind) + plt.figure() + # plot histgram of sample + plt.hist(xn, bins=20, normed=1) + # plot estimated density + plt.plot(ind, kdepdf, label='kde', color="g") + # plot data generating density + plt.plot(ind, alpha * stats.norm.pdf(ind, loc=mlow) + + (1-alpha) * stats.norm.pdf(ind, loc=mhigh), + color="r", label='DGP: normal mix') + plt.title('Kernel Density Estimation - ' + str(gkde.covfact)) + plt.legend() + + +def test_kde_1d(): + np.random.seed(8765678) + n_basesample = 500 + xn = np.random.randn(n_basesample) + xnmean = xn.mean() + xnstd = xn.std(ddof=1) + print(xnmean, xnstd) + + # get kde for original sample + gkde = stats.gaussian_kde(xn) + + # evaluate the density funtion for the kde for some points + xs = np.linspace(-7,7,501) + kdepdf = gkde.evaluate(xs) + normpdf = stats.norm.pdf(xs, loc=xnmean, scale=xnstd) + print('MSE', np.sum((kdepdf - normpdf)**2)) + print('axabserror', np.max(np.abs(kdepdf - normpdf))) + intervall = xs[1] - xs[0] + assert_(np.sum((kdepdf - normpdf)**2)*intervall < 0.01) + #assert_array_almost_equal(kdepdf, normpdf, decimal=2) + print(gkde.integrate_gaussian(0.0, 1.0)) + print(gkde.integrate_box_1d(-np.inf, 0.0)) + print(gkde.integrate_box_1d(0.0, np.inf)) + print(gkde.integrate_box_1d(-np.inf, xnmean)) + print(gkde.integrate_box_1d(xnmean, np.inf)) + + assert_almost_equal(gkde.integrate_box_1d(xnmean, np.inf), 0.5, decimal=1) + assert_almost_equal(gkde.integrate_box_1d(-np.inf, xnmean), 0.5, decimal=1) + assert_almost_equal(gkde.integrate_box(xnmean, np.inf), 0.5, decimal=1) + assert_almost_equal(gkde.integrate_box(-np.inf, xnmean), 0.5, decimal=1) + + assert_almost_equal(gkde.integrate_kde(gkde), + (kdepdf**2).sum()*intervall, decimal=2) + assert_almost_equal(gkde.integrate_gaussian(xnmean, xnstd**2), + (kdepdf*normpdf).sum()*intervall, decimal=2) +## assert_almost_equal(gkde.integrate_gaussian(0.0, 1.0), +## (kdepdf*normpdf).sum()*intervall, decimal=2) + + + + +if __name__ == '__main__': + # generate a sample + n_basesample = 1000 + np.random.seed(8765678) + alpha = 0.6 #weight for (prob of) lower distribution + mlow, mhigh = (-3,3) #mean locations for gaussian mixture + xn = np.concatenate([mlow + np.random.randn(alpha * n_basesample), + mhigh + np.random.randn((1-alpha) * n_basesample)]) + + # get kde for original sample + #gkde = stats.gaussian_kde(xn) + gkde = gaussian_kde_covfact(xn, 0.1) + # evaluate the density funtion for the kde for some points + ind = np.linspace(-7,7,101) + kdepdf = gkde.evaluate(ind) + + plt.figure() + # plot histgram of sample + plt.hist(xn, bins=20, normed=1) + # plot estimated density + plt.plot(ind, kdepdf, label='kde', color="g") + # plot data generating density + plt.plot(ind, alpha * stats.norm.pdf(ind, loc=mlow) + + (1-alpha) * stats.norm.pdf(ind, loc=mhigh), + color="r", label='DGP: normal mix') + plt.title('Kernel Density Estimation') + plt.legend() + + gkde = gaussian_kde_covfact(xn, 'scotts') + kdepdf = gkde.evaluate(ind) + plt.figure() + # plot histgram of sample + plt.hist(xn, bins=20, normed=1) + # plot estimated density + plt.plot(ind, kdepdf, label='kde', color="g") + # plot data generating density + plt.plot(ind, alpha * stats.norm.pdf(ind, loc=mlow) + + (1-alpha) * stats.norm.pdf(ind, loc=mhigh), + color="r", label='DGP: normal mix') + plt.title('Kernel Density Estimation') + plt.legend() + #plt.show() + for cv in ['scotts', 'silverman', 0.05, 0.1, 0.5]: + plotkde(cv) + + test_kde_1d() + + + np.random.seed(8765678) + n_basesample = 1000 + xn = np.random.randn(n_basesample) + xnmean = xn.mean() + xnstd = xn.std(ddof=1) + + # get kde for original sample + gkde = stats.gaussian_kde(xn) diff --git a/statsmodels/sandbox/nonparametric/kernel_extras.py b/statsmodels/sandbox/nonparametric/kernel_extras.py new file mode 100644 index 0000000..9b3da74 --- /dev/null +++ b/statsmodels/sandbox/nonparametric/kernel_extras.py @@ -0,0 +1,415 @@ +""" +Multivariate Conditional and Unconditional Kernel Density Estimation +with Mixed Data Types + +References +---------- +[1] Racine, J., Li, Q. Nonparametric econometrics: theory and practice. + Princeton University Press. (2007) +[2] Racine, Jeff. "Nonparametric Econometrics: A Primer," Foundation + and Trends in Econometrics: Vol 3: No 1, pp1-88. (2008) + http://dx.doi.org/10.1561/0800000009 +[3] Racine, J., Li, Q. "Nonparametric Estimation of Distributions + with Categorical and Continuous Data." Working Paper. (2000) +[4] Racine, J. Li, Q. "Kernel Estimation of Multivariate Conditional + Distributions Annals of Economics and Finance 5, 211-235 (2004) +[5] Liu, R., Yang, L. "Kernel estimation of multivariate + cumulative distribution function." + Journal of Nonparametric Statistics (2008) +[6] Li, R., Ju, G. "Nonparametric Estimation of Multivariate CDF + with Categorical and Continuous Data." Working Paper +[7] Li, Q., Racine, J. "Cross-validated local linear nonparametric + regression" Statistica Sinica 14(2004), pp. 485-512 +[8] Racine, J.: "Consistent Significance Testing for Nonparametric + Regression" Journal of Business & Economics Statistics +[9] Racine, J., Hart, J., Li, Q., "Testing the Significance of + Categorical Predictor Variables in Nonparametric Regression + Models", 2006, Econometric Reviews 25, 523-544 + +""" + +# TODO: make default behavior efficient=True above a certain n_obs + +from statsmodels.compat.python import range, next +import numpy as np +from scipy import optimize +from scipy.stats.mstats import mquantiles + +from statsmodels.nonparametric.api import KDEMultivariate, KernelReg +from statsmodels.nonparametric._kernel_base import \ + gpke, LeaveOneOut, _get_type_pos, _adjust_shape + + +__all__ = ['SingleIndexModel', 'SemiLinear', 'TestFForm'] + + +class TestFForm(object): + """ + Nonparametric test for functional form. + + Parameters + ---------- + endog: list + Dependent variable (training set) + exog: list of array_like objects + The independent (right-hand-side) variables + bw: array_like, str + Bandwidths for exog or specify method for bandwidth selection + fform: function + The functional form ``y = g(b, x)`` to be tested. Takes as inputs + the RHS variables `exog` and the coefficients ``b`` (betas) + and returns a fitted ``y_hat``. + var_type: str + The type of the independent `exog` variables: + + - c: continuous + - o: ordered + - u: unordered + + estimator: function + Must return the estimated coefficients b (betas). Takes as inputs + ``(endog, exog)``. E.g. least square estimator:: + + lambda (x,y): np.dot(np.pinv(np.dot(x.T, x)), np.dot(x.T, y)) + + References + ---------- + See Racine, J.: "Consistent Significance Testing for Nonparametric + Regression" Journal of Business & Economics Statistics. + + See chapter 12 in [1] pp. 355-357. + """ + def __init__(self, endog, exog, bw, var_type, fform, estimator, nboot=100): + self.endog = endog + self.exog = exog + self.var_type = var_type + self.fform = fform + self.estimator = estimator + self.nboot = nboot + self.bw = KDEMultivariate(exog, bw=bw, var_type=var_type).bw + self.sig = self._compute_sig() + + def _compute_sig(self): + Y = self.endog + X = self.exog + b = self.estimator(Y, X) + m = self.fform(X, b) + n = np.shape(X)[0] + resid = Y - m + resid = resid - np.mean(resid) # center residuals + self.test_stat = self._compute_test_stat(resid) + sqrt5 = np.sqrt(5.) + fct1 = (1 - sqrt5) / 2. + fct2 = (1 + sqrt5) / 2. + u1 = fct1 * resid + u2 = fct2 * resid + r = fct2 / sqrt5 + I_dist = np.empty((self.nboot,1)) + for j in range(self.nboot): + u_boot = u2.copy() + + prob = np.random.uniform(0,1, size = (n,)) + ind = prob < r + u_boot[ind] = u1[ind] + Y_boot = m + u_boot + b_hat = self.estimator(Y_boot, X) + m_hat = self.fform(X, b_hat) + u_boot_hat = Y_boot - m_hat + I_dist[j] = self._compute_test_stat(u_boot_hat) + + self.boots_results = I_dist + sig = "Not Significant" + if self.test_stat > mquantiles(I_dist, 0.9): + sig = "*" + if self.test_stat > mquantiles(I_dist, 0.95): + sig = "**" + if self.test_stat > mquantiles(I_dist, 0.99): + sig = "***" + return sig + + def _compute_test_stat(self, u): + n = np.shape(u)[0] + XLOO = LeaveOneOut(self.exog) + uLOO = LeaveOneOut(u[:,None]).__iter__() + ival = 0 + S2 = 0 + for i, X_not_i in enumerate(XLOO): + u_j = next(uLOO) + u_j = np.squeeze(u_j) + # See Bootstrapping procedure on p. 357 in [1] + K = gpke(self.bw, data=-X_not_i, data_predict=-self.exog[i, :], + var_type=self.var_type, tosum=False) + f_i = (u[i] * u_j * K) + assert u_j.shape == K.shape + ival += f_i.sum() # See eq. 12.7 on p. 355 in [1] + S2 += (f_i**2).sum() # See Theorem 12.1 on p.356 in [1] + assert np.size(ival) == 1 + assert np.size(S2) == 1 + + ival *= 1. / (n * (n - 1)) + ix_cont = _get_type_pos(self.var_type)[0] + hp = self.bw[ix_cont].prod() + S2 *= 2 * hp / (n * (n - 1)) + T = n * ival * np.sqrt(hp / S2) + return T + + +class SingleIndexModel(KernelReg): + """ + Single index semiparametric model ``y = g(X * b) + e``. + + Parameters + ---------- + endog: array_like + The dependent variable + exog: array_like + The independent variable(s) + var_type: str + The type of variables in X: + + - c: continuous + - o: ordered + - u: unordered + + Attributes + ---------- + b: array_like + The linear coefficients b (betas) + bw: array_like + Bandwidths + + Methods + ------- + fit(): Computes the fitted values ``E[Y|X] = g(X * b)`` + and the marginal effects ``dY/dX``. + + References + ---------- + See chapter on semiparametric models in [1] + + Notes + ----- + This model resembles the binary choice models. The user knows + that X and b interact linearly, but ``g(X * b)`` is unknown. + In the parametric binary choice models the user usually assumes + some distribution of g() such as normal or logistic. + + """ + def __init__(self, endog, exog, var_type): + self.var_type = var_type + self.K = len(var_type) + self.var_type = self.var_type[0] + self.endog = _adjust_shape(endog, 1) + self.exog = _adjust_shape(exog, self.K) + self.nobs = np.shape(self.exog)[0] + self.data_type = self.var_type + self.func = self._est_loc_linear + + self.b, self.bw = self._est_b_bw() + + def _est_b_bw(self): + params0 = np.random.uniform(size=(self.K + 1, )) + b_bw = optimize.fmin(self.cv_loo, params0, disp=0) + b = b_bw[0:self.K] + bw = b_bw[self.K:] + bw = self._set_bw_bounds(bw) + return b, bw + + def cv_loo(self, params): + # See p. 254 in Textbook + params = np.asarray(params) + b = params[0 : self.K] + bw = params[self.K:] + LOO_X = LeaveOneOut(self.exog) + LOO_Y = LeaveOneOut(self.endog).__iter__() + L = 0 + for i, X_not_i in enumerate(LOO_X): + Y = next(LOO_Y) + #print b.shape, np.dot(self.exog[i:i+1, :], b).shape, bw, + G = self.func(bw, endog=Y, exog=-np.dot(X_not_i, b)[:,None], + #data_predict=-b*self.exog[i, :])[0] + data_predict=-np.dot(self.exog[i:i+1, :], b))[0] + #print G.shape + L += (self.endog[i] - G) ** 2 + + # Note: There might be a way to vectorize this. See p.72 in [1] + return L / self.nobs + + def fit(self, data_predict=None): + if data_predict is None: + data_predict = self.exog + else: + data_predict = _adjust_shape(data_predict, self.K) + + N_data_predict = np.shape(data_predict)[0] + mean = np.empty((N_data_predict,)) + mfx = np.empty((N_data_predict, self.K)) + for i in range(N_data_predict): + mean_mfx = self.func(self.bw, self.endog, + np.dot(self.exog, self.b)[:,None], + data_predict=np.dot(data_predict[i:i+1, :],self.b)) + mean[i] = mean_mfx[0] + mfx_c = np.squeeze(mean_mfx[1]) + mfx[i, :] = mfx_c + + return mean, mfx + + def __repr__(self): + """Provide something sane to print.""" + repr = "Single Index Model \n" + repr += "Number of variables: K = " + str(self.K) + "\n" + repr += "Number of samples: nobs = " + str(self.nobs) + "\n" + repr += "Variable types: " + self.var_type + "\n" + repr += "BW selection method: cv_ls" + "\n" + repr += "Estimator type: local constant" + "\n" + return repr + + +class SemiLinear(KernelReg): + """ + Semiparametric partially linear model, ``Y = Xb + g(Z) + e``. + + Parameters + ---------- + endog: array_like + The dependent variable + exog: array_like + The linear component in the regression + exog_nonparametric: array_like + The nonparametric component in the regression + var_type: str + The type of the variables in the nonparametric component; + + - c: continuous + - o: ordered + - u: unordered + + k_linear : int + The number of variables that comprise the linear component. + + Attributes + ---------- + bw: array_like + Bandwidths for the nonparametric component exog_nonparametric + b: array_like + Coefficients in the linear component + nobs : int + The number of observations. + k_linear : int + The number of variables that comprise the linear component. + + Methods + ------- + fit(): Returns the fitted mean and marginal effects dy/dz + + Notes + ----- + This model uses only the local constant regression estimator + + References + ---------- + See chapter on Semiparametric Models in [1] + """ + + def __init__(self, endog, exog, exog_nonparametric, var_type, k_linear): + self.endog = _adjust_shape(endog, 1) + self.exog = _adjust_shape(exog, k_linear) + self.K = len(var_type) + self.exog_nonparametric = _adjust_shape(exog_nonparametric, self.K) + self.k_linear = k_linear + self.nobs = np.shape(self.exog)[0] + self.var_type = var_type + self.data_type = self.var_type + self.func = self._est_loc_linear + + self.b, self.bw = self._est_b_bw() + + def _est_b_bw(self): + """ + Computes the (beta) coefficients and the bandwidths. + + Minimizes ``cv_loo`` with respect to ``b`` and ``bw``. + """ + params0 = np.random.uniform(size=(self.k_linear + self.K, )) + b_bw = optimize.fmin(self.cv_loo, params0, disp=0) + b = b_bw[0 : self.k_linear] + bw = b_bw[self.k_linear:] + #bw = self._set_bw_bounds(np.asarray(bw)) + return b, bw + + def cv_loo(self, params): + """ + Similar to the cross validation leave-one-out estimator. + + Modified to reflect the linear components. + + Parameters + ---------- + params: array_like + Vector consisting of the coefficients (b) and the bandwidths (bw). + The first ``k_linear`` elements are the coefficients. + + Returns + ------- + L: float + The value of the objective function + + References + ---------- + See p.254 in [1] + """ + params = np.asarray(params) + b = params[0 : self.k_linear] + bw = params[self.k_linear:] + LOO_X = LeaveOneOut(self.exog) + LOO_Y = LeaveOneOut(self.endog).__iter__() + LOO_Z = LeaveOneOut(self.exog_nonparametric).__iter__() + Xb = np.dot(self.exog, b)[:,None] + L = 0 + for ii, X_not_i in enumerate(LOO_X): + Y = next(LOO_Y) + Z = next(LOO_Z) + Xb_j = np.dot(X_not_i, b)[:,None] + Yx = Y - Xb_j + G = self.func(bw, endog=Yx, exog=-Z, + data_predict=-self.exog_nonparametric[ii, :])[0] + lt = Xb[ii, :] #.sum() # linear term + L += (self.endog[ii] - lt - G) ** 2 + + return L + + def fit(self, exog_predict=None, exog_nonparametric_predict=None): + """Computes fitted values and marginal effects""" + + if exog_predict is None: + exog_predict = self.exog + else: + exog_predict = _adjust_shape(exog_predict, self.k_linear) + + if exog_nonparametric_predict is None: + exog_nonparametric_predict = self.exog_nonparametric + else: + exog_nonparametric_predict = _adjust_shape(exog_nonparametric_predict, self.K) + + N_data_predict = np.shape(exog_nonparametric_predict)[0] + mean = np.empty((N_data_predict,)) + mfx = np.empty((N_data_predict, self.K)) + Y = self.endog - np.dot(exog_predict, self.b)[:,None] + for i in range(N_data_predict): + mean_mfx = self.func(self.bw, Y, self.exog_nonparametric, + data_predict=exog_nonparametric_predict[i, :]) + mean[i] = mean_mfx[0] + mfx_c = np.squeeze(mean_mfx[1]) + mfx[i, :] = mfx_c + + return mean, mfx + + def __repr__(self): + """Provide something sane to print.""" + repr = "Semiparamatric Partially Linear Model \n" + repr += "Number of variables: K = " + str(self.K) + "\n" + repr += "Number of samples: N = " + str(self.nobs) + "\n" + repr += "Variable types: " + self.var_type + "\n" + repr += "BW selection method: cv_ls" + "\n" + repr += "Estimator type: local constant" + "\n" + return repr diff --git a/statsmodels/sandbox/nonparametric/kernels.py b/statsmodels/sandbox/nonparametric/kernels.py new file mode 100644 index 0000000..2225693 --- /dev/null +++ b/statsmodels/sandbox/nonparametric/kernels.py @@ -0,0 +1,566 @@ +# -*- coding: utf-8 -*- + +""" +This models contains the Kernels for Kernel smoothing. + +Hopefully in the future they may be reused/extended for other kernel based +method + +References: +---------- + +Pointwise Kernel Confidence Bounds +(smoothconf) +http://fedc.wiwi.hu-berlin.de/xplore/ebooks/html/anr/anrhtmlframe62.html +""" + +# pylint: disable-msg=C0103 +# pylint: disable-msg=W0142 +# pylint: disable-msg=E1101 +# pylint: disable-msg=E0611 +from statsmodels.compat.python import lzip, lfilter, zip +import numpy as np +import scipy.integrate +from statsmodels.compat.scipy import factorial +from numpy import exp, multiply, square, divide, subtract, inf + + +class NdKernel(object): + """Generic N-dimensial kernel + + Parameters + ---------- + n : int + The number of series for kernel estimates + kernels : list + kernels + + Can be constructed from either + a) a list of n kernels which will be treated as + indepent marginals on a gaussian copula (specified by H) + or b) a single univariate kernel which will be applied radially to the + mahalanobis distance defined by H. + + In the case of the Gaussian these are both equivalent, and the second constructiong + is prefered. + """ + def __init__(self, n, kernels = None, H = None): + if kernels is None: + kernels = Gaussian() + + self._kernels = kernels + self.weights = None + + if H is None: + H = np.matrix( np.identity(n)) + + self._H = H + self._Hrootinv = np.linalg.cholesky( H.I ) + + def getH(self): + """Getter for kernel bandwidth, H""" + return self._H + + def setH(self, value): + """Setter for kernel bandwidth, H""" + self._H = value + + H = property(getH, setH, doc="Kernel bandwidth matrix") + + def density(self, xs, x): + + n = len(xs) + #xs = self.in_domain( xs, xs, x )[0] + + if len(xs)>0: ## Need to do product of marginal distributions + #w = np.sum([self(self._Hrootinv * (xx-x).T ) for xx in xs])/n + #vectorized doesn't work: + if self.weights is not None: + w = np.mean(self((xs-x) * self._Hrootinv).T * self.weights)/sum(self.weights) + else: + w = np.mean(self((xs-x) * self._Hrootinv )) #transposed + #w = np.mean([self(xd) for xd in ((xs-x) * self._Hrootinv)] ) #transposed + return w + else: + return np.nan + + def _kernweight(self, x ): + """returns the kernel weight for the independent multivariate kernel""" + if isinstance( self._kernels, CustomKernel ): + ## Radial case + #d = x.T * x + #x is matrix, 2d, element wise sqrt looks wrong + #d = np.sqrt( x.T * x ) + x = np.asarray(x) + #d = np.sqrt( (x * x).sum(-1) ) + d = (x * x).sum(-1) + return self._kernels( np.asarray(d) ) + + def __call__(self, x): + """ + This simply returns the value of the kernel function at x + + Does the same as weight if the function is normalised + """ + return self._kernweight(x) + + +class CustomKernel(object): + """ + Generic 1D Kernel object. + Can be constructed by selecting a standard named Kernel, + or providing a lambda expression and domain. + The domain allows some algorithms to run faster for finite domain kernels. + """ + # MC: Not sure how this will look in the end - or even still exist. + # Main purpose of this is to allow custom kernels and to allow speed up + # from finite support. + + def __init__(self, shape, h = 1.0, domain = None, norm = None): + """ + shape should be a function taking and returning numeric type. + + For sanity it should always return positive or zero but this isn't + enforced in case you want to do weird things. Bear in mind that the + statistical tests etc. may not be valid for non-positive kernels. + + The bandwidth of the kernel is supplied as h. + + You may specify a domain as a list of 2 values [min, max], in which case + kernel will be treated as zero outside these values. This will speed up + calculation. + + You may also specify the normalisation constant for the supplied Kernel. + If you do this number will be stored and used as the normalisation + without calculation. It is recommended you do this if you know the + constant, to speed up calculation. In particular if the shape function + provided is already normalised you should provide norm = 1.0. + + Warning: I think several calculations assume that the kernel is + normalized. No tests for non-normalized kernel. + """ + self._normconst = norm # a value or None, if None, then calculate + self.domain = domain + self.weights = None + if callable(shape): + self._shape = shape + else: + raise TypeError("shape must be a callable object/function") + self._h = h + self._L2Norm = None + self._kernel_var = None + self._normal_reference_constant = None + self._order = None + + def geth(self): + """Getter for kernel bandwidth, h""" + return self._h + def seth(self, value): + """Setter for kernel bandwidth, h""" + self._h = value + h = property(geth, seth, doc="Kernel Bandwidth") + + def in_domain(self, xs, ys, x): + """ + Returns the filtered (xs, ys) based on the Kernel domain centred on x + """ + # Disable black-list functions: filter used for speed instead of + # list-comprehension + # pylint: disable-msg=W0141 + def isInDomain(xy): + """Used for filter to check if point is in the domain""" + u = (xy[0]-x)/self.h + return u >= self.domain[0] and u <= self.domain[1] + + if self.domain is None: + return (xs, ys) + else: + filtered = lfilter(isInDomain, lzip(xs, ys)) + if len(filtered) > 0: + xs, ys = lzip(*filtered) + return (xs, ys) + else: + return ([], []) + + def density(self, xs, x): + """Returns the kernel density estimate for point x based on x-values + xs + """ + xs = np.asarray(xs) + n = len(xs) # before in_domain? + if self.weights is not None: + xs, weights = self.in_domain( xs, self.weights, x ) + else: + xs = self.in_domain( xs, xs, x )[0] + xs = np.asarray(xs) + #print 'len(xs)', len(xs), x + if xs.ndim == 1: + xs = xs[:,None] + if len(xs)>0: + h = self.h + if self.weights is not None: + w = 1 / h * np.sum(self((xs-x)/h).T * weights, axis=1) + else: + w = 1. / (h * n) * np.sum(self((xs-x)/h), axis=0) + return w + else: + return np.nan + + def density_var(self, density, nobs): + """approximate pointwise variance for kernel density + + not verified + + Parameters + ---------- + density : array_lie + pdf of the kernel density + nobs : int + number of observations used in the KDE estimation + + Returns + ------- + kde_var : ndarray + estimated variance of the density estimate + + Notes + ----- + This uses the asymptotic normal approximation to the distribution of + the density estimate. + """ + return np.asarray(density) * self.L2Norm / self.h / nobs + + def density_confint(self, density, nobs, alpha=0.05): + """approximate pointwise confidence interval for kernel density + + The confidence interval is centered at the estimated density and + ignores the bias of the density estimate. + + not verified + + Parameters + ---------- + density : array_lie + pdf of the kernel density + nobs : int + number of observations used in the KDE estimation + + Returns + ------- + conf_int : ndarray + estimated confidence interval of the density estimate, lower bound + in first column and upper bound in second column + + Notes + ----- + This uses the asymptotic normal approximation to the distribution of + the density estimate. The lower bound can be negative for density + values close to zero. + + """ + from scipy import stats + crit = stats.norm.isf(alpha / 2.) + density = np.asarray(density) + half_width = crit * np.sqrt(self.density_var(density, nobs)) + conf_int = np.column_stack((density - half_width, density + half_width)) + return conf_int + + def smooth(self, xs, ys, x): + """Returns the kernel smoothing estimate for point x based on x-values + xs and y-values ys. + Not expected to be called by the user. + """ + xs, ys = self.in_domain(xs, ys, x) + + if len(xs)>0: + w = np.sum(self((xs-x)/self.h)) + #TODO: change the below to broadcasting when shape is sorted + v = np.sum([yy*self((xx-x)/self.h) for xx, yy in zip(xs, ys)]) + return v / w + else: + return np.nan + + def smoothvar(self, xs, ys, x): + """Returns the kernel smoothing estimate of the variance at point x. + """ + xs, ys = self.in_domain(xs, ys, x) + + if len(xs) > 0: + fittedvals = np.array([self.smooth(xs, ys, xx) for xx in xs]) + sqresid = square( subtract(ys, fittedvals) ) + w = np.sum(self((xs-x)/self.h)) + v = np.sum([rr*self((xx-x)/self.h) for xx, rr in zip(xs, sqresid)]) + return v / w + else: + return np.nan + + def smoothconf(self, xs, ys, x, alpha=0.05): + """Returns the kernel smoothing estimate with confidence 1sigma bounds + """ + xs, ys = self.in_domain(xs, ys, x) + + if len(xs) > 0: + fittedvals = np.array([self.smooth(xs, ys, xx) for xx in xs]) + #fittedvals = self.smooth(xs, ys, x) # x or xs in Haerdle + sqresid = square( + subtract(ys, fittedvals) + ) + w = np.sum(self((xs-x)/self.h)) + #var = sqresid.sum() / (len(sqresid) - 0) # nonlocal var ? JP just trying + v = np.sum([rr*self((xx-x)/self.h) for xx, rr in zip(xs, sqresid)]) + var = v / w + sd = np.sqrt(var) + K = self.L2Norm + yhat = self.smooth(xs, ys, x) + from scipy import stats + crit = stats.norm.isf(alpha / 2) + err = crit * sd * np.sqrt(K) / np.sqrt(w * self.h * self.norm_const) + return (yhat - err, yhat, yhat + err) + else: + return (np.nan, np.nan, np.nan) + + @property + def L2Norm(self): + """Returns the integral of the square of the kernal from -inf to inf""" + if self._L2Norm is None: + L2Func = lambda x: (self.norm_const*self._shape(x))**2 + if self.domain is None: + self._L2Norm = scipy.integrate.quad(L2Func, -inf, inf)[0] + else: + self._L2Norm = scipy.integrate.quad(L2Func, self.domain[0], + self.domain[1])[0] + return self._L2Norm + + @property + def norm_const(self): + """ + Normalising constant for kernel (integral from -inf to inf) + """ + if self._normconst is None: + if self.domain is None: + quadres = scipy.integrate.quad(self._shape, -inf, inf) + else: + quadres = scipy.integrate.quad(self._shape, self.domain[0], + self.domain[1]) + self._normconst = 1.0/(quadres[0]) + return self._normconst + + @property + def kernel_var(self): + """Returns the second moment of the kernel""" + if self._kernel_var is None: + func = lambda x: x**2 * self.norm_const * self._shape(x) + if self.domain is None: + self._kernel_var = scipy.integrate.quad(func, -inf, inf)[0] + else: + self._kernel_var = scipy.integrate.quad(func, self.domain[0], + self.domain[1])[0] + return self._kernel_var + + def moments(self, n): + + if n > 2: + msg = "Only first and second moment currently implemented" + raise NotImplementedError(msg) + + if n == 1: + return 0 + + if n == 2: + return self.kernel_var + + @property + def normal_reference_constant(self): + """ + Constant used for silverman normal reference asymtotic bandwidth + calculation. + + C = 2((pi^(1/2)*(nu!)^3 R(k))/(2nu(2nu)!kap_nu(k)^2))^(1/(2nu+1)) + nu = kernel order + kap_nu = nu'th moment of kernel + R = kernel roughness (square of L^2 norm) + + Note: L2Norm property returns square of norm. + """ + nu = self._order + + if not nu == 2: + msg = "Only implemented for second order kernels" + raise NotImplementedError(msg) + + if self._normal_reference_constant is None: + C = np.pi**(.5) * factorial(nu)**3 * self.L2Norm + C /= (2 * nu * factorial(2 * nu) * self.moments(nu)**2) + C = 2*C**(1.0/(2*nu+1)) + self._normal_reference_constant = C + + return self._normal_reference_constant + + + def weight(self, x): + """This returns the normalised weight at distance x""" + return self.norm_const*self._shape(x) + + def __call__(self, x): + """ + This simply returns the value of the kernel function at x + + Does the same as weight if the function is normalised + """ + return self._shape(x) + + +class Uniform(CustomKernel): + def __init__(self, h=1.0): + CustomKernel.__init__(self, shape=lambda x: 0.5 * np.ones(x.shape), h=h, + domain=[-1.0, 1.0], norm = 1.0) + self._L2Norm = 0.5 + self._kernel_var = 1. / 3 + self._order = 2 + + +class Triangular(CustomKernel): + def __init__(self, h=1.0): + CustomKernel.__init__(self, shape=lambda x: 1 - abs(x), h=h, + domain=[-1.0, 1.0], norm = 1.0) + self._L2Norm = 2.0/3.0 + self._kernel_var = 1. / 6 + self._order = 2 + + +class Epanechnikov(CustomKernel): + def __init__(self, h=1.0): + CustomKernel.__init__(self, shape=lambda x: 0.75*(1 - x*x), h=h, + domain=[-1.0, 1.0], norm = 1.0) + self._L2Norm = 0.6 + self._kernel_var = 0.2 + self._order = 2 + + +class Biweight(CustomKernel): + def __init__(self, h=1.0): + CustomKernel.__init__(self, shape=lambda x: 0.9375*(1 - x*x)**2, h=h, + domain=[-1.0, 1.0], norm = 1.0) + self._L2Norm = 5.0/7.0 + self._kernel_var = 1. / 7 + self._order = 2 + + def smooth(self, xs, ys, x): + """Returns the kernel smoothing estimate for point x based on x-values + xs and y-values ys. + Not expected to be called by the user. + + Special implementation optimised for Biweight. + """ + xs, ys = self.in_domain(xs, ys, x) + + if len(xs) > 0: + w = np.sum(square(subtract(1, square(divide(subtract(xs, x), + self.h))))) + v = np.sum(multiply(ys, square(subtract(1, square(divide( + subtract(xs, x), self.h)))))) + return v / w + else: + return np.nan + + def smoothvar(self, xs, ys, x): + """ + Returns the kernel smoothing estimate of the variance at point x. + """ + xs, ys = self.in_domain(xs, ys, x) + + if len(xs) > 0: + fittedvals = np.array([self.smooth(xs, ys, xx) for xx in xs]) + rs = square(subtract(ys, fittedvals)) + w = np.sum(square(subtract(1.0, square(divide(subtract(xs, x), + self.h))))) + v = np.sum(multiply(rs, square(subtract(1, square(divide( + subtract(xs, x), self.h)))))) + return v / w + else: + return np.nan + + def smoothconf_(self, xs, ys, x): + """Returns the kernel smoothing estimate with confidence 1sigma bounds + """ + xs, ys = self.in_domain(xs, ys, x) + + if len(xs) > 0: + fittedvals = np.array([self.smooth(xs, ys, xx) for xx in xs]) + rs = square(subtract(ys, fittedvals)) + w = np.sum(square(subtract(1.0, square(divide(subtract(xs, x), + self.h))))) + v = np.sum(multiply(rs, square(subtract(1, square(divide( + subtract(xs, x), self.h)))))) + var = v / w + sd = np.sqrt(var) + K = self.L2Norm + yhat = self.smooth(xs, ys, x) + err = sd * K / np.sqrt(0.9375 * w * self.h) + return (yhat - err, yhat, yhat + err) + else: + return (np.nan, np.nan, np.nan) + +class Triweight(CustomKernel): + def __init__(self, h=1.0): + CustomKernel.__init__(self, shape=lambda x: 1.09375*(1 - x*x)**3, h=h, + domain=[-1.0, 1.0], norm = 1.0) + self._L2Norm = 350.0/429.0 + self._kernel_var = 1. / 9 + self._order = 2 + + +class Gaussian(CustomKernel): + """ + Gaussian (Normal) Kernel + + K(u) = 1 / (sqrt(2*pi)) exp(-0.5 u**2) + """ + def __init__(self, h=1.0): + CustomKernel.__init__(self, shape = lambda x: 0.3989422804014327 * + np.exp(-x**2/2.0), h = h, domain = None, norm = 1.0) + self._L2Norm = 1.0/(2.0*np.sqrt(np.pi)) + self._kernel_var = 1.0 + self._order = 2 + + def smooth(self, xs, ys, x): + """Returns the kernel smoothing estimate for point x based on x-values + xs and y-values ys. + Not expected to be called by the user. + + Special implementation optimised for Gaussian. + """ + w = np.sum(exp(multiply(square(divide(subtract(xs, x), + self.h)),-0.5))) + v = np.sum(multiply(ys, exp(multiply(square(divide(subtract(xs, x), + self.h)), -0.5)))) + return v/w + +class Cosine(CustomKernel): + """ + Cosine Kernel + + K(u) = pi/4 cos(0.5 * pi * u) between -1.0 and 1.0 + """ + def __init__(self, h=1.0): + CustomKernel.__init__(self, shape=lambda x: 0.78539816339744828 * + np.cos(np.pi/2.0 * x), h=h, domain=[-1.0, 1.0], norm = 1.0) + self._L2Norm = np.pi**2/16.0 + self._kernel_var = 0.1894305308612978 # = 1 - 8 / np.pi**2 + self._order = 2 + + +class Cosine2(CustomKernel): + """ + Cosine2 Kernel + + K(u) = 1 + cos(2 * pi * u) between -0.5 and 0.5 + + Note: this is the same Cosine kernel that Stata uses + """ + def __init__(self, h=1.0): + CustomKernel.__init__(self, shape=lambda x: 1 + np.cos(2.0 * np.pi * x) + , h=h, domain=[-0.5, 0.5], norm = 1.0) + self._L2Norm = 1.5 + self._kernel_var = 0.03267274151216444 # = 1/12. - 0.5 / np.pi**2 + self._order = 2 diff --git a/statsmodels/sandbox/nonparametric/smoothers.py b/statsmodels/sandbox/nonparametric/smoothers.py new file mode 100644 index 0000000..2712a2b --- /dev/null +++ b/statsmodels/sandbox/nonparametric/smoothers.py @@ -0,0 +1,409 @@ +""" +This module contains scatterplot smoothers, that is classes +who generate a smooth fit of a set of (x,y) pairs. +""" + +# pylint: disable-msg=C0103 +# pylint: disable-msg=W0142 +# pylint: disable-msg=E0611 +# pylint: disable-msg=E1101 +from __future__ import print_function +from statsmodels.compat.python import long + +import numpy as np +from . import kernels +#import numbers +#from scipy.linalg import solveh_banded +#from scipy.optimize import golden + +#from models import _hbspline # Need to alter setup to be able to import + # extension from models or drop for scipy +#from models.bspline import BSpline, _band2array + +class KernelSmoother(object): + """ + 1D Kernel Density Regression/Kernel Smoother + + Requires: + x - array_like of x values + y - array_like of y values + Kernel - Kernel object, Default is Gaussian. + """ + def __init__(self, x, y, Kernel = None): + if Kernel is None: + Kernel = kernels.Gaussian() + self.Kernel = Kernel + self.x = np.array(x) + self.y = np.array(y) + + def fit(self): + pass + + def __call__(self, x): + return np.array([self.predict(xx) for xx in x]) + + def predict(self, x): + """ + Returns the kernel smoothed prediction at x + + If x is a real number then a single value is returned. + + Otherwise an attempt is made to cast x to numpy.ndarray and an array of + corresponding y-points is returned. + """ + if np.size(x) == 1: # if isinstance(x, numbers.Real): + return self.Kernel.smooth(self.x, self.y, x) + else: + return np.array([self.Kernel.smooth(self.x, self.y, xx) for xx + in np.array(x)]) + + def conf(self, x): + """ + Returns the fitted curve and 1-sigma upper and lower point-wise + confidence. + These bounds are based on variance only, and do not include the bias. + If the bandwidth is much larger than the curvature of the underlying + funtion then the bias could be large. + + x is the points on which you want to evaluate the fit and the errors. + + Alternatively if x is specified as a positive integer, then the fit and + confidence bands points will be returned after every + xth sample point - so they are closer together where the data + is denser. + """ + if isinstance(x, (int, long)): + sorted_x = np.array(self.x) + sorted_x.sort() + confx = sorted_x[::x] + conffit = self.conf(confx) + return (confx, conffit) + else: + return np.array([self.Kernel.smoothconf(self.x, self.y, xx) + for xx in x]) + + + def var(self, x): + return np.array([self.Kernel.smoothvar(self.x, self.y, xx) for xx in x]) + + def std(self, x): + return np.sqrt(self.var(x)) + +class PolySmoother(object): + """ + Polynomial smoother up to a given order. + Fit based on weighted least squares. + + The x values can be specified at instantiation or when called. + + This is a 3 liner with OLS or WLS, see test. + It's here as a test smoother for GAM + + """ + #JP: heavily adjusted to work as plugin replacement for bspline + # smoother in gam.py initialized by function default_smoother + # Only fixed exceptions, I didn't check whether it is statistically + # correctand I think it is not, there are still be some dimension + # problems, and there were some dimension problems initially. + # TODO: undo adjustments and fix dimensions correctly + # comment: this is just like polyfit with initialization options + # and additional results (OLS on polynomial of x (x is 1d?)) + + + def __init__(self, order, x=None): + #order = 4 # set this because we get knots instead of order + self.order = order + + #print order, x.shape + self.coef = np.zeros((order+1,), np.float64) + if x is not None: + if x.ndim > 1: + print('Warning: 2d x detected in PolySmoother init, shape:', x.shape) + x=x[0,:] #check orientation + self.X = np.array([x**i for i in range(order+1)]).T + + def df_fit(self): + '''alias of df_model for backwards compatibility + ''' + return self.df_model() + + def df_model(self): + """ + Degrees of freedom used in the fit. + """ + return self.order + 1 + + def gram(self, d=None): + #fake for spline imitation + pass + + def smooth(self,*args, **kwds): + '''alias for fit, for backwards compatibility, + + do we need it with different behavior than fit? + + ''' + return self.fit(*args, **kwds) + + def df_resid(self): + """ + Residual degrees of freedom from last fit. + """ + return self.N - self.order - 1 + + def __call__(self, x=None): + return self.predict(x=x) + + + def predict(self, x=None): + + if x is not None: + #if x.ndim > 1: x=x[0,:] #why this this should select column not row + if x.ndim > 1: + print('Warning: 2d x detected in PolySmoother predict, shape:', x.shape) + x=x[:,0] #TODO: check and clean this up + X = np.array([(x**i) for i in range(self.order+1)]) + else: X = self.X + #return np.squeeze(np.dot(X.T, self.coef)) + #need to check what dimension this is supposed to be + if X.shape[1] == self.coef.shape[0]: + return np.squeeze(np.dot(X, self.coef))#[0] + else: + return np.squeeze(np.dot(X.T, self.coef))#[0] + + def fit(self, y, x=None, weights=None): + self.N = y.shape[0] + if y.ndim == 1: + y = y[:,None] + if weights is None or np.isnan(weights).all(): + weights = 1 + _w = 1 + else: + _w = np.sqrt(weights)[:,None] + if x is None: + if not hasattr(self, "X"): + raise ValueError("x needed to fit PolySmoother") + else: + if x.ndim > 1: + print('Warning: 2d x detected in PolySmoother predict, shape:', x.shape) + #x=x[0,:] #TODO: check orientation, row or col + self.X = np.array([(x**i) for i in range(self.order+1)]).T + #print _w.shape + + X = self.X * _w + + _y = y * _w#[:,None] + #self.coef = np.dot(L.pinv(X).T, _y[:,None]) + #self.coef = np.dot(L.pinv(X), _y) + self.coef = np.linalg.lstsq(X, _y, rcond=-1)[0] + self.params = np.squeeze(self.coef) + + + + + + + + + + + + + + + + + + + + +# comment out for now to remove dependency on _hbspline + +##class SmoothingSpline(BSpline): +## +## penmax = 30. +## +## def fit(self, y, x=None, weights=None, pen=0.): +## banded = True +## +## if x is None: +## x = self.tau[(self.M-1):-(self.M-1)] # internal knots +## +## if pen == 0.: # can't use cholesky for singular matrices +## banded = False +## +## if x.shape != y.shape: +## raise ValueError('x and y shape do not agree, by default x are the Bspline\'s internal knots') +## +## bt = self.basis(x) +## if pen >= self.penmax: +## pen = self.penmax +## +## if weights is None: +## weights = np.array(1.) +## +## wmean = weights.mean() +## _w = np.sqrt(weights / wmean) +## bt *= _w +## +## # throw out rows with zeros (this happens at boundary points!) +## +## mask = np.flatnonzero(1 - np.alltrue(np.equal(bt, 0), axis=0)) +## +## bt = bt[:, mask] +## y = y[mask] +## +## self.df_total = y.shape[0] +## +## if bt.shape[1] != y.shape[0]: +## raise ValueError("some x values are outside range of B-spline knots") +## bty = np.dot(bt, _w * y) +## self.N = y.shape[0] +## if not banded: +## self.btb = np.dot(bt, bt.T) +## _g = _band2array(self.g, lower=1, symmetric=True) +## self.coef, _, self.rank = L.lstsq(self.btb + pen*_g, bty)[0:3] +## self.rank = min(self.rank, self.btb.shape[0]) +## else: +## self.btb = np.zeros(self.g.shape, np.float64) +## nband, nbasis = self.g.shape +## for i in range(nbasis): +## for k in range(min(nband, nbasis-i)): +## self.btb[k, i] = (bt[i] * bt[i+k]).sum() +## +## bty.shape = (1, bty.shape[0]) +## self.chol, self.coef = solveh_banded(self.btb + +## pen*self.g, +## bty, lower=1) +## +## self.coef = np.squeeze(self.coef) +## self.resid = np.sqrt(wmean) * (y * _w - np.dot(self.coef, bt)) +## self.pen = pen +## +## def gcv(self): +## """ +## Generalized cross-validation score of current fit. +## """ +## +## norm_resid = (self.resid**2).sum() +## return norm_resid / (self.df_total - self.trace()) +## +## def df_resid(self): +## """ +## self.N - self.trace() +## +## where self.N is the number of observations of last fit. +## """ +## +## return self.N - self.trace() +## +## def df_fit(self): +## """ +## = self.trace() +## +## How many degrees of freedom used in the fit? +## """ +## return self.trace() +## +## def trace(self): +## """ +## Trace of the smoothing matrix S(pen) +## """ +## +## if self.pen > 0: +## _invband = _hbspline.invband(self.chol.copy()) +## tr = _trace_symbanded(_invband, self.btb, lower=1) +## return tr +## else: +## return self.rank +## +##class SmoothingSplineFixedDF(SmoothingSpline): +## """ +## Fit smoothing spline with approximately df degrees of freedom +## used in the fit, i.e. so that self.trace() is approximately df. +## +## In general, df must be greater than the dimension of the null space +## of the Gram inner product. For cubic smoothing splines, this means +## that df > 2. +## """ +## +## target_df = 5 +## +## def __init__(self, knots, order=4, coef=None, M=None, target_df=None): +## if target_df is not None: +## self.target_df = target_df +## BSpline.__init__(self, knots, order=order, coef=coef, M=M) +## self.target_reached = False +## +## def fit(self, y, x=None, df=None, weights=None, tol=1.0e-03): +## +## df = df or self.target_df +## +## apen, bpen = 0, 1.0e-03 +## olddf = y.shape[0] - self.m +## +## if not self.target_reached: +## while True: +## curpen = 0.5 * (apen + bpen) +## SmoothingSpline.fit(self, y, x=x, weights=weights, pen=curpen) +## curdf = self.trace() +## if curdf > df: +## apen, bpen = curpen, 2 * curpen +## else: +## apen, bpen = apen, curpen +## if apen >= self.penmax: +## raise ValueError("penalty too large, try setting penmax higher or decreasing df") +## if np.fabs(curdf - df) / df < tol: +## self.target_reached = True +## break +## else: +## SmoothingSpline.fit(self, y, x=x, weights=weights, pen=self.pen) +## +##class SmoothingSplineGCV(SmoothingSpline): +## +## """ +## Fit smoothing spline trying to optimize GCV. +## +## Try to find a bracketing interval for scipy.optimize.golden +## based on bracket. +## +## It is probably best to use target_df instead, as it is +## sometimes difficult to find a bracketing interval. +## +## """ +## +## def fit(self, y, x=None, weights=None, tol=1.0e-03, +## bracket=(0,1.0e-03)): +## +## def _gcv(pen, y, x): +## SmoothingSpline.fit(y, x=x, pen=np.exp(pen), weights=weights) +## a = self.gcv() +## return a +## +## a = golden(_gcv, args=(y,x), brack=(-100,20), tol=tol) +## +##def _trace_symbanded(a,b, lower=0): +## """ +## Compute the trace(a*b) for two upper or lower banded real symmetric matrices. +## """ +## +## if lower: +## t = _zero_triband(a * b, lower=1) +## return t[0].sum() + 2 * t[1:].sum() +## else: +## t = _zero_triband(a * b, lower=0) +## return t[-1].sum() + 2 * t[:-1].sum() +## +## +## +##def _zero_triband(a, lower=0): +## """ +## Zero out unnecessary elements of a real symmetric banded matrix. +## """ +## +## nrow, ncol = a.shape +## if lower: +## for i in range(nrow): a[i,(ncol-i):] = 0. +## else: +## for i in range(nrow): a[i,0:i] = 0. +## return a diff --git a/statsmodels/sandbox/nonparametric/testdata.py b/statsmodels/sandbox/nonparametric/testdata.py new file mode 100644 index 0000000..4aabfd9 --- /dev/null +++ b/statsmodels/sandbox/nonparametric/testdata.py @@ -0,0 +1,58 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Mar 04 07:36:28 2011 + +@author: Mike +""" + +import numpy as np + +class kdetest(object): + + + Hpi = np.matrix([[ 0.05163034, 0.5098923 ], + [0.50989228, 8.8822365 ]]) + + + faithfulData = dict( + eruptions=[ + 3.6, 1.8, 3.333, 2.283, 4.533, 2.883, 4.7, 3.6, 1.95, 4.35, 1.833, 3.917, + 4.2, 1.75, 4.7, 2.167, 1.75, 4.8, 1.6, 4.25, 1.8, 1.75, 3.45, 3.067, 4.533, + 3.6, 1.967, 4.083, 3.85, 4.433, 4.3, 4.467, 3.367, 4.033, 3.833, 2.017, 1.867, + 4.833, 1.833, 4.783, 4.35, 1.883, 4.567, 1.75, 4.533, 3.317, 3.833, 2.1, 4.633, + 2, 4.8, 4.716, 1.833, 4.833, 1.733, 4.883, 3.717, 1.667, 4.567, 4.317, 2.233, 4.5, + 1.75, 4.8, 1.817, 4.4, 4.167, 4.7, 2.067, 4.7, 4.033, 1.967, 4.5, 4, 1.983, 5.067, + 2.017, 4.567, 3.883, 3.6, 4.133, 4.333, 4.1, 2.633, 4.067, 4.933, 3.95, 4.517, 2.167, + 4, 2.2, 4.333, 1.867, 4.817, 1.833, 4.3, 4.667, 3.75, 1.867, 4.9, 2.483, 4.367, 2.1, 4.5, + 4.05, 1.867, 4.7, 1.783, 4.85, 3.683, 4.733, 2.3, 4.9, 4.417, 1.7, 4.633, 2.317, 4.6, + 1.817, 4.417, 2.617, 4.067, 4.25, 1.967, 4.6, 3.767, 1.917, 4.5, 2.267, 4.65, 1.867, + 4.167, 2.8, 4.333, 1.833, 4.383, 1.883, 4.933, 2.033, 3.733, 4.233, 2.233, 4.533, + 4.817, 4.333, 1.983, 4.633, 2.017, 5.1, 1.8, 5.033, 4, 2.4, 4.6, 3.567, 4, 4.5, 4.083, + 1.8, 3.967, 2.2, 4.15, 2, 3.833, 3.5, 4.583, 2.367, 5, 1.933, 4.617, 1.917, 2.083, + 4.583, 3.333, 4.167, 4.333, 4.5, 2.417, 4, 4.167, 1.883, 4.583, 4.25, 3.767, 2.033, + 4.433, 4.083, 1.833, 4.417, 2.183, 4.8, 1.833, 4.8, 4.1, 3.966, 4.233, 3.5, 4.366, + 2.25, 4.667, 2.1, 4.35, 4.133, 1.867, 4.6, 1.783, 4.367, 3.85, 1.933, 4.5, 2.383, + 4.7, 1.867, 3.833, 3.417, 4.233, 2.4, 4.8, 2, 4.15, 1.867, 4.267, 1.75, 4.483, 4, + 4.117, 4.083, 4.267, 3.917, 4.55, 4.083, 2.417, 4.183, 2.217, 4.45, 1.883, 1.85, + 4.283, 3.95, 2.333, 4.15, 2.35, 4.933, 2.9, 4.583, 3.833, 2.083, 4.367, 2.133, 4.35, + 2.2, 4.45, 3.567, 4.5, 4.15, 3.817, 3.917, 4.45, 2, 4.283, 4.767, 4.533, 1.85, 4.25, + 1.983, 2.25, 4.75, 4.117, 2.15, 4.417, 1.817, 4.467], + waiting=[ + 79, 54, 74, 62, 85, 55, 88, 85, 51, 85, 54, 84, 78, 47, 83, 52, + 62, 84, 52, 79, 51, 47, 78, 69, 74, 83, 55, 76, 78, 79, 73, 77, + 66, 80, 74, 52, 48, 80, 59, 90, 80, 58, 84, 58, 73, 83, 64, 53, + 82, 59, 75, 90, 54, 80, 54, 83, 71, 64, 77, 81, 59, 84, 48, 82, + 60, 92, 78, 78, 65, 73, 82, 56, 79, 71, 62, 76, 60, 78, 76, 83, + 75, 82, 70, 65, 73, 88, 76, 80, 48, 86, 60, 90, 50, 78, 63, 72, + 84, 75, 51, 82, 62, 88, 49, 83, 81, 47, 84, 52, 86, 81, 75, 59, + 89, 79, 59, 81, 50, 85, 59, 87, 53, 69, 77, 56, 88, 81, 45, 82, + 55, 90, 45, 83, 56, 89, 46, 82, 51, 86, 53, 79, 81, 60, 82, 77, + 76, 59, 80, 49, 96, 53, 77, 77, 65, 81, 71, 70, 81, 93, 53, 89, + 45, 86, 58, 78, 66, 76, 63, 88, 52, 93, 49, 57, 77, 68, 81, 81, + 73, 50, 85, 74, 55, 77, 83, 83, 51, 78, 84, 46, 83, 55, 81, 57, + 76, 84, 77, 81, 87, 77, 51, 78, 60, 82, 91, 53, 78, 46, 77, 84, + 49, 83, 71, 80, 49, 75, 64, 76, 53, 94, 55, 76, 50, 82, 54, 75, + 78, 79, 78, 78, 70, 79, 70, 54, 86, 50, 90, 54, 54, 77, 79, 64, + 75, 47, 86, 63, 85, 82, 57, 82, 67, 74, 54, 83, 73, 73, 88, 80, + 71, 83, 56, 79, 78, 84, 58, 83, 43, 60, 75, 81, 46, 90, 46, 74] + ) diff --git a/statsmodels/sandbox/nonparametric/tests/__init__.py b/statsmodels/sandbox/nonparametric/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/sandbox/nonparametric/tests/ex_gam_am_new.py b/statsmodels/sandbox/nonparametric/tests/ex_gam_am_new.py new file mode 100644 index 0000000..18776ad --- /dev/null +++ b/statsmodels/sandbox/nonparametric/tests/ex_gam_am_new.py @@ -0,0 +1,89 @@ +# -*- coding: utf-8 -*- +"""Example for gam.AdditiveModel and PolynomialSmoother + +This example was written as a test case. +The data generating process is chosen so the parameters are well identified +and estimated. + +Created on Fri Nov 04 13:45:43 2011 + +Author: Josef Perktold + +""" +from __future__ import print_function +from statsmodels.compat.python import lrange, zip + +import numpy as np + +from statsmodels.sandbox.gam import AdditiveModel +from statsmodels.regression.linear_model import OLS + +np.random.seed(8765993) +#seed is chosen for nice result, not randomly +#other seeds are pretty off in the prediction + +#DGP: simple polynomial +order = 3 +sigma_noise = 0.5 +nobs = 1000 #1000 #with 1000, OLS and Additivemodel aggree in params at 2 decimals +lb, ub = -3.5, 4#2.5 +x1 = np.linspace(lb, ub, nobs) +x2 = np.sin(2*x1) +x = np.column_stack((x1/x1.max()*2, x2)) +exog = (x[:,:,None]**np.arange(order+1)[None, None, :]).reshape(nobs, -1) +idx = lrange((order+1)*2) +del idx[order+1] +exog_reduced = exog[:,idx] #remove duplicate constant +y_true = exog.sum(1) / 2. +z = y_true #alias check +d = x +y = y_true + sigma_noise * np.random.randn(nobs) + +example = 1 + +if example == 1: + m = AdditiveModel(d) + m.fit(y) + + y_pred = m.results.predict(d) + + +for ss in m.smoothers: + print(ss.params) + +res_ols = OLS(y, exog_reduced).fit() +print(res_ols.params) + +#from numpy.testing import assert_almost_equal +#assert_almost_equal(y_pred, res_ols.fittedvalues, 3) + +if example > 0: + import matplotlib.pyplot as plt + + plt.figure() + plt.plot(exog) + + y_pred = m.results.mu# + m.results.alpha #m.results.predict(d) + plt.figure() + plt.subplot(2,2,1) + plt.plot(y, '.', alpha=0.25) + plt.plot(y_true, 'k-', label='true') + + plt.plot(res_ols.fittedvalues, 'g-', label='OLS', lw=2, alpha=-.7) + plt.plot(y_pred, 'r-', label='AM') + plt.legend(loc='upper left') + plt.title('gam.AdditiveModel') + + counter = 2 + for ii, xx in zip(['z', 'x1', 'x2'], [z, x[:,0], x[:,1]]): + sortidx = np.argsort(xx) + #plt.figure() + plt.subplot(2, 2, counter) + plt.plot(xx[sortidx], y[sortidx], '.', alpha=0.25) + plt.plot(xx[sortidx], y_true[sortidx], 'k.', label='true', lw=2) + plt.plot(xx[sortidx], y_pred[sortidx], 'r.', label='AM') + plt.legend(loc='upper left') + plt.title('gam.AdditiveModel ' + ii) + counter += 1 + + plt.show() diff --git a/statsmodels/sandbox/nonparametric/tests/ex_gam_new.py b/statsmodels/sandbox/nonparametric/tests/ex_gam_new.py new file mode 100644 index 0000000..1e81d03 --- /dev/null +++ b/statsmodels/sandbox/nonparametric/tests/ex_gam_new.py @@ -0,0 +1,133 @@ +# -*- coding: utf-8 -*- +"""Example for GAM with Poisson Model and PolynomialSmoother + +This example was written as a test case. +The data generating process is chosen so the parameters are well identified +and estimated. + +Created on Fri Nov 04 13:45:43 2011 + +Author: Josef Perktold +""" +from __future__ import print_function +from statsmodels.compat.python import lrange, zip +import time + +import numpy as np + +from scipy import stats + +from statsmodels.sandbox.gam import Model as GAM +from statsmodels.genmod.families import family +from statsmodels.genmod.generalized_linear_model import GLM + +np.seterr(all='raise') +np.random.seed(8765993) +#seed is chosen for nice result, not randomly +#other seeds are pretty off in the prediction or end in overflow + +#DGP: simple polynomial +order = 3 +sigma_noise = 0.1 +nobs = 1000 +#lb, ub = -0.75, 3#1.5#0.75 #2.5 +lb, ub = -3.5, 3 +x1 = np.linspace(lb, ub, nobs) +x2 = np.sin(2*x1) +x = np.column_stack((x1/x1.max()*1, 1.*x2)) +exog = (x[:,:,None]**np.arange(order+1)[None, None, :]).reshape(nobs, -1) +idx = lrange((order+1)*2) +del idx[order+1] +exog_reduced = exog[:,idx] #remove duplicate constant +y_true = exog.sum(1) #/ 4. +z = y_true #alias check +d = x +y = y_true + sigma_noise * np.random.randn(nobs) + +example = 3 + +if example == 2: + print("binomial") + f = family.Binomial() + mu_true = f.link.inverse(z) + #b = np.asarray([scipy.stats.bernoulli.rvs(p) for p in f.link.inverse(y)]) + b = np.asarray([stats.bernoulli.rvs(p) for p in f.link.inverse(z)]) + b.shape = y.shape + m = GAM(b, d, family=f) + toc = time.time() + m.fit(b) + tic = time.time() + print(tic-toc) + #for plotting + yp = f.link.inverse(y) + p = b + + +if example == 3: + print("Poisson") + f = family.Poisson() + #y = y/y.max() * 3 + yp = f.link.inverse(z) + p = np.asarray([stats.poisson.rvs(val) for val in f.link.inverse(z)], + float) + p.shape = y.shape + m = GAM(p, d, family=f) + toc = time.time() + m.fit(p) + tic = time.time() + print(tic-toc) + +for ss in m.smoothers: + print(ss.params) + +if example > 1: + import matplotlib.pyplot as plt + plt.figure() + for i in np.array(m.history[2:15:3]): plt.plot(i.T) + + plt.figure() + plt.plot(exog) + #plt.plot(p, '.', lw=2) + plt.plot(y_true, lw=2) + + y_pred = m.results.mu # + m.results.alpha #m.results.predict(d) + plt.figure() + plt.subplot(2,2,1) + plt.plot(p, '.') + plt.plot(yp, 'b-', label='true') + plt.plot(y_pred, 'r-', label='GAM') + plt.legend(loc='upper left') + plt.title('gam.GAM Poisson') + + counter = 2 + for ii, xx in zip(['z', 'x1', 'x2'], [z, x[:,0], x[:,1]]): + sortidx = np.argsort(xx) + #plt.figure() + plt.subplot(2, 2, counter) + plt.plot(xx[sortidx], p[sortidx], 'k.', alpha=0.5) + plt.plot(xx[sortidx], yp[sortidx], 'b.', label='true') + plt.plot(xx[sortidx], y_pred[sortidx], 'r.', label='GAM') + plt.legend(loc='upper left') + plt.title('gam.GAM Poisson ' + ii) + counter += 1 + + res = GLM(p, exog_reduced, family=f).fit() + + #plot component, compared to true component + x1 = x[:,0] + x2 = x[:,1] + f1 = exog[:,:order+1].sum(1) - 1 #take out constant + f2 = exog[:,order+1:].sum(1) - 1 + plt.figure() + #Note: need to correct for constant which is indeterminatedly distributed + #plt.plot(x1, m.smoothers[0](x1)-m.smoothers[0].params[0]+1, 'r') + #better would be subtract f(0) m.smoothers[0](np.array([0])) + plt.plot(x1, f1, linewidth=2) + plt.plot(x1, m.smoothers[0](x1)-m.smoothers[0].params[0], 'r') + + plt.figure() + plt.plot(x2, f2, linewidth=2) + plt.plot(x2, m.smoothers[1](x2)-m.smoothers[1].params[0], 'r') + + + plt.show() diff --git a/statsmodels/sandbox/nonparametric/tests/ex_smoothers.py b/statsmodels/sandbox/nonparametric/tests/ex_smoothers.py new file mode 100644 index 0000000..5781658 --- /dev/null +++ b/statsmodels/sandbox/nonparametric/tests/ex_smoothers.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Nov 04 10:51:39 2011 + +@author: josef +""" +from __future__ import print_function +import numpy as np + +from statsmodels.sandbox.nonparametric import smoothers +from statsmodels.regression.linear_model import OLS, WLS + + +#DGP: simple polynomial +order = 3 +sigma_noise = 0.5 +nobs = 100 +lb, ub = -1, 2 +x = np.linspace(lb, ub, nobs) +x = np.sin(x) +exog = x[:,None]**np.arange(order+1) +y_true = exog.sum(1) +y = y_true + sigma_noise * np.random.randn(nobs) + + + +#xind = np.argsort(x) +pmod = smoothers.PolySmoother(2, x) +pmod.fit(y) #no return +y_pred = pmod.predict(x) +error = y - y_pred +mse = (error*error).mean() +print(mse) +res_ols = OLS(y, exog[:,:3]).fit() +print(np.squeeze(pmod.coef) - res_ols.params) + + +weights = np.ones(nobs) +weights[:nobs//3] = 0.1 +weights[-nobs//5:] = 2 + +pmodw = smoothers.PolySmoother(2, x) +pmodw.fit(y, weights=weights) #no return +y_predw = pmodw.predict(x) +error = y - y_predw +mse = (error*error).mean() +print(mse) +res_wls = WLS(y, exog[:,:3], weights=weights).fit() +print(np.squeeze(pmodw.coef) - res_wls.params) + + + +doplot = 1 +if doplot: + import matplotlib.pyplot as plt + plt.plot(y, '.') + plt.plot(y_true, 'b-', label='true') + plt.plot(y_pred, '-', label='poly') + plt.plot(y_predw, '-', label='poly -w') + plt.legend(loc='upper left') + + plt.close() + #plt.show() diff --git a/statsmodels/sandbox/nonparametric/tests/test_kernel_extras.py b/statsmodels/sandbox/nonparametric/tests/test_kernel_extras.py new file mode 100644 index 0000000..b1bf0ba --- /dev/null +++ b/statsmodels/sandbox/nonparametric/tests/test_kernel_extras.py @@ -0,0 +1,78 @@ +import numpy as np +import numpy.testing as npt + +from statsmodels.sandbox.nonparametric.kernel_extras import SemiLinear + + +class KernelExtrasTestBase(object): + @classmethod + def setup_class(cls): + nobs = 60 + np.random.seed(123456) + cls.o = np.random.binomial(2, 0.7, size=(nobs, 1)) + cls.o2 = np.random.binomial(3, 0.7, size=(nobs, 1)) + cls.c1 = np.random.normal(size=(nobs, 1)) + cls.c2 = np.random.normal(10, 1, size=(nobs, 1)) + cls.c3 = np.random.normal(10, 2, size=(nobs, 1)) + cls.noise = np.random.normal(size=(nobs, 1)) + b0 = 0.3 + b1 = 1.2 + b2 = 3.7 # regression coefficients + cls.y = b0 + b1 * cls.c1 + b2 * cls.c2 + cls.noise + cls.y2 = b0 + b1 * cls.c1 + b2 * cls.c2 + cls.o + cls.noise + # Italy data from R's np package (the first 50 obs) R>> data (Italy) + + cls.Italy_gdp = \ + [8.556, 12.262, 9.587, 8.119, 5.537, 6.796, 8.638, + 6.483, 6.212, 5.111, 6.001, 7.027, 4.616, 3.922, + 4.688, 3.957, 3.159, 3.763, 3.829, 5.242, 6.275, + 8.518, 11.542, 9.348, 8.02, 5.527, 6.865, 8.666, + 6.672, 6.289, 5.286, 6.271, 7.94, 4.72, 4.357, + 4.672, 3.883, 3.065, 3.489, 3.635, 5.443, 6.302, + 9.054, 12.485, 9.896, 8.33, 6.161, 7.055, 8.717, + 6.95] + + cls.Italy_year = \ + [1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, + 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1951, 1952, + 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, + 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1952, 1953, 1953, + 1953, 1953, 1953, 1953, 1953, 1953] + + # OECD panel data from NP R>> data(oecdpanel) + cls.growth = \ + [-0.0017584, 0.00740688, 0.03424461, 0.03848719, 0.02932506, + 0.03769199, 0.0466038, 0.00199456, 0.03679607, 0.01917304, + -0.00221, 0.00787269, 0.03441118, -0.0109228, 0.02043064, + -0.0307962, 0.02008947, 0.00580313, 0.00344502, 0.04706358, + 0.03585851, 0.01464953, 0.04525762, 0.04109222, -0.0087903, + 0.04087915, 0.04551403, 0.036916, 0.00369293, 0.0718669, + 0.02577732, -0.0130759, -0.01656641, 0.00676429, 0.08833017, + 0.05092105, 0.02005877, 0.00183858, 0.03903173, 0.05832116, + 0.0494571, 0.02078484, 0.09213897, 0.0070534, 0.08677202, + 0.06830603, -0.00041, 0.0002856, 0.03421225, -0.0036825] + + cls.oecd = \ + [0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0] + + +class TestSemiLinear(KernelExtrasTestBase): + + def test_basic(self): + nobs = 300 + np.random.seed(1234) + C1 = np.random.normal(0,2, size=(nobs, )) + C2 = np.random.normal(2, 1, size=(nobs, )) + e = np.random.normal(size=(nobs, )) + b1 = 1.3 + b2 = -0.7 + Y = b1 * C1 + np.exp(b2 * C2) + e + model = SemiLinear(endog=[Y], exog=[C1], exog_nonparametric=[C2], + var_type='c', k_linear=1) + b_hat = np.squeeze(model.b) + # Only tests for the linear part of the regression + # Currently doesn't work well with the nonparametric part + # Needs some more work + npt.assert_allclose(b1, b_hat, rtol=0.1) diff --git a/statsmodels/sandbox/nonparametric/tests/test_smoothers.py b/statsmodels/sandbox/nonparametric/tests/test_smoothers.py new file mode 100644 index 0000000..75bd36e --- /dev/null +++ b/statsmodels/sandbox/nonparametric/tests/test_smoothers.py @@ -0,0 +1,111 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Nov 04 10:51:39 2011 + +Author: Josef Perktold +License: BSD-3 +""" + +import numpy as np +from numpy.testing import assert_almost_equal, assert_equal + +from statsmodels.sandbox.nonparametric import smoothers +from statsmodels.regression.linear_model import OLS, WLS + + +class CheckSmoother(object): + + def test_predict(self): + assert_almost_equal(self.res_ps.predict(self.x), + self.res2.fittedvalues, decimal=13) + assert_almost_equal(self.res_ps.predict(self.x[:10]), + self.res2.fittedvalues[:10], decimal=13) + + def test_coef(self): + #TODO: check dim of coef + assert_almost_equal(self.res_ps.coef.ravel(), + self.res2.params, decimal=14) + + def test_df(self): + #TODO: make into attributes + assert_equal(self.res_ps.df_model(), self.res2.df_model+1) #with const + assert_equal(self.res_ps.df_fit(), self.res2.df_model+1) #alias + assert_equal(self.res_ps.df_resid(), self.res2.df_resid) + + + +class BasePolySmoother(object): + + @classmethod + def setup_class(cls): + #DGP: simple polynomial + order = 3 + sigma_noise = 0.5 + nobs = 100 + lb, ub = -1, 2 + cls.x = x = np.linspace(lb, ub, nobs) + cls.exog = exog = x[:,None]**np.arange(order+1) + y_true = exog.sum(1) + np.random.seed(987567) + cls.y = y = y_true + sigma_noise * np.random.randn(nobs) + + +class TestPolySmoother1(BasePolySmoother, CheckSmoother): + + @classmethod + def setup_class(cls): + super(TestPolySmoother1, cls).setup_class() #initialize DGP + + y, x, exog = cls.y, cls.x, cls.exog + + #use order = 2 in regression + pmod = smoothers.PolySmoother(2, x) + pmod.fit(y) #no return + + cls.res_ps = pmod + cls.res2 = OLS(y, exog[:,:2+1]).fit() + +class TestPolySmoother2(BasePolySmoother, CheckSmoother): + + @classmethod + def setup_class(cls): + super(TestPolySmoother2, cls).setup_class() #initialize DGP + + y, x, exog = cls.y, cls.x, cls.exog + + #use order = 3 in regression + pmod = smoothers.PolySmoother(3, x) + #pmod.fit(y) #no return + pmod.smooth(y) #no return, use alias for fit + + cls.res_ps = pmod + cls.res2 = OLS(y, exog[:,:3+1]).fit() + +class TestPolySmoother3(BasePolySmoother, CheckSmoother): + + @classmethod + def setup_class(cls): + super(TestPolySmoother3, cls).setup_class() #initialize DGP + + y, x, exog = cls.y, cls.x, cls.exog + nobs = y.shape[0] + weights = np.ones(nobs) + weights[:nobs//3] = 0.1 + weights[-nobs//5:] = 2 + + #use order = 2 in regression + pmod = smoothers.PolySmoother(2, x) + pmod.fit(y, weights=weights) #no return + + cls.res_ps = pmod + cls.res2 = WLS(y, exog[:,:2+1], weights=weights).fit() + + +if __name__ == '__main__': + t1 = TestPolySmoother1() + t1.test_predict() + t1.test_coef() + t1.test_df + + t3 = TestPolySmoother3() + t3.test_predict() diff --git a/statsmodels/sandbox/nos4.mtx b/statsmodels/sandbox/nos4.mtx new file mode 100644 index 0000000..977c10e --- /dev/null +++ b/statsmodels/sandbox/nos4.mtx @@ -0,0 +1,349 @@ +%%MatrixMarket matrix coordinate real symmetric +100 100 347 +1 1 1.7155418000000e-01 +2 1 3.5777088000000e-02 +3 1 -1.0000000000000e-01 +13 1 -7.1554176000000e-02 +14 1 -3.5777088000000e-02 +2 2 4.1788854000000e-01 +12 2 -2.0000000000000e-01 +13 2 -3.5777088000000e-02 +14 2 -1.7888544000000e-02 +3 3 3.4310835000000e-01 +5 3 -1.0000000000000e-01 +4 4 4.3577709000000e-01 +14 4 -2.0000000000000e-01 +5 5 3.4310835000000e-01 +7 5 -1.0000000000000e-01 +13 5 -7.1554176000000e-02 +14 5 3.5777088000000e-02 +17 5 -7.1554176000000e-02 +18 5 -3.5777088000000e-02 +6 6 4.3577709000000e-01 +13 6 3.5777088000000e-02 +14 6 -1.7888544000000e-02 +16 6 -2.0000000000000e-01 +17 6 -3.5777088000000e-02 +18 6 -1.7888544000000e-02 +7 7 3.4310835000000e-01 +9 7 -1.0000000000000e-01 +8 8 4.3577709000000e-01 +18 8 -2.0000000000000e-01 +9 9 1.7155418000000e-01 +10 9 -3.5777088000000e-02 +17 9 -7.1554176000000e-02 +18 9 3.5777088000000e-02 +10 10 4.1788854000000e-01 +17 10 3.5777088000000e-02 +18 10 -1.7888544000000e-02 +20 10 -2.0000000000000e-01 +11 11 1.7155418000000e-01 +12 11 3.5777088000000e-02 +13 11 -1.0000000000000e-01 +23 11 -7.1554176000000e-02 +24 11 -3.5777088000000e-02 +12 12 4.1788854000000e-01 +22 12 -2.0000000000000e-01 +23 12 -3.5777088000000e-02 +24 12 -1.7888544000000e-02 +13 13 3.4310835000000e-01 +15 13 -1.0000000000000e-01 +14 14 4.3577709000000e-01 +24 14 -2.0000000000000e-01 +15 15 3.4310835000000e-01 +17 15 -1.0000000000000e-01 +23 15 -7.1554176000000e-02 +24 15 3.5777088000000e-02 +27 15 -7.1554176000000e-02 +28 15 -3.5777088000000e-02 +16 16 4.3577709000000e-01 +23 16 3.5777088000000e-02 +24 16 -1.7888544000000e-02 +26 16 -2.0000000000000e-01 +27 16 -3.5777088000000e-02 +28 16 -1.7888544000000e-02 +17 17 3.4310835000000e-01 +19 17 -1.0000000000000e-01 +18 18 4.3577709000000e-01 +28 18 -2.0000000000000e-01 +19 19 1.7155418000000e-01 +20 19 -3.5777088000000e-02 +27 19 -7.1554176000000e-02 +28 19 3.5777088000000e-02 +20 20 4.1788854000000e-01 +27 20 3.5777088000000e-02 +28 20 -1.7888544000000e-02 +30 20 -2.0000000000000e-01 +21 21 1.7155418000000e-01 +22 21 3.5777088000000e-02 +23 21 -1.0000000000000e-01 +33 21 -7.1554176000000e-02 +34 21 -3.5777088000000e-02 +22 22 4.1788854000000e-01 +32 22 -2.0000000000000e-01 +33 22 -3.5777088000000e-02 +34 22 -1.7888544000000e-02 +23 23 3.4310835000000e-01 +25 23 -1.0000000000000e-01 +24 24 4.3577709000000e-01 +34 24 -2.0000000000000e-01 +25 25 3.4310835000000e-01 +27 25 -1.0000000000000e-01 +33 25 -7.1554176000000e-02 +34 25 3.5777088000000e-02 +37 25 -7.1554176000000e-02 +38 25 -3.5777088000000e-02 +26 26 4.3577709000000e-01 +33 26 3.5777088000000e-02 +34 26 -1.7888544000000e-02 +36 26 -2.0000000000000e-01 +37 26 -3.5777088000000e-02 +38 26 -1.7888544000000e-02 +27 27 3.4310835000000e-01 +29 27 -1.0000000000000e-01 +28 28 4.3577709000000e-01 +38 28 -2.0000000000000e-01 +29 29 1.7155418000000e-01 +30 29 -3.5777088000000e-02 +37 29 -7.1554176000000e-02 +38 29 3.5777088000000e-02 +30 30 4.1788854000000e-01 +37 30 3.5777088000000e-02 +38 30 -1.7888544000000e-02 +40 30 -2.0000000000000e-01 +31 31 1.7155418000000e-01 +32 31 3.5777088000000e-02 +33 31 -1.0000000000000e-01 +43 31 -7.1554176000000e-02 +44 31 -3.5777088000000e-02 +32 32 4.1788854000000e-01 +42 32 -2.0000000000000e-01 +43 32 -3.5777088000000e-02 +44 32 -1.7888544000000e-02 +33 33 3.4310835000000e-01 +35 33 -1.0000000000000e-01 +34 34 4.3577709000000e-01 +44 34 -2.0000000000000e-01 +35 35 3.4310835000000e-01 +37 35 -1.0000000000000e-01 +43 35 -7.1554176000000e-02 +44 35 3.5777088000000e-02 +47 35 -7.1554176000000e-02 +48 35 -3.5777088000000e-02 +36 36 4.3577709000000e-01 +43 36 3.5777088000000e-02 +44 36 -1.7888544000000e-02 +46 36 -2.0000000000000e-01 +47 36 -3.5777088000000e-02 +48 36 -1.7888544000000e-02 +37 37 3.4310835000000e-01 +39 37 -1.0000000000000e-01 +38 38 4.3577709000000e-01 +48 38 -2.0000000000000e-01 +39 39 1.7155418000000e-01 +40 39 -3.5777088000000e-02 +47 39 -7.1554176000000e-02 +48 39 3.5777088000000e-02 +40 40 4.1788854000000e-01 +47 40 3.5777088000000e-02 +48 40 -1.7888544000000e-02 +50 40 -2.0000000000000e-01 +41 41 1.7155418000000e-01 +42 41 3.5777088000000e-02 +43 41 -1.0000000000000e-01 +53 41 -7.1554176000000e-02 +54 41 -3.5777088000000e-02 +42 42 4.1788854000000e-01 +52 42 -2.0000000000000e-01 +53 42 -3.5777088000000e-02 +54 42 -1.7888544000000e-02 +43 43 3.4310835000000e-01 +45 43 -1.0000000000000e-01 +44 44 4.3577709000000e-01 +54 44 -2.0000000000000e-01 +45 45 3.4310835000000e-01 +47 45 -1.0000000000000e-01 +53 45 -7.1554176000000e-02 +54 45 3.5777088000000e-02 +57 45 -7.1554176000000e-02 +58 45 -3.5777088000000e-02 +46 46 4.3577709000000e-01 +53 46 3.5777088000000e-02 +54 46 -1.7888544000000e-02 +56 46 -2.0000000000000e-01 +57 46 -3.5777088000000e-02 +58 46 -1.7888544000000e-02 +47 47 3.4310835000000e-01 +49 47 -1.0000000000000e-01 +48 48 4.3577709000000e-01 +58 48 -2.0000000000000e-01 +49 49 1.7155418000000e-01 +50 49 -3.5777088000000e-02 +57 49 -7.1554176000000e-02 +58 49 3.5777088000000e-02 +50 50 4.1788854000000e-01 +57 50 3.5777088000000e-02 +58 50 -1.7888544000000e-02 +60 50 -2.0000000000000e-01 +51 51 1.7155418000000e-01 +52 51 3.5777088000000e-02 +53 51 -1.0000000000000e-01 +63 51 -7.1554176000000e-02 +64 51 -3.5777088000000e-02 +52 52 4.1788854000000e-01 +62 52 -2.0000000000000e-01 +63 52 -3.5777088000000e-02 +64 52 -1.7888544000000e-02 +53 53 3.4310835000000e-01 +55 53 -1.0000000000000e-01 +54 54 4.3577709000000e-01 +64 54 -2.0000000000000e-01 +55 55 3.4310835000000e-01 +57 55 -1.0000000000000e-01 +63 55 -7.1554176000000e-02 +64 55 3.5777088000000e-02 +67 55 -7.1554176000000e-02 +68 55 -3.5777088000000e-02 +56 56 4.3577709000000e-01 +63 56 3.5777088000000e-02 +64 56 -1.7888544000000e-02 +66 56 -2.0000000000000e-01 +67 56 -3.5777088000000e-02 +68 56 -1.7888544000000e-02 +57 57 3.4310835000000e-01 +59 57 -1.0000000000000e-01 +58 58 4.3577709000000e-01 +68 58 -2.0000000000000e-01 +59 59 1.7155418000000e-01 +60 59 -3.5777088000000e-02 +67 59 -7.1554176000000e-02 +68 59 3.5777088000000e-02 +60 60 4.1788854000000e-01 +67 60 3.5777088000000e-02 +68 60 -1.7888544000000e-02 +70 60 -2.0000000000000e-01 +61 61 1.7155418000000e-01 +62 61 3.5777088000000e-02 +63 61 -1.0000000000000e-01 +73 61 -7.1554176000000e-02 +74 61 -3.5777088000000e-02 +62 62 4.1788854000000e-01 +72 62 -2.0000000000000e-01 +73 62 -3.5777088000000e-02 +74 62 -1.7888544000000e-02 +63 63 3.4310835000000e-01 +65 63 -1.0000000000000e-01 +64 64 4.3577709000000e-01 +74 64 -2.0000000000000e-01 +65 65 3.4310835000000e-01 +67 65 -1.0000000000000e-01 +73 65 -7.1554176000000e-02 +74 65 3.5777088000000e-02 +77 65 -7.1554176000000e-02 +78 65 -3.5777088000000e-02 +66 66 4.3577709000000e-01 +73 66 3.5777088000000e-02 +74 66 -1.7888544000000e-02 +76 66 -2.0000000000000e-01 +77 66 -3.5777088000000e-02 +78 66 -1.7888544000000e-02 +67 67 3.4310835000000e-01 +69 67 -1.0000000000000e-01 +68 68 4.3577709000000e-01 +78 68 -2.0000000000000e-01 +69 69 1.7155418000000e-01 +70 69 -3.5777088000000e-02 +77 69 -7.1554176000000e-02 +78 69 3.5777088000000e-02 +70 70 4.1788854000000e-01 +77 70 3.5777088000000e-02 +78 70 -1.7888544000000e-02 +80 70 -2.0000000000000e-01 +71 71 1.7155418000000e-01 +72 71 3.5777088000000e-02 +73 71 -1.0000000000000e-01 +83 71 -7.1554176000000e-02 +84 71 -3.5777088000000e-02 +72 72 4.1788854000000e-01 +82 72 -2.0000000000000e-01 +83 72 -3.5777088000000e-02 +84 72 -1.7888544000000e-02 +73 73 3.4310835000000e-01 +75 73 -1.0000000000000e-01 +74 74 4.3577709000000e-01 +84 74 -2.0000000000000e-01 +75 75 3.4310835000000e-01 +77 75 -1.0000000000000e-01 +83 75 -7.1554176000000e-02 +84 75 3.5777088000000e-02 +87 75 -7.1554176000000e-02 +88 75 -3.5777088000000e-02 +76 76 4.3577709000000e-01 +83 76 3.5777088000000e-02 +84 76 -1.7888544000000e-02 +86 76 -2.0000000000000e-01 +87 76 -3.5777088000000e-02 +88 76 -1.7888544000000e-02 +77 77 3.4310835000000e-01 +79 77 -1.0000000000000e-01 +78 78 4.3577709000000e-01 +88 78 -2.0000000000000e-01 +79 79 1.7155418000000e-01 +80 79 -3.5777088000000e-02 +87 79 -7.1554176000000e-02 +88 79 3.5777088000000e-02 +80 80 4.1788854000000e-01 +87 80 3.5777088000000e-02 +88 80 -1.7888544000000e-02 +90 80 -2.0000000000000e-01 +81 81 1.7155418000000e-01 +82 81 3.5777088000000e-02 +83 81 -1.0000000000000e-01 +93 81 -7.1554176000000e-02 +94 81 -3.5777088000000e-02 +82 82 4.1788854000000e-01 +92 82 -2.0000000000000e-01 +93 82 -3.5777088000000e-02 +94 82 -1.7888544000000e-02 +83 83 3.4310835000000e-01 +85 83 -1.0000000000000e-01 +84 84 4.3577709000000e-01 +94 84 -2.0000000000000e-01 +85 85 3.4310835000000e-01 +87 85 -1.0000000000000e-01 +93 85 -7.1554176000000e-02 +94 85 3.5777088000000e-02 +97 85 -7.1554176000000e-02 +98 85 -3.5777088000000e-02 +86 86 4.3577709000000e-01 +93 86 3.5777088000000e-02 +94 86 -1.7888544000000e-02 +96 86 -2.0000000000000e-01 +97 86 -3.5777088000000e-02 +98 86 -1.7888544000000e-02 +87 87 3.4310835000000e-01 +89 87 -1.0000000000000e-01 +88 88 4.3577709000000e-01 +98 88 -2.0000000000000e-01 +89 89 1.7155418000000e-01 +90 89 -3.5777088000000e-02 +97 89 -7.1554176000000e-02 +98 89 3.5777088000000e-02 +90 90 4.1788854000000e-01 +97 90 3.5777088000000e-02 +98 90 -1.7888544000000e-02 +100 90 -2.0000000000000e-01 +91 91 1.0000000000000e-01 +93 91 -1.0000000000000e-01 +92 92 2.0000000000000e-01 +93 93 3.4310835000000e-01 +95 93 -1.0000000000000e-01 +94 94 2.3577709000000e-01 +95 95 2.0000000000000e-01 +97 95 -1.0000000000000e-01 +96 96 2.0000000000000e-01 +97 97 3.4310835000000e-01 +99 97 -1.0000000000000e-01 +98 98 2.3577709000000e-01 +99 99 1.0000000000000e-01 +100 100 2.0000000000000e-01 diff --git a/statsmodels/sandbox/panel/__init__.py b/statsmodels/sandbox/panel/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/sandbox/panel/correlation_structures.py b/statsmodels/sandbox/panel/correlation_structures.py new file mode 100644 index 0000000..de772ed --- /dev/null +++ b/statsmodels/sandbox/panel/correlation_structures.py @@ -0,0 +1,204 @@ +# -*- coding: utf-8 -*- +"""Correlation and Covariance Structures + +Created on Sat Dec 17 20:46:05 2011 + +Author: Josef Perktold +License: BSD-3 + + +Reference +--------- +quick reading of some section on mixed effects models in S-plus and of +outline for GEE. + +""" + +import numpy as np + +from statsmodels.regression.linear_model import yule_walker +from statsmodels.stats.moment_helpers import cov2corr + + +def corr_equi(k_vars, rho): + '''create equicorrelated correlation matrix with rho on off diagonal + + Parameters + ---------- + k_vars : int + number of variables, correlation matrix will be (k_vars, k_vars) + rho : float + correlation between any two random variables + + Returns + ------- + corr : ndarray (k_vars, k_vars) + correlation matrix + + ''' + corr = np.empty((k_vars, k_vars)) + corr.fill(rho) + corr[np.diag_indices_from(corr)] = 1 + return corr + + +def corr_ar(k_vars, ar): + '''create autoregressive correlation matrix + + This might be MA, not AR, process if used for residual process - check + + Parameters + ---------- + ar : array_like, 1d + AR lag-polynomial including 1 for lag 0 + + + ''' + from scipy.linalg import toeplitz + if len(ar) < k_vars: + ar_ = np.zeros(k_vars) + ar_[:len(ar)] = ar + ar = ar_ + + return toeplitz(ar) + + +def corr_arma(k_vars, ar, ma): + '''create arma correlation matrix + + converts arma to autoregressive lag-polynomial with k_var lags + + ar and arma might need to be switched for generating residual process + + Parameters + ---------- + ar : array_like, 1d + AR lag-polynomial including 1 for lag 0 + ma : array_like, 1d + MA lag-polynomial + + ''' + from scipy.linalg import toeplitz + from statsmodels.tsa.arima_process import arma2ar + + # TODO: flesh out the comment below about a bug in arma2ar + ar = arma2ar(ar, ma, lags=k_vars)[:k_vars] # bug in arma2ar + + return toeplitz(ar) + + +def corr2cov(corr, std): + '''convert correlation matrix to covariance matrix + + Parameters + ---------- + corr : ndarray, (k_vars, k_vars) + correlation matrix + std : ndarray, (k_vars,) or scalar + standard deviation for the vector of random variables. If scalar, then + it is assumed that all variables have the same scale given by std. + + ''' + if np.size(std) == 1: + std = std*np.ones(corr.shape[0]) + cov = corr * std[:, None] * std[None, :] # same as outer product + return cov + + +def whiten_ar(x, ar_coefs, order): + """ + Whiten a series of columns according to an AR(p) covariance structure. + + This drops the initial conditions (Cochran-Orcut ?) + Uses loop, so for short ar polynomials only, use lfilter otherwise + + This needs to improve, option on method, full additional to conditional + + Parameters + ---------- + x : array-like, (nobs,) or (nobs, k_vars) + The data to be whitened along axis 0 + ar_coefs : array + coefficients of AR lag- polynomial, TODO: ar or ar_coefs? + order : int + + Returns + ------- + x_new : ndarray + transformed array + + """ + + rho = ar_coefs + + x = np.array(x, np.float64) + _x = x.copy() + # TODO: dimension handling is not DRY + # I think previous code worked for 2d because of single index rows in np + if x.ndim == 2: + rho = rho[:, None] + for i in range(order): + _x[(i+1):] = _x[(i+1):] - rho[i] * x[0:-(i+1)] + + return _x[order:] + + +def yule_walker_acov(acov, order=1, method="unbiased", df=None, inv=False): + """ + Estimate AR(p) parameters from acovf using Yule-Walker equation. + + + Parameters + ---------- + acov : array-like, 1d + auto-covariance + order : integer, optional + The order of the autoregressive process. Default is 1. + inv : bool + If inv is True the inverse of R is also returned. Default is False. + + Returns + ------- + rho : ndarray + The estimated autoregressive coefficients + sigma + TODO + Rinv : ndarray + inverse of the Toepliz matrix + + """ + return yule_walker(acov, order=order, method=method, df=df, inv=inv, + demean=False) + + +class ARCovariance(object): + ''' + experimental class for Covariance of AR process + classmethod? staticmethods? + ''' + + def __init__(self, ar=None, ar_coefs=None, sigma=1.): + if ar is not None: + self.ar = ar + self.ar_coefs = -ar[1:] + self.k_lags = len(ar) + elif ar_coefs is not None: + self.arcoefs = ar_coefs + self.ar = np.hstack(([1], -ar_coefs)) + self.k_lags = len(self.ar) + + @classmethod + def fit(cls, cov, order, **kwds): + rho, sigma = yule_walker_acov(cov, order=order, **kwds) + return cls(ar_coefs=rho) + + def whiten(self, x): + return whiten_ar(x, self.ar_coefs, order=self.order) + + def corr(self, k_vars=None): + if k_vars is None: + k_vars = len(self.ar) # TODO: this could move into corr_arr + return corr_ar(k_vars, self.ar) + + def cov(self, k_vars=None): + return cov2corr(self.corr(k_vars=None), self.sigma) diff --git a/statsmodels/sandbox/panel/mixed.py b/statsmodels/sandbox/panel/mixed.py new file mode 100644 index 0000000..aced5c3 --- /dev/null +++ b/statsmodels/sandbox/panel/mixed.py @@ -0,0 +1,668 @@ +""" +Mixed effects models + +Author: Jonathan Taylor +Author: Josef Perktold +License: BSD-3 + + +Notes +------ + +It's pretty slow if the model is misspecified, in my first example convergence +in loglike is not reached within 2000 iterations. Added stop criteria based +on convergence of parameters instead. + +With correctly specified model, convergence is fast, in 6 iterations in +example. + +""" +from __future__ import print_function +import numpy as np +import numpy.linalg as L + +from statsmodels.base.model import LikelihoodModelResults +from statsmodels.tools.decorators import cache_readonly + +class Unit(object): + """ + Individual experimental unit for + EM implementation of (repeated measures) + mixed effects model. + + \'Maximum Likelihood Computations with Repeated Measures: + Application of the EM Algorithm\' + + Nan Laird; Nicholas Lange; Daniel Stram + + Journal of the American Statistical Association, + Vol. 82, No. 397. (Mar., 1987), pp. 97-105. + + + Parameters + ---------- + endog : ndarray, (nobs,) + response, endogenous variable + exog_fe : ndarray, (nobs, k_vars_fe) + explanatory variables as regressors or fixed effects, + should include exog_re to correct mean of random + coefficients, see Notes + exog_re : ndarray, (nobs, k_vars_re) + explanatory variables or random effects or coefficients + + Notes + ----- + If the exog_re variables are not included in exog_fe, then the + mean of the random constants or coefficients are not centered. + The covariance matrix of the random parameter estimates are not + centered in this case. (That's how it looks to me. JP) + + """ + + + def __init__(self, endog, exog_fe, exog_re): + + self.Y = endog + self.X = exog_fe + self.Z = exog_re + self.n = endog.shape[0] + + def _compute_S(self, D, sigma): + """covariance of observations (nobs_i, nobs_i) (JP check) + Display (3.3) from Laird, Lange, Stram (see help(Unit)) + """ + self.S = (np.identity(self.n) * sigma**2 + + np.dot(self.Z, np.dot(D, self.Z.T))) + + def _compute_W(self): + """inverse covariance of observations (nobs_i, nobs_i) (JP check) + Display (3.2) from Laird, Lange, Stram (see help(Unit)) + """ + self.W = L.inv(self.S) + + def compute_P(self, Sinv): + """projection matrix (nobs_i, nobs_i) (M in regression ?) (JP check, guessing) + Display (3.10) from Laird, Lange, Stram (see help(Unit)) + + W - W X Sinv X' W' + """ + t = np.dot(self.W, self.X) + self.P = self.W - np.dot(np.dot(t, Sinv), t.T) + + def _compute_r(self, alpha): + """residual after removing fixed effects + + Display (3.5) from Laird, Lange, Stram (see help(Unit)) + """ + self.r = self.Y - np.dot(self.X, alpha) + + def _compute_b(self, D): + """coefficients for random effects/coefficients + Display (3.4) from Laird, Lange, Stram (see help(Unit)) + + D Z' W r + """ + self.b = np.dot(D, np.dot(np.dot(self.Z.T, self.W), self.r)) + + def fit(self, a, D, sigma): + """ + Compute unit specific parameters in + Laird, Lange, Stram (see help(Unit)). + + Displays (3.2)-(3.5). + """ + + self._compute_S(D, sigma) #random effect plus error covariance + self._compute_W() #inv(S) + self._compute_r(a) #residual after removing fixed effects/exogs + self._compute_b(D) #? coefficients on random exog, Z ? + + def compute_xtwy(self): + """ + Utility function to compute X^tWY (transposed ?) for Unit instance. + """ + return np.dot(np.dot(self.W, self.Y), self.X) #is this transposed ? + + def compute_xtwx(self): + """ + Utility function to compute X^tWX for Unit instance. + """ + return np.dot(np.dot(self.X.T, self.W), self.X) + + def cov_random(self, D, Sinv=None): + """ + Approximate covariance of estimates of random effects. Just after + Display (3.10) in Laird, Lange, Stram (see help(Unit)). + + D - D' Z' P Z D + + Notes + ----- + In example where the mean of the random coefficient is not zero, this + is not a covariance but a non-centered moment. (proof by example) + + """ + if Sinv is not None: + self.compute_P(Sinv) + t = np.dot(self.Z, D) + return D - np.dot(np.dot(t.T, self.P), t) + + def logL(self, a, ML=False): + """ + Individual contributions to the log-likelihood, tries to return REML + contribution by default though this requires estimated + fixed effect a to be passed as an argument. + + no constant with pi included + + a is not used if ML=true (should be a=None in signature) + If ML is false, then the residuals are calculated for the given fixed + effects parameters a. + """ + + if ML: + return (np.log(L.det(self.W)) - (self.r * np.dot(self.W, self.r)).sum()) / 2. + else: + if a is None: + raise ValueError('need fixed effect a for REML contribution to log-likelihood') + r = self.Y - np.dot(self.X, a) + return (np.log(L.det(self.W)) - (r * np.dot(self.W, r)).sum()) / 2. + + def deviance(self, ML=False): + '''deviance defined as 2 times the negative loglikelihood + + ''' + return - 2 * self.logL(ML=ML) + + +class OneWayMixed(object): + + """ + Model for + EM implementation of (repeated measures) + mixed effects model. + + \'Maximum Likelihood Computations with Repeated Measures: + Application of the EM Algorithm\' + + Nan Laird; Nicholas Lange; Daniel Stram + + Journal of the American Statistical Association, + Vol. 82, No. 397. (Mar., 1987), pp. 97-105. + + + Parameters + ---------- + units : list of units + the data for the individual units should be attached to the units + response, fixed and random : formula expression, called as argument to Formula + + + *available results and alias* + + (subject to renaming, and coversion to cached attributes) + + params() -> self.a : coefficient for fixed effects or exog + cov_params() -> self.Sinv : covariance estimate of fixed effects/exog + bse() : standard deviation of params + + cov_random -> self.D : estimate of random effects covariance + params_random_units -> [self.units[...].b] : random coefficient for each unit + + + *attributes* + + (others) + + self.m : number of units + self.p : k_vars_fixed + self.q : k_vars_random + self.N : nobs (total) + + + Notes + ----- + Fit returns a result instance, but not all results that use the inherited + methods have been checked. + + Parameters need to change: drop formula and we require a naming convention for + the units (currently Y,X,Z). - endog, exog_fe, endog_re ? + + logL does not include constant, e.g. sqrt(pi) + llf is for MLE not for REML + + + convergence criteria for iteration + Currently convergence in the iterative solver is reached if either the loglikelihood + *or* the fixed effects parameter don't change above tolerance. + + In some examples, the fixed effects parameters converged to 1e-5 within 150 iterations + while the log likelihood did not converge within 2000 iterations. This might be + the case if the fixed effects parameters are well estimated, but there are still + changes in the random effects. If params_rtol and params_atol are set at a higher + level, then the random effects might not be estimated to a very high precision. + + The above was with a misspecified model, without a constant. With a + correctly specified model convergence is fast, within a few iterations + (6 in example). + + """ + + def __init__(self, units): + self.units = units + self.m = len(self.units) + self.n_units = self.m + + self.N = sum(unit.X.shape[0] for unit in self.units) + self.nobs = self.N #alias for now + + # Determine size of fixed effects + d = self.units[0].X + self.p = d.shape[1] # d.shape = p + self.k_exog_fe = self.p #alias for now + self.a = np.zeros(self.p, np.float64) + + # Determine size of D, and sensible initial estimates + # of sigma and D + d = self.units[0].Z + self.q = d.shape[1] # Z.shape = q + self.k_exog_re = self.q #alias for now + self.D = np.zeros((self.q,)*2, np.float64) + self.sigma = 1. + + self.dev = np.inf #initialize for iterations, move it? + + def _compute_a(self): + """fixed effects parameters + + Display (3.1) of + Laird, Lange, Stram (see help(Mixed)). + + """ + + for unit in self.units: + unit.fit(self.a, self.D, self.sigma) + + S = sum([unit.compute_xtwx() for unit in self.units]) + Y = sum([unit.compute_xtwy() for unit in self.units]) + + self.Sinv = L.pinv(S) + self.a = np.dot(self.Sinv, Y) + + def _compute_sigma(self, ML=False): + """ + Estimate sigma. If ML is True, return the ML estimate of sigma, + else return the REML estimate. + + If ML, this is (3.6) in Laird, Lange, Stram (see help(Mixed)), + otherwise it corresponds to (3.8). + + sigma is the standard deviation of the noise (residual) + + """ + sigmasq = 0. + for unit in self.units: + if ML: + W = unit.W + else: + unit.compute_P(self.Sinv) + W = unit.P + t = unit.r - np.dot(unit.Z, unit.b) + sigmasq += np.power(t, 2).sum() + sigmasq += self.sigma**2 * np.trace(np.identity(unit.n) - + self.sigma**2 * W) + self.sigma = np.sqrt(sigmasq / self.N) + + def _compute_D(self, ML=False): + """ + Estimate random effects covariance D. + If ML is True, return the ML estimate of sigma, + else return the REML estimate. + + If ML, this is (3.7) in Laird, Lange, Stram (see help(Mixed)), + otherwise it corresponds to (3.9). + + """ + D = 0. + for unit in self.units: + if ML: + W = unit.W + else: + unit.compute_P(self.Sinv) + W = unit.P + D += np.multiply.outer(unit.b, unit.b) + t = np.dot(unit.Z, self.D) + D += self.D - np.dot(np.dot(t.T, W), t) + + self.D = D / self.m + + def cov_fixed(self): + """ + Approximate covariance of estimates of fixed effects. + + Just after Display (3.10) in Laird, Lange, Stram (see help(Mixed)). + """ + return self.Sinv + + #----------- alias (JP) move to results class ? + + def cov_random(self): + """ + Estimate random effects covariance D. + + If ML is True, return the ML estimate of sigma, else return the REML estimate. + + see _compute_D, alias for self.D + """ + return self.D + + @property + def params(self): + ''' + estimated coefficients for exogeneous variables or fixed effects + + see _compute_a, alias for self.a + ''' + return self.a + + @property + def params_random_units(self): + '''random coefficients for each unit + + ''' + return np.array([unit.b for unit in self.units]) + + def cov_params(self): + ''' + estimated covariance for coefficients for exogeneous variables or fixed effects + + see cov_fixed, and Sinv in _compute_a + ''' + return self.cov_fixed() + + + @property + def bse(self): + ''' + standard errors of estimated coefficients for exogeneous variables (fixed) + + ''' + return np.sqrt(np.diag(self.cov_params())) + + #----------- end alias + + def deviance(self, ML=False): + '''deviance defined as 2 times the negative loglikelihood + + ''' + return -2 * self.logL(ML=ML) + + + def logL(self, ML=False): + """ + Return log-likelihood, REML by default. + + """ + #I don't know what the difference between REML and ML is here. + logL = 0. + + for unit in self.units: + logL += unit.logL(a=self.a, ML=ML) + if not ML: + logL += np.log(L.det(self.Sinv)) / 2 + return logL + + def initialize(self): + S = sum([np.dot(unit.X.T, unit.X) for unit in self.units]) + Y = sum([np.dot(unit.X.T, unit.Y) for unit in self.units]) + self.a = L.lstsq(S, Y, rcond=-1)[0] + + D = 0 + t = 0 + sigmasq = 0 + for unit in self.units: + unit.r = unit.Y - np.dot(unit.X, self.a) + if self.q > 1: + unit.b = L.lstsq(unit.Z, unit.r, rcond=-1)[0] + else: + Z = unit.Z.reshape((unit.Z.shape[0], 1)) + unit.b = L.lstsq(Z, unit.r, rcond=-1)[0] + + sigmasq += (np.power(unit.Y, 2).sum() - + (self.a * np.dot(unit.X.T, unit.Y)).sum() - + (unit.b * np.dot(unit.Z.T, unit.r)).sum()) + D += np.multiply.outer(unit.b, unit.b) + t += L.pinv(np.dot(unit.Z.T, unit.Z)) + + #TODO: JP added df_resid check + self.df_resid = (self.N - (self.m - 1) * self.q - self.p) + sigmasq /= (self.N - (self.m - 1) * self.q - self.p) + self.sigma = np.sqrt(sigmasq) + self.D = (D - sigmasq * t) / self.m + + def cont(self, ML=False, rtol=1.0e-05, params_rtol=1e-5, params_atol=1e-4): + '''convergence check for iterative estimation + + ''' + + self.dev, old = self.deviance(ML=ML), self.dev + + #self.history.append(np.hstack((self.dev, self.a))) + self.history['llf'].append(self.dev) + self.history['params'].append(self.a.copy()) + self.history['D'].append(self.D.copy()) + + if np.fabs((self.dev - old) / self.dev) < rtol: #why is there times `*`? + #print np.fabs((self.dev - old)), self.dev, old + self.termination = 'llf' + return False + + #break if parameters converged + #TODO: check termination conditions, OR or AND + if np.all(np.abs(self.a - self._a_old) < (params_rtol * self.a + params_atol)): + self.termination = 'params' + return False + + self._a_old = self.a.copy() + return True + + def fit(self, maxiter=100, ML=False, rtol=1.0e-05, params_rtol=1e-6, params_atol=1e-6): + + #initialize for convergence criteria + self._a_old = np.inf * self.a + self.history = {'llf':[], 'params':[], 'D':[]} + + for i in range(maxiter): + self._compute_a() #a, Sinv : params, cov_params of fixed exog + self._compute_sigma(ML=ML) #sigma MLE or REML of sigma ? + self._compute_D(ML=ML) #D : covariance of random effects, MLE or REML + if not self.cont(ML=ML, rtol=rtol, params_rtol=params_rtol, + params_atol=params_atol): + break + else: #if end of loop is reached without break + self.termination = 'maxiter' + print('Warning: maximum number of iterations reached') + + self.iterations = i + + results = OneWayMixedResults(self) + #compatibility functions for fixed effects/exog + results.scale = 1 + results.normalized_cov_params = self.cov_params() + + return results + + +class OneWayMixedResults(LikelihoodModelResults): + '''Results class for OneWayMixed models + + ''' + def __init__(self, model): + #TODO: check, change initialization to more standard pattern + self.model = model + self.params = model.params + + + #need to overwrite this because we don't have a standard + #model.loglike yet + #TODO: what todo about REML loglike, logL is not normalized + @cache_readonly + def llf(self): + return self.model.logL(ML=True) + + @property + def params_random_units(self): + return self.model.params_random_units + + def cov_random(self): + return self.model.cov_random() + + def mean_random(self, idx='lastexog'): + if idx == 'lastexog': + meanr = self.params[-self.model.k_exog_re:] + elif isinstance(idx, list): + if not len(idx) == self.model.k_exog_re: + raise ValueError('length of idx different from k_exog_re') + else: + meanr = self.params[idx] + else: + meanr = np.zeros(self.model.k_exog_re) + + return meanr + + def std_random(self): + return np.sqrt(np.diag(self.cov_random())) + + def plot_random_univariate(self, bins=None, use_loc=True): + '''create plot of marginal distribution of random effects + + Parameters + ---------- + bins : int or bin edges + option for bins in matplotlibs hist method. Current default is not + very sophisticated. All distributions use the same setting for + bins. + use_loc : bool + If True, then the distribution with mean given by the fixed + effect is used. + + Returns + ------- + fig : matplotlib figure instance + figure with subplots + + Notes + ----- + What can make this fancier? + + Bin edges will not make sense if loc or scale differ across random + effect distributions. + + ''' + #outsource this + import matplotlib.pyplot as plt + from scipy.stats import norm as normal + fig = plt.figure() + k = self.model.k_exog_re + if k > 3: + rows, cols = int(np.ceil(k * 0.5)), 2 + else: + rows, cols = k, 1 + if bins is None: + #bins = self.model.n_units // 20 #TODO: just roughly, check + #bins = np.sqrt(self.model.n_units) + bins = 5 + 2 * self.model.n_units**(1./3.) + + if use_loc: + loc = self.mean_random() + else: + loc = [0]*k + + scale = self.std_random() + + for ii in range(k): + ax = fig.add_subplot(rows, cols, ii) + + freq, bins_, _ = ax.hist(loc[ii] + self.params_random_units[:,ii], + bins=bins, normed=True) + points = np.linspace(bins_[0], bins_[-1], 200) + + #ax.plot(points, normal.pdf(points, loc=loc, scale=scale)) + #loc of sample is approx. zero, with Z appended to X + #alternative, add fixed to mean + ax.set_title('Random Effect %d Marginal Distribution' % ii) + ax.plot(points, + normal.pdf(points, loc=loc[ii], scale=scale[ii]), + 'r') + + return fig + + def plot_scatter_pairs(self, idx1, idx2, title=None, ax=None): + '''create scatter plot of two random effects + + Parameters + ---------- + idx1, idx2 : int + indices of the two random effects to display, corresponding to + columns of exog_re + title : None or string + If None, then a default title is added + ax : None or matplotlib axis instance + If None, then a figure with one axis is created and returned. + If ax is not None, then the scatter plot is created on it, and + this axis instance is returned. + + Returns + ------- + ax_or_fig : axis or figure instance + see ax parameter + + Notes + ----- + Still needs ellipse from estimated parameters + + ''' + import matplotlib.pyplot as plt + if ax is None: + fig = plt.figure() + ax = fig.add_subplot(1,1,1) + ax_or_fig = fig + + re1 = self.params_random_units[:,idx1] + re2 = self.params_random_units[:,idx2] + ax.plot(re1, re2, 'o', alpha=0.75) + if title is None: + title = 'Random Effects %d and %d' % (idx1, idx2) + ax.set_title(title) + ax_or_fig = ax + + return ax_or_fig + + def plot_scatter_all_pairs(self, title=None): + from statsmodels.graphics.plot_grids import scatter_ellipse + if self.model.k_exog_re < 2: + raise ValueError('less than two variables available') + + return scatter_ellipse(self.params_random_units, + #ell_kwds not implemented yet + ell_kwds={'color':'r'}) + +# #note I have written this already as helper function, get it +# import matplotlib.pyplot as plt +# #from scipy.stats import norm as normal +# fig = plt.figure() +# k = self.model.k_exog_re +# n_plots = k * (k - 1) // 2 +# if n_plots > 3: +# rows, cols = int(np.ceil(n_plots * 0.5)), 2 +# else: +# rows, cols = n_plots, 1 +# +# count = 1 +# for ii in range(k): +# for jj in range(ii): +# ax = fig.add_subplot(rows, cols, count) +# self.plot_scatter_pairs(ii, jj, title=None, ax=ax) +# count += 1 +# +# return fig diff --git a/statsmodels/sandbox/panel/panel_short.py b/statsmodels/sandbox/panel/panel_short.py new file mode 100644 index 0000000..8799fae --- /dev/null +++ b/statsmodels/sandbox/panel/panel_short.py @@ -0,0 +1,235 @@ +# -*- coding: utf-8 -*- +"""Panel data analysis for short T and large N + +Created on Sat Dec 17 19:32:00 2011 + +Author: Josef Perktold +License: BSD-3 + + +starting from scratch before looking at references again +just a stub to get the basic structure for group handling +target outsource as much as possible for reuse + +Notes +----- + +this is the basic version using a loop over individuals which will be more +widely applicable. Depending on the special cases, there will be faster +implementations possible (sparse, kroneker, ...) + +the only two group specific methods or get_within_cov and whiten + +""" + +import numpy as np +from statsmodels.regression.linear_model import OLS, GLS +from statsmodels.tools.grouputils import GroupSorted + + +def sum_outer_product_loop(x, group_iter): + '''sum outerproduct dot(x_i, x_i.T) over individuals + + loop version + + ''' + + mom = 0 + for g in group_iter(): + x_g = x[g] + #print 'x_g.shape', x_g.shape + mom += np.outer(x_g, x_g) + + return mom + +def sum_outer_product_balanced(x, n_groups): + '''sum outerproduct dot(x_i, x_i.T) over individuals + + where x_i is (nobs_i, 1), and result is (nobs_i, nobs_i) + + reshape-dot version, for x.ndim=1 only + + ''' + xrs = x.reshape(-1, n_groups, order='F') + return np.dot(xrs, xrs.T) #should be (nobs_i, nobs_i) + + #x.reshape(n_groups, nobs_i, k_vars) #, order='F') + #... ? this is getting 3-dimensional dot, tensordot? + #needs (n_groups, k_vars, k_vars) array with sum over groups + #NOT + #I only need this for x is 1d, i.e. residual + + +def whiten_individuals_loop(x, transform, group_iter): + '''apply linear transform for each individual + + loop version + ''' + + #Note: figure out dimension of transformed variable + #so we can pre-allocate + x_new = [] + for g in group_iter(): + x_g = x[g] + x_new.append(np.dot(transform, x_g)) + + return np.concatenate(x_new) #np.vstack(x_new) #or np.array(x_new) #check shape + + + +class ShortPanelGLS2(object): + '''Short Panel with general intertemporal within correlation + + assumes data is stacked by individuals, panel is balanced and + within correlation structure is identical across individuals. + + It looks like this can just inherit GLS and overwrite whiten + ''' + + def __init__(self, endog, exog, group): + self.endog = endog + self.exog = exog + self.group = GroupSorted(group) + self.n_groups = self.group.n_groups + #self.nobs_group = #list for unbalanced? + + def fit_ols(self): + self.res_pooled = OLS(self.endog, self.exog).fit() + return self.res_pooled #return or not + + def get_within_cov(self, resid): + #central moment or not? + mom = sum_outer_product_loop(resid, self.group.group_iter) + return mom / self.n_groups #df correction ? + + def whiten_groups(self, x, cholsigmainv_i): + #from scipy import sparse #use sparse + wx = whiten_individuals_loop(x, cholsigmainv_i, self.group.group_iter) + return wx + + def fit(self): + res_pooled = self.fit_ols() #get starting estimate + sigma_i = self.get_within_cov(res_pooled.resid) + self.cholsigmainv_i = np.linalg.cholesky(np.linalg.pinv(sigma_i)).T + wendog = self.whiten_groups(self.endog, self.cholsigmainv_i) + wexog = self.whiten_groups(self.exog, self.cholsigmainv_i) + #print wendog.shape, wexog.shape + self.res1 = OLS(wendog, wexog).fit() + return self.res1 + +class ShortPanelGLS(GLS): + '''Short Panel with general intertemporal within correlation + + assumes data is stacked by individuals, panel is balanced and + within correlation structure is identical across individuals. + + It looks like this can just inherit GLS and overwrite whiten + ''' + + def __init__(self, endog, exog, group, sigma_i=None): + self.group = GroupSorted(group) + self.n_groups = self.group.n_groups + #self.nobs_group = #list for unbalanced? + nobs_i = len(endog) / self.n_groups #endog might later not be an ndarray + #balanced only for now, + #which is a requirement anyway in this case (full cov) + #needs to change for parameterized sigma_i + + # + if sigma_i is None: + sigma_i = np.eye(int(nobs_i)) + self.cholsigmainv_i = np.linalg.cholesky(np.linalg.pinv(sigma_i)).T + + #super is taking care of endog, exog and sigma + super(self.__class__, self).__init__(endog, exog, sigma=None) + + def get_within_cov(self, resid): + #central moment or not? + mom = sum_outer_product_loop(resid, self.group.group_iter) + return mom / self.n_groups #df correction ? + + def whiten_groups(self, x, cholsigmainv_i): + #from scipy import sparse #use sparse + wx = whiten_individuals_loop(x, cholsigmainv_i, self.group.group_iter) + return wx + + def _fit_ols(self): + #used as starting estimate in old explicity version + self.res_pooled = OLS(self.endog, self.exog).fit() + return self.res_pooled #return or not + + def _fit_old(self): + #old explicit version + res_pooled = self._fit_ols() #get starting estimate + sigma_i = self.get_within_cov(res_pooled.resid) + self.cholsigmainv_i = np.linalg.cholesky(np.linalg.pinv(sigma_i)).T + wendog = self.whiten_groups(self.endog, self.cholsigmainv_i) + wexog = self.whiten_groups(self.exog, self.cholsigmainv_i) + self.res1 = OLS(wendog, wexog).fit() + return self.res1 + + def whiten(self, x): + #whiten x by groups, will be applied to endog and exog + wx = whiten_individuals_loop(x, self.cholsigmainv_i, self.group.group_iter) + return wx + + #copied from GLSHet and adjusted (boiler plate?) + def fit_iterative(self, maxiter=3): + """ + Perform an iterative two-step procedure to estimate the GLS model. + + Parameters + ---------- + maxiter : integer, optional + the number of iterations + + Notes + ----- + maxiter=1: returns the estimated based on given weights + maxiter=2: performs a second estimation with the updated weights, + this is 2-step estimation + maxiter>2: iteratively estimate and update the weights + + TODO: possible extension stop iteration if change in parameter + estimates is smaller than x_tol + + Repeated calls to fit_iterative, will do one redundant pinv_wexog + calculation. Calling fit_iterative(maxiter) once does not do any + redundant recalculations (whitening or calculating pinv_wexog). + + """ + #Note: in contrast to GLSHet, we don't have an auxilliary regression here + # might be needed if there is more structure in cov_i + + #because we only have the loop we are not attaching the ols_pooled + #initial estimate anymore compared to original version + + if maxiter < 1: + raise ValueError('maxiter needs to be at least 1') + + import collections + self.history = collections.defaultdict(list) #not really necessary + + for i in range(maxiter): + #pinv_wexog is cached, delete it to force recalculation + if hasattr(self, 'pinv_wexog'): + del self.pinv_wexog + + #fit with current cov, GLS, i.e. OLS on whitened endog, exog + results = self.fit() + self.history['self_params'].append(results.params) + + if not i == maxiter-1: #skip for last iteration, could break instead + #print 'ols', + self.results_old = results #store previous results for debugging + + #get cov from residuals of previous regression + sigma_i = self.get_within_cov(results.resid) + self.cholsigmainv_i = np.linalg.cholesky(np.linalg.pinv(sigma_i)).T + + #calculate new whitened endog and exog + self.initialize() + + #note results is the wrapper, results._results is the results instance + #results._results.results_residual_regression = res_resid + return results diff --git a/statsmodels/sandbox/panel/panelmod.py b/statsmodels/sandbox/panel/panelmod.py new file mode 100644 index 0000000..80930df --- /dev/null +++ b/statsmodels/sandbox/panel/panelmod.py @@ -0,0 +1,439 @@ +""" +Sandbox Panel Estimators + +References +----------- + +Baltagi, Badi H. `Econometric Analysis of Panel Data.` 4th ed. Wiley, 2008. +""" +from __future__ import print_function +from statsmodels.compat.python import range, reduce +from statsmodels.regression.linear_model import GLS +import numpy as np + +__all__ = ["PanelModel"] + +from pandas import Panel + + +def group(X): + """ + Returns unique numeric values for groups without sorting. + + Examples + -------- + >>> X = np.array(['a','a','b','c','b','c']) + >>> group(X) + >>> g + array([ 0., 0., 1., 2., 1., 2.]) + """ + uniq_dict = {} + group = np.zeros(len(X)) + for i in range(len(X)): + if not X[i] in uniq_dict: + uniq_dict.update({X[i] : len(uniq_dict)}) + group[i] = uniq_dict[X[i]] + return group + +def repanel_cov(groups, sigmas): + '''calculate error covariance matrix for random effects model + + Parameters + ---------- + groups : array, (nobs, nre) or (nobs,) + array of group/category observations + sigma : array, (nre+1,) + array of standard deviations of random effects, + last element is the standard deviation of the + idiosyncratic error + + Returns + ------- + omega : array, (nobs, nobs) + covariance matrix of error + omegainv : array, (nobs, nobs) + inverse covariance matrix of error + omegainvsqrt : array, (nobs, nobs) + squareroot inverse covariance matrix of error + such that omega = omegainvsqrt * omegainvsqrt.T + + Notes + ----- + This does not use sparse matrices and constructs nobs by nobs + matrices. Also, omegainvsqrt is not sparse, i.e. elements are non-zero + ''' + + if groups.ndim == 1: + groups = groups[:,None] + nobs, nre = groups.shape + omega = sigmas[-1]*np.eye(nobs) + for igr in range(nre): + group = groups[:,igr:igr+1] + groupuniq = np.unique(group) + dummygr = sigmas[igr] * (group == groupuniq).astype(float) + omega += np.dot(dummygr, dummygr.T) + ev, evec = np.linalg.eigh(omega) #eig doesn't work + omegainv = np.dot(evec, (1/ev * evec).T) + omegainvhalf = evec/np.sqrt(ev) + return omega, omegainv, omegainvhalf + + + +class PanelData(Panel): + pass + +class PanelModel(object): + """ + An abstract statistical model class for panel (longitudinal) datasets. + + Parameters + ---------- + endog : array-like or str + If a pandas object is used then endog should be the name of the + endogenous variable as a string. +# exog +# panel_arr +# time_arr + panel_data : pandas.Panel object + + Notes + ----- + If a pandas object is supplied it is assumed that the major_axis is time + and that the minor_axis has the panel variable. + """ + def __init__(self, endog=None, exog=None, panel=None, time=None, + xtnames=None, equation=None, panel_data=None): + if panel_data is None: +# if endog == None and exog == None and panel == None and \ +# time == None: +# raise ValueError("If pandel_data is False then endog, exog, \ +#panel_arr, and time_arr cannot be None.") + self.initialize(endog, exog, panel, time, xtnames, equation) +# elif aspandas != False: +# if not isinstance(endog, str): +# raise ValueError("If a pandas object is supplied then endog \ +#must be a string containing the name of the endogenous variable") +# if not isinstance(aspandas, Panel): +# raise ValueError("Only pandas.Panel objects are supported") +# self.initialize_pandas(endog, aspandas, panel_name) + + + def initialize(self, endog, exog, panel, time, xtnames, equation): + """ + Initialize plain array model. + + See PanelModel + """ +#TODO: for now, we are going assume a constant, and then make the first +#panel the base, add a flag for this.... + + # get names + names = equation.split(" ") + self.endog_name = names[0] + exog_names = names[1:] # this makes the order matter in the array + self.panel_name = xtnames[0] + self.time_name = xtnames[1] + + + novar = exog.var(0) == 0 + if True in novar: + cons_index = np.where(novar == 1)[0][0] # constant col. num + exog_names.insert(cons_index, 'cons') + + self._cons_index = novar # used again in fit_fixed + self.exog_names = exog_names + self.endog = np.squeeze(np.asarray(endog)) + exog = np.asarray(exog) + self.exog = exog + self.panel = np.asarray(panel) + self.time = np.asarray(time) + + self.paneluniq = np.unique(panel) + self.timeuniq = np.unique(time) +#TODO: this structure can possibly be extracted somewhat to deal with +#names in general + +#TODO: add some dimension checks, etc. + +# def initialize_pandas(self, endog, aspandas): +# """ +# Initialize pandas objects. +# +# See PanelModel. +# """ +# self.aspandas = aspandas +# endog = aspandas[endog].values +# self.endog = np.squeeze(endog) +# exog_name = aspandas.columns.tolist() +# exog_name.remove(endog) +# self.exog = aspandas.filterItems(exog_name).values +#TODO: can the above be simplified to slice notation? +# if panel_name != None: +# self.panel_name = panel_name +# self.exog_name = exog_name +# self.endog_name = endog +# self.time_arr = aspandas.major_axis + #TODO: is time always handled correctly in fromRecords? +# self.panel_arr = aspandas.minor_axis +#TODO: all of this might need to be refactored to explicitly rely (internally) +# on the pandas LongPanel structure for speed and convenience. +# not sure this part is finished... + +#TODO: doesn't conform to new initialize + def initialize_pandas(self, panel_data, endog_name, exog_name): + self.panel_data = panel_data + endog = panel_data[endog_name].values # does this create a copy? + self.endog = np.squeeze(endog) + if exog_name is None: + exog_name = panel_data.columns.tolist() + exog_name.remove(endog_name) + self.exog = panel_data.filterItems(exog_name).values # copy? + self._exog_name = exog_name + self._endog_name = endog_name + self._timeseries = panel_data.major_axis # might not need these + self._panelseries = panel_data.minor_axis + +#TODO: this could be pulled out and just have a by kwd that takes +# the panel or time array +#TODO: this also needs to be expanded for 'twoway' + def _group_mean(self, X, index='oneway', counts=False, dummies=False): + """ + Get group means of X by time or by panel. + + index default is panel + """ + if index == 'oneway': + Y = self.panel + uniq = self.paneluniq + elif index == 'time': + Y = self.time + uniq = self.timeuniq + else: + raise ValueError("index %s not understood" % index) + print(Y, uniq, uniq[:,None], len(Y), len(uniq), len(uniq[:,None]), + index) + #TODO: use sparse matrices + dummy = (Y == uniq[:,None]).astype(float) + if X.ndim > 1: + mean = np.dot(dummy,X)/dummy.sum(1)[:,None] + else: + mean = np.dot(dummy,X)/dummy.sum(1) + if counts is False and dummies is False: + return mean + elif counts is True and dummies is False: + return mean, dummy.sum(1) + elif counts is True and dummies is True: + return mean, dummy.sum(1), dummy + elif counts is False and dummies is True: + return mean, dummy + +#TODO: Use kwd arguments or have fit_method methods? + def fit(self, model=None, method=None, effects='oneway'): + """ + method : LSDV, demeaned, MLE, GLS, BE, FE, optional + model : + between + fixed + random + pooled + [gmm] + effects : + oneway + time + twoway + femethod : demeaned (only one implemented) + WLS + remethod : + swar - + amemiya + nerlove + walhus + + + Notes + ----- + This is unfinished. None of the method arguments work yet. + Only oneway effects should work. + """ + if method: # get rid of this with default + method = method.lower() + model = model.lower() + if method and method not in ["lsdv", "demeaned", "mle", + "gls", "be", "fe"]: + # get rid of if method with default + raise ValueError("%s not a valid method" % method) +# if method == "lsdv": +# self.fit_lsdv(model) + if model == 'pooled': + return GLS(self.endog, self.exog).fit() + if model == 'between': + return self._fit_btwn(method, effects) + if model == 'fixed': + return self._fit_fixed(method, effects) + +# def fit_lsdv(self, effects): +# """ +# Fit using least squares dummy variables. +# +# Notes +# ----- +# Should only be used for small `nobs`. +# """ +# pdummies = None +# tdummies = None + + def _fit_btwn(self, method, effects): + # group mean regression or WLS + if effects != "twoway": + endog = self._group_mean(self.endog, index=effects) + exog = self._group_mean(self.exog, index=effects) + else: + raise ValueError("%s effects is not valid for the between " + "estimator" % effects) + befit = GLS(endog, exog).fit() + return befit + + def _fit_fixed(self, method, effects): + endog = self.endog + exog = self.exog + demeantwice = False + if effects in ["oneway","twoways"]: + if effects == "twoways": + demeantwice = True + effects = "oneway" + endog_mean, counts = self._group_mean(endog, index=effects, + counts=True) + exog_mean = self._group_mean(exog, index=effects) + counts = counts.astype(int) + endog = endog - np.repeat(endog_mean, counts) + exog = exog - np.repeat(exog_mean, counts, axis=0) + if demeantwice or effects == "time": + endog_mean, dummies = self._group_mean(endog, index="time", + dummies=True) + exog_mean = self._group_mean(exog, index="time") + # This allows unbalanced panels + endog = endog - np.dot(endog_mean, dummies) + exog = exog - np.dot(dummies.T, exog_mean) + fefit = GLS(endog, exog[:,-self._cons_index]).fit() +#TODO: might fail with one regressor + return fefit + + + + +class SURPanel(PanelModel): + pass + +class SEMPanel(PanelModel): + pass + +class DynamicPanel(PanelModel): + pass + +if __name__ == "__main__": + import pandas + from pandas import Panel + import statsmodels.api as sm + import numpy.lib.recfunctions as nprf + + data = sm.datasets.grunfeld.load(as_pandas=False) + # Baltagi doesn't include American Steel + endog = data.endog[:-20] + fullexog = data.exog[:-20] +# fullexog.sort(order=['firm','year']) + panel_arr = nprf.append_fields(fullexog, 'investment', endog, float, + usemask=False) + + panel_df = pandas.DataFrame(panel_arr) + panel_panda = panel_df.set_index(['year', 'firm']).to_panel() + + + # the most cumbersome way of doing it as far as preprocessing by hand + exog = fullexog[['value','capital']].view(float).reshape(-1,2) + exog = sm.add_constant(exog, prepend=False) + panel = group(fullexog['firm']) + year = fullexog['year'] + panel_mod = PanelModel(endog, exog, panel, year, xtnames=['firm','year'], + equation='invest value capital') +# note that equation doesn't actually do anything but name the variables + panel_ols = panel_mod.fit(model='pooled') + + panel_be = panel_mod.fit(model='between', effects='oneway') + panel_fe = panel_mod.fit(model='fixed', effects='oneway') + + panel_bet = panel_mod.fit(model='between', effects='time') + panel_fet = panel_mod.fit(model='fixed', effects='time') + + panel_fe2 = panel_mod.fit(model='fixed', effects='twoways') + + +#see also Baltagi (3rd edt) 3.3 THE RANDOM EFFECTS MODEL p.35 +#for explicit formulas for spectral decomposition +#but this works also for unbalanced panel +# +#I also just saw: 9.4.2 The Random Effects Model p.176 which is +#partially almost the same as I did +# +#this needs to use sparse matrices for larger datasets +# +#""" +# +#import numpy as np +# + + groups = np.array([0,0,0,1,1,2,2,2]) + nobs = groups.shape[0] + groupuniq = np.unique(groups) + periods = np.array([0,1,2,1,2,0,1,2]) + perioduniq = np.unique(periods) + + dummygr = (groups[:,None] == groupuniq).astype(float) + dummype = (periods[:,None] == perioduniq).astype(float) + + sigma = 1. + sigmagr = np.sqrt(2.) + sigmape = np.sqrt(3.) + + #dummyall = np.c_[sigma*np.ones((nobs,1)), sigmagr*dummygr, + # sigmape*dummype] + #exclude constant ? + dummyall = np.c_[sigmagr*dummygr, sigmape*dummype] + # omega is the error variance-covariance matrix for the stacked + # observations + omega = np.dot(dummyall, dummyall.T) + sigma* np.eye(nobs) + print(omega) + print(np.linalg.cholesky(omega)) + ev, evec = np.linalg.eigh(omega) #eig doesn't work + omegainv = np.dot(evec, (1/ev * evec).T) + omegainv2 = np.linalg.inv(omega) + omegacomp = np.dot(evec, (ev * evec).T) + print(np.max(np.abs(omegacomp - omega))) + #check + #print(np.dot(omegainv,omega) + print(np.max(np.abs(np.dot(omegainv,omega) - np.eye(nobs)))) + omegainvhalf = evec/np.sqrt(ev) #not sure whether ev shouldn't be column + print(np.max(np.abs(np.dot(omegainvhalf,omegainvhalf.T) - omegainv))) + + # now we can use omegainvhalf in GLS (instead of the cholesky) + + + + + + + + + sigmas2 = np.array([sigmagr, sigmape, sigma]) + groups2 = np.column_stack((groups, periods)) + omega_, omegainv_, omegainvhalf_ = repanel_cov(groups2, sigmas2) + print(np.max(np.abs(omega_ - omega))) + print(np.max(np.abs(omegainv_ - omegainv))) + print(np.max(np.abs(omegainvhalf_ - omegainvhalf))) + + # notation Baltagi (3rd) section 9.4.1 (Fixed Effects Model) + Pgr = reduce(np.dot,[dummygr, + np.linalg.inv(np.dot(dummygr.T, dummygr)),dummygr.T]) + Qgr = np.eye(nobs) - Pgr + # within group effect: np.dot(Qgr, groups) + # but this is not memory efficient, compared to groupstats + print(np.max(np.abs(np.dot(Qgr, groups)))) diff --git a/statsmodels/sandbox/panel/random_panel.py b/statsmodels/sandbox/panel/random_panel.py new file mode 100644 index 0000000..3e3f270 --- /dev/null +++ b/statsmodels/sandbox/panel/random_panel.py @@ -0,0 +1,152 @@ +# -*- coding: utf-8 -*- +"""Generate a random process with panel structure + +Created on Sat Dec 17 22:15:27 2011 + +Author: Josef Perktold + + +Notes +----- +* written with unbalanced panels in mind, but not flexible enough yet +* need more shortcuts and options for balanced panel +* need to add random intercept or coefficients +* only one-way (repeated measures) so far + +""" + +import numpy as np +from . import correlation_structures as cs + + +class PanelSample(object): + '''data generating process for panel with within correlation + + allows various within correlation structures, but no random intercept yet + + Parameters + ---------- + nobs : int + total number of observations + k_vars : int + number of explanatory variables to create in exog, including constant + n_groups int + number of groups in balanced sample + exog : None or ndarray + default is None, in which case a exog is created + within : bool + If True (default), then the exog vary within a group. If False, then + only variation across groups is used. + TODO: this option needs more work + corr_structure : ndarray or ?? + Default is np.eye. + corr_args : tuple + arguments for the corr_structure + scale : float + scale of noise, standard deviation of normal distribution + seed : None or int + If seed is given, then this is used to create the random numbers for + the sample. + + Notes + ----- + The behavior for panel robust covariance estimators seems to differ by + a large amount by whether exog have mostly within group or across group + variation. I do not understand why this should be the case from the theory, + and this would warrant more investigation. + + This is just used in one example so far and needs more usage to see what + will be useful to add. + + ''' + + def __init__(self, nobs, k_vars, n_groups, exog=None, within=True, + corr_structure=np.eye, corr_args=(), scale=1, seed=None): + + + nobs_i = nobs//n_groups + nobs = nobs_i * n_groups #make balanced + self.nobs = nobs + self.nobs_i = nobs_i + self.n_groups = n_groups + self.k_vars = k_vars + self.corr_structure = corr_structure + self.groups = np.repeat(np.arange(n_groups), nobs_i) + + self.group_indices = np.arange(n_groups+1) * nobs_i #check +1 + + if exog is None: + if within: + #t = np.tile(np.linspace(-1,1,nobs_i), n_groups) + t = np.tile(np.linspace(0, 2, nobs_i), n_groups) + #rs2 = np.random.RandomState(9876) + #t = 1 + 0.3 * rs2.randn(nobs_i * n_groups) + #mix within and across variation + #t += np.repeat(np.linspace(-1,1,nobs_i), n_groups) + else: + #no within group variation, + t = np.repeat(np.linspace(-1,1,nobs_i), n_groups) + + exog = t[:,None]**np.arange(k_vars) + + self.exog = exog + #self.y_true = exog.sum(1) #all coefficients equal 1, + #moved to make random coefficients + #initialize + self.y_true = None + self.beta = None + + if seed is None: + seed = np.random.randint(0, 999999) + + self.seed = seed + self.random_state = np.random.RandomState(seed) + + #this makes overwriting difficult, move to method? + self.std = scale * np.ones(nobs_i) + corr = self.corr_structure(nobs_i, *corr_args) + self.cov = cs.corr2cov(corr, self.std) + self.group_means = np.zeros(n_groups) + + + def get_y_true(self): + if self.beta is None: + self.y_true = self.exog.sum(1) + else: + self.y_true = np.dot(self.exog, self.beta) + + + def generate_panel(self): + ''' + generate endog for a random panel dataset with within correlation + + ''' + + random = self.random_state + + if self.y_true is None: + self.get_y_true() + + nobs_i = self.nobs_i + n_groups = self.n_groups + + use_balanced = True + if use_balanced: #much faster for balanced case + noise = self.random_state.multivariate_normal(np.zeros(nobs_i), + self.cov, + size=n_groups).ravel() + #need to add self.group_means + noise += np.repeat(self.group_means, nobs_i) + else: + noise = np.empty(self.nobs, np.float64) + noise.fill(np.nan) + for ii in range(self.n_groups): + #print ii, + idx, idxupp = self.group_indices[ii:ii+2] + #print idx, idxupp + mean_i = self.group_means[ii] + noise[idx:idxupp] = self.random_state.multivariate_normal( + mean_i * np.ones(self.nobs_i), self.cov) + + endog = self.y_true + noise + return endog diff --git a/statsmodels/sandbox/panel/sandwich_covariance_generic.py b/statsmodels/sandbox/panel/sandwich_covariance_generic.py new file mode 100644 index 0000000..d3f0f70 --- /dev/null +++ b/statsmodels/sandbox/panel/sandwich_covariance_generic.py @@ -0,0 +1,124 @@ +# -*- coding: utf-8 -*- +"""covariance with (nobs,nobs) loop and general kernel + +This is a general implementation that is not efficient for any special cases. +kernel is currently only for one continuous variable and any number of +categorical groups. + +No spatial example, continuous is interpreted as time + +Created on Wed Nov 30 08:20:44 2011 + +Author: Josef Perktold +License: BSD-3 + +""" +from statsmodels.compat.python import range +import numpy as np + +def kernel(d1, d2, r=None, weights=None): + '''general product kernel + + hardcoded split for the example: + cat1 is continuous (time), other categories are discrete + + weights is e.g. Bartlett for cat1 + r is (0,1) indicator vector for boolean weights 1{d1_i == d2_i} + + returns boolean if no continuous weights are used + ''' + + diff = d1 - d2 + if (weights is None) or (r[0] == 0): + #time is irrelevant or treated as categorical + return np.all((r * diff) == 0) #return bool + else: + #time uses continuous kernel, all other categorical + return weights[diff] * np.all((r[1:] * diff[1:]) == 0) + + +def aggregate_cov(x, d, r=None, weights=None): + '''sum of outer procuct over groups and time selected by r + + This is for a generic reference implementation, it uses a nobs-nobs double + loop. + + Parameters + ---------- + x : ndarray, (nobs,) or (nobs, k_vars) + data, for robust standard error calculation, this is array of x_i * u_i + d : ndarray, (nobs, n_groups) + integer group labels, each column contains group (or time) indices + r : ndarray, (n_groups,) + indicator for which groups to include. If r[i] is zero, then + this group is ignored. If r[i] is not zero, then the cluster robust + standard errors include this group. + weights : ndarray + weights if the first group dimension uses a HAC kernel + + Returns + ------- + cov : ndarray (k_vars, k_vars) or scalar + covariance matrix aggregates over group kernels + count : int + number of terms added in sum, mainly returned for cross-checking + + Notes + ----- + This uses `kernel` to calculate the weighted distance between two + observations. + + ''' + + nobs = x.shape[0] #either 1d or 2d with obs in rows + #next is not needed yet +# if x.ndim == 2: +# kvars = x.shape[1] +# else: +# kvars = 1 + + count = 0 #count non-zero pairs for cross checking, not needed + res = 0 * np.outer(x[0], x[0]) #get output shape + + for ii in range(nobs): + for jj in range(nobs): + w = kernel(d[ii], d[jj], r=r, weights=weights) + if w: #true or non-zero + res += w * np.outer(x[0], x[0]) + count *= 1 + + return res, count + +def weights_bartlett(nlags): + #with lag zero, nlags is the highest lag included + return 1 - np.arange(nlags+1)/(nlags+1.) + +#------- examples, cases: hardcoded for d is time and two categorical groups +def S_all_hac(x, d, nlags=1): + '''HAC independent of categorical group membership + ''' + r = np.zeros(d.shape[1]) + r[0] = 1 + weights = weights_bartlett(nlags) + return aggregate_cov(x, d, r=r, weights=weights) + +def S_within_hac(x, d, nlags=1, groupidx=1): + '''HAC for observations within a categorical group + ''' + r = np.zeros(d.shape[1]) + r[0] = 1 + r[groupidx] = 1 + weights = weights_bartlett(nlags) + return aggregate_cov(x, d, r=r, weights=weights) + +def S_cluster(x, d, groupidx=[1]): + r = np.zeros(d.shape[1]) + r[groupidx] = 1 + return aggregate_cov(x, d, r=r, weights=None) + +def S_white(x, d): + '''simple white heteroscedasticity robust covariance + note: calculating this way is very inefficient, just for cross-checking + ''' + r = np.ones(d.shape[1]) #only points on diagonal + return aggregate_cov(x, d, r=r, weights=None) diff --git a/statsmodels/sandbox/panel/tests/__init__.py b/statsmodels/sandbox/panel/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/sandbox/panel/tests/test_random_panel.py b/statsmodels/sandbox/panel/tests/test_random_panel.py new file mode 100644 index 0000000..c0342bb --- /dev/null +++ b/statsmodels/sandbox/panel/tests/test_random_panel.py @@ -0,0 +1,146 @@ +# -*- coding: utf-8 -*- +"""Test for short_panel and panel sandwich + +Created on Fri May 18 13:05:47 2012 + +Author: Josef Perktold + +moved example from main of random_panel +""" + +import numpy as np +from numpy.testing import assert_almost_equal +import numpy.testing as npt +import statsmodels.tools.eval_measures as em +from statsmodels.stats.moment_helpers import cov2corr, se_cov +from statsmodels.regression.linear_model import OLS + +from statsmodels.sandbox.panel.panel_short import ShortPanelGLS, ShortPanelGLS2 +from statsmodels.sandbox.panel.random_panel import PanelSample +import statsmodels.sandbox.panel.correlation_structures as cs +import statsmodels.stats.sandwich_covariance as sw + +def assert_maxabs(actual, expected, value): + npt.assert_array_less(em.maxabs(actual, expected, None), value) + + +def test_short_panel(): + #this checks that some basic statistical properties are satisfied by the + #results, not verified results against other packages + #Note: the ranking of robust bse is different if within=True + #I added within keyword to PanelSample to be able to use old example + #if within is False, then there is no within group variation in exog. + nobs = 100 + nobs_i = 5 + n_groups = nobs // nobs_i + k_vars = 3 + + dgp = PanelSample(nobs, k_vars, n_groups, corr_structure=cs.corr_arma, + corr_args=([1], [1., -0.9],), seed=377769, within=False) + #print 'seed', dgp.seed + y = dgp.generate_panel() + noise = y - dgp.y_true + + #test dgp + + dgp_cov_e = np.array( + [[ 1. , 0.9 , 0.81 , 0.729 , 0.6561], + [ 0.9 , 1. , 0.9 , 0.81 , 0.729 ], + [ 0.81 , 0.9 , 1. , 0.9 , 0.81 ], + [ 0.729 , 0.81 , 0.9 , 1. , 0.9 ], + [ 0.6561, 0.729 , 0.81 , 0.9 , 1. ]]) + + npt.assert_almost_equal(dgp.cov, dgp_cov_e, 13) + + cov_noise = np.cov(noise.reshape(-1,n_groups, order='F')) + corr_noise = cov2corr(cov_noise) + npt.assert_almost_equal(corr_noise, dgp.cov, 1) + + #estimate panel model + mod2 = ShortPanelGLS(y, dgp.exog, dgp.groups) + res2 = mod2.fit_iterative(2) + + + #whitened residual should be uncorrelated + corr_wresid = np.corrcoef(res2.wresid.reshape(-1,n_groups, order='F')) + assert_maxabs(corr_wresid, np.eye(5), 0.1) + + #residual should have same correlation as dgp + corr_resid = np.corrcoef(res2.resid.reshape(-1,n_groups, order='F')) + assert_maxabs(corr_resid, dgp.cov, 0.1) + + assert_almost_equal(res2.resid.std(),1, decimal=0) + + y_pred = np.dot(mod2.exog, res2.params) + assert_almost_equal(res2.fittedvalues, y_pred, 13) + + + #compare with OLS + + res2_ols = mod2._fit_ols() + npt.assert_(mod2.res_pooled is res2_ols) + + res2_ols = mod2.res_pooled #TODO: BUG: requires call to _fit_ols + + #fitting once is the same as OLS + #note: I need to create new instance, otherwise it continuous fitting + mod1 = ShortPanelGLS(y, dgp.exog, dgp.groups) + res1 = mod1.fit_iterative(1) + + assert_almost_equal(res1.params, res2_ols.params, decimal=13) + assert_almost_equal(res1.bse, res2_ols.bse, decimal=13) + + res_ols = OLS(y, dgp.exog).fit() + assert_almost_equal(res1.params, res_ols.params, decimal=13) + assert_almost_equal(res1.bse, res_ols.bse, decimal=13) + + + #compare with old version + mod_old = ShortPanelGLS2(y, dgp.exog, dgp.groups) + res_old = mod_old.fit() + + assert_almost_equal(res2.params, res_old.params, decimal=13) + assert_almost_equal(res2.bse, res_old.bse, decimal=13) + + + mod5 = ShortPanelGLS(y, dgp.exog, dgp.groups) + res5 = mod5.fit_iterative(5) + + #make sure it's different + #npt.assert_array_less(0.009, em.maxabs(res5.bse, res2.bse)) + + cov_clu = sw.cov_cluster(mod2.res_pooled, dgp.groups.astype(int)) + clubse = se_cov(cov_clu) + pnwbse = se_cov(sw.cov_nw_panel(mod2.res_pooled, 4, mod2.group.groupidx)) + bser = np.vstack((res2.bse, res5.bse, clubse, pnwbse)) + bser_mean = np.mean(bser, axis=0) + + #cov_cluster close to robust and PanelGLS + #is up to 24% larger than mean of bser + #npt.assert_array_less(0, clubse / bser_mean - 1) + npt.assert_array_less(clubse / bser_mean - 1, 0.25) + #cov_nw_panel close to robust and PanelGLS + npt.assert_array_less(pnwbse / bser_mean - 1, 0.1) + #OLS underestimates bse, robust at least 60% larger + npt.assert_array_less(0.6, bser_mean / res_ols.bse - 1) + + #cov_hac_panel with uniform_kernel is the same as cov_cluster for balanced + #panel with full length kernel + #I fixe default correction to be equal + cov_uni = sw.cov_nw_panel(mod2.res_pooled, 4, mod2.group.groupidx, + weights_func=sw.weights_uniform, + use_correction='c') + assert_almost_equal(cov_uni, cov_clu, decimal=13) + + #without correction + cov_clu2 = sw.cov_cluster(mod2.res_pooled, dgp.groups.astype(int), + use_correction=False) + cov_uni2 = sw.cov_nw_panel(mod2.res_pooled, 4, mod2.group.groupidx, + weights_func=sw.weights_uniform, + use_correction=False) + assert_almost_equal(cov_uni2, cov_clu2, decimal=13) + + cov_white = sw.cov_white_simple(mod2.res_pooled) + cov_pnw0 = sw.cov_nw_panel(mod2.res_pooled, 0, mod2.group.groupidx, + use_correction='hac') + assert_almost_equal(cov_pnw0, cov_white, decimal=13) diff --git a/statsmodels/sandbox/pca.py b/statsmodels/sandbox/pca.py new file mode 100644 index 0000000..7947b7c --- /dev/null +++ b/statsmodels/sandbox/pca.py @@ -0,0 +1,226 @@ +#Copyright (c) 2008 Erik Tollerud (etolleru@uci.edu) + +from statsmodels.compat.python import zip +import numpy as np + + +class Pca(object): + """ + A basic class for Principal Component Analysis (PCA). + + p is the number of dimensions, while N is the number of data points + """ + _colors=('r','g','b','c','y','m','k') #defaults + + def __calc(self): + A = self.A + M=A-np.mean(A,axis=0) + N=M/np.std(M,axis=0) + + self.M = M + self.N = N + self._eig = None + + def __init__(self,data,names=None): + """ + p X N matrix input + """ + A = np.array(data).T + n,p = A.shape + self.n,self.p = n,p + if p > n: + from warnings import warn + warn('p > n - intentional?', RuntimeWarning) + self.A = A + self._origA=A.copy() + + self.__calc() + + self._colors= np.tile(self._colors,int((p-1)/len(self._colors))+1)[:p] + if names is not None and len(names) != p: + raise ValueError('names must match data dimension') + self.names = None if names is None else tuple([str(x) for x in names]) + + + def getCovarianceMatrix(self): + """ + returns the covariance matrix for the dataset + """ + return np.cov(self.N.T) + + def getEigensystem(self): + """ + returns a tuple of (eigenvalues,eigenvectors) for the data set. + """ + if self._eig is None: + res = np.linalg.eig(self.getCovarianceMatrix()) + sorti=np.argsort(res[0])[::-1] + res=(res[0][sorti],res[1][:,sorti]) + self._eig=res + return self._eig + + def getEigenvalues(self): + return self.getEigensystem()[0] + + def getEigenvectors(self): + return self.getEigensystem()[1] + + def getEnergies(self): + """ + "energies" are just normalized eigenvectors + """ + v=self.getEigenvalues() + return v/np.sum(v) + + def plot2d(self,ix=0,iy=1,clf=True): + """ + Generates a 2-dimensional plot of the data set and principle components + using matplotlib. + + ix specifies which p-dimension to put on the x-axis of the plot + and iy specifies which to put on the y-axis (0-indexed) + """ + import matplotlib.pyplot as plt + x,y=self.N[:,ix],self.N[:,iy] + if clf: + plt.clf() + plt.scatter(x,y) + vals,evs=self.getEigensystem() + #evx,evy=evs[:,ix],evs[:,iy] + xl,xu=plt.xlim() + yl,yu=plt.ylim() + dx,dy=(xu-xl),(yu-yl) + for val,vec,c in zip(vals,evs.T,self._colors): + plt.arrow(0,0,val*vec[ix],val*vec[iy],head_width=0.05*(dx*dy/4)**0.5,fc=c,ec=c) + #plt.arrow(0,0,vals[ix]*evs[ix,ix],vals[ix]*evs[iy,ix],head_width=0.05*(dx*dy/4)**0.5,fc='g',ec='g') + #plt.arrow(0,0,vals[iy]*evs[ix,iy],vals[iy]*evs[iy,iy],head_width=0.05*(dx*dy/4)**0.5,fc='r',ec='r') + if self.names is not None: + plt.xlabel('$'+self.names[ix]+'/\\sigma$') + plt.ylabel('$'+self.names[iy]+'/\\sigma$') + + def plot3d(self,ix=0,iy=1,iz=2,clf=True): + """ + Generates a 3-dimensional plot of the data set and principle components + using mayavi. + + ix, iy, and iz specify which of the input p-dimensions to place on each of + the x,y,z axes, respectively (0-indexed). + """ + import enthought.mayavi.mlab as M + if clf: + M.clf() + z3=np.zeros(3) + v=(self.getEigenvectors()*self.getEigenvalues()) + M.quiver3d(z3,z3,z3,v[ix],v[iy],v[iz],scale_factor=5) + M.points3d(self.N[:,ix],self.N[:,iy],self.N[:,iz],scale_factor=0.3) + if self.names: + M.axes(xlabel=self.names[ix]+'/sigma',ylabel=self.names[iy]+'/sigma',zlabel=self.names[iz]+'/sigma') + else: + M.axes() + + def sigclip(self,sigs): + """ + clips out all data points that are more than a certain number + of standard deviations from the mean. + + sigs can be either a single value or a length-p sequence that + specifies the number of standard deviations along each of the + p dimensions. + """ + if np.isscalar(sigs): + sigs=sigs*np.ones(self.N.shape[1]) + sigs = sigs*np.std(self.N,axis=1) + n = self.N.shape[0] + m = np.all(np.abs(self.N) < sigs,axis=1) + self.A=self.A[m] + self.__calc() + return n-sum(m) + + def reset(self): + self.A = self._origA.copy() + self.__calc() + + + def project(self,vals=None,enthresh=None,nPCs=None,cumen=None): + """ + projects the normalized values onto the components + + enthresh, nPCs, and cumen determine how many PCs to use + + if vals is None, the normalized data vectors are the values to project. + Otherwise, it should be convertable to a p x N array + + returns n,p(>threshold) dimension array + """ + nonnones = sum([e is not None for e in (enthresh, nPCs, cumen)]) + if nonnones == 0: + m = slice(None) + elif nonnones > 1: + raise ValueError("can't specify more than one threshold") + else: + if enthresh is not None: + m = self.energies() > enthresh + elif nPCs is not None: + m = slice(None,nPCs) + elif cumen is not None: + m = np.cumsum(self.energies()) < cumen + else: + raise RuntimeError('Should be unreachable') + + if vals is None: + vals = self.N.T + else: + vals = np.array(vals,copy=False) + if self.N.T.shape[0] != vals.shape[0]: + raise ValueError("shape for vals doesn't match") + proj = np.matrix(self.getEigenvectors()).T*vals + return proj[m].T + + def deproject(self,A,normed=True): + """ + input is an n X q array, where q <= p + + output is p X n + """ + A=np.atleast_2d(A) + n,q = A.shape + p = self.A.shape[1] + if q > p : + raise ValueError("q > p") + + evinv=np.linalg.inv(np.matrix(self.getEigenvectors()).T) + + zs = np.zeros((n,p)) + zs[:,:q]=A + + proj = evinv*zs.T + + if normed: + return np.array(proj.T).T + else: + mns=np.mean(self.A,axis=0) + sds=np.std(self.M,axis=0) + return (np.array(proj.T)*sds+mns).T + + def subtractPC(self,pc,vals=None): + """ + pc can be a scalar or any sequence of pc indecies + + if vals is None, the source data is self.A, else whatever is in vals + (which must be p x m) + """ + if vals is None: + vals = self.A + else: + vals = vals.T + if vals.shape[1]!= self.A.shape[1]: + raise ValueError("vals don't have the correct number of components") + + pcs=self.project() + zpcs=np.zeros_like(pcs) + zpcs[:,pc]=pcs[:,pc] + upc=self.deproject(zpcs,False) + + A = vals.T-upc + B = A.T*np.std(self.M,axis=0) + return B+np.mean(self.A,axis=0) diff --git a/statsmodels/sandbox/predict_functional.py b/statsmodels/sandbox/predict_functional.py new file mode 100644 index 0000000..984e63a --- /dev/null +++ b/statsmodels/sandbox/predict_functional.py @@ -0,0 +1,447 @@ +import pandas as pd +import patsy +import numpy as np +import warnings + +from statsmodels.tools.sm_exceptions import ValueWarning + +""" +A predict-like function that constructs means and pointwise or +simultaneous confidence bands for the function f(x) = E[Y | X*=x, +X1=x1, ...], where X* is the focus variable and X1, X2, ... are +non-focus variables. This is especially useful when conducting a +functional regression in which the role of x is modeled with b-splines +or other basis functions. +""" + +_predict_functional_doc =\ + """ + Predictions and contrasts of a fitted model as a function of a given covariate. + + The value of the focus variable varies along a sequence of its + quantiles, calculated from the data used to fit the model. The + other variables are held constant either at given values, or at + values obtained by applying given summary functions to the data + used to fit the model. Optionally, a second specification of the + non-focus variables is provided and the contrast between the two + specifications is returned. + + Parameters + ---------- + result : statsmodels result object + A results object for the fitted model. + focus_var : string + The name of the 'focus variable'. + summaries : dict-like + A map from names of non-focus variables to summary functions. + Each summary function is applied to the data used to fit the + model, to obtain a value at which the variable is held fixed. + values : dict-like + Values at which a given non-focus variable is held fixed. + summaries2 : dict-like + A second set of summary functions used to define a contrast. + values2 : dict-like + A second set of fixed values used to define a contrast. + alpha : float + `1 - alpha` is the coverage probability. + ci_method : string + The method for constructing the confidence band, one of + 'pointwise', 'scheffe', and 'simultaneous'. + num_points : integer + The number of equally-spaced quantile points where the + prediction is made. + exog : array-like + Explicitly provide points to cover with the confidence band. + exog2 : array-like + Explicitly provide points to contrast to `exog` in a functional + confidence band. + kwargs : + Arguments passed to the `predict` method. + + Returns + ------- + pred : array-like + The predicted mean values. + cb : array-like + An array with two columns, containing respectively the lower + and upper limits of a confidence band. + fvals : array-like + The values of the focus variable at which the prediction is + made. + + Notes + ----- + All variables in the model except for the focus variable should be + included as a key in either `summaries` or `values` (unless `exog` + is provided). + + If `summaries2` and `values2` are not provided, the returned value + contains predicted conditional means for the outcome as the focus + variable varies, with the other variables fixed as specified. + + If `summaries2` and/or `values2` is provided, two sets of + predicted conditional means are calculated, and the returned value + is the contrast between them. + + If `exog` is provided, then the rows should contain a sequence of + values approximating a continuous path through the domain of the + covariates. For example, if Z(s) is the covariate expressed as a + function of s, then the rows of exog may approximate Z(g(s)) for + some continuous function g. If `exog` is provided then neither of + the summaries or values arguments should be provided. If `exog2` + is also provided, then the returned value is a contrast between + the functionas defined by `exog` and `exog2`. + + Examples + -------- + Fit a model using a formula in which the predictors are age + (modeled with splines), ethnicity (which is categorical), gender, + and income. Then we obtain the fitted mean values as a function + of age for females with mean income and the most common + ethnicity. + + >>> model = sm.OLS.from_formula('y ~ bs(age, df=4) + C(ethnicity) + gender + income', data) + >>> result = model.fit() + >>> mode = lambda x : x.value_counts().argmax() + >>> summaries = {'income': np.mean, ethnicity=mode} + >>> values = {'gender': 'female'} + >>> pr, cb, x = predict_functional(result, 'age', summaries, values) + + Fit a model using arrays. Plot the means as a function of x3, + holding x1 fixed at its mean value in the data used to fit the + model, and holding x2 fixed at 1. + + >>> model = sm.OLS(y ,x) + >>> result = model.fit() + >>> summaries = {'x1': np.mean} + >>> values = {'x2': 1} + >>> pr, cb, x = predict_functional(result, 'x3', summaries, values) + + Fit a model usng a formula and construct a contrast comparing the + female and male predicted mean functions. + + >>> model = sm.OLS.from_formula('y ~ bs(age, df=4) + gender', data) + >>> result = model.fit() + >>> values = {'gender': 'female'} + >>> values2 = {'gender': 'male'} + >>> pr, cb, x = predict_functional(result, 'age', values=values, values2=values2) + """ + + +def _make_exog_from_formula(result, focus_var, summaries, values, num_points): + """ + Create dataframes for exploring a fitted model as a function of one variable. + + This works for models fit with a formula. + + Returns + ------- + dexog : data frame + A data frame in which the focus variable varies and the other variables + are fixed at specified or computed values. + fexog : data frame + The data frame `dexog` processed through the model formula. + """ + + model = result.model + exog = model.data.frame + + if summaries is None: + summaries = {} + if values is None: + values = {} + + if exog[focus_var].dtype is np.dtype('O'): + raise ValueError('focus variable may not have object type') + + colnames = list(summaries.keys()) + list(values.keys()) + [focus_var] + dtypes = [exog[x].dtype for x in colnames] + + # Check for variables whose values are not set either through + # `values` or `summaries`. Since the model data frame can contain + # extra variables not referenced in the formula RHS, this may not + # be a problem, so just warn. There is no obvious way to extract + # from a formula all the variable names that it references. + varl = set(exog.columns.tolist()) - set([model.endog_names]) + unmatched = varl - set(colnames) + unmatched = list(unmatched) + if len(unmatched) > 0: + warnings.warn("%s in data frame but not in summaries or values." + % ", ".join(["'%s'" % x for x in unmatched]), + ValueWarning) + + # Initialize at zero so each column can be converted to any dtype. + ix = range(num_points) + fexog = pd.DataFrame(index=ix, columns=colnames) + for d, x in zip(dtypes, colnames): + fexog[x] = pd.Series(index=ix, dtype=d) + + # The values of the 'focus variable' are a sequence of percentiles + pctls = np.linspace(0, 100, num_points).tolist() + fvals = np.percentile(exog[focus_var], pctls) + fvals = np.asarray(fvals) + fexog.loc[:, focus_var] = fvals + + # The values of the other variables may be given by summary functions... + for ky in summaries.keys(): + fexog.loc[:, ky] = summaries[ky](exog.loc[:, ky]) + + # or they may be provided as given values. + for ky in values.keys(): + fexog.loc[:, ky] = values[ky] + + dexog = patsy.dmatrix(model.data.design_info, fexog, + return_type='dataframe') + return dexog, fexog, fvals + + +def _make_exog_from_arrays(result, focus_var, summaries, values, num_points): + """ + Create dataframes for exploring a fitted model as a function of one variable. + + This works for models fit without a formula. + + Returns + ------- + exog : data frame + A data frame in which the focus variable varies and the other variables + are fixed at specified or computed values. + """ + + model = result.model + model_exog = model.exog + exog_names = model.exog_names + + if summaries is None: + summaries = {} + if values is None: + values = {} + + exog = np.zeros((num_points, model_exog.shape[1])) + + # Check for variables whose values are not set either through + # `values` or `summaries`. + colnames = list(values.keys()) + list(summaries.keys()) + [focus_var] + unmatched = set(exog_names) - set(colnames) + unmatched = list(unmatched) + if len(unmatched) > 0: + warnings.warn("%s in model but not in `summaries` or `values`." + % ", ".join(["'%s'" % x for x in unmatched]), + ValueWarning) + + # The values of the 'focus variable' are a sequence of percentiles + pctls = np.linspace(0, 100, num_points).tolist() + ix = exog_names.index(focus_var) + fvals = np.percentile(model_exog[:, ix], pctls) + exog[:, ix] = fvals + + # The values of the other variables may be given by summary functions... + for ky in summaries.keys(): + ix = exog_names.index(ky) + exog[:, ix] = summaries[ky](model_exog[:, ix]) + + # or they may be provided as given values. + for ky in values.keys(): + ix = exog_names.index(ky) + exog[:, ix] = values[ky] + + return exog, fvals + + +def _make_exog(result, focus_var, summaries, values, num_points): + + # Branch depending on whether the model was fit with a formula. + if hasattr(result.model.data, "frame"): + dexog, fexog, fvals = _make_exog_from_formula(result, focus_var, + summaries, values, num_points) + else: + exog, fvals = _make_exog_from_arrays(result, focus_var, summaries, + values, num_points) + dexog, fexog = exog, exog + + return dexog, fexog, fvals + + +def _check_args(values, summaries, values2, summaries2): + + if values is None: + values = {} + if values2 is None: + values2 = {} + if summaries is None: + summaries = {} + if summaries2 is None: + summaries2 = {} + + for (s,v) in (summaries, values), (summaries2, values2): + ky = set(v.keys()) & set(s.keys()) + ky = list(ky) + if len(ky) > 0: + raise ValueError("One or more variable names are contained in both `summaries` and `values`:" + + ", ".join(ky)) + + return values, summaries, values2, summaries2 + + +def predict_functional(result, focus_var, summaries=None, values=None, + summaries2=None, values2=None, alpha=0.05, + ci_method="pointwise", linear=True, num_points=10, + exog=None, exog2=None, **kwargs): + # docstring attached below + + if ci_method not in ("pointwise", "scheffe", "simultaneous"): + raise ValueError('confidence band method must be one of `pointwise`, `scheffe`, and `simultaneous`.') + + contrast = (values2 is not None) or (summaries2 is not None) + + if contrast and not linear: + raise ValueError("`linear` must be True for computing contrasts") + + model = result.model + if exog is not None: + + if any(x is not None for x in [summaries, summaries2, values, values2]): + raise ValueError("if `exog` is provided then do not " + "provide `summaries` or `values`") + + fexog = exog + dexog = patsy.dmatrix(model.data.design_info, + fexog, return_type='dataframe') + fvals = exog[focus_var] + + if exog2 is not None: + fexog2 = exog + dexog2 = patsy.dmatrix(model.data.design_info, + fexog2, return_type='dataframe') + fvals2 = fvals + + else: + + values, summaries, values2, summaries2 = _check_args(values, + summaries, + values2, + summaries2) + + dexog, fexog, fvals = _make_exog(result, focus_var, summaries, + values, num_points) + + if len(summaries2) + len(values2) > 0: + dexog2, fexog2, fvals2 = _make_exog(result, focus_var, summaries2, + values2, num_points) + + from statsmodels.genmod.generalized_linear_model import GLM + from statsmodels.genmod.generalized_estimating_equations import GEE + if isinstance(result.model, (GLM, GEE)): + kwargs_pred = kwargs.copy() + kwargs_pred.update({"linear": True}) + else: + kwargs_pred = kwargs + + pred = result.predict(exog=fexog, **kwargs_pred) + if contrast: + pred2 = result.predict(exog=fexog2, **kwargs_pred) + pred = pred - pred2 + dexog = dexog - dexog2 + + if ci_method == 'pointwise': + + t_test = result.t_test(dexog) + cb = t_test.conf_int(alpha=alpha) + + elif ci_method == 'scheffe': + + t_test = result.t_test(dexog) + sd = t_test.sd + cb = np.zeros((num_points, 2)) + + # Scheffe's method + from scipy.stats.distributions import f as fdist + df1 = result.model.exog.shape[1] + df2 = result.model.exog.shape[0] - df1 + qf = fdist.cdf(1 - alpha, df1, df2) + fx = sd * np.sqrt(df1 * qf) + cb[:, 0] = pred - fx + cb[:, 1] = pred + fx + + elif ci_method == 'simultaneous': + + sigma, c = _glm_basic_scr(result, dexog, alpha) + cb = np.zeros((dexog.shape[0], 2)) + cb[:, 0] = pred - c*sigma + cb[:, 1] = pred + c*sigma + + if not linear: + # May need to support other models with link-like functions. + link = result.family.link + pred = link.inverse(pred) + cb = link.inverse(cb) + + return pred, cb, fvals + +predict_functional.__doc__ = _predict_functional_doc + +def _glm_basic_scr(result, exog, alpha): + """ + The basic SCR from (Sun et al. Annals of Statistics 2000). + + Computes simultaneous confidence regions (SCR). + + Parameters + ---------- + result : results instance + The fitted GLM results instance + exog : array-like + The exog values spanning the interval + alpha : float + `1 - alpha` is the coverage probability. + + Returns + ------- + An array with two columns, containing the lower and upper + confidence bounds, respectively. + + Notes + ----- + The rows of `exog` should be a sequence of covariate values + obtained by taking one 'free variable' x and varying it over an + interval. The matrix `exog` is thus the basis functions and any + other covariates evaluated as x varies. + """ + + model = result.model + n = model.exog.shape[0] + + # Get the Hessian without recomputing. + cov = result.cov_params() + hess = np.linalg.inv(cov) + + # Proposition 3.1 of Sun et al. + A = hess / n + B = np.linalg.cholesky(A).T # Upper Cholesky triangle + + # The variance and SD of the linear predictor at each row of exog. + sigma2 = (np.dot(exog, cov) * exog).sum(1) + sigma = np.sqrt(sigma2) + + # Calculate kappa_0 (formula 42 from Sun et al) + bz = np.linalg.solve(B.T, exog.T).T + bz /= np.sqrt(n) + bz /= sigma[:, None] + bzd = np.diff(bz, 1, axis=0) + bzdn = (bzd**2).sum(1) + kappa_0 = np.sqrt(bzdn).sum() + + from scipy.stats.distributions import norm + + # The root of this function is the multiplier for the confidence + # band, see Sun et al. equation 35. + def func(c): + return kappa_0 * np.exp(-c**2/2) / np.pi + 2*(1 - norm.cdf(c)) - alpha + + from scipy.optimize import brentq + + c, rslt = brentq(func, 1, 10, full_output=True) + if not rslt.converged: + raise ValueError("Root finding error in basic SCR") + + return sigma, c diff --git a/statsmodels/sandbox/regression/__init__.py b/statsmodels/sandbox/regression/__init__.py new file mode 100644 index 0000000..a704400 --- /dev/null +++ b/statsmodels/sandbox/regression/__init__.py @@ -0,0 +1,5 @@ + + + +#from anova_nistcertified import anova_oneway, anova_ols +#from predstd import wls_prediction_std diff --git a/statsmodels/sandbox/regression/anova_nistcertified.py b/statsmodels/sandbox/regression/anova_nistcertified.py new file mode 100644 index 0000000..eb80d50 --- /dev/null +++ b/statsmodels/sandbox/regression/anova_nistcertified.py @@ -0,0 +1,110 @@ +'''calculating anova and verifying with NIST test data + +compares my implementations, stats.f_oneway and anova using statsmodels.OLS +''' +from __future__ import print_function +from statsmodels.compat.python import lmap +import os +import numpy as np +from scipy import stats + +import statsmodels.api as sm +from .try_ols_anova import data2dummy + +filenameli = ['SiRstv.dat', 'SmLs01.dat', 'SmLs02.dat', 'SmLs03.dat', 'AtmWtAg.dat', + 'SmLs04.dat', 'SmLs05.dat', 'SmLs06.dat', 'SmLs07.dat', 'SmLs08.dat', + 'SmLs09.dat'] +##filename = 'SmLs03.dat' #'SiRstv.dat' #'SmLs09.dat'#, 'AtmWtAg.dat' #'SmLs07.dat' + + +##path = __file__ +##print(locals().keys() +###print(path + + +def getnist(filename): + fname = os.path.abspath(os.path.join('./data', filename)) + with open(fname, 'r') as fd: + content = fd.read().split('\n') + + data = [line.split() for line in content[60:]] + certified = [line.split() for line in content[40:48] if line] + dataf = np.loadtxt(fname, skiprows=60) + y,x = dataf.T + y = y.astype(int) + caty = np.unique(y) + f = float(certified[0][-1]) + R2 = float(certified[2][-1]) + resstd = float(certified[4][-1]) + dfbn = int(certified[0][-4]) + dfwn = int(certified[1][-3]) # dfbn->dfwn is this correct + prob = stats.f.sf(f,dfbn,dfwn) + return y, x, np.array([f, prob, R2, resstd]), certified, caty + + + + + +def anova_oneway(y, x, seq=0): + # new version to match NIST + # no generalization or checking of arguments, tested only for 1d + yrvs = y[:,np.newaxis] #- min(y) + #subracting mean increases numerical accuracy for NIST test data sets + xrvs = x[:,np.newaxis] - x.mean() #for 1d#- 1e12 trick for 'SmLs09.dat' + + meang, varg, xdevmeangr, countg = groupsstats_dummy(yrvs[:,:1], xrvs[:,:1])#, seq=0) # noqa:F821 See GH#5756 + #the following does not work as replacement + #from .try_catdata import groupsstats_dummy, groupstatsbin + #gcount, gmean , meanarr, withinvar, withinvararr = groupstatsbin(y, x)#, seq=0) + sswn = np.dot(xdevmeangr.T,xdevmeangr) + ssbn = np.dot((meang-xrvs.mean())**2, countg.T) + nobs = yrvs.shape[0] + ncat = meang.shape[1] + dfbn = ncat - 1 + dfwn = nobs - ncat + msb = ssbn/float(dfbn) + msw = sswn/float(dfwn) + f = msb/msw + prob = stats.f.sf(f,dfbn,dfwn) + R2 = (ssbn/(sswn+ssbn)) #R-squared + resstd = np.sqrt(msw) #residual standard deviation + #print(f, prob + + def _fix2scalar(z): # return number + if np.shape(z) == (1, 1): return z[0,0] + else: return z + f, prob, R2, resstd = lmap(_fix2scalar, (f, prob, R2, resstd)) + return f, prob, R2, resstd + + +def anova_ols(y, x): + X = sm.add_constant(data2dummy(x), prepend=False) + res = sm.OLS(y, X).fit() + return res.fvalue, res.f_pvalue, res.rsquared, np.sqrt(res.mse_resid) + + + +if __name__ == '__main__': + print('\n using new ANOVA anova_oneway') + print('f, prob, R2, resstd') + for fn in filenameli: + print(fn) + y, x, cert, certified, caty = getnist(fn) + res = anova_oneway(y, x) + print(np.array(res) - cert) + + print('\n using stats ANOVA f_oneway') + for fn in filenameli: + print(fn) + y, x, cert, certified, caty = getnist(fn) + xlist = [x[y==ii] for ii in caty] + res = stats.f_oneway(*xlist) + print(np.array(res) - cert[:2]) + + print('\n using statsmodels.OLS') + print('f, prob, R2, resstd') + for fn in filenameli[:]: + print(fn) + y, x, cert, certified, caty = getnist(fn) + res = anova_ols(x, y) + print(np.array(res) - cert) diff --git a/statsmodels/sandbox/regression/ar_panel.py b/statsmodels/sandbox/regression/ar_panel.py new file mode 100644 index 0000000..e5287e5 --- /dev/null +++ b/statsmodels/sandbox/regression/ar_panel.py @@ -0,0 +1,113 @@ +'''Paneldata model with fixed effect (constants) and AR(1) errors + +checking fast evaluation of groupar1filter +quickly written to try out grouparfilter without python loops + +maybe the example has MA(1) not AR(1) errors, I'm not sure and changed this. + +results look good, I'm also differencing the dummy variable (constants) ??? +e.g. nobs = 35 +true 0.6, 10, 20, 30 (alpha, mean_0, mean_1, mean_2) +estimate 0.369453125 [ 10.14646929 19.87135086 30.12706505] + +Currently minimizes ssr but could switch to minimize llf, i.e. conditional MLE. +This should correspond to iterative FGLS, where data are AR(1) transformed +similar to GLSAR ? +Result statistic from GLS return by OLS on transformed data should be +asymptotically correct (check) + +Could be extended to AR(p) errors, but then requires panel with larger T + +''' + + +from __future__ import print_function +import numpy as np +from scipy import optimize + +from statsmodels.regression.linear_model import OLS + + +class PanelAR1(object): + def __init__(self, endog, exog=None, groups=None): + #take this from a super class, no checking is done here + nobs = endog.shape[0] + self.endog = endog + if exog is not None: + self.exog = exog + + self.groups_start = (np.diff(groups)!=0) + self.groups_valid = ~self.groups_start + + def ar1filter(self, xy, alpha): + #print(alpha,) + return (xy[1:] - alpha * xy[:-1])[self.groups_valid] + + def fit_conditional(self, alpha): + y = self.ar1filter(self.endog, alpha) + x = self.ar1filter(self.exog, alpha) + res = OLS(y, x).fit() + return res.ssr #res.llf + + + def fit(self): + alpha0 = 0.1 #startvalue + func = self.fit_conditional + fitres = optimize.fmin(func, alpha0) + + # fit_conditional only returns ssr for now + alpha = fitres[0] + y = self.ar1filter(self.endog, alpha) + x = self.ar1filter(self.exog, alpha) + reso = OLS(y, x).fit() + + return fitres, reso + +if __name__ == '__main__': + + #------------ developement code for groupar1filter and example + groups = np.array([0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2, + 2,2,2,2,2,2,2,2]) + nobs = len(groups) + data0 = np.arange(nobs) + + data = np.arange(1,nobs+1) - 0.5*np.arange(nobs) + 0.1*np.random.randn(nobs) + + y00 = 0.5*np.random.randn(nobs+1) + + # I don't think a trend is handled yet + data = np.arange(nobs) + y00[1:] + 0.2*y00[:-1] + 0.1*np.random.randn(nobs) + #Are these AR(1) or MA(1) errors ??? + data = y00[1:] + 0.6*y00[:-1] #+ 0.1*np.random.randn(nobs) + + group_codes = np.unique(groups) + group_dummy = (groups[:,None] == group_codes).astype(int) + + groups_start = (np.diff(groups)!=0) + groups_valid = (np.diff(groups)==0) #this applies to y with length for AR(1) + #could use np.nonzero for index instead + + y = data + np.dot(group_dummy, np.array([10, 20, 30])) + y0 = data0 + np.dot(group_dummy, np.array([10, 20, 30])) + + print(groups_valid) + print(np.diff(y)[groups_valid]) + + alpha = 1 #test with 1 + print((y0[1:] - alpha*y0[:-1])[groups_valid]) + alpha = 0.2 #test with 1 + print((y0[1:] - alpha*y0[:-1] + 0.001)[groups_valid]) + #this is now AR(1) for each group separately + + + #------------ + + #fitting the example + + exog = np.ones(nobs) + exog = group_dummy + mod = PanelAR1(y, exog, groups=groups) + #mod = PanelAR1(data, exog, groups=groups) #data doesn't contain different means + #print(mod.ar1filter(mod.endog, 1)) + resa, reso = mod.fit() + print(resa[0], reso.params) diff --git a/statsmodels/sandbox/regression/data/AtmWtAg.dat b/statsmodels/sandbox/regression/data/AtmWtAg.dat new file mode 100644 index 0000000..3053756 --- /dev/null +++ b/statsmodels/sandbox/regression/data/AtmWtAg.dat @@ -0,0 +1,108 @@ +NIST/ITL StRD +Dataset Name: AtmWtAg (AtmWtAg.dat) + + +File Format: ASCII + Certified Values (lines 41 to 47) + Data (lines 61 to 108) + + +Procedure: Analysis of Variance + + +Reference: Powell, L.J., Murphy, T.J. and Gramlich, J.W. (1982). + "The Absolute Isotopic Abundance & Atomic Weight + of a Reference Sample of Silver". + NBS Journal of Research, 87, pp. 9-19. + + +Data: 1 Factor + 2 Treatments + 24 Replicates/Cell + 48 Observations + 7 Constant Leading Digits + Average Level of Difficulty + Observed Data + + +Model: 3 Parameters (mu, tau_1, tau_2) + y_{ij} = mu + tau_i + epsilon_{ij} + + + + + + +Certified Values: + +Source of Sums of Mean +Variation df Squares Squares F Statistic + + +Between Instrument 1 3.63834187500000E-09 3.63834187500000E-09 1.59467335677930E+01 +Within Instrument 46 1.04951729166667E-08 2.28155932971014E-10 + + Certified R-Squared 2.57426544538321E-01 + + Certified Residual + Standard Deviation 1.51048314446410E-05 + + + + + + + + + + + +Data: Instrument AgWt + 1 107.8681568 + 1 107.8681465 + 1 107.8681572 + 1 107.8681785 + 1 107.8681446 + 1 107.8681903 + 1 107.8681526 + 1 107.8681494 + 1 107.8681616 + 1 107.8681587 + 1 107.8681519 + 1 107.8681486 + 1 107.8681419 + 1 107.8681569 + 1 107.8681508 + 1 107.8681672 + 1 107.8681385 + 1 107.8681518 + 1 107.8681662 + 1 107.8681424 + 1 107.8681360 + 1 107.8681333 + 1 107.8681610 + 1 107.8681477 + 2 107.8681079 + 2 107.8681344 + 2 107.8681513 + 2 107.8681197 + 2 107.8681604 + 2 107.8681385 + 2 107.8681642 + 2 107.8681365 + 2 107.8681151 + 2 107.8681082 + 2 107.8681517 + 2 107.8681448 + 2 107.8681198 + 2 107.8681482 + 2 107.8681334 + 2 107.8681609 + 2 107.8681101 + 2 107.8681512 + 2 107.8681469 + 2 107.8681360 + 2 107.8681254 + 2 107.8681261 + 2 107.8681450 + 2 107.8681368 diff --git a/statsmodels/sandbox/regression/data/Longley.dat b/statsmodels/sandbox/regression/data/Longley.dat new file mode 100644 index 0000000..133567c --- /dev/null +++ b/statsmodels/sandbox/regression/data/Longley.dat @@ -0,0 +1,76 @@ +NIST/ITL StRD +Dataset Name: Longley (Longley.dat) + +File Format: ASCII + Certified Values (lines 31 to 51) + Data (lines 61 to 76) + +Procedure: Linear Least Squares Regression + +Reference: Longley, J. W. (1967). + An Appraisal of Least Squares Programs for the + Electronic Computer from the Viewpoint of the User. + Journal of the American Statistical Association, 62, pp. 819-841. + +Data: 1 Response Variable (y) + 6 Predictor Variable (x) + 16 Observations + Higher Level of Difficulty + Observed Data + +Model: Polynomial Class + 7 Parameters (B0,B1,...,B7) + + y = B0 + B1*x1 + B2*x2 + B3*x3 + B4*x4 + B5*x5 + B6*x6 + e + + Certified Regression Statistics + + Standard Deviation + Parameter Estimate of Estimate + + B0 -3482258.63459582 890420.383607373 + B1 15.0618722713733 84.9149257747669 + B2 -0.358191792925910E-01 0.334910077722432E-01 + B3 -2.02022980381683 0.488399681651699 + B4 -1.03322686717359 0.214274163161675 + B5 -0.511041056535807E-01 0.226073200069370 + B6 1829.15146461355 455.478499142212 + + Residual + Standard Deviation 304.854073561965 + + R-Squared 0.995479004577296 + + + Certified Analysis of Variance Table + +Source of Degrees of Sums of Mean +Variation Freedom Squares Squares F Statistic + +Regression 6 184172401.944494 30695400.3240823 330.285339234588 +Residual 9 836424.055505915 92936.0061673238 + + + + + + + + +Data: y x1 x2 x3 x4 x5 x6 + 60323 83.0 234289 2356 1590 107608 1947 + 61122 88.5 259426 2325 1456 108632 1948 + 60171 88.2 258054 3682 1616 109773 1949 + 61187 89.5 284599 3351 1650 110929 1950 + 63221 96.2 328975 2099 3099 112075 1951 + 63639 98.1 346999 1932 3594 113270 1952 + 64989 99.0 365385 1870 3547 115094 1953 + 63761 100.0 363112 3578 3350 116219 1954 + 66019 101.2 397469 2904 3048 117388 1955 + 67857 104.6 419180 2822 2857 118734 1956 + 68169 108.4 442769 2936 2798 120445 1957 + 66513 110.8 444546 4681 2637 121950 1958 + 68655 112.6 482704 3813 2552 123366 1959 + 69564 114.2 502601 3931 2514 125368 1960 + 69331 115.7 518173 4806 2572 127852 1961 + 70551 116.9 554894 4007 2827 130081 1962 diff --git a/statsmodels/sandbox/regression/data/SiRstv.dat b/statsmodels/sandbox/regression/data/SiRstv.dat new file mode 100644 index 0000000..18ea897 --- /dev/null +++ b/statsmodels/sandbox/regression/data/SiRstv.dat @@ -0,0 +1,85 @@ +NIST/ITL StRD +Dataset Name: SiRstv (SiRstv.dat) + + +File Format: ASCII + Certified Values (lines 41 to 47) + Data (lines 61 to 85) + + +Procedure: Analysis of Variance + + +Reference: Ehrstein, James and Croarkin, M. Carroll. + Unpublished NIST dataset. + + +Data: 1 Factor + 5 Treatments + 5 Replicates/Cell + 25 Observations + 3 Constant Leading Digits + Lower Level of Difficulty + Observed Data + + +Model: 6 Parameters (mu,tau_1, ... , tau_5) + y_{ij} = mu + tau_i + epsilon_{ij} + + + + + + + + +Certified Values: + +Source of Sums of Mean +Variation df Squares Squares F Statistic + +Between Instrument 4 5.11462616000000E-02 1.27865654000000E-02 1.18046237440255E+00 +Within Instrument 20 2.16636560000000E-01 1.08318280000000E-02 + + Certified R-Squared 1.90999039051129E-01 + + Certified Residual + Standard Deviation 1.04076068334656E-01 + + + + + + + + + + + + +Data: Instrument Resistance + 1 196.3052 + 1 196.1240 + 1 196.1890 + 1 196.2569 + 1 196.3403 + 2 196.3042 + 2 196.3825 + 2 196.1669 + 2 196.3257 + 2 196.0422 + 3 196.1303 + 3 196.2005 + 3 196.2889 + 3 196.0343 + 3 196.1811 + 4 196.2795 + 4 196.1748 + 4 196.1494 + 4 196.1485 + 4 195.9885 + 5 196.2119 + 5 196.1051 + 5 196.1850 + 5 196.0052 + 5 196.2090 diff --git a/statsmodels/sandbox/regression/data/SmLs01.dat b/statsmodels/sandbox/regression/data/SmLs01.dat new file mode 100644 index 0000000..945b24b --- /dev/null +++ b/statsmodels/sandbox/regression/data/SmLs01.dat @@ -0,0 +1,249 @@ +NIST/ITL StRD +Dataset Name: SmLs01 (SmLs01.dat) + + +File Format: ASCII + Certified Values (lines 41 to 47) + Data (lines 61 to 249) + + +Procedure: Analysis of Variance + + +Reference: Simon, Stephen D. and Lesage, James P. (1989). + "Assessing the Accuracy of ANOVA Calculations in + Statistical Software". + Computational Statistics & Data Analysis, 8, pp. 325-332. + + +Data: 1 Factor + 9 Treatments + 21 Replicates/Cell + 189 Observations + 1 Constant Leading Digit + Lower Level of Difficulty + Generated Data + + +Model: 10 Parameters (mu,tau_1, ... , tau_9) + y_{ij} = mu + tau_i + epsilon_{ij} + + + + + + +Certified Values: + +Source of Sums of Mean +Variation df Squares Squares F Statistic + +Between Treatment 8 1.68000000000000E+00 2.10000000000000E-01 2.10000000000000E+01 +Within Treatment 180 1.80000000000000E+00 1.00000000000000E-02 + + Certified R-Squared 4.82758620689655E-01 + + Certified Residual + Standard Deviation 1.00000000000000E-01 + + + + + + + + + + + + +Data: Treatment Response + 1 1.4 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 2 1.3 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 3 1.5 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 4 1.3 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 5 1.5 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 6 1.3 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 7 1.5 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 8 1.3 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 9 1.5 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 diff --git a/statsmodels/sandbox/regression/data/SmLs02.dat b/statsmodels/sandbox/regression/data/SmLs02.dat new file mode 100644 index 0000000..ee76633 --- /dev/null +++ b/statsmodels/sandbox/regression/data/SmLs02.dat @@ -0,0 +1,1869 @@ +NIST/ITL StRD +Dataset Name: SmLs02 (SmLs02.dat) + + +File Format: ASCII + Certified Values (lines 41 to 47) + Data (lines 61 to 1869) + + +Procedure: Analysis of Variance + + +Reference: Simon, Stephen D. and Lesage, James P. (1989). + "Assessing the Accuracy of ANOVA Calculations in + Statistical Software". + Computational Statistics & Data Analysis, 8, pp. 325-332. + + +Data: 1 Factor + 9 Treatments + 201 Replicates/Cell + 1809 Observations + 1 Constant Leading Digit + Lower Level of Difficulty + Generated Data + + +Model: 10 Parameters (mu,tau_1, ... , tau_9) + y_{ij} = mu + tau_i + epsilon_{ij} + + + + + + +Certified Values: + +Source of Sums of Mean +Variation df Squares Squares F Statistic + +Between Treatment 8 1.60800000000000E+01 2.01000000000000E+00 2.01000000000000E+02 +Within Treatment 1800 1.80000000000000E+01 1.00000000000000E-02 + + Certified R-Squared 4.71830985915493E-01 + + Certified Residual + Standard Deviation 1.00000000000000E-01 + + + + + + + + + + + + +Data: Treatment Response + 1 1.4 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 2 1.3 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 3 1.5 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 4 1.3 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 5 1.5 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 6 1.3 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 7 1.5 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 8 1.3 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 9 1.5 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 diff --git a/statsmodels/sandbox/regression/data/SmLs03.dat b/statsmodels/sandbox/regression/data/SmLs03.dat new file mode 100644 index 0000000..55dfa23 --- /dev/null +++ b/statsmodels/sandbox/regression/data/SmLs03.dat @@ -0,0 +1,18069 @@ +NIST/ITL StRD +Dataset Name: SmLs03 (SmLs03.dat) + + +File Format: ASCII + Certified Values (lines 41 to 47) + Data (lines 61 to 18069) + + +Procedure: Analysis of Variance + + +Reference: Simon, Stephen D. and Lesage, James P. (1989). + "Assessing the Accuracy of ANOVA Calculations in + Statistical Software". + Computational Statistics & Data Analysis, 8, pp. 325-332. + + +Data: 1 Factor + 9 Treatments + 2001 Replicates/Cell + 18009 Observations + 1 Constant Leading Digit + Lower Level of Difficulty + Generated Data + + +Model: 10 Parameters (mu,tau_1, ... , tau_9) + y_{ij} = mu + tau_i + epsilon_{ij} + + + + + + +Certified Values: + +Source of Sums of Mean +Variation df Squares Squares F Statistic + +Between Treatment 8 1.60080000000000E+02 2.00100000000000E+01 2.00100000000000E+03 +Within Treatment 18000 1.80000000000000E+02 1.00000000000000E-02 + + Certified R-Squared 4.70712773465067E-01 + + Certified Residual + Standard Deviation 1.00000000000000E-01 + + + + + + + + + + + + +Data: Treatment Response + 1 1.4 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 1 1.3 + 1 1.5 + 2 1.3 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 2 1.2 + 2 1.4 + 3 1.5 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 3 1.4 + 3 1.6 + 4 1.3 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 4 1.2 + 4 1.4 + 5 1.5 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 5 1.4 + 5 1.6 + 6 1.3 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 6 1.2 + 6 1.4 + 7 1.5 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 7 1.4 + 7 1.6 + 8 1.3 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 8 1.2 + 8 1.4 + 9 1.5 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 + 9 1.4 + 9 1.6 diff --git a/statsmodels/sandbox/regression/data/SmLs04.dat b/statsmodels/sandbox/regression/data/SmLs04.dat new file mode 100644 index 0000000..6a2a9fc --- /dev/null +++ b/statsmodels/sandbox/regression/data/SmLs04.dat @@ -0,0 +1,249 @@ +NIST/ITL StRD +Dataset Name: SmLs04 (SmLs04.dat) + + +File Format: ASCII + Certified Values (lines 41 to 47) + Data (lines 61 to 249) + + +Procedure: Analysis of Variance + + +Reference: Simon, Stephen D. and Lesage, James P. (1989). + "Assessing the Accuracy of ANOVA Calculations in + Statistical Software". + Computational Statistics & Data Analysis, 8, pp. 325-332. + + +Data: 1 Factor + 9 Treatments + 21 Replicates/Cell + 189 Observations + 7 Constant Leading Digits + Average Level of Difficulty + Generated Data + + +Model: 10 Parameters (mu,tau_1, ... , tau_9) + y_{ij} = mu + tau_i + epsilon_{ij} + + + + + + +Certified Values: + +Source of Sums of Mean +Variation df Squares Squares F Statistic + +Between Treatment 8 1.68000000000000E+00 2.10000000000000E-01 2.10000000000000E+01 +Within Treatment 180 1.80000000000000E+00 1.00000000000000E-02 + + Certified R-Squared 4.82758620689655E-01 + + Certified Residual + Standard Deviation 1.00000000000000E-01 + + + + + + + + + + + + +Data: Treatment Response + 1 1000000.4 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 2 1000000.3 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 3 1000000.5 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 4 1000000.3 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 5 1000000.5 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 6 1000000.3 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 7 1000000.5 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 8 1000000.3 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 9 1000000.5 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 diff --git a/statsmodels/sandbox/regression/data/SmLs05.dat b/statsmodels/sandbox/regression/data/SmLs05.dat new file mode 100644 index 0000000..fe11c40 --- /dev/null +++ b/statsmodels/sandbox/regression/data/SmLs05.dat @@ -0,0 +1,1869 @@ +NIST/ITL StRD +Dataset Name: SmLs05 (SmLs05.dat) + + +File Format: ASCII + Certified Values (lines 41 to 47) + Data (lines 61 to 1869) + + +Procedure: Analysis of Variance + + +Reference: Simon, Stephen D. and Lesage, James P. (1989). + "Assessing the Accuracy of ANOVA Calculations in + Statistical Software". + Computational Statistics & Data Analysis, 8, pp. 325-332. + + +Data: 1 Factor + 9 Treatments + 201 Replicates/Cell + 1809 Observations + 7 Constant Leading Digits + Average Level of Difficulty + Generated Data + + +Model: 10 Parameters (mu,tau_1, ... , tau_9) + y_{ij} = mu + tau_i + epsilon_{ij} + + + + + + +Certified Values: + +Source of Sums of Mean +Variation df Squares Squares F Statistic + +Between Treatment 8 1.60800000000000E+01 2.01000000000000E+00 2.01000000000000E+02 +Within Treatment 1800 1.80000000000000E+01 1.00000000000000E-02 + + Certified R-Squared 4.71830985915493E-01 + + Certified Residual + Standard Deviation 1.00000000000000E-01 + + + + + + + + + + + + +Data: Treatment Response + 1 1000000.4 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 2 1000000.3 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 3 1000000.5 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 4 1000000.3 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 5 1000000.5 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 6 1000000.3 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 7 1000000.5 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 8 1000000.3 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 9 1000000.5 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 diff --git a/statsmodels/sandbox/regression/data/SmLs06.dat b/statsmodels/sandbox/regression/data/SmLs06.dat new file mode 100644 index 0000000..602e4fb --- /dev/null +++ b/statsmodels/sandbox/regression/data/SmLs06.dat @@ -0,0 +1,18069 @@ +NIST/ITL StRD +Dataset Name: SmLs06 (SmLs06.dat) + + +File Format: ASCII + Certified Values (lines 41 to 47) + Data (lines 61 to 18069) + + +Procedure: Analysis of Variance + + +Reference: Simon, Stephen D. and Lesage, James P. (1989). + "Assessing the Accuracy of ANOVA Calculations in + Statistical Software". + Computational Statistics & Data Analysis, 8, pp. 325-332. + + +Data: 1 Factor + 9 Treatments + 2001 Replicates/Cell + 18009 Observations + 7 Constant Leading Digits + Average Level of Difficulty + Generated Data + + +Model: 10 Parameters (mu,tau_1, ... , tau_9) + y_{ij} = mu + tau_i + epsilon_{ij} + + + + + + +Certified Values: + +Source of Sums of Mean +Variation df Squares Squares F Statistic + +Between Treatment 8 1.60080000000000E+02 2.00100000000000E+01 2.00100000000000E+03 +Within Treatment 18000 1.80000000000000E+02 1.00000000000000E-02 + + Certified R-Squared 4.70712773465067E-01 + + Certified Residual + Standard Deviation 1.00000000000000E-01 + + + + + + + + + + + + +Data: Treatment Response + 1 1000000.4 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 1 1000000.3 + 1 1000000.5 + 2 1000000.3 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 2 1000000.2 + 2 1000000.4 + 3 1000000.5 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 3 1000000.4 + 3 1000000.6 + 4 1000000.3 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 4 1000000.2 + 4 1000000.4 + 5 1000000.5 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 5 1000000.4 + 5 1000000.6 + 6 1000000.3 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 6 1000000.2 + 6 1000000.4 + 7 1000000.5 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 7 1000000.4 + 7 1000000.6 + 8 1000000.3 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 8 1000000.2 + 8 1000000.4 + 9 1000000.5 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 + 9 1000000.4 + 9 1000000.6 diff --git a/statsmodels/sandbox/regression/data/SmLs07.dat b/statsmodels/sandbox/regression/data/SmLs07.dat new file mode 100644 index 0000000..deeac95 --- /dev/null +++ b/statsmodels/sandbox/regression/data/SmLs07.dat @@ -0,0 +1,249 @@ +NIST/ITL StRD +Dataset Name: SmLs07 (SmLs07.dat) + + +File Format: ASCII + Certified Values (lines 41 to 47) + Data (lines 61 to 249) + + +Procedure: Analysis of Variance + + +Reference: Simon, Stephen D. and Lesage, James P. (1989). + "Assessing the Accuracy of ANOVA Calculations in + Statistical Software". + Computational Statistics & Data Analysis, 8, pp. 325-332. + + +Data: 1 Factor + 9 Treatments + 21 Replicates/Cell + 189 Observations + 13 Constant Leading Digits + Higher Level of Difficulty + Generated Data + + +Model: 10 Parameters (mu,tau_1, ... , tau_9) + y_{ij} = mu + tau_i + epsilon_{ij} + + + + + + +Certified Values: + +Source of Sums of Mean +Variation df Squares Squares F Statistic + +Between Treatment 8 1.68000000000000E+00 2.10000000000000E-01 2.10000000000000E+01 +Within Treatment 180 1.80000000000000E+00 1.00000000000000E-02 + + Certified R-Squared 4.82758620689655E-01 + + Certified Residual + Standard Deviation 1.00000000000000E-01 + + + + + + + + + + + + +Data: Treatment Response + 1 1000000000000.4 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 2 1000000000000.3 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 3 1000000000000.5 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 4 1000000000000.3 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 5 1000000000000.5 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 6 1000000000000.3 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 7 1000000000000.5 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 8 1000000000000.3 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 9 1000000000000.5 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 diff --git a/statsmodels/sandbox/regression/data/SmLs08.dat b/statsmodels/sandbox/regression/data/SmLs08.dat new file mode 100644 index 0000000..c5ee643 --- /dev/null +++ b/statsmodels/sandbox/regression/data/SmLs08.dat @@ -0,0 +1,1869 @@ +NIST/ITL StRD +Dataset Name: SmLs08 (SmLs08.dat) + + +File Format: ASCII + Certified Values (lines 41 to 47) + Data (lines 61 to 1869) + + +Procedure: Analysis of Variance + + +Reference: Simon, Stephen D. and Lesage, James P. (1989). + "Assessing the Accuracy of ANOVA Calculations in + Statistical Software". + Computational Statistics & Data Analysis, 8, pp. 325-332. + + +Data: 1 Factor + 9 Treatments + 201 Replicates/Cell + 1809 Observations + 13 Constant Leading Digits + Higher Level of Difficulty + Generated Data + + +Model: 10 Parameters (mu,tau_1, ... , tau_9) + y_{ij} = mu + tau_i + epsilon_{ij} + + + + + + +Certified Values: + +Source of Sums of Mean +Variation df Squares Squares F Statistic + +Between Treatment 8 1.60800000000000E+01 2.01000000000000E+00 2.01000000000000E+02 +Within Treatment 1800 1.80000000000000E+01 1.00000000000000E-02 + + Certified R-Squared 4.71830985915493E-01 + + Certified Residual + Standard Deviation 1.00000000000000E-01 + + + + + + + + + + + + +Data: Treatment Response + 1 1000000000000.4 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 2 1000000000000.3 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 3 1000000000000.5 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 4 1000000000000.3 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 5 1000000000000.5 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 6 1000000000000.3 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 7 1000000000000.5 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 8 1000000000000.3 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 9 1000000000000.5 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 diff --git a/statsmodels/sandbox/regression/data/SmLs09.dat b/statsmodels/sandbox/regression/data/SmLs09.dat new file mode 100644 index 0000000..887905e --- /dev/null +++ b/statsmodels/sandbox/regression/data/SmLs09.dat @@ -0,0 +1,18069 @@ +NIST/ITL StRD +Dataset Name: SmLs09 (SmLs09.dat) + + +File Format: ASCII + Certified Values (lines 41 to 47) + Data (lines 61 to 18069) + + +Procedure: Analysis of Variance + + +Reference: Simon, Stephen D. and Lesage, James P. (1989). + "Assessing the Accuracy of ANOVA Calculations in + Statistical Software". + Computational Statistics & Data Analysis, 8, pp. 325-332. + + +Data: 1 Factor + 9 Treatments + 2001 Replicates/Cell + 18009 Observations + 13 Constant Leading Digits + Higher Level of Difficulty + Generated Data + + +Model: 10 Parameters (mu,tau_1, ... , tau_9) + y_{ij} = mu + tau_i + epsilon_{ij} + + + + + + +Certified Values: + +Source of Sums of Mean +Variation df Squares Squares F Statistic + +Between Treatment 8 1.60080000000000E+02 2.00100000000000E+01 2.00100000000000E+03 +Within Treatment 18000 1.80000000000000E+02 1.00000000000000E-02 + + Certified R-Squared 4.70712773465067E-01 + + Certified Residual + Standard Deviation 1.00000000000000E-01 + + + + + + + + + + + + +Data: Treatment Response + 1 1000000000000.4 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 1 1000000000000.3 + 1 1000000000000.5 + 2 1000000000000.3 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 2 1000000000000.2 + 2 1000000000000.4 + 3 1000000000000.5 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 3 1000000000000.4 + 3 1000000000000.6 + 4 1000000000000.3 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 4 1000000000000.2 + 4 1000000000000.4 + 5 1000000000000.5 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 5 1000000000000.4 + 5 1000000000000.6 + 6 1000000000000.3 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 6 1000000000000.2 + 6 1000000000000.4 + 7 1000000000000.5 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 7 1000000000000.4 + 7 1000000000000.6 + 8 1000000000000.3 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 8 1000000000000.2 + 8 1000000000000.4 + 9 1000000000000.5 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 + 9 1000000000000.4 + 9 1000000000000.6 diff --git a/statsmodels/sandbox/regression/example_kernridge.py b/statsmodels/sandbox/regression/example_kernridge.py new file mode 100644 index 0000000..ab85f2a --- /dev/null +++ b/statsmodels/sandbox/regression/example_kernridge.py @@ -0,0 +1,34 @@ + + +import numpy as np +import matplotlib.pyplot as plt +from .kernridgeregress_class import GaussProcess, kernel_euclid + + +m,k = 50,4 +upper = 6 +scale = 10 +xs = np.linspace(1,upper,m)[:,np.newaxis] +#xs1 = xs1a*np.ones((1,4)) + 1/(1.0+np.exp(np.random.randn(m,k))) +#xs1 /= np.std(xs1[::k,:],0) # normalize scale, could use cov to normalize +##y1true = np.sum(np.sin(xs1)+np.sqrt(xs1),1)[:,np.newaxis] +xs1 = np.sin(xs)#[:,np.newaxis] +y1true = np.sum(xs1 + 0.01*np.sqrt(np.abs(xs1)),1)[:,np.newaxis] +y1 = y1true + 0.10 * np.random.randn(m,1) + +stride = 3 #use only some points as trainig points e.g 2 means every 2nd +xstrain = xs1[::stride,:] +ystrain = y1[::stride,:] +xstrain = np.r_[xs1[:m/2,:], xs1[m/2+10:,:]] +ystrain = np.r_[y1[:m/2,:], y1[m/2+10:,:]] +index = np.hstack((np.arange(m/2), np.arange(m/2+10,m))) +gp1 = GaussProcess(xstrain, ystrain, kernel=kernel_euclid, + ridgecoeff=5*1e-4) +yhatr1 = gp1.predict(xs1) +plt.figure() +plt.plot(y1true, y1,'bo',y1true, yhatr1,'r.') +plt.title('euclid kernel: true y versus noisy y and estimated y') +plt.figure() +plt.plot(index,ystrain.ravel(),'bo-',y1true,'go-',yhatr1,'r.-') +plt.title('euclid kernel: true (green), noisy (blue) and estimated (red) '+ + 'observations') diff --git a/statsmodels/sandbox/regression/gmm.py b/statsmodels/sandbox/regression/gmm.py new file mode 100644 index 0000000..901a220 --- /dev/null +++ b/statsmodels/sandbox/regression/gmm.py @@ -0,0 +1,1819 @@ +'''Generalized Method of Moments, GMM, and Two-Stage Least Squares for +instrumental variables IV2SLS + + + +Issues +------ +* number of parameters, nparams, and starting values for parameters + Where to put them? start was initially taken from global scope (bug) +* When optimal weighting matrix cannot be calculated numerically + In DistQuantilesGMM, we only have one row of moment conditions, not a + moment condition for each observation, calculation for cov of moments + breaks down. iter=1 works (weights is identity matrix) + -> need method to do one iteration with an identity matrix or an + analytical weighting matrix given as parameter. + -> add result statistics for this case, e.g. cov_params, I have it in the + standalone function (and in calc_covparams which is a copy of it), + but not tested yet. + DONE `fitonce` in DistQuantilesGMM, params are the same as in direct call to fitgmm + move it to GMM class (once it's clearer for which cases I need this.) +* GMM doesn't know anything about the underlying model, e.g. y = X beta + u or panel + data model. It would be good if we can reuse methods from regressions, e.g. + predict, fitted values, calculating the error term, and some result statistics. + What's the best way to do this, multiple inheritance, outsourcing the functions, + mixins or delegation (a model creates a GMM instance just for estimation). + + +Unclear +------- +* dof in Hausman + - based on rank + - differs between IV2SLS method and function used with GMM or (IV2SLS) + - with GMM, covariance matrix difference has negative eigenvalues in iv example, ??? +* jtest/jval + - I'm not sure about the normalization (multiply or divide by nobs) in jtest. + need a test case. Scaling of jval is irrelevant for estimation. + jval in jtest looks to large in example, but I have no idea about the size +* bse for fitonce look too large (no time for checking now) + formula for calc_cov_params for the case without optimal weighting matrix + is wrong. I don't have an estimate for omega in that case. And I'm confusing + between weights and omega, which are *not* the same in this case. + + + +Author: josef-pktd +License: BSD (3-clause) + +''' + + +from __future__ import print_function +from statsmodels.compat.python import lrange + +import numpy as np +from scipy import optimize, stats + +from statsmodels.tools.numdiff import approx_fprime +from statsmodels.base.model import (Model, + LikelihoodModel, LikelihoodModelResults) +from statsmodels.regression.linear_model import (OLS, RegressionResults, + RegressionResultsWrapper) +import statsmodels.stats.sandwich_covariance as smcov +from statsmodels.tools.decorators import cache_readonly +from statsmodels.tools.tools import _ensure_2d + +DEBUG = 0 + + +def maxabs(x): + '''just a shortcut to np.abs(x).max() + ''' + return np.abs(x).max() + + +class IV2SLS(LikelihoodModel): + """ + Instrumental variables estimation using Two-Stage Least-Squares (2SLS) + + + Parameters + ---------- + endog: array + Endogenous variable, 1-dimensional or 2-dimensional array nobs by 1 + exog : array + Explanatory variables, 1-dimensional or 2-dimensional array nobs by k + instrument : array + Instruments for explanatory variables. Must contain both exog + variables that are not being instrumented and instruments + + Notes + ----- + All variables in exog are instrumented in the calculations. If variables + in exog are not supposed to be instrumented, then these variables + must also to be included in the instrument array. + + Degrees of freedom in the calculation of the standard errors uses + `df_resid = (nobs - k_vars)`. + (This corresponds to the `small` option in Stata's ivreg2.) + """ + + def __init__(self, endog, exog, instrument=None): + self.instrument, self.instrument_names = _ensure_2d(instrument, True) + super(IV2SLS, self).__init__(endog, exog) + # where is this supposed to be handled + # Note: Greene p.77/78 dof correction is not necessary (because only + # asy results), but most packages do it anyway + self.df_resid = self.exog.shape[0] - self.exog.shape[1] + #self.df_model = float(self.rank - self.k_constant) + self.df_model = float(self.exog.shape[1] - self.k_constant) + + def initialize(self): + self.wendog = self.endog + self.wexog = self.exog + + def whiten(self, X): + """Not implemented""" + pass + + def fit(self): + '''estimate model using 2SLS IV regression + + Returns + ------- + results : instance of RegressionResults + regression result + + Notes + ----- + This returns a generic RegressioResults instance as defined for the + linear models. + + Parameter estimates and covariance are correct, but other results + haven't been tested yet, to seee whether they apply without changes. + + ''' + #Greene 5th edt., p.78 section 5.4 + #move this maybe + y,x,z = self.endog, self.exog, self.instrument + # TODO: this uses "textbook" calculation, improve linalg + ztz = np.dot(z.T, z) + ztx = np.dot(z.T, x) + self.xhatparams = xhatparams = np.linalg.solve(ztz, ztx) + #print 'x.T.shape, xhatparams.shape', x.shape, xhatparams.shape + F = xhat = np.dot(z, xhatparams) + FtF = np.dot(F.T, F) + self.xhatprod = FtF #store for Housman specification test + Ftx = np.dot(F.T, x) + Fty = np.dot(F.T, y) + params = np.linalg.solve(FtF, Fty) + Ftxinv = np.linalg.inv(Ftx) + self.normalized_cov_params = np.dot(Ftxinv.T, np.dot(FtF, Ftxinv)) + + lfit = IVRegressionResults(self, params, + normalized_cov_params=self.normalized_cov_params) + + lfit.exog_hat_params = xhatparams + lfit.exog_hat = xhat # TODO: do we want to store this, might be large + self._results_ols2nd = OLS(y, xhat).fit() + + return RegressionResultsWrapper(lfit) + + # copied from GLS, because I subclass currently LikelihoodModel and not GLS + def predict(self, params, exog=None): + """ + Return linear predicted values from a design matrix. + + Parameters + ---------- + exog : array-like + Design / exogenous data + params : array-like, optional after fit has been called + Parameters of a linear model + + Returns + ------- + An array of fitted values + + Notes + ----- + If the model as not yet been fit, params is not optional. + """ + if exog is None: + exog = self.exog + + return np.dot(exog, params) + + +class IVRegressionResults(RegressionResults): + """ + Results class for for an OLS model. + + Most of the methods and attributes are inherited from RegressionResults. + The special methods that are only available for OLS are: + + - get_influence + - outlier_test + - el_test + - conf_int_el + + See Also + -------- + RegressionResults + + """ + + @cache_readonly + def fvalue(self): + const_idx = self.model.data.const_idx + # if constant is implicit or missing, return nan see #2444, #3544 + if const_idx is None: + return np.nan + else: + k_vars = len(self.params) + restriction = np.eye(k_vars) + idx_noconstant = lrange(k_vars) + del idx_noconstant[const_idx] + fval = self.f_test(restriction[idx_noconstant]).fvalue # without constant + return fval + + + def spec_hausman(self, dof=None): + '''Hausman's specification test + + See Also + -------- + spec_hausman : generic function for Hausman's specification test + + ''' + #use normalized cov_params for OLS + + endog, exog = self.model.endog, self.model.exog + resols = OLS(endog, exog).fit() + normalized_cov_params_ols = resols.model.normalized_cov_params + # Stata `ivendog` doesn't use df correction for se + #se2 = resols.mse_resid #* resols.df_resid * 1. / len(endog) + se2 = resols.ssr / len(endog) + + params_diff = self.params - resols.params + + cov_diff = np.linalg.pinv(self.model.xhatprod) - normalized_cov_params_ols + #TODO: the following is very inefficient, solves problem (svd) twice + #use linalg.lstsq or svd directly + #cov_diff will very often be in-definite (singular) + if not dof: + dof = np.linalg.matrix_rank(cov_diff) + cov_diffpinv = np.linalg.pinv(cov_diff) + H = np.dot(params_diff, np.dot(cov_diffpinv, params_diff))/se2 + pval = stats.chi2.sf(H, dof) + + return H, pval, dof + + +# copied from regression results with small changes, no llf + def summary(self, yname=None, xname=None, title=None, alpha=.05): + """Summarize the Regression Results + + Parameters + ---------- + yname : string, optional + Default is `y` + xname : list of strings, optional + Default is `var_##` for ## in p the number of regressors + title : string, optional + Title for the top table. If not None, then this replaces the + default title + alpha : float + significance level for the confidence intervals + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary.Summary : class to hold summary + results + + """ + + #TODO: import where we need it (for now), add as cached attributes + from statsmodels.stats.stattools import (jarque_bera, + omni_normtest, durbin_watson) + jb, jbpv, skew, kurtosis = jarque_bera(self.wresid) + omni, omnipv = omni_normtest(self.wresid) + + #TODO: reuse condno from somewhere else ? + #condno = np.linalg.cond(np.dot(self.wexog.T, self.wexog)) + wexog = self.model.wexog + eigvals = np.linalg.linalg.eigvalsh(np.dot(wexog.T, wexog)) + eigvals = np.sort(eigvals) #in increasing order + condno = np.sqrt(eigvals[-1]/eigvals[0]) + + # TODO: check what is valid. + # box-pierce, breusch-pagan, durbin's h are not with endogenous on rhs + # use Cumby Huizinga 1992 instead + self.diagn = dict(jb=jb, jbpv=jbpv, skew=skew, kurtosis=kurtosis, + omni=omni, omnipv=omnipv, condno=condno, + mineigval=eigvals[0]) + + #TODO not used yet + #diagn_left_header = ['Models stats'] + #diagn_right_header = ['Residual stats'] + + #TODO: requiring list/iterable is a bit annoying + #need more control over formatting + #TODO: default don't work if it's not identically spelled + + top_left = [('Dep. Variable:', None), + ('Model:', None), + ('Method:', ['Two Stage']), + ('', ['Least Squares']), + ('Date:', None), + ('Time:', None), + ('No. Observations:', None), + ('Df Residuals:', None), #[self.df_resid]), #TODO: spelling + ('Df Model:', None), #[self.df_model]) + ] + + top_right = [('R-squared:', ["%#8.3f" % self.rsquared]), + ('Adj. R-squared:', ["%#8.3f" % self.rsquared_adj]), + ('F-statistic:', ["%#8.4g" % self.fvalue] ), + ('Prob (F-statistic):', ["%#6.3g" % self.f_pvalue]), + #('Log-Likelihood:', None), #["%#6.4g" % self.llf]), + #('AIC:', ["%#8.4g" % self.aic]), + #('BIC:', ["%#8.4g" % self.bic]) + ] + + diagn_left = [('Omnibus:', ["%#6.3f" % omni]), + ('Prob(Omnibus):', ["%#6.3f" % omnipv]), + ('Skew:', ["%#6.3f" % skew]), + ('Kurtosis:', ["%#6.3f" % kurtosis]) + ] + + diagn_right = [('Durbin-Watson:', ["%#8.3f" % durbin_watson(self.wresid)]), + ('Jarque-Bera (JB):', ["%#8.3f" % jb]), + ('Prob(JB):', ["%#8.3g" % jbpv]), + ('Cond. No.', ["%#8.3g" % condno]) + ] + + + if title is None: + title = self.model.__class__.__name__ + ' ' + "Regression Results" + + #create summary table instance + from statsmodels.iolib.summary import Summary + smry = Summary() + smry.add_table_2cols(self, gleft=top_left, gright=top_right, + yname=yname, xname=xname, title=title) + smry.add_table_params(self, yname=yname, xname=xname, alpha=alpha, + use_t=True) + + smry.add_table_2cols(self, gleft=diagn_left, gright=diagn_right, + yname=yname, xname=xname, + title="") + + + + return smry + + + + +############# classes for Generalized Method of Moments GMM + +_gmm_options = '''\ + +Options for GMM +--------------- + +Type of GMM +~~~~~~~~~~~ + + - one-step + - iterated + - CUE : not tested yet + +weight matrix +~~~~~~~~~~~~~ + + - `weights_method` : string, defines method for robust + Options here are similar to :mod:`statsmodels.stats.robust_covariance` + default is heteroscedasticity consistent, HC0 + + currently available methods are + + - `cov` : HC0, optionally with degrees of freedom correction + - `hac` : + - `iid` : untested, only for Z*u case, IV cases with u as error indep of Z + - `ac` : not available yet + - `cluster` : not connected yet + - others from robust_covariance + +other arguments: + + - `wargs` : tuple or dict, required arguments for weights_method + + - `centered` : bool, + indicates whether moments are centered for the calculation of the weights + and covariance matrix, applies to all weight_methods + - `ddof` : int + degrees of freedom correction, applies currently only to `cov` + - maxlag : int + number of lags to include in HAC calculation , applies only to `hac` + - others not yet, e.g. groups for cluster robust + +covariance matrix +~~~~~~~~~~~~~~~~~ + +The same options as for weight matrix also apply to the calculation of the +estimate of the covariance matrix of the parameter estimates. +The additional option is + + - `has_optimal_weights`: If true, then the calculation of the covariance + matrix assumes that we have optimal GMM with :math:`W = S^{-1}`. + Default is True. + TODO: do we want to have a different default after `onestep`? + + +''' + +class GMM(Model): + ''' + Class for estimation by Generalized Method of Moments + + needs to be subclassed, where the subclass defined the moment conditions + `momcond` + + Parameters + ---------- + endog : array + endogenous variable, see notes + exog : array + array of exogenous variables, see notes + instrument : array + array of instruments, see notes + nmoms : None or int + number of moment conditions, if None then it is set equal to the + number of columns of instruments. Mainly needed to determin the shape + or size of start parameters and starting weighting matrix. + kwds : anything + this is mainly if additional variables need to be stored for the + calculations of the moment conditions + + Attributes + ---------- + results : instance of GMMResults + currently just a storage class for params and cov_params without it's + own methods + bse : property + return bse + + + + Notes + ----- + The GMM class only uses the moment conditions and does not use any data + directly. endog, exog, instrument and kwds in the creation of the class + instance are only used to store them for access in the moment conditions. + Which of this are required and how they are used depends on the moment + conditions of the subclass. + + Warning: + + Options for various methods have not been fully implemented and + are still missing in several methods. + + + TODO: + currently onestep (maxiter=0) still produces an updated estimate of bse + and cov_params. + + ''' + + results_class = 'GMMResults' + + def __init__(self, endog, exog, instrument, k_moms=None, k_params=None, + missing='none', **kwds): + ''' + maybe drop and use mixin instead + + TODO: GMM doesn't really care about the data, just the moment conditions + ''' + instrument = self._check_inputs(instrument, endog) # attaches if needed + super(GMM, self).__init__(endog, exog, missing=missing, + instrument=instrument) +# self.endog = endog +# self.exog = exog +# self.instrument = instrument + self.nobs = endog.shape[0] + if k_moms is not None: + self.nmoms = k_moms + elif instrument is not None: + self.nmoms = instrument.shape[1] + else: + self.nmoms = np.nan + + if k_params is not None: + self.k_params = k_params + elif instrument is not None: + self.k_params = exog.shape[1] + else: + self.k_params = np.nan + + self.__dict__.update(kwds) + self.epsilon_iter = 1e-6 + + def _check_inputs(self, instrument, endog): + if instrument is not None: + offset = np.asarray(instrument) + if offset.shape[0] != endog.shape[0]: + raise ValueError("instrument is not the same length as endog") + return instrument + + def _fix_param_names(self, params, param_names=None): + # TODO: this is a temporary fix, need + xnames = self.data.xnames + + if param_names is not None: + if len(params) == len(param_names): + self.data.xnames = param_names + else: + raise ValueError('param_names has the wrong length') + + else: + if len(params) < len(xnames): + # cut in front for poisson multiplicative + self.data.xnames = xnames[-len(params):] + elif len(params) > len(xnames): + # use generic names + self.data.xnames = ['p%2d' % i for i in range(len(params))] + + def set_param_names(self, param_names, k_params=None): + """set the parameter names in the model + + Parameters + ---------- + param_names : list of strings + param_names should have the same length as the number of params + k_params : None or int + If k_params is None, then the k_params attribute is used, unless + it is None. + If k_params is not None, then it will also set the k_params + attribute. + """ + if k_params is not None: + self.k_params = k_params + else: + k_params = self.k_params + + if k_params == len(param_names): + self.data.xnames = param_names + else: + raise ValueError('param_names has the wrong length') + + + def fit(self, start_params=None, maxiter=10, inv_weights=None, + weights_method='cov', wargs=(), + has_optimal_weights=True, + optim_method='bfgs', optim_args=None): + ''' + Estimate parameters using GMM and return GMMResults + + TODO: weight and covariance arguments still need to be made consistent + with similar options in other models, + see RegressionResult.get_robustcov_results + + Parameters + ---------- + start_params : array (optional) + starting value for parameters ub minimization. If None then + fitstart method is called for the starting values. + maxiter : int or 'cue' + Number of iterations in iterated GMM. The onestep estimate can be + obtained with maxiter=0 or 1. If maxiter is large, then the + iteration will stop either at maxiter or on convergence of the + parameters (TODO: no options for convergence criteria yet.) + If `maxiter == 'cue'`, the the continuously updated GMM is + calculated which updates the weight matrix during the minimization + of the GMM objective function. The CUE estimation uses the onestep + parameters as starting values. + inv_weights : None or ndarray + inverse of the starting weighting matrix. If inv_weights are not + given then the method `start_weights` is used which depends on + the subclass, for IV subclasses `inv_weights = z'z` where `z` are + the instruments, otherwise an identity matrix is used. + weights_method : string, defines method for robust + Options here are similar to :mod:`statsmodels.stats.robust_covariance` + default is heteroscedasticity consistent, HC0 + + currently available methods are + + - `cov` : HC0, optionally with degrees of freedom correction + - `hac` : + - `iid` : untested, only for Z*u case, IV cases with u as error indep of Z + - `ac` : not available yet + - `cluster` : not connected yet + - others from robust_covariance + + wargs` : tuple or dict, + required and optional arguments for weights_method + + - `centered` : bool, + indicates whether moments are centered for the calculation of the weights + and covariance matrix, applies to all weight_methods + - `ddof` : int + degrees of freedom correction, applies currently only to `cov` + - `maxlag` : int + number of lags to include in HAC calculation , applies only to `hac` + - others not yet, e.g. groups for cluster robust + + has_optimal_weights: If true, then the calculation of the covariance + matrix assumes that we have optimal GMM with :math:`W = S^{-1}`. + Default is True. + TODO: do we want to have a different default after `onestep`? + optim_method : string, default is 'bfgs' + numerical optimization method. Currently not all optimizers that + are available in LikelihoodModels are connected. + optim_args : dict + keyword arguments for the numerical optimizer. + + Returns + ------- + results : instance of GMMResults + this is also attached as attribute results + + Notes + ----- + + Warning: One-step estimation, `maxiter` either 0 or 1, still has + problems (at least compared to Stata's gmm). + By default it uses a heteroscedasticity robust covariance matrix, but + uses the assumption that the weight matrix is optimal. + See options for cov_params in the results instance. + + The same options as for weight matrix also apply to the calculation of + the estimate of the covariance matrix of the parameter estimates. + + ''' + # TODO: add check for correct wargs keys + # currently a misspelled key is not detected, + # because I'm still adding options + + # TODO: check repeated calls to fit with different options + # arguments are dictionaries, i.e. mutable + # unit test if anything is stale or spilled over. + + #bug: where does start come from ??? + start = start_params # alias for renaming + if start is None: + start = self.fitstart() #TODO: temporary hack + + if inv_weights is None: + inv_weights + + if optim_args is None: + optim_args = {} + if 'disp' not in optim_args: + optim_args['disp'] = 1 + + if maxiter == 0 or maxiter == 'cue': + if inv_weights is not None: + weights = np.linalg.pinv(inv_weights) + else: + # let start_weights handle the inv=False for maxiter=0 + weights = self.start_weights(inv=False) + + params = self.fitgmm(start, weights=weights, + optim_method=optim_method, optim_args=optim_args) + weights_ = weights # temporary alias used in jval + else: + params, weights = self.fititer(start, + maxiter=maxiter, + start_invweights=inv_weights, + weights_method=weights_method, + wargs=wargs, + optim_method=optim_method, + optim_args=optim_args) + # TODO weights returned by fititer is inv_weights - not true anymore + # weights_ currently not necessary and used anymore + weights_ = np.linalg.pinv(weights) + + if maxiter == 'cue': + #we have params from maxiter= 0 as starting value + # TODO: need to give weights options to gmmobjective_cu + params = self.fitgmm_cu(params, + optim_method=optim_method, + optim_args=optim_args) + # weights is stored as attribute + weights = self._weights_cu + + #TODO: use Bunch instead ? + options_other = {'weights_method':weights_method, + 'has_optimal_weights':has_optimal_weights, + 'optim_method':optim_method} + + # check that we have the right number of xnames + self._fix_param_names(params, param_names=None) + results = results_class_dict[self.results_class]( + model = self, + params = params, + weights = weights, + wargs = wargs, + options_other = options_other, + optim_args = optim_args) + + self.results = results # FIXME: remove, still keeping it temporarily + return results + + def fitgmm(self, start, weights=None, optim_method='bfgs', optim_args=None): + '''estimate parameters using GMM + + Parameters + ---------- + start : array_like + starting values for minimization + weights : array + weighting matrix for moment conditions. If weights is None, then + the identity matrix is used + + + Returns + ------- + paramest : array + estimated parameters + + Notes + ----- + todo: add fixed parameter option, not here ??? + + uses scipy.optimize.fmin + + ''' +## if not fixed is None: #fixed not defined in this version +## raise NotImplementedError + + # TODO: should start_weights only be in `fit` + if weights is None: + weights = self.start_weights(inv=False) + + if optim_args is None: + optim_args = {} + + if optim_method == 'nm': + optimizer = optimize.fmin + elif optim_method == 'bfgs': + optimizer = optimize.fmin_bfgs + # TODO: add score + optim_args['fprime'] = self.score #lambda params: self.score(params, weights) + elif optim_method == 'ncg': + optimizer = optimize.fmin_ncg + optim_args['fprime'] = self.score + elif optim_method == 'cg': + optimizer = optimize.fmin_cg + optim_args['fprime'] = self.score + elif optim_method == 'fmin_l_bfgs_b': + optimizer = optimize.fmin_l_bfgs_b + optim_args['fprime'] = self.score + elif optim_method == 'powell': + optimizer = optimize.fmin_powell + elif optim_method == 'slsqp': + optimizer = optimize.fmin_slsqp + else: + raise ValueError('optimizer method not available') + + if DEBUG: + print(np.linalg.det(weights)) + + #TODO: add other optimization options and results + return optimizer(self.gmmobjective, start, args=(weights,), + **optim_args) + + + def fitgmm_cu(self, start, optim_method='bfgs', optim_args=None): + '''estimate parameters using continuously updating GMM + + Parameters + ---------- + start : array_like + starting values for minimization + + Returns + ------- + paramest : array + estimated parameters + + Notes + ----- + todo: add fixed parameter option, not here ??? + + uses scipy.optimize.fmin + + ''' +## if not fixed is None: #fixed not defined in this version +## raise NotImplementedError + + if optim_args is None: + optim_args = {} + + if optim_method == 'nm': + optimizer = optimize.fmin + elif optim_method == 'bfgs': + optimizer = optimize.fmin_bfgs + optim_args['fprime'] = self.score_cu + elif optim_method == 'ncg': + optimizer = optimize.fmin_ncg + else: + raise ValueError('optimizer method not available') + + #TODO: add other optimization options and results + return optimizer(self.gmmobjective_cu, start, args=(), **optim_args) + + def start_weights(self, inv=True): + """Create identity matrix for starting weights""" + return np.eye(self.nmoms) + + def gmmobjective(self, params, weights): + ''' + objective function for GMM minimization + + Parameters + ---------- + params : array + parameter values at which objective is evaluated + weights : array + weighting matrix + + Returns + ------- + jval : float + value of objective function + + ''' + moms = self.momcond_mean(params) + return np.dot(np.dot(moms, weights), moms) + #moms = self.momcond(params) + #return np.dot(np.dot(moms.mean(0),weights), moms.mean(0)) + + + def gmmobjective_cu(self, params, weights_method='cov', + wargs=()): + ''' + objective function for continuously updating GMM minimization + + Parameters + ---------- + params : array + parameter values at which objective is evaluated + + Returns + ------- + jval : float + value of objective function + + ''' + moms = self.momcond(params) + inv_weights = self.calc_weightmatrix(moms, weights_method=weights_method, + wargs=wargs) + weights = np.linalg.pinv(inv_weights) + self._weights_cu = weights # store if we need it later + return np.dot(np.dot(moms.mean(0), weights), moms.mean(0)) + + + def fititer(self, start, maxiter=2, start_invweights=None, + weights_method='cov', wargs=(), optim_method='bfgs', + optim_args=None): + '''iterative estimation with updating of optimal weighting matrix + + stopping criteria are maxiter or change in parameter estimate less + than self.epsilon_iter, with default 1e-6. + + Parameters + ---------- + start : array + starting value for parameters + maxiter : int + maximum number of iterations + start_weights : array (nmoms, nmoms) + initial weighting matrix; if None, then the identity matrix + is used + weights_method : {'cov', ...} + method to use to estimate the optimal weighting matrix, + see calc_weightmatrix for details + + Returns + ------- + params : array + estimated parameters + weights : array + optimal weighting matrix calculated with final parameter + estimates + + Notes + ----- + + + + + ''' + self.history = [] + momcond = self.momcond + + if start_invweights is None: + w = self.start_weights(inv=True) + else: + w = start_invweights + + #call fitgmm function + #args = (self.endog, self.exog, self.instrument) + #args is not used in the method version + winv_new = w + for it in range(maxiter): + winv = winv_new + w = np.linalg.pinv(winv) + #this is still calling function not method +## resgmm = fitgmm(momcond, (), start, weights=winv, fixed=None, +## weightsoptimal=False) + resgmm = self.fitgmm(start, weights=w, optim_method=optim_method, + optim_args=optim_args) + + moms = momcond(resgmm) + # the following is S = cov_moments + winv_new = self.calc_weightmatrix(moms, + weights_method=weights_method, + wargs=wargs, params=resgmm) + + if it > 2 and maxabs(resgmm - start) < self.epsilon_iter: + #check rule for early stopping + # TODO: set has_optimal_weights = True + break + + start = resgmm + return resgmm, w + + + def calc_weightmatrix(self, moms, weights_method='cov', wargs=(), + params=None): + ''' + calculate omega or the weighting matrix + + Parameters + ---------- + moms : array + moment conditions (nobs x nmoms) for all observations evaluated at + a parameter value + weights_method : string 'cov' + If method='cov' is cov then the matrix is calculated as simple + covariance of the moment conditions. + see fit method for available aoptions for the weight and covariance + matrix + wargs : tuple or dict + parameters that are required by some kernel methods to + estimate the long-run covariance. Not used yet. + + Returns + ------- + w : array (nmoms, nmoms) + estimate for the weighting matrix or covariance of the moment + condition + + + Notes + ----- + + currently a constant cutoff window is used + TODO: implement long-run cov estimators, kernel-based + + Newey-West + Andrews + Andrews-Moy???? + + References + ---------- + Greene + Hansen, Bruce + + ''' + nobs, k_moms = moms.shape + # TODO: wargs are tuple or dict ? + if DEBUG: + print(' momcov wargs', wargs) + + centered = not ('centered' in wargs and not wargs['centered']) + if not centered: + # caller doesn't want centered moment conditions + moms_ = moms + else: + moms_ = moms - moms.mean() + + # TODO: store this outside to avoid doing this inside optimization loop + # TODO: subclasses need to be able to add weights_methods, and remove + # IVGMM can have homoscedastic (OLS), + # some options won't make sense in some cases + # possible add all here and allow subclasses to define a list + # TODO: should other weights_methods also have `ddof` + if weights_method == 'cov': + w = np.dot(moms_.T, moms_) + if 'ddof' in wargs: + # caller requests degrees of freedom correction + if wargs['ddof'] == 'k_params': + w /= (nobs - self.k_params) + else: + if DEBUG: + print(' momcov ddof', wargs['ddof']) + w /= (nobs - wargs['ddof']) + else: + # default: divide by nobs + w /= nobs + + elif weights_method == 'flatkernel': + #uniform cut-off window + # This was a trial version, can use HAC with flatkernel + if 'maxlag' not in wargs: + raise ValueError('flatkernel requires maxlag') + + maxlag = wargs['maxlag'] + h = np.ones(maxlag + 1) + w = np.dot(moms_.T, moms_)/nobs + for i in range(1,maxlag+1): + w += (h[i] * np.dot(moms_[i:].T, moms_[:-i]) / (nobs-i)) + + elif weights_method == 'hac': + maxlag = wargs['maxlag'] + if 'kernel' in wargs: + weights_func = wargs['kernel'] + else: + weights_func = smcov.weights_bartlett + wargs['kernel'] = weights_func + + w = smcov.S_hac_simple(moms_, nlags=maxlag, + weights_func=weights_func) + w /= nobs #(nobs - self.k_params) + + elif weights_method == 'iid': + # only when we have instruments and residual mom = Z * u + # TODO: problem we don't have params in argument + # I cannot keep everything in here w/o params as argument + u = self.get_error(params) + + if centered: + # Note: I'm not centering instruments, + # shouldn't we always center u? Ok, with centered as default + u -= u.mean(0) #demean inplace, we don't need original u + + instrument = self.instrument + w = np.dot(instrument.T, instrument).dot(np.dot(u.T, u)) / nobs + if 'ddof' in wargs: + # caller requests degrees of freedom correction + if wargs['ddof'] == 'k_params': + w /= (nobs - self.k_params) + else: + # assume ddof is a number + if DEBUG: + print(' momcov ddof', wargs['ddof']) + w /= (nobs - wargs['ddof']) + else: + # default: divide by nobs + w /= nobs + + else: + raise ValueError('weight method not available') + + return w + + + def momcond_mean(self, params): + ''' + mean of moment conditions, + + ''' + + momcond = self.momcond(params) + self.nobs_moms, self.k_moms = momcond.shape + return momcond.mean(0) + + + def gradient_momcond(self, params, epsilon=1e-4, centered=True): + '''gradient of moment conditions + + Parameters + ---------- + params : ndarray + parameter at which the moment conditions are evaluated + epsilon : float + stepsize for finite difference calculation + centered : bool + This refers to the finite difference calculation. If `centered` + is true, then the centered finite difference calculation is + used. Otherwise the one-sided forward differences are used. + + TODO: looks like not used yet + missing argument `weights` + + ''' + + momcond = self.momcond_mean + + # TODO: approx_fprime has centered keyword + if centered: + gradmoms = (approx_fprime(params, momcond, epsilon=epsilon) + + approx_fprime(params, momcond, epsilon=-epsilon))/2 + else: + gradmoms = approx_fprime(params, momcond, epsilon=epsilon) + + return gradmoms + + def score(self, params, weights, epsilon=None, centered=True): + """Score""" + deriv = approx_fprime(params, self.gmmobjective, args=(weights,), + centered=centered, epsilon=epsilon) + + return deriv + + def score_cu(self, params, epsilon=None, centered=True): + """Score cu""" + deriv = approx_fprime(params, self.gmmobjective_cu, args=(), + centered=centered, epsilon=epsilon) + + return deriv + + +# TODO: wrong superclass, I want tvalues, ... right now +class GMMResults(LikelihoodModelResults): + '''just a storage class right now''' + + use_t = False + + def __init__(self, *args, **kwds): + self.__dict__.update(kwds) + + self.nobs = self.model.nobs + self.df_resid = np.inf + + self.cov_params_default = self._cov_params() + + @cache_readonly + def q(self): + """Objective function at params""" + return self.model.gmmobjective(self.params, self.weights) + + @cache_readonly + def jval(self): + """nobs_moms attached by momcond_mean""" + return self.q * self.model.nobs_moms + + def _cov_params(self, **kwds): + #TODO add options ???) + # this should use by default whatever options have been specified in + # fit + + # TODO: don't do this when we want to change options +# if hasattr(self, '_cov_params'): +# #replace with decorator later +# return self._cov_params + + # set defaults based on fit arguments + if 'wargs' not in kwds: + # Note: we don't check the keys in wargs, use either all or nothing + kwds['wargs'] = self.wargs + if 'weights_method' not in kwds: + kwds['weights_method'] = self.options_other['weights_method'] + if 'has_optimal_weights' not in kwds: + kwds['has_optimal_weights'] = self.options_other['has_optimal_weights'] + + gradmoms = self.model.gradient_momcond(self.params) + moms = self.model.momcond(self.params) + covparams = self.calc_cov_params(moms, gradmoms, **kwds) + + return covparams + + + def calc_cov_params(self, moms, gradmoms, weights=None, use_weights=False, + has_optimal_weights=True, + weights_method='cov', wargs=()): + '''calculate covariance of parameter estimates + + not all options tried out yet + + If weights matrix is given, then the formula use to calculate cov_params + depends on whether has_optimal_weights is true. + If no weights are given, then the weight matrix is calculated with + the given method, and has_optimal_weights is assumed to be true. + + (API Note: The latter assumption could be changed if we allow for + has_optimal_weights=None.) + + ''' + + nobs = moms.shape[0] + + if weights is None: + #omegahat = self.model.calc_weightmatrix(moms, method=method, wargs=wargs) + #has_optimal_weights = True + #add other options, Barzen, ... longrun var estimators + # TODO: this might still be inv_weights after fititer + weights = self.weights + else: + pass + #omegahat = weights #2 different names used, + #TODO: this is wrong, I need an estimate for omega + + if use_weights: + omegahat = weights + else: + omegahat = self.model.calc_weightmatrix( + moms, + weights_method=weights_method, + wargs=wargs, + params=self.params) + + + if has_optimal_weights: #has_optimal_weights: + # TOD0 make has_optimal_weights depend on convergence or iter >2 + cov = np.linalg.inv(np.dot(gradmoms.T, + np.dot(np.linalg.inv(omegahat), gradmoms))) + else: + gw = np.dot(gradmoms.T, weights) + gwginv = np.linalg.inv(np.dot(gw, gradmoms)) + cov = np.dot(np.dot(gwginv, np.dot(np.dot(gw, omegahat), gw.T)), gwginv) + #cov /= nobs + + return cov/nobs + + @property + def bse_(self): + '''standard error of the parameter estimates + ''' + return self.get_bse() + + def get_bse(self, **kwds): + '''standard error of the parameter estimates with options + + Parameters + ---------- + kwds : optional keywords + options for calculating cov_params + + Returns + ------- + bse : ndarray + estimated standard error of parameter estimates + + ''' + return np.sqrt(np.diag(self.cov_params(**kwds))) + + def jtest(self): + '''overidentification test + + I guess this is missing a division by nobs, + what's the normalization in jval ? + ''' + + jstat = self.jval + nparams = self.params.size #self.nparams + df = self.model.nmoms - nparams + return jstat, stats.chi2.sf(jstat, df), df + + + def compare_j(self, other): + '''overidentification test for comparing two nested gmm estimates + + This assumes that some moment restrictions have been dropped in one + of the GMM estimates relative to the other. + + Not tested yet + + We are comparing two separately estimated models, that use different + weighting matrices. It is not guaranteed that the resulting + difference is positive. + + TODO: Check in which cases Stata programs use the same weigths + + ''' + jstat1 = self.jval + k_moms1 = self.model.nmoms + jstat2 = other.jval + k_moms2 = other.model.nmoms + jdiff = jstat1 - jstat2 + df = k_moms1 - k_moms2 + if df < 0: + # possible nested in other way, TODO allow this or not + # flip sign instead of absolute + df = - df + jdiff = - jdiff + return jdiff, stats.chi2.sf(jdiff, df), df + + def summary(self, yname=None, xname=None, title=None, alpha=.05): + """Summarize the Regression Results + + Parameters + ---------- + yname : string, optional + Default is `y` + xname : list of strings, optional + Default is `var_##` for ## in p the number of regressors + title : string, optional + Title for the top table. If not None, then this replaces the + default title + alpha : float + significance level for the confidence intervals + + Returns + ------- + smry : Summary instance + this holds the summary tables and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary.Summary : class to hold summary + results + + """ + #TODO: add a summary text for options that have been used + + jvalue, jpvalue, jdf = self.jtest() + + top_left = [('Dep. Variable:', None), + ('Model:', None), + ('Method:', ['GMM']), + ('Date:', None), + ('Time:', None), + ('No. Observations:', None), + #('Df Residuals:', None), #[self.df_resid]), #TODO: spelling + #('Df Model:', None), #[self.df_model]) + ] + + top_right = [#('R-squared:', ["%#8.3f" % self.rsquared]), + #('Adj. R-squared:', ["%#8.3f" % self.rsquared_adj]), + ('Hansen J:', ["%#8.4g" % jvalue] ), + ('Prob (Hansen J):', ["%#6.3g" % jpvalue]), + #('F-statistic:', ["%#8.4g" % self.fvalue] ), + #('Prob (F-statistic):', ["%#6.3g" % self.f_pvalue]), + #('Log-Likelihood:', None), #["%#6.4g" % self.llf]), + #('AIC:', ["%#8.4g" % self.aic]), + #('BIC:', ["%#8.4g" % self.bic]) + ] + + if title is None: + title = self.model.__class__.__name__ + ' ' + "Results" + + # create summary table instance + from statsmodels.iolib.summary import Summary + smry = Summary() + smry.add_table_2cols(self, gleft=top_left, gright=top_right, + yname=yname, xname=xname, title=title) + smry.add_table_params(self, yname=yname, xname=xname, alpha=alpha, + use_t=self.use_t) + + return smry + + + +class IVGMM(GMM): + ''' + Basic class for instrumental variables estimation using GMM + + A linear function for the conditional mean is defined as default but the + methods should be overwritten by subclasses, currently `LinearIVGMM` and + `NonlinearIVGMM` are implemented as subclasses. + + See Also + -------- + LinearIVGMM + NonlinearIVGMM + + ''' + + results_class = 'IVGMMResults' + + def fitstart(self): + """Create array of zeros""" + return np.zeros(self.exog.shape[1]) + + def start_weights(self, inv=True): + """Starting weights""" + zz = np.dot(self.instrument.T, self.instrument) + nobs = self.instrument.shape[0] + if inv: + return zz / nobs + else: + return np.linalg.pinv(zz / nobs) + + def get_error(self, params): + """Get error at params""" + return self.endog - self.predict(params) + + def predict(self, params, exog=None): + """Get prediction at params""" + if exog is None: + exog = self.exog + + return np.dot(exog, params) + + def momcond(self, params): + """Error times instrument""" + instrument = self.instrument + return instrument * self.get_error(params)[:, None] + + +class LinearIVGMM(IVGMM): + """class for linear instrumental variables models estimated with GMM + + Uses closed form expression instead of nonlinear optimizers for each step + of the iterative GMM. + + The model is assumed to have the following moment condition + + E( z * (y - x beta)) = 0 + + Where `y` is the dependent endogenous variable, `x` are the explanatory + variables and `z` are the instruments. Variables in `x` that are exogenous + need also be included in `z`. + + Notation Warning: our name `exog` stands for the explanatory variables, + and includes both exogenous and explanatory variables that are endogenous, + i.e. included endogenous variables + + Parameters + ---------- + endog : array_like + dependent endogenous variable + exog : array_like + explanatory, right hand side variables, including explanatory variables + that are endogenous + instrument : array_like + Instrumental variables, variables that are exogenous to the error + in the linear model containing both included and excluded exogenous + variables + + + """ + + def fitgmm(self, start, weights=None, optim_method=None, **kwds): + '''estimate parameters using GMM for linear model + + Uses closed form expression instead of nonlinear optimizers + + Parameters + ---------- + start : not used + starting values for minimization, not used, only for consistency + of method signature + weights : array + weighting matrix for moment conditions. If weights is None, then + the identity matrix is used + optim_method : not used, + optimization method, not used, only for consistency of method + signature + **kwds : keyword arguments + not used, will be silently ignored (for compatibility with generic) + + + Returns + ------- + paramest : array + estimated parameters + + ''' +## if not fixed is None: #fixed not defined in this version +## raise NotImplementedError + + # TODO: should start_weights only be in `fit` + if weights is None: + weights = self.start_weights(inv=False) + + y, x, z = self.endog, self.exog, self.instrument + + zTx = np.dot(z.T, x) + zTy = np.dot(z.T, y) + # normal equation, solved with pinv + part0 = zTx.T.dot(weights) + part1 = part0.dot(zTx) + part2 = part0.dot(zTy) + params = np.linalg.pinv(part1).dot(part2) + + return params + + + def predict(self, params, exog=None): + if exog is None: + exog = self.exog + + return np.dot(exog, params) + + + def gradient_momcond(self, params, **kwds): + # **kwds for compatibility not used + + x, z = self.exog, self.instrument + gradmoms = -np.dot(z.T, x) / self.nobs + + return gradmoms + + def score(self, params, weights, **kwds): + # **kwds for compatibility, not used + # Note: I coud use general formula with gradient_momcond instead + + x, z = self.exog, self.instrument + nobs = z.shape[0] + + u = self.get_errors(params) + score = -2 * np.dot(x.T, z).dot(weights.dot(np.dot(z.T, u))) + score /= nobs * nobs + + return score + + + +class NonlinearIVGMM(IVGMM): + """ + Class for non-linear instrumental variables estimation wusing GMM + + The model is assumed to have the following moment condition + + E[ z * (y - f(X, beta)] = 0 + + Where `y` is the dependent endogenous variable, `x` are the explanatory + variables and `z` are the instruments. Variables in `x` that are exogenous + need also be included in z. `f` is a nonlinear function. + + Notation Warning: our name `exog` stands for the explanatory variables, + and includes both exogenous and explanatory variables that are endogenous, + i.e. included endogenous variables + + Parameters + ---------- + endog : array_like + dependent endogenous variable + exog : array_like + explanatory, right hand side variables, including explanatory variables + that are endogenous. + instruments : array_like + Instrumental variables, variables that are exogenous to the error + in the linear model containing both included and excluded exogenous + variables + func : callable + function for the mean or conditional expectation of the endogenous + variable. The function will be called with parameters and the array of + explanatory, right hand side variables, `func(params, exog)` + + Notes + ----- + This class uses numerical differences to obtain the derivative of the + objective function. If the jacobian of the conditional mean function, `func` + is available, then it can be used by subclassing this class and defining + a method `jac_func`. + + TODO: check required signature of jac_error and jac_func + + """ + # This should be reversed: + # NonlinearIVGMM is IVGMM and need LinearIVGMM as special case (fit, predict) + + + def fitstart(self): + #might not make sense for more general functions + return np.zeros(self.exog.shape[1]) + + + def __init__(self, endog, exog, instrument, func, **kwds): + self.func = func + super(NonlinearIVGMM, self).__init__(endog, exog, instrument, **kwds) + + + def predict(self, params, exog=None): + if exog is None: + exog = self.exog + + return self.func(params, exog) + + #---------- the following a semi-general versions, + # TODO: move to higher class after testing + + def jac_func(self, params, weights, args=None, centered=True, epsilon=None): + + # TODO: Why are ther weights in the signature - copy-paste error? + deriv = approx_fprime(params, self.func, args=(self.exog,), + centered=centered, epsilon=epsilon) + + return deriv + + + def jac_error(self, params, weights, args=None, centered=True, + epsilon=None): + + jac_func = self.jac_func(params, weights, args=None, centered=True, + epsilon=None) + + return -jac_func + + + def score(self, params, weights, **kwds): + # **kwds for compatibility not used + # Note: I coud use general formula with gradient_momcond instead + + z = self.instrument + nobs = z.shape[0] + + jac_u = self.jac_error(params, weights, args=None, epsilon=None, + centered=True) + x = -jac_u # alias, plays the same role as X in linear model + + u = self.get_error(params) + + score = -2 * np.dot(np.dot(x.T, z), weights).dot(np.dot(z.T, u)) + score /= nobs * nobs + + return score + + +class IVGMMResults(GMMResults): + """Results class of IVGMM""" + # this assumes that we have an additive error model `(y - f(x, params))` + + @cache_readonly + def fittedvalues(self): + """Fitted values""" + return self.model.predict(self.params) + + + @cache_readonly + def resid(self): + """Residuals""" + return self.model.endog - self.fittedvalues + + + @cache_readonly + def ssr(self): + """Sum of square errors""" + return (self.resid * self.resid).sum(0) + + + + +def spec_hausman(params_e, params_i, cov_params_e, cov_params_i, dof=None): + '''Hausmans specification test + + Parameters + ---------- + params_e : array + efficient and consistent under Null hypothesis, + inconsistent under alternative hypothesis + params_i: array + consistent under Null hypothesis, + consistent under alternative hypothesis + cov_params_e : array, 2d + covariance matrix of parameter estimates for params_e + cov_params_i : array, 2d + covariance matrix of parameter estimates for params_i + + example instrumental variables OLS estimator is `e`, IV estimator is `i` + + + Notes + ----- + + Todos,Issues + - check dof calculations and verify for linear case + - check one-sided hypothesis + + + References + ---------- + Greene section 5.5 p.82/83 + + + ''' + params_diff = (params_i - params_e) + cov_diff = cov_params_i - cov_params_e + #TODO: the following is very inefficient, solves problem (svd) twice + #use linalg.lstsq or svd directly + #cov_diff will very often be in-definite (singular) + if not dof: + dof = np.linalg.matrix_rank(cov_diff) + cov_diffpinv = np.linalg.pinv(cov_diff) + H = np.dot(params_diff, np.dot(cov_diffpinv, params_diff)) + pval = stats.chi2.sf(H, dof) + + evals = np.linalg.eigvalsh(cov_diff) + + return H, pval, dof, evals + + + + +########### + +class DistQuantilesGMM(GMM): + ''' + Estimate distribution parameters by GMM based on matching quantiles + + Currently mainly to try out different requirements for GMM when we cannot + calculate the optimal weighting matrix. + + ''' + + def __init__(self, endog, exog, instrument, **kwds): + #TODO: something wrong with super + super(DistQuantilesGMM, self).__init__(endog, exog, instrument) + #self.func = func + self.epsilon_iter = 1e-5 + + self.distfn = kwds['distfn'] + #done by super doesn't work yet + #TypeError: super does not take keyword arguments + self.endog = endog + + #make this optional for fit + if 'pquant' not in kwds: + self.pquant = pquant = np.array([0.01, 0.05,0.1,0.4,0.6,0.9,0.95,0.99]) + else: + self.pquant = pquant = kwds['pquant'] + + #TODO: vectorize this: use edf + self.xquant = np.array([stats.scoreatpercentile(endog, p) for p + in pquant*100]) + self.nmoms = len(self.pquant) + + #TODOcopied from GMM, make super work + self.endog = endog + self.exog = exog + self.instrument = instrument + self.results = GMMResults(model=self) + #self.__dict__.update(kwds) + self.epsilon_iter = 1e-6 + + def fitstart(self): + #todo: replace with or add call to distfn._fitstart + # added but not used during testing, avoid Travis + distfn = self.distfn + if hasattr(distfn, '_fitstart'): + start = distfn._fitstart(self.endog) + else: + start = [1]*distfn.numargs + [0.,1.] + + return np.asarray(start) + + def momcond(self, params): #drop distfn as argument + #, mom2, quantile=None, shape=None + '''moment conditions for estimating distribution parameters by matching + quantiles, defines as many moment conditions as quantiles. + + Returns + ------- + difference : array + difference between theoretical and empirical quantiles + + Notes + ----- + This can be used for method of moments or for generalized method of + moments. + + ''' + #this check looks redundant/unused know + if len(params) == 2: + loc, scale = params + elif len(params) == 3: + shape, loc, scale = params + else: + #raise NotImplementedError + pass #see whether this might work, seems to work for beta with 2 shape args + + #mom2diff = np.array(distfn.stats(*params)) - mom2 + #if not quantile is None: + pq, xq = self.pquant, self.xquant + #ppfdiff = distfn.ppf(pq, alpha) + cdfdiff = self.distfn.cdf(xq, *params) - pq + #return np.concatenate([mom2diff, cdfdiff[:1]]) + return np.atleast_2d(cdfdiff) + + def fitonce(self, start=None, weights=None, has_optimal_weights=False): + '''fit without estimating an optimal weighting matrix and return results + + This is a convenience function that calls fitgmm and covparams with + a given weight matrix or the identity weight matrix. + This is useful if the optimal weight matrix is know (or is analytically + given) or if an optimal weight matrix cannot be calculated. + + (Developer Notes: this function could go into GMM, but is needed in this + class, at least at the moment.) + + Parameters + ---------- + + + Returns + ------- + results : GMMResult instance + result instance with params and _cov_params attached + + See Also + -------- + fitgmm + cov_params + + ''' + if weights is None: + weights = np.eye(self.nmoms) + params = self.fitgmm(start=start) + # TODO: rewrite this old hack, should use fitgmm or fit maxiter=0 + self.results.params = params #required before call to self.cov_params + self.results.wargs = {} #required before call to self.cov_params + self.results.options_other = {'weights_method':'cov'} + # TODO: which weights_method? There shouldn't be any needed ? + _cov_params = self.results.cov_params(weights=weights, + has_optimal_weights=has_optimal_weights) + + self.results.weights = weights + self.results.jval = self.gmmobjective(params, weights) + self.results.options_other.update({'has_optimal_weights':has_optimal_weights}) + + return self.results + + +results_class_dict = {'GMMResults': GMMResults, + 'IVGMMResults': IVGMMResults, + 'DistQuantilesGMM': GMMResults} #TODO: should be a default diff --git a/statsmodels/sandbox/regression/kernridgeregress_class.py b/statsmodels/sandbox/regression/kernridgeregress_class.py new file mode 100644 index 0000000..fae28f0 --- /dev/null +++ b/statsmodels/sandbox/regression/kernridgeregress_class.py @@ -0,0 +1,206 @@ +'''Kernel Ridge Regression for local non-parametric regression''' + + +import numpy as np +from scipy import spatial as ssp +import matplotlib.pylab as plt + + +def kernel_rbf(x,y,scale=1, **kwds): + #scale = kwds.get('scale',1) + dist = ssp.minkowski_distance_p(x[:,np.newaxis,:],y[np.newaxis,:,:],2) + return np.exp(-0.5/scale*(dist)) + + +def kernel_euclid(x,y,p=2, **kwds): + return ssp.minkowski_distance(x[:,np.newaxis,:],y[np.newaxis,:,:],p) + + +class GaussProcess(object): + '''class to perform kernel ridge regression (gaussian process) + + Warning: this class is memory intensive, it creates nobs x nobs distance + matrix and its inverse, where nobs is the number of rows (observations). + See sparse version for larger number of observations + + + Notes + ----- + + Todo: + * normalize multidimensional x array on demand, either by var or cov + * add confidence band + * automatic selection or proposal of smoothing parameters + + Note: this is different from kernel smoothing regression, + see for example http://en.wikipedia.org/wiki/Kernel_smoother + + In this version of the kernel ridge regression, the training points + are fitted exactly. + Needs a fast version for leave-one-out regression, for fitting each + observation on all the other points. + This version could be numerically improved for the calculation for many + different values of the ridge coefficient. see also short summary by + Isabelle Guyon (ETHZ) in a manuscript KernelRidge.pdf + + Needs verification and possibly additional statistical results or + summary statistics for interpretation, but this is a problem with + non-parametric, non-linear methods. + + Reference + --------- + + Rasmussen, C.E. and C.K.I. Williams, 2006, Gaussian Processes for Machine + Learning, the MIT Press, www.GaussianProcess.org/gpal, chapter 2 + + a short summary of the kernel ridge regression is at + http://www.ics.uci.edu/~welling/teaching/KernelsICS273B/Kernel-Ridge.pdf + ''' + + def __init__(self, x, y=None, kernel=kernel_rbf, + scale=0.5, ridgecoeff = 1e-10, **kwds ): + ''' + Parameters + ---------- + x : 2d array (N,K) + data array of explanatory variables, columns represent variables + rows represent observations + y : 2d array (N,1) (optional) + endogenous variable that should be fitted or predicted + can alternatively be specified as parameter to fit method + kernel : function, default: kernel_rbf + kernel: (x1,x2)->kernel matrix is a function that takes as parameter + two column arrays and return the kernel or distance matrix + scale : float (optional) + smoothing parameter for the rbf kernel + ridgecoeff : float (optional) + coefficient that is multiplied with the identity matrix in the + ridge regression + + Notes + ----- + After initialization, kernel matrix is calculated and if y is given + as parameter then also the linear regression parameter and the + fitted or estimated y values, yest, are calculated. yest is available + as an attribute in this case. + + Both scale and the ridge coefficient smooth the fitted curve. + + ''' + + self.x = x + self.kernel = kernel + self.scale = scale + self.ridgecoeff = ridgecoeff + self.distxsample = kernel(x,x,scale=scale) + self.Kinv = np.linalg.inv(self.distxsample + + np.eye(*self.distxsample.shape)*ridgecoeff) + if y is not None: + self.y = y + self.yest = self.fit(y) + + + def fit(self,y): + '''fit the training explanatory variables to a sample ouput variable''' + self.parest = np.dot(self.Kinv, y) #self.kernel(y,y,scale=self.scale)) + yhat = np.dot(self.distxsample,self.parest) + return yhat + +## print ds33.shape +## ds33_2 = kernel(x,x[::k,:],scale=scale) +## dsinv = np.linalg.inv(ds33+np.eye(*distxsample.shape)*ridgecoeff) +## B = np.dot(dsinv,y[::k,:]) + def predict(self,x): + '''predict new y values for a given array of explanatory variables''' + self.xpredict = x + distxpredict = self.kernel(x, self.x, scale=self.scale) + self.ypredict = np.dot(distxpredict, self.parest) + return self.ypredict + + def plot(self, y, plt=plt ): + '''some basic plots''' + #todo return proper graph handles + plt.figure() + plt.plot(self.x,self.y, 'bo-', self.x, self.yest, 'r.-') + plt.title('sample (training) points') + plt.figure() + plt.plot(self.xpredict,y,'bo-',self.xpredict,self.ypredict,'r.-') + plt.title('all points') + + + +def example1(): + m,k = 500,4 + upper = 6 + scale=10 + xs1a = np.linspace(1,upper,m)[:,np.newaxis] + xs1 = xs1a*np.ones((1,4)) + 1/(1.0+np.exp(np.random.randn(m,k))) + xs1 /= np.std(xs1[::k,:],0) # normalize scale, could use cov to normalize + y1true = np.sum(np.sin(xs1)+np.sqrt(xs1),1)[:,np.newaxis] + y1 = y1true + 0.250 * np.random.randn(m,1) + + stride = 2 #use only some points as trainig points e.g 2 means every 2nd + gp1 = GaussProcess(xs1[::stride,:],y1[::stride,:], kernel=kernel_euclid, + ridgecoeff=1e-10) + yhatr1 = gp1.predict(xs1) + plt.figure() + plt.plot(y1true, y1,'bo',y1true, yhatr1,'r.') + plt.title('euclid kernel: true y versus noisy y and estimated y') + plt.figure() + plt.plot(y1,'bo-',y1true,'go-',yhatr1,'r.-') + plt.title('euclid kernel: true (green), noisy (blue) and estimated (red) '+ + 'observations') + + gp2 = GaussProcess(xs1[::stride,:],y1[::stride,:], kernel=kernel_rbf, + scale=scale, ridgecoeff=1e-1) + yhatr2 = gp2.predict(xs1) + plt.figure() + plt.plot(y1true, y1,'bo',y1true, yhatr2,'r.') + plt.title('rbf kernel: true versus noisy (blue) and estimated (red) observations') + plt.figure() + plt.plot(y1,'bo-',y1true,'go-',yhatr2,'r.-') + plt.title('rbf kernel: true (green), noisy (blue) and estimated (red) '+ + 'observations') + #gp2.plot(y1) + + +def example2(m=100, scale=0.01, stride=2): + #m,k = 100,1 + upper = 6 + xs1 = np.linspace(1,upper,m)[:,np.newaxis] + y1true = np.sum(np.sin(xs1**2),1)[:,np.newaxis]/xs1 + y1 = y1true + 0.05*np.random.randn(m,1) + + ridgecoeff = 1e-10 + #stride = 2 #use only some points as trainig points e.g 2 means every 2nd + gp1 = GaussProcess(xs1[::stride,:],y1[::stride,:], kernel=kernel_euclid, + ridgecoeff=1e-10) + yhatr1 = gp1.predict(xs1) + plt.figure() + plt.plot(y1true, y1,'bo',y1true, yhatr1,'r.') + plt.title('euclid kernel: true versus noisy (blue) and estimated (red) observations') + plt.figure() + plt.plot(y1,'bo-',y1true,'go-',yhatr1,'r.-') + plt.title('euclid kernel: true (green), noisy (blue) and estimated (red) '+ + 'observations') + + gp2 = GaussProcess(xs1[::stride,:],y1[::stride,:], kernel=kernel_rbf, + scale=scale, ridgecoeff=1e-2) + yhatr2 = gp2.predict(xs1) + plt.figure() + plt.plot(y1true, y1,'bo',y1true, yhatr2,'r.') + plt.title('rbf kernel: true versus noisy (blue) and estimated (red) observations') + plt.figure() + plt.plot(y1,'bo-',y1true,'go-',yhatr2,'r.-') + plt.title('rbf kernel: true (green), noisy (blue) and estimated (red) '+ + 'observations') + #gp2.plot(y1) + +if __name__ == '__main__': + example2() + #example2(m=1000, scale=0.01) + #example2(m=100, scale=0.5) # oversmoothing + #example2(m=2000, scale=0.005) # this looks good for rbf, zoom in + #example2(m=200, scale=0.01,stride=4) + example1() + #plt.show() diff --git a/statsmodels/sandbox/regression/notes_runmnl.txt b/statsmodels/sandbox/regression/notes_runmnl.txt new file mode 100644 index 0000000..ca4a54f --- /dev/null +++ b/statsmodels/sandbox/regression/notes_runmnl.txt @@ -0,0 +1,34 @@ + + + + +access to data and parameters by branch and leaves +-------------------------------------------------- + +* this could be used in a similar way in other system estimators +* dictionary access to data per equation, branch, leaf + * alternative dictionary of individual variables used in equations + * memory: temporary copies while using linalg, or permanent copies +* outsource acces into call-back function or method +* with a parser the dictionaries could be created from a formula +* similar applies for accessing parameters from the params array in optimization (MLE, GMM) + when there are identical parameters across equations or leaves + * in latest version use dictionary mapping coefficient/parameter names to index into params + +global/outer-scope variables +---------------------------- + +* for nested logit I need to access params and store, change probabilites from the branch +* need variables in a scope outside of the recursion +* nested function or save params and probs in instance attribute + + +constraint estimation as alternative and extension +-------------------------------------------------- + +* cross-equation and within equation restrictions on parameters could also be directly + imposed, instead of relying on the dictionary +* no idea yet on how to encode this +* might be easier to use constraint optimizer and keep constraints (partially) separate from + the parameterization in the likelihood calculations + diff --git a/statsmodels/sandbox/regression/ols_anova_original.py b/statsmodels/sandbox/regression/ols_anova_original.py new file mode 100644 index 0000000..b3c9142 --- /dev/null +++ b/statsmodels/sandbox/regression/ols_anova_original.py @@ -0,0 +1,336 @@ +''' convenience functions for ANOVA type analysis with OLS + +Note: statistical results of ANOVA are not checked, OLS is +checked but not whether the reported results are the ones used +in ANOVA + +''' + +from __future__ import print_function +import numpy as np +import numpy.lib.recfunctions + +from statsmodels.compat.python import lmap +import statsmodels.api as sm + + +dt_b = np.dtype([('breed', int), ('sex', int), ('litter', int), + ('pen', int), ('pig', int), ('age', float), + ('bage', float), ('y', float)]) +''' too much work using structured masked arrays +dta = np.mafromtxt('dftest3.data', dtype=dt_b) + +dta_use = np.ma.column_stack[[dta[col] for col in 'y sex age'.split()]] +''' + + +dta = np.genfromtxt('dftest3.data') +print(dta.shape) +mask = np.isnan(dta) +print("rows with missing values", mask.any(1).sum()) +vars = dict((v[0], (idx, v[1])) for idx, v in enumerate((('breed', int), + ('sex', int), + ('litter', int), + ('pen', int), + ('pig', int), + ('age', float), + ('bage', float), + ('y', float)))) + +datavarnames = 'y sex age'.split() +#possible to avoid temporary array ? +dta_use = dta[:, [vars[col][0] for col in datavarnames]] +keeprows = ~np.isnan(dta_use).any(1) +print('number of complete observations', keeprows.sum()) +dta_used = dta_use[keeprows,:] + +varsused = dict((k, [dta_used[:,idx], idx, vars[k][1]]) for idx, k in enumerate(datavarnames)) + +# use function for dummy +#sexgroups = np.unique(dta_used[:,1]) +#sexdummy = (dta_used[:,1][:, None] == sexgroups).astype(int) + +def data2dummy(x, returnall=False): + '''convert array of categories to dummy variables + by default drops dummy variable for last category + uses ravel, 1d only''' + x = x.ravel() + groups = np.unique(x) + if returnall: + return (x[:, None] == groups).astype(int) + else: + return (x[:, None] == groups).astype(int)[:,:-1] + +def data2proddummy(x): + '''creates product dummy variables from 2 columns of 2d array + + drops last dummy variable, but not from each category + singular with simple dummy variable but not with constant + + quickly written, no safeguards + + ''' + #brute force, assumes x is 2d + #replace with encoding if possible + groups = np.unique(lmap(tuple, x.tolist())) + #includes singularity with additive factors + return (x==groups[:,None,:]).all(-1).T.astype(int)[:,:-1] + +def data2groupcont(x1,x2): + '''create dummy continuous variable + + Parameters + ---------- + x1 : 1d array + label or group array + x2 : 1d array (float) + continuous variable + + Notes + ----- + useful for group specific slope coefficients in regression + ''' + if x2.ndim == 1: + x2 = x2[:,None] + dummy = data2dummy(x1, returnall=True) + return dummy * x2 + +sexdummy = data2dummy(dta_used[:,1]) +factors = ['sex'] +for k in factors: + varsused[k][0] = data2dummy(varsused[k][0]) + +products = [('sex', 'age')] +for k in products: + varsused[''.join(k)] = data2proddummy(np.c_[varsused[k[0]][0],varsused[k[1]][0]]) + +# make dictionary of variables with dummies as one variable +#vars_to_use = {name: data or dummy variables} + +X_b0 = np.c_[sexdummy, dta_used[:,2], np.ones((dta_used.shape[0],1))] +y_b0 = dta_used[:,0] +res_b0 = sm.OLS(y_b0, X_b0).results +print(res_b0.params) +print(res_b0.ssr) + +anova_str0 = ''' +ANOVA statistics (model sum of squares excludes constant) +Source DF Sum Squares Mean Square F Value Pr > F +Model %(df_model)i %(ess)f %(mse_model)f %(fvalue)f %(f_pvalue)f +Error %(df_resid)i %(ssr)f %(mse_resid)f +CTotal %(nobs)i %(uncentered_tss)f %(mse_total)f + +R squared %(rsquared)f +''' + +anova_str = ''' +ANOVA statistics (model sum of squares includes constant) +Source DF Sum Squares Mean Square F Value Pr > F +Model %(df_model)i %(ssmwithmean)f %(mse_model)f %(fvalue)f %(f_pvalue)f +Error %(df_resid)i %(ssr)f %(mse_resid)f +CTotal %(nobs)i %(uncentered_tss)f %(mse_total)f + +R squared %(rsquared)f +''' + +#print(anova_str % dict([('df_model', res.df_model)]) +#anovares = ['df_model' , 'df_resid' + +def anovadict(res): + '''update regression results dictionary with ANOVA specific statistics + + not checked for completeness + ''' + ad = {} + ad.update(res.__dict__) + anova_attr = ['df_model', 'df_resid', 'ess', 'ssr','uncentered_tss', + 'mse_model', 'mse_resid', 'mse_total', 'fvalue', 'f_pvalue', + 'rsquared'] + for key in anova_attr: + ad[key] = getattr(res, key) + ad['nobs'] = res.model.nobs + ad['ssmwithmean'] = res.uncentered_tss - res.ssr + return ad + + +print(anova_str0 % anovadict(res_b0)) +#the following leaves the constant in, not with NIST regression +#but something fishy with res.ess negative in examples +print(anova_str % anovadict(res_b0)) + +print('using sex only') +X2 = np.c_[sexdummy, np.ones((dta_used.shape[0],1))] +res2 = sm.OLS(y_b0, X2).results +print(res2.params) +print(res2.ssr) +print(anova_str % anovadict(res2)) + +print('using age only') +X3 = np.c_[ dta_used[:,2], np.ones((dta_used.shape[0],1))] +res3 = sm.OLS(y_b0, X3).results +print(res3.params) +print(res3.ssr) +print(anova_str % anovadict(res3)) + + +def form2design(ss, data): + '''convert string formula to data dictionary + + ss : string + * I : add constant + * varname : for simple varnames data is used as is + * F:varname : create dummy variables for factor varname + * P:varname1*varname2 : create product dummy variables for + varnames + * G:varname1*varname2 : create product between factor and + continuous variable + data : dict or structured array + data set, access of variables by name as in dictionaries + + Returns + ------- + vars : dictionary + dictionary of variables with converted dummy variables + names : list + list of names, product (P:) and grouped continuous + variables (G:) have name by joining individual names + sorted according to input + + Examples + -------- + >>> xx, n = form2design('I a F:b P:c*d G:c*f', testdata) + >>> xx.keys() + ['a', 'b', 'const', 'cf', 'cd'] + >>> n + ['const', 'a', 'b', 'cd', 'cf'] + + Notes + ----- + + with sorted dict, separate name list wouldn't be necessary + ''' + vars = {} + names = [] + for item in ss.split(): + if item == 'I': + vars['const'] = np.ones(data.shape[0]) + names.append('const') + elif ':' not in item: + vars[item] = data[item] + names.append(item) + elif item[:2] == 'F:': + v = item.split(':')[1] + vars[v] = data2dummy(data[v]) + names.append(v) + elif item[:2] == 'P:': + v = item.split(':')[1].split('*') + vars[''.join(v)] = data2proddummy(np.c_[data[v[0]],data[v[1]]]) + names.append(''.join(v)) + elif item[:2] == 'G:': + v = item.split(':')[1].split('*') + vars[''.join(v)] = data2groupcont(data[v[0]], data[v[1]]) + names.append(''.join(v)) + else: + raise ValueError('unknown expression in formula') + return vars, names + +nobs = 1000 +testdataint = np.random.randint(3, size=(nobs,4)).view([('a',int),('b',int),('c',int),('d',int)]) +testdatacont = np.random.normal( size=(nobs,2)).view([('e',float), ('f',float)]) +dt2 = numpy.lib.recfunctions.zip_descr((testdataint, testdatacont),flatten=True) +# concatenate structured arrays +testdata = np.empty((nobs,1), dt2) +for name in testdataint.dtype.names: + testdata[name] = testdataint[name] +for name in testdatacont.dtype.names: + testdata[name] = testdatacont[name] + + +#print(form2design('a',testdata)) + +if 0: + xx, n = form2design('F:a',testdata) + print(xx) + print(form2design('P:a*b',testdata)) + print(data2proddummy((np.c_[testdata['a'],testdata['b']]))) + + xx, names = form2design('a F:b P:c*d',testdata) + +#xx, names = form2design('I a F:b F:c F:d P:c*d',testdata) +xx, names = form2design('I a F:b P:c*d', testdata) +xx, names = form2design('I a F:b P:c*d G:a*e f', testdata) + + +X = np.column_stack([xx[nn] for nn in names]) +# simple test version: all coefficients equal to one +y = X.sum(1) + 0.01*np.random.normal(size=(nobs)) +rest1 = sm.OLS(y,X).results +print(rest1.params) +print(anova_str % anovadict(rest1)) + +def dropname(ss, li): + '''drop names from a list of strings, + names to drop are in space delimeted list + does not change original list + ''' + newli = li[:] + for item in ss.split(): + newli.remove(item) + return newli + +X = np.column_stack([xx[nn] for nn in dropname('ae f', names)]) +# simple test version: all coefficients equal to one +y = X.sum(1) + 0.01*np.random.normal(size=(nobs)) +rest1 = sm.OLS(y,X).results +print(rest1.params) +print(anova_str % anovadict(rest1)) + + +# Example: from Bruce +# ------------------- + +# read data set and drop rows with missing data +dta = np.genfromtxt('dftest3.data', dt_b,missing='.', usemask=True) +print('missing', [dta.mask[k].sum() for k in dta.dtype.names]) +m = dta.mask.view(bool) +droprows = m.reshape(-1,len(dta.dtype.names)).any(1) +# get complete data as plain structured array +# maybe doesn't work with masked arrays +dta_use_b1 = dta[~droprows,:].data +print(dta_use_b1.shape) +print(dta_use_b1.dtype) + +#Example b1: variables from Bruce's glm + +# prepare data and dummy variables +xx_b1, names_b1 = form2design('I F:sex age', dta_use_b1) +# create design matrix +X_b1 = np.column_stack([xx_b1[nn] for nn in dropname('', names_b1)]) +y_b1 = dta_use_b1['y'] +# estimate using OLS +rest_b1 = sm.OLS(y_b1, X_b1).results +# print(results) +print(rest_b1.params) +print(anova_str % anovadict(rest_b1)) +#compare with original version only in original version +print(anova_str % anovadict(res_b0)) + +# Example: use all variables except pig identifier + +allexog = ' '.join(dta.dtype.names[:-1]) +#'breed sex litter pen pig age bage' + +xx_b1a, names_b1a = form2design('I F:breed F:sex F:litter F:pen age bage', dta_use_b1) +X_b1a = np.column_stack([xx_b1a[nn] for nn in dropname('', names_b1a)]) +y_b1a = dta_use_b1['y'] +rest_b1a = sm.OLS(y_b1a, X_b1a).results +print(rest_b1a.params) +print(anova_str % anovadict(rest_b1a)) + +for dropn in names_b1a: + print('\nResults dropping', dropn) + X_b1a_ = np.column_stack([xx_b1a[nn] for nn in dropname(dropn, names_b1a)]) + y_b1a_ = dta_use_b1['y'] + rest_b1a_ = sm.OLS(y_b1a_, X_b1a_).results + #print(rest_b1a_.params + print(anova_str % anovadict(rest_b1a_)) diff --git a/statsmodels/sandbox/regression/onewaygls.py b/statsmodels/sandbox/regression/onewaygls.py new file mode 100644 index 0000000..ab9738b --- /dev/null +++ b/statsmodels/sandbox/regression/onewaygls.py @@ -0,0 +1,383 @@ +# -*- coding: utf-8 -*- +""" +F test for null hypothesis that coefficients in several regressions are the same + +* implemented by creating groupdummies*exog and testing appropriate contrast + matrices +* similar to test for structural change in all variables at predefined break points +* allows only one group variable +* currently tests for change in all exog variables +* allows for heterogscedasticity, error variance varies across groups +* does not work if there is a group with only a single observation + +TODO +---- + +* generalize anova structure, + - structural break in only some variables + - compare structural breaks in several exog versus constant only + - fast way to construct comparisons +* print anova style results +* add all pairwise comparison tests (DONE) with and without Bonferroni correction +* add additional test, likelihood-ratio, lagrange-multiplier, wald ? +* test for heteroscedasticity, equality of variances + - how? + - like lagrange-multiplier in stattools heteroscedasticity tests +* permutation or bootstrap test statistic or pvalues + + +References +---------- + +Greene: section 7.4 Modeling and Testing for a Structural Break + is not the same because I use a different normalization, which looks easier + for more than 2 groups/subperiods + +after looking at Greene: +* my version assumes that all groups are large enough to estimate the coefficients +* in sections 7.4.2 and 7.5.3, predictive tests can also be used when there are + insufficient (nobs>> res.contrasts.keys() + [(0, 1), 1, 'all', 3, (1, 2), 2, (1, 3), (2, 3), (0, 3), (0, 2)] + + The keys are based on the original names or labels of the groups. + + TODO: keys can be numpy scalars and then the keys cannot be sorted + + + + ''' + if not hasattr(self, 'weights'): + self.fitbygroups() + groupdummy = (self.groupsint[:,None] == self.uniqueint).astype(int) + #order of dummy variables by variable - not used + #dummyexog = self.exog[:,:,None]*groupdummy[:,None,1:] + #order of dummy variables by grous - used + dummyexog = self.exog[:,None,:]*groupdummy[:,1:,None] + exog = np.c_[self.exog, dummyexog.reshape(self.exog.shape[0],-1)] #self.nobs ?? + #Notes: I changed to drop first group from dummy + #instead I want one full set dummies + if self.het: + weights = self.weights + res = WLS(self.endog, exog, weights=weights).fit() + else: + res = OLS(self.endog, exog).fit() + self.lsjoint = res + contrasts = {} + nvars = self.exog.shape[1] + nparams = exog.shape[1] + ndummies = nparams - nvars + contrasts['all'] = np.c_[np.zeros((ndummies, nvars)), np.eye(ndummies)] + for groupind, group in enumerate(self.unique[1:]): #need enumerate if groups != groupsint + groupind = groupind + 1 + contr = np.zeros((nvars, nparams)) + contr[:,nvars*groupind:nvars*(groupind+1)] = np.eye(nvars) + contrasts[group] = contr + #save also for pairs, see next + contrasts[(self.unique[0], group)] = contr + + #Note: I'm keeping some duplication for testing + pairs = np.triu_indices(len(self.unique),1) + for ind1,ind2 in zip(*pairs): #replace with group1, group2 in sorted(keys) + if ind1 == 0: + continue # need comparison with benchmark/normalization group separate + g1 = self.unique[ind1] + g2 = self.unique[ind2] + group = (g1, g2) + contr = np.zeros((nvars, nparams)) + contr[:,nvars*ind1:nvars*(ind1+1)] = np.eye(nvars) + contr[:,nvars*ind2:nvars*(ind2+1)] = -np.eye(nvars) + contrasts[group] = contr + + + self.contrasts = contrasts + + def fitpooled(self): + '''fit the pooled model, which assumes there are no differences across groups + ''' + if self.het: + if not hasattr(self, 'weights'): + self.fitbygroups() + weights = self.weights + res = WLS(self.endog, self.exog, weights=weights).fit() + else: + res = OLS(self.endog, self.exog).fit() + self.lspooled = res + + def ftest_summary(self): + '''run all ftests on the joint model + + Returns + ------- + fres : str + a string that lists the results of all individual f-tests + summarytable : list of tuples + contains (pair, (fvalue, pvalue,df_denom, df_num)) for each f-test + + Note + ---- + This are the raw results and not formatted for nice printing. + + ''' + if not hasattr(self, 'lsjoint'): + self.fitjoint() + txt = [] + summarytable = [] + + txt.append('F-test for equality of coefficients across groups') + fres = self.lsjoint.f_test(self.contrasts['all']) + txt.append(fres.__str__()) + summarytable.append(('all',(fres.fvalue, fres.pvalue, fres.df_denom, fres.df_num))) + +# for group in self.unique[1:]: #replace with group1, group2 in sorted(keys) +# txt.append('F-test for equality of coefficients between group' +# ' %s and group %s' % (group, '0')) +# fres = self.lsjoint.f_test(self.contrasts[group]) +# txt.append(fres.__str__()) +# summarytable.append((group,(fres.fvalue, fres.pvalue, fres.df_denom, fres.df_num))) + pairs = np.triu_indices(len(self.unique),1) + for ind1,ind2 in zip(*pairs): #replace with group1, group2 in sorted(keys) + g1 = self.unique[ind1] + g2 = self.unique[ind2] + txt.append('F-test for equality of coefficients between group' + ' %s and group %s' % (g1, g2)) + group = (g1, g2) + fres = self.lsjoint.f_test(self.contrasts[group]) + txt.append(fres.__str__()) + summarytable.append((group,(fres.fvalue, fres.pvalue, fres.df_denom, fres.df_num))) + + self.summarytable = summarytable + return '\n'.join(txt), summarytable + + + def print_summary(self, res): + '''printable string of summary + + ''' + groupind = res.groups + #res.fitjoint() #not really necessary, because called by ftest_summary + if hasattr(res, 'self.summarytable'): + summtable = self.summarytable + else: + _, summtable = res.ftest_summary() + txt = '' + #print ft[0] #skip because table is nicer + templ = \ +'''Table of F-tests for overall or pairwise equality of coefficients' +%(tab)s + + +Notes: p-values are not corrected for many tests + (no Bonferroni correction) + * : reject at 5%% uncorrected confidence level +Null hypothesis: all or pairwise coefficient are the same' +Alternative hypothesis: all coefficients are different' + + +Comparison with stats.f_oneway +%(statsfow)s + + +Likelihood Ratio Test +%(lrtest)s +Null model: pooled all coefficients are the same across groups,' +Alternative model: all coefficients are allowed to be different' +not verified but looks close to f-test result' + + +Ols parameters by group from individual, separate ols regressions' +%(olsbg)s +for group in sorted(res.olsbygroup): + r = res.olsbygroup[group] + print group, r.params + + +Check for heteroscedasticity, ' +variance and standard deviation for individual regressions' +%(grh)s +variance ', res.sigmabygroup +standard dev', np.sqrt(res.sigmabygroup) +''' + + from statsmodels.iolib import SimpleTable + resvals = {} + resvals['tab'] = str(SimpleTable([(['%r' % (row[0],)] + + list(row[1]) + + ['*']*(row[1][1]>0.5).item() ) for row in summtable], + headers=['pair', 'F-statistic','p-value','df_denom', + 'df_num'])) + resvals['statsfow'] = str(stats.f_oneway(*[res.endog[groupind==gr] for gr in + res.unique])) + #resvals['lrtest'] = str(res.lr_test()) + resvals['lrtest'] = str(SimpleTable([res.lr_test()], + headers=['likelihood ratio', 'p-value', 'df'] )) + + resvals['olsbg'] = str(SimpleTable([[group] + + res.olsbygroup[group].params.tolist() + for group in sorted(res.olsbygroup)])) + resvals['grh'] = str(SimpleTable(np.vstack([res.sigmabygroup, + np.sqrt(res.sigmabygroup)]), + headers=res.unique.tolist())) + + return templ % resvals + + # a variation of this has been added to RegressionResults as compare_lr + def lr_test(self): + r''' + generic likelihood ratio test between nested models + + \begin{align} + D & = -2(\ln(\text{likelihood for null model}) - \ln(\text{likelihood for alternative model})) \\ + & = -2\ln\left( \frac{\text{likelihood for null model}}{\text{likelihood for alternative model}} \right). + \end{align} + + is distributed as chisquare with df equal to difference in number of parameters or equivalently + difference in residual degrees of freedom (sign?) + + TODO: put into separate function + ''' + if not hasattr(self, 'lsjoint'): + self.fitjoint() + if not hasattr(self, 'lspooled'): + self.fitpooled() + loglikejoint = self.lsjoint.llf + loglikepooled = self.lspooled.llf + lrstat = -2*(loglikepooled - loglikejoint) #??? check sign + lrdf = self.lspooled.df_resid - self.lsjoint.df_resid + lrpval = stats.chi2.sf(lrstat, lrdf) + + return lrstat, lrpval, lrdf diff --git a/statsmodels/sandbox/regression/penalized.py b/statsmodels/sandbox/regression/penalized.py new file mode 100644 index 0000000..442cc66 --- /dev/null +++ b/statsmodels/sandbox/regression/penalized.py @@ -0,0 +1,476 @@ +# -*- coding: utf-8 -*- +"""linear model with Theil prior probabilistic restrictions, generalized Ridge + +Created on Tue Dec 20 00:10:10 2011 + +Author: Josef Perktold +License: BSD-3 + +open issues +* selection of smoothing factor, strength of prior, cross validation +* GLS, does this really work this way +* None of inherited results have been checked yet, + I'm not sure if any need to be adjusted or if only interpretation changes + One question is which results are based on likelihood (residuals) and which + are based on "posterior" as for example bse and cov_params + +* helper functions to construct priors? +* increasing penalization for ordered regressors, e.g. polynomials + +* compare with random/mixed effects/coefficient, like estimated priors + + + +there is something fishy with the result instance, some things, e.g. +normalized_cov_params, don't look like they update correctly as we +search over lambda -> some stale state again ? + +I added df_model to result class using the hatmatrix, but df_model is defined +in model instance not in result instance. -> not clear where refactoring should +occur. df_resid doesn't get updated correctly. +problem with definition of df_model, it has 1 subtracted for constant + + + +""" +from __future__ import print_function +from statsmodels.compat.python import lrange +import numpy as np +from statsmodels.tools.decorators import cache_readonly +from statsmodels.regression.linear_model import OLS, GLS, RegressionResults + + +def atleast_2dcols(x): + x = np.asarray(x) + if x.ndim == 1: + x = x[:, None] + return x + + +class TheilGLS(GLS): + r"""GLS with stochastic restrictions + + TheilGLS estimates the following linear model + + .. math:: y = X \beta + u + + using additional information given by a stochastic constraint + + .. math:: q = R \beta + v + + :math:`E(u) = 0`, :math:`cov(u) = \Sigma` + :math:`cov(u, v) = \Sigma_p`, with full rank. + + u and v are assumed to be independent of each other. + If :math:`E(v) = 0`, then the estimator is unbiased. + + Note: The explanatory variables are not rescaled, the parameter estimates + not scale equivariant and fitted values are not scale invariant since + scaling changes the relative penalization weights (for given \Sigma_p). + + Note: GLS is not tested yet, only Sigma is identity is tested + + Notes + ----- + + The parameter estimates solves the moment equation: + + .. math:: (X' \Sigma X + \lambda R' \sigma^2 \Sigma_p^{-1} R) b = X' \Sigma y + \lambda R' \Sigma_p^{-1} q + + :math:`\lambda` is the penalization weight similar to Ridge regression. + + If lambda is zero, then the parameter estimate is the same as OLS. If + lambda goes to infinity, then the restriction is imposed with equality. + In the model `pen_weight` is used as name instead of $\lambda$ + + R does not have to be square. The number of rows of R can be smaller + than the number of parameters. In this case not all linear combination + of parameters are penalized. + + The stochastic constraint can be interpreted in several different ways: + + - The prior information represents parameter estimates from independent + prior samples. + - We can consider it just as linear restrictions that we do not want + to impose without uncertainty. + - With a full rank square restriction matrix R, the parameter estimate + is the same as a Bayesian posterior mean for the case of an informative + normal prior, normal likelihood and known error variance Sigma. If R + is less than full rank, then it defines a partial prior. + + References + ---------- + Theil Goldberger + + Baum, Christopher slides for tgmixed in Stata + + (I don't remember what I used when I first wrote the code.) + + Parameters + ---------- + endog : array_like, 1-D + dependent or endogenous variable + exog : array_like, 1D or 2D + array of explanatory or exogenous variables + r_matrix : None or array_like, 2D + array of linear restrictions for stochastic constraint. + default is identity matrix that does not penalize constant, if constant + is detected to be in `exog`. + q_matrix : None or array_like + mean of the linear restrictions. If None, the it is set to zeros. + sigma_prior : None or array_like + A fully specified sigma_prior is a square matrix with the same number + of rows and columns as there are constraints (number of rows of r_matrix). + If sigma_prior is None, a scalar or one-dimensional, then a diagonal matrix + is created. + sigma : None or array_like + Sigma is the covariance matrix of the error term that is used in the same + way as in GLS. + + """ + + def __init__(self, endog, exog, r_matrix=None, q_matrix=None, + sigma_prior=None, sigma=None): + super(TheilGLS, self).__init__(endog, exog, sigma=sigma) + + if r_matrix is not None: + r_matrix = np.asarray(r_matrix) + else: + try: + const_idx = self.data.const_idx + except AttributeError: + const_idx = None + + k_exog = exog.shape[1] + r_matrix = np.eye(k_exog) + if const_idx is not None: + keep_idx = lrange(k_exog) + del keep_idx[const_idx] + r_matrix = r_matrix[keep_idx] # delete row for constant + + k_constraints, k_exog = r_matrix.shape + self.r_matrix = r_matrix + if k_exog != self.exog.shape[1]: + raise ValueError('r_matrix needs to have the same number of columns' + 'as exog') + + if q_matrix is not None: + self.q_matrix = atleast_2dcols(q_matrix) + else: + self.q_matrix = np.zeros(k_constraints)[:, None] + if self.q_matrix.shape != (k_constraints, 1): + raise ValueError('q_matrix has wrong shape') + + if sigma_prior is not None: + sigma_prior = np.asarray(sigma_prior) + if np.size(sigma_prior) == 1: + sigma_prior = np.diag(sigma_prior * np.ones(k_constraints)) + #no numerical shortcuts are used for this case + elif sigma_prior.ndim == 1: + sigma_prior = np.diag(sigma_prior) + else: + sigma_prior = np.eye(k_constraints) + + if sigma_prior.shape != (k_constraints, k_constraints): + raise ValueError('sigma_prior has wrong shape') + + self.sigma_prior = sigma_prior + self.sigma_prior_inv = np.linalg.pinv(sigma_prior) #or inv + + def fit(self, pen_weight=1., cov_type='sandwich', use_t=True): + """Estimate parameters and return results instance + + Parameters + ---------- + pen_weight : float + penalization factor for the restriction, default is 1. + cov_type : string, 'data-prior' or 'sandwich' + 'data-prior' assumes that the stochastic restriction reflects a + previous sample. The covariance matrix of the parameter estimate + is in this case the same form as the one of GLS. + The covariance matrix for cov_type='sandwich' treats the stochastic + restriction (R and q) as fixed and has a sandwich form analogously + to M-estimators. + + Returns + ------- + results : TheilRegressionResults instance + + Notes + ----- + cov_params for cov_type data-prior, is calculated as + + .. math:: \\sigma^2 A^{-1} + + cov_params for cov_type sandwich, is calculated as + + .. math:: \\sigma^2 A^{-1} (X'X) A^{-1} + + where :math:`A = X' \\Sigma X + \\lambda \\sigma^2 R' \\Simga_p^{-1} R` + + :math:`\\sigma^2` is an estimate of the error variance. + :math:`\\sigma^2` inside A is replaced by the estimate from the initial + GLS estimate. :math:`\\sigma^2` in cov_params is obtained from the + residuals of the final estimate. + + The sandwich form of the covariance estimator is not robust to + misspecified heteroscedasticity or autocorrelation. + + """ + lambd = pen_weight + #this does duplicate transformation, but I need resid not wresid + res_gls = GLS(self.endog, self.exog, sigma=self.sigma).fit() + self.res_gls = res_gls + sigma2_e = res_gls.mse_resid + + r_matrix = self.r_matrix + q_matrix = self.q_matrix + sigma_prior_inv = self.sigma_prior_inv + x = self.wexog + y = self.wendog[:,None] + #why are sigma2_e * lambd multiplied, not ratio? + #larger lambd -> stronger prior (it's not the variance) + # Bayesian: lambd is precision = 1/sigma2_prior + #print('lambd inside fit', lambd + xx = np.dot(x.T, x) + xpx = xx + \ + sigma2_e * lambd * np.dot(r_matrix.T, np.dot(sigma_prior_inv, r_matrix)) + xpy = np.dot(x.T, y) + \ + sigma2_e * lambd * np.dot(r_matrix.T, np.dot(sigma_prior_inv, q_matrix)) + #xpy = xpy[:,None] + + xpxi = np.linalg.pinv(xpx, rcond=1e-15**2) #to match pinv(x) in OLS case + xpxi_sandwich = xpxi.dot(xx).dot(xpxi) + params = np.dot(xpxi, xpy) #or solve + params = np.squeeze(params) + # normalized_cov_params should have sandwich form xpxi @ xx @ xpxi + if cov_type == 'sandwich': + normalized_cov_params = xpxi_sandwich + elif cov_type == 'data-prior': + normalized_cov_params = xpxi #why attach it to self, i.e. model? + else: + raise ValueError("cov_type has to be 'sandwich' or 'data-prior'") + + self.normalized_cov_params = xpxi_sandwich + self.xpxi = xpxi + self.sigma2_e = sigma2_e + lfit = TheilRegressionResults(self, params, + normalized_cov_params=normalized_cov_params, use_t=use_t) + + lfit.penalization_factor = lambd + return lfit + + def select_pen_weight(self, method='aicc', start_params=1., optim_args=None): + """find penalization factor that minimizes gcv or an information criterion + + Parameters + ---------- + method : string + the name of an attribute of the results class. Currently the following + are available aic, aicc, bic, gc and gcv. + start_params : float + starting values for the minimization to find the penalization factor + `lambd`. Not since there can be local minima, it is best to try + different starting values. + optim_args : None or dict + optimization keyword arguments used with `scipy.optimize.fmin` + + Returns + ------- + min_pen_weight : float + The penalization factor at which the target criterion is (locally) + minimized. + + Notes + ----- + This uses `scipy.optimize.fmin` as optimizer. + + """ + if optim_args is None: + optim_args = {} + + #this doesn't make sense, since number of parameters stays unchanged + # information criteria changes if we use df_model based on trace(hat_matrix) + #need leave-one-out, gcv; or some penalization for weak priors + #added extra penalization for lambd + def get_ic(lambd): + # this can be optimized more + # for pure Ridge we can keep the eigenvector decomposition + return getattr(self.fit(lambd), method) + + from scipy import optimize + lambd = optimize.fmin(get_ic, start_params, **optim_args) + return lambd + + +#TODO: +#I need the hatmatrix in the model if I want to do iterative fitting, e.g. GCV +#move to model or use it from a results instance inside the model, +# each call to fit returns results instance +# note: we need to recalculate hatmatrix for each lambda, so keep in results is fine + +class TheilRegressionResults(RegressionResults): + + def __init__(self, *args, **kwds): + super(TheilRegressionResults, self).__init__(*args, **kwds) + + # overwrite df_model and df_resid + self.df_model = self.hatmatrix_trace() - 1 #assume constant + self.df_resid = self.model.endog.shape[0] - self.df_model - 1 + + @cache_readonly + def hatmatrix_diag(self): + '''diagonal of hat matrix + + diag(X' xpxi X) + + where xpxi = (X'X + sigma2_e * lambd * sigma_prior)^{-1} + + Notes + ----- + + uses wexog, so this includes weights or sigma - check this case + + not clear whether I need to multiply by sigmahalf, i.e. + + (W^{-0.5} X) (X' W X)^{-1} (W^{-0.5} X)' or + (W X) (X' W X)^{-1} (W X)' + + projection y_hat = H y or in terms of transformed variables (W^{-0.5} y) + + might be wrong for WLS and GLS case + ''' + # TODO is this still correct with sandwich normalized_cov_params, I guess not + xpxi = self.model.normalized_cov_params + #something fishy with self.normalized_cov_params in result, doesn't update + #print(self.model.wexog.shape, np.dot(xpxi, self.model.wexog.T).shape + return (self.model.wexog * np.dot(xpxi, self.model.wexog.T).T).sum(1) + + #@cache_readonly + def hatmatrix_trace(self): + """trace of hat matrix + """ + return self.hatmatrix_diag.sum() + +## #this doesn't update df_resid +## @property #needs to be property or attribute (no call) +## def df_model(self): +## return self.hatmatrix_trace() + + #Note: mse_resid uses df_resid not nobs-k_vars, which might differ if df_model, tr(H), is used + #in paper for gcv ess/nobs is used instead of mse_resid + @cache_readonly + def gcv(self): + return self.mse_resid / (1. - self.hatmatrix_trace() / self.nobs)**2 + + @cache_readonly + def cv(self): + return ((self.resid / (1. - self.hatmatrix_diag))**2).sum() / self.nobs + + @cache_readonly + def aicc(self): + aic = np.log(self.mse_resid) + 1 + aic += 2 * (1. + self.hatmatrix_trace()) / (self.nobs - self.hatmatrix_trace() -2) + return aic + + + def test_compatibility(self): + """Hypothesis test for the compatibility of prior mean with data + + """ + # TODO: should we store the OLS results ? not needed so far, but maybe cache + #params_ols = np.linalg.pinv(self.model.exog).dot(self.model.endog) + #res = self.wald_test(self.model.r_matrix, q_matrix=self.model.q_matrix, use_f=False) + #from scratch + res_ols = OLS(self.model.endog, self.model.exog).fit() + r_mat = self.model.r_matrix + r_diff = self.model.q_matrix - r_mat.dot(res_ols.params)[:,None] + ols_cov_r = res_ols.cov_params(r_matrix=r_mat) + statistic = r_diff.T.dot(np.linalg.solve(ols_cov_r + self.model.sigma_prior, r_diff)) + from scipy import stats + df = np.linalg.matrix_rank(self.model.sigma_prior) # same as r_mat.shape[0] + pvalue = stats.chi2.sf(statistic, df) + # TODO: return results class + return statistic, pvalue, df + + + def share_data(self): + """a measure for the fraction of the data in the estimation result + + The share of the prior information is `1 - share_data`. + + Returns + ------- + share : float between 0 and 1 + share of data defined as the ration between effective degrees of + freedom of the model and the number (TODO should be rank) of the + explanatory variables. + + """ + + # this is hatmatrix_trace / self.exog.shape[1] + # This needs to use rank of exog and not shape[1], + # since singular exog is allowed + return (self.df_model + 1) / self.model.rank # + 1 is for constant + + +# contrast/restriction matrices, temporary location + +def coef_restriction_meandiff(n_coeffs, n_vars=None, position=0): + + reduced = np.eye(n_coeffs) - 1./n_coeffs + if n_vars is None: + return reduced + else: + full = np.zeros((n_coeffs, n_vars)) + full[:, position:position+n_coeffs] = reduced + return full + +def coef_restriction_diffbase(n_coeffs, n_vars=None, position=0, base_idx=0): + + reduced = -np.eye(n_coeffs) #make all rows, drop one row later + reduced[:, base_idx] = 1 + + keep = lrange(n_coeffs) + del keep[base_idx] + reduced = np.take(reduced, keep, axis=0) + + if n_vars is None: + return reduced + else: + full = np.zeros((n_coeffs-1, n_vars)) + full[:, position:position+n_coeffs] = reduced + return full + +def next_odd(d): + return d + (1 - d % 2) + +def coef_restriction_diffseq(n_coeffs, degree=1, n_vars=None, position=0, base_idx=0): + #check boundaries, returns "valid" ? + + if degree == 1: + diff_coeffs = [-1, 1] + n_points = 2 + elif degree > 1: + from scipy import misc + n_points = next_odd(degree + 1) #next odd integer after degree+1 + diff_coeffs = misc.central_diff_weights(n_points, ndiv=degree) + + dff = np.concatenate((diff_coeffs, np.zeros(n_coeffs - len(diff_coeffs)))) + from scipy import linalg + reduced = linalg.toeplitz(dff, np.zeros(n_coeffs - len(diff_coeffs) + 1)).T + #reduced = np.kron(np.eye(n_coeffs-n_points), diff_coeffs) + + if n_vars is None: + return reduced + else: + full = np.zeros((n_coeffs-1, n_vars)) + full[:, position:position+n_coeffs] = reduced + return full + + +## +## R = np.c_[np.zeros((n_groups, k_vars-1)), np.eye(n_groups)] +## r = np.zeros(n_groups) +## R = np.c_[np.zeros((n_groups-1, k_vars)), +## np.eye(n_groups-1)-1./n_groups * np.ones((n_groups-1, n_groups-1))] diff --git a/statsmodels/sandbox/regression/predstd.py b/statsmodels/sandbox/regression/predstd.py new file mode 100644 index 0000000..31ef7f9 --- /dev/null +++ b/statsmodels/sandbox/regression/predstd.py @@ -0,0 +1,101 @@ +'''Additional functions + +prediction standard errors and confidence intervals + + +A: josef pktd +''' + +import numpy as np +from scipy import stats + +def atleast_2dcol(x): + ''' convert array_like to 2d from 1d or 0d + + not tested because not used + ''' + x = np.asarray(x) + if (x.ndim == 1): + x = x[:, None] + elif (x.ndim == 0): + x = np.atleast_2d(x) + elif (x.ndim > 0): + raise ValueError('too many dimensions') + return x + + +def wls_prediction_std(res, exog=None, weights=None, alpha=0.05): + '''calculate standard deviation and confidence interval for prediction + + applies to WLS and OLS, not to general GLS, + that is independently but not identically distributed observations + + Parameters + ---------- + res : regression result instance + results of WLS or OLS regression required attributes see notes + exog : array_like (optional) + exogenous variables for points to predict + weights : scalar or array_like (optional) + weights as defined for WLS (inverse of variance of observation) + alpha : float (default: alpha = 0.05) + confidence level for two-sided hypothesis + + Returns + ------- + predstd : array_like, 1d + standard error of prediction + same length as rows of exog + interval_l, interval_u : array_like + lower und upper confidence bounds + + Notes + ----- + The result instance needs to have at least the following + res.model.predict() : predicted values or + res.fittedvalues : values used in estimation + res.cov_params() : covariance matrix of parameter estimates + + If exog is 1d, then it is interpreted as one observation, + i.e. a row vector. + + testing status: not compared with other packages + + References + ---------- + + Greene p.111 for OLS, extended to WLS by analogy + + ''' + # work around current bug: + # fit doesn't attach results to model, predict broken + #res.model.results + + covb = res.cov_params() + if exog is None: + exog = res.model.exog + predicted = res.fittedvalues + if weights is None: + weights = res.model.weights + else: + exog = np.atleast_2d(exog) + if covb.shape[1] != exog.shape[1]: + raise ValueError('wrong shape of exog') + predicted = res.model.predict(res.params, exog) + if weights is None: + weights = 1. + else: + weights = np.asarray(weights) + if weights.size > 1 and len(weights) != exog.shape[0]: + raise ValueError('weights and exog do not have matching shape') + + + # full covariance: + #predvar = res3.mse_resid + np.diag(np.dot(X2,np.dot(covb,X2.T))) + # predication variance only + predvar = res.mse_resid/weights + (exog * np.dot(covb, exog.T).T).sum(1) + predstd = np.sqrt(predvar) + tppf = stats.t.isf(alpha/2., res.df_resid) + interval_u = predicted + tppf * predstd + interval_l = predicted - tppf * predstd + return predstd, interval_l, interval_u diff --git a/statsmodels/sandbox/regression/runmnl.py b/statsmodels/sandbox/regression/runmnl.py new file mode 100644 index 0000000..d054271 --- /dev/null +++ b/statsmodels/sandbox/regression/runmnl.py @@ -0,0 +1,374 @@ +'''conditional logit and nested conditional logit + +nested conditional logit is supposed to be the random utility version +(RU2 and maybe RU1) + +References: +----------- +currently based on: +Greene, Econometric Analysis, 5th edition and draft (?) +Hess, Florian, 2002, Structural Choice analysis with nested logit models, + The Stats Journal 2(3) pp 227-252 + +not yet used: +Silberhorn Nadja, Yasemin Boztug, Lutz Hildebrandt, 2008, Estimation with the + nested logit model: specifications and software particularities, + OR Spectrum +Koppelman, Frank S., and Chandra Bhat with technical support from Vaneet Sethi, + Sriram Subramanian, Vincent Bernardin and Jian Zhang, 2006, + A Self Instructing Course in Mode Choice Modeling: Multinomial and + Nested Logit Models + +Author: josef-pktd +License: BSD (simplified) +''' + +from __future__ import print_function +from statsmodels.compat.python import zip +import numpy as np +import numpy.lib.recfunctions as recf +from scipy import optimize + + +class TryCLogit(object): + ''' + Conditional Logit, data handling test + + Parameters + ---------- + + endog : array (nobs,nchoices) + dummy encoding of realized choices + exog_bychoices : list of arrays + explanatory variables, one array of exog for each choice. Variables + with common coefficients have to be first in each array + ncommon : int + number of explanatory variables with common coefficients + + Notes + ----- + + Utility for choice j is given by + + $V_j = X_j * beta + Z * gamma_j$ + + where X_j contains generic variables (terminology Hess) that have the same + coefficient across choices, and Z are variables, like individual-specific + variables that have different coefficients across variables. + + If there are choice specific constants, then they should be contained in Z. + For identification, the constant of one choice should be dropped. + + + ''' + + def __init__(self, endog, exog_bychoices, ncommon): + self.endog = endog + self.exog_bychoices = exog_bychoices + self.ncommon = ncommon + self.nobs, self.nchoices = endog.shape + self.nchoices = len(exog_bychoices) + + #TODO: rename beta to params and include inclusive values for nested CL + betaind = [exog_bychoices[ii].shape[1]-ncommon for ii in range(4)] + zi = np.r_[[ncommon], ncommon + np.array(betaind).cumsum()] + beta_indices = [np.r_[np.array([0, 1]),z[zi[ii]:zi[ii+1]]] + for ii in range(len(zi)-1)] + self.beta_indices = beta_indices + + #for testing only + beta = np.arange(7) + betaidx_bychoices = [beta[idx] for idx in beta_indices] + + + def xbetas(self, params): + '''these are the V_i + ''' + + res = np.empty((self.nobs, self.nchoices)) + for choiceind in range(self.nchoices): + res[:,choiceind] = np.dot(self.exog_bychoices[choiceind], + params[self.beta_indices[choiceind]]) + return res + + def loglike(self, params): + #normalization ? + xb = self.xbetas(params) + expxb = np.exp(xb) + sumexpxb = expxb.sum(1)#[:,None] + probs = expxb/expxb.sum(1)[:,None] #we don't really need this for all + loglike = (self.endog * np.log(probs)).sum(1) + #is this the same: YES + #self.logliketest = (self.endog * xb).sum(1) - np.log(sumexpxb) + #if self.endog where index then xb[self.endog] + return -loglike.sum() #return sum for now not for each observation + + def fit(self, start_params=None): + if start_params is None: + start_params = np.zeros(6) # need better np.zeros(6) + return optimize.fmin(self.loglike, start_params, maxfun=10000) + + +class TryNCLogit(object): + ''' + Nested Conditional Logit (RUNMNL), data handling test + + unfinished, doesn't do anything yet + + ''' + + def __init__(self, endog, exog_bychoices, ncommon): + self.endog = endog + self.exog_bychoices = exog_bychoices + self.ncommon = ncommon + self.nobs, self.nchoices = endog.shape + self.nchoices = len(exog_bychoices) + + + #TODO rename beta to params and include inclusive values for nested CL + betaind = [exog_bychoices[ii].shape[1]-ncommon for ii in range(4)] + zi = np.r_[[ncommon], ncommon + np.array(betaind).cumsum()] + beta_indices = [np.r_[np.array([0, 1]),z[zi[ii]:zi[ii+1]]] + for ii in range(len(zi)-1)] + self.beta_indices = beta_indices + + #for testing only + beta = np.arange(7) + betaidx_bychoices = [beta[idx] for idx in beta_indices] + + + def xbetas(self, params): + '''these are the V_i + ''' + + res = np.empty((self.nobs, self.nchoices)) + for choiceind in range(self.nchoices): + res[:,choiceind] = np.dot(self.exog_bychoices[choiceind], + params[self.beta_indices[choiceind]]) + return res + + def loglike_leafbranch(self, params, tau): + #normalization ? + #check/change naming for tau + xb = self.xbetas(params) + expxb = np.exp(xb/tau) + sumexpxb = expxb.sum(1)#[:,None] + logsumexpxb = np.log(sumexpxb) + #loglike = (self.endog * xb).sum(1) - logsumexpxb + probs = expxb/sumexpxb[:,None] + return probs, logsumexpxp # noqa:F821 See GH#5756 + #if self.endog where index then xb[self.endog] + #return -loglike.sum() #return sum for now not for each observation + + def loglike_branch(self, params, tau): + #not yet sure how to keep track of branches during walking of tree + ivs = [] + for b in branches: # noqa:F821 See GH#5756 + probs, iv = self.loglike_leafbranch(params, tau) + ivs.append(iv) + + #ivs = np.array(ivs) #note ivs is (nobs,nbranchchoices) + ivs = np.column_stack(ivs) # this way ? + exptiv = np.exp(tau*ivs) + sumexptiv = exptiv.sum(1) + logsumexpxb = np.log(sumexpxb) # noqa:F821 See GH#5756 + probs = exptiv/sumexptiv[:,None] + + +####### obsolete version to try out attaching data, +####### new in treewalkerclass.py, copy new version to replace this +####### problem with bzr I will disconnect history when copying +testxb = 0 #global to class +class RU2NMNL(object): + '''Nested Multinomial Logit with Random Utility 2 parameterization + + ''' + + def __init__(self, endog, exog, tree, paramsind): + self.endog = endog + self.datadict = exog + self.tree = tree + self.paramsind = paramsind + + self.branchsum = '' + self.probs = {} + + + def calc_prob(self, tree, keys=None): + '''walking a tree bottom-up based on dictionary + ''' + endog = self.endog + datadict = self.datadict + paramsind = self.paramsind + branchsum = self.branchsum + + + if isinstance(tree, tuple): #assumes leaves are int for choice index + name, subtree = tree + print(name, datadict[name]) + print('subtree', subtree) + keys = [] + if testxb: + branchsum = datadict[name] + else: + branchsum = name #0 + for b in subtree: + print(b) + #branchsum += branch2(b) + branchsum = branchsum + self.calc_prob(b, keys) + print('branchsum', branchsum, keys) + for k in keys: + self.probs[k] = self.probs[k] + ['*' + name + '-prob'] + + else: + keys.append(tree) + self.probs[tree] = [tree + '-prob' + + '(%s)' % ', '.join(self.paramsind[tree])] + if testxb: + leavessum = sum((datadict[bi] for bi in tree)) + print('final branch with', tree, ''.join(tree), leavessum) #sum(tree) + return leavessum #sum(xb[tree]) + else: + return ''.join(tree) #sum(tree) + + print('working on branch', tree, branchsum) + return branchsum + + + +#Trying out ways to handle data +#------------------------------ + +#travel data from Greene +dta = np.genfromtxt('TableF23-2.txt', skip_header=1, + names='Mode Ttme Invc Invt GC Hinc PSize'.split()) + +endog = dta['Mode'].reshape(-1,4).copy() #I don't want a view +nobs, nchoices = endog.shape +datafloat = dta.view(float).reshape(-1,7) +exog = datafloat[:,1:].reshape(-1,6*nchoices).copy() #I don't want a view + +print(endog.sum(0)) +varnames = dta.dtype.names +print(varnames[1:]) +modes = ['Air', 'Train', 'Bus', 'Car'] +print(exog.mean(0).reshape(nchoices, -1)) # Greene Table 23.23 + + + + +#try dummy encoding for individual-specific variables +exog_choice_names = ['GC', 'Ttme'] +exog_choice = np.column_stack([dta[name] for name in exog_choice_names]) +exog_choice = exog_choice.reshape(-1,len(exog_choice_names)*nchoices) +exog_choice = np.c_[endog, exog_choice] # add constant dummy + +exog_individual = dta['Hinc'][:,None] + +#exog2 = np.c_[exog_choice, exog_individual*endog] + +# we can also overwrite and select in original datafloat +# e.g. Hinc*endog{choice) + +choice_index = np.arange(dta.shape[0]) % nchoices +hinca = dta['Hinc']*(choice_index==0) +dta2=recf.append_fields(dta, ['Hinca'],[hinca], usemask=False) + + +#another version + +xi = [] +for ii in range(4): + xi.append(datafloat[choice_index==ii]) + +#one more +dta1 = recf.append_fields(dta, ['Const'],[np.ones(dta.shape[0])], usemask=False) + +xivar = [['GC', 'Ttme', 'Const', 'Hinc'], + ['GC', 'Ttme', 'Const'], + ['GC', 'Ttme', 'Const'], + ['GC', 'Ttme']] #need to drop one constant + +xi = [] +for ii in range(4): + xi.append(dta1[xivar[ii]][choice_index==ii]) + #this doesn't change sequence of columns, bug report by Skipper I think + +ncommon = 2 +betaind = [len(xi[ii].dtype.names)-ncommon for ii in range(4)] +zi=np.r_[[ncommon], ncommon+np.array(betaind).cumsum()] +z=np.arange(7) #what is n? +betaindices = [np.r_[np.array([0, 1]),z[zi[ii]:zi[ii+1]]] + for ii in range(len(zi)-1)] + +beta = np.arange(7) +betai = [beta[idx] for idx in betaindices] + + + + +#examples for TryCLogit +#---------------------- + + +#get exogs as float +xifloat = [xx.view(float).reshape(nobs,-1) for xx in xi] +clogit = TryCLogit(endog, xifloat, 2) + +debug = 0 +if debug: + res = optimize.fmin(clogit.loglike, np.ones(6)) +#estimated parameters from Greene: +tab2324 = [-0.15501, -0.09612, 0.01329, 5.2074, 3.8690, 3.1632] +if debug: + res2 = optimize.fmin(clogit.loglike, tab2324) + +res3 = optimize.fmin(clogit.loglike, np.zeros(6),maxfun=10000) +#this has same numbers as Greene table 23.24, but different sequence +#coefficient on GC is exactly 10% of Greene's +#TODO: get better starting values +''' +Optimization terminated successfully. + Current function value: 199.128369 + Iterations: 957 + Function evaluations: 1456 +array([-0.0961246 , -0.0155019 , 0.01328757, 5.20741244, 3.86905293, + 3.16319074]) +''' +res3corr = res3[[1, 0, 2, 3, 4, 5]] +res3corr[0] *= 10 +print(res3corr - tab2324) # diff 1e-5 to 1e-6 +#199.128369 - 199.1284 #llf same up to print(precision of Greene + +print(clogit.fit()) + + +tree0 = ('top', + [('Fly',['Air']), + ('Ground', ['Train', 'Car', 'Bus']) + ]) + +datadict = dict(zip(['Air', 'Train', 'Bus', 'Car'], + [xifloat[i]for i in range(4)])) + +#for testing only (mock that returns it's own name +datadict = dict(zip(['Air', 'Train', 'Bus', 'Car'], + ['Airdata', 'Traindata', 'Busdata', 'Cardata'])) + +datadict.update({'top' : [], + 'Fly' : [], + 'Ground': []}) + +paramsind = {'top' : [], + 'Fly' : [], + 'Ground': [], + 'Air' : ['GC', 'Ttme', 'ConstA', 'Hinc'], + 'Train' : ['GC', 'Ttme', 'ConstT'], + 'Bus' : ['GC', 'Ttme', 'ConstB'], + 'Car' : ['GC', 'Ttme'] + } + +modru = RU2NMNL(endog, datadict, tree0, paramsind) +print(modru.calc_prob(modru.tree)) +print('\nmodru.probs') +print(modru.probs) diff --git a/statsmodels/sandbox/regression/sympy_diff.py b/statsmodels/sandbox/regression/sympy_diff.py new file mode 100644 index 0000000..ad0686d --- /dev/null +++ b/statsmodels/sandbox/regression/sympy_diff.py @@ -0,0 +1,61 @@ +# -*- coding: utf-8 -*- +""" +Created on Sat Mar 13 07:56:22 2010 + +Author: josef-pktd +""" +from __future__ import print_function +import sympy as sy + + +def pdf(x, mu, sigma): + """Return the probability density function as an expression in x""" + #x = sy.sympify(x) + return 1/(sigma*sy.sqrt(2*sy.pi)) * sy.exp(-(x-mu)**2 / (2*sigma**2)) + +def cdf(x, mu, sigma): + """Return the cumulative density function as an expression in x""" + #x = sy.sympify(x) + return (1+sy.erf((x-mu)/(sigma*sy.sqrt(2))))/2 + + +mu = sy.Symbol('mu') +sigma = sy.Symbol('sigma') +sigma2 = sy.Symbol('sigma2') +x = sy.Symbol('x') +y = sy.Symbol('y') +df = sy.Symbol('df') +s = sy.Symbol('s') + +dldxnorm = sy.log(pdf(x, mu,sigma)).diff(x) +print(sy.simplify(dldxnorm)) +print(sy.diff(sy.log(sy.gamma((s+1)/2)),s)) + +print(sy.diff((df+1)/2. * sy.log(1+df/(df-2)), df)) + +#standard t distribution, not verified +tllf1 = sy.log(sy.gamma((df+1)/2.)) - sy.log(sy.gamma(df/2.)) - 0.5*sy.log((df)*sy.pi) +tllf2 = (df+1.)/2. * sy.log(1. + (y-mu)**2/(df)/sigma2) + 0.5 * sy.log(sigma2) +tllf2std = (df+1.)/2. * sy.log(1. + y**2/df) + 0.5 +tllf = tllf1 - tllf2 +print(tllf1.diff(df)) +print(tllf2.diff(y)) +dlddf = (tllf1-tllf2).diff(df) +print(dlddf) +print(sy.cse(dlddf)) +print('\n derivative of loglike of t distribution wrt df') +for k,v in sy.cse(dlddf)[0]: print(k,'=',v) +print(sy.cse(dlddf)[1][0]) + +print('\nstandard t distribution, dll_df, dll_dy') +tllfstd = tllf1 - tllf2std +print(tllfstd.diff(df)) +print(tllfstd.diff(y)) + +print('\n') + +print(dlddf.subs(dict(y=1,mu=1,sigma2=1.5,df=10.0001))) +print(dlddf.subs(dict(y=1,mu=1,sigma2=1.5,df=10.0001)).evalf()) +# Note: derivatives of nested function doesn't work in sympy +# at least not higher order derivatives (second or larger) +# looks like print(failure diff --git a/statsmodels/sandbox/regression/tests/__init__.py b/statsmodels/sandbox/regression/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/sandbox/regression/tests/griliches76.dta b/statsmodels/sandbox/regression/tests/griliches76.dta new file mode 100644 index 0000000000000000000000000000000000000000..bd58a9375f1c04790f587a7795b9539340d00d27 GIT binary patch literal 64736 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 cH!B?K2oakC&+r<|G8)u9{>OV literal 0 HcmV?d00001 diff --git a/statsmodels/sandbox/regression/tests/racd10data_with_transformed.csv b/statsmodels/sandbox/regression/tests/racd10data_with_transformed.csv new file mode 100644 index 0000000..7c021c5 --- /dev/null +++ b/statsmodels/sandbox/regression/tests/racd10data_with_transformed.csv @@ -0,0 +1,3630 @@ +offer,ssiratio,age,educyr,physician,nonphysician,medicaid,private,female,phylim,actlim,income,totchr,insured,age2,linc,bh,docvis,ldocvis,ldocvisa,docbin,aget,aget2,incomet +0,.3945056,85,15,4,0,0,1,1,0,0,27.883,3,1,7225,3.328017,0,4,1.386294,1.386294,1,4,16,2.7882999 +0,1,83,8,6,0,0,0,1,1,1,11.628,2,0,6889,2.453416,1,6,1.791759,1.791759,1,3.6,12.96,1.1628 +0,1,82,11,2,1,1,0,1,1,0,3.456,2,0,6724,1.240112,1,2,.6931472,.6931472,1,3.4,11.56,.34560001 +0,.2051624,77,13,11,9,0,1,0,0,0,38.974,3,1,5929,3.662895,0,11,2.397895,2.397895,1,2.4,5.76,3.8973999 +0,.216923,76,14,3,5,0,1,1,0,0,36.861,1,1,5776,3.607154,0,3,1.098612,1.098612,1,2.2,4.84,3.6861 +0,.2192556,69,12,2,4,0,0,0,0,0,34.12,1,0,4761,3.529884,0,2,.6931472,.6931472,1,.8,.64,3.4119999 +0,.2261829,66,12,0,0,0,0,1,0,0,33.075,0,0,4356,3.498778,0,0,,-4.60517,0,.2,.04,3.3075001 +0,.3823529,71,12,5,12,0,1,1,1,1,18.224,2,1,5041,2.90274,0,5,1.609438,1.609438,1,1.2,1.44,1.8224001 +0,0,75,9,4,0,1,0,1,1,0,17.152,2,0,5625,2.842115,1,4,1.386294,1.386294,1,2,4,1.7152 +0,1,69,10,5,0,0,0,0,0,0,19.374,2,0,4761,2.963932,1,5,1.609438,1.609438,1,.8,.64,1.9374001 +0,.3383562,76,12,2,1,0,1,1,0,0,11.68,2,1,5776,2.457878,0,2,.6931472,.6931472,1,2.2,4.84,1.168 +0,.3074274,71,12,3,0,1,0,1,1,0,12.198,2,0,5041,2.501272,1,3,1.098612,1.098612,1,1.2,1.44,1.2198 +0,.9873618,80,10,3,0,1,0,0,1,1,3.798,1,0,6400,1.334475,1,3,1.098612,1.098612,1,3,9,.37980001 +0,0,85,10,1,0,0,0,1,0,0,5,3,0,7225,1.609438,1,1,0,0,1,4,16,.5 +0,.46875,68,9,6,0,0,1,1,1,0,32,3,1,4624,3.465736,1,6,1.791759,1.791759,1,.6,.36,3.2 +0,.9984547,73,16,5,2,0,1,0,1,0,8.413,1,1,5329,2.129778,0,5,1.609438,1.609438,1,1.6,2.56,.84130001 +0,0,80,1,3,0,1,0,0,0,1,7,2,0,6400,1.94591,1,3,1.098612,1.098612,1,3,9,.7 +0,1,70,16,9,2,0,0,1,1,1,12,4,0,4900,2.484907,0,9,2.197225,2.197225,1,1,1,1.2 +0,.351299,68,11,2,3,0,0,1,0,0,16.012,1,0,4624,2.773338,1,2,.6931472,.6931472,1,.6,.36,1.6011999 +0,.351299,72,10,0,1,0,0,0,0,0,16.012,0,0,5184,2.773338,1,0,,-4.60517,0,1.4,1.96,1.6011999 +0,.245058,85,12,9,5,0,1,0,0,0,36.726,3,1,7225,3.603485,0,9,2.197225,2.197225,1,4,16,3.6726002 +0,.2270949,73,16,1,1,0,1,1,0,0,39.631,1,1,5329,3.679612,0,1,0,0,1,1.6,2.56,3.9631001 +0,.4736643,85,4,4,1,1,0,1,1,1,10.556,3,0,7225,2.356694,0,4,1.386294,1.386294,1,4,16,1.0556 +0,.5123531,85,12,4,1,0,1,0,0,0,22.383,1,1,7225,3.108302,0,4,1.386294,1.386294,1,4,16,2.2382999 +0,1,78,13,2,7,0,0,1,0,0,9.8,1,0,6084,2.282382,0,2,.6931472,.6931472,1,2.6,6.76,.98000002 +0,1,72,12,5,1,0,1,0,0,0,9.8,4,1,5184,2.282382,0,5,1.609438,1.609438,1,1.4,1.96,.98000002 +0,.2068084,65,12,9,1,0,1,0,0,0,65.684,3,1,4225,4.184855,0,9,2.197225,2.197225,1,0,0,6.5683998 +0,.0254657,75,14,7,0,0,0,0,0,0,312.46,0,0,5625,5.744476,0,7,1.94591,1.94591,1,2,4,31.245999 +0,.6504864,72,9,5,3,0,1,0,1,1,19.53,4,1,5184,2.971952,0,5,1.609438,1.609438,1,1.4,1.96,1.9530001 +0,.6504864,72,8,8,0,0,1,1,1,1,19.53,5,1,5184,2.971952,0,8,2.079442,2.079442,1,1.4,1.96,1.9530001 +0,.9469697,79,16,4,3,0,1,0,0,0,11.088,2,1,6241,2.405864,0,4,1.386294,1.386294,1,2.8,7.84,1.1088 +0,.1286073,84,16,9,15,0,1,1,1,0,68.021,2,1,7056,4.219817,0,9,2.197225,2.197225,1,3.8,14.44,6.8021004 +0,.9402713,71,6,1,0,0,0,0,0,0,9.878,1,0,5041,2.29031,1,1,0,0,1,1.2,1.44,.98780003 +0,.6088895,70,11,5,0,0,0,1,1,0,15.254,2,0,4900,2.724842,1,5,1.609438,1.609438,1,1,1,1.5254 +0,.862069,68,14,4,0,0,1,1,0,0,14.5,2,1,4624,2.674149,0,4,1.386294,1.386294,1,.6,.36,1.45 +0,1,85,10,9,0,1,0,1,1,1,9.6,3,0,7225,2.261763,0,9,2.197225,2.197225,1,4,16,.96000004 +0,.3569516,68,14,5,9,0,0,1,0,0,16.809,1,0,4624,2.821914,0,5,1.609438,1.609438,1,.6,.36,1.6809 +0,0,78,12,1,0,1,0,0,0,0,0,1,0,6084,,1,1,0,0,1,2.6,6.76,0 +0,0,76,16,15,6,1,0,1,0,0,5.7,1,0,5776,1.740466,0,15,2.70805,2.70805,1,2.2,4.84,.56999998 +0,0,85,8,5,0,0,0,1,1,1,12.3,3,0,7225,2.509599,1,5,1.609438,1.609438,1,4,16,1.23 +0,.8527919,85,8,5,7,0,1,1,0,0,9.85,3,1,7225,2.287472,1,5,1.609438,1.609438,1,4,16,.98500004 +0,.6743637,74,12,2,2,0,1,1,1,1,15.244,0,1,5476,2.724186,0,2,.6931472,.6931472,1,1.8,3.24,1.5244 +0,.6292906,67,6,0,0,1,0,1,0,0,17.48,0,0,4489,2.861057,1,0,,-4.60517,0,.4,.16,1.748 +0,1,75,15,9,34,0,1,1,0,0,12,3,1,5625,2.484907,0,9,2.197225,2.197225,1,2,4,1.2 +0,0,83,6,6,0,0,0,1,1,1,0,2,0,6889,,1,6,1.791759,1.791759,1,3.6,12.96,0 +0,1,67,14,7,9,1,0,1,1,1,7.2,4,0,4489,1.974081,1,7,1.94591,1.94591,1,.4,.16,.71999998 +0,.6816075,72,14,20,9,0,0,0,1,0,18.339,3,0,5184,2.90903,0,20,2.995732,2.995732,1,1.4,1.96,1.8339001 +0,.6816075,70,12,5,2,0,0,1,0,0,18.339,2,0,4900,2.90903,0,5,1.609438,1.609438,1,1,1,1.8339001 +0,1,77,2,5,0,0,1,0,1,1,7.116,3,1,5929,1.962346,1,5,1.609438,1.609438,1,2.4,5.76,.71160002 +0,1,75,8,0,0,0,0,1,0,0,7.116,0,0,5625,1.962346,1,0,,-4.60517,0,2,4,.71160002 +0,1,66,9,5,2,1,0,1,1,1,6.972,3,0,4356,1.941902,1,5,1.609438,1.609438,1,.2,.04,.69720001 +0,1,84,10,4,0,1,0,1,1,1,6.864,1,0,7056,1.92629,1,4,1.386294,1.386294,1,3.8,14.44,.68639998 +0,1,81,8,13,1,0,1,1,1,0,3.2,1,1,6561,1.163151,0,13,2.564949,2.564949,1,3.2,10.24,.32 +0,.6928796,66,12,18,13,0,1,1,1,1,26.094,6,1,4356,3.261705,0,18,2.890372,2.890372,1,.2,.04,2.6094 +0,.4085579,71,14,12,6,0,0,0,1,1,24.305,3,0,5041,3.190682,0,12,2.484907,2.484907,1,1.2,1.44,2.4305 +0,.4085579,72,14,11,10,0,0,1,1,0,24.305,4,0,5184,3.190682,0,11,2.397895,2.397895,1,1.4,1.96,2.4305 +0,0,70,5,5,0,1,0,1,1,1,14.71,6,0,4900,2.688528,1,5,1.609438,1.609438,1,1,1,1.471 +0,.3280559,66,14,6,1,0,0,0,0,0,66.51,3,0,4356,4.197352,0,6,1.791759,1.791759,1,.2,.04,6.6510002 +0,.4218074,71,8,6,1,0,0,0,0,0,28.449,3,0,5041,3.348113,1,6,1.791759,1.791759,1,1.2,1.44,2.8448999 +0,0,76,8,6,0,0,0,1,0,0,.515,0,0,5776,-.6635884,0,6,1.791759,1.791759,1,2.2,4.84,.0515 +0,1,74,8,10,3,0,0,0,0,0,8.125,1,0,5476,2.094946,0,10,2.302585,2.302585,1,1.8,3.24,.8125 +0,1,73,13,5,3,0,0,1,0,0,8.125,2,0,5329,2.094946,0,5,1.609438,1.609438,1,1.6,2.56,.8125 +0,.5759445,66,12,3,0,0,1,1,0,0,23.346,0,1,4356,3.150426,0,3,1.098612,1.098612,1,.2,.04,2.3346001 +0,.5759445,65,12,8,1,0,1,0,0,0,23.346,1,1,4225,3.150426,0,8,2.079442,2.079442,1,0,0,2.3346001 +0,0,66,10,0,0,1,0,1,1,0,0,0,0,4356,,1,0,,-4.60517,0,.2,.04,0 +0,1,70,6,3,1,0,1,1,1,1,9,2,1,4900,2.197225,0,3,1.098612,1.098612,1,1,1,.9 +0,.6050013,70,5,8,0,0,0,0,1,1,14.876,6,0,4900,2.699749,0,8,2.079442,2.079442,1,1,1,1.4876 +0,.496758,66,12,0,0,0,0,0,0,0,19.124,0,0,4356,2.950944,1,0,,-4.60517,0,.2,.04,1.9124001 +0,.8,73,12,3,1,0,1,1,1,1,9,1,1,5329,2.197225,0,3,1.098612,1.098612,1,1.6,2.56,.9 +0,.677915,74,11,8,3,0,1,0,1,1,13.276,2,1,5476,2.585958,0,8,2.079442,2.079442,1,1.8,3.24,1.3276 +0,.8256881,74,12,5,1,0,1,1,0,0,10.9,2,1,5476,2.388763,0,5,1.609438,1.609438,1,1.8,3.24,1.09 +0,.5929359,77,14,2,12,0,1,1,0,0,15.968,0,1,5929,2.770587,0,2,.6931472,.6931472,1,2.4,5.76,1.5968 +0,.4027153,71,3,8,0,1,0,1,1,0,13.111,3,0,5041,2.573452,1,8,2.079442,2.079442,1,1.2,1.44,1.3111 +0,.1581424,83,17,10,0,0,0,1,0,0,75.881,1,0,6889,4.329166,0,10,2.302585,2.302585,1,3.6,12.96,7.5880997 +0,.2911996,74,16,22,1,0,1,0,1,0,74.928,3,1,5476,4.316528,0,22,3.091043,3.091043,1,1.8,3.24,7.4928001 +0,0,80,17,3,0,0,1,1,1,0,37.5,2,1,6400,3.624341,0,3,1.098612,1.098612,1,3,9,3.75 +0,.961149,80,12,6,2,0,1,1,1,0,10.862,2,1,6400,2.385271,0,6,1.791759,1.791759,1,3,9,1.0862 +0,.5858906,67,12,5,0,0,1,0,0,0,20.823,1,1,4489,3.036058,0,5,1.609438,1.609438,1,.4,.16,2.0823 +0,1,69,6,7,0,1,0,1,0,0,4.8,2,0,4761,1.568616,1,7,1.94591,1.94591,1,.8,.64,.48000002 +0,.0956158,65,17,12,22,0,1,0,0,0,83.595,2,1,4225,4.425984,0,12,2.484907,2.484907,1,0,0,8.3595001 +0,.8205128,77,2,4,11,0,0,1,0,0,11.7,1,0,5929,2.459589,0,4,1.386294,1.386294,1,2.4,5.76,1.17 +0,.3534662,65,0,10,0,0,0,1,1,1,13.444,1,0,4225,2.598533,1,10,2.302585,2.302585,1,0,0,1.3444 +0,.9118541,76,6,4,73,1,0,1,1,1,13.16,1,0,5776,2.577182,1,4,1.386294,1.386294,1,2.2,4.84,1.316 +0,0,69,16,11,2,0,1,1,0,0,28.971,1,1,4761,3.366295,0,11,2.397895,2.397895,1,.8,.64,2.8971001 +0,0,85,6,0,0,0,0,1,1,1,0,2,0,7225,,1,0,,-4.60517,0,4,16,0 +0,0,85,2,1,0,0,0,0,0,0,0,1,0,7225,,1,1,0,0,1,4,16,0 +0,.247992,67,12,2,0,0,0,1,1,1,11.952,3,0,4489,2.480899,1,2,.6931472,.6931472,1,.4,.16,1.1952 +0,.75,85,14,0,0,0,0,1,1,1,16,2,0,7225,2.772589,0,0,,-4.60517,0,4,16,1.6 +0,.6232687,70,10,15,1,0,1,0,1,1,18.05,2,1,4900,2.893146,0,15,2.70805,2.70805,1,1,1,1.8049999 +0,.6232687,67,13,9,1,0,1,1,0,1,18.05,4,1,4489,2.893146,0,9,2.197225,2.197225,1,.4,.16,1.8049999 +0,1,69,12,6,0,1,0,1,0,1,8.1,0,0,4761,2.091864,1,6,1.791759,1.791759,1,.8,.64,.81000004 +0,.9976247,73,11,5,0,0,1,1,1,0,8.42,1,1,5329,2.13061,0,5,1.609438,1.609438,1,1.6,2.56,.84200001 +0,.9976247,70,11,0,0,0,1,0,0,0,8.42,1,1,4900,2.13061,0,0,,-4.60517,0,1,1,.84200001 +0,.7692308,66,12,9,1,0,0,1,0,0,6.5,0,0,4356,1.871802,0,9,2.197225,2.197225,1,.2,.04,.65 +1,.3913043,67,11,2,0,0,1,1,0,0,27.6,2,1,4489,3.317816,1,2,.6931472,.6931472,1,.4,.16,2.76 +0,.824332,80,12,11,5,1,0,1,1,1,7.036,3,0,6400,1.95104,1,11,2.397895,2.397895,1,3,9,.70359998 +0,0,65,17,6,3,0,1,1,1,0,26.6,3,1,4225,3.280911,0,6,1.791759,1.791759,1,0,0,2.66 +0,1,73,8,17,0,1,0,1,1,1,6,1,0,5329,1.791759,1,17,2.833213,2.833213,1,1.6,2.56,.6 +0,.8594112,84,13,13,2,0,1,1,1,1,12.092,2,1,7056,2.492544,0,13,2.564949,2.564949,1,3.8,14.44,1.2092 +0,.9259259,85,12,3,0,0,1,1,1,1,16.2,3,1,7225,2.785011,0,3,1.098612,1.098612,1,4,16,1.6200001 +0,.6036058,85,17,14,0,0,0,0,0,0,24.294,1,0,7225,3.190229,0,14,2.639057,2.639057,1,4,16,2.4294001 +0,0,83,8,2,0,1,0,1,1,1,6.4,2,0,6889,1.856298,1,2,.6931472,.6931472,1,3.6,12.96,.64000001 +0,.5,80,5,2,0,1,0,1,0,0,15,4,0,6400,2.70805,0,2,.6931472,.6931472,1,3,9,1.5 +0,.5333334,66,12,3,6,0,1,1,1,0,15.75,1,1,4356,2.75684,0,3,1.098612,1.098612,1,.2,.04,1.575 +0,.1371652,67,12,3,2,0,1,0,0,0,61.24,2,1,4489,4.1148,0,3,1.098612,1.098612,1,.4,.16,6.1240002 +0,0,81,5,6,0,1,0,1,1,1,0,5,0,6561,,1,6,1.791759,1.791759,1,3.2,10.24,0 +0,.2105352,69,1,3,0,1,0,0,0,1,11.827,2,0,4761,2.470385,1,3,1.098612,1.098612,1,.8,.64,1.1827 +0,.5482456,85,12,8,0,0,0,0,1,0,18.24,2,0,7225,2.903617,0,8,2.079442,2.079442,1,4,16,1.824 +0,.5482456,78,12,4,0,0,0,1,1,0,18.24,0,0,6084,2.903617,0,4,1.386294,1.386294,1,2.6,6.76,1.824 +0,1,84,12,2,1,0,1,1,0,0,4.524,0,1,7056,1.509397,1,2,.6931472,.6931472,1,3.8,14.44,.45240002 +0,.8788546,78,12,15,12,1,0,1,0,0,7.264,3,0,6084,1.982931,1,15,2.70805,2.70805,1,2.6,6.76,.72639999 +0,.2222609,75,12,6,8,0,0,1,1,1,57.446,3,0,5625,4.050845,0,6,1.791759,1.791759,1,2,4,5.7445999 +0,0,76,15,10,2,0,1,0,0,0,8.2,1,1,5776,2.104134,0,10,2.302585,2.302585,1,2.2,4.84,.81999998 +0,.0866864,73,16,2,10,0,0,1,0,0,83.058,1,0,5329,4.419539,0,2,.6931472,.6931472,1,1.6,2.56,8.3057999 +0,0,85,6,5,19,1,0,1,1,1,20.413,3,0,7225,3.016172,1,5,1.609438,1.609438,1,4,16,2.0413 +0,.3570153,73,16,1,1,0,1,0,0,0,28.01,1,1,5329,3.332561,0,1,0,0,1,1.6,2.56,2.801 +0,.2100577,71,17,2,0,0,1,1,1,1,7.974,2,1,5041,2.076186,1,2,.6931472,.6931472,1,1.2,1.44,.7974 +0,.0476123,75,17,1,0,0,1,0,0,0,35.18,4,1,5625,3.560478,0,1,0,0,1,2,4,3.518 +0,.7710367,79,12,2,0,0,1,1,1,1,16.186,3,1,6241,2.784147,0,2,.6931472,.6931472,1,2.8,7.84,1.6186001 +0,1,68,6,7,0,1,0,1,0,0,4.572,1,0,4624,1.519951,0,7,1.94591,1.94591,1,.6,.36,.4572 +0,.999493,71,12,2,0,0,1,0,0,0,13.807,0,1,5041,2.625176,0,2,.6931472,.6931472,1,1.2,1.44,1.3807 +0,.999493,66,12,10,11,0,1,1,0,0,13.807,2,1,4356,2.625176,0,10,2.302585,2.302585,1,.2,.04,1.3807 +0,.7964758,85,10,8,0,0,0,1,1,1,22.7,2,0,7225,3.122365,0,8,2.079442,2.079442,1,4,16,2.2700001 +0,.326207,67,13,1,0,0,1,0,0,0,28.252,1,1,4489,3.341164,0,1,0,0,1,.4,.16,2.8252001 +0,1,72,4,20,2,0,1,1,0,0,10,2,1,5184,2.302585,1,20,2.995732,2.995732,1,1.4,1.96,1 +0,.4494526,70,13,0,0,0,0,1,0,0,31.149,1,0,4900,3.438782,0,0,,-4.60517,0,1,1,3.1149 +0,.4218519,75,16,0,0,0,0,0,0,0,33.187,0,0,5625,3.502158,0,0,,-4.60517,0,2,4,3.3187 +0,0,77,13,5,1,0,1,0,1,1,6.291,2,1,5929,1.83912,0,5,1.609438,1.609438,1,2.4,5.76,.62909999 +0,.7762282,73,10,5,2,0,1,1,0,0,28.109,2,1,5329,3.33609,0,5,1.609438,1.609438,1,1.6,2.56,2.8108999 +0,.661562,81,10,3,0,1,0,1,1,1,7.836,3,0,6561,2.058728,0,3,1.098612,1.098612,1,3.2,10.24,.7836 +0,0,79,12,6,0,0,0,1,1,1,0,1,0,6241,,0,6,1.791759,1.791759,1,2.8,7.84,0 +0,1,80,16,13,0,0,0,0,0,0,10,2,0,6400,2.302585,0,13,2.564949,2.564949,1,3,9,1 +0,1,77,16,10,2,0,0,1,0,0,10,1,0,5929,2.302585,0,10,2.302585,2.302585,1,2.4,5.76,1 +0,.3498088,70,7,3,1,0,1,0,1,1,50.742,2,1,4900,3.926754,1,3,1.098612,1.098612,1,1,1,5.0742001 +0,0,66,12,23,9,0,1,1,0,0,60.005,3,1,4356,4.094428,0,23,3.135494,3.135494,1,.2,.04,6.0005001 +0,.2666577,72,12,39,3,0,1,0,1,1,81.824,1,1,5184,4.404571,0,39,3.663562,3.663562,1,1.4,1.96,8.1823997 +0,0,69,6,1,0,0,0,1,0,0,0,0,0,4761,,1,1,0,0,1,.8,.64,0 +0,.8571429,74,8,1,0,0,0,1,0,0,5.6,1,0,5476,1.722767,0,1,0,0,1,1.8,3.24,.55999999 +0,.8335183,75,16,18,2,0,0,0,1,1,5.406,4,0,5625,1.687509,0,18,2.890372,2.890372,1,2,4,.54060001 +0,.8335183,75,12,11,0,0,0,1,1,1,5.406,1,0,5625,1.687509,0,11,2.397895,2.397895,1,2,4,.54060001 +0,.9940999,85,12,2,0,1,0,1,1,1,8.305,0,0,7225,2.116858,1,2,.6931472,.6931472,1,4,16,.83050003 +0,.5037783,85,12,9,0,0,0,1,0,0,9.528,2,0,7225,2.254235,1,9,2.197225,2.197225,1,4,16,.95279999 +0,.3315738,73,16,21,90,0,1,0,0,1,37.699,4,1,5329,3.629634,0,21,3.044523,3.044523,1,1.6,2.56,3.7699001 +0,.3315738,73,16,3,32,0,1,1,1,0,37.699,0,1,5329,3.629634,0,3,1.098612,1.098612,1,1.6,2.56,3.7699001 +0,0,70,6,0,0,1,0,0,0,0,0,0,0,4900,,1,0,,-4.60517,0,1,1,0 +0,0,65,0,2,0,0,0,1,0,0,0,2,0,4225,,1,2,.6931472,.6931472,1,0,0,0 +0,0,78,0,4,0,0,0,1,1,1,0,1,0,6084,,1,4,1.386294,1.386294,1,2.6,6.76,0 +0,.3588647,84,8,18,7,0,1,1,1,1,55.174,3,1,7056,4.010492,0,18,2.890372,2.890372,1,3.8,14.44,5.5174 +0,.9991436,68,12,3,0,0,0,0,1,1,14.012,1,0,4624,2.639914,0,3,1.098612,1.098612,1,.6,.36,1.4012 +0,.9991436,67,12,12,1,0,0,1,1,1,14.012,2,0,4489,2.639914,0,12,2.484907,2.484907,1,.4,.16,1.4012 +0,.4652673,72,17,10,19,0,1,0,0,0,23.105,2,1,5184,3.140049,0,10,2.302585,2.302585,1,1.4,1.96,2.3105 +0,.4652673,70,12,2,0,0,1,1,0,0,23.105,1,1,4900,3.140049,0,2,.6931472,.6931472,1,1,1,2.3105 +0,0,70,7,3,0,0,1,0,0,0,25.539,1,1,4900,3.240207,1,3,1.098612,1.098612,1,1,1,2.5539 +0,0,65,13,2,0,0,1,0,0,0,38.727,2,1,4225,3.656537,0,2,.6931472,.6931472,1,0,0,3.8727001 +0,.2075472,72,8,6,0,0,1,1,0,0,53,3,1,5184,3.970292,1,6,1.791759,1.791759,1,1.4,1.96,5.3 +0,.2226552,85,12,7,1,0,0,1,1,1,53.895,3,0,7225,3.987038,0,7,1.94591,1.94591,1,4,16,5.3895 +0,.1456725,85,12,5,0,0,1,0,0,0,48.053,1,1,7225,3.872305,0,5,1.609438,1.609438,1,4,16,4.8053001 +0,1,69,17,2,0,0,1,0,0,0,10.668,1,1,4761,2.367249,1,2,.6931472,.6931472,1,.8,.64,1.0668 +0,.4098621,65,12,13,16,0,1,0,0,1,52.869,2,1,4225,3.967817,0,13,2.564949,2.564949,1,0,0,5.2868999 +0,1,85,12,3,0,1,0,1,1,1,9,3,0,7225,2.197225,1,3,1.098612,1.098612,1,4,16,.9 +0,.8041958,85,4,14,5,1,0,1,1,1,6.864,4,0,7225,1.92629,0,14,2.639057,2.639057,1,4,16,.68639998 +0,1,75,9,1,2,1,0,1,1,1,8.316,2,0,5625,2.118181,0,1,0,0,1,2,4,.8316 +0,.426694,69,12,15,6,0,1,1,0,0,51.135,4,1,4761,3.934469,0,15,2.70805,2.70805,1,.8,.64,5.1134998 +0,0,73,10,2,0,0,1,0,0,0,38.916,2,1,5329,3.661406,0,2,.6931472,.6931472,1,1.6,2.56,3.8916 +0,.8582942,73,12,2,0,0,1,0,0,0,22.582,1,1,5329,3.117153,0,2,.6931472,.6931472,1,1.6,2.56,2.2582001 +0,.8582942,67,15,0,0,0,1,1,1,0,22.582,0,1,4489,3.117153,0,0,,-4.60517,0,.4,.16,2.2582001 +0,0,70,14,0,0,0,1,1,1,1,19.624,2,1,4900,2.976753,0,0,,-4.60517,0,1,1,1.9624001 +0,.3035121,77,16,18,1,0,1,0,0,0,34.595,0,1,5929,3.543709,0,18,2.890372,2.890372,1,2.4,5.76,3.4595001 +0,.3154764,81,14,11,0,0,1,1,0,0,33.283,2,1,6561,3.505047,0,11,2.397895,2.397895,1,3.2,10.24,3.3283001 +0,.6936463,80,12,2,0,0,1,1,0,0,16.321,1,1,6400,2.792453,0,2,.6931472,.6931472,1,3,9,1.6320999 +0,0,84,2,15,0,1,0,0,1,1,5.088,5,0,7056,1.626885,1,15,2.70805,2.70805,1,3.8,14.44,.50879998 +0,0,80,4,24,0,1,0,1,1,1,5.088,3,0,6400,1.626885,1,24,3.178054,3.178054,1,3,9,.50879998 +0,.6929824,72,10,13,12,0,1,1,0,0,11.4,1,1,5184,2.433613,0,13,2.564949,2.564949,1,1.4,1.96,1.14 +0,.6929824,76,6,2,0,0,1,0,0,0,11.4,1,1,5776,2.433613,0,2,.6931472,.6931472,1,2.2,4.84,1.14 +0,0,67,17,18,2,0,1,0,0,0,22.396,1,1,4489,3.108882,0,18,2.890372,2.890372,1,.4,.16,2.2396 +0,0,67,17,9,3,0,1,1,1,0,141.928,0,1,4489,4.95532,0,9,2.197225,2.197225,1,.4,.16,14.192799 +0,.4860312,66,12,0,1,0,1,0,0,0,26.953,0,1,4356,3.294095,0,0,,-4.60517,0,.2,.04,2.6952999 +0,.3198789,66,14,3,2,0,1,1,0,0,40.953,1,1,4356,3.712425,0,3,1.098612,1.098612,1,.2,.04,4.0952999 +0,.6163436,85,10,2,0,0,0,0,0,1,16.043,0,0,7225,2.775273,0,2,.6931472,.6931472,1,4,16,1.6042999 +0,1,76,11,8,1,0,1,0,1,1,18.075,3,1,5776,2.89453,1,8,2.079442,2.079442,1,2.2,4.84,1.8075001 +0,.9607843,69,16,4,0,0,1,0,0,0,10.2,0,1,4761,2.322388,0,4,1.386294,1.386294,1,.8,.64,1.02 +0,.8266181,85,10,0,0,0,1,1,1,1,11.541,1,1,7225,2.445906,0,0,,-4.60517,0,4,16,1.1541 +0,0,71,6,6,0,0,1,1,1,0,0,3,1,5041,,1,6,1.791759,1.791759,1,1.2,1.44,0 +0,0,74,12,4,0,0,1,0,0,1,0,3,1,5476,,1,4,1.386294,1.386294,1,1.8,3.24,0 +0,.4034317,73,11,4,4,0,1,0,0,0,29.373,0,1,5329,3.380076,0,4,1.386294,1.386294,1,1.6,2.56,2.9372999 +0,.8861138,72,12,10,0,0,1,1,0,0,13.373,2,1,5184,2.593238,0,10,2.302585,2.302585,1,1.4,1.96,1.3373 +0,.9556451,85,17,11,7,0,1,0,1,1,12.4,1,1,7225,2.517696,0,11,2.397895,2.397895,1,4,16,1.24 +0,.9556451,85,17,7,6,0,1,1,0,1,12.4,1,1,7225,2.517696,0,7,1.94591,1.94591,1,4,16,1.24 +0,.1031907,65,13,27,13,0,1,0,1,1,24.227,1,1,4225,3.187468,0,27,3.295837,3.295837,1,0,0,2.4226999 +0,.3573875,72,16,7,5,0,1,1,1,0,33.577,3,1,5184,3.513841,1,7,1.94591,1.94591,1,1.4,1.96,3.3577 +0,.058054,77,17,11,8,0,0,1,1,1,44.183,4,0,5929,3.78834,0,11,2.397895,2.397895,1,2.4,5.76,4.4182999 +0,.2155172,82,16,3,1,0,0,1,0,0,13.92,1,0,6724,2.633327,0,3,1.098612,1.098612,1,3.4,11.56,1.392 +0,.2155172,84,17,8,1,0,0,0,0,0,13.92,2,0,7056,2.633327,0,8,2.079442,2.079442,1,3.8,14.44,1.392 +0,.1733169,80,12,2,10,0,1,1,0,0,51.928,2,1,6400,3.949858,0,2,.6931472,.6931472,1,3,9,5.1928001 +0,0,79,10,13,0,1,0,1,1,0,6.768,4,0,6241,1.912206,1,13,2.564949,2.564949,1,2.8,7.84,.67680001 +0,.8538252,77,6,6,0,1,0,0,1,1,8.784,2,0,5929,2.172932,1,6,1.791759,1.791759,1,2.4,5.76,.87840004 +0,0,83,14,35,14,0,1,0,1,1,39,3,1,6889,3.663562,0,35,3.555348,3.555348,1,3.6,12.96,3.9 +0,.9890591,80,11,5,3,0,1,1,0,0,18.28,2,1,6400,2.905807,0,5,1.609438,1.609438,1,3,9,1.8280001 +0,.3410641,76,7,7,1,0,1,1,1,0,17.592,3,1,5776,2.867444,0,7,1.94591,1.94591,1,2.2,4.84,1.7591999 +0,0,76,15,18,0,1,0,1,1,1,.7,4,0,5776,-.356675,0,18,2.890372,2.890372,1,2.2,4.84,.07 +1,.096731,66,15,5,1,0,1,0,0,0,100.795,0,1,4356,4.613089,0,5,1.609438,1.609438,1,.2,.04,10.0795 +0,.4347826,83,8,1,1,0,1,1,0,0,9.2,0,1,6889,2.219203,0,1,0,0,1,3.6,12.96,.91999998 +0,1,81,12,1,0,0,0,0,0,0,11.25,0,0,6561,2.420368,0,1,0,0,1,3.2,10.24,1.125 +0,1,74,11,10,22,0,0,1,1,1,11.25,1,0,5476,2.420368,0,10,2.302585,2.302585,1,1.8,3.24,1.125 +0,.8467259,65,12,2,0,0,1,1,0,0,11.026,1,1,4225,2.400256,1,2,.6931472,.6931472,1,0,0,1.1026 +0,.8467259,67,12,9,0,0,1,0,1,0,11.026,2,1,4489,2.400256,1,9,2.197225,2.197225,1,.4,.16,1.1026 +0,.576356,84,16,0,43,0,0,1,1,1,22.382,3,0,7056,3.108257,0,0,,-4.60517,0,3.8,14.44,2.2382 +0,.6805179,83,12,1,1,0,1,0,1,1,26.568,1,1,6889,3.279707,0,1,0,0,1,3.6,12.96,2.6568001 +0,.9312488,84,9,13,1,0,1,0,1,1,10.618,2,1,7056,2.362551,0,13,2.564949,2.564949,1,3.8,14.44,1.0618 +0,.5100098,85,15,19,1,0,1,0,1,1,12.188,3,1,7225,2.500452,0,19,2.944439,2.944439,1,4,16,1.2188 +0,.3650672,73,12,10,0,0,1,1,0,0,17.027,2,1,5329,2.8348,0,10,2.302585,2.302585,1,1.6,2.56,1.7027 +0,.4907975,79,13,14,7,0,0,1,1,0,24.45,3,0,6241,3.19663,0,14,2.639057,2.639057,1,2.8,7.84,2.4450001 +0,.2656292,74,14,8,3,0,1,1,0,0,74.54,1,1,5476,4.311336,0,8,2.079442,2.079442,1,1.8,3.24,7.4540001 +0,0,78,5,2,0,1,0,1,1,1,6.062,1,0,6084,1.80204,1,2,.6931472,.6931472,1,2.6,6.76,.60619998 +0,0,71,1,6,0,0,0,0,0,0,0,3,0,5041,,1,6,1.791759,1.791759,1,1.2,1.44,0 +0,0,72,6,11,0,0,0,0,0,0,0,2,0,5184,,1,11,2.397895,2.397895,1,1.4,1.96,0 +0,0,73,4,5,0,0,0,1,0,0,0,2,0,5329,,1,5,1.609438,1.609438,1,1.6,2.56,0 +0,.2218484,85,12,4,1,0,0,1,0,0,54.091,1,0,7225,3.990668,0,4,1.386294,1.386294,1,4,16,5.4091 +0,0,69,14,2,0,0,0,1,0,0,21,0,0,4761,3.044523,0,2,.6931472,.6931472,1,.8,.64,2.1 +0,0,77,14,3,0,0,0,0,0,0,43,1,0,5929,3.7612,0,3,1.098612,1.098612,1,2.4,5.76,4.3 +0,.3804797,74,0,14,4,1,0,1,1,1,14.508,2,0,5476,2.6747,0,14,2.639057,2.639057,1,1.8,3.24,1.4508 +0,.2322795,78,16,0,0,0,0,1,1,0,40.899,2,0,6084,3.711106,0,0,,-4.60517,0,2.6,6.76,4.0898998 +0,0,85,4,6,0,0,0,1,1,0,11.472,2,0,7225,2.439909,1,6,1.791759,1.791759,1,4,16,1.1472 +0,.1837512,75,12,3,0,0,0,0,0,0,38.612,1,0,5625,3.653563,0,3,1.098612,1.098612,1,2,4,3.8612 +0,.1824752,79,12,1,62,0,0,1,0,0,38.882,2,0,6241,3.660532,0,1,0,0,1,2.8,7.84,3.8882 +0,.4753902,68,17,6,2,0,1,0,1,0,8.33,1,1,4624,2.119864,0,6,1.791759,1.791759,1,.6,.36,.83299999 +0,.4448938,65,14,5,1,0,1,1,0,0,8.901,0,1,4225,2.186164,0,5,1.609438,1.609438,1,0,0,.8901 +0,1,75,16,13,0,0,0,0,0,1,6.25,4,0,5625,1.832582,1,13,2.564949,2.564949,1,2,4,.625 +0,.9974269,66,12,10,1,0,1,0,0,0,19.432,3,1,4356,2.966921,0,10,2.302585,2.302585,1,.2,.04,1.9431999 +0,0,65,12,17,0,0,1,1,1,0,26.051,3,1,4225,3.260056,0,17,2.833213,2.833213,1,0,0,2.6051001 +0,.4825001,85,12,0,0,0,1,1,1,1,26.943,0,1,7225,3.293724,0,0,,-4.60517,0,4,16,2.6943001 +0,.6197067,83,12,9,10,0,1,1,1,1,14.523,1,1,6889,2.675734,0,9,2.197225,2.197225,1,3.6,12.96,1.4523 +0,.6197067,83,12,6,6,0,1,0,1,0,14.523,1,1,6889,2.675734,0,6,1.791759,1.791759,1,3.6,12.96,1.4523 +0,.6567785,71,8,15,1,0,0,1,1,1,18.271,5,0,5041,2.905315,0,15,2.70805,2.70805,1,1.2,1.44,1.8271 +0,.7058349,65,5,8,6,0,1,0,1,0,14.876,1,1,4225,2.699749,0,8,2.079442,2.079442,1,0,0,1.4876 +0,.6116208,75,6,15,0,0,1,0,0,0,8.829,2,1,5625,2.178042,0,15,2.70805,2.70805,1,2,4,.88290005 +0,1,68,5,0,0,0,0,0,0,0,6.564,0,0,4624,1.8816,0,0,,-4.60517,0,.6,.36,.65640001 +0,.9066183,65,8,3,0,1,0,0,0,1,13.236,3,0,4225,2.58294,0,3,1.098612,1.098612,1,0,0,1.3236 +0,0,81,6,12,0,1,0,1,0,0,0,2,0,6561,,0,12,2.484907,2.484907,1,3.2,10.24,0 +0,.8552632,73,11,17,4,1,0,1,1,1,7.6,3,0,5329,2.028148,0,17,2.833213,2.833213,1,1.6,2.56,.75999999 +0,1,83,2,6,0,0,0,1,1,1,6.889,2,0,6889,1.929926,1,6,1.791759,1.791759,1,3.6,12.96,.68889999 +0,.1666667,65,14,7,0,1,0,0,1,0,21,3,0,4225,3.044523,1,7,1.94591,1.94591,1,0,0,2.1 +1,.0610687,72,12,3,1,0,1,0,0,0,32.75,4,1,5184,3.488903,0,3,1.098612,1.098612,1,1.4,1.96,3.275 +0,.1891591,72,17,4,0,0,1,0,0,0,47.579,2,1,5184,3.862391,0,4,1.386294,1.386294,1,1.4,1.96,4.7578999 +0,.3610581,75,15,2,0,0,1,0,0,0,27.785,0,1,5625,3.324496,0,2,.6931472,.6931472,1,2,4,2.7785 +0,.3610581,76,16,2,2,0,1,1,0,0,27.785,0,1,5776,3.324496,0,2,.6931472,.6931472,1,2.2,4.84,2.7785 +0,.3846154,76,8,11,3,1,0,1,1,1,10.4,3,0,5776,2.341806,0,11,2.397895,2.397895,1,2.2,4.84,1.04 +0,.1353363,67,16,38,0,0,0,0,0,0,51.723,1,0,4489,3.945903,0,38,3.637586,3.637586,1,.4,.16,5.1723 +0,.9979559,80,12,3,0,0,0,1,0,0,9.295,0,0,6400,2.229477,0,3,1.098612,1.098612,1,3,9,.92950001 +0,.9281678,80,11,15,0,0,1,1,0,0,20.882,2,1,6400,3.038888,0,15,2.70805,2.70805,1,3,9,2.0882 +0,.9281678,85,8,1,0,0,1,0,1,1,20.882,5,1,7225,3.038888,0,1,0,0,1,4,16,2.0882 +0,0,74,13,13,2,0,1,0,0,0,12.6,3,1,5476,2.533697,0,13,2.564949,2.564949,1,1.8,3.24,1.26 +0,.6339231,72,12,16,4,0,1,1,1,1,34.419,2,1,5184,3.538609,0,16,2.772589,2.772589,1,1.4,1.96,3.4418999 +0,.5702001,84,13,2,0,0,0,0,0,0,12.443,2,0,7056,2.521158,0,2,.6931472,.6931472,1,3.8,14.44,1.2443 +0,.5702001,77,13,2,0,0,0,1,0,0,12.443,1,0,5929,2.521158,0,2,.6931472,.6931472,1,2.4,5.76,1.2443 +0,.2654408,70,12,15,31,0,1,0,1,0,48.945,3,1,4900,3.890697,0,15,2.70805,2.70805,1,1,1,4.8945 +0,.1798651,72,17,3,3,0,1,0,1,0,59.767,1,1,5184,4.090454,0,3,1.098612,1.098612,1,1.4,1.96,5.9766998 +0,.188039,69,16,3,7,0,1,1,0,0,57.169,0,1,4761,4.046012,0,3,1.098612,1.098612,1,.8,.64,5.7168999 +0,.9309967,72,12,20,0,0,1,1,1,1,10.956,5,1,5184,2.393887,0,20,2.995732,2.995732,1,1.4,1.96,1.0956 +0,1,75,8,6,0,0,0,1,0,0,9,1,0,5625,2.197225,0,6,1.791759,1.791759,1,2,4,.9 +0,.9957455,73,12,12,1,0,1,0,0,0,11.047,4,1,5329,2.402159,0,12,2.484907,2.484907,1,1.6,2.56,1.1047 +0,.3157345,73,12,8,4,0,0,0,0,0,21.062,2,0,5329,3.047471,0,8,2.079442,2.079442,1,1.6,2.56,2.1062 +0,.3122359,69,13,0,3,0,0,1,0,0,21.298,0,0,4761,3.058613,0,0,,-4.60517,0,.8,.64,2.1298 +0,.3585657,69,12,3,1,0,1,1,0,0,25.1,1,1,4761,3.222868,0,3,1.098612,1.098612,1,.8,.64,2.51 +0,.3585657,71,9,5,0,0,1,0,0,0,25.1,2,1,5041,3.222868,0,5,1.609438,1.609438,1,1.2,1.44,2.51 +0,.6710712,79,12,9,10,0,1,1,1,1,26.942,2,1,6241,3.293686,0,9,2.197225,2.197225,1,2.8,7.84,2.6941999 +0,.2096267,76,12,3,5,0,1,1,1,0,62.015,0,1,5776,4.127376,0,3,1.098612,1.098612,1,2.2,4.84,6.2014999 +0,1,74,13,1,1,1,0,1,1,1,8.004,0,0,5476,2.079941,0,1,0,0,1,1.8,3.24,.80039997 +0,.250561,78,12,13,2,0,1,1,0,0,45.897,1,1,6084,3.8264,0,13,2.564949,2.564949,1,2.6,6.76,4.5896999 +0,1,77,8,0,0,0,0,1,1,1,6,2,0,5929,1.791759,0,0,,-4.60517,0,2.4,5.76,.6 +0,.2243326,78,11,5,0,0,1,1,0,0,53.492,1,1,6084,3.979532,0,5,1.609438,1.609438,1,2.6,6.76,5.3492001 +0,1,70,11,0,0,1,0,1,0,1,5.94,1,0,4900,1.781709,0,0,,-4.60517,0,1,1,.59400001 +0,.2252337,82,7,14,3,0,1,0,1,0,26.639,4,1,6724,3.282376,0,14,2.639057,2.639057,1,3.4,11.56,2.6639 +0,1,82,11,1,0,0,0,1,1,0,11.54,2,0,6724,2.445819,1,1,0,0,1,3.4,11.56,1.154 +0,1,66,8,0,0,0,0,0,0,0,9.396,0,0,4356,2.240284,0,0,,-4.60517,0,.2,.04,.93959999 +0,1,66,15,4,0,0,0,0,0,0,8.676,4,0,4356,2.160561,1,4,1.386294,1.386294,1,.2,.04,.86759996 +0,1,66,13,5,0,1,0,1,1,1,8.676,2,0,4356,2.160561,1,5,1.609438,1.609438,1,.2,.04,.86759996 +0,1,85,9,3,0,0,0,1,1,1,13,1,0,7225,2.564949,0,3,1.098612,1.098612,1,4,16,1.3 +0,.3031507,72,17,11,5,0,0,1,1,0,43.292,2,0,5184,3.767968,0,11,2.397895,2.397895,1,1.4,1.96,4.3292 +0,1,84,13,3,3,0,0,0,1,0,9.928,4,0,7056,2.295359,0,3,1.098612,1.098612,1,3.8,14.44,.99280005 +0,1,82,8,0,0,0,0,1,0,0,12,0,0,6724,2.484907,0,0,,-4.60517,0,3.4,11.56,1.2 +0,0,79,11,3,2,0,0,0,1,0,7.5,1,0,6241,2.014903,0,3,1.098612,1.098612,1,2.8,7.84,.75 +0,0,75,11,1,0,1,0,1,0,0,7.5,0,0,5625,2.014903,0,1,0,0,1,2,4,.75 +0,.464792,85,2,11,0,0,1,0,1,1,21.515,3,1,7225,3.06875,1,11,2.397895,2.397895,1,4,16,2.1514999 +0,.6676905,78,3,14,0,0,1,1,1,1,14.977,2,1,6084,2.706516,1,14,2.639057,2.639057,1,2.6,6.76,1.4977 +0,.7361963,74,12,10,2,0,1,0,0,1,8.15,0,1,5476,2.098018,0,10,2.302585,2.302585,1,1.8,3.24,.81499996 +0,.229982,73,12,15,4,0,1,1,1,1,26.089,4,1,5329,3.261514,0,15,2.70805,2.70805,1,1.6,2.56,2.6089001 +0,1,85,14,3,4,0,0,1,1,1,8.144,2,0,7225,2.097281,0,3,1.098612,1.098612,1,4,16,.81440001 +0,.3333333,66,9,0,0,0,0,0,0,0,18.75,1,0,4356,2.931194,1,0,,-4.60517,0,.2,.04,1.875 +0,1,85,6,6,0,0,0,1,1,1,11.124,1,0,7225,2.409105,0,6,1.791759,1.791759,1,4,16,1.1124 +0,1,71,14,8,0,0,1,1,0,0,12.5,0,1,5041,2.525729,0,8,2.079442,2.079442,1,1.2,1.44,1.25 +0,.3319348,71,16,18,0,0,1,0,0,0,37.658,1,1,5041,3.628546,0,18,2.890372,2.890372,1,1.2,1.44,3.7658001 +0,.3399626,83,14,18,8,0,0,1,1,1,29.415,5,0,6889,3.381505,0,18,2.890372,2.890372,1,3.6,12.96,2.9415001 +0,.3374427,68,15,14,5,0,0,1,1,1,19.63,4,0,4624,2.977059,0,14,2.639057,2.639057,1,.6,.36,1.9629999 +0,.7816092,72,16,2,1,0,0,0,0,0,13.05,1,0,5184,2.568788,0,2,.6931472,.6931472,1,1.4,1.96,1.305 +0,.7816092,71,14,5,1,0,0,1,1,0,13.05,1,0,5041,2.568788,0,5,1.609438,1.609438,1,1.2,1.44,1.305 +0,0,85,5,15,1,1,0,0,1,0,9.459,2,0,7225,2.246967,0,15,2.70805,2.70805,1,4,16,.94589996 +0,0,77,0,11,0,1,0,1,1,0,9.459,3,0,5929,2.246967,0,11,2.397895,2.397895,1,2.4,5.76,.94589996 +0,0,67,11,6,6,1,0,1,0,0,.958,2,0,4489,-.0429075,1,6,1.791759,1.791759,1,.4,.16,.0958 +0,1,68,6,6,0,0,0,0,0,0,5.166,2,0,4624,1.642099,1,6,1.791759,1.791759,1,.6,.36,.51659999 +0,1,65,4,4,0,0,0,1,0,0,5.166,1,0,4225,1.642099,1,4,1.386294,1.386294,1,0,0,.51659999 +0,1,73,11,3,0,0,1,1,0,0,10.584,0,1,5329,2.359343,1,3,1.098612,1.098612,1,1.6,2.56,1.0584 +0,.7675526,79,12,0,0,0,0,1,0,0,10.084,1,0,6241,2.31095,0,0,,-4.60517,0,2.8,7.84,1.0084 +0,.5607477,76,16,4,0,0,1,0,0,0,10.7,0,1,5776,2.370244,0,4,1.386294,1.386294,1,2.2,4.84,1.07 +0,.5607477,68,12,16,6,0,1,1,1,1,10.7,3,1,4624,2.370244,0,16,2.772589,2.772589,1,.6,.36,1.07 +0,.2110632,82,12,17,5,0,0,1,1,1,34.113,3,0,6724,3.529679,0,17,2.833213,2.833213,1,3.4,11.56,3.4112999 +0,.4240429,78,12,6,8,0,1,1,1,1,20.347,1,1,6084,3.012933,0,6,1.791759,1.791759,1,2.6,6.76,2.0347 +0,0,73,8,2,0,1,0,1,1,1,7.831,3,0,5329,2.05809,1,2,.6931472,.6931472,1,1.6,2.56,.78309999 +0,.8602254,69,12,2,0,0,0,1,0,0,22.894,2,0,4761,3.130875,0,2,.6931472,.6931472,1,.8,.64,2.2893999 +0,1,84,12,11,0,0,0,1,1,1,9.552,4,0,7056,2.256751,0,11,2.397895,2.397895,1,3.8,14.44,.9552 +0,.3598539,67,11,11,0,0,1,1,1,0,27.111,3,1,4489,3.29994,0,11,2.397895,2.397895,1,.4,.16,2.7111 +0,1,69,6,13,1,1,0,1,0,0,7.716,3,0,4761,2.043296,1,13,2.564949,2.564949,1,.8,.64,.77160001 +0,.18,78,8,18,0,0,1,0,0,0,25,2,1,6084,3.218876,1,18,2.890372,2.890372,1,2.6,6.76,2.5 +0,.375,66,8,7,3,0,1,1,0,0,12,1,1,4356,2.484907,0,7,1.94591,1.94591,1,.2,.04,1.2 +0,0,84,16,9,3,0,0,0,1,1,15.558,1,0,7056,2.744575,0,9,2.197225,2.197225,1,3.8,14.44,1.5558 +0,0,67,0,9,37,1,0,1,1,1,4.5,5,0,4489,1.504077,0,9,2.197225,2.197225,1,.4,.16,.45 +0,0,80,10,2,2,1,0,1,0,0,7.5,1,0,6400,2.014903,0,2,.6931472,.6931472,1,3,9,.75 +0,.3902439,71,12,0,0,0,0,0,0,1,27.06,0,0,5041,3.298057,0,0,,-4.60517,0,1.2,1.44,2.7059999 +0,.7216036,81,17,1,0,1,0,0,1,0,5.388,1,0,6561,1.684174,1,1,0,0,1,3.2,10.24,.5388 +0,1,80,0,2,0,1,0,1,1,1,8.69,2,0,6400,2.162173,0,2,.6931472,.6931472,1,3,9,.86899996 +0,1,75,6,0,0,1,0,0,0,0,6,1,0,5625,1.791759,1,0,,-4.60517,0,2,4,.6 +0,.3520894,80,12,33,18,0,1,1,1,0,35.775,5,1,6400,3.577249,0,33,3.496508,3.496508,1,3,9,3.5775002 +0,1,84,11,27,2,0,0,1,0,0,12,2,0,7056,2.484907,0,27,3.295837,3.295837,1,3.8,14.44,1.2 +0,.9114587,85,17,12,0,0,0,1,1,1,13.745,5,0,7225,2.620675,0,12,2.484907,2.484907,1,4,16,1.3745 +0,.2707483,66,11,1,0,0,1,0,0,0,54.848,3,1,4356,4.004566,0,1,0,0,1,.2,.04,5.4848 +0,.35,85,9,0,0,0,1,0,0,0,40,0,1,7225,3.688879,0,0,,-4.60517,0,4,16,4 +0,.5333334,68,7,32,11,0,1,0,1,1,9.375,4,1,4624,2.238047,0,32,3.465736,3.465736,1,.6,.36,.9375 +0,.5333334,66,11,38,18,0,1,1,0,1,9.375,5,1,4356,2.238047,0,38,3.637586,3.637586,1,.2,.04,.9375 +0,0,82,12,32,0,1,0,0,1,1,5.7,5,0,6724,1.740466,0,32,3.465736,3.465736,1,3.4,11.56,.56999998 +0,0,83,16,27,4,1,0,1,1,1,5.7,4,0,6889,1.740466,0,27,3.295837,3.295837,1,3.6,12.96,.56999998 +0,.9564635,74,12,5,2,0,1,1,1,1,14.93,2,1,5476,2.703373,0,5,1.609438,1.609438,1,1.8,3.24,1.493 +0,0,69,12,7,0,0,0,1,0,0,16.758,2,0,4761,2.818876,1,7,1.94591,1.94591,1,.8,.64,1.6757999 +0,.221325,83,13,16,26,0,1,1,1,0,33.435,2,1,6889,3.509603,0,16,2.772589,2.772589,1,3.6,12.96,3.3435001 +0,.2996776,73,12,2,2,0,1,1,0,0,66.071,0,1,5329,4.19073,0,2,.6931472,.6931472,1,1.6,2.56,6.6070999 +0,.623409,72,17,7,1,0,1,1,0,0,19.249,0,1,5184,2.957459,0,7,1.94591,1.94591,1,1.4,1.96,1.9249001 +0,1,73,12,18,2,0,1,1,1,1,10,4,1,5329,2.302585,1,18,2.890372,2.890372,1,1.6,2.56,1 +0,.4421156,68,12,7,0,0,1,0,0,0,24.428,0,1,4624,3.19573,0,7,1.94591,1.94591,1,.6,.36,2.4427999 +0,0,78,14,3,3,0,0,0,1,0,6.675,1,0,6084,1.898369,0,3,1.098612,1.098612,1,2.6,6.76,.66750002 +0,0,74,12,2,2,0,0,1,0,0,6.675,1,0,5476,1.898369,0,2,.6931472,.6931472,1,1.8,3.24,.66750002 +0,.3409091,79,12,4,0,0,1,1,1,1,26.4,1,1,6241,3.273364,0,4,1.386294,1.386294,1,2.8,7.84,2.64 +0,1,85,12,4,0,0,0,0,1,0,9.6,2,0,7225,2.261763,0,4,1.386294,1.386294,1,4,16,.96000004 +1,0,65,17,0,0,0,1,0,0,0,35.976,1,1,4225,3.582852,0,0,,-4.60517,0,0,0,3.5976002 +0,0,80,11,4,0,0,0,1,1,1,0,1,0,6400,,0,4,1.386294,1.386294,1,3,9,0 +0,.3186813,73,6,7,0,1,0,1,1,1,6.552,3,0,5329,1.87977,1,7,1.94591,1.94591,1,1.6,2.56,.6552 +0,.8157895,71,4,5,0,1,0,1,1,1,7.6,2,0,5041,2.028148,0,5,1.609438,1.609438,1,1.2,1.44,.75999999 +1,.037685,65,12,4,0,0,1,0,0,0,124.665,1,1,4225,4.82563,0,4,1.386294,1.386294,1,0,0,12.4665 +0,.2323769,66,12,3,1,0,1,1,0,0,28.23,1,1,4356,3.340385,0,3,1.098612,1.098612,1,.2,.04,2.823 +0,1,71,8,3,0,0,0,0,1,1,7.5,1,0,5041,2.014903,1,3,1.098612,1.098612,1,1.2,1.44,.75 +0,.5,71,14,0,0,0,0,1,0,0,15,0,0,5041,2.70805,1,0,,-4.60517,0,1.2,1.44,1.5 +0,.83167,78,4,0,0,0,1,0,1,0,9.018,1,1,6084,2.199223,1,0,,-4.60517,0,2.6,6.76,.90179996 +0,.2838973,73,8,5,0,0,1,1,0,0,26.418,2,1,5329,3.274045,1,5,1.609438,1.609438,1,1.6,2.56,2.6417999 +0,.1667546,76,10,9,0,0,1,1,0,0,43.615,1,1,5776,3.775401,0,9,2.197225,2.197225,1,2.2,4.84,4.3615002 +0,1,74,12,2,0,0,0,1,1,1,13,2,0,5476,2.564949,0,2,.6931472,.6931472,1,1.8,3.24,1.3 +0,.2602656,74,12,4,3,0,1,1,0,0,21.163,2,1,5476,3.052254,0,4,1.386294,1.386294,1,1.8,3.24,2.1163 +0,0,82,12,11,0,0,0,1,1,1,0,5,0,6724,,1,11,2.397895,2.397895,1,3.4,11.56,0 +0,1,69,11,1,3,0,1,1,0,0,6.25,1,1,4761,1.832582,0,1,0,0,1,.8,.64,.625 +0,1,69,8,8,0,0,1,0,1,0,6.25,0,1,4761,1.832582,0,8,2.079442,2.079442,1,.8,.64,.625 +0,0,76,12,1,0,0,0,1,0,0,0,1,0,5776,,0,1,0,0,1,2.2,4.84,0 +0,.6748367,73,12,6,1,0,1,1,0,0,18.523,1,1,5329,2.919013,0,6,1.791759,1.791759,1,1.6,2.56,1.8523001 +0,.2066742,79,16,3,5,0,0,1,0,0,36.289,2,0,6241,3.591515,0,3,1.098612,1.098612,1,2.8,7.84,3.6289001 +0,.1952972,78,16,16,5,0,0,0,0,0,38.403,3,0,6084,3.648136,0,16,2.772589,2.772589,1,2.6,6.76,3.8403 +0,.6548514,66,9,3,9,0,1,1,0,0,11.172,1,1,4356,2.413411,0,3,1.098612,1.098612,1,.2,.04,1.1172 +0,.9867514,85,12,2,0,0,0,1,1,1,7.548,1,0,7225,2.021283,0,2,.6931472,.6931472,1,4,16,.75479999 +0,0,85,12,11,0,0,0,1,1,0,2,1,0,7225,.6931472,1,11,2.397895,2.397895,1,4,16,.2 +0,.962963,85,10,4,0,0,0,1,1,1,8.1,2,0,7225,2.091864,0,4,1.386294,1.386294,1,4,16,.81000004 +0,.3398567,85,10,5,0,0,1,0,1,1,35.309,3,1,7225,3.564138,0,5,1.609438,1.609438,1,4,16,3.5308998 +0,.655308,67,7,11,1,0,1,0,0,0,16.023,2,1,4489,2.774025,1,11,2.397895,2.397895,1,.4,.16,1.6023001 +0,.655308,66,11,3,0,0,1,1,0,0,16.023,0,1,4356,2.774025,1,3,1.098612,1.098612,1,.2,.04,1.6023001 +0,0,70,9,15,0,0,1,1,0,0,0,4,1,4900,,0,15,2.70805,2.70805,1,1,1,0 +0,.8540479,76,11,7,7,0,1,0,0,0,7.016,2,1,5776,1.948193,0,7,1.94591,1.94591,1,2.2,4.84,.70159998 +0,.8540479,74,12,4,14,0,1,1,1,0,7.016,3,1,5476,1.948193,0,4,1.386294,1.386294,1,1.8,3.24,.70159998 +0,.9419712,67,11,7,3,0,1,0,0,0,20.576,4,1,4489,3.024125,0,7,1.94591,1.94591,1,.4,.16,2.0576 +1,0,66,11,16,3,0,1,1,1,0,20.661,2,1,4356,3.028248,0,16,2.772589,2.772589,1,.2,.04,2.0660999 +0,.9337124,81,12,9,5,0,1,1,1,1,6.683,3,1,6561,1.899567,0,9,2.197225,2.197225,1,3.2,10.24,.66830001 +0,.744186,67,15,3,0,0,1,0,0,0,10.75,2,1,4489,2.374906,1,3,1.098612,1.098612,1,.4,.16,1.075 +0,.5423729,67,12,4,0,0,1,1,0,0,14.75,3,1,4489,2.691243,1,4,1.386294,1.386294,1,.4,.16,1.475 +0,.5701191,69,12,8,0,0,0,1,1,0,17.891,2,0,4761,2.884298,0,8,2.079442,2.079442,1,.8,.64,1.7891001 +0,.8528746,69,7,0,0,0,1,0,1,1,8.836,1,1,4761,2.178834,0,0,,-4.60517,0,.8,.64,.88360004 +1,0,65,10,11,0,0,1,1,1,0,17.68,2,1,4225,2.872434,1,11,2.397895,2.397895,1,0,0,1.768 +0,1,73,12,0,1,1,0,1,0,0,8.5,2,0,5329,2.140066,1,0,,-4.60517,0,1.6,2.56,.85 +0,.3536164,79,11,15,1,0,1,1,1,1,36.763,2,1,6241,3.604492,0,15,2.70805,2.70805,1,2.8,7.84,3.6763 +0,.5893617,68,12,48,35,0,0,1,1,1,9.4,4,0,4624,2.24071,0,48,3.871201,3.871201,1,.6,.36,.93999996 +0,.7368421,73,12,7,0,0,0,1,0,0,11.4,1,0,5329,2.433613,0,7,1.94591,1.94591,1,1.6,2.56,1.14 +0,.3579706,79,8,13,2,0,0,0,1,1,12.772,3,0,6241,2.547255,0,13,2.564949,2.564949,1,2.8,7.84,1.2772 +0,.1438356,72,12,0,0,0,0,0,0,0,58.4,2,0,5184,4.067316,0,0,,-4.60517,0,1.4,1.96,5.8400002 +0,1,71,12,59,0,0,0,1,1,0,8.4,3,0,5041,2.128232,0,59,4.077538,4.077538,1,1.2,1.44,.83999996 +0,0,65,0,2,0,1,0,0,1,1,10.245,2,0,4225,2.32679,0,2,.6931472,.6931472,1,0,0,1.0245 +0,.3308656,66,17,5,2,0,1,0,0,0,54.841,1,1,4356,4.004438,1,5,1.609438,1.609438,1,.2,.04,5.4841 +0,1,69,12,3,0,0,1,0,0,0,7.2,1,1,4761,1.974081,1,3,1.098612,1.098612,1,.8,.64,.71999998 +1,.0816576,66,17,2,20,0,1,1,0,0,135.811,1,1,4356,4.911264,1,2,.6931472,.6931472,1,.2,.04,13.5811 +0,.2009891,73,17,5,0,0,1,0,0,0,41.047,0,1,5329,3.714718,0,5,1.609438,1.609438,1,1.6,2.56,4.1047001 +0,.2200176,74,15,14,0,0,1,1,1,1,37.497,5,1,5476,3.624261,0,14,2.639057,2.639057,1,1.8,3.24,3.7497002 +0,1,69,11,7,0,1,0,0,1,1,4.998,4,0,4761,1.609038,1,7,1.94591,1.94591,1,.8,.64,.49980001 +0,1,71,5,12,3,1,0,1,1,1,4.998,4,0,5041,1.609038,1,12,2.484907,2.484907,1,1.2,1.44,.49980001 +0,1,72,10,1,0,0,0,0,0,0,6,2,0,5184,1.791759,0,1,0,0,1,1.4,1.96,.6 +0,.4218241,78,16,4,4,0,0,0,0,0,14.736,1,0,6084,2.690294,0,4,1.386294,1.386294,1,2.6,6.76,1.4736 +0,.4218241,74,12,6,4,0,0,1,1,0,14.736,0,0,5476,2.690294,0,6,1.791759,1.791759,1,1.8,3.24,1.4736 +0,1,78,4,7,36,0,1,1,1,0,12,4,1,6084,2.484907,1,7,1.94591,1.94591,1,2.6,6.76,1.2 +0,1,67,8,0,0,0,0,0,0,0,10.601,1,0,4489,2.360948,0,0,,-4.60517,0,.4,.16,1.0601 +1,0,66,12,20,21,0,1,0,1,0,34.036,3,1,4356,3.527419,0,20,2.995732,2.995732,1,.2,.04,3.4035999 +0,0,66,17,4,12,0,1,1,0,0,97.275,0,1,4356,4.577542,0,4,1.386294,1.386294,1,.2,.04,9.7275002 +0,.0856655,79,17,8,0,0,1,0,0,0,146.862,3,1,6241,4.989493,0,8,2.079442,2.079442,1,2.8,7.84,14.6862 +0,.9996668,85,12,4,1,0,1,1,1,1,15.005,3,1,7225,2.708384,0,4,1.386294,1.386294,1,4,16,1.5005 +0,1,72,7,9,0,1,0,1,1,1,7.2,4,0,5184,1.974081,1,9,2.197225,2.197225,1,1.4,1.96,.71999998 +0,.6940268,72,14,3,1,0,1,0,0,0,21.613,1,1,5184,3.073295,0,3,1.098612,1.098612,1,1.4,1.96,2.1613001 +0,.6940268,65,13,15,0,0,1,1,1,1,21.613,4,1,4225,3.073295,0,15,2.70805,2.70805,1,0,0,2.1613001 +0,.9215686,68,12,13,28,1,0,0,1,1,7.344,3,0,4624,1.993884,0,13,2.564949,2.564949,1,.6,.36,.73439999 +0,.8170866,70,11,12,0,0,1,1,1,0,17.183,4,1,4900,2.84392,0,12,2.484907,2.484907,1,1,1,1.7183001 +0,.9386252,67,12,3,0,0,0,1,0,0,9.776,2,0,4489,2.27993,0,3,1.098612,1.098612,1,.4,.16,.9776 +0,1,72,8,3,0,0,1,1,0,1,7.44,0,1,5184,2.006871,0,3,1.098612,1.098612,1,1.4,1.96,.74400001 +0,.1614733,77,17,4,10,0,0,1,0,0,49.55,2,0,5929,3.902982,1,4,1.386294,1.386294,1,2.4,5.76,4.9549999 +0,.5186049,73,12,3,0,0,0,0,0,0,23.139,2,0,5329,3.14152,0,3,1.098612,1.098612,1,1.6,2.56,2.3139 +0,0,74,17,7,0,1,0,0,0,0,9.459,3,0,5476,2.246967,0,7,1.94591,1.94591,1,1.8,3.24,.94589996 +0,.3985122,78,10,7,1,0,0,1,1,1,15.056,2,0,6084,2.711776,0,7,1.94591,1.94591,1,2.6,6.76,1.5056 +0,.9186992,68,9,0,0,0,0,1,0,1,3.69,0,0,4624,1.305627,1,0,,-4.60517,0,.6,.36,.36900001 +0,.9186992,84,5,6,0,0,0,0,1,1,3.69,1,0,7056,1.305627,1,6,1.791759,1.791759,1,3.8,14.44,.36900001 +0,.6415191,72,17,6,0,0,1,0,0,0,7.794,3,1,5184,2.053354,0,6,1.791759,1.791759,1,1.4,1.96,.77940001 +0,.6415191,68,16,7,0,0,1,1,0,0,7.794,3,1,4624,2.053354,0,7,1.94591,1.94591,1,.6,.36,.77940001 +0,.9051173,73,8,3,1,0,0,1,1,1,11.256,2,0,5329,2.420901,1,3,1.098612,1.098612,1,1.6,2.56,1.1256 +0,.1331854,69,13,1,1,0,1,0,0,0,112.625,0,1,4761,4.724064,0,1,0,0,1,.8,.64,11.2625 +0,.6936416,69,13,0,1,0,1,1,0,0,21.625,0,1,4761,3.07385,0,0,,-4.60517,0,.8,.64,2.1625 +0,.5015051,82,3,3,0,1,0,1,1,1,13.288,2,0,6724,2.586861,1,3,1.098612,1.098612,1,3.4,11.56,1.3288 +0,.9688668,80,9,10,2,0,1,0,0,0,9.636,1,1,6400,2.265506,0,10,2.302585,2.302585,1,3,9,.96359997 +0,.9688668,72,2,4,1,0,1,1,1,0,9.636,2,1,5184,2.265506,0,4,1.386294,1.386294,1,1.4,1.96,.96359997 +0,.3642313,75,13,1,0,0,0,0,0,0,30.563,2,0,5625,3.41979,0,1,0,0,1,2,4,3.0563 +0,.5531653,74,12,2,2,0,0,0,0,0,16.27,2,0,5476,2.789323,0,2,.6931472,.6931472,1,1.8,3.24,1.627 +0,.5531653,71,12,2,0,0,0,1,0,0,16.27,0,0,5041,2.789323,0,2,.6931472,.6931472,1,1.2,1.44,1.627 +0,.7995121,76,12,8,5,0,0,1,1,0,11.477,3,0,5776,2.440345,0,8,2.079442,2.079442,1,2.2,4.84,1.1477 +0,.0905888,80,13,5,16,0,0,1,1,0,31.792,2,0,6400,3.459215,0,5,1.609438,1.609438,1,3,9,3.1792 +0,0,69,12,5,0,0,0,0,0,0,10,1,0,4761,2.302585,1,5,1.609438,1.609438,1,.8,.64,1 +0,.3533868,79,9,0,0,0,0,1,0,0,35.372,2,0,6241,3.565921,0,0,,-4.60517,0,2.8,7.84,3.5372002 +0,.4869263,74,11,1,0,0,1,1,1,0,29.984,1,1,5476,3.400664,0,1,0,0,1,1.8,3.24,2.9983999 +0,.6455778,67,14,3,0,0,1,1,1,0,17.039,1,1,4489,2.835505,0,3,1.098612,1.098612,1,.4,.16,1.7039 +0,1,76,8,4,1,0,0,0,0,1,8,4,0,5776,2.079442,0,4,1.386294,1.386294,1,2.2,4.84,.8 +0,.4211674,76,4,4,0,1,0,0,0,0,20.182,1,0,5776,3.004791,0,4,1.386294,1.386294,1,2.2,4.84,2.0181999 +0,.5862069,75,14,8,0,1,0,0,1,1,14.5,3,0,5625,2.674149,0,8,2.079442,2.079442,1,2,4,1.45 +0,.7738096,75,12,2,0,0,1,1,0,0,8.4,1,1,5625,2.128232,0,2,.6931472,.6931472,1,2,4,.83999996 +0,.7738096,77,12,9,0,0,1,0,0,0,8.4,1,1,5929,2.128232,0,9,2.197225,2.197225,1,2.4,5.76,.83999996 +0,.6315789,67,17,5,2,0,1,1,0,0,12.35,2,1,4489,2.513656,0,5,1.609438,1.609438,1,.4,.16,1.235 +0,.6315789,69,17,11,18,0,1,0,0,0,12.35,3,1,4761,2.513656,0,11,2.397895,2.397895,1,.8,.64,1.235 +0,.9656652,85,14,23,15,0,0,0,1,1,5.825,2,0,7225,1.762159,0,23,3.135494,3.135494,1,4,16,.58249998 +0,.9656652,85,12,15,187,0,0,1,1,1,5.825,3,0,7225,1.762159,0,15,2.70805,2.70805,1,4,16,.58249998 +1,.2152389,65,12,17,1,0,1,1,1,0,23.23,3,1,4225,3.145445,0,17,2.833213,2.833213,1,0,0,2.323 +0,.4468932,80,7,0,0,0,0,0,0,0,16.335,1,0,6400,2.79331,0,0,,-4.60517,0,3,9,1.6334999 +0,.3364055,76,6,9,4,0,0,1,0,0,21.7,6,0,5776,3.077312,0,9,2.197225,2.197225,1,2.2,4.84,2.1700001 +0,.1629236,69,11,21,0,0,1,0,1,0,39.184,3,1,4761,3.668268,1,21,3.044523,3.044523,1,.8,.64,3.9183998 +0,0,71,13,4,2,0,0,0,1,0,13.455,3,0,5041,2.599351,0,4,1.386294,1.386294,1,1.2,1.44,1.3455 +0,0,78,6,8,3,0,0,1,1,0,13.047,1,0,6084,2.568558,0,8,2.079442,2.079442,1,2.6,6.76,1.3047 +0,.5910925,80,12,5,4,0,1,1,1,0,14.123,5,1,6400,2.647805,1,5,1.609438,1.609438,1,3,9,1.4123 +0,0,79,12,4,24,0,0,1,1,0,0,2,0,6241,,0,4,1.386294,1.386294,1,2.8,7.84,0 +0,0,85,0,3,0,1,0,1,1,1,9.185,1,0,7225,2.217572,1,3,1.098612,1.098612,1,4,16,.91850004 +0,0,69,3,0,0,0,0,1,0,1,9.185,1,0,4761,2.217572,1,0,,-4.60517,0,.8,.64,.91850004 +0,.3788517,76,12,24,3,0,1,0,0,0,23.756,3,1,5776,3.167835,0,24,3.178054,3.178054,1,2.2,4.84,2.3756001 +0,.3788517,72,12,9,5,0,1,1,0,0,23.756,1,1,5184,3.167835,0,9,2.197225,2.197225,1,1.4,1.96,2.3756001 +0,.165818,77,12,29,0,0,1,1,0,0,44.778,2,1,5929,3.801717,0,29,3.367296,3.367296,1,2.4,5.76,4.4778 +0,.076722,85,16,13,1,0,1,0,1,1,96.778,2,1,7225,4.57242,0,13,2.564949,2.564949,1,4,16,9.6778 +0,.6705819,82,9,2,0,0,1,0,0,0,11.238,2,1,6724,2.419301,0,2,.6931472,.6931472,1,3.4,11.56,1.1238 +0,.3601138,85,12,9,0,0,1,1,1,1,27.769,2,1,7225,3.32392,0,9,2.197225,2.197225,1,4,16,2.7768999 +0,.8644807,76,5,9,0,0,0,0,1,1,12.382,1,0,5776,2.516244,1,9,2.197225,2.197225,1,2.2,4.84,1.2382 +0,.345551,72,12,0,0,0,0,1,0,0,24.309,1,0,5184,3.190847,0,0,,-4.60517,0,1.4,1.96,2.4309 +0,.3513883,85,10,2,0,0,0,1,1,0,38.789,2,0,7225,3.658137,0,2,.6931472,.6931472,1,4,16,3.8789001 +0,.4736842,78,14,1,0,0,1,0,0,0,19,1,1,6084,2.944439,0,1,0,0,1,2.6,6.76,1.9 +0,.4736842,74,14,2,0,0,1,1,0,0,19,4,1,5476,2.944439,0,2,.6931472,.6931472,1,1.8,3.24,1.9 +0,0,73,9,1,0,0,1,1,0,0,.455,0,1,5329,-.7874578,0,1,0,0,1,1.6,2.56,.0455 +0,0,77,14,3,3,0,0,0,0,0,.455,0,0,5929,-.7874578,0,3,1.098612,1.098612,1,2.4,5.76,.0455 +1,0,67,12,0,0,0,1,1,0,0,14.56,0,1,4489,2.678278,0,0,,-4.60517,0,.4,.16,1.456 +0,.9599376,70,9,10,0,1,0,1,1,1,1.922,3,0,4900,.6533663,1,10,2.302585,2.302585,1,1,1,.19220001 +0,.9164678,82,12,15,3,0,0,1,0,0,8.38,2,0,6724,2.125848,0,15,2.70805,2.70805,1,3.4,11.56,.83800001 +0,.4179861,85,16,2,1,0,0,1,1,1,47.37,2,0,7225,3.857989,0,2,.6931472,.6931472,1,4,16,4.7369999 +0,.8979592,85,12,8,18,0,1,1,0,0,14.7,2,1,7225,2.687847,0,8,2.079442,2.079442,1,4,16,1.47 +0,1,77,17,1,0,0,1,0,0,0,3.6,1,1,5929,1.280934,1,1,0,0,1,2.4,5.76,.35999999 +0,1,67,17,1,0,0,1,1,0,0,3.6,2,1,4489,1.280934,1,1,0,0,1,.4,.16,.35999999 +0,1,67,11,7,0,0,0,1,1,1,5,3,0,4489,1.609438,0,7,1.94591,1.94591,1,.4,.16,.5 +0,.6542751,74,4,11,0,0,0,1,1,1,6.456,5,0,5476,1.86501,1,11,2.397895,2.397895,1,1.8,3.24,.64559999 +0,.9460581,85,7,2,0,1,0,1,1,1,4.82,4,0,7225,1.572774,0,2,.6931472,.6931472,1,4,16,.48200002 +0,.5357143,83,13,3,5,0,0,1,0,1,22.4,2,0,6889,3.109061,0,3,1.098612,1.098612,1,3.6,12.96,2.24 +0,.5967382,65,12,4,0,0,0,0,0,0,23.729,0,0,4225,3.166698,0,4,1.386294,1.386294,1,0,0,2.3729 +0,1,69,12,18,6,0,1,1,0,0,6,3,1,4761,1.791759,0,18,2.890372,2.890372,1,.8,.64,.6 +0,.3123808,75,12,3,9,0,1,1,1,1,28.827,1,1,5625,3.361312,0,3,1.098612,1.098612,1,2,4,2.8827 +0,.0547914,67,12,4,0,0,1,0,0,0,52.928,1,1,4489,3.968933,0,4,1.386294,1.386294,1,.4,.16,5.2928001 +0,.4676806,69,17,8,1,0,1,1,1,0,21.04,1,1,4761,3.046425,1,8,2.079442,2.079442,1,.8,.64,2.1040001 +0,0,71,12,18,0,1,0,1,1,1,6.78,3,0,5041,1.913977,1,18,2.890372,2.890372,1,1.2,1.44,.67800002 +1,.0962849,65,12,3,0,0,1,0,0,0,67.508,2,1,4225,4.212246,0,3,1.098612,1.098612,1,0,0,6.7508003 +0,0,65,12,2,0,1,0,1,1,1,0,4,0,4225,,1,2,.6931472,.6931472,1,0,0,0 +0,.4546584,71,11,9,23,1,0,1,1,0,12.88,2,0,5041,2.555676,0,9,2.197225,2.197225,1,1.2,1.44,1.288 +0,.4777505,80,12,3,0,0,1,1,0,0,29.304,2,1,6400,3.377724,1,3,1.098612,1.098612,1,3,9,2.9304001 +0,1,69,12,0,0,0,0,1,0,0,6.5,0,0,4761,1.871802,1,0,,-4.60517,0,.8,.64,.65 +0,.7767857,79,10,8,0,0,1,1,0,0,13.44,2,1,6241,2.598235,0,8,2.079442,2.079442,1,2.8,7.84,1.344 +0,1,65,6,2,0,0,0,1,0,0,8.5,1,0,4225,2.140066,1,2,.6931472,.6931472,1,0,0,.85 +0,.9989594,67,12,8,1,0,0,1,0,0,9.61,2,0,4489,2.262804,0,8,2.079442,2.079442,1,.4,.16,.96099997 +0,.4032597,68,10,1,0,0,0,0,0,0,23.806,1,0,4624,3.169938,0,1,0,0,1,.6,.36,2.3806 +0,0,71,3,4,0,1,0,1,0,0,0,1,0,5041,,1,4,1.386294,1.386294,1,1.2,1.44,0 +0,.4049236,79,12,6,0,0,1,1,0,0,23.56,0,1,6241,3.15955,0,6,1.791759,1.791759,1,2.8,7.84,2.3559999 +0,.3321367,83,14,28,2,0,0,1,1,0,27.856,4,0,6889,3.327048,0,28,3.332205,3.332205,1,3.6,12.96,2.7856001 +0,.0857841,85,16,6,4,0,1,1,1,0,69.943,2,1,7225,4.247681,1,6,1.791759,1.791759,1,4,16,6.9943001 +0,.2232969,65,9,0,0,0,0,0,0,0,21.196,0,0,4225,3.053813,1,0,,-4.60517,0,0,0,2.1195999 +0,1,67,3,0,0,0,0,1,0,0,4.733,0,0,4489,1.554559,1,0,,-4.60517,0,.4,.16,.47329998 +0,1,76,16,6,0,0,1,1,0,0,10.2,2,1,5776,2.322388,0,6,1.791759,1.791759,1,2.2,4.84,1.02 +0,.2301654,79,17,3,4,0,1,0,1,0,84.209,1,1,6241,4.433302,0,3,1.098612,1.098612,1,2.8,7.84,8.4209 +0,1,85,4,14,1,0,0,1,1,1,6.5,3,0,7225,1.871802,0,14,2.639057,2.639057,1,4,16,.65 +0,0,70,12,5,0,0,1,1,1,1,0,3,1,4900,,0,5,1.609438,1.609438,1,1,1,0 +0,0,84,12,10,1,0,1,1,1,0,25.162,2,1,7056,3.225335,0,10,2.302585,2.302585,1,3.8,14.44,2.5162001 +0,.6,67,7,1,0,1,0,0,1,1,6,2,0,4489,1.791759,1,1,0,0,1,.4,.16,.6 +0,.9165553,80,9,2,2,0,1,1,0,0,10.474,1,1,6400,2.348896,0,2,.6931472,.6931472,1,3,9,1.0474 +0,1,68,9,0,0,0,0,0,0,0,3.744,0,0,4624,1.320155,1,0,,-4.60517,0,.6,.36,.3744 +0,.5948023,74,16,7,2,0,0,0,1,1,10.928,2,0,5476,2.391328,0,7,1.94591,1.94591,1,1.8,3.24,1.0928 +0,.9606858,71,14,6,1,0,0,1,1,1,6.766,1,0,5041,1.91191,1,6,1.791759,1.791759,1,1.2,1.44,.67659998 +0,.5238234,80,12,12,3,0,0,1,1,1,37.799,1,0,6400,3.632283,0,12,2.484907,2.484907,1,3,9,3.7799 +0,.4026764,66,11,2,1,1,0,0,1,1,9.864,2,0,4356,2.288892,1,2,.6931472,.6931472,1,.2,.04,.98640003 +0,1,76,12,6,0,0,1,0,1,1,6.224,2,1,5776,1.828413,1,6,1.791759,1.791759,1,2.2,4.84,.6224 +0,.3653302,80,12,0,0,0,1,1,0,0,21.898,2,1,6400,3.086395,0,0,,-4.60517,0,3,9,2.1898001 +0,1,75,5,5,0,0,0,1,0,0,9.717,1,0,5625,2.273877,1,5,1.609438,1.609438,1,2,4,.9717 +0,0,77,0,20,0,1,0,1,1,1,6,4,0,5929,1.791759,1,20,2.995732,2.995732,1,2.4,5.76,.6 +0,.8766337,76,12,3,0,0,1,1,0,0,12.548,1,1,5776,2.529561,1,3,1.098612,1.098612,1,2.2,4.84,1.2548 +0,.3744057,85,14,9,1,0,1,0,0,0,19.981,2,1,7225,2.994782,0,9,2.197225,2.197225,1,4,16,1.9981001 +0,.3744057,83,13,21,7,0,1,1,0,0,19.981,2,1,6889,2.994782,0,21,3.044523,3.044523,1,3.6,12.96,1.9981001 +0,1,81,3,0,0,1,0,1,0,0,4.416,0,0,6561,1.485234,1,0,,-4.60517,0,3.2,10.24,.44159999 +0,.6682746,73,8,17,1,1,0,0,1,1,13.475,2,0,5329,2.600836,0,17,2.833213,2.833213,1,1.6,2.56,1.3475 +0,.6799613,73,9,3,0,0,1,0,1,1,12.411,2,1,5329,2.518583,0,3,1.098612,1.098612,1,1.6,2.56,1.2411 +0,.6799613,69,9,1,0,0,1,1,0,0,12.411,3,1,4761,2.518583,0,1,0,0,1,.8,.64,1.2411 +0,.1821995,76,15,12,1,0,1,1,0,1,62.942,5,1,5776,4.142214,0,12,2.484907,2.484907,1,2.2,4.84,6.2942001 +0,.9649123,74,13,2,0,0,1,0,0,0,11.4,1,1,5476,2.433613,0,2,.6931472,.6931472,1,1.8,3.24,1.14 +0,.5820722,70,9,1,0,0,0,0,0,0,15.462,1,0,4900,2.738385,0,1,0,0,1,1,1,1.5462 +0,.5820722,70,8,3,0,0,0,1,1,0,15.462,1,0,4900,2.738385,0,3,1.098612,1.098612,1,1,1,1.5462 +0,.5109363,84,4,6,0,0,1,0,1,1,19.705,4,1,7056,2.980872,0,6,1.791759,1.791759,1,3.8,14.44,1.9705 +0,0,72,16,2,1,0,0,0,0,0,10.766,1,0,5184,2.376393,0,2,.6931472,.6931472,1,1.4,1.96,1.0766 +0,.9072581,79,11,2,1,0,0,0,0,0,6.2,1,0,6241,1.824549,0,2,.6931472,.6931472,1,2.8,7.84,.61999998 +0,.9072581,79,11,4,2,0,0,1,0,0,6.2,2,0,6241,1.824549,0,4,1.386294,1.386294,1,2.8,7.84,.61999998 +0,1,67,6,0,0,0,0,0,1,1,9,0,0,4489,2.197225,0,0,,-4.60517,0,.4,.16,.9 +0,.7252933,65,10,11,6,0,1,0,0,0,30.083,4,1,4225,3.40396,0,11,2.397895,2.397895,1,0,0,3.0083 +0,.3056405,68,12,6,4,0,0,1,0,0,35.99,0,0,4624,3.583241,1,6,1.791759,1.791759,1,.6,.36,3.5990002 +0,.5490196,80,12,1,0,0,1,1,1,0,25.5,2,1,6400,3.238678,0,1,0,0,1,3,9,2.55 +0,.2156779,73,14,3,0,0,0,0,0,0,46.792,0,0,5329,3.845712,0,3,1.098612,1.098612,1,1.6,2.56,4.6792 +0,.2742988,71,13,9,4,0,0,1,0,0,36.792,1,0,5041,3.60528,0,9,2.197225,2.197225,1,1.2,1.44,3.6792 +0,.1287763,82,16,3,0,0,1,0,1,1,66.301,3,1,6724,4.194205,0,3,1.098612,1.098612,1,3.4,11.56,6.6301003 +0,.1863948,73,12,8,0,0,1,1,0,0,45.806,0,1,5329,3.824415,0,8,2.079442,2.079442,1,1.6,2.56,4.5806 +1,.1381009,69,17,0,0,0,1,1,1,1,86.893,2,1,4761,4.464677,0,0,,-4.60517,0,.8,.64,8.6892998 +0,.2477876,83,16,2,1,0,0,0,1,1,28.25,2,0,6889,3.341094,0,2,.6931472,.6931472,1,3.6,12.96,2.825 +0,.6222222,77,12,3,2,0,0,1,0,0,11.25,2,0,5929,2.420368,0,3,1.098612,1.098612,1,2.4,5.76,1.125 +0,1,70,9,6,1,1,0,1,1,1,6.624,2,0,4900,1.890699,1,6,1.791759,1.791759,1,1,1,.66240001 +0,.7643312,71,10,19,0,0,0,1,1,1,15.7,2,0,5041,2.753661,0,19,2.944439,2.944439,1,1.2,1.44,1.57 +0,.7088608,70,13,2,0,0,1,0,0,0,7.9,1,1,4900,2.066863,1,2,.6931472,.6931472,1,1,1,.79000001 +0,.9716599,81,7,18,4,0,1,1,1,1,7.41,3,1,6561,2.002831,0,18,2.890372,2.890372,1,3.2,10.24,.74099998 +0,1,68,16,4,0,0,0,0,0,0,21.669,2,0,4624,3.075883,0,4,1.386294,1.386294,1,.6,.36,2.1669001 +0,0,66,12,4,0,0,0,1,0,0,49.495,3,0,4356,3.901872,0,4,1.386294,1.386294,1,.2,.04,4.9494999 +0,.1761071,85,13,4,1,0,1,1,1,1,14.565,1,1,7225,2.678621,0,4,1.386294,1.386294,1,4,16,1.4565 +0,.3226572,76,5,3,0,1,0,0,1,1,10.116,1,0,5776,2.314118,1,3,1.098612,1.098612,1,2.2,4.84,1.0116 +0,.9459872,72,12,3,1,0,1,1,0,0,9.831,0,1,5184,2.285541,0,3,1.098612,1.098612,1,1.4,1.96,.98310003 +0,.6409336,85,7,1,0,0,1,0,1,1,22.28,1,1,7225,3.103689,0,1,0,0,1,4,16,2.2280001 +0,0,76,4,3,0,1,0,0,1,1,9.311,1,0,5776,2.231196,1,3,1.098612,1.098612,1,2.2,4.84,.93109999 +0,0,71,3,7,0,1,0,1,0,0,2.76,1,0,5041,1.015231,1,7,1.94591,1.94591,1,1.2,1.44,.276 +0,.3545863,75,15,14,9,0,1,0,1,0,50.989,3,1,5625,3.93161,0,14,2.639057,2.639057,1,2,4,5.0988998 +0,1,70,8,22,44,0,0,0,1,1,3.852,5,0,4900,1.348593,1,22,3.091043,3.091043,1,1,1,.3852 +0,.9988014,68,16,16,1,0,1,1,1,0,15.018,5,1,4624,2.709249,0,16,2.772589,2.772589,1,.6,.36,1.5018 +0,.9988014,68,12,7,0,0,1,0,0,0,15.018,2,1,4624,2.709249,0,7,1.94591,1.94591,1,.6,.36,1.5018 +0,1,77,11,11,22,1,0,1,1,0,8.76,5,0,5929,2.170196,1,11,2.397895,2.397895,1,2.4,5.76,.87600002 +0,1,83,0,2,0,0,0,0,0,0,2.5,3,0,6889,.9162908,1,2,.6931472,.6931472,1,3.6,12.96,.25 +0,1,82,0,0,0,0,0,1,0,0,2.5,2,0,6724,.9162908,1,0,,-4.60517,0,3.4,11.56,.25 +1,.1934444,73,12,5,2,0,1,1,0,0,48.386,3,1,5329,3.87921,1,5,1.609438,1.609438,1,1.6,2.56,4.8386002 +0,1,73,14,5,3,0,0,0,0,0,21.669,2,0,5329,3.075883,0,5,1.609438,1.609438,1,1.6,2.56,2.1669001 +0,1,68,14,0,0,0,0,1,0,0,21.669,0,0,4624,3.075883,0,0,,-4.60517,0,.6,.36,2.1669001 +0,0,69,17,19,2,0,0,1,0,0,39.103,2,0,4761,3.666199,0,19,2.944439,2.944439,1,.8,.64,3.9103001 +0,0,85,13,9,1,0,1,1,1,1,0,1,1,7225,,0,9,2.197225,2.197225,1,4,16,0 +0,1,85,10,2,0,0,1,0,1,1,21.669,2,1,7225,3.075883,0,2,.6931472,.6931472,1,4,16,2.1669001 +0,.3833866,75,13,26,1,0,1,0,1,1,31.3,4,1,5625,3.443618,0,26,3.258096,3.258096,1,2,4,3.1299999 +0,.8847297,76,12,12,1,0,1,0,1,0,9.083,3,1,5776,2.206404,0,12,2.484907,2.484907,1,2.2,4.84,.90830002 +0,.6596076,67,12,2,1,0,1,1,1,0,12.183,3,1,4489,2.500041,0,2,.6931472,.6931472,1,.4,.16,1.2183 +0,.0515927,67,17,0,0,0,1,0,0,0,146.862,0,1,4489,4.989493,0,0,,-4.60517,0,.4,.16,14.6862 +0,1,71,8,8,0,0,1,0,1,0,10,2,1,5041,2.302585,0,8,2.079442,2.079442,1,1.2,1.44,1 +0,0,65,9,12,1,0,0,1,0,0,9.337,0,0,4225,2.233985,1,12,2.484907,2.484907,1,0,0,.93369999 +0,0,66,16,2,0,0,1,0,0,0,173.436,1,1,4356,5.155808,0,2,.6931472,.6931472,1,.2,.04,17.3436 +0,1,85,12,0,0,0,0,0,0,0,11.25,1,0,7225,2.420368,0,0,,-4.60517,0,4,16,1.125 +0,1,85,17,3,0,0,0,1,0,0,11.25,1,0,7225,2.420368,0,3,1.098612,1.098612,1,4,16,1.125 +0,.5368655,74,11,3,0,0,0,1,0,0,21.592,1,0,5476,3.072323,0,3,1.098612,1.098612,1,1.8,3.24,2.1591999 +0,1,80,6,23,0,1,0,0,0,0,3.25,2,0,6400,1.178655,1,23,3.135494,3.135494,1,3,9,.325 +0,1,74,6,14,1,1,0,1,1,1,3.25,2,0,5476,1.178655,1,14,2.639057,2.639057,1,1.8,3.24,.325 +0,.1133983,65,8,0,13,0,0,1,0,0,21.958,0,0,4225,3.089132,0,0,,-4.60517,0,0,0,2.1958 +0,.1752507,82,6,1,8,0,0,1,1,0,41.084,2,0,6724,3.715619,0,1,0,0,1,3.4,11.56,4.1084 +0,.9880952,73,12,3,0,0,0,1,0,0,8.4,0,0,5329,2.128232,0,3,1.098612,1.098612,1,1.6,2.56,.83999996 +0,.4363636,69,16,7,1,0,1,0,0,1,22,3,1,4761,3.091043,0,7,1.94591,1.94591,1,.8,.64,2.2 +0,.4363636,66,12,3,0,0,1,1,0,0,22,1,1,4356,3.091043,0,3,1.098612,1.098612,1,.2,.04,2.2 +0,1,66,12,2,0,1,0,1,0,0,19.694,2,0,4356,2.980314,0,2,.6931472,.6931472,1,.2,.04,1.9694 +0,0,77,12,13,0,0,0,1,0,0,.982,3,0,5929,-.018164,1,13,2.564949,2.564949,1,2.4,5.76,.0982 +0,0,69,17,3,0,0,1,1,0,0,122.349,1,1,4761,4.806878,0,3,1.098612,1.098612,1,.8,.64,12.2349 +0,1,68,0,3,0,0,1,0,1,1,3.6,2,1,4624,1.280934,1,3,1.098612,1.098612,1,.6,.36,.35999999 +0,0,76,7,7,0,1,0,1,1,1,15.966,2,0,5776,2.770461,1,7,1.94591,1.94591,1,2.2,4.84,1.5966 +0,.9973404,85,8,19,2,0,0,0,0,0,7.52,3,0,7225,2.017566,0,19,2.944439,2.944439,1,4,16,.752 +0,1,85,8,14,11,1,0,1,1,1,13.5,5,0,7225,2.60269,0,14,2.639057,2.639057,1,4,16,1.35 +0,.3116184,73,12,5,0,0,1,0,0,0,30.486,3,1,5329,3.417268,0,5,1.609438,1.609438,1,1.6,2.56,3.0486 +0,.2527268,73,12,3,0,0,1,1,0,0,37.59,1,1,5329,3.626738,0,3,1.098612,1.098612,1,1.6,2.56,3.759 +0,.6962025,85,10,7,1,0,1,1,0,0,15.8,2,1,7225,2.76001,0,7,1.94591,1.94591,1,4,16,1.58 +0,0,70,13,7,15,0,1,0,0,0,0,1,1,4900,,0,7,1.94591,1.94591,1,1,1,0 +1,0,66,14,11,1,0,1,1,1,0,26.84,1,1,4356,3.289893,0,11,2.397895,2.397895,1,.2,.04,2.684 +0,0,78,11,6,4,0,1,1,1,0,7,0,1,6084,1.94591,1,6,1.791759,1.791759,1,2.6,6.76,.7 +0,.6574985,66,10,9,1,0,0,1,1,1,15.343,1,0,4356,2.730659,0,9,2.197225,2.197225,1,.2,.04,1.5343 +0,.5458387,73,14,4,1,0,0,1,0,0,35.494,3,0,5329,3.569364,1,4,1.386294,1.386294,1,1.6,2.56,3.5493999 +0,.0924749,71,17,21,3,0,1,0,1,1,43.255,0,1,5041,3.767113,0,21,3.044523,3.044523,1,1.2,1.44,4.3255001 +0,.8238929,70,13,5,1,0,1,1,0,0,4.855,2,1,4900,1.580009,0,5,1.609438,1.609438,1,1,1,.4855 +0,1,76,7,0,0,0,0,1,0,0,6,0,0,5776,1.791759,1,0,,-4.60517,0,2.2,4.84,.6 +0,.5714286,85,12,10,9,0,1,1,1,1,16.8,4,1,7225,2.821379,0,10,2.302585,2.302585,1,4,16,1.6799999 +0,0,84,8,0,0,0,0,1,1,1,0,3,0,7056,,1,0,,-4.60517,0,3.8,14.44,0 +0,1,65,11,2,0,1,0,1,1,1,8,1,0,4225,2.079442,1,2,.6931472,.6931472,1,0,0,.8 +0,.3969211,82,14,16,14,0,1,1,1,0,30.011,4,1,6724,3.401564,0,16,2.772589,2.772589,1,3.4,11.56,3.0011 +0,0,85,3,9,0,1,0,1,1,1,9.185,3,0,7225,2.217572,1,9,2.197225,2.197225,1,4,16,.91850004 +0,.7034483,80,1,6,0,1,0,0,0,0,14.5,1,0,6400,2.674149,1,6,1.791759,1.791759,1,3,9,1.45 +0,.7034483,77,3,8,34,1,0,1,0,1,14.5,2,0,5929,2.674149,1,8,2.079442,2.079442,1,2.4,5.76,1.45 +0,.9671848,70,8,16,1,1,0,1,1,1,6.948,3,0,4900,1.938454,0,16,2.772589,2.772589,1,1,1,.6948 +0,0,82,16,15,0,0,0,0,0,0,0,1,0,6724,,0,15,2.70805,2.70805,1,3.4,11.56,0 +0,0,79,15,8,3,0,0,1,0,0,0,2,0,6241,,0,8,2.079442,2.079442,1,2.8,7.84,0 +1,.1420118,72,12,11,0,0,1,0,1,0,33.8,0,1,5184,3.520461,0,11,2.397895,2.397895,1,1.4,1.96,3.3799999 +0,.608156,81,3,7,0,0,0,1,0,1,6.768,2,0,6561,1.912206,1,7,1.94591,1.94591,1,3.2,10.24,.67680001 +0,.2706293,73,12,7,0,0,0,1,0,0,40.646,1,0,5329,3.704901,0,7,1.94591,1.94591,1,1.6,2.56,4.0646 +0,.8205048,80,13,4,0,0,1,1,1,1,12.797,4,1,6400,2.549211,0,4,1.386294,1.386294,1,3,9,1.2797 +0,.9753695,78,12,4,0,0,0,1,1,0,2.03,2,0,6084,.7080358,1,4,1.386294,1.386294,1,2.6,6.76,.203 +0,.2222222,66,13,11,1,0,0,0,0,0,54,2,0,4356,3.988984,0,11,2.397895,2.397895,1,.2,.04,5.4 +0,.2392169,68,17,9,2,0,1,0,0,0,48.015,3,1,4624,3.871513,0,9,2.197225,2.197225,1,.6,.36,4.8014999 +0,.1963822,70,16,19,6,0,1,1,1,0,58.488,6,1,4900,4.068821,0,19,2.944439,2.944439,1,1,1,5.8487999 +0,.5060753,71,14,5,0,1,0,1,1,0,13.168,2,0,5041,2.57779,1,5,1.609438,1.609438,1,1.2,1.44,1.3168 +0,1,68,3,19,9,0,0,1,0,0,3.7,1,0,4624,1.308333,1,19,2.944439,2.944439,1,.6,.36,.37 +0,.4805195,74,3,1,0,0,0,0,0,0,7.7,0,0,5476,2.04122,1,1,0,0,1,1.8,3.24,.76999998 +0,.1800855,76,12,2,0,0,1,0,0,0,66.635,0,1,5776,4.19923,0,2,.6931472,.6931472,1,2.2,4.84,6.6635002 +0,.4837067,72,17,10,2,0,0,0,1,0,9.82,1,0,5184,2.284421,0,10,2.302585,2.302585,1,1.4,1.96,.98199997 +0,.4837067,71,13,5,0,0,0,1,0,0,9.82,2,0,5041,2.284421,0,5,1.609438,1.609438,1,1.2,1.44,.98199997 +0,1,75,12,6,2,0,0,1,0,0,11.124,3,0,5625,2.409105,1,6,1.791759,1.791759,1,2,4,1.1124 +0,0,66,8,2,0,0,0,1,0,0,.72,2,0,4356,-.328504,0,2,.6931472,.6931472,1,.2,.04,.072 +0,.9511964,73,8,8,2,0,0,0,1,1,14.753,3,0,5329,2.691447,0,8,2.079442,2.079442,1,1.6,2.56,1.4753 +0,.972973,85,5,9,0,0,1,1,1,1,7.4,4,1,7225,2.00148,0,9,2.197225,2.197225,1,4,16,.74000001 +0,.7944502,85,8,3,0,0,1,1,1,1,11.676,2,1,7225,2.457536,0,3,1.098612,1.098612,1,4,16,1.1676 +0,1,66,2,30,1,1,0,0,1,1,9.6,5,0,4356,2.261763,0,30,3.401197,3.401197,1,.2,.04,.96000004 +0,1,69,15,16,0,0,1,1,1,1,5.4,3,1,4761,1.686399,1,16,2.772589,2.772589,1,.8,.64,.54000001 +0,.4655453,66,14,10,3,0,1,1,0,0,22.769,2,1,4356,3.1254,0,10,2.302585,2.302585,1,.2,.04,2.2768999 +0,1,72,10,9,1,0,1,1,0,0,11.096,1,1,5184,2.406585,0,9,2.197225,2.197225,1,1.4,1.96,1.1096 +0,.9981834,82,12,4,0,0,0,1,1,1,10.459,2,0,6724,2.347463,0,4,1.386294,1.386294,1,3.4,11.56,1.0459 +0,.4019546,73,4,0,0,0,0,0,0,1,12.688,2,0,5329,2.540657,1,0,,-4.60517,0,1.6,2.56,1.2688 +0,0,66,2,0,0,0,0,0,0,0,10.868,0,0,4356,2.385823,1,0,,-4.60517,0,.2,.04,1.0868 +0,.4850131,70,12,5,0,0,1,1,1,0,30.927,1,1,4900,3.43163,0,5,1.609438,1.609438,1,1,1,3.0927 +0,1,81,12,12,0,1,0,1,1,0,7.5,3,0,6561,2.014903,1,12,2.484907,2.484907,1,3.2,10.24,.75 +1,0,69,17,1,40,0,1,1,0,0,36.46,1,1,4761,3.596216,0,1,0,0,1,.8,.64,3.6459999 +0,.3075725,69,9,12,0,0,1,0,1,0,26.966,1,1,4761,3.294577,0,12,2.484907,2.484907,1,.8,.64,2.6966 +0,.3781583,82,12,9,1,0,0,1,0,1,23.826,3,0,6724,3.170777,0,9,2.197225,2.197225,1,3.4,11.56,2.3826 +0,.3746673,85,12,7,0,0,0,0,1,1,24.048,1,0,7225,3.180052,0,7,1.94591,1.94591,1,4,16,2.4048 +0,.6083189,85,9,0,0,1,0,1,1,1,6.924,2,0,7225,1.934994,1,0,,-4.60517,0,4,16,.69239998 +0,.7675716,71,12,11,1,0,0,0,0,1,16.134,3,0,5041,2.780929,0,11,2.397895,2.397895,1,1.2,1.44,1.6134001 +0,1,79,11,12,0,0,0,1,0,0,5.04,3,0,6241,1.617406,1,12,2.484907,2.484907,1,2.8,7.84,.504 +0,.4431143,76,16,0,0,0,0,1,0,0,21.552,0,0,5776,3.070469,0,0,,-4.60517,0,2.2,4.84,2.1552 +0,.2279137,77,12,8,1,0,1,0,0,0,86.875,2,1,5929,4.46447,0,8,2.079442,2.079442,1,2.4,5.76,8.6875 +0,.6484641,73,12,14,19,0,1,1,1,0,14.65,6,1,5329,2.68444,0,14,2.639057,2.639057,1,1.6,2.56,1.465 +0,.6484641,76,12,21,6,0,1,0,0,0,14.65,1,1,5776,2.68444,0,21,3.044523,3.044523,1,2.2,4.84,1.465 +0,.9347624,82,12,15,10,0,1,1,0,0,12.876,3,1,6724,2.555365,0,15,2.70805,2.70805,1,3.4,11.56,1.2876 +0,.7919405,85,14,8,3,0,1,1,0,0,22.83,4,1,7225,3.128075,0,8,2.079442,2.079442,1,4,16,2.283 +0,0,67,10,22,5,1,0,0,1,1,0,4,0,4489,,0,22,3.091043,3.091043,1,.4,.16,0 +0,0,65,10,5,0,1,0,1,1,1,0,3,0,4225,,0,5,1.609438,1.609438,1,0,0,0 +0,.8486563,74,12,1,0,0,1,0,0,0,7.07,2,1,5476,1.95586,1,1,0,0,1,1.8,3.24,.70700002 +0,.8486563,70,12,2,0,0,1,1,0,0,7.07,2,1,4900,1.95586,1,2,.6931472,.6931472,1,1,1,.70700002 +0,.5364239,66,12,19,0,1,0,1,1,1,15.1,5,0,4356,2.714695,1,19,2.944439,2.944439,1,.2,.04,1.51 +0,1,72,13,1,1,0,0,1,0,0,11,1,0,5184,2.397895,0,1,0,0,1,1.4,1.96,1.1 +0,.9995456,67,13,3,1,0,0,0,0,0,11.005,2,0,4489,2.39835,0,3,1.098612,1.098612,1,.4,.16,1.1005 +0,1,72,11,4,1,0,0,1,1,1,9.6,4,0,5184,2.261763,0,4,1.386294,1.386294,1,1.4,1.96,.96000004 +0,.4066418,68,11,0,0,0,0,0,1,1,29.51,1,0,4624,3.384729,0,0,,-4.60517,0,.6,.36,2.951 +0,.9259949,65,14,1,0,0,1,0,0,0,20.931,1,1,4225,3.041231,0,1,0,0,1,0,0,2.0931 +0,.5,75,2,6,0,0,0,1,0,0,19.2,1,0,5625,2.95491,1,6,1.791759,1.791759,1,2,4,1.9200001 +0,.3813535,66,10,3,8,0,0,0,0,0,17.569,1,0,4356,2.866136,1,3,1.098612,1.098612,1,.2,.04,1.7569 +0,.7810226,80,12,4,1,0,0,0,1,1,10.307,1,0,6400,2.332823,0,4,1.386294,1.386294,1,3,9,1.0307 +0,.7810226,73,14,0,62,0,0,1,0,0,10.307,1,0,5329,2.332823,0,0,,-4.60517,0,1.6,2.56,1.0307 +1,0,65,12,17,6,0,1,1,1,0,13.767,6,1,4225,2.622274,0,17,2.833213,2.833213,1,0,0,1.3767 +0,1,82,12,2,0,0,1,0,1,1,8.724,2,1,6724,2.166078,0,2,.6931472,.6931472,1,3.4,11.56,.8724 +0,.7636364,85,5,13,0,0,1,1,1,1,11,2,1,7225,2.397895,0,13,2.564949,2.564949,1,4,16,1.1 +0,0,75,3,1,0,1,0,1,0,0,0,2,0,5625,,0,1,0,0,1,2,4,0 +0,.3658307,82,7,13,0,1,0,1,1,1,15.909,4,0,6724,2.766885,1,13,2.564949,2.564949,1,3.4,11.56,1.5909 +0,.2795279,74,12,2,1,0,0,1,0,0,45.076,0,0,5476,3.80835,0,2,.6931472,.6931472,1,1.8,3.24,4.5076 +0,0,66,14,12,2,0,1,0,0,0,.9,1,1,4356,-.1053605,0,12,2.484907,2.484907,1,.2,.04,.09 +0,.9179431,67,9,13,0,0,1,1,0,0,10.968,2,1,4489,2.394982,0,13,2.564949,2.564949,1,.4,.16,1.0968 +0,.7954866,71,9,0,0,1,0,0,0,0,8.508,0,0,5041,2.141007,0,0,,-4.60517,0,1.2,1.44,.85080004 +0,1,74,10,11,0,1,0,1,1,1,6.648,5,0,5476,1.894316,0,11,2.397895,2.397895,1,1.8,3.24,.66479998 +0,.8333333,85,12,3,3,0,1,0,1,1,16.8,2,1,7225,2.821379,0,3,1.098612,1.098612,1,4,16,1.6799999 +0,.0412037,85,14,5,0,0,0,0,0,0,72.809,2,0,7225,4.287839,0,5,1.609438,1.609438,1,4,16,7.2808998 +0,.0607374,85,14,4,0,0,0,1,0,0,49.393,0,0,7225,3.899809,0,4,1.386294,1.386294,1,4,16,4.9393002 +0,.0910326,85,16,9,1,0,1,0,1,0,58.144,1,1,7225,4.062922,0,9,2.197225,2.197225,1,4,16,5.8144001 +0,.2762185,68,16,3,1,0,1,0,0,0,14.608,1,1,4624,2.681569,0,3,1.098612,1.098612,1,.6,.36,1.4608 +0,1,83,12,3,0,0,0,1,1,1,8.7,3,0,6889,2.163323,1,3,1.098612,1.098612,1,3.6,12.96,.86999998 +0,.8162665,85,8,8,0,1,0,1,1,1,8.164,5,0,7225,2.099734,1,8,2.079442,2.079442,1,4,16,.81639996 +0,.2636928,70,3,1,0,1,0,1,0,0,18.203,3,0,4900,2.901586,1,1,0,0,1,1,1,1.8202999 +0,1,72,4,14,1,0,1,0,1,1,10,5,1,5184,2.302585,0,14,2.639057,2.639057,1,1.4,1.96,1 +0,0,84,12,3,0,0,1,1,1,1,0,1,1,7056,,1,3,1.098612,1.098612,1,3.8,14.44,0 +0,1,77,14,8,0,0,1,0,1,1,10.8,1,1,5929,2.379546,0,8,2.079442,2.079442,1,2.4,5.76,1.08 +0,.2967895,74,14,2,1,0,0,1,0,0,48.061,1,0,5476,3.872471,0,2,.6931472,.6931472,1,1.8,3.24,4.8061001 +0,.699523,72,14,2,0,0,1,0,0,0,15.725,1,1,5184,2.755252,0,2,.6931472,.6931472,1,1.4,1.96,1.5725 +0,.8799878,81,12,7,1,1,0,1,1,1,6.591,4,0,6561,1.885705,1,7,1.94591,1.94591,1,3.2,10.24,.65910001 +0,.661901,67,0,1,0,0,0,1,1,0,11.331,0,0,4489,2.427542,1,1,0,0,1,.4,.16,1.1331 +1,.5758157,72,11,3,12,0,1,1,1,0,15.63,3,1,5184,2.749192,0,3,1.098612,1.098612,1,1.4,1.96,1.563 +0,.4229045,69,17,9,1,0,1,1,0,0,35.469,2,1,4761,3.568659,0,9,2.197225,2.197225,1,.8,.64,3.5469002 +0,.7475083,76,12,5,13,0,1,1,0,0,7.525,2,1,5776,2.018231,0,5,1.609438,1.609438,1,2.2,4.84,.75250001 +0,.7475083,79,12,11,9,0,1,0,0,0,7.525,1,1,6241,2.018231,0,11,2.397895,2.397895,1,2.8,7.84,.75250001 +0,.4023497,85,17,1,0,0,0,1,1,1,24.854,1,0,7225,3.213019,0,1,0,0,1,4,16,2.4854 +0,.8739946,74,10,1,0,0,0,0,0,0,8.952,0,0,5476,2.191877,0,1,0,0,1,1.8,3.24,.89519997 +0,1,66,10,9,1,1,0,1,1,1,6.457,6,0,4356,1.865165,0,9,2.197225,2.197225,1,.2,.04,.64569998 +0,1,72,8,1,3,0,0,0,1,1,6.457,2,0,5184,1.865165,0,1,0,0,1,1.4,1.96,.64569998 +0,.6043165,71,13,8,1,0,1,1,0,0,13.9,2,1,5041,2.631889,0,8,2.079442,2.079442,1,1.2,1.44,1.39 +0,.6043165,79,12,5,2,0,1,0,1,0,13.9,5,1,6241,2.631889,0,5,1.609438,1.609438,1,2.8,7.84,1.39 +0,0,67,7,3,0,0,1,0,0,1,0,0,1,4489,,1,3,1.098612,1.098612,1,.4,.16,0 +0,0,69,11,22,7,0,1,1,1,0,25,2,1,4761,3.218876,1,22,3.091043,3.091043,1,.8,.64,2.5 +0,1,65,10,15,0,1,0,0,0,1,2.49,1,0,4225,.9122827,1,15,2.70805,2.70805,1,0,0,.249 +0,.3478261,82,12,3,1,0,1,0,1,1,10.35,2,1,6724,2.336987,0,3,1.098612,1.098612,1,3.4,11.56,1.035 +0,.3478261,85,10,3,1,0,1,1,1,1,10.35,1,1,7225,2.336987,0,3,1.098612,1.098612,1,4,16,1.035 +0,.9882353,85,14,0,0,0,0,1,0,0,8.5,0,0,7225,2.140066,0,0,,-4.60517,0,4,16,.85 +0,.1181303,66,1,14,0,0,0,0,0,0,46.017,1,0,4356,3.829011,1,14,2.639057,2.639057,1,.2,.04,4.6016998 +0,.5968379,70,7,16,0,0,0,1,1,1,9.108,2,0,4900,2.209153,1,16,2.772589,2.772589,1,1,1,.91079998 +0,1,85,9,2,0,1,0,1,1,1,6,7,0,7225,1.791759,0,2,.6931472,.6931472,1,4,16,.6 +0,.9987708,69,16,13,24,0,1,0,0,0,6.508,1,1,4761,1.873032,0,13,2.564949,2.564949,1,.8,.64,.65079999 +0,.9987708,68,13,11,5,0,1,1,0,0,6.508,2,1,4624,1.873032,0,11,2.397895,2.397895,1,.6,.36,.65079999 +0,.4592624,77,9,11,4,0,0,1,0,0,28.524,4,0,5929,3.350746,1,11,2.397895,2.397895,1,2.4,5.76,2.8524 +1,0,65,17,0,2,0,1,0,0,0,146.416,0,1,4225,4.986452,0,0,,-4.60517,0,0,0,14.6416 +0,.3192735,72,12,4,1,0,1,0,0,0,30.062,1,1,5184,3.403262,0,4,1.386294,1.386294,1,1.4,1.96,3.0062 +0,.4020441,72,12,5,2,0,1,1,0,0,23.873,5,1,5184,3.172748,0,5,1.609438,1.609438,1,1.4,1.96,2.3872999 +0,1,76,8,23,0,0,0,1,1,1,3.2,3,0,5776,1.163151,0,23,3.135494,3.135494,1,2.2,4.84,.32 +0,.3918256,77,9,25,1,0,1,1,0,0,11.01,4,1,5929,2.398804,0,25,3.218876,3.218876,1,2.4,5.76,1.101 +0,.3918256,82,6,19,0,0,1,0,1,1,11.01,1,1,6724,2.398804,0,19,2.944439,2.944439,1,3.4,11.56,1.101 +0,.4625525,81,14,19,16,0,0,1,0,0,25.943,1,0,6561,3.255902,0,19,2.944439,2.944439,1,3.2,10.24,2.5943001 +0,1,85,12,4,0,0,0,1,1,0,9,1,0,7225,2.197225,0,4,1.386294,1.386294,1,4,16,.9 +0,.7142857,71,8,14,8,0,0,1,1,1,13.125,3,0,5041,2.574519,0,14,2.639057,2.639057,1,1.2,1.44,1.3125 +0,.7142857,74,10,5,2,0,0,0,1,1,13.125,3,0,5476,2.574519,0,5,1.609438,1.609438,1,1.8,3.24,1.3125 +0,.968258,85,9,11,0,0,1,1,1,1,11.877,4,1,7225,2.474604,0,11,2.397895,2.397895,1,4,16,1.1877 +0,.8317631,74,12,5,3,0,1,0,1,0,14.86,2,1,5476,2.698673,0,5,1.609438,1.609438,1,1.8,3.24,1.486 +0,.8317631,76,12,1,0,0,1,1,0,0,14.86,0,1,5776,2.698673,0,1,0,0,1,2.2,4.84,1.486 +0,.3979624,80,16,8,0,0,1,0,0,0,31.41,5,1,6400,3.447126,0,8,2.079442,2.079442,1,3,9,3.141 +0,.4255754,80,17,4,0,0,1,1,1,1,29.372,4,1,6400,3.380042,0,4,1.386294,1.386294,1,3,9,2.9372 +0,0,73,12,0,0,0,0,0,0,1,6.624,0,0,5329,1.890699,0,0,,-4.60517,0,1.6,2.56,.66240001 +0,.1831334,69,16,0,13,0,1,0,0,0,54.605,1,1,4761,4.000125,0,0,,-4.60517,0,.8,.64,5.4605 +0,.9933775,67,12,0,1,0,1,1,0,0,15.1,2,1,4489,2.714695,0,0,,-4.60517,0,.4,.16,1.51 +0,.2295082,69,11,10,0,0,1,1,1,0,15.25,3,1,4761,2.72458,0,10,2.302585,2.302585,1,.8,.64,1.525 +0,.6551,79,14,12,5,0,1,1,0,0,19.539,1,1,6241,2.972412,0,12,2.484907,2.484907,1,2.8,7.84,1.9539 +0,.6855069,65,13,1,3,0,1,0,1,0,31.829,2,1,4225,3.460378,0,1,0,0,1,0,0,3.1829 +0,.6675568,68,11,4,0,0,1,0,1,1,17.976,2,1,4624,2.889038,1,4,1.386294,1.386294,1,.6,.36,1.7976 +0,1,73,12,23,0,1,0,0,0,0,7.2,3,0,5329,1.974081,0,23,3.135494,3.135494,1,1.6,2.56,.71999998 +0,.3174705,69,16,3,0,0,1,1,0,0,62.368,1,1,4761,4.133052,0,3,1.098612,1.098612,1,.8,.64,6.2368 +0,.5142944,85,11,10,8,0,0,0,0,1,19.833,2,0,7225,2.987347,0,10,2.302585,2.302585,1,4,16,1.9833 +0,1,65,12,7,4,1,0,0,1,1,10,6,0,4225,2.302585,0,7,1.94591,1.94591,1,0,0,1 +0,1,68,12,15,1,1,0,1,1,1,6.5,0,0,4624,1.871802,1,15,2.70805,2.70805,1,.6,.36,.65 +0,.9844134,68,8,1,1,0,1,0,1,1,9.752,2,1,4624,2.277472,1,1,0,0,1,.6,.36,.97519999 +0,.9556187,72,9,5,1,0,1,0,0,0,11.266,1,1,5184,2.421789,0,5,1.609438,1.609438,1,1.4,1.96,1.1266 +0,.9556187,80,8,0,1,0,1,1,0,0,11.266,0,1,6400,2.421789,0,0,,-4.60517,0,3,9,1.1266 +0,.1527669,66,17,0,0,0,1,0,0,0,81.824,0,1,4356,4.404571,0,0,,-4.60517,0,.2,.04,8.1823997 +0,.9473684,66,12,3,12,0,1,0,0,0,11.875,3,1,4356,2.474435,0,3,1.098612,1.098612,1,.2,.04,1.1875 +0,.2231076,66,2,2,2,0,1,0,0,0,62.75,1,1,4356,4.139159,0,2,.6931472,.6931472,1,.2,.04,6.275 +0,.3931556,81,12,5,0,0,1,1,1,0,10.052,1,1,6561,2.307772,0,5,1.609438,1.609438,1,3.2,10.24,1.0052 +0,1,70,11,1,0,1,0,1,1,1,3.708,0,0,4900,1.310493,1,1,0,0,1,1,1,.37079999 +0,0,65,9,14,0,1,0,1,0,0,1.644,3,0,4225,.4971323,1,14,2.639057,2.639057,1,0,0,.16440001 +0,0,76,10,0,10,0,0,1,0,0,7,0,0,5776,1.94591,1,0,,-4.60517,0,2.2,4.84,.7 +0,.2151733,81,12,1,0,0,1,1,0,0,30.58,2,1,6561,3.420346,0,1,0,0,1,3.2,10.24,3.058 +0,.1150428,81,16,6,6,0,1,1,0,1,18.567,0,1,6561,2.921386,1,6,1.791759,1.791759,1,3.2,10.24,1.8566999 +0,.250823,66,12,0,2,0,1,0,0,0,51.032,0,1,4356,3.932453,0,0,,-4.60517,0,.2,.04,5.1032001 +0,1,71,9,0,0,0,1,1,0,0,11.976,0,1,5041,2.482905,0,0,,-4.60517,0,1.2,1.44,1.1976 +1,0,65,12,6,0,1,0,0,0,0,0,1,0,4225,,1,6,1.791759,1.791759,1,0,0,0 +0,.5,67,12,5,1,0,1,1,0,1,14.4,2,1,4489,2.667228,0,5,1.609438,1.609438,1,.4,.16,1.44 +0,.9975512,79,12,4,0,0,1,1,0,0,7.759,0,1,6241,2.048853,0,4,1.386294,1.386294,1,2.8,7.84,.77589998 +0,.833887,83,12,6,2,0,0,1,1,1,14.448,5,0,6889,2.670556,0,6,1.791759,1.791759,1,3.6,12.96,1.4448 +0,.8811787,67,12,0,0,0,0,0,0,0,10.52,0,0,4489,2.353278,1,0,,-4.60517,0,.4,.16,1.052 +0,1,66,12,14,1,0,0,1,0,0,9.27,2,0,4356,2.226784,1,14,2.639057,2.639057,1,.2,.04,.92700005 +0,0,67,12,5,0,1,0,1,0,0,7.831,4,0,4489,2.05809,0,5,1.609438,1.609438,1,.4,.16,.78309999 +0,.3962617,76,10,11,0,1,0,1,1,1,6.42,6,0,5776,1.859418,1,11,2.397895,2.397895,1,2.2,4.84,.64200001 +0,0,83,14,3,1,0,0,0,1,1,0,2,0,6889,,0,3,1.098612,1.098612,1,3.6,12.96,0 +0,0,83,11,4,0,0,0,1,1,1,0,2,0,6889,,0,4,1.386294,1.386294,1,3.6,12.96,0 +0,.3821656,72,10,13,0,0,0,1,1,1,25.12,4,0,5184,3.223664,1,13,2.564949,2.564949,1,1.4,1.96,2.5120001 +0,.4519765,65,9,2,0,0,1,0,0,0,18.72,0,1,4225,2.929592,0,2,.6931472,.6931472,1,0,0,1.8719999 +0,.4519765,67,12,2,0,0,1,1,0,0,18.72,0,1,4489,2.929592,0,2,.6931472,.6931472,1,.4,.16,1.8719999 +0,1,82,12,1,0,0,0,1,1,1,11.496,4,0,6724,2.441999,0,1,0,0,1,3.4,11.56,1.1496 +0,.9776186,66,12,0,3,0,0,0,0,0,8.936,1,0,4356,2.190088,0,0,,-4.60517,0,.2,.04,.89359999 +0,1,68,12,6,0,1,0,1,1,1,7.926,4,0,4624,2.070148,0,6,1.791759,1.791759,1,.6,.36,.79260001 +0,.5865485,74,12,14,0,0,1,0,1,0,15.344,3,1,5476,2.730725,0,14,2.639057,2.639057,1,1.8,3.24,1.5344 +0,0,71,13,16,3,0,1,1,0,0,6.344,3,1,5041,1.84751,0,16,2.772589,2.772589,1,1.2,1.44,.63439999 +0,1,85,9,2,0,0,1,1,0,0,9,0,1,7225,2.197225,1,2,.6931472,.6931472,1,4,16,.9 +0,1,67,12,4,0,0,0,1,0,0,6.6,1,0,4489,1.88707,1,4,1.386294,1.386294,1,.4,.16,.65999999 +0,0,71,13,0,0,0,0,1,0,0,6,0,0,5041,1.791759,1,0,,-4.60517,0,1.2,1.44,.6 +0,.9258285,72,12,10,4,0,0,0,0,0,23.567,1,0,5184,3.159847,0,10,2.302585,2.302585,1,1.4,1.96,2.3566999 +0,0,67,9,12,0,0,0,1,0,0,2.211,0,0,4489,.7934449,0,12,2.484907,2.484907,1,.4,.16,.2211 +0,.36,76,9,3,0,0,0,1,1,0,12.5,1,0,5776,2.525729,1,3,1.098612,1.098612,1,2.2,4.84,1.25 +0,.8648649,81,12,4,2,0,0,1,1,1,11.1,3,0,6561,2.406945,0,4,1.386294,1.386294,1,3.2,10.24,1.11 +0,1,80,12,8,1,0,1,1,0,0,9.928,2,1,6400,2.295359,0,8,2.079442,2.079442,1,3,9,.99280005 +0,0,73,17,5,3,0,1,0,0,0,24.455,1,1,5329,3.196835,0,5,1.609438,1.609438,1,1.6,2.56,2.4455 +0,0,70,15,6,10,0,1,1,0,0,16.976,1,1,4900,2.8318,0,6,1.791759,1.791759,1,1,1,1.6976 +0,.7895816,69,5,1,0,1,0,0,0,1,9.752,1,0,4761,2.277472,0,1,0,0,1,.8,.64,.97519999 +0,.3104318,85,8,2,0,0,1,0,0,0,46.387,2,1,7225,3.837019,0,2,.6931472,.6931472,1,4,16,4.6387001 +0,.3452343,76,8,3,2,0,1,0,1,0,34.759,3,1,5776,3.548439,0,3,1.098612,1.098612,1,2.2,4.84,3.4758999 +0,.28,67,11,6,1,0,1,1,0,1,25,2,1,4489,3.218876,0,6,1.791759,1.791759,1,.4,.16,2.5 +0,1,71,12,5,1,0,1,1,1,1,9,2,1,5041,2.197225,0,5,1.609438,1.609438,1,1.2,1.44,.9 +0,0,68,17,17,1,0,1,0,0,0,32.97,3,1,4624,3.495598,0,17,2.833213,2.833213,1,.6,.36,3.2970001 +0,.3005126,67,14,6,2,0,1,1,1,0,28.285,1,1,4489,3.342332,0,6,1.791759,1.791759,1,.4,.16,2.8285 +0,.4628772,85,12,3,1,0,1,1,1,1,21.604,2,1,7225,3.072879,0,3,1.098612,1.098612,1,4,16,2.1604 +0,1,81,6,1,0,1,0,1,1,1,3.708,3,0,6561,1.310493,1,1,0,0,1,3.2,10.24,.37079999 +0,.8986784,76,5,15,0,0,1,1,1,1,11.35,3,1,5776,2.429218,0,15,2.70805,2.70805,1,2.2,4.84,1.135 +0,.4770986,71,12,16,16,0,1,1,0,0,27.793,4,1,5041,3.324784,0,16,2.772589,2.772589,1,1.2,1.44,2.7792999 +0,.4907092,68,16,4,0,0,1,0,1,1,30.568,3,1,4624,3.419954,1,4,1.386294,1.386294,1,.6,.36,3.0568001 +1,0,65,12,7,0,0,1,1,0,0,9,2,1,4225,2.197225,0,7,1.94591,1.94591,1,0,0,.9 +0,.8938429,69,12,35,5,0,0,0,1,0,5.652,4,0,4761,1.732009,0,35,3.555348,3.555348,1,.8,.64,.5652 +0,1,67,16,7,0,1,0,1,1,1,7.8,4,0,4489,2.054124,1,7,1.94591,1.94591,1,.4,.16,.78000002 +0,.3414446,74,14,5,0,0,1,1,1,0,43.931,0,1,5476,3.78262,0,5,1.609438,1.609438,1,1.8,3.24,4.3931 +0,1,85,10,0,0,0,0,1,1,1,9.6,3,0,7225,2.261763,0,0,,-4.60517,0,4,16,.96000004 +0,.1861881,70,16,12,0,0,1,1,0,0,59.123,2,1,4900,4.07962,1,12,2.484907,2.484907,1,1,1,5.9123001 +0,0,65,12,4,2,1,0,1,1,1,0,2,0,4225,,1,4,1.386294,1.386294,1,0,0,0 +1,.5454546,69,12,16,5,0,1,1,0,0,22,2,1,4761,3.091043,0,16,2.772589,2.772589,1,.8,.64,2.2 +1,.2934783,68,9,6,0,0,1,0,1,1,42.32,3,1,4624,3.74526,0,6,1.791759,1.791759,1,.6,.36,4.232 +0,.7462686,85,12,5,4,0,1,0,1,1,13.4,0,1,7225,2.595255,0,5,1.609438,1.609438,1,4,16,1.34 +0,.5988024,69,6,12,1,1,0,1,1,0,10.02,2,0,4761,2.304583,1,12,2.484907,2.484907,1,.8,.64,1.002 +0,.9982639,73,12,7,1,0,0,0,1,1,11.52,4,0,5329,2.444085,0,7,1.94591,1.94591,1,1.6,2.56,1.152 +0,.7780083,72,14,7,1,0,0,1,0,0,12.05,1,0,5184,2.489065,0,7,1.94591,1.94591,1,1.4,1.96,1.205 +0,.7780083,79,14,2,0,0,0,0,0,0,12.05,1,0,6241,2.489065,0,2,.6931472,.6931472,1,2.8,7.84,1.205 +0,1,85,17,2,1,0,0,1,1,1,19.694,2,0,7225,2.980314,0,2,.6931472,.6931472,1,4,16,1.9694 +0,1,74,3,13,0,0,0,0,1,1,12.5,3,0,5476,2.525729,1,13,2.564949,2.564949,1,1.8,3.24,1.25 +1,.2730188,66,9,19,2,0,1,1,1,0,33.364,5,1,4356,3.507478,0,19,2.944439,2.944439,1,.2,.04,3.3363998 +0,1,70,9,14,4,0,1,0,1,1,9.109,5,1,4900,2.209263,0,14,2.639057,2.639057,1,1,1,.91090002 +0,.9881423,85,8,4,0,0,1,1,0,0,9.108,1,1,7225,2.209153,0,4,1.386294,1.386294,1,4,16,.91079998 +0,.5005182,70,16,11,0,0,0,1,0,0,39.559,3,0,4900,3.677793,0,11,2.397895,2.397895,1,1,1,3.9558998 +0,.867443,70,12,0,0,0,0,1,0,0,16.144,1,0,4900,2.781549,0,0,,-4.60517,0,1,1,1.6143999 +0,.2384478,74,14,5,2,0,1,1,0,0,39.841,2,1,5476,3.684896,0,5,1.609438,1.609438,1,1.8,3.24,3.9841 +0,.9761791,68,12,3,0,0,0,0,0,0,8.396,1,0,4624,2.127755,1,3,1.098612,1.098612,1,.6,.36,.83959999 +1,0,67,15,2,4,0,1,0,1,0,60.543,2,1,4489,4.103354,0,2,.6931472,.6931472,1,.4,.16,6.0542999 +1,.4444444,75,12,2,0,0,1,1,0,0,21.6,2,1,5625,3.072693,0,2,.6931472,.6931472,1,2,4,2.16 +0,.2376775,84,10,8,0,0,0,0,1,1,35.342,0,0,7056,3.565072,0,8,2.079442,2.079442,1,3.8,14.44,3.5341999 +0,.6943357,66,12,6,0,0,1,0,0,0,19.155,3,1,4356,2.952564,0,6,1.791759,1.791759,1,.2,.04,1.9155001 +0,1,76,8,8,0,0,0,0,1,1,9.168,2,0,5776,2.215719,1,8,2.079442,2.079442,1,2.2,4.84,.91680002 +0,.8051746,69,3,2,0,1,0,1,0,0,6.416,1,0,4761,1.858795,1,2,.6931472,.6931472,1,.8,.64,.64159999 +0,.5794078,81,3,11,0,1,0,0,0,0,8.916,1,0,6561,2.187847,1,11,2.397895,2.397895,1,3.2,10.24,.89160004 +0,.7087827,78,13,7,6,0,0,1,1,1,12.98,2,0,6084,2.56341,0,7,1.94591,1.94591,1,2.6,6.76,1.298 +0,.2661083,69,17,10,5,0,1,0,0,0,72.835,1,1,4761,4.288197,0,10,2.302585,2.302585,1,.8,.64,7.2834999 +0,0,67,13,17,26,0,1,1,1,0,53.454,3,1,4489,3.978822,0,17,2.833213,2.833213,1,.4,.16,5.3453999 +1,.5185185,72,10,0,0,0,1,1,0,0,16.2,0,1,5184,2.785011,1,0,,-4.60517,0,1.4,1.96,1.6200001 +0,.5702136,80,12,12,1,0,1,1,0,0,20.694,3,1,6400,3.029844,1,12,2.484907,2.484907,1,3,9,2.0694 +0,.6575342,65,12,1,0,0,1,0,0,0,14.6,2,1,4225,2.681021,1,1,0,0,1,0,0,1.46 +0,.703139,84,12,4,2,0,1,1,1,0,12.265,1,1,7056,2.50675,0,4,1.386294,1.386294,1,3.8,14.44,1.2265 +0,1,72,13,0,0,0,0,0,1,1,8,2,0,5184,2.079442,1,0,,-4.60517,0,1.4,1.96,.8 +0,.3553163,79,17,17,16,0,0,0,1,1,55.725,4,0,6241,4.020429,0,17,2.833213,2.833213,1,2.8,7.84,5.5724998 +0,.2389915,74,17,27,13,0,1,1,0,0,50.211,5,1,5476,3.916234,0,27,3.295837,3.295837,1,1.8,3.24,5.0210999 +0,.8325933,70,12,20,1,0,0,1,1,1,11.26,4,0,4900,2.421257,0,20,2.995732,2.995732,1,1,1,1.126 +0,.8325933,71,12,33,7,0,0,0,1,1,11.26,5,0,5041,2.421257,0,33,3.496508,3.496508,1,1.2,1.44,1.126 +0,0,74,17,24,0,0,1,0,0,0,146.416,0,1,5476,4.986452,0,24,3.178054,3.178054,1,1.8,3.24,14.6416 +0,0,72,14,1,0,0,1,1,0,0,48.128,0,1,5184,3.873864,0,1,0,0,1,1.4,1.96,4.8127998 +0,.9982636,69,13,10,0,0,1,0,0,0,11.518,3,1,4761,2.443911,0,10,2.302585,2.302585,1,.8,.64,1.1518 +0,.9982636,67,12,9,2,0,1,1,1,1,11.518,3,1,4489,2.443911,0,9,2.197225,2.197225,1,.4,.16,1.1518 +0,.1918389,67,12,3,1,0,0,0,0,0,25.021,2,0,4489,3.219715,0,3,1.098612,1.098612,1,.4,.16,2.5021 +0,1,74,9,0,0,1,0,1,1,0,8,1,0,5476,2.079442,0,0,,-4.60517,0,1.8,3.24,.8 +0,1,69,12,27,1,0,1,1,1,1,8,4,1,4761,2.079442,0,27,3.295837,3.295837,1,.8,.64,.8 +0,.3614458,70,13,7,4,0,1,1,0,0,54.78,2,1,4900,4.003325,0,7,1.94591,1.94591,1,1,1,5.4779999 +0,.5862676,79,12,11,0,1,0,1,0,1,6.816,2,0,6241,1.919273,1,11,2.397895,2.397895,1,2.8,7.84,.6816 +0,.2470179,69,1,14,17,0,1,1,0,0,39.066,2,1,4761,3.665253,1,14,2.639057,2.639057,1,.8,.64,3.9066002 +0,.2213811,65,17,3,0,0,1,0,0,0,43.59,0,1,4225,3.774828,0,3,1.098612,1.098612,1,0,0,4.359 +0,.2239441,78,16,8,50,0,1,0,1,1,66.981,4,1,6084,4.204409,0,8,2.079442,2.079442,1,2.6,6.76,6.6981003 +0,.9473684,85,10,9,3,0,0,1,0,0,9.5,3,0,7225,2.251292,0,9,2.197225,2.197225,1,4,16,.95 +0,.4310345,77,12,5,0,1,0,1,0,0,13.92,2,0,5929,2.633327,1,5,1.609438,1.609438,1,2.4,5.76,1.392 +0,1,73,8,9,1,0,1,1,1,0,14.2,1,1,5329,2.653242,1,9,2.197225,2.197225,1,1.6,2.56,1.42 +0,1,76,11,6,1,0,1,0,0,0,11.25,1,1,5776,2.420368,0,6,1.791759,1.791759,1,2.2,4.84,1.125 +0,1,73,12,4,5,0,1,1,0,0,11.25,3,1,5329,2.420368,0,4,1.386294,1.386294,1,1.6,2.56,1.125 +0,.6794872,81,10,11,0,1,0,1,1,1,7.8,1,0,6561,2.054124,1,11,2.397895,2.397895,1,3.2,10.24,.78000002 +0,.2796834,71,14,5,1,1,0,0,0,0,18.95,0,0,5041,2.941804,1,5,1.609438,1.609438,1,1.2,1.44,1.8950001 +0,.068718,83,17,1,19,0,1,0,0,0,13.097,0,1,6889,2.572383,0,1,0,0,1,3.6,12.96,1.3097 +0,.8049922,81,3,3,1,0,0,1,1,1,10.256,3,0,6561,2.327863,1,3,1.098612,1.098612,1,3.2,10.24,1.0256 +0,.9661543,81,11,6,2,0,1,1,1,1,14.507,1,1,6561,2.674631,0,6,1.791759,1.791759,1,3.2,10.24,1.4507 +0,1,75,9,3,0,1,0,1,1,1,6.2,3,0,5625,1.824549,1,3,1.098612,1.098612,1,2,4,.61999998 +0,.5945946,70,6,2,0,0,1,0,0,0,18.5,0,1,4900,2.917771,0,2,.6931472,.6931472,1,1,1,1.85 +0,.4202898,73,3,13,0,0,0,0,1,0,13.8,0,0,5329,2.624669,0,13,2.564949,2.564949,1,1.6,2.56,1.38 +0,.6170213,65,1,17,0,0,0,1,0,0,9.4,4,0,4225,2.24071,0,17,2.833213,2.833213,1,0,0,.93999996 +0,0,66,3,12,9,1,0,1,0,0,0,3,0,4356,,1,12,2.484907,2.484907,1,.2,.04,0 +0,.974077,83,11,22,0,0,1,1,1,0,14.003,1,1,6889,2.639271,0,22,3.091043,3.091043,1,3.6,12.96,1.4003 +0,.2144373,85,12,5,11,0,1,1,1,1,22.151,3,1,7225,3.097883,0,5,1.609438,1.609438,1,4,16,2.2150999 +0,.1963702,85,8,5,1,0,1,0,1,1,24.189,3,1,7225,3.185898,0,5,1.609438,1.609438,1,4,16,2.4188999 +0,.5515695,72,6,0,1,0,0,0,0,0,9.366,2,0,5184,2.237086,1,0,,-4.60517,0,1.4,1.96,.93660002 +0,.5515695,71,12,1,0,0,0,1,0,0,9.366,1,0,5041,2.237086,1,1,0,0,1,1.2,1.44,.93660002 +0,.7058824,72,8,7,1,0,0,1,1,0,10.2,2,0,5184,2.322388,0,7,1.94591,1.94591,1,1.4,1.96,1.02 +0,.993592,78,12,8,0,0,1,0,0,0,19.507,3,1,6084,2.970773,0,8,2.079442,2.079442,1,2.6,6.76,1.9507 +1,0,71,17,8,0,0,1,1,0,0,28.125,1,1,5041,3.336659,0,8,2.079442,2.079442,1,1.2,1.44,2.8125 +0,.3202277,78,12,18,3,0,1,1,0,0,33.726,2,1,6084,3.518269,1,18,2.890372,2.890372,1,2.6,6.76,3.3726002 +0,.3769826,65,16,8,0,0,1,0,1,0,57.878,3,1,4225,4.058337,0,8,2.079442,2.079442,1,0,0,5.7877998 +0,1,65,11,3,0,1,0,0,1,1,6.336,0,0,4225,1.846248,1,3,1.098612,1.098612,1,0,0,.6336 +0,1,81,12,11,0,1,0,1,1,1,7.2,6,0,6561,1.974081,1,11,2.397895,2.397895,1,3.2,10.24,.71999998 +0,.4977038,82,17,0,0,1,0,1,1,1,13.936,1,0,6724,2.634475,0,0,,-4.60517,0,3.4,11.56,1.3936 +0,.8571429,79,11,32,1,1,0,1,1,1,6.888,4,0,6241,1.929781,0,32,3.465736,3.465736,1,2.8,7.84,.6888 +0,.7772021,71,16,11,4,0,0,1,0,0,1.158,3,0,5041,.1466944,0,11,2.397895,2.397895,1,1.2,1.44,.1158 +0,.7772021,72,16,14,3,0,0,0,0,0,1.158,2,0,5184,.1466944,0,14,2.639057,2.639057,1,1.4,1.96,.1158 +0,1,85,12,0,0,0,0,1,1,1,5.755,3,0,7225,1.750069,1,0,,-4.60517,0,4,16,.57550001 +0,1,73,12,6,0,0,1,0,1,0,10,3,1,5329,2.302585,0,6,1.791759,1.791759,1,1.6,2.56,1 +0,1,67,12,5,7,0,1,1,1,1,10,3,1,4489,2.302585,0,5,1.609438,1.609438,1,.4,.16,1 +0,.3877453,66,12,4,0,0,1,1,0,0,29.197,0,1,4356,3.374066,0,4,1.386294,1.386294,1,.2,.04,2.9197001 +0,0,73,2,4,0,1,0,1,1,0,3.5,2,0,5329,1.252763,1,4,1.386294,1.386294,1,1.6,2.56,.35 +0,0,75,6,3,0,1,0,0,0,0,8.4,2,0,5625,2.128232,1,3,1.098612,1.098612,1,2,4,.83999996 +0,.8883625,81,12,9,1,0,1,1,0,0,10.131,1,1,6561,2.3156,0,9,2.197225,2.197225,1,3.2,10.24,1.0131 +0,.8883625,81,14,13,2,0,1,0,0,0,10.131,1,1,6561,2.3156,0,13,2.564949,2.564949,1,3.2,10.24,1.0131 +0,.562766,66,12,26,41,0,0,1,0,0,38.771,2,0,4356,3.657673,0,26,3.258096,3.258096,1,.2,.04,3.8771 +0,1,85,5,4,0,0,0,1,1,0,9,1,0,7225,2.197225,0,4,1.386294,1.386294,1,4,16,.9 +0,.999643,85,13,5,15,0,1,1,1,1,14.005,5,1,7225,2.639414,0,5,1.609438,1.609438,1,4,16,1.4005 +0,.4846128,85,10,11,0,0,1,1,1,1,20.829,5,1,7225,3.036346,0,11,2.397895,2.397895,1,4,16,2.0829 +0,.9627507,81,12,8,0,0,0,1,1,0,8.725,2,0,6561,2.166193,1,8,2.079442,2.079442,1,3.2,10.24,.87250004 +0,1,76,12,24,0,1,0,1,1,1,8.4,4,0,5776,2.128232,1,24,3.178054,3.178054,1,2.2,4.84,.83999996 +0,.4487307,72,14,0,0,0,1,0,0,0,21.153,0,1,5184,3.051782,0,0,,-4.60517,0,1.4,1.96,2.1153 +0,.7391304,66,12,15,7,0,0,0,0,0,11.5,2,0,4356,2.442347,1,15,2.70805,2.70805,1,.2,.04,1.15 +0,1,72,6,7,1,1,0,0,1,1,7.5,3,0,5184,2.014903,1,7,1.94591,1.94591,1,1.4,1.96,.75 +0,.9882353,79,12,8,2,0,0,1,0,0,8.5,2,0,6241,2.140066,0,8,2.079442,2.079442,1,2.8,7.84,.85 +0,1,83,12,13,0,0,1,0,0,0,12,2,1,6889,2.484907,0,13,2.564949,2.564949,1,3.6,12.96,1.2 +0,.4,80,5,19,7,1,0,1,1,1,6,1,0,6400,1.791759,1,19,2.944439,2.944439,1,3,9,.6 +0,.7629336,70,15,3,4,0,1,1,0,0,23.698,0,1,4900,3.165391,0,3,1.098612,1.098612,1,1,1,2.3698 +0,0,69,13,12,0,0,1,0,0,0,28.921,3,1,4761,3.364568,0,12,2.484907,2.484907,1,.8,.64,2.8921 +0,0,69,12,6,1,0,1,1,0,0,.07,2,1,4761,-2.65926,0,6,1.791759,1.791759,1,.8,.64,.007 +0,0,66,12,0,0,0,1,0,0,0,10.5,0,1,4356,2.351375,0,0,,-4.60517,0,.2,.04,1.05 +0,.9433962,85,12,13,3,0,1,0,1,0,13.25,3,1,7225,2.583997,0,13,2.564949,2.564949,1,4,16,1.325 +0,.9433962,85,16,5,1,0,1,1,0,0,13.25,2,1,7225,2.583997,0,5,1.609438,1.609438,1,4,16,1.325 +0,.5529772,85,12,17,2,0,1,0,1,1,9.136,4,1,7225,2.212223,0,17,2.833213,2.833213,1,4,16,.91359997 +0,.3811992,81,8,3,8,0,0,0,0,0,26.233,1,0,6561,3.267018,0,3,1.098612,1.098612,1,3.2,10.24,2.6233 +0,.3780575,84,12,4,2,0,0,1,0,0,26.451,0,0,7056,3.275294,0,4,1.386294,1.386294,1,3.8,14.44,2.6451 +0,.4830408,68,12,3,0,0,1,1,0,0,30.308,1,1,4624,3.411412,0,3,1.098612,1.098612,1,.6,.36,3.0308001 +0,0,73,8,1,0,0,0,1,0,0,8.489,1,0,5329,2.138771,1,1,0,0,1,1.6,2.56,.84890003 +0,1,77,11,10,1,0,1,0,0,0,21.669,2,1,5929,3.075883,0,10,2.302585,2.302585,1,2.4,5.76,2.1669001 +0,1,74,12,1,0,0,1,1,0,0,21.669,1,1,5476,3.075883,0,1,0,0,1,1.8,3.24,2.1669001 +0,0,85,4,12,0,1,0,1,1,1,1.794,2,0,7225,.5844478,1,12,2.484907,2.484907,1,4,16,.1794 +0,.1121932,82,12,7,1,0,0,1,0,0,25.67,2,0,6724,3.245323,0,7,1.94591,1.94591,1,3.4,11.56,2.567 +0,.4343891,73,8,0,1,0,0,1,0,0,17.68,0,0,5329,2.872434,1,0,,-4.60517,0,1.6,2.56,1.768 +0,.0745342,68,16,4,5,0,1,0,0,0,24.15,0,1,4624,3.184284,0,4,1.386294,1.386294,1,.6,.36,2.415 +0,.3919214,71,13,8,25,0,0,0,1,1,31.639,2,0,5041,3.454391,0,8,2.079442,2.079442,1,1.2,1.44,3.1639 +0,.3411487,84,14,9,0,0,1,1,0,0,24.183,2,1,7056,3.18565,0,9,2.197225,2.197225,1,3.8,14.44,2.4183001 +0,.3411487,85,16,6,0,0,1,0,0,0,24.183,2,1,7225,3.18565,0,6,1.791759,1.791759,1,4,16,2.4183001 +0,1,76,5,2,0,1,0,1,1,1,6.5,2,0,5776,1.871802,0,2,.6931472,.6931472,1,2.2,4.84,.65 +0,0,66,2,5,0,1,0,0,1,1,10.605,2,0,4356,2.361326,1,5,1.609438,1.609438,1,.2,.04,1.0605 +0,0,67,4,4,0,1,0,0,0,1,6.396,2,0,4489,1.855673,1,4,1.386294,1.386294,1,.4,.16,.63959999 +1,.198752,70,12,12,0,0,1,1,1,0,64.905,2,1,4900,4.172925,0,12,2.484907,2.484907,1,1,1,6.4904999 +0,0,82,14,4,0,0,1,1,1,1,1.446,4,1,6724,.3688011,0,4,1.386294,1.386294,1,3.4,11.56,.1446 +0,0,71,17,0,0,0,1,0,0,0,1.446,0,1,5041,.3688011,0,0,,-4.60517,0,1.2,1.44,.1446 +0,.748924,70,12,0,0,0,1,1,0,0,13.94,0,1,4900,2.634762,0,0,,-4.60517,0,1,1,1.394 +0,1,74,10,8,0,1,0,1,1,1,8.032,4,0,5476,2.083434,1,8,2.079442,2.079442,1,1.8,3.24,.80319996 +0,.4956858,68,9,4,0,1,0,1,1,1,13.444,3,0,4624,2.598533,1,4,1.386294,1.386294,1,.6,.36,1.3444 +0,.173913,70,12,2,3,0,1,0,1,0,46,2,1,4900,3.828641,0,2,.6931472,.6931472,1,1,1,4.6 +0,0,67,12,0,3,0,1,1,0,1,14,3,1,4489,2.639057,0,0,,-4.60517,0,.4,.16,1.4 +0,1,74,3,5,0,1,0,0,1,1,7.6,4,0,5476,2.028148,1,5,1.609438,1.609438,1,1.8,3.24,.75999999 +0,1,77,6,13,0,1,0,1,1,1,6.5,5,0,5929,1.871802,0,13,2.564949,2.564949,1,2.4,5.76,.65 +0,0,66,6,22,0,1,0,0,1,1,0,3,0,4356,,0,22,3.091043,3.091043,1,.2,.04,0 +0,.4,85,10,0,0,0,0,1,1,1,12,1,0,7225,2.484907,0,0,,-4.60517,0,4,16,1.2 +0,0,85,7,11,0,1,0,1,1,1,9.185,3,0,7225,2.217572,1,11,2.397895,2.397895,1,4,16,.91850004 +0,0,76,11,5,0,1,0,1,1,1,3,4,0,5776,1.098612,1,5,1.609438,1.609438,1,2.2,4.84,.3 +0,0,77,12,8,0,1,0,1,0,0,3.96,4,0,5929,1.376244,1,8,2.079442,2.079442,1,2.4,5.76,.396 +0,1,80,8,14,0,1,0,1,1,1,6.5,4,0,6400,1.871802,0,14,2.639057,2.639057,1,3,9,.65 +0,1,85,12,12,1,0,1,1,0,0,7,3,1,7225,1.94591,0,12,2.484907,2.484907,1,4,16,.7 +0,.9125475,82,12,3,0,0,0,0,1,0,6.575,1,0,6724,1.883275,0,3,1.098612,1.098612,1,3.4,11.56,.65749998 +0,.9125475,79,12,7,2,0,0,1,1,1,6.575,1,0,6241,1.883275,0,7,1.94591,1.94591,1,2.8,7.84,.65749998 +0,.9637681,79,12,15,9,0,0,1,1,1,8.28,1,0,6241,2.113843,0,15,2.70805,2.70805,1,2.8,7.84,.82799997 +0,.6244907,67,14,3,0,0,1,1,0,0,27.243,3,1,4489,3.304797,1,3,1.098612,1.098612,1,.4,.16,2.7243 +0,1,65,9,0,0,0,0,0,0,1,3.6,0,0,4225,1.280934,1,0,,-4.60517,0,0,0,.35999999 +0,.3757145,70,11,32,21,0,0,1,1,1,18.546,3,0,4900,2.920254,0,32,3.465736,3.465736,1,1,1,1.8546 +0,0,80,8,8,6,1,0,1,1,1,5.952,3,0,6400,1.783727,1,8,2.079442,2.079442,1,3,9,.59520001 +0,.1951702,68,10,2,3,0,1,1,0,0,9.607,1,1,4624,2.262492,0,2,.6931472,.6931472,1,.6,.36,.96070004 +0,.1951702,75,7,0,0,0,1,0,0,0,9.607,0,1,5625,2.262492,0,0,,-4.60517,0,2,4,.96070004 +0,.7909604,67,12,19,17,0,0,0,0,0,8.85,2,0,4489,2.180418,0,19,2.944439,2.944439,1,.4,.16,.88500004 +0,0,78,16,4,0,0,0,1,1,1,11.859,2,0,6084,2.473087,0,4,1.386294,1.386294,1,2.6,6.76,1.1859 +0,.4827934,75,12,9,1,0,0,1,1,1,29.727,3,0,5625,3.392056,0,9,2.197225,2.197225,1,2,4,2.9726999 +0,.8551881,80,12,5,0,0,1,1,1,0,14.032,2,1,6400,2.64134,0,5,1.609438,1.609438,1,3,9,1.4032 +1,.6962333,72,12,0,0,0,0,1,1,0,13.168,3,0,5184,2.57779,1,0,,-4.60517,0,1.4,1.96,1.3168 +0,.6374248,71,12,10,2,0,1,0,1,0,14.135,2,1,5041,2.648654,0,10,2.302585,2.302585,1,1.2,1.44,1.4135 +0,.3506494,73,16,15,1,1,0,1,1,0,15.4,3,0,5329,2.734367,0,15,2.70805,2.70805,1,1.6,2.56,1.54 +0,1,70,10,11,0,0,0,1,0,0,10.5,3,0,4900,2.351375,0,11,2.397895,2.397895,1,1,1,1.05 +0,.7307692,78,8,7,0,0,0,1,1,1,13,3,0,6084,2.564949,0,7,1.94591,1.94591,1,2.6,6.76,1.3 +0,.7307692,79,12,11,0,0,0,0,1,1,13,3,0,6241,2.564949,0,11,2.397895,2.397895,1,2.8,7.84,1.3 +0,.6576271,67,8,1,0,1,0,0,0,1,7.08,3,0,4489,1.957274,1,1,0,0,1,.4,.16,.70799999 +0,.8252664,69,8,2,0,0,0,1,1,0,6.57,2,0,4761,1.882514,1,2,.6931472,.6931472,1,.8,.64,.65700002 +0,.8651488,66,12,12,0,1,0,0,1,1,6.852,3,0,4356,1.924541,0,12,2.484907,2.484907,1,.2,.04,.68520002 +0,.3415884,85,12,3,0,0,1,0,1,0,35.13,3,1,7225,3.559056,0,3,1.098612,1.098612,1,4,16,3.5130001 +0,.3011564,71,16,1,2,0,0,1,0,0,12.452,0,0,5041,2.521881,0,1,0,0,1,1.2,1.44,1.2452 +0,3.210616,82,15,0,0,0,0,0,0,0,1.168,0,0,6724,.1552929,0,0,,-4.60517,0,3.4,11.56,.1168 +0,.5691519,77,7,2,0,0,0,0,1,1,26.355,0,0,5929,3.271658,0,2,.6931472,.6931472,1,2.4,5.76,2.6355 +0,.1964508,78,7,5,0,0,0,1,0,0,76.355,2,0,6084,4.335393,0,5,1.609438,1.609438,1,2.6,6.76,7.6355003 +0,.5714286,85,8,0,0,1,0,1,1,1,7,2,0,7225,1.94591,0,0,,-4.60517,0,4,16,.7 +0,.9836066,67,10,2,4,0,1,1,0,0,9.15,1,1,4489,2.213754,0,2,.6931472,.6931472,1,.4,.16,.91499996 +0,0,66,12,4,0,0,1,0,0,0,.888,1,1,4356,-.1187835,0,4,1.386294,1.386294,1,.2,.04,.0888 +0,.5294118,74,2,4,12,1,0,1,1,0,17,2,0,5476,2.833213,1,4,1.386294,1.386294,1,1.8,3.24,1.7 +0,1,75,12,1,0,1,0,1,1,1,8,3,0,5625,2.079442,1,1,0,0,1,2,4,.8 +0,1,84,12,6,1,0,0,0,0,0,4.032,3,0,7056,1.394263,0,6,1.791759,1.791759,1,3.8,14.44,.40320001 +0,.1078623,75,17,8,1,0,1,0,0,0,111.253,3,1,5625,4.711807,0,8,2.079442,2.079442,1,2,4,11.1253 +0,0,73,17,5,5,0,1,0,0,0,142.232,1,1,5329,4.957459,1,5,1.609438,1.609438,1,1.6,2.56,14.223199 +0,1,80,11,3,0,1,0,1,1,1,10,1,0,6400,2.302585,1,3,1.098612,1.098612,1,3,9,1 +0,.75,78,11,6,1,0,0,1,1,1,12,3,0,6084,2.484907,0,6,1.791759,1.791759,1,2.6,6.76,1.2 +0,.6240602,65,11,0,0,1,0,0,0,0,3.99,1,0,4225,1.383791,0,0,,-4.60517,0,0,0,.399 +0,1,73,11,24,21,0,0,1,0,0,10.601,2,0,5329,2.360948,0,24,3.178054,3.178054,1,1.6,2.56,1.0601 +0,.9464334,75,12,12,1,0,0,0,0,0,11.201,3,0,5625,2.416003,0,12,2.484907,2.484907,1,2,4,1.1201 +0,1,75,2,0,0,1,0,0,1,1,4.524,1,0,5625,1.509397,1,0,,-4.60517,0,2,4,.45240002 +0,1,81,9,1,0,0,0,1,0,0,3.708,1,0,6561,1.310493,1,1,0,0,1,3.2,10.24,.37079999 +0,1,73,10,1,0,0,0,1,1,0,8.736,3,0,5329,2.167452,1,1,0,0,1,1.6,2.56,.87360001 +0,.2166454,78,9,16,1,0,0,0,1,1,13.349,5,0,6084,2.591441,1,16,2.772589,2.772589,1,2.6,6.76,1.3349 +0,1,85,7,19,4,0,1,0,1,0,12.07,4,1,7225,2.490723,0,19,2.944439,2.944439,1,4,16,1.207 +0,1,80,8,13,4,0,1,1,1,0,12.07,4,1,6400,2.490723,0,13,2.564949,2.564949,1,3,9,1.207 +0,0,67,9,11,12,0,1,0,1,0,0,1,1,4489,,1,11,2.397895,2.397895,1,.4,.16,0 +0,1,66,12,6,0,0,0,1,1,1,8.7,5,0,4356,2.163323,1,6,1.791759,1.791759,1,.2,.04,.86999998 +0,.3179487,67,12,0,0,0,1,0,0,0,29.25,0,1,4489,3.37588,0,0,,-4.60517,0,.4,.16,2.925 +0,.5299146,66,12,2,1,0,1,1,0,0,17.55,0,1,4356,2.865054,0,2,.6931472,.6931472,1,.2,.04,1.7549999 +0,1,85,8,6,1,0,0,1,1,1,12,4,0,7225,2.484907,0,6,1.791759,1.791759,1,4,16,1.2 +0,1,74,6,1,1,0,0,1,0,0,5.4,0,0,5476,1.686399,1,1,0,0,1,1.8,3.24,.54000001 +0,.9370629,74,9,10,0,1,0,1,0,0,6.864,2,0,5476,1.92629,1,10,2.302585,2.302585,1,1.8,3.24,.68639998 +0,1,77,6,1,0,0,0,1,1,1,8,1,0,5929,2.079442,1,1,0,0,1,2.4,5.76,.8 +0,.3948171,85,16,6,59,0,1,1,1,0,31.488,2,1,7225,3.449607,0,6,1.791759,1.791759,1,4,16,3.1488001 +0,.6593407,69,12,4,1,0,1,1,0,0,18.2,1,1,4761,2.901422,0,4,1.386294,1.386294,1,.8,.64,1.8200001 +0,.4201681,84,17,5,0,0,1,0,0,0,35.7,2,1,7056,3.575151,0,5,1.609438,1.609438,1,3.8,14.44,3.5700001 +0,.5124261,66,12,0,2,0,1,1,0,0,27.563,1,1,4356,3.316474,0,0,,-4.60517,0,.2,.04,2.7563 +0,1,75,6,3,0,0,1,0,1,1,6,2,1,5625,1.791759,0,3,1.098612,1.098612,1,2,4,.6 +0,.3471419,73,11,4,0,0,1,1,0,0,17.284,0,1,5329,2.849781,0,4,1.386294,1.386294,1,1.6,2.56,1.7284 +0,.1431803,77,16,3,0,0,0,1,0,0,34.921,1,0,5929,3.553088,1,3,1.098612,1.098612,1,2.4,5.76,3.4921001 +0,0,72,14,9,3,0,1,1,1,0,.445,1,1,5184,-.809681,0,9,2.197225,2.197225,1,1.4,1.96,.0445 +0,0,85,8,5,0,0,0,1,1,1,5.64,1,0,7225,1.729884,0,5,1.609438,1.609438,1,4,16,.56399999 +0,1,72,10,11,15,1,0,0,1,1,12.912,3,0,5184,2.558157,0,11,2.397895,2.397895,1,1.4,1.96,1.2912 +0,.6456473,66,12,8,0,0,1,1,0,1,9.293,4,1,4356,2.229261,0,8,2.079442,2.079442,1,.2,.04,.92930002 +0,.6456473,71,12,12,0,0,1,0,0,1,9.293,1,1,5041,2.229261,0,12,2.484907,2.484907,1,1.2,1.44,.92930002 +0,1,72,11,18,0,0,0,1,1,1,5,5,0,5184,1.609438,1,18,2.890372,2.890372,1,1.4,1.96,.5 +0,.9995372,85,12,8,0,0,1,1,1,1,10.805,3,1,7225,2.380009,0,8,2.079442,2.079442,1,4,16,1.0805 +0,.2164301,81,17,26,3,0,1,1,1,1,43.968,1,1,6561,3.783462,0,26,3.258096,3.258096,1,3.2,10.24,4.3967999 +0,.8790323,67,10,0,1,0,1,0,0,0,12.4,0,1,4489,2.517696,0,0,,-4.60517,0,.4,.16,1.24 +0,0,78,2,10,0,1,0,0,1,1,6.768,5,0,6084,1.912206,1,10,2.302585,2.302585,1,2.6,6.76,.67680001 +0,1,84,14,5,9,0,1,1,0,0,5,2,1,7056,1.609438,0,5,1.609438,1.609438,1,3.8,14.44,.5 +0,1,69,12,5,1,1,0,1,1,1,6,2,0,4761,1.791759,0,5,1.609438,1.609438,1,.8,.64,.6 +0,.1968654,69,12,22,3,0,1,0,1,1,15.696,4,1,4761,2.753406,0,22,3.091043,3.091043,1,.8,.64,1.5696 +0,.1968654,68,12,3,3,0,1,1,0,0,15.696,2,1,4624,2.753406,0,3,1.098612,1.098612,1,.6,.36,1.5696 +0,.8655914,82,6,13,0,0,0,1,1,0,7.44,2,0,6724,2.006871,0,13,2.564949,2.564949,1,3.4,11.56,.74400001 +0,.3573629,82,16,3,1,0,1,1,0,0,40.575,1,1,6724,3.703152,0,3,1.098612,1.098612,1,3.4,11.56,4.0575001 +0,.3538052,72,14,11,0,0,1,0,1,0,40.983,3,1,5184,3.713157,0,11,2.397895,2.397895,1,1.4,1.96,4.0983002 +0,.996038,82,8,3,0,0,1,1,1,1,5.048,3,1,6724,1.618992,0,3,1.098612,1.098612,1,3.4,11.56,.50479999 +0,0,79,10,5,0,0,1,1,1,0,0,3,1,6241,,0,5,1.609438,1.609438,1,2.8,7.84,0 +0,0,71,8,0,0,0,0,0,0,0,0,0,0,5041,,0,0,,-4.60517,0,1.2,1.44,0 +0,1,65,5,0,12,0,0,1,0,0,2.988,3,0,4225,1.094604,1,0,,-4.60517,0,0,0,.29879999 +0,1,65,7,2,0,0,0,0,1,1,13,1,0,4225,2.564949,1,2,.6931472,.6931472,1,0,0,1.3 +0,.8086802,65,12,4,0,0,1,0,0,0,26.981,0,1,4225,3.295133,0,4,1.386294,1.386294,1,0,0,2.6981001 +0,1,72,2,6,6,0,0,1,0,0,.676,1,0,5184,-.3915622,1,6,1.791759,1.791759,1,1.4,1.96,.0676 +0,1,76,1,12,0,0,0,0,0,0,.676,1,0,5776,-.3915622,1,12,2.484907,2.484907,1,2.2,4.84,.0676 +0,.9431818,68,16,6,0,0,0,0,1,1,8.8,1,0,4624,2.174752,0,6,1.791759,1.791759,1,.6,.36,.88000002 +0,.9777211,67,12,8,0,0,1,0,0,0,11.76,1,1,4489,2.464704,0,8,2.079442,2.079442,1,.4,.16,1.176 +0,.9989575,67,11,7,0,0,0,1,0,0,11.51,0,0,4489,2.443216,0,7,1.94591,1.94591,1,.4,.16,1.151 +0,0,78,16,8,9,0,1,0,1,1,4.585,2,1,6084,1.52279,0,8,2.079442,2.079442,1,2.6,6.76,.4585 +0,0,76,12,13,8,0,1,1,1,1,4.585,4,1,5776,1.52279,0,13,2.564949,2.564949,1,2.2,4.84,.4585 +0,0,75,12,0,1,0,1,0,0,0,11.875,0,1,5625,2.474435,1,0,,-4.60517,0,2,4,1.1875 +0,.1441441,73,9,4,0,0,1,1,0,0,13.875,2,1,5329,2.630089,1,4,1.386294,1.386294,1,1.6,2.56,1.3875 +0,.9473684,85,8,5,0,0,1,1,1,1,9.5,1,1,7225,2.251292,0,5,1.609438,1.609438,1,4,16,.95 +0,0,66,8,11,0,1,0,1,0,0,7.831,3,0,4356,2.05809,1,11,2.397895,2.397895,1,.2,.04,.78309999 +0,.4573034,68,10,2,2,0,1,1,1,1,21.36,4,1,4624,3.06152,0,2,.6931472,.6931472,1,.6,.36,2.1360001 +0,.0572327,77,10,12,0,0,0,0,1,1,32.761,5,0,5929,3.489239,0,12,2.484907,2.484907,1,2.4,5.76,3.2761002 +0,.0577189,76,8,14,0,0,0,1,1,1,32.485,2,0,5776,3.480778,0,14,2.639057,2.639057,1,2.2,4.84,3.2485001 +0,.9546817,82,8,2,5,0,0,1,1,1,11.011,3,0,6724,2.398895,0,2,.6931472,.6931472,1,3.4,11.56,1.1011 +0,.9887218,70,14,3,0,0,0,0,1,0,9.576,4,0,4900,2.25926,0,3,1.098612,1.098612,1,1,1,.95760002 +0,1,71,12,2,0,0,0,0,1,1,31.064,2,0,5041,3.436049,0,2,.6931472,.6931472,1,1.2,1.44,3.1063999 +0,.6166938,68,12,4,0,0,0,0,0,1,17.216,1,0,4624,2.845839,0,4,1.386294,1.386294,1,.6,.36,1.7216 +0,.6166938,65,12,5,0,0,0,1,0,0,17.216,1,0,4225,2.845839,0,5,1.609438,1.609438,1,0,0,1.7216 +0,1,84,8,0,0,0,1,0,0,0,7.2,0,1,7056,1.974081,0,0,,-4.60517,0,3.8,14.44,.71999998 +0,1,75,12,0,0,0,1,1,1,1,11.972,2,1,5625,2.482571,0,0,,-4.60517,0,2,4,1.1972 +0,.9785429,77,12,0,0,0,1,1,0,0,19.807,0,1,5929,2.986035,0,0,,-4.60517,0,2.4,5.76,1.9806999 +0,.25,85,12,0,5,0,1,1,1,1,32,3,1,7225,3.465736,0,0,,-4.60517,0,4,16,3.2 +0,.7382199,75,12,17,4,1,0,0,0,0,9.168,1,0,5625,2.215719,0,17,2.833213,2.833213,1,2,4,.91680002 +0,1,73,9,10,1,0,1,1,0,0,8,3,1,5329,2.079442,0,10,2.302585,2.302585,1,1.6,2.56,.8 +0,.8392857,73,2,0,0,1,0,0,0,0,11.2,0,0,5329,2.415914,1,0,,-4.60517,0,1.6,2.56,1.12 +0,0,67,17,11,1,0,1,0,1,0,51.807,0,1,4489,3.947525,0,11,2.397895,2.397895,1,.4,.16,5.1806999 +0,1,74,12,0,0,0,0,1,0,0,8.724,1,0,5476,2.166078,0,0,,-4.60517,0,1.8,3.24,.8724 +0,1,85,14,4,1,0,0,1,0,1,7.2,2,0,7225,1.974081,1,4,1.386294,1.386294,1,4,16,.71999998 +0,.6678322,85,4,10,0,1,0,0,1,1,6.864,2,0,7225,1.92629,1,10,2.302585,2.302585,1,4,16,.68639998 +0,.3627636,85,15,5,1,0,1,0,1,1,54.581,1,1,7225,3.999686,0,5,1.609438,1.609438,1,4,16,5.4581001 +0,.9390315,77,8,0,1,0,0,0,0,0,13.712,2,0,5929,2.618271,1,0,,-4.60517,0,2.4,5.76,1.3712 +0,.695753,68,17,16,3,0,1,0,0,0,6.899,1,1,4624,1.931376,1,16,2.772589,2.772589,1,.6,.36,.68990002 +0,.0544406,76,17,9,13,0,1,1,1,1,40.411,3,1,5776,3.699102,1,9,2.197225,2.197225,1,2.2,4.84,4.0410999 +0,.7797203,67,12,16,0,1,0,1,1,1,6.864,4,0,4489,1.92629,0,16,2.772589,2.772589,1,.4,.16,.68639998 +0,.4729763,71,12,10,13,0,1,1,0,0,20.297,0,1,5041,3.010473,0,10,2.302585,2.302585,1,1.2,1.44,2.0297001 +0,.7218045,81,14,0,0,0,0,1,0,0,13.3,0,0,6561,2.587764,0,0,,-4.60517,0,3.2,10.24,1.33 +0,0,72,10,7,1,1,0,1,1,1,0,3,0,5184,,1,7,1.94591,1.94591,1,1.4,1.96,0 +0,.3891601,84,2,8,2,0,1,1,0,0,28.266,1,1,7056,3.34166,0,8,2.079442,2.079442,1,3.8,14.44,2.8266001 +0,0,68,8,4,0,1,0,0,1,1,0,1,0,4624,,1,4,1.386294,1.386294,1,.6,.36,0 +0,.3251728,67,16,6,3,0,0,0,0,0,24.59,1,0,4489,3.20234,0,6,1.791759,1.791759,1,.4,.16,2.459 +0,.339605,66,15,4,6,0,0,1,0,0,23.545,4,0,4356,3.158913,0,4,1.386294,1.386294,1,.2,.04,2.3545 +0,.3327556,78,16,4,0,0,1,0,1,1,28.85,4,1,6084,3.36211,1,4,1.386294,1.386294,1,2.6,6.76,2.885 +0,0,73,15,4,0,0,1,1,0,0,19.25,2,1,5329,2.957511,1,4,1.386294,1.386294,1,1.6,2.56,1.925 +0,.0191397,65,17,2,1,0,1,1,1,0,63.324,2,1,4225,4.148264,1,2,.6931472,.6931472,1,0,0,6.3324001 +0,1,83,9,8,0,0,1,0,0,0,6,2,1,6889,1.791759,1,8,2.079442,2.079442,1,3.6,12.96,.6 +0,.5042391,77,13,16,0,0,1,0,0,0,27.364,2,1,5929,3.309228,0,16,2.772589,2.772589,1,2.4,5.76,2.7364 +0,1,81,10,8,0,1,0,1,1,0,6.84,3,0,6561,1.922788,0,8,2.079442,2.079442,1,3.2,10.24,.68400002 +0,.4381883,65,10,1,0,0,0,0,0,0,19.252,0,0,4225,2.957615,0,1,0,0,1,0,0,1.9252001 +0,.2992383,77,11,7,0,0,1,0,0,0,3.676,2,1,5929,1.301825,0,7,1.94591,1.94591,1,2.4,5.76,.36760001 +0,.2992383,73,12,26,0,0,1,1,0,0,3.676,0,1,5329,1.301825,0,26,3.258096,3.258096,1,1.6,2.56,.36760001 +0,.4202323,73,17,17,1,0,1,0,0,0,26.176,3,1,5329,3.264843,0,17,2.833213,2.833213,1,1.6,2.56,2.6176001 +0,.4746494,69,12,4,2,0,1,1,0,0,23.175,2,1,4761,3.143074,0,4,1.386294,1.386294,1,.8,.64,2.3174999 +0,.296857,66,17,16,15,0,1,0,0,1,26.949,3,1,4356,3.293946,0,16,2.772589,2.772589,1,.2,.04,2.6948999 +0,.3211304,66,14,4,1,0,1,1,0,0,24.912,0,1,4356,3.21535,0,4,1.386294,1.386294,1,.2,.04,2.4912001 +0,0,82,11,4,0,0,1,0,0,0,0,1,1,6724,,0,4,1.386294,1.386294,1,3.4,11.56,0 +0,.5296988,67,6,0,0,0,0,1,0,0,16.802,0,0,4489,2.821498,0,0,,-4.60517,0,.4,.16,1.6802 +0,.8976587,82,8,8,14,0,0,0,1,1,9.781,1,0,6724,2.280442,0,8,2.079442,2.079442,1,3.4,11.56,.97810001 +0,.9777283,81,7,8,1,0,0,1,1,0,8.98,1,0,6561,2.195,0,8,2.079442,2.079442,1,3.2,10.24,.89799995 +0,.1850035,74,15,24,32,0,0,0,0,1,58.107,3,0,5476,4.062286,0,24,3.178054,3.178054,1,1.8,3.24,5.8106998 +0,.1863117,73,13,27,26,0,0,1,1,0,57.699,3,0,5329,4.05524,0,27,3.295837,3.295837,1,1.6,2.56,5.7699001 +0,0,76,10,13,1,0,1,1,1,1,8.5,4,1,5776,2.140066,0,13,2.564949,2.564949,1,2.2,4.84,.85 +0,0,72,6,4,0,1,0,1,1,1,7.831,4,0,5184,2.05809,1,4,1.386294,1.386294,1,1.4,1.96,.78309999 +0,.2514037,66,17,1,40,0,1,1,1,0,47.732,1,1,4356,3.865602,0,1,0,0,1,.2,.04,4.7731998 +0,1,78,12,10,5,1,0,0,1,1,8.001,3,0,6084,2.079566,0,10,2.302585,2.302585,1,2.6,6.76,.80010004 +0,1,85,4,14,0,1,0,1,1,1,6.224,4,0,7225,1.828413,1,14,2.639057,2.639057,1,4,16,.6224 +0,.36,79,8,1,0,0,0,1,1,0,12.5,1,0,6241,2.525729,1,1,0,0,1,2.8,7.84,1.25 +0,.9811938,85,9,0,0,0,1,0,0,0,6.115,0,1,7225,1.810745,0,0,,-4.60517,0,4,16,.61149998 +0,1,65,12,22,0,0,1,0,1,1,2.5,4,1,4225,.9162908,0,22,3.091043,3.091043,1,0,0,.25 +0,1,74,9,0,0,0,1,0,0,0,4,0,1,5476,1.386294,1,0,,-4.60517,0,1.8,3.24,.4 +0,.9267476,75,14,19,6,0,0,1,1,1,9.556,3,0,5625,2.257169,0,19,2.944439,2.944439,1,2,4,.95559998 +0,.852459,66,12,3,0,0,0,1,1,1,15.25,1,0,4356,2.72458,0,3,1.098612,1.098612,1,.2,.04,1.525 +0,.9836066,81,13,5,0,0,1,0,0,0,12.2,1,1,6561,2.501436,0,5,1.609438,1.609438,1,3.2,10.24,1.22 +0,.7142857,80,12,3,0,0,1,1,1,0,14,0,1,6400,2.639057,0,3,1.098612,1.098612,1,3,9,1.4 +0,1,85,14,0,0,0,0,1,1,1,12,0,0,7225,2.484907,0,0,,-4.60517,0,4,16,1.2 +0,.632737,68,12,11,1,0,0,0,0,0,30.632,2,0,4624,3.422045,0,11,2.397895,2.397895,1,.6,.36,3.0632 +0,1,77,8,8,0,0,0,1,1,1,10,2,0,5929,2.302585,1,8,2.079442,2.079442,1,2.4,5.76,1 +0,1,66,11,0,0,0,1,1,0,0,9,0,1,4356,2.197225,1,0,,-4.60517,0,.2,.04,.9 +1,.4449921,70,15,4,5,0,1,0,0,0,29.214,1,1,4900,3.374648,0,4,1.386294,1.386294,1,1,1,2.9214001 +0,.9838051,71,14,5,5,0,1,1,0,0,13.214,1,1,5041,2.581277,0,5,1.609438,1.609438,1,1.2,1.44,1.3214 +0,.7380952,78,12,29,0,0,1,1,1,1,12.6,3,1,6084,2.533697,0,29,3.367296,3.367296,1,2.6,6.76,1.26 +0,1,69,5,4,0,0,0,0,0,1,8.868,3,0,4761,2.182449,0,4,1.386294,1.386294,1,.8,.64,.8868 +0,1,70,8,7,2,1,0,1,1,1,8.868,3,0,4900,2.182449,0,7,1.94591,1.94591,1,1,1,.8868 +0,0,68,7,3,0,1,0,1,1,1,0,2,0,4624,,0,3,1.098612,1.098612,1,.6,.36,0 +0,.5247324,73,12,7,0,0,0,0,0,0,28.586,0,0,5329,3.352917,0,7,1.94591,1.94591,1,1.6,2.56,2.8586 +0,0,83,8,3,1,0,1,1,1,0,0,4,1,6889,,0,3,1.098612,1.098612,1,3.6,12.96,0 +1,.3140513,66,12,0,2,0,1,1,0,0,39.484,1,1,4356,3.675895,1,0,,-4.60517,0,.2,.04,3.9484001 +0,.2325461,71,12,7,0,0,1,0,0,0,38.702,0,1,5041,3.655891,0,7,1.94591,1.94591,1,1.2,1.44,3.8702 +0,.2325461,70,12,8,0,0,1,1,0,0,38.702,1,1,4900,3.655891,0,8,2.079442,2.079442,1,1,1,3.8702 +0,0,65,9,0,0,0,0,0,0,0,22,1,0,4225,3.091043,1,0,,-4.60517,0,0,0,2.2 +0,.8571429,81,12,3,0,0,1,1,1,1,7,2,1,6561,1.94591,0,3,1.098612,1.098612,1,3.2,10.24,.7 +0,.2215944,76,14,11,1,0,1,0,1,0,54.153,1,1,5776,3.991813,0,11,2.397895,2.397895,1,2.2,4.84,5.4153 +0,0,85,12,19,0,1,0,1,1,1,8,5,0,7225,2.079442,0,19,2.944439,2.944439,1,4,16,.8 +0,0,79,16,4,0,0,1,1,0,0,26.995,2,1,6241,3.295652,0,4,1.386294,1.386294,1,2.8,7.84,2.6995001 +0,.304013,80,12,12,2,0,1,0,0,0,44.406,1,1,6400,3.793375,0,12,2.484907,2.484907,1,3,9,4.4405998 +1,.2103918,71,12,0,0,0,1,1,0,0,64.166,0,1,5041,4.161473,0,0,,-4.60517,0,1.2,1.44,6.4166 +0,1,81,16,5,0,0,0,0,0,0,7,2,0,6561,1.94591,0,5,1.609438,1.609438,1,3.2,10.24,.7 +0,1,74,12,8,0,0,0,1,1,0,7,3,0,5476,1.94591,0,8,2.079442,2.079442,1,1.8,3.24,.7 +0,1,85,6,2,0,0,1,1,0,0,11.532,0,1,7225,2.445126,0,2,.6931472,.6931472,1,4,16,1.1532 +0,1,69,5,3,0,0,0,0,0,0,3.6,1,0,4761,1.280934,1,3,1.098612,1.098612,1,.8,.64,.35999999 +0,.2168675,73,1,7,0,0,0,1,0,0,16.6,2,0,5329,2.809403,1,7,1.94591,1.94591,1,1.6,2.56,1.66 +0,.0978576,65,17,8,1,0,1,0,0,0,69.407,1,1,4225,4.239988,0,8,2.079442,2.079442,1,0,0,6.9406998 +0,0,78,8,0,0,0,0,1,0,0,0,0,0,6084,,0,0,,-4.60517,0,2.6,6.76,0 +0,.2015869,70,14,3,1,0,1,0,0,0,18.275,0,1,4900,2.905534,0,3,1.098612,1.098612,1,1,1,1.8275 +0,.2015869,66,12,4,1,0,1,1,0,0,18.275,1,1,4356,2.905534,0,4,1.386294,1.386294,1,.2,.04,1.8275 +0,.3908285,85,12,4,0,0,0,1,1,1,15.352,3,0,7225,2.731246,0,4,1.386294,1.386294,1,4,16,1.5352 +0,.9952607,85,12,3,3,0,1,0,1,1,10.55,4,1,7225,2.356126,0,3,1.098612,1.098612,1,4,16,1.055 +0,.9952607,85,13,1,3,0,1,1,1,1,10.55,1,1,7225,2.356126,0,1,0,0,1,4,16,1.055 +0,.4128726,81,17,9,3,0,1,1,0,0,35.362,0,1,6561,3.565638,0,9,2.197225,2.197225,1,3.2,10.24,3.5362 +0,1,77,12,7,4,0,0,1,1,1,8.76,4,0,5929,2.170196,0,7,1.94591,1.94591,1,2.4,5.76,.87600002 +0,1,69,12,5,0,0,1,0,0,0,9.8,2,1,4761,2.282382,0,5,1.609438,1.609438,1,.8,.64,.98000002 +0,1,65,8,8,0,1,0,0,1,1,5.1,3,0,4225,1.629241,1,8,2.079442,2.079442,1,0,0,.50999999 +0,1,66,10,6,5,1,0,1,0,1,5,2,0,4356,1.609438,0,6,1.791759,1.791759,1,.2,.04,.5 +0,.5714286,68,16,6,2,0,1,0,0,0,21.35,2,1,4624,3.061052,0,6,1.791759,1.791759,1,.6,.36,2.135 +0,.2903183,85,12,2,1,0,1,1,1,1,68.201,3,1,7225,4.222459,0,2,.6931472,.6931472,1,4,16,6.8200996 +0,.1643365,81,16,12,0,0,0,1,0,0,59.439,4,0,6561,4.08495,0,12,2.484907,2.484907,1,3.2,10.24,5.9438999 +0,1,76,9,2,0,1,0,1,1,1,7,0,0,5776,1.94591,0,2,.6931472,.6931472,1,2.2,4.84,.7 +0,1,72,0,0,0,0,1,0,0,0,6.25,0,1,5184,1.832582,1,0,,-4.60517,0,1.4,1.96,.625 +0,.4135469,70,12,1,1,0,1,0,0,0,22.972,2,1,4900,3.134276,0,1,0,0,1,1,1,2.2972 +0,0,78,11,1,1,1,0,1,0,0,0,3,0,6084,,1,1,0,0,1,2.6,6.76,0 +0,.8275862,71,12,0,0,0,0,1,0,0,11.6,1,0,5041,2.451005,1,0,,-4.60517,0,1.2,1.44,1.16 +0,.6363636,66,14,34,0,0,1,1,1,1,13.2,4,1,4356,2.580217,1,34,3.526361,3.526361,1,.2,.04,1.32 +0,.3396226,79,5,5,1,0,0,0,0,0,10.6,2,0,6241,2.360854,0,5,1.609438,1.609438,1,2.8,7.84,1.06 +0,.3396226,72,12,0,0,0,0,1,0,0,10.6,0,0,5184,2.360854,0,0,,-4.60517,0,1.4,1.96,1.06 +0,.7289523,69,12,4,0,0,1,0,0,0,29.932,2,1,4761,3.398928,0,4,1.386294,1.386294,1,.8,.64,2.9931999 +0,.2166625,78,12,0,0,0,0,0,0,0,43.847,0,0,6084,3.780706,0,0,,-4.60517,0,2.6,6.76,4.3847 +0,1,83,1,4,0,0,1,0,0,1,19.694,4,1,6889,2.980314,0,4,1.386294,1.386294,1,3.6,12.96,1.9694 +0,1,78,14,6,0,0,0,0,0,0,12,1,0,6084,2.484907,0,6,1.791759,1.791759,1,2.6,6.76,1.2 +0,.541213,70,12,15,1,0,1,0,0,0,23.791,4,1,4900,3.169307,0,15,2.70805,2.70805,1,1,1,2.3791 +0,0,79,6,11,16,1,0,1,0,0,9.185,2,0,6241,2.217572,1,11,2.397895,2.397895,1,2.8,7.84,.91850004 +0,.2576877,69,12,0,0,0,1,1,0,0,23.284,0,1,4761,3.147766,0,0,,-4.60517,0,.8,.64,2.3284 +0,.2819019,66,12,0,5,0,1,0,0,0,21.284,1,1,4356,3.057956,0,0,,-4.60517,0,.2,.04,2.1284 +0,0,77,6,13,0,0,1,1,1,0,0,2,1,5929,,1,13,2.564949,2.564949,1,2.4,5.76,0 +0,0,81,12,4,0,1,0,1,1,1,8.712,2,0,6561,2.164701,1,4,1.386294,1.386294,1,3.2,10.24,.87119999 +0,.4998605,77,12,3,1,0,0,0,1,0,21.506,1,0,5929,3.068332,0,3,1.098612,1.098612,1,2.4,5.76,2.1506001 +0,.4998605,70,17,1,0,0,0,1,0,0,21.506,0,0,4900,3.068332,0,1,0,0,1,1,1,2.1506001 +0,.4825422,66,12,3,0,0,1,1,0,0,20.392,1,1,4356,3.015143,1,3,1.098612,1.098612,1,.2,.04,2.0392 +0,1,66,9,5,0,0,0,0,1,0,2.49,2,0,4356,.9122827,0,5,1.609438,1.609438,1,.2,.04,.249 +0,.7453416,85,9,0,0,0,0,0,0,0,8.05,1,0,7225,2.085672,1,0,,-4.60517,0,4,16,.80500002 +0,.1815431,79,9,2,0,0,0,1,0,0,33.05,1,0,6241,3.498022,1,2,.6931472,.6931472,1,2.8,7.84,3.3049999 +0,1,76,11,6,0,0,0,0,1,0,8.494,2,0,5776,2.13936,0,6,1.791759,1.791759,1,2.2,4.84,.84940004 +0,1,70,8,3,0,0,0,1,1,1,8.494,0,0,4900,2.13936,0,3,1.098612,1.098612,1,1,1,.84940004 +0,1,70,12,2,0,0,1,0,0,0,10,1,1,4900,2.302585,0,2,.6931472,.6931472,1,1,1,1 +0,.891647,75,12,21,0,0,1,1,1,0,14.019,1,1,5625,2.640414,0,21,3.044523,3.044523,1,2,4,1.4019 +1,.2777778,67,14,2,0,0,1,1,0,0,36,4,1,4489,3.583519,0,2,.6931472,.6931472,1,.4,.16,3.6 +0,.7872064,71,6,2,3,0,1,0,0,0,27.717,2,1,5041,3.322046,0,2,.6931472,.6931472,1,1.2,1.44,2.7716999 +0,1,77,11,2,6,0,0,1,0,0,10.2,1,0,5929,2.322388,1,2,.6931472,.6931472,1,2.4,5.76,1.02 +0,.8709122,74,11,24,14,0,0,1,1,1,13.944,5,0,5476,2.635049,0,24,3.178054,3.178054,1,1.8,3.24,1.3944 +0,1,65,14,5,1,0,1,0,0,0,4.698,2,1,4225,1.547137,0,5,1.609438,1.609438,1,0,0,.4698 +0,1,69,12,6,1,0,1,1,1,0,4.698,2,1,4761,1.547137,0,6,1.791759,1.791759,1,.8,.64,.4698 +1,.6599104,66,14,16,1,0,1,0,1,1,12.729,4,1,4356,2.543883,0,16,2.772589,2.772589,1,.2,.04,1.2729 +0,.3799075,68,16,5,8,0,1,1,0,0,31.355,2,1,4624,3.445374,0,5,1.609438,1.609438,1,.6,.36,3.1355 +0,0,67,3,14,0,1,0,0,1,1,6,3,0,4489,1.791759,1,14,2.639057,2.639057,1,.4,.16,.6 +0,.5,72,11,6,0,1,0,1,1,1,14.4,3,0,5184,2.667228,1,6,1.791759,1.791759,1,1.4,1.96,1.44 +0,1,69,12,1,0,0,0,1,0,0,6,1,0,4761,1.791759,0,1,0,0,1,.8,.64,.6 +0,.7106599,80,15,2,1,0,0,1,0,0,19.7,1,0,6400,2.980619,0,2,.6931472,.6931472,1,3,9,1.9700001 +0,.974026,68,10,20,1,0,1,0,1,1,12.32,7,1,4624,2.511224,0,20,2.995732,2.995732,1,.6,.36,1.232 +0,1,65,14,10,4,0,1,0,0,0,21.669,6,1,4225,3.075883,0,10,2.302585,2.302585,1,0,0,2.1669001 +0,.6785795,70,16,2,0,0,0,0,0,0,22.049,1,0,4900,3.093267,0,2,.6931472,.6931472,1,1,1,2.2049 +0,0,66,16,1,1,0,0,1,0,0,21.131,0,0,4356,3.050741,0,1,0,0,1,.2,.04,2.1131001 +0,0,68,10,1,0,1,0,1,1,1,6.36,4,0,4624,1.850028,1,1,0,0,1,.6,.36,.63600001 +0,.1610858,75,16,8,6,0,0,1,0,0,56.293,0,0,5625,4.03057,0,8,2.079442,2.079442,1,2,4,5.6292999 +0,1,68,8,6,0,1,0,1,1,1,8.148,4,0,4624,2.097772,1,6,1.791759,1.791759,1,.6,.36,.81479998 +0,.1877151,80,15,7,2,0,0,0,0,0,47.945,1,0,6400,3.870054,0,7,1.94591,1.94591,1,3,9,4.7945 +0,.1832173,74,15,4,4,0,0,1,0,0,49.122,2,0,5476,3.894307,0,4,1.386294,1.386294,1,1.8,3.24,4.9122002 +0,.5074854,76,10,5,0,1,0,1,1,0,11.823,1,0,5776,2.470047,0,5,1.609438,1.609438,1,2.2,4.84,1.1823 +0,1,68,8,9,0,1,0,1,1,1,6.5,2,0,4624,1.871802,0,9,2.197225,2.197225,1,.6,.36,.65 +0,.3284522,66,13,1,7,0,1,0,0,0,36.535,1,1,4356,3.598271,0,1,0,0,1,.2,.04,3.6535 +0,.471235,66,12,2,16,0,1,1,0,0,25.465,0,1,4356,3.237305,0,2,.6931472,.6931472,1,.2,.04,2.5465 +0,.652404,69,16,6,0,0,0,0,0,0,33.444,1,0,4761,3.509872,0,6,1.791759,1.791759,1,.8,.64,3.3444 +0,0,67,12,6,1,0,0,1,0,0,11.625,2,0,4489,2.453158,0,6,1.791759,1.791759,1,.4,.16,1.1625 +0,.3947773,68,6,10,0,0,1,1,1,0,23.436,1,1,4624,3.154273,0,10,2.302585,2.302585,1,.6,.36,2.3436001 +0,.7331711,77,12,3,1,0,0,1,0,0,24.66,3,0,5929,3.205183,0,3,1.098612,1.098612,1,2.4,5.76,2.466 +0,.3186097,67,12,3,1,0,1,0,0,0,34.525,2,1,4489,3.541684,0,3,1.098612,1.098612,1,.4,.16,3.4525002 +0,.8458904,72,10,9,5,1,0,1,1,0,7.008,1,0,5184,1.947052,0,9,2.197225,2.197225,1,1.4,1.96,.70079999 +0,0,68,6,0,0,0,0,0,0,0,2.5,0,0,4624,.9162908,1,0,,-4.60517,0,.6,.36,.25 +0,0,66,6,2,1,1,0,1,0,0,20,1,0,4356,2.995732,1,2,.6931472,.6931472,1,.2,.04,2 +0,0,85,4,15,0,1,0,1,1,1,4.416,2,0,7225,1.485234,1,15,2.70805,2.70805,1,4,16,.44159999 +0,.3376367,65,10,3,0,0,1,0,0,0,26.878,1,1,4225,3.291308,1,3,1.098612,1.098612,1,0,0,2.6878 +0,.9501148,82,7,7,10,0,0,1,1,1,12.188,2,0,6724,2.500452,0,7,1.94591,1.94591,1,3.4,11.56,1.2188 +0,.2875817,67,12,7,2,0,1,0,0,0,38.25,4,1,4489,3.644144,0,7,1.94591,1.94591,1,.4,.16,3.825 +0,.8673469,85,8,3,0,0,1,1,0,0,9.8,1,1,7225,2.282382,0,3,1.098612,1.098612,1,4,16,.98000002 +0,.7857143,76,10,32,0,1,0,1,1,1,7,3,0,5776,1.94591,1,32,3.465736,3.465736,1,2.2,4.84,.7 +0,.1252257,79,17,3,6,0,1,0,0,0,42.651,0,1,6241,3.753051,0,3,1.098612,1.098612,1,2.8,7.84,4.2651001 +0,.1511361,79,15,11,7,0,1,1,1,1,35.339,3,1,6241,3.564987,0,11,2.397895,2.397895,1,2.8,7.84,3.5339001 +0,.85695,70,11,4,0,0,1,1,1,0,8.892,3,1,4900,2.185152,0,4,1.386294,1.386294,1,1,1,.88920002 +0,.85695,75,7,6,0,0,1,0,1,0,8.892,2,1,5625,2.185152,0,6,1.791759,1.791759,1,2,4,.88920002 +0,1,73,10,4,1,0,0,1,1,1,10.5,2,0,5329,2.351375,0,4,1.386294,1.386294,1,1.6,2.56,1.05 +0,.6044553,73,11,10,0,0,1,0,0,0,14.724,2,1,5329,2.689479,0,10,2.302585,2.302585,1,1.6,2.56,1.4724 +0,.6435643,85,9,11,7,0,0,0,1,0,20.2,4,0,7225,3.005683,0,11,2.397895,2.397895,1,4,16,2.0200001 +0,.523077,70,12,1,1,0,1,0,1,1,16.25,1,1,4900,2.788093,0,1,0,0,1,1,1,1.625 +0,.2956522,70,12,1,0,0,1,1,0,0,28.75,2,1,4900,3.358638,0,1,0,0,1,1,1,2.875 +0,1,84,2,10,16,1,0,1,1,1,15,3,0,7056,2.70805,1,10,2.302585,2.302585,1,3.8,14.44,1.5 +0,1,85,12,0,0,0,0,1,1,1,8.364,1,0,7225,2.123937,1,0,,-4.60517,0,4,16,.83640003 +0,.8333333,82,10,1,6,0,0,1,0,0,12,1,0,6724,2.484907,0,1,0,0,1,3.4,11.56,1.2 +0,.625,71,3,4,1,1,0,0,0,1,4,3,0,5041,1.386294,1,4,1.386294,1.386294,1,1.2,1.44,.4 +0,.3225806,66,5,3,0,1,0,1,1,1,7.75,4,0,4356,2.047693,1,3,1.098612,1.098612,1,.2,.04,.775 +0,1,85,11,1,0,0,0,1,1,1,6.24,2,0,7225,1.83098,0,1,0,0,1,4,16,.62399998 +0,0,71,12,2,0,0,1,1,0,0,1.5,1,1,5041,.4054651,0,2,.6931472,.6931472,1,1.2,1.44,.15 +1,0,76,16,6,0,0,1,0,0,0,66.5,2,1,5776,4.197202,0,6,1.791759,1.791759,1,2.2,4.84,6.65 +0,.9562639,71,12,1,1,0,1,1,1,0,13.49,2,1,5041,2.601949,0,1,0,0,1,1.2,1.44,1.349 +0,1,85,8,8,1,0,1,0,0,0,10.088,2,1,7225,2.311347,0,8,2.079442,2.079442,1,4,16,1.0088 +0,.3939394,85,11,3,2,0,1,1,0,0,9.9,1,1,7225,2.292535,0,3,1.098612,1.098612,1,4,16,.98999996 +0,.4017226,76,15,2,1,0,0,1,1,0,29.722,0,0,5776,3.391887,0,2,.6931472,.6931472,1,2.2,4.84,2.9722 +1,.3925234,66,11,9,1,1,0,1,1,0,12.84,5,0,4356,2.552565,1,9,2.197225,2.197225,1,.2,.04,1.284 +0,.4653417,73,17,20,3,0,1,0,0,0,10.315,3,1,5329,2.333599,0,20,2.995732,2.995732,1,1.6,2.56,1.0315 +0,.375,68,12,1,0,0,1,1,1,0,16,2,1,4624,2.772589,0,1,0,0,1,.6,.36,1.6 +0,1,83,11,13,0,1,0,1,1,1,7.404,4,0,6889,2.00202,0,13,2.564949,2.564949,1,3.6,12.96,.74039998 +0,0,85,12,7,0,1,0,1,1,1,6.768,3,0,7225,1.912206,1,7,1.94591,1.94591,1,4,16,.67680001 +0,1,85,8,5,0,0,0,1,1,0,9.6,1,0,7225,2.261763,0,5,1.609438,1.609438,1,4,16,.96000004 +0,.1643609,77,16,6,5,0,0,0,0,0,69.968,3,0,5929,4.248038,0,6,1.791759,1.791759,1,2.4,5.76,6.9968002 +0,.1764913,76,14,1,6,0,0,1,0,0,65.159,2,0,5776,4.17683,0,1,0,0,1,2.2,4.84,6.5158997 +0,1,79,16,3,0,0,1,1,1,1,10,0,1,6241,2.302585,0,3,1.098612,1.098612,1,2.8,7.84,1 +0,.1699411,65,12,2,0,0,1,0,0,0,50.9,1,1,4225,3.929863,0,2,.6931472,.6931472,1,0,0,5.0900002 +0,.2431748,74,16,9,1,0,0,1,1,0,16.593,3,0,5476,2.808981,0,9,2.197225,2.197225,1,1.8,3.24,1.6593 +0,.2529146,77,17,11,2,0,1,0,0,0,15.954,0,1,5929,2.76971,0,11,2.397895,2.397895,1,2.4,5.76,1.5954 +0,1,73,12,11,0,0,0,0,1,0,8.724,3,0,5329,2.166078,0,11,2.397895,2.397895,1,1.6,2.56,.8724 +0,.5172414,77,14,4,0,0,0,0,1,1,14.5,2,0,5929,2.674149,0,4,1.386294,1.386294,1,2.4,5.76,1.45 +0,1,67,6,2,0,1,0,1,0,0,10.8,2,0,4489,2.379546,1,2,.6931472,.6931472,1,.4,.16,1.08 +0,.9817385,73,11,5,0,0,0,1,1,1,8.214,3,0,5329,2.10584,0,5,1.609438,1.609438,1,1.6,2.56,.82139997 +0,.4666667,74,16,2,0,0,1,0,0,0,22.5,0,1,5476,3.113515,0,2,.6931472,.6931472,1,1.8,3.24,2.25 +0,.4666667,69,14,1,0,0,1,1,0,0,22.5,0,1,4761,3.113515,0,1,0,0,1,.8,.64,2.25 +0,.5,81,9,4,0,0,0,1,1,1,24,2,0,6561,3.178054,0,4,1.386294,1.386294,1,3.2,10.24,2.4 +0,.5425649,71,14,6,0,0,1,0,0,0,27.37,1,1,5041,3.309448,0,6,1.791759,1.791759,1,1.2,1.44,2.7370001 +0,.3414368,70,17,13,7,0,1,1,1,1,29.288,4,1,4900,3.377178,0,13,2.564949,2.564949,1,1,1,2.9288 +0,.3384477,71,15,1,1,0,1,0,0,0,44.32,1,1,5041,3.791436,0,1,0,0,1,1.2,1.44,4.432 +0,.7175452,76,12,4,3,0,1,1,1,0,15.252,0,1,5776,2.724711,0,4,1.386294,1.386294,1,2.2,4.84,1.5252 +0,0,74,0,17,0,1,0,1,1,1,6,0,0,5476,1.791759,1,17,2.833213,2.833213,1,1.8,3.24,.6 +0,.4077418,82,12,13,0,0,1,1,0,0,26.919,1,1,6724,3.292832,0,13,2.564949,2.564949,1,3.4,11.56,2.6919001 +0,0,71,2,24,0,1,0,0,0,1,0,4,0,5041,,1,24,3.178054,3.178054,1,1.2,1.44,0 +0,.4875819,70,12,8,0,1,0,0,1,1,19.689,5,0,4900,2.98006,0,8,2.079442,2.079442,1,1,1,1.9688999 +0,.4434191,69,8,0,1,0,0,1,0,0,24.708,2,0,4761,3.207127,1,0,,-4.60517,0,.8,.64,2.4708 +0,.0549819,80,12,9,4,0,1,1,1,1,18.206,4,1,6400,2.901751,0,9,2.197225,2.197225,1,3,9,1.8205999 +0,1,75,9,4,0,0,1,0,0,1,2.952,3,1,5625,1.082483,0,4,1.386294,1.386294,1,2,4,.29519999 +0,1,82,8,12,0,1,0,1,1,1,5.4,3,0,6724,1.686399,0,12,2.484907,2.484907,1,3.4,11.56,.54000001 +0,0,72,3,2,0,0,0,0,0,0,0,2,0,5184,,1,2,.6931472,.6931472,1,1.4,1.96,0 +0,.9487666,79,11,12,0,1,0,1,1,1,6.324,3,0,6241,1.844352,1,12,2.484907,2.484907,1,2.8,7.84,.63239999 +0,0,85,0,0,0,1,0,1,1,1,9.337,2,0,7225,2.233985,1,0,,-4.60517,0,4,16,.93369999 +0,.4138793,65,17,12,5,0,1,1,0,0,24.007,0,1,4225,3.178345,0,12,2.484907,2.484907,1,0,0,2.4007 +0,.1181552,71,12,0,7,0,1,0,0,0,76.171,0,1,5041,4.332981,0,0,,-4.60517,0,1.2,1.44,7.6170998 +0,.537037,81,8,35,0,0,1,1,1,1,19.44,4,1,6561,2.967333,0,35,3.555348,3.555348,1,3.2,10.24,1.9440001 +0,0,81,15,3,0,0,1,1,1,0,.2,4,1,6561,-1.609438,0,3,1.098612,1.098612,1,3.2,10.24,.02 +1,.1579682,65,7,1,0,0,1,0,1,0,70.951,1,1,4225,4.26199,1,1,0,0,1,0,0,7.0950996 +0,.7954546,75,14,0,0,0,1,1,0,0,13.2,1,1,5625,2.580217,0,0,,-4.60517,0,2,4,1.32 +0,.8223684,81,12,15,1,0,1,1,1,1,15.2,1,1,6561,2.721295,0,15,2.70805,2.70805,1,3.2,10.24,1.52 +0,.626476,69,12,3,0,1,0,1,0,0,14.481,0,0,4761,2.672837,1,3,1.098612,1.098612,1,.8,.64,1.4481 +0,.4034425,71,10,4,8,0,1,1,0,0,24.633,0,1,5041,3.204087,0,4,1.386294,1.386294,1,1.2,1.44,2.4632999 +0,.4069115,70,10,1,4,0,1,0,0,0,24.423,1,1,4900,3.195525,0,1,0,0,1,1,1,2.4423 +0,.9974269,66,12,5,0,0,1,0,0,0,19.432,2,1,4356,2.966921,0,5,1.609438,1.609438,1,.2,.04,1.9431999 +0,.1935484,66,10,0,2,0,1,1,0,0,31,0,1,4356,3.433987,0,0,,-4.60517,0,.2,.04,3.1 +0,.1935484,69,10,4,0,0,1,0,0,0,31,0,1,4761,3.433987,0,4,1.386294,1.386294,1,.8,.64,3.1 +0,.880971,77,10,5,2,0,1,0,0,0,12.77,2,1,5929,2.547099,0,5,1.609438,1.609438,1,2.4,5.76,1.277 +0,.880971,75,11,7,4,0,1,1,0,0,12.77,0,1,5625,2.547099,0,7,1.94591,1.94591,1,2,4,1.277 +0,.7377599,70,12,1,0,0,1,0,0,0,14.91,0,1,4900,2.702032,0,1,0,0,1,1,1,1.491 +0,.7377599,66,12,1,0,0,1,1,1,0,14.91,1,1,4356,2.702032,0,1,0,0,1,.2,.04,1.491 +0,0,66,2,1,0,0,1,1,0,0,11.016,0,1,4356,2.399349,1,1,0,0,1,.2,.04,1.1016 +0,.2083816,74,15,6,7,0,1,1,0,0,43.19,1,1,5476,3.765609,0,6,1.791759,1.791759,1,1.8,3.24,4.3189999 +0,.2037905,75,17,10,5,0,1,0,0,0,44.163,1,1,5625,3.787887,0,10,2.302585,2.302585,1,2,4,4.4162998 +0,.2614137,73,12,9,2,0,1,0,0,0,25.408,2,1,5329,3.235064,0,9,2.197225,2.197225,1,1.6,2.56,2.5408001 +0,.2656694,68,12,9,0,0,1,1,1,0,25.001,1,1,4624,3.218916,0,9,2.197225,2.197225,1,.6,.36,2.5000999 +0,.9130752,73,12,0,0,0,1,1,0,0,13.69,0,1,5329,2.616666,0,0,,-4.60517,0,1.6,2.56,1.369 +0,.2223811,83,13,0,6,0,0,0,1,0,62.955,1,0,6889,4.14242,0,0,,-4.60517,0,3.6,12.96,6.2955002 +0,.4390244,73,16,21,4,0,1,0,1,0,20.5,3,1,5329,3.020425,0,21,3.044523,3.044523,1,1.6,2.56,2.05 +0,.4390244,74,12,2,1,0,1,1,0,0,20.5,2,1,5476,3.020425,0,2,.6931472,.6931472,1,1.8,3.24,2.05 +0,.8918485,85,12,3,1,0,0,1,1,1,16.819,3,0,7225,2.822509,0,3,1.098612,1.098612,1,4,16,1.6819 +0,0,65,11,6,3,0,0,1,0,0,23.4,1,0,4225,3.152736,0,6,1.791759,1.791759,1,0,0,2.34 +0,0,68,12,0,0,0,1,0,0,0,19.297,1,1,4624,2.95995,0,0,,-4.60517,0,.6,.36,1.9297001 +0,0,67,13,1,4,0,1,1,0,0,12.821,1,1,4489,2.551085,0,1,0,0,1,.4,.16,1.2821 +1,.2164502,78,12,1,0,0,1,1,0,0,36.96,1,1,6084,3.609836,1,1,0,0,1,2.6,6.76,3.6959999 +1,.4328358,65,6,6,1,0,1,0,1,1,33.5,4,1,4225,3.511545,0,6,1.791759,1.791759,1,0,0,3.35 +0,.9050593,79,12,14,32,0,0,1,0,0,11.049,3,0,6241,2.40234,0,14,2.639057,2.639057,1,2.8,7.84,1.1049 +0,.167336,66,12,4,2,0,1,0,1,0,35.856,1,1,4356,3.579511,1,4,1.386294,1.386294,1,.2,.04,3.5855999 +0,0,75,14,8,0,1,0,1,0,0,5.544,2,0,5625,1.712716,1,8,2.079442,2.079442,1,2,4,.55440001 +0,.5647559,67,16,12,3,0,1,1,0,0,14.13,2,1,4489,2.6483,0,12,2.484907,2.484907,1,.4,.16,1.413 +0,.2206126,69,17,5,4,0,1,0,0,0,36.172,1,1,4761,3.588285,0,5,1.609438,1.609438,1,.8,.64,3.6172001 +0,0,73,12,4,0,0,0,1,1,0,.75,3,0,5329,-.2876821,1,4,1.386294,1.386294,1,1.6,2.56,.075 +0,0,67,8,5,0,0,0,1,0,0,1.926,1,0,4489,.6554453,0,5,1.609438,1.609438,1,.4,.16,.1926 +0,.8709634,75,4,0,0,0,0,0,0,0,14.926,0,0,5625,2.703105,0,0,,-4.60517,0,2,4,1.4926 +0,.9969096,75,11,15,0,0,1,1,1,1,10.031,3,1,5625,2.30568,0,15,2.70805,2.70805,1,2,4,1.0031 +0,.3674676,81,12,1,3,0,1,1,1,1,34.833,2,1,6561,3.550565,0,1,0,0,1,3.2,10.24,3.4833 +0,.3666886,83,12,11,4,0,0,0,1,0,34.907,1,0,6889,3.552687,0,11,2.397895,2.397895,1,3.6,12.96,3.4907001 +0,.43478,77,11,6,1,0,0,0,0,0,50.184,0,0,5929,3.915696,0,6,1.791759,1.791759,1,2.4,5.76,5.0183998 +0,.785782,73,13,27,7,0,1,0,1,1,12.66,5,1,5329,2.538447,0,27,3.295837,3.295837,1,1.6,2.56,1.266 +0,.5590062,79,17,13,58,0,1,0,1,1,16.1,3,1,6241,2.778819,0,13,2.564949,2.564949,1,2.8,7.84,1.61 +0,.5590062,75,14,8,1,0,1,1,1,1,16.1,2,1,5625,2.778819,0,8,2.079442,2.079442,1,2,4,1.61 +0,.2240449,66,12,3,1,0,0,1,0,0,4.633,2,0,4356,1.533205,0,3,1.098612,1.098612,1,.2,.04,.46329999 +0,.159992,68,16,5,0,0,1,1,0,0,60.003,3,1,4624,4.094395,1,5,1.609438,1.609438,1,.6,.36,6.0002998 +0,.7914398,66,14,6,5,0,0,1,1,0,15.794,0,0,4356,2.75963,0,6,1.791759,1.791759,1,.2,.04,1.5794 +0,1,65,8,10,3,0,0,1,1,1,2.988,2,0,4225,1.094604,1,10,2.302585,2.302585,1,0,0,.29879999 +0,.8571429,74,5,0,0,1,0,1,0,0,7,0,0,5476,1.94591,1,0,,-4.60517,0,1.8,3.24,.7 +0,0,85,11,2,0,1,0,1,1,1,0,2,0,7225,,0,2,.6931472,.6931472,1,4,16,0 +0,.6075949,83,6,4,1,0,1,0,1,0,15.8,2,1,6889,2.76001,0,4,1.386294,1.386294,1,3.6,12.96,1.58 +0,.6075949,80,12,21,10,0,1,1,1,0,15.8,3,1,6400,2.76001,0,21,3.044523,3.044523,1,3,9,1.58 +0,.9694245,85,8,14,1,1,0,1,1,1,6.672,4,0,7225,1.89792,0,14,2.639057,2.639057,1,4,16,.66719999 +0,.5865922,66,3,0,0,0,0,0,0,0,14.32,2,0,4356,2.661657,1,0,,-4.60517,0,.2,.04,1.432 +0,.1679167,78,16,6,2,0,1,0,1,0,35.732,2,1,6084,3.576047,0,6,1.791759,1.791759,1,2.6,6.76,3.5731998 +0,.1798238,76,15,8,12,0,1,1,1,0,33.366,4,1,5776,3.507537,0,8,2.079442,2.079442,1,2.2,4.84,3.3366001 +0,.2977254,80,16,15,3,0,1,0,0,0,41.985,0,1,6400,3.737312,0,15,2.70805,2.70805,1,3,9,4.1985001 +0,.300647,79,13,15,4,0,0,1,1,1,41.577,4,0,6241,3.727547,0,15,2.70805,2.70805,1,2.8,7.84,4.1577 +0,.2756184,66,3,0,0,1,0,0,0,0,8.49,3,0,4356,2.138889,1,0,,-4.60517,0,.2,.04,.84899998 +0,0,68,12,10,1,0,1,1,0,0,31.603,2,1,4624,3.453252,0,10,2.302585,2.302585,1,.6,.36,3.1603001 +0,.5454546,66,7,2,0,1,0,1,1,1,9.9,2,0,4356,2.292535,0,2,.6931472,.6931472,1,.2,.04,.98999996 +0,.2976633,75,8,1,0,0,1,0,0,0,40.314,0,1,5625,3.696699,1,1,0,0,1,2,4,4.0313999 +0,.6923077,82,13,5,3,0,1,1,1,0,13,3,1,6724,2.564949,0,5,1.609438,1.609438,1,3.4,11.56,1.3 +0,1,75,8,5,0,1,0,1,0,0,4.8,1,0,5625,1.568616,1,5,1.609438,1.609438,1,2,4,.48000002 +0,.8163266,81,16,9,21,0,1,0,0,0,9.8,0,1,6561,2.282382,0,9,2.197225,2.197225,1,3.2,10.24,.98000002 +0,.8163266,79,12,41,5,0,1,1,1,1,9.8,1,1,6241,2.282382,0,41,3.713572,3.713572,1,2.8,7.84,.98000002 +1,.0625,65,7,1,0,0,1,0,0,0,19.2,1,1,4225,2.95491,0,1,0,0,1,0,0,1.9200001 +0,.6930007,84,13,3,0,0,1,1,1,1,11.544,0,1,7056,2.446166,0,3,1.098612,1.098612,1,3.8,14.44,1.1544 +0,.5549103,71,12,1,3,0,1,1,0,0,23.247,0,1,5041,3.146176,0,1,0,0,1,1.2,1.44,2.3247 +0,.6741573,72,14,6,4,0,0,1,0,0,13.35,2,0,5184,2.591516,0,6,1.791759,1.791759,1,1.4,1.96,1.335 +0,.315093,74,16,7,0,0,1,0,0,0,28.563,2,1,5476,3.352112,0,7,1.94591,1.94591,1,1.8,3.24,2.8563 +1,.4382818,75,11,6,0,0,1,0,0,0,41.252,1,1,5625,3.7197,0,6,1.791759,1.791759,1,2,4,4.1251999 +0,.2681913,73,16,24,15,0,1,1,0,0,26.455,4,1,5329,3.275445,0,24,3.178054,3.178054,1,1.6,2.56,2.6455 +0,.2643049,81,17,13,4,0,1,0,0,0,26.844,2,1,6561,3.290042,0,13,2.564949,2.564949,1,3.2,10.24,2.6844 +0,0,67,9,9,0,0,1,0,1,1,26,3,1,4489,3.258096,0,9,2.197225,2.197225,1,.4,.16,2.6 +0,1,85,8,4,0,0,1,1,1,1,12,4,1,7225,2.484907,0,4,1.386294,1.386294,1,4,16,1.2 +1,.2483642,65,6,5,0,0,1,0,0,0,36.986,2,1,4225,3.610539,1,5,1.609438,1.609438,1,0,0,3.6986 +0,.8286327,85,8,0,0,0,0,1,1,0,5.602,1,0,7225,1.723124,1,0,,-4.60517,0,4,16,.56020002 +0,.628443,83,14,10,1,0,0,1,1,0,13.796,2,0,6889,2.624379,0,10,2.302585,2.302585,1,3.6,12.96,1.3796 +0,0,83,7,2,0,1,0,0,0,0,8.007,1,0,6889,2.080316,0,2,.6931472,.6931472,1,3.6,12.96,.8007 +0,.2714932,78,8,0,0,0,1,0,0,0,55.25,1,1,6084,4.011868,0,0,,-4.60517,0,2.6,6.76,5.525 +0,.0839563,80,15,1,0,0,1,1,0,0,153.437,1,1,6400,5.03329,0,1,0,0,1,3,9,15.3437 +0,.984665,85,9,10,0,1,0,0,1,1,6.195,4,0,7225,1.823743,1,10,2.302585,2.302585,1,4,16,.61950002 +0,.9757634,85,11,8,0,0,0,1,0,0,8.252,2,0,7225,2.110456,0,8,2.079442,2.079442,1,4,16,.82519999 +0,.500775,82,12,4,4,0,0,1,0,0,16.774,1,0,6724,2.81983,0,4,1.386294,1.386294,1,3.4,11.56,1.6774 +0,.9944994,66,12,4,2,0,1,1,0,0,18.18,2,1,4356,2.900322,0,4,1.386294,1.386294,1,.2,.04,1.818 +0,.2488646,77,8,15,1,0,0,0,0,0,48.219,1,0,5929,3.875753,0,15,2.70805,2.70805,1,2.4,5.76,4.8219002 +0,.5086963,67,17,6,1,0,0,0,0,0,42.892,2,0,4489,3.758685,0,6,1.791759,1.791759,1,.4,.16,4.2891998 +0,.516475,68,14,7,1,0,0,1,0,0,42.246,2,0,4624,3.74351,0,7,1.94591,1.94591,1,.6,.36,4.2245998 +0,.3026024,82,12,5,7,0,1,1,1,1,19.828,3,1,6724,2.987095,1,5,1.609438,1.609438,1,3.4,11.56,1.9827999 +0,1,85,12,2,7,0,1,1,1,1,11,3,1,7225,2.397895,0,2,.6931472,.6931472,1,4,16,1.1 +0,.467495,80,8,1,0,1,0,1,1,1,4.507,1,0,6400,1.505632,0,1,0,0,1,3,9,.4507 +0,0,80,17,2,0,0,1,1,1,1,0,2,1,6400,,1,2,.6931472,.6931472,1,3,9,0 +0,.3506416,69,12,2,0,0,0,1,0,0,51.748,1,0,4761,3.946386,1,2,.6931472,.6931472,1,.8,.64,5.1748001 +0,1,75,8,5,0,0,1,1,0,0,8,1,1,5625,2.079442,1,5,1.609438,1.609438,1,2,4,.8 +0,.9643977,85,12,2,0,0,1,1,1,1,12.443,4,1,7225,2.521158,0,2,.6931472,.6931472,1,4,16,1.2443 +0,.4458432,76,14,8,1,0,1,0,1,0,30.504,3,1,5776,3.417858,0,8,2.079442,2.079442,1,2.2,4.84,3.0504 +0,.4249469,74,13,15,8,0,1,1,0,0,32.004,1,1,5476,3.465861,0,15,2.70805,2.70805,1,1.8,3.24,3.2004002 +0,.4400848,76,4,0,0,0,0,0,0,0,5.658,0,0,5776,1.73307,1,0,,-4.60517,0,2.2,4.84,.5658 +0,.775,73,3,4,0,0,0,1,0,0,10,4,0,5329,2.302585,1,4,1.386294,1.386294,1,1.6,2.56,1 +0,.775,76,4,0,0,0,0,0,0,0,10,0,0,5776,2.302585,1,0,,-4.60517,0,2.2,4.84,1 +0,.2735026,79,16,25,5,0,1,0,1,1,40.219,4,1,6241,3.69434,0,25,3.218876,3.218876,1,2.8,7.84,4.0219002 +0,.9707329,85,14,8,2,0,0,1,1,1,8.542,4,0,7225,2.144995,0,8,2.079442,2.079442,1,4,16,.85419998 +0,.5517454,67,12,8,0,0,1,0,1,1,35.694,2,1,4489,3.574983,0,8,2.079442,2.079442,1,.4,.16,3.5694 +0,.8696597,85,14,1,0,0,1,1,1,0,9.199,1,1,7225,2.219095,0,1,0,0,1,4,16,.91990004 +1,0,72,4,1,0,0,1,0,0,0,27.068,2,1,5184,3.298352,0,1,0,0,1,1.4,1.96,2.7068001 +1,.2803176,67,14,6,0,0,1,0,1,0,69.143,0,1,4489,4.236177,0,6,1.791759,1.791759,1,.4,.16,6.9142998 +0,0,85,12,1,0,0,1,1,1,1,0,0,1,7225,,0,1,0,0,1,4,16,0 +0,1,82,12,19,0,1,0,1,1,1,3.708,6,0,6724,1.310493,1,19,2.944439,2.944439,1,3.4,11.56,.37079999 +0,.1194487,65,10,18,4,0,1,1,1,1,11.754,1,1,4225,2.464194,0,18,2.890372,2.890372,1,0,0,1.1754 +0,0,69,17,5,5,0,1,1,1,0,100.141,2,1,4761,4.606579,0,5,1.609438,1.609438,1,.8,.64,10.0141 +0,.48504,85,15,6,0,0,1,1,0,0,19.619,0,1,7225,2.976498,0,6,1.791759,1.791759,1,4,16,1.9618999 +0,1,74,9,0,0,0,0,1,1,1,5.04,3,0,5476,1.617406,1,0,,-4.60517,0,1.8,3.24,.504 +0,.965251,79,6,12,0,1,0,0,0,0,6.216,1,0,6241,1.827127,1,12,2.484907,2.484907,1,2.8,7.84,.62160001 +0,.845815,70,12,31,3,0,0,0,0,0,11.35,1,0,4900,2.429218,0,31,3.433987,3.433987,1,1,1,1.135 +0,.845815,71,12,0,0,0,0,1,0,0,11.35,0,0,5041,2.429218,0,0,,-4.60517,0,1.2,1.44,1.135 +0,1,75,9,7,5,1,0,1,1,1,3.2,3,0,5625,1.163151,0,7,1.94591,1.94591,1,2,4,.32 +0,0,76,10,9,1,1,0,1,1,0,7.2,2,0,5776,1.974081,0,9,2.197225,2.197225,1,2.2,4.84,.71999998 +0,0,80,7,8,0,0,0,1,0,0,6.164,2,0,6400,1.818726,1,8,2.079442,2.079442,1,3,9,.6164 +0,0,71,8,14,1,0,0,1,0,0,5.888,2,0,5041,1.772916,1,14,2.639057,2.639057,1,1.2,1.44,.5888 +0,.612503,72,9,5,0,0,1,1,0,0,12.653,2,1,5184,2.537894,1,5,1.609438,1.609438,1,1.4,1.96,1.2653 +0,.612503,79,8,3,0,0,1,0,0,0,12.653,1,1,6241,2.537894,1,3,1.098612,1.098612,1,2.8,7.84,1.2653 +0,0,85,6,19,0,1,0,0,1,0,4.8,1,0,7225,1.568616,1,19,2.944439,2.944439,1,4,16,.48000002 +0,0,82,11,12,0,1,0,1,1,0,4.8,5,0,6724,1.568616,1,12,2.484907,2.484907,1,3.4,11.56,.48000002 +1,.1967222,68,15,9,0,0,1,0,0,0,72.488,1,1,4624,4.283421,0,9,2.197225,2.197225,1,.6,.36,7.2487999 +0,1,72,3,3,0,1,0,0,0,0,6.8,2,0,5184,1.916923,1,3,1.098612,1.098612,1,1.4,1.96,.68000002 +0,.3333333,75,11,8,2,0,1,1,0,0,37.5,0,1,5625,3.624341,0,8,2.079442,2.079442,1,2,4,3.75 +0,1,80,10,10,3,0,1,0,0,0,12.5,1,1,6400,2.525729,0,10,2.302585,2.302585,1,3,9,1.25 +0,.3972713,76,16,37,2,0,1,0,1,1,49.84,5,1,5776,3.908818,0,37,3.610918,3.610918,1,2.2,4.84,4.984 +0,.5938864,70,11,9,0,0,1,0,1,1,17.175,4,1,4900,2.843455,0,9,2.197225,2.197225,1,1,1,1.7174999 +0,.5006135,67,10,7,2,0,1,1,1,1,20.375,3,1,4489,3.014309,0,7,1.94591,1.94591,1,.4,.16,2.0375 +0,.266159,67,16,9,4,0,1,0,0,0,54.103,3,1,4489,3.99089,0,9,2.197225,2.197225,1,.4,.16,5.4103001 +0,.9422907,80,12,2,15,0,0,1,0,0,14.729,2,0,6400,2.689818,0,2,.6931472,.6931472,1,3,9,1.4729 +0,.8440413,68,12,11,3,0,1,1,0,0,7.938,2,1,4624,2.071661,1,11,2.397895,2.397895,1,.6,.36,.79380002 +0,0,65,17,12,5,0,1,0,0,0,0,2,1,4225,,0,12,2.484907,2.484907,1,0,0,0 +0,.5,70,11,7,0,1,0,0,1,0,17.4,0,0,4900,2.85647,0,7,1.94591,1.94591,1,1,1,1.74 +0,.6503497,80,8,12,0,0,0,0,1,1,8.58,2,0,6400,2.149434,0,12,2.484907,2.484907,1,3,9,.85799999 +0,0,76,9,18,3,0,1,0,0,0,16.256,1,1,5776,2.788462,0,18,2.890372,2.890372,1,2.2,4.84,1.6256001 +0,0,73,12,5,2,0,1,1,0,0,14.204,1,1,5329,2.653524,0,5,1.609438,1.609438,1,1.6,2.56,1.4204 +0,.3377483,72,12,4,0,0,1,0,1,1,22.65,3,1,5184,3.12016,1,4,1.386294,1.386294,1,1.4,1.96,2.265 +0,.3377483,73,13,2,1,0,1,1,1,1,22.65,3,1,5329,3.12016,1,2,.6931472,.6931472,1,1.6,2.56,2.265 +0,0,70,8,9,0,0,1,0,0,0,17.438,3,1,4900,2.858652,1,9,2.197225,2.197225,1,1,1,1.7438 +0,.8230088,85,12,6,0,0,1,1,1,1,11.3,0,1,7225,2.424803,0,6,1.791759,1.791759,1,4,16,1.13 +0,.5575221,72,8,6,2,0,1,1,1,1,13.56,3,1,5184,2.607124,0,6,1.791759,1.791759,1,1.4,1.96,1.356 +0,.7587013,65,12,0,0,0,1,0,0,0,11.119,3,1,4225,2.408655,0,0,,-4.60517,0,0,0,1.1119 +0,.3983942,69,16,4,0,0,0,0,0,0,32.631,0,0,4761,3.485263,0,4,1.386294,1.386294,1,.8,.64,3.2631001 +0,.1831549,68,16,4,2,0,1,0,0,0,46.245,1,1,4624,3.833953,0,4,1.386294,1.386294,1,.6,.36,4.6244999 +0,1,72,2,0,0,1,0,1,0,0,7,2,0,5184,1.94591,1,0,,-4.60517,0,1.4,1.96,.7 +0,.3116172,65,17,21,1,0,1,0,0,0,46.018,3,1,4225,3.829033,0,21,3.044523,3.044523,1,0,0,4.6018002 +0,.3116172,65,13,3,2,0,1,1,0,0,46.018,3,1,4225,3.829033,0,3,1.098612,1.098612,1,0,0,4.6018002 +0,.8453039,65,6,3,0,1,0,0,1,1,8.688,4,0,4225,2.161943,0,3,1.098612,1.098612,1,0,0,.86879997 +0,1,77,5,8,1,0,0,1,1,1,7.404,2,0,5929,2.00202,0,8,2.079442,2.079442,1,2.4,5.76,.74039998 +0,.8058297,77,12,12,51,0,0,0,0,0,10.841,1,0,5929,2.383335,0,12,2.484907,2.484907,1,2.4,5.76,1.0841 +0,.8058297,78,13,9,9,0,0,1,1,0,10.841,2,0,6084,2.383335,0,9,2.197225,2.197225,1,2.6,6.76,1.0841 +0,.8240563,73,3,6,0,1,0,1,1,1,9.378,2,0,5329,2.238367,1,6,1.791759,1.791759,1,1.6,2.56,.93780003 +0,.8022923,81,11,9,1,1,0,1,1,1,13.96,4,0,6561,2.636196,0,9,2.197225,2.197225,1,3.2,10.24,1.396 +0,0,79,11,9,0,0,1,1,1,1,.425,4,1,6241,-.8556661,0,9,2.197225,2.197225,1,2.8,7.84,.0425 +0,0,85,9,1,0,0,1,0,1,0,.425,3,1,7225,-.8556661,0,1,0,0,1,4,16,.0425 +0,.4611249,71,8,4,0,0,1,0,0,0,42.032,3,1,5041,3.738431,0,4,1.386294,1.386294,1,1.2,1.44,4.2032001 +0,1,66,12,1,0,0,0,1,1,0,12,1,0,4356,2.484907,0,1,0,0,1,.2,.04,1.2 +0,1,85,9,13,0,1,0,1,1,1,5.904,2,0,7225,1.77563,0,13,2.564949,2.564949,1,4,16,.59039998 +0,.2124078,68,12,6,8,0,1,1,1,0,17.344,3,1,4624,2.853247,0,6,1.791759,1.791759,1,.6,.36,1.7344 +0,.1667798,65,12,3,1,0,1,0,0,1,22.089,3,1,4225,3.09508,0,3,1.098612,1.098612,1,0,0,2.2089001 +0,.9749303,83,7,7,0,1,0,0,1,1,4.308,2,0,6889,1.460474,1,7,1.94591,1.94591,1,3.6,12.96,.43080001 +0,.4127358,77,9,14,0,1,0,1,1,0,10.176,1,0,5929,2.320032,1,14,2.639057,2.639057,1,2.4,5.76,1.0176 +0,1,81,7,4,0,1,0,1,0,0,6.624,0,0,6561,1.890699,1,4,1.386294,1.386294,1,3.2,10.24,.66240001 +0,1,85,2,3,0,0,0,0,1,0,9,3,0,7225,2.197225,1,3,1.098612,1.098612,1,4,16,.9 +0,.4865983,80,12,1,0,0,1,0,1,1,24.661,3,1,6400,3.205223,0,1,0,0,1,3,9,2.4660999 +0,.2540466,74,12,5,1,0,1,0,1,0,39.725,1,1,5476,3.681981,0,5,1.609438,1.609438,1,1.8,3.24,3.9724998 +0,.2633337,70,13,16,2,0,1,1,1,0,38.324,1,1,4900,3.646076,0,16,2.772589,2.772589,1,1,1,3.8324001 +0,1,74,16,4,2,0,0,1,0,0,8.4,2,0,5476,2.128232,1,4,1.386294,1.386294,1,1.8,3.24,.83999996 +0,1,77,7,4,0,0,0,0,0,0,.676,0,0,5929,-.3915622,1,4,1.386294,1.386294,1,2.4,5.76,.0676 +0,1,71,7,4,17,0,0,1,0,0,.676,2,0,5041,-.3915622,1,4,1.386294,1.386294,1,1.2,1.44,.0676 +0,.390301,72,16,14,42,0,1,1,0,0,55.903,0,1,5184,4.023618,0,14,2.639057,2.639057,1,1.4,1.96,5.5903 +0,0,70,17,17,15,0,1,0,1,1,42.603,2,1,4900,3.751925,0,17,2.833213,2.833213,1,1,1,4.2603001 +0,0,85,1,3,0,1,0,0,1,1,0,0,0,7225,,0,3,1.098612,1.098612,1,4,16,0 +0,0,76,1,2,0,1,0,1,1,1,0,2,0,5776,,0,2,.6931472,.6931472,1,2.2,4.84,0 +0,.4411326,85,0,4,2,1,0,1,1,1,21.472,4,0,7225,3.06675,0,4,1.386294,1.386294,1,4,16,2.1472 +0,1,66,11,0,0,0,1,0,0,0,8.032,0,1,4356,2.083434,1,0,,-4.60517,0,.2,.04,.80319996 +0,1,71,8,6,1,1,0,0,0,0,6,2,0,5041,1.791759,1,6,1.791759,1.791759,1,1.2,1.44,.6 +0,.3810472,69,12,11,1,0,0,1,0,0,28.112,2,0,4761,3.336196,0,11,2.397895,2.397895,1,.8,.64,2.8112 +0,1,71,12,13,5,0,1,0,1,0,11.316,2,1,5041,2.426218,0,13,2.564949,2.564949,1,1.2,1.44,1.1316 +0,1,76,14,4,0,0,0,0,0,0,10,2,0,5776,2.302585,0,4,1.386294,1.386294,1,2.2,4.84,1 +0,1,67,12,0,0,0,0,1,0,0,10,0,0,4489,2.302585,0,0,,-4.60517,0,.4,.16,1 +0,.4,76,11,13,10,0,0,0,0,0,30,1,0,5776,3.401197,0,13,2.564949,2.564949,1,2.2,4.84,3 +0,.7117065,85,14,16,1,0,0,0,1,1,20.604,1,0,7225,3.025485,0,16,2.772589,2.772589,1,4,16,2.0604 +0,1,74,12,1,0,0,0,1,0,0,17.689,1,0,5476,2.872943,1,1,0,0,1,1.8,3.24,1.7688999 +0,0,79,7,2,0,0,1,0,0,0,6.09,1,1,6241,1.806648,0,2,.6931472,.6931472,1,2.8,7.84,.60900002 +0,.8700674,85,12,9,162,0,1,0,1,1,20.78,3,1,7225,3.033991,0,9,2.197225,2.197225,1,4,16,2.0780001 +0,.952381,78,6,7,0,0,0,0,1,0,8.4,4,0,6084,2.128232,0,7,1.94591,1.94591,1,2.6,6.76,.83999996 +0,1,72,7,2,0,0,0,0,0,0,9.472,1,0,5184,2.24834,0,2,.6931472,.6931472,1,1.4,1.96,.94720001 +0,.6570477,68,9,1,0,0,0,1,0,0,14.416,1,0,4624,2.668339,0,1,0,0,1,.6,.36,1.4416 +0,.3650428,72,13,5,12,0,1,0,0,0,23.011,1,1,5184,3.135972,0,5,1.609438,1.609438,1,1.4,1.96,2.3011 +0,.3650428,69,12,0,1,0,1,1,0,0,23.011,0,1,4761,3.135972,0,0,,-4.60517,0,.8,.64,2.3011 +0,1,73,8,0,0,0,0,1,1,0,8,0,0,5329,2.079442,1,0,,-4.60517,0,1.6,2.56,.8 +0,.5354474,80,12,27,4,0,1,0,1,1,17.66,2,1,6400,2.871302,0,27,3.295837,3.295837,1,3,9,1.766 +0,.5354474,79,12,14,10,0,1,1,1,1,17.66,4,1,6241,2.871302,0,14,2.639057,2.639057,1,2.8,7.84,1.766 +0,.0480077,74,17,4,2,0,1,0,1,0,141.894,2,1,5476,4.955081,0,4,1.386294,1.386294,1,1.8,3.24,14.1894 +0,0,68,13,30,0,1,0,1,1,1,0,6,0,4624,,1,30,3.401197,3.401197,1,.6,.36,0 +0,1,82,4,7,0,1,0,1,0,0,9,1,0,6724,2.197225,1,7,1.94591,1.94591,1,3.4,11.56,.9 +1,.0373651,65,12,2,0,0,1,0,1,1,148.133,2,1,4225,4.99811,0,2,.6931472,.6931472,1,0,0,14.8133 +0,.3583861,85,12,4,1,0,0,0,1,0,2.528,2,0,7225,.9274285,0,4,1.386294,1.386294,1,4,16,.25280001 +0,.3583861,83,12,0,2,0,0,1,1,0,2.528,1,0,6889,.9274285,0,0,,-4.60517,0,3.6,12.96,.25280001 +0,.720403,76,12,16,0,0,1,1,1,0,9.528,2,1,5776,2.254235,0,16,2.772589,2.772589,1,2.2,4.84,.95279999 +0,1,73,8,4,1,1,0,1,1,1,6.5,2,0,5329,1.871802,1,4,1.386294,1.386294,1,1.6,2.56,.65 +1,.1753243,66,16,0,0,0,1,0,0,0,79.795,1,1,4356,4.379461,0,0,,-4.60517,0,.2,.04,7.9794998 +1,0,65,11,11,0,0,1,0,0,0,15.288,0,1,4225,2.727068,0,11,2.397895,2.397895,1,0,0,1.5288 +0,.4545014,65,12,6,0,0,1,1,1,0,18.561,0,1,4225,2.921063,0,6,1.791759,1.791759,1,0,0,1.8561001 +0,.7953196,81,10,22,3,0,1,1,1,0,22.733,4,1,6561,3.123818,0,22,3.091043,3.091043,1,3.2,10.24,2.2733 +0,.75,79,14,16,13,0,1,1,1,1,3.6,2,1,6241,1.280934,0,16,2.772589,2.772589,1,2.8,7.84,.35999999 +0,.75,79,14,9,18,0,1,0,0,0,3.6,2,1,6241,1.280934,0,9,2.197225,2.197225,1,2.8,7.84,.35999999 +0,.1519644,85,17,9,2,0,1,1,1,0,43.168,4,1,7225,3.7651,0,9,2.197225,2.197225,1,4,16,4.3167999 +0,.3090249,66,12,11,0,0,1,1,0,0,47.103,3,1,4356,3.852337,0,11,2.397895,2.397895,1,.2,.04,4.7103001 +0,1,85,16,0,0,0,1,1,1,1,7.2,0,1,7225,1.974081,0,0,,-4.60517,0,4,16,.71999998 +0,1,76,10,0,0,1,0,1,1,0,3.228,0,0,5776,1.171863,1,0,,-4.60517,0,2.2,4.84,.32279999 +0,.1468692,67,16,0,0,0,1,0,0,0,61.279,0,1,4489,4.115437,0,0,,-4.60517,0,.4,.16,6.1278999 +0,.1207454,67,16,20,8,0,1,1,1,0,74.537,3,1,4489,4.311296,0,20,2.995732,2.995732,1,.4,.16,7.4537003 +0,.3589744,83,12,6,0,1,0,1,1,0,9.36,1,0,6889,2.236445,1,6,1.791759,1.791759,1,3.6,12.96,.93599997 +0,0,76,3,6,0,1,0,1,0,0,0,3,0,5776,,0,6,1.791759,1.791759,1,2.2,4.84,0 +0,.9448819,82,12,4,0,0,0,1,1,0,15.24,2,0,6724,2.723923,0,4,1.386294,1.386294,1,3.4,11.56,1.524 +0,0,76,7,9,0,0,0,1,0,0,0,2,0,5776,,0,9,2.197225,2.197225,1,2.2,4.84,0 +0,.9771987,74,12,3,2,0,1,0,0,0,15.35,1,1,5476,2.731116,0,3,1.098612,1.098612,1,1.8,3.24,1.535 +0,.9771987,70,10,2,3,0,0,1,1,0,15.35,0,0,4900,2.731116,0,2,.6931472,.6931472,1,1,1,1.535 +0,0,70,3,10,0,1,0,0,1,1,6.5,4,0,4900,1.871802,1,10,2.302585,2.302585,1,1,1,.65 +0,1,66,8,1,0,1,0,1,1,0,9.928,3,0,4356,2.295359,0,1,0,0,1,.2,.04,.99280005 +0,.6777212,71,16,4,1,0,1,0,0,0,12.182,4,1,5041,2.499959,1,4,1.386294,1.386294,1,1.2,1.44,1.2182 +0,.6621201,79,12,25,25,0,1,1,1,1,15.103,5,1,6241,2.714893,0,25,3.218876,3.218876,1,2.8,7.84,1.5103 +0,1,76,10,5,0,0,0,1,0,0,7.404,3,0,5776,2.00202,0,5,1.609438,1.609438,1,2.2,4.84,.74039998 +0,.5345775,74,14,7,1,1,0,1,1,0,27.648,3,0,5476,3.319553,1,7,1.94591,1.94591,1,1.8,3.24,2.7648001 +0,.3030624,66,15,1,1,0,1,1,0,0,35.821,0,1,4356,3.578534,0,1,0,0,1,.2,.04,3.5820999 +0,1,67,8,5,0,0,0,0,1,1,11,4,0,4489,2.397895,0,5,1.609438,1.609438,1,.4,.16,1.1 +0,.7443082,78,9,0,0,1,0,0,1,0,6.852,1,0,6084,1.924541,1,0,,-4.60517,0,2.6,6.76,.68520002 +0,.768295,85,8,9,0,0,0,1,1,1,15.619,5,0,7225,2.748488,0,9,2.197225,2.197225,1,4,16,1.5619 +0,.4783763,85,8,20,2,0,0,0,1,1,21.088,3,0,7225,3.048704,0,20,2.995732,2.995732,1,4,16,2.1087999 +0,.621118,77,8,13,5,0,0,1,0,0,7.728,1,0,5929,2.04485,0,13,2.564949,2.564949,1,2.4,5.76,.77280002 +0,.5776418,74,10,20,1,0,0,1,0,0,14.715,1,0,5476,2.688867,0,20,2.995732,2.995732,1,1.8,3.24,1.4715 +0,.5776418,78,12,4,0,0,0,0,0,0,14.715,1,0,6084,2.688867,0,4,1.386294,1.386294,1,2.6,6.76,1.4715 +0,0,67,16,22,0,0,1,1,0,0,87.96,0,1,4489,4.476882,0,22,3.091043,3.091043,1,.4,.16,8.7959999 +0,.9840764,74,8,9,1,0,1,0,0,0,12.56,2,1,5476,2.530517,0,9,2.197225,2.197225,1,1.8,3.24,1.256 +0,.9840764,72,12,12,1,0,1,1,0,0,12.56,2,1,5184,2.530517,0,12,2.484907,2.484907,1,1.4,1.96,1.256 +0,.9746193,76,14,4,6,0,0,1,0,0,9.85,0,0,5776,2.287472,0,4,1.386294,1.386294,1,2.2,4.84,.98500004 +0,.3975375,65,12,4,1,0,1,0,0,0,36.223,1,1,4225,3.589694,0,4,1.386294,1.386294,1,0,0,3.6223 +0,.9062515,68,11,11,1,0,1,0,1,1,21.387,2,1,4624,3.062783,0,11,2.397895,2.397895,1,.6,.36,2.1386999 +0,.2636436,68,12,4,1,0,1,0,0,0,37.93,1,1,4624,3.635742,0,4,1.386294,1.386294,1,.6,.36,3.793 +0,.263727,66,13,4,2,0,1,1,0,0,37.918,2,1,4356,3.635426,0,4,1.386294,1.386294,1,.2,.04,3.7917999 +0,1,71,1,18,48,0,1,0,1,1,9.5,5,1,5041,2.251292,0,18,2.890372,2.890372,1,1.2,1.44,.95 +0,.8566533,85,2,3,0,1,0,0,1,0,7.004,2,0,7225,1.946481,1,3,1.098612,1.098612,1,4,16,.70040002 +0,.3822855,85,12,15,0,0,1,1,1,1,34.006,0,1,7225,3.526537,0,15,2.70805,2.70805,1,4,16,3.4006001 +0,0,70,13,5,13,0,0,1,0,0,22.695,1,0,4900,3.122145,0,5,1.609438,1.609438,1,1,1,2.2695 +0,0,66,14,0,0,0,1,0,0,0,0,0,1,4356,,1,0,,-4.60517,0,.2,.04,0 +0,.0383823,65,16,10,0,0,1,0,0,0,172.371,1,1,4225,5.149649,0,10,2.302585,2.302585,1,0,0,17.2371 +0,.1099524,65,16,4,0,0,1,1,0,0,72.304,0,1,4225,4.280879,0,4,1.386294,1.386294,1,0,0,7.2304001 +0,.4286939,74,7,18,3,1,0,1,1,1,13.996,2,0,5476,2.638772,0,18,2.890372,2.890372,1,1.8,3.24,1.3996 +0,.8415841,79,13,4,2,0,1,1,1,1,12.625,3,1,6241,2.535679,0,4,1.386294,1.386294,1,2.8,7.84,1.2625 +0,.8034027,84,12,2,0,0,1,0,0,0,13.225,2,1,7056,2.582109,0,2,.6931472,.6931472,1,3.8,14.44,1.3225 +0,.8634538,84,7,2,1,0,0,1,1,1,8.964,5,0,7056,2.193217,0,2,.6931472,.6931472,1,3.8,14.44,.89639997 +0,0,74,4,5,2,0,1,0,1,1,5.58,1,1,5476,1.719189,1,5,1.609438,1.609438,1,1.8,3.24,.55799999 +0,.8609272,77,11,11,12,0,1,1,0,1,7.55,4,1,5929,2.021548,0,11,2.397895,2.397895,1,2.4,5.76,.75500002 +0,.8609272,75,11,5,6,0,1,0,1,1,7.55,2,1,5625,2.021548,0,5,1.609438,1.609438,1,2,4,.75500002 +0,.9876543,82,12,14,0,0,1,0,0,0,5.67,1,1,6724,1.735189,0,14,2.639057,2.639057,1,3.4,11.56,.56700001 +0,.9876543,85,12,5,0,0,1,1,1,1,5.67,2,1,7225,1.735189,0,5,1.609438,1.609438,1,4,16,.56700001 +0,1,74,9,20,3,0,1,1,1,0,9.7,5,1,5476,2.272126,0,20,2.995732,2.995732,1,1.8,3.24,.96999998 +0,1,74,9,17,13,0,1,0,1,1,9.7,5,1,5476,2.272126,0,17,2.833213,2.833213,1,1.8,3.24,.96999998 +0,.9968848,79,12,6,0,0,0,1,1,0,11.235,3,0,6241,2.419034,0,6,1.791759,1.791759,1,2.8,7.84,1.1235 +0,1,65,11,1,0,0,1,0,0,0,9,1,1,4225,2.197225,0,1,0,0,1,0,0,.9 +0,0,72,4,9,0,1,0,1,0,0,.009,3,0,5184,-4.710531,1,9,2.197225,2.197225,1,1.4,1.96,.0009 +0,.6608949,77,12,7,0,0,1,1,1,1,15.131,2,1,5929,2.716746,0,7,1.94591,1.94591,1,2.4,5.76,1.5131 +0,.638796,65,6,5,0,0,0,1,1,1,14.95,5,0,4225,2.704711,1,5,1.609438,1.609438,1,0,0,1.495 +0,.3588607,65,6,2,0,0,0,0,0,1,26.612,2,0,4225,3.281362,1,2,.6931472,.6931472,1,0,0,2.6612 +0,.3706141,65,10,4,2,1,0,1,1,1,19.751,2,0,4225,2.983204,1,4,1.386294,1.386294,1,0,0,1.9750999 +0,1,68,12,2,0,1,0,1,1,1,6,4,0,4624,1.791759,0,2,.6931472,.6931472,1,.6,.36,.6 +0,.3739949,78,14,11,14,0,0,1,1,0,32.086,4,0,6084,3.46842,0,11,2.397895,2.397895,1,2.6,6.76,3.2085999 +0,1,68,11,1,0,1,0,0,0,0,6.72,2,0,4624,1.905088,1,1,0,0,1,.6,.36,.67199998 +0,.5635303,65,8,4,1,0,1,0,0,0,13.71,3,1,4225,2.618125,0,4,1.386294,1.386294,1,0,0,1.371 +0,.2769816,68,12,11,1,0,1,0,1,1,51.498,3,1,4624,3.941543,0,11,2.397895,2.397895,1,.6,.36,5.1498001 +0,.3968872,72,13,4,0,0,0,1,1,0,25.7,2,0,5184,3.246491,0,4,1.386294,1.386294,1,1.4,1.96,2.5700001 +0,.3968872,74,16,3,0,0,0,0,0,1,25.7,1,0,5476,3.246491,0,3,1.098612,1.098612,1,1.8,3.24,2.5700001 +0,.7821724,72,11,5,0,0,0,1,1,1,6.776,4,0,5184,1.913387,1,5,1.609438,1.609438,1,1.4,1.96,.6776 +0,.3455551,67,14,7,1,0,1,1,1,0,27.492,1,1,4489,3.313895,0,7,1.94591,1.94591,1,.4,.16,2.7492001 +0,.3455551,68,17,3,0,0,1,0,1,0,27.492,2,1,4624,3.313895,0,3,1.098612,1.098612,1,.6,.36,2.7492001 +0,.771857,79,4,13,0,0,1,0,0,0,9.402,3,1,6241,2.240922,0,13,2.564949,2.564949,1,2.8,7.84,.94020004 +0,.771857,78,4,12,5,0,1,1,1,1,9.402,6,1,6084,2.240922,0,12,2.484907,2.484907,1,2.6,6.76,.94020004 +0,0,65,10,18,6,0,1,0,1,1,21.054,2,1,4225,3.047091,0,18,2.890372,2.890372,1,0,0,2.1054001 +0,.5250722,85,7,5,0,0,1,1,1,1,26.663,1,1,7225,3.283277,0,5,1.609438,1.609438,1,4,16,2.6663 +0,.8167032,78,16,6,17,0,1,0,1,1,23.732,4,1,6084,3.166824,0,6,1.791759,1.791759,1,2.6,6.76,2.3732 +1,0,66,17,2,5,0,1,1,0,0,55.35,1,1,4356,4.013677,0,2,.6931472,.6931472,1,.2,.04,5.5349998 +0,1,82,12,3,1,0,0,1,0,0,6,2,0,6724,1.791759,0,3,1.098612,1.098612,1,3.4,11.56,.6 +0,.4317602,69,12,4,0,0,1,0,1,1,50.535,2,1,4761,3.922666,0,4,1.386294,1.386294,1,.8,.64,5.0535 +0,.0116515,82,11,3,0,0,0,0,0,0,124.447,2,0,6724,4.82388,0,3,1.098612,1.098612,1,3.4,11.56,12.4447 +0,.0358529,83,11,3,2,0,0,1,0,0,40.443,0,0,6889,3.699894,0,3,1.098612,1.098612,1,3.6,12.96,4.0443001 +0,0,65,4,0,0,1,0,0,0,0,13.24,0,0,4225,2.583242,1,0,,-4.60517,0,0,0,1.324 +0,.9536785,73,16,10,0,0,0,0,0,0,14.68,2,0,5329,2.686486,0,10,2.302585,2.302585,1,1.6,2.56,1.468 +0,.9536785,69,12,4,0,0,0,1,1,1,14.68,2,0,4761,2.686486,0,4,1.386294,1.386294,1,.8,.64,1.468 +0,0,81,8,8,0,0,0,1,0,0,9,2,0,6561,2.197225,0,8,2.079442,2.079442,1,3.2,10.24,.9 +0,.2853776,65,17,3,0,0,1,0,1,0,36.068,3,1,4225,3.585406,0,3,1.098612,1.098612,1,0,0,3.6068001 +0,.5645942,85,12,3,0,0,1,1,0,0,32.023,2,1,7225,3.466454,0,3,1.098612,1.098612,1,4,16,3.2022999 +0,1,80,12,5,1,0,0,1,1,1,7.2,4,0,6400,1.974081,0,5,1.609438,1.609438,1,3,9,.71999998 +0,.1565251,71,14,8,0,0,1,0,1,0,25.555,5,1,5041,3.240833,1,8,2.079442,2.079442,1,1.2,1.44,2.5555 +0,.1537752,68,12,4,3,0,1,1,0,0,26.012,0,1,4624,3.258558,1,4,1.386294,1.386294,1,.6,.36,2.6011999 +0,1,84,3,15,3,0,0,1,1,1,5,1,0,7056,1.609438,0,15,2.70805,2.70805,1,3.8,14.44,.5 +0,0,78,3,3,0,1,0,0,1,1,18,3,0,6084,2.890372,1,3,1.098612,1.098612,1,2.6,6.76,1.8 +0,.8233216,78,6,9,0,1,0,0,1,1,5.094,2,0,6084,1.628063,0,9,2.197225,2.197225,1,2.6,6.76,.50939999 +0,.8233216,76,10,12,0,1,0,1,1,1,5.094,3,0,5776,1.628063,0,12,2.484907,2.484907,1,2.2,4.84,.50939999 +0,1,67,7,2,0,1,0,0,1,1,4.638,3,0,4489,1.534283,1,2,.6931472,.6931472,1,.4,.16,.4638 +0,1,71,3,14,0,1,0,1,1,1,4.638,3,0,5041,1.534283,1,14,2.639057,2.639057,1,1.2,1.44,.4638 +0,0,80,9,6,2,1,0,1,1,1,9.48,1,0,6400,2.249184,0,6,1.791759,1.791759,1,3,9,.94799995 +0,.3579482,71,17,11,8,0,1,0,0,0,27.937,1,1,5041,3.329952,0,11,2.397895,2.397895,1,1.2,1.44,2.7937 +0,.3861153,70,15,6,0,0,1,1,0,0,25.899,1,1,4900,3.254204,0,6,1.791759,1.791759,1,1,1,2.5899 +0,.4402124,68,12,8,1,0,0,0,0,0,22.789,1,0,4624,3.126278,0,8,2.079442,2.079442,1,.6,.36,2.2789 +0,.4402124,65,12,1,2,0,1,1,0,0,22.789,2,1,4225,3.126278,0,1,0,0,1,0,0,2.2789 +0,.4070477,69,10,0,0,0,0,1,0,0,17.197,1,0,4761,2.844735,1,0,,-4.60517,0,.8,.64,1.7197001 +0,1,67,9,1,0,0,0,0,0,0,6.5,1,0,4489,1.871802,1,1,0,0,1,.4,.16,.65 +0,.6298646,78,12,6,4,0,1,1,0,0,22.227,0,1,6084,3.101308,0,6,1.791759,1.791759,1,2.6,6.76,2.2226999 +0,.3703704,65,12,4,1,0,1,0,0,0,16.2,2,1,4225,2.785011,0,4,1.386294,1.386294,1,0,0,1.6200001 +0,.0573099,70,10,4,1,0,1,0,0,0,17.449,2,1,4900,2.859282,1,4,1.386294,1.386294,1,1,1,1.7448999 +0,.0609607,72,9,1,0,0,1,1,0,0,16.404,0,1,5184,2.797525,1,1,0,0,1,1.4,1.96,1.6403999 +0,1,78,8,47,0,1,0,1,1,1,7.404,3,0,6084,2.00202,0,47,3.850147,3.850147,1,2.6,6.76,.74039998 +0,.4722351,74,12,9,0,0,1,1,1,0,23.717,3,1,5476,3.166192,0,9,2.197225,2.197225,1,1.8,3.24,2.3716999 +0,.4,67,12,0,0,0,0,0,0,0,30,0,0,4489,3.401197,0,0,,-4.60517,0,.4,.16,3 +0,.4684439,65,10,8,3,0,0,1,1,1,11.741,2,0,4225,2.463087,0,8,2.079442,2.079442,1,0,0,1.1741 +0,1,66,8,0,0,0,1,0,0,0,9.6,0,1,4356,2.261763,1,0,,-4.60517,0,.2,.04,.96000004 +0,1,69,8,5,0,0,1,1,0,1,9.6,2,1,4761,2.261763,1,5,1.609438,1.609438,1,.8,.64,.96000004 +0,0,78,1,10,0,1,0,0,0,1,3.5,3,0,6084,1.252763,1,10,2.302585,2.302585,1,2.6,6.76,.35 +0,0,81,3,4,0,1,0,1,1,1,2.2,2,0,6561,.7884574,1,4,1.386294,1.386294,1,3.2,10.24,.22 +0,.1685309,68,8,7,1,1,0,1,1,1,19.937,5,0,4624,2.992577,1,7,1.94591,1.94591,1,.6,.36,1.9937 +0,.6855817,72,7,11,5,0,0,0,1,1,13.358,3,0,5184,2.592115,0,11,2.397895,2.397895,1,1.4,1.96,1.3358 +0,.6855817,69,11,1,0,0,0,1,0,0,13.358,1,0,4761,2.592115,0,1,0,0,1,.8,.64,1.3358 +0,.6987044,76,14,1,0,0,0,1,1,0,13.276,1,0,5776,2.585958,0,1,0,0,1,2.2,4.84,1.3276 +0,.7333333,65,13,1,0,1,0,1,1,0,15,0,0,4225,2.70805,0,1,0,0,1,0,0,1.5 +0,.8431822,65,13,22,1,0,1,1,1,1,17.007,6,1,4225,2.833625,1,22,3.091043,3.091043,1,0,0,1.7007 +0,.2057684,71,17,9,14,0,1,0,1,0,58.318,4,1,5041,4.065911,0,9,2.197225,2.197225,1,1.2,1.44,5.8318001 +0,.5146333,68,8,1,1,0,0,0,0,0,20.057,0,0,4624,2.998578,0,1,0,0,1,.6,.36,2.0056999 +0,.5146333,68,12,5,4,0,0,1,0,0,20.057,4,0,4624,2.998578,0,5,1.609438,1.609438,1,.6,.36,2.0056999 +1,.0740416,65,12,2,1,0,1,1,0,0,56.968,2,1,4225,4.04249,0,2,.6931472,.6931472,1,0,0,5.6967999 +0,.9489576,84,10,8,0,0,0,1,1,1,13.91,3,0,7056,2.632608,0,8,2.079442,2.079442,1,3.8,14.44,1.391 +0,.7360515,85,6,0,0,0,0,1,0,0,5.592,1,0,7225,1.721337,1,0,,-4.60517,0,4,16,.5592 +0,.6193815,84,12,17,19,0,1,1,0,0,18.399,2,1,7056,2.912296,0,17,2.833213,2.833213,1,3.8,14.44,1.8399 +0,.4583478,81,17,2,4,0,1,0,1,1,20.179,0,1,6561,3.004642,0,2,.6931472,.6931472,1,3.2,10.24,2.0179001 +0,.4819949,85,14,3,4,0,1,1,1,1,19.189,3,1,7225,2.954337,0,3,1.098612,1.098612,1,4,16,1.9188999 +0,.6369209,77,16,22,2,0,1,0,0,0,34.257,1,1,5929,3.533891,0,22,3.091043,3.091043,1,2.4,5.76,3.4257 +0,.6369209,80,12,17,7,0,1,1,1,1,34.257,2,1,6400,3.533891,0,17,2.833213,2.833213,1,3,9,3.4257 +0,1,70,6,0,0,1,0,1,0,0,4.416,0,0,4900,1.485234,1,0,,-4.60517,0,1,1,.44159999 +0,.4495413,65,10,0,0,0,0,0,0,0,21.8,1,0,4225,3.08191,0,0,,-4.60517,0,0,0,2.1799999 +0,.6885998,69,14,2,1,0,1,1,0,0,13.07,2,1,4761,2.570319,0,2,.6931472,.6931472,1,.8,.64,1.307 +0,1,67,16,7,4,0,0,1,1,1,6.3,2,0,4489,1.84055,1,7,1.94591,1.94591,1,.4,.16,.63000002 +0,1,84,14,2,0,0,1,0,0,0,10.232,1,1,7056,2.32552,0,2,.6931472,.6931472,1,3.8,14.44,1.0232 +0,.7377755,85,16,47,19,0,1,0,1,1,11.841,5,1,7225,2.471568,0,47,3.850147,3.850147,1,4,16,1.1841 +0,.7377755,84,12,39,27,0,1,1,1,1,11.841,3,1,7056,2.471568,0,39,3.663562,3.663562,1,3.8,14.44,1.1841 +0,.9454545,68,8,15,36,0,0,0,1,1,13.75,1,0,4624,2.621039,0,15,2.70805,2.70805,1,.6,.36,1.375 +0,0,65,8,6,4,0,1,1,0,0,2.3,1,1,4225,.8329091,0,6,1.791759,1.791759,1,0,0,.23 +0,0,73,16,7,0,0,1,1,1,0,.12,2,1,5329,-2.120264,0,7,1.94591,1.94591,1,1.6,2.56,.012 +0,.2471933,81,17,9,2,0,1,1,0,0,48.545,1,1,6561,3.882491,0,9,2.197225,2.197225,1,3.2,10.24,4.8544998 +0,.075697,82,16,8,9,0,1,1,1,0,256.1,1,1,6724,5.545568,0,8,2.079442,2.079442,1,3.4,11.56,25.610001 +0,.2153443,79,16,11,4,0,1,0,1,0,51.081,3,1,6241,3.933413,0,11,2.397895,2.397895,1,2.8,7.84,5.1081001 +0,1,85,11,3,0,0,0,1,0,0,6.768,0,0,7225,1.912206,0,3,1.098612,1.098612,1,4,16,.67680001 +0,.0711763,71,12,5,0,0,1,0,0,1,37.934,1,1,5041,3.635848,0,5,1.609438,1.609438,1,1.2,1.44,3.7933998 +0,.1329329,69,12,5,0,0,1,1,0,0,20.311,2,1,4761,3.011163,0,5,1.609438,1.609438,1,.8,.64,2.0311001 +0,0,80,12,6,0,0,0,1,0,0,17,3,0,6400,2.833213,0,6,1.791759,1.791759,1,3,9,1.7 +0,1,77,11,3,0,0,1,0,1,1,12.876,3,1,5929,2.555365,1,3,1.098612,1.098612,1,2.4,5.76,1.2876 +0,.390625,75,14,8,1,0,0,1,1,0,2.24,4,0,5625,.8064759,0,8,2.079442,2.079442,1,2,4,.224 +0,.390625,75,14,18,0,0,0,0,0,0,2.24,3,0,5625,.8064759,0,18,2.890372,2.890372,1,2,4,.224 +0,.4,78,12,0,0,0,0,0,0,0,12,0,0,6084,2.484907,0,0,,-4.60517,0,2.6,6.76,1.2 +0,.0633327,78,17,1,0,0,0,0,0,0,126.317,1,0,6084,4.838795,1,1,0,0,1,2.6,6.76,12.6317 +0,.3241754,76,17,0,4,0,0,1,1,0,24.678,0,0,5776,3.205912,1,0,,-4.60517,0,2.2,4.84,2.4677999 +0,.3216591,65,12,3,2,0,0,1,1,0,14.562,4,0,4225,2.678415,0,3,1.098612,1.098612,1,0,0,1.4562 +0,0,65,6,1,0,0,1,1,0,0,20.965,1,1,4225,3.042854,0,1,0,0,1,0,0,2.0965 +0,.1001982,65,17,8,6,0,1,0,0,0,105.461,2,1,4225,4.658341,0,8,2.079442,2.079442,1,0,0,10.5461 +0,0,65,17,14,3,0,1,1,0,0,43.352,1,1,4225,3.769353,0,14,2.639057,2.639057,1,0,0,4.3352001 +0,0,65,12,4,0,0,1,0,0,0,8.102,2,1,4225,2.092111,1,4,1.386294,1.386294,1,0,0,.81020002 +0,.1436782,65,15,3,0,0,1,1,0,0,20.88,1,1,4225,3.038792,1,3,1.098612,1.098612,1,0,0,2.0879999 +0,.1274334,65,8,6,0,0,1,0,0,0,44.023,0,1,4225,3.784712,0,6,1.791759,1.791759,1,0,0,4.4022999 +0,0,65,17,0,0,0,0,0,0,0,6.792,0,0,4225,1.915745,0,0,,-4.60517,0,0,0,.67919998 +0,1,65,15,5,1,0,1,0,0,0,8.4,2,1,4225,2.128232,0,5,1.609438,1.609438,1,0,0,.83999996 +0,.2507343,85,12,0,1,0,1,1,1,1,27.918,0,1,7225,3.329272,0,0,,-4.60517,0,4,16,2.7917999 +0,1,65,12,1,1,0,1,0,0,0,17.714,0,1,4225,2.874355,1,1,0,0,1,0,0,1.7714001 +0,.7079208,65,10,20,3,0,1,1,0,0,25.654,1,1,4225,3.244699,0,20,2.995732,2.995732,1,0,0,2.5653999 +0,.1570999,65,14,4,0,0,1,0,0,0,114.424,3,1,4225,4.739911,1,4,1.386294,1.386294,1,0,0,11.4424 +0,0,67,3,7,0,0,0,0,0,0,1.058,2,0,4489,.0563803,1,7,1.94591,1.94591,1,.4,.16,.1058 +0,0,65,4,7,1,0,1,1,1,0,0,4,1,4225,,0,7,1.94591,1.94591,1,0,0,0 +0,0,65,17,8,4,0,1,1,0,0,5.53,1,1,4225,1.710188,0,8,2.079442,2.079442,1,0,0,.55300002 +0,.5085995,65,0,1,0,1,0,1,0,1,12.21,0,0,4225,2.502255,1,1,0,0,1,0,0,1.221 +0,.2362254,66,13,15,0,0,1,1,0,0,38.658,3,1,4356,3.654754,0,15,2.70805,2.70805,1,.2,.04,3.8658001 +0,.2860159,65,12,7,3,0,1,1,1,0,29.369,1,1,4225,3.37994,0,7,1.94591,1.94591,1,0,0,2.9368999 +0,0,75,9,1,0,0,0,1,0,0,0,1,0,5625,,0,1,0,0,1,2,4,0 +0,.3860606,68,12,5,26,0,1,0,0,0,19.427,1,1,4624,2.966664,0,5,1.609438,1.609438,1,.6,.36,1.9427 +0,.2399832,65,16,3,0,0,0,1,0,0,28.577,0,0,4225,3.352602,0,3,1.098612,1.098612,1,0,0,2.8577 +0,1,76,1,0,0,1,0,1,1,1,16.885,3,0,5776,2.826426,1,0,,-4.60517,0,2.2,4.84,1.6885 +0,0,65,12,1,0,0,1,0,0,0,12.34,0,1,4225,2.512846,0,1,0,0,1,0,0,1.234 +0,0,65,12,1,0,0,1,1,0,0,10.6,0,1,4225,2.360854,0,1,0,0,1,0,0,1.06 +0,.6237006,65,12,2,0,0,1,0,0,0,19.24,1,1,4225,2.956991,0,2,.6931472,.6931472,1,0,0,1.924 +0,.9970675,65,16,2,0,0,1,0,1,0,8.525,1,1,4225,2.143003,0,2,.6931472,.6931472,1,0,0,.85249996 +0,1,65,11,1,0,0,0,1,0,0,8.88,1,0,4225,2.183802,0,1,0,0,1,0,0,.88800001 +0,0,65,10,0,0,0,0,0,0,0,0,0,0,4225,,0,0,,-4.60517,0,0,0,0 +0,.5181615,65,13,18,4,0,1,0,0,0,19.299,2,1,4225,2.960053,0,18,2.890372,2.890372,1,0,0,1.9299 +0,0,65,15,2,1,0,1,1,0,0,37.6,0,1,4225,3.627004,0,2,.6931472,.6931472,1,0,0,3.7599998 +0,.2690058,65,17,6,0,0,1,1,0,0,34.2,0,1,4225,3.532226,0,6,1.791759,1.791759,1,0,0,3.4200001 +0,0,65,11,0,0,0,1,0,0,0,22.22,2,1,4225,3.100993,0,0,,-4.60517,0,0,0,2.2219999 +0,.3432592,65,11,2,0,0,1,1,1,0,34.959,0,1,4225,3.554176,0,2,.6931472,.6931472,1,0,0,3.4959 +0,.2547448,65,12,1,0,0,1,1,0,0,31.561,1,1,4225,3.451922,0,1,0,0,1,0,0,3.1561001 +0,.847064,65,8,7,0,0,1,1,0,0,6.761,1,1,4225,1.911171,1,7,1.94591,1.94591,1,0,0,.67610002 +0,.3433594,65,13,3,0,0,1,0,0,0,7.281,0,1,4225,1.985268,1,3,1.098612,1.098612,1,0,0,.72810001 +0,0,65,12,3,5,0,1,1,0,0,0,3,1,4225,,0,3,1.098612,1.098612,1,0,0,0 +0,0,65,12,1,2,0,0,0,1,0,12.361,2,0,4225,2.514546,0,1,0,0,1,0,0,1.2361 +0,0,65,12,6,0,0,1,1,0,0,31.9,3,1,4225,3.462606,0,6,1.791759,1.791759,1,0,0,3.19 +0,.4075691,65,15,0,0,0,0,0,0,0,20.61,0,0,4225,3.025776,0,0,,-4.60517,0,0,0,2.0610001 +0,1,81,14,1,0,0,0,1,1,1,5.017,0,0,6561,1.612832,1,1,0,0,1,3.2,10.24,.50170002 +0,.4733105,65,11,2,0,0,0,0,0,0,19.015,0,0,4225,2.945228,1,2,.6931472,.6931472,1,0,0,1.9014999 +0,.3586754,65,1,4,0,1,0,0,0,0,15.008,1,0,4225,2.708583,1,4,1.386294,1.386294,1,0,0,1.5008 +0,.3137255,65,14,3,0,0,1,1,0,0,30.6,1,1,4225,3.421,0,3,1.098612,1.098612,1,0,0,3.06 +0,.0635459,65,16,1,1,0,1,1,0,0,56.652,0,1,4225,4.036927,0,1,0,0,1,0,0,5.6652 +0,.6504065,87,8,2,0,0,0,1,1,1,11.07,2,0,7569,2.404239,0,2,.6931472,.6931472,1,4.4,19.36,1.107 +0,.0444044,67,16,4,0,0,1,1,0,0,64.881,1,1,4489,4.172555,1,4,1.386294,1.386294,1,.4,.16,6.4880997 +0,.2775263,71,16,0,0,0,1,0,0,0,10.381,1,1,5041,2.339977,1,0,,-4.60517,0,1.2,1.44,1.0381 +0,.1209629,70,17,10,0,0,1,0,0,0,57.869,1,1,4900,4.058182,0,10,2.302585,2.302585,1,1,1,5.7868999 +0,.0722625,68,17,6,1,0,1,1,0,0,96.869,4,1,4624,4.573359,0,6,1.791759,1.791759,1,.6,.36,9.6869003 +0,.286803,65,12,6,0,0,1,1,0,0,48.814,2,1,4225,3.888017,0,6,1.791759,1.791759,1,0,0,4.8813999 +0,0,65,15,8,0,0,1,0,1,0,.069,3,1,4225,-2.673649,0,8,2.079442,2.079442,1,0,0,.0069 +0,.3257754,65,12,4,0,0,1,0,0,0,38.37,1,1,4225,3.647276,0,4,1.386294,1.386294,1,0,0,3.8369999 +0,0,65,17,4,1,0,1,1,0,0,67.299,2,1,4225,4.209146,0,4,1.386294,1.386294,1,0,0,6.7299004 +0,0,65,12,5,3,0,1,1,0,0,36.114,0,1,4225,3.586681,0,5,1.609438,1.609438,1,0,0,3.6113998 +0,.8010088,65,2,0,0,0,0,0,0,0,14.473,0,0,4225,2.672285,1,0,,-4.60517,0,0,0,1.4473 +0,.988842,84,10,0,0,0,0,1,0,0,7.349,2,0,7056,1.994564,1,0,,-4.60517,0,3.8,14.44,.7349 +0,.0174706,65,17,0,0,0,1,0,0,0,152.599,1,1,4225,5.027813,0,0,,-4.60517,0,0,0,15.2599 +0,.2915697,65,4,2,0,0,1,1,0,0,19.762,2,1,4225,2.983761,1,2,.6931472,.6931472,1,0,0,1.9761999 +0,.3800906,67,12,7,0,0,1,0,0,0,46.36,3,1,4489,3.836437,1,7,1.94591,1.94591,1,.4,.16,4.6360001 +0,0,65,16,2,2,0,1,1,0,0,19.589,2,1,4225,2.974968,0,2,.6931472,.6931472,1,0,0,1.9589001 +0,.0726722,65,12,4,1,0,1,1,0,0,33.025,0,1,4225,3.497265,0,4,1.386294,1.386294,1,0,0,3.3025002 +0,0,65,12,7,0,0,0,1,0,0,24.183,1,0,4225,3.18565,0,7,1.94591,1.94591,1,0,0,2.4183001 +0,1,73,8,2,0,0,1,0,0,0,1.4,2,1,5329,.3364722,0,2,.6931472,.6931472,1,1.6,2.56,.14 +0,.6021769,65,12,3,1,0,1,0,0,0,17.548,1,1,4225,2.86494,0,3,1.098612,1.098612,1,0,0,1.7548 +0,.15489,65,12,0,1,0,1,1,0,0,26.309,2,1,4225,3.269911,0,0,,-4.60517,0,0,0,2.6309 +0,1,65,12,5,0,0,1,1,0,0,7,2,1,4225,1.94591,0,5,1.609438,1.609438,1,0,0,.7 +0,.0991736,66,12,0,0,0,1,0,0,0,78.65,1,1,4356,4.365008,0,0,,-4.60517,0,.2,.04,7.8650002 +0,0,65,17,0,0,0,1,1,0,0,21,0,1,4225,3.044523,0,0,,-4.60517,0,0,0,2.1 +0,0,65,12,5,12,0,1,0,0,0,46.817,1,1,4225,3.846246,0,5,1.609438,1.609438,1,0,0,4.6817001 +0,.4483227,65,12,17,0,0,1,1,0,1,15.471,3,1,4225,2.738967,0,17,2.833213,2.833213,1,0,0,1.5471 +0,1,66,11,0,0,1,0,1,0,0,8.412,2,0,4356,2.129659,0,0,,-4.60517,0,.2,.04,.84119997 +0,.2849931,65,10,18,1,0,1,1,0,0,28.127,4,1,4225,3.33673,0,18,2.890372,2.890372,1,0,0,2.8127001 +0,.7227273,65,6,6,0,0,0,0,0,0,13.64,4,0,4225,2.613007,1,6,1.791759,1.791759,1,0,0,1.364 +0,0,65,12,3,0,0,0,0,0,0,70.2,2,0,4225,4.251348,0,3,1.098612,1.098612,1,0,0,7.0199997 +0,.1529663,66,12,5,0,0,0,1,0,0,22.907,0,0,4356,3.131443,0,5,1.609438,1.609438,1,.2,.04,2.2907 +0,0,65,15,7,0,1,0,1,1,1,1.8,0,0,4225,.5877866,1,7,1.94591,1.94591,1,0,0,.18 +0,.2600974,65,12,3,1,0,0,0,0,0,53.826,1,0,4225,3.985757,1,3,1.098612,1.098612,1,0,0,5.3826 +0,0,65,9,4,0,0,0,1,1,1,0,3,0,4225,,0,4,1.386294,1.386294,1,0,0,0 +0,0,65,12,2,0,0,1,1,0,0,0,1,1,4225,,1,2,.6931472,.6931472,1,0,0,0 +0,1,65,10,8,1,0,1,1,0,0,9.546,2,1,4225,2.256122,1,8,2.079442,2.079442,1,0,0,.95459995 +0,.9733703,86,12,2,1,0,0,1,1,1,18.776,3,0,7396,2.93258,0,2,.6931472,.6931472,1,4.2,17.64,1.8775999 +0,1,65,16,6,0,0,1,0,0,0,10.412,1,1,4225,2.342959,0,6,1.791759,1.791759,1,0,0,1.0412 +0,0,65,5,9,0,1,0,0,1,1,4.584,2,0,4225,1.522572,1,9,2.197225,2.197225,1,0,0,.45840001 +0,0,68,16,4,0,0,1,0,0,0,27.5,3,1,4624,3.314186,1,4,1.386294,1.386294,1,.6,.36,2.75 +0,.2614322,65,12,0,0,0,1,0,0,0,45.901,0,1,4225,3.826487,0,0,,-4.60517,0,0,0,4.5901001 +0,0,65,13,2,0,0,1,1,0,0,23.853,0,1,4225,3.17191,0,2,.6931472,.6931472,1,0,0,2.3853001 +0,.851606,65,16,10,1,0,0,1,0,0,11.146,2,0,4225,2.411081,0,10,2.302585,2.302585,1,0,0,1.1146 +0,1,81,12,3,8,0,1,0,0,0,5.736,2,1,6561,1.746762,0,3,1.098612,1.098612,1,3.2,10.24,.57360001 +0,1,71,8,2,0,0,0,0,1,1,12.61,2,0,5041,2.53449,0,2,.6931472,.6931472,1,1.2,1.44,1.261 +0,.8753415,78,11,3,0,0,0,0,0,0,6.955,1,0,6084,1.939461,0,3,1.098612,1.098612,1,2.6,6.76,.69549999 +0,.3820549,76,12,3,0,0,0,1,1,1,12.137,0,0,5776,2.496259,0,3,1.098612,1.098612,1,2.2,4.84,1.2137 +0,0,67,12,5,0,0,1,0,1,1,0,1,1,4489,,0,5,1.609438,1.609438,1,.4,.16,0 +0,.4773903,89,8,4,4,0,0,1,1,1,20.876,3,0,7921,3.0386,0,4,1.386294,1.386294,1,4.8,23.04,2.0875999 +0,.1125004,74,16,3,5,0,0,0,0,0,31.111,1,0,5476,3.437562,0,3,1.098612,1.098612,1,1.8,3.24,3.1111 +0,.1125004,75,12,1,0,0,0,1,0,0,31.111,1,0,5625,3.437562,0,1,0,0,1,2,4,3.1111 +0,1,78,12,11,1,0,1,1,1,1,12.231,4,1,6084,2.503974,0,11,2.397895,2.397895,1,2.6,6.76,1.2231 +0,1,70,13,4,1,0,0,1,1,1,11,1,0,4900,2.397895,0,4,1.386294,1.386294,1,1,1,1.1 +0,.4535673,90,13,0,0,0,0,1,1,0,14.591,3,0,8100,2.680405,0,0,,-4.60517,0,5,25,1.4591 +0,1,82,6,1,0,1,0,1,1,1,7.593,3,0,6724,2.027227,1,1,0,0,1,3.4,11.56,.75929999 +0,0,72,8,21,0,0,0,0,1,0,2.448,3,0,5184,.8952714,0,21,3.044523,3.044523,1,1.4,1.96,.2448 +0,.983296,83,12,2,0,0,0,1,0,0,4.909,0,0,6889,1.59107,0,2,.6931472,.6931472,1,3.6,12.96,.49089999 +0,.9651192,88,8,3,2,0,1,0,1,0,3.899,2,1,7744,1.36072,0,3,1.098612,1.098612,1,4.6,21.16,.38989999 +0,.4549272,78,12,9,1,0,0,0,1,1,14.288,2,0,6084,2.65942,0,9,2.197225,2.197225,1,2.6,6.76,1.4288 +0,1,84,0,12,0,1,0,0,1,1,5.545,2,0,7056,1.712897,1,12,2.484907,2.484907,1,3.8,14.44,.55450001 +0,.5482724,90,0,0,0,1,0,1,0,0,13.776,1,0,8100,2.622928,0,0,,-4.60517,0,5,25,1.3776 +0,1,70,14,1,0,0,0,1,0,0,7.865,0,0,4900,2.062423,0,1,0,0,1,1,1,.78649998 +0,.8917198,80,12,21,0,0,1,1,0,0,15.7,2,1,6400,2.753661,0,21,3.044523,3.044523,1,3,9,1.57 +0,.9984307,86,13,4,0,0,0,1,1,1,8.284,3,0,7396,2.114326,0,4,1.386294,1.386294,1,4.2,17.64,.82840004 +0,1,70,6,4,1,1,0,0,1,1,17.886,3,0,4900,2.884018,0,4,1.386294,1.386294,1,1,1,1.7886 +0,.4924895,71,16,6,3,0,1,0,0,0,20.305,0,1,5041,3.010867,0,6,1.791759,1.791759,1,1.2,1.44,2.0305 +0,.4924895,71,16,11,9,0,1,1,0,0,20.305,3,1,5041,3.010867,0,11,2.397895,2.397895,1,1.2,1.44,2.0305 +0,0,69,12,0,0,0,0,1,0,0,0,0,0,4761,,0,0,,-4.60517,0,.8,.64,0 +0,1,67,11,2,1,0,0,0,1,1,13.247,3,0,4489,2.583771,1,2,.6931472,.6931472,1,.4,.16,1.3247 +0,1,79,10,4,0,0,1,1,1,1,9.546,2,1,6241,2.256122,0,4,1.386294,1.386294,1,2.8,7.84,.95459995 +0,1,69,12,0,0,0,0,1,0,0,7.403,0,0,4761,2.001885,0,0,,-4.60517,0,.8,.64,.74029999 +0,.8870637,89,10,3,0,0,0,0,1,1,9.74,1,0,7921,2.276241,0,3,1.098612,1.098612,1,4.8,23.04,.97399998 +0,.3024575,74,10,5,0,0,1,0,0,0,26.45,1,1,5476,3.275256,0,5,1.609438,1.609438,1,1.8,3.24,2.6450001 +0,0,66,15,4,0,0,1,0,1,0,1.5,0,1,4356,.4054651,0,4,1.386294,1.386294,1,.2,.04,.15 +0,1,70,5,2,0,0,0,0,0,0,4.136,1,0,4900,1.419729,1,2,.6931472,.6931472,1,1,1,.41360002 +0,1,67,12,6,0,0,1,1,0,0,4.136,1,1,4489,1.419729,1,6,1.791759,1.791759,1,.4,.16,.41360002 +0,.2307692,78,8,8,1,0,1,0,1,1,6.5,3,1,6084,1.871802,0,8,2.079442,2.079442,1,2.6,6.76,.65 +0,0,90,14,7,0,0,0,1,1,0,7,3,0,8100,1.94591,0,7,1.94591,1.94591,1,5,25,.7 +0,.1460051,74,10,7,5,0,1,1,0,0,36.985,2,1,5476,3.610512,0,7,1.94591,1.94591,1,1.8,3.24,3.6985001 +0,.3768933,67,5,9,0,1,0,1,0,0,12.412,4,0,4489,2.518664,1,9,2.197225,2.197225,1,.4,.16,1.2412 +0,.99492,78,9,9,0,1,0,0,1,1,5.315,2,0,6084,1.670533,0,9,2.197225,2.197225,1,2.6,6.76,.53150001 +0,.7513854,73,10,3,0,0,0,1,0,0,14.617,3,0,5329,2.682185,0,3,1.098612,1.098612,1,1.6,2.56,1.4617 +0,.8856881,84,12,8,1,0,1,1,1,1,5.45,1,1,7056,1.695616,0,8,2.079442,2.079442,1,3.8,14.44,.54499998 +0,.997517,82,9,3,0,0,0,1,1,0,10.874,1,0,6724,2.386374,0,3,1.098612,1.098612,1,3.4,11.56,1.0874 +0,0,88,14,20,0,0,1,1,1,0,20.089,2,1,7744,3.000172,0,20,2.995732,2.995732,1,4.6,21.16,2.0089001 +0,.6204095,87,12,3,0,0,1,0,1,1,18.217,0,1,7569,2.902355,0,3,1.098612,1.098612,1,4.4,19.36,1.8216999 +0,.2447254,68,14,40,1,0,1,0,0,0,73.086,2,1,4624,4.291637,0,40,3.688879,3.688879,1,.6,.36,7.3085999 +0,0,71,17,5,0,0,1,1,0,0,41.753,0,1,5041,3.731771,0,5,1.609438,1.609438,1,1.2,1.44,4.1752998 +0,.5206282,86,2,6,0,0,0,0,1,1,8.023,2,0,7396,2.082312,1,6,1.791759,1.791759,1,4.2,17.64,.80229998 +0,.3595711,77,11,9,0,0,1,1,1,1,15.296,1,1,5929,2.727591,0,9,2.197225,2.197225,1,2.4,5.76,1.5296 +0,.2683182,85,12,4,0,0,1,0,0,0,28.701,2,1,7225,3.356932,0,4,1.386294,1.386294,1,4,16,2.8701 +0,.2683182,83,8,3,2,0,1,1,0,0,28.701,1,1,6889,3.356932,0,3,1.098612,1.098612,1,3.6,12.96,2.8701 +0,.8333333,67,14,10,2,0,1,0,1,1,10.8,6,1,4489,2.379546,0,10,2.302585,2.302585,1,.4,.16,1.08 +0,.8333333,69,6,8,1,0,1,1,1,1,10.8,4,1,4761,2.379546,0,8,2.079442,2.079442,1,.8,.64,1.08 +0,1,77,6,2,1,0,0,1,0,0,5.017,0,0,5929,1.612832,1,2,.6931472,.6931472,1,2.4,5.76,.50170002 +0,.9958506,88,7,0,0,0,0,0,1,1,9.64,2,0,7744,2.265921,0,0,,-4.60517,0,4.6,21.16,.96400003 +0,1,81,17,13,1,0,1,1,1,1,9.6,2,1,6561,2.261763,0,13,2.564949,2.564949,1,3.2,10.24,.96000004 +0,1,90,13,6,1,1,0,1,1,0,8.597,2,0,8100,2.151413,0,6,1.791759,1.791759,1,5,25,.85970001 +0,.9929578,76,5,7,0,0,0,0,1,0,2.84,2,0,5776,1.043804,0,7,1.94591,1.94591,1,2.2,4.84,.28399999 +0,1,77,2,2,0,1,0,1,0,0,10.305,1,0,5929,2.332629,1,2,.6931472,.6931472,1,2.4,5.76,1.0305 +0,.851441,75,12,1,0,1,0,1,0,0,10.097,0,0,5625,2.312238,0,1,0,0,1,2,4,1.0097 +0,.5978545,82,12,10,3,0,0,1,0,0,30.203,3,0,6724,3.407941,0,10,2.302585,2.302585,1,3.4,11.56,3.0202999 +0,1,67,12,0,0,0,0,0,0,0,13.559,0,0,4489,2.60705,0,0,,-4.60517,0,.4,.16,1.3559 +0,.9985576,81,15,2,0,0,1,1,1,1,9.013,1,1,6561,2.198668,0,2,.6931472,.6931472,1,3.2,10.24,.90129995 +0,1,78,11,8,0,0,1,1,1,1,12.61,1,1,6084,2.53449,0,8,2.079442,2.079442,1,2.6,6.76,1.261 +0,.7465964,74,10,24,4,0,1,0,0,1,11.385,3,1,5476,2.432297,0,24,3.178054,3.178054,1,1.8,3.24,1.1385 +0,.9731374,73,12,0,0,0,1,0,1,1,9.865,2,1,5329,2.288993,0,0,,-4.60517,0,1.6,2.56,.98649998 +0,.9414718,81,12,6,0,0,0,1,0,1,6.373,4,0,6561,1.85207,0,6,1.791759,1.791759,1,3.2,10.24,.63730001 +0,0,76,14,10,0,0,1,1,0,1,8.251,0,1,5776,2.110334,0,10,2.302585,2.302585,1,2.2,4.84,.82510004 +0,0,70,14,54,0,0,1,0,1,1,8.251,3,1,4900,2.110334,0,54,3.988984,3.988984,1,1,1,.82510004 +0,.2512226,70,17,9,1,0,1,1,1,1,39.67,3,1,4900,3.680595,0,9,2.197225,2.197225,1,1,1,3.9669998 +0,0,66,10,28,1,0,1,1,0,0,36,0,1,4356,3.583519,0,28,3.332205,3.332205,1,.2,.04,3.6 +0,1,87,12,1,0,0,0,1,0,0,6.265,3,0,7569,1.834979,1,1,0,0,1,4.4,19.36,.62649999 +0,.884865,80,12,0,0,0,1,1,0,0,12.481,0,1,6400,2.524208,0,0,,-4.60517,0,3,9,1.2481 +0,.987961,82,7,0,0,0,0,1,1,1,7.891,2,0,6724,2.065723,0,0,,-4.60517,0,3.4,11.56,.78909998 +0,.8744535,86,16,2,0,0,1,0,0,0,16.01,1,1,7396,2.773214,0,2,.6931472,.6931472,1,4.2,17.64,1.601 +0,.8744535,80,12,8,3,0,1,1,1,0,16.01,1,1,6400,2.773214,0,8,2.079442,2.079442,1,3,9,1.601 +0,.7192806,90,12,2,1,0,1,1,1,1,9.953,1,1,8100,2.297874,0,2,.6931472,.6931472,1,5,25,.99530001 +0,.9893993,85,8,2,0,0,1,0,0,0,14.15,2,1,7225,2.649715,0,2,.6931472,.6931472,1,4,16,1.415 +0,.9893993,87,5,2,0,0,1,1,1,1,14.15,2,1,7569,2.649715,0,2,.6931472,.6931472,1,4.4,19.36,1.415 +0,0,80,10,1,1,0,0,1,0,0,0,1,0,6400,,0,1,0,0,1,3,9,0 +0,1,67,6,0,0,0,0,0,1,1,5.499,2,0,4489,1.704566,0,0,,-4.60517,0,.4,.16,.54990001 +0,.7744697,90,9,4,0,1,0,1,1,0,5.374,1,0,8100,1.681573,1,4,1.386294,1.386294,1,5,25,.53740001 +0,.9904762,76,14,2,0,0,0,1,0,0,8.61,0,0,5776,2.152924,1,2,.6931472,.6931472,1,2.2,4.84,.86099997 +0,.9333766,76,11,4,0,0,1,0,0,0,9.261,1,1,5776,2.225812,0,4,1.386294,1.386294,1,2.2,4.84,.92609997 +0,.9333766,74,10,1,1,0,1,1,0,0,9.261,1,1,5476,2.225812,1,1,0,0,1,1.8,3.24,.92609997 +0,0,80,11,0,0,0,0,1,1,1,2.079,0,0,6400,.731887,0,0,,-4.60517,0,3,9,.2079 +0,.1988636,81,12,10,0,0,1,0,1,1,17.6,3,1,6561,2.867899,0,10,2.302585,2.302585,1,3.2,10.24,1.76 +0,.665979,78,13,7,3,0,1,0,0,0,10.179,1,1,6084,2.320327,0,7,1.94591,1.94591,1,2.6,6.76,1.0179 +0,.3470833,78,8,11,66,0,0,1,1,1,16.097,1,0,6084,2.778633,0,11,2.397895,2.397895,1,2.6,6.76,1.6097 +0,0,70,12,0,0,0,0,0,0,0,93.318,1,0,4900,4.536013,0,0,,-4.60517,0,1,1,9.3318001 +0,0,68,12,9,0,0,0,1,0,0,0,0,0,4624,,0,9,2.197225,2.197225,1,.6,.36,0 +0,.9857061,90,15,2,0,0,0,1,0,0,10.494,1,0,8100,2.350804,0,2,.6931472,.6931472,1,5,25,1.0494 +0,.3776979,68,13,8,0,0,1,0,0,0,5.56,0,1,4624,1.715598,0,8,2.079442,2.079442,1,.6,.36,.55599999 +0,.6873039,68,12,5,0,0,0,1,0,0,8.286,3,0,4624,2.114567,1,5,1.609438,1.609438,1,.6,.36,.82860003 +0,.9929078,81,12,5,0,0,0,1,0,0,14.1,1,0,6561,2.646175,0,5,1.609438,1.609438,1,3.2,10.24,1.41 +0,0,78,17,10,0,0,1,0,1,0,52,2,1,6084,3.951244,0,10,2.302585,2.302585,1,2.6,6.76,5.2 +0,0,74,16,25,2,0,1,1,1,0,0,3,1,5476,,0,25,3.218876,3.218876,1,1.8,3.24,0 +0,.8255345,72,14,9,4,0,1,1,0,0,13.378,0,1,5184,2.593611,0,9,2.197225,2.197225,1,1.4,1.96,1.3378 +1,.2367327,68,12,0,0,0,1,0,0,0,48.578,2,1,4624,3.883171,0,0,,-4.60517,0,.6,.36,4.8577999 +0,.3314599,67,12,3,0,0,1,1,0,0,34.695,2,1,4489,3.546596,0,3,1.098612,1.098612,1,.4,.16,3.4695 +0,0,77,10,8,0,1,0,0,0,1,7.5,2,0,5929,2.014903,0,8,2.079442,2.079442,1,2.4,5.76,.75 +0,0,76,10,8,0,1,0,1,1,1,2.43,3,0,5776,.8878913,0,8,2.079442,2.079442,1,2.2,4.84,.24300001 +0,.2493298,66,12,13,0,0,0,1,1,1,37.3,2,0,4356,3.618993,0,13,2.564949,2.564949,1,.2,.04,3.7299999 +0,1,72,12,5,0,0,0,0,0,0,9.3,2,0,5184,2.230014,0,5,1.609438,1.609438,1,1.4,1.96,.93000002 +0,1,78,13,0,0,0,1,1,0,0,10,1,1,6084,2.302585,1,0,,-4.60517,0,2.6,6.76,1 +0,.4964539,80,12,6,0,0,1,1,1,1,14.1,1,1,6400,2.646175,0,6,1.791759,1.791759,1,3,9,1.41 +1,0,65,17,4,0,0,1,1,0,0,52.05,1,1,4225,3.952205,1,4,1.386294,1.386294,1,0,0,5.2049999 +0,.3869043,77,3,1,0,0,0,0,0,0,12.233,1,0,5929,2.504137,1,1,0,0,1,2.4,5.76,1.2233 +0,.5579394,70,0,8,0,0,0,1,1,0,8.483,4,0,4900,2.138064,1,8,2.079442,2.079442,1,1,1,.84829998 +0,.2595691,68,16,6,4,0,1,1,0,0,50.083,0,1,4624,3.913682,0,6,1.791759,1.791759,1,.6,.36,5.0083 +0,1,70,9,12,22,0,0,1,1,1,6.93,1,0,4900,1.93586,0,12,2.484907,2.484907,1,1,1,.69299998 +0,1,75,12,1,0,0,0,0,0,0,6.93,1,0,5625,1.93586,0,1,0,0,1,2,4,.69299998 +0,.4736842,68,12,14,1,0,1,1,0,1,22.8,1,1,4624,3.12676,0,14,2.639057,2.639057,1,.6,.36,2.2799999 +0,.4018754,77,10,4,1,0,0,0,1,1,29.86,2,0,5929,3.39652,1,4,1.386294,1.386294,1,2.4,5.76,2.9860001 +0,0,65,9,2,0,1,0,1,1,1,0,2,0,4225,,0,2,.6931472,.6931472,1,0,0,0 +0,0,72,0,2,0,0,0,1,0,0,0,2,0,5184,,1,2,.6931472,.6931472,1,1.4,1.96,0 +0,.3496072,75,10,9,0,0,1,0,0,0,24.313,2,1,5625,3.191011,0,9,2.197225,2.197225,1,2,4,2.4313 +0,.6384737,72,10,5,0,0,1,1,0,0,13.313,1,1,5184,2.588741,0,5,1.609438,1.609438,1,1.4,1.96,1.3313 +0,.782021,80,12,3,1,0,1,1,0,0,9.322,1,1,6400,2.232377,0,3,1.098612,1.098612,1,3,9,.93219995 +0,.1562663,69,12,3,1,0,1,1,0,0,19.198,0,1,4761,2.954806,0,3,1.098612,1.098612,1,.8,.64,1.9198 +0,.2846975,65,17,18,9,0,1,0,1,1,28.1,4,1,4225,3.33577,0,18,2.890372,2.890372,1,0,0,2.81 +0,.5863039,72,12,14,0,0,1,1,1,0,8.528,1,1,5184,2.143355,0,14,2.639057,2.639057,1,1.4,1.96,.85279999 +0,.9756098,66,13,9,2,1,0,1,1,1,4.1,3,0,4356,1.410987,0,9,2.197225,2.197225,1,.2,.04,.40999999 +0,1,68,13,6,1,0,0,1,1,1,8.364,3,0,4624,2.123937,0,6,1.791759,1.791759,1,.6,.36,.83640003 +0,.3564357,68,16,20,0,0,1,0,1,1,20.2,4,1,4624,3.005683,0,20,2.995732,2.995732,1,.6,.36,2.0200001 +0,.4434653,72,12,6,0,0,0,1,0,0,14.071,2,0,5184,2.644116,0,6,1.791759,1.791759,1,1.4,1.96,1.4071 +0,.2848818,82,12,12,1,0,0,1,1,1,37.068,2,0,6724,3.612754,0,12,2.484907,2.484907,1,3.4,11.56,3.7068001 +0,.0853914,67,16,4,1,0,1,1,0,0,127.062,0,1,4489,4.844675,0,4,1.386294,1.386294,1,.4,.16,12.7062 +0,.0927683,74,17,0,0,0,1,0,0,0,116.958,1,1,5476,4.761815,0,0,,-4.60517,0,1.8,3.24,11.6958 +0,.3506494,66,12,14,1,0,0,1,1,1,30.8,2,0,4356,3.427515,1,14,2.639057,2.639057,1,.2,.04,3.0799999 +0,.1015043,73,11,11,56,0,1,1,1,1,33.437,3,1,5329,3.509663,0,11,2.397895,2.397895,1,1.6,2.56,3.3437 +0,.7137031,71,9,4,0,0,0,1,0,0,9.808,4,0,5041,2.283198,1,4,1.386294,1.386294,1,1.2,1.44,.98079996 +0,0,80,14,1,1,0,1,0,1,1,.023,1,1,6400,-3.772261,0,1,0,0,1,3,9,.0023 +0,.1479582,69,12,0,0,0,0,0,0,0,10.138,0,0,4761,2.316291,0,0,,-4.60517,0,.8,.64,1.0138 +0,1,71,8,0,0,0,0,1,1,1,1.5,3,0,5041,.4054651,0,0,,-4.60517,0,1.2,1.44,.15 +0,.4615385,74,14,6,2,0,1,0,0,0,2.6,2,1,5476,.9555114,0,6,1.791759,1.791759,1,1.8,3.24,.25999999 +0,.4615385,70,12,1,3,0,1,1,0,0,2.6,0,1,4900,.9555114,0,1,0,0,1,1,1,.25999999 +0,.9180328,85,13,11,0,0,0,1,1,1,9.15,2,0,7225,2.213754,0,11,2.397895,2.397895,1,4,16,.91499996 +0,.2897967,84,12,0,2,0,1,1,1,1,24.845,0,1,7056,3.212656,0,0,,-4.60517,0,3.8,14.44,2.4844999 +0,.9836066,84,2,1,0,0,0,1,0,0,12.2,1,0,7056,2.501436,1,1,0,0,1,3.8,14.44,1.22 +0,.1778305,79,16,0,0,0,1,1,0,0,16.87,0,1,6241,2.825537,0,0,,-4.60517,0,2.8,7.84,1.6870001 +0,.3333333,79,15,1,0,0,0,0,1,1,22.5,3,0,6241,3.113515,0,1,0,0,1,2.8,7.84,2.25 +0,.5,78,12,2,0,0,0,1,1,1,15,2,0,6084,2.70805,0,2,.6931472,.6931472,1,2.6,6.76,1.5 +0,.6114886,74,8,15,0,0,0,0,0,0,32.38,2,0,5476,3.477541,0,15,2.70805,2.70805,1,1.8,3.24,3.2380001 +0,.9131871,68,4,0,0,1,0,0,0,0,9.987,0,0,4624,2.301284,1,0,,-4.60517,0,.6,.36,.99870005 +1,.1086573,70,6,1,0,0,1,0,1,1,36.813,0,1,4900,3.605851,1,1,0,0,1,1,1,3.6813 +0,1,72,12,17,24,0,1,1,1,1,4,3,1,5184,1.386294,1,17,2.833213,2.833213,1,1.4,1.96,.4 +0,.4177449,71,12,11,2,0,1,0,1,0,43.28,4,1,5041,3.767691,0,11,2.397895,2.397895,1,1.2,1.44,4.3279999 +0,.6175842,71,12,4,1,0,1,1,1,0,12.625,1,1,5041,2.535679,1,4,1.386294,1.386294,1,1.2,1.44,1.2625 +0,.9258402,82,8,1,3,1,0,1,1,0,10.801,1,0,6724,2.379639,0,1,0,0,1,3.4,11.56,1.0801 +0,.5,85,13,12,11,0,1,1,1,0,22,1,1,7225,3.091043,0,12,2.484907,2.484907,1,4,16,2.2 +0,.5001563,81,12,19,1,0,1,0,0,0,15.995,4,1,6561,2.772276,0,19,2.944439,2.944439,1,3.2,10.24,1.5995 +0,.5001563,73,14,6,6,0,1,1,0,0,15.995,2,1,5329,2.772276,0,6,1.791759,1.791759,1,1.6,2.56,1.5995 +0,.1696281,85,14,4,1,0,1,1,1,1,23.581,1,1,7225,3.160441,0,4,1.386294,1.386294,1,4,16,2.3580999 +0,.7344633,75,16,8,0,0,1,0,1,0,8.85,2,1,5625,2.180418,0,8,2.079442,2.079442,1,2,4,.88500004 +0,.7344633,70,16,5,0,0,1,1,0,0,8.85,1,1,4900,2.180418,0,5,1.609438,1.609438,1,1,1,.88500004 +0,1,70,10,1,1,0,0,0,0,0,10.44,2,0,4900,2.345644,0,1,0,0,1,1,1,1.044 +0,.8207363,85,12,12,24,0,0,1,1,1,22.029,4,0,7225,3.09236,0,12,2.484907,2.484907,1,4,16,2.2028999 +0,0,66,16,9,0,0,0,0,0,0,5,1,0,4356,1.609438,0,9,2.197225,2.197225,1,.2,.04,.5 +0,1,79,12,3,1,0,1,0,0,0,8,1,1,6241,2.079442,1,3,1.098612,1.098612,1,2.8,7.84,.8 +0,1,65,11,3,1,1,0,0,0,0,8,2,0,4225,2.079442,0,3,1.098612,1.098612,1,0,0,.8 +0,.4694836,68,11,12,0,0,0,1,1,0,15.336,0,0,4624,2.730203,1,12,2.484907,2.484907,1,.6,.36,1.5336 +0,.234375,82,12,15,3,0,1,1,0,0,51.2,2,1,6724,3.93574,0,15,2.70805,2.70805,1,3.4,11.56,5.1200001 +0,.4178855,80,16,3,0,0,0,1,0,0,21.537,1,0,6400,3.069772,0,3,1.098612,1.098612,1,3,9,2.1537001 +0,.4542701,84,17,23,1,0,1,0,0,1,19.812,2,1,7056,2.986288,0,23,3.135494,3.135494,1,3.8,14.44,1.9812 +0,1,78,14,19,18,0,0,1,1,0,12,2,0,6084,2.484907,0,19,2.944439,2.944439,1,2.6,6.76,1.2 +0,1,76,17,44,2,1,0,0,0,0,5.237,3,0,5776,1.655749,1,44,3.78419,3.78419,1,2.2,4.84,.5237 +0,1,70,11,14,0,1,0,1,0,0,5.237,1,0,4900,1.655749,1,14,2.639057,2.639057,1,1,1,.5237 +0,.9874592,79,9,4,4,0,0,1,0,0,10.127,2,0,6241,2.315205,0,4,1.386294,1.386294,1,2.8,7.84,1.0127 +0,.3351308,68,16,2,0,0,1,0,1,1,32.823,2,1,4624,3.49113,0,2,.6931472,.6931472,1,.6,.36,3.2823002 +0,.220562,75,17,5,0,0,0,0,0,0,29.715,3,0,5625,3.391652,0,5,1.609438,1.609438,1,2,4,2.9715 +0,.4343562,68,17,2,2,0,0,1,0,0,15.089,2,0,4624,2.713966,0,2,.6931472,.6931472,1,.6,.36,1.5089 +0,.2649484,83,13,9,0,0,0,1,0,0,33.833,2,0,6889,3.521437,0,9,2.197225,2.197225,1,3.6,12.96,3.3833 +0,1,68,6,5,0,1,0,0,0,0,6,0,0,4624,1.791759,0,5,1.609438,1.609438,1,.6,.36,.6 +0,1,85,8,5,0,0,0,0,1,0,10.092,3,0,7225,2.311743,0,5,1.609438,1.609438,1,4,16,1.0092 +0,0,71,0,4,0,1,0,1,0,0,0,1,0,5041,,1,4,1.386294,1.386294,1,1.2,1.44,0 +0,1,66,12,23,2,0,0,1,1,1,9,3,0,4356,2.197225,0,23,3.135494,3.135494,1,.2,.04,.9 +0,.5294118,70,14,4,1,0,0,0,1,0,17,0,0,4900,2.833213,0,4,1.386294,1.386294,1,1,1,1.7 +0,.9651429,79,12,0,0,0,0,0,0,0,20.082,1,0,6241,2.999824,0,0,,-4.60517,0,2.8,7.84,2.0082001 +0,.7845504,69,12,20,10,0,1,0,1,1,8.285,4,1,4761,2.114447,0,20,2.995732,2.995732,1,.8,.64,.82849998 +0,.7845504,68,15,5,1,0,1,1,1,1,8.285,2,1,4624,2.114447,0,5,1.609438,1.609438,1,.6,.36,.82849998 +1,0,68,17,3,0,0,1,1,0,0,81.994,0,1,4624,4.406646,0,3,1.098612,1.098612,1,.6,.36,8.1994003 +0,1,67,8,4,2,0,1,0,1,0,5,3,1,4489,1.609438,0,4,1.386294,1.386294,1,.4,.16,.5 +0,0,85,12,5,0,0,0,1,0,0,12.5,0,0,7225,2.525729,0,5,1.609438,1.609438,1,4,16,1.25 +0,.5515832,76,15,3,2,0,1,1,1,0,24.475,1,1,5776,3.197652,0,3,1.098612,1.098612,1,2.2,4.84,2.4475 +0,.5425609,79,17,17,4,0,1,0,1,0,24.882,1,1,6241,3.214145,0,17,2.833213,2.833213,1,2.8,7.84,2.4882 +0,.2480254,77,16,7,3,0,1,1,1,1,57.607,2,1,5929,4.053644,0,7,1.94591,1.94591,1,2.4,5.76,5.7606998 +0,1,72,8,8,1,0,1,1,0,0,11.25,3,1,5184,2.420368,0,8,2.079442,2.079442,1,1.4,1.96,1.125 +0,1,79,12,7,34,0,1,0,0,0,11.25,2,1,6241,2.420368,0,7,1.94591,1.94591,1,2.8,7.84,1.125 +0,.2215616,65,17,2,0,0,1,0,0,0,54.161,1,1,4225,3.991961,0,2,.6931472,.6931472,1,0,0,5.4160999 +0,.1666667,73,9,2,0,0,0,0,0,0,36,1,0,5329,3.583519,1,2,.6931472,.6931472,1,1.6,2.56,3.6 +0,1,72,10,5,2,0,0,1,1,0,6,2,0,5184,1.791759,1,5,1.609438,1.609438,1,1.4,1.96,.6 +0,1,66,10,1,1,0,1,1,1,1,9,0,1,4356,2.197225,0,1,0,0,1,.2,.04,.9 +0,.1581981,83,12,8,1,0,1,0,1,0,22.377,2,1,6889,3.108034,1,8,2.079442,2.079442,1,3.6,12.96,2.2377001 +0,.2084437,79,10,6,2,0,1,1,1,1,16.983,4,1,6241,2.832213,1,6,1.791759,1.791759,1,2.8,7.84,1.6983 +0,.780085,75,8,0,5,1,0,0,1,1,8.476,2,0,5625,2.137239,0,0,,-4.60517,0,2,4,.84759998 +0,.780085,69,11,2,2,1,0,1,1,1,8.476,3,0,4761,2.137239,0,2,.6931472,.6931472,1,.8,.64,.84759998 +0,.4240329,75,17,11,7,0,1,0,0,0,15.329,3,1,5625,2.729747,0,11,2.397895,2.397895,1,2,4,1.5329 +0,.2606464,74,14,6,3,0,1,1,1,0,24.938,3,1,5476,3.216393,0,6,1.791759,1.791759,1,1.8,3.24,2.4938 +0,.9848485,76,13,7,2,0,1,1,1,1,6.6,2,1,5776,1.88707,0,7,1.94591,1.94591,1,2.2,4.84,.65999999 +0,.9848485,77,16,23,2,0,1,0,0,0,6.6,2,1,5929,1.88707,0,23,3.135494,3.135494,1,2.4,5.76,.65999999 +0,.482509,71,10,3,0,0,1,0,1,1,16.58,2,1,5041,2.808197,0,3,1.098612,1.098612,1,1.2,1.44,1.658 +0,.482509,66,14,7,0,0,1,1,0,0,16.58,0,1,4356,2.808197,0,7,1.94591,1.94591,1,.2,.04,1.658 +0,.1702761,65,14,2,4,0,1,1,1,0,18.147,2,1,4225,2.898505,0,2,.6931472,.6931472,1,0,0,1.8146999 +0,.1702761,66,16,4,21,0,1,0,1,0,18.147,2,1,4356,2.898505,0,4,1.386294,1.386294,1,.2,.04,1.8146999 +0,.1958328,76,12,43,6,0,1,0,1,1,22.029,4,1,5776,3.09236,0,43,3.7612,3.7612,1,2.2,4.84,2.2028999 +0,.2157863,75,12,4,4,0,1,1,0,0,19.992,1,1,5625,2.995332,0,4,1.386294,1.386294,1,2,4,1.9992001 +0,.9976307,66,12,6,8,0,0,0,1,1,8.019,5,0,4356,2.081814,1,6,1.791759,1.791759,1,.2,.04,.80190001 +0,0,68,10,0,0,0,0,0,0,0,11.293,1,0,4624,2.424183,0,0,,-4.60517,0,.6,.36,1.1293 +0,0,65,12,2,0,0,1,1,0,0,37.713,2,1,4225,3.630005,0,2,.6931472,.6931472,1,0,0,3.7713001 +0,.4874165,71,12,7,7,0,1,1,0,0,15.576,1,1,5041,2.745731,0,7,1.94591,1.94591,1,1.2,1.44,1.5576 +0,1,79,2,5,0,1,0,1,1,1,6,2,0,6241,1.791759,1,5,1.609438,1.609438,1,2.8,7.84,.6 +0,.3692308,71,6,9,0,1,0,1,1,1,12.415,5,0,5041,2.518905,1,9,2.197225,2.197225,1,1.2,1.44,1.2415 +0,.1540942,77,17,6,2,0,0,0,0,0,42.182,1,0,5929,3.741994,0,6,1.791759,1.791759,1,2.4,5.76,4.2181999 +0,.1462317,76,17,0,0,0,0,1,0,0,44.45,0,0,5776,3.794365,0,0,,-4.60517,0,2.2,4.84,4.4450001 +0,.2647059,71,17,0,0,0,1,0,0,0,34,1,1,5041,3.526361,0,0,,-4.60517,0,1.2,1.44,3.4 +0,.2647059,67,12,6,0,0,1,1,0,0,34,3,1,4489,3.526361,0,6,1.791759,1.791759,1,.4,.16,3.4 +1,.3922688,67,12,6,0,0,1,0,0,0,49.41,4,1,4489,3.900153,0,6,1.791759,1.791759,1,.4,.16,4.941 +0,.8911434,74,12,7,0,0,0,1,0,0,14.588,3,0,5476,2.680199,0,7,1.94591,1.94591,1,1.8,3.24,1.4588 +0,.9663392,71,2,7,0,1,0,1,0,0,6.209,3,0,5041,1.826,1,7,1.94591,1.94591,1,1.2,1.44,.62090001 +0,.8140008,78,13,16,6,0,1,1,0,0,17.199,2,1,6084,2.844851,0,16,2.772589,2.772589,1,2.6,6.76,1.7198999 +0,.9322034,85,10,14,2,0,1,0,1,1,8.85,1,1,7225,2.180418,0,14,2.639057,2.639057,1,4,16,.88500004 +0,.9322034,83,8,10,0,0,1,1,1,1,8.85,4,1,6889,2.180418,0,10,2.302585,2.302585,1,3.6,12.96,.88500004 +1,0,65,8,3,0,0,1,0,0,0,14.286,1,1,4225,2.65928,1,3,1.098612,1.098612,1,0,0,1.4286 +0,.261872,85,17,5,5,0,1,1,1,1,54.561,3,1,7225,3.999319,0,5,1.609438,1.609438,1,4,16,5.4561001 +0,.3839865,76,17,5,8,0,1,1,1,1,33.147,3,1,5776,3.500952,0,5,1.609438,1.609438,1,2.2,4.84,3.3146999 +0,1,77,6,5,0,1,0,1,1,1,2.107,1,0,5929,.7452652,1,5,1.609438,1.609438,1,2.4,5.76,.21070001 +0,1,74,3,3,0,1,0,0,1,1,2.107,2,0,5476,.7452652,1,3,1.098612,1.098612,1,1.8,3.24,.21070001 +0,.5646012,85,14,5,2,0,0,1,1,1,35.069,0,0,7225,3.557317,0,5,1.609438,1.609438,1,4,16,3.5069 +0,0,74,12,22,1,0,0,1,1,0,.38,1,0,5476,-.967584,1,22,3.091043,3.091043,1,1.8,3.24,.038 +0,.584342,72,10,13,1,0,1,0,1,0,16.771,4,1,5184,2.819651,0,13,2.564949,2.564949,1,1.4,1.96,1.6771 +0,.584342,67,12,0,0,0,1,1,0,0,16.771,0,1,4489,2.819651,0,0,,-4.60517,0,.4,.16,1.6771 +0,.8346549,73,11,7,2,0,1,1,0,0,11.981,1,1,5329,2.483322,0,7,1.94591,1.94591,1,1.6,2.56,1.1981 +0,1,69,8,0,0,1,0,1,1,0,2.64,0,0,4761,.9707789,1,0,,-4.60517,0,.8,.64,.26400001 +0,.3467601,85,8,8,1,0,1,1,1,1,28.55,3,1,7225,3.351657,0,8,2.079442,2.079442,1,4,16,2.8549999 +0,0,70,13,3,1,0,1,0,0,0,50,1,1,4900,3.912023,0,3,1.098612,1.098612,1,1,1,5 +0,0,66,13,16,4,0,1,1,1,1,-1,3,1,4356,,0,16,2.772589,2.772589,1,.2,.04,-.1 +0,.738202,78,12,13,1,0,0,0,1,0,11.379,0,0,6084,2.43177,0,13,2.564949,2.564949,1,2.6,6.76,1.1379 +0,.5128518,76,9,14,12,0,0,1,1,0,16.379,5,0,5776,2.796,0,14,2.639057,2.639057,1,2.2,4.84,1.6379 +0,1.268346,72,16,13,0,0,1,0,0,0,11.038,3,1,5184,2.401344,0,13,2.564949,2.564949,1,1.4,1.96,1.1038 +0,.4,66,13,1,0,0,0,1,0,0,25,1,0,4356,3.218876,1,1,0,0,1,.2,.04,2.5 +0,.3688268,72,16,4,2,0,0,1,0,0,27.113,2,0,5184,3.300013,0,4,1.386294,1.386294,1,1.4,1.96,2.7113001 +0,.3633589,75,16,0,0,0,0,0,0,0,27.521,0,0,5625,3.314949,0,0,,-4.60517,0,2,4,2.7521 +0,.7635438,79,12,14,6,0,1,1,1,0,16.502,1,1,6241,2.803482,0,14,2.639057,2.639057,1,2.8,7.84,1.6502001 +0,.5833333,84,9,3,0,0,1,1,1,1,24,1,1,7056,3.178054,0,3,1.098612,1.098612,1,3.8,14.44,2.4 +0,1,78,12,7,2,0,0,1,1,1,12,4,0,6084,2.484907,1,7,1.94591,1.94591,1,2.6,6.76,1.2 +0,.9069768,81,6,9,1,0,0,0,0,0,10.75,3,0,6561,2.374906,0,9,2.197225,2.197225,1,3.2,10.24,1.075 +0,.9069768,78,11,8,3,0,0,1,1,0,10.75,2,0,6084,2.374906,0,8,2.079442,2.079442,1,2.6,6.76,1.075 +0,.8518689,70,10,1,1,0,1,0,1,0,13.002,1,1,4900,2.565103,0,1,0,0,1,1,1,1.3002 +0,.8518689,70,10,4,1,0,1,1,0,0,13.002,2,1,4900,2.565103,0,4,1.386294,1.386294,1,1,1,1.3002 +0,.5335556,83,6,10,0,0,0,0,1,1,11.995,1,0,6889,2.48449,0,10,2.302585,2.302585,1,3.6,12.96,1.1995 +0,.5335556,83,3,5,0,1,0,1,1,1,11.995,2,0,6889,2.48449,0,5,1.609438,1.609438,1,3.6,12.96,1.1995 +0,0,79,12,3,10,0,0,1,1,0,0,0,0,6241,,0,3,1.098612,1.098612,1,2.8,7.84,0 +0,1,74,12,9,12,1,0,1,1,1,7.572,2,0,5476,2.024457,1,9,2.197225,2.197225,1,1.8,3.24,.7572 +0,.3652941,79,16,4,3,0,0,1,0,0,34.219,2,0,6241,3.532781,0,4,1.386294,1.386294,1,2.8,7.84,3.4219002 +0,.0666807,72,11,5,2,0,1,1,1,1,23.83,2,1,5184,3.170945,0,5,1.609438,1.609438,1,1.4,1.96,2.383 +0,0,66,12,9,9,1,0,1,1,1,7.056,3,0,4356,1.953878,1,9,2.197225,2.197225,1,.2,.04,.70560002 +0,0,67,10,3,0,0,1,1,0,1,0,2,1,4489,,0,3,1.098612,1.098612,1,.4,.16,0 +0,0,75,17,28,0,0,1,0,0,0,37,2,1,5625,3.610918,1,28,3.332205,3.332205,1,2,4,3.7 +0,1,76,12,14,0,0,0,1,0,0,10,2,0,5776,2.302585,1,14,2.639057,2.639057,1,2.2,4.84,1 +0,.1575177,81,13,7,2,0,1,0,1,1,75.801,2,1,6561,4.328112,0,7,1.94591,1.94591,1,3.2,10.24,7.5801003 +0,.9933775,66,6,6,1,0,0,0,1,1,14.496,2,0,4356,2.673873,0,6,1.791759,1.791759,1,.2,.04,1.4496 +0,1,75,12,15,1,0,0,1,1,1,14,1,0,5625,2.639057,1,15,2.70805,2.70805,1,2,4,1.4 +0,0,68,11,13,0,0,0,1,0,0,21.09,1,0,4624,3.048799,1,13,2.564949,2.564949,1,.6,.36,2.109 +1,.6221223,79,11,32,5,0,1,1,1,0,16.897,4,1,6241,2.827136,0,32,3.465736,3.465736,1,2.8,7.84,1.6896999 +0,.2713102,74,12,4,0,0,1,0,1,0,20.272,0,1,5476,3.009241,0,4,1.386294,1.386294,1,1.8,3.24,2.0271999 +0,.2713102,74,12,2,0,0,1,1,0,0,20.272,2,1,5476,3.009241,0,2,.6931472,.6931472,1,1.8,3.24,2.0271999 +1,0,69,17,10,0,0,0,0,0,0,17.8,1,0,4761,2.879198,1,10,2.302585,2.302585,1,.8,.64,1.7799999 +0,.4020695,75,12,6,0,1,0,1,1,1,33.825,3,0,5625,3.5212,0,6,1.791759,1.791759,1,2,4,3.3825001 +0,.9836779,65,17,21,0,0,1,0,0,0,18.38,1,1,4225,2.911263,0,21,3.044523,3.044523,1,0,0,1.8379999 +0,0,67,13,0,0,0,0,0,0,0,16,0,0,4489,2.772589,1,0,,-4.60517,0,.4,.16,1.6 +0,.3838772,74,12,15,0,0,1,0,1,0,26.05,3,1,5476,3.260018,0,15,2.70805,2.70805,1,1.8,3.24,2.6049999 +0,.2877698,69,14,3,0,0,1,1,0,0,34.75,0,1,4761,3.54818,0,3,1.098612,1.098612,1,.8,.64,3.475 +0,0,68,5,3,0,0,1,1,0,0,7,1,1,4624,1.94591,1,3,1.098612,1.098612,1,.6,.36,.7 +1,.1479446,71,13,9,4,0,1,0,0,0,47.315,3,1,5041,3.856827,0,9,2.197225,2.197225,1,1.2,1.44,4.7314999 +1,.1493684,69,12,1,0,0,1,1,0,0,46.864,0,1,4761,3.84725,0,1,0,0,1,.8,.64,4.6863998 +0,.1515152,72,11,4,1,0,1,1,1,0,66,3,1,5184,4.189655,0,4,1.386294,1.386294,1,1.4,1.96,6.6 +0,.4469027,72,10,20,4,1,0,1,1,1,2.712,5,0,5184,.9976863,0,20,2.995732,2.995732,1,1.4,1.96,.27119999 +0,1,77,12,3,0,0,0,1,1,1,7.2,2,0,5929,1.974081,0,3,1.098612,1.098612,1,2.4,5.76,.71999998 +0,0,67,1,3,0,1,0,1,0,0,4,2,0,4489,1.386294,1,3,1.098612,1.098612,1,.4,.16,.4 +0,.8536586,75,13,2,3,0,0,1,0,0,8.2,1,0,5625,2.104134,0,2,.6931472,.6931472,1,2,4,.81999998 +0,.8536586,80,12,11,8,0,0,0,1,0,8.2,1,0,6400,2.104134,0,11,2.397895,2.397895,1,3,9,.81999998 +0,.3571676,75,12,1,0,0,0,0,0,0,60.669,1,0,5625,4.105433,0,1,0,0,1,2,4,6.0668999 +0,.1732361,75,12,0,2,0,0,0,0,0,111.882,0,0,5625,4.717445,0,0,,-4.60517,0,2,4,11.1882 +0,.388822,72,15,0,5,0,0,1,0,0,49.848,3,0,5184,3.908978,0,0,,-4.60517,0,1.4,1.96,4.9848 +0,.3983657,77,12,4,2,0,1,0,0,0,24.475,2,1,5929,3.197652,0,4,1.386294,1.386294,1,2.4,5.76,2.4475 +0,.3983657,75,12,10,3,0,1,1,1,1,24.475,1,1,5625,3.197652,0,10,2.302585,2.302585,1,2,4,2.4475 +0,.1568628,74,16,1,1,0,1,0,0,0,51,0,1,5476,3.931826,1,1,0,0,1,1.8,3.24,5.1 +0,.4705882,72,12,1,0,0,1,1,0,0,17,1,1,5184,2.833213,1,1,0,0,1,1.4,1.96,1.7 +0,1,85,6,6,0,1,0,0,1,1,4.85,1,0,7225,1.578979,1,6,1.791759,1.791759,1,4,16,.48499999 +0,1,83,6,8,2,1,0,1,1,1,4.85,3,0,6889,1.578979,1,8,2.079442,2.079442,1,3.6,12.96,.48499999 +0,.3406337,83,12,3,0,0,0,1,1,1,33.925,4,0,6889,3.524152,0,3,1.098612,1.098612,1,3.6,12.96,3.3924999 +0,.2532435,70,14,8,3,0,1,0,0,0,54.493,1,1,4900,3.998072,0,8,2.079442,2.079442,1,1,1,5.4493 +0,.2195786,84,12,1,2,0,0,1,1,1,49.554,3,0,7056,3.903063,0,1,0,0,1,3.8,14.44,4.9554001 +0,0,85,8,9,0,0,0,1,1,1,11,2,0,7225,2.397895,1,9,2.197225,2.197225,1,4,16,1.1 +0,.9619338,72,14,9,3,0,1,1,1,0,8.853,4,1,5184,2.180756,0,9,2.197225,2.197225,1,1.4,1.96,.88529997 +0,.9433962,72,11,12,4,0,1,0,1,1,10.6,3,1,5184,2.360854,0,12,2.484907,2.484907,1,1.4,1.96,1.06 +1,.0071381,65,16,2,0,0,1,0,0,0,173.436,0,1,4225,5.155808,0,2,.6931472,.6931472,1,0,0,17.3436 +0,.4090909,85,6,6,0,0,1,1,1,1,22,2,1,7225,3.091043,0,6,1.791759,1.791759,1,4,16,2.2 +0,1,67,12,7,0,0,0,1,1,0,10,2,0,4489,2.302585,1,7,1.94591,1.94591,1,.4,.16,1 +0,1,75,12,10,0,0,0,0,0,0,10,2,0,5625,2.302585,0,10,2.302585,2.302585,1,2,4,1 +0,.6622517,76,8,2,6,0,0,0,0,0,13.59,1,0,5776,2.609334,0,2,.6931472,.6931472,1,2.2,4.84,1.359 +0,.6622517,81,10,4,1,0,0,1,1,0,13.59,3,0,6561,2.609334,0,4,1.386294,1.386294,1,3.2,10.24,1.359 +0,.40571,77,14,8,12,0,0,0,0,0,26.62,0,0,5929,3.281663,0,8,2.079442,2.079442,1,2.4,5.76,2.6620001 +0,1,65,14,1,0,1,0,0,0,0,3.12,0,0,4225,1.137833,1,1,0,0,1,0,0,.31199999 +0,.127193,67,17,9,17,0,0,0,0,0,106.704,2,0,4489,4.670059,0,9,2.197225,2.197225,1,.4,.16,10.6704 +0,.8287085,75,8,18,1,0,1,1,0,0,8.757,0,1,5625,2.169853,0,18,2.890372,2.890372,1,2,4,.8757 +0,.8287085,76,8,22,3,0,1,0,1,0,8.757,0,1,5776,2.169853,0,22,3.091043,3.091043,1,2.2,4.84,.8757 +0,.2391033,71,12,2,2,0,0,0,0,0,39.209,1,0,5041,3.668906,0,2,.6931472,.6931472,1,1.2,1.44,3.9209 +0,.4693367,70,12,5,11,0,0,1,0,0,19.975,3,0,4900,2.994482,0,5,1.609438,1.609438,1,1,1,1.9975 +0,.5,85,0,6,1,1,0,1,1,1,17.16,2,0,7225,2.842581,1,6,1.791759,1.791759,1,4,16,1.716 +0,.6132712,83,14,9,0,1,0,0,0,1,24.459,3,0,6889,3.196998,0,9,2.197225,2.197225,1,3.6,12.96,2.4459 +0,0,79,14,7,0,1,0,1,1,0,9.459,2,0,6241,2.246967,0,7,1.94591,1.94591,1,2.8,7.84,.94589996 +1,.4316547,81,12,20,7,0,0,1,1,0,27.8,2,0,6561,3.325036,0,20,2.995732,2.995732,1,3.2,10.24,2.7799999 +0,.4507255,74,12,2,1,0,0,1,1,1,43.694,3,0,5476,3.777211,0,2,.6931472,.6931472,1,1.8,3.24,4.3694 +0,.5233645,65,8,2,0,0,1,0,1,1,26.75,1,1,4225,3.286535,0,2,.6931472,.6931472,1,0,0,2.675 +0,.3653706,83,13,3,0,0,1,1,1,0,49.484,1,1,6889,3.901649,0,3,1.098612,1.098612,1,3.6,12.96,4.9484001 +0,.9302326,85,9,5,1,0,1,1,0,0,8.6,1,1,7225,2.151762,0,5,1.609438,1.609438,1,4,16,.86000004 +0,.620091,77,13,2,0,0,0,0,0,0,19.352,3,0,5929,2.962796,0,2,.6931472,.6931472,1,2.4,5.76,1.9351999 +0,.620091,72,11,0,1,0,0,1,0,0,19.352,0,0,5184,2.962796,0,0,,-4.60517,0,1.4,1.96,1.9351999 +0,.99905,67,9,6,2,0,0,0,1,1,12.632,2,0,4489,2.536233,0,6,1.791759,1.791759,1,.4,.16,1.2632 +0,.6450216,69,14,3,5,1,0,1,1,1,8.316,4,0,4761,2.118181,0,3,1.098612,1.098612,1,.8,.64,.8316 +1,.2344707,65,12,8,1,0,1,1,0,0,27.432,1,1,4225,3.31171,0,8,2.079442,2.079442,1,0,0,2.7431999 +0,1,79,11,4,0,0,0,0,0,0,10.074,1,0,6241,2.309958,0,4,1.386294,1.386294,1,2.8,7.84,1.0074 +0,1,68,12,12,0,0,0,1,0,0,10.074,4,0,4624,2.309958,0,12,2.484907,2.484907,1,.6,.36,1.0074 +0,.7528231,82,14,3,0,0,1,1,0,0,12.752,2,1,6724,2.545688,0,3,1.098612,1.098612,1,3.4,11.56,1.2752 +0,.204244,66,12,4,0,0,1,1,0,0,37.7,1,1,4356,3.62966,0,4,1.386294,1.386294,1,.2,.04,3.7700001 +0,1,76,7,14,1,1,0,0,1,1,7.428,5,0,5776,2.005257,0,14,2.639057,2.639057,1,2.2,4.84,.7428 +0,.4090909,85,16,27,4,0,0,0,1,1,22,2,0,7225,3.091043,0,27,3.295837,3.295837,1,4,16,2.2 +0,0,83,14,1,0,0,0,1,1,1,0,1,0,6889,,0,1,0,0,1,3.6,12.96,0 +0,.8857404,82,12,2,1,1,0,1,1,0,13.128,4,0,6724,2.574747,0,2,.6931472,.6931472,1,3.4,11.56,1.3128 +0,.6282997,65,12,6,0,0,1,0,1,1,22.919,1,1,4225,3.131966,0,6,1.791759,1.791759,1,0,0,2.2919001 +0,.5611286,73,14,6,1,0,1,1,1,1,19.14,5,1,5329,2.95178,0,6,1.791759,1.791759,1,1.6,2.56,1.9139999 +0,.5481069,85,16,10,0,0,0,1,1,1,23.718,4,0,7225,3.166234,0,10,2.302585,2.302585,1,4,16,2.3718 +0,.6327779,71,7,9,3,0,1,1,1,1,18.964,5,1,5041,2.942543,0,9,2.197225,2.197225,1,1.2,1.44,1.8964001 +0,.6327779,79,8,8,0,0,1,0,1,1,18.964,2,1,6241,2.942543,0,8,2.079442,2.079442,1,2.8,7.84,1.8964001 +0,0,79,16,7,4,0,1,1,1,0,0,3,1,6241,,1,7,1.94591,1.94591,1,2.8,7.84,0 +0,.6518132,78,9,0,0,0,0,1,0,0,16.876,2,0,6084,2.825892,0,0,,-4.60517,0,2.6,6.76,1.6875999 +0,.4090583,66,16,14,11,0,1,0,0,0,47.382,1,1,4356,3.858243,0,14,2.639057,2.639057,1,.2,.04,4.7382 +0,.716472,78,12,10,0,0,1,0,1,1,27.052,2,1,6084,3.297761,0,10,2.302585,2.302585,1,2.6,6.76,2.7052 +0,0,72,2,2,1,1,0,0,1,0,3.6,2,0,5184,1.280934,0,2,.6931472,.6931472,1,1.4,1.96,.35999999 +0,.5063506,65,12,3,0,0,1,1,1,0,38.894,1,1,4225,3.66084,0,3,1.098612,1.098612,1,0,0,3.8894001 +0,0,79,12,10,1,0,1,0,1,1,13.163,1,1,6241,2.57741,0,10,2.302585,2.302585,1,2.8,7.84,1.3163 +0,0,74,12,13,1,0,1,1,1,0,40.265,0,1,5476,3.695482,0,13,2.564949,2.564949,1,1.8,3.24,4.0264999 +0,.7069949,72,12,13,0,0,0,1,1,1,13.324,2,0,5184,2.589567,0,13,2.564949,2.564949,1,1.4,1.96,1.3324 +0,.0888674,85,14,2,0,0,1,1,0,0,78.769,1,1,7225,4.366519,0,2,.6931472,.6931472,1,4,16,7.8768997 +0,.1780808,85,17,2,0,0,1,0,0,0,39.308,1,1,7225,3.671428,0,2,.6931472,.6931472,1,4,16,3.9307999 +0,.8852201,80,10,8,0,0,1,1,1,1,15.264,3,1,6400,2.725497,0,8,2.079442,2.079442,1,3,9,1.5264 +0,1,71,16,9,4,1,0,1,1,0,9.408,2,0,5041,2.24156,0,9,2.197225,2.197225,1,1.2,1.44,.9408 +0,.4736842,80,9,7,0,0,0,1,0,0,19,2,0,6400,2.944439,1,7,1.94591,1.94591,1,3,9,1.9 +0,.2931626,66,12,5,7,0,1,1,0,0,32.337,6,1,4356,3.476212,0,5,1.609438,1.609438,1,.2,.04,3.2337002 +0,0,85,12,4,0,0,0,0,0,0,0,1,0,7225,,0,4,1.386294,1.386294,1,4,16,0 +0,0,83,12,6,0,0,0,1,0,0,0,1,0,6889,,0,6,1.791759,1.791759,1,3.6,12.96,0 +1,.3674338,74,8,0,1,0,0,0,0,0,15.513,0,0,5476,2.741678,0,0,,-4.60517,0,1.8,3.24,1.5513 +0,.8802395,81,12,1,1,0,1,1,0,0,16.7,1,1,6561,2.815409,0,1,0,0,1,3.2,10.24,1.6700001 +0,0,72,7,6,0,0,1,1,1,0,3.75,3,1,5184,1.321756,1,6,1.791759,1.791759,1,1.4,1.96,.375 +0,0,76,4,9,0,0,1,0,1,0,15,2,1,5776,2.70805,0,9,2.197225,2.197225,1,2.2,4.84,1.5 +0,.5662514,76,12,3,6,0,0,1,0,0,7.947,3,0,5776,2.072794,0,3,1.098612,1.098612,1,2.2,4.84,.7947 +0,1,65,10,4,0,0,0,1,0,0,10,0,0,4225,2.302585,0,4,1.386294,1.386294,1,0,0,1 +0,.5194805,67,11,1,1,0,1,0,0,0,19.25,0,1,4489,2.957511,0,1,0,0,1,.4,.16,1.925 +0,.623053,66,12,4,0,0,1,1,0,0,16.05,0,1,4356,2.775709,0,4,1.386294,1.386294,1,.2,.04,1.6049999 +0,0,68,0,1,0,1,0,1,1,0,.047,1,0,4624,-3.057608,0,1,0,0,1,.6,.36,.0047 +0,.1331927,85,13,6,1,0,0,1,1,0,18.019,2,0,7225,2.891427,0,6,1.791759,1.791759,1,4,16,1.8018999 +0,1,83,14,2,0,0,1,1,1,1,12.948,0,1,6889,2.560941,0,2,.6931472,.6931472,1,3.6,12.96,1.2948 +0,.6383403,74,17,4,6,0,1,0,0,0,15.039,2,1,5476,2.710647,0,4,1.386294,1.386294,1,1.8,3.24,1.5039 +0,.5839771,74,15,3,6,0,1,1,0,0,16.439,1,1,5476,2.799657,0,3,1.098612,1.098612,1,1.8,3.24,1.6438999 +0,.5629929,74,12,8,0,0,1,0,1,0,4.945,1,1,5476,1.598377,0,8,2.079442,2.079442,1,1.8,3.24,.49450002 +0,0,73,8,2,0,1,0,1,0,1,6.768,2,0,5329,1.912206,1,2,.6931472,.6931472,1,1.6,2.56,.67680001 +0,.5741532,85,12,15,2,0,1,1,1,0,13.58,4,1,7225,2.608598,1,15,2.70805,2.70805,1,4,16,1.358 +0,.8971962,71,7,2,0,0,1,0,0,0,10.7,1,1,5041,2.370244,0,2,.6931472,.6931472,1,1.2,1.44,1.07 +0,1,71,15,7,17,0,1,0,1,1,8.676,1,1,5041,2.160561,1,7,1.94591,1.94591,1,1.2,1.44,.86759996 +0,1,69,13,1,1,0,1,1,0,0,8.676,2,1,4761,2.160561,1,1,0,0,1,.8,.64,.86759996 +0,1,75,8,1,0,0,0,1,0,0,6,1,0,5625,1.791759,1,1,0,0,1,2,4,.6 +0,.9551605,78,16,2,0,0,1,1,1,1,3.769,2,1,6084,1.32681,0,2,.6931472,.6931472,1,2.6,6.76,.37690001 +0,.625,83,8,4,0,0,0,1,0,0,14.4,1,0,6889,2.667228,0,4,1.386294,1.386294,1,3.6,12.96,1.44 +0,1,85,7,7,0,1,0,1,1,1,8.032,2,0,7225,2.083434,1,7,1.94591,1.94591,1,4,16,.80319996 +0,.837508,81,17,5,28,0,1,0,1,0,14.013,2,1,6561,2.639985,0,5,1.609438,1.609438,1,3.2,10.24,1.4013 +0,.3347324,79,12,5,2,0,1,0,0,0,38.837,2,1,6241,3.659374,0,5,1.609438,1.609438,1,2.8,7.84,3.8837002 +0,.5,67,13,17,2,0,0,1,0,0,30,2,0,4489,3.401197,0,17,2.833213,2.833213,1,.4,.16,3 +0,.6582412,81,10,9,4,0,1,1,1,1,15.192,4,1,6561,2.720769,0,9,2.197225,2.197225,1,3.2,10.24,1.5192 +0,.3087806,75,12,8,0,0,1,0,0,0,17.812,3,1,5625,2.879872,0,8,2.079442,2.079442,1,2,4,1.7812 +0,.3087806,73,12,2,5,0,1,1,1,0,17.812,5,1,5329,2.879872,0,2,.6931472,.6931472,1,1.6,2.56,1.7812 +0,.1565969,74,6,18,0,1,0,1,0,0,15.045,3,0,5476,2.711046,1,18,2.890372,2.890372,1,1.8,3.24,1.5045 +0,.3231888,81,14,14,10,0,0,1,1,0,11.139,1,0,6561,2.410452,0,14,2.639057,2.639057,1,3.2,10.24,1.1139 +0,0,68,12,8,1,0,0,1,1,0,9.855,2,0,4624,2.287979,0,8,2.079442,2.079442,1,.6,.36,.98549995 +0,0,74,8,11,0,0,0,0,0,0,7.956,2,0,5476,2.073926,0,11,2.397895,2.397895,1,1.8,3.24,.79559999 +0,.2877773,72,16,8,3,0,0,0,0,0,38.224,0,0,5184,3.643464,0,8,2.079442,2.079442,1,1.4,1.96,3.8223999 +0,.3041951,70,12,2,0,0,0,1,0,0,36.161,2,0,4900,3.587981,0,2,.6931472,.6931472,1,1,1,3.6160999 +0,0,76,12,10,0,1,0,1,1,1,18.146,5,0,5776,2.89845,0,10,2.302585,2.302585,1,2.2,4.84,1.8146 +0,0,76,11,15,0,0,0,1,0,0,0,3,0,5776,,0,15,2.70805,2.70805,1,2.2,4.84,0 +0,1,71,14,3,0,0,1,0,0,0,4.032,3,1,5041,1.394263,0,3,1.098612,1.098612,1,1.2,1.44,.40320001 +0,1,68,9,4,0,0,1,1,0,0,4.032,0,1,4624,1.394263,0,4,1.386294,1.386294,1,.6,.36,.40320001 +0,.821898,67,12,3,3,0,1,0,1,1,23.582,1,1,4489,3.160484,0,3,1.098612,1.098612,1,.4,.16,2.3582001 +0,.6666667,65,12,4,16,0,0,1,1,1,18,3,0,4225,2.890372,0,4,1.386294,1.386294,1,0,0,1.8 +0,.6666667,78,16,7,0,0,0,1,0,0,14.4,2,0,6084,2.667228,1,7,1.94591,1.94591,1,2.6,6.76,1.44 +0,0,67,3,2,0,1,0,1,0,0,6,1,0,4489,1.791759,1,2,.6931472,.6931472,1,.4,.16,.6 +0,.3305421,77,14,3,0,0,1,1,0,0,36.304,0,1,5929,3.591928,0,3,1.098612,1.098612,1,2.4,5.76,3.6304001 +0,.95165,81,8,5,7,0,0,1,1,0,10.424,2,0,6561,2.344111,0,5,1.609438,1.609438,1,3.2,10.24,1.0424 +0,.2749344,72,12,0,5,0,1,1,0,0,23.642,2,1,5184,3.163025,0,0,,-4.60517,0,1.4,1.96,2.3642 +0,.4333333,74,12,1,5,0,1,0,0,0,15,1,1,5476,2.70805,0,1,0,0,1,1.8,3.24,1.5 +0,0,74,15,8,23,0,1,1,1,1,22.108,1,1,5476,3.09594,0,8,2.079442,2.079442,1,1.8,3.24,2.2108 +0,.8348106,75,5,5,0,0,1,1,1,1,9.928,3,1,5625,2.295359,0,5,1.609438,1.609438,1,2,4,.99280005 +0,0,66,4,0,0,1,0,0,0,0,0,0,0,4356,,1,0,,-4.60517,0,.2,.04,0 +1,0,68,12,2,0,0,1,0,0,0,11.7,1,1,4624,2.459589,1,2,.6931472,.6931472,1,.6,.36,1.17 +0,0,69,12,2,0,0,1,1,0,0,9.724,0,1,4761,2.274597,1,2,.6931472,.6931472,1,.8,.64,.9724 +0,.1220488,80,17,2,20,0,0,0,1,0,99.96,1,0,6400,4.60477,1,2,.6931472,.6931472,1,3,9,9.9959999 +0,.6666667,71,17,2,4,0,1,1,0,0,18.3,0,1,5041,2.906901,1,2,.6931472,.6931472,1,1.2,1.44,1.8299999 +0,.985058,78,12,2,0,0,1,0,0,0,19.676,2,1,6084,2.9794,0,2,.6931472,.6931472,1,2.6,6.76,1.9676001 +0,.985058,76,12,0,0,0,0,1,0,0,19.676,0,0,5776,2.9794,0,0,,-4.60517,0,2.2,4.84,1.9676001 +0,.2118831,76,15,5,0,0,1,0,0,0,22.654,1,1,5776,3.120336,0,5,1.609438,1.609438,1,2.2,4.84,2.2653999 +0,.6670412,73,13,1,0,0,0,1,0,0,14.239,1,0,5329,2.655985,0,1,0,0,1,1.6,2.56,1.4239 +0,.6670412,73,14,3,0,0,0,0,0,0,14.239,2,0,5329,2.655985,0,3,1.098612,1.098612,1,1.6,2.56,1.4239 +0,0,65,6,4,0,0,0,0,0,0,18.267,1,0,4225,2.905096,1,4,1.386294,1.386294,1,0,0,1.8267 +0,1,77,12,4,0,0,0,0,0,0,7.2,2,0,5929,1.974081,1,4,1.386294,1.386294,1,2.4,5.76,.71999998 +0,1,77,4,1,0,0,0,1,0,0,7.2,5,0,5929,1.974081,1,1,0,0,1,2.4,5.76,.71999998 +0,1,84,0,2,0,0,0,1,1,1,12,1,0,7056,2.484907,1,2,.6931472,.6931472,1,3.8,14.44,1.2 +0,0,81,11,2,0,1,0,1,0,0,7,2,0,6561,1.94591,1,2,.6931472,.6931472,1,3.2,10.24,.7 +0,.4265302,85,12,4,0,0,0,1,0,0,28.134,1,0,7225,3.336979,0,4,1.386294,1.386294,1,4,16,2.8134001 +0,1,85,16,12,8,0,1,1,1,1,7.046,3,1,7225,1.95246,0,12,2.484907,2.484907,1,4,16,.7046 +0,.25,65,8,11,0,0,0,1,0,0,24,4,0,4225,3.178054,1,11,2.397895,2.397895,1,0,0,2.4 +0,.368932,72,12,1,1,0,1,0,0,0,25.75,1,1,5184,3.248435,0,1,0,0,1,1.4,1.96,2.575 +0,.2657343,70,12,1,1,0,1,1,0,0,35.75,2,1,4900,3.57655,0,1,0,0,1,1,1,3.575 +0,.2368947,85,17,0,0,0,1,1,1,1,29.549,0,1,7225,3.38605,1,0,,-4.60517,0,4,16,2.9549 +0,0,74,12,0,0,0,0,1,0,1,0,1,0,5476,,0,0,,-4.60517,0,1.8,3.24,0 +0,1,82,14,11,0,1,0,1,1,0,6.552,1,0,6724,1.87977,0,11,2.397895,2.397895,1,3.4,11.56,.6552 +0,1,77,10,4,0,0,0,0,1,0,5.047,0,0,5929,1.618794,0,4,1.386294,1.386294,1,2.4,5.76,.50469999 +0,1,72,12,1,0,0,0,1,1,1,5.047,1,0,5184,1.618794,0,1,0,0,1,1.4,1.96,.50469999 +0,.3333412,71,17,5,0,0,1,0,0,0,42.191,2,1,5041,3.742207,0,5,1.609438,1.609438,1,1.2,1.44,4.2191002 +0,1,85,11,1,1,0,0,1,0,1,11.11,0,0,7225,2.407845,0,1,0,0,1,4,16,1.111 +0,.2345999,71,17,1,1,0,0,1,1,0,84.399,1,0,5041,4.435555,0,1,0,0,1,1.2,1.44,8.4399002 +0,.6284929,78,12,8,8,0,1,0,1,1,13.098,4,1,6084,2.572459,0,8,2.079442,2.079442,1,2.6,6.76,1.3098 +0,.6284929,70,12,7,1,0,1,1,0,0,13.098,2,1,4900,2.572459,0,7,1.94591,1.94591,1,1,1,1.3098 +0,.9945582,69,16,10,3,0,1,1,1,0,7.718,2,1,4761,2.043555,0,10,2.302585,2.302585,1,.8,.64,.77179999 +0,1,76,5,2,0,1,0,0,0,1,8.5,1,0,5776,2.140066,1,2,.6931472,.6931472,1,2.2,4.84,.85 +0,.8717949,78,6,2,0,1,0,1,1,1,9.75,3,0,6084,2.277267,1,2,.6931472,.6931472,1,2.6,6.76,.975 +0,.9715288,75,8,18,0,0,1,1,1,1,14.822,4,1,5625,2.696113,0,18,2.890372,2.890372,1,2,4,1.4822 +0,.1936296,69,12,0,0,0,1,0,0,0,10.329,2,1,4761,2.334955,0,0,,-4.60517,0,.8,.64,1.0329 +0,0,78,3,5,1,0,0,1,1,1,0,3,0,6084,,1,5,1.609438,1.609438,1,2.6,6.76,0 +0,.975,77,7,7,0,0,0,0,0,0,4,1,0,5929,1.386294,0,7,1.94591,1.94591,1,2.4,5.76,.4 +0,.207013,65,12,0,2,0,0,1,1,1,31.399,0,0,4225,3.446776,0,0,,-4.60517,0,0,0,3.1399 +0,1,73,15,8,1,0,1,1,0,0,14.52,2,1,5329,2.675527,0,8,2.079442,2.079442,1,1.6,2.56,1.452 +0,.9993812,73,12,8,11,0,1,0,0,0,19.394,2,1,5329,2.964964,0,8,2.079442,2.079442,1,1.6,2.56,1.9393999 +0,.9993812,73,17,3,2,0,1,1,0,0,19.394,1,1,5329,2.964964,0,3,1.098612,1.098612,1,1.6,2.56,1.9393999 +0,.6123385,83,15,11,2,0,0,0,1,1,23.99,3,0,6889,3.177637,0,11,2.397895,2.397895,1,3.6,12.96,2.399 +0,0,71,3,13,0,1,0,1,1,0,5.7,3,0,5041,1.740466,1,13,2.564949,2.564949,1,1.2,1.44,.56999998 +0,0,85,2,3,0,1,0,0,1,0,5.7,1,0,7225,1.740466,1,3,1.098612,1.098612,1,4,16,.56999998 +0,.2092196,71,12,12,1,1,0,1,1,1,14.339,1,0,5041,2.662983,1,12,2.484907,2.484907,1,1.2,1.44,1.4339 +0,.6,65,8,7,0,0,1,0,0,0,25,4,1,4225,3.218876,0,7,1.94591,1.94591,1,0,0,2.5 +0,0,78,10,0,0,0,1,0,0,0,47.334,1,1,6084,3.857229,0,0,,-4.60517,0,2.6,6.76,4.7334 +0,0,75,10,8,0,0,1,1,0,0,12.334,1,1,5625,2.51236,0,8,2.079442,2.079442,1,2,4,1.2334 +0,.709607,65,8,23,1,0,1,0,1,1,18.32,1,1,4225,2.907993,0,23,3.135494,3.135494,1,0,0,1.832 +0,.2858193,65,16,9,1,0,1,0,0,0,48.982,1,1,4225,3.891453,0,9,2.197225,2.197225,1,0,0,4.8981998 +0,0,70,14,7,0,0,1,0,0,0,25,1,1,4900,3.218876,1,7,1.94591,1.94591,1,1,1,2.5 +0,.6092917,67,11,3,2,0,0,1,0,0,13.13,1,0,4489,2.5749,0,3,1.098612,1.098612,1,.4,.16,1.313 +0,.4523393,85,4,6,4,1,0,1,1,1,14.299,2,0,7225,2.66019,0,6,1.791759,1.791759,1,4,16,1.4299 +0,.5237808,85,6,8,0,1,0,0,1,1,16.589,2,0,7225,2.80874,0,8,2.079442,2.079442,1,4,16,1.6589001 +0,1,83,8,1,1,0,0,1,1,0,9.2,2,0,6889,2.219203,1,1,0,0,1,3.6,12.96,.91999998 +0,.2388535,81,4,7,0,1,0,1,0,0,15.7,2,0,6561,2.753661,1,7,1.94591,1.94591,1,3.2,10.24,1.57 +0,1,77,12,2,0,0,0,1,0,0,10,3,0,5929,2.302585,1,2,.6931472,.6931472,1,2.4,5.76,1 +0,.5034261,71,13,10,1,0,0,1,1,0,21.453,3,0,5041,3.065865,0,10,2.302585,2.302585,1,1.2,1.44,2.1452999 +0,.9202454,77,7,0,0,0,0,0,0,1,8.15,2,0,5929,2.098018,1,0,,-4.60517,0,2.4,5.76,.81499996 +0,.7109005,76,8,1,1,0,0,1,1,1,10.55,3,0,5776,2.356126,1,1,0,0,1,2.2,4.84,1.055 +0,.0884861,65,16,0,0,0,0,1,0,0,28.14,0,0,4225,3.337192,0,0,,-4.60517,0,0,0,2.8139999 +0,1,70,8,8,0,1,0,0,0,0,6.8,3,0,4900,1.916923,0,8,2.079442,2.079442,1,1,1,.68000002 +0,1,77,8,3,0,1,0,0,1,1,7,2,0,5929,1.94591,1,3,1.098612,1.098612,1,2.4,5.76,.7 +0,.9578544,73,12,3,4,0,0,0,0,0,6.525,0,0,5329,1.875641,0,3,1.098612,1.098612,1,1.6,2.56,.65250001 +0,1,85,12,2,0,0,0,1,1,1,5.18,2,0,7225,1.644805,0,2,.6931472,.6931472,1,4,16,.51799998 +0,0,71,1,4,0,1,0,1,1,0,1.308,3,0,5041,.2684992,1,4,1.386294,1.386294,1,1.2,1.44,.1308 +0,1,75,8,3,0,0,1,1,1,0,11.532,3,1,5625,2.445126,0,3,1.098612,1.098612,1,2,4,1.1532 +0,.9090909,84,11,16,0,1,0,1,1,1,6.864,4,0,7056,1.92629,0,16,2.772589,2.772589,1,3.8,14.44,.68639998 +1,.2852776,68,17,5,0,0,1,1,0,0,49.075,1,1,4624,3.89335,1,5,1.609438,1.609438,1,.6,.36,4.9075001 +0,0,69,11,17,3,1,0,1,1,1,6.624,4,0,4761,1.890699,1,17,2.833213,2.833213,1,.8,.64,.66240001 +0,.2223281,85,12,2,0,0,1,1,1,1,37.782,2,1,7225,3.631833,0,2,.6931472,.6931472,1,4,16,3.7782001 +0,.095774,84,8,22,0,0,1,1,1,1,25.059,3,1,7056,3.221233,1,22,3.091043,3.091043,1,3.8,14.44,2.5059 +0,.4,73,12,1,0,0,0,1,1,1,15,3,0,5329,2.70805,0,1,0,0,1,1.6,2.56,1.5 +0,1,85,8,0,1,0,0,1,1,1,11.58,1,0,7225,2.44928,1,0,,-4.60517,0,4,16,1.158 +0,1,73,14,8,19,1,0,1,0,1,8.032,1,0,5329,2.083434,1,8,2.079442,2.079442,1,1.6,2.56,.80319996 +0,0,85,12,3,0,0,1,0,1,0,0,1,1,7225,,0,3,1.098612,1.098612,1,4,16,0 +0,.974578,76,14,13,10,0,0,0,1,1,9.834,3,0,5776,2.285846,0,13,2.564949,2.564949,1,2.2,4.84,.98339996 +0,.974578,76,16,2,7,0,0,1,1,1,9.834,3,0,5776,2.285846,0,2,.6931472,.6931472,1,2.2,4.84,.98339996 +0,.3047851,67,12,3,1,0,1,1,0,0,32.81,0,1,4489,3.490733,0,3,1.098612,1.098612,1,.4,.16,3.2810001 +0,1,84,12,5,3,0,0,0,1,1,14.556,2,0,7056,2.678003,0,5,1.609438,1.609438,1,3.8,14.44,1.4556 +0,1,82,13,0,10,0,0,1,0,0,14.52,0,0,6724,2.675527,0,0,,-4.60517,0,3.4,11.56,1.452 +0,.0231474,66,16,16,0,0,1,0,0,0,159.802,1,1,4356,5.073936,0,16,2.772589,2.772589,1,.2,.04,15.9802 +0,.305154,65,12,2,0,0,1,1,0,0,36.729,1,1,4225,3.603567,0,2,.6931472,.6931472,1,0,0,3.6729 +0,0,75,6,3,0,0,1,1,1,1,9.4,3,1,5625,2.24071,1,3,1.098612,1.098612,1,2,4,.93999996 +0,0,71,10,0,0,1,0,0,0,0,7.957,0,0,5041,2.074052,1,0,,-4.60517,0,1.2,1.44,.79569998 +0,.9811321,83,5,6,2,1,0,1,1,1,6.996,2,0,6889,1.945338,0,6,1.791759,1.791759,1,3.6,12.96,.69959998 +0,0,78,4,2,0,0,0,0,1,1,0,1,0,6084,,1,2,.6931472,.6931472,1,2.6,6.76,0 +0,0,72,5,4,0,0,0,1,0,0,0,2,0,5184,,1,4,1.386294,1.386294,1,1.4,1.96,0 +0,.7614041,68,2,14,4,0,0,0,0,0,24.728,2,0,4624,3.207936,1,14,2.639057,2.639057,1,.6,.36,2.4728001 +0,0,65,3,12,0,0,0,1,0,0,0,1,0,4225,,1,12,2.484907,2.484907,1,0,0,0 +0,.997391,78,17,10,1,0,1,0,1,1,5.366,4,1,6084,1.680083,1,10,2.302585,2.302585,1,2.6,6.76,.53660002 +0,.997391,74,12,8,1,0,1,1,1,1,5.366,4,1,5476,1.680083,1,8,2.079442,2.079442,1,1.8,3.24,.53660002 +0,.830133,82,12,15,11,0,0,1,0,0,16.248,4,0,6724,2.78797,0,15,2.70805,2.70805,1,3.4,11.56,1.6247999 +0,.4615385,84,11,8,0,0,0,1,0,0,26,3,0,7056,3.258096,0,8,2.079442,2.079442,1,3.8,14.44,2.6 +0,.7349682,72,17,43,2,0,1,0,1,0,29.687,3,1,5184,3.390709,0,43,3.7612,3.7612,1,1.4,1.96,2.9687 +0,.7349682,72,16,2,1,0,1,1,1,0,29.687,1,1,5184,3.390709,0,2,.6931472,.6931472,1,1.4,1.96,2.9687 +0,1,83,1,1,15,0,0,0,1,1,8,0,0,6889,2.079442,1,1,0,0,1,3.6,12.96,.8 +0,.0877938,67,12,9,45,0,1,1,0,0,140.249,2,1,4489,4.943419,0,9,2.197225,2.197225,1,.4,.16,14.024899 +0,0,76,12,2,3,0,1,1,0,0,30.439,1,1,5776,3.415725,0,2,.6931472,.6931472,1,2.2,4.84,3.0438999 +0,.6712418,85,11,5,3,0,0,1,1,0,7.723,4,0,7225,2.044203,0,5,1.609438,1.609438,1,4,16,.7723 +0,0,71,9,0,0,1,0,0,0,0,9.459,0,0,5041,2.246967,1,0,,-4.60517,0,1.2,1.44,.94589996 +0,0,69,6,14,1,1,0,1,1,1,9.459,2,0,4761,2.246967,1,14,2.639057,2.639057,1,.8,.64,.94589996 +0,.9393939,81,12,0,0,0,0,1,0,0,9.9,1,0,6561,2.292535,1,0,,-4.60517,0,3.2,10.24,.98999996 +0,.9393939,80,12,0,0,0,0,0,0,0,9.9,0,0,6400,2.292535,1,0,,-4.60517,0,3,9,.98999996 +0,0,80,0,3,1,1,0,1,1,1,0,3,0,6400,,1,3,1.098612,1.098612,1,3,9,0 +0,1,67,12,8,1,1,0,1,0,0,8.4,1,0,4489,2.128232,1,8,2.079442,2.079442,1,.4,.16,.83999996 +0,.9560839,74,12,4,4,0,1,0,1,1,15.689,1,1,5476,2.75296,0,4,1.386294,1.386294,1,1.8,3.24,1.5689 +0,.084246,85,7,20,1,1,0,0,1,1,29.675,4,0,7225,3.390305,0,20,2.995732,2.995732,1,4,16,2.9674999 +0,.562017,80,8,4,2,0,0,1,1,0,12.811,1,0,6400,2.550304,0,4,1.386294,1.386294,1,3,9,1.2811 +0,1,75,12,7,0,1,0,0,0,0,6,0,0,5625,1.791759,1,7,1.94591,1.94591,1,2,4,.6 +0,.4929792,73,14,9,24,0,0,0,0,0,12.463,1,0,5329,2.522764,1,9,2.197225,2.197225,1,1.6,2.56,1.2463 +0,.4929792,70,13,6,3,0,0,1,0,0,12.463,4,0,4900,2.522764,1,6,1.791759,1.791759,1,1,1,1.2463 +0,.6435643,72,8,0,0,0,0,0,0,0,10.1,0,0,5184,2.312536,0,0,,-4.60517,0,1.4,1.96,1.01 +0,0,82,3,3,0,0,0,1,1,1,0,2,0,6724,,0,3,1.098612,1.098612,1,3.4,11.56,0 +0,.1393088,75,13,0,0,0,0,1,0,0,71.783,0,0,5625,4.273648,0,0,,-4.60517,0,2,4,7.1782997 +0,.9124088,69,3,0,0,1,0,0,1,0,6.576,0,0,4761,1.883427,0,0,,-4.60517,0,.8,.64,.65760002 +0,.4430769,70,12,4,2,0,1,1,0,0,32.5,1,1,4900,3.48124,0,4,1.386294,1.386294,1,1,1,3.25 +0,0,75,17,4,3,0,1,1,0,0,39.046,0,1,5625,3.664741,0,4,1.386294,1.386294,1,2,4,3.9046001 +0,1,75,3,7,0,1,0,1,0,1,6.3,1,0,5625,1.84055,1,7,1.94591,1.94591,1,2,4,.63000002 +0,.4667445,79,12,5,1,0,1,0,1,0,20.568,2,1,6241,3.023736,0,5,1.609438,1.609438,1,2.8,7.84,2.0568001 +0,0,66,0,13,0,1,0,0,1,1,9.459,1,0,4356,2.246967,0,13,2.564949,2.564949,1,.2,.04,.94589996 +0,0,66,11,0,0,0,0,1,0,0,14.4,1,0,4356,2.667228,0,0,,-4.60517,0,.2,.04,1.44 +0,.4549027,68,8,0,0,0,1,0,0,0,10.433,0,1,4624,2.344974,0,0,,-4.60517,0,.6,.36,1.0433 +0,.8852826,68,9,3,5,0,1,1,0,0,5.361,1,1,4624,1.679151,0,3,1.098612,1.098612,1,.6,.36,.53610001 +0,1,75,8,0,0,0,1,0,0,0,10,1,1,5625,2.302585,1,0,,-4.60517,0,2,4,1 +0,1,67,10,4,2,0,1,1,0,0,10,0,1,4489,2.302585,1,4,1.386294,1.386294,1,.4,.16,1 +0,.8985507,79,12,1,3,0,0,0,1,0,8.625,3,0,6241,2.154665,1,1,0,0,1,2.8,7.84,.8625 +0,.8985507,71,11,1,0,0,0,1,0,0,8.625,2,0,5041,2.154665,1,1,0,0,1,1.2,1.44,.8625 +0,.6723443,66,12,11,6,0,0,0,0,0,22.31,3,0,4356,3.105035,0,11,2.397895,2.397895,1,.2,.04,2.2309999 +0,1,85,5,2,0,1,0,1,1,0,6,2,0,7225,1.791759,1,2,.6931472,.6931472,1,4,16,.6 +0,.1418842,79,16,2,1,0,0,0,1,0,7.048,2,0,6241,1.952744,0,2,.6931472,.6931472,1,2.8,7.84,.70479999 +0,.1418842,77,14,4,2,0,0,1,1,0,7.048,1,0,5929,1.952744,0,4,1.386294,1.386294,1,2.4,5.76,.70479999 +0,.0426133,71,16,3,0,0,1,0,0,0,41.067,0,1,5041,3.715205,0,3,1.098612,1.098612,1,1.2,1.44,4.1067001 +0,.0326346,67,12,4,16,0,1,1,1,0,53.624,3,1,4489,3.981997,0,4,1.386294,1.386294,1,.4,.16,5.3624001 +0,.9222661,71,12,23,6,0,1,1,1,1,15.18,3,1,5041,2.719979,0,23,3.135494,3.135494,1,1.2,1.44,1.518 +0,0,70,12,2,0,1,0,0,0,0,0,0,0,4900,,0,2,.6931472,.6931472,1,1,1,0 +0,1,65,8,7,0,1,0,1,1,0,8.664,2,0,4225,2.159176,1,7,1.94591,1.94591,1,0,0,.86639996 +0,.0108572,83,17,1,0,0,1,0,1,0,138.341,0,1,6889,4.929722,0,1,0,0,1,3.6,12.96,13.8341 +0,.0601478,83,17,7,7,0,1,1,1,0,29.095,3,1,6889,3.370566,0,7,1.94591,1.94591,1,3.6,12.96,2.9094999 +0,.3947369,85,12,8,13,0,1,0,0,0,7.6,0,1,7225,2.028148,0,8,2.079442,2.079442,1,4,16,.75999999 +0,.1569434,85,17,3,0,0,0,1,1,0,63.233,0,0,7225,4.146826,0,3,1.098612,1.098612,1,4,16,6.3233002 +0,.4098361,67,12,4,0,0,0,1,1,0,24.4,1,0,4489,3.194583,0,4,1.386294,1.386294,1,.4,.16,2.44 +0,0,85,12,3,3,0,0,0,0,0,1.2,1,0,7225,.1823216,0,3,1.098612,1.098612,1,4,16,.12 +0,0,85,12,6,0,0,0,1,1,0,1.2,2,0,7225,.1823216,0,6,1.791759,1.791759,1,4,16,.12 +0,1,85,8,10,0,1,0,0,0,1,6,3,0,7225,1.791759,0,10,2.302585,2.302585,1,4,16,.6 +0,0,71,12,15,2,0,1,1,0,0,19.6,2,1,5041,2.97553,0,15,2.70805,2.70805,1,1.2,1.44,1.96 +0,.106218,85,13,3,2,0,0,1,1,1,15.6,0,0,7225,2.747271,0,3,1.098612,1.098612,1,4,16,1.56 +0,.5,74,8,7,0,0,0,1,0,1,14,3,0,5476,2.639057,1,7,1.94591,1.94591,1,1.8,3.24,1.4 +0,1,76,8,3,0,0,1,0,1,1,4.698,2,1,5776,1.547137,0,3,1.098612,1.098612,1,2.2,4.84,.4698 +0,1,76,14,0,0,0,1,1,0,0,4.698,2,1,5776,1.547137,0,0,,-4.60517,0,2.2,4.84,.4698 +0,.3846154,83,12,0,0,0,0,1,0,0,15.6,0,0,6889,2.747271,1,0,,-4.60517,0,3.6,12.96,1.56 +0,.5479452,70,12,5,3,0,0,1,1,0,21.9,2,0,4900,3.086487,0,5,1.609438,1.609438,1,1,1,2.19 +0,.9108955,73,16,22,0,0,0,0,1,1,8.967,4,0,5329,2.193551,0,22,3.091043,3.091043,1,1.6,2.56,.8967 +0,.9108955,74,12,7,21,0,0,1,1,1,8.967,3,0,5476,2.193551,0,7,1.94591,1.94591,1,1.8,3.24,.8967 +0,1,73,12,7,0,0,0,1,0,0,12,1,0,5329,2.484907,0,7,1.94591,1.94591,1,1.6,2.56,1.2 +0,.7857453,82,12,3,1,0,0,1,1,1,23.01,4,0,6724,3.135929,0,3,1.098612,1.098612,1,3.4,11.56,2.301 +0,.4272251,83,12,8,5,0,1,1,0,0,23.875,2,1,6889,3.172832,0,8,2.079442,2.079442,1,3.6,12.96,2.3875 +0,0,67,10,9,0,1,0,1,1,1,0,2,0,4489,,1,9,2.197225,2.197225,1,.4,.16,0 +0,.7750629,75,11,7,1,0,0,0,0,0,12.319,1,0,5625,2.511143,0,7,1.94591,1.94591,1,2,4,1.2319 +0,.7750629,73,12,7,3,0,0,1,1,1,12.319,7,0,5329,2.511143,0,7,1.94591,1.94591,1,1.6,2.56,1.2319 +0,1,78,11,14,0,0,0,1,1,1,11.52,3,0,6084,2.444085,1,14,2.639057,2.639057,1,2.6,6.76,1.152 +0,0,78,9,4,0,1,0,1,1,1,6.624,2,0,6084,1.890699,1,4,1.386294,1.386294,1,2.6,6.76,.66240001 +0,.8994471,74,15,4,0,0,0,0,0,0,9.766,2,0,5476,2.278907,0,4,1.386294,1.386294,1,1.8,3.24,.97659998 +0,.5394771,80,8,5,1,0,1,0,0,0,15.756,3,1,6400,2.757221,0,5,1.609438,1.609438,1,3,9,1.5756 +0,.5394771,71,12,3,0,0,1,1,0,0,15.756,2,1,5041,2.757221,0,3,1.098612,1.098612,1,1.2,1.44,1.5756 +0,.2358079,85,12,7,0,0,1,1,1,0,45.8,0,1,7225,3.824284,0,7,1.94591,1.94591,1,4,16,4.5799999 +0,.6412723,80,16,13,1,0,1,0,0,0,15.594,4,1,6400,2.746886,0,13,2.564949,2.564949,1,3,9,1.5594 +0,.6412723,78,13,30,0,0,1,1,1,1,15.594,6,1,6084,2.746886,0,30,3.401197,3.401197,1,2.6,6.76,1.5594 +1,.0531993,66,11,0,0,0,1,1,0,0,75.189,3,1,4356,4.320005,1,0,,-4.60517,0,.2,.04,7.5189003 +0,0,71,12,6,0,1,0,1,0,0,.099,3,0,5041,-2.312635,0,6,1.791759,1.791759,1,1.2,1.44,.0099 +0,0,67,14,11,0,1,0,0,1,1,9.801,2,0,4489,2.282484,0,11,2.397895,2.397895,1,.4,.16,.98009996 +0,.3738379,71,9,24,21,0,1,1,1,1,30.334,2,1,5041,3.412269,0,24,3.178054,3.178054,1,1.2,1.44,3.0334 +0,.2984841,69,12,3,18,0,1,1,0,1,29.422,5,1,4761,3.381743,0,3,1.098612,1.098612,1,.8,.64,2.9422001 +0,1,79,12,25,8,0,1,0,1,0,7.02,4,1,6241,1.948763,0,25,3.218876,3.218876,1,2.8,7.84,.702 +0,.8693888,74,12,12,4,0,0,1,1,0,11.829,2,0,5476,2.470554,1,12,2.484907,2.484907,1,1.8,3.24,1.1829 +0,.8693888,78,12,12,3,0,0,0,0,0,11.829,1,0,6084,2.470554,1,12,2.484907,2.484907,1,2.6,6.76,1.1829 +0,1,74,12,0,0,0,0,1,0,0,12,0,0,5476,2.484907,0,0,,-4.60517,0,1.8,3.24,1.2 +0,1,69,9,4,17,0,0,1,1,1,9.024,2,0,4761,2.199888,0,4,1.386294,1.386294,1,.8,.64,.90240002 +0,.7348587,75,9,3,1,0,1,0,0,0,11.888,1,1,5625,2.475529,0,3,1.098612,1.098612,1,2,4,1.1888 +0,.7348587,70,12,12,3,0,1,1,0,0,11.888,0,1,4900,2.475529,0,12,2.484907,2.484907,1,1,1,1.1888 +0,0,73,17,12,24,0,1,1,1,1,34.328,3,1,5329,3.535961,0,12,2.484907,2.484907,1,1.6,2.56,3.4327999 +0,.3517662,76,17,4,2,0,1,0,0,0,62.027,2,1,5776,4.12757,0,4,1.386294,1.386294,1,2.2,4.84,6.2027 +0,.8094406,69,12,1,2,1,0,1,0,0,6.864,0,0,4761,1.92629,0,1,0,0,1,.8,.64,.68639998 +0,1,67,8,3,0,0,0,1,0,0,8.9,0,0,4489,2.186051,1,3,1.098612,1.098612,1,.4,.16,.88999996 +0,1,76,4,3,0,1,0,1,0,0,9,1,0,5776,2.197225,1,3,1.098612,1.098612,1,2.2,4.84,.9 +0,.1797753,76,12,4,0,0,0,0,0,0,22.25,0,0,5776,3.102342,0,4,1.386294,1.386294,1,2.2,4.84,2.225 +0,.9411765,72,10,1,0,0,0,1,0,0,4.25,0,0,5184,1.446919,0,1,0,0,1,1.4,1.96,.425 +0,.9765625,85,12,30,8,0,1,1,1,1,7.68,3,1,7225,2.03862,0,30,3.401197,3.401197,1,4,16,.76799998 +0,.5720548,67,12,7,2,0,0,0,1,1,23.725,1,0,4489,3.166529,0,7,1.94591,1.94591,1,.4,.16,2.3725 +0,0,72,14,1,0,1,0,0,0,1,15.869,1,0,5184,2.764368,0,1,0,0,1,1.4,1.96,1.5869 +0,1,77,12,2,0,0,0,0,0,0,19.694,1,0,5929,2.980314,0,2,.6931472,.6931472,1,2.4,5.76,1.9694 +0,.3529412,78,12,0,0,0,0,1,0,0,17,0,0,6084,2.833213,0,0,,-4.60517,0,2.6,6.76,1.7 +1,0,82,8,5,0,0,1,0,1,0,27.305,1,1,6724,3.30707,0,5,1.609438,1.609438,1,3.4,11.56,2.7305 +0,.6377119,65,6,5,0,1,0,1,1,1,5.664,2,0,4225,1.73413,1,5,1.609438,1.609438,1,0,0,.5664 +0,1,67,12,9,0,1,0,0,1,1,10.753,3,0,4489,2.375185,0,9,2.197225,2.197225,1,.4,.16,1.0753 +0,.3051956,74,11,11,1,0,0,1,0,1,16.514,3,0,5476,2.804209,1,11,2.397895,2.397895,1,1.8,3.24,1.6514 +1,.4824015,65,11,17,0,0,1,0,0,0,39.208,4,1,4225,3.668881,1,17,2.833213,2.833213,1,0,0,3.9208 +0,0,73,13,17,1,0,0,1,0,0,10.98,3,0,5329,2.396075,0,17,2.833213,2.833213,1,1.6,2.56,1.098 +0,.5439476,67,11,1,0,0,0,0,0,0,20.752,1,0,4489,3.032643,0,1,0,0,1,.4,.16,2.0752001 +0,.4869715,68,12,3,1,0,0,1,0,1,23.18,2,0,4624,3.14329,0,3,1.098612,1.098612,1,.6,.36,2.318 +0,.2543958,72,17,15,4,0,1,1,1,1,53.46,2,1,5184,3.978934,0,15,2.70805,2.70805,1,1.4,1.96,5.3459999 +0,1,76,12,6,0,0,0,0,1,1,11.88,1,0,5776,2.474856,0,6,1.791759,1.791759,1,2.2,4.84,1.188 +0,.7420232,72,12,8,0,0,1,1,1,0,16.172,1,1,5184,2.783281,1,8,2.079442,2.079442,1,1.4,1.96,1.6172001 +0,.625,73,12,2,0,0,0,1,0,0,12,1,0,5329,2.484907,1,2,.6931472,.6931472,1,1.6,2.56,1.2 +0,.625,70,14,12,1,0,0,0,0,0,12,1,0,4900,2.484907,1,12,2.484907,2.484907,1,1,1,1.2 +0,.5765913,85,12,9,2,0,0,1,1,0,24.572,2,0,7225,3.201608,0,9,2.197225,2.197225,1,4,16,2.4572001 +0,.5481749,74,14,6,0,0,1,1,0,1,15.506,3,1,5476,2.741227,0,6,1.791759,1.791759,1,1.8,3.24,1.5506 +0,.5481749,73,10,7,0,0,1,0,1,1,15.506,2,1,5329,2.741227,0,7,1.94591,1.94591,1,1.6,2.56,1.5506 +0,.4280237,65,17,23,2,0,1,0,1,1,33.643,4,1,4225,3.515805,0,23,3.135494,3.135494,1,0,0,3.3643002 +0,.4915872,74,12,6,6,0,0,1,1,0,21.396,4,0,5476,3.063204,0,6,1.791759,1.791759,1,1.8,3.24,2.1396 +0,.4823001,76,16,8,0,0,0,0,0,0,21.808,0,0,5776,3.082277,0,8,2.079442,2.079442,1,2.2,4.84,2.1808001 +0,.1525424,74,13,2,1,1,0,0,0,0,59,1,0,5476,4.077538,0,2,.6931472,.6931472,1,1.8,3.24,5.9 +0,1,69,12,0,0,1,0,1,1,0,9,0,0,4761,2.197225,0,0,,-4.60517,0,.8,.64,.9 +0,1,80,11,5,0,0,0,1,0,0,8.736,2,0,6400,2.167452,1,5,1.609438,1.609438,1,3,9,.87360001 +0,.999643,79,12,2,3,0,0,1,0,0,14.005,1,0,6241,2.639414,0,2,.6931472,.6931472,1,2.8,7.84,1.4005 +0,.4868174,67,15,0,0,0,0,0,0,0,20.747,1,0,4489,3.032402,0,0,,-4.60517,0,.4,.16,2.0747 +0,.4868174,65,12,0,2,0,1,1,0,0,20.747,0,1,4225,3.032402,0,0,,-4.60517,0,0,0,2.0747 +0,1,85,12,0,0,0,0,1,0,0,9,1,0,7225,2.197225,0,0,,-4.60517,0,4,16,.9 +0,.6572419,76,12,3,0,0,0,1,0,0,7.498,0,0,5776,2.014636,0,3,1.098612,1.098612,1,2.2,4.84,.74980001 +0,.4462555,76,12,1,0,0,1,0,0,0,11.043,0,1,5776,2.401797,0,1,0,0,1,2.2,4.84,1.1043 +0,.299086,77,14,6,2,0,1,0,1,0,41.794,4,1,5929,3.732753,0,6,1.791759,1.791759,1,2.4,5.76,4.1793999 +0,.306756,73,12,2,0,0,1,1,1,0,40.749,3,1,5329,3.707431,0,2,.6931472,.6931472,1,1.6,2.56,4.0749001 +0,.4033614,68,17,5,11,0,1,0,1,0,29.75,1,1,4624,3.392829,0,5,1.609438,1.609438,1,.6,.36,2.975 +0,1,70,3,3,0,1,0,0,0,0,4.08,1,0,4900,1.406097,0,3,1.098612,1.098612,1,1,1,.40799999 +0,1,71,6,5,0,1,0,1,1,0,4.08,2,0,5041,1.406097,0,5,1.609438,1.609438,1,1.2,1.44,.40799999 +0,.6306556,85,16,1,0,0,0,1,1,1,12.996,0,0,7225,2.564642,1,1,0,0,1,4,16,1.2996 +0,.5,77,11,10,3,0,0,1,0,0,28,3,0,5929,3.332205,0,10,2.302585,2.302585,1,2.4,5.76,2.8 +0,.7552447,68,11,1,0,0,1,1,1,0,14.3,2,1,4624,2.660259,1,1,0,0,1,.6,.36,1.43 +0,.3569134,67,16,34,10,0,1,0,1,0,28.018,3,1,4489,3.332847,0,34,3.526361,3.526361,1,.4,.16,2.8018 +0,.1830241,72,16,2,11,0,0,0,0,0,68.297,1,0,5184,4.223866,1,2,.6931472,.6931472,1,1.4,1.96,6.8296997 +0,.2955292,66,14,1,1,0,0,1,0,0,42.297,0,0,4356,3.744716,1,1,0,0,1,.2,.04,4.2297001 +0,.1063421,66,17,2,0,0,1,1,0,0,33.853,1,1,4356,3.522028,0,2,.6931472,.6931472,1,.2,.04,3.3853001 +0,.0717517,73,17,6,0,0,1,0,0,0,50.173,1,1,5329,3.915477,0,6,1.791759,1.791759,1,1.6,2.56,5.0173 +0,.8382019,81,11,24,4,0,0,0,1,0,11.434,2,0,6561,2.436591,0,24,3.178054,3.178054,1,3.2,10.24,1.1434 +0,.8382019,75,12,6,1,0,0,1,0,0,11.434,2,0,5625,2.436591,0,6,1.791759,1.791759,1,2,4,1.1434 +1,.0542005,66,12,6,0,0,1,0,0,0,101.475,1,1,4356,4.619812,0,6,1.791759,1.791759,1,.2,.04,10.1475 +0,.1093635,65,12,1,3,0,1,1,0,0,50.291,1,1,4225,3.917826,0,1,0,0,1,0,0,5.0291 +0,.2564102,84,7,11,0,0,1,1,1,0,11.7,2,1,7056,2.459589,1,11,2.397895,2.397895,1,3.8,14.44,1.17 +1,.3356643,68,10,3,1,0,1,0,0,0,28.6,0,1,4624,3.353407,1,3,1.098612,1.098612,1,.6,.36,2.86 +1,0,65,12,0,0,0,1,1,1,0,19,1,1,4225,2.944439,1,0,,-4.60517,0,0,0,1.9 +0,1,77,12,1,0,0,1,0,0,0,4.416,3,1,5929,1.485234,1,1,0,0,1,2.4,5.76,.44159999 +0,0,72,16,17,7,0,1,1,1,1,11.303,2,1,5184,2.425068,0,17,2.833213,2.833213,1,1.4,1.96,1.1303 +0,.4343891,81,10,2,2,0,1,1,1,0,17.68,1,1,6561,2.872434,0,2,.6931472,.6931472,1,3.2,10.24,1.768 +0,.3181818,77,8,6,0,0,0,0,0,0,22,2,0,5929,3.091043,0,6,1.791759,1.791759,1,2.4,5.76,2.2 +0,.6511628,72,8,10,0,0,0,1,0,0,10.75,2,0,5184,2.374906,0,10,2.302585,2.302585,1,1.4,1.96,1.075 +0,0,76,8,9,0,0,0,1,1,0,6,3,0,5776,1.791759,1,9,2.197225,2.197225,1,2.2,4.84,.6 +0,.127921,84,14,3,0,1,0,0,1,1,50.625,1,0,7056,3.924446,0,3,1.098612,1.098612,1,3.8,14.44,5.0625 +0,0,69,14,0,0,0,0,1,0,0,0,0,0,4761,,0,0,,-4.60517,0,.8,.64,0 +0,.2208943,78,16,0,0,0,0,1,0,0,54.053,3,0,6084,3.989965,0,0,,-4.60517,0,2.6,6.76,5.4053001 +0,.6802561,73,10,4,0,0,1,1,1,0,20.457,2,1,5329,3.018325,0,4,1.386294,1.386294,1,1.6,2.56,2.0457001 +0,.504166,75,12,15,0,0,1,1,1,0,18.843,1,1,5625,2.936141,0,15,2.70805,2.70805,1,2,4,1.8843 +0,.504166,75,13,4,0,0,1,0,1,0,18.843,0,1,5625,2.936141,0,4,1.386294,1.386294,1,2,4,1.8843 +0,.364722,68,9,12,0,1,0,0,1,1,16.747,3,0,4624,2.818219,1,12,2.484907,2.484907,1,.6,.36,1.6747 +0,.0098326,68,17,0,1,0,1,0,0,0,135.773,0,1,4624,4.910985,1,0,,-4.60517,0,.6,.36,13.577299 +0,.9897606,85,11,1,0,0,1,1,0,1,14.161,2,1,7225,2.650492,0,1,0,0,1,4,16,1.4161 +0,1,75,8,3,0,0,0,1,0,0,6.5,1,0,5625,1.871802,0,3,1.098612,1.098612,1,2,4,.65 +0,.7179487,73,12,11,1,0,0,1,0,0,19.5,1,0,5329,2.970414,0,11,2.397895,2.397895,1,1.6,2.56,1.95 +0,.862641,72,10,11,28,0,1,0,1,0,7.535,3,1,5184,2.019559,0,11,2.397895,2.397895,1,1.4,1.96,.75349998 +1,.2516053,68,12,0,0,0,1,0,0,0,70.547,0,1,4624,4.256279,1,0,,-4.60517,0,.6,.36,7.0546997 +0,1,83,8,5,0,1,0,1,1,1,13,4,0,6889,2.564949,1,5,1.609438,1.609438,1,3.6,12.96,1.3 +0,.1556165,74,10,1,0,0,1,0,0,0,45.188,2,1,5476,3.810832,0,1,0,0,1,1.8,3.24,4.5188 +0,.4091226,72,12,5,0,0,1,1,0,0,17.188,1,1,5184,2.844211,0,5,1.609438,1.609438,1,1.4,1.96,1.7188 +0,1,76,14,13,24,0,0,0,1,1,10.092,1,0,5776,2.311743,0,13,2.564949,2.564949,1,2.2,4.84,1.0092 +0,0,78,12,7,0,0,1,0,0,0,10.2,0,1,6084,2.322388,0,7,1.94591,1.94591,1,2.6,6.76,1.02 +0,0,77,12,2,0,0,1,1,0,0,10.2,0,1,5929,2.322388,0,2,.6931472,.6931472,1,2.4,5.76,1.02 +0,0,70,4,7,0,1,0,0,0,0,6.6,4,0,4900,1.88707,1,7,1.94591,1.94591,1,1,1,.65999999 +0,.1667324,70,16,5,7,0,1,1,0,0,50.746,1,1,4900,3.926833,0,5,1.609438,1.609438,1,1,1,5.0745998 +0,.1539343,75,17,3,0,0,1,0,0,0,54.965,0,1,5625,4.006697,0,3,1.098612,1.098612,1,2,4,5.4965 +0,1,67,9,1,0,0,0,0,0,0,9.168,0,0,4489,2.215719,1,1,0,0,1,.4,.16,.91680002 +0,.3767407,84,13,2,3,0,0,1,0,0,2.657,1,0,7056,.9771977,0,2,.6931472,.6931472,1,3.8,14.44,.26570001 +0,1,74,12,3,1,0,1,0,0,0,15,0,1,5476,2.70805,1,3,1.098612,1.098612,1,1.8,3.24,1.5 +0,.8163266,80,12,8,1,0,1,0,0,1,9.8,3,1,6400,2.282382,0,8,2.079442,2.079442,1,3,9,.98000002 +0,.8163266,78,16,0,1,0,1,1,1,1,9.8,1,1,6084,2.282382,0,0,,-4.60517,0,2.6,6.76,.98000002 +0,.9464116,79,12,7,6,0,1,1,1,1,11.551,2,1,6241,2.446772,0,7,1.94591,1.94591,1,2.8,7.84,1.1551 +0,.8997095,68,11,10,2,0,0,1,1,1,11.706,2,0,4624,2.460102,0,10,2.302585,2.302585,1,.6,.36,1.1706 +0,0,78,12,1,0,1,0,0,0,0,4.5,3,0,6084,1.504077,1,1,0,0,1,2.6,6.76,.45 +0,0,74,8,1,0,1,0,1,1,1,4.5,2,0,5476,1.504077,1,1,0,0,1,1.8,3.24,.45 +0,0,77,8,1,0,0,1,0,1,0,.336,0,1,5929,-1.090644,0,1,0,0,1,2.4,5.76,.0336 +0,.58,76,9,13,0,0,0,1,1,1,10.8,3,0,5776,2.379546,0,13,2.564949,2.564949,1,2.2,4.84,1.08 +0,.1949981,71,14,22,2,0,1,0,1,0,63.016,3,1,5041,4.143389,0,22,3.091043,3.091043,1,1.2,1.44,6.3015999 +0,1,67,12,16,1,0,0,1,1,1,5.334,3,0,4489,1.674101,1,16,2.772589,2.772589,1,.4,.16,.53340001 +0,.1962906,75,12,3,0,0,0,0,0,0,27.174,0,0,5625,3.302261,1,3,1.098612,1.098612,1,2,4,2.7174 +0,.4521951,74,16,4,3,0,1,1,1,1,24.6,4,1,5476,3.202746,1,4,1.386294,1.386294,1,1.8,3.24,2.46 +0,.2077665,74,12,2,0,0,0,0,1,1,20.215,2,0,5476,3.006425,0,2,.6931472,.6931472,1,1.8,3.24,2.0215 +0,.2077665,76,11,7,2,0,0,1,1,1,20.215,2,0,5776,3.006425,0,7,1.94591,1.94591,1,2.2,4.84,2.0215 +0,1,69,12,16,9,0,0,1,1,1,9.636,3,0,4761,2.265506,0,16,2.772589,2.772589,1,.8,.64,.96359997 +0,.676285,76,13,1,5,0,1,1,1,1,13.308,2,1,5776,2.588365,0,1,0,0,1,2.2,4.84,1.3308 +0,.5249904,72,9,22,2,0,0,1,1,1,15.726,7,0,5184,2.755315,0,22,3.091043,3.091043,1,1.4,1.96,1.5726 +0,.5249904,72,14,3,1,0,0,0,0,0,15.726,1,0,5184,2.755315,0,3,1.098612,1.098612,1,1.4,1.96,1.5726 +0,.0359032,77,12,7,0,0,1,0,0,0,83.558,2,1,5929,4.425541,0,7,1.94591,1.94591,1,2.4,5.76,8.3557999 +0,.0843692,77,16,6,16,0,1,1,1,0,35.558,3,1,5929,3.571165,0,6,1.791759,1.791759,1,2.4,5.76,3.5557999 +0,.3051643,72,13,13,2,0,1,1,0,0,42.6,0,1,5184,3.751854,0,13,2.564949,2.564949,1,1.4,1.96,4.2599998 +0,0,66,14,5,1,0,1,0,1,0,1.8,3,1,4356,.5877866,0,5,1.609438,1.609438,1,.2,.04,.18 +0,1,85,7,5,0,1,0,1,1,1,4.656,4,0,7225,1.538157,1,5,1.609438,1.609438,1,4,16,.46560001 +0,.5384616,79,12,8,1,1,0,1,0,0,13,2,0,6241,2.564949,0,8,2.079442,2.079442,1,2.8,7.84,1.3 +0,.8419337,73,10,2,0,1,0,1,1,0,7.364,2,0,5329,1.996603,1,2,.6931472,.6931472,1,1.6,2.56,.73639998 +0,1,83,12,2,2,1,0,1,1,1,9.36,6,0,6889,2.236445,1,2,.6931472,.6931472,1,3.6,12.96,.93599997 +0,.9913793,82,12,6,0,0,0,1,1,1,5.8,3,0,6724,1.757858,0,6,1.791759,1.791759,1,3.4,11.56,.58000002 +0,.9913793,73,10,2,0,0,0,0,0,0,5.8,2,0,5329,1.757858,0,2,.6931472,.6931472,1,1.6,2.56,.58000002 +0,.4390619,65,12,1,1,0,1,0,0,0,27.331,0,1,4225,3.308022,0,1,0,0,1,0,0,2.7330999 +0,.8940545,82,8,6,0,0,1,1,0,0,13.422,1,1,6724,2.596895,0,6,1.791759,1.791759,1,3.4,11.56,1.3422 +0,0,76,16,7,0,1,0,1,1,1,0,3,0,5776,,1,7,1.94591,1.94591,1,2.2,4.84,0 +0,.2448525,84,12,9,18,0,1,1,1,1,55.707,1,1,7056,4.020106,0,9,2.197225,2.197225,1,3.8,14.44,5.5707001 +0,0,72,17,19,1,0,1,0,1,0,146.416,2,1,5184,4.986452,0,19,2.944439,2.944439,1,1.4,1.96,14.6416 +0,0,77,17,1,3,0,1,1,0,0,0,0,1,5929,,0,1,0,0,1,2.4,5.76,0 +0,.4943203,76,10,5,1,0,1,1,0,0,8.011,0,1,5776,2.080816,0,5,1.609438,1.609438,1,2.2,4.84,.80109997 +0,1,66,6,15,0,0,0,1,1,1,5.28,4,0,4356,1.663926,1,15,2.70805,2.70805,1,.2,.04,.52800002 +0,.450252,78,12,2,1,0,0,1,1,0,21.428,2,0,6084,3.064698,0,2,.6931472,.6931472,1,2.6,6.76,2.1427999 +0,.2268148,79,12,4,0,0,0,0,0,0,55.79,1,0,6241,4.021595,0,4,1.386294,1.386294,1,2.8,7.84,5.5790001 +0,.2028762,72,16,12,4,0,0,1,0,0,62.373,3,0,5184,4.133132,0,12,2.484907,2.484907,1,1.4,1.96,6.2373001 +0,.9290323,72,5,9,2,0,0,1,1,1,15.5,3,0,5184,2.74084,0,9,2.197225,2.197225,1,1.4,1.96,1.55 +0,1,85,11,5,4,0,0,0,1,1,11,1,0,7225,2.397895,0,5,1.609438,1.609438,1,4,16,1.1 +0,.5756097,67,17,1,5,0,1,0,1,1,10.25,0,1,4489,2.327278,0,1,0,0,1,.4,.16,1.025 +0,.2543353,78,10,1,1,0,1,0,0,0,43.25,1,1,6084,3.766997,0,1,0,0,1,2.6,6.76,4.325 +0,.2543353,74,12,16,2,0,1,1,1,1,43.25,1,1,5476,3.766997,0,16,2.772589,2.772589,1,1.8,3.24,4.325 +0,.2243807,68,17,4,1,0,1,0,0,0,97.241,1,1,4624,4.577192,0,4,1.386294,1.386294,1,.6,.36,9.7240997 +0,0,65,16,13,0,0,1,1,0,0,76.87,1,1,4225,4.342116,0,13,2.564949,2.564949,1,0,0,7.6870003 +0,1,71,7,3,0,1,0,1,1,1,7.584,2,0,5041,2.026041,1,3,1.098612,1.098612,1,1.2,1.44,.75840001 +0,.8450704,71,5,1,7,1,0,1,1,1,7.1,3,0,5041,1.960095,0,1,0,0,1,1.2,1.44,.70999999 +1,.2808219,65,10,1,0,0,1,1,0,0,29.2,1,1,4225,3.374169,0,1,0,0,1,0,0,2.9200001 +0,.7818608,66,9,1,0,1,0,1,0,0,15.348,2,0,4356,2.730985,0,1,0,0,1,.2,.04,1.5348 +0,0,77,3,10,0,1,0,0,1,0,.93,2,0,5929,-.0725707,1,10,2.302585,2.302585,1,2.4,5.76,.093 +0,0,76,3,7,0,1,0,1,1,0,7.17,1,0,5776,1.969906,1,7,1.94591,1.94591,1,2.2,4.84,.71700001 +0,1,72,12,5,0,0,1,0,1,1,15,3,1,5184,2.70805,0,5,1.609438,1.609438,1,1.4,1.96,1.5 +0,.3816631,81,0,16,0,0,0,1,0,0,28.14,2,0,6561,3.337192,1,16,2.772589,2.772589,1,3.2,10.24,2.8139999 +0,.8546512,81,12,2,1,0,1,1,1,1,10.32,1,1,6561,2.334084,0,2,.6931472,.6931472,1,3.2,10.24,1.032 +0,1,70,16,5,0,1,0,1,1,0,11.124,2,0,4900,2.409105,0,5,1.609438,1.609438,1,1,1,1.1124 +0,.5,69,12,7,0,1,0,1,0,0,21.6,0,0,4761,3.072693,0,7,1.94591,1.94591,1,.8,.64,2.16 +0,1,72,12,0,10,0,0,0,0,0,6.8,1,0,5184,1.916923,0,0,,-4.60517,0,1.4,1.96,.68000002 +0,.3589744,85,12,0,0,0,0,1,0,0,23.4,0,0,7225,3.152736,0,0,,-4.60517,0,4,16,2.34 +0,1,85,4,1,0,0,0,0,0,0,8.4,2,0,7225,2.128232,0,1,0,0,1,4,16,.83999996 +0,0,67,11,6,8,0,1,1,0,1,2.052,3,1,4489,.718815,0,6,1.791759,1.791759,1,.4,.16,.2052 +0,.2119115,65,16,0,0,0,1,1,0,0,52.89,1,1,4225,3.968214,0,0,,-4.60517,0,0,0,5.2889999 +0,0,67,12,14,5,0,1,1,1,0,2.1,3,1,4489,.7419373,0,14,2.639057,2.639057,1,.4,.16,.20999999 +0,0,71,14,1,0,0,1,0,0,0,27.715,2,1,5041,3.321974,0,1,0,0,1,1.2,1.44,2.7715 +0,.2863102,71,16,1,1,1,0,1,1,0,39.314,1,0,5041,3.671581,0,1,0,0,1,1.2,1.44,3.9313999 +0,0,74,8,4,0,1,0,1,1,1,6.4,1,0,5476,1.856298,1,4,1.386294,1.386294,1,1.8,3.24,.64000001 +0,.316039,85,16,29,0,0,1,0,0,0,37.97,1,1,7225,3.636796,0,29,3.367296,3.367296,1,4,16,3.7970001 +0,.5157298,76,12,5,0,0,0,1,1,1,23.268,3,0,5776,3.147079,0,5,1.609438,1.609438,1,2.2,4.84,2.3268 +0,.5157298,76,15,14,0,0,0,0,1,0,23.268,3,0,5776,3.147079,0,14,2.639057,2.639057,1,2.2,4.84,2.3268 +0,.5197073,79,14,7,8,0,0,1,1,0,24.052,1,0,6241,3.180218,0,7,1.94591,1.94591,1,2.8,7.84,2.4052 +0,.5197073,82,14,13,0,0,0,0,0,0,24.052,2,0,6724,3.180218,0,13,2.564949,2.564949,1,3.4,11.56,2.4052 +0,.5122387,69,10,13,1,0,1,0,1,1,22.388,5,1,4761,3.108525,0,13,2.564949,2.564949,1,.8,.64,2.2388 +0,.5122387,71,12,0,0,0,1,1,0,0,22.388,1,1,5041,3.108525,0,0,,-4.60517,0,1.2,1.44,2.2388 +0,.2741659,80,12,11,1,0,1,0,1,1,35.008,6,1,6400,3.555577,0,11,2.397895,2.397895,1,3,9,3.5007999 +0,.2639496,70,17,3,1,0,1,1,0,0,36.363,1,1,4900,3.593552,0,3,1.098612,1.098612,1,1,1,3.6362999 +0,.1388717,74,12,6,0,0,0,0,0,0,32.404,0,0,5476,3.478282,0,6,1.791759,1.791759,1,1.8,3.24,3.2403999 +0,.3052296,75,12,4,3,0,0,1,0,0,14.743,3,0,5625,2.690768,0,4,1.386294,1.386294,1,2,4,1.4743 +0,0,80,4,9,0,1,0,1,1,0,8.222,1,0,6400,2.106813,1,9,2.197225,2.197225,1,3,9,.82220001 +0,0,74,4,11,0,0,1,0,0,0,14.43,1,1,5476,2.669309,1,11,2.397895,2.397895,1,1.8,3.24,1.443 +0,0,69,12,7,0,0,1,1,0,0,5.421,1,1,4761,1.69028,1,7,1.94591,1.94591,1,.8,.64,.5421 +0,1,85,12,10,2,0,0,1,1,1,13,2,0,7225,2.564949,0,10,2.302585,2.302585,1,4,16,1.3 +0,.2427947,80,17,9,5,0,1,0,1,0,35.009,3,1,6400,3.555605,0,9,2.197225,2.197225,1,3,9,3.5008999 +0,.2444777,73,13,9,2,0,1,1,0,0,34.768,1,1,5329,3.548697,0,9,2.197225,2.197225,1,1.6,2.56,3.4768002 +0,1,83,4,2,0,1,0,0,1,0,7.2,4,0,6889,1.974081,0,2,.6931472,.6931472,1,3.6,12.96,.71999998 +0,.7560722,72,12,5,1,0,1,0,0,0,10.581,1,1,5184,2.35906,0,5,1.609438,1.609438,1,1.4,1.96,1.0581 +0,.7960199,72,16,13,1,0,1,1,0,0,10.05,0,1,5184,2.307573,0,13,2.564949,2.564949,1,1.4,1.96,1.005 +1,.3134937,76,14,12,1,0,1,0,1,1,22.329,1,1,5776,3.105886,0,12,2.484907,2.484907,1,2.2,4.84,2.2329 +0,.3888889,65,14,13,2,0,1,1,1,1,18,4,1,4225,2.890372,0,13,2.564949,2.564949,1,0,0,1.8 +0,.701641,65,13,7,0,0,1,1,1,0,10.055,1,1,4225,2.30807,0,7,1.94591,1.94591,1,0,0,1.0055 +0,1,71,12,1,2,0,0,1,1,1,7.5,2,0,5041,2.014903,1,1,0,0,1,1.2,1.44,.75 +0,.1598054,76,17,7,2,0,1,0,0,0,20.963,2,1,5776,3.042759,0,7,1.94591,1.94591,1,2.2,4.84,2.0962999 +0,0,65,17,18,9,0,1,1,0,0,15.575,1,1,4225,2.745667,0,18,2.890372,2.890372,1,0,0,1.5575 +0,.9433962,85,8,4,0,0,1,1,1,0,10.6,2,1,7225,2.360854,0,4,1.386294,1.386294,1,4,16,1.06 +0,.1749621,81,12,3,1,0,1,1,1,1,36.968,2,1,6561,3.610053,0,3,1.098612,1.098612,1,3.2,10.24,3.6967999 +0,1,76,6,6,0,0,0,1,1,1,7.5,2,0,5776,2.014903,1,6,1.791759,1.791759,1,2.2,4.84,.75 +0,.3749531,85,12,4,1,0,0,1,1,1,32.004,1,0,7225,3.465861,0,4,1.386294,1.386294,1,4,16,3.2004002 +0,1,84,15,8,0,0,0,1,0,0,19.694,2,0,7056,2.980314,0,8,2.079442,2.079442,1,3.8,14.44,1.9694 +0,.9451321,77,6,0,0,0,1,0,0,0,11.391,1,1,5929,2.432824,0,0,,-4.60517,0,2.4,5.76,1.1391 +0,1,75,3,5,0,1,0,1,1,1,11,3,0,5625,2.397895,1,5,1.609438,1.609438,1,2,4,1.1 +0,0,74,8,0,0,1,0,1,0,0,2.819,0,0,5476,1.036382,1,0,,-4.60517,0,1.8,3.24,.2819 +0,1,85,12,10,0,0,1,1,1,1,11.4,4,1,7225,2.433613,0,10,2.302585,2.302585,1,4,16,1.14 +0,.228737,79,16,3,1,0,1,0,0,0,51.439,0,1,6241,3.940397,0,3,1.098612,1.098612,1,2.8,7.84,5.1438999 +0,.2052722,72,17,3,5,0,1,1,1,0,57.319,1,1,5184,4.048632,0,3,1.098612,1.098612,1,1.4,1.96,5.7319 +0,.8398682,85,12,8,1,0,1,1,0,0,17.598,2,1,7225,2.867785,1,8,2.079442,2.079442,1,4,16,1.7598 +0,1,75,9,4,1,0,0,1,1,0,14,1,0,5625,2.639057,1,4,1.386294,1.386294,1,2,4,1.4 +0,.4615385,67,12,0,0,1,0,0,0,0,26,0,0,4489,3.258096,1,0,,-4.60517,0,.4,.16,2.6 +0,.5,72,6,0,0,0,0,0,0,0,19.784,0,0,5184,2.984874,0,0,,-4.60517,0,1.4,1.96,1.9784 +0,.4897959,75,12,3,1,0,0,0,1,1,14.7,3,0,5625,2.687847,0,3,1.098612,1.098612,1,2,4,1.47 +0,.6465043,85,10,13,0,0,1,0,1,0,15.276,3,1,7225,2.726283,0,13,2.564949,2.564949,1,4,16,1.5276 +0,.6465043,85,12,9,0,0,1,1,0,1,15.276,5,1,7225,2.726283,0,9,2.197225,2.197225,1,4,16,1.5276 +0,0,83,13,0,0,0,0,0,0,0,15,0,0,6889,2.70805,1,0,,-4.60517,0,3.6,12.96,1.5 +0,0,69,6,1,0,0,0,0,0,0,16.019,1,0,4761,2.773776,1,1,0,0,1,.8,.64,1.6018999 +0,1,79,14,3,0,0,0,0,1,1,7,3,0,6241,1.94591,1,3,1.098612,1.098612,1,2.8,7.84,.7 +0,1,77,12,1,0,0,0,0,1,0,2.764,1,0,5929,1.016679,1,1,0,0,1,2.4,5.76,.27639999 +0,1,73,8,4,0,0,0,1,0,0,2.764,0,0,5329,1.016679,1,4,1.386294,1.386294,1,1.6,2.56,.27639999 +0,.8587998,74,12,0,0,0,1,1,0,0,9.915,0,1,5476,2.294049,0,0,,-4.60517,0,1.8,3.24,.9915 +0,.3833691,75,11,3,0,0,0,0,0,0,21.911,3,0,5625,3.086989,0,3,1.098612,1.098612,1,2,4,2.1910999 +0,.1325423,71,12,0,0,0,0,1,0,0,63.376,0,0,5041,4.149085,0,0,,-4.60517,0,1.2,1.44,6.3375999 +0,.7635829,72,12,2,0,0,0,1,0,0,8.172,3,0,5184,2.100714,0,2,.6931472,.6931472,1,1.4,1.96,.81719999 +0,.5,75,10,4,0,1,0,1,1,1,6.8,2,0,5625,1.916923,0,4,1.386294,1.386294,1,2,4,.68000002 +0,0,75,3,5,0,1,0,1,1,0,.165,1,0,5625,-1.80181,1,5,1.609438,1.609438,1,2,4,.0165 +0,.7058824,82,12,0,0,0,0,1,1,0,17,0,0,6724,2.833213,0,0,,-4.60517,0,3.4,11.56,1.7 +0,1,78,4,1,0,1,0,1,1,1,7,3,0,6084,1.94591,0,1,0,0,1,2.6,6.76,.7 +0,.8281787,81,12,0,0,0,0,0,0,0,6.402,1,0,6561,1.85661,0,0,,-4.60517,0,3.2,10.24,.6402 +0,.8281787,71,15,7,0,0,1,1,1,0,6.402,4,1,5041,1.85661,0,7,1.94591,1.94591,1,1.2,1.44,.6402 +0,.5393086,83,12,15,6,0,1,1,1,1,26.699,3,1,6889,3.284626,0,15,2.70805,2.70805,1,3.6,12.96,2.6698999 +0,0,74,10,0,0,0,0,1,1,1,8.489,1,0,5476,2.138771,1,0,,-4.60517,0,1.8,3.24,.84890003 +0,.3241387,68,12,2,0,0,1,0,0,0,54.017,1,1,4624,3.989299,1,2,.6931472,.6931472,1,.6,.36,5.4016998 +0,.9,71,10,7,0,0,0,1,0,0,8,2,0,5041,2.079442,0,7,1.94591,1.94591,1,1.2,1.44,.8 +0,.9,76,4,7,0,0,0,0,0,0,8,2,0,5776,2.079442,0,7,1.94591,1.94591,1,2.2,4.84,.8 +0,0,65,12,3,0,0,1,1,0,0,23.279,2,1,4225,3.147552,0,3,1.098612,1.098612,1,0,0,2.3278999 +0,.8443109,67,12,2,0,0,1,0,0,0,22.956,2,1,4489,3.133579,0,2,.6931472,.6931472,1,.4,.16,2.2955999 +0,0,75,6,4,0,0,0,0,0,0,16,2,0,5625,2.772589,1,4,1.386294,1.386294,1,2,4,1.6 +0,0,78,0,9,0,0,0,1,1,0,0,1,0,6084,,1,9,2.197225,2.197225,1,2.6,6.76,0 +0,.1486886,77,17,14,2,0,0,1,1,0,72.635,1,0,5929,4.285447,0,14,2.639057,2.639057,1,2.4,5.76,7.2635002 +0,.2797203,67,12,11,0,0,1,1,0,0,28.6,1,1,4489,3.353407,0,11,2.397895,2.397895,1,.4,.16,2.86 +0,.2797203,74,12,24,4,0,1,0,1,1,28.6,5,1,5476,3.353407,0,24,3.178054,3.178054,1,1.8,3.24,2.86 +0,0,65,12,0,0,0,1,1,0,0,19.954,0,1,4225,2.99343,0,0,,-4.60517,0,0,0,1.9954 +0,1,78,11,7,0,0,1,0,0,1,8.4,3,1,6084,2.128232,1,7,1.94591,1.94591,1,2.6,6.76,.83999996 +1,0,68,17,1,6,0,1,1,1,0,47,1,1,4624,3.850147,0,1,0,0,1,.6,.36,4.7 +0,1,80,16,1,0,0,0,1,1,0,11.58,0,0,6400,2.44928,0,1,0,0,1,3,9,1.158 +1,0,67,6,0,0,0,1,1,0,0,9.984,1,1,4489,2.300984,1,0,,-4.60517,0,.4,.16,.99840002 +0,0,77,0,6,0,0,0,0,1,1,0,3,0,5929,,1,6,1.791759,1.791759,1,2.4,5.76,0 +0,.3278509,70,14,8,1,0,1,0,1,0,18.301,1,1,4900,2.906956,0,8,2.079442,2.079442,1,1,1,1.8301001 +0,.2420136,67,12,1,0,0,1,1,0,0,24.792,1,1,4489,3.210521,0,1,0,0,1,.4,.16,2.4792 +0,.9281768,67,12,0,1,0,0,0,0,0,9.05,0,0,4489,2.202765,0,0,,-4.60517,0,.4,.16,.90500002 +0,.7518797,78,12,0,0,0,0,1,0,0,6.65,2,0,6084,1.894617,1,0,,-4.60517,0,2.6,6.76,.66500001 +0,1,83,10,1,0,0,0,1,0,0,7.596,3,0,6889,2.027622,1,1,0,0,1,3.6,12.96,.75960002 +0,.3097622,71,17,15,2,0,1,0,0,1,63.92,2,1,5041,4.157632,0,15,2.70805,2.70805,1,1.2,1.44,6.3919998 +0,.9560035,84,9,5,3,0,1,1,0,0,10.069,3,1,7056,2.309461,0,5,1.609438,1.609438,1,3.8,14.44,1.0069 +0,1,73,0,0,0,0,0,1,0,1,12,0,0,5329,2.484907,1,0,,-4.60517,0,1.6,2.56,1.2 +0,.5096661,65,12,5,0,0,1,0,1,1,28.45,1,1,4225,3.348148,1,5,1.609438,1.609438,1,0,0,2.8450001 +0,1,67,16,9,0,0,1,0,0,0,11.25,2,1,4489,2.420368,0,9,2.197225,2.197225,1,.4,.16,1.125 +0,1,67,12,1,0,0,1,1,0,0,11.25,0,1,4489,2.420368,0,1,0,0,1,.4,.16,1.125 +0,.7407407,78,10,17,14,0,0,1,1,1,13.5,4,0,6084,2.60269,0,17,2.833213,2.833213,1,2.6,6.76,1.35 +0,.2469678,76,16,13,0,0,1,0,0,0,36.442,0,1,5776,3.595722,0,13,2.564949,2.564949,1,2.2,4.84,3.6442001 +0,.2589928,73,16,8,16,0,1,1,0,0,34.75,2,1,5329,3.54818,0,8,2.079442,2.079442,1,1.6,2.56,3.475 +0,.6967213,75,14,14,1,0,1,0,0,0,12.2,3,1,5625,2.501436,0,14,2.639057,2.639057,1,2,4,1.22 +0,.7391304,74,13,13,19,0,1,1,0,0,11.5,2,1,5476,2.442347,0,13,2.564949,2.564949,1,1.8,3.24,1.15 +0,.5901228,68,12,1,1,0,1,1,0,0,21.504,1,1,4624,3.068239,0,1,0,0,1,.6,.36,2.1504 +0,.9910966,69,14,0,0,0,1,0,0,0,12.804,0,1,4761,2.549758,0,0,,-4.60517,0,.8,.64,1.2804 +0,0,72,11,4,1,0,0,1,0,1,.25,3,0,5184,-1.386294,0,4,1.386294,1.386294,1,1.4,1.96,.025 +0,.8784446,85,16,10,10,0,1,0,1,1,22.064,2,1,7225,3.093947,0,10,2.302585,2.302585,1,4,16,2.2063999 +0,0,66,13,4,2,0,1,1,0,0,2.683,1,1,4356,.9869356,0,4,1.386294,1.386294,1,.2,.04,.26830001 +0,.7243712,68,17,1,2,0,0,0,1,1,26.757,2,0,4624,3.286796,0,1,0,0,1,.6,.36,2.6757 +0,0,65,17,1,0,0,0,1,0,0,7.626,3,0,4225,2.031564,0,1,0,0,1,0,0,.76259999 +0,.8144138,85,12,9,2,0,0,1,1,1,12.932,1,0,7225,2.559705,0,9,2.197225,2.197225,1,4,16,1.2932 +0,0,85,9,1,0,0,0,0,1,1,18.55,1,0,7225,2.92047,0,1,0,0,1,4,16,1.8549999 +0,.2363601,71,16,4,0,0,0,0,1,1,15.231,2,0,5041,2.723333,0,4,1.386294,1.386294,1,1.2,1.44,1.5231 +1,.0833758,69,16,11,0,0,1,1,0,0,43.178,2,1,4761,3.765331,0,11,2.397895,2.397895,1,.8,.64,4.3178001 +0,.6206896,79,14,4,6,0,1,1,1,0,14.5,3,1,6241,2.674149,0,4,1.386294,1.386294,1,2.8,7.84,1.45 +0,.497946,66,17,0,0,0,1,0,0,0,24.099,1,1,4356,3.18217,0,0,,-4.60517,0,.2,.04,2.4099001 +0,.497946,65,16,7,2,0,0,1,0,0,24.099,2,0,4225,3.18217,0,7,1.94591,1.94591,1,0,0,2.4099001 +0,0,70,6,0,0,0,0,0,0,1,0,2,0,4900,,1,0,,-4.60517,0,1,1,0 +0,.4903697,73,13,1,0,0,1,1,0,0,44.495,1,1,5329,3.795377,0,1,0,0,1,1.6,2.56,4.4494999 +0,0,65,13,4,0,0,1,0,1,0,22.352,2,1,4225,3.106916,0,4,1.386294,1.386294,1,0,0,2.2351999 +0,.999001,68,12,7,1,0,1,1,0,0,14.014,3,1,4624,2.640057,0,7,1.94591,1.94591,1,.6,.36,1.4014 +0,0,80,12,17,0,0,1,0,1,1,15.6,2,1,6400,2.747271,1,17,2.833213,2.833213,1,3,9,1.56 +0,.752809,65,12,21,0,1,0,1,1,1,8.544,6,0,4225,2.145229,0,21,3.044523,3.044523,1,0,0,.85439997 +0,.8954992,85,11,14,1,0,0,1,0,0,12.842,3,0,7225,2.552721,0,14,2.639057,2.639057,1,4,16,1.2842 +0,.2307914,71,11,4,0,0,1,1,1,0,51.995,1,1,5041,3.951148,1,4,1.386294,1.386294,1,1.2,1.44,5.1994999 +0,1,80,8,6,20,0,0,1,1,0,9.068,2,0,6400,2.204752,0,6,1.791759,1.791759,1,3,9,.90679998 +0,.7820647,75,13,6,0,0,1,1,0,0,11.508,0,1,5625,2.443043,0,6,1.791759,1.791759,1,2,4,1.1508 +0,.306193,75,8,11,7,0,1,0,0,0,30.373,1,1,5625,3.413554,0,11,2.397895,2.397895,1,2,4,3.0372999 +0,1,74,12,11,2,0,1,1,0,0,9.3,2,1,5476,2.230014,0,11,2.397895,2.397895,1,1.8,3.24,.93000002 +0,.4975827,66,12,1,1,0,1,1,0,0,43.85,1,1,4356,3.780775,0,1,0,0,1,.2,.04,4.3849998 +0,0,78,7,6,0,0,0,1,1,1,9.337,2,0,6084,2.233985,1,6,1.791759,1.791759,1,2.6,6.76,.93369999 +0,1,77,8,3,0,0,0,1,1,1,7.464,1,0,5929,2.010092,0,3,1.098612,1.098612,1,2.4,5.76,.74640002 +0,1,78,12,1,0,0,1,0,1,0,21.669,0,1,6084,3.075883,0,1,0,0,1,2.6,6.76,2.1669001 +0,1,74,12,4,0,0,1,1,1,0,21.669,2,1,5476,3.075883,0,4,1.386294,1.386294,1,1.8,3.24,2.1669001 +1,.2425271,69,15,20,7,0,1,1,1,1,49.479,2,1,4761,3.901548,0,20,2.995732,2.995732,1,.8,.64,4.9479 +0,1,72,8,1,0,0,1,1,0,0,9.6,0,1,5184,2.261763,0,1,0,0,1,1.4,1.96,.96000004 +0,.194699,78,16,9,5,0,1,0,1,0,38.521,3,1,6084,3.651204,0,9,2.197225,2.197225,1,2.6,6.76,3.8521 +0,.2105795,68,14,7,4,0,0,1,0,0,35.616,0,0,4624,3.572795,0,7,1.94591,1.94591,1,.6,.36,3.5616001 +0,0,65,5,5,0,0,0,1,0,0,0,0,0,4225,,0,5,1.609438,1.609438,1,0,0,0 +0,.9389287,72,8,6,7,0,0,1,0,0,17.848,2,0,5184,2.881891,1,6,1.791759,1.791759,1,1.4,1.96,1.7848 +0,.4826188,68,10,8,4,1,0,1,1,1,13.808,4,0,4624,2.625248,0,8,2.079442,2.079442,1,.6,.36,1.3808 +0,.5311228,75,17,35,3,0,0,1,1,0,27.022,2,0,5625,3.296651,0,35,3.555348,3.555348,1,2,4,2.7021999 +0,1,71,14,17,0,1,0,0,0,0,6.6,3,0,5041,1.88707,0,17,2.833213,2.833213,1,1.2,1.44,.65999999 +0,1,71,14,14,0,1,0,1,0,0,6.6,1,0,5041,1.88707,0,14,2.639057,2.639057,1,1.2,1.44,.65999999 +0,.8064516,77,8,1,0,0,0,0,1,0,13.64,0,0,5929,2.613007,0,1,0,0,1,2.4,5.76,1.364 +0,1,85,6,2,1,0,1,0,1,1,10.8,1,1,7225,2.379546,0,2,.6931472,.6931472,1,4,16,1.08 +0,.32,85,12,11,0,0,1,0,1,0,15,3,1,7225,2.70805,0,11,2.397895,2.397895,1,4,16,1.5 +0,.32,81,12,1,0,0,1,1,1,0,15,0,1,6561,2.70805,0,1,0,0,1,3.2,10.24,1.5 +0,1,74,11,7,0,0,1,1,0,0,14,0,1,5476,2.639057,0,7,1.94591,1.94591,1,1.8,3.24,1.4 +0,.4596164,72,17,9,2,0,1,0,0,0,23.933,2,1,5184,3.175258,0,9,2.197225,2.197225,1,1.4,1.96,2.3933001 +0,.4596164,71,17,14,1,0,1,1,0,0,23.933,1,1,5041,3.175258,0,14,2.639057,2.639057,1,1.2,1.44,2.3933001 +0,1,70,0,3,0,0,0,1,0,0,6.24,0,0,4900,1.83098,1,3,1.098612,1.098612,1,1,1,.62399998 +0,.9033392,85,12,2,0,0,1,1,1,1,11.38,2,1,7225,2.431857,0,2,.6931472,.6931472,1,4,16,1.138 +0,0,81,6,6,0,0,0,0,1,1,15.55,1,0,6561,2.744061,1,6,1.791759,1.791759,1,3.2,10.24,1.555 +0,.5346879,68,13,12,2,0,0,1,0,0,14.962,1,0,4624,2.705514,0,12,2.484907,2.484907,1,.6,.36,1.4962 +0,.7197481,72,12,4,3,0,0,0,0,0,11.115,1,0,5184,2.408296,0,4,1.386294,1.386294,1,1.4,1.96,1.1115 +0,.5483549,72,8,8,0,0,1,1,1,0,20.06,4,1,5184,2.998728,0,8,2.079442,2.079442,1,1.4,1.96,2.0059999 +0,.3013651,67,12,11,2,0,1,1,0,0,40.436,1,1,4489,3.69972,0,11,2.397895,2.397895,1,.4,.16,4.0436001 +0,.4331106,73,12,13,1,0,1,0,0,0,28.136,1,1,5329,3.33705,0,13,2.564949,2.564949,1,1.6,2.56,2.8136 +0,1,72,14,7,1,0,1,0,1,0,19.694,3,1,5184,2.980314,0,7,1.94591,1.94591,1,1.4,1.96,1.9694 +0,.0693022,70,16,13,26,0,0,1,1,1,145.349,3,0,4900,4.979138,0,13,2.564949,2.564949,1,1,1,14.5349 +0,.9010942,81,10,2,0,0,0,1,1,1,9.322,1,0,6561,2.232377,0,2,.6931472,.6931472,1,3.2,10.24,.93219995 +0,.4869489,74,9,27,4,0,0,0,1,1,13.677,3,0,5476,2.615716,0,27,3.295837,3.295837,1,1.8,3.24,1.3677 +0,.4869489,74,12,7,0,0,0,1,0,0,13.677,1,0,5476,2.615716,0,7,1.94591,1.94591,1,1.8,3.24,1.3677 +0,.2995721,81,12,2,1,0,0,1,0,0,28.04,2,0,6561,3.333632,0,2,.6931472,.6931472,1,3.2,10.24,2.8040001 +0,.3409091,74,10,2,0,0,0,1,1,0,13.2,2,0,5476,2.580217,1,2,.6931472,.6931472,1,1.8,3.24,1.32 +0,.097351,79,12,12,13,0,1,0,0,0,122.649,2,1,6241,4.809327,0,12,2.484907,2.484907,1,2.8,7.84,12.2649 +0,.729927,70,16,15,3,0,1,1,1,0,17.81,3,1,4900,2.87976,0,15,2.70805,2.70805,1,1,1,1.7809999 +1,.124912,68,13,0,0,0,1,0,0,0,88.062,1,1,4624,4.478041,0,0,,-4.60517,0,.6,.36,8.8061996 +0,1,84,12,0,0,0,0,1,0,0,6.84,1,0,7056,1.922788,0,0,,-4.60517,0,3.8,14.44,.68400002 +1,.0549451,65,17,2,0,0,1,0,0,0,54.6,1,1,4225,4.000034,0,2,.6931472,.6931472,1,0,0,5.4599998 +0,.70915,71,17,11,1,1,0,0,0,0,10.153,2,0,5041,2.317769,0,11,2.397895,2.397895,1,1.2,1.44,1.0153 +0,1,70,11,5,0,0,0,1,1,1,21.669,3,0,4900,3.075883,0,5,1.609438,1.609438,1,1,1,2.1669001 +0,1,73,8,7,1,0,0,0,0,1,21.669,1,0,5329,3.075883,0,7,1.94591,1.94591,1,1.6,2.56,2.1669001 +0,.6326314,78,15,11,2,0,0,1,1,1,19.803,2,0,6084,2.985833,0,11,2.397895,2.397895,1,2.6,6.76,1.9802999 +0,1,74,6,3,0,0,1,0,1,0,6.203,1,1,5476,1.825033,0,3,1.098612,1.098612,1,1.8,3.24,.62030001 +0,.2563086,65,17,3,1,0,1,0,0,0,26.987,0,1,4225,3.295355,0,3,1.098612,1.098612,1,0,0,2.6987 +0,.2563086,66,15,3,0,0,1,1,0,0,26.987,1,1,4356,3.295355,0,3,1.098612,1.098612,1,.2,.04,2.6987 +0,.1262743,70,17,5,2,0,1,0,0,0,118.789,1,1,4900,4.777349,1,5,1.609438,1.609438,1,1,1,11.8789 +0,1,85,4,3,0,0,0,1,1,1,10.092,4,0,7225,2.311743,1,3,1.098612,1.098612,1,4,16,1.0092 +0,.7263923,69,12,8,6,0,0,1,1,0,11.977,3,0,4761,2.482988,0,8,2.079442,2.079442,1,.8,.64,1.1977 +0,0,65,11,2,0,0,1,0,0,0,26.148,0,1,4225,3.263773,0,2,.6931472,.6931472,1,0,0,2.6148001 +0,.6,72,12,15,2,0,1,1,1,1,12.5,3,1,5184,2.525729,0,15,2.70805,2.70805,1,1.4,1.96,1.25 +0,.3064091,66,12,11,12,0,1,0,1,1,21.22,3,1,4356,3.054944,0,11,2.397895,2.397895,1,.2,.04,2.1219999 +0,1,83,0,2,0,0,0,1,1,0,8.7,1,0,6889,2.163323,0,2,.6931472,.6931472,1,3.6,12.96,.86999998 +0,.3482074,81,16,14,0,0,1,1,1,0,38.77,3,1,6561,3.657647,0,14,2.639057,2.639057,1,3.2,10.24,3.877 +0,.1883687,78,16,17,2,0,1,0,0,0,50.433,0,1,6084,3.920646,0,17,2.833213,2.833213,1,2.6,6.76,5.0432999 +0,.5555556,76,12,2,4,0,1,1,0,0,17.1,0,1,5776,2.839078,0,2,.6931472,.6931472,1,2.2,4.84,1.71 +0,1,78,12,12,1,0,0,0,1,1,19.694,5,0,6084,2.980314,0,12,2.484907,2.484907,1,2.6,6.76,1.9694 +0,.2026764,65,12,5,6,0,1,1,1,0,64.862,2,1,4225,4.172262,0,5,1.609438,1.609438,1,0,0,6.4862 +0,.1888115,65,16,5,0,0,1,0,0,0,69.625,0,1,4225,4.243124,0,5,1.609438,1.609438,1,0,0,6.9625 +0,.251497,67,13,1,0,0,1,0,0,0,33.4,1,1,4489,3.508556,0,1,0,0,1,.4,.16,3.3400002 +0,1,66,12,5,0,0,0,1,1,1,8.4,2,0,4356,2.128232,0,5,1.609438,1.609438,1,.2,.04,.83999996 +0,.6607929,70,9,3,0,0,0,0,0,0,13.62,2,0,4900,2.611539,0,3,1.098612,1.098612,1,1,1,1.362 +0,.9799347,66,17,4,0,0,0,0,0,0,8.572,4,0,4356,2.148501,0,4,1.386294,1.386294,1,.2,.04,.85719995 +0,.618047,76,15,15,5,0,1,1,1,0,12.944,1,1,5776,2.560632,0,15,2.70805,2.70805,1,2.2,4.84,1.2944 +0,.2745716,75,12,14,0,1,0,1,1,1,10.795,5,0,5625,2.379083,1,14,2.639057,2.639057,1,2,4,1.0795 +0,.7692308,69,12,12,0,0,1,1,1,0,15.6,2,1,4761,2.747271,0,12,2.484907,2.484907,1,.8,.64,1.56 +0,.5542734,74,16,6,17,0,0,1,0,0,20.019,1,0,5476,2.996682,0,6,1.791759,1.791759,1,1.8,3.24,2.0018999 +0,.8780488,74,12,5,0,0,1,0,0,0,8.2,2,1,5476,2.104134,0,5,1.609438,1.609438,1,1.8,3.24,.81999998 +0,.8780488,65,9,3,1,0,1,1,1,1,8.2,2,1,4225,2.104134,0,3,1.098612,1.098612,1,0,0,.81999998 +0,.9803922,80,7,5,0,1,0,1,1,1,6.12,3,0,6400,1.811562,1,5,1.609438,1.609438,1,3,9,.61199999 +0,.5682204,65,12,12,6,0,1,0,0,0,34.11,1,1,4225,3.529591,0,12,2.484907,2.484907,1,0,0,3.4110001 +0,.70385,67,10,2,4,0,1,1,1,1,10.13,2,1,4489,2.315501,0,2,.6931472,.6931472,1,.4,.16,1.013 +0,1,66,10,4,0,0,0,1,0,0,14,0,0,4356,2.639057,1,4,1.386294,1.386294,1,.2,.04,1.4 +0,.6726457,85,12,9,1,0,1,1,0,0,22.3,1,1,7225,3.104587,0,9,2.197225,2.197225,1,4,16,2.2299999 +0,.4511278,73,17,7,0,0,1,0,0,0,26.6,1,1,5329,3.280911,0,7,1.94591,1.94591,1,1.6,2.56,2.66 +0,.4511278,70,12,13,8,0,1,1,1,0,26.6,2,1,4900,3.280911,0,13,2.564949,2.564949,1,1,1,2.66 +0,0,70,3,0,0,1,0,0,0,0,.56,0,0,4900,-.5798185,1,0,,-4.60517,0,1,1,.056 +0,1,76,12,11,0,0,0,1,1,1,7.98,2,0,5776,2.076938,0,11,2.397895,2.397895,1,2.2,4.84,.798 +0,.7725175,73,14,15,4,0,0,1,0,0,23.404,1,0,5329,3.152907,0,15,2.70805,2.70805,1,1.6,2.56,2.3403999 +0,0,80,6,11,0,1,0,1,1,1,9.185,2,0,6400,2.217572,0,11,2.397895,2.397895,1,3,9,.91850004 +1,.4590164,66,12,4,0,0,1,0,0,0,18.3,2,1,4356,2.906901,0,4,1.386294,1.386294,1,.2,.04,1.8299999 +0,.814433,69,12,3,2,0,0,0,0,0,12.61,2,0,4761,2.53449,0,3,1.098612,1.098612,1,.8,.64,1.261 +0,.6175587,72,12,7,6,0,0,1,1,0,16.63,0,0,5184,2.811208,0,7,1.94591,1.94591,1,1.4,1.96,1.6629999 +0,1,74,12,9,5,0,0,1,0,0,7.056,3,0,5476,1.953878,0,9,2.197225,2.197225,1,1.8,3.24,.70560002 +0,0,66,17,0,0,0,1,1,0,0,36.038,2,1,4356,3.584574,1,0,,-4.60517,0,.2,.04,3.6037998 +0,.3630691,76,16,4,14,0,1,0,0,0,37.183,3,1,5776,3.615852,0,4,1.386294,1.386294,1,2.2,4.84,3.7182999 +0,.3670972,67,17,7,5,0,1,1,1,0,36.775,3,1,4489,3.604818,0,7,1.94591,1.94591,1,.4,.16,3.6775002 +0,0,80,3,1,0,0,0,0,0,0,3.895,1,0,6400,1.359694,1,1,0,0,1,3,9,.3895 +0,0,65,12,5,0,0,0,1,0,0,50.12,2,0,4225,3.91442,1,5,1.609438,1.609438,1,0,0,5.0119999 +0,1,72,10,1,0,1,0,1,1,1,6.9,1,0,5184,1.931521,0,1,0,0,1,1.4,1.96,.69000001 +0,1,65,11,2,0,1,0,0,1,1,6.96,3,0,4225,1.940179,0,2,.6931472,.6931472,1,0,0,.696 +0,.23807,85,12,4,0,0,0,0,1,1,18.902,0,0,7225,2.939268,1,4,1.386294,1.386294,1,4,16,1.8902 +0,.9210647,73,12,0,0,0,0,1,1,1,10.857,1,0,5329,2.38481,0,0,,-4.60517,0,1.6,2.56,1.0857 +1,.2499375,69,11,17,0,0,1,1,1,1,40.01,4,1,4761,3.689129,1,17,2.833213,2.833213,1,.8,.64,4.0009998 +0,.2620087,68,10,6,0,0,0,0,0,0,36.64,1,0,4624,3.60114,1,6,1.791759,1.791759,1,.6,.36,3.6639999 +0,.3789298,85,12,3,2,1,0,0,1,1,24.015,1,0,7225,3.178679,0,3,1.098612,1.098612,1,4,16,2.4014999 +0,.1343009,71,8,10,16,0,1,1,1,1,34.311,3,1,5041,3.535466,0,10,2.302585,2.302585,1,1.2,1.44,3.4311001 +0,.7530658,76,11,1,0,0,1,1,0,0,25.116,2,1,5776,3.223505,1,1,0,0,1,2.2,4.84,2.5115999 +0,.9615384,85,10,9,2,0,1,1,0,1,15.6,4,1,7225,2.747271,0,9,2.197225,2.197225,1,4,16,1.56 +0,0,85,10,3,23,0,0,1,1,0,8.096,3,0,7225,2.09137,0,3,1.098612,1.098612,1,4,16,.80959997 +0,0,78,8,1,8,0,0,0,0,0,13.216,1,0,6084,2.581428,0,1,0,0,1,2.6,6.76,1.3216 +0,.4675985,85,17,10,5,0,0,0,1,0,29.119,4,0,7225,3.371391,0,10,2.302585,2.302585,1,4,16,2.9118999 +0,.4642979,70,16,3,21,0,0,1,0,0,29.326,2,0,4900,3.378474,0,3,1.098612,1.098612,1,1,1,2.9326 +0,1,69,12,10,0,0,1,0,0,0,21.669,2,1,4761,3.075883,0,10,2.302585,2.302585,1,.8,.64,2.1669001 +0,1,65,10,0,0,0,0,1,0,0,10.44,0,0,4225,2.345644,1,0,,-4.60517,0,0,0,1.044 +0,.1664971,80,12,1,0,0,1,1,1,1,86.488,1,1,6400,4.460006,0,1,0,0,1,3,9,8.6487999 +0,.3392781,65,12,5,2,0,1,1,0,0,16.429,0,1,4225,2.799048,0,5,1.609438,1.609438,1,0,0,1.6429001 +1,.3123288,75,10,4,0,0,0,0,0,0,36.5,2,0,5625,3.597312,0,4,1.386294,1.386294,1,2,4,3.65 +0,1,82,12,0,0,0,0,1,0,0,7.98,1,0,6724,2.076938,0,0,,-4.60517,0,3.4,11.56,.798 +0,.3552215,81,12,9,1,0,1,1,1,0,15.168,1,1,6561,2.719188,0,9,2.197225,2.197225,1,3.2,10.24,1.5168 +0,.7690972,85,8,37,8,1,0,1,1,1,6.912,3,0,7225,1.933259,1,37,3.610918,3.610918,1,4,16,.69120002 +0,.3214143,66,8,16,0,0,1,1,0,0,30.092,1,1,4356,3.404259,0,16,2.772589,2.772589,1,.2,.04,3.0091999 +0,1,85,12,23,0,1,0,1,1,1,9.6,3,0,7225,2.261763,0,23,3.135494,3.135494,1,4,16,.96000004 +0,1,69,6,0,0,1,0,0,0,0,3.6,1,0,4761,1.280934,0,0,,-4.60517,0,.8,.64,.35999999 +1,0,68,6,0,0,0,1,1,0,0,18.72,1,1,4624,2.929592,0,0,,-4.60517,0,.6,.36,1.8719999 +0,0,69,4,2,0,0,0,0,0,0,13,0,0,4761,2.564949,1,2,.6931472,.6931472,1,.8,.64,1.3 +0,.9957514,84,7,12,1,0,1,1,1,1,7.532,2,1,7056,2.019161,0,12,2.484907,2.484907,1,3.8,14.44,.75320001 +0,0,73,12,7,0,1,0,0,0,0,6,2,0,5329,1.791759,1,7,1.94591,1.94591,1,1.6,2.56,.6 +0,0,69,12,7,1,1,0,1,1,0,6,3,0,4761,1.791759,1,7,1.94591,1.94591,1,.8,.64,.6 +0,1,68,11,11,0,1,0,0,1,1,11,5,0,4624,2.397895,0,11,2.397895,2.397895,1,.6,.36,1.1 +0,1,85,8,3,0,0,0,0,0,0,10.244,1,0,7225,2.326692,0,3,1.098612,1.098612,1,4,16,1.0244 +0,.2801398,73,17,4,0,0,0,1,0,0,70.679,2,0,5329,4.258149,0,4,1.386294,1.386294,1,1.6,2.56,7.0679001 +0,0,85,12,10,1,0,1,0,0,0,26.25,1,1,7225,3.267666,0,10,2.302585,2.302585,1,4,16,2.625 +0,0,85,14,14,0,0,1,1,1,1,1.25,3,1,7225,.2231435,0,14,2.639057,2.639057,1,4,16,.125 +0,.5736765,72,12,3,0,0,1,1,1,0,24.404,2,1,5184,3.194747,0,3,1.098612,1.098612,1,1.4,1.96,2.4403999 +0,1,67,14,6,26,1,0,0,1,1,2,4,0,4489,.6931472,1,6,1.791759,1.791759,1,.4,.16,.2 +0,1,66,6,6,1,1,0,1,1,1,2,4,0,4356,.6931472,1,6,1.791759,1.791759,1,.2,.04,.2 +0,.3305785,68,12,7,0,0,1,0,0,0,24.2,2,1,4624,3.186353,0,7,1.94591,1.94591,1,.6,.36,2.4200001 +0,1,72,4,2,0,1,0,1,1,1,4.642,4,0,5184,1.535145,1,2,.6931472,.6931472,1,1.4,1.96,.46420002 +0,.3798827,70,12,7,11,0,1,0,1,0,35.969,1,1,4900,3.582658,0,7,1.94591,1.94591,1,1,1,3.5969002 +0,.3653846,65,14,0,3,0,0,0,0,0,20.8,1,0,4225,3.034953,0,0,,-4.60517,0,0,0,2.0799999 +0,1,82,9,6,0,1,0,1,0,0,6.924,3,0,6724,1.934994,1,6,1.791759,1.791759,1,3.4,11.56,.69239998 +1,.5074425,68,6,0,0,0,1,0,0,0,29.56,0,1,4624,3.386422,0,0,,-4.60517,0,.6,.36,2.9559999 +0,.3813882,85,7,4,2,0,1,1,0,0,18.354,2,1,7225,2.909847,0,4,1.386294,1.386294,1,4,16,1.8354 +0,.9764938,73,8,1,0,0,0,1,1,1,11.146,2,0,5329,2.411081,0,1,0,0,1,1.6,2.56,1.1146 +0,0,78,0,4,0,1,0,1,1,0,0,2,0,6084,,1,4,1.386294,1.386294,1,2.6,6.76,0 +0,.3248945,69,10,4,0,0,1,0,1,1,23.7,0,1,4761,3.165475,1,4,1.386294,1.386294,1,.8,.64,2.3700001 +0,.0721529,71,17,0,0,0,1,0,0,0,76.227,2,1,5041,4.333716,0,0,,-4.60517,0,1.2,1.44,7.6226997 +0,.0740192,77,17,2,0,0,1,1,1,1,74.305,3,1,5929,4.308178,0,2,.6931472,.6931472,1,2.4,5.76,7.4305 +0,1,85,8,4,1,1,0,1,1,1,9.2,2,0,7225,2.219203,1,4,1.386294,1.386294,1,4,16,.91999998 +0,.4545455,85,12,4,0,0,1,1,1,0,22,1,1,7225,3.091043,0,4,1.386294,1.386294,1,4,16,2.2 +0,.4689587,85,12,28,0,1,0,0,1,1,20.215,3,0,7225,3.006425,0,28,3.332205,3.332205,1,4,16,2.0215 +0,0,71,5,1,0,0,0,1,1,1,0,0,0,5041,,1,1,0,0,1,1.2,1.44,0 +0,.8777285,67,17,5,4,0,1,0,0,0,22.082,0,1,4489,3.094763,0,5,1.609438,1.609438,1,.4,.16,2.2082001 +0,.1820812,71,12,2,1,0,1,0,0,0,59.446,1,1,5041,4.085068,0,2,.6931472,.6931472,1,1.2,1.44,5.9445999 +0,.2553252,71,12,11,3,0,1,1,0,0,42.393,4,1,5041,3.746983,0,11,2.397895,2.397895,1,1.2,1.44,4.2393002 +0,.6777695,77,12,3,3,0,1,1,0,0,13.45,1,1,5929,2.598979,0,3,1.098612,1.098612,1,2.4,5.76,1.345 +0,.6777695,79,12,4,4,0,1,0,1,0,13.45,2,1,6241,2.598979,0,4,1.386294,1.386294,1,2.8,7.84,1.345 +0,.2873578,68,13,1,2,0,1,1,0,0,46.416,1,1,4624,3.837644,0,1,0,0,1,.6,.36,4.6416 +0,0,71,11,6,2,0,1,1,1,0,0,4,1,5041,,1,6,1.791759,1.791759,1,1.2,1.44,0 +1,.0091268,85,16,3,0,0,1,0,0,0,162.05,2,1,7225,5.087905,0,3,1.098612,1.098612,1,4,16,16.205 +0,.2930477,79,12,2,0,0,1,1,1,0,4.948,0,1,6241,1.598983,0,2,.6931472,.6931472,1,2.8,7.84,.4948 +0,.4458772,68,16,0,0,0,1,1,0,0,48.935,0,1,4624,3.890493,0,0,,-4.60517,0,.6,.36,4.8935001 +0,.4458772,69,16,15,12,0,1,0,1,1,48.935,4,1,4761,3.890493,0,15,2.70805,2.70805,1,.8,.64,4.8935001 +0,.7831326,80,15,0,0,0,1,1,1,0,8.3,0,1,6400,2.116256,0,0,,-4.60517,0,3,9,.83000002 +0,.1221363,77,14,3,5,0,0,1,0,0,57.313,2,0,5929,4.048527,0,3,1.098612,1.098612,1,2.4,5.76,5.7313 +0,.9195402,79,9,1,13,0,0,1,1,0,8.7,2,0,6241,2.163323,0,1,0,0,1,2.8,7.84,.86999998 +0,.4115824,73,9,3,0,0,1,0,0,0,20.652,3,1,5329,3.027812,0,3,1.098612,1.098612,1,1.6,2.56,2.0652 +0,.5925926,77,8,1,1,0,1,0,0,0,16.2,0,1,5929,2.785011,0,1,0,0,1,2.4,5.76,1.6200001 +0,.5925926,73,8,0,1,0,1,1,0,0,16.2,0,1,5329,2.785011,0,0,,-4.60517,0,1.6,2.56,1.6200001 +0,.6524009,84,12,17,1,0,0,0,1,1,11.496,2,0,7056,2.441999,0,17,2.833213,2.833213,1,3.8,14.44,1.1496 +0,.4652028,77,10,8,0,0,0,1,0,0,16.122,3,0,5929,2.780185,0,8,2.079442,2.079442,1,2.4,5.76,1.6122 +0,.796748,70,12,2,1,0,0,0,0,0,12.3,2,0,4900,2.509599,0,2,.6931472,.6931472,1,1,1,1.23 +0,.4250033,71,12,2,0,0,0,0,1,0,15.294,1,0,5041,2.727461,0,2,.6931472,.6931472,1,1.2,1.44,1.5294 +0,.4250033,75,12,7,10,0,0,1,0,0,15.294,1,0,5625,2.727461,0,7,1.94591,1.94591,1,2,4,1.5294 +0,.2474023,77,16,6,1,0,0,1,0,0,38.399,1,0,5929,3.648031,0,6,1.791759,1.791759,1,2.4,5.76,3.8398998 +0,.2349333,75,14,16,1,0,0,0,1,1,40.437,2,0,5625,3.699745,0,16,2.772589,2.772589,1,2,4,4.0437 +0,1,85,15,1,0,0,0,1,1,0,10.98,0,0,7225,2.396075,0,1,0,0,1,4,16,1.098 +0,0,68,0,0,0,1,0,0,0,0,3,0,0,4624,1.098612,1,0,,-4.60517,0,.6,.36,.3 +0,0,70,3,0,0,1,0,1,0,0,.564,0,0,4900,-.572701,1,0,,-4.60517,0,1,1,.0564 +0,0,81,3,14,4,1,0,1,1,1,3.2,6,0,6561,1.163151,1,14,2.639057,2.639057,1,3.2,10.24,.32 +0,0,77,12,9,5,0,0,1,0,0,32.831,0,0,5929,3.491373,0,9,2.197225,2.197225,1,2.4,5.76,3.2831001 +0,0,73,12,3,2,0,0,1,0,0,12,3,0,5329,2.484907,1,3,1.098612,1.098612,1,1.6,2.56,1.2 +0,.969744,74,3,1,0,1,0,1,0,1,5.156,1,0,5476,1.640161,1,1,0,0,1,1.8,3.24,.51560001 +0,.7843137,75,14,4,0,0,0,1,1,1,7.65,4,0,5625,2.034706,1,4,1.386294,1.386294,1,2,4,.76500001 +0,.1314291,72,12,7,2,0,1,1,1,1,22.826,3,1,5184,3.1279,0,7,1.94591,1.94591,1,1.4,1.96,2.2826 +0,0,68,14,5,2,0,1,0,1,1,27.473,5,1,4624,3.313204,1,5,1.609438,1.609438,1,.6,.36,2.7473 +0,.5428391,81,12,6,8,0,0,1,0,0,22.106,1,0,6561,3.095849,0,6,1.791759,1.791759,1,3.2,10.24,2.2106001 +0,.1242236,76,12,15,1,0,0,1,0,0,16.1,1,0,5776,2.778819,1,15,2.70805,2.70805,1,2.2,4.84,1.61 +0,.7607656,75,5,16,16,0,1,1,1,1,12.54,4,1,5625,2.528924,0,16,2.772589,2.772589,1,2,4,1.254 +0,.8275862,77,9,16,2,0,0,1,1,1,14.5,5,0,5929,2.674149,0,16,2.772589,2.772589,1,2.4,5.76,1.45 +0,.5604575,76,0,10,0,1,0,1,1,1,7.344,4,0,5776,1.993884,1,10,2.302585,2.302585,1,2.2,4.84,.73439999 +0,1,85,6,4,0,0,0,0,1,1,5.79,4,0,7225,1.756132,1,4,1.386294,1.386294,1,4,16,.579 +0,1,71,3,6,0,0,0,1,1,1,5.79,3,0,5041,1.756132,1,6,1.791759,1.791759,1,1.2,1.44,.579 +0,.9679977,73,12,7,0,0,1,0,1,1,10.593,3,1,5329,2.360193,0,7,1.94591,1.94591,1,1.6,2.56,1.0593 +0,.8149738,73,12,12,9,0,1,1,1,1,12.582,2,1,5329,2.532267,0,12,2.484907,2.484907,1,1.6,2.56,1.2582 +0,.412093,70,16,4,1,0,0,1,0,0,26.693,0,0,4900,3.284401,0,4,1.386294,1.386294,1,1,1,2.6693001 +0,.412093,73,14,4,0,0,0,0,0,0,26.693,1,0,5329,3.284401,0,4,1.386294,1.386294,1,1.6,2.56,2.6693001 +0,.6831032,65,17,6,0,0,1,0,0,0,31.941,1,1,4225,3.463891,0,6,1.791759,1.791759,1,0,0,3.1941 +0,.5830217,65,15,4,33,0,1,0,1,0,33.961,2,1,4225,3.525213,0,4,1.386294,1.386294,1,0,0,3.3960999 +0,1,72,12,0,0,0,1,1,0,0,9.6,0,1,5184,2.261763,0,0,,-4.60517,0,1.4,1.96,.96000004 +0,1,72,16,6,2,0,1,0,1,1,9.6,4,1,5184,2.261763,0,6,1.791759,1.791759,1,1.4,1.96,.96000004 +0,1,71,13,6,0,1,0,1,1,1,4.38,0,0,5041,1.477049,1,6,1.791759,1.791759,1,1.2,1.44,.43800001 +0,1,85,11,8,0,1,0,1,1,1,7.572,1,0,7225,2.024457,1,8,2.079442,2.079442,1,4,16,.7572 +0,1,66,9,3,0,0,0,1,0,0,6,1,0,4356,1.791759,1,3,1.098612,1.098612,1,.2,.04,.6 +0,1,77,12,10,0,0,0,0,0,0,6,1,0,5929,1.791759,1,10,2.302585,2.302585,1,2.4,5.76,.6 +0,.186607,72,12,1,1,0,1,1,0,0,37.512,1,1,5184,3.624661,0,1,0,0,1,1.4,1.96,3.7512001 +0,.1610417,73,16,4,3,0,1,0,1,0,43.467,0,1,5329,3.772002,0,4,1.386294,1.386294,1,1.6,2.56,4.3466999 +0,.5178281,66,12,6,7,0,0,1,1,1,13.518,1,0,4356,2.604022,0,6,1.791759,1.791759,1,.2,.04,1.3518 +0,0,71,16,13,31,0,1,1,1,1,28.247,2,1,5041,3.340987,0,13,2.564949,2.564949,1,1.2,1.44,2.8247 +0,.3677454,68,16,9,4,0,1,1,0,0,29.912,2,1,4624,3.39826,0,9,2.197225,2.197225,1,.6,.36,2.9912001 +0,.3677454,84,17,0,0,0,1,0,1,1,29.912,3,1,7056,3.39826,0,0,,-4.60517,0,3.8,14.44,2.9912001 +0,.1225553,69,14,5,0,0,1,1,0,0,58.749,1,1,4761,4.073274,0,5,1.609438,1.609438,1,.8,.64,5.8749001 +0,.4040404,70,14,2,5,0,1,1,1,1,19.8,0,1,4900,2.985682,0,2,.6931472,.6931472,1,1,1,1.9799999 +0,.4571429,75,16,16,41,0,1,0,1,0,17.5,1,1,5625,2.862201,0,16,2.772589,2.772589,1,2,4,1.75 +0,.3583036,67,12,14,1,0,0,1,0,0,50.46,1,0,4489,3.921181,0,14,2.639057,2.639057,1,.4,.16,5.0459999 +0,0,80,8,0,0,0,1,1,1,1,6.532,1,1,6400,1.876713,0,0,,-4.60517,0,3,9,.65320001 +0,.9956514,72,10,4,0,0,0,1,0,0,10.578,0,0,5184,2.358776,0,4,1.386294,1.386294,1,1.4,1.96,1.0578 +0,.4688166,85,8,8,1,0,1,1,1,1,42.234,2,1,7225,3.743226,0,8,2.079442,2.079442,1,4,16,4.2234001 +0,.2504069,65,17,4,1,0,1,1,1,1,39.935,2,1,4225,3.687253,0,4,1.386294,1.386294,1,0,0,3.9935001 +0,.69675,70,11,4,4,0,0,1,0,0,21.385,1,0,4900,3.06269,0,4,1.386294,1.386294,1,1,1,2.1385 +0,.6666667,79,5,2,0,1,0,1,0,0,7.2,2,0,6241,1.974081,0,2,.6931472,.6931472,1,2.8,7.84,.71999998 +0,.291932,80,12,16,16,0,1,0,0,0,37.68,2,1,6400,3.629129,0,16,2.772589,2.772589,1,3,9,3.768 +0,.2894661,78,17,8,0,0,1,1,0,0,38.001,2,1,6084,3.637612,0,8,2.079442,2.079442,1,2.6,6.76,3.8000999 +0,.0954875,71,17,12,8,0,1,0,0,0,73.308,4,1,5041,4.29467,0,12,2.484907,2.484907,1,1.2,1.44,7.3307999 +0,.9937888,68,12,8,0,0,1,0,0,0,8.05,3,1,4624,2.085672,0,8,2.079442,2.079442,1,.6,.36,.80500002 +0,.7402598,85,16,3,0,0,1,1,1,1,7.7,3,1,7225,2.04122,0,3,1.098612,1.098612,1,4,16,.76999998 +0,.25,76,7,5,0,0,0,0,0,0,16,3,0,5776,2.772589,1,5,1.609438,1.609438,1,2.2,4.84,1.6 +0,.25,73,12,4,0,0,0,1,1,1,16,4,0,5329,2.772589,1,4,1.386294,1.386294,1,1.6,2.56,1.6 +0,.8857508,70,17,4,1,0,0,0,0,0,21.882,1,0,4900,3.085664,0,4,1.386294,1.386294,1,1,1,2.1882 +0,0,83,2,7,0,0,0,1,1,1,9.185,2,0,6889,2.217572,1,7,1.94591,1.94591,1,3.6,12.96,.91850004 +0,.9205087,85,12,1,0,0,1,1,1,1,12.58,1,1,7225,2.532108,0,1,0,0,1,4,16,1.258 +0,0,81,5,4,4,1,0,0,1,1,0,2,0,6561,,1,4,1.386294,1.386294,1,3.2,10.24,0 +0,0,68,1,13,0,1,0,1,1,1,3.75,3,0,4624,1.321756,1,13,2.564949,2.564949,1,.6,.36,.375 +0,1,73,9,10,0,0,1,1,0,0,11.304,2,1,5329,2.425157,0,10,2.302585,2.302585,1,1.6,2.56,1.1304 +0,.4180606,65,16,6,2,0,1,0,0,0,52.191,1,1,4225,3.95491,0,6,1.791759,1.791759,1,0,0,5.2191002 +0,0,77,12,12,0,1,0,1,1,1,14,2,0,5929,2.639057,1,12,2.484907,2.484907,1,2.4,5.76,1.4 +0,1,80,11,1,1,0,1,1,1,0,7.34,2,1,6400,1.993339,0,1,0,0,1,3,9,.73400002 +0,.2760271,82,14,0,1,0,1,1,0,0,43.474,0,1,6724,3.772163,0,0,,-4.60517,0,3.4,11.56,4.3473999 +0,1,83,13,0,1,0,0,0,0,0,9,1,0,6889,2.197225,1,0,,-4.60517,0,3.6,12.96,.9 +0,1,66,14,4,0,0,1,1,0,0,5,0,1,4356,1.609438,1,4,1.386294,1.386294,1,.2,.04,.5 +0,.0909091,67,8,1,0,0,1,0,0,0,55,1,1,4489,4.007333,1,1,0,0,1,.4,.16,5.5 +0,.8134589,71,12,13,0,0,0,0,0,0,11.472,3,0,5041,2.439909,0,13,2.564949,2.564949,1,1.2,1.44,1.1472 +0,.4912024,85,9,9,0,0,1,1,1,1,16.368,2,1,7225,2.795328,0,9,2.197225,2.197225,1,4,16,1.6368 +0,.1575423,75,4,1,0,0,1,0,0,0,53.319,1,1,5625,3.976293,1,1,0,0,1,2,4,5.3319 +0,1,84,9,5,0,1,0,1,1,0,6.924,3,0,7056,1.934994,1,5,1.609438,1.609438,1,3.8,14.44,.69239998 +0,1,75,8,6,3,0,1,1,0,0,11.11,3,1,5625,2.407845,0,6,1.791759,1.791759,1,2,4,1.111 +0,.6293706,79,12,14,1,0,1,1,0,1,7.15,3,1,6241,1.967112,0,14,2.639057,2.639057,1,2.8,7.84,.71500001 +0,.6293706,78,16,33,6,0,1,0,0,0,7.15,5,1,6084,1.967112,0,33,3.496508,3.496508,1,2.6,6.76,.71500001 +0,.0652511,70,12,4,3,0,1,0,0,0,76.627,1,1,4900,4.33895,0,4,1.386294,1.386294,1,1,1,7.6626999 +0,.1753648,69,15,6,6,0,0,1,0,0,28.512,0,0,4761,3.350325,0,6,1.791759,1.791759,1,.8,.64,2.8511999 +0,.7599487,72,16,3,0,0,0,0,0,0,7.79,0,0,5184,2.052841,0,3,1.098612,1.098612,1,1.4,1.96,.779 +0,.3327712,65,12,0,0,0,0,1,0,0,17.79,0,0,4225,2.878637,1,0,,-4.60517,0,0,0,1.7790001 +0,.5517454,76,7,2,0,0,0,0,0,0,35.694,1,0,5776,3.574983,0,2,.6931472,.6931472,1,2.2,4.84,3.5694 +0,.223465,76,12,2,0,0,1,0,1,0,51.319,1,1,5776,3.938061,0,2,.6931472,.6931472,1,2.2,4.84,5.1319 +1,0,65,16,2,0,0,1,1,0,0,17.114,1,1,4225,2.839897,1,2,.6931472,.6931472,1,0,0,1.7114 +0,.5296167,73,11,6,2,1,0,1,1,1,6.888,1,0,5329,1.929781,1,6,1.791759,1.791759,1,1.6,2.56,.6888 +1,0,68,17,0,0,0,1,0,0,0,38,1,1,4624,3.637586,0,0,,-4.60517,0,.6,.36,3.8 +0,.365211,70,13,0,0,0,1,1,0,0,38.334,0,1,4900,3.646337,0,0,,-4.60517,0,1,1,3.8334 +0,.7868853,80,12,17,0,0,1,0,0,0,15.25,2,1,6400,2.72458,0,17,2.833213,2.833213,1,3,9,1.525 +0,.7868853,76,13,15,4,0,1,1,1,0,15.25,4,1,5776,2.72458,0,15,2.70805,2.70805,1,2.2,4.84,1.525 +0,.4883935,69,12,5,1,0,0,1,1,0,17.404,1,0,4761,2.8567,0,5,1.609438,1.609438,1,.8,.64,1.7403999 +0,.4653454,67,13,7,0,0,0,0,0,0,18.266,1,0,4489,2.905041,0,7,1.94591,1.94591,1,.4,.16,1.8266001 +0,.3846154,71,13,0,0,0,0,0,0,0,26,1,0,5041,3.258096,0,0,,-4.60517,0,1.2,1.44,2.6 +0,1,69,12,3,0,0,0,1,0,0,10,1,0,4761,2.302585,0,3,1.098612,1.098612,1,.8,.64,1 +0,1,85,0,2,0,1,0,1,0,0,6.24,1,0,7225,1.83098,0,2,.6931472,.6931472,1,4,16,.62399998 +0,1,72,9,9,0,0,1,1,1,1,9.068,1,1,5184,2.204752,0,9,2.197225,2.197225,1,1.4,1.96,.90679998 +0,1,75,12,7,10,0,0,1,0,0,11.762,1,0,5625,2.464874,0,7,1.94591,1.94591,1,2,4,1.1762 +0,1,75,13,29,25,0,0,0,1,1,11.762,3,0,5625,2.464874,0,29,3.367296,3.367296,1,2,4,1.1762 +0,1,85,3,8,0,1,0,1,1,1,9.096,6,0,7225,2.207835,0,8,2.079442,2.079442,1,4,16,.90959997 +0,.4477006,85,8,2,12,0,1,0,1,0,22.18,1,1,7225,3.099191,0,2,.6931472,.6931472,1,4,16,2.218 +0,.6882552,76,8,3,0,0,0,1,0,0,14.483,1,0,5776,2.672976,0,3,1.098612,1.098612,1,2.2,4.84,1.4483 +0,1,76,16,15,0,1,0,0,0,0,4.704,5,0,5776,1.548413,0,15,2.70805,2.70805,1,2.2,4.84,.4704 +0,.9901074,78,16,14,0,1,0,1,1,1,4.751,1,0,6084,1.558355,0,14,2.639057,2.639057,1,2.6,6.76,.47509999 +0,.8410413,85,12,3,1,0,1,0,1,0,10.487,2,1,7225,2.350137,0,3,1.098612,1.098612,1,4,16,1.0487 +0,.8410413,85,10,7,0,0,1,1,0,0,10.487,2,1,7225,2.350137,0,7,1.94591,1.94591,1,4,16,1.0487 +0,.2646295,71,12,35,19,1,0,1,1,1,12.697,5,0,5041,2.541366,1,35,3.555348,3.555348,1,1.2,1.44,1.2697 +0,.633671,71,12,1,0,0,1,0,1,1,9.082,3,1,5041,2.206294,1,1,0,0,1,1.2,1.44,.90819998 +0,1,84,4,5,1,0,0,1,1,1,5.755,2,0,7056,1.750069,1,5,1.609438,1.609438,1,3.8,14.44,.57550001 +0,0,66,9,12,0,1,0,1,0,0,6,2,0,4356,1.791759,1,12,2.484907,2.484907,1,.2,.04,.6 +0,.5,83,6,12,0,1,0,1,1,1,12,4,0,6889,2.484907,1,12,2.484907,2.484907,1,3.6,12.96,1.2 +0,1,83,13,5,0,0,0,1,1,1,7,2,0,6889,1.94591,0,5,1.609438,1.609438,1,3.6,12.96,.7 +0,.9090909,72,12,3,3,0,1,1,0,0,13.2,0,1,5184,2.580217,0,3,1.098612,1.098612,1,1.4,1.96,1.32 +0,.5,72,8,1,20,0,1,0,1,1,28,4,1,5184,3.332205,0,1,0,0,1,1.4,1.96,2.8 +0,.672,78,10,13,0,0,1,1,1,1,12.5,3,1,6084,2.525729,0,13,2.564949,2.564949,1,2.6,6.76,1.25 +0,0,66,10,2,0,0,0,1,0,0,6.5,1,0,4356,1.871802,1,2,.6931472,.6931472,1,.2,.04,.65 +0,0,77,12,10,0,0,0,0,1,1,6.5,4,0,5929,1.871802,0,10,2.302585,2.302585,1,2.4,5.76,.65 +0,.5989011,71,14,6,3,0,1,1,0,0,18.2,1,1,5041,2.901422,0,6,1.791759,1.791759,1,1.2,1.44,1.8200001 +0,.6845399,75,12,1,0,0,1,0,0,0,18.538,0,1,5625,2.919823,0,1,0,0,1,2,4,1.8538 +0,.863853,72,12,5,6,0,1,1,1,0,14.69,1,1,5184,2.687167,0,5,1.609438,1.609438,1,1.4,1.96,1.469 +0,1,82,0,4,0,1,0,0,1,0,10,1,0,6724,2.302585,0,4,1.386294,1.386294,1,3.4,11.56,1 +0,.5691816,72,11,7,0,0,1,0,1,0,16.594,2,1,5184,2.809041,0,7,1.94591,1.94591,1,1.4,1.96,1.6594 +0,.5691816,70,8,13,0,0,1,1,1,1,16.594,4,1,4900,2.809041,0,13,2.564949,2.564949,1,1,1,1.6594 +0,0,75,12,0,0,0,1,0,1,1,2.931,1,1,5625,1.075344,1,0,,-4.60517,0,2,4,.2931 +0,1,67,16,10,4,0,1,0,0,0,4.032,3,1,4489,1.394263,0,10,2.302585,2.302585,1,.4,.16,.40320001 +0,1,67,16,6,0,0,1,1,0,0,4.032,0,1,4489,1.394263,0,6,1.791759,1.791759,1,.4,.16,.40320001 +0,.9944994,85,12,5,0,0,0,1,1,1,18.18,3,0,7225,2.900322,0,5,1.609438,1.609438,1,4,16,1.818 +0,.9839292,72,14,0,0,0,1,0,0,0,9.147,2,1,5184,2.213426,0,0,,-4.60517,0,1.4,1.96,.91470003 +0,.9839292,75,12,1,1,0,1,1,1,0,9.147,4,1,5625,2.213426,0,1,0,0,1,2,4,.91470003 +0,.9480037,77,16,4,1,0,1,0,0,0,8.616,0,1,5929,2.153621,0,4,1.386294,1.386294,1,2.4,5.76,.86160002 +0,.9480037,74,12,9,6,0,1,1,0,1,8.616,1,1,5476,2.153621,0,9,2.197225,2.197225,1,1.8,3.24,.86160002 +0,1,66,12,14,0,0,0,1,0,0,9.6,2,0,4356,2.261763,0,14,2.639057,2.639057,1,.2,.04,.96000004 +0,.976234,75,12,8,0,0,0,1,1,1,10.94,2,0,5625,2.392426,0,8,2.079442,2.079442,1,2,4,1.094 +0,.4293642,72,12,13,1,0,1,0,0,0,50.817,3,1,5184,3.928231,0,13,2.564949,2.564949,1,1.4,1.96,5.0817001 +0,.8409091,75,12,0,0,0,0,0,0,0,8.8,0,0,5625,2.174752,0,0,,-4.60517,0,2,4,.88000002 +0,.3769571,81,13,4,2,0,0,1,1,0,30.083,1,0,6561,3.40396,0,4,1.386294,1.386294,1,3.2,10.24,3.0083 +0,.8378668,85,12,10,1,0,0,0,1,1,14.007,3,0,7225,2.639557,0,10,2.302585,2.302585,1,4,16,1.4007 +0,.9174504,78,16,0,0,0,0,0,1,0,9.57,2,0,6084,2.258633,0,0,,-4.60517,0,2.6,6.76,.95699997 +0,.9174504,73,13,4,15,0,1,1,1,0,9.57,2,1,5329,2.258633,0,4,1.386294,1.386294,1,1.6,2.56,.95699997 +0,.6486486,77,13,20,2,0,1,0,1,1,18.5,5,1,5929,2.917771,0,20,2.995732,2.995732,1,2.4,5.76,1.85 +0,.6486486,75,12,15,1,0,0,1,1,1,18.5,2,0,5625,2.917771,0,15,2.70805,2.70805,1,2,4,1.85 +0,.1992852,75,17,8,6,0,0,1,0,0,75.269,3,0,5625,4.321068,0,8,2.079442,2.079442,1,2,4,7.5268997 +0,1,75,8,17,0,0,0,0,1,0,7.5,3,0,5625,2.014903,0,17,2.833213,2.833213,1,2,4,.75 +0,1,75,8,1,0,0,0,1,0,0,7.5,0,0,5625,2.014903,0,1,0,0,1,2,4,.75 +1,.446495,76,13,2,0,0,1,0,0,0,20.157,1,1,5776,3.003551,0,2,.6931472,.6931472,1,2.2,4.84,2.0157 +0,.446495,75,12,2,0,0,0,1,0,0,20.157,2,0,5625,3.003551,0,2,.6931472,.6931472,1,2,4,2.0157 +1,.4257866,65,12,6,0,0,1,1,0,0,23.392,0,1,4225,3.152394,0,6,1.791759,1.791759,1,0,0,2.3392 +0,.6904004,76,12,3,0,0,0,0,0,0,16.657,0,0,5776,2.81283,1,3,1.098612,1.098612,1,2.2,4.84,1.6657 +0,.9986258,78,6,4,0,0,1,1,1,1,10.915,3,1,6084,2.390138,0,4,1.386294,1.386294,1,2.6,6.76,1.0915 +0,.3751759,84,12,4,0,0,1,0,1,1,31.985,1,1,7056,3.465267,0,4,1.386294,1.386294,1,3.8,14.44,3.1985001 +0,0,84,1,9,0,1,0,1,1,1,6.396,2,0,7056,1.855673,1,9,2.197225,2.197225,1,3.8,14.44,.63959999 +0,.4761905,72,12,20,53,0,1,0,1,1,21,2,1,5184,3.044523,0,20,2.995732,2.995732,1,1.4,1.96,2.1 +0,.2304785,69,16,2,2,0,1,1,0,0,43.388,3,1,4761,3.770183,0,2,.6931472,.6931472,1,.8,.64,4.3388 +0,.8648649,85,16,14,0,0,1,0,0,1,14.8,2,1,7225,2.694627,0,14,2.639057,2.639057,1,4,16,1.48 +0,0,83,10,2,0,0,0,0,1,0,1.632,1,0,6889,.4898062,1,2,.6931472,.6931472,1,3.6,12.96,.1632 +0,0,81,4,4,0,0,0,1,0,0,1.632,2,0,6561,.4898062,1,4,1.386294,1.386294,1,3.2,10.24,.1632 +1,.0520728,65,17,1,1,0,1,0,0,0,59.34,0,1,4225,4.083283,0,1,0,0,1,0,0,5.934 +0,1,84,14,1,2,0,1,1,1,0,12,2,1,7056,2.484907,0,1,0,0,1,3.8,14.44,1.2 +0,.3839644,65,12,4,3,0,1,0,0,0,23.635,0,1,4225,3.162729,0,4,1.386294,1.386294,1,0,0,2.3635 +0,.5614035,80,16,9,9,0,1,0,0,0,4.275,2,1,6400,1.452784,0,9,2.197225,2.197225,1,3,9,.42750001 +0,.5614035,80,13,0,0,0,1,1,0,0,4.275,0,1,6400,1.452784,0,0,,-4.60517,0,3,9,.42750001 +0,.9495549,75,12,12,11,0,0,1,0,0,8.425,3,0,5625,2.131203,0,12,2.484907,2.484907,1,2,4,.84250002 +0,.1443392,76,17,9,3,0,0,0,0,0,55.425,2,0,5776,4.015031,0,9,2.197225,2.197225,1,2.2,4.84,5.5424999 +0,.4694836,71,16,0,0,1,0,0,0,0,12.78,1,0,5041,2.547881,0,0,,-4.60517,0,1.2,1.44,1.278 +0,.4516129,66,16,0,0,0,1,0,0,0,15.5,0,1,4356,2.74084,1,0,,-4.60517,0,.2,.04,1.55 +0,1,85,9,4,0,0,0,0,1,1,9.684,2,0,7225,2.270475,0,4,1.386294,1.386294,1,4,16,.9684 +0,0,67,8,6,0,1,0,0,0,0,.1,1,0,4489,-2.302585,0,6,1.791759,1.791759,1,.4,.16,.01 +0,.5371587,78,14,4,0,0,1,0,1,0,15.824,1,1,6084,2.761528,0,4,1.386294,1.386294,1,2.6,6.76,1.5824 +0,.5371587,75,13,7,0,0,1,1,1,0,15.824,0,1,5625,2.761528,0,7,1.94591,1.94591,1,2,4,1.5824 +0,.942029,71,12,1,0,0,0,1,0,0,13.8,2,0,5041,2.624669,0,1,0,0,1,1.2,1.44,1.38 +0,.4674486,79,13,10,0,0,1,1,1,0,23.532,2,1,6241,3.158361,0,10,2.302585,2.302585,1,2.8,7.84,2.3532 +0,.8553013,72,15,0,1,0,1,1,0,0,7.602,0,1,5184,2.028411,0,0,,-4.60517,0,1.4,1.96,.76020002 +0,.9985866,83,13,14,16,0,0,1,1,0,11.32,2,0,6889,2.426571,0,14,2.639057,2.639057,1,3.6,12.96,1.132 +0,.2329412,80,16,27,0,0,0,0,0,0,17,3,0,6400,2.833213,0,27,3.295837,3.295837,1,3,9,1.7 +0,.5351351,71,14,10,0,0,0,1,0,0,7.4,0,0,5041,2.00148,0,10,2.302585,2.302585,1,1.2,1.44,.74000001 +0,.2071108,66,16,3,1,0,1,1,0,0,40.558,0,1,4356,3.702733,1,3,1.098612,1.098612,1,.2,.04,4.0557999 +0,.3568315,69,16,2,3,0,1,0,0,0,38.769,2,1,4761,3.657621,0,2,.6931472,.6931472,1,.8,.64,3.8769001 +0,.4549763,85,9,8,1,0,1,0,0,1,10.55,1,1,7225,2.356126,0,8,2.079442,2.079442,1,4,16,1.055 +0,.4549763,85,12,3,2,0,1,1,1,1,10.55,3,1,7225,2.356126,0,3,1.098612,1.098612,1,4,16,1.055 +0,.2224919,76,0,2,0,1,0,1,0,0,31.318,1,0,5776,3.444193,1,2,.6931472,.6931472,1,2.2,4.84,3.1318001 +1,.2053571,68,12,6,15,0,1,1,1,1,56,2,1,4624,4.025352,0,6,1.791759,1.791759,1,.6,.36,5.6 +0,0,67,12,2,0,1,0,1,1,1,7.831,4,0,4489,2.05809,1,2,.6931472,.6931472,1,.4,.16,.78309999 +0,.5371723,71,14,0,0,0,0,1,0,0,9.308,1,0,5041,2.230874,0,0,,-4.60517,0,1.2,1.44,.93079996 +0,.4474401,70,16,6,3,1,0,1,1,1,13.946,1,0,4900,2.635193,0,6,1.791759,1.791759,1,1,1,1.3946 +0,1,70,12,5,12,0,0,0,1,1,9.3,2,0,4900,2.230014,0,5,1.609438,1.609438,1,1,1,.93000002 +0,1,68,17,0,54,0,0,1,1,1,9.3,2,0,4624,2.230014,0,0,,-4.60517,0,.6,.36,.93000002 +0,.1258178,85,17,2,1,0,0,1,1,1,95.376,0,0,7225,4.557827,0,2,.6931472,.6931472,1,4,16,9.5375999 +0,.9771763,68,8,4,1,0,0,0,0,0,8.719,2,0,4624,2.165504,0,4,1.386294,1.386294,1,.6,.36,.87189999 +0,.9771763,70,12,1,4,0,0,1,0,0,8.719,2,0,4900,2.165504,0,1,0,0,1,1,1,.87189999 +0,.6661388,74,12,1,0,0,1,1,0,0,12.628,0,1,5476,2.535917,0,1,0,0,1,1.8,3.24,1.2628 +0,1,67,14,5,6,0,0,0,0,0,21.669,3,0,4489,3.075883,0,5,1.609438,1.609438,1,.4,.16,2.1669001 +0,0,67,15,3,0,0,0,1,0,0,15.64,1,0,4489,2.749832,0,3,1.098612,1.098612,1,.4,.16,1.564 +0,0,70,12,4,0,0,0,0,0,0,3.17,2,0,4900,1.153732,0,4,1.386294,1.386294,1,1,1,.31700001 +0,0,71,12,16,0,0,0,1,0,0,3.17,1,0,5041,1.153732,0,16,2.772589,2.772589,1,1.2,1.44,.31700001 +0,.9992006,68,14,8,4,0,0,1,1,0,15.012,3,0,4624,2.70885,0,8,2.079442,2.079442,1,.6,.36,1.5012 +1,.1662533,70,17,7,0,0,1,0,0,0,72.179,1,1,4900,4.279149,0,7,1.94591,1.94591,1,1,1,7.2179001 +0,.765111,76,15,11,6,0,0,1,1,1,10.456,2,0,5776,2.347176,0,11,2.397895,2.397895,1,2.2,4.84,1.0456 +0,.765111,72,13,2,2,0,0,0,0,1,10.456,1,0,5184,2.347176,0,2,.6931472,.6931472,1,1.4,1.96,1.0456 +0,.1875,85,15,7,1,0,1,1,1,0,16,2,1,7225,2.772589,1,7,1.94591,1.94591,1,4,16,1.6 +0,.1474281,70,12,2,0,0,1,0,1,1,43.411,1,1,4900,3.770713,0,2,.6931472,.6931472,1,1,1,4.3410999 +0,.085289,65,12,8,0,0,1,1,1,1,75.039,3,1,4225,4.318008,0,8,2.079442,2.079442,1,0,0,7.5039001 +0,0,74,5,3,1,1,0,1,1,0,0,0,0,5476,,1,3,1.098612,1.098612,1,1.8,3.24,0 +0,.9286973,70,8,0,0,0,0,0,0,0,6.241,1,0,4900,1.83114,1,0,,-4.60517,0,1,1,.62410002 +1,.391581,66,10,4,1,0,1,1,1,0,30.645,3,1,4356,3.42247,0,4,1.386294,1.386294,1,.2,.04,3.0645 +0,0,76,5,4,8,0,0,0,1,0,4.05,0,0,5776,1.398717,1,4,1.386294,1.386294,1,2.2,4.84,.40500002 +0,0,68,5,5,9,0,0,1,0,0,4.05,4,0,4624,1.398717,1,5,1.609438,1.609438,1,.6,.36,.40500002 +0,1,78,10,2,0,0,0,1,1,1,4.5,3,0,6084,1.504077,1,2,.6931472,.6931472,1,2.6,6.76,.45 +0,.4366549,69,16,7,2,0,1,0,0,0,31.21,2,1,4761,3.440738,0,7,1.94591,1.94591,1,.8,.64,3.1209999 +0,0,66,12,5,0,0,0,1,0,0,8.805,4,0,4356,2.17532,1,5,1.609438,1.609438,1,.2,.04,.88050003 +0,.861244,73,12,14,7,1,0,1,1,0,6.479,3,0,5329,1.868566,1,14,2.639057,2.639057,1,1.6,2.56,.64790001 +0,0,77,6,0,0,1,0,1,0,1,8.44,1,0,5929,2.132982,0,0,,-4.60517,0,2.4,5.76,.84399996 +0,0,70,12,0,0,1,0,0,0,0,1.8,1,0,4900,.5877866,1,0,,-4.60517,0,1,1,.18 +0,0,65,12,0,0,1,0,1,0,0,.624,0,0,4225,-.4716049,1,0,,-4.60517,0,0,0,.0624 +0,.2792159,81,11,7,0,1,0,0,0,0,17.191,0,0,6561,2.844386,0,7,1.94591,1.94591,1,3.2,10.24,1.7191 +0,0,84,12,3,1,0,0,0,0,0,2.25,1,0,7056,.8109302,0,3,1.098612,1.098612,1,3.8,14.44,.225 +0,0,79,12,9,2,0,0,1,0,0,2.25,2,0,6241,.8109302,0,9,2.197225,2.197225,1,2.8,7.84,.225 +0,.9274526,67,12,10,0,0,0,0,0,0,9.704,3,0,4489,2.272538,0,10,2.302585,2.302585,1,.4,.16,.97040005 +0,.9274526,68,16,6,1,0,0,1,0,0,9.704,1,0,4624,2.272538,0,6,1.791759,1.791759,1,.6,.36,.97040005 +0,1,85,8,4,0,0,0,1,1,1,3.2,1,0,7225,1.163151,0,4,1.386294,1.386294,1,4,16,.32 +0,.7670117,78,17,10,2,0,1,1,0,0,23.572,1,1,6084,3.16006,0,10,2.302585,2.302585,1,2.6,6.76,2.3572001 +0,.8475837,77,12,11,21,0,1,0,1,0,7.801,1,1,5929,2.054252,0,11,2.397895,2.397895,1,2.4,5.76,.78010001 +1,.2378332,68,12,12,2,0,1,1,0,0,27.801,0,1,4624,3.325072,0,12,2.484907,2.484907,1,.6,.36,2.7801001 +0,.2831349,68,11,2,5,0,0,0,0,0,68.455,1,0,4624,4.226177,0,2,.6931472,.6931472,1,.6,.36,6.8455002 +0,1,65,13,1,0,0,0,1,0,0,8.4,0,0,4225,2.128232,0,1,0,0,1,0,0,.83999996 +0,1,69,9,8,0,0,0,0,0,0,8.4,1,0,4761,2.128232,0,8,2.079442,2.079442,1,.8,.64,.83999996 +0,1,66,9,1,1,0,0,0,0,0,3.75,0,0,4356,1.321756,1,1,0,0,1,.2,.04,.375 +0,1,70,6,5,0,1,0,1,0,0,9,0,0,4900,2.197225,1,5,1.609438,1.609438,1,1,1,.9 +0,0,82,11,2,1,0,0,0,1,1,7.266,2,0,6724,1.983206,0,2,.6931472,.6931472,1,3.4,11.56,.72659998 +0,0,84,12,8,9,0,0,1,1,1,7.266,1,0,7056,1.983206,0,8,2.079442,2.079442,1,3.8,14.44,.72659998 +0,.4256451,71,16,4,0,0,0,0,0,0,22.554,2,0,5041,3.115912,1,4,1.386294,1.386294,1,1.2,1.44,2.2554001 +0,.5146349,72,17,7,0,0,0,1,1,1,18.654,3,0,5184,2.926061,1,7,1.94591,1.94591,1,1.4,1.96,1.8653999 +0,.363346,85,12,10,1,0,1,1,1,1,25.045,2,1,7225,3.220674,0,10,2.302585,2.302585,1,4,16,2.5045 +0,1,85,8,2,1,0,0,1,1,1,8.9,1,0,7225,2.186051,0,2,.6931472,.6931472,1,4,16,.88999996 +1,.3713738,73,12,4,6,0,1,0,1,0,52.19,2,1,5329,3.954891,0,4,1.386294,1.386294,1,1.6,2.56,5.2189999 +1,.3700992,65,12,23,1,0,1,1,1,1,40.427,3,1,4225,3.699498,0,23,3.135494,3.135494,1,0,0,4.0426998 +0,1,67,7,0,0,0,0,0,1,1,13.5,0,0,4489,2.60269,0,0,,-4.60517,0,.4,.16,1.35 +0,.2750203,85,7,7,1,0,0,0,0,0,2.458,0,0,7225,.899348,0,7,1.94591,1.94591,1,4,16,.24579999 +0,.2750203,83,8,21,1,0,0,1,1,1,2.458,2,0,6889,.899348,0,21,3.044523,3.044523,1,3.6,12.96,.24579999 +0,1,83,14,8,3,0,1,1,1,1,12,3,1,6889,2.484907,0,8,2.079442,2.079442,1,3.6,12.96,1.2 +0,.7012385,76,12,0,0,0,1,0,1,1,17.683,0,1,5776,2.872604,0,0,,-4.60517,0,2.2,4.84,1.7683001 +0,.2651603,76,10,6,9,0,1,1,1,0,31.909,4,1,5776,3.462888,0,6,1.791759,1.791759,1,2.2,4.84,3.1909 +0,.256425,73,14,3,2,0,1,0,0,0,32.996,1,1,5329,3.496386,0,3,1.098612,1.098612,1,1.6,2.56,3.2995998 +0,1,74,11,3,6,0,1,1,1,0,5.9,1,1,5476,1.774952,0,3,1.098612,1.098612,1,1.8,3.24,.59000001 +0,1,75,16,0,1,0,1,0,0,0,5.9,0,1,5625,1.774952,0,0,,-4.60517,0,2,4,.59000001 +0,.8552632,84,8,1,11,0,0,0,1,1,7.6,3,0,7056,2.028148,0,1,0,0,1,3.8,14.44,.75999999 +0,.8552632,67,12,4,20,0,0,1,0,0,7.6,0,0,4489,2.028148,0,4,1.386294,1.386294,1,.4,.16,.75999999 +0,1,76,12,5,1,0,1,1,1,1,8,3,1,5776,2.079442,0,5,1.609438,1.609438,1,2.2,4.84,.8 +0,.3185328,72,3,15,0,1,0,1,0,1,24.864,3,0,5184,3.213421,1,15,2.70805,2.70805,1,1.4,1.96,2.4864 +0,1,76,2,0,0,1,0,1,0,1,7.68,2,0,5776,2.03862,1,0,,-4.60517,0,2.2,4.84,.76799998 +0,.9977863,66,12,11,1,0,0,0,0,0,19.425,1,0,4356,2.966561,0,11,2.397895,2.397895,1,.2,.04,1.9424999 +0,.1360726,75,16,4,2,0,1,0,0,0,37.48,2,1,5625,3.623807,0,4,1.386294,1.386294,1,2,4,3.748 +0,.1348957,74,16,6,4,0,1,1,1,0,37.807,2,1,5476,3.632494,0,6,1.791759,1.791759,1,1.8,3.24,3.7806999 +0,1,68,12,0,0,0,1,0,0,0,5.047,0,1,4624,1.618794,0,0,,-4.60517,0,.6,.36,.50469999 +0,1,71,14,2,0,0,1,1,0,0,5.047,1,1,5041,1.618794,0,2,.6931472,.6931472,1,1.2,1.44,.50469999 +0,.9884027,85,10,0,0,0,0,0,0,0,5.691,0,0,7225,1.738886,0,0,,-4.60517,0,4,16,.5691 +0,.9884027,84,9,1,0,0,0,1,0,0,5.691,1,0,7056,1.738886,0,1,0,0,1,3.8,14.44,.5691 +0,.3254855,70,12,10,0,0,1,1,1,0,18.434,2,1,4900,2.914197,0,10,2.302585,2.302585,1,1,1,1.8434 +0,1,74,10,8,2,0,0,1,1,0,4.998,3,0,5476,1.609038,1,8,2.079442,2.079442,1,1.8,3.24,.49980001 +0,1,79,8,1,0,0,1,0,0,0,4.998,1,1,6241,1.609038,1,1,0,0,1,2.8,7.84,.49980001 +0,.3207547,83,17,22,41,0,1,0,1,1,26.5,4,1,6889,3.277145,0,22,3.091043,3.091043,1,3.6,12.96,2.65 +0,.3207547,81,17,4,2,0,1,1,0,1,26.5,2,1,6561,3.277145,0,4,1.386294,1.386294,1,3.2,10.24,2.65 +0,1,85,8,5,1,1,0,1,1,1,10.98,3,0,7225,2.396075,0,5,1.609438,1.609438,1,4,16,1.098 +0,1,69,3,6,1,1,0,0,1,1,8.676,1,0,4761,2.160561,0,6,1.791759,1.791759,1,.8,.64,.86759996 +0,.6532619,85,12,1,0,0,1,1,0,0,11.389,0,1,7225,2.432648,0,1,0,0,1,4,16,1.1389 +0,.6226415,65,16,2,0,0,0,0,0,0,31.8,2,0,4225,3.459466,0,2,.6931472,.6931472,1,0,0,3.1799999 +0,.9510771,82,10,21,23,0,1,0,1,0,20.379,2,1,6724,3.014505,0,21,3.044523,3.044523,1,3.4,11.56,2.0379 +0,.1775285,85,16,10,2,0,1,0,1,0,56.329,1,1,7225,4.031209,0,10,2.302585,2.302585,1,4,16,5.6328999 +0,.5310956,85,15,0,0,0,1,1,0,0,18.829,0,1,7225,2.935398,0,0,,-4.60517,0,4,16,1.8829 +0,.9225566,65,11,5,0,0,0,0,0,0,19.369,1,0,4225,2.963674,1,5,1.609438,1.609438,1,0,0,1.9368999 +0,1,79,3,30,1,0,0,1,1,0,7.2,4,0,6241,1.974081,0,30,3.401197,3.401197,1,2.8,7.84,.71999998 +0,0,80,12,16,13,1,0,1,1,1,8.175,3,0,6400,2.101081,0,16,2.772589,2.772589,1,3,9,.81750002 +0,.4908109,71,10,16,0,1,0,1,1,1,18.337,3,0,5041,2.908921,1,16,2.772589,2.772589,1,1.2,1.44,1.8337 +0,.4883303,65,8,9,0,1,0,1,1,1,6.684,2,0,4225,1.899717,1,9,2.197225,2.197225,1,0,0,.6684 +0,.5661362,69,12,10,2,0,1,1,1,0,19.165,2,1,4761,2.953086,0,10,2.302585,2.302585,1,.8,.64,1.9165001 +0,.4720059,72,17,4,8,0,1,0,1,0,22.987,2,1,5184,3.134929,0,4,1.386294,1.386294,1,1.4,1.96,2.2987 +0,.248227,67,16,11,1,0,1,0,0,0,28.2,2,1,4489,3.339322,0,11,2.397895,2.397895,1,.4,.16,2.8200001 +0,1,66,4,4,0,1,0,1,1,1,5.736,5,0,4356,1.746762,1,4,1.386294,1.386294,1,.2,.04,.57360001 +0,1,71,6,1,0,1,0,0,1,1,5.736,2,0,5041,1.746762,1,1,0,0,1,1.2,1.44,.57360001 +0,0,67,6,2,0,0,0,1,1,1,6,5,0,4489,1.791759,1,2,.6931472,.6931472,1,.4,.16,.6 +1,.0395213,68,12,12,4,0,1,0,0,0,164.519,1,1,4624,5.103026,0,12,2.484907,2.484907,1,.6,.36,16.4519 +0,.4896791,66,12,2,0,0,1,1,0,0,13.274,1,1,4356,2.585807,0,2,.6931472,.6931472,1,.2,.04,1.3274 +0,.4075235,72,12,11,22,0,1,1,0,0,31.9,1,1,5184,3.462606,0,11,2.397895,2.397895,1,1.4,1.96,3.19 +0,.4075235,74,14,1,0,0,1,0,1,0,31.9,0,1,5476,3.462606,0,1,0,0,1,1.8,3.24,3.19 +0,.6681756,77,10,3,0,0,1,0,0,0,4.418,2,1,5929,1.485687,0,3,1.098612,1.098612,1,2.4,5.76,.44180002 +0,1,75,8,4,0,0,1,1,0,0,2.952,3,1,5625,1.082483,0,4,1.386294,1.386294,1,2,4,.29519999 +0,0,78,0,3,0,0,0,1,1,1,9.185,2,0,6084,2.217572,1,3,1.098612,1.098612,1,2.6,6.76,.91850004 +0,.1000628,74,17,23,8,0,1,0,0,0,50.968,1,1,5476,3.931198,0,23,3.135494,3.135494,1,1.8,3.24,5.0967999 +0,.1100039,72,16,21,23,0,1,1,0,0,46.362,2,1,5184,3.83648,0,21,3.044523,3.044523,1,1.4,1.96,4.6362 +0,0,85,4,17,1,1,0,0,1,0,0,2,0,7225,,1,17,2.833213,2.833213,1,4,16,0 +0,0,68,8,2,0,1,0,1,0,0,6.624,0,0,4624,1.890699,1,2,.6931472,.6931472,1,.6,.36,.66240001 +0,.4705492,71,16,13,13,0,0,0,0,0,18.064,3,0,5041,2.893921,0,13,2.564949,2.564949,1,1.2,1.44,1.8063999 +0,.4705492,69,12,2,1,0,0,1,0,0,18.064,1,0,4761,2.893921,0,2,.6931472,.6931472,1,.8,.64,1.8063999 +0,.1727116,83,11,1,0,0,1,1,0,0,43.425,1,1,6889,3.771035,0,1,0,0,1,3.6,12.96,4.3424999 +0,1,74,12,9,0,0,0,0,0,0,10,1,0,5476,2.302585,1,9,2.197225,2.197225,1,1.8,3.24,1 +0,1,68,16,6,0,0,0,1,0,0,10,1,0,4624,2.302585,1,6,1.791759,1.791759,1,.6,.36,1 +0,.8697494,79,12,8,3,0,1,0,0,0,5.666,3,1,6241,1.734483,0,8,2.079442,2.079442,1,2.8,7.84,.56659999 +0,.9941497,77,12,13,10,0,1,1,0,0,4.957,3,1,5929,1.600801,0,13,2.564949,2.564949,1,2.4,5.76,.49569998 +0,.8408408,75,12,0,1,0,0,0,1,1,8.325,0,0,5625,2.119263,0,0,,-4.60517,0,2,4,.83249998 +0,.8327502,74,14,12,2,0,0,1,0,0,1.429,3,0,5476,.3569749,0,12,2.484907,2.484907,1,1.8,3.24,.1429 +0,.0231387,75,12,1,0,0,0,0,0,0,51.429,1,0,5625,3.940202,0,1,0,0,1,2,4,5.1429001 +0,.9626556,81,3,13,1,0,0,1,1,1,2.892,3,0,6561,1.061948,0,13,2.564949,2.564949,1,3.2,10.24,.2892 +0,.4189944,72,14,3,3,0,0,0,1,0,17.9,3,0,5184,2.884801,0,3,1.098612,1.098612,1,1.4,1.96,1.79 +0,1,72,12,14,6,0,0,1,0,0,7.5,2,0,5184,2.014903,0,14,2.639057,2.639057,1,1.4,1.96,.75 +0,1,72,12,8,5,0,1,1,1,1,19.694,5,1,5184,2.980314,0,8,2.079442,2.079442,1,1.4,1.96,1.9694 +0,.0828655,70,14,9,13,0,1,0,0,0,48.271,2,1,4900,3.876831,0,9,2.197225,2.197225,1,1,1,4.8271 +0,.9445983,82,9,7,2,0,1,1,1,0,14.44,1,1,6724,2.670002,0,7,1.94591,1.94591,1,3.4,11.56,1.444 +1,.0672646,67,10,0,0,0,1,0,0,0,66.9,0,1,4489,4.203199,0,0,,-4.60517,0,.4,.16,6.6900002 +0,.5308124,84,12,6,0,0,0,0,0,0,19.781,3,0,7056,2.984722,0,6,1.791759,1.791759,1,3.8,14.44,1.9781 +0,.755814,80,4,8,0,1,0,1,1,1,5.16,3,0,6400,1.640936,0,8,2.079442,2.079442,1,3,9,.51599998 +0,0,65,17,0,0,0,0,0,0,0,13,1,0,4225,2.564949,0,0,,-4.60517,0,0,0,1.3 +0,0,65,16,7,1,1,0,1,1,0,0,4,0,4225,,0,7,1.94591,1.94591,1,0,0,0 +0,.9574468,85,12,4,0,0,1,0,1,1,5.875,4,1,7225,1.770706,0,4,1.386294,1.386294,1,4,16,.5875 +0,1,85,10,11,4,0,0,1,0,1,11.25,2,0,7225,2.420368,0,11,2.397895,2.397895,1,4,16,1.125 +0,1,85,4,0,0,0,0,0,1,1,11.25,4,0,7225,2.420368,0,0,,-4.60517,0,4,16,1.125 +0,.9333333,68,16,7,2,0,1,0,0,0,9,1,1,4624,2.197225,0,7,1.94591,1.94591,1,.6,.36,.9 +0,.4916421,80,8,14,3,0,1,0,0,0,24.408,3,1,6400,3.194911,0,14,2.639057,2.639057,1,3,9,2.4408001 +0,.5687041,75,16,5,1,0,1,1,1,1,34.816,1,1,5625,3.550077,0,5,1.609438,1.609438,1,2,4,3.4816002 +0,.7843137,75,10,4,0,0,1,0,1,1,15.3,1,1,5625,2.727853,0,4,1.386294,1.386294,1,2,4,1.53 +0,.7843137,75,10,7,2,0,1,1,1,1,15.3,3,1,5625,2.727853,0,7,1.94591,1.94591,1,2,4,1.53 +0,1,85,0,2,0,0,0,0,1,1,6.5,2,0,7225,1.871802,0,2,.6931472,.6931472,1,4,16,.65 +0,.442357,82,12,8,0,0,0,1,1,1,11.71,3,0,6724,2.460443,0,8,2.079442,2.079442,1,3.4,11.56,1.171 +0,.4704356,71,1,8,7,0,0,0,0,0,16.963,3,0,5041,2.831034,0,8,2.079442,2.079442,1,1.2,1.44,1.6962999 +0,.2377057,82,14,30,2,0,0,0,1,1,40.588,4,0,6724,3.703472,0,30,3.401197,3.401197,1,3.4,11.56,4.0588001 +0,.5675777,72,10,16,2,0,0,1,0,1,16.026,2,0,5184,2.774212,0,16,2.772589,2.772589,1,1.4,1.96,1.6025999 +0,0,72,17,0,0,0,0,0,0,0,2.557,0,0,5184,.9388347,1,0,,-4.60517,0,1.4,1.96,.25569999 +0,0,72,16,1,0,0,0,1,0,0,2.557,0,0,5184,.9388347,1,1,0,0,1,1.4,1.96,.25569999 +0,.8602151,75,5,16,0,1,0,0,1,1,9.3,4,0,5625,2.230014,0,16,2.772589,2.772589,1,2,4,.93000002 +0,1,71,11,15,0,0,0,1,1,1,11.28,4,0,5041,2.423031,1,15,2.70805,2.70805,1,1.2,1.44,1.128 +0,.8776844,73,10,1,0,0,0,0,0,0,12.852,3,0,5329,2.553499,1,1,0,0,1,1.6,2.56,1.2852 +0,.721848,85,11,0,0,1,0,1,1,1,10.39,1,0,7225,2.340844,1,0,,-4.60517,0,4,16,1.039 +0,.6510967,77,17,8,8,0,1,0,0,0,29.908,2,1,5929,3.398126,1,8,2.079442,2.079442,1,2.4,5.76,2.9908001 +0,1,79,14,21,1,0,1,1,1,0,6.6,4,1,6241,1.88707,1,21,3.044523,3.044523,1,2.8,7.84,.65999999 +0,1,85,11,11,1,0,1,1,0,0,14.556,3,1,7225,2.678003,0,11,2.397895,2.397895,1,4,16,1.4556 +0,.0900563,71,12,8,3,0,1,1,1,0,26.65,3,1,5041,3.282789,0,8,2.079442,2.079442,1,1.2,1.44,2.665 +0,.9056604,71,15,40,8,0,1,0,1,0,2.65,4,1,5041,.9745597,0,40,3.688879,3.688879,1,1.2,1.44,.26500001 +0,.1846552,73,16,12,2,0,1,0,0,0,54.155,0,1,5329,3.99185,0,12,2.484907,2.484907,1,1.6,2.56,5.4154999 +0,.1922227,74,16,3,10,0,1,1,0,1,52.023,1,1,5476,3.951686,0,3,1.098612,1.098612,1,1.8,3.24,5.2022999 +0,0,65,12,11,0,0,0,1,0,0,0,2,0,4225,,1,11,2.397895,2.397895,1,0,0,0 +0,.0778637,70,16,11,3,0,0,0,0,0,153.743,2,0,4900,5.035282,0,11,2.397895,2.397895,1,1,1,15.3743 +0,1,65,9,4,1,0,0,1,0,0,5.237,2,0,4225,1.655749,1,4,1.386294,1.386294,1,0,0,.5237 +0,1,71,3,2,0,0,0,0,0,0,5.237,1,0,5041,1.655749,1,2,.6931472,.6931472,1,1.2,1.44,.5237 +0,.4137931,67,13,17,0,0,1,0,1,1,29,2,1,4489,3.367296,0,17,2.833213,2.833213,1,.4,.16,2.9 +0,.3950519,77,17,5,2,0,1,0,0,0,50.12,1,1,5929,3.91442,0,5,1.609438,1.609438,1,2.4,5.76,5.0119999 +0,.1096598,72,12,19,0,0,0,1,1,0,30.394,5,0,5184,3.414245,0,19,2.944439,2.944439,1,1.4,1.96,3.0393999 +0,.1209405,77,12,1,1,0,0,0,0,0,27.559,0,0,5929,3.316329,0,1,0,0,1,2.4,5.76,2.7559 +0,.2932014,75,12,5,82,0,1,0,1,0,46.289,3,1,5625,3.834904,0,5,1.609438,1.609438,1,2,4,4.6289001 +0,1,85,5,6,0,0,0,1,1,1,10.404,2,0,7225,2.34219,1,6,1.791759,1.791759,1,4,16,1.0404 +1,.097217,65,16,4,0,0,1,1,0,0,77.147,2,1,4225,4.345713,0,4,1.386294,1.386294,1,0,0,7.7147003 +0,0,66,12,1,1,1,0,0,0,0,23.605,1,0,4356,3.161458,1,1,0,0,1,.2,.04,2.3605 +0,.8795837,74,12,29,0,0,1,0,0,1,12.108,3,1,5476,2.493866,0,29,3.367296,3.367296,1,1.8,3.24,1.2108 +0,.3316583,85,12,4,1,0,0,0,1,1,59.7,0,0,7225,4.089332,0,4,1.386294,1.386294,1,4,16,5.9700001 +0,.196536,76,13,12,0,0,1,0,1,0,24.423,1,1,5776,3.195525,0,12,2.484907,2.484907,1,2.2,4.84,2.4423 +0,.196536,80,12,5,1,0,1,1,1,0,24.423,1,1,6400,3.195525,0,5,1.609438,1.609438,1,3,9,2.4423 +0,1,78,9,3,22,0,0,1,0,1,8.676,0,0,6084,2.160561,1,3,1.098612,1.098612,1,2.6,6.76,.86759996 +0,1,82,13,2,0,0,0,0,1,1,8.676,3,0,6724,2.160561,1,2,.6931472,.6931472,1,3.4,11.56,.86759996 +0,0,66,16,1,1,1,0,0,0,0,0,1,0,4356,,0,1,0,0,1,.2,.04,0 +0,.551714,67,10,2,4,0,1,1,0,1,27.188,2,1,4489,3.302776,0,2,.6931472,.6931472,1,.4,.16,2.7188 +0,.2839457,73,12,1,0,0,1,1,0,0,35.218,0,1,5329,3.561557,0,1,0,0,1,1.6,2.56,3.5217999 +0,1,73,8,2,0,0,0,0,0,0,9.36,0,0,5329,2.236445,0,2,.6931472,.6931472,1,1.6,2.56,.93599997 +0,.0974188,69,12,14,1,0,1,1,1,1,24.02,3,1,4761,3.178887,1,14,2.639057,2.639057,1,.8,.64,2.402 +0,0,68,10,2,0,1,0,1,1,1,7.831,1,0,4624,2.05809,1,2,.6931472,.6931472,1,.6,.36,.78309999 +0,.5641026,73,16,5,1,0,1,0,0,0,19.5,2,1,5329,2.970414,0,5,1.609438,1.609438,1,1.6,2.56,1.95 +0,1,73,12,5,0,0,1,1,0,0,9.5,3,1,5329,2.251292,0,5,1.609438,1.609438,1,1.6,2.56,.95 +0,.1743119,74,9,4,0,0,1,0,0,0,54.5,1,1,5476,3.998201,0,4,1.386294,1.386294,1,1.8,3.24,5.45 +0,.058075,66,12,2,8,0,1,0,0,0,28.842,2,1,4356,3.361833,0,2,.6931472,.6931472,1,.2,.04,2.8841999 +0,.0589063,67,12,4,2,0,1,1,0,0,28.435,3,1,4489,3.347621,0,4,1.386294,1.386294,1,.4,.16,2.8434999 +0,1,73,4,0,0,0,0,1,0,0,13,2,0,5329,2.564949,0,0,,-4.60517,0,1.6,2.56,1.3 +0,.5079365,65,16,4,3,0,1,0,0,0,23.625,1,1,4225,3.162305,0,4,1.386294,1.386294,1,0,0,2.3625 +0,.3406452,85,12,10,2,0,0,1,1,1,58.125,2,0,7225,4.062596,0,10,2.302585,2.302585,1,4,16,5.8125 +0,1,76,12,8,0,1,0,1,1,0,8.7,1,0,5776,2.163323,0,8,2.079442,2.079442,1,2.2,4.84,.86999998 +0,.3718323,71,12,4,3,0,0,1,0,0,17.481,1,0,5041,2.861115,0,4,1.386294,1.386294,1,1.2,1.44,1.7481001 +0,.2768196,73,7,6,0,0,0,0,1,0,23.481,1,0,5329,3.156192,0,6,1.791759,1.791759,1,1.6,2.56,2.3481001 +0,0,80,14,11,0,0,1,0,1,0,20.803,0,1,6400,3.035097,1,11,2.397895,2.397895,1,3,9,2.0802999 +0,0,71,16,6,0,0,1,1,1,0,0,2,1,5041,,1,6,1.791759,1.791759,1,1.2,1.44,0 +0,.2589244,85,14,8,1,1,0,1,1,1,21.458,1,0,7225,3.066097,0,8,2.079442,2.079442,1,4,16,2.1458 +0,.3277463,68,4,7,0,0,0,0,0,1,16.586,0,0,4624,2.808559,1,7,1.94591,1.94591,1,.6,.36,1.6586 +0,1,67,6,5,0,0,0,1,0,0,5.436,1,0,4489,1.693043,1,5,1.609438,1.609438,1,.4,.16,.54359999 +0,.6644518,85,12,0,12,0,1,0,1,0,21.672,2,1,7225,3.076021,0,0,,-4.60517,0,4,16,2.1672001 +0,.7425743,78,12,4,0,1,0,1,1,1,8.08,5,0,6084,2.089392,0,4,1.386294,1.386294,1,2.6,6.76,.80799999 +0,.6888889,85,12,2,1,0,1,1,1,0,11.25,2,1,7225,2.420368,0,2,.6931472,.6931472,1,4,16,1.125 +1,.6504065,72,12,4,3,0,0,0,1,0,12.3,0,0,5184,2.509599,0,4,1.386294,1.386294,1,1.4,1.96,1.23 +0,.5925926,76,14,5,10,0,0,1,1,0,13.5,1,0,5776,2.60269,0,5,1.609438,1.609438,1,2.2,4.84,1.35 +0,1,84,12,10,14,0,0,0,1,0,14.5,2,0,7056,2.674149,0,10,2.302585,2.302585,1,3.8,14.44,1.45 +0,.6540027,71,12,14,2,0,1,0,1,1,16.214,0,1,5041,2.785875,0,14,2.639057,2.639057,1,1.2,1.44,1.6214001 +0,.4472118,72,12,7,6,0,1,1,0,0,29.069,4,1,5184,3.369672,0,7,1.94591,1.94591,1,1.4,1.96,2.9069 +0,0,80,8,0,0,0,1,0,1,1,.964,0,1,6400,-.036664,0,0,,-4.60517,0,3,9,.0964 +0,.3333333,75,12,4,5,1,0,0,0,0,12.096,2,0,5625,2.492875,0,4,1.386294,1.386294,1,2,4,1.2096 +0,1,69,12,8,10,1,0,1,1,1,4.032,3,0,4761,1.394263,0,8,2.079442,2.079442,1,.8,.64,.40320001 +0,.2312155,78,11,15,25,0,1,1,1,1,56.19,6,1,6084,4.028739,0,15,2.70805,2.70805,1,2.6,6.76,5.6189999 +0,.1720326,75,6,9,0,1,0,1,0,0,14.474,2,0,5625,2.672354,1,9,2.197225,2.197225,1,2,4,1.4474 +0,.1758225,70,12,2,0,0,1,1,0,0,25.594,0,1,4900,3.242358,0,2,.6931472,.6931472,1,1,1,2.5594 +0,.2036752,74,12,5,1,0,0,0,0,0,22.094,1,0,5476,3.095306,0,5,1.609438,1.609438,1,1.8,3.24,2.2094 +0,.382975,69,12,2,0,0,1,1,1,0,22.931,2,1,4761,3.13249,0,2,.6931472,.6931472,1,.8,.64,2.2931 +0,.9905553,73,8,10,3,0,0,0,0,1,5.294,2,0,5329,1.666574,0,10,2.302585,2.302585,1,1.6,2.56,.52940001 +0,.4643174,71,12,1,1,0,0,1,0,0,11.294,2,0,5041,2.424272,0,1,0,0,1,1.2,1.44,1.1294 +0,1,84,3,11,1,0,0,0,1,1,5.166,3,0,7056,1.642099,1,11,2.397895,2.397895,1,3.8,14.44,.51659999 +0,1,81,4,19,1,1,0,1,1,1,5.166,5,0,6561,1.642099,1,19,2.944439,2.944439,1,3.2,10.24,.51659999 +1,0,65,12,5,0,0,1,1,1,0,31,2,1,4225,3.433987,1,5,1.609438,1.609438,1,0,0,3.1 +0,0,82,4,2,0,1,0,1,1,1,0,1,0,6724,,0,2,.6931472,.6931472,1,3.4,11.56,0 +0,.4482759,81,8,5,0,0,1,1,0,0,14.5,4,1,6561,2.674149,0,5,1.609438,1.609438,1,3.2,10.24,1.45 +0,1,67,10,4,2,0,0,0,0,0,11.762,0,0,4489,2.464874,0,4,1.386294,1.386294,1,.4,.16,1.1762 +0,1,66,12,3,3,0,0,1,1,1,11.762,1,0,4356,2.464874,0,3,1.098612,1.098612,1,.2,.04,1.1762 +0,.9027778,84,12,7,1,0,1,1,0,0,14.4,1,1,7056,2.667228,0,7,1.94591,1.94591,1,3.8,14.44,1.44 +0,0,80,12,0,0,0,0,0,0,0,2.5,0,0,6400,.9162908,1,0,,-4.60517,0,3,9,.25 +0,0,75,12,1,0,0,0,1,0,0,2.5,1,0,5625,.9162908,1,1,0,0,1,2,4,.25 +0,.1556077,65,17,3,6,0,1,1,0,0,77.117,3,1,4225,4.345324,0,3,1.098612,1.098612,1,0,0,7.7116997 +0,1,68,12,0,0,0,0,1,0,1,8.032,2,0,4624,2.083434,1,0,,-4.60517,0,.6,.36,.80319996 +0,.5,65,12,3,2,1,0,1,0,0,15,4,0,4225,2.70805,1,3,1.098612,1.098612,1,0,0,1.5 +0,1,81,7,0,0,0,0,1,0,0,19.694,2,0,6561,2.980314,0,0,,-4.60517,0,3.2,10.24,1.9694 +0,.1252767,82,17,4,2,0,1,0,0,0,71.841,1,1,6724,4.274456,0,4,1.386294,1.386294,1,3.4,11.56,7.1841003 +0,.1815541,78,12,5,2,0,1,1,0,0,49.572,2,1,6084,3.903426,0,5,1.609438,1.609438,1,2.6,6.76,4.9571999 +0,.5011985,72,12,2,2,0,0,0,0,0,22.945,1,0,5184,3.1331,0,2,.6931472,.6931472,1,1.4,1.96,2.2945 +0,.1106259,65,11,4,3,0,1,1,0,0,103.954,1,1,4225,4.643949,0,4,1.386294,1.386294,1,0,0,10.3954 +0,1,70,12,4,0,0,1,1,0,0,10.584,1,1,4900,2.359343,1,4,1.386294,1.386294,1,1,1,1.0584 +0,.3045294,77,12,4,1,0,1,1,0,0,31.13,4,1,5929,3.438172,0,4,1.386294,1.386294,1,2.4,5.76,3.1129999 +0,.9593496,80,12,1,0,0,0,0,0,0,14.76,2,0,6400,2.691921,0,1,0,0,1,3,9,1.476 +0,.6431096,83,14,2,0,0,1,0,0,0,14.15,0,1,6889,2.649715,0,2,.6931472,.6931472,1,3.6,12.96,1.415 +0,.6431096,80,12,12,4,0,1,1,0,0,14.15,1,1,6400,2.649715,0,12,2.484907,2.484907,1,3,9,1.415 +0,.3865631,66,16,3,2,0,0,0,1,0,25.869,1,0,4356,3.253045,0,3,1.098612,1.098612,1,.2,.04,2.5868999 +0,.7235569,82,14,2,2,0,1,1,1,0,12.82,2,1,6724,2.551006,0,2,.6931472,.6931472,1,3.4,11.56,1.282 +0,0,75,9,9,0,1,0,1,1,1,6,4,0,5625,1.791759,1,9,2.197225,2.197225,1,2,4,.6 +0,0,85,0,7,0,1,0,0,1,1,0,3,0,7225,,1,7,1.94591,1.94591,1,4,16,0 +0,.3508399,65,14,6,5,0,1,1,0,0,56.436,2,1,4225,4.033107,0,6,1.791759,1.791759,1,0,0,5.6436001 +0,.1914894,85,6,1,0,0,0,1,0,0,23.5,1,0,7225,3.157,0,1,0,0,1,4,16,2.35 +0,.7570254,85,8,50,5,0,1,0,1,1,5.231,1,1,7225,1.654602,0,50,3.912023,3.912023,1,4,16,.52309999 +0,.7570254,83,12,13,4,0,1,1,1,1,5.231,5,1,6889,1.654602,0,13,2.564949,2.564949,1,3.6,12.96,.52309999 +0,.6065319,83,12,2,0,0,1,0,1,1,16.075,1,1,6889,2.777265,0,2,.6931472,.6931472,1,3.6,12.96,1.6075001 +0,.6065319,73,13,2,0,0,1,1,0,0,16.075,0,1,5329,2.777265,0,2,.6931472,.6931472,1,1.6,2.56,1.6075001 +0,0,75,10,8,0,0,1,1,1,1,.1,4,1,5625,-2.302585,0,8,2.079442,2.079442,1,2,4,.01 +0,.9948671,76,9,4,0,0,1,0,0,0,19.482,2,1,5776,2.969491,0,4,1.386294,1.386294,1,2.2,4.84,1.9482 +0,.341637,75,11,3,3,0,1,1,0,0,28.1,5,1,5625,3.33577,0,3,1.098612,1.098612,1,2,4,2.81 +0,.341637,77,12,9,0,0,1,0,0,0,28.1,2,1,5929,3.33577,0,9,2.197225,2.197225,1,2.4,5.76,2.81 +0,1,76,12,5,0,1,0,0,1,0,8.494,2,0,5776,2.13936,0,5,1.609438,1.609438,1,2.2,4.84,.84940004 +0,1,75,12,0,0,1,0,1,1,0,8.494,1,0,5625,2.13936,0,0,,-4.60517,0,2,4,.84940004 +0,1,65,8,7,0,0,0,0,1,1,7.2,1,0,4225,1.974081,0,7,1.94591,1.94591,1,0,0,.71999998 +0,1,78,3,9,0,1,0,0,1,1,4.296,3,0,6084,1.457684,1,9,2.197225,2.197225,1,2.6,6.76,.4296 +0,1,78,3,9,2,1,0,1,1,1,4.296,3,0,6084,1.457684,1,9,2.197225,2.197225,1,2.6,6.76,.4296 +0,.8,72,6,19,0,1,0,0,1,0,12,1,0,5184,2.484907,1,19,2.944439,2.944439,1,1.4,1.96,1.2 +0,1,69,2,4,1,0,0,1,1,0,6,2,0,4761,1.791759,1,4,1.386294,1.386294,1,.8,.64,.6 +0,.3072422,75,16,10,0,0,1,0,0,0,18.116,3,1,5625,2.896796,0,10,2.302585,2.302585,1,2,4,1.8115999 +0,.6105748,76,16,12,0,0,1,1,0,0,9.116,2,1,5776,2.210031,0,12,2.484907,2.484907,1,2.2,4.84,.91160002 +0,0,82,10,6,0,1,0,1,1,0,6.868,0,0,6724,1.926873,1,6,1.791759,1.791759,1,3.4,11.56,.6868 +0,1,73,10,0,0,0,1,1,0,0,9.492,0,1,5329,2.250449,0,0,,-4.60517,0,1.6,2.56,.94919996 +0,.1623192,77,12,2,0,0,0,1,0,0,61.607,2,0,5929,4.120776,0,2,.6931472,.6931472,1,2.4,5.76,6.1606998 +0,1,85,16,6,5,0,0,1,1,1,7.046,3,0,7225,1.95246,0,6,1.791759,1.791759,1,4,16,.7046 +0,.1307944,80,12,10,1,0,1,1,0,0,18.013,3,1,6400,2.891094,0,10,2.302585,2.302585,1,3,9,1.8013 +0,.6541649,81,13,40,4,0,1,1,1,0,18.344,3,1,6561,2.909302,0,40,3.688879,3.688879,1,3.2,10.24,1.8344 +0,0,85,12,1,0,0,0,1,1,1,0,2,0,7225,,0,1,0,0,1,4,16,0 +0,.7675775,72,12,11,0,0,0,1,1,0,6.514,2,0,5184,1.873954,0,11,2.397895,2.397895,1,1.4,1.96,.65139999 +0,.1428803,72,17,8,63,0,1,1,1,1,37.045,3,1,5184,3.612133,1,8,2.079442,2.079442,1,1.4,1.96,3.7044998 +0,1,70,8,10,1,0,0,1,0,0,9.5,1,0,4900,2.251292,0,10,2.302585,2.302585,1,1,1,.95 +0,1,71,14,9,3,0,0,1,0,0,14.962,1,0,5041,2.705514,0,9,2.197225,2.197225,1,1.2,1.44,1.4962 +0,1,71,14,0,0,0,0,0,1,1,14.5,1,0,5041,2.674149,0,0,,-4.60517,0,1.2,1.44,1.45 +0,.53926,84,11,13,0,0,1,1,0,0,40.461,2,1,7056,3.700339,0,13,2.564949,2.564949,1,3.8,14.44,4.0460999 +0,.717772,84,15,34,0,0,1,1,1,0,13.932,3,1,7056,2.634188,0,34,3.526361,3.526361,1,3.8,14.44,1.3932 +0,0,72,12,5,0,1,0,1,1,0,6.768,1,0,5184,1.912206,0,5,1.609438,1.609438,1,1.4,1.96,.67680001 +0,.1935484,76,12,40,84,0,1,0,0,0,18.6,0,1,5776,2.923162,1,40,3.688879,3.688879,1,2.2,4.84,1.86 +0,.1935484,74,12,5,0,0,1,1,0,0,18.6,1,1,5476,2.923162,1,5,1.609438,1.609438,1,1.8,3.24,1.86 +0,.8695652,82,12,3,3,0,1,0,1,1,9.2,2,1,6724,2.219203,0,3,1.098612,1.098612,1,3.4,11.56,.91999998 +0,1,66,8,5,0,0,1,1,1,0,5,3,1,4356,1.609438,1,5,1.609438,1.609438,1,.2,.04,.5 +1,0,69,9,0,0,0,1,0,0,0,39,1,1,4761,3.663562,1,0,,-4.60517,0,.8,.64,3.9 +0,.6881129,69,0,5,0,1,0,1,0,0,5.813,2,0,4761,1.760097,1,5,1.609438,1.609438,1,.8,.64,.58130002 +0,.694156,73,12,13,16,0,0,1,0,1,16.564,2,0,5329,2.807232,0,13,2.564949,2.564949,1,1.6,2.56,1.6563999 +0,.3222251,73,16,7,5,0,1,0,1,0,11.433,1,1,5329,2.436504,0,7,1.94591,1.94591,1,1.6,2.56,1.1433 +0,.3222251,70,13,2,4,0,1,1,0,0,11.433,2,1,4900,2.436504,0,2,.6931472,.6931472,1,1,1,1.1433 +0,.1682294,69,12,5,8,0,0,1,0,0,66.124,0,0,4761,4.191532,0,5,1.609438,1.609438,1,.8,.64,6.6124001 +0,.3141937,80,14,16,0,1,0,1,1,1,12.731,1,0,6400,2.54404,0,16,2.772589,2.772589,1,3,9,1.2731 +0,1,69,4,0,0,0,0,1,0,0,5,0,0,4761,1.609438,1,0,,-4.60517,0,.8,.64,.5 +0,.84246,81,12,4,4,0,0,1,0,0,14.244,1,0,6561,2.656336,0,4,1.386294,1.386294,1,3.2,10.24,1.4244 +0,0,85,8,3,0,0,0,1,1,0,8.917,2,0,7225,2.187959,0,3,1.098612,1.098612,1,4,16,.89169998 +0,.1049663,75,13,5,2,0,1,0,0,0,61.696,1,1,5625,4.122219,0,5,1.609438,1.609438,1,2,4,6.1695999 +0,.9016393,76,10,2,0,0,0,1,1,1,12.2,1,0,5776,2.501436,1,2,.6931472,.6931472,1,2.2,4.84,1.22 +0,1,77,7,2,0,0,0,1,1,1,10,2,0,5929,2.302585,0,2,.6931472,.6931472,1,2.4,5.76,1 +0,.7941031,79,12,6,2,0,1,0,0,0,12.142,3,1,6241,2.49667,0,6,1.791759,1.791759,1,2.8,7.84,1.2142 +0,.7941031,78,12,4,3,0,1,1,0,0,12.142,4,1,6084,2.49667,1,4,1.386294,1.386294,1,2.6,6.76,1.2142 +0,.9728622,76,11,3,1,0,1,1,0,0,9.765,3,1,5776,2.278805,0,3,1.098612,1.098612,1,2.2,4.84,.97650003 +0,1,85,13,4,0,0,1,1,1,1,10.8,2,1,7225,2.379546,0,4,1.386294,1.386294,1,4,16,1.08 +0,.4978096,78,16,16,2,0,1,1,1,1,30.132,2,1,6084,3.405588,0,16,2.772589,2.772589,1,2.6,6.76,3.0132 +0,0,73,11,3,0,0,0,0,0,0,9.337,2,0,5329,2.233985,1,3,1.098612,1.098612,1,1.6,2.56,.93369999 +0,1,69,15,2,0,0,0,1,1,0,9.55,3,0,4761,2.256541,0,2,.6931472,.6931472,1,.8,.64,.95500002 +0,1,79,8,1,0,0,1,1,1,0,11.11,2,1,6241,2.407845,0,1,0,0,1,2.8,7.84,1.111 +0,.2534212,72,17,6,0,0,0,1,1,1,59.19,1,0,5184,4.080752,0,6,1.791759,1.791759,1,1.4,1.96,5.9189999 +0,1,85,10,2,0,0,0,1,1,1,8.7,2,0,7225,2.163323,0,2,.6931472,.6931472,1,4,16,.86999998 +0,1,74,11,16,3,0,1,0,1,1,10.8,5,1,5476,2.379546,1,16,2.772589,2.772589,1,1.8,3.24,1.08 +0,.1376535,66,13,1,0,0,1,1,0,0,86.972,0,1,4356,4.465586,0,1,0,0,1,.2,.04,8.6972 +0,.8229128,74,0,0,0,0,0,0,0,0,10.876,0,0,5476,2.386559,1,0,,-4.60517,0,1.8,3.24,1.0876 +0,.8229128,70,0,5,0,0,0,1,0,0,10.876,0,0,4900,2.386559,1,5,1.609438,1.609438,1,1,1,1.0876 +0,.4173878,85,6,0,1,0,1,0,0,1,9.823,2,1,7225,2.284727,0,0,,-4.60517,0,4,16,.9823 +0,.4173878,85,8,2,3,0,1,1,1,1,9.823,4,1,7225,2.284727,0,2,.6931472,.6931472,1,4,16,.9823 +0,0,67,9,0,0,1,0,1,0,0,2.2,0,0,4489,.7884574,1,0,,-4.60517,0,.4,.16,.22 +0,.3303965,65,16,3,9,0,1,0,0,0,36.32,3,1,4225,3.592369,0,3,1.098612,1.098612,1,0,0,3.632 +0,0,74,1,2,0,0,0,0,0,0,9.459,1,0,5476,2.246967,0,2,.6931472,.6931472,1,1.8,3.24,.94589996 +0,0,65,0,1,0,0,0,1,1,0,.698,1,0,4225,-.3595362,0,1,0,0,1,0,0,.0698 +0,.7151899,81,8,11,0,0,1,1,1,1,25.28,4,1,6561,3.230014,0,11,2.397895,2.397895,1,3.2,10.24,2.5280001 +0,1,74,12,13,0,0,0,1,1,1,12,3,0,5476,2.484907,1,13,2.564949,2.564949,1,1.8,3.24,1.2 +0,.5,75,8,3,0,1,0,1,0,0,18,2,0,5625,2.890372,1,3,1.098612,1.098612,1,2,4,1.8 +0,.5,79,6,1,0,1,0,0,0,0,12,1,0,6241,2.484907,1,1,0,0,1,2.8,7.84,1.2 +0,.6578212,85,2,2,0,0,1,0,1,1,17.184,0,1,7225,2.843979,0,2,.6931472,.6931472,1,4,16,1.7184 +0,1,84,9,11,0,1,0,1,1,1,10.656,1,0,7056,2.366123,0,11,2.397895,2.397895,1,3.8,14.44,1.0656 +0,.1572533,83,12,11,10,0,1,0,1,1,30.524,3,1,6889,3.418513,0,11,2.397895,2.397895,1,3.6,12.96,3.0524 +0,.1468384,80,17,6,6,0,1,1,0,0,32.689,2,1,6400,3.487039,0,6,1.791759,1.791759,1,3,9,3.2688999 +0,.9508455,83,8,4,0,0,0,1,0,0,10.172,2,0,6889,2.319639,0,4,1.386294,1.386294,1,3.6,12.96,1.0172 +0,0,78,6,4,0,0,0,1,0,0,10,0,0,6084,2.302585,0,4,1.386294,1.386294,1,2.6,6.76,1 +0,.8888889,79,12,7,1,0,0,0,1,1,9,1,0,6241,2.197225,0,7,1.94591,1.94591,1,2.8,7.84,.9 +0,.8888889,68,12,1,0,0,0,1,0,0,9,0,0,4624,2.197225,0,1,0,0,1,.6,.36,.9 +0,.6632894,66,8,2,0,0,0,0,1,0,32.669,0,0,4356,3.486427,0,2,.6931472,.6931472,1,.2,.04,3.2668999 +0,.8350711,70,12,0,0,0,0,0,1,0,23.21,2,0,4900,3.144583,0,0,,-4.60517,0,1,1,2.3209999 +1,.2462312,68,12,2,9,0,1,0,0,0,39.8,1,1,4624,3.683867,0,2,.6931472,.6931472,1,.6,.36,3.9799999 +0,1,71,12,9,0,0,1,1,1,1,9.8,1,1,5041,2.282382,0,9,2.197225,2.197225,1,1.2,1.44,.98000002 +0,.3700818,68,17,10,5,0,1,1,1,0,25.67,3,1,4624,3.245323,0,10,2.302585,2.302585,1,.6,.36,2.567 +0,.3700818,68,17,2,3,0,1,0,0,0,25.67,0,1,4624,3.245323,0,2,.6931472,.6931472,1,.6,.36,2.567 +0,.3126411,67,12,8,2,0,1,1,0,0,28.787,3,1,4489,3.359924,0,8,2.079442,2.079442,1,.4,.16,2.8787001 +0,.3126411,83,16,16,3,0,1,0,0,0,28.787,1,1,6889,3.359924,0,16,2.772589,2.772589,1,3.6,12.96,2.8787001 +0,.75,75,10,7,0,1,0,1,1,1,7.2,4,0,5625,1.974081,0,7,1.94591,1.94591,1,2,4,.71999998 +0,.9989578,72,8,7,2,1,0,1,1,1,7.676,4,0,5184,2.038099,0,7,1.94591,1.94591,1,1.4,1.96,.76760001 +0,.5348837,66,12,13,1,0,1,1,1,0,21.5,3,1,4356,3.068053,1,13,2.564949,2.564949,1,.2,.04,2.15 +0,.5348837,71,12,1,0,0,1,0,1,0,21.5,1,1,5041,3.068053,1,1,0,0,1,1.2,1.44,2.15 +0,.9109731,70,2,2,3,1,0,1,1,1,5.796,4,0,4900,1.757168,1,2,.6931472,.6931472,1,1,1,.5796 +0,0,76,10,6,1,1,0,1,0,0,1.164,2,0,5776,.1518624,1,6,1.791759,1.791759,1,2.2,4.84,.1164 +0,0,70,6,2,0,1,0,0,0,0,0,1,0,4900,,1,2,.6931472,.6931472,1,1,1,0 +0,.4814815,67,12,3,2,0,0,0,0,0,27,3,0,4489,3.295837,0,3,1.098612,1.098612,1,.4,.16,2.7 +0,0,71,13,48,0,0,1,1,0,1,.309,3,1,5041,-1.174414,0,48,3.871201,3.871201,1,1.2,1.44,.0309 +1,0,73,13,0,0,0,1,0,0,0,52.309,1,1,5329,3.957168,0,0,,-4.60517,0,1.6,2.56,5.2308998 +0,.9268718,81,12,3,2,1,0,1,1,0,8.027,2,0,6561,2.082811,0,3,1.098612,1.098612,1,3.2,10.24,.80270004 +0,.7371007,73,6,4,0,1,0,1,1,1,8.14,2,0,5329,2.09679,1,4,1.386294,1.386294,1,1.6,2.56,.81400003 +0,1,71,14,3,0,0,0,1,0,0,7.2,0,0,5041,1.974081,0,3,1.098612,1.098612,1,1.2,1.44,.71999998 +0,.1206677,72,12,2,3,0,1,0,1,0,74.585,0,1,5184,4.311939,0,2,.6931472,.6931472,1,1.4,1.96,7.4584999 +0,.3592097,70,12,7,2,0,1,1,0,0,25.055,1,1,4900,3.221073,0,7,1.94591,1.94591,1,1,1,2.5055 +0,.4,84,2,4,0,1,0,0,1,1,12.5,5,0,7056,2.525729,0,4,1.386294,1.386294,1,3.8,14.44,1.25 +0,.5714286,66,0,13,1,1,0,1,1,1,8.75,4,0,4356,2.169054,1,13,2.564949,2.564949,1,.2,.04,.875 +0,0,78,6,5,0,0,0,1,1,1,0,3,0,6084,,1,5,1.609438,1.609438,1,2.6,6.76,0 +0,0,67,12,0,0,0,1,1,0,0,21.6,2,1,4489,3.072693,1,0,,-4.60517,0,.4,.16,2.16 +0,.9686099,73,17,2,0,0,1,0,0,1,5.575,2,1,5329,1.718292,0,2,.6931472,.6931472,1,1.6,2.56,.55749998 +1,.115942,68,17,1,0,0,1,1,0,0,46.575,2,1,4624,3.841064,0,1,0,0,1,.6,.36,4.6575001 +0,1,70,16,15,3,0,1,1,0,0,8.7,1,1,4900,2.163323,0,15,2.70805,2.70805,1,1,1,.86999998 +0,.3161977,74,15,1,0,0,0,0,0,0,33.264,1,0,5476,3.504476,0,1,0,0,1,1.8,3.24,3.3264 +0,.3170842,71,13,2,0,0,0,1,0,0,33.171,0,0,5041,3.501676,0,2,.6931472,.6931472,1,1.2,1.44,3.3171001 +0,1,73,8,2,0,0,0,0,0,0,15,0,0,5329,2.70805,1,2,.6931472,.6931472,1,1.6,2.56,1.5 +0,.7107801,85,8,29,2,0,0,0,0,0,11.818,2,0,7225,2.469624,0,29,3.367296,3.367296,1,4,16,1.1818 +0,.7107801,85,8,8,0,0,0,1,0,0,11.818,2,0,7225,2.469624,0,8,2.079442,2.079442,1,4,16,1.1818 +0,.4397081,72,16,7,5,0,0,1,0,0,30.966,2,0,5184,3.43289,0,7,1.94591,1.94591,1,1.4,1.96,3.0966 +0,.4397081,76,17,6,0,0,0,0,1,0,30.966,3,0,5776,3.43289,0,6,1.791759,1.791759,1,2.2,4.84,3.0966 +0,.7065217,76,14,3,0,0,0,0,0,0,18.4,2,0,5776,2.912351,0,3,1.098612,1.098612,1,2.2,4.84,1.84 +0,.8648649,75,12,0,0,0,0,0,1,1,14.8,0,0,5625,2.694627,0,0,,-4.60517,0,2,4,1.48 +0,.8648649,71,12,0,0,0,0,1,0,0,14.8,0,0,5041,2.694627,0,0,,-4.60517,0,1.2,1.44,1.48 +0,1,70,7,2,0,0,0,1,0,0,6,2,0,4900,1.791759,1,2,.6931472,.6931472,1,1,1,.6 +0,1,79,8,1,0,0,0,1,1,1,8.364,1,0,6241,2.123937,1,1,0,0,1,2.8,7.84,.83640003 +0,.6666667,72,17,11,0,0,1,1,0,0,18,4,1,5184,2.890372,0,11,2.397895,2.397895,1,1.4,1.96,1.8 +0,1,73,16,19,0,0,1,0,1,1,12,1,1,5329,2.484907,0,19,2.944439,2.944439,1,1.6,2.56,1.2 +0,.6290507,73,8,9,0,0,0,0,1,1,20.984,4,0,5329,3.04376,0,9,2.197225,2.197225,1,1.6,2.56,2.0983999 +1,.244898,70,12,8,1,0,1,0,0,0,49,3,1,4900,3.89182,1,8,2.079442,2.079442,1,1,1,4.9 +0,1,72,12,13,53,0,1,1,0,0,21.669,2,1,5184,3.075883,0,13,2.564949,2.564949,1,1.4,1.96,2.1669001 +0,1,83,12,0,0,0,1,0,0,0,21.669,1,1,6889,3.075883,0,0,,-4.60517,0,3.6,12.96,2.1669001 +0,.9986131,72,7,2,0,0,0,0,1,1,7.21,1,0,5184,1.975469,0,2,.6931472,.6931472,1,1.4,1.96,.721 +0,.9986131,72,9,2,0,1,0,1,1,1,7.21,3,0,5184,1.975469,0,2,.6931472,.6931472,1,1.4,1.96,.721 +0,.6428571,84,13,7,3,0,0,1,0,0,14,1,0,7056,2.639057,1,7,1.94591,1.94591,1,3.8,14.44,1.4 +0,.9394145,67,12,6,0,0,1,0,0,0,20.632,0,1,4489,3.026843,0,6,1.791759,1.791759,1,.4,.16,2.0632 +0,.1106093,65,15,7,19,0,1,1,0,0,21.698,3,1,4225,3.07722,0,7,1.94591,1.94591,1,0,0,2.1698 +0,.974026,69,14,5,0,0,0,0,0,0,6.16,3,0,4761,1.818077,0,5,1.609438,1.609438,1,.8,.64,.61599998 +0,.7777778,74,3,0,0,0,0,0,0,0,4.5,0,0,5476,1.504077,1,0,,-4.60517,0,1.8,3.24,.45 +0,1,82,6,20,0,1,0,1,1,1,6.42,2,0,6724,1.859418,1,20,2.995732,2.995732,1,3.4,11.56,.64200001 +0,0,69,6,10,0,1,0,1,0,1,6.768,3,0,4761,1.912206,1,10,2.302585,2.302585,1,.8,.64,.67680001 +0,0,85,12,5,1,1,0,1,1,1,6.768,1,0,7225,1.912206,1,5,1.609438,1.609438,1,4,16,.67680001 +0,.16392,65,17,5,27,0,1,1,1,0,79.307,2,1,4225,4.373326,0,5,1.609438,1.609438,1,0,0,7.9306999 +0,.3243243,66,16,4,2,0,1,1,1,0,37,2,1,4356,3.610918,0,4,1.386294,1.386294,1,.2,.04,3.7 +0,.6288896,79,9,4,4,0,0,1,0,1,6.106,3,0,6241,1.809272,0,4,1.386294,1.386294,1,2.8,7.84,.61059999 +0,.2651762,81,12,4,0,0,1,1,0,0,24.512,0,1,6561,3.199163,0,4,1.386294,1.386294,1,3.2,10.24,2.4511999 +0,.2642814,81,12,2,0,0,1,0,0,0,24.595,1,1,6561,3.202543,0,2,.6931472,.6931472,1,3.2,10.24,2.4594999 +0,1,79,13,3,0,0,0,1,0,0,19.694,2,0,6241,2.980314,0,3,1.098612,1.098612,1,2.8,7.84,1.9694 +0,.187911,77,11,15,20,0,1,1,1,0,57.474,4,1,5929,4.051332,0,15,2.70805,2.70805,1,2.4,5.76,5.7473999 +0,.5,71,6,8,0,0,0,0,0,0,16.86,3,0,5041,2.824944,0,8,2.079442,2.079442,1,1.2,1.44,1.6860001 +0,.9237875,65,12,2,0,0,1,1,1,1,10.825,0,1,4225,2.381858,1,2,.6931472,.6931472,1,0,0,1.0825 +0,0,78,5,5,0,1,0,1,0,0,6,1,0,6084,1.791759,1,5,1.609438,1.609438,1,2.6,6.76,.6 +0,.5,70,8,3,3,0,1,0,1,1,19.2,1,1,4900,2.95491,0,3,1.098612,1.098612,1,1,1,1.9200001 +0,1,85,7,2,0,0,0,1,1,0,6.72,2,0,7225,1.905088,1,2,.6931472,.6931472,1,4,16,.67199998 +0,.4894763,85,12,5,1,0,1,0,0,0,18.387,0,1,7225,2.911644,0,5,1.609438,1.609438,1,4,16,1.8386999 +0,.4894763,71,12,4,12,0,0,1,0,0,18.387,2,0,5041,2.911644,0,4,1.386294,1.386294,1,1.2,1.44,1.8386999 +0,.8333333,75,12,1,0,0,0,0,0,0,15,3,0,5625,2.70805,1,1,0,0,1,2,4,1.5 +0,.4186046,65,12,16,3,0,1,1,1,0,34.4,3,1,4225,3.538057,0,16,2.772589,2.772589,1,0,0,3.4400002 +0,.2566159,75,12,23,2,0,0,0,1,1,24.94,2,0,5625,3.216473,0,23,3.135494,3.135494,1,2,4,2.4940001 +0,.5383265,81,11,11,1,1,0,0,1,1,10.254,2,0,6561,2.327668,0,11,2.397895,2.397895,1,3.2,10.24,1.0254 +0,1,85,6,7,0,0,0,1,1,1,6,3,0,7225,1.791759,0,7,1.94591,1.94591,1,4,16,.6 +0,.2231202,72,14,6,46,0,1,0,1,1,40.337,3,1,5184,3.697269,0,6,1.791759,1.791759,1,1.4,1.96,4.0337002 +0,.3114187,72,14,0,1,0,1,1,1,1,28.9,2,1,5184,3.363842,0,0,,-4.60517,0,1.4,1.96,2.89 +0,.0890769,70,14,3,11,0,0,1,0,0,44.905,1,0,4900,3.804549,0,3,1.098612,1.098612,1,1,1,4.4904999 +0,0,85,2,4,0,1,0,1,1,0,0,2,0,7225,,1,4,1.386294,1.386294,1,4,16,0 +0,.4713548,71,12,19,1,0,0,1,1,1,16.268,4,0,5041,2.7892,0,19,2.944439,2.944439,1,1.2,1.44,1.6268 +0,0,76,7,3,0,0,1,0,0,0,36.983,1,1,5776,3.610458,1,3,1.098612,1.098612,1,2.2,4.84,3.6983002 +0,.5050393,85,8,4,0,0,0,1,1,1,25.202,2,0,7225,3.226923,0,4,1.386294,1.386294,1,4,16,2.5202 +0,1,85,16,0,0,0,1,1,0,0,9.6,0,1,7225,2.261763,0,0,,-4.60517,0,4,16,.96000004 +0,1,85,12,0,0,0,1,0,1,1,10.092,1,1,7225,2.311743,0,0,,-4.60517,0,4,16,1.0092 +0,.6896552,77,15,18,10,0,0,1,1,1,14.5,5,0,5929,2.674149,1,18,2.890372,2.890372,1,2.4,5.76,1.45 +0,.6896552,76,12,10,1,0,0,0,1,1,14.5,4,0,5776,2.674149,0,10,2.302585,2.302585,1,2.2,4.84,1.45 +0,.9615384,85,10,2,0,0,1,1,1,0,5.2,2,1,7225,1.648659,1,2,.6931472,.6931472,1,4,16,.51999998 +0,.4685813,71,12,0,0,0,1,0,0,0,30.014,0,1,5041,3.401664,0,0,,-4.60517,0,1.2,1.44,3.0014 +0,0,65,12,1,0,0,1,1,0,0,29.25,0,1,4225,3.37588,0,1,0,0,1,0,0,2.925 +0,.2808813,66,13,5,2,0,0,1,0,0,32.042,2,0,4356,3.467047,0,5,1.609438,1.609438,1,.2,.04,3.2042 +0,.3822955,65,12,2,3,0,1,0,0,0,23.542,2,1,4225,3.158786,0,2,.6931472,.6931472,1,0,0,2.3542 +0,1,65,9,0,0,0,0,0,1,1,6.24,1,0,4225,1.83098,0,0,,-4.60517,0,0,0,.62399998 +0,.4309392,68,12,1,0,0,1,0,1,0,18.1,1,1,4624,2.895912,0,1,0,0,1,.6,.36,1.81 +0,.6446281,72,13,1,2,0,1,1,0,0,12.1,2,1,5184,2.493206,0,1,0,0,1,1.4,1.96,1.21 +0,0,74,16,3,0,0,1,0,1,1,42.272,2,1,5476,3.744125,0,3,1.098612,1.098612,1,1.8,3.24,4.2271999 +0,0,75,14,0,0,0,1,1,1,1,34.111,2,1,5625,3.52962,0,0,,-4.60517,0,2,4,3.4111 +0,.4545455,75,13,17,3,0,1,1,0,0,13.2,0,1,5625,2.580217,0,17,2.833213,2.833213,1,2,4,1.32 +0,.8910891,73,12,6,0,0,0,1,0,0,10.1,0,0,5329,2.312536,0,6,1.791759,1.791759,1,1.6,2.56,1.01 +0,.8910891,75,11,2,0,0,0,0,0,0,10.1,0,0,5625,2.312536,0,2,.6931472,.6931472,1,2,4,1.01 +0,.3783672,85,5,4,1,0,1,0,1,1,28.956,4,1,7225,3.365777,1,4,1.386294,1.386294,1,4,16,2.8955999 +0,.2126819,73,13,0,0,0,0,0,0,0,32.913,0,0,5329,3.493868,1,0,,-4.60517,0,1.6,2.56,3.2912998 +0,0,70,12,4,7,0,1,1,1,0,4.24,3,1,4900,1.444563,0,4,1.386294,1.386294,1,1,1,.42399998 +0,.4157581,68,12,4,0,0,0,1,1,0,27.516,2,0,4624,3.314768,0,4,1.386294,1.386294,1,.6,.36,2.7516001 +0,1,70,9,12,0,0,1,0,1,1,9,3,1,4900,2.197225,1,12,2.484907,2.484907,1,1,1,.9 +0,.206862,66,17,3,24,0,1,0,0,0,95.716,2,1,4356,4.561386,0,3,1.098612,1.098612,1,.2,.04,9.5716003 +0,.2532971,66,12,21,7,0,0,1,1,1,59.219,4,0,4356,4.081243,0,21,3.044523,3.044523,1,.2,.04,5.9219002 +0,.5916452,70,15,11,0,0,1,0,0,0,19.079,4,1,4900,2.948588,0,11,2.397895,2.397895,1,1,1,1.9079 +0,.5916452,71,12,4,4,0,1,1,0,0,19.079,3,1,5041,2.948588,0,4,1.386294,1.386294,1,1.2,1.44,1.9079 +0,1,76,12,7,1,0,1,1,1,1,10.462,4,1,5776,2.34775,0,7,1.94591,1.94591,1,2.2,4.84,1.0462 +0,.625,81,7,14,1,0,1,0,1,1,15,3,1,6561,2.70805,0,14,2.639057,2.639057,1,3.2,10.24,1.5 +0,.5769231,72,12,9,0,0,1,1,1,1,16.25,4,1,5184,2.788093,0,9,2.197225,2.197225,1,1.4,1.96,1.625 +0,.3109151,68,13,0,0,1,0,0,1,0,21.768,1,0,4624,3.080441,0,0,,-4.60517,0,.6,.36,2.1768 +0,0,85,8,11,0,0,1,1,1,1,.802,4,1,7225,-.2206467,0,11,2.397895,2.397895,1,4,16,.0802 +0,.722393,83,8,7,4,0,1,0,0,0,13.339,1,1,6889,2.590692,0,7,1.94591,1.94591,1,3.6,12.96,1.3339 +0,.722393,77,12,7,1,0,1,1,1,0,13.339,0,1,5929,2.590692,0,7,1.94591,1.94591,1,2.4,5.76,1.3339 +0,.3792188,78,12,31,2,0,1,0,1,1,23.733,4,1,6084,3.166867,0,31,3.433987,3.433987,1,2.6,6.76,2.3733 +0,.3741581,72,12,1,2,0,1,1,0,0,24.054,0,1,5184,3.180301,0,1,0,0,1,1.4,1.96,2.4054001 +0,0,65,13,1,0,0,1,1,0,0,.1,3,1,4225,-2.302585,1,1,0,0,1,0,0,.01 +1,0,67,14,0,0,0,1,0,0,0,33.986,0,1,4489,3.525949,1,0,,-4.60517,0,.4,.16,3.3986 +0,0,85,14,4,0,0,1,1,0,0,9.997,3,1,7225,2.302285,0,4,1.386294,1.386294,1,4,16,.99969997 +1,.1489514,69,12,0,0,0,1,0,0,0,25.176,0,1,4761,3.225891,1,0,,-4.60517,0,.8,.64,2.5176001 +0,.7894737,67,12,0,0,0,0,1,0,0,4.75,0,0,4489,1.558145,1,0,,-4.60517,0,.4,.16,.475 +0,.4316833,66,17,5,0,0,1,0,0,0,50.544,0,1,4356,3.922844,0,5,1.609438,1.609438,1,.2,.04,5.0543999 +0,0,66,16,4,1,0,1,1,0,0,54.347,0,1,4356,3.995389,0,4,1.386294,1.386294,1,.2,.04,5.4347 +0,.7848346,76,4,0,0,0,1,0,0,0,8.282,1,1,5776,2.114084,0,0,,-4.60517,0,2.2,4.84,.82819996 +0,.7848346,72,4,3,0,0,1,1,1,0,8.282,2,1,5184,2.114084,0,3,1.098612,1.098612,1,1.4,1.96,.82819996 +0,1,68,12,22,11,0,1,1,1,0,12,2,1,4624,2.484907,0,22,3.091043,3.091043,1,.6,.36,1.2 +0,.9084584,82,12,16,3,0,1,1,1,1,10.924,2,1,6724,2.390962,0,16,2.772589,2.772589,1,3.4,11.56,1.0924 +0,.5,76,9,0,0,0,0,0,1,0,24,0,0,5776,3.178054,1,0,,-4.60517,0,2.2,4.84,2.4 +0,1,71,11,3,0,0,1,1,1,0,6.432,2,1,5041,1.861286,0,3,1.098612,1.098612,1,1.2,1.44,.64320002 +0,.618047,85,12,8,0,0,1,1,1,0,12.944,3,1,7225,2.560632,0,8,2.079442,2.079442,1,4,16,1.2944 +0,0,75,12,11,0,0,0,1,1,0,9.784,3,0,5625,2.280748,0,11,2.397895,2.397895,1,2,4,.97840004 +0,0,79,12,3,0,0,0,0,1,0,9.784,2,0,6241,2.280748,0,3,1.098612,1.098612,1,2.8,7.84,.97840004 +0,.7424577,71,10,18,0,0,0,1,1,1,16.308,3,0,5041,2.791656,0,18,2.890372,2.890372,1,1.2,1.44,1.6308001 +0,1,73,5,0,15,0,1,0,0,0,8.689,0,1,5329,2.162058,0,0,,-4.60517,0,1.6,2.56,.86890001 +0,.3997765,71,6,7,0,0,1,0,1,0,32.208,2,1,5041,3.472215,1,7,1.94591,1.94591,1,1.2,1.44,3.2208 +0,.9777382,75,6,9,4,0,1,1,1,1,8.984,1,1,5625,2.195445,0,9,2.197225,2.197225,1,2,4,.89840002 +0,1,85,4,0,0,0,0,0,1,1,10,0,0,7225,2.302585,1,0,,-4.60517,0,4,16,1 +0,0,67,17,5,0,0,0,1,0,0,71.607,0,0,4489,4.271193,1,5,1.609438,1.609438,1,.4,.16,7.1607002 +0,0,69,12,2,0,0,1,0,0,0,.681,1,1,4761,-.384193,1,2,.6931472,.6931472,1,.8,.64,.0681 +0,1,69,12,2,0,0,0,1,0,0,13,1,0,4761,2.564949,0,2,.6931472,.6931472,1,.8,.64,1.3 +0,1,70,8,17,0,1,0,1,1,1,6,4,0,4900,1.791759,1,17,2.833213,2.833213,1,1,1,.6 +0,1,75,8,4,0,0,0,0,1,1,9,1,0,5625,2.197225,1,4,1.386294,1.386294,1,2,4,.9 +0,.7216495,85,10,6,6,0,1,1,1,1,19.4,2,1,7225,2.965273,0,6,1.791759,1.791759,1,4,16,1.94 +0,1,65,3,9,1,0,0,1,1,1,5.436,5,0,4225,1.693043,1,9,2.197225,2.197225,1,0,0,.54359999 +0,.3724053,69,3,4,0,0,0,0,1,1,14.597,2,0,4761,2.680816,1,4,1.386294,1.386294,1,.8,.64,1.4597 +0,.8305489,78,7,7,11,0,0,1,0,0,10.475,4,0,6084,2.348991,1,7,1.94591,1.94591,1,2.6,6.76,1.0475 +0,1,85,8,1,0,0,0,1,1,1,7,1,0,7225,1.94591,0,1,0,0,1,4,16,.7 +0,.8014247,72,17,0,0,0,0,0,1,0,8.984,1,0,5184,2.195445,1,0,,-4.60517,0,1.4,1.96,.89840002 +0,.0696921,69,16,19,4,0,1,0,0,0,73.179,2,1,4761,4.292909,0,19,2.944439,2.944439,1,.8,.64,7.3179001 +0,.3869793,71,17,30,12,0,1,1,1,1,13.179,3,1,5041,2.578625,0,30,3.401197,3.401197,1,1.2,1.44,1.3179 +0,.2297752,68,17,1,0,0,1,1,0,0,54.401,1,1,4624,3.996382,0,1,0,0,1,.6,.36,5.4401001 +0,.2297752,69,17,19,7,0,1,0,1,1,54.401,2,1,4761,3.996382,0,19,2.944439,2.944439,1,.8,.64,5.4401001 +0,.7604252,77,14,7,0,0,1,1,1,0,9.784,1,1,5929,2.280748,0,7,1.94591,1.94591,1,2.4,5.76,.97840004 +0,1,72,4,7,1,0,0,1,0,0,9.356,1,0,5184,2.236018,1,7,1.94591,1.94591,1,1.4,1.96,.93559999 +0,.4762785,69,3,10,2,0,0,1,0,0,9.738,1,0,4761,2.276036,1,10,2.302585,2.302585,1,.8,.64,.97379999 +0,.8111228,73,3,5,0,0,0,0,0,1,5.718,3,0,5329,1.743619,1,5,1.609438,1.609438,1,1.6,2.56,.57179999 +0,0,77,8,7,1,1,0,1,1,0,0,3,0,5929,,0,7,1.94591,1.94591,1,2.4,5.76,0 +0,.8136857,82,8,10,0,0,0,1,1,1,11.808,1,0,6724,2.468777,0,10,2.302585,2.302585,1,3.4,11.56,1.1808 +0,0,70,0,6,1,1,0,1,0,0,5,0,0,4900,1.609438,1,6,1.791759,1.791759,1,1,1,.5 +0,0,73,0,0,0,1,0,0,0,0,5,0,0,5329,1.609438,1,0,,-4.60517,0,1.6,2.56,.5 +0,.2565407,85,10,17,2,0,0,1,1,1,14.945,3,0,7225,2.704377,0,17,2.833213,2.833213,1,4,16,1.4945 +0,.1551812,81,14,3,2,0,1,1,0,0,41.429,1,1,6561,3.723981,0,3,1.098612,1.098612,1,3.2,10.24,4.1429001 +0,0,85,10,0,0,0,0,1,0,0,0,0,0,7225,,0,0,,-4.60517,0,4,16,0 +0,0,70,4,0,0,0,0,1,0,0,0,0,0,4900,,1,0,,-4.60517,0,1,1,0 +1,.1898734,65,6,3,0,0,1,0,1,0,18.96,1,1,4225,2.942332,0,3,1.098612,1.098612,1,0,0,1.8959999 +0,.9638554,83,12,10,4,1,0,1,1,1,8.3,1,0,6889,2.116256,0,10,2.302585,2.302585,1,3.6,12.96,.83000002 +0,1,83,13,3,0,0,1,0,0,0,11.25,0,1,6889,2.420368,0,3,1.098612,1.098612,1,3.6,12.96,1.125 +0,1,80,11,2,4,0,1,1,0,0,11.25,2,1,6400,2.420368,0,2,.6931472,.6931472,1,3,9,1.125 +0,.7407407,71,16,18,8,0,0,0,1,0,20.25,3,0,5041,3.008155,0,18,2.890372,2.890372,1,1.2,1.44,2.025 +0,.852459,79,12,12,0,0,0,0,0,0,9.15,2,0,6241,2.213754,0,12,2.484907,2.484907,1,2.8,7.84,.91499996 +0,.852459,80,13,23,0,0,0,1,1,1,9.15,2,0,6400,2.213754,0,23,3.135494,3.135494,1,3,9,.91499996 +1,.2695652,66,10,2,1,0,1,0,1,1,28.75,3,1,4356,3.358638,1,2,.6931472,.6931472,1,.2,.04,2.875 +0,0,69,1,4,2,0,0,0,1,0,0,2,0,4761,,1,4,1.386294,1.386294,1,.8,.64,0 +0,0,74,17,5,3,0,1,1,1,0,75.513,1,1,5476,4.324305,0,5,1.609438,1.609438,1,1.8,3.24,7.5513 +1,.1256301,71,16,6,3,0,1,0,0,0,63.679,1,1,5041,4.153855,0,6,1.791759,1.791759,1,1.2,1.44,6.3679001 +0,.3690207,70,16,8,18,0,1,1,0,0,21.679,1,1,4900,3.076344,0,8,2.079442,2.079442,1,1,1,2.1679001 +0,.262687,73,17,3,0,0,1,0,0,0,30.957,2,1,5329,3.432599,0,3,1.098612,1.098612,1,1.6,2.56,3.0957001 +0,.869082,74,17,3,2,0,1,1,0,0,9.357,1,1,5476,2.236125,0,3,1.098612,1.098612,1,1.8,3.24,.93570004 +0,.4700778,68,12,5,4,0,1,1,0,0,27.655,2,1,4624,3.319807,0,5,1.609438,1.609438,1,.6,.36,2.7655001 +0,.8695652,74,17,7,1,0,1,1,0,0,5.75,0,1,5476,1.7492,0,7,1.94591,1.94591,1,1.8,3.24,.575 +0,.0572017,70,17,16,6,0,1,0,0,0,87.41,1,1,4900,4.47061,0,16,2.772589,2.772589,1,1,1,8.7410004 +0,.3590759,85,16,8,1,0,1,0,1,1,37.875,4,1,7225,3.634291,0,8,2.079442,2.079442,1,4,16,3.7875 +0,0,65,17,7,9,0,0,0,0,0,30.02,0,0,4225,3.401864,0,7,1.94591,1.94591,1,0,0,3.002 +0,.4426955,80,16,11,6,0,1,0,0,0,20.33,2,1,6400,3.012098,0,11,2.397895,2.397895,1,3,9,2.033 +0,.4391101,78,15,8,2,0,1,1,1,0,20.496,4,1,6084,3.02023,0,8,2.079442,2.079442,1,2.6,6.76,2.0496 +0,.628051,81,14,5,2,0,1,1,0,0,21.304,0,1,6561,3.058895,0,5,1.609438,1.609438,1,3.2,10.24,2.1304001 +0,.5,84,11,15,1,1,0,1,1,1,18.288,3,0,7056,2.906245,0,15,2.70805,2.70805,1,3.8,14.44,1.8288 +0,.8454039,65,16,3,0,0,1,0,0,0,17.743,0,1,4225,2.875991,0,3,1.098612,1.098612,1,0,0,1.7743 +0,.9871408,68,14,2,1,0,1,0,0,0,14.231,3,1,4624,2.655423,0,2,.6931472,.6931472,1,.6,.36,1.4231 +0,.3877551,78,12,5,1,0,0,0,0,1,29.4,1,0,6084,3.380995,0,5,1.609438,1.609438,1,2.6,6.76,2.94 +0,.4696506,79,15,7,0,0,1,1,1,0,42.159,4,1,6241,3.741448,0,7,1.94591,1.94591,1,2.8,7.84,4.2159 +0,0,80,11,3,1,1,0,1,0,0,9.185,1,0,6400,2.217572,1,3,1.098612,1.098612,1,3,9,.91850004 +0,.2462172,85,17,2,0,0,0,1,1,1,44.676,1,0,7225,3.799436,0,2,.6931472,.6931472,1,4,16,4.4675999 +0,.6745065,72,16,21,9,0,1,0,1,1,14.286,2,1,5184,2.65928,0,21,3.044523,3.044523,1,1.4,1.96,1.4286 +0,.6745065,72,12,15,17,0,1,1,0,0,14.286,2,1,5184,2.65928,0,15,2.70805,2.70805,1,1.4,1.96,1.4286 +0,.1584828,72,17,0,0,1,0,0,0,0,37.859,0,0,5184,3.633869,1,0,,-4.60517,0,1.4,1.96,3.7859001 +0,.3877551,84,12,2,0,0,1,0,0,0,24.5,0,1,7056,3.198673,0,2,.6931472,.6931472,1,3.8,14.44,2.45 +0,1,70,13,2,0,0,1,1,1,1,9.5,1,1,4900,2.251292,0,2,.6931472,.6931472,1,1,1,.95 +0,1,74,0,3,0,1,0,1,0,0,9,1,0,5476,2.197225,0,3,1.098612,1.098612,1,1.8,3.24,.9 +0,1,71,5,0,0,1,0,0,0,0,3.7,0,0,5041,1.308333,1,0,,-4.60517,0,1.2,1.44,.37 +0,1,67,5,0,0,1,0,1,0,0,3.7,2,0,4489,1.308333,1,0,,-4.60517,0,.4,.16,.37 +0,.3130912,79,16,15,12,0,1,0,0,0,23.894,3,1,6241,3.173627,0,15,2.70805,2.70805,1,2.8,7.84,2.3893999 +0,.3130912,79,13,6,4,0,1,1,1,0,23.894,1,1,6241,3.173627,0,6,1.791759,1.791759,1,2.8,7.84,2.3893999 +0,.6225026,77,12,20,14,0,1,0,0,0,19.971,2,1,5929,2.994281,0,20,2.995732,2.995732,1,2.4,5.76,1.9971001 +0,0,73,12,9,1,0,1,1,0,0,7.539,3,1,5329,2.02009,0,9,2.197225,2.197225,1,1.6,2.56,.7539 +0,.4774972,69,9,3,1,0,1,1,0,0,18.22,1,1,4761,2.90252,0,3,1.098612,1.098612,1,.8,.64,1.8219999 +0,0,66,16,20,0,1,0,1,0,0,11.176,4,0,4356,2.413769,0,20,2.995732,2.995732,1,.2,.04,1.1176 +0,0,68,16,8,0,1,0,0,0,0,11.176,1,0,4624,2.413769,0,8,2.079442,2.079442,1,.6,.36,1.1176 +0,.3383141,73,14,8,8,0,1,0,0,0,24.829,3,1,5329,3.212012,0,8,2.079442,2.079442,1,1.6,2.56,2.4829 +0,.3383141,72,12,6,2,0,1,1,0,0,24.829,1,1,5184,3.212012,0,6,1.791759,1.791759,1,1.4,1.96,2.4829 +0,1,72,8,4,3,1,0,1,1,1,7,3,0,5184,1.94591,1,4,1.386294,1.386294,1,1.4,1.96,.7 +0,.5,78,12,42,0,1,0,1,1,1,15,5,0,6084,2.70805,1,42,3.73767,3.73767,1,2.6,6.76,1.5 +0,.6608444,76,12,7,12,0,1,0,0,0,15.916,3,1,5776,2.767325,0,7,1.94591,1.94591,1,2.2,4.84,1.5916 +0,.6608444,82,12,7,10,0,1,1,0,0,15.916,4,1,6724,2.767325,0,7,1.94591,1.94591,1,3.4,11.56,1.5916 +0,.0955099,65,12,0,0,0,0,0,0,0,24.877,0,0,4225,3.213944,0,0,,-4.60517,0,0,0,2.4877001 +0,1,78,12,0,0,0,1,1,0,0,9,0,1,6084,2.197225,0,0,,-4.60517,0,2.6,6.76,.9 +0,.7042254,80,12,1,0,0,1,0,0,0,17.75,1,1,6400,2.876385,0,1,0,0,1,3,9,1.775 +0,.7042254,78,12,2,0,0,1,1,0,0,17.75,1,1,6084,2.876385,0,2,.6931472,.6931472,1,2.6,6.76,1.775 +0,.3052951,77,14,18,4,0,0,1,1,0,40.944,2,0,5929,3.712205,0,18,2.890372,2.890372,1,2.4,5.76,4.0944 +0,.2477995,73,17,3,1,0,0,0,0,0,50.444,1,0,5329,3.920864,0,3,1.098612,1.098612,1,1.6,2.56,5.0444 +0,.2636436,75,12,4,0,0,0,1,0,0,42.694,1,0,5625,3.754058,0,4,1.386294,1.386294,1,2,4,4.2694 +0,.7653586,85,12,9,1,0,1,1,0,0,17.482,0,1,7225,2.861172,0,9,2.197225,2.197225,1,4,16,1.7482 +0,.6640998,71,15,4,2,0,0,0,1,1,32.855,2,0,5041,3.492104,0,4,1.386294,1.386294,1,1.2,1.44,3.2855 +0,1,78,10,14,3,1,0,1,1,1,7.2,2,0,6084,1.974081,0,14,2.639057,2.639057,1,2.6,6.76,.71999998 +0,1,85,12,7,0,0,0,0,1,1,6.8,4,0,7225,1.916923,0,7,1.94591,1.94591,1,4,16,.68000002 +0,.9415584,68,15,30,3,0,1,0,1,1,15.4,3,1,4624,2.734367,0,30,3.401197,3.401197,1,.6,.36,1.54 +0,.3096375,78,14,24,1,0,0,1,1,0,31.004,3,0,6084,3.434116,0,24,3.178054,3.178054,1,2.6,6.76,3.1004 +0,.9881423,75,16,0,0,0,0,0,0,0,11.132,2,0,5625,2.409824,0,0,,-4.60517,0,2,4,1.1132 +0,.8440279,67,12,12,5,0,1,0,1,1,16.644,2,1,4489,2.81205,0,12,2.484907,2.484907,1,.4,.16,1.6643999 +0,.3560527,80,12,3,3,0,0,1,1,0,23.915,2,0,6400,3.174506,0,3,1.098612,1.098612,1,3,9,2.3915001 +0,.9977432,82,8,1,0,0,1,1,0,1,8.419,1,1,6724,2.130491,0,1,0,0,1,3.4,11.56,.84189997 +0,0,85,12,25,17,0,0,1,1,1,0,4,0,7225,,0,25,3.218876,3.218876,1,4,16,0 +0,.2912621,72,14,8,5,0,0,0,0,0,15.45,4,0,5184,2.737609,0,8,2.079442,2.079442,1,1.4,1.96,1.545 +0,.2912621,67,12,0,1,0,0,1,0,0,15.45,2,0,4489,2.737609,0,0,,-4.60517,0,.4,.16,1.545 +0,0,73,0,0,0,1,0,1,0,0,8.489,0,0,5329,2.138771,1,0,,-4.60517,0,1.6,2.56,.84890003 +0,.3634447,81,9,6,3,0,1,0,1,1,24.664,2,1,6561,3.205345,0,6,1.791759,1.791759,1,3.2,10.24,2.4664 +0,0,79,11,6,0,0,0,1,0,0,33.501,2,0,6241,3.511575,0,6,1.791759,1.791759,1,2.8,7.84,3.3500999 +0,0,66,12,14,0,0,0,0,1,1,1.26,3,0,4356,.2311117,0,14,2.639057,2.639057,1,.2,.04,.126 +0,0,71,12,6,7,1,0,1,1,1,21.605,8,0,5041,3.072925,0,6,1.791759,1.791759,1,1.2,1.44,2.1605 +0,1,80,12,6,0,0,0,1,0,0,4.698,1,0,6400,1.547137,0,6,1.791759,1.791759,1,3,9,.4698 +0,1,78,10,4,0,0,0,0,0,0,4.698,0,0,6084,1.547137,0,4,1.386294,1.386294,1,2.6,6.76,.4698 +0,1,82,15,3,0,0,1,1,1,0,9.36,2,1,6724,2.236445,0,3,1.098612,1.098612,1,3.4,11.56,.93599997 +0,.6159589,84,14,4,0,0,1,0,0,0,21.43,1,1,7056,3.064792,0,4,1.386294,1.386294,1,3.8,14.44,2.143 +0,.5764033,79,9,1,1,0,0,0,0,0,25.156,0,0,6241,3.225096,0,1,0,0,1,2.8,7.84,2.5156 +0,.7297297,65,11,1,3,0,1,1,0,0,12.58,1,1,4225,2.532108,0,1,0,0,1,0,0,1.258 +0,.5,74,12,3,12,0,1,1,0,0,24,0,1,5476,3.178054,0,3,1.098612,1.098612,1,1.8,3.24,2.4 +0,.2727273,85,16,0,1,0,0,1,0,0,22,1,0,7225,3.091043,1,0,,-4.60517,0,4,16,2.2 +1,0,66,10,5,1,0,1,1,0,0,40.61,2,1,4356,3.704014,0,5,1.609438,1.609438,1,.2,.04,4.0610001 +0,.9694878,70,16,18,2,0,1,0,0,1,19.992,3,1,4900,2.995332,0,18,2.890372,2.890372,1,1,1,1.9992001 +0,1,68,12,0,0,0,0,0,0,0,3.5,1,0,4624,1.252763,0,0,,-4.60517,0,.6,.36,.35 +0,.35,75,12,5,0,0,0,1,0,0,17.52,4,0,5625,2.863343,1,5,1.609438,1.609438,1,2,4,1.752 +0,.4347826,75,13,2,1,0,1,1,0,0,13.8,2,1,5625,2.624669,0,2,.6931472,.6931472,1,2,4,1.38 +0,.8436584,82,15,2,0,0,0,1,0,0,9.895,3,0,6724,2.29203,1,2,.6931472,.6931472,1,3.4,11.56,.98950005 +0,0,69,12,0,0,0,0,1,0,0,19.76,0,0,4761,2.98366,0,0,,-4.60517,0,.8,.64,1.976 +0,0,74,11,3,9,0,0,0,1,1,0,1,0,5476,,0,3,1.098612,1.098612,1,1.8,3.24,0 +1,.1093656,68,12,3,6,0,1,0,0,0,163.662,3,1,4624,5.097803,0,3,1.098612,1.098612,1,.6,.36,16.3662 +0,.9881423,79,13,4,0,0,1,1,0,0,15.18,1,1,6241,2.719979,0,4,1.386294,1.386294,1,2.8,7.84,1.518 +0,0,81,16,8,1,0,1,1,0,0,0,0,1,6561,,0,8,2.079442,2.079442,1,3.2,10.24,0 +0,1,71,11,2,1,1,0,1,0,0,9.024,3,0,5041,2.199888,0,2,.6931472,.6931472,1,1.2,1.44,.90240002 +0,.2666667,85,6,1,0,0,0,0,0,0,22.5,1,0,7225,3.113515,0,1,0,0,1,4,16,2.25 +0,.8,78,3,2,0,1,0,1,0,0,7.5,2,0,6084,2.014903,0,2,.6931472,.6931472,1,2.6,6.76,.75 +0,.3687044,79,12,2,2,0,1,1,0,0,27.122,2,1,6241,3.300345,0,2,.6931472,.6931472,1,2.8,7.84,2.7122 +1,.3752932,67,2,1,0,0,0,0,1,0,24.301,2,0,4489,3.190517,1,1,0,0,1,.4,.16,2.4301001 +1,.2220443,66,15,6,0,0,1,1,0,0,88.694,3,1,4356,4.485192,0,6,1.791759,1.791759,1,.2,.04,8.8694 +0,0,75,15,5,1,0,1,1,1,0,26.2,3,1,5625,3.265759,0,5,1.609438,1.609438,1,2,4,2.6200001 +0,0,81,12,7,1,0,1,0,0,0,1.2,2,1,6561,.1823216,0,7,1.94591,1.94591,1,3.2,10.24,.12 +0,.3594128,77,11,11,0,0,0,0,0,0,26.432,0,0,5929,3.274575,0,11,2.397895,2.397895,1,2.4,5.76,2.6431999 +1,.2402913,78,16,7,5,0,1,0,1,0,54.101,2,1,6084,3.990853,0,7,1.94591,1.94591,1,2.6,6.76,5.4101002 +0,.5,77,3,0,0,0,0,1,0,0,24,0,0,5929,3.178054,1,0,,-4.60517,0,2.4,5.76,2.4 +0,.4120602,66,14,6,0,0,1,0,0,0,52.951,1,1,4356,3.969367,0,6,1.791759,1.791759,1,.2,.04,5.2951 +0,1,68,12,10,2,0,0,1,1,1,12,2,0,4624,2.484907,0,10,2.302585,2.302585,1,.6,.36,1.2 +0,.9509371,65,11,1,0,0,1,0,0,0,20.382,0,1,4225,3.014652,0,1,0,0,1,0,0,2.0382 +0,.2034284,67,11,1,11,0,1,0,0,0,47.427,2,1,4489,3.859192,0,1,0,0,1,.4,.16,4.7426998 +0,.4937256,70,12,0,0,0,1,0,1,0,24.305,1,1,4900,3.190682,0,0,,-4.60517,0,1,1,2.4305 +0,.4872898,70,17,0,0,0,1,1,0,0,24.626,1,1,4900,3.203803,0,0,,-4.60517,0,1,1,2.4625999 +0,0,65,12,2,0,0,1,0,0,0,18.629,1,1,4225,2.92472,0,2,.6931472,.6931472,1,0,0,1.8629 +0,.3759274,70,0,23,5,0,0,1,1,1,7.278,4,0,4900,1.984856,1,23,3.135494,3.135494,1,1,1,.72779999 +0,.927835,77,10,0,1,1,0,1,0,0,9.7,0,0,5929,2.272126,0,0,,-4.60517,0,2.4,5.76,.96999998 +0,0,85,12,5,6,0,1,1,1,1,30.663,3,1,7225,3.423057,0,5,1.609438,1.609438,1,4,16,3.0663 +0,.3575482,70,9,6,0,1,0,1,1,1,17.62,1,0,4900,2.869035,1,6,1.791759,1.791759,1,1,1,1.7620001 +0,.45909,68,17,1,18,0,1,1,0,0,19.604,0,1,4624,2.975734,0,1,0,0,1,.6,.36,1.9604 +0,.5958686,73,12,4,0,0,1,0,0,0,15.104,0,1,5329,2.71496,0,4,1.386294,1.386294,1,1.6,2.56,1.5104 +0,.8421053,79,4,8,0,0,1,1,0,0,9.5,2,1,6241,2.251292,0,8,2.079442,2.079442,1,2.8,7.84,.95 +0,.2791438,69,12,4,1,0,1,0,1,0,78.164,1,1,4761,4.358809,0,4,1.386294,1.386294,1,.8,.64,7.8164001 +0,1,77,6,15,0,1,0,1,1,1,11.11,3,0,5929,2.407845,0,15,2.70805,2.70805,1,2.4,5.76,1.111 +0,1.07882,74,16,2,5,0,1,1,1,0,13.626,3,1,5476,2.61198,0,2,.6931472,.6931472,1,1.8,3.24,1.3626 +0,.5901639,83,8,11,0,0,1,1,1,1,12.2,0,1,6889,2.501436,0,11,2.397895,2.397895,1,3.6,12.96,1.22 +0,0,73,12,0,0,0,0,1,0,0,10,0,0,5329,2.302585,0,0,,-4.60517,0,1.6,2.56,1 +0,.939281,72,12,5,0,1,0,1,1,0,8.317,2,0,5184,2.118302,0,5,1.609438,1.609438,1,1.4,1.96,.83170004 +0,.5203898,67,12,1,3,0,1,0,1,0,26.68,2,1,4489,3.283914,1,1,0,0,1,.4,.16,2.668 +0,0,68,10,1,0,0,1,1,0,0,12.796,2,1,4624,2.549133,1,1,0,0,1,.6,.36,1.2796 +0,.9086162,75,13,44,0,0,0,0,1,1,9.575,4,0,5625,2.259156,1,44,3.78419,3.78419,1,2,4,.95749998 +0,.9086162,74,12,8,0,0,0,1,1,1,9.575,5,0,5476,2.259156,1,8,2.079442,2.079442,1,1.8,3.24,.95749998 +0,0,75,9,2,0,0,0,1,1,1,7.831,5,0,5625,2.05809,1,2,.6931472,.6931472,1,2,4,.78309999 +0,.583532,65,16,14,4,0,1,0,1,0,20.136,4,1,4225,3.002509,0,14,2.639057,2.639057,1,0,0,2.0136 +0,.583532,65,13,17,0,0,1,1,1,0,20.136,3,1,4225,3.002509,0,17,2.833213,2.833213,1,0,0,2.0136 +0,.7856707,66,15,22,35,0,0,1,1,0,18.033,2,0,4356,2.892204,0,22,3.091043,3.091043,1,.2,.04,1.8033001 +0,.2264816,71,12,1,3,0,0,1,0,0,23.843,0,0,5041,3.171491,0,1,0,0,1,1.2,1.44,2.3843 +0,.1212434,72,17,6,0,0,1,0,0,0,65.983,2,1,5184,4.189397,0,6,1.791759,1.791759,1,1.4,1.96,6.5983002 +0,.7950204,85,13,1,7,0,1,1,1,0,18.636,3,1,7225,2.925095,0,1,0,0,1,4,16,1.8636 +0,.8661339,67,10,6,0,1,0,0,1,1,8.008,3,0,4489,2.080441,0,6,1.791759,1.791759,1,.4,.16,.80080004 +0,1,85,12,7,4,0,1,1,1,1,13,3,1,7225,2.564949,0,7,1.94591,1.94591,1,4,16,1.3 +0,.7653061,74,16,8,0,0,1,1,0,0,19.6,1,1,5476,2.97553,0,8,2.079442,2.079442,1,1.8,3.24,1.96 +0,.2729258,69,14,2,1,0,1,0,0,0,54.96,0,1,4761,4.006606,0,2,.6931472,.6931472,1,.8,.64,5.4959999 +0,1,78,6,8,0,1,0,1,1,1,8.4,4,0,6084,2.128232,1,8,2.079442,2.079442,1,2.6,6.76,.83999996 +0,.952381,78,8,1,0,0,1,0,0,0,5.25,2,1,6084,1.658228,0,1,0,0,1,2.6,6.76,.525 +0,.952381,75,8,1,0,0,1,1,0,0,5.25,3,1,5625,1.658228,0,1,0,0,1,2,4,.525 +0,1,74,8,16,1,0,1,1,1,1,6.24,2,1,5476,1.83098,0,16,2.772589,2.772589,1,1.8,3.24,.62399998 +0,.2564505,83,17,12,0,1,0,1,1,1,21.665,4,0,6889,3.075698,0,12,2.484907,2.484907,1,3.6,12.96,2.1665001 +0,.0751904,76,12,10,22,0,1,1,1,0,31.121,3,1,5776,3.437883,0,10,2.302585,2.302585,1,2.2,4.84,3.1121 +0,0,77,1,3,0,0,0,1,1,0,5.294,1,0,5929,1.666574,1,3,1.098612,1.098612,1,2.4,5.76,.52940001 +0,1,73,12,2,0,0,0,0,0,0,9.5,1,0,5329,2.251292,0,2,.6931472,.6931472,1,1.6,2.56,.95 +0,1,69,12,4,2,0,0,1,0,0,9.5,1,0,4761,2.251292,0,4,1.386294,1.386294,1,.8,.64,.95 +0,.2487657,74,16,1,2,0,1,1,1,0,26.129,1,1,5476,3.263046,0,1,0,0,1,1.8,3.24,2.6129 +0,.2239761,69,16,9,0,0,1,1,0,0,18.752,1,1,4761,2.9313,0,9,2.197225,2.197225,1,.8,.64,1.8752001 +0,1,81,12,5,10,0,0,1,1,0,6,3,0,6561,1.791759,0,5,1.609438,1.609438,1,3.2,10.24,.6 +0,1,66,12,4,35,0,1,1,1,1,8.49,2,1,4356,2.138889,0,4,1.386294,1.386294,1,.2,.04,.84899998 +0,1,73,12,1,0,0,0,0,1,1,8.49,1,0,5329,2.138889,0,1,0,0,1,1.6,2.56,.84899998 +0,.872093,72,13,6,9,0,1,1,0,0,17.2,2,1,5184,2.844909,0,6,1.791759,1.791759,1,1.4,1.96,1.7200001 +0,0,69,13,2,0,0,0,1,0,0,0,2,0,4761,,1,2,.6931472,.6931472,1,.8,.64,0 +1,.0588235,70,15,6,3,0,1,0,0,0,85,3,1,4900,4.442651,0,6,1.791759,1.791759,1,1,1,8.5 +0,.2766473,85,8,3,0,0,0,0,1,0,35.482,3,0,7225,3.569026,0,3,1.098612,1.098612,1,4,16,3.5481998 +0,1,70,6,9,2,1,0,0,0,0,5.334,3,0,4900,1.674101,1,9,2.197225,2.197225,1,1,1,.53340001 +0,.3105899,70,0,36,1,0,1,1,1,0,22.512,3,1,4900,3.114048,1,36,3.583519,3.583519,1,1,1,2.2511999 +0,.3353715,75,13,8,4,0,0,0,0,0,30.092,0,0,5625,3.404259,0,8,2.079442,2.079442,1,2,4,3.0091999 +0,0,73,16,4,0,0,1,0,0,0,13.6,0,1,5329,2.61007,0,4,1.386294,1.386294,1,1.6,2.56,1.36 +0,0,69,12,7,0,0,1,1,0,0,9.6,2,1,4761,2.261763,0,7,1.94591,1.94591,1,.8,.64,.96000004 +0,.2235217,69,17,6,5,0,0,0,1,0,88.582,1,0,4761,4.483929,0,6,1.791759,1.791759,1,.8,.64,8.8582001 +0,.7602082,84,12,4,7,0,0,1,0,0,14.596,2,0,7056,2.680748,0,4,1.386294,1.386294,1,3.8,14.44,1.4596 +0,1,72,10,20,3,0,0,1,1,0,14.4,2,0,5184,2.667228,0,20,2.995732,2.995732,1,1.4,1.96,1.44 +0,.6666667,83,12,6,1,0,1,0,0,0,15,1,1,6889,2.70805,0,6,1.791759,1.791759,1,3.6,12.96,1.5 +0,.2022443,72,16,2,2,0,0,0,1,0,53.648,1,0,5184,3.982444,0,2,.6931472,.6931472,1,1.4,1.96,5.3647999 +0,1,68,9,13,0,1,0,1,1,1,5,3,0,4624,1.609438,1,13,2.564949,2.564949,1,.6,.36,.5 +1,.1299376,69,16,4,0,0,1,1,1,1,38.48,2,1,4761,3.650139,1,4,1.386294,1.386294,1,.8,.64,3.848 +0,1,85,7,3,0,0,0,1,1,0,7,1,0,7225,1.94591,0,3,1.098612,1.098612,1,4,16,.7 +0,1,70,12,3,0,0,1,1,1,0,10,3,1,4900,2.302585,0,3,1.098612,1.098612,1,1,1,1 +0,.4817636,85,7,15,0,0,0,0,1,1,17.328,3,0,7225,2.852324,1,15,2.70805,2.70805,1,4,16,1.7327999 +0,.9647189,80,12,16,1,0,1,0,1,1,7.256,3,1,6400,1.981829,0,16,2.772589,2.772589,1,3,9,.7256 +0,.9647189,83,10,12,24,0,1,1,1,1,7.256,5,1,6889,1.981829,0,12,2.484907,2.484907,1,3.6,12.96,.7256 +0,.1044776,81,16,14,4,0,1,0,1,0,33.5,1,1,6561,3.511545,0,14,2.639057,2.639057,1,3.2,10.24,3.35 +0,.1044776,76,13,6,6,0,0,1,0,0,33.5,0,0,5776,3.511545,0,6,1.791759,1.791759,1,2.2,4.84,3.35 +0,.9545454,81,12,6,0,0,1,0,1,1,8.8,2,1,6561,2.174752,0,6,1.791759,1.791759,1,3.2,10.24,.88000002 +0,1,83,12,4,0,0,0,1,1,1,7.2,5,0,6889,1.974081,0,4,1.386294,1.386294,1,3.6,12.96,.71999998 +0,0,67,3,1,1,1,0,0,1,1,7.2,5,0,4489,1.974081,0,1,0,0,1,.4,.16,.71999998 +0,.6622925,76,13,6,0,0,0,1,0,0,10.364,2,0,5776,2.338338,0,6,1.791759,1.791759,1,2.2,4.84,1.0364 +0,0,73,8,1,1,0,1,0,0,0,16,0,1,5329,2.772589,1,1,0,0,1,1.6,2.56,1.6 +0,.8128599,69,8,0,0,1,0,0,0,0,5.21,0,0,4761,1.65058,0,0,,-4.60517,0,.8,.64,.521 +0,.8779631,66,14,5,5,0,1,1,0,0,17.085,1,1,4356,2.838201,0,5,1.609438,1.609438,1,.2,.04,1.7084999 +0,.3971119,72,12,2,0,1,0,0,1,1,6.648,4,0,5184,1.894316,1,2,.6931472,.6931472,1,1.4,1.96,.66479998 +0,.2895529,67,6,12,49,1,0,0,1,1,12.951,1,0,4489,2.561173,1,12,2.484907,2.484907,1,.4,.16,1.2951 +0,.1833651,66,3,9,1,1,0,1,0,1,20.451,1,0,4356,3.018032,1,9,2.197225,2.197225,1,.2,.04,2.0451 +1,.0887311,66,17,1,0,0,1,0,0,0,84.525,3,1,4356,4.437047,1,1,0,0,1,.2,.04,8.4525002 +0,.6091371,76,6,2,0,0,0,1,1,0,11.82,1,0,5776,2.469793,0,2,.6931472,.6931472,1,2.2,4.84,1.182 +0,1,83,11,26,0,0,1,1,1,1,11.592,3,1,6889,2.450315,0,26,3.258096,3.258096,1,3.6,12.96,1.1592 +0,.736508,69,10,10,0,0,0,1,0,0,18.9,0,0,4761,2.939162,0,10,2.302585,2.302585,1,.8,.64,1.89 +0,.2228164,65,14,4,0,0,1,0,1,1,62.832,2,1,4225,4.140464,0,4,1.386294,1.386294,1,0,0,6.2832001 +0,.9863014,65,12,2,1,0,1,1,0,0,7.3,0,1,4225,1.987874,0,2,.6931472,.6931472,1,0,0,.73000002 +0,.1728608,75,12,11,11,0,0,1,0,0,40.495,2,0,5625,3.701179,0,11,2.397895,2.397895,1,2,4,4.0494999 +0,.1715014,76,16,14,3,0,1,0,0,0,40.816,2,1,5776,3.709074,0,14,2.639057,2.639057,1,2.2,4.84,4.0816002 +0,.5327869,71,12,5,1,0,0,1,0,0,12.2,2,0,5041,2.501436,0,5,1.609438,1.609438,1,1.2,1.44,1.22 +0,.1316749,79,14,9,0,0,1,0,1,1,49.364,2,1,6241,3.899221,0,9,2.197225,2.197225,1,2.8,7.84,4.9363998 +0,.7033898,85,8,4,1,0,1,1,1,1,3.54,2,1,7225,1.264127,0,4,1.386294,1.386294,1,4,16,.354 +0,.3362475,70,17,9,1,0,1,0,0,0,2.974,1,1,4900,1.089908,0,9,2.197225,2.197225,1,1,1,.2974 +0,.3362475,71,15,3,1,0,1,1,0,0,2.974,0,1,5041,1.089908,0,3,1.098612,1.098612,1,1.2,1.44,.2974 +0,.6138589,71,14,2,2,0,1,0,0,0,35.544,2,1,5041,3.570771,0,2,.6931472,.6931472,1,1.2,1.44,3.5543999 +0,0,85,12,9,0,0,1,0,0,0,0,1,1,7225,,0,9,2.197225,2.197225,1,4,16,0 +0,0,81,12,6,0,0,1,1,0,0,0,2,1,6561,,0,6,1.791759,1.791759,1,3.2,10.24,0 +0,.2421525,65,13,5,1,1,0,1,1,1,17.84,3,0,4225,2.881443,1,5,1.609438,1.609438,1,0,0,1.784 +0,.4154981,76,14,14,1,0,0,1,0,0,28.881,1,0,5776,3.363184,0,14,2.639057,2.639057,1,2.2,4.84,2.8881001 +0,.387822,67,14,2,3,0,1,0,0,0,35.671,1,1,4489,3.574338,0,2,.6931472,.6931472,1,.4,.16,3.5671001 +0,0,66,12,9,4,0,1,1,0,0,21.837,2,1,4356,3.083606,0,9,2.197225,2.197225,1,.2,.04,2.1837 +0,.2727273,67,12,4,2,0,0,1,0,0,22,1,0,4489,3.091043,1,4,1.386294,1.386294,1,.4,.16,2.2 +0,0,65,14,0,0,0,0,0,1,0,49.72,1,0,4225,3.906407,1,0,,-4.60517,0,0,0,4.9720001 +0,.5164319,75,12,10,0,0,1,1,1,1,21.3,2,1,5625,3.058707,0,10,2.302585,2.302585,1,2,4,2.1299999 +0,.8695652,84,12,2,2,0,0,1,0,0,11.5,1,0,7056,2.442347,0,2,.6931472,.6931472,1,3.8,14.44,1.15 +0,1,71,5,11,2,0,1,1,1,1,8.7,3,1,5041,2.163323,0,11,2.397895,2.397895,1,1.2,1.44,.86999998 +0,1,83,8,3,0,0,0,1,1,0,9.024,1,0,6889,2.199888,0,3,1.098612,1.098612,1,3.6,12.96,.90240002 +1,0,65,12,3,0,0,0,1,0,0,8.06,2,0,4225,2.086914,0,3,1.098612,1.098612,1,0,0,.80600004 +0,.3057424,67,12,13,10,0,1,0,0,0,17.989,3,1,4489,2.88976,0,13,2.564949,2.564949,1,.4,.16,1.7989 +0,.3643644,85,5,5,0,1,0,1,1,1,23.976,4,0,7225,3.177053,1,5,1.609438,1.609438,1,4,16,2.3976 +0,.7215634,70,16,5,1,0,1,1,1,0,17.961,1,1,4900,2.888203,0,5,1.609438,1.609438,1,1,1,1.7961 +0,1,83,6,2,0,0,0,0,0,1,4.95,2,0,6889,1.599388,1,2,.6931472,.6931472,1,3.6,12.96,.49499998 +0,1,85,12,15,7,1,0,1,1,1,8.16,3,0,7225,2.099244,0,15,2.70805,2.70805,1,4,16,.81599998 +0,.9745293,72,9,8,2,0,1,1,1,1,13.545,6,1,5184,2.606018,0,8,2.079442,2.079442,1,1.4,1.96,1.3545 +0,.8374771,80,13,6,3,0,1,1,0,0,11.463,2,1,6400,2.439125,0,6,1.791759,1.791759,1,3,9,1.1463 +0,1,67,3,14,2,0,0,1,1,1,8.5,2,0,4489,2.140066,1,14,2.639057,2.639057,1,.4,.16,.85 +0,1,65,4,10,0,0,0,0,1,1,8.5,1,0,4225,2.140066,1,10,2.302585,2.302585,1,0,0,.85 diff --git a/statsmodels/sandbox/regression/tests/results_gmm_griliches.py b/statsmodels/sandbox/regression/tests/results_gmm_griliches.py new file mode 100644 index 0000000..0273c78 --- /dev/null +++ b/statsmodels/sandbox/regression/tests/results_gmm_griliches.py @@ -0,0 +1,274 @@ +'''Results for GMM estimation with Stata gmm + +autogenerated, but edited +''' + +import numpy as np + +from statsmodels.tools.testing import ParamsTableTestBunch + +# gmm twostep + +est = dict( + rank=13, + N=758, + Q=.0153053843867424, + J=11.60148136515076, + J_df=2, + k_1=13, + converged=1, + has_xtinst=0, + type=1, + n_eq=1, + k=13, + n_moments=15, + k_aux=13, + k_eq_model=0, + k_eq=13, + cmdline="gmm (lw - {xb:s iq expr tenure rns smsa dyear*} - {b0}), instruments(expr tenure rns smsa dyear* med kww age mrt)", # noqa:E501 + cmd="gmm", + estat_cmd="gmm_estat", + predict="gmm_p", + marginsnotok="_ALL", + eqnames="1", + technique="gn", + winit="Unadjusted", + estimator="twostep", + wmatrix="robust", + vce="robust", + vcetype="Robust", + params="xb_s xb_iq xb_expr xb_tenure xb_rns xb_smsa xb_dyear_67 xb_dyear_68 xb_dyear_69 xb_dyear_70 xb_dyear_71 xb_dyear_73 b0", # noqa:E501 + inst_1="expr tenure rns smsa dyear_67 dyear_68 dyear_69 dyear_70 dyear_71 dyear_73 med kww age mrt _cons", # noqa:E501 + params_1="xb_s xb_iq xb_expr xb_tenure xb_rns xb_smsa xb_dyear_67 xb_dyear_68 xb_dyear_69 xb_dyear_70 xb_dyear_71 xb_dyear_73 b0", # noqa:E501 + sexp_1="lw - ({xb_s} *s + {xb_iq} *iq + {xb_expr} *expr + {xb_tenure} *tenure + {xb_rns} *rns + {xb_smsa} *smsa + {xb_dyear_67} *dyear_67 + {xb_dyear_68} *dyear_68 + {xb_dyear_69} *dyear_69 + {xb_dyear_70} *dyear_70 + {xb_dyear_71} *dyear_71 + {xb_dyear_73} *dyear_73) - {b0}", # noqa:E501 + properties="b V", +) + +params_table = np.array([ + .17579576802018, .02085135579518, 8.4309034744314, 3.430065999e-17, + .1349278616328, .21666367440756, np.nan, 1.9599639845401, + 0, -.00928615655842, .00491818692744, -1.8881259893969, + .05900903858228, -.01892562580544, .00035331268861, np.nan, + 1.9599639845401, 0, .05028275907275, .00810402250669, + 6.2046667603925, 5.481292387e-10, .03439916682973, .06616635131577, + np.nan, 1.9599639845401, 0, .04252138311466, + .00956014552889, 4.4477757149388, 8.676405373e-06, .02378384219108, + .06125892403824, np.nan, 1.9599639845401, 0, + -.10409306762507, .03372997947655, -3.0860696994324, .00202821272955, + -.17020261259839, -.03798352265175, np.nan, 1.9599639845401, + 0, .12475123236049, .03098732229429, 4.0258797186699, + .00005676270037, .06401719668634, .18548526803464, np.nan, + 1.9599639845401, 0, -.0530431735239, .05178756424595, + -1.0242453819993, .30571938841786, -.15454493429301, .04845858724521, + np.nan, 1.9599639845401, 0, .045954590377, + .0500069437958, .91896418554698, .35811430537838, -.05205721843969, + .14396639919369, np.nan, 1.9599639845401, 0, + .15548006235586, .04801256009054, 3.238320599082, .00120235613037, + .06137717377284, .24958295093889, np.nan, 1.9599639845401, + 0, .16698745541498, .06133412154231, 2.7225865670836, + .00647730609718, .04677478616864, .28720012466132, np.nan, + 1.9599639845401, 0, .08464846645187, .05581696231774, + 1.516536603515, .12938372202927, -.02475076941733, .19404770232108, + np.nan, 1.9599639845401, 0, .0996068440051, + .06123938652803, 1.6265160324477, .10383992558646, -.02042014802516, + .21963383603536, np.nan, 1.9599639845401, 0, + 4.0039243732137, .33647541282379, 11.899604608883, 1.189091957e-32, + 3.3444446823958, 4.6634040640315, np.nan, 1.9599639845401, + 0]).reshape(13, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['_cons'] * 13 + +cov = np.array([ + .0004347790385, -.00007935266682, .00002810133321, .00001482865838, + -.00017806902959, -6.657494262e-06, -.00011587283596, -.00018806600631, + -.00012201035826, -.00008278800394, -.00031494508432, -.00063549805233, + .00264135978484, -.00007935266682, .00002418856265, 4.931157962e-06, + -.00001114070074, .00006618982562, -.0000220304377, 4.705098991e-07, + .00003206383766, -.00002261417242, -.00006024150154, -.00001412826237, + .00001471698858, -.00144299517314, .00002810133321, 4.931157962e-06, + .00006567518079, -.00002036677634, .00005210753053, -.00003295500811, + .00003592276303, .00008754309097, .00003052996731, .00001691178156, + -.00008575591893, -.00013143657018, -.00094318538399, .00001482865838, + -.00001114070074, -.00002036677634, .00009139638253, -.00003771101246, + 7.851603106e-06, .00008478298315, .00006722294295, .00011231163007, + .0001007216652, .00011202284802, .00009437878507, .00075643538833, + -.00017806902959, .00006618982562, .00005210753053, -.00003771101246, + .00113771151549, .0001300530702, .00018006693931, .00018772842105, + -9.500874246e-06, .00001633701903, -.00005338908155, .00008260866257, + -.00499436928105, -6.657494262e-06, -.0000220304377, -.00003295500811, + 7.851603106e-06, .0001300530702, .00096021414297, .00005702363753, + .00011167528598, .00025281311283, .00010653704891, .00030212216421, + .000307795004, .00157107924026, -.00011587283596, 4.705098991e-07, + .00003592276303, .00008478298315, .00018006693931, .00005702363753, + .00268195181053, .00085892679447, .00091106709634, .00096277498668, + .00090313286214, .00102719488714, .00034624154943, -.00018806600631, + .00003206383766, .00008754309097, .00006722294295, .00018772842105, + .00011167528598, .00085892679447, .0025006944278, .00092531815147, + .00088200162521, .00082339570405, .00095012566921, -.0020631120951, + -.00012201035826, -.00002261417242, .00003052996731, .00011231163007, + -9.500874246e-06, .00025281311283, .00091106709634, .00092531815147, + .00230520592645, .00118209509709, .00111002620771, .00129242901685, + .00256100032752, -.00008278800394, -.00006024150154, .00001691178156, + .0001007216652, .00001633701903, .00010653704891, .00096277498668, + .00088200162521, .00118209509709, .00376187446537, .00124524263644, + .00155856745623, .00599140534858, -.00031494508432, -.00001412826237, + -.00008575591893, .00011202284802, -.00005338908155, .00030212216421, + .00090313286214, .00082339570405, .00111002620771, .00124524263644, + .00311553328238, .00184297728198, .00431291320555, -.00063549805233, + .00001471698858, -.00013143657018, .00009437878507, .00008260866257, + .000307795004, .00102719488714, .00095012566921, .00129242901685, + .00155856745623, .00184297728198, .00375026246233, .00538820067052, + .00264135978484, -.00144299517314, -.00094318538399, .00075643538833, + -.00499436928105, .00157107924026, .00034624154943, -.0020631120951, + .00256100032752, .00599140534858, .00431291320555, .00538820067052, + .11321570343494]).reshape(13, 13) + +cov_colnames = ['_cons'] * 13 + +cov_rownames = ['_cons'] * 13 + + +results_twostep = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est + ) + +# begin gmm onestep + +est = dict( + rank=13, + N=758, + Q=.0175043949471787, + J=13.26833136996146, + J_df=2, + k_1=13, + converged=1, + has_xtinst=0, + type=1, + n_eq=1, + k=13, + n_moments=15, + k_aux=13, + k_eq_model=0, + k_eq=13, + cmdline="gmm (lw - {xb:s iq expr tenure rns smsa dyear*} - {b0}), instruments(expr tenure rns smsa dyear* med kww age mrt) onestep", # noqa:E501 + cmd="gmm", + estat_cmd="gmm_estat", + predict="gmm_p", + marginsnotok="_ALL", + eqnames="1", + technique="gn", + winit="Unadjusted", + estimator="onestep", + wmatrix="robust", + vce="robust", + vcetype="Robust", + params="xb_s xb_iq xb_expr xb_tenure xb_rns xb_smsa xb_dyear_67 xb_dyear_68 xb_dyear_69 xb_dyear_70 xb_dyear_71 xb_dyear_73 b0", # noqa:E501 + inst_1="expr tenure rns smsa dyear_67 dyear_68 dyear_69 dyear_70 dyear_71 dyear_73 med kww age mrt _cons", # noqa:E501 + params_1="xb_s xb_iq xb_expr xb_tenure xb_rns xb_smsa xb_dyear_67 xb_dyear_68 xb_dyear_69 xb_dyear_70 xb_dyear_71 xb_dyear_73 b0", # noqa:E501 + sexp_1="lw - ({xb_s} *s + {xb_iq} *iq + {xb_expr} *expr + {xb_tenure} *tenure + {xb_rns} *rns + {xb_smsa} *smsa + {xb_dyear_67} *dyear_67 + {xb_dyear_68} *dyear_68 + {xb_dyear_69} *dyear_69 + {xb_dyear_70} *dyear_70 + {xb_dyear_71} *dyear_71 + {xb_dyear_73} *dyear_73) - {b0}", # noqa:E501 + properties="b V", +) + +params_table = np.array([ + .1724253119448, .02073946970972, 8.3138727440057, 9.262847838e-17, + .13177669825528, .21307392563431, np.nan, 1.9599639845401, + 0, -.00909883104783, .00488623921543, -1.8621337692816, + .06258423710802, -.01867568392991, .00047802183425, np.nan, + 1.9599639845401, 0, .04928948974112, .00804979771953, + 6.1230718408647, 9.178828333e-10, .033512176128, .06506680335423, + np.nan, 1.9599639845401, 0, .04221709210829, + .00946363451925, 4.4609808232133, 8.158539147e-06, .0236687092877, + .06076547492887, np.nan, 1.9599639845401, 0, + -.10179345005432, .0337105276595, -3.0196338390938, .00253080446805, + -.16786487016678, -.03572202994187, np.nan, 1.9599639845401, + 0, .12611094948071, .0308113805617, 4.0929989887401, + .00004258295784, .06572175326583, .18650014569559, np.nan, + 1.9599639845401, 0, -.0596171062088, .05171372339438, + -1.1528295062831, .24898037089783, -.16097414156825, .04173992915064, + np.nan, 1.9599639845401, 0, .04867955998567, + .04981322392381, .97724170714436, .32844950450919, -.04895256485883, + .14631168483017, np.nan, 1.9599639845401, 0, + .15281763323761, .04792849748935, 3.188450321681, .00143037585682, + .05887950432536, .24675576214986, np.nan, 1.9599639845401, + 0, .17443605153365, .06112514589814, 2.8537527227227, + .00432061472141, .05463296702353, .29423913604377, np.nan, + 1.9599639845401, 0, .0916659665856, .0554618025144, + 1.6527765494425, .09837634840443, -.01703716886029, .20036910203149, + np.nan, 1.9599639845401, 0, .09323976498299, + .06084900556261, 1.5323137021041, .125445041459, -.02602209441479, + .21250162438078, np.nan, 1.9599639845401, 0, + 4.0335098954259, .33503289261392, 12.03914595954, 2.212341104e-33, + 3.3768574922664, 4.6901622985855, np.nan, 1.9599639845401, + 0]).reshape(13, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['_cons'] * 13 + +cov = np.array([ + .00043012560384, -.00007821948168, .00002814664044, .00001470659469, + -.00018137297337, -8.404214163e-06, -.000116495836, -.00019098604401, + -.00012670601919, -.00008672920733, -.00031350033095, -.00062509206531, + .00258704275396, -.00007821948168, .00002387533367, 4.911669728e-06, + -.00001098678322, .00006618473561, -.00002158670034, 8.107545213e-07, + .00003255315461, -.00002143051924, -.0000597535309, -.00001402380853, + .00001385883996, -.00142630446035, .00002814664044, 4.911669728e-06, + .00006479924333, -.00001977796199, .00005110284341, -.00003232809926, + .00003557970376, .00008581782553, .00002961847494, .00001478700432, + -.00008727552546, -.00012994173168, -.00094120116335, .00001470659469, + -.00001098678322, -.00001977796199, .00008956037831, -.00003784800308, + 7.059546860e-06, .00008151950631, .00006348047144, .00010852497856, + .00009624187488, .00010823787214, .00009132957164, .00074787094553, + -.00018137297337, .00006618473561, .00005110284341, -.00003784800308, + .00113639967508, .00013313518183, .00019039509438, .0002000965573, + 7.191780465e-06, .00002329093697, -.00005087978271, .00009086571425, + -.00495748724374, -8.404214163e-06, -.00002158670034, -.00003232809926, + 7.059546860e-06, .00013313518183, .00094934117212, .00006195450052, + .00011810217311, .00025505395817, .00011081126685, .00030134673539, + .00030676742472, .00155300401754, -.000116495836, 8.107545213e-07, + .00003557970376, .00008151950631, .00019039509438, .00006195450052, + .00267430918731, .00086135304709, .00092017339035, .00095567351479, + .000887006474, .00102883960359, .0003167617596, -.00019098604401, + .00003255315461, .00008581782553, .00006348047144, .0002000965573, + .00011810217311, .00086135304709, .00248135727768, .0009302682109, + .0008777378644, .00081079994623, .00094288525746, -.00207087031796, + -.00012670601919, -.00002143051924, .00002961847494, .00010852497856, + 7.191780465e-06, .00025505395817, .00092017339035, .0009302682109, + .00229714087159, .00117701812554, .00109484405919, .00129252524238, + .00250083573173, -.00008672920733, -.0000597535309, .00001478700432, + .00009624187488, .00002329093697, .00011081126685, .00095567351479, + .0008777378644, .00117701812554, .00373628346107, .00123495172035, + .00154490399953, .00600809353679, -.00031350033095, -.00001402380853, + -.00008727552546, .00010823787214, -.00005087978271, .00030134673539, + .000887006474, .00081079994623, .00109484405919, .00123495172035, + .00307601153815, .0018118788444, .00430884303498, -.00062509206531, + .00001385883996, -.00012994173168, .00009132957164, .00009086571425, + .00030676742472, .00102883960359, .00094288525746, .00129252524238, + .00154490399953, .0018118788444, .00370260147796, .00534911865442, + .00258704275396, -.00142630446035, -.00094120116335, .00074787094553, + -.00495748724374, .00155300401754, .0003167617596, -.00207087031796, + .00250083573173, .00600809353679, .00430884303498, .00534911865442, + .11224703913325]).reshape(13, 13) + +cov_colnames = ['_cons'] * 13 + +cov_rownames = ['_cons'] * 13 + + +results_onestep = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) diff --git a/statsmodels/sandbox/regression/tests/results_gmm_griliches_iter.py b/statsmodels/sandbox/regression/tests/results_gmm_griliches_iter.py new file mode 100644 index 0000000..6337b6a --- /dev/null +++ b/statsmodels/sandbox/regression/tests/results_gmm_griliches_iter.py @@ -0,0 +1,135 @@ +import numpy as np + +from statsmodels.tools.testing import ParamsTableTestBunch + +est = dict( + rank=13, + N=758, + Q=.0150568875809373, + J=11.41312078635046, + J_df=2, + k_1=13, + converged=1, + has_xtinst=0, + type=1, + n_eq=1, + k=13, + n_moments=15, + k_aux=13, + k_eq_model=0, + ic=6, + k_eq=13, + cmdline="gmm (lw - {xb:s iq expr tenure rns smsa dyear*} - {b0}) , instruments(expr tenure rns smsa dyear* med kww age mrt) igmm", # noqa:E501 + cmd="gmm", + estat_cmd="gmm_estat", + predict="gmm_p", + marginsnotok="_ALL", + eqnames="1", + technique="gn", + winit="Unadjusted", + estimator="igmm", + wmatrix="robust", + vce="robust", + vcetype="Robust", + params="xb_s xb_iq xb_expr xb_tenure xb_rns xb_smsa xb_dyear_67 xb_dyear_68 xb_dyear_69 xb_dyear_70 xb_dyear_71 xb_dyear_73 b0", # noqa:E501 + inst_1="expr tenure rns smsa dyear_67 dyear_68 dyear_69 dyear_70 dyear_71 dyear_73 med kww age mrt _cons", # noqa:E501 + params_1="xb_s xb_iq xb_expr xb_tenure xb_rns xb_smsa xb_dyear_67 xb_dyear_68 xb_dyear_69 xb_dyear_70 xb_dyear_71 xb_dyear_73 b0", # noqa:E501 + sexp_1="lw - ({xb_s} *s + {xb_iq} *iq + {xb_expr} *expr + {xb_tenure} *tenure + {xb_rns} *rns + {xb_smsa} *smsa + {xb_dyear_67} *dyear_67 + {xb_dyear_68} *dyear_68 + {xb_dyear_69} *dyear_69 + {xb_dyear_70} *dyear_70 + {xb_dyear_71} *dyear_71 + {xb_dyear_73} *dyear_73) - {b0}", # noqa:E501 + properties="b V", +) + +params_table = np.array([ + .17587739850768, .02085563162829, 8.4330890400415, 3.366583555e-17, + .1350011116414, .21675368537396, np.nan, 1.9599639845401, + 0, -.00928586712743, .00491894287617, -1.88777697997, + .05905589683705, -.01892681800673, .00035508375188, np.nan, + 1.9599639845401, 0, .05031651549731, .00810558790493, + 6.2076330659127, 5.378855978e-10, .03442985513012, .0662031758645, + np.nan, 1.9599639845401, 0, .04246235782951, + .00956418082077, 4.4397276280375, 9.007280073e-06, .02371690787918, + .06120780777985, np.nan, 1.9599639845401, 0, + -.1039476753865, .03373281188749, -3.0815004611293, .00205960157647, + -.17006277178325, -.03783257898975, np.nan, 1.9599639845401, + 0, .12477256813508, .03099244898605, 4.0259021864082, + .0000567572801, .06402848432973, .18551665194043, np.nan, + 1.9599639845401, 0, -.05297127223127, .0517946935923, + -1.0227162003936, .30644204936546, -.15448700626247, .04854446179993, + np.nan, 1.9599639845401, 0, .04564516152971, + .05001865637643, .91256272831865, .36147256434055, -.05238960352318, + .1436799265826, np.nan, 1.9599639845401, 0, + .15574543741982, .04802004585645, 3.2433421218593, .00118136262363, + .06162787700523, .24986299783442, np.nan, 1.9599639845401, + 0, .16681173496168, .06134387289984, 2.7192892635594, + .00654223677971, .0465799534058, .28704351651757, np.nan, + 1.9599639845401, 0, .08417610675323, .05582688740597, + 1.507805838092, .13160422753823, -.02524258193145, .19359479543791, + np.nan, 1.9599639845401, 0, .09964580476612, + .06124947866865, 1.6268841291727, .10376170930541, -.02040096749628, + .21969257702853, np.nan, 1.9599639845401, 0, + 4.0027753075622, .33649589464938, 11.895465505554, 1.249543428e-32, + 3.3432554731038, 4.6622951420205, np.nan, 1.9599639845401, + 0]).reshape(13, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['_cons'] * 13 + +cov = np.array([ + .00043495737061, -.00007938790704, .00002809207919, .00001486824321, + -.00017806650894, -6.696078938e-06, -.00011595347261, -.00018816769626, + -.00012205118386, -.00008281236274, -.00031504876539, -.00063574245306, + .00264272738846, -.00007938790704, .00002419599902, 4.932871670e-06, + -.00001114848619, .00006618803917, -.00002202930782, 4.808220835e-07, + .00003206765662, -.00002261059773, -.00006024105579, -.00001412126593, + .00001474591556, -.00144330101198, .00002809207919, 4.932871670e-06, + .00006570055528, -.0000203894891, .00005213529923, -.00003297805448, + .00003595284891, .00008758906787, .00003058926358, .00001696423798, + -.00008568569767, -.00013140753648, -.00094326672008, .00001486824321, + -.00001114848619, -.0000203894891, .00009147355477, -.00003774547245, + 7.828122784e-06, .00008484461309, .00006729820252, .00011236802193, + .00010082715772, .00011217081931, .00009440153548, .00075659901252, + -.00017806650894, .00006618803917, .00005213529923, -.00003774547245, + .00113790259784, .00013005865302, .00018021354375, .00018779266096, + -9.435310865e-06, .0000165483542, -.00005323328914, .00008265052168, + -.00499436873124, -6.696078938e-06, -.00002202930782, -.00003297805448, + 7.828122784e-06, .00013005865302, .00096053189415, .00005704546746, + .00011160225767, .00025285680201, .00010656723202, .00030213005331, + .00030792696913, .00157128168902, -.00011595347261, 4.808220835e-07, + .00003595284891, .00008484461309, .00018021354375, .00005704546746, + .00268269028432, .00085942321667, .00091151417222, .00096327250114, + .00090372304081, .00102768195348, .00034563629591, -.00018816769626, + .00003206765662, .00008758906787, .00006729820252, .00018779266096, + .00011160225767, .00085942321667, .0025018659857, .00092591134763, + .00088266305412, .0008241186538, .00095084381197, -.00206285154639, + -.00012205118386, -.00002261059773, .00003058926358, .00011236802193, + -9.435310865e-06, .00025285680201, .00091151417222, .00092591134763, + .00230592480406, .00118265696692, .0011106470199, .00129290662149, + .00256049741814, -.00008281236274, -.00006024105579, .00001696423798, + .00010082715772, .0000165483542, .00010656723202, .00096327250114, + .00088266305412, .00118265696692, .00376307074235, .00124584145426, + .00155915431219, .00599086304364, -.00031504876539, -.00001412126593, + -.00008568569767, .00011217081931, -.00005323328914, .00030213005331, + .00090372304081, .0008241186538, .0011106470199, .00124584145426, + .00311664135744, .0018437604357, .00431259131307, -.00063574245306, + .00001474591556, -.00013140753648, .00009440153548, .00008265052168, + .00030792696913, .00102768195348, .00095084381197, .00129290662149, + .00155915431219, .0018437604357, .00375149863718, .00538769349865, + .00264272738846, -.00144330101198, -.00094326672008, .00075659901252, + -.00499436873124, .00157128168902, .00034563629591, -.00206285154639, + .00256049741814, .00599086304364, .00431259131307, .00538769349865, + .11322948711589]).reshape(13, 13) + +cov_colnames = ['_cons'] * 13 + +cov_rownames = ['_cons'] * 13 + + +results = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) diff --git a/statsmodels/sandbox/regression/tests/results_gmm_poisson.py b/statsmodels/sandbox/regression/tests/results_gmm_poisson.py new file mode 100644 index 0000000..5175a72 --- /dev/null +++ b/statsmodels/sandbox/regression/tests/results_gmm_poisson.py @@ -0,0 +1,572 @@ +import numpy as np + +from statsmodels.tools.testing import ParamsTableTestBunch + +est = dict( + rank=8, + N=3629, + Q=4.59536484786e-20, + J=1.66765790329e-16, + J_df=0, + k_1=8, + converged=1, + has_xtinst=0, + type=1, + n_eq=1, + k=8, + n_moments=8, + k_aux=8, + k_eq_model=0, + k_eq=8, + cmdline="gmm ( docvis - exp({xb:private medicaid aget aget2 educyr actlim totchr}+{b0})), instruments(incomet ssiratio aget aget2 educyr actlim totchr) onestep vce(robust)", # noqa:E501 + cmd="gmm", + estat_cmd="gmm_estat", + predict="gmm_p", + marginsnotok="_ALL", + eqnames="1", + technique="gn", + winit="Unadjusted", + estimator="onestep", + wmatrix="robust", + vce="robust", + vcetype="Robust", + params="xb_private xb_medicaid xb_aget xb_aget2 xb_educyr xb_actlim xb_totchr b0", # noqa:E501 + inst_1="incomet ssiratio aget aget2 educyr actlim totchr _cons", + params_1="xb_private xb_medicaid xb_aget xb_aget2 xb_educyr xb_actlim xb_totchr b0", # noqa:E501 + sexp_1="docvis - exp( ({xb_private} *private + {xb_medicaid} *medicaid + {xb_aget} *aget + {xb_aget2} *aget2 + {xb_educyr} *educyr + {xb_actlim} *actlim + {xb_totchr} *totchr) + {b0} )", # noqa:E501 + properties="b V", +) + +params_table = np.array([ + .62093805844748, .35860052573857, 1.731559252928, .08335206643438, + -.08190605683724, 1.3237821737322, np.nan, 1.9599639845401, + 0, .68895699568302, .43817618784254, 1.5723286997298, + .11587434043505, -.1698525513714, 1.5477665427374, np.nan, + 1.9599639845401, 0, .25750627258076, .05009451793791, + 5.1404082358855, 2.741421857e-07, .15932282159956, .35568972356197, + np.nan, 1.9599639845401, 0, -.05352997420414, + .01103202674353, -4.8522339048464, 1.220785200e-06, -.07515234929795, + -.03190759911034, np.nan, 1.9599639845401, 0, + .03106248018916, .01032090201131, 3.0096671933432, .00261534090329, + .01083388395902, .05129107641931, np.nan, 1.9599639845401, + 0, .14175365608301, .0494498280382, 2.8666157539212, + .00414886404159, .04483377408643, .23867353807958, np.nan, + 1.9599639845401, 0, .23128095221422, .01565221628818, + 14.776243054406, 2.084750820e-49, .20060317201116, .26195873241727, + np.nan, 1.9599639845401, 0, .34763567088735, + .31615794015526, 1.0995633091379, .27152243570261, -.27202250524333, + .96729384701803, np.nan, 1.9599639845401, 0 + ]).reshape(8, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['_cons'] * 8 + +cov = np.array([ + .12859433705998, .13265896898444, .00910916927048, -.00144786113189, + -.00037337560793, -.00152379041042, -.00336772308907, -.09899309651531, + .13265896898444, .19199837159222, .00979636564963, -.00135323134276, + .00180599814286, -.00930935415071, -.00460031335865, -.13429156867927, + .00910916927048, .00979636564963, .00250946072743, -.00052373946978, + 5.155389870e-07, -.00016461502154, -.00025816911604, -.00869892550441, + -.00144786113189, -.00135323134276, -.00052373946978, .00012170561407, + 8.334416260e-06, -.00002526568199, .00003797456789, .00131001446811, + -.00037337560793, .00180599814286, 5.155389870e-07, 8.334416260e-06, + .00010652101833, -.00026856403693, -.00003344387872, -.00122933496346, + -.00152379041042, -.00930935415071, -.00016461502154, -.00002526568199, + -.00026856403693, .00244528549301, .00003610001892, .00527355381855, + -.00336772308907, -.00460031335865, -.00025816911604, .00003797456789, + -.00003344387872, .00003610001892, .00024499187473, .00300075896709, + -.09899309651531, -.13429156867927, -.00869892550441, .00131001446811, + -.00122933496346, .00527355381855, .00300075896709, .09995584312322 + ]).reshape(8, 8) + +cov_colnames = ['_cons'] * 8 + +cov_rownames = ['_cons'] * 8 + + +results_addonestep = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + + +est = dict( + rank=8, + N=3629, + Q=6.09567389485e-33, + J=2.21212005644e-29, + J_df=0, + k_1=8, + converged=1, + has_xtinst=0, + type=1, + n_eq=1, + k=8, + n_moments=8, + k_aux=8, + k_eq_model=0, + k_eq=8, + cmdline="gmm ( docvis - exp({xb:private medicaid aget aget2 educyr actlim totchr}+{b0})), instruments(incomet ssiratio aget aget2 educyr actlim totchr) twostep vce(robust)", # noqa:E501 + cmd="gmm", + estat_cmd="gmm_estat", + predict="gmm_p", + marginsnotok="_ALL", + eqnames="1", + technique="gn", + winit="Unadjusted", + estimator="twostep", + wmatrix="robust", + vce="robust", + vcetype="Robust", + params="xb_private xb_medicaid xb_aget xb_aget2 xb_educyr xb_actlim xb_totchr b0", # noqa:E501 + inst_1="incomet ssiratio aget aget2 educyr actlim totchr _cons", + params_1="xb_private xb_medicaid xb_aget xb_aget2 xb_educyr xb_actlim xb_totchr b0", # noqa:E501 + sexp_1="docvis - exp( ({xb_private} *private + {xb_medicaid} *medicaid + {xb_aget} *aget + {xb_aget2} *aget2 + {xb_educyr} *educyr + {xb_actlim} *actlim + {xb_totchr} *totchr) + {b0} )", # noqa:E501 + properties="b V", + ) + +params_table = np.array([ + .6209380584426, .35860052570457, 1.7315592530786, .08335206640755, + -.08190605677548, 1.3237821736607, np.nan, 1.9599639845401, + 0, .68895699501744, .43817618789764, 1.5723286980131, + .11587434083298, -.16985255214498, 1.5477665421799, np.nan, + 1.9599639845401, 0, .25750627271754, .05009451794125, + 5.1404082382732, 2.741421823e-07, .15932282172979, .35568972370529, + np.nan, 1.9599639845401, 0, -.05352997423123, + .01103202674378, -4.8522339071944, 1.220785186e-06, -.07515234932551, + -.03190759913694, np.nan, 1.9599639845401, 0, + .03106248018903, .01032090201422, 3.0096671924822, .0026153409107, + .01083388395319, .05129107642488, np.nan, 1.9599639845401, + 0, .14175365616691, .04944982804302, 2.8666157553386, + .00414886402301, .04483377416089, .23867353817294, np.nan, + 1.9599639845401, 0, .23128095224221, .01565221628892, + 14.776243055497, 2.084750786e-49, .20060317203771, .26195873244672, + np.nan, 1.9599639845401, 0, .34763567064032, + .31615794015859, 1.099563308345, .27152243604826, -.27202250549689, + .96729384677754, np.nan, 1.9599639845401, 0 + ]).reshape(8, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['_cons'] * 8 + +cov = np.array([ + .12859433703559, .1326589689683, .00910916927021, -.00144786113188, + -.00037337560766, -.00152379040753, -.00336772308885, -.09899309649807, + .1326589689683, .1919983716405, .00979636565235, -.00135323134324, + .00180599814488, -.00930935415256, -.00460031335946, -.13429156869395, + .00910916927021, .00979636565235, .00250946072777, -.00052373946983, + 5.155391569e-07, -.00016461502162, -.00025816911611, -.00869892550672, + -.00144786113188, -.00135323134324, -.00052373946983, .00012170561408, + 8.334416227e-06, -.00002526568198, .0000379745679, .00131001446858, + -.00037337560766, .00180599814488, 5.155391569e-07, 8.334416227e-06, + .00010652101839, -.00026856403706, -.00003344387875, -.00122933496459, + -.00152379040753, -.00930935415256, -.00016461502162, -.00002526568198, + -.00026856403706, .00244528549348, .00003610001887, .00527355381795, + -.00336772308885, -.00460031335946, -.00025816911611, .0000379745679, + -.00003344387875, .00003610001887, .00024499187475, .00300075896724, + -.09899309649807, -.13429156869395, -.00869892550672, .00131001446858, + -.00122933496459, .00527355381795, .00300075896724, .09995584312533 + ]).reshape(8, 8) + +cov_colnames = ['_cons'] * 8 + +cov_rownames = ['_cons'] * 8 + +results_addtwostep = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + + +est = dict( + rank=8, + N=3629, + Q=.0002538911897719, + J=.9213711276820714, + J_df=1, + k_1=8, + converged=1, + has_xtinst=0, + type=1, + n_eq=1, + k=8, + n_moments=9, + k_aux=8, + k_eq_model=0, + k_eq=8, + cmdline="gmm ( (docvis / exp({xb:private medicaid aget aget2 educyr actlim totchr}+{b0})) - 1), instruments(income ssiratio medicaid aget aget2 educyr actlim totchr) onestep vce(robust)", # noqa:E501 + cmd="gmm", + estat_cmd="gmm_estat", + predict="gmm_p", + marginsnotok="_ALL", + eqnames="1", + technique="gn", + winit="Unadjusted", + estimator="onestep", + wmatrix="robust", + vce="robust", + vcetype="Robust", + params="xb_private xb_medicaid xb_aget xb_aget2 xb_educyr xb_actlim xb_totchr b0", # noqa:E501 + inst_1="income ssiratio medicaid aget aget2 educyr actlim totchr _cons", + params_1="xb_private xb_medicaid xb_aget xb_aget2 xb_educyr xb_actlim xb_totchr b0", # noqa:E501 + sexp_1="(docvis / exp( ({xb_private} *private + {xb_medicaid} *medicaid + {xb_aget} *aget + {xb_aget2} *aget2 + {xb_educyr} *educyr + {xb_actlim} *actlim + {xb_totchr} *totchr) + {b0} )) - 1", # noqa:E501 + properties="b V", +) + +params_table = np.array([ + .67045580921478, .25039046077656, 2.6776411814389, .00741425985435, + .17969952402034, 1.1612120944092, np.nan, 1.9599639845401, + 0, .28551241628798, .10358919281318, 2.7561988710819, + .00584774303307, .08248132918657, .4885435033894, np.nan, + 1.9599639845401, 0, .2672004738793, .05203985579809, + 5.1345352476769, 2.828420839e-07, .16520423075439, .36919671700421, + np.nan, 1.9599639845401, 0, -.0560702624564, + .01191485946838, -4.7059105149509, 2.527353692e-06, -.07942295789528, + -.03271756701753, np.nan, 1.9599639845401, 0, + .01448379701656, .00782559934942, 1.8508227127214, .06419506241955, + -.00085409586574, .02982168989887, np.nan, 1.9599639845401, + 0, .18130374188096, .0382173439987, 4.7440173206998, + 2.095209222e-06, .10639912405874, .25620835970318, np.nan, + 1.9599639845401, 0, .28146161235562, .01380395117777, + 20.389931022715, 2.054354003e-92, .25440636520284, .30851685950839, + np.nan, 1.9599639845401, 0, .51399857133918, + .10262653035745, 5.0084375799215, 5.487366567e-07, .31285426798028, + .71514287469808, np.nan, 1.9599639845401, 0 + ]).reshape(8, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['_cons'] * 8 + +cov = np.array([ + .0626953828479, .02323594786658, .00535172023578, -.00103050587759, + -.00154311442856, .00154515839603, -.00043159973572, -.01570852578318, + .02323594786658, .01073072086769, .00207768328305, -.00039713375955, + -.00049396171685, .00027652302157, -.00020408147523, -.00701276303887, + .00535172023578, .00207768328305, .00270814659149, -.00059652725999, + -.00012298559534, .00021079055266, -.00004341699196, -.0031278522429, + -.00103050587759, -.00039713375955, -.00059652725999, .00014196387615, + .00002481291175, -.00006035908648, .00001093157006, .00059187926133, + -.00154311442856, -.00049396171685, -.00012298559534, .00002481291175, + .00006124000518, -.00001857594061, .00001436652009, .00008106194688, + .00154515839603, .00027652302157, .00021079055266, -.00006035908648, + -.00001857594061, .00146056538231, -.00016708887634, -.00074321753343, + -.00043159973572, -.00020408147523, -.00004341699196, .00001093157006, + .00001436652009, -.00016708887634, .00019054906812, -.00028024031412, + -.01570852578318, -.00701276303887, -.0031278522429, .00059187926133, + .00008106194688, -.00074321753343, -.00028024031412, .01053220473321 + ]).reshape(8, 8) + +cov_colnames = ['_cons'] * 8 + +cov_rownames = ['_cons'] * 8 + + +results_multonestep = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + + +est = dict( + rank=8, + N=3629, + Q=.0002589826272982, + J=.9398479544653281, + J_df=1, + k_1=8, + converged=1, + has_xtinst=0, + type=1, + n_eq=1, + k=8, + n_moments=9, + k_aux=8, + k_eq_model=0, + k_eq=8, + cmdline="gmm ( (docvis / exp({xb:private medicaid aget aget2 educyr actlim totchr}+{b0})) - 1), instruments(income ssiratio medicaid aget aget2 educyr actlim totchr) twostep vce(robust)", # noqa:E501 + cmd="gmm", + estat_cmd="gmm_estat", + predict="gmm_p", + marginsnotok="_ALL", + eqnames="1", + technique="gn", + winit="Unadjusted", + estimator="twostep", + wmatrix="robust", + vce="robust", + vcetype="Robust", + params="xb_private xb_medicaid xb_aget xb_aget2 xb_educyr xb_actlim xb_totchr b0", # noqa:E501 + inst_1="income ssiratio medicaid aget aget2 educyr actlim totchr _cons", + params_1="xb_private xb_medicaid xb_aget xb_aget2 xb_educyr xb_actlim xb_totchr b0", # noqa:E501 + sexp_1="(docvis / exp( ({xb_private} *private + {xb_medicaid} *medicaid + {xb_aget} *aget + {xb_aget2} *aget2 + {xb_educyr} *educyr + {xb_actlim} *actlim + {xb_totchr} *totchr) + {b0} )) - 1", # noqa:E501 + properties="b V", + ) + +params_table = np.array([ + .67815288158883, .25053953449054, 2.7067699433856, .00679413212727, + .18710441728393, 1.1692013458937, np.nan, 1.9599639845401, + 0, .28872837589732, .1032733938985, 2.7957672833051, + .00517766683505, .08631624329503, .49114050849961, np.nan, + 1.9599639845401, 0, .27067071818542, .05199695467114, + 5.2055109745809, 1.934635127e-07, .16875855972422, .37258287664662, + np.nan, 1.9599639845401, 0, -.05690856524563, + .01189861686254, -4.7827882772482, 1.728801925e-06, -.08022942576205, + -.03358770472921, np.nan, 1.9599639845401, 0, + .01438118999252, .00783219080428, 1.8361644081315, .06633334485657, + -.00096962190392, .02973200188896, np.nan, 1.9599639845401, + 0, .18038262255626, .03826653224544, 4.7138481584715, + 2.430818311e-06, .10538159754195, .25538364757056, np.nan, + 1.9599639845401, 0, .28251027986119, .01378475918788, + 20.494393555287, 2.415775858e-93, .25549264831739, .30952791140498, + np.nan, 1.9599639845401, 0, .5077134442587, + .10235830367214, 4.9601588346456, 7.043556343e-07, .30709485554269, + .7083320329747, np.nan, 1.9599639845401, 0 + ]).reshape(8, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['_cons'] * 8 + +cov = np.array([ + .06277005834274, .02315710174743, .00533574120292, -.00102544979294, + -.00154463417995, .0015508406274, -.00043796451278, -.01559999387335, + .02315710174743, .01066539388732, .00206217803508, -.00039331197813, + -.00049172930967, .00027603135609, -.00020644763374, -.00694810289238, + .00533574120292, .00206217803508, .00270368329507, -.0005950942106, + -.00012276584915, .00021462173623, -.00004681980342, -.00310767551047, + -.00102544979294, -.00039331197813, -.0005950942106, .00014157708324, + .00002474211336, -.00006134660609, .00001178280314, .00058658157366, + -.00154463417995, -.00049172930967, -.00012276584915, .00002474211336, + .00006134321279, -.00001855941375, .00001443470174, .0000776612477, + .0015508406274, .00027603135609, .00021462173623, -.00006134660609, + -.00001855941375, .00146432749009, -.00016643326394, -.00074847803836, + -.00043796451278, -.00020644763374, -.00004681980342, .00001178280314, + .00001443470174, -.00016643326394, .00019001958587, -.00027573517109, + -.01559999387335, -.00694810289238, -.00310767551047, .00058658157366, + .0000776612477, -.00074847803836, -.00027573517109, .01047722233064 + ]).reshape(8, 8) + +cov_colnames = ['_cons'] * 8 + +cov_rownames = ['_cons'] * 8 + +results_multtwostep = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + + +est = dict( + rank=8, + N=3629, + Q=.0002590497181628, + J=.940091427212973, + J_df=1, + k_1=8, + converged=1, + has_xtinst=0, + type=1, + n_eq=1, + k=8, + n_moments=9, + k_aux=8, + k_eq_model=0, + k_eq=8, + cmdline="gmm ( (docvis / exp({xb:private medicaid aget aget2 educyr actlim totchr}+{b0})) - 1), instruments(income ssiratio medicaid aget aget2 educyr actlim totchr) twostep wmatrix(robust) vce(unadjusted) center", # noqa:E501 + cmd="gmm", + estat_cmd="gmm_estat", + predict="gmm_p", + marginsnotok="_ALL", + eqnames="1", + technique="gn", + winit="Unadjusted", + estimator="twostep", + wmatrix="robust", + vce="unadjusted", + params="xb_private xb_medicaid xb_aget xb_aget2 xb_educyr xb_actlim xb_totchr b0", # noqa:E501 + inst_1="income ssiratio medicaid aget aget2 educyr actlim totchr _cons", + params_1="xb_private xb_medicaid xb_aget xb_aget2 xb_educyr xb_actlim xb_totchr b0", # noqa:E501 + sexp_1="(docvis / exp( ({xb_private} *private + {xb_medicaid} *medicaid + {xb_aget} *aget + {xb_aget2} *aget2 + {xb_educyr} *educyr + {xb_actlim} *actlim + {xb_totchr} *totchr) + {b0} )) - 1", # noqa:E501 + properties="b V", +) + +params_table = np.array([ + .67815486150911, .25018082946574, 2.7106587781218, .00671496899138, + .1878094461339, 1.1685002768843, np.nan, 1.9599639845401, + 0, .28872920226215, .10311429027815, 2.8000891193967, + .00510884999633, .08662890702558, .49082949749873, np.nan, + 1.9599639845401, 0, .27067161407481, .0518802415232, + 5.2172388972735, 1.816099638e-07, .16898820918009, .37235501896953, + np.nan, 1.9599639845401, 0, -.05690878166227, + .0118728670827, -4.7931793783164, 1.641587211e-06, -.08017917353758, + -.03363838978695, np.nan, 1.9599639845401, 0, + .01438116368432, .00781887593806, 1.8392878718448, .0658728559523, + -.00094355155385, .0297058789225, np.nan, 1.9599639845401, + 0, .18038238197017, .03819661477822, 4.7224703816696, + 2.329970297e-06, .10551839267351, .25524637126682, np.nan, + 1.9599639845401, 0, .28251055147828, .01376659609161, + 20.521452768591, 1.385109204e-93, .25552851894901, .30949258400755, + np.nan, 1.9599639845401, 0, .50771182444237, + .10208891085993, 4.9732318639284, 6.584582712e-07, .30762123593598, + .70780241294876, np.nan, 1.9599639845401, 0 + ]).reshape(8, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['xb_private', 'xb_medicaid', 'xb_aget', 'xb_aget2', + 'xb_educyr', 'xb_actlim', 'xb_totchr', 'b0'] + +cov = np.array([ + .06259044743217, .02308524749042, .00531802921719, -.0010223122446, + -.00154027662468, .00154945994717, -.00043816683551, -.01554486097815, + .02308524749042, .01063255685957, .00205438168765, -.00039193802388, + -.00049039628782, .0002760841411, -.0002064504141, -.00691934867666, + .00531802921719, .00205438168765, .00269155946051, -.00059250696972, + -.00012247118567, .00021403084056, -.00004749600121, -.00308951213731, + -.0010223122446, -.00039193802388, -.00059250696972, .00014096497276, + .00002468288871, -.00006115240604, .00001190303672, .00058327928125, + -.00154027662468, -.00049039628782, -.00012247118567, .00002468288871, + .00006113482093, -.00001854325518, .00001439868646, .00007784185009, + .00154945994717, .0002760841411, .00021403084056, -.00006115240604, + -.00001854325518, .00145898138052, -.00016596475072, -.00074697007542, + -.00043816683551, -.0002064504141, -.00004749600121, .00001190303672, + .00001439868646, -.00016596475072, .00018951916795, -.00027350320218, + -.01554486097815, -.00691934867666, -.00308951213731, .00058327928125, + .00007784185009, -.00074697007542, -.00027350320218, .01042214572057 + ]).reshape(8, 8) + +cov_colnames = ['xb_private', 'xb_medicaid', 'xb_aget', 'xb_aget2', + 'xb_educyr', 'xb_actlim', 'xb_totchr', 'b0'] + +cov_rownames = ['xb_private', 'xb_medicaid', 'xb_aget', 'xb_aget2', + 'xb_educyr', 'xb_actlim', 'xb_totchr', 'b0'] + + +results_multtwostepdefault = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + + +est = dict( + rank=8, + N=3629, + Q=.0002590497181628, + J=.940091427212973, + J_df=1, + k_1=8, + converged=1, + has_xtinst=0, + type=1, + n_eq=1, + k=8, + n_moments=9, + k_aux=8, + k_eq_model=0, + k_eq=8, + cmdline="gmm ( (docvis / exp({xb:private medicaid aget aget2 educyr actlim totchr}+{b0})) - 1), instruments(income ssiratio medicaid aget aget2 educyr actlim totchr) twostep wmatrix(robust) center", # noqa:E501 + cmd="gmm", + estat_cmd="gmm_estat", + predict="gmm_p", + marginsnotok="_ALL", + eqnames="1", + technique="gn", + winit="Unadjusted", + estimator="twostep", + wmatrix="robust", + vce="robust", + vcetype="Robust", + params="xb_private xb_medicaid xb_aget xb_aget2 xb_educyr xb_actlim xb_totchr b0", # noqa:E501 + inst_1="income ssiratio medicaid aget aget2 educyr actlim totchr _cons", + params_1="xb_private xb_medicaid xb_aget xb_aget2 xb_educyr xb_actlim xb_totchr b0", # noqa:E501 + sexp_1="(docvis / exp( ({xb_private} *private + {xb_medicaid} *medicaid + {xb_aget} *aget + {xb_aget2} *aget2 + {xb_educyr} *educyr + {xb_actlim} *actlim + {xb_totchr} *totchr) + {b0} )) - 1", # noqa:E501 + properties="b V", +) + +params_table = np.array([ + .67815486150911, .25053960844836, 2.7067770469869, .00679398676131, + .18710625224955, 1.1692034707687, np.nan, 1.9599639845401, + 0, .28872920226215, .10327332768441, 2.7957770775479, + .00517750993835, .08631719943712, .49114120508719, np.nan, + 1.9599639845401, 0, .27067161407481, .05199697557915, + 5.2055261110869, 1.934477426e-07, .16875941463467, .37258381351495, + np.nan, 1.9599639845401, 0, -.05690878166227, + .01189862079945, -4.7828048831437, 1.728659059e-06, -.08022964989488, + -.03358791342965, np.nan, 1.9599639845401, 0, + .01438116368432, .00783219272776, 1.8361605982125, .06633390816397, + -.00096965198207, .02973197935072, np.nan, 1.9599639845401, + 0, .18038238197017, .03826654814775, 4.71383991244, + 2.430916736e-06, .10538132578791, .25538343815243, np.nan, + 1.9599639845401, 0, .28251055147828, .01378476509846, + 20.494404471929, 2.415234157e-93, .25549290834996, .3095281946066, + np.nan, 1.9599639845401, 0, .50771182444237, + .10235828870929, 4.960143734762, 7.044103886e-07, .307093265053, + .70833038383174, np.nan, 1.9599639845401, 0 + ]).reshape(8, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = ['_cons'] * 8 + +cov = np.array([ + .06277009540146, .02315708886727, .00533574465012, -.0010254503134, + -.00154463481696, .00155084007911, -.00043796389511, -.01559997980204, + .02315708886727, .01066538021101, .00206217721135, -.00039331175814, + -.00049172883672, .00027603038575, -.00020644729789, -.00694809209467, + .00533574465012, .00206217721135, .00270368546938, -.00059509464294, + -.000122765895, .00021462183651, -.00004681968717, -.003107676362, + -.0010254503134, -.00039331175814, -.00059509464294, .00014157717693, + .00002474211983, -.00006134664668, .00001178278294, .00058658166731, + -.00154463481696, -.00049172883672, -.000122765895, .00002474211983, + .00006134324292, -.00001855938213, .00001443468876, .00007766055925, + .00155084007911, .00027603038575, .00021462183651, -.00006134664668, + -.00001855938213, .00146432870714, -.00016643336248, -.00074847778305, + -.00043796389511, -.00020644729789, -.00004681968717, .00001178278294, + .00001443468876, -.00016643336248, .00019001974882, -.00027573582025, + -.01559997980204, -.00694809209467, -.003107676362, .00058658166731, + .00007766055925, -.00074847778305, -.00027573582025, .0104772192675 + ]).reshape(8, 8) + +cov_colnames = ['_cons'] * 8 + +cov_rownames = ['_cons'] * 8 + + +results_multtwostepcenter = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) diff --git a/statsmodels/sandbox/regression/tests/results_ivreg2_griliches.py b/statsmodels/sandbox/regression/tests/results_ivreg2_griliches.py new file mode 100644 index 0000000..f657601 --- /dev/null +++ b/statsmodels/sandbox/regression/tests/results_ivreg2_griliches.py @@ -0,0 +1,791 @@ +import numpy as np + +from statsmodels.tools.testing import ParamsTableTestBunch + +param_names = [ + 's', 'iq', 'expr', 'tenure', 'rns', 'smsa', + 'dyear_67', 'dyear_68', 'dyear_69', 'dyear_70', 'dyear_71', 'dyear_73', + '_cons'] + + +est = dict( + N=758, + inexog_ct=10, + exexog_ct=4, + endog_ct=2, + partial_ct=0, + df_m=12, + sdofminus=0, + dofminus=0, + r2=.2279825291623523, + rmse=.3766456260250817, + rss=107.5313411236999, + mss=31.75480871825532, + r2_a=.2155473484240278, + F=37.63903370585436, + Fp=1.04881083780e-68, + Fdf1=12, + Fdf2=745, + yy=24652.2466174172, + yyc=139.2861498419552, + r2u=.9956380713371686, + partialcons=0, + cons=1, + cdf=12.55161416131593, + widstat=12.55161416131593, + cd=.0675726199801665, + idp=2.15251425210e-10, + iddf=3, + idstat=47.97804382236573, + sarganp=.0013146751383334, + sargandf=2, + sargan=13.26833137393004, + jp=.0013146751383334, + jdf=2, + j=13.26833137393004, + ll=-335.4059158173529, + rankV=13, + rankxx=13, + rankzz=15, + r2c=.2279825291623523, + hacsubtitleV="Statistics consistent for homoskedasticity only", + hacsubtitleB="Estimates efficient for homoskedasticity only", + title="IV (2SLS) estimation", + predict="ivreg2_p", + version="02.2.08", + cmdline="ivreg2 lw expr tenure rns smsa dyear* (s iq=med kww age mrt)", + cmd="ivreg2", + model="iv", + depvar="lw", + partialsmall="small", + exexog="med kww age mrt", + inexog="expr tenure rns smsa dyear_67 dyear_68 dyear_69 dyear_70 dyear_71 dyear_73", # noqa:E501 + insts="med kww age mrt expr tenure rns smsa dyear_67 dyear_68 dyear_69 dyear_70 dyear_71 dyear_73", # noqa:E501 + instd="s iq", + properties="b V", +) + +params_table = np.array([ + .17242531190423, .02073807855911, 8.3144304527925, 9.219394861e-17, + .13177942481982, .21307119898864, np.nan, 1.9599639845401, + 0, -.00909883103476, .00470440157185, -1.9341101935687, + .05309958088226, -.01831928868441, .00012162661488, np.nan, + 1.9599639845401, 0, .04928948974574, .008154589406, + 6.0443864542646, 1.499796319e-09, .03330678820126, .06527219129022, + np.nan, 1.9599639845401, 0, .04221709210309, + .00884287446052, 4.774136768712, 1.804797032e-06, .02488537664065, + .05954880756552, np.nan, 1.9599639845401, 0, + -.10179345001799, .03417647128271, -2.9784657747708, .00289695381119, + -.16877810285078, -.03480879718521, np.nan, 1.9599639845401, + 0, .12611094946923, .03092747922238, 4.0776342799379, + .00004549625503, .06549420406076, .18672769487769, np.nan, + 1.9599639845401, 0, -.05961710621535, .05529546018534, + -1.0781555305902, .28096435347028, -.16799421668718, .04876000425648, + np.nan, 1.9599639845401, 0, .04867955999401, + .05201609347935, .93585574651683, .34934746462842, -.05327010984199, + .15062922983, np.nan, 1.9599639845401, 0, + .15281763322545, .0515629903814, 2.9637077309732, .0030395682829, + .05175602914272, .25387923730817, np.nan, 1.9599639845401, + 0, .17443605148569, .05975759031645, 2.9190610023255, + .00351087511908, .05731332666255, .29155877630882, np.nan, + 1.9599639845401, 0, .09166596656323, .05414400395495, + 1.6930031003894, .09045487706511, -.01445433116727, .19778626429372, + np.nan, 1.9599639845401, 0, .09323976497853, + .0571819085978, 1.6305815469428, .10297864547348, -.01883471644041, + .20531424639747, np.nan, 1.9599639845401, 0, + 4.0335098946211, .31542152364325, 12.787681221092, 1.921209213e-37, + 3.4152950683316, 4.6517247209107, np.nan, 1.9599639845401, + 0]).reshape(13, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = param_names + +cov = np.array([ + .00043006790232, -.00007669911732, .00003390383154, .00001947510761, + -.00014211117725, .00001984430949, .00001313809086, -.00010726217801, + -.0000934373525, .00003291577926, -.00026067342405, -.00058025280789, + .00230075400852, -.00007669911732, .00002213139415, 4.388754481e-06, + -8.774272042e-06, .00005855699916, -.00001627155824, -.00001175114527, + .00001447038262, -.00001630144788, -.00007254738147, -.0000221423658, + .00001715527313, -.00125964216852, .00003390383154, 4.388754481e-06, + .00006649732838, -.00001561989737, .00003340985346, -6.286271714e-06, + .00004284715305, .00006535720207, .00002474647562, 2.348670591e-06, + -.00012774309302, -.00013889592824, -.00097053265371, .00001947510761, + -8.774272042e-06, -.00001561989737, .00007819642872, -.00001656102532, + -1.454183906e-06, .00006415542548, .0000658729123, .00007759572764, + .00006755177717, .00006035533972, .00007925563165, .00048915076309, + -.00014211117725, .00005855699916, .00003340985346, -.00001656102532, + .00116803118934, .00009910080232, .00010687488928, .0000916567869, + -.00004794231232, -.00018139826234, -.00013904727086, -.00016941373862, + -.00453388036786, .00001984430949, -.00001627155824, -6.286271714e-06, + -1.454183906e-06, .00009910080232, .00095650897105, 2.293607157e-06, + -4.175180521e-06, .00008023363682, .0000277191399, .00011455631826, + 7.627834100e-06, .00071035658346, .00001313809086, -.00001175114527, + .00004284715305, .00006415542548, .00010687488928, 2.293607157e-06, + .00305758791711, .00082806878751, .00084056268139, .00086879959596, + .00072687243235, .00079702544855, .00005969922435, -.00010726217801, + .00001447038262, .00006535720207, .0000658729123, .0000916567869, + -4.175180521e-06, .00082806878751, .00270567398085, .00090000327564, + .0008652672979, .00075215815711, .00093055832029, -.0011308128858, + -.0000934373525, -.00001630144788, .00002474647562, .00007759572764, + -.00004794231232, .00008023363682, .00084056268139, .00090000327564, + .00265874197707, .00106768253686, .00097403133741, .00118960267354, + .00179874271988, .00003291577926, -.00007254738147, 2.348670591e-06, + .00006755177717, -.00018139826234, .0000277191399, .00086879959596, + .0008652672979, .00106768253686, .00357096960043, .00115404290469, + .00134956217212, .00598978065251, -.00026067342405, -.0000221423658, + -.00012774309302, .00006035533972, -.00013904727086, .00011455631826, + .00072687243235, .00075215815711, .00097403133741, .00115404290469, + .00293157316427, .00171538928992, .0048030008792, -.00058025280789, + .00001715527313, -.00013889592824, .00007925563165, -.00016941373862, + 7.627834100e-06, .00079702544855, .00093055832029, .00118960267354, + .00134956217212, .00171538928992, .00326977067089, .00483241607215, + .00230075400852, -.00125964216852, -.00097053265371, .00048915076309, + -.00453388036786, .00071035658346, .00005969922435, -.0011308128858, + .00179874271988, .00598978065251, .0048030008792, .00483241607215, + .09949073757743]).reshape(13, 13) + +cov_colnames = param_names + +cov_rownames = param_names + + +results = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + + +est = dict( + N=758, + inexog_ct=10, + exexog_ct=4, + endog_ct=2, + partial_ct=0, + df_m=12, + sdofminus=0, + dofminus=0, + r2=.2279825291623523, + rmse=.3766456260250817, + rss=107.5313411236999, + mss=31.75480871825532, + r2_a=.2155473484240278, + F=40.08955571761713, + Fp=1.50331141073e-72, + Fdf1=12, + Fdf2=745, + yy=24652.2466174172, + yyc=139.2861498419552, + r2u=.9956380713371686, + partialcons=0, + cons=1, + cdf=12.55161416131593, + widstat=11.46142788662503, + cd=.0675726199801665, + idp=6.77658650925e-09, + iddf=3, + idstat=40.92698219921901, + jp=.0030253131145893, + jdf=2, + j=11.60148136780177, + ll=-335.4059158173529, + rankV=13, + rankS=15, + rankxx=13, + rankzz=15, + r2c=.2279825291623523, + hacsubtitleV="Statistics robust to heteroskedasticity", + hacsubtitleB="Estimates efficient for homoskedasticity only", + title="IV (2SLS) estimation", + predict="ivreg2_p", + version="02.2.08", + cmdline="ivreg2 lw expr tenure rns smsa dyear* (s iq=med kww age mrt), robust", # noqa:E501 + cmd="ivreg2", + model="iv", + depvar="lw", + vcetype="Robust", + partialsmall="small", + exexog="med kww age mrt", + inexog="expr tenure rns smsa dyear_67 dyear_68 dyear_69 dyear_70 dyear_71 dyear_73", # noqa:E501 + insts="med kww age mrt expr tenure rns smsa dyear_67 dyear_68 dyear_69 dyear_70 dyear_71 dyear_73", # noqa:E501 + instd="s iq", + properties="b V", +) + +params_table = np.array([ + .17242531190423, .02073946970741, 8.3138727429773, 9.262847918e-17, + .13177669821925, .21307392558922, np.nan, 1.9599639845401, + 0, -.00909883103476, .00488623921475, -1.862133766863, + .06258423744885, -.01867568391553, .000478021846, np.nan, + 1.9599639845401, 0, .04928948974574, .00804979771814, + 6.1230718424932, 9.178828239e-10, .03351217613534, .06506680335614, + np.nan, 1.9599639845401, 0, .04221709210309, + .00946363451747, 4.4609808235038, 8.158539136e-06, .02366870928599, + .06076547492018, np.nan, 1.9599639845401, 0, + -.10179345001799, .03371052765435, -3.0196338384772, .0025308044732, + -.16786487012036, -.03572202991563, np.nan, 1.9599639845401, + 0, .12611094946923, .03081138055695, 4.0929989889975, + .0000425829578, .06572175326364, .18650014567481, np.nan, + 1.9599639845401, 0, -.05961710621535, .05171372338658, + -1.1528295065836, .24898037077447, -.16097414155951, .04173992912881, + np.nan, 1.9599639845401, 0, .04867955999401, + .04981322391886, .97724170740882, .32844950437829, -.04895256484079, + .14631168482881, np.nan, 1.9599639845401, 0, + .15281763322545, .04792849748217, 3.1884503219051, .00143037585571, + .05887950432728, .24675576212361, np.nan, 1.9599639845401, + 0, .17443605148569, .06112514588945, 2.8537527223437, + .00432061472656, .0546329669926, .29423913597877, np.nan, + 1.9599639845401, 0, .09166596656323, .05546180250571, + 1.6527765492979, .09837634843385, -.01703716886563, .20036910199209, + np.nan, 1.9599639845401, 0, .09323976497853, + .06084900555321, 1.5323137022675, .12544504141872, -.02602209440084, + .21250162435791, np.nan, 1.9599639845401, 0, + 4.0335098946211, .33503289255951, 12.039145959093, 2.212341116e-33, + 3.3768574915682, 4.6901622976741, np.nan, 1.9599639845401, + 0]).reshape(13, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = param_names + +cov = np.array([ + .00043012560374, -.00007821948167, .00002814664043, .00001470659468, + -.0001813729733, -8.404214148e-06, -.00011649583596, -.000190986044, + -.0001267060192, -.00008672920729, -.00031350033086, -.00062509206513, + .00258704275336, -.00007821948167, .00002387533366, 4.911669726e-06, + -.00001098678321, .00006618473559, -.00002158670033, 8.107545182e-07, + .00003255315461, -.00002143051923, -.00005975353088, -.00001402380853, + .00001385883995, -.00142630445991, .00002814664043, 4.911669726e-06, + .0000647992433, -.00001977796198, .00005110284339, -.00003232809925, + .00003557970375, .00008581782551, .00002961847493, .00001478700432, + -.00008727552542, -.00012994173162, -.000941201163, .00001470659468, + -.00001098678321, -.00001977796198, .00008956037828, -.00003784800305, + 7.059546852e-06, .0000815195063, .00006348047141, .00010852497853, + .00009624187487, .0001082378721, .0000913295716, .00074787094515, + -.0001813729733, .00006618473559, .00005110284339, -.00003784800305, + .00113639967473, .0001331351818, .00019039509428, .00020009655722, + 7.191780470e-06, .00002329093699, -.00005087978262, .00009086571417, + -.0049574872418, -8.404214148e-06, -.00002158670033, -.00003232809925, + 7.059546852e-06, .0001331351818, .00094934117183, .00006195450043, + .00011810217306, .00025505395801, .00011081126682, .0003013467353, + .00030676742453, .00155300401661, -.00011649583596, 8.107545182e-07, + .00003557970375, .0000815195063, .00019039509428, .00006195450043, + .0026743091865, .00086135304687, .00092017339013, .00095567351458, + .00088700647379, .00102883960334, .00031676175972, -.000190986044, + .00003255315461, .00008581782551, .00006348047141, .00020009655722, + .00011810217306, .00086135304687, .00248135727719, .00093026821071, + .00087773786421, .00081079994607, .0009428852573, -.00207087031744, + -.0001267060192, -.00002143051923, .00002961847493, .00010852497853, + 7.191780470e-06, .00025505395801, .00092017339013, .00093026821071, + .0022971408709, .00117701812528, .00109484405896, .00129252524214, + .00250083573092, -.00008672920729, -.00005975353088, .00001478700432, + .00009624187487, .00002329093699, .00011081126682, .00095567351458, + .00087773786421, .00117701812528, .00373628346001, .00123495172003, + .00154490399913, .00600809353497, -.00031350033086, -.00001402380853, + -.00008727552542, .0001082378721, -.00005087978262, .0003013467353, + .00088700647379, .00081079994607, .00109484405896, .00123495172003, + .00307601153718, .00181187884386, .00430884303329, -.00062509206513, + .00001385883995, -.00012994173162, .0000913295716, .00009086571417, + .00030676742453, .00102883960334, .0009428852573, .00129252524214, + .00154490399913, .00181187884386, .00370260147681, .00534911865268, + .00258704275336, -.00142630445991, -.000941201163, .00074787094515, + -.0049574872418, .00155300401661, .00031676175972, -.00207087031744, + .00250083573092, .00600809353497, .00430884303329, .00534911865268, + .11224703909679]).reshape(13, 13) + +cov_colnames = param_names + +cov_rownames = param_names + + +results_robust = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + + +est = dict( + N=758, + inexog_ct=10, + exexog_ct=4, + endog_ct=2, + partial_ct=0, + df_r=745, + df_m=12, + sdofminus=0, + dofminus=0, + r2=.2279825291623523, + rmse=.3799175840045295, + rss=107.5313411236999, + mss=31.75480871825532, + r2_a=.2155473484240278, + F=37.63903370585438, + Fp=1.04881083780e-68, + Fdf1=12, + Fdf2=745, + yy=24652.2466174172, + yyc=139.2861498419552, + partialcons=0, + cons=1, + cdf=12.55161416131593, + widstat=12.55161416131593, + cd=.0675726199801665, + idp=2.15251425210e-10, + iddf=3, + idstat=47.97804382236573, + sarganp=.0013146751383334, + sargandf=2, + sargan=13.26833137393004, + jp=.0013146751383334, + jdf=2, + j=13.26833137393004, + ll=-335.4059158173529, + rankV=13, + rankxx=13, + rankzz=15, + r2c=.2279825291623523, + r2u=.9956380713371686, + hacsubtitleV="Statistics consistent for homoskedasticity only", + hacsubtitleB="Estimates efficient for homoskedasticity only", + title="IV (2SLS) estimation", + predict="ivreg2_p", + version="02.2.08", + cmdline="ivreg2 lw expr tenure rns smsa dyear* (s iq=med kww age mrt), small", # noqa:E501 + cmd="ivreg2", + model="iv", + depvar="lw", + partialsmall="small", + small="small", + exexog="med kww age mrt", + inexog="expr tenure rns smsa dyear_67 dyear_68 dyear_69 dyear_70 dyear_71 dyear_73", # noqa:E501 + insts="med kww age mrt expr tenure rns smsa dyear_67 dyear_68 dyear_69 dyear_70 dyear_71 dyear_73", # noqa:E501 + instd="s iq", + properties="b V", +) + +params_table = np.array([ + .17242531190423, .02091823230823, 8.2428242197305, 7.570254109e-16, + .13135961443277, .2134910093757, 745, 1.9631533327653, + 0, -.00909883103476, .00474526917577, -1.917453088061, + .055562500369, -.01841452203205, .00021685996252, 745, + 1.9631533327653, 0, .04928948974574, .00822542913447, + 5.9923304839106, 3.219967401e-09, .03314171112698, .0654372683645, + 745, 1.9631533327653, 0, .04221709210309, + .00891969338965, 4.7330205488974, 2.647391010e-06, .02470636629795, + .05972781790823, 745, 1.9631533327653, 0, + -.10179345001799, .03447336568476, -2.9528143828148, .00324794122176, + -.16946995275367, -.03411694728232, 745, 1.9631533327653, + 0, .12611094946923, .03119614930755, 4.0425165370872, + .00005838098525, .06486812498666, .18735377395179, 745, + 1.9631533327653, 0, -.05961710621535, .05577581734252, + -1.0688701493919, .28547438462206, -.16911358791902, .04987937548832, + 745, 1.9631533327653, 0, .04867955999401, + .05246796245209, .92779589141575, .35381393703187, -.05432309535722, + .15168221534524, 745, 1.9631533327653, 0, + .15281763322545, .0520109232025, 2.9381834394759, .00340336072573, + .05071221600025, .25492305045064, 745, 1.9631533327653, + 0, .17443605148569, .06027671044146, 2.8939212211172, + .00391575116799, .0561036264944, .29276847647697, 745, + 1.9631533327653, 0, .09166596656323, .05461435829744, + 1.678422477547, .09368402236573, -.01555039294523, .19888232607168, + 745, 1.9631533327653, 0, .09323976497853, + .05767865351978, 1.6165385162217, .10640126701552, -.01999227590824, + .20647180586531, 745, 1.9631533327653, 0, + 4.0335098946211, .31816162176165, 12.677550083784, 1.723599587e-33, + 3.4089098465017, 4.6581099427405, 745, 1.9631533327653, + 0]).reshape(13, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = param_names + +cov = np.array([ + .0004375724429, -.00007803749118, .00003449544203, .0000198149417, + -.00014459096961, .00002019058603, .00001336734613, -.00010913386703, + -.00009506780295, .00003349014856, -.00026522208782, -.00059037802467, + .0023409013939, -.00007803749118, .00002251757955, 4.465336774e-06, + -8.927380145e-06, .00005957879915, -.00001655549147, -.00001195619881, + .00001472288594, -.00001658590268, -.00007381330893, -.00002252874265, + .00001745462689, -.00128162250166, .00003449544203, 4.465336774e-06, + .00006765768445, -.00001589245933, .00003399284419, -6.395965046e-06, + .0000435948215, .00006649766331, .00002517829331, 2.389654105e-06, + -.00012997216713, -.00014131961558, -.00098746812283, .0000198149417, + -8.927380145e-06, -.00001589245933, .00007956093017, -.00001685000965, + -1.479558927e-06, .00006527491612, .00006702237252, .00007894974705, + .00006873053302, .00006140852014, .00008063861583, .00049768627977, + -.00014459096961, .00005957879915, .00003399284419, -.00001685000965, + .00118841294164, .00010083007806, .00010873982024, .00009325616707, + -.00004877888958, -.00018456360114, -.00014147359908, -.00017236995151, + -.00461299505884, .00002019058603, -.00001655549147, -6.395965046e-06, + -1.479558927e-06, .00010083007806, .00097319973162, 2.333629833e-06, + -4.248036020e-06, .00008163368686, .00002820282959, .00011655528757, + 7.760937245e-06, .00072275206747, .00001336734613, -.00001195619881, + .0000435948215, .00006527491612, .00010873982024, 2.333629833e-06, + .00311094180023, .00084251830998, .00085523021811, .00088395985737, + .00073955611238, .00081093327517, .00006074095578, -.00010913386703, + .00001472288594, .00006649766331, .00006702237252, .00009325616707, + -4.248036020e-06, .00084251830998, .00275288708387, .00091570803079, + .00088036592189, .00076528306455, .00094679625072, -.00115054519119, + -.00009506780295, -.00001658590268, .00002517829331, .00007894974705, + -.00004877888958, .00008163368686, .00085523021811, .00091570803079, + .00270513613238, .00108631323884, .00099102785739, .001210360841, + .00183013017674, .00003349014856, -.00007381330893, 2.389654105e-06, + .00006873053302, -.00018456360114, .00002820282959, .00088395985737, + .00088036592189, .00108631323884, .00363328182164, .00117418056612, + .00137311157915, .0060943003149, -.00026522208782, -.00002252874265, + -.00012997216713, .00006140852014, -.00014147359908, .00011655528757, + .00073955611238, .00076528306455, .00099102785739, .00117418056612, + .00298272813224, .00174532225739, .0048868116328, -.00059037802467, + .00001745462689, -.00014131961558, .00008063861583, -.00017236995151, + 7.760937245e-06, .00081093327517, .00094679625072, .001210360841, + .00137311157915, .00174532225739, .00332682707186, .00491674011099, + .0023409013939, -.00128162250166, -.00098746812283, .00049768627977, + -.00461299505884, .00072275206747, .00006074095578, -.00115054519119, + .00183013017674, .0060943003149, .0048868116328, .00491674011099, + .101226817562]).reshape(13, 13) + +cov_colnames = param_names + +cov_rownames = param_names + + +# not autogenerated +# calculated with `ivendog` after ivreg2 +hausman = dict( + df_r=743, + df=2, + WHFp=1.47099195224e-16, + WHF=38.30408858936179, + DWHp=4.12270104038e-16, + DWH=70.84970589405181 +) + +results_small = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + hausman=hausman, + **est +) + + +est = dict( + N=758, + inexog_ct=10, + exexog_ct=4, + endog_ct=2, + partial_ct=0, + df_r=745, + df_m=12, + sdofminus=0, + dofminus=0, + r2=.2279825291623523, + rmse=.3799175840045295, + rss=107.5313411236999, + mss=31.75480871825532, + r2_a=.2155473484240278, + F=40.08955571761724, + Fp=1.50331141073e-72, + Fdf1=12, + Fdf2=745, + yy=24652.2466174172, + yyc=139.2861498419552, + partialcons=0, + cons=1, + cdf=12.55161416131593, + widstat=11.46142788662503, + cd=.0675726199801665, + idp=6.77658650925e-09, + iddf=3, + idstat=40.92698219921901, + jp=.0030253131145893, + jdf=2, + j=11.60148136780177, + ll=-335.4059158173529, + rankV=13, + rankS=15, + rankxx=13, + rankzz=15, + r2c=.2279825291623523, + r2u=.9956380713371686, + hacsubtitleV="Statistics robust to heteroskedasticity", + hacsubtitleB="Estimates efficient for homoskedasticity only", + title="IV (2SLS) estimation", + predict="ivreg2_p", + version="02.2.08", + cmdline="ivreg2 lw expr tenure rns smsa dyear* (s iq=med kww age mrt), small robust", # noqa:E501 + cmd="ivreg2", + model="iv", + depvar="lw", + vcetype="Robust", + partialsmall="small", + small="small", + exexog="med kww age mrt", + inexog="expr tenure rns smsa dyear_67 dyear_68 dyear_69 dyear_70 dyear_71 dyear_73", # noqa:E501 + insts="med kww age mrt expr tenure rns smsa dyear_67 dyear_68 dyear_69 dyear_70 dyear_71 dyear_73", # noqa:E501 + instd="s iq", + properties="b V", +) + +params_table = np.array([ + .17242531190423, .02091963554158, 8.2422713130704, 7.602390656e-16, + .13135685967055, .21349376413792, 745, 1.9631533327653, + 0, -.00909883103476, .00492868646034, -1.8460965427549, + .06527471189517, -.01877459828554, .00057693621602, 745, + 1.9631533327653, 0, .04928948974574, .00811972711081, + 6.0703382112603, 2.032123371e-09, .03334922040701, .06522975908447, + 745, 1.9631533327653, 0, .04221709210309, + .0095458460509, 4.4225615915015, .00001120706314, .0234771326142, + .06095705159197, 745, 1.9631533327653, 0, + -.10179345001799, .0340033743578, -2.9936278954812, .00284801771574, + -.16854728771377, -.03503961232222, 745, 1.9631533327653, + 0, .12611094946923, .03107904208149, 4.057748920915, + .00005477891606, .0650980244278, .18712387451065, 745, + 1.9631533327653, 0, -.05961710621535, .05216296564028, + -1.1429010119263, .25344683532742, -.16202100605898, .04278679362828, + 745, 1.9631533327653, 0, .04867955999401, + .05024595634484, .96882542467533, .33294671206223, -.04996095666234, + .14732007665036, 745, 1.9631533327653, 0, + .15281763322545, .04834485710231, 3.1609904834768, .00163599246861, + .05790926588299, .24772600056791, 745, 1.9631533327653, + 0, .17443605148569, .06165614610562, 2.8291753945643, + .00479228267652, .05339558277297, .2954765201984, 745, + 1.9631533327653, 0, .09166596656323, .05594360469515, + 1.638542368922, .10173082236229, -.01815990744096, .20149184056742, + 745, 1.9631533327653, 0, .09323976497853, + .06137760691084, 1.5191169820938, .12915730016675, -.02725388858564, + .21373341854271, 745, 1.9631533327653, 0, + 4.0335098946211, .33794335658841, 11.935461419748, 3.577808889e-30, + 3.3700752678487, 4.6969445213936, 745, 1.9631533327653, + 0]).reshape(13, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = param_names + +cov = np.array([ + .00043763115119, -.00007958438537, .00002863778986, .00001496321982, + -.00018453787082, -8.550864865e-06, -.0001185286492, -.00019431868638, + -.00012891699672, -.00008824260285, -.00031897080643, -.0006359997119, + .00263218578127, -.00007958438537, .00002429195022, 4.997376715e-06, + -.00001117849889, .00006733963701, -.00002196338101, 8.249019125e-07, + .00003312119623, -.0000218044746, -.00006079620995, -.00001426851928, + .00001410067206, -.00145119299411, .00002863778986, 4.997376715e-06, + .00006592996835, -.00002012308078, .00005199457086, -.00003289221373, + .00003620055764, .00008731531776, .00003013530738, .00001504503258, + -.00008879845405, -.00013220917123, -.00095762480745, .00001496321982, + -.00001117849889, -.00002012308078, .00009112317683, -.000038508438, + 7.182733576e-06, .00008294199433, .00006458818434, .00011041870299, + .00009792126329, .00011012658665, .00009292324197, .00076092104218, + -.00018453787082, .00006733963701, .00005199457086, -.000038508438, + .00115622946772, .00013545834604, .00019371742478, .000203588175, + 7.317274626e-06, .00002369735603, -.00005176761775, .00009245129039, + -.00504399373059, -8.550864865e-06, -.00002196338101, -.00003289221373, + 7.182733576e-06, .00013545834604, .0009659068567, .00006303558567, + .00012016301635, .00025950456399, .00011274488624, .00030660513471, + .00031212041314, .00158010341555, -.0001185286492, 8.249019125e-07, + .00003620055764, .00008294199433, .00019371742478, .00006303558567, + .00272097498439, .0008763833685, .000936230107, .00097234969671, + .0009024844391, .00104679250917, .00032228914613, -.00019431868638, + .00003312119623, .00008731531776, .00006458818434, .000203588175, + .00012016301635, .0008763833685, .00252465612901, .00094650107881, + .0008930540954, .00082494813305, .00095933828863, -.00210700630956, + -.00012891699672, -.0000218044746, .00003013530738, .00011041870299, + 7.317274626e-06, .00025950456399, .000936230107, .00094650107881, + .00233722520824, .0011975566966, .00111394872039, .00131507937389, + .00254447447521, -.00008824260285, -.00006079620995, .00001504503258, + .00009792126329, .00002369735603, .00011274488624, .00097234969671, + .0008930540954, .0011975566966, .0038014803526, .00125650121313, + .00157186205549, .00611293275102, -.00031897080643, -.00001426851928, + -.00008879845405, .00011012658665, -.00005176761775, .00030660513471, + .0009024844391, .00082494813305, .00111394872039, .00125650121313, + .00312968690629, .00184349552167, .0043840308983, -.0006359997119, + .00001410067206, -.00013220917123, .00009292324197, .00009245129039, + .00031212041314, .00104679250917, .00095933828863, .00131507937389, + .00157186205549, .00184349552167, .0037672106301, .00544245897816, + .00263218578127, -.00145119299411, -.00095762480745, .00076092104218, + -.00504399373059, .00158010341555, .00032228914613, -.00210700630956, + .00254447447521, .00611293275102, .0043840308983, .00544245897816, + .11420571226224]).reshape(13, 13) + +cov_colnames = param_names + +cov_rownames = param_names + + +results_small_robust = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) + + +est = dict( + N=758, + inexog_ct=10, + exexog_ct=4, + endog_ct=2, + partial_ct=0, + df_m=12, + sdofminus=0, + dofminus=0, + r2=.2168305947462866, + rmse=.3793562300139549, + rss=109.0846511318037, + mss=30.20149871015154, + r2_a=.2042157855341463, + F=41.97598961240392, + Fp=1.89290505854e-75, + Fdf1=12, + Fdf2=745, + yy=24652.2466174172, + yyc=139.2861498419552, + r2u=.995575062475047, + partialcons=0, + cons=1, + cdf=12.55161416131593, + widstat=11.46142788662503, + cd=.0675726199801665, + idp=6.77658650925e-09, + iddf=3, + idstat=40.92698219921901, + jp=.0030253131145893, + jdf=2, + j=11.60148136780177, + ll=-340.8414755627023, + rankV=13, + rankS=15, + rankxx=13, + rankzz=15, + r2c=.2168305947462866, + hacsubtitleV="Statistics robust to heteroskedasticity", + hacsubtitleB="Estimates efficient for arbitrary heteroskedasticity", + title="2-Step GMM estimation", + predict="ivreg2_p", + version="02.2.08", + cmdline="ivreg2 lw expr tenure rns smsa dyear* (s iq=med kww age mrt), gmm2s robust", # noqa:E501 + cmd="ivreg2", + model="gmm2s", + depvar="lw", + vcetype="Robust", + partialsmall="small", + exexog="med kww age mrt", + inexog="expr tenure rns smsa dyear_67 dyear_68 dyear_69 dyear_70 dyear_71 dyear_73", # noqa:E501 + insts="med kww age mrt expr tenure rns smsa dyear_67 dyear_68 dyear_69 dyear_70 dyear_71 dyear_73", # noqa:E501 + instd="s iq", + properties="b V", +) + +params_table = np.array([ + .17579576800916, .02067662557145, 8.5021498020418, 1.861114268e-17, + .13527032656731, .21632120945101, np.nan, 1.9599639845401, + 0, -.00928615655484, .00488241935929, -1.9019579989933, + .05717664576009, -.01885552265647, .00028320954679, np.nan, + 1.9599639845401, 0, .0502827590727, .00804384217519, + 6.251087226427, 4.076051363e-10, .03451711811201, .06604840003339, + np.nan, 1.9599639845401, 0, .04252138311207, + .00945488880069, 4.4972906618407, 6.882486994e-06, .0239901415849, + .06105262463925, np.nan, 1.9599639845401, 0, + -.10409306761385, .03352385821237, -3.105044382255, .00190250475151, + -.16979862233293, -.03838751289477, np.nan, 1.9599639845401, + 0, .12475123235604, .03077474836143, 4.0536881371349, + .00005041641801, .06443383393436, .18506863077773, np.nan, + 1.9599639845401, 0, -.05304317352459, .05146091261443, + -1.0307468490116, .30265954893659, -.15390470886044, .04781836181126, + np.nan, 1.9599639845401, 0, .04595459037414, + .04957352345681, .92699867126001, .35392722417214, -.05120773018796, + .14311691093625, np.nan, 1.9599639845401, 0, + .15548006234452, .04763105506, 3.264258206094, .00109751095685, + .06212490988128, .24883521480777, np.nan, 1.9599639845401, + 0, .16698745539298, .06100058345996, 2.7374730850337, + .00619131861175, .04742850877554, .28654640201043, np.nan, + 1.9599639845401, 0, .08464846645323, .05540348923564, + 1.5278544297672, .12654868468826, -.02394037706648, .19323730997294, + np.nan, 1.9599639845401, 0, .09960684400937, + .06070338085689, 1.6408780302402, .10082273637942, -.01936959620995, + .2185832842287, np.nan, 1.9599639845401, 0, + 4.0039243729942, .33484233500232, 11.957640819123, 5.922056626e-33, + 3.3476454558904, 4.6602032900981, np.nan, 1.9599639845401, + 0]).reshape(13, 9) + +params_table_colnames = 'b se z pvalue ll ul df crit eform'.split() + +params_table_rownames = param_names + +cov = np.array([ + .00042752284502, -.00007792910934, .00002799053689, .00001411255161, + -.00017627354771, -6.164167361e-06, -.00011238067476, -.0001840592946, + -.00012075971225, -.00008045016526, -.00030956302647, -.00062213915849, + .0025864317125, -.00007792910934, .0000238380188, 4.908457545e-06, + -.0000109083863, .00006550360735, -.00002187678826, 4.129956698e-08, + .00003161755605, -.00002236410253, -.00006047183643, -.0000144130349, + .00001326368633, -.00142544425011, .00002799053689, 4.908457545e-06, + .00006470339694, -.00001976276105, .00005093819277, -.0000323622135, + .00003452531659, .00008555059005, .0000288422901, .00001508898973, + -.00008682961428, -.00013087868262, -.00093791708189, .00001411255161, + -.0000109083863, -.00001976276105, .00008939492223, -.00003640760589, + 7.669817608e-06, .00008322349071, .00006546263505, .00011054793547, + .00009771882719, .00010901321979, .0000926582973, .00074577978354, + -.00017627354771, .00006550360735, .00005093819277, -.00003640760589, + .00112384906944, .00012782990916, .0001752536517, .00018281146997, + -.00001062129812, .0000105829103, -.00005745271672, .00007901951626, + -.00493822443862, -6.164167361e-06, -.00002187678826, -.0000323622135, + 7.669817608e-06, .00012782990916, .00094708513671, .00005587818268, + .0001108109152, .00024772966236, .00010526192189, .00029836672951, + .0003020559345, .00155999842113, -.00011238067476, 4.129956698e-08, + .00003452531659, .00008322349071, .0001752536517, .00005587818268, + .00264822552711, .00084013008538, .00089372787896, .00094462335409, + .00088393735147, .00100740924129, .00036769011237, -.0001840592946, + .00003161755605, .00008555059005, .00006546263505, .00018281146997, + .0001108109152, .00084013008538, .00245753422792, .00090550111616, + .00086043845508, .00080197738555, .00092623266791, -.00204303139567, + -.00012075971225, -.00002236410253, .0000288422901, .00011054793547, + -.00001062129812, .00024772966236, .00089372787896, .00090550111616, + .00226871740613, .00116169566043, .00108859648529, .00127118636737, + .00254572878148, -.00008045016526, -.00006047183643, .00001508898973, + .00009771882719, .0000105829103, .00010526192189, .00094462335409, + .00086043845508, .00116169566043, .00372107118246, .00122563410541, + .00153681917159, .00601243235865, -.00030956302647, -.0000144130349, + -.00008682961428, .00010901321979, -.00005745271672, .00029836672951, + .00088393735147, .00080197738555, .00108859648529, .00122563410541, + .00306954661948, .00181011399651, .00430171295221, -.00062213915849, + .00001326368633, -.00013087868262, .0000926582973, .00007901951626, + .0003020559345, .00100740924129, .00092623266791, .00127118636737, + .00153681917159, .00181011399651, .00368490044746, .00539258837124, + .0025864317125, -.00142544425011, -.00093791708189, .00074577978354, + -.00493822443862, .00155999842113, .00036769011237, -.00204303139567, + .00254572878148, .00601243235865, .00430171295221, .00539258837124, + .11211938930981]).reshape(13, 13) + +cov_colnames = param_names + +cov_rownames = param_names + + +results_gmm2s_robust = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + **est +) diff --git a/statsmodels/sandbox/regression/tests/test_gmm.py b/statsmodels/sandbox/regression/tests/test_gmm.py new file mode 100644 index 0000000..3be2c19 --- /dev/null +++ b/statsmodels/sandbox/regression/tests/test_gmm.py @@ -0,0 +1,815 @@ +# -*- coding: utf-8 -*- +""" + +Created on Fri Oct 04 13:19:01 2013 + +Author: Josef Perktold +""" +from __future__ import print_function +from statsmodels.compat.python import lrange, lmap + +import copy + +import pytest +import numpy as np +from numpy.testing import assert_allclose, assert_equal +import pandas as pd + +from statsmodels import iolib +from statsmodels.tools.tools import add_constant +from statsmodels.regression.linear_model import OLS +import statsmodels.sandbox.regression.gmm as gmm + + +def get_griliches76_data(): + import os + curdir = os.path.split(__file__)[0] + path = os.path.join(curdir, 'griliches76.dta') + with pytest.warns(FutureWarning): + griliches76_data = iolib.genfromdta(path, missing_flt=np.NaN, + pandas=True) + + # create year dummies + years = griliches76_data['year'].unique() + N = griliches76_data.shape[0] + + for yr in years: + griliches76_data['D_%i' % yr] = np.zeros(N) + for i in range(N): + if griliches76_data.loc[griliches76_data.index[i], 'year'] == yr: + griliches76_data.loc[griliches76_data.index[i], 'D_%i' % yr] = 1 + else: + pass + + griliches76_data['const'] = 1 + + X = add_constant(griliches76_data[['s', 'iq', 'expr', 'tenure', 'rns', + 'smsa', 'D_67', 'D_68', 'D_69', 'D_70', + 'D_71', 'D_73']], + #prepend=False) # for Stata comparison + prepend=True) # for R comparison + + Z = add_constant(griliches76_data[['expr', 'tenure', 'rns', 'smsa', \ + 'D_67', 'D_68', 'D_69', 'D_70', 'D_71', + 'D_73', 'med', 'kww', 'age', 'mrt']]) + Y = griliches76_data['lw'] + + return Y, X, Z + +# use module global to load only once +yg_df, xg_df, zg_df = get_griliches76_data() + +endog = np.asarray(yg_df, dtype=float) # TODO: why is yg_df float32 +exog, instrument = lmap(np.asarray, [xg_df, zg_df]) + +assert exog.dtype == np.float64 +assert instrument.dtype == np.float64 + + +# from R +#----------------- +varnames = np.array(["(Intercept)", "s", "iq", "expr", "tenure", "rns", "smsa", "D_67", "D_68", "D_69", "D_70", + "D_71", "D_73"]) +params = np.array([ 4.03350989, 0.17242531, -0.00909883, 0.04928949, 0.04221709, + -0.10179345, 0.12611095, -0.05961711, 0.04867956, 0.15281763, + 0.17443605, 0.09166597, 0.09323977]) +bse = np.array([ 0.31816162, 0.02091823, 0.00474527, 0.00822543, 0.00891969, + 0.03447337, 0.03119615, 0.05577582, 0.05246796, 0.05201092, + 0.06027671, 0.05461436, 0.05767865]) +tvalues = np.array([ 12.6775501, 8.2428242, -1.9174531, 5.9923305, 4.7330205, + -2.9528144, 4.0425165, -1.0688701, 0.9277959, 2.9381834, + 2.8939212, 1.6784225, 1.6165385]) +pvalues = np.array([ 1.72360000e-33, 7.57025400e-16, 5.55625000e-02, + 3.21996700e-09, 2.64739100e-06, 3.24794100e-03, + 5.83809900e-05, 2.85474400e-01, 3.53813900e-01, + 3.40336100e-03, 3.91575100e-03, 9.36840200e-02, + 1.06401300e-01]) + #----------------- + +def test_iv2sls_r(): + + mod = gmm.IV2SLS(endog, exog, instrument) + res = mod.fit() + + # print(res.params) + # print(res.params - params) + + n, k = exog.shape + + assert_allclose(res.params, params, rtol=1e-7, atol=1e-9) + # TODO: check df correction + #assert_allclose(res.bse * np.sqrt((n - k) / (n - k - 1.)), bse, + assert_allclose(res.bse, bse, rtol=0, atol=3e-7) + + # GH 3849 + assert not hasattr(mod, '_results') + + + +def test_ivgmm0_r(): + n, k = exog.shape + nobs, k_instr = instrument.shape + + w0inv = np.dot(instrument.T, instrument) / nobs + w0 = np.linalg.inv(w0inv) + + mod = gmm.IVGMM(endog, exog, instrument) + res = mod.fit(np.ones(exog.shape[1], float), maxiter=0, inv_weights=w0inv, + optim_method='bfgs', + optim_args={'gtol':1e-8, 'disp': 0}) + + + assert_allclose(res.params, params, rtol=1e-4, atol=1e-4) + # TODO : res.bse and bse are not the same, rtol=0.09 is large in this case + #res.bse is still robust?, bse is not a sandwich ? + assert_allclose(res.bse, bse, rtol=0.09, atol=0) + + score = res.model.score(res.params, w0) + assert_allclose(score, np.zeros(score.shape), rtol=0, atol=5e-6) # atol=1e-8) ?? + + +def test_ivgmm1_stata(): + + # copied constant to the beginning + params_stata = np.array( + [ 4.0335099 , 0.17242531, -0.00909883, 0.04928949, 0.04221709, + -0.10179345, 0.12611095, -0.05961711, 0.04867956, 0.15281763, + 0.17443605, 0.09166597, 0.09323976]) + + # robust bse with gmm onestep + bse_stata = np.array( + [ 0.33503289, 0.02073947, 0.00488624, 0.0080498 , 0.00946363, + 0.03371053, 0.03081138, 0.05171372, 0.04981322, 0.0479285 , + 0.06112515, 0.0554618 , 0.06084901]) + + n, k = exog.shape + nobs, k_instr = instrument.shape + + w0inv = np.dot(instrument.T, instrument) / nobs + w0 = np.linalg.inv(w0inv) + start = OLS(endog, exog).fit().params + + mod = gmm.IVGMM(endog, exog, instrument) + res = mod.fit(start, maxiter=1, inv_weights=w0inv, optim_method='bfgs', optim_args={'gtol':1e-6, 'disp': 0}) + + +# move constant to end for Stata +idx = lrange(len(params)) +idx = idx[1:] + idx[:1] +exog_st = exog[:, idx] + + +class TestGMMOLS(object): + + @classmethod + def setup_class(cls): + exog = exog_st # with const at end + res_ols = OLS(endog, exog).fit() + + # use exog as instrument + nobs, k_instr = exog.shape + w0inv = np.dot(exog.T, exog) / nobs + #w0 = np.linalg.inv(w0inv) + + mod = gmm.IVGMM(endog, exog, exog) + res = mod.fit(np.ones(exog.shape[1], float), maxiter=0, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-6, 'disp': 0}) + + cls.res1 = res + cls.res2 = res_ols + + + def test_basic(self): + res1, res2 = self.res1, self.res2 + # test both absolute and relative difference + assert_allclose(res1.params, res2.params, rtol=5e-4, atol=0) + assert_allclose(res1.params, res2.params, rtol=0, atol=1e-5) + + n = res1.model.exog.shape[0] + dffac = 1#np.sqrt((n - 1.) / n) # currently different df in cov calculation + assert_allclose(res1.bse * dffac, res2.HC0_se, rtol=5e-6, atol=0) + assert_allclose(res1.bse * dffac, res2.HC0_se, rtol=0, atol=1e-7) + + + def test_other(self): + res1, res2 = self.res1, self.res2 + + + + +class CheckGMM(object): + + params_tol = [5e-6, 5e-6] + bse_tol = [5e-7, 5e-7] + + def test_basic(self): + res1, res2 = self.res1, self.res2 + # test both absolute and relative difference + rtol, atol = self.params_tol + assert_allclose(res1.params, res2.params, rtol=rtol, atol=0) + assert_allclose(res1.params, res2.params, rtol=0, atol=atol) + + n = res1.model.exog.shape[0] + dffac = 1 #np.sqrt((n - 1.) / n) # currently different df in cov calculation + rtol, atol = self.bse_tol + assert_allclose(res1.bse * dffac, res2.bse, rtol=rtol, atol=0) + assert_allclose(res1.bse * dffac, res2.bse, rtol=0, atol=atol) + + #skip temporarily + def _est_other(self): + res1, res2 = self.res1, self.res2 + assert_allclose(res1.q, res2.Q, rtol=5e-6, atol=0) + assert_allclose(res1.jval, res2.J, rtol=5e-5, atol=0) + + + def test_hypothesis(self): + res1, res2 = self.res1, self.res2 + restriction = np.eye(len(res1.params)) + res_t = res1.t_test(restriction) + assert_allclose(res_t.tvalue, res1.tvalues, rtol=1e-12, atol=0) + assert_allclose(res_t.pvalue, res1.pvalues, rtol=1e-12, atol=0) + rtol, atol = self.bse_tol + assert_allclose(res_t.tvalue, res2.tvalues, rtol=rtol*10, atol=atol) + assert_allclose(res_t.pvalue, res2.pvalues, rtol=rtol*10, atol=atol) + + res_f = res1.f_test(restriction[:-1]) # without constant + # comparison with fvalue is not possible, those are not defined + # assert_allclose(res_f.fvalue, res1.fvalue, rtol=1e-12, atol=0) + # assert_allclose(res_f.pvalue, res1.f_pvalue, rtol=1e-12, atol=0) + # assert_allclose(res_f.fvalue, res2.F, rtol=1e-10, atol=0) + # assert_allclose(res_f.pvalue, res2.Fp, rtol=1e-08, atol=0) + + # Smoke test for Wald + res_wald = res1.wald_test(restriction[:-1]) + + @pytest.mark.smoke + def test_summary(self): + res1 = self.res1 + summ = res1.summary() + # len + 1 is for header line + assert_equal(len(summ.tables[1]), len(res1.params) + 1) + + def test_use_t(self): + # Copy to avoid cache + res1 = copy.deepcopy(self.res1) + res1.use_t = True + summ = res1.summary() + assert 'P>|t|' in str(summ) + assert 'P>|z|' not in str(summ) + + +class TestGMMSt1(CheckGMM): + + @classmethod + def setup_class(cls): + #cls.bse_tol = [5e-7, 5e-7] + # compare to Stata default options, iterative GMM + exog = exog_st # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + #w0 = np.linalg.inv(w0inv) + + mod = gmm.IVGMM(endog, exog, instrument) + res10 = mod.fit(start, maxiter=10, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-6, 'disp': 0}, + wargs={'centered':False}) + cls.res1 = res10 + + from .results_gmm_griliches_iter import results + cls.res2 = results + +class TestGMMStTwostep(CheckGMM): + #compares has_optimal_weights=True with Stata's has_optimal_weights=False + + @classmethod + def setup_class(cls): + # compare to Stata default options, twostep GMM + cls.params_tol = [5e-5, 5e-6] + cls.bse_tol = [5e-6, 5e-7] + exog = exog_st # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + #w0 = np.linalg.inv(w0inv) + + mod = gmm.IVGMM(endog, exog, instrument) + res10 = mod.fit(start, maxiter=2, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-6, 'disp': 0}, + wargs={'centered':False}) + cls.res1 = res10 + + from .results_gmm_griliches import results_twostep as results + cls.res2 = results + + +class TestGMMStTwostepNO(CheckGMM): + #with Stata default `has_optimal_weights=False` + + @classmethod + def setup_class(cls): + # compare to Stata default options, twostep GMM + cls.params_tol = [5e-5, 5e-6] + cls.bse_tol = [1e-6, 5e-5] + exog = exog_st # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + #w0 = np.linalg.inv(w0inv) + + mod = gmm.IVGMM(endog, exog, instrument) + res10 = mod.fit(start, maxiter=2, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-6, 'disp': 0}, + wargs={'centered':False}, has_optimal_weights=False) + cls.res1 = res10 + + from .results_gmm_griliches import results_twostep as results + cls.res2 = results + + +class TestGMMStOnestep(CheckGMM): + + @classmethod + def setup_class(cls): + # compare to Stata default options, onestep GMM + cls.params_tol = [5e-4, 5e-5] + cls.bse_tol = [7e-3, 5e-4] + exog = exog_st # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + #w0 = np.linalg.inv(w0inv) + + mod = gmm.IVGMM(endog, exog, instrument) + res = mod.fit(start, maxiter=0, inv_weights=w0inv, + optim_method='bfgs', + optim_args={'gtol':1e-6, 'disp': 0}) + cls.res1 = res + + from .results_gmm_griliches import results_onestep as results + cls.res2 = results + + def test_bse_other(self): + res1, res2 = self.res1, self.res2 + # try other versions for bse, + # TODO: next two produce the same as before (looks like) + bse = np.sqrt(np.diag((res1._cov_params(has_optimal_weights=False)))) + #weights=res1.weights)))) + # TODO: doesn't look different + #assert_allclose(res1.bse, res2.bse, rtol=5e-06, atol=0) + #nobs = instrument.shape[0] + #w0inv = np.dot(instrument.T, instrument) / nobs + q = self.res1.model.gmmobjective(self.res1.params, np.linalg.inv(self.res1.weights)) + #assert_allclose(q, res2.Q, rtol=5e-6, atol=0) + +class TestGMMStOnestepNO(CheckGMM): + # matches Stats's defaults wargs={'centered':False}, has_optimal_weights=False + + @classmethod + def setup_class(cls): + # compare to Stata default options, onestep GMM + cls.params_tol = [1e-5, 1e-6] + cls.bse_tol = [5e-6, 5e-7] + exog = exog_st # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + #w0 = np.linalg.inv(w0inv) + + mod = gmm.IVGMM(endog, exog, instrument) + res = mod.fit(start, maxiter=0, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-6, 'disp': 0}, + wargs={'centered':False}, has_optimal_weights=False) + cls.res1 = res + + from .results_gmm_griliches import results_onestep as results + cls.res2 = results + +class TestGMMStOneiter(CheckGMM): + + @classmethod + def setup_class(cls): + # compare to Stata default options, onestep GMM + # this uses maxiter=1, one iteration in loop + cls.params_tol = [5e-4, 5e-5] + cls.bse_tol = [7e-3, 5e-4] + exog = exog_st # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + #w0 = np.linalg.inv(w0inv) + + mod = gmm.IVGMM(endog, exog, instrument) + res = mod.fit(start, maxiter=1, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-6, 'disp': 0}) + cls.res1 = res + + from .results_gmm_griliches import results_onestep as results + cls.res2 = results + + + def test_bse_other(self): + res1, res2 = self.res1, self.res2 + + moms = res1.model.momcond(res1.params) + w = res1.model.calc_weightmatrix(moms) + # try other versions for bse, + # TODO: next two produce the same as before (looks like) + bse = np.sqrt(np.diag((res1._cov_params(has_optimal_weights=False, + weights=res1.weights)))) + # TODO: doesn't look different + #assert_allclose(res1.bse, res2.bse, rtol=5e-06, atol=0) + bse = np.sqrt(np.diag((res1._cov_params(has_optimal_weights=False)))) + #use_weights=True #weights=w + #assert_allclose(res1.bse, res2.bse, rtol=5e-06, atol=0) + + #This doesn't replicate Stata oneway either + nobs = instrument.shape[0] + w0inv = np.dot(instrument.T, instrument) / nobs + q = self.res1.model.gmmobjective(self.res1.params, w)#self.res1.weights) + #assert_allclose(q, res2.Q, rtol=5e-6, atol=0) + + +class TestGMMStOneiterNO(CheckGMM): + + @classmethod + def setup_class(cls): + # compare to Stata default options, onestep GMM + # this uses maxiter=1, one iteration in loop + cls.params_tol = [1e-5, 1e-6] + cls.bse_tol = [5e-6, 5e-7] + exog = exog_st # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + #w0 = np.linalg.inv(w0inv) + + mod = gmm.IVGMM(endog, exog, instrument) + res = mod.fit(start, maxiter=1, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-6, 'disp': 0}, + wargs={'centered':False}, has_optimal_weights=False) + cls.res1 = res + + from .results_gmm_griliches import results_onestep as results + cls.res2 = results + + +#------------ Crosscheck subclasses + +class TestGMMStOneiterNO_Linear(CheckGMM): + + @classmethod + def setup_class(cls): + # compare to Stata default options, onestep GMM + # this uses maxiter=1, one iteration in loop + cls.params_tol = [5e-9, 1e-9] + cls.bse_tol = [5e-10, 1e-10] + exog = exog_st # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + #w0 = np.linalg.inv(w0inv) + + mod = gmm.LinearIVGMM(endog, exog, instrument) + res = mod.fit(start, maxiter=1, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-8, 'disp': 0}, + wargs={'centered':False}, has_optimal_weights=False) + cls.res1 = res + + mod = gmm.IVGMM(endog, exog, instrument) + res = mod.fit(start, maxiter=1, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-6, 'disp': 0}, + wargs={'centered':False}, has_optimal_weights=False) + cls.res3 = res + + from .results_gmm_griliches import results_onestep as results + cls.res2 = results + + +class TestGMMStOneiterNO_Nonlinear(CheckGMM): + + @classmethod + def setup_class(cls): + # compare to Stata default options, onestep GMM + # this uses maxiter=1, one iteration in loop + cls.params_tol = [5e-5, 5e-6] + cls.bse_tol = [5e-6, 1e-1] + exog = exog_st # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + #w0 = np.linalg.inv(w0inv) + + def func(params, exog): + return np.dot(exog, params) + + mod = gmm.NonlinearIVGMM(endog, exog, instrument, func) + res = mod.fit(start, maxiter=1, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-8, 'disp': 0}, + wargs={'centered':False}, has_optimal_weights=False) + cls.res1 = res + + mod = gmm.IVGMM(endog, exog, instrument) + res = mod.fit(start, maxiter=1, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-6, 'disp': 0}, + wargs={'centered':False}, has_optimal_weights=False) + cls.res3 = res + + from .results_gmm_griliches import results_onestep as results + cls.res2 = results + + + def test_score(self): + params = self.res1.params * 1.1 + weights = self.res1.weights + sc1 = self.res1.model.score(params, weights) + sc2 = super(self.res1.model.__class__, self.res1.model).score(params, + weights) + assert_allclose(sc1, sc2, rtol=1e-6, atol=0) + assert_allclose(sc1, sc2, rtol=0, atol=1e-7) + + # score at optimum + sc1 = self.res1.model.score(self.res1.params, weights) + assert_allclose(sc1, np.zeros(len(params)), rtol=0, atol=1e-8) + + + +class TestGMMStOneiterOLS_Linear(CheckGMM): + + @classmethod + def setup_class(cls): + # replicating OLS by GMM - high agreement + cls.params_tol = [1e-11, 1e-12] + cls.bse_tol = [1e-12, 1e-12] + exog = exog_st # with const at end + res_ols = OLS(endog, exog).fit() + #Note: start is irrelevant but required + start = np.ones(len(res_ols.params)) + nobs, k_instr = instrument.shape + w0inv = np.dot(exog.T, exog) / nobs + #w0 = np.linalg.inv(w0inv) + + mod = gmm.LinearIVGMM(endog, exog, exog) + res = mod.fit(start, maxiter=0, inv_weights=w0inv, + #optim_method='bfgs', optim_args={'gtol':1e-6, 'disp': 0}, + optim_args={'disp': 0}, + weights_method='iid', + wargs={'centered':False, 'ddof':'k_params'}, + has_optimal_weights=True) + + # fix use of t distribution see #2495 comment + res.use_t = True + res.df_resid = res.nobs - len(res.params) + cls.res1 = res + + #from .results_gmm_griliches import results_onestep as results + #cls.res2 = results + cls.res2 = res_ols + + +#------------------ + +class TestGMMSt2(object): + # this looks like an old version, trying out different comparisons + # of options with Stats + + @classmethod + def setup_class(cls): + # compare to Stata default options, iterative GMM + exog = exog_st # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + #w0 = np.linalg.inv(w0inv) + + mod = gmm.IVGMM(endog, exog, instrument) + res = mod.fit(start, maxiter=2, inv_weights=w0inv, + wargs={'ddof':0, 'centered':False}, + optim_method='bfgs', optim_args={'gtol':1e-6, 'disp': 0}) + cls.res1 = res + + from .results_ivreg2_griliches import results_gmm2s_robust as results + cls.res2 = results + + # TODO: remove after testing, compare bse from 1 iteration + # see test_basic + mod = gmm.IVGMM(endog, exog, instrument) + res = mod.fit(start, maxiter=1, inv_weights=w0inv, + wargs={'ddof':0, 'centered':False}, + optim_method='bfgs', optim_args={'gtol':1e-6, 'disp': 0}) + cls.res3 = res + + + def test_basic(self): + res1, res2 = self.res1, self.res2 + # test both absolute and relative difference + assert_allclose(res1.params, res2.params, rtol=5e-05, atol=0) + assert_allclose(res1.params, res2.params, rtol=0, atol=5e-06) + + n = res1.model.exog.shape[0] + # TODO: check df correction np.sqrt(745./758 )*res1.bse matches better + dffact = np.sqrt(745. / 758 ) + assert_allclose(res1.bse * dffact, res2.bse, rtol=5e-03, atol=0) + assert_allclose(res1.bse * dffact, res2.bse, rtol=0, atol=5e-03) + + # try other versions for bse, + # TODO: next two produce the same as before (looks like) + bse = np.sqrt(np.diag((res1._cov_params(has_optimal_weights=True, + weights=res1.weights)))) + assert_allclose(res1.bse, res2.bse, rtol=5e-01, atol=0) + + bse = np.sqrt(np.diag((res1._cov_params(has_optimal_weights=True, + weights=res1.weights, + use_weights=True)))) + assert_allclose(res1.bse, res2.bse, rtol=5e-02, atol=0) + + # TODO: resolve this + # try bse from previous step, is closer to Stata + # guess: Stata ivreg2 doesn't calc for bse update after final iteration + # need better test case, bse difference is close to numerical optimization precision + assert_allclose(self.res3.bse, res2.bse, rtol=5e-05, atol=0) + assert_allclose(self.res3.bse, res2.bse, rtol=0, atol=5e-06) + + + + # TODO; tvalues are not available yet, no inheritance + #assert_allclose(res1.tvalues, res2.tvalues, rtol=5e-10, atol=0) + + + + +class CheckIV2SLS(object): + + def test_basic(self): + res1, res2 = self.res1, self.res2 + # test both absolute and relative difference + assert_allclose(res1.params, res2.params, rtol=1e-9, atol=0) + assert_allclose(res1.params, res2.params, rtol=0, atol=1e-10) + + n = res1.model.exog.shape[0] + assert_allclose(res1.bse, res2.bse, rtol=1e-10, atol=0) + assert_allclose(res1.bse, res2.bse, rtol=0, atol=1e-11) + + assert_allclose(res1.tvalues, res2.tvalues, rtol=5e-10, atol=0) + + + def test_other(self): + res1, res2 = self.res1, self.res2 + assert_allclose(res1.rsquared, res2.r2, rtol=1e-7, atol=0) + assert_allclose(res1.rsquared_adj, res2.r2_a, rtol=1e-7, atol=0) + + # TODO: why is fvalue different, IV2SLS uses inherited linear + assert_allclose(res1.fvalue, res2.F, rtol=1e-10, atol=0) + assert_allclose(res1.f_pvalue, res2.Fp, rtol=1e-8, atol=0) + assert_allclose(np.sqrt(res1.mse_resid), res2.rmse, rtol=1e-10, atol=0) + assert_allclose(res1.ssr, res2.rss, rtol=1e-10, atol=0) + assert_allclose(res1.uncentered_tss, res2.yy, rtol=1e-10, atol=0) + assert_allclose(res1.centered_tss, res2.yyc, rtol=1e-10, atol=0) + assert_allclose(res1.ess, res2.mss, rtol=1e-9, atol=0) + + assert_equal(res1.df_model, res2.df_m) + assert_equal(res1.df_resid, res2.df_r) + + # TODO: llf raise NotImplementedError + #assert_allclose(res1.llf, res2.ll, rtol=1e-10, atol=0) + + + def test_hypothesis(self): + res1, res2 = self.res1, self.res2 + restriction = np.eye(len(res1.params)) + res_t = res1.t_test(restriction) + assert_allclose(res_t.tvalue, res1.tvalues, rtol=1e-12, atol=0) + assert_allclose(res_t.pvalue, res1.pvalues, rtol=1e-12, atol=0) + res_f = res1.f_test(restriction[:-1]) # without constant + # TODO res1.fvalue problem, see issue #1104 + assert_allclose(res_f.fvalue, res1.fvalue, rtol=1e-12, atol=0) + assert_allclose(res_f.pvalue, res1.f_pvalue, rtol=1e-10, atol=0) + assert_allclose(res_f.fvalue, res2.F, rtol=1e-10, atol=0) + assert_allclose(res_f.pvalue, res2.Fp, rtol=1e-08, atol=0) + + def test_hausman(self): + res1, res2 = self.res1, self.res2 + hausm = res1.spec_hausman() + # hausman uses se2 = ssr / nobs, no df correction + assert_allclose(hausm[0], res2.hausman['DWH'], rtol=1e-11, atol=0) + assert_allclose(hausm[1], res2.hausman['DWHp'], rtol=1e-10, atol=1e-25) + + @pytest.mark.smoke + def test_summary(self): + res1 = self.res1 + summ = res1.summary() + assert_equal(len(summ.tables[1]), len(res1.params) + 1) + + +class TestIV2SLSSt1(CheckIV2SLS): + + @classmethod + def setup_class(cls): + exog = exog_st # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + + mod = gmm.IV2SLS(endog, exog, instrument) + res = mod.fit() + cls.res1 = res + + from .results_ivreg2_griliches import results_small as results + cls.res2 = results + + + # See GH #2720 + def test_input_dimensions(self): + rs = np.random.RandomState(1234) + x = rs.randn(200, 2) + z = rs.randn(200) + x[:, 0] = np.sqrt(0.5) * x[:, 0] + np.sqrt(0.5) * z + z = np.column_stack((x[:, [1]], z[:, None])) + e = np.sqrt(0.5) * rs.randn(200) + np.sqrt(0.5) * x[:, 0] + + y_1d = y = x[:, 0] + x[:, 1] + e + y_2d = y[:, None] + y_series = pd.Series(y) + y_df = pd.DataFrame(y_series) + x_1d = x[:, 0] + x_2d = x + x_df = pd.DataFrame(x) + x_df_single = x_df.iloc[:, [0]] + x_series = x_df.iloc[:, 0] + z_2d = z + z_series = pd.Series(z[:, 1]) + z_1d = z_series.values + z_df = pd.DataFrame(z) + + ys = (y_df, y_series, y_2d, y_1d) + xs = (x_2d, x_1d, x_df_single, x_df, x_series) + zs = (z_1d, z_2d, z_series, z_df) + res2 = gmm.IV2SLS(y_1d, x_2d, z_2d).fit() + res1 = gmm.IV2SLS(y_1d, x_1d, z_1d).fit() + res1_2sintr = gmm.IV2SLS(y_1d, x_1d, z_2d).fit() + + + for _y in ys: + for _x in xs: + for _z in zs: + x_1d = np.size(_x) == _x.shape[0] + z_1d = np.size(_z) == _z.shape[0] + if z_1d and not x_1d: + continue + res = gmm.IV2SLS(_y, _x, _z).fit() + if z_1d: + assert_allclose(res.params, res1.params) + elif x_1d and not z_1d: + assert_allclose(res.params, res1_2sintr.params) + else: + assert_allclose(res.params, res2.params) + +def test_noconstant(): + exog = exog_st[:, :-1] # with const removed at end + + mod = gmm.IV2SLS(endog, exog, instrument) + res = mod.fit() + + assert_equal(res.fvalue, np.nan) + # smoke test + summ = res.summary() + assert_equal(len(summ.tables[1]), len(res.params) + 1) + + +def test_gmm_basic(): + # this currently tests mainly the param names, exog_names + # see #4340 + cd = np.array([1.5, 1.5, 1.7, 2.2, 2.0, 1.8, 1.8, 2.2, 1.9, 1.6, 1.8, 2.2, + 2.0, 1.5, 1.1, 1.5, 1.4, 1.7, 1.42, 1.9]) + dcd = np.array([0, 0.2 ,0.5, -0.2, -0.2, 0, 0.4, -0.3, -0.3, 0.2, 0.4, + -0.2, -0.5, -0.4, 0.4, -0.1, 0.3, -0.28, 0.48, 0.2]) + inst = np.column_stack((np.ones(len(cd)), cd)) + + class GMMbase(gmm.GMM): + def momcond(self, params): + p0, p1, p2, p3 = params + endog = self.endog[:, None] + exog = self.exog + inst = self.instrument + + mom0 = (endog - p0 - p1 * exog) * inst + mom1 = ((endog - p0 - p1 * exog)**2 - + p2 * (exog**(2 * p3)) / 12) * inst + g = np.column_stack((mom0, mom1)) + return g + + beta0 = np.array([0.1, 0.1, 0.01, 1]) + res = GMMbase(endog=dcd, exog=cd, instrument=inst, k_moms=4, + k_params=4).fit(beta0, optim_args={'disp': 0}) + summ = res.summary() + assert_equal(len(summ.tables[1]), len(res.params) + 1) + pnames = ['p%2d' % i for i in range(len(res.params))] + assert_equal(res.model.exog_names, pnames) + + # check set_param_names method + mod = GMMbase(endog=dcd, exog=cd, instrument=inst, k_moms=4, + k_params=4) + # use arbitrary names + pnames = ['beta', 'gamma', 'psi', 'phi'] + mod.set_param_names(pnames) + res1 = mod.fit(beta0, optim_args={'disp': 0}) + assert_equal(res1.model.exog_names, pnames) diff --git a/statsmodels/sandbox/regression/tests/test_gmm_poisson.py b/statsmodels/sandbox/regression/tests/test_gmm_poisson.py new file mode 100644 index 0000000..4adca8e --- /dev/null +++ b/statsmodels/sandbox/regression/tests/test_gmm_poisson.py @@ -0,0 +1,408 @@ +''' + +TestGMMMultTwostepDefault() has lower precision + +''' + +from statsmodels.compat.python import lmap +import numpy as np +import pandas +from scipy import stats +import pytest + +from statsmodels.regression.linear_model import OLS +from statsmodels.sandbox.regression import gmm + +from numpy.testing import assert_allclose, assert_equal + + +def get_data(): + import os + curdir = os.path.split(__file__)[0] + dt = pandas.read_csv(os.path.join(curdir, 'racd10data_with_transformed.csv')) + + # Transformations compared to original data + ##dt3['income'] /= 10. + ##dt3['aget'] = (dt3['age'] - dt3['age'].min()) / 5. + ##dt3['aget2'] = dt3['aget']**2 + + # How do we do this with pandas + mask = ~((np.asarray(dt['private']) == 1) & (dt['medicaid'] == 1)) + mask = mask & (dt['docvis'] <= 70) + dt3 = dt[mask] + dt3['const'] = 1 # add constant + return dt3 + +DATA = get_data() + +#------------- moment conditions for example + +def moment_exponential_add(params, exog, exp=True): + + if not np.isfinite(params).all(): + print("invalid params", params) + + # moment condition without instrument + if exp: + predicted = np.exp(np.dot(exog, params)) + #if not np.isfinite(predicted).all(): + #print "invalid predicted", predicted + #raise RuntimeError('invalid predicted') + predicted = np.clip(predicted, 0, 1e100) # try to avoid inf + else: + predicted = np.dot(exog, params) + + return predicted + + +def moment_exponential_mult(params, data, exp=True): + # multiplicative error model + + endog = data[:,0] + exog = data[:,1:] + + if not np.isfinite(params).all(): + print("invalid params", params) + + # moment condition without instrument + if exp: + predicted = np.exp(np.dot(exog, params)) + predicted = np.clip(predicted, 0, 1e100) # avoid inf + resid = endog / predicted - 1 + if not np.isfinite(resid).all(): + print("invalid resid", resid) + + else: + resid = endog - np.dot(exog, params) + + return resid + +#------------------- test classes + +# copied from test_gmm.py, with changes +class CheckGMM(object): + + # default tolerance, overwritten by subclasses + params_tol = [5e-6, 5e-6] + bse_tol = [5e-7, 5e-7] + q_tol = [5e-6, 1e-9] + j_tol = [5e-5, 1e-9] + + def test_basic(self): + res1, res2 = self.res1, self.res2 + # test both absolute and relative difference + rtol, atol = self.params_tol + assert_allclose(res1.params, res2.params, rtol=rtol, atol=0) + assert_allclose(res1.params, res2.params, rtol=0, atol=atol) + + rtol, atol = self.bse_tol + assert_allclose(res1.bse, res2.bse, rtol=rtol, atol=0) + assert_allclose(res1.bse, res2.bse, rtol=0, atol=atol) + + def test_other(self): + res1, res2 = self.res1, self.res2 + rtol, atol = self.q_tol + assert_allclose(res1.q, res2.Q, rtol=atol, atol=rtol) + rtol, atol = self.j_tol + assert_allclose(res1.jval, res2.J, rtol=atol, atol=rtol) + + j, jpval, jdf = res1.jtest() + # j and jval should be the same + assert_allclose(res1.jval, res2.J, rtol=13, atol=13) + #pvalue is not saved in Stata results + pval = stats.chi2.sf(res2.J, res2.J_df) + #assert_allclose(jpval, pval, rtol=1e-4, atol=1e-6) + assert_allclose(jpval, pval, rtol=rtol, atol=atol) + assert_equal(jdf, res2.J_df) + + @pytest.mark.smoke + def test_summary(self): + res1 = self.res1 + summ = res1.summary() + assert_equal(len(summ.tables[1]), len(res1.params) + 1) + + +class TestGMMAddOnestep(CheckGMM): + + @classmethod + def setup_class(cls): + XLISTEXOG2 = 'aget aget2 educyr actlim totchr'.split() + + endog_name = 'docvis' + exog_names = 'private medicaid'.split() + XLISTEXOG2 + ['const'] + instrument_names = 'income ssiratio'.split() + XLISTEXOG2 + ['const'] + + endog = DATA[endog_name] + exog = DATA[exog_names] + instrument = DATA[instrument_names] + + asarray = lambda x: np.asarray(x, float) + endog, exog, instrument = lmap(asarray, [endog, exog, instrument]) + + + cls.bse_tol = [5e-6, 5e-7] + q_tol = [0.04, 0] + # compare to Stata default options, iterative GMM + # with const at end + start = OLS(np.log(endog+1), exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + + mod = gmm.NonlinearIVGMM(endog, exog, instrument, moment_exponential_add) + res0 = mod.fit(start, maxiter=0, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-8, 'disp': 0}, + wargs={'centered':False}) + cls.res1 = res0 + + from .results_gmm_poisson import results_addonestep as results + cls.res2 = results + + +class TestGMMAddTwostep(CheckGMM): + + @classmethod + def setup_class(cls): + XLISTEXOG2 = 'aget aget2 educyr actlim totchr'.split() + + endog_name = 'docvis' + exog_names = 'private medicaid'.split() + XLISTEXOG2 + ['const'] + instrument_names = 'income ssiratio'.split() + XLISTEXOG2 + ['const'] + + endog = DATA[endog_name] + exog = DATA[exog_names] + instrument = DATA[instrument_names] + + asarray = lambda x: np.asarray(x, float) + endog, exog, instrument = lmap(asarray, [endog, exog, instrument]) + + + cls.bse_tol = [5e-6, 5e-7] + # compare to Stata default options, iterative GMM + # with const at end + start = OLS(np.log(endog+1), exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + + mod = gmm.NonlinearIVGMM(endog, exog, instrument, moment_exponential_add) + res0 = mod.fit(start, maxiter=2, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-8, 'disp': 0}, + wargs={'centered':False}, has_optimal_weights=False) + cls.res1 = res0 + + from .results_gmm_poisson import results_addtwostep as results + cls.res2 = results + + +class TestGMMMultOnestep(CheckGMM): + #compares has_optimal_weights=True with Stata's has_optimal_weights=False + + @classmethod + def setup_class(cls): + # compare to Stata default options, twostep GMM + XLISTEXOG2 = 'aget aget2 educyr actlim totchr'.split() + + endog_name = 'docvis' + exog_names = 'private medicaid'.split() + XLISTEXOG2 + ['const'] + instrument_names = 'income medicaid ssiratio'.split() + XLISTEXOG2 + ['const'] + + endog = DATA[endog_name] + exog = DATA[exog_names] + instrument = DATA[instrument_names] + + asarray = lambda x: np.asarray(x, float) + endog, exog, instrument = lmap(asarray, [endog, exog, instrument]) + + # Need to add all data into exog + endog_ = np.zeros(len(endog)) + exog_ = np.column_stack((endog, exog)) + + + cls.bse_tol = [5e-6, 5e-7] + cls.q_tol = [0.04, 0] + cls.j_tol = [0.04, 0] + # compare to Stata default options, iterative GMM + # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + + mod = gmm.NonlinearIVGMM(endog_, exog_, instrument, moment_exponential_mult) + res0 = mod.fit(start, maxiter=0, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-8, 'disp': 0}, + wargs={'centered':False}, has_optimal_weights=False) + cls.res1 = res0 + + from .results_gmm_poisson import results_multonestep as results + cls.res2 = results + +class TestGMMMultTwostep(CheckGMM): + #compares has_optimal_weights=True with Stata's has_optimal_weights=False + + @classmethod + def setup_class(cls): + # compare to Stata default options, twostep GMM + XLISTEXOG2 = 'aget aget2 educyr actlim totchr'.split() + + endog_name = 'docvis' + exog_names = 'private medicaid'.split() + XLISTEXOG2 + ['const'] + instrument_names = 'income medicaid ssiratio'.split() + XLISTEXOG2 + ['const'] + + endog = DATA[endog_name] + exog = DATA[exog_names] + instrument = DATA[instrument_names] + + asarray = lambda x: np.asarray(x, float) + endog, exog, instrument = lmap(asarray, [endog, exog, instrument]) + + # Need to add all data into exog + endog_ = np.zeros(len(endog)) + exog_ = np.column_stack((endog, exog)) + + + cls.bse_tol = [5e-6, 5e-7] + # compare to Stata default options, iterative GMM + # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + + mod = gmm.NonlinearIVGMM(endog_, exog_, instrument, moment_exponential_mult) + res0 = mod.fit(start, maxiter=2, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-8, 'disp': 0}, + wargs={'centered':False}, has_optimal_weights=False) + cls.res1 = res0 + + from .results_gmm_poisson import results_multtwostep as results + cls.res2 = results + + +class TestGMMMultTwostepDefault(CheckGMM): + # compares my defaults with the same options in Stata + # agreement is not very high, maybe vce(unadjusted) is different after all + + @classmethod + def setup_class(cls): + # compare to Stata default options, twostep GMM + XLISTEXOG2 = 'aget aget2 educyr actlim totchr'.split() + + endog_name = 'docvis' + exog_names = 'private medicaid'.split() + XLISTEXOG2 + ['const'] + instrument_names = 'income medicaid ssiratio'.split() + XLISTEXOG2 + ['const'] + + endog = DATA[endog_name] + exog = DATA[exog_names] + instrument = DATA[instrument_names] + + asarray = lambda x: np.asarray(x, float) + endog, exog, instrument = lmap(asarray, [endog, exog, instrument]) + + # Need to add all data into exog + endog_ = np.zeros(len(endog)) + exog_ = np.column_stack((endog, exog)) + + + cls.bse_tol = [0.004, 5e-4] + cls.params_tol = [5e-5, 5e-5] + # compare to Stata default options, iterative GMM + # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + + mod = gmm.NonlinearIVGMM(endog_, exog_, instrument, moment_exponential_mult) + res0 = mod.fit(start, maxiter=2, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-8, 'disp': 0}, + #wargs={'centered':True}, has_optimal_weights=True + ) + cls.res1 = res0 + + from .results_gmm_poisson import results_multtwostepdefault as results + cls.res2 = results + + +class TestGMMMultTwostepCenter(CheckGMM): + #compares my defaults with the same options in Stata + + @classmethod + def setup_class(cls): + # compare to Stata default options, twostep GMM + XLISTEXOG2 = 'aget aget2 educyr actlim totchr'.split() + + endog_name = 'docvis' + exog_names = 'private medicaid'.split() + XLISTEXOG2 + ['const'] + instrument_names = 'income medicaid ssiratio'.split() + XLISTEXOG2 + ['const'] + + endog = DATA[endog_name] + exog = DATA[exog_names] + instrument = DATA[instrument_names] + + asarray = lambda x: np.asarray(x, float) + endog, exog, instrument = lmap(asarray, [endog, exog, instrument]) + + # Need to add all data into exog + endog_ = np.zeros(len(endog)) + exog_ = np.column_stack((endog, exog)) + + + cls.bse_tol = [5e-4, 5e-5] + cls.params_tol = [5e-5, 5e-5] + q_tol = [5e-5, 1e-8] + # compare to Stata default options, iterative GMM + # with const at end + start = OLS(endog, exog).fit().params + nobs, k_instr = instrument.shape + w0inv = np.dot(instrument.T, instrument) / nobs + + mod = gmm.NonlinearIVGMM(endog_, exog_, instrument, moment_exponential_mult) + res0 = mod.fit(start, maxiter=2, inv_weights=w0inv, + optim_method='bfgs', optim_args={'gtol':1e-8, 'disp': 0}, + wargs={'centered':True}, has_optimal_weights=False + ) + cls.res1 = res0 + + from .results_gmm_poisson import results_multtwostepcenter as results + cls.res2 = results + + def test_more(self): + + # from Stata `overid` + J_df = 1 + J_p = 0.332254330027383 + J = 0.940091427212973 + + j, jpval, jdf = self.res1.jtest() + + assert_allclose(jpval, J_p, rtol=5e-5, atol=0) + + + +if __name__ == '__main__': + tt = TestGMMAddOnestep() + tt.setup_class() + tt.test_basic() + tt.test_other() + + tt = TestGMMAddTwostep() + tt.setup_class() + tt.test_basic() + tt.test_other() + + tt = TestGMMMultOnestep() + tt.setup_class() + tt.test_basic() + #tt.test_other() + + tt = TestGMMMultTwostep() + tt.setup_class() + tt.test_basic() + tt.test_other() + + tt = TestGMMMultTwostepDefault() + tt.setup_class() + tt.test_basic() + tt.test_other() + + tt = TestGMMMultTwostepCenter() + tt.setup_class() + tt.test_basic() + tt.test_other() diff --git a/statsmodels/sandbox/regression/tools.py b/statsmodels/sandbox/regression/tools.py new file mode 100644 index 0000000..f20eb8f --- /dev/null +++ b/statsmodels/sandbox/regression/tools.py @@ -0,0 +1,383 @@ +'''gradient/Jacobian of normal and t loglikelihood + +use chain rule + +normal derivative wrt mu, sigma and beta + +new version: loc-scale distributions, derivative wrt loc, scale + +also includes "standardized" t distribution (for use in GARCH) + +TODO: +* use sympy for derivative of loglike wrt shape parameters + it works for df of t distribution dlog(gamma(a))da = polygamma(0,a) check + polygamma is available in scipy.special +* get loc-scale example to work with mean = X*b +* write some full unit test examples + +A: josef-pktd + +''' + +from __future__ import print_function +import numpy as np +from scipy import special +from scipy.special import gammaln + + +def norm_lls(y, params): + '''normal loglikelihood given observations and mean mu and variance sigma2 + + Parameters + ---------- + y : array, 1d + normally distributed random variable + params: array, (nobs, 2) + array of mean, variance (mu, sigma2) with observations in rows + + Returns + ------- + lls : array + contribution to loglikelihood for each observation + ''' + + mu, sigma2 = params.T + lls = -0.5*(np.log(2*np.pi) + np.log(sigma2) + (y-mu)**2/sigma2) + return lls + +def norm_lls_grad(y, params): + '''Jacobian of normal loglikelihood wrt mean mu and variance sigma2 + + Parameters + ---------- + y : array, 1d + normally distributed random variable + params: array, (nobs, 2) + array of mean, variance (mu, sigma2) with observations in rows + + Returns + ------- + grad : array (nobs, 2) + derivative of loglikelihood for each observation wrt mean in first + column, and wrt variance in second column + + Notes + ----- + this is actually the derivative wrt sigma not sigma**2, but evaluated + with parameter sigma2 = sigma**2 + + ''' + mu, sigma2 = params.T + dllsdmu = (y-mu)/sigma2 + dllsdsigma2 = ((y-mu)**2/sigma2 - 1)/np.sqrt(sigma2) + return np.column_stack((dllsdmu, dllsdsigma2)) + + +def mean_grad(x, beta): + '''gradient/Jacobian for d (x*beta)/ d beta + ''' + return x + +def normgrad(y, x, params): + '''Jacobian of normal loglikelihood wrt mean mu and variance sigma2 + + Parameters + ---------- + y : array, 1d + normally distributed random variable with mean x*beta, and variance sigma2 + x : array, 2d + explanatory variables, observation in rows, variables in columns + params: array_like, (nvars + 1) + array of coefficients and variance (beta, sigma2) + + Returns + ------- + grad : array (nobs, 2) + derivative of loglikelihood for each observation wrt mean in first + column, and wrt scale (sigma) in second column + assume params = (beta, sigma2) + + Notes + ----- + TODO: for heteroscedasticity need sigma to be a 1d array + + ''' + beta = params[:-1] + sigma2 = params[-1]*np.ones((len(y),1)) + dmudbeta = mean_grad(x, beta) + mu = np.dot(x, beta) + #print(beta, sigma2) + params2 = np.column_stack((mu,sigma2)) + dllsdms = norm_lls_grad(y,params2) + grad = np.column_stack((dllsdms[:,:1]*dmudbeta, dllsdms[:,:1])) + return grad + + + +def tstd_lls(y, params, df): + '''t loglikelihood given observations and mean mu and variance sigma2 = 1 + + Parameters + ---------- + y : array, 1d + normally distributed random variable + params: array, (nobs, 2) + array of mean, variance (mu, sigma2) with observations in rows + df : integer + degrees of freedom of the t distribution + + Returns + ------- + lls : array + contribution to loglikelihood for each observation + + Notes + ----- + parameterized for garch + ''' + + mu, sigma2 = params.T + df = df*1.0 + #lls = gammaln((df+1)/2.) - gammaln(df/2.) - 0.5*np.log((df-2)*np.pi) + #lls -= (df+1)/2. * np.log(1. + (y-mu)**2/(df-2.)/sigma2) + 0.5 * np.log(sigma2) + lls = gammaln((df+1)/2.) - gammaln(df/2.) - 0.5*np.log((df-2)*np.pi) + lls -= (df+1)/2. * np.log(1. + (y-mu)**2/(df-2)/sigma2) + 0.5 * np.log(sigma2) + + return lls + +def norm_dlldy(y): + '''derivative of log pdf of standard normal with respect to y + ''' + return -y + + +def tstd_pdf(x, df): + '''pdf for standardized (not standard) t distribution, variance is one + + ''' + + r = np.array(df*1.0) + Px = np.exp(special.gammaln((r+1)/2.)-special.gammaln(r/2.))/np.sqrt((r-2)*np.pi) + Px /= (1+(x**2)/(r-2))**((r+1)/2.) + return Px + +def ts_lls(y, params, df): + '''t loglikelihood given observations and mean mu and variance sigma2 = 1 + + Parameters + ---------- + y : array, 1d + normally distributed random variable + params: array, (nobs, 2) + array of mean, variance (mu, sigma2) with observations in rows + df : integer + degrees of freedom of the t distribution + + Returns + ------- + lls : array + contribution to loglikelihood for each observation + + Notes + ----- + parameterized for garch + normalized/rescaled so that sigma2 is the variance + + >>> df = 10; sigma = 1. + >>> stats.t.stats(df, loc=0., scale=sigma.*np.sqrt((df-2.)/df)) + (array(0.0), array(1.0)) + >>> sigma = np.sqrt(2.) + >>> stats.t.stats(df, loc=0., scale=sigma*np.sqrt((df-2.)/df)) + (array(0.0), array(2.0)) + ''' + print(y, params, df) + mu, sigma2 = params.T + df = df*1.0 + #lls = gammaln((df+1)/2.) - gammaln(df/2.) - 0.5*np.log((df-2)*np.pi) + #lls -= (df+1)/2. * np.log(1. + (y-mu)**2/(df-2.)/sigma2) + 0.5 * np.log(sigma2) + lls = gammaln((df+1)/2.) - gammaln(df/2.) - 0.5*np.log((df)*np.pi) + lls -= (df+1.)/2. * np.log(1. + (y-mu)**2/(df)/sigma2) + 0.5 * np.log(sigma2) + return lls + + +def ts_dlldy(y, df): + '''derivative of log pdf of standard t with respect to y + + Parameters + ---------- + y : array_like + data points of random variable at which loglike is evaluated + df : array_like + degrees of freedom,shape parameters of log-likelihood function + of t distribution + + Returns + ------- + dlldy : array + derivative of loglikelihood wrt random variable y evaluated at the + points given in y + + Notes + ----- + with mean 0 and scale 1, but variance is df/(df-2) + + ''' + df = df*1. + #(df+1)/2. / (1 + y**2/(df-2.)) * 2.*y/(df-2.) + #return -(df+1)/(df-2.) / (1 + y**2/(df-2.)) * y + return -(df+1)/(df) / (1 + y**2/(df)) * y + +def tstd_dlldy(y, df): + '''derivative of log pdf of standardized t with respect to y + + Parameters + ---------- + y : array_like + data points of random variable at which loglike is evaluated + df : array_like + degrees of freedom,shape parameters of log-likelihood function + of t distribution + + Returns + ------- + dlldy : array + derivative of loglikelihood wrt random variable y evaluated at the + points given in y + + + Notes + ----- + parameterized for garch, standardized to variance=1 + ''' + #(df+1)/2. / (1 + y**2/(df-2.)) * 2.*y/(df-2.) + return -(df+1)/(df-2.) / (1 + y**2/(df-2.)) * y + #return (df+1)/(df) / (1 + y**2/(df)) * y + +def locscale_grad(y, loc, scale, dlldy, *args): + '''derivative of log-likelihood with respect to location and scale + + Parameters + ---------- + y : array_like + data points of random variable at which loglike is evaluated + loc : float + location parameter of distribution + scale : float + scale parameter of distribution + dlldy : function + derivative of loglikelihood fuction wrt. random variable x + args : array_like + shape parameters of log-likelihood function + + Returns + ------- + dlldloc : array + derivative of loglikelihood wrt location evaluated at the + points given in y + dlldscale : array + derivative of loglikelihood wrt scale evaluated at the + points given in y + + ''' + yst = (y-loc)/scale #ystandardized + dlldloc = -dlldy(yst, *args) / scale + dlldscale = -1./scale - dlldy(yst, *args) * (y-loc)/scale**2 + return dlldloc, dlldscale + +if __name__ == '__main__': + verbose = 0 + if verbose: + sig = 0.1 + beta = np.ones(2) + rvs = np.random.randn(10,3) + x = rvs[:,1:] + y = np.dot(x,beta) + sig*rvs[:,0] + + params = [1,1,1] + print(normgrad(y, x, params)) + + dllfdbeta = (y-np.dot(x, beta))[:,None]*x #for sigma = 1 + print(dllfdbeta) + + print(locscale_grad(y, np.dot(x, beta), 1, norm_dlldy)) + print(y-np.dot(x, beta)) + + from scipy import stats, misc + + def llt(y,loc,scale,df): + return np.log(stats.t.pdf(y, df, loc=loc, scale=scale)) + def lltloc(loc,y,scale,df): + return np.log(stats.t.pdf(y, df, loc=loc, scale=scale)) + def lltscale(scale,y,loc,df): + return np.log(stats.t.pdf(y, df, loc=loc, scale=scale)) + + def llnorm(y,loc,scale): + return np.log(stats.norm.pdf(y, loc=loc, scale=scale)) + def llnormloc(loc,y,scale): + return np.log(stats.norm.pdf(y, loc=loc, scale=scale)) + def llnormscale(scale,y,loc): + return np.log(stats.norm.pdf(y, loc=loc, scale=scale)) + + if verbose: + print('\ngradient of t') + print(misc.derivative(llt, 1, dx=1e-6, n=1, args=(0,1,10), order=3)) + print('t ', locscale_grad(1, 0, 1, tstd_dlldy, 10)) + print('ts', locscale_grad(1, 0, 1, ts_dlldy, 10)) + print(misc.derivative(llt, 1.5, dx=1e-10, n=1, args=(0,1,20), order=3),) + print('ts', locscale_grad(1.5, 0, 1, ts_dlldy, 20)) + print(misc.derivative(llt, 1.5, dx=1e-10, n=1, args=(0,2,20), order=3),) + print('ts', locscale_grad(1.5, 0, 2, ts_dlldy, 20)) + print(misc.derivative(llt, 1.5, dx=1e-10, n=1, args=(1,2,20), order=3),) + print('ts', locscale_grad(1.5, 1, 2, ts_dlldy, 20)) + print(misc.derivative(lltloc, 1, dx=1e-10, n=1, args=(1.5,2,20), order=3),) + print(misc.derivative(lltscale, 2, dx=1e-10, n=1, args=(1.5,1,20), order=3)) + y,loc,scale,df = 1.5, 1, 2, 20 + print('ts', locscale_grad(y,loc,scale, ts_dlldy, 20)) + print(misc.derivative(lltloc, loc, dx=1e-10, n=1, args=(y,scale,df), order=3),) + print(misc.derivative(lltscale, scale, dx=1e-10, n=1, args=(y,loc,df), order=3)) + + print('\ngradient of norm') + print(misc.derivative(llnorm, 1, dx=1e-6, n=1, args=(0,1), order=3)) + print(locscale_grad(1, 0, 1, norm_dlldy)) + y,loc,scale = 1.5, 1, 2 + print('ts', locscale_grad(y,loc,scale, norm_dlldy)) + print(misc.derivative(llnormloc, loc, dx=1e-10, n=1, args=(y,scale), order=3),) + print(misc.derivative(llnormscale, scale, dx=1e-10, n=1, args=(y,loc), order=3)) + y,loc,scale = 1.5, 0, 1 + print('ts', locscale_grad(y,loc,scale, norm_dlldy)) + print(misc.derivative(llnormloc, loc, dx=1e-10, n=1, args=(y,scale), order=3),) + print(misc.derivative(llnormscale, scale, dx=1e-10, n=1, args=(y,loc), order=3)) + #print('still something wrong with handling of scale and variance' + #looks ok now + print('\nloglike of t') + print(tstd_lls(1, np.array([0,1]), 100), llt(1,0,1,100), 'differently standardized') + print(tstd_lls(1, np.array([0,1]), 10), llt(1,0,1,10), 'differently standardized') + print(ts_lls(1, np.array([0,1]), 10), llt(1,0,1,10)) + print(tstd_lls(1, np.array([0,1.*10./8.]), 10), llt(1.,0,1.,10)) + print(ts_lls(1, np.array([0,1]), 100), llt(1,0,1,100)) + + print(tstd_lls(1, np.array([0,1]), 10), llt(1,0,1.*np.sqrt(8/10.),10)) + + + from numpy.testing import assert_almost_equal + params =[(0, 1), (1.,1.), (0.,2.), ( 1., 2.)] + yt = np.linspace(-2.,2.,11) + for loc,scale in params: + dlldlo = misc.derivative(llnormloc, loc, dx=1e-10, n=1, args=(yt,scale), order=3) + dlldsc = misc.derivative(llnormscale, scale, dx=1e-10, n=1, args=(yt,loc), order=3) + gr = locscale_grad(yt, loc, scale, norm_dlldy) + assert_almost_equal(dlldlo, gr[0], 5, err_msg='deriv loc') + assert_almost_equal(dlldsc, gr[1], 5, err_msg='deriv scale') + for df in [3, 10, 100]: + for loc,scale in params: + dlldlo = misc.derivative(lltloc, loc, dx=1e-10, n=1, args=(yt,scale,df), order=3) + dlldsc = misc.derivative(lltscale, scale, dx=1e-10, n=1, args=(yt,loc,df), order=3) + gr = locscale_grad(yt, loc, scale, ts_dlldy, df) + assert_almost_equal(dlldlo, gr[0], 4, err_msg='deriv loc') + assert_almost_equal(dlldsc, gr[1], 4, err_msg='deriv scale') + assert_almost_equal(ts_lls(yt, np.array([loc, scale**2]), df), + llt(yt,loc,scale,df), 5, + err_msg='loglike') + assert_almost_equal(tstd_lls(yt, np.array([loc, scale**2]), df), + llt(yt,loc,scale*np.sqrt((df-2.)/df),df), 5, + err_msg='loglike') diff --git a/statsmodels/sandbox/regression/treewalkerclass.py b/statsmodels/sandbox/regression/treewalkerclass.py new file mode 100644 index 0000000..17706fe --- /dev/null +++ b/statsmodels/sandbox/regression/treewalkerclass.py @@ -0,0 +1,617 @@ +''' + +Formulas +-------- + +This follows mostly Greene notation (in slides) +partially ignoring factors tau or mu for now, ADDED +(if all tau==1, then runmnl==clogit) + +leaf k probability : + +Prob(k|j) = exp(b_k * X_k / mu_j)/ sum_{i in L(j)} (exp(b_i * X_i / mu_j) + +branch j probabilities : + +Prob(j) = exp(b_j * X_j + mu*IV_j )/ sum_{i in NB(j)} (exp(b_i * X_i + mu_i*IV_i) + +inclusive value of branch j : + +IV_j = log( sum_{i in L(j)} (exp(b_i * X_i / mu_j) ) + +this is the log of the denominator of the leaf probabilities + +L(j) : leaves at branch j, where k is child of j +NB(j) : set of j and it's siblings + +Design +------ + +* splitting calculation transmission between returns and changes to + instance.probs + - probability for each leaf is in instance.probs + - inclusive values and contribution of exog on branch level need to be + added separately. handed up the tree through returns +* question: should params array be accessed directly through + `self.recursionparams[self.parinddict[name]]` or should the dictionary + return the values of the params, e.g. `self.params_node_dict[name]`. + The second would be easier for fixing tau=1 for degenerate branches. + The easiest might be to do the latter only for the taus and default to 1 if + the key ('tau_'+branchname) is not found. I also need to exclude tau for + degenerate branches from params, but then I cannot change them from the + outside for testing and experimentation. (?) +* SAS manual describes restrictions on tau (though their model is a bit + different), e.g. equal tau across sibling branches, fixed tau. The also + allow linear and non-linear (? not sure) restriction on params, the + regression coefficients. Related to previous issue, callback without access + to the underlying array, where params_node_dict returns the actual params + value would provide more flexibility to impose different kinds of restrictions. + + + +bugs/problems +------------- + +* singleton branches return zero to `top`, not a value + I'm not sure what they are supposed to return, given the split between returns + and instance.probs DONE +* Why does 'Air' (singleton branch) get probability exactly 0.5 ? DONE + +TODO +---- +* add tau, normalization for nested logit, currently tau is 1 (clogit) + taus also needs to become part of params MOSTLY DONE +* add effect of branch level explanatory variables DONE +* write a generic multinomial logit that takes arbitrary probabilities, this + would be the same for MNL, clogit and runmnl, + delegate calculation of probabilities +* test on actual data, + - tau=1 replicate clogit numbers, + - transport example from Greene tests 1-level tree and degenerate sub-trees + - test example for multi-level trees ??? +* starting values: Greene mentiones that the starting values for the nested + version come from the (non-nested) MNL version. SPSS uses constant equal + (? check transformation) to sample frequencies and zeros for slope + coefficient as starting values for (non-nested) MNL +* associated test statistics + - (I don't think I will fight with the gradient or hessian of the log-like.) + - basic MLE statistics can be generic + - tests specific to the model (?) +* nice printouts since I'm currently collecting a lot of information in the tree + recursion and everything has names + +The only parts that are really necessary to get a functional nested logit are +adding the taus (DONE) and the MLE wrapper class. The rest are enhancements. + +I added fake tau, one fixed tau for all branches. (OBSOLETE) +It's not clear where the tau for leaf should be added either at +original assignment of self.probs, or as part of the one-step-down +probability correction in the bottom branches. The second would be +cleaner (would make treatment of leaves and branches more symmetric, +but requires that initial assignment in the leaf only does +initialization. e.g self.probs = 1. ??? + +DONE added taus + +still todo: +- tau for degenerate branches are not identified, set to 1 for MLE +- rename parinddict to paramsinddict + + +Author: Josef Perktold +License : BSD (3-clause) +''' +from __future__ import print_function +from statsmodels.compat.python import iteritems, itervalues, lrange, zip +import numpy as np +from pprint import pprint + +def randintw(w, size=1): + '''generate integer random variables given probabilties + + useful because it can be used as index into any array or sequence type + + Parameters + ---------- + w : 1d array_like + sequence of weights, probabilites. The weights are normalized to add + to one. + size : int or tuple of ints + shape of output array + + Returns + ------- + rvs : array of shape given by size + random variables each distributed according to the same discrete + distribution defined by (normalized) w. + + Examples + -------- + >>> np.random.seed(0) + >>> randintw([0.4, 0.4, 0.2], size=(2,6)) + array([[1, 1, 1, 1, 1, 1], + [1, 2, 2, 0, 1, 1]]) + + >>> np.bincount(randintw([0.6, 0.4, 0.0], size=3000))/3000. + array([ 0.59566667, 0.40433333]) + + ''' + #from Charles Harris, numpy mailing list + from numpy.random import random + p = np.cumsum(w)/np.sum(w) + rvs = p.searchsorted(random(np.prod(size))).reshape(size) + return rvs + +def getbranches(tree): + ''' + walk tree to get list of branches + + Parameters + ---------- + tree : list of tuples + tree as defined for RU2NMNL + + Returns + ------- + branch : list + list of all branch names + + ''' + if isinstance(tree, tuple): + name, subtree = tree + a = [name] + for st in subtree: + a.extend(getbranches(st)) + return a + return [] + +def getnodes(tree): + ''' + walk tree to get list of branches and list of leaves + + Parameters + ---------- + tree : list of tuples + tree as defined for RU2NMNL + + Returns + ------- + branch : list + list of all branch names + leaves : list + list of all leaves names + + ''' + if isinstance(tree, tuple): + name, subtree = tree + ab = [name] + al = [] + #degenerate branches + if len(subtree) == 1: + adeg = [name] + else: + adeg = [] + + for st in subtree: + b, l, d = getnodes(st) + ab.extend(b) + al.extend(l) + adeg.extend(d) + return ab, al, adeg + return [], [tree], [] + + +testxb = 2 #global to class to return strings instead of numbers + +class RU2NMNL(object): + '''Nested Multinomial Logit with Random Utility 2 parameterization + + + Parameters + ---------- + endog : array + not used in this part + exog : dict_like + dictionary access to data where keys correspond to branch and leaf + names. The values are the data arrays for the exog in that node. + tree : nested tuples and lists + each branch, tree or subtree, is defined by a tuple + (branch_name, [subtree1, subtree2, ..., subtreek]) + Bottom branches have as subtrees the list of leaf names. + paramsind : dictionary + dictionary that maps branch and leaf names to the names of parameters, + the coefficients for exogs) + + Methods + ------- + get_probs + + Attributes + ---------- + branches + leaves + paramsnames + parinddict + + Notes + ----- + endog needs to be encoded so it is consistent with self.leaves, which + defines the columns for the probability array. The ordering in leaves is + determined by the ordering of the tree. + In the dummy encoding of endog, the columns of endog need to have the + same order as self.leaves. In the integer encoding, the integer for a + choice has to correspond to the index in self.leaves. + (This could be made more robust, by handling the endog encoding internally + by leaf names, if endog is defined as categorical variable with + associated category level names.) + + ''' + + def __init__(self, endog, exog, tree, paramsind): + self.endog = endog + self.datadict = exog + self.tree = tree + self.paramsind = paramsind + + self.branchsum = '' + self.probs = {} + self.probstxt = {} + self.branchleaves = {} + self.branchvalues = {} #just to keep track of returns by branches + self.branchsums = {} + self.bprobs = {} + self.branches, self.leaves, self.branches_degenerate = getnodes(tree) + self.nbranches = len(self.branches) + + #copied over but not quite sure yet + #unique, parameter array names, + #sorted alphabetically, order is/should be only internal + + self.paramsnames = (sorted(set([i for j in itervalues(paramsind) + for i in j])) + + ['tau_%s' % bname for bname in self.branches]) + + self.nparams = len(self.paramsnames) + + #mapping coefficient names to indices to unique/parameter array + self.paramsidx = dict((name, idx) for (idx,name) in + enumerate(self.paramsnames)) + + #mapping branch and leaf names to index in parameter array + self.parinddict = dict((k, [self.paramsidx[j] for j in v]) + for k,v in iteritems(self.paramsind)) + + self.recursionparams = 1. + np.arange(len(self.paramsnames)) + #for testing that individual parameters are used in the right place + self.recursionparams = np.zeros(len(self.paramsnames)) + #self.recursionparams[2] = 1 + self.recursionparams[-self.nbranches:] = 1 #values for tau's + #self.recursionparams[-2] = 2 + + + def get_probs(self, params): + ''' + obtain the probability array given an array of parameters + + This is the function that can be called by loglike or other methods + that need the probabilities as function of the params. + + Parameters + ---------- + params : 1d array, (nparams,) + coefficients and tau that parameterize the model. The required + length can be obtained by nparams. (and will depend on the number + of degenerate leaves - not yet) + + Returns + ------- + probs : array, (nobs, nchoices) + probabilites for all choices for each observation. The order + is available by attribute leaves. See note in docstring of class + + + + ''' + self.recursionparams = params + self.calc_prob(self.tree) + probs_array = np.array([self.probs[leaf] for leaf in self.leaves]) + return probs_array + #what's the ordering? Should be the same as sequence in tree. + #TODO: need a check/assert that this sequence is the same as the + # encoding in endog + + + def calc_prob(self, tree, parent=None): + '''walking a tree bottom-up based on dictionary + ''' + + #0.5#2 #placeholder for now + #should be tau=self.taus[name] but as part of params for optimization + endog = self.endog + datadict = self.datadict + paramsind = self.paramsind + branchsum = self.branchsum + + + if isinstance(tree, tuple): #assumes leaves are int for choice index + + name, subtree = tree + self.branchleaves[name] = [] #register branch in dictionary + + tau = self.recursionparams[self.paramsidx['tau_'+name]] + if DEBUG: + print('----------- starting next branch-----------') + print(name, datadict[name], 'tau=', tau) + print('subtree', subtree) + branchvalue = [] + if testxb == 2: + branchsum = 0 + elif testxb == 1: + branchsum = datadict[name] + else: + branchsum = name + for b in subtree: + if DEBUG: + print(b) + bv = self.calc_prob(b, name) + bv = np.exp(bv/tau) #this shouldn't be here, when adding branch data + branchvalue.append(bv) + branchsum = branchsum + bv + self.branchvalues[name] = branchvalue #keep track what was returned + + if DEBUG: + print('----------- returning to branch-----------') + print(name) + print('branchsum in branch', name, branchsum) + + if parent: + if DEBUG: + print('parent', parent) + self.branchleaves[parent].extend(self.branchleaves[name]) + if 0: #not name == 'top': # not used anymore !!! ??? + #if not name == 'top': + #TODO: do I need this only on the lowest branches ? + tmpsum = 0 + for k in self.branchleaves[name]: + #similar to this is now also in return branch values + #depends on what will be returned + tmpsum += self.probs[k] + iv = np.log(tmpsum) + + for k in self.branchleaves[name]: + self.probstxt[k] = self.probstxt[k] + ['*' + name + '-prob' + + '(%s)' % ', '.join(self.paramsind[name])] + + #TODO: does this use the denominator twice now + self.probs[k] = self.probs[k] / tmpsum + if np.size(self.datadict[name])>0: + #not used yet, might have to move one indentation level + #self.probs[k] = self.probs[k] / tmpsum +## np.exp(-self.datadict[name] * +## np.sum(self.recursionparams[self.parinddict[name]])) + if DEBUG: + print('self.datadict[name], self.probs[k]') + print(self.datadict[name], self.probs[k]) + #if not name == 'top': + # self.probs[k] = self.probs[k] * np.exp( iv) + + #walk one level down again to add branch probs to instance.probs + self.bprobs[name] = [] + for bidx, b in enumerate(subtree): + if DEBUG: + print('repr(b)', repr(b), bidx) + #if len(b) == 1: #TODO: skip leaves, check this + if not isinstance(b, tuple): # isinstance(b, str): + #TODO: replace this with a check for branch (tuple) instead + #this implies name is a bottom branch, + #possible to add special things here + self.bprobs[name].append(self.probs[b]) + #TODO: need tau possibly here + self.probs[b] = self.probs[b] / branchsum + if DEBUG: + print('*********** branchsum at bottom branch', branchsum) + #self.bprobs[name].append(self.probs[b]) + else: + bname = b[0] + branchsum2 = sum(self.branchvalues[name]) + assert np.abs(branchsum - branchsum2).sum() < 1e-8 + bprob = branchvalue[bidx]/branchsum + self.bprobs[name].append(bprob) + + for k in self.branchleaves[bname]: + + if DEBUG: + print('branchprob', bname, k, bprob, branchsum) + #temporary hack with maximum to avoid zeros + self.probs[k] = self.probs[k] * np.maximum(bprob, 1e-4) + + + if DEBUG: + print('working on branch', tree, branchsum) + if testxb<2: + return branchsum + else: #this is the relevant part + self.branchsums[name] = branchsum + if np.size(self.datadict[name])>0: + branchxb = np.sum(self.datadict[name] * + self.recursionparams[self.parinddict[name]]) + else: + branchxb = 0 + if not name=='top': + tau = self.recursionparams[self.paramsidx['tau_'+name]] + else: + tau = 1 + iv = branchxb + tau * branchsum #which tau: name or parent??? + return branchxb + tau * np.log(branchsum) #iv + #branchsum is now IV, TODO: add effect of branch variables + + else: + tau = self.recursionparams[self.paramsidx['tau_'+parent]] + if DEBUG: + print('parent', parent) + self.branchleaves[parent].append(tree) # register leave with parent + self.probstxt[tree] = [tree + '-prob' + + '(%s)' % ', '.join(self.paramsind[tree])] + #this is not yet a prob, not normalized to 1, it is exp(x*b) + leafprob = np.exp(np.sum(self.datadict[tree] * + self.recursionparams[self.parinddict[tree]]) + / tau) # fake tau for now, wrong spot ??? + #it seems I get the same answer with and without tau here + self.probs[tree] = leafprob #= 1 #try initialization only + #TODO: where should I add tau in the leaves + + if testxb == 2: + return np.log(leafprob) + elif testxb == 1: + leavessum = np.array(datadict[tree]) # sum((datadict[bi] for bi in datadict[tree])) + if DEBUG: + print('final branch with', tree, ''.join(tree), leavessum) #sum(tree) + return leavessum #sum(xb[tree]) + elif testxb == 0: + return ''.join(tree) #sum(tree) + + + +if __name__ == '__main__': + DEBUG = 0 + + endog = 5 # dummy place holder + + + ############## Example similar to Greene + + #get pickled data + #endog3, xifloat3 = cPickle.load(open('xifloat2.pickle','rb')) + + + tree0 = ('top', + [('Fly',['Air']), + ('Ground', ['Train', 'Car', 'Bus']) + ]) + + ''' this is with real data from Greene's clogit example + datadict = dict(zip(['Air', 'Train', 'Bus', 'Car'], + [xifloat[i]for i in range(4)])) + ''' + + #for testing only (mock that returns it's own name + datadict = dict(zip(['Air', 'Train', 'Bus', 'Car'], + ['Airdata', 'Traindata', 'Busdata', 'Cardata'])) + + if testxb: + datadict = dict(zip(['Air', 'Train', 'Bus', 'Car'], + np.arange(4))) + + datadict.update({'top' : [], + 'Fly' : [], + 'Ground': []}) + + paramsind = {'top' : [], + 'Fly' : [], + 'Ground': [], + 'Air' : ['GC', 'Ttme', 'ConstA', 'Hinc'], + 'Train' : ['GC', 'Ttme', 'ConstT'], + 'Bus' : ['GC', 'Ttme', 'ConstB'], + 'Car' : ['GC', 'Ttme'] + } + + modru = RU2NMNL(endog, datadict, tree0, paramsind) + modru.recursionparams[-1] = 2 + modru.recursionparams[1] = 1 + + print('Example 1') + print('---------\n') + print(modru.calc_prob(modru.tree)) + + print('Tree') + pprint(modru.tree) + print('\nmodru.probs') + pprint(modru.probs) + + + + ############## example with many layers + + tree2 = ('top', + [('B1',['a','b']), + ('B2', + [('B21',['c', 'd']), + ('B22',['e', 'f', 'g']) + ] + ), + ('B3',['h'])]) + + #Note: dict looses ordering + paramsind2 = { + 'B1': [], + 'a': ['consta', 'p'], + 'b': ['constb', 'p'], + 'B2': ['const2', 'x2'], + 'B21': [], + 'c': ['constc', 'p', 'time'], + 'd': ['constd', 'p', 'time'], + 'B22': ['x22'], + 'e': ['conste', 'p', 'hince'], + 'f': ['constf', 'p', 'hincf'], + 'g': [ 'p', 'hincg'], + 'B3': [], + 'h': ['consth', 'p', 'h'], + 'top': []} + + + datadict2 = dict([i for i in zip('abcdefgh',lrange(8))]) + datadict2.update({'top':1000, 'B1':100, 'B2':200, 'B21':21,'B22':22, 'B3':300}) + ''' + >>> pprint(datadict2) + {'B1': 100, + 'B2': 200, + 'B21': 21, + 'B22': 22, + 'B3': 300, + 'a': 0.5, + 'b': 1, + 'c': 2, + 'd': 3, + 'e': 4, + 'f': 5, + 'g': 6, + 'h': 7, + 'top': 1000} + ''' + + + modru2 = RU2NMNL(endog, datadict2, tree2, paramsind2) + modru2.recursionparams[-3] = 2 + modru2.recursionparams[3] = 1 + print('\n\nExample 2') + print('---------\n') + print(modru2.calc_prob(modru2.tree)) + print('Tree') + pprint(modru2.tree) + print('\nmodru.probs') + pprint(modru2.probs) + + + print('sum of probs', sum(list(itervalues(modru2.probs)))) + print('branchvalues') + print(modru2.branchvalues) + print(modru.branchvalues) + + print('branch probabilities') + print(modru.bprobs) + + print('degenerate branches') + print(modru.branches_degenerate) + + ''' + >>> modru.bprobs + {'Fly': [], 'top': [0.0016714179077931082, 0.99832858209220687], 'Ground': []} + >>> modru2.bprobs + {'top': [0.25000000000000006, 0.62499999999999989, 0.12500000000000003], 'B22': [], 'B21': [], 'B1': [], 'B2': [0.40000000000000008, 0.59999999999999998], 'B3': []} + ''' + + params1 = np.array([ 0., 1., 0., 0., 0., 0., 1., 1., 2.]) + print(modru.get_probs(params1)) + params2 = np.array([ 0., 0., 0., 1., 0., 0., 0., 0., 0., 0., 0., + 0., 0., 0., 0., 0., 1., 1., 1., 2., 1., 1.]) + print(modru2.get_probs(params2)) #raises IndexError diff --git a/statsmodels/sandbox/regression/try_catdata.py b/statsmodels/sandbox/regression/try_catdata.py new file mode 100644 index 0000000..2f77097 --- /dev/null +++ b/statsmodels/sandbox/regression/try_catdata.py @@ -0,0 +1,125 @@ +''' +Working with categorical data +============================= + +use of dummy variables, group statistics, within and between statistics +examples for efficient matrix algebra + +dummy versions require that the number of unique groups or categories is not too large +group statistics with scipy.ndimage can handle large number of observations and groups +scipy.ndimage stats is missing count + +new: np.bincount can also be used for calculating values per label +''' +from statsmodels.compat.python import lrange +import numpy as np + +from scipy import ndimage + +#problem: ndimage does not allow axis argument, +# calculates mean or var corresponding to axis=None in np.mean, np.var +# useless for multivariate application + +def labelmeanfilter(y, x): + # requires integer labels + # from mailing list scipy-user 2009-02-11 + labelsunique = np.arange(np.max(y)+1) + labelmeans = np.array(ndimage.mean(x, labels=y, index=labelsunique)) + # returns label means for each original observation + return labelmeans[y] + +#groupcount: i.e. number of observation by group/label +#np.array(ndimage.histogram(yrvs[:,0],0,10,1,labels=yrvs[:,0],index=np.unique(yrvs[:,0]))) + +def labelmeanfilter_nd(y, x): + # requires integer labels + # from mailing list scipy-user 2009-02-11 + # adjusted for 2d x with column variables + + labelsunique = np.arange(np.max(y)+1) + labmeansdata = [] + labmeans = [] + + for xx in x.T: + labelmeans = np.array(ndimage.mean(xx, labels=y, index=labelsunique)) + labmeansdata.append(labelmeans[y]) + labmeans.append(labelmeans) + # group count: + labelcount = np.array(ndimage.histogram(y, labelsunique[0], labelsunique[-1]+1, + 1, labels=y, index=labelsunique)) + + # returns array of lable/group counts and of label/group means + # and label/group means for each original observation + return labelcount, np.array(labmeans), np.array(labmeansdata).T + +def labelmeanfilter_str(ys, x): + # works also for string labels in ys, but requires 1D + # from mailing list scipy-user 2009-02-11 + unil, unilinv = np.unique(ys, return_index=False, return_inverse=True) + labelmeans = np.array(ndimage.mean(x, labels=unilinv, index=np.arange(np.max(unil)+1))) + arr3 = labelmeans[unilinv] + return arr3 + +def groupstatsbin(factors, values): + '''uses np.bincount, assumes factors/labels are integers + ''' + n = len(factors) + ix,rind = np.unique(factors, return_inverse=1) + gcount = np.bincount(rind) + gmean = np.bincount(rind, weights=values)/ (1.0*gcount) + meanarr = gmean[rind] + withinvar = np.bincount(rind, weights=(values-meanarr)**2) / (1.0*gcount) + withinvararr = withinvar[rind] + return gcount, gmean , meanarr, withinvar, withinvararr + + +def convertlabels(ys, indices=None): + '''convert labels based on multiple variables or string labels to unique + index labels 0,1,2,...,nk-1 where nk is the number of distinct labels + ''' + if indices is None: + ylabel = ys + else: + idx = np.array(indices) + if idx.size > 1 and ys.ndim == 2: + ylabel = np.array(['@%s@' % ii[:2].tostring() for ii in ys])[:,np.newaxis] + #alternative + ## if ys[:,idx].dtype.kind == 'S': + ## ylabel = nd.array([' '.join(ii[:2]) for ii in ys])[:,np.newaxis] + else: + # there might be a problem here + ylabel = ys + + unil, unilinv = np.unique(ylabel, return_index=False, return_inverse=True) + return unilinv, np.arange(len(unil)), unil + +def groupsstats_1d(y, x, labelsunique): + '''use ndimage to get fast mean and variance''' + labelmeans = np.array(ndimage.mean(x, labels=y, index=labelsunique)) + labelvars = np.array(ndimage.var(x, labels=y, index=labelsunique)) + return labelmeans, labelvars + +def cat2dummy(y, nonseq=0): + if nonseq or (y.ndim == 2 and y.shape[1] > 1): + ycat, uniques, unitransl = convertlabels(y, lrange(y.shape[1])) + else: + ycat = y.copy() + ymin = y.min() + uniques = np.arange(ymin,y.max()+1) + if ycat.ndim == 1: + ycat = ycat[:,np.newaxis] + # this builds matrix nobs*ncat + dummy = (ycat == uniques).astype(int) + return dummy + +def groupsstats_dummy(y, x, nonseq=0): + if x.ndim == 1: + # use groupsstats_1d + x = x[:,np.newaxis] + dummy = cat2dummy(y, nonseq=nonseq) + countgr = dummy.sum(0, dtype=float) + meangr = np.dot(x.T,dummy)/countgr + meandata = np.dot(dummy,meangr.T) # category/group means as array in shape of x + xdevmeangr = x - meandata # deviation from category/group mean + vargr = np.dot((xdevmeangr * xdevmeangr).T, dummy) / countgr + return meangr, vargr, xdevmeangr, countgr diff --git a/statsmodels/sandbox/regression/try_ols_anova.py b/statsmodels/sandbox/regression/try_ols_anova.py new file mode 100644 index 0000000..b77fcf0 --- /dev/null +++ b/statsmodels/sandbox/regression/try_ols_anova.py @@ -0,0 +1,286 @@ +''' convenience functions for ANOVA type analysis with OLS + +Note: statistical results of ANOVA are not checked, OLS is +checked but not whether the reported results are the ones used +in ANOVA + +includes form2design for creating dummy variables + +TODO: + * ... + * + +''' + +from __future__ import print_function +from statsmodels.compat.python import lmap +import numpy as np +#from scipy import stats +import statsmodels.api as sm + +def data2dummy(x, returnall=False): + '''convert array of categories to dummy variables + by default drops dummy variable for last category + uses ravel, 1d only''' + x = x.ravel() + groups = np.unique(x) + if returnall: + return (x[:, None] == groups).astype(int) + else: + return (x[:, None] == groups).astype(int)[:,:-1] + +def data2proddummy(x): + '''creates product dummy variables from 2 columns of 2d array + + drops last dummy variable, but not from each category + singular with simple dummy variable but not with constant + + quickly written, no safeguards + + ''' + #brute force, assumes x is 2d + #replace with encoding if possible + groups = np.unique(lmap(tuple, x.tolist())) + #includes singularity with additive factors + return (x==groups[:,None,:]).all(-1).T.astype(int)[:,:-1] + +def data2groupcont(x1,x2): + '''create dummy continuous variable + + Parameters + ---------- + x1 : 1d array + label or group array + x2 : 1d array (float) + continuous variable + + Notes + ----- + useful for group specific slope coefficients in regression + ''' + if x2.ndim == 1: + x2 = x2[:,None] + dummy = data2dummy(x1, returnall=True) + return dummy * x2 + +# Result strings +#the second leaves the constant in, not with NIST regression +#but something fishy with res.ess negative in examples ? +#not checked if these are all the right ones + +anova_str0 = ''' +ANOVA statistics (model sum of squares excludes constant) +Source DF Sum Squares Mean Square F Value Pr > F +Model %(df_model)i %(ess)f %(mse_model)f %(fvalue)f %(f_pvalue)f +Error %(df_resid)i %(ssr)f %(mse_resid)f +CTotal %(nobs)i %(uncentered_tss)f %(mse_total)f + +R squared %(rsquared)f +''' + +anova_str = ''' +ANOVA statistics (model sum of squares includes constant) +Source DF Sum Squares Mean Square F Value Pr > F +Model %(df_model)i %(ssmwithmean)f %(mse_model)f %(fvalue)f %(f_pvalue)f +Error %(df_resid)i %(ssr)f %(mse_resid)f +CTotal %(nobs)i %(uncentered_tss)f %(mse_total)f + +R squared %(rsquared)f +''' + + +def anovadict(res): + '''update regression results dictionary with ANOVA specific statistics + + not checked for completeness + ''' + ad = {} + ad.update(res.__dict__) #dict doesn't work with cached attributes + anova_attr = ['df_model', 'df_resid', 'ess', 'ssr','uncentered_tss', + 'mse_model', 'mse_resid', 'mse_total', 'fvalue', 'f_pvalue', + 'rsquared'] + for key in anova_attr: + ad[key] = getattr(res, key) + ad['nobs'] = res.model.nobs + ad['ssmwithmean'] = res.uncentered_tss - res.ssr + return ad + + +def form2design(ss, data): + '''convert string formula to data dictionary + + ss : string + * I : add constant + * varname : for simple varnames data is used as is + * F:varname : create dummy variables for factor varname + * P:varname1*varname2 : create product dummy variables for + varnames + * G:varname1*varname2 : create product between factor and + continuous variable + data : dict or structured array + data set, access of variables by name as in dictionaries + + Returns + ------- + vars : dictionary + dictionary of variables with converted dummy variables + names : list + list of names, product (P:) and grouped continuous + variables (G:) have name by joining individual names + sorted according to input + + Examples + -------- + >>> xx, n = form2design('I a F:b P:c*d G:c*f', testdata) + >>> xx.keys() + ['a', 'b', 'const', 'cf', 'cd'] + >>> n + ['const', 'a', 'b', 'cd', 'cf'] + + Notes + ----- + + with sorted dict, separate name list wouldn't be necessary + ''' + vars = {} + names = [] + for item in ss.split(): + if item == 'I': + vars['const'] = np.ones(data.shape[0]) + names.append('const') + elif ':' not in item: + vars[item] = data[item] + names.append(item) + elif item[:2] == 'F:': + v = item.split(':')[1] + vars[v] = data2dummy(data[v]) + names.append(v) + elif item[:2] == 'P:': + v = item.split(':')[1].split('*') + vars[''.join(v)] = data2proddummy(np.c_[data[v[0]],data[v[1]]]) + names.append(''.join(v)) + elif item[:2] == 'G:': + v = item.split(':')[1].split('*') + vars[''.join(v)] = data2groupcont(data[v[0]], data[v[1]]) + names.append(''.join(v)) + else: + raise ValueError('unknown expression in formula') + return vars, names + +def dropname(ss, li): + '''drop names from a list of strings, + names to drop are in space delimeted list + does not change original list + ''' + newli = li[:] + for item in ss.split(): + newli.remove(item) + return newli + +if __name__ == '__main__': + + # Test Example with created data + # ------------------------------ + + nobs = 1000 + testdataint = np.random.randint(3, size=(nobs,4)).view([('a',int),('b',int),('c',int),('d',int)]) + testdatacont = np.random.normal( size=(nobs,2)).view([('e',float), ('f',float)]) + import numpy.lib.recfunctions + dt2 = numpy.lib.recfunctions.zip_descr((testdataint, testdatacont),flatten=True) + # concatenate structured arrays + testdata = np.empty((nobs,1), dt2) + for name in testdataint.dtype.names: + testdata[name] = testdataint[name] + for name in testdatacont.dtype.names: + testdata[name] = testdatacont[name] + + + #print(form2design('a',testdata) + + if 0: # print(only when nobs is small, e.g. nobs=10 + xx, n = form2design('F:a',testdata) + print(xx) + print(form2design('P:a*b',testdata)) + print(data2proddummy((np.c_[testdata['a'],testdata['b']]))) + + xx, names = form2design('a F:b P:c*d',testdata) + + #xx, names = form2design('I a F:b F:c F:d P:c*d',testdata) + xx, names = form2design('I a F:b P:c*d', testdata) + xx, names = form2design('I a F:b P:c*d G:a*e f', testdata) + + + X = np.column_stack([xx[nn] for nn in names]) + # simple test version: all coefficients equal to one + y = X.sum(1) + 0.01*np.random.normal(size=(nobs)) + rest1 = sm.OLS(y,X).fit() #results + print(rest1.params) + print(anova_str % anovadict(rest1)) + + + X = np.column_stack([xx[nn] for nn in dropname('ae f', names)]) + # simple test version: all coefficients equal to one + y = X.sum(1) + 0.01*np.random.normal(size=(nobs)) + rest1 = sm.OLS(y,X).fit() + print(rest1.params) + print(anova_str % anovadict(rest1)) + + + # Example: from Bruce + # ------------------- + + #get data and clean it + #^^^^^^^^^^^^^^^^^^^^^ + + # requires file 'dftest3.data' posted by Bruce + + # read data set and drop rows with missing data + dt_b = np.dtype([('breed', int), ('sex', int), ('litter', int), + ('pen', int), ('pig', int), ('age', float), + ('bage', float), ('y', float)]) + dta = np.genfromtxt('dftest3.data', dt_b,missing='.', usemask=True) + print('missing', [dta.mask[k].sum() for k in dta.dtype.names]) + m = dta.mask.view(bool) + droprows = m.reshape(-1,len(dta.dtype.names)).any(1) + # get complete data as plain structured array + # maybe doesn't work with masked arrays + dta_use_b1 = dta[~droprows,:].data + print(dta_use_b1.shape) + print(dta_use_b1.dtype) + + #Example b1: variables from Bruce's glm + #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + # prepare data and dummy variables + xx_b1, names_b1 = form2design('I F:sex age', dta_use_b1) + # create design matrix + X_b1 = np.column_stack([xx_b1[nn] for nn in dropname('', names_b1)]) + y_b1 = dta_use_b1['y'] + # estimate using OLS + rest_b1 = sm.OLS(y_b1, X_b1).fit() + # print(results) + print(rest_b1.params) + print(anova_str % anovadict(rest_b1)) + #compare with original version only in original version + #print(anova_str % anovadict(res_b0)) + + # Example: use all variables except pig identifier + #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + allexog = ' '.join(dta.dtype.names[:-1]) + #'breed sex litter pen pig age bage' + + xx_b1a, names_b1a = form2design('I F:breed F:sex F:litter F:pen age bage', dta_use_b1) + X_b1a = np.column_stack([xx_b1a[nn] for nn in dropname('', names_b1a)]) + y_b1a = dta_use_b1['y'] + rest_b1a = sm.OLS(y_b1a, X_b1a).fit() + print(rest_b1a.params) + print(anova_str % anovadict(rest_b1a)) + + for dropn in names_b1a: + print(('\nResults dropping', dropn)) + X_b1a_ = np.column_stack([xx_b1a[nn] for nn in dropname(dropn, names_b1a)]) + y_b1a_ = dta_use_b1['y'] + rest_b1a_ = sm.OLS(y_b1a_, X_b1a_).fit() + #print(rest_b1a_.params) + print(anova_str % anovadict(rest_b1a_)) diff --git a/statsmodels/sandbox/regression/try_treewalker.py b/statsmodels/sandbox/regression/try_treewalker.py new file mode 100644 index 0000000..156a1eb --- /dev/null +++ b/statsmodels/sandbox/regression/try_treewalker.py @@ -0,0 +1,146 @@ +'''Trying out tree structure for nested logit + +sum is standing for likelihood calculations + +should collect and aggregate likelihood contributions bottom up + +''' +from __future__ import print_function +from statsmodels.compat.python import iteritems, itervalues, lrange, zip, long +import numpy as np + +tree = [[0,1],[[2,3],[4,5,6]],[7]] +#singleton/degenerate branch needs to be list + +xb = 2*np.arange(8) +testxb = 1 #0 + +def branch(tree): + '''walking a tree bottom-up + ''' + + if not isinstance(tree[0], (int, long)): #assumes leaves are int for choice index + branchsum = 0 + for b in tree: + branchsum += branch(b) + else: + print(tree) + print('final branch with', tree, sum(tree)) + if testxb: + return sum(xb[tree]) + else: + return sum(tree) + + print('working on branch', tree, branchsum) + return branchsum + +print(branch(tree)) + + + +#new version that also keeps track of branch name and allows V_j for a branch +# as in Greene, V_j + lamda * IV doesn't look the same as including the +# explanatory variables in leaf X_j, V_j is linear in X, IV is logsumexp of X, + + +testxb = 0#1#0 +def branch2(tree): + '''walking a tree bottom-up based on dictionary + ''' + + + if isinstance(tree, tuple): #assumes leaves are int for choice index + name, subtree = tree + print(name, data2[name]) + print('subtree', subtree) + if testxb: + branchsum = data2[name] + else: + branchsum = name #0 + for b in subtree: + #branchsum += branch2(b) + branchsum = branchsum + branch2(b) + else: + leavessum = sum((data2[bi] for bi in tree)) + print('final branch with', tree, ''.join(tree), leavessum) #sum(tree) + if testxb: + return leavessum #sum(xb[tree]) + else: + return ''.join(tree) #sum(tree) + + print('working on branch', tree, branchsum) + return branchsum + +tree = [[0,1],[[2,3],[4,5,6]],[7]] +tree2 = ('top', + [('B1',['a','b']), + ('B2', + [('B21',['c', 'd']), + ('B22',['e', 'f', 'g']) + ] + ), + ('B3',['h'])] + ) + +data2 = dict([i for i in zip('abcdefgh',lrange(8))]) +#data2.update({'top':1000, 'B1':100, 'B2':200, 'B21':300,'B22':400, 'B3':400}) +data2.update({'top':1000, 'B1':100, 'B2':200, 'B21':21,'B22':22, 'B3':300}) + +#data2 +#{'a': 0, 'c': 2, 'b': 1, 'e': 4, 'd': 3, 'g': 6, 'f': 5, 'h': 7, +#'top': 1000, 'B22': 22, 'B21': 21, 'B1': 100, 'B2': 200, 'B3': 300} + +print('\n tree with dictionary data') +print(branch2(tree2)) # results look correct for testxb=0 and 1 + + +#parameters/coefficients map coefficient names to indices, list of indices into +#a 1d params one for each leave and branch + +#Note: dict looses ordering +paramsind = { + 'B1': [], + 'a': ['consta', 'p'], + 'b': ['constb', 'p'], + 'B2': ['const2', 'x2'], + 'B21': [], + 'c': ['consta', 'p', 'time'], + 'd': ['consta', 'p', 'time'], + 'B22': ['x22'], + 'e': ['conste', 'p', 'hince'], + 'f': ['constt', 'p', 'hincf'], + 'g': [ 'p', 'hincg'], + 'B3': [], + 'h': ['consth', 'p', 'h'], + 'top': []} + +#unique, parameter array names, +#sorted alphabetically, order is/should be only internal + +paramsnames = sorted(set([i for j in itervalues(paramsind) for i in j])) + +#mapping coefficient names to indices to unique/parameter array +paramsidx = dict((name, idx) for (idx,name) in enumerate(paramsnames)) + +#mapping branch and leaf names to index in parameter array +inddict = dict((k,[paramsidx[j] for j in v]) for k,v in iteritems(paramsind)) + +''' +>>> paramsnames +['const2', 'consta', 'constb', 'conste', 'consth', 'constt', 'h', 'hince', + 'hincf', 'hincg', 'p', 'time', 'x2', 'x22'] +>>> parmasidx +{'conste': 3, 'consta': 1, 'constb': 2, 'h': 6, 'time': 11, 'consth': 4, + 'p': 10, 'constt': 5, 'const2': 0, 'x2': 12, 'x22': 13, 'hince': 7, + 'hincg': 9, 'hincf': 8} +>>> inddict +{'a': [1, 10], 'c': [1, 10, 11], 'b': [2, 10], 'e': [3, 10, 7], + 'd': [1, 10, 11], 'g': [10, 9], 'f': [5, 10, 8], 'h': [4, 10, 6], + 'top': [], 'B22': [13], 'B21': [], 'B1': [], 'B2': [0, 12], 'B3': []} +>>> paramsind +{'a': ['consta', 'p'], 'c': ['consta', 'p', 'time'], 'b': ['constb', 'p'], + 'e': ['conste', 'p', 'hince'], 'd': ['consta', 'p', 'time'], + 'g': ['p', 'hincg'], 'f': ['constt', 'p', 'hincf'], 'h': ['consth', 'p', 'h'], + 'top': [], 'B22': ['x22'], 'B21': [], 'B1': [], 'B2': ['const2', 'x2'], + 'B3': []} +''' diff --git a/statsmodels/sandbox/rls.py b/statsmodels/sandbox/rls.py new file mode 100644 index 0000000..e4a73d5 --- /dev/null +++ b/statsmodels/sandbox/rls.py @@ -0,0 +1,152 @@ +"""Restricted least squares + +from pandas +License: Simplified BSD +""" +from __future__ import print_function +import numpy as np +from statsmodels.regression.linear_model import GLS, RegressionResults + + +class RLS(GLS): + """ + Restricted general least squares model that handles linear constraints + + Parameters + ---------- + endog: array-like + n length array containing the dependent variable + exog: array-like + n-by-p array of independent variables + constr: array-like + k-by-p array of linear constraints + param (0.): array-like or scalar + p-by-1 array (or scalar) of constraint parameters + sigma (None): scalar or array-like + The weighting matrix of the covariance. No scaling by default (OLS). + If sigma is a scalar, then it is converted into an n-by-n diagonal + matrix with sigma as each diagonal element. + If sigma is an n-length array, then it is assumed to be a diagonal + matrix with the given sigma on the diagonal (WLS). + + Notes + ----- + endog = exog * beta + epsilon + weights' * constr * beta = param + + See Greene and Seaks, "The Restricted Least Squares Estimator: + A Pedagogical Note", The Review of Economics and Statistics, 1991. + """ + + def __init__(self, endog, exog, constr, param=0., sigma=None): + N, Q = exog.shape + constr = np.asarray(constr) + if constr.ndim == 1: + K, P = 1, constr.shape[0] + else: + K, P = constr.shape + if Q != P: + raise Exception('Constraints and design do not align') + self.ncoeffs = Q + self.nconstraint = K + self.constraint = constr + if np.isscalar(param) and K > 1: + param = np.ones((K,)) * param + self.param = param + if sigma is None: + sigma = 1. + if np.isscalar(sigma): + sigma = np.ones(N) * sigma + sigma = np.squeeze(sigma) + if sigma.ndim == 1: + self.sigma = np.diag(sigma) + self.cholsigmainv = np.diag(np.sqrt(sigma)) + else: + self.sigma = sigma + self.cholsigmainv = np.linalg.cholesky(np.linalg.pinv(self.sigma)).T + super(GLS, self).__init__(endog, exog) + + _rwexog = None + @property + def rwexog(self): + """Whitened exogenous variables augmented with restrictions""" + if self._rwexog is None: + P = self.ncoeffs + K = self.nconstraint + design = np.zeros((P + K, P + K)) + design[:P, :P] = np.dot(self.wexog.T, self.wexog) #top left + constr = np.reshape(self.constraint, (K, P)) + design[:P, P:] = constr.T #top right partition + design[P:, :P] = constr #bottom left partition + design[P:, P:] = np.zeros((K, K)) #bottom right partition + self._rwexog = design + return self._rwexog + + _inv_rwexog = None + @property + def inv_rwexog(self): + """Inverse of self.rwexog""" + if self._inv_rwexog is None: + self._inv_rwexog = np.linalg.inv(self.rwexog) + return self._inv_rwexog + + _rwendog = None + @property + def rwendog(self): + """Whitened endogenous variable augmented with restriction parameters""" + if self._rwendog is None: + P = self.ncoeffs + K = self.nconstraint + response = np.zeros((P + K,)) + response[:P] = np.dot(self.wexog.T, self.wendog) + response[P:] = self.param + self._rwendog = response + return self._rwendog + + _ncp = None + @property + def rnorm_cov_params(self): + """Parameter covariance under restrictions""" + if self._ncp is None: + P = self.ncoeffs + self._ncp = self.inv_rwexog[:P, :P] + return self._ncp + + _wncp = None + @property + def wrnorm_cov_params(self): + """ + Heteroskedasticity-consistent parameter covariance + Used to calculate White standard errors. + """ + if self._wncp is None: + df = self.df_resid + pred = np.dot(self.wexog, self.coeffs) + eps = np.diag((self.wendog - pred) ** 2) + sigmaSq = np.sum(eps) + pinvX = np.dot(self.rnorm_cov_params, self.wexog.T) + self._wncp = np.dot(np.dot(pinvX, eps), pinvX.T) * df / sigmaSq + return self._wncp + + _coeffs = None + @property + def coeffs(self): + """Estimated parameters""" + if self._coeffs is None: + betaLambda = np.dot(self.inv_rwexog, self.rwendog) + self._coeffs = betaLambda[:self.ncoeffs] + return self._coeffs + + def fit(self): + rncp = self.wrnorm_cov_params + lfit = RegressionResults(self, self.coeffs, normalized_cov_params=rncp) + return lfit + +if __name__=="__main__": + import statsmodels.api as sm + dta = np.genfromtxt('./rlsdata.txt', names=True) + design = np.column_stack((dta['Y'],dta['Y']**2,dta[['NE','NC','W','S']].view(float).reshape(dta.shape[0],-1))) + design = sm.add_constant(design, prepend=True) + rls_mod = RLS(dta['G'],design, constr=[0,0,0,1,1,1,1]) + rls_fit = rls_mod.fit() + print(rls_fit.params) diff --git a/statsmodels/sandbox/rlsdata.txt b/statsmodels/sandbox/rlsdata.txt new file mode 100644 index 0000000..a7a3d44 --- /dev/null +++ b/statsmodels/sandbox/rlsdata.txt @@ -0,0 +1,50 @@ +G Y NE NC S W +1.62 1550 1 0 0 0 +2.09 3474 1 0 0 0 +2.96 4424 1 0 0 0 +3.5 5444 1 0 0 0 +4.94 6404 1 0 0 0 +6.14 7464 1 0 0 0 +6.43 8919 1 0 0 0 +7 10817 1 0 0 0 +8.24 13287 1 0 0 0 +9.16 17043 1 0 0 0 +10.87 21862 1 0 0 0 +12.17 33892 1 0 0 0 +1.81 1644 0 1 0 0 +2.96 3434 0 1 0 0 +3.81 4474 0 1 0 0 +4.75 5399 0 1 0 0 +5.84 6440 0 1 0 0 +6.38 7401 0 1 0 0 +7.28 8897 0 1 0 0 +8.51 10807 0 1 0 0 +8.44 13213 0 1 0 0 +10.68 17156 0 1 0 0 +10.93 22058 0 1 0 0 +12.76 33926 0 1 0 0 +2.17 1621 0 0 1 0 +3.89 3449 0 0 1 0 +5.09 4436 0 0 1 0 +5.08 5402 0 0 1 0 +6.03 6403 0 0 1 0 +6.73 7406 0 0 1 0 +7.86 8887 0 0 1 0 +9.32 10811 0 0 1 0 +9.4 13238 0 0 1 0 +10.48 16970 0 0 1 0 +11.12 21909 0 0 1 0 +11.81 37702 0 0 1 0 +2.12 1596 0 0 0 1 +3.93 3463 0 0 0 1 +5.02 4478 0 0 0 1 +6.49 5375 0 0 0 1 +5.5 6408 0 0 0 1 +6.67 7390 0 0 0 1 +7.29 8917 0 0 0 1 +8.92 10804 0 0 0 1 +9.52 13268 0 0 0 1 +10.4 17094 0 0 0 1 +11.41 21914 0 0 0 1 +11.61 36618 0 0 0 1 + diff --git a/statsmodels/sandbox/stats/__init__.py b/statsmodels/sandbox/stats/__init__.py new file mode 100644 index 0000000..49b1d30 --- /dev/null +++ b/statsmodels/sandbox/stats/__init__.py @@ -0,0 +1,23 @@ +'''temporary location for enhancements to scipy.stats + +includes +^^^^^^^^ + +* Per Brodtkorb's estimation enhancements to scipy.stats.distributions + - distributions_per.py is copy of scipy.stats.distributions.py with changes + - distributions_profile.py partially extracted classes and functions to + separate code into more managable pieces +* josef's extra distribution and helper functions + - moment helpers + - goodness of fit test + - fitting distributions with some fixed parameters + - find best distribution that fits data: working script +* example and test folders to keep all together + +status +^^^^^^ + +mixed status : from not-working to well-tested + + +''' diff --git a/statsmodels/sandbox/stats/contrast_tools.py b/statsmodels/sandbox/stats/contrast_tools.py new file mode 100644 index 0000000..44d94c3 --- /dev/null +++ b/statsmodels/sandbox/stats/contrast_tools.py @@ -0,0 +1,961 @@ +'''functions to work with contrasts for multiple tests + +contrast matrices for comparing all pairs, all levels to reference level, ... +extension to 2-way groups in progress + +TwoWay: class for bringing two-way analysis together and try out +various helper functions + + +Idea for second part +- get all transformation matrices to move in between different full rank + parameterizations +- standardize to one parameterization to get all interesting effects. + +- multivariate normal distribution + - exploit or expand what we have in LikelihoodResults, cov_params, f_test, + t_test, example: resols_dropf_full.cov_params(C2) + - connect to new multiple comparison for contrast matrices, based on + multivariate normal or t distribution (Hothorn, Bretz, Westfall) + +''' + + + +from __future__ import print_function +from numpy.testing import assert_equal + +from statsmodels.compat.python import zip +import numpy as np + +#next 3 functions copied from multicomp.py + +def contrast_allpairs(nm): + '''contrast or restriction matrix for all pairs of nm variables + + Parameters + ---------- + nm : int + + Returns + ------- + contr : ndarray, 2d, (nm*(nm-1)/2, nm) + contrast matrix for all pairwise comparisons + + ''' + contr = [] + for i in range(nm): + for j in range(i+1, nm): + contr_row = np.zeros(nm) + contr_row[i] = 1 + contr_row[j] = -1 + contr.append(contr_row) + return np.array(contr) + +def contrast_all_one(nm): + '''contrast or restriction matrix for all against first comparison + + Parameters + ---------- + nm : int + + Returns + ------- + contr : ndarray, 2d, (nm-1, nm) + contrast matrix for all against first comparisons + + ''' + contr = np.column_stack((np.ones(nm-1), -np.eye(nm-1))) + return contr + +def contrast_diff_mean(nm): + '''contrast or restriction matrix for all against mean comparison + + Parameters + ---------- + nm : int + + Returns + ------- + contr : ndarray, 2d, (nm-1, nm) + contrast matrix for all against mean comparisons + + ''' + return np.eye(nm) - np.ones((nm,nm))/nm + +def signstr(x, noplus=False): + if x in [-1,0,1]: + if not noplus: + return '+' if np.sign(x)>=0 else '-' + else: + return '' if np.sign(x)>=0 else '-' + else: + return str(x) + + +def contrast_labels(contrasts, names, reverse=False): + if reverse: + sl = slice(None, None, -1) + else: + sl = slice(None) + labels = [''.join(['%s%s' % (signstr(c, noplus=True),v) + for c,v in zip(row, names)[sl] if c != 0]) + for row in contrasts] + return labels + +def contrast_product(names1, names2, intgroup1=None, intgroup2=None, pairs=False): + '''build contrast matrices for products of two categorical variables + + this is an experimental script and should be converted to a class + + Parameters + ---------- + names1, names2 : lists of strings + contains the list of level labels for each categorical variable + intgroup1, intgroup2 : ndarrays TODO: this part not tested, finished yet + categorical variable + + + Notes + ----- + This creates a full rank matrix. It does not do all pairwise comparisons, + parameterization is using contrast_all_one to get differences with first + level. + + ? does contrast_all_pairs work as a plugin to get all pairs ? + + ''' + + n1 = len(names1) + n2 = len(names2) + names_prod = ['%s_%s' % (i,j) for i in names1 for j in names2] + ee1 = np.zeros((1,n1)) + ee1[0,0] = 1 + if not pairs: + dd = np.r_[ee1, -contrast_all_one(n1)] + else: + dd = np.r_[ee1, -contrast_allpairs(n1)] + + contrast_prod = np.kron(dd[1:], np.eye(n2)) + names_contrast_prod0 = contrast_labels(contrast_prod, names_prod, reverse=True) + names_contrast_prod = [''.join(['%s%s' % (signstr(c, noplus=True),v) + for c,v in zip(row, names_prod)[::-1] if c != 0]) + for row in contrast_prod] + + ee2 = np.zeros((1,n2)) + ee2[0,0] = 1 + #dd2 = np.r_[ee2, -contrast_all_one(n2)] + if not pairs: + dd2 = np.r_[ee2, -contrast_all_one(n2)] + else: + dd2 = np.r_[ee2, -contrast_allpairs(n2)] + + contrast_prod2 = np.kron(np.eye(n1), dd2[1:]) + names_contrast_prod2 = [''.join(['%s%s' % (signstr(c, noplus=True),v) + for c,v in zip(row, names_prod)[::-1] if c != 0]) + for row in contrast_prod2] + + if (intgroup1 is not None) and (intgroup1 is not None): + d1, _ = dummy_1d(intgroup1) + d2, _ = dummy_1d(intgroup2) + dummy = dummy_product(d1, d2) + else: + dummy = None + + return (names_prod, contrast_prod, names_contrast_prod, + contrast_prod2, names_contrast_prod2, dummy) + + + + + +def dummy_1d(x, varname=None): + '''dummy variable for id integer groups + + Parameters + ---------- + x : ndarray, 1d + categorical variable, requires integers if varname is None + varname : string + name of the variable used in labels for category levels + + Returns + ------- + dummy : ndarray, 2d + array of dummy variables, one column for each level of the + category (full set) + labels : list of strings + labels for the columns, i.e. levels of each category + + + Notes + ----- + use tools.categorical instead for more more options + + See Also + -------- + statsmodels.tools.categorical + + Examples + -------- + >>> x = np.array(['F', 'F', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F', 'M', 'M'], + dtype='|S1') + >>> dummy_1d(x, varname='gender') + (array([[1, 0], + [1, 0], + [0, 1], + [0, 1], + [1, 0], + [1, 0], + [0, 1], + [0, 1], + [1, 0], + [1, 0], + [0, 1], + [0, 1]]), ['gender_F', 'gender_M']) + + ''' + if varname is None: #assumes integer + labels = ['level_%d' % i for i in range(x.max() + 1)] + return (x[:,None]==np.arange(x.max()+1)).astype(int), labels + else: + grouplabels = np.unique(x) + labels = [varname + '_%s' % str(i) for i in grouplabels] + return (x[:,None]==grouplabels).astype(int), labels + + +def dummy_product(d1, d2, method='full'): + '''dummy variable from product of two dummy variables + + Parameters + ---------- + d1, d2 : ndarray + two dummy variables, assumes full set for methods 'drop-last' + and 'drop-first' + method : {'full', 'drop-last', 'drop-first'} + 'full' returns the full product, encoding of intersection of + categories. + The drop methods provide a difference dummy encoding: + (constant, main effects, interaction effects). The first or last columns + of the dummy variable (i.e. levels) are dropped to get full rank + dummy matrix. + + Returns + ------- + dummy : ndarray + dummy variable for product, see method + + ''' + + if method == 'full': + dd = (d1[:,:,None]*d2[:,None,:]).reshape(d1.shape[0],-1) + elif method == 'drop-last': #same as SAS transreg + d12rl = dummy_product(d1[:,:-1], d2[:,:-1]) + dd = np.column_stack((np.ones(d1.shape[0], int), d1[:,:-1], d2[:,:-1],d12rl)) + #Note: dtype int should preserve dtype of d1 and d2 + elif method == 'drop-first': + d12r = dummy_product(d1[:,1:], d2[:,1:]) + dd = np.column_stack((np.ones(d1.shape[0], int), d1[:,1:], d2[:,1:],d12r)) + else: + raise ValueError('method not recognized') + + return dd + +def dummy_limits(d): + '''start and endpoints of groups in a sorted dummy variable array + + helper function for nested categories + + Examples + -------- + >>> d1 = np.array([[1, 0, 0], + [1, 0, 0], + [1, 0, 0], + [1, 0, 0], + [0, 1, 0], + [0, 1, 0], + [0, 1, 0], + [0, 1, 0], + [0, 0, 1], + [0, 0, 1], + [0, 0, 1], + [0, 0, 1]]) + >>> dummy_limits(d1) + (array([0, 4, 8]), array([ 4, 8, 12])) + + get group slices from an array + + >>> [np.arange(d1.shape[0])[b:e] for b,e in zip(*dummy_limits(d1))] + [array([0, 1, 2, 3]), array([4, 5, 6, 7]), array([ 8, 9, 10, 11])] + >>> [np.arange(d1.shape[0])[b:e] for b,e in zip(*dummy_limits(d1))] + [array([0, 1, 2, 3]), array([4, 5, 6, 7]), array([ 8, 9, 10, 11])] + ''' + nobs, nvars = d.shape + start1, col1 = np.nonzero(np.diff(d,axis=0)==1) + end1, col1_ = np.nonzero(np.diff(d,axis=0)==-1) + cc = np.arange(nvars) + #print(cc, np.r_[[0], col1], np.r_[col1_, [nvars-1]] + if ((not (np.r_[[0], col1] == cc).all()) + or (not (np.r_[col1_, [nvars-1]] == cc).all())): + raise ValueError('dummy variable is not sorted') + + start = np.r_[[0], start1+1] + end = np.r_[end1+1, [nobs]] + return start, end + + + +def dummy_nested(d1, d2, method='full'): + '''unfinished and incomplete mainly copy past dummy_product + dummy variable from product of two dummy variables + + Parameters + ---------- + d1, d2 : ndarray + two dummy variables, d2 is assumed to be nested in d1 + Assumes full set for methods 'drop-last' and 'drop-first'. + method : {'full', 'drop-last', 'drop-first'} + 'full' returns the full product, which in this case is d2. + The drop methods provide an effects encoding: + (constant, main effects, subgroup effects). The first or last columns + of the dummy variable (i.e. levels) are dropped to get full rank + encoding. + + Returns + ------- + dummy : ndarray + dummy variable for product, see method + + ''' + if method == 'full': + return d2 + + start1, end1 = dummy_limits(d1) + start2, end2 = dummy_limits(d2) + first = np.in1d(start2, start1) + last = np.in1d(end2, end1) + equal = (first == last) + col_dropf = ~first*~equal + col_dropl = ~last*~equal + + + if method == 'drop-last': + d12rl = dummy_product(d1[:,:-1], d2[:,:-1]) + dd = np.column_stack((np.ones(d1.shape[0], int), d1[:,:-1], d2[:,col_dropl])) + #Note: dtype int should preserve dtype of d1 and d2 + elif method == 'drop-first': + d12r = dummy_product(d1[:,1:], d2[:,1:]) + dd = np.column_stack((np.ones(d1.shape[0], int), d1[:,1:], d2[:,col_dropf])) + else: + raise ValueError('method not recognized') + + return dd, col_dropf, col_dropl + + +class DummyTransform(object): + '''Conversion between full rank dummy encodings + + + y = X b + u + b = C a + a = C^{-1} b + + y = X C a + u + + define Z = X C, then + + y = Z a + u + + contrasts: + + R_b b = r + + R_a a = R_b C a = r + + where R_a = R_b C + + Here C is the transform matrix, with dot_left and dot_right as the main + methods, and the same for the inverse transform matrix, C^{-1} + + Note: + - The class was mainly written to keep left and right straight. + - No checking is done. + - not sure yet if method names make sense + + + ''' + + def __init__(self, d1, d2): + '''C such that d1 C = d2, with d1 = X, d2 = Z + + should be (x, z) in arguments ? + ''' + self.transf_matrix = np.linalg.lstsq(d1, d2, rcond=-1)[0] + self.invtransf_matrix = np.linalg.lstsq(d2, d1, rcond=-1)[0] + + def dot_left(self, a): + ''' b = C a + ''' + return np.dot(self.transf_matrix, a) + + def dot_right(self, x): + ''' z = x C + ''' + return np.dot(x, self.transf_matrix) + + def inv_dot_left(self, b): + ''' a = C^{-1} b + ''' + return np.dot(self.invtransf_matrix, b) + + def inv_dot_right(self, z): + ''' x = z C^{-1} + ''' + return np.dot(z, self.invtransf_matrix) + + + + + +def groupmean_d(x, d): + '''groupmeans using dummy variables + + Parameters + ---------- + x : array_like, ndim + data array, tested for 1,2 and 3 dimensions + d : ndarray, 1d + dummy variable, needs to have the same length + as x in axis 0. + + Returns + ------- + groupmeans : ndarray, ndim-1 + means for each group along axis 0, the levels + of the groups are the last axis + + Notes + ----- + This will be memory intensive if there are many levels + in the categorical variable, i.e. many columns in the + dummy variable. In this case it is recommended to use + a more efficient version. + + ''' + x = np.asarray(x) +## if x.ndim == 1: +## nvars = 1 +## else: + nvars = x.ndim + 1 + sli = [slice(None)] + [None]*(nvars-2) + [slice(None)] + return (x[...,None] * d[sli]).sum(0)*1./d.sum(0) + + + +class TwoWay(object): + '''a wrapper class for two way anova type of analysis with OLS + + + currently mainly to bring things together + + Notes + ----- + unclear: adding multiple test might assume block design or orthogonality + + This estimates the full dummy version with OLS. + The drop first dummy representation can be recovered through the + transform method. + + TODO: add more methods, tests, pairwise, multiple, marginal effects + try out what can be added for userfriendly access. + + missing: ANOVA table + + ''' + def __init__(self, endog, factor1, factor2, varnames=None): + self.nobs = factor1.shape[0] + if varnames is None: + vname1 = 'a' + vname2 = 'b' + else: + vname1, vname1 = varnames + + self.d1, self.d1_labels = d1, d1_labels = dummy_1d(factor1, vname1) + self.d2, self.d2_labels = d2, d2_labels = dummy_1d(factor2, vname2) + self.nlevel1 = nlevel1 = d1.shape[1] + self.nlevel2 = nlevel2 = d2.shape[1] + + + #get product dummies + res = contrast_product(d1_labels, d2_labels) + prodlab, C1, C1lab, C2, C2lab, _ = res + self.prod_label, self.C1, self.C1_label, self.C2, self.C2_label, _ = res + dp_full = dummy_product(d1, d2, method='full') + dp_dropf = dummy_product(d1, d2, method='drop-first') + self.transform = DummyTransform(dp_full, dp_dropf) + + #estimate the model + self.nvars = dp_full.shape[1] + self.exog = dp_full + self.resols = sm.OLS(endog, dp_full).fit() + self.params = self.resols.params + + #get transformed parameters, (constant, main, interaction effect) + self.params_dropf = self.transform.inv_dot_left(self.params) + self.start_interaction = 1 + (nlevel1 - 1) + (nlevel2 - 1) + self.n_interaction = self.nvars - self.start_interaction + + #convert to cached property + def r_nointer(self): + '''contrast/restriction matrix for no interaction + ''' + nia = self.n_interaction + R_nointer = np.hstack((np.zeros((nia, self.nvars-nia)), np.eye(nia))) + #inter_direct = resols_full_dropf.tval[-nia:] + R_nointer_transf = self.transform.inv_dot_right(R_nointer) + self.R_nointer_transf = R_nointer_transf + return R_nointer_transf + + def ttest_interaction(self): + '''ttests for no-interaction terms are zero + ''' + #use self.r_nointer instead + nia = self.n_interaction + R_nointer = np.hstack((np.zeros((nia, self.nvars-nia)), np.eye(nia))) + #inter_direct = resols_full_dropf.tval[-nia:] + R_nointer_transf = self.transform.inv_dot_right(R_nointer) + self.R_nointer_transf = R_nointer_transf + t_res = self.resols.t_test(R_nointer_transf) + return t_res + + def ftest_interaction(self): + '''ttests for no-interaction terms are zero + ''' + R_nointer_transf = self.r_nointer() + return self.resols.f_test(R_nointer_transf) + + def ttest_conditional_effect(self, factorind): + if factorind == 1: + return self.resols.t_test(self.C1), self.C1_label + else: + return self.resols.t_test(self.C2), self.C2_label + + def summary_coeff(self): + from statsmodels.iolib import SimpleTable + params_arr = self.params.reshape(self.nlevel1, self.nlevel2) + stubs = self.d1_labels + headers = self.d2_labels + title = 'Estimated Coefficients by factors' + table_fmt = dict( + data_fmts = ["%#10.4g"]*self.nlevel2) + return SimpleTable(params_arr, headers, stubs, title=title, + txt_fmt=table_fmt) + + +# --------------- tests +# TODO: several tests still missing, several are in the example with print + +class TestContrastTools(object): + + def __init__(self): + self.v1name = ['a0', 'a1', 'a2'] + self.v2name = ['b0', 'b1'] + self.d1 = np.array([[1, 0, 0], + [1, 0, 0], + [1, 0, 0], + [1, 0, 0], + [0, 1, 0], + [0, 1, 0], + [0, 1, 0], + [0, 1, 0], + [0, 0, 1], + [0, 0, 1], + [0, 0, 1], + [0, 0, 1]]) + + def test_dummy_1d(self): + x = np.array(['F', 'F', 'M', 'M', 'F', 'F', 'M', 'M', 'F', 'F', 'M', 'M'], + dtype='|S1') + d, labels = (np.array([[1, 0], + [1, 0], + [0, 1], + [0, 1], + [1, 0], + [1, 0], + [0, 1], + [0, 1], + [1, 0], + [1, 0], + [0, 1], + [0, 1]]), ['gender_F', 'gender_M']) + res_d, res_labels = dummy_1d(x, varname='gender') + assert_equal(res_d, d) + assert_equal(res_labels, labels) + + def test_contrast_product(self): + res_cp = contrast_product(self.v1name, self.v2name) + res_t = [0]*6 + res_t[0] = ['a0_b0', 'a0_b1', 'a1_b0', 'a1_b1', 'a2_b0', 'a2_b1'] + res_t[1] = np.array([[-1., 0., 1., 0., 0., 0.], + [ 0., -1., 0., 1., 0., 0.], + [-1., 0., 0., 0., 1., 0.], + [ 0., -1., 0., 0., 0., 1.]]) + res_t[2] = ['a1_b0-a0_b0', 'a1_b1-a0_b1', 'a2_b0-a0_b0', 'a2_b1-a0_b1'] + res_t[3] = np.array([[-1., 1., 0., 0., 0., 0.], + [ 0., 0., -1., 1., 0., 0.], + [ 0., 0., 0., 0., -1., 1.]]) + res_t[4] = ['a0_b1-a0_b0', 'a1_b1-a1_b0', 'a2_b1-a2_b0'] + for ii in range(5): + np.testing.assert_equal(res_cp[ii], res_t[ii], err_msg=str(ii)) + + def test_dummy_limits(self): + b,e = dummy_limits(self.d1) + assert_equal(b, np.array([0, 4, 8])) + assert_equal(e, np.array([ 4, 8, 12])) + + + + +if __name__ == '__main__': + tt = TestContrastTools() + tt.test_contrast_product() + tt.test_dummy_1d() + tt.test_dummy_limits() + + import statsmodels.api as sm + + examples = ['small', 'large', None][1] + + v1name = ['a0', 'a1', 'a2'] + v2name = ['b0', 'b1'] + res_cp = contrast_product(v1name, v2name) + print(res_cp) + + y = np.arange(12) + x1 = np.arange(12)//4 + x2 = np.arange(12)//2 % 2 + + if 'small' in examples: + d1, d1_labels = dummy_1d(x1) + d2, d2_labels = dummy_1d(x2) + + + if 'large' in examples: + x1 = np.repeat(x1, 5, axis=0) + x2 = np.repeat(x2, 5, axis=0) + + nobs = x1.shape[0] + d1, d1_labels = dummy_1d(x1) + d2, d2_labels = dummy_1d(x2) + + dd_full = dummy_product(d1, d2, method='full') + dd_dropl = dummy_product(d1, d2, method='drop-last') + dd_dropf = dummy_product(d1, d2, method='drop-first') + + #Note: full parameterization of dummies is orthogonal + #np.eye(6)*10 in "large" example + print((np.dot(dd_full.T, dd_full) == np.diag(dd_full.sum(0))).all()) + + #check that transforms work + #generate 3 data sets with the 3 different parameterizations + + effect_size = [1., 0.01][1] + noise_scale = [0.001, 0.1][0] + noise = noise_scale * np.random.randn(nobs) + beta = effect_size * np.arange(1,7) + ydata_full = (dd_full * beta).sum(1) + noise + ydata_dropl = (dd_dropl * beta).sum(1) + noise + ydata_dropf = (dd_dropf * beta).sum(1) + noise + + resols_full_full = sm.OLS(ydata_full, dd_full).fit() + resols_full_dropf = sm.OLS(ydata_full, dd_dropf).fit() + params_f_f = resols_full_full.params + params_f_df = resols_full_dropf.params + + resols_dropf_full = sm.OLS(ydata_dropf, dd_full).fit() + resols_dropf_dropf = sm.OLS(ydata_dropf, dd_dropf).fit() + params_df_f = resols_dropf_full.params + params_df_df = resols_dropf_dropf.params + + + tr_of = np.linalg.lstsq(dd_dropf, dd_full, rcond=-1)[0] + tr_fo = np.linalg.lstsq(dd_full, dd_dropf, rcond=-1)[0] + print(np.dot(tr_fo, params_df_df) - params_df_f) + print(np.dot(tr_of, params_f_f) - params_f_df) + + transf_f_df = DummyTransform(dd_full, dd_dropf) + print(np.max(np.abs((dd_full - transf_f_df.inv_dot_right(dd_dropf))))) + print(np.max(np.abs((dd_dropf - transf_f_df.dot_right(dd_full))))) + print(np.max(np.abs((params_df_df + - transf_f_df.inv_dot_left(params_df_f))))) + np.max(np.abs((params_f_df + - transf_f_df.inv_dot_left(params_f_f)))) + + prodlab, C1, C1lab, C2, C2lab,_ = contrast_product(v1name, v2name) + + print('\ntvalues for no effect of factor 1') + print('each test is conditional on a level of factor 2') + print(C1lab) + print(resols_dropf_full.t_test(C1).tvalue) + + print('\ntvalues for no effect of factor 2') + print('each test is conditional on a level of factor 1') + print(C2lab) + print(resols_dropf_full.t_test(C2).tvalue) + + #covariance matrix of restrictions C2, note: orthogonal + resols_dropf_full.cov_params(C2) + + #testing for no interaction effect + R_noint = np.hstack((np.zeros((2,4)), np.eye(2))) + inter_direct = resols_full_dropf.tvalues[-2:] + inter_transf = resols_full_full.t_test(transf_f_df.inv_dot_right(R_noint)).tvalue + print(np.max(np.abs((inter_direct - inter_transf)))) + + #now with class version + tw = TwoWay(ydata_dropf, x1, x2) + print(tw.ttest_interaction().tvalue) + print(tw.ttest_interaction().pvalue) + print(tw.ftest_interaction().fvalue) + print(tw.ftest_interaction().pvalue) + print(tw.ttest_conditional_effect(1)[0].tvalue) + print(tw.ttest_conditional_effect(2)[0].tvalue) + print(tw.summary_coeff()) + + + + + + + + + + + + + + + + + +''' documentation for early examples while developing - some have changed already +>>> y = np.arange(12) +>>> y +array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]) +>>> x1 = np.arange(12)//4 +>>> x1 +array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]) +>>> x2 = np.arange(12)//2%2 +>>> x2 +array([0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1]) + +>>> d1 = dummy_1d(x1) +>>> d1 +array([[1, 0, 0], + [1, 0, 0], + [1, 0, 0], + [1, 0, 0], + [0, 1, 0], + [0, 1, 0], + [0, 1, 0], + [0, 1, 0], + [0, 0, 1], + [0, 0, 1], + [0, 0, 1], + [0, 0, 1]]) + +>>> d2 = dummy_1d(x2) +>>> d2 +array([[1, 0], + [1, 0], + [0, 1], + [0, 1], + [1, 0], + [1, 0], + [0, 1], + [0, 1], + [1, 0], + [1, 0], + [0, 1], + [0, 1]]) + +>>> d12 = dummy_product(d1, d2) +>>> d12 +array([[1, 0, 0, 0, 0, 0], + [1, 0, 0, 0, 0, 0], + [0, 1, 0, 0, 0, 0], + [0, 1, 0, 0, 0, 0], + [0, 0, 1, 0, 0, 0], + [0, 0, 1, 0, 0, 0], + [0, 0, 0, 1, 0, 0], + [0, 0, 0, 1, 0, 0], + [0, 0, 0, 0, 1, 0], + [0, 0, 0, 0, 1, 0], + [0, 0, 0, 0, 0, 1], + [0, 0, 0, 0, 0, 1]]) + + +>>> d12rl = dummy_product(d1[:,:-1], d2[:,:-1]) +>>> np.column_stack((np.ones(d1.shape[0]), d1[:,:-1], d2[:,:-1],d12rl)) +array([[ 1., 1., 0., 1., 1., 0.], + [ 1., 1., 0., 1., 1., 0.], + [ 1., 1., 0., 0., 0., 0.], + [ 1., 1., 0., 0., 0., 0.], + [ 1., 0., 1., 1., 0., 1.], + [ 1., 0., 1., 1., 0., 1.], + [ 1., 0., 1., 0., 0., 0.], + [ 1., 0., 1., 0., 0., 0.], + [ 1., 0., 0., 1., 0., 0.], + [ 1., 0., 0., 1., 0., 0.], + [ 1., 0., 0., 0., 0., 0.], + [ 1., 0., 0., 0., 0., 0.]]) +''' + + + + +#nprod = ['%s_%s' % (i,j) for i in ['a0', 'a1', 'a2'] for j in ['b0', 'b1']] +#>>> [''.join(['%s%s' % (signstr(c),v) for c,v in zip(row, nprod) if c != 0]) +# for row in np.kron(dd[1:], np.eye(2))] + + + +''' +>>> nprod = ['%s_%s' % (i,j) for i in ['a0', 'a1', 'a2'] for j in ['b0', 'b1']] +>>> nprod +['a0_b0', 'a0_b1', 'a1_b0', 'a1_b1', 'a2_b0', 'a2_b1'] +>>> [''.join(['%s%s' % (signstr(c),v) for c,v in zip(row, nprod) if c != 0]) for row in np.kron(dd[1:], np.eye(2))] +['-a0b0+a1b0', '-a0b1+a1b1', '-a0b0+a2b0', '-a0b1+a2b1'] +>>> [''.join(['%s%s' % (signstr(c),v) for c,v in zip(row, nprod)[::-1] if c != 0]) for row in np.kron(dd[1:], np.eye(2))] +['+a1_b0-a0_b0', '+a1_b1-a0_b1', '+a2_b0-a0_b0', '+a2_b1-a0_b1'] + +>>> np.r_[[[1,0,0,0,0]],contrast_all_one(5)] +array([[ 1., 0., 0., 0., 0.], + [ 1., -1., 0., 0., 0.], + [ 1., 0., -1., 0., 0.], + [ 1., 0., 0., -1., 0.], + [ 1., 0., 0., 0., -1.]]) + +>>> idxprod = [(i,j) for i in range(3) for j in range(2)] +>>> idxprod +[(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)] +>>> np.array(idxprod).reshape(2,3,2,order='F')[:,:,0] +array([[0, 1, 2], + [0, 1, 2]]) +>>> np.array(idxprod).reshape(2,3,2,order='F')[:,:,1] +array([[0, 0, 0], + [1, 1, 1]]) +>>> dd3_ = np.r_[[[0,0,0]],contrast_all_one(3)] + + + +pairwise contrasts and reparameterization + +dd = np.r_[[[1,0,0,0,0]],-contrast_all_one(5)] +>>> dd +array([[ 1., 0., 0., 0., 0.], + [-1., 1., 0., 0., 0.], + [-1., 0., 1., 0., 0.], + [-1., 0., 0., 1., 0.], + [-1., 0., 0., 0., 1.]]) +>>> np.dot(dd.T, np.arange(5)) +array([-10., 1., 2., 3., 4.]) +>>> np.round(np.linalg.inv(dd.T)).astype(int) +array([[1, 1, 1, 1, 1], + [0, 1, 0, 0, 0], + [0, 0, 1, 0, 0], + [0, 0, 0, 1, 0], + [0, 0, 0, 0, 1]]) +>>> np.round(np.linalg.inv(dd)).astype(int) +array([[1, 0, 0, 0, 0], + [1, 1, 0, 0, 0], + [1, 0, 1, 0, 0], + [1, 0, 0, 1, 0], + [1, 0, 0, 0, 1]]) +>>> dd +array([[ 1., 0., 0., 0., 0.], + [-1., 1., 0., 0., 0.], + [-1., 0., 1., 0., 0.], + [-1., 0., 0., 1., 0.], + [-1., 0., 0., 0., 1.]]) +>>> ddinv=np.round(np.linalg.inv(dd.T)).astype(int) +>>> np.dot(ddinv, np.arange(5)) +array([10, 1, 2, 3, 4]) +>>> np.dot(dd, np.arange(5)) +array([ 0., 1., 2., 3., 4.]) +>>> np.dot(dd, 5+np.arange(5)) +array([ 5., 1., 2., 3., 4.]) +>>> ddinv2 = np.round(np.linalg.inv(dd)).astype(int) +>>> np.dot(ddinv2, np.arange(5)) +array([0, 1, 2, 3, 4]) +>>> np.dot(ddinv2, 5+np.arange(5)) +array([ 5, 11, 12, 13, 14]) +>>> np.dot(ddinv2, [5, 0, 0 , 1, 2]) +array([5, 5, 5, 6, 7]) +>>> np.dot(ddinv2, dd) +array([[ 1., 0., 0., 0., 0.], + [ 0., 1., 0., 0., 0.], + [ 0., 0., 1., 0., 0.], + [ 0., 0., 0., 1., 0.], + [ 0., 0., 0., 0., 1.]]) + + + +>>> dd3 = -np.r_[[[1,0,0]],contrast_all_one(3)] +>>> dd2 = -np.r_[[[1,0]],contrast_all_one(2)] +>>> np.kron(np.eye(3), dd2) +array([[-1., 0., 0., 0., 0., 0.], + [-1., 1., 0., 0., 0., 0.], + [ 0., 0., -1., 0., 0., 0.], + [ 0., 0., -1., 1., 0., 0.], + [ 0., 0., 0., 0., -1., 0.], + [ 0., 0., 0., 0., -1., 1.]]) +>>> dd2 +array([[-1., 0.], + [-1., 1.]]) +>>> np.kron(np.eye(3), dd2[1:]) +array([[-1., 1., 0., 0., 0., 0.], + [ 0., 0., -1., 1., 0., 0.], + [ 0., 0., 0., 0., -1., 1.]]) +>>> np.kron(dd[1:], np.eye(2)) +array([[-1., 0., 1., 0., 0., 0.], + [ 0., -1., 0., 1., 0., 0.], + [-1., 0., 0., 0., 1., 0.], + [ 0., -1., 0., 0., 0., 1.]]) + + + +d_ = np.r_[[[1,0,0,0,0]],contrast_all_one(5)] +>>> d_ +array([[ 1., 0., 0., 0., 0.], + [ 1., -1., 0., 0., 0.], + [ 1., 0., -1., 0., 0.], + [ 1., 0., 0., -1., 0.], + [ 1., 0., 0., 0., -1.]]) +>>> np.round(np.linalg.pinv(d_)).astype(int) +array([[ 1, 0, 0, 0, 0], + [ 1, -1, 0, 0, 0], + [ 1, 0, -1, 0, 0], + [ 1, 0, 0, -1, 0], + [ 1, 0, 0, 0, -1]]) +>>> np.linalg.inv(d_).astype(int) +array([[ 1, 0, 0, 0, 0], + [ 1, -1, 0, 0, 0], + [ 1, 0, -1, 0, 0], + [ 1, 0, 0, -1, 0], + [ 1, 0, 0, 0, -1]]) + + +group means + +>>> sli = [slice(None)] + [None]*(3-2) + [slice(None)] +>>> (np.column_stack((y, x1, x2))[...,None] * d1[sli]).sum(0)*1./d1.sum(0) +array([[ 1.5, 5.5, 9.5], + [ 0. , 1. , 2. ], + [ 0.5, 0.5, 0.5]]) + +>>> [(z[:,None] * d1).sum(0)*1./d1.sum(0) for z in np.column_stack((y, x1, x2)).T] +[array([ 1.5, 5.5, 9.5]), array([ 0., 1., 2.]), array([ 0.5, 0.5, 0.5])] +>>> + +''' diff --git a/statsmodels/sandbox/stats/diagnostic.py b/statsmodels/sandbox/stats/diagnostic.py new file mode 100644 index 0000000..3ee099d --- /dev/null +++ b/statsmodels/sandbox/stats/diagnostic.py @@ -0,0 +1,1565 @@ +# -*- coding: utf-8 -*- +"""Various Statistical Tests + + +Author: josef-pktd +License: BSD-3 + +Notes +----- +Almost fully verified against R or Gretl, not all options are the same. +In many cases of Lagrange multiplier tests both the LM test and the F test is +returned. In some but not all cases, R has the option to choose the test +statistic. Some alternative test statistic results have not been verified. + + +TODO +* refactor to store intermediate results +* how easy is it to attach a test that is a class to a result instance, + for example CompareCox as a method compare_cox(self, other) ? + +missing: + +* pvalues for breaks_hansen +* additional options, compare with R, check where ddof is appropriate +* new tests: + - breaks_ap, more recent breaks tests + - specification tests against nonparametric alternatives + + +""" +from __future__ import print_function +from statsmodels.compat.python import iteritems, map, long +import numpy as np +from scipy import stats +from statsmodels.regression.linear_model import OLS +from statsmodels.tsa.stattools import acf, adfuller +from statsmodels.tsa.tsatools import lagmat + + +# get the old signature back so the examples work +def unitroot_adf(x, maxlag=None, trendorder=0, autolag='AIC', store=False): + return adfuller(x, maxlag=maxlag, regression=trendorder, autolag=autolag, + store=store, regresults=False) + + +#TODO: I like the bunch pattern for this too. +class ResultsStore(object): + def __str__(self): + return self._str + + + +class CompareCox(object): + '''Cox Test for non-nested models + + Parameters + ---------- + results_x : Result instance + result instance of first model + results_z : Result instance + result instance of second model + attach : bool + + + Formulas from Greene, section 8.3.4 translated to code + + produces correct results for Example 8.3, Greene + + + ''' + + + def run(self, results_x, results_z, attach=True): + '''run Cox test for non-nested models + + Parameters + ---------- + results_x : Result instance + result instance of first model + results_z : Result instance + result instance of second model + attach : bool + If true, then the intermediate results are attached to the instance. + + Returns + ------- + tstat : float + t statistic for the test that including the fitted values of the + first model in the second model has no effect. + pvalue : float + two-sided pvalue for the t statistic + + Notes + ----- + Tests of non-nested hypothesis might not provide unambiguous answers. + The test should be performed in both directions and it is possible + that both or neither test rejects. see ??? for more information. + + References + ---------- + ??? + + ''' + + if not np.allclose(results_x.model.endog, results_z.model.endog): + raise ValueError('endogenous variables in models are not the same') + nobs = results_x.model.endog.shape[0] + x = results_x.model.exog + z = results_z.model.exog + sigma2_x = results_x.ssr/nobs + sigma2_z = results_z.ssr/nobs + yhat_x = results_x.fittedvalues + yhat_z = results_z.fittedvalues + res_dx = OLS(yhat_x, z).fit() + err_zx = res_dx.resid + res_xzx = OLS(err_zx, x).fit() + err_xzx = res_xzx.resid + + sigma2_zx = sigma2_x + np.dot(err_zx.T, err_zx)/nobs + c01 = nobs/2. * (np.log(sigma2_z) - np.log(sigma2_zx)) + v01 = sigma2_x * np.dot(err_xzx.T, err_xzx) / sigma2_zx**2 + q = c01 / np.sqrt(v01) + pval = 2*stats.norm.sf(np.abs(q)) + + if attach: + self.res_dx = res_dx + self.res_xzx = res_xzx + self.c01 = c01 + self.v01 = v01 + self.q = q + self.pvalue = pval + self.dist = stats.norm + + return q, pval + + def __call__(self, results_x, results_z): + return self.run(results_x, results_z, attach=False) + + +compare_cox = CompareCox() +compare_cox.__doc__ = CompareCox.__doc__ + + +class CompareJ(object): + '''J-Test for comparing non-nested models + + Parameters + ---------- + results_x : Result instance + result instance of first model + results_z : Result instance + result instance of second model + attach : bool + + + From description in Greene, section 8.3.3 + + produces correct results for Example 8.3, Greene - not checked yet + #currently an exception, but I don't have clean reload in python session + + check what results should be attached + + ''' + + + def run(self, results_x, results_z, attach=True): + '''run J-test for non-nested models + + Parameters + ---------- + results_x : Result instance + result instance of first model + results_z : Result instance + result instance of second model + attach : bool + If true, then the intermediate results are attached to the instance. + + Returns + ------- + tstat : float + t statistic for the test that including the fitted values of the + first model in the second model has no effect. + pvalue : float + two-sided pvalue for the t statistic + + Notes + ----- + Tests of non-nested hypothesis might not provide unambiguous answers. + The test should be performed in both directions and it is possible + that both or neither test rejects. see ??? for more information. + + References + ---------- + ??? + + ''' + if not np.allclose(results_x.model.endog, results_z.model.endog): + raise ValueError('endogenous variables in models are not the same') + nobs = results_x.model.endog.shape[0] + y = results_x.model.endog + x = results_x.model.exog + z = results_z.model.exog + #sigma2_x = results_x.ssr/nobs + #sigma2_z = results_z.ssr/nobs + yhat_x = results_x.fittedvalues + #yhat_z = results_z.fittedvalues + res_zx = OLS(y, np.column_stack((yhat_x, z))).fit() + self.res_zx = res_zx #for testing + tstat = res_zx.tvalues[0] + pval = res_zx.pvalues[0] + if attach: + self.res_zx = res_zx + self.dist = stats.t(res_zx.df_resid) + self.teststat = tstat + self.pvalue = pval + + return tstat, pval + + def __call__(self, results_x, results_z): + return self.run(results_x, results_z, attach=False) + + +compare_j = CompareJ() +compare_j.__doc__ = CompareJ.__doc__ + + +def acorr_ljungbox(x, lags=None, boxpierce=False): + """ + Ljung-Box test for no autocorrelation + + Parameters + ---------- + x : array_like, 1d + data series, regression residuals when used as diagnostic test + lags : None, int or array_like + If lags is an integer then this is taken to be the largest lag + that is included, the test result is reported for all smaller lag length. + If lags is a list or array, then all lags are included up to the largest + lag in the list, however only the tests for the lags in the list are + reported. + If lags is None, then the default maxlag is 'min((nobs // 2 - 2), 40)' + boxpierce : {False, True} + If true, then additional to the results of the Ljung-Box test also the + Box-Pierce test results are returned + + Returns + ------- + lbvalue : float or array + test statistic + pvalue : float or array + p-value based on chi-square distribution + bpvalue : (optional), float or array + test statistic for Box-Pierce test + bppvalue : (optional), float or array + p-value based for Box-Pierce test on chi-square distribution + + Notes + ----- + Ljung-Box and Box-Pierce statistic differ in their scaling of the + autocorrelation function. Ljung-Box test is reported to have better + small sample properties. + + TODO: could be extended to work with more than one series + 1d or nd ? axis ? ravel ? + needs more testing + + *Verification* + + Looks correctly sized in Monte Carlo studies. + not yet compared to verified values + + Examples + -------- + see example script + + References + ---------- + Greene + Wikipedia + """ + x = np.asarray(x) + nobs = x.shape[0] + if lags is None: + lags = np.arange(1, min((nobs // 2 - 2), 40) + 1) + elif isinstance(lags, (int, long)): + lags = np.arange(1, lags + 1) + lags = np.asarray(lags) + maxlag = max(lags) + # normalize by nobs not (nobs-nlags) + # SS: unbiased=False is default now + acfx = acf(x, nlags=maxlag, fft=False) + acf2norm = acfx[1:maxlag+1]**2 / (nobs - np.arange(1,maxlag+1)) + qljungbox = nobs * (nobs+2) * np.cumsum(acf2norm)[lags-1] + pval = stats.chi2.sf(qljungbox, lags) + if not boxpierce: + return qljungbox, pval + else: + qboxpierce = nobs * np.cumsum(acfx[1:maxlag+1]**2)[lags-1] + pvalbp = stats.chi2.sf(qboxpierce, lags) + return qljungbox, pval, qboxpierce, pvalbp + + +def acorr_lm(x, maxlag=None, autolag='AIC', store=False, regresults=False): + '''Lagrange Multiplier tests for autocorrelation + + This is a generic Lagrange Multiplier test for autocorrelation. I don't + have a reference for it, but it returns Engle's ARCH test if x is the + squared residual array. A variation on it with additional exogenous + variables is the Breusch-Godfrey autocorrelation test. + + Parameters + ---------- + resid : ndarray, (nobs,) + residuals from an estimation, or time series + maxlag : int + highest lag to use + autolag : None or string + If None, then a fixed number of lags given by maxlag is used. + store : bool + If true then the intermediate results are also returned + + Returns + ------- + lm : float + Lagrange multiplier test statistic + lmpval : float + p-value for Lagrange multiplier test + fval : float + fstatistic for F test, alternative version of the same test based on + F test for the parameter restriction + fpval : float + pvalue for F test + resstore : instance (optional) + a class instance that holds intermediate results. Only returned if + store=True + + See Also + -------- + het_arch + acorr_breusch_godfrey + acorr_ljung_box + + ''' + + if regresults: + store = True + + x = np.asarray(x) + nobs = x.shape[0] + if maxlag is None: + #for adf from Greene referencing Schwert 1989 + maxlag = int(np.ceil(12. * np.power(nobs/100., 1/4.)))#nobs//4 #TODO: check default, or do AIC/BIC + + + xdiff = np.diff(x) + # + xdall = lagmat(x[:,None], maxlag, trim='both') + nobs = xdall.shape[0] + xdall = np.c_[np.ones((nobs,1)), xdall] + xshort = x[-nobs:] + + if store: resstore = ResultsStore() + + if autolag: + #search for lag length with highest information criteria + #Note: I use the same number of observations to have comparable IC + results = {} + for mlag in range(1, maxlag+1): + results[mlag] = OLS(xshort, xdall[:,:mlag+1]).fit() + + if autolag.lower() == 'aic': + bestic, icbestlag = min((v.aic,k) for k,v in iteritems(results)) + elif autolag.lower() == 'bic': + icbest, icbestlag = min((v.bic,k) for k,v in iteritems(results)) + else: + raise ValueError("autolag can only be None, 'AIC' or 'BIC'") + + #rerun ols with best ic + xdall = lagmat(x[:,None], icbestlag, trim='both') + nobs = xdall.shape[0] + xdall = np.c_[np.ones((nobs,1)), xdall] + xshort = x[-nobs:] + usedlag = icbestlag + if regresults: + resstore.results = results + else: + usedlag = maxlag + + resols = OLS(xshort, xdall[:,:usedlag+1]).fit() + fval = resols.fvalue + fpval = resols.f_pvalue + lm = nobs * resols.rsquared + lmpval = stats.chi2.sf(lm, usedlag) + # Note: degrees of freedom for LM test is nvars minus constant = usedlags + #return fval, fpval, lm, lmpval + + if store: + resstore.resols = resols + resstore.usedlag = usedlag + return lm, lmpval, fval, fpval, resstore + else: + return lm, lmpval, fval, fpval + +def het_arch(resid, maxlag=None, autolag=None, store=False, regresults=False, + ddof=0): + '''Engle's Test for Autoregressive Conditional Heteroscedasticity (ARCH) + + Parameters + ---------- + resid : ndarray + residuals from an estimation, or time series + maxlag : int + highest lag to use + autolag : None or string + If None, then a fixed number of lags given by maxlag is used. + store : bool + If true then the intermediate results are also returned + ddof : int + Not Implemented Yet + If the residuals are from a regression, or ARMA estimation, then there + are recommendations to correct the degrees of freedom by the number + of parameters that have been estimated, for example ddof=p+a for an + ARMA(p,q) (need reference, based on discussion on R finance mailinglist) + + Returns + ------- + lm : float + Lagrange multiplier test statistic + lmpval : float + p-value for Lagrange multiplier test + fval : float + fstatistic for F test, alternative version of the same test based on + F test for the parameter restriction + fpval : float + pvalue for F test + resstore : instance (optional) + a class instance that holds intermediate results. Only returned if + store=True + + Notes + ----- + verified agains R:FinTS::ArchTest + + ''' + + return acorr_lm(resid**2, maxlag=maxlag, autolag=autolag, store=store, + regresults=regresults) + + +def acorr_breusch_godfrey(results, nlags=None, store=False): + '''Breusch Godfrey Lagrange Multiplier tests for residual autocorrelation + + Parameters + ---------- + results : Result instance + Estimation results for which the residuals are tested for serial + correlation + nlags : int + Number of lags to include in the auxiliary regression. (nlags is + highest lag) + store : bool + If store is true, then an additional class instance that contains + intermediate results is returned. + + Returns + ------- + lm : float + Lagrange multiplier test statistic + lmpval : float + p-value for Lagrange multiplier test + fval : float + fstatistic for F test, alternative version of the same test based on + F test for the parameter restriction + fpval : float + pvalue for F test + resstore : instance (optional) + a class instance that holds intermediate results. Only returned if + store=True + + Notes + ----- + BG adds lags of residual to exog in the design matrix for the auxiliary + regression with residuals as endog, + see Greene 12.7.1. + + References + ---------- + Greene Econometrics, 5th edition + + ''' + + x = np.asarray(results.resid) + exog_old = results.model.exog + nobs = x.shape[0] + if nlags is None: + #for adf from Greene referencing Schwert 1989 + nlags = np.trunc(12. * np.power(nobs/100., 1/4.))#nobs//4 #TODO: check default, or do AIC/BIC + nlags = int(nlags) + + x = np.concatenate((np.zeros(nlags), x)) + + #xdiff = np.diff(x) + # + xdall = lagmat(x[:,None], nlags, trim='both') + nobs = xdall.shape[0] + xdall = np.c_[np.ones((nobs,1)), xdall] + xshort = x[-nobs:] + exog = np.column_stack((exog_old, xdall)) + k_vars = exog.shape[1] + + if store: resstore = ResultsStore() + + resols = OLS(xshort, exog).fit() + ft = resols.f_test(np.eye(nlags, k_vars, k_vars - nlags)) + fval = ft.fvalue + fpval = ft.pvalue + fval = np.squeeze(fval)[()] #TODO: fix this in ContrastResults + fpval = np.squeeze(fpval)[()] + lm = nobs * resols.rsquared + lmpval = stats.chi2.sf(lm, nlags) + # Note: degrees of freedom for LM test is nvars minus constant = usedlags + #return fval, fpval, lm, lmpval + + if store: + resstore.resols = resols + resstore.usedlag = nlags + return lm, lmpval, fval, fpval, resstore + else: + return lm, lmpval, fval, fpval + + +def het_breuschpagan(resid, exog_het): + r'''Breusch-Pagan Lagrange Multiplier test for heteroscedasticity + + The tests the hypothesis that the residual variance does not depend on + the variables in x in the form + + :math: \sigma_i = \sigma * f(\alpha_0 + \alpha z_i) + + Homoscedasticity implies that $\alpha=0$ + + + Parameters + ---------- + resid : array-like + For the Breusch-Pagan test, this should be the residual of a regression. + If an array is given in exog, then the residuals are calculated by + the an OLS regression or resid on exog. In this case resid should + contain the dependent variable. Exog can be the same as x. + TODO: I dropped the exog option, should I add it back? + exog_het : array_like + This contains variables that might create data dependent + heteroscedasticity. + + Returns + ------- + lm : float + lagrange multiplier statistic + lm_pvalue :float + p-value of lagrange multiplier test + fvalue : float + f-statistic of the hypothesis that the error variance does not depend + on x + f_pvalue : float + p-value for the f-statistic + + Notes + ----- + Assumes x contains constant (for counting dof and calculation of R^2). + In the general description of LM test, Greene mentions that this test + exaggerates the significance of results in small or moderately large + samples. In this case the F-statistic is preferrable. + + *Verification* + + Chisquare test statistic is exactly (<1e-13) the same result as bptest + in R-stats with defaults (studentize=True). + + Implementation + This is calculated using the generic formula for LM test using $R^2$ + (Greene, section 17.6) and not with the explicit formula + (Greene, section 11.4.3). + The degrees of freedom for the p-value assume x is full rank. + + References + ---------- + http://en.wikipedia.org/wiki/Breusch%E2%80%93Pagan_test + Greene 5th edition + Breusch, Pagan article + + ''' + + x = np.asarray(exog_het) + y = np.asarray(resid)**2 + nobs, nvars = x.shape + resols = OLS(y, x).fit() + fval = resols.fvalue + fpval = resols.f_pvalue + lm = nobs * resols.rsquared + # Note: degrees of freedom for LM test is nvars minus constant + return lm, stats.chi2.sf(lm, nvars-1), fval, fpval + + +def het_white(resid, exog, retres=False): + '''White's Lagrange Multiplier Test for Heteroscedasticity + + Parameters + ---------- + resid : array_like + residuals, square of it is used as endogenous variable + exog : array_like + possible explanatory variables for variance, squares and interaction + terms are included in the auxilliary regression. + resstore : instance (optional) + a class instance that holds intermediate results. Only returned if + store=True + + Returns + ------- + lm : float + lagrange multiplier statistic + lm_pvalue :float + p-value of lagrange multiplier test + fvalue : float + f-statistic of the hypothesis that the error variance does not depend + on x. This is an alternative test variant not the original LM test. + f_pvalue : float + p-value for the f-statistic + + Notes + ----- + assumes x contains constant (for counting dof) + + question: does f-statistic make sense? constant ? + + References + ---------- + Greene section 11.4.1 5th edition p. 222 + now test statistic reproduces Greene 5th, example 11.3 + + ''' + x = np.asarray(exog) + y = np.asarray(resid) + if x.ndim == 1: + raise ValueError('x should have constant and at least one more variable') + nobs, nvars0 = x.shape + i0,i1 = np.triu_indices(nvars0) + exog = x[:,i0]*x[:,i1] + nobs, nvars = exog.shape + assert nvars == nvars0*(nvars0-1)/2. + nvars0 + resols = OLS(y**2, exog).fit() + fval = resols.fvalue + fpval = resols.f_pvalue + lm = nobs * resols.rsquared + # Note: degrees of freedom for LM test is nvars minus constant + #degrees of freedom take possible reduced rank in exog into account + #df_model checks the rank to determine df + #extra calculation that can be removed: + assert resols.df_model == np.linalg.matrix_rank(exog) - 1 + lmpval = stats.chi2.sf(lm, resols.df_model) + return lm, lmpval, fval, fpval + +def _het_goldfeldquandt2_old(y, x, idx, split=None, retres=False): + '''test whether variance is the same in 2 subsamples + + Parameters + ---------- + y : array_like + endogenous variable + x : array_like + exogenous variable, regressors + idx : integer + column index of variable according to which observations are + sorted for the split + split : None or integer or float in intervall (0,1) + index at which sample is split. + If 01: + fpval = stats.f.sf(fval, resols1.df_resid, resols2.df_resid) + ordering = 'larger' + else: + fval = 1./fval + fpval = stats.f.sf(fval, resols2.df_resid, resols1.df_resid) + ordering = 'smaller' + + if retres: + res = ResultsStore() + res.__doc__ = 'Test Results for Goldfeld-Quandt test of heterogeneity' + res.fval = fval + res.fpval = fpval + res.df_fval = (resols2.df_resid, resols1.df_resid) + res.resols1 = resols1 + res.resols2 = resols2 + res.ordering = ordering + res.split = split + #res.__str__ + res._str = '''The Goldfeld-Quandt test for null hypothesis that the +variance in the second subsample is %s than in the first subsample: + F-statistic =%8.4f and p-value =%8.4f''' % (ordering, fval, fpval) + + return res + else: + return fval, fpval + + +class HetGoldfeldQuandt(object): + '''test whether variance is the same in 2 subsamples + + Parameters + ---------- + y : array_like + endogenous variable + x : array_like + exogenous variable, regressors + idx : integer + column index of variable according to which observations are + sorted for the split + split : None or integer or float in intervall (0,1) + index at which sample is split. + If 01: + if alternative.lower() in ['i', 'inc', 'increasing']: + fpval = stats.f.sf(fval, resols1.df_resid, resols2.df_resid) + ordering = 'increasing' + elif alternative.lower() in ['d', 'dec', 'decreasing']: + fval = fval + fpval = stats.f.sf(1./fval, resols2.df_resid, resols1.df_resid) + ordering = 'decreasing' + elif alternative.lower() in ['2', '2-sided', 'two-sided']: + fpval_sm = stats.f.cdf(fval, resols2.df_resid, resols1.df_resid) + fpval_la = stats.f.sf(fval, resols2.df_resid, resols1.df_resid) + fpval = 2*min(fpval_sm, fpval_la) + ordering = 'two-sided' + else: + raise ValueError('invalid alternative') + + if attach: + res = self + res.__doc__ = 'Test Results for Goldfeld-Quandt test of heterogeneity' + res.fval = fval + res.fpval = fpval + res.df_fval = (resols2.df_resid, resols1.df_resid) + res.resols1 = resols1 + res.resols2 = resols2 + res.ordering = ordering + res.split = split + #res.__str__ + #TODO: check if string works + res._str = '''The Goldfeld-Quandt test for null hypothesis that the + variance in the second subsample is %s than in the first subsample: + F-statistic =%8.4f and p-value =%8.4f''' % (ordering, fval, fpval) + + return fval, fpval, ordering + #return self + + def __str__(self): + try: + return self._str + except AttributeError: + return repr(self) + + #TODO: missing the alternative option in call + def __call__(self, y, x, idx=None, split=None, drop=None, + alternative='increasing'): + return self.run(y, x, idx=idx, split=split, drop=drop, attach=False, + alternative=alternative) + +het_goldfeldquandt = HetGoldfeldQuandt() +het_goldfeldquandt.__doc__ = het_goldfeldquandt.run.__doc__ + +def linear_harvey_collier(res): + '''Harvey Collier test for linearity + + The Null hypothesis is that the regression is correctly modeled as linear. + + Parameters + ---------- + res : Result instance + + Returns + ------- + tvalue : float + test statistic, based on ttest_1sample + pvalue : float + pvalue of the test + + Notes + ----- + TODO: add sort_by option + + This test is a t-test that the mean of the recursive ols residuals is zero. + Calculating the recursive residuals might take some time for large samples. + + ''' + #I think this has different ddof than + #B.H. Baltagi, Econometrics, 2011, chapter 8 + #but it matches Gretl and R:lmtest, pvalue at decimal=13 + rr = recursive_olsresiduals(res, skip=3, alpha=0.95) + from scipy import stats + + return stats.ttest_1samp(rr[3][3:], 0) + +def linear_rainbow(res, frac = 0.5): + '''Rainbow test for linearity + + The Null hypothesis is that the regression is correctly modelled as linear. + The alternative for which the power might be large are convex, check + + Parameters + ---------- + res : Result instance + + Returns + ------- + fstat : float + test statistic based of F test + pvalue : float + pvalue of the test + + ''' + + nobs = res.nobs + endog = res.model.endog + exog = res.model.exog + lowidx = np.ceil(0.5 * (1 - frac) * nobs).astype(int) + uppidx = np.floor(lowidx + frac * nobs).astype(int) + mi_sl = slice(lowidx, uppidx) + res_mi = OLS(endog[mi_sl], exog[mi_sl]).fit() + nobs_mi = res_mi.model.endog.shape[0] + ss_mi = res_mi.ssr + ss = res.ssr + fstat = (ss - ss_mi) / (nobs-nobs_mi) / ss_mi * res_mi.df_resid + from scipy import stats + pval = stats.f.sf(fstat, nobs - nobs_mi, res_mi.df_resid) + return fstat, pval + +def linear_lm(resid, exog, func=None): + '''Lagrange multiplier test for linearity against functional alternative + + limitations: Assumes currently that the first column is integer. + Currently it doesn't check whether the transformed variables contain NaNs, + for example log of negative number. + + Parameters + ---------- + resid : ndarray + residuals of a regression + exog : ndarray + exogenous variables for which linearity is tested + func : callable + If func is None, then squares are used. func needs to take an array + of exog and return an array of transformed variables. + + Returns + ------- + lm : float + Lagrange multiplier test statistic + lm_pval : float + p-value of Lagrange multiplier tes + ftest : ContrastResult instance + the results from the F test variant of this test + + Notes + ----- + written to match Gretl's linearity test. + The test runs an auxilliary regression of the residuals on the combined + original and transformed regressors. + The Null hypothesis is that the linear specification is correct. + + ''' + from scipy import stats + + if func is None: + func = lambda x: np.power(x, 2) + + exog_aux = np.column_stack((exog, func(exog[:,1:]))) + + nobs, k_vars = exog.shape + ls = OLS(resid, exog_aux).fit() + ftest = ls.f_test(np.eye(k_vars - 1, k_vars * 2 - 1, k_vars)) + lm = nobs * ls.rsquared + lm_pval = stats.chi2.sf(lm, k_vars - 1) + return lm, lm_pval, ftest + + +def spec_white(resid, exog): + ''' + White's Two-Moment Specification Test + + Parameters + ---------- + resid : array_like + OLS residuals + exog : array_like + OLS design matrix + + Returns + ------- + stat : float + test statistic + pval : float + chi-square p-value for test statistic + dof : int + degrees of freedom + + Notes + ----- + Implements the two-moment specification test described by White's + Theorem 2 (1980, p. 823) which compares the standard OLS covariance + estimator with White's heteroscedasticity-consistent estimator. The + test statistic is shown to be chi-square distributed. + + Null hypothesis is homoscedastic and correctly specified. + + Assumes the OLS design matrix contains an intercept term and at least + one variable. The intercept is removed to calculate the test statistic. + + Interaction terms (squares and crosses of OLS regressors) are added to + the design matrix to calculate the test statistic. + + Degrees-of-freedom (full rank) = nvar + nvar * (nvar + 1) / 2 + + Linearly dependent columns are removed to avoid singular matrix error. + + Reference + --------- + White, H. (1980). A heteroskedasticity-consistent covariance matrix + estimator and a direct test for heteroscedasticity. Econometrica, + 48: 817-838. + + See also het_white. + ''' + x = np.asarray(exog) + e = np.asarray(resid) + if x.ndim == 1: + raise ValueError('X should have a constant and at least one variable') + + # add interaction terms + i0, i1 = np.triu_indices(x.shape[1]) + exog = np.delete(x[:,i0] * x[:,i1], 0, 1) + + # collinearity check - see _fit_collinear + atol=1e-14 + rtol=1e-13 + tol = atol + rtol * exog.var(0) + r = np.linalg.qr(exog, mode='r') + mask = np.abs(r.diagonal()) < np.sqrt(tol) + exog = exog[:,np.where(~mask)[0]] + + # calculate test statistic + sqe = e * e + sqmndevs = sqe - np.mean(sqe) + d = np.dot(exog.T, sqmndevs) + devx = exog - np.mean(exog, axis=0) + devx *= sqmndevs[:, None] + b = devx.T.dot(devx) + stat = d.dot(np.linalg.solve(b, d)) + + # chi-square test + dof = devx.shape[1] + pval = stats.chi2.sf(stat, dof) + return stat, pval, dof + + +def _neweywestcov(resid, x): + ''' + Did not run yet + + from regstats2 :: + + if idx(29) % HAC (Newey West) + L = round(4*(nobs/100)^(2/9)); + % L = nobs^.25; % as an alternative + hhat = repmat(residuals',p,1).*X'; + xuux = hhat*hhat'; + for l = 1:L; + za = hhat(:,(l+1):nobs)*hhat(:,1:nobs-l)'; + w = 1 - l/(L+1); + xuux = xuux + w*(za+za'); + end + d = struct; + d.covb = xtxi*xuux*xtxi; + ''' + nobs = resid.shape[0] #TODO: check this can only be 1d + nlags = int(round(4*(nobs/100.)**(2/9.))) + hhat = resid * x.T + xuux = np.dot(hhat, hhat.T) + for lag in range(nlags): + za = np.dot(hhat[:,lag:nobs], hhat[:,:nobs-lag].T) + w = 1 - lag/(nobs + 1.) + xuux = xuux + np.dot(w, za+za.T) + xtxi = np.linalg.inv(np.dot(x.T, x)) #QR instead? + covbNW = np.dot(xtxi, np.dot(xuux, xtxi)) + + return covbNW + + + +def _recursive_olsresiduals2(olsresults, skip): + '''this is my original version based on Greene and references + + keep for now for comparison and benchmarking + ''' + y = olsresults.model.endog + x = olsresults.model.exog + nobs, nvars = x.shape + rparams = np.nan * np.zeros((nobs,nvars)) + rresid = np.nan * np.zeros((nobs)) + rypred = np.nan * np.zeros((nobs)) + rvarraw = np.nan * np.zeros((nobs)) + + #XTX = np.zeros((nvars,nvars)) + #XTY = np.zeros((nvars)) + + x0 = x[:skip] + y0 = y[:skip] + XTX = np.dot(x0.T, x0) + XTY = np.dot(x0.T, y0) #xi * y #np.dot(xi, y) + beta = np.linalg.solve(XTX, XTY) + rparams[skip-1] = beta + yipred = np.dot(x[skip-1], beta) + rypred[skip-1] = yipred + rresid[skip-1] = y[skip-1] - yipred + rvarraw[skip-1] = 1+np.dot(x[skip-1],np.dot(np.linalg.inv(XTX),x[skip-1])) + for i in range(skip,nobs): + xi = x[i:i+1,:] + yi = y[i] + xxT = np.dot(xi.T, xi) #xi is 2d 1 row + xy = (xi*yi).ravel() # XTY is 1d #np.dot(xi, yi) #np.dot(xi, y) + print(xy.shape, XTY.shape) + print(XTX) + print(XTY) + beta = np.linalg.solve(XTX, XTY) + rparams[i-1] = beta #this is beta based on info up to t-1 + yipred = np.dot(xi, beta) + rypred[i] = yipred + rresid[i] = yi - yipred + rvarraw[i] = 1 + np.dot(xi,np.dot(np.linalg.inv(XTX),xi.T)) + XTX += xxT + XTY += xy + + i = nobs + beta = np.linalg.solve(XTX, XTY) + rparams[i-1] = beta + + rresid_scaled = rresid/np.sqrt(rvarraw) #this is N(0,sigma2) distributed + nrr = nobs-skip + sigma2 = rresid_scaled[skip-1:].var(ddof=1) + rresid_standardized = rresid_scaled/np.sqrt(sigma2) #N(0,1) distributed + rcusum = rresid_standardized[skip-1:].cumsum() + #confidence interval points in Greene p136 looks strange? + #this assumes sum of independent standard normal + #rcusumci = np.sqrt(np.arange(skip,nobs+1))*np.array([[-1.],[+1.]])*stats.norm.sf(0.025) + a = 1.143 #for alpha=0.99 =0.948 for alpha=0.95 + #following taken from Ploberger, + crit = a*np.sqrt(nrr) + rcusumci = (a*np.sqrt(nrr) + a*np.arange(0,nobs-skip)/np.sqrt(nrr)) \ + * np.array([[-1.],[+1.]]) + return (rresid, rparams, rypred, rresid_standardized, rresid_scaled, + rcusum, rcusumci) + + +def recursive_olsresiduals(olsresults, skip=None, lamda=0.0, alpha=0.95): + '''calculate recursive ols with residuals and cusum test statistic + + Parameters + ---------- + olsresults : instance of RegressionResults + uses only endog and exog + skip : int or None + number of observations to use for initial OLS, if None then skip is + set equal to the number of regressors (columns in exog) + lamda : float + weight for Ridge correction to initial (X'X)^{-1} + alpha : {0.95, 0.99} + confidence level of test, currently only two values supported, + used for confidence interval in cusum graph + + Returns + ------- + rresid : array + recursive ols residuals + rparams : array + recursive ols parameter estimates + rypred : array + recursive prediction of endogenous variable + rresid_standardized : array + recursive residuals standardized so that N(0,sigma2) distributed, where + sigma2 is the error variance + rresid_scaled : array + recursive residuals normalize so that N(0,1) distributed + rcusum : array + cumulative residuals for cusum test + rcusumci : array + confidence interval for cusum test, currently hard coded for alpha=0.95 + + + Notes + ----- + It produces same recursive residuals as other version. This version updates + the inverse of the X'X matrix and does not require matrix inversion during + updating. looks efficient but no timing + + Confidence interval in Greene and Brown, Durbin and Evans is the same as + in Ploberger after a little bit of algebra. + + References + ---------- + jplv to check formulas, follows Harvey + BigJudge 5.5.2b for formula for inverse(X'X) updating + Greene section 7.5.2 + + Brown, R. L., J. Durbin, and J. M. Evans. “Techniques for Testing the + Constancy of Regression Relationships over Time.” + Journal of the Royal Statistical Society. Series B (Methodological) 37, + no. 2 (1975): 149-192. + + ''' + + y = olsresults.model.endog + x = olsresults.model.exog + nobs, nvars = x.shape + if skip is None: + skip = nvars + rparams = np.nan * np.zeros((nobs,nvars)) + rresid = np.nan * np.zeros((nobs)) + rypred = np.nan * np.zeros((nobs)) + rvarraw = np.nan * np.zeros((nobs)) + + + #intialize with skip observations + x0 = x[:skip] + y0 = y[:skip] + #add Ridge to start (not in jplv + XTXi = np.linalg.inv(np.dot(x0.T, x0)+lamda*np.eye(nvars)) + XTY = np.dot(x0.T, y0) #xi * y #np.dot(xi, y) + #beta = np.linalg.solve(XTX, XTY) + beta = np.dot(XTXi, XTY) + #print('beta', beta + rparams[skip-1] = beta + yipred = np.dot(x[skip-1], beta) + rypred[skip-1] = yipred + rresid[skip-1] = y[skip-1] - yipred + rvarraw[skip-1] = 1 + np.dot(x[skip-1],np.dot(XTXi, x[skip-1])) + for i in range(skip,nobs): + xi = x[i:i+1,:] + yi = y[i] + #xxT = np.dot(xi.T, xi) #xi is 2d 1 row + xy = (xi*yi).ravel() # XTY is 1d #np.dot(xi, yi) #np.dot(xi, y) + #print(xy.shape, XTY.shape + #print(XTX + #print(XTY + + # get prediction error with previous beta + yipred = np.dot(xi, beta) + rypred[i] = yipred + residi = yi - yipred + rresid[i] = residi + + #update beta and inverse(X'X) + tmp = np.dot(XTXi, xi.T) + ft = 1 + np.dot(xi, tmp) + + XTXi = XTXi - np.dot(tmp,tmp.T) / ft #BigJudge equ 5.5.15 + + #print('beta', beta + beta = beta + (tmp*residi / ft).ravel() #BigJudge equ 5.5.14 +# #version for testing +# XTY += xy +# beta = np.dot(XTXi, XTY) +# print((tmp*yipred / ft).shape +# print('tmp.shape, ft.shape, beta.shape', tmp.shape, ft.shape, beta.shape + rparams[i] = beta + rvarraw[i] = ft + + + + i = nobs + #beta = np.linalg.solve(XTX, XTY) + #rparams[i] = beta + + rresid_scaled = rresid/np.sqrt(rvarraw) #this is N(0,sigma2) distributed + nrr = nobs-skip + #sigma2 = rresid_scaled[skip-1:].var(ddof=1) #var or sum of squares ? + # Greene has var, jplv and Ploberger have sum of squares (Ass.:mean=0) + # Gretl uses: by reverse engineering matching their numbers + sigma2 = rresid_scaled[skip:].var(ddof=1) + rresid_standardized = rresid_scaled/np.sqrt(sigma2) #N(0,1) distributed + rcusum = rresid_standardized[skip-1:].cumsum() + #confidence interval points in Greene p136 looks strange. Cleared up + #this assumes sum of independent standard normal, which does not take into + #account that we make many tests at the same time + #rcusumci = np.sqrt(np.arange(skip,nobs+1))*np.array([[-1.],[+1.]])*stats.norm.sf(0.025) + if alpha == 0.95: + a = 0.948 #for alpha=0.95 + elif alpha == 0.99: + a = 1.143 #for alpha=0.99 + elif alpha == 0.90: + a = 0.850 + else: + raise ValueError('alpha can only be 0.9, 0.95 or 0.99') + + #following taken from Ploberger, + crit = a*np.sqrt(nrr) + rcusumci = (a*np.sqrt(nrr) + 2*a*np.arange(0,nobs-skip)/np.sqrt(nrr)) \ + * np.array([[-1.],[+1.]]) + return (rresid, rparams, rypred, rresid_standardized, rresid_scaled, + rcusum, rcusumci) + + +def breaks_hansen(olsresults): + '''test for model stability, breaks in parameters for ols, Hansen 1992 + + Parameters + ---------- + olsresults : instance of RegressionResults + uses only endog and exog + + Returns + ------- + teststat : float + Hansen's test statistic + crit : structured array + critical values at alpha=0.95 for different nvars + pvalue Not yet + ft, s : arrays + temporary return for debugging, will be removed + + Notes + ----- + looks good in example, maybe not very powerful for small changes in + parameters + + According to Greene, distribution of test statistics depends on nvar but + not on nobs. + + Test statistic is verified against R:strucchange + + References + ---------- + Greene section 7.5.1, notation follows Greene + + ''' + y = olsresults.model.endog + x = olsresults.model.exog + resid = olsresults.resid + nobs, nvars = x.shape + resid2 = resid**2 + ft = np.c_[x*resid[:,None], (resid2 - resid2.mean())] + s = ft.cumsum(0) + assert (np.abs(s[-1]) < 1e10).all() #can be optimized away + F = nobs*(ft[:,:,None]*ft[:,None,:]).sum(0) + S = (s[:,:,None]*s[:,None,:]).sum(0) + H = np.trace(np.dot(np.linalg.inv(F), S)) + crit95 = np.array([(2,1.9),(6,3.75),(15,3.75),(19,4.52)], + dtype = [('nobs',int), ('crit', float)]) + #TODO: get critical values from Bruce Hansens' 1992 paper + return H, crit95, ft, s + +def breaks_cusumolsresid(olsresidual, ddof=0): + '''cusum test for parameter stability based on ols residuals + + Parameters + ---------- + olsresiduals : ndarray + array of residuals from an OLS estimation + ddof : int + number of parameters in the OLS estimation, used as degrees of freedom + correction for error variance. + + Returns + ------- + sup_b : float + test statistic, maximum of absolute value of scaled cumulative OLS + residuals + pval : float + Probability of observing the data under the null hypothesis of no + structural change, based on asymptotic distribution which is a Brownian + Bridge + crit: list + tabulated critical values, for alpha = 1%, 5% and 10% + + Notes + ----- + tested agains R:strucchange + + Not clear: Assumption 2 in Ploberger, Kramer assumes that exog x have + asymptotically zero mean, x.mean(0) = [1, 0, 0, ..., 0] + Is this really necessary? I don't see how it can affect the test statistic + under the null. It does make a difference under the alternative. + Also, the asymptotic distribution of test statistic depends on this. + + From examples it looks like there is little power for standard cusum if + exog (other than constant) have mean zero. + + References + ---------- + Ploberger, Werner, and Walter Kramer. “The Cusum Test with Ols Residuals.” + Econometrica 60, no. 2 (March 1992): 271-285. + + ''' + resid = olsresidual.ravel() + nobs = len(resid) + nobssigma2 = (resid**2).sum() + if ddof > 0: + #print('ddof', ddof, 1. / (nobs - ddof) * nobs + nobssigma2 = nobssigma2 / (nobs - ddof) * nobs + #B is asymptotically a Brownian Bridge + B = resid.cumsum()/np.sqrt(nobssigma2) # use T*sigma directly + sup_b = np.abs(B).max() #asymptotically distributed as standard Brownian Bridge + crit = [(1,1.63), (5, 1.36), (10, 1.22)] + #Note stats.kstwobign.isf(0.1) is distribution of sup.abs of Brownian Bridge + #>>> stats.kstwobign.isf([0.01,0.05,0.1]) + #array([ 1.62762361, 1.35809864, 1.22384787]) + pval = stats.kstwobign.sf(sup_b) + return sup_b, pval, crit + +#def breaks_cusum(recolsresid): +# '''renormalized cusum test for parameter stability based on recursive residuals +# +# +# still incorrect: in PK, the normalization for sigma is by T not T-K +# also the test statistic is asymptotically a Wiener Process, Brownian motion +# not Brownian Bridge +# for testing: result reject should be identical as in standard cusum version +# +# References +# ---------- +# Ploberger, Werner, and Walter Kramer. “The Cusum Test with Ols Residuals.” +# Econometrica 60, no. 2 (March 1992): 271-285. +# +# ''' +# resid = recolsresid.ravel() +# nobssigma2 = (resid**2).sum() +# #B is asymptotically a Brownian Bridge +# B = resid.cumsum()/np.sqrt(nobssigma2) # use T*sigma directly +# nobs = len(resid) +# denom = 1. + 2. * np.arange(nobs)/(nobs-1.) #not sure about limits +# sup_b = np.abs(B/denom).max() +# #asymptotically distributed as standard Brownian Bridge +# crit = [(1,1.63), (5, 1.36), (10, 1.22)] +# #Note stats.kstwobign.isf(0.1) is distribution of sup.abs of Brownian Bridge +# #>>> stats.kstwobign.isf([0.01,0.05,0.1]) +# #array([ 1.62762361, 1.35809864, 1.22384787]) +# pval = stats.kstwobign.sf(sup_b) +# return sup_b, pval, crit + + +def breaks_AP(endog, exog, skip): + '''supLM, expLM and aveLM by Andrews, and Andrews,Ploberger + + p-values by B Hansen + + just idea for computation of sequence of tests with given change point + (Chow tests) + run recursive ols both forward and backward, match the two so they form a + split of the data, calculate sum of squares for residuals and get test + statistic for each breakpoint between skip and nobs-skip + need to put recursive ols (residuals) into separate function + + alternative: B Hansen loops over breakpoints only once and updates + x'x and xe'xe + update: Andrews is based on GMM estimation not OLS, LM test statistic is + easy to compute because it only requires full sample GMM estimate (p.837) + with GMM the test has much wider applicability than just OLS + + + + for testing loop over single breakpoint Chow test function + + ''' + pass + + +if __name__ == '__main__': + + examples = ['adf'] + if 'adf' in examples: + + x = np.random.randn(20) + print(acorr_ljungbox(x,4)) + print(unitroot_adf(x)) + + nrepl = 100 + nobs = 100 + mcres = np.zeros(nrepl) + for ii in range(nrepl-1): + x = (1e-4+np.random.randn(nobs)).cumsum() + mcres[ii] = unitroot_adf(x, 2,trendorder=0, autolag=None)[0] + + print((mcres<-2.57).sum()) + print(np.histogram(mcres)) + mcressort = np.sort(mcres) + for ratio in [0.01, 0.025, 0.05, 0.1]: + print(ratio, mcressort[int(nrepl*ratio)]) + + print('critical values in Green table 20.5') + print('sample size = 100') + print('with constant') + print('0.01: -19.8, 0.025: -16.3, 0.05: -13.7, 0.01: -11.0, 0.975: 0.47') + + print('0.01: -3.50, 0.025: -3.17, 0.05: -2.90, 0.01: -2.58, 0.975: 0.26') + crvdg = dict([map(float,s.split(':')) for s in ('0.01: -19.8, 0.025: -16.3, 0.05: -13.7, 0.01: -11.0, 0.975: 0.47'.split(','))]) + crvd = dict([map(float,s.split(':')) for s in ('0.01: -3.50, 0.025: -3.17, 0.05: -2.90, 0.01: -2.58, 0.975: 0.26'.split(','))]) + ''' + >>> crvd + {0.050000000000000003: -13.699999999999999, 0.97499999999999998: 0.46999999999999997, 0.025000000000000001: -16.300000000000001, 0.01: -11.0} + >>> sorted(crvd.values()) + [-16.300000000000001, -13.699999999999999, -11.0, 0.46999999999999997] + ''' + + #for trend = 0 + crit_5lags0p05 =-4.41519 + (-14.0406)/nobs + (-12.575)/nobs**2 + print(crit_5lags0p05) + + + adfstat, _,_,resstore = unitroot_adf(x, 2,trendorder=0, autolag=None, store=1) + + print((mcres>crit_5lags0p05).sum()) + + print(resstore.resols.model.exog[-5:]) + print(x[-5:]) + + print(np.histogram(mcres, bins=[-np.inf, -3.5, -3.17, -2.9 , -2.58, 0.26, np.inf])) + + print(mcressort[(nrepl*(np.array([0.01, 0.025, 0.05, 0.1, 0.975]))).astype(int)]) + + nobs = 100 + x = np.ones((nobs,2)) + x[:,1] = np.arange(nobs)/20. + y = x.sum(1) + 1.01*(1+1.5*(x[:,1]>10))*np.random.rand(nobs) + print(het_goldfeldquandt(y,x, 1)) + + y = x.sum(1) + 1.01*(1+0.5*(x[:,1]>10))*np.random.rand(nobs) + print(het_goldfeldquandt(y,x, 1)) + + y = x.sum(1) + 1.01*(1-0.5*(x[:,1]>10))*np.random.rand(nobs) + print(het_goldfeldquandt(y,x, 1)) + + print(het_breuschpagan(y,x)) + print(het_white(y,x)) + + f, fp, fo = het_goldfeldquandt(y,x, 1) + print(f, fp) + resgq = het_goldfeldquandt(y,x, 1, retres=True) + print(resgq) + + #this is just a syntax check: + print(_neweywestcov(y, x)) + + resols1 = OLS(y, x).fit() + print(_neweywestcov(resols1.resid, x)) + print(resols1.cov_params()) + print(resols1.HC0_se) + print(resols1.cov_HC0) + + y = x.sum(1) + 10.*(1-0.5*(x[:,1]>10))*np.random.rand(nobs) + print(HetGoldfeldQuandt().run(y,x, 1, alternative='dec')) diff --git a/statsmodels/sandbox/stats/ex_newtests.py b/statsmodels/sandbox/stats/ex_newtests.py new file mode 100644 index 0000000..b2e4679 --- /dev/null +++ b/statsmodels/sandbox/stats/ex_newtests.py @@ -0,0 +1,31 @@ + +from __future__ import print_function +from .diagnostic import unitroot_adf + +import statsmodels.datasets.macrodata.data as macro + +macrod = macro.load(as_pandas=False).data + +print(macro.NOTE) + +print(macrod.dtype.names) + +datatrendli = [ + ('realgdp', 1), + ('realcons', 1), + ('realinv', 1), + ('realgovt', 1), + ('realdpi', 1), + ('cpi', 1), + ('m1', 1), + ('tbilrate', 0), + ('unemp',0), + ('pop', 1), + ('infl',0), + ('realint', 0) + ] + +print('%-10s %5s %-8s' % ('variable', 'trend', ' adf')) +for name, torder in datatrendli: + adf_, pval = unitroot_adf(macrod[name], trendorder=torder)[:2] + print('%-10s %5d %8.4f %8.4f' % (name, torder, adf_, pval)) diff --git a/statsmodels/sandbox/stats/multicomp.py b/statsmodels/sandbox/stats/multicomp.py new file mode 100644 index 0000000..4741a8a --- /dev/null +++ b/statsmodels/sandbox/stats/multicomp.py @@ -0,0 +1,2019 @@ +r''' + +from pystatsmodels mailinglist 20100524 + +Notes: + - unfinished, unverified, but most parts seem to work in MonteCarlo + - one example taken from lecture notes looks ok + - needs cases with non-monotonic inequality for test to see difference between + one-step, step-up and step-down procedures + - FDR doesn't look really better then Bonferoni in the MC examples that I tried +update: + - now tested against R, stats and multtest, + I have all of their methods for p-value correction + - getting Hommel was impossible until I found reference for pvalue correction + - now, since I have p-values correction, some of the original tests (rej/norej) + implementation is not really needed anymore. I think I keep it for reference. + Test procedure for Hommel in development session log + - I haven't updated other functions and classes in here. + - multtest has some good helper function according to docs + - still need to update references, the real papers + - fdr with estimated true hypothesis still missing + - multiple comparison procedures incomplete or missing + - I will get multiple comparison for now only for independent case, which might + be conservative in correlated case (?). + + +some References: + +Gibbons, Jean Dickinson and Chakraborti Subhabrata, 2003, Nonparametric Statistical +Inference, Fourth Edition, Marcel Dekker + p.363: 10.4 THE KRUSKAL-WALLIS ONE-WAY ANOVA TEST AND MULTIPLE COMPARISONS + p.367: multiple comparison for kruskal formula used in multicomp.kruskal + +Sheskin, David J., 2004, Handbook of Parametric and Nonparametric Statistical +Procedures, 3rd ed., Chapman&Hall/CRC + Test 21: The Single-Factor Between-Subjects Analysis of Variance + Test 22: The Kruskal-Wallis One-Way Analysis of Variance by Ranks Test + +Zwillinger, Daniel and Stephen Kokoska, 2000, CRC standard probability and +statistics tables and formulae, Chapman&Hall/CRC + 14.9 WILCOXON RANKSUM (MANN WHITNEY) TEST + + +S. Paul Wright, Adjusted P-Values for Simultaneous Inference, Biometrics + Vol. 48, No. 4 (Dec., 1992), pp. 1005-1013, International Biometric Society + Stable URL: http://www.jstor.org/stable/2532694 + (p-value correction for Hommel in appendix) + +for multicomparison + +new book "multiple comparison in R" +Hsu is a good reference but I don't have it. + + +Author: Josef Pktd and example from H Raja and rewrite from Vincent Davis + + +TODO +---- + +* handle exception if empty, shows up only sometimes when running this +- DONE I think + +Traceback (most recent call last): + File "C:\Josef\eclipsegworkspace\statsmodels-josef-experimental-gsoc\scikits\statsmodels\sandbox\stats\multicomp.py", line 711, in + print('sh', multipletests(tpval, alpha=0.05, method='sh') + File "C:\Josef\eclipsegworkspace\statsmodels-josef-experimental-gsoc\scikits\statsmodels\sandbox\stats\multicomp.py", line 241, in multipletests + rejectmax = np.max(np.nonzero(reject)) + File "C:\Programs\Python25\lib\site-packages\numpy\core\fromnumeric.py", line 1765, in amax + return _wrapit(a, 'max', axis, out) + File "C:\Programs\Python25\lib\site-packages\numpy\core\fromnumeric.py", line 37, in _wrapit + result = getattr(asarray(obj),method)(*args, **kwds) +ValueError: zero-size array to ufunc.reduce without identity + +* name of function multipletests, rename to something like pvalue_correction? + + +''' +from __future__ import print_function + +import copy +import math + +import numpy as np +from numpy.testing import assert_almost_equal, assert_equal +from scipy import stats, interpolate + +from statsmodels.compat.python import lzip, range, lrange, zip +from statsmodels.iolib.table import SimpleTable +#temporary circular import +from statsmodels.stats.multitest import multipletests, _ecdf as ecdf, fdrcorrection as fdrcorrection0, fdrcorrection_twostage +from statsmodels.graphics import utils +from statsmodels.tools.sm_exceptions import ValueWarning + +qcrit = ''' + 2 3 4 5 6 7 8 9 10 +5 3.64 5.70 4.60 6.98 5.22 7.80 5.67 8.42 6.03 8.91 6.33 9.32 6.58 9.67 6.80 9.97 6.99 10.24 +6 3.46 5.24 4.34 6.33 4.90 7.03 5.30 7.56 5.63 7.97 5.90 8.32 6.12 8.61 6.32 8.87 6.49 9.10 +7 3.34 4.95 4.16 5.92 4.68 6.54 5.06 7.01 5.36 7.37 5.61 7.68 5.82 7.94 6.00 8.17 6.16 8.37 +8 3.26 4.75 4.04 5.64 4.53 6.20 4.89 6.62 5.17 6.96 5.40 7.24 5.60 7.47 5.77 7.68 5.92 7.86 +9 3.20 4.60 3.95 5.43 4.41 5.96 4.76 6.35 5.02 6.66 5.24 6.91 5.43 7.13 5.59 7.33 5.74 7.49 +10 3.15 4.48 3.88 5.27 4.33 5.77 4.65 6.14 4.91 6.43 5.12 6.67 5.30 6.87 5.46 7.05 5.60 7.21 +11 3.11 4.39 3.82 5.15 4.26 5.62 4.57 5.97 4.82 6.25 5.03 6.48 5.20 6.67 5.35 6.84 5.49 6.99 +12 3.08 4.32 3.77 5.05 4.20 5.50 4.51 5.84 4.75 6.10 4.95 6.32 5.12 6.51 5.27 6.67 5.39 6.81 +13 3.06 4.26 3.73 4.96 4.15 5.40 4.45 5.73 4.69 5.98 4.88 6.19 5.05 6.37 5.19 6.53 5.32 6.67 +14 3.03 4.21 3.70 4.89 4.11 5.32 4.41 5.63 4.64 5.88 4.83 6.08 4.99 6.26 5.13 6.41 5.25 6.54 +15 3.01 4.17 3.67 4.84 4.08 5.25 4.37 5.56 4.59 5.80 4.78 5.99 4.94 6.16 5.08 6.31 5.20 6.44 +16 3.00 4.13 3.65 4.79 4.05 5.19 4.33 5.49 4.56 5.72 4.74 5.92 4.90 6.08 5.03 6.22 5.15 6.35 +17 2.98 4.10 3.63 4.74 4.02 5.14 4.30 5.43 4.52 5.66 4.70 5.85 4.86 6.01 4.99 6.15 5.11 6.27 +18 2.97 4.07 3.61 4.70 4.00 5.09 4.28 5.38 4.49 5.60 4.67 5.79 4.82 5.94 4.96 6.08 5.07 6.20 +19 2.96 4.05 3.59 4.67 3.98 5.05 4.25 5.33 4.47 5.55 4.65 5.73 4.79 5.89 4.92 6.02 5.04 6.14 +20 2.95 4.02 3.58 4.64 3.96 5.02 4.23 5.29 4.45 5.51 4.62 5.69 4.77 5.84 4.90 5.97 5.01 6.09 +24 2.92 3.96 3.53 4.55 3.90 4.91 4.17 5.17 4.37 5.37 4.54 5.54 4.68 5.69 4.81 5.81 4.92 5.92 +30 2.89 3.89 3.49 4.45 3.85 4.80 4.10 5.05 4.30 5.24 4.46 5.40 4.60 5.54 4.72 5.65 4.82 5.76 +40 2.86 3.82 3.44 4.37 3.79 4.70 4.04 4.93 4.23 5.11 4.39 5.26 4.52 5.39 4.63 5.50 4.73 5.60 +60 2.83 3.76 3.40 4.28 3.74 4.59 3.98 4.82 4.16 4.99 4.31 5.13 4.44 5.25 4.55 5.36 4.65 5.45 +120 2.80 3.70 3.36 4.20 3.68 4.50 3.92 4.71 4.10 4.87 4.24 5.01 4.36 5.12 4.47 5.21 4.56 5.30 +infinity 2.77 3.64 3.31 4.12 3.63 4.40 3.86 4.60 4.03 4.76 4.17 4.88 4.29 4.99 4.39 5.08 4.47 5.16 +''' + +res = [line.split() for line in qcrit.replace('infinity','9999').split('\n')] +c=np.array(res[2:-1]).astype(float) +#c[c==9999] = np.inf +ccols = np.arange(2,11) +crows = c[:,0] +cv005 = c[:, 1::2] +cv001 = c[:, 2::2] + + +def get_tukeyQcrit(k, df, alpha=0.05): + ''' + return critical values for Tukey's HSD (Q) + + Parameters + ---------- + k : int in {2, ..., 10} + number of tests + df : int + degrees of freedom of error term + alpha : {0.05, 0.01} + type 1 error, 1-confidence level + + + + not enough error checking for limitations + ''' + if alpha == 0.05: + intp = interpolate.interp1d(crows, cv005[:,k-2]) + elif alpha == 0.01: + intp = interpolate.interp1d(crows, cv001[:,k-2]) + else: + raise ValueError('only implemented for alpha equal to 0.01 and 0.05') + return intp(df) + +def get_tukeyQcrit2(k, df, alpha=0.05): + ''' + return critical values for Tukey's HSD (Q) + + Parameters + ---------- + k : int in {2, ..., 10} + number of tests + df : int + degrees of freedom of error term + alpha : {0.05, 0.01} + type 1 error, 1-confidence level + + + + not enough error checking for limitations + ''' + from statsmodels.stats.libqsturng import qsturng + return qsturng(1-alpha, k, df) + + +def get_tukey_pvalue(k, df, q): + ''' + return adjusted p-values for Tukey's HSD + + Parameters + ---------- + k : int in {2, ..., 10} + number of tests + df : int + degrees of freedom of error term + q : scalar, array_like; q >= 0 + quantile value of Studentized Range + + ''' + + from statsmodels.stats.libqsturng import psturng + return psturng(q, k, df) + + +def Tukeythreegene(first, second, third): + # Performing the Tukey HSD post-hoc test for three genes + # qwb = xlrd.open_workbook('F:/Lab/bioinformatics/qcrittable.xls') + # #opening the workbook containing the q crit table + # qwb.sheet_names() + # qcrittable = qwb.sheet_by_name(u'Sheet1') + + # means of the three arrays + firstmean = np.mean(first) + secondmean = np.mean(second) + thirdmean = np.mean(third) + + # standard deviations of the threearrays + firststd = np.std(first) + secondstd = np.std(second) + thirdstd = np.std(third) + + # standard deviation squared of the three arrays + firsts2 = math.pow(firststd, 2) + seconds2 = math.pow(secondstd, 2) + thirds2 = math.pow(thirdstd, 2) + + # numerator for mean square error + mserrornum = firsts2 * 2 + seconds2 * 2 + thirds2 * 2 + # denominator for mean square error + mserrorden = (len(first) + len(second) + len(third)) - 3 + mserror = mserrornum / mserrorden # mean square error + + standarderror = math.sqrt(mserror / len(first)) + # standard error, which is square root of mserror and + # the number of samples in a group + + # various degrees of freedom + dftotal = len(first) + len(second) + len(third) - 1 + dfgroups = 2 + dferror = dftotal - dfgroups # noqa: F841 + + qcrit = 0.5 # fix arbitrary#qcrittable.cell(dftotal, 3).value + qcrit = get_tukeyQcrit(3, dftotal, alpha=0.05) + # getting the q critical value, for degrees of freedom total and 3 groups + + qtest3to1 = (math.fabs(thirdmean - firstmean)) / standarderror + # calculating q test statistic values + qtest3to2 = (math.fabs(thirdmean - secondmean)) / standarderror + qtest2to1 = (math.fabs(secondmean - firstmean)) / standarderror + + conclusion = [] + + # print(qcrit + print(qtest3to1) + print(qtest3to2) + print(qtest2to1) + + # testing all q test statistic values to q critical values + if qtest3to1 > qcrit: + conclusion.append('3to1null') + else: + conclusion.append('3to1alt') + if qtest3to2 > qcrit: + conclusion.append('3to2null') + else: + conclusion.append('3to2alt') + if qtest2to1 > qcrit: + conclusion.append('2to1null') + else: + conclusion.append('2to1alt') + + return conclusion + + +#rewrite by Vincent +def Tukeythreegene2(genes): #Performing the Tukey HSD post-hoc test for three genes + """gend is a list, ie [first, second, third]""" +# qwb = xlrd.open_workbook('F:/Lab/bioinformatics/qcrittable.xls') + #opening the workbook containing the q crit table +# qwb.sheet_names() +# qcrittable = qwb.sheet_by_name(u'Sheet1') + + means = [] + stds = [] + for gene in genes: + means.append(np.mean(gene)) + std.append(np.std(gene)) # noqa:F821 See GH#5756 + + #firstmean = np.mean(first) #means of the three arrays + #secondmean = np.mean(second) + #thirdmean = np.mean(third) + + #firststd = np.std(first) #standard deviations of the three arrays + #secondstd = np.std(second) + #thirdstd = np.std(third) + + stds2 = [] + for std in stds: + stds2.append(math.pow(std,2)) + + + #firsts2 = math.pow(firststd,2) #standard deviation squared of the three arrays + #seconds2 = math.pow(secondstd,2) + #thirds2 = math.pow(thirdstd,2) + + #mserrornum = firsts2*2+seconds2*2+thirds2*2 #numerator for mean square error + mserrornum = sum(stds2)*2 + mserrorden = (len(genes[0])+len(genes[1])+len(genes[2]))-3 #denominator for mean square error + mserror = mserrornum/mserrorden #mean square error + + +def catstack(args): + x = np.hstack(args) + labels = np.hstack([k*np.ones(len(arr)) for k,arr in enumerate(args)]) + return x, labels + + + + +def maxzero(x): + '''find all up zero crossings and return the index of the highest + + Not used anymore + + + >>> np.random.seed(12345) + >>> x = np.random.randn(8) + >>> x + array([-0.20470766, 0.47894334, -0.51943872, -0.5557303 , 1.96578057, + 1.39340583, 0.09290788, 0.28174615]) + >>> maxzero(x) + (4, array([1, 4])) + + + no up-zero-crossing at end + + >>> np.random.seed(0) + >>> x = np.random.randn(8) + >>> x + array([ 1.76405235, 0.40015721, 0.97873798, 2.2408932 , 1.86755799, + -0.97727788, 0.95008842, -0.15135721]) + >>> maxzero(x) + (None, array([6])) + ''' + x = np.asarray(x) + cond1 = x[:-1] < 0 + cond2 = x[1:] > 0 + #allzeros = np.nonzero(np.sign(x[:-1])*np.sign(x[1:]) <= 0)[0] + 1 + allzeros = np.nonzero((cond1 & cond2) | (x[1:]==0))[0] + 1 + if x[-1] >=0: + maxz = max(allzeros) + else: + maxz = None + return maxz, allzeros + +def maxzerodown(x): + '''find all up zero crossings and return the index of the highest + + Not used anymore + + >>> np.random.seed(12345) + >>> x = np.random.randn(8) + >>> x + array([-0.20470766, 0.47894334, -0.51943872, -0.5557303 , 1.96578057, + 1.39340583, 0.09290788, 0.28174615]) + >>> maxzero(x) + (4, array([1, 4])) + + + no up-zero-crossing at end + + >>> np.random.seed(0) + >>> x = np.random.randn(8) + >>> x + array([ 1.76405235, 0.40015721, 0.97873798, 2.2408932 , 1.86755799, + -0.97727788, 0.95008842, -0.15135721]) + >>> maxzero(x) + (None, array([6])) +''' + x = np.asarray(x) + cond1 = x[:-1] > 0 + cond2 = x[1:] < 0 + #allzeros = np.nonzero(np.sign(x[:-1])*np.sign(x[1:]) <= 0)[0] + 1 + allzeros = np.nonzero((cond1 & cond2) | (x[1:]==0))[0] + 1 + if x[-1] <=0: + maxz = max(allzeros) + else: + maxz = None + return maxz, allzeros + + + +def rejectionline(n, alpha=0.5): + '''reference line for rejection in multiple tests + + Not used anymore + + from: section 3.2, page 60 + ''' + t = np.arange(n)/float(n) + frej = t/( t * (1-alpha) + alpha) + return frej + + + + + + +#I don't remember what I changed or why 2 versions, +#this follows german diss ??? with rline +#this might be useful if the null hypothesis is not "all effects are zero" +#rename to _bak and working again on fdrcorrection0 +def fdrcorrection_bak(pvals, alpha=0.05, method='indep'): + '''Reject False discovery rate correction for pvalues + + Old version, to be deleted + + + missing: methods that estimate fraction of true hypotheses + + ''' + pvals = np.asarray(pvals) + + + pvals_sortind = np.argsort(pvals) + pvals_sorted = pvals[pvals_sortind] + pecdf = ecdf(pvals_sorted) + if method in ['i', 'indep', 'p', 'poscorr']: + rline = pvals_sorted / alpha + elif method in ['n', 'negcorr']: + cm = np.sum(1./np.arange(1, len(pvals))) + rline = pvals_sorted / alpha * cm + elif method in ['g', 'onegcorr']: #what's this ? german diss + rline = pvals_sorted / (pvals_sorted*(1-alpha) + alpha) + elif method in ['oth', 'o2negcorr']: # other invalid, cut-paste + cm = np.sum(np.arange(len(pvals))) + rline = pvals_sorted / alpha /cm + else: + raise ValueError('method not available') + + reject = pecdf >= rline + if reject.any(): + rejectmax = max(np.nonzero(reject)[0]) + else: + rejectmax = 0 + reject[:rejectmax] = True + return reject[pvals_sortind.argsort()] + +def mcfdr(nrepl=100, nobs=50, ntests=10, ntrue=6, mu=0.5, alpha=0.05, rho=0.): + '''MonteCarlo to test fdrcorrection + ''' + nfalse = ntests - ntrue + locs = np.array([0.]*ntrue + [mu]*(ntests - ntrue)) + results = [] + for i in range(nrepl): + #rvs = locs + stats.norm.rvs(size=(nobs, ntests)) + rvs = locs + randmvn(rho, size=(nobs, ntests)) + tt, tpval = stats.ttest_1samp(rvs, 0) + res = fdrcorrection_bak(np.abs(tpval), alpha=alpha, method='i') + res0 = fdrcorrection0(np.abs(tpval), alpha=alpha) + #res and res0 give the same results + results.append([np.sum(res[:ntrue]), np.sum(res[ntrue:])] + + [np.sum(res0[:ntrue]), np.sum(res0[ntrue:])] + + res.tolist() + + np.sort(tpval).tolist() + + [np.sum(tpval[:ntrue] 1] + ntot = float(len(xranks)) + tiecorrection = 1 - (nties**3 - nties).sum()/(ntot**3 - ntot) + return tiecorrection + + +class GroupsStats(object): + ''' + statistics by groups (another version) + + groupstats as a class with lazy evaluation (not yet - decorators are still + missing) + + written this time as equivalent of scipy.stats.rankdata + gs = GroupsStats(X, useranks=True) + assert_almost_equal(gs.groupmeanfilter, stats.rankdata(X[:,0]), 15) + + TODO: incomplete doc strings + + ''' + + def __init__(self, x, useranks=False, uni=None, intlab=None): + '''descriptive statistics by groups + + Parameters + ---------- + x : array, 2d + first column data, second column group labels + useranks : boolean + if true, then use ranks as data corresponding to the + scipy.stats.rankdata definition (start at 1, ties get mean) + uni, intlab : arrays (optional) + to avoid call to unique, these can be given as inputs + + + ''' + self.x = np.asarray(x) + if intlab is None: + uni, intlab = np.unique(x[:,1], return_inverse=True) + elif uni is None: + uni = np.unique(x[:,1]) + + self.useranks = useranks + + + self.uni = uni + self.intlab = intlab + self.groupnobs = groupnobs = np.bincount(intlab) + + #temporary until separated and made all lazy + self.runbasic(useranks=useranks) + + + + def runbasic_old(self, useranks=False): + """runbasic_old""" + #check: refactoring screwed up case useranks=True + + #groupxsum = np.bincount(intlab, weights=X[:,0]) + #groupxmean = groupxsum * 1.0 / groupnobs + x = self.x + if useranks: + self.xx = x[:,1].argsort().argsort() + 1 #rankraw + else: + self.xx = x[:,0] + self.groupsum = groupranksum = np.bincount(self.intlab, weights=self.xx) + #print('groupranksum', groupranksum, groupranksum.shape, self.groupnobs.shape + # start at 1 for stats.rankdata : + self.groupmean = grouprankmean = groupranksum * 1.0 / self.groupnobs # + 1 + self.groupmeanfilter = grouprankmean[self.intlab] + #return grouprankmean[intlab] + + def runbasic(self, useranks=False): + """runbasic""" + #check: refactoring screwed up case useranks=True + + #groupxsum = np.bincount(intlab, weights=X[:,0]) + #groupxmean = groupxsum * 1.0 / groupnobs + x = self.x + if useranks: + xuni, xintlab = np.unique(x[:,0], return_inverse=True) + ranksraw = x[:,0].argsort().argsort() + 1 #rankraw + self.xx = GroupsStats(np.column_stack([ranksraw, xintlab]), + useranks=False).groupmeanfilter + else: + self.xx = x[:,0] + self.groupsum = groupranksum = np.bincount(self.intlab, weights=self.xx) + #print('groupranksum', groupranksum, groupranksum.shape, self.groupnobs.shape + # start at 1 for stats.rankdata : + self.groupmean = grouprankmean = groupranksum * 1.0 / self.groupnobs # + 1 + self.groupmeanfilter = grouprankmean[self.intlab] + #return grouprankmean[intlab] + + def groupdemean(self): + """groupdemean""" + return self.xx - self.groupmeanfilter + + def groupsswithin(self): + """groupsswithin""" + xtmp = self.groupdemean() + return np.bincount(self.intlab, weights=xtmp**2) + + def groupvarwithin(self): + """groupvarwithin""" + return self.groupsswithin()/(self.groupnobs-1) #.sum() + +class TukeyHSDResults(object): + """Results from Tukey HSD test, with additional plot methods + + Can also compute and plot additional post-hoc evaluations using this + results class. + + Attributes + ---------- + reject : array of boolean, True if we reject Null for group pair + meandiffs : pairwise mean differences + confint : confidence interval for pairwise mean differences + std_pairs : standard deviation of pairwise mean differences + q_crit : critical value of studentized range statistic at given alpha + halfwidths : half widths of simultaneous confidence interval + pvalues : adjusted p-values from the HSD test + + Notes + ----- + halfwidths is only available after call to `plot_simultaneous`. + + Other attributes contain information about the data from the + MultiComparison instance: data, df_total, groups, groupsunique, variance. + + """ + def __init__(self, mc_object, results_table, q_crit, reject=None, + meandiffs=None, std_pairs=None, confint=None, df_total=None, + reject2=None, variance=None, pvalues=None): + + self._multicomp = mc_object + self._results_table = results_table + self.q_crit = q_crit + self.reject = reject + self.meandiffs = meandiffs + self.std_pairs = std_pairs + self.confint = confint + self.df_total = df_total + self.reject2 = reject2 + self.variance = variance + self.pvalues = pvalues + # Taken out of _multicomp for ease of access for unknowledgeable users + self.data = self._multicomp.data + self.groups = self._multicomp.groups + self.groupsunique = self._multicomp.groupsunique + + def __str__(self): + return str(self._results_table) + + def summary(self): + '''Summary table that can be printed + ''' + return self._results_table + + + def _simultaneous_ci(self): + """Compute simultaneous confidence intervals for comparison of means. + """ + self.halfwidths = simultaneous_ci(self.q_crit, self.variance, + self._multicomp.groupstats.groupnobs, + self._multicomp.pairindices) + + def plot_simultaneous(self, comparison_name=None, ax=None, figsize=(10,6), + xlabel=None, ylabel=None): + """Plot a universal confidence interval of each group mean + + Visiualize significant differences in a plot with one confidence + interval per group instead of all pairwise confidence intervals. + + Parameters + ---------- + comparison_name : string, optional + if provided, plot_intervals will color code all groups that are + significantly different from the comparison_name red, and will + color code insignificant groups gray. Otherwise, all intervals will + just be plotted in black. + ax : matplotlib axis, optional + An axis handle on which to attach the plot. + figsize : tuple, optional + tuple for the size of the figure generated + xlabel : string, optional + Name to be displayed on x axis + ylabel : string, optional + Name to be displayed on y axis + + Returns + ------- + fig : Matplotlib Figure object + handle to figure object containing interval plots + + Notes + ----- + Multiple comparison tests are nice, but lack a good way to be + visualized. If you have, say, 6 groups, showing a graph of the means + between each group will require 15 confidence intervals. + Instead, we can visualize inter-group differences with a single + interval for each group mean. Hochberg et al. [1] first proposed this + idea and used Tukey's Q critical value to compute the interval widths. + Unlike plotting the differences in the means and their respective + confidence intervals, any two pairs can be compared for significance + by looking for overlap. + + References + ---------- + .. [*] Hochberg, Y., and A. C. Tamhane. Multiple Comparison Procedures. + Hoboken, NJ: John Wiley & Sons, 1987. + + Examples + -------- + >>> from statsmodels.examples.try_tukey_hsd import cylinders, cyl_labels + >>> from statsmodels.stats.multicomp import MultiComparison + >>> cardata = MultiComparison(cylinders, cyl_labels) + >>> results = cardata.tukeyhsd() + >>> results.plot_simultaneous() + + + This example shows an example plot comparing significant differences + in group means. Significant differences at the alpha=0.05 level can be + identified by intervals that do not overlap (i.e. USA vs Japan, + USA vs Germany). + + >>> results.plot_simultaneous(comparison_name="USA") + + + Optionally provide one of the group names to color code the plot to + highlight group means different from comparison_name. + + """ + fig, ax1 = utils.create_mpl_ax(ax) + if figsize is not None: + fig.set_size_inches(figsize) + if getattr(self, 'halfwidths', None) is None: + self._simultaneous_ci() + means = self._multicomp.groupstats.groupmean + + + sigidx = [] + nsigidx = [] + minrange = [means[i] - self.halfwidths[i] for i in range(len(means))] + maxrange = [means[i] + self.halfwidths[i] for i in range(len(means))] + + if comparison_name is None: + ax1.errorbar(means, lrange(len(means)), xerr=self.halfwidths, + marker='o', linestyle='None', color='k', ecolor='k') + else: + if comparison_name not in self.groupsunique: + raise ValueError('comparison_name not found in group names.') + midx = np.where(self.groupsunique==comparison_name)[0][0] + for i in range(len(means)): + if self.groupsunique[i] == comparison_name: + continue + if (min(maxrange[i], maxrange[midx]) - + max(minrange[i], minrange[midx]) < 0): + sigidx.append(i) + else: + nsigidx.append(i) + #Plot the master comparison + ax1.errorbar(means[midx], midx, xerr=self.halfwidths[midx], + marker='o', linestyle='None', color='b', ecolor='b') + ax1.plot([minrange[midx]]*2, [-1, self._multicomp.ngroups], + linestyle='--', color='0.7') + ax1.plot([maxrange[midx]]*2, [-1, self._multicomp.ngroups], + linestyle='--', color='0.7') + #Plot those that are significantly different + if len(sigidx) > 0: + ax1.errorbar(means[sigidx], sigidx, + xerr=self.halfwidths[sigidx], marker='o', + linestyle='None', color='r', ecolor='r') + #Plot those that are not significantly different + if len(nsigidx) > 0: + ax1.errorbar(means[nsigidx], nsigidx, + xerr=self.halfwidths[nsigidx], marker='o', + linestyle='None', color='0.5', ecolor='0.5') + + ax1.set_title('Multiple Comparisons Between All Pairs (Tukey)') + r = np.max(maxrange) - np.min(minrange) + ax1.set_ylim([-1, self._multicomp.ngroups]) + ax1.set_xlim([np.min(minrange) - r / 10., np.max(maxrange) + r / 10.]) + ax1.set_yticklabels(np.insert(self.groupsunique.astype(str), 0, '')) + ax1.set_yticks(np.arange(-1, len(means)+1)) + ax1.set_xlabel(xlabel if xlabel is not None else '') + ax1.set_ylabel(ylabel if ylabel is not None else '') + return fig + + +class MultiComparison(object): + '''Tests for multiple comparisons + + Parameters + ---------- + data : array + independent data samples + groups : array + group labels corresponding to each data point + group_order : list of strings, optional + the desired order for the group mean results to be reported in. If + not specified, results are reported in increasing order. + If group_order does not contain all labels that are in groups, then + only those observations are kept that have a label in group_order. + + ''' + + def __init__(self, data, groups, group_order=None): + + if len(data) != len(groups): + raise ValueError('data has %d elements and groups has %d' % (len(data), len(groups))) + self.data = np.asarray(data) + self.groups = groups = np.asarray(groups) + + # Allow for user-provided sorting of groups + if group_order is None: + self.groupsunique, self.groupintlab = np.unique(groups, + return_inverse=True) + else: + #check if group_order has any names not in groups + for grp in group_order: + if grp not in groups: + raise ValueError( + "group_order value '%s' not found in groups" % grp) + self.groupsunique = np.array(group_order) + self.groupintlab = np.empty(len(data), int) + self.groupintlab.fill(-999) # instead of a nan + count = 0 + for name in self.groupsunique: + idx = np.where(self.groups == name)[0] + count += len(idx) + self.groupintlab[idx] = np.where(self.groupsunique == name)[0] + if count != data.shape[0]: + #raise ValueError('group_order does not contain all groups') + # warn and keep only observations with label in group_order + import warnings + warnings.warn('group_order does not contain all groups:' + + ' dropping observations', ValueWarning) + + mask_keep = self.groupintlab != -999 + self.groupintlab = self.groupintlab[mask_keep] + self.data = self.data[mask_keep] + self.groups = self.groups[mask_keep] + + if len(self.groupsunique) < 2: + raise ValueError('2 or more groups required for multiple comparisons') + + self.datali = [self.data[self.groups == k] for k in self.groupsunique] + self.pairindices = np.triu_indices(len(self.groupsunique), 1) #tuple + self.nobs = self.data.shape[0] + self.ngroups = len(self.groupsunique) + + + def getranks(self): + '''convert data to rankdata and attach + + + This creates rankdata as it is used for non-parametric tests, where + in the case of ties the average rank is assigned. + + + ''' + #bug: the next should use self.groupintlab instead of self.groups + #update: looks fixed + #self.ranks = GroupsStats(np.column_stack([self.data, self.groups]), + self.ranks = GroupsStats(np.column_stack([self.data, self.groupintlab]), + useranks=True) + self.rankdata = self.ranks.groupmeanfilter + + def kruskal(self, pairs=None, multimethod='T'): + ''' + pairwise comparison for kruskal-wallis test + + This is just a reimplementation of scipy.stats.kruskal and does + not yet use a multiple comparison correction. + + ''' + self.getranks() + tot = self.nobs + meanranks = self.ranks.groupmean + groupnobs = self.ranks.groupnobs + + + # simultaneous/separate treatment of multiple tests + f=(tot * (tot + 1.) / 12.) / stats.tiecorrect(self.rankdata) #(xranks) + print('MultiComparison.kruskal') + for i,j in zip(*self.pairindices): + #pdiff = np.abs(mrs[i] - mrs[j]) + pdiff = np.abs(meanranks[i] - meanranks[j]) + se = np.sqrt(f * np.sum(1. / groupnobs[[i,j]] )) #np.array([8,8]))) #Fixme groupnobs[[i,j]] )) + Q = pdiff / se + + # TODO : print(statments, fix + print(i,j, pdiff, se, pdiff / se, pdiff / se > 2.6310) + print(stats.norm.sf(Q) * 2) + return stats.norm.sf(Q) * 2 + + + def allpairtest(self, testfunc, alpha=0.05, method='bonf', pvalidx=1): + '''run a pairwise test on all pairs with multiple test correction + + The statistical test given in testfunc is calculated for all pairs + and the p-values are adjusted by methods in multipletests. The p-value + correction is generic and based only on the p-values, and does not + take any special structure of the hypotheses into account. + + Parameters + ---------- + testfunc : function + A test function for two (independent) samples. It is assumed that + the return value on position pvalidx is the p-value. + alpha : float + familywise error rate + method : string + This specifies the method for the p-value correction. Any method + of multipletests is possible. + pvalidx : int (default: 1) + position of the p-value in the return of testfunc + + Returns + ------- + sumtab : SimpleTable instance + summary table for printing + + errors: TODO: check if this is still wrong, I think it's fixed. + results from multipletests are in different order + pval_corrected can be larger than 1 ??? + ''' + res = [] + for i,j in zip(*self.pairindices): + res.append(testfunc(self.datali[i], self.datali[j])) + res = np.array(res) + reject, pvals_corrected, alphacSidak, alphacBonf = \ + multipletests(res[:, pvalidx], alpha=alpha, method=method) + #print(np.column_stack([res[:,0],res[:,1], reject, pvals_corrected]) + + i1, i2 = self.pairindices + if pvals_corrected is None: + resarr = np.array(lzip(self.groupsunique[i1], self.groupsunique[i2], + np.round(res[:,0],4), + np.round(res[:,1],4), + reject), + dtype=[('group1', object), + ('group2', object), + ('stat',float), + ('pval',float), + ('reject', np.bool8)]) + else: + resarr = np.array(lzip(self.groupsunique[i1], self.groupsunique[i2], + np.round(res[:,0],4), + np.round(res[:,1],4), + np.round(pvals_corrected,4), + reject), + dtype=[('group1', object), + ('group2', object), + ('stat',float), + ('pval',float), + ('pval_corr',float), + ('reject', np.bool8)]) + results_table = SimpleTable(resarr, headers=resarr.dtype.names) + results_table.title = ( + 'Test Multiple Comparison %s \n%s%4.2f method=%s' + % (testfunc.__name__, 'FWER=', alpha, method) + + '\nalphacSidak=%4.2f, alphacBonf=%5.3f' + % (alphacSidak, alphacBonf)) + + return results_table, (res, reject, pvals_corrected, + alphacSidak, alphacBonf), resarr + + def tukeyhsd(self, alpha=0.05): + """ + Tukey's range test to compare means of all pairs of groups + + Parameters + ---------- + alpha : float, optional + Value of FWER at which to calculate HSD. + + Returns + ------- + results : TukeyHSDResults instance + A results class containing relevant data and some post-hoc + calculations + """ + self.groupstats = GroupsStats( + np.column_stack([self.data, self.groupintlab]), + useranks=False) + + gmeans = self.groupstats.groupmean + gnobs = self.groupstats.groupnobs + # var_ = self.groupstats.groupvarwithin() + # #possibly an error in varcorrection in this case + var_ = np.var(self.groupstats.groupdemean(), ddof=len(gmeans)) + # res contains: 0:(idx1, idx2), 1:reject, 2:meandiffs, 3: std_pairs, + # 4:confint, 5:q_crit, 6:df_total, 7:reject2, 8: pvals + res = tukeyhsd(gmeans, gnobs, var_, df=None, alpha=alpha, q_crit=None) + + resarr = np.array(lzip(self.groupsunique[res[0][0]], + self.groupsunique[res[0][1]], + np.round(res[2], 4), + np.round(res[8], 4), + np.round(res[4][:, 0], 4), + np.round(res[4][:, 1], 4), + res[1]), + dtype=[('group1', object), + ('group2', object), + ('meandiff', float), + ('p-adj', float), + ('lower', float), + ('upper', float), + ('reject', np.bool8)]) + results_table = SimpleTable(resarr, headers=resarr.dtype.names) + results_table.title = 'Multiple Comparison of Means - Tukey HSD, ' + \ + 'FWER=%4.2f' % alpha + + return TukeyHSDResults(self, results_table, res[5], res[1], res[2], + res[3], res[4], res[6], res[7], var_, res[8]) + + +def rankdata(x): + '''rankdata, equivalent to scipy.stats.rankdata + + just a different implementation, I have not yet compared speed + + ''' + uni, intlab = np.unique(x[:,0], return_inverse=True) + groupnobs = np.bincount(intlab) + groupxsum = np.bincount(intlab, weights=X[:,0]) + groupxmean = groupxsum * 1.0 / groupnobs + + rankraw = x[:,0].argsort().argsort() + groupranksum = np.bincount(intlab, weights=rankraw) + # start at 1 for stats.rankdata : + grouprankmean = groupranksum * 1.0 / groupnobs + 1 + return grouprankmean[intlab] + + +#new + +def compare_ordered(vals, alpha): + '''simple ordered sequential comparison of means + + vals : array_like + means or rankmeans for independent groups + + incomplete, no return, not used yet + ''' + vals = np.asarray(vals) + alphaf = alpha # Notation ? + sortind = np.argsort(vals) + pvals = vals[sortind] + sortrevind = sortind.argsort() + ntests = len(vals) + #alphacSidak = 1 - np.power((1. - alphaf), 1./ntests) + #alphacBonf = alphaf / float(ntests) + v1, v2 = np.triu_indices(ntests, 1) + #v1,v2 have wrong sequence + for i in range(4): + for j in range(4,i, -1): + print(i,j) + + + +def varcorrection_unbalanced(nobs_all, srange=False): + '''correction factor for variance with unequal sample sizes + + this is just a harmonic mean + + Parameters + ---------- + nobs_all : array_like + The number of observations for each sample + srange : bool + if true, then the correction is divided by the number of samples + for the variance of the studentized range statistic + + Returns + ------- + correction : float + Correction factor for variance. + + + Notes + ----- + + variance correction factor is + + 1/k * sum_i 1/n_i + + where k is the number of samples and summation is over i=0,...,k-1. + If all n_i are the same, then the correction factor is 1. + + This needs to be multiplied by the joint variance estimate, means square + error, MSE. To obtain the correction factor for the standard deviation, + square root needs to be taken. + + ''' + nobs_all = np.asarray(nobs_all) + if not srange: + return (1./nobs_all).sum() + else: + return (1./nobs_all).sum()/len(nobs_all) + +def varcorrection_pairs_unbalanced(nobs_all, srange=False): + '''correction factor for variance with unequal sample sizes for all pairs + + this is just a harmonic mean + + Parameters + ---------- + nobs_all : array_like + The number of observations for each sample + srange : bool + if true, then the correction is divided by 2 for the variance of + the studentized range statistic + + Returns + ------- + correction : array + Correction factor for variance. + + + Notes + ----- + + variance correction factor is + + 1/k * sum_i 1/n_i + + where k is the number of samples and summation is over i=0,...,k-1. + If all n_i are the same, then the correction factor is 1. + + This needs to be multiplies by the joint variance estimate, means square + error, MSE. To obtain the correction factor for the standard deviation, + square root needs to be taken. + + For the studentized range statistic, the resulting factor has to be + divided by 2. + + ''' + #TODO: test and replace with broadcasting + n1, n2 = np.meshgrid(nobs_all, nobs_all) + if not srange: + return (1./n1 + 1./n2) + else: + return (1./n1 + 1./n2) / 2. + +def varcorrection_unequal(var_all, nobs_all, df_all): + '''return joint variance from samples with unequal variances and unequal + sample sizes + + something is wrong + + Parameters + ---------- + var_all : array_like + The variance for each sample + nobs_all : array_like + The number of observations for each sample + df_all : array_like + degrees of freedom for each sample + + Returns + ------- + varjoint : float + joint variance. + dfjoint : float + joint Satterthwait's degrees of freedom + + + Notes + ----- + (copy, paste not correct) + variance is + + 1/k * sum_i 1/n_i + + where k is the number of samples and summation is over i=0,...,k-1. + If all n_i are the same, then the correction factor is 1/n. + + This needs to be multiplies by the joint variance estimate, means square + error, MSE. To obtain the correction factor for the standard deviation, + square root needs to be taken. + + This is for variance of mean difference not of studentized range. + ''' + + var_all = np.asarray(var_all) + var_over_n = var_all *1./ nobs_all #avoid integer division + varjoint = var_over_n.sum() + + dfjoint = varjoint**2 / (var_over_n**2 * df_all).sum() + + return varjoint, dfjoint + +def varcorrection_pairs_unequal(var_all, nobs_all, df_all): + '''return joint variance from samples with unequal variances and unequal + sample sizes for all pairs + + something is wrong + + Parameters + ---------- + var_all : array_like + The variance for each sample + nobs_all : array_like + The number of observations for each sample + df_all : array_like + degrees of freedom for each sample + + Returns + ------- + varjoint : array + joint variance. + dfjoint : array + joint Satterthwait's degrees of freedom + + + Notes + ----- + + (copy, paste not correct) + variance is + + 1/k * sum_i 1/n_i + + where k is the number of samples and summation is over i=0,...,k-1. + If all n_i are the same, then the correction factor is 1. + + This needs to be multiplies by the joint variance estimate, means square + error, MSE. To obtain the correction factor for the standard deviation, + square root needs to be taken. + + TODO: something looks wrong with dfjoint, is formula from SPSS + ''' + #TODO: test and replace with broadcasting + v1, v2 = np.meshgrid(var_all, var_all) + n1, n2 = np.meshgrid(nobs_all, nobs_all) + df1, df2 = np.meshgrid(df_all, df_all) + + varjoint = v1/n1 + v2/n2 + + dfjoint = varjoint**2 / (df1 * (v1/n1)**2 + df2 * (v2/n2)**2) + + return varjoint, dfjoint + +def tukeyhsd(mean_all, nobs_all, var_all, df=None, alpha=0.05, q_crit=None): + '''simultaneous Tukey HSD + + + check: instead of sorting, I use absolute value of pairwise differences + in means. That's irrelevant for the test, but maybe reporting actual + differences would be better. + CHANGED: meandiffs are with sign, studentized range uses abs + + q_crit added for testing + + TODO: error in variance calculation when nobs_all is scalar, missing 1/n + + ''' + mean_all = np.asarray(mean_all) + #check if or when other ones need to be arrays + + n_means = len(mean_all) + + if df is None: + df = nobs_all - 1 + + if np.size(df) == 1: # assumes balanced samples with df = n - 1, n_i = n + df_total = n_means * df + df = np.ones(n_means) * df + else: + df_total = np.sum(df) + + if (np.size(nobs_all) == 1) and (np.size(var_all) == 1): + #balanced sample sizes and homogenous variance + var_pairs = 1. * var_all / nobs_all * np.ones((n_means, n_means)) + + elif np.size(var_all) == 1: + #unequal sample sizes and homogenous variance + var_pairs = var_all * varcorrection_pairs_unbalanced(nobs_all, + srange=True) + elif np.size(var_all) > 1: + var_pairs, df_sum = varcorrection_pairs_unequal(nobs_all, var_all, df) + var_pairs /= 2. + #check division by two for studentized range + + else: + raise ValueError('not supposed to be here') + + #meandiffs_ = mean_all[:,None] - mean_all + meandiffs_ = mean_all - mean_all[:,None] #reverse sign, check with R example + std_pairs_ = np.sqrt(var_pairs) + + #select all pairs from upper triangle of matrix + idx1, idx2 = np.triu_indices(n_means, 1) + meandiffs = meandiffs_[idx1, idx2] + std_pairs = std_pairs_[idx1, idx2] + + st_range = np.abs(meandiffs) / std_pairs #studentized range statistic + + df_total_ = max(df_total, 5) #TODO: smallest df in table + if q_crit is None: + q_crit = get_tukeyQcrit2(n_means, df_total, alpha=alpha) + + pvalues = get_tukey_pvalue(n_means, df_total, st_range) + + reject = st_range > q_crit + crit_int = std_pairs * q_crit + reject2 = np.abs(meandiffs) > crit_int + + confint = np.column_stack((meandiffs - crit_int, meandiffs + crit_int)) + + return ((idx1, idx2), reject, meandiffs, std_pairs, confint, q_crit, + df_total, reject2, pvalues) + + +def simultaneous_ci(q_crit, var, groupnobs, pairindices=None): + """Compute simultaneous confidence intervals for comparison of means. + + q_crit value is generated from tukey hsd test. Variance is considered + across all groups. Returned halfwidths can be thought of as uncertainty + intervals around each group mean. They allow for simultaneous + comparison of pairwise significance among any pairs (by checking for + overlap) + + Parameters + ---------- + q_crit : float + The Q critical value studentized range statistic from Tukey's HSD + var : float + The group variance + groupnobs : array-like object + Number of observations contained in each group. + pairindices : tuple of lists, optional + Indices corresponding to the upper triangle of matrix. Computed + here if not supplied + + Returns + ------- + halfwidths : ndarray + Half the width of each confidence interval for each group given in + groupnobs + + See Also + -------- + MultiComparison : statistics class providing significance tests + tukeyhsd : among other things, computes q_crit value + + References + ---------- + .. [*] Hochberg, Y., and A. C. Tamhane. Multiple Comparison Procedures. + Hoboken, NJ: John Wiley & Sons, 1987.) + """ + # Set initial variables + ng = len(groupnobs) + if pairindices is None: + pairindices = np.triu_indices(ng, 1) + + # Compute dij for all pairwise comparisons ala hochberg p. 95 + gvar = var / groupnobs + + d12 = np.sqrt(gvar[pairindices[0]] + gvar[pairindices[1]]) + + # Create the full d matrix given all known dij vals + d = np.zeros((ng, ng)) + d[pairindices] = d12 + d = d + d.conj().T + + # Compute the two global sums from hochberg eq 3.32 + sum1 = np.sum(d12) + sum2 = np.sum(d, axis=0) + + if (ng > 2): + w = ((ng-1.) * sum2 - sum1) / ((ng - 1.) * (ng - 2.)) + else: + w = sum1 * np.ones((2, 1)) / 2. + + return (q_crit / np.sqrt(2))*w + +def distance_st_range(mean_all, nobs_all, var_all, df=None, triu=False): + '''pairwise distance matrix, outsourced from tukeyhsd + + + + CHANGED: meandiffs are with sign, studentized range uses abs + + q_crit added for testing + + TODO: error in variance calculation when nobs_all is scalar, missing 1/n + + ''' + mean_all = np.asarray(mean_all) + #check if or when other ones need to be arrays + + n_means = len(mean_all) + + if df is None: + df = nobs_all - 1 + + if np.size(df) == 1: # assumes balanced samples with df = n - 1, n_i = n + df_total = n_means * df + else: + df_total = np.sum(df) + + if (np.size(nobs_all) == 1) and (np.size(var_all) == 1): + #balanced sample sizes and homogenous variance + var_pairs = 1. * var_all / nobs_all * np.ones((n_means, n_means)) + + elif np.size(var_all) == 1: + #unequal sample sizes and homogenous variance + var_pairs = var_all * varcorrection_pairs_unbalanced(nobs_all, + srange=True) + elif np.size(var_all) > 1: + var_pairs, df_sum = varcorrection_pairs_unequal(nobs_all, var_all, df) + var_pairs /= 2. + #check division by two for studentized range + + else: + raise ValueError('not supposed to be here') + + #meandiffs_ = mean_all[:,None] - mean_all + meandiffs = mean_all - mean_all[:,None] #reverse sign, check with R example + std_pairs = np.sqrt(var_pairs) + + idx1, idx2 = np.triu_indices(n_means, 1) + if triu: + #select all pairs from upper triangle of matrix + meandiffs = meandiffs_[idx1, idx2] # noqa: F821 See GH#5756 + std_pairs = std_pairs_[idx1, idx2] # noqa: F821 See GH#5756 + + st_range = np.abs(meandiffs) / std_pairs #studentized range statistic + + return st_range, meandiffs, std_pairs, (idx1,idx2) #return square arrays + + +def contrast_allpairs(nm): + '''contrast or restriction matrix for all pairs of nm variables + + Parameters + ---------- + nm : int + + Returns + ------- + contr : ndarray, 2d, (nm*(nm-1)/2, nm) + contrast matrix for all pairwise comparisons + + ''' + contr = [] + for i in range(nm): + for j in range(i+1, nm): + contr_row = np.zeros(nm) + contr_row[i] = 1 + contr_row[j] = -1 + contr.append(contr_row) + return np.array(contr) + +def contrast_all_one(nm): + '''contrast or restriction matrix for all against first comparison + + Parameters + ---------- + nm : int + + Returns + ------- + contr : ndarray, 2d, (nm-1, nm) + contrast matrix for all against first comparisons + + ''' + contr = np.column_stack((np.ones(nm-1), -np.eye(nm-1))) + return contr + +def contrast_diff_mean(nm): + '''contrast or restriction matrix for all against mean comparison + + Parameters + ---------- + nm : int + + Returns + ------- + contr : ndarray, 2d, (nm-1, nm) + contrast matrix for all against mean comparisons + + ''' + return np.eye(nm) - np.ones((nm,nm))/nm + +def tukey_pvalues(std_range, nm, df): + #corrected but very slow with warnings about integration + #nm = len(std_range) + contr = contrast_allpairs(nm) + corr = np.dot(contr, contr.T)/2. + tstat = std_range / np.sqrt(2) * np.ones(corr.shape[0]) #need len of all pairs + return multicontrast_pvalues(tstat, corr, df=df) + +def test_tukey_pvalues(): + #testcase with 3 is not good because all pairs has also 3*(3-1)/2=3 elements + res = tukey_pvalues(3.649, 3, 16) #3.649*np.ones(3), 16) + assert_almost_equal(0.05, res[0], 3) + assert_almost_equal(0.05*np.ones(3), res[1], 3) + + +def multicontrast_pvalues(tstat, tcorr, df=None, dist='t', alternative='two-sided'): + '''pvalues for simultaneous tests + + ''' + from statsmodels.sandbox.distributions.multivariate import mvstdtprob + if (df is None) and (dist == 't'): + raise ValueError('df has to be specified for the t-distribution') + tstat = np.asarray(tstat) + ntests = len(tstat) + cc = np.abs(tstat) + pval_global = 1 - mvstdtprob(-cc,cc, tcorr, df) + pvals = [] + for ti in cc: + limits = ti*np.ones(ntests) + pvals.append(1 - mvstdtprob(-cc,cc, tcorr, df)) + + return pval_global, np.asarray(pvals) + + + + + +class StepDown(object): + '''a class for step down methods + + This is currently for simple tree subset descend, similar to homogeneous_subsets, + but checks all leave-one-out subsets instead of assuming an ordered set. + Comment in SAS manual: + SAS only uses interval subsets of the sorted list, which is sufficient for range + tests (maybe also equal variance and balanced sample sizes are required). + For F-test based critical distances, the restriction to intervals is not sufficient. + + This version uses a single critical value of the studentized range distribution + for all comparisons, and is therefore a step-down version of Tukey HSD. + The class is written so it can be subclassed, where the get_distance_matrix and + get_crit are overwritten to obtain other step-down procedures such as REGW. + + iter_subsets can be overwritten, to get a recursion as in the many to one comparison + with a control such as in Dunnet's test. + + + A one-sided right tail test is not covered because the direction of the inequality + is hard coded in check_set. Also Peritz's check of partitions is not possible, but + I have not seen it mentioned in any more recent references. + I have only partially read the step-down procedure for closed tests by Westfall. + + One change to make it more flexible, is to separate out the decision on a subset, + also because the F-based tests, FREGW in SPSS, take information from all elements of + a set and not just pairwise comparisons. I haven't looked at the details of + the F-based tests such as Sheffe yet. It looks like running an F-test on equality + of means in each subset. This would also outsource how pairwise conditions are + combined, any larger or max. This would also imply that the distance matrix cannot + be calculated in advance for tests like the F-based ones. + + + ''' + + def __init__(self, vals, nobs_all, var_all, df=None): + self.vals = vals + self.n_vals = len(vals) + self.nobs_all = nobs_all + self.var_all = var_all + self.df = df + # the following has been moved to run + #self.cache_result = {} + #self.crit = self.getcrit(0.5) #decide where to set alpha, moved to run + #self.accepted = [] #store accepted sets, not unique + + def get_crit(self, alpha): + """ + get_tukeyQcrit + + currently tukey Q, add others + """ + q_crit = get_tukeyQcrit(self.n_vals, self.df, alpha=alpha) + return q_crit * np.ones(self.n_vals) + + + + def get_distance_matrix(self): + '''studentized range statistic''' + #make into property, decorate + dres = distance_st_range(self.vals, self.nobs_all, self.var_all, df=self.df) + self.distance_matrix = dres[0] + + def iter_subsets(self, indices): + """Iteratre substeps""" + for ii in range(len(indices)): + idxsub = copy.copy(indices) + idxsub.pop(ii) + yield idxsub + + + def check_set(self, indices): + '''check whether pairwise distances of indices satisfy condition + + ''' + indtup = tuple(indices) + if indtup in self.cache_result: + return self.cache_result[indtup] + else: + set_distance_matrix = self.distance_matrix[np.asarray(indices)[:,None], indices] + n_elements = len(indices) + if np.any(set_distance_matrix > self.crit[n_elements-1]): + res = True + else: + res = False + self.cache_result[indtup] = res + return res + + def stepdown(self, indices): + """stepdown""" + print(indices) + if self.check_set(indices): # larger than critical distance + if (len(indices) > 2): # step down into subsets if more than 2 elements + for subs in self.iter_subsets(indices): + self.stepdown(subs) + else: + self.rejected.append(tuple(indices)) + else: + self.accepted.append(tuple(indices)) + return indices + + def run(self, alpha): + '''main function to run the test, + + could be done in __call__ instead + this could have all the initialization code + + ''' + self.cache_result = {} + self.crit = self.get_crit(alpha) #decide where to set alpha, moved to run + self.accepted = [] #store accepted sets, not unique + self.rejected = [] + self.get_distance_matrix() + self.stepdown(lrange(self.n_vals)) + + return list(set(self.accepted)), list(set(sd.rejected)) + + + + + + +def homogeneous_subsets(vals, dcrit): + '''recursively check all pairs of vals for minimum distance + + step down method as in Newman-Keuls and Ryan procedures. This is not a + closed procedure since not all partitions are checked. + + Parameters + ---------- + vals : array_like + values that are pairwise compared + dcrit : array_like or float + critical distance for rejecting, either float, or 2-dimensional array + with distances on the upper triangle. + + Returns + ------- + rejs : list of pairs + list of pair-indices with (strictly) larger than critical difference + nrejs : list of pairs + list of pair-indices with smaller than critical difference + lli : list of tuples + list of subsets with smaller than critical difference + res : tree + result of all comparisons (for checking) + + + this follows description in SPSS notes on Post-Hoc Tests + + Because of the recursive structure, some comparisons are made several + times, but only unique pairs or sets are returned. + + Examples + -------- + >>> m = [0, 2, 2.5, 3, 6, 8, 9, 9.5,10 ] + >>> rej, nrej, ssli, res = homogeneous_subsets(m, 2) + >>> set_partition(ssli) + ([(5, 6, 7, 8), (1, 2, 3), (4,)], [0]) + >>> [np.array(m)[list(pp)] for pp in set_partition(ssli)[0]] + [array([ 8. , 9. , 9.5, 10. ]), array([ 2. , 2.5, 3. ]), array([ 6.])] + + + ''' + + nvals = len(vals) + indices_ = lrange(nvals) + rejected = [] + subsetsli = [] + if np.size(dcrit) == 1: + dcrit = dcrit*np.ones((nvals, nvals)) #example numbers for experimenting + + def subsets(vals, indices_): + '''recursive function for constructing homogeneous subset + + registers rejected and subsetli in outer scope + ''' + i, j = (indices_[0], indices_[-1]) + if vals[-1] - vals[0] > dcrit[i,j]: + rejected.append((indices_[0], indices_[-1])) + return [subsets(vals[:-1], indices_[:-1]), + subsets(vals[1:], indices_[1:]), + (indices_[0], indices_[-1])] + else: + subsetsli.append(tuple(indices_)) + return indices_ + res = subsets(vals, indices_) + + all_pairs = [(i,j) for i in range(nvals) for j in range(nvals-1,i,-1)] + rejs = set(rejected) + not_rejected = list(set(all_pairs) - rejs) + + return list(rejs), not_rejected, list(set(subsetsli)), res + +def set_partition(ssli): + '''extract a partition from a list of tuples + + this should be correctly called select largest disjoint sets. + Begun and Gabriel 1981 don't seem to be bothered by sets of accepted + hypothesis with joint elements, + e.g. maximal_accepted_sets = { {1,2,3}, {2,3,4} } + + This creates a set partition from a list of sets given as tuples. + It tries to find the partition with the largest sets. That is, sets are + included after being sorted by length. + + If the list doesn't include the singletons, then it will be only a + partial partition. Missing items are singletons (I think). + + Examples + -------- + >>> li + [(5, 6, 7, 8), (1, 2, 3), (4, 5), (0, 1)] + >>> set_partition(li) + ([(5, 6, 7, 8), (1, 2, 3)], [0, 4]) + + ''' + part = [] + for s in sorted(list(set(ssli)), key=len)[::-1]: + #print(s, + s_ = set(s).copy() + if not any(set(s_).intersection(set(t)) for t in part): + #print('inside:', s + part.append(s) + #else: print(part + + missing = list(set(i for ll in ssli for i in ll) + - set(i for ll in part for i in ll)) + return part, missing + + +def set_remove_subs(ssli): + '''remove sets that are subsets of another set from a list of tuples + + Parameters + ---------- + ssli : list of tuples + each tuple is considered as a set + + Returns + ------- + part : list of tuples + new list with subset tuples removed, it is sorted by set-length of tuples. The + list contains original tuples, duplicate elements are not removed. + + Examples + -------- + >>> set_remove_subs([(0, 1), (1, 2), (1, 2, 3), (0,)]) + [(1, 2, 3), (0, 1)] + >>> set_remove_subs([(0, 1), (1, 2), (1,1, 1, 2, 3), (0,)]) + [(1, 1, 1, 2, 3), (0, 1)] + + ''' + #TODO: maybe convert all tuples to sets immediately, but I don't need the extra efficiency + part = [] + for s in sorted(list(set(ssli)), key=lambda x: len(set(x)))[::-1]: + #print(s, + #s_ = set(s).copy() + if not any(set(s).issubset(set(t)) for t in part): + #print('inside:', s + part.append(s) + #else: print(part + +## missing = list(set(i for ll in ssli for i in ll) +## - set(i for ll in part for i in ll)) + return part + + + + +if __name__ == '__main__': + + examples = ['tukey', 'tukeycrit', 'fdr', 'fdrmc', 'bonf', 'randmvn', + 'multicompdev', 'None']#[-1] + + if 'tukey' in examples: + #Example Tukey + x = np.array([[0,0,1]]).T + np.random.randn(3, 20) + print(Tukeythreegene(*x)) + + #Example FDR + #------------ + + if ('fdr' in examples) or ('bonf' in examples): + x1 = [1,1,1,0,-1,-1,-1,0,1,1,-1,1] + print(lzip(np.arange(len(x1)), x1)) + print(maxzero(x1)) + #[(0, 1), (1, 1), (2, 1), (3, 0), (4, -1), (5, -1), (6, -1), (7, 0), (8, 1), (9, 1), (10, -1), (11, 1)] + #(11, array([ 3, 7, 11])) + + print(maxzerodown(-np.array(x1))) + + locs = np.linspace(0,1,10) + locs = np.array([0.]*6 + [0.75]*4) + rvs = locs + stats.norm.rvs(size=(20,10)) + tt, tpval = stats.ttest_1samp(rvs, 0) + tpval_sortind = np.argsort(tpval) + tpval_sorted = tpval[tpval_sortind] + + reject = tpval_sorted < ecdf(tpval_sorted)*0.05 + reject2 = max(np.nonzero(reject)) + print(reject) + + res = np.array(lzip(np.round(rvs.mean(0),4),np.round(tpval,4), + reject[tpval_sortind.argsort()]), + dtype=[('mean',float), + ('pval',float), + ('reject', np.bool8)]) + print(SimpleTable(res, headers=res.dtype.names)) + print(fdrcorrection_bak(tpval, alpha=0.05)) + print(reject) + + print('\nrandom example') + print('bonf', multipletests(tpval, alpha=0.05, method='bonf')) + print('sidak', multipletests(tpval, alpha=0.05, method='sidak')) + print('hs', multipletests(tpval, alpha=0.05, method='hs')) + print('sh', multipletests(tpval, alpha=0.05, method='sh')) + pvals = np.array('0.0020 0.0045 0.0060 0.0080 0.0085 0.0090 0.0175 0.0250 ' + '0.1055 0.5350'.split(), float) + print('\nexample from lecturnotes') + for meth in ['bonf', 'sidak', 'hs', 'sh']: + print(meth) + print(multipletests(pvals, alpha=0.05, method=meth)) + + if 'fdrmc' in examples: + mcres = mcfdr(nobs=100, nrepl=1000, ntests=30, ntrue=30, mu=0.1, alpha=0.05, rho=0.3) + mcmeans = np.array(mcres).mean(0) + print(mcmeans) + print(mcmeans[0]/6., 1-mcmeans[1]/4.) + print(mcmeans[:4], mcmeans[-4:]) + + + if 'randmvn' in examples: + rvsmvn = randmvn(0.8, (5000,5)) + print(np.corrcoef(rvsmvn, rowvar=0)) + print(rvsmvn.var(0)) + + + if 'tukeycrit' in examples: + print(get_tukeyQcrit(8, 8, alpha=0.05), 5.60) + print(get_tukeyQcrit(8, 8, alpha=0.01), 7.47) + + + if 'multicompdev' in examples: + #development of kruskal-wallis multiple-comparison + #example from matlab file exchange + + X = np.array([[7.68, 1], [7.69, 1], [7.70, 1], [7.70, 1], [7.72, 1], + [7.73, 1], [7.73, 1], [7.76, 1], [7.71, 2], [7.73, 2], + [7.74, 2], [7.74, 2], [7.78, 2], [7.78, 2], [7.80, 2], + [7.81, 2], [7.74, 3], [7.75, 3], [7.77, 3], [7.78, 3], + [7.80, 3], [7.81, 3], [7.84, 3], [7.71, 4], [7.71, 4], + [7.74, 4], [7.79, 4], [7.81, 4], [7.85, 4], [7.87, 4], + [7.91, 4]]) + xli = [X[X[:,1]==k,0] for k in range(1,5)] + xranks = stats.rankdata(X[:,0]) + xranksli = [xranks[X[:,1]==k] for k in range(1,5)] + xnobs = np.array([len(xval) for xval in xli]) + meanranks = [item.mean() for item in xranksli] + sumranks = [item.sum() for item in xranksli] + # equivalent function + #from scipy import special + #-np.sqrt(2.)*special.erfcinv(2-0.5) == stats.norm.isf(0.25) + stats.norm.sf(0.67448975019608171) + stats.norm.isf(0.25) + + mrs = np.sort(meanranks) + v1, v2 = np.triu_indices(4,1) + print('\nsorted rank differences') + print(mrs[v2] - mrs[v1]) + diffidx = np.argsort(mrs[v2] - mrs[v1])[::-1] + mrs[v2[diffidx]] - mrs[v1[diffidx]] + + print('\nkruskal for all pairs') + for i,j in zip(v2[diffidx], v1[diffidx]): + print(i,j, stats.kruskal(xli[i], xli[j])) + mwu, mwupval = stats.mannwhitneyu(xli[i], xli[j], use_continuity=False) + print(mwu, mwupval*2, mwupval*2<0.05/6., mwupval*2<0.1/6.) + + + + + + uni, intlab = np.unique(X[:,0], return_inverse=True) + groupnobs = np.bincount(intlab) + groupxsum = np.bincount(intlab, weights=X[:,0]) + groupxmean = groupxsum * 1.0 / groupnobs + + rankraw = X[:,0].argsort().argsort() + groupranksum = np.bincount(intlab, weights=rankraw) + # start at 1 for stats.rankdata : + grouprankmean = groupranksum * 1.0 / groupnobs + 1 + assert_almost_equal(grouprankmean[intlab], stats.rankdata(X[:,0]), 15) + gs = GroupsStats(X, useranks=True) + print('\ngroupmeanfilter and grouprankmeans') + print(gs.groupmeanfilter) + print(grouprankmean[intlab]) + #the following has changed + #assert_almost_equal(gs.groupmeanfilter, stats.rankdata(X[:,0]), 15) + + xuni, xintlab = np.unique(X[:,0], return_inverse=True) + gs2 = GroupsStats(np.column_stack([X[:,0], xintlab]), useranks=True) + #assert_almost_equal(gs2.groupmeanfilter, stats.rankdata(X[:,0]), 15) + + rankbincount = np.bincount(xranks.astype(int)) + nties = rankbincount[rankbincount > 1] + ntot = float(len(xranks)) + tiecorrection = 1 - (nties**3 - nties).sum()/(ntot**3 - ntot) + assert_almost_equal(tiecorrection, stats.tiecorrect(xranks),15) + print('\ntiecorrection for data and ranks') + print(tiecorrection) + print(tiecorrect(xranks)) + + tot = X.shape[0] + t=500 #168 + f=(tot*(tot+1.)/12.)-(t/(6.*(tot-1.))) + f=(tot*(tot+1.)/12.)/stats.tiecorrect(xranks) + print('\npairs of mean rank differences') + for i,j in zip(v2[diffidx], v1[diffidx]): + #pdiff = np.abs(mrs[i] - mrs[j]) + pdiff = np.abs(meanranks[i] - meanranks[j]) + se = np.sqrt(f * np.sum(1./xnobs[[i,j]] )) #np.array([8,8]))) #Fixme groupnobs[[i,j]] )) + print(i,j, pdiff, se, pdiff/se, pdiff/se>2.6310) + + multicomp = MultiComparison(*X.T) + multicomp.kruskal() + gsr = GroupsStats(X, useranks=True) + + print('\nexamples for kruskal multicomparison') + for i in range(10): + x1, x2 = (np.random.randn(30,2) + np.array([0, 0.5])).T + skw = stats.kruskal(x1, x2) + mc2=MultiComparison(np.r_[x1, x2], np.r_[np.zeros(len(x1)), np.ones(len(x2))]) + newskw = mc2.kruskal() + print(skw, np.sqrt(skw[0]), skw[1]-newskw, (newskw/skw[1]-1)*100) + + tablett, restt, arrtt = multicomp.allpairtest(stats.ttest_ind) + tablemw, resmw, arrmw = multicomp.allpairtest(stats.mannwhitneyu) + print('') + print(tablett) + print('') + print(tablemw) + tablemwhs, resmw, arrmw = multicomp.allpairtest(stats.mannwhitneyu, method='hs') + print('') + print(tablemwhs) + + if 'last' in examples: + xli = (np.random.randn(60,4) + np.array([0, 0, 0.5, 0.5])).T + #Xrvs = np.array(catstack(xli)) + xrvs, xrvsgr = catstack(xli) + multicompr = MultiComparison(xrvs, xrvsgr) + tablett, restt, arrtt = multicompr.allpairtest(stats.ttest_ind) + print(tablett) + + + xli=[[8,10,9,10,9],[7,8,5,8,5],[4,8,7,5,7]] + x, labels = catstack(xli) + gs4 = GroupsStats(np.column_stack([x, labels])) + print(gs4.groupvarwithin()) + + + #test_tukeyhsd() #moved to test_multi.py + + gmeans = np.array([ 7.71375, 7.76125, 7.78428571, 7.79875]) + gnobs = np.array([8, 8, 7, 8]) + sd = StepDown(gmeans, gnobs, 0.001, [27]) + + #example from BKY + pvals = [0.0001, 0.0004, 0.0019, 0.0095, 0.0201, 0.0278, 0.0298, 0.0344, 0.0459, + 0.3240, 0.4262, 0.5719, 0.6528, 0.7590, 1.000 ] + + #same number of rejection as in BKY paper: + #single step-up:4, two-stage:8, iterated two-step:9 + #also alpha_star is the same as theirs for TST + print(fdrcorrection0(pvals, alpha=0.05, method='indep')) + print(fdrcorrection_twostage(pvals, alpha=0.05, iter=False)) + res_tst = fdrcorrection_twostage(pvals, alpha=0.05, iter=False) + assert_almost_equal([0.047619, 0.0649], res_tst[-1][:2],3) #alpha_star for stage 2 + assert_equal(8, res_tst[0].sum()) + print(fdrcorrection_twostage(pvals, alpha=0.05, iter=True)) + print('fdr_gbs', multipletests(pvals, alpha=0.05, method='fdr_gbs')) + #multicontrast_pvalues(tstat, tcorr, df) + test_tukey_pvalues() + tukey_pvalues(3.649, 3, 16) diff --git a/statsmodels/sandbox/stats/notes_fdr.txt b/statsmodels/sandbox/stats/notes_fdr.txt new file mode 100644 index 0000000..d027c34 --- /dev/null +++ b/statsmodels/sandbox/stats/notes_fdr.txt @@ -0,0 +1,128 @@ + +Multiple Tests and Multiple Comparisons +======================================= + +Introduction +------------ + +generic multiple testing procedures, p-value corrections and fdr don't use +any additional information, only information contained in p-values. +I don't know if there are any underlying assumption, except that the raw +pvalues are uniformly on [0,1] distributed under the null hypothesis. + +fdr for microarray or fmri can use special structure +A special case in general statistical literature is the comparison of means +with specific methods to correct for multiple tests, e.g. Tukey + +(survey by Shaffer + + +General Methods +--------------- + +pvalue correction +~~~~~~~~~~~~~~~~~ + +implemented, + +basic fdr, BH, BY + +multiple testing procedures +~~~~~~~~~~~~~~~~~~~~~~~~~~~ +pvalue correction is not available/implemented, return reject is True/False +for a given confidence level. +(pvalue correction were initially written this way) + + +fdr bky 2-step procedure with estimation of fraction of false hypothesis. + + +Multiple Comparisons +-------------------- + +Tukey, Dunnet, ... +see Hothorn, Bretz, Westfall, University of Munich 2008, working paper, +published in ... + +The general theory in Bretz, Genz and Hothorn, Bretz, Westfall, multcomp, +is based on the distribution of the maximum of the statistics when the +statistics are distributed according to a joint t or normal distribution +distribution. pvalues, whether to reject a hypothesis and joint confidence +intervalls can be obtained directly from integration of the joint t or +normal distribution. + +Scipy does not have the cdf of a multivariate t distribution, but according +to Bretz and Gentz it can be obtained by a univariate integration from +the cdf of the multivariate normal distribution. + +The distribution for Tukey's range statistic is half (?) of the distribution +of the maximum of t-distributed random variables if the underlying means +are assumed to be independently distributed. (my interpretation so far, but +I have not verified the details yet, see ... ) + +Bretz and Genz also have a table with the summary of the contrast matrices +for different tests, like Tukey and Dunnet. These contrast matrices are +implemented in R, but for some of them they are not immediately obvious. + +As an aside, this seems to be related to getting simultaneous confidence +bands for forecasting. But it is not clear to me yet how to define the +confidence bands, I have the articles but have not read them yet. + +The older tests, Tukey, Dunnet and similar assume that the means are +independently normally distributed, and critical values are tabulated for this +case. Newer methods allow for arbitrary correlation (Bretz, Hothorn,...) or +assume a specific structure for simplicity, for example factor structure for +the covariance as in Hsu. The latter is the default approach in SAS. +The tests based on independence are often categorized as post-hoc tests, a good +overview of the formulas is in the SPSS description. + +It is also mentioned in the literature (?) that these multiple comparison tests +loose power if they are only used conditional on the rejection of an overall +F-test + + +TODO: +* finish Tukey, Dunnet because they will be familiar +* add multivariate normal cdf to statsmodels +* try Bretz/Gentz cdf of t distribution form the cdf of the multivariate normal + + + +special cases +------------- + + +nipy.neurospin + +follows + +Schwartzman, A. et al., 2009. Empirical null and false discovery rate +analysis in neuroimaging. NeuroImage, 44(1), pp.71-82. + +test defined for point-wise test on a 2 component mixture distribution. +The probability of an observation to be in the null distribution can be +estimated from the mixture distribution (not sure) +fdr defined on observations not a sample mean +alternative literature: use topological properties of the picture to +correct fdr. + + +TODO +==== + +* fdr_bky and check whether prior q can be used with current pvalue-correction +* multi-comparison: Tukey, convenience classes/methods expand on current +* Monte Carlo +* maybe some resampling, bootstrap, permutation, later +* for the rest I'm not really interested in doing the work: k-FWER, k-FDR, + other estimators for fraction of true or false hypothesis + + + + +multtest (R) +check bootstrap references + +multcomp (R) +contrMat has the contrast matrices for various standard test +function parm parm(coef, vcov, df = 0) can work with only the estimates given diff --git a/statsmodels/sandbox/stats/runs.py b/statsmodels/sandbox/stats/runs.py new file mode 100644 index 0000000..21d2155 --- /dev/null +++ b/statsmodels/sandbox/stats/runs.py @@ -0,0 +1,634 @@ +'''runstest + +formulas for mean and var of runs taken from SAS manual NPAR tests, also idea +for runstest_1samp and runstest_2samp + +Description in NIST handbook and dataplot doesn't explain their expected +values, or variance + +Note: +There are (at least) two definitions of runs used in literature. The classical +definition which is also used here, is that runs are sequences of identical +observations separated by observations with different realizations. +The second definition allows for overlapping runs, or runs where counting a +run is also started after a run of a fixed length of the same kind. + + +TODO +* add one-sided tests where possible or where it makes sense + +''' + +from __future__ import print_function +import numpy as np +from scipy import stats +from scipy.special import comb +import warnings + +class Runs(object): + '''class for runs in a binary sequence + + + Parameters + ---------- + x : array_like, 1d + data array, + + + Notes + ----- + This was written as a more general class for runs. This has some redundant + calculations when only the runs_test is used. + + TODO: make it lazy + + The runs test could be generalized to more than 1d if there is a use case + for it. + + This should be extended once I figure out what the distribution of runs + of any length k is. + + The exact distribution for the runs test is also available but not yet + verified. + + ''' + + def __init__(self, x): + self.x = np.asarray(x) + + self.runstart = runstart = np.nonzero(np.diff(np.r_[[-np.inf], x, [np.inf]]))[0] + self.runs = runs = np.diff(runstart) + self.runs_sign = runs_sign = x[runstart[:-1]] + self.runs_pos = runs[runs_sign==1] + self.runs_neg = runs[runs_sign==0] + self.runs_freqs = np.bincount(runs) + self.n_runs = len(self.runs) + self.n_pos = (x==1).sum() + + def runs_test(self, correction=True): + '''basic version of runs test + + Parameters + ---------- + correction: bool + Following the SAS manual, for samplesize below 50, the test + statistic is corrected by 0.5. This can be turned off with + correction=False, and was included to match R, tseries, which + does not use any correction. + + pvalue based on normal distribution, with integer correction + + ''' + self.npo = npo = (self.runs_pos).sum() + self.nne = nne = (self.runs_neg).sum() + + #n_r = self.n_runs + n = npo + nne + npn = npo * nne + rmean = 2. * npn / n + 1 + rvar = 2. * npn * (2.*npn - n) / n**2. / (n-1.) + rstd = np.sqrt(rvar) + rdemean = self.n_runs - rmean + if n >= 50 or not correction: + z = rdemean + else: + if rdemean > 0.5: + z = rdemean - 0.5 + elif rdemean < 0.5: + z = rdemean + 0.5 + else: + z = 0. + + z /= rstd + pval = 2 * stats.norm.sf(np.abs(z)) + return z, pval + +def runstest_1samp(x, cutoff='mean', correction=True): + '''use runs test on binary discretized data above/below cutoff + + Parameters + ---------- + x : array_like + data, numeric + cutoff : {'mean', 'median'} or number + This specifies the cutoff to split the data into large and small + values. + correction: bool + Following the SAS manual, for samplesize below 50, the test + statistic is corrected by 0.5. This can be turned off with + correction=False, and was included to match R, tseries, which + does not use any correction. + + Returns + ------- + z_stat : float + test statistic, asymptotically normally distributed + p-value : float + p-value, reject the null hypothesis if it is below an type 1 error + level, alpha . + + ''' + + if cutoff == 'mean': + cutoff = np.mean(x) + elif cutoff == 'median': + cutoff = np.median(x) + xindicator = (x >= cutoff).astype(int) + return Runs(xindicator).runs_test(correction=correction) + +def runstest_2samp(x, y=None, groups=None, correction=True): + '''Wald-Wolfowitz runstest for two samples + + This tests whether two samples come from the same distribution. + + Parameters + ---------- + x : array_like + data, numeric, contains either one group, if y is also given, or + both groups, if additionally a group indicator is provided + y : array_like (optional) + data, numeric + groups : array_like + group labels or indicator the data for both groups is given in a + single 1-dimensional array, x. If group labels are not [0,1], then + correction: bool + Following the SAS manual, for samplesize below 50, the test + statistic is corrected by 0.5. This can be turned off with + correction=False, and was included to match R, tseries, which + does not use any correction. + + Returns + ------- + z_stat : float + test statistic, asymptotically normally distributed + p-value : float + p-value, reject the null hypothesis if it is below an type 1 error + level, alpha . + + + Notes + ----- + Wald-Wolfowitz runs test. + + If there are ties, then then the test statistic and p-value that is + reported, is based on the higher p-value between sorting all tied + observations of the same group + + + This test is intended for continuous distributions + SAS has treatment for ties, but not clear, and sounds more complicated + (minimum and maximum possible runs prevent use of argsort) + (maybe it's not so difficult, idea: add small positive noise to first + one, run test, then to the other, run test, take max(?) p-value - DONE + This gives not the minimum and maximum of the number of runs, but should + be close. Not true, this is close to minimum but far away from maximum. + maximum number of runs would use alternating groups in the ties.) + Maybe adding random noise would be the better approach. + + SAS has exact distribution for sample size <=30, doesn't look standard + but should be easy to add. + + currently two-sided test only + + This has not been verified against a reference implementation. In a short + Monte Carlo simulation where both samples are normally distribute, the test + seems to be correctly sized for larger number of observations (30 or + larger), but conservative (i.e. reject less often than nominal) with a + sample size of 10 in each group. + + See Also + -------- + runs_test_1samp + Runs + RunsProb + + ''' + x = np.asarray(x) + if y is not None: + y = np.asarray(y) + groups = np.concatenate((np.zeros(len(x)), np.ones(len(y)))) + # note reassigning x + x = np.concatenate((x, y)) + gruni = np.arange(2) + elif groups is not None: + gruni = np.unique(groups) + if gruni.size != 2: # pylint: disable=E1103 + raise ValueError('not exactly two groups specified') + #require groups to be numeric ??? + else: + raise ValueError('either y or groups is necessary') + + xargsort = np.argsort(x) + #check for ties + x_sorted = x[xargsort] + x_diff = np.diff(x_sorted) # used for detecting and handling ties + if x_diff.min() == 0: + print('ties detected') #replace with warning + x_mindiff = x_diff[x_diff > 0].min() + eps = x_mindiff/2. + xx = x.copy() #don't change original, just in case + + xx[groups==gruni[0]] += eps + xargsort = np.argsort(xx) + xindicator = groups[xargsort] + z0, p0 = Runs(xindicator).runs_test(correction=correction) + + xx[groups==gruni[0]] -= eps #restore xx = x + xx[groups==gruni[1]] += eps + xargsort = np.argsort(xx) + xindicator = groups[xargsort] + z1, p1 = Runs(xindicator).runs_test(correction=correction) + + idx = np.argmax([p0,p1]) + return [z0, z1][idx], [p0, p1][idx] + + else: + xindicator = groups[xargsort] + return Runs(xindicator).runs_test(correction=correction) + + +class TotalRunsProb(object): + '''class for the probability distribution of total runs + + This is the exact probability distribution for the (Wald-Wolfowitz) + runs test. The random variable is the total number of runs if the + sample has (n0, n1) observations of groups 0 and 1. + + + Notes + ----- + Written as a class so I can store temporary calculations, but I don't + think it matters much. + + Formulas taken from SAS manual for one-sided significance level. + + Could be converted to a full univariate distribution, subclassing + scipy.stats.distributions. + + *Status* + Not verified yet except for mean. + + + + ''' + + def __init__(self, n0, n1): + self.n0 = n0 + self.n1 = n1 + self.n = n = n0 + n1 + self.comball = comb(n, n1) + + def runs_prob_even(self, r): + n0, n1 = self.n0, self.n1 + tmp0 = comb(n0-1, r//2-1) + tmp1 = comb(n1-1, r//2-1) + return tmp0 * tmp1 * 2. / self.comball + + def runs_prob_odd(self, r): + n0, n1 = self.n0, self.n1 + k = (r+1)//2 + tmp0 = comb(n0-1, k-1) + tmp1 = comb(n1-1, k-2) + tmp3 = comb(n0-1, k-2) + tmp4 = comb(n1-1, k-1) + return (tmp0 * tmp1 + tmp3 * tmp4) / self.comball + + def pdf(self, r): + r = np.asarray(r) + r_isodd = np.mod(r, 2) > 0 + r_odd = r[r_isodd] + r_even = r[~r_isodd] + runs_pdf = np.zeros(r.shape) + runs_pdf[r_isodd] = self.runs_prob_odd(r_odd) + runs_pdf[~r_isodd] = self.runs_prob_even(r_even) + return runs_pdf + + + def cdf(self, r): + r_ = np.arange(2,r+1) + cdfval = self.runs_prob_even(r_[::2]).sum() + cdfval += self.runs_prob_odd(r_[1::2]).sum() + return cdfval + + +class RunsProb(object): + '''distribution of success runs of length k or more (classical definition) + + The underlying process is assumed to be a sequence of Bernoulli trials + of a given length n. + + not sure yet, how to interpret or use the distribution for runs + of length k or more. + + Musseli also has longest success run, and waiting time distribution + negative binomial of order k and geometric of order k + + need to compare with Godpole + + need a MonteCarlo function to do some quick tests before doing more + + + ''' + + + + def pdf(self, x, k, n, p): + '''distribution of success runs of length k or more + + Parameters + ---------- + x : float + count of runs of length n + k : int + length of runs + n : int + total number of observations or trials + p : float + probability of success in each Bernoulli trial + + Returns + ------- + pdf : float + probability that x runs of length of k are observed + + Notes + ----- + not yet vectorized + + References + ---------- + Muselli 1996, theorem 3 + ''' + + q = 1-p + m = np.arange(x, (n+1)//(k+1)+1)[:,None] + terms = (-1)**(m-x) * comb(m, x) * p**(m*k) * q**(m-1) \ + * (comb(n - m*k, m - 1) + q * comb(n - m*k, m)) + return terms.sum(0) + + def pdf_nb(self, x, k, n, p): + pass + #y = np.arange(m-1, n-mk+1 + +''' +>>> [np.sum([RunsProb().pdf(xi, k, 16, 10/16.) for xi in range(0,16)]) for k in range(16)] +[0.99999332193894064, 0.99999999999999367, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0] +>>> [(np.arange(0,16) * [RunsProb().pdf(xi, k, 16, 10/16.) for xi in range(0,16)]).sum() for k in range(16)] +[6.9998931510341809, 4.1406249999999929, 2.4414062500000075, 1.4343261718749996, 0.83923339843749856, 0.48875808715820324, 0.28312206268310569, 0.1629814505577086, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] +>>> np.array([(np.arange(0,16) * [RunsProb().pdf(xi, k, 16, 10/16.) for xi in range(0,16)]).sum() for k in range(16)])/11 +array([ 0.63635392, 0.37642045, 0.22194602, 0.13039329, 0.07629395, + 0.04443255, 0.02573837, 0.0148165 , 0. , 0. , + 0. , 0. , 0. , 0. , 0. , 0. ]) +>>> np.diff([(np.arange(0,16) * [RunsProb().pdf(xi, k, 16, 10/16.) for xi in range(0,16)]).sum() for k in range(16)][::-1]) +array([ 0. , 0. , 0. , 0. , 0. , + 0. , 0. , 0.16298145, 0.12014061, 0.20563602, + 0.35047531, 0.59509277, 1.00708008, 1.69921875, 2.85926815]) +''' + + + +def median_test_ksample(x, groups): + '''chisquare test for equality of median/location + + This tests whether all groups have the same fraction of observations + above the median. + + Parameters + ---------- + x : array_like + data values stacked for all groups + groups : array_like + group labels or indicator + + Returns + ------- + stat : float + test statistic + pvalue : float + pvalue from the chisquare distribution + others ???? + currently some test output, table and expected + + ''' + x = np.asarray(x) + gruni = np.unique(groups) + xli = [x[groups==group] for group in gruni] + xmedian = np.median(x) + counts_larger = np.array([(xg > xmedian).sum() for xg in xli]) + counts = np.array([len(xg) for xg in xli]) + counts_smaller = counts - counts_larger + nobs = counts.sum() + n_larger = (x > xmedian).sum() + n_smaller = nobs - n_larger + table = np.vstack((counts_smaller, counts_larger)) + + #the following should be replaced by chisquare_contingency table + expected = np.vstack((counts * 1. / nobs * n_smaller, + counts * 1. / nobs * n_larger)) + + if (expected < 5).any(): + print('Warning: There are cells with less than 5 expected' \ + 'observations. The chisquare distribution might not be a good' \ + 'approximation for the true distribution.') + + #check ddof + return stats.chisquare(table.ravel(), expected.ravel(), ddof=1), table, expected + + + + +def cochrans_q(x): + '''Cochran's Q test for identical effect of k treatments + + Cochran's Q is a k-sample extension of the McNemar test. If there are only + two treatments, then Cochran's Q test and McNemar test are equivalent. + + Test that the probability of success is the same for each treatment. + The alternative is that at least two treatments have a different + probability of success. + + Parameters + ---------- + x : array_like, 2d (N,k) + data with N cases and k variables + + Returns + ------- + q_stat : float + test statistic + pvalue : float + pvalue from the chisquare distribution + + Notes + ----- + In Wikipedia terminology, rows are blocks and columns are treatments. + The number of rows N, should be large for the chisquare distribution to be + a good approximation. + The Null hypothesis of the test is that all treatments have the + same effect. + + References + ---------- + http://en.wikipedia.org/wiki/Cochran_test + SAS Manual for NPAR TESTS + + ''' + + warnings.warn("Deprecated, use stats.cochrans_q instead", DeprecationWarning) + + x = np.asarray(x) + gruni = np.unique(x) + N, k = x.shape + count_row_success = (x==gruni[-1]).sum(1, float) + count_col_success = (x==gruni[-1]).sum(0, float) + count_row_ss = count_row_success.sum() + count_col_ss = count_col_success.sum() + assert count_row_ss == count_col_ss #just a calculation check + + + #this is SAS manual + q_stat = (k-1) * (k * np.sum(count_col_success**2) - count_col_ss**2) \ + / (k * count_row_ss - np.sum(count_row_success**2)) + + #Note: the denominator looks just like k times the variance of the + #columns + + #Wikipedia uses a different, but equivalent expression +## q_stat = (k-1) * (k * np.sum(count_row_success**2) - count_row_ss**2) \ +## / (k * count_col_ss - np.sum(count_col_success**2)) + + return q_stat, stats.chi2.sf(q_stat, k-1) + +def mcnemar(x, y=None, exact=True, correction=True): + '''McNemar test + + Parameters + ---------- + x, y : array_like + two paired data samples. If y is None, then x can be a 2 by 2 + contingency table. x and y can have more than one dimension, then + the results are calculated under the assumption that axis zero + contains the observation for the samples. + exact : bool + If exact is true, then the binomial distribution will be used. + If exact is false, then the chisquare distribution will be used, which + is the approximation to the distribution of the test statistic for + large sample sizes. + correction : bool + If true, then a continuity correction is used for the chisquare + distribution (if exact is false.) + + Returns + ------- + stat : float or int, array + The test statistic is the chisquare statistic if exact is false. If the + exact binomial distribution is used, then this contains the min(n1, n2), + where n1, n2 are cases that are zero in one sample but one in the other + sample. + + pvalue : float or array + p-value of the null hypothesis of equal effects. + + Notes + ----- + This is a special case of Cochran's Q test. The results when the chisquare + distribution is used are identical, except for continuity correction. + + ''' + + warnings.warn("Deprecated, use stats.TableSymmetry instead", DeprecationWarning) + + x = np.asarray(x) + if y is None and x.shape[0] == x.shape[1]: + if x.shape[0] != 2: + raise ValueError('table needs to be 2 by 2') + n1, n2 = x[1, 0], x[0, 1] + else: + # I'm not checking here whether x and y are binary, + # isn't this also paired sign test + n1 = np.sum(x < y, 0) + n2 = np.sum(x > y, 0) + + if exact: + stat = np.minimum(n1, n2) + # binom is symmetric with p=0.5 + pval = stats.binom.cdf(stat, n1 + n2, 0.5) * 2 + pval = np.minimum(pval, 1) # limit to 1 if n1==n2 + else: + corr = int(correction) # convert bool to 0 or 1 + stat = (np.abs(n1 - n2) - corr)**2 / (1. * (n1 + n2)) + df = 1 + pval = stats.chi2.sf(stat, df) + return stat, pval + + +def symmetry_bowker(table): + '''Test for symmetry of a (k, k) square contingency table + + This is an extension of the McNemar test to test the Null hypothesis + that the contingency table is symmetric around the main diagonal, that is + + n_{i, j} = n_{j, i} for all i, j + + Parameters + ---------- + table : array_like, 2d, (k, k) + a square contingency table that contains the count for k categories + in rows and columns. + + Returns + ------- + statistic : float + chisquare test statistic + p-value : float + p-value of the test statistic based on chisquare distribution + df : int + degrees of freedom of the chisquare distribution + + Notes + ----- + Implementation is based on the SAS documentation, R includes it in + `mcnemar.test` if the table is not 2 by 2. + + The pvalue is based on the chisquare distribution which requires that the + sample size is not very small to be a good approximation of the true + distribution. For 2x2 contingency tables exact distribution can be + obtained with `mcnemar` + + See Also + -------- + mcnemar + + + ''' + + warnings.warn("Deprecated, use stats.TableSymmetry instead", DeprecationWarning) + + table = np.asarray(table) + k, k2 = table.shape + if k != k2: + raise ValueError('table needs to be square') + + #low_idx = np.tril_indices(k, -1) # this doesn't have Fortran order + upp_idx = np.triu_indices(k, 1) + + tril = table.T[upp_idx] # lower triangle in column order + triu = table[upp_idx] # upper triangle in row order + + stat = ((tril - triu)**2 / (tril + triu + 1e-20)).sum() + df = k * (k-1) / 2. + pval = stats.chi2.sf(stat, df) + + return stat, pval, df + + +if __name__ == '__main__': + + x1 = np.array([1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1]) + + print(Runs(x1).runs_test()) + print(runstest_1samp(x1, cutoff='mean')) + print(runstest_2samp(np.arange(16,0,-1), groups=x1)) + print(TotalRunsProb(7,9).cdf(11)) + print(median_test_ksample(np.random.randn(100), np.random.randint(0,2,100))) + print(cochrans_q(np.random.randint(0,2,(100,8)))) diff --git a/statsmodels/sandbox/stats/stats_dhuard.py b/statsmodels/sandbox/stats/stats_dhuard.py new file mode 100644 index 0000000..64e6d12 --- /dev/null +++ b/statsmodels/sandbox/stats/stats_dhuard.py @@ -0,0 +1,329 @@ +''' +from David Huard's scipy sandbox, also attached to a ticket and +in the matplotlib-user mailinglist (links ???) + + +Notes +===== + +out of bounds interpolation raises exception and wouldn't be completely +defined :: + +>>> scoreatpercentile(x, [0,25,50,100]) +Traceback (most recent call last): +... + raise ValueError("A value in x_new is below the interpolation " +ValueError: A value in x_new is below the interpolation range. +>>> percentileofscore(x, [-50, 50]) +Traceback (most recent call last): +... + raise ValueError("A value in x_new is below the interpolation " +ValueError: A value in x_new is below the interpolation range. + + +idea +==== + +histogram and empirical interpolated distribution +------------------------------------------------- + +dual constructor +* empirical cdf : cdf on all observations through linear interpolation +* binned cdf : based on histogram +both should work essentially the same, although pdf of empirical has +many spikes, fluctuates a lot +- alternative: binning based on interpolated cdf : example in script +* ppf: quantileatscore based on interpolated cdf +* rvs : generic from ppf +* stats, expectation ? how does integration wrt cdf work - theory? + +Problems +* limits, lower and upper bound of support + does not work or is undefined with empirical cdf and interpolation +* extending bounds ? + matlab has pareto tails for empirical distribution, breaks linearity + +empirical distribution with higher order interpolation +------------------------------------------------------ + +* should work easily enough with interpolating splines +* not piecewise linear +* can use pareto (or other) tails +* ppf how do I get the inverse function of a higher order spline? + Chuck: resample and fit spline to inverse function + this will have an approximation error in the inverse function +* -> doesn't work: higher order spline doesn't preserve monotonicity + see mailing list for response to my question +* pmf from derivative available in spline + +-> forget this and use kernel density estimator instead + + +bootstrap/empirical distribution: +--------------------------------- + +discrete distribution on real line given observations +what's defined? +* cdf : step function +* pmf : points with equal weight 1/nobs +* rvs : resampling +* ppf : quantileatscore on sample? +* moments : from data ? +* expectation ? sum_{all observations x} [func(x) * pmf(x)] +* similar for discrete distribution on real line +* References : ? +* what's the point? most of it is trivial, just for the record ? + + +Created on Monday, May 03, 2010, 11:47:03 AM +Author: josef-pktd, parts based on David Huard +License: BSD + +''' +from __future__ import print_function +import scipy.interpolate as interpolate +import numpy as np + +def scoreatpercentile(data, percentile): + """Return the score at the given percentile of the data. + + Example: + >>> data = randn(100) + >>> scoreatpercentile(data, 50) + + will return the median of sample `data`. + """ + per = np.array(percentile) + cdf = empiricalcdf(data) + interpolator = interpolate.interp1d(np.sort(cdf), np.sort(data)) + return interpolator(per/100.) + +def percentileofscore(data, score): + """Return the percentile-position of score relative to data. + + score: Array of scores at which the percentile is computed. + + Return percentiles (0-100). + + Example + r = randn(50) + x = linspace(-2,2,100) + percentileofscore(r,x) + + Raise an error if the score is outside the range of data. + """ + cdf = empiricalcdf(data) + interpolator = interpolate.interp1d(np.sort(data), np.sort(cdf)) + return interpolator(score)*100. + +def empiricalcdf(data, method='Hazen'): + """Return the empirical cdf. + + Methods available: + Hazen: (i-0.5)/N + Weibull: i/(N+1) + Chegodayev: (i-.3)/(N+.4) + Cunnane: (i-.4)/(N+.2) + Gringorten: (i-.44)/(N+.12) + California: (i-1)/N + + Where i goes from 1 to N. + """ + + i = np.argsort(np.argsort(data)) + 1. + N = len(data) + method = method.lower() + if method == 'hazen': + cdf = (i-0.5)/N + elif method == 'weibull': + cdf = i/(N+1.) + elif method == 'california': + cdf = (i-1.)/N + elif method == 'chegodayev': + cdf = (i-.3)/(N+.4) + elif method == 'cunnane': + cdf = (i-.4)/(N+.2) + elif method == 'gringorten': + cdf = (i-.44)/(N+.12) + else: + raise ValueError('Unknown method. Choose among Weibull, Hazen,' + 'Chegodayev, Cunnane, Gringorten and California.') + + return cdf + + +class HistDist(object): + '''Distribution with piecewise linear cdf, pdf is step function + + can be created from empiricial distribution or from a histogram (not done yet) + + work in progress, not finished + + + ''' + + def __init__(self, data): + self.data = np.atleast_1d(data) + self.binlimit = np.array([self.data.min(), self.data.max()]) + sortind = np.argsort(data) + self._datasorted = data[sortind] + self.ranking = np.argsort(sortind) + + cdf = self.empiricalcdf() + self._empcdfsorted = np.sort(cdf) + self.cdfintp = interpolate.interp1d(self._datasorted, self._empcdfsorted) + self.ppfintp = interpolate.interp1d(self._empcdfsorted, self._datasorted) + + def empiricalcdf(self, data=None, method='Hazen'): + """Return the empirical cdf. + + Methods available: + Hazen: (i-0.5)/N + Weibull: i/(N+1) + Chegodayev: (i-.3)/(N+.4) + Cunnane: (i-.4)/(N+.2) + Gringorten: (i-.44)/(N+.12) + California: (i-1)/N + + Where i goes from 1 to N. + """ + + if data is None: + data = self.data + i = self.ranking + else: + i = np.argsort(np.argsort(data)) + 1. + + N = len(data) + method = method.lower() + if method == 'hazen': + cdf = (i-0.5)/N + elif method == 'weibull': + cdf = i/(N+1.) + elif method == 'california': + cdf = (i-1.)/N + elif method == 'chegodayev': + cdf = (i-.3)/(N+.4) + elif method == 'cunnane': + cdf = (i-.4)/(N+.2) + elif method == 'gringorten': + cdf = (i-.44)/(N+.12) + else: + raise ValueError('Unknown method. Choose among Weibull, Hazen,' + 'Chegodayev, Cunnane, Gringorten and California.') + + return cdf + + + def cdf_emp(self, score): + ''' + this is score in dh + + ''' + return self.cdfintp(score) + #return percentileofscore(self.data, score) + + def ppf_emp(self, quantile): + ''' + this is score in dh + + ''' + return self.ppfintp(quantile) + #return scoreatpercentile(self.data, quantile*100) + + + #from DHuard http://old.nabble.com/matplotlib-f2903.html + def optimize_binning(self, method='Freedman'): + """Find the optimal number of bins and update the bin countaccordingly. + Available methods : Freedman + Scott + """ + + nobs = len(self.data) + if method=='Freedman': + IQR = self.ppf_emp(0.75) - self.ppf_emp(0.25) # Interquantile range(75% -25%) + width = 2* IQR* nobs**(-1./3) + + elif method=='Scott': + width = 3.49 * np.std(self.data) * nobs**(-1./3) + + self.nbin = (np.ptp(self.binlimit)/width) + return self.nbin + + +#changes: josef-pktd +if __name__ == '__main__': + import matplotlib.pyplot as plt + + nobs = 100 + x = np.random.randn(nobs) + + examples = [2] + if 1 in examples: + empiricalcdf(x) + print(percentileofscore(x, 0.5)) + print(scoreatpercentile(x, 50)) + xsupp = np.linspace(x.min(), x.max()) + pos = percentileofscore(x, xsupp) + plt.plot(xsupp, pos) + #perc = np.linspace(2.5, 97.5) + #plt.plot(scoreatpercentile(x, perc), perc) + plt.plot(scoreatpercentile(x, pos), pos+1) + + + #emp = interpolate.PiecewisePolynomial(np.sort(empiricalcdf(x)), np.sort(x)) + emp=interpolate.InterpolatedUnivariateSpline(np.sort(x),np.sort(empiricalcdf(x)),k=1) + pdfemp = np.array([emp.derivatives(xi)[1] for xi in xsupp]) + plt.figure() + plt.plot(xsupp,pdfemp) + cdf_ongrid = emp(xsupp) + plt.figure() + plt.plot(xsupp, cdf_ongrid) + + #get pdf from interpolated cdf on a regular grid + plt.figure() + plt.step(xsupp[:-1],np.diff(cdf_ongrid)/np.diff(xsupp)) + + #reduce number of bins/steps + xsupp2 = np.linspace(x.min(), x.max(), 25) + plt.figure() + plt.step(xsupp2[:-1],np.diff(emp(xsupp2))/np.diff(xsupp2)) + + #pdf using 25 original observations, every (nobs/25)th + xso = np.sort(x) + xs = xso[::nobs/25] + plt.figure() + plt.step(xs[:-1],np.diff(emp(xs))/np.diff(xs)) + #lower end looks strange + + + histd = HistDist(x) + print(histd.optimize_binning()) + print(histd.cdf_emp(histd.binlimit)) + print(histd.ppf_emp([0.25, 0.5, 0.75])) + print(histd.cdf_emp([-0.5, -0.25, 0, 0.25, 0.5])) + + + xsupp = np.linspace(x.min(), x.max(), 500) + emp=interpolate.InterpolatedUnivariateSpline(np.sort(x),np.sort(empiricalcdf(x)),k=1) + #pdfemp = np.array([emp.derivatives(xi)[1] for xi in xsupp]) + #plt.figure() + #plt.plot(xsupp,pdfemp) + cdf_ongrid = emp(xsupp) + plt.figure() + plt.plot(xsupp, cdf_ongrid) + ppfintp = interpolate.InterpolatedUnivariateSpline(cdf_ongrid,xsupp,k=3) + + ppfs = ppfintp(cdf_ongrid) + plt.plot(ppfs, cdf_ongrid) + #ppfemp=interpolate.InterpolatedUnivariateSpline(np.sort(empiricalcdf(x)),np.sort(x),k=3) + #Don't use interpolating splines for function approximation + #with s=0.03 the spline is monotonic at the evaluated values + ppfemp=interpolate.UnivariateSpline(np.sort(empiricalcdf(x)),np.sort(x),k=3, s=0.03) + ppfe = ppfemp(cdf_ongrid) + plt.plot(ppfe, cdf_ongrid) + + print('negative density') + print('(np.diff(ppfs)).min()', (np.diff(ppfs)).min()) + print('(np.diff(cdf_ongrid)).min()', (np.diff(cdf_ongrid)).min()) + #plt.show() diff --git a/statsmodels/sandbox/stats/stats_mstats_short.py b/statsmodels/sandbox/stats/stats_mstats_short.py new file mode 100644 index 0000000..d35b996 --- /dev/null +++ b/statsmodels/sandbox/stats/stats_mstats_short.py @@ -0,0 +1,383 @@ +'''get versions of mstats percentile functions that also work with non-masked arrays + +uses dispatch to mstats version for difficult cases: + - data is masked array + - data requires nan handling (masknan=True) + - data should be trimmed (limit is non-empty) +handle simple cases directly, which doesn't require apply_along_axis +changes compared to mstats: plotting_positions for n-dim with axis argument +addition: plotting_positions_w1d: with weights, 1d ndarray only + +TODO: +consistency with scipy.stats versions not checked +docstrings from mstats not updated yet +code duplication, better solutions (?) +convert examples to tests +rename alphap, betap for consistency +timing question: one additional argsort versus apply_along_axis +weighted plotting_positions +- I haven't figured out nd version of weighted plotting_positions +- add weighted quantiles + + +''' +from __future__ import print_function +import numpy as np +from numpy import ma +from scipy import stats + +#from numpy.ma import nomask + + + + +#####-------------------------------------------------------------------------- +#---- --- Percentiles --- +#####-------------------------------------------------------------------------- + + +def quantiles(a, prob=list([.25,.5,.75]), alphap=.4, betap=.4, axis=None, + limit=(), masknan=False): + """ + Computes empirical quantiles for a data array. + + Samples quantile are defined by :math:`Q(p) = (1-g).x[i] +g.x[i+1]`, + where :math:`x[j]` is the *j*th order statistic, and + `i = (floor(n*p+m))`, `m=alpha+p*(1-alpha-beta)` and `g = n*p + m - i`. + + Typical values of (alpha,beta) are: + - (0,1) : *p(k) = k/n* : linear interpolation of cdf (R, type 4) + - (.5,.5) : *p(k) = (k+1/2.)/n* : piecewise linear + function (R, type 5) + - (0,0) : *p(k) = k/(n+1)* : (R type 6) + - (1,1) : *p(k) = (k-1)/(n-1)*. In this case, p(k) = mode[F(x[k])]. + That's R default (R type 7) + - (1/3,1/3): *p(k) = (k-1/3)/(n+1/3)*. Then p(k) ~ median[F(x[k])]. + The resulting quantile estimates are approximately median-unbiased + regardless of the distribution of x. (R type 8) + - (3/8,3/8): *p(k) = (k-3/8)/(n+1/4)*. Blom. + The resulting quantile estimates are approximately unbiased + if x is normally distributed (R type 9) + - (.4,.4) : approximately quantile unbiased (Cunnane) + - (.35,.35): APL, used with PWM ?? JP + - (0.35, 0.65): PWM ?? JP p(k) = (k-0.35)/n + + Parameters + ---------- + a : array-like + Input data, as a sequence or array of dimension at most 2. + prob : array-like, optional + List of quantiles to compute. + alpha : float, optional + Plotting positions parameter, default is 0.4. + beta : float, optional + Plotting positions parameter, default is 0.4. + axis : int, optional + Axis along which to perform the trimming. + If None (default), the input array is first flattened. + limit : tuple + Tuple of (lower, upper) values. + Values of `a` outside this closed interval are ignored. + + Returns + ------- + quants : MaskedArray + An array containing the calculated quantiles. + + Examples + -------- + >>> from scipy.stats.mstats import mquantiles + >>> a = np.array([6., 47., 49., 15., 42., 41., 7., 39., 43., 40., 36.]) + >>> mquantiles(a) + array([ 19.2, 40. , 42.8]) + + Using a 2D array, specifying axis and limit. + + >>> data = np.array([[ 6., 7., 1.], + [ 47., 15., 2.], + [ 49., 36., 3.], + [ 15., 39., 4.], + [ 42., 40., -999.], + [ 41., 41., -999.], + [ 7., -999., -999.], + [ 39., -999., -999.], + [ 43., -999., -999.], + [ 40., -999., -999.], + [ 36., -999., -999.]]) + >>> mquantiles(data, axis=0, limit=(0, 50)) + array([[ 19.2 , 14.6 , 1.45], + [ 40. , 37.5 , 2.5 ], + [ 42.8 , 40.05, 3.55]]) + + >>> data[:, 2] = -999. + >>> mquantiles(data, axis=0, limit=(0, 50)) + masked_array(data = + [[19.2 14.6 --] + [40.0 37.5 --] + [42.8 40.05 --]], + mask = + [[False False True] + [False False True] + [False False True]], + fill_value = 1e+20) + + """ + + if isinstance(a, np.ma.MaskedArray): + return stats.mstats.mquantiles(a, prob=prob, alphap=alphap, betap=alphap, axis=axis, + limit=limit) + if limit: + marr = stats.mstats.mquantiles(a, prob=prob, alphap=alphap, betap=alphap, axis=axis, + limit=limit) + return ma.filled(marr, fill_value=np.nan) + if masknan: + nanmask = np.isnan(a) + if nanmask.any(): + marr = ma.array(a, mask=nanmask) + marr = stats.mstats.mquantiles(marr, prob=prob, alphap=alphap, betap=alphap, + axis=axis, limit=limit) + return ma.filled(marr, fill_value=np.nan) + + # Initialization & checks --------- + data = np.asarray(a) + + p = np.array(prob, copy=False, ndmin=1) + m = alphap + p*(1.-alphap-betap) + + isrolled = False + #from _quantiles1d + if (axis is None): + data = data.ravel() #reshape(-1,1) + axis = 0 + else: + axis = np.arange(data.ndim)[axis] + data = np.rollaxis(data, axis) + isrolled = True # keep track, maybe can be removed + + x = np.sort(data, axis=0) + n = x.shape[0] + returnshape = list(data.shape) + returnshape[axis] = p + + #TODO: check these + if n == 0: + return np.empty(len(p), dtype=float) + elif n == 1: + return np.resize(x, p.shape) + aleph = (n*p + m) + k = np.floor(aleph.clip(1, n-1)).astype(int) + ind = [None]*x.ndim + ind[0] = slice(None) + gamma = (aleph-k).clip(0,1)[ind] + q = (1.-gamma)*x[k-1] + gamma*x[k] + if isrolled: + return np.rollaxis(q, 0, axis+1) + else: + return q + +def scoreatpercentile(data, per, limit=(), alphap=.4, betap=.4, axis=0, masknan=None): + """Calculate the score at the given 'per' percentile of the + sequence a. For example, the score at per=50 is the median. + + This function is a shortcut to mquantile + + """ + per = np.asarray(per, float) + if (per < 0).any() or (per > 100.).any(): + raise ValueError("The percentile should be between 0. and 100. !"\ + " (got %s)" % per) + return quantiles(data, prob=[per/100.], alphap=alphap, betap=betap, + limit=limit, axis=axis, masknan=masknan).squeeze() + + +def plotting_positions(data, alpha=0.4, beta=0.4, axis=0, masknan=False): + """Returns the plotting positions (or empirical percentile points) for the + data. + Plotting positions are defined as (i-alpha)/(n+1-alpha-beta), where: + - i is the rank order statistics (starting at 1) + - n is the number of unmasked values along the given axis + - alpha and beta are two parameters. + + Typical values for alpha and beta are: + - (0,1) : *p(k) = k/n* : linear interpolation of cdf (R, type 4) + - (.5,.5) : *p(k) = (k-1/2.)/n* : piecewise linear function (R, type 5) + (Bliss 1967: "Rankit") + - (0,0) : *p(k) = k/(n+1)* : Weibull (R type 6), (Van der Waerden 1952) + - (1,1) : *p(k) = (k-1)/(n-1)*. In this case, p(k) = mode[F(x[k])]. + That's R default (R type 7) + - (1/3,1/3): *p(k) = (k-1/3)/(n+1/3)*. Then p(k) ~ median[F(x[k])]. + The resulting quantile estimates are approximately median-unbiased + regardless of the distribution of x. (R type 8), (Tukey 1962) + - (3/8,3/8): *p(k) = (k-3/8)/(n+1/4)*. + The resulting quantile estimates are approximately unbiased + if x is normally distributed (R type 9) (Blom 1958) + - (.4,.4) : approximately quantile unbiased (Cunnane) + - (.35,.35): APL, used with PWM + + Parameters + ---------- + x : sequence + Input data, as a sequence or array of dimension at most 2. + prob : sequence + List of quantiles to compute. + alpha : {0.4, float} optional + Plotting positions parameter. + beta : {0.4, float} optional + Plotting positions parameter. + + Notes + ----- + I think the adjustments assume that there are no ties in order to be a reasonable + approximation to a continuous density function. TODO: check this + + References + ---------- + unknown, + dates to original papers from Beasley, Erickson, Allison 2009 Behav Genet + """ + if isinstance(data, np.ma.MaskedArray): + if axis is None or data.ndim == 1: + return stats.mstats.plotting_positions(data, alpha=alpha, beta=beta) + else: + return ma.apply_along_axis(stats.mstats.plotting_positions, axis, data, alpha=alpha, beta=beta) + if masknan: + nanmask = np.isnan(data) + if nanmask.any(): + marr = ma.array(data, mask=nanmask) + #code duplication: + if axis is None or data.ndim == 1: + marr = stats.mstats.plotting_positions(marr, alpha=alpha, beta=beta) + else: + marr = ma.apply_along_axis(stats.mstats.plotting_positions, axis, marr, alpha=alpha, beta=beta) + return ma.filled(marr, fill_value=np.nan) + + data = np.asarray(data) + if data.size == 1: # use helper function instead + data = np.atleast_1d(data) + axis = 0 + if axis is None: + data = data.ravel() + axis = 0 + n = data.shape[axis] + if data.ndim == 1: + plpos = np.empty(data.shape, dtype=float) + plpos[data.argsort()] = (np.arange(1,n+1) - alpha)/(n+1.-alpha-beta) + else: + #nd assignment instead of second argsort doesn't look easy + plpos = (data.argsort(axis).argsort(axis) + 1. - alpha)/(n+1.-alpha-beta) + return plpos + +meppf = plotting_positions + +def plotting_positions_w1d(data, weights=None, alpha=0.4, beta=0.4, + method='notnormed'): + '''Weighted plotting positions (or empirical percentile points) for the data. + + observations are weighted and the plotting positions are defined as + (ws-alpha)/(n-alpha-beta), where: + - ws is the weighted rank order statistics or cumulative weighted sum, + normalized to n if method is "normed" + - n is the number of values along the given axis if method is "normed" + and total weight otherwise + - alpha and beta are two parameters. + + wtd.quantile in R package Hmisc seems to use the "notnormed" version. + notnormed coincides with unweighted segment in example, drop "normed" version ? + + + See Also + -------- + plotting_positions : unweighted version that works also with more than one + dimension and has other options + ''' + + x = np.atleast_1d(data) + if x.ndim > 1: + raise ValueError('currently implemented only for 1d') + if weights is None: + weights = np.ones(x.shape) + else: + weights = np.array(weights, float, copy=False, ndmin=1) #atleast_1d(weights) + if weights.shape != x.shape: + raise ValueError('if weights is given, it needs to be the same' + 'shape as data') + n = len(x) + xargsort = x.argsort() + ws = weights[xargsort].cumsum() + res = np.empty(x.shape) + if method == 'normed': + res[xargsort] = (1.*ws/ws[-1]*n-alpha)/(n+1.-alpha-beta) + else: + res[xargsort] = (1.*ws-alpha)/(ws[-1]+1.-alpha-beta) + return res + +def edf_normal_inverse_transformed(x, alpha=3./8, beta=3./8, axis=0): + '''rank based normal inverse transformed cdf + ''' + from scipy import stats + ranks = plotting_positions(x, alpha=alpha, beta=alpha, axis=0, masknan=False) + ranks_transf = stats.norm.ppf(ranks) + return ranks_transf + +if __name__ == '__main__': + + x = np.arange(5) + print(plotting_positions(x)) + x = np.arange(10).reshape(-1,2) + print(plotting_positions(x)) + print(quantiles(x, axis=0)) + print(quantiles(x, axis=None)) + print(quantiles(x, axis=1)) + xm = ma.array(x) + x2 = x.astype(float) + x2[1,0] = np.nan + print(plotting_positions(xm, axis=0)) + + # test 0d, 1d + for sl1 in [slice(None), 0]: + print((plotting_positions(xm[sl1,0]) == plotting_positions(x[sl1,0])).all()) + print((quantiles(xm[sl1,0]) == quantiles(x[sl1,0])).all()) + print((stats.mstats.mquantiles(ma.fix_invalid(x2[sl1,0])) == quantiles(x2[sl1,0], masknan=1)).all()) + + #test 2d + for ax in [0, 1, None, -1]: + print((plotting_positions(xm, axis=ax) == plotting_positions(x, axis=ax)).all()) + print((quantiles(xm, axis=ax) == quantiles(x, axis=ax)).all()) + print((stats.mstats.mquantiles(ma.fix_invalid(x2), axis=ax) == quantiles(x2, axis=ax, masknan=1)).all()) + + #stats version doesn't have axis + print((stats.mstats.plotting_positions(ma.fix_invalid(x2)) == plotting_positions(x2, axis=None, masknan=1)).all()) + + #test 3d + x3 = np.dstack((x,x)).T + for ax in [1,2]: + print((plotting_positions(x3, axis=ax)[0] == plotting_positions(x.T, axis=ax-1)).all()) + + np.testing.assert_equal(plotting_positions(np.arange(10), alpha=0.35, beta=1-0.35), (1+np.arange(10)-0.35)/10) + np.testing.assert_equal(plotting_positions(np.arange(10), alpha=0.4, beta=0.4), (1+np.arange(10)-0.4)/(10+0.2)) + np.testing.assert_equal(plotting_positions(np.arange(10)), (1+np.arange(10)-0.4)/(10+0.2)) + print('') + print(scoreatpercentile(x, [10,90])) + print(plotting_positions_w1d(x[:,0])) + print((plotting_positions_w1d(x[:,0]) == plotting_positions(x[:,0])).all()) + + + #weights versus replicating multiple occurencies of same x value + w1 = [1, 1, 2, 1, 1] + plotexample = 1 + if plotexample: + import matplotlib.pyplot as plt + plt.figure() + plt.title('ppf, cdf values on horizontal axis') + plt.step(plotting_positions_w1d(x[:,0], weights=w1, method='0'), x[:,0], where='post') + plt.step(stats.mstats.plotting_positions(np.repeat(x[:,0],w1,axis=0)),np.repeat(x[:,0],w1,axis=0),where='post') + plt.plot(plotting_positions_w1d(x[:,0], weights=w1, method='0'), x[:,0], '-o') + plt.plot(stats.mstats.plotting_positions(np.repeat(x[:,0],w1,axis=0)),np.repeat(x[:,0],w1,axis=0), '-o') + + plt.figure() + plt.title('cdf, cdf values on vertical axis') + plt.step(x[:,0], plotting_positions_w1d(x[:,0], weights=w1, method='0'),where='post') + plt.step(np.repeat(x[:,0],w1,axis=0), stats.mstats.plotting_positions(np.repeat(x[:,0],w1,axis=0)),where='post') + plt.plot(x[:,0], plotting_positions_w1d(x[:,0], weights=w1, method='0'), '-o') + plt.plot(np.repeat(x[:,0],w1,axis=0), stats.mstats.plotting_positions(np.repeat(x[:,0],w1,axis=0)), '-o') + plt.show() diff --git a/statsmodels/sandbox/stats/tests/__init__.py b/statsmodels/sandbox/stats/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/sandbox/sysreg.py b/statsmodels/sandbox/sysreg.py new file mode 100644 index 0000000..fe1990a --- /dev/null +++ b/statsmodels/sandbox/sysreg.py @@ -0,0 +1,378 @@ +from statsmodels.compat.python import iterkeys +from statsmodels.regression.linear_model import GLS +import numpy as np +from statsmodels.base.model import LikelihoodModelResults +from scipy import sparse + +# http://www.irisa.fr/aladin/wg-statlin/WORKSHOPS/RENNES02/SLIDES/Foschi.pdf + +__all__ = ['SUR', 'Sem2SLS'] + + +#probably should have a SystemModel superclass +# TODO: does it make sense of SUR equations to have +# independent endogenous regressors? If so, then +# change docs to LHS = RHS +#TODO: make a dictionary that holds equation specific information +#rather than these cryptic lists? Slower to get a dict value? +#TODO: refine sigma definition +class SUR(object): + """ + Seemingly Unrelated Regression + + Parameters + ---------- + sys : list + [endog1, exog1, endog2, exog2,...] It will be of length 2 x M, + where M is the number of equations endog = exog. + sigma : array-like + M x M array where sigma[i,j] is the covariance between equation i and j + dfk : None, 'dfk1', or 'dfk2' + Default is None. Correction for the degrees of freedom + should be specified for small samples. See the notes for more + information. + + Attributes + ---------- + cholsigmainv : array + The transpose of the Cholesky decomposition of `pinv_wexog` + df_model : array + Model degrees of freedom of each equation. p_{m} - 1 where p is + the number of regressors for each equation m and one is subtracted + for the constant. + df_resid : array + Residual degrees of freedom of each equation. Number of observations + less the number of parameters. + endog : array + The LHS variables for each equation in the system. + It is a M x nobs array where M is the number of equations. + exog : array + The RHS variable for each equation in the system. + It is a nobs x sum(p_{m}) array. Which is just each + RHS array stacked next to each other in columns. + history : dict + Contains the history of fitting the model. Probably not of interest + if the model is fit with `igls` = False. + iterations : int + The number of iterations until convergence if the model is fit + iteratively. + nobs : float + The number of observations of the equations. + normalized_cov_params : array + sum(p_{m}) x sum(p_{m}) array + :math:`\\left[X^{T}\\left(\\Sigma^{-1}\\otimes\\boldsymbol{I}\\right)X\\right]^{-1}` + pinv_wexog : array + The pseudo-inverse of the `wexog` + sigma : array + M x M covariance matrix of the cross-equation disturbances. See notes. + sp_exog : CSR sparse matrix + Contains a block diagonal sparse matrix of the design so that + exog1 ... exogM are on the diagonal. + wendog : array + M * nobs x 1 array of the endogenous variables whitened by + `cholsigmainv` and stacked into a single column. + wexog : array + M*nobs x sum(p_{m}) array of the whitened exogenous variables. + + Notes + ----- + All individual equations are assumed to be well-behaved, homoeskedastic + iid errors. This is basically an extension of GLS, using sparse matrices. + + .. math:: \\Sigma=\\left[\\begin{array}{cccc} + \\sigma_{11} & \\sigma_{12} & \\cdots & \\sigma_{1M}\\\\ + \\sigma_{21} & \\sigma_{22} & \\cdots & \\sigma_{2M}\\\\ + \\vdots & \\vdots & \\ddots & \\vdots\\\\ + \\sigma_{M1} & \\sigma_{M2} & \\cdots & \\sigma_{MM}\\end{array}\\right] + + References + ---------- + Zellner (1962), Greene (2003) + """ +#TODO: Does each equation need nobs to be the same? + def __init__(self, sys, sigma=None, dfk=None): + if len(sys) % 2 != 0: + raise ValueError("sys must be a list of pairs of endogenous and \ +exogenous variables. Got length %s" % len(sys)) + if dfk: + if not dfk.lower() in ['dfk1','dfk2']: + raise ValueError("dfk option %s not understood" % (dfk)) + self._dfk = dfk + M = len(sys[1::2]) + self._M = M +# exog = np.zeros((M,M), dtype=object) +# for i,eq in enumerate(sys[1::2]): +# exog[i,i] = np.asarray(eq) # not sure this exog is needed + # used to compute resids for now + exog = np.column_stack(np.asarray(sys[1::2][i]) for i in range(M)) +# exog = np.vstack(np.asarray(sys[1::2][i]) for i in range(M)) + self.exog = exog # 2d ndarray exog is better +# Endog, might just go ahead and reshape this? + endog = np.asarray(sys[::2]) + self.endog = endog + self.nobs = float(self.endog[0].shape[0]) # assumes all the same length + + # Degrees of Freedom + df_resid = [] + df_model = [] + [df_resid.append(self.nobs - np.linalg.matrix_rank(_)) for _ in sys[1::2]] + [df_model.append(np.linalg.matrix_rank(_) - 1) for _ in sys[1::2]] + self.df_resid = np.asarray(df_resid) + self.df_model = np.asarray(df_model) + +# "Block-diagonal" sparse matrix of exog + sp_exog = sparse.lil_matrix((int(self.nobs*M), + int(np.sum(self.df_model+1)))) # linked lists to build + self._cols = np.cumsum(np.hstack((0, self.df_model+1))) + for i in range(M): + sp_exog[i*self.nobs:(i+1)*self.nobs, + self._cols[i]:self._cols[i+1]] = sys[1::2][i] + self.sp_exog = sp_exog.tocsr() # cast to compressed for efficiency +# Deal with sigma, check shape earlier if given + if np.any(sigma): + sigma = np.asarray(sigma) # check shape + elif sigma is None: + resids = [] + for i in range(M): + resids.append(GLS(endog[i],exog[:, + self._cols[i]:self._cols[i+1]]).fit().resid) + resids = np.asarray(resids).reshape(M,-1) + sigma = self._compute_sigma(resids) + self.sigma = sigma + self.cholsigmainv = np.linalg.cholesky(np.linalg.pinv(\ + self.sigma)).T + self.initialize() + + def initialize(self): + self.wendog = self.whiten(self.endog) + self.wexog = self.whiten(self.sp_exog) + self.pinv_wexog = np.linalg.pinv(self.wexog) + self.normalized_cov_params = np.dot(self.pinv_wexog, + np.transpose(self.pinv_wexog)) + self.history = {'params' : [np.inf]} + self.iterations = 0 + + def _update_history(self, params): + self.history['params'].append(params) + + def _compute_sigma(self, resids): + """ + Computes the sigma matrix and update the cholesky decomposition. + """ + M = self._M + nobs = self.nobs + sig = np.dot(resids, resids.T) # faster way to do this? + if not self._dfk: + div = nobs + elif self._dfk.lower() == 'dfk1': + div = np.zeros(M**2) + for i in range(M): + for j in range(M): + div[i+j] = ((self.df_model[i]+1) *\ + (self.df_model[j]+1))**(1/2) + div.reshape(M,M) + else: # 'dfk2' error checking is done earlier + div = np.zeros(M**2) + for i in range(M): + for j in range(M): + div[i+j] = nobs - np.max(self.df_model[i]+1, + self.df_model[j]+1) + div.reshape(M,M) +# doesn't handle (#,) + self.cholsigmainv = np.linalg.cholesky(np.linalg.pinv(sig/div)).T + return sig/div + + def whiten(self, X): + """ + SUR whiten method. + + Parameters + ---------- + X : list of arrays + Data to be whitened. + + Returns + ------- + If X is the exogenous RHS of the system. + ``np.dot(np.kron(cholsigmainv,np.eye(M)),np.diag(X))`` + + If X is the endogenous LHS of the system. + + """ + nobs = self.nobs + if X is self.endog: # definitely not a robust check + return np.dot(np.kron(self.cholsigmainv,np.eye(nobs)), + X.reshape(-1,1)) + elif X is self.sp_exog: + return (sparse.kron(self.cholsigmainv, + sparse.eye(nobs,nobs))*X).toarray()#*=dot until cast to array + + def fit(self, igls=False, tol=1e-5, maxiter=100): + """ + igls : bool + Iterate until estimates converge if sigma is None instead of + two-step GLS, which is the default is sigma is None. + + tol : float + + maxiter : int + + Notes + ----- + This ia naive implementation that does not exploit the block + diagonal structure. It should work for ill-conditioned `sigma` + but this is untested. + """ + + if not np.any(self.sigma): + self.sigma = self._compute_sigma(self.endog, self.exog) + M = self._M + beta = np.dot(self.pinv_wexog, self.wendog) + self._update_history(beta) + self.iterations += 1 + if not igls: + sur_fit = SysResults(self, beta, self.normalized_cov_params) + return sur_fit + + conv = self.history['params'] + while igls and (np.any(np.abs(conv[-2] - conv[-1]) > tol)) and \ + (self.iterations < maxiter): + fittedvalues = (self.sp_exog*beta).reshape(M,-1) + resids = self.endog - fittedvalues # don't attach results yet + self.sigma = self._compute_sigma(resids) # need to attach for compute? + self.wendog = self.whiten(self.endog) + self.wexog = self.whiten(self.sp_exog) + self.pinv_wexog = np.linalg.pinv(self.wexog) + self.normalized_cov_params = np.dot(self.pinv_wexog, + np.transpose(self.pinv_wexog)) + beta = np.dot(self.pinv_wexog, self.wendog) + self._update_history(beta) + self.iterations += 1 + sur_fit = SysResults(self, beta, self.normalized_cov_params) + return sur_fit + + def predict(self, design): + pass + +#TODO: Should just have a general 2SLS estimator to subclass +# for IV, FGLS, etc. +# Also should probably have SEM class and estimators as subclasses +class Sem2SLS(object): + """ + Two-Stage Least Squares for Simultaneous equations + + Parameters + ---------- + sys : list + [endog1, exog1, endog2, exog2,...] It will be of length 2 x M, + where M is the number of equations endog = exog. + indep_endog : dict + A dictionary mapping the equation to the column numbers of the + the independent endogenous regressors in each equation. + It is assumed that the system is inputed as broken up into + LHS and RHS. For now, the values of the dict have to be sequences. + Note that the keys for the equations should be zero-indexed. + instruments : array + Array of the exogenous independent variables. + + Notes + ----- + This is unfinished, and the design should be refactored. + Estimation is done by brute force and there is no exploitation of + the structure of the system. + """ + def __init__(self, sys, indep_endog=None, instruments=None): + if len(sys) % 2 != 0: + raise ValueError("sys must be a list of pairs of endogenous and \ +exogenous variables. Got length %s" % len(sys)) + M = len(sys[1::2]) + self._M = M +# The lists are probably a bad idea + self.endog = sys[::2] # these are just list containers + self.exog = sys[1::2] + self._K = [np.linalg.matrix_rank(_) for _ in sys[1::2]] +# fullexog = np.column_stack((_ for _ in self.exog)) + + self.instruments = instruments + + # Keep the Y_j's in a container to get IVs + instr_endog = {} + [instr_endog.setdefault(_,[]) for _ in iterkeys(indep_endog)] + + for eq_key in indep_endog: + for varcol in indep_endog[eq_key]: + instr_endog[eq_key].append(self.exog[eq_key][:,varcol]) + # ^ copy needed? +# self._instr_endog = instr_endog + + self._indep_endog = indep_endog + _col_map = np.cumsum(np.hstack((0,self._K))) # starting col no.s +# move this check to whiten since we're not going to build a full exog? + for eq_key in indep_endog: + try: + iter(indep_endog[eq_key]) + except: +# eq_key = [eq_key] + raise TypeError("The values of the indep_exog dict must be " + "iterable. Got type %s for converter %s" + % (type(indep_endog[eq_key]), eq_key)) +# for del_col in indep_endog[eq_key]: +# fullexog = np.delete(fullexog, _col_map[eq_key]+del_col, 1) +# _col_map[eq_key+1:] -= 1 + +# Josef's example for deleting reoccuring "rows" +# fullexog = np.unique(fullexog.T.view([('',fullexog.dtype)]*\ +# fullexog.shape[0])).view(fullexog.dtype).reshape(\ +# fullexog.shape[0],-1) +# From http://article.gmane.org/gmane.comp.python.numeric.general/32276/ +# Or Jouni' suggetsion of taking a hash: +# http://www.mail-archive.com/numpy-discussion@scipy.org/msg04209.html +# not clear to me how this would work though, only if they are the *same* +# elements? +# self.fullexog = fullexog + self.wexog = self.whiten(instr_endog) + + + def whiten(self, Y): + """ + Runs the first stage of the 2SLS. + + Returns the RHS variables that include the instruments. + """ + wexog = [] + indep_endog = self._indep_endog # this has the col mapping +# fullexog = self.fullexog + instruments = self.instruments + for eq in range(self._M): # need to go through all equations regardless + instr_eq = Y.get(eq, None) # Y has the eq to ind endog array map + newRHS = self.exog[eq].copy() + if instr_eq: + for i,LHS in enumerate(instr_eq): + yhat = GLS(LHS, self.instruments).fit().fittedvalues + newRHS[:,indep_endog[eq][i]] = yhat + # this might fail if there is a one variable column (nobs,) + # in exog + wexog.append(newRHS) + return wexog + + def fit(self): + """ + """ + delta = [] + wexog = self.wexog + endog = self.endog + for j in range(self._M): + delta.append(GLS(endog[j], wexog[j]).fit().params) + return delta + +class SysResults(LikelihoodModelResults): + """ + Not implemented yet. + """ + def __init__(self, model, params, normalized_cov_params=None, scale=1.): + super(SysResults, self).__init__(model, params, + normalized_cov_params, scale) + self._get_results() + + def _get_results(self): + pass diff --git a/statsmodels/sandbox/tests/GreeneEx15_1.s b/statsmodels/sandbox/tests/GreeneEx15_1.s new file mode 100644 index 0000000..ffa1f51 --- /dev/null +++ b/statsmodels/sandbox/tests/GreeneEx15_1.s @@ -0,0 +1,35 @@ +dta <- read.table('/home/skipper/school/MetricsII/Greene\ TableF5-1.txt', header = TRUE) +attach(dta) +library(systemfit) + +demand <- realcons + realinvs + realgovt +c.1 <- realcons[-204] +y.1 <- demand[-204] +yd <- demand[-1] - y.1 +eqConsump <- realcons[-1] ~ demand[-1] + c.1 +eqInvest <- realinvs[-1] ~ tbilrate[-1] + yd +system <- list( Consumption = eqConsump, Investment = eqInvest) +instruments <- ~ realgovt[-1] + tbilrate[-1] + c.1 + y.1 +# 2SLS +greene2sls <- systemfit( system, "2SLS", inst = instruments, methodResidCov = "noDfCor" ) +print(summary(greene2sls)) + +greene3sls <- systemfit( system, "3SLS", inst = instruments, methodResidCov = "noDfCor" ) +print(summary(greene3sls)) + + +# Python code for finding the dynamics +# +# Could have done this in R +# +#gamma = np.array([[1,0,1],[0,1,1],[-.058438620413,-16.5359646223,1]]) +#phi = np.array([[-.99200661799,0,0],[0,0,0],[0,-16.5359646223,0]]) +#Delta = np.dot(-phi,np.linalg.inv(gamma)) +#delta = np.zeros((2,2)) +#delta[0,0]=Delta[0,0] +#delta[0,1]=Delta[0,-1] +#delta[1,0]=Delta[-1,0] +#delta[1,1]=Delta[-1,-1] +#np.eigvals(delta) +#np.max(_) + diff --git a/statsmodels/sandbox/tests/__init__.py b/statsmodels/sandbox/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/sandbox/tests/macrodata.s b/statsmodels/sandbox/tests/macrodata.s new file mode 100644 index 0000000..211bd05 --- /dev/null +++ b/statsmodels/sandbox/tests/macrodata.s @@ -0,0 +1,35 @@ +dta <- read.csv('../../datasets/macrodata/macrodata.csv', header = TRUE) +attach(dta) +library(systemfit) + +demand <- realcons + realinv + realgovt +c.1 <- realcons[-203] +y.1 <- demand[-203] +yd <- demand[-1] - y.1 +eqConsump <- realcons[-1] ~ demand[-1] + c.1 +eqInvest <- realinv[-1] ~ tbilrate[-1] + yd +system <- list( Consumption = eqConsump, Investment = eqInvest) +instruments <- ~ realgovt[-1] + tbilrate[-1] + c.1 + y.1 +# 2SLS +greene2sls <- systemfit( system, "2SLS", inst = instruments, methodResidCov = "noDfCor" ) +print(summary(greene2sls)) + +greene3sls <- systemfit( system, "3SLS", inst = instruments, methodResidCov = "noDfCor" ) +print(summary(greene3sls)) + + +# Python code for finding the dynamics +# +# Could have done this in R +# +#gamma = np.array([[1,0,1],[0,1,1],[-.058438620413,-16.5359646223,1]]) +#phi = np.array([[-.99200661799,0,0],[0,0,0],[0,-16.5359646223,0]]) +#Delta = np.dot(-phi,np.linalg.inv(gamma)) +#delta = np.zeros((2,2)) +#delta[0,0]=Delta[0,0] +#delta[0,1]=Delta[0,-1] +#delta[1,0]=Delta[-1,0] +#delta[1,1]=Delta[-1,-1] +#np.eigvals(delta) +#np.max(_) + diff --git a/statsmodels/sandbox/tests/maketests_mlabwrap.py b/statsmodels/sandbox/tests/maketests_mlabwrap.py new file mode 100644 index 0000000..21c8196 --- /dev/null +++ b/statsmodels/sandbox/tests/maketests_mlabwrap.py @@ -0,0 +1,241 @@ +'''generate py modules with test cases and results from mlabwrap + +currently matlab: princomp, garchar, garchma +''' + +import numpy as np +from numpy.testing import assert_array_almost_equal +from numpy import array + + + +xo = array([[ -419, -731, -1306, -1294], + [ 6, 529, -200, -437], + [ -27, -833, -6, -564], + [ -304, -273, -502, -739], + [ 1377, -912, 927, 280], + [ -375, -517, -514, 49], + [ 247, -504, 123, -259], + [ 712, 534, -773, 286], + [ 195, -1080, 3256, -178], + [ -854, 75, -706, -1084], + [-1219, -612, -15, -203], + [ 550, -628, -483, -2686], + [ -365, 1376, -1266, 317], + [ -489, 544, -195, 431], + [ -656, 854, 840, -723], + [ 16, -1385, -880, -460], + [ 258, -2252, 96, 54], + [ 2049, -750, -1115, 381], + [ -65, 280, -777, 416], + [ 755, 82, -806, 1027], + [ -39, -170, -2134, 743], + [ -859, 780, 746, -133], + [ 762, 252, -450, -459], + [ -941, -202, 49, -202], + [ -54, 115, 455, 388], + [-1348, 1246, 1430, -480], + [ 229, -535, -1831, 1524], + [ -651, -167, 2116, 483], + [-1249, -1373, 888, -1092], + [ -75, -2162, 486, -496], + [ 2436, -1627, -1069, 162], + [ -63, 560, -601, 587], + [ -60, 1051, -277, 1323], + [ 1329, -1294, 68, 5], + [ 1532, -633, -923, 696], + [ 669, 895, -1762, -375], + [ 1129, -548, 2064, 609], + [ 1320, 573, 2119, 270], + [ -213, -412, -2517, 1685], + [ 73, -979, 1312, -1220], + [-1360, -2107, -237, 1522], + [ -645, 205, -543, -169], + [ -212, 1072, 543, -128], + [ -352, -129, -605, -904], + [ 511, 85, 167, -1914], + [ 1515, 1862, 942, 1622], + [ -465, 623, -495, -89], + [-1396, -979, 1758, 128], + [ -255, -47, 980, 501], + [-1282, -58, -49, -610], + [ -889, -1177, -492, 494], + [ 1415, 1146, 696, -722], + [ 1237, -224, -1609, -64], + [ -528, -1625, 231, 883], + [ -327, 1636, -476, -361], + [ -781, 793, 1882, 234], + [ -506, -561, 1988, -810], + [-1233, 1467, -261, 2164], + [ 53, 1069, 824, 2123], + [-1200, -441, -321, 339], + [ 1606, 298, -995, 1292], + [-1740, -672, -1628, -129], + [-1450, -354, 224, -657], + [-2556, 1006, -706, -1453], + [ -717, -463, 345, -1821], + [ 1056, -38, -420, -455], + [ -523, 565, 425, 1138], + [-1030, -187, 683, 78], + [ -214, -312, -1171, -528], + [ 819, 736, -265, 423], + [ 1339, 351, 1142, 579], + [ -387, -126, -1573, 2346], + [ 969, 2, 327, -134], + [ 163, 227, 90, 2021], + [ 1022, -1076, 174, 304], + [ 1042, 1317, 311, 880], + [ 2018, -840, 295, 2651], + [ -277, 566, 1147, -189], + [ 20, 467, 1262, 263], + [ -663, 1061, -1552, -1159], + [ 1830, 391, 2534, -199], + [ -487, 752, -1061, 351], + [-2138, -556, -367, -457], + [ -868, -411, -559, 726], + [ 1770, 819, -892, -363], + [ 553, -736, -169, -490], + [ 388, -503, 809, -821], + [ -516, -1452, -192, 483], + [ 493, 2904, 1318, 2591], + [ 175, 584, -1001, 1675], + [ 1316, -1596, -460, 1500], + [ 1212, 214, -644, -696], + [ -501, 338, 1197, -841], + [ -587, -469, -1101, 24], + [-1205, 1910, 659, 1232], + [ -150, 398, 594, 394], + [ 34, -663, 235, -334], + [-1580, 647, 239, -351], + [-2177, -345, 1215, -1494], + [ 1923, 329, -152, 1128]]) + +x = xo/1000. + +class HoldIt(object): + def __init__(self, name): + self.name = name + def save(self, what=None, filename=None, header=True, useinstant=True, + comment=None): + if what is None: + what = (i for i in self.__dict__ if i[0] != '_') + if header: + txt = ['import numpy as np\nfrom numpy import array\n\n'] + if useinstant: + txt.append('from statsmodels.tools.testing import Holder\n\n') + else: + txt = [] + + if useinstant: + txt.append('%s = Holder()' % self.name) + prefix = '%s.' % self.name + else: + prefix = '' + + if comment is not None: + txt.append("%scomment = '%s'" % (prefix, comment)) + + for x in what: + txt.append('%s%s = %s' % (prefix, x, repr(getattr(self,x)))) + txt.extend(['','']) #add empty lines at end + if filename is not None: + with open(filename, 'a+') as fd: + fd.write('\n'.join(txt)) + return txt + +def generate_princomp(xo, filen='testsave.py'): + # import mlabwrap only when run as script + from mlabwrap import mlab + np.set_printoptions(precision=14, linewidth=100) + data = HoldIt('data') + data.xo = xo + data.save(filename='testsave.py', comment='generated data, divide by 1000') + + res_princomp = HoldIt('princomp1') + res_princomp.coef, res_princomp.factors, res_princomp.values = \ + mlab.princomp(x, nout=3) + res_princomp.save(filename=filen, header=False, + comment='mlab.princomp(x, nout=3)') + + res_princomp = HoldIt('princomp2') + res_princomp.coef, res_princomp.factors, res_princomp.values = \ + mlab.princomp(x[:20,], nout=3) + np.set_printoptions(precision=14, linewidth=100) + res_princomp.save(filename=filen, header=False, + comment='mlab.princomp(x[:20,], nout=3)') + + res_princomp = HoldIt('princomp3') + res_princomp.coef, res_princomp.factors, res_princomp.values = \ + mlab.princomp(x[:20,]-x[:20,].mean(0), nout=3) + np.set_printoptions(precision=14, linewidth=100) + res_princomp.save(filename=filen, header=False, + comment='mlab.princomp(x[:20,]-x[:20,].mean(0), nout=3)') + +def generate_armarep(filen='testsave.py'): + # import mlabwrap only when run as script + from mlabwrap import mlab + res_armarep = HoldIt('armarep') + res_armarep.ar = np.array([1., -0.5, +0.8]) + res_armarep.ma = np.array([1., -0.6, 0.08]) + + res_armarep.marep = mlab.garchma(-res_armarep.ar[1:], res_armarep.ma[1:], 20) + res_armarep.arrep = mlab.garchar(-res_armarep.ar[1:], res_armarep.ma[1:], 20) + res_armarep.save(filename=filen, header=False, + comment=("''mlab.garchma(-res_armarep.ar[1:], res_armarep.ma[1:], 20)\n" + + "mlab.garchar(-res_armarep.ar[1:], res_armarep.ma[1:], 20)''")) + + + + + +def exampletest(res_armarep): + from statsmodels.sandbox import tsa + arrep = tsa.arma_impulse_response(res_armarep.ma, res_armarep.ar, nobs=21)[1:] + marep = tsa.arma_impulse_response(res_armarep.ar, res_armarep.ma, nobs=21)[1:] + assert_array_almost_equal(res_armarep.marep.ravel(), marep, 14) + #difference in sign convention to matlab for AR term + assert_array_almost_equal(-res_armarep.arrep.ravel(), arrep, 14) + + +if __name__ == '__main__': + from mlabwrap import mlab + + import savedrvs + xo = savedrvs.rvsdata.xar2 + x100 = xo[-100:]/1000. + x1000 = xo/1000. + + filen = 'testsavetls.py' + res_pacf = HoldIt('mlpacf') + res_pacf.comment = 'mlab.parcorr(x, [], 2, nout=3)' + res_pacf.pacf100, res_pacf.lags100, res_pacf.bounds100 = \ + mlab.parcorr(x100, [], 2, nout=3) + res_pacf.pacf1000, res_pacf.lags1000, res_pacf.bounds1000 = \ + mlab.parcorr(x1000, [], 2, nout=3) + res_pacf.save(filename=filen, header=True) + + res_acf = HoldIt('mlacf') + res_acf.comment = 'mlab.autocorr(x, [], 2, nout=3)' + res_acf.acf100, res_acf.lags100, res_acf.bounds100 = \ + mlab.autocorr(x100, [], 2, nout=3) + res_acf.acf1000, res_acf.lags1000, res_acf.bounds1000 = \ + mlab.autocorr(x1000, [], 2, nout=3) + res_acf.save(filename=filen, header=False) + + + res_ccf = HoldIt('mlccf') + res_ccf.comment = 'mlab.crosscorr(x[4:], x[:-4], [], 2, nout=3)' + res_ccf.ccf100, res_ccf.lags100, res_ccf.bounds100 = \ + mlab.crosscorr(x100[4:], x100[:-4], [], 2, nout=3) + res_ccf.ccf1000, res_ccf.lags1000, res_ccf.bounds1000 = \ + mlab.crosscorr(x1000[4:], x1000[:-4], [], 2, nout=3) + res_ccf.save(filename=filen, header=False) + + + res_ywar = HoldIt('mlywar') + res_ywar.comment = "mlab.ar(x100-x100.mean(), 10, 'yw').a.ravel()" + mbaryw = mlab.ar(x100-x100.mean(), 10, 'yw') + res_ywar.arcoef100 = np.array(mbaryw.a.ravel()) + mbaryw = mlab.ar(x1000-x1000.mean(), 20, 'yw') + res_ywar.arcoef1000 = np.array(mbaryw.a.ravel()) + res_ywar.save(filename=filen, header=False) diff --git a/statsmodels/sandbox/tests/savervs.py b/statsmodels/sandbox/tests/savervs.py new file mode 100644 index 0000000..74b9675 --- /dev/null +++ b/statsmodels/sandbox/tests/savervs.py @@ -0,0 +1,37 @@ +'''generates some ARMA random samples and saves to python module file + +''' + +import numpy as np +from statsmodels.tsa.arima_process import arma_generate_sample +from .maketests_mlabwrap import HoldIt + + +if __name__ == '__main__': + filen = 'savedrvs_tmp.py' + np.set_printoptions(precision=14, linewidth=100) + + + # check arma to return same as random.normal + np.random.seed(10000) + xo = arma_generate_sample([1], [1], nsample=100) + xo2 = np.round(xo*1000).astype(int) + np.random.seed(10000) + rvs = np.random.normal(size=100) + rvs2 = np.round(xo*1000).astype(int) + assert (xo2==rvs2).all() + + nsample = 1000 + data = HoldIt('rvsdata') + + np.random.seed(10000) + xo = arma_generate_sample([1, -0.8, 0.5], [1], nsample=nsample) + data.xar2 = np.round(xo*1000).astype(int) + np.random.seed(10000) + xo = np.random.normal(size=nsample) + data.xnormal = np.round(xo*1000).astype(int) + np.random.seed(10000) + xo = arma_generate_sample([1, -0.8, 0.5, -0.3], [1, 0.3, 0.2], nsample=nsample) + data.xarma32 = np.round(xo*1000).astype(int) + + data.save(filename=filen, comment='generated data, divide by 1000, see savervs') diff --git a/statsmodels/sandbox/tests/sysreg.s b/statsmodels/sandbox/tests/sysreg.s new file mode 100644 index 0000000..ec04c4b --- /dev/null +++ b/statsmodels/sandbox/tests/sysreg.s @@ -0,0 +1,56 @@ +# from the systemfit docs and sem docs +# depends systemfit and its dependencies +# depends sem +# depends on plm +# depends on R >= 2.9.0 (working on 2.9.2 but not on 2.8.1 at least) + +library( systemfit ) +data( "Kmenta" ) +eqDemand <- consump ~ price + income +eqSupply <- consump ~ price + farmPrice + trend +system <- list( demand = eqDemand, supply = eqSupply ) + +## performs OLS on each of the equations in the system +fitols <- systemfit( system, data = Kmenta ) + +# all coefficients +coef( fitols ) +coef( summary ( fitols ) ) + +modReg <- matrix(0,7,6) +colnames( modReg ) <- c( "demIntercept", "demPrice", "demIncome", + "supIntercept", "supPrice2", "supTrend" ) + +# a lot of typing for a model +modReg[ 1, "demIntercept" ] <- 1 +modReg[ 2, "demPrice" ] <- 1 +modReg[ 3, "demIncome" ] <- 1 +modReg[ 4, "supIntercept" ] <- 1 +modReg[ 5, "supPrice2" ] <- 1 +modReg[ 6, "supPrice2" ] <- 1 +modReg[ 7, "supTrend" ] <- 1 +fitols3 <- systemfit( system, data = Kmenta, restrict.regMat = modReg ) +print(coef( fitols3, modified.regMat = TRUE )) +# it seems to me like regMat does the opposite of what it says it does +# in python +# coef1 = np.array([99.8954229, -0.3162988, 0.3346356, 51.9296460, 0.2361566, 0.2361566, 0.2409308]) +# i = np.eye(7,6) +# i[-1,-1] = 1 +# i[-2,-1] = 0 +# i[-2,-2] = 1 +# np.dot(coef,i) # regMat = TRUE? +print(coef( fitols3 )) + +### SUR ### +data("GrunfeldGreene") +library(plm) +GGPanel <- plm.data( GrunfeldGreene, c("firm","year") ) +formulaGrunfeld <- invest ~ value + capital +greeneSUR <- systemfit( formulaGrunfeld, "SUR", data = GGPanel, + methodResidCov = "noDfCor" ) + +#usinvest <- as.matrix(invest[81:100]) +#usvalue <- as.matrix(value +col5tbl14_2 <- lm(invest[81:100] ~ value[81:100] + capital[81:100]) + + diff --git a/statsmodels/sandbox/tests/test_bspline.py.txt b/statsmodels/sandbox/tests/test_bspline.py.txt new file mode 100644 index 0000000..7e1d943 --- /dev/null +++ b/statsmodels/sandbox/tests/test_bspline.py.txt @@ -0,0 +1,55 @@ +import warnings + +import numpy as np +from nipy.testing import * + +bsp = None + +def setup(): + # Suppress warnings during tests to reduce noise + warnings.simplefilter("ignore") + # import bspline module after suppressing UserWarnings + global bsp + import nipy.fixes.scipy.stats.models.bspline as bsp + +def teardown(): + # Clear list of warning filters + warnings.resetwarnings() + + +class TestBSpline(TestCase): + + def test1(self): + b = bsp.BSpline(np.linspace(0,10,11), x=np.linspace(0,10,101)) + old = b._basisx.shape + b.x = np.linspace(0,10,51) + new = b._basisx.shape + self.assertEqual((old[0], 51), new) + + # FIXME: Have no idea what this test does. It's here to simply verify the + # C extension is working (in a technical sense, not functional). + def test_basis(self): + b = bsp.BSpline(np.linspace(0,1,11)) + x = np.array([0.4, 0.5]) + v = b.basis(x, lower=0, upper=13) + t = np.array([[ 0. , 0. ], + [ 0. , 0. ], + [ 0. , 0. ], + [ 0. , 0. ], + [ 0.16666667, 0. ], + [ 0.66666667, 0.16666667], + [ 0.16666667, 0.66666667], + [ 0. , 0.16666667], + [ 0. , 0. ], + [ 0. , 0. ], + [ 0. , 0. ], + [ 0. , 0. ], + [ 0. , 0. ]]) + assert_array_almost_equal(v, t, decimal=6) + + # FIXME: Have no idea what this test does. It's here to simply verify the + # C extension is working (in a technical sense, not functional). + def test_gram(self): + b = bsp.BSpline(np.linspace(0,1,11)) + grm = b.gram() + assert grm.shape == (4, 13) diff --git a/statsmodels/sandbox/tests/test_formula.py b/statsmodels/sandbox/tests/test_formula.py new file mode 100644 index 0000000..03d7fea --- /dev/null +++ b/statsmodels/sandbox/tests/test_formula.py @@ -0,0 +1,317 @@ +""" +Test functions for models.formula +""" + +import string + +import numpy as np +import numpy.random as R +import numpy.linalg as L +from numpy.testing import (assert_almost_equal, assert_equal, assert_, + assert_raises) + +from statsmodels.sandbox import formula #, contrast #, utils +from statsmodels.sandbox import contrast_old as contrast + + +class TestTerm(object): + + def test_init(self): + t1 = formula.Term("trivial") + sqr = lambda x: x*x + + t2 = formula.Term("not_so_trivial", sqr, "sqr") + + assert_raises(ValueError, formula.Term, "name", termname=0) + + + def test_str(self): + t = formula.Term("name") + s = str(t) + + def test_add(self): + t1 = formula.Term("t1") + t2 = formula.Term("t2") + f = t1 + t2 + assert_(isinstance(f, formula.Formula)) + assert_(f.hasterm(t1)) + assert_(f.hasterm(t2)) + + def test_mul(self): + t1 = formula.Term("t1") + t2 = formula.Term("t2") + f = t1 * t2 + assert_(isinstance(f, formula.Formula)) + + intercept = formula.Term("intercept") + f = t1 * intercept + assert_equal(str(f), str(formula.Formula(t1))) + + f = intercept * t1 + assert_equal(str(f), str(formula.Formula(t1))) + + +class TestFormula(object): + + def setup(self): + self.X = R.standard_normal((40,10)) + self.namespace = {} + self.terms = [] + for i in range(10): + name = '%s' % string.ascii_uppercase[i] + self.namespace[name] = self.X[:,i] + self.terms.append(formula.Term(name)) + + self.formula = self.terms[0] + for i in range(1, 10): + self.formula += self.terms[i] + self.formula.namespace = self.namespace + + def test_namespace(self): + space1 = {'X':np.arange(50), 'Y':np.arange(50)*2} + space2 = {'X':np.arange(20), 'Y':np.arange(20)*2} + space3 = {'X':np.arange(30), 'Y':np.arange(30)*2} + X = formula.Term('X') + Y = formula.Term('Y') + + X.namespace = space1 + assert_almost_equal(X(), np.arange(50)) + + Y.namespace = space2 + assert_almost_equal(Y(), np.arange(20)*2) + + f = X + Y + + f.namespace = space1 + assert_equal(f().shape, (2,50)) + assert_almost_equal(Y(), np.arange(20)*2) + assert_almost_equal(X(), np.arange(50)) + + f.namespace = space2 + assert_equal(f().shape, (2,20)) + assert_almost_equal(Y(), np.arange(20)*2) + assert_almost_equal(X(), np.arange(50)) + + f.namespace = space3 + assert_equal(f().shape, (2,30)) + assert_almost_equal(Y(), np.arange(20)*2) + assert_almost_equal(X(), np.arange(50)) + + xx = X**2 + assert_equal(xx().shape, (50,)) + + xx.namespace = space3 + assert_equal(xx().shape, (30,)) + + xx = X * formula.I + assert_equal(xx().shape, (50,)) + xx.namespace = space3 + assert_equal(xx().shape, (30,)) + + xx = X * X + assert_equal(xx.namespace, X.namespace) + + xx = X + Y + assert_equal(xx.namespace, {}) + + Y.namespace = {'X':np.arange(50), 'Y':np.arange(50)*2} + xx = X + Y + assert_equal(xx.namespace, {}) + + Y.namespace = X.namespace + xx = X+Y + assert_equal(xx.namespace, Y.namespace) + + def test_termcolumns(self): + t1 = formula.Term("A") + t2 = formula.Term("B") + f = t1 + t2 + t1 * t2 + + def other(val): + return np.array([3.2*val,4.342*val**2, 5.234*val**3]) + q = formula.Quantitative(['other%d' % i for i in range(1,4)], termname='other', func=t1, transform=other) + f += q + q.namespace = f.namespace = self.formula.namespace + a = q() + b = f() + c = f.termcolumns(q) + b = b[c] + assert_almost_equal(a,b) + + + def test_str(self): + s = str(self.formula) + + def test_call(self): + x = self.formula() + assert_equal(np.array(x).shape, (10, 40)) + + def test_design(self): + x = self.formula.design() + assert_equal(x.shape, (40, 10)) + + def test_product(self): + prod = self.formula['A'] * self.formula['C'] + f = self.formula + prod + f.namespace = self.namespace + x = f.design() + p = f['A*C'] + p.namespace = self.namespace + col = f.termcolumns(prod, dict=False) + assert_almost_equal(np.squeeze(x[:,col]), self.X[:,0] * self.X[:,2]) + assert_almost_equal(np.squeeze(p()), self.X[:,0] * self.X[:,2]) + + def test_intercept1(self): + prod = self.terms[0] * self.terms[2] + f = self.formula + formula.I + icol = f.names().index('intercept') + f.namespace = self.namespace + assert_almost_equal(f()[icol], np.ones((40,))) + + def test_intercept3(self): + t = self.formula['A'] + t.namespace = self.namespace + prod = t * formula.I + prod.namespace = self.formula.namespace + assert_almost_equal(np.squeeze(prod()), t()) + + def test_contrast1(self): + term = self.terms[0] + self.terms[2] + c = contrast.Contrast(term, self.formula) + col1 = self.formula.termcolumns(self.terms[0], dict=False) + col2 = self.formula.termcolumns(self.terms[1], dict=False) + test = [[1] + [0]*9, [0]*2 + [1] + [0]*7] + assert_almost_equal(c.matrix, test) + + def test_contrast2(self): + dummy = formula.Term('zero') + self.namespace['zero'] = np.zeros((40,), np.float64) + term = dummy + self.terms[2] + c = contrast.Contrast(term, self.formula) + test = [0]*2 + [1] + [0]*7 + assert_almost_equal(c.matrix, test) + + def test_contrast3(self): + X = self.formula.design() + P = np.dot(X, L.pinv(X)) + + dummy = formula.Term('noise') + resid = np.identity(40) - P + self.namespace['noise'] = np.transpose(np.dot(resid, R.standard_normal((40,5)))) + terms = dummy + self.terms[2] + terms.namespace = self.formula.namespace + c = contrast.Contrast(terms, self.formula) + assert_equal(c.matrix.shape, (10,)) + + def test_power(self): + + t = self.terms[2] + t2 = t**2 + t.namespace = t2.namespace = self.formula.namespace + assert_almost_equal(t()**2, t2()) + + def test_quantitative(self): + t = self.terms[2] + sint = formula.Quantitative('t', func=t, transform=np.sin) + t.namespace = sint.namespace = self.formula.namespace + assert_almost_equal(np.sin(t()), sint()) + + def test_factor1(self): + f = ['a','b','c']*10 + fac = formula.Factor('ff', f) + fac.namespace = {'ff':f} + assert_equal(list(fac.values()), f) + + def test_factor2(self): + f = ['a','b','c']*10 + fac = formula.Factor('ff', f) + fac.namespace = {'ff':f} + assert_equal(fac().shape, (3,30)) + + def test_factor3(self): + f = ['a','b','c']*10 + fac = formula.Factor('ff', f) + fac.namespace = {'ff':f} + m = fac.main_effect(reference=1) + m.namespace = fac.namespace + assert_equal(m().shape, (2,30)) + + def test_factor4(self): + f = ['a','b','c']*10 + fac = formula.Factor('ff', f) + fac.namespace = {'ff':f} + m = fac.main_effect(reference=2) + m.namespace = fac.namespace + r = np.array([np.identity(3)]*10) + r.shape = (30,3) + r = r.T + _m = np.array([r[0]-r[2],r[1]-r[2]]) + assert_almost_equal(_m, m()) + + def test_factor5(self): + f = ['a','b','c']*3 + fac = formula.Factor('ff', f) + fac.namespace = {'ff':f} + + assert_equal(fac(), [[1,0,0]*3, + [0,1,0]*3, + [0,0,1]*3]) + assert_equal(fac['a'], [1,0,0]*3) + assert_equal(fac['b'], [0,1,0]*3) + assert_equal(fac['c'], [0,0,1]*3) + + + def test_ordinal_factor(self): + f = ['a','b','c']*3 + fac = formula.Factor('ff', ['a','b','c'], ordinal=True) + fac.namespace = {'ff':f} + + assert_equal(fac(), [0,1,2]*3) + assert_equal(fac['a'], [1,0,0]*3) + assert_equal(fac['b'], [0,1,0]*3) + assert_equal(fac['c'], [0,0,1]*3) + + def test_ordinal_factor2(self): + f = ['b','c', 'a']*3 + fac = formula.Factor('ff', ['a','b','c'], ordinal=True) + fac.namespace = {'ff':f} + + assert_equal(fac(), [1,2,0]*3) + assert_equal(fac['a'], [0,0,1]*3) + assert_equal(fac['b'], [1,0,0]*3) + assert_equal(fac['c'], [0,1,0]*3) + + def test_contrast4(self): + + f = self.formula + self.terms[5] + self.terms[5] + f.namespace = self.namespace + estimable = False + + c = contrast.Contrast(self.terms[5], f) + + assert_equal(estimable, False) + + def test_interactions(self): + + f = formula.interactions([formula.Term(l) for l in ['a', 'b', 'c']]) + assert_equal(set(f.termnames()), set(['a', 'b', 'c', 'a*b', 'a*c', 'b*c'])) + + f = formula.interactions([formula.Term(l) for l in ['a', 'b', 'c', 'd']], order=3) + assert_equal(set(f.termnames()), set(['a', 'b', 'c', 'd', 'a*b', 'a*c', 'a*d', 'b*c', 'b*d', 'c*d', 'a*b*c', 'a*c*d', 'a*b*d', 'b*c*d'])) + + f = formula.interactions([formula.Term(l) for l in ['a', 'b', 'c', 'd']], order=[1,2,3]) + assert_equal(set(f.termnames()), set(['a', 'b', 'c', 'd', 'a*b', 'a*c', 'a*d', 'b*c', 'b*d', 'c*d', 'a*b*c', 'a*c*d', 'a*b*d', 'b*c*d'])) + + f = formula.interactions([formula.Term(l) for l in ['a', 'b', 'c', 'd']], order=[3]) + assert_equal(set(f.termnames()), set(['a*b*c', 'a*c*d', 'a*b*d', 'b*c*d'])) + + def test_subtract(self): + f = formula.interactions([formula.Term(l) for l in ['a', 'b', 'c']]) + ff = f - f['a*b'] + assert_equal(set(ff.termnames()), set(['a', 'b', 'c', 'a*c', 'b*c'])) + + ff = f - f['a*b'] - f['a*c'] + assert_equal(set(ff.termnames()), set(['a', 'b', 'c', 'b*c'])) + + ff = f - (f['a*b'] + f['a*c']) + assert_equal(set(ff.termnames()), set(['a', 'b', 'c', 'b*c'])) diff --git a/statsmodels/sandbox/tests/test_gam.py b/statsmodels/sandbox/tests/test_gam.py new file mode 100644 index 0000000..7c64dca --- /dev/null +++ b/statsmodels/sandbox/tests/test_gam.py @@ -0,0 +1,318 @@ +# -*- coding: utf-8 -*- +"""Tests for gam.AdditiveModel and GAM with Polynomials compared to OLS and GLM + + +Created on Sat Nov 05 14:16:07 2011 + +Author: Josef Perktold +License: BSD + + +Notes +----- + +TODO: TestGAMGamma: has test failure (GLM looks good), + adding log-link didn't help + resolved: gamma doesn't fail anymore after tightening the + convergence criterium (rtol=1e-6) +TODO: TestGAMNegativeBinomial: rvs generation doesn't work, + nbinom needs 2 parameters +TODO: TestGAMGaussianLogLink: test failure, + but maybe precision issue, not completely off + + but something is wrong, either the testcase or with the link + >>> tt3.__class__ + + >>> tt3.res2.mu_pred.mean() + 3.5616368292650766 + >>> tt3.res1.mu_pred.mean() + 3.6144278964707679 + >>> tt3.mu_true.mean() + 34.821904835958122 + >>> + >>> tt3.y_true.mean() + 2.685225067611543 + >>> tt3.res1.y_pred.mean() + 0.52991541684645616 + >>> tt3.res2.y_pred.mean() + 0.44626406889363229 + + + +one possible change +~~~~~~~~~~~~~~~~~~~ +add average, integral based tests, instead of or additional to sup + * for example mean squared error for mu and eta (predict, fittedvalues) + or mean absolute error, what's the scale for this? required precision? + * this will also work for real non-parametric tests + +example: Gamma looks good in average bias and average RMSE (RMISE) + +>>> tt3 = _estGAMGamma() +>>> np.mean((tt3.res2.mu_pred - tt3.mu_true))/tt3.mu_true.mean() +-0.0051829977497423706 +>>> np.mean((tt3.res2.y_pred - tt3.y_true))/tt3.y_true.mean() +0.00015255264651864049 +>>> np.mean((tt3.res1.y_pred - tt3.y_true))/tt3.y_true.mean() +0.00015255538823786711 +>>> np.mean((tt3.res1.mu_pred - tt3.mu_true))/tt3.mu_true.mean() +-0.0051937668989744494 +>>> np.sqrt(np.mean((tt3.res1.mu_pred - tt3.mu_true)**2))/tt3.mu_true.mean() +0.022946118520401692 +>>> np.sqrt(np.mean((tt3.res2.mu_pred - tt3.mu_true)**2))/tt3.mu_true.mean() +0.022953913332599746 +>>> maxabs = lambda x: np.max(np.abs(x)) +>>> maxabs((tt3.res1.mu_pred - tt3.mu_true))/tt3.mu_true.mean() +0.079540546242707733 +>>> maxabs((tt3.res2.mu_pred - tt3.mu_true))/tt3.mu_true.mean() +0.079578857986784574 +>>> maxabs((tt3.res2.y_pred - tt3.y_true))/tt3.y_true.mean() +0.016282852522951426 +>>> maxabs((tt3.res1.y_pred - tt3.y_true))/tt3.y_true.mean() +0.016288391235613865 + + + +""" +from statsmodels.compat.python import get_class, lrange +import numpy as np +from numpy.testing import assert_almost_equal, assert_equal + +from scipy import stats + +from statsmodels.sandbox.gam import AdditiveModel +from statsmodels.sandbox.gam import Model as GAM #? +from statsmodels.genmod.families import family, links +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.regression.linear_model import OLS + + +class Dummy(object): + pass + +class CheckAM(object): + + def test_predict(self): + assert_almost_equal(self.res1.y_pred, + self.res2.y_pred, decimal=2) + assert_almost_equal(self.res1.y_predshort, + self.res2.y_pred[:10], decimal=2) + + + def _est_fitted(self): + #check definition of fitted in GLM: eta or mu + assert_almost_equal(self.res1.y_pred, + self.res2.fittedvalues, decimal=2) + assert_almost_equal(self.res1.y_predshort, + self.res2.fittedvalues[:10], decimal=2) + + def test_params(self): + #note: only testing slope coefficients + #constant is far off in example 4 versus 2 + assert_almost_equal(self.res1.params[1:], + self.res2.params[1:], decimal=2) + #constant + assert_almost_equal(self.res1.params[1], + self.res2.params[1], decimal=2) + + def _est_df(self): + #not used yet, copied from PolySmoother tests + assert_equal(self.res_ps.df_model(), self.res2.df_model) + assert_equal(self.res_ps.df_fit(), self.res2.df_model) #alias + assert_equal(self.res_ps.df_resid(), self.res2.df_resid) + +class CheckGAM(CheckAM): + + def test_mu(self): + #problem with scale for precision + assert_almost_equal(self.res1.mu_pred, + self.res2.mu_pred, decimal=0) +# assert_almost_equal(self.res1.y_predshort, +# self.res2.y_pred[:10], decimal=2) + + +class BaseAM(object): + + @classmethod + def setup_class(cls): + #DGP: simple polynomial + order = 3 + nobs = 200 + lb, ub = -3.5, 3 + x1 = np.linspace(lb, ub, nobs) + x2 = np.sin(2*x1) + x = np.column_stack((x1/x1.max()*1, 1.*x2)) + exog = (x[:,:,None]**np.arange(order+1)[None, None, :]).reshape(nobs, -1) + idx = lrange((order+1)*2) + del idx[order+1] + exog_reduced = exog[:,idx] #remove duplicate constant + y_true = exog.sum(1) #/ 4. + #z = y_true #alias check + #d = x + + cls.nobs = nobs + cls.y_true, cls.x, cls.exog = y_true, x, exog_reduced + + + +class TestAdditiveModel(BaseAM, CheckAM): + + @classmethod + def setup_class(cls): + super(TestAdditiveModel, cls).setup_class() #initialize DGP + + nobs = cls.nobs + y_true, x, exog = cls.y_true, cls.x, cls.exog + + np.random.seed(8765993) + sigma_noise = 0.1 + y = y_true + sigma_noise * np.random.randn(nobs) + + m = AdditiveModel(x) + m.fit(y) + res_gam = m.results #TODO: currently attached to class + + res_ols = OLS(y, exog).fit() + + #Note: there still are some naming inconsistencies + cls.res1 = res1 = Dummy() #for gam model + #res2 = Dummy() #for benchmark + cls.res2 = res2 = res_ols #reuse existing ols results, will add additional + + res1.y_pred = res_gam.predict(x) + res2.y_pred = res_ols.model.predict(res_ols.params, exog) + res1.y_predshort = res_gam.predict(x[:10]) + + slopes = [i for ss in m.smoothers for i in ss.params[1:]] + + const = res_gam.alpha + sum([ss.params[1] for ss in m.smoothers]) + #print const, slopes + res1.params = np.array([const] + slopes) + + +class BaseGAM(BaseAM, CheckGAM): + + @classmethod + def init(cls): + nobs = cls.nobs + y_true, x, exog = cls.y_true, cls.x, cls.exog + if not hasattr(cls, 'scale'): + scale = 1 + else: + scale = cls.scale + + f = cls.family + + cls.mu_true = mu_true = f.link.inverse(y_true) + + np.random.seed(8765993) + #y_obs = np.asarray([stats.poisson.rvs(p) for p in mu], float) + if issubclass(get_class(cls.rvs), stats.rv_discrete): + # Discrete distributions don't take `scale`. + y_obs = cls.rvs(mu_true, size=nobs) + else: + y_obs = cls.rvs(mu_true, scale=scale, size=nobs) + m = GAM(y_obs, x, family=f) #TODO: y_obs is twice __init__ and fit + m.fit(y_obs, maxiter=100) + res_gam = m.results + cls.res_gam = res_gam #attached for debugging + cls.mod_gam = m #attached for debugging + + res_glm = GLM(y_obs, exog, family=f).fit() + + #Note: there still are some naming inconsistencies + cls.res1 = res1 = Dummy() #for gam model + #res2 = Dummy() #for benchmark + cls.res2 = res2 = res_glm #reuse existing glm results, will add additional + + #eta in GLM terminology + res2.y_pred = res_glm.model.predict(res_glm.params, exog, linear=True) + res1.y_pred = res_gam.predict(x) + res1.y_predshort = res_gam.predict(x[:10]) #, linear=True) + + #mu + res2.mu_pred = res_glm.model.predict(res_glm.params, exog, linear=False) + res1.mu_pred = res_gam.mu + + #parameters + slopes = [i for ss in m.smoothers for i in ss.params[1:]] + const = res_gam.alpha + sum([ss.params[1] for ss in m.smoothers]) + res1.params = np.array([const] + slopes) + + +class TestGAMPoisson(BaseGAM): + + @classmethod + def setup_class(cls): + super(TestGAMPoisson, cls).setup_class() #initialize DGP + + cls.family = family.Poisson() + cls.rvs = stats.poisson.rvs + + cls.init() + +class TestGAMBinomial(BaseGAM): + + @classmethod + def setup_class(cls): + super(TestGAMBinomial, cls).setup_class() #initialize DGP + + cls.family = family.Binomial() + cls.rvs = stats.bernoulli.rvs + + cls.init() + +class _estGAMGaussianLogLink(BaseGAM): + #test failure, but maybe precision issue, not far off + #>>> np.mean(np.abs(tt.res2.mu_pred - tt.mu_true)) + #0.80409736263199649 + #>>> np.mean(np.abs(tt.res2.mu_pred - tt.mu_true))/tt.mu_true.mean() + #0.023258245077813208 + #>>> np.mean((tt.res2.mu_pred - tt.mu_true)**2)/tt.mu_true.mean() + #0.022989403735692578 + + @classmethod + def setup_class(cls): + super(_estGAMGaussianLogLink, cls).setup_class() #initialize DGP + + cls.family = family.Gaussian(links.log) + cls.rvs = stats.norm.rvs + cls.scale = 5 + + cls.init() + + +class TestGAMGamma(BaseGAM): + + @classmethod + def setup_class(cls): + super(TestGAMGamma, cls).setup_class() #initialize DGP + + cls.family = family.Gamma(links.log()) + cls.rvs = stats.gamma.rvs + + cls.init() + +class _estGAMNegativeBinomial(BaseGAM): + #rvs generation doesn't work, nbinom needs 2 parameters + + @classmethod + def setup_class(cls): + super(_estGAMNegativeBinomial, cls).setup_class() #initialize DGP + + cls.family = family.NegativeBinomial() + cls.rvs = stats.nbinom.rvs + + cls.init() + +if __name__ == '__main__': + t1 = TestAdditiveModel() + t1.test_predict() + t1.test_params() + + for tt in [TestGAMPoisson, TestGAMBinomial, TestGAMGamma, + _estGAMGaussianLogLink]: #, TestGAMNegativeBinomial]: + tt = tt() + tt.test_predict() + tt.test_params() + tt.test_mu diff --git a/statsmodels/sandbox/tests/test_pca.py b/statsmodels/sandbox/tests/test_pca.py new file mode 100644 index 0000000..46a9a48 --- /dev/null +++ b/statsmodels/sandbox/tests/test_pca.py @@ -0,0 +1,71 @@ +'''tests for pca and arma to ar and ma representation + +compared with matlab princomp, and garchar, garchma + +TODO: +* convert to generators with yield to have individual tests +* incomplete: test relationship of pca-evecs and pinv (adding constant) +''' + +import numpy as np +from numpy.testing import assert_array_almost_equal +from statsmodels.sandbox.tools import pca, pcasvd + +from statsmodels.multivariate.tests.results.datamlw import ( + princomp1, princomp2, princomp3, data) + + +def check_pca_princomp(pcares, princomp): + factors, evals, evecs = pcares[1:] + #res_princomp.coef, res_princomp.factors, res_princomp.values + msign = (evecs/princomp.coef)[0] + assert_array_almost_equal(msign*evecs, princomp.coef, 13) + assert_array_almost_equal(msign*factors, princomp.factors, 13) + assert_array_almost_equal(evals, princomp.values.ravel(), 13) + +def check_pca_svd(pcares, pcasvdres): + xreduced, factors, evals, evecs = pcares + xred_svd, factors_svd, evals_svd, evecs_svd = pcasvdres + assert_array_almost_equal(evals_svd, evals, 14) + msign = (evecs/evecs_svd)[0] + assert_array_almost_equal(msign*evecs_svd, evecs, 13) + assert_array_almost_equal(msign*factors_svd, factors, 13) + assert_array_almost_equal(xred_svd, xreduced, 13) + + +xf = data.xo/1000. + +def test_pca_princomp(): + pcares = pca(xf) + check_pca_princomp(pcares, princomp1) + pcares = pca(xf[:20,:]) + check_pca_princomp(pcares, princomp2) + pcares = pca(xf[:20,:]-xf[:20,:].mean(0)) + check_pca_princomp(pcares, princomp3) + pcares = pca(xf[:20,:]-xf[:20,:].mean(0), demean=0) + check_pca_princomp(pcares, princomp3) + + +def test_pca_svd(): + xreduced, factors, evals, evecs = pca(xf) + factors_wconst = np.c_[factors, np.ones((factors.shape[0],1))] + beta = np.dot(np.linalg.pinv(factors_wconst), xf) + #np.dot(np.linalg.pinv(factors_wconst),x2/1000.).T[:,:4] - evecs + assert_array_almost_equal(beta.T[:,:4], evecs, 14) + + xred_svd, factors_svd, evals_svd, evecs_svd = pcasvd(xf, keepdim=0) + assert_array_almost_equal(evals_svd, evals, 14) + msign = (evecs/evecs_svd)[0] + assert_array_almost_equal(msign*evecs_svd, evecs, 13) + assert_array_almost_equal(msign*factors_svd, factors, 12) + assert_array_almost_equal(xred_svd, xreduced, 13) + + pcares = pca(xf, keepdim=2) + pcasvdres = pcasvd(xf, keepdim=2) + check_pca_svd(pcares, pcasvdres) + +#print np.dot(factors[:,:3], evecs.T[:3,:])[:5] + + +if __name__ == '__main__': + test_pca_svd() diff --git a/statsmodels/sandbox/tests/test_predict_functional.py b/statsmodels/sandbox/tests/test_predict_functional.py new file mode 100644 index 0000000..04b74e6 --- /dev/null +++ b/statsmodels/sandbox/tests/test_predict_functional.py @@ -0,0 +1,340 @@ +from statsmodels.sandbox.predict_functional import predict_functional +import numpy as np +import pandas as pd +import pytest +import statsmodels.api as sm + +# If true, the output is written to a multi-page pdf file. +pdf_output = False + +try: + import matplotlib.pyplot as plt +except ImportError: + pass + +def pctl(q): + return lambda x : np.percentile(x, 100 *q) + + +class TestPredFunc(object): + + @classmethod + def setup_class(cls): + if pdf_output: + from matplotlib.backends.backend_pdf import PdfPages + cls.pdf = PdfPages("predict_functional.pdf") + + @classmethod + def teardown_class(cls): + if pdf_output: + cls.pdf.close() + + def close_or_save(self, fig): + if pdf_output: + self.pdf.savefig(fig) + + @pytest.mark.matplotlib + def test_formula(self, close_figures): + + np.random.seed(542) + n = 500 + x1 = np.random.normal(size=n) + x2 = np.random.normal(size=n) + x3 = np.random.normal(size=n) + x4 = np.random.randint(0, 5, size=n) + x4 = np.asarray(["ABCDE"[i] for i in x4]) + x5 = np.random.normal(size=n) + y = 0.3*x2**2 + (x4 == "B") + 0.1*(x4 == "B")*x2**2 + x5 + np.random.normal(size=n) + + df = pd.DataFrame({"y": y, "x1": x1, "x2": x2, "x3": x3, "x4": x4, "x5": x5}) + + fml = "y ~ x1 + bs(x2, df=4) + x3 + x2*x3 + I(x1**2) + C(x4) + C(x4)*bs(x2, df=4) + x5" + model = sm.OLS.from_formula(fml, data=df) + result = model.fit() + + summaries = {"x1": np.mean, "x3": pctl(0.75), "x5": np.mean} + + values = {"x4": "B"} + pr1, ci1, fvals1 = predict_functional(result, "x2", summaries, values) + + values = {"x4": "C"} + pr2, ci2, fvals2 = predict_functional(result, "x2", summaries, values) + + plt.clf() + fig = plt.figure() + ax = plt.axes([0.1, 0.1, 0.7, 0.8]) + plt.plot(fvals1, pr1, '-', label='x4=B') + plt.plot(fvals2, pr2, '-', label='x4=C') + ha, lb = ax.get_legend_handles_labels() + plt.figlegend(ha, lb, "center right") + plt.xlabel("Focus variable", size=15) + plt.ylabel("Fitted mean", size=15) + plt.title("Linear model prediction") + self.close_or_save(fig) + + plt.clf() + fig = plt.figure() + ax = plt.axes([0.1, 0.1, 0.7, 0.8]) + plt.plot(fvals1, pr1, '-', label='x4=B') + plt.fill_between(fvals1, ci1[:, 0], ci1[:, 1], color='grey') + plt.plot(fvals2, pr2, '-', label='x4=C') + plt.fill_between(fvals2, ci2[:, 0], ci2[:, 1], color='grey') + ha, lb = ax.get_legend_handles_labels() + plt.figlegend(ha, lb, "center right") + plt.xlabel("Focus variable", size=15) + plt.ylabel("Fitted mean", size=15) + plt.title("Linear model prediction") + self.close_or_save(fig) + + @pytest.mark.matplotlib + def test_lm_contrast(self, close_figures): + + np.random.seed(542) + n = 200 + x1 = np.random.normal(size=n) + x2 = np.random.normal(size=n) + x3 = np.random.normal(size=n) + y = x1 + 2*x2 + x3 - x1*x2 + x2*x3 + np.random.normal(size=n) + + df = pd.DataFrame({"y": y, "x1": x1, "x2": x2, "x3": x3}) + + fml = "y ~ x1 + x2 + x3 + x1*x2 + x2*x3" + model = sm.OLS.from_formula(fml, data=df) + result = model.fit() + + values = {"x2": 1, "x3": 1} # y = 4 + values2 = {"x2": 0, "x3": 0} # y = x1 + pr, cb, fvals = predict_functional(result, "x1", values=values, + values2=values2, ci_method='scheffe') + + plt.clf() + fig = plt.figure() + ax = plt.axes([0.1, 0.1, 0.67, 0.8]) + plt.plot(fvals, pr, '-', label="Estimate", color='orange', lw=4) + plt.plot(fvals, 4 - fvals, '-', label="Truth", color='lime', lw=4) + plt.fill_between(fvals, cb[:, 0], cb[:, 1], color='grey') + ha, lb = ax.get_legend_handles_labels() + leg = plt.figlegend(ha, lb, "center right") + leg.draw_frame(False) + plt.xlabel("Focus variable", size=15) + plt.ylabel("Mean contrast", size=15) + plt.title("Linear model contrast") + self.close_or_save(fig) + + @pytest.mark.matplotlib + def test_glm_formula_contrast(self, close_figures): + + np.random.seed(542) + n = 50 + x1 = np.random.normal(size=n) + x2 = np.random.normal(size=n) + x3 = np.random.normal(size=n) + mn = 5 + 0.1*x1 + 0.1*x2 + 0.1*x3 - 0.1*x1*x2 + y = np.random.poisson(np.exp(mn), size=len(mn)) + + df = pd.DataFrame({"y": y, "x1": x1, "x2": x2, "x3": x3}) + + fml = "y ~ x1 + x2 + x3 + x1*x2" + model = sm.GLM.from_formula(fml, data=df, family=sm.families.Poisson()) + result = model.fit() + + values = {"x2": 1, "x3": 1} # y = 5.2 + values2 = {"x2": 0, "x3": 0} # y = 5 + 0.1*x1 + pr, cb, fvals = predict_functional(result, "x1", values=values, + values2=values2, ci_method='simultaneous') + + plt.clf() + fig = plt.figure() + ax = plt.axes([0.1, 0.1, 0.67, 0.8]) + plt.plot(fvals, pr, '-', label="Estimate", color='orange', lw=4) + plt.plot(fvals, 0.2 - 0.1*fvals, '-', label="Truth", color='lime', lw=4) + plt.fill_between(fvals, cb[:, 0], cb[:, 1], color='grey') + ha, lb = ax.get_legend_handles_labels() + leg = plt.figlegend(ha, lb, "center right") + leg.draw_frame(False) + plt.xlabel("Focus variable", size=15) + plt.ylabel("Linear predictor contrast", size=15) + plt.title("Poisson regression contrast") + self.close_or_save(fig) + + @pytest.mark.matplotlib + def test_scb(self, close_figures): + + np.random.seed(473) + n = 100 + x = np.random.normal(size=(n,4)) + x[:, 0] = 1 + + for fam_name in "poisson", "binomial", "gaussian": + + if fam_name == "poisson": + y = np.random.poisson(20, size=n) + fam = sm.families.Poisson() + true_mean = 20 + true_lp = np.log(20) + elif fam_name == "binomial": + y = 1 * (np.random.uniform(size=n) < 0.5) + fam = sm.families.Binomial() + true_mean = 0.5 + true_lp = 0 + elif fam_name == "gaussian": + y = np.random.normal(size=n) + fam = sm.families.Gaussian() + true_mean = 0 + true_lp = 0 + + model = sm.GLM(y, x, family=fam) + result = model.fit() + + # CB is for linear predictor or mean response + for linear in False, True: + + true = true_lp if linear else true_mean + + values = {'const': 1, "x2": 0} + summaries = {"x3": np.mean} + pred1, cb1, fvals1 = predict_functional(result, "x1", + values=values, summaries=summaries, linear=linear) + pred2, cb2, fvals2 = predict_functional(result, "x1", + values=values, summaries=summaries, + ci_method='simultaneous', linear=linear) + + plt.clf() + fig = plt.figure() + ax = plt.axes([0.1, 0.1, 0.58, 0.8]) + plt.plot(fvals1, pred1, '-', color='black', label='Estimate') + plt.plot(fvals1, true * np.ones(len(pred1)), '-', color='purple', + label='Truth') + plt.plot(fvals1, cb1[:, 0], color='blue', label='Pointwise CB') + plt.plot(fvals1, cb1[:, 1], color='blue') + plt.plot(fvals2, cb2[:, 0], color='green', label='Simultaneous CB') + plt.plot(fvals2, cb2[:, 1], color='green') + ha, lb = ax.get_legend_handles_labels() + leg = plt.figlegend(ha, lb, "center right") + leg.draw_frame(False) + plt.xlabel("Focus variable", size=15) + if linear: + plt.ylabel("Linear predictor", size=15) + else: + plt.ylabel("Fitted mean", size=15) + plt.title("%s family prediction" % fam_name.capitalize()) + + self.close_or_save(fig) + + @pytest.mark.matplotlib + def test_glm_formula(self, close_figures): + + np.random.seed(542) + n = 500 + x1 = np.random.normal(size=n) + x2 = np.random.normal(size=n) + x3 = np.random.randint(0, 3, size=n) + x3 = np.asarray(["ABC"[i] for i in x3]) + lin_pred = -1 + 0.5*x1**2 + (x3 == "B") + prob = 1 / (1 + np.exp(-lin_pred)) + y = 1 * (np.random.uniform(size=n) < prob) + + df = pd.DataFrame({"y": y, "x1": x1, "x2": x2, "x3": x3}) + + fml = "y ~ x1 + I(x1**2) + x2 + C(x3)" + model = sm.GLM.from_formula(fml, family=sm.families.Binomial(), data=df) + result = model.fit() + summaries = {"x2": np.mean} + + for linear in False, True: + + values = {"x3": "B"} + pr1, ci1, fvals1 = predict_functional(result, "x1", summaries, values, linear=linear) + + values = {"x3": "C"} + pr2, ci2, fvals2 = predict_functional(result, "x1", summaries, values, linear=linear) + + exact1 = -1 + 0.5*fvals1**2 + 1 + exact2 = -1 + 0.5*fvals2**2 + + if not linear: + exact1 = 1 / (1 + np.exp(-exact1)) + exact2 = 1 / (1 + np.exp(-exact2)) + + plt.clf() + fig = plt.figure() + ax = plt.axes([0.1, 0.1, 0.7, 0.8]) + plt.plot(fvals1, pr1, '-', label='x3=B') + plt.plot(fvals2, pr2, '-', label='x3=C') + plt.plot(fvals1, exact1, '-', label='x3=B (exact)') + plt.plot(fvals2, exact2, '-', label='x3=C (exact)') + ha, lb = ax.get_legend_handles_labels() + plt.figlegend(ha, lb, "center right") + plt.xlabel("Focus variable", size=15) + if linear: + plt.ylabel("Fitted linear predictor", size=15) + else: + plt.ylabel("Fitted probability", size=15) + plt.title("Binomial GLM prediction") + self.close_or_save(fig) + + plt.clf() + fig = plt.figure() + ax = plt.axes([0.1, 0.1, 0.7, 0.8]) + plt.plot(fvals1, pr1, '-', label='x3=B', color='orange') + plt.fill_between(fvals1, ci1[:, 0], ci1[:, 1], color='grey') + plt.plot(fvals2, pr2, '-', label='x3=C', color='lime') + plt.fill_between(fvals2, ci2[:, 0], ci2[:, 1], color='grey') + ha, lb = ax.get_legend_handles_labels() + plt.figlegend(ha, lb, "center right") + plt.xlabel("Focus variable", size=15) + if linear: + plt.ylabel("Fitted linear predictor", size=15) + else: + plt.ylabel("Fitted probability", size=15) + plt.title("Binomial GLM prediction") + self.close_or_save(fig) + + @pytest.mark.matplotlib + def test_noformula_prediction(self, close_figures): + + np.random.seed(6434) + n = 200 + x1 = np.random.normal(size=n) + x2 = np.random.normal(size=n) + x3 = np.random.normal(size=n) + y = x1 - x2 + np.random.normal(size=n) + + exog = np.vstack((x1, x2, x3)).T + + model = sm.OLS(y, exog) + result = model.fit() + + summaries = {"x3": pctl(0.75)} + values = {"x2": 1} + pr1, ci1, fvals1 = predict_functional(result, "x1", summaries, values) + + values = {"x2": -1} + pr2, ci2, fvals2 = predict_functional(result, "x1", summaries, values) + + plt.clf() + fig = plt.figure() + ax = plt.axes([0.1, 0.1, 0.7, 0.8]) + plt.plot(fvals1, pr1, '-', label='x2=1', lw=4, alpha=0.6, color='orange') + plt.plot(fvals2, pr2, '-', label='x2=-1', lw=4, alpha=0.6, color='lime') + ha, lb = ax.get_legend_handles_labels() + leg = plt.figlegend(ha, lb, "center right") + leg.draw_frame(False) + plt.xlabel("Focus variable", size=15) + plt.ylabel("Fitted mean", size=15) + plt.title("Linear model prediction") + self.close_or_save(fig) + + plt.clf() + fig = plt.figure() + ax = plt.axes([0.1, 0.1, 0.7, 0.8]) + plt.plot(fvals1, pr1, '-', label='x2=1', lw=4, alpha=0.6, color='orange') + plt.fill_between(fvals1, ci1[:, 0], ci1[:, 1], color='grey') + plt.plot(fvals1, pr2, '-', label='x2=1', lw=4, alpha=0.6, color='lime') + plt.fill_between(fvals2, ci2[:, 0], ci2[:, 1], color='grey') + ha, lb = ax.get_legend_handles_labels() + plt.figlegend(ha, lb, "center right") + plt.xlabel("Focus variable", size=15) + plt.ylabel("Fitted mean", size=15) + plt.title("Linear model prediction") + self.close_or_save(fig) diff --git a/statsmodels/sandbox/tools/TODO.txt b/statsmodels/sandbox/tools/TODO.txt new file mode 100644 index 0000000..6da243a --- /dev/null +++ b/statsmodels/sandbox/tools/TODO.txt @@ -0,0 +1,76 @@ + + + +* make groupstats into a class with additional functions for easy access + use bincount but loop over 2d, or maybe two versions 1d,2d (or nd?) + similar to groupbys + class GroupStats + init with label data + attributes/properties on demand: mean, var, callback, devfrommean, meanarr, vararr + does var need bias option ? yes? + def groupmean(label, data) + def groupvar(label, data) + def groupnormalize(label, data, reweight = True) + + +* ANOVA wrapper usage example + discussed on mailing list and proposed by Skipper + create design matrix + create restriction matrices for F tests, t tests + ? normalization redundant ? + reports ANOVA style + +* maybe: quick helpers for structured arrays and masked arrays + formula for selection of variables + specification for which variable are factors + Anova(y, use='x1;x2;x3', factors='x2', data = dataarray) + or + Anova(y, use='x1; x2:F; x3', data = dataarray) + + masked arrays need row compression + + +* meta object + for variable names, and .... ? + +* OLSR, OLS with linear restriction -> design changes ? + need to overwrite params_cov calculation - move it back to models + +* regression: OLS, WLS + - add prediction + + +* Granger causality test: which test statistic, F test is easiest, LR, Wald ? -> easy + in R: example in Wikipedia + +* get lag matrix helper function to use lagged dependent and lagged independent regressors + +* nonlinear hypothesis tests for the estimate parameters, delta method ? -> easy, but derivatives by hand w/o sympy + +* minimal PCA, PCR, or PLS (NIPALS): interesting also for finance but not urgent -> messy multiplicity of definitions ? + +* non-linear least squares: + use/imitate scipy.interpolate curvefit + full set of results statistics + +* tests -> needed + - GLSAR: check, R's gls + - ARMA: check R for arma, e.g. dynamo, also look more closely at GARCH_UCSD (BSD) and offspring (license ?) + +* other models in draft stage -> requires cleaning + - gaussian process -> might fit in + - multinomial logit -> requires ML, result statistics don't fit into current classes ? + +* stochastic processes, time series -> first step is relatively easy + more simulators, random process generators, for fun and Monte Carlo and testing + estimators to follow + first group GARCH, + continuous time: not until I need them + +* other multivariate analysis + discriminance, factor analysis, more anova: not my business + +* MLE, GMM: big open question -> needs to wait until we have more code that uses it + difference of approaches + - parametric assumptions, distributions fully specified - problem misspecification + - efficient estimation with full information MLE + -> example panel data, yogurt paper diff --git a/statsmodels/sandbox/tools/__init__.py b/statsmodels/sandbox/tools/__init__.py new file mode 100644 index 0000000..4995409 --- /dev/null +++ b/statsmodels/sandbox/tools/__init__.py @@ -0,0 +1,10 @@ +'''some helper function for principal component and time series analysis + + +Status +------ +pca : tested against matlab +pcasvd : tested against matlab +''' +__all__ = ["pca", "pcasvd"] +from .tools_pca import pca, pcasvd diff --git a/statsmodels/sandbox/tools/cross_val.py b/statsmodels/sandbox/tools/cross_val.py new file mode 100644 index 0000000..6eed46e --- /dev/null +++ b/statsmodels/sandbox/tools/cross_val.py @@ -0,0 +1,369 @@ +""" +Utilities for cross validation. + +taken from scikits.learn + +# Author: Alexandre Gramfort , +# Gael Varoquaux +# License: BSD Style. +# $Id$ + +changes to code by josef-pktd: + - docstring formatting: underlines of headers + +""" + +from statsmodels.compat.python import range, lrange +import numpy as np +from itertools import combinations + + +################################################################################ +class LeaveOneOut(object): + """ + Leave-One-Out cross validation iterator: + Provides train/test indexes to split data in train test sets + """ + + def __init__(self, n): + """ + Leave-One-Out cross validation iterator: + Provides train/test indexes to split data in train test sets + + Parameters + ---------- + n: int + Total number of elements + + Examples + -------- + >>> from scikits.learn import cross_val + >>> X = [[1, 2], [3, 4]] + >>> y = [1, 2] + >>> loo = cross_val.LeaveOneOut(2) + >>> for train_index, test_index in loo: + ... print "TRAIN:", train_index, "TEST:", test_index + ... X_train, X_test, y_train, y_test = cross_val.split(train_index, test_index, X, y) + ... print X_train, X_test, y_train, y_test + TRAIN: [False True] TEST: [ True False] + [[3 4]] [[1 2]] [2] [1] + TRAIN: [ True False] TEST: [False True] + [[1 2]] [[3 4]] [1] [2] + """ + self.n = n + + + def __iter__(self): + n = self.n + for i in range(n): + test_index = np.zeros(n, dtype=np.bool) + test_index[i] = True + train_index = np.logical_not(test_index) + yield train_index, test_index + + + def __repr__(self): + return '%s.%s(n=%i)' % (self.__class__.__module__, + self.__class__.__name__, + self.n, + ) + + + +################################################################################ +class LeavePOut(object): + """ + Leave-P-Out cross validation iterator: + Provides train/test indexes to split data in train test sets + + """ + + def __init__(self, n, p): + """ + Leave-P-Out cross validation iterator: + Provides train/test indexes to split data in train test sets + + Parameters + ---------- + n: int + Total number of elements + p: int + Size test sets + + Examples + -------- + >>> from scikits.learn import cross_val + >>> X = [[1, 2], [3, 4], [5, 6], [7, 8]] + >>> y = [1, 2, 3, 4] + >>> lpo = cross_val.LeavePOut(4, 2) + >>> for train_index, test_index in lpo: + ... print "TRAIN:", train_index, "TEST:", test_index + ... X_train, X_test, y_train, y_test = cross_val.split(train_index, test_index, X, y) + TRAIN: [False False True True] TEST: [ True True False False] + TRAIN: [False True False True] TEST: [ True False True False] + TRAIN: [False True True False] TEST: [ True False False True] + TRAIN: [ True False False True] TEST: [False True True False] + TRAIN: [ True False True False] TEST: [False True False True] + TRAIN: [ True True False False] TEST: [False False True True] + """ + self.n = n + self.p = p + + + def __iter__(self): + n = self.n + p = self.p + comb = combinations(lrange(n), p) + for idx in comb: + test_index = np.zeros(n, dtype=np.bool) + test_index[np.array(idx)] = True + train_index = np.logical_not(test_index) + yield train_index, test_index + + + def __repr__(self): + return '%s.%s(n=%i, p=%i)' % ( + self.__class__.__module__, + self.__class__.__name__, + self.n, + self.p, + ) + + +################################################################################ +class KFold(object): + """ + K-Folds cross validation iterator: + Provides train/test indexes to split data in train test sets + """ + + def __init__(self, n, k): + """ + K-Folds cross validation iterator: + Provides train/test indexes to split data in train test sets + + Parameters + ---------- + n: int + Total number of elements + k: int + number of folds + + Examples + -------- + >>> from scikits.learn import cross_val + >>> X = [[1, 2], [3, 4], [1, 2], [3, 4]] + >>> y = [1, 2, 3, 4] + >>> kf = cross_val.KFold(4, k=2) + >>> for train_index, test_index in kf: + ... print "TRAIN:", train_index, "TEST:", test_index + ... X_train, X_test, y_train, y_test = cross_val.split(train_index, test_index, X, y) + TRAIN: [False False True True] TEST: [ True True False False] + TRAIN: [ True True False False] TEST: [False False True True] + + Notes + ----- + All the folds have size trunc(n/k), the last one has the complementary + """ + assert k>0, ValueError('cannot have k below 1') + assert k>> from scikits.learn import cross_val + >>> X = [[1, 2], [3, 4], [5, 6], [7, 8]] + >>> y = [1, 2, 1, 2] + >>> labels = [1, 1, 2, 2] + >>> lol = cross_val.LeaveOneLabelOut(labels) + >>> for train_index, test_index in lol: + ... print "TRAIN:", train_index, "TEST:", test_index + ... X_train, X_test, y_train, y_test = cross_val.split(train_index, \ + test_index, X, y) + ... print X_train, X_test, y_train, y_test + TRAIN: [False False True True] TEST: [ True True False False] + [[5 6] + [7 8]] [[1 2] + [3 4]] [1 2] [1 2] + TRAIN: [ True True False False] TEST: [False False True True] + [[1 2] + [3 4]] [[5 6] + [7 8]] [1 2] [1 2] + + """ + self.labels = labels + + + def __iter__(self): + # We make a copy here to avoid side-effects during iteration + labels = np.array(self.labels, copy=True) + for i in np.unique(labels): + test_index = np.zeros(len(labels), dtype=np.bool) + test_index[labels==i] = True + train_index = np.logical_not(test_index) + yield train_index, test_index + + + def __repr__(self): + return '%s.%s(labels=%s)' % ( + self.__class__.__module__, + self.__class__.__name__, + self.labels, + ) + + +def split(train_indexes, test_indexes, *args): + """ + For each arg return a train and test subsets defined by indexes provided + in train_indexes and test_indexes + """ + ret = [] + for arg in args: + arg = np.asanyarray(arg) + arg_train = arg[train_indexes] + arg_test = arg[test_indexes] + ret.append(arg_train) + ret.append(arg_test) + return ret + +''' + >>> cv = cross_val.LeaveOneLabelOut(X, y) # y making y optional and +possible to add other arrays of the same shape[0] too + >>> for X_train, y_train, X_test, y_test in cv: + ... print np.sqrt((model.fit(X_train, y_train).predict(X_test) +- y_test) ** 2).mean()) +''' + + +################################################################################ +#below: Author: josef-pktd + +class KStepAhead(object): + """ + KStepAhead cross validation iterator: + Provides fit/test indexes to split data in sequential sets + """ + + def __init__(self, n, k=1, start=None, kall=True, return_slice=True): + """ + KStepAhead cross validation iterator: + Provides train/test indexes to split data in train test sets + + Parameters + ---------- + n: int + Total number of elements + k : int + number of steps ahead + start : int + initial size of data for fitting + kall : boolean + if true. all values for up to k-step ahead are included in the test index. + If false, then only the k-th step ahead value is returnd + + + Notes + ----- + I don't think this is really useful, because it can be done with + a very simple loop instead. + Useful as a plugin, but it could return slices instead for faster array access. + + Examples + -------- + >>> from scikits.learn import cross_val + >>> X = [[1, 2], [3, 4]] + >>> y = [1, 2] + >>> loo = cross_val.LeaveOneOut(2) + >>> for train_index, test_index in loo: + ... print "TRAIN:", train_index, "TEST:", test_index + ... X_train, X_test, y_train, y_test = cross_val.split(train_index, test_index, X, y) + ... print X_train, X_test, y_train, y_test + TRAIN: [False True] TEST: [ True False] + [[3 4]] [[1 2]] [2] [1] + TRAIN: [ True False] TEST: [False True] + [[1 2]] [[3 4]] [1] [2] + """ + self.n = n + self.k = k + if start is None: + start = int(np.trunc(n*0.25)) # pick something arbitrary + self.start = start + self.kall = kall + self.return_slice = return_slice + + + def __iter__(self): + n = self.n + k = self.k + start = self.start + if self.return_slice: + for i in range(start, n-k): + train_slice = slice(None, i, None) + if self.kall: + test_slice = slice(i, i+k) + else: + test_slice = slice(i+k-1, i+k) + yield train_slice, test_slice + + else: #for compatibility with other iterators + for i in range(start, n-k): + train_index = np.zeros(n, dtype=np.bool) + train_index[:i] = True + test_index = np.zeros(n, dtype=np.bool) + if self.kall: + test_index[i:i+k] = True # np.logical_not(test_index) + else: + test_index[i+k-1:i+k] = True + #or faster to return np.arange(i,i+k) ? + #returning slice should be faster in this case + yield train_index, test_index + + + def __repr__(self): + return '%s.%s(n=%i)' % (self.__class__.__module__, + self.__class__.__name__, + self.n, + ) diff --git a/statsmodels/sandbox/tools/mctools.py b/statsmodels/sandbox/tools/mctools.py new file mode 100644 index 0000000..c36f050 --- /dev/null +++ b/statsmodels/sandbox/tools/mctools.py @@ -0,0 +1,527 @@ +'''Helper class for Monte Carlo Studies for (currently) statistical tests + +Most of it should also be usable for Bootstrap, and for MC for estimators. +Takes the sample generator, dgb, and the statistical results, statistic, +as functions in the argument. + + +Author: Josef Perktold (josef-pktd) +License: BSD-3 + + +TODOs, Design +------------- +If we only care about univariate analysis, i.e. marginal if statistics returns +more than one value, the we only need to store the sorted mcres not the +original res. Do we want to extend to multivariate analysis? + +Use distribution function to keep track of MC results, ECDF, non-paramatric? +Large parts are similar to a 2d array of independent multivariate random +variables. Joint distribution is not used (yet). + +I guess this is currently only for one sided test statistics, e.g. for +two-sided tests basend on t or normal distribution use the absolute value. + +''' +from __future__ import print_function +from statsmodels.compat.python import lrange +import numpy as np + +from statsmodels.iolib.table import SimpleTable + +#copied from stattools +class StatTestMC(object): + """class to run Monte Carlo study on a statistical test''' + + TODO + print(summary, for quantiles and for histogram + draft in trying out script log + + Parameters + ---------- + dgp : callable + Function that generates the data to be used in Monte Carlo that should + return a new sample with each call + statistic : callable + Function that calculates the test statistic, which can return either + a single statistic or a 1d array_like (tuple, list, ndarray). + see also statindices in description of run + + Attributes + ---------- + many methods store intermediate results + + self.mcres : ndarray (nrepl, nreturns) or (nrepl, len(statindices)) + Monte Carlo results stored by run + + + Notes + ----- + + .. Warning:: + This is (currently) designed for a single call to run. If run is + called a second time with different arguments, then some attributes might + not be updated, and, therefore, not correspond to the same run. + + .. Warning:: + Under Construction, don't expect stability in Api or implementation + + + Examples + -------- + + Define a function that defines our test statistic: + + def lb(x): + s,p = acorr_ljungbox(x, lags=4) + return np.r_[s, p] + + Note lb returns eight values. + + Define a random sample generator, for example 500 independently, normal + distributed observations in a sample: + + + def normalnoisesim(nobs=500, loc=0.0): + return (loc+np.random.randn(nobs)) + + Create instance and run Monte Carlo. Using statindices=list(range(4)) means that + only the first for values of the return of the statistic (lb) are stored + in the Monte Carlo results. + + mc1 = StatTestMC(normalnoisesim, lb) + mc1.run(5000, statindices=list(range(4))) + + Most of the other methods take an idx which indicates for which columns + the results should be presented, e.g. + + print(mc1.cdf(crit, [1,2,3])[1] + + + """ + + def __init__(self, dgp, statistic): + self.dgp = dgp #staticmethod(dgp) #no self + self.statistic = statistic # staticmethod(statistic) #no self + + def run(self, nrepl, statindices=None, dgpargs=[], statsargs=[]): + '''run the actual Monte Carlo and save results + + Parameters + ---------- + nrepl : int + number of Monte Carlo repetitions + statindices : None or list of integers + determines which values of the return of the statistic + functions are stored in the Monte Carlo. Default None + means the entire return. If statindices is a list of + integers, then it will be used as index into the return. + dgpargs : tuple + optional parameters for the DGP + statsargs : tuple + optional parameters for the statistics function + + Returns + ------- + None, all results are attached + + + ''' + self.nrepl = nrepl + self.statindices = statindices + self.dgpargs = dgpargs + self.statsargs = statsargs + + dgp = self.dgp + statfun = self.statistic # name ? + #introspect len of return of statfun, + #possible problems with ndim>1, check ValueError + mcres0 = statfun(dgp(*dgpargs), *statsargs) + self.nreturn = nreturns = len(np.ravel(mcres0)) + + #single return statistic + if statindices is None: + #self.nreturn = nreturns = 1 + mcres = np.zeros(nrepl) + mcres[0] = mcres0 + for ii in range(1, nrepl-1, nreturns): + x = dgp(*dgpargs) #(1e-4+np.random.randn(nobs)).cumsum() + #should I ravel? + mcres[ii] = statfun(x, *statsargs) #unitroot_adf(x, 2,trendorder=0, autolag=None) + #more than one return statistic + else: + self.nreturn = nreturns = len(statindices) + self.mcres = mcres = np.zeros((nrepl, nreturns)) + mcres[0] = [mcres0[i] for i in statindices] + for ii in range(1, nrepl-1): + x = dgp(*dgpargs) #(1e-4+np.random.randn(nobs)).cumsum() + ret = statfun(x, *statsargs) + mcres[ii] = [ret[i] for i in statindices] + + self.mcres = mcres + + + def histogram(self, idx=None, critval=None): + '''calculate histogram values + + does not do any plotting + + I don't remember what I wanted here, looks similar to the new cdf + method, but this also does a binned pdf (self.histo) + + + ''' + if self.mcres.ndim == 2: + if idx is not None: + mcres = self.mcres[:,idx] + else: + raise ValueError('currently only 1 statistic at a time') + else: + mcres = self.mcres + + if critval is None: + histo = np.histogram(mcres, bins=10) + else: + if not critval[0] == -np.inf: + bins=np.r_[-np.inf, critval, np.inf] + if not critval[0] == -np.inf: + bins=np.r_[bins, np.inf] + histo = np.histogram(mcres, + bins=np.r_[-np.inf, critval, np.inf]) + + self.histo = histo + self.cumhisto = np.cumsum(histo[0])*1./self.nrepl + self.cumhistoreversed = np.cumsum(histo[0][::-1])[::-1]*1./self.nrepl + return histo, self.cumhisto, self.cumhistoreversed + + #use cache decorator instead + def get_mc_sorted(self): + if not hasattr(self, 'mcressort'): + self.mcressort = np.sort(self.mcres, axis=0) + return self.mcressort + + + def quantiles(self, idx=None, frac=[0.01, 0.025, 0.05, 0.1, 0.975]): + '''calculate quantiles of Monte Carlo results + + similar to ppf + + Parameters + ---------- + idx : None or list of integers + List of indices into the Monte Carlo results (columns) that should + be used in the calculation + frac : array_like, float + Defines which quantiles should be calculated. For example a frac + of 0.1 finds the 10% quantile, x such that cdf(x)=0.1 + + Returns + ------- + frac : ndarray + same values as input, TODO: I should drop this again ? + quantiles : ndarray, (len(frac), len(idx)) + the quantiles with frac in rows and idx variables in columns + + Notes + ----- + + rename to ppf ? make frac required + change sequence idx, frac + + + ''' + + if self.mcres.ndim == 2: + if idx is not None: + mcres = self.mcres[:,idx] + else: + raise ValueError('currently only 1 statistic at a time') + else: + mcres = self.mcres + + self.frac = frac = np.asarray(frac) + + mc_sorted = self.get_mc_sorted()[:,idx] + return frac, mc_sorted[(self.nrepl*frac).astype(int)] + + def cdf(self, x, idx=None): + '''calculate cumulative probabilities of Monte Carlo results + + Parameters + ---------- + idx : None or list of integers + List of indices into the Monte Carlo results (columns) that should + be used in the calculation + frac : array_like, float + Defines which quantiles should be calculated. For example a frac + of 0.1 finds the 10% quantile, x such that cdf(x)=0.1 + + Returns + ------- + x : ndarray + same as input, TODO: I should drop this again ? + probs : ndarray, (len(x), len(idx)) + the quantiles with frac in rows and idx variables in columns + + + + ''' + idx = np.atleast_1d(idx).tolist() #assure iterable, use list ? + +# if self.mcres.ndim == 2: +# if not idx is None: +# mcres = self.mcres[:,idx] +# else: +# raise ValueError('currently only 1 statistic at a time') +# else: +# mcres = self.mcres + + mc_sorted = self.get_mc_sorted() + + x = np.asarray(x) + #TODO:autodetect or explicit option ? + if x.ndim > 1 and x.shape[1]==len(idx): + use_xi = True + else: + use_xi = False + + x_ = x #alias + probs = [] + for i,ix in enumerate(idx): + if use_xi: + x_ = x[:,i] + probs.append(np.searchsorted(mc_sorted[:,ix], x_)/float(self.nrepl)) + probs = np.asarray(probs).T + return x, probs + + def plot_hist(self, idx, distpdf=None, bins=50, ax=None, kwds=None): + '''plot the histogram against a reference distribution + + Parameters + ---------- + idx : None or list of integers + List of indices into the Monte Carlo results (columns) that should + be used in the calculation + distpdf : callable + probability density function of reference distribution + bins : integer or array_like + used unchanged for matplotlibs hist call + ax : TODO: not implemented yet + kwds : None or tuple of dicts + extra keyword options to the calls to the matplotlib functions, + first dictionary is for his, second dictionary for plot of the + reference distribution + + Returns + ------- + None + + + ''' + if kwds is None: + kwds = ({},{}) + if self.mcres.ndim == 2: + if idx is not None: + mcres = self.mcres[:,idx] + else: + raise ValueError('currently only 1 statistic at a time') + else: + mcres = self.mcres + + lsp = np.linspace(mcres.min(), mcres.max(), 100) + + + import matplotlib.pyplot as plt + #I don't want to figure this out now +# if ax=None: +# fig = plt.figure() +# ax = fig.addaxis() + fig = plt.figure() + plt.hist(mcres, bins=bins, normed=True, **kwds[0]) + plt.plot(lsp, distpdf(lsp), 'r', **kwds[1]) + + + def summary_quantiles(self, idx, distppf, frac=[0.01, 0.025, 0.05, 0.1, 0.975], + varnames=None, title=None): + '''summary table for quantiles (critical values) + + Parameters + ---------- + idx : None or list of integers + List of indices into the Monte Carlo results (columns) that should + be used in the calculation + distppf : callable + probability density function of reference distribution + TODO: use `crit` values instead or additional, see summary_cdf + frac : array_like, float + probabilities for which + varnames : None, or list of strings + optional list of variable names, same length as idx + + Returns + ------- + table : instance of SimpleTable + use `print(table` to see results + + ''' + idx = np.atleast_1d(idx) #assure iterable, use list ? + + quant, mcq = self.quantiles(idx, frac=frac) + #not sure whether this will work with single quantile + #crit = stats.chi2([2,4]).ppf(np.atleast_2d(quant).T) + crit = distppf(np.atleast_2d(quant).T) + mml=[] + for i, ix in enumerate(idx): #TODO: hardcoded 2 ? + mml.extend([mcq[:,i], crit[:,i]]) + #mmlar = np.column_stack(mml) + mmlar = np.column_stack([quant] + mml) + #print(mmlar.shape + if title: + title = title +' Quantiles (critical values)' + else: + title='Quantiles (critical values)' + #TODO use stub instead + if varnames is None: + varnames = ['var%d' % i for i in range(mmlar.shape[1]//2)] + headers = ['\nprob'] + ['%s\n%s' % (i, t) for i in varnames for t in ['mc', 'dist']] + return SimpleTable(mmlar, + txt_fmt={'data_fmts': ["%#6.3f"]+["%#10.4f"]*(mmlar.shape[1]-1)}, + title=title, + headers=headers) + + def summary_cdf(self, idx, frac, crit, varnames=None, title=None): + '''summary table for cumulative density function + + + Parameters + ---------- + idx : None or list of integers + List of indices into the Monte Carlo results (columns) that should + be used in the calculation + frac : array_like, float + probabilities for which + crit : array_like + values for which cdf is calculated + varnames : None, or list of strings + optional list of variable names, same length as idx + + Returns + ------- + table : instance of SimpleTable + use `print(table` to see results + + + ''' + idx = np.atleast_1d(idx) #assure iterable, use list ? + + + mml=[] + #TODO:need broadcasting in cdf + for i in range(len(idx)): + #print(i, mc1.cdf(crit[:,i], [idx[i]])[1].ravel() + mml.append(self.cdf(crit[:,i], [idx[i]])[1].ravel()) + #mml = self.cdf(crit, idx)[1] + #mmlar = np.column_stack(mml) + #print(mml[0].shape, np.shape(frac) + mmlar = np.column_stack([frac] + mml) + #print(mmlar.shape + if title: + title = title +' Probabilites' + else: + title='Probabilities' + #TODO use stub instead + #headers = ['\nprob'] + ['var%d\n%s' % (i, t) for i in range(mmlar.shape[1]-1) for t in ['mc']] + + if varnames is None: + varnames = ['var%d' % i for i in range(mmlar.shape[1]-1)] + headers = ['prob'] + varnames + return SimpleTable(mmlar, + txt_fmt={'data_fmts': ["%#6.3f"]+["%#10.4f"]*(np.array(mml).shape[1]-1)}, + title=title, + headers=headers) + + + + + + + + + +if __name__ == '__main__': + from scipy import stats + + from statsmodels.sandbox.stats.diagnostic import ( + acorr_ljungbox, unitroot_adf) + + + def randwalksim(nobs=100, drift=0.0): + return (drift+np.random.randn(nobs)).cumsum() + + def normalnoisesim(nobs=500, loc=0.0): + return (loc+np.random.randn(nobs)) + + def adf20(x): + return unitroot_adf(x, 2,trendorder=0, autolag=None) + +# print('\nResults with MC class' +# mc1 = StatTestMC(randwalksim, adf20) +# mc1.run(1000) +# print(mc1.histogram(critval=[-3.5, -3.17, -2.9 , -2.58, 0.26]) +# print(mc1.quantiles() + + print('\nLjung Box') + + def lb4(x): + s,p = acorr_ljungbox(x, lags=4) + return s[-1], p[-1] + + def lb1(x): + s,p = acorr_ljungbox(x, lags=1) + return s[0], p[0] + + def lb(x): + s,p = acorr_ljungbox(x, lags=4) + return np.r_[s, p] + + print('Results with MC class') + mc1 = StatTestMC(normalnoisesim, lb) + mc1.run(10000, statindices=lrange(8)) + print(mc1.histogram(1, critval=[0.01, 0.025, 0.05, 0.1, 0.975])) + print(mc1.quantiles(1)) + print(mc1.quantiles(0)) + print(mc1.histogram(0)) + + #print(mc1.summary_quantiles([1], stats.chi2([2]).ppf, title='acorr_ljungbox') + print(mc1.summary_quantiles([1,2,3], stats.chi2([2,3,4]).ppf, + varnames=['lag 1', 'lag 2', 'lag 3'], + title='acorr_ljungbox')) + print(mc1.cdf(0.1026, 1)) + print(mc1.cdf(0.7278, 3)) + + print(mc1.cdf(0.7278, [1,2,3])) + frac = [0.01, 0.025, 0.05, 0.1, 0.975] + crit = stats.chi2([2,4]).ppf(np.atleast_2d(frac).T) + print(mc1.summary_cdf([1,3], frac, crit, title='acorr_ljungbox')) + crit = stats.chi2([2,3,4]).ppf(np.atleast_2d(frac).T) + print(mc1.summary_cdf([1,2,3], frac, crit, + varnames=['lag 1', 'lag 2', 'lag 3'], + title='acorr_ljungbox')) + + print(mc1.cdf(crit, [1,2,3])[1].shape) + + #fixed broadcasting in cdf Done 2d only + ''' + >>> mc1.cdf(crit[:,0], [1])[1].shape + (5, 1) + >>> mc1.cdf(crit[:,0], [1,3])[1].shape + (5, 2) + >>> mc1.cdf(crit[:,:], [1,3])[1].shape + (2, 5, 2) + ''' + + doplot=0 + if doplot: + import matplotlib.pyplot as plt + mc1.plot_hist(0,stats.chi2(2).pdf) #which pdf + plt.show() diff --git a/statsmodels/sandbox/tools/tools_pca.py b/statsmodels/sandbox/tools/tools_pca.py new file mode 100644 index 0000000..8faa5ce --- /dev/null +++ b/statsmodels/sandbox/tools/tools_pca.py @@ -0,0 +1,148 @@ +# -*- coding: utf-8 -*- +"""Principal Component Analysis + + +Created on Tue Sep 29 20:11:23 2009 +Author: josef-pktd + +TODO : add class for better reuse of results +""" + +import numpy as np + + +def pca(data, keepdim=0, normalize=0, demean=True): + '''principal components with eigenvector decomposition + similar to princomp in matlab + + Parameters + ---------- + data : ndarray, 2d + data with observations by rows and variables in columns + keepdim : integer + number of eigenvectors to keep + if keepdim is zero, then all eigenvectors are included + normalize : boolean + if true, then eigenvectors are normalized by sqrt of eigenvalues + demean : boolean + if true, then the column mean is subtracted from the data + + Returns + ------- + xreduced : ndarray, 2d, (nobs, nvars) + projection of the data x on the kept eigenvectors + factors : ndarray, 2d, (nobs, nfactors) + factor matrix, given by np.dot(x, evecs) + evals : ndarray, 2d, (nobs, nfactors) + eigenvalues + evecs : ndarray, 2d, (nobs, nfactors) + eigenvectors, normalized if normalize is true + + Notes + ----- + + See Also + -------- + pcasvd : principal component analysis using svd + + ''' + x = np.array(data) + #make copy so original doesn't change, maybe not necessary anymore + if demean: + m = x.mean(0) + else: + m = np.zeros(x.shape[1]) + x -= m + + # Covariance matrix + xcov = np.cov(x, rowvar=0) + + # Compute eigenvalues and sort into descending order + evals, evecs = np.linalg.eig(xcov) + indices = np.argsort(evals) + indices = indices[::-1] + evecs = evecs[:,indices] + evals = evals[indices] + + if keepdim > 0 and keepdim < x.shape[1]: + evecs = evecs[:,:keepdim] + evals = evals[:keepdim] + + if normalize: + #for i in range(shape(evecs)[1]): + # evecs[:,i] / linalg.norm(evecs[:,i]) * sqrt(evals[i]) + evecs = evecs/np.sqrt(evals) #np.sqrt(np.dot(evecs.T, evecs) * evals) + + # get factor matrix + #x = np.dot(evecs.T, x.T) + factors = np.dot(x, evecs) + # get original data from reduced number of components + #xreduced = np.dot(evecs.T, factors) + m + #print x.shape, factors.shape, evecs.shape, m.shape + xreduced = np.dot(factors, evecs.T) + m + return xreduced, factors, evals, evecs + + + +def pcasvd(data, keepdim=0, demean=True): + '''principal components with svd + + Parameters + ---------- + data : ndarray, 2d + data with observations by rows and variables in columns + keepdim : integer + number of eigenvectors to keep + if keepdim is zero, then all eigenvectors are included + demean : boolean + if true, then the column mean is subtracted from the data + + Returns + ------- + xreduced : ndarray, 2d, (nobs, nvars) + projection of the data x on the kept eigenvectors + factors : ndarray, 2d, (nobs, nfactors) + factor matrix, given by np.dot(x, evecs) + evals : ndarray, 2d, (nobs, nfactors) + eigenvalues + evecs : ndarray, 2d, (nobs, nfactors) + eigenvectors, normalized if normalize is true + + See Also + -------- + pca : principal component analysis using eigenvector decomposition + + Notes + ----- + This doesn't have yet the normalize option of pca. + + ''' + nobs, nvars = data.shape + #print nobs, nvars, keepdim + x = np.array(data) + #make copy so original doesn't change + if demean: + m = x.mean(0) + else: + m = 0 +## if keepdim == 0: +## keepdim = nvars +## "print reassigning keepdim to max", keepdim + x -= m + U, s, v = np.linalg.svd(x.T, full_matrices=1) + factors = np.dot(U.T, x.T).T #princomps + if keepdim: + xreduced = np.dot(factors[:,:keepdim], U[:,:keepdim].T) + m + else: + xreduced = data + keepdim = nvars + "print reassigning keepdim to max", keepdim + + # s = evals, U = evecs + # no idea why denominator for s is with minus 1 + evals = s**2/(x.shape[0]-1) + #print keepdim + return xreduced, factors[:,:keepdim], evals[:keepdim], U[:,:keepdim] #, v + + +__all__ = ['pca', 'pcasvd'] diff --git a/statsmodels/sandbox/tools/try_mctools.py b/statsmodels/sandbox/tools/try_mctools.py new file mode 100644 index 0000000..80796e5 --- /dev/null +++ b/statsmodels/sandbox/tools/try_mctools.py @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Sep 30 15:20:45 2011 + +@author: josef +""" +from statsmodels.compat.python import lrange +import numpy as np +from scipy import stats +from statsmodels.sandbox.tools.mctools import StatTestMC +from statsmodels.sandbox.stats.diagnostic import ( + acorr_ljungbox, unitroot_adf) + +def normalnoisesim(nobs=500, loc=0.0): + return (loc+np.random.randn(nobs)) + + +def lb(x): + s,p = acorr_ljungbox(x, lags=4) + return np.r_[s, p] + + +mc1 = StatTestMC(normalnoisesim, lb) +mc1.run(5000, statindices=lrange(4)) + +print(mc1.summary_quantiles([1,2,3], stats.chi2([2,3,4]).ppf, + varnames=['lag 1', 'lag 2', 'lag 3'], + title='acorr_ljungbox')) +print('\n\n') + +frac = [0.01, 0.025, 0.05, 0.1, 0.975] +crit = stats.chi2([2,3,4]).ppf(np.atleast_2d(frac).T) +print(mc1.summary_cdf([1,2,3], frac, crit, + varnames=['lag 1', 'lag 2', 'lag 3'], + title='acorr_ljungbox')) +print(mc1.cdf(crit, [1,2,3])[1]) + +#---------------------- + +def randwalksim(nobs=500, drift=0.0): + return (drift+np.random.randn(nobs)).cumsum() + +def adf20(x): + return unitroot_adf(x, 2, trendorder=0, autolag=None) + +print(adf20(np.random.randn(100))) + +mc2 = StatTestMC(randwalksim, adf20) +mc2.run(10000, statindices=[0,1]) +frac = [0.01, 0.05, 0.1] +#bug +crit = np.array([-3.4996365338407074, -2.8918307730370025, -2.5829283377617176])[:,None] +print(mc2.summary_cdf([0], frac, crit, + varnames=['adf'], + title='adf')) +#bug +#crit2 = np.column_stack((crit, frac)) +#print mc2.summary_cdf([0, 1], frac, crit, +# varnames=['adf'], +# title='adf') + +print(mc2.quantiles([0])) +print(mc2.cdf(crit, [0])) + +doplot=1 +if doplot: + import matplotlib.pyplot as plt + mc1.plot_hist([3],stats.chi2([4]).pdf) + plt.title('acorr_ljungbox - MC versus chi2') + plt.show() diff --git a/statsmodels/sandbox/tsa/__init__.py b/statsmodels/sandbox/tsa/__init__.py new file mode 100644 index 0000000..aa72b54 --- /dev/null +++ b/statsmodels/sandbox/tsa/__init__.py @@ -0,0 +1,52 @@ +'''functions and classes time series analysis + + +Status +------ +work in progress + +arima.py +^^^^^^^^ + +ARIMA : initial class, uses conditional least squares, needs merging with new class +arma2ar +arma2ma +arma_acf +arma_acovf +arma_generate_sample +arma_impulse_response +deconvolve +index2lpol +lpol2index +mcarma22 + +movstat.py +^^^^^^^^^^ + +I had tested the next group against matlab, but where are the tests ? +acf +acovf +ccf +ccovf +pacf_ols +pacf_yw + +These hat incorrect array size, were my first implementation, slow compared +to cumsum version in la and cython version in pandas. +These need checking, and merging/comparing with new class MovStats +check_movorder +expandarr +movmean : +movmoment : corrected cutoff +movorder +movvar + + + + +''' + + +#from arima import * +from .movstat import movorder, movmean, movvar, movmoment # noqa:F401 +#from stattools import * diff --git a/statsmodels/sandbox/tsa/diffusion.py b/statsmodels/sandbox/tsa/diffusion.py new file mode 100644 index 0000000..f505805 --- /dev/null +++ b/statsmodels/sandbox/tsa/diffusion.py @@ -0,0 +1,591 @@ +'''getting started with diffusions, continuous time stochastic processes + +Author: josef-pktd +License: BSD + + +References +---------- + +An Algorithmic Introduction to Numerical Simulation of Stochastic Differential +Equations +Author(s): Desmond J. Higham +Source: SIAM Review, Vol. 43, No. 3 (Sep., 2001), pp. 525-546 +Published by: Society for Industrial and Applied Mathematics +Stable URL: http://www.jstor.org/stable/3649798 + +http://www.sitmo.com/ especially the formula collection + + +Notes +----- + +OU process: use same trick for ARMA with constant (non-zero mean) and drift +some of the processes have easy multivariate extensions + +*Open Issues* + +include xzero in returned sample or not? currently not + +*TODOS* + +* Milstein from Higham paper, for which processes does it apply +* Maximum Likelihood estimation +* more statistical properties (useful for tests) +* helper functions for display and MonteCarlo summaries (also for testing/checking) +* more processes for the menagerie (e.g. from empirical papers) +* characteristic functions +* transformations, non-linear e.g. log +* special estimators, e.g. Ait Sahalia, empirical characteristic functions +* fft examples +* check naming of methods, "simulate", "sample", "simexact", ... ? + + + +stochastic volatility models: estimation unclear + +finance applications ? option pricing, interest rate models + + +''' +from __future__ import print_function +import numpy as np +from scipy import stats, signal +import matplotlib.pyplot as plt + +#np.random.seed(987656789) + +class Diffusion(object): + '''Wiener Process, Brownian Motion with mu=0 and sigma=1 + ''' + def __init__(self): + pass + + def simulateW(self, nobs=100, T=1, dt=None, nrepl=1): + '''generate sample of Wiener Process + ''' + dt = T*1.0/nobs + t = np.linspace(dt, 1, nobs) + dW = np.sqrt(dt)*np.random.normal(size=(nrepl, nobs)) + W = np.cumsum(dW,1) + self.dW = dW + return W, t + + def expectedsim(self, func, nobs=100, T=1, dt=None, nrepl=1): + '''get expectation of a function of a Wiener Process by simulation + + initially test example from + ''' + W, t = self.simulateW(nobs=nobs, T=T, dt=dt, nrepl=nrepl) + U = func(t, W) + Umean = U.mean(0) + return U, Umean, t + +class AffineDiffusion(Diffusion): + r''' + + differential equation: + + :math:: + dx_t = f(t,x)dt + \sigma(t,x)dW_t + + integral: + + :math:: + x_T = x_0 + \int_{0}^{T}f(t,S)dt + \int_0^T \sigma(t,S)dW_t + + TODO: check definition, affine, what about jump diffusion? + + ''' + + def __init__(self): + pass + + def sim(self, nobs=100, T=1, dt=None, nrepl=1): + # this doesn't look correct if drift or sig depend on x + # see arithmetic BM + W, t = self.simulateW(nobs=nobs, T=T, dt=dt, nrepl=nrepl) + dx = self._drift() + self._sig() * W + x = np.cumsum(dx,1) + xmean = x.mean(0) + return x, xmean, t + + def simEM(self, xzero=None, nobs=100, T=1, dt=None, nrepl=1, Tratio=4): + ''' + + from Higham 2001 + + TODO: reverse parameterization to start with final nobs and DT + TODO: check if I can skip the loop using my way from exactprocess + problem might be Winc (reshape into 3d and sum) + TODO: (later) check memory efficiency for large simulations + ''' + #TODO: reverse parameterization to start with final nobs and DT + nobs = nobs * Tratio # simple way to change parameter + # maybe wrong parameterization, + # drift too large, variance too small ? which dt/Dt + # _drift, _sig independent of dt is wrong + if xzero is None: + xzero = self.xzero + if dt is None: + dt = T*1.0/nobs + W, t = self.simulateW(nobs=nobs, T=T, dt=dt, nrepl=nrepl) + dW = self.dW + t = np.linspace(dt, 1, nobs) + Dt = Tratio*dt + L = nobs/Tratio # L EM steps of size Dt = R*dt + Xem = np.zeros((nrepl,L)) # preallocate for efficiency + Xtemp = xzero + Xem[:,0] = xzero + for j in np.arange(1,L): + #Winc = np.sum(dW[:,Tratio*(j-1)+1:Tratio*j],1) + Winc = np.sum(dW[:,np.arange(Tratio*(j-1)+1,Tratio*j)],1) + #Xtemp = Xtemp + Dt*lamda*Xtemp + mu*Xtemp*Winc; + Xtemp = Xtemp + self._drift(x=Xtemp) + self._sig(x=Xtemp) * Winc + #Dt*lamda*Xtemp + mu*Xtemp*Winc; + Xem[:,j] = Xtemp + return Xem + +''' + R = 4; Dt = R*dt; L = N/R; % L EM steps of size Dt = R*dt + Xem = zeros(1,L); % preallocate for efficiency + Xtemp = Xzero; + for j = 1:L + Winc = sum(dW(R*(j-1)+1:R*j)); + Xtemp = Xtemp + Dt*lambda*Xtemp + mu*Xtemp*Winc; + Xem(j) = Xtemp; + end +''' + +class ExactDiffusion(AffineDiffusion): + '''Diffusion that has an exact integral representation + + this is currently mainly for geometric, log processes + + ''' + + def __init__(self): + pass + + def exactprocess(self, xzero, nobs, ddt=1., nrepl=2): + '''ddt : discrete delta t + + + + should be the same as an AR(1) + not tested yet + ''' + t = np.linspace(ddt, nobs*ddt, nobs) + #expnt = np.exp(-self.lambd * t) + expddt = np.exp(-self.lambd * ddt) + normrvs = np.random.normal(size=(nrepl,nobs)) + #do I need lfilter here AR(1) ? if mean reverting lag-coeff<1 + #lfilter doesn't handle 2d arrays, it does? + inc = self._exactconst(expddt) + self._exactstd(expddt) * normrvs + return signal.lfilter([1.], [1.,-expddt], inc) + + def exactdist(self, xzero, t): + expnt = np.exp(-self.lambd * t) + meant = xzero * expnt + self._exactconst(expnt) + stdt = self._exactstd(expnt) + return stats.norm(loc=meant, scale=stdt) + +class ArithmeticBrownian(AffineDiffusion): + ''' + :math:: + dx_t &= \\mu dt + \\sigma dW_t + ''' + + def __init__(self, xzero, mu, sigma): + self.xzero = xzero + self.mu = mu + self.sigma = sigma + + def _drift(self, *args, **kwds): + return self.mu + def _sig(self, *args, **kwds): + return self.sigma + def exactprocess(self, nobs, xzero=None, ddt=1., nrepl=2): + '''ddt : discrete delta t + + not tested yet + ''' + if xzero is None: + xzero = self.xzero + t = np.linspace(ddt, nobs*ddt, nobs) + normrvs = np.random.normal(size=(nrepl,nobs)) + inc = self._drift + self._sigma * np.sqrt(ddt) * normrvs + #return signal.lfilter([1.], [1.,-1], inc) + return xzero + np.cumsum(inc,1) + + def exactdist(self, xzero, t): + expnt = np.exp(-self.lambd * t) + meant = self._drift * t + stdt = self._sigma * np.sqrt(t) + return stats.norm(loc=meant, scale=stdt) + + +class GeometricBrownian(AffineDiffusion): + '''Geometric Brownian Motion + + :math:: + dx_t &= \\mu x_t dt + \\sigma x_t dW_t + + $x_t $ stochastic process of Geometric Brownian motion, + $\\mu $ is the drift, + $\\sigma $ is the Volatility, + $W$ is the Wiener process (Brownian motion). + + ''' + def __init__(self, xzero, mu, sigma): + self.xzero = xzero + self.mu = mu + self.sigma = sigma + + def _drift(self, *args, **kwds): + x = kwds['x'] + return self.mu * x + def _sig(self, *args, **kwds): + x = kwds['x'] + return self.sigma * x + + +class OUprocess(AffineDiffusion): + '''Ornstein-Uhlenbeck + + :math:: + dx_t&=\\lambda(\\mu - x_t)dt+\\sigma dW_t + + mean reverting process + + + + TODO: move exact higher up in class hierarchy + ''' + def __init__(self, xzero, mu, lambd, sigma): + self.xzero = xzero + self.lambd = lambd + self.mu = mu + self.sigma = sigma + + def _drift(self, *args, **kwds): + x = kwds['x'] + return self.lambd * (self.mu - x) + def _sig(self, *args, **kwds): + x = kwds['x'] + return self.sigma * x + def exact(self, xzero, t, normrvs): + #TODO: aggregate over time for process with observations for all t + # i.e. exact conditional distribution for discrete time increment + # -> exactprocess + #TODO: for single t, return stats.norm -> exactdist + expnt = np.exp(-self.lambd * t) + return (xzero * expnt + self.mu * (1-expnt) + + self.sigma * np.sqrt((1-expnt*expnt)/2./self.lambd) * normrvs) + + def exactprocess(self, xzero, nobs, ddt=1., nrepl=2): + '''ddt : discrete delta t + + should be the same as an AR(1) + not tested yet + # after writing this I saw the same use of lfilter in sitmo + ''' + t = np.linspace(ddt, nobs*ddt, nobs) + expnt = np.exp(-self.lambd * t) + expddt = np.exp(-self.lambd * ddt) + normrvs = np.random.normal(size=(nrepl,nobs)) + #do I need lfilter here AR(1) ? lfilter doesn't handle 2d arrays, it does? + from scipy import signal + #xzero * expnt + inc = ( self.mu * (1-expddt) + + self.sigma * np.sqrt((1-expddt*expddt)/2./self.lambd) * normrvs ) + + return signal.lfilter([1.], [1.,-expddt], inc) + + + def exactdist(self, xzero, t): + #TODO: aggregate over time for process with observations for all t + #TODO: for single t, return stats.norm + expnt = np.exp(-self.lambd * t) + meant = xzero * expnt + self.mu * (1-expnt) + stdt = self.sigma * np.sqrt((1-expnt*expnt)/2./self.lambd) + from scipy import stats + return stats.norm(loc=meant, scale=stdt) + + def fitls(self, data, dt): + '''assumes data is 1d, univariate time series + formula from sitmo + ''' + # brute force, no parameter estimation errors + nobs = len(data)-1 + exog = np.column_stack((np.ones(nobs), data[:-1])) + parest, res, rank, sing = np.linalg.lstsq(exog, data[1:], rcond=-1) + const, slope = parest + errvar = res/(nobs-2.) + lambd = -np.log(slope)/dt + sigma = np.sqrt(-errvar * 2.*np.log(slope)/ (1-slope**2)/dt) + mu = const / (1-slope) + return mu, lambd, sigma + + +class SchwartzOne(ExactDiffusion): + '''the Schwartz type 1 stochastic process + + :math:: + dx_t = \\kappa (\\mu - \\ln x_t) x_t dt + \\sigma x_tdW \\ + + The Schwartz type 1 process is a log of the Ornstein-Uhlenbeck stochastic + process. + + ''' + + def __init__(self, xzero, mu, kappa, sigma): + self.xzero = xzero + self.mu = mu + self.kappa = kappa + self.lambd = kappa #alias until I fix exact + self.sigma = sigma + + def _exactconst(self, expnt): + return (1-expnt) * (self.mu - self.sigma**2 / 2. /self.kappa) + + def _exactstd(self, expnt): + return self.sigma * np.sqrt((1-expnt*expnt)/2./self.kappa) + + def exactprocess(self, xzero, nobs, ddt=1., nrepl=2): + '''uses exact solution for log of process + ''' + lnxzero = np.log(xzero) + lnx = super(self.__class__, self).exactprocess(xzero, nobs, ddt=ddt, nrepl=nrepl) + return np.exp(lnx) + + def exactdist(self, xzero, t): + expnt = np.exp(-self.lambd * t) + #TODO: check this is still wrong, just guessing + meant = np.log(xzero) * expnt + self._exactconst(expnt) + stdt = self._exactstd(expnt) + return stats.lognorm(loc=meant, scale=stdt) + + def fitls(self, data, dt): + '''assumes data is 1d, univariate time series + formula from sitmo + ''' + # brute force, no parameter estimation errors + nobs = len(data)-1 + exog = np.column_stack((np.ones(nobs),np.log(data[:-1]))) + parest, res, rank, sing = np.linalg.lstsq(exog, np.log(data[1:]), rcond=-1) + const, slope = parest + errvar = res/(nobs-2.) #check denominator estimate, of sigma too low + kappa = -np.log(slope)/dt + sigma = np.sqrt(errvar * kappa / (1-np.exp(-2*kappa*dt))) + mu = const / (1-np.exp(-kappa*dt)) + sigma**2/2./kappa + if np.shape(mu)== (1,): mu = mu[0] # how to remove scalar array ? + if np.shape(sigma)== (1,): sigma = sigma[0] + #mu, kappa are good, sigma too small + return mu, kappa, sigma + + + +class BrownianBridge(object): + def __init__(self): + pass + + def simulate(self, x0, x1, nobs, nrepl=1, ddt=1., sigma=1.): + nobs=nobs+1 + dt = ddt*1./nobs + t = np.linspace(dt, ddt-dt, nobs) + t = np.linspace(dt, ddt, nobs) + wm = [t/ddt, 1-t/ddt] + #wmi = wm[1] + #wm1 = x1*wm[0] + wmi = 1-dt/(ddt-t) + wm1 = x1*(dt/(ddt-t)) + su = sigma* np.sqrt(t*(1-t)/ddt) + s = sigma* np.sqrt(dt*(ddt-t-dt)/(ddt-t)) + x = np.zeros((nrepl, nobs)) + x[:,0] = x0 + rvs = s*np.random.normal(size=(nrepl,nobs)) + for i in range(1,nobs): + x[:,i] = x[:,i-1]*wmi[i] + wm1[i] + rvs[:,i] + return x, t, su + + +class CompoundPoisson(object): + '''nobs iid compound poisson distributions, not a process in time + ''' + def __init__(self, lambd, randfn=np.random.normal): + if len(lambd) != len(randfn): + raise ValueError('lambd and randfn need to have the same number of elements') + + self.nobj = len(lambd) + self.randfn = randfn + self.lambd = np.asarray(lambd) + + def simulate(self, nobs, nrepl=1): + nobj = self.nobj + x = np.zeros((nrepl, nobs, nobj)) + N = np.random.poisson(self.lambd[None,None,:], size=(nrepl,nobs,nobj)) + for io in range(nobj): + randfnc = self.randfn[io] + + nc = N[:,:,io] + #print nrepl,nobs,nc + #xio = randfnc(size=(nrepl,nobs,np.max(nc))).cumsum(-1)[np.arange(nrepl)[:,None],np.arange(nobs),nc-1] + rvs = randfnc(size=(nrepl,nobs,np.max(nc))) + print('rvs.sum()', rvs.sum(), rvs.shape) + xio = rvs.cumsum(-1)[np.arange(nrepl)[:,None],np.arange(nobs),nc-1] + #print xio.shape + x[:,:,io] = xio + x[N==0] = 0 + return x, N + + + + + + + + + +''' +randn('state',100) % set the state of randn +T = 1; N = 500; dt = T/N; t = [dt:dt:1]; + +M = 1000; % M paths simultaneously +dW = sqrt(dt)*randn(M,N); % increments +W = cumsum(dW,2); % cumulative sum +U = exp(repmat(t,[M 1]) + 0.5*W); +Umean = mean(U); +plot([0,t],[1,Umean],'b-'), hold on % plot mean over M paths +plot([0,t],[ones(5,1),U(1:5,:)],'r--'), hold off % plot 5 individual paths +xlabel('t','FontSize',16) +ylabel('U(t)','FontSize',16,'Rotation',0,'HorizontalAlignment','right') +legend('mean of 1000 paths','5 individual paths',2) + +averr = norm((Umean - exp(9*t/8)),'inf') % sample error +''' + +if __name__ == '__main__': + doplot = 1 + nrepl = 1000 + examples = []#['all'] + + if 'all' in examples: + w = Diffusion() + + # Wiener Process + # ^^^^^^^^^^^^^^ + + ws = w.simulateW(1000, nrepl=nrepl) + if doplot: + plt.figure() + tmp = plt.plot(ws[0].T) + tmp = plt.plot(ws[0].mean(0), linewidth=2) + plt.title('Standard Brownian Motion (Wiener Process)') + + func = lambda t, W: np.exp(t + 0.5*W) + us = w.expectedsim(func, nobs=500, nrepl=nrepl) + if doplot: + plt.figure() + tmp = plt.plot(us[0].T) + tmp = plt.plot(us[1], linewidth=2) + plt.title('Brownian Motion - exp') + #plt.show() + averr = np.linalg.norm(us[1] - np.exp(9*us[2]/8.), np.inf) + print(averr) + #print us[1][:10] + #print np.exp(9.*us[2][:10]/8.) + + # Geometric Brownian + # ^^^^^^^^^^^^^^^^^^ + + gb = GeometricBrownian(xzero=1., mu=0.01, sigma=0.5) + gbs = gb.simEM(nobs=100, nrepl=100) + if doplot: + plt.figure() + tmp = plt.plot(gbs.T) + tmp = plt.plot(gbs.mean(0), linewidth=2) + plt.title('Geometric Brownian') + plt.figure() + tmp = plt.plot(np.log(gbs).T) + tmp = plt.plot(np.log(gbs.mean(0)), linewidth=2) + plt.title('Geometric Brownian - log-transformed') + + ab = ArithmeticBrownian(xzero=1, mu=0.05, sigma=1) + abs = ab.simEM(nobs=100, nrepl=100) + if doplot: + plt.figure() + tmp = plt.plot(abs.T) + tmp = plt.plot(abs.mean(0), linewidth=2) + plt.title('Arithmetic Brownian') + + # Ornstein-Uhlenbeck + # ^^^^^^^^^^^^^^^^^^ + + ou = OUprocess(xzero=2, mu=1, lambd=0.5, sigma=0.1) + ous = ou.simEM() + oue = ou.exact(1, 1, np.random.normal(size=(5,10))) + ou.exact(0, np.linspace(0,10,10/0.1), 0) + ou.exactprocess(0,10) + print(ou.exactprocess(0,10, ddt=0.1,nrepl=10).mean(0)) + #the following looks good, approaches mu + oues = ou.exactprocess(0,100, ddt=0.1,nrepl=100) + if doplot: + plt.figure() + tmp = plt.plot(oues.T) + tmp = plt.plot(oues.mean(0), linewidth=2) + plt.title('Ornstein-Uhlenbeck') + + # SchwartsOne + # ^^^^^^^^^^^ + + so = SchwartzOne(xzero=0, mu=1, kappa=0.5, sigma=0.1) + sos = so.exactprocess(0,50, ddt=0.1,nrepl=100) + print(sos.mean(0)) + print(np.log(sos.mean(0))) + doplot = 1 + if doplot: + plt.figure() + tmp = plt.plot(sos.T) + tmp = plt.plot(sos.mean(0), linewidth=2) + plt.title('Schwartz One') + print(so.fitls(sos[0,:],dt=0.1)) + sos2 = so.exactprocess(0,500, ddt=0.1,nrepl=5) + print('true: mu=1, kappa=0.5, sigma=0.1') + for i in range(5): + print(so.fitls(sos2[i],dt=0.1)) + + + + # Brownian Bridge + # ^^^^^^^^^^^^^^^ + + bb = BrownianBridge() + #bbs = bb.sample(x0, x1, nobs, nrepl=1, ddt=1., sigma=1.) + bbs, t, wm = bb.simulate(0, 0.5, 99, nrepl=500, ddt=1., sigma=0.1) + if doplot: + plt.figure() + tmp = plt.plot(bbs.T) + tmp = plt.plot(bbs.mean(0), linewidth=2) + plt.title('Brownian Bridge') + plt.figure() + plt.plot(wm,'r', label='theoretical') + plt.plot(bbs.std(0), label='simulated') + plt.title('Brownian Bridge - Variance') + plt.legend() + + # Compound Poisson + # ^^^^^^^^^^^^^^^^ + cp = CompoundPoisson([1,1], [np.random.normal,np.random.normal]) + cps = cp.simulate(nobs=20000,nrepl=3) + print(cps[0].sum(-1).sum(-1)) + print(cps[0].sum()) + print(cps[0].mean(-1).mean(-1)) + print(cps[0].mean()) + print(cps[1].size) + print(cps[1].sum()) + #Note Y = sum^{N} X is compound poisson of iid x, then + #E(Y) = E(N)*E(X) eg. eq. (6.37) page 385 in http://ee.stanford.edu/~gray/sp.html + + + #plt.show() diff --git a/statsmodels/sandbox/tsa/diffusion2.py b/statsmodels/sandbox/tsa/diffusion2.py new file mode 100644 index 0000000..a83d814 --- /dev/null +++ b/statsmodels/sandbox/tsa/diffusion2.py @@ -0,0 +1,502 @@ +""" Diffusion 2: jump diffusion, stochastic volatility, stochastic time + +Created on Tue Dec 08 15:03:49 2009 + +Author: josef-pktd following Meucci +License: BSD + +contains: + +CIRSubordinatedBrownian +Heston +IG +JumpDiffusionKou +JumpDiffusionMerton +NIG +VG + +References +---------- + +Attilio Meucci, Review of Discrete and Continuous Processes in Finance: Theory and Applications +Bloomberg Portfolio Research Paper No. 2009-02-CLASSROOM July 1, 2009 +http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1373102 + + + + +this is currently mostly a translation from matlab of +http://www.mathworks.com/matlabcentral/fileexchange/23554-review-of-discrete-and-continuous-processes-in-finance +license BSD: + +Copyright (c) 2008, Attilio Meucci +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in + the documentation and/or other materials provided with the distribution + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. + + + +TODO: + +* vectorize where possible +* which processes are exactly simulated by finite differences ? +* include or exclude (now) the initial observation ? +* convert to and merge with diffusion.py (part 1 of diffusions) +* which processes can be easily estimated ? + loglike or characteristic function ? +* tests ? check for possible index errors (random indices), graphs look ok +* adjust notation, variable names, more consistent, more pythonic +* delete a few unused lines, cleanup +* docstrings + + +random bug (showed up only once, need fuzz-testing to replicate) + File "../diffusion2.py", line 375, in + x = jd.simulate(mu,sigma,lambd,a,D,ts,nrepl) + File "../diffusion2.py", line 129, in simulate + jumps_ts[n] = CumS[Events] +IndexError: index out of bounds + +CumS is empty array, Events == -1 + + +""" + + +import numpy as np +#from scipy import stats # currently only uses np.random +import matplotlib.pyplot as plt + +class JumpDiffusionMerton(object): + ''' + + Example + ------- + mu=.00 # deterministic drift + sig=.20 # Gaussian component + l=3.45 # Poisson process arrival rate + a=0 # drift of log-jump + D=.2 # st.dev of log-jump + + X = JumpDiffusionMerton().simulate(mu,sig,lambd,a,D,ts,nrepl) + + plt.figure() + plt.plot(X.T) + plt.title('Merton jump-diffusion') + + + ''' + + def __init__(self): + pass + + + def simulate(self, m,s,lambd,a,D,ts,nrepl): + + T = ts[-1] # time points + # simulate number of jumps + n_jumps = np.random.poisson(lambd*T, size=(nrepl, 1)) + + jumps=[] + nobs=len(ts) + jumps=np.zeros((nrepl,nobs)) + for j in range(nrepl): + # simulate jump arrival time + t = T*np.random.rand(n_jumps[j])#,1) #uniform + t = np.sort(t,0) + + # simulate jump size + S = a + D*np.random.randn(n_jumps[j],1) + + # put things together + CumS = np.cumsum(S) + jumps_ts = np.zeros(nobs) + for n in range(nobs): + Events = np.sum(t<=ts[n])-1 + #print n, Events, CumS.shape, jumps_ts.shape + jumps_ts[n]=0 + if Events > 0: + jumps_ts[n] = CumS[Events] #TODO: out of bounds see top + + #jumps = np.column_stack((jumps, jumps_ts)) #maybe wrong transl + jumps[j,:] = jumps_ts + + + D_Diff = np.zeros((nrepl,nobs)) + for k in range(nobs): + Dt=ts[k] + if k>1: + Dt=ts[k]-ts[k-1] + D_Diff[:,k]=m*Dt + s*np.sqrt(Dt)*np.random.randn(nrepl) + + x = np.hstack((np.zeros((nrepl,1)),np.cumsum(D_Diff,1)+jumps)) + + return x + +class JumpDiffusionKou(object): + + def __init__(self): + pass + + def simulate(self, m,s,lambd,p,e1,e2,ts,nrepl): + + T=ts[-1] + # simulate number of jumps + N = np.random.poisson(lambd*T,size =(nrepl,1)) + + jumps=[] + nobs=len(ts) + jumps=np.zeros((nrepl,nobs)) + for j in range(nrepl): + # simulate jump arrival time + t=T*np.random.rand(N[j]) + t=np.sort(t) + + # simulate jump size + ww = np.random.binomial(1, p, size=(N[j])) + S = ww * np.random.exponential(e1, size=(N[j])) - \ + (1-ww) * np.random.exponential(e2, N[j]) + + # put things together + CumS = np.cumsum(S) + jumps_ts = np.zeros(nobs) + for n in range(nobs): + Events = sum(t<=ts[n])-1 + jumps_ts[n]=0 + if Events: + jumps_ts[n]=CumS[Events] + + jumps[j,:] = jumps_ts + + D_Diff = np.zeros((nrepl,nobs)) + for k in range(nobs): + Dt=ts[k] + if k>1: + Dt=ts[k]-ts[k-1] + + D_Diff[:,k]=m*Dt + s*np.sqrt(Dt)*np.random.normal(size=nrepl) + + x = np.hstack((np.zeros((nrepl,1)),np.cumsum(D_Diff,1)+jumps)) + return x + + +class VG(object): + '''variance gamma process + ''' + + def __init__(self): + pass + + def simulate(self, m,s,kappa,ts,nrepl): + + T=len(ts) + dXs = np.zeros((nrepl,T)) + for t in range(T): + dt=ts[1]-0 + if t>1: + dt = ts[t]-ts[t-1] + + #print dt/kappa + #TODO: check parameterization of gamrnd, checked looks same as np + + d_tau = kappa * np.random.gamma(dt/kappa,1.,size=(nrepl)) + #print s*np.sqrt(d_tau) + # this raises exception: + #dX = stats.norm.rvs(m*d_tau,(s*np.sqrt(d_tau))) + # np.random.normal requires scale >0 + dX = np.random.normal(loc=m*d_tau, scale=1e-6+s*np.sqrt(d_tau)) + + dXs[:,t] = dX + + x = np.cumsum(dXs,1) + return x + +class IG(object): + '''inverse-Gaussian ??? used by NIG + ''' + + def __init__(self): + pass + + def simulate(self, l,m,nrepl): + + N = np.random.randn(nrepl,1) + Y = N**2 + X = m + (.5*m*m/l)*Y - (.5*m/l)*np.sqrt(4*m*l*Y+m*m*(Y**2)) + U = np.random.rand(nrepl,1) + + ind = U>m/(X+m) + X[ind] = m*m/X[ind] + return X.ravel() + + +class NIG(object): + '''normal-inverse-Gaussian + ''' + + def __init__(self): + pass + + def simulate(self, th,k,s,ts,nrepl): + + T = len(ts) + DXs = np.zeros((nrepl,T)) + for t in range(T): + Dt=ts[1]-0 + if t>1: + Dt=ts[t]-ts[t-1] + + lfrac = 1/k*(Dt**2) + m = Dt + DS = IG().simulate(lfrac, m, nrepl) + N = np.random.randn(nrepl) + + DX = s*N*np.sqrt(DS) + th*DS + #print DS.shape, DX.shape, DXs.shape + DXs[:,t] = DX + + x = np.cumsum(DXs,1) + return x + +class Heston(object): + '''Heston Stochastic Volatility + ''' + + def __init__(self): + pass + + def simulate(self, m, kappa, eta,lambd,r, ts, nrepl,tratio=1.): + T = ts[-1] + nobs = len(ts) + dt = np.zeros(nobs) #/tratio + dt[0] = ts[0]-0 + dt[1:] = np.diff(ts) + + DXs = np.zeros((nrepl,nobs)) + + dB_1 = np.sqrt(dt) * np.random.randn(nrepl,nobs) + dB_2u = np.sqrt(dt) * np.random.randn(nrepl,nobs) + dB_2 = r*dB_1 + np.sqrt(1-r**2)*dB_2u + + vt = eta*np.ones(nrepl) + v=[] + dXs = np.zeros((nrepl,nobs)) + vts = np.zeros((nrepl,nobs)) + for t in range(nobs): + dv = kappa*(eta-vt)*dt[t]+ lambd*np.sqrt(vt)*dB_2[:,t] + dX = m*dt[t] + np.sqrt(vt*dt[t]) * dB_1[:,t] + vt = vt + dv + + vts[:,t] = vt + dXs[:,t] = dX + + x = np.cumsum(dXs,1) + return x, vts + +class CIRSubordinatedBrownian(object): + '''CIR subordinated Brownian Motion + ''' + + def __init__(self): + pass + + def simulate(self, m, kappa, T_dot,lambd,sigma, ts, nrepl): + T = ts[-1] + nobs = len(ts) + dtarr = np.zeros(nobs) #/tratio + dtarr[0] = ts[0]-0 + dtarr[1:] = np.diff(ts) + + DXs = np.zeros((nrepl,nobs)) + + dB = np.sqrt(dtarr) * np.random.randn(nrepl,nobs) + + yt = 1. + dXs = np.zeros((nrepl,nobs)) + dtaus = np.zeros((nrepl,nobs)) + y = np.zeros((nrepl,nobs)) + for t in range(nobs): + dt = dtarr[t] + dy = kappa*(T_dot-yt)*dt + lambd*np.sqrt(yt)*dB[:,t] + yt = np.maximum(yt+dy,1e-10) # keep away from zero ? + + dtau = np.maximum(yt*dt, 1e-6) + dX = np.random.normal(loc=m*dtau, scale=sigma*np.sqrt(dtau)) + + y[:,t] = yt + dtaus[:,t] = dtau + dXs[:,t] = dX + + tau = np.cumsum(dtaus,1) + x = np.cumsum(dXs,1) + return x, tau, y + +def schout2contank(a,b,d): + + th = d*b/np.sqrt(a**2-b**2) + k = 1/(d*np.sqrt(a**2-b**2)) + s = np.sqrt(d/np.sqrt(a**2-b**2)) + return th,k,s + + +if __name__ == '__main__': + + #Merton Jump Diffusion + #^^^^^^^^^^^^^^^^^^^^^ + + # grid of time values at which the process is evaluated + #("0" will be added, too) + nobs = 252.#1000 #252. + ts = np.linspace(1./nobs, 1., nobs) + nrepl=5 # number of simulations + mu=.010 # deterministic drift + sigma = .020 # Gaussian component + lambd = 3.45 *10 # Poisson process arrival rate + a=0 # drift of log-jump + D=.2 # st.dev of log-jump + jd = JumpDiffusionMerton() + x = jd.simulate(mu,sigma,lambd,a,D,ts,nrepl) + plt.figure() + plt.plot(x.T) #Todo + plt.title('Merton jump-diffusion') + + sigma = 0.2 + lambd = 3.45 + x = jd.simulate(mu,sigma,lambd,a,D,ts,nrepl) + plt.figure() + plt.plot(x.T) #Todo + plt.title('Merton jump-diffusion') + + #Kou jump diffusion + #^^^^^^^^^^^^^^^^^^ + + mu=.0 # deterministic drift + lambd=4.25 # Poisson process arrival rate + p=.5 # prob. of up-jump + e1=.2 # parameter of up-jump + e2=.3 # parameter of down-jump + sig=.2 # Gaussian component + + x = JumpDiffusionKou().simulate(mu,sig,lambd,p,e1,e2,ts,nrepl) + + plt.figure() + plt.plot(x.T) #Todo + plt.title('double exponential (Kou jump diffusion)') + + #variance-gamma + #^^^^^^^^^^^^^^ + mu = .1 # deterministic drift in subordinated Brownian motion + kappa = 1. #10. #1 # inverse for gamma shape parameter + sig = 0.5 #.2 # s.dev in subordinated Brownian motion + + x = VG().simulate(mu,sig,kappa,ts,nrepl) + plt.figure() + plt.plot(x.T) #Todo + plt.title('variance gamma') + + + #normal-inverse-Gaussian + #^^^^^^^^^^^^^^^^^^^^^^^ + + # (Schoutens notation) + al = 2.1 + be = 0 + de = 1 + # convert parameters to Cont-Tankov notation + th,k,s = schout2contank(al,be,de) + + x = NIG().simulate(th,k,s,ts,nrepl) + + plt.figure() + plt.plot(x.T) #Todo x-axis + plt.title('normal-inverse-Gaussian') + + #Heston Stochastic Volatility + #^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + m=.0 + kappa = .6 # 2*Kappa*Eta>Lambda^2 + eta = .3**2 + lambd =.25 + r = -.7 + T = 20. + nobs = 252.*T#1000 #252. + tsh = np.linspace(T/nobs, T, nobs) + x, vts = Heston().simulate(m,kappa, eta,lambd,r, tsh, nrepl, tratio=20.) + + plt.figure() + plt.plot(x.T) + plt.title('Heston Stochastic Volatility') + + plt.figure() + plt.plot(np.sqrt(vts).T) + plt.title('Heston Stochastic Volatility - CIR Vol.') + + plt.figure() + plt.subplot(2,1,1) + plt.plot(x[0]) + plt.title('Heston Stochastic Volatility process') + plt.subplot(2,1,2) + plt.plot(np.sqrt(vts[0])) + plt.title('CIR Volatility') + + + #CIR subordinated Brownian + #^^^^^^^^^^^^^^^^^^^^^^^^^ + m=.1 + sigma=.4 + + kappa=.6 # 2*Kappa*T_dot>Lambda^2 + T_dot=1 + lambd=1 + #T=252*10 + #dt=1/252 + #nrepl=2 + T = 10. + nobs = 252.*T#1000 #252. + tsh = np.linspace(T/nobs, T, nobs) + x, tau, y = CIRSubordinatedBrownian().simulate(m, kappa, T_dot,lambd,sigma, tsh, nrepl) + + plt.figure() + plt.plot(tsh, x.T) + plt.title('CIRSubordinatedBrownian process') + + plt.figure() + plt.plot(tsh, y.T) + plt.title('CIRSubordinatedBrownian - CIR') + + plt.figure() + plt.plot(tsh, tau.T) + plt.title('CIRSubordinatedBrownian - stochastic time ') + + plt.figure() + plt.subplot(2,1,1) + plt.plot(tsh, x[0]) + plt.title('CIRSubordinatedBrownian process') + plt.subplot(2,1,2) + plt.plot(tsh, y[0], label='CIR') + plt.plot(tsh, tau[0], label='stoch. time') + plt.legend(loc='upper left') + plt.title('CIRSubordinatedBrownian') + + #plt.show() diff --git a/statsmodels/sandbox/tsa/example_arma.py b/statsmodels/sandbox/tsa/example_arma.py new file mode 100644 index 0000000..0339215 --- /dev/null +++ b/statsmodels/sandbox/tsa/example_arma.py @@ -0,0 +1,406 @@ +'''trying to verify theoretical acf of arma + +explicit functions for autocovariance functions of ARIMA(1,1), MA(1), MA(2) +plus 3 functions from nitime.utils + +''' +from __future__ import print_function +from statsmodels.compat.python import range +import numpy as np +from numpy.testing import assert_array_almost_equal +import matplotlib.pyplot as plt + +import statsmodels.api as sm +from statsmodels.tsa.arima_process import arma_generate_sample, arma_impulse_response +from statsmodels.tsa.arima_process import arma_acovf, arma_acf, ARIMA +from statsmodels.tsa.stattools import acf, acovf +from statsmodels.graphics.tsaplots import plotacf + +ar = [1., -0.6] +#ar = [1., 0.] +ma = [1., 0.4] +#ma = [1., 0.4, 0.6] +#ma = [1., 0.] +mod = ''#'ma2' +x = arma_generate_sample(ar, ma, 5000) +x_acf = acf(x)[:10] +x_ir = arma_impulse_response(ar, ma) + +#print x_acf[:10] +#print x_ir[:10] +#irc2 = np.correlate(x_ir,x_ir,'full')[len(x_ir)-1:] +#print irc2[:10] +#print irc2[:10]/irc2[0] +#print irc2[:10-1] / irc2[1:10] +#print x_acf[:10-1] / x_acf[1:10] + +# detrend helper from matplotlib.mlab +def detrend(x, key=None): + if key is None or key=='constant': + return detrend_mean(x) + elif key=='linear': + return detrend_linear(x) + +def demean(x, axis=0): + "Return x minus its mean along the specified axis" + x = np.asarray(x) + if axis: + ind = [slice(None)] * axis + ind.append(np.newaxis) + return x - x.mean(axis)[ind] + return x - x.mean(axis) + +def detrend_mean(x): + "Return x minus the mean(x)" + return x - x.mean() + +def detrend_none(x): + "Return x: no detrending" + return x + +def detrend_linear(y): + "Return y minus best fit line; 'linear' detrending " + # This is faster than an algorithm based on linalg.lstsq. + x = np.arange(len(y), dtype=np.float_) + C = np.cov(x, y, bias=1) + b = C[0,1]/C[0,0] + a = y.mean() - b*x.mean() + return y - (b*x + a) + +def acovf_explicit(ar, ma, nobs): + '''add correlation of MA representation explicitely + + ''' + ir = arma_impulse_response(ar, ma) + acovfexpl = [np.dot(ir[:nobs-t], ir[t:nobs]) for t in range(10)] + return acovfexpl + +def acovf_arma11(ar, ma): + # ARMA(1,1) + # Florens et al page 278 + # wrong result ? + # new calculation bigJudge p 311, now the same + a = -ar[1] + b = ma[1] + #rho = [1.] + #rho.append((1-a*b)*(a-b)/(1.+a**2-2*a*b)) + rho = [(1.+b**2+2*a*b)/(1.-a**2)] + rho.append((1+a*b)*(a+b)/(1.-a**2)) + for _ in range(8): + last = rho[-1] + rho.append(a*last) + return np.array(rho) + +# print acf11[:10] +# print acf11[:10] /acf11[0] + +def acovf_ma2(ma): + # MA(2) + # from Greene p616 (with typo), Florens p280 + b1 = -ma[1] + b2 = -ma[2] + rho = np.zeros(10) + rho[0] = (1 + b1**2 + b2**2) + rho[1] = (-b1 + b1*b2) + rho[2] = -b2 + return rho + +# rho2 = rho/rho[0] +# print rho2 +# print irc2[:10]/irc2[0] + +def acovf_ma1(ma): + # MA(1) + # from Greene p616 (with typo), Florens p280 + b = -ma[1] + rho = np.zeros(10) + rho[0] = (1 + b**2) + rho[1] = -b + return rho + +# rho2 = rho/rho[0] +# print rho2 +# print irc2[:10]/irc2[0] + + +ar1 = [1., -0.8] +ar0 = [1., 0.] +ma1 = [1., 0.4] +ma2 = [1., 0.4, 0.6] +ma0 = [1., 0.] + +comparefn = dict( + [('ma1', acovf_ma1), + ('ma2', acovf_ma2), + ('arma11', acovf_arma11), + ('ar1', acovf_arma11)]) + +cases = [('ma1', (ar0, ma1)), + ('ma2', (ar0, ma2)), + ('arma11', (ar1, ma1)), + ('ar1', (ar1, ma0))] + +for c, args in cases: + + ar, ma = args + print('') + print(c, ar, ma) + myacovf = arma_acovf(ar, ma, nobs=10) + myacf = arma_acf(ar, ma, nobs=10) + if c[:2]=='ma': + othacovf = comparefn[c](ma) + else: + othacovf = comparefn[c](ar, ma) + print(myacovf[:5]) + print(othacovf[:5]) + #something broke again, + #for high persistence case eg ar=0.99, nobs of IR has to be large + #made changes to arma_acovf + assert_array_almost_equal(myacovf, othacovf,10) + assert_array_almost_equal(myacf, othacovf/othacovf[0],10) + + +#from nitime.utils +def ar_generator(N=512, sigma=1.): + # this generates a signal u(n) = a1*u(n-1) + a2*u(n-2) + ... + v(n) + # where v(n) is a stationary stochastic process with zero mean + # and variance = sigma + # this sequence is shown to be estimated well by an order 8 AR system + taps = np.array([2.7607, -3.8106, 2.6535, -0.9238]) + v = np.random.normal(size=N, scale=sigma**0.5) + u = np.zeros(N) + P = len(taps) + for l in range(P): + u[l] = v[l] + np.dot(u[:l][::-1], taps[:l]) + for l in range(P,N): + u[l] = v[l] + np.dot(u[l-P:l][::-1], taps) + return u, v, taps + +#JP: small differences to using np.correlate, because assumes mean(s)=0 +# denominator is N, not N-k, biased estimator +# misnomer: (biased) autocovariance not autocorrelation +#from nitime.utils +def autocorr(s, axis=-1): + """Returns the autocorrelation of signal s at all lags. Adheres to the +definition r(k) = E{s(n)s*(n-k)} where E{} is the expectation operator. +""" + N = s.shape[axis] + S = np.fft.fft(s, n=2*N-1, axis=axis) + sxx = np.fft.ifft(S*S.conjugate(), axis=axis).real[:N] + return sxx/N + +#JP: with valid this returns a single value, if x and y have same length +# e.g. norm_corr(x, x) +# using std subtracts mean, but correlate doesn't, requires means are exactly 0 +# biased, no n-k correction for laglength +#from nitime.utils +def norm_corr(x,y,mode = 'valid'): + """Returns the correlation between two ndarrays, by calling np.correlate in +'same' mode and normalizing the result by the std of the arrays and by +their lengths. This results in a correlation = 1 for an auto-correlation""" + + return ( np.correlate(x,y,mode) / + (np.std(x)*np.std(y)*(x.shape[-1])) ) + + + +# from matplotlib axes.py +# note: self is axis +def pltacorr(self, x, **kwargs): + r""" + call signature:: + + acorr(x, normed=True, detrend=detrend_none, usevlines=True, + maxlags=10, **kwargs) + + Plot the autocorrelation of *x*. If *normed* = *True*, + normalize the data by the autocorrelation at 0-th lag. *x* is + detrended by the *detrend* callable (default no normalization). + + Data are plotted as ``plot(lags, c, **kwargs)`` + + Return value is a tuple (*lags*, *c*, *line*) where: + + - *lags* are a length 2*maxlags+1 lag vector + + - *c* is the 2*maxlags+1 auto correlation vector + + - *line* is a :class:`~matplotlib.lines.Line2D` instance + returned by :meth:`plot` + + The default *linestyle* is None and the default *marker* is + ``'o'``, though these can be overridden with keyword args. + The cross correlation is performed with + :func:`numpy.correlate` with *mode* = 2. + + If *usevlines* is *True*, :meth:`~matplotlib.axes.Axes.vlines` + rather than :meth:`~matplotlib.axes.Axes.plot` is used to draw + vertical lines from the origin to the acorr. Otherwise, the + plot style is determined by the kwargs, which are + :class:`~matplotlib.lines.Line2D` properties. + + *maxlags* is a positive integer detailing the number of lags + to show. The default value of *None* will return all + :math:`2 \mathrm{len}(x) - 1` lags. + + The return value is a tuple (*lags*, *c*, *linecol*, *b*) + where + + - *linecol* is the + :class:`~matplotlib.collections.LineCollection` + + - *b* is the *x*-axis. + + .. seealso:: + + :meth:`~matplotlib.axes.Axes.plot` or + :meth:`~matplotlib.axes.Axes.vlines` + For documentation on valid kwargs. + + **Example:** + + :func:`~matplotlib.pyplot.xcorr` above, and + :func:`~matplotlib.pyplot.acorr` below. + + **Example:** + + .. plot:: mpl_examples/pylab_examples/xcorr_demo.py + """ + return self.xcorr(x, x, **kwargs) + +def pltxcorr(self, x, y, normed=True, detrend=detrend_none, + usevlines=True, maxlags=10, **kwargs): + """ + call signature:: + + def xcorr(self, x, y, normed=True, detrend=detrend_none, + usevlines=True, maxlags=10, **kwargs): + + Plot the cross correlation between *x* and *y*. If *normed* = + *True*, normalize the data by the cross correlation at 0-th + lag. *x* and y are detrended by the *detrend* callable + (default no normalization). *x* and *y* must be equal length. + + Data are plotted as ``plot(lags, c, **kwargs)`` + + Return value is a tuple (*lags*, *c*, *line*) where: + + - *lags* are a length ``2*maxlags+1`` lag vector + + - *c* is the ``2*maxlags+1`` auto correlation vector + + - *line* is a :class:`~matplotlib.lines.Line2D` instance + returned by :func:`~matplotlib.pyplot.plot`. + + The default *linestyle* is *None* and the default *marker* is + 'o', though these can be overridden with keyword args. The + cross correlation is performed with :func:`numpy.correlate` + with *mode* = 2. + + If *usevlines* is *True*: + + :func:`~matplotlib.pyplot.vlines` + rather than :func:`~matplotlib.pyplot.plot` is used to draw + vertical lines from the origin to the xcorr. Otherwise the + plotstyle is determined by the kwargs, which are + :class:`~matplotlib.lines.Line2D` properties. + + The return value is a tuple (*lags*, *c*, *linecol*, *b*) + where *linecol* is the + :class:`matplotlib.collections.LineCollection` instance and + *b* is the *x*-axis. + + *maxlags* is a positive integer detailing the number of lags to show. + The default value of *None* will return all ``(2*len(x)-1)`` lags. + + **Example:** + + :func:`~matplotlib.pyplot.xcorr` above, and + :func:`~matplotlib.pyplot.acorr` below. + + **Example:** + + .. plot:: mpl_examples/pylab_examples/xcorr_demo.py + """ + + + Nx = len(x) + if Nx!=len(y): + raise ValueError('x and y must be equal length') + + x = detrend(np.asarray(x)) + y = detrend(np.asarray(y)) + + c = np.correlate(x, y, mode=2) + + if normed: c/= np.sqrt(np.dot(x,x) * np.dot(y,y)) + + if maxlags is None: maxlags = Nx - 1 + + if maxlags >= Nx or maxlags < 1: + raise ValueError('maxlags must be None or strictly ' + 'positive < %d' % Nx) + + lags = np.arange(-maxlags,maxlags+1) + c = c[Nx-1-maxlags:Nx+maxlags] + + + if usevlines: + a = self.vlines(lags, [0], c, **kwargs) + b = self.axhline(**kwargs) + kwargs.setdefault('marker', 'o') + kwargs.setdefault('linestyle', 'None') + d = self.plot(lags, c, **kwargs) + else: + + kwargs.setdefault('marker', 'o') + kwargs.setdefault('linestyle', 'None') + a, = self.plot(lags, c, **kwargs) + b = None + return lags, c, a, b + + + + + + +arrvs = ar_generator() +##arma = ARIMA() +##res = arma.fit(arrvs[0], 4, 0) +arma = ARIMA(arrvs[0]) +res = arma.fit((4,0, 0)) + +print(res[0]) + +acf1 = acf(arrvs[0]) +acovf1b = acovf(arrvs[0], unbiased=False) +acf2 = autocorr(arrvs[0]) +acf2m = autocorr(arrvs[0]-arrvs[0].mean()) +print(acf1[:10]) +print(acovf1b[:10]) +print(acf2[:10]) +print(acf2m[:10]) + + +x = arma_generate_sample([1.0, -0.8], [1.0], 500) +print(acf(x)[:20]) +print(sm.regression.yule_walker(x, 10)) + +#ax = plt.axes() +plt.plot(x) +#plt.show() + +plt.figure() +pltxcorr(plt,x,x) +plt.figure() +pltxcorr(plt,x,x, usevlines=False) +plt.figure() +#FIXME: plotacf was moved to graphics/tsaplots.py, and interface changed +plotacf(plt, acf1[:20], np.arange(len(acf1[:20])), usevlines=True) +plt.figure() +ax = plt.subplot(211) +plotacf(ax, acf1[:20], usevlines=True) +ax = plt.subplot(212) +plotacf(ax, acf1[:20], np.arange(len(acf1[:20])), usevlines=False) + +#plt.show() diff --git a/statsmodels/sandbox/tsa/examples/ex_mle_arma.py b/statsmodels/sandbox/tsa/examples/ex_mle_arma.py new file mode 100644 index 0000000..47f688c --- /dev/null +++ b/statsmodels/sandbox/tsa/examples/ex_mle_arma.py @@ -0,0 +1,141 @@ +# -*- coding: utf-8 -*- +""" +TODO: broken because of changes to arguments and import paths +fixing this needs a closer look + +Created on Thu Feb 11 23:41:53 2010 +Author: josef-pktd +copyright: Simplified BSD see license.txt +""" +from __future__ import print_function +import numpy as np + +import numdifftools as ndt + +from statsmodels.sandbox import tsa +from statsmodels.tsa.arma_mle import Arma # local import +from statsmodels.tsa.arima_process import arma_generate_sample + +examples = ['arma'] +if 'arma' in examples: + + print("\nExample 1") + print('----------') + ar = [1.0, -0.8] + ma = [1.0, 0.5] + y1 = arma_generate_sample(ar,ma,1000,0.1) + y1 -= y1.mean() #no mean correction/constant in estimation so far + + arma1 = Arma(y1) + arma1.nar = 1 + arma1.nma = 1 + arma1res = arma1.fit_mle(order=(1,1), method='fmin') + print(arma1res.params) + + #Warning need new instance otherwise results carry over + arma2 = Arma(y1) + arma2.nar = 1 + arma2.nma = 1 + res2 = arma2.fit(method='bfgs') + print(res2.params) + print(res2.model.hessian(res2.params)) + print(ndt.Hessian(arma1.loglike, stepMax=1e-2)(res2.params)) + arest = tsa.arima.ARIMA(y1) + resls = arest.fit((1,0,1)) + print(resls[0]) + print(resls[1]) + + + + print('\nparameter estimate - comparing methods') + print('---------------------------------------') + print('parameter of DGP ar(1), ma(1), sigma_error') + print([-0.8, 0.5, 0.1]) + print('mle with fmin') + print(arma1res.params) + print('mle with bfgs') + print(res2.params) + print('cond. least squares uses optim.leastsq ?') + errls = arest.error_estimate + print(resls[0], np.sqrt(np.dot(errls,errls)/errls.shape[0])) + + err = arma1.geterrors(res2.params) + print('cond least squares parameter cov') + #print(np.dot(err,err)/err.shape[0] * resls[1]) + #errls = arest.error_estimate + print(np.dot(errls,errls)/errls.shape[0] * resls[1]) +# print('fmin hessian') +# print(arma1res.model.optimresults['Hopt'][:2,:2]) + print('bfgs hessian') + print(res2.model.optimresults['Hopt'][:2,:2]) + print('numdifftools inverse hessian') + print(-np.linalg.inv(ndt.Hessian(arma1.loglike, stepMax=1e-2)(res2.params))[:2,:2]) + + print('\nFitting Arma(1,1) to squared data') + arma3 = Arma(y1**2) + res3 = arma3.fit(method='bfgs') + print(res3.params) + + print('\nFitting Arma(3,3) to data from DGP Arma(1,1)') + arma4 = Arma(y1) + arma4.nar = 3 + arma4.nma = 3 + #res4 = arma4.fit(method='bfgs') + res4 = arma4.fit(start_params=[-0.5, -0.1,-0.1,0.2,0.1,0.1,0.5]) + print(res4.params) + print('numdifftools inverse hessian') + pcov = -np.linalg.inv(ndt.Hessian(arma4.loglike, stepMax=1e-2)(res4.params)) + #print(pcov) + print('standard error of parameter estimate from Hessian') + pstd = np.sqrt(np.diag(pcov)) + print(pstd) + print('t-values') + print(res4.params/pstd) + print('eigenvalues of pcov:') + print(np.linalg.eigh(pcov)[0]) + print('sometimes they are negative') + + + print("\nExample 2 - DGP is Arma(3,3)") + print('-----------------------------') + ar = [1.0, -0.6, -0.2, -0.1] + ma = [1.0, 0.5, 0.1, 0.1] + y2 = arest.generate_sample(ar,ma,1000,0.1) + y2 -= y2.mean() #no mean correction/constant in estimation so far + + + print('\nFitting Arma(3,3) to data from DGP Arma(3,3)') + arma4 = Arma(y2) + arma4.nar = 3 + arma4.nma = 3 + #res4 = arma4.fit(method='bfgs') + print('\ntrue parameters') + print('ar', ar[1:]) + print('ma', ma[1:]) + res4 = arma4.fit(start_params=[-0.5, -0.1,-0.1,0.2,0.1,0.1,0.5]) + print(res4.params) + print('numdifftools inverse hessian') + pcov = -np.linalg.inv(ndt.Hessian(arma4.loglike, stepMax=1e-2)(res4.params)) + #print(pcov) + print('standard error of parameter estimate from Hessian') + pstd = np.sqrt(np.diag(pcov)) + print(pstd) + print('t-values') + print(res4.params/pstd) + print('eigenvalues of pcov:') + print(np.linalg.eigh(pcov)[0]) + print('sometimes they are negative') + + arma6 = Arma(y2) + arma6.nar = 3 + arma6.nma = 3 + res6 = arma6.fit(start_params=[-0.5, -0.1,-0.1,0.2,0.1,0.1,0.5], + method='bfgs') + print('\nmle with bfgs') + print(res6.params) + print('pstd with bfgs hessian') + hopt = res6.model.optimresults['Hopt'] + print(np.sqrt(np.diag(hopt))) + + #fmin estimates for coefficients in ARMA(3,3) look good + #but not inverse Hessian, sometimes negative values for variance diff --git a/statsmodels/sandbox/tsa/examples/ex_mle_garch.py b/statsmodels/sandbox/tsa/examples/ex_mle_garch.py new file mode 100644 index 0000000..0aba388 --- /dev/null +++ b/statsmodels/sandbox/tsa/examples/ex_mle_garch.py @@ -0,0 +1,332 @@ +# -*- coding: utf-8 -*- +""" +Created on Fri Feb 12 01:01:50 2010 + +Author: josef-pktd + +latest result +------------- +all are very close +garch0 has different parameterization of constant +ordering of parameters is different + + +seed 2780185 +h.shape (2000,) +Optimization terminated successfully. + Current function value: 2093.813397 + Iterations: 387 + Function evaluations: 676 +ggres.params [-0.6146253 0.1914537 0.01039355 0.78802188] +Optimization terminated successfully. + Current function value: 2093.972953 + Iterations: 201 + Function evaluations: 372 +ggres0.params [-0.61537527 0.19635128 4.00706058] +Warning: Desired error not necessarily achieveddue to precision loss + Current function value: 2093.972953 + Iterations: 51 + Function evaluations: 551 + Gradient evaluations: 110 +ggres0.params [-0.61537855 0.19635265 4.00694669] +Optimization terminated successfully. + Current function value: 2093.751420 + Iterations: 103 + Function evaluations: 187 +[ 0.78671519 0.19692222 0.61457171] +-2093.75141963 + +Final Estimate: + LLH: 2093.750 norm LLH: 2.093750 + omega alpha1 beta1 +0.7867438 0.1970437 0.6145467 + +long run variance comparison +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +R +>>> 0.7867438/(1- 0.1970437- 0.6145467) +4.1757097302897526 +Garch (gjr) asymetric, longrun var ? +>>> 1/(1-0.6146253 - 0.1914537 - 0.01039355) * 0.78802188 +4.2937548579245242 +>>> 1/(1-0.6146253 - 0.1914537 + 0.01039355) * 0.78802188 +3.8569053452140345 +Garch0 +>>> (1-0.61537855 - 0.19635265) * 4.00694669 +0.7543830449902722 +>>> errgjr4.var() #for different random seed +4.0924199964716106 + +todo: add code and verify, check for longer lagpolys + +""" + +from __future__ import print_function +import numpy as np + +from scipy import optimize + +import matplotlib.pyplot as plt + +from statsmodels.sandbox import tsa +from statsmodels.sandbox.tsa.garch import (generate_kindofgarch, + generate_garch, generate_gjrgarch, + garchplot, Garch, Garch0, + loglike_GARCH11, Arma, miso_lfilter) + + +nobs = 1000 +examples = ['garch', 'rpyfit'] +if 'garch' in examples: + err,h = generate_kindofgarch(nobs, [1.0, -0.95], [1.0, 0.1], mu=0.5) + plt.figure() + plt.subplot(211) + plt.plot(err) + plt.subplot(212) + plt.plot(h) + #plt.show() + + seed = 3842774 #91234 #8837708 + seed = np.random.randint(9999999) + print('seed', seed) + np.random.seed(seed) + ar1 = -0.9 + err,h = generate_garch(nobs, [1.0, ar1], [1.0, 0.50], mu=0.0,scale=0.1) +# plt.figure() +# plt.subplot(211) +# plt.plot(err) +# plt.subplot(212) +# plt.plot(h) +# plt.figure() +# plt.subplot(211) +# plt.plot(err[-400:]) +# plt.subplot(212) +# plt.plot(h[-400:]) + #plt.show() + garchplot(err, h) + garchplot(err[-400:], h[-400:]) + + + np.random.seed(seed) + errgjr,hgjr, etax = generate_gjrgarch(nobs, [1.0, ar1], + [[1,0],[0.5,0]], mu=0.0,scale=0.1) + garchplot(errgjr[:nobs], hgjr[:nobs], 'GJR-GARCH(1,1) Simulation - symmetric') + garchplot(errgjr[-400:nobs], hgjr[-400:nobs], 'GJR-GARCH(1,1) Simulation - symmetric') + + np.random.seed(seed) + errgjr2,hgjr2, etax = generate_gjrgarch(nobs, [1.0, ar1], + [[1,0],[0.1,0.9]], mu=0.0,scale=0.1) + garchplot(errgjr2[:nobs], hgjr2[:nobs], 'GJR-GARCH(1,1) Simulation') + garchplot(errgjr2[-400:nobs], hgjr2[-400:nobs], 'GJR-GARCH(1,1) Simulation') + + np.random.seed(seed) + errgjr3,hgjr3, etax3 = generate_gjrgarch(nobs, [1.0, ar1], + [[1,0],[0.1,0.9],[0.1,0.9],[0.1,0.9]], mu=0.0,scale=0.1) + garchplot(errgjr3[:nobs], hgjr3[:nobs], 'GJR-GARCH(1,3) Simulation') + garchplot(errgjr3[-400:nobs], hgjr3[-400:nobs], 'GJR-GARCH(1,3) Simulation') + + np.random.seed(seed) + errgjr4,hgjr4, etax4 = generate_gjrgarch(nobs, [1.0, ar1], + [[1., 1,0],[0, 0.1,0.9],[0, 0.1,0.9],[0, 0.1,0.9]], + mu=0.0,scale=0.1) + garchplot(errgjr4[:nobs], hgjr4[:nobs], 'GJR-GARCH(1,3) Simulation') + garchplot(errgjr4[-400:nobs], hgjr4[-400:nobs], 'GJR-GARCH(1,3) Simulation') + + varinno = np.zeros(100) + varinno[0] = 1. + errgjr5,hgjr5, etax5 = generate_gjrgarch(100, [1.0, -0.], + [[1., 1,0],[0, 0.1,0.8],[0, 0.05,0.7],[0, 0.01,0.6]], + mu=0.0,scale=0.1, varinnovation=varinno) + garchplot(errgjr5[:20], hgjr5[:20], 'GJR-GARCH(1,3) Simulation') + #garchplot(errgjr4[-400:nobs], hgjr4[-400:nobs], 'GJR-GARCH(1,3) Simulation') + + +#plt.show() +seed = np.random.randint(9999999) # 9188410 +print('seed', seed) + +x = np.arange(20).reshape(10,2) +x3 = np.column_stack((np.ones((x.shape[0],1)),x)) +y, inp = miso_lfilter([1., 0],np.array([[-2.0,3,1],[0.0,0.0,0]]),x3) + +nobs = 1000 +warmup = 1000 +np.random.seed(seed) +ar = [1.0, -0.7]#7, -0.16, -0.1] +#ma = [[1., 1, 0],[0, 0.6,0.1],[0, 0.1,0.1],[0, 0.1,0.1]] +ma = [[1., 0, 0],[0, 0.8,0.0]] #,[0, 0.9,0.0]] +# errgjr4,hgjr4, etax4 = generate_gjrgarch(warmup+nobs, [1.0, -0.99], +# [[1., 1, 0],[0, 0.6,0.1],[0, 0.1,0.1],[0, 0.1,0.1]], +# mu=0.2, scale=0.25) + +errgjr4,hgjr4, etax4 = generate_gjrgarch(warmup+nobs, ar, ma, + mu=0.4, scale=1.01) +errgjr4,hgjr4, etax4 = errgjr4[warmup:], hgjr4[warmup:], etax4[warmup:] +garchplot(errgjr4[:nobs], hgjr4[:nobs], 'GJR-GARCH(1,3) Simulation - DGP') +ggmod = Garch(errgjr4-errgjr4.mean())#hgjr4[:nobs])#-hgjr4.mean()) #errgjr4) +ggmod.nar = 1 +ggmod.nma = 1 +ggmod._start_params = np.array([-0.6, 0.1, 0.2, 0.0]) +ggres = ggmod.fit(start_params=np.array([-0.6, 0.1, 0.2, 0.0]), maxiter=1000) +print('ggres.params', ggres.params) +garchplot(ggmod.errorsest, ggmod.h, title='Garch estimated') + +ggmod0 = Garch0(errgjr4-errgjr4.mean())#hgjr4[:nobs])#-hgjr4.mean()) #errgjr4) +ggmod0.nar = 1 +ggmod.nma = 1 +start_params = np.array([-0.6, 0.2, 0.1]) +ggmod0._start_params = start_params #np.array([-0.6, 0.1, 0.2, 0.0]) +ggres0 = ggmod0.fit(start_params=start_params, maxiter=2000) +print('ggres0.params', ggres0.params) + +ggmod0 = Garch0(errgjr4-errgjr4.mean())#hgjr4[:nobs])#-hgjr4.mean()) #errgjr4) +ggmod0.nar = 1 +ggmod.nma = 1 +start_params = np.array([-0.6, 0.2, 0.1]) +ggmod0._start_params = start_params #np.array([-0.6, 0.1, 0.2, 0.0]) +ggres0 = ggmod0.fit(start_params=start_params, method='bfgs', maxiter=2000) +print('ggres0.params', ggres0.params) + + +g11res = optimize.fmin(lambda params: -loglike_GARCH11(params, errgjr4-errgjr4.mean())[0], [0.93, 0.9, 0.2]) +print(g11res) +llf = loglike_GARCH11(g11res, errgjr4-errgjr4.mean()) +print(llf[0]) + +if 'rpyfit' in examples: + from rpy import r + r.library('fGarch') + f = r.formula('~garch(1, 1)') + fit = r.garchFit(f, data = errgjr4-errgjr4.mean(), include_mean=False) + +if 'rpysim' in examples: + from rpy import r + f = r.formula('~garch(1, 1)') + #fit = r.garchFit(f, data = errgjr4) + x = r.garchSim( n = 500) + print('R acf', tsa.acf(np.power(x,2))[:15]) + arma3 = Arma(np.power(x,2)) + arma3res = arma3.fit(start_params=[-0.2,0.1,0.5],maxiter=5000) + print(arma3res.params) + arma3b = Arma(np.power(x,2)) + arma3bres = arma3b.fit(start_params=[-0.2,0.1,0.5],maxiter=5000, method='bfgs') + print(arma3bres.params) + + xr = r.garchSim( n = 100) + + x = np.asarray(xr) + ggmod = Garch(x-x.mean()) + ggmod.nar = 1 + ggmod.nma = 1 + ggmod._start_params = np.array([-0.6, 0.1, 0.2, 0.0]) + ggres = ggmod.fit(start_params=np.array([-0.6, 0.1, 0.2, 0.0]), maxiter=1000) + print('ggres.params', ggres.params) + + g11res = optimize.fmin(lambda params: -loglike_GARCH11(params, x-x.mean())[0], [0.6, 0.6, 0.2]) + print(g11res) + llf = loglike_GARCH11(g11res, x-x.mean()) + print(llf[0]) + + garchplot(ggmod.errorsest, ggmod.h, title='Garch estimated') + fit = r.garchFit(f, data = x-x.mean(), include_mean=False, trace=False) + print(r.summary(fit)) + +'''based on R default simulation +model = list(omega = 1e-06, alpha = 0.1, beta = 0.8) +nobs = 1000 +(with nobs=500, gjrgarch doesn't do well + +>>> ggres = ggmod.fit(start_params=np.array([-0.6, 0.1, 0.2, 0.0]), maxiter=1000) +Optimization terminated successfully. + Current function value: -448.861335 + Iterations: 385 + Function evaluations: 690 +>>> print('ggres.params', ggres.params +ggres.params [ -7.75090330e-01 1.57714749e-01 -9.60223930e-02 8.76021411e-07] +rearranged +8.76021411e-07 1.57714749e-01(-9.60223930e-02) 7.75090330e-01 + +>>> print(g11res +[ 2.97459808e-06 7.83128600e-01 2.41110860e-01] +>>> llf = loglike_GARCH11(g11res, x-x.mean()) +>>> print(llf[0] +442.603541936 + +Log Likelihood: + -448.9376 normalized: -4.489376 + omega alpha1 beta1 +1.01632e-06 1.02802e-01 7.57537e-01 +''' + + +''' the following is for errgjr4-errgjr4.mean() +ggres.params [-0.54510407 0.22723132 0.06482633 0.82325803] +Final Estimate: + LLH: 2065.56 norm LLH: 2.06556 + mu omega alpha1 beta1 +0.07229732 0.83069480 0.26313883 0.53986167 + +ggres.params [-0.50779163 0.2236606 0.00700036 1.154832 +Final Estimate: + LLH: 2116.084 norm LLH: 2.116084 + mu omega alpha1 beta1 +-4.759227e-17 1.145404e+00 2.288348e-01 5.085949e-01 + +run3 +DGP +0.4/?? 0.8 0.7 +gjrgarch: +ggres.params [-0.45196579 0.2569641 0.02201904 1.11942636] +rearranged +const/omega ma1/alpha1 ar1/beta1 +1.11942636 0.2569641(+0.02201904) 0.45196579 +g11: +[ 1.10262688 0.26680468 0.45724957] +-2055.73912687 +R: +Final Estimate: + LLH: 2055.738 norm LLH: 2.055738 + mu omega alpha1 beta1 +-1.665226e-17 1.102396e+00 2.668712e-01 4.573224e-01 +fit = r.garchFit(f, data = errgjr4-errgjr4.mean()) +rpy.RPy_RException: Error in solve.default(fit$hessian) : + Lapack routine dgesv: system is exactly singular + +run4 +DGP: +mu=0.4, scale=1.01 +ma = [[1., 0, 0],[0, 0.8,0.0]], ar = [1.0, -0.7] +maybe something wrong with simulation + +gjrgarch +ggres.params [-0.50554663 0.24449867 -0.00521004 1.00796791] +rearranged +1.00796791 0.24449867(-0.00521004) 0.50554663 +garch11: +[ 1.01258264 0.24149155 0.50479994] +-2056.3877404 +R include_constant=False +Final Estimate: + LLH: 2056.397 norm LLH: 2.056397 + omega alpha1 beta1 +1.0123560 0.2409589 0.5049154 +''' + + +erro,ho, etaxo = generate_gjrgarch(20, ar, ma, mu=0.04, scale=0.01, + varinnovation = np.ones(20)) + +if 'sp500' in examples: + import tabular as tb + import scikits.timeseries as ts + + a = tb.loadSV(r'C:\Josef\work-oth\gspc_table.csv') + + s = ts.time_series(a[0]['Close'][::-1], + dates=ts.date_array(a[0]['Date'][::-1],freq="D")) + + sp500 = a[0]['Close'][::-1] + sp500r = np.diff(np.log(sp500)) + + +#plt.show() diff --git a/statsmodels/sandbox/tsa/examples/example_var.py b/statsmodels/sandbox/tsa/examples/example_var.py new file mode 100644 index 0000000..f667df5 --- /dev/null +++ b/statsmodels/sandbox/tsa/examples/example_var.py @@ -0,0 +1,54 @@ +""" +Look at some macro plots, then do some VARs and IRFs. +""" + +import numpy as np +import statsmodels.api as sm +import scikits.timeseries as ts +import scikits.timeseries.lib.plotlib as tplt + +data = sm.datasets.macrodata.load(as_pandas=False) +data = data.data + + +### Create Timeseries Representations of a few vars + +dates = ts.date_array(start_date=ts.Date('Q', year=1959, quarter=1), + end_date=ts.Date('Q', year=2009, quarter=3)) + +ts_data = data[['realgdp','realcons','cpi']].view(float).reshape(-1,3) +ts_data = np.column_stack((ts_data, (1 - data['unemp']/100) * data['pop'])) +ts_series = ts.time_series(ts_data, dates) + + +fig = tplt.tsfigure() +fsp = fig.add_tsplot(221) +fsp.tsplot(ts_series[:,0],'-') +fsp.set_title("Real GDP") +fsp = fig.add_tsplot(222) +fsp.tsplot(ts_series[:,1],'r-') +fsp.set_title("Real Consumption") +fsp = fig.add_tsplot(223) +fsp.tsplot(ts_series[:,2],'g-') +fsp.set_title("CPI") +fsp = fig.add_tsplot(224) +fsp.tsplot(ts_series[:,3],'y-') +fsp.set_title("Employment") + + + +# Plot real GDP +#plt.subplot(221) +#plt.plot(data['realgdp']) +#plt.title("Real GDP") + +# Plot employment +#plt.subplot(222) + +# Plot cpi +#plt.subplot(223) + +# Plot real consumption +#plt.subplot(224) + +#plt.show() diff --git a/statsmodels/sandbox/tsa/examples/try_ld_nitime.py b/statsmodels/sandbox/tsa/examples/try_ld_nitime.py new file mode 100644 index 0000000..b5880df --- /dev/null +++ b/statsmodels/sandbox/tsa/examples/try_ld_nitime.py @@ -0,0 +1,24 @@ +'''Levinson Durbin recursion adjusted from nitime + +''' + +import numpy as np + +import nitime.utils as ut + +import statsmodels.api as sm + +sxx=None +order = 10 + +npts = 2048*10 +sigma = 1 +drop_transients = 1024 +coefs = np.array([0.9, -0.5]) + +# Generate AR(2) time series +X, v, _ = ut.ar_generator(npts, sigma, coefs, drop_transients) + +s = X + +sm.tsa.stattools.pacf(X) diff --git a/statsmodels/sandbox/tsa/fftarma.py b/statsmodels/sandbox/tsa/fftarma.py new file mode 100644 index 0000000..54db2ea --- /dev/null +++ b/statsmodels/sandbox/tsa/fftarma.py @@ -0,0 +1,539 @@ +# -*- coding: utf-8 -*- +""" +Created on Mon Dec 14 19:53:25 2009 + +Author: josef-pktd + +generate arma sample using fft with all the lfilter it looks slow +to get the ma representation first + +apply arma filter (in ar representation) to time series to get white noise +but seems slow to be useful for fast estimation for nobs=10000 + +change/check: instead of using marep, use fft-transform of ar and ma + separately, use ratio check theory is correct and example works + DONE : feels much faster than lfilter + -> use for estimation of ARMA + -> use pade (scipy.misc) approximation to get starting polynomial + from autocorrelation (is autocorrelation of AR(p) related to marep?) + check if pade is fast, not for larger arrays ? + maybe pade doesn't do the right thing for this, not tried yet + scipy.pade([ 1. , 0.6, 0.25, 0.125, 0.0625, 0.1],2) + raises LinAlgError: singular matrix + also doesn't have roots inside unit circle ?? + -> even without initialization, it might be fast for estimation + -> how do I enforce stationarity and invertibility, + need helper function + +get function drop imag if close to zero from numpy/scipy source, where? + +""" + +from __future__ import print_function +import numpy as np +import numpy.fft as fft +#import scipy.fftpack as fft +from scipy import signal +#from try_var_convolve import maxabs +from statsmodels.tsa.arima_process import ArmaProcess + + +#trying to convert old experiments to a class + + +class ArmaFft(ArmaProcess): + '''fft tools for arma processes + + This class contains several methods that are providing the same or similar + returns to try out and test different implementations. + + Notes + ----- + TODO: + check whether we don't want to fix maxlags, and create new instance if + maxlag changes. usage for different lengths of timeseries ? + or fix frequency and length for fft + + check default frequencies w, terminology norw n_or_w + + some ffts are currently done without padding with zeros + + returns for spectral density methods needs checking, is it always the power + spectrum hw*hw.conj() + + normalization of the power spectrum, spectral density: not checked yet, for + example no variance of underlying process is used + + ''' + + def __init__(self, ar, ma, n): + #duplicates now that are subclassing ArmaProcess + super(ArmaFft, self).__init__(ar, ma) + + self.ar = np.asarray(ar) + self.ma = np.asarray(ma) + self.nobs = n + #could make the polynomials into cached attributes + self.arpoly = np.polynomial.Polynomial(ar) + self.mapoly = np.polynomial.Polynomial(ma) + self.nar = len(ar) #1d only currently + self.nma = len(ma) + + def padarr(self, arr, maxlag, atend=True): + '''pad 1d array with zeros at end to have length maxlag + function that is a method, no self used + + Parameters + ---------- + arr : array_like, 1d + array that will be padded with zeros + maxlag : int + length of array after padding + atend : boolean + If True (default), then the zeros are added to the end, otherwise + to the front of the array + + Returns + ------- + arrp : ndarray + zero-padded array + + Notes + ----- + This is mainly written to extend coefficient arrays for the lag-polynomials. + It returns a copy. + + ''' + if atend: + return np.r_[arr, np.zeros(maxlag-len(arr))] + else: + return np.r_[np.zeros(maxlag-len(arr)), arr] + + + def pad(self, maxlag): + '''construct AR and MA polynomials that are zero-padded to a common length + + Parameters + ---------- + maxlag : int + new length of lag-polynomials + + Returns + ------- + ar : ndarray + extended AR polynomial coefficients + ma : ndarray + extended AR polynomial coefficients + + ''' + arpad = np.r_[self.ar, np.zeros(maxlag-self.nar)] + mapad = np.r_[self.ma, np.zeros(maxlag-self.nma)] + return arpad, mapad + + def fftar(self, n=None): + '''Fourier transform of AR polynomial, zero-padded at end to n + + Parameters + ---------- + n : int + length of array after zero-padding + + Returns + ------- + fftar : ndarray + fft of zero-padded ar polynomial + ''' + if n is None: + n = len(self.ar) + return fft.fft(self.padarr(self.ar, n)) + + def fftma(self, n): + '''Fourier transform of MA polynomial, zero-padded at end to n + + Parameters + ---------- + n : int + length of array after zero-padding + + Returns + ------- + fftar : ndarray + fft of zero-padded ar polynomial + ''' + if n is None: + n = len(self.ar) + return fft.fft(self.padarr(self.ma, n)) + + def fftarma(self, n=None): + '''Fourier transform of ARMA polynomial, zero-padded at end to n + + The Fourier transform of the ARMA process is calculated as the ratio + of the fft of the MA polynomial divided by the fft of the AR polynomial. + + Parameters + ---------- + n : int + length of array after zero-padding + + Returns + ------- + fftarma : ndarray + fft of zero-padded arma polynomial + ''' + if n is None: + n = self.nobs + return (self.fftma(n) / self.fftar(n)) + + def spd(self, npos): + '''raw spectral density, returns Fourier transform + + n is number of points in positive spectrum, the actual number of points + is twice as large. different from other spd methods with fft + ''' + n = npos + w = fft.fftfreq(2*n) * 2 * np.pi + hw = self.fftarma(2*n) #not sure, need to check normalization + #return (hw*hw.conj()).real[n//2-1:] * 0.5 / np.pi #doesn't show in plot + return (hw*hw.conj()).real * 0.5 / np.pi, w + + def spdshift(self, n): + '''power spectral density using fftshift + + currently returns two-sided according to fft frequencies, use first half + ''' + #size = s1+s2-1 + mapadded = self.padarr(self.ma, n) + arpadded = self.padarr(self.ar, n) + hw = fft.fft(fft.fftshift(mapadded)) / fft.fft(fft.fftshift(arpadded)) + #return np.abs(spd)[n//2-1:] + w = fft.fftfreq(n) * 2 * np.pi + wslice = slice(n//2-1, None, None) + #return (hw*hw.conj()).real[wslice], w[wslice] + return (hw*hw.conj()).real, w + + def spddirect(self, n): + '''power spectral density using padding to length n done by fft + + currently returns two-sided according to fft frequencies, use first half + ''' + #size = s1+s2-1 + #abs looks wrong + hw = fft.fft(self.ma, n) / fft.fft(self.ar, n) + w = fft.fftfreq(n) * 2 * np.pi + wslice = slice(None, n//2, None) + #return (np.abs(hw)**2)[wslice], w[wslice] + return (np.abs(hw)**2) * 0.5/np.pi, w + + def _spddirect2(self, n): + '''this looks bad, maybe with an fftshift + ''' + #size = s1+s2-1 + hw = (fft.fft(np.r_[self.ma[::-1],self.ma], n) + / fft.fft(np.r_[self.ar[::-1],self.ar], n)) + return (hw*hw.conj()) #.real[n//2-1:] + + def spdroots(self, w): + '''spectral density for frequency using polynomial roots + + builds two arrays (number of roots, number of frequencies) + ''' + return self._spdroots(self.arroots, self.maroots, w) + + def _spdroots(self, arroots, maroots, w): + '''spectral density for frequency using polynomial roots + + builds two arrays (number of roots, number of frequencies) + + Parameters + ---------- + arroots : ndarray + roots of ar (denominator) lag-polynomial + maroots : ndarray + roots of ma (numerator) lag-polynomial + w : array_like + frequencies for which spd is calculated + + Notes + ----- + this should go into a function + ''' + w = np.atleast_2d(w).T + cosw = np.cos(w) + #Greene 5th edt. p626, section 20.2.7.a. + maroots = 1./maroots + arroots = 1./arroots + num = 1 + maroots**2 - 2* maroots * cosw + den = 1 + arroots**2 - 2* arroots * cosw + #print 'num.shape, den.shape', num.shape, den.shape + hw = 0.5 / np.pi * num.prod(-1) / den.prod(-1) #or use expsumlog + return np.squeeze(hw), w.squeeze() + + def spdpoly(self, w, nma=50): + '''spectral density from MA polynomial representation for ARMA process + + References + ---------- + Cochrane, section 8.3.3 + ''' + mpoly = np.polynomial.Polynomial(self.arma2ma(nma)) + hw = mpoly(np.exp(1j * w)) + spd = np.real_if_close(hw * hw.conj() * 0.5/np.pi) + return spd, w + + def filter(self, x): + ''' + filter a timeseries with the ARMA filter + + padding with zero is missing, in example I needed the padding to get + initial conditions identical to direct filter + + Initial filtered observations differ from filter2 and signal.lfilter, but + at end they are the same. + + See Also + -------- + tsa.filters.fftconvolve + + ''' + n = x.shape[0] + if n == self.fftarma: + fftarma = self.fftarma + else: + fftarma = self.fftma(n) / self.fftar(n) + tmpfft = fftarma * fft.fft(x) + return fft.ifft(tmpfft) + + def filter2(self, x, pad=0): + '''filter a time series using fftconvolve3 with ARMA filter + + padding of x currently works only if x is 1d + in example it produces same observations at beginning as lfilter even + without padding. + + TODO: this returns 1 additional observation at the end + ''' + from statsmodels.tsa.filters import fftconvolve3 + if not pad: + pass + elif pad == 'auto': + #just guessing how much padding + x = self.padarr(x, x.shape[0] + 2*(self.nma+self.nar), atend=False) + else: + x = self.padarr(x, x.shape[0] + int(pad), atend=False) + + return fftconvolve3(x, self.ma, self.ar) + + + def acf2spdfreq(self, acovf, nfreq=100, w=None): + ''' + not really a method + just for comparison, not efficient for large n or long acf + + this is also similarly use in tsa.stattools.periodogram with window + ''' + if w is None: + w = np.linspace(0, np.pi, nfreq)[:, None] + nac = len(acovf) + hw = 0.5 / np.pi * (acovf[0] + + 2 * (acovf[1:] * np.cos(w*np.arange(1,nac))).sum(1)) + return hw + + def invpowerspd(self, n): + '''autocovariance from spectral density + + scaling is correct, but n needs to be large for numerical accuracy + maybe padding with zero in fft would be faster + without slicing it returns 2-sided autocovariance with fftshift + + >>> ArmaFft([1, -0.5], [1., 0.4], 40).invpowerspd(2**8)[:10] + array([ 2.08 , 1.44 , 0.72 , 0.36 , 0.18 , 0.09 , + 0.045 , 0.0225 , 0.01125 , 0.005625]) + >>> ArmaFft([1, -0.5], [1., 0.4], 40).acovf(10) + array([ 2.08 , 1.44 , 0.72 , 0.36 , 0.18 , 0.09 , + 0.045 , 0.0225 , 0.01125 , 0.005625]) + ''' + hw = self.fftarma(n) + return np.real_if_close(fft.ifft(hw*hw.conj()), tol=200)[:n] + + def spdmapoly(self, w, twosided=False): + '''ma only, need division for ar, use LagPolynomial + ''' + if w is None: + w = np.linspace(0, np.pi, nfreq) + return 0.5 / np.pi * self.mapoly(np.exp(w*1j)) + + + def plot4(self, fig=None, nobs=100, nacf=20, nfreq=100): + """Plot results""" + rvs = self.generate_sample(nsample=100, burnin=500) + acf = self.acf(nacf)[:nacf] #TODO: check return length + pacf = self.pacf(nacf) + w = np.linspace(0, np.pi, nfreq) + spdr, wr = self.spdroots(w) + + if fig is None: + import matplotlib.pyplot as plt + fig = plt.figure() + ax = fig.add_subplot(2,2,1) + ax.plot(rvs) + ax.set_title('Random Sample \nar=%s, ma=%s' % (self.ar, self.ma)) + + ax = fig.add_subplot(2,2,2) + ax.plot(acf) + ax.set_title('Autocorrelation \nar=%s, ma=%rs' % (self.ar, self.ma)) + + ax = fig.add_subplot(2,2,3) + ax.plot(wr, spdr) + ax.set_title('Power Spectrum \nar=%s, ma=%s' % (self.ar, self.ma)) + + ax = fig.add_subplot(2,2,4) + ax.plot(pacf) + ax.set_title('Partial Autocorrelation \nar=%s, ma=%s' % (self.ar, self.ma)) + + return fig + + + + + + + +def spdar1(ar, w): + if np.ndim(ar) == 0: + rho = ar + else: + rho = -ar[1] + return 0.5 / np.pi /(1 + rho*rho - 2 * rho * np.cos(w)) + +if __name__ == '__main__': + def maxabs(x,y): + return np.max(np.abs(x-y)) + nobs = 200 #10000 + ar = [1, 0.0] + ma = [1, 0.0] + ar2 = np.zeros(nobs) + ar2[:2] = [1, -0.9] + + + + uni = np.zeros(nobs) + uni[0]=1. + #arrep = signal.lfilter(ma, ar, ar2) + #marep = signal.lfilter([1],arrep, uni) + # same faster: + arcomb = np.convolve(ar, ar2, mode='same') + marep = signal.lfilter(ma,arcomb, uni) #[len(ma):] + print(marep[:10]) + mafr = fft.fft(marep) + + rvs = np.random.normal(size=nobs) + datafr = fft.fft(rvs) + y = fft.ifft(mafr*datafr) + print(np.corrcoef(np.c_[y[2:], y[1:-1], y[:-2]],rowvar=0)) + + arrep = signal.lfilter([1],marep, uni) + print(arrep[:20]) # roundtrip to ar + arfr = fft.fft(arrep) + yfr = fft.fft(y) + x = fft.ifft(arfr*yfr).real #imag part is e-15 + # the next two are equal, roundtrip works + print(x[:5]) + print(rvs[:5]) + print(np.corrcoef(np.c_[x[2:], x[1:-1], x[:-2]],rowvar=0)) + + + # ARMA filter using fft with ratio of fft of ma/ar lag polynomial + # seems much faster than using lfilter + + #padding, note arcomb is already full length + arcombp = np.zeros(nobs) + arcombp[:len(arcomb)] = arcomb + map_ = np.zeros(nobs) #rename: map was shadowing builtin + map_[:len(ma)] = ma + ar0fr = fft.fft(arcombp) + ma0fr = fft.fft(map_) + y2 = fft.ifft(ma0fr/ar0fr*datafr) + #the next two are (almost) equal in real part, almost zero but different in imag + print(y2[:10]) + print(y[:10]) + print(maxabs(y, y2)) # from chfdiscrete + #1.1282071239631782e-014 + + ar = [1, -0.4] + ma = [1, 0.2] + + arma1 = ArmaFft([1, -0.5,0,0,0,00, -0.7, 0.3], [1, 0.8], nobs) + + nfreq = nobs + w = np.linspace(0, np.pi, nfreq) + w2 = np.linspace(0, 2*np.pi, nfreq) + + import matplotlib.pyplot as plt + plt.close('all') + + plt.figure() + spd1, w1 = arma1.spd(2**10) + print(spd1.shape) + _ = plt.plot(spd1) + plt.title('spd fft complex') + + plt.figure() + spd2, w2 = arma1.spdshift(2**10) + print(spd2.shape) + _ = plt.plot(w2, spd2) + plt.title('spd fft shift') + + plt.figure() + spd3, w3 = arma1.spddirect(2**10) + print(spd3.shape) + _ = plt.plot(w3, spd3) + plt.title('spd fft direct') + + plt.figure() + spd3b = arma1._spddirect2(2**10) + print(spd3b.shape) + _ = plt.plot(spd3b) + plt.title('spd fft direct mirrored') + + plt.figure() + spdr, wr = arma1.spdroots(w) + print(spdr.shape) + plt.plot(w, spdr) + plt.title('spd from roots') + + plt.figure() + spdar1_ = spdar1(arma1.ar, w) + print(spdar1_.shape) + _ = plt.plot(w, spdar1_) + plt.title('spd ar1') + + + plt.figure() + wper, spdper = arma1.periodogram(nfreq) + print(spdper.shape) + _ = plt.plot(w, spdper) + plt.title('periodogram') + + startup = 1000 + rvs = arma1.generate_sample(startup+10000)[startup:] + import matplotlib.mlab as mlb + plt.figure() + sdm, wm = mlb.psd(x) + print('sdm.shape', sdm.shape) + sdm = sdm.ravel() + plt.plot(wm, sdm) + plt.title('matplotlib') + + from nitime.algorithms import LD_AR_est + #yule_AR_est(s, order, Nfreqs) + wnt, spdnt = LD_AR_est(rvs, 10, 512) + plt.figure() + print('spdnt.shape', spdnt.shape) + _ = plt.plot(spdnt.ravel()) + print(spdnt[:10]) + plt.title('nitime') + + fig = plt.figure() + arma1.plot4(fig) + + #plt.show() diff --git a/statsmodels/sandbox/tsa/garch.py b/statsmodels/sandbox/tsa/garch.py new file mode 100644 index 0000000..63f53e8 --- /dev/null +++ b/statsmodels/sandbox/tsa/garch.py @@ -0,0 +1,1492 @@ +'''general non-linear MLE for time series analysis + +idea for general version +------------------------ + +subclass defines geterrors(parameters) besides loglike,... +and covariance matrix of parameter estimates (e.g. from hessian +or outerproduct of jacobian) +update: I don't really need geterrors directly, but get_h the conditional + variance process + +new version Garch0 looks ok, time to clean up and test +no constraints yet +in some cases: "Warning: Maximum number of function evaluations has been exceeded." + +Notes +----- + +idea: cache intermediate design matrix for geterrors so it doesn't need + to be build at each function call + +superclass or result class calculates result statistic based +on errors, loglike, jacobian and cov/hessian + -> aic, bic, ... + -> test statistics, tvalue, fvalue, ... + -> new to add: distribution (mean, cov) of non-linear transformation + -> parameter restrictions or transformation with corrected covparams (?) + -> sse, rss, rsquared ??? are they defined from this in general + -> robust parameter cov ??? + -> additional residual based tests, NW, ... likelihood ratio, lagrange + multiplier tests ??? + +how much can be reused from linear model result classes where + `errorsest = y - X*beta` ? + +for tsa: what's the division of labor between model, result instance + and process + +examples: + * arma: ls and mle look good + * arimax: add exog, especially mean, trend, prefilter, e.g. (1-L) + * arma_t: arma with t distributed errors (just a change in loglike) + * garch: need loglike and (recursive) errorest + * regime switching model without unobserved state, e.g. threshold + + +roadmap for garch: + * simple case + * starting values: garch11 explicit formulas + * arma-garch, assumed separable, blockdiagonal Hessian + * empirical example: DJI, S&P500, MSFT, ??? + * other standard garch: egarch, pgarch, + * non-normal distributions + * other methods: forecast, news impact curves (impulse response) + * analytical gradient, Hessian for basic garch + * cleaner simulation of garch + * result statistics, AIC, ... + * parameter constraints + * try penalization for higher lags + * other garch: regime-switching + +for pgarch (power garch) need transformation of etax given + the parameters, but then misofilter should work + general class aparch (see garch glossary) + +References +---------- + +see notes_references.txt + + +Created on Feb 6, 2010 +@author: "josef pktd" +''' +from __future__ import print_function +from statsmodels.compat.python import zip +import numpy as np +from numpy.testing import assert_almost_equal + +from scipy import optimize, signal + +import matplotlib.pyplot as plt + +import numdifftools as ndt + +from statsmodels.base.model import Model, LikelihoodModelResults +from statsmodels.tsa.filters.filtertools import miso_lfilter +from statsmodels.sandbox import tsa + + +def sumofsq(x, axis=0): + """Helper function to calculate sum of squares along first axis""" + return np.sum(x**2, axis=axis) + + +def normloglike(x, mu=0, sigma2=1, returnlls=False, axis=0): + + x = np.asarray(x) + x = np.atleast_1d(x) + if axis is None: + x = x.ravel() + #T,K = x.shape + if x.ndim > 1: + nobs = x.shape[axis] + else: + nobs = len(x) + + x = x - mu # assume can be broadcasted + if returnlls: + #Compute the individual log likelihoods if needed + lls = -0.5*(np.log(2*np.pi) + np.log(sigma2) + x**2/sigma2) + # Use these to comput the LL + LL = np.sum(lls,axis) + return LL, lls + else: + #Compute the log likelihood + #print(np.sum(np.log(sigma2),axis)) + LL = -0.5 * (np.sum(np.log(sigma2),axis) + np.sum((x**2)/sigma2, axis) + nobs*np.log(2*np.pi)) + return LL + +# copied from model.py +class LikelihoodModel(Model): + """ + Likelihood model is a subclass of Model. + """ + + def __init__(self, endog, exog=None): + super(LikelihoodModel, self).__init__(endog, exog) + self.initialize() + + def initialize(self): + """ + Initialize (possibly re-initialize) a Model instance. For + instance, the design matrix of a linear model may change + and some things must be recomputed. + """ + pass +#TODO: if the intent is to re-initialize the model with new data then +# this method needs to take inputs... + + def loglike(self, params): + """ + Log-likelihood of model. + """ + raise NotImplementedError + + def score(self, params): + """ + Score vector of model. + + The gradient of logL with respect to each parameter. + """ + raise NotImplementedError + + def information(self, params): + """ + Fisher information matrix of model + + Returns -Hessian of loglike evaluated at params. + """ + raise NotImplementedError + + def hessian(self, params): + """ + The Hessian matrix of the model + """ + raise NotImplementedError + + def fit(self, start_params=None, method='newton', maxiter=35, tol=1e-08): + """ + Fit method for likelihood based models + + Parameters + ---------- + start_params : array-like, optional + An optional + + method : str + Method can be 'newton', 'bfgs', 'powell', 'cg', or 'ncg'. + The default is newton. See scipy.optimze for more information. + """ + methods = ['newton', 'bfgs', 'powell', 'cg', 'ncg', 'fmin'] + if start_params is None: + start_params = [0]*self.exog.shape[1] # will fail for shape (K,) + if method not in methods: + raise ValueError("Unknown fit method %s" % method) + f = lambda params: -self.loglike(params) + score = lambda params: -self.score(params) +# hess = lambda params: -self.hessian(params) + hess = None +#TODO: can we have a unified framework so that we can just do func = method +# and write one call for each solver? + + if method.lower() == 'newton': + iteration = 0 + start = np.array(start_params) + history = [np.inf, start] + while (iteration < maxiter and np.all(np.abs(history[-1] - \ + history[-2])>tol)): + H = self.hessian(history[-1]) + newparams = history[-1] - np.dot(np.linalg.inv(H), + self.score(history[-1])) + history.append(newparams) + iteration += 1 + mlefit = LikelihoodModelResults(self, newparams) + mlefit.iteration = iteration + elif method == 'bfgs': + score=None + xopt, fopt, gopt, Hopt, func_calls, grad_calls, warnflag = \ + optimize.fmin_bfgs(f, start_params, score, full_output=1, + maxiter=maxiter, gtol=tol) + converge = not warnflag + mlefit = LikelihoodModelResults(self, xopt) + optres = 'xopt, fopt, gopt, Hopt, func_calls, grad_calls, warnflag' + self.optimresults = dict(zip(optres.split(', '),[ + xopt, fopt, gopt, Hopt, func_calls, grad_calls, warnflag])) + elif method == 'ncg': + xopt, fopt, fcalls, gcalls, hcalls, warnflag = \ + optimize.fmin_ncg(f, start_params, score, fhess=hess, + full_output=1, maxiter=maxiter, avextol=tol) + mlefit = LikelihoodModelResults(self, xopt) + converge = not warnflag + elif method == 'fmin': + #fmin(func, x0, args=(), xtol=0.0001, ftol=0.0001, maxiter=None, maxfun=None, full_output=0, disp=1, retall=0, callback=None) + xopt, fopt, niter, funcalls, warnflag = \ + optimize.fmin(f, start_params, + full_output=1, maxiter=maxiter, xtol=tol) + mlefit = LikelihoodModelResults(self, xopt) + converge = not warnflag + self._results = mlefit + return mlefit + + +#TODO: I take it this is only a stub and should be included in another +# model class? +class TSMLEModel(LikelihoodModel): + """ + univariate time series model for estimation with maximum likelihood + + Note: This is not working yet + """ + + def __init__(self, endog, exog=None): + #need to override p,q (nar,nma) correctly + super(TSMLEModel, self).__init__(endog, exog) + #set default arma(1,1) + self.nar = 1 + self.nma = 1 + #self.initialize() + + def geterrors(self, params): + raise NotImplementedError + + def loglike(self, params): + """ + Loglikelihood for timeseries model + + Notes + ----- + needs to be overwritten by subclass + """ + raise NotImplementedError + + + def score(self, params): + """ + Score vector for Arma model + """ + #return None + #print(params + jac = ndt.Jacobian(self.loglike, stepMax=1e-4) + return jac(params)[-1] + + def hessian(self, params): + """ + Hessian of arma model. Currently uses numdifftools + """ + #return None + Hfun = ndt.Jacobian(self.score, stepMax=1e-4) + return Hfun(params)[-1] + + + def fit(self, start_params=None, maxiter=5000, method='fmin', tol=1e-08): + '''estimate model by minimizing negative loglikelihood + + does this need to be overwritten ? + ''' + if start_params is None and hasattr(self, '_start_params'): + start_params = self._start_params + #start_params = np.concatenate((0.05*np.ones(self.nar + self.nma), [1])) + mlefit = super(TSMLEModel, self).fit(start_params=start_params, + maxiter=maxiter, method=method, tol=tol) + return mlefit + +class Garch0(TSMLEModel): + '''Garch model, + + still experimentation stage: + simplified structure, plain garch, no constraints + still looking for the design of the base class + + serious bug: + ar estimate looks ok, ma estimate awful + -> check parameterization of lagpolys and constant + looks ok after adding missing constant + but still difference to garch11 function + corrected initial condition + -> only small differences left between the 3 versions + ar estimate is close to true/DGP model + note constant has different parameterization + but design looks better + + ''' + def __init__(self, endog, exog=None): + #need to override p,q (nar,nma) correctly + super(Garch0, self).__init__(endog, exog) + #set default arma(1,1) + self.nar = 1 + self.nma = 1 + #self.initialize() + # put this in fit (?) or in initialize instead + self._etax = endog**2 + self._icetax = np.atleast_1d(self._etax.mean()) + + def initialize(self): + pass + + def geth(self, params): + ''' + + Parameters + ---------- + params : tuple, (ar, ma) + try to keep the params conversion in loglike + + copied from generate_gjrgarch + needs to be extracted to separate function + ''' + #mu, ar, ma = params + ar, ma, mu = params + + #etax = self.endog #this would be enough for basic garch version + etax = self._etax + mu + icetax = self._icetax #read ic-eta-x, initial condition + + #TODO: where does my go with lfilter ????????????? + # shouldn't matter except for interpretation + + nobs = etax.shape[0] + + #check arguments of lfilter + zi = signal.lfiltic(ma,ar, icetax) + #h = signal.lfilter(ar, ma, etax, zi=zi) #np.atleast_1d(etax[:,1].mean())) + #just guessing: b/c ValueError: BUG: filter coefficient a[0] == 0 not supported yet + h = signal.lfilter(ma, ar, etax, zi=zi)[0] + return h + + + def loglike(self, params): + """ + Loglikelihood for timeseries model + + Notes + ----- + needs to be overwritten by subclass + + make more generic with using function _convertparams + which could also include parameter transformation + _convertparams_in, _convertparams_out + + allow for different distributions t, ged,... + """ + p, q = self.nar, self.nma + ar = np.concatenate(([1], params[:p])) + + # check where constant goes + + #ma = np.zeros((q+1,3)) + #ma[0,0] = params[-1] + #lag coefficients for ma innovation + ma = np.concatenate(([0], params[p:p+q])) + + mu = params[-1] + params = (ar, ma, mu) #(ar, ma) + + h = self.geth(params) + + #temporary safe for debugging: + self.params_converted = params + self.h = h #for testing + + sigma2 = np.maximum(h, 1e-6) + axis = 0 + nobs = len(h) + #this doesn't help for exploding paths + #errorsest[np.isnan(errorsest)] = 100 + axis=0 #no choice of axis + + # same as with y = self.endog, ht = sigma2 + # np.log(stats.norm.pdf(y,scale=np.sqrt(ht))).sum() + llike = -0.5 * (np.sum(np.log(sigma2),axis) + + np.sum(((self.endog)**2)/sigma2, axis) + + nobs*np.log(2*np.pi)) + return llike + +class GarchX(TSMLEModel): + '''Garch model, + + still experimentation stage: + another version, this time with exog and miso_filter + still looking for the design of the base class + + not done yet, just a design idea + * use misofilter as in garch (gjr) + * but take etax = exog + this can include constant, asymetric effect (gjr) and + other explanatory variables (e.g. high-low spread) + + todo: renames + eta -> varprocess + etax -> varprocessx + icetax -> varprocessic (is actually ic of eta/sigma^2) + ''' + def __init__(self, endog, exog=None): + #need to override p,q (nar,nma) correctly + super(Garch0, self).__init__(endog, exog) + #set default arma(1,1) + self.nar = 1 + self.nma = 1 + #self.initialize() + # put this in fit (?) or in initialize instead + #nobs defined in super - verify + #self.nobs = nobs = endog.shape[0] + #add nexog to super + #self.nexog = nexog = exog.shape[1] + self._etax = np.column_stack(np.ones((nobs,1)), endog**2, exog) + self._icetax = np.atleast_1d(self._etax.mean()) + + def initialize(self): + pass + + def convert_mod2params(ar, ma, mu): + pass + + def geth(self, params): + ''' + + Parameters + ---------- + params : tuple, (ar, ma) + try to keep the params conversion in loglike + + copied from generate_gjrgarch + needs to be extracted to separate function + ''' + #mu, ar, ma = params + ar, ma, mu = params + + #etax = self.endog #this would be enough for basic garch version + etax = self._etax + mu + icetax = self._icetax #read ic-eta-x, initial condition + + #TODO: where does my go with lfilter ????????????? + # shouldn't matter except for interpretation + + nobs = self.nobs + +## #check arguments of lfilter +## zi = signal.lfiltic(ma,ar, icetax) +## #h = signal.lfilter(ar, ma, etax, zi=zi) #np.atleast_1d(etax[:,1].mean())) +## #just guessing: b/c ValueError: BUG: filter coefficient a[0] == 0 not supported yet +## h = signal.lfilter(ma, ar, etax, zi=zi)[0] +## + h = miso_lfilter(ar, ma, etax, useic=self._icetax)[0] + #print('h.shape', h.shape + hneg = h<0 + if hneg.any(): + #h[hneg] = 1e-6 + h = np.abs(h) + #todo: raise warning, maybe not during optimization calls + + return h + + + def loglike(self, params): + """ + Loglikelihood for timeseries model + + Notes + ----- + needs to be overwritten by subclass + + make more generic with using function _convertparams + which could also include parameter transformation + _convertparams_in, _convertparams_out + + allow for different distributions t, ged,... + """ + p, q = self.nar, self.nma + ar = np.concatenate(([1], params[:p])) + + # check where constant goes + + #ma = np.zeros((q+1,3)) + #ma[0,0] = params[-1] + #lag coefficients for ma innovation + ma = np.concatenate(([0], params[p:p+q])) + + mu = params[-1] + params = (ar, ma, mu) #(ar, ma) + + h = self.geth(params) + + #temporary safe for debugging: + self.params_converted = params + self.h = h #for testing + + sigma2 = np.maximum(h, 1e-6) + axis = 0 + nobs = len(h) + #this doesn't help for exploding paths + #errorsest[np.isnan(errorsest)] = 100 + axis=0 #no choice of axis + + # same as with y = self.endog, ht = sigma2 + # np.log(stats.norm.pdf(y,scale=np.sqrt(ht))).sum() + llike = -0.5 * (np.sum(np.log(sigma2),axis) + + np.sum(((self.endog)**2)/sigma2, axis) + + nobs*np.log(2*np.pi)) + return llike + + +class Garch(TSMLEModel): + '''Garch model gjrgarch (t-garch) + + still experimentation stage, try with + + ''' + def __init__(self, endog, exog=None): + #need to override p,q (nar,nma) correctly + super(Garch, self).__init__(endog, exog) + #set default arma(1,1) + self.nar = 1 + self.nma = 1 + #self.initialize() + + def initialize(self): + pass + + def geterrors(self, params): + ''' + + Parameters + ---------- + params : tuple, (mu, ar, ma) + try to keep the params conversion in loglike + + copied from generate_gjrgarch + needs to be extracted to separate function + ''' + #mu, ar, ma = params + ar, ma = params + eta = self.endog + nobs = eta.shape[0] + + etax = np.empty((nobs,3)) + etax[:,0] = 1 + etax[:,1:] = (eta**2)[:,None] + etax[eta>0,2] = 0 + #print('etax.shape', etax.shape + h = miso_lfilter(ar, ma, etax, useic=np.atleast_1d(etax[:,1].mean()))[0] + #print('h.shape', h.shape + hneg = h<0 + if hneg.any(): + #h[hneg] = 1e-6 + h = np.abs(h) + + #print('Warning negative variance found' + + #check timing, starting time for h and eta, do they match + #err = np.sqrt(h[:len(eta)])*eta #np.random.standard_t(8, size=len(h)) + # let it break if there is a len/shape mismatch + err = np.sqrt(h)*eta + return err, h, etax + + def loglike(self, params): + """ + Loglikelihood for timeseries model + + Notes + ----- + needs to be overwritten by subclass + """ + p, q = self.nar, self.nma + ar = np.concatenate(([1], params[:p])) + #ar = np.concatenate(([1], -np.abs(params[:p]))) #??? + #better safe than fast and sorry + # + ma = np.zeros((q+1,3)) + ma[0,0] = params[-1] + #lag coefficients for ma innovation + ma[:,1] = np.concatenate(([0], params[p:p+q])) + #delta lag coefficients for negative ma innovation + ma[:,2] = np.concatenate(([0], params[p+q:p+2*q])) + + mu = params[-1] + params = (ar, ma) #(mu, ar, ma) + + errorsest, h, etax = self.geterrors(params) + #temporary safe for debugging + self.params_converted = params + self.errorsest, self.h, self.etax = errorsest, h, etax + #h = h[:-1] #correct this in geterrors + #print('shapes errorsest, h, etax', errorsest.shape, h.shape, etax.shape + sigma2 = np.maximum(h, 1e-6) + axis = 0 + nobs = len(errorsest) + #this doesn't help for exploding paths + #errorsest[np.isnan(errorsest)] = 100 + axis=0 #not used +# muy = errorsest.mean() +# # llike is verified, see below +# # same as with y = errorsest, ht = sigma2 +# # np.log(stats.norm.pdf(y,scale=np.sqrt(ht))).sum() +# llike = -0.5 * (np.sum(np.log(sigma2),axis) +# + np.sum(((errorsest)**2)/sigma2, axis) +# + nobs*np.log(2*np.pi)) +# return llike + muy = errorsest.mean() + # llike is verified, see below + # same as with y = errorsest, ht = sigma2 + # np.log(stats.norm.pdf(y,scale=np.sqrt(ht))).sum() + llike = -0.5 * (np.sum(np.log(sigma2),axis) + + np.sum(((self.endog)**2)/sigma2, axis) + + nobs*np.log(2*np.pi)) + return llike + + +def gjrconvertparams(self, params, nar, nma): + """ + flat to matrix + + Notes + ----- + needs to be overwritten by subclass + """ + p, q = nar, nma + ar = np.concatenate(([1], params[:p])) + #ar = np.concatenate(([1], -np.abs(params[:p]))) #??? + #better safe than fast and sorry + # + ma = np.zeros((q+1,3)) + ma[0,0] = params[-1] + #lag coefficients for ma innovation + ma[:,1] = np.concatenate(([0], params[p:p+q])) + #delta lag coefficients for negative ma innovation + ma[:,2] = np.concatenate(([0], params[p+q:p+2*q])) + + mu = params[-1] + params2 = (ar, ma) #(mu, ar, ma) + return paramsclass # noqa:F821 # See GH#5756 + + +#TODO: this should be generalized to ARMA? +#can possibly also leverage TSME above +# also note that this is NOT yet general +# it was written for my homework, assumes constant is zero +# and that process is AR(1) +# examples at the end of run as main below +class AR(LikelihoodModel): + """ + Notes + ----- + This is not general, only written for the AR(1) case. + + Fit methods that use super and broyden do not yet work. + """ + def __init__(self, endog, exog=None, nlags=1): + if exog is None: # extend to handle ADL(p,q) model? or subclass? + exog = endog[:-nlags] + endog = endog[nlags:] + super(AR, self).__init__(endog, exog) + self.nobs += nlags # add lags back to nobs for real T + +#TODO: need to fix underscore in Model class. +#Done? + def initialize(self): + pass + + def loglike(self, params): + """ + The unconditional loglikelihood of an AR(p) process + + Notes + ----- + Contains constant term. + """ + nobs = self.nobs + y = self.endog + ylag = self.exog + penalty = self.penalty + if isinstance(params,tuple): + # broyden (all optimize.nonlin return a tuple until rewrite commit) + params = np.asarray(params) + usepenalty=False + if not np.all(np.abs(params)<1) and penalty: + oldparams = params + params = np.array([.9999]) # make it the edge + usepenalty=True + diffsumsq = sumofsq(y-np.dot(ylag,params)) + # concentrating the likelihood means that sigma2 is given by + sigma2 = 1/nobs*(diffsumsq-ylag[0]**2*(1-params**2)) + loglike = -nobs/2 * np.log(2*np.pi) - nobs/2*np.log(sigma2) + \ + .5 * np.log(1-params**2) - .5*diffsumsq/sigma2 -\ + ylag[0]**2 * (1-params**2)/(2*sigma2) + if usepenalty: + # subtract a quadratic penalty since we min the negative of loglike + loglike -= 1000 *(oldparams-.9999)**2 + return loglike + + def score(self, params): + """ + Notes + ----- + Need to generalize for AR(p) and for a constant. + Not correct yet. Returns numerical gradient. Depends on package + numdifftools. + """ + y = self.endog + ylag = self.exog + nobs = self.nobs + diffsumsq = sumofsq(y-np.dot(ylag,params)) + dsdr = 1/nobs * -2 *np.sum(ylag*(y-np.dot(ylag,params))[:,None])+\ + 2*params*ylag[0]**2 + sigma2 = 1/nobs*(diffsumsq-ylag[0]**2*(1-params**2)) + gradient = -nobs/(2*sigma2)*dsdr + params/(1-params**2) + \ + 1/sigma2*np.sum(ylag*(y-np.dot(ylag, params))[:,None])+\ + .5*sigma2**-2*diffsumsq*dsdr+\ + ylag[0]**2*params/sigma2 +\ + ylag[0]**2*(1-params**2)/(2*sigma2**2)*dsdr + if self.penalty: + pass + j = ndt.Jacobian(self.loglike) + return j(params) +# return gradient + + + def information(self, params): + """ + Not Implemented Yet + """ + return + + def hessian(self, params): + """ + Returns numerical hessian for now. Depends on numdifftools. + """ + + h = ndt.Hessian(self.loglike) + return h(params) + + def fit(self, start_params=None, method='bfgs', maxiter=35, tol=1e-08, + penalty=False): + """ + Fit the unconditional maximum likelihood of an AR(p) process. + + Parameters + ---------- + start_params : array-like, optional + A first guess on the parameters. Defaults is a vector of zeros. + method : str, optional + Unconstrained solvers: + Default is 'bfgs', 'newton' (newton-raphson), 'ncg' + (Note that previous 3 are not recommended at the moment.) + and 'powell' + Constrained solvers: + 'bfgs-b', 'tnc' + See notes. + maxiter : int, optional + The maximum number of function evaluations. Default is 35. + tol = float + The convergence tolerance. Default is 1e-08. + penalty : bool + Whether or not to use a penalty function. Default is False, + though this is ignored at the moment and the penalty is always + used if appropriate. See notes. + + Notes + ----- + The unconstrained solvers use a quadratic penalty (regardless if + penalty kwd is True or False) in order to ensure that the solution + stays within (-1,1). The constrained solvers default to using a bound + of (-.999,.999). + """ + self.penalty = penalty + method = method.lower() +#TODO: allow user-specified penalty function +# if penalty and method not in ['bfgs_b','tnc','cobyla','slsqp']: +# minfunc = lambda params : -self.loglike(params) - \ +# self.penfunc(params) +# else: + minfunc = lambda params: -self.loglike(params) + if method in ['newton', 'bfgs', 'ncg']: + super(AR, self).fit(start_params=start_params, method=method, + maxiter=maxiter, tol=tol) + else: + bounds = [(-.999,.999)] # assume stationarity + if start_params is None: + start_params = np.array([0]) #TODO: assumes AR(1) + if method == 'bfgs-b': + retval = optimize.fmin_l_bfgs_b(minfunc, start_params, + approx_grad=True, bounds=bounds) + self.params, self.llf = retval[0:2] + if method == 'tnc': + retval = optimize.fmin_tnc(minfunc, start_params, + approx_grad=True, bounds = bounds) + self.params = retval[0] + if method == 'powell': + retval = optimize.fmin_powell(minfunc,start_params) + self.params = retval[None] +#TODO: write regression tests for Pauli's branch so that +# new line_search and optimize.nonlin can get put in. +#http://projects.scipy.org/scipy/ticket/791 +# if method == 'broyden': +# retval = optimize.broyden2(minfunc, [.5], verbose=True) +# self.results = retval + + +class Arma(LikelihoodModel): + """ + univariate Autoregressive Moving Average model + + Note: This is not working yet, or does it + this can subclass TSMLEModel + """ + + def __init__(self, endog, exog=None): + #need to override p,q (nar,nma) correctly + super(Arma, self).__init__(endog, exog) + #set default arma(1,1) + self.nar = 1 + self.nma = 1 + #self.initialize() + + def initialize(self): + pass + + def geterrors(self, params): + #copied from sandbox.tsa.arima.ARIMA + p, q = self.nar, self.nma + rhoy = np.concatenate(([1], params[:p])) + rhoe = np.concatenate(([1], params[p:p+q])) + errorsest = signal.lfilter(rhoy, rhoe, self.endog) + return errorsest + + def loglike(self, params): + """ + Loglikelihood for arma model + + Notes + ----- + The ancillary parameter is assumed to be the last element of + the params vector + """ + +# #copied from sandbox.tsa.arima.ARIMA +# p = self.nar +# rhoy = np.concatenate(([1], params[:p])) +# rhoe = np.concatenate(([1], params[p:-1])) +# errorsest = signal.lfilter(rhoy, rhoe, self.endog) + errorsest = self.geterrors(params) + sigma2 = np.maximum(params[-1]**2, 1e-6) + axis = 0 + nobs = len(errorsest) + #this doesn't help for exploding paths + #errorsest[np.isnan(errorsest)] = 100 +# llike = -0.5 * (np.sum(np.log(sigma2),axis) +# + np.sum((errorsest**2)/sigma2, axis) +# + nobs*np.log(2*np.pi)) + llike = -0.5 * (nobs*np.log(sigma2) + + np.sum((errorsest**2)/sigma2, axis) + + nobs*np.log(2*np.pi)) + return llike + + def score(self, params): + """ + Score vector for Arma model + """ + #return None + #print(params + jac = ndt.Jacobian(self.loglike, stepMax=1e-4) + return jac(params)[-1] + + + + def hessian(self, params): + """ + Hessian of arma model. Currently uses numdifftools + """ + #return None + Hfun = ndt.Jacobian(self.score, stepMax=1e-4) + return Hfun(params)[-1] + + + def fit(self, start_params=None, maxiter=5000, method='fmin', tol=1e-08): + if start_params is None: + start_params = np.concatenate((0.05*np.ones(self.nar + self.nma), [1])) + mlefit = super(Arma, self).fit(start_params=start_params, + maxiter=maxiter, method=method, tol=tol) + return mlefit + +def generate_kindofgarch(nobs, ar, ma, mu=1.): + '''simulate garch like process but not squared errors in arma + used for initial trial but produces nice graph + ''' + #garm1, gmam1 = [0.4], [0.2] + #pqmax = 1 +# res = np.zeros(nobs+pqmax) +# rvs = np.random.randn(nobs+pqmax,2) +# for t in range(pqmax,nobs+pqmax): +# res[i] = + #ar = [1.0, -0.99] + #ma = [1.0, 0.5] + #this has the wrong distribution, should be eps**2 + #TODO: use new version tsa.arima.??? instead, has distr option + #arest = tsa.arima.ARIMA() + #arest = tsa.arima.ARIMA #try class method, ARIMA needs data in constructor + from statsmodels.tsa.arima_process import arma_generate_sample + h = arma_generate_sample(ar,ma,nobs,0.1) + #h = np.abs(h) + h = (mu+h)**2 + h = np.exp(h) + err = np.sqrt(h)*np.random.randn(nobs) + return err, h + +def generate_garch(nobs, ar, ma, mu=1., scale=0.1): + '''simulate standard garch + + scale : float + scale/standard deviation of innovation process in GARCH process + ''' + + eta = scale*np.random.randn(nobs) + # copied from armageneratesample + h = signal.lfilter(ma, ar, eta**2) + + # + #h = (mu+h)**2 + #h = np.abs(h) + #h = np.exp(h) + #err = np.sqrt(h)*np.random.randn(nobs) + err = np.sqrt(h)*eta #np.random.standard_t(8, size=nobs) + return err, h + + + +def generate_gjrgarch(nobs, ar, ma, mu=1., scale=0.1, varinnovation=None): + '''simulate gjr garch process + + Parameters + ---------- + ar : array_like, 1d + autoregressive term for variance + ma : array_like, 2d + moving average term for variance, with coefficients for negative + shocks in second column + mu : float + constant in variance law of motion + scale : float + scale/standard deviation of innovation process in GARCH process + + Returns + ------- + err : array 1d, (nobs+?,) + simulated gjr-garch process, + h : array 1d, (nobs+?,) + simulated variance + etax : array 1d, (nobs+?,) + data matrix for constant and ma terms in variance equation + + Notes + ----- + + References + ---------- + + + + ''' + + if varinnovation is None: # rename ? + eta = scale*np.random.randn(nobs) + else: + eta = varinnovation + # copied from armageneratesample + etax = np.empty((nobs,3)) + etax[:,0] = mu + etax[:,1:] = (eta**2)[:,None] + etax[eta>0,2] = 0 + h = miso_lfilter(ar, ma, etax)[0] + + # + #h = (mu+h)**2 + #h = np.abs(h) + #h = np.exp(h) + #err = np.sqrt(h)*np.random.randn(nobs) + #print('h.shape', h.shape) + err = np.sqrt(h[:len(eta)])*eta #np.random.standard_t(8, size=len(h)) + return err, h, etax + +def loglike_GARCH11(params, y): + # Computes the likelihood vector of a GARCH11 + # assumes y is centered + + w = params[0] # constant (1); + alpha = params[1] # coefficient of lagged squared error + beta = params[2] # coefficient of lagged variance + + y2 = y**2 + nobs = y2.shape[0] + ht = np.zeros(nobs) + ht[0] = y2.mean() #sum(y2)/T; + + for i in range(1,nobs): + ht[i] = w + alpha*y2[i-1] + beta * ht[i-1] + + sqrtht = np.sqrt(ht) + x = y/sqrtht + + llvalues = -0.5*np.log(2*np.pi) - np.log(sqrtht) - 0.5*(x**2) + return llvalues.sum(), llvalues, ht + + +def test_misofilter(): + x = np.arange(20).reshape(10,2) + y, inp = miso_lfilter([1., -1],[[1,1],[0,0]], x) + assert_almost_equal(y[:-1], x.sum(1).cumsum(), decimal=15) + inp2 = signal.convolve(np.arange(20),np.ones(2))[1::2] + assert_almost_equal(inp[:-1], inp2, decimal=15) + + inp2 = signal.convolve(np.arange(20),np.ones(4))[1::2] + y, inp = miso_lfilter([1., -1],[[1,1],[1,1]], x) + assert_almost_equal(y, inp2.cumsum(), decimal=15) + assert_almost_equal(inp, inp2, decimal=15) + y, inp = miso_lfilter([1., 0],[[1,1],[1,1]], x) + assert_almost_equal(y, inp2, decimal=15) + assert_almost_equal(inp, inp2, decimal=15) + + x3 = np.column_stack((np.ones((x.shape[0],1)),x)) + y, inp = miso_lfilter([1., 0],np.array([[-2.0,3,1],[0.0,0.0,0]]),x3) + y3 = (x3*np.array([-2,3,1])).sum(1) + assert_almost_equal(y[:-1], y3, decimal=15) + assert_almost_equal(y, inp, decimal=15) + y4 = y3.copy() + y4[1:] += x3[:-1,1] + y, inp = miso_lfilter([1., 0],np.array([[-2.0,3,1],[0.0,1.0,0]]),x3) + assert_almost_equal(y[:-1], y4, decimal=15) + assert_almost_equal(y, inp, decimal=15) + y4 = y3.copy() + y4[1:] += x3[:-1,0] + y, inp = miso_lfilter([1., 0],np.array([[-2.0,3,1],[1.0,0.0,0]]),x3) + assert_almost_equal(y[:-1], y4, decimal=15) + assert_almost_equal(y, inp, decimal=15) + y, inp = miso_lfilter([1., -1],np.array([[-2.0,3,1],[1.0,0.0,0]]),x3) + assert_almost_equal(y[:-1], y4.cumsum(), decimal=15) + y4 = y3.copy() + y4[1:] += x3[:-1,2] + y, inp = miso_lfilter([1., 0],np.array([[-2.0,3,1],[0.0,0.0,1.0]]),x3) + assert_almost_equal(y[:-1], y4, decimal=15) + assert_almost_equal(y, inp, decimal=15) + y, inp = miso_lfilter([1., -1],np.array([[-2.0,3,1],[0.0,0.0,1.0]]),x3) + assert_almost_equal(y[:-1], y4.cumsum(), decimal=15) + + y, inp = miso_lfilter([1., 0],[[1,0],[1,0],[1,0]], x) + yt = np.convolve(x[:,0], [1,1,1]) + assert_almost_equal(y, yt, decimal=15) + assert_almost_equal(inp, yt, decimal=15) + y, inp = miso_lfilter([1., 0],[[0,1],[0,1],[0,1]], x) + yt = np.convolve(x[:,1], [1,1,1]) + assert_almost_equal(y, yt, decimal=15) + assert_almost_equal(inp, yt, decimal=15) + + y, inp = miso_lfilter([1., 0],[[0,1],[0,1],[1,1]], x) + yt = np.convolve(x[:,1], [1,1,1]) + yt[2:] += x[:,0] + assert_almost_equal(y, yt, decimal=15) + assert_almost_equal(inp, yt, decimal=15) + +def test_gjrgarch(): + # test impulse response of gjr simulator + varinno = np.zeros(100) + varinno[0] = 1. + errgjr5,hgjr5, etax5 = generate_gjrgarch(100, [1.0, 0], + [[1., 1,0],[0, 0.1,0.8],[0, 0.05,0.7],[0, 0.01,0.6]], + mu=0.0,scale=0.1, varinnovation=varinno) + ht = np.array([ 1., 0.1, 0.05, 0.01, 0., 0. ]) + assert_almost_equal(hgjr5[:6], ht, decimal=15) + + errgjr5,hgjr5, etax5 = generate_gjrgarch(100, [1.0, -1.0], + [[1., 1,0],[0, 0.1,0.8],[0, 0.05,0.7],[0, 0.01,0.6]], + mu=0.0,scale=0.1, varinnovation=varinno) + assert_almost_equal(hgjr5[:6], ht.cumsum(), decimal=15) + + errgjr5,hgjr5, etax5 = generate_gjrgarch(100, [1.0, 1.0], + [[1., 1,0],[0, 0.1,0.8],[0, 0.05,0.7],[0, 0.01,0.6]], + mu=0.0,scale=0.1, varinnovation=varinno) + ht1 = [0] + for h in ht: ht1.append(h-ht1[-1]) + assert_almost_equal(hgjr5[:6], ht1[1:], decimal=15) + + # negative shock + varinno = np.zeros(100) + varinno[0] = -1. + errgjr5,hgjr5, etax5 = generate_gjrgarch(100, [1.0, 0], + [[1., 1,0],[0, 0.1,0.8],[0, 0.05,0.7],[0, 0.01,0.6]], + mu=0.0,scale=0.1, varinnovation=varinno) + ht = np.array([ 1. , 0.9 , 0.75, 0.61, 0. , 0. ]) + assert_almost_equal(hgjr5[:6], ht, decimal=15) + + errgjr5,hgjr5, etax5 = generate_gjrgarch(100, [1.0, -1.0], + [[1., 1,0],[0, 0.1,0.8],[0, 0.05,0.7],[0, 0.01,0.6]], + mu=0.0,scale=0.1, varinnovation=varinno) + assert_almost_equal(hgjr5[:6], ht.cumsum(), decimal=15) + + errgjr5,hgjr5, etax5 = generate_gjrgarch(100, [1.0, 1.0], + [[1., 1,0],[0, 0.1,0.8],[0, 0.05,0.7],[0, 0.01,0.6]], + mu=0.0,scale=0.1, varinnovation=varinno) + ht1 = [0] + for h in ht: ht1.append(h-ht1[-1]) + assert_almost_equal(hgjr5[:6], ht1[1:], decimal=15) + + +''' +>>> print(signal.correlate(x3, np.array([[-2.0,3,1],[0.0,0.0,0]])[::-1,:],mode='full')[:-1, (x3.shape[1]+1)//2] +[ -1. 7. 15. 23. 31. 39. 47. 55. 63. 71.] +>>> (x3*np.array([-2,3,1])).sum(1) +array([ -1., 7., 15., 23., 31., 39., 47., 55., 63., 71.]) +''' + +def garchplot(err, h, title='Garch simulation'): + plt.figure() + plt.subplot(311) + plt.plot(err) + plt.title(title) + plt.ylabel('y') + plt.subplot(312) + plt.plot(err**2) + plt.ylabel('$y^2$') + plt.subplot(313) + plt.plot(h) + plt.ylabel('conditional variance') + +if __name__ == '__main__': + + #test_misofilter() + #test_gjrgarch() + + examples = ['garch'] + if 'arma' in examples: + arest = tsa.arima.ARIMA() + print("\nExample 1") + ar = [1.0, -0.8] + ma = [1.0, 0.5] + y1 = arest.generate_sample(ar,ma,1000,0.1) + y1 -= y1.mean() #no mean correction/constant in estimation so far + + arma1 = Arma(y1) + arma1.nar = 1 + arma1.nma = 1 + arma1res = arma1.fit(method='fmin') + print(arma1res.params) + + #Warning need new instance otherwise results carry over + arma2 = Arma(y1) + res2 = arma2.fit(method='bfgs') + print(res2.params) + print(res2.model.hessian(res2.params)) + print(ndt.Hessian(arma1.loglike, stepMax=1e-2)(res2.params)) + resls = arest.fit(y1,1,1) + print(resls[0]) + print(resls[1]) + + + + print('\nparameter estimate') + print('parameter of DGP ar(1), ma(1), sigma_error') + print([-0.8, 0.5, 0.1]) + print('mle with fmin') + print(arma1res.params) + print('mle with bfgs') + print(res2.params) + print('cond. least squares uses optim.leastsq ?') + errls = arest.error_estimate + print(resls[0], np.sqrt(np.dot(errls,errls)/errls.shape[0])) + + err = arma1.geterrors(res2.params) + print('cond least squares parameter cov') + #print(np.dot(err,err)/err.shape[0] * resls[1]) + #errls = arest.error_estimate + print(np.dot(errls,errls)/errls.shape[0] * resls[1]) + # print('fmin hessian') + # print(arma1res.model.optimresults['Hopt'][:2,:2]) + print('bfgs hessian') + print(res2.model.optimresults['Hopt'][:2,:2]) + print('numdifftools inverse hessian') + print(-np.linalg.inv(ndt.Hessian(arma1.loglike, stepMax=1e-2)(res2.params))[:2,:2]) + + arma3 = Arma(y1**2) + res3 = arma3.fit(method='bfgs') + print(res3.params) + + nobs = 1000 + + if 'garch' in examples: + err,h = generate_kindofgarch(nobs, [1.0, -0.95], [1.0, 0.1], mu=0.5) + plt.figure() + plt.subplot(211) + plt.plot(err) + plt.subplot(212) + plt.plot(h) + #plt.show() + + seed = 3842774 #91234 #8837708 + seed = np.random.randint(9999999) + print('seed', seed) + np.random.seed(seed) + ar1 = -0.9 + err,h = generate_garch(nobs, [1.0, ar1], [1.0, 0.50], mu=0.0,scale=0.1) + # plt.figure() + # plt.subplot(211) + # plt.plot(err) + # plt.subplot(212) + # plt.plot(h) + # plt.figure() + # plt.subplot(211) + # plt.plot(err[-400:]) + # plt.subplot(212) + # plt.plot(h[-400:]) + #plt.show() + garchplot(err, h) + garchplot(err[-400:], h[-400:]) + + + np.random.seed(seed) + errgjr,hgjr, etax = generate_gjrgarch(nobs, [1.0, ar1], + [[1,0],[0.5,0]], mu=0.0,scale=0.1) + garchplot(errgjr[:nobs], hgjr[:nobs], 'GJR-GARCH(1,1) Simulation - symmetric') + garchplot(errgjr[-400:nobs], hgjr[-400:nobs], 'GJR-GARCH(1,1) Simulation - symmetric') + + np.random.seed(seed) + errgjr2,hgjr2, etax = generate_gjrgarch(nobs, [1.0, ar1], + [[1,0],[0.1,0.9]], mu=0.0,scale=0.1) + garchplot(errgjr2[:nobs], hgjr2[:nobs], 'GJR-GARCH(1,1) Simulation') + garchplot(errgjr2[-400:nobs], hgjr2[-400:nobs], 'GJR-GARCH(1,1) Simulation') + + np.random.seed(seed) + errgjr3,hgjr3, etax3 = generate_gjrgarch(nobs, [1.0, ar1], + [[1,0],[0.1,0.9],[0.1,0.9],[0.1,0.9]], mu=0.0,scale=0.1) + garchplot(errgjr3[:nobs], hgjr3[:nobs], 'GJR-GARCH(1,3) Simulation') + garchplot(errgjr3[-400:nobs], hgjr3[-400:nobs], 'GJR-GARCH(1,3) Simulation') + + np.random.seed(seed) + errgjr4,hgjr4, etax4 = generate_gjrgarch(nobs, [1.0, ar1], + [[1., 1,0],[0, 0.1,0.9],[0, 0.1,0.9],[0, 0.1,0.9]], + mu=0.0,scale=0.1) + garchplot(errgjr4[:nobs], hgjr4[:nobs], 'GJR-GARCH(1,3) Simulation') + garchplot(errgjr4[-400:nobs], hgjr4[-400:nobs], 'GJR-GARCH(1,3) Simulation') + + varinno = np.zeros(100) + varinno[0] = 1. + errgjr5,hgjr5, etax5 = generate_gjrgarch(100, [1.0, -0.], + [[1., 1,0],[0, 0.1,0.8],[0, 0.05,0.7],[0, 0.01,0.6]], + mu=0.0,scale=0.1, varinnovation=varinno) + garchplot(errgjr5[:20], hgjr5[:20], 'GJR-GARCH(1,3) Simulation') + #garchplot(errgjr4[-400:nobs], hgjr4[-400:nobs], 'GJR-GARCH(1,3) Simulation') + + + #plt.show() + seed = np.random.randint(9999999) # 9188410 + print('seed', seed) + + x = np.arange(20).reshape(10,2) + x3 = np.column_stack((np.ones((x.shape[0],1)),x)) + y, inp = miso_lfilter([1., 0],np.array([[-2.0,3,1],[0.0,0.0,0]]),x3) + + nobs = 1000 + warmup = 1000 + np.random.seed(seed) + ar = [1.0, -0.7]#7, -0.16, -0.1] + #ma = [[1., 1, 0],[0, 0.6,0.1],[0, 0.1,0.1],[0, 0.1,0.1]] + ma = [[1., 0, 0],[0, 0.4,0.0]] #,[0, 0.9,0.0]] +# errgjr4,hgjr4, etax4 = generate_gjrgarch(warmup+nobs, [1.0, -0.99], +# [[1., 1, 0],[0, 0.6,0.1],[0, 0.1,0.1],[0, 0.1,0.1]], +# mu=0.2, scale=0.25) + + errgjr4,hgjr4, etax4 = generate_gjrgarch(warmup+nobs, ar, ma, + mu=0.4, scale=1.01) + errgjr4,hgjr4, etax4 = errgjr4[warmup:], hgjr4[warmup:], etax4[warmup:] + garchplot(errgjr4[:nobs], hgjr4[:nobs], 'GJR-GARCH(1,3) Simulation') + ggmod = Garch(errgjr4-errgjr4.mean())#hgjr4[:nobs])#-hgjr4.mean()) #errgjr4) + ggmod.nar = 1 + ggmod.nma = 1 + ggmod._start_params = np.array([-0.6, 0.1, 0.2, 0.0]) + ggres = ggmod.fit(start_params=np.array([-0.6, 0.1, 0.2, 0.0]), maxiter=1000) + print('ggres.params', ggres.params) + garchplot(ggmod.errorsest, ggmod.h) + #plt.show() + + print('Garch11') + print(optimize.fmin(lambda params: -loglike_GARCH11(params, errgjr4-errgjr4.mean())[0], [0.93, 0.9, 0.2])) + + ggmod0 = Garch0(errgjr4-errgjr4.mean())#hgjr4[:nobs])#-hgjr4.mean()) #errgjr4) + ggmod0.nar = 1 + ggmod.nma = 1 + start_params = np.array([-0.6, 0.2, 0.1]) + ggmod0._start_params = start_params #np.array([-0.6, 0.1, 0.2, 0.0]) + ggres0 = ggmod0.fit(start_params=start_params, maxiter=2000) + print('ggres0.params', ggres0.params) + + ggmod0 = Garch0(errgjr4-errgjr4.mean())#hgjr4[:nobs])#-hgjr4.mean()) #errgjr4) + ggmod0.nar = 1 + ggmod.nma = 1 + start_params = np.array([-0.6, 0.2, 0.1]) + ggmod0._start_params = start_params #np.array([-0.6, 0.1, 0.2, 0.0]) + ggres0 = ggmod0.fit(start_params=start_params, method='bfgs', maxiter=2000) + print('ggres0.params', ggres0.params) + + + if 'rpy' in examples: + from rpy import r + f = r.formula('~garch(1, 1)') + #fit = r.garchFit(f, data = errgjr4) + x = r.garchSim( n = 500) + print('R acf', tsa.acf(np.power(x,2))[:15]) + arma3 = Arma(np.power(x,2)) + arma3res = arma3.fit(start_params=[-0.2,0.1,0.5],maxiter=5000) + print(arma3res.params) + arma3b = Arma(np.power(x,2)) + arma3bres = arma3b.fit(start_params=[-0.2,0.1,0.5],maxiter=5000, method='bfgs') + print(arma3bres.params) + + llf = loglike_GARCH11([0.93, 0.9, 0.2], errgjr4) + print(llf[0]) + + erro,ho, etaxo = generate_gjrgarch(20, ar, ma, mu=0.04, scale=0.01, + varinnovation = np.ones(20)) + + + ''' this looks relatively good + + >>> Arma.initialize = lambda x: x + >>> arma3 = Arma(errgjr4**2) + >>> arma3res = arma3.fit() + Warning: Maximum number of function evaluations has been exceeded. + >>> arma3res.params + array([-0.775, -0.583, -0.001]) + >>> arma2.nar + 1 + >>> arma2.nma + 1 + + unit root ? + >>> arma3 = Arma(hgjr4) + >>> arma3res = arma3.fit() + Optimization terminated successfully. + Current function value: -3641.529780 + Iterations: 250 + Function evaluations: 458 + >>> arma3res.params + array([ -1.000e+00, -3.096e-04, 6.343e-03]) + + or maybe not great + >>> arma3res = arma3.fit(start_params=[-0.8,0.1,0.5],maxiter=5000) + Warning: Maximum number of function evaluations has been exceeded. + >>> arma3res.params + array([-0.086, 0.186, -0.001]) + >>> arma3res = arma3.fit(start_params=[-0.8,0.1,0.5],maxiter=5000,method='bfgs') + Divide-by-zero encountered: rhok assumed large + Optimization terminated successfully. + Current function value: -5988.332952 + Iterations: 16 + Function evaluations: 245 + Gradient evaluations: 49 + >>> arma3res.params + array([ -9.995e-01, -9.715e-01, 6.501e-04]) + ''' + + ''' + current problems + persistence in errgjr looks too low, small tsa.acf(errgjr4**2)[:15] + as a consequence the ML estimate has also very little persistence, + estimated ar term is much too small + -> need to compare with R or matlab + + help.search("garch") : ccgarch, garchSim(fGarch), garch(tseries) + HestonNandiGarchFit(fOptions) + + > library('fGarch') + > spec = garchSpec() + > x = garchSim(model = spec@model, n = 500) + > acf(x**2) # has low correlation + but fit has high parameters: + > fit = garchFit(~garch(1, 1), data = x) + + with rpy: + + from rpy import r + r.library('fGarch') + f = r.formula('~garch(1, 1)') + fit = r.garchFit(f, data = errgjr4) + Final Estimate: + LLH: -3198.2 norm LLH: -3.1982 + mu omega alpha1 beta1 + 1.870485e-04 9.437557e-05 3.457349e-02 1.000000e-08 + + second run with ar = [1.0, -0.8] ma = [[1., 0, 0],[0, 1.0,0.0]] + Final Estimate: + LLH: -3979.555 norm LLH: -3.979555 + mu omega alpha1 beta1 + 1.465050e-05 1.641482e-05 1.092600e-01 9.654438e-02 + mine: + >>> ggres.params + array([ -2.000e-06, 3.283e-03, 3.769e-01, -1.000e-06]) + + another rain, same ar, ma + Final Estimate: + LLH: -3956.197 norm LLH: -3.956197 + mu omega alpha1 beta1 + 7.487278e-05 1.171238e-06 1.511080e-03 9.440843e-01 + + every step needs to be compared and tested + + something looks wrong with likelihood function, either a silly + mistake or still some conceptional problems + + * found the silly mistake, I was normalizing the errors before + plugging into espression for likelihood function + + * now gjr garch estimation works and produces results that are very + close to the explicit garch11 estimation + + initial conditions for miso_filter need to be cleaned up + + lots of clean up to to after the bug hunting + + ''' + y = np.random.randn(20) + params = [0.93, 0.9, 0.2] + lls, llt, ht = loglike_GARCH11(params, y) + sigma2 = ht + axis=0 + nobs = len(ht) + llike = -0.5 * (np.sum(np.log(sigma2),axis) + + np.sum((y**2)/sigma2, axis) + + nobs*np.log(2*np.pi)) + print(lls, llike) + #print(np.log(stats.norm.pdf(y,scale=np.sqrt(ht))).sum()) + + + + ''' + >>> optimize.fmin(lambda params: -loglike_GARCH11(params, errgjr4)[0], [0.93, 0.9, 0.2]) + Optimization terminated successfully. + Current function value: 7312.393886 + Iterations: 95 + Function evaluations: 175 + array([ 3.691, 0.072, 0.932]) + >>> ar + [1.0, -0.93000000000000005] + >>> ma + [[1.0, 0, 0], [0, 0.90000000000000002, 0.0]] + ''' + + + np.random.seed(1) + tseries = np.zeros(200) # set first observation + for i in range(1,200): # get 99 more observations based on the given process + error = np.random.randn() + tseries[i] = .9 * tseries[i-1] + .01 * error + + tseries = tseries[100:] + + armodel = AR(tseries) + #armodel.fit(method='bfgs-b') + #armodel.fit(method='tnc') + #powell should be the most robust, see Hamilton 5.7 + armodel.fit(method='powell', penalty=True) + # The below don't work yet + #armodel.fit(method='newton', penalty=True) + #armodel.fit(method='broyden', penalty=True) + print("Unconditional MLE for AR(1) y_t = .9*y_t-1 +.01 * err") + print(armodel.params) diff --git a/statsmodels/sandbox/tsa/movstat.py b/statsmodels/sandbox/tsa/movstat.py new file mode 100644 index 0000000..8875b37 --- /dev/null +++ b/statsmodels/sandbox/tsa/movstat.py @@ -0,0 +1,413 @@ +'''using scipy signal and numpy correlate to calculate some time series +statistics + +original developer notes + +see also scikits.timeseries (movstat is partially inspired by it) +added 2009-08-29 +timeseries moving stats are in c, autocorrelation similar to here +I thought I saw moving stats somewhere in python, maybe not) + + +TODO + +moving statistics +- filters don't handle boundary conditions nicely (correctly ?) +e.g. minimum order filter uses 0 for out of bounds value +-> append and prepend with last resp. first value +- enhance for nd arrays, with axis = 0 + + + +Note: Equivalence for 1D signals +>>> np.all(signal.correlate(x,[1,1,1],'valid')==np.correlate(x,[1,1,1])) +True +>>> np.all(ndimage.filters.correlate(x,[1,1,1], origin = -1)[:-3+1]==np.correlate(x,[1,1,1])) +True + +# multidimensional, but, it looks like it uses common filter across time series, no VAR +ndimage.filters.correlate(np.vstack([x,x]),np.array([[1,1,1],[0,0,0]]), origin = 1) +ndimage.filters.correlate(x,[1,1,1],origin = 1)) +ndimage.filters.correlate(np.vstack([x,x]),np.array([[0.5,0.5,0.5],[0.5,0.5,0.5]]), \ +origin = 1) + +>>> np.all(ndimage.filters.correlate(np.vstack([x,x]),np.array([[1,1,1],[0,0,0]]), origin = 1)[0]==\ +ndimage.filters.correlate(x,[1,1,1],origin = 1)) +True +>>> np.all(ndimage.filters.correlate(np.vstack([x,x]),np.array([[0.5,0.5,0.5],[0.5,0.5,0.5]]), \ +origin = 1)[0]==ndimage.filters.correlate(x,[1,1,1],origin = 1)) + + +update +2009-09-06: cosmetic changes, rearrangements +''' + +from __future__ import print_function +import numpy as np +from scipy import signal + +from numpy.testing import assert_array_equal, assert_array_almost_equal + + +def expandarr(x,k): + #make it work for 2D or nD with axis + kadd = k + if np.ndim(x) == 2: + kadd = (kadd, np.shape(x)[1]) + return np.r_[np.ones(kadd)*x[0],x,np.ones(kadd)*x[-1]] + +def movorder(x, order = 'med', windsize=3, lag='lagged'): + '''moving order statistics + + Parameters + ---------- + x : array + time series data + order : float or 'med', 'min', 'max' + which order statistic to calculate + windsize : int + window size + lag : 'lagged', 'centered', or 'leading' + location of window relative to current position + + Returns + ------- + filtered array + + + ''' + + #if windsize is even should it raise ValueError + if lag == 'lagged': + lead = windsize//2 + elif lag == 'centered': + lead = 0 + elif lag == 'leading': + lead = -windsize//2 +1 + else: + raise ValueError + if np.isfinite(order): #if np.isnumber(order): + ord = order # note: ord is a builtin function + elif order == 'med': + ord = (windsize - 1)/2 + elif order == 'min': + ord = 0 + elif order == 'max': + ord = windsize - 1 + else: + raise ValueError + + #return signal.order_filter(x,np.ones(windsize),ord)[:-lead] + xext = expandarr(x, windsize) + #np.r_[np.ones(windsize)*x[0],x,np.ones(windsize)*x[-1]] + return signal.order_filter(xext,np.ones(windsize),ord)[windsize-lead:-(windsize+lead)] + +def check_movorder(): + '''graphical test for movorder''' + import matplotlib.pylab as plt + x = np.arange(1,10) + xo = movorder(x, order='max') + assert_array_equal(xo, x) + x = np.arange(10,1,-1) + xo = movorder(x, order='min') + assert_array_equal(xo, x) + assert_array_equal(movorder(x, order='min', lag='centered')[:-1], x[1:]) + + tt = np.linspace(0,2*np.pi,15) + x = np.sin(tt) + 1 + xo = movorder(x, order='max') + plt.figure() + plt.plot(tt,x,'.-',tt,xo,'.-') + plt.title('moving max lagged') + xo = movorder(x, order='max', lag='centered') + plt.figure() + plt.plot(tt,x,'.-',tt,xo,'.-') + plt.title('moving max centered') + xo = movorder(x, order='max', lag='leading') + plt.figure() + plt.plot(tt,x,'.-',tt,xo,'.-') + plt.title('moving max leading') + +# identity filter +##>>> signal.order_filter(x,np.ones(1),0) +##array([ 1., 2., 3., 4., 5., 6., 7., 8., 9.]) +# median filter +##signal.medfilt(np.sin(x), kernel_size=3) +##>>> plt.figure() +## +##>>> x=np.linspace(0,3,100);plt.plot(x,np.sin(x),x,signal.medfilt(np.sin(x), kernel_size=3)) + +# remove old version +##def movmeanvar(x, windowsize=3, valid='same'): +## ''' +## this should also work along axis or at least for columns +## ''' +## n = x.shape[0] +## x = expandarr(x, windowsize - 1) +## takeslice = slice(windowsize-1, n + windowsize-1) +## avgkern = (np.ones(windowsize)/float(windowsize)) +## m = np.correlate(x, avgkern, 'same')#[takeslice] +## print(m.shape) +## print(x.shape) +## xm = x - m +## v = np.correlate(x*x, avgkern, 'same') - m**2 +## v1 = np.correlate(xm*xm, avgkern, valid) #not correct for var of window +###>>> np.correlate(xm*xm,np.array([1,1,1])/3.0,'valid')-np.correlate(xm*xm,np.array([1,1,1])/3.0,'valid')**2 +## return m[takeslice], v[takeslice], v1 + +def movmean(x, windowsize=3, lag='lagged'): + '''moving window mean + + + Parameters + ---------- + x : array + time series data + windsize : int + window size + lag : 'lagged', 'centered', or 'leading' + location of window relative to current position + + Returns + ------- + mk : array + moving mean, with same shape as x + + + Notes + ----- + for leading and lagging the data array x is extended by the closest value of the array + + + ''' + return movmoment(x, 1, windowsize=windowsize, lag=lag) + +def movvar(x, windowsize=3, lag='lagged'): + '''moving window variance + + + Parameters + ---------- + x : array + time series data + windsize : int + window size + lag : 'lagged', 'centered', or 'leading' + location of window relative to current position + + Returns + ------- + mk : array + moving variance, with same shape as x + + + ''' + m1 = movmoment(x, 1, windowsize=windowsize, lag=lag) + m2 = movmoment(x, 2, windowsize=windowsize, lag=lag) + return m2 - m1*m1 + +def movmoment(x, k, windowsize=3, lag='lagged'): + '''non-central moment + + + Parameters + ---------- + x : array + time series data + windsize : int + window size + lag : 'lagged', 'centered', or 'leading' + location of window relative to current position + + Returns + ------- + mk : array + k-th moving non-central moment, with same shape as x + + + Notes + ----- + If data x is 2d, then moving moment is calculated for each + column. + + ''' + + windsize = windowsize + #if windsize is even should it raise ValueError + if lag == 'lagged': + #lead = -0 + windsize #windsize//2 + lead = -0# + (windsize-1) + windsize//2 + sl = slice((windsize-1) or None, -2*(windsize-1) or None) + elif lag == 'centered': + lead = -windsize//2 #0#-1 #+ #(windsize-1) + sl = slice((windsize-1)+windsize//2 or None, -(windsize-1)-windsize//2 or None) + elif lag == 'leading': + #lead = -windsize +1#+1 #+ (windsize-1)#//2 +1 + lead = -windsize +2 #-windsize//2 +1 + sl = slice(2*(windsize-1)+1+lead or None, -(2*(windsize-1)+lead)+1 or None) + else: + raise ValueError + + avgkern = (np.ones(windowsize)/float(windowsize)) + xext = expandarr(x, windsize-1) + #Note: expandarr increases the array size by 2*(windsize-1) + + #sl = slice(2*(windsize-1)+1+lead or None, -(2*(windsize-1)+lead)+1 or None) + print(sl) + + if xext.ndim == 1: + return np.correlate(xext**k, avgkern, 'full')[sl] + #return np.correlate(xext**k, avgkern, 'same')[windsize-lead:-(windsize+lead)] + else: + print(xext.shape) + print(avgkern[:,None].shape) + + # try first with 2d along columns, possibly ndim with axis + return signal.correlate(xext**k, avgkern[:,None], 'full')[sl,:] + + + + + + + +#x=0.5**np.arange(10);xm=x-x.mean();a=np.correlate(xm,[1],'full') +#x=0.5**np.arange(3);np.correlate(x,x,'same') +##>>> x=0.5**np.arange(10);xm=x-x.mean();a=np.correlate(xm,xo,'full') +## +##>>> xo=np.ones(10);d=np.correlate(xo,xo,'full') +##>>> xo +##xo=np.ones(10);d=np.correlate(xo,xo,'full') +##>>> x=np.ones(10);xo=x-x.mean();a=np.correlate(xo,xo,'full') +##>>> xo=np.ones(10);d=np.correlate(xo,xo,'full') +##>>> d +##array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 9., +## 8., 7., 6., 5., 4., 3., 2., 1.]) + + +##def ccovf(): +## pass +## #x=0.5**np.arange(10);xm=x-x.mean();a=np.correlate(xm,xo,'full') + +__all__ = ['movorder', 'movmean', 'movvar', 'movmoment'] + +if __name__ == '__main__': + + print('\ncheckin moving mean and variance') + nobs = 10 + x = np.arange(nobs) + ws = 3 + ave = np.array([ 0., 1/3., 1., 2., 3., 4., 5., 6., 7., 8., + 26/3., 9]) + va = np.array([[ 0. , 0. ], + [ 0.22222222, 0.88888889], + [ 0.66666667, 2.66666667], + [ 0.66666667, 2.66666667], + [ 0.66666667, 2.66666667], + [ 0.66666667, 2.66666667], + [ 0.66666667, 2.66666667], + [ 0.66666667, 2.66666667], + [ 0.66666667, 2.66666667], + [ 0.66666667, 2.66666667], + [ 0.22222222, 0.88888889], + [ 0. , 0. ]]) + ave2d = np.c_[ave, 2*ave] + print(movmean(x, windowsize=ws, lag='lagged')) + print(movvar(x, windowsize=ws, lag='lagged')) + print([np.var(x[i-ws:i]) for i in range(ws, nobs)]) + m1 = movmoment(x, 1, windowsize=3, lag='lagged') + m2 = movmoment(x, 2, windowsize=3, lag='lagged') + print(m1) + print(m2) + print(m2 - m1*m1) + + # this implicitly also tests moment + assert_array_almost_equal(va[ws-1:,0], + movvar(x, windowsize=3, lag='leading')) + assert_array_almost_equal(va[ws//2:-ws//2+1,0], + movvar(x, windowsize=3, lag='centered')) + assert_array_almost_equal(va[:-ws+1,0], + movvar(x, windowsize=ws, lag='lagged')) + + + + print('\nchecking moving moment for 2d (columns only)') + x2d = np.c_[x, 2*x] + print(movmoment(x2d, 1, windowsize=3, lag='centered')) + print(movmean(x2d, windowsize=ws, lag='lagged')) + print(movvar(x2d, windowsize=ws, lag='lagged')) + assert_array_almost_equal(va[ws-1:,:], + movvar(x2d, windowsize=3, lag='leading')) + assert_array_almost_equal(va[ws//2:-ws//2+1,:], + movvar(x2d, windowsize=3, lag='centered')) + assert_array_almost_equal(va[:-ws+1,:], + movvar(x2d, windowsize=ws, lag='lagged')) + + assert_array_almost_equal(ave2d[ws-1:], + movmoment(x2d, 1, windowsize=3, lag='leading')) + assert_array_almost_equal(ave2d[ws//2:-ws//2+1], + movmoment(x2d, 1, windowsize=3, lag='centered')) + assert_array_almost_equal(ave2d[:-ws+1], + movmean(x2d, windowsize=ws, lag='lagged')) + + from scipy import ndimage + print(ndimage.filters.correlate1d(x2d, np.array([1,1,1])/3., axis=0)) + + + #regression test check + + xg = np.array([ 0. , 0.1, 0.3, 0.6, 1. , 1.5, 2.1, 2.8, 3.6, + 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, + 13.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, + 22.5, 23.5, 24.5, 25.5, 26.5, 27.5, 28.5, 29.5, 30.5, + 31.5, 32.5, 33.5, 34.5, 35.5, 36.5, 37.5, 38.5, 39.5, + 40.5, 41.5, 42.5, 43.5, 44.5, 45.5, 46.5, 47.5, 48.5, + 49.5, 50.5, 51.5, 52.5, 53.5, 54.5, 55.5, 56.5, 57.5, + 58.5, 59.5, 60.5, 61.5, 62.5, 63.5, 64.5, 65.5, 66.5, + 67.5, 68.5, 69.5, 70.5, 71.5, 72.5, 73.5, 74.5, 75.5, + 76.5, 77.5, 78.5, 79.5, 80.5, 81.5, 82.5, 83.5, 84.5, + 85.5, 86.5, 87.5, 88.5, 89.5, 90.5, 91.5, 92.5, 93.5, + 94.5]) + + assert_array_almost_equal(xg, movmean(np.arange(100), 10,'lagged')) + + xd = np.array([ 0.3, 0.6, 1. , 1.5, 2.1, 2.8, 3.6, 4.5, 5.5, + 6.5, 7.5, 8.5, 9.5, 10.5, 11.5, 12.5, 13.5, 14.5, + 15.5, 16.5, 17.5, 18.5, 19.5, 20.5, 21.5, 22.5, 23.5, + 24.5, 25.5, 26.5, 27.5, 28.5, 29.5, 30.5, 31.5, 32.5, + 33.5, 34.5, 35.5, 36.5, 37.5, 38.5, 39.5, 40.5, 41.5, + 42.5, 43.5, 44.5, 45.5, 46.5, 47.5, 48.5, 49.5, 50.5, + 51.5, 52.5, 53.5, 54.5, 55.5, 56.5, 57.5, 58.5, 59.5, + 60.5, 61.5, 62.5, 63.5, 64.5, 65.5, 66.5, 67.5, 68.5, + 69.5, 70.5, 71.5, 72.5, 73.5, 74.5, 75.5, 76.5, 77.5, + 78.5, 79.5, 80.5, 81.5, 82.5, 83.5, 84.5, 85.5, 86.5, + 87.5, 88.5, 89.5, 90.5, 91.5, 92.5, 93.5, 94.5, 95.4, + 96.2, 96.9, 97.5, 98. , 98.4, 98.7, 98.9, 99. ]) + assert_array_almost_equal(xd, movmean(np.arange(100), 10,'leading')) + + xc = np.array([ 1.36363636, 1.90909091, 2.54545455, 3.27272727, + 4.09090909, 5. , 6. , 7. , + 8. , 9. , 10. , 11. , + 12. , 13. , 14. , 15. , + 16. , 17. , 18. , 19. , + 20. , 21. , 22. , 23. , + 24. , 25. , 26. , 27. , + 28. , 29. , 30. , 31. , + 32. , 33. , 34. , 35. , + 36. , 37. , 38. , 39. , + 40. , 41. , 42. , 43. , + 44. , 45. , 46. , 47. , + 48. , 49. , 50. , 51. , + 52. , 53. , 54. , 55. , + 56. , 57. , 58. , 59. , + 60. , 61. , 62. , 63. , + 64. , 65. , 66. , 67. , + 68. , 69. , 70. , 71. , + 72. , 73. , 74. , 75. , + 76. , 77. , 78. , 79. , + 80. , 81. , 82. , 83. , + 84. , 85. , 86. , 87. , + 88. , 89. , 90. , 91. , + 92. , 93. , 94. , 94.90909091, + 95.72727273, 96.45454545, 97.09090909, 97.63636364]) + assert_array_almost_equal(xc, movmean(np.arange(100), 11,'centered')) diff --git a/statsmodels/sandbox/tsa/notes_organize.txt b/statsmodels/sandbox/tsa/notes_organize.txt new file mode 100644 index 0000000..a80820d --- /dev/null +++ b/statsmodels/sandbox/tsa/notes_organize.txt @@ -0,0 +1,227 @@ + + + +scikits.statsmodels.sandbox.tsa.kalmanf +--------------------------------------- +ARMA : ARMA model using the exact Kalman Filter +StateSpaceModel : +kalmanfilter : Returns the negative log-likelihood of y +conditional on the information set +kalmansmooth : +updatematrices : TODO: change API, update names + + +scikits.statsmodels.sandbox.tsa.arima +------------------------------------- + +runs ok, no refactoring bugs +has examples and monte carlo that can be split up into example files + +ARIMA : currently ARMA only, no differencing used - no I +arma2ar : get the AR representation of an ARMA process +arma2ma : get the impulse response function (MA representation) for +ARMA process +arma_acf : theoretical autocovariance function of ARMA process +arma_acovf : theoretical autocovariance function of ARMA process +arma_generate_sample : generate an random sample of an ARMA process +arma_impulse_response : get the impulse response function (MA +representation) for ARMA process +arma_pacf : partial autocorrelation function of an ARMA process +deconvolve : Deconvolves divisor out of signal, division of +polynomials for n terms +index2lpol : expand coefficients to lag poly +lpol2index : remove zeros from lagpolynomial, squeezed +representation with index +mcarma22 : run Monte Carlo for ARMA(2,2) + + +scikits.statsmodels.sandbox.tsa.varma +------------------------------------- + +just filter experiments +needed to fix import for acf example + +VAR : multivariate linear filter +VARMA : multivariate linear filter + +scikits.statsmodels.sandbox.tsa.varma_tools +------------------------------------------- + +Helper and filter functions for VAR and VARMA, and basic VAR class +needed import fix in top of module +maybe rename to varma_process +in "main" example for VarmaPoly, and some Var fit +Var could be used for Granger Causality tests, otherwise it's pretty limited + +Var : + simultaneous OLS estimation +VarmaPoly : class to keep track of Varma polynomial format + working with and transforming VARMA Lag-Polynomials (3d) +ar2full : make reduced lagpolynomial into a right side lagpoly array +ar2lhs : convert full (rhs) lagpolynomial into a reduced, left side +lagpoly array +padone : pad with zeros along one axis, currently only axis=0 +trimone : trim number of array elements along one axis +varfilter : apply an autoregressive filter to a series x +vargenerate : generate an VAR process with errors u +varinversefilter : creates inverse ar filter (MA representation) recursively + + +scikits.statsmodels.sandbox.tsa.try_fi +-------------------------------------- + +(not included by script that generates this list) +various functions to build lag-polynomials for fractional and seasonal integration +and function ar2arma minimizes distance in terms of impulse response function + +move these to a module or rename + +scikits.statsmodels.sandbox.tsa.try_var_convolve.py +--------------------------------------------------- + +(not included by script that generates this list) +two functions: +arfilter : autoregressive filter for 1d, 2d and 3d +fftconvolve : multidimensional filtering using fft + +many examples, but I'm not sure this (fft) is correct +incompletely copied for interpreter session +currently raises exception because a variable (imp) is not defined + +scikits.statsmodels.sandbox.tsa.try_var_convolve.py +--------------------------------------------------- + +(not included by script that generates this list) +includes functions for +detrending, +(theoretical) acovf and similar for special cases +acf plot functions + +(partially copied from matplotlib.mlab) + +currently exception: FIXED +uses arima.ARIMA class without data in constructor, and order now has 3 values and +is keyword with tuple as value + +move plot function to new graphics directory ? + + +scikits.statsmodels.sandbox.regression.mle +------------------------------------------ + +one refactoring bug fixed, because arima.ARIMA needs data, use class method instead +runs without exception, but I didn't look at any results +"main" has quite a lot + +AR : Notes +Arma : univariate Autoregressive Moving Average model +Garch : Garch model gjrgarch (t-garch) +Garch0 : Garch model, +GarchX : Garch model, +LikelihoodModel : Likelihood model is a subclass of Model. +TSMLEModel : univariate time series model for estimation with +maximum likelihood +garchplot : +generate_garch : simulate standard garch +generate_gjrgarch : simulate gjr garch process +generate_kindofgarch : simulate garch like process but not squared +errors in arma +gjrconvertparams : flat to matrix +loglike_GARCH11 : +miso_lfilter : use nd convolution to merge inputs, +normloglike : +test_gjrgarch : +test_misofilter : + +Other +----- +diffusion: continuous time processes, produce nice graphs but parameterization is +a bit inconsistent. + + +script files +============ + +sandbox/tsa/try_arma_more.py +---------------------------- + +imports scikits.talkbox which is not compiled against my current numpy and doesn't +run +contains +arma_periodogram : theoretical periodogram + + +Proposed Structure (preliminary) +================================ + +arima_estimation +---------------- +ARIMA class for estimation, wrapper or containing different estimators +other wrappers: here or in separate ??? + - support for choosing lag-length + + +arma_process +------------ +all theoretical properties for given parameters +simulation method with options: initial conditions, errors, (?) not sure what else + +varma_process +------------- +including VarmaPoly and impulse response functions + +filters +------- +miso_filter (should be in cython eventually) +ar_filter : fast VAR filter with convolution or fft convolution +(not sure what's the relationship between the two) +others ??? + +stattools +--------- +empirical properties +acf, ... + +tsatools +-------- +helper functions +lagmat +detrend ??? + +others, unclear +--------------- +??? + +open questions +============== + +support for exog +---------------- +is incomplete or missing from some implementations +not clear parameterization +- ARMAX A(L)y_t = C(L)x_t + B(L)e_t +- ARMAX-simple A(L)y_t = beta x_t + B(L)e_t + Note: covers previous version by extending x_t + +- ARMA residuals y_t = beta x_t + u_t, and A(L)u_t = B(L)e_t +- ARMAX 2-step A(L)(y_t - beta x_t) = B(L)e_t + Note: looks the same as ARMA residuals, implies + A(L)y_t = A(L)x_t + B(L)e_t + +- ARMAX A(L)(y_t - A^{-1}(L) C(L) x_t) = B(L)e_t + this doesn't look useful, unless we cutoff A^{-1}(L) + +problem: signal.lfilter can only handle ARMAX residuals model (I think) +deterministic trend have ARMAX-simple model, e.g. in unit root tests + + +support for seasonal and "sparse" lag-polynomials +------------------------------------------------- +- fit functions need support for different lag structures, + e.g. zeros, multiplicative +- support for pre-filters, e.g. (seasonal) differencing + + + + + diff --git a/statsmodels/sandbox/tsa/try_arma_more.py b/statsmodels/sandbox/tsa/try_arma_more.py new file mode 100644 index 0000000..9986e56 --- /dev/null +++ b/statsmodels/sandbox/tsa/try_arma_more.py @@ -0,0 +1,132 @@ +# -*- coding: utf-8 -*- +"""Periodograms for ARMA and time series + +theoretical periodogram of ARMA process and different version +of periodogram estimation + +uses scikits.talkbox and matplotlib + + +Created on Wed Oct 14 23:02:19 2009 + +Author: josef-pktd +""" +from __future__ import print_function +import numpy as np +from scipy import signal, ndimage +import matplotlib.mlab as mlb +import matplotlib.pyplot as plt + +from statsmodels.tsa.arima_process import arma_generate_sample +from statsmodels.tsa.stattools import acovf +hastalkbox = False +try: + import scikits.talkbox.spectral.basic as stbs +except ImportError: + hastalkbox = False + +ar = [1., -0.7]#[1,0,0,0,0,0,0,-0.7] +ma = [1., 0.3] + +ar = np.convolve([1.]+[0]*50 +[-0.6], ar) +ar = np.convolve([1., -0.5]+[0]*49 +[-0.3], ar) + +n_startup = 1000 +nobs = 1000 +# throwing away samples at beginning makes sample more "stationary" + +xo = arma_generate_sample(ar,ma,n_startup+nobs) +x = xo[n_startup:] + + +plt.figure() +plt.plot(x) + +rescale = 0 + +w, h = signal.freqz(ma, ar) +sd = np.abs(h)**2/np.sqrt(2*np.pi) + +if np.sum(np.isnan(h)) > 0: + # this happens with unit root or seasonal unit root' + print('Warning: nan in frequency response h') + h[np.isnan(h)] = 1. + rescale = 0 + + + +#replace with signal.order_filter ? +pm = ndimage.filters.maximum_filter(sd, footprint=np.ones(5)) +maxind = np.nonzero(pm == sd) +print('local maxima frequencies') +wmax = w[maxind] +sdmax = sd[maxind] + + +plt.figure() +plt.subplot(2,3,1) +if rescale: + plt.plot(w, sd/sd[0], '-', wmax, sdmax/sd[0], 'o') +# plt.plot(w, sd/sd[0], '-') +# plt.hold() +# plt.plot(wmax, sdmax/sd[0], 'o') +else: + plt.plot(w, sd, '-', wmax, sdmax, 'o') +# plt.hold() +# plt.plot(wmax, sdmax, 'o') + +plt.title('DGP') + +sdm, wm = mlb.psd(x) +sdm = sdm.ravel() +pm = ndimage.filters.maximum_filter(sdm, footprint=np.ones(5)) +maxind = np.nonzero(pm == sdm) + +plt.subplot(2,3,2) +if rescale: + plt.plot(wm,sdm/sdm[0], '-', wm[maxind], sdm[maxind]/sdm[0], 'o') +else: + plt.plot(wm, sdm, '-', wm[maxind], sdm[maxind], 'o') +plt.title('matplotlib') + +if hastalkbox: + sdp, wp = stbs.periodogram(x) + plt.subplot(2,3,3) + + if rescale: + plt.plot(wp,sdp/sdp[0]) + else: + plt.plot(wp, sdp) + plt.title('stbs.periodogram') + +xacov = acovf(x, unbiased=False) +plt.subplot(2,3,4) +plt.plot(xacov) +plt.title('autocovariance') + +nr = len(x)#*2/3 +#xacovfft = np.fft.fft(xacov[:nr], 2*nr-1) +xacovfft = np.fft.fft(np.correlate(x,x,'full')) +#abs(xacovfft)**2 or equivalently +xacovfft = xacovfft * xacovfft.conj() + +plt.subplot(2,3,5) +if rescale: + plt.plot(xacovfft[:nr]/xacovfft[0]) +else: + plt.plot(xacovfft[:nr]) + +plt.title('fft') + +if hastalkbox: + sdpa, wpa = stbs.arspec(x, 50) + plt.subplot(2,3,6) + + if rescale: + plt.plot(wpa,sdpa/sdpa[0]) + else: + plt.plot(wpa, sdpa) + plt.title('stbs.arspec') + + +#plt.show() diff --git a/statsmodels/sandbox/tsa/try_fi.py b/statsmodels/sandbox/tsa/try_fi.py new file mode 100644 index 0000000..b3bddfe --- /dev/null +++ b/statsmodels/sandbox/tsa/try_fi.py @@ -0,0 +1,69 @@ + +''' +using lfilter to get fractional integration polynomial (1-L)^d, d<1 +`ri` is (1-L)^(-d), d<1 + +second part in here is ar2arma + +only examples left + +''' +from __future__ import print_function +import numpy as np +from scipy.special import gamma +from scipy import signal + +from statsmodels.tsa.arima_process import (lpol_fiar, lpol_fima, + ar2arma, arma_impulse_response) + + + +if __name__ == '__main__': + d = 0.4 + n = 1000 + j = np.arange(n*10) + ri0 = gamma(d+j)/(gamma(j+1)*gamma(d)) + ri = lpol_fima(d, n=n) # get_ficoefs(d, n=n) old naming? + riinv = signal.lfilter([1], ri, [1]+[0]*(n-1))#[[5,10,20,25]] + ''' + array([-0.029952 , -0.01100641, -0.00410998, -0.00299859]) + >>> d=0.4; j=np.arange(1000);ri=gamma(d+j)/(gamma(j+1)*gamma(d)) + >>> # (1-L)^d, d<1 is + >>> lfilter([1], ri, [1]+[0]*30) + array([ 1. , -0.4 , -0.12 , -0.064 , -0.0416 , + -0.029952 , -0.0229632 , -0.01837056, -0.01515571, -0.01279816, + -0.01100641, -0.0096056 , -0.00848495, -0.00757118, -0.00681406, + -0.00617808, -0.0056375 , -0.00517324, -0.00477087, -0.00441934, + -0.00410998, -0.00383598, -0.00359188, -0.00337324, -0.00317647, + -0.00299859, -0.00283712, -0.00269001, -0.00255551, -0.00243214, + -0.00231864]) + >>> # verified for points [[5,10,20,25]] at 4 decimals with Bhardwaj, Swanson, Journal of Eonometrics 2006 + ''' + print(lpol_fiar(0.4, n=20)) + print(lpol_fima(-0.4, n=20)) + print(np.sum((lpol_fima(-0.4, n=n)[1:] + riinv[1:])**2)) #different signs + print(np.sum((lpol_fiar(0.4, n=n)[1:] - riinv[1:])**2)) #corrected signs + + #test is now in statsmodels.tsa.tests.test_arima_process + from statsmodels.tsa.tests.test_arima_process import test_fi + test_fi() + + ar_true = [1, -0.4] + ma_true = [1, 0.5] + + + ar_desired = arma_impulse_response(ma_true, ar_true) + ar_app, ma_app, res = ar2arma(ar_desired, 2,1, n=100, mse='ar', start=[0.1]) + print(ar_app, ma_app) + ar_app, ma_app, res = ar2arma(ar_desired, 2,2, n=100, mse='ar', start=[-0.1, 0.1]) + print(ar_app, ma_app) + ar_app, ma_app, res = ar2arma(ar_desired, 2,3, n=100, mse='ar')#, start = [-0.1, 0.1]) + print(ar_app, ma_app) + + slow = 1 + if slow: + ar_desired = lpol_fiar(0.4, n=100) + ar_app, ma_app, res = ar2arma(ar_desired, 3, 1, n=100, mse='ar')#, start = [-0.1, 0.1]) + print(ar_app, ma_app) + ar_app, ma_app, res = ar2arma(ar_desired, 10, 10, n=100, mse='ar')#, start = [-0.1, 0.1]) + print(ar_app, ma_app) diff --git a/statsmodels/sandbox/tsa/try_var_convolve.py b/statsmodels/sandbox/tsa/try_var_convolve.py new file mode 100644 index 0000000..073bb67 --- /dev/null +++ b/statsmodels/sandbox/tsa/try_var_convolve.py @@ -0,0 +1,310 @@ +# -*- coding: utf-8 -*- +"""trying out VAR filtering and multidimensional fft + +Note: second half is copy and paste and doesn't run as script +incomplete definitions of variables, some I created in shell + +Created on Thu Jan 07 12:23:40 2010 + +Author: josef-pktd + +update 2010-10-22 +2 arrays were not defined, copied from fft_filter.log.py but I didn't check +what the results are. +Runs now without raising exception +""" +from __future__ import print_function +import numpy as np +from numpy.testing import assert_equal +from scipy import signal, stats +from scipy.signal.signaltools import _centered as trim_centered + +from statsmodels.tsa.filters.filtertools import fftconvolveinv as fftconvolve + + +x = np.arange(40).reshape((2,20)).T +x = np.arange(60).reshape((3,20)).T +a3f = np.array([[[0.5, 1.], [1., 0.5]], + [[0.5, 1.], [1., 0.5]]]) +a3f = np.ones((2,3,3)) + + +nlags = a3f.shape[0] +ntrim = nlags//2 + +y0 = signal.convolve(x,a3f[:,:,0], mode='valid') +y1 = signal.convolve(x,a3f[:,:,1], mode='valid') +yf = signal.convolve(x[:,:,None],a3f) +y = yf[:,1,:] # +yvalid = yf[ntrim:-ntrim,yf.shape[1]//2,:] +#same result with fftconvolve +#signal.fftconvolve(x[:,:,None],a3f).shape +#signal.fftconvolve(x[:,:,None],a3f)[:,1,:] +print(trim_centered(y, x.shape)) +# this raises an exception: +#print(trim_centered(yf, (x.shape).shape) +assert_equal(yvalid[:,0], y0.ravel()) +assert_equal(yvalid[:,1], y1.ravel()) + + +def arfilter(x, a): + '''apply an autoregressive filter to a series x + + x can be 2d, a can be 1d, 2d, or 3d + + Parameters + ---------- + x : array_like + data array, 1d or 2d, if 2d then observations in rows + a : array_like + autoregressive filter coefficients, ar lag polynomial + see Notes + + Returns + ------- + y : ndarray, 2d + filtered array, number of columns determined by x and a + + Notes + ----- + + In general form this uses the linear filter :: + + y = a(L)x + + where + x : nobs, nvars + a : nlags, nvars, npoly + + Depending on the shape and dimension of a this uses different + Lag polynomial arrays + + case 1 : a is 1d or (nlags,1) + one lag polynomial is applied to all variables (columns of x) + case 2 : a is 2d, (nlags, nvars) + each series is independently filtered with its own + lag polynomial, uses loop over nvar + case 3 : a is 3d, (nlags, nvars, npoly) + the ith column of the output array is given by the linear filter + defined by the 2d array a[:,:,i], i.e. :: + + y[:,i] = a(.,.,i)(L) * x + y[t,i] = sum_p sum_j a(p,j,i)*x(t-p,j) + for p = 0,...nlags-1, j = 0,...nvars-1, + for all t >= nlags + + + Note: maybe convert to axis=1, Not + + TODO: initial conditions + + ''' + x = np.asarray(x) + a = np.asarray(a) + if x.ndim == 1: + x = x[:,None] + if x.ndim > 2: + raise ValueError('x array has to be 1d or 2d') + nvar = x.shape[1] + nlags = a.shape[0] + ntrim = nlags//2 + # for x is 2d with ncols >1 + + if a.ndim == 1: + # case: identical ar filter (lag polynomial) + return signal.convolve(x, a[:,None], mode='valid') + # alternative: + #return signal.lfilter(a,[1],x.astype(float),axis=0) + elif a.ndim == 2: + if min(a.shape) == 1: + # case: identical ar filter (lag polynomial) + return signal.convolve(x, a, mode='valid') + + # case: independent ar + #(a bit like recserar in gauss, but no x yet) + result = np.zeros((x.shape[0]-nlags+1, nvar)) + for i in range(nvar): + # could also use np.convolve, but easier for swiching to fft + result[:,i] = signal.convolve(x[:,i], a[:,i], mode='valid') + return result + + elif a.ndim == 3: + # case: vector autoregressive with lag matrices +# #not necessary: +# if np.any(a.shape[1:] != nvar): +# raise ValueError('if 3d shape of a has to be (nobs,nvar,nvar)') + yf = signal.convolve(x[:,:,None], a) + yvalid = yf[ntrim:-ntrim, yf.shape[1]//2,:] + return yvalid + +a3f = np.ones((2,3,3)) +y0ar = arfilter(x,a3f[:,:,0]) +print(y0ar, x[1:] + x[:-1]) +yres = arfilter(x,a3f[:,:,:2]) +print(np.all(yres == (x[1:,:].sum(1) + x[:-1].sum(1))[:,None])) + + +yff = fftconvolve(x.astype(float)[:,:,None],a3f) + +rvs = np.random.randn(500) +ar1fft = fftconvolve(rvs,np.array([1,-0.8])) +#ar1fftp = fftconvolve(np.r_[np.zeros(100),rvs,np.zeros(100)],np.array([1,-0.8])) +ar1fftp = fftconvolve(np.r_[np.zeros(100),rvs],np.array([1,-0.8])) +ar1lf = signal.lfilter([1], [1,-0.8], rvs) + +ar1 = np.zeros(501) +for i in range(1,501): + ar1[i] = 0.8*ar1[i-1] + rvs[i-1] + +#the previous looks wrong, is for generating ar with delayed error, +#or maybe for an ma(1) filter, (generating ar and applying ma filter are the same) +#maybe not since it replicates lfilter and fftp +#still strange explanation for convolution +#ok. because this is my fftconvolve, which is an inverse filter (read the namespace!) + +#This is an AR filter +errar1 = np.zeros(501) +for i in range(1,500): + errar1[i] = rvs[i] - 0.8*rvs[i-1] + +#print(ar1[-10:]) +#print(ar1fft[-11:-1]) +#print(ar1lf[-10:]) +#print(ar1[:10]) +#print(ar1fft[1:11]) +#print(ar1lf[:10]) +#print(ar1[100:110]) +#print(ar1fft[100:110]) +#print(ar1lf[100:110]) +# +#arloop - lfilter - fftp (padded) are the same +print('\n compare: \nerrloop - arloop - fft - lfilter - fftp (padded)') +#print(np.column_stack((ar1[1:31],ar1fft[:30], ar1lf[:30])) +print(np.column_stack((errar1[1:31], ar1[1:31],ar1fft[:30], ar1lf[:30], + ar1fftp[100:130]))) + +def maxabs(x,y): + return np.max(np.abs(x-y)) + +print(maxabs(ar1[1:], ar1lf)) #0 +print(maxabs(ar1[1:], ar1fftp[100:-1])) # around 1e-15 + +rvs3 = np.random.randn(500,3) +a3n = np.array([[1,1,1],[-0.8,0.5,0.1]]) +a3n = np.array([[1,1,1],[-0.8,0.0,0.0]]) +a3n = np.array([[1,-1,-1],[-0.8,0.0,0.0]]) +a3n = np.array([[1,0,0],[-0.8,0.0,0.0]]) +a3ne = np.r_[np.ones((1,3)),-0.8*np.eye(3)] +a3ne = np.r_[np.ones((1,3)),-0.8*np.eye(3)] +ar13fft = fftconvolve(rvs3,a3n) + +ar13 = np.zeros((501,3)) +for i in range(1,501): + ar13[i] = np.sum(a3n[1,:]*ar13[i-1]) + rvs[i-1] + +#changes imp was not defined, not sure what it is supposed to be +#copied from a .log file +imp = np.zeros((10,3)) +imp[0]=1 + +a3n = np.array([[1,0,0],[-0.8,0.0,0.0]]) +fftconvolve(np.r_[np.zeros((100,3)),imp],a3n)[100:] +a3n = np.array([[1,0,0],[-0.8,-0.50,0.0]]) +fftconvolve(np.r_[np.zeros((100,3)),imp],a3n)[100:] + +a3n3 = np.array([[[ 1. , 0. , 0. ], + [ 0. , 1. , 0. ], + [ 0. , 0. , 1. ]], + + [[-0.8, 0. , 0. ], + [ 0. , -0.8, 0. ], + [ 0. , 0. , -0.8]]]) + +a3n3 = np.array([[[ 1. , 0.5 , 0. ], + [ 0. , 1. , 0. ], + [ 0. , 0. , 1. ]], + + [[-0.8, 0. , 0. ], + [ 0. , -0.8, 0. ], + [ 0. , 0. , -0.8]]]) +ttt = fftconvolve(np.r_[np.zeros((100,3)),imp][:,:,None],a3n3.T)[100:] +gftt = ttt/ttt[0,:,:] + +a3n3 = np.array([[[ 1. , 0 , 0. ], + [ 0. , 1. , 0. ], + [ 0. , 0. , 1. ]], + + [[-0.8, 0.2 , 0. ], + [ 0 , 0.0, 0. ], + [ 0. , 0. , 0.8]]]) +ttt = fftconvolve(np.r_[np.zeros((100,3)),imp][:,:,None],a3n3)[100:] +gftt = ttt/ttt[0,:,:] +signal.fftconvolve(np.dstack((imp,imp,imp)),a3n3)[1,:,:] + +nobs = 10 +imp = np.zeros((nobs,3)) +imp[1] = 1. +ar13 = np.zeros((nobs+1,3)) +for i in range(1,nobs+1): + ar13[i] = np.dot(a3n3[1,:,:],ar13[i-1]) + imp[i-1] + +a3n3inv = np.zeros((nobs+1,3,3)) +a3n3inv[0,:,:] = a3n3[0] +a3n3inv[1,:,:] = -a3n3[1] +for i in range(2,nobs+1): + a3n3inv[i,:,:] = np.dot(-a3n3[1],a3n3inv[i-1,:,:]) + + +a3n3sy = np.array([[[ 1. , 0 , 0. ], + [ 0. , 1. , 0. ], + [ 0. , 0. , 1. ]], + + [[-0.8, 0.2 , 0. ], + [ 0 , 0.0, 0. ], + [ 0. , 0. , 0.8]]]) + +nobs = 10 +a = np.array([[[ 1. , 0. ], + [ 0. , 1. ]], + + [[-0.8, 0.0 ], + [ -0.1 , -0.8]]]) + + +a2n3inv = np.zeros((nobs+1,2,2)) +a2n3inv[0,:,:] = a[0] +a2n3inv[1,:,:] = -a[1] +for i in range(2,nobs+1): + a2n3inv[i,:,:] = np.dot(-a[1],a2n3inv[i-1,:,:]) + +nobs = 10 +imp = np.zeros((nobs,2)) +imp[0,0] = 1. + +#a2 was missing, copied from .log file, not sure if correct +a2 = np.array([[[ 1. , 0. ], + [ 0. , 1. ]], + + [[-0.8, 0. ], + [0.1, -0.8]]]) + +ar12 = np.zeros((nobs+1,2)) +for i in range(1,nobs+1): + ar12[i] = np.dot(-a2[1,:,:],ar12[i-1]) + imp[i-1] + +u = np.random.randn(10,2) +ar12r = np.zeros((nobs+1,2)) +for i in range(1,nobs+1): + ar12r[i] = np.dot(-a2[1,:,:],ar12r[i-1]) + u[i-1] + +a2inv = np.zeros((nobs+1,2,2)) +a2inv[0,:,:] = a2[0] +a2inv[1,:,:] = -a2[1] +for i in range(2,nobs+1): + a2inv[i,:,:] = np.dot(-a2[1],a2inv[i-1,:,:]) + +nbins = 12 +binProb = np.zeros(nbins) + 1.0/nbins +binSumProb = np.add.accumulate(binProb) +print(binSumProb) +print(stats.gamma.ppf(binSumProb,0.6379,loc=1.6,scale=39.555)) diff --git a/statsmodels/sandbox/tsa/varma.py b/statsmodels/sandbox/tsa/varma.py new file mode 100644 index 0000000..5b22f2c --- /dev/null +++ b/statsmodels/sandbox/tsa/varma.py @@ -0,0 +1,173 @@ +'''VAR and VARMA process + +this doesn't actually do much, trying out a version for a time loop + +alternative representation: +* textbook, different blocks in matrices +* Kalman filter +* VAR, VARX and ARX could be calculated with signal.lfilter + only tried some examples, not implemented + +TODO: try minimizing sum of squares of (Y-Yhat) + +Note: filter has smallest lag at end of array and largest lag at beginning, + be careful for asymmetric lags coefficients + check this again if it is consistently used + + +changes +2009-09-08 : separated from movstat.py + +Author : josefpkt +License : BSD +''' + +from __future__ import print_function +import numpy as np +from scipy import signal + + +#NOTE: this just returns that predicted values given the +#B matrix in polynomial form. +#TODO: make sure VAR class returns B/params in this form. +def VAR(x,B, const=0): + ''' multivariate linear filter + + Parameters + ---------- + x: (TxK) array + columns are variables, rows are observations for time period + B: (PxKxK) array + b_t-1 is bottom "row", b_t-P is top "row" when printing + B(:,:,0) is lag polynomial matrix for variable 1 + B(:,:,k) is lag polynomial matrix for variable k + B(p,:,k) is pth lag for variable k + B[p,:,:].T corresponds to A_p in Wikipedia + const: float or array (not tested) + constant added to autoregression + + Returns + ------- + xhat: (TxK) array + filtered, predicted values of x array + + Notes + ----- + xhat(t,i) = sum{_p}sum{_k} { x(t-P:t,:) .* B(:,:,i) } for all i = 0,K-1, for all t=p..T + + xhat does not include the forecasting observation, xhat(T+1), + xhat is 1 row shorter than signal.correlate + + References + ---------- + http://en.wikipedia.org/wiki/Vector_Autoregression + http://en.wikipedia.org/wiki/General_matrix_notation_of_a_VAR(p) + ''' + p = B.shape[0] + T = x.shape[0] + xhat = np.zeros(x.shape) + for t in range(p,T): #[p+2]:# +## print(p,T) +## print(x[t-p:t,:,np.newaxis].shape) +## print(B.shape) + #print(x[t-p:t,:,np.newaxis]) + xhat[t,:] = const + (x[t-p:t,:,np.newaxis]*B).sum(axis=1).sum(axis=0) + return xhat + + +def VARMA(x,B,C, const=0): + ''' multivariate linear filter + + x (TxK) + B (PxKxK) + + xhat(t,i) = sum{_p}sum{_k} { x(t-P:t,:) .* B(:,:,i) } + + sum{_q}sum{_k} { e(t-Q:t,:) .* C(:,:,i) }for all i = 0,K-1 + + ''' + P = B.shape[0] + Q = C.shape[0] + T = x.shape[0] + xhat = np.zeros(x.shape) + e = np.zeros(x.shape) + start = max(P,Q) + for t in range(start,T): #[p+2]:# +## print(p,T +## print(x[t-p:t,:,np.newaxis].shape +## print(B.shape + #print(x[t-p:t,:,np.newaxis] + xhat[t,:] = const + (x[t-P:t,:,np.newaxis]*B).sum(axis=1).sum(axis=0) + \ + (e[t-Q:t,:,np.newaxis]*C).sum(axis=1).sum(axis=0) + e[t,:] = x[t,:] - xhat[t,:] + return xhat, e + + +if __name__ == '__main__': + + + T = 20 + K = 2 + P = 3 + #x = np.arange(10).reshape(5,2) + x = np.column_stack([np.arange(T)]*K) + B = np.ones((P,K,K)) + #B[:,:,1] = 2 + B[:,:,1] = [[0,0],[0,0],[0,1]] + xhat = VAR(x,B) + print(np.all(xhat[P:,0]==np.correlate(x[:-1,0],np.ones(P))*2)) + #print(xhat) + + + T = 20 + K = 2 + Q = 2 + P = 3 + const = 1 + #x = np.arange(10).reshape(5,2) + x = np.column_stack([np.arange(T)]*K) + B = np.ones((P,K,K)) + #B[:,:,1] = 2 + B[:,:,1] = [[0,0],[0,0],[0,1]] + C = np.zeros((Q,K,K)) + xhat1 = VAR(x,B, const=const) + xhat2, err2 = VARMA(x,B,C, const=const) + print(np.all(xhat2 == xhat1)) + print(np.all(xhat2[P:,0] == np.correlate(x[:-1,0],np.ones(P))*2+const)) + + C[1,1,1] = 0.5 + xhat3, err3 = VARMA(x,B,C) + + x = np.r_[np.zeros((P,K)),x] #prepend initial conditions + xhat4, err4 = VARMA(x,B,C) + + C[1,1,1] = 1 + B[:,:,1] = [[0,0],[0,0],[0,1]] + xhat5, err5 = VARMA(x,B,C) + #print(err5) + + #in differences + #VARMA(np.diff(x,axis=0),B,C) + + + #Note: + # * signal correlate applies same filter to all columns if kernel.shape[1] possible to run signal.correlate K times with different filters, + # see the following example, which replicates VAR filter + x0 = np.column_stack([np.arange(T), 2*np.arange(T)]) + B[:,:,0] = np.ones((P,K)) + B[:,:,1] = np.ones((P,K)) + B[1,1,1] = 0 + xhat0 = VAR(x0,B) + xcorr00 = signal.correlate(x0,B[:,:,0])#[:,0] + xcorr01 = signal.correlate(x0,B[:,:,1]) + print(np.all(signal.correlate(x0,B[:,:,0],'valid')[:-1,0]==xhat0[P:,0])) + print(np.all(signal.correlate(x0,B[:,:,1],'valid')[:-1,0]==xhat0[P:,1])) + + #import error + #from movstat import acovf, acf + from statsmodels.tsa.stattools import acovf, acf + aav = acovf(x[:,0]) + print(aav[0] == np.var(x[:,0])) + aac = acf(x[:,0]) diff --git a/statsmodels/sandbox/utils_old.py b/statsmodels/sandbox/utils_old.py new file mode 100644 index 0000000..c85a4cc --- /dev/null +++ b/statsmodels/sandbox/utils_old.py @@ -0,0 +1,55 @@ +import numpy as np +import scipy.linalg + +from statsmodels.tools.tools import recipr, recipr0, clean0 # noqa:F401 +from statsmodels.robust.scale import mad # noqa:F401 +from statsmodels.distributions.empirical_distribution import ( # noqa:F401 + StepFunction, monotone_fn_inverter) + +__docformat__ = 'restructuredtext' + + +def rank(X, cond=1.0e-12): + """ + Return the rank of a matrix X based on its generalized inverse, + not the SVD. + """ + X = np.asarray(X) + if len(X.shape) == 2: + D = scipy.linalg.svdvals(X) + return int(np.add.reduce(np.greater(D / D.max(), cond).astype(np.int32))) + else: + return int(not np.alltrue(np.equal(X, 0.))) + + +def fullrank(X, r=None): + """ + Return a matrix whose column span is the same as X. + + If the rank of X is known it can be specified as r -- no check + is made to ensure that this really is the rank of X. + + """ + + if r is None: + r = rank(X) + + V, D, U = np.linalg.svd(X, full_matrices=0) + order = np.argsort(D) + order = order[::-1] + value = [] + for i in range(r): + value.append(V[:,order[i]]) + return np.asarray(np.transpose(value)).astype(np.float64) + + +def ECDF(values): + """ + Return the ECDF of an array as a step function. + """ + x = np.array(values, copy=True) + x.sort() + x.shape = np.product(x.shape,axis=0) + n = x.shape[0] + y = (np.arange(n) + 1.) / n + return StepFunction(x, y) diff --git a/statsmodels/src/__init__.py b/statsmodels/src/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/src/blas_lapack.pxd b/statsmodels/src/blas_lapack.pxd new file mode 100644 index 0000000..140a696 --- /dev/null +++ b/statsmodels/src/blas_lapack.pxd @@ -0,0 +1,917 @@ +cimport numpy as np + +# +# BLAS +# + +ctypedef int sgemm_t( + # Compute C := alpha*A*B + beta*C + char *transa, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + char *transb, # {'T','C'}: o(B)=B'; {'N'}: o(B)=B + int *m, # Rows of o(A) (and of C) + int *n, # Columns of o(B) (and of C) + int *k, # Columns of o(A) / Rows of o(B) + np.float32_t *alpha, # Scalar multiple + np.float32_t *a, # Matrix A: mxk + int *lda, # The size of the first dimension of A (in memory) + np.float32_t *b, # Matrix B: kxn + int *ldb, # The size of the first dimension of B (in memory) + np.float32_t *beta, # Scalar multiple + np.float32_t *c, # Matrix C: mxn + int *ldc # The size of the first dimension of C (in memory) +) + +ctypedef int sgemv_t( + # Compute C := alpha*A*x + beta*y + char *trans, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + int *m, # Rows of o(A) + int *n, # Columns of o(A) / min(len(x)) + np.float32_t *alpha, # Scalar multiple + np.float32_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + np.float32_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.float32_t *beta, # Scalar multiple + np.float32_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef int ssymm_t( + # SSYMM - perform one of the matrix-matrix operations C := + # alpha*A*B + beta*C, + char *side, # {'L', 'R'}: left, right + char *uplo, # {'U','L'}, upper, lower + int *m, # Rows of C + int *n, # Columns of C + np.float32_t *alpha, # Scalar multiple + np.float32_t *a, # Matrix A + int *lda, # The size of the first dimension of A (in memory) + np.float32_t *b, # Matrix B + int *ldb, # The size of the first dimension of B (in memory) + np.float32_t *beta, # Scalar multiple + np.float32_t *c, # Matrix C + int *ldc, # The size of the first dimension of C (in memory) +) + +ctypedef int ssymv_t( + # SSYMV - perform the matrix-vector operation y := alpha*A*x + # + beta*y, + char *uplo, # {'U','L'}, upper, lower + int *n, # Order of matrix A + np.float32_t *alpha, # Scalar multiple + np.float32_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + np.float32_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.float32_t *beta, # Scalar multiple + np.float32_t *y, # Vector y, min(len(y)) = n + int *incy, # The increment between elements of y (usually 1) +) + +ctypedef int strmm_t( + # STRMM - perform one of the matrix-matrix operations B := + # alpha*op( A )*B, or B := alpha*B*op( A ), + char *side, # {'L', 'R'}: left, right + char *uplo, # {'U','L'}, upper, lower + char *transa, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + char *diag, # {'U','N'}: unit triangular or not + int *m, # Rows of B + int *n, # Columns of B + np.float32_t *alpha, # Scalar multiple + np.float32_t *a, # Matrix A + int *lda, # The size of the first dimension of A (in memory) + np.float32_t *b, # Matrix B + int *ldb, # The size of the first dimension of B (in memory) +) + +ctypedef int strmv_t( + # STRMV - perform one of the matrix-vector operations x := + # A*x, or x := A'*x, + char *uplo, # {'U','L'}, upper, lower + char *trans, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + char *diag, # {'U','N'}: unit triangular or not + int *n, # Order of matrix A + np.float32_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + np.float32_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) +) + +ctypedef int scopy_t( + int *n, # Number of vector elements to be copied. + np.float32_t *x, # Vector from which to copy. + int *incx, # Increment between elements of x. + np.float32_t *y, # array of dimension (n-1) * |incy| + 1, result vector. + int *incy # Increment between elements of y. +) + +ctypedef int sscal_t( + # SSCAL - BLAS level one, scales a double precision vector + int *n, # Number of elements in the vector. + np.float32_t *alpha, # scalar alpha + np.float32_t *x, # Array of dimension (n-1) * |incx| + 1. Vector to be scaled. + int *incx # Increment between elements of x. +) + +ctypedef int saxpy_t( + # Compute y := alpha*x + y + int *n, # Columns of o(A) / min(len(x)) + np.float32_t *alpha, # Scalar multiple + np.float32_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.float32_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef int sswap_t( + # Swap y and x + int *n, # Columns of o(A) / min(len(x)) + np.float32_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.float32_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef np.float64_t sdot_t( + # Compute DDOT := x.T * y + int *n, # Length of vectors + np.float32_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.float32_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef int dgemm_t( + # Compute C := alpha*A*B + beta*C + char *transa, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + char *transb, # {'T','C'}: o(B)=B'; {'N'}: o(B)=B + int *m, # Rows of o(A) (and of C) + int *n, # Columns of o(B) (and of C) + int *k, # Columns of o(A) / Rows of o(B) + np.float64_t *alpha, # Scalar multiple + np.float64_t *a, # Matrix A: mxk + int *lda, # The size of the first dimension of A (in memory) + np.float64_t *b, # Matrix B: kxn + int *ldb, # The size of the first dimension of B (in memory) + np.float64_t *beta, # Scalar multiple + np.float64_t *c, # Matrix C: mxn + int *ldc # The size of the first dimension of C (in memory) +) + +ctypedef int dgemv_t( + # Compute y := alpha*A*x + beta*y + char *trans, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + int *m, # Rows of A (prior to transpose from *trans) + int *n, # Columns of A / min(len(x)) + np.float64_t *alpha, # Scalar multiple + np.float64_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + np.float64_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.float64_t *beta, # Scalar multiple + np.float64_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef int dsymm_t( + # DSYMM - perform one of the matrix-matrix operations C := + # alpha*A*B + beta*C, + char *side, # {'L', 'R'}: left, right + char *uplo, # {'U','L'}, upper, lower + int *m, # Rows of C + int *n, # Columns of C + np.float64_t *alpha, # Scalar multiple + np.float64_t *a, # Matrix A + int *lda, # The size of the first dimension of A (in memory) + np.float64_t *b, # Matrix B + int *ldb, # The size of the first dimension of B (in memory) + np.float64_t *beta, # Scalar multiple + np.float64_t *c, # Matrix C + int *ldc, # The size of the first dimension of C (in memory) +) + +ctypedef int dsymv_t( + # DSYMV - perform the matrix-vector operation y := alpha*A*x + # + beta*y, + char *uplo, # {'U','L'}, upper, lower + int *n, # Order of matrix A + np.float64_t *alpha, # Scalar multiple + np.float64_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + np.float64_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.float64_t *beta, # Scalar multiple + np.float64_t *y, # Vector y, min(len(y)) = n + int *incy, # The increment between elements of y (usually 1) +) + +ctypedef int dtrmm_t( + # DTRMM - perform one of the matrix-matrix operations B := + # alpha*op( A )*B, or B := alpha*B*op( A ), + char *side, # {'L', 'R'}: left, right + char *uplo, # {'U','L'}, upper, lower + char *transa, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + char *diag, # {'U','N'}: unit triangular or not + int *m, # Rows of B + int *n, # Columns of B + np.float64_t *alpha, # Scalar multiple + np.float64_t *a, # Matrix A + int *lda, # The size of the first dimension of A (in memory) + np.float64_t *b, # Matrix B + int *ldb, # The size of the first dimension of B (in memory) +) + +ctypedef int dtrmv_t( + # DTRMV - perform one of the matrix-vector operations x := + # A*x, or x := A'*x, + char *uplo, # {'U','L'}, upper, lower + char *trans, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + char *diag, # {'U','N'}: unit triangular or not + int *n, # Order of matrix A + np.float64_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + np.float64_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) +) + +ctypedef int dcopy_t( + int *n, # Number of vector elements to be copied. + np.float64_t *x, # Vector from which to copy. + int *incx, # Increment between elements of x. + np.float64_t *y, # array of dimension (n-1) * |incy| + 1, result vector. + int *incy # Increment between elements of y. +) + +ctypedef int dscal_t( + # DSCAL - BLAS level one, scales a double precision vector + int *n, # Number of elements in the vector. + np.float64_t *alpha, # scalar alpha + np.float64_t *x, # Array of dimension (n-1) * |incx| + 1. Vector to be scaled. + int *incx # Increment between elements of x. +) + +ctypedef int daxpy_t( + # Compute y := alpha*x + y + int *n, # Columns of o(A) / min(len(x)) + np.float64_t *alpha, # Scalar multiple + np.float64_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.float64_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef int dswap_t( + # Swap y and x + int *n, # Columns of o(A) / min(len(x)) + np.float64_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.float64_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef double ddot_t( + # Compute DDOT := x.T * y + int *n, # Length of vectors + np.float64_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.float64_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef int cgemm_t( + # Compute C := alpha*A*B + beta*C + char *transa, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + char *transb, # {'T','C'}: o(B)=B'; {'N'}: o(B)=B + int *m, # Rows of o(A) (and of C) + int *n, # Columns of o(B) (and of C) + int *k, # Columns of o(A) / Rows of o(B) + np.complex64_t *alpha, # Scalar multiple + np.complex64_t *a, # Matrix A: mxk + int *lda, # The size of the first dimension of A (in memory) + np.complex64_t *b, # Matrix B: kxn + int *ldb, # The size of the first dimension of B (in memory) + np.complex64_t *beta, # Scalar multiple + np.complex64_t *c, # Matrix C: mxn + int *ldc # The size of the first dimension of C (in memory) +) + +ctypedef int cgemv_t( + # Compute C := alpha*A*x + beta*y + char *trans, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + int *m, # Rows of o(A) + int *n, # Columns of o(A) / min(len(x)) + np.complex64_t *alpha, # Scalar multiple + np.complex64_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + np.complex64_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.complex64_t *beta, # Scalar multiple + np.complex64_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef int csymm_t( + # CSYMM - perform one of the matrix-matrix operations C := + # alpha*A*B + beta*C, + char *side, # {'L', 'R'}: left, right + char *uplo, # {'U','L'}, upper, lower + int *m, # Rows of C + int *n, # Columns of C + np.complex64_t *alpha, # Scalar multiple + np.complex64_t *a, # Matrix A + int *lda, # The size of the first dimension of A (in memory) + np.complex64_t *b, # Matrix B + int *ldb, # The size of the first dimension of B (in memory) + np.complex64_t *beta, # Scalar multiple + np.complex64_t *c, # Matrix C + int *ldc, # The size of the first dimension of C (in memory) +) + +ctypedef int csymv_t( + # CSYMV - perform the matrix-vector operation y := alpha*A*x + # + beta*y, + char *uplo, # {'U','L'}, upper, lower + int *n, # Order of matrix A + np.complex64_t *alpha, # Scalar multiple + np.complex64_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + np.complex64_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.complex64_t *beta, # Scalar multiple + np.complex64_t *y, # Vector y, min(len(y)) = n + int *incy, # The increment between elements of y (usually 1) +) + +ctypedef int ctrmm_t( + # CTRMM - perform one of the matrix-matrix operations B := + # alpha*op( A )*B, or B := alpha*B*op( A ), + char *side, # {'L', 'R'}: left, right + char *uplo, # {'U','L'}, upper, lower + char *transa, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + char *diag, # {'U','N'}: unit triangular or not + int *m, # Rows of B + int *n, # Columns of B + np.complex64_t *alpha, # Scalar multiple + np.complex64_t *a, # Matrix A + int *lda, # The size of the first dimension of A (in memory) + np.complex64_t *b, # Matrix B + int *ldb, # The size of the first dimension of B (in memory) +) + +ctypedef int ctrmv_t( + # CTRMV - perform one of the matrix-vector operations x := + # A*x, or x := A'*x, + char *uplo, # {'U','L'}, upper, lower + char *trans, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + char *diag, # {'U','N'}: unit triangular or not + int *n, # Order of matrix A + np.complex64_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + np.complex64_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) +) + +ctypedef int ccopy_t( + int *n, # Number of vector elements to be copied. + np.complex64_t *x, # Vector from which to copy. + int *incx, # Increment between elements of x. + np.complex64_t *y, # array of dimension (n-1) * |incy| + 1, result vector. + int *incy # Increment between elements of y. +) + +ctypedef int cscal_t( + # CSCAL - BLAS level one, scales a double precision vector + int *n, # Number of elements in the vector. + np.complex64_t *alpha, # scalar alpha + np.complex64_t *x, # Array of dimension (n-1) * |incx| + 1. Vector to be scaled. + int *incx # Increment between elements of x. +) + +ctypedef int caxpy_t( + # Compute y := alpha*x + y + int *n, # Columns of o(A) / min(len(x)) + np.complex64_t *alpha, # Scalar multiple + np.complex64_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.complex64_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef int cswap_t( + # Swap y and x + int *n, # Columns of o(A) / min(len(x)) + np.complex64_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.complex64_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef np.complex64_t cdotu_t( + # Compute CDOTU := x.T * y + int *n, # Length of vectors + np.complex64_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.complex64_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef int zgemm_t( + # Compute C := alpha*A*B + beta*C + char *transa, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + char *transb, # {'T','C'}: o(B)=B'; {'N'}: o(B)=B + int *m, # Rows of o(A) (and of C) + int *n, # Columns of o(B) (and of C) + int *k, # Columns of o(A) / Rows of o(B) + np.complex128_t *alpha, # Scalar multiple + np.complex128_t *a, # Matrix A: mxk + int *lda, # The size of the first dimension of A (in memory) + np.complex128_t *b, # Matrix B: kxn + int *ldb, # The size of the first dimension of B (in memory) + np.complex128_t *beta, # Scalar multiple + np.complex128_t *c, # Matrix C: mxn + int *ldc # The size of the first dimension of C (in memory) +) + +ctypedef int zgemv_t( + # Compute C := alpha*A*x + beta*y + char *trans, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + int *m, # Rows of o(A) + int *n, # Columns of o(A) / min(len(x)) + np.complex128_t *alpha, # Scalar multiple + np.complex128_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + np.complex128_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.complex128_t *beta, # Scalar multiple + np.complex128_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef int zsymm_t( + # ZSYMM - perform one of the matrix-matrix operations C := + # alpha*A*B + beta*C, + char *side, # {'L', 'R'}: left, right + char *uplo, # {'U','L'}, upper, lower + int *m, # Rows of C + int *n, # Columns of C + np.complex128_t *alpha, # Scalar multiple + np.complex128_t *a, # Matrix A + int *lda, # The size of the first dimension of A (in memory) + np.complex128_t *b, # Matrix B + int *ldb, # The size of the first dimension of B (in memory) + np.complex128_t *beta, # Scalar multiple + np.complex128_t *c, # Matrix C + int *ldc, # The size of the first dimension of C (in memory) +) + +ctypedef int zsymv_t( + # ZSYMV - perform the matrix-vector operation y := alpha*A*x + # + beta*y, + char *uplo, # {'U','L'}, upper, lower + int *n, # Order of matrix A + np.complex128_t *alpha, # Scalar multiple + np.complex128_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + np.complex128_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.complex128_t *beta, # Scalar multiple + np.complex128_t *y, # Vector y, min(len(y)) = n + int *incy, # The increment between elements of y (usually 1) +) + +ctypedef int ztrmm_t( + # ZTRMM - perform one of the matrix-matrix operations B := + # alpha*op( A )*B, or B := alpha*B*op( A ), + char *side, # {'L', 'R'}: left, right + char *uplo, # {'U','L'}, upper, lower + char *transa, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + char *diag, # {'U','N'}: unit triangular or not + int *m, # Rows of B + int *n, # Columns of B + np.complex128_t *alpha, # Scalar multiple + np.complex128_t *a, # Matrix A + int *lda, # The size of the first dimension of A (in memory) + np.complex128_t *b, # Matrix B + int *ldb, # The size of the first dimension of B (in memory) +) + +ctypedef int ztrmv_t( + # ZTRMV - perform one of the matrix-vector operations x := + # A*x, or x := A'*x, + char *uplo, # {'U','L'}, upper, lower + char *trans, # {'T','C'}: o(A)=A'; {'N'}: o(A)=A + char *diag, # {'U','N'}: unit triangular or not + int *n, # Order of matrix A + np.complex128_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + np.complex128_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) +) + +ctypedef int zcopy_t( + int *n, # Number of vector elements to be copied. + np.complex128_t *x, # Vector from which to copy. + int *incx, # Increment between elements of x. + np.complex128_t *y, # array of dimension (n-1) * |incy| + 1, result vector. + int *incy # Increment between elements of y. +) + +ctypedef int zscal_t( + # ZSCAL - BLAS level one, scales a double np.complex128_t precision vector + int *n, # Number of elements in the vector. + np.complex128_t *alpha, # scalar alpha + np.complex128_t *x, # Array of dimension (n-1) * |incx| + 1. Vector to be scaled. + int *incx # Increment between elements of x. +) + +ctypedef int zaxpy_t( + # Compute y := alpha*x + y + int *n, # Columns of o(A) / min(len(x)) + np.complex128_t *alpha, # Scalar multiple + np.complex128_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.complex128_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef int zswap_t( + # Swap y and x + int *n, # Columns of o(A) / min(len(x)) + np.complex128_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.complex128_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +ctypedef np.complex128_t zdotu_t( + # Compute ZDOTU := x.T * y + int *n, # Length of vectors + np.complex128_t *x, # Vector x, min(len(x)) = n + int *incx, # The increment between elements of x (usually 1) + np.complex128_t *y, # Vector y, min(len(y)) = m + int *incy # The increment between elements of y (usually 1) +) + +# +# LAPACK +# + +ctypedef int sgetrf_t( + # SGETRF - compute an LU factorization of a general M-by-N + # matrix A using partial pivoting with row interchanges + int *m, # Rows of A + int *n, # Columns of A + np.float32_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + int *ipiv, # Matrix P: mxn (the pivot indices) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int sgetri_t( + # SGETRI - compute the inverse of a matrix using the LU fac- + # torization computed by SGETRF + int *n, # Order of A + np.float32_t *a, # Matrix A: nxn (the LUP decomposed matrix from dgetrf) + int *lda, # The size of the first dimension of A (in memory) + int *ipiv, # Matrix P: nxn (the pivot indices from the LUP decomposition) + np.float32_t *work, # Matrix: nxn (a workspace for the inversion, optimal size=nxn) + int *lwork, # Number of elements in the workspace: optimal is n**2 + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int sgetrs_t( + # SGETRS - solve a system of linear equations A * X = B or A' + # * X = B with a general N-by-N matrix A using the LU factori- + # zation computed by SGETRF + char *trans, # Specifies the form of the system of equations + int *n, # Order of A + int *nrhs, # The number of right hand sides + np.float32_t *a, # Matrix A: nxn (the LUP decomposed matrix from dgetrf) + int *lda, # The size of the first dimension of A (in memory) + int *ipiv, # Matrix P: nxn (the pivot indices from the LUP decomposition) + np.float32_t *b, # Matrix B: nxnrhs + int *ldb, # The size of the first dimension of B (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int spotrf_t( + # Compute the Cholesky factorization of a + # real symmetric positive definite matrix A + char *uplo, # 'U': A = U'U and U is stored, 'L': A = LL' and L is stored + int *n, # The order of the matrix A. n >= 0. + np.float32_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int spotri_t( + # SPOTRI - compute the inverse of a real symmetric positive + # definite matrix A using the Cholesky factorization A = + # U**T*U or A = L*L**T computed by SPOTRF + char *uplo, # 'U': A = U'U and U is stored, 'L': A = LL' and L is stored + int *n, # The order of the matrix A. n >= 0. + np.float32_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int spotrs_t( + # SPOTRS - solve a system of linear equations A*X = B with a + # symmetric positive definite matrix A using the Cholesky fac- + # torization A = U**T*U or A = L*L**T computed by SPOTRF + char *uplo, # 'U': A = U'U and U is stored, 'L': A = LL' and L is stored + int *n, # The order of the matrix A. n >= 0. + int *nrhs, # The number of right hand sides + np.float32_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + np.float32_t *b, # Matrix B: nxnrhs + int *ldb, # The size of the first dimension of B (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int strtrs_t( + # STRTRS solves a triangular system of the form + # A * X = B, A**T * X = B, or A**H * X = B, + # where A is a triangular matrix of order N, and B is an N-by-NRHS + # matrix. A check is made to verify that A is nonsingular. + char *uplo, # 'U': A is upper triangular + char *trans, # N: A * X = B; T: A**T * X = B; C: A**H * X = B + char *diag, # {'U','N'}: unit triangular or not + int *n, # The order of the matrix A. n >= 0. + int *nrhs, # The number of right hand sides + np.float32_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + np.float32_t *b, # Matrix B: nxnrhs + int *ldb, # The size of the first dimension of B (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int dgetrf_t( + # DGETRF - compute an LU factorization of a general M-by-N + # matrix A using partial pivoting with row interchanges + int *m, # Rows of A + int *n, # Columns of A + np.float64_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + int *ipiv, # Matrix P: mxn (the pivot indices) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int dgetri_t( + # DGETRI - compute the inverse of a matrix using the LU fac- + # torization computed by DGETRF + int *n, # Order of A + np.float64_t *a, # Matrix A: nxn (the LUP decomposed matrix from dgetrf) + int *lda, # The size of the first dimension of A (in memory) + int *ipiv, # Matrix P: nxn (the pivot indices from the LUP decomposition) + np.float64_t *work, # Matrix: nxn (a workspace for the inversion, optimal size=nxn) + int *lwork, # Number of elements in the workspace: optimal is n**2 + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int dgetrs_t( + # DGETRS - solve a system of linear equations A * X = B or A' + # * X = B with a general N-by-N matrix A using the LU factori- + # zation computed by DGETRF + char *trans, # Specifies the form of the system of equations + int *n, # Order of A + int *nrhs, # The number of right hand sides + np.float64_t *a, # Matrix A: nxn (the LUP decomposed matrix from dgetrf) + int *lda, # The size of the first dimension of A (in memory) + int *ipiv, # Matrix P: nxn (the pivot indices from the LUP decomposition) + np.float64_t *b, # Matrix B: nxnrhs + int *ldb, # The size of the first dimension of B (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int dpotrf_t( + # Compute the Cholesky factorization of a + # real symmetric positive definite matrix A + char *uplo, # 'U': A = U'U and U is stored, 'L': A = LL' and L is stored + int *n, # The order of the matrix A. n >= 0. + np.float64_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int dpotri_t( + # DPOTRI - compute the inverse of a real symmetric positive + # definite matrix A using the Cholesky factorization A = + # U**T*U or A = L*L**T computed by DPOTRF + char *uplo, # 'U': A = U'U and U is stored, 'L': A = LL' and L is stored + int *n, # The order of the matrix A. n >= 0. + np.float64_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int dpotrs_t( + # DPOTRS - solve a system of linear equations A*X = B with a + # symmetric positive definite matrix A using the Cholesky fac- + # torization A = U**T*U or A = L*L**T computed by DPOTRF + char *uplo, # 'U': A = U'U and U is stored, 'L': A = LL' and L is stored + int *n, # The order of the matrix A. n >= 0. + int *nrhs, # The number of right hand sides + np.float64_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + np.float64_t *b, # Matrix B: nxnrhs + int *ldb, # The size of the first dimension of B (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int dtrtrs_t( + # DTRTRS solves a triangular system of the form + # A * X = B, A**T * X = B, or A**H * X = B, + # where A is a triangular matrix of order N, and B is an N-by-NRHS + # matrix. A check is made to verify that A is nonsingular. + char *uplo, # 'U': A is upper triangular + char *trans, # N: A * X = B; T: A**T * X = B; C: A**H * X = B + char *diag, # {'U','N'}: unit triangular or not + int *n, # The order of the matrix A. n >= 0. + int *nrhs, # The number of right hand sides + np.float64_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + np.float64_t *b, # Matrix B: nxnrhs + int *ldb, # The size of the first dimension of B (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int cgetrf_t( + # CGETRF - compute an LU factorization of a general M-by-N + # matrix A using partial pivoting with row interchanges + int *m, # Rows of A + int *n, # Columns of A + np.complex64_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + int *ipiv, # Matrix P: mxn (the pivot indices) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int cgetri_t( + # CGETRI - compute the inverse of a matrix using the LU fac- + # torization computed by CGETRF + int *n, # Order of A + np.complex64_t *a, # Matrix A: nxn (the LUP decomposed matrix from dgetrf) + int *lda, # The size of the first dimension of A (in memory) + int *ipiv, # Matrix P: nxn (the pivot indices from the LUP decomposition) + np.complex64_t *work, # Matrix: nxn (a workspace for the inversion, optimal size=nxn) + int *lwork, # Number of elements in the workspace: optimal is n**2 + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int cgetrs_t( + # CGETRS - solve a system of linear equations A * X = B, A**T + # * X = B, or A**H * X = B with a general N-by-N matrix A + # using the LU factorization computed by CGETRF + char *trans, # Specifies the form of the system of equations + int *n, # Order of A + int *nrhs, # The number of right hand sides + np.complex64_t *a, # Matrix A: nxn (the LUP decomposed matrix from dgetrf) + int *lda, # The size of the first dimension of A (in memory) + int *ipiv, # Matrix P: nxn (the pivot indices from the LUP decomposition) + np.complex64_t *b, # Matrix B: nxnrhs + int *ldb, # The size of the first dimension of B (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int cpotrf_t( + # Compute the Cholesky factorization of a + # np.complex128_t Hermitian positive definite matrix A + char *uplo, # 'U': A = U'U and U is stored, 'L': A = LL' and L is stored + int *n, # The order of the matrix A. n >= 0. + np.complex64_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int cpotri_t( + # CPOTRI - compute the inverse of a np.complex128_t Hermitian positive + # definite matrix A using the Cholesky factorization A = + # U**T*U or A = L*L**T computed by CPOTRF + char *uplo, # 'U': A = U'U and U is stored, 'L': A = LL' and L is stored + int *n, # The order of the matrix A. n >= 0. + np.complex64_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int cpotrs_t( + # ZPOTRS - solve a system of linear equations A*X = B with a + # Hermitian positive definite matrix A using the Cholesky fac- + # torization A = U**H*U or A = L*L**H computed by ZPOTRF + char *uplo, # 'U': A = U'U and U is stored, 'L': A = LL' and L is stored + int *n, # The order of the matrix A. n >= 0. + int *nrhs, # The number of right hand sides + np.complex64_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + np.complex64_t *b, # Matrix B: nxnrhs + int *ldb, # The size of the first dimension of B (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int ctrtrs_t( + # CTRTRS solves a triangular system of the form + # A * X = B, A**T * X = B, or A**H * X = B, + # where A is a triangular matrix of order N, and B is an N-by-NRHS + # matrix. A check is made to verify that A is nonsingular. + char *uplo, # 'U': A is upper triangular + char *trans, # N: A * X = B; T: A**T * X = B; C: A**H * X = B + char *diag, # {'U','N'}: unit triangular or not + int *n, # The order of the matrix A. n >= 0. + int *nrhs, # The number of right hand sides + np.complex64_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + np.complex64_t *b, # Matrix B: nxnrhs + int *ldb, # The size of the first dimension of B (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int zgetrf_t( + # ZGETRF - compute an LU factorization of a general M-by-N + # matrix A using partial pivoting with row interchanges + int *m, # Rows of A + int *n, # Columns of A + np.complex128_t *a, # Matrix A: mxn + int *lda, # The size of the first dimension of A (in memory) + int *ipiv, # Matrix P: mxn (the pivot indices) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int zgetri_t( + # ZGETRI - compute the inverse of a matrix using the LU fac- + # torization computed by ZGETRF + int *n, # Order of A + np.complex128_t *a, # Matrix A: nxn (the LUP decomposed matrix from dgetrf) + int *lda, # The size of the first dimension of A (in memory) + int *ipiv, # Matrix P: nxn (the pivot indices from the LUP decomposition) + np.complex128_t *work, # Matrix: nxn (a workspace for the inversion, optimal size=nxn) + int *lwork, # Number of elements in the workspace: optimal is n**2 + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int zgetrs_t( + # ZGETRS - solve a system of linear equations A * X = B, A**T + # * X = B, or A**H * X = B with a general N-by-N matrix A + # using the LU factorization computed by ZGETRF + char *trans, # Specifies the form of the system of equations + int *n, # Order of A + int *nrhs, # The number of right hand sides + np.complex128_t *a, # Matrix A: nxn (the LUP decomposed matrix from dgetrf) + int *lda, # The size of the first dimension of A (in memory) + int *ipiv, # Matrix P: nxn (the pivot indices from the LUP decomposition) + np.complex128_t *b, # Matrix B: nxnrhs + int *ldb, # The size of the first dimension of B (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int zpotrf_t( + # Compute the Cholesky factorization of a + # np.complex128_t Hermitian positive definite matrix A + char *uplo, # 'U': A = U'U and U is stored, 'L': A = LL' and L is stored + int *n, # The order of the matrix A. n >= 0. + np.complex128_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int zpotri_t( + # ZPOTRI - compute the inverse of a np.complex128_t Hermitian positive + # definite matrix A using the Cholesky factorization A = + # U**T*U or A = L*L**T computed by ZPOTRF + char *uplo, # 'U': A = U'U and U is stored, 'L': A = LL' and L is stored + int *n, # The order of the matrix A. n >= 0. + np.complex128_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int zpotrs_t( + # ZPOTRS - solve a system of linear equations A*X = B with a + # Hermitian positive definite matrix A using the Cholesky fac- + # torization A = U**H*U or A = L*L**H computed by ZPOTRF + char *uplo, # 'U': A = U'U and U is stored, 'L': A = LL' and L is stored + int *n, # The order of the matrix A. n >= 0. + int *nrhs, # The number of right hand sides + np.complex128_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + np.complex128_t *b, # Matrix B: nxnrhs + int *ldb, # The size of the first dimension of B (in memory) + int *info # 0 if success, otherwise an error code (integer) +) + +ctypedef int ztrtrs_t( + # ZTRTRS solves a triangular system of the form + # A * X = B, A**T * X = B, or A**H * X = B, + # where A is a triangular matrix of order N, and B is an N-by-NRHS + # matrix. A check is made to verify that A is nonsingular. + char *uplo, # 'U': A is upper triangular + char *trans, # N: A * X = B; T: A**T * X = B; C: A**H * X = B + char *diag, # {'U','N'}: unit triangular or not + int *n, # The order of the matrix A. n >= 0. + int *nrhs, # The number of right hand sides + np.complex128_t *a, # Matrix A: nxn + int *lda, # The size of the first dimension of A (in memory) + np.complex128_t *b, # Matrix B: nxnrhs + int *ldb, # The size of the first dimension of B (in memory) + int *info # 0 if success, otherwise an error code (integer) +) \ No newline at end of file diff --git a/statsmodels/src/capsule.h b/statsmodels/src/capsule.h new file mode 100644 index 0000000..dbc9b55 --- /dev/null +++ b/statsmodels/src/capsule.h @@ -0,0 +1,24 @@ +/* partially cribbed from numpy/core/include/numpy/npy_3kcompat.h +*/ + +#include + +#if PY_VERSION_HEX >= 0x03000000 + +void* Capsule_AsVoidPtr(PyObject *obj) +{ + void *ret = PyCapsule_GetPointer(obj, NULL); + if (ret == NULL) { + PyErr_Clear(); + } + return ret; +} + +#else + +void* Capsule_AsVoidPtr(PyObject *ptr) +{ + return PyCObject_AsVoidPtr(ptr); +} + +#endif diff --git a/statsmodels/src/math.pxd b/statsmodels/src/math.pxd new file mode 100644 index 0000000..e20d11a --- /dev/null +++ b/statsmodels/src/math.pxd @@ -0,0 +1,23 @@ +# ## Math Functions +# Real and complex log and abs functions +from libc.math cimport log as dlog, abs as dabs, exp as dexp +cimport numpy as np + +cdef extern from "numpy/npy_math.h": + np.float64_t NPY_PI + np.float64_t npy_cabs(np.npy_cdouble z) + np.npy_cdouble npy_clog(np.npy_cdouble z) + np.npy_cdouble npy_cexp(np.npy_cdouble z) + +cdef inline np.float64_t zabs(np.complex128_t z): + return npy_cabs(( &z)[0]) + +cdef inline np.complex128_t zlog(np.complex128_t z): + cdef np.npy_cdouble x + x = npy_clog(( &z)[0]) + return ( &x)[0] + +cdef inline np.complex128_t zexp(np.complex128_t z): + cdef np.npy_cdouble x + x = npy_cexp(( &z)[0]) + return ( &x)[0] \ No newline at end of file diff --git a/statsmodels/stats/__init__.py b/statsmodels/stats/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/stats/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/stats/_adnorm.py b/statsmodels/stats/_adnorm.py new file mode 100644 index 0000000..85fbe8e --- /dev/null +++ b/statsmodels/stats/_adnorm.py @@ -0,0 +1,137 @@ +# -*- coding: utf-8 -*- +""" +Created on Sun Sep 25 21:23:38 2011 + +Author: Josef Perktold and Scipy developers +License : BSD-3 +""" +from __future__ import print_function +from statsmodels.compat.python import range +import numpy as np +from scipy import stats + + +def anderson_statistic(x, dist='norm', fit=True, params=(), axis=0): + '''calculate anderson-darling A2 statistic + + Parameters + ---------- + x : array_like + data + dist : 'norm' or callable + null distribution for the test statistic + fit : bool + If True, then the distribution parameters are estimated. + Currently only for 1d data x, except in case dist='norm' + params : tuple + optional distribution parameters if fit is False + axis : integer + If dist is 'norm' or fit is False, then data can be an n-dimensional + and axis specifies the axis of a variable + + Returns + ------- + ad2 : float or ndarray + Anderson-Darling statistic + + + ''' + x = np.asarray(x) + y = np.sort(x, axis=axis) + N = y.shape[axis] + if fit: + if dist == 'norm': + xbar = np.expand_dims(np.mean(x, axis=axis), axis) + s = np.expand_dims(np.std(x, ddof=1, axis=axis), axis) + w = (y-xbar)/s + z = stats.norm.cdf(w) + #print z + elif callable(dist): + params = dist.fit(x) + #print params + z = dist.cdf(y, *params) + print(z) + else: + if callable(dist): + z = dist.cdf(y, *params) + else: + raise ValueError('if fit is false, then dist needs to be callable') + + i = np.arange(1,N+1) + sl1 = [None]*x.ndim + sl1[axis] = slice(None) + sl1 = tuple(sl1) + sl2 = [slice(None)]*x.ndim + sl2[axis] = slice(None,None,-1) + sl2 = tuple(sl2) + S = np.sum((2*i[sl1]-1.0)/N*(np.log(z)+np.log(1-z[sl2])), axis=axis) + A2 = -N-S + return A2 + + +def normal_ad(x, axis=0): + '''Anderson-Darling test for normal distribution unknown mean and variance + + Parameters + ---------- + x : array_like + data array, currently only 1d + + Returns + ------- + ad2 : float + Anderson Darling test statistic + pval : float + pvalue for hypothesis that the data comes from a normal distribution + with unknown mean and variance + + ''' + #ad2 = stats.anderson(x)[0] + ad2 = anderson_statistic(x, dist='norm', fit=True, axis=axis) + n = x.shape[axis] + + ad2a = ad2 * (1 + 0.75/n + 2.25/n**2) + + if np.size(ad2a) == 1: + if (ad2a >= 0.00 and ad2a < 0.200): + pval = 1 - np.exp(-13.436 + 101.14 * ad2a - 223.73 * ad2a**2) + elif ad2a < 0.340: + pval = 1 - np.exp(-8.318 + 42.796 * ad2a - 59.938 * ad2a**2) + elif ad2a < 0.600: + pval = np.exp(0.9177 - 4.279 * ad2a - 1.38 * ad2a**2) + elif ad2a <= 13: + pval = np.exp(1.2937 - 5.709 * ad2a + 0.0186 * ad2a**2) + else: + pval = 0.0 # is < 4.9542108058458799e-31 + + else: + bounds = np.array([0.0, 0.200, 0.340, 0.600]) + + pval0 = lambda ad2a: np.nan*np.ones_like(ad2a) + pval1 = lambda ad2a: 1 - np.exp(-13.436 + 101.14 * ad2a - 223.73 * ad2a**2) + pval2 = lambda ad2a: 1 - np.exp(-8.318 + 42.796 * ad2a - 59.938 * ad2a**2) + pval3 = lambda ad2a: np.exp(0.9177 - 4.279 * ad2a - 1.38 * ad2a**2) + pval4 = lambda ad2a: np.exp(1.2937 - 5.709 * ad2a + 0.0186 * ad2a**2) + + pvalli = [pval0, pval1, pval2, pval3, pval4] + + idx = np.searchsorted(bounds, ad2a, side='right') + pval = np.nan*np.ones_like(ad2a) + for i in range(5): + mask = (idx == i) + pval[mask] = pvalli[i](ad2a[mask]) + + return ad2, pval + + +if __name__ == '__main__': + x = np.array([-0.1184, -1.3403, 0.0063, -0.612 , -0.3869, -0.2313, -2.8485, + -0.2167, 0.4153, 1.8492, -0.3706, 0.9726, -0.1501, -0.0337, + -1.4423, 1.2489, 0.9182, -0.2331, -0.6182, 0.183 ]) + r_res = np.array([0.58672353588821502, 0.1115380760041617]) + ad2, pval = normal_ad(x) + print(ad2, pval) + print(r_res - [ad2, pval]) + + print(anderson_statistic((x-x.mean())/x.std(), dist=stats.norm, fit=0)) + print(anderson_statistic(x, dist=stats.norm, fit=True)) diff --git a/statsmodels/stats/_diagnostic_other.py b/statsmodels/stats/_diagnostic_other.py new file mode 100644 index 0000000..33f803d --- /dev/null +++ b/statsmodels/stats/_diagnostic_other.py @@ -0,0 +1,1202 @@ +# -*- coding: utf-8 -*- +"""Score, lagrange multiplier and conditional moment tests +robust to misspecification or without specification of higher moments + +Created on Thu Oct 30 00:42:38 2014 + +Author: Josef Perktold +License: BSD-3 + +Notes +----- + +This module is a mixture of very general and very specific functions for +hypothesis testing in general models, targeted mainly to non-normal models. + +Some of the options or versions of these tests are mainly intented for +cross-checking and to replicate different examples in references. + +We need clean versions with good defaults for those functions that are +intended for the user. + + + +References +---------- + +The following references are collected after my intitial implementation and is +most likely not exactly what I used. + +The main articles on which the functions are directly based upon, are Boos 1992, +Tauchen 1985 and Whitney 1985a. Wooldrige artificial regression is +based on several articles and his text book. +Background reading are the textbooks by Cameron and Trivedi, Wooldridge and +Davidson and MacKinnon. +Newey and MacFadden 1994 provide some of the theoretical background. + +Poisson dispersion tests are based on Dean 1992 and articles and text books by +Cameron and Trivedi. + +The references currently do not include the literature on LM-test for +specification and diagnostic testing, like Pagan, Bera, Bera and Yoon and +many others, except those for the Poisson excess dispersion case and Pagan +and Vella. + + +Boos, Dennis D. 1992. “On Generalized Score Tests.” The American Statistician 46 +(4): 327–33. https://doi.org/10.2307/2685328. + +Breslow, Norman. 1989. “Score Tests in Overdispersed GLM’s.” In Statistical +Modelling, edited by Adriano Decarli, Brian J. Francis, Robert Gilchrist, and +Gilg U. H. Seeber, 64–74. Lecture Notes in Statistics 57. Springer New York. +http://link.springer.com/chapter/10.1007/978-1-4612-3680-1_8. + +Breslow, Norman. 1990. “Tests of Hypotheses in Overdispersed Poisson Regression +and Other Quasi- Likelihood Models.” Journal of the American Statistical +Association 85 (410): 565–71. https://doi.org/10.2307/2289799. + +Cameron, A. Colin, and Pravin K. Trivedi. 1986. “Econometric Models Based on +Count Data. Comparisons and Applications of Some Estimators and Tests.” Journal +of Applied Econometrics 1 (1): 29–53. https://doi.org/10.1002/jae.3950010104. + +Cameron, A. Colin, and Pravin K. Trivedi. 1990a. “Conditional Moment Tests and +Orthogonal Polynomials.” Indiana University, Department of Economics, Working +Paper, 90–051. + +Cameron, A. Colin, and Pravin K. Trivedi. 1990b. “Regression-Based Tests for +Overdispersion in the Poisson Model.” Journal of Econometrics 46 (3): 347–64. +https://doi.org/10.1016/0304-4076(90)90014-K. + +Cameron, A. Colin, and Pravin K. Trivedi. Microeconometrics: methods and +applications. Cambridge university press, 2005. + +Cameron, A. Colin, and Pravin K. Trivedi. Regression analysis of count data. +Vol. 53. Cambridge university press, 2013. + +Davidson, Russell, and James G. MacKinnon. 1981. “Several Tests for Model +Specification in the Presence of Alternative Hypotheses.” Econometrica 49 (3): +781–93. https://doi.org/10.2307/1911522. + +Davidson, Russell, and James G. MacKinnon. 1990. “Specification Tests Based on +Artificial Regressions.” Journal of the American Statistical Association 85 +(409): 220–27. https://doi.org/10.2307/2289548. + +Davidson, Russell, and James G. MacKinnon. 1991. “Artificial Regressions and C +(α) Tests.” Economics Letters 35 (2): 149–53. +https://doi.org/10.1016/0165-1765(91)90162-E. + +Davidson, Russell, and James G. MacKinnon. Econometric theory and methods. Vol. +5. New York: Oxford University Press, 2004. + +Dean, C. B. 1992. “Testing for Overdispersion in Poisson and Binomial Regression +Models.” Journal of the American Statistical Association 87 (418): 451–57. +https://doi.org/10.2307/2290276. + +Dean, C., and J. F. Lawless. 1989. “Tests for Detecting Overdispersion in +Poisson Regression Models.” Journal of the American Statistical Association 84 +(406): 467–72. https://doi.org/10.2307/2289931. + +Newey, Whitney K. 1985a. “Generalized Method of Moments Specification Testing.” +Journal of Econometrics 29 (3): 229–56. +https://doi.org/10.1016/0304-4076(85)90154-X. + +Newey, Whitney K. 1985b. “Maximum Likelihood Specification Testing and +Conditional Moment Tests.” Econometrica 53 (5): 1047–70. +https://doi.org/10.2307/1911011. + +Newey, Whitney K. and Kenneth D. West. 1987. “Hypothesis Testing with Efficient +Method of Moments Estimation.” International Economic Review 28 (3): 777–87. +https://doi.org/10.2307/2526578. + +Newey, Whitney K. and Daniel McFadden. 1994 "Large sample estimation and +hypothesis testing." Handbook of econometrics 4: 2111-2245. + +Pagan, Adrian, and Frank Vella. 1989. “Diagnostic Tests for Models Based on +Individual Data: A Survey.” Journal of Applied Econometrics 4 (S1): S29–59. +https://doi.org/10.1002/jae.3950040504. + +Tauchen, George. 1985. “Diagnostic Testing and Evaluation of Maximum Likelihood +Models.” Journal of Econometrics 30 (1–2): 415–43. +https://doi.org/10.1016/0304-4076(85)90149-6. + +White, Halbert. 1981. “Consequences and Detection of Misspecified Nonlinear +Regression Models.” Journal of the American Statistical Association 76 (374): +419–33. https://doi.org/10.2307/2287845. + +White, Halbert. 1983. “Maximum Likelihood Estimation of Misspecified Models.” +Econometrica 51 (2): 513. https://doi.org/10.2307/1912004. + +White, Halbert. 1994. Estimation, Inference and Specification Analysis. +Cambridge: Cambridge University Press. https://doi.org/10.1017/CCOL0521252806. + +Wooldridge, Jeffrey M. 1991. “Specification Testing and Quasi-Maximum- +Likelihood Estimation.” Journal of Econometrics 48 (1–2): 29–55. +https://doi.org/10.1016/0304-4076(91)90031-8. + +Wooldridge, Jeffrey M. 1990. “A Unified Approach to Robust, Regression-Based +Specification Tests.” Econometric Theory 6 (1): 17–43. + +Wooldridge, Jeffrey M. 1991a. “On the Application of Robust, Regression- Based +Diagnostics to Models of Conditional Means and Conditional Variances.” Journal +of Econometrics 47 (1): 5–46. https://doi.org/10.1016/0304-4076(91)90076-P. + +Wooldridge, Jeffrey M. 1991b. “On the Application of Robust, Regression- Based +Diagnostics to Models of Conditional Means and Conditional Variances.” Journal +of Econometrics 47 (1): 5–46. https://doi.org/10.1016/0304-4076(91)90076-P. + +Wooldridge, Jeffrey M. 1991c. “Specification Testing and Quasi-Maximum- +Likelihood Estimation.” Journal of Econometrics 48 (1–2): 29–55. +https://doi.org/10.1016/0304-4076(91)90031-8. + +Wooldridge, Jeffrey M. 1994. “On the Limits of GLM for Specification Testing: A +Comment on Gurmu and Trivedi.” Econometric Theory 10 (2): 409–18. +https://doi.org/10.2307/3532875. + +Wooldridge, Jeffrey M. 1997. “Quasi-Likelihood Methods for Count Data.” Handbook +of Applied Econometrics 2: 352–406. + +Wooldridge, Jeffrey M. Econometric analysis of cross section and panel data. MIT +press, 2010. + +""" + +import numpy as np +from scipy import stats + +from statsmodels.tools.decorators import cache_readonly +from statsmodels.regression.linear_model import OLS + + +class ResultsGeneric(object): + + + def __init__(self, **kwds): + self.__dict__.update(kwds) + + +class TestResults(ResultsGeneric): + + def summary(self): + txt = 'Specification Test (LM, score)\n' + stat = [self.c1, self.c2, self.c3] + pval = [self.pval1, self.pval2, self.pval3] + description = ['nonrobust', 'dispersed', 'HC'] + + for row in zip(description, stat, pval): + txt += '%-12s statistic = %6.4f pvalue = %6.5f\n' % row + + txt += '\nAssumptions:\n' + txt += 'nonrobust: variance is correctly specified\n' + txt += 'dispersed: variance correctly specified up to scale factor\n' + txt += 'HC : robust to any heteroscedasticity\n' + txt += 'test is not robust to correlation across observations' + + return txt + + +def lm_test_glm(result, exog_extra, mean_deriv=None): + '''score/lagrange multiplier test for GLM + + Wooldridge procedure for test of mean function in GLM + + Parameters + ---------- + results : GLMResults instance + results instance with the constrained model + exog_extra : ndarray or None + additional exogenous variables for variable addition test + This can be set to None if mean_deriv is provided. + mean_deriv : None or ndarray + Extra moment condition that correspond to the partial derivative of + a mean function with respect to some parameters. + + Returns + ------- + test_results : Results instance + The results instance has the following attributes which are score + statistic and p-value for 3 versions of the score test. + + c1, pval1 : nonrobust score_test results + c2, pval2 : score test results robust to over or under dispersion + c3, pval3 : score test results fully robust to any heteroscedasticity + + The test results instance also has a simple summary method. + + Notes + ----- + TODO: add `df` to results and make df detection more robust + + This implements the auxiliary regression procedure of Wooldridge, + implemented based on the presentation in chapter 8 in Handbook of + Applied Econometrics 2. + + References + ---------- + Wooldridge, Jeffrey M. 1997. “Quasi-Likelihood Methods for Count Data.” + Handbook of Applied Econometrics 2: 352–406. + + and other articles and text book by Wooldridge + + ''' + + if hasattr(result, '_result'): + res = result._result + else: + res = result + + mod = result.model + nobs = mod.endog.shape[0] + + #mean_func = mod.family.link.inverse + dlinkinv = mod.family.link.inverse_deriv + + # derivative of mean function w.r.t. beta (linear params) + dm = lambda x, linpred: dlinkinv(linpred)[:,None] * x + + var_func = mod.family.variance + + x = result.model.exog + x2 = exog_extra + + # test omitted + lin_pred = res.predict(linear=True) + dm_incl = dm(x, lin_pred) + if x2 is not None: + dm_excl = dm(x2, lin_pred) + if mean_deriv is not None: + # allow both and stack + dm_excl = np.column_stack((dm_excl, mean_deriv)) + elif mean_deriv is not None: + dm_excl = mean_deriv + else: + raise ValueError('either exog_extra or mean_deriv have to be provided') + + # TODO check for rank or redundant, note OLS calculates the rank + k_constraint = dm_excl.shape[1] + fittedvalues = res.predict() # discrete has linpred instead of mean + v = var_func(fittedvalues) + std = np.sqrt(v) + res_ols1 = OLS(res.resid_response / std, np.column_stack((dm_incl, dm_excl)) / std[:, None]).fit() + + # case: nonrobust assumes variance implied by distribution is correct + c1 = res_ols1.ess + pval1 = stats.chi2.sf(c1, k_constraint) + #print c1, stats.chi2.sf(c1, 2) + + # case: robust to dispersion + c2 = nobs * res_ols1.rsquared + pval2 = stats.chi2.sf(c2, k_constraint) + #print c2, stats.chi2.sf(c2, 2) + + # case: robust to heteroscedasticity + from statsmodels.stats.multivariate_tools import partial_project + pp = partial_project(dm_excl / std[:,None], dm_incl / std[:,None]) + resid_p = res.resid_response / std + res_ols3 = OLS(np.ones(nobs), pp.resid * resid_p[:,None]).fit() + #c3 = nobs * res_ols3.rsquared # this is Wooldridge + c3b = res_ols3.ess # simpler if endog is ones + pval3 = stats.chi2.sf(c3b, k_constraint) + + tres = TestResults(c1=c1, pval1=pval1, + c2=c2, pval2=pval2, + c3=c3b, pval3=pval3) + + return tres + + +def cm_test_robust(resid, resid_deriv, instruments, weights=1): + '''score/lagrange multiplier of Wooldridge + + generic version of Wooldridge procedure for test of conditional moments + + Limitation: This version allows only for one unconditional moment + restriction, i.e. resid is scalar for each observation. + Another limitation is that it assumes independent observations, no + correlation in residuals and weights cannot be replaced by cross-observation + whitening. + + Parameters + ---------- + resid : ndarray, (nobs, ) + conditional moment restriction, E(r | x, params) = 0 + resid_deriv : ndarray, (nobs, k_params) + derivative of conditional moment restriction with respect to parameters + instruments : ndarray, (nobs, k_instruments) + indicator variables of Wooldridge, multiplies the conditional momen + restriction + weights : ndarray + This is a weights function as used in WLS. The moment + restrictions are multiplied by weights. This corresponds to the + inverse of the variance in a heteroscedastic model. + + Returns + ------- + test_results : Results instance + ??? TODO + + Notes + ----- + This implements the auxiliary regression procedure of Wooldridge, + implemented based on procedure 2.1 in Wooldridge 1990. + + Wooldridge allows for multivariate conditional moments (`resid`) + TODO: check dimensions for multivariate case for extension + + References + ---------- + Wooldridge + Wooldridge + and more Wooldridge + + ''' + # notation: Wooldridge uses too mamny Greek letters + # instruments is capital lambda + # resid is small phi + # resid_deriv is capital phi + # weights is C + + + nobs = resid.shape[0] + + from statsmodels.stats.multivariate_tools import partial_project + + w_sqrt = np.sqrt(weights) + if np.size(weights) > 1: + w_sqrt = w_sqrt[:,None] + pp = partial_project(instruments * w_sqrt, resid_deriv * w_sqrt) + mom_resid = pp.resid + + moms_test = mom_resid * resid[:, None] * w_sqrt + + # we get this here in case we extend resid to be more than 1-D + k_constraint = moms_test.shape[1] + + # use OPG variance as in Wooldridge 1990. This might generalize + cov = moms_test.T.dot(moms_test) + diff = moms_test.sum(0) + + # see Wooldridge last page in appendix + stat = diff.dot(np.linalg.solve(cov, diff)) + + # for checking, this corresponds to nobs * rsquared of auxiliary regression + stat2 = OLS(np.ones(nobs), moms_test).fit().ess + pval = stats.chi2.sf(stat, k_constraint) + + return stat, pval, stat2 + + +def lm_robust(score, constraint_matrix, score_deriv_inv, cov_score, + cov_params=None): + '''general formula for score/LM test + + generalized score or lagrange multiplier test for implicit constraints + + `r(params) = 0`, with gradient `R = d r / d params` + + linear constraints are given by `R params - q = 0` + + It is assumed that all arrays are evaluated at the constrained estimates. + + Parameters + ---------- + score : ndarray, 1-D + derivative of objective function at estimated parameters + of constrained model + constraint_matrix R : ndarray + Linear restriction matrix or Jacobian of nonlinear constraints + hessian_inv, Ainv : ndarray, symmetric, square + inverse of second derivative of objective function + TODO: could be OPG or any other estimator if information matrix + equality holds + cov_score B : ndarray, symmetric, square + covariance matrix of the score. This is the inner part of a sandwich + estimator. + cov_params V : ndarray, symmetric, square + covariance of full parameter vector evaluated at constrained parameter + estimate. This can be specified instead of cov_score B. + + Returns + ------- + lm_stat : float + score/lagrange multiplier statistic + + Notes + ----- + + ''' + # shorthand alias + R, Ainv, B, V = constraint_matrix, score_deriv_inv, cov_score, cov_params + + tmp = R.dot(Ainv) + wscore = tmp.dot(score) # C Ainv score + + if B is None and V is None: + # only Ainv is given, so we assume information matrix identity holds + # computational short cut, should be same if Ainv == inv(B) + lm_stat = score.dot(Ainv.dot(score)) + else: + # information matrix identity does not hold + if V is None: + inner = tmp.dot(B).dot(tmp.T) + else: + inner = R.dot(V).dot(R.T) + + #lm_stat2 = wscore.dot(np.linalg.pinv(inner).dot(wscore)) + # Let's assume inner is invertible, TODO: check if usecase for pinv exists + lm_stat = wscore.dot(np.linalg.solve(inner, wscore)) + + return lm_stat#, lm_stat2 + + +def lm_robust_subset(score, k_constraints, score_deriv_inv, cov_score): + '''general formula for score/LM test + + generalized score or lagrange multiplier test for constraints on a subset + of parameters + + `params_1 = value`, where params_1 is a subset of the unconstrained + parameter vector. + + It is assumed that all arrays are evaluated at the constrained estimates. + + Parameters + ---------- + score : ndarray, 1-D + derivative of objective function at estimated parameters + of constrained model + k_constraint: int + number of constraints + score_deriv_inv : ndarray, symmetric, square + inverse of second derivative of objective function + TODO: could be OPG or any other estimator if information matrix + equality holds + cov_score B : ndarray, symmetric, square + covariance matrix of the score. This is the inner part of a sandwich + estimator. + not cov_params V : ndarray, symmetric, square + covariance of full parameter vector evaluated at constrained parameter + estimate. This can be specified instead of cov_score B. + + Returns + ------- + lm_stat : float + score/lagrange multiplier statistic + p-value : float + p-value of the LM test based on chisquare distribution + + Notes + ----- + The implementation is based on Boos 1992 section 4.1. The same derivation + is also in other articles and in text books. + + ''' + + # Notation in Boos + # score `S = sum (s_i) + # score_obs `s_i` + # score_deriv `I` is derivative of score (hessian) + # `D` is covariance matrix of score, OPG product given independent observations + + #k_params = len(score) + + # Note: I reverse order between constraint and unconstrained compared to Boos + + # submatrices of score_deriv/hessian + # these are I22 and I12 in Boos + #h_uu = score_deriv[-k_constraints:, -k_constraints:] + h_uu = score_deriv_inv[:-k_constraints, :-k_constraints] + h_cu = score_deriv_inv[-k_constraints:, :-k_constraints] + + # TODO: pinv or solve ? + tmp_proj = h_cu.dot(np.linalg.inv(h_uu)) + tmp = np.column_stack((-tmp_proj, np.eye(k_constraints))) #, tmp_proj)) + + cov_score_constraints = tmp.dot(cov_score.dot(tmp.T)) + + #lm_stat2 = wscore.dot(np.linalg.pinv(inner).dot(wscore)) + # Let's assume inner is invertible, TODO: check if usecase for pinv exists + lm_stat = score.dot(np.linalg.solve(cov_score_constraints, score)) + pval = stats.chi2.sf(lm_stat, k_constraints) + +# # check second calculation Boos referencing Kent 1982 and Engle 1984 +# # we can use this when robust_cov_params of full model is available +# #h_inv = np.linalg.inv(score_deriv) +# hinv = score_deriv_inv +# v = h_inv.dot(cov_score.dot(h_inv)) # this is robust cov_params +# v_cc = v[:k_constraints, :k_constraints] +# h_cc = score_deriv[:k_constraints, :k_constraints] +# # brute force calculation: +# h_resid_cu = h_cc - h_cu.dot(np.linalg.solve(h_uu, h_cu)) +# cov_s_c = h_resid_cu.dot(v_cc.dot(h_resid_cu)) +# diff = np.max(np.abs(cov_s_c - cov_score_constraints)) + return lm_stat, pval #, lm_stat2 + + +def lm_robust_subset_parts(score, k_constraints, + score_deriv_uu, score_deriv_cu, + cov_score_cc, cov_score_cu, cov_score_uu): + """robust generalized score tests on subset of parameters + + This is the same as lm_robust_subset with arguments in parts of + partitioned matrices. + This can be useful, when we have the parts based on different estimation + procedures, i.e. when we don't have the full unconstrained model. + + Calculates mainly the covariance of the constraint part of the score. + + Parameters + ---------- + score : ndarray, 1-D + derivative of objective function at estimated parameters + of constrained model. These is the score component for the restricted + part under hypothesis. The unconstrained part of the score is assumed + to be zero. + k_constraint: int + number of constraints + score_deriv_uu : ndarray, symmetric, square + first derivative of moment equation or second derivative of objective + function for the unconstrained part + TODO: could be OPG or any other estimator if information matrix + equality holds + score_deriv_cu : ndarray + first cross derivative of moment equation or second cross + derivative of objective function between. + cov_score_cc : ndarray + covariance matrix of the score for the unconstrained part. + This is the inner part of a sandwich estimator. + cov_score_cu : ndarray + covariance matrix of the score for the off-diagonal block, i.e. + covariance between constrained and unconstrained part. + cov_score_uu : ndarray + covariance matrix of the score for the unconstrained part. + + Returns + ------- + lm_stat : float + score/lagrange multiplier statistic + p-value : float + p-value of the LM test based on chisquare distribution + + Notes + ----- + TODO: these function should just return the covariance of the score + instead of calculating the score/lm test. + + Implementation similar to lm_robust_subset and is based on Boos 1992, + section 4.1 in the form attributed to Breslow (1990). It doesn't use the + computation attributed to Kent (1982) and Engle (1984). + """ + + tmp_proj = np.linalg.solve(score_deriv_uu, score_deriv_cu.T).T + tmp = tmp_proj.dot(cov_score_cu.T) + + # this needs to make a copy of cov_score_cc for further inplace modification + cov = cov_score_cc - tmp + cov -= tmp.T + cov += tmp_proj.dot(cov_score_uu).dot(tmp_proj.T) + + lm_stat = score.dot(np.linalg.solve(cov, score)) + pval = stats.chi2.sf(lm_stat, k_constraints) + return lm_stat, pval + + +def lm_robust_reparameterized(score, params_deriv, score_deriv, cov_score): + """robust generalized score test for transformed parameters + + The parameters are given by a nonlinear transformation of the estimated + reduced parameters + + `params = g(params_reduced)` with jacobian `G = d g / d params_reduced` + + score and other arrays are for full parameter space `params` + + Parameters + ---------- + score : ndarray, 1-D + derivative of objective function at estimated parameters + of constrained model + params_deriv: ndarray + Jacobian G of the parameter trasnformation + score_deriv: ndarray, symmetric, square + second derivative of objective function + TODO: could be OPG or any other estimator if information matrix + equality holds + cov_score B : ndarray, symmetric, square + covariance matrix of the score. This is the inner part of a sandwich + estimator. + + Returns + ------- + lm_stat : float + score/lagrange multiplier statistic + p-value : float + p-value of the LM test based on chisquare distribution + + Notes + ----- + Boos 1992, section 4.3, expression for T_{GS} just before example 6 + """ + # Boos notation + # params_deriv G + + k_params, k_reduced = params_deriv.shape + k_constraints = k_params - k_reduced + + G = params_deriv # shortcut alias + + tmp_c0 = np.linalg.pinv(G.T.dot(score_deriv.dot(G))) + tmp_c1 = score_deriv.dot(G.dot(tmp_c0.dot(G.T))) + tmp_c = np.eye(k_params) - tmp_c1 + + cov = tmp_c.dot(cov_score.dot(tmp_c.T)) # warning: reduced rank + + lm_stat = score.dot(np.linalg.pinv(cov).dot(score)) + pval = stats.chi2.sf(lm_stat, k_constraints) + return lm_stat, pval + + +def dispersion_poisson(results): + """Score/LM type tests for Poisson variance assumptions + + Null Hypothesis is + + H0: var(y) = E(y) and assuming E(y) is correctly specified + H1: var(y) ~= E(y) + + The tests are based on the constrained model, i.e. the Poisson model. + The tests differ in their assumed alternatives, and in their maintained + assumptions. + + Parameters + ---------- + results : Poisson results instance + This can be a results instance for either a discrete Poisson or a GLM + with family Poisson. + + Returns + ------- + res : ndarray, shape (7, 2) + each row contains the test statistic and p-value for one of the 7 tests + computed here. + description : 2-D list of strings + Each test has two strings a descriptive name and a string for the + alternative hypothesis. + + """ + + if hasattr(results, '_results'): + results = results._results + + endog = results.model.endog + nobs = endog.shape[0] #TODO: use attribute, may need to be added + fitted = results.predict() + #fitted = results.fittedvalues # discrete has linear prediction + #this assumes Poisson + resid2 = results.resid_response**2 + var_resid_endog = (resid2 - endog) + var_resid_fitted = (resid2 - fitted) + std1 = np.sqrt(2 * (fitted**2).sum()) + + var_resid_endog_sum = var_resid_endog.sum() + dean_a = var_resid_fitted.sum() / std1 + dean_b = var_resid_endog_sum / std1 + dean_c = (var_resid_endog / fitted).sum() / np.sqrt(2 * nobs) + + pval_dean_a = stats.norm.sf(np.abs(dean_a)) + pval_dean_b = stats.norm.sf(np.abs(dean_b)) + pval_dean_c = stats.norm.sf(np.abs(dean_c)) + + results_all = [[dean_a, pval_dean_a], + [dean_b, pval_dean_b], + [dean_c, pval_dean_c]] + description = [['Dean A', 'mu (1 + a mu)'], + ['Dean B', 'mu (1 + a mu)'], + ['Dean C', 'mu (1 + a)']] + + # Cameron Trived auxiliary regression page 78 count book 1989 + endog_v = var_resid_endog / fitted + res_ols_nb2 = OLS(endog_v, fitted).fit(use_t=False) + stat_ols_nb2 = res_ols_nb2.tvalues[0] + pval_ols_nb2 = res_ols_nb2.pvalues[0] + results_all.append([stat_ols_nb2, pval_ols_nb2]) + description.append(['CT nb2', 'mu (1 + a mu)']) + + res_ols_nb1 = OLS(endog_v, fitted).fit(use_t=False) + stat_ols_nb1 = res_ols_nb1.tvalues[0] + pval_ols_nb1 = res_ols_nb1.pvalues[0] + results_all.append([stat_ols_nb1, pval_ols_nb1]) + description.append(['CT nb1', 'mu (1 + a)']) + + endog_v = var_resid_endog / fitted + res_ols_nb2 = OLS(endog_v, fitted).fit(cov_type='HC1', use_t=False) + stat_ols_hc1_nb2 = res_ols_nb2.tvalues[0] + pval_ols_hc1_nb2 = res_ols_nb2.pvalues[0] + results_all.append([stat_ols_hc1_nb2, pval_ols_hc1_nb2]) + description.append(['CT nb2 HC1', 'mu (1 + a mu)']) + + res_ols_nb1 = OLS(endog_v, np.ones(len(endog_v))).fit(cov_type='HC1', + use_t=False) + stat_ols_hc1_nb1 = res_ols_nb1.tvalues[0] + pval_ols_hc1_nb1 = res_ols_nb1.pvalues[0] + results_all.append([stat_ols_hc1_nb1, pval_ols_hc1_nb1]) + description.append(['CT nb1 HC1', 'mu (1 + a)']) + + return np.array(results_all), description + + +def dispersion_poisson_generic(results, exog_new_test, exog_new_control=None, + include_score=False, use_endog=True, + cov_type='HC1', cov_kwds=None, use_t=False): + """A variable addition test for the variance function + + This uses an artificial regression to calculate a variant of an LM or + generalized score test for the specification of the variance assumption + in a Poisson model. The performed test is a Wald test on the coefficients + of the `exog_new_test`. + + Warning: insufficiently tested, especially for options + + """ + + if hasattr(results, '_results'): + results = results._results + + endog = results.model.endog + nobs = endog.shape[0] #TODO: use attribute, may need to be added + # fitted = results.fittedvalues # generic has linpred as fittedvalues + fitted = results.predict() + resid2 = results.resid_response**2 + #the following assumes Poisson + if use_endog: + var_resid = (resid2 - endog) + else: + var_resid = (resid2 - fitted) + + endog_v = var_resid / fitted + + k_constraints = exog_new_test.shape[1] + ex_list = [exog_new_test] + if include_score: + score_obs = results.model.score_obs(results.params) + ex_list.append(score_obs) + + if exog_new_control is not None: + ex_list.append(score_obs) + + if len(ex_list) > 1: + ex = np.column_stack(ex_list) + use_wald = True + else: + ex = ex_list[0] # no control variables in exog + use_wald = False + + res_ols = OLS(endog_v, ex).fit(cov_type=cov_type, cov_kwds=cov_kwds, + use_t=use_t) + + if use_wald: + # we have controls and need to test coefficients + k_vars = ex.shape[1] + constraints = np.eye(k_constraints, k_vars) + ht = res_ols.wald_test(constraints) + stat_ols = ht.statistic + pval_ols = ht.pvalue + else: + # we don't have controls and can use overall fit + nobs = endog_v.shape[0] + rsquared_noncentered = 1 - res_ols.ssr/res_ols.uncentered_tss + stat_ols = nobs * rsquared_noncentered + pval_ols = stats.chi2.sf(stat_ols, k_constraints) + + return stat_ols, pval_ols + + +def conditional_moment_test_generic(mom_test, mom_test_deriv, + mom_incl, mom_incl_deriv, + var_mom_all=None, + cov_type='OPG', cov_kwds=None): + """generic conditional moment test + + This is mainly intended as internal function in support of diagnostic + and specification tests. It has no conversion and checking of correct + arguments. + + Parameters + ---------- + mom_test : ndarray, 2-D (nobs, k_constraints) + moment conditions that will be tested to be zero + mom_test_deriv : ndarray, 2-D, square (k_constraints, k_constraints) + derivative of moment conditions under test with respect to the + parameters of the model summed over observations. + mom_incl : ndarray, 2-D (nobs, k_params) + moment conditions that where use in estimation, assumed to be zero + This is score_obs in the case of (Q)MLE + mom_incl_deriv : ndarray, 2-D, square (k_params, k_params) + derivative of moment conditions of estimator summed over observations + This is the information matrix or Hessian in the case of (Q)MLE. + var_mom_all : None, or ndarray, 2-D, (k, k) with k = k_constraints + k_params + Expected product or variance of the joint (column_stacked) moment + conditions. The stacking should have the variance of the moment + conditions under test in the first k_constraint rows and columns. + If it is not None, then it will be estimated based on cov_type. + I think: This is the Hessian of the extended or alternative model + under full MLE and score test assuming information matrix identity + holds. + + Returns + ------- + results + + Notes + ----- + TODO: cov_type other than OPG is missing + initial implementation based on Cameron Trived countbook 1998 p.48, p.56 + + also included: mom_incl can be None if expected mom_test_deriv is zero. + + References + ---------- + Cameron and Trivedi 1998 count book + Wooldridge ??? + Pagan and Vella 1989 + + """ + if cov_type != 'OPG': + raise NotImplementedError + + k_constraints = mom_test.shape[1] + + if mom_incl is None: + # assume mom_test_deriv is zero, do not include effect of mom_incl + if var_mom_all is None: + var_cm = mom_test.T.dot(mom_test) + else: + var_cm = var_mom_all + + else: + # take into account he effect of parameter estimates on mom_test + if var_mom_all is None: + mom_all = np.column_stack((mom_test, mom_incl)) + # TODO: replace with inner sandwich covariance estimator + var_mom_all = mom_all.T.dot(mom_all) + + tmp = mom_test_deriv.dot(np.linalg.pinv(mom_incl_deriv)) + h = np.column_stack((np.eye(k_constraints), -tmp)) + + var_cm = h.dot(var_mom_all.dot(h.T)) + + # calculate test results with chisquare + var_cm_inv = np.linalg.pinv(var_cm) + mom_test_sum = mom_test.sum(0) + statistic = mom_test_sum.dot(var_cm_inv.dot(mom_test_sum)) + pval = stats.chi2.sf(statistic, k_constraints) + + # normal test of individual components + se = np.sqrt(np.diag(var_cm)) + tvalues = mom_test_sum / se + pvalues = stats.norm.sf(np.abs(tvalues)) + + res = ResultsGeneric(var_cm=var_cm, + stat_cmt=statistic, + pval_cmt=pval, + tvalues=tvalues, + pvalues=pvalues) + + return res + + +def conditional_moment_test_regression(mom_test, mom_test_deriv=None, + mom_incl=None, mom_incl_deriv=None, + var_mom_all=None, demean=False, + cov_type='OPG', cov_kwds=None): + """generic conditional moment test based artificial regression + + this is very experimental, no options implemented yet + + so far + OPG regression, or + artificial regression with Robust Wald test + + The latter is (as far as I can see) the same as an overidentifying test + in GMM where the test statistic is the value of the GMM objective function + and it is assumed that parameters were estimated with optimial GMM, i.e. + the weight matrix equal to the expectation of the score variance. + + """ + # so far coded from memory + nobs, k_constraints = mom_test.shape + + endog = np.ones(nobs) + if mom_incl is not None: + ex = np.column_stack((mom_test, mom_incl)) + else: + ex = mom_test + if demean: + ex -= ex.mean(0) + if cov_type == 'OPG': + res = OLS(endog, ex).fit() + + statistic = nobs * res.rsquared + pval = stats.chi2.sf(statistic, k_constraints) + else: + res = OLS(endog, ex).fit(cov_type=cov_type, cov_kwds=cov_kwds) + tres = res.wald_test(np.eye(ex.shape[1])) + statistic = tres.statistic + pval = tres.pvalue + + return statistic, pval + + +class CMTNewey(object): + """generic moment test for GMM + + This is a class to calculate and hold the various results + + This is based on Newey 1985 on GMM. + Lemma 1: + Theorem 1 + + The main method is `chisquare` which returns the result of the + conditional moment test. + + Warning: name of class and methods will likely be changed + + Parameters + ---------- + moments : ndarray, 1-D + moments that are tested to be zero. They don't need to be derived + from a likelihood function. + moments_deriv : ndarray + derivative of the moment function with respect to the parameters that + are estimated + cov_moments : ndarray + An estimate for the joint (expected) covariance of all moments. This + can be a heteroscedasticity or correlation robust covariance estimate, + i.e. the inner part of a sandwich covariance. + weights : ndarray + Weights used in the GMM estimation. + transf_mt : ndarray + This defines the test moments where `transf_mt` is the matrix that + defines a Linear combination of moments that have expected value equal + to zero under the Null hypothesis. + + Notes + ----- + The one letter names in Newey 1985 are + + moments, g : + cov_moments, V : + moments_deriv, H : + weights, W : + transf_mt, L : + linear transformation to get the test condition from the moments + + not used, add as argument to methods or __init__? + K cov for misspecification + or mispecification_deriv + + This follows the GMM version in Newey 1985a, not the MLE version in + Newey 1985b. Newey uses the generalized information matrix equality in the + MLE version Newey (1985b). + + Newey 1985b Lemma 1 does not impose correctly specified likelihood, but + assumes it in the following. Lemma 1 in both articles are essentially the + same assuming D = H' W. + + References + ---------- + - Newey 1985a, Generalized Method of Moment specification testing, + Journal of Econometrics + - Newey 1985b, Maximum Likelihood Specification Testing and Conditional + Moment Tests, Econometrica + + """ + + def __init__(self, moments, cov_moments, moments_deriv, + weights, transf_mt): + + self.moments = moments + self.cov_moments = cov_moments + self.moments_deriv = moments_deriv + self.weights = weights + self.transf_mt = transf_mt + + # derived quantities + self.moments_constraint = transf_mt.dot(moments) + self.htw = moments_deriv.T.dot(weights) # H'W + + # TODO check these + self.k_moments = self.moments.shape[-1] # in this case only 1-D + # assuming full rank of L' + self.k_constraints = self.transf_mt.shape[0] + + @cache_readonly + def asy_transf_params(self): + + moments_deriv = self.moments_deriv # H + #weights = self.weights # W + + htw = self.htw # moments_deriv.T.dot(weights) # H'W + res = np.linalg.solve(htw.dot(moments_deriv), htw) + #res = np.linalg.pinv(htw.dot(moments_deriv)).dot(htw) + return -res + + @cache_readonly + def project_w(self): + # P_w = I - H (H' W H)^{-1} H' W + moments_deriv = self.moments_deriv # H + + res = moments_deriv.dot(self.asy_transf_params) + res += np.eye(res.shape[0]) + return res + + @cache_readonly + def asy_transform_mom_constraints(self): + # L P_w + res = self.transf_mt.dot(self.project_w) + return res + + @cache_readonly + def asy_cov_moments(self): + """ + + `sqrt(T) * g_T(b_0) asy N(K delta, V)` + + mean is not implemented, + V is the same as cov_moments in __init__ argument + """ + + return self.cov_moments + + @cache_readonly + def cov_mom_constraints(self): + + # linear transformation + transf = self.asy_transform_mom_constraints + + return transf.dot(self.asy_cov_moments).dot(transf.T) + + @cache_readonly + def rank_cov_mom_constraints(self): + return np.linalg.matrix_rank(self.cov_mom_constraints) + + def ztest(self): + """statistic, p-value and degrees of freedom of separate moment test + + currently two sided test only + + TODO: This can use generic ztest/ttest features and return + ContrastResults + """ + diff = self.moments_constraint + bse = np.sqrt(np.diag(self.cov_mom_constraints)) + + # Newey uses a generalized inverse + stat = diff / bse + pval = stats.norm.sf(np.abs(stat))*2 + return stat, pval + + @cache_readonly + def chisquare(self): + """statistic, p-value and degrees of freedom of joint moment test + """ + diff = self.moments_constraint + cov = self.cov_mom_constraints + + # Newey uses a generalized inverse + stat = diff.T.dot(np.linalg.pinv(cov).dot(diff)) + df = self.rank_cov_mom_constraints + pval = stats.chi2.sf(stat, df) # Theorem 1 + return stat, pval, df + + +class CMTTauchen(object): + """generic moment tests or conditional moment tests for Quasi-MLE + + This is a generic class based on Tauchen 1985 + + The main method is `chisquare` which returns the result of the + conditional moment test. + + Warning: name of class and of methods will likely be changed + + Parameters + ---------- + score : ndarray, 1-D + moment condition used in estimation, score of log-likelihood function + score_deriv : ndarray + derivative of score function with respect to the parameters that are + estimated. This is the Hessian in quasi-maximum likelihood + moments : ndarray, 1-D + moments that are tested to be zero. They don't need to be derived + from a likelihood function. + moments_deriv : ndarray + derivative of the moment function with respect to the parameters that + are estimated + cov_moments : ndarray + An estimate for the joint (expected) covariance of score and test + moments. This can be a heteroscedasticity or correlation robust + covariance estimate, i.e. the inner part of a sandwich covariance. + + """ + + def __init__(self, score, score_deriv, moments, moments_deriv, cov_moments): + self.score = score + self.score_deriv = score_deriv + self.moments = moments + self.moments_deriv = moments_deriv + self.cov_moments_all = cov_moments + + self.k_moments_test = moments.shape[-1] + self.k_params = score.shape[-1] + self.k_moments_all = self.k_params + self.k_moments_test + + @cache_readonly + def cov_params_all(self): + m_deriv = np.zeros((self.k_moments_all, self.k_moments_all)) + m_deriv[:self.k_params, :self.k_params] = self.score_deriv + m_deriv[self.k_params:, :self.k_params] = self.moments_deriv + m_deriv[self.k_params:, self.k_params:] = np.eye(self.k_moments_test) + + m_deriv_inv = np.linalg.inv(m_deriv) + cov = m_deriv_inv.dot(self.cov_moments_all.dot(m_deriv_inv.T)) # K_inv J K_inv + return cov + + @cache_readonly + def cov_mom_constraints(self): + return self.cov_params_all[self.k_params:, self.k_params:] + + @cache_readonly + def rank_cov_mom_constraints(self): + return np.linalg.matrix_rank(self.cov_mom_constraints) + + # TODO: not DRY, just copied from CMTNewey + def ztest(self): + """statistic, p-value and degrees of freedom of separate moment test + + currently two sided test only + + TODO: This can use generic ztest/ttest features and return + ContrastResults + """ + diff = self.moments_constraint + bse = np.sqrt(np.diag(self.cov_mom_constraints)) + + # Newey uses a generalized inverse + stat = diff / bse + pval = stats.norm.sf(np.abs(stat))*2 + return stat, pval + + @cache_readonly + def chisquare(self): + """statistic, p-value and degrees of freedom of joint moment test + """ + diff = self.moments #_constraints + cov = self.cov_mom_constraints + + # Newey uses a generalized inverse, we use it also here + stat = diff.T.dot(np.linalg.pinv(cov).dot(diff)) + #df = self.k_moments_test + # We allow for redundant mom_constraints: + df = self.rank_cov_mom_constraints + pval = stats.chi2.sf(stat, df) + return stat, pval, df diff --git a/statsmodels/stats/_knockoff.py b/statsmodels/stats/_knockoff.py new file mode 100644 index 0000000..4f13b40 --- /dev/null +++ b/statsmodels/stats/_knockoff.py @@ -0,0 +1,256 @@ +""" +The RegressionFDR class implements the 'Knockoff' approach for +controlling false discovery rates (FDR) in regression analysis. + +The knockoff approach does not require standard errors. Thus one +application is to provide inference for parameter estimates that are +not smooth functions of the data. For example, the knockoff approach +can be used to do inference for parameter estimates obtained from the +LASSO, of from stepwise variable selection. + +The knockoff approach controls FDR for parameter estimates that may be +dependent, such as coefficient estimates in a multiple regression +model. + +The knockoff approach is applicable whenever the test statistic can be +computed entirely from x'y and x'x, where x is the design matrix and y +is the vector of responses. + +Reference +--------- +Rina Foygel Barber, Emmanuel Candes (2015). Controlling the False +Discovery Rate via Knockoffs. Annals of Statistics 43:5. +http://statweb.stanford.edu/~candes/papers/FDR_regression.pdf +""" + +import numpy as np +import pandas as pd +from statsmodels.iolib import summary2 + + +class RegressionFDR(object): + """ + Control FDR in a regression procedure. + + Parameters + ---------- + endog : array-like + The dependent variable of the regression + exog : array-like + The independent variables of the regression + regeffects : RegressionEffects instance + An instance of a RegressionEffects class that can compute + effect sizes for the regression coefficients. + method : string + The approach used to asssess and control FDR, currently + must be 'knockoff'. + + Returns + ------- + Returns an instance of the RegressionFDR class. The `fdr` attribute + holds the estimated false discovery rates. + + Notes + ----- + This class Implements the knockoff method of Barber and Candes. + This is an approach for controlling the FDR of a variety of + regression estimation procedures, including correlation + coefficients, OLS regression, OLS with forward selection, and + LASSO regression. + + For other approaches to FDR control in regression, see the + statsmodels.stats.multitest module. Methods provided in that + module use Z-scores or p-values, and therefore require standard + errors for the coefficient estimates to be available. + + The default method for constructing the augmented design matrix is + the 'equivariant' approach, set `design_method='sdp'` to use an + alternative approach involving semidefinite programming. See + Barber and Candes for more information about both approaches. The + sdp approach requires that the cvxopt package be installed. + """ + + def __init__(self, endog, exog, regeffects, method="knockoff", + **kwargs): + + if hasattr(exog, "columns"): + self.xnames = exog.columns + else: + self.xnames = ["x%d" % j for j in range(exog.shape[1])] + + exog = np.asarray(exog) + endog = np.asarray(endog) + + if "design_method" not in kwargs: + kwargs["design_method"] = "equi" + + nobs, nvar = exog.shape + + if kwargs["design_method"] == "equi": + exog1, exog2, _ = _design_knockoff_equi(exog) + elif kwargs["design_method"] == "sdp": + exog1, exog2, _ = _design_knockoff_sdp(exog) + endog = endog - np.mean(endog) + + self.endog = endog + self.exog = np.concatenate((exog1, exog2), axis=1) + self.exog1 = exog1 + self.exog2 = exog2 + + self.stats = regeffects.stats(self) + + unq, inv, cnt = np.unique(self.stats, return_inverse=True, + return_counts=True) + + # The denominator of the FDR + cc = np.cumsum(cnt) + denom = len(self.stats) - cc + cnt + denom[denom < 1] = 1 + + # The numerator of the FDR + ii = np.searchsorted(unq, -unq, side='right') - 1 + numer = cc[ii] + numer[ii < 0] = 0 + + # The knockoff+ estimated FDR + fdrp = (1 + numer) / denom + + # The knockoff estimated FDR + fdr = numer / denom + + self.fdr = fdr[inv] + self.fdrp = fdrp[inv] + self._ufdr = fdr + self._unq = unq + + df = pd.DataFrame(index=self.xnames) + df["Stat"] = self.stats + df["FDR+"] = self.fdrp + df["FDR"] = self.fdr + self.fdr_df = df + + def threshold(self, tfdr): + """ + Returns the threshold statistic for a given target FDR. + """ + + if np.min(self._ufdr) <= tfdr: + return self._unq[self._ufdr <= tfdr][0] + else: + return np.inf + + def summary(self): + + summ = summary2.Summary() + summ.add_title("Regression FDR results") + summ.add_df(self.fdr_df) + + return summ + + +def _design_knockoff_sdp(exog): + """ + Use semidefinite programming to construct a knockoff design + matrix. + + Requires cvxopt to be installed. + """ + + try: + from cvxopt import solvers, matrix + except ImportError: + raise ValueError("SDP knockoff designs require installation of cvxopt") + + nobs, nvar = exog.shape + + # Standardize exog + xnm = np.sum(exog**2, 0) + xnm = np.sqrt(xnm) + exog = exog / xnm + + Sigma = np.dot(exog.T, exog) + + c = matrix(-np.ones(nvar)) + + h0 = np.concatenate((np.zeros(nvar), np.ones(nvar))) + h0 = matrix(h0) + G0 = np.concatenate((-np.eye(nvar), np.eye(nvar)), axis=0) + G0 = matrix(G0) + + h1 = 2 * Sigma + h1 = matrix(h1) + i, j = np.diag_indices(nvar) + G1 = np.zeros((nvar*nvar, nvar)) + G1[i*nvar + j, i] = 1 + G1 = matrix(G1) + + solvers.options['show_progress'] = False + sol = solvers.sdp(c, G0, h0, [G1], [h1]) + sl = np.asarray(sol['x']).ravel() + + xcov = np.dot(exog.T, exog) + exogn = _get_knmat(exog, xcov, sl) + + return exog, exogn, sl + + +def _design_knockoff_equi(exog): + """ + Construct an equivariant design matrix for knockoff analysis. + + Follows the 'equi-correlated knockoff approach of equation 2.4 in + Barber and Candes. + + Constructs a pair of design matrices exogs, exogn such that exogs + is a scaled/centered version of the input matrix exog, exogn is + another matrix of the same shape with cov(exogn) = cov(exogs), and + the covariances between corresponding columns of exogn and exogs + are as small as possible. + """ + + nobs, nvar = exog.shape + + if nobs < 2*nvar: + msg = "The equivariant knockoff can ony be used when n >= 2*p" + raise ValueError(msg) + + # Standardize exog + xnm = np.sum(exog**2, 0) + xnm = np.sqrt(xnm) + exog = exog / xnm + + xcov = np.dot(exog.T, exog) + ev, _ = np.linalg.eig(xcov) + evmin = np.min(ev) + + sl = min(2*evmin, 1) + sl = sl * np.ones(nvar) + + exogn = _get_knmat(exog, xcov, sl) + + return exog, exogn, sl + + +def _get_knmat(exog, xcov, sl): + # Utility function, see equation 2.2 of Barber & Candes. + + nobs, nvar = exog.shape + + ash = np.linalg.inv(xcov) + ash *= -np.outer(sl, sl) + i, j = np.diag_indices(nvar) + ash[i, j] += 2 * sl + + umat = np.random.normal(size=(nobs, nvar)) + u, _ = np.linalg.qr(exog) + umat -= np.dot(u, np.dot(u.T, umat)) + umat, _ = np.linalg.qr(umat) + + ashr, xc, _ = np.linalg.svd(ash, 0) + ashr *= np.sqrt(xc) + ashr = ashr.T + + ex = (sl[:, None] * np.linalg.solve(xcov, exog.T)).T + exogn = exog - ex + np.dot(umat, ashr) + + return exogn diff --git a/statsmodels/stats/_lilliefors.py b/statsmodels/stats/_lilliefors.py new file mode 100644 index 0000000..ad4b199 --- /dev/null +++ b/statsmodels/stats/_lilliefors.py @@ -0,0 +1,482 @@ +# -*- coding: utf-8 -*- +""" +Implements Lilliefors corrected Kolmogorov-Smirnov tests for normal and +exponential distributions. + +`kstest_fit` is provided as a top-level function to access both tests. +`kstest_normal` and `kstest_exponential` are provided as convenience functions +with the appropriate test as the default. +`lilliefors` is provided as an alias for `kstest_fit`. + +Created on Sat Oct 01 13:16:49 2011 + +Author: Josef Perktold +License: BSD-3 + +pvalues for Lilliefors test are based on formula and table in + +An Analytic Approximation to the Distribution of Lilliefors's Test Statistic for Normality +Author(s): Gerard E. Dallal and Leland WilkinsonSource: The American Statistician, Vol. 40, No. 4 (Nov., 1986), pp. 294-296Published by: American Statistical AssociationStable URL: http://www.jstor.org/stable/2684607 . + +On the Kolmogorov-Smirnov Test for Normality with Mean and Variance +Unknown +Hubert W. Lilliefors +Journal of the American Statistical Association, Vol. 62, No. 318. (Jun., 1967), pp. 399-402. + + +--- + +Updated 2017-07-23 +Jacob C. Kimmel + +Ref: +Lilliefors, H.W. +On the Kolmogorov-Smirnov test for the exponential distribution with mean unknown. +Journal of the American Statistical Association, Vol 64, No. 325. (1969), pp. 387–389. +""" +from functools import partial + +from statsmodels.compat.python import string_types +import numpy as np +from scipy import stats +from .tabledist import TableDist + + +def ksstat(x, cdf, alternative='two_sided', args=()): + """ + Calculate statistic for the Kolmogorov-Smirnov test for goodness of fit + + This calculates the test statistic for a test of the distribution G(x) of an observed + variable against a given distribution F(x). Under the null + hypothesis the two distributions are identical, G(x)=F(x). The + alternative hypothesis can be either 'two_sided' (default), 'less' + or 'greater'. The KS test is only valid for continuous distributions. + + Parameters + ---------- + x : array_like, 1d + array of observations + cdf : string or callable + string: name of a distribution in scipy.stats + callable: function to evaluate cdf + alternative : 'two_sided' (default), 'less' or 'greater' + defines the alternative hypothesis (see explanation) + args : tuple, sequence + distribution parameters for call to cdf + + + Returns + ------- + D : float + KS test statistic, either D, D+ or D- + + See Also + -------- + scipy.stats.kstest + + Notes + ----- + + In the one-sided test, the alternative is that the empirical + cumulative distribution function of the random variable is "less" + or "greater" than the cumulative distribution function F(x) of the + hypothesis, G(x)<=F(x), resp. G(x)>=F(x). + + In contrast to scipy.stats.kstest, this function only calculates the + statistic which can be used either as distance measure or to implement + case specific p-values. + + """ + nobs = float(len(x)) + + if isinstance(cdf, string_types): + cdf = getattr(stats.distributions, cdf).cdf + elif hasattr(cdf, 'cdf'): + cdf = getattr(cdf, 'cdf') + + x = np.sort(x) + cdfvals = cdf(x, *args) + + if alternative in ['two_sided', 'greater']: + Dplus = (np.arange(1.0, nobs+1)/nobs - cdfvals).max() + if alternative == 'greater': + return Dplus + + if alternative in ['two_sided', 'less']: + Dmin = (cdfvals - np.arange(0.0, nobs)/nobs).max() + if alternative == 'less': + return Dmin + + D = np.max([Dplus,Dmin]) + + return D + + +# new version with tabledist +# -------------------------- + +def get_lilliefors_table(dist='norm'): + ''' + Generates tables for significance levels of Lilliefors test statistics + + Tables for available normal and exponential distribution testing, + as specified in Lilliefors references above + + Parameters + ---------- + dist : string. + distribution being tested in set {'norm', 'exp'}. + + Returns + ------- + lf : TableDist object. + table of critical values + ''' + # function just to keep things together + # for this test alpha is sf probability, i.e. right tail probability + + if dist == 'norm': + alpha = np.array([ 0.2 , 0.15 , 0.1 , 0.05 , 0.01 , 0.001])[::-1] + size = np.array([ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 25, 30, 40, 100, 400, 900], float) + + # critical values, rows are by sample size, columns are by alpha + crit_lf = np.array( [[303, 321, 346, 376, 413, 433], + [289, 303, 319, 343, 397, 439], + [269, 281, 297, 323, 371, 424], + [252, 264, 280, 304, 351, 402], + [239, 250, 265, 288, 333, 384], + [227, 238, 252, 274, 317, 365], + [217, 228, 241, 262, 304, 352], + [208, 218, 231, 251, 291, 338], + [200, 210, 222, 242, 281, 325], + [193, 202, 215, 234, 271, 314], + [187, 196, 208, 226, 262, 305], + [181, 190, 201, 219, 254, 296], + [176, 184, 195, 213, 247, 287], + [171, 179, 190, 207, 240, 279], + [167, 175, 185, 202, 234, 273], + [163, 170, 181, 197, 228, 266], + [159, 166, 176, 192, 223, 260], + [143, 150, 159, 173, 201, 236], + [131, 138, 146, 159, 185, 217], + [115, 120, 128, 139, 162, 189], + [ 74, 77, 82, 89, 104, 122], + [ 37, 39, 41, 45, 52, 61], + [ 25, 26, 28, 30, 35, 42]])[:,::-1] / 1000. + + # also build a table for larger sample sizes + def f(n): + return np.array([0.736, 0.768, 0.805, 0.886, 1.031]) / np.sqrt(n) + + higher_sizes = np.array([35, 40, 45, 50, 60, 70, + 80, 100, 200, 500, 1000, + 2000, 3000, 5000, 10000, 100000], float) + higher_crit_lf = np.zeros([higher_sizes.shape[0], crit_lf.shape[1]-1]) + for i in range(len(higher_sizes)): + higher_crit_lf[i, :] = f(higher_sizes[i]) + + alpha_large = alpha[:-1] + size_large = np.concatenate([size, higher_sizes]) + crit_lf_large = np.vstack([crit_lf[:-4,:-1], higher_crit_lf]) + lf = TableDist(alpha, size, crit_lf) + + elif dist == 'exp': + alpha = np.array([0.2, 0.15, 0.1, 0.05, 0.01])[::-1] + size = np.array([3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,25,30], + float) + + crit_lf = np.array([ [451, 479, 511, 551, 600], + [396, 422, 499, 487, 548], + [359, 382, 406, 442, 504], + [331, 351, 375, 408, 470], + [309, 327, 350, 382, 442], + [291, 308, 329, 360, 419], + [277, 291, 311, 341, 399], + [263, 277, 295, 325, 380], + [251, 264, 283, 311, 365], + [241, 254, 271, 298, 351], + [232, 245, 261, 287, 338], + [224, 237, 252, 277, 326], + [217, 229, 244, 269, 315], + [211, 222, 236, 261, 306], + [204, 215, 229, 253, 297], + [199, 210, 223, 246, 289], + [193, 204, 218, 239, 283], + [188, 199, 212, 234, 278], + [170, 180, 191, 210, 247], + [155, 164, 174, 192, 226]])[:,::-1] / 1000. + + def f(n): + return np.array([.86, .91, .96, 1.06, 1.25]) / np.sqrt(n) + + higher_sizes = np.array([35, 40, 45, 50, 60, 70, + 80, 100, 200, 500, 1000, + 2000, 3000, 5000, 10000, 100000], float) + higher_crit_lf = np.zeros([higher_sizes.shape[0], crit_lf.shape[1]]) + for i in range(len(higher_sizes)): + higher_crit_lf[i,:] = f(higher_sizes[i]) + + size = np.concatenate([size, higher_sizes]) + crit_lf = np.vstack([crit_lf, higher_crit_lf]) + lf = TableDist(alpha, size, crit_lf) + else: + raise ValueError("Invalid dist parameter. dist must be 'norm' or 'exp'") + + return lf + +lilliefors_table_norm = get_lilliefors_table(dist='norm') +lilliefors_table_expon = get_lilliefors_table(dist='exp') + + +def pval_lf(Dmax, n): + '''approximate pvalues for Lilliefors test + + This is only valid for pvalues smaller than 0.1 which is not checked in + this function. + + Parameters + ---------- + Dmax : array_like + two-sided Kolmogorov-Smirnov test statistic + n : int or float + sample size + + Returns + ------- + p-value : float or ndarray + pvalue according to approximation formula of Dallal and Wilkinson. + + Notes + ----- + This is mainly a helper function where the calling code should dispatch + on bound violations. Therefore it doesn't check whether the pvalue is in + the valid range. + + Precision for the pvalues is around 2 to 3 decimals. This approximation is + also used by other statistical packages (e.g. R:fBasics) but might not be + the most precise available. + + References + ---------- + DallalWilkinson1986 + + ''' + + #todo: check boundaries, valid range for n and Dmax + if n > 100: + Dmax *= (n / 100.)**0.49 + n = 100 + pval = np.exp(-7.01256 * Dmax**2 * (n + 2.78019) + + 2.99587 * Dmax * np.sqrt(n + 2.78019) - 0.122119 + + 0.974598/np.sqrt(n) + 1.67997/n) + return pval + + +def kstest_fit(x, dist='norm', pvalmethod='approx'): + """ + Lilliefors test for normality or an exponential distribution. + + Kolmogorov Smirnov test with estimated mean and variance + + Parameters + ---------- + x : array_like, 1d + data series, sample + dist : {'norm', 'exp'}, optional + Distribution to test in set. + pvalmethod : {'approx', 'table'}, optional + 'approx' is only valid for normality. if `dist = 'exp'`, + `table` is returned. + 'approx' uses the approximation formula of Dalal and Wilkinson, + valid for pvalues < 0.1. If the pvalue is larger than 0.1, then the + result of `table` is returned + + For normality: + 'table' uses the table from Dalal and Wilkinson, which is available + for pvalues between 0.001 and 0.2, and the formula of Lilliefors for + large n (n>900). Values in the table are linearly interpolated. + Values outside the range will be returned as bounds, 0.2 for large and + 0.001 for small pvalues. + For exponential: + 'table' uses the table from Lilliefors 1967, available for pvalues + between 0.01 and 0.2. + Values outside the range will be returned as bounds, 0.2 for large and + 0.01 for small pvalues. + + Returns + ------- + ksstat : float + Kolmogorov-Smirnov test statistic with estimated mean and variance. + pvalue : float + If the pvalue is lower than some threshold, e.g. 0.05, then we can + reject the Null hypothesis that the sample comes from a normal + distribution + + Notes + ----- + Reported power to distinguish normal from some other distributions is lower + than with the Anderson-Darling test. + + could be vectorized + """ + x = np.asarray(x) + nobs = len(x) + + if dist == 'norm': + z = (x - x.mean()) / x.std(ddof=1) + test_d = stats.norm.cdf + lilliefors_table = lilliefors_table_norm + elif dist == 'exp': + z = x / x.mean() + test_d = stats.expon.cdf + lilliefors_table = lilliefors_table_expon + pvalmethod = 'table' + else: + raise ValueError("Invalid dist parameter. dist must be 'norm' or 'exp'") + + d_ks = ksstat(z, test_d, alternative='two_sided') + + if pvalmethod == 'approx': + pval = pval_lf(d_ks, nobs) + # check pval is in desired range + if pval > 0.1: + pval = lilliefors_table.prob(d_ks, nobs) + elif pvalmethod == 'table': + pval = lilliefors_table.prob(d_ks, nobs) + + return d_ks, pval + + +lilliefors = kstest_fit + +# namespace aliases +kstest_normal = kstest_fit +kstest_exponential = partial(kstest_fit, dist='exp') + +# old version: +# ------------ +''' +tble = \ +00 20 15 10 05 01 .1 +4 .303 .321 .346 .376 .413 .433 +5 .289 .303 .319 .343 .397 .439 +6 .269 .281 .297 .323 .371 .424 +7 .252 .264 .280 .304 .351 .402 +8 .239 .250 .265 .288 .333 .384 +9 .227 .238 .252 .274 .317 .365 +10 .217 .228 .241 .262 .304 .352 +11 .208 .218 .231 .251 .291 .338 +12 .200 .210 .222 .242 .281 .325 +13 .193 .202 .215 .234 .271 .314 +14 .187 .196 .208 .226 .262 .305 +15 .181 .190 .201 .219 .254 .296 +16 .176 .184 .195 .213 .247 .287 +17 .171 .179 .190 .207 .240 .279 +18 .167 .175 .185 .202 .234 .273 +19 .163 .170 .181 .197 .228 .266 +20 .159 .166 .176 .192 .223 .260 +25 .143 .150 .159 .173 .201 .236 +30 .131 .138 .146 .159 .185 .217 +40 .115 .120 .128 .139 .162 .189 +100 .074 .077 .082 .089 .104 .122 +400 .037 .039 .041 .045 .052 .061 +900 .025 .026 .028 .030 .035 .042''' + +''' +parr = np.array([line.split() for line in tble.split('\n')],float) +size = parr[1:,0] +alpha = parr[0,1:] / 100. +crit = parr[1:, 1:] + +alpha = np.array([ 0.2 , 0.15 , 0.1 , 0.05 , 0.01 , 0.001]) +size = np.array([ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 25, 30, 40, 100, 400, 900], float) + +#critical values, rows are by sample size, columns are by alpha +crit_lf = np.array( [[303, 321, 346, 376, 413, 433], + [289, 303, 319, 343, 397, 439], + [269, 281, 297, 323, 371, 424], + [252, 264, 280, 304, 351, 402], + [239, 250, 265, 288, 333, 384], + [227, 238, 252, 274, 317, 365], + [217, 228, 241, 262, 304, 352], + [208, 218, 231, 251, 291, 338], + [200, 210, 222, 242, 281, 325], + [193, 202, 215, 234, 271, 314], + [187, 196, 208, 226, 262, 305], + [181, 190, 201, 219, 254, 296], + [176, 184, 195, 213, 247, 287], + [171, 179, 190, 207, 240, 279], + [167, 175, 185, 202, 234, 273], + [163, 170, 181, 197, 228, 266], + [159, 166, 176, 192, 223, 260], + [143, 150, 159, 173, 201, 236], + [131, 138, 146, 159, 185, 217], + [115, 120, 128, 139, 162, 189], + [ 74, 77, 82, 89, 104, 122], + [ 37, 39, 41, 45, 52, 61], + [ 25, 26, 28, 30, 35, 42]]) / 1000. + +#original Lilliefors paper +crit_greater30 = lambda n: np.array([0.736, 0.768, 0.805, 0.886, 1.031])/np.sqrt(n) +alpha_greater30 = np.array([ 0.2 , 0.15 , 0.1 , 0.05 , 0.01 , 0.001]) + + +from scipy.interpolate import interp1d +n_alpha = 6 +polyn = [interp1d(size, crit[:,i]) for i in range(n_alpha)] + +def critpolys(n): + return np.array([p(n) for p in polyn]) + +def pval_lftable(x, n): + #returns extrem probabilities, 0.001 and 0.2, for out of range + critvals = critpolys(n) + if x < critvals[0]: + return alpha[0] + elif x > critvals[-1]: + return alpha[-1] + else: + return interp1d(critvals, alpha)(x) + +for n in [19, 19.5, 20, 21, 25]: + print critpolys(n) + +print pval_lftable(0.166, 20) +print pval_lftable(0.166, 21) + + + +print 'n=25:', '.103 .052 .010' +print [pval_lf(x, 25) for x in [.159, .173, .201, .236]] + +print 'n=10', '.103 .050 .009' +print [pval_lf(x, 10) for x in [.241, .262, .304, .352]] + + +print 'n=400', '.104 .050 .011' +print [pval_lf(x, 400) for x in crit[-2,2:-1]] +print 'n=900', '.093 .054 .011' +print [pval_lf(x, 900) for x in crit[-1,2:-1]] +print [pval_lftable(x, 400) for x in crit[-2,:]] +print [pval_lftable(x, 300) for x in crit[-3,:]] + +xx = np.random.randn(40) +print kstest_normal(xx) + +xx2 = np.array([ 1.138, -0.325, -1.461, -0.441, -0.005, -0.957, -1.52 , 0.481, + 0.713, 0.175, -1.764, -0.209, -0.681, 0.671, 0.204, 0.403, + -0.165, 1.765, 0.127, -1.261, -0.101, 0.527, 1.114, -0.57 , + -1.172, 0.697, 0.146, 0.704, 0.422, 0.63 , 0.661, 0.025, + 0.177, 0.578, 0.945, 0.211, 0.153, 0.279, 0.35 , 0.396]) + +( 1.138, -0.325, -1.461, -0.441, -0.005, -0.957, -1.52 , 0.481, + 0.713, 0.175, -1.764, -0.209, -0.681, 0.671, 0.204, 0.403, + -0.165, 1.765, 0.127, -1.261, -0.101, 0.527, 1.114, -0.57 , + -1.172, 0.697, 0.146, 0.704, 0.422, 0.63 , 0.661, 0.025, + 0.177, 0.578, 0.945, 0.211, 0.153, 0.279, 0.35 , 0.396) +r_lillieTest = [0.15096827429598147, 0.02225473302348436] +print kstest_normal(xx2), np.array(kstest_normal(xx2)) - r_lillieTest +print kstest_normal(xx2, 'table') +''' diff --git a/statsmodels/stats/anova.py b/statsmodels/stats/anova.py new file mode 100644 index 0000000..73f4c10 --- /dev/null +++ b/statsmodels/stats/anova.py @@ -0,0 +1,669 @@ +import numpy as np +from scipy import stats +import pandas as pd +from pandas import DataFrame, Index +import patsy + +from statsmodels.regression.linear_model import OLS +from statsmodels.compat.python import lrange +from statsmodels.formula.formulatools import (_remove_intercept_patsy, + _has_intercept, _intercept_idx) +from statsmodels.iolib import summary2 + +def _get_covariance(model, robust): + if robust is None: + return model.cov_params() + elif robust == "hc0": + se = model.HC0_se + return model.cov_HC0 + elif robust == "hc1": + se = model.HC1_se + return model.cov_HC1 + elif robust == "hc2": + se = model.HC2_se + return model.cov_HC2 + elif robust == "hc3": + se = model.HC3_se + return model.cov_HC3 + else: # pragma: no cover + raise ValueError("robust options %s not understood" % robust) + +#NOTE: these need to take into account weights ! + +def anova_single(model, **kwargs): + """ + Anova table for one fitted linear model. + + Parameters + ---------- + model : fitted linear model results instance + A fitted linear model + typ : int or str {1,2,3} or {"I","II","III"} + Type of sum of squares to use. + + **kwargs** + + scale : float + Estimate of variance, If None, will be estimated from the largest + model. Default is None. + test : str {"F", "Chisq", "Cp"} or None + Test statistics to provide. Default is "F". + + Notes + ----- + Use of this function is discouraged. Use anova_lm instead. + """ + test = kwargs.get("test", "F") + scale = kwargs.get("scale", None) + typ = kwargs.get("typ", 1) + robust = kwargs.get("robust", None) + if robust: + robust = robust.lower() + + endog = model.model.endog + exog = model.model.exog + nobs = exog.shape[0] + + response_name = model.model.endog_names + design_info = model.model.data.design_info + exog_names = model.model.exog_names + # +1 for resids + n_rows = (len(design_info.terms) - _has_intercept(design_info) + 1) + + pr_test = "PR(>%s)" % test + names = ['df', 'sum_sq', 'mean_sq', test, pr_test] + + table = DataFrame(np.zeros((n_rows, 5)), columns=names) + + if typ in [1, "I"]: + return anova1_lm_single(model, endog, exog, nobs, design_info, table, + n_rows, test, pr_test, robust) + elif typ in [2, "II"]: + return anova2_lm_single(model, design_info, n_rows, test, pr_test, + robust) + elif typ in [3, "III"]: + return anova3_lm_single(model, design_info, n_rows, test, pr_test, + robust) + elif typ in [4, "IV"]: + raise NotImplementedError("Type IV not yet implemented") + else: # pragma: no cover + raise ValueError("Type %s not understood" % str(typ)) + + +def anova1_lm_single(model, endog, exog, nobs, design_info, table, n_rows, test, + pr_test, robust): + """ + Anova table for one fitted linear model. + + Parameters + ---------- + model : fitted linear model results instance + A fitted linear model + + **kwargs** + + scale : float + Estimate of variance, If None, will be estimated from the largest + model. Default is None. + test : str {"F", "Chisq", "Cp"} or None + Test statistics to provide. Default is "F". + + Notes + ----- + Use of this function is discouraged. Use anova_lm instead. + """ + #maybe we should rethink using pinv > qr in OLS/linear models? + effects = getattr(model, 'effects', None) + if effects is None: + q,r = np.linalg.qr(exog) + effects = np.dot(q.T, endog) + + arr = np.zeros((len(design_info.terms), len(design_info.column_names))) + slices = [design_info.slice(name) for name in design_info.term_names] + for i,slice_ in enumerate(slices): + arr[i, slice_] = 1 + + sum_sq = np.dot(arr, effects**2) + #NOTE: assumes intercept is first column + idx = _intercept_idx(design_info) + sum_sq = sum_sq[~idx] + term_names = np.array(design_info.term_names) # want boolean indexing + term_names = term_names[~idx] + + index = term_names.tolist() + table.index = Index(index + ['Residual']) + table.loc[index, ['df', 'sum_sq']] = np.c_[arr[~idx].sum(1), sum_sq] + # fill in residual + table.loc['Residual', ['sum_sq','df']] = model.ssr, model.df_resid + if test == 'F': + table[test] = ((table['sum_sq'] / table['df']) / + (model.ssr / model.df_resid)) + table[pr_test] = stats.f.sf(table["F"], table["df"], + model.df_resid) + table.loc['Residual', [test, pr_test]] = np.nan, np.nan + table['mean_sq'] = table['sum_sq'] / table['df'] + return table + +#NOTE: the below is not agnostic about formula... +def anova2_lm_single(model, design_info, n_rows, test, pr_test, robust): + """ + Anova type II table for one fitted linear model. + + Parameters + ---------- + model : fitted linear model results instance + A fitted linear model + + **kwargs** + + scale : float + Estimate of variance, If None, will be estimated from the largest + model. Default is None. + test : str {"F", "Chisq", "Cp"} or None + Test statistics to provide. Default is "F". + + Notes + ----- + Use of this function is discouraged. Use anova_lm instead. + + Type II + Sum of Squares compares marginal contribution of terms. Thus, it is + not particularly useful for models with significant interaction terms. + """ + terms_info = design_info.terms[:] # copy + terms_info = _remove_intercept_patsy(terms_info) + + names = ['sum_sq', 'df', test, pr_test] + + table = DataFrame(np.zeros((n_rows, 4)), columns = names) + cov = _get_covariance(model, None) + robust_cov = _get_covariance(model, robust) + col_order = [] + index = [] + for i, term in enumerate(terms_info): + # grab all varaibles except interaction effects that contain term + # need two hypotheses matrices L1 is most restrictive, ie., term==0 + # L2 is everything except term==0 + cols = design_info.slice(term) + L1 = lrange(cols.start, cols.stop) + L2 = [] + term_set = set(term.factors) + for t in terms_info: # for the term you have + other_set = set(t.factors) + if term_set.issubset(other_set) and not term_set == other_set: + col = design_info.slice(t) + # on a higher order term containing current `term` + L1.extend(lrange(col.start, col.stop)) + L2.extend(lrange(col.start, col.stop)) + + L1 = np.eye(model.model.exog.shape[1])[L1] + L2 = np.eye(model.model.exog.shape[1])[L2] + + if L2.size: + LVL = np.dot(np.dot(L1,robust_cov),L2.T) + from scipy import linalg + orth_compl,_ = linalg.qr(LVL) + r = L1.shape[0] - L2.shape[0] + # L1|2 + # use the non-unique orthogonal completion since L12 is rank r + L12 = np.dot(orth_compl[:,-r:].T, L1) + else: + L12 = L1 + r = L1.shape[0] + #from IPython.core.debugger import Pdb; Pdb().set_trace() + if test == 'F': + f = model.f_test(L12, cov_p=robust_cov) + table.loc[table.index[i], test] = test_value = f.fvalue + table.loc[table.index[i], pr_test] = f.pvalue + + # need to back out SSR from f_test + table.loc[table.index[i], 'df'] = r + col_order.append(cols.start) + index.append(term.name()) + + table.index = Index(index + ['Residual']) + table = table.iloc[np.argsort(col_order + [model.model.exog.shape[1]+1])] + # back out sum of squares from f_test + ssr = table[test] * table['df'] * model.ssr/model.df_resid + table['sum_sq'] = ssr + # fill in residual + table.loc['Residual', ['sum_sq','df', test, pr_test]] = (model.ssr, + model.df_resid, + np.nan, np.nan) + + return table + +def anova3_lm_single(model, design_info, n_rows, test, pr_test, robust): + n_rows += _has_intercept(design_info) + terms_info = design_info.terms + + names = ['sum_sq', 'df', test, pr_test] + + table = DataFrame(np.zeros((n_rows, 4)), columns = names) + cov = _get_covariance(model, robust) + col_order = [] + index = [] + for i, term in enumerate(terms_info): + # grab term, hypothesis is that term == 0 + cols = design_info.slice(term) + L1 = np.eye(model.model.exog.shape[1])[cols] + L12 = L1 + r = L1.shape[0] + + if test == 'F': + f = model.f_test(L12, cov_p=cov) + table.loc[table.index[i], test] = test_value = f.fvalue + table.loc[table.index[i], pr_test] = f.pvalue + + # need to back out SSR from f_test + table.loc[table.index[i], 'df'] = r + #col_order.append(cols.start) + index.append(term.name()) + + table.index = Index(index + ['Residual']) + #NOTE: Don't need to sort because terms are an ordered dict now + #table = table.iloc[np.argsort(col_order + [model.model.exog.shape[1]+1])] + # back out sum of squares from f_test + ssr = table[test] * table['df'] * model.ssr/model.df_resid + table['sum_sq'] = ssr + # fill in residual + table.loc['Residual', ['sum_sq','df', test, pr_test]] = (model.ssr, + model.df_resid, + np.nan, np.nan) + return table + +def anova_lm(*args, **kwargs): + """ + Anova table for one or more fitted linear models. + + Parameters + ---------- + args : fitted linear model results instance + One or more fitted linear models + scale : float + Estimate of variance, If None, will be estimated from the largest + model. Default is None. + test : str {"F", "Chisq", "Cp"} or None + Test statistics to provide. Default is "F". + typ : str or int {"I","II","III"} or {1,2,3} + The type of Anova test to perform. See notes. + robust : {None, "hc0", "hc1", "hc2", "hc3"} + Use heteroscedasticity-corrected coefficient covariance matrix. + If robust covariance is desired, it is recommended to use `hc3`. + + Returns + ------- + anova : DataFrame + When args is a single model, return is DataFrame with columns: + + sum_sq : float64 + Sum of squares for model terms. + df : float64 + Degrees of freedom for model terms. + F : float64 + F statistic value for significance of adding model terms. + PR(>F) : float64 + P-value for significance of adding model terms. + + When args is multiple models, return is DataFrame with columns: + + df_resid : float64 + Degrees of freedom of residuals in models. + ssr : float64 + Sum of squares of residuals in models. + df_diff : float64 + Degrees of freedom difference from previous model in args + ss_dff : float64 + Difference in ssr from previous model in args + F : float64 + F statistic comparing to previous model in args + PR(>F): float64 + P-value for significance comparing to previous model in args + + Notes + ----- + Model statistics are given in the order of args. Models must have been fit + using the formula api. + + See Also + -------- + model_results.compare_f_test, model_results.compare_lm_test + + Examples + -------- + >>> import statsmodels.api as sm + >>> from statsmodels.formula.api import ols + >>> moore = sm.datasets.get_rdataset("Moore", "carData", cache=True) # load + >>> data = moore.data + >>> data = data.rename(columns={"partner.status" : + ... "partner_status"}) # make name pythonic + >>> moore_lm = ols('conformity ~ C(fcategory, Sum)*C(partner_status, Sum)', + ... data=data).fit() + >>> table = sm.stats.anova_lm(moore_lm, typ=2) # Type 2 Anova DataFrame + >>> print(table) + """ + typ = kwargs.get('typ', 1) + + ### Farm Out Single model Anova Type I, II, III, and IV ### + + if len(args) == 1: + model = args[0] + return anova_single(model, **kwargs) + + if typ not in [1, "I"]: + raise ValueError("Multiple models only supported for type I. " + "Got type %s" % str(typ)) + + test = kwargs.get("test", "F") + scale = kwargs.get("scale", None) + n_models = len(args) + pr_test = "Pr(>%s)" % test + names = ['df_resid', 'ssr', 'df_diff', 'ss_diff', test, pr_test] + table = DataFrame(np.zeros((n_models, 6)), columns=names) + + if not scale: # assume biggest model is last + scale = args[-1].scale + + table["ssr"] = [mdl.ssr for mdl in args] + table["df_resid"] = [mdl.df_resid for mdl in args] + table.loc[table.index[1:], "df_diff"] = -np.diff(table["df_resid"].values) + table["ss_diff"] = -table["ssr"].diff() + if test == "F": + table["F"] = table["ss_diff"] / table["df_diff"] / scale + table[pr_test] = stats.f.sf(table["F"], table["df_diff"], + table["df_resid"]) + # for earlier scipy - stats.f.sf(np.nan, 10, 2) -> 0 not nan + table[pr_test][table['F'].isnull()] = np.nan + + return table + + +def _not_slice(slices, slices_to_exclude, n): + ind = np.array([True]*n) + for term in slices_to_exclude: + s = slices[term] + ind[s] = False + return ind + + +def _ssr_reduced_model(y, x, term_slices, params, keys): + """ + Residual sum of squares of OLS model excluding factors in `keys` + Assumes x matrix is orthogonal + + Parameters + ---------- + y : array_like + dependent variable + x : array_like + independent variables + term_slices : a dict of slices + term_slices[key] is a boolean array specifies the parameters + associated with the factor `key` + params : ndarray + OLS solution of y = x * params + keys : keys for term_slices + factors to be excluded + + Returns + ------- + rss : float + residual sum of squares + df : int + degrees of freedom + + """ + ind = _not_slice(term_slices, keys, x.shape[1]) + params1 = params[ind] + ssr = np.subtract(y, x[:, ind].dot(params1)) + ssr = ssr.T.dot(ssr) + df_resid = len(y) - len(params1) + return ssr, df_resid + + +class AnovaRM(object): + """ + Repeated measures Anova using least squares regression + + The full model regression residual sum of squares is + used to compare with the reduced model for calculating the + within-subject effect sum of squares [1]. + + Currently, only fully balanced within-subject designs are supported. + Calculation of between-subject effects and corrections for violation of + sphericity are not yet implemented. + + Parameters + ---------- + data : DataFrame + depvar : string + The dependent variable in `data` + subject : string + Specify the subject id + within : a list of string(s) + The within-subject factors + between : a list of string(s) + The between-subject factors, this is not yet implemented + aggregate_func : None, 'mean', or function + If the data set contains more than a single observation per subject + and cell of the specified model, this function will be used to + aggregate the data before running the Anova. `None` (the default) will + not perform any aggregation; 'mean' is s shortcut to `numpy.mean`. + An exception will be raised if aggregation is required, but no + aggregation function was specified. + + Returns + ------- + results: AnovaResults instance + + Raises + ------ + ValueError + If the data need to be aggregated, but `aggregate_func` was not + specified. + + Notes + ----- + This implementation currently only supports fully balanced designs. If the + data contain more than one observation per subject and cell of the design, + these observations need to be aggregated into a single observation + before the Anova is calculated, either manually or by passing an aggregation + function via the `aggregate_func` keyword argument. + Note that if the input data set was not balanced before performing the + aggregation, the implied heteroscedasticity of the data is ignored. + + References + ---------- + .. [*] Rutherford, Andrew. Anova and ANCOVA: a GLM approach. John Wiley & Sons, 2011. + + """ + + def __init__(self, data, depvar, subject, within=None, between=None, + aggregate_func=None): + self.data = data + self.depvar = depvar + self.within = within + if 'C' in within: + raise ValueError("Factor name cannot be 'C'! This is in conflict " + "with patsy's contrast function name.") + self.between = between + if between is not None: + raise NotImplementedError('Between subject effect not ' + 'yet supported!') + self.subject = subject + + if aggregate_func == 'mean': + self.aggregate_func = np.mean + else: + self.aggregate_func = aggregate_func + + if not data.equals(data.drop_duplicates(subset=[subject] + within)): + if self.aggregate_func is not None: + self._aggregate() + else: + msg = ('The data set contains more than one observation per ' + 'subject and cell. Either aggregate the data manually, ' + 'or pass the `aggregate_func` parameter.') + raise ValueError(msg) + + self._check_data_balanced() + + def _aggregate(self): + self.data = (self.data + .groupby([self.subject] + self.within, + as_index=False)[self.depvar] + .agg(self.aggregate_func)) + + def _check_data_balanced(self): + """raise if data is not balanced + + This raises a ValueError if the data is not balanced, and + returns None if it is balance + + Return might change + + """ + factor_levels = 1 + for wi in self.within: + factor_levels *= len(self.data[wi].unique()) + + cell_count = {} + for index in range(self.data.shape[0]): + key = [] + for col in self.within: + key.append(self.data[col].iloc[index]) + key = tuple(key) + if key in cell_count: + cell_count[key] = cell_count[key] + 1 + else: + cell_count[key] = 1 + error_message = "Data is unbalanced." + if len(cell_count) != factor_levels: + raise ValueError(error_message) + count = cell_count[key] + for key in cell_count: + if count != cell_count[key]: + raise ValueError(error_message) + if self.data.shape[0] > count * factor_levels: + raise ValueError('There are more than 1 element in a cell! Missing' + ' factors?') + + def fit(self): + """estimate the model and compute the Anova table + + Returns + ------- + AnovaResults instance + + """ + y = self.data[self.depvar].values + + # Construct OLS endog and exog from string using patsy + within = ['C(%s, Sum)' % i for i in self.within] + subject = 'C(%s, Sum)' % self.subject + factors = within + [subject] + x = patsy.dmatrix('*'.join(factors), data=self.data) + term_slices = x.design_info.term_name_slices + for key in term_slices: + ind = np.array([False]*x.shape[1]) + ind[term_slices[key]] = True + term_slices[key] = np.array(ind) + term_exclude = [':'.join(factors)] + ind = _not_slice(term_slices, term_exclude, x.shape[1]) + x = x[:, ind] + + # Fit OLS + model = OLS(y, x) + results = model.fit() + if model.rank < x.shape[1]: + raise ValueError('Independent variables are collinear.') + for i in term_exclude: + term_slices.pop(i) + for key in term_slices: + term_slices[key] = term_slices[key][ind] + params = results.params + df_resid = results.df_resid + ssr = results.ssr + + columns = ['F Value', 'Num DF', 'Den DF', 'Pr > F'] + anova_table = pd.DataFrame(np.zeros((0, 4)), columns=columns) + + for key in term_slices: + if self.subject not in key and key != 'Intercept': + # Independen variables are orthogonal + ssr1, df_resid1 = _ssr_reduced_model( + y, x, term_slices, params, [key]) + df1 = df_resid1 - df_resid + msm = (ssr1 - ssr) / df1 + if (key == ':'.join(factors[:-1]) or + (key + ':' + subject not in term_slices)): + mse = ssr / df_resid + df2 = df_resid + else: + ssr1, df_resid1 = _ssr_reduced_model( + y, x, term_slices, params, + [key + ':' + subject]) + df2 = df_resid1 - df_resid + mse = (ssr1 - ssr) / df2 + F = msm / mse + p = stats.f.sf(F, df1, df2) + term = key.replace('C(', '').replace(', Sum)', '') + anova_table.loc[term, 'F Value'] = F + anova_table.loc[term, 'Num DF'] = df1 + anova_table.loc[term, 'Den DF'] = df2 + anova_table.loc[term, 'Pr > F'] = p + + return AnovaResults(anova_table) + + +class AnovaResults(object): + """ + Anova results class + + Attributes + ---------- + anova_table : DataFrame + """ + def __init__(self, anova_table): + self.anova_table = anova_table + + def __str__(self): + return self.summary().__str__() + + def summary(self): + """create summary results + + Returns + ------- + summary : summary2.Summary instance + + """ + summ = summary2.Summary() + summ.add_title('Anova') + summ.add_df(self.anova_table) + + return summ + + +if __name__ == "__main__": + import pandas + from statsmodels.formula.api import ols + # in R + #library(car) + #write.csv(Moore, "moore.csv", row.names=FALSE) + moore = pandas.read_csv('moore.csv', skiprows=1, + names=['partner_status','conformity', + 'fcategory','fscore']) + moore_lm = ols('conformity ~ C(fcategory, Sum)*C(partner_status, Sum)', + data=moore).fit() + + mooreB = ols('conformity ~ C(partner_status, Sum)', data=moore).fit() + + # for each term you just want to test vs the model without its + # higher-order terms + + # using Monette-Fox slides and Marden class notes for linear algebra / + # orthogonal complement + # https://netfiles.uiuc.edu/jimarden/www/Classes/STAT324/ + + table = anova_lm(moore_lm, typ=2) diff --git a/statsmodels/stats/api.py b/statsmodels/stats/api.py new file mode 100644 index 0000000..6f33d24 --- /dev/null +++ b/statsmodels/stats/api.py @@ -0,0 +1,67 @@ +# pylint: disable=W0611 +# flake8: noqa +from . import diagnostic +from .diagnostic import ( + acorr_ljungbox, acorr_breusch_godfrey, + CompareCox, compare_cox, CompareJ, compare_j, + HetGoldfeldQuandt, het_goldfeldquandt, + het_breuschpagan, het_white, het_arch, + linear_harvey_collier, linear_rainbow, linear_lm, + breaks_cusumolsresid, breaks_hansen, recursive_olsresiduals, + unitroot_adf, + normal_ad, lilliefors +) + +from ._knockoff import RegressionFDR +from . import multicomp +from .multitest import (multipletests, fdrcorrection, fdrcorrection_twostage, + local_fdr, NullDistribution) +from .multicomp import tukeyhsd +from . import gof +from .gof import (powerdiscrepancy, gof_chisquare_discrete, + chisquare_effectsize) +from . import stattools +from .stattools import durbin_watson, omni_normtest, jarque_bera + +from . import sandwich_covariance +from .sandwich_covariance import ( + cov_cluster, cov_cluster_2groups, cov_nw_panel, + cov_hac, cov_white_simple, + cov_hc0, cov_hc1, cov_hc2, cov_hc3, + se_cov +) + +from .weightstats import (DescrStatsW, CompareMeans, ttest_ind, ttost_ind, + ttost_paired, ztest, ztost, zconfint) + +from .proportion import ( + binom_test_reject_interval, binom_test, + binom_tost, binom_tost_reject_interval, + power_binom_tost, power_ztost_prop, + proportion_confint, proportion_effectsize, + proportions_chisquare, proportions_chisquare_allpairs, + proportions_chisquare_pairscontrol, proportions_ztest, + proportions_ztost, multinomial_proportions_confint) + +from .power import (TTestPower, TTestIndPower, GofChisquarePower, + NormalIndPower, FTestAnovaPower, FTestPower, + tt_solve_power, tt_ind_solve_power, zt_ind_solve_power) + +from .descriptivestats import Describe + +from .anova import anova_lm + +from . import moment_helpers +from .correlation_tools import ( + corr_clipped, corr_nearest, + corr_nearest_factor, corr_thresholded, cov_nearest, + cov_nearest_factor_homog, FactoredPSDMatrix) + +from statsmodels.sandbox.stats.runs import Runs, runstest_1samp, runstest_2samp + +from statsmodels.stats.contingency_tables import (mcnemar, cochrans_q, + SquareTable, + Table2x2, + Table, + StratifiedTable) +from .mediation import Mediation diff --git a/statsmodels/stats/base.py b/statsmodels/stats/base.py new file mode 100644 index 0000000..841cebb --- /dev/null +++ b/statsmodels/stats/base.py @@ -0,0 +1,99 @@ +# -*- coding: utf-8 -*- +"""Base classes for statistical test results + +Created on Mon Apr 22 14:03:21 2013 + +Author: Josef Perktold +""" +from statsmodels.compat.python import lzip, zip +import numpy as np + + +class AllPairsResults(object): + '''Results class for pairwise comparisons, based on p-values + + Parameters + ---------- + pvals_raw : array_like, 1-D + p-values from a pairwise comparison test + all_pairs : list of tuples + list of indices, one pair for each comparison + multitest_method : string + method that is used by default for p-value correction. This is used + as default by the methods like if the multiple-testing method is not + specified as argument. + levels : None or list of strings + optional names of the levels or groups + n_levels : None or int + If None, then the number of levels or groups is inferred from the + other arguments. It can be explicitly specified, if the inferred + number is incorrect. + + Notes + ----- + This class can also be used for other pairwise comparisons, for example + comparing several treatments to a control (as in Dunnet's test). + + ''' + + def __init__(self, pvals_raw, all_pairs, multitest_method='hs', + levels=None, n_levels=None): + self.pvals_raw = pvals_raw + self.all_pairs = all_pairs + if n_levels is None: + # for all_pairs nobs*(nobs-1)/2 + self.n_levels = np.max(all_pairs) + 1 + else: + self.n_levels = n_levels + + self.multitest_method = multitest_method + self.levels = levels + if levels is None: + self.all_pairs_names = ['%r' % (pairs,) for pairs in all_pairs] + else: + self.all_pairs_names = ['%s-%s' % (levels[pairs[0]], + levels[pairs[1]]) + for pairs in all_pairs] + + def pval_corrected(self, method=None): + '''p-values corrected for multiple testing problem + + This uses the default p-value correction of the instance stored in + ``self.multitest_method`` if method is None. + + ''' + import statsmodels.stats.multitest as smt + if method is None: + method = self.multitest_method + # TODO: breaks with method=None + return smt.multipletests(self.pvals_raw, method=method)[1] + + def __str__(self): + return self.summary() + + def pval_table(self): + '''create a (n_levels, n_levels) array with corrected p_values + + this needs to improve, similar to R pairwise output + ''' + k = self.n_levels + pvals_mat = np.zeros((k, k)) + # if we don't assume we have all pairs + pvals_mat[lzip(*self.all_pairs)] = self.pval_corrected() + return pvals_mat + + def summary(self): + '''returns text summarizing the results + + uses the default pvalue correction of the instance stored in + ``self.multitest_method`` + ''' + import statsmodels.stats.multitest as smt + maxlevel = max((len(ss) for ss in self.all_pairs_names)) + + text = ('Corrected p-values using %s p-value correction\n\n' + % smt.multitest_methods_names[self.multitest_method]) + text += 'Pairs' + (' ' * (maxlevel - 5 + 1)) + 'p-values\n' + text += '\n'.join(('%s %6.4g' % (pairs, pv) for (pairs, pv) in + zip(self.all_pairs_names, self.pval_corrected()))) + return text diff --git a/statsmodels/stats/contingency_tables.py b/statsmodels/stats/contingency_tables.py new file mode 100644 index 0000000..9438c51 --- /dev/null +++ b/statsmodels/stats/contingency_tables.py @@ -0,0 +1,1419 @@ +""" +Methods for analyzing two-way contingency tables (i.e. frequency +tables for observations that are cross-classified with respect to two +categorical variables). + +The main classes are: + + * Table : implements methods that can be applied to any two-way + contingency table. + + * SquareTable : implements methods that can be applied to a square + two-way contingency table. + + * Table2x2 : implements methods that can be applied to a 2x2 + contingency table. + + * StratifiedTable : implements methods that can be applied to a + collection of 2x2 contingency tables. + +Also contains functions for conducting McNemar's test and Cochran's q +test. + +Note that the inference procedures may depend on how the data were +sampled. In general the observed units are independent and +identically distributed. +""" + +from __future__ import division +from statsmodels.tools.decorators import cache_readonly +import numpy as np +from scipy import stats +import pandas as pd +import warnings +from statsmodels import iolib +from statsmodels.tools import sm_exceptions + + +def _make_df_square(table): + """ + Reindex a pandas DataFrame so that it becomes square, meaning that + the row and column indices contain the same values, in the same + order. The row and column index are extended to achieve this. + """ + + if not isinstance(table, pd.DataFrame): + return table + + # If the table is not square, make it square + if not table.index.equals(table.columns): + ix = list(set(table.index) | set(table.columns)) + ix.sort() + table = table.reindex(index=ix, columns=ix, fill_value=0) + + # Ensures that the rows and columns are in the same order. + table = table.reindex(table.columns) + + return table + + +class _Bunch(object): + + def __repr__(self): + return "" + + def __str__(self): + ky = [k for k, _ in self.__dict__.items()] + ky.sort() + m = max([len(k) for k in ky]) + tab = [] + f = "{:" + str(m) + "} {}" + for k in ky: + tab.append(f.format(k, self.__dict__[k])) + return "\n".join(tab) + + +class Table(object): + """ + A two-way contingency table. + + Parameters + ---------- + table : array-like + A contingency table. + shift_zeros : boolean + If True and any cell count is zero, add 0.5 to all values + in the table. + + Attributes + ---------- + table_orig : array-like + The original table is cached as `table_orig`. + + See Also + -------- + statsmodels.graphics.mosaicplot.mosaic + scipy.stats.chi2_contingency + + Notes + ----- + The inference procedures used here are all based on a sampling + model in which the units are independent and identically + distributed, with each unit being classified with respect to two + categorical variables. + + References + ---------- + Definitions of residuals: + https://onlinecourses.science.psu.edu/stat504/node/86 + """ + + def __init__(self, table, shift_zeros=True): + + self.table_orig = table + self.table = np.asarray(table, dtype=np.float64) + + if shift_zeros and (self.table.min() == 0): + self.table[self.table == 0] = 0.5 + + def __str__(self): + s = ("A %dx%d contingency table with counts:\n" % + tuple(self.table.shape)) + s += np.array_str(self.table) + return s + + @classmethod + def from_data(cls, data, shift_zeros=True): + """ + Construct a Table object from data. + + Parameters + ---------- + data : array-like + The raw data, from which a contingency table is constructed + using the first two columns. + shift_zeros : boolean + If True and any cell count is zero, add 0.5 to all values + in the table. + + Returns + ------- + A Table instance. + """ + + if isinstance(data, pd.DataFrame): + table = pd.crosstab(data.iloc[:, 0], data.iloc[:, 1]) + else: + table = pd.crosstab(data[:, 0], data[:, 1]) + + return cls(table, shift_zeros) + + def test_nominal_association(self): + """ + Assess independence for nominal factors. + + Assessment of independence between rows and columns using + chi^2 testing. The rows and columns are treated as nominal + (unordered) categorical variables. + + Returns + ------- + A bunch containing the following attributes: + + statistic : float + The chi^2 test statistic. + df : integer + The degrees of freedom of the reference distribution + pvalue : float + The p-value for the test. + """ + + statistic = np.asarray(self.chi2_contribs).sum() + df = np.prod(np.asarray(self.table.shape) - 1) + pvalue = 1 - stats.chi2.cdf(statistic, df) + b = _Bunch() + b.statistic = statistic + b.df = df + b.pvalue = pvalue + return b + + def test_ordinal_association(self, row_scores=None, col_scores=None): + """ + Assess independence between two ordinal variables. + + This is the 'linear by linear' association test, which uses + weights or scores to target the test to have more power + against ordered alternatives. + + Parameters + ---------- + row_scores : array-like + An array of numeric row scores + col_scores : array-like + An array of numeric column scores + + Returns + ------- + A bunch with the following attributes: + + statistic : float + The test statistic. + null_mean : float + The expected value of the test statistic under the null + hypothesis. + null_sd : float + The standard deviation of the test statistic under the + null hypothesis. + zscore : float + The Z-score for the test statistic. + pvalue : float + The p-value for the test. + + Notes + ----- + The scores define the trend to which the test is most sensitive. + + Using the default row and column scores gives the + Cochran-Armitage trend test. + """ + + if row_scores is None: + row_scores = np.arange(self.table.shape[0]) + + if col_scores is None: + col_scores = np.arange(self.table.shape[1]) + + if len(row_scores) != self.table.shape[0]: + msg = ("The length of `row_scores` must match the first " + + "dimension of `table`.") + raise ValueError(msg) + + if len(col_scores) != self.table.shape[1]: + msg = ("The length of `col_scores` must match the second " + + "dimension of `table`.") + raise ValueError(msg) + + # The test statistic + statistic = np.dot(row_scores, np.dot(self.table, col_scores)) + + # Some needed quantities + n_obs = self.table.sum() + rtot = self.table.sum(1) + um = np.dot(row_scores, rtot) + u2m = np.dot(row_scores**2, rtot) + ctot = self.table.sum(0) + vn = np.dot(col_scores, ctot) + v2n = np.dot(col_scores**2, ctot) + + # The null mean and variance of the test statistic + e_stat = um * vn / n_obs + v_stat = (u2m - um**2 / n_obs) * (v2n - vn**2 / n_obs) / (n_obs - 1) + sd_stat = np.sqrt(v_stat) + + zscore = (statistic - e_stat) / sd_stat + pvalue = 2 * stats.norm.cdf(-np.abs(zscore)) + + b = _Bunch() + b.statistic = statistic + b.null_mean = e_stat + b.null_sd = sd_stat + b.zscore = zscore + b.pvalue = pvalue + return b + + @cache_readonly + def marginal_probabilities(self): + """ + Estimate marginal probability distributions for the rows and columns. + + Returns + ------- + row : ndarray + Marginal row probabilities + col : ndarray + Marginal column probabilities + """ + + n = self.table.sum() + row = self.table.sum(1) / n + col = self.table.sum(0) / n + + if isinstance(self.table_orig, pd.DataFrame): + row = pd.Series(row, self.table_orig.index) + col = pd.Series(col, self.table_orig.columns) + + return row, col + + @cache_readonly + def independence_probabilities(self): + """ + Returns fitted joint probabilities under independence. + + The returned table is outer(row, column), where row and + column are the estimated marginal distributions + of the rows and columns. + """ + + row, col = self.marginal_probabilities + itab = np.outer(row, col) + + if isinstance(self.table_orig, pd.DataFrame): + itab = pd.DataFrame(itab, self.table_orig.index, + self.table_orig.columns) + + return itab + + @cache_readonly + def fittedvalues(self): + """ + Returns fitted cell counts under independence. + + The returned cell counts are estimates under a model + where the rows and columns of the table are independent. + """ + + probs = self.independence_probabilities + fit = self.table.sum() * probs + return fit + + @cache_readonly + def resid_pearson(self): + """ + Returns Pearson residuals. + + The Pearson residuals are calculated under a model where + the rows and columns of the table are independent. + """ + + fit = self.fittedvalues + resids = (self.table - fit) / np.sqrt(fit) + return resids + + @cache_readonly + def standardized_resids(self): + """ + Returns standardized residuals under independence. + """ + + row, col = self.marginal_probabilities + sresids = self.resid_pearson / np.sqrt(np.outer(1 - row, 1 - col)) + return sresids + + @cache_readonly + def chi2_contribs(self): + """ + Returns the contributions to the chi^2 statistic for independence. + + The returned table contains the contribution of each cell to the chi^2 + test statistic for the null hypothesis that the rows and columns + are independent. + """ + + return self.resid_pearson**2 + + @cache_readonly + def local_log_oddsratios(self): + """ + Returns local log odds ratios. + + The local log odds ratios are the log odds ratios + calculated for contiguous 2x2 sub-tables. + """ + + ta = self.table.copy() + a = ta[0:-1, 0:-1] + b = ta[0:-1, 1:] + c = ta[1:, 0:-1] + d = ta[1:, 1:] + tab = np.log(a) + np.log(d) - np.log(b) - np.log(c) + rslt = np.empty(self.table.shape, np.float64) + rslt *= np.nan + rslt[0:-1, 0:-1] = tab + + if isinstance(self.table_orig, pd.DataFrame): + rslt = pd.DataFrame(rslt, index=self.table_orig.index, + columns=self.table_orig.columns) + + return rslt + + @cache_readonly + def local_oddsratios(self): + """ + Returns local odds ratios. + + See documentation for local_log_oddsratios. + """ + + return np.exp(self.local_log_oddsratios) + + @cache_readonly + def cumulative_log_oddsratios(self): + """ + Returns cumulative log odds ratios. + + The cumulative log odds ratios for a contingency table + with ordered rows and columns are calculated by collapsing + all cells to the left/right and above/below a given point, + to obtain a 2x2 table from which a log odds ratio can be + calculated. + """ + + ta = self.table.cumsum(0).cumsum(1) + + a = ta[0:-1, 0:-1] + b = ta[0:-1, -1:] - a + c = ta[-1:, 0:-1] - a + d = ta[-1, -1] - (a + b + c) + + tab = np.log(a) + np.log(d) - np.log(b) - np.log(c) + rslt = np.empty(self.table.shape, np.float64) + rslt *= np.nan + rslt[0:-1, 0:-1] = tab + + if isinstance(self.table_orig, pd.DataFrame): + rslt = pd.DataFrame(rslt, index=self.table_orig.index, + columns=self.table_orig.columns) + + return rslt + + @cache_readonly + def cumulative_oddsratios(self): + """ + Returns the cumulative odds ratios for a contingency table. + + See documentation for cumulative_log_oddsratio. + """ + + return np.exp(self.cumulative_log_oddsratios) + + +class SquareTable(Table): + """ + Methods for analyzing a square contingency table. + + Parameters + ---------- + table : array-like + A square contingency table, or DataFrame that is converted + to a square form. + shift_zeros : boolean + If True and any cell count is zero, add 0.5 to all values + in the table. + + These methods should only be used when the rows and columns of the + table have the same categories. If `table` is provided as a + Pandas DataFrame, the row and column indices will be extended to + create a square table, inserting zeros where a row or column is + missing. Otherwise the table should be provided in a square form, + with the (implicit) row and column categories appearing in the + same order. + """ + + def __init__(self, table, shift_zeros=True): + table = _make_df_square(table) # Non-pandas passes through + k1, k2 = table.shape + if k1 != k2: + raise ValueError('table must be square') + + super(SquareTable, self).__init__(table, shift_zeros) + + def symmetry(self, method="bowker"): + """ + Test for symmetry of a joint distribution. + + This procedure tests the null hypothesis that the joint + distribution is symmetric around the main diagonal, that is + + .. math:: + + p_{i, j} = p_{j, i} for all i, j + + Returns + ------- + A bunch with attributes: + + statistic : float + chisquare test statistic + p-value : float + p-value of the test statistic based on chisquare distribution + df : int + degrees of freedom of the chisquare distribution + + Notes + ----- + The implementation is based on the SAS documentation. R includes + it in `mcnemar.test` if the table is not 2 by 2. However a more + direct generalization of the McNemar test to larger tables is + provided by the homogeneity test (TableSymmetry.homogeneity). + + The p-value is based on the chi-square distribution which requires + that the sample size is not very small to be a good approximation + of the true distribution. For 2x2 contingency tables the exact + distribution can be obtained with `mcnemar` + + See Also + -------- + mcnemar + homogeneity + """ + + if method.lower() != "bowker": + raise ValueError("method for symmetry testing must be 'bowker'") + + k = self.table.shape[0] + upp_idx = np.triu_indices(k, 1) + + tril = self.table.T[upp_idx] # lower triangle in column order + triu = self.table[upp_idx] # upper triangle in row order + + statistic = ((tril - triu)**2 / (tril + triu + 1e-20)).sum() + df = k * (k-1) / 2. + pvalue = stats.chi2.sf(statistic, df) + + b = _Bunch() + b.statistic = statistic + b.pvalue = pvalue + b.df = df + + return b + + def homogeneity(self, method="stuart_maxwell"): + """ + Compare row and column marginal distributions. + + Parameters + ---------- + method : string + Either 'stuart_maxwell' or 'bhapkar', leading to two different + estimates of the covariance matrix for the estimated + difference between the row margins and the column margins. + + Returns a bunch with attributes: + + statistic : float + The chi^2 test statistic + pvalue : float + The p-value of the test statistic + df : integer + The degrees of freedom of the reference distribution + + Notes + ----- + For a 2x2 table this is equivalent to McNemar's test. More + generally the procedure tests the null hypothesis that the + marginal distribution of the row factor is equal to the + marginal distribution of the column factor. For this to be + meaningful, the two factors must have the same sample space + (i.e. the same categories). + """ + + if self.table.shape[0] < 1: + raise ValueError('table is empty') + elif self.table.shape[0] == 1: + b = _Bunch() + b.statistic = 0 + b.pvalue = 1 + b.df = 0 + return b + + method = method.lower() + if method not in ["bhapkar", "stuart_maxwell"]: + raise ValueError("method '%s' for homogeneity not known" % method) + + n_obs = self.table.sum() + pr = self.table.astype(np.float64) / n_obs + + # Compute margins, eliminate last row/column so there is no + # degeneracy + row = pr.sum(1)[0:-1] + col = pr.sum(0)[0:-1] + pr = pr[0:-1, 0:-1] + + # The estimated difference between row and column margins. + d = col - row + + # The degrees of freedom of the chi^2 reference distribution. + df = pr.shape[0] + + if method == "bhapkar": + vmat = -(pr + pr.T) - np.outer(d, d) + dv = col + row - 2*np.diag(pr) - d**2 + np.fill_diagonal(vmat, dv) + elif method == "stuart_maxwell": + vmat = -(pr + pr.T) + dv = row + col - 2*np.diag(pr) + np.fill_diagonal(vmat, dv) + + try: + statistic = n_obs * np.dot(d, np.linalg.solve(vmat, d)) + except np.linalg.LinAlgError: + warnings.warn("Unable to invert covariance matrix", + sm_exceptions.SingularMatrixWarning) + b = _Bunch() + b.statistic = np.nan + b.pvalue = np.nan + b.df = df + return b + + pvalue = 1 - stats.chi2.cdf(statistic, df) + + b = _Bunch() + b.statistic = statistic + b.pvalue = pvalue + b.df = df + + return b + + def summary(self, alpha=0.05, float_format="%.3f"): + """ + Produce a summary of the analysis. + + Parameters + ---------- + alpha : float + `1 - alpha` is the nominal coverage probability of the interval. + float_format : string + Used to format numeric values in the table. + method : string + The method for producing the confidence interval. Currently + must be 'normal' which uses the normal approximation. + """ + + fmt = float_format + + headers = ["Statistic", "P-value", "DF"] + stubs = ["Symmetry", "Homogeneity"] + sy = self.symmetry() + hm = self.homogeneity() + data = [[fmt % sy.statistic, fmt % sy.pvalue, '%d' % sy.df], + [fmt % hm.statistic, fmt % hm.pvalue, '%d' % hm.df]] + tab = iolib.SimpleTable(data, headers, stubs, data_aligns="r", + table_dec_above='') + + return tab + + +class Table2x2(SquareTable): + """ + Analyses that can be performed on a 2x2 contingency table. + + Parameters + ---------- + table : array-like + A 2x2 contingency table + shift_zeros : boolean + If true, 0.5 is added to all cells of the table if any cell is + equal to zero. + + Notes + ----- + The inference procedures used here are all based on a sampling + model in which the units are independent and identically + distributed, with each unit being classified with respect to two + categorical variables. + + Note that for the risk ratio, the analysis is not symmetric with + respect to the rows and columns of the contingency table. The two + rows define population subgroups, column 0 is the number of + 'events', and column 1 is the number of 'non-events'. + """ + + def __init__(self, table, shift_zeros=True): + + if type(table) is list: + table = np.asarray(table) + + if (table.ndim != 2) or (table.shape[0] != 2) or (table.shape[1] != 2): + raise ValueError("Table2x2 takes a 2x2 table as input.") + + super(Table2x2, self).__init__(table, shift_zeros) + + @classmethod + def from_data(cls, data, shift_zeros=True): + """ + Construct a Table object from data. + + Parameters + ---------- + data : array-like + The raw data, the first column defines the rows and the + second column defines the columns. + shift_zeros : boolean + If True, and if there are any zeros in the contingency + table, add 0.5 to all four cells of the table. + """ + + if isinstance(data, pd.DataFrame): + table = pd.crosstab(data.iloc[:, 0], data.iloc[:, 1]) + else: + table = pd.crosstab(data[:, 0], data[:, 1]) + return cls(table, shift_zeros) + + @cache_readonly + def log_oddsratio(self): + """ + Returns the log odds ratio for a 2x2 table. + """ + + f = self.table.flatten() + return np.dot(np.log(f), np.r_[1, -1, -1, 1]) + + @cache_readonly + def oddsratio(self): + """ + Returns the odds ratio for a 2x2 table. + """ + + return (self.table[0, 0] * self.table[1, 1] / + (self.table[0, 1] * self.table[1, 0])) + + @cache_readonly + def log_oddsratio_se(self): + """ + Returns the standard error for the log odds ratio. + """ + + return np.sqrt(np.sum(1 / self.table)) + + def oddsratio_pvalue(self, null=1): + """ + P-value for a hypothesis test about the odds ratio. + + Parameters + ---------- + null : float + The null value of the odds ratio. + """ + + return self.log_oddsratio_pvalue(np.log(null)) + + def log_oddsratio_pvalue(self, null=0): + """ + P-value for a hypothesis test about the log odds ratio. + + Parameters + ---------- + null : float + The null value of the log odds ratio. + """ + + zscore = (self.log_oddsratio - null) / self.log_oddsratio_se + pvalue = 2 * stats.norm.cdf(-np.abs(zscore)) + return pvalue + + def log_oddsratio_confint(self, alpha=0.05, method="normal"): + """ + A confidence level for the log odds ratio. + + Parameters + ---------- + alpha : float + `1 - alpha` is the nominal coverage probability of the + confidence interval. + method : string + The method for producing the confidence interval. Currently + must be 'normal' which uses the normal approximation. + """ + + f = -stats.norm.ppf(alpha / 2) + lor = self.log_oddsratio + se = self.log_oddsratio_se + lcb = lor - f * se + ucb = lor + f * se + return lcb, ucb + + def oddsratio_confint(self, alpha=0.05, method="normal"): + """ + A confidence interval for the odds ratio. + + Parameters + ---------- + alpha : float + `1 - alpha` is the nominal coverage probability of the + confidence interval. + method : string + The method for producing the confidence interval. Currently + must be 'normal' which uses the normal approximation. + """ + lcb, ucb = self.log_oddsratio_confint(alpha, method=method) + return np.exp(lcb), np.exp(ucb) + + @cache_readonly + def riskratio(self): + """ + Returns the risk ratio for a 2x2 table. + + The risk ratio is calculated with respect to the rows. + """ + + p = self.table[:, 0] / self.table.sum(1) + return p[0] / p[1] + + @cache_readonly + def log_riskratio(self): + """ + Returns the log of the risk ratio. + """ + + return np.log(self.riskratio) + + @cache_readonly + def log_riskratio_se(self): + """ + Returns the standard error of the log of the risk ratio. + """ + + n = self.table.sum(1) + p = self.table[:, 0] / n + va = np.sum((1 - p) / (n*p)) + return np.sqrt(va) + + def riskratio_pvalue(self, null=1): + """ + p-value for a hypothesis test about the risk ratio. + + Parameters + ---------- + null : float + The null value of the risk ratio. + """ + + return self.log_riskratio_pvalue(np.log(null)) + + def log_riskratio_pvalue(self, null=0): + """ + p-value for a hypothesis test about the log risk ratio. + + Parameters + ---------- + null : float + The null value of the log risk ratio. + """ + + zscore = (self.log_riskratio - null) / self.log_riskratio_se + pvalue = 2 * stats.norm.cdf(-np.abs(zscore)) + return pvalue + + def log_riskratio_confint(self, alpha=0.05, method="normal"): + """ + A confidence interval for the log risk ratio. + + Parameters + ---------- + alpha : float + `1 - alpha` is the nominal coverage probability of the + confidence interval. + method : string + The method for producing the confidence interval. Currently + must be 'normal' which uses the normal approximation. + """ + f = -stats.norm.ppf(alpha / 2) + lrr = self.log_riskratio + se = self.log_riskratio_se + lcb = lrr - f * se + ucb = lrr + f * se + return lcb, ucb + + def riskratio_confint(self, alpha=0.05, method="normal"): + """ + A confidence interval for the risk ratio. + + Parameters + ---------- + alpha : float + `1 - alpha` is the nominal coverage probability of the + confidence interval. + method : string + The method for producing the confidence interval. Currently + must be 'normal' which uses the normal approximation. + """ + lcb, ucb = self.log_riskratio_confint(alpha, method=method) + return np.exp(lcb), np.exp(ucb) + + def summary(self, alpha=0.05, float_format="%.3f", method="normal"): + """ + Summarizes results for a 2x2 table analysis. + + Parameters + ---------- + alpha : float + `1 - alpha` is the nominal coverage probability of the confidence + intervals. + float_format : string + Used to format the numeric values in the table. + method : string + The method for producing the confidence interval. Currently + must be 'normal' which uses the normal approximation. + """ + + def fmt(x): + if isinstance(x, str): + return x + return float_format % x + + headers = ["Estimate", "SE", "LCB", "UCB", "p-value"] + stubs = ["Odds ratio", "Log odds ratio", "Risk ratio", + "Log risk ratio"] + + lcb1, ucb1 = self.oddsratio_confint(alpha, method) + lcb2, ucb2 = self.log_oddsratio_confint(alpha, method) + lcb3, ucb3 = self.riskratio_confint(alpha, method) + lcb4, ucb4 = self.log_riskratio_confint(alpha, method) + data = [[fmt(x) for x in [self.oddsratio, "", lcb1, ucb1, + self.oddsratio_pvalue()]], + [fmt(x) for x in [self.log_oddsratio, self.log_oddsratio_se, + lcb2, ucb2, self.oddsratio_pvalue()]], + [fmt(x) for x in [self.riskratio, "", lcb3, ucb3, + self.riskratio_pvalue()]], + [fmt(x) for x in [self.log_riskratio, self.log_riskratio_se, + lcb4, ucb4, self.riskratio_pvalue()]]] + tab = iolib.SimpleTable(data, headers, stubs, data_aligns="r", + table_dec_above='') + return tab + + +class StratifiedTable(object): + """ + Analyses for a collection of 2x2 contingency tables. + + Such a collection may arise by stratifying a single 2x2 table with + respect to another factor. This class implements the + 'Cochran-Mantel-Haenszel' and 'Breslow-Day' procedures for + analyzing collections of 2x2 contingency tables. + + Parameters + ---------- + tables : list or ndarray + Either a list containing several 2x2 contingency tables, or + a 2x2xk ndarray in which each slice along the third axis is a + 2x2 contingency table. + + Notes + ----- + This results are based on a sampling model in which the units are + independent both within and between strata. + """ + + def __init__(self, tables, shift_zeros=False): + + if isinstance(tables, np.ndarray): + sp = tables.shape + if (len(sp) != 3) or (sp[0] != 2) or (sp[1] != 2): + raise ValueError("If an ndarray, argument must be 2x2xn") + table = tables + else: + # Create a data cube + table = np.dstack(tables).astype(np.float64) + + if shift_zeros: + zx = (table == 0).sum(0).sum(0) + ix = np.flatnonzero(zx > 0) + if len(ix) > 0: + table = table.copy() + table[:, :, ix] += 0.5 + + self.table = table + + self._cache = {} + + # Quantities to precompute. Table entries are [[a, b], [c, + # d]], 'ad' is 'a * d', 'apb' is 'a + b', 'dma' is 'd - a', + # etc. + self._apb = table[0, 0, :] + table[0, 1, :] + self._apc = table[0, 0, :] + table[1, 0, :] + self._bpd = table[0, 1, :] + table[1, 1, :] + self._cpd = table[1, 0, :] + table[1, 1, :] + self._ad = table[0, 0, :] * table[1, 1, :] + self._bc = table[0, 1, :] * table[1, 0, :] + self._apd = table[0, 0, :] + table[1, 1, :] + self._dma = table[1, 1, :] - table[0, 0, :] + self._n = table.sum(0).sum(0) + + @classmethod + def from_data(cls, var1, var2, strata, data): + """ + Construct a StratifiedTable object from data. + + Parameters + ---------- + var1 : int or string + The column index or name of `data` specifying the variable + defining the rows of the contingency table. The variable + must have only two distinct values. + var2 : int or string + The column index or name of `data` specifying the variable + defining the columns of the contingency table. The variable + must have only two distinct values. + strata : int or string + The column index or name of `data` specifying the variable + defining the strata. + data : array-like + The raw data. A cross-table for analysis is constructed + from the first two columns. + + Returns + ------- + A StratifiedTable instance. + """ + + if not isinstance(data, pd.DataFrame): + data1 = pd.DataFrame(index=np.arange(data.shape[0]), + columns=[var1, var2, strata]) + data1.loc[:, var1] = data[:, var1] + data1.loc[:, var2] = data[:, var2] + data1.loc[:, strata] = data[:, strata] + else: + data1 = data[[var1, var2, strata]] + + gb = data1.groupby(strata).groups + tables = [] + for g in gb: + ii = gb[g] + tab = pd.crosstab(data1.loc[ii, var1], data1.loc[ii, var2]) + if (tab.shape != np.r_[2, 2]).any(): + msg = "Invalid table dimensions" + raise ValueError(msg) + tables.append(np.asarray(tab)) + + return cls(tables) + + def test_null_odds(self, correction=False): + """ + Test that all tables have odds ratio equal to 1. + + This is the 'Mantel-Haenszel' test. + + Parameters + ---------- + correction : boolean + If True, use the continuity correction when calculating the + test statistic. + + Returns + ------- + A bunch containing the chi^2 test statistic and p-value. + """ + + statistic = np.sum(self.table[0, 0, :] - + self._apb * self._apc / self._n) + statistic = np.abs(statistic) + if correction: + statistic -= 0.5 + statistic = statistic**2 + denom = self._apb * self._apc * self._bpd * self._cpd + denom /= (self._n**2 * (self._n - 1)) + denom = np.sum(denom) + statistic /= denom + + # df is always 1 + pvalue = 1 - stats.chi2.cdf(statistic, 1) + + b = _Bunch() + b.statistic = statistic + b.pvalue = pvalue + + return b + + @cache_readonly + def oddsratio_pooled(self): + """ + The pooled odds ratio. + + The value is an estimate of a common odds ratio across all of the + stratified tables. + """ + odds_ratio = np.sum(self._ad / self._n) / np.sum(self._bc / self._n) + return odds_ratio + + @cache_readonly + def logodds_pooled(self): + """ + Returns the logarithm of the pooled odds ratio. + + See oddsratio_pooled for more information. + """ + return np.log(self.oddsratio_pooled) + + @cache_readonly + def riskratio_pooled(self): + """ + Estimate of the pooled risk ratio. + """ + + acd = self.table[0, 0, :] * self._cpd + cab = self.table[1, 0, :] * self._apb + + rr = np.sum(acd / self._n) / np.sum(cab / self._n) + return rr + + @cache_readonly + def risk_pooled(self): + # Deprecated due to name being misleading + msg = "'risk_pooled' is deprecated, use 'riskratio_pooled' instead" + warnings.warn(msg, DeprecationWarning) + return self.riskratio_pooled + + @cache_readonly + def logodds_pooled_se(self): + """ + Estimated standard error of the pooled log odds ratio + + References + ---------- + Robins, James, Norman Breslow, and Sander Greenland. "Estimators of + the Mantel-Haenszel Variance Consistent in Both Sparse Data and + Large-Strata Limiting Models." Biometrics 42, no. 2 (1986): 311-23. + """ + + adns = np.sum(self._ad / self._n) + bcns = np.sum(self._bc / self._n) + lor_va = np.sum(self._apd * self._ad / self._n**2) / adns**2 + mid = self._apd * self._bc / self._n**2 + mid += (1 - self._apd / self._n) * self._ad / self._n + mid = np.sum(mid) + mid /= (adns * bcns) + lor_va += mid + lor_va += np.sum((1 - self._apd / self._n) * + self._bc / self._n) / bcns**2 + lor_va /= 2 + lor_se = np.sqrt(lor_va) + return lor_se + + def logodds_pooled_confint(self, alpha=0.05, method="normal"): + """ + A confidence interval for the pooled log odds ratio. + + Parameters + ---------- + alpha : float + `1 - alpha` is the nominal coverage probability of the + interval. + method : string + The method for producing the confidence interval. Currently + must be 'normal' which uses the normal approximation. + + Returns + ------- + lcb : float + The lower confidence limit. + ucb : float + The upper confidence limit. + """ + + lor = np.log(self.oddsratio_pooled) + lor_se = self.logodds_pooled_se + + f = -stats.norm.ppf(alpha / 2) + + lcb = lor - f * lor_se + ucb = lor + f * lor_se + + return lcb, ucb + + def oddsratio_pooled_confint(self, alpha=0.05, method="normal"): + """ + A confidence interval for the pooled odds ratio. + + Parameters + ---------- + alpha : float + `1 - alpha` is the nominal coverage probability of the + interval. + method : string + The method for producing the confidence interval. Currently + must be 'normal' which uses the normal approximation. + + Returns + ------- + lcb : float + The lower confidence limit. + ucb : float + The upper confidence limit. + """ + + lcb, ucb = self.logodds_pooled_confint(alpha, method=method) + lcb = np.exp(lcb) + ucb = np.exp(ucb) + return lcb, ucb + + def test_equal_odds(self, adjust=False): + """ + Test that all odds ratios are identical. + + This is the 'Breslow-Day' testing procedure. + + Parameters + ---------- + adjust : boolean + Use the 'Tarone' adjustment to achieve the chi^2 + asymptotic distribution. + + Returns + ------- + A bunch containing the following attributes: + + statistic : float + The chi^2 test statistic. + p-value : float + The p-value for the test. + """ + + table = self.table + + r = self.oddsratio_pooled + a = 1 - r + b = r * (self._apb + self._apc) + self._dma + c = -r * self._apb * self._apc + + # Expected value of first cell + e11 = (-b + np.sqrt(b**2 - 4*a*c)) / (2*a) + + # Variance of the first cell + v11 = (1 / e11 + 1 / (self._apc - e11) + 1 / (self._apb - e11) + + 1 / (self._dma + e11)) + v11 = 1 / v11 + + statistic = np.sum((table[0, 0, :] - e11)**2 / v11) + + if adjust: + adj = table[0, 0, :].sum() - e11.sum() + adj = adj**2 + adj /= np.sum(v11) + statistic -= adj + + pvalue = 1 - stats.chi2.cdf(statistic, table.shape[2] - 1) + + b = _Bunch() + b.statistic = statistic + b.pvalue = pvalue + + return b + + def summary(self, alpha=0.05, float_format="%.3f", method="normal"): + """ + A summary of all the main results. + + Parameters + ---------- + alpha : float + `1 - alpha` is the nominal coverage probability of the + confidence intervals. + float_format : string + Used for formatting numeric values in the summary. + method : string + The method for producing the confidence interval. Currently + must be 'normal' which uses the normal approximation. + """ + + def fmt(x): + if isinstance(x, str): + return x + return float_format % x + + co_lcb, co_ucb = self.oddsratio_pooled_confint( + alpha=alpha, method=method) + clo_lcb, clo_ucb = self.logodds_pooled_confint( + alpha=alpha, method=method) + headers = ["Estimate", "LCB", "UCB"] + stubs = ["Pooled odds", "Pooled log odds", "Pooled risk ratio", ""] + data = [[fmt(x) for x in [self.oddsratio_pooled, co_lcb, co_ucb]], + [fmt(x) for x in [self.logodds_pooled, clo_lcb, clo_ucb]], + [fmt(x) for x in [self.riskratio_pooled, "", ""]], + ['', '', '']] + tab1 = iolib.SimpleTable(data, headers, stubs, data_aligns="r", + table_dec_above='') + + headers = ["Statistic", "P-value", ""] + stubs = ["Test of OR=1", "Test constant OR"] + rslt1 = self.test_null_odds() + rslt2 = self.test_equal_odds() + data = [[fmt(x) for x in [rslt1.statistic, rslt1.pvalue, ""]], + [fmt(x) for x in [rslt2.statistic, rslt2.pvalue, ""]]] + tab2 = iolib.SimpleTable(data, headers, stubs, data_aligns="r") + tab1.extend(tab2) + + headers = ["", "", ""] + stubs = ["Number of tables", "Min n", "Max n", "Avg n", "Total n"] + ss = self.table.sum(0).sum(0) + data = [["%d" % self.table.shape[2], '', ''], + ["%d" % min(ss), '', ''], + ["%d" % max(ss), '', ''], + ["%.0f" % np.mean(ss), '', ''], + ["%d" % sum(ss), '', '', '']] + tab3 = iolib.SimpleTable(data, headers, stubs, data_aligns="r") + tab1.extend(tab3) + + return tab1 + + +def mcnemar(table, exact=True, correction=True): + """ + McNemar test of homogeneity. + + Parameters + ---------- + table : array-like + A square contingency table. + exact : bool + If exact is true, then the binomial distribution will be used. + If exact is false, then the chisquare distribution will be + used, which is the approximation to the distribution of the + test statistic for large sample sizes. + correction : bool + If true, then a continuity correction is used for the chisquare + distribution (if exact is false.) + + Returns + ------- + A bunch with attributes: + + statistic : float or int, array + The test statistic is the chisquare statistic if exact is + false. If the exact binomial distribution is used, then this + contains the min(n1, n2), where n1, n2 are cases that are zero + in one sample but one in the other sample. + pvalue : float or array + p-value of the null hypothesis of equal marginal distributions. + + Notes + ----- + This is a special case of Cochran's Q test, and of the homogeneity + test. The results when the chisquare distribution is used are + identical, except for continuity correction. + """ + + table = _make_df_square(table) + table = np.asarray(table, dtype=np.float64) + n1, n2 = table[0, 1], table[1, 0] + + if exact: + statistic = np.minimum(n1, n2) + # binom is symmetric with p=0.5 + pvalue = stats.binom.cdf(statistic, n1 + n2, 0.5) * 2 + pvalue = np.minimum(pvalue, 1) # limit to 1 if n1==n2 + else: + corr = int(correction) # convert bool to 0 or 1 + statistic = (np.abs(n1 - n2) - corr)**2 / (1. * (n1 + n2)) + df = 1 + pvalue = stats.chi2.sf(statistic, df) + + b = _Bunch() + b.statistic = statistic + b.pvalue = pvalue + return b + + +def cochrans_q(x, return_object=True): + """ + Cochran's Q test for identical binomial proportions. + + Parameters + ---------- + x : array_like, 2d (N, k) + data with N cases and k variables + return_object : boolean + Return values as bunch instead of as individual values. + + Returns + ------- + Returns a bunch containing the following attributes, or the + individual values according to the value of `return_object`. + + statistic : float + test statistic + pvalue : float + pvalue from the chisquare distribution + + Notes + ----- + Cochran's Q is a k-sample extension of the McNemar test. If there + are only two groups, then Cochran's Q test and the McNemar test + are equivalent. + + The procedure tests that the probability of success is the same + for every group. The alternative hypothesis is that at least two + groups have a different probability of success. + + In Wikipedia terminology, rows are blocks and columns are + treatments. The number of rows N, should be large for the + chisquare distribution to be a good approximation. + + The Null hypothesis of the test is that all treatments have the + same effect. + + References + ---------- + http://en.wikipedia.org/wiki/Cochran_test + SAS Manual for NPAR TESTS + """ + + x = np.asarray(x, dtype=np.float64) + gruni = np.unique(x) + N, k = x.shape + count_row_success = (x == gruni[-1]).sum(1, float) + count_col_success = (x == gruni[-1]).sum(0, float) + count_row_ss = count_row_success.sum() + count_col_ss = count_col_success.sum() + assert count_row_ss == count_col_ss # just a calculation check + + # From the SAS manual + q_stat = ((k-1) * (k * np.sum(count_col_success**2) - count_col_ss**2) + / (k * count_row_ss - np.sum(count_row_success**2))) + + # Note: the denominator looks just like k times the variance of + # the columns + # Wikipedia uses a different, but equivalent expression + # q_stat = (k-1) * (k * np.sum(count_row_success**2) - count_row_ss**2) + # / (k * count_col_ss - np.sum(count_col_success**2)) + + df = k - 1 + pvalue = stats.chi2.sf(q_stat, df) + + if return_object: + b = _Bunch() + b.statistic = q_stat + b.df = df + b.pvalue = pvalue + return b + + return q_stat, pvalue, df diff --git a/statsmodels/stats/contrast.py b/statsmodels/stats/contrast.py new file mode 100644 index 0000000..5711b51 --- /dev/null +++ b/statsmodels/stats/contrast.py @@ -0,0 +1,679 @@ +from statsmodels.compat.python import range +import numpy as np +from scipy.stats import f as fdist +from scipy.stats import t as student_t +from scipy import stats +from statsmodels.tools.tools import clean0, fullrank +from statsmodels.stats.multitest import multipletests + + +#TODO: should this be public if it's just a container? +class ContrastResults(object): + """ + Class for results of tests of linear restrictions on coefficients in a model. + + This class functions mainly as a container for `t_test`, `f_test` and + `wald_test` for the parameters of a model. + + The attributes depend on the statistical test and are either based on the + normal, the t, the F or the chisquare distribution. + + """ + + def __init__(self, t=None, F=None, sd=None, effect=None, df_denom=None, + df_num=None, alpha=0.05, **kwds): + + self.effect = effect # Let it be None for F + if F is not None: + self.distribution = 'F' + self.fvalue = F + self.statistic = self.fvalue + self.df_denom = df_denom + self.df_num = df_num + self.dist = fdist + self.dist_args = (df_num, df_denom) + self.pvalue = fdist.sf(F, df_num, df_denom) + elif t is not None: + self.distribution = 't' + self.tvalue = t + self.statistic = t # generic alias + self.sd = sd + self.df_denom = df_denom + self.dist = student_t + self.dist_args = (df_denom,) + self.pvalue = self.dist.sf(np.abs(t), df_denom) * 2 + elif 'statistic' in kwds: + # TODO: currently targeted to normal distribution, and chi2 + self.distribution = kwds['distribution'] + self.statistic = kwds['statistic'] + self.tvalue = value = kwds['statistic'] # keep alias + # TODO: for results instance we decided to use tvalues also for normal + self.sd = sd + self.dist = getattr(stats, self.distribution) + self.dist_args = kwds.get('dist_args', ()) + if self.distribution == 'chi2': + self.pvalue = self.dist.sf(self.statistic, df_denom) + self.df_denom = df_denom + else: + "normal" + self.pvalue = np.full_like(value, np.nan) + not_nan = ~np.isnan(value) + self.pvalue[not_nan] = self.dist.sf(np.abs(value[not_nan])) * 2 + + # cleanup + # should we return python scalar? + self.pvalue = np.squeeze(self.pvalue) + + + def conf_int(self, alpha=0.05): + """ + Returns the confidence interval of the value, `effect` of the constraint. + + This is currently only available for t and z tests. + + Parameters + ---------- + alpha : float, optional + The significance level for the confidence interval. + ie., The default `alpha` = .05 returns a 95% confidence interval. + + Returns + ------- + ci : ndarray, (k_constraints, 2) + The array has the lower and the upper limit of the confidence + interval in the columns. + + """ + if self.effect is not None: + # confidence intervals + q = self.dist.ppf(1 - alpha / 2., *self.dist_args) + lower = self.effect - q * self.sd + upper = self.effect + q * self.sd + return np.column_stack((lower, upper)) + else: + raise NotImplementedError('Confidence Interval not available') + + def __str__(self): + return self.summary().__str__() + + def __repr__(self): + return str(self.__class__) + '\n' + self.__str__() + + def summary(self, xname=None, alpha=0.05, title=None): + """Summarize the Results of the hypothesis test + + Parameters + ---------- + + xname : list of strings, optional + Default is `c_##` for ## in p the number of regressors + alpha : float + significance level for the confidence intervals. Default is + alpha = 0.05 which implies a confidence level of 95%. + title : string, optional + Title for the params table. If not None, then this replaces the + default title + + Returns + ------- + smry : string or Summary instance + This contains a parameter results table in the case of t or z test + in the same form as the parameter results table in the model + results summary. + For F or Wald test, the return is a string. + + """ + if self.effect is not None: + # TODO: should also add some extra information, e.g. robust cov ? + # TODO: can we infer names for constraints, xname in __init__ ? + if title is None: + title = 'Test for Constraints' + elif title == '': + # don't add any title, + # I think SimpleTable skips on None - check + title = None + # we have everything for a params table + use_t = (self.distribution == 't') + yname='constraints' # Not used in params_frame + if xname is None: + xname = ['c%d' % ii for ii in range(len(self.effect))] + from statsmodels.iolib.summary import summary_params + pvalues = np.atleast_1d(self.pvalue) + summ = summary_params((self, self.effect, self.sd, self.statistic, + pvalues, self.conf_int(alpha)), + yname=yname, xname=xname, use_t=use_t, + title=title, alpha=alpha) + return summ + elif hasattr(self, 'fvalue'): + # TODO: create something nicer for these casee + return ('' % + (repr(self.fvalue), self.pvalue, self.df_denom, + self.df_num)) + elif self.distribution == 'chi2': + return ('' % + (self.distribution, self.statistic, self.pvalue, + self.df_denom)) + else: + # generic + return ('' % + (self.statistic, self.pvalue)) + + + def summary_frame(self, xname=None, alpha=0.05): + """Return the parameter table as a pandas DataFrame + + This is only available for t and normal tests + """ + if self.effect is not None: + # we have everything for a params table + use_t = (self.distribution == 't') + yname='constraints' # Not used in params_frame + if xname is None: + xname = ['c%d' % ii for ii in range(len(self.effect))] + from statsmodels.iolib.summary import summary_params_frame + summ = summary_params_frame((self, self.effect, self.sd, + self.statistic,self.pvalue, + self.conf_int(alpha)), yname=yname, + xname=xname, use_t=use_t, + alpha=alpha) + return summ + else: + # TODO: create something nicer + raise NotImplementedError('only available for t and z') + + + +class Contrast(object): + """ + This class is used to construct contrast matrices in regression models. + + They are specified by a (term, design) pair. The term, T, is a linear + combination of columns of the design matrix. The matrix attribute of + Contrast is a contrast matrix C so that + + colspan(dot(D, C)) = colspan(dot(D, dot(pinv(D), T))) + + where pinv(D) is the generalized inverse of D. Further, the matrix + + Tnew = dot(C, D) + + is full rank. The rank attribute is the rank of + + dot(D, dot(pinv(D), T)) + + In a regression model, the contrast tests that E(dot(Tnew, Y)) = 0 + for each column of Tnew. + + Parameters + ---------- + term : array-like + design : array-like + + Attributes + ---------- + contrast_matrix + + Examples + -------- + >>> import statsmodels.api as sm + >>> from statsmodels.stats.contrast import Contrast + >>> import numpy as np + >>> np.random.seed(54321) + >>> X = np.random.standard_normal((40,10)) + # Get a contrast + >>> new_term = np.column_stack((X[:,0], X[:,2])) + >>> c = Contrast(new_term, X) + >>> test = [[1] + [0]*9, [0]*2 + [1] + [0]*7] + >>> np.allclose(c.contrast_matrix, test) + True + + Get another contrast + + >>> P = np.dot(X, np.linalg.pinv(X)) + >>> resid = np.identity(40) - P + >>> noise = np.dot(resid,np.random.standard_normal((40,5))) + >>> new_term2 = np.column_stack((noise,X[:,2])) + >>> c2 = Contrast(new_term2, X) + >>> print(c2.contrast_matrix) + [ -1.26424750e-16 8.59467391e-17 1.56384718e-01 -2.60875560e-17 + -7.77260726e-17 -8.41929574e-18 -7.36359622e-17 -1.39760860e-16 + 1.82976904e-16 -3.75277947e-18] + + Get another contrast + + >>> zero = np.zeros((40,)) + >>> new_term3 = np.column_stack((zero,X[:,2])) + >>> c3 = Contrast(new_term3, X) + >>> test2 = [0]*2 + [1] + [0]*7 + >>> np.allclose(c3.contrast_matrix, test2) + True + + """ + def _get_matrix(self): + """ + Gets the contrast_matrix property + """ + if not hasattr(self, "_contrast_matrix"): + self.compute_matrix() + return self._contrast_matrix + + contrast_matrix = property(_get_matrix) + + def __init__(self, term, design): + self.term = np.asarray(term) + self.design = np.asarray(design) + + def compute_matrix(self): + """ + Construct a contrast matrix C so that + + colspan(dot(D, C)) = colspan(dot(D, dot(pinv(D), T))) + + where pinv(D) is the generalized inverse of D=design. + """ + + T = self.term + if T.ndim == 1: + T = T[:,None] + + self.T = clean0(T) + self.D = self.design + self._contrast_matrix = contrastfromcols(self.T, self.D) + try: + self.rank = self.matrix.shape[1] + except: + self.rank = 1 + +#TODO: fix docstring after usage is settled +def contrastfromcols(L, D, pseudo=None): + """ + From an n x p design matrix D and a matrix L, tries + to determine a p x q contrast matrix C which + determines a contrast of full rank, i.e. the + n x q matrix + + dot(transpose(C), pinv(D)) + + is full rank. + + L must satisfy either L.shape[0] == n or L.shape[1] == p. + + If L.shape[0] == n, then L is thought of as representing + columns in the column space of D. + + If L.shape[1] == p, then L is thought of as what is known + as a contrast matrix. In this case, this function returns an estimable + contrast corresponding to the dot(D, L.T) + + Note that this always produces a meaningful contrast, not always + with the intended properties because q is always non-zero unless + L is identically 0. That is, it produces a contrast that spans + the column space of L (after projection onto the column space of D). + + Parameters + ---------- + L : array-like + D : array-like + """ + L = np.asarray(L) + D = np.asarray(D) + + n, p = D.shape + + if L.shape[0] != n and L.shape[1] != p: + raise ValueError("shape of L and D mismatched") + + if pseudo is None: + pseudo = np.linalg.pinv(D) # D^+ \approx= ((dot(D.T,D))^(-1),D.T) + + if L.shape[0] == n: + C = np.dot(pseudo, L).T + else: + C = L + C = np.dot(pseudo, np.dot(D, C.T)).T + + Lp = np.dot(D, C.T) + + if len(Lp.shape) == 1: + Lp.shape = (n, 1) + + if np.linalg.matrix_rank(Lp) != Lp.shape[1]: + Lp = fullrank(Lp) + C = np.dot(pseudo, Lp).T + + return np.squeeze(C) + + +# TODO: this is currently a minimal version, stub +class WaldTestResults(object): + # for F and chi2 tests of joint hypothesis, mainly for vectorized + + def __init__(self, statistic, distribution, dist_args, table=None, + pvalues=None): + self.table = table + + self.distribution = distribution + self.statistic = statistic + #self.sd = sd + self.dist_args = dist_args + + # The following is because I don't know which we want + if table is not None: + self.statistic = table['statistic'].values + self.pvalues = table['pvalue'].values + self.df_constraints = table['df_constraint'].values + if self.distribution == 'F': + self.df_denom = table['df_denom'].values + + else: + if self.distribution == 'chi2': + self.dist = stats.chi2 + self.df_constraints = self.dist_args[0] # assumes tuple + # using dist_args[0] is a bit dangerous, + elif self.distribution == 'F': + self.dist = stats.f + self.df_constraints, self.df_denom = self.dist_args + + else: + raise ValueError('only F and chi2 are possible distribution') + + if pvalues is None: + self.pvalues = self.dist.sf(np.abs(statistic), *dist_args) + else: + self.pvalues = pvalues + + @property + def col_names(self): + """column names for summary table + """ + + pr_test = "P>%s" % self.distribution + col_names = [self.distribution, pr_test, 'df constraint'] + if self.distribution == 'F': + col_names.append('df denom') + return col_names + + def summary_frame(self): + # needs to be a method for consistency + if hasattr(self, '_dframe'): + return self._dframe + # rename the column nambes, but don't copy data + renaming = dict(zip(self.table.columns, self.col_names)) + self.dframe = self.table.rename(columns=renaming) + return self.dframe + + + def __str__(self): + return self.summary_frame().to_string() + + + def __repr__(self): + return str(self.__class__) + '\n' + self.__str__() + + +# t_test for pairwise comparison and automatic contrast/restrictions + + +def _get_pairs_labels(k_level, level_names): + """helper function for labels for pairwise comparisons + """ + idx_pairs_all = np.triu_indices(k_level, 1) + labels = ['%s-%s' % (level_names[name[1]], level_names[name[0]]) + for name in zip(*idx_pairs_all)] + return labels + +def _contrast_pairs(k_params, k_level, idx_start): + """create pairwise contrast for reference coding + + currently not used, + using encoding contrast matrix is more general, but requires requires + factor information from patsy design_info. + + + Parameters + ---------- + k_params : int + number of parameters + k_level : int + number of levels or categories (including reference case) + idx_start : int + Index of the first parameter of this factor. The restrictions on the + factor are inserted as a block in the full restriction matrix starting + at column with index `idx_start`. + + Returns + ------- + contrasts : ndarray + restriction matrix with k_params columns and number of rows equal to + the number of restrictions. + + """ + k_level_m1 = k_level - 1 + idx_pairs = np.triu_indices(k_level_m1, 1) + + k = len(idx_pairs[0]) + c_pairs = np.zeros((k, k_level_m1)) + c_pairs[np.arange(k), idx_pairs[0]] = -1 + c_pairs[np.arange(k), idx_pairs[1]] = 1 + c_reference = np.eye(k_level_m1) + c = np.concatenate((c_reference, c_pairs), axis=0) + k_all = c.shape[0] + + contrasts = np.zeros((k_all, k_params)) + contrasts[:, idx_start : idx_start + k_level_m1] = c + + return contrasts + + +def t_test_multi(result, contrasts, method='hs', alpha=0.05, ci_method=None, + contrast_names=None): + """perform t_test and add multiplicity correction to results dataframe + + Parameters + ---------- + result results instance + results of an estimated model + contrasts : ndarray + restriction matrix for t_test + method : string or list of strings + method for multiple testing p-value correction, default is'hs'. + alpha : float + significance level for multiple testing reject decision. + ci_method : None + not used yet, will be for multiplicity corrected confidence intervals + contrast_names : list of strings or None + If contrast_names are provided, then they are used in the index of the + returned dataframe, otherwise some generic default names are created. + + Returns + ------- + res_df : pandas DataFrame + The dataframe contains the results of the t_test and additional columns + for multiplicity corrected p-values and boolean indicator for whether + the Null hypothesis is rejected. + """ + tt = result.t_test(contrasts) + res_df = tt.summary_frame(xname=contrast_names) + + if type(method) is not list: + method = [method] + for meth in method: + mt = multipletests(tt.pvalue, method=meth, alpha=alpha) + res_df['pvalue-%s' % meth] = mt[1] + res_df['reject-%s' % meth] = mt[0] + return res_df + + +class MultiCompResult(object): + """class to hold return of t_test_pairwise + + currently just a minimal class to hold attributes. + """ + def __init__(self, **kwargs): + self.__dict__.update(kwargs) + + +def _embed_constraints(contrasts, k_params, idx_start, index=None): + """helper function to expand constraints to a full restriction matrix + + Parameters + ---------- + contrasts : ndarray + restriction matrix for t_test + k_params : int + number of parameters + idx_start : int + Index of the first parameter of this factor. The restrictions on the + factor are inserted as a block in the full restriction matrix starting + at column with index `idx_start`. + index : slice or ndarray + Column index if constraints do not form a block in the full restriction + matrix, i.e. if parameters that are subject to restrictions are not + consecutive in the list of parameters. + If index is not None, then idx_start is ignored. + + Returns + ------- + contrasts : ndarray + restriction matrix with k_params columns and number of rows equal to + the number of restrictions. + """ + + k_c, k_p = contrasts.shape + c = np.zeros((k_c, k_params)) + if index is None: + c[:, idx_start : idx_start + k_p] = contrasts + else: + c[:, index] = contrasts + return c + + +def _constraints_factor(encoding_matrix, comparison='pairwise', k_params=None, + idx_start=None): + """helper function to create constraints based on encoding matrix + + Parameters + ---------- + encoding_matrix : ndarray + contrast matrix for the encoding of a factor as defined by patsy. + The number of rows should be equal to the number of levels or categories + of the factor, the number of columns should be equal to the number + of parameters for this factor. + comparison : str + Currently only 'pairwise' is implemented. The restriction matrix + can be used for testing the hypothesis that all pairwise differences + are zero. + k_params : int + number of parameters + idx_start : int + Index of the first parameter of this factor. The restrictions on the + factor are inserted as a block in the full restriction matrix starting + at column with index `idx_start`. + + Returns + ------- + contrast : ndarray + Contrast or restriction matrix that can be used in hypothesis test + of model results. The number of columns is k_params. + """ + + cm = encoding_matrix + k_level, k_p = cm.shape + + import statsmodels.sandbox.stats.multicomp as mc + if comparison in ['pairwise', 'pw', 'pairs']: + c_all = -mc.contrast_allpairs(k_level) + else: + raise NotImplementedError('currentlyonly pairwise comparison') + + contrasts = c_all.dot(cm) + if k_params is not None: + if idx_start is None: + raise ValueError("if k_params is not None, then idx_start is " + "required") + contrasts = _embed_constraints(contrasts, k_params, idx_start) + return contrasts + + +def t_test_pairwise(result, term_name, method='hs', alpha=0.05, + factor_labels=None, ignore=False): + """perform pairwise t_test with multiple testing corrected p-values + + This uses the formula design_info encoding contrast matrix and should + work for all encodings of a main effect. + + Parameters + ---------- + result : result instance + The results of an estimated model with a categorical main effect. + term_name : str + name of the term for which pairwise comparisons are computed. + Term names for categorical effects are created by patsy and + correspond to the main part of the exog names. + method : str or list of strings + multiple testing p-value correction, default is 'hs', + see stats.multipletesting + alpha : float + significance level for multiple testing reject decision. + factor_labels : None, list of str + Labels for the factor levels used for pairwise labels. If not + provided, then the labels from the formula design_info are used. + ignore : boolean + Turn off some of the exceptions raised by input checks. + + Returns + ------- + results : instance of a simple Results class + The results are stored as attributes, the main attributes are the + following two. Other attributes are added for debugging purposes + or as background information. + + - result_frame : pandas DataFrame with t_test results and multiple + testing corrected p-values. + - contrasts : matrix of constraints of the null hypothesis in the + t_test. + + Notes + ----- + + Status: experimental. Currently only checked for treatment coding with + and without specified reference level. + + Currently there are no multiple testing corrected confidence intervals + available. + + """ + + desinfo = result.model.data.design_info + term_idx = desinfo.term_names.index(term_name) + term = desinfo.terms[term_idx] + idx_start = desinfo.term_slices[term].start + if not ignore and len(term.factors) > 1: + raise ValueError('interaction effects not yet supported') + factor = term.factors[0] + cat = desinfo.factor_infos[factor].categories + if factor_labels is not None: + if len(factor_labels) == len(cat): + cat = factor_labels + else: + raise ValueError("factor_labels has the wrong length, should be %d" % len(cat)) + + + k_level = len(cat) + cm = desinfo.term_codings[term][0].contrast_matrices[factor].matrix + + k_params = len(result.params) + labels = _get_pairs_labels(k_level, cat) + + import statsmodels.sandbox.stats.multicomp as mc + c_all_pairs = -mc.contrast_allpairs(k_level) + contrasts_sub = c_all_pairs.dot(cm) + contrasts = _embed_constraints(contrasts_sub, k_params, idx_start) + res_df = t_test_multi(result, contrasts, method=method, ci_method=None, + alpha=alpha, contrast_names=labels) + res = MultiCompResult(result_frame=res_df, + contrasts=contrasts, + term=term, + contrast_labels=labels, + term_encoding_matrix=cm) + return res diff --git a/statsmodels/stats/correlation_tools.py b/statsmodels/stats/correlation_tools.py new file mode 100644 index 0000000..e26a27f --- /dev/null +++ b/statsmodels/stats/correlation_tools.py @@ -0,0 +1,1039 @@ +# -*- coding: utf-8 -*- +""" + +Created on Fri Aug 17 13:10:52 2012 + +Author: Josef Perktold +License: BSD-3 +""" + +import numpy as np +import scipy.sparse as sparse +from scipy.sparse.linalg import svds +from scipy.optimize import fminbound +import warnings + +from statsmodels.tools.tools import Bunch +from statsmodels.tools.sm_exceptions import ( + IterationLimitWarning, iteration_limit_doc) + + +def clip_evals(x, value=0): # threshold=0, value=0): + evals, evecs = np.linalg.eigh(x) + clipped = np.any(evals < value) + x_new = np.dot(evecs * np.maximum(evals, value), evecs.T) + return x_new, clipped + + +def corr_nearest(corr, threshold=1e-15, n_fact=100): + ''' + Find the nearest correlation matrix that is positive semi-definite. + + The function iteratively adjust the correlation matrix by clipping the + eigenvalues of a difference matrix. The diagonal elements are set to one. + + Parameters + ---------- + corr : ndarray, (k, k) + initial correlation matrix + threshold : float + clipping threshold for smallest eigenvalue, see Notes + n_fact : int or float + factor to determine the maximum number of iterations. The maximum + number of iterations is the integer part of the number of columns in + the correlation matrix times n_fact. + + Returns + ------- + corr_new : ndarray, (optional) + corrected correlation matrix + + Notes + ----- + The smallest eigenvalue of the corrected correlation matrix is + approximately equal to the ``threshold``. + If the threshold=0, then the smallest eigenvalue of the correlation matrix + might be negative, but zero within a numerical error, for example in the + range of -1e-16. + + Assumes input correlation matrix is symmetric. + + Stops after the first step if correlation matrix is already positive + semi-definite or positive definite, so that smallest eigenvalue is above + threshold. In this case, the returned array is not the original, but + is equal to it within numerical precision. + + See Also + -------- + corr_clipped + cov_nearest + + ''' + k_vars = corr.shape[0] + if k_vars != corr.shape[1]: + raise ValueError("matrix is not square") + + diff = np.zeros(corr.shape) + x_new = corr.copy() + diag_idx = np.arange(k_vars) + + for ii in range(int(len(corr) * n_fact)): + x_adj = x_new - diff + x_psd, clipped = clip_evals(x_adj, value=threshold) + if not clipped: + x_new = x_psd + break + diff = x_psd - x_adj + x_new = x_psd.copy() + x_new[diag_idx, diag_idx] = 1 + else: + warnings.warn(iteration_limit_doc, IterationLimitWarning) + + return x_new + + +def corr_clipped(corr, threshold=1e-15): + ''' + Find a near correlation matrix that is positive semi-definite + + This function clips the eigenvalues, replacing eigenvalues smaller than + the threshold by the threshold. The new matrix is normalized, so that the + diagonal elements are one. + Compared to corr_nearest, the distance between the original correlation + matrix and the positive definite correlation matrix is larger, however, + it is much faster since it only computes eigenvalues once. + + Parameters + ---------- + corr : ndarray, (k, k) + initial correlation matrix + threshold : float + clipping threshold for smallest eigenvalue, see Notes + + Returns + ------- + corr_new : ndarray, (optional) + corrected correlation matrix + + + Notes + ----- + The smallest eigenvalue of the corrected correlation matrix is + approximately equal to the ``threshold``. In examples, the + smallest eigenvalue can be by a factor of 10 smaller than the threshold, + e.g. threshold 1e-8 can result in smallest eigenvalue in the range + between 1e-9 and 1e-8. + If the threshold=0, then the smallest eigenvalue of the correlation matrix + might be negative, but zero within a numerical error, for example in the + range of -1e-16. + + Assumes input correlation matrix is symmetric. The diagonal elements of + returned correlation matrix is set to ones. + + If the correlation matrix is already positive semi-definite given the + threshold, then the original correlation matrix is returned. + + ``cov_clipped`` is 40 or more times faster than ``cov_nearest`` in simple + example, but has a slightly larger approximation error. + + See Also + -------- + corr_nearest + cov_nearest + + ''' + x_new, clipped = clip_evals(corr, value=threshold) + if not clipped: + return corr + + # cov2corr + x_std = np.sqrt(np.diag(x_new)) + x_new = x_new / x_std / x_std[:, None] + return x_new + + +def cov_nearest(cov, method='clipped', threshold=1e-15, n_fact=100, + return_all=False): + """ + Find the nearest covariance matrix that is postive (semi-) definite + + This leaves the diagonal, i.e. the variance, unchanged + + Parameters + ---------- + cov : ndarray, (k,k) + initial covariance matrix + method : string + if "clipped", then the faster but less accurate ``corr_clipped`` is + used.if "nearest", then ``corr_nearest`` is used + threshold : float + clipping threshold for smallest eigen value, see Notes + n_fact : int or float + factor to determine the maximum number of iterations in + ``corr_nearest``. See its doc string + return_all : bool + if False (default), then only the covariance matrix is returned. + If True, then correlation matrix and standard deviation are + additionally returned. + + Returns + ------- + cov_ : ndarray + corrected covariance matrix + corr_ : ndarray, (optional) + corrected correlation matrix + std_ : ndarray, (optional) + standard deviation + + + Notes + ----- + This converts the covariance matrix to a correlation matrix. Then, finds + the nearest correlation matrix that is positive semidefinite and converts + it back to a covariance matrix using the initial standard deviation. + + The smallest eigenvalue of the intermediate correlation matrix is + approximately equal to the ``threshold``. + If the threshold=0, then the smallest eigenvalue of the correlation matrix + might be negative, but zero within a numerical error, for example in the + range of -1e-16. + + Assumes input covariance matrix is symmetric. + + See Also + -------- + corr_nearest + corr_clipped + """ + + from statsmodels.stats.moment_helpers import cov2corr, corr2cov + cov_, std_ = cov2corr(cov, return_std=True) + if method == 'clipped': + corr_ = corr_clipped(cov_, threshold=threshold) + else: # method == 'nearest' + corr_ = corr_nearest(cov_, threshold=threshold, n_fact=n_fact) + + cov_ = corr2cov(corr_, std_) + + if return_all: + return cov_, corr_, std_ + else: + return cov_ + + +def _nmono_linesearch(obj, grad, x, d, obj_hist, M=10, sig1=0.1, + sig2=0.9, gam=1e-4, maxiter=100): + """ + Implements the non-monotone line search of Grippo et al. (1986), + as described in Birgin, Martinez and Raydan (2013). + + Parameters + ---------- + obj : real-valued function + The objective function, to be minimized + grad : vector-valued function + The gradient of the objective function + x : array_like + The starting point for the line search + d : array_like + The search direction + obj_hist : array_like + Objective function history (must contain at least one value) + M : positive integer + Number of previous function points to consider (see references + for details). + sig1 : real + Tuning parameter, see references for details. + sig2 : real + Tuning parameter, see references for details. + gam : real + Tuning parameter, see references for details. + maxiter : positive integer + The maximum number of iterations; returns Nones if convergence + does not occur by this point + + Returns + ------- + alpha : real + The step value + x : Array_like + The function argument at the final step + obval : Real + The function value at the final step + g : Array_like + The gradient at the final step + + Notes + ----- + The basic idea is to take a big step in the direction of the + gradient, even if the function value is not decreased (but there + is a maximum allowed increase in terms of the recent history of + the iterates). + + References + ---------- + Grippo L, Lampariello F, Lucidi S (1986). A Nonmonotone Line + Search Technique for Newton's Method. SIAM Journal on Numerical + Analysis, 23, 707-716. + + E. Birgin, J.M. Martinez, and M. Raydan. Spectral projected + gradient methods: Review and perspectives. Journal of Statistical + Software (preprint). + """ + + alpha = 1. + last_obval = obj(x) + obj_max = max(obj_hist[-M:]) + + for iter in range(maxiter): + + obval = obj(x + alpha*d) + g = grad(x) + gtd = (g * d).sum() + + if obval <= obj_max + gam*alpha*gtd: + return alpha, x + alpha*d, obval, g + + a1 = -0.5*alpha**2*gtd / (obval - last_obval - alpha*gtd) + + if (sig1 <= a1) and (a1 <= sig2*alpha): + alpha = a1 + else: + alpha /= 2. + + last_obval = obval + + return None, None, None, None + + +def _spg_optim(func, grad, start, project, maxiter=1e4, M=10, + ctol=1e-3, maxiter_nmls=200, lam_min=1e-30, + lam_max=1e30, sig1=0.1, sig2=0.9, gam=1e-4): + """ + Implements the spectral projected gradient method for minimizing a + differentiable function on a convex domain. + + Parameters + ---------- + func : real valued function + The objective function to be minimized. + grad : real array-valued function + The gradient of the objective function + start : array_like + The starting point + project : function + In-place projection of the argument to the domain + of func. + ... See notes regarding additional arguments + + Returns + ------- + rslt : Bunch + rslt.params is the final iterate, other fields describe + convergence status. + + Notes + ----- + This can be an effective heuristic algorithm for problems where no + gauranteed algorithm for computing a global minimizer is known. + + There are a number of tuning parameters, but these generally + should not be changed except for `maxiter` (positive integer) and + `ctol` (small positive real). See the Birgin et al reference for + more information about the tuning parameters. + + Reference + --------- + E. Birgin, J.M. Martinez, and M. Raydan. Spectral projected + gradient methods: Review and perspectives. Journal of Statistical + Software (preprint). Available at: + http://www.ime.usp.br/~egbirgin/publications/bmr5.pdf + """ + + lam = min(10*lam_min, lam_max) + + params = start.copy() + gval = grad(params) + + obj_hist = [func(params), ] + + for itr in range(int(maxiter)): + + # Check convergence + df = params - gval + project(df) + df -= params + if np.max(np.abs(df)) < ctol: + return Bunch(**{"Converged": True, "params": params, + "objective_values": obj_hist, + "Message": "Converged successfully"}) + + # The line search direction + d = params - lam*gval + project(d) + d -= params + + # Carry out the nonmonotone line search + alpha, params1, fval, gval1 = _nmono_linesearch( + func, + grad, + params, + d, + obj_hist, + M=M, + sig1=sig1, + sig2=sig2, + gam=gam, + maxiter=maxiter_nmls) + + if alpha is None: + return Bunch(**{"Converged": False, "params": params, + "objective_values": obj_hist, + "Message": "Failed in nmono_linesearch"}) + + obj_hist.append(fval) + s = params1 - params + y = gval1 - gval + + sy = (s*y).sum() + if sy <= 0: + lam = lam_max + else: + ss = (s*s).sum() + lam = max(lam_min, min(ss/sy, lam_max)) + + params = params1 + gval = gval1 + + return Bunch(**{"Converged": False, "params": params, + "objective_values": obj_hist, + "Message": "spg_optim did not converge"}) + + +def _project_correlation_factors(X): + """ + Project a matrix into the domain of matrices whose row-wise sums + of squares are less than or equal to 1. + + The input matrix is modified in-place. + """ + nm = np.sqrt((X*X).sum(1)) + ii = np.flatnonzero(nm > 1) + if len(ii) > 0: + X[ii, :] /= nm[ii][:, None] + + +class FactoredPSDMatrix: + """ + Representation of a positive semidefinite matrix in factored form. + + The representation is constructed based on a vector `diag` and + rectangular matrix `root`, such that the PSD matrix represented by + the class instance is Diag + root * root', where Diag is the + square diagonal matrix with `diag` on its main diagonal. + + Parameters + ---------- + diag : 1d array-like + See above + root : 2d array-like + See above + + Notes + ----- + The matrix is represented internally in the form Diag^{1/2}(I + + factor * scales * factor')Diag^{1/2}, where `Diag` and `scales` + are diagonal matrices, and `factor` is an orthogonal matrix. + """ + + def __init__(self, diag, root): + self.diag = diag + self.root = root + root = root / np.sqrt(diag)[:, None] + u, s, vt = np.linalg.svd(root, 0) + self.factor = u + self.scales = s**2 + + def to_matrix(self): + """ + Returns the PSD matrix represented by this instance as a full + (square) matrix. + """ + return np.diag(self.diag) + np.dot(self.root, self.root.T) + + def decorrelate(self, rhs): + """ + Decorrelate the columns of `rhs`. + + Parameters + ---------- + rhs : array-like + A 2 dimensional array with the same number of rows as the + PSD matrix represented by the class instance. + + Returns + ------- + C^{-1/2} * rhs, where C is the covariance matrix represented + by this class instance. + + Notes + ----- + The returned matrix has the identity matrix as its row-wise + population covariance matrix. + + This function exploits the factor structure for efficiency. + """ + + # I + factor * qval * factor' is the inverse square root of + # the covariance matrix in the homogeneous case where diag = + # 1. + qval = -1 + 1 / np.sqrt(1 + self.scales) + + # Decorrelate in the general case. + rhs = rhs / np.sqrt(self.diag)[:, None] + rhs1 = np.dot(self.factor.T, rhs) + rhs1 *= qval[:, None] + rhs1 = np.dot(self.factor, rhs1) + rhs += rhs1 + + return rhs + + def solve(self, rhs): + """ + Solve a linear system of equations with factor-structured + coefficients. + + Parameters + ---------- + rhs : array-like + A 2 dimensional array with the same number of rows as the + PSD matrix represented by the class instance. + + Returns + ------- + C^{-1} * rhs, where C is the covariance matrix represented + by this class instance. + + Notes + ----- + This function exploits the factor structure for efficiency. + """ + + qval = -self.scales / (1 + self.scales) + dr = np.sqrt(self.diag) + rhs = rhs / dr[:, None] + mat = qval[:, None] * np.dot(self.factor.T, rhs) + rhs = rhs + np.dot(self.factor, mat) + return rhs / dr[:, None] + + def logdet(self): + """ + Returns the logarithm of the determinant of a + factor-structured matrix. + """ + + logdet = np.sum(np.log(self.diag)) + logdet += np.sum(np.log(self.scales)) + logdet += np.sum(np.log(1 + 1 / self.scales)) + + return logdet + + +def corr_nearest_factor(corr, rank, ctol=1e-6, lam_min=1e-30, + lam_max=1e30, maxiter=1000): + """ + Find the nearest correlation matrix with factor structure to a + given square matrix. + + Parameters + ---------- + corr : square array + The target matrix (to which the nearest correlation matrix is + sought). Must be square, but need not be positive + semidefinite. + rank : positive integer + The rank of the factor structure of the solution, i.e., the + number of linearly independent columns of X. + ctol : positive real + Convergence criterion. + lam_min : float + Tuning parameter for spectral projected gradient optimization + (smallest allowed step in the search direction). + lam_max : float + Tuning parameter for spectral projected gradient optimization + (largest allowed step in the search direction). + maxiter : integer + Maximum number of iterations in spectral projected gradient + optimization. + + Returns + ------- + rslt : Bunch + rslt.corr is a FactoredPSDMatrix defining the estimated + correlation structure. Other fields of `rslt` contain + returned values from spg_optim. + + Notes + ----- + A correlation matrix has factor structure if it can be written in + the form I + XX' - diag(XX'), where X is n x k with linearly + independent columns, and with each row having sum of squares at + most equal to 1. The approximation is made in terms of the + Frobenius norm. + + This routine is useful when one has an approximate correlation + matrix that is not positive semidefinite, and there is need to + estimate the inverse, square root, or inverse square root of the + population correlation matrix. The factor structure allows these + tasks to be done without constructing any n x n matrices. + + This is a non-convex problem with no known gauranteed globally + convergent algorithm for computing the solution. Borsdof, Higham + and Raydan (2010) compared several methods for this problem and + found the spectral projected gradient (SPG) method (used here) to + perform best. + + The input matrix `corr` can be a dense numpy array or any scipy + sparse matrix. The latter is useful if the input matrix is + obtained by thresholding a very large sample correlation matrix. + If `corr` is sparse, the calculations are optimized to save + memory, so no working matrix with more than 10^6 elements is + constructed. + + References + ---------- + .. [*] R Borsdof, N Higham, M Raydan (2010). Computing a nearest + correlation matrix with factor structure. SIAM J Matrix Anal Appl, + 31:5, 2603-2622. + http://eprints.ma.man.ac.uk/1523/01/covered/MIMS_ep2009_87.pdf + + Examples + -------- + Hard thresholding a correlation matrix may result in a matrix that + is not positive semidefinite. We can approximate a hard + thresholded correlation matrix with a PSD matrix as follows, where + `corr` is the input correlation matrix. + + >>> import numpy as np + >>> from statsmodels.stats.correlation_tools import corr_nearest_factor + >>> np.random.seed(1234) + >>> b = 1.5 - np.random.rand(10, 1) + >>> x = np.random.randn(100,1).dot(b.T) + np.random.randn(100,10) + >>> corr = np.corrcoef(x.T) + >>> corr = corr * (np.abs(corr) >= 0.3) + >>> rslt = corr_nearest_factor(corr, 3) + """ + + p, _ = corr.shape + + # Starting values (following the PCA method in BHR). + u, s, vt = svds(corr, rank) + X = u * np.sqrt(s) + nm = np.sqrt((X**2).sum(1)) + ii = np.flatnonzero(nm > 1e-5) + X[ii, :] /= nm[ii][:, None] + + # Zero the diagonal + corr1 = corr.copy() + if type(corr1) == np.ndarray: + np.fill_diagonal(corr1, 0) + elif sparse.issparse(corr1): + corr1.setdiag(np.zeros(corr1.shape[0])) + corr1.eliminate_zeros() + corr1.sort_indices() + else: + raise ValueError("Matrix type not supported") + + # The gradient, from lemma 4.1 of BHR. + def grad(X): + gr = np.dot(X, np.dot(X.T, X)) + if type(corr1) == np.ndarray: + gr -= np.dot(corr1, X) + else: + gr -= corr1.dot(X) + gr -= (X*X).sum(1)[:, None] * X + return 4*gr + + # The objective function (sum of squared deviations between fitted + # and observed arrays). + def func(X): + if type(corr1) == np.ndarray: + M = np.dot(X, X.T) + np.fill_diagonal(M, 0) + M -= corr1 + fval = (M*M).sum() + return fval + else: + fval = 0. + # Control the size of intermediates + max_ws = 1e6 + bs = int(max_ws / X.shape[0]) + ir = 0 + while ir < X.shape[0]: + ir2 = min(ir+bs, X.shape[0]) + u = np.dot(X[ir:ir2, :], X.T) + ii = np.arange(u.shape[0]) + u[ii, ir+ii] = 0 + u -= np.asarray(corr1[ir:ir2, :].todense()) + fval += (u*u).sum() + ir += bs + return fval + + rslt = _spg_optim(func, grad, X, _project_correlation_factors, ctol=ctol, + lam_min=lam_min, lam_max=lam_max, maxiter=maxiter) + root = rslt.params + diag = 1 - (root**2).sum(1) + soln = FactoredPSDMatrix(diag, root) + rslt.corr = soln + del rslt.params + return rslt + + +def cov_nearest_factor_homog(cov, rank): + """ + Approximate an arbitrary square matrix with a factor-structured + matrix of the form k*I + XX'. + + Parameters + ---------- + cov : array-like + The input array, must be square but need not be positive + semidefinite + rank : positive integer + The rank of the fitted factor structure + + Returns + ------- + A FactoredPSDMatrix instance containing the fitted matrix + + Notes + ----- + This routine is useful if one has an estimated covariance matrix + that is not SPD, and the ultimate goal is to estimate the inverse, + square root, or inverse square root of the true covariance + matrix. The factor structure allows these tasks to be performed + without constructing any n x n matrices. + + The calculations use the fact that if k is known, then X can be + determined from the eigen-decomposition of cov - k*I, which can + in turn be easily obtained form the eigen-decomposition of `cov`. + Thus the problem can be reduced to a 1-dimensional search for k + that does not require repeated eigen-decompositions. + + If the input matrix is sparse, then cov - k*I is also sparse, so + the eigen-decomposition can be done effciciently using sparse + routines. + + The one-dimensional search for the optimal value of k is not + convex, so a local minimum could be obtained. + + Examples + -------- + Hard thresholding a covariance matrix may result in a matrix that + is not positive semidefinite. We can approximate a hard + thresholded covariance matrix with a PSD matrix as follows: + + >>> import numpy as np + >>> np.random.seed(1234) + >>> b = 1.5 - np.random.rand(10, 1) + >>> x = np.random.randn(100,1).dot(b.T) + np.random.randn(100,10) + >>> cov = np.cov(x) + >>> cov = cov * (np.abs(cov) >= 0.3) + >>> rslt = cov_nearest_factor_homog(cov, 3) + """ + + m, n = cov.shape + + Q, Lambda, _ = svds(cov, rank) + + if sparse.issparse(cov): + QSQ = np.dot(Q.T, cov.dot(Q)) + ts = cov.diagonal().sum() + tss = cov.dot(cov).diagonal().sum() + else: + QSQ = np.dot(Q.T, np.dot(cov, Q)) + ts = np.trace(cov) + tss = np.trace(np.dot(cov, cov)) + + def fun(k): + Lambda_t = Lambda - k + v = tss + m*(k**2) + np.sum(Lambda_t**2) - 2*k*ts + v += 2*k*np.sum(Lambda_t) - 2*np.sum(np.diag(QSQ) * Lambda_t) + return v + + # Get the optimal decomposition + k_opt = fminbound(fun, 0, 1e5) + Lambda_opt = Lambda - k_opt + fac_opt = Q * np.sqrt(Lambda_opt) + + diag = k_opt * np.ones(m, dtype=np.float64) # - (fac_opt**2).sum(1) + return FactoredPSDMatrix(diag, fac_opt) + + +def corr_thresholded(data, minabs=None, max_elt=1e7): + r""" + Construct a sparse matrix containing the thresholded row-wise + correlation matrix from a data array. + + Parameters + ---------- + data : array_like + The data from which the row-wise thresholded correlation + matrix is to be computed. + minabs : non-negative real + The threshold value; correlation coefficients smaller in + magnitude than minabs are set to zero. If None, defaults + to 1 / sqrt(n), see Notes for more information. + + Returns + ------- + cormat : sparse.coo_matrix + The thresholded correlation matrix, in COO format. + + Notes + ----- + This is an alternative to C = np.corrcoef(data); C \*= (np.abs(C) + >= absmin), suitable for very tall data matrices. + + If the data are jointly Gaussian, the marginal sampling + distributions of the elements of the sample correlation matrix are + approximately Gaussian with standard deviation 1 / sqrt(n). The + default value of ``minabs`` is thus equal to 1 standard error, which + will set to zero approximately 68% of the estimated correlation + coefficients for which the population value is zero. + + No intermediate matrix with more than ``max_elt`` values will be + constructed. However memory use could still be high if a large + number of correlation values exceed `minabs` in magnitude. + + The thresholded matrix is returned in COO format, which can easily + be converted to other sparse formats. + + Examples + -------- + Here X is a tall data matrix (e.g. with 100,000 rows and 50 + columns). The row-wise correlation matrix of X is calculated + and stored in sparse form, with all entries smaller than 0.3 + treated as 0. + + >>> import numpy as np + >>> np.random.seed(1234) + >>> b = 1.5 - np.random.rand(10, 1) + >>> x = np.random.randn(100,1).dot(b.T) + np.random.randn(100,10) + >>> cmat = corr_thresholded(x, 0.3) + """ + + nrow, ncol = data.shape + + if minabs is None: + minabs = 1. / float(ncol) + + # Row-standardize the data + data = data.copy() + data -= data.mean(1)[:, None] + sd = data.std(1, ddof=1) + ii = np.flatnonzero(sd > 1e-5) + data[ii, :] /= sd[ii][:, None] + ii = np.flatnonzero(sd <= 1e-5) + data[ii, :] = 0 + + # Number of rows to process in one pass + bs = int(np.floor(max_elt / nrow)) + + ipos_all, jpos_all, cor_values = [], [], [] + + ir = 0 + while ir < nrow: + ir2 = min(data.shape[0], ir + bs) + cm = np.dot(data[ir:ir2, :], data.T) / (ncol - 1) + cma = np.abs(cm) + ipos, jpos = np.nonzero(cma >= minabs) + ipos_all.append(ipos + ir) + jpos_all.append(jpos) + cor_values.append(cm[ipos, jpos]) + ir += bs + + ipos = np.concatenate(ipos_all) + jpos = np.concatenate(jpos_all) + cor_values = np.concatenate(cor_values) + + cmat = sparse.coo_matrix((cor_values, (ipos, jpos)), (nrow, nrow)) + + return cmat + + +class MultivariateKernel(object): + """ + Base class for multivariate kernels. + + An instance of MultivariateKernel implements a `call` method having + signature `call(x, loc)`, returning the kernel weights comparing `x` + (a 1d ndarray) to each row of `loc` (a 2d ndarray). + """ + + def call(self, x, loc): + raise NotImplementedError + + def set_bandwidth(self, bw): + """ + Set the bandwidth to the given vector. + + Parameters + ---------- + bw : array-like + A vector of non-negative bandwidth values. + """ + + self.bw = bw + self._setup() + + def _setup(self): + + # Precompute the squared bandwidth values. + self.bwk = np.prod(self.bw) + self.bw2 = self.bw * self.bw + + def set_default_bw(self, loc, bwm=None): + """ + Set default bandwiths based on domain values. + + Parameters + ---------- + loc : array-like + Values from the domain to which the kernel will + be applied. + bwm : scalar, optional + A non-negative scalar that is used to multiply + the default bandwidth. + """ + + sd = loc.std(0) + q25, q75 = np.percentile(loc, [25, 75], axis=0) + iqr = (q75 - q25) / 1.349 + bw = np.where(iqr < sd, iqr, sd) + bw *= 0.9 / loc.shape[0] ** 0.2 + + if bwm is not None: + bw *= bwm + + # The final bandwidths + self.bw = np.asarray(bw, dtype=np.float64) + + self._setup() + + +class GaussianMultivariateKernel(MultivariateKernel): + """ + The Gaussian (squared exponential) multivariate kernel. + """ + + def call(self, x, loc): + return np.exp(-(x - loc)**2 / (2 * self.bw2)).sum(1) / self.bwk + + +def kernel_covariance(exog, loc, groups, kernel=None, bw=None): + """ + Use kernel averaging to estimate a multivariate covariance function. + + The goal is to estimate a covariance function C(x, y) = + cov(Z(x), Z(y)) where x, y are vectors in R^p (e.g. representing + locations in time or space), and Z(.) represents a multivariate + process on R^p. + + The data used for estimation can be observed at arbitrary values of the + position vector, and there can be multiple independent observations + from the process. + + Parameters + ---------- + exog : array-like + The rows of exog are realizations of the process obtained at + specified points. + loc : array-like + The rows of loc are the locations (e.g. in space or time) at + which the rows of exog are observed. + groups : array-like + The values of groups are labels for distinct independent copies + of the process. + kernel : MultivariateKernel instance, optional + An instance of MultivariateKernel, defaults to + GaussianMultivariateKernel. + bw : array-like or scalar + A bandwidth vector, or bandwith multiplier. If a 1d array, it + contains kernel bandwidths for each component of the process, and + must have length equal to the number of columns of exog. If a scalar, + bw is a bandwidth multiplier used to adjust the default bandwidth; if + None, a default bandwidth is used. + + Returns + ------- + A real-valued function C(x, y) that returns an estimate of the covariance + between values of the process located at x and y. + + References + ---------- + .. [1] Genton M, W Kleiber (2015). Cross covariance functions for + multivariate geostatics. Statistical Science 30(2). + https://arxiv.org/pdf/1507.08017.pdf + """ + + exog = np.asarray(exog) + loc = np.asarray(loc) + groups = np.asarray(groups) + + if loc.ndim == 1: + loc = loc[:, None] + + v = [exog.shape[0], loc.shape[0], len(groups)] + if min(v) != max(v): + msg = "exog, loc, and groups must have the same number of rows" + raise ValueError(msg) + + # Map from group labels to the row indices in each group. + ix = {} + for i, g in enumerate(groups): + if g not in ix: + ix[g] = [] + ix[g].append(i) + for g in ix.keys(): + ix[g] = np.sort(ix[g]) + + if kernel is None: + kernel = GaussianMultivariateKernel() + + if bw is None: + kernel.set_default_bw(loc) + elif np.isscalar(bw): + kernel.set_default_bw(loc, bwm=bw) + else: + kernel.set_bandwidth(bw) + + def cov(x, y): + + kx = kernel.call(x, loc) + ky = kernel.call(y, loc) + + cm, cw = 0., 0. + + for g, ii in ix.items(): + + m = len(ii) + j1, j2 = np.indices((m, m)) + j1 = ii[j1.flat] + j2 = ii[j2.flat] + w = kx[j1] * ky[j2] + + # TODO: some other form of broadcasting may be faster than + # einsum here + cm += np.einsum("ij,ik,i->jk", exog[j1, :], exog[j2, :], w) + cw += w.sum() + + if cw < 1e-10: + msg = ("Effective sample size is 0. The bandwidth may be too " + + "small, or you are outside the range of your data.") + warnings.warn(msg) + return np.nan * np.ones_like(cm) + + return cm / cw + + return cov diff --git a/statsmodels/stats/descriptivestats.py b/statsmodels/stats/descriptivestats.py new file mode 100644 index 0000000..96a1a3f --- /dev/null +++ b/statsmodels/stats/descriptivestats.py @@ -0,0 +1,393 @@ +from statsmodels.compat.python import lrange, lmap, iterkeys, iteritems +import numpy as np +from scipy import stats +from statsmodels.iolib.table import SimpleTable +from statsmodels.tools.decorators import nottest + +def _kurtosis(a): + '''wrapper for scipy.stats.kurtosis that returns nan instead of raising Error + + missing options + ''' + try: + res = stats.kurtosis(a) + except ValueError: + res = np.nan + return res + +def _skew(a): + '''wrapper for scipy.stats.skew that returns nan instead of raising Error + + missing options + ''' + try: + res = stats.skew(a) + except ValueError: + res = np.nan + return res + +_sign_test_doc = ''' + Signs test. + + Parameters + ---------- + samp : array-like + 1d array. The sample for which you want to perform the signs + test. + mu0 : float + See Notes for the definition of the sign test. mu0 is 0 by + default, but it is common to set it to the median. + + Returns + -------- + M, p-value + + Notes + ----- + The signs test returns + + M = (N(+) - N(-))/2 + + where N(+) is the number of values above `mu0`, N(-) is the number of + values below. Values equal to `mu0` are discarded. + + The p-value for M is calculated using the binomial distrubution + and can be intrepreted the same as for a t-test. The test-statistic + is distributed Binom(min(N(+), N(-)), n_trials, .5) where n_trials + equals N(+) + N(-). + + See Also + -------- + scipy.stats.wilcoxon + ''' + +@nottest +def sign_test(samp, mu0=0): + samp = np.asarray(samp) + pos = np.sum(samp > mu0) + neg = np.sum(samp < mu0) + M = (pos-neg)/2. + p = stats.binom_test(min(pos,neg), pos+neg, .5) + return M, p +sign_test.__doc__ = _sign_test_doc + +class Describe(object): + ''' + Calculates descriptive statistics for data. + + Defaults to a basic set of statistics, "all" can be specified, or a list + can be given. + + Parameters + ---------- + dataset : array-like + 2D dataset for descriptive statistics. + ''' + def __init__(self, dataset): + self.dataset = dataset + + #better if this is initially a list to define order, or use an + # ordered dict. First position is the function + # Second position is the tuple/list of column names/numbers + # third is are the results in order of the columns + self.univariate = dict( + obs = [len, None, None], + mean = [np.mean, None, None], + std = [np.std, None, None], + min = [np.min, None, None], + max = [np.max, None, None], + ptp = [np.ptp, None, None], + var = [np.var, None, None], + mode_val = [self._mode_val, None, None], + mode_bin = [self._mode_bin, None, None], + median = [np.median, None, None], + skew = [stats.skew, None, None], + uss = [lambda x: np.sum(np.asarray(x)**2, axis=0), None, None], + kurtosis = [stats.kurtosis, None, None], + percentiles = [self._percentiles, None, None], + #BUG: not single value + #sign_test_M = [self.sign_test_m, None, None], + #sign_test_P = [self.sign_test_p, None, None] + ) + + # TODO: Basic stats for strings + # self.strings = dict( + # unique = [np.unique, None, None], + # number_uniq = [len( + # most = [ + # least = [ + + #TODO: Multivariate + # self.multivariate = dict( + # corrcoef(x[, y, rowvar, bias]), + # cov(m[, y, rowvar, bias]), + # histogram2d(x, y[, bins, range, normed, weights]) + # ) + self._arraytype = None + self._columns_list = None + + def _percentiles(self,x): + p = [stats.scoreatpercentile(x,per) for per in + (1,5,10,25,50,75,90,95,99)] + return p + def _mode_val(self,x): + return stats.mode(x)[0][0] + def _mode_bin(self,x): + return stats.mode(x)[1][0] + + def _array_typer(self): + """if not a sctructured array""" + if not(self.dataset.dtype.names): + """homogeneous dtype array""" + self._arraytype = 'homog' + elif self.dataset.dtype.names: + """structured or rec array""" + self._arraytype = 'sctruct' + else: + assert self._arraytype == 'sctruct' or self._arraytype == 'homog' + + def _is_dtype_like(self, col): + """ + Check whether self.dataset.[col][0] behaves like a string, numbern + unknown. `numpy.lib._iotools._is_string_like` + """ + def string_like(): + # TODO: not sure what the result is if the first item is some + # type of missing value + try: + self.dataset[col][0] + '' + except (TypeError, ValueError): + return False + return True + + def number_like(): + try: + self.dataset[col][0] + 1.0 + except (TypeError, ValueError): + return False + return True + if number_like() and not string_like(): + return 'number' + elif not number_like() and string_like(): + return 'string' + else: + assert (number_like() or string_like()), '\ + Not sure of dtype'+str(self.dataset[col][0]) + + #@property + def summary(self, stats='basic', columns='all', orientation='auto'): + """ + Return a summary of descriptive statistics. + + Parameters + ---------- + stats: list or str + The desired statistics, Accepts 'basic' or 'all' or a list. + 'basic' = ('obs', 'mean', 'std', 'min', 'max') + 'all' = ('obs', 'mean', 'std', 'min', 'max', 'ptp', 'var', + 'mode', 'meadian', 'skew', 'uss', 'kurtosis', + 'percentiles') + columns : list or str + The columns/variables to report the statistics, default is 'all' + If an object with named columns is given, you may specify the + column names. For example + """ + #NOTE + # standard array: Specifiy column numbers (NEED TO TEST) + # percentiles currently broken + # mode requires mode_val and mode_bin separately + if self._arraytype is None: + self._array_typer() + + if stats == 'basic': + stats = ('obs', 'mean', 'std', 'min', 'max') + elif stats == 'all': + #stats = self.univariate.keys() + #dict doesn't keep an order, use full list instead + stats = ['obs', 'mean', 'std', 'min', 'max', 'ptp', 'var', + 'mode_val', 'mode_bin', 'median', 'uss', 'skew', + 'kurtosis', 'percentiles'] + else: + for astat in stats: + pass + #assert astat in self.univariate + + #hack around percentiles multiple output + + #bad naming + import scipy.stats + #BUG: the following has all per the same per=99 + ##perdict = dict(('perc_%2d'%per, [lambda x: + # scipy.stats.scoreatpercentile(x, per), None, None]) + ## for per in (1,5,10,25,50,75,90,95,99)) + + def _fun(per): + return lambda x: scipy.stats.scoreatpercentile(x, per) + + perdict = dict(('perc_%02d' % per, [_fun(per), None, None]) + for per in (1,5,10,25,50,75,90,95,99)) + + if 'percentiles' in stats: + self.univariate.update(perdict) + idx = stats.index('percentiles') + stats[idx:idx+1] = sorted(iterkeys(perdict)) + + + + #JP: this doesn't allow a change in sequence, sequence in stats is + #ignored + #this is just an if condition + if any([aitem[1] for aitem in iteritems(self.univariate) if aitem[0] in + stats]): + if columns == 'all': + self._columns_list = [] + if self._arraytype == 'sctruct': + self._columns_list = self.dataset.dtype.names + #self._columns_list = [col for col in + # self.dataset.dtype.names if + # (self._is_dtype_like(col)=='number')] + else: + self._columns_list = lrange(self.dataset.shape[1]) + else: + self._columns_list = columns + if self._arraytype == 'sctruct': + for col in self._columns_list: + assert (col in self.dataset.dtype.names) + else: + assert self._is_dtype_like(self.dataset) == 'number' + + columstypes = self.dataset.dtype + #TODO: do we need to make sure they dtype is float64 ? + for astat in stats: + calc = self.univariate[astat] + if self._arraytype == 'sctruct': + calc[1] = self._columns_list + calc[2] = [calc[0](self.dataset[col]) for col in + self._columns_list if (self._is_dtype_like(col) == + 'number')] + #calc[2].append([len(np.unique(self.dataset[col])) for col + # in self._columns_list if + # self._is_dtype_like(col)=='string'] + else: + calc[1] = ['Col '+str(col) for col in self._columns_list] + calc[2] = [calc[0](self.dataset[:,col]) for col in + self._columns_list] + return self.print_summary(stats, orientation=orientation) + else: + return self.print_summary(stats, orientation=orientation) + + def print_summary(self, stats, orientation='auto'): + #TODO: need to specify a table formating for the numbers, using defualt + title = 'Summary Statistics' + header = stats + stubs = self.univariate['obs'][1] + data = [[self.univariate[astat][2][col] for astat in stats] for col in + range(len(self.univariate['obs'][2]))] + + if (orientation == 'varcols') or \ + (orientation == 'auto' and len(stubs) < len(header)): + #swap rows and columns + data = lmap(lambda *row: list(row), *data) + header, stubs = stubs, header + + part_fmt = dict(data_fmts = ["%#8.4g"]*(len(header)-1)) + table = SimpleTable(data, + header, + stubs, + title=title, + txt_fmt = part_fmt) + + return table + + + def sign_test(self, samp, mu0=0): + return sign_test(samp, mu0) + sign_test.__doc__ = _sign_test_doc + #TODO: There must be a better way but formating the stats of a fuction that + # returns 2 values is a problem. + #def sign_test_m(samp,mu0=0): + #return self.sign_test(samp,mu0)[0] + #def sign_test_p(samp,mu0=0): + #return self.sign_test(samp,mu0)[1] + +if __name__ == "__main__": + #unittest.main() + + data4 = np.array([[1,2,3,4,5,6], + [6,5,4,3,2,1], + [9,9,9,9,9,9]]) + + t1 = Describe(data4) + #print(t1.summary(stats='all')) + noperc = ['obs', 'mean', 'std', 'min', 'max', 'ptp', #'mode', #'var', + 'median', 'skew', 'uss', 'kurtosis'] + #TODO: mode var raise exception, + #TODO: percentile writes list in cell (?), huge wide format + print(t1.summary(stats=noperc)) + print(t1.summary()) + print(t1.summary( orientation='varcols')) + print(t1.summary(stats=['mean', 'median', 'min', 'max'], orientation=('varcols'))) + print(t1.summary(stats='all')) + + + data1 = np.array([(1,2,'a','aa'), + (2,3,'b','bb'), + (2,4,'b','cc')], + dtype = [('alpha',float), ('beta', int), + ('gamma', '|S1'), ('delta', '|S2')]) + data2 = np.array([(1,2), + (2,3), + (2,4)], + dtype = [('alpha',float), ('beta', float)]) + + data3 = np.array([[1,2,4,4], + [2,3,3,3], + [2,4,4,3]], dtype=float) + + + class TestSimpleTable(object): + #from statsmodels.iolib.table import SimpleTable, default_txt_fmt + + def test_basic_1(self): + print('test_basic_1') + t1 = Describe(data1) + print(t1.summary()) + + + def test_basic_2(self): + print('test_basic_2') + t2 = Describe(data2) + print(t2.summary()) + + def test_describe_summary_float_ndarray(self): + print('test_describe_summary_float_ndarray') + t1 = Describe(data3) + print(t1.summary()) + + def test_basic_4(self): + print('test_basic_4') + t1 = Describe(data4) + print(t1.summary()) + + def test_basic_1a(self): + print('test_basic_1a') + t1 = Describe(data1) + print(t1.summary(stats='basic', columns=['alpha'])) + + def test_basic_1b(self): + print('test_basic_1b') + t1 = Describe(data1) + print(t1.summary(stats='basic', columns='all')) + + def test_basic_2a(self): + print('test_basic_2a') + t2 = Describe(data2) + print(t2.summary(stats='all')) + + def test_basic_3(aself): + t1 = Describe(data3) + print(t1.summary(stats='all')) + + def test_basic_4a(self): + t1 = Describe(data4) + print(t1.summary(stats='all')) diff --git a/statsmodels/stats/diagnostic.py b/statsmodels/stats/diagnostic.py new file mode 100644 index 0000000..69fb603 --- /dev/null +++ b/statsmodels/stats/diagnostic.py @@ -0,0 +1,14 @@ +# flake8: noqa + +# collect some imports of verified (at least one example) functions +from statsmodels.sandbox.stats.diagnostic import ( + acorr_ljungbox, breaks_cusumolsresid, breaks_hansen, CompareCox, CompareJ, + compare_cox, compare_j, het_breuschpagan, HetGoldfeldQuandt, + het_goldfeldquandt, het_arch, + het_white, recursive_olsresiduals, acorr_breusch_godfrey, + linear_harvey_collier, linear_rainbow, linear_lm, + spec_white, unitroot_adf) + +from ._lilliefors import (kstest_fit, lilliefors, kstest_normal, + kstest_exponential) +from ._adnorm import normal_ad diff --git a/statsmodels/stats/gof.py b/statsmodels/stats/gof.py new file mode 100644 index 0000000..3d7358e --- /dev/null +++ b/statsmodels/stats/gof.py @@ -0,0 +1,487 @@ +'''extra statistical function and helper functions + +contains: + +* goodness-of-fit tests + - powerdiscrepancy + - gof_chisquare_discrete + - gof_binning_discrete + + + +Author: Josef Perktold +License : BSD-3 + +changes +------- +2013-02-25 : add chisquare_power, effectsize and "value" + +''' +from statsmodels.compat.python import lrange, string_types +import numpy as np +from scipy import stats + + +# copied from regression/stats.utils +def powerdiscrepancy(observed, expected, lambd=0.0, axis=0, ddof=0): + r"""Calculates power discrepancy, a class of goodness-of-fit tests + as a measure of discrepancy between observed and expected data. + + This contains several goodness-of-fit tests as special cases, see the + describtion of lambd, the exponent of the power discrepancy. The pvalue + is based on the asymptotic chi-square distribution of the test statistic. + + freeman_tukey: + D(x|\theta) = \sum_j (\sqrt{x_j} - \sqrt{e_j})^2 + + Parameters + ---------- + o : Iterable + Observed values + e : Iterable + Expected values + lambd : float or string + * float : exponent `a` for power discrepancy + * 'loglikeratio': a = 0 + * 'freeman_tukey': a = -0.5 + * 'pearson': a = 1 (standard chisquare test statistic) + * 'modified_loglikeratio': a = -1 + * 'cressie_read': a = 2/3 + * 'neyman' : a = -2 (Neyman-modified chisquare, reference from a book?) + axis : int + axis for observations of one series + ddof : int + degrees of freedom correction, + + Returns + ------- + D_obs : Discrepancy of observed values + pvalue : pvalue + + + References + ---------- + Cressie, Noel and Timothy R. C. Read, Multinomial Goodness-of-Fit Tests, + Journal of the Royal Statistical Society. Series B (Methodological), + Vol. 46, No. 3 (1984), pp. 440-464 + + Campbell B. Read: Freeman-Tukey chi-squared goodness-of-fit statistics, + Statistics & Probability Letters 18 (1993) 271-278 + + Nobuhiro Taneichi, Yuri Sekiya, Akio Suzukawa, Asymptotic Approximations + for the Distributions of the Multinomial Goodness-of-Fit Statistics + under Local Alternatives, Journal of Multivariate Analysis 81, 335?359 (2002) + Steele, M. 1,2, C. Hurst 3 and J. Chaseling, Simulated Power of Discrete + Goodness-of-Fit Tests for Likert Type Data + + Examples + -------- + + >>> observed = np.array([ 2., 4., 2., 1., 1.]) + >>> expected = np.array([ 0.2, 0.2, 0.2, 0.2, 0.2]) + + for checking correct dimension with multiple series + + >>> powerdiscrepancy(np.column_stack((observed,observed)).T, 10*expected, lambd='freeman_tukey',axis=1) + (array([[ 2.745166, 2.745166]]), array([[ 0.6013346, 0.6013346]])) + >>> powerdiscrepancy(np.column_stack((observed,observed)).T, 10*expected,axis=1) + (array([[ 2.77258872, 2.77258872]]), array([[ 0.59657359, 0.59657359]])) + >>> powerdiscrepancy(np.column_stack((observed,observed)).T, 10*expected, lambd=0,axis=1) + (array([[ 2.77258872, 2.77258872]]), array([[ 0.59657359, 0.59657359]])) + >>> powerdiscrepancy(np.column_stack((observed,observed)).T, 10*expected, lambd=1,axis=1) + (array([[ 3., 3.]]), array([[ 0.5578254, 0.5578254]])) + >>> powerdiscrepancy(np.column_stack((observed,observed)).T, 10*expected, lambd=2/3.0,axis=1) + (array([[ 2.89714546, 2.89714546]]), array([[ 0.57518277, 0.57518277]])) + >>> powerdiscrepancy(np.column_stack((observed,observed)).T, expected, lambd=2/3.0,axis=1) + (array([[ 2.89714546, 2.89714546]]), array([[ 0.57518277, 0.57518277]])) + >>> powerdiscrepancy(np.column_stack((observed,observed)), expected, lambd=2/3.0, axis=0) + (array([[ 2.89714546, 2.89714546]]), array([[ 0.57518277, 0.57518277]])) + + each random variable can have different total count/sum + + >>> powerdiscrepancy(np.column_stack((observed,2*observed)), expected, lambd=2/3.0, axis=0) + (array([[ 2.89714546, 5.79429093]]), array([[ 0.57518277, 0.21504648]])) + >>> powerdiscrepancy(np.column_stack((observed,2*observed)), expected, lambd=2/3.0, axis=0) + (array([[ 2.89714546, 5.79429093]]), array([[ 0.57518277, 0.21504648]])) + >>> powerdiscrepancy(np.column_stack((2*observed,2*observed)), expected, lambd=2/3.0, axis=0) + (array([[ 5.79429093, 5.79429093]]), array([[ 0.21504648, 0.21504648]])) + >>> powerdiscrepancy(np.column_stack((2*observed,2*observed)), 20*expected, lambd=2/3.0, axis=0) + (array([[ 5.79429093, 5.79429093]]), array([[ 0.21504648, 0.21504648]])) + >>> powerdiscrepancy(np.column_stack((observed,2*observed)), np.column_stack((10*expected,20*expected)), lambd=2/3.0, axis=0) + (array([[ 2.89714546, 5.79429093]]), array([[ 0.57518277, 0.21504648]])) + >>> powerdiscrepancy(np.column_stack((observed,2*observed)), np.column_stack((10*expected,20*expected)), lambd=-1, axis=0) + (array([[ 2.77258872, 5.54517744]]), array([[ 0.59657359, 0.2357868 ]])) + + + """ + o = np.array(observed) + e = np.array(expected) + + if not isinstance(lambd, string_types): + a = lambd + else: + if lambd == 'loglikeratio': a = 0 + elif lambd == 'freeman_tukey': a = -0.5 + elif lambd == 'pearson': a = 1 + elif lambd == 'modified_loglikeratio': a = -1 + elif lambd == 'cressie_read': a = 2/3.0 + else: + raise ValueError('lambd has to be a number or one of ' + 'loglikeratio, freeman_tukey, pearson, ' + 'modified_loglikeratio or cressie_read') + + n = np.sum(o, axis=axis) + nt = n + if n.size>1: + n = np.atleast_2d(n) + if axis == 1: + nt = n.T # need both for 2d, n and nt for broadcasting + if e.ndim == 1: + e = np.atleast_2d(e) + if axis == 0: + e = e.T + + if np.all(np.sum(e, axis=axis) == n): + p = e/(1.0*nt) + elif np.all(np.sum(e, axis=axis) == 1): + p = e + e = nt * e + else: + raise ValueError('observed and expected need to have the same ' + 'number of observations, or e needs to add to 1') + k = o.shape[axis] + if e.shape[axis] != k: + raise ValueError('observed and expected need to have the same ' + 'number of bins') + + # Note: taken from formulas, to simplify cancel n + if a == 0: # log likelihood ratio + D_obs = 2*n * np.sum(o/(1.0*nt) * np.log(o/e), axis=axis) + elif a == -1: # modified log likelihood ratio + D_obs = 2*n * np.sum(e/(1.0*nt) * np.log(e/o), axis=axis) + else: + D_obs = 2*n/a/(a+1) * np.sum(o/(1.0*nt) * ((o/e)**a - 1), axis=axis) + + return D_obs, stats.chi2.sf(D_obs,k-1-ddof) + + + +#todo: need also binning for continuous distribution +# and separated binning function to be used for powerdiscrepancy + +def gof_chisquare_discrete(distfn, arg, rvs, alpha, msg): + '''perform chisquare test for random sample of a discrete distribution + + Parameters + ---------- + distname : string + name of distribution function + arg : sequence + parameters of distribution + alpha : float + significance level, threshold for p-value + + Returns + ------- + result : bool + 0 if test passes, 1 if test fails + + Notes + ----- + originally written for scipy.stats test suite, + still needs to be checked for standalone usage, insufficient input checking + may not run yet (after copy/paste) + + refactor: maybe a class, check returns, or separate binning from + test results + ''' + + # define parameters for test +## n=2000 + n = len(rvs) + nsupp = 20 + wsupp = 1.0/nsupp + +## distfn = getattr(stats, distname) +## np.random.seed(9765456) +## rvs = distfn.rvs(size=n,*arg) + + # construct intervals with minimum mass 1/nsupp + # intervalls are left-half-open as in a cdf difference + distsupport = lrange(max(distfn.a, -1000), min(distfn.b, 1000) + 1) + last = 0 + distsupp = [max(distfn.a, -1000)] + distmass = [] + for ii in distsupport: + current = distfn.cdf(ii,*arg) + if current - last >= wsupp-1e-14: + distsupp.append(ii) + distmass.append(current - last) + last = current + if current > (1-wsupp): + break + if distsupp[-1] < distfn.b: + distsupp.append(distfn.b) + distmass.append(1-last) + distsupp = np.array(distsupp) + distmass = np.array(distmass) + + # convert intervals to right-half-open as required by histogram + histsupp = distsupp+1e-8 + histsupp[0] = distfn.a + + # find sample frequencies and perform chisquare test + #TODO: move to compatibility.py + freq, hsupp = np.histogram(rvs,histsupp) + cdfs = distfn.cdf(distsupp,*arg) + (chis,pval) = stats.chisquare(np.array(freq),n*distmass) + + return chis, pval, (pval > alpha), 'chisquare - test for %s' \ + 'at arg = %s with pval = %s' % (msg,str(arg),str(pval)) + +# copy/paste, remove code duplication when it works +def gof_binning_discrete(rvs, distfn, arg, nsupp=20): + '''get bins for chisquare type gof tests for a discrete distribution + + Parameters + ---------- + rvs : array + sample data + distname : string + name of distribution function + arg : sequence + parameters of distribution + nsupp : integer + number of bins. The algorithm tries to find bins with equal weights. + depending on the distribution, the actual number of bins can be smaller. + + Returns + ------- + freq : array + empirical frequencies for sample; not normalized, adds up to sample size + expfreq : array + theoretical frequencies according to distribution + histsupp : array + bin boundaries for histogram, (added 1e-8 for numerical robustness) + + Notes + ----- + The results can be used for a chisquare test :: + + (chis,pval) = stats.chisquare(freq, expfreq) + + originally written for scipy.stats test suite, + still needs to be checked for standalone usage, insufficient input checking + may not run yet (after copy/paste) + + refactor: maybe a class, check returns, or separate binning from + test results + todo : + optimal number of bins ? (check easyfit), + recommendation in literature at least 5 expected observations in each bin + + ''' + + # define parameters for test +## n=2000 + n = len(rvs) + + wsupp = 1.0/nsupp + +## distfn = getattr(stats, distname) +## np.random.seed(9765456) +## rvs = distfn.rvs(size=n,*arg) + + # construct intervals with minimum mass 1/nsupp + # intervalls are left-half-open as in a cdf difference + distsupport = lrange(max(distfn.a, -1000), min(distfn.b, 1000) + 1) + last = 0 + distsupp = [max(distfn.a, -1000)] + distmass = [] + for ii in distsupport: + current = distfn.cdf(ii,*arg) + if current - last >= wsupp-1e-14: + distsupp.append(ii) + distmass.append(current - last) + last = current + if current > (1-wsupp): + break + if distsupp[-1] < distfn.b: + distsupp.append(distfn.b) + distmass.append(1-last) + distsupp = np.array(distsupp) + distmass = np.array(distmass) + + # convert intervals to right-half-open as required by histogram + histsupp = distsupp+1e-8 + histsupp[0] = distfn.a + + # find sample frequencies and perform chisquare test + freq,hsupp = np.histogram(rvs,histsupp) + #freq,hsupp = np.histogram(rvs,histsupp,new=True) + cdfs = distfn.cdf(distsupp,*arg) + return np.array(freq), n*distmass, histsupp + + +# -*- coding: utf-8 -*- +"""Extension to chisquare goodness-of-fit test + +Created on Mon Feb 25 13:46:53 2013 + +Author: Josef Perktold +License: BSD-3 +""" + + + +def chisquare(f_obs, f_exp=None, value=0, ddof=0, return_basic=True): + '''chisquare goodness-of-fit test + + The null hypothesis is that the distance between the expected distribution + and the observed frequencies is ``value``. The alternative hypothesis is + that the distance is larger than ``value``. ``value`` is normalized in + terms of effect size. + + The standard chisquare test has the null hypothesis that ``value=0``, that + is the distributions are the same. + + + Notes + ----- + The case with value greater than zero is similar to an equivalence test, + that the exact null hypothesis is replaced by an approximate hypothesis. + However, TOST "reverses" null and alternative hypothesis, while here the + alternative hypothesis is that the distance (divergence) is larger than a + threshold. + + References + ---------- + McLaren, ... + Drost,... + + See Also + -------- + powerdiscrepancy + scipy.stats.chisquare + + ''' + + f_obs = np.asarray(f_obs) + n_bins = len(f_obs) + nobs = f_obs.sum(0) + if f_exp is None: + # uniform distribution + f_exp = np.empty(n_bins, float) + f_exp.fill(nobs / float(n_bins)) + + f_exp = np.asarray(f_exp, float) + + chisq = ((f_obs - f_exp)**2 / f_exp).sum(0) + if value == 0: + pvalue = stats.chi2.sf(chisq, n_bins - 1 - ddof) + else: + pvalue = stats.ncx2.sf(chisq, n_bins - 1 - ddof, value**2 * nobs) + + if return_basic: + return chisq, pvalue + else: + return chisq, pvalue #TODO: replace with TestResults + + +def chisquare_power(effect_size, nobs, n_bins, alpha=0.05, ddof=0): + '''power of chisquare goodness of fit test + + effect size is sqrt of chisquare statistic divided by nobs + + Parameters + ---------- + effect_size : float + This is the deviation from the Null of the normalized chi_square + statistic. This follows Cohen's definition (sqrt). + nobs : int or float + number of observations + n_bins : int (or float) + number of bins, or points in the discrete distribution + alpha : float in (0,1) + significance level of the test, default alpha=0.05 + + Returns + ------- + power : float + power of the test at given significance level at effect size + + Notes + ----- + This function also works vectorized if all arguments broadcast. + + This can also be used to calculate the power for power divergence test. + However, for the range of more extreme values of the power divergence + parameter, this power is not a very good approximation for samples of + small to medium size (Drost et al. 1989) + + References + ---------- + Drost, ... + + See Also + -------- + chisquare_effectsize + statsmodels.stats.GofChisquarePower + + ''' + crit = stats.chi2.isf(alpha, n_bins - 1 - ddof) + power = stats.ncx2.sf(crit, n_bins - 1 - ddof, effect_size**2 * nobs) + return power + + +def chisquare_effectsize(probs0, probs1, correction=None, cohen=True, axis=0): + '''effect size for a chisquare goodness-of-fit test + + Parameters + ---------- + probs0 : array_like + probabilities or cell frequencies under the Null hypothesis + probs1 : array_like + probabilities or cell frequencies under the Alternative hypothesis + probs0 and probs1 need to have the same length in the ``axis`` dimension. + and broadcast in the other dimensions + Both probs0 and probs1 are normalized to add to one (in the ``axis`` + dimension). + correction : None or tuple + If None, then the effect size is the chisquare statistic divide by + the number of observations. + If the correction is a tuple (nobs, df), then the effectsize is + corrected to have less bias and a smaller variance. However, the + correction can make the effectsize negative. In that case, the + effectsize is set to zero. + Pederson and Johnson (1990) as referenced in McLaren et all. (1994) + cohen : bool + If True, then the square root is returned as in the definition of the + effect size by Cohen (1977), If False, then the original effect size + is returned. + axis : int + If the probability arrays broadcast to more than 1 dimension, then + this is the axis over which the sums are taken. + + Returns + ------- + effectsize : float + effect size of chisquare test + + ''' + probs0 = np.asarray(probs0, float) + probs1 = np.asarray(probs1, float) + probs0 = probs0 / probs0.sum(axis) + probs1 = probs1 / probs1.sum(axis) + + d2 = ((probs1 - probs0)**2 / probs0).sum(axis) + + if correction is not None: + nobs, df = correction + diff = ((probs1 - probs0) / probs0).sum(axis) + d2 = np.maximum((d2 * nobs - diff - df) / (nobs - 1.), 0) + + if cohen: + return np.sqrt(d2) + else: + return d2 diff --git a/statsmodels/stats/inter_rater.py b/statsmodels/stats/inter_rater.py new file mode 100644 index 0000000..e4b03a5 --- /dev/null +++ b/statsmodels/stats/inter_rater.py @@ -0,0 +1,518 @@ +# -*- coding: utf-8 -*- +"""Inter Rater Agreement + +contains +-------- +fleiss_kappa +cohens_kappa + +aggregate_raters: + helper function to get data into fleiss_kappa format +to_table: + helper function to create contingency table, can be used for cohens_kappa + +Created on Thu Dec 06 22:57:56 2012 +Author: Josef Perktold +License: BSD-3 + +References +---------- +Wikipedia: kappa's initially based on these two pages + http://en.wikipedia.org/wiki/Fleiss%27_kappa + http://en.wikipedia.org/wiki/Cohen's_kappa +SAS-Manual : formulas for cohens_kappa, especially variances +see also R package irr + +TODO +---- +standard errors and hypothesis tests for fleiss_kappa +other statistics and tests, + in R package irr, SAS has more +inconsistent internal naming, changed variable names as I added more + functionality +convenience functions to create required data format from raw data + DONE + +""" + +from __future__ import division +import numpy as np +from scipy import stats #get rid of this? need only norm.sf + + +class ResultsBunch(dict): + + template = '%r' + + def __init__(self, **kwds): + dict.__init__(self, kwds) + self.__dict__ = self + self._initialize() + + def _initialize(self): + pass + + def __str__(self): + return self.template % self + +def _int_ifclose(x, dec=1, width=4): + '''helper function for creating result string for int or float + + only dec=1 and width=4 is implemented + + Parameters + ---------- + x : int or float + value to format + dec : 1 + number of decimals to print if x is not an integer + width : 4 + width of string + + Returns + ------- + xint : int or float + x is converted to int if it is within 1e-14 of an integer + x_string : str + x formatted as string, either '%4d' or '%4.1f' + + ''' + xint = int(round(x)) + if np.max(np.abs(xint - x)) < 1e-14: + return xint, '%4d' % xint + else: + return x, '%4.1f' % x + + +def aggregate_raters(data, n_cat=None): + '''convert raw data with shape (subject, rater) to (subject, cat_counts) + + brings data into correct format for fleiss_kappa + + bincount will raise exception if data cannot be converted to integer. + + Parameters + ---------- + data : array_like, 2-Dim + data containing category assignment with subjects in rows and raters + in columns. + n_cat : None or int + If None, then the data is converted to integer categories, + 0,1,2,...,n_cat-1. Because of the relabeling only category levels + with non-zero counts are included. + If this is an integer, then the category levels in the data are already + assumed to be in integers, 0,1,2,...,n_cat-1. In this case, the + returned array may contain columns with zero count, if no subject + has been categorized with this level. + + Returns + ------- + arr : nd_array, (n_rows, n_cat) + Contains counts of raters that assigned a category level to individuals. + Subjects are in rows, category levels in columns. + + + ''' + data = np.asarray(data) + n_rows = data.shape[0] + if n_cat is None: + #I could add int conversion (reverse_index) to np.unique + cat_uni, cat_int = np.unique(data.ravel(), return_inverse=True) + n_cat = len(cat_uni) + data_ = cat_int.reshape(data.shape) + else: + cat_uni = np.arange(n_cat) #for return only, assumed cat levels + data_ = data + + tt = np.zeros((n_rows, n_cat), int) + for idx, row in enumerate(data_): + ro = np.bincount(row) + tt[idx, :len(ro)] = ro + + return tt, cat_uni + +def to_table(data, bins=None): + '''convert raw data with shape (subject, rater) to (rater1, rater2) + + brings data into correct format for cohens_kappa + + Parameters + ---------- + data : array_like, 2-Dim + data containing category assignment with subjects in rows and raters + in columns. + bins : None, int or tuple of array_like + If None, then the data is converted to integer categories, + 0,1,2,...,n_cat-1. Because of the relabeling only category levels + with non-zero counts are included. + If this is an integer, then the category levels in the data are already + assumed to be in integers, 0,1,2,...,n_cat-1. In this case, the + returned array may contain columns with zero count, if no subject + has been categorized with this level. + If bins are a tuple of two array_like, then the bins are directly used + by ``numpy.histogramdd``. This is useful if we want to merge categories. + + Returns + ------- + arr : nd_array, (n_cat, n_cat) + Contingency table that contains counts of category level with rater1 + in rows and rater2 in columns. + + Notes + ----- + no NaN handling, delete rows with missing values + + This works also for more than two raters. In that case the dimension of + the resulting contingency table is the same as the number of raters + instead of 2-dimensional. + + ''' + + data = np.asarray(data) + n_rows, n_cols = data.shape + if bins is None: + #I could add int conversion (reverse_index) to np.unique + cat_uni, cat_int = np.unique(data.ravel(), return_inverse=True) + n_cat = len(cat_uni) + data_ = cat_int.reshape(data.shape) + bins_ = np.arange(n_cat+1) - 0.5 + #alternative implementation with double loop + #tt = np.asarray([[(x == [i,j]).all(1).sum() for j in cat_uni] + # for i in cat_uni] ) + #other altervative: unique rows and bincount + elif np.isscalar(bins): + bins_ = np.arange(bins+1) - 0.5 + data_ = data + else: + bins_ = bins + data_ = data + + + tt = np.histogramdd(data_, (bins_,)*n_cols) + + return tt[0], bins_ + +def fleiss_kappa(table, method='fleiss'): + """Fleiss' and Randolph's kappa multi-rater agreement measure + + Parameters + ---------- + table : array_like, 2-D + assumes subjects in rows, and categories in columns + method : string + Method 'fleiss' returns Fleiss' kappa which uses the sample margin + to define the chance outcome. + Method 'randolph' or 'uniform' (only first 4 letters are needed) + returns Randolph's (2005) multirater kappa which assumes a uniform + distribution of the categories to define the chance outcome. + + Returns + ------- + kappa : float + Fleiss's or Randolph's kappa statistic for inter rater agreement + + Notes + ----- + no variance or hypothesis tests yet + + Interrater agreement measures like Fleiss's kappa measure agreement relative + to chance agreement. Different authors have proposed ways of defining + these chance agreements. Fleiss' is based on the marginal sample distribution + of categories, while Randolph uses a uniform distribution of categories as + benchmark. Warrens (2010) showed that Randolph's kappa is always larger or + equal to Fleiss' kappa. Under some commonly observed condition, Fleiss' and + Randolph's kappa provide lower and upper bounds for two similar kappa_like + measures by Light (1971) and Hubert (1977). + + References + ---------- + Wikipedia http://en.wikipedia.org/wiki/Fleiss%27_kappa + + Fleiss, Joseph L. 1971. "Measuring Nominal Scale Agreement among Many + Raters." Psychological Bulletin 76 (5): 378-82. + https://doi.org/10.1037/h0031619. + + Randolph, Justus J. 2005 "Free-Marginal Multirater Kappa (multirater + K [free]): An Alternative to Fleiss' Fixed-Marginal Multirater Kappa." + Presented at the Joensuu Learning and Instruction Symposium, vol. 2005 + https://eric.ed.gov/?id=ED490661 + + Warrens, Matthijs J. 2010. "Inequalities between Multi-Rater Kappas." + Advances in Data Analysis and Classification 4 (4): 271-86. + https://doi.org/10.1007/s11634-010-0073-4. + + """ + + table = 1.0 * np.asarray(table) #avoid integer division + n_sub, n_cat = table.shape + n_total = table.sum() + n_rater = table.sum(1) + n_rat = n_rater.max() + #assume fully ranked + assert n_total == n_sub * n_rat + + #marginal frequency of categories + p_cat = table.sum(0) / n_total + + table2 = table * table + p_rat = (table2.sum(1) - n_rat) / (n_rat * (n_rat - 1.)) + p_mean = p_rat.mean() + + if method == 'fleiss': + p_mean_exp = (p_cat*p_cat).sum() + elif method.startswith('rand') or method.startswith('unif'): + p_mean_exp = 1 / n_cat + + kappa = (p_mean - p_mean_exp) / (1- p_mean_exp) + return kappa + + +def cohens_kappa(table, weights=None, return_results=True, wt=None): + '''Compute Cohen's kappa with variance and equal-zero test + + Parameters + ---------- + table : array_like, 2-Dim + square array with results of two raters, one rater in rows, second + rater in columns + weights : array_like + The interpretation of weights depends on the wt argument. + If both are None, then the simple kappa is computed. + see wt for the case when wt is not None + If weights is two dimensional, then it is directly used as a weight + matrix. For computing the variance of kappa, the maximum of the + weights is assumed to be smaller or equal to one. + TODO: fix conflicting definitions in the 2-Dim case for + wt : None or string + If wt and weights are None, then the simple kappa is computed. + If wt is given, but weights is None, then the weights are set to + be [0, 1, 2, ..., k]. + If weights is a one-dimensional array, then it is used to construct + the weight matrix given the following options. + + wt in ['linear', 'ca' or None] : use linear weights, Cicchetti-Allison + actual weights are linear in the score "weights" difference + wt in ['quadratic', 'fc'] : use linear weights, Fleiss-Cohen + actual weights are squared in the score "weights" difference + wt = 'toeplitz' : weight matrix is constructed as a toeplitz matrix + from the one dimensional weights. + + return_results : bool + If True (default), then an instance of KappaResults is returned. + If False, then only kappa is computed and returned. + + Returns + ------- + results or kappa + If return_results is True (default), then a results instance with all + statistics is returned + If return_results is False, then only kappa is calculated and returned. + + Notes + ----- + There are two conflicting definitions of the weight matrix, Wikipedia + versus SAS manual. However, the computation are invariant to rescaling + of the weights matrix, so there is no difference in the results. + + Weights for 'linear' and 'quadratic' are interpreted as scores for the + categories, the weights in the computation are based on the pairwise + difference between the scores. + Weights for 'toeplitz' are a interpreted as weighted distance. The distance + only depends on how many levels apart two entries in the table are but + not on the levels themselves. + + example: + + weights = '0, 1, 2, 3' and wt is either linear or toeplitz means that the + weighting only depends on the simple distance of levels. + + weights = '0, 0, 1, 1' and wt = 'linear' means that the first two levels + are zero distance apart and the same for the last two levels. This is + the sampe as forming two aggregated levels by merging the first two and + the last two levels, respectively. + + weights = [0, 1, 2, 3] and wt = 'quadratic' is the same as squaring these + weights and using wt = 'toeplitz'. + + References + ---------- + Wikipedia + SAS Manual + + ''' + table = np.asarray(table, float) #avoid integer division + agree = np.diag(table).sum() + nobs = table.sum() + probs = table / nobs + freqs = probs #TODO: rename to use freqs instead of probs for observed + probs_diag = np.diag(probs) + freq_row = table.sum(1) / nobs + freq_col = table.sum(0) / nobs + prob_exp = freq_col * freq_row[:, None] + assert np.allclose(prob_exp.sum(), 1) + #print prob_exp.sum() + agree_exp = np.diag(prob_exp).sum() #need for kappa_max + if weights is None and wt is None: + kind = 'Simple' + kappa = (agree / nobs - agree_exp) / (1 - agree_exp) + + if return_results: + #variance + term_a = probs_diag * (1 - (freq_row + freq_col) * (1 - kappa))**2 + term_a = term_a.sum() + term_b = probs * (freq_col[:, None] + freq_row)**2 + d_idx = np.arange(table.shape[0]) + term_b[d_idx, d_idx] = 0 #set diagonal to zero + term_b = (1 - kappa)**2 * term_b.sum() + term_c = (kappa - agree_exp * (1-kappa))**2 + var_kappa = (term_a + term_b - term_c) / (1 - agree_exp)**2 / nobs + #term_c = freq_col * freq_row[:, None] * (freq_col + freq_row[:,None]) + term_c = freq_col * freq_row * (freq_col + freq_row) + var_kappa0 = (agree_exp + agree_exp**2 - term_c.sum()) + var_kappa0 /= (1 - agree_exp)**2 * nobs + + else: + if weights is None: + weights = np.arange(table.shape[0]) + #weights follows the Wikipedia definition, not the SAS, which is 1 - + kind = 'Weighted' + weights = np.asarray(weights, float) + if weights.ndim == 1: + if wt in ['ca', 'linear', None]: + weights = np.abs(weights[:, None] - weights) / \ + (weights[-1] - weights[0]) + elif wt in ['fc', 'quadratic']: + weights = (weights[:, None] - weights)**2 / \ + (weights[-1] - weights[0])**2 + elif wt == 'toeplitz': + #assume toeplitz structure + from scipy.linalg import toeplitz + #weights = toeplitz(np.arange(table.shape[0])) + weights = toeplitz(weights) + else: + raise ValueError('wt option is not known') + else: + rows, cols = table.shape + if (table.shape != weights.shape): + raise ValueError('weights are not square') + #this is formula from Wikipedia + kappa = 1 - (weights * table).sum() / nobs / (weights * prob_exp).sum() + #TODO: add var_kappa for weighted version + if return_results: + var_kappa = np.nan + var_kappa0 = np.nan + #switch to SAS manual weights, problem if user specifies weights + #w is negative in some examples, + #but weights is scale invariant in examples and rough check of source + w = 1. - weights + w_row = (freq_col * w).sum(1) + w_col = (freq_row[:, None] * w).sum(0) + agree_wexp = (w * freq_col * freq_row[:, None]).sum() + term_a = freqs * (w - (w_col + w_row[:, None]) * (1 - kappa))**2 + fac = 1. / ((1 - agree_wexp)**2 * nobs) + var_kappa = term_a.sum() - (kappa - agree_wexp * (1 - kappa))**2 + var_kappa *= fac + + freqse = freq_col * freq_row[:, None] + var_kappa0 = (freqse * (w - (w_col + w_row[:, None]))**2).sum() + var_kappa0 -= agree_wexp**2 + var_kappa0 *= fac + + kappa_max = (np.minimum(freq_row, freq_col).sum() - agree_exp) / \ + (1 - agree_exp) + + if return_results: + res = KappaResults( kind=kind, + kappa=kappa, + kappa_max=kappa_max, + weights=weights, + var_kappa=var_kappa, + var_kappa0=var_kappa0) + return res + else: + return kappa + + +_kappa_template = '''\ + %(kind)s Kappa Coefficient + -------------------------------- + Kappa %(kappa)6.4f + ASE %(std_kappa)6.4f + %(alpha_ci)s%% Lower Conf Limit %(kappa_low)6.4f + %(alpha_ci)s%% Upper Conf Limit %(kappa_upp)6.4f + + Test of H0: %(kind)s Kappa = 0 + + ASE under H0 %(std_kappa0)6.4f + Z %(z_value)6.4f + One-sided Pr > Z %(pvalue_one_sided)6.4f + Two-sided Pr > |Z| %(pvalue_two_sided)6.4f +''' + +''' + Weighted Kappa Coefficient + -------------------------------- + Weighted Kappa 0.4701 + ASE 0.1457 + 95% Lower Conf Limit 0.1845 + 95% Upper Conf Limit 0.7558 + + Test of H0: Weighted Kappa = 0 + + ASE under H0 0.1426 + Z 3.2971 + One-sided Pr > Z 0.0005 + Two-sided Pr > |Z| 0.0010 +''' + + +class KappaResults(ResultsBunch): + '''Results for Cohen's kappa + + Attributes + ---------- + kappa : cohen's kappa + var_kappa : variance of kappa + std_kappa : standard deviation of kappa + alpha : one-sided probability for confidence interval + kappa_low : lower (1-alpha) confidence limit + kappa_upp : upper (1-alpha) confidence limit + var_kappa0 : variance of kappa under H0: kappa=0 + std_kappa0 : standard deviation of kappa under H0: kappa=0 + z_value : test statistic for H0: kappa=0, is standard normal distributed + pvalue_one_sided : one sided p-value for H0: kappa=0 and H1: kappa>0 + pvalue_two_sided : two sided p-value for H0: kappa=0 and H1: kappa!=0 + distribution_kappa : asymptotic normal distribution of kappa + distribution_zero_null : asymptotic normal distribution of kappa under + H0: kappa=0 + + The confidence interval for kappa and the statistics for the test of + H0: kappa=0 are based on the asymptotic normal distribution of kappa. + + ''' + + template = _kappa_template + + def _initialize(self): + if 'alpha' not in self: + self['alpha'] = 0.025 + self['alpha_ci'] = _int_ifclose(100 - 0.025 * 200)[1] + + self['std_kappa'] = np.sqrt(self['var_kappa']) + self['std_kappa0'] = np.sqrt(self['var_kappa0']) + + self['z_value'] = self['kappa'] / self['std_kappa0'] + + self['pvalue_one_sided'] = stats.norm.sf(self['z_value']) + self['pvalue_two_sided'] = stats.norm.sf(np.abs(self['z_value'])) * 2 + + delta = stats.norm.isf(self['alpha']) * self['std_kappa'] + self['kappa_low'] = self['kappa'] - delta + self['kappa_upp'] = self['kappa'] + delta + self['distribution_kappa'] = stats.norm(loc=self['kappa'], + scale=self['std_kappa']) + self['distribution_zero_null'] = stats.norm(loc=0, + scale=self['std_kappa0']) + + def __str__(self): + return self.template % self diff --git a/statsmodels/stats/knockoff_regeffects.py b/statsmodels/stats/knockoff_regeffects.py new file mode 100644 index 0000000..882d3ee --- /dev/null +++ b/statsmodels/stats/knockoff_regeffects.py @@ -0,0 +1,164 @@ +import numpy as np +import statsmodels.api as sm + + +class RegressionEffects(object): + """ + Base class for regression effects used in RegressionFDR. + + Any implementation of the class must provide a method called + 'stats' that takes a RegressionFDR object and returns effect sizes + for the model coefficients. Greater values for these statistics + imply greater evidence that the effect is real. + + Knockoff effect sizes are based on fitting the regression model to + an extended design matrix [X X'], where X' is a design matrix with + the same shape as the actual design matrix X. The construction of + X' guarantees that there are no true associations between the + columns of X' and the dependent variable of the regression. If X + has p columns, then the effect size of covariate j is based on the + strength of the estimated association for coefficient j compared + to the strength of the estimated association for coefficient p+j. + """ + + def stats(self, parent): + raise NotImplementedError + + +class CorrelationEffects(RegressionEffects): + """ + Marginal correlation effect sizes for FDR control. + + Parameters + ---------- + parent : RegressionFDR + The RegressionFDR instance to which this effect size is + applied. + + Notes + ----- + This class implements the marginal correlation approach to + constructing test statistics for a knockoff analysis, as + desscribed under (1) in section 2.2 of the Barber and Candes + paper. + """ + + def stats(self, parent): + s1 = np.dot(parent.exog1.T, parent.endog) + s2 = np.dot(parent.exog2.T, parent.endog) + return np.abs(s1) - np.abs(s2) + + +class ForwardEffects(RegressionEffects): + """ + Forward selection effect sizes for FDR control. + + Parameters + ---------- + parent : RegressionFDR + The RegressionFDR instance to which this effect size is + applied. + pursuit : bool + If True, 'basis pursuit' is used, which amounts to performing + a full regression at each selection step to adjust the working + residual vector. If False (the default), the residual is + adjusted by regressing out each selected variable marginally. + Setting pursuit=True will be considerably slower, but may give + better results when exog is not orthogonal. + + Notes + ----- + This class implements the forward selection approach to + constructing test statistics for a knockoff analysis, as + desscribed under (5) in section 2.2 of the Barber and Candes + paper. + """ + + def __init__(self, pursuit): + self.pursuit = pursuit + + def stats(self, parent): + nvar = parent.exog.shape[1] + rv = parent.endog.copy() + vl = [(i, parent.exog[:, i]) for i in range(nvar)] + z = np.empty(nvar) + past = [] + for i in range(nvar): + dp = np.r_[[np.abs(np.dot(rv, x[1])) for x in vl]] + j = np.argmax(dp) + z[vl[j][0]] = nvar - i - 1 + x = vl[j][1] + del vl[j] + if self.pursuit: + for v in past: + x -= np.dot(x, v)*v + past.append(x) + rv -= np.dot(rv, x) * x + z1 = z[0:nvar//2] + z2 = z[nvar//2:] + st = np.where(z1 > z2, z1, z2) * np.sign(z1 - z2) + return st + + +class OLSEffects(RegressionEffects): + """ + OLS regression for knockoff analysis. + + Parameters + ---------- + parent : RegressionFDR + The RegressionFDR instance to which this effect size is + applied. + + Notes + ----- + This class implements the ordinary least squares regression + approach to constructing test statistics for a knockoff analysis, + as described under (2) in section 2.2 of the Barber and Candes + paper. + """ + + def stats(self, parent): + model = sm.OLS(parent.endog, parent.exog) + result = model.fit() + q = len(result.params) // 2 + stats = np.abs(result.params[0:q]) - np.abs(result.params[q:]) + return stats + + +class RegModelEffects(RegressionEffects): + """ + Use any regression model for Regression FDR analysis. + + Parameters + ---------- + parent : RegressionFDR + The RegressionFDR instance to which this effect size is + applied. + model_cls : class + Any model with appropriate fit or fit_regularized + functions + regularized : bool + If True, use fit_regularized to fit the model + model_kws : dict + Keywords passed to model initializer + fit_kws : dict + Dictionary of keyword arguments for fit or fit_regularized + """ + + def __init__(self, model_cls, regularized=False, model_kws=None, + fit_kws=None): + self.model_cls = model_cls + self.regularized = regularized + self.model_kws = model_kws if model_kws is not None else {} + self.fit_kws = fit_kws if fit_kws is not None else {} + + def stats(self, parent): + model = self.model_cls(parent.endog, parent.exog, **self.model_kws) + if self.regularized: + params = model.fit_regularized(**self.fit_kws).params + else: + params = model.fit(**self.fit_kws).params + q = len(params) // 2 + stats = np.abs(params[0:q]) - np.abs(params[q:]) + return stats diff --git a/statsmodels/stats/libqsturng/CH.r b/statsmodels/stats/libqsturng/CH.r new file mode 100644 index 0000000..38063ea --- /dev/null +++ b/statsmodels/stats/libqsturng/CH.r @@ -0,0 +1,92 @@ +% Copyright (c) 2011, Roger Lew BSD [see LICENSE.txt] +% This software is funded in part by NIH Grant P20 RR016454. + + +% This is a collection of scripts used to generate C-H comparisons +% for qsturng. As you can probably guess, my R's skills aren't all that good. + +setwd('D:\\USERS\\roger\\programming\\python\\development\\qsturng') + +ps = seq(length=100, from=.5, to=.999) + +for (r in c(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21, + 22,23,24,25,26,27,28,29,30,35,40,50,60,70,80,90,100,200)) { + for (v in c(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20, + 22,24,26,30,35,40,50,60,90,120,240,480,1e38)) { + m = qtukey(ps, r, v) + fname = sprintf('CH_r=%i,v=%.0f.dat',r,v) + print(fname) + write(rbind(ps, m), + file=fname, + ncolumns=2, + append=FALSE, + sep=',') + } +} + +rs = c(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,30,40,60,80,100) + +for (v in c(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, + 17,18,19,20,24,30,40,60,120,1e38)) { + m = qtukey(0.30, rs, v) + fname = sprintf('CH_p30.dat') + print(fname) + write(rbind(m), + file=fname, + ncolumns=26, + append=TRUE, + sep=' ') +} + +for i in +for (v in c(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, + 17,18,19,20,24,30,40,60,120,1e38)) { + m = qtukey(0.675, rs, v) + fname = sprintf('CH_p675.dat',r,v) + print(fname) + write(rbind(m), + file=fname, + ncolumns=26, + append=TRUE, + sep=' ') +} + +for (v in c(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, + 17,18,19,20,24,30,40,60,120,1e38)) { + m = qtukey(0.75, rs, v) + fname = sprintf('CH_p75.dat',r,v) + print(fname) + write(rbind(m), + file=fname, + ncolumns=26, + append=TRUE, + sep=' ') +} + +for (v in c(2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, + 17,18,19,20,24,30,40,60,120,1e38)) { + m = qtukey(0.975, rs, v) + fname = sprintf('CH_p975.dat') + print(fname) + write(rbind(m), + file=fname, + ncolumns=26, + append=TRUE, + sep=' ') +} + +i = 0; +for (i in 0:9999) { + p = runif(1, .5, .95); + r = sample(2:100, 1); + v = runif(1, 2, 1000); + q = qtukey(p,r,v); + if (!is.nan(q)) { + write(c(p,r,v,q), + file='bootleg.dat', + ncolumns=4, + append=TRUE, + sep=','); + i = i + 1; + } +} \ No newline at end of file diff --git a/statsmodels/stats/libqsturng/LICENSE.txt b/statsmodels/stats/libqsturng/LICENSE.txt new file mode 100644 index 0000000..7d45ee4 --- /dev/null +++ b/statsmodels/stats/libqsturng/LICENSE.txt @@ -0,0 +1,29 @@ +Copyright (c) 2011, Roger Lew [see LICENSE.txt] +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following + disclaimer in the documentation and/or other materials provided + with the distribution. + * Neither the name of the organizations affiliated with the + contributors or the names of its contributors themselves may be + used to endorse or promote products derived from this software + without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. diff --git a/statsmodels/stats/libqsturng/__init__.py b/statsmodels/stats/libqsturng/__init__.py new file mode 100644 index 0000000..88cdcbd --- /dev/null +++ b/statsmodels/stats/libqsturng/__init__.py @@ -0,0 +1,7 @@ +from .qsturng_ import psturng, qsturng, p_keys, v_keys + +from statsmodels.tools._testing import PytestTester + +__all__ = ['p_keys', 'psturng', 'qsturng', 'v_keys', 'test'] + +test = PytestTester() diff --git a/statsmodels/stats/libqsturng/make_tbls.py b/statsmodels/stats/libqsturng/make_tbls.py new file mode 100644 index 0000000..c295459 --- /dev/null +++ b/statsmodels/stats/libqsturng/make_tbls.py @@ -0,0 +1,467 @@ +"""this script builds the T table and A table for the upper + quantile stundentized range algorithm""" +from statsmodels.compat.python import iterkeys, lrange, lmap, zip +import math +import scipy.stats +from scipy.optimize import leastsq + +import numpy as np +from collections import OrderedDict +from numpy.random import random + +# The values for p in [.5, .75, .9, .95, .975, .99, .995, .999] +# were pulled from: +# http://www.stata.com/stb/stb46/dm64/sturng.pdf +# +# Values for p in [.1, .675, .8, .85] were calculated using R's qtukey function +# +# the table was programmed by Gleason and extends Harter's (1960) table +# using the Copenhaver & Holland (1988) algorithm (C&H). Gleason found +# that the 4th significant digit of the C&H differed from Harter's +# tables on about 20% of the values. Gleason states this was do to +# consevative rounding by Harter. In those event the table reflects +# Harter's orginal approximations. + +q0100 = """\ +2 0.2010022 0.6351172 0.9504689 1.179321 1.354691 1.495126 1.611354 1.709984 1.795325 1.87032 1.937057 1.997068 2.051505 2.101256 2.147016 2.189342 2.228683 2.265408 2.299823 2.558612 2.729718 2.95625 3.184742938 3.398609188 +3 0.193179 0.6294481 0.9564746 1.19723 1.383028 1.532369 1.656225 1.761451 1.852559 1.93265 2.003933 2.068034 2.126178 2.179312 2.228177 2.273367 2.315364 2.354561 2.391287 2.667213 2.849389 3.009265469 3.237758406 3.451624656 +4 0.1892648 0.6266441 0.9606115 1.2089 1.401557 1.55691 1.686009 1.795829 1.890994 1.974697 2.049222 2.116253 2.177065 2.232641 2.283754 2.331023 2.37495 2.415949 2.454361 2.742846 2.933173 3.062280938 3.290773875 3.504640125 +5 0.1869239 0.6249713 0.963532 1.217021 1.414548 1.574255 1.707205 1.820437 1.91864 2.005066 2.082048 2.151312 2.214162 2.271609 2.324449 2.37332 2.418737 2.461128 2.500844 2.7991 2.9958 3.115296406 3.343789344 3.557655594 +6 0.185369 0.6238602 0.9656833 1.22298 1.424151 1.587166 1.723076 1.838955 1.939532 2.028098 2.107021 2.178053 2.242524 2.301465 2.355686 2.40584 2.452454 2.495964 2.536731 2.842892 3.027993254 3.168311875 3.396804813 3.610671063 +7 0.1842618 0.6230685 0.9673274 1.227534 1.431536 1.597154 1.735417 1.853415 1.955904 2.046203 2.126704 2.19918 2.264979 2.325144 2.380502 2.431713 2.479315 2.52375 2.565387 2.878126 3.060186557 3.221327344 3.449820281 3.663686531 +8 0.1834338 0.6224757 0.9686225 1.231126 1.437392 1.605113 1.745294 1.86503 1.969097 2.060832 2.142645 2.216325 2.283234 2.344427 2.400739 2.45284 2.501275 2.546491 2.588864 2.861237 3.092379859 3.274342813 3.50283575 3.716702 +9 0.1827912 0.6220153 0.969668 1.23403 1.442149 1.611608 1.753382 1.874572 1.979964 2.07291 2.155833 2.230535 2.298388 2.360458 2.417585 2.470448 2.519597 2.565484 2.608488 2.871492 3.1631665 3.362394 3.613696 3.7452106 +10 0.1822783 0.6216474 0.9705293 1.236426 1.446091 1.617009 1.76013 1.882554 1.989077 2.083059 2.166935 2.242517 2.311185 2.374011 2.431845 2.485368 2.535137 2.581607 2.625162 2.898717 3.1760535 3.45339 3.6807265 3.7737192 +11 0.1818593 0.6213467 0.9712507 1.238437 1.449411 1.621571 1.765847 1.889333 1.996831 2.091711 2.176415 2.252763 2.322141 2.38563 2.444082 2.498185 2.548497 2.59548 2.639519 2.923558 3.19971275 3.4758675 3.70202225 3.8022278 +12 0.1815106 0.6210962 0.9718637 1.240149 1.452244 1.625478 1.770753 1.895163 2.003512 2.099178 2.184609 2.26163 2.331635 2.395707 2.454706 2.509321 2.560115 2.607554 2.652022 2.94649 3.2224175 3.498345 3.7242725 3.8307364 +13 0.181216 0.6208845 0.9723908 1.241623 1.454692 1.62886 1.77501 1.900231 2.009331 2.10569 2.191763 2.269382 2.339943 2.404535 2.46402 2.519093 2.570318 2.618162 2.663015 2.967868 3.242456 3.517044 3.741632 3.859245 +14 0.1809637 0.620703 0.972849 1.242906 1.456827 1.631817 1.778739 1.904678 2.014444 2.11142 2.198067 2.276219 2.347278 2.412335 2.472257 2.52774 2.579352 2.627563 2.672763 2.987963 3.245505708 3.503048417 3.748851667 3.878849 +15 0.1807453 0.6205458 0.9732508 1.244033 1.458706 1.634424 1.782034 1.908613 2.018974 2.116503 2.203664 2.282296 2.353802 2.41928 2.479596 2.53545 2.587413 2.635954 2.681468 3.006982 3.275778125 3.489052833 3.758247778 3.896564 +16 0.1805544 0.6204084 0.973606 1.24503 1.460373 1.636741 1.784965 1.912119 2.023015 2.121043 2.208668 2.287733 2.359646 2.425503 2.486177 2.542369 2.59465 2.643493 2.689292 3.025091 3.281966688 3.49479125 3.763291 3.9179256 +17 0.1803861 0.6202871 0.9739223 1.245919 1.461861 1.638813 1.78759 1.915263 2.026643 2.125123 2.21317 2.292628 2.36491 2.431114 2.492114 2.548614 2.601186 2.650304 2.696365 3.032426 3.272395 3.50687125 3.77704 3.9392872 +18 0.1802366 0.6201793 0.9742057 1.246717 1.463198 1.640677 1.789955 1.918099 2.029919 2.128809 2.21724 2.297059 2.369678 2.436199 2.497498 2.55428 2.607118 2.656491 2.702792 3.039093 3.282026 3.586406 3.789645 3.9606488 +19 0.1801029 0.620083 0.9744612 1.247436 1.464405 1.642363 1.792096 1.920669 2.032891 2.132158 2.22094 2.301089 2.374017 2.44083 2.502404 2.559444 2.612529 2.662134 2.708658 3.045182 3.296680985 3.603883649 3.801248 3.974888443 +20 0.1799827 0.6199962 0.9746925 1.248088 1.465502 1.643895 1.794045 1.923011 2.035601 2.135212 2.224318 2.30477 2.377983 2.445065 2.506892 2.564173 2.617485 2.667306 2.714034 3.050762 3.311335993 3.621361325 3.788047375 3.989130221 +24 0.1796023 0.6197217 0.9754345 1.250184 1.469033 1.648844 1.800353 1.930604 2.044404 2.145153 2.235327 2.316784 2.390945 2.45892 2.521592 2.579673 2.633745 2.684289 2.731705 3.089271 3.325991 3.638839 3.77484675 4.003372 +30 0.1792227 0.6194474 0.9761909 1.252326 1.47266 1.653946 1.806877 1.938484 2.053567 2.155527 2.246844 2.329381 2.404562 2.473504 2.537093 2.596046 2.650947 2.702281 2.750452 3.088623 3.365526818 3.632653344 3.810852875 4.0480485 +40 0.1788439 0.6191733 0.976962 1.254517 1.476384 1.659208 1.813634 1.946672 2.063118 2.166372 2.258917 2.342618 2.418905 2.488898 2.553488 2.613394 2.669206 2.731569 2.770415 3.109261 3.405062637 3.629560516 3.846859 4.092725 +60 0.1784658 0.6188994 0.9777482 1.256759 1.480212 1.664639 1.820636 1.955191 2.07309 2.177731 2.271599 2.356562 2.434053 2.505196 2.570884 2.631843 2.688663 2.745483 2.802303 3.159123 3.406221516 3.626467688 3.90118925 4.1497775 +120 0.1780885 0.6186256 0.9785495 1.259052 1.484147 1.67025 1.827902 1.964066 2.083518 2.189653 2.284954 2.371292 2.450102 2.522511 2.589417 2.651546 2.71243375 2.763748 2.8156585 3.201588 3.459897 3.67055425 3.9555195 4.20683 +1e38 0.177712 0.6183521 0.9793662 1.261398 1.488195 1.676051 1.835449 1.973327 2.094446 2.202195 2.299057 2.386902 2.467168 2.540983 2.609248 2.677513 2.745778 2.787396 2.829014 3.236691 3.487830797 3.721309063 4.01874075 4.279424""" + +q0300 = """\ +2 0.6289521 1.248281 1.638496 1.916298 2.129504 2.301246 2.444313 2.566465 2.672747 2.766604 2.850494 2.926224 2.995161 3.05836 3.116655 3.170712 3.221076 3.268192 3.312433 3.647666 3.871606 4.170521 4.372227 4.52341 +3 0.5999117 1.209786 1.598235 1.875707 2.088948 2.260822 2.404037 2.52633 2.632732 2.726691 2.810665 2.886463 2.955453 3.018695 3.077022 3.131103 3.181483 3.228609 3.272854 3.607961 3.831649 4.130021 4.331231 4.48198 +4 0.5857155 1.19124 1.579749 1.858059 2.072245 2.245015 2.389043 2.512062 2.619115 2.713659 2.798159 2.874434 2.943859 3.007497 3.066189 3.120607 3.171298 3.218713 3.263228 3.600301 3.825208 4.125075 4.327208 4.478602 +5 0.5773226 1.18033 1.569213 1.84843 2.063579 2.237255 2.382108 2.505872 2.613597 2.708749 2.793803 2.870583 2.94047 3.004536 3.063622 3.118406 3.169439 3.217173 3.261987 3.601296 3.827646 4.129353 4.332665 4.48491 +6 0.5717854 1.173145 1.562427 1.842442 2.058433 2.232905 2.378487 2.502915 2.611243 2.706943 2.792499 2.869739 2.940051 3.004509 3.06396 3.119085 3.170435 3.218468 3.263562 3.604991 3.832733 4.136241 4.340726 4.493824 +7 0.5678608 1.168056 1.5577 1.838389 2.055092 2.230242 2.376451 2.501451 2.610302 2.706482 2.792477 2.870123 2.94081 3.005616 3.065391 3.120818 3.172464 3.220752 3.266098 3.609448 3.838467 4.143645 4.349225 4.503125 +8 0.5649349 1.164263 1.55422 1.835477 2.052781 2.228508 2.375251 2.500743 2.610046 2.706641 2.793019 2.871019 2.942034 3.007146 3.067207 3.122901 3.174787 3.223323 3.268893 3.61396 3.844133 4.150832 4.357416 4.512054 +9 0.56267 1.161326 1.551554 1.833289 2.051105 2.227323 2.374526 2.500442 2.610136 2.707092 2.793803 2.872112 2.943416 3.008796 3.069108 3.125039 3.177147 3.225893 3.27166 3.618262 3.849473 4.157551 4.365051 4.520364 +10 0.5608651 1.158985 1.549445 1.831589 2.049842 2.226484 2.374084 2.500369 2.610403 2.707674 2.794677 2.873258 2.944815 3.010432 3.070966 3.127106 3.179411 3.228343 3.274287 3.62226 3.854408 4.16298725 4.372072 4.51335807 +11 0.5593931 1.157076 1.547737 1.830233 2.048863 2.225872 2.373818 2.500424 2.610757 2.708305 2.795566 2.874386 2.946167 3.011994 3.072726 3.129052 3.181532 3.23063 3.276732 3.625936 3.8583805 4.1684235 4.378495 4.527370035 +12 0.5581697 1.155489 1.546325 1.829125 2.048085 2.225415 2.373664 2.500554 2.61115 2.708943 2.796432 2.875466 2.947446 3.01346 3.074368 3.13086 3.183497 3.232744 3.278987 3.629302 3.862353 4.17385975 4.384365 4.541382 +13 0.557137 1.154148 1.545138 1.828206 2.047454 2.225068 2.373584 2.500725 2.611555 2.709566 2.797258 2.876482 2.948641 3.014823 3.075889 3.13253 3.185309 3.23469 3.28106 3.63238 3.8663255 4.179296 4.3895105 4.547231 +14 0.5562535 1.153001 1.544127 1.82743 2.046934 2.224798 2.373553 2.500918 2.611956 2.710162 2.798038 2.877433 2.949752 3.016085 3.077294 3.134069 3.186976 3.236478 3.282963 3.635197 3.870298 4.183625 4.394656 4.552594 +15 0.5554892 1.152009 1.543255 1.826767 2.046499 2.224587 2.373555 2.50112 2.612347 2.710728 2.798768 2.878317 2.950781 3.017251 3.078589 3.135487 3.188509 3.238121 3.284712 3.637674 3.8733385 4.187597 4.399177 4.557525 +16 0.5548214 1.151142 1.542495 1.826194 2.04613 2.224419 2.373579 2.501325 2.612721 2.711261 2.799449 2.879139 2.951735 3.018329 3.079784 3.136793 3.189921 3.239634 3.28632 3.640151 3.876379 4.191252 4.40334 4.56207 +17 0.554233 1.150377 1.541828 1.825694 2.045813 2.224284 2.373618 2.501527 2.613077 2.711761 2.800085 2.879902 2.952618 3.019325 3.080888 3.137998 3.191223 3.241028 3.287802 3.642251 3.878959 4.1944965 4.407184 4.56627 +18 0.5537107 1.149699 1.541236 1.825254 2.04554 2.224175 2.373667 2.501725 2.613414 2.71223 2.800678 2.880611 2.953437 3.020248 3.081909 3.139113 3.192426 3.242315 3.28917 3.644351 3.881539 4.197741 4.410743 4.570162 +19 0.5532438 1.149092 1.540709 1.824864 2.045301 2.224086 2.373722 2.501915 2.613733 2.71267 2.801231 2.881271 2.954198 3.021104 3.082855 3.140145 3.19354 3.243507 3.290436 3.641213698 3.877674372 4.200632 4.414046 4.573776 +20 0.552824 1.148546 1.540235 1.824516 2.045091 2.224013 2.37378 2.502099 2.614034 2.713082 2.801747 2.881885 2.954905 3.0219 3.083734 3.141103 3.194574 3.244613 3.291611 3.647488349 3.885403686 4.203319 4.4207865 4.577142 +24 0.5514973 1.146821 1.538745 1.823433 2.044456 2.223827 2.374026 2.502754 2.615077 2.71449 2.8035 2.883965 2.957293 3.02458 3.086693 3.144327 3.198049 3.248329 3.295558 3.653763 3.893133 4.212396 4.427527 4.588561 +30 0.5501747 1.1451 1.537267 1.822378 2.04387 2.223711 2.374365 2.503527 2.616262 2.716064 2.805443 2.886257 2.959917 3.027519 3.089932 3.147852 3.201849 3.252391 3.29987 3.646771403 3.901009 4.201241112 4.423813037 4.57425581 +40 0.5488561 1.143384 1.535803 1.821351 2.043333 2.223667 2.3748 2.504422 2.617594 2.717812 2.807585 2.888774 2.962791 3.030734 3.093472 3.151703 3.205997 3.256824 3.304577 3.660754702 3.910106 4.223551056 4.431241019 4.602866405 +60 0.5475416 1.141671 1.53435 1.820353 2.042846 2.223698 2.375337 2.505445 2.619082 2.719743 2.809939 2.891531 2.965932 3.034243 3.097332 3.1559 3.210518 3.261657 3.30971 3.674738 3.919203 4.245861 4.438669 4.631477 +120 0.5462314 1.139963 1.532911 1.819385 2.04241 2.223806 2.375978 2.506602 2.620733 2.721868 2.812516 2.894541 2.969356 3.038064 3.101534 3.160468 3.215439 3.39400025 3.5725615 3.75112275 3.929684 4.256342 4.44915 4.641958 +1e38 0.5449254 1.138259 1.531485 1.818447 2.042028 2.223993 2.376728 2.507898 2.622556 2.724195 2.815328 2.897817 2.973079 3.042215 3.106097 3.165428 3.220399 3.39896025 3.5775215 3.75608275 3.934644 4.261302 4.45411 4.646918""" + +q0500 = """\ +2 1.155 1.908 2.377 2.713 2.973 3.184 3.361 3.513 3.645 3.762 3.867 3.963 4.049 4.129 4.203 4.271 4.335 4.394 4.451 4.878 5.165 5.549 5.810 6.006 +3 1.082 1.791 2.230 2.545 2.789 2.986 3.152 3.294 3.418 3.528 3.626 3.715 3.796 3.871 3.940 4.004 4.064 4.120 4.172 4.573 4.842 5.202 5.447 5.630 +4 1.048 1.736 2.163 2.468 2.704 2.895 3.055 3.193 3.313 3.419 3.515 3.601 3.680 3.752 3.819 3.881 3.939 3.993 4.044 4.432 4.693 5.043 5.279 5.457 +5 1.028 1.705 2.124 2.423 2.655 2.843 3.000 3.135 3.253 3.357 3.451 3.535 3.613 3.684 3.749 3.810 3.867 3.920 3.970 4.351 4.608 4.951 5.184 5.358 +6 1.015 1.684 2.098 2.394 2.623 2.808 2.964 3.097 3.213 3.317 3.409 3.493 3.569 3.639 3.704 3.764 3.820 3.873 3.922 4.299 4.552 4.891 5.121 5.294 +7 1.006 1.670 2.080 2.374 2.601 2.784 2.938 3.070 3.186 3.288 3.380 3.463 3.538 3.608 3.672 3.732 3.787 3.840 3.889 4.262 4.513 4.849 5.077 5.249 +8 .9990 1.659 2.067 2.359 2.584 2.767 2.919 3.051 3.165 3.267 3.358 3.440 3.515 3.584 3.648 3.708 3.763 3.815 3.863 4.234 4.484 4.818 5.045 5.215 +9 .9938 1.651 2.057 2.347 2.571 2.753 2.905 3.035 3.149 3.250 3.341 3.423 3.498 3.566 3.630 3.689 3.744 3.796 3.844 4.213 4.461 4.794 5.020 5.189 +10 .9897 1.645 2.049 2.338 2.561 2.742 2.893 3.023 3.137 3.237 3.328 3.409 3.484 3.552 3.615 3.674 3.729 3.780 3.829 4.196 4.443 4.775 5.000 5.168 +11 .9863 1.639 2.042 2.330 2.553 2.733 2.884 3.013 3.127 3.227 3.317 3.398 3.472 3.540 3.603 3.662 3.717 3.768 3.816 4.182 4.429 4.759 4.983 5.152 +12 .9836 1.635 2.037 2.324 2.546 2.726 2.876 3.005 3.118 3.218 3.308 3.389 3.463 3.531 3.594 3.652 3.706 3.757 3.805 4.171 4.417 4.746 4.970 5.138 +13 .9812 1.631 2.032 2.319 2.540 2.719 2.869 2.998 3.111 3.210 3.300 3.381 3.455 3.522 3.585 3.643 3.698 3.749 3.796 4.161 4.406 4.735 4.958 5.126 +14 .9792 1.628 2.028 2.314 2.535 2.714 2.864 2.992 3.105 3.204 3.293 3.374 3.448 3.515 3.578 3.636 3.690 3.741 3.789 4.153 4.397 4.726 4.948 5.115 +15 .9775 1.625 2.025 2.310 2.531 2.709 2.859 2.987 3.099 3.199 3.288 3.368 3.442 3.509 3.572 3.630 3.684 3.735 3.782 4.145 4.390 4.718 4.940 5.107 +16 .9760 1.623 2.022 2.307 2.527 2.705 2.855 2.983 3.095 3.194 3.283 3.363 3.436 3.504 3.566 3.624 3.678 3.729 3.776 4.139 4.383 4.710 4.932 5.099 +17 .9747 1.621 2.019 2.304 2.524 2.702 2.851 2.979 3.090 3.189 3.278 3.359 3.432 3.499 3.561 3.619 3.673 3.724 3.771 4.133 4.377 4.704 4.926 5.092 +18 .9735 1.619 2.017 2.301 2.521 2.699 2.848 2.975 3.087 3.186 3.274 3.354 3.428 3.495 3.557 3.615 3.669 3.719 3.767 4.128 4.372 4.698 4.920 5.086 +19 .9724 1.617 2.015 2.299 2.518 2.696 2.845 2.972 3.084 3.182 3.271 3.351 3.424 3.491 3.553 3.611 3.665 3.715 3.763 4.124 4.367 4.693 4.914 5.080 +20 .9715 1.616 2.013 2.297 2.516 2.693 2.842 2.969 3.081 3.179 3.268 3.348 3.421 3.488 3.550 3.607 3.661 3.712 3.759 4.120 4.363 4.688 4.909 5.075 +24 .9685 1.611 2.007 2.290 2.508 2.685 2.833 2.960 3.071 3.170 3.258 3.337 3.410 3.477 3.539 3.596 3.650 3.700 3.747 4.107 4.349 4.674 4.894 5.060 +30 .9656 1.606 2.001 2.283 2.501 2.677 2.825 2.951 3.062 3.160 3.248 3.327 3.400 3.466 3.528 3.585 3.638 3.688 3.735 4.094 4.335 4.659 4.878 5.043 +40 .9626 1.602 1.996 2.277 2.494 2.669 2.816 2.942 3.053 3.150 3.238 3.317 3.389 3.455 3.517 3.574 3.627 3.677 3.723 4.080 4.321 4.643 4.862 5.027 +60 .9597 1.597 1.990 2.270 2.486 2.661 2.808 2.933 3.043 3.140 3.227 3.306 3.378 3.444 3.505 3.562 3.615 3.665 3.711 4.067 4.306 4.627 4.845 5.009 +120 .9568 1.592 1.984 2.263 2.479 2.653 2.799 2.924 3.034 3.130 3.217 3.296 3.367 3.433 3.494 3.550 3.603 3.652 3.699 4.052 4.290 4.610 4.827 4.990 +1e38 .9539 1.588 1.978 2.257 2.472 2.645 2.791 2.915 3.024 3.121 3.207 3.285 3.356 3.422 3.482 3.538 3.591 3.640 3.686 4.037 4.274 4.591 4.806 4.968""" + +q0675 = """\ +2 1.829602 2.751705 3.332700 3.754119 4.082579 4.350351 4.575528 4.769258 4.938876 5.089456 5.22465 5.347168 5.459072 5.56197 5.657136 5.745596 5.828188 5.905606 5.978428 6.534036 6.908522 7.411898 7.753537 8.010516 +3 1.660743 2.469725 2.973973 3.338757 3.622958 3.854718 4.049715 4.217574 4.364624 4.495236 4.612559 4.718926 4.816117 4.905518 4.988228 5.065133 5.136955 5.204295 5.267653 5.751485 6.07799 6.517299 6.815682 7.040219 +4 1.585479 2.344680 2.814410 3.153343 3.417165 3.632254 3.813232 3.96905 4.105579 4.226877 4.335857 4.434684 4.525004 4.608102 4.684995 4.756504 4.823298 4.885932 4.944872 5.395226 5.699385 6.108899 6.387203 6.596702 +5 1.543029 2.27426 2.72431 3.048331 3.300303 3.505645 3.678397 3.827131 3.957462 4.073264 4.177319 4.27169 4.35795 4.437321 4.510774 4.579091 4.642911 4.702763 4.759089 5.189651 5.480611 5.872552 6.139026 6.339673 +6 1.515809 2.229127 2.666435 2.980707 3.224876 3.423769 3.591058 3.735076 3.861273 3.973403 4.074164 4.165554 4.249094 4.325968 4.397115 4.463293 4.525119 4.583105 4.637678 5.054965 5.337079 5.717251 5.975813 6.170546 +7 1.496881 2.197746 2.626119 2.933501 3.17212 3.366405 3.529778 3.670406 3.793624 3.903106 4.001488 4.090723 4.172295 4.247362 4.31684 4.381468 4.441849 4.498482 4.551786 4.959448 5.235148 5.606794 5.859629 6.050083 +8 1.482962 2.174667 2.596423 2.898666 3.133126 3.323942 3.484357 3.622418 3.743376 3.850846 3.947419 4.035012 4.115085 4.188774 4.256978 4.320423 4.379701 4.435301 4.487633 4.887938 5.158734 5.523864 5.772325 5.959514 +9 1.472298 2.156982 2.573637 2.871897 3.103116 3.29122 3.449316 3.585359 3.704538 3.810421 3.905564 3.991859 4.070746 4.143343 4.210539 4.273046 4.331448 4.386229 4.437792 4.832253 5.099153 5.459107 5.704096 5.888693 +10 1.463868 2.142999 2.555601 2.85068 3.079300 3.265222 3.421445 3.555857 3.673594 3.778189 3.872171 3.957411 4.035332 4.107041 4.173413 4.235156 4.292845 4.346957 4.39789 4.787576 5.05129 5.407011 5.649161 5.831642 +11 1.457037 2.131666 2.540969 2.833447 3.059936 3.244061 3.398740 3.531802 3.648345 3.751871 3.844888 3.929251 4.006369 4.077337 4.143024 4.204129 4.261223 4.314777 4.365186 4.750882 5.01193 5.36411 5.603886 5.784574 +12 1.451389 2.122295 2.528860 2.819172 3.043878 3.226497 3.379879 3.511805 3.627341 3.729965 3.822167 3.905787 3.982224 4.052565 4.117671 4.178235 4.234823 4.287903 4.337867 4.720168 4.978946 5.32811 5.565864 5.745066 +13 1.446642 2.114418 2.518673 2.807152 3.030346 3.211683 3.363958 3.494914 3.609588 3.71144 3.802942 3.885925 3.961777 4.031579 4.096185 4.156283 4.212436 4.265108 4.314686 4.694058 4.950875 5.297431 5.533435 5.711335 +14 1.442597 2.107703 2.509984 2.796892 3.018785 3.199019 3.350338 3.480454 3.594382 3.695564 3.786459 3.868888 3.944232 4.013564 4.077734 4.137427 4.1932 4.245515 4.294759 4.671571 4.926672 5.270944 5.505418 5.682176 +15 1.439108 2.101911 2.502485 2.788030 3.008793 3.188066 3.338551 3.467934 3.581209 3.681803 3.772166 3.854108 3.929005 3.997925 4.061712 4.121047 4.176486 4.228488 4.277436 4.651989 4.905573 5.247825 5.480945 5.656694 +16 1.436068 2.096865 2.495948 2.7803 3.000071 3.178498 3.328250 3.456985 3.569684 3.669759 3.75965 3.841162 3.915663 3.984216 4.047663 4.106681 4.161824 4.213546 4.262231 4.634774 4.887015 5.227455 5.459365 5.634213 +17 1.433397 2.092428 2.490198 2.773497 2.992391 3.170069 3.319169 3.447329 3.559514 3.659127 3.748598 3.829725 3.903873 3.972099 4.035242 4.093976 4.148852 4.200325 4.248775 4.619514 4.870529 5.209359 5.440181 5.614218 +18 1.431030 2.088497 2.485101 2.767464 2.985576 3.162585 3.311102 3.438749 3.550474 3.649671 3.738765 3.819547 3.893377 3.961308 4.024178 4.082656 4.137293 4.188541 4.236778 4.605888 4.855804 5.193166 5.423003 5.596306 +19 1.428918 2.08499 2.480552 2.762076 2.979488 3.155896 3.30389 3.431072 3.542383 3.641206 3.729960 3.810429 3.883971 3.951636 4.014258 4.072505 4.126925 4.177969 4.226014 4.593643 4.84256 5.178585 5.407524 5.580158 +20 1.427023 2.081842 2.476467 2.757236 2.974016 3.149882 3.297401 3.424164 3.535099 3.633583 3.722027 3.802213 3.875493 3.942916 4.005312 4.063349 4.117571 4.168429 4.216298 4.582577 4.830579 5.16538 5.393498 5.565519 +24 1.421053 2.071924 2.463589 2.741964 2.956732 3.130867 3.276871 3.402288 3.512015 3.609405 3.696852 3.776122 3.848556 3.915194 3.976858 4.03421 4.087789 4.138042 4.185340 4.547205 4.792208 5.122986 5.348394 5.518394 +30 1.415131 2.062082 2.450796 2.726770 2.939512 3.111895 3.256356 3.380399 3.488888 3.585153 3.67157 3.749892 3.821449 3.887270 3.948172 4.00481 4.057717 4.107336 4.154034 4.511241 4.753052 5.079524 5.302021 5.469846 +40 1.409257 2.052316 2.438086 2.711654 2.922351 3.092956 3.235846 3.358481 3.465697 3.5608 3.646150 3.723487 3.794128 3.859096 3.919198 3.975085 4.027284 4.076232 4.122296 4.474532 4.712898 5.034679 5.253982 5.419412 +60 1.40343 2.042626 2.425459 2.696611 2.905244 3.074043 3.215327 3.336516 3.442417 3.536316 3.620555 3.696861 3.766541 3.830609 3.889866 3.944956 3.996401 4.044636 4.09002 4.436878 4.671454 4.987998 5.203693 5.366394 +120 1.397651 2.033010 2.412913 2.681639 2.888185 3.055146 3.194785 3.314484 3.419022 3.511665 3.59474 3.66996 3.738623 3.801735 3.86009 3.914325 3.96496 4.012423 4.057072 4.398008 4.628308 4.938805 5.150236 5.309666 +1e38 1.391918 2.023469 2.400447 2.666735 2.871167 3.036254 3.174203 3.292360 3.395479 3.486805 3.568651 3.642718 3.710296 3.772381 3.829761 3.883069 3.93282 3.979437 4.023276 4.357546 4.582861 4.886029 5.092081 5.247256""" + +q0750 = """\ +2 2.267583 3.308014 3.969236 4.451126 4.82785 5.13561 5.394819 5.618097 5.813776 5.987632 6.143829 6.285461 6.41489 6.533954 6.644113 6.746546 6.842214 6.931913 7.01631 7.660853 8.09584 8.68119 9.0788 9.377929 +3 2.011896 2.883775 3.431223 3.829258 4.140443 4.394852 4.609323 4.794233 4.956425 5.10064 5.230299 5.347941 5.455509 5.554514 5.646158 5.73141 5.811064 5.885775 5.956093 6.493827 6.857365 7.3472 7.680302 7.931152 +4 1.901267 2.701018 3.198596 3.559322 3.841087 4.071417 4.265624 4.433118 4.580085 4.710812 4.828384 4.935098 5.032703 5.122566 5.205771 5.283192 5.355547 5.423427 5.48733 5.976418 6.307462 6.753955 7.057827 7.286775 +5 1.839820 2.599651 3.069171 3.40865 3.673526 3.889955 4.072422 4.229795 4.367901 4.490764 4.601285 4.701617 4.793402 4.877922 4.956192 5.029034 5.09712 5.161005 5.221154 5.681792 5.993844 6.415033 6.70187 6.918073 +6 1.800788 2.535293 2.986795 3.312495 3.566338 3.773641 3.948369 4.099056 4.231292 4.348941 4.45478 4.550869 4.638783 4.719746 4.794731 4.864523 4.929764 4.990987 5.048635 5.490302 5.789693 6.194025 6.469523 6.677248 +7 1.773818 2.490830 2.929770 3.245783 3.491823 3.692639 3.86185 4.007755 4.135786 4.249692 4.352165 4.445203 4.530329 4.608729 4.681345 4.748937 4.812126 4.871427 4.927269 5.35523 5.64547 6.037624 6.304935 6.506543 +8 1.754075 2.458283 2.887956 3.196776 3.436989 3.632943 3.798002 3.940301 4.065154 4.176226 4.276148 4.366871 4.44988 4.526332 4.597147 4.663065 4.724692 4.782528 4.836995 5.254505 5.537762 5.920623 6.18169 6.378634 +9 1.739001 2.433431 2.855984 3.159245 3.394934 3.587097 3.748912 3.888384 4.010742 4.119586 4.2175 4.306396 4.387735 4.462649 4.532041 4.596635 4.657026 4.713704 4.767081 5.176307 5.454025 5.829512 6.085625 6.27887 +10 1.727116 2.413835 2.830746 3.129578 3.361648 3.550769 3.709972 3.847165 3.967506 4.074547 4.170832 4.258248 4.33823 4.411895 4.480128 4.543645 4.60303 4.658765 4.711254 5.113722 5.386914 5.756374 6.008439 6.198662 +11 1.717506 2.397989 2.810315 3.105535 3.334641 3.521265 3.678317 3.813629 3.932304 4.037852 4.132788 4.218976 4.297831 4.370457 4.437728 4.500349 4.558895 4.613844 4.665594 5.062423 5.331834 5.696254 5.944934 6.13263 +12 1.709576 2.384911 2.793439 3.085654 3.312288 3.496821 3.65207 3.785802 3.903075 4.007365 4.101163 4.186312 4.264215 4.335963 4.402419 4.46428 4.522117 4.5764 4.627523 5.019561 5.285754 5.645883 5.891679 6.077222 +13 1.70292 2.373934 2.779263 3.068939 3.293478 3.476235 3.62995 3.762334 3.878409 3.981623 4.074447 4.158707 4.235793 4.306786 4.372542 4.433751 4.490977 4.544687 4.595269 4.983178 5.246593 5.603014 5.846316 6.029999 +14 1.697255 2.364590 2.767188 3.05469 3.27743 3.458659 3.611050 3.742271 3.85731 3.959593 4.051572 4.13506 4.211437 4.281774 4.346922 4.407563 4.464258 4.517468 4.567581 4.951886 5.212872 5.566049 5.807169 5.989222 +15 1.692374 2.356539 2.756778 3.042397 3.263576 3.443476 3.594714 3.724919 3.839053 3.940521 4.031759 4.114571 4.190326 4.260088 4.324701 4.384844 4.441071 4.493842 4.54354 4.92467 5.183511 5.533819 5.773008 5.95362 +16 1.688126 2.349531 2.747712 3.031684 3.251494 3.430227 3.580451 3.709761 3.823097 3.923845 4.01443 4.096644 4.171848 4.2411 4.305239 4.364939 4.420752 4.473133 4.522464 4.900769 5.1577 5.505449 5.742915 5.92224 +17 1.684395 2.343375 2.739744 3.022264 3.240865 3.418565 3.567889 3.696405 3.809031 3.909139 3.999142 4.080823 4.155535 4.224333 4.288048 4.347353 4.402795 4.454828 4.50383 4.879604 5.134819 5.48027 5.716186 5.894353 +18 1.681092 2.337926 2.732687 3.013916 3.23144 3.408218 3.55674 3.684546 3.796536 3.896071 3.985552 4.066754 4.141026 4.209415 4.27275 4.331699 4.386808 4.438527 4.487232 4.860723 5.114389 5.457759 5.692272 5.86939 +19 1.678147 2.333067 2.726393 3.006467 3.223026 3.398978 3.546777 3.673945 3.785363 3.884381 3.973391 4.054162 4.128035 4.196054 4.259045 4.317673 4.37248 4.423914 4.472351 4.843772 5.096029 5.437505 5.67074 5.846902 +20 1.675506 2.328708 2.720745 2.999780 3.215469 3.390674 3.537821 3.664411 3.775312 3.873861 3.962444 4.042823 4.116334 4.184018 4.246696 4.305031 4.359563 4.410739 4.458932 4.828464 5.079434 5.419178 5.651242 5.82653 +24 1.667194 2.314991 2.702957 2.978701 3.191627 3.364455 3.50952 3.63426 3.7435 3.840544 3.927753 4.006868 4.079211 4.14581 4.207477 4.264864 4.318505 4.368841 4.416241 4.779619 5.026378 5.360437 5.58865 5.761054 +30 1.658964 2.301406 2.68532 2.957771 3.167919 3.338345 3.481298 3.604155 3.711699 3.8072 3.892996 3.970809 4.041947 4.107423 4.168039 4.224442 4.277156 4.326617 4.373187 4.730101 4.9724 5.300398 5.524486 5.693793 +40 1.650814 2.28795 2.667830 2.936984 3.144337 3.312335 3.453142 3.574077 3.679882 3.773798 3.858136 3.934602 4.004488 4.068796 4.128318 4.183691 4.235434 4.283976 4.329675 4.679735 4.917252 5.238689 5.458277 5.62419 +60 1.642744 2.274622 2.650486 2.916339 3.120874 3.286413 3.425034 3.544004 3.648023 3.740302 3.823131 3.898196 3.966776 4.029861 4.088234 4.142523 4.19324 4.24081 4.285584 4.628295 4.860604 5.174794 5.389348 5.551435 +120 1.634753 2.261421 2.633285 2.895829 3.097525 3.260567 3.396959 3.513912 3.616089 3.706672 3.787929 3.861531 3.92874 3.990536 4.047692 4.10083 4.150455 4.196985 4.240768 4.575490 4.802013 5.107977 5.316696 5.474283 +1e38 1.626840 2.248346 2.616224 2.875451 3.074279 3.234786 3.368898 3.483775 3.584045 3.672862 3.752475 3.824535 3.890294 3.950721 4.006580 4.058483 4.106932 4.152338 4.195044 4.520933 4.740866 5.037152 5.238766 5.390726""" + +q0800 = """\ +2 2.666345 3.820436 4.558532 5.098158 5.520848 5.866626 6.158145 6.409446 6.62982 6.825717 7.001791 7.161505 7.307502 7.441845 7.566171 7.681802 7.789818 7.891113 7.986436 8.714887 9.206808 9.868718 10.31830 10.65683 +3 2.316120 3.245426 3.832597 4.261107 4.596942 4.871989 5.104169 5.304561 5.480484 5.637021 5.777843 5.905682 6.022626 6.130305 6.230013 6.322797 6.409513 6.49087 6.567462 7.153711 7.55053 8.085698 8.449862 8.724212 +4 2.168283 3.003795 3.52645 3.90676 4.204595 4.44853 4.654519 4.832388 4.988615 5.127694 5.25287 5.366554 5.470593 5.566425 5.655195 5.737827 5.815079 5.887577 5.955847 6.47896 6.833568 7.31242 7.638648 7.884592 +5 2.087215 2.871505 3.358337 3.711564 3.987876 4.214094 4.405111 4.57007 4.714986 4.844026 4.960193 5.065723 5.162321 5.25132 5.333779 5.410553 5.482342 5.549725 5.613191 6.099852 6.430105 6.876484 7.180827 7.410389 +6 2.036122 2.788188 3.252203 3.588013 3.850385 4.06507 4.246305 4.402806 4.540296 4.662734 4.772969 4.873124 4.964814 5.049304 5.127595 5.200498 5.268677 5.33268 5.392969 5.855517 6.169658 6.594568 6.884463 7.103222 +7 2.001005 2.730943 3.179141 3.502777 3.755348 3.961886 4.136188 4.286677 4.418877 4.536604 4.642603 4.738913 4.82709 4.908349 4.983652 5.05378 5.119368 5.180945 5.238953 5.684175 5.986732 6.39621 6.675724 6.886723 +8 1.975395 2.689205 3.125785 3.440421 3.685706 3.886163 4.055272 4.201248 4.329470 4.443647 4.546448 4.639854 4.725375 4.804189 4.87723 4.945254 5.008879 5.068616 5.124894 5.556957 5.850708 6.248453 6.520077 6.725179 +9 1.955898 2.657432 3.085114 3.392817 3.632464 3.828199 3.993263 4.135716 4.260824 4.37222 4.472512 4.563637 4.64707 4.723960 4.79522 4.861587 4.923664 4.981949 5.036862 5.458529 5.745314 6.133773 6.399153 6.59959 +10 1.940561 2.632439 3.053086 3.355281 3.590431 3.782386 3.944205 4.083824 4.206424 4.315576 4.413841 4.503121 4.584862 4.660193 4.730009 4.795032 4.855852 4.912959 4.966762 5.37997 5.661078 6.041965 6.302252 6.498885 +11 1.928182 2.612267 3.027211 3.324922 3.556399 3.745257 3.904411 4.041698 4.16223 4.269529 4.366119 4.453871 4.534212 4.608251 4.676869 4.740775 4.800552 4.85668 4.909561 5.315725 5.5921 5.966667 6.222702 6.41616 +12 1.917981 2.595645 3.005872 3.299861 3.528278 3.714552 3.871475 4.006806 4.125603 4.231343 4.326522 4.412988 4.492148 4.565096 4.632701 4.695665 4.754559 4.809858 4.861959 5.262152 5.534506 5.9037 6.156119 6.346875 +13 1.909431 2.581711 2.987972 3.278821 3.504650 3.688731 3.843759 3.977426 4.094742 4.199153 4.293127 4.378492 4.45664 4.528654 4.595391 4.657546 4.715682 4.770269 4.8217 5.216755 5.485643 5.850201 6.099497 6.287919 +14 1.90216 2.569864 2.972742 3.260906 3.484516 3.666713 3.82011 3.952342 4.068380 4.171642 4.264573 4.348985 4.426256 4.497459 4.563444 4.624895 4.682373 4.736342 4.787189 5.177769 5.443632 5.804138 6.050703 6.237084 +15 1.895903 2.559666 2.959626 3.245467 3.467154 3.647714 3.799691 3.930673 4.045596 4.147854 4.239872 4.32345 4.399954 4.470446 4.53577 4.596605 4.653505 4.706931 4.757265 5.143906 5.4071 5.764029 6.00818 6.192757 +16 1.89046 2.550797 2.948212 3.232024 3.452027 3.631152 3.781882 3.911763 4.025705 4.127077 4.218291 4.301132 4.376957 4.446821 4.511561 4.571849 4.628237 4.681181 4.731062 5.114203 5.375025 5.728765 5.970765 6.153733 +17 1.885683 2.543012 2.93819 3.220213 3.438729 3.616585 3.766210 3.895117 4.008187 4.108772 4.19927 4.281455 4.356676 4.42598 4.490198 4.549999 4.605930 4.658444 4.707919 5.08793 5.346623 5.697501 5.937567 6.119088 +18 1.881457 2.536125 2.929319 3.209754 3.426947 3.603672 3.752313 3.880348 3.992639 4.09252 4.182377 4.263975 4.338653 4.407454 4.471204 4.530568 4.586089 4.638215 4.687324 5.064516 5.321288 5.66958 5.907896 6.088107 +19 1.877691 2.529988 2.921412 3.200427 3.416435 3.592147 3.739903 3.867156 3.978745 4.077993 4.167272 4.24834 4.322529 4.390877 4.454204 4.513172 4.568321 4.620098 4.668877 5.043513 5.298541 5.644481 5.881205 6.060224 +20 1.874315 2.524485 2.914320 3.192058 3.407000 3.581797 3.728755 3.855300 3.966255 4.064929 4.153685 4.234272 4.308018 4.375954 4.438897 4.497506 4.552317 4.603776 4.652254 5.024562 5.277998 5.621789 5.857057 6.034984 +24 1.863701 2.507187 2.89201 3.165709 3.377268 3.549158 3.69357 3.817854 3.92678 4.023614 4.110690 4.189731 4.262048 4.328656 4.390359 4.447807 4.501527 4.551956 4.599461 4.964202 5.212441 5.549191 5.779675 5.954012 +30 1.853207 2.490080 2.869925 3.139592 3.347756 3.516716 3.658554 3.780544 3.887403 3.982357 4.067712 4.145167 4.216014 4.281252 4.341675 4.397921 4.450509 4.49987 4.546362 4.903188 5.145946 5.47522 5.700597 5.871091 +40 1.842829 2.473164 2.848060 3.113699 3.318456 3.484461 3.62369 3.743347 3.848096 3.941126 4.024712 4.100533 4.16986 4.233681 4.292775 4.34777 4.399178 4.447421 4.492854 4.841333 5.078248 5.399473 5.619306 5.785608 +60 1.832568 2.456435 2.826413 3.088026 3.289358 3.452379 3.588962 3.70624 3.808829 3.899882 3.981645 4.055774 4.123524 4.185868 4.243575 4.297261 4.34743 4.394499 4.438814 4.778404 5.009002 5.321406 5.535087 5.696698 +120 1.822478 2.439890 2.804980 3.062567 3.260456 3.420458 3.55435 3.669198 3.769570 3.858583 3.938458 4.010829 4.076934 4.137731 4.193979 4.246285 4.295145 4.340968 4.384094 4.714106 4.937761 5.24027 5.446912 5.603078 +1e38 1.812388 2.423529 2.783758 3.037317 3.231739 3.388684 3.519834 3.632192 3.73028 3.817183 3.895093 3.965627 4.030005 4.089173 4.143877 4.194716 4.242179 4.286668 4.328517 4.648069 4.863937 5.155024 5.353283 5.50281""" + +q0850 = """\ +2 3.226562 4.548022 5.398759 6.022701 6.512387 6.913502 7.251997 7.54401 7.800236 8.028116 8.233021 8.418953 8.588968 8.74545 8.890294 9.02503 9.150913 9.268977 9.380094 10.22972 10.80450 11.58094 12.11086 12.51097 +3 2.721399 3.731515 4.374509 4.845675 5.215912 5.5197 5.776502 5.998388 6.193356 6.366968 6.523249 6.665198 6.795111 6.914781 7.025634 7.128823 7.225292 7.315823 7.401073 8.054202 8.496827 9.094477 9.501702 9.808753 +4 2.514747 3.399285 3.956491 4.363675 4.68348 4.945965 5.16798 5.359938 5.52872 5.679113 5.814574 5.937683 6.050411 6.154302 6.25058 6.34024 6.424092 6.502812 6.576963 7.145835 7.532079 8.054293 8.410406 8.679063 +5 2.403262 3.220436 3.730867 4.102766 4.394545 4.633955 4.836465 5.011596 5.165628 5.302922 5.426626 5.539086 5.642096 5.737057 5.825086 5.907085 5.983793 6.055822 6.123687 6.644817 6.999123 7.478735 7.806159 8.05333 +6 2.333697 3.108965 3.589945 3.939419 4.213263 4.437836 4.627757 4.791998 4.936465 5.06525 5.181307 5.286833 5.38351 5.47265 5.555297 5.632296 5.704339 5.771998 5.835756 6.325681 6.659107 7.110867 7.419518 7.652631 +7 2.286206 3.032919 3.493643 3.827573 4.088914 4.303095 4.484169 4.640738 4.77845 4.901217 5.011858 5.112468 5.20465 5.289655 5.368478 5.441922 5.510646 5.575196 5.63603 6.103717 6.422253 6.85415 7.149428 7.372543 +8 2.251741 2.977758 3.423692 3.746199 3.998303 4.204778 4.379271 4.530117 4.662781 4.781044 4.887624 4.984545 5.073351 5.155248 5.231193 5.30196 5.368185 5.430392 5.489022 5.939926 6.24721 6.664096 6.949269 7.16483 +9 2.225598 2.935932 3.370588 3.684337 3.92933 4.12985 4.299243 4.445643 4.57438 4.68913 4.792542 4.88658 4.972745 5.052208 5.125899 5.194568 5.258832 5.319201 5.376101 5.81381 6.112237 6.517297 6.794508 7.004117 +10 2.205093 2.903132 3.328904 3.635722 3.875064 4.070838 4.236155 4.378996 4.504581 4.61651 4.717372 4.809088 4.893124 4.970624 5.042494 5.109469 5.172148 5.231029 5.28653 5.713546 6.004781 6.400234 6.670974 6.875744 +11 2.18858 2.876725 3.295316 3.596509 3.831250 4.023149 4.18513 4.325052 4.448048 4.557656 4.656418 4.74622 4.828499 4.904377 4.974743 5.040315 5.101683 5.159333 5.213674 5.631818 5.917077 6.304535 6.569888 6.770631 +12 2.174999 2.855009 3.267675 3.564211 3.795132 3.983803 4.143002 4.280484 4.401312 4.508975 4.605974 4.694168 4.77497 4.849483 4.918582 4.982973 5.043235 5.099847 5.153209 5.563854 5.84405 6.22473 6.485512 6.682838 +13 2.163633 2.836837 3.244531 3.537147 3.764842 3.950784 4.107624 4.243034 4.36202 4.468027 4.563524 4.650346 4.729887 4.803233 4.871249 4.93463 4.993946 5.049668 5.102191 5.5064 5.782244 6.157087 6.413931 6.608311 +14 2.153982 2.821408 3.224869 3.514139 3.739075 3.922677 4.077491 4.21112 4.328519 4.433097 4.527298 4.612934 4.691385 4.763723 4.830801 4.893306 4.951801 5.006752 5.058548 5.457164 5.729217 6.09897 6.352377 6.544185 +15 2.145684 2.808145 3.207959 3.494339 3.716887 3.898461 4.051515 4.183594 4.299611 4.402944 4.496014 4.580615 4.658112 4.729568 4.795825 4.857564 4.91534 4.969615 5.020773 5.414476 5.683193 6.048461 6.298836 6.488374 +16 2.138475 2.796621 3.193261 3.47712 3.697581 3.877377 4.028889 4.159607 4.274409 4.376647 4.468721 4.55241 4.629066 4.699743 4.765275 4.826337 4.883478 4.937154 4.987748 5.377097 5.642851 6.004129 6.251805 6.439321 +17 2.132153 2.786517 3.180367 3.462007 3.680628 3.858856 4.009003 4.138517 4.252242 4.353508 4.444698 4.527576 4.603485 4.673469 4.738356 4.798814 4.855389 4.908532 4.958622 5.344083 5.607184 5.964886 6.21014 6.395841 +18 2.126564 2.777584 3.168965 3.448637 3.665623 3.842455 3.991387 4.119827 4.232591 4.332989 4.423388 4.505541 4.58078 4.650143 4.714452 4.774369 4.830436 4.883101 4.932739 5.314701 5.575413 5.929888 6.172953 6.357013 +19 2.121587 2.769631 3.158810 3.436724 3.652248 3.82783 3.975673 4.103149 4.21505 4.314667 4.404354 4.485854 4.560491 4.629294 4.693081 4.752509 4.808118 4.860351 4.909581 5.288379 5.546924 5.898469 6.139544 6.322112 +20 2.117128 2.762505 3.149708 3.426043 3.640251 3.814707 3.961568 4.088173 4.199295 4.298206 4.387249 4.468158 4.542248 4.610545 4.673858 4.732844 4.788036 4.839877 4.888736 5.264656 5.521227 5.870097 6.109355 6.290558 +24 2.103128 2.740133 3.121118 3.392466 3.60251 3.773393 3.917129 4.040961 4.149593 4.246248 4.33323 4.412242 4.484578 4.551244 4.613036 4.670595 4.724445 4.775019 4.822681 5.189274 5.439419 5.779554 6.012859 6.189586 +30 2.089309 2.718054 3.092876 3.359261 3.56514 3.732436 3.873024 3.994053 4.10016 4.19452 4.2794 4.356475 4.427015 4.492009 4.552236 4.608325 4.660792 4.710058 4.756481 5.113372 5.356776 5.687685 5.914664 6.08662 +40 2.07567 2.696264 3.064978 3.326418 3.52813 3.691822 3.829233 3.947423 4.050965 4.142986 4.225718 4.300807 4.369502 4.432773 4.491385 4.545955 4.596987 4.644896 4.69003 5.036754 5.27302 5.594062 5.814221 5.981005 +60 2.062208 2.674759 3.037417 3.293931 3.491470 3.651535 3.785736 3.901046 4.001976 4.091607 4.172136 4.245183 4.311975 4.373463 4.430401 4.483391 4.532928 4.579419 4.623205 4.95919 5.187807 5.498134 5.710792 5.871841 +120 2.048920 2.653534 3.010189 3.261791 3.455148 3.611561 3.742514 3.854896 3.953159 4.040341 4.118605 4.189543 4.254363 4.314 4.369191 4.42053 4.4685 4.513501 4.555864 4.880396 5.100706 5.399172 5.60337 5.757859 +1e38 2.035805 2.632586 2.983286 3.229990 3.419154 3.571884 3.699544 3.808945 3.904479 3.989143 4.065068 4.133821 4.19659 4.254292 4.307653 4.357255 4.403572 4.446994 4.487848 4.800043 5.011193 5.296241 5.4906 5.637297""" + +q0900 = """\ +1 8.929 13.44 16.36 18.49 20.15 21.51 22.64 23.62 24.48 25.24 25.92 26.54 27.10 27.62 28.10 28.54 28.96 29.35 29.71 32.50 34.38 36.91 38.62 39.91 +2 4.129 5.733 6.773 7.538 8.139 8.633 9.049 9.409 9.725 10.01 10.26 10.49 10.70 10.89 11.07 11.24 11.39 11.54 11.68 12.73 13.44 14.40 15.04 15.54 +3 3.328 4.467 5.199 5.738 6.162 6.511 6.806 7.062 7.287 7.487 7.667 7.831 7.982 8.120 8.248 8.368 8.479 8.584 8.683 9.440 9.954 10.65 11.12 11.48 +4 3.015 3.976 4.586 5.035 5.388 5.679 5.926 6.139 6.327 6.494 6.645 6.783 6.909 7.025 7.132 7.233 7.326 7.414 7.497 8.135 8.569 9.156 9.558 9.861 +5 2.850 3.717 4.264 4.664 4.979 5.238 5.458 5.648 5.816 5.965 6.100 6.223 6.336 6.439 6.536 6.626 6.710 6.788 6.863 7.435 7.824 8.353 8.714 8.987 +6 2.748 3.558 4.065 4.435 4.726 4.966 5.168 5.344 5.499 5.637 5.762 5.875 5.979 6.075 6.164 6.247 6.325 6.398 6.466 6.996 7.358 7.848 8.184 8.438 +7 2.679 3.451 3.931 4.280 4.555 4.780 4.971 5.137 5.283 5.413 5.530 5.637 5.735 5.826 5.910 5.988 6.061 6.130 6.195 6.695 7.036 7.500 7.818 8.059 +8 2.630 3.374 3.834 4.169 4.431 4.646 4.829 4.987 5.126 5.250 5.362 5.464 5.558 5.644 5.724 5.799 5.869 5.935 5.997 6.475 6.801 7.245 7.550 7.780 +9 2.592 3.316 3.761 4.084 4.337 4.545 4.721 4.873 5.007 5.126 5.234 5.333 5.423 5.506 5.583 5.655 5.722 5.786 5.845 6.306 6.621 7.049 7.343 7.566 +10 2.563 3.270 3.704 4.018 4.264 4.465 4.636 4.783 4.913 5.029 5.134 5.229 5.316 5.397 5.472 5.542 5.607 5.668 5.726 6.173 6.478 6.894 7.180 7.396 +11 2.540 3.234 3.658 3.965 4.205 4.401 4.567 4.711 4.838 4.951 5.053 5.145 5.231 5.309 5.382 5.450 5.514 5.573 5.630 6.065 6.363 6.768 7.046 7.257 +12 2.521 3.204 3.621 3.921 4.156 4.349 4.511 4.652 4.776 4.886 4.986 5.076 5.160 5.236 5.308 5.374 5.436 5.495 5.550 5.975 6.267 6.663 6.936 7.142 +13 2.504 3.179 3.589 3.885 4.116 4.304 4.464 4.602 4.724 4.832 4.930 5.019 5.100 5.175 5.245 5.310 5.371 5.429 5.483 5.900 6.186 6.575 6.842 7.045 +14 2.491 3.158 3.563 3.854 4.081 4.267 4.424 4.560 4.679 4.786 4.882 4.969 5.050 5.124 5.192 5.256 5.316 5.372 5.426 5.836 6.116 6.499 6.762 6.961 +15 2.479 3.140 3.540 3.828 4.052 4.235 4.390 4.524 4.641 4.746 4.841 4.927 5.006 5.079 5.146 5.209 5.268 5.324 5.376 5.780 6.056 6.433 6.692 6.888 +16 2.469 3.124 3.520 3.804 4.026 4.207 4.360 4.492 4.608 4.712 4.805 4.890 4.968 5.040 5.106 5.169 5.227 5.282 5.333 5.731 6.004 6.376 6.631 6.825 +17 2.460 3.110 3.503 3.784 4.003 4.182 4.334 4.464 4.579 4.681 4.774 4.857 4.934 5.005 5.071 5.133 5.190 5.244 5.295 5.688 5.958 6.325 6.577 6.769 +18 2.452 3.098 3.487 3.766 3.984 4.161 4.310 4.440 4.553 4.654 4.746 4.829 4.905 4.975 5.040 5.101 5.158 5.211 5.262 5.650 5.917 6.280 6.529 6.718 +19 2.445 3.087 3.474 3.751 3.966 4.142 4.290 4.418 4.530 4.630 4.721 4.803 4.878 4.948 5.012 5.072 5.129 5.182 5.232 5.616 5.880 6.239 6.486 6.673 +20 2.439 3.077 3.462 3.736 3.950 4.124 4.271 4.398 4.510 4.609 4.699 4.780 4.855 4.923 4.987 5.047 5.103 5.155 5.205 5.586 5.847 6.202 6.447 6.633 +24 2.420 3.047 3.423 3.692 3.900 4.070 4.213 4.336 4.445 4.541 4.628 4.707 4.780 4.847 4.909 4.966 5.020 5.071 5.119 5.489 5.741 6.086 6.323 6.503 +30 2.400 3.017 3.386 3.648 3.851 4.016 4.155 4.275 4.381 4.474 4.559 4.635 4.706 4.770 4.830 4.886 4.939 4.988 5.034 5.391 5.636 5.969 6.198 6.372 +40 2.381 2.988 3.348 3.605 3.802 3.963 4.099 4.215 4.317 4.408 4.490 4.564 4.632 4.694 4.752 4.806 4.857 4.904 4.949 5.294 5.529 5.850 6.071 6.238 +60 2.363 2.959 3.312 3.562 3.755 3.911 4.042 4.155 4.254 4.342 4.421 4.493 4.558 4.619 4.675 4.727 4.775 4.821 4.864 5.196 5.422 5.730 5.941 6.101 +120 2.344 2.930 3.276 3.520 3.707 3.859 3.986 4.096 4.191 4.276 4.353 4.422 4.485 4.543 4.597 4.647 4.694 4.738 4.779 5.097 5.313 5.606 5.808 5.960 +1e38 2.326 2.902 3.240 3.478 3.661 3.808 3.931 4.037 4.129 4.211 4.285 4.351 4.412 4.468 4.519 4.568 4.612 4.654 4.694 4.997 5.202 5.480 5.669 5.812""" + +q0950 = """\ +1 17.97 26.98 32.82 37.08 40.41 43.12 45.40 47.36 49.07 50.59 51.96 53.20 54.33 55.36 56.32 57.22 58.04 58.83 59.56 65.15 68.92 73.97 77.40 79.98 +2 6.085 8.331 9.799 10.88 11.73 12.43 13.03 13.54 13.99 14.40 14.76 15.09 15.39 15.65 15.92 16.14 16.38 16.57 16.78 18.27 19.28 20.66 21.59 22.29 +3 4.501 5.910 6.825 7.502 8.037 8.478 8.852 9.177 9.462 9.717 9.946 10.15 10.35 10.52 10.69 10.84 10.98 11.11 11.24 12.21 12.86 13.76 14.36 14.82 +4 3.926 5.040 5.757 6.287 6.706 7.053 7.347 7.602 7.826 8.027 8.208 8.373 8.524 8.664 8.793 8.914 9.027 9.133 9.233 10.00 10.53 11.24 11.73 12.10 +5 3.635 4.602 5.218 5.673 6.033 6.330 6.582 6.801 6.995 7.167 7.323 7.466 7.596 7.716 7.828 7.932 8.030 8.122 8.208 8.875 9.330 9.949 10.37 10.69 +6 3.460 4.339 4.896 5.305 5.628 5.895 6.122 6.319 6.493 6.649 6.789 6.917 7.034 7.143 7.244 7.338 7.426 7.508 7.586 8.189 8.601 9.162 9.547 9.839 +7 3.344 4.165 4.681 5.060 5.359 5.606 5.815 5.997 6.158 6.302 6.431 6.550 6.658 6.759 6.852 6.939 7.020 7.097 7.169 7.727 8.110 8.631 8.989 9.260 +8 3.261 4.041 4.529 4.886 5.167 5.399 5.596 5.767 5.918 6.053 6.175 6.287 6.389 6.483 6.571 6.653 6.729 6.801 6.869 7.395 7.756 8.248 8.586 8.843 +9 3.199 3.948 4.415 4.755 5.024 5.244 5.432 5.595 5.738 5.867 5.983 6.089 6.186 6.276 6.359 6.437 6.510 6.579 6.643 7.144 7.488 7.958 8.281 8.526 +10 3.151 3.877 4.327 4.654 4.912 5.124 5.304 5.460 5.598 5.722 5.833 5.935 6.028 6.114 6.194 6.269 6.339 6.405 6.467 6.948 7.278 7.730 8.041 8.276 +11 3.113 3.820 4.256 4.574 4.823 5.028 5.202 5.353 5.486 5.605 5.713 5.811 5.901 5.984 6.062 6.134 6.202 6.265 6.325 6.790 7.109 7.546 7.847 8.075 +12 3.081 3.773 4.199 4.508 4.750 4.950 5.119 5.265 5.395 5.510 5.615 5.710 5.797 5.878 5.953 6.023 6.089 6.151 6.209 6.660 6.970 7.394 7.687 7.908 +13 3.055 3.734 4.151 4.453 4.690 4.884 5.049 5.192 5.318 5.431 5.533 5.625 5.711 5.789 5.862 5.931 5.995 6.055 6.112 6.551 6.853 7.267 7.552 7.769 +14 3.033 3.701 4.111 4.407 4.639 4.829 4.990 5.130 5.253 5.364 5.463 5.554 5.637 5.714 5.785 5.852 5.915 5.973 6.029 6.459 6.754 7.159 7.437 7.649 +15 3.014 3.673 4.076 4.367 4.595 4.782 4.940 5.077 5.198 5.306 5.403 5.492 5.574 5.649 5.719 5.785 5.846 5.904 5.958 6.379 6.669 7.065 7.338 7.546 +16 2.998 3.649 4.046 4.333 4.557 4.741 4.896 5.031 5.150 5.256 5.352 5.439 5.519 5.593 5.662 5.726 5.786 5.843 5.896 6.310 6.594 6.983 7.252 7.456 +17 2.984 3.628 4.020 4.303 4.524 4.705 4.858 4.991 5.108 5.212 5.306 5.392 5.471 5.544 5.612 5.675 5.734 5.790 5.842 6.249 6.529 6.912 7.176 7.377 +18 2.971 3.609 3.997 4.276 4.494 4.673 4.824 4.955 5.071 5.173 5.266 5.351 5.429 5.501 5.567 5.629 5.688 5.743 5.794 6.195 6.471 6.848 7.108 7.307 +19 2.960 3.593 3.977 4.253 4.468 4.645 4.794 4.924 5.037 5.139 5.231 5.314 5.391 5.462 5.528 5.589 5.647 5.701 5.752 6.147 6.419 6.791 7.048 7.244 +20 2.950 3.578 3.958 4.232 4.445 4.620 4.768 4.895 5.008 5.108 5.199 5.282 5.357 5.427 5.492 5.553 5.610 5.663 5.714 6.104 6.372 6.740 6.994 7.187 +24 2.919 3.532 3.901 4.166 4.373 4.541 4.684 4.807 4.915 5.012 5.099 5.179 5.251 5.319 5.381 5.439 5.494 5.545 5.594 5.968 6.226 6.578 6.822 7.007 +30 2.888 3.486 3.845 4.102 4.301 4.464 4.601 4.720 4.824 4.917 5.001 5.077 5.147 5.211 5.271 5.327 5.379 5.429 5.475 5.833 6.080 6.417 6.650 6.827 +40 2.858 3.442 3.791 4.039 4.232 4.388 4.521 4.634 4.735 4.824 4.904 4.977 5.044 5.106 5.163 5.216 5.266 5.313 5.358 5.700 5.934 6.255 6.477 6.645 +60 2.829 3.399 3.737 3.977 4.163 4.314 4.441 4.550 4.646 4.732 4.808 4.878 4.942 5.001 5.056 5.107 5.154 5.199 5.241 5.566 5.789 6.093 6.302 6.462 +120 2.800 3.356 3.685 3.917 4.096 4.241 4.363 4.468 4.560 4.641 4.714 4.781 4.842 4.898 4.950 4.998 5.043 5.086 5.126 5.434 5.644 5.929 6.126 6.275 +1e38 2.772 3.314 3.633 3.858 4.030 4.170 4.286 4.387 4.474 4.552 4.622 4.685 4.743 4.796 4.845 4.891 4.934 4.974 5.012 5.301 5.498 5.764 5.947 6.085""" + +q0975 = """\ +1 35.99 54.00 65.69 74.22 80.87 86.29 90.85 94.77 98.20 101.3 104.0 106.5 108.8 110.8 112.7 114.5 116.2 117.7 119.2 130.4 137.9 148.1 154.9 160.0 +2 8.776 11.94 14.02 15.54 16.75 17.74 18.58 19.31 19.95 20.52 21.03 21.49 21.91 22.30 22.67 23.01 23.32 23.62 23.89 26.03 27.47 29.42 30.74 31.74 +3 5.907 7.661 8.808 9.659 10.33 10.89 11.36 11.77 12.14 12.46 12.75 13.01 13.25 13.47 13.68 13.87 14.05 14.22 14.38 15.62 16.46 17.58 18.37 18.95 +4 4.943 6.244 7.088 7.715 8.213 8.625 8.975 9.279 9.548 9.788 10.00 10.20 10.38 10.55 10.71 10.85 10.99 11.11 11.23 12.16 12.78 13.65 14.23 14.68 +5 4.474 5.558 6.257 6.775 7.186 7.526 7.816 8.068 8.291 8.490 8.670 8.834 8.984 9.124 9.253 9.373 9.486 9.592 9.693 10.47 11.00 11.72 12.21 12.59 +6 4.198 5.158 5.772 6.226 6.586 6.884 7.138 7.359 7.554 7.729 7.887 8.031 8.163 8.285 8.399 8.505 8.605 8.698 8.787 9.469 9.937 10.57 11.01 11.34 +7 4.018 4.897 5.455 5.867 6.194 6.464 6.694 6.894 7.071 7.230 7.373 7.504 7.624 7.735 7.838 7.935 8.025 8.110 8.191 8.812 9.239 9.822 10.22 10.53 +8 3.891 4.714 5.233 5.616 5.919 6.169 6.382 6.567 6.731 6.878 7.011 7.132 7.244 7.347 7.442 7.532 7.616 7.694 7.769 8.346 8.743 9.286 9.660 9.944 +9 3.797 4.578 5.069 5.430 5.715 5.950 6.151 6.325 6.479 6.617 6.742 6.856 6.961 7.057 7.148 7.232 7.311 7.385 7.455 7.999 8.373 8.885 9.238 9.506 +10 3.725 4.474 4.943 5.286 5.558 5.782 5.972 6.138 6.284 6.415 6.534 6.642 6.742 6.834 6.920 7.000 7.075 7.145 7.212 7.729 8.085 8.574 8.910 9.166 +11 3.667 4.391 4.843 5.173 5.433 5.648 5.830 5.989 6.130 6.255 6.369 6.473 6.568 6.656 6.738 6.815 6.887 6.955 7.018 7.514 7.856 8.324 8.648 8.894 +12 3.620 4.324 4.761 5.080 5.332 5.539 5.715 5.868 6.004 6.125 6.235 6.335 6.426 6.511 6.591 6.664 6.734 6.799 6.860 7.338 7.668 8.120 8.433 8.670 +13 3.582 4.269 4.694 5.004 5.248 5.449 5.620 5.768 5.899 6.017 6.123 6.220 6.309 6.391 6.468 6.539 6.606 6.670 6.729 7.192 7.511 7.950 8.253 8.484 +14 3.549 4.222 4.638 4.940 5.178 5.373 5.540 5.684 5.812 5.926 6.029 6.123 6.210 6.290 6.364 6.434 6.499 6.560 6.618 7.068 7.379 7.806 8.100 8.325 +15 3.521 4.182 4.589 4.885 5.117 5.309 5.471 5.612 5.736 5.848 5.948 6.040 6.125 6.205 6.275 6.343 6.407 6.467 6.523 6.962 7.265 7.682 7.969 8.189 +16 3.497 4.148 4.548 4.838 5.065 5.253 5.412 5.550 5.671 5.780 5.879 5.969 6.051 6.128 6.199 6.265 6.327 6.386 6.441 6.870 7.167 7.574 7.856 8.070 +17 3.476 4.118 4.511 4.797 5.020 5.204 5.360 5.495 5.615 5.722 5.818 5.906 5.987 6.062 6.132 6.197 6.258 6.315 6.369 6.790 7.080 7.479 7.756 7.966 +18 3.458 4.091 4.479 4.760 4.980 5.161 5.315 5.448 5.565 5.670 5.765 5.851 5.931 6.004 6.073 6.137 6.196 6.253 6.306 6.719 7.004 7.396 7.667 7.874 +19 3.441 4.068 4.451 4.728 4.945 5.123 5.274 5.405 5.521 5.624 5.717 5.803 5.881 5.953 6.020 6.083 6.142 6.197 6.250 6.656 6.936 7.322 7.589 7.792 +20 3.427 4.047 4.426 4.699 4.914 5.089 5.238 5.367 5.481 5.583 5.675 5.759 5.836 5.907 5.974 6.035 6.093 6.148 6.199 6.599 6.876 7.255 7.518 7.718 +24 3.381 3.982 4.347 4.610 4.816 4.984 5.126 5.250 5.358 5.455 5.543 5.623 5.696 5.764 5.827 5.886 5.941 5.993 6.042 6.422 6.685 7.046 7.295 7.486 +30 3.337 3.919 4.271 4.523 4.720 4.881 5.017 5.134 5.238 5.330 5.414 5.490 5.560 5.624 5.684 5.740 5.792 5.841 5.888 6.248 6.497 6.838 7.075 7.255 +40 3.294 3.858 4.196 4.439 4.627 4.780 4.910 5.022 5.120 5.208 5.287 5.360 5.426 5.487 5.543 5.596 5.646 5.692 5.736 6.077 6.311 6.633 6.855 7.025 +60 3.251 3.798 4.124 4.356 4.536 4.682 4.806 4.912 5.006 5.089 5.164 5.232 5.295 5.352 5.406 5.456 5.502 5.546 5.588 5.908 6.127 6.428 6.636 6.795 +120 3.210 3.739 4.053 4.275 4.447 4.587 4.704 4.805 4.894 4.972 5.043 5.107 5.166 5.221 5.271 5.318 5.362 5.403 5.442 5.741 5.946 6.225 6.418 6.564 +1e38 3.170 3.682 3.984 4.197 4.361 4.494 4.605 4.700 4.784 4.858 4.925 4.985 5.041 5.092 5.139 5.183 5.224 5.262 5.299 5.577 5.766 6.023 6.199 6.333""" + +q0990 = """\ +1 90.02 135.0 164.3 185.6 202.2 215.8 227.2 237.0 245.6 253.2 260.0 266.2 271.8 277.0 281.8 286.3 290.4 294.3 298.0 326.0 344.8 370.1 387.3 400.1 +2 14.04 19.02 22.29 24.72 26.63 28.20 29.53 30.68 31.69 32.59 33.40 34.13 34.81 35.43 36.00 36.53 37.03 37.50 37.95 41.32 43.61 46.70 48.80 50.38 +3 8.260 10.62 12.17 13.32 14.24 15.00 15.65 16.21 16.69 17.13 17.53 17.89 18.22 18.52 18.81 19.07 19.32 19.55 19.77 21.44 22.59 24.13 25.19 25.99 +4 6.511 8.120 9.173 9.958 10.58 11.10 11.54 11.92 12.26 12.57 12.84 13.09 13.32 13.53 13.72 13.91 14.08 14.24 14.39 15.57 16.38 17.46 18.20 18.77 +5 5.702 6.976 7.804 8.421 8.913 9.321 9.669 9.971 10.24 10.48 10.70 10.89 11.08 11.24 11.40 11.55 11.68 11.81 11.93 12.87 13.51 14.39 14.99 15.45 +6 5.243 6.331 7.033 7.556 7.972 8.318 8.612 8.869 9.097 9.300 9.485 9.653 9.808 9.951 10.08 10.21 10.32 10.43 10.54 11.34 11.89 12.65 13.17 13.55 +7 4.949 5.919 6.542 7.005 7.373 7.678 7.939 8.166 8.367 8.548 8.711 8.860 8.997 9.124 9.242 9.353 9.456 9.553 9.645 10.36 10.85 11.52 11.98 12.34 +8 4.745 5.635 6.204 6.625 6.959 7.237 7.474 7.680 7.863 8.027 8.176 8.311 8.436 8.552 8.659 8.760 8.854 8.943 9.027 9.677 10.13 10.74 11.17 11.49 +9 4.596 5.428 5.957 6.347 6.657 6.915 7.134 7.325 7.494 7.646 7.784 7.910 8.025 8.132 8.232 8.325 8.412 8.495 8.573 9.177 9.594 10.17 10.56 10.86 +10 4.482 5.270 5.769 6.136 6.428 6.669 6.875 7.054 7.213 7.356 7.485 7.603 7.712 7.812 7.906 7.993 8.075 8.153 8.226 8.794 9.186 9.726 10.10 10.38 +11 4.392 5.146 5.621 5.970 6.247 6.476 6.671 6.841 6.992 7.127 7.250 7.362 7.464 7.560 7.648 7.731 7.809 7.883 7.952 8.491 8.864 9.377 9.732 10.00 +12 4.320 5.046 5.502 5.836 6.101 6.320 6.507 6.670 6.814 6.943 7.060 7.166 7.265 7.356 7.441 7.520 7.594 7.664 7.730 8.246 8.602 9.093 9.433 9.693 +13 4.260 4.964 5.404 5.726 5.981 6.192 6.372 6.528 6.666 6.791 6.903 7.006 7.100 7.188 7.269 7.345 7.417 7.484 7.548 8.043 8.386 8.859 9.186 9.436 +14 4.210 4.895 5.322 5.634 5.881 6.085 6.258 6.409 6.543 6.663 6.772 6.871 6.962 7.047 7.125 7.199 7.268 7.333 7.394 7.873 8.204 8.661 8.978 9.219 +15 4.167 4.836 5.252 5.556 5.796 5.994 6.162 6.309 6.438 6.555 6.660 6.756 6.845 6.927 7.003 7.074 7.141 7.204 7.264 7.727 8.049 8.492 8.800 9.034 +16 4.131 4.786 5.192 5.489 5.722 5.915 6.079 6.222 6.348 6.461 6.564 6.658 6.744 6.823 6.897 6.967 7.032 7.093 7.151 7.602 7.915 8.346 8.646 8.874 +17 4.099 4.742 5.140 5.430 5.659 5.847 6.007 6.147 6.270 6.380 6.480 6.572 6.656 6.733 6.806 6.873 6.937 6.997 7.053 7.493 7.798 8.219 8.511 8.734 +18 4.071 4.703 5.094 5.379 5.603 5.787 5.944 6.081 6.201 6.309 6.407 6.496 6.579 6.655 6.725 6.791 6.854 6.912 6.967 7.397 7.696 8.107 8.393 8.611 +19 4.046 4.669 5.054 5.334 5.553 5.735 5.889 6.022 6.141 6.246 6.342 6.430 6.510 6.585 6.654 6.719 6.780 6.837 6.891 7.312 7.605 8.008 8.288 8.501 +20 4.024 4.639 5.018 5.293 5.510 5.688 5.839 5.970 6.086 6.190 6.285 6.370 6.449 6.523 6.591 6.654 6.714 6.770 6.823 7.237 7.523 7.919 8.194 8.404 +24 3.955 4.546 4.907 5.168 5.373 5.542 5.685 5.809 5.919 6.017 6.105 6.186 6.261 6.330 6.394 6.453 6.510 6.562 6.612 7.001 7.270 7.641 7.900 8.097 +30 3.889 4.455 4.799 5.048 5.242 5.401 5.536 5.653 5.756 5.848 5.932 6.008 6.078 6.142 6.202 6.258 6.311 6.361 6.407 6.771 7.023 7.370 7.611 7.796 +40 3.825 4.367 4.695 4.931 5.114 5.265 5.392 5.502 5.599 5.685 5.764 5.835 5.900 5.961 6.017 6.069 6.118 6.165 6.208 6.547 6.781 7.104 7.328 7.499 +60 3.762 4.282 4.594 4.818 4.991 5.133 5.253 5.356 5.447 5.528 5.601 5.667 5.728 5.784 5.837 5.886 5.931 5.974 6.015 6.329 6.546 6.843 7.049 7.207 +120 3.702 4.200 4.497 4.708 4.872 5.005 5.118 5.214 5.299 5.375 5.443 5.505 5.561 5.614 5.662 5.708 5.750 5.790 5.827 6.117 6.316 6.588 6.776 6.919 +1e38 3.643 4.120 4.403 4.603 4.757 4.882 4.987 5.078 5.157 5.227 5.290 5.348 5.400 5.448 5.493 5.535 5.574 5.611 5.645 5.911 6.092 6.338 6.507 6.636""" + +q0995 = """\ +1 180.1 270.1 328.5 371.2 404.4 431.6 454.4 474.0 491.1 506.3 520.0 532.4 543.6 554.0 563.6 572.5 580.9 588.7 596.0 652.0 689.6 740.2 774.5 800.3 +2 19.92 26.97 31.60 35.02 37.73 39.95 41.83 43.46 44.89 46.16 47.31 48.35 49.30 50.17 50.99 51.74 52.45 53.12 53.74 58.52 61.76 66.13 69.10 71.35 +3 10.54 13.51 15.45 16.91 18.06 19.01 19.83 20.53 21.15 21.70 22.20 22.66 23.08 23.46 23.82 24.15 24.46 24.76 25.03 27.15 28.60 30.55 31.88 32.90 +4 7.916 9.813 11.06 11.99 12.74 13.35 13.88 14.33 14.74 15.10 15.42 15.72 15.99 16.24 16.47 16.70 16.90 17.09 17.28 18.68 19.63 20.93 21.83 22.50 +5 6.751 8.195 9.140 9.846 10.41 10.88 11.28 11.62 11.93 12.21 12.46 12.69 12.90 13.09 13.27 13.44 13.60 13.74 13.89 14.96 15.71 16.72 17.41 17.94 +6 6.105 7.306 8.087 8.670 9.135 9.522 9.852 10.14 10.39 10.62 10.83 11.02 11.19 11.35 11.50 11.64 11.78 11.90 12.02 12.92 13.54 14.40 14.98 15.43 +7 5.698 6.750 7.429 7.935 8.339 8.674 8.961 9.211 9.433 9.632 9.812 9.976 10.13 10.27 10.40 10.52 10.64 10.74 10.84 11.64 12.18 12.93 13.45 13.85 +8 5.420 6.370 6.981 7.435 7.796 8.097 8.354 8.578 8.777 8.955 9.117 9.265 9.401 9.527 9.644 9.754 9.856 9.953 10.04 10.76 11.25 11.92 12.39 12.75 +9 5.218 6.096 6.657 7.073 7.405 7.680 7.915 8.120 8.302 8.466 8.614 8.749 8.874 8.989 9.097 9.197 9.292 9.381 9.465 10.12 10.57 11.19 11.62 11.95 +10 5.065 5.888 6.412 6.800 7.109 7.365 7.584 7.775 7.944 8.096 8.233 8.359 8.475 8.583 8.683 8.777 8.864 8.947 9.025 9.635 10.06 10.64 11.04 11.35 +11 4.945 5.726 6.221 6.587 6.878 7.119 7.325 7.504 7.664 7.807 7.936 8.055 8.164 8.265 8.359 8.447 8.530 8.608 8.681 9.255 9.653 10.20 10.58 10.87 +12 4.849 5.596 6.068 6.416 6.693 6.922 7.117 7.288 7.439 7.574 7.697 7.810 7.913 8.009 8.099 8.182 8.261 8.335 8.405 8.950 9.328 9.850 10.21 10.49 +13 4.769 5.489 5.943 6.276 6.541 6.760 6.947 7.110 7.254 7.384 7.502 7.609 7.708 7.800 7.885 7.965 8.040 8.111 8.178 8.699 9.061 9.560 9.907 10.17 +14 4.703 5.401 5.838 6.160 6.414 6.625 6.805 6.962 7.101 7.225 7.338 7.442 7.537 7.625 7.707 7.784 7.856 7.924 7.988 8.489 8.837 9.317 9.651 9.906 +15 4.647 5.325 5.750 6.061 6.307 6.511 6.685 6.836 6.970 7.091 7.200 7.300 7.391 7.476 7.556 7.630 7.699 7.765 7.827 8.310 8.647 9.111 9.434 9.680 +16 4.599 5.261 5.674 5.976 6.216 6.413 6.582 6.729 6.859 6.975 7.081 7.178 7.267 7.349 7.426 7.498 7.565 7.629 7.689 8.157 8.483 8.933 9.246 9.486 +17 4.557 5.205 5.608 5.903 6.136 6.329 6.493 6.636 6.762 6.876 6.978 7.072 7.159 7.239 7.313 7.383 7.449 7.510 7.569 8.024 8.341 8.779 9.083 9.316 +18 4.521 5.156 5.550 5.839 6.067 6.255 6.415 6.554 6.677 6.788 6.888 6.980 7.064 7.142 7.215 7.283 7.347 7.407 7.464 7.908 8.216 8.643 8.940 9.167 +19 4.488 5.112 5.500 5.782 6.005 6.189 6.346 6.482 6.603 6.711 6.809 6.898 6.981 7.057 7.128 7.194 7.257 7.316 7.371 7.805 8.106 8.523 8.813 9.035 +20 4.460 5.074 5.455 5.732 5.951 6.131 6.285 6.418 6.536 6.642 6.738 6.826 6.906 6.981 7.051 7.116 7.177 7.234 7.289 7.713 8.008 8.416 8.700 8.917 +24 4.371 4.955 5.315 5.577 5.783 5.952 6.096 6.221 6.331 6.430 6.520 6.602 6.677 6.747 6.812 6.872 6.929 6.983 7.034 7.429 7.703 8.083 8.348 8.551 +30 4.285 4.841 5.181 5.428 5.621 5.779 5.914 6.031 6.134 6.226 6.310 6.386 6.456 6.521 6.581 6.638 6.691 6.740 6.787 7.154 7.409 7.760 8.005 8.193 +40 4.202 4.731 5.052 5.284 5.465 5.614 5.739 5.848 5.944 6.030 6.108 6.178 6.243 6.303 6.359 6.411 6.460 6.507 6.550 6.888 7.123 7.447 7.672 7.844 +60 4.122 4.625 4.928 5.146 5.316 5.454 5.571 5.673 5.762 5.841 5.913 5.979 6.039 6.094 6.146 6.194 6.239 6.281 6.321 6.632 6.846 7.142 7.347 7.504 +120 4.044 4.523 4.809 5.013 5.172 5.301 5.410 5.504 5.586 5.660 5.726 5.786 5.842 5.893 5.940 5.984 6.025 6.064 6.101 6.384 6.579 6.846 7.031 7.172 +1e38 3.970 4.424 4.694 4.886 5.033 5.154 5.255 5.341 5.418 5.485 5.546 5.602 5.652 5.699 5.742 5.783 5.820 5.856 5.889 6.146 6.322 6.561 6.725 6.850""" + +q0999 = """\ +1 900.3 1351. 1643. 1856. 2022. 2158. 2272. 2370. 2455. 2532. 2600. 2662. 2718. 2770. 2818. 2863. 2904. 2943. 2980. 3260. 3448. 3701. 3873. 4002. +2 44.69 60.42 70.77 78.43 84.49 89.46 93.67 97.30 100.5 103.3 105.9 108.2 110.4 112.3 114.2 115.9 117.4 118.9 120.3 131.0 138.3 148.0 154.7 159.7 +3 18.28 23.32 26.65 29.13 31.11 32.74 34.12 35.33 36.39 37.34 38.20 38.98 39.69 40.35 40.97 41.54 42.07 42.58 43.05 46.68 49.16 52.51 54.81 56.53 +4 12.18 14.98 16.84 18.23 19.34 20.26 21.04 21.73 22.33 22.87 23.36 23.81 24.21 24.59 24.94 25.27 25.58 25.87 26.14 28.24 29.68 31.65 32.98 34.00 +5 9.714 11.67 12.96 13.93 14.71 15.35 15.91 16.39 16.82 17.18 17.53 17.85 18.13 18.41 18.66 18.89 19.10 19.31 19.51 21.01 22.03 23.45 24.41 25.15 +6 8.427 9.960 10.97 11.72 12.32 12.82 13.25 13.63 13.96 14.26 14.53 14.78 15.00 15.21 15.41 15.59 15.78 15.94 16.09 17.28 18.10 19.22 20.00 20.58 +7 7.648 8.930 9.768 10.40 10.90 11.32 11.67 11.99 12.27 12.52 12.74 12.95 13.14 13.32 13.48 13.64 13.78 13.92 14.05 15.06 15.74 16.69 17.35 17.85 +8 7.129 8.250 8.977 9.522 9.958 10.32 10.63 10.90 11.15 11.36 11.56 11.74 11.91 12.06 12.20 12.34 12.46 12.58 12.69 13.57 14.17 15.01 15.59 16.02 +9 6.761 7.768 8.419 8.906 9.295 9.619 9.896 10.14 10.35 10.55 10.72 10.89 11.03 11.17 11.30 11.42 11.53 11.64 11.74 12.52 13.07 13.82 14.34 14.74 +10 6.487 7.411 8.006 8.449 8.804 9.099 9.352 9.573 9.769 9.946 10.11 10.25 10.39 10.51 10.63 10.74 10.84 10.94 11.03 11.75 12.25 12.94 13.42 13.79 +11 6.275 7.135 7.687 8.098 8.426 8.699 8.933 9.137 9.319 9.482 9.630 9.766 9.891 10.01 10.12 10.22 10.31 10.40 10.49 11.15 11.61 12.25 12.70 13.03 +12 6.106 6.917 7.435 7.820 8.127 8.382 8.601 8.792 8.962 9.115 9.253 9.380 9.497 9.606 9.707 9.802 9.891 9.975 10.05 10.68 11.11 11.71 12.12 12.44 +13 5.969 6.740 7.231 7.595 7.885 8.126 8.332 8.513 8.673 8.817 8.948 9.068 9.178 9.280 9.376 9.465 9.549 9.629 9.704 10.29 10.70 11.27 11.66 11.96 +14 5.855 6.593 7.062 7.409 7.685 7.914 8.110 8.282 8.434 8.571 8.695 8.809 8.914 9.011 9.102 9.187 9.267 9.342 9.414 9.972 10.36 10.90 11.28 11.57 +15 5.760 6.470 6.920 7.252 7.517 7.736 7.924 8.088 8.234 8.364 8.483 8.592 8.692 8.785 8.872 8.953 9.030 9.102 9.170 9.703 10.08 10.59 10.95 11.23 +16 5.678 6.365 6.799 7.119 7.374 7.585 7.765 7.923 8.063 8.189 8.303 8.407 8.504 8.593 8.676 8.754 8.828 8.897 8.962 9.475 9.832 10.33 10.68 10.94 +17 5.608 6.274 6.695 7.004 7.250 7.454 7.629 7.781 7.916 8.037 8.147 8.248 8.341 8.427 8.507 8.583 8.653 8.720 8.783 9.277 9.623 10.10 10.44 10.69 +18 5.546 6.195 6.604 6.905 7.143 7.341 7.510 7.657 7.788 7.905 8.012 8.109 8.199 8.283 8.361 8.433 8.502 8.566 8.627 9.106 9.440 9.904 10.23 10.48 +19 5.492 6.126 6.524 6.817 7.049 7.241 7.405 7.549 7.676 7.790 7.893 7.988 8.075 8.156 8.232 8.302 8.369 8.431 8.491 8.955 9.279 9.729 10.04 10.29 +20 5.444 6.065 6.454 6.740 6.966 7.153 7.313 7.453 7.576 7.687 7.788 7.880 7.965 8.044 8.118 8.186 8.251 8.312 8.370 8.821 9.136 9.575 9.881 10.12 +24 5.297 5.877 6.238 6.502 6.711 6.884 7.031 7.159 7.272 7.374 7.467 7.551 7.629 7.701 7.768 7.831 7.890 7.946 7.999 8.411 8.699 9.100 9.380 9.595 +30 5.156 5.698 6.033 6.277 6.469 6.628 6.763 6.880 6.984 7.077 7.161 7.239 7.310 7.375 7.437 7.494 7.548 7.598 7.646 8.021 8.283 8.646 8.901 9.096 +40 5.022 5.527 5.838 6.063 6.240 6.385 6.509 6.616 6.710 6.795 6.872 6.942 7.007 7.066 7.122 7.174 7.223 7.268 7.312 7.651 7.887 8.214 8.442 8.618 +60 4.893 5.365 5.653 5.860 6.022 6.155 6.268 6.365 6.451 6.528 6.598 6.661 6.720 6.773 6.824 6.870 6.914 6.956 6.995 7.299 7.510 7.802 8.005 8.161 +120 4.771 5.211 5.476 5.667 5.815 5.937 6.039 6.128 6.206 6.275 6.338 6.395 6.448 6.496 6.541 6.583 6.623 6.660 6.695 6.966 7.153 7.410 7.589 7.726 +1e38 4.654 5.063 5.309 5.484 5.619 5.730 5.823 5.903 5.973 6.036 6.092 6.144 6.191 6.234 6.274 6.312 6.347 6.380 6.411 6.651 6.816 7.041 7.196 7.314""" + +# Build the T+ 'matrix' +# T is a dict of dicts of lists +# Building them as OrderedDicts ensures that we can +# iterate over them in order + +# [alpha keys] [v keys] +# [table values as lists of floats] +T = OrderedDict([(0.100, OrderedDict([(float(L.split()[0]), + lmap(float, L.split()[1:])) for L in q0100.split('\n')])), + (0.500, OrderedDict([(float(L.split()[0]), + lmap(float, L.split()[1:])) for L in q0500.split('\n')])), + (0.675, OrderedDict([(float(L.split()[0]), + lmap(float, L.split()[1:])) for L in q0675.split('\n')])), + (0.750, OrderedDict([(float(L.split()[0]), + lmap(float, L.split()[1:])) for L in q0750.split('\n')])), + (0.800, OrderedDict([(float(L.split()[0]), + lmap(float, L.split()[1:])) for L in q0800.split('\n')])), + (0.850, OrderedDict([(float(L.split()[0]), + lmap(float, L.split()[1:])) for L in q0850.split('\n')])), + (0.900, OrderedDict([(float(L.split()[0]), + lmap(float, L.split()[1:])) for L in q0900.split('\n')])), + (0.950, OrderedDict([(float(L.split()[0]), + lmap(float, L.split()[1:])) for L in q0950.split('\n')])), + (0.975, OrderedDict([(float(L.split()[0]), + lmap(float, L.split()[1:])) for L in q0975.split('\n')])), + (0.990, OrderedDict([(float(L.split()[0]), + lmap(float, L.split()[1:])) for L in q0990.split('\n')])), + (0.995, OrderedDict([(float(L.split()[0]), + lmap(float, L.split()[1:])) for L in q0995.split('\n')])), + (0.999, OrderedDict([(float(L.split()[0]), + lmap(float, L.split()[1:])) for L in q0999.split('\n')]))]) + +# This dict maps r values to the correct list index +R = OrderedDict(zip([2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, + 17,18,19,20,30,40,60,80,100], lrange(24))) + +inf = np.inf +# we will need a tinv function +_tinv = lambda p, df : scipy.stats.t.isf(p, df) +_phi = lambda p : scipy.stats.norm.isf(p) + +# Now we can build the A 'matrix' + +# these are for the least squares fitting +def qhat(a, p, r, v): + + # eq. 2.3 + p_ = (1. + p) /2. + + f = a[0]*np.log(r-1.) + \ + a[1]*np.log(r-1.)**2 + \ + a[2]*np.log(r-1.)**3 + \ + a[3]*np.log(r-1.)**4 + + # eq. 2.7 and 2.8 corrections + for i, r_ in enumerate(r): + if r_ == 3: + f[i] += -0.002 / (1. + 12. * _phi(p)**2) + + if v <= 4.364: + f[i] += 1./517. - 1./(312.*v) + else: + f[i] += 1./(191.*v) + + return math.sqrt(2) * (f - 1.) * _tinv(p_, v) + +errfunc = lambda a, p, r, v, q: qhat(a, p, r, v) - q + +A = {} # this is the error matrix +for p in T: + for v in T[p]: + #eq. 2.4 + a0 = random(4) + a1, success = leastsq(errfunc, a0, + args=(p, np.array(list(iterkeys(R))), + v, np.array(T[p][v]))) + + if v == 1e38: + A[(p,inf)] = list(a1) + else: + A[(p,v)] = list(a1) + +raise Exception("we don't want to import this") +# uncomment the lines below to repr-ize A +##import pprint +##pprint.pprint(A, width=160) diff --git a/statsmodels/stats/libqsturng/qsturng_.py b/statsmodels/stats/libqsturng/qsturng_.py new file mode 100644 index 0000000..693a52a --- /dev/null +++ b/statsmodels/stats/libqsturng/qsturng_.py @@ -0,0 +1,902 @@ +# Copyright (c) 2011, Roger Lew [see LICENSE.txt] +# This software is funded in part by NIH Grant P20 RR016454. + +""" +Implementation of Gleason's (1999) non-iterative upper quantile +studentized range approximation. + +According to Gleason this method should be more accurate than the +AS190 FORTRAN algorithm of Lund and Lund (1983) and works from .5 +<= p <= .999 (The AS190 only works from .9 <= p <= .99). + +It is more efficient then the Copenhaver & Holland (1988) algorithm +(used by the _qtukey_ R function) although it requires storing the A +table in memory. (q distribution) approximations in Python. + +see: + Gleason, J. R. (1999). An accurate, non-iterative approximation + for studentized range quantiles. Computational Statistics & + Data Analysis, (31), 147-158. + + Gleason, J. R. (1998). A table of quantile points of the + Studentized range distribution. + http://www.stata.com/stb/stb46/dm64/sturng.pdf +""" +from __future__ import print_function +from statsmodels.compat.python import lrange, map +import math +import scipy.stats +import numpy as np + +from scipy.optimize import fminbound + +inf = np.inf + +__version__ = '0.2.3' + +# changelog +# 0.1 - initial release +# 0.1.1 - vectorized +# 0.2 - psturng added +# 0.2.1 - T, R generation script relegated to make_tbls.py +# 0.2.2 +# - select_points refactored for performance to select_ps and +# select_vs +# - pysturng tester added. +# 0.2.3 - uses np.inf and np.isinf + +# Gleason's table was derived using least square estimation on the tabled +# r values for combinations of p and v. In total there are 206 +# estimates over p-values of .5, .75, .9, .95, .975, .99, .995, +# and .999, and over v (degrees of freedom) of (1) - 20, 24, 30, 40, +# 60, 120, and inf. combinations with p < .95 don't have coefficients +# for v = 1. Hence the parentheses. These coefficients allow us to +# form f-hat. f-hat with the inverse t transform of tinv(p,v) yields +# a fairly accurate estimate of the studentized range distribution +# across a wide range of values. According to Gleason this method +# should be more accurate than algorithm AS190 of Lund and Lund (1983) +# and work across a wider range of values (The AS190 only works +# from .9 <= p <= .99). R's qtukey algorithm was used to add tables +# at .675, .8, and .85. These aid approximations when p < .9. +# +# The code that generated this table is called make_tbls.py and is +# located in version control. +A = {(0.1, 2.0): [-2.2485085243379075, -1.5641014278923464, 0.55942294426816752, -0.060006608853883377], + (0.1, 3.0): [-2.2061105943901564, -1.8415406600571855, 0.61880788039834955, -0.062217093661209831], + (0.1, 4.0): [-2.1686691786678178, -2.008196172372553, 0.65010084431947401, -0.06289005500114471], + (0.1, 5.0): [-2.145077200277393, -2.112454843879346, 0.66701240582821342, -0.062993502233654797], + (0.1, 6.0): [-2.0896098049743155, -2.2400004934286497, 0.70088523391700142, -0.065907568563272748], + (0.1, 7.0): [-2.0689296655661584, -2.3078445479584873, 0.71577374609418909, -0.067081034249350552], + (0.1, 8.0): [-2.0064956480711262, -2.437400413087452, 0.76297532367415266, -0.072805518121505458], + (0.1, 9.0): [-2.3269477513436061, -2.0469494712773089, 0.60662518717720593, -0.054887108437009016], + (0.1, 10.0): [-2.514024350177229, -1.8261187841127482, 0.51674358077906746, -0.044590425150963633], + (0.1, 11.0): [-2.5130181309130828, -1.8371718595995694, 0.51336701694862252, -0.043761825829092445], + (0.1, 12.0): [-2.5203508109278823, -1.8355687130611862, 0.5063486549107169, -0.042646205063108261], + (0.1, 13.0): [-2.5142536438310477, -1.8496969402776282, 0.50616991367764153, -0.042378379905665363], + (0.1, 14.0): [-2.3924634153781352, -2.013859173066078, 0.56421893251638688, -0.048716888109540266], + (0.1, 15.0): [-2.3573552940582574, -2.0576676976224362, 0.57424068771143233, -0.049367487649225841], + (0.1, 16.0): [-2.3046427483044871, -2.1295959138627993, 0.59778272657680553, -0.051864829216301617], + (0.1, 17.0): [-2.2230551072316125, -2.2472837435427127, 0.64255758243215211, -0.057186665209197643], + (0.1, 18.0): [-2.3912859179716897, -2.0350604070641269, 0.55924788749333332, -0.047729331835226464], + (0.1, 19.0): [-2.4169773092220623, -2.0048217969339146, 0.54493039319748915, -0.045991241346224065], + (0.1, 20.0): [-2.4264087194660751, -1.9916614057049267, 0.53583555139648154, -0.04463049934517662], + (0.1, 24.0): [-2.3969903132061869, -2.0252941869225345, 0.53428382141200137, -0.043116495567779786], + (0.1, 30.0): [-2.2509922780354623, -2.2309248956124894, 0.60748041324937263, -0.051427415888817322], + (0.1, 40.0): [-2.1310090183854946, -2.3908466074610564, 0.65844375382323217, -0.05676653804036895], + (0.1, 60.0): [-1.9240060179027036, -2.6685751031012233, 0.75678826647453024, -0.067938584352398995], + (0.1, 120.0): [-1.9814895487030182, -2.5962051736978373, 0.71793969041292693, -0.063126863201511618], + (0.1, inf): [-1.913410267066703, -2.6947367328724732, 0.74742335122750592, -0.06660897234304515], + (0.5, 2.0): [-0.88295935738770648, -0.1083576698911433, 0.035214966839394388, -0.0028576288978276461], + (0.5, 3.0): [-0.89085829205846834, -0.10255696422201063, 0.033613638666631696, -0.0027101699918520737], + (0.5, 4.0): [-0.89627345339338116, -0.099072524607668286, 0.032657774808907684, -0.0026219007698204916], + (0.5, 5.0): [-0.89959145511941052, -0.097272836582026817, 0.032236187675182958, -0.0025911555217019663], + (0.5, 6.0): [-0.89959428735702474, -0.098176292411106647, 0.032590766960226995, -0.0026319890073613164], + (0.5, 7.0): [-0.90131491102863937, -0.097135907620296544, 0.032304124993269533, -0.0026057965808244125], + (0.5, 8.0): [-0.90292500599432901, -0.096047500971337962, 0.032030946615574568, -0.0025848748659053891], + (0.5, 9.0): [-0.90385598607803697, -0.095390771554571888, 0.031832651111105899, -0.0025656060219315991], + (0.5, 10.0): [-0.90562524936125388, -0.093954488089771915, 0.031414451048323286, -0.0025257834705432031], + (0.5, 11.0): [-0.90420347371173826, -0.095851656370277288, 0.0321150356209743, -0.0026055056400093451], + (0.5, 12.0): [-0.90585973471757664, -0.094449306296728028, 0.031705945923210958, -0.0025673330195780191], + (0.5, 13.0): [-0.90555437067293054, -0.094792991050780248, 0.031826594964571089, -0.0025807109129488545], + (0.5, 14.0): [-0.90652756604388762, -0.093792156994564738, 0.031468966328889042, -0.0025395175361083741], + (0.5, 15.0): [-0.90642323700400085, -0.094173017520487984, 0.031657517378893905, -0.0025659271829033877], + (0.5, 16.0): [-0.90716338636685234, -0.093785178083820434, 0.031630091949657997, -0.0025701459247416637], + (0.5, 17.0): [-0.90790133816769714, -0.093001147638638884, 0.031376863944487084, -0.002545143621663892], + (0.5, 18.0): [-0.9077432927051563, -0.093343516378180599, 0.031518139662395313, -0.0025613906133277178], + (0.5, 19.0): [-0.90789499456490286, -0.09316964789456067, 0.031440782366342901, -0.0025498353345867453], + (0.5, 20.0): [-0.90842707861030725, -0.092696016476608592, 0.031296040311388329, -0.0025346963982742186], + (0.5, 24.0): [-0.9083281347135469, -0.092959308144970776, 0.031464063190077093, -0.0025611384271086285], + (0.5, 30.0): [-0.90857624050016828, -0.093043139391980514, 0.031578791729341332, -0.0025766595412777147], + (0.5, 40.0): [-0.91034085045438684, -0.091978035738914568, 0.031451631000052639, -0.0025791418103733297], + (0.5, 60.0): [-0.91084356681030032, -0.091452675572423425, 0.031333147984820044, -0.0025669786958144843], + (0.5, 120.0): [-0.90963649561463833, -0.093414563261352349, 0.032215602703677425, -0.0026704024780441257], + (0.5, inf): [-0.91077157500981665, -0.092899220350334571, 0.032230422399363315, -0.0026696941964372916], + (0.675, 2.0): [-0.67231521026565144, -0.097083624030663451, 0.027991378901661649, -0.0021425184069845558], + (0.675, 3.0): [-0.65661724764645824, -0.08147195494632696, 0.02345732427073333, -0.0017448570400999351], + (0.675, 4.0): [-0.65045677697461124, -0.071419073399450431, 0.020741962576852499, -0.0015171262565892491], + (0.675, 5.0): [-0.64718875357808325, -0.064720611425218344, 0.019053450246546449, -0.0013836232986228711], + (0.675, 6.0): [-0.64523003702018655, -0.059926313672731824, 0.017918997181483924, -0.0012992250285556828], + (0.675, 7.0): [-0.64403313148478836, -0.056248191513784476, 0.017091446791293721, -0.0012406558789511822], + (0.675, 8.0): [-0.64325095865764359, -0.053352543126426684, 0.016471879286491072, -0.0011991839050964099], + (0.675, 9.0): [-0.64271152754911653, -0.051023769620449078, 0.01599799600547195, -0.0011693637984597086], + (0.675, 10.0): [-0.64232244408502626, -0.049118327462884373, 0.015629704966568955, -0.0011477775513952285], + (0.675, 11.0): [-0.64203897854353564, -0.047524627960277892, 0.015334801262767227, -0.0011315057284007177], + (0.675, 12.0): [-0.64180344973512771, -0.046205907576003291, 0.015108290595438166, -0.0011207364514518488], + (0.675, 13.0): [-0.64162086456823342, -0.045076099336874231, 0.0149226565346125, -0.0011126140690497352], + (0.675, 14.0): [-0.64146906480198984, -0.044108523550512715, 0.014772954218646743, -0.0011069708562369386], + (0.675, 15.0): [-0.64133915151966603, -0.043273370927039825, 0.014651691599222836, -0.0011032216539514398], + (0.675, 16.0): [-0.64123237842752079, -0.042538925012463868, 0.014549992487506169, -0.0011005633864334021], + (0.675, 17.0): [-0.64113034037536609, -0.041905699463005854, 0.014470805560767184, -0.0010995286436738471], + (0.675, 18.0): [-0.64104137391561256, -0.041343885546229336, 0.014404563657113593, -0.0010991304223377683], + (0.675, 19.0): [-0.64096064882827297, -0.04084569291139839, 0.014350159655133801, -0.0010993656711121901], + (0.675, 20.0): [-0.64088647405089572, -0.040402175957178085, 0.014305769823654429, -0.0011001304776712105], + (0.675, 24.0): [-0.64063763965937837, -0.039034716348048545, 0.014196703837251648, -0.0011061961945598175], + (0.675, 30.0): [-0.64034987716294889, -0.037749651156941719, 0.014147040999127263, -0.0011188251352919833], + (0.675, 40.0): [-0.6399990514713938, -0.036583307574857803, 0.014172070700846548, -0.0011391004138624943], + (0.675, 60.0): [-0.63955586202430248, -0.035576938958184395, 0.014287299153378865, -0.0011675811805794236], + (0.675, 120.0): [-0.63899242674778622, -0.034763757512388853, 0.014500726912982405, -0.0012028491454427466], + (0.675, inf): [-0.63832682579247613, -0.034101476695520404, 0.014780921043580184, -0.0012366204114216408], + (0.75, 2.0): [-0.60684073638504454, -0.096375192078057031, 0.026567529471304554, -0.0019963228971914488], + (0.75, 3.0): [-0.57986144519102656, -0.078570292718034881, 0.021280637925009449, -0.0015329306898533772], + (0.75, 4.0): [-0.56820771686193594, -0.0668113563896649, 0.018065284051059189, -0.0012641485481533648], + (0.75, 5.0): [-0.56175292435740221, -0.058864526929603825, 0.016046735025708799, -0.0011052560286524044], + (0.75, 6.0): [-0.55773449282066356, -0.053136923269827351, 0.014684258167069347, -0.0010042826823561605], + (0.75, 7.0): [-0.55509524598867332, -0.048752649191139405, 0.013696566605823626, -0.00093482210003133898], + (0.75, 8.0): [-0.55324993686191515, -0.045305558708724644, 0.012959681992062138, -0.00088583541601696021], + (0.75, 9.0): [-0.55189259054026196, -0.042539819902381634, 0.012398791106424769, -0.00085083962241435827], + (0.75, 10.0): [-0.55085384656956893, -0.040281425755686585, 0.01196442242722482, -0.00082560322161492677], + (0.75, 11.0): [-0.55003198103541273, -0.038410176100193948, 0.011623294239447784, -0.00080732975034320073], + (0.75, 12.0): [-0.54936541596319177, -0.036838543267887103, 0.011351822637895701, -0.0007940703654926442], + (0.75, 13.0): [-0.54881015972753833, -0.035506710625568455, 0.011134691307865171, -0.0007846360016355809], + (0.75, 14.0): [-0.54834094346071949, -0.034364790609906569, 0.010958873929274728, -0.00077796645357008291], + (0.75, 15.0): [-0.54793602418304255, -0.033379237455748029, 0.010816140998057593, -0.00077344175064785099], + (0.75, 16.0): [-0.54758347689728037, -0.032520569145898917, 0.010699240399358219, -0.00077050847328596678], + (0.75, 17.0): [-0.54727115963795303, -0.031769277192927527, 0.010603749751170481, -0.0007688642392748113], + (0.75, 18.0): [-0.54699351808826535, -0.031105476267880995, 0.010524669113016114, -0.00076810656837464093], + (0.75, 19.0): [-0.54674357626419079, -0.030516967201954001, 0.010459478822937069, -0.00076808652582440037], + (0.75, 20.0): [-0.54651728378950126, -0.029992319199769232, 0.010405694998386575, -0.0007686417223966138], + (0.75, 24.0): [-0.54578309546828363, -0.028372628574010936, 0.010269939602271542, -0.00077427370647261838], + (0.75, 30.0): [-0.54501246434397554, -0.026834887880579802, 0.010195603314317611, -0.00078648615954105515], + (0.75, 40.0): [-0.54418127442022624, -0.025413224488871379, 0.010196455193836855, -0.00080610785749523739], + (0.75, 60.0): [-0.543265189207915, -0.024141961069146383, 0.010285001019536088, -0.00083332193364294587], + (0.75, 120.0): [-0.54224757817994806, -0.023039071833948214, 0.010463365295636302, -0.00086612828539477918], + (0.75, inf): [-0.54114579815367159, -0.02206592527426093, 0.01070374099737127, -0.00089726564005122183], + (0.8, 2.0): [-0.56895274046831146, -0.096326255190541957, 0.025815915364208686, -0.0019136561019354845], + (0.8, 3.0): [-0.5336038380862278, -0.077585191014876181, 0.020184759265389905, -0.0014242746007323785], + (0.8, 4.0): [-0.51780274285934258, -0.064987738443608709, 0.016713309796866204, -0.001135379856633562], + (0.8, 5.0): [-0.50894361222268403, -0.056379186603362705, 0.014511270339773345, -0.00096225604117493205], + (0.8, 6.0): [-0.50335153028630408, -0.050168860294790812, 0.01302807093593626, -0.00085269812692536306], + (0.8, 7.0): [-0.49960934380896432, -0.045417333787806033, 0.011955593330247398, -0.00077759605604250882], + (0.8, 8.0): [-0.49694518248979763, -0.041689151516021969, 0.011158986677273709, -0.00072497430103953366], + (0.8, 9.0): [-0.4949559974898507, -0.038702217132906024, 0.010554360004521268, -0.0006875213117164109], + (0.8, 10.0): [-0.49341407910162483, -0.036266788741325398, 0.010087354421936092, -0.00066060835062865602], + (0.8, 11.0): [-0.49218129312493897, -0.034252403643273498, 0.0097218584838579536, -0.00064123459335201907], + (0.8, 12.0): [-0.49117223957112183, -0.032563269730499021, 0.0094318583096021404, -0.00062725253852419032], + (0.8, 13.0): [-0.49032781145131277, -0.031132495018324432, 0.0091999762562792898, -0.0006172944366003854], + (0.8, 14.0): [-0.48961049628464259, -0.029906921170494854, 0.009012451847823854, -0.00061026211968669543], + (0.8, 15.0): [-0.48899069793054922, -0.028849609914548158, 0.0088602820002619594, -0.00060548991575179055], + (0.8, 16.0): [-0.48844921216636505, -0.027929790075266154, 0.00873599263877896, -0.00060242119796859379], + (0.8, 17.0): [-0.48797119683309537, -0.027123634910159868, 0.0086338139869481887, -0.00060061821593399998], + (0.8, 18.0): [-0.48754596864745836, -0.026411968723496961, 0.0085493196604705755, -0.00059977083160833624], + (0.8, 19.0): [-0.48716341805691843, -0.025781422230819986, 0.0084796655915025769, -0.00059970031758323466], + (0.8, 20.0): [-0.48681739197185547, -0.025219629852198749, 0.0084221844254287765, -0.00060023212822886711], + (0.8, 24.0): [-0.48570639629281365, -0.023480608772518948, 0.008274490561114187, -0.000605681105792215], + (0.8, 30.0): [-0.48455867067770253, -0.021824655071720423, 0.0081888502974720567, -0.00061762126933785633], + (0.8, 40.0): [-0.48335478729267423, -0.020279958998363389, 0.0081765095914194709, -0.00063657117129829635], + (0.8, 60.0): [-0.48207351944996679, -0.018875344346672228, 0.0082473997191472338, -0.00066242478479277243], + (0.8, 120.0): [-0.48070356185330182, -0.017621686995755746, 0.0084009638803223801, -0.00069300383808949318], + (0.8, inf): [-0.47926687718713606, -0.016476575352367202, 0.0086097059646591811, -0.00072160843492730911], + (0.85, 2.0): [-0.53366806986381743, -0.098288178252723263, 0.026002333446289064, -0.0019567144268844896], + (0.85, 3.0): [-0.48995919239619989, -0.077312722648418056, 0.019368984865418108, -0.0013449670192265796], + (0.85, 4.0): [-0.46956079162382858, -0.063818518513946695, 0.015581608910696544, -0.0010264315084377606], + (0.85, 5.0): [-0.45790853796153624, -0.054680511194530226, 0.013229852432203093, -0.00084248430847535898], + (0.85, 6.0): [-0.4505070841695738, -0.048050936682873302, 0.011636407582714191, -0.00072491480033529815], + (0.85, 7.0): [-0.44548337477336181, -0.042996612516383016, 0.010493052959891263, -0.00064528784792153239], + (0.85, 8.0): [-0.44186624932664148, -0.039040005821657585, 0.0096479530794160544, -0.00058990874360967567], + (0.85, 9.0): [-0.43914118689812259, -0.035875693030752713, 0.0090088804130628187, -0.00055071480339399694], + (0.85, 10.0): [-0.43701255390953769, -0.033300997407157376, 0.0085172159355344848, -0.00052272770799695464], + (0.85, 11.0): [-0.43530109064899053, -0.031174742038490313, 0.0081335619868386066, -0.00050268353809787927], + (0.85, 12.0): [-0.43389220376610071, -0.02939618314990838, 0.007830626267772851, -0.00048836431712678222], + (0.85, 13.0): [-0.43271026958463166, -0.027890759135246888, 0.0075886916668632936, -0.00047819339710596971], + (0.85, 14.0): [-0.43170230265007209, -0.026604156062396189, 0.0073939099688705547, -0.00047109996854335419], + (0.85, 15.0): [-0.43083160459377423, -0.025494228911600785, 0.0072358738657550868, -0.00046630677052262481], + (0.85, 16.0): [-0.4300699280587239, -0.024529612608808794, 0.0071069227026219683, -0.00046323869860941791], + (0.85, 17.0): [-0.42939734931902857, -0.023685025616054269, 0.0070011541609695891, -0.00046147954942994158], + (0.85, 18.0): [-0.42879829041505324, -0.022940655682782165, 0.006914006369119409, -0.00046070877994711774], + (0.85, 19.0): [-0.42826119448419875, -0.022280181781634649, 0.0068417746905826433, -0.00046066841214091982], + (0.85, 20.0): [-0.42777654887094479, -0.021690909076747832, 0.0067817408643717969, -0.00046118620289068032], + (0.85, 24.0): [-0.42622450033640852, -0.019869646711890065, 0.0066276799593494029, -0.00046668820637553747], + (0.85, 30.0): [-0.42463810443233418, -0.018130114737381745, 0.0065344613060499164, -0.00047835583417510423], + (0.85, 40.0): [-0.42299917804589382, -0.016498222901308417, 0.0065120558343578407, -0.00049656043685325469], + (0.85, 60.0): [-0.42129387265810464, -0.014992121475265813, 0.0065657795990087635, -0.00052069705640687698], + (0.85, 120.0): [-0.41951580476366368, -0.013615722489371183, 0.0066923911275726814, -0.00054846911649167492], + (0.85, inf): [-0.41768751825428968, -0.012327525092266726, 0.0068664920569562592, -0.00057403720261753539], + (0.9, 1.0): [-0.65851063279096722, -0.126716242078905, 0.036318801917603061, -0.002901283222928193], + (0.9, 2.0): [-0.50391945369829139, -0.096996108021146235, 0.024726437623473398, -0.0017901399938303017], + (0.9, 3.0): [-0.44799791843058734, -0.077180370333307199, 0.018584042055594469, -0.0012647038118363408], + (0.9, 4.0): [-0.42164091756145167, -0.063427071006287514, 0.014732203755741392, -0.00094904174117957688], + (0.9, 5.0): [-0.40686856251221754, -0.053361940054842398, 0.012041802076025801, -0.00072960198292410612], + (0.9, 6.0): [-0.39669926026535285, -0.046951517438004242, 0.010546647213094956, -0.00062621198002366064], + (0.9, 7.0): [-0.39006553675807426, -0.04169480606532109, 0.0093687546601737195, -0.00054648695713273862], + (0.9, 8.0): [-0.38570205067061908, -0.037083910859179794, 0.0083233218526375836, -0.00047177586974035451], + (0.9, 9.0): [-0.38190737267892938, -0.034004585655388865, 0.0077531991574119183, -0.00044306547308527872], + (0.9, 10.0): [-0.37893272918125737, -0.031394677600916979, 0.0072596802503533536, -0.0004160518834299966], + (0.9, 11.0): [-0.37692512492705132, -0.028780793403136471, 0.0066937909049060379, -0.00037420010136784526], + (0.9, 12.0): [-0.37506345200129187, -0.026956483290567372, 0.0064147730707776523, -0.00036595383207062906], + (0.9, 13.0): [-0.37339516122383209, -0.02543949524844704, 0.0061760656530197187, -0.00035678737379179527], + (0.9, 14.0): [-0.37216979891087842, -0.02396347606956644, 0.0059263234465969641, -0.0003439784452550796], + (0.9, 15.0): [-0.371209456600122, -0.022696132732654414, 0.0057521677184623147, -0.00033961108561770848], + (0.9, 16.0): [-0.36958924377983338, -0.022227885445863002, 0.0057691706799383926, -0.00035042762538099682], + (0.9, 17.0): [-0.36884224719083203, -0.021146977888668726, 0.0055957928269732716, -0.00034283810412697531], + (0.9, 18.0): [-0.36803087186793326, -0.020337731477576542, 0.0054655378095212759, -0.00033452966946535248], + (0.9, 19.0): [-0.3676700404163355, -0.019370115848857467, 0.0053249296207149655, -0.00032975528909580403], + (0.9, 20.0): [-0.36642276267188811, -0.019344251412284838, 0.0054454968582897528, -0.00034868111677540948], + (0.9, 24.0): [-0.36450650753755193, -0.017284255499990679, 0.0052337500059176749, -0.00034898202845747288], + (0.9, 30.0): [-0.36251868940168608, -0.015358560437631397, 0.0050914299956134786, -0.00035574528891633978], + (0.9, 40.0): [-0.36008886676510943, -0.014016835682905486, 0.0051930835959111514, -0.00038798316011984165], + (0.9, 60.0): [-0.35825590690268061, -0.011991568926537646, 0.0050632208542414191, -0.00039090198974493085], + (0.9, 120.0): [-0.35543612237284411, -0.011074403997811812, 0.0053504570752765162, -0.00043647137428074178], + (0.9, inf): [-0.35311806343057167, -0.0096254020092145353, 0.0054548591208177181, -0.00045343916634968493], + (0.95, 1.0): [-0.65330318136020071, -0.12638310760474375, 0.035987535130769424, -0.0028562665467665315], + (0.95, 2.0): [-0.47225160417826934, -0.10182570362271424, 0.025846563499059158, -0.0019096769058043243], + (0.95, 3.0): [-0.4056635555586528, -0.077067172693350297, 0.017789909647225533, -0.001182961668735774], + (0.95, 4.0): [-0.37041675177340955, -0.063815687118939465, 0.014115210247737845, -0.00089996098435117598], + (0.95, 5.0): [-0.35152398291152309, -0.052156502640669317, 0.010753738086401853, -0.0005986841939451575], + (0.95, 6.0): [-0.33806730015201264, -0.045668399809578597, 0.0093168898952878162, -0.00051369719615782102], + (0.95, 7.0): [-0.32924041072104465, -0.040019601775490091, 0.0080051199552865163, -0.00042054536135868043], + (0.95, 8.0): [-0.32289030266989077, -0.035575345931670443, 0.0070509089344694669, -0.00035980773304803576], + (0.95, 9.0): [-0.31767304201477375, -0.032464945930165703, 0.0064755950437272143, -0.0003316676253661824], + (0.95, 10.0): [-0.31424318064708656, -0.029133461621153, 0.0057437449431074795, -0.00027894252261209191], + (0.95, 11.0): [-0.31113589620384974, -0.02685115250591049, 0.0053517905282942889, -0.00026155954116874666], + (0.95, 12.0): [-0.30848983612414582, -0.025043238019239168, 0.0050661675913488829, -0.00025017202909614005], + (0.95, 13.0): [-0.3059212907410393, -0.023863874699213077, 0.0049618051135807322, -0.00025665425781125703], + (0.95, 14.0): [-0.30449676902720035, -0.021983976741572344, 0.0045740513735751968, -0.00022881166323945914], + (0.95, 15.0): [-0.30264908294481396, -0.02104880307520084, 0.0044866571614804382, -0.00023187587597844057], + (0.95, 16.0): [-0.30118294463097917, -0.020160231061926728, 0.0044170780759056859, -0.00023733502359045826], + (0.95, 17.0): [-0.30020013353427744, -0.018959271614471574, 0.0041925333038202285, -0.00022274025630789767], + (0.95, 18.0): [-0.29857886556874402, -0.018664437456802001, 0.0042557787632833697, -0.00023758868868853716], + (0.95, 19.0): [-0.29796289236978263, -0.017632218552317589, 0.0040792779937959866, -0.00022753271474613109], + (0.95, 20.0): [-0.29681506554838077, -0.017302563243037392, 0.0041188426221428964, -0.00023913038468772782], + (0.95, 24.0): [-0.29403146911167666, -0.015332330986025032, 0.0039292170319163728, -0.00024003445648641732], + (0.95, 30.0): [-0.29080775563775879, -0.013844059210779323, 0.0039279165616059892, -0.00026085104496801666], + (0.95, 40.0): [-0.28821583032805109, -0.011894686715666892, 0.0038202623278839982, -0.00026933325102031252], + (0.95, 60.0): [-0.28525636737751447, -0.010235910558409797, 0.0038147029777580001, -0.00028598362144178959], + (0.95, 120.0): [-0.28241065885026539, -0.0086103836327305026, 0.0038450612886908714, -0.00030206053671559411], + (0.95, inf): [-0.27885570064169296, -0.0078122455524849222, 0.0041798538053623453, -0.0003469494881774609], + (0.975, 1.0): [-0.65203598304297983, -0.12608944279227957, 0.035710038757117347, -0.0028116024425349053], + (0.975, 2.0): [-0.46371891130382281, -0.096954458319996509, 0.023958312519912289, -0.0017124565391080503], + (0.975, 3.0): [-0.38265282195259875, -0.076782539231612282, 0.017405078796142955, -0.0011610853687902553], + (0.975, 4.0): [-0.34051193158878401, -0.063652342734671602, 0.013528310336964293, -0.00083644708934990761], + (0.975, 5.0): [-0.31777655705536484, -0.051694686914334619, 0.010115807205265859, -0.00054517465344192009], + (0.975, 6.0): [-0.30177149019958716, -0.044806697631189059, 0.008483551848413786, -0.00042827853925009264], + (0.975, 7.0): [-0.29046972313293562, -0.039732822689098744, 0.007435356037378946, -0.00037562928283350671], + (0.975, 8.0): [-0.28309484007368141, -0.034764904940713388, 0.0062932513694928518, -0.00029339243611357956], + (0.975, 9.0): [-0.27711707948119785, -0.031210465194810709, 0.0055576244284178435, -0.00024663798208895803], + (0.975, 10.0): [-0.27249203448553611, -0.028259756468251584, 0.00499112012528406, -0.00021535380417035389], + (0.975, 11.0): [-0.26848515860011007, -0.026146703336893323, 0.0046557767110634073, -0.00020400628148271448], + (0.975, 12.0): [-0.26499921540008192, -0.024522931106167097, 0.0044259624958665278, -0.00019855685376441687], + (0.975, 13.0): [-0.2625023751891592, -0.022785875653297854, 0.004150277321193792, -0.00018801223218078264], + (0.975, 14.0): [-0.26038552414321758, -0.021303509859738341, 0.0039195608280464681, -0.00017826200169385824], + (0.975, 15.0): [-0.25801244886414665, -0.020505508012402567, 0.0038754868932712929, -0.00018588907991739744], + (0.975, 16.0): [-0.25685316062360508, -0.018888418269740373, 0.0035453092842317293, -0.00016235770674204116], + (0.975, 17.0): [-0.25501132271353549, -0.018362951972357794, 0.0035653933105288631, -0.00017470353354992729], + (0.975, 18.0): [-0.25325045404452656, -0.017993537285026156, 0.0036035867405376691, -0.00018635492166426884], + (0.975, 19.0): [-0.25236899494677928, -0.016948921372207198, 0.0034138931781330802, -0.00017462253414687881], + (0.975, 20.0): [-0.25134498025027691, -0.016249564498874988, 0.0033197284005334333, -0.00017098091103245596], + (0.975, 24.0): [-0.24768690797476625, -0.014668160763513996, 0.0032850791186852558, -0.00019013480716844995], + (0.975, 30.0): [-0.24420834707522676, -0.012911171716272752, 0.0031977676700968051, -0.00020114907914487053], + (0.975, 40.0): [-0.24105725356215926, -0.010836526056169627, 0.0030231303550754159, -0.00020128696343148667], + (0.975, 60.0): [-0.23732082703955223, -0.0095442727157385391, 0.0031432904473555259, -0.00023062224109383941], + (0.975, 120.0): [-0.23358581879594578, -0.0081281259918709343, 0.0031877298679120094, -0.00024496230446851501], + (0.975, inf): [-0.23004105093119268, -0.0067112585174133573, 0.0032760251638919435, -0.00026244001319462992], + (0.99, 1.0): [-0.65154119422706203, -0.1266603927572312, 0.03607480609672048, -0.0028668112687608113], + (0.99, 2.0): [-0.45463403324378804, -0.098701236234527367, 0.024412715761684689, -0.0017613772919362193], + (0.99, 3.0): [-0.36402060051035778, -0.079244959193729148, 0.017838124021360584, -0.00119080116484847], + (0.99, 4.0): [-0.31903506063953818, -0.061060740682445241, 0.012093154962939612, -0.00067268347188443093], + (0.99, 5.0): [-0.28917014580689182, -0.052940780099313689, 0.010231009146279354, -0.00057178339184615239], + (0.99, 6.0): [-0.27283240161179012, -0.042505435573209085, 0.0072753401118264534, -0.00031314034710725922], + (0.99, 7.0): [-0.25773968720546719, -0.039384214480463406, 0.0069120882597286867, -0.00032994068754356204], + (0.99, 8.0): [-0.24913629282433833, -0.033831567178432859, 0.0055516244725724185, -0.00022570786249671376], + (0.99, 9.0): [-0.24252380896373404, -0.029488280751457097, 0.0045215453527922998, -0.00014424552929022646], + (0.99, 10.0): [-0.23654349556639986, -0.02705600214566789, 0.0041627255469343632, -0.00013804427029504753], + (0.99, 11.0): [-0.23187404969432468, -0.024803662094970855, 0.0037885852786822475, -0.00012334999287725012], + (0.99, 12.0): [-0.22749929386320905, -0.023655085290534145, 0.0037845051889055896, -0.00014785715789924055], + (0.99, 13.0): [-0.22458989143485605, -0.021688394892771506, 0.0034075294601425251, -0.00012436961982044268], + (0.99, 14.0): [-0.22197623872225777, -0.020188830700102918, 0.0031648685865587473, -0.00011320740119998819], + (0.99, 15.0): [-0.2193924323730066, -0.019327469111698265, 0.0031295453754886576, -0.00012373072900083014], + (0.99, 16.0): [-0.21739436875855705, -0.018215854969324128, 0.0029638341057222645, -0.00011714667871412003], + (0.99, 17.0): [-0.21548926805467686, -0.017447822179412719, 0.0028994805120482812, -0.00012001887015183794], + (0.99, 18.0): [-0.21365014687077843, -0.01688869353338961, 0.0028778031289216546, -0.00012591199104792711], + (0.99, 19.0): [-0.21236653761262406, -0.016057151563612645, 0.0027571468998022017, -0.00012049196593780046], + (0.99, 20.0): [-0.21092693178421842, -0.015641706950956638, 0.0027765989877361293, -0.00013084915163086915], + (0.99, 24.0): [-0.20681960327410207, -0.013804298040271909, 0.0026308276736585674, -0.0001355061502101814], + (0.99, 30.0): [-0.20271691131071576, -0.01206095288359876, 0.0025426138004198909, -0.00014589047959047533], + (0.99, 40.0): [-0.19833098054449289, -0.010714533963740719, 0.0025985992420317597, -0.0001688279944262007], + (0.99, 60.0): [-0.19406768821236584, -0.0093297106482013985, 0.0026521518387539584, -0.00018884874193665104], + (0.99, 120.0): [-0.19010213174677365, -0.0075958207221300924, 0.0025660823297025633, -0.00018906475172834352], + (0.99, inf): [-0.18602070255787137, -0.0062121155165363188, 0.0026328293420766593, -0.00020453366529867131], + (0.995, 1.0): [-0.65135583544951825, -0.1266868999507193, 0.036067522182457165, -0.0028654516958844922], + (0.995, 2.0): [-0.45229774013072793, -0.09869462954369547, 0.024381858599368908, -0.0017594734553033394], + (0.995, 3.0): [-0.35935765236429706, -0.076650408326671915, 0.016823026893528978, -0.0010835134496404637], + (0.995, 4.0): [-0.30704474720931169, -0.063093047731613019, 0.012771683306774929, -0.00075852491621809955], + (0.995, 5.0): [-0.27582551740863454, -0.052533353137885791, 0.0097776009845174372, -0.00051338031756399129], + (0.995, 6.0): [-0.25657971464398704, -0.043424914996692286, 0.0074324147435969991, -0.00034105188850494067], + (0.995, 7.0): [-0.24090407819707738, -0.039591604712200287, 0.0068848429451020387, -0.00034737131709273414], + (0.995, 8.0): [-0.23089540800827862, -0.034353305816361958, 0.0056009527629820111, -0.00024389336976992433], + (0.995, 9.0): [-0.22322694848310584, -0.030294770709722547, 0.0046751239747245543, -0.00017437479314218922], + (0.995, 10.0): [-0.21722684126671632, -0.026993563560163809, 0.0039811592710905491, -0.00013135281785826703], + (0.995, 11.0): [-0.21171635822852911, -0.025156193618212551, 0.0037507759652964205, -0.00012959836685175671], + (0.995, 12.0): [-0.20745332165849167, -0.023318819535607219, 0.0034935020002058903, -0.00012642826898405916], + (0.995, 13.0): [-0.20426054591612508, -0.021189796175249527, 0.003031472176128759, -9.0497733877531618e-05], + (0.995, 14.0): [-0.20113536905578902, -0.020011536696623061, 0.0029215880889956729, -9.571527213951222e-05], + (0.995, 15.0): [-0.19855601561006403, -0.018808533734002542, 0.0027608859956002344, -9.2472995256929217e-05], + (0.995, 16.0): [-0.19619157579534008, -0.017970461530551096, 0.0027113719105000371, -9.9864874982890861e-05], + (0.995, 17.0): [-0.19428015140726104, -0.017009762497670704, 0.0025833389598201345, -9.6137545738061124e-05], + (0.995, 18.0): [-0.19243180236773033, -0.01631617252107519, 0.0025227443561618621, -9.8067580523432881e-05], + (0.995, 19.0): [-0.19061294393069844, -0.01586226613672222, 0.0025207005902641781, -0.00010466151274918466], + (0.995, 20.0): [-0.18946302696580328, -0.014975796567260896, 0.0023700506576419867, -9.5507779057884629e-05], + (0.995, 24.0): [-0.18444251428695257, -0.013770955893918012, 0.0024579445553339903, -0.00012688402863358003], + (0.995, 30.0): [-0.18009742499570078, -0.011831341846559026, 0.0022801125189390046, -0.00012536249967254906], + (0.995, 40.0): [-0.17562721880943261, -0.010157142650455463, 0.0022121943861923474, -0.000134542652873434], + (0.995, 60.0): [-0.17084630673594547, -0.0090224965852754805, 0.0023435529965815565, -0.00016240306777440115], + (0.995, 120.0): [-0.16648414081054147, -0.0074792163241677225, 0.0023284585524533607, -0.00017116464012147041], + (0.995, inf): [-0.16213921875452461, -0.0058985998630496144, 0.0022605819363689093, -0.00016896211491119114], + (0.999, 1.0): [-0.65233994072089363, -0.12579427445444219, 0.035830577995679271, -0.0028470555202945564], + (0.999, 2.0): [-0.45050164311326341, -0.098294804380698292, 0.024134463919493736, -0.0017269603956852841], + (0.999, 3.0): [-0.35161741499307819, -0.076801152272374273, 0.016695693063138672, -0.0010661121974071864], + (0.999, 4.0): [-0.29398448788574133, -0.06277319725219685, 0.012454220010543127, -0.00072644165723402445], + (0.999, 5.0): [-0.25725364564365477, -0.053463787584337355, 0.0099664236557431545, -0.00054866039388980659], + (0.999, 6.0): [-0.23674225795168574, -0.040973155890031254, 0.0062599481191736696, -0.00021565734226586692], + (0.999, 7.0): [-0.21840108878983297, -0.037037020271877719, 0.0055908063671900703, -0.00020238790479809623], + (0.999, 8.0): [-0.2057964743918449, -0.032500885103194356, 0.0046441644585661756, -0.00014769592268680274], + (0.999, 9.0): [-0.19604592954882674, -0.029166922919677936, 0.0040644333111949814, -0.00012854052861297006], + (0.999, 10.0): [-0.18857328935948367, -0.026316705703161091, 0.0035897350868809275, -0.00011572282691335702], + (0.999, 11.0): [-0.18207431428535406, -0.024201081944369412, 0.0031647372098056077, -8.1145935982296439e-05], + (0.999, 12.0): [-0.17796358148991101, -0.021054306118620879, 0.0023968085939602055, -1.5907156771296993e-05], + (0.999, 13.0): [-0.17371965962745489, -0.019577162950177709, 0.0022391783473999739, -2.0613023472812558e-05], + (0.999, 14.0): [-0.16905298116759873, -0.01967115985443986, 0.0026495208325889269, -9.1074275220634073e-05], + (0.999, 15.0): [-0.16635662558214312, -0.017903767183469876, 0.0022301322677100496, -5.1956773935885426e-05], + (0.999, 16.0): [-0.16388776549525449, -0.016671918839902419, 0.0020365289602744382, -4.3592447599724942e-05], + (0.999, 17.0): [-0.16131934177990759, -0.015998918405126326, 0.0019990454743285904, -4.8176277491327653e-05], + (0.999, 18.0): [-0.15880633110376571, -0.015830715141055916, 0.0021688405343832091, -8.061825248932771e-05], + (0.999, 19.0): [-0.15644841913314136, -0.015729364721105681, 0.0022981443610378136, -0.00010093672643417343], + (0.999, 20.0): [-0.15516596606222705, -0.014725095968258637, 0.0021117117014292155, -8.8806880297328484e-05], + (0.999, 24.0): [-0.14997437768645827, -0.012755323295476786, 0.0018871651510496939, -8.0896370662414938e-05], + (0.999, 30.0): [-0.14459974882323703, -0.011247323832877647, 0.0018637400643826279, -9.6415323191606741e-05], + (0.999, 40.0): [-0.13933285919392555, -0.0097151769692496587, 0.0018131251876208683, -0.00010452598991994023], + (0.999, 60.0): [-0.13424555343804143, -0.0082163027951669444, 0.0017883427892173382, -0.00011415865110808405], + (0.999, 120.0): [-0.12896119523040372, -0.0070426701112581112, 0.0018472364154226955, -0.00012862202979478294], + (0.999, inf): [-0.12397213562666673, -0.0056901201604149998, 0.0018260689406957129, -0.00013263452567995485]} + +# p values that are defined in the A table +p_keys = [.1,.5,.675,.75,.8,.85,.9,.95,.975,.99,.995,.999] + +# v values that are defined in the A table +v_keys = lrange(2, 21) + [24, 30, 40, 60, 120, inf] + +def _isfloat(x): + """ + returns True if x is a float, + returns False otherwise + """ + try: + float(x) + except: + return False + + return True + +##def _phi(p): +## """returns the pth quantile inverse norm""" +## return scipy.stats.norm.isf(p) + +def _phi( p ): + # this function is faster than using scipy.stats.norm.isf(p) + # but the permissity of the license isn't explicitly listed. + # using scipy.stats.norm.isf(p) is an acceptable alternative + + """ + Modified from the author's original perl code (original comments follow below) + by dfield@yahoo-inc.com. May 3, 2004. + + Lower tail quantile for standard normal distribution function. + + This function returns an approximation of the inverse cumulative + standard normal distribution function. I.e., given P, it returns + an approximation to the X satisfying P = Pr{Z <= X} where Z is a + random variable from the standard normal distribution. + + The algorithm uses a minimax approximation by rational functions + and the result has a relative error whose absolute value is less + than 1.15e-9. + + Author: Peter John Acklam + Time-stamp: 2000-07-19 18:26:14 + E-mail: pjacklam@online.no + WWW URL: http://home.online.no/~pjacklam + """ + + if p <= 0 or p >= 1: + # The original perl code exits here, we'll throw an exception instead + raise ValueError( "Argument to ltqnorm %f must be in open interval (0,1)" % p ) + + # Coefficients in rational approximations. + a = (-3.969683028665376e+01, 2.209460984245205e+02, \ + -2.759285104469687e+02, 1.383577518672690e+02, \ + -3.066479806614716e+01, 2.506628277459239e+00) + b = (-5.447609879822406e+01, 1.615858368580409e+02, \ + -1.556989798598866e+02, 6.680131188771972e+01, \ + -1.328068155288572e+01 ) + c = (-7.784894002430293e-03, -3.223964580411365e-01, \ + -2.400758277161838e+00, -2.549732539343734e+00, \ + 4.374664141464968e+00, 2.938163982698783e+00) + d = ( 7.784695709041462e-03, 3.224671290700398e-01, \ + 2.445134137142996e+00, 3.754408661907416e+00) + + # Define break-points. + plow = 0.02425 + phigh = 1 - plow + + # Rational approximation for lower region: + if p < plow: + q = math.sqrt(-2*math.log(p)) + return -(((((c[0]*q+c[1])*q+c[2])*q+c[3])*q+c[4])*q+c[5]) / \ + ((((d[0]*q+d[1])*q+d[2])*q+d[3])*q+1) + + # Rational approximation for upper region: + if phigh < p: + q = math.sqrt(-2*math.log(1-p)) + return (((((c[0]*q+c[1])*q+c[2])*q+c[3])*q+c[4])*q+c[5]) / \ + ((((d[0]*q+d[1])*q+d[2])*q+d[3])*q+1) + + # Rational approximation for central region: + q = p - 0.5 + r = q*q + return -(((((a[0]*r+a[1])*r+a[2])*r+a[3])*r+a[4])*r+a[5])*q / \ + (((((b[0]*r+b[1])*r+b[2])*r+b[3])*r+b[4])*r+1) + +def _ptransform(p): + """function for p-value abcissa transformation""" + return -1. / (1. + 1.5 * _phi((1. + p)/2.)) + +def _func(a, p, r, v): + """ + calculates f-hat for the coefficients in a, probability p, + sample mean difference r, and degrees of freedom v. + """ + # eq. 2.3 + f = a[0]*math.log(r-1.) + \ + a[1]*math.log(r-1.)**2 + \ + a[2]*math.log(r-1.)**3 + \ + a[3]*math.log(r-1.)**4 + + # eq. 2.7 and 2.8 corrections + if r == 3: + f += -0.002 / (1. + 12. * _phi(p)**2) + + if v <= 4.364: + v = v if not np.isinf(v) else 1e38 + f += 1. / 517. - 1. / (312. * v) + else: + v = v if not np.isinf(v) else 1e38 + f += 1. / (191. * v) + + return -f + +def _select_ps(p): + # There are more generic ways of doing this but profiling + # revealed that selecting these points is one of the slow + # things that is easy to change. This is about 11 times + # faster than the generic algorithm it is replacing. + # + # it is possible that different break points could yield + # better estimates, but the function this is refactoring + # just used linear distance. + """returns the points to use for interpolating p""" + if p >= .99: + return .990, .995, .999 + elif p >= .975: + return .975, .990, .995 + elif p >= .95: + return .950, .975, .990 + elif p >= .9125: + return .900, .950, .975 + elif p >= .875: + return .850, .900, .950 + elif p >= .825: + return .800, .850, .900 + elif p >= .7625: + return .750, .800, .850 + elif p >= .675: + return .675, .750, .800 + elif p >= .500: + return .500, .675, .750 + else: + return .100, .500, .675 + +def _interpolate_p(p, r, v): + """ + interpolates p based on the values in the A table for the + scalar value of r and the scalar value of v + """ + + # interpolate p (v should be in table) + # if .5 < p < .75 use linear interpolation in q + # if p > .75 use quadratic interpolation in log(y + r/v) + # by -1. / (1. + 1.5 * _phi((1. + p)/2.)) + + # find the 3 closest v values + p0, p1, p2 = _select_ps(p) + try: + y0 = _func(A[(p0, v)], p0, r, v) + 1. + except: + print(p,r,v) + raise + y1 = _func(A[(p1, v)], p1, r, v) + 1. + y2 = _func(A[(p2, v)], p2, r, v) + 1. + + y_log0 = math.log(y0 + float(r)/float(v)) + y_log1 = math.log(y1 + float(r)/float(v)) + y_log2 = math.log(y2 + float(r)/float(v)) + + # If p < .85 apply only the ordinate transformation + # if p > .85 apply the ordinate and the abcissa transformation + # In both cases apply quadratic interpolation + if p > .85: + p_t = _ptransform(p) + p0_t = _ptransform(p0) + p1_t = _ptransform(p1) + p2_t = _ptransform(p2) + + # calculate derivatives for quadratic interpolation + d2 = 2*((y_log2-y_log1)/(p2_t-p1_t) - \ + (y_log1-y_log0)/(p1_t-p0_t))/(p2_t-p0_t) + if (p2+p0)>=(p1+p1): + d1 = (y_log2-y_log1)/(p2_t-p1_t) - 0.5*d2*(p2_t-p1_t) + else: + d1 = (y_log1-y_log0)/(p1_t-p0_t) + 0.5*d2*(p1_t-p0_t) + d0 = y_log1 + + # interpolate value + y_log = (d2/2.) * (p_t-p1_t)**2. + d1 * (p_t-p1_t) + d0 + + # transform back to y + y = math.exp(y_log) - float(r)/float(v) + + elif p > .5: + # calculate derivatives for quadratic interpolation + d2 = 2*((y_log2-y_log1)/(p2-p1) - \ + (y_log1-y_log0)/(p1-p0))/(p2-p0) + if (p2+p0)>=(p1+p1): + d1 = (y_log2-y_log1)/(p2-p1) - 0.5*d2*(p2-p1) + else: + d1 = (y_log1-y_log0)/(p1-p0) + 0.5*d2*(p1-p0) + d0 = y_log1 + + # interpolate values + y_log = (d2/2.) * (p-p1)**2. + d1 * (p-p1) + d0 + + # transform back to y + y = math.exp(y_log) - float(r)/float(v) + + else: + # linear interpolation in q and p + v = min(v, 1e38) + q0 = math.sqrt(2) * -y0 * \ + scipy.stats.t.isf((1.+p0)/2., v) + q1 = math.sqrt(2) * -y1 * \ + scipy.stats.t.isf((1.+p1)/2., v) + + d1 = (q1-q0)/(p1-p0) + d0 = q0 + + # interpolate values + q = d1 * (p-p0) + d0 + + # transform back to y + y = -q / (math.sqrt(2) * scipy.stats.t.isf((1.+p)/2., v)) + + return y + +def _select_vs(v, p): + # This one is is about 30 times faster than + # the generic algorithm it is replacing. + """returns the points to use for interpolating v""" + + if v >= 120.: + return 60, 120, inf + elif v >= 60.: + return 40, 60, 120 + elif v >= 40.: + return 30, 40, 60 + elif v >= 30.: + return 24, 30, 40 + elif v >= 24.: + return 20, 24, 30 + elif v >= 19.5: + return 19, 20, 24 + + if p >= .9: + if v < 2.5: + return 1, 2, 3 + else: + if v < 3.5: + return 2, 3, 4 + + vi = int(round(v)) + return vi - 1, vi, vi + 1 + +def _interpolate_v(p, r, v): + + """ + interpolates v based on the values in the A table for the + scalar value of r and th + """ + # interpolate v (p should be in table) + # ordinate: y**2 + # abcissa: 1./v + + # find the 3 closest v values + # only p >= .9 have table values for 1 degree of freedom. + # The boolean is used to index the tuple and append 1 when + # p >= .9 + v0, v1, v2 = _select_vs(v, p) + + # y = f - 1. + y0_sq = (_func(A[(p,v0)], p, r, v0) + 1.)**2. + y1_sq = (_func(A[(p,v1)], p, r, v1) + 1.)**2. + y2_sq = (_func(A[(p,v2)], p, r, v2) + 1.)**2. + + # if v2 is inf set to a big number so interpolation + # calculations will work + if v2 > 1e38: v2 = 1e38 + + # transform v + v_, v0_, v1_, v2_ = 1./v, 1./v0, 1./v1, 1./v2 + + # calculate derivatives for quadratic interpolation + d2 = 2.*((y2_sq-y1_sq)/(v2_-v1_) - \ + (y0_sq-y1_sq)/(v0_-v1_)) / (v2_-v0_) + if (v2_ + v0_) >= (v1_ + v1_): + d1 = (y2_sq-y1_sq) / (v2_-v1_) - 0.5*d2*(v2_-v1_) + else: + d1 = (y1_sq-y0_sq) / (v1_-v0_) + 0.5*d2*(v1_-v0_) + d0 = y1_sq + + # calculate y + y = math.sqrt((d2/2.)*(v_-v1_)**2. + d1*(v_-v1_)+ d0) + + return y + +def _qsturng(p, r, v): + """scalar version of qsturng""" +## print 'q',p + # r is interpolated through the q to y here we only need to + # account for when p and/or v are not found in the table. + global A, p_keys, v_keys + + if p < .1 or p > .999: + raise ValueError('p must be between .1 and .999') + + if p < .9: + if v < 2: + raise ValueError('v must be > 2 when p < .9') + else: + if v < 1: + raise ValueError('v must be > 1 when p >= .9') + + # The easy case. A tabled value is requested. + + #numpy 1.4.1: TypeError: unhashable type: 'numpy.ndarray' : + p = float(p) + if isinstance(v, np.ndarray): + v = v.item() + if (p,v) in A: + y = _func(A[(p,v)], p, r, v) + 1. + + elif p not in p_keys and v not in v_keys+([],[1])[p>=.90]: + # apply bilinear (quadratic) interpolation + # + # p0,v2 + o + p1,v2 + p2,v2 + # r2 + # + # 1 + # - (p,v) + # v x + # + # r1 + # p0,v1 + o + p1,v1 + p2,v1 + # + # + # p0,v0 + o r0 + p1,v0 + p2,v0 + # + # _ptransform(p) + # + # (p1 and v1 may be below or above (p,v). The algorithm + # works in both cases. For diagramatic simplicity it is + # shown as above) + # + # 1. at v0, v1, and v2 use quadratic interpolation + # to find r0, r1, r2 + # + # 2. use r0, r1, r2 and quadratic interpolaiton + # to find y and (p,v) + + # find the 3 closest v values + v0, v1, v2 = _select_vs(v, p) + + # find the 3 closest p values + p0, p1, p2 = _select_ps(p) + + # calculate r0, r1, and r2 + r0_sq = _interpolate_p(p, r, v0)**2 + r1_sq = _interpolate_p(p, r, v1)**2 + r2_sq = _interpolate_p(p, r, v2)**2 + + # transform v + v_, v0_, v1_, v2_ = 1./v, 1./v0, 1./v1, 1./v2 + + # calculate derivatives for quadratic interpolation + d2 = 2.*((r2_sq-r1_sq)/(v2_-v1_) - \ + (r0_sq-r1_sq)/(v0_-v1_)) / (v2_-v0_) + if (v2_ + v0_) >= (v1_ + v1_): + d1 = (r2_sq-r1_sq) / (v2_-v1_) - 0.5*d2*(v2_-v1_) + else: + d1 = (r1_sq-r0_sq) / (v1_-v0_) + 0.5*d2*(v1_-v0_) + d0 = r1_sq + + # calculate y + y = math.sqrt((d2/2.)*(v_-v1_)**2. + d1*(v_-v1_)+ d0) + + elif v not in v_keys+([],[1])[p>=.90]: + y = _interpolate_v(p, r, v) + + elif p not in p_keys: + y = _interpolate_p(p, r, v) + + v = min(v, 1e38) + return math.sqrt(2) * -y * scipy.stats.t.isf((1. + p) / 2., v) + +# make a qsturng functinon that will accept list-like objects +_vqsturng = np.vectorize(_qsturng) +_vqsturng.__doc__ = """vector version of qsturng""" + +def qsturng(p, r, v): + """Approximates the quantile p for a studentized range + distribution having v degrees of freedom and r samples + for probability p. + + Parameters + ---------- + p : (scalar, array_like) + The cumulative probability value + p >= .1 and p <=.999 + (values under .5 are not recommended) + r : (scalar, array_like) + The number of samples + r >= 2 and r <= 200 + (values over 200 are permitted but not recommended) + v : (scalar, array_like) + The sample degrees of freedom + if p >= .9: + v >=1 and v >= inf + else: + v >=2 and v >= inf + + Returns + ------- + q : (scalar, array_like) + approximation of the Studentized Range + + """ + + if all(map(_isfloat, [p, r, v])): + return _qsturng(p, r, v) + return _vqsturng(p, r, v) + +##def _qsturng0(p, r, v): +#### print 'q0',p +## """ +## returns a first order approximation of q studentized range +## value. Based on Lund and Lund's 1983 based on the FORTRAN77 +## algorithm AS 190.2 Appl. Statist. (1983). +## """ +## vmax = 120. +## c = [0.8843, 0.2368, 1.214, 1.208, 1.4142] +## +## t = -_phi(.5+.5*p) +## if (v < vmax): +## t += (t**3. + t) / float(v) / 4. +## +## q = c[0] - c[1] * t +## if (v < vmax): +## q = q - c[2] / float(v) + c[3] * t / float(v) +## q = t * (q * math.log(r - 1.) + c[4]) +## +## # apply "bar napkin" correction for when p < .85 +## # this is good enough for our intended purpose +## if p < .85: +## q += math.log10(r) * 2.25 * (.85-p) +## return q + +def _psturng(q, r, v): + """scalar version of psturng""" + if q < 0.: + raise ValueError('q should be >= 0') + + opt_func = lambda p, r, v : abs(_qsturng(p, r, v) - q) + + if v == 1: + if q < _qsturng(.9, r, 1): + return .1 + elif q > _qsturng(.999, r, 1): + return .001 + return 1. - fminbound(opt_func, .9, .999, args=(r,v)) + else: + if q < _qsturng(.1, r, v): + return .9 + elif q > _qsturng(.999, r, v): + return .001 + return 1. - fminbound(opt_func, .1, .999, args=(r,v)) + +_vpsturng = np.vectorize(_psturng) +_vpsturng.__doc__ = """vector version of psturng""" + +def psturng(q, r, v): + """Evaluates the probability from 0 to q for a studentized + range having v degrees of freedom and r samples. + + Parameters + ---------- + q : (scalar, array_like) + quantile value of Studentized Range + q >= 0. + r : (scalar, array_like) + The number of samples + r >= 2 and r <= 200 + (values over 200 are permitted but not recommended) + v : (scalar, array_like) + The sample degrees of freedom + if p >= .9: + v >=1 and v >= inf + else: + v >=2 and v >= inf + + Returns + ------- + p : (scalar, array_like) + 1. - area from zero to q under the Studentized Range + distribution. When v == 1, p is bound between .001 + and .1, when v > 1, p is bound between .001 and .9. + Values between .5 and .9 are 1st order appoximations. + + """ + if all(map(_isfloat, [q, r, v])): + return _psturng(q, r, v) + return _vpsturng(q, r, v) + +##p, r, v = .9, 10, 20 +##print +##print 'p and v interpolation' +##print '\t20\t22\t24' +##print '.75',qsturng(.75, r, 20),qsturng(.75, r, 22),qsturng(.75, r, 24) +##print '.85',qsturng(.85, r, 20),qsturng(.85, r, 22),qsturng(.85, r, 24) +##print '.90',qsturng(.90, r, 20),qsturng(.90, r, 22),qsturng(.90, r, 24) +##print +##print 'p and v interpolation' +##print '\t120\t500\tinf' +##print '.950',qsturng(.95, r, 120),qsturng(.95, r, 500),qsturng(.95, r, inf) +##print '.960',qsturng(.96, r, 120),qsturng(.96, r, 500),qsturng(.96, r, inf) +##print '.975',qsturng(.975, r, 120),qsturng(.975, r, 500),qsturng(.975, r, inf) +##print +##print 'p and v interpolation' +##print '\t40\t50\t60' +##print '.950',qsturng(.95, r, 40),qsturng(.95, r, 50),qsturng(.95, r, 60) +##print '.960',qsturng(.96, r, 40),qsturng(.96, r, 50),qsturng(.96, r, 60) +##print '.975',qsturng(.975, r, 40),qsturng(.975, r, 50),qsturng(.975, r, 60) +##print +##print 'p and v interpolation' +##print '\t20\t22\t24' +##print '.50',qsturng(.5, r, 20),qsturng(.5, r, 22),qsturng(.5, r, 24) +##print '.60',qsturng(.6, r, 20),qsturng(.6, r, 22),qsturng(.6, r, 24) +##print '.75',qsturng(.75, r, 20),qsturng(.75, r, 22),qsturng(.75, r, 24) diff --git a/statsmodels/stats/libqsturng/tests/__init__.py b/statsmodels/stats/libqsturng/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/stats/libqsturng/tests/bootleg.dat b/statsmodels/stats/libqsturng/tests/bootleg.dat new file mode 100644 index 0000000..7007c11 --- /dev/null +++ b/statsmodels/stats/libqsturng/tests/bootleg.dat @@ -0,0 +1,9265 @@ +0.950300,2,4.43400,3.787121 +0.613586,75,149.1170,4.974391 +0.8372366,53,501.2317,5.193843 +0.9023396,58,546.2543,5.495572 +0.9061918,96,424.4232,5.856011 +0.7911643,8,200.5667,3.511362 +0.5360133,7,806.1763,2.722873 +0.6327574,56,56.17163,4.84627 +0.7634097,28,996.1946,4.506239 +0.5940891,78,56.14756,5.015406 +0.7991432,12,157.4574,3.92541 +0.6599134,72,944.1173,4.99709 +0.6845088,98,268.675,5.280095 +0.6883003,80,632.1445,5.128627 +0.787793,90,178.9085,5.466432 +0.5937039,11,637.886,3.312434 +0.6812908,31,477.9169,4.407207 +0.6260902,30,145.0597,4.289132 +0.5198778,20,172.1525,3.732414 +0.551296,21,539.7639,3.826797 +0.9473277,43,364.0211,5.573688 +0.6470059,32,446.2837,4.363963 +0.7304492,69,854.5265,5.104756 +0.8461879,49,341.8976,5.17709 +0.6998816,32,420.9467,4.473319 +0.7708307,73,782.7106,5.234264 +0.8517651,65,50.74249,5.601281 +0.7680614,23,782.7298,4.362934 +0.6772532,10,62.75346,3.446085 +0.8061568,53,941.9258,5.094457 +0.535348,87,579.7095,4.927541 +0.7317784,8,760.4088,3.322854 +0.647424,35,973.2097,4.430608 +0.7205917,62,451.4614,5.016029 +0.8310729,46,867.2378,5.064711 +0.7092925,93,252.9435,5.294547 +0.7614025,42,18.29759,5.194786 +0.768294,92,443.8754,5.398033 +0.611393,96,660.7554,5.120007 +0.5584655,9,544.9949,3.037984 +0.5757473,27,207.4046,4.096346 +0.7165018,66,868.694,5.044124 +0.8916566,90,891.3335,5.730434 +0.930496,81,680.2784,5.855139 +0.9493338,21,814.3338,5.058685 +0.8789807,96,958.6534,5.722715 +0.6453387,99,32.75148,5.368509 +0.9432753,88,44.19807,6.429427 +0.7734237,11,481.0691,3.747131 +0.9275644,15,31.61525,4.961554 +0.8814721,68,452.8735,5.521471 +0.5684593,38,359.6916,4.35714 +0.7915564,34,395.8539,4.741082 +0.6212993,97,578.4411,5.14523 +0.786856,89,643.049,5.411403 +0.5872209,30,947.6958,4.193762 +0.863228,58,644.4567,5.336585 +0.6852954,2,650.4337,1.422949 +0.8156778,80,626.9999,5.412793 +0.7758632,40,146.7813,4.857534 +0.6193542,63,757.0062,4.82912 +0.698619,62,144.0496,5.004096 +0.924634,5,682.612,3.647421 +0.6921237,49,433.7529,4.784743 +0.6682577,12,709.6476,3.557659 +0.7406304,98,958.277,5.368286 +0.5085852,22,433.0734,3.789960 +0.8567905,78,869.9651,5.511207 +0.6796293,27,770.1198,4.288455 +0.8970843,7,914.6475,3.798629 +0.8490929,46,340.834,5.141464 +0.609374,71,516.113,4.902681 +0.8709478,20,759.5428,4.57836 +0.720285,94,205.1919,5.332692 +0.7809733,3,290.1928,2.359907 +0.6695694,62,545.2842,4.911675 +0.6835529,2,482.5781,1.418211 +0.8061166,2,952.5813,1.83861 +0.5194726,41,996.1952,4.328192 +0.8214913,51,699.2729,5.113396 +0.7761068,36,304.3256,4.749856 +0.7338799,63,84.29842,5.132537 +0.5905524,53,981.4905,4.648476 +0.9062086,43,145.8958,5.377721 +0.6504464,84,494.4505,5.096346 +0.8689327,93,276.0934,5.706336 +0.5645257,7,580.0792,2.785004 +0.650522,63,428.5393,4.890803 +0.839554,48,209.0835,5.161268 +0.6790368,57,874.8717,4.863635 +0.8461706,95,497.4795,5.621337 +0.9483254,95,113.4526,6.237262 +0.6620466,71,782.7844,4.992363 +0.6950035,72,745.4756,5.064967 +0.6869721,9,119.0430,3.344547 +0.6628797,22,627.2988,4.08501 +0.658888,51,74.652,4.809383 +0.830574,75,794.5755,5.406187 +0.6937293,17,435.4039,3.933864 +0.7577239,24,225.9839,4.390343 +0.7776778,92,830.089,5.408262 +0.764957,95,124.2182,5.472132 +0.9206389,17,727.5881,4.694345 +0.898351,70,950.8781,5.591991 +0.7973998,11,220.2692,3.831447 +0.7214944,95,380.3205,5.322659 +0.9238978,77,787.5278,5.781355 +0.9244872,91,512.0104,5.905293 +0.8909669,68,452.4798,5.559568 +0.7084065,65,626.041,5.02022 +0.6307753,75,215.9268,4.995051 +0.8594055,84,115.6110,5.675496 +0.6989477,97,849.4333,5.279922 +0.5869843,18,815.1642,3.756967 +0.8016823,64,250.8206,5.246913 +0.551895,33,760.6953,4.20931 +0.81746,45,312.4948,5.029417 +0.8709936,16,101.5497,4.468421 +0.937709,65,792.7134,5.753211 +0.7804762,54,582.7179,5.048146 +0.9183745,25,969.7477,4.970277 +0.5937925,3,661.8292,1.812094 +0.6098205,49,786.0637,4.623535 +0.8903852,67,28.15358,6.025434 +0.6488511,78,214.1912,5.057178 +0.7700727,11,126.2421,3.76314 +0.7121162,3,981.2008,2.131666 +0.9040377,61,285.9408,5.56359 +0.8668537,67,443.4215,5.457901 +0.5564086,54,254.5303,4.614918 +0.627594,59,711.7653,4.795566 +0.6236158,61,657.5285,4.813821 +0.7054692,26,43.02735,4.42352 +0.7985678,9,555.6648,3.635557 +0.6175037,12,67.01567,3.478781 +0.6436729,69,202.2135,4.959957 +0.7975962,58,778.9944,5.138275 +0.8657938,40,971.3195,5.077273 +0.6125781,39,258.3901,4.462404 +0.9230684,25,77.91052,5.146124 +0.7718941,5,182.3003,2.958140 +0.7183858,72,772.0861,5.111052 +0.685252,40,419.2469,4.616958 +0.6817711,87,990.548,5.170921 +0.5134425,24,350.7156,3.875863 +0.94244,4,786.998,3.564546 +0.7367939,90,898.815,5.302826 +0.6982901,53,512.9667,4.853358 +0.8511483,81,141.8637,5.598955 +0.7122271,3,821.5797,2.132261 +0.6902148,100,284.2936,5.303542 +0.752643,43,13.40143,5.308534 +0.5762477,9,569.3049,3.075412 +0.7480166,44,857.6439,4.816408 +0.6270913,97,676.256,5.153524 +0.5805739,80,18.0991,5.136321 +0.7211723,72,132.8565,5.167092 +0.5795756,63,76.89864,4.807039 +0.5234776,36,451.4553,4.233053 +0.7375684,80,172.0776,5.265248 +0.8239995,55,480.0646,5.181428 +0.6456712,25,129.3303,4.181064 +0.9413013,18,492.3785,4.887695 +0.6400262,92,689.0314,5.138445 +0.6229059,57,874.2567,4.760222 +0.7065448,88,183.0431,5.262541 +0.6663917,13,565.7418,3.629029 +0.9066384,27,931.4407,4.964972 +0.8259662,60,730.302,5.240379 +0.509955,83,559.9251,4.853519 +0.6687699,6,160.4952,2.867927 +0.9091107,22,363.1985,4.843181 +0.5648102,29,715.7917,4.126072 +0.6017205,67,510.1983,4.847094 +0.7983275,36,631.9508,4.794933 +0.6861993,33,619.5893,4.46455 +0.5205803,3,373.5958,1.636966 +0.941117,7,165.7246,4.136368 +0.5513367,39,537.9881,4.344938 +0.7491319,33,712.8302,4.602413 +0.6254723,36,240.1404,4.424605 +0.8193866,70,553.8917,5.333919 +0.5924001,50,346.2979,4.615012 +0.5575877,27,865.5236,4.052604 +0.5018944,78,13.42953,4.940013 +0.6858643,54,573.8197,4.840953 +0.7754497,98,760.7202,5.447041 +0.9309805,15,106.4171,4.749156 +0.7597726,5,164.1182,2.92082 +0.8578071,63,712.2652,5.373159 +0.911167,28,868.7552,5.015934 +0.5224571,94,120.4146,4.983536 +0.6644315,34,415.3146,4.447791 +0.5462101,7,624.7674,2.745171 +0.7798522,66,174.2775,5.229032 +0.569931,57,455.0914,4.67309 +0.8878053,56,651.2573,5.404565 +0.7848387,81,320.6422,5.359167 +0.5205078,17,452.1213,3.580051 +0.5922637,73,327.3382,4.898999 +0.5512022,47,533.1254,4.49198 +0.6539785,40,392.5646,4.555385 +0.9167344,99,214.5807,5.970447 +0.9447369,70,653.8565,5.854829 +0.5827263,45,704.0173,4.510883 +0.7946362,93,162.5867,5.513278 +0.5436138,22,855.6748,3.851738 +0.755334,35,556.5636,4.665327 +0.9268,54,869.746,5.561617 +0.6648528,47,433.7503,4.699148 +0.7485304,40,104.7193,4.806957 +0.5944208,40,929.1871,4.438083 +0.63304,45,547.4467,4.603049 +0.9118431,61,722.6399,5.567566 +0.720652,41,136.0821,4.743472 +0.6774275,99,188.8005,5.285412 +0.831584,82,642.8835,5.473357 +0.5817278,35,948.0573,4.309129 +0.6321327,22,784.3597,4.020958 +0.5431548,6,33.4411,2.598251 +0.8314369,16,942.1906,4.250072 +0.5546019,19,383.3337,3.746123 +0.6336268,3,975.2953,1.913129 +0.6703074,56,212.3536,4.855753 +0.5791341,44,55.41561,4.543996 +0.832449,19,179.6793,4.428198 +0.7833847,6,281.2441,3.188186 +0.5525693,6,92.11777,2.598153 +0.7141683,7,921.7208,3.139066 +0.7843614,9,264.1729,3.599121 +0.606754,87,726.8536,5.041784 +0.6120415,55,113.5644,4.749394 +0.9244803,99,99.19521,6.1186 +0.7773096,72,404.2429,5.252044 +0.7321032,86,700.6788,5.264721 +0.6722015,41,789.2637,4.603417 +0.7958672,62,244.6047,5.209776 +0.8295918,10,6.976075,4.622355 +0.5160006,84,417.1381,4.873595 +0.6063104,73,665.1216,4.915447 +0.830313,83,11.62979,6.405052 +0.8513132,3,935.2863,2.641412 +0.9099108,3,417.3052,2.976535 +0.605142,74,990.551,4.920812 +0.7359311,83,209.5253,5.278422 +0.8584674,99,694.433,5.678823 +0.7176196,55,310.9431,4.929912 +0.5039214,7,637.0151,2.655203 +0.6650235,7,252.5402,3.020462 +0.7516747,70,917.9605,5.159777 +0.6465379,20,966.2776,3.967723 +0.6117417,88,75.03909,5.120178 +0.864727,75,289.4869,5.544036 +0.5883802,42,988.5053,4.465431 +0.6207718,23,879.597,4.03577 +0.6597833,68,606.3898,4.959428 +0.5598158,21,627.1537,3.842139 +0.8209666,67,874.9125,5.300291 +0.754866,31,387.6171,4.575651 +0.5617583,19,723.7774,3.756965 +0.9393174,42,25.75119,6.090044 +0.7692625,64,621.2697,5.141441 +0.830146,95,408.8041,5.579854 +0.5445154,48,780.368,4.495197 +0.6460441,59,973.451,4.826685 +0.7571193,45,550.3283,4.859351 +0.6482274,10,910.6333,3.336849 +0.6453257,21,545.4061,4.010011 +0.944077,78,659.1318,5.919355 +0.8283513,63,232.6015,5.315383 +0.6238383,11,967.5066,3.375429 +0.920555,46,867.953,5.417839 +0.6191617,46,776.0902,4.591981 +0.7967018,6,238.7104,3.234803 +0.5562811,39,286.7352,4.35847 +0.8249085,18,661.9321,4.329062 +0.7856145,93,373.0646,5.451036 +0.8761004,93,841.654,5.69398 +0.5903102,88,126.7508,5.053856 +0.562227,36,81.24771,4.330475 +0.8585568,35,110.9485,5.03868 +0.658002,20,873.0264,3.991925 +0.9010046,10,545.304,4.148382 +0.8207666,30,220.0453,4.746643 +0.6796628,32,559.4068,4.427563 +0.8855762,26,447.3963,4.851362 +0.7611639,21,45.28665,4.390651 +0.7989508,51,821.7299,5.04934 +0.5588384,4,680.0978,2.114002 +0.7111297,6,488.6605,2.970037 +0.9003013,54,250.8912,5.46936 +0.8809515,64,917.479,5.462105 +0.6448157,6,759.0248,2.799152 +0.7000096,37,44.38138,4.700476 +0.6277596,84,826.4453,5.051443 +0.7988169,74,951.265,5.309046 +0.9424629,74,662.1041,5.874126 +0.866492,13,842.4465,4.206892 +0.7708649,62,183.6289,5.158482 +0.80865,86,481.3468,5.449073 +0.5991751,43,384.7992,4.509275 +0.6546014,67,499.3364,4.941333 +0.7256747,90,25.19916,5.582922 +0.6444263,84,142.5535,5.116413 +0.8193781,12,485.8926,3.968518 +0.547869,51,404.5397,4.551553 +0.7970432,38,154.9913,4.873851 +0.7669612,19,557.0404,4.206081 +0.8033985,57,968.377,5.138517 +0.894136,13,536.4957,4.337067 +0.7043946,38,739.0528,4.61108 +0.7234408,68,913.6276,5.079187 +0.622099,91,584.9706,5.101498 +0.7255545,27,418.1564,4.395093 +0.738156,19,58.73154,4.209344 +0.6241422,12,365.6692,3.463702 +0.5562845,19,350.9198,3.749867 +0.7281854,18,287.1144,4.070209 +0.5441473,59,121.4531,4.674919 +0.8905086,2,729.1572,2.266193 +0.8592729,21,186.6340,4.60649 +0.7442184,57,795.9408,4.998402 +0.7555524,76,809.0712,5.227268 +0.877916,38,349.5582,5.107913 +0.5961259,95,272.5336,5.098577 +0.5287142,89,965.3442,4.931151 +0.7706853,29,189.9224,4.581958 +0.6129344,78,816.0259,4.973186 +0.6940203,55,531.936,4.871643 +0.803978,85,113.2280,5.506545 +0.6513668,25,526.0979,4.16961 +0.7241574,24,810.4252,4.289929 +0.8009436,45,635.4232,4.967361 +0.6470061,54,599.8603,4.766273 +0.7905274,64,819.1808,5.189099 +0.8141194,57,112.7480,5.249975 +0.720669,93,890.1649,5.292697 +0.614216,4,26.84620,2.288507 +0.5201955,22,549.9339,3.810220 +0.7562491,23,75.20277,4.404095 +0.571583,2,591.1712,1.120692 +0.59512,24,925.6549,4.022300 +0.8498783,51,746.2723,5.199169 +0.720653,78,121.3126,5.229377 +0.8377182,30,618.6129,4.774599 +0.762667,56,190.1399,5.062476 +0.6654569,8,794.2568,3.154298 +0.8495638,39,68.62068,5.144765 +0.8259046,98,385.4926,5.590565 +0.8993462,79,421.6472,5.698037 +0.6378225,65,660.0563,4.88584 +0.7901517,41,131.5250,4.921998 +0.7735304,58,618.8744,5.081568 +0.6989816,14,925.2804,3.769055 +0.9247961,57,654.44,5.592775 +0.6678873,93,282.5398,5.210545 +0.7042879,9,3.896124,4.158098 +0.9381184,66,860.4778,5.763955 +0.7818833,6,78.19807,3.212809 +0.736335,99,79.06835,5.473526 +0.8725626,54,313.8057,5.342032 +0.8541985,68,528.8019,5.419967 +0.6945799,38,362.9406,4.598808 +0.6583852,51,933.405,4.741364 +0.9193304,23,292.4528,4.942313 +0.6527448,47,170.3905,4.694595 +0.6754736,48,306.507,4.741562 +0.5866164,62,608.678,4.762358 +0.8885043,92,137.4909,5.833394 +0.5866438,56,51.31247,4.754496 +0.6316082,56,327.2022,4.772503 +0.5772445,42,369.953,4.451939 +0.6347414,69,600.227,4.924792 +0.8806151,58,225.7173,5.440272 +0.6856101,98,415.3002,5.271872 +0.6636807,38,29.98377,4.680520 +0.5607791,7,385.8438,2.778012 +0.8966284,69,454.385,5.59322 +0.7196528,5,498.2873,2.791415 +0.643225,6,481.3396,2.796659 +0.7213205,36,550.7978,4.608818 +0.592653,34,996.0012,4.305271 +0.6135537,26,494.7108,4.127973 +0.8180465,5,587.1134,3.108012 +0.925586,34,608.966,5.243092 +0.712478,75,373.8838,5.139195 +0.8216724,78,524.4142,5.415784 +0.5777971,21,464.5309,3.877573 +0.7139551,73,652.4754,5.113785 +0.7583686,100,864.008,5.420804 +0.8995945,37,254.1523,5.196644 +0.6556193,50,675.7596,4.723593 +0.7279657,66,13.24369,5.578575 +0.7057946,67,68.34087,5.130584 +0.7979024,86,781.665,5.412042 +0.9401606,51,916.6018,5.606526 +0.6162031,43,280.8828,4.544513 +0.6506508,76,152.7170,5.053203 +0.9455006,37,84.7852,5.604932 +0.8825633,98,499.5796,5.765177 +0.7146368,73,172.6922,5.149105 +0.643779,66,744.6761,4.906691 +0.9246844,91,656.3491,5.897993 +0.6049427,97,825.6836,5.114873 +0.5431938,26,882.958,3.994681 +0.8126032,69,46.41403,5.517239 +0.7602118,7,182.2327,3.282168 +0.6820787,80,35.74084,5.289847 +0.7242503,71,633.399,5.115542 +0.762124,52,96.81844,5.048513 +0.5761674,27,795.3923,4.086751 +0.7674945,87,355.5641,5.363731 +0.6893945,89,848.0137,5.202317 +0.8342704,10,681.8076,3.853672 +0.9307401,34,270.5869,5.305084 +0.6917751,39,822.0006,4.604009 +0.7267107,23,680.2972,4.262292 +0.6354322,62,181.5393,4.868494 +0.7580115,57,501.0876,5.03591 +0.6178196,55,128.1938,4.756006 +0.6396423,44,624.3828,4.596975 +0.7626689,42,438.5162,4.824863 +0.5867045,63,103.1721,4.807943 +0.8525572,83,884.146,5.538926 +0.5375346,27,843.32,4.016654 +0.938737,8,476.519,4.204282 +0.8598953,30,895.0064,4.845791 +0.618619,26,310.2046,4.142067 +0.751289,85,971.0602,5.293395 +0.6007665,85,280.1201,5.02653 +0.8931311,96,661.1837,5.784881 +0.9477872,55,349.5601,5.745697 +0.8263472,25,868.1811,4.593935 +0.8971962,28,813.1129,4.94798 +0.917756,88,391.7887,5.859333 +0.5736361,12,298.5713,3.358818 +0.5923442,20,777.4425,3.860573 +0.9331808,56,926.266,5.622917 +0.5385511,27,131.7780,4.033215 +0.709832,64,184.5100,5.040587 +0.9305012,44,455.3916,5.46184 +0.7267914,59,697.8118,4.987088 +0.6695136,8,20.46508,3.278592 +0.636107,14,417.5571,3.632827 +0.662663,31,216.0035,4.380913 +0.6268085,67,388.1516,4.894231 +0.8478138,40,927.3398,5.015686 +0.8939183,49,127.1164,5.425592 +0.8187445,56,58.74734,5.334734 +0.6800727,54,652.806,4.828237 +0.7508679,55,478.8554,4.994428 +0.5247278,90,108.2003,4.958619 +0.5126827,83,367.0263,4.860525 +0.9360829,43,793.5388,5.466748 +0.5427037,17,355.0012,3.623390 +0.6746653,7,93.02982,3.059764 +0.6865374,83,642.7987,5.15102 +0.7966882,75,784.4196,5.31541 +0.9464101,14,331.0489,4.746153 +0.8584512,13,404.4904,4.183346 +0.8647911,39,852.2727,5.05704 +0.6417288,7,478.1858,2.960385 +0.8371056,85,444.343,5.522884 +0.8774682,24,836.418,4.745429 +0.7276132,95,91.43983,5.408513 +0.681911,83,834.1965,5.139621 +0.8320037,7,698.0064,3.507781 +0.7311164,15,910.4249,3.908022 +0.5453493,29,846.9758,4.090611 +0.5034893,15,962.7001,3.429684 +0.7765618,78,78.25059,5.408551 +0.6889326,30,700.1291,4.393576 +0.6663355,7,650.8927,3.018401 +0.903647,71,181.4400,5.697455 +0.8294555,53,483.8067,5.171024 +0.6864851,47,77.10473,4.805211 +0.8332093,64,638.4873,5.308758 +0.6178623,91,609.0503,5.093896 +0.9483832,42,134.5668,5.648304 +0.601083,21,988.283,3.919131 +0.8363535,13,264.5484,4.108176 +0.6232332,60,379.2178,4.806633 +0.6716989,82,134.4818,5.155346 +0.7271332,63,619.8103,5.036546 +0.716362,89,574.5563,5.25926 +0.7035438,46,185.5708,4.780743 +0.9094733,58,800.8275,5.519981 +0.7970491,86,899.1467,5.407964 +0.6710653,59,324.7219,4.885989 +0.7732243,82,267.0323,5.345934 +0.7177664,52,252.1324,4.894166 +0.5975854,54,403.198,4.68114 +0.7574227,82,848.186,5.283512 +0.61548,57,185.7698,4.767464 +0.856129,63,357.1877,5.385709 +0.7315266,85,348.6383,5.268519 +0.6396882,61,36.83948,4.971445 +0.8693308,81,553.7231,5.588287 +0.5279291,8,565.4334,2.850686 +0.653696,18,983.7102,3.891188 +0.5345938,27,865.7832,4.011338 +0.7072539,48,209.3058,4.817037 +0.9119935,63,136.3686,5.686828 +0.612377,99,792.52,5.141792 +0.9320222,42,279.1492,5.46138 +0.518647,98,812.767,4.985492 +0.8503986,49,813.2923,5.171308 +0.7017593,2,926.9244,1.471911 +0.928796,74,201.9075,5.851777 +0.572696,27,46.75606,4.135588 +0.7032733,46,360.8426,4.763264 +0.8491637,25,595.2798,4.674148 +0.7662437,46,696.0155,4.894196 +0.7282377,14,297.2000,3.849405 +0.875547,99,203.8363,5.792346 +0.8080239,83,931.4812,5.411267 +0.6885786,33,956.5435,4.466412 +0.7831086,97,837.6102,5.456536 +0.9459541,43,198.5099,5.60273 +0.5396256,39,300.1694,4.328677 +0.8436808,63,945.8707,5.323334 +0.6760259,83,752.4728,5.129654 +0.794726,30,289.6138,4.660757 +0.8699908,10,465.4956,3.999971 +0.6201105,11,823.6584,3.367809 +0.8532556,19,316.4788,4.484371 +0.8204,6,290.9876,3.316586 +0.8684488,30,453.036,4.888899 +0.9351581,85,438.0463,5.930551 +0.5873355,44,787.4419,4.500897 +0.5668142,2,706.7757,1.109026 +0.8327513,38,482.0475,4.940103 +0.8554855,59,795.2226,5.318344 +0.7925683,78,596.6343,5.336552 +0.8354968,58,736.0778,5.244615 +0.7509,85,198.9852,5.331186 +0.6546461,93,239.3210,5.190297 +0.5231616,72,35.3501,4.838751 +0.7953823,61,991.2709,5.165394 +0.6118757,13,108.9576,3.529129 +0.6601847,18,911.6591,3.905212 +0.6335368,63,919.9916,4.852865 +0.5913542,54,335.8841,4.672278 +0.7957373,32,452.8137,4.703563 +0.8788325,82,823.1708,5.62168 +0.6757324,48,310.3905,4.741838 +0.9181646,61,518.8919,5.608716 +0.650593,63,345.7281,4.894228 +0.688562,76,536.1067,5.094923 +0.7157119,65,283.2976,5.050122 +0.8862314,20,402.8624,4.654271 +0.7751035,59,526.9975,5.100229 +0.852668,40,456.2137,5.044085 +0.6919508,13,305.6826,3.693041 +0.9479584,79,364.8523,5.981857 +0.531493,27,907.4513,4.0057 +0.8479793,87,212.9312,5.605534 +0.9373602,77,881.6762,5.858075 +0.794942,84,288.0566,5.413612 +0.7529769,8,974.1157,3.380804 +0.8806292,10,838.2374,4.041734 +0.9071702,71,976.974,5.640227 +0.5128439,84,113.3925,4.886223 +0.508224,97,353.1583,4.966884 +0.6519604,55,435.3711,4.792745 +0.5119386,85,606.7859,4.873612 +0.9132375,11,377.7748,4.306664 +0.6261143,28,92.34715,4.246723 +0.5091433,83,896.1872,4.850326 +0.7412793,27,978.2313,4.423764 +0.8408322,7,227.3483,3.555352 +0.7672435,9,520.7616,3.540014 +0.5301034,3,137.9902,1.662143 +0.6913752,99,368.8408,5.292307 +0.5038832,80,961.1678,4.814971 +0.6810352,58,798.4374,4.880977 +0.912606,95,39.98357,6.282317 +0.8752428,87,634.5903,5.653246 +0.5952158,2,215.9915,1.180506 +0.7718479,48,745.4419,4.938152 +0.6458358,11,277.5476,3.430429 +0.5988926,47,477.9302,4.575699 +0.8380053,85,626.8053,5.516798 +0.7103821,69,536.2279,5.069106 +0.8866979,37,457.5733,5.116669 +0.7517034,20,398.4081,4.213259 +0.9147898,46,560.4219,5.396691 +0.9484228,17,738.7124,4.894374 +0.8846891,40,963.2052,5.150066 +0.9426123,27,772.5522,5.187897 +0.8692356,26,67.72579,4.906808 +0.8589243,45,178.4913,5.190465 +0.7328168,62,788.4979,5.034291 +0.623517,64,359.9294,4.855704 +0.8780984,91,355.0138,5.712913 +0.77191,38,768.8696,4.764597 +0.6181754,100,993.8187,5.156927 +0.8559087,43,211.7474,5.136296 +0.5625674,51,284.2133,4.580255 +0.7974567,4,236.5961,2.785214 +0.8577004,44,559.3555,5.12577 +0.9458263,71,286.2064,5.911821 +0.7599092,84,920.8071,5.304669 +0.7314819,15,749.6491,3.909982 +0.7849763,59,195.8903,5.155483 +0.6070717,33,678.3757,4.309346 +0.5852736,62,260.5681,4.769412 +0.6049603,85,602.8164,5.023711 +0.7056618,14,68.68933,3.836551 +0.7184723,93,2.506099,7.900124 +0.907464,25,868.7431,4.912952 +0.8818385,76,441.2289,5.598673 +0.904677,35,205.0632,5.193281 +0.8232554,27,47.38136,4.807151 +0.9188763,93,90.43636,6.059958 +0.6166306,48,24.47130,4.779987 +0.8503245,59,652.8947,5.304897 +0.8644836,93,696.1033,5.657553 +0.7398192,73,382.7746,5.177192 +0.5050311,88,83.43626,4.91444 +0.8900678,93,351.7667,5.774332 +0.7577198,5,355.05,2.906072 +0.5459648,5,673.3102,2.360118 +0.7315915,52,154.3075,4.943453 +0.7092939,43,819.5333,4.714818 +0.7618465,85,876.8257,5.317655 +0.7262858,83,700.0127,5.228118 +0.7737173,91,178.424,5.438783 +0.6358564,78,102.2227,5.061739 +0.6601463,78,880.9956,5.055251 +0.8248714,64,240.081,5.314529 +0.7785174,87,770.9972,5.373263 +0.8429175,76,725.753,5.453214 +0.5951001,72,385.1136,4.891615 +0.891007,96,479.0816,5.786144 +0.7736853,89,857.986,5.376108 +0.918299,100,390.0396,5.944879 +0.7906417,9,287.6082,3.617527 +0.6402875,74,647.4198,4.984587 +0.7765883,93,620.9507,5.417569 +0.6578024,10,85.02536,3.386581 +0.5627766,31,309.6647,4.18284 +0.6243535,79,396.6058,5.009259 +0.6200636,53,208.0446,4.718187 +0.7096096,74,775.759,5.112731 +0.83082,79,246.7897,5.477539 +0.8123965,6,153.8754,3.298421 +0.8382691,12,142.3883,4.064761 +0.705515,61,282.4126,4.982704 +0.7580165,37,324.4754,4.723757 +0.9096753,83,169.1843,5.839802 +0.949019,20,64.8373,5.213973 +0.8169494,70,896.4021,5.319118 +0.7710959,10,770.646,3.648601 +0.8901521,6,442.8634,3.61866 +0.5415315,33,652.749,4.191687 +0.5416192,18,662.6916,3.670651 +0.7902908,48,447.7559,4.992453 +0.5299773,43,16.22008,4.520329 +0.9289499,30,225.6202,5.213176 +0.8344856,14,91.72327,4.211774 +0.5235518,40,394.8788,4.319086 +0.8744765,40,442.6723,5.12431 +0.9026988,5,750.8111,3.500929 +0.5675176,40,151.6294,4.408606 +0.6096033,63,605.3651,4.813785 +0.5135856,71,670.9206,4.743154 +0.5918367,76,814.6443,4.918962 +0.6342168,53,534.5466,4.729815 +0.5325372,99,960.3788,5.013452 +0.741656,65,78.99525,5.181359 +0.6935803,36,51.64724,4.645036 +0.8542952,10,48.5374,4.044326 +0.7463491,12,615.9147,3.749647 +0.6943899,78,260.7352,5.139563 +0.889562,12,398.4491,4.25206 +0.8491757,82,60.51142,5.723753 +0.8016692,83,7.73509,6.604698 +0.8924879,21,262.3629,4.734577 +0.7525104,80,107.3612,5.331661 +0.7081317,21,92.81737,4.187879 +0.8065809,43,210.9749,4.979122 +0.5169801,35,395.1261,4.199522 +0.6757979,76,910.9608,5.065197 +0.7677337,77,365.431,5.278845 +0.8090006,93,842.7086,5.491836 +0.7051984,38,488.1513,4.617047 +0.7468627,45,45.37075,4.982465 +0.5568271,45,484.7282,4.468249 +0.7837019,32,851.0998,4.663072 +0.7612952,32,479.0075,4.612813 +0.733612,91,72.76688,5.415899 +0.8864325,62,547.5789,5.472746 +0.7578537,40,421.5965,4.777266 +0.6717871,60,709.5815,4.889155 +0.6287574,52,620.978,4.704199 +0.6445166,78,400.8385,5.035814 +0.8931823,45,485.385,5.282556 +0.7727532,28,379.5074,4.541311 +0.5352619,2,212.1915,1.035757 +0.7081157,3,139.0256,2.127859 +0.6033971,22,594.7747,3.965754 +0.9075128,51,414.4177,5.440742 +0.8494736,76,149.5367,5.544112 +0.7879249,79,855.974,5.328293 +0.5783671,12,636.4271,3.365007 +0.7535224,48,537.166,4.899041 +0.716179,45,136.7055,4.804574 +0.7744747,97,885.4469,5.435816 +0.841277,85,245.2894,5.559938 +0.544991,50,880.931,4.527181 +0.9347753,97,101.0668,6.16939 +0.7641154,88,752.9195,5.348427 +0.6819447,17,322.7949,3.910315 +0.8632081,52,916.537,5.254725 +0.868709,64,376.5412,5.438657 +0.7571078,21,676.9291,4.261664 +0.6838573,59,341.2879,4.910124 +0.8295345,17,71.70596,4.383508 +0.8079979,57,160.2103,5.204845 +0.8102735,76,371.9556,5.376022 +0.9184764,54,527.7015,5.527673 +0.6461691,60,121.8660,4.879243 +0.860307,61,699.5002,5.359746 +0.663215,21,508.4091,4.047775 +0.7294957,59,655.0106,4.99358 +0.8406354,61,281.0507,5.321951 +0.5139149,86,262.1952,4.891583 +0.7905041,86,300.4609,5.416914 +0.8456873,14,481.5299,4.194904 +0.5098909,5,19.22275,2.322491 +0.6678912,81,393.9353,5.105909 +0.830644,38,124.9105,4.991291 +0.8262549,83,261.9533,5.495006 +0.6959497,69,655.3541,5.03778 +0.8008555,69,289.2386,5.292137 +0.8117482,100,446.218,5.56089 +0.5293518,81,772.3581,4.864649 +0.6090772,49,221.2100,4.636553 +0.7506375,89,543.5856,5.33163 +0.6183604,77,479.8493,4.977886 +0.7233891,4,568.0821,2.538969 +0.7745052,56,225.0964,5.084653 +0.6148174,56,278.9049,4.744436 +0.5664338,3,26.61995,1.771754 +0.7387753,66,902.254,5.090323 +0.6776956,91,945.66,5.195144 +0.8217946,12,254.1228,3.987356 +0.9459525,96,623.9948,6.065962 +0.8649597,21,641.7817,4.595264 +0.7425515,77,617.3263,5.211645 +0.8400273,16,413.1986,4.289296 +0.6770476,40,220.3779,4.612167 +0.6674166,42,588.7063,4.614908 +0.6428335,10,133.642,3.340386 +0.8646097,77,855.3629,5.528825 +0.5891536,2,14.00990,1.198849 +0.8098053,40,872.5492,4.901222 +0.809758,42,176.2297,4.979482 +0.7928953,70,722.8662,5.259338 +0.797324,31,971.6011,4.6741 +0.5771383,99,69.68891,5.142041 +0.7773082,50,285.3107,5.000541 +0.5495215,54,160.6643,4.61034 +0.7773526,24,561.2561,4.424951 +0.8622123,25,101.0384,4.798824 +0.6110196,60,778.7585,4.778251 +0.7854684,34,708.4522,4.715879 +0.5639518,21,225.5089,3.856821 +0.8967337,96,316.8322,5.82831 +0.6992566,52,999.291,4.834764 +0.614064,23,555.4065,4.024895 +0.6308871,18,159.6431,3.860586 +0.9232963,5,100.3030,3.686886 +0.7375896,41,961.0838,4.738977 +0.8605606,28,672.7911,4.799961 +0.7257157,45,878.2304,4.783404 +0.5813184,27,289.4119,4.102855 +0.7107086,89,267.5164,5.264923 +0.9413629,10,369.3205,4.424309 +0.8740505,68,769.1524,5.480379 +0.6051843,61,386.9700,4.786589 +0.827576,66,678.199,5.312512 +0.900977,31,18.41794,5.674096 +0.7688614,69,257.3158,5.215556 +0.8761198,56,677.8171,5.357956 +0.5646782,6,382.0181,2.615419 +0.518497,3,378.3279,1.632089 +0.582818,59,70.65949,4.767608 +0.8276893,56,107.9941,5.283863 +0.7168767,59,470.4204,4.971592 +0.662991,93,701.3547,5.186381 +0.8005013,43,960.6649,4.927929 +0.5331211,96,445.2623,4.996752 +0.7771595,45,986.4243,4.901005 +0.7080667,37,156.1174,4.628933 +0.9328946,89,677.8293,5.929755 +0.6320658,2,87.63947,1.279896 +0.6080188,65,589.0781,4.83435 +0.6301288,6,705.1481,2.764101 +0.5133827,81,995.4598,4.838737 +0.719066,97,752.0547,5.320292 +0.6186295,22,683.8413,3.994817 +0.8119921,41,708.591,4.928048 +0.5609343,88,10.50586,5.267972 +0.6724697,14,202.2301,3.721339 +0.573703,9,450.9772,3.070775 +0.8628512,57,640.9474,5.323342 +0.868195,94,649.7503,5.678757 +0.6743816,62,90.98017,4.978108 +0.8300029,19,250.6289,4.408213 +0.6457565,46,410.854,4.646782 +0.6287419,57,793.6064,4.771207 +0.9050638,91,883.7435,5.794317 +0.9116619,5,213.3576,3.574827 +0.9284593,16,108.4316,4.781968 +0.6050885,93,391.021,5.09282 +0.7973473,30,814.708,4.650565 +0.5764903,49,359.3575,4.571037 +0.5405271,48,288.3529,4.494993 +0.6495582,79,511.0006,5.050636 +0.6367823,59,822.7776,4.810997 +0.8513049,77,870.4478,5.484962 +0.9267168,35,561.7305,5.272438 +0.8221376,19,437.5601,4.369938 +0.5401428,57,19.55145,4.751766 +0.6786695,16,669.9876,3.843398 +0.6102902,51,332.7534,4.662691 +0.8363006,90,474.4249,5.556992 +0.6663403,99,437.2999,5.242262 +0.8085966,14,251.4224,4.079578 +0.9347172,77,837.7067,5.842615 +0.7344155,54,536.4091,4.942499 +0.9004107,96,208.1096,5.873226 +0.6433048,62,254.7092,4.874714 +0.8065827,89,583.4963,5.462501 +0.5564002,28,326.8198,4.086037 +0.5880839,69,181.2231,4.86122 +0.9407387,28,778.9392,5.199814 +0.9369049,53,886.1674,5.610943 +0.8998097,99,34.78137,6.290163 +0.6223383,90,941.7874,5.090228 +0.7911574,82,281.1704,5.388264 +0.8075953,32,504.956,4.735014 +0.5975587,94,219.1553,5.098065 +0.7839761,62,455.6021,5.160191 +0.5952474,66,666.0851,4.822761 +0.8705345,83,759.6216,5.601404 +0.6809573,45,228.4825,4.710120 +0.6019187,11,386.5556,3.331947 +0.7658947,15,814.1042,3.998861 +0.813091,40,904.633,4.910092 +0.918683,83,480.8551,5.81735 +0.8389258,98,57.99856,5.822399 +0.8472037,79,450.0731,5.503936 +0.8081241,100,215.4546,5.58131 +0.6612245,51,610.5578,4.749989 +0.6165932,26,887.3631,4.130658 +0.596875,9,13.68237,3.251298 +0.8972038,34,965.9676,5.087532 +0.8693963,35,513.7941,5.004048 +0.7674038,73,459.8307,5.235216 +0.5901292,64,250.1572,4.802326 +0.7296133,61,208.4754,5.043975 +0.8878144,91,896.558,5.722354 +0.5677198,38,365.4184,4.355683 +0.7190616,81,515.5016,5.200799 +0.7814752,60,50.94589,5.290408 +0.8198621,34,977.1663,4.808182 +0.6872518,25,721.45,4.242103 +0.5930279,60,325.3461,4.755136 +0.5059111,32,55.22956,4.135281 +0.8121109,76,17.48439,5.939912 +0.7529022,66,799.6337,5.122457 +0.6601005,18,329.2555,3.912098 +0.6066048,10,102.3450,3.263182 +0.8305692,4,528.8944,2.906320 +0.7135519,56,984.7976,4.918357 +0.6207566,9,387.2948,3.173807 +0.8736776,16,980.3776,4.408145 +0.5024343,85,554.2605,4.859215 +0.9368968,98,732.1767,6.012956 +0.7485144,9,525.2917,3.486522 +0.6679124,29,918.2333,4.321213 +0.7410865,33,374.1743,4.591967 +0.890034,22,97.48476,4.824609 +0.6235045,3,163.2022,1.891596 +0.8788184,31,854.3159,4.942984 +0.5733564,37,896.6874,4.339044 +0.5235723,75,313.9326,4.804836 +0.9031916,32,943.1994,5.072061 +0.9249485,3,634.5567,3.085764 +0.7795184,67,493.5099,5.202364 +0.5442364,42,260.3850,4.397356 +0.7538088,62,784.0382,5.080281 +0.8714196,21,519.4405,4.624195 +0.6037611,95,392.9248,5.105584 +0.605645,60,388.6159,4.775016 +0.7262467,62,451.3037,5.027994 +0.7070611,87,613.337,5.224093 +0.7124193,55,764.3051,4.905012 +0.7101894,24,335.7709,4.267068 +0.6363921,82,912.7779,5.048506 +0.5928241,59,575.4637,4.736328 +0.5114741,93,76.76653,4.969051 +0.6220136,86,987.4373,5.057191 +0.7778587,16,566.4055,4.090325 +0.7682783,65,739.0363,5.147656 +0.5197742,14,43.77784,3.428288 +0.80071,35,263.5616,4.799034 +0.848174,59,953.4341,5.291993 +0.6336437,40,504.9083,4.513693 +0.8964462,29,426.0757,4.983478 +0.9333257,71,108.4557,5.932473 +0.7945195,27,445.6889,4.56859 +0.6805711,44,975.6775,4.672505 +0.6033443,84,673.2954,5.011609 +0.6296885,53,838.786,4.718106 +0.5823181,56,649.965,4.678212 +0.5828971,59,375.5552,4.723169 +0.511142,14,841.3459,3.379117 +0.8984646,69,992.3174,5.582221 +0.6265228,50,935.0175,4.667815 +0.8357867,25,882.2828,4.624052 +0.7292072,38,532.7761,4.668328 +0.7758697,47,696.2516,4.9334 +0.7132152,32,841.5131,4.495411 +0.9086833,78,30.63744,6.228538 +0.840099,80,492.2464,5.488013 +0.6170762,97,396.9618,5.142746 +0.704527,39,249.5485,4.647633 +0.5579608,9,817.2322,3.035987 +0.770093,62,954.7968,5.115551 +0.8798565,66,727.0262,5.482889 +0.7694484,46,751.1275,4.901031 +0.7374544,32,581.615,4.553228 +0.8999201,99,999.735,5.823784 +0.8503247,87,92.39913,5.69636 +0.9096688,76,50.36219,6.011044 +0.8427042,4,121.9022,2.976982 +0.7524447,6,660.8017,3.085734 +0.6241854,30,577.2345,4.265333 +0.8464372,99,474.021,5.650894 +0.7979247,35,697.1621,4.771349 +0.6554351,97,127.8194,5.24562 +0.9227335,37,278.5272,5.314402 +0.558691,20,388.7766,3.799387 +0.7875231,58,927.0415,5.110648 +0.8474654,11,318.4969,3.998567 +0.9199452,89,804.1497,5.853293 +0.755178,11,781.259,3.692196 +0.7501978,79,962.4833,5.24055 +0.5877117,66,66.11904,4.866375 +0.6082031,24,295.8402,4.054799 +0.9181698,39,877.5183,5.290326 +0.9190084,52,291.3868,5.529388 +0.908331,53,983.4375,5.449875 +0.7157437,47,555.3253,4.799205 +0.8001084,12,932.2304,3.901024 +0.7591904,99,164.9959,5.466765 +0.8684237,69,677.5477,5.472583 +0.7669572,55,622.1829,5.02765 +0.6282833,69,112.7529,4.951761 +0.8508472,18,856.9338,4.415786 +0.7813152,12,19.93834,4.079094 +0.8131596,67,917.1183,5.278312 +0.5229803,43,226.2008,4.380527 +0.760018,94,554.3343,5.38929 +0.6581901,58,114.3732,4.880992 +0.7050023,6,156.9929,2.963535 +0.6388137,26,345.2279,4.180866 +0.7703802,21,302.4435,4.307283 +0.7719865,73,825.9207,5.236278 +0.647917,91,504.8866,5.148101 +0.6770831,48,72.47072,4.804889 +0.6447003,35,175.7579,4.446625 +0.757191,94,476.659,5.386077 +0.8901368,78,382.6649,5.654444 +0.6815508,93,131.4914,5.266452 +0.5256458,36,822.9934,4.234394 +0.6296011,17,2.528912,4.934265 +0.677469,30,227.9974,4.3843 +0.7770068,41,10.56137,5.51524 +0.5165083,4,88.90173,2.023952 +0.7099214,6,708.6837,2.965266 +0.5776249,27,653.449,4.090242 +0.8385866,70,867.0004,5.381325 +0.653134,58,24.65445,5.028615 +0.5222114,38,940.511,4.271954 +0.52211,12,456.7922,3.253085 +0.8821391,25,431.2503,4.807591 +0.5107624,24,234.9617,3.87355 +0.791372,43,414.8101,4.916052 +0.5539438,31,842.9205,4.161233 +0.5333754,25,497.1534,3.945494 +0.9296186,54,416.9209,5.599508 +0.9344575,72,846.4138,5.797461 +0.7615936,10,617.3528,3.622655 +0.6086307,79,751.1954,4.975634 +0.6602143,34,809.9639,4.433619 +0.6904942,82,678.079,5.149386 +0.8644522,3,242.6071,2.713617 +0.7364714,20,489.1806,4.172711 +0.9352433,59,409.2411,5.695107 +0.8090254,95,529.3272,5.514943 +0.9187024,40,553.3839,5.320665 +0.841718,5,350.1257,3.205612 +0.6405692,52,765.612,4.72416 +0.8836825,33,897.9677,5.008132 +0.7230816,45,914.3267,4.777408 +0.5582674,44,268.5147,4.458432 +0.6244152,33,841.241,4.340628 +0.898817,19,297.5451,4.682202 +0.6923485,67,335.8841,5.020066 +0.8147905,97,528.7302,5.544107 +0.8768643,70,439.8828,5.524466 +0.690254,56,430.0983,4.880391 +0.612166,40,830.4586,4.470533 +0.6082176,75,78.70042,4.992784 +0.7485141,81,814.3725,5.256056 +0.6398987,7,971.5611,2.953990 +0.8322966,81,541.9221,5.470873 +0.7008189,28,314.5543,4.372912 +0.7927534,27,363.9284,4.56741 +0.69938,38,360.3372,4.609066 +0.6438937,97,270.8365,5.19707 +0.7341373,38,96.0892,4.736542 +0.8522399,52,668.3805,5.222469 +0.6801307,19,284.4478,4.004812 +0.831692,24,117.5902,4.639136 +0.9476048,10,240.9065,4.493684 +0.551496,94,993.1748,5.005831 +0.8230653,98,922.7676,5.56258 +0.8699226,40,900.2922,5.093391 +0.6854477,63,963.481,4.948333 +0.8432787,96,923.4997,5.606291 +0.8451935,36,623.6866,4.935431 +0.577007,25,887.985,4.023107 +0.8109441,94,56.21722,5.700043 +0.8529192,29,157.5588,4.845897 +0.817715,65,427.0795,5.283968 +0.7494217,5,122.7565,2.893578 +0.6925452,99,647.7264,5.284948 +0.8609249,36,630.441,4.989459 +0.9247448,93,182.9758,5.989076 +0.5416671,42,787.1045,4.385566 +0.8597668,42,692.5763,5.095625 +0.6654662,58,58.45632,4.942707 +0.9231077,77,432.3362,5.7963 +0.7628278,27,841.1814,4.477327 +0.8122138,17,380.4142,4.248607 +0.8622663,3,760.8548,2.695047 +0.5892135,2,65.48377,1.170696 +0.781671,3,592.567,2.359244 +0.5845937,10,856.3625,3.198467 +0.9229792,35,726.8734,5.244499 +0.8207156,75,72.31391,5.524492 +0.7980214,78,612.9044,5.349749 +0.8412272,11,464.5139,3.968972 +0.7087537,57,490.1565,4.928935 +0.7510459,66,987.4297,5.11618 +0.6339613,70,59.09847,5.014612 +0.7524349,95,349.5906,5.390574 +0.5876294,35,50.53542,4.381489 +0.7986364,13,537.1481,3.971551 +0.8415225,100,344.543,5.653898 +0.6416455,79,734.274,5.032779 +0.9383721,7,402.2937,4.084501 +0.6881057,86,328.5769,5.190362 +0.8396862,77,935.2592,5.448255 +0.932392,48,446.9599,5.534071 +0.8366197,48,323.8904,5.133291 +0.5522438,21,518.9197,3.828737 +0.824058,98,930.1329,5.565161 +0.6301056,95,90.10231,5.200541 +0.5108554,90,370.9280,4.916536 +0.6094796,21,341.6719,3.941419 +0.7173496,44,414.3781,4.757312 +0.5826613,8,428.8542,2.968118 +0.65258,38,239.701,4.520544 +0.6426234,93,185.9158,5.175764 +0.6141543,82,993.7445,5.009928 +0.656938,56,195.7736,4.831684 +0.8172469,30,518.1036,4.713522 +0.6019059,53,676.9374,4.670159 +0.6549961,6,547.4558,2.824931 +0.7232873,17,174.1364,4.019165 +0.7805223,32,50.51764,4.792173 +0.9196643,5,314.0752,3.621295 +0.7813478,83,469.8973,5.356797 +0.6547584,83,195.7537,5.115725 +0.9284674,32,394.5050,5.230222 +0.5197441,14,926.1198,3.395476 +0.6899643,72,802.6675,5.054524 +0.5053075,6,791.7115,2.484155 +0.5424734,15,289.0827,3.508554 +0.7931831,19,435.9833,4.281749 +0.5941135,78,221.3831,4.957422 +0.865215,28,291.7503,4.836752 +0.5424058,3,487.1848,1.687881 +0.7056974,65,740.978,5.012886 +0.9368825,35,14.76310,6.35053 +0.57561,45,291.1745,4.505737 +0.7682693,51,192.9438,5.006944 +0.6337592,36,428.2575,4.432639 +0.8266066,64,115.1584,5.371109 +0.5875868,6,201.9519,2.670309 +0.8789958,31,49.8531,5.149625 +0.7118476,13,884.6736,3.732919 +0.5739909,14,394.6366,3.504593 +0.7322612,47,187.8178,4.860688 +0.714794,50,630.2739,4.841745 +0.8901368,76,5.784143,8.037162 +0.7201633,26,820.6769,4.345689 +0.9010186,37,424.7176,5.182914 +0.6013714,59,541.621,4.751601 +0.7908577,46,997.1488,4.951546 +0.6927482,71,702.3211,5.051229 +0.5590977,11,594.2949,3.241059 +0.7164781,42,963.2049,4.711018 +0.9163904,43,502.9438,5.361358 +0.6612428,83,623.4967,5.104527 +0.6425414,87,862.6899,5.101567 +0.8213658,65,322.2208,5.303021 +0.7373462,89,551.5728,5.302949 +0.5986439,55,478.4257,4.695178 +0.7244378,30,347.0494,4.479614 +0.6218237,50,636.3346,4.661784 +0.725282,28,856.954,4.416502 +0.8487246,16,101.9375,4.375022 +0.7496028,57,605.1464,5.013753 +0.6803173,56,902.4544,4.85285 +0.7951882,70,583.4215,5.26867 +0.9259178,22,242.7018,4.957652 +0.7516096,36,551.4496,4.67813 +0.8295028,71,780.4252,5.365977 +0.8778276,15,475.6616,4.381838 +0.8194508,74,613.7646,5.370245 +0.8235226,30,845.348,4.726012 +0.7537613,69,934.379,5.15409 +0.6151436,20,976.8233,3.904389 +0.9386936,32,705.0091,5.281983 +0.6032401,27,860.4168,4.136792 +0.8156953,34,5.919545,6.147653 +0.8026528,42,280.3825,4.939681 +0.7619484,60,59.23093,5.209588 +0.876842,90,23.85571,6.264086 +0.6835586,12,487.0681,3.595008 +0.7693461,43,703.687,4.851691 +0.6153242,91,590.2577,5.089901 +0.5938335,2,361.9556,1.176101 +0.9398924,30,127.9098,5.339887 +0.6309711,19,744.1419,3.892506 +0.6674976,82,87.71144,5.172374 +0.7843308,32,890.146,4.664321 +0.8866003,55,245.5037,5.422817 +0.9174256,47,799.3804,5.417252 +0.7856124,89,946.9574,5.402764 +0.7332223,76,519.9381,5.185325 +0.5741031,45,596.0796,4.496812 +0.7555969,51,664.927,4.945389 +0.8515928,2,433.3597,2.047442 +0.573079,57,530.3749,4.677239 +0.8753101,72,65.81185,5.720728 +0.6491346,55,79.26238,4.842491 +0.794759,21,705.0873,4.362667 +0.9401834,16,505.0417,4.787617 +0.5122126,23,163.9715,3.842354 +0.8804487,55,7.418967,7.01951 +0.5310158,12,338.4504,3.271906 +0.9143952,2,334.7572,2.43831 +0.609437,49,766.6815,4.622999 +0.743276,29,559.6721,4.489996 +0.750802,43,906.3193,4.805193 +0.7028861,82,570.4726,5.175535 +0.7121867,61,670.229,4.981277 +0.5660296,84,38.86039,5.04032 +0.5041909,21,216.9332,3.744519 +0.5551879,50,348.8803,4.550023 +0.8878471,6,35.24714,3.745212 +0.892262,73,973.6806,5.593922 +0.696367,40,784.4907,4.633238 +0.6421879,87,282.2655,5.116123 +0.6215205,34,360.9796,4.365564 +0.789945,12,293.5746,3.88169 +0.640508,21,401.1258,4.002517 +0.7915758,10,797.9483,3.70977 +0.9387423,22,411.4235,5.024741 +0.5622273,54,898.4625,4.614994 +0.5953253,60,914.328,4.750301 +0.6392777,35,251.4834,4.428198 +0.8932596,42,377.1065,5.241942 +0.7364436,36,696.4678,4.64023 +0.5885521,10,365.018,3.20982 +0.829681,93,746.4872,5.549487 +0.5057063,93,958.7418,4.927446 +0.9257312,56,223.3139,5.636041 +0.6316418,80,73.15034,5.092505 +0.7197106,31,975.8304,4.483773 +0.7869882,29,766.9128,4.596767 +0.6074108,62,445.4765,4.800981 +0.8286439,26,784.7253,4.632707 +0.5689967,25,798.7926,4.008652 +0.8410289,5,870.3467,3.196519 +0.5227112,90,450.7685,4.933785 +0.6375155,4,668.4885,2.304924 +0.6896833,91,347.8749,5.231752 +0.7352017,52,438.1424,4.919824 +0.6386533,77,988.0837,5.007016 +0.9461375,49,491.345,5.64017 +0.654627,97,832.8996,5.199254 +0.5894615,29,60.51807,4.218363 +0.5269488,2,862.4869,1.015177 +0.9331138,87,461.2927,5.930507 +0.8665317,70,329.2841,5.497526 +0.9175936,89,572.3668,5.85077 +0.8128998,75,662.1277,5.36021 +0.765531,25,766.4274,4.423686 +0.8934914,39,80.10902,5.31473 +0.7163465,12,523.9966,3.673615 +0.7988134,17,41.4153,4.338415 +0.5451061,29,90.2829,4.114404 +0.9189236,10,718.424,4.249735 +0.5857667,34,673.6846,4.294493 +0.7549478,35,321.5195,4.673801 +0.7943498,5,543.3669,3.023187 +0.7016415,74,252.3303,5.117568 +0.559157,97,22.49902,5.190322 +0.8614353,89,59.39922,5.836828 +0.6084914,11,930.5192,3.342619 +0.9059065,52,830.8472,5.428208 +0.8895644,9,909.9186,3.990418 +0.9077405,66,367.3664,5.62232 +0.7912619,4,954.7676,2.755165 +0.6900781,79,4.370944,6.382217 +0.682151,37,498.7817,4.548054 +0.8415262,15,847.1698,4.231924 +0.8512212,81,70.99263,5.691611 +0.5211151,5,136.4987,2.309817 +0.8838984,23,530.1152,4.746854 +0.6994729,78,678.329,5.131444 +0.51668,42,187.2642,4.352938 +0.9481614,48,182.5941,5.705067 +0.9236594,4,668.0228,3.406841 +0.6312497,22,566.5117,4.020927 +0.7943789,17,577.5567,4.188866 +0.8626302,11,527.8644,4.051431 +0.6705389,50,89.56081,4.807473 +0.5516966,49,16.48661,4.683886 +0.8668004,29,971.0603,4.845009 +0.8014657,14,739.804,4.042122 +0.9053415,70,69.74634,5.837114 +0.6831015,69,194.3605,5.037981 +0.8789359,53,415.8494,5.343093 +0.9289235,69,568.3182,5.747231 +0.7899977,78,938.5117,5.323466 +0.9479518,39,874.7101,5.484147 +0.6049941,13,631.9339,3.496114 +0.9011545,67,390.2548,5.599185 +0.7040379,5,153.3049,2.757018 +0.6679361,76,271.9522,5.068211 +0.6960151,71,476.9279,5.062621 +0.8435223,54,164.3906,5.274298 +0.8736423,16,89.53738,4.491120 +0.59024,59,791.2283,4.72982 +0.9295583,4,208.2342,3.470088 +0.5965512,55,241.4432,4.700357 +0.6738523,47,545.3299,4.714014 +0.5366376,40,704.4424,4.338593 +0.8379685,43,361.8964,5.054343 +0.8422289,25,45.08528,4.825735 +0.717953,38,625.8311,4.641661 +0.5679036,27,216.3701,4.080988 +0.7799007,22,500.1768,4.36294 +0.9302193,42,778.122,5.413554 +0.782723,100,474.8462,5.486657 +0.8622244,25,578.762,4.722007 +0.940699,5,331.4978,3.788291 +0.6665559,91,293.6174,5.19182 +0.7849823,12,886.944,3.855518 +0.6102746,45,795.5418,4.558929 +0.5301608,34,410.1793,4.198522 +0.7874662,64,876.8466,5.180669 +0.7584281,61,372.7229,5.091763 +0.883191,19,283.4864,4.609797 +0.8593794,58,94.39034,5.436929 +0.9007119,90,606.605,5.777169 +0.7826633,84,414.7848,5.371269 +0.8178446,35,453.0215,4.834728 +0.5831485,51,648.3131,4.608569 +0.7011728,80,491.1916,5.157069 +0.577471,34,341.6812,4.284249 +0.8422745,3,247.0640,2.607015 +0.5670756,52,252.8716,4.604588 +0.8654929,46,553.3708,5.185306 +0.555244,43,568.0426,4.428859 +0.8185472,61,153.0966,5.287868 +0.6000175,94,396.2763,5.091671 +0.9250674,4,959.921,3.415297 +0.519015,23,407.4622,3.848192 +0.9100592,26,412.1465,4.97078 +0.5725889,11,752.5595,3.268075 +0.7735475,80,13.28211,5.94689 +0.6812585,61,742.4313,4.918926 +0.8009573,91,495.3601,5.466766 +0.8496011,36,14.80379,5.591567 +0.8966086,24,326.1461,4.849813 +0.6029698,77,911.9371,4.946375 +0.5789911,33,268.6701,4.265316 +0.9015798,74,379.2924,5.668898 +0.8378741,59,176.2669,5.314487 +0.5142631,13,875.7704,3.314014 +0.6618115,90,361.3256,5.170771 +0.618478,79,498.9765,4.996128 +0.589535,53,843.2393,4.647428 +0.5709581,19,283.5134,3.779699 +0.934535,53,136.1736,5.70354 +0.9176517,68,662.3776,5.671203 +0.8882659,49,385.4667,5.328562 +0.7906314,62,227.6577,5.19901 +0.8331562,33,189.6048,4.866175 +0.8592519,5,199.5106,3.29058 +0.8631095,5,586.7871,3.295034 +0.7715704,95,393.3997,5.430589 +0.7810495,18,892.4912,4.195172 +0.6263919,51,861.9839,4.683013 +0.726559,66,379.8912,5.077005 +0.584635,16,816.7968,3.646219 +0.7622277,99,441.9479,5.434317 +0.544085,4,913.6733,2.079431 +0.8988398,92,782.1835,5.776936 +0.7965645,46,648.4351,4.97143 +0.5655758,39,916.2638,4.367322 +0.5597001,40,481.4167,4.380355 +0.6119028,43,619.7148,4.528215 +0.5059835,35,910.8695,4.177567 +0.888591,3,379.9952,2.841126 +0.8923276,39,532.5778,5.174923 +0.9391946,88,295.5114,6.001715 +0.8329471,5,561.5299,3.165962 +0.807254,49,471.086,5.051749 +0.6779844,72,546.0019,5.035882 +0.7169698,39,519.4347,4.661549 +0.6063137,89,822.5501,5.056334 +0.8338426,46,400.1937,5.087515 +0.9038509,24,381.7342,4.880606 +0.8799192,61,668.0104,5.431366 +0.7922678,53,992.3444,5.057599 +0.6221619,74,577.9326,4.953811 +0.7974794,6,983.7875,3.226665 +0.5508857,7,651.114,2.755166 +0.5805972,47,369.621,4.545734 +0.7430752,51,665.0276,4.916948 +0.889692,77,94.36406,5.767793 +0.8952883,43,895.1652,5.247112 +0.9065478,17,242.677,4.641579 +0.8725372,82,83.33613,5.757366 +0.6905845,95,765.2116,5.250851 +0.5161306,2,751.7912,0.9905717 +0.6449158,76,438.4860,5.016555 +0.850453,76,108.6052,5.580327 +0.6725742,2,480.4059,1.386370 +0.6161149,76,295.3912,4.971517 +0.7963333,93,957.2727,5.458221 +0.8256374,92,764.9899,5.530569 +0.8711578,4,954.592,3.086392 +0.7021267,58,94.03852,4.987058 +0.6045699,15,764.2379,3.627434 +0.8155154,53,809.7748,5.121834 +0.8537439,97,361.4350,5.66994 +0.6076632,42,300.3761,4.50934 +0.6164641,90,997.455,5.079993 +0.6679983,77,914.1822,5.060077 +0.8267494,47,758.4837,5.069028 +0.889724,88,814.6457,5.709872 +0.5710028,58,572.7667,4.686314 +0.7476734,66,752.3688,5.111589 +0.8446393,16,688.6557,4.298853 +0.6105829,77,741.3553,4.960555 +0.6288055,99,627.1944,5.171451 +0.8747276,74,936.3155,5.536257 +0.8663237,60,476.5183,5.378106 +0.6572653,50,279.4464,4.738406 +0.818589,2,408.8505,1.893213 +0.5529693,48,363.1589,4.51419 +0.8066909,59,384.7873,5.188151 +0.799528,20,910.703,4.334523 +0.8265927,61,476.6806,5.262121 +0.9341984,38,883.2063,5.367274 +0.805301,37,72.53905,4.940323 +0.565158,56,547.6801,4.65019 +0.5359521,6,879.5133,2.550337 +0.7844629,81,944.9339,5.335886 +0.7571667,9,95.5825,3.542732 +0.9163885,78,973.905,5.746129 +0.5834059,92,85.6609,5.08992 +0.7239388,81,538.4948,5.210062 +0.7697425,2,525.1054,1.698599 +0.663207,98,479.0765,5.228057 +0.9052223,45,320.5551,5.352677 +0.5567801,53,341.8657,4.597828 +0.8841526,26,887.5597,4.833461 +0.9384,63,439.3002,5.75641 +0.838798,92,83.15308,5.710527 +0.6815254,15,309.6898,3.798653 +0.5857514,42,476.6759,4.464864 +0.8293977,80,31.63208,5.801698 +0.842452,34,184.5945,4.92152 +0.8692851,97,633.1602,5.703721 +0.7267881,31,137.6431,4.537449 +0.7356832,56,658.8381,4.969012 +0.7227652,91,554.936,5.288082 +0.8580446,92,162.8874,5.697804 +0.9311096,57,330.0965,5.656089 +0.87975,61,740.2764,5.428649 +0.5778756,23,14.93272,4.118634 +0.7842306,30,313.8244,4.629866 +0.6270722,33,779.2002,4.346039 +0.7057705,79,302.6537,5.167424 +0.5971569,35,33.86121,4.433412 +0.9313556,92,31.7865,6.522864 +0.9145324,22,844.1247,4.855005 +0.5121691,72,610.6148,4.751727 +0.7191218,46,152.6025,4.822954 +0.6811826,4,294.6595,2.422272 +0.6025292,48,964.4258,4.593841 +0.8007709,18,992.2387,4.250902 +0.9168472,47,961.849,5.410959 +0.9089293,79,416.9533,5.742267 +0.8455079,57,263.6889,5.292637 +0.8230542,30,80.5108,4.821179 +0.5176877,25,849.4768,3.915583 +0.559614,30,68.57347,4.180268 +0.8706231,16,203.46,4.426949 +0.7886635,87,614.8048,5.401131 +0.5709352,53,489.2911,4.618905 +0.6175398,45,82.33716,4.618999 +0.9273795,83,849.5728,5.847243 +0.6616265,64,464.1305,4.921935 +0.9092348,35,43.38426,5.454607 +0.6639229,9,488.635,3.271458 +0.7123701,24,645.2518,4.264661 +0.5971812,71,323.3251,4.887295 +0.9040199,58,302.4310,5.526017 +0.891341,3,853.512,2.85285 +0.8327472,46,999.0827,5.068139 +0.538213,77,36.63778,4.919466 +0.9343277,60,798.6898,5.678839 +0.5291167,96,940.8475,4.986283 +0.5365506,2,905.9114,1.037311 +0.5783818,67,519.9423,4.807253 +0.6017498,70,535.2365,4.878864 +0.5621818,55,61.71024,4.679536 +0.631023,85,936.9508,5.064591 +0.6173371,18,425.883,3.820447 +0.5176463,23,673.073,3.843871 +0.7944634,58,930.0162,5.12811 +0.5406991,33,242.3118,4.196870 +0.6967938,23,300.9028,4.203233 +0.902891,90,637.2883,5.785307 +0.8088856,26,119.2594,4.627547 +0.5780078,51,584.8612,4.600362 +0.7028602,54,774.6654,4.871879 +0.6738062,30,613.2607,4.363156 +0.5541092,10,650.902,3.135661 +0.9457014,54,949.3188,5.683393 +0.8972022,46,406.4764,5.321292 +0.8667156,11,684.8948,4.065692 +0.9310755,76,645.1775,5.818983 +0.5542021,24,646.2454,3.947356 +0.5404606,42,196.7277,4.394176 +0.686979,56,163.9087,4.898354 +0.7025409,41,410.7730,4.67216 +0.8317294,53,419.5157,5.181381 +0.9424831,76,426.1901,5.908399 +0.7372916,44,485.0423,4.798806 +0.6709233,84,331.3589,5.140749 +0.6746366,12,859.704,3.571476 +0.8216683,34,540.0916,4.821108 +0.643978,57,272.3593,4.812046 +0.5520607,53,60.71588,4.631438 +0.7007719,42,765.4727,4.67977 +0.9199158,12,441.8452,4.417682 +0.7121463,56,636.3291,4.919563 +0.7334962,37,720.3002,4.65424 +0.7212483,71,372.2988,5.118448 +0.8790645,22,142.9078,4.741032 +0.9044781,59,215.2122,5.560589 +0.5302091,33,553.2379,4.172572 +0.9233759,72,269.3898,5.778901 +0.6341785,99,731.2685,5.179165 +0.8801704,15,991.0715,4.383208 +0.6209372,66,531.3332,4.869074 +0.7938349,97,125.7036,5.560664 +0.7822507,53,943.604,5.032947 +0.7205718,37,352.3203,4.634869 +0.8427076,42,572.6246,5.04161 +0.7351081,7,70.82834,3.233934 +0.5523457,19,653.4837,3.739476 +0.9089972,81,543.5491,5.749272 +0.7323391,50,895.3925,4.87574 +0.521568,82,214.5986,4.871706 +0.713984,22,361.0807,4.202606 +0.7087699,71,76.13513,5.170263 +0.7970846,85,246.2059,5.433973 +0.9484904,23,924.6415,5.115985 +0.695886,39,421.1168,4.619389 +0.5020152,34,437.4275,4.149307 +0.9410206,71,688.0979,5.836372 +0.887759,11,259.6189,4.178223 +0.7860928,52,439.7041,5.040212 +0.6178195,77,148.7578,5.001551 +0.6259203,98,944.3424,5.156093 +0.7109561,51,193.5400,4.873273 +0.7578351,95,481.2859,5.394517 +0.7206983,24,140.5904,4.313175 +0.8106681,17,827.8169,4.234558 +0.8989231,38,423.3858,5.192314 +0.7481471,23,39.30671,4.449383 +0.5809042,43,147.3237,4.491469 +0.7851278,29,506.1053,4.596806 +0.7531022,27,360.8266,4.463365 +0.8690282,88,68.67441,5.829221 +0.7360276,14,836.9838,3.859787 +0.6293365,7,300.9803,2.933594 +0.6489233,37,151.2782,4.503674 +0.7898306,59,323.5039,5.148535 +0.6523805,84,815.1856,5.094532 +0.5320332,29,993.8974,4.066623 +0.9269118,36,547.8584,5.294179 +0.8070126,24,620.2786,4.506701 +0.6693941,42,17.37505,4.888551 +0.5038683,85,633.7558,4.860832 +0.8940935,26,757.7715,4.87946 +0.8346877,92,575.5123,5.561954 +0.9175068,83,713.3788,5.798848 +0.9257833,54,283.4987,5.595522 +0.9184304,74,780.53,5.726756 +0.8686702,7,355.3133,3.666443 +0.5827008,35,998.6566,4.310686 +0.7970785,87,304.8774,5.441025 +0.9382596,25,548.312,5.107429 +0.8953957,59,306.9858,5.497621 +0.5908737,18,574.3097,3.765925 +0.5266771,30,920.222,4.085747 +0.5057869,11,132.1592,3.141296 +0.6763682,66,533.283,4.970388 +0.5986894,27,175.3026,4.143136 +0.8778105,11,320.0037,4.125823 +0.6886012,37,602.0783,4.559364 +0.8813419,12,330.9027,4.21685 +0.7192435,42,460.7729,4.724577 +0.5545486,56,15.70768,4.807326 +0.9325303,38,346.1985,5.383635 +0.669051,56,640.025,4.834118 +0.6583283,86,996.489,5.1202 +0.6057796,77,325.1724,4.961303 +0.7796517,90,571.285,5.404014 +0.5056907,17,266.7461,3.554489 +0.7515106,11,303.1314,3.690423 +0.7039952,48,202.1302,4.811129 +0.809957,79,66.13782,5.541357 +0.9224645,6,619.0758,3.812107 +0.5094466,88,898.6833,4.893397 +0.9477443,73,129.9485,6.031339 +0.5485121,7,9.254338,2.885109 +0.9305325,22,684.9766,4.95488 +0.7119204,89,910.6426,5.244861 +0.7536868,36,162.9004,4.713997 +0.8250412,54,148.9539,5.221541 +0.687851,59,864.5388,4.906065 +0.918532,97,597.2784,5.909369 +0.5595147,41,544.9091,4.398864 +0.9004672,85,239.2722,5.78195 +0.59365,54,878.0916,4.668481 +0.8783227,10,896.2678,4.030569 +0.8133267,96,370.0175,5.54357 +0.8671705,60,64.87276,5.5537 +0.883281,74,645.421,5.575454 +0.5804001,84,84.52473,5.018588 +0.8266129,54,200.4741,5.207821 +0.6836131,20,664.69,4.04816 +0.6035206,9,628.5172,3.133810 +0.6702452,69,849.1852,4.986271 +0.6364704,48,883.8399,4.655244 +0.5671835,9,546.4393,3.056326 +0.5690553,3,236.2613,1.753378 +0.8756632,64,780.2536,5.444975 +0.7153843,63,838.4182,5.008798 +0.804762,33,609.6379,4.747504 +0.6179514,73,488.8654,4.938339 +0.8194816,96,853.4875,5.540392 +0.7588645,2,152.7610,1.664141 +0.7981592,57,334.5773,5.144643 +0.9490692,85,556.0761,6.016835 +0.5867042,70,990.4885,4.849403 +0.6007492,12,694.5446,3.410986 +0.736716,84,601.6296,5.260216 +0.6323489,2,774.0551,1.274785 +0.738871,58,355.3918,5.011991 +0.8140275,34,702.4303,4.794691 +0.7255078,34,647.2084,4.572123 +0.864685,28,838.2934,4.812339 +0.7486541,3,207.2905,2.251476 +0.7494737,2,623.8884,1.626546 +0.6653869,13,954.9271,3.624499 +0.537772,95,186.5677,5.007723 +0.6538231,71,568.5899,4.980417 +0.9414375,88,510.526,5.987133 +0.5479147,54,51.48266,4.646137 +0.557724,48,903.0369,4.516893 +0.9386544,56,857.2707,5.659779 +0.5940301,94,253.2258,5.088894 +0.6501443,64,959.9111,4.893937 +0.6067973,54,908.6455,4.691129 +0.654507,59,52.07229,4.941878 +0.8192652,79,340.7329,5.43031 +0.939037,64,876.5141,5.74957 +0.6135284,81,459.9465,5.006509 +0.7110579,18,878.6845,4.01835 +0.814323,78,780.191,5.388123 +0.8908215,43,392.1403,5.246676 +0.53005,80,518.9931,4.85878 +0.6253301,33,718.2566,4.343194 +0.9362074,50,393.0591,5.591873 +0.7219975,87,541.2979,5.255803 +0.9459326,15,316.912,4.798087 +0.930335,80,807.2895,5.841721 +0.5681464,16,378.3508,3.61698 +0.9499151,14,420.992,4.770063 +0.7182865,68,375.8024,5.081201 +0.7794312,9,96.4755,3.610739 +0.5496585,34,351.8712,4.233967 +0.8552836,83,358.2531,5.571118 +0.7258398,66,132.6162,5.114452 +0.6802115,50,625.1914,4.771628 +0.7970908,68,216.5083,5.284177 +0.7856198,32,35.54217,4.868538 +0.6896799,53,619.3499,4.833827 +0.5405124,11,709.2976,3.202944 +0.5931073,58,181.7167,4.740144 +0.9296065,57,274.144,5.657511 +0.8894637,99,230.9085,5.83801 +0.7269455,94,416.5431,5.324466 +0.5054073,6,366.2931,2.485701 +0.5939675,62,223.0338,4.787509 +0.9279325,87,412.7045,5.904856 +0.874619,38,700.4562,5.077989 +0.773303,85,519.679,5.351931 +0.6715655,4,828.7634,2.39306 +0.9316947,6,611.5014,3.880666 +0.7816273,64,883.5622,5.166293 +0.7616447,35,490.4985,4.682418 +0.6307362,20,816.8543,3.93619 +0.7790853,60,134.1737,5.174301 +0.7120402,8,831.7674,3.270146 +0.6111881,54,420.4505,4.704805 +0.5667839,65,250.6678,4.773346 +0.7412546,31,604.9042,4.536834 +0.761954,86,590.23,5.331604 +0.8147305,97,669.9403,5.538824 +0.921257,12,598.9547,4.420777 +0.8579846,9,796.0635,3.848182 +0.6420126,59,390.8569,4.82794 +0.6954217,94,744.5522,5.25295 +0.9495565,16,861.5791,4.855693 +0.6113444,54,989.5619,4.69867 +0.8328882,19,203.3542,4.424911 +0.8856367,28,696.2317,4.898714 +0.640194,2,117.6311,1.300124 +0.6474485,52,427.2151,4.742487 +0.5670605,59,541.7196,4.692942 +0.8488514,30,185.5357,4.848086 +0.7165594,73,490.8832,5.123192 +0.6623204,53,298.4773,4.790835 +0.5074262,23,273.8531,3.829228 +0.6352413,49,967.0568,4.668145 +0.5649781,62,178.2758,4.740777 +0.7498571,20,583.6562,4.204169 +0.5835476,56,123.3513,4.706382 +0.7550705,79,316.9494,5.271653 +0.7218668,75,330.5023,5.16151 +0.5017672,84,382.8786,4.85166 +0.630573,36,709.534,4.422514 +0.935681,96,964.6872,5.985507 +0.8554879,34,145.4236,4.982775 +0.7229327,81,378.9831,5.214754 +0.8577544,42,999.5687,5.083548 +0.9432636,89,833.7002,5.990668 +0.7666204,57,493.171,5.056368 +0.6362688,29,762.5893,4.259337 +0.8958883,67,622.4665,5.560987 +0.8283473,13,847.803,4.063877 +0.7218571,74,269.1406,5.157658 +0.8416842,15,260.8999,4.25085 +0.8848287,95,302.4653,5.775057 +0.8140273,82,303.3425,5.4457 +0.7295315,70,835.9745,5.11325 +0.5807518,51,702.8305,4.603968 +0.6501605,82,199.395,5.09776 +0.8406729,11,74.10512,4.033798 +0.903668,100,908.3707,5.848135 +0.7548947,70,466.2839,5.176738 +0.8195727,43,868.5602,4.982021 +0.5663267,78,102.8917,4.929645 +0.9173868,2,983.7003,2.457186 +0.628796,87,665.3164,5.079912 +0.8091684,35,694.259,4.802692 +0.7323985,53,860.108,4.918963 +0.7742748,5,320.925,2.959510 +0.6931249,34,890.3259,4.49974 +0.5241701,19,878.5768,3.686026 +0.8520986,31,769.1417,4.844574 +0.589649,22,718.8403,3.938434 +0.5274364,77,522.0673,4.826529 +0.6014354,43,831.8862,4.507671 +0.7802544,69,375.5549,5.23125 +0.6449134,2,891.3265,1.308500 +0.8130707,32,796.61,4.744624 +0.573831,8,728.1806,2.947466 +0.9301646,10,393.0404,4.335678 +0.8982183,99,279.571,5.862206 +0.5661488,79,75.63719,4.951629 +0.6237751,59,588.3647,4.790296 +0.6550018,40,711.4487,4.551573 +0.8109876,28,456.1428,4.643873 +0.6988211,2,699.4621,1.463250 +0.5704728,50,793.2397,4.570573 +0.5820357,46,923.769,4.525452 +0.6473964,75,769.8616,5.005384 +0.9244471,96,835.5283,5.924331 +0.6504812,57,542.7684,4.81398 +0.867966,74,895.898,5.512985 +0.9418494,16,774.1639,4.7926 +0.6489154,2,96.85372,1.325131 +0.5085422,15,625.4407,3.440078 +0.6989324,82,629.8381,5.166497 +0.9183082,48,186.7327,5.499822 +0.7709177,56,8.400555,5.942506 +0.6682601,40,867.857,4.576017 +0.89172,55,165.8517,5.472501 +0.6924027,21,631.6706,4.109167 +0.7003671,80,747.3869,5.149938 +0.6623735,22,971.5073,4.081657 +0.6241618,66,884.9327,4.870709 +0.5252733,96,722.093,4.981467 +0.6021912,33,411.8979,4.303828 +0.7934302,15,539.9897,4.080298 +0.8792068,41,204.9749,5.19277 +0.8198524,55,154.0691,5.216557 +0.928111,67,748.7546,5.715469 +0.5133573,38,246.1858,4.263624 +0.6884071,37,674.5355,4.55795 +0.7461944,64,473.5671,5.093302 +0.6532605,97,185.9989,5.225389 +0.5501679,27,628.1183,4.040324 +0.7534715,27,19.90830,4.748168 +0.7025255,31,938.235,4.446551 +0.8893203,50,492.9179,5.339381 +0.7325881,3,16.04148,2.286298 +0.8471792,46,99.03947,5.214267 +0.8558435,14,925.2775,4.2263 +0.9016918,25,899.1608,4.883661 +0.9413817,37,697.0876,5.402966 +0.9225349,82,561.812,5.82426 +0.5003238,9,688.7228,2.917672 +0.8512868,20,559.2459,4.507173 +0.8284532,44,595.7483,5.03024 +0.846141,66,653.0226,5.36898 +0.748223,39,755.2171,4.727535 +0.7368554,26,749.7013,4.384982 +0.7189159,3,647.6345,2.152868 +0.7414169,15,94.89577,3.977394 +0.8153508,24,211.3473,4.55558 +0.6970842,31,797.3713,4.435984 +0.8025622,50,6.803501,6.268036 +0.9030182,26,381.8899,4.936831 +0.6419183,16,749.4674,3.763236 +0.9327713,20,151.1507,4.961371 +0.8798308,24,400.5564,4.768297 +0.5138711,3,821.1119,1.620491 +0.53179,14,989.895,3.418602 +0.8421581,75,887.0516,5.438645 +0.8565368,86,552.1805,5.585046 +0.6598265,16,685.9115,3.801888 +0.9419386,65,314.7918,5.818752 +0.7884257,93,434.97,5.453545 +0.5809332,37,839.5907,4.352714 +0.5207864,44,85.54216,4.4121 +0.5672738,25,628.4949,4.006396 +0.6546446,54,218.9772,4.796863 +0.5339421,34,842.3085,4.202027 +0.5361476,42,825.7257,4.37603 +0.6629262,81,171.9478,5.118468 +0.5759406,36,173.0157,4.336918 +0.547108,31,106.1333,4.170199 +0.507479,78,627.4027,4.803467 +0.6631738,75,844.3643,5.033109 +0.5277626,29,585.636,4.060688 +0.5617955,64,210.7296,4.755963 +0.5835145,5,64.48203,2.462699 +0.882635,82,746.709,5.637861 +0.7425467,87,934.1737,5.291144 +0.7768254,52,92.34035,5.092246 +0.7278219,39,573.6261,4.684182 +0.8767195,34,706.6265,5.005221 +0.850523,73,99.0534,5.563408 +0.8754488,82,583.1682,5.616972 +0.6626895,42,438.3507,4.608795 +0.9348684,26,225.5050,5.147867 +0.9416782,45,132.6854,5.644021 +0.7208806,81,6.229939,6.237515 +0.5405073,7,75.27229,2.747032 +0.784138,27,888.8104,4.532014 +0.7047413,26,397.4317,4.317997 +0.8364552,75,366.4362,5.442106 +0.8720677,78,507.4042,5.575244 +0.8908936,64,713.2027,5.506109 +0.8166285,51,517.321,5.104816 +0.6565045,49,602.2967,4.711042 +0.7925262,27,43.26737,4.713331 +0.9016432,46,142.4901,5.405597 +0.8237432,37,112.9364,4.956212 +0.6777052,50,249.6319,4.781308 +0.9397628,44,116.4927,5.630913 +0.7341784,62,94.20431,5.111798 +0.6929476,61,14.01006,5.350054 +0.740762,86,974.9146,5.278999 +0.5808794,14,388.2787,3.518560 +0.7912621,63,532.4759,5.186615 +0.6266644,36,71.63259,4.466956 +0.6721112,45,252.2225,4.689743 +0.5568319,33,234.6669,4.226382 +0.7115908,38,835.0688,4.625388 +0.5007294,8,713.4759,2.793781 +0.9356461,65,800.8346,5.739674 +0.6431681,51,275.0588,4.726642 +0.6418362,30,783.4145,4.297577 +0.7584736,61,857.6538,5.078252 +0.9400944,68,808.2146,5.797917 +0.8150239,16,259.8427,4.214301 +0.5928511,25,884.6633,4.0527 +0.8235666,23,772.7027,4.52082 +0.7966892,100,173.8055,5.564043 +0.8403294,71,787.3465,5.397731 +0.6412425,45,936.1094,4.614527 +0.7763971,33,111.9587,4.725915 +0.6629552,67,97.09423,5.007628 +0.9173387,6,707.2925,3.775694 +0.7671331,5,428.4920,2.934431 +0.7318255,51,691.8642,4.891703 +0.9348959,48,464.1825,5.548811 +0.9217564,53,973.5796,5.518674 +0.6395493,32,814.8357,4.344956 +0.6595887,36,217.8564,4.494006 +0.7371668,79,601.646,5.218455 +0.8302437,87,993.3104,5.502131 +0.8564486,24,420.4169,4.674961 +0.7701998,76,656.015,5.263296 +0.6874573,47,608.4487,4.739844 +0.7121946,5,762.8256,2.769008 +0.7101067,68,554.8536,5.057617 +0.6214585,46,858.065,4.595565 +0.8607614,90,841.2433,5.61987 +0.6583589,22,568.094,4.076247 +0.6248519,16,359.5323,3.731892 +0.9475922,7,553.6634,4.161477 +0.9259968,89,677.8597,5.890037 +0.7219641,93,444.3312,5.305514 +0.866721,78,530.8345,5.555063 +0.895877,58,924.2145,5.455649 +0.7745198,83,239.1456,5.362005 +0.7279426,30,685.3133,4.479054 +0.6292672,5,652.6662,2.554493 +0.8621705,12,924.5616,4.119954 +0.7819186,96,730.1539,5.448783 +0.885565,90,730.3173,5.710649 +0.8552883,76,899.2516,5.488386 +0.6654058,86,486.6332,5.140343 +0.5998509,42,991.0918,4.485726 +0.8327136,54,536.8069,5.191774 +0.7425117,53,378.7974,4.952954 +0.7964822,75,952.3056,5.31239 +0.8088025,15,44.39403,4.251033 +0.6742135,36,860.2365,4.506043 +0.884635,39,389.9112,5.150668 +0.5918631,14,48.27244,3.582336 +0.9172598,17,29.02950,5.022216 +0.7190332,42,50.17895,4.837464 +0.5797433,60,961.7418,4.723679 +0.8932167,67,682.0348,5.54753 +0.6988684,85,423.5009,5.197771 +0.6357016,16,836.6406,3.749755 +0.6890077,32,461.3887,4.449031 +0.7588667,42,280.3290,4.825713 +0.5494846,55,47.56121,4.668146 +0.6874588,49,659.3741,4.770332 +0.6365405,66,737.9129,4.893803 +0.8233614,36,157.4156,4.91091 +0.5840611,60,124.7446,4.759483 +0.7339906,37,716.2325,4.655409 +0.7774252,44,334.844,4.901962 +0.6193005,9,940.9317,3.167399 +0.696985,26,88.31102,4.3444 +0.940315,59,700.5253,5.710277 +0.7377039,14,668.2784,3.865379 +0.913119,91,783.4478,5.83421 +0.5370352,14,440.6516,3.430929 +0.5327774,36,123.0329,4.263722 +0.648229,17,177.8754,3.844856 +0.6401825,64,575.8182,4.87999 +0.9480667,62,240.2785,5.85306 +0.8221232,31,667.1766,4.749486 +0.574851,16,771.9699,3.627125 +0.6598773,3,94.76652,1.993306 +0.7800032,26,714.9019,4.493196 +0.697495,32,653.2019,4.463514 +0.5867579,21,435.1138,3.895165 +0.6375613,18,609.9121,3.859645 +0.7611845,76,715.156,5.241431 +0.7984868,79,989.688,5.352595 +0.7752109,34,671.7063,4.689988 +0.8994018,22,624.0138,4.781058 +0.8005305,13,626.9485,3.975938 +0.6398316,55,286.0043,4.776561 +0.9424745,25,999.8135,5.127177 +0.5227684,13,699.9421,3.330973 +0.8779214,80,450.7731,5.617354 +0.917571,9,710.7334,4.149813 +0.8569605,99,590.8516,5.677787 +0.6843676,89,603.5044,5.196629 +0.733581,22,490.3643,4.245027 +0.8672448,26,182.8215,4.807842 +0.7397184,87,120.0428,5.35191 +0.5527422,23,235.8245,3.914409 +0.5820121,72,811.4327,4.863264 +0.9103458,29,548.7671,5.045708 +0.7945998,61,593.8792,5.170347 +0.5124122,96,562.5626,4.962827 +0.623792,51,197.2819,4.697112 +0.5217335,90,721.5645,4.929546 +0.8997264,24,919.2028,4.843187 +0.8411916,70,41.51056,5.664744 +0.7871999,5,232.2797,3.005849 +0.6698947,20,983.0028,4.016535 +0.7529359,84,25.78049,5.614619 +0.7208476,100,677.1795,5.346025 +0.5955761,18,635.3268,3.774734 +0.5967151,41,8.097904,4.849405 +0.7051689,44,680.4017,4.725193 +0.8043721,26,425.092,4.567816 +0.6045699,12,444.4552,3.420835 +0.9499069,68,96.17027,6.056731 +0.7528673,65,118.8346,5.174443 +0.5454412,32,666.9706,4.173194 +0.6051781,68,38.05244,4.970321 +0.9332288,77,568.6311,5.844464 +0.7542108,15,693.6439,3.968683 +0.7988791,42,207.1542,4.94052 +0.7200135,38,599.6341,4.646607 +0.6721438,49,389.8183,4.746427 +0.8592696,70,425.4091,5.462841 +0.7293571,43,247.9677,4.777638 +0.8784906,57,573.1369,5.382846 +0.8872626,60,518.9786,5.45521 +0.8542287,41,141.3212,5.121138 +0.8359833,60,26.23134,5.672828 +0.8527313,17,920.5974,4.37559 +0.5880137,61,823.1405,4.750736 +0.5841701,73,17.39604,5.082933 +0.61481,21,96.121,3.975453 +0.529416,91,166.0006,4.964893 +0.6913516,51,590.0996,4.809118 +0.8012878,63,291.3125,5.228858 +0.5019232,19,857.4837,3.645079 +0.8200012,68,28.59088,5.670121 +0.8115694,52,648.0865,5.100523 +0.9250571,51,160.3951,5.596079 +0.5669754,2,513.2984,1.109653 +0.6057292,64,150.8608,4.842164 +0.5911127,49,342.9278,4.597324 +0.8676585,14,558.4217,4.278688 +0.6736706,57,691.9278,4.855279 +0.897761,99,813.2623,5.818812 +0.8267767,46,228.8463,5.085301 +0.6035152,68,846.6566,4.85725 +0.7582057,20,242.3354,4.23916 +0.6485803,73,851.7446,4.987295 +0.5070576,79,756.7226,4.811436 +0.5045091,25,103.9773,3.906777 +0.6615933,25,756.1777,4.188058 +0.6169842,59,584.731,4.778306 +0.755264,82,2.038796,9.136763 +0.7341297,14,955.4349,3.854338 +0.7110796,100,249.6301,5.349031 +0.739534,90,239.7671,5.337524 +0.8744877,23,767.341,4.701607 +0.5994343,47,866.2662,4.572732 +0.5812632,27,242.8247,4.10473 +0.8300101,97,539.0103,5.585397 +0.7644073,77,93.01882,5.347438 +0.7088963,47,66.22171,4.870752 +0.761716,26,537.1646,4.448955 +0.8267095,51,146.2974,5.186344 +0.920754,6,883.9607,3.797106 +0.5645494,25,607.3827,4.001519 +0.7991966,61,233.9742,5.208985 +0.9370318,13,884.9198,4.590025 +0.9296204,16,614.5821,4.707096 +0.7483718,19,893.7514,4.154285 +0.87035,16,740.2796,4.396994 +0.6614598,3,704.9057,1.987768 +0.5755732,25,332.8273,4.025758 +0.8172683,22,533.8112,4.47024 +0.7023444,65,294.7561,5.02131 +0.8701465,78,502.7068,5.568647 +0.6377123,80,469.6564,5.039544 +0.8404908,72,49.64911,5.637678 +0.8580997,35,485.0983,4.96374 +0.8447534,84,954.432,5.521624 +0.8791155,26,796.0717,4.813707 +0.5021335,82,631.2578,4.83185 +0.864138,46,627.4507,5.17786 +0.6829586,100,381.9724,5.282529 +0.6399337,92,15.78762,5.45512 +0.892801,77,966.1946,5.631521 +0.7112448,93,557.9093,5.279971 +0.9059195,89,635.9542,5.79166 +0.6766005,45,865.898,4.682495 +0.8078958,82,484.666,5.414492 +0.9209267,5,709.386,3.620243 +0.5019439,34,358.7489,4.150157 +0.796657,22,698.0417,4.405835 +0.666716,67,518.8367,4.963378 +0.5832934,67,428.1866,4.817323 +0.6353169,50,160.2554,4.70964 +0.808612,24,875.6253,4.507879 +0.5622533,55,857.164,4.6292 +0.7769792,50,48.44318,5.144435 +0.7508037,18,215.6834,4.133351 +0.8904394,24,92.84264,4.901687 +0.7551548,8,796.5009,3.387813 +0.7183715,89,264.4048,5.28108 +0.7258366,88,963.9777,5.264218 +0.7143347,99,726.5095,5.32536 +0.8406081,83,836.4688,5.503172 +0.8187647,25,938.3164,4.569789 +0.8672593,46,313.6396,5.208531 +0.7980852,36,675.2051,4.793406 +0.8890563,58,892.8864,5.42769 +0.5277273,12,994.4026,3.26243 +0.5989106,60,404.3719,4.762745 +0.5224652,4,367.6047,2.031144 +0.9332694,15,366.5174,4.693619 +0.8910453,17,532.0215,4.541773 +0.742809,13,415.2074,3.816228 +0.6804219,49,587.299,4.75754 +0.6776288,11,547.1345,3.498423 +0.6405099,11,157.8323,3.42548 +0.7646327,30,314.6165,4.578473 +0.6431464,49,41.3123,4.794521 +0.6625404,21,192.0381,4.059123 +0.6285435,63,806.1845,4.844859 +0.5573989,47,505.8864,4.502889 +0.805001,40,903.4414,4.887536 +0.6460129,98,943.8153,5.190381 +0.8322745,30,99.25623,4.832698 +0.6887781,13,941.4417,3.677867 +0.9206663,47,952.5114,5.431576 +0.5918448,45,2.249338,5.900957 +0.7669543,39,634.4666,4.774106 +0.5947878,40,650.6587,4.440511 +0.6610799,98,738.0277,5.218904 +0.8867663,81,920.1037,5.641652 +0.6770999,41,660.3415,4.614517 +0.5231052,15,935.7127,3.467006 +0.9195054,66,973.0122,5.652802 +0.9458154,25,135.1134,5.245808 +0.6825682,18,518.101,3.957023 +0.7202741,31,954.2325,4.485164 +0.6372724,84,919.9869,5.067105 +0.6639058,94,535.0358,5.198697 +0.5768879,76,126.4520,4.922606 +0.6014787,98,379.4988,5.124203 +0.843094,26,599.521,4.683426 +0.745788,45,676.9461,4.830438 +0.8906488,91,755.4079,5.73699 +0.6100992,51,501.9635,4.657766 +0.8425603,61,661.1285,5.303181 +0.7462918,5,387.18,2.870519 +0.5925678,48,820.1916,4.577148 +0.6827127,75,374.9527,5.080066 +0.7781868,89,890.89,5.38604 +0.5066091,94,951.6413,4.936563 +0.7372862,90,806.7184,5.305063 +0.719858,71,201.6342,5.133828 +0.6634803,26,830.8077,4.223751 +0.6532852,63,685.4556,4.890671 +0.8625157,38,534.4332,5.037837 +0.9113472,60,437.6948,5.568579 +0.5088646,38,321.167,4.253789 +0.7771815,76,39.75654,5.505239 +0.8329044,62,524.4686,5.289855 +0.5650291,62,74.44416,4.768244 +0.8036751,73,829.7145,5.313832 +0.8067298,57,713.1123,5.151231 +0.8660429,3,628.0595,2.714821 +0.6403124,8,167.818,3.105184 +0.5834719,5,25.55454,2.491245 +0.5572141,15,912.192,3.532799 +0.6488088,16,908.6736,3.777065 +0.7077434,53,773.6298,4.868082 +0.5422179,92,392.5441,4.981776 +0.9266149,24,283.4202,5.020614 +0.934397,36,558.1984,5.341096 +0.7949,27,155.1294,4.600911 +0.7424595,23,666.7898,4.300019 +0.8616935,5,890.3192,3.286170 +0.6884716,12,873.8338,3.603543 +0.5995778,52,668.5873,4.651719 +0.8508779,54,410.018,5.255892 +0.6660627,75,879.4836,5.038071 +0.6070051,26,267.511,4.121184 +0.9190156,63,258.2150,5.667737 +0.7015881,80,761.3171,5.152116 +0.5142113,20,188.6005,3.720824 +0.6813229,93,817.4621,5.218213 +0.5267363,21,495.4859,3.781604 +0.7904401,18,243.0097,4.239977 +0.7043728,80,941.1215,5.155511 +0.7330856,28,214.5299,4.455344 +0.771847,40,761.3398,4.803051 +0.8222126,10,122.1747,3.845657 +0.6519614,52,676.2551,4.746188 +0.6944437,36,204.5020,4.568574 +0.8187647,9,639.2002,3.701892 +0.7374063,32,35.85045,4.713835 +0.643858,77,241.4941,5.035362 +0.7042147,28,781.8938,4.370234 +0.6143113,98,315.3997,5.149002 +0.944967,80,332.0912,5.973127 +0.7394078,37,842.948,4.666253 +0.8836379,73,903.33,5.560995 +0.6131344,14,725.1093,3.581661 +0.7558923,50,587.989,4.933226 +0.9276066,11,222.4321,4.416174 +0.6907774,97,309.7564,5.281169 +0.858821,20,501.4091,4.536867 +0.5517754,94,559.6398,5.009473 +0.7344678,31,542.87,4.522231 +0.6010437,2,644.5435,1.193663 +0.6390766,76,371.5618,5.008526 +0.6255595,8,534.3747,3.062646 +0.9056744,72,223.5716,5.699772 +0.8890962,72,173.6807,5.644737 +0.9489493,64,703.9186,5.826285 +0.8001742,28,105.0511,4.668771 +0.8885515,90,246.1473,5.766628 +0.9104312,68,907.543,5.628369 +0.7987321,11,748.0737,3.819856 +0.710524,91,97.95307,5.332649 +0.7085246,40,240.5481,4.676803 +0.5066204,29,770.7431,4.022715 +0.8146826,24,45.95264,4.681249 +0.7602707,76,8.387661,6.158087 +0.5249838,19,959.5517,3.687356 +0.8816273,38,889.53,5.102017 +0.6058824,83,365.8123,5.013899 +0.7755455,39,358.9888,4.805197 +0.803905,19,248.2879,4.324838 +0.7786487,74,795.3093,5.261867 +0.5892645,56,824.3645,4.688727 +0.7503843,59,146.3536,5.084155 +0.8878726,45,829.1219,5.248587 +0.7215956,45,586.8566,4.778501 +0.6683625,75,916.5796,5.041976 +0.8200763,11,655.7469,3.8903 +0.9290939,47,171.2948,5.557564 +0.8664462,49,687.7418,5.229077 +0.6709497,80,972.34,5.092141 +0.662782,11,260.5764,3.469753 +0.856763,68,72.66898,5.582224 +0.9451141,84,73.09254,6.229147 +0.5442873,34,625.0037,4.221118 +0.5587434,8,246.4427,2.919025 +0.6964054,7,884.3078,3.09278 +0.8280353,79,445.1356,5.446695 +0.9319106,83,83.3915,6.083346 +0.9094553,33,299.5859,5.154842 +0.7082671,94,916.572,5.275416 +0.5393918,46,441.9737,4.456249 +0.9006434,37,600.3707,5.172166 +0.7570982,51,3.471025,6.915447 +0.7251017,19,79.5184,4.152646 +0.7056264,15,538.5481,3.84945 +0.6071612,50,917.938,4.633409 +0.7963605,77,742.4764,5.333493 +0.6792351,15,444.376,3.789908 +0.8117668,31,414.1619,4.726513 +0.7630922,38,325.9708,4.756469 +0.8835082,57,859.4473,5.39423 +0.7853005,3,877.1259,2.371308 +0.5823137,32,137.8372,4.257573 +0.8698176,36,404.6398,5.032198 +0.6466369,3,76.42683,1.959759 +0.8688753,39,247.9359,5.105039 +0.911857,30,291.4432,5.098902 +0.7783195,55,21.39750,5.432208 +0.7999033,19,560.2088,4.298088 +0.8507938,89,975.0028,5.578287 +0.8241017,100,629.8307,5.585552 +0.5436256,22,376.0586,3.855056 +0.6320413,11,418.4698,3.396621 +0.7373736,92,27.8193,5.610314 +0.7955,46,330.8586,4.98233 +0.8829698,38,998.1991,5.105958 +0.8849295,63,727.0993,5.471034 +0.838828,86,77.1965,5.67457 +0.8527707,86,300.0162,5.594421 +0.5038315,70,206.4996,4.725505 +0.7296358,19,49.6474,4.200878 +0.6307941,34,957.3206,4.37594 +0.6606051,52,535.1912,4.764698 +0.5302261,42,398.8626,4.36944 +0.5320133,34,655.6624,4.199522 +0.717173,53,213.497,4.912165 +0.7287862,29,414.4081,4.459878 +0.8519769,40,395.7273,5.045371 +0.8458813,37,851.0596,4.953455 +0.5080707,21,542.4744,3.747078 +0.8051663,27,488.0093,4.597385 +0.7183791,64,716.7317,5.027853 +0.74227,54,722.8267,4.955939 +0.8676867,91,430.0528,5.667708 +0.7718417,16,637.8888,4.07256 +0.6280025,55,917.1669,4.742335 +0.8805145,73,291.5224,5.583936 +0.9136214,61,624.4414,5.579953 +0.6406982,39,63.4406,4.569391 +0.7158347,60,583.5661,4.978497 +0.8338452,90,533.1334,5.546689 +0.6402985,25,74.77586,4.190889 +0.8342987,15,943.0546,4.20576 +0.6310646,10,661.5494,3.299443 +0.8832602,16,427.1417,4.460933 +0.8367622,75,996.2516,5.420939 +0.7869439,40,632.3436,4.843514 +0.7270005,31,420.2332,4.508401 +0.7344772,37,232.4106,4.676147 +0.748638,28,576.1854,4.474753 +0.7833058,29,203.2394,4.613577 +0.9264593,94,401.6628,5.94759 +0.517303,5,91.09677,2.304455 +0.8696138,3,616.2727,2.733279 +0.6337402,96,20.0967,5.407003 +0.6865132,80,684.3764,5.124317 +0.8716307,34,857.9636,4.982612 +0.8256833,36,80.41628,4.974381 +0.7768496,100,922.0373,5.461231 +0.9348923,47,185.3694,5.588766 +0.9213014,59,715.2368,5.594296 +0.637975,47,960.5189,4.641537 +0.7403673,62,260.0004,5.072181 +0.888522,24,799.4427,4.793178 +0.7292344,81,333.3577,5.231112 +0.5112314,96,867.6153,4.959088 +0.6606651,48,740.136,4.701648 +0.8307073,18,575.5492,4.349796 +0.8462718,35,58.98953,5.070533 +0.9425635,4,623.8769,3.567630 +0.7125992,51,356.6673,4.860408 +0.719433,51,698.7236,4.865044 +0.8117532,67,123.0728,5.352249 +0.51242,13,494.2803,3.311685 +0.8207607,22,87.44027,4.552963 +0.7436482,32,212.3617,4.587393 +0.857994,15,814.849,4.293433 +0.8876703,25,357.3681,4.836751 +0.9342724,5,124.0048,3.764013 +0.8253175,2,505.8184,1.922227 +0.5419264,37,468.7642,4.287065 +0.8352296,49,595.4923,5.128307 +0.7760867,32,128.3048,4.69243 +0.5874936,17,628.5572,3.707673 +0.8402649,72,948.8077,5.404287 +0.8161572,35,549.248,4.826251 +0.5657067,75,14.10146,5.09065 +0.7584987,9,751.2792,3.512529 +0.8671165,44,395.8337,5.168171 +0.6058399,72,563.812,4.905976 +0.8298326,21,873.2819,4.467329 +0.7459137,2,764.5082,1.614097 +0.795002,100,483.403,5.515984 +0.5110326,35,590.3715,4.187442 +0.5340734,44,951.0518,4.408872 +0.7296615,4,321.1628,2.560116 +0.6477494,81,326.3393,5.072265 +0.7893775,51,766.0078,5.025427 +0.8201982,99,760.9333,5.56464 +0.8019888,56,156.5017,5.176328 +0.6829048,86,804.1223,5.166731 +0.6811957,80,395.5219,5.122117 +0.5937907,90,292.4034,5.054806 +0.6994597,75,591.3511,5.105359 +0.7505089,77,420.6277,5.236085 +0.7389941,70,134.9801,5.186518 +0.7474006,68,380.0116,5.143788 +0.9283534,65,871.1195,5.693591 +0.8853698,54,781.4963,5.36612 +0.6727283,50,98.73228,4.806432 +0.9024598,58,288.6449,5.52108 +0.9422723,48,601.0573,5.59093 +0.8320503,77,451.9414,5.44044 +0.7462295,52,463.9862,4.94351 +0.6709326,14,603.4235,3.706814 +0.7027618,56,633.9876,4.900411 +0.8641877,26,399.6143,4.767001 +0.9291702,100,940.3461,5.973414 +0.8258535,14,672.2688,4.121168 +0.813817,78,424.6809,5.399575 +0.8729098,22,278.2921,4.682318 +0.8000553,48,633.6019,5.012 +0.7571338,99,132.9017,5.47651 +0.585785,55,746.6153,4.669697 +0.5801946,49,803.9324,4.571639 +0.8304912,39,984.3345,4.941709 +0.9205222,49,108.9491,5.58668 +0.753516,41,940.5831,4.775568 +0.658206,12,818.7406,3.534411 +0.7980743,76,100.0541,5.42265 +0.8053866,43,924.0142,4.941535 +0.6634431,67,454.244,4.95901 +0.6276517,99,378.1968,5.176032 +0.9353756,16,152.446,4.803419 +0.7972733,24,216.8124,4.500071 +0.7848158,26,324.9694,4.517971 +0.924885,68,424.4133,5.725171 +0.8978605,35,36.21963,5.43976 +0.893118,59,16.27533,6.286604 +0.6643898,43,137.3643,4.656881 +0.5086009,31,757.6005,4.08214 +0.5289369,3,46.10701,1.668507 +0.6662625,100,811.5261,5.241232 +0.6849102,6,759.6397,2.899159 +0.6902612,59,737.0007,4.912149 +0.7061771,45,647.2657,4.74473 +0.667381,51,277.129,4.773309 +0.7089084,90,950.5108,5.24631 +0.726764,5,33.05932,2.874905 +0.932936,49,645.2856,5.539989 +0.8955401,36,128.7913,5.205502 +0.7664723,97,60.16786,5.574492 +0.6150861,41,680.7598,4.496292 +0.674237,67,329.4989,4.984961 +0.5336574,13,108.5183,3.364797 +0.760271,48,587.2861,4.913527 +0.7475153,29,444.9428,4.503107 +0.6400046,64,908.336,4.876023 +0.6650242,43,16.14885,4.913769 +0.6937891,80,561.2694,5.140687 +0.887406,83,32.14545,6.114019 +0.904731,2,377.119,2.365172 +0.8471754,19,624.3107,4.449655 +0.5666982,16,39.5771,3.662043 +0.9328277,11,480.6788,4.431356 +0.7922494,87,443.7334,5.417071 +0.8112987,95,226.9083,5.552231 +0.6133779,10,491.8312,3.261789 +0.6110203,68,785.7354,4.870548 +0.8970352,34,271.7124,5.11961 +0.8785843,67,798.9047,5.486443 +0.6724811,89,781.2876,5.171774 +0.6222045,16,807.4755,3.721919 +0.8502613,74,862.1943,5.455025 +0.5398314,29,411.4463,4.083856 +0.6792529,56,759.8733,4.852141 +0.6765828,24,468.7599,4.189076 +0.713825,69,830.8558,5.070837 +0.9256529,49,299.9408,5.524863 +0.5631582,20,253.5615,3.81113 +0.6424909,83,198.6384,5.092229 +0.7386519,76,21.18628,5.548556 +0.6851306,39,706.3514,4.591613 +0.7202942,62,387.4803,5.018255 +0.8902591,33,797.2625,5.037685 +0.5598123,7,790.0233,2.774130 +0.759497,10,520.5702,3.617932 +0.8977739,69,917.4554,5.580563 +0.729828,36,97.78912,4.682077 +0.5290516,15,958.4097,3.478331 +0.9282293,79,384.0795,5.847463 +0.8311524,21,158.7927,4.51141 +0.6868337,35,99.9053,4.557294 +0.6279094,49,79.26277,4.708953 +0.9039485,84,445.2753,5.756844 +0.898548,62,490.6054,5.526963 +0.8490779,40,810.5851,5.021547 +0.7652964,32,334.021,4.629276 +0.8686192,25,956.7512,4.739846 +0.6570135,70,142.3589,5.008457 +0.6120404,22,960.5204,3.980529 +0.6727586,61,732.1227,4.902816 +0.9390417,70,978.3288,5.805469 +0.6322727,65,42.49298,4.986196 +0.8420094,59,579.1828,5.28088 +0.8502256,57,885.6972,5.275624 +0.7768617,27,619.6548,4.516229 +0.5832149,72,206.8745,4.881147 +0.844921,63,888.1342,5.328041 +0.6436299,6,915.0828,2.795881 +0.7765341,94,958.9544,5.418364 +0.500027,83,214.0714,4.845321 +0.9493338,66,46.71093,6.250622 +0.5066988,9,639.482,2.930763 +0.7462216,11,396.7089,3.672843 +0.567244,52,520.2303,4.59758 +0.8421211,98,83.80207,5.765354 +0.8875776,32,428.5642,5.016232 +0.6608919,71,969.344,4.988638 +0.8039491,24,203.3197,4.522054 +0.8620975,8,511.9531,3.760100 +0.864312,6,502.6081,3.490271 +0.6693177,67,461.6307,4.969838 +0.5074913,77,596.7396,4.794191 +0.7032736,67,357.7343,5.0407 +0.8214841,35,854.0057,4.836031 +0.7366083,19,375.6881,4.133019 +0.6330116,85,361.0845,5.07839 +0.8963766,68,497.6582,5.579325 +0.9159304,52,604.829,5.484746 +0.6595075,7,986.7414,3.000678 +0.5753076,17,578.6994,3.68411 +0.5580612,50,856.1792,4.54921 +0.6553601,85,61.36344,5.201974 +0.900686,15,133.0886,4.539378 +0.6829527,86,544.1058,5.171349 +0.8457578,22,128.4829,4.613213 +0.9212189,71,304.4749,5.749921 +0.8918972,83,346.32,5.707472 +0.5864152,95,2.099936,6.718664 +0.5686968,50,82.45168,4.604964 +0.899514,11,82.5313,4.303197 +0.795062,72,482.2151,5.291828 +0.6483403,79,628.6701,5.046107 +0.7940012,97,252.8391,5.515253 +0.8008343,49,305.2234,5.045411 +0.8463603,89,591.3357,5.574033 +0.7679076,88,765.9055,5.356732 +0.6129822,86,190.9238,5.065058 +0.794287,74,65.87518,5.445131 +0.595042,22,736.6731,3.948656 +0.7492896,12,957.5914,3.755035 +0.5575823,16,953.6576,3.592982 +0.891035,34,198.4613,5.108404 +0.8700615,67,735.4535,5.456826 +0.6102607,74,615.7466,4.932702 +0.6442439,42,85.62474,4.617894 +0.9296985,6,933.5528,3.861461 +0.7083424,3,806.3799,2.120714 +0.8107343,46,923.9881,5.005333 +0.6170151,30,866.2096,4.249458 +0.5470541,19,480.3602,3.730668 +0.8595827,78,627.839,5.526631 +0.6772016,44,234.3043,4.684579 +0.6110317,58,695.5628,4.753752 +0.8653476,54,880.023,5.289088 +0.7431905,78,428.9381,5.228603 +0.8290363,76,533.6956,5.418502 +0.5193487,26,855.5284,3.952156 +0.8672889,90,488.9548,5.654752 +0.5127307,25,169.0594,3.915601 +0.7821378,91,451.9449,5.422582 +0.765217,30,465.913,4.572756 +0.821991,76,505.045,5.399814 +0.7502065,50,227.0218,4.941853 +0.5465306,12,906.6364,3.299862 +0.8074795,41,46.12214,5.096338 +0.7318816,61,239.4124,5.044108 +0.7379262,36,455.7286,4.648779 +0.7981295,71,324.1441,5.300941 +0.5761634,55,982.1628,4.652028 +0.5827038,70,810.1251,4.843766 +0.6060221,9,645.4407,3.139188 +0.929337,65,933.377,5.697937 +0.5944697,42,333.9487,4.483901 +0.5904768,42,39.00159,4.555614 +0.6237111,24,826.2296,4.077733 +0.7321938,99,546.025,5.365483 +0.8092262,24,113.7361,4.56686 +0.7384458,72,680.5146,5.154358 +0.7702537,12,562.1573,3.815985 +0.6441926,88,98.59672,5.168001 +0.7592311,29,482.56,4.530664 +0.5798336,5,606.1835,2.437498 +0.6674997,33,177.1550,4.446129 +0.7564904,24,553.4765,4.37112 +0.8303686,26,783.7082,4.638198 +0.7687771,99,716.0814,5.439636 +0.8210636,58,516.3427,5.208918 +0.8839874,13,236.9632,4.306785 +0.8675836,88,9.0463,7.04867 +0.5933452,12,885.4963,3.394909 +0.6987614,97,167.3294,5.31902 +0.6083984,32,348.0146,4.292166 +0.781873,49,182.8657,5.014807 +0.6179727,64,338.0714,4.846711 +0.5738579,28,887.2536,4.112514 +0.8718374,74,916.9767,5.52622 +0.695573,57,619.4104,4.899196 +0.7813837,45,763.106,4.914116 +0.7587202,56,243.6302,5.042987 +0.8526122,69,335.588,5.439119 +0.679438,25,3.925323,5.244888 +0.9018107,28,796.7149,4.970157 +0.9031522,60,560.215,5.521575 +0.620925,60,188.3965,4.815776 +0.5398193,23,962.0695,3.883163 +0.8001978,86,444.2741,5.429201 +0.8743729,85,382.2575,5.650717 +0.583254,25,654.4453,4.035908 +0.6820578,83,600.6018,5.143397 +0.7261496,39,706.9857,4.67826 +0.5349857,96,677.6188,4.996885 +0.8780665,26,145.6244,4.866995 +0.5110006,22,347.6669,3.795356 +0.9457965,31,497.3779,5.321787 +0.7104668,42,449.4024,4.706034 +0.926931,2,582.9908,2.539423 +0.6842416,48,820.8916,4.746617 +0.8984944,7,297.3639,3.820169 +0.5931354,16,962.1802,3.662621 +0.6215017,70,110.3659,4.950248 +0.5249559,9,451.851,2.968919 +0.6870519,78,313.5085,5.120267 +0.6895417,68,32.65226,5.201474 +0.6604548,62,818.0275,4.890735 +0.7258901,81,356.6513,5.222353 +0.8189167,84,452.3966,5.462345 +0.780193,75,79.63504,5.388074 +0.6710222,48,327.2395,4.731501 +0.8660183,76,809.9751,5.525832 +0.9385447,71,319.9745,5.852341 +0.8408653,45,476.6827,5.089412 +0.8506329,22,976.784,4.573917 +0.6274595,24,889.7172,4.084769 +0.7895091,91,31.23733,5.747325 +0.6720448,26,258.3145,4.253512 +0.6572791,76,163.3674,5.063448 +0.7308232,24,755.801,4.305953 +0.6334011,72,716.3932,4.951746 +0.875161,23,122.4376,4.770516 +0.6127634,92,978.5912,5.089453 +0.5246284,89,713.353,4.926033 +0.895216,15,353.697,4.469064 +0.7840556,2,170.7737,1.756434 +0.8611382,86,410.3382,5.609362 +0.5039933,89,312.2973,4.898963 +0.7011006,71,974.6255,5.064487 +0.7574644,99,511.3727,5.420484 +0.7464697,8,351.1746,3.36846 +0.9243401,74,892.4622,5.755217 +0.6147572,43,770.8194,4.532012 +0.9229638,52,813.2275,5.51579 +0.8206974,12,636.0771,3.9702 +0.7576767,21,246.3065,4.278102 +0.5283881,4,684.9849,2.043687 +0.6583222,39,346.022,4.54592 +0.6346257,96,211.0651,5.17961 +0.5608158,37,735.7256,4.317794 +0.7522666,60,914.4428,5.051786 +0.5487665,10,500.9638,3.125392 +0.6703224,94,579.5087,5.209303 +0.7221054,69,316.5972,5.103682 +0.8728384,10,63.56726,4.100998 +0.5574435,57,43.56925,4.718101 +0.8063746,62,131.3486,5.275156 +0.8943675,97,182.5163,5.864757 +0.6457493,5,430.6312,2.596322 +0.5910911,27,686.4856,4.114989 +0.659809,33,223.4219,4.424611 +0.5089013,37,85.17943,4.24973 +0.9337569,65,640.6944,5.733591 +0.8916446,68,81.18035,5.714367 +0.726869,88,469.9061,5.276224 +0.7227274,45,508.542,4.782788 +0.7008706,50,413.0376,4.818512 +0.5846127,3,629.5136,1.789435 +0.9457911,23,494.1918,5.106915 +0.7482145,76,977.4924,5.209178 +0.6433126,87,417.9693,5.110869 +0.5793081,29,982.1014,4.151251 +0.6934788,68,501.5589,5.025896 +0.6311162,48,915.3363,4.645259 +0.9031826,38,518.1569,5.206703 +0.856174,57,907.4092,5.294779 +0.6691795,35,226.9216,4.490414 +0.80142,93,697.1788,5.475566 +0.7584387,40,965.8347,4.768409 +0.8248351,38,591.9851,4.912069 +0.9428126,94,66.87335,6.314711 +0.7393929,32,643.1309,4.556659 +0.7509817,18,128.0423,4.150378 +0.944607,42,636.6847,5.51609 +0.6878091,82,735.6016,5.143399 +0.7364006,18,549.7353,4.082325 +0.5965991,73,703.3531,4.898591 +0.8115628,62,803.0491,5.221745 +0.6576455,82,477.9923,5.092711 +0.7706121,59,846.8496,5.082764 +0.6448159,65,988.0204,4.895462 +0.5759028,54,17.82405,4.816721 +0.5813438,49,489.6304,4.576707 +0.5037404,91,487.9228,4.911552 +0.8824765,13,813.0392,4.276511 +0.62344,75,81.9528,5.020752 +0.5867614,68,342.1725,4.836769 +0.8069038,68,679.784,5.276183 +0.8602681,89,264.0901,5.649063 +0.5375624,44,553.4245,4.416887 +0.5863542,75,189.5063,4.918604 +0.6014319,30,163.3551,4.237540 +0.734196,84,993.4357,5.248882 +0.6280806,44,466.1447,4.578057 +0.7870008,62,371.5928,5.172704 +0.5063825,14,845.189,3.369992 +0.7141679,39,317.1110,4.663328 +0.7700549,50,816.0496,4.962596 +0.7781668,81,587.8302,5.327848 +0.7701106,54,583.5682,5.022871 +0.8517387,17,358.7311,4.384958 +0.6512473,77,787.2048,5.030932 +0.6597704,41,623.5281,4.580925 +0.6045337,33,783.7763,4.303910 +0.6747628,65,275.5721,4.967814 +0.5754901,25,392.8563,4.02431 +0.5645206,4,78.64738,2.137807 +0.7526943,52,137.1844,5.000037 +0.8789649,41,763.2992,5.148074 +0.796924,51,58.16972,5.192775 +0.7044938,38,503.8397,4.615158 +0.5710955,43,426.3761,4.458341 +0.6121272,21,713.5597,3.941871 +0.8788232,25,983.937,4.780319 +0.9148775,11,63.67191,4.427849 +0.7441963,25,541.7408,4.373999 +0.8315873,82,310.8302,5.494771 +0.6930633,68,175.8612,5.051427 +0.6677114,31,610.1527,4.377058 +0.6290873,53,949.2253,4.716316 +0.7083651,67,177.3641,5.072448 +0.9437557,90,488.9657,6.019301 +0.8221788,6,101.5286,3.347645 +0.8082465,80,859.3798,5.387913 +0.8956217,31,760.4856,5.016639 +0.7809016,95,449.3862,5.44901 +0.6812002,17,164.7530,3.920066 +0.6770415,47,62.6635,4.800145 +0.6956216,54,702.0819,4.858225 +0.5366549,97,248.0049,5.016196 +0.8522364,42,803.0165,5.067515 +0.9384832,56,347.3381,5.689679 +0.8922538,100,325.7634,5.834656 +0.6228205,60,166.9741,4.822661 +0.7344996,76,784.5329,5.182257 +0.8145633,87,443.7463,5.474821 +0.5531538,26,108.4227,4.032707 +0.7911365,68,662.1342,5.236089 +0.8146687,46,745.2562,5.018899 +0.5045028,66,874.9952,4.67314 +0.640851,76,904.7578,5.002078 +0.8506346,21,911.0278,4.537878 +0.7239757,93,350.5313,5.315068 +0.6127368,28,218.7057,4.197065 +0.7262992,77,994.1657,5.172035 +0.8306157,30,895.4145,4.747346 +0.5229464,87,706.9792,4.906993 +0.6674732,91,347.1094,5.189795 +0.6238308,43,127.4031,4.577679 +0.7578883,49,72.34529,5.019715 +0.78206,64,247.9061,5.196063 +0.7060626,53,793.0226,4.86442 +0.6372835,15,378.8189,3.699193 +0.6513043,34,564.4485,4.41867 +0.9269004,43,806.0094,5.409004 +0.9135508,18,809.8735,4.696129 +0.5798318,49,812.5945,4.570963 +0.864919,17,580.5689,4.427441 +0.8151598,69,756.3115,5.306729 +0.7001978,67,902.1454,5.021915 +0.8482526,13,89.97161,4.201033 +0.6041064,73,262.3566,4.923191 +0.5754905,36,946.9922,4.320669 +0.8850153,77,726.441,5.60595 +0.8623828,64,202.0986,5.44658 +0.6556572,97,77.84997,5.277824 +0.751576,94,661.5748,5.367792 +0.7555403,99,118.5165,5.481632 +0.5605083,11,765.1715,3.243285 +0.545633,12,486.515,3.299668 +0.5149418,46,119.3487,4.42927 +0.7158448,21,82.71454,4.213274 +0.87695,16,805.7746,4.423861 +0.5104682,85,685.208,4.870765 +0.7702164,39,788.6638,4.779683 +0.5417859,11,694.7184,3.205555 +0.6259542,62,558.4269,4.831414 +0.7254502,8,903.2036,3.305184 +0.5322428,19,448.2684,3.703109 +0.8516168,21,844.6598,4.542132 +0.7967247,81,216.2363,5.405972 +0.6988626,80,398.184,5.156267 +0.833163,24,220.3202,4.611781 +0.9120844,14,544.9784,4.493611 +0.502613,89,313.4999,4.896737 +0.6447795,52,7.163189,5.317785 +0.9164835,25,225.1239,5.001143 +0.7750148,50,358.1708,4.988486 +0.9164688,86,323.5733,5.847662 +0.8563804,73,91.323,5.596053 +0.8697922,42,991.5779,5.126615 +0.9432807,64,453.3479,5.799377 +0.9311001,80,103.5973,6.007708 +0.84446,67,251.8546,5.404865 +0.6635903,20,436.5115,4.008136 +0.8023665,15,670.167,4.105092 +0.7924662,79,943.1383,5.338195 +0.8786404,44,880.9335,5.194768 +0.9433458,72,847.0615,5.856031 +0.6966925,84,899.6899,5.175258 +0.6961606,77,572.1535,5.118006 +0.6924574,16,650.4595,3.874692 +0.9265463,25,661.6503,5.024829 +0.6437473,13,478.7481,3.579849 +0.5920152,35,370.9993,4.333462 +0.7307583,80,895.2044,5.208895 +0.6856924,81,303.132,5.145253 +0.8606019,57,188.5887,5.363111 +0.6598683,22,774.669,4.077506 +0.8261763,32,297.7024,4.802724 +0.8439954,7,778.95,3.553677 +0.8775046,82,465.4186,5.631184 +0.766783,81,881.4362,5.295545 +0.7614452,2,817.9402,1.668020 +0.8634684,70,977.549,5.45882 +0.6649203,92,541.7072,5.18534 +0.8888453,31,648.309,4.989178 +0.9191742,96,278.8759,5.942768 +0.6181284,38,673.0179,4.442334 +0.5762689,58,465.1237,4.696843 +0.8854675,82,929.2616,5.644522 +0.5881515,8,892.8005,2.978079 +0.5335778,10,528.7554,3.094167 +0.6367293,77,205.4550,5.026452 +0.6616144,75,799.0715,5.030716 +0.6048582,38,636.1787,4.418348 +0.8995238,30,970.224,5.007292 +0.6125322,42,38.40748,4.607011 +0.891409,32,725.0784,5.021755 +0.5125611,13,124.2224,3.320415 +0.8535288,71,96.49186,5.557986 +0.8477504,10,847.9913,3.902614 +0.6988878,32,432.6877,4.470823 +0.6028712,81,661.689,4.984862 +0.6450516,6,527.1702,2.800764 +0.5884289,64,623.1206,4.788881 +0.8519591,94,654.6818,5.625326 +0.5619964,37,966.9962,4.31885 +0.5579332,41,643.9374,4.395229 +0.6932872,91,407.4764,5.235375 +0.8612836,67,490.0358,5.435572 +0.5966854,73,474.3225,4.902069 +0.704552,51,421.4517,4.840551 +0.8476425,22,486.5986,4.572071 +0.7455392,38,414.5594,4.709415 +0.8924924,54,406.7609,5.41228 +0.8657634,48,108.6856,5.306214 +0.8560119,72,307.5698,5.483292 +0.838315,27,158.7666,4.737385 +0.7618864,59,65.95942,5.182572 +0.7062403,37,541.1921,4.597449 +0.5729077,11,26.03542,3.336355 +0.6253862,5,929.4751,2.544401 +0.919899,84,661.6104,5.820895 +0.701458,50,923.4494,4.810711 +0.601871,15,289.9652,3.627385 +0.7481714,48,373.6807,4.893143 +0.7421667,60,804.6881,5.030723 +0.9165294,21,968.5381,4.829235 +0.7708394,93,859.6188,5.399452 +0.6857544,59,108.6902,4.954433 +0.8683556,16,234.4982,4.412145 +0.5154821,4,609.3116,2.01444 +0.8063035,44,448.0451,4.971776 +0.7653335,48,548.0994,4.92658 +0.800019,87,625.9536,5.428938 +0.6377652,28,644.537,4.234561 +0.7187339,44,338.4984,4.763994 +0.6851251,32,243.1097,4.451062 +0.6022412,49,916.9572,4.609347 +0.6934007,23,519.9725,4.189089 +0.6338835,8,207.3362,3.087767 +0.8626223,18,979.8857,4.45892 +0.6755484,73,703.2272,5.038301 +0.8819856,100,183.9347,5.83262 +0.7952068,13,281.5281,3.970075 +0.7492558,34,689.2815,4.626091 +0.689057,83,75.17532,5.240701 +0.7983914,96,711.9366,5.48896 +0.8984775,14,973.5494,4.413143 +0.8141442,39,231.5305,4.924353 +0.927646,55,854.625,5.57916 +0.5626983,30,684.469,4.150555 +0.7940533,28,398.7971,4.597789 +0.8263922,74,727.1975,5.38656 +0.9274736,27,920.6118,5.081359 +0.7471762,63,895.0358,5.07554 +0.7025308,49,451.5482,4.805477 +0.5272053,18,164.8201,3.651766 +0.8319172,40,758.38,4.967654 +0.8407389,92,280.317,5.604963 +0.6721226,40,6.242629,5.294283 +0.6011962,76,675.616,4.935894 +0.5040908,82,219.5354,4.842745 +0.5521607,6,234.1007,2.589530 +0.7266228,24,46.95129,4.402272 +0.8604109,36,333.7737,5.002898 +0.8973122,66,524.181,5.561721 +0.5554781,48,787.1215,4.513639 +0.6098639,53,319.3389,4.691742 +0.8863365,83,519.4829,5.669461 +0.8581715,96,536.0489,5.664068 +0.7726931,98,199.6556,5.481125 +0.7523195,40,783.0637,4.755842 +0.5606664,45,776.2248,4.472297 +0.7087404,100,453.8624,5.328639 +0.7956351,55,504.8159,5.102364 +0.816261,67,773.2044,5.289053 +0.8999163,92,420.2012,5.800766 +0.6197997,3,506.0942,1.878208 +0.6030411,33,786.2126,4.301144 +0.833885,85,995.8172,5.496898 +0.9029965,88,937.1946,5.762388 +0.8393617,64,63.50675,5.494906 +0.9094628,41,121.4946,5.379464 +0.8082,49,983.7319,5.043322 +0.8964454,46,638.3635,5.305559 +0.5779769,61,192.9905,4.749822 +0.8953077,99,750.7118,5.810478 +0.581519,22,535.7868,3.924285 +0.9164601,24,945.2403,4.929528 +0.8705304,55,339.1753,5.344138 +0.7342698,10,61.29176,3.600732 +0.7701855,63,524.8687,5.135257 +0.863639,18,860.5287,4.46405 +0.8513909,79,921.4234,5.501578 +0.9324593,18,963.6303,4.811038 +0.9403725,92,512.2976,6.008025 +0.7510038,16,726.3639,4.016014 +0.6960944,78,175.0947,5.157011 +0.6724534,82,183.5058,5.143424 +0.8803488,29,765.2642,4.901266 +0.9448258,94,209.1915,6.114054 +0.8993888,13,662.1018,4.360755 +0.7814681,54,156.3016,5.093745 +0.740741,3,390.4553,2.222361 +0.6476472,99,141.3868,5.240183 +0.6141115,21,526.9791,3.947356 +0.6393056,31,909.5848,4.318396 +0.8372989,9,87.88783,3.819755 +0.8913588,42,525.3397,5.223824 +0.7460777,97,749.0455,5.375651 +0.5112242,26,501.4006,3.939324 +0.7577458,4,659.9605,2.643840 +0.5752648,35,388.7491,4.302567 +0.69794,61,652.5404,4.95284 +0.9204288,8,829.281,4.062277 +0.8043629,61,921.2296,5.189422 +0.9433404,98,119.9997,6.206997 +0.8913393,73,235.3741,5.64058 +0.5868418,24,200.3035,4.018163 +0.6991804,42,813.9534,4.675992 +0.8727032,28,115.8981,4.919729 +0.9020416,21,939.1495,4.752712 +0.830164,78,445.4839,5.444142 +0.8304871,63,98.00515,5.389406 +0.8657783,67,686.2381,5.443104 +0.870506,51,183.5218,5.322739 +0.8817822,40,470.2017,5.15173 +0.5152709,11,504.1909,3.153231 +0.6023214,34,410.1415,4.328208 +0.708448,17,340.4375,3.970749 +0.9284348,78,900.37,5.811991 +0.8747284,41,79.9742,5.264772 +0.7587422,93,879.5506,5.37222 +0.81904,34,973.761,4.805789 +0.8129114,37,59.32467,4.991653 +0.6677408,14,262.6832,3.706778 +0.5907886,29,692.5856,4.173685 +0.6851459,68,326.6066,5.01713 +0.7346132,39,449.1581,4.702737 +0.6277834,44,188.2139,4.592086 +0.857076,79,228.5752,5.565726 +0.7489966,44,331.7083,4.83284 +0.6398296,58,686.1311,4.805169 +0.7281883,54,245.0005,4.945851 +0.61747,83,262.5449,5.039826 +0.6492152,56,272.5927,4.808709 +0.9269381,25,711.9383,5.025897 +0.7535203,74,871.2197,5.203336 +0.8108911,38,654.9283,4.869824 +0.8137289,82,277.0395,5.448624 +0.8100311,4,870.7871,2.823736 +0.9225277,79,451.9067,5.808043 +0.8175055,83,875.792,5.43713 +0.6985237,65,263.3531,5.016426 +0.8551307,66,156.4809,5.461053 +0.5031995,86,7.001363,5.14592 +0.7062228,81,695.2352,5.170916 +0.9492496,81,170.2286,6.075235 +0.6817957,56,515.211,4.861132 +0.6240201,92,331.1661,5.120305 +0.8650343,61,935.077,5.371217 +0.6146213,88,46.13228,5.165465 +0.9255326,43,735.5249,5.402824 +0.8170676,83,930.0177,5.435128 +0.5741391,5,645.2055,2.424253 +0.6910738,64,560.4809,4.975904 +0.5667899,3,781.4491,1.745705 +0.6861743,41,934.9234,4.630133 +0.8817557,85,164.7456,5.732311 +0.6339924,22,542.5813,4.026713 +0.6946548,5,854.4328,2.720764 +0.7252389,25,47.75734,4.431607 +0.7248704,81,953.853,5.204872 +0.6368351,80,951.1507,5.031408 +0.780265,18,810.2112,4.193673 +0.6341829,34,150.5378,4.406329 +0.9303506,5,552.1346,3.693135 +0.8295861,30,611.3115,4.748776 +0.800437,23,167.5824,4.484621 +0.5951078,87,539.6616,5.024872 +0.6653801,20,549.5701,4.010106 +0.6656014,22,913.4959,4.088659 +0.9053822,25,937.0722,4.901416 +0.8449916,30,823.8114,4.794852 +0.6178617,24,945.78,4.065802 +0.5110322,72,569.7987,4.750247 +0.6529969,92,117.9059,5.207349 +0.9252288,41,941.357,5.363595 +0.9405128,87,402.2649,5.984612 +0.9123847,3,119.6966,3.015796 +0.610349,94,444.4629,5.107595 +0.6394546,96,102.4159,5.218884 +0.706229,86,170.1007,5.248948 +0.7921645,3,803.7297,2.396599 +0.9096007,88,482.1117,5.810334 +0.8948665,73,65.74187,5.824915 +0.931119,68,116.2202,5.876182 +0.9165443,50,655.079,5.459218 +0.6190295,22,607.6026,3.996217 +0.9054205,97,967.335,5.835145 +0.8613796,80,361.8505,5.56635 +0.6320835,95,473.5218,5.151439 +0.6012724,51,913.223,4.638169 +0.5516284,74,14.16722,5.037012 +0.8876435,44,426.4689,5.246741 +0.8209103,26,568.8558,4.612582 +0.7733602,28,610.5125,4.535907 +0.5438819,12,284.5485,3.298577 +0.6699824,89,343.1282,5.179079 +0.7670792,75,877.652,5.243034 +0.856828,73,514.2097,5.477684 +0.6147122,17,344.4332,3.765827 +0.5102219,13,897.3323,3.306147 +0.8687245,52,85.07123,5.408425 +0.6356558,41,655.0069,4.534577 +0.607294,78,252.4761,4.977811 +0.6605997,68,380.34,4.967165 +0.6970468,99,412.926,5.300827 +0.7371676,20,761.8237,4.170572 +0.8613029,48,949.6652,5.191448 +0.7518092,57,25.86171,5.303964 +0.8428192,94,605.0885,5.599075 +0.7754938,22,904.471,4.345341 +0.5720353,82,105.3506,4.975982 +0.8558049,75,827.7432,5.482474 +0.8848964,64,442.2547,5.494559 +0.7725104,63,300.7922,5.154277 +0.6358212,60,676.6013,4.823146 +0.8280062,92,957.2909,5.533657 +0.5019211,18,683.6793,3.596421 +0.7994588,97,325.9287,5.518704 +0.6258279,10,352.8465,3.290894 +0.7595384,81,112.2573,5.354279 +0.898181,89,697.1813,5.755352 +0.5527367,6,865.4217,2.587159 +0.6229918,43,282.1226,4.557137 +0.5935787,90,214.6085,5.060573 +0.8400638,36,883.338,4.91393 +0.7590297,81,421.8259,5.290432 +0.8063303,11,98.57122,3.888847 +0.9430843,5,19.57140,4.149973 +0.6029501,27,792.172,4.136586 +0.5844242,64,290.7809,4.789975 +0.8108061,15,392.7209,4.137662 +0.5286417,14,965.8804,3.412557 +0.5333612,94,692.2099,4.97916 +0.7492556,69,983.1755,5.143672 +0.926265,15,476.2882,4.638733 +0.901209,6,680.2512,3.675874 +0.5610927,42,669.7171,4.419549 +0.5780818,48,396.2899,4.556932 +0.761414,30,31.87208,4.754897 +0.7238886,52,252.8219,4.907474 +0.8668956,6,686.2334,3.499596 +0.6828703,56,660.588,4.86045 +0.930659,17,121.4522,4.836156 +0.503826,12,823.3895,3.215834 +0.7849627,85,525.2481,5.379389 +0.8966239,84,598.0863,5.715069 +0.5897803,74,21.46131,5.072482 +0.5022443,68,429.8997,4.69497 +0.798633,54,655.1404,5.092552 +0.7352211,86,161.5042,5.314463 +0.6972101,3,406.9489,2.089562 +0.7888295,34,949.8539,4.721846 +0.7582605,77,560.0893,5.247737 +0.6223786,75,389.7527,4.968524 +0.6780707,67,432.9265,4.987482 +0.8433638,46,590.8193,5.108756 +0.8183657,29,757.525,4.685691 +0.8324944,20,900.0447,4.436677 +0.7936328,36,495.8806,4.785875 +0.7604421,8,317.4111,3.409744 +0.722952,51,47.86064,5.007258 +0.7312193,80,784.4329,5.211266 +0.7637257,45,218.7267,4.897432 +0.7031336,65,577.7302,5.010621 +0.886668,9,434.1708,3.983958 +0.939302,13,614.371,4.612743 +0.8505232,65,935.7227,5.366438 +0.8110883,48,767.812,5.039261 +0.6221106,48,331.0559,4.638021 +0.9313041,23,79.16897,5.136056 +0.632553,99,572.1408,5.178838 +0.6117593,62,895.7685,4.803032 +0.8212386,84,405.0264,5.471996 +0.5869189,65,147.9002,4.819915 +0.7997307,32,334.5291,4.721025 +0.6555177,53,274.5379,4.77934 +0.5538914,26,130.3128,4.030347 +0.7199913,91,864.055,5.276691 +0.9277619,75,665.7905,5.790155 +0.9266476,91,118.5833,6.043288 +0.8831789,55,14.28143,6.25009 +0.6372527,89,74.82464,5.18037 +0.75038,75,634.4639,5.209853 +0.8406942,28,641.8783,4.731309 +0.8768606,37,974.1806,5.062729 +0.7979076,28,565.2656,4.60292 +0.8365606,35,939.8184,4.881241 +0.7960196,84,160.4486,5.44722 +0.8787808,17,712.3158,4.482225 +0.5333636,32,338.1081,4.155507 +0.647125,32,484.6652,4.363403 +0.8641002,5,411.5565,3.302591 +0.7868153,30,324.2991,4.636093 +0.7962481,54,56.46181,5.23915 +0.8145667,10,880.2147,3.783172 +0.5658414,58,782.1528,4.675848 +0.9341618,51,552.7404,5.579226 +0.6841805,57,138.5348,4.912799 +0.9119638,53,161.4325,5.547657 +0.5188456,27,33.57959,4.037935 +0.757641,73,730.3337,5.205093 +0.9349815,18,982.9337,4.828403 +0.5066024,6,485.5756,2.487666 +0.5979052,67,867.3325,4.836706 +0.8607715,41,775.3904,5.08006 +0.7254145,87,609.8498,5.260913 +0.7255659,100,961.0768,5.351339 +0.5150924,99,445.5918,4.990515 +0.5446147,28,289.2843,4.065534 +0.9469407,99,475.0219,6.103677 +0.7343403,80,926.2906,5.215986 +0.5975759,29,512.1599,4.188007 +0.837378,9,599.9462,3.769414 +0.9442889,59,495.7354,5.749563 +0.8250957,97,715.8522,5.565506 +0.6550313,90,432.9978,5.15527 +0.7075834,9,212.4720,3.386328 +0.7454893,24,390.3709,4.348304 +0.695866,36,249.5993,4.56663 +0.60671,22,336.0653,3.976246 +0.8412084,9,965.9642,3.780548 +0.6861445,46,171.8996,4.746207 +0.9261788,43,673.9801,5.40854 +0.861084,90,308.0283,5.651429 +0.7909505,83,304.5175,5.3931 +0.5625539,3,679.3792,1.735618 +0.647025,10,605.1443,3.335524 +0.921531,93,231.2533,5.948928 +0.9164885,67,188.4395,5.720053 +0.7676392,83,989.0182,5.31298 +0.5940685,10,497.944,3.220156 +0.8676697,32,789.5488,4.924061 +0.7076742,29,67.17613,4.479062 +0.6318245,52,265.5441,4.720642 +0.571069,65,8.232299,5.137 +0.7430801,81,823.1498,5.244276 +0.7164226,8,284.3927,3.288375 +0.5729531,38,622.0593,4.361272 +0.5541727,55,264.4454,4.62462 +0.948875,15,670.5908,4.803963 +0.768947,100,119.684,5.521015 +0.921052,46,131.9058,5.519767 +0.568908,55,421.9705,4.64489 +0.5640359,47,556.3127,4.513669 +0.6904132,68,801.1595,5.014499 +0.6086555,12,922.6924,3.426733 +0.6123029,39,873.346,4.450664 +0.5088076,91,517.9313,4.919105 +0.87053,35,798.1675,5.000599 +0.8372315,14,616.9215,4.161282 +0.8365753,44,889.9804,5.049199 +0.6835763,100,733.1015,5.273686 +0.7802409,41,47.49915,5.001162 +0.7647672,98,640.1398,5.425595 +0.9454551,71,637.387,5.869999 +0.8679253,35,22.26791,5.454062 +0.7313009,100,178.5980,5.40588 +0.6704843,23,444.0414,4.141148 +0.659972,35,880.514,4.455541 +0.7058613,44,697.5712,4.726399 +0.762979,66,935.1429,5.143505 +0.7887987,58,50.98269,5.287288 +0.8073858,99,622.5568,5.534763 +0.6100832,79,867.3335,4.977132 +0.544471,3,459.738,1.692861 +0.8465874,95,196.6390,5.666055 +0.683948,55,459.1472,4.853582 +0.9185709,49,650.7622,5.456321 +0.5765227,5,679.4412,2.429649 +0.6383592,62,148.6722,4.880552 +0.6025905,56,325.3961,4.720113 +0.8848486,97,97.54827,5.90136 +0.7362832,26,218.8576,4.402630 +0.5784452,59,492.3637,4.71295 +0.6147081,36,333.0535,4.399336 +0.6825984,7,352.4882,3.06174 +0.9282963,26,169.3765,5.122438 +0.7680785,6,227.9232,3.141793 +0.5355871,43,347.3572,4.398321 +0.6693587,54,436.3146,4.812174 +0.773232,92,549.7613,5.404733 +0.6195498,69,980.2326,4.894582 +0.8400778,99,893.5253,5.617641 +0.9255642,70,761.4745,5.729276 +0.9080847,82,792.9793,5.742875 +0.522612,6,565.2858,2.521984 +0.6417358,47,183.7160,4.670733 +0.7013078,51,383.2288,4.83544 +0.7069545,56,436.4764,4.914058 +0.8542498,80,547.3648,5.529451 +0.509647,4,174.7376,2.004169 +0.934806,45,835.8438,5.488301 +0.7056071,4,688.9132,2.487025 +0.5115704,38,343.0629,4.258021 +0.8745496,20,267.9963,4.615004 +0.7428874,92,849.7082,5.331239 +0.624939,92,874.5263,5.110626 +0.8117291,78,619.3193,5.385168 +0.7642174,66,806.5085,5.147957 +0.5821417,25,235.8559,4.041735 +0.8256269,52,266.7959,5.164253 +0.882332,73,784.2244,5.558549 +0.6688183,56,96.3575,4.885902 +0.708993,92,537.4415,5.268645 +0.8660636,24,719.5138,4.701973 +0.5982325,52,796.4927,4.648324 +0.7785366,68,250.1605,5.229993 +0.8040057,6,204.6433,3.262558 +0.7114325,15,137.4441,3.885444 +0.918715,91,280.5756,5.905105 +0.77819,59,306.9236,5.120643 +0.7177611,89,459.1009,5.265906 +0.8641408,80,883.2309,5.552217 +0.5843685,24,252.8853,4.010388 +0.8850618,47,743.1372,5.269393 +0.5108136,14,170.1100,3.385231 +0.6256445,95,433.2858,5.141522 +0.8231917,79,441.6427,5.433135 +0.640841,20,919.4517,3.956233 +0.7994082,23,379.5856,4.457961 +0.8731463,64,95.10218,5.562394 +0.6484933,79,495.9768,5.049098 +0.5221934,40,259.5452,4.319939 +0.8810941,68,133.8570,5.596386 +0.5679002,35,538.902,4.287083 +0.8011864,2,146.2337,1.825452 +0.7634377,45,64.61275,4.981885 +0.9138625,24,81.08869,5.048115 +0.8308868,100,747.8617,5.600978 +0.9327479,50,626.0069,5.553264 +0.93067,33,997.0507,5.243978 +0.7921992,82,626.1785,5.369069 +0.6689989,8,817.166,3.162716 +0.8045147,78,872.6406,5.360772 +0.9334461,16,676.6,4.731911 +0.5758246,17,405.8145,3.686859 +0.9492571,89,128.8834,6.178498 +0.7000412,73,409.276,5.09306 +0.7811956,82,837.8587,5.33799 +0.6075243,33,233.9159,4.320678 +0.6513116,24,423.5256,4.137315 +0.7313515,14,853.3903,3.847889 +0.8564085,22,693.0677,4.598462 +0.7045416,63,136.4036,5.031386 +0.8711795,30,532.752,4.895991 +0.8020238,93,548.076,5.481821 +0.7703214,78,15.85805,5.814334 +0.6343191,27,128.4217,4.22205 +0.5738696,66,728.534,4.786255 +0.5966273,62,174.4677,4.797729 +0.6545792,88,954.4501,5.130017 +0.9350415,76,378.4156,5.864486 +0.8698155,88,643.2018,5.641198 +0.7418213,57,397.9183,5.003477 +0.6666204,16,693.6469,3.816609 +0.939269,32,410.4561,5.301479 +0.9056354,75,338.3497,5.70178 +0.7204378,96,104.8828,5.387561 +0.7352106,34,780.4859,4.592326 +0.604017,95,810.4942,5.098799 +0.5039632,100,229.6094,4.986289 +0.6678024,57,352.7455,4.852644 +0.6667347,61,620.592,4.892999 +0.7025512,35,866.2715,4.542347 +0.5823673,29,788.9539,4.157619 +0.7236481,100,242.7644,5.375992 +0.5487022,92,974.0744,4.986154 +0.5448123,5,572.2373,2.357788 +0.731591,73,525.9038,5.153309 +0.7486298,69,940.0264,5.142729 +0.8496939,32,712.1147,4.861084 +0.6722585,5,501.8601,2.663167 +0.5801296,69,207.4424,4.844236 +0.7432576,62,787.7531,5.056841 +0.6214598,33,23.85876,4.484477 +0.7875473,58,213.6908,5.145776 +0.642812,29,521.653,4.274674 +0.5335032,4,930.6728,2.055084 +0.7630798,81,908.8545,5.286844 +0.7369504,28,922.611,4.442898 +0.6428282,27,484.1696,4.216783 +0.6357108,74,283.3895,4.988065 +0.7164243,78,447.3305,5.171399 +0.7709437,55,372.3491,5.046897 +0.6852679,28,335.7585,4.338118 +0.808534,58,340.6183,5.184588 +0.7136241,62,718.4628,4.995206 +0.8177113,80,915.472,5.412148 +0.8319302,87,626.84,5.514708 +0.7422361,93,405.5656,5.349856 +0.6930993,81,146.8204,5.185964 +0.8682528,58,844.0453,5.349434 +0.7270226,100,424.7374,5.366699 +0.7914932,61,688.2172,5.160086 +0.5900729,27,767.5824,4.112602 +0.7003193,89,642.763,5.226167 +0.6651674,74,857.3294,5.027037 +0.7184364,63,284.3633,5.033157 +0.8324358,41,342.2922,5.003632 +0.5031346,67,438.8357,4.685145 +0.5825579,41,785.6322,4.437242 +0.7942139,23,211.6097,4.457539 +0.845134,6,783.0932,3.404465 +0.6857612,48,137.6217,4.786544 +0.7278745,10,717.0041,3.530233 +0.5885082,82,145.7116,4.994707 +0.6388615,30,770.114,4.291878 +0.926036,14,461.9188,4.58259 +0.6847766,27,422.8900,4.304487 +0.752521,85,811.802,5.298064 +0.7488061,63,189.1322,5.115276 +0.6599034,73,59.11036,5.103032 +0.6267682,35,710.3962,4.392984 +0.932423,92,361.4332,5.974252 +0.5922226,21,432.1012,3.905775 +0.8041683,90,853.5206,5.457261 +0.8005206,44,587.8442,4.950966 +0.927466,9,107.028,4.281798 +0.8202604,62,634.5662,5.249415 +0.803947,75,605.6371,5.33821 +0.6912899,47,671.1496,4.746582 +0.8335924,21,559.5399,4.484684 +0.5509898,3,283.7228,1.709308 +0.8715196,51,212.7831,5.317158 +0.6696205,18,518.5567,3.928592 +0.5242603,30,218.4836,4.089194 +0.609197,84,56.53437,5.101272 +0.7185949,92,848.8469,5.281629 +0.7343257,73,626.3547,5.156428 +0.865474,56,506.3368,5.32564 +0.5027801,93,974.2632,4.922927 +0.7855868,21,950.671,4.334514 +0.6107691,81,541.3309,5.000013 +0.5547765,49,494.3407,4.53091 +0.7692043,88,362.1617,5.375039 +0.9403376,49,752.7243,5.585192 +0.829064,60,478.2757,5.257702 +0.8601706,25,166.6052,4.754331 +0.6196904,43,304.0243,4.549829 +0.5717478,25,858.482,4.013487 +0.693023,20,335.4159,4.075407 +0.8598185,31,330.6993,4.889496 +0.6915085,37,69.03833,4.636358 +0.8468429,85,300.6356,5.567331 +0.5777309,21,91.25657,3.900269 +0.5987378,42,114.1785,4.513828 +0.564499,18,18.32179,3.827946 +0.628622,71,219.1825,4.950753 +0.9445081,23,707.8417,5.088072 +0.9388601,19,386.5834,4.917079 +0.8643879,47,592.6865,5.195143 +0.7737825,21,473.8053,4.309089 +0.7264336,9,615.857,3.425729 +0.9412087,84,400.5238,5.967095 +0.7427203,48,997.1332,4.867639 +0.7715587,85,657.4747,5.343616 +0.6399763,7,534.5213,2.955814 +0.6063786,26,711.9156,4.112105 +0.7256356,78,949.8124,5.18012 +0.6477573,47,895.3827,4.66007 +0.7986201,31,18.21264,5.083396 +0.750134,88,414.8571,5.328381 +0.5923543,14,92.57298,3.560902 +0.6832271,73,685.9445,5.053047 +0.7574562,43,151.873,4.863263 +0.677596,100,414.4082,5.270896 +0.6682776,89,907.168,5.162828 +0.9330502,96,284.6103,6.02071 +0.5842748,51,469.3508,4.612856 +0.8787779,81,401.5259,5.633028 +0.7580647,77,669.1351,5.244463 +0.8872826,87,650.057,5.6979 +0.8779282,62,661.6712,5.435085 +0.8914228,41,453.3747,5.2109 +0.9347915,49,936.5544,5.543634 +0.6613053,84,493.9254,5.116008 +0.5915268,55,993.0702,4.678128 +0.8180775,53,480.8366,5.137994 +0.558241,47,382.5659,4.506435 +0.682103,52,725.278,4.803213 +0.6710785,10,970.0457,3.389202 +0.5560348,45,16.90907,4.62216 +0.9401617,69,134.6376,5.927962 +0.9492752,16,819.697,4.853928 +0.8111686,82,99.48363,5.516021 +0.6539134,70,355.3463,4.976903 +0.6973646,87,273.2096,5.221455 +0.584519,33,907.0917,4.266788 +0.661414,45,753.884,4.653987 +0.691314,98,431.7889,5.281952 +0.9053537,70,284.3603,5.663525 +0.878904,92,177.3085,5.767757 +0.940425,74,634.511,5.861479 +0.6773772,9,36.89003,3.370417 +0.938145,71,9.568438,7.736828 +0.7049552,62,308.9711,4.991195 +0.768903,88,218.1471,5.393243 +0.8924252,18,442.2652,4.597484 +0.5605281,42,973.999,4.41706 +0.5675563,35,394.8235,4.288579 +0.9314867,64,990.4558,5.699404 +0.854969,56,221.3102,5.320816 +0.6154144,90,419.8957,5.08615 +0.5046474,5,929.2128,2.267940 +0.8938657,91,747.1564,5.750207 +0.5461269,34,592.0258,4.224583 +0.7374015,33,34.94556,4.743901 +0.7812415,44,585.6939,4.900668 +0.5854985,20,73.7051,3.879755 +0.8041685,56,485.833,5.138593 +0.6455867,67,134.8849,4.95596 +0.8334194,32,323.5623,4.823296 +0.6835554,33,248.6061,4.471775 +0.9274518,41,204.8720,5.435482 +0.7580894,12,390.4757,3.785481 +0.8234953,30,705.3142,4.727986 +0.5803942,47,998.7147,4.538939 +0.6302062,50,22.45701,4.863313 +0.7932594,59,29.19641,5.444473 +0.5677228,11,340.1472,3.260991 +0.5143458,70,301.0236,4.738882 +0.8996777,5,36.72852,3.613945 +0.6948788,20,59.8754,4.139033 +0.801904,3,17.53048,2.547548 +0.825884,3,362.6367,2.532459 +0.5641203,41,378.8667,4.409494 +0.6206331,82,59.89471,5.102902 +0.9020196,82,488.3076,5.728979 +0.5772379,11,192.7502,3.284991 +0.7854763,15,719.8687,4.054453 +0.5661362,5,326.2423,2.407589 +0.855098,90,987.4242,5.598997 +0.9094228,17,314.8952,4.647975 +0.9105804,14,822.2919,4.479334 +0.6425095,19,776.2866,3.915952 +0.5800772,23,751.0009,3.958348 +0.8283034,40,306.9341,4.975931 +0.8694394,12,63.79335,4.252581 +0.9487476,13,927.253,4.68589 +0.8891563,27,416.9288,4.897393 +0.6400752,35,650.9308,4.418827 +0.930565,77,427.6444,5.839496 +0.6607416,84,480.9301,5.115355 +0.7374158,21,360.8883,4.219661 +0.7214416,90,627.8624,5.275888 +0.6634831,52,242.9271,4.783196 +0.633519,51,832.0138,4.696118 +0.867209,15,101.3933,4.396753 +0.7320115,44,304.3464,4.795765 +0.8916781,51,853.781,5.351103 +0.6815065,32,698.7288,4.429519 +0.7062608,20,411.6185,4.103026 +0.6216569,94,854.663,5.120379 +0.7749632,17,886.286,4.130346 +0.7489943,51,669.2371,4.930199 +0.8960939,30,605.3457,4.998742 +0.541271,5,803.5865,2.349337 +0.883344,83,878.3484,5.645366 +0.6615822,19,616.9031,3.957096 +0.8645687,14,451.1396,4.269158 +0.8197885,44,745.7335,5.001257 +0.9105769,22,975.8806,4.831691 +0.8194167,33,518.502,4.792544 +0.8237274,11,263.2219,3.915241 +0.8786824,38,564.1758,5.09802 +0.9028904,65,866.5719,5.564251 +0.7634663,45,909.7111,4.868551 +0.9061444,11,340.5835,4.267836 +0.727566,31,405.0189,4.510243 +0.5869022,53,742.01,4.643569 +0.6267716,82,756.8724,5.033235 +0.6941218,49,674.2737,4.783475 +0.6440676,72,403.9489,4.977191 +0.7643208,80,940.397,5.28069 +0.8215134,91,962.321,5.508477 +0.7344723,70,929.2222,5.122587 +0.6420764,9,405.7842,3.221721 +0.9224962,33,907.7449,5.196097 +0.92215,42,604.9682,5.371616 +0.9473083,16,808.4234,4.83695 +0.6679534,10,297.2999,3.388319 +0.8085884,87,391.1016,5.462548 +0.7428786,94,208.0541,5.381112 +0.7319898,77,842.6398,5.18538 +0.8264745,54,333.4286,5.185714 +0.8906358,42,879.7977,5.210706 +0.7497273,88,757.6578,5.316739 +0.9363728,93,740.3891,5.97637 +0.5203183,4,5.041769,2.183347 +0.648732,17,203.3104,3.843603 +0.5029027,20,757.0614,3.693276 +0.8637881,78,296.9534,5.566156 +0.9129572,14,146.4340,4.545495 +0.6906615,40,257.9211,4.636827 +0.8834442,74,793.7916,5.571652 +0.7800757,21,4.930221,5.522151 +0.867441,17,116.9928,4.49343 +0.6881186,70,684.5632,5.032408 +0.5881212,52,243.6473,4.642358 +0.8899165,62,666.8032,5.482087 +0.7845255,90,713.7938,5.411659 +0.6786644,72,575.786,5.036507 +0.7749491,79,740.7498,5.299343 +0.6163517,50,402.6808,4.656188 +0.7617745,100,408.036,5.442128 +0.9361814,46,508.8477,5.525133 +0.7015941,74,770.7665,5.096961 +0.7794969,72,594.9117,5.249219 +0.642179,74,748.8859,4.986675 +0.5983462,52,171.4239,4.667948 +0.6005191,47,615.7238,4.576628 +0.8843986,22,501.1241,4.715799 +0.7008892,25,449.2083,4.275913 +0.52497,38,860.323,4.276883 +0.622708,53,19.02061,4.92084 +0.5727642,77,157.0283,4.918638 +0.7725483,86,575.0621,5.356232 +0.6069527,16,346.6407,3.695274 +0.7587479,48,168.0675,4.944474 +0.7360718,62,721.5008,5.04224 +0.8545806,40,658.2835,5.043252 +0.8961155,80,809.8722,5.67364 +0.6650538,14,150.3996,3.709953 +0.939034,30,475.0172,5.248813 +0.6833314,42,302.3655,4.655899 +0.6175995,45,685.2173,4.573027 +0.6677279,28,314.8646,4.302073 +0.7154529,21,892.7738,4.15897 +0.6333697,2,961.5814,1.277359 +0.5898549,7,320.5183,2.842989 +0.6582885,95,405.8774,5.200164 +0.510954,70,611.108,4.728801 +0.9055901,74,428.1937,5.68225 +0.8400673,54,58.62375,5.384523 +0.734939,62,260.0854,5.060028 +0.52751,44,515.2361,4.400222 +0.5424423,48,149.0962,4.507725 +0.7204047,77,301.1897,5.179545 +0.9272841,13,550.2231,4.527436 +0.6945376,15,446.9727,3.824939 +0.5553579,44,411.7695,4.449252 +0.7173361,87,997.4134,5.238975 +0.6202049,47,794.0686,4.610215 +0.8752933,3,974.2505,2.761596 +0.8339996,63,286.8030,5.323071 +0.6327848,42,810.0312,4.546531 +0.6340459,45,269.9277,4.613969 +0.866857,19,677.0124,4.522703 +0.7734467,59,643.4308,5.093006 +0.8982833,96,211.7656,5.862206 +0.6749493,21,304.4563,4.078275 +0.7511355,60,202.4649,5.082362 +0.742047,77,48.54489,5.371515 +0.6776796,63,789.4974,4.935029 +0.855732,27,571.1547,4.757314 +0.8018288,57,777.9217,5.137002 +0.7331972,22,51.23239,4.336138 +0.6569014,73,102.1165,5.055507 +0.7537886,29,154.4731,4.546038 +0.8012184,81,740.0648,5.38049 +0.8549478,54,546.232,5.262064 +0.8976285,61,231.4609,5.546494 +0.8834517,6,628.3206,3.580245 +0.6746422,89,548.0865,5.179786 +0.8358614,9,451.8896,3.766575 +0.8406225,57,762.0856,5.247538 +0.9481807,28,293.3038,5.290238 +0.5388981,3,598.9741,1.679330 +0.9480118,73,445.4003,5.920966 +0.8536345,98,30.87349,6.077053 +0.8899995,11,376.5903,4.180464 +0.9368585,82,236.7299,5.957222 +0.9390339,94,494.9168,6.014249 +0.5705278,3,303.2342,1.756266 +0.8376015,31,126.5897,4.857314 +0.5003688,16,621.8171,3.485094 +0.6873293,59,652.178,4.907611 +0.6599451,24,221.4411,4.164048 +0.9088598,39,815.7084,5.243244 +0.8031311,5,669.6773,3.052888 +0.9491043,10,996.9979,4.475921 +0.9290567,72,727.5371,5.768695 +0.7602706,12,188.8118,3.803644 +0.8416336,15,220.5798,4.255509 +0.9339155,19,4.776814,7.721867 +0.7953252,3,625.1871,2.409029 +0.7715417,90,690.4963,5.381861 +0.7641226,14,915.3901,3.933091 +0.5798988,52,903.444,4.616092 +0.8216424,11,951.3616,3.893048 +0.5785521,6,71.00523,2.661841 +0.8724881,87,714.1226,5.640678 +0.8948278,35,337.652,5.121659 +0.7871695,53,50.68324,5.213849 +0.7097965,5,905.984,2.761924 +0.9192579,88,4.904059,9.408779 +0.8199713,94,854.027,5.527674 +0.9406058,18,479.2811,4.882971 +0.893909,87,899.2716,5.717317 +0.650764,81,712.7453,5.067031 +0.5889707,18,383.5385,3.764445 +0.8529372,77,924.1236,5.489221 +0.609893,96,440.4276,5.12181 +0.531659,100,637.8155,5.021182 +0.7622855,12,853.1681,3.790901 +0.5062748,27,854.2535,3.961283 +0.6536989,51,892.0227,4.732863 +0.5918758,87,181.1760,5.037371 +0.8949669,90,866.063,5.744409 +0.7391464,22,531.6416,4.257614 +0.6058422,56,816.772,4.717399 +0.6916805,84,483.5835,5.173199 +0.7928663,65,677.2386,5.208507 +0.799502,84,632.8621,5.403581 +0.647877,88,237.0035,5.138919 +0.6310709,41,682.083,4.525733 +0.7535243,52,206.0863,4.982394 +0.842538,27,105.2609,4.78065 +0.9368387,36,790.4721,5.349369 +0.7363599,16,303.7005,3.987744 +0.6187289,6,904.779,2.736695 +0.7830982,75,54.84483,5.450532 +0.7057671,57,511.7964,4.922182 +0.8533923,24,698.5605,4.655287 +0.5684159,6,224.2865,2.626111 +0.6368277,55,697.6601,4.760043 +0.8902097,96,699.0142,5.771775 +0.73018,27,826.1295,4.398932 +0.7229493,27,810.7536,4.382487 +0.5890476,3,9.206372,1.889919 +0.6626262,57,311.4022,4.84493 +0.8247307,39,750.575,4.927463 +0.862285,61,599.7255,5.369646 +0.8596518,72,146.6928,5.543895 +0.6842161,72,170.3721,5.076099 +0.6330123,41,248.7231,4.54117 +0.7745,49,151.7156,5.005232 +0.5936884,35,572.1413,4.333129 +0.8357376,16,500.1788,4.271279 +0.51271,7,73.56993,2.686149 +0.6896422,15,463.5934,3.813312 +0.7443422,66,119.7634,5.164269 +0.8847271,62,525.1662,5.467059 +0.8533142,83,457.8641,5.556159 +0.9428908,31,915.307,5.28519 +0.7709193,41,914.0045,4.817427 +0.8091848,52,419.4211,5.102556 +0.7552535,16,49.63281,4.120643 +0.8687983,67,938.1444,5.44823 +0.7432566,33,646.8512,4.589547 +0.8600137,50,840.1946,5.217403 +0.7541783,34,157.5049,4.672121 +0.689819,8,177.5935,3.225273 +0.7587453,60,558.5484,5.07267 +0.9248554,40,357.1488,5.370525 +0.6697601,13,584.2735,3.636448 +0.6823748,8,271.6928,3.201521 +0.6981148,18,939.7967,3.988303 +0.889497,85,990.792,5.682722 +0.7092462,16,209.8601,3.92723 +0.6301518,51,804.4977,4.690217 +0.5037445,11,289.3195,3.132128 +0.8170627,88,197.9134,5.523932 +0.5186405,43,333.365,4.369594 +0.7309547,4,567.6746,2.561449 +0.8606785,93,217.5858,5.691876 +0.8870742,2,740.502,2.244443 +0.8995338,84,34.00486,6.173225 +0.7740336,48,913.8893,4.941309 +0.8933359,37,627.4083,5.138033 +0.7583827,18,540.0579,4.138342 +0.6642341,11,250.0934,3.473574 +0.6526306,21,904.9387,4.022325 +0.9433407,25,150.4380,5.214132 +0.7412913,88,924.085,5.296476 +0.8818567,65,24.57030,6.015878 +0.748409,24,914.8858,4.346754 +0.8659564,86,474.0914,5.620953 +0.6847987,20,913.508,4.049003 +0.8728599,58,771.6419,5.367578 +0.8868516,87,574.9383,5.69949 +0.6116315,82,41.29352,5.117752 +0.9496053,60,998.339,5.781189 +0.9210157,5,880.3966,3.619327 +0.7488685,100,154.2452,5.453751 +0.792422,57,997.3951,5.10985 +0.7057241,20,909.2889,4.095626 +0.9060405,48,457.6723,5.388283 +0.8020144,14,799.7226,4.043229 +0.9114372,53,694.1402,5.471555 +0.6164202,10,699.8877,3.267098 +0.8557893,32,968.0013,4.878456 +0.6859665,62,220.2631,4.961493 +0.8556446,79,460.6411,5.530325 +0.7087365,37,18.42120,4.892413 +0.6066091,48,832.439,4.601762 +0.737552,90,976.363,5.303552 +0.8328863,79,368.9973,5.466714 +0.5687865,60,950.4368,4.705405 +0.9128557,79,511.2905,5.753497 +0.7816981,19,371.8202,4.251545 +0.7339682,93,749.6793,5.321598 +0.9017031,93,407.8017,5.816921 +0.5868505,36,739.4715,4.341942 +0.8923477,82,594.2587,5.681646 +0.8414654,14,493.1889,4.179133 +0.8589573,18,553.6746,4.451215 +0.7069543,76,343.5581,5.139243 +0.5513179,37,41.46768,4.362217 +0.7954259,47,799.2324,4.981373 +0.9280813,3,747.2373,3.110425 +0.6391395,31,156.1447,4.340451 +0.508044,68,273.9174,4.707716 +0.6902827,52,682.7568,4.819914 +0.6414225,32,371.048,4.354987 +0.8544067,47,613.95,5.159753 +0.6471667,27,614.637,4.223626 +0.879826,52,65.41423,5.501719 +0.7318367,9,756.8057,3.439061 +0.6710358,99,823.9917,5.242706 +0.6586583,79,203.5998,5.08643 +0.9153481,65,145.8204,5.718992 +0.9045708,39,518.867,5.231822 +0.9182237,4,293.8663,3.375961 +0.6201512,91,958.31,5.094233 +0.531135,5,679.083,2.326895 +0.6544671,79,801.718,5.054843 +0.5949144,18,452.2243,3.775143 +0.7362622,80,828.845,5.22116 +0.7638218,92,458.6902,5.387075 +0.9012236,87,312.5676,5.784071 +0.7628684,94,537.0887,5.396255 +0.7550078,19,982.6065,4.170556 +0.6672037,77,32.73787,5.236582 +0.805925,75,779.1546,5.339145 +0.5541851,23,465.4516,3.912125 +0.7172208,65,536.8639,5.040288 +0.7138174,61,829.1607,4.982435 +0.6165516,36,703.632,4.396356 +0.7870262,30,985.7532,4.620939 +0.7912173,9,89.4149,3.652351 +0.6588602,81,851.9986,5.080004 +0.8534626,15,235.5219,4.298059 +0.5417177,97,37.93112,5.095782 +0.7268279,98,840.1265,5.341517 +0.8217522,99,139.2584,5.644923 +0.6615135,73,271.7089,5.027002 +0.8379693,14,933.443,4.160273 +0.6898353,78,174.3968,5.144343 +0.9456171,63,372.4586,5.81557 +0.9227115,69,630.8074,5.708987 +0.6673543,62,413.4679,4.911183 +0.7727943,24,809.3736,4.409296 +0.6507278,29,359.3616,4.294149 +0.6849543,82,693.828,5.13863 +0.5105532,4,978.4382,2.002822 +0.8235352,74,327.0553,5.398906 +0.5910593,46,855.208,4.541509 +0.6297961,8,967.5094,3.0706 +0.607688,8,471.5654,3.022891 +0.7571063,34,70.40006,4.733643 +0.791352,77,404.1305,5.333374 +0.9173874,79,271.0829,5.807408 +0.6797923,28,496.1202,4.321795 +0.7953507,57,596.6884,5.124088 +0.850552,70,335.183,5.442296 +0.7431803,94,839.5868,5.346693 +0.6440024,15,983.9204,3.708547 +0.7837544,62,560.4449,5.155577 +0.836111,68,626.0255,5.359618 +0.5484813,12,157.0824,3.312683 +0.7455065,23,808.4312,4.305929 +0.7591955,36,486.1776,4.698127 +0.8779367,58,330.3594,5.410352 +0.593193,36,840.8998,4.352766 +0.6269665,44,889.8402,4.57122 +0.8868482,77,174.344,5.680853 +0.752801,62,114.1809,5.142559 +0.8743457,45,570.4405,5.201879 +0.7211467,83,22.77365,5.534706 +0.6912285,50,179.5001,4.818787 +0.6746614,56,25.13000,5.057343 +0.8218585,18,350.1895,4.328555 +0.5137584,21,501.476,3.757731 +0.740062,100,295.5024,5.403938 +0.5987175,12,829.5367,3.406227 +0.6969432,24,777.029,4.229027 +0.8577518,90,243.7531,5.652591 +0.8004673,42,774.9877,4.912852 +0.7565447,100,561.181,5.423456 +0.5786212,70,75.22302,4.885775 +0.6195509,93,718.8692,5.110625 +0.788771,62,282.489,5.185677 +0.843245,44,575.6044,5.076896 +0.8157837,54,697.1208,5.137986 +0.8604531,98,792.4643,5.675903 +0.6037213,44,714.739,4.530425 +0.851184,33,819.7258,4.887258 +0.8473872,72,448.4953,5.441543 +0.5858104,70,778.5424,4.849169 +0.9012477,98,237.0837,5.880302 +0.6218494,86,359.1172,5.067211 +0.8382145,40,276.6088,5.01096 +0.7575617,45,487.4906,4.862268 +0.93472,74,982.2397,5.813632 +0.787328,48,72.26743,5.087387 +0.8512459,29,552.8546,4.79632 +0.719967,9,908.876,3.407101 +0.5877352,78,208.0282,4.947623 +0.8423043,79,600.2308,5.481344 +0.8392067,94,731.9999,5.584333 +0.5623799,49,16.30969,4.714975 +0.647799,9,46.71102,3.279418 +0.5288595,42,715.873,4.364200 +0.789742,2,784.4931,1.773259 +0.756642,43,649.7852,4.822198 +0.7764437,50,46.35313,5.150306 +0.6674194,85,991.1572,5.128339 +0.906969,11,130.1505,4.311036 +0.7518938,70,334.027,5.177749 +0.528787,18,255.6916,3.650907 +0.8252282,19,343.1041,4.384494 +0.6891648,17,884.256,3.918804 +0.8468115,2,649.4154,2.022372 +0.7624286,95,693.2675,5.398028 +0.7566833,68,228.3779,5.180752 +0.606168,29,811.7703,4.20159 +0.7548573,73,552.7757,5.203042 +0.820666,22,518.8606,4.481232 +0.6412007,32,405.3414,4.353561 +0.6027521,20,49.8559,3.934375 +0.734133,2,519.9769,1.575193 +0.7532216,43,924.8756,4.810621 +0.6853911,8,475.9357,3.204962 +0.9023783,19,398.6669,4.691687 +0.6758605,20,864.8661,4.029875 +0.7751433,11,661.0047,3.749591 +0.9425368,54,73.00199,5.890914 +0.8177478,11,295.5029,3.892388 +0.9261527,6,245.4474,3.854764 +0.8882492,35,651.1299,5.075141 +0.7468783,15,779.9176,3.948789 +0.5808538,17,480.0077,3.695823 +0.646268,20,723.2668,3.968426 +0.8976664,49,352.3127,5.372937 +0.7144762,39,539.7912,4.655678 +0.6694488,42,295.7246,4.628144 +0.7095104,34,871.5172,4.534577 +0.7675866,27,495.3648,4.49496 +0.6749292,82,737.8624,5.11927 +0.6683889,73,588.4477,5.026845 +0.5178061,22,718.1896,3.805074 +0.8245529,83,284.1121,5.48635 +0.6444938,35,864.6639,4.425571 +0.8060923,99,924.1675,5.52485 +0.7776994,25,816.9563,4.454753 +0.828381,4,362.6857,2.899921 +0.5356391,36,859.755,4.251434 +0.8132802,64,617.6336,5.252743 +0.5805669,32,734.2547,4.235485 +0.9149193,84,749.9509,5.792419 +0.6743994,95,277.3819,5.238203 +0.6252865,70,618.6787,4.918297 +0.803131,72,856.4609,5.302494 +0.6792797,28,90.66852,4.363507 +0.6178848,99,391.6746,5.158681 +0.6664492,99,552.1533,5.238936 +0.8704619,81,12.83819,6.593567 +0.9337554,76,194.8326,5.904346 +0.8441718,83,870.5995,5.51324 +0.7154217,49,367.0998,4.836076 +0.6672896,69,241.8273,5.000109 +0.6678378,94,974.4227,5.199604 +0.9408869,5,481.7649,3.783829 +0.6264312,10,93.73413,3.310071 +0.8699315,11,891.6617,4.077148 +0.6533887,78,550.6135,5.047538 +0.6871648,79,37.89538,5.28403 +0.8278326,41,55.32326,5.136375 +0.9007479,44,384.0775,5.308271 +0.9045541,84,87.16014,5.916201 +0.8465129,89,655.0107,5.572192 +0.6095092,56,275.0738,4.735062 +0.9337829,54,80.79501,5.798131 +0.5302162,22,841.8739,3.827253 +0.5068682,95,214.3008,4.954852 +0.6540878,49,531.6365,4.70768 +0.6909439,5,327.8551,2.714410 +0.9104148,32,848.5844,5.109452 +0.8152395,98,935.9499,5.541505 +0.6585675,64,568.535,4.913769 +0.8293236,13,607.8378,4.070081 +0.5164619,89,81.7367,4.943977 +0.6309601,3,53.40032,1.923181 +0.799725,79,833.1201,5.357887 +0.7794195,24,916.7622,4.425833 +0.8949443,27,301.5564,4.934083 +0.6930091,17,21.62224,4.103417 +0.6977771,22,386.8469,4.16481 +0.5475462,18,802.1444,3.681317 +0.5114595,92,272.2015,4.93625 +0.931486,73,945.969,5.78597 +0.7490772,68,791.3002,5.135225 +0.6596451,64,343.5261,4.922892 +0.8957032,94,16.72671,6.692282 +0.6923005,77,120.6771,5.158418 +0.9456358,24,780.0273,5.126279 +0.9438894,21,83.76159,5.157231 +0.7175115,80,626.8248,5.186013 +0.5829018,31,361.2286,4.218319 +0.5901643,22,676.4985,3.93967 +0.8064658,90,648.7313,5.467642 +0.6136763,38,743.9136,4.433546 +0.7821613,16,550.7289,4.102733 +0.8085253,86,214.4748,5.479572 +0.505325,97,299.8038,4.963743 +0.8778521,73,575.0015,5.548593 +0.6573341,79,166.5853,5.09082 +0.7532538,17,719.9617,4.073974 +0.8126741,98,959.151,5.534472 +0.617485,78,992.0062,4.979724 +0.7294307,42,842.8008,4.740066 +0.8311411,11,255.2206,3.942211 +0.7310049,3,64.00663,2.210547 +0.9218966,22,24.38936,5.372905 +0.6959823,13,281.8103,3.703621 +0.872274,7,286.046,3.68672 +0.8091158,6,714.5453,3.268219 +0.7140248,28,426.8686,4.397771 +0.7445735,34,30.09128,4.818709 +0.7104637,86,508.2352,5.2256 +0.7407903,73,839.1437,5.166587 +0.9153352,65,522.6144,5.636264 +0.688166,29,238.4367,4.378873 +0.6463528,11,613.1541,3.426388 +0.7123388,62,470.368,4.998166 +0.8895104,85,770.6312,5.687503 +0.5782297,59,402.029,4.714427 +0.829497,28,701.8173,4.693881 +0.5709144,36,853.1903,4.312955 +0.7069504,70,685.5334,5.069301 +0.8335032,53,856.0943,5.173089 +0.5544132,8,676.0023,2.906102 +0.8651928,24,406.7348,4.708713 +0.8610366,68,384.947,5.452404 +0.8713612,35,373.6557,5.019745 +0.5738918,29,452.9196,4.144968 +0.5240998,92,545.6718,4.950569 +0.7527017,64,163.9493,5.142884 +0.6616936,31,958.384,4.362104 +0.8629395,77,651.0979,5.528421 +0.783235,41,700.8783,4.851017 +0.8394277,29,67.74892,4.873075 +0.7977615,5,190.0469,3.04529 +0.5940232,54,580.2972,4.671643 +0.9218088,64,88.74913,5.819851 +0.8127387,47,991.2968,5.025708 +0.7963492,66,680.6744,5.227959 +0.5904958,55,863.2755,4.677009 +0.8075735,17,983.1247,4.22383 +0.7415049,43,793.1585,4.785166 +0.8843514,74,597.5391,5.581504 +0.7021487,6,873.4177,2.943845 +0.8391883,12,753.545,4.033319 +0.7921166,46,52.22621,5.114419 +0.5554143,69,76.81138,4.829512 +0.6042065,76,151.4294,4.966379 +0.8627017,3,525.6119,2.698795 +0.865755,2,376.8642,2.122449 +0.8279171,10,836.8117,3.82942 +0.822342,5,962.3499,3.122065 +0.6597195,71,21.51946,5.235428 +0.776297,41,967.7869,4.830209 +0.8637549,79,871.2532,5.542754 +0.6396458,39,743.7715,4.502273 +0.826949,97,36.28713,5.892425 +0.7012445,40,177.4653,4.669936 +0.5738541,55,864.6037,4.648669 +0.6926033,57,906.083,4.889783 +0.8142208,4,830.517,2.839772 +0.6244411,9,13.95435,3.327233 +0.5999928,84,440.6816,5.010063 +0.7107244,9,545.9235,3.385588 +0.6170333,66,398.5188,4.865456 +0.5432562,27,214.7615,4.035203 +0.891457,61,156.3249,5.549498 +0.8364938,75,499.4986,5.432955 +0.7364336,82,899.3403,5.23781 +0.6345384,51,661.4909,4.699565 +0.6238511,79,467.3019,5.006217 +0.6425458,54,541.773,4.759007 +0.8062015,98,279.2243,5.549434 +0.8942245,27,820.441,4.907142 +0.8293175,65,18.86648,5.856884 +0.5543704,15,907.1906,3.527276 +0.9427969,14,973.7963,4.692983 +0.5635837,55,917.0542,4.631148 +0.7863883,50,976.9138,5.000909 +0.6690678,71,936.7323,5.003891 +0.8103885,89,852.7451,5.465744 +0.5853477,7,566.7827,2.830862 +0.9155325,74,929.784,5.708425 +0.652931,90,849.3441,5.143776 +0.63539,94,112.5092,5.190783 +0.9347237,32,425.9525,5.268364 +0.5908132,32,193.1982,4.267024 +0.882015,92,412.4952,5.728643 +0.8953683,41,852.7085,5.214666 +0.5202744,78,282.4543,4.829493 +0.9373646,28,29.90516,5.635022 +0.9139742,35,175.8116,5.253379 +0.8243774,47,623.3277,5.06504 +0.7781752,71,674.4035,5.234271 +0.6977277,38,68.90478,4.672658 +0.6985117,56,139.0387,4.92994 +0.6405636,70,422.2165,4.949769 +0.7322623,34,302.2471,4.598792 +0.7356788,36,466.6663,4.643266 +0.5179625,98,422.796,4.988105 +0.920347,32,632.1662,5.168424 +0.8147306,22,655.7655,4.459846 +0.7213689,76,963.051,5.153094 +0.6786994,68,743.6589,4.99277 +0.6729528,21,82.73629,4.109708 +0.7944516,48,324.7937,5.01126 +0.7986539,8,300.5525,3.529152 +0.7704706,5,377.2322,2.945948 +0.8876776,97,425.3873,5.784077 +0.813792,43,990.8892,4.964142 +0.7389332,47,246.4452,4.866744 +0.6142692,4,950.8356,2.246285 +0.8333757,88,852.0517,5.520895 +0.918038,30,73.33338,5.266524 +0.5201918,42,149.4735,4.362267 +0.6865426,59,135.1505,4.944673 +0.818865,51,850.2187,5.103217 +0.7665226,28,317.5260,4.528706 +0.6878656,90,351.7311,5.220275 +0.6233782,24,686.0332,4.077961 +0.9079201,61,12.53428,6.715454 +0.7354724,37,866.4194,4.657101 +0.5748367,73,233.9909,4.874421 +0.9424346,27,604.6585,5.191774 +0.8052077,13,247.9588,4.004018 +0.5808156,22,55.97113,3.965451 +0.9059417,97,546.7074,5.851985 +0.7972078,82,324.6242,5.398432 +0.7553583,34,564.3914,4.642926 +0.5211904,43,59.69222,4.405759 +0.864604,94,383.3898,5.682846 +0.5628405,7,198.0784,2.785847 +0.8635089,89,179.457,5.68645 +0.8361038,4,631.6255,2.928310 +0.64402,42,762.8189,4.567911 +0.8099644,30,282.0744,4.705383 +0.5957105,10,675.4588,3.222615 +0.5611832,61,305.9021,4.713422 +0.7609862,75,581.0989,5.234911 +0.5861211,27,210.4605,4.115875 +0.681802,62,284.2667,4.946358 +0.9380357,22,163.5759,5.067801 +0.6476278,98,954.5236,5.193096 +0.6062827,71,570.621,4.896424 +0.8513,59,850.3103,5.303609 +0.6439583,33,685.2893,4.379145 +0.7549672,14,176.0377,3.930083 +0.5101834,28,353.0459,4.00226 +0.8534954,47,580.775,5.157762 +0.6642175,69,96.3145,5.032567 +0.7822325,20,464.9794,4.292241 +0.7222924,70,56.91364,5.224726 +0.7835733,92,11.13638,6.236578 +0.5127269,25,339.0517,3.910086 +0.9060686,81,300.5539,5.761269 +0.6473291,84,570.9105,5.08901 +0.7251075,34,842.6479,4.568951 +0.7233545,95,952.1911,5.311982 +0.8594078,44,426.2245,5.138217 +0.6228143,7,340.9586,2.917697 +0.6639282,60,579.4312,4.8763 +0.9111373,73,651.4216,5.685933 +0.850889,36,998.6415,4.948251 +0.5315727,20,452.9032,3.747659 +0.6490442,51,37.34832,4.852106 +0.715606,77,990.784,5.150418 +0.6712978,65,10.80619,5.424427 +0.8133968,100,891.5813,5.550796 +0.629085,96,415.4077,5.155445 +0.6325968,35,932.5289,4.402526 +0.7542193,78,229.4509,5.272169 +0.7610267,94,468.5767,5.394991 +0.9484245,24,661.5359,5.152519 +0.9051988,61,163.1016,5.61021 +0.642105,83,745.0839,5.068648 +0.6062096,71,29.42007,5.036339 +0.6614198,65,200.6846,4.95034 +0.9436293,20,906.2777,4.973695 +0.8892711,88,553.833,5.717634 +0.7912716,10,982.8139,3.707757 +0.8327392,90,923.7582,5.532846 +0.9494778,9,763.3662,4.394199 +0.837189,30,724.2563,4.770703 +0.764757,37,643.5556,4.728776 +0.6391173,62,732.9576,4.852631 +0.7116352,16,68.62962,3.974066 +0.926587,99,271.3453,6.005482 +0.7328461,22,375.7878,4.246613 +0.8062737,37,507.2412,4.840897 +0.7764293,97,522.9307,5.44909 +0.7452551,64,983.958,5.08166 +0.770722,96,122.8487,5.494829 +0.5441333,32,720.3908,4.170598 +0.663517,39,953.2992,4.546605 +0.5923693,90,235.0514,5.056502 +0.8482554,46,791.917,5.119762 +0.7808265,91,374.5348,5.424516 +0.9152311,40,974.5258,5.290716 +0.5714776,12,131.6730,3.362543 +0.5317691,42,633.3877,4.36961 +0.6123794,99,490.6901,5.14633 +0.5745781,8,645.4138,2.949351 +0.6082275,13,630.1471,3.502851 +0.6593624,89,215.2926,5.171144 +0.5644257,3,643.3973,1.740192 +0.920627,78,189.0088,5.84536 +0.5520711,51,623.7519,4.55584 +0.6121508,39,542.8347,4.453281 +0.7584429,21,187.2622,4.287515 +0.7916381,51,71.86452,5.147185 +0.8850048,16,997.5153,4.457286 +0.5391017,87,770.6265,4.931917 +0.7404479,7,323.7681,3.216882 +0.5623543,26,911.3213,4.02928 +0.5508669,96,484.6114,5.024189 +0.7931613,6,685.8204,3.213631 +0.9356591,55,520.1105,5.641592 +0.8191694,21,28.07199,4.681511 +0.7404314,76,362.3436,5.208253 +0.6132023,26,501.4922,4.1272 +0.898138,17,898.733,4.568876 +0.7149017,32,821.3167,4.499275 +0.6468989,98,799.4402,5.193233 +0.7843833,49,106.0027,5.056439 +0.78089,2,975.3173,1.739043 +0.7499181,33,292.2228,4.618129 +0.89562,3,215.3275,2.890152 +0.6734657,94,106.2031,5.270171 +0.5022134,82,435.0182,4.833872 +0.5035799,89,220.3418,4.901841 +0.6358235,5,732.8527,2.570277 +0.9185566,67,955.7941,5.65809 +0.8146047,77,848.0447,5.378849 +0.8849036,25,130.1811,4.875341 +0.666657,10,398.2127,3.382943 +0.866368,78,746.573,5.54593 +0.5504938,39,246.9974,4.349845 +0.712021,69,528.3399,5.072651 +0.5030071,65,637.7599,4.66033 +0.6105752,44,545.6989,4.544589 +0.6943772,65,979.1696,4.98809 +0.9203392,86,787.3725,5.833822 +0.5749371,12,488.0013,3.358939 +0.6378194,89,196.0952,5.133906 +0.5113716,66,593.8107,4.68551 +0.7412499,84,512.8562,5.272521 +0.6851877,28,589.8577,4.331579 +0.6870601,19,735.5807,4.011283 +0.7750765,15,479.3753,4.028658 +0.6845788,23,882.8073,4.166264 +0.7811759,64,597.6869,5.17059 +0.7607091,15,713.1093,3.985755 +0.5275841,3,320.7793,1.653622 +0.8151376,100,49.26603,5.78751 +0.5074881,77,757.4622,4.793207 +0.5229785,23,989.7796,3.852577 +0.7105007,28,31.24485,4.54415 +0.6215799,38,598.2167,4.449521 +0.8470756,49,10.20824,6.161224 +0.6472299,24,401.3113,4.129491 +0.9120567,60,41.54376,5.913973 +0.5377769,2,866.9126,1.040179 +0.7185213,18,930.2816,4.035555 +0.8158044,14,239.9823,4.104134 +0.770996,94,609.5532,5.412268 +0.7024562,43,650.9803,4.702584 +0.7775713,10,624.1942,3.668905 +0.8395731,24,386.586,4.617139 +0.6114049,91,218.1425,5.099238 +0.8950336,18,349.9376,4.6157 +0.5847385,92,22.30507,5.218627 +0.5681137,57,798.3608,4.666418 +0.8210785,93,933.207,5.522232 +0.5785641,83,4.989308,5.603602 +0.8157943,15,818.011,4.14539 +0.7407279,92,440.1779,5.337324 +0.733181,3,238.6378,2.200755 +0.7579886,42,635.1882,4.808085 +0.7311025,3,905.908,2.189757 +0.7900159,27,812.1494,4.548644 +0.760292,94,327.8632,5.402854 +0.6519805,77,849.4438,5.031642 +0.7062998,74,750.08,5.106512 +0.5844447,3,59.48537,1.801098 +0.6614328,90,460.961,5.165895 +0.881871,94,392.0773,5.744282 +0.8199697,65,654.326,5.280985 +0.898322,9,64.69922,4.13647 +0.7556982,59,152.5194,5.094736 +0.5939186,47,662.8237,4.564495 +0.8520484,84,444.9234,5.561018 +0.7401846,95,846.4764,5.347553 +0.6162178,30,412.4358,4.252757 +0.6134665,86,748.6544,5.044603 +0.6820989,3,169.3379,2.050289 +0.6442013,54,996.0875,4.757449 +0.5227555,12,294.5265,3.256112 +0.5621612,43,374.3188,4.443781 +0.6707198,14,582.3504,3.706538 +0.5717505,2,974.4778,1.120795 +0.714165,63,987.752,5.00491 +0.8463978,49,741.222,5.159691 +0.5952204,26,68.97992,4.131567 +0.5451793,20,707.1649,3.771381 +0.8645775,43,292.8327,5.152765 +0.9404841,4,51.03454,3.651606 +0.7179487,74,160.1517,5.169636 +0.6143455,31,974.3184,4.270616 +0.7752132,3,809.1733,2.335569 +0.7934382,59,504.3798,5.146776 +0.711908,86,888.908,5.221289 +0.6450752,84,229.6891,5.101429 +0.7590779,59,150.5668,5.10375 +0.9205524,29,818.9596,5.093759 +0.9360283,7,419.8364,4.064352 +0.5325355,85,266.1838,4.913121 +0.8768197,77,973.5951,5.569731 +0.7097386,99,643.0035,5.317974 +0.5718427,37,402.8701,4.340854 +0.5143585,41,440.6985,4.322562 +0.7406938,15,237.9263,3.946416 +0.7049336,96,920.0897,5.283441 +0.8494004,93,369.2301,5.627208 +0.6261061,45,662.1646,4.588758 +0.5064255,14,899.5559,3.369974 +0.7677488,79,651.7408,5.284578 +0.789773,59,296.7103,5.151136 +0.8435455,59,16.99554,5.912123 +0.6753605,53,791.7065,4.803538 +0.7715955,98,324.6493,5.457671 +0.8750405,21,577.243,4.637225 +0.8568845,79,527.212,5.53056 +0.6046421,54,708.383,4.688786 +0.7191854,53,919.355,4.890299 +0.6643493,97,347.9793,5.228687 +0.6956105,97,939.5987,5.272661 +0.6148152,27,557.7433,4.160999 +0.6576454,4,901.5362,2.356199 +0.8151161,36,74.71088,4.94727 +0.9228209,15,523.9028,4.61454 +0.6219353,32,922.2687,4.310781 +0.7883107,26,640.8576,4.516704 +0.6018958,97,34.22611,5.241195 +0.5793979,40,689.8196,4.412834 +0.6947763,5,26.97463,2.791473 +0.58931,35,138.7347,4.344029 +0.8847147,38,602.2617,5.121166 +0.7561305,49,523.4307,4.920687 +0.6925183,79,142.5949,5.168269 +0.6681708,46,193.5548,4.705324 +0.8585283,12,899.6494,4.105485 +0.6536122,66,584.4786,4.926772 +0.5651187,13,713.7666,3.414500 +0.88514,23,769.917,4.746323 +0.8002839,9,109.5764,3.673678 +0.9097735,4,111.6067,3.342624 +0.6178355,96,195.9049,5.151568 +0.7949732,57,597.5724,5.123088 +0.7527053,83,524.3268,5.288674 +0.8950565,49,72.84066,5.511047 +0.7359179,51,151.2464,4.939979 +0.8420705,7,564.432,3.548268 +0.7573152,83,299.6074,5.313 +0.9454348,87,942.5041,5.988617 +0.871066,18,952.1216,4.492747 +0.6274554,60,761.309,4.8073 +0.557569,10,423.8319,3.144131 +0.9005163,26,705.4903,4.910763 +0.8800185,65,730.4365,5.473082 +0.8613206,13,617.5602,4.188885 +0.8168853,17,650.0818,4.256188 +0.5328003,51,162.6084,4.53643 +0.6839809,84,377.3296,5.162864 +0.9303211,54,819.7178,5.583603 +0.6478824,71,990.3996,4.965008 +0.8349335,45,815.2025,5.061425 +0.769149,21,563.5817,4.294681 +0.6393773,87,829.238,5.09636 +0.8186378,40,399.7204,4.939388 +0.5060255,15,772.43,3.434855 +0.6399204,65,148.2399,4.91882 +0.5302873,41,873.3826,4.346774 +0.9489945,87,566.708,6.030224 +0.7902835,92,176.1944,5.489031 +0.935949,9,578.918,4.281535 +0.7065377,68,39.88104,5.213108 +0.6605787,74,199.7206,5.043517 +0.8500532,52,350.5747,5.231401 +0.5795111,43,185.7723,4.483979 +0.7721705,86,761.0165,5.350834 +0.8356097,31,587.8281,4.793397 +0.6543654,68,444.2728,4.953204 +0.745387,66,509.2115,5.112169 +0.6572928,32,453.2728,4.384213 +0.6103028,43,415.225,4.528702 +0.507783,24,459.682,3.864417 +0.7601003,75,316.1002,5.246828 +0.7714567,72,648.4202,5.228758 +0.6691248,74,148.5592,5.071301 +0.8532127,26,732.108,4.715798 +0.5091557,91,916.2237,4.917172 +0.6682798,23,442.3025,4.136524 +0.7504898,68,937.2238,5.136544 +0.9161427,30,880.0924,5.092573 +0.8091194,79,887.4123,5.381188 +0.7126703,51,412.3825,4.857893 +0.7594662,98,373.6597,5.425589 +0.5785451,27,661.7546,4.091882 +0.6655602,28,627.9785,4.290333 +0.5991819,54,216.0390,4.693234 +0.7969112,63,834.7526,5.193941 +0.8450834,25,649.1481,4.658746 +0.6193873,24,470.0091,4.072489 +0.9168002,2,62.04817,2.490147 +0.8613054,74,422.8139,5.507761 +0.62517,18,255.6169,3.841263 +0.6717216,30,248.8529,4.370396 +0.5892554,31,385.8409,4.229486 +0.8929538,34,581.5536,5.076849 +0.8155344,77,46.48784,5.609731 +0.5550282,19,784.9772,3.743976 +0.6795031,4,474.3498,2.415745 +0.6040601,66,200.2149,4.854484 +0.8937049,13,769.184,4.330309 +0.562713,48,40.01588,4.599981 +0.8443962,12,606.4958,4.054479 +0.5217481,98,304.271,4.997033 +0.6211519,73,460.562,4.944608 +0.801454,60,78.90437,5.287386 +0.7147738,91,760.2828,5.267743 +0.5293705,7,730.8396,2.708855 +0.6295258,25,288.2368,4.13171 +0.5811409,63,106.5195,4.796319 +0.7467691,83,303.5143,5.288863 +0.5357094,26,273.6827,3.986927 +0.8270343,25,75.21921,4.694638 +0.6370267,23,931.2065,4.067684 +0.5991126,3,463.7693,1.825909 +0.7526954,72,426.7363,5.193497 +0.8253992,93,330.6865,5.559655 +0.9159743,42,103.2218,5.454755 +0.8004575,92,11.91416,6.284229 +0.8738953,25,674.0253,4.764974 +0.8571217,38,390.5402,5.026141 +0.7039517,18,937.9678,4.001619 +0.7890745,34,410.5091,4.733657 +0.66447,39,688.1216,4.550597 +0.5939275,77,453.4037,4.93669 +0.7696701,100,856.4333,5.445882 +0.9277054,13,125.0380,4.591452 +0.9389669,99,787.151,6.030433 +0.8225612,91,994.0805,5.510888 +0.7342594,6,582.8713,3.033424 +0.8865646,57,5.988118,7.562239 +0.9154522,23,477.7697,4.904231 +0.5691102,7,96.046,2.807195 +0.6801258,9,342.9826,3.312514 +0.8502952,75,727.0152,5.467112 +0.5583243,47,911.0722,4.501544 +0.5236635,86,719.7257,4.899644 +0.5711945,61,904.3542,4.722019 +0.6034479,52,393.2907,4.663141 +0.8363296,65,490.6389,5.334549 +0.7217736,98,369.6968,5.345336 +0.7711621,71,24.62962,5.562754 +0.8946396,44,38.31367,5.588078 +0.8681217,34,730.2276,4.971574 +0.5378834,38,299.3967,4.304748 +0.7991737,58,345.0896,5.158856 +0.5592553,7,31.06375,2.814127 +0.9303648,2,961.1783,2.568641 +0.789962,48,667.3871,4.984806 +0.6122609,64,698.6285,4.828939 +0.5443432,21,316.0429,3.816686 +0.538685,4,822.2305,2.067093 +0.5826739,46,360.8801,4.532958 +0.6856244,17,109.1460,3.942286 +0.7513881,91,881.5027,5.341419 +0.6010855,16,407.8654,3.682199 +0.8463225,9,124.5201,3.838152 +0.899949,82,799.3413,5.706383 +0.9073209,28,842.0504,4.996587 +0.9469542,10,444.7476,4.468635 +0.8801998,100,651.3778,5.761765 +0.6018282,24,692.391,4.03621 +0.8014853,20,251.665,4.359587 +0.9432018,43,430.8335,5.534503 +0.9384274,100,25.18134,6.820565 +0.6923582,72,998.4995,5.057304 +0.5801159,42,782.1964,4.451911 +0.6414567,82,306.897,5.070821 +0.6720437,62,514.3452,4.91709 +0.7724809,57,339.2014,5.078844 +0.9028858,76,604.6113,5.676169 +0.9497646,65,64.40338,6.126636 +0.8328937,59,235.9650,5.282141 +0.7836799,77,586.6602,5.30615 +0.8561,32,898.7267,4.880362 +0.715531,15,130.4621,3.897282 +0.9006471,71,529.8968,5.624916 +0.6128581,49,414.7223,4.634115 +0.8566043,5,295.1873,3.272094 +0.7551571,36,54.301,4.802694 +0.6504977,38,414.6663,4.507891 +0.691055,88,229.4573,5.222388 +0.6377646,46,92.32049,4.671924 +0.7257486,47,581.0358,4.820107 +0.7063136,96,616.4358,5.290743 +0.8650301,40,943.64,5.074856 +0.6272809,41,135.1876,4.545061 +0.6924068,12,308.8051,3.619891 +0.6531557,13,949.6057,3.597409 +0.8044704,93,633.929,5.485044 +0.8368844,43,487.7978,5.043371 +0.8397715,74,513.7228,5.432954 +0.5198061,32,197.0448,4.13612 +0.5460146,42,882.3461,4.392564 +0.6740923,35,657.371,4.485618 +0.6792326,40,648.0051,4.599951 +0.8405607,53,811.9904,5.195353 +0.5946238,5,169.7788,2.477280 +0.8982927,26,848.3721,4.89743 +0.9365957,28,407.9059,5.186799 +0.7668708,53,178.9098,5.035299 +0.6584784,76,890.6541,5.033633 +0.5389569,12,497.2326,3.286257 +0.6999825,24,456.0215,4.240168 +0.9096133,31,747.363,5.084439 +0.8289016,2,283.8486,1.940521 +0.6901096,87,214.8528,5.214694 +0.6694101,78,530.8827,5.077346 +0.6567067,73,317.1940,5.014601 +0.679931,95,191.9584,5.260732 +0.5387921,23,10.62070,4.063064 +0.756781,59,405.9484,5.062023 +0.5842175,30,292.6955,4.195843 +0.6076509,77,417.3091,4.961052 +0.6543601,92,829.3172,5.161897 +0.5755779,49,196.0489,4.577904 +0.5450119,38,102.0792,4.334683 +0.9404626,51,345.8694,5.64067 +0.7038778,74,55.63226,5.222917 +0.8082828,86,120.1308,5.521448 +0.7313073,93,923.7832,5.313754 +0.5285032,3,618.0018,1.654841 +0.9024613,17,854.2145,4.591173 +0.6862795,37,30.83803,4.714655 +0.7354094,8,867.1883,3.332226 +0.9007964,29,611.6991,4.995666 +0.6588533,49,769.275,4.713477 +0.8563857,26,675.1622,4.728254 +0.8872304,87,328.7089,5.722146 +0.9268127,69,847.4352,5.724473 +0.6875418,60,935.4085,4.917128 +0.891503,19,974.8925,4.624085 +0.6769115,96,834.304,5.231948 +0.7652566,25,969.8592,4.421208 +0.6201267,12,685.9498,3.451914 +0.6599803,63,784.9818,4.901872 +0.6964509,81,667.3963,5.152364 +0.6965717,35,935.8557,4.529274 +0.6360838,51,280.4093,4.7129 +0.8371735,88,757.6325,5.533856 +0.6208766,74,120.8144,4.986134 +0.6598676,62,270.1187,4.904797 +0.8525584,26,247.1739,4.738222 +0.7263877,70,427.1566,5.116298 +0.7346672,31,453.3599,4.52499 +0.8395507,14,95.145,4.228401 +0.7380277,4,15.21835,2.710866 +0.5857433,63,4.982476,5.40675 +0.8829485,78,53.84525,5.862786 +0.6057832,60,87.74786,4.814740 +0.7225465,21,738.9869,4.176617 +0.6532181,99,770.4294,5.211655 +0.8260238,21,471.1853,4.462461 +0.7465538,91,348.1825,5.348179 +0.8766148,72,320.0464,5.555052 +0.6860644,88,913.9462,5.187536 +0.8306096,62,184.0549,5.32403 +0.6324524,63,799.4854,4.851846 +0.5364287,49,30.90720,4.577945 +0.6288004,24,822.3586,4.08774 +0.9113013,43,150.4739,5.401755 +0.6569249,22,476.9137,4.074598 +0.804286,26,90.7052,4.632987 +0.8768176,18,824.244,4.518036 +0.6579506,44,270.2119,4.642845 +0.7120674,45,417.2141,4.762816 +0.6624692,2,355.9182,1.358141 +0.7997539,59,516.3986,5.162715 +0.9064637,37,727.8032,5.196172 +0.8220323,7,432.6814,3.474522 +0.75176,55,861.221,4.988624 +0.6098563,56,461.1784,4.728862 +0.661423,93,384.5225,5.191923 +0.8380577,45,787.3014,5.07156 +0.5475543,54,151.5863,4.608017 +0.9364163,89,550.0236,5.958449 +0.8345188,33,715.9277,4.83412 +0.9300926,24,417.0907,5.028721 +0.715501,56,100.0091,4.987019 +0.9396052,60,513.9873,5.726164 +0.5227287,97,513.9972,4.986833 +0.8565892,7,304.42,3.615298 +0.9116222,74,986.7343,5.688216 +0.8512815,45,27.81513,5.487517 +0.9298235,83,989.083,5.857929 +0.626031,73,643.8244,4.949713 +0.8482173,91,457.0946,5.601593 +0.5709514,32,457.7069,4.220686 +0.6943745,92,242.0755,5.258453 +0.8606947,39,318.7593,5.064335 +0.840107,80,678.4295,5.48065 +0.5747926,29,651.5253,4.144597 +0.8357058,7,666.7798,3.522195 +0.869957,81,855.4466,5.580992 +0.670602,54,101.5262,4.85908 +0.8043425,81,708.5911,5.389184 +0.7803241,71,259.3759,5.26357 +0.7343555,43,335.7706,4.781522 +0.6297029,47,719.406,4.628093 +0.6101721,45,104.9270,4.593527 +0.5134342,15,925.1843,3.448606 +0.8411402,71,917.1132,5.397877 +0.7914293,83,136.8519,5.438173 +0.6139731,77,618.7109,4.967776 +0.5357605,24,862.5706,3.912846 +0.5025054,26,595.9775,3.923262 +0.89996,57,532.7505,5.473657 +0.7650395,53,698.8342,4.994776 +0.7758476,20,845.1518,4.268804 +0.769896,71,98.302,5.297764 +0.6660289,82,968.9507,5.100656 +0.9441867,10,37.19494,4.689927 +0.8946557,52,995.2553,5.374756 +0.7667594,71,705.5376,5.206838 +0.5014517,77,871.1445,4.783311 +0.5965555,7,819.4321,2.854995 +0.8659944,2,758.1844,2.121457 +0.6069824,22,158.3323,3.987152 +0.6479568,94,353.0358,5.176647 +0.5823552,65,489.6782,4.792003 +0.8344934,16,260.4225,4.279719 +0.914692,65,954.2295,5.618436 +0.7871276,33,206.7722,4.724443 +0.6903965,76,163.2536,5.12962 +0.6344172,37,484.5121,4.454353 +0.6875203,61,231.6496,4.951199 +0.7422141,52,591.7167,4.930737 +0.7599737,31,281.7283,4.594985 +0.6880801,23,810.4523,4.174274 +0.81849,54,857.3539,5.1427 +0.8148196,72,388.4852,5.349729 +0.8212496,76,979.5797,5.386053 +0.6091061,50,602.2909,4.639421 +0.8067955,63,27.98457,5.562519 +0.9042222,97,672.1885,5.838087 +0.6244393,47,2.131261,6.358538 +0.5254594,98,625.0347,4.997252 +0.8791726,34,862.3985,5.01207 +0.746068,56,620.111,4.992682 +0.8306618,24,473.0823,4.583617 +0.7019251,90,179.0329,5.269792 +0.820721,3,27.40536,2.585711 +0.6277612,95,375.2626,5.147359 +0.760516,77,973.8867,5.245349 +0.7752467,87,718.0702,5.366682 +0.7374634,28,778.2432,4.445331 +0.7285804,45,770.6425,4.790764 +0.8101368,99,420.6396,5.551649 +0.8354864,2,752.3351,1.967745 +0.9366795,96,934.8403,5.99238 +0.7295988,2,854.2223,1.559671 +0.902451,16,637.7424,4.546596 +0.6556947,67,88.20184,4.998451 +0.8541205,74,192.7775,5.521679 +0.9460709,29,695.1937,5.267903 +0.636149,84,870.8137,5.06554 +0.6345869,49,321.4711,4.677389 +0.8826033,54,110.8286,5.460166 +0.8048285,100,344.4542,5.551093 +0.760377,54,437.62,5.004792 +0.5793991,27,765.2235,4.092846 +0.6896911,15,676.624,3.810868 +0.660633,69,60.04597,5.061003 +0.5156361,16,606.4331,3.513952 +0.893971,53,914.421,5.386176 +0.9322795,45,194.9015,5.536317 +0.9217502,47,148.8462,5.526009 +0.7223354,41,354.2265,4.717427 +0.7254239,21,944.9461,4.181863 +0.708828,75,461.7057,5.127708 +0.7022857,28,137.4031,4.397661 +0.9036889,27,341.8465,4.972055 +0.8784777,44,937.2588,5.193275 +0.6917807,29,917.8933,4.370685 +0.8760101,23,943.734,4.705450 +0.9430376,66,524.9752,5.811901 +0.5017794,92,151.7466,4.928244 +0.8888717,89,367.2177,5.738572 +0.6703306,14,535.2485,3.706171 +0.672854,26,944.1592,4.242406 +0.6472046,80,827.924,5.0506 +0.8772473,5,160.6619,3.382955 +0.8926035,81,187.3492,5.733713 +0.6786785,93,663.5972,5.215532 +0.7578081,65,667.543,5.124931 +0.7833775,55,329.4239,5.081013 +0.7000353,43,82.3758,4.762278 +0.888855,70,652.9058,5.560005 +0.6924933,87,478.0858,5.199561 +0.840106,52,313.4649,5.202915 +0.5399748,25,364.0615,3.959138 +0.902836,16,403.3234,4.557186 +0.6867339,26,969.5584,4.271392 +0.8742233,37,480.4238,5.064757 +0.7599474,67,993.2258,5.14663 +0.883177,65,310.0843,5.512333 +0.6960705,31,389.7709,4.440958 +0.7739131,71,67.05128,5.352244 +0.7563553,22,940.1603,4.295526 +0.8219649,40,352.6679,4.952488 +0.9108295,14,658.4179,4.483537 +0.9498709,73,859.1367,5.912762 +0.8252522,84,979.9907,5.46482 +0.7923822,95,142.433,5.531805 +0.5749987,39,896.3604,4.383877 +0.8141943,10,294.8625,3.793207 +0.5594338,52,69.15462,4.625047 +0.932766,68,273.3,5.796079 +0.6501828,67,958.8537,4.927372 +0.6199984,91,910.7417,5.0943 +0.9105013,61,86.3416,5.723355 +0.6500351,13,101.7401,3.61627 +0.9173677,4,921.6633,3.358811 +0.7483216,56,811.9803,4.994524 +0.6619459,6,672.351,2.841462 +0.7787717,50,588.649,4.988066 +0.6915036,64,334.7062,4.985228 +0.8969362,5,505.469,3.470211 +0.8492126,3,306.2505,2.637068 +0.6736042,74,738.814,5.043914 +0.8280637,68,39.91354,5.600346 +0.9255473,6,906.1636,3.830839 +0.595304,14,217.5326,3.552682 +0.8425488,84,901.4002,5.515823 +0.7499038,4,308.2265,2.622547 +0.7292323,64,240.871,5.072892 +0.5156149,32,761.0943,4.120675 +0.9342052,76,325.2375,5.867557 +0.7430211,54,869.715,4.955698 +0.5554406,32,914.998,4.189741 +0.703071,36,997.2677,4.564418 +0.6830719,69,89.59823,5.077642 +0.6347344,13,419.0303,3.561125 +0.678805,77,456.5152,5.087955 +0.6484101,26,166.0909,4.212926 +0.5956851,21,718.855,3.909814 +0.6716819,49,506.3922,4.742036 +0.880219,4,437.3379,3.137609 +0.6992864,21,926.1055,4.122149 +0.7350454,17,803.2935,4.027239 +0.924039,65,518.5967,5.682937 +0.7097215,47,189.0405,4.809879 +0.820387,6,275.5597,3.317263 +0.9255068,81,23.14098,6.576327 +0.55869,9,627.6641,3.038083 +0.6046422,57,853.3931,4.728344 +0.744582,23,563.4014,4.306778 +0.6502728,57,30.85893,4.969265 +0.7468517,32,992.2413,4.570483 +0.6578665,20,675.1416,3.992919 +0.5214619,89,909.4671,4.920113 +0.8465362,44,158.5620,5.137696 +0.6626981,19,212.1094,3.971124 +0.8807791,42,327.2020,5.194205 +0.7866526,79,760.59,5.326811 +0.7779337,73,365.5488,5.26587 +0.9119104,46,26.67773,5.894684 +0.5792652,7,547.2527,2.817491 +0.5369576,36,356.6722,4.257976 +0.883138,81,393.9469,5.650472 +0.5432084,71,55.75745,4.842559 +0.895006,86,614.9657,5.72293 +0.768465,50,513.2161,4.965069 +0.9327656,92,794.7848,5.945621 +0.7523386,50,317.4484,4.936806 +0.741749,56,496.2921,4.986378 +0.7054378,77,244.3444,5.154722 +0.8930161,52,269.8881,5.405983 +0.8259867,30,446.4984,4.742886 +0.9428722,78,646.6361,5.911485 +0.587867,69,311.0502,4.850746 +0.7552073,27,941.9401,4.457584 +0.7985361,86,716.3606,5.414992 +0.7237573,8,175.6068,3.314545 +0.6685535,57,696.2688,4.845468 +0.5013911,23,945.8882,3.813899 +0.6523594,99,24.28822,5.442461 +0.7394495,49,881.9684,4.876581 +0.854433,28,707.679,4.777123 +0.8204082,83,605.3809,5.451369 +0.79852,86,288.334,5.438983 +0.7310523,85,717.5282,5.25414 +0.9195674,81,107.4469,5.937123 +0.6529936,19,20.64329,4.099437 +0.6067644,22,388.9285,3.975088 +0.8650076,38,466.122,5.050008 +0.6128448,67,98.0593,4.906338 +0.752887,51,922.446,4.935679 +0.6460481,27,814.8709,4.219734 +0.6936537,45,245.3472,4.734685 +0.784517,60,421.8168,5.13995 +0.6001813,61,686.6315,4.772608 +0.9319204,62,696.6375,5.688879 +0.922267,71,823.7056,5.718688 +0.6002578,9,503.0087,3.127464 +0.6310301,6,138.3597,2.776067 +0.8483663,18,189.1734,4.438687 +0.70115,88,191.8286,5.2494 +0.8561147,97,22.70583,6.228308 +0.667727,56,494.8825,4.834405 +0.6542349,9,824.6264,3.246751 +0.5206833,7,729.2577,2.690404 +0.658784,87,246.0525,5.150044 +0.5953643,23,366.7405,3.991525 +0.6766511,91,414.3638,5.203471 +0.825277,42,851.569,4.981794 +0.6250303,58,23.19250,4.962958 +0.8423589,99,93.69587,5.756519 +0.8063293,31,264.1642,4.722025 +0.620299,64,122.1244,4.876939 +0.7893993,47,877.3323,4.96473 +0.6962783,83,146.4735,5.210165 +0.5332282,41,131.3166,4.368617 +0.6765526,53,138.7834,4.842043 +0.8702945,27,497.7323,4.814542 +0.7776173,82,76.84477,5.449936 +0.8220009,15,216.7689,4.187112 +0.924437,7,953.394,3.967118 +0.8349073,25,895.0206,4.621042 +0.5263872,22,348.8703,3.823587 +0.6831776,52,279.0269,4.81924 +0.8806107,92,969.464,5.700816 +0.7174212,95,820.0121,5.301742 +0.6907261,79,551.123,5.12615 +0.6847294,89,759.6159,5.194662 +0.5568725,20,625.1609,3.793706 +0.6078584,10,146.1385,3.259882 +0.7378435,47,589.1384,4.846525 +0.9052463,80,710.1403,5.716327 +0.7568209,43,98.5796,4.888557 +0.5767346,61,609.2453,4.733473 +0.8850829,8,556.3335,3.865227 +0.6507976,72,844.7777,4.981404 +0.7150611,77,310.9208,5.167565 +0.8717278,21,382.6469,4.631755 +0.6029478,52,730.9699,4.657059 +0.8668438,61,542.8423,5.387924 +0.9472293,42,932.0925,5.527578 +0.8546157,31,560.8847,4.858193 +0.6580792,33,540.6646,4.408665 +0.6077477,11,744.3783,3.341634 +0.7560453,46,377.6593,4.879772 +0.5934148,59,364.4261,4.741766 +0.6420253,87,671.283,5.102801 +0.5611765,38,346.1592,4.344532 +0.939425,28,247.0993,5.230175 +0.6246716,11,705.8324,3.378152 +0.5071962,93,202.9717,4.940695 +0.6177509,44,86.61081,4.599245 +0.6201071,90,284.9948,5.100697 +0.7943832,4,651.253,2.767431 +0.5547687,14,92.42605,3.481923 +0.6008824,81,964.5551,4.979063 +0.8629902,95,927.3415,5.661068 +0.5217671,20,910.9093,3.727425 +0.7689205,71,179.86,5.252005 +0.6822136,93,682.3452,5.221752 +0.6892221,24,467.665,4.216273 +0.9466872,49,883.4082,5.627904 +0.782297,14,837.0868,3.984421 +0.6690006,34,806.0445,4.451114 +0.8822465,16,302.8304,4.464571 +0.814535,72,793.6759,5.333641 +0.780475,65,104.4416,5.256237 +0.6682725,41,54.42584,4.684022 +0.8818546,92,241.0917,5.755743 +0.5129674,89,518.6905,4.909487 +0.6083917,7,195.1739,2.888261 +0.8140826,93,353.8889,5.525755 +0.6558119,59,593.6033,4.848487 +0.5921442,53,938.0159,4.651416 +0.6950022,92,367.6952,5.248443 +0.8418083,45,53.97386,5.266512 +0.8581418,9,996.44,3.847388 +0.906525,76,919.7202,5.683072 +0.7922269,86,262.6776,5.426634 +0.8804859,57,874.4561,5.382196 +0.6551834,55,992.6632,4.791359 +0.6348819,63,68.21945,4.925976 +0.539279,2,999.5265,1.043612 +0.5769965,8,480.9133,2.955411 +0.7496352,5,952.3615,2.876907 +0.6318387,42,714.5921,4.545552 +0.8323459,12,329.8476,4.019001 +0.898379,75,202.0454,5.701038 +0.8675291,19,141.8562,4.573326 +0.5642187,34,590.5545,4.256547 +0.8223834,83,86.52396,5.576896 +0.8367909,82,911.1915,5.482459 +0.5391946,30,341.9927,4.112239 +0.7218873,64,588.085,5.037551 +0.712584,25,774.5507,4.297156 +0.6410482,70,466.223,4.94933 +0.9427801,78,553.2906,5.916202 +0.7313513,22,109.2037,4.277424 +0.6818153,96,512.4702,5.246855 +0.5512217,98,992.8429,5.035079 +0.7812837,89,618.1023,5.398797 +0.7540433,88,544.6624,5.331273 +0.7513365,43,739.7543,4.808344 +0.6869057,45,887.4778,4.702743 +0.7466107,87,160.8096,5.348803 +0.6327194,74,213.3965,4.989166 +0.799753,98,822.153,5.503853 +0.5081392,76,11.12948,4.967705 +0.5695873,58,148.3262,4.702562 +0.8698363,93,582.4204,5.680172 +0.7370043,53,83.27543,5.011579 +0.5155987,2,810.935,0.9893308 +0.9243925,64,607.5746,5.669679 +0.5951338,40,455.03,4.443665 +0.9100938,9,241.3229,4.124432 +0.5649921,47,58.03952,4.565033 +0.8871607,49,163.9309,5.37103 +0.6987442,58,873.9467,4.914947 +0.7717202,56,295.2688,5.068172 +0.8971835,26,322.9148,4.913746 +0.7098414,26,138.5701,4.354089 +0.5980129,75,381.2143,4.926538 +0.7466993,8,939.951,3.363184 +0.5817556,27,166.0144,4.111321 +0.6169866,9,789.4504,3.162706 +0.8773756,90,872.0359,5.676485 +0.9487774,19,620.3235,4.984752 +0.6012269,72,648.6574,4.896949 +0.8874921,70,590.1976,5.557023 +0.689685,87,78.50793,5.272388 +0.5055174,93,963.2988,4.927143 +0.6047475,64,893.5502,4.814436 +0.7766777,50,368.8056,4.991917 +0.5686279,25,323.1676,4.012975 +0.7818071,83,226.9735,5.3823 +0.8170889,12,153.6800,3.985706 +0.7977554,29,770.1328,4.626086 +0.7852365,46,989.7344,4.93727 +0.7927683,74,356.9458,5.312917 +0.7867968,6,399.7946,3.195968 +0.8733431,12,935.9138,4.166780 +0.8796833,70,934.9437,5.517356 +0.636514,68,971.9312,4.913639 +0.6808005,20,430.3306,4.045446 +0.6048896,85,981.4121,5.020153 +0.8654105,89,720.428,5.630987 +0.6864552,67,602.496,4.999139 +0.6300466,96,289.0463,5.163596 +0.817489,75,211.2414,5.410742 +0.8400478,92,679.8478,5.573994 +0.5698388,8,300.8922,2.941856 +0.582194,5,504.4376,2.443357 +0.5349201,22,127.5678,3.849569 +0.6187668,22,951.209,3.993716 +0.8008588,62,233.6063,5.225165 +0.5965371,94,40.45694,5.187102 +0.8151207,32,756.864,4.751175 +0.7769006,27,223.2838,4.536306 +0.7174666,8,396.4691,3.288214 +0.7976062,11,776.9354,3.816095 +0.518612,40,443.6649,4.309965 +0.804459,24,381.0473,4.506709 +0.6998635,62,207.0057,4.992047 +0.5738755,63,649.407,4.752359 +0.5914398,66,114.7394,4.847805 +0.7516815,54,737.3794,4.9768 +0.8206513,74,838.3675,5.368303 +0.6892161,22,248.1324,4.152309 +0.7557864,96,773.9158,5.388975 +0.7424069,8,419.5075,3.355515 +0.64102,31,125.2648,4.350865 +0.8755487,29,531.1229,4.887958 +0.8220866,64,95.23995,5.376784 +0.7298066,84,988.9888,5.239885 +0.6498086,59,777.8337,4.835051 +0.5952051,16,43.86029,3.720629 +0.5406545,28,730.805,4.053318 +0.8730058,94,570.9119,5.698879 +0.7848164,39,595.9421,4.819905 +0.5056704,85,235.6726,4.870872 +0.7503822,93,40.40904,5.569652 +0.7623385,77,656.6282,5.254356 +0.9050834,28,639.3919,4.989896 +0.5792019,63,720.7618,4.76066 +0.9365765,81,741.2498,5.889811 +0.5170495,36,709.0156,4.220138 +0.7579033,50,215.9502,4.962113 +0.7261358,35,950.1155,4.592818 +0.867949,61,174.7179,5.443687 +0.8219999,91,90.11405,5.635406 +0.7344778,6,768.4564,3.032963 +0.6391056,66,344.9348,4.907219 +0.715629,5,461.1896,2.780410 +0.9456008,14,125.8034,4.795929 +0.7781412,93,949.9423,5.414954 +0.9017116,9,294.1608,4.070416 +0.7990502,54,177.7193,5.134096 +0.5764074,30,277.9910,4.181882 +0.868876,87,530.6085,5.635381 +0.838551,3,655.3641,2.584304 +0.8733335,81,169.8654,5.663368 +0.8009454,37,421.7654,4.829536 +0.6619069,3,358.1408,1.990475 +0.936464,46,82.03691,5.698119 +0.8662996,15,787.2326,4.326679 +0.6319756,60,396.6261,4.821835 +0.8327794,21,356.1523,4.489936 +0.697243,14,426.6443,3.769716 +0.9422893,39,798.8793,5.442873 +0.8401464,40,876.4566,4.99153 +0.7271848,14,801.7663,3.837801 +0.9366602,79,839.1458,5.871191 +0.8654798,86,219.8499,5.655314 +0.601478,40,521.7851,4.454044 +0.8159394,76,844.3883,5.373576 +0.877629,12,263.1835,4.205521 +0.6199173,63,541.6174,4.832829 +0.8350693,96,494.7244,5.595292 +0.9331142,30,310.2021,5.223768 +0.5971522,26,294.0387,4.101062 +0.7050427,85,799.8672,5.200766 +0.8245875,85,519.8425,5.482495 +0.8156111,40,282.1250,4.940373 +0.5562086,50,914.5773,4.545837 +0.7945503,56,509.8487,5.11224 +0.9002302,48,657.2615,5.351519 +0.7408247,9,582.8542,3.464661 +0.7706727,10,123.3315,3.675843 +0.8233978,87,586.6883,5.492068 +0.6780417,86,613.6269,5.160592 +0.7555267,27,593.3262,4.462403 +0.8589791,98,210.522,5.72345 +0.8564374,49,475.0287,5.201909 +0.6455064,10,888.3926,3.330776 +0.6118692,22,225.4656,3.991082 +0.7097182,9,955.9376,3.380605 +0.8303001,97,751.4643,5.579085 +0.8857616,77,819.6227,5.606405 +0.9371744,94,581.324,5.995916 +0.904798,16,844.1146,4.555205 +0.8052004,76,937.64,5.343849 +0.6413274,76,156.2456,5.034433 +0.5005335,20,619.3793,3.689414 +0.6843155,95,944.576,5.237186 +0.5974006,85,681.7894,5.010067 +0.5821853,27,280.7281,4.104808 +0.8953317,29,409.1469,4.979421 +0.817542,38,884.406,4.885221 +0.6230185,10,126.0652,3.296125 +0.8992164,64,214.1892,5.59214 +0.8508804,86,21.84537,6.12389 +0.6022805,78,638.9464,4.956948 +0.8040262,95,829.4797,5.493623 +0.9077964,51,521.2882,5.434688 +0.7534537,25,426.964,4.399786 +0.9285945,35,190.0018,5.335034 +0.6491223,5,588.7468,2.603757 +0.8181373,96,574.1935,5.544206 +0.7787446,23,373.9165,4.400276 +0.670359,31,124.0375,4.413313 +0.6786379,88,957.521,5.173391 +0.5888266,74,550.2265,4.897334 +0.6085072,66,639.6363,4.845776 +0.6478314,71,985.1027,4.964951 +0.7657263,6,179.6602,3.137958 +0.8456286,68,404.8321,5.399875 +0.5364791,22,998.3107,3.8383 +0.6038707,50,164.2271,4.64913 +0.857209,77,795.551,5.505422 +0.5249804,39,328.439,4.302451 +0.7442277,42,966.5417,4.772024 +0.7201957,47,475.412,4.810843 +0.5699931,24,869.3557,3.975455 +0.6989484,70,816.274,5.051683 +0.7812828,44,2.135128,8.591494 +0.5219076,100,237.0052,5.014755 +0.6106303,98,854.5144,5.13124 +0.5026807,86,224.5775,4.875127 +0.8198123,71,575.1678,5.3441 +0.6138242,71,745.7467,4.907245 +0.6805838,55,638.4604,4.843034 +0.9290318,35,257.3453,5.317635 +0.6470365,22,696.273,4.051653 +0.6337309,97,363.7865,5.172954 +0.7886795,17,643.3402,4.171278 +0.8254145,5,582.7275,3.136136 +0.8516908,52,803.336,5.217638 +0.9166178,8,577.6604,4.041351 +0.8968548,98,527.179,5.820264 +0.5722818,24,793.7203,3.979998 +0.6032017,23,788.499,4.00212 +0.5075828,33,519.9306,4.133535 +0.8657794,62,58.56733,5.593048 +0.6514194,9,397.1311,3.243381 +0.740069,89,621.0678,5.306752 +0.9482056,56,275.5806,5.77576 +0.8230623,9,52.053,3.803464 +0.6082217,53,915.879,4.679475 +0.6464528,5,119.4947,2.607668 +0.8350917,7,226.1173,3.532820 +0.6178383,61,243.0198,4.816592 +0.7782553,77,374.1483,5.303223 +0.8656266,98,739.3553,5.694418 +0.6165961,45,754.2097,4.570610 +0.7231948,97,951.436,5.325928 +0.7702777,54,307.4097,5.037028 +0.7941128,83,842.361,5.377428 +0.9480839,73,274.8127,5.950433 +0.87857,68,853.7356,5.495204 +0.8815007,47,334.6438,5.276524 +0.5020565,73,127.3073,4.761097 +0.8132388,17,766.5308,4.243171 +0.6349836,72,217.501,4.97288 +0.7345042,45,446.8198,4.810678 +0.6324589,56,695.5116,4.765614 +0.6766945,65,682.7241,4.957177 +0.8384446,45,50.39085,5.266822 +0.8292134,96,840.1522,5.567259 +0.6719539,48,656.1994,4.724372 +0.809623,95,56.85168,5.701083 +0.7498366,17,364.4239,4.072086 +0.619014,13,707.4429,3.525017 +0.6811455,74,605.4795,5.060201 +0.882381,46,958.455,5.239598 +0.7015142,82,476.2719,5.175633 +0.5299216,16,494.2751,3.541732 +0.6607211,14,884.8854,3.6824 +0.6563658,76,473.8497,5.036273 +0.9086148,20,348.7688,4.768237 +0.5317627,83,431.7357,4.889704 +0.825882,54,6.723105,6.564159 +0.7910776,83,855.6105,5.369767 +0.5434787,31,396.3381,4.146151 +0.7552404,20,230.9523,4.232531 +0.9128294,2,948.336,2.421541 +0.8734858,3,943.6312,2.752039 +0.7619628,13,46.50071,3.95599 +0.530564,21,589.0549,3.788025 +0.8672307,32,385.6643,4.936566 +0.5758073,16,507.0537,3.630556 +0.9346337,28,207.8552,5.206275 +0.6086858,100,427.5916,5.148903 +0.8526955,60,625.6103,5.325112 +0.7807349,97,208.4894,5.491468 +0.6613672,24,666.5108,4.154454 +0.7868165,30,481.2405,4.628475 +0.9346749,13,889.5627,4.572415 +0.9328514,7,828.8279,4.030245 +0.5606693,6,261.8499,2.607946 +0.8161636,17,780.7351,4.252196 +0.6558015,79,528.6601,5.061497 +0.831897,81,635.7404,5.466197 +0.915886,22,853.311,4.862409 +0.5913286,72,60.15915,4.945122 +0.8646249,33,264.7087,4.962252 +0.8321677,72,908.4424,5.380992 +0.6962891,65,110.6920,5.048255 +0.6304735,72,218.5794,4.964444 +0.6745612,29,459.785,4.34005 +0.9232729,26,918.3574,5.02832 +0.8580391,47,854.3836,5.166712 +0.5624958,56,846.6226,4.643342 +0.7873887,36,127.6685,4.816235 +0.5135421,82,424.3989,4.85195 +0.814808,97,115.9282,5.628076 +0.8753602,40,178.0754,5.167777 +0.6118576,23,147.7502,4.036733 +0.6847514,43,587.8533,4.667379 +0.6061571,47,758.2529,4.585328 +0.5858277,36,416.5601,4.343773 +0.8739752,83,707.7928,5.61507 +0.8375114,6,982.8637,3.372709 +0.9003886,58,173.6305,5.545955 +0.5981954,71,128.2512,4.910756 +0.7455954,57,286.4944,5.020046 +0.7812342,42,253.2611,4.88518 +0.730042,91,961.7669,5.295857 +0.7136859,65,302.7885,5.044119 +0.693914,50,633.6842,4.798753 +0.7007014,9,755.1023,3.35871 +0.5536581,56,347.3614,4.634456 +0.5760761,33,840.6948,4.25189 +0.5446971,18,518.0001,3.677323 +0.843379,13,993.9418,4.115953 +0.787686,66,606.3317,5.208036 +0.824503,100,349.7422,5.603655 +0.8745048,52,832.2114,5.296925 +0.5533256,6,456.3044,2.589675 +0.9002027,32,78.98477,5.199832 +0.7572682,69,955.2467,5.161683 +0.9110095,86,223.9173,5.844839 +0.815023,94,299.6559,5.541953 +0.8908233,97,786.267,5.778197 +0.5329625,8,44.15612,2.887261 +0.5134662,39,538.1438,4.279916 +0.5981097,30,227.5569,4.225254 +0.7171263,75,704.7456,5.138373 +0.930335,42,353.6559,5.438617 +0.8124237,87,3.898780,7.969198 +0.9411632,55,725.4331,5.668858 +0.8050018,42,440.056,4.934311 +0.7530192,22,622.1026,4.290333 +0.8170806,84,470.7614,5.456249 +0.93525,14,386.908,4.651497 +0.7166343,60,104.1422,5.038449 +0.917954,87,868.0088,5.826831 +0.8879323,89,923.3232,5.70781 +0.8616931,37,534.479,5.0154 +0.6735284,59,446.7707,4.885447 +0.7125385,71,553.2622,5.093403 +0.7026195,75,235.6866,5.131304 +0.5473121,3,51.68421,1.711303 +0.6607179,73,43.87053,5.137546 +0.9180171,76,942.4687,5.738086 +0.7645448,19,49.50595,4.30261 +0.733274,29,65.80698,4.546218 +0.7325852,69,130.5952,5.163234 +0.8181913,32,208.0369,4.790727 +0.8948076,14,251.6971,4.419942 +0.6873142,66,993.6974,4.985319 +0.7436848,83,858.6368,5.261985 +0.6818223,2,192.871,1.415344 +0.8277169,97,240.0575,5.609687 +0.5514969,34,543.0716,4.23445 +0.6439629,72,103.1574,5.01859 +0.6550325,8,781.9898,3.12958 +0.6659297,19,936.6371,3.964243 +0.5612373,26,409.1167,4.030819 +0.7397453,2,391.9286,1.594413 +0.6857085,21,758.4541,4.093299 +0.9099568,5,498.0438,3.549488 +0.6577822,82,897.6692,5.086357 +0.500702,72,793.448,4.732607 +0.6754568,15,469.036,3.780968 +0.8649758,48,711.3555,5.208689 +0.9421843,99,391.6264,6.079699 +0.5887436,41,416.7053,4.452386 +0.6453773,33,118.3290,4.412801 +0.5258648,2,717.5804,1.012781 +0.8994016,91,624.9795,5.777852 +0.9174562,84,784.1775,5.804003 +0.6026578,45,320.371,4.553099 +0.7835312,95,79.15228,5.568083 +0.8392914,9,942.9991,3.773431 +0.5477099,23,308.0442,3.902671 +0.6494744,58,864.7787,4.82106 +0.7872531,43,741.0002,4.895919 +0.7405713,93,631.6467,5.337746 +0.5555238,3,66.43276,1.728283 +0.8471521,97,209.7429,5.67748 +0.6715602,45,588.2055,4.675771 +0.7405694,92,749.2553,5.327916 +0.8410912,54,457.7499,5.221268 +0.8757793,69,65.46372,5.692853 +0.7991129,56,816.1179,5.11671 +0.7858377,48,416.5169,4.982474 +0.5952346,45,733.9624,4.532618 +0.6598747,90,74.41126,5.236416 +0.6534484,33,614.6466,4.398455 +0.8005183,24,76.41495,4.570226 +0.8149166,73,807.8775,5.343885 +0.6109188,96,881.563,5.117026 +0.5833846,73,947.8851,4.874815 +0.8332582,88,968.2539,5.518672 +0.6754794,51,86.20849,4.835891 +0.8493183,44,524.7134,5.098639 +0.8793586,56,342.3730,5.390078 +0.9408401,71,467.3872,5.848698 +0.8204796,62,735.2938,5.247582 +0.5961426,44,397.1915,4.521413 +0.9433597,94,329.7532,6.065443 +0.7392313,68,959.699,5.111895 +0.7280047,44,253.7937,4.791354 +0.9357452,29,118.6147,5.291764 +0.5828571,12,498.9039,3.375103 +0.854744,96,453.3386,5.65804 +0.6149968,12,355.3678,3.444266 +0.7638173,54,969.4548,5.001912 +0.7476226,28,43.02059,4.604015 +0.850204,8,125.8630,3.741361 +0.9339542,93,395.239,5.985747 +0.7262818,57,318.2872,4.97424 +0.8771483,94,12.71455,6.793142 +0.8665523,10,839.1073,3.979023 +0.5291674,79,823.083,4.845809 +0.8461989,59,832.332,5.287621 +0.777691,78,744.0216,5.296929 +0.9102575,62,170.4963,5.642964 +0.8246145,85,441.5772,5.486911 +0.7071098,60,820.3086,4.956934 +0.764151,61,333.7483,5.108028 +0.5108066,80,644.122,4.827203 +0.7611696,16,294.2634,4.053159 +0.8603075,85,563.544,5.58912 +0.8424507,6,611.1168,3.395027 +0.6682346,29,18.91631,4.544126 +0.8095137,51,364.8527,5.093099 +0.7633285,38,899.6544,4.74209 +0.7597025,69,397.2478,5.181009 +0.5636095,68,83.49942,4.830507 +0.6316091,93,477.1815,5.135545 +0.6936116,17,552.0311,3.931617 +0.6651088,22,472.8825,4.091816 +0.6405015,26,806.6532,4.177675 +0.7669137,26,886.3107,4.457322 +0.5879523,43,646.7016,4.485114 +0.6280889,46,774.7226,4.608213 +0.5473221,16,613.2056,3.574369 +0.7583959,54,624.1828,4.994282 +0.7935764,27,411.9446,4.567327 +0.6500053,78,147.9928,5.072065 +0.7342936,74,691.8988,5.164618 +0.6859192,72,91.85724,5.113456 +0.8017832,38,38.24381,5.052178 +0.7350069,90,887.2783,5.299267 +0.5002206,82,194.0412,4.837904 +0.7533237,28,614.7288,4.48545 +0.6214808,73,677.9877,4.941362 +0.6034381,66,904.2544,4.834818 +0.6045959,2,877.1838,1.202471 +0.9191417,39,669.9381,5.300754 +0.6090986,15,6.147124,4.030793 +0.728691,100,992.5201,5.357287 +0.5803494,68,749.7505,4.818952 +0.918249,54,720.6098,5.51828 +0.5866335,42,368.2729,4.46873 +0.6226366,31,350.1711,4.293452 +0.7953375,27,164.7003,4.599415 +0.9233556,20,545.3525,4.841628 +0.693924,97,812.52,5.270879 +0.937212,74,26.53409,6.523377 +0.6805653,66,47.1862,5.100028 +0.7598593,85,643.3909,5.317449 +0.8058038,66,761.6447,5.250769 +0.8822559,54,532.8792,5.361971 +0.614166,33,678.061,4.322546 +0.5167548,13,344.9084,3.321401 +0.737005,56,5.424758,6.144477 +0.629088,3,598.6654,1.901919 +0.7769968,90,932.9398,5.390308 +0.6373748,34,936.7224,4.388537 +0.6587434,3,926.8075,1.980018 +0.5993432,94,95.931,5.129989 +0.5982387,29,182.5984,4.201114 +0.751724,11,552.4189,3.684922 +0.9073577,62,482.2382,5.567918 +0.8150025,43,122.7201,5.036162 +0.9243253,80,255.6612,5.857814 +0.6357316,58,495.1672,4.800787 +0.6556389,55,670.6358,4.795017 +0.5861568,55,27.15277,4.798386 +0.5978707,90,24.57173,5.221317 +0.6896733,96,195.3440,5.286647 +0.7350595,10,527.6045,3.550931 +0.6093675,12,663.3941,3.429223 +0.9398014,83,857.6633,5.922471 +0.7034168,87,443.1984,5.22213 +0.8345302,96,179.5248,5.641706 +0.5045654,19,171.2933,3.657253 +0.620858,27,380.0845,4.17572 +0.7262354,41,629.6416,4.717633 +0.7868302,46,629.6635,4.946523 +0.5429665,45,958.0298,4.441479 +0.8342748,98,286.7754,5.626783 +0.8041123,3,250.152,2.447191 +0.9403823,19,121.3608,4.999848 +0.7703869,74,891.5093,5.241131 +0.6782789,68,560.84,4.994993 +0.7609106,83,106.6299,5.379529 +0.7128542,66,300.9281,5.053566 +0.7754385,59,752.3254,5.095663 +0.6046017,21,642.2645,3.927618 +0.8529898,27,139.1238,4.798382 +0.636852,89,561.0196,5.111686 +0.9056183,86,387.1032,5.785767 +0.8224681,98,77.91344,5.710191 +0.5523867,13,804.8892,3.388849 +0.8291812,27,953.4762,4.661662 +0.8177408,34,269.3261,4.826065 +0.7287865,84,327.9159,5.25608 +0.8268878,29,43.29403,4.896835 +0.8671857,63,838.8865,5.402451 +0.8206525,53,195.2608,5.177668 +0.885049,98,626.2624,5.76788 +0.8990428,17,665.0439,4.577079 +0.6184093,100,463.2699,5.16428 +0.6138274,89,98.59672,5.11673 +0.8989895,91,652.5609,5.774916 +0.9167108,2,451.0968,2.454734 +0.6440376,3,173.423,1.945308 +0.5069269,8,320.9178,2.808423 +0.8790291,26,308.1264,4.833917 +0.817952,64,604.5596,5.266006 +0.7055887,5,673.2377,2.751103 +0.5783787,47,488.5517,4.539385 +0.6382853,9,577.6296,3.211400 +0.7494703,97,843.769,5.381327 +0.928212,21,92.71302,5.017997 +0.8945758,52,541.9428,5.386425 +0.9273533,29,110.0864,5.241252 +0.8712363,22,733.1957,4.654638 +0.681578,15,609.8606,3.792997 +0.9367158,23,38.28047,5.357522 +0.6860431,23,526.7873,4.172916 +0.946944,59,935.9354,5.751069 +0.8369122,62,745.5164,5.295105 +0.6243354,12,113.3691,3.479315 +0.6961065,17,401.2276,3.940114 +0.7622478,63,32.24591,5.361083 +0.6641784,83,513.3596,5.112256 +0.8703236,94,373.651,5.703827 +0.804767,42,894.5125,4.922929 +0.9440183,8,589.8074,4.246075 +0.6568347,90,353.4818,5.162083 +0.6973254,49,536.6094,4.792459 +0.6027091,22,107.0788,3.987613 +0.8687902,8,406.4523,3.792343 +0.6808716,68,779.8336,4.996458 +0.8583502,77,543.5237,5.51734 +0.9003844,71,810.7064,5.613159 +0.6359577,39,653.3212,4.496185 +0.7515497,45,191.9571,4.87259 +0.8712656,28,769.8281,4.838561 +0.6389448,85,906.1354,5.078503 +0.8614109,75,455.1657,5.51486 +0.5651436,48,913.2336,4.529435 +0.7610586,36,14.70605,5.143973 +0.8849197,17,692.9311,4.509625 +0.5267559,97,238.4357,5.000668 +0.8903445,65,446.8721,5.526908 +0.8770817,38,611.0206,5.090063 +0.8014531,67,382.1654,5.264014 +0.8535349,37,465.0802,4.989573 +0.5623505,16,46.12436,3.645094 +0.5837253,64,787.677,4.779464 +0.723658,50,863.5468,4.857386 +0.8564433,31,155.9212,4.911108 +0.9016261,37,59.11041,5.373747 +0.7303029,86,781.0103,5.259658 +0.7005043,98,556.3923,5.295225 +0.7180099,50,367.8436,4.856627 +0.9047978,22,993.9773,4.801455 +0.9126542,43,635.5784,5.335726 +0.7540421,2,224.3753,1.645104 +0.6360051,35,219.6251,4.424294 +0.8953461,53,753.7426,5.395435 +0.6365136,59,401.6807,4.817458 +0.928798,33,286.4699,5.268117 +0.9313734,89,13.00577,7.330162 +0.6127697,76,716.6624,4.955088 +0.7783512,32,544.107,4.654195 +0.8174788,20,838.73,4.389137 +0.8821462,49,274.2839,5.317271 +0.8402305,17,112.4692,4.387457 +0.7712608,36,101.398,4.78705 +0.71034,76,598.5716,5.136129 +0.5360852,35,592.9235,4.230668 +0.6590919,31,385.5477,4.36415 +0.9290205,86,167.1354,5.972936 +0.764866,11,895.893,3.718443 +0.8687183,76,210.8759,5.585765 +0.5457105,93,738.9931,4.990496 +0.5768204,27,113.9398,4.109705 +0.6897985,28,949.4001,4.338094 +0.7089148,99,806.9645,5.313572 +0.8057506,75,85.7964,5.453375 +0.8763766,4,506.4466,3.116303 +0.7624966,17,586.6706,4.099870 +0.939108,20,231.2577,4.979989 +0.5127664,27,809.2373,3.972834 +0.8927624,97,938.547,5.78237 +0.932796,100,77.90402,6.235576 +0.8703162,49,4.716565,7.690852 +0.8896408,5,86.81217,3.474228 +0.9108773,32,432.7296,5.126532 +0.6567976,82,872.5033,5.084811 +0.7518393,44,331.6293,4.839539 +0.5124162,27,275.0050,3.97686 +0.8612289,60,830.469,5.348553 +0.6776792,99,277.8799,5.27316 +0.8132378,86,368.4492,5.46904 +0.8724424,21,273.9887,4.644203 +0.6566044,64,86.6614,4.967259 +0.7538613,57,913.709,5.018571 +0.7935557,91,850.0482,5.438334 +0.5375645,19,508.9865,3.712566 +0.661665,75,580.1227,5.033955 +0.7219753,29,630.5849,4.439406 +0.5929547,38,192.0488,4.410132 +0.5711968,33,901.1568,4.242911 +0.9488055,89,921.9764,6.028084 +0.525361,88,201.8421,4.930438 +0.6649385,20,472.2082,4.010333 +0.5811662,13,152.8478,3.457696 +0.6499022,49,988.2758,4.695065 +0.677492,61,96.13616,4.969053 +0.590887,55,668.5633,4.679121 +0.759376,56,66.90409,5.134457 +0.5629632,4,81.52404,2.133665 +0.9168937,2,602.7444,2.454823 +0.5553233,47,641.6247,4.497973 +0.8793849,54,14.76064,6.1751 +0.8370545,23,53.10852,4.706975 +0.9032895,80,243.7683,5.753165 +0.664133,13,472.0562,3.625055 +0.7629233,86,414.7802,5.341122 +0.8270712,100,770.9533,5.589796 +0.6800086,13,53.56172,3.715934 +0.7511743,14,774.9862,3.899366 +0.7024368,27,108.2775,4.378215 +0.6683634,88,632.6104,5.158543 +0.8007708,35,679.7018,4.779465 +0.748455,68,74.26819,5.238721 +0.7580406,40,830.2967,4.768767 +0.6867868,16,479.4874,3.863907 +0.6345033,24,263.9350,4.108572 +0.9007885,20,503.914,4.718357 +0.7528125,81,679.4688,5.26777 +0.722395,70,318.6385,5.114427 +0.6747357,84,329.5006,5.148071 +0.5546724,16,689.949,3.588185 +0.765431,96,635.3626,5.413237 +0.5213844,28,166.1044,4.028827 +0.9055309,60,129.6213,5.624808 +0.5553817,35,980.6865,4.262468 +0.7184163,69,195.7097,5.111313 +0.5517323,18,802.4538,3.689246 +0.8142866,16,192.9957,4.220405 +0.8211981,3,258.9440,2.515333 +0.7878401,40,134.0559,4.89549 +0.8678996,45,140.8237,5.2421 +0.8137556,53,902.648,5.115614 +0.8358842,84,525.9433,5.506658 +0.6276921,2,695.4127,1.262518 +0.5544768,23,608.4648,3.911448 +0.7520554,22,888.8863,4.285105 +0.8799472,80,81.06966,5.776644 +0.8867459,71,192.9068,5.616458 +0.7170759,68,781.6296,5.06764 +0.614698,86,809.9607,5.046108 +0.582755,27,459.0978,4.101695 +0.615332,92,544.057,5.098476 +0.6483776,30,593.08,4.312197 +0.5182611,100,523.3287,5.001569 +0.7584443,98,146.7554,5.465532 +0.5973876,44,322.7757,4.525969 +0.6765142,38,715.8464,4.554027 +0.858699,64,971.8032,5.381975 +0.8657619,41,119.6429,5.179392 +0.8041556,5,304.7493,3.062042 +0.8865578,21,170.7769,4.726991 +0.6362995,16,81.66367,3.784736 +0.8037017,23,319.2337,4.474112 +0.935349,58,92.10311,5.834605 +0.6449784,75,534.9246,5.004607 +0.933069,77,135.6208,5.9515 +0.6285273,30,718.4376,4.272305 +0.7745992,51,646.361,4.990833 +0.9437443,28,201.3896,5.2771 +0.5553825,35,84.21426,4.292884 +0.691553,44,561.0249,4.699133 +0.7143561,74,606.226,5.125183 +0.9150011,64,868.6043,5.61144 +0.8900851,64,962.8469,5.497329 +0.7627361,89,839.356,5.35164 +0.5916001,19,553.8613,3.815483 +0.9347603,73,40.74093,6.246896 +0.611588,53,781.641,4.686268 +0.8381018,12,577.5503,4.031852 +0.7502626,8,508.3221,3.376268 +0.9077881,81,485.243,5.747453 +0.6604791,57,138.3778,4.864026 +0.5258188,88,750.15,4.919488 +0.7342328,75,540.5984,5.177501 +0.8287273,9,225.8167,3.751461 +0.9260355,9,459.3007,4.212197 +0.6270818,49,708.4415,4.655174 +0.5232657,73,949.5204,4.777819 +0.7676596,92,877.2513,5.384683 +0.8505276,37,776.581,4.970133 +0.9067703,50,944.0097,5.403308 +0.6516737,4,969.1537,2.340581 +0.5532437,8,799.1578,2.9033 +0.6457954,35,483.9951,4.432293 +0.6798643,19,401.1541,4.00008 +0.8913252,67,246.9467,5.579023 +0.8724801,71,237.0759,5.545666 +0.611114,8,908.8348,3.028642 +0.6440464,100,711.3521,5.203401 +0.5185833,39,497.3006,4.288981 +0.5987208,71,553.9285,4.883768 +0.8946845,33,764.2923,5.057894 +0.7702922,34,891.2136,4.674803 +0.8601194,27,672.5945,4.770744 +0.899896,38,752.2178,5.183315 +0.705802,48,362.9667,4.800478 +0.9295424,13,589.0369,4.541681 +0.6700632,91,571.293,5.186371 +0.7856916,3,348.2827,2.375896 +0.5164215,12,683.4326,3.24084 +0.5999788,60,659.1165,4.760225 +0.7430723,82,309.4263,5.271649 +0.6201451,87,102.5936,5.110393 +0.7364097,8,993.3758,3.334495 +0.889546,33,426.7778,5.047535 +0.7509362,51,760.6958,4.93314 +0.9496297,54,579.4342,5.726496 +0.7411664,9,999.2333,3.463098 +0.7252757,38,63.7578,4.747703 +0.8886869,59,85.71176,5.588225 +0.6316102,77,617.5745,4.99833 +0.6470583,23,802.9517,4.088519 +0.7556348,18,182.8062,4.150528 +0.6398546,83,429.5057,5.070863 +0.8742836,47,71.49425,5.384054 +0.9243806,69,251.6256,5.760898 +0.8849305,76,462.3092,5.609127 +0.6190392,89,919.5525,5.076913 +0.7086243,74,75.11446,5.201722 +0.611401,100,285.8263,5.160096 +0.5438444,40,553.223,4.352044 +0.6381758,74,417.0031,4.985918 +0.5709375,60,606.9691,4.711341 +0.6656767,8,591.2158,3.155852 +0.6668269,77,838.8434,5.058611 +0.6259845,41,256.3687,4.527205 +0.6382646,92,531.2887,5.138163 +0.5790715,42,133.6754,4.471822 +0.5505636,44,53.26842,4.487644 +0.7873557,18,109.4958,4.261192 +0.9278928,34,803.4808,5.25132 +0.6506427,40,322.5025,4.55164 +0.636289,14,439.4037,3.632874 +0.5138037,17,541.6375,3.566823 +0.7490946,24,208.8606,4.370446 +0.5264396,24,176.6778,3.905171 +0.5862563,42,460.3187,4.46604 +0.8596417,57,917.1627,5.306278 +0.5490575,43,659.7477,4.417489 +0.8022336,2,611.0282,1.823408 +0.62453,71,712.8487,4.926108 +0.9447033,25,993.19,5.144499 +0.6984111,12,901.4631,3.626986 +0.8310141,56,298.2470,5.229228 +0.7551605,74,724.2943,5.209182 +0.9028476,48,179.1977,5.421774 +0.5226023,80,250.3484,4.853282 +0.6273796,15,284.8897,3.680715 +0.5101388,9,799.4037,2.937410 +0.8970192,84,201.2089,5.771734 +0.7243075,13,98.06574,3.799825 +0.6452252,9,875.8479,3.225854 +0.6703307,76,359.7317,5.066694 +0.7062982,29,334.3508,4.412282 +0.9362348,36,821.206,5.344544 +0.7755292,52,741.3775,5.005386 +0.7115857,52,936.8725,4.860348 +0.6793413,30,229.3854,4.388151 +0.6130655,31,660.8805,4.270066 +0.7027686,53,625.6065,4.860058 +0.6274324,12,824.7647,3.466937 +0.7963726,5,994.202,3.027711 +0.8681058,60,90.89657,5.501354 +0.6015066,36,175.3427,4.384748 +0.6447442,38,735.3686,4.491722 +0.6795336,70,721.4585,5.015486 +0.7723539,75,896.9785,5.254934 +0.9078405,81,367.5354,5.759166 +0.6164017,8,73.57849,3.064286 +0.8370671,27,296.2669,4.70746 +0.797849,35,873.8625,4.76869 +0.7180328,33,339.4326,4.540756 +0.6986307,40,390.1059,4.645778 +0.8793415,2,188.5154,2.204849 +0.7290775,37,189.5800,4.669984 +0.888677,11,590.1095,4.166872 +0.7031697,39,530.7594,4.631734 +0.6527077,20,552.1618,3.98336 +0.6907402,65,105.7456,5.039006 +0.8501955,84,714.7776,5.543259 +0.6880136,85,948.7286,5.166637 +0.9312943,36,281.7262,5.347377 +0.7972013,66,878.5866,5.226604 +0.8539718,31,911.604,4.849066 +0.705903,64,72.05808,5.091427 +0.6510286,57,730.2199,4.812274 +0.5237086,8,359.0167,2.843074 +0.8376964,23,287.2865,4.58462 +0.9112111,65,439.1747,5.621653 +0.7693145,21,654.116,4.293623 +0.7690674,6,60.02425,3.182115 +0.8479559,89,46.64795,5.840863 +0.7676322,73,254.1046,5.252961 +0.8763505,43,33.84927,5.508428 +0.6333285,91,779.6607,5.118105 +0.5761417,16,363.9524,3.632995 +0.5943329,67,953.5303,4.830177 +0.886703,87,255.9935,5.733959 +0.7707937,56,995.4612,5.044243 +0.8661679,83,71.95059,5.766113 +0.6604832,48,823.6246,4.70053 +0.6021952,66,988.3845,4.832242 +0.8521975,100,10.07298,6.88639 +0.9453367,53,680.6012,5.676072 +0.8578552,45,555.8434,5.142528 +0.7095984,97,328.0429,5.316697 +0.7875645,82,318.109,5.374691 +0.7601498,37,449.384,4.7226 +0.8680032,78,332.5949,5.575869 +0.8951179,40,810.7306,5.196888 +0.7677873,36,646.9899,4.715364 +0.6233557,40,133.7175,4.51815 +0.6236224,31,282.5713,4.298041 +0.7886229,45,889.8385,4.930839 +0.9113417,13,704.8534,4.424861 +0.8048366,83,912.4802,5.403325 +0.8876121,73,97.97675,5.714737 +0.6566803,93,847.2992,5.173379 +0.7361686,23,484.196,4.288003 +0.6405429,27,119.6107,4.237244 +0.8265951,70,771.4504,5.348116 +0.9063825,83,216.2709,5.801286 +0.7329975,51,823.1752,4.892481 +0.707735,32,819.8191,4.483689 +0.8063754,92,985.24,5.475727 +0.5671987,36,8.130045,4.622987 +0.5949391,74,888.767,4.904264 +0.8925676,86,470.7429,5.72116 +0.9111893,86,206.8652,5.852285 +0.868771,39,701.3807,5.074553 +0.6581741,57,851.498,4.824371 +0.7124499,5,309.5104,2.773728 +0.6160275,3,927.5913,1.867738 +0.9077186,87,515.2092,5.791704 +0.6809903,100,251.1352,5.289401 +0.8249242,51,644.1882,5.124642 +0.5007189,63,489.9313,4.634174 +0.5823059,34,995.1942,4.286632 +0.8764704,96,332.826,5.745166 +0.9279742,62,399.9774,5.684188 +0.6058798,51,161.1977,4.668592 +0.6692909,73,918.8406,5.024354 +0.8575137,59,187.4093,5.376903 +0.7945395,21,115.6826,4.410157 +0.5041056,70,246.2471,4.72404 +0.6811694,74,584.603,5.06067 +0.5047193,32,918.3743,4.101420 +0.62641,45,241.3786,4.601556 +0.9231728,95,684.2123,5.916083 +0.8906883,62,79.7124,5.646251 +0.6451526,81,823.5166,5.055857 +0.5843882,2,572.7973,1.152088 +0.9415851,71,805.8501,5.836022 +0.5650946,58,264.105,4.683902 +0.6622129,74,503.0527,5.02709 +0.5227259,6,595.5645,2.522141 +0.7577065,89,300.0612,5.362241 +0.6885727,58,634.3311,4.897823 +0.6582183,24,597.0416,4.148695 +0.7621428,54,4.677027,6.505218 +0.6300545,61,732.2958,4.824428 +0.717593,81,639.7483,5.194602 +0.8089698,37,624.8774,4.84518 +0.8819809,71,110.4756,5.653277 +0.6684123,12,487.6716,3.55997 +0.731306,31,689.6599,4.512494 +0.7449809,77,364.2442,5.22728 +0.8060204,30,394.1408,4.685581 +0.7902367,72,962.9857,5.268578 +0.6622077,91,992.0186,5.166785 +0.9423636,49,688.1545,5.601706 +0.6138338,28,490.9497,4.190094 +0.6153132,49,371.723,4.639831 +0.5919034,26,88.76052,4.115030 +0.6712624,15,954.8967,3.767796 +0.7370935,16,271.2719,3.991453 +0.8260105,53,607.0709,5.156222 +0.7039847,34,370.7429,4.531785 +0.6835765,63,263.0202,4.963496 +0.6792575,13,78.47224,3.694629 +0.6581926,70,940.6411,4.97371 +0.6659625,74,701.9212,5.030244 +0.943103,48,552.5686,5.599539 +0.8172628,97,241.8532,5.579464 +0.6088576,48,431.5509,4.610688 +0.9066039,89,915.7831,5.786188 +0.8887035,57,401.5979,5.434053 +0.6746067,59,188.1885,4.906911 +0.6599387,2,803.0654,1.350025 +0.9274535,2,764.3575,2.542979 +0.5526748,73,4.931036,5.369283 +0.685566,91,873.84,5.210347 +0.9252521,76,580.645,5.788709 +0.624663,50,56.6223,4.739905 +0.8917172,14,592.4602,4.385331 +0.8361517,93,147.1155,5.641347 +0.855131,5,697.6645,3.25786 +0.616702,63,697.7248,4.82506 +0.7131682,24,436.9471,4.270307 +0.5582717,56,141.712,4.656545 +0.8133165,99,914.7708,5.543544 +0.7850109,35,122.0806,4.790481 +0.6573884,93,362.8063,5.185657 +0.6709559,81,324.0598,5.115466 +0.675296,3,276.5954,2.028428 +0.744242,41,77.85827,4.838235 +0.8627685,88,504.0866,5.623501 +0.823486,31,633.4859,4.754332 +0.9152854,22,663.1988,4.862911 +0.889191,25,632.754,4.830601 +0.5320597,23,522.3386,3.870895 +0.8348069,4,353.5423,2.926616 +0.5506804,92,605.5381,4.991792 +0.7402406,91,248.1225,5.345439 +0.6606832,91,199.1307,5.191928 +0.6876065,25,697.7802,4.243088 +0.8396906,17,69.82845,4.424644 +0.8303857,99,915.3883,5.589564 +0.670205,52,201.1685,4.801504 +0.5688656,16,839.9051,3.615185 +0.6059302,57,884.9344,4.730385 +0.625943,13,421.1995,3.542213 +0.579431,11,698.7441,3.282398 +0.5107836,30,521.7842,4.059707 +0.7034076,59,806.1451,4.937422 +0.5348029,85,608.8314,4.909535 +0.8178558,52,767.8403,5.115544 +0.8021263,97,609.5435,5.508143 +0.6139589,32,718.7935,4.297009 +0.6199155,18,820.2245,3.822254 +0.8459365,22,737.9467,4.560176 +0.7804563,6,534.7507,3.173321 +0.5024161,35,483.8863,4.173427 +0.8757202,43,105.3846,5.269118 +0.5523042,3,511.2241,1.711368 +0.710674,44,138.0479,4.774404 +0.8872324,57,781.0616,5.410725 +0.6919563,13,743.3296,3.686274 +0.5287773,88,847.8963,4.923581 +0.6964034,68,916.3211,5.024973 +0.6097059,34,425.8519,4.341618 +0.6914693,5,342.4144,2.715573 +0.6908814,75,600.6959,5.088477 +0.7843654,22,908.377,4.369244 +0.6641371,52,390.4209,4.775486 +0.7738185,93,701.611,5.409122 +0.8668095,75,18.17850,6.218107 +0.8612623,84,728.9866,5.578543 +0.7244234,31,540.4559,4.499312 +0.8197609,4,359.5769,2.865559 +0.7343252,8,199.2936,3.341473 +0.6836545,55,307.1725,4.859945 +0.8095471,62,373.0194,5.23192 +0.7809187,81,376.8042,5.344588 +0.7497668,97,103.3747,5.465082 +0.9281159,54,946.8552,5.567694 +0.7009217,95,200.3139,5.300944 +0.5690716,17,188.3412,3.680089 +0.7616844,55,650.7446,5.014634 +0.7634251,52,850.2973,4.974944 +0.6935619,21,385.6687,4.116289 +0.570187,27,798.2554,4.075779 +0.8573198,35,201.5977,4.991557 +0.9254133,3,227.7771,3.100818 +0.6926173,80,169.8465,5.169298 +0.7957502,80,579.6955,5.362447 +0.8909846,60,580.5683,5.467522 +0.6101913,7,739.8612,2.885962 +0.9292679,60,774.9304,5.648684 +0.6020853,83,329.8084,5.008931 +0.8730834,90,975.1034,5.659242 +0.615229,29,780.1903,4.218847 +0.6368305,62,272.5524,4.861233 +0.785301,88,625.0687,5.400485 +0.7612865,62,271.0423,5.119176 +0.6491867,8,449.3793,3.117950 +0.7028936,21,964.8851,4.130015 +0.7351485,36,435.3573,4.643088 +0.5901236,54,682.5866,4.66379 +0.8711818,7,971.5228,3.668632 +0.7885463,27,710.0058,4.545948 +0.8615259,27,922.5975,4.772005 +0.9423586,100,857.2488,6.056786 +0.5641551,45,95.40686,4.508179 +0.5478364,32,717.8125,4.177136 +0.9463165,16,838.3264,4.827952 +0.6402324,83,670.1578,5.066309 +0.8372235,89,450.2324,5.553761 +0.9247225,92,559.3225,5.910356 +0.8252188,14,982.6037,4.116096 +0.7574355,58,76.46756,5.140588 +0.641243,6,230.5134,2.795860 +0.5718324,66,218.8287,4.79571 +0.8140738,93,464.7936,5.51726 +0.9040285,7,963.9252,3.83736 +0.9163233,29,109.8488,5.171177 +0.8748685,10,834.4159,4.015456 +0.879919,59,813.5775,5.404823 +0.7757908,51,24.82199,5.310636 +0.7253728,87,268.653,5.279343 +0.7804497,47,914.5564,4.941718 +0.8855489,99,398.2152,5.791743 +0.6244977,39,690.1232,4.47439 +0.7809398,7,858.4253,3.331407 +0.9274042,80,869.2504,5.823213 +0.6230907,68,340.9755,4.900364 +0.7848126,79,316.7394,5.342187 +0.8068917,87,468.6103,5.45299 +0.8530915,95,969.5945,5.628566 +0.7027934,73,539.2994,5.093997 +0.8731742,84,621.7372,5.623118 +0.7634371,11,181.9686,3.733192 +0.6286905,42,288.0719,4.549231 +0.8355486,81,770.2646,5.473221 +0.7263397,96,641.287,5.329899 +0.7291552,22,869.557,4.22971 +0.7014426,13,170.1686,3.725237 +0.568906,9,932.683,3.058732 +0.6805077,21,636.6685,4.083097 +0.8519636,19,719.8393,4.465273 +0.5840272,10,293.2955,3.201459 +0.9297056,42,307.3728,5.441351 +0.8996739,11,116.8909,4.276207 +0.7365314,67,154.0723,5.141475 +0.763537,20,855.483,4.236114 +0.9162934,13,583.4637,4.456551 +0.7383305,87,578.0058,5.288548 +0.6220495,76,653.0012,4.971777 +0.6959088,17,204.1746,3.949512 +0.9408439,64,526.8199,5.776257 +0.9072844,39,816.4094,5.235457 +0.614806,36,866.7964,4.392034 +0.8616143,15,538.4074,4.31235 +0.5916647,82,276.8439,4.985187 +0.6381437,56,308.9643,4.785542 +0.6102399,84,288.0863,5.033928 +0.881096,65,423.3302,5.491607 +0.8805683,77,63.34668,5.801957 +0.8317284,24,465.7188,4.587363 +0.938735,16,346.6328,4.786943 +0.7878217,76,601.5734,5.306758 +0.8145564,100,76.89838,5.701038 +0.8641405,21,465.8502,4.597313 +0.9193547,50,890.4468,5.467787 +0.7352061,62,621.5478,5.042233 +0.875424,97,663.1315,5.724161 +0.5947927,15,437.6885,3.610047 +0.9293856,42,154.1849,5.489918 +0.8981893,100,195.0101,5.895842 +0.7722383,39,397.162,4.794676 +0.9468243,2,427.845,2.741961 +0.7672563,5,64.92349,2.969334 +0.753621,75,98.68655,5.295252 +0.7196577,37,662.6364,4.62432 +0.6445426,69,400.8762,4.947273 +0.621717,58,797.6387,4.77164 +0.754107,15,637.9203,3.969023 +0.7000804,99,874.8527,5.295806 +0.6727205,31,348.9427,4.393295 +0.7419021,51,307.5882,4.928106 +0.9111804,26,953.7102,4.960184 +0.6518057,68,78.44112,5.009199 +0.7369495,90,950.977,5.302565 +0.5943179,38,567.3262,4.399971 +0.9148237,17,146.5165,4.716318 +0.5039681,13,962.0642,3.293958 +0.8940384,66,260.9585,5.577167 +0.6596946,18,58.33929,3.961345 +0.7745604,80,873.7772,5.304947 +0.5579154,44,577.4417,4.451439 +0.6792655,79,305.888,5.114813 +0.7721706,74,725.1806,5.247874 +0.8730904,27,452.3935,4.827657 +0.8668253,43,479.2732,5.145368 +0.9243933,68,715.7662,5.70527 +0.8697712,45,759.5009,5.179335 +0.5704939,24,771.9525,3.976776 +0.849549,21,171.7464,4.57335 +0.7153914,68,756.1855,5.064555 +0.7469934,89,37.00684,5.545569 +0.8980766,93,735.0168,5.782137 +0.6740698,15,908.684,3.774217 +0.7262363,18,196.8211,4.073023 +0.7726955,93,825.9488,5.404193 +0.7877387,57,83.19955,5.202352 +0.5402169,35,836.5996,4.236559 +0.647406,92,696.285,5.15123 +0.6369996,43,600.33,4.574637 +0.5011999,34,536.5494,4.147083 +0.5253697,34,959.3483,4.186866 +0.6654399,10,953.6924,3.376122 +0.5754832,59,82.33117,4.746022 +0.6149122,12,758.6291,3.44049 +0.7273927,5,827.2032,2.811743 +0.765783,4,480.0208,2.671068 +0.8026067,20,628.1018,4.346873 +0.6688459,16,552.1669,3.822802 +0.654652,65,429.9494,4.921309 +0.5930605,54,299.062,4.676825 +0.91803,98,475.8612,5.921616 +0.8586014,94,822.9594,5.641858 +0.8724855,40,320.3798,5.126823 +0.9115961,67,663.3112,5.630971 +0.6378116,67,41.66062,5.02444 +0.783027,17,444.7541,4.159232 +0.8044376,26,517.2797,4.564801 +0.884418,84,946.382,5.656019 +0.9450776,82,74.40857,6.2069 +0.922469,81,659.5106,5.811031 +0.7723949,73,576.8139,5.242505 +0.914753,7,951.6982,3.902467 +0.808698,53,628.3094,5.106761 +0.785287,4,458.7135,2.737001 +0.6806215,13,703.8973,3.660244 +0.8762955,72,590.0658,5.53288 +0.8162853,79,92.18472,5.514161 +0.5399384,14,760.7746,3.434936 +0.724187,81,366.0025,5.218172 +0.5878947,23,272.8676,3.979876 +0.6592433,83,684.7305,5.099926 +0.886695,15,846.1366,4.414048 +0.7518114,65,513.9724,5.11545 +0.9269379,97,254.9159,5.999051 +0.7133172,82,926.9479,5.190505 +0.7594595,8,51.29232,3.464126 +0.8804678,52,914.019,5.318195 +0.5581051,54,949.4543,4.607886 +0.7872128,50,176.9121,5.045582 +0.7148681,29,874.4857,4.420948 +0.5074475,99,315.6612,4.981299 +0.6011498,70,222.744,4.89042 +0.8461398,49,937.784,5.155603 +0.9156136,74,311.1483,5.746345 +0.8033553,5,645.5019,3.053856 +0.6536788,98,629.0644,5.207469 +0.6301262,28,942.7225,4.217727 +0.871035,28,588.5174,4.841785 +0.9431953,11,805.0258,4.504676 +0.7250134,37,667.4511,4.636032 +0.8318205,86,759.111,5.502966 +0.7024738,45,490.5817,4.740243 +0.8091045,40,202.2661,4.934256 +0.6403498,12,429.5813,3.497927 +0.9449746,23,50.44319,5.349677 +0.851621,98,259.8235,5.685683 +0.9016514,15,42.46861,4.69127 +0.5920015,28,439.8243,4.149594 +0.6072063,3,576.5894,1.845912 +0.9052984,24,276.0850,4.899321 +0.6634726,92,703.5221,5.179664 +0.7561353,16,380.4236,4.035749 +0.8122183,94,804.0761,5.508063 +0.8418656,60,978.833,5.283574 +0.6981374,5,387.5784,2.732931 +0.5241897,21,733.9929,3.775666 +0.6772153,90,38.5611,5.353059 +0.6846175,9,523.6271,3.320686 +0.8614306,19,100.2818,4.57258 +0.9212194,65,524.0826,5.667082 +0.736799,48,376.7794,4.867054 +0.775878,51,470.2745,4.999156 +0.94356,27,448.0736,5.20886 +0.5971862,18,325.373,3.781982 +0.8788234,2,197.9009,2.201285 +0.7207136,56,182.7896,4.966495 +0.8813179,57,305.8846,5.41493 +0.6516088,44,977.5808,4.616521 +0.9432949,83,632.2853,5.954806 +0.8991265,89,533.6602,5.76696 +0.8716255,37,648.0715,5.048531 +0.5811219,78,61.75932,4.982568 +0.8066535,63,375.9281,5.235102 +0.6826185,95,692.657,5.2371 +0.9434476,75,200.0213,5.960525 +0.9371716,19,309.1242,4.912451 +0.6332529,77,912.1464,4.998099 +0.8121484,83,763.5391,5.42491 +0.8215588,72,196.3495,5.398243 +0.8692113,67,150.1000,5.527059 +0.9309966,66,598.433,5.728737 +0.8617159,3,323.4457,2.697052 +0.9094263,53,69.54,5.657197 +0.627946,100,53.37154,5.273825 +0.5469653,9,801.0173,3.013104 +0.9056166,76,348.6382,5.709042 +0.9144018,46,166.2865,5.457833 +0.7024664,26,991.9227,4.305153 +0.5906725,59,693.7827,4.731336 +0.9257523,32,898.1296,5.193483 +0.65419,10,994.8087,3.350149 +0.573937,57,11.15804,4.950549 +0.8722816,12,834.003,4.163117 +0.6104388,69,857.7779,4.879681 +0.7395572,22,625.7083,4.257045 +0.9465412,34,400.3912,5.400517 +0.889617,20,67.53875,4.789287 +0.6603941,62,557.3134,4.894162 +0.6572997,72,275.2044,5.008766 +0.6317894,61,893.6425,4.82618 +0.8166771,23,925.1903,4.497861 +0.7286248,2,555.7641,1.557043 +0.5152166,94,960.7927,4.949714 +0.9101605,61,986.4156,5.553379 +0.6866718,89,327.3256,5.211781 +0.8399551,77,168.6181,5.511889 +0.6353491,11,670.0163,3.401654 +0.853916,50,636.4847,5.201295 +0.8817695,88,767.3826,5.680463 +0.7185712,51,241.4021,4.882724 +0.770894,12,679.0355,3.816384 +0.9098048,72,985.2333,5.661611 +0.7218967,37,816.4549,4.627383 +0.7243346,61,997.2886,5.002563 +0.6719135,71,854.4393,5.009869 +0.8973335,85,484.1437,5.732463 +0.7554376,48,525.1413,4.903844 +0.9430205,70,144.7852,5.949187 +0.5493725,55,24.62404,4.720334 +0.5971568,6,909.9559,2.686758 +0.5690979,11,348.2237,3.263709 +0.7511994,95,182.5334,5.413766 +0.7210895,57,765.5559,4.949078 +0.8161127,3,732.3479,2.489221 +0.8336693,15,791.3677,4.204955 +0.8948794,18,254.5316,4.625170 +0.6632123,98,92.93594,5.287683 +0.8910968,56,3.694522,9.14612 +0.6376692,36,989.8612,4.434143 +0.80947,80,114.0895,5.478967 +0.82957,24,224.7908,4.599062 +0.8977277,50,151.2525,5.440728 +0.8022287,100,632.9642,5.528033 +0.7857295,10,423.1267,3.696796 +0.7545248,86,527.6158,5.317099 +0.6009039,81,487.6485,4.984334 +0.6896002,59,438.7283,4.917154 +0.6974143,13,814.5804,3.698697 +0.7301658,70,278.3712,5.134808 +0.6591984,4,657.8318,2.360831 +0.7862776,80,954.3117,5.331615 +0.8580173,76,922.4202,5.496869 +0.7225116,83,660.0493,5.22118 +0.6513679,23,295.4721,4.105703 +0.8454044,52,928.4528,5.195344 +0.7959045,85,906.7124,5.397084 +0.731706,80,590.0431,5.216045 +0.7256962,76,36.67469,5.365805 +0.6209987,91,219.8982,5.116044 +0.7788926,92,471.59,5.421277 +0.9395612,67,773.8309,5.785787 +0.5712265,40,617.832,4.399043 +0.8177507,36,918.277,4.845297 +0.5308056,7,784.1608,2.711805 +0.9239735,91,592.1715,5.897353 +0.6734823,5,703.1057,2.665332 +0.552545,50,9.700298,4.805741 +0.8571885,61,401.3484,5.362952 +0.8276853,100,722.3954,5.592684 +0.78248,79,226.7434,5.349608 +0.7540784,70,289.0356,5.186986 +0.679809,84,328.1678,5.157819 +0.5346721,5,321.7632,2.336343 +0.5046181,10,800.9464,3.034873 +0.6086207,41,363.4659,4.489845 +0.9056507,51,45.66387,5.714624 +0.757739,92,34.72594,5.618443 +0.7988586,13,563.46,3.971763 +0.6246819,98,911.8113,5.154245 +0.9473038,50,313.7374,5.683982 +0.8610659,43,569.1981,5.120719 +0.9211183,50,72.18092,5.677973 +0.6910641,44,79.55915,4.761997 +0.8947933,94,199.2544,5.837905 +0.6185201,93,777.6178,5.108263 +0.943615,39,746.2719,5.454103 +0.7002987,96,988.1737,5.273948 +0.7553033,39,915.4639,4.742379 +0.7679916,50,737.3042,4.958796 +0.6890029,94,907.0683,5.238912 +0.6199692,74,986.7426,4.946051 +0.6411281,94,818.5881,5.153933 +0.8464514,65,70.51132,5.514609 +0.6060643,92,352.4973,5.088319 +0.5031575,80,710.7902,4.814834 +0.5938577,14,609.6362,3.542741 +0.5328757,73,26.24858,4.894656 +0.865526,20,873.1708,4.555331 +0.7964953,62,272.376,5.207187 +0.7383672,76,876.4028,5.189204 +0.7729914,15,22.17502,4.243482 +0.9011562,48,287.6424,5.383655 +0.8172952,52,437.9903,5.124289 +0.5405907,22,802.478,3.846356 +0.6312621,7,216.3909,2.94054 +0.8226957,52,804.0583,5.128694 +0.885333,73,13.19686,6.600686 +0.7457342,60,609.2144,5.041968 +0.6578178,44,288.0032,4.641378 +0.83535,98,131.3518,5.685504 +0.8930805,88,976.9815,5.719899 +0.9396818,36,611.7228,5.374934 +0.777755,41,954.446,4.833966 +0.7981147,97,369.9938,5.510893 +0.944999,93,954.528,6.027065 +0.6157446,41,907.7825,4.495908 +0.7380916,76,861.9726,5.188795 +0.839211,68,23.80187,5.830786 +0.8532856,89,262.6102,5.625921 +0.6775974,17,292.3724,3.901788 +0.5828361,39,703.1539,4.39878 +0.8850796,24,198.9660,4.816882 +0.5914885,3,181.9281,1.809612 +0.5142923,5,830.6914,2.289293 +0.6603836,44,766.019,4.634749 +0.7912155,30,894.1168,4.632969 +0.7526184,71,153.6191,5.221186 +0.9332683,65,964.548,5.720877 +0.8309404,85,873.4239,5.490343 +0.625892,74,27.07511,5.129885 +0.5828644,56,693.3597,4.678749 +0.5136066,79,925.8308,4.820971 +0.8330586,80,19.34037,6.035081 +0.7008366,51,404.9684,4.833525 +0.8843272,91,152.3932,5.796872 +0.9225516,25,667.9643,5.000335 +0.8791967,66,828.0534,5.477954 +0.5186196,24,709.4802,3.882467 +0.751543,9,311.5484,3.49974 +0.7436109,27,477.438,4.435924 +0.6807055,87,495.5713,5.176597 +0.7510662,82,965.3252,5.268203 +0.7277244,57,502.561,4.968428 +0.9410907,91,166.2730,6.091714 +0.6792364,33,490.5878,4.452396 +0.7848101,10,12.64165,4.03457 +0.942731,30,198.6954,5.320442 +0.7519409,59,846.5128,5.039781 +0.5020636,78,693.9159,4.794566 +0.7176895,90,868.5585,5.264436 +0.5767474,15,14.59399,3.713746 +0.5775503,39,391.2338,4.393338 +0.6690003,27,870.2484,4.265722 +0.7235208,94,69.99504,5.418828 +0.8928368,32,934.5482,5.024385 +0.6799028,62,244.2493,4.946376 +0.5802962,44,262.7254,4.497853 +0.5605126,43,595.6193,4.437684 +0.9367013,51,894.6887,5.583736 +0.5337638,21,15.99230,3.907597 +0.5574367,40,687.904,4.374468 +0.8259194,30,937.608,4.73232 +0.8714596,38,471.542,5.07393 +0.6665597,49,399.8029,4.735126 +0.8192291,35,93.40303,4.915221 +0.8688831,56,259.5373,5.362454 +0.6838603,98,570.7892,5.263374 +0.6465024,93,946.6553,5.154663 +0.8457297,5,633.2096,3.217746 +0.6922344,70,457.7957,5.045673 +0.7149555,84,650.9649,5.214478 +0.6031059,75,638.7035,4.929953 +0.7407085,80,553.5425,5.236097 +0.5007247,9,785.852,2.918291 +0.5881926,2,575.2952,1.161514 +0.6842944,85,56.74425,5.275968 +0.6365547,8,593.1905,3.087423 +0.5593403,10,597.9742,3.146675 +0.6665544,2,261.012,1.370363 +0.5226974,14,860.4175,3.401291 +0.9373338,70,166.3507,5.890187 +0.5455807,16,558.8445,3.571325 +0.6551681,51,253.6940,4.751319 +0.5161405,19,33.30902,3.718792 +0.9238053,84,580.7067,5.845623 +0.86948,94,90.00178,5.827859 +0.6780455,11,784.5237,3.497723 +0.9178672,99,456.9874,5.928964 +0.767568,71,23.22718,5.569045 +0.7954395,72,365.8755,5.299927 +0.8839859,79,733.2088,5.618772 +0.7608575,89,448.5921,5.358179 +0.8567473,65,858.2716,5.387898 +0.8996104,56,643.5015,5.455172 +0.7666284,12,47.31088,3.893322 +0.6470064,93,699.9194,5.158058 +0.5875236,53,926.724,4.643525 +0.8953835,74,992.946,5.615506 +0.9201886,9,970.5459,4.163660 +0.601927,10,259.6253,3.240734 +0.647429,76,942.9703,5.013432 +0.8213445,33,641.5921,4.794998 +0.5490222,33,105.5942,4.225879 +0.5776677,67,403.6322,4.808392 +0.8079034,87,427.1954,5.458135 +0.6253146,65,887.0287,4.861523 +0.6817373,76,748.7887,5.078027 +0.7258991,74,732.7329,5.146395 +0.9250114,9,157.7767,4.239061 +0.8528482,35,754.1407,4.937605 +0.8636093,24,789.116,4.691449 +0.6416303,18,107.3528,3.893581 +0.938607,30,188.2054,5.293022 +0.6183642,98,784.5568,5.144735 +0.626452,49,708.409,4.654031 +0.5033137,90,364.6996,4.904766 +0.6416498,69,686.6995,4.935888 +0.9439444,30,16.76117,6.17131 +0.6769998,61,91.14787,4.971445 +0.6099088,33,292.5247,4.322005 +0.8562472,61,175.4549,5.400586 +0.6554333,26,733.8006,4.208067 +0.6010223,16,940.5603,3.678439 +0.7840678,73,110.2884,5.345153 +0.8568647,97,348.6922,5.681597 +0.8782813,11,752.7111,4.115416 +0.865477,47,912.7237,5.191814 +0.7104252,95,328.1609,5.303922 +0.6518729,99,406.2813,5.21742 +0.8136264,40,904.949,4.911606 +0.6043372,47,902.7367,4.581187 +0.8121081,67,7.538333,6.513966 +0.6552225,23,532.8514,4.107702 +0.7357522,22,482.9446,4.250429 +0.5070191,82,821.2403,4.838449 +0.5782021,65,832.5791,4.781427 +0.6097488,47,86.14851,4.635193 +0.7171686,97,668.8119,5.318037 +0.644155,46,660.5386,4.63903 +0.7727673,44,22.80839,5.203142 +0.7922387,75,505.9924,5.311956 +0.664713,98,532.7728,5.229238 +0.5679516,46,992.4062,4.500924 +0.825774,10,281.0117,3.834293 +0.6083309,41,597.429,4.484862 +0.7737187,21,467.6578,4.309089 +0.7249439,60,598.5867,4.997216 +0.9095895,37,8.365455,6.77549 +0.5130474,48,40.46562,4.494295 +0.6051408,80,447.1557,4.983537 +0.8676191,75,629.6436,5.527589 +0.9364891,57,469.2977,5.674607 +0.6506647,93,569.1126,5.166729 +0.5027852,74,545.2522,4.757751 +0.5031346,98,162.6768,4.975135 +0.767055,50,183.3676,4.991531 +0.6801705,23,719.5443,4.157980 +0.9061154,72,553.1563,5.657693 +0.8591993,97,490.7379,5.676845 +0.6889985,44,681.4208,4.692018 +0.7125659,97,200.8339,5.33931 +0.6351567,29,301.1039,4.265337 +0.6566573,52,440.792,4.759479 +0.8159221,94,986.9704,5.514844 +0.6077678,22,101.6926,3.999549 +0.7839771,64,576.8159,5.178063 +0.6734601,31,395.1654,4.393173 +0.6060289,28,3.081892,5.121582 +0.6789768,96,181.166,5.268511 +0.787318,16,775.1314,4.11447 +0.9073888,41,497.7243,5.282086 +0.7638307,87,131.2056,5.403349 +0.6463511,71,445.6236,4.969812 +0.6726806,25,761.584,4.210960 +0.7649493,53,632.2372,4.995885 +0.683377,75,176.2011,5.102595 +0.890173,53,383.1089,5.39159 +0.5778118,60,604.8159,4.722957 +0.6290806,81,835.3322,5.027719 +0.709206,75,365.1975,5.133035 +0.7821182,50,921.8328,4.990793 +0.8249756,33,449.9177,4.812041 +0.9164308,22,483.9926,4.875823 +0.5126529,7,69.3751,2.686872 +0.7279297,76,849.3809,5.167721 +0.6243633,81,425.4841,5.026262 +0.6822903,74,903.373,5.058437 +0.7674061,16,381.5476,4.066042 +0.8044243,45,994.9932,4.971361 +0.8797448,14,812.4009,4.326156 +0.5983747,64,350.2122,4.811645 +0.8931191,100,605.8303,5.813613 +0.7759804,25,990.4158,4.44877 +0.933721,48,125.8175,5.638129 +0.567207,39,158.5426,4.386867 +0.6834433,24,595.2227,4.201662 +0.5842774,83,144.4095,4.996242 +0.6096163,44,3.666158,5.442746 +0.5520212,33,788.1983,4.209405 +0.8487187,75,775.0258,5.461002 +0.6442834,59,384.4282,4.832377 +0.8525898,44,852.7334,5.101296 +0.6793526,5,544.8316,2.681385 +0.7896053,57,702.1907,5.106904 +0.6347688,37,207.1742,4.467327 +0.9105013,73,298.8515,5.713738 +0.5801921,61,194.1294,4.753626 +0.5398654,14,623.2005,3.435302 +0.5295864,36,825.9626,4.241144 +0.6955647,90,532.2933,5.227428 +0.8752002,7,34.37197,3.840195 +0.5065717,86,99.36485,4.895701 +0.6540707,91,816.5146,5.153864 +0.7494457,27,333.2309,4.455773 +0.6942405,34,378.8255,4.510573 +0.6192505,85,514.0551,5.049568 +0.76549,25,642.7535,4.425212 +0.7574782,64,469.1908,5.118944 +0.5830214,21,552.903,3.886642 +0.8790609,79,159.6307,5.674371 +0.7176675,58,884.7081,4.953248 +0.6629143,8,245.0644,3.154845 +0.8564256,41,392.7764,5.078983 +0.5191748,37,388.5444,4.248730 +0.5063773,82,608.4596,4.838639 +0.6187086,74,342.2091,4.954258 +0.9265214,49,19.84399,6.272573 +0.7227158,30,941.4727,4.464846 +0.5720824,44,88.08165,4.508306 +0.7417212,36,856.798,4.650463 +0.6945709,16,973.5857,3.877503 +0.6787784,67,199.1884,5.00703 +0.6079792,2,14.28654,1.248295 +0.8160534,87,902.7546,5.464555 +0.903873,43,596.1851,5.293944 +0.726878,20,652.6108,4.146919 +0.6090511,26,822.7786,4.116546 +0.7854577,6,632.6326,3.188597 +0.6051804,75,622.2571,4.933685 +0.7918214,37,643.5305,4.797766 +0.5232566,75,325.5463,4.80398 +0.590876,66,73.06404,4.867022 +0.5937229,27,42.58453,4.187347 +0.8824875,45,931.0037,5.224986 +0.7059692,52,659.4332,4.851961 +0.6663572,11,289.1740,3.476953 +0.6661134,75,418.1281,5.046652 +0.810046,78,319.3538,5.398473 +0.5153034,94,370.1154,4.955019 +0.6629067,75,76.91591,5.107002 +0.7524684,35,669.101,4.656308 +0.8711363,64,313.9587,5.454808 +0.6956076,29,55.13885,4.465562 +0.7708426,83,192.2650,5.363472 +0.5723024,29,745.2273,4.139486 +0.9359758,76,180.2033,5.927152 +0.937121,95,945.2132,5.988315 +0.7236621,84,584.52,5.233591 +0.5644985,54,327.6738,4.625826 +0.830407,38,621.8328,4.928221 +0.7119581,31,183.4619,4.492153 +0.77285,82,784.9956,5.319325 +0.8722319,85,500.9015,5.633511 +0.6801105,92,42.34472,5.362335 +0.7211597,80,755.886,5.191064 +0.7343016,17,662.3988,4.026676 +0.6084402,33,173.8741,4.327899 +0.6186405,40,577.6662,4.484631 +0.703274,15,875.0299,3.841051 +0.9385632,22,803.663,5.007829 +0.5536499,6,140.929,2.596166 +0.5189601,36,365.0004,4.226444 +0.7964722,33,112.4292,4.783128 +0.8923196,89,282.4267,5.766261 +0.8477578,57,813.3298,5.268937 +0.7376255,52,39.59667,5.092456 +0.586504,72,325.709,4.879086 +0.9245973,96,220.5104,5.990943 +0.5904537,70,650.9535,4.858109 +0.6962348,91,53.84608,5.360867 +0.6472336,86,286.8350,5.116716 +0.5478403,45,891.3937,4.449943 +0.5916281,49,112.7873,4.621543 +0.9236192,10,256.5085,4.30158 +0.701771,76,931.1325,5.114423 +0.6455423,9,114.6123,3.244296 +0.629923,96,926.7514,5.148559 +0.9445545,39,672.0967,5.463624 +0.6736415,85,449.6175,5.148535 +0.6858955,81,783.2148,5.130515 +0.566487,9,551.4185,3.054829 +0.9085593,35,254.0737,5.200862 +0.6143065,90,329.5405,5.087921 +0.6999386,19,490.2705,4.043115 +0.6395809,8,600.4834,3.094362 +0.9093209,36,853.3224,5.188147 +0.894677,100,848.318,5.811673 +0.6063929,85,898.3364,5.023168 +0.6523595,50,416.7666,4.722509 +0.942245,14,171.8807,4.742298 +0.783326,95,113.6980,5.527098 +0.752282,7,408.8336,3.248984 +0.7136485,15,471.0845,3.869695 +0.6320827,32,848.5555,4.330415 +0.59958,93,236.7872,5.092203 +0.7906985,82,470.0474,5.37129 +0.7225906,97,847.8583,5.325918 +0.5733982,37,779.5725,4.339675 +0.9068659,11,322.7737,4.273226 +0.9381555,37,206.4804,5.433981 +0.534364,36,896.7656,4.249114 +0.6322029,54,652.9157,4.738431 +0.5673037,32,607.234,4.212482 +0.5158305,29,241.0641,4.044624 +0.782321,41,343.6444,4.861221 +0.8978933,55,113.9618,5.540612 +0.7566181,71,803.6087,5.182157 +0.945313,93,760.1445,6.035159 +0.7764446,66,690.4359,5.178624 +0.5382854,44,937.8568,4.415998 +0.780881,21,808.7842,4.322801 +0.7872955,43,753.639,4.895828 +0.8437686,53,714.1587,5.207365 +0.6116142,97,820.0253,5.125958 +0.531347,2,33.00914,1.036805 +0.7165558,8,633.2616,3.283039 +0.705623,19,384.8555,4.058654 +0.8560466,41,376.2472,5.078905 +0.6344361,85,632.7684,5.073645 +0.5901747,22,282.6403,3.945618 +0.56803,53,73.53232,4.653907 +0.8146113,27,671.1104,4.620696 +0.9163909,73,747.9496,5.708432 +0.6061526,14,542.7819,3.568411 +0.9093413,95,335.4416,5.875304 +0.6494762,46,759.3723,4.647989 +0.5640401,44,632.509,4.461494 +0.5354444,34,836.2228,4.204653 +0.5299268,77,846.4679,4.828092 +0.741827,22,130.2941,4.296245 +0.5115407,87,295.344,4.894967 +0.5978896,76,131.5230,4.959506 +0.8912814,18,205.5997,4.616479 +0.5576322,43,383.5691,4.435671 +0.8717212,40,583.6276,5.107255 +0.9161417,8,499.1547,4.040285 +0.6521386,11,822.9779,3.438228 +0.7737015,17,762.6271,4.127920 +0.892949,87,399.3925,5.736645 +0.5966038,55,689.611,4.688806 +0.6431161,52,447.0586,4.733828 +0.8306688,44,702.1389,5.034286 +0.6649262,57,359.9672,4.846758 +0.9363835,85,887.7069,5.914833 +0.7510024,81,339.8045,5.277932 +0.7902674,15,705.98,4.068516 +0.7636627,56,448.0598,5.038424 +0.8669564,5,680.0533,3.31205 +0.8059546,75,503.0968,5.3473 +0.6403063,92,962.566,5.136234 +0.504068,3,617.9877,1.598052 +0.9186635,36,724.4784,5.240142 +0.5795384,56,545.9165,4.67465 +0.8195587,78,414.402,5.416073 +0.7491724,3,281.5133,2.251189 +0.7093393,13,665.9633,3.728246 +0.9406897,81,43.65671,6.348394 +0.8862442,15,820.4643,4.412285 +0.9183536,71,279.5010,5.739535 +0.7329661,45,293.7233,4.8157 +0.9149706,82,822.9326,5.774923 +0.6399313,75,173.1958,5.018545 +0.631958,78,704.475,5.007022 +0.9347626,82,427.1829,5.906078 +0.9193079,36,111.4287,5.350532 +0.7909542,49,249.1747,5.025715 +0.7143558,60,471.2938,4.978527 +0.929284,32,846.1144,5.216052 +0.8400567,98,342.8071,5.636219 +0.5706936,59,468.7645,4.700182 +0.6783719,48,140.5919,4.769985 +0.7694423,73,842.9439,5.230134 +0.5215988,17,298.5005,3.584042 +0.7042262,23,46.45078,4.306447 +0.6135268,61,104.5767,4.834267 +0.852132,17,683.1779,4.376271 +0.6286326,72,801.0265,4.94254 +0.9114498,70,413.9069,5.674662 +0.505581,30,934.0287,4.048985 +0.619673,54,249.2989,4.727874 +0.9039804,73,662.0442,5.652103 +0.9322274,75,826.7649,5.810783 +0.591522,17,550.8919,3.716205 +0.5615105,9,563.2861,3.044287 +0.8861427,77,612.0575,5.614371 +0.9227275,36,804.7779,5.261032 +0.5201386,6,563.5901,2.516629 +0.5150667,4,153.7693,2.017103 +0.858887,88,335.1279,5.625131 +0.865161,91,507.115,5.653645 +0.866841,28,569.142,4.826175 +0.5914268,73,731.0933,4.889649 +0.7301672,3,171.8421,2.193633 +0.8695504,46,972.9767,5.190517 +0.8743281,94,423.1992,5.713268 +0.7259997,71,57.63515,5.243207 +0.8552598,42,51.79937,5.275407 +0.7262848,91,622.4001,5.293459 +0.5421301,43,124.8007,4.423924 +0.764653,64,923.3807,5.125733 +0.8748403,73,247.373,5.571079 +0.7803132,31,380.4862,4.640732 +0.6482601,87,772.2889,5.112482 +0.7241264,43,272.1837,4.76339 +0.7953848,44,365.2316,4.946676 +0.6285879,91,448.7414,5.11578 +0.6652861,50,710.149,4.741542 +0.6856344,64,916.419,4.960469 +0.7254825,75,709.546,5.155371 +0.6569148,90,891.1667,5.150444 +0.9032712,56,578.0589,5.474436 +0.8196123,55,916.5202,5.158029 +0.8457452,68,948.5464,5.382074 +0.7056631,3,931.2039,2.112567 +0.8282234,89,748.6638,5.515993 +0.87756,69,756.8942,5.503454 +0.5580487,53,79.27887,4.631497 +0.8726777,84,865.3341,5.614437 +0.6403862,31,668.2423,4.322197 +0.8492341,73,141.7500,5.519904 +0.5361932,8,651.2265,2.867713 +0.7613272,82,428.129,5.303809 +0.8569944,82,709.8302,5.548995 +0.8017937,16,509.0666,4.161160 +0.6910281,42,458.1705,4.665068 +0.9100806,53,834.6907,5.461124 +0.8269713,11,110.7436,3.955719 +0.7171317,89,540.2364,5.261772 +0.851661,82,487.6866,5.540841 +0.7891677,30,331.5015,4.642001 +0.734028,16,122.0367,4.004476 +0.5187802,87,429.9464,4.903341 +0.5150383,16,718.979,3.512412 +0.785768,69,194.4107,5.270155 +0.8033854,47,199.0244,5.038606 +0.830575,35,729.6996,4.865471 +0.8736411,70,28.33166,5.956989 +0.8876228,62,56.37586,5.704145 +0.7772246,81,880.699,5.319602 +0.8581031,86,744.6876,5.583367 +0.7385866,56,814.1746,4.972997 +0.7709235,35,958.7655,4.697881 +0.7025145,38,608.5902,4.608887 +0.6822772,59,741.9122,4.896537 +0.7546338,39,377.0911,4.752481 +0.7098272,6,688.9395,2.965107 +0.8007708,68,664.4748,5.260526 +0.5081478,97,957.1152,4.961489 +0.8871281,80,610.9077,5.64364 +0.83781,29,404.5329,4.756917 +0.8565457,33,929.6463,4.904385 +0.7858467,76,614.8492,5.301542 +0.7393295,48,304.2518,4.877567 +0.6288801,56,575.7861,4.760722 +0.5747567,36,525.0601,4.322172 +0.7241387,4,744.9875,2.540414 +0.5838607,84,98.96394,5.017925 +0.9088057,30,939.4672,5.053044 +0.8893571,65,764.4263,5.508868 +0.7718164,92,629.6235,5.398965 +0.7592003,69,639.9231,5.170893 +0.5349374,43,16.79663,4.529065 +0.8402495,32,594.5056,4.832209 +0.5243549,21,561.1883,3.776770 +0.7070809,73,203.5126,5.126286 +0.7444766,45,996.601,4.823829 +0.9452716,51,968.5641,5.64201 +0.8834646,43,410.5079,5.214212 +0.5125273,8,554.2188,2.818634 +0.7855098,34,142.7244,4.760065 +0.857309,8,134.2902,3.76904 +0.850575,12,800.5671,4.075296 +0.7062366,30,828.565,4.429344 +0.5672662,6,703.8213,2.619697 +0.6565083,83,495.8813,5.098745 +0.7695762,23,429.8266,4.373533 +0.8751504,83,411.2986,5.634882 +0.660651,31,384.3733,4.367338 +0.6552163,71,410.1236,4.987248 +0.5242741,35,810.4681,4.209141 +0.5429164,41,657.2765,4.369296 +0.5608511,52,487.3664,4.58715 +0.8849192,18,747.3227,4.554355 +0.6341058,77,491.0945,5.00518 +0.5528817,5,483.2663,2.376328 +0.7755186,45,909.177,4.897701 +0.7080204,18,922.128,4.011066 +0.5753103,67,379.1132,4.80507 +0.8938414,45,276.1014,5.306521 +0.9153011,100,561.4111,5.914729 +0.9400833,71,244.9699,5.881615 +0.5751929,57,696.4602,4.679055 +0.8627746,66,751.1318,5.420788 +0.7402069,86,120.3373,5.34467 +0.6009191,52,934.1773,4.652193 +0.5917567,18,435.2733,3.769131 +0.7928228,18,282.6634,4.243414 +0.7406228,67,601.0171,5.109815 +0.949789,27,680.853,5.248154 +0.7617935,81,297.537,5.306533 +0.8564567,77,376.8077,5.522382 +0.6577059,74,182.6144,5.040919 +0.9413392,90,90.77082,6.190444 +0.7485857,60,824.7695,5.044612 +0.8942623,86,116.7217,5.83402 +0.6324165,69,534.8945,4.921818 +0.8736767,78,480.7874,5.582686 +0.809562,7,161.7137,3.445533 +0.655178,80,209.5545,5.087967 +0.8126558,75,553.6373,5.363033 +0.587771,54,741.3041,4.659252 +0.7304708,43,140.2912,4.801626 +0.6784025,99,485.646,5.262685 +0.8679588,83,685.2886,5.594575 +0.8094056,2,901.409,1.852349 +0.6667788,32,766.4673,4.398906 +0.9003594,34,264.8389,5.13664 +0.5131864,4,594.7674,2.009264 +0.5324579,58,79.92974,4.652622 +0.6300037,79,10.07310,5.450494 +0.6228218,30,902.6635,4.260279 +0.513834,87,502.2924,4.89453 +0.7645673,2,991.632,1.678955 +0.936889,47,418.9952,5.551662 +0.8618376,87,241.7598,5.644262 +0.9409066,51,286.3327,5.654553 +0.8910533,13,177.1792,4.35247 +0.7814179,48,452.7033,4.969485 +0.7402419,49,378.8289,4.890003 +0.7814724,91,598.634,5.41494 +0.5207353,33,137.6379,4.16805 +0.8606041,76,509.892,5.517765 +0.8672457,46,857.1114,5.183842 +0.8916283,3,191.1671,2.867489 +0.9291234,61,362.7399,5.68471 +0.6128671,21,493.3128,3.945307 +0.9130023,44,433.433,5.364272 +0.5526918,40,501.2452,4.367895 +0.7100667,58,626.435,4.941089 +0.9485433,61,902.1765,5.78576 +0.7375008,100,552.7585,5.383109 +0.8843444,69,535.1516,5.537504 +0.7355137,24,294.9474,4.32874 +0.5849977,63,918.668,4.769115 +0.8148579,32,288.1865,4.769015 +0.6047379,95,20.06207,5.315901 +0.9387293,65,47.6271,6.128658 +0.6730278,29,226.6681,4.347534 +0.8536057,86,299.622,5.597219 +0.7039593,5,717.411,2.746449 +0.554576,51,501.231,4.561373 +0.5985519,33,49.17765,4.357975 +0.6332506,60,222.0821,4.834659 +0.5311171,3,505.9751,1.661199 +0.6073137,63,391.6986,4.814172 +0.6546051,47,328.4854,4.683347 +0.8600348,35,942.1334,4.959945 +0.6736388,16,170.3470,3.848083 +0.5197377,42,528.5444,4.350034 +0.5483864,2,8.982135,1.112816 +0.8866457,91,968.5747,5.716457 +0.9170833,95,720.5013,5.883273 +0.7270387,21,628.9166,4.188418 +0.812512,16,938.998,4.188589 +0.8316781,20,444.9295,4.442617 +0.9298217,20,866.0785,4.874826 +0.6134887,60,964.2135,4.78133 +0.7366226,7,319.7519,3.206178 +0.8077966,41,974.1164,4.9127 +0.6130327,56,385.8269,4.736513 +0.6378037,37,850.088,4.456746 +0.7848023,55,823.8128,5.067312 +0.936098,52,897.3047,5.592718 +0.5120613,27,467.5221,3.973342 +0.9193753,5,709.4038,3.609307 +0.8621582,83,262.4155,5.608882 +0.5685211,52,168.9039,4.614078 +0.6970322,80,225.7021,5.167406 +0.8347935,100,76.00698,5.769876 +0.8225406,8,344.3646,3.609568 +0.6941333,43,435.8167,4.690098 +0.7356296,30,710.7536,4.496393 +0.8811275,6,103.0200,3.609537 +0.6109929,48,400.577,4.615333 +0.596709,60,363.4187,4.760152 +0.6572946,5,962.1019,2.623233 +0.6103808,55,631.1443,4.713493 +0.668965,96,892.3117,5.21696 +0.7999518,32,495.2423,4.713714 +0.8338344,48,908.905,5.102972 +0.8567186,7,846.6076,3.605534 +0.7154963,95,187.0719,5.334038 +0.7108011,96,628.3475,5.29923 +0.6893275,25,734.6108,4.246437 +0.5740601,11,364.6629,3.273750 +0.8039917,73,244.864,5.346882 +0.8573021,48,634.51,5.183936 +0.8183101,23,760.4014,4.504651 +0.8641757,94,978.3002,5.657207 +0.6303905,70,604.3785,4.927486 +0.8699731,79,863.8185,5.564262 +0.915676,8,143.355,4.073357 +0.601142,35,441.2769,4.348688 +0.87388,28,333.7200,4.866511 +0.9196098,2,325.7931,2.48037 +0.7254358,13,522.0907,3.769571 +0.9131236,70,356.7704,5.689551 +0.7061301,40,507.9874,4.657943 +0.916107,7,935.9404,3.911256 +0.6185521,24,139.8068,4.088015 +0.6262447,20,876.2364,3.926877 +0.6291963,78,148.0490,5.032363 +0.632995,91,192.7662,5.141416 +0.5512401,96,922.5635,5.020761 +0.8395904,21,948.335,4.49903 +0.7737163,35,381.1151,4.717049 +0.5824825,67,367.2437,4.817619 +0.5647798,46,202.662,4.508791 +0.8834567,23,404.0992,4.750842 +0.5374452,15,541.5736,3.495868 +0.879485,45,87.82374,5.342633 +0.7248722,19,681.9091,4.098538 +0.911358,10,43.89693,4.374565 +0.7451762,77,521.6592,5.220066 +0.723452,87,31.2523,5.495526 +0.7343267,78,979.8097,5.197778 +0.8797457,62,689.5224,5.441123 +0.9355938,9,8.536315,5.395588 +0.8081898,70,899.6859,5.295606 +0.779309,60,532.5658,5.122267 +0.9343759,90,800.8648,5.941199 +0.9125067,53,544.4229,5.483064 +0.7631274,89,498.3332,5.361002 +0.7271626,57,193.7866,4.991599 +0.5656534,45,542.3173,4.482748 +0.7439162,33,548.8423,4.592949 +0.6730048,71,419.1757,5.0202 +0.8488092,75,929.485,5.458401 +0.7990472,58,914.4833,5.140082 +0.7150551,60,300.436,4.989065 +0.7738144,47,841.0965,4.926207 +0.8007912,20,803.401,4.339192 +0.551277,78,16.59874,5.049359 +0.8536064,53,5.278028,7.26772 +0.6086101,22,656.6184,3.975391 +0.7950185,92,725.3911,5.451677 +0.7759385,24,724.6639,4.418522 +0.7436127,80,136.5426,5.292482 +0.7023383,78,583.6222,5.138942 +0.7387789,13,893.3477,3.800216 +0.5355073,87,367.4723,4.931304 +0.5799598,32,907.9728,4.233542 +0.7931919,23,580.6845,4.433776 +0.9020383,59,611.7858,5.502789 +0.8865545,52,26.28821,5.827225 +0.9361958,74,762.0372,5.828598 +0.582067,75,54.81664,4.963057 +0.8257129,4,567.6277,2.886287 +0.8633863,3,134.8775,2.717133 +0.7562748,93,860.8626,5.367093 +0.5468247,52,13.37389,4.752502 +0.5236045,76,758.5776,4.808922 +0.8087347,55,532.2803,5.136258 +0.7106333,92,111.2063,5.331034 +0.814428,41,509.0671,4.940242 +0.9088012,9,841.348,4.094842 +0.8740427,76,824.9096,5.553729 +0.8074883,69,252.8868,5.315484 +0.7213603,5,948.5723,2.794196 +0.6841834,28,313.8684,4.336824 +0.8791684,31,739.6711,4.946414 +0.8447433,53,223.9424,5.246248 +0.6077613,19,337.0328,3.850726 +0.6291898,19,882.2599,3.8882 +0.5982278,57,129.2187,4.745759 +0.8181028,71,778.5106,5.334016 +0.9189918,46,312.8849,5.440689 +0.6311825,5,906.8284,2.558528 +0.6925712,35,572.9342,4.524774 +0.7704907,37,621.4804,4.743354 +0.9046787,92,802.2702,5.801703 +0.6019258,60,991.2124,4.76121 +0.5629309,51,344.3215,4.578758 +0.8558432,38,589.3368,5.012244 +0.819681,32,977.2155,4.762014 +0.8277987,87,394.2501,5.51517 +0.5027483,24,314.9769,3.857077 +0.8158908,45,652.2671,5.008327 +0.8676783,82,104.2660,5.703369 +0.8946515,67,165.1998,5.624106 +0.8481332,95,468.5812,5.62917 +0.9427243,60,768.3167,5.735723 +0.8323833,26,398,4.655196 +0.8430963,33,469.1627,4.869046 +0.7642166,66,682.7124,5.150084 +0.8620012,43,557.2209,5.12448 +0.8747079,70,562.6493,5.509243 +0.6204153,14,15.61338,3.757389 +0.8136883,92,594.1941,5.503064 +0.7890769,21,960.2178,4.34413 +0.6135467,97,95.7961,5.179695 +0.6646005,79,102.7502,5.128727 +0.7282539,70,201.1261,5.142028 +0.6060018,16,13.12709,3.877434 +0.6576292,18,846.5295,3.900090 +0.9218128,19,225.0802,4.822128 +0.6956397,58,828.7143,4.909221 +0.5778678,53,305.8120,4.63554 +0.7409067,99,574.9399,5.382695 +0.6894707,35,474.0742,4.520339 +0.8547311,29,9.140069,5.801376 +0.9443449,36,740.9564,5.40459 +0.5030257,16,327.6132,3.492181 +0.7115186,14,705.3257,3.800159 +0.9499585,45,305.1216,5.635737 +0.6742548,79,184.8126,5.119984 +0.7671734,3,113.5515,2.320534 +0.743683,74,902.1817,5.181569 +0.9003837,6,700.1,3.670878 +0.818022,38,669.9273,4.890023 +0.5886032,2,378.721,1.162975 +0.804402,77,237.4354,5.38663 +0.6920335,58,268.8176,4.919222 +0.5761434,69,242.3807,4.834436 +0.7279316,32,213.1663,4.549817 +0.7118987,38,408.9461,4.633905 +0.7176286,33,133.8739,4.566852 +0.638278,76,13.88720,5.337516 +0.8056624,79,618.3595,5.377935 +0.9184175,52,114.7676,5.609458 +0.8495399,67,528.1128,5.39474 +0.9345234,11,795.6603,4.436122 +0.9183741,71,595.8968,5.706353 +0.6894078,63,32.08419,5.14501 +0.6199956,7,947.1682,2.907827 +0.7804436,39,746.3122,4.805868 +0.5348798,22,555.1823,3.837054 +0.770588,24,148.8212,4.438917 +0.5758073,32,768.8216,4.226697 +0.7512398,43,850.633,4.806761 +0.8007302,93,127.8680,5.548864 +0.9014866,25,678.9343,4.886736 +0.6555334,6,378.8423,2.827782 +0.9277143,52,953.2782,5.53991 +0.5545398,24,816.5394,3.947181 +0.781483,46,164.8824,4.971961 +0.5651579,54,238.7493,4.631017 +0.8015807,37,983.0817,4.819457 +0.6465967,100,23.79223,5.43803 +0.7298902,6,404.3406,3.022995 +0.5268403,15,595.9964,3.475157 +0.8249902,50,417.7287,5.119674 +0.7174687,44,28.92964,4.958069 +0.9220132,47,837.619,5.44125 +0.9163917,42,184.3981,5.395217 +0.6503536,32,85.93141,4.412043 +0.910666,8,312.4043,4.01467 +0.7578302,34,394.5199,4.654374 +0.7812384,5,798.26,2.977237 +0.5178476,35,456.0489,4.200271 +0.6632408,88,229.8003,5.168476 +0.8390662,31,835.2151,4.799856 +0.9352528,27,898.2456,5.132372 +0.8057271,58,350.117,5.176067 +0.610425,86,72.80154,5.102728 +0.9204428,22,964.564,4.886985 +0.8329993,95,981.9353,5.568629 +0.6198768,92,169.4371,5.129408 +0.6226202,84,898.3718,5.042082 +0.6418981,84,542.0965,5.079978 +0.6675953,95,291.8509,5.22411 +0.9360013,66,551.7465,5.762516 +0.8745606,88,678.362,5.656737 +0.5279922,5,832.993,2.319646 +0.818075,79,469.9906,5.417217 +0.8262758,2,645.9986,1.925928 +0.5706311,21,503.1586,3.863504 +0.7682838,39,861.4102,4.774088 +0.7245813,33,359.1662,4.55453 +0.6995345,46,293.3065,4.759532 +0.8709355,57,922.7088,5.345742 +0.8373729,60,504.0928,5.281386 +0.7081338,75,289.2888,5.136525 +0.7901496,5,5.439199,3.588918 +0.5290842,81,696.4208,4.864699 +0.7137549,27,77.53818,4.424457 +0.5482691,44,15.99154,4.590674 +0.8808748,18,22.94479,4.911921 +0.8147249,77,293.5421,5.405631 +0.6046856,2,878.4859,1.202698 +0.5329508,13,63.85672,3.373561 +0.6332334,22,704.2761,4.023677 +0.546437,8,890.3324,2.888729 +0.6326386,5,754.358,2.562415 +0.8817755,44,278.2696,5.238411 +0.8368096,19,138.9115,4.455741 +0.5355686,91,204.9948,4.971374 +0.7235912,8,344.4877,3.305657 +0.5048621,34,346.1112,4.155419 +0.5931924,60,160.0218,4.76904 +0.5299145,31,594.7286,4.120086 +0.6017189,87,369.6473,5.04039 +0.7418517,50,5.327944,6.087411 +0.8483486,64,305.071,5.376896 +0.6756182,4,862.6502,2.403836 +0.7777819,49,430.4768,4.976453 +0.9113989,60,362.3921,5.576478 +0.7407845,99,928.5576,5.375836 +0.7685601,49,344.4184,4.958712 +0.7725601,96,578.2455,5.4311 +0.6653655,50,945.6597,4.739644 +0.9468507,13,816.8829,4.670724 +0.5251872,29,804.5675,4.055112 +0.56988,7,438.1736,2.797492 +0.8973808,60,30.05556,5.950758 +0.9487586,11,261.4730,4.580859 +0.6696307,82,650.6464,5.110804 +0.8888442,27,907.014,4.881785 +0.7401928,22,558.9628,4.25965 +0.6110303,38,401.6077,4.433361 +0.7925204,16,439.8231,4.135301 +0.702094,9,504.9842,3.36415 +0.853108,33,35.07958,5.163423 +0.9353926,67,223.8085,5.818331 +0.6520575,24,758.8386,4.134634 +0.66278,81,118.4723,5.135034 +0.7340894,39,501.0299,4.699954 +0.8870821,53,874.5811,5.358251 +0.8916662,94,154.8354,5.848344 +0.83859,33,798.9093,4.845743 +0.9192628,35,969.539,5.218617 +0.8449602,89,174.3100,5.625377 +0.8755261,67,784.9093,5.475399 +0.7064768,8,992.3402,3.255223 +0.6243083,58,371.844,4.783567 +0.5539676,95,17.05929,5.202136 +0.6063726,90,191.1312,5.085874 +0.8869105,35,510.8736,5.074511 +0.8790183,42,885.0375,5.163212 +0.5933805,60,296.2700,4.75707 +0.6551459,30,24.56066,4.487992 +0.5723375,37,274.4002,4.345513 +0.6443248,33,836.795,4.378666 +0.735258,17,324.4626,4.036611 +0.8457457,86,740.4636,5.544534 +0.8943911,5,851.5544,3.451821 +0.838857,4,107.2173,2.963602 +0.856727,20,491.6441,4.529308 +0.6224996,72,30.61014,5.081849 +0.7584831,7,374.16,3.267944 +0.747176,10,637.9571,3.582344 +0.7691169,10,641.088,3.643957 +0.6950572,2,274.5504,1.453546 +0.6725931,29,665.696,4.332746 +0.7588209,56,4.689692,6.509686 +0.9223835,6,761.912,3.809601 +0.7851749,45,443.8975,4.932058 +0.7397743,40,2.279709,7.45333 +0.522246,20,346.4404,3.731591 +0.5984001,75,200.1283,4.938596 +0.8460583,10,705.9169,3.897459 +0.6427525,41,106.1142,4.585355 +0.8209742,37,392.5236,4.888823 +0.925232,81,785.0064,5.821471 +0.5509883,15,578.9168,3.521915 +0.7231179,48,606.5707,4.829564 +0.7479964,56,978.1678,4.992034 +0.8560428,89,172.6031,5.663342 +0.7445964,19,934.2746,4.14458 +0.8146255,5,297.5732,3.100598 +0.8801215,12,414.1117,4.206742 +0.5379769,19,896.2387,3.711643 +0.5590387,7,148.3427,2.779745 +0.7562362,2,126.4085,1.656177 +0.8628862,83,9.887536,6.832619 +0.6339987,49,957.1054,4.665933 +0.7959348,43,970.3764,4.915685 +0.9469303,27,894.7433,5.219109 +0.7474149,36,128.4815,4.709715 +0.6833293,17,967.5529,3.905373 +0.8428125,89,603.4397,5.562762 +0.9246594,88,878.4903,5.868944 +0.6135251,98,186.0699,5.160008 +0.5697204,97,4.151751,5.806717 +0.8312094,82,169.7990,5.527478 +0.910185,87,105.4579,5.936619 +0.693803,31,27.54992,4.604856 +0.8607749,20,951.5826,4.536226 +0.5555341,42,660.3545,4.410026 +0.7611825,68,533.4381,5.168059 +0.6107306,70,323.2711,4.90054 +0.6746679,35,374.4120,4.492795 +0.9177906,75,313.8561,5.766134 +0.7678125,96,441.6935,5.426057 +0.9169907,14,736.4204,4.517798 +0.7433266,56,989.043,4.9816 +0.9015917,98,391.5603,5.852269 +0.7285088,100,452.3493,5.368393 +0.5379222,32,316.8145,4.164098 +0.7352325,49,251.5620,4.888791 +0.8506556,14,172.2805,4.239404 +0.7878528,86,47.18904,5.595067 +0.7940741,14,709.88,4.020078 +0.6541361,31,382.5369,4.354275 +0.8305676,56,384.7685,5.21937 +0.899311,87,765.7054,5.743174 +0.669143,21,357.551,4.063729 +0.6986659,4,783.4702,2.467174 +0.8068675,98,264.7227,5.553613 +0.7591054,85,289.1455,5.33484 +0.7327918,54,51.85563,5.067093 +0.6006468,11,304.5714,3.330731 +0.7975916,41,464.2589,4.895099 +0.8373671,65,922.02,5.325994 +0.797545,27,324.2303,4.583439 +0.7110869,22,140.0273,4.217343 +0.6424185,65,367.1264,4.901086 +0.5556619,47,305.7816,4.504104 +0.772002,48,528.8508,4.943287 +0.6721145,5,79.38062,2.681564 +0.7806843,10,434.8125,3.681225 +0.6894094,28,566.1086,4.34089 +0.733033,7,71.62944,3.227396 +0.648652,51,326.0771,4.734045 +0.5223443,28,140.3916,4.032858 +0.6840796,52,532.834,4.810271 +0.5635255,5,600.5627,2.400079 +0.8416008,45,600.0655,5.087043 +0.799596,79,715.0368,5.359828 +0.8057718,12,815.9436,3.919591 +0.585966,58,812.5367,4.709579 +0.7304825,39,452.6062,4.693294 +0.7611653,14,301.6993,3.935817 +0.6647046,37,76.24282,4.567979 +0.6523098,91,841.6372,5.150504 +0.788072,2,838.2777,1.766685 +0.7445851,25,39.74841,4.50943 +0.7385261,53,652.0979,4.935246 +0.7808228,28,515.9685,4.557599 +0.888269,82,840.605,5.657258 +0.6899828,10,374.1941,3.439050 +0.6410592,61,875.8026,4.842899 +0.6451181,16,944.335,3.769109 +0.5841919,43,684.492,4.478166 +0.5010752,25,285.6268,3.890052 +0.8291245,8,368.9152,3.632677 +0.5235197,92,301.6914,4.954483 +0.7078635,85,642.3808,5.208843 +0.5116872,98,379.1896,4.979117 +0.6257265,10,875.562,3.286811 +0.6592452,35,250.9212,4.468037 +0.7221302,20,187.6121,4.154374 +0.7956171,54,451.887,5.091446 +0.6838694,20,473.7403,4.051287 +0.8295577,78,784.4418,5.430121 +0.9478423,68,488.6432,5.86968 +0.6691414,83,921.919,5.115242 +0.9224753,22,184.6860,4.951371 +0.8983257,48,267.843,5.374096 +0.8998352,79,766.9935,5.682365 +0.7091498,33,343.9942,4.520809 +0.6004464,14,410.7908,3.558120 +0.9099504,95,636.2874,5.852287 +0.7956578,56,548.764,5.113729 +0.7704919,32,462.0465,4.636439 +0.5645864,39,905.9903,4.36564 +0.77087,22,454.319,4.339972 +0.7042887,51,355.528,4.843002 +0.8015738,14,377.1564,4.049835 +0.8583845,39,860.9546,5.034111 +0.9179805,65,763.6357,5.639616 +0.7802,38,746.6791,4.785765 +0.7479871,15,385.239,3.957906 +0.7396997,41,142.9188,4.786167 +0.8558819,21,49.9631,4.717325 +0.7794685,8,6.951015,4.020868 +0.7423384,76,914.6567,5.197205 +0.8278342,88,835.197,5.50552 +0.7116068,57,448.2181,4.936231 +0.8406779,65,790.6183,5.338226 +0.602327,41,504.0098,4.475247 +0.8409111,57,538.369,5.254911 +0.8656233,44,69.18179,5.301835 +0.5141587,85,791.0469,4.875926 +0.5417386,7,141.6497,2.742201 +0.5982695,23,414.601,3.996176 +0.514064,83,421.916,4.861692 +0.602719,48,560.3881,4.597395 +0.6230789,83,319.8326,5.045922 +0.5042455,25,173.947,3.899675 +0.8705254,16,459.7512,4.404386 +0.6383081,73,827.3477,4.969256 +0.7887536,13,621.2912,3.940368 +0.5171924,95,261.1531,4.96909 +0.6338395,21,712.4886,3.985088 +0.886364,31,489.4844,4.984223 +0.6076696,82,823.9758,5.000153 +0.5168341,19,858.6781,3.672510 +0.6961416,22,412.6158,4.160402 +0.801484,65,553.8453,5.234128 +0.7856216,69,112.5570,5.306969 +0.9263677,52,276.0557,5.574726 +0.7135692,32,209.0116,4.517289 +0.8410421,88,738.9076,5.545727 +0.8297371,93,990.6756,5.545205 +0.741467,22,177.8167,4.284039 +0.7635628,64,581.6729,5.129171 +0.5543599,13,124.4985,3.405149 +0.815754,80,445.7278,5.420853 +0.9187836,79,491.0139,5.784896 +0.6401774,26,569.7998,4.179082 +0.6696699,57,670.915,4.847928 +0.8378535,11,43.21189,4.078821 +0.559829,57,982.0274,4.651717 +0.7326061,3,730.2683,2.194841 +0.6143365,4,658.2037,2.246992 +0.9091326,58,130.0204,5.619253 +0.7299739,46,905.6522,4.808786 +0.9438849,65,51.04049,6.149484 +0.6383169,34,143.9447,4.415962 +0.6008252,38,863.7329,4.409409 +0.7914155,67,926.258,5.221909 +0.5824244,3,889.5783,1.783688 +0.5264587,92,418.4913,4.956136 +0.9393047,42,118.5326,5.591449 +0.8931902,37,63.91318,5.311936 +0.6691642,25,686.5356,4.204276 +0.655101,78,714.8446,5.047903 +0.9385995,37,316.4599,5.410553 +0.6542483,12,294.8234,3.531808 +0.7505392,67,863.9093,5.127012 +0.8010309,17,441.6191,4.211893 +0.5404961,36,29.51087,4.338949 +0.8481581,77,556.2782,5.483866 +0.8356528,31,908.498,4.787953 +0.8227231,52,216.2118,5.164859 +0.905388,97,83.37888,6.029684 +0.7548435,56,900.9445,5.008181 +0.6031258,10,727.9192,3.238254 +0.6346565,82,77.91511,5.112419 +0.766229,28,344.5748,4.52627 +0.5894321,72,904.7874,4.875008 +0.6093439,35,782.5465,4.36002 +0.7497125,68,993.3388,5.134286 +0.5022351,80,492.7455,4.815045 +0.7511856,74,421.0537,5.209693 +0.5176743,42,230.2803,4.352358 +0.7387836,54,3.121385,6.995114 +0.761282,21,475.0687,4.276069 +0.8406623,40,402.1961,5.007226 +0.882509,85,381.4973,5.681394 +0.9286038,79,467.4862,5.840803 +0.5992355,79,835.7454,4.959146 +0.890761,24,666.5893,4.805821 +0.7234082,33,730.644,4.543084 +0.5505608,19,213.1412,3.742900 +0.8660476,47,939.6582,5.193467 +0.940598,45,349.6406,5.555837 +0.6006444,93,572.2021,5.080988 +0.5091824,3,983.6616,1.609518 +0.5216768,85,920.905,4.887062 +0.7967704,68,721.9357,5.248968 +0.59216,27,542.8038,4.11822 +0.7599046,18,528.9801,4.142539 +0.8651707,43,113.2006,5.218027 +0.5924965,83,143.1471,5.011246 +0.6820487,51,444.4327,4.794115 +0.7621458,85,451.2133,5.329308 +0.7125131,58,478.2222,4.94979 +0.785969,56,85.08017,5.18163 +0.8220104,61,561.3661,5.245318 +0.690745,82,96.57742,5.21521 +0.9415946,30,858.3626,5.253486 +0.6013633,26,154.6332,4.119098 +0.7275541,9,771.9723,3.427606 +0.7001641,36,248.4740,4.576007 +0.9099395,46,101.5428,5.489313 +0.5301535,12,15.86398,3.358847 +0.7246674,48,676.6038,4.831669 +0.6494136,86,336.4217,5.117376 +0.9117588,55,622.8621,5.500896 +0.8806666,16,913.2533,4.438764 +0.7748915,95,491.9472,5.432733 +0.8041172,31,736.1958,4.695681 +0.5250454,34,398.9952,4.189739 +0.8903168,45,496.8165,5.269568 +0.7864003,98,133.7617,5.54255 +0.672163,88,317.5607,5.176894 +0.5214742,38,623.1296,4.272 +0.73013,3,664.3804,2.187303 +0.8370519,57,483.929,5.245438 +0.905355,22,937.9329,4.804942 +0.5186103,86,984.7663,4.890574 +0.6401834,92,341.8974,5.14821 +0.6548418,31,841.7306,4.349167 +0.9211253,56,37.49689,5.965554 +0.847424,59,751.2014,5.293101 +0.5670823,36,487.3625,4.308973 +0.7570442,69,619.3497,5.166504 +0.7855974,78,226.0553,5.348713 +0.8519632,30,497.0498,4.826449 +0.7275984,28,953.4355,4.421089 +0.6861582,97,713.1176,5.257759 +0.6299306,62,779.7347,4.835759 +0.9084661,52,577.6044,5.448431 +0.8757678,77,722.9621,5.571258 +0.7955783,5,476.438,3.028203 +0.5515631,30,159.7,4.143206 +0.6687658,48,181.5406,4.740979 +0.7556932,67,214.9520,5.170283 +0.7495992,45,738.3258,4.838205 +0.8802353,4,359.4933,3.139567 +0.6101071,37,124.4847,4.432152 +0.7072711,82,990.3553,5.178028 +0.6836548,28,264.0952,4.338638 +0.602489,95,388.3661,5.103602 +0.9298973,78,22.56973,6.608796 +0.7459731,22,161.8984,4.298588 +0.8078601,21,62.63728,4.502277 +0.746816,30,345.1936,4.532392 +0.7855065,12,843.9162,3.85735 +0.875513,94,267.9591,5.739195 +0.5442306,69,11.17396,5.006721 +0.699071,94,19.41204,5.605957 +0.7866223,48,680.867,4.975987 +0.5264621,48,13.63537,4.625036 +0.9174577,35,495.3558,5.222406 +0.8724126,62,914.5348,5.408832 +0.865643,65,408.7572,5.435482 +0.6987177,16,736.9757,3.888351 +0.9262,47,655.252,5.470375 +0.5707421,49,653.633,4.556472 +0.8033052,7,200.0670,3.419037 +0.607467,16,681.1006,3.692504 +0.9112384,40,313.9323,5.300553 +0.727744,87,338.0306,5.277563 +0.5696553,77,73.57855,4.940687 +0.5205544,28,161.0509,4.027688 +0.7081532,90,462.7116,5.254306 +0.7741767,14,205.8534,3.980006 +0.7166292,16,373.7093,3.936160 +0.5436275,6,821.2211,2.567207 +0.8027656,11,680.4826,3.833235 +0.8254717,83,922.7415,5.458177 +0.932488,58,866.6913,5.643221 +0.8418702,45,569.1373,5.088895 +0.689414,32,417.8379,4.451095 +0.7923089,93,146.7568,5.51455 +0.8078084,24,657.6303,4.508357 +0.8114387,36,717.209,4.829867 +0.6953754,45,165.5859,4.750391 +0.5427887,13,667.9623,3.370327 +0.6278709,87,742.4106,5.077376 +0.719019,47,575.633,4.805737 +0.8485726,22,182.7487,4.60427 +0.8952204,13,134.3489,4.388571 +0.5808132,14,174.6743,3.525328 +0.8973759,90,853.2268,5.754695 +0.6880474,54,500.3682,4.846951 +0.677843,39,845.5148,4.575613 +0.7658533,68,863.7593,5.171952 +0.938231,54,944.06,5.630914 +0.8791004,66,866.3697,5.476817 +0.8274844,59,926.6531,5.229684 +0.9470333,18,209.7032,4.969697 +0.6802575,29,3.550959,5.529664 +0.5066382,24,740.083,3.860899 +0.8874296,23,712.4559,4.757439 +0.8624187,68,610.8993,5.444066 +0.7703005,49,791.0794,4.948802 +0.8037844,67,242.3122,5.286526 +0.912851,95,88.46587,6.044068 +0.8034184,93,912.2758,5.47648 +0.6455281,86,2.359885,7.036967 +0.6580722,80,904.2982,5.069314 +0.8415494,70,145.7251,5.462051 +0.90707,53,996.3983,5.443663 +0.8247734,79,285.8116,5.452874 +0.7215811,8,61.89573,3.339986 +0.6220738,26,908.8918,4.141114 +0.6506316,97,846.5834,5.192115 +0.7313284,38,93.45492,4.731484 +0.8823698,27,966.4982,4.853321 +0.7490274,52,386.2727,4.953415 +0.6805436,33,651.8731,4.452449 +0.7764903,39,280.9689,4.81385 +0.9432227,84,752.5136,5.9566 +0.8667044,76,394.4018,5.546927 +0.5788225,14,258.0226,3.517233 +0.8875073,89,733.1099,5.710791 +0.5351773,44,262.4027,4.418358 +0.6488808,73,949.2446,4.987076 +0.9236432,13,125.3093,4.562865 +0.8962864,58,309.9517,5.489335 +0.7281808,13,587.0542,3.775624 +0.5180642,77,354.9852,4.814268 +0.6902971,2,939.4611,1.4374 +0.7647461,99,548.2068,5.435252 +0.5776067,30,913.6733,4.176379 +0.8657476,6,795.0982,3.493412 +0.897945,32,541.3933,5.056966 +0.6598413,5,171.2253,2.637734 +0.893147,56,292.6846,5.454062 +0.6640957,61,271.5816,4.900817 +0.8715021,23,764.0064,4.689651 +0.8385217,13,201.9563,4.123507 +0.7627245,32,714.4778,4.611452 +0.8619162,40,977.3098,5.063287 +0.9254046,89,777.3225,5.883097 +0.6706702,18,700.07,3.928967 +0.6348828,16,987.2555,3.747484 +0.6960192,27,182.7434,4.344458 +0.8773171,90,39.94803,6.032864 +0.5626677,16,956.1505,3.602819 +0.5537715,46,444.1438,4.48079 +0.6688064,80,897.1477,5.08883 +0.6897467,86,601.8464,5.182841 +0.871555,50,638.7892,5.263301 +0.5150773,31,193.1971,4.101366 +0.8863904,75,97.00325,5.72981 +0.7150527,26,488.4888,4.338653 +0.7805498,31,186.7901,4.661684 +0.6060921,49,36.88978,4.719998 +0.8752972,75,59.6561,5.772133 +0.5284842,20,752.361,3.740229 +0.911607,12,123.6005,4.417916 +0.912127,75,577.6007,5.711903 +0.6424525,21,968.2822,4.001205 +0.9467245,29,44.99821,5.59281 +0.6967225,72,493.199,5.073494 +0.926016,23,473.5198,4.967169 +0.9147218,44,564.3584,5.365337 +0.6036511,88,221.1464,5.061308 +0.6954212,98,549.93,5.285678 +0.6096702,33,74.86955,4.357886 +0.6447025,8,297.3146,3.109925 +0.5721982,13,116.7042,3.443134 +0.8261254,82,283.0360,5.482771 +0.6414976,75,908.1127,4.993686 +0.814776,62,968.177,5.22812 +0.7715264,30,209.3643,4.607552 +0.5268074,37,739.2855,4.258942 +0.8995444,14,970.326,4.418598 +0.6672158,22,380.9123,4.098374 +0.5621144,53,377.9919,4.605991 +0.6793161,41,81.38955,4.678239 +0.6916072,85,566.663,5.179 +0.5736763,66,941.3328,4.784641 +0.9219027,6,886.3211,3.805059 +0.5896647,7,858.1352,2.839533 +0.9074126,10,93.07447,4.253267 +0.66789,51,629.9087,4.762436 +0.877229,69,750.5044,5.502388 +0.9137808,60,799.3949,5.563941 +0.9041558,14,184.6966,4.481808 +0.7500885,43,328.5007,4.818373 +0.8837174,63,472.7422,5.47702 +0.7709719,40,827.9627,4.800039 +0.5613473,21,753.5284,3.844366 +0.8607043,71,90.77541,5.593585 +0.894365,26,912.2157,4.878227 +0.6289452,15,394.0313,3.681227 +0.6738608,51,931.1405,4.770833 +0.612593,9,844.2056,3.152861 +0.7328856,51,999.851,4.890585 +0.9286233,28,415.55,5.132799 +0.6607356,51,361.9293,4.755496 +0.6956952,58,683.2114,4.911127 +0.8438404,59,179.9122,5.332682 +0.5322143,85,18.54251,5.046697 +0.6755007,15,829.881,3.777777 +0.5618366,62,92.26922,4.753428 +0.5100895,36,103.1916,4.225376 +0.6867955,29,328.8595,4.370096 +0.6402259,56,200.4614,4.798722 +0.9200455,96,727.2613,5.904703 +0.7006108,77,978.7424,5.12098 +0.6415493,27,808.732,4.210867 +0.7054206,38,983.0683,4.611176 +0.8708127,17,924.364,4.445982 +0.6735938,90,59.16235,5.288341 +0.893749,31,274.5217,5.035676 +0.811464,78,482.6777,5.38987 +0.5329308,98,757.2869,5.007849 +0.7138424,36,177.7422,4.61582 +0.8361404,44,14.41229,5.711417 +0.8358981,58,234.4316,5.279698 +0.7662827,45,166.0394,4.91555 +0.5136097,15,968.2607,3.448866 +0.9202818,12,400.6707,4.422114 +0.901509,80,856.068,5.695603 +0.8459219,12,243.37,4.075717 +0.895828,99,675.6542,5.815219 +0.9483792,2,505.0198,2.758998 +0.6077581,78,46.8255,5.059373 +0.8990502,28,440.9378,4.968781 +0.7994523,58,128.8626,5.208285 +0.7051844,87,246.3544,5.240367 +0.609106,82,627.9874,5.004618 +0.7393058,16,102.7798,4.025542 +0.7529953,85,445.276,5.309107 +0.731806,33,628.1298,4.56342 +0.880604,33,539.6335,5.00397 +0.5836496,19,496.0396,3.800555 +0.8817114,24,71.55129,4.891774 +0.9257038,29,832.7737,5.123804 +0.5565546,17,825.7594,3.646683 +0.814996,90,970.7049,5.483541 +0.7525624,43,709.3263,4.811639 +0.5808193,57,768.9612,4.688041 +0.6070652,30,126.9498,4.254673 +0.6703728,62,509.1423,4.914036 +0.8503237,98,835.3743,5.642843 +0.8517253,48,19.13650,5.712755 +0.5168282,49,49.78515,4.508736 +0.832432,60,758.4743,5.258661 +0.8950984,34,458.0435,5.092172 +0.5167257,90,269.1065,4.928903 +0.8812985,45,501.8186,5.232066 +0.8884966,4,959.577,3.17786 +0.5751634,23,179.3001,3.960573 +0.9069385,42,747.0547,5.287428 +0.8875317,19,296.2533,4.628104 +0.596398,71,686.8049,4.87814 +0.918342,86,300.7095,5.86174 +0.8740808,85,72.80344,5.814391 +0.5438677,37,944.3981,4.287476 +0.7976671,40,476.4478,4.876465 +0.9018208,52,461.4554,5.423492 +0.7830676,65,791.2986,5.182023 +0.8163788,46,515.612,5.029737 +0.6272917,35,201.1602,4.408986 +0.5440327,17,510.8568,3.624252 +0.7540332,56,198.2257,5.039744 +0.9448444,91,142.8565,6.14086 +0.6085111,30,756.2686,4.234089 +0.8094153,21,564.3328,4.408084 +0.5010243,17,944.5477,3.541730 +0.9293139,46,666.201,5.473828 +0.6923277,12,741.6548,3.613324 +0.914651,100,317.0432,5.9377 +0.8499166,92,470.4283,5.613306 +0.5807449,11,980.1108,3.284324 +0.8983226,6,733.9231,3.658757 +0.8945144,72,158.2759,5.677252 +0.5103657,33,903.8698,4.136651 +0.534177,22,375.0012,3.83756 +0.6324964,8,567.16,3.07826 +0.613885,56,13.62238,5.01518 +0.851725,27,382.9489,4.751082 +0.8799537,49,153.7527,5.345505 +0.7592371,18,819.073,4.137142 +0.9212617,38,678.4613,5.294067 +0.5598017,78,26.99321,5.006114 +0.6814634,42,681.3903,4.641436 +0.8606673,20,783.8055,4.537746 +0.6084816,4,685.7197,2.232538 +0.6399375,45,593.7783,4.615192 +0.6103587,22,351.3694,3.983024 +0.9266782,92,14.14941,7.182278 +0.9188638,49,253.6643,5.495489 +0.687522,2,884.6993,1.429223 +0.5745827,58,144.1793,4.712286 +0.6408255,43,72.38769,4.638984 +0.5272403,12,389.2443,3.26381 +0.7431113,18,929.1973,4.095248 +0.5755574,58,755.1514,4.692339 +0.7362868,26,668.128,4.384603 +0.8476235,80,459.8383,5.513119 +0.531841,26,521.0744,3.976064 +0.8565164,12,373.0101,4.10788 +0.7162138,73,845.4122,5.115485 +0.6513347,73,279.6416,5.00723 +0.550517,93,804.8208,4.997617 +0.553736,7,449.5708,2.762216 +0.8000883,90,715.2746,5.449685 +0.7449889,41,357.5293,4.76865 +0.7050233,5,928.9357,2.748723 +0.811888,92,684.0569,5.49554 +0.5949598,39,782.7147,4.419858 +0.6980153,37,617.763,4.578678 +0.6513668,46,966.251,4.650048 +0.6346104,43,623.7619,4.569875 +0.6049259,50,348.3189,4.637309 +0.8538904,93,555.5724,5.628339 +0.7127893,36,798.1527,4.586658 +0.9133792,28,404.7592,5.044139 +0.8015495,82,612.701,5.392967 +0.7103518,76,782.9977,5.13295 +0.8044765,10,496.2737,3.754206 +0.8711564,8,949.4938,3.795038 +0.850426,44,424.9812,5.107353 +0.7427764,31,531.0962,4.541912 +0.7833918,13,436.4556,3.928051 +0.5161939,9,153.1221,2.956119 +0.542656,22,466.4729,3.852124 +0.7050307,42,581.7667,4.691265 +0.9394027,90,696.7951,5.976785 +0.6877143,77,409.0994,5.106878 +0.6642221,79,415.6036,5.080381 +0.8659564,28,995.0667,4.815222 +0.6232415,99,540.7747,5.16357 +0.5393753,21,977.4539,3.802869 +0.6286016,33,708.3299,4.349475 +0.9232921,23,752.7533,4.940747 +0.6183734,92,523.36,5.104062 +0.9043008,92,200.5048,5.866232 +0.6344774,89,236.9535,5.122502 +0.8628253,13,701.8662,4.19359 +0.9023469,36,694.6135,5.157649 +0.920216,96,481.1691,5.919217 +0.7553396,30,291.5915,4.556811 +0.7868298,37,22.24995,5.117885 +0.5297635,90,7.767314,5.255495 +0.7545318,90,983.2014,5.339463 +0.624568,77,498.1715,4.988259 +0.6753779,93,882.7993,5.206611 +0.6985417,92,379.6412,5.25464 +0.7701595,40,774.3157,4.798714 +0.8281533,13,974.1746,4.062279 +0.5118858,97,242.9545,4.976425 +0.7758689,65,513.8558,5.171371 +0.7374977,95,351.8510,5.357994 +0.6412336,53,703.0254,4.740301 +0.9063756,100,900.0661,5.860283 +0.8418323,25,35.81261,4.872203 +0.7665503,31,927.7007,4.59406 +0.9219692,74,591.2485,5.752762 +0.6358764,88,928.0914,5.097556 +0.9315368,16,528.4209,4.723142 +0.8100316,75,250.0677,5.381272 +0.6597449,67,687.8693,4.947374 +0.7521641,51,428.6216,4.944315 +0.8862515,96,909.08,5.750776 +0.8434805,37,450.0125,4.956334 +0.6248698,79,847.8975,5.002474 +0.9387935,27,351.9824,5.181689 +0.7219279,32,688.6867,4.516232 +0.7028832,4,115.2441,2.491463 +0.943075,85,51.73854,6.33496 +0.5073794,44,17.59787,4.470998 +0.8603101,42,103.5809,5.19063 +0.5362855,41,957.9404,4.356659 +0.7562751,71,135.6305,5.237723 +0.8609146,54,509.9657,5.284062 +0.8023684,6,203.2283,3.256929 +0.8707021,16,28.49927,4.670428 +0.6753105,14,677.1358,3.71605 +0.8213447,86,969.6892,5.470054 +0.7359973,89,538.931,5.300517 +0.5872538,45,607.1356,4.519681 +0.8535855,45,984.2838,5.118899 +0.744609,72,340.6154,5.180845 +0.695795,60,691.346,4.935945 +0.9209901,19,839.272,4.780656 +0.9332112,25,274.9751,5.096345 +0.7586022,23,707.0266,4.339541 +0.8356929,73,491.7684,5.412498 +0.9449564,100,217.8314,6.150777 +0.769811,4,500.2968,2.684143 +0.8468755,81,842.382,5.505682 +0.8751426,29,595.5288,4.884167 +0.7680948,18,56.2383,4.252435 +0.6820803,50,727.2103,4.773905 +0.8127874,55,255.6038,5.168734 +0.8462327,43,101.6337,5.157443 +0.800735,61,891.4924,5.180328 +0.9404126,52,486.4209,5.63849 +0.5839157,12,165.2641,3.385607 +0.935952,24,741.7999,5.054673 +0.9156533,41,319.3794,5.340692 +0.8196525,59,989.9556,5.206648 +0.6757751,83,725.6698,5.12955 +0.648204,48,961.4014,4.676463 +0.765033,78,93.1138,5.358278 +0.7678091,93,854.3995,5.392688 +0.5783231,29,170.5511,4.164157 +0.8802704,69,471.1699,5.525453 +0.5391529,36,214.6134,4.266653 +0.8768197,92,684.0415,5.693874 +0.8024528,19,389.2881,4.310811 +0.8102137,25,543.2757,4.550161 +0.5723951,34,177.1517,4.28349 +0.7918926,15,860.9835,4.07184 +0.9097192,26,440.2916,4.967131 +0.8408364,34,993.8379,4.872849 +0.7611193,10,193.7934,3.635555 +0.6503083,44,663.8255,4.616585 +0.7713632,22,182.8751,4.361633 +0.9257941,9,785.8253,4.203124 +0.8617674,10,87.37827,4.022113 +0.6977722,24,710.5994,4.231432 +0.5354379,8,618.6639,2.866230 +0.7276367,78,194.4265,5.219456 +0.927455,28,165.6871,5.174257 +0.9348588,94,166.7061,6.069519 +0.5434083,10,335.4119,3.115874 +0.6687663,15,727.9403,3.763405 +0.54875,94,3.577831,5.762369 +0.6946637,95,57.15825,5.380881 +0.8181467,88,282.4998,5.508351 +0.702337,22,39.24263,4.280552 +0.6295064,62,309.4151,4.845432 +0.8923052,9,895.7956,4.004396 +0.6035331,60,645.0201,4.766525 +0.8836149,97,409.5161,5.769774 +0.6316577,69,864.4558,4.916431 +0.8140471,93,972.8971,5.502959 +0.924153,67,537.857,5.702411 +0.6059753,59,130.9093,4.786022 +0.7303484,97,704.4985,5.343819 +0.9404786,43,546.2941,5.50638 +0.9363265,74,825.2387,5.827465 +0.7937029,90,872.1234,5.430884 +0.6887033,72,160.8189,5.087694 +0.8896025,96,720.0252,5.768666 +0.6226318,65,479.5238,4.861916 +0.9318561,21,212.6343,4.969043 +0.6530969,44,196.4965,4.640452 +0.5156705,27,422.6076,3.980209 +0.5506686,44,778.192,4.43762 +0.941927,45,202.6295,5.601233 +0.6978838,48,9.815825,5.319749 +0.7202505,8,944.3096,3.29123 +0.7825415,92,833.0413,5.41958 +0.8102026,31,475.4885,4.719315 +0.704962,3,742.0467,2.110853 +0.868628,49,797.4157,5.234452 +0.662415,36,122.3492,4.517269 +0.5685591,11,841.5693,3.259537 +0.5324882,84,611.4716,4.897254 +0.9195188,45,979.4784,5.395093 +0.924014,24,307.1492,5.000818 +0.7681578,9,254.8762,3.550494 +0.938885,33,967.0505,5.299149 +0.5058739,76,580.4191,4.782108 +0.7195724,42,493.8713,4.724312 +0.6590689,26,844.7261,4.214671 +0.8727227,80,634.8739,5.588596 +0.8332684,74,364.154,5.423553 +0.5644423,15,487.3337,3.548919 +0.5277456,46,305.2887,4.4392 +0.6731391,95,41.32865,5.372164 +0.8058712,32,449.7839,4.73212 +0.7805167,82,459.6353,5.346971 +0.6403517,29,324.7766,4.274653 +0.6894963,50,183.9768,4.814299 +0.840274,56,528.483,5.240915 +0.7802236,81,713.9484,5.329507 +0.6491817,91,183.0804,5.1731 +0.8662118,26,236.4739,4.791629 +0.8121542,56,879.6062,5.150578 +0.9429012,75,153.1888,5.987243 +0.944928,66,743.2445,5.814485 +0.5885454,71,468.0117,4.868063 +0.6490172,97,725.429,5.190661 +0.5939193,24,571.1581,4.022086 +0.5846302,29,702.0651,4.162268 +0.7266355,97,453.0783,5.343648 +0.7995213,35,300.3975,4.791758 +0.8849358,46,862.011,5.251369 +0.7821957,19,512.0406,4.248446 +0.6250475,20,955.2649,3.924167 +0.5438873,29,18.50624,4.206306 +0.6162852,40,191.5103,4.494984 +0.9380071,43,949.3993,5.476223 +0.6859009,82,401.6121,5.148329 +0.867299,43,321.3514,5.159297 +0.5054768,16,301.6068,3.497222 +0.8004985,45,897.7953,4.961837 +0.5992018,50,781.0341,4.620266 +0.7640982,43,68.31587,4.941959 +0.6466677,29,209.8136,4.294416 +0.5161559,100,304.6677,5.002615 +0.7669,24,402.9333,4.401981 +0.6212073,12,879.2709,3.453426 +0.8967,91,814.1106,5.760005 +0.756986,58,258.9546,5.062312 +0.6706516,11,896.8628,3.480077 +0.7702406,14,247.8120,3.964634 +0.9408331,3,59.2535,3.297193 +0.611694,79,157.4412,5.007073 +0.9133146,49,888.8744,5.422573 +0.7713459,60,989.9753,5.094866 +0.782709,8,864.2783,3.469534 +0.8122757,28,791.8693,4.640118 +0.9426235,44,832.2008,5.526677 +0.5151007,39,486.6782,4.283144 +0.9192788,97,80.94583,6.115433 +0.5547035,16,464.9022,3.589676 +0.8503518,58,999.2576,5.286516 +0.6912052,37,2.840297,6.232477 +0.6996373,20,398.5893,4.088258 +0.6826364,12,164.8152,3.605829 +0.7570145,59,136.6271,5.10443 +0.7892998,71,606.7073,5.263065 +0.693803,13,137.5442,3.711556 +0.5734344,42,847.0786,4.439896 +0.5256841,75,807.9073,4.802194 +0.8720609,44,196.4655,5.217903 +0.849763,58,113.6172,5.37946 +0.883915,86,606.7208,5.679039 +0.6986861,45,724.167,4.72818 +0.7730728,85,237.2305,5.375397 +0.6843036,37,881.977,4.547593 +0.8880187,90,652.6476,5.722867 +0.5066843,68,230.6495,4.707207 +0.8091692,37,685.1842,4.844475 +0.5834305,21,865.753,3.885641 +0.7739443,5,774.2294,2.953505 +0.782279,30,254.5893,4.630117 +0.840519,26,279.9131,4.691499 +0.5002118,84,350.2359,4.84983 +0.5737223,22,703.2993,3.908331 +0.6703492,20,616.1641,4.019935 +0.7475401,98,548.261,5.39069 +0.7815499,8,816.3322,3.466209 +0.7417556,23,517.3739,4.300781 +0.8445668,36,822.2591,4.929407 +0.7967811,31,707.4966,4.675692 +0.6796176,28,661.9581,4.318972 +0.8140635,80,911.781,5.402426 +0.6108495,96,245.8480,5.13348 +0.7784848,82,990.4747,5.329618 +0.6128227,6,414.9884,2.724943 +0.7579412,74,153.5898,5.263626 +0.6994303,53,631.9404,4.853168 +0.5234492,78,297.832,4.834109 +0.8478319,59,693.8864,5.295759 +0.6780007,82,653.9778,5.126247 +0.9499825,77,248.3936,6.008599 +0.7981417,17,519.4062,4.201151 +0.7752259,42,311.8138,4.863517 +0.826048,33,864.1303,4.805565 +0.667351,98,974.1075,5.227651 +0.6381593,62,681.9012,4.851483 +0.798938,4,711.222,2.783472 +0.5879505,42,369.4315,4.471059 +0.8196174,54,180.369,5.192559 +0.6100542,90,444.2154,5.076279 +0.6362786,23,233.5411,4.077975 +0.750284,26,116.5786,4.461778 +0.9369969,5,178.8826,3.771926 +0.5257318,9,706.6695,2.969496 +0.7478378,42,643.4664,4.784185 +0.9030148,45,524.4915,5.324933 +0.6976315,19,264.6202,4.045463 +0.9357426,73,645.4213,5.821537 +0.7157091,12,958.8152,3.668812 +0.7272343,13,369.1633,3.777322 +0.5502546,48,959.5066,4.504085 +0.9253864,96,765.634,5.93158 +0.9491976,69,528.1747,5.886513 +0.5999067,35,714.8857,4.343182 +0.6613981,43,778.2886,4.619001 +0.879046,30,112.4804,5.003622 +0.9058213,5,695.0025,3.520497 +0.8086484,19,697.3336,4.321889 +0.9370875,92,947.153,5.967871 +0.8467592,85,885.2863,5.53676 +0.7995316,96,972.5823,5.487207 +0.5848051,35,458.6017,4.318515 +0.7358364,58,597.9595,4.996038 +0.6540596,48,143.7583,4.719058 +0.5006105,81,662.1652,4.82027 +0.8346951,48,14.25703,5.788726 +0.7329782,6,43.70629,3.085010 +0.9066034,2,823.6592,2.375442 +0.7878482,13,906.5229,3.935062 +0.7943929,65,946.3048,5.207958 +0.632154,21,257.8158,3.990246 +0.8313863,47,269.2579,5.108403 +0.5335781,33,642.3327,4.177841 +0.7919937,90,737.0373,5.429159 +0.7023364,84,296.3370,5.204418 +0.8558765,53,630.4518,5.249077 +0.7163529,46,152.1295,4.816822 +0.8768499,33,273.0424,5.009091 +0.8699501,77,859.3091,5.547184 +0.6634953,75,282.3771,5.04935 +0.5972464,3,744.7833,1.820563 +0.5361586,7,933.6834,2.722984 +0.9211899,78,470.3899,5.790909 +0.7581645,23,977.301,4.336052 +0.8797704,57,184.4853,5.438209 +0.7138117,74,2.634701,7.444284 +0.6939382,2,41.70306,1.465464 +0.7119747,36,351.9855,4.594677 +0.809572,22,557.5994,4.4462 +0.6464639,71,906.9329,4.963047 +0.8569028,7,617.3857,3.608468 +0.5721191,61,902.19,4.723571 +0.7498904,45,663.3189,4.840069 +0.6409147,57,531.118,4.796568 +0.7570784,76,460.3876,5.239693 +0.655966,100,186.1752,5.251874 +0.6083228,89,915.9558,5.05899 +0.8398448,35,487.5325,4.901501 +0.5304431,41,517.3377,4.34911 +0.7651443,26,709.3049,4.454686 +0.7308961,66,9.157054,5.800235 +0.6492565,27,835.3336,4.225992 +0.8777307,91,212.3944,5.741262 +0.7739295,81,861.2667,5.312202 +0.8367624,47,515.6989,5.106047 +0.7151403,58,933.0991,4.94759 +0.8882203,46,972.1538,5.263063 +0.828799,27,232.0475,4.688259 +0.8518334,56,420.6314,5.283884 +0.790318,16,171.5772,4.149405 +0.5580039,26,502.0283,4.023696 +0.6352824,22,475.6875,4.030243 +0.8705968,29,851.155,4.861 +0.6465768,33,538.81,4.386032 +0.7590183,69,73.19668,5.279012 +0.6525166,3,888.6056,1.963260 +0.7502,67,678.8216,5.12912 +0.5088592,89,461.3315,4.903761 +0.7982266,76,366.1689,5.344668 +0.6969608,66,241.728,5.02676 +0.6023179,78,363.5392,4.963039 +0.6775685,40,714.0139,4.595814 +0.66376,7,908.377,3.011174 +0.8134477,16,708.8301,4.193725 +0.5391178,46,835.6779,4.452678 +0.8838125,15,159.1018,4.443479 +0.672796,93,961.0114,5.201217 +0.5799419,50,484.976,4.589876 +0.5265862,41,490.8695,4.342801 +0.7029529,64,386.5903,5.005399 +0.9227982,85,515.2134,5.851962 +0.7224784,87,964.932,5.249543 +0.7436994,23,694.6903,4.30269 +0.5867254,76,376.4596,4.91713 +0.920802,42,540.3073,5.36702 +0.9338496,64,748.9049,5.719828 +0.838145,37,289.8473,4.951242 +0.5418479,91,779.7418,4.968562 +0.7017749,25,780.5221,4.27309 +0.5447994,43,683.9666,4.410061 +0.871518,51,778.878,5.273395 +0.8858706,40,121.4736,5.244512 +0.5150946,91,202.8316,4.937838 +0.6716517,84,745.3948,5.130122 +0.7249413,9,340.9548,3.426074 +0.7069959,61,733.6144,4.969756 +0.9488083,68,720.232,5.863705 +0.615935,17,160.8070,3.77786 +0.7771524,10,561.6105,3.66843 +0.6106939,75,556.1777,4.944092 +0.6134752,24,374.4686,4.062762 +0.5894027,51,207.9282,4.632573 +0.8338988,49,547.5659,5.125847 +0.7043978,22,531.6043,4.17634 +0.7000624,42,531.8091,4.681899 +0.6362798,6,823.059,2.778423 +0.7907857,89,825.5564,5.416972 +0.9223966,58,656.838,5.590938 +0.7182263,84,915.3776,5.217181 +0.86109,81,997.8343,5.548408 +0.8848985,89,869.6922,5.697209 +0.651742,22,614.38,4.062032 +0.6605856,3,98.09387,1.994872 +0.882514,63,711.0102,5.462032 +0.7547409,29,689.7354,4.515432 +0.9344155,10,400.5296,4.366817 +0.8368518,60,859.1815,5.270026 +0.7531741,56,901.1335,5.004396 +0.755553,9,359.4564,3.509542 +0.5549631,38,47.68359,4.383727 +0.9452977,2,460.798,2.723966 +0.7122327,55,485.7671,4.910092 +0.8996243,27,993.7618,4.929864 +0.7124914,43,538.1343,4.725792 +0.660462,99,233.3052,5.245786 +0.9464191,54,778.8559,5.693103 +0.8299546,74,141.3385,5.46646 +0.8861815,93,564.7782,5.741055 +0.5689354,11,962.0052,3.260038 +0.5572705,4,974.416,2.109944 +0.7668345,75,828.1217,5.243156 +0.7570055,26,791.2877,4.433298 +0.8012525,50,338.7716,5.058115 +0.6085329,61,566.1486,4.788552 +0.7073712,23,921.3009,4.216015 +0.613116,99,362.8237,5.151726 +0.8869052,28,692.1336,4.904267 +0.693029,29,395.8174,4.380828 +0.8763198,16,419.0561,4.430672 +0.6236438,13,929.845,3.533911 +0.631617,99,172.1357,5.202372 +0.8453343,29,491.5275,4.778079 +0.7733883,46,643.9964,4.912519 +0.8837153,93,751.4323,5.724347 +0.5842343,8,245.8035,2.974394 +0.7813733,56,967.567,5.070012 +0.7918319,86,426.1061,5.409196 +0.5988063,89,374.8896,5.051499 +0.8410293,7,502.7104,3.545143 +0.7985893,44,518.6063,4.94787 +0.8933352,77,730.5682,5.6391 +0.5008204,19,263.4858,3.647075 +0.7042678,68,759.1042,5.042159 +0.5722501,47,515.0346,4.528346 +0.6796555,73,455.8959,5.05149 +0.826039,84,33.03012,5.8104 +0.7891293,33,519.956,4.706889 +0.6771388,83,646.286,5.133324 +0.7841508,5,513.7669,2.988859 +0.8459404,6,305.2934,3.416229 +0.8240553,7,432.4855,3.481931 +0.6144259,22,963.728,3.985171 +0.793283,22,23.60787,4.664766 +0.7154832,80,681.36,5.180846 +0.9356364,98,61.58024,6.31134 +0.6426233,21,114.6117,4.029196 +0.7534234,5,194.0182,2.898595 +0.6921663,53,686.5312,4.837731 +0.612162,76,666.1722,4.954618 +0.653742,59,619.762,4.844223 +0.63553,59,731.1882,4.809578 +0.6200705,89,378.8527,5.087704 +0.6739772,18,445.6196,3.939308 +0.9462715,68,524.3853,5.854955 +0.7380447,41,375.4509,4.751645 +0.523857,78,851.987,4.827968 +0.5059004,81,653.6981,4.828579 +0.7512636,98,220.7087,5.42606 +0.6992854,16,132.8526,3.914488 +0.8227314,72,30.54506,5.703733 +0.9484554,86,735.9275,6.009947 +0.6075916,30,535.5072,4.234346 +0.8852776,38,952.3645,5.115993 +0.5918882,6,400.8994,2.676709 +0.6517169,8,804.8244,3.121701 +0.6898073,77,688.0591,5.103501 +0.9030026,67,11.96135,6.805333 +0.7437836,28,699.2324,4.461164 +0.875612,18,962.0697,4.511439 +0.5997572,86,864.9031,5.020716 +0.7092418,23,309.4445,4.230975 +0.6523984,83,734.0368,5.086989 +0.5312756,4,851.336,2.050064 +0.6282366,20,929.0183,3.93066 +0.5370415,23,451.2979,3.880654 +0.8735109,63,350.2037,5.448246 +0.8351599,24,859.1465,4.59044 +0.9494263,72,211.5009,5.974775 +0.6140805,16,844.5632,3.705149 +0.7450794,4,714.8403,2.603754 +0.7300385,70,851.1554,5.114127 +0.5096593,78,938.8038,4.805399 +0.8180738,76,614.2184,5.384708 +0.7153642,97,572.9604,5.316716 +0.8078966,7,338.2535,3.42692 +0.6904116,91,286.7615,5.237953 +0.8160172,70,553.6183,5.324621 +0.6299202,51,455.703,4.694567 +0.7084219,4,257.4866,2.499209 +0.9497703,50,348.7214,5.697982 +0.8508624,78,645.7308,5.497724 +0.6742178,82,677.2921,5.118834 +0.8821952,94,356.1011,5.74971 +0.5468056,2,705.1514,1.061390 +0.6789854,45,410.6719,4.69475 +0.8280198,79,810.9767,5.433856 +0.6221906,86,539.6919,5.062418 +0.8026975,15,852.9501,4.104213 +0.8222019,21,824.7458,4.443411 +0.5803124,37,138.2354,4.371959 +0.6882381,48,926.1536,4.753676 +0.8179348,66,203.1527,5.324453 +0.5960629,43,262.2780,4.508414 +0.6974869,88,196.3518,5.240979 +0.823517,91,940.689,5.514238 +0.8117326,13,280.8571,4.022421 +0.9262007,64,178.3617,5.74963 +0.678415,15,464.139,3.78771 +0.806295,18,643.1348,4.27097 +0.6671483,35,754.7018,4.470686 +0.6650073,14,21.80781,3.833526 +0.5473471,40,56.81366,4.401174 +0.9026884,52,113.4952,5.524751 +0.799699,58,557.2425,5.148982 +0.6020433,59,817.6421,4.749881 +0.7945232,47,44.2495,5.16844 +0.9197076,74,211.6517,5.794805 +0.859864,54,580.0636,5.277453 +0.7954953,68,945.6234,5.242217 +0.6905937,86,716.3957,5.182364 +0.6441292,74,974.002,4.988236 +0.5752189,16,88.31872,3.650503 +0.7610879,100,405.8932,5.440726 +0.7511553,49,522.1999,4.90919 +0.8332004,35,975.6917,4.870302 +0.7003797,94,765.2736,5.262087 +0.5723759,36,250.6977,4.324629 +0.6185644,29,946.417,4.224327 +0.8220523,19,398.2014,4.371275 +0.8655022,88,16.47093,6.414553 +0.903933,34,975.2979,5.118896 +0.6888455,27,885.4896,4.307053 +0.8945567,50,805.753,5.350675 +0.6323121,54,180.8512,4.758951 +0.5020541,89,814.6319,4.890543 +0.9150541,54,356.8162,5.524083 +0.8965727,76,253.6532,5.685681 +0.6544637,24,615.9503,4.140782 +0.6635601,41,573.3519,4.589051 +0.6201682,46,998.2747,4.592474 +0.8774226,67,135.0859,5.569834 +0.890321,35,201.3599,5.125744 +0.9028605,30,676.057,5.028651 +0.7226537,96,9.642385,6.045286 +0.8471953,3,809.2317,2.622658 +0.8198636,89,693.7546,5.494297 +0.6348555,43,912.2159,4.567892 +0.6425137,75,606.9982,4.998836 +0.873109,75,309.51,5.571157 +0.5760752,33,224.8230,4.262233 +0.7945425,30,828.5185,4.642699 +0.8734823,23,934.1412,4.695301 +0.8686912,61,513.1925,5.395958 +0.6471778,44,937.891,4.608398 +0.5882846,29,724.5066,4.168854 +0.942896,29,366.4086,5.262554 +0.5419351,3,237.3975,1.688196 +0.7674567,2,77.04476,1.701728 +0.8917366,74,66.67197,5.815672 +0.6472711,97,597.1157,5.189636 +0.8479221,21,807.45,4.529399 +0.5589803,43,80.83193,4.467882 +0.5077531,37,732.3927,4.226506 +0.7923223,50,849.2879,5.017456 +0.670393,84,831.423,5.126814 +0.7826879,75,302.5934,5.302287 +0.9387543,94,401.9712,6.022296 +0.8283552,65,534.5723,5.30889 +0.7227295,49,63.70136,4.94129 +0.5687914,34,455.7122,4.266248 +0.5752718,73,98.7667,4.898616 +0.88616,3,302.6824,2.828999 +0.6065566,78,693.4897,4.963533 +0.9167606,89,568.2099,5.8468 +0.6724503,5,574.031,2.663222 +0.784313,83,235.2819,5.386913 +0.940857,31,414.4548,5.290129 +0.9325461,21,901.5054,4.929178 +0.6883665,36,742.762,4.53579 +0.9292036,61,757.2979,5.659778 +0.9008816,96,76.9742,6.01577 +0.761467,48,742.2594,4.913388 +0.8365658,18,440.6055,4.373552 +0.6552103,64,556.7721,4.907782 +0.8254065,34,223.5664,4.856578 +0.8217355,94,426.2313,5.547764 +0.8287026,66,565.9248,5.319255 +0.7975493,62,454.1757,5.194802 +0.6771793,98,812.32,5.246957 +0.6177541,60,35.37344,4.911115 +0.79438,33,936.6395,4.71411 +0.6183924,60,960.2377,4.789908 +0.8887941,93,403.5623,5.763103 +0.7753973,24,56.94756,4.521837 +0.6653419,33,43.18045,4.522211 +0.8109106,48,550.3599,5.043916 +0.613164,39,613.6455,4.454258 +0.9059224,96,93.82517,6.002161 +0.8163602,62,753.2386,5.235758 +0.7707746,66,330.8447,5.180342 +0.5982049,30,835.1149,4.214452 +0.872359,22,767.238,4.658577 +0.84028,65,577.014,5.342823 +0.826224,92,556.121,5.538669 +0.6703941,45,160.551,4.69885 +0.8316669,41,568.3738,4.989419 +0.672689,88,603.938,5.167016 +0.584872,45,537.5861,4.516311 +0.6643863,80,971.6719,5.080185 +0.719142,69,552.564,5.086569 +0.8751901,66,19.89127,6.10715 +0.6868238,12,614.6998,3.60127 +0.891284,10,336.6336,4.105752 +0.7381764,63,855.624,5.056398 +0.6877144,40,834.2985,4.61508 +0.8837561,100,155.7344,5.855813 +0.7723711,50,92.417,5.050388 +0.7447593,38,89.42705,4.768572 +0.8722185,44,412.1780,5.186088 +0.5126045,33,58.81312,4.172292 +0.6937582,85,587.4888,5.182627 +0.7911117,22,194.6301,4.415096 +0.5921802,31,24.67419,4.352036 +0.5053348,33,938.2297,4.127942 +0.8214973,89,376.6808,5.514248 +0.7951828,18,93.5989,4.294712 +0.6450288,86,64.36293,5.183766 +0.8471788,39,480.3094,5.005853 +0.5958538,18,899.7957,3.774029 +0.9010773,94,338.4129,5.829971 +0.6502918,91,432.7548,5.154538 +0.5670526,37,415.3917,4.332074 +0.9350157,40,645.5472,5.414702 +0.9044,14,99.43052,4.524826 +0.8317929,39,303.3309,4.968462 +0.6933141,21,939.7346,4.108837 +0.845593,30,813.2998,4.797022 +0.7186427,16,188.2066,3.952521 +0.859615,24,155.5391,4.723889 +0.7278887,22,52.30448,4.31952 +0.7061932,83,761.9076,5.186903 +0.9022402,64,824.017,5.551911 +0.6490087,66,217.7326,4.93539 +0.6943846,36,516.58,4.551637 +0.5684814,26,286.0778,4.047090 +0.6554544,18,448.8217,3.899225 +0.795269,35,839.412,4.762103 +0.6238327,24,757.4391,4.078363 +0.550766,30,447.5801,4.131244 +0.8800597,2,410.1339,2.203728 +0.6440965,28,63.0589,4.304735 +0.9043739,22,208.8758,4.840424 +0.6648802,53,571.521,4.786388 +0.5320439,20,588.0347,3.747539 +0.6128809,55,149.5538,4.741544 +0.5747402,66,978.2475,4.786235 +0.80501,14,784.1936,4.052608 +0.8099135,50,652.5404,5.067729 +0.7363827,31,749.4184,4.523436 +0.6852816,3,659.303,2.054130 +0.7694083,78,255.168,5.303633 +0.8575165,30,626.4122,4.842038 +0.7631899,27,940.2408,4.4774 +0.8203281,20,645.0849,4.400649 +0.6073138,40,473.9538,4.465438 +0.8104157,69,324.3091,5.313832 +0.7241617,4,471.6251,2.541906 +0.8205727,60,901.444,5.222101 +0.9149799,19,811.2267,4.746086 +0.835535,84,701.7006,5.499324 +0.7527543,44,242.7408,4.850217 +0.6686033,40,773.8855,4.577449 +0.9312872,47,190.7668,5.56208 +0.9144552,24,263.1231,4.950928 +0.8733462,47,566.8382,5.228998 +0.5232224,36,412.0128,4.233111 +0.718345,76,351.4148,5.16206 +0.9048545,86,630.1111,5.764843 +0.5196135,16,225.0018,3.526032 +0.7626791,99,791.2467,5.4246 +0.9192357,20,362.8843,4.827192 +0.7492633,94,650.9407,5.363063 +0.8498713,36,704.8396,4.949172 +0.9369925,27,874.8804,5.144813 +0.5837224,69,712.8748,4.83564 +0.7980785,21,88.03727,4.439118 +0.8667148,44,538.502,5.158677 +0.6073327,29,183.8453,4.218646 +0.7684573,90,986.2768,5.370184 +0.6936724,33,581.2125,4.480758 +0.687191,79,669.1087,5.116968 +0.8340377,99,903.1325,5.600063 +0.6832922,53,18.68955,5.108172 +0.5332718,13,806.5033,3.351198 +0.5237699,4,241.6940,2.035217 +0.9088265,97,84.6489,6.045124 +0.8294818,21,586.6442,4.470498 +0.791115,50,282.425,5.036552 +0.91856,95,725.4959,5.890514 +0.7135054,55,753.2236,4.907396 +0.860862,65,102.1001,5.515011 +0.84523,54,972.6275,5.220716 +0.8560852,74,754.1516,5.475962 +0.7238725,20,874.4928,4.13784 +0.9034313,16,194.8503,4.585412 +0.7031215,54,115.2008,4.9226 +0.7868186,17,274.4223,4.178258 +0.7080042,99,931.5809,5.310344 +0.582401,66,842.4972,4.799686 +0.9021958,53,930.0976,5.422111 +0.6511199,13,567.0518,3.595049 +0.8124542,90,259.2000,5.511839 +0.934324,66,273.5482,5.78612 +0.7660926,76,925.8054,5.249383 +0.748764,56,26.35096,5.274348 +0.7552357,89,102.7598,5.418272 +0.9286532,27,123.1344,5.182816 +0.7288266,2,328.6701,1.558771 +0.5496063,48,543.8712,4.505532 +0.7565857,88,985.629,5.328539 +0.5106877,35,381.159,4.188819 +0.7752931,36,442.6338,4.739741 +0.7177923,33,98.16995,4.583176 +0.7972243,10,377.3643,3.733916 +0.9295137,91,103.3631,6.085717 +0.7990287,68,939.0697,5.251259 +0.75437,67,721.0245,5.137621 +0.7973704,25,326.4377,4.52186 +0.6784953,44,958.7787,4.668511 +0.6956036,28,483.9274,4.355713 +0.659538,96,855.451,5.200489 +0.944546,31,637.6513,5.305119 +0.8469256,34,975.7063,4.893041 +0.6674808,49,435.8748,4.735723 +0.936232,20,52.79911,5.141708 +0.7975782,81,159.8681,5.42625 +0.903022,28,861.7582,4.974912 +0.8505326,35,125.4830,4.997666 +0.6403539,54,775.8325,4.751972 +0.8043825,29,409.8449,4.653847 +0.5183124,16,839.732,3.518277 +0.6213446,22,726.9033,3.99988 +0.5936926,37,32.76075,4.474718 +0.809751,64,986.4935,5.236491 +0.94077,53,544.5571,5.649796 +0.6905449,97,811.6854,5.264553 +0.7754784,19,389.0463,4.233604 +0.6515826,21,845.3145,4.020459 +0.8438344,94,511.9097,5.606381 +0.6452673,84,667.1204,5.083721 +0.849467,44,324.1082,5.112301 +0.7666643,28,291.3787,4.530994 +0.8586009,22,708.908,4.606299 +0.9265102,15,175.7067,4.677897 +0.5242165,59,7.200673,4.92003 +0.5045844,79,930.6226,4.806901 +0.7911816,76,301.5211,5.332991 +0.9307524,57,860.0465,5.621265 +0.8383404,37,672.318,4.932198 +0.8236633,34,770.2948,4.822038 +0.763047,99,153.1683,5.480739 +0.6548154,65,926.9123,4.913963 +0.7707323,17,527.2263,4.123076 +0.8738404,61,301.1623,5.433622 +0.8657663,48,554.2702,5.216425 +0.6843261,94,947.1752,5.229856 +0.6344909,62,841.2254,4.843361 +0.8845142,23,681.4296,4.745308 +0.8838358,36,498.6873,5.082622 +0.9302862,56,39.67869,6.015003 +0.8695975,51,255.0341,5.299941 +0.9011584,3,704.5094,2.914552 +0.6071735,24,272.4455,4.053728 +0.5175375,67,5.328416,5.096529 +0.5891973,3,210.3449,1.803305 +0.5194459,34,179.9309,4.186702 +0.6079837,87,952.0759,5.042047 +0.7140844,81,408.8203,5.194953 +0.8013718,68,190.4623,5.302434 +0.6591662,100,340.2262,5.240922 +0.6670773,12,331.8724,3.559844 +0.9341007,58,957.1275,5.651292 +0.723373,63,932.6138,5.024305 +0.5604985,59,224.9405,4.691283 +0.6705802,22,879.1055,4.099297 +0.7786912,75,271.8816,5.29626 +0.6685635,39,810.294,4.55748 +0.6490457,99,592.4233,5.207065 +0.6931737,6,418.268,2.922958 +0.8710123,31,718.8835,4.914593 +0.5736931,61,229.3061,4.739087 +0.6210157,25,266.6708,4.115779 +0.8493002,81,67.53119,5.693514 +0.7759961,77,213.7897,5.318234 +0.9185508,71,282.1866,5.739998 +0.8265519,63,476.959,5.284545 +0.6687311,37,717.4073,4.517729 +0.6494729,44,908.6333,4.612895 +0.6121188,49,703.1177,4.628304 +0.816316,40,418.4573,4.931516 +0.7798099,96,142.9824,5.505915 +0.586697,41,549.3181,4.446578 +0.7764464,83,647.4829,5.338891 +0.6998719,31,659.3081,4.443376 +0.7472036,65,694.0377,5.100702 +0.703049,69,89.38273,5.122236 +0.703443,6,842.3088,2.947383 +0.5989944,20,546.0432,3.875062 +0.7512451,14,663.2664,3.900565 +0.5872646,12,212.4875,3.389856 +0.949173,20,168.1584,5.08552 +0.9155182,25,239.3825,4.992388 +0.5755633,51,90.36437,4.630002 +0.5876624,7,960.5489,2.834894 +0.7044702,68,543.0481,5.046567 +0.79438,30,52.91661,4.776874 +0.7362505,42,945.8348,4.754237 +0.7126581,24,443.559,4.268968 +0.787679,25,648.4927,4.48379 +0.7151991,13,409.3209,3.746174 +0.8669045,95,523.904,5.687001 +0.7202985,54,207.1601,4.933934 +0.7311327,91,113.9181,5.367735 +0.6618435,59,377.5652,4.865612 +0.9116986,72,495.8482,5.687799 +0.7557157,12,567.5894,3.775468 +0.9163235,57,713.0014,5.544914 +0.8607126,20,925.3333,4.536246 +0.9231666,88,805.9913,5.862893 +0.6026225,75,581.2631,4.929917 +0.8698394,12,428.8574,4.160611 +0.6368494,11,272.8854,3.410454 +0.7667054,61,836.1898,5.097482 +0.8000152,97,106.0452,5.59455 +0.672968,73,419.9799,5.040077 +0.7445197,21,292.8912,4.240783 +0.6600486,20,419.2918,4.000971 +0.9095673,11,770.5601,4.273962 +0.6372859,29,931.7848,4.260334 +0.7531992,49,307.2706,4.924747 +0.8082588,93,104.2067,5.590879 +0.801224,59,699.5637,5.161321 +0.8842195,63,245.3876,5.507366 +0.8049434,29,661.9891,4.648005 +0.7825961,100,809.3402,5.476277 +0.888974,23,292.7039,4.785021 +0.7712366,64,203.9149,5.177267 +0.9101844,93,789.2389,5.834102 +0.5827066,16,736.1206,3.642731 +0.7353298,50,545.3903,4.887766 +0.9000253,29,878.5962,4.986079 +0.5437368,40,302.523,4.356087 +0.8315908,96,929.6324,5.572368 +0.8205049,52,953.6965,5.12034 +0.6426717,16,342.5943,3.769862 +0.5522754,46,775.7081,4.475167 +0.8128539,74,26.48869,5.734373 +0.5600869,20,573.3304,3.800104 +0.5674171,55,762.024,4.638407 +0.537677,28,997.0594,4.047145 +0.5726309,37,957.9053,4.337529 +0.7954047,66,127.4570,5.291504 +0.7471518,61,324.2084,5.069361 +0.5223553,32,951.6902,4.131766 +0.7520169,41,74.86224,4.862345 +0.7027413,11,484.6241,3.559348 +0.7187845,61,725.0286,4.993993 +0.7299217,16,873.775,3.961720 +0.7115777,4,604.7973,2.504418 +0.9172477,38,439.2534,5.283334 +0.6639819,89,337.2648,5.168281 +0.8368359,63,611.6161,5.30952 +0.7896925,94,298.3923,5.476009 +0.8271702,44,666.0247,5.024567 +0.8040352,44,843.4855,4.955639 +0.949263,7,389.1023,4.184174 +0.8328376,85,646.6266,5.501056 +0.526783,100,325.3328,5.018803 +0.6688105,77,836.735,5.06227 +0.8282477,67,108.7778,5.415125 +0.7113153,9,856.2697,3.385048 +0.589003,20,91.5303,3.880131 +0.7194362,14,611.8864,3.820276 +0.7537761,56,591.2144,5.010757 +0.6846757,99,320.4645,5.282772 +0.8769688,38,910.5023,5.083227 +0.7869178,90,830.2127,5.415139 +0.807645,26,61.79666,4.682424 +0.9448865,18,321.8201,4.930096 +0.7294469,49,573.7421,4.859254 +0.9085438,27,658.597,4.980016 +0.9300719,42,317.518,5.442027 +0.5834533,3,827.8777,1.786282 +0.6734082,82,171.4136,5.147934 +0.7569421,51,123.9995,5.002314 +0.7239631,76,233.7967,5.185775 +0.6186872,47,424.2941,4.61253 +0.6766206,44,508.0513,4.670198 +0.932699,90,275.5164,5.979196 +0.6464799,84,803.1497,5.084213 +0.9442864,16,521.2168,4.819767 +0.7918385,42,154.5967,4.935284 +0.7414237,35,819.7154,4.628522 +0.6115499,43,488.3118,4.529439 +0.8058953,40,515.7696,4.897627 +0.614234,59,903.9223,4.770477 +0.9121058,10,464.811,4.213932 +0.8476603,79,582.6491,5.498521 +0.7929727,77,169.8307,5.374357 +0.6338905,7,485.1146,2.94188 +0.7834596,30,327.6489,4.626784 +0.8774419,17,442.962,4.483792 +0.5609554,32,68.48343,4.237052 +0.7647811,68,827.2835,5.169981 +0.832964,23,5.440919,5.976688 +0.5741506,26,547.8397,4.052964 +0.9304252,17,468.5578,4.765566 +0.68403,28,184.1941,4.347467 +0.8176484,32,766.89,4.758464 +0.9411109,59,779.2206,5.713063 +0.926516,84,836.5033,5.850456 +0.8412952,78,932.087,5.461819 +0.6364015,99,162.6142,5.213254 +0.7070626,89,175.7054,5.273428 +0.6629175,76,40.89244,5.182355 +0.9395931,56,864.6944,5.665923 +0.8185325,98,199.7678,5.601049 +0.8494492,2,715.3348,2.035239 +0.8009258,81,434.5775,5.390702 +0.6815484,13,673.4679,3.662592 +0.80715,99,144.2072,5.599653 +0.6203594,100,943.6284,5.160893 +0.9240174,8,951.9496,4.08529 +0.8159787,65,519.9843,5.274393 +0.5230194,12,905.3269,3.253303 +0.7412851,52,267.3375,4.944869 +0.8801484,85,647.5159,5.655434 +0.802909,57,781.1324,5.139793 +0.8999761,9,456.1147,4.052302 +0.8341594,10,5.503232,4.891732 +0.8345882,67,930.7735,5.338458 +0.7542815,50,129.2632,4.978182 +0.7412981,23,855.8213,4.295311 +0.9113762,38,889.0846,5.236185 +0.8416925,29,982.5072,4.756377 +0.5095571,82,905.1603,4.842070 +0.9491786,4,917.2897,3.631085 +0.8049138,63,970.9605,5.212878 +0.6334493,6,736.2926,2.771905 +0.8973752,100,631.2114,5.829958 +0.5115773,7,521.9071,2.671702 +0.7581456,73,83.04014,5.304008 +0.7434194,84,267.1309,5.294006 +0.7207906,74,704.4638,5.136362 +0.9040117,8,47.05634,4.098636 +0.6233847,99,815.7837,5.159965 +0.7571528,90,298.5627,5.368868 +0.7701096,14,493.4289,3.954212 +0.6898053,44,472.0429,4.697632 +0.6360893,97,800.1676,5.167418 +0.8561774,36,21.78472,5.422449 +0.5753474,3,428.5272,1.767289 +0.9458913,41,28.3417,6.084906 +0.6731936,92,64.30473,5.294787 +0.8784051,40,304.3885,5.152199 +0.6835589,12,757.9798,3.592619 +0.7425327,83,284.7888,5.281525 +0.5474802,43,565.8282,4.415549 +0.679627,18,61.24071,4.006403 +0.6870299,89,382.3318,5.209086 +0.6341744,67,603.614,4.902287 +0.9344777,56,755.1912,5.63539 +0.8766567,45,511.7271,5.213287 +0.6304936,7,695.3798,2.932777 +0.6135839,38,197.7654,4.448517 +0.5532043,11,73.55859,3.248804 +0.9467684,81,424.0672,5.980747 +0.7369565,18,801.3018,4.080849 +0.8355981,45,249.5172,5.093117 +0.6856068,45,969.7303,4.699566 +0.7299538,98,466.1102,5.356919 +0.875668,44,958.7983,5.182152 +0.8005378,79,956.557,5.358165 +0.513656,88,766.3824,4.900481 +0.725377,62,531.5351,5.023478 +0.845314,12,201.7055,4.078737 +0.9495224,2,585.7786,2.771761 +0.7933197,64,651.044,5.199389 +0.535197,9,945.569,2.988493 +0.5272532,4,170.3757,2.044560 +0.6848626,100,69.06699,5.373987 +0.6996583,15,376.6187,3.838532 +0.888774,54,949.0652,5.376733 +0.5558322,15,641.6645,3.531028 +0.6628907,48,285.8969,4.717985 +0.7657242,43,421.0658,4.850639 +0.569207,28,54.71352,4.151142 +0.9085392,17,229.6301,4.654862 +0.5070748,64,13.36672,4.802679 +0.61338,40,504.4076,4.476023 +0.8674259,67,317.9034,5.472228 +0.616898,58,124.3922,4.795652 +0.7760441,72,511.691,5.243743 +0.744249,49,410.2558,4.897526 +0.5424169,40,275.7656,4.354667 +0.9030827,70,471.7542,5.630173 +0.9166235,43,743.5866,5.353063 +0.6056715,24,951.203,4.042294 +0.6035406,50,904.2237,4.627114 +0.8029719,27,449.0773,4.592429 +0.7518686,77,868.1552,5.227454 +0.8557797,13,260.3399,4.182154 +0.8567424,70,330.3319,5.463428 +0.9108702,96,134.5617,5.970751 +0.8152673,70,468.8401,5.326343 +0.511748,8,144.1443,2.822673 +0.7473972,98,741.933,5.385549 +0.6116945,33,651.738,4.318166 +0.7951198,99,863.7611,5.498526 +0.6094803,70,518.7182,4.892452 +0.6264041,91,783.8267,5.106219 +0.5996085,38,81.17409,4.448564 +0.6727878,39,768.5118,4.566196 +0.9323841,9,7.531608,5.509384 +0.6817553,18,528.9048,3.955063 +0.5344935,17,440.8971,3.606659 +0.8520906,66,498.9145,5.394094 +0.7163306,87,35.37812,5.448221 +0.5705777,10,80.44106,3.188661 +0.8051647,3,193.439,2.453639 +0.5721151,55,154.0183,4.66567 +0.6572475,72,965.465,4.992097 +0.910285,63,813.4502,5.579033 +0.9048497,9,219.7808,4.096486 +0.7566543,6,747.506,3.097807 +0.7815772,22,683.9203,4.36401 +0.5786503,50,369.4688,4.59009 +0.7074791,12,192.057,3.663563 +0.6707687,5,195.6387,2.664786 +0.6535881,74,599.2874,5.009229 +0.9449619,73,454.6559,5.897153 +0.5999044,66,80.468,4.879648 +0.9103132,3,745.8394,2.975553 +0.798354,82,620.4156,5.384614 +0.7068981,63,534.5147,4.996694 +0.7926765,97,170.8177,5.533752 +0.5030747,66,276.78,4.676993 +0.6412308,91,198.3963,5.155648 +0.5837347,28,12.83706,4.340776 +0.6307461,77,501.6002,4.999005 +0.5892319,22,613.943,3.938322 +0.9173725,82,327.6299,5.820418 +0.8466205,52,964.144,5.198747 +0.7778326,20,118.1721,4.318618 +0.6377339,39,145.3060,4.52407 +0.8973141,53,65.21878,5.603597 +0.680635,95,961.3994,5.230268 +0.802825,70,272.1754,5.309848 +0.7659804,79,673.3793,5.280033 +0.8782393,26,629.0036,4.813546 +0.8774979,9,139.6891,3.970449 +0.525396,43,253.7263,4.383524 +0.8223621,89,773.2267,5.499203 +0.681816,15,451.6343,3.795628 +0.9253184,59,524.5041,5.625282 +0.534124,3,580.5324,1.668108 +0.7524038,24,900.835,4.356676 +0.8326032,81,585.9235,5.469971 +0.8192468,59,568.3666,5.213842 +0.604393,44,288.0690,4.540236 +0.5586066,12,147.7344,3.334218 +0.8883083,73,995.3096,5.577656 +0.6432519,61,561.362,4.850509 +0.5102173,65,972.368,4.670415 +0.7003389,16,957.4265,3.890828 +0.5521129,11,4.547047,3.579797 +0.59708,31,140.4593,4.259507 +0.8134452,29,902.408,4.669319 +0.9260697,59,51.65915,5.924638 +0.8265399,16,547.1571,4.238842 +0.832042,17,312.8203,4.31748 +0.6216659,61,817.8548,4.808829 +0.7283849,92,389.5894,5.314127 +0.5672065,11,610.8746,3.257575 +0.5323523,44,361.2781,4.410664 +0.59117,55,655.6214,4.679735 +0.6095431,19,307.1752,3.855151 +0.6091849,51,227.8409,4.666844 +0.7753224,78,517.2963,5.297495 +0.7268435,83,747.4984,5.22845 +0.730585,72,890.9116,5.134721 +0.6442031,8,887.0963,3.103915 +0.8302386,72,521.1991,5.385542 +0.7942507,67,324.7722,5.250096 +0.5806502,20,278.2976,3.844107 +0.8981183,13,968.5417,4.350224 +0.5357593,27,599.0527,4.0146 +0.7095182,34,629.3844,4.537233 +0.9377532,42,526.5726,5.472395 +0.7851188,86,644.761,5.383838 +0.7201651,86,630.1342,5.241761 +0.9102288,83,621.2721,5.766953 +0.6411688,68,830.1142,4.922934 +0.6090806,15,180.3769,3.647734 +0.5787879,36,718.225,4.327657 +0.814151,100,408.9423,5.569888 +0.6659953,86,37.7504,5.29409 +0.7499388,33,212.7551,4.626876 +0.8165642,69,474.2051,5.319668 +0.7661147,22,176.09,4.34867 +0.7600815,72,879.7484,5.198689 +0.5405304,20,170.2612,3.771913 +0.8303233,39,62.11989,5.087436 +0.5649674,54,939.8396,4.619411 +0.5468609,19,890.826,3.728276 +0.5018868,20,172.1611,3.698457 +0.5700143,57,62.23176,4.722349 +0.5904414,29,332.7185,4.178141 +0.6844848,44,537.8669,4.685287 +0.8536574,32,840.1896,4.872602 +0.6186735,82,923.3346,5.018009 +0.6855065,93,374.6255,5.237324 +0.9478164,43,546.3272,5.561435 +0.9324406,18,441.5948,4.825239 +0.6415473,32,767.5264,4.349149 +0.8552597,68,165.8796,5.477813 +0.9283917,62,763.6844,5.665571 +0.5535796,10,278.4392,3.137836 +0.7494807,64,396.153,5.104272 +0.7287479,23,147.1992,4.295707 +0.8010544,7,249.5940,3.407520 +0.7245908,52,658.1033,4.890957 +0.5780999,8,736.3381,2.956657 +0.8479071,13,535.5617,4.138403 +0.910282,88,706.6015,5.801665 +0.8260243,44,5.778081,6.569068 +0.7756616,12,68.24743,3.89199 +0.6779172,29,865.7203,4.34203 +0.7121331,60,51.67999,5.094517 +0.7587412,53,351.5271,4.992108 +0.7138279,6,622.5837,2.976316 +0.936066,61,493.9761,5.71497 +0.8927102,6,980.146,3.625845 +0.6222097,66,180.9405,4.890236 +0.7076899,93,746.9903,5.269072 +0.5555804,37,640.2992,4.309252 +0.7877178,36,777.8668,4.764064 +0.5842511,62,164.657,4.776821 +0.7328623,93,816.8986,5.318279 +0.6259894,52,479.0156,4.701554 +0.7226905,10,468.7935,3.519339 +0.5265653,19,997.8564,3.690211 +0.7318997,64,207.9046,5.084091 +0.9192412,69,667.0859,5.68892 +0.6231767,50,43.20987,4.759639 +0.6972005,80,845.1849,5.142585 +0.7779439,85,932.2534,5.353608 +0.9107332,100,582.1592,5.891565 +0.5050257,84,446.7605,4.855801 +0.637655,47,47.76077,4.734205 +0.785115,35,964.5286,4.73395 +0.690956,54,62.90913,4.940018 +0.719769,35,634.1213,4.582082 +0.5616795,56,915.7953,4.641653 +0.7737041,3,910.5499,2.330052 +0.8643882,91,65.94819,5.842094 +0.561113,19,13.89679,3.905443 +0.9246243,97,84.66878,6.138777 +0.8416577,64,208.3890,5.37398 +0.8823102,83,392.9894,5.663599 +0.816154,2,264.6879,1.884422 +0.6025324,62,199.5932,4.80521 +0.6947627,64,531.0227,4.983875 +0.6520982,2,38.59697,1.343845 +0.878029,87,501.3924,5.669977 +0.528619,6,922.9151,2.534323 +0.8532033,32,661.1688,4.874277 +0.5825841,85,19.02259,5.179472 +0.6906217,45,412.6579,4.718226 +0.668097,19,51.25001,4.03855 +0.8786804,92,948.0557,5.694116 +0.8551716,39,424.7596,5.036045 +0.8539307,28,756.1924,4.774472 +0.6223484,35,342.108,4.390973 +0.6102817,42,571.9411,4.507539 +0.7181276,87,831.6475,5.242309 +0.6940214,57,492.6249,4.898956 +0.8179872,85,77.64156,5.595095 +0.6283061,33,563.8613,4.350425 +0.6075136,55,379.0673,4.713306 +0.9265058,36,445.4369,5.297881 +0.6868859,8,470.9334,3.208735 +0.7996129,99,964.0103,5.508082 +0.5830702,24,774.4583,4.000224 +0.5702618,68,64.00718,4.856072 +0.5789566,43,972.203,4.467412 +0.5874349,36,916.7149,4.342063 +0.5833758,65,258.9836,4.801495 +0.8635545,49,458.9639,5.227687 +0.5935735,79,119.1572,4.983546 +0.8131558,84,845.3671,5.434132 +0.7309313,34,65.37927,4.670561 +0.5603136,54,231.8187,4.623004 +0.5756098,18,173.3843,3.745856 +0.8461455,71,301.1804,5.442179 +0.5327761,26,841.531,3.976124 +0.6493861,11,935.9827,3.431666 +0.8630635,100,888.5135,5.695541 +0.851174,47,429.4618,5.156982 +0.5861503,12,716.7889,3.380622 +0.921095,23,15.19805,5.710247 +0.5782739,5,942.0811,2.433206 +0.6693196,90,622.6583,5.176223 +0.5364548,35,405.8181,4.233303 +0.809616,81,687.281,5.40342 +0.9149833,46,412.5279,5.407319 +0.7445979,62,793.9484,5.059691 +0.8165355,8,394.0338,3.586587 +0.7509344,69,859.8796,5.148696 +0.6117458,55,682.8256,4.715332 +0.5845061,74,151.8629,4.91113 +0.7070729,49,328.4277,4.820550 +0.7195724,98,110.8851,5.395834 +0.6141301,77,832.5952,4.96579 +0.9010887,75,502.8683,5.664959 +0.8695804,75,635.2031,5.534273 +0.6162468,36,706.3104,4.395769 +0.9283751,95,975.9121,5.935814 +0.8729349,86,442.2792,5.64784 +0.8494098,3,32.31192,2.708795 +0.9168347,42,714.2314,5.338657 +0.5352037,24,911.7365,3.911702 +0.9059443,87,965.2333,5.767539 +0.7047665,61,370.0491,4.975073 +0.8152647,77,323.5922,5.403395 +0.8688586,64,478.9834,5.431414 +0.751632,9,470.4753,3.496043 +0.8244728,7,309.2294,3.487371 +0.8102466,79,903.5838,5.383902 +0.7057721,86,629.8928,5.213153 +0.5553194,60,33.40271,4.773593 +0.881195,60,621.9124,5.426565 +0.8358636,77,901.8299,5.437479 +0.696193,55,164.4135,4.904172 +0.932106,71,607.8688,5.782766 +0.6710505,44,631.6179,4.656993 +0.6212366,63,562.5125,4.834803 +0.8203601,4,27.23376,2.964745 +0.8001745,56,274.3495,5.143934 +0.9013971,27,296.505,4.965852 +0.9069266,82,392.5688,5.759936 +0.9232269,57,276.2901,5.61906 +0.9367268,68,482.8852,5.791665 +0.8689248,13,356.4507,4.228787 +0.702432,42,188.5659,4.708193 +0.5472108,23,207.8573,3.905311 +0.9229038,25,823.9425,4.998866 +0.5444981,28,772.9021,4.059997 +0.6736287,48,818.3279,4.725838 +0.7463483,76,478.1093,5.215087 +0.85102,55,389.6101,5.270833 +0.5619721,54,332.6585,4.621322 +0.664734,55,579.3978,4.813541 +0.8474316,71,106.0218,5.524184 +0.8554368,14,396.4834,4.234974 +0.865614,95,693.5883,5.675409 +0.5348477,17,295.1280,3.609408 +0.6671405,93,634.2797,5.194961 +0.9346352,15,200.4010,4.728396 +0.7714221,20,840.6805,4.256987 +0.7079719,52,749.5469,4.854797 +0.6277378,26,988.1618,4.151760 +0.6268555,98,629.3872,5.160994 +0.9238709,95,758.1687,5.917006 +0.6475484,68,21.38955,5.16726 +0.6446082,93,997.1099,5.151013 +0.7764024,4,247.0520,2.71087 +0.7230928,84,946.2879,5.226642 +0.8371537,38,946.4194,4.9437 +0.8428408,68,709.7673,5.377647 +0.5555994,10,563.73,3.139113 +0.7219313,99,561.1249,5.344151 +0.937448,23,28.74689,5.480904 +0.7335617,91,970.2005,5.302966 +0.8613441,6,176.6877,3.493646 +0.6869626,85,244.9659,5.187716 +0.9275152,86,83.32556,6.077996 +0.7939986,46,732.5617,4.963035 +0.7970223,30,882.1072,4.648926 +0.7209646,54,924.5706,4.907675 +0.8306365,96,607.961,5.577427 +0.6464567,14,9.694352,3.942865 +0.6340444,37,736.7627,4.450466 +0.8069274,40,95.86887,4.977036 +0.8013634,42,503.7897,4.921649 +0.9055047,42,118.7202,5.378602 +0.6954729,47,821.6369,4.753285 +0.6674997,44,239.8386,4.66436 +0.5699985,53,317.533,4.621385 +0.5287525,36,637.5462,4.240597 +0.6176084,4,475.3884,2.25576 +0.6085563,96,649.2288,5.115429 +0.671319,81,817.5754,5.102995 +0.9359667,37,92.84325,5.510533 +0.9292207,27,886.3095,5.092884 +0.941389,89,885.4375,5.976429 +0.5803328,53,74.98485,4.677075 +0.8983655,32,703.0716,5.05373 +0.6437962,43,460.7536,4.589923 +0.5086535,74,187.668,4.776272 +0.7736891,71,449.2642,5.231069 +0.8452449,32,304.0644,4.864419 +0.6696278,45,583.9474,4.672059 +0.6992343,65,438.3437,5.006878 +0.660791,31,961.1734,4.36029 +0.6564748,41,22.05504,4.776298 +0.665124,24,850.8597,4.16084 +0.8835836,27,965.2559,4.858438 +0.8815548,25,387.4771,4.807794 +0.6965337,31,975.1651,4.433565 +0.7860235,6,178.6597,3.203474 +0.8831334,48,57.10986,5.485092 +0.7900111,31,162.321,4.694016 +0.80504,90,989.0279,5.457521 +0.7779963,47,888.8225,4.935917 +0.8709396,21,6.076414,6.109931 +0.8758326,43,504.5797,5.178094 +0.8322847,18,610.0355,4.354371 +0.9086776,17,153.3854,4.677248 +0.788782,68,615.4611,5.231419 +0.5539504,2,984.5186,1.078088 +0.7439927,12,872.5737,3.741407 +0.8164331,71,103.7183,5.424622 +0.6064425,6,33.65510,2.751554 +0.8815675,16,550.0871,4.448882 +0.7435157,46,251.4903,4.860642 +0.94865,6,343.7878,4.039293 +0.9017165,65,280.3346,5.597134 +0.870245,56,159.3285,5.399134 +0.5617548,18,212.3836,3.716077 +0.8854695,56,81.97713,5.542365 +0.5792403,52,556.462,4.617672 +0.5890797,51,387.0378,4.623079 +0.6885989,98,502.3955,5.274165 +0.851565,71,129.9867,5.516691 +0.7055726,26,324.1496,4.322812 +0.5700456,55,957.5553,4.641816 +0.6144216,45,450.7585,4.570643 +0.7825922,22,521.1032,4.369765 +0.5166394,83,138.0069,4.879737 +0.6137133,51,713.3682,4.661488 +0.5643472,39,355.1127,4.370699 +0.6369376,93,324.8522,5.15104 +0.6506586,36,605.8106,4.46205 +0.8290645,55,544.3193,5.19356 +0.7932623,73,960.7906,5.285625 +0.8382057,96,207.4720,5.64295 +0.732158,41,137.2255,4.770089 +0.9480985,16,313.3048,4.867939 +0.6386916,99,589.2802,5.189086 +0.9390022,23,957.4552,5.041156 +0.5697346,38,17.83553,4.510244 +0.7913318,66,293.3076,5.235361 +0.6868162,4,387.668,2.43642 +0.6463822,54,750.9945,4.763262 +0.9371176,47,313.4571,5.566868 +0.50428,99,824.273,4.970733 +0.5946511,64,346.1248,4.805316 +0.8709878,57,759.798,5.34904 +0.6831977,45,11.36341,5.134924 +0.6508286,62,148.9947,4.90477 +0.9287122,60,801.24,5.644665 +0.6910198,69,990.3954,5.024397 +0.8440781,9,525.8345,3.796168 +0.8004705,72,489.8934,5.305356 +0.6084492,69,224.9862,4.892618 +0.8184517,82,935.883,5.430576 +0.7762058,75,950.8389,5.263271 +0.5760073,8,894.4134,2.951756 +0.8086744,7,174.8679,3.440552 +0.9261343,84,946.4264,5.845667 +0.7364095,79,848.88,5.212448 +0.8509722,25,417.1328,4.687007 +0.6892558,24,104.9072,4.250703 +0.8036012,61,102.1672,5.277396 +0.6162426,79,656.3961,4.989624 +0.5791517,72,467.3013,4.862522 +0.5149917,94,378.281,4.954349 +0.9379776,25,464.946,5.109888 +0.9067495,32,38.34473,5.403331 +0.5240937,28,961.5862,4.023214 +0.5280742,24,311.7771,3.903208 +0.6576594,4,689.7833,2.356709 +0.6781805,10,757.1474,3.406736 +0.5971721,63,324.5377,4.798868 +0.5290827,34,770.204,4.193887 +0.9037198,90,293.7151,5.821269 +0.6534974,48,190.0638,4.709046 +0.6981573,26,853.1525,4.296611 +0.6468021,48,748.4224,4.675426 +0.9040386,68,838.5664,5.60011 +0.7857422,38,481.7715,4.806148 +0.607947,42,201.8933,4.516507 +0.5071259,76,937.1517,4.782286 +0.5427897,92,431.5726,4.981826 +0.9072125,95,154.3396,5.92806 +0.9484,99,33.92708,6.716453 +0.8050603,87,9.65729,6.442394 +0.8860068,5,388.8540,3.412397 +0.6358902,52,845.1992,4.714964 +0.9361354,17,750.0811,4.796561 +0.8008013,49,565.2006,5.030775 +0.926761,26,575.6264,5.057938 +0.8576906,60,272.9478,5.368179 +0.7202081,22,979.6327,4.208136 +0.5819503,76,205.3432,4.918833 +0.6698566,12,945.551,3.560221 +0.6418892,55,64.02962,4.841915 +0.5271493,33,949.0254,4.165456 +0.8930948,23,24.1638,5.197677 +0.8822868,39,737.3787,5.126144 +0.6887659,6,343.5825,2.912568 +0.8297944,98,341.6935,5.606095 +0.6721322,46,193.0996,4.713452 +0.5849796,45,355.7672,4.520102 +0.6888258,5,729.3948,2.705554 +0.5311742,29,272.9869,4.071185 +0.8957202,49,516.2053,5.351545 +0.7909933,13,650.5345,3.946661 +0.6261204,51,142.9204,4.710608 +0.9168821,37,77.57931,5.410771 +0.8331488,69,43.80345,5.607263 +0.64225,94,956.1799,5.154705 +0.7601495,91,920.2586,5.359983 +0.7892926,96,349.8586,5.483655 +0.6306155,33,967.1055,4.351705 +0.6726184,80,51.44195,5.215103 +0.7116622,19,546.5421,4.069148 +0.6864173,18,182.2196,3.980004 +0.863477,91,543.1546,5.645966 +0.5452934,24,641.5907,3.931072 +0.7300484,91,650.1359,5.300523 +0.6697613,89,881.9166,5.165746 +0.5722327,44,356.5360,4.479965 +0.6642942,46,79.42196,4.736867 +0.6101755,69,492.5268,4.883647 +0.8585281,14,237.7073,4.259236 +0.9097088,71,482.4178,5.669828 +0.6898688,62,411.6998,4.954969 +0.810742,62,578.5291,5.224823 +0.8362431,75,527.7266,5.430838 +0.9416213,63,511.2204,5.772444 +0.7244791,7,610.4706,3.168309 +0.7757211,83,876.2432,5.332888 +0.7827547,64,120.3467,5.239134 +0.6797277,86,489.6258,5.166825 +0.756696,81,778.559,5.27448 +0.8787565,70,506.207,5.527242 +0.8407648,43,624.1819,5.050881 +0.812129,63,378.47,5.249874 +0.7311311,100,545.6201,5.370173 +0.6494214,71,989.3894,4.967769 +0.5589163,3,407.2068,1.727566 +0.7051075,21,910.3279,4.135289 +0.9440894,27,128.4959,5.29461 +0.6493793,36,815.854,4.457538 +0.5269008,22,20.1956,3.909876 +0.7765532,69,131.1495,5.270598 +0.8623126,59,805.8516,5.341169 +0.7862556,15,445.9598,4.061422 +0.7984945,11,16.42409,4.112416 +0.7628009,94,335.4126,5.40785 +0.5707517,4,754.9215,2.141816 +0.8307415,59,259.4171,5.271136 +0.9261452,91,879.6235,5.898394 +0.5931118,19,412.5692,3.820128 +0.7341011,30,290.3247,4.5055 +0.6307421,94,480.651,5.141479 +0.6214507,52,761.9476,4.689565 +0.6122929,51,391.2011,4.66427 +0.6126767,22,965.1558,3.981753 +0.6781432,82,529.8376,5.129141 +0.7212714,68,628.3364,5.078783 +0.8463072,52,414.1375,5.213921 +0.5499381,48,128.7722,4.524313 +0.8552063,45,983.869,5.124362 +0.7168726,54,76.57087,4.98376 +0.5863685,28,436.8953,4.139119 +0.6002564,4,212.4021,2.216034 +0.6476712,27,567.834,4.225193 +0.5111378,12,230.9686,3.234319 +0.8874011,31,699.3229,4.981643 +0.6029039,21,853.7822,3.923142 +0.844009,100,494.6368,5.648871 +0.6724859,33,871.8237,4.434046 +0.6211092,3,206.0795,1.884215 +0.8536017,100,339.2334,5.692342 +0.9383143,76,126.6032,5.989349 +0.5257438,86,212.6910,4.913543 +0.6733605,100,893.5537,5.253112 +0.6432021,12,786.3207,3.501315 +0.6230217,88,173.8344,5.102506 +0.6406076,51,392.1265,4.716152 +0.8299653,74,144.4691,5.464652 +0.711774,49,720.2103,4.819034 +0.6283814,10,413.4422,3.295601 +0.5821459,59,999.1213,4.714968 +0.6715785,20,695.5452,4.021824 +0.8592576,52,916.6212,5.241093 +0.542849,42,279.0223,4.3942 +0.537032,81,618.1086,4.877919 +0.8894632,38,737.5884,5.137352 +0.6570416,51,953.9288,4.738709 +0.9168326,47,24.62193,5.997725 +0.8971111,17,803.4249,4.565065 +0.5770282,56,547.2414,4.670345 +0.9473995,62,535.2846,5.802564 +0.5455282,93,714.1213,4.990395 +0.5863393,45,768.3091,4.516744 +0.7665414,16,849.9519,4.056045 +0.734118,54,776.0034,4.937319 +0.7203634,64,274.5625,5.04965 +0.659862,45,748.1406,4.651066 +0.6805168,34,603.1331,4.476605 +0.8645582,64,484.6595,5.415833 +0.8906369,26,384.7536,4.877756 +0.9474115,20,416.8705,5.021933 +0.6411807,57,330.5903,4.80329 +0.5703219,58,514.8321,4.685923 +0.7626901,30,75.8481,4.641237 +0.8855596,42,839.1963,5.190222 +0.9174876,27,572.5325,5.030947 +0.5043899,20,700.1571,3.696164 +0.5387181,100,214.0170,5.043657 +0.889451,94,411.1439,5.771975 +0.6211653,61,929.5267,4.807188 +0.726502,69,816.1978,5.096984 +0.9034006,27,188.2023,4.99858 +0.8471982,47,921.634,5.129633 +0.6937758,9,797.0683,3.341297 +0.5347142,19,938.8299,3.705463 +0.7464367,95,284.5240,5.383845 +0.5356522,31,119.4054,4.146077 +0.7287865,54,105.8386,4.986942 +0.7582195,10,393.5145,3.616798 +0.7883883,16,759.7446,4.117701 +0.580503,34,116.2226,4.308078 +0.5592169,53,86.60802,4.630375 +0.8841168,35,720.886,5.055972 +0.787728,8,431.0659,3.489781 +0.7440935,96,462.1459,5.37265 +0.547159,28,549.1209,4.066083 +0.6133399,7,31.53534,2.94565 +0.502118,22,858.4678,3.77632 +0.9333538,38,609.3464,5.369694 +0.6024722,75,638.6493,4.92888 +0.9074494,32,541.4686,5.102969 +0.6300227,79,159.6278,5.040472 +0.7318348,24,317.7376,4.318522 +0.741385,49,607.519,4.884875 +0.7133042,90,534.2835,5.262046 +0.7731119,64,555.0199,5.152396 +0.7659718,64,902.1246,5.129016 +0.692532,54,15.18751,5.217929 +0.7237324,40,311.8354,4.70425 +0.7820585,92,123.1948,5.494088 +0.8127579,20,389.9402,4.384254 +0.7185323,50,966.4689,4.845642 +0.7159182,54,783.1741,4.898585 +0.5016469,14,892.8262,3.360851 +0.6591599,72,400.8591,5.005014 +0.838539,89,620.7018,5.549374 +0.7455755,65,625.0824,5.098517 +0.9332795,27,755.9687,5.121938 +0.6061578,88,852.1542,5.047813 +0.6962892,84,664.6649,5.177628 +0.5947195,17,875.5658,3.72079 +0.6775777,53,539.8698,4.811517 +0.779415,80,754.9234,5.318238 +0.6246729,36,474.7039,4.414399 +0.8229145,91,413.4531,5.530172 +0.6903401,99,874.5921,5.277501 +0.5398703,51,286.4902,4.541068 +0.74952,4,502.8889,2.618777 +0.8640506,33,6.8444,6.388552 +0.9202534,49,339.0399,5.487683 +0.6719591,58,852.3847,4.86309 +0.9207745,32,368.0822,5.186344 +0.8846664,81,528.0204,5.646296 +0.6523939,96,646.4013,5.190536 +0.8606456,24,470.2877,4.688268 +0.6330717,34,113.3899,4.413138 +0.7145774,68,95.60072,5.132608 +0.7099229,38,220.1979,4.642589 +0.7290925,15,20.12214,4.110961 +0.9385502,61,264.7995,5.763972 +0.5603532,7,885.8671,2.775121 +0.7057838,42,68.22778,4.772341 +0.658553,20,643.2781,3.994641 +0.8370777,33,279.929,4.863052 +0.5989733,21,486.2542,3.918143 +0.6681295,12,829.0133,3.556748 +0.6356377,43,817.5014,4.569956 +0.6267693,93,462.5766,5.12758 +0.8400407,30,840.948,4.778211 +0.778122,92,63.86752,5.560302 +0.8315789,86,180.0045,5.557248 +0.5899593,72,82.99947,4.923858 +0.6298938,6,324.3013,2.766343 +0.8650625,45,810.102,5.161229 +0.7166938,77,519.5638,5.160264 +0.6128868,83,494.4236,5.022079 +0.7190987,63,988.826,5.014988 +0.8141917,54,62.45263,5.281654 +0.6892226,77,604.2335,5.1039 +0.7579322,39,483.3476,4.756018 +0.774113,12,376.1970,3.831128 +0.888773,9,193.2689,4.013519 +0.9433137,19,225.0416,4.975592 +0.668966,35,323.5154,4.483325 +0.5799831,32,858.7687,4.233789 +0.6964942,57,265.0989,4.915871 +0.7890881,19,622.6752,4.265669 +0.7703855,61,666.6304,5.108969 +0.7360461,100,156.7199,5.423589 +0.8626526,80,916.5676,5.546618 +0.8052394,59,234.3321,5.201593 +0.9434135,16,488.0507,4.814165 +0.675481,11,447.5658,3.494619 +0.7456587,71,858.7813,5.157294 +0.6115988,44,621.5159,4.545473 +0.7125888,13,903.394,3.734631 +0.564883,12,911.3827,3.336676 +0.8422981,35,737.8664,4.902571 +0.6269619,22,962.1986,4.009839 +0.7464384,89,917.6661,5.31518 +0.8062435,86,203.6891,5.476226 +0.6016839,63,164.1402,4.82052 +0.7231435,90,183.1313,5.313472 +0.9296296,69,712.086,5.744837 +0.7964493,18,372.9885,4.248754 +0.9082465,11,729.5307,4.267029 +0.7954384,80,890.9846,5.354851 +0.69333,30,549.6491,4.404942 +0.888512,38,226.2884,5.171376 +0.5163259,79,965.7332,4.825084 +0.8625625,40,270.5909,5.095962 +0.7878012,75,456.2498,5.303224 +0.7169962,38,24.90004,4.866604 +0.7119138,31,136.3598,4.502702 +0.9016313,80,625.8683,5.703408 +0.6697849,64,819.8403,4.931256 +0.6393241,36,822.4557,4.438223 +0.6457774,22,286.3792,4.056812 +0.6075175,5,507.1766,2.502779 +0.5790579,35,891.444,4.304589 +0.6785852,97,632.1274,5.245173 +0.9260163,27,785.0145,5.07486 +0.624276,100,624.4551,5.170826 +0.514745,99,233.9589,4.996166 +0.7554237,90,27.37145,5.658256 +0.8304656,20,75.88332,4.520449 +0.9465676,54,175.3672,5.777202 +0.9349736,67,373.3616,5.78206 +0.862613,34,248.4125,4.979623 +0.9212936,13,780.8202,4.483226 +0.7610356,13,216.7360,3.875411 +0.901645,33,163.7603,5.150118 +0.938008,100,475.4582,6.04847 +0.7903692,73,374.8208,5.295927 +0.9234672,71,793.222,5.726025 +0.8868499,22,658.971,4.721847 +0.9136649,96,313.9001,5.906933 +0.6772373,5,825.3243,2.674723 +0.7484092,30,211.6643,4.54816 +0.5736467,50,354.4955,4.581787 +0.8963927,40,739.9752,5.204105 +0.6797554,77,357.669,5.094093 +0.6830636,48,373.3237,4.753272 +0.6249168,59,358.1955,4.797946 +0.6989866,36,742.6241,4.557865 +0.720914,97,799.1175,5.323244 +0.8050567,78,401.0264,5.377754 +0.8354936,89,886.472,5.533914 +0.8940905,3,516.5265,2.87191 +0.7170255,57,97.04115,5.005992 +0.6894167,8,999.7774,3.212098 +0.8153368,83,640.4252,5.436478 +0.7875185,40,748.8123,4.842901 +0.5928658,38,222.8933,4.407356 +0.9368355,59,283.7960,5.725235 +0.8439394,88,743.0444,5.554312 +0.8655847,61,746.2011,5.376758 +0.615964,7,492.0405,2.900309 +0.708786,23,250.7864,4.233693 +0.928492,77,249.3429,5.858765 +0.9213118,70,240.5459,5.756381 +0.9447196,4,134.7652,3.622836 +0.6752938,92,700.4954,5.201173 +0.5822097,34,944.6738,4.286641 +0.7442257,37,780.9363,4.677971 +0.8501248,92,391.9927,5.620045 +0.7890855,31,26.29981,4.924178 +0.5417501,38,367.9578,4.309845 +0.6465953,76,816.0229,5.012992 +0.7753691,45,187.8045,4.933162 +0.8752703,95,937.9589,5.702937 +0.8304852,46,534.5124,5.070549 +0.9297963,95,821.1949,5.947772 +0.8118207,51,614.6753,5.088175 +0.6761814,68,77.04726,5.06311 +0.5594347,47,273.4567,4.511935 +0.6285156,17,791.629,3.789238 +0.8079738,6,552.786,3.265653 +0.6450331,64,620.8037,4.888043 +0.6683616,5,26.13905,2.716723 +0.6130411,71,577.7337,4.907943 +0.6039205,88,393.0017,5.051451 +0.6873019,33,507.5798,4.46876 +0.6871983,44,93.05181,4.742836 +0.8249064,40,27.54897,5.271431 +0.5337277,97,414.0519,5.005735 +0.7879977,47,203.7387,4.995218 +0.7460476,54,352.9217,4.976224 +0.9483304,14,817.392,4.74218 +0.6113758,86,287.5114,5.052821 +0.7624152,86,140.1357,5.386984 +0.9068276,76,127.8796,5.79775 +0.6900965,97,905.93,5.262664 +0.8448191,85,43.09855,5.815616 +0.8802071,31,137.8266,5.016079 +0.8578306,19,642.5522,4.48844 +0.7929309,82,623.4676,5.370958 +0.8476168,18,453.467,4.412116 +0.6834483,43,918.7422,4.661125 +0.7405542,80,56.81287,5.371752 +0.9219944,50,332.3488,5.512329 +0.7261745,44,701.9999,4.769600 +0.7007646,53,383.2142,4.862903 +0.6057453,72,986.2047,4.901948 +0.9261545,59,353.8751,5.64591 +0.771516,19,609.2304,4.217364 +0.7029976,85,168.6136,5.234305 +0.8446972,27,723.5938,4.715313 +0.5885027,57,335.832,4.708225 +0.6491714,64,861.9075,4.892884 +0.6330873,24,654.814,4.097357 +0.7772637,100,678.8785,5.466614 +0.8096222,38,244.029,4.889534 +0.584761,62,94.44627,4.795691 +0.700675,82,658.6258,5.169326 +0.848954,53,601.8697,5.227078 +0.8253134,71,66.77659,5.512754 +0.5726026,39,366.2374,4.385096 +0.889443,40,431.9839,5.186106 +0.9409584,20,611.2568,4.959802 +0.7115514,90,793.238,5.25328 +0.7011985,35,200.5195,4.561698 +0.5771735,40,98.96083,4.438054 +0.8109071,76,518.7619,5.368861 +0.8176633,37,18.97150,5.311783 +0.7706448,80,46.71877,5.489751 +0.5891102,78,840.1204,4.933083 +0.7720898,79,189.6653,5.332601 +0.7299095,48,298.656,4.85679 +0.6956586,32,739.8781,4.458631 +0.6287844,35,862.2396,4.395717 +0.8391402,38,300.8604,4.973045 +0.510979,99,235.7683,4.990011 +0.508311,83,427.9368,4.852489 +0.6374083,53,722.2017,4.733101 +0.8431894,21,933.971,4.51148 +0.6286747,89,648.9947,5.096027 +0.9137417,88,684.3439,5.819049 +0.7000148,65,253.8147,5.020509 +0.9283806,36,485.4688,5.30663 +0.5502186,97,901.5118,5.026643 +0.6794158,92,491.8415,5.2134 +0.5004906,9,369.889,2.919374 +0.8813509,4,156.3115,3.159320 +0.5316867,79,888.0104,4.849485 +0.7776448,23,552.1755,4.391651 +0.6669258,42,541.5799,4.614754 diff --git a/statsmodels/stats/libqsturng/tests/test_qsturng.py b/statsmodels/stats/libqsturng/tests/test_qsturng.py new file mode 100644 index 0000000..f237859 --- /dev/null +++ b/statsmodels/stats/libqsturng/tests/test_qsturng.py @@ -0,0 +1,201 @@ +# Copyright (c) 2011 BSD, Roger Lew [see LICENSE.txt] +# This software is funded in part by NIH Grant P20 RR016454. + +"""The 'handful' tests are intended to aid refactoring. The tests with the +@pytest.mark..slow are empirical (test within error limits) and intended to more +extensively ensure the stability and accuracy of the functions""" + +from statsmodels.compat.python import iterkeys, lzip, lmap + +from numpy.testing import ( + assert_equal, + assert_almost_equal, assert_array_almost_equal, + assert_raises) + +import numpy as np +import pytest + +from statsmodels.stats.libqsturng import qsturng, psturng + + +def read_ch(fname): + with open(fname) as f: + lines = f.readlines() + ps,rs,vs,qs = lzip(*[L.split(',') for L in lines]) + return lmap(float, ps), lmap(float, rs),lmap(float, vs), lmap(float, qs) + + +class TestQsturng(object): + def test_scalar(self): + # scalar input -> scalar output + assert_almost_equal(4.43645545899562, qsturng(.9,5,6), 5) + + def test_vector(self): + # vector input -> vector output + assert_array_almost_equal(np.array([3.98832389, + 4.56835318, + 6.26400894]), + qsturng([.8932, .9345,.9827], + [4, 4, 4], + [6, 6, 6]), + 5) + + def test_invalid_parameters(self): + # p < .1 + assert_raises(ValueError, qsturng, -.1,5,6) + # p > .999 + assert_raises(ValueError, qsturng, .9991,5,6) + # p < .9, v = 1 + assert_raises(ValueError, qsturng, .89,5,1) + # p >= .9, v = 0 + assert_raises(ValueError, qsturng, .9,5,0) + # r < 2 + assert_raises((ValueError, OverflowError), qsturng, .9,1,2) + + def test_handful_to_tbl(self): + cases = [(0.75, 30.0, 12.0, 5.01973488482), + (0.975, 15.0, 18.0, 6.00428263999), + (0.1, 8.0, 11.0, 1.76248712658), + (0.995, 6.0, 17.0, 6.13684839819), + (0.85, 15.0, 18.0, 4.65007986215), + (0.75, 17.0, 18.0, 4.33179650607), + (0.75, 60.0, 16.0, 5.50520795792), + (0.99, 100.0, 2.0, 50.3860723433), + (0.9, 2.0, 40.0, 2.38132493732), + (0.8, 12.0, 20.0, 4.15361239056), + (0.675, 8.0, 14.0, 3.35011529943), + (0.75, 30.0, 24.0, 4.77976803574), + (0.75, 2.0, 18.0, 1.68109190167), + (0.99, 7.0, 120.0, 5.00525918406), + (0.8, 19.0, 15.0, 4.70694373713), + (0.8, 15.0, 8.0, 4.80392205906), + (0.5, 12.0, 11.0, 3.31672775449), + (0.85, 30.0, 2.0, 10.2308503607), + (0.675, 20.0, 18.0, 4.23706426096), + (0.1, 60.0, 60.0, 3.69215469278)] + + for p,r,v,q in cases: + assert_almost_equal(q, qsturng(p,r,v), 5) + + #remove from testsuite, used only for table generation and fails on + #Debian S390, no idea why + @pytest.mark.skip + def test_all_to_tbl(self): + from statsmodels.stats.libqsturng.make_tbls import T,R + ps, rs, vs, qs = [], [], [], [] + for p in T: + for v in T[p]: + for r in iterkeys(R): + ps.append(p) + vs.append(v) + rs.append(r) + qs.append(T[p][v][R[r]]) + + qs = np.array(qs) + errors = np.abs(qs-qsturng(ps,rs,vs))/qs + assert_equal(np.array([]), np.where(errors > .03)[0]) + + def test_handful_to_ch(self): + cases = [(0.8699908, 10.0, 465.4956, 3.997799075635331), + (0.8559087, 43.0, 211.7474, 5.1348419692951675), + (0.6019187, 11.0, 386.5556, 3.3383101487698821), + (0.658888, 51.0, 74.652, 4.8108880483153733), + (0.6183604, 77.0, 479.8493, 4.9864059321732874), + (0.9238978, 77.0, 787.5278, 5.7871053003022936), + (0.8408322, 7.0, 227.3483, 3.5555798311413578), + (0.5930279, 60.0, 325.3461, 4.7658023123882396), + (0.6236158, 61.0, 657.5285, 4.8207812755987867), + (0.9344575, 72.0, 846.4138, 5.8014341329259107), + (0.8761198, 56.0, 677.8171, 5.362460718311719), + (0.7901517, 41.0, 131.525, 4.9222831341950544), + (0.6396423, 44.0, 624.3828, 4.6015127250083152), + (0.8085966, 14.0, 251.4224, 4.0793058424719746), + (0.716179, 45.0, 136.7055, 4.8055498089340087), + (0.8204, 6.0, 290.9876, 3.3158771384085597), + (0.8705345, 83.0, 759.6216, 5.5969334564485376), + (0.8249085, 18.0, 661.9321, 4.3283725986180395), + (0.9503, 2.0, 4.434, 3.7871158594867262), + (0.7276132, 95.0, 91.43983, 5.4100384868499889)] + + for p,r,v,q in cases: + assert_almost_equal(q, qsturng(p,r,v), 5) + + @pytest.mark.slow + def test_10000_to_ch(self): + import os + curdir = os.path.dirname(os.path.abspath(__file__)) + #ps, rs, vs, qs = read_ch(curdir + '/bootleg.dat') # <- generated by qtukey in R + # work around problem getting libqsturng.tests.bootleg.dat installed + ps, rs, vs, qs = read_ch(os.path.split(os.path.split(curdir)[0])[0] + + '/tests/results/bootleg.csv') + qs = np.array(qs) + errors = np.abs(qs-qsturng(ps,rs,vs))/qs + assert_equal(np.array([]), np.where(errors > .03)[0]) + +class TestPsturng(object): + def test_scalar(self): + "scalar input -> scalar output" + assert_almost_equal(.1, psturng(4.43645545899562,5,6), 5) + + def test_vector(self): + "vector input -> vector output" + assert_array_almost_equal(np.array([0.10679889, + 0.06550009, + 0.01730145]), + psturng([3.98832389, + 4.56835318, + 6.26400894], + [4, 4, 4], + [6, 6, 6]), + 5) + + def test_v_equal_one(self): + assert_almost_equal(.1, psturng(.2,5,1), 5) + + def test_invalid_parameters(self): + # q < .1 + assert_raises(ValueError, psturng, -.1,5,6) + # r < 2 + assert_raises((ValueError, OverflowError), psturng, .9,1,2) + + def test_handful_to_known_values(self): + cases = [(0.71499578726111435, 67, 956.70742488392386, 5.0517658443070692), + (0.42974234855067672, 16, 723.50261736502318, 3.3303582093701354), + (0.94936429359548424, 2, 916.1867328010926, 2.7677975546417244), + (0.85357381770725038, 66, 65.67055060832368, 5.5647438108270109), + (0.87372108021900929, 74, 626.42369474993632, 5.5355540570701107), + (0.53891960564713726, 49, 862.63799438485785, 4.5108645923377146), + (0.98818659555664567, 18, 36.269686711464274, 6.0906643750886156), + (0.53031994896037626, 50, 265.29558652727917, 4.5179640079726795), + (0.7318857887397332, 59, 701.41497552251201, 4.9980139875409915), + (0.65332019368982697, 61, 591.01183664195912, 4.8706581766706893), + (0.55403221657248558, 77, 907.34156725405194, 4.8786135917984632), + (0.30783916857266003, 83, 82.446923487980882, 4.4396401242858294), + (0.29321720242415661, 16, 709.64382575553009, 3.0304277540702729), + (0.27146478168880306, 31, 590.00594683574172, 3.5870031664477215), + (0.67348796958433776, 81, 608.02706111127657, 5.1096199974432936), + (0.32774393945968938, 18, 17.706224399250839, 3.2119038163765432), + (0.7081637474795982, 72, 443.10678914889695, 5.0990030889410649), + (0.33354939276757861, 47, 544.0772192199048, 4.0613352964193279), + (0.60412143947363051, 36, 895.83526933271548, 4.381717596850172), + (0.88739052300665977, 77, 426.03665511558262, 5.6333929480341309)] + + for p,r,v,q in cases: + assert_almost_equal(1.-p, psturng(q,r,v), 5) + + @pytest.mark.slow + def test_100_random_values(self, reset_randomstate): + n = 100 + random_state = np.random.RandomState(12345) + ps = random_state.random_sample(n)*(.999 - .1) + .1 + rs = random_state.randint(2, 101, n) + vs = random_state.random_sample(n)*998. + 2. + qs = qsturng(ps, rs, vs) + estimates = psturng(qs, rs, vs) + actuals = 1. - ps + errors = estimates - actuals + + assert_equal(np.array([]), np.where(errors > 1e-5)[0]) + +## def test_more_exotic_stuff(self, level=3): +## something_obscure_and_expensive() diff --git a/statsmodels/stats/mediation.py b/statsmodels/stats/mediation.py new file mode 100644 index 0000000..40563c5 --- /dev/null +++ b/statsmodels/stats/mediation.py @@ -0,0 +1,403 @@ +""" +Mediation analysis + +Implements algorithm 1 ('parametric inference') and algorithm 2 +('nonparametric inference') from: + +Imai, Keele, Tingley (2010). A general approach to causal mediation +analysis. Psychological Methods 15:4, 309-334. + +http://imai.princeton.edu/research/files/BaronKenny.pdf + +The algorithms are described on page 317 of the paper. + +In the case of linear models with no interactions involving the +mediator, the results should be similar or identical to the earlier +Barron-Kenny approach. +""" +from statsmodels.compat.python import string_types + +import numpy as np +import pandas as pd +from statsmodels.graphics.utils import maybe_name_or_idx + + +class Mediation(object): + """ + Conduct a mediation analysis. + + Parameters + ---------- + outcome_model : statsmodels model + Regression model for the outcome. Predictor variables include + the treatment/exposure, the mediator, and any other variables + of interest. + mediator_model : statsmodels model + Regression model for the mediator variable. Predictor + variables include the treatment/exposure and any other + variables of interest. + exposure : string or (int, int) tuple + The name or column position of the treatment/exposure + variable. If positions are given, the first integer is the + column position of the exposure variable in the outcome model + and the second integer is the position of the exposure variable + in the mediator model. If a string is given, it must be the name + of the exposure variable in both regression models. + mediator : string or int + The name or column position of the mediator variable in the + outcome regression model. If None, infer the name from the + mediator model formula (if present). + moderators : dict + Map from variable names or index positions to values of + moderator variables that are held fixed when calculating + mediation effects. If the keys are index position they must + be tuples `(i, j)` where `i` is the index in the outcome model + and `j` is the index in the mediator model. Otherwise the + keys must be variable names. + outcome_fit_kwargs : dict-like + Keyword arguments to use when fitting the outcome model. + mediator_fit_kwargs : dict-like + Keyword arguments to use when fitting the mediator model. + + Returns a ``MediationResults`` object. + + Notes + ----- + The mediator model class must implement ``get_distribution``. + + Examples + -------- + A basic mediation analysis using formulas: + + >>> import statsmodels.api as sm + >>> import statsmodels.genmod.families.links as links + >>> probit = links.probit + >>> outcome_model = sm.GLM.from_formula("cong_mesg ~ emo + treat + age + educ + gender + income", + ... data, family=sm.families.Binomial(link=probit())) + >>> mediator_model = sm.OLS.from_formula("emo ~ treat + age + educ + gender + income", data) + >>> med = Mediation(outcome_model, mediator_model, "treat", "emo").fit() + >>> med.summary() + + A basic mediation analysis without formulas. This may be slightly + faster than the approach using formulas. If there are any + interactions involving the treatment or mediator variables this + approach will not work, you must use formulas. + + >>> import patsy + >>> outcome = np.asarray(data["cong_mesg"]) + >>> outcome_exog = patsy.dmatrix("emo + treat + age + educ + gender + income", data, + ... return_type='dataframe') + >>> probit = sm.families.links.probit + >>> outcome_model = sm.GLM(outcome, outcome_exog, family=sm.families.Binomial(link=probit())) + >>> mediator = np.asarray(data["emo"]) + >>> mediator_exog = patsy.dmatrix("treat + age + educ + gender + income", data, + ... return_type='dataframe') + >>> mediator_model = sm.OLS(mediator, mediator_exog) + >>> tx_pos = [outcome_exog.columns.tolist().index("treat"), + ... mediator_exog.columns.tolist().index("treat")] + >>> med_pos = outcome_exog.columns.tolist().index("emo") + >>> med = Mediation(outcome_model, mediator_model, tx_pos, med_pos).fit() + >>> med.summary() + + A moderated mediation analysis. The mediation effect is computed + for people of age 20. + + >>> fml = "cong_mesg ~ emo + treat*age + emo*age + educ + gender + income", + >>> outcome_model = sm.GLM.from_formula(fml, data, + ... family=sm.families.Binomial()) + >>> mediator_model = sm.OLS.from_formula("emo ~ treat*age + educ + gender + income", data) + >>> moderators = {"age" : 20} + >>> med = Mediation(outcome_model, mediator_model, "treat", "emo", + ... moderators=moderators).fit() + + References + ---------- + Imai, Keele, Tingley (2010). A general approach to causal mediation + analysis. Psychological Methods 15:4, 309-334. + http://imai.princeton.edu/research/files/BaronKenny.pdf + + Tingley, Yamamoto, Hirose, Keele, Imai (2014). mediation : R + package for causal mediation analysis. Journal of Statistical + Software 59:5. http://www.jstatsoft.org/v59/i05/paper + """ + + def __init__(self, outcome_model, mediator_model, exposure, mediator=None, + moderators=None, outcome_fit_kwargs=None, mediator_fit_kwargs=None): + + self.outcome_model = outcome_model + self.mediator_model = mediator_model + self.exposure = exposure + self.moderators = moderators if moderators is not None else {} + + if mediator is None: + self.mediator = self._guess_endog_name(mediator_model, 'mediator') + else: + self.mediator = mediator + + self._outcome_fit_kwargs = (outcome_fit_kwargs if outcome_fit_kwargs + is not None else {}) + self._mediator_fit_kwargs = (mediator_fit_kwargs if mediator_fit_kwargs + is not None else {}) + + # We will be changing these so need to copy. + self._outcome_exog = outcome_model.exog.copy() + self._mediator_exog = mediator_model.exog.copy() + + # Position of the exposure variable in the mediator model. + self._exp_pos_mediator = self._variable_pos('exposure', 'mediator') + + # Position of the exposure variable in the outcome model. + self._exp_pos_outcome = self._variable_pos('exposure', 'outcome') + + # Position of the mediator variable in the outcome model. + self._med_pos_outcome = self._variable_pos('mediator', 'outcome') + + + def _variable_pos(self, var, model): + if model == 'mediator': + mod = self.mediator_model + else: + mod = self.outcome_model + + if var == 'mediator': + return maybe_name_or_idx(self.mediator, mod)[1] + + exp = self.exposure + exp_is_2 = ((len(exp) == 2) and not isinstance(exp, string_types)) + + if exp_is_2: + if model == 'outcome': + return exp[0] + elif model == 'mediator': + return exp[1] + else: + return maybe_name_or_idx(exp, mod)[1] + + + def _guess_endog_name(self, model, typ): + if hasattr(model, 'formula'): + return model.formula.split("~")[0].strip() + else: + raise ValueError('cannot infer %s name without formula' % typ) + + + def _simulate_params(self, result): + """ + Simulate model parameters from fitted sampling distribution. + """ + mn = result.params + cov = result.cov_params() + return np.random.multivariate_normal(mn, cov) + + + def _get_mediator_exog(self, exposure): + """ + Return the mediator exog matrix with exposure set to the given + value. Set values of moderated variables as needed. + """ + mediator_exog = self._mediator_exog + if not hasattr(self.mediator_model, 'formula'): + mediator_exog[:, self._exp_pos_mediator] = exposure + for ix in self.moderators: + v = self.moderators[ix] + mediator_exog[:, ix[1]] = v + else: + # Need to regenerate the model exog + df = self.mediator_model.data.frame.copy() + df.loc[:, self.exposure] = exposure + for vname in self.moderators: + v = self.moderators[vname] + df.loc[:, vname] = v + klass = self.mediator_model.__class__ + init_kwargs = self.mediator_model._get_init_kwds() + model = klass.from_formula(data=df, **init_kwargs) + mediator_exog = model.exog + + return mediator_exog + + + def _get_outcome_exog(self, exposure, mediator): + """ + Retun the exog design matrix with mediator and exposure set to + the given values. Set values of moderated variables as + needed. + """ + outcome_exog = self._outcome_exog + if not hasattr(self.outcome_model, 'formula'): + outcome_exog[:, self._med_pos_outcome] = mediator + outcome_exog[:, self._exp_pos_outcome] = exposure + for ix in self.moderators: + v = self.moderators[ix] + outcome_exog[:, ix[0]] = v + else: + # Need to regenerate the model exog + df = self.outcome_model.data.frame.copy() + df.loc[:, self.exposure] = exposure + df.loc[:, self.mediator] = mediator + for vname in self.moderators: + v = self.moderators[vname] + df.loc[:, vname] = v + klass = self.outcome_model.__class__ + init_kwargs = self.outcome_model._get_init_kwds() + model = klass.from_formula(data=df, **init_kwargs) + outcome_exog = model.exog + + return outcome_exog + + + def _fit_model(self, model, fit_kwargs, boot=False): + klass = model.__class__ + init_kwargs = model._get_init_kwds() + endog = model.endog + exog = model.exog + if boot: + ii = np.random.randint(0, len(endog), len(endog)) + endog = endog[ii] + exog = exog[ii, :] + outcome_model = klass(endog, exog, **init_kwargs) + return outcome_model.fit(**fit_kwargs) + + + def fit(self, method="parametric", n_rep=1000): + """ + Fit a regression model to assess mediation. + + Parameters + ---------- + method : string + Either 'parametric' or 'bootstrap'. + n_rep : integer + The number of simulation replications. + + Returns a MediationResults object. + """ + + if method.startswith("para"): + # Initial fit to unperturbed data. + outcome_result = self._fit_model(self.outcome_model, self._outcome_fit_kwargs) + mediator_result = self._fit_model(self.mediator_model, self._mediator_fit_kwargs) + elif not method.startswith("boot"): + raise("method must be either 'parametric' or 'bootstrap'") + + indirect_effects = [[], []] + direct_effects = [[], []] + + for iter in range(n_rep): + + if method == "parametric": + # Realization of outcome model parameters from sampling distribution + outcome_params = self._simulate_params(outcome_result) + + # Realization of mediation model parameters from sampling distribution + mediation_params = self._simulate_params(mediator_result) + else: + outcome_result = self._fit_model(self.outcome_model, + self._outcome_fit_kwargs, boot=True) + outcome_params = outcome_result.params + mediator_result = self._fit_model(self.mediator_model, + self._mediator_fit_kwargs, boot=True) + mediation_params = mediator_result.params + + # predicted outcomes[tm][te] is the outcome when the + # mediator is set to tm and the outcome/exposure is set to + # te. + predicted_outcomes = [[None, None], [None, None]] + for tm in 0, 1: + mex = self._get_mediator_exog(tm) + gen = self.mediator_model.get_distribution(mediation_params, + mediator_result.scale, + exog=mex) + potential_mediator = gen.rvs(mex.shape[0]) + + for te in 0, 1: + oex = self._get_outcome_exog(te, potential_mediator) + po = self.outcome_model.predict(outcome_params, oex) + predicted_outcomes[tm][te] = po + + for t in 0, 1: + indirect_effects[t].append(predicted_outcomes[1][t] - predicted_outcomes[0][t]) + direct_effects[t].append(predicted_outcomes[t][1] - predicted_outcomes[t][0]) + + for t in 0, 1: + indirect_effects[t] = np.asarray(indirect_effects[t]).T + direct_effects[t] = np.asarray(direct_effects[t]).T + + self.indirect_effects = indirect_effects + self.direct_effects = direct_effects + + rslt = MediationResults(self.indirect_effects, self.direct_effects) + rslt.method = method + return rslt + + +def _pvalue(vec): + return 2 * min(sum(vec > 0), sum(vec < 0)) / float(len(vec)) + + +class MediationResults(object): + """ + A class for holding the results of a mediation analysis. + + The following terms are used in the summary output: + + ACME : average causal mediated effect + ADE : average direct effect + """ + + def __init__(self, indirect_effects, direct_effects): + + self.indirect_effects = indirect_effects + self.direct_effects = direct_effects + + indirect_effects_avg = [None, None] + direct_effects_avg = [None, None] + for t in 0, 1: + indirect_effects_avg[t] = indirect_effects[t].mean(0) + direct_effects_avg[t] = direct_effects[t].mean(0) + + self.ACME_ctrl = indirect_effects_avg[0] + self.ACME_tx = indirect_effects_avg[1] + self.ADE_ctrl = direct_effects_avg[0] + self.ADE_tx = direct_effects_avg[1] + self.total_effect = (self.ACME_ctrl + self.ACME_tx + self.ADE_ctrl + self.ADE_tx) / 2 + + self.prop_med_ctrl = self.ACME_ctrl / self.total_effect + self.prop_med_tx = self.ACME_tx / self.total_effect + self.prop_med_avg = (self.prop_med_ctrl + self.prop_med_tx) / 2 + + self.ACME_avg = (self.ACME_ctrl + self.ACME_tx) / 2 + self.ADE_avg = (self.ADE_ctrl + self.ADE_tx) / 2 + + def summary(self, alpha=0.05): + """ + Provide a summary of a mediation analysis. + """ + + columns = ["Estimate", "Lower CI bound", "Upper CI bound", "P-value"] + index = ["ACME (control)", "ACME (treated)", + "ADE (control)", "ADE (treated)", + "Total effect", + "Prop. mediated (control)", + "Prop. mediated (treated)", + "ACME (average)", "ADE (average)", + "Prop. mediated (average)"] + smry = pd.DataFrame(columns=columns, index=index) + + for i, vec in enumerate([self.ACME_ctrl, self.ACME_tx, + self.ADE_ctrl, self.ADE_tx, + self.total_effect, self.prop_med_ctrl, + self.prop_med_tx, self.ACME_avg, + self.ADE_avg, self.prop_med_avg]): + + if ((vec is self.prop_med_ctrl) or (vec is self.prop_med_tx) or + (vec is self.prop_med_avg)): + smry.iloc[i, 0] = np.median(vec) + else: + smry.iloc[i, 0] = vec.mean() + smry.iloc[i, 1] = np.percentile(vec, 100 * alpha / 2) + smry.iloc[i, 2] = np.percentile(vec, 100 * (1 - alpha / 2)) + smry.iloc[i, 3] = _pvalue(vec) + + smry = smry.apply(pd.to_numeric, errors='coerce') + + return smry diff --git a/statsmodels/stats/moment_helpers.py b/statsmodels/stats/moment_helpers.py new file mode 100644 index 0000000..4bbfeb4 --- /dev/null +++ b/statsmodels/stats/moment_helpers.py @@ -0,0 +1,307 @@ +"""helper functions conversion between moments + +contains: + +* conversion between central and non-central moments, skew, kurtosis and + cummulants +* cov2corr : convert covariance matrix to correlation matrix + + +Author: Josef Perktold +License: BSD-3 + +""" +from statsmodels.compat.python import range + +import numpy as np +from scipy.special import comb + + +def _convert_to_multidim(x): + if any([isinstance(x, list), isinstance(x, tuple)]): + return np.array(x) + elif isinstance(x, np.ndarray): + return x + else: + # something strange was passed and the function probably + # will fall, maybe insert an exception? + return x + + +def _convert_from_multidim(x, totype=list): + if len(x.shape) < 2: + return totype(x) + return x.T + + +def mc2mnc(mc): + """convert central to non-central moments, uses recursive formula + optionally adjusts first moment to return mean + + """ + x = _convert_to_multidim(mc) + + def _local_counts(mc): + mean = mc[0] + mc = [1] + list(mc) # add zero moment = 1 + mc[1] = 0 # define central mean as zero for formula + mnc = [1, mean] # zero and first raw moments + for nn, m in enumerate(mc[2:]): + n = nn + 2 + mnc.append(0) + for k in range(n + 1): + mnc[n] += comb(n, k, exact=True) * mc[k] * mean ** (n - k) + return mnc[1:] + + res = np.apply_along_axis(_local_counts, 0, x) + # for backward compatibility convert 1-dim output to list/tuple + return _convert_from_multidim(res) + + +def mnc2mc(mnc, wmean=True): + """convert non-central to central moments, uses recursive formula + optionally adjusts first moment to return mean + + """ + X = _convert_to_multidim(mnc) + + def _local_counts(mnc): + mean = mnc[0] + mnc = [1] + list(mnc) # add zero moment = 1 + mu = [] + for n, m in enumerate(mnc): + mu.append(0) + for k in range(n + 1): + sgn_comb = (-1) ** (n - k) * comb(n, k, exact=True) + mu[n] += sgn_comb * mnc[k] * mean ** (n - k) + if wmean: + mu[1] = mean + return mu[1:] + + res = np.apply_along_axis(_local_counts, 0, X) + # for backward compatibility convert 1-dim output to list/tuple + return _convert_from_multidim(res) + + +def cum2mc(kappa): + """convert non-central moments to cumulants + recursive formula produces as many cumulants as moments + + References + ---------- + Kenneth Lange: Numerical Analysis for Statisticians, page 40 + """ + X = _convert_to_multidim(kappa) + + def _local_counts(kappa): + mc = [1, 0.0] # _kappa[0]] #insert 0-moment and mean + kappa0 = kappa[0] + kappa = [1] + list(kappa) + for nn, m in enumerate(kappa[2:]): + n = nn + 2 + mc.append(0) + for k in range(n - 1): + mc[n] += comb(n - 1, k, exact=True) * kappa[n - k] * mc[k] + mc[1] = kappa0 # insert mean as first moments by convention + return mc[1:] + + res = np.apply_along_axis(_local_counts, 0, X) + # for backward compatibility convert 1-dim output to list/tuple + return _convert_from_multidim(res) + + +def mnc2cum(mnc): + """convert non-central moments to cumulants + recursive formula produces as many cumulants as moments + + http://en.wikipedia.org/wiki/Cumulant#Cumulants_and_moments + """ + X = _convert_to_multidim(mnc) + + def _local_counts(mnc): + mnc = [1] + list(mnc) + kappa = [1] + for nn, m in enumerate(mnc[1:]): + n = nn + 1 + kappa.append(m) + for k in range(1, n): + num_ways = comb(n - 1, k - 1, exact=True) + kappa[n] -= num_ways * kappa[k] * mnc[n - k] + return kappa[1:] + + res = np.apply_along_axis(_local_counts, 0, X) + # for backward compatibility convert 1-dim output to list/tuple + return _convert_from_multidim(res) + + +def mc2cum(mc): + """ + just chained because I have still the test case + """ + first_step = mc2mnc(mc) + if isinstance(first_step, np.ndarray): + first_step = first_step.T + return mnc2cum(first_step) + # return np.apply_along_axis(lambda x: mnc2cum(mc2mnc(x)), 0, mc) + + +def mvsk2mc(args): + """convert mean, variance, skew, kurtosis to central moments""" + X = _convert_to_multidim(args) + + def _local_counts(args): + mu, sig2, sk, kur = args + cnt = [None] * 4 + cnt[0] = mu + cnt[1] = sig2 + cnt[2] = sk * sig2 ** 1.5 + cnt[3] = (kur + 3.0) * sig2 ** 2.0 + return tuple(cnt) + + res = np.apply_along_axis(_local_counts, 0, X) + # for backward compatibility convert 1-dim output to list/tuple + return _convert_from_multidim(res, tuple) + + +def mvsk2mnc(args): + """convert mean, variance, skew, kurtosis to non-central moments""" + X = _convert_to_multidim(args) + + def _local_counts(args): + mc, mc2, skew, kurt = args + mnc = mc + mnc2 = mc2 + mc * mc + mc3 = skew * (mc2 ** 1.5) # 3rd central moment + mnc3 = mc3 + 3 * mc * mc2 + mc ** 3 # 3rd non-central moment + mc4 = (kurt + 3.0) * (mc2 ** 2.0) # 4th central moment + mnc4 = mc4 + 4 * mc * mc3 + 6 * mc * mc * mc2 + mc ** 4 + return (mnc, mnc2, mnc3, mnc4) + + res = np.apply_along_axis(_local_counts, 0, X) + # for backward compatibility convert 1-dim output to list/tuple + return _convert_from_multidim(res, tuple) + + +def mc2mvsk(args): + """convert central moments to mean, variance, skew, kurtosis""" + X = _convert_to_multidim(args) + + def _local_counts(args): + mc, mc2, mc3, mc4 = args + skew = np.divide(mc3, mc2 ** 1.5) + kurt = np.divide(mc4, mc2 ** 2.0) - 3.0 + return (mc, mc2, skew, kurt) + + res = np.apply_along_axis(_local_counts, 0, X) + # for backward compatibility convert 1-dim output to list/tuple + return _convert_from_multidim(res, tuple) + + +def mnc2mvsk(args): + """convert central moments to mean, variance, skew, kurtosis + """ + X = _convert_to_multidim(args) + + def _local_counts(args): + # convert four non-central moments to central moments + mnc, mnc2, mnc3, mnc4 = args + mc = mnc + mc2 = mnc2 - mnc * mnc + mc3 = mnc3 - (3 * mc * mc2 + mc ** 3) # 3rd central moment + mc4 = mnc4 - (4 * mc * mc3 + 6 * mc * mc * mc2 + mc ** 4) + return mc2mvsk((mc, mc2, mc3, mc4)) + + res = np.apply_along_axis(_local_counts, 0, X) + # for backward compatibility convert 1-dim output to list/tuple + return _convert_from_multidim(res, tuple) + +# def mnc2mc(args): +# """convert four non-central moments to central moments +# """ +# mnc, mnc2, mnc3, mnc4 = args +# mc = mnc +# mc2 = mnc2 - mnc*mnc +# mc3 = mnc3 - (3*mc*mc2+mc**3) # 3rd central moment +# mc4 = mnc4 - (4*mc*mc3+6*mc*mc*mc2+mc**4) +# return mc, mc2, mc + +# TODO: no return, did it get lost in cut-paste? + + +def cov2corr(cov, return_std=False): + """ + convert covariance matrix to correlation matrix + + Parameters + ---------- + cov : array_like, 2d + covariance matrix, see Notes + + Returns + ------- + corr : ndarray (subclass) + correlation matrix + return_std : bool + If this is true then the standard deviation is also returned. + By default only the correlation matrix is returned. + + Notes + ----- + This function does not convert subclasses of ndarrays. This requires that + division is defined elementwise. np.ma.array and np.matrix are allowed. + """ + cov = np.asanyarray(cov) + std_ = np.sqrt(np.diag(cov)) + corr = cov / np.outer(std_, std_) + if return_std: + return corr, std_ + else: + return corr + + +def corr2cov(corr, std): + """ + convert correlation matrix to covariance matrix given standard deviation + + Parameters + ---------- + corr : array_like, 2d + correlation matrix, see Notes + std : array_like, 1d + standard deviation + + Returns + ------- + cov : ndarray (subclass) + covariance matrix + + Notes + ----- + This function does not convert subclasses of ndarrays. This requires + that multiplication is defined elementwise. np.ma.array are allowed, but + not matrices. + + """ + corr = np.asanyarray(corr) + std_ = np.asanyarray(std) + cov = corr * np.outer(std_, std_) + return cov + + +def se_cov(cov): + """ + get standard deviation from covariance matrix + + just a shorthand function np.sqrt(np.diag(cov)) + + Parameters + ---------- + cov : array_like, square + covariance matrix + + Returns + ------- + std : ndarray + standard deviation from diagonal of cov + """ + return np.sqrt(np.diag(cov)) diff --git a/statsmodels/stats/multicomp.py b/statsmodels/stats/multicomp.py new file mode 100644 index 0000000..f63bc61 --- /dev/null +++ b/statsmodels/stats/multicomp.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +""" + +Created on Fri Mar 30 18:27:25 2012 +Author: Josef Perktold +""" + +from statsmodels.sandbox.stats.multicomp import ( # noqa:F401 + tukeyhsd, MultiComparison) + +__all__ = ['tukeyhsd', 'MultiComparison'] + + +def pairwise_tukeyhsd(endog, groups, alpha=0.05): + """ + Calculate all pairwise comparisons with TukeyHSD confidence intervals + + Parameters + ---------- + endog : ndarray, float, 1d + response variable + groups : ndarray, 1d + array with groups, can be string or integers + alpha : float + significance level for the test + + Returns + ------- + results : TukeyHSDResults instance + A results class containing relevant data and some post-hoc + calculations, including adjusted p-value + + Notes + ----- + This is just a wrapper around tukeyhsd method of MultiComparison + + See Also + -------- + MultiComparison + tukeyhsd + statsmodels.sandbox.stats.multicomp.TukeyHSDResults + """ + + return MultiComparison(endog, groups).tukeyhsd(alpha=alpha) diff --git a/statsmodels/stats/multitest.py b/statsmodels/stats/multitest.py new file mode 100644 index 0000000..8b259bb --- /dev/null +++ b/statsmodels/stats/multitest.py @@ -0,0 +1,692 @@ +'''Multiple Testing and P-Value Correction + + +Author: Josef Perktold +License: BSD-3 + +''' + +from statsmodels.compat.python import range + +from collections import OrderedDict + +import numpy as np + +from statsmodels.stats._knockoff import RegressionFDR + +__all__ = ['fdrcorrection', 'fdrcorrection_twostage', 'local_fdr', + 'multipletests', 'NullDistribution', 'RegressionFDR'] + +# ============================================== +# +# Part 1: Multiple Tests and P-Value Correction +# +# ============================================== + + +def _ecdf(x): + '''no frills empirical cdf used in fdrcorrection + ''' + nobs = len(x) + return np.arange(1,nobs+1)/float(nobs) + +multitest_methods_names = {'b': 'Bonferroni', + 's': 'Sidak', + 'h': 'Holm', + 'hs': 'Holm-Sidak', + 'sh': 'Simes-Hochberg', + 'ho': 'Hommel', + 'fdr_bh': 'FDR Benjamini-Hochberg', + 'fdr_by': 'FDR Benjamini-Yekutieli', + 'fdr_tsbh': 'FDR 2-stage Benjamini-Hochberg', + 'fdr_tsbky': 'FDR 2-stage Benjamini-Krieger-Yekutieli', + 'fdr_gbs': 'FDR adaptive Gavrilov-Benjamini-Sarkar' + } + +_alias_list = [['b', 'bonf', 'bonferroni'], + ['s', 'sidak'], + ['h', 'holm'], + ['hs', 'holm-sidak'], + ['sh', 'simes-hochberg'], + ['ho', 'hommel'], + ['fdr_bh', 'fdr_i', 'fdr_p', 'fdri', 'fdrp'], + ['fdr_by', 'fdr_n', 'fdr_c', 'fdrn', 'fdrcorr'], + ['fdr_tsbh', 'fdr_2sbh'], + ['fdr_tsbky', 'fdr_2sbky', 'fdr_twostage'], + ['fdr_gbs'] + ] + + +multitest_alias = OrderedDict() +for m in _alias_list: + multitest_alias[m[0]] = m[0] + for a in m[1:]: + multitest_alias[a] = m[0] + +def multipletests(pvals, alpha=0.05, method='hs', is_sorted=False, + returnsorted=False): + """ + Test results and p-value correction for multiple tests + + Parameters + ---------- + pvals : array_like, 1-d + uncorrected p-values. Must be 1-dimensional. + alpha : float + FWER, family-wise error rate, e.g. 0.1 + method : string + Method used for testing and adjustment of pvalues. Can be either the + full name or initial letters. Available methods are: + + - `bonferroni` : one-step correction + - `sidak` : one-step correction + - `holm-sidak` : step down method using Sidak adjustments + - `holm` : step-down method using Bonferroni adjustments + - `simes-hochberg` : step-up method (independent) + - `hommel` : closed method based on Simes tests (non-negative) + - `fdr_bh` : Benjamini/Hochberg (non-negative) + - `fdr_by` : Benjamini/Yekutieli (negative) + - `fdr_tsbh` : two stage fdr correction (non-negative) + - `fdr_tsbky` : two stage fdr correction (non-negative) + + is_sorted : bool + If False (default), the p_values will be sorted, but the corrected + pvalues are in the original order. If True, then it assumed that the + pvalues are already sorted in ascending order. + returnsorted : bool + not tested, return sorted p-values instead of original sequence + + Returns + ------- + reject : array, boolean + true for hypothesis that can be rejected for given alpha + pvals_corrected : array + p-values corrected for multiple tests + alphacSidak: float + corrected alpha for Sidak method + alphacBonf: float + corrected alpha for Bonferroni method + + Notes + ----- + There may be API changes for this function in the future. + + Except for 'fdr_twostage', the p-value correction is independent of the + alpha specified as argument. In these cases the corrected p-values + can also be compared with a different alpha. In the case of 'fdr_twostage', + the corrected p-values are specific to the given alpha, see + ``fdrcorrection_twostage``. + + The 'fdr_gbs' procedure is not verified against another package, p-values + are derived from scratch and are not derived in the reference. In Monte + Carlo experiments the method worked correctly and maintained the false + discovery rate. + + All procedures that are included, control FWER or FDR in the independent + case, and most are robust in the positively correlated case. + + `fdr_gbs`: high power, fdr control for independent case and only small + violation in positively correlated case + + **Timing**: + + Most of the time with large arrays is spent in `argsort`. When + we want to calculate the p-value for several methods, then it is more + efficient to presort the pvalues, and put the results back into the + original order outside of the function. + + Method='hommel' is very slow for large arrays, since it requires the + evaluation of n partitions, where n is the number of p-values. + """ + import gc + pvals = np.asarray(pvals) + alphaf = alpha # Notation ? + + if not is_sorted: + sortind = np.argsort(pvals) + pvals = np.take(pvals, sortind) + + ntests = len(pvals) + alphacSidak = 1 - np.power((1. - alphaf), 1./ntests) + alphacBonf = alphaf / float(ntests) + if method.lower() in ['b', 'bonf', 'bonferroni']: + reject = pvals <= alphacBonf + pvals_corrected = pvals * float(ntests) + + elif method.lower() in ['s', 'sidak']: + reject = pvals <= alphacSidak + pvals_corrected = 1 - np.power((1. - pvals), ntests) + + elif method.lower() in ['hs', 'holm-sidak']: + alphacSidak_all = 1 - np.power((1. - alphaf), + 1./np.arange(ntests, 0, -1)) + notreject = pvals > alphacSidak_all + del alphacSidak_all + + nr_index = np.nonzero(notreject)[0] + if nr_index.size == 0: + # nonreject is empty, all rejected + notrejectmin = len(pvals) + else: + notrejectmin = np.min(nr_index) + notreject[notrejectmin:] = True + reject = ~notreject + del notreject + + pvals_corrected_raw = 1 - np.power((1. - pvals), + np.arange(ntests, 0, -1)) + pvals_corrected = np.maximum.accumulate(pvals_corrected_raw) + del pvals_corrected_raw + + elif method.lower() in ['h', 'holm']: + notreject = pvals > alphaf / np.arange(ntests, 0, -1) + nr_index = np.nonzero(notreject)[0] + if nr_index.size == 0: + # nonreject is empty, all rejected + notrejectmin = len(pvals) + else: + notrejectmin = np.min(nr_index) + notreject[notrejectmin:] = True + reject = ~notreject + pvals_corrected_raw = pvals * np.arange(ntests, 0, -1) + pvals_corrected = np.maximum.accumulate(pvals_corrected_raw) + del pvals_corrected_raw + gc.collect() + + elif method.lower() in ['sh', 'simes-hochberg']: + alphash = alphaf / np.arange(ntests, 0, -1) + reject = pvals <= alphash + rejind = np.nonzero(reject) + if rejind[0].size > 0: + rejectmax = np.max(np.nonzero(reject)) + reject[:rejectmax] = True + pvals_corrected_raw = np.arange(ntests, 0, -1) * pvals + pvals_corrected = np.minimum.accumulate(pvals_corrected_raw[::-1])[::-1] + del pvals_corrected_raw + + elif method.lower() in ['ho', 'hommel']: + # we need a copy because we overwrite it in a loop + a = pvals.copy() + for m in range(ntests, 1, -1): + cim = np.min(m * pvals[-m:] / np.arange(1,m+1.)) + a[-m:] = np.maximum(a[-m:], cim) + a[:-m] = np.maximum(a[:-m], np.minimum(m * pvals[:-m], cim)) + pvals_corrected = a + reject = a <= alphaf + + elif method.lower() in ['fdr_bh', 'fdr_i', 'fdr_p', 'fdri', 'fdrp']: + # delegate, call with sorted pvals + reject, pvals_corrected = fdrcorrection(pvals, alpha=alpha, + method='indep', + is_sorted=True) + elif method.lower() in ['fdr_by', 'fdr_n', 'fdr_c', 'fdrn', 'fdrcorr']: + # delegate, call with sorted pvals + reject, pvals_corrected = fdrcorrection(pvals, alpha=alpha, + method='n', + is_sorted=True) + elif method.lower() in ['fdr_tsbky', 'fdr_2sbky', 'fdr_twostage']: + # delegate, call with sorted pvals + reject, pvals_corrected = fdrcorrection_twostage(pvals, alpha=alpha, + method='bky', + is_sorted=True)[:2] + elif method.lower() in ['fdr_tsbh', 'fdr_2sbh']: + # delegate, call with sorted pvals + reject, pvals_corrected = fdrcorrection_twostage(pvals, alpha=alpha, + method='bh', + is_sorted=True)[:2] + + elif method.lower() in ['fdr_gbs']: + #adaptive stepdown in Gavrilov, Benjamini, Sarkar, Annals of Statistics 2009 +## notreject = pvals > alphaf / np.arange(ntests, 0, -1) #alphacSidak +## notrejectmin = np.min(np.nonzero(notreject)) +## notreject[notrejectmin:] = True +## reject = ~notreject + + ii = np.arange(1, ntests + 1) + q = (ntests + 1. - ii)/ii * pvals / (1. - pvals) + pvals_corrected_raw = np.maximum.accumulate(q) #up requirementd + + pvals_corrected = np.minimum.accumulate(pvals_corrected_raw[::-1])[::-1] + del pvals_corrected_raw + reject = pvals_corrected <= alpha + + else: + raise ValueError('method not recognized') + + if pvals_corrected is not None: #not necessary anymore + pvals_corrected[pvals_corrected>1] = 1 + if is_sorted or returnsorted: + return reject, pvals_corrected, alphacSidak, alphacBonf + else: + pvals_corrected_ = np.empty_like(pvals_corrected) + pvals_corrected_[sortind] = pvals_corrected + del pvals_corrected + reject_ = np.empty_like(reject) + reject_[sortind] = reject + return reject_, pvals_corrected_, alphacSidak, alphacBonf + + +def fdrcorrection(pvals, alpha=0.05, method='indep', is_sorted=False): + '''pvalue correction for false discovery rate + + This covers Benjamini/Hochberg for independent or positively correlated and + Benjamini/Yekutieli for general or negatively correlated tests. Both are + available in the function multipletests, as method=`fdr_bh`, resp. `fdr_by`. + + Parameters + ---------- + pvals : array_like + set of p-values of the individual tests. + alpha : float + error rate + method : {'indep', 'negcorr') + + Returns + ------- + rejected : array, bool + True if a hypothesis is rejected, False if not + pvalue-corrected : array + pvalues adjusted for multiple hypothesis testing to limit FDR + + Notes + ----- + + If there is prior information on the fraction of true hypothesis, then alpha + should be set to alpha * m/m_0 where m is the number of tests, + given by the p-values, and m_0 is an estimate of the true hypothesis. + (see Benjamini, Krieger and Yekuteli) + + The two-step method of Benjamini, Krieger and Yekutiel that estimates the number + of false hypotheses will be available (soon). + + Method names can be abbreviated to first letter, 'i' or 'p' for fdr_bh and 'n' for + fdr_by. + + + + ''' + pvals = np.asarray(pvals) + + if not is_sorted: + pvals_sortind = np.argsort(pvals) + pvals_sorted = np.take(pvals, pvals_sortind) + else: + pvals_sorted = pvals # alias + + if method in ['i', 'indep', 'p', 'poscorr']: + ecdffactor = _ecdf(pvals_sorted) + elif method in ['n', 'negcorr']: + cm = np.sum(1./np.arange(1, len(pvals_sorted)+1)) #corrected this + ecdffactor = _ecdf(pvals_sorted) / cm +## elif method in ['n', 'negcorr']: +## cm = np.sum(np.arange(len(pvals))) +## ecdffactor = ecdf(pvals_sorted)/cm + else: + raise ValueError('only indep and negcorr implemented') + reject = pvals_sorted <= ecdffactor*alpha + if reject.any(): + rejectmax = max(np.nonzero(reject)[0]) + reject[:rejectmax] = True + + pvals_corrected_raw = pvals_sorted / ecdffactor + pvals_corrected = np.minimum.accumulate(pvals_corrected_raw[::-1])[::-1] + del pvals_corrected_raw + pvals_corrected[pvals_corrected>1] = 1 + if not is_sorted: + pvals_corrected_ = np.empty_like(pvals_corrected) + pvals_corrected_[pvals_sortind] = pvals_corrected + del pvals_corrected + reject_ = np.empty_like(reject) + reject_[pvals_sortind] = reject + return reject_, pvals_corrected_ + else: + return reject, pvals_corrected + + +def fdrcorrection_twostage(pvals, alpha=0.05, method='bky', iter=False, + is_sorted=False): + '''(iterated) two stage linear step-up procedure with estimation of number of true + hypotheses + + Benjamini, Krieger and Yekuteli, procedure in Definition 6 + + Parameters + ---------- + pvals : array_like + set of p-values of the individual tests. + alpha : float + error rate + method : {'bky', 'bh') + see Notes for details + + * 'bky' - implements the procedure in Definition 6 of Benjamini, Krieger + and Yekuteli 2006 + * 'bh' - the two stage method of Benjamini and Hochberg + + iter : bool + + Returns + ------- + rejected : array, bool + True if a hypothesis is rejected, False if not + pvalue-corrected : array + pvalues adjusted for multiple hypotheses testing to limit FDR + m0 : int + ntest - rej, estimated number of true hypotheses + alpha_stages : list of floats + A list of alphas that have been used at each stage + + Notes + ----- + The returned corrected p-values are specific to the given alpha, they + cannot be used for a different alpha. + + The returned corrected p-values are from the last stage of the fdr_bh + linear step-up procedure (fdrcorrection0 with method='indep') corrected + for the estimated fraction of true hypotheses. + This means that the rejection decision can be obtained with + ``pval_corrected <= alpha``, where ``alpha`` is the origianal significance + level. + (Note: This has changed from earlier versions (<0.5.0) of statsmodels.) + + BKY described several other multi-stage methods, which would be easy to implement. + However, in their simulation the simple two-stage method (with iter=False) was the + most robust to the presence of positive correlation + + TODO: What should be returned? + + ''' + pvals = np.asarray(pvals) + + if not is_sorted: + pvals_sortind = np.argsort(pvals) + pvals = np.take(pvals, pvals_sortind) + + ntests = len(pvals) + if method == 'bky': + fact = (1.+alpha) + alpha_prime = alpha / fact + elif method == 'bh': + fact = 1. + alpha_prime = alpha + else: + raise ValueError("only 'bky' and 'bh' are available as method") + + alpha_stages = [alpha_prime] + rej, pvalscorr = fdrcorrection(pvals, alpha=alpha_prime, method='indep', + is_sorted=True) + r1 = rej.sum() + if (r1 == 0) or (r1 == ntests): + return rej, pvalscorr * fact, ntests - r1, alpha_stages + ri_old = r1 + + while True: + ntests0 = 1.0 * ntests - ri_old + alpha_star = alpha_prime * ntests / ntests0 + alpha_stages.append(alpha_star) + #print ntests0, alpha_star + rej, pvalscorr = fdrcorrection(pvals, alpha=alpha_star, method='indep', + is_sorted=True) + ri = rej.sum() + if (not iter) or ri == ri_old: + break + elif ri < ri_old: + # prevent cycles and endless loops + raise RuntimeError(" oops - shouldn't be here") + ri_old = ri + + # make adjustment to pvalscorr to reflect estimated number of Non-Null cases + # decision is then pvalscorr < alpha (or <=) + pvalscorr *= ntests0 * 1.0 / ntests + if method == 'bky': + pvalscorr *= (1. + alpha) + + if not is_sorted: + pvalscorr_ = np.empty_like(pvalscorr) + pvalscorr_[pvals_sortind] = pvalscorr + del pvalscorr + reject = np.empty_like(rej) + reject[pvals_sortind] = rej + return reject, pvalscorr_, ntests - ri, alpha_stages + else: + return rej, pvalscorr, ntests - ri, alpha_stages + + +def local_fdr(zscores, null_proportion=1.0, null_pdf=None, deg=7, + nbins=30): + """ + Calculate local FDR values for a list of Z-scores. + + Parameters + ---------- + zscores : array-like + A vector of Z-scores + null_proportion : float + The assumed proportion of true null hypotheses + null_pdf : function mapping reals to positive reals + The density of null Z-scores; if None, use standard normal + deg : integer + The maximum exponent in the polynomial expansion of the + density of non-null Z-scores + nbins : integer + The number of bins for estimating the marginal density + of Z-scores. + + Returns + ------- + fdr : array-like + A vector of FDR values + + References + ---------- + B Efron (2008). Microarrays, Empirical Bayes, and the Two-Groups + Model. Statistical Science 23:1, 1-22. + + Examples + -------- + Basic use (the null Z-scores are taken to be standard normal): + + >>> from statsmodels.stats.multitest import local_fdr + >>> import numpy as np + >>> zscores = np.random.randn(30) + >>> fdr = local_fdr(zscores) + + Use a Gaussian null distribution estimated from the data: + + >>> null = EmpiricalNull(zscores) + >>> fdr = local_fdr(zscores, null_pdf=null.pdf) + """ + + from statsmodels.genmod.generalized_linear_model import GLM + from statsmodels.genmod.generalized_linear_model import families + from statsmodels.regression.linear_model import OLS + + # Bins for Poisson modeling of the marginal Z-score density + minz = min(zscores) + maxz = max(zscores) + bins = np.linspace(minz, maxz, nbins) + + # Bin counts + zhist = np.histogram(zscores, bins)[0] + + # Bin centers + zbins = (bins[:-1] + bins[1:]) / 2 + + # The design matrix at bin centers + dmat = np.vander(zbins, deg + 1) + + # Use this to get starting values for Poisson regression + md = OLS(np.log(1 + zhist), dmat).fit() + + # Poisson regression + md = GLM(zhist, dmat, family=families.Poisson()).fit(start_params=md.params) + + # The design matrix for all Z-scores + dmat_full = np.vander(zscores, deg + 1) + + # The height of the estimated marginal density of Z-scores, + # evaluated at every observed Z-score. + fz = md.predict(dmat_full) / (len(zscores) * (bins[1] - bins[0])) + + # The null density. + if null_pdf is None: + f0 = np.exp(-0.5 * zscores**2) / np.sqrt(2 * np.pi) + else: + f0 = null_pdf(zscores) + + # The local FDR values + fdr = null_proportion * f0 / fz + + fdr = np.clip(fdr, 0, 1) + + return fdr + + +class NullDistribution(object): + """ + Estimate a Gaussian distribution for the null Z-scores. + + The observed Z-scores consist of both null and non-null values. + The fitted distribution of null Z-scores is Gaussian, but may have + non-zero mean and/or non-unit scale. + + Parameters + ---------- + zscores : array-like + The observed Z-scores. + null_lb : float + Z-scores between `null_lb` and `null_ub` are all considered to be + true null hypotheses. + null_ub : float + See `null_lb`. + estimate_mean : bool + If True, estimate the mean of the distribution. If False, the + mean is fixed at zero. + estimate_scale : bool + If True, estimate the scale of the distribution. If False, the + scale parameter is fixed at 1. + estimate_null_proportion : bool + If True, estimate the proportion of true null hypotheses (i.e. + the proportion of z-scores with expected value zero). If False, + this parameter is fixed at 1. + + Attributes + ---------- + mean : float + The estimated mean of the empirical null distribution + sd : float + The estimated standard deviation of the empirical null distribution + null_proportion : float + The estimated proportion of true null hypotheses among all hypotheses + + References + ---------- + B Efron (2008). Microarrays, Empirical Bayes, and the Two-Groups + Model. Statistical Science 23:1, 1-22. + + Notes + ----- + See also: + + http://nipy.org/nipy/labs/enn.html#nipy.algorithms.statistics.empirical_pvalue.NormalEmpiricalNull.fdr + """ + + def __init__(self, zscores, null_lb=-1, null_ub=1, estimate_mean=True, + estimate_scale=True, estimate_null_proportion=False): + + # Extract the null z-scores + ii = np.flatnonzero((zscores >= null_lb) & (zscores <= null_ub)) + if len(ii) == 0: + raise RuntimeError("No Z-scores fall between null_lb and null_ub") + zscores0 = zscores[ii] + + # Number of Z-scores, and null Z-scores + n_zs, n_zs0 = len(zscores), len(zscores0) + + # Unpack and transform the parameters to the natural scale, hold + # parameters fixed as specified. + def xform(params): + + mean = 0. + sd = 1. + prob = 1. + + ii = 0 + if estimate_mean: + mean = params[ii] + ii += 1 + if estimate_scale: + sd = np.exp(params[ii]) + ii += 1 + if estimate_null_proportion: + prob = 1 / (1 + np.exp(-params[ii])) + + return mean, sd, prob + + + from scipy.stats.distributions import norm + + + def fun(params): + """ + Negative log-likelihood of z-scores. + + The function has three arguments, packed into a vector: + + mean : location parameter + logscale : log of the scale parameter + logitprop : logit of the proportion of true nulls + + The implementation follows section 4 from Efron 2008. + """ + + d, s, p = xform(params) + + # Mass within the central region + central_mass = (norm.cdf((null_ub - d) / s) - + norm.cdf((null_lb - d) / s)) + + # Probability that a Z-score is null and is in the central region + cp = p * central_mass + + # Binomial term + rval = n_zs0 * np.log(cp) + (n_zs - n_zs0) * np.log(1 - cp) + + # Truncated Gaussian term for null Z-scores + zv = (zscores0 - d) / s + rval += np.sum(-zv**2 / 2) - n_zs0 * np.log(s) + rval -= n_zs0 * np.log(central_mass) + + return -rval + + + # Estimate the parameters + from scipy.optimize import minimize + # starting values are mean = 0, scale = 1, p0 ~ 1 + mz = minimize(fun, np.r_[0., 0, 3], method="Nelder-Mead") + mean, sd, prob = xform(mz['x']) + + self.mean = mean + self.sd = sd + self.null_proportion = prob + + + # The fitted null density function + def pdf(self, zscores): + """ + Evaluates the fitted emirical null Z-score density. + + Parameters + ---------- + zscores : scalar or array-like + The point or points at which the density is to be + evaluated. + + Returns + ------- + The empirical null Z-score density evaluated at the given + points. + """ + + zval = (zscores - self.mean) / self.sd + return np.exp(-0.5*zval**2 - np.log(self.sd) - 0.5*np.log(2*np.pi)) diff --git a/statsmodels/stats/multivariate_tools.py b/statsmodels/stats/multivariate_tools.py new file mode 100644 index 0000000..e2452e5 --- /dev/null +++ b/statsmodels/stats/multivariate_tools.py @@ -0,0 +1,246 @@ +'''Tools for multivariate analysis + + +Author : Josef Perktold +License : BSD-3 + + + +TODO: + +- names of functions, currently just "working titles" + +''' + + + +import numpy as np + +from statsmodels.tools.tools import Bunch + +def partial_project(endog, exog): + '''helper function to get linear projection or partialling out of variables + + endog variables are projected on exog variables + + Parameters + ---------- + endog : ndarray + array of variables where the effect of exog is partialled out. + exog : ndarray + array of variables on which the endog variables are projected. + + Returns + ------- + res : instance of Bunch with + + - params : OLS parameter estimates from projection of endog on exog + - fittedvalues : predicted values of endog given exog + - resid : residual of the regression, values of endog with effect of + exog partialled out + + Notes + ----- + This is no-frills mainly for internal calculations, no error checking or + array conversion is performed, at least for now. + + ''' + x1, x2 = endog, exog + params = np.linalg.pinv(x2).dot(x1) + predicted = x2.dot(params) + residual = x1 - predicted + res = Bunch(params=params, + fittedvalues=predicted, + resid=residual) + + return res + + + +def cancorr(x1, x2, demean=True, standardize=False): + '''canonical correlation coefficient beween 2 arrays + + Parameters + ---------- + x1, x2 : ndarrays, 2_D + two 2-dimensional data arrays, observations in rows, variables in columns + demean : bool + If demean is true, then the mean is subtracted from each variable + standardize : bool + If standardize is true, then each variable is demeaned and divided by + its standard deviation. Rescaling does not change the canonical + correlation coefficients. + + Returns + ------- + ccorr : ndarray, 1d + canonical correlation coefficients, sorted from largest to smallest. + Note, that these are the square root of the eigenvalues. + + Notes + ----- + This is a helper function for other statistical functions. It only + calculates the canonical correlation coefficients and does not do a full + canoncial correlation analysis + + The canonical correlation coefficient is calculated with the generalized + matrix inverse and does not raise an exception if one of the data arrays + have less than full column rank. + + See Also + -------- + cc_ranktest + cc_stats + CCA not yet + + ''' + #x, y = x1, x2 + if demean or standardize: + x1 = (x1 - x1.mean(0)) + x2 = (x2 - x2.mean(0)) + + if standardize: + #std doesn't make a difference to canonical correlation coefficients + x1 /= x1.std(0) + x2 /= x2.std(0) + + t1 = np.linalg.pinv(x1).dot(x2) + t2 = np.linalg.pinv(x2).dot(x1) + m = t1.dot(t2) + cc = np.sqrt(np.linalg.eigvals(m)) + cc.sort() + return cc[::-1] + + +def cc_ranktest(x1, x2, demean=True, fullrank=False): + '''rank tests based on smallest canonical correlation coefficients + + Anderson canonical correlations test (LM test) and + Cragg-Donald test (Wald test) + Assumes homoskedasticity and independent observations, overrejects if + there is heteroscedasticity or autocorrelation. + + The Null Hypothesis is that the rank is k - 1, the alternative hypothesis + is that the rank is at least k. + + + Parameters + ---------- + x1, x2 : ndarrays, 2_D + two 2-dimensional data arrays, observations in rows, variables in columns + demean : bool + If demean is true, then the mean is subtracted from each variable. + fullrank : bool + If true, then only the test that the matrix has full rank is returned. + If false, the test for all possible ranks are returned. However, no + the p-values are not corrected for the multiplicity of tests. + + Returns + ------- + value : float + value of the test statistic + p-value : float + p-value for the test Null Hypothesis tha the smallest canonical + correlation coefficient is zero. based on chi-square distribution + df : int + degrees of freedom for thechi-square distribution in the hypothesis test + ccorr : ndarray, 1d + All canonical correlation coefficients sorted from largest to smallest. + + Notes + ----- + Degrees of freedom for the distribution of the test statistic are based on + number of columns of x1 and x2 and not on their matrix rank. + (I'm not sure yet what the interpretation of the test is if x1 or x2 are of + reduced rank.) + + See Also + -------- + cancorr + cc_stats + + ''' + + from scipy import stats + + nobs1, k1 = x1.shape + nobs2, k2 = x2.shape + + cc = cancorr(x1, x2, demean=demean) + cc2 = cc * cc + if fullrank: + df = np.abs(k1 - k2) + 1 + value = nobs1 * cc2[-1] + w_value = nobs1 * (cc2[-1] / (1. - cc2[-1])) + return value, stats.chi2.sf(value, df), df, cc, w_value, stats.chi2.sf(w_value, df) + else: + r = np.arange(min(k1, k2))[::-1] + df = (k1 - r) * (k2 - r) + values = nobs1 * cc2[::-1].cumsum() + w_values = nobs1 * (cc2 / (1. - cc2))[::-1].cumsum() + return values, stats.chi2.sf(values, df), df, cc, w_values, stats.chi2.sf(w_values, df) + + +def cc_stats(x1, x2, demean=True): + '''MANOVA statistics based on canonical correlation coefficient + + Calculates Pillai's Trace, Wilk's Lambda, Hotelling's Trace and + Roy's Largest Root. + + Parameters + ---------- + x1, x2 : ndarrays, 2_D + two 2-dimensional data arrays, observations in rows, variables in columns + demean : bool + If demean is true, then the mean is subtracted from each variable. + + Returns + ------- + res : dict + Dictionary containing the test statistics. + + Notes + ----- + + same as `canon` in Stata + + missing: F-statistics and p-values + + TODO: should return a results class instead + produces nans sometimes, singular, perfect correlation of x1, x2 ? + + ''' + + nobs1, k1 = x1.shape # endogenous ? + nobs2, k2 = x2.shape + cc = cancorr(x1, x2, demean=demean) + cc2 = cc**2 + lam = (cc2 / (1 - cc2)) # what if max cc2 is 1 ? + # Problem: ccr might not care if x1 or x2 are reduced rank, + # but df will depend on rank + df_model = k1 * k2 # df_hypothesis (we do not include mean in x1, x2) + df_resid = k1 * (nobs1 - k2 - demean) + s = min(df_model, k1) + m = 0.5 * (df_model - k1) + n = 0.5 * (df_resid - k1 - 1) + + df1 = k1 * df_model + df2 = k2 + + + pt_value = cc2.sum() # Pillai's trace + wl_value = np.product(1 / (1 + lam)) # Wilk's Lambda + ht_value = lam.sum() # Hotelling's Trace + rm_value = lam.max() # Roy's largest root + #from scipy import stats + # what's the distribution, the test statistic ? + res = {} + res['canonical correlation coefficient'] = cc + res['eigenvalues'] = lam + res["Pillai's Trace"] = pt_value + res["Wilk's Lambda"] = wl_value + res["Hotelling's Trace"] = ht_value + res["Roy's Largest Root"] = rm_value + res['df_resid'] = df_resid + res['df_m'] = m + return res diff --git a/statsmodels/stats/outliers_influence.py b/statsmodels/stats/outliers_influence.py new file mode 100644 index 0000000..b33ab93 --- /dev/null +++ b/statsmodels/stats/outliers_influence.py @@ -0,0 +1,1377 @@ +# -*- coding: utf-8 -*- +"""Influence and Outlier Measures + +Created on Sun Jan 29 11:16:09 2012 + +Author: Josef Perktold +License: BSD-3 +""" +from collections import defaultdict + +import numpy as np + +from statsmodels.compat.python import lzip +from statsmodels.graphics._regressionplots_doc import _plot_influence_doc +from statsmodels.regression.linear_model import OLS +from statsmodels.stats.multitest import multipletests +from statsmodels.tools.decorators import cache_readonly +from statsmodels.tools.tools import maybe_unwrap_results + + +# outliers test convenience wrapper + +def outlier_test(model_results, method='bonf', alpha=.05, labels=None, + order=False, cutoff=None): + """ + Outlier Tests for RegressionResults instances. + + Parameters + ---------- + model_results : RegressionResults + Linear model results + method : str + - `bonferroni` : one-step correction + - `sidak` : one-step correction + - `holm-sidak` : + - `holm` : + - `simes-hochberg` : + - `hommel` : + - `fdr_bh` : Benjamini/Hochberg + - `fdr_by` : Benjamini/Yekutieli + See `statsmodels.stats.multitest.multipletests` for details. + alpha : float + familywise error rate + labels : None or array_like + If `labels` is not None, then it will be used as index to the + returned pandas DataFrame. See also Returns below + order : bool + Whether or not to order the results by the absolute value of the + studentized residuals. If labels are provided they will also be sorted. + cutoff : None or float in [0, 1] + If cutoff is not None, then the return only includes observations with + multiple testing corrected p-values strictly below the cutoff. The + returned array or dataframe can be empty if there are no outlier + candidates at the specified cutoff. + + Returns + ------- + table : ndarray or DataFrame + Returns either an ndarray or a DataFrame if labels is not None. + Will attempt to get labels from model_results if available. The + columns are the Studentized residuals, the unadjusted p-value, + and the corrected p-value according to method. + + Notes + ----- + The unadjusted p-value is stats.t.sf(abs(resid), df) where + df = df_resid - 1. + """ + from scipy import stats # lazy import + if labels is None: + labels = getattr(model_results.model.data, 'row_labels', None) + infl = getattr(model_results, 'get_influence', None) + if infl is None: + results = maybe_unwrap_results(model_results) + raise AttributeError("model_results object %s does not have a " + "get_influence " + "method." % results.__class__.__name__) + resid = infl().resid_studentized_external + if order: + idx = np.abs(resid).argsort()[::-1] + resid = resid[idx] + if labels is not None: + labels = np.asarray(labels)[idx] + df = model_results.df_resid - 1 + unadj_p = stats.t.sf(np.abs(resid), df) * 2 + adj_p = multipletests(unadj_p, alpha=alpha, method=method) + + data = np.c_[resid, unadj_p, adj_p[1]] + if cutoff is not None: + mask = data[:, -1] < cutoff + data = data[mask] + else: + mask = slice(None) + + if labels is not None: + from pandas import DataFrame + return DataFrame(data, + columns=['student_resid', 'unadj_p', method + "(p)"], + index=np.asarray(labels)[mask]) + return data + + +# influence measures + +def reset_ramsey(res, degree=5): + """Ramsey's RESET specification test for linear models + + This is a general specification test, for additional non-linear effects + in a model. + + + Notes + ----- + The test fits an auxiliary OLS regression where the design matrix, exog, + is augmented by powers 2 to degree of the fitted values. Then it performs + an F-test whether these additional terms are significant. + + If the p-value of the f-test is below a threshold, e.g. 0.1, then this + indicates that there might be additional non-linear effects in the model + and that the linear model is mis-specified. + + + References + ---------- + http://en.wikipedia.org/wiki/Ramsey_RESET_test + + """ + order = degree + 1 + k_vars = res.model.exog.shape[1] + # vander without constant and x, and drop constant + y_fitted_vander = np.vander(res.fittedvalues, order)[:, :-2] + exog = np.column_stack((res.model.exog, y_fitted_vander)) + res_aux = OLS(res.model.endog, exog).fit() + # r_matrix = np.eye(degree, exog.shape[1], k_vars) + r_matrix = np.eye(degree - 1, exog.shape[1], k_vars) + # df1 = degree - 1 + # df2 = exog.shape[0] - degree - res.df_model (without constant) + return res_aux.f_test(r_matrix) # , r_matrix, res_aux + + +def variance_inflation_factor(exog, exog_idx): + """variance inflation factor, VIF, for one exogenous variable + + The variance inflation factor is a measure for the increase of the + variance of the parameter estimates if an additional variable, given by + exog_idx is added to the linear regression. It is a measure for + multicollinearity of the design matrix, exog. + + One recommendation is that if VIF is greater than 5, then the explanatory + variable given by exog_idx is highly collinear with the other explanatory + variables, and the parameter estimates will have large standard errors + because of this. + + Parameters + ---------- + exog : ndarray + design matrix with all explanatory variables, as for example used in + regression + exog_idx : int + index of the exogenous variable in the columns of exog + + Returns + ------- + vif : float + variance inflation factor + + Notes + ----- + This function does not save the auxiliary regression. + + See Also + -------- + xxx : class for regression diagnostics TODO: doesn't exist yet + + References + ---------- + http://en.wikipedia.org/wiki/Variance_inflation_factor + + """ + k_vars = exog.shape[1] + x_i = exog[:, exog_idx] + mask = np.arange(k_vars) != exog_idx + x_noti = exog[:, mask] + r_squared_i = OLS(x_i, x_noti).fit().rsquared + vif = 1. / (1. - r_squared_i) + return vif + + +class _BaseInfluenceMixin(object): + """common methods between OLSInfluence and MLE/GLMInfluence + """ + + def plot_influence(self, external=None, alpha=.05, criterion="cooks", + size=48, plot_alpha=.75, ax=None, **kwargs): + + if external is None: + external = hasattr(self, '_cache') and 'res_looo' in self._cache + from statsmodels.graphics.regressionplots import _influence_plot + res = _influence_plot(self.results, self, external=external, + alpha=alpha, + criterion=criterion, size=size, + plot_alpha=plot_alpha, ax=ax, **kwargs) + return res + + plot_influence.__doc__ = _plot_influence_doc.format({ + 'extra_params_doc': ""}) + + def _plot_index(self, y, ylabel, threshold=None, title=None, ax=None, + **kwds): + from statsmodels.graphics import utils + fig, ax = utils.create_mpl_ax(ax) + if title is None: + title = "Index Plot" + nobs = len(self.endog) + index = np.arange(nobs) + ax.scatter(index, y, **kwds) + + if threshold == 'all': + large_points = np.ones(nobs, np.bool_) + else: + large_points = np.abs(y) > threshold + psize = 3 * np.ones(nobs) + # add point labels + labels = self.results.model.data.row_labels + if labels is None: + labels = np.arange(nobs) + ax = utils.annotate_axes(np.where(large_points)[0], labels, + lzip(index, y), + lzip(-psize, psize), "large", + ax) + + font = {"fontsize": 16, "color": "black"} + ax.set_ylabel(ylabel, **font) + ax.set_xlabel("Observation", **font) + ax.set_title(title, **font) + return fig + + def plot_index(self, y_var='cooks', threshold=None, title=None, ax=None, + idx=None, **kwds): + """index plot for influence attributes + + Parameters + ---------- + y_var : string + Name of attribute or shortcut for predefined attributes that will + be plotted on the y-axis. + threshold : None or float + Threshold for adding annotation with observation labels. + Observations for which the absolute value of the y_var is larger + than the threshold will be annotated. Set to a negative number to + label all observations or to a large number to have no annotation. + title : string + If provided, the title will replace the default "Index Plot" title. + ax : matplolib axis instance + The plot will be added to the `ax` if provided, otherwise a new + figure is created. + idx : None or integer + Some attributes require an additional index to select the y-var. + In dfbetas this refers to the column indes. + kwds : optional keywords + Keywords will be used in the call to matplotlib scatter function. + + """ + criterion = y_var # alias + if threshold is None: + # TODO: criterion specific defaults + threshold = 'all' + + if criterion == 'dfbeta': + y = self.dfbetas[:, idx] + ylabel = 'DFBETA for ' + self.results.model.exog_names[idx] + elif criterion.startswith('cook'): + y = self.cooks_distance[0] + ylabel = "Cook's distance" + elif criterion.startswith('hat') or criterion.startswith('lever'): + y = self.hat_matrix_diag + ylabel = "Leverage (diagonal of hat matrix)" + elif criterion.startswith('cook'): + y = self.cooks_distance[0] + ylabel = "Cook's distance" + elif criterion.startswith('resid'): + y = self.resid_studentized + ylabel = "Internally Studentized Residuals" + else: + # assume we have the name of an attribute + y = getattr(self, y_var) + if idx is not None: + y = y[idx] + ylabel = y_var + + fig = self._plot_index(y, ylabel, threshold=threshold, title=title, + ax=ax, **kwds) + return fig + + +class MLEInfluence(_BaseInfluenceMixin): + """Local Influence and outlier measures (experimental) + + This currently subclasses GLMInfluence instead of the other way. + No common superclass yet. + This is another version before checking what is common + + Parameters + ---------- + results : instance of results class + This only works for model and results classes that have the necessary + helper methods. + other arguments are only to override default behavior and are used instead + of the corresponding attribute of the results class. + By default resid_pearson is used as resid. + + + + + Attributes + ---------- + hat_matrix_diag (hii) : This is the generalized leverage computed as the + local derivative of fittedvalues (predicted mean) with respect to the + observed response for each observation. + d_params : Change in parameters computed with one Newton step using the + full Hessian corrected by division by (1 - hii). + dbetas : change in parameters divided by the standard error of parameters + from the full model results, ``bse``. + cooks_distance : quadratic form for change in parameters weighted by + ``cov_params`` from the full model divided by the number of variables. + It includes p-values based on the F-distribution which are only + approximate outside of linear Gaussian models. + resid_studentized : In the general MLE case resid_studentized are + computed from the score residuals scaled by hessian factor and + leverage. This does not use ``cov_params``. + d_fittedvalues : local change of expected mean given the change in the + parameters as computed in ``d_params``. + d_fittedvalues_scaled : same as d_fittedvalues but scaled by the standard + errors of a predicted mean of the response. + params_one : is the one step parameter estimate computed as ``params`` + from the full sample minus ``d_params``. + + Notes + ----- + MLEInfluence produces the same results as GLMInfluence (verified for GLM + Binomial and Gaussian). There will be some differences for non-canonical + links or if a robust cov_type is used. + + Warning: This does currently not work for constrained or penalized models, + e.g. models estimated with fit_constrained or fit_regularized. + + This has not yet been tested for correctness when offset or exposure + are used, although they should be supported by the code. + + status: experimental, + This class will need changes to support different kinds of models, e.g. + extra parameters in discrete.NegativeBinomial or two-part models like + ZeroInflatedPoisson. + + + """ + + def __init__(self, results, resid=None, endog=None, exog=None, + hat_matrix_diag=None, cov_params=None, scale=None): + # I'm not calling super for now, OLS attributes might not be available + # check which model is allowed + self.results = results = maybe_unwrap_results(results) + # TODO: check for extra params in e.g. NegBin + self.nobs, self.k_vars = results.model.exog.shape + self.endog = endog if endog is not None else results.model.endog + self.exog = exog if exog is not None else results.model.exog + self.resid = resid if resid is not None else results.resid_pearson + self.scale = scale if scale is not None else results.scale + self.cov_params = (cov_params if cov_params is not None + else results.cov_params()) + self.model_class = results.model.__class__ + + self.hessian = self.results.model.hessian(self.results.params) + self.score_obs = self.results.model.score_obs(self.results.params) + if hat_matrix_diag is not None: + self._hat_matrix_diag = hat_matrix_diag + + @cache_readonly + def hat_matrix_diag(self): + """Diagonal of the generalized leverage + + This is the analogue of the hat matrix diagonal for general MLE. + + """ + if hasattr(self, '_hat_matrix_diag'): + return self._hat_matrix_diag + + dmu_dp = self.results.model._deriv_mean_dparams(self.results.params) + dsdy = self.results.model._deriv_score_obs_dendog(self.results.params) + # dmu_dp = 1 / + # self.results.model.family.link.deriv(self.results.fittedvalues) + h = (dmu_dp * np.linalg.solve(-self.hessian, dsdy.T).T).sum(1) + return h + + @cache_readonly + def d_params(self): + """Change in parameter estimates + + This uses one-step approximation of the parameter change to deleting + one observation. + """ + so_noti = self.score_obs.sum(0) - self.score_obs + beta_i = np.linalg.solve(self.hessian, so_noti.T).T + return beta_i / (1 - self.hat_matrix_diag)[:, None] + + @cache_readonly + def dfbetas(self): + """Scaled change in parameter estimates + + The one-step change of parameters in d_params is rescaled by dividing + by the standard error of the parameter estimate given by results.bse. + """ + + beta_i = self.d_params / self.results.bse + return beta_i + + @cache_readonly + def params_one(self): + """Parameter estimate based on one-step approximation + + This the one step parameter estimate computed as + ``params`` from the full sample minus ``d_params``. + """ + return self.results.params - self.d_params + + @cache_readonly + def cooks_distance(self): + """Cook's distance and p-values + + Based on one step approximation d_params and on results.cov_params + Cook's distance divides by the number of explanatory variables. + + p-values are based on the F-distribution which are only approximate + outside of linear Gaussian models. + + Warning: The definition of p-values might change if we switch to using + chi-square distribution instead of F-distribution, or if we make it + dependent on the fit keyword use_t. + + """ + cooks_d2 = (self.d_params * np.linalg.solve(self.cov_params, + self.d_params.T).T).sum(1) + cooks_d2 /= self.k_vars + from scipy import stats + # alpha = 0.1 + # print stats.f.isf(1-alpha, n_params, res.df_modelwc) + # TODO use chi2 # use_f option + pvals = stats.f.sf(cooks_d2, self.k_vars, self.results.df_resid) + + return cooks_d2, pvals + + @cache_readonly + def resid_studentized(self): + """Score residual divided by sqrt of hessian factor + + experimental, agrees with GLMInfluence for Binomial and Gaussian. + no reference for this + """ + sf = self.results.model.score_factor(self.results.params) + hf = self.results.model.hessian_factor(self.results.params) + return sf / np.sqrt(hf) / np.sqrt(1 - self.hat_matrix_diag) + + @cache_readonly + def _get_prediction(self): + # TODO: do we cache this or does it need to be a method + # we only need unchanging parts, alpha for confint could change + return self.results.get_prediction() + + @cache_readonly + def d_fittedvalues(self): + """Change in expected response, fittedvalues + + Local change of expected mean given the change in the parameters as + computed in d_params. + + Notes + ----- + This uses one-step approximation of the parameter change to deleting + one observation ``d_params``. + """ + # results.params might be a pandas.Series + params = np.asarray(self.results.params) + deriv = self.results.model._deriv_mean_dparams(params) + return (deriv * self.d_params).sum(1) + + @property + def d_fittedvalues_scaled(self): + """ + Change in fittedvalues scaled by standard errors + + This uses one-step approximation of the parameter change to deleting + one observation ``d_params``, and divides by the standard errors + for the predicted mean provided by results.get_prediction. + """ + # Note: this and the previous methods are for the response + # and not for a weighted response, i.e. not the self.exog, self.endog + # this will be relevant for WLS comparing fitted endog versus wendog + return self.d_fittedvalues / self._get_prediction.se_mean + + def summary_frame(self): + """ + Creates a DataFrame with influence results. + + Returns + ------- + frame : pandas DataFrame + A DataFrame with selected results for each observation. + The index will be the same as provided to the model. + + Notes + ----- + The resultant DataFrame contains six variables in addition to the + ``dfbetas``. These are: + + * cooks_d : Cook's Distance defined in ``cooks_distance`` + * standard_resid : Standardized residuals defined in + `resid_studentizedl` + * hat_diag : The diagonal of the projection, or hat, matrix defined in + `hat_matrix_diag` + * dffits_internal : DFFITS statistics using internally Studentized + residuals defined in `d_fittedvalues_scaled` + + """ + from pandas import DataFrame + + # row and column labels + data = self.results.model.data + row_labels = data.row_labels + beta_labels = ['dfb_' + i for i in data.xnames] + + # grab the results + summary_data = DataFrame(dict( + cooks_d=self.cooks_distance[0], + standard_resid=self.resid_studentized, + hat_diag=self.hat_matrix_diag, + dffits_internal=self.d_fittedvalues_scaled), + index=row_labels) + # NOTE: if we don't give columns, order of above will be arbitrary + dfbeta = DataFrame(self.dfbetas, columns=beta_labels, + index=row_labels) + + return dfbeta.join(summary_data) + + +class OLSInfluence(_BaseInfluenceMixin): + """class to calculate outlier and influence measures for OLS result + + Parameters + ---------- + results : RegressionResults + currently assumes the results are from an OLS regression + + Notes + ----- + One part of the results can be calculated without any auxiliary regression + (some of which have the `_internal` postfix in the name. Other statistics + require leave-one-observation-out (LOOO) auxiliary regression, and will be + slower (mainly results with `_external` postfix in the name). + The auxiliary LOOO regression only the required results are stored. + + Using the LOO measures is currently only recommended if the data set + is not too large. One possible approach for LOOO measures would be to + identify possible problem observations with the _internal measures, and + then run the leave-one-observation-out only with observations that are + possible outliers. (However, this is not yet available in an automized way.) + + This should be extended to general least squares. + + The leave-one-variable-out (LOVO) auxiliary regression are currently not + used. + + """ + + def __init__(self, results): + # check which model is allowed + self.results = maybe_unwrap_results(results) + self.nobs, self.k_vars = results.model.exog.shape + self.endog = results.model.endog + self.exog = results.model.exog + self.resid = results.resid + self.model_class = results.model.__class__ + + # self.sigma_est = np.sqrt(results.mse_resid) + self.scale = results.mse_resid + + self.aux_regression_exog = {} + self.aux_regression_endog = {} + + @cache_readonly + def hat_matrix_diag(self): + """Diagonal of the hat_matrix for OLS + + Notes + ----- + temporarily calculated here, this should go to model class + """ + return (self.exog * self.results.model.pinv_wexog.T).sum(1) + + @cache_readonly + def resid_press(self): + """PRESS residuals + """ + hii = self.hat_matrix_diag + return self.resid / (1 - hii) + + @cache_readonly + def influence(self): + """Influence measure + + matches the influence measure that gretl reports + u * h / (1 - h) + where u are the residuals and h is the diagonal of the hat_matrix + """ + hii = self.hat_matrix_diag + return self.resid * hii / (1 - hii) + + @cache_readonly + def hat_diag_factor(self): + """Factor of diagonal of hat_matrix used in influence + + this might be useful for internal reuse + h / (1 - h) + """ + hii = self.hat_matrix_diag + return hii / (1 - hii) + + @cache_readonly + def ess_press(self): + """Error sum of squares of PRESS residuals + """ + return np.dot(self.resid_press, self.resid_press) + + @cache_readonly + def resid_studentized(self): + """Studentized residuals using variance from OLS + + alias for resid_studentized_internal for compatibility with + MLEInfluence this uses sigma from original estimate and does + not require leave one out loop + """ + return self.resid_studentized_internal + + @cache_readonly + def resid_studentized_internal(self): + """Studentized residuals using variance from OLS + + this uses sigma from original estimate + does not require leave one out loop + """ + return self.get_resid_studentized_external(sigma=None) + # return self.results.resid / self.sigma_est + + @cache_readonly + def resid_studentized_external(self): + """Studentized residuals using LOOO variance + + this uses sigma from leave-one-out estimates + + requires leave one out loop for observations + """ + sigma_looo = np.sqrt(self.sigma2_not_obsi) + return self.get_resid_studentized_external(sigma=sigma_looo) + + def get_resid_studentized_external(self, sigma=None): + """calculate studentized residuals + + Parameters + ---------- + sigma : None or float + estimate of the standard deviation of the residuals. If None, then + the estimate from the regression results is used. + + Returns + ------- + stzd_resid : ndarray + studentized residuals + + Notes + ----- + studentized residuals are defined as :: + + resid / sigma / np.sqrt(1 - hii) + + where resid are the residuals from the regression, sigma is an + estimate of the standard deviation of the residuals, and hii is the + diagonal of the hat_matrix. + + """ + hii = self.hat_matrix_diag + if sigma is None: + sigma2_est = self.scale + # can be replace by different estimators of sigma + sigma = np.sqrt(sigma2_est) + + return self.resid / sigma / np.sqrt(1 - hii) + + # same computation as GLMInfluence + @cache_readonly + def cooks_distance(self): + """Cooks distance + + uses original results, no nobs loop + + """ + hii = self.hat_matrix_diag + # Eubank p.93, 94 + cooks_d2 = self.resid_studentized ** 2 / self.k_vars + cooks_d2 *= hii / (1 - hii) + + from scipy import stats + # alpha = 0.1 + # print stats.f.isf(1-alpha, n_params, res.df_modelwc) + pvals = stats.f.sf(cooks_d2, self.k_vars, self.results.df_resid) + + return cooks_d2, pvals + + @cache_readonly + def dffits_internal(self): + """dffits measure for influence of an observation + + based on resid_studentized_internal + uses original results, no nobs loop + + """ + # TODO: do I want to use different sigma estimate in + # resid_studentized_external + # -> move definition of sigma_error to the __init__ + hii = self.hat_matrix_diag + dffits_ = self.resid_studentized_internal * np.sqrt(hii / (1 - hii)) + dffits_threshold = 2 * np.sqrt(self.k_vars * 1. / self.nobs) + return dffits_, dffits_threshold + + @cache_readonly + def dffits(self): + """dffits measure for influence of an observation + + based on resid_studentized_external, + uses results from leave-one-observation-out loop + + It is recommended that observations with dffits large than a + threshold of 2 sqrt{k / n} where k is the number of parameters, should + be investigated. + + Returns + ------- + dffits: float + dffits_threshold : float + + References + ---------- + `Wikipedia `_ + + """ + # TODO: do I want to use different sigma estimate in + # resid_studentized_external + # -> move definition of sigma_error to the __init__ + hii = self.hat_matrix_diag + dffits_ = self.resid_studentized_external * np.sqrt(hii / (1 - hii)) + dffits_threshold = 2 * np.sqrt(self.k_vars * 1. / self.nobs) + return dffits_, dffits_threshold + + @cache_readonly + def dfbetas(self): + """dfbetas + + uses results from leave-one-observation-out loop + """ + dfbetas = self.results.params - self.params_not_obsi # [None,:] + dfbetas /= np.sqrt(self.sigma2_not_obsi[:, None]) + dfbetas /= np.sqrt(np.diag(self.results.normalized_cov_params)) + return dfbetas + + @cache_readonly + def dfbeta(self): + """dfbetas + + uses results from leave-one-observation-out loop + """ + dfbeta = self.results.params - self.params_not_obsi + return dfbeta + + @cache_readonly + def sigma2_not_obsi(self): + """error variance for all LOOO regressions + + This is 'mse_resid' from each auxiliary regression. + + uses results from leave-one-observation-out loop + """ + return np.asarray(self._res_looo['mse_resid']) + + @property + def params_not_obsi(self): + """parameter estimates for all LOOO regressions + + uses results from leave-one-observation-out loop + """ + return np.asarray(self._res_looo['params']) + + @property + def det_cov_params_not_obsi(self): + """determinant of cov_params of all LOOO regressions + + uses results from leave-one-observation-out loop + """ + return np.asarray(self._res_looo['det_cov_params']) + + @cache_readonly + def cov_ratio(self): + """covariance ratio between LOOO and original + + This uses determinant of the estimate of the parameter covariance + from leave-one-out estimates. + requires leave one out loop for observations + + """ + # don't use inplace division / because then we change original + cov_ratio = (self.det_cov_params_not_obsi + / np.linalg.det(self.results.cov_params())) + return cov_ratio + + @cache_readonly + def resid_var(self): + """estimate of variance of the residuals + + :: + + sigma2 = sigma2_OLS * (1 - hii) + + where hii is the diagonal of the hat matrix + + """ + # TODO:check if correct outside of ols + return self.scale * (1 - self.hat_matrix_diag) + + @cache_readonly + def resid_std(self): + """estimate of standard deviation of the residuals + + See Also + -------- + resid_var + + """ + return np.sqrt(self.resid_var) + + def _ols_xnoti(self, drop_idx, endog_idx='endog', store=True): + """regression results from LOVO auxiliary regression with cache + + + The result instances are stored, which could use a large amount of + memory if the datasets are large. There are too many combinations to + store them all, except for small problems. + + Parameters + ---------- + drop_idx : int + index of exog that is dropped from the regression + endog_idx : 'endog' or int + If 'endog', then the endogenous variable of the result instance + is regressed on the exogenous variables, excluding the one at + drop_idx. If endog_idx is an integer, then the exog with that + index is regressed with OLS on all other exogenous variables. + (The latter is the auxiliary regression for the variance inflation + factor.) + + this needs more thought, memory versus speed + not yet used in any other parts, not sufficiently tested + """ + # reverse the structure, access store, if fail calculate ? + # this creates keys in store even if store = false ! bug + if endog_idx == 'endog': + stored = self.aux_regression_endog + if hasattr(stored, drop_idx): + return stored[drop_idx] + x_i = self.results.model.endog + + else: + # nested dictionary + try: + self.aux_regression_exog[endog_idx][drop_idx] + except KeyError: + pass + + stored = self.aux_regression_exog[endog_idx] + stored = {} + + x_i = self.exog[:, endog_idx] + + k_vars = self.exog.shape[1] + mask = np.arange(k_vars) != drop_idx + x_noti = self.exog[:, mask] + res = OLS(x_i, x_noti).fit() + if store: + stored[drop_idx] = res + + return res + + def _get_drop_vari(self, attributes): + """ + regress endog on exog without one of the variables + + This uses a k_vars loop, only attributes of the OLS instance are + stored. + + Parameters + ---------- + attributes : list of strings + These are the names of the attributes of the auxiliary OLS results + instance that are stored and returned. + + not yet used + """ + from statsmodels.sandbox.tools.cross_val import LeaveOneOut + + endog = self.results.model.endog + exog = self.exog + + cv_iter = LeaveOneOut(self.k_vars) + res_loo = defaultdict(list) + for inidx, outidx in cv_iter: + for att in attributes: + res_i = self.model_class(endog, exog[:, inidx]).fit() + res_loo[att].append(getattr(res_i, att)) + + return res_loo + + @cache_readonly + def _res_looo(self): + """collect required results from the LOOO loop + + all results will be attached. + currently only 'params', 'mse_resid', 'det_cov_params' are stored + + regresses endog on exog dropping one observation at a time + + this uses a nobs loop, only attributes of the OLS instance are stored. + """ + from statsmodels.sandbox.tools.cross_val import LeaveOneOut + + def get_det_cov_params(res): + return np.linalg.det(res.cov_params()) + + endog = self.results.model.endog + exog = self.results.model.exog + + params = np.zeros(exog.shape, dtype=np.float) + mse_resid = np.zeros(endog.shape, dtype=np.float) + det_cov_params = np.zeros(endog.shape, dtype=np.float) + + cv_iter = LeaveOneOut(self.nobs) + for inidx, outidx in cv_iter: + res_i = self.model_class(endog[inidx], exog[inidx]).fit() + params[outidx] = res_i.params + mse_resid[outidx] = res_i.mse_resid + det_cov_params[outidx] = get_det_cov_params(res_i) + + return dict(params=params, mse_resid=mse_resid, + det_cov_params=det_cov_params) + + def summary_frame(self): + """ + Creates a DataFrame with all available influence results. + + Returns + ------- + frame : DataFrame + A DataFrame with all results. + + Notes + ----- + The resultant DataFrame contains six variables in addition to the + DFBETAS. These are: + + * cooks_d : Cook's Distance defined in `Influence.cooks_distance` + * standard_resid : Standardized residuals defined in + `Influence.resid_studentized_internal` + * hat_diag : The diagonal of the projection, or hat, matrix defined in + `Influence.hat_matrix_diag` + * dffits_internal : DFFITS statistics using internally Studentized + residuals defined in `Influence.dffits_internal` + * dffits : DFFITS statistics using externally Studentized residuals + defined in `Influence.dffits` + * student_resid : Externally Studentized residuals defined in + `Influence.resid_studentized_external` + """ + from pandas import DataFrame + + # row and column labels + data = self.results.model.data + row_labels = data.row_labels + beta_labels = ['dfb_' + i for i in data.xnames] + + # grab the results + summary_data = DataFrame(dict( + cooks_d=self.cooks_distance[0], + standard_resid=self.resid_studentized_internal, + hat_diag=self.hat_matrix_diag, + dffits_internal=self.dffits_internal[0], + student_resid=self.resid_studentized_external, + dffits=self.dffits[0], + ), + index=row_labels) + # NOTE: if we don't give columns, order of above will be arbitrary + dfbeta = DataFrame(self.dfbetas, columns=beta_labels, + index=row_labels) + + return dfbeta.join(summary_data) + + def summary_table(self, float_fmt="%6.3f"): + """create a summary table with all influence and outlier measures + + This does currently not distinguish between statistics that can be + calculated from the original regression results and for which a + leave-one-observation-out loop is needed + + Returns + ------- + res : SimpleTable + SimpleTable instance with the results, can be printed + + Notes + ----- + This also attaches table_data to the instance. + + + + """ + # print self.dfbetas + + # table_raw = [ np.arange(self.nobs), + # self.endog, + # self.fittedvalues, + # self.cooks_distance(), + # self.resid_studentized_internal, + # self.hat_matrix_diag, + # self.dffits_internal, + # self.resid_studentized_external, + # self.dffits, + # self.dfbetas + # ] + table_raw = [('obs', np.arange(self.nobs)), + ('endog', self.endog), + ('fitted\nvalue', self.results.fittedvalues), + ("Cook's\nd", self.cooks_distance[0]), + ("student.\nresidual", self.resid_studentized_internal), + ('hat diag', self.hat_matrix_diag), + ('dffits \ninternal', self.dffits_internal[0]), + ("ext.stud.\nresidual", self.resid_studentized_external), + ('dffits', self.dffits[0]) + ] + colnames, data = lzip(*table_raw) # unzip + data = np.column_stack(data) + self.table_data = data + from statsmodels.iolib.table import SimpleTable, default_html_fmt + from statsmodels.iolib.tableformatting import fmt_base + from copy import deepcopy + fmt = deepcopy(fmt_base) + fmt_html = deepcopy(default_html_fmt) + fmt['data_fmts'] = ["%4d"] + [float_fmt] * (data.shape[1] - 1) + # fmt_html['data_fmts'] = fmt['data_fmts'] + return SimpleTable(data, headers=colnames, txt_fmt=fmt, + html_fmt=fmt_html) + + +def summary_table(res, alpha=0.05): + """ + Generate summary table of outlier and influence similar to SAS + + Parameters + ---------- + alpha : float + significance level for confidence interval + + Returns + ------- + st : SimpleTable + table with results that can be printed + data : ndarray + calculated measures and statistics for the table + ss2 : list of strings + column_names for table (Note: rows of table are observations) + """ + + from scipy import stats + from statsmodels.sandbox.regression.predstd import wls_prediction_std + + infl = OLSInfluence(res) + + # standard error for predicted mean + # Note: using hat_matrix only works for fitted values + predict_mean_se = np.sqrt(infl.hat_matrix_diag * res.mse_resid) + + tppf = stats.t.isf(alpha / 2., res.df_resid) + predict_mean_ci = np.column_stack([ + res.fittedvalues - tppf * predict_mean_se, + res.fittedvalues + tppf * predict_mean_se]) + + # standard error for predicted observation + tmp = wls_prediction_std(res, alpha=alpha) + predict_se, predict_ci_low, predict_ci_upp = tmp + + predict_ci = np.column_stack((predict_ci_low, predict_ci_upp)) + + # standard deviation of residual + resid_se = np.sqrt(res.mse_resid * (1 - infl.hat_matrix_diag)) + + table_sm = np.column_stack([ + np.arange(res.nobs) + 1, + res.model.endog, + res.fittedvalues, + predict_mean_se, + predict_mean_ci[:, 0], + predict_mean_ci[:, 1], + predict_ci[:, 0], + predict_ci[:, 1], + res.resid, + resid_se, + infl.resid_studentized_internal, + infl.cooks_distance[0] + ]) + + # colnames, data = lzip(*table_raw) #unzip + data = table_sm + ss2 = ['Obs', 'Dep Var\nPopulation', 'Predicted\nValue', + 'Std Error\nMean Predict', 'Mean ci\n95% low', 'Mean ci\n95% upp', + 'Predict ci\n95% low', 'Predict ci\n95% upp', 'Residual', + 'Std Error\nResidual', 'Student\nResidual', "Cook's\nD"] + colnames = ss2 + # self.table_data = data + # data = np.column_stack(data) + from statsmodels.iolib.table import SimpleTable, default_html_fmt + from statsmodels.iolib.tableformatting import fmt_base + from copy import deepcopy + fmt = deepcopy(fmt_base) + fmt_html = deepcopy(default_html_fmt) + fmt['data_fmts'] = ["%4d"] + ["%6.3f"] * (data.shape[1] - 1) + # fmt_html['data_fmts'] = fmt['data_fmts'] + st = SimpleTable(data, headers=colnames, txt_fmt=fmt, + html_fmt=fmt_html) + + return st, data, ss2 + + +class GLMInfluence(MLEInfluence): + """Influence and outlier measures (experimental) + + This uses partly formulas specific to GLM, specifically cooks_distance + is based on the hessian, i.e. observed or expected information matrix and + not on cov_params, in contrast to MLEInfluence. + Standardization for changes in parameters, in fittedvalues and in + the linear predictor are based on cov_params. + + Parameters + ---------- + results : instance of results class + This only works for model and results classes that have the necessary + helper methods. + other arguments are only to override default behavior and are used instead + of the corresponding attribute of the results class. + By default resid_pearson is used as resid. + + Attributes + ---------- + dbetas + change in parameters divided by the standard error of parameters from + the full model results, ``bse``. + d_fittedvalues_scaled + same as d_fittedvalues but scaled by the standard errors of a + predicted mean of the response. + d_linpred + local change in linear prediction. + d_linpred_scale + local change in linear prediction scaled by the standard errors for + the prediction based on cov_params. + + Notes + ----- + This has not yet been tested for correctness when offset or exposure + are used, although they should be supported by the code. + + Some GLM specific measures like d_deviance are still missing. + + Computing an explicit leave-one-observation-out (LOOO) loop is included + but no influence measures are currently computed from it. + """ + + @cache_readonly + def hat_matrix_diag(self): + """ + Diagonal of the hat_matrix for GLM + + Notes + ----- + This returns the diagonal of the hat matrix that was provided as + argument to GLMInfluence or computes it using the results method + `get_hat_matrix`. + """ + if hasattr(self, '_hat_matrix_diag'): + return self._hat_matrix_diag + else: + return self.results.get_hat_matrix() + + @cache_readonly + def d_params(self): + """Change in parameter estimates + + Notes + ----- + This uses one-step approximation of the parameter change to deleting + one observation. + """ + + beta_i = np.linalg.pinv(self.exog) * self.resid_studentized + beta_i /= np.sqrt(1 - self.hat_matrix_diag) + return beta_i.T + + # same computation as OLS + @cache_readonly + def resid_studentized(self): + """ + Internally studentized pearson residuals + + Notes + ----- + residuals / sqrt( scale * (1 - hii)) + + where residuals are those provided to GLMInfluence which are + pearson residuals by default, and + hii is the diagonal of the hat matrix. + """ + hii = self.hat_matrix_diag + return self.resid / np.sqrt(self.scale * (1 - hii)) + + # same computation as OLS + @cache_readonly + def cooks_distance(self): + """Cook's distance + + Notes + ----- + Based on one step approximation using resid_studentized and + hat_matrix_diag for the computation. + + Cook's distance divides by the number of explanatory variables. + + Computed using formulas for GLM and does not use results.cov_params. + It includes p-values based on the F-distribution which are only + approximate outside of linear Gaussian models. + """ + hii = self.hat_matrix_diag + # Eubank p.93, 94 + cooks_d2 = self.resid_studentized ** 2 / self.k_vars + cooks_d2 *= hii / (1 - hii) + + from scipy import stats + # alpha = 0.1 + # print stats.f.isf(1-alpha, n_params, res.df_modelwc) + pvals = stats.f.sf(cooks_d2, self.k_vars, self.results.df_resid) + + return cooks_d2, pvals + + @property + def d_linpred(self): + """ + Change in linear prediction + + This uses one-step approximation of the parameter change to deleting + one observation ``d_params``. + """ + # TODO: This will need adjustment for extra params in Poisson + # use original model exog not transformed influence exog + exog = self.results.model.exog + return (exog * self.d_params).sum(1) + + @property + def d_linpred_scaled(self): + """ + Change in linpred scaled by standard errors + + This uses one-step approximation of the parameter change to deleting + one observation ``d_params``, and divides by the standard errors + for linpred provided by results.get_prediction. + """ + # Note: this and the previous methods are for the response + # and not for a weighted response, i.e. not the self.exog, self.endog + # this will be relevant for WLS comparing fitted endog versus wendog + return self.d_linpred / self._get_prediction.linpred.se_mean + + @property + def _fittedvalues_one(self): + """experimental code + """ + import warnings + warnings.warn('this ignores offset and exposure', UserWarning) + # TODO: we need to handle offset, exposure and weights + # use original model exog not transformed influence exog + exog = self.results.model.exog + fitted = np.array([self.results.model.predict(pi, exog[i]) + for i, pi in enumerate(self.params_one)]) + return fitted.squeeze() + + @property + def _diff_fittedvalues_one(self): + """experimental code + """ + # in discrete we cannot reuse results.fittedvalues + return self.results.predict() - self._fittedvalues_one + + @cache_readonly + def _res_looo(self): + """collect required results from the LOOO loop + + all results will be attached. + currently only 'params', 'mse_resid', 'det_cov_params' are stored + + Reestimates the model with endog and exog dropping one observation + at a time + + This uses a nobs loop, only attributes of the results instance are + stored. + + Warning: This will need refactoring and API changes to be able to + add options. + """ + from statsmodels.sandbox.tools.cross_val import LeaveOneOut + get_det_cov_params = lambda res: np.linalg.det(res.cov_params()) + + endog = self.results.model.endog + exog = self.results.model.exog + + init_kwds = self.results.model._get_init_kwds() + # We need to drop obs also from extra arrays + freq_weights = init_kwds.pop('freq_weights') + var_weights = init_kwds.pop('var_weights') + offset = offset_ = init_kwds.pop('offset') + exposure = exposure_ = init_kwds.pop('exposure') + n_trials = init_kwds.pop('n_trials', None) + # family Binomial creates `n` i.e. `n_trials` + # we need to reset it + # TODO: figure out how to do this properly + if hasattr(init_kwds['family'], 'initialize'): + # assume we have Binomial + is_binomial = True + else: + is_binomial = False + + params = np.zeros(exog.shape, dtype=np.float) + scale = np.zeros(endog.shape, dtype=np.float) + det_cov_params = np.zeros(endog.shape, dtype=np.float) + + cv_iter = LeaveOneOut(self.nobs) + for inidx, outidx in cv_iter: + if offset is not None: + offset_ = offset[inidx] + if exposure is not None: + exposure_ = exposure[inidx] + if n_trials is not None: + init_kwds['n_trials'] = n_trials[inidx] + + mod_i = self.model_class(endog[inidx], exog[inidx], + offset=offset_, + exposure=exposure_, + freq_weights=freq_weights[inidx], + var_weights=var_weights[inidx], + **init_kwds) + if is_binomial: + mod_i.family.n = init_kwds['n_trials'] + res_i = mod_i.fit(start_params=self.results.params, + method='newton') + params[outidx] = res_i.params.copy() + scale[outidx] = res_i.scale + det_cov_params[outidx] = get_det_cov_params(res_i) + + return dict(params=params, scale=scale, mse_resid=scale, + # alias for now + det_cov_params=det_cov_params) diff --git a/statsmodels/stats/power.py b/statsmodels/stats/power.py new file mode 100644 index 0000000..1d730ca --- /dev/null +++ b/statsmodels/stats/power.py @@ -0,0 +1,1154 @@ +# -*- coding: utf-8 -*- +#pylint: disable-msg=W0142 +"""Statistical power, solving for nobs, ... - trial version + +Created on Sat Jan 12 21:48:06 2013 + +Author: Josef Perktold + +Example +roundtrip - root with respect to all variables + + calculated, desired +nobs 33.367204205 33.367204205 +effect 0.5 0.5 +alpha 0.05 0.05 +power 0.8 0.8 + + +TODO: +refactoring + - rename beta -> power, beta (type 2 error is beta = 1-power) DONE + - I think the current implementation can handle any kinds of extra keywords + (except for maybe raising meaningful exceptions + - streamline code, I think internally classes can be merged + how to extend to k-sample tests? + user interface for different tests that map to the same (internal) test class + - sequence of arguments might be inconsistent, + arg and/or kwds so python checks what's required and what can be None. + - templating for docstrings ? + + +""" +from __future__ import print_function +from statsmodels.compat.python import iteritems +import numpy as np +from scipy import stats, optimize +from statsmodels.tools.rootfinding import brentq_expanding + +def ttest_power(effect_size, nobs, alpha, df=None, alternative='two-sided'): + '''Calculate power of a ttest + ''' + d = effect_size + if df is None: + df = nobs - 1 + + if alternative in ['two-sided', '2s']: + alpha_ = alpha / 2. #no inplace changes, doesn't work + elif alternative in ['smaller', 'larger']: + alpha_ = alpha + else: + raise ValueError("alternative has to be 'two-sided', 'larger' " + + "or 'smaller'") + + pow_ = 0 + if alternative in ['two-sided', '2s', 'larger']: + crit_upp = stats.t.isf(alpha_, df) + #print crit_upp, df, d*np.sqrt(nobs) + # use private methods, generic methods return nan with negative d + if np.any(np.isnan(crit_upp)): + # avoid endless loop, https://github.com/scipy/scipy/issues/2667 + pow_ = np.nan + else: + pow_ = stats.nct._sf(crit_upp, df, d*np.sqrt(nobs)) + if alternative in ['two-sided', '2s', 'smaller']: + crit_low = stats.t.ppf(alpha_, df) + #print crit_low, df, d*np.sqrt(nobs) + if np.any(np.isnan(crit_low)): + pow_ = np.nan + else: + pow_ += stats.nct._cdf(crit_low, df, d*np.sqrt(nobs)) + return pow_ + +def normal_power(effect_size, nobs, alpha, alternative='two-sided', sigma=1.): + '''Calculate power of a normal distributed test statistic + + ''' + d = effect_size + + if alternative in ['two-sided', '2s']: + alpha_ = alpha / 2. #no inplace changes, doesn't work + elif alternative in ['smaller', 'larger']: + alpha_ = alpha + else: + raise ValueError("alternative has to be 'two-sided', 'larger' " + + "or 'smaller'") + + pow_ = 0 + if alternative in ['two-sided', '2s', 'larger']: + crit = stats.norm.isf(alpha_) + pow_ = stats.norm.sf(crit - d*np.sqrt(nobs)/sigma) + if alternative in ['two-sided', '2s', 'smaller']: + crit = stats.norm.ppf(alpha_) + pow_ += stats.norm.cdf(crit - d*np.sqrt(nobs)/sigma) + return pow_ + +def ftest_anova_power(effect_size, nobs, alpha, k_groups=2, df=None): + '''power for ftest for one way anova with k equal sized groups + + nobs total sample size, sum over all groups + + should be general nobs observations, k_groups restrictions ??? + ''' + df_num = nobs - k_groups + df_denom = k_groups - 1 + crit = stats.f.isf(alpha, df_denom, df_num) + pow_ = stats.ncf.sf(crit, df_denom, df_num, effect_size**2 * nobs) + return pow_#, crit + +def ftest_power(effect_size, df_num, df_denom, alpha, ncc=1): + '''Calculate the power of a F-test. + + Parameters + ---------- + effect_size : float + standardized effect size, mean divided by the standard deviation. + effect size has to be positive. + df_num : int or float + numerator degrees of freedom. + df_denom : int or float + denominator degrees of freedom. + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + ncc : int + degrees of freedom correction for non-centrality parameter. + see Notes + + Returns + ------- + power : float + Power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + + Notes + ----- + + sample size is given implicitly by df_num + + set ncc=0 to match t-test, or f-test in LikelihoodModelResults. + ncc=1 matches the non-centrality parameter in R::pwr::pwr.f2.test + + ftest_power with ncc=0 should also be correct for f_test in regression + models, with df_num and d_denom as defined there. (not verified yet) + ''' + nc = effect_size**2 * (df_denom + df_num + ncc) + crit = stats.f.isf(alpha, df_denom, df_num) + pow_ = stats.ncf.sf(crit, df_denom, df_num, nc) + return pow_ #, crit, nc + + +#class based implementation +#-------------------------- + +class Power(object): + '''Statistical Power calculations, Base Class + + so far this could all be class methods + ''' + + def __init__(self, **kwds): + self.__dict__.update(kwds) + # used only for instance level start values + self.start_ttp = dict(effect_size=0.01, nobs=10., alpha=0.15, + power=0.6, nobs1=10., ratio=1, + df_num=10, df_denom=3 # for FTestPower + ) + # TODO: nobs1 and ratio are for ttest_ind, + # need start_ttp for each test/class separately, + # possible rootfinding problem for effect_size, starting small seems to + # work + from collections import defaultdict + self.start_bqexp = defaultdict(dict) + for key in ['nobs', 'nobs1', 'df_num', 'df_denom']: + self.start_bqexp[key] = dict(low=2., start_upp=50.) + for key in ['df_denom']: + self.start_bqexp[key] = dict(low=1., start_upp=50.) + for key in ['ratio']: + self.start_bqexp[key] = dict(low=1e-8, start_upp=2) + for key in ['alpha']: + self.start_bqexp[key] = dict(low=1e-12, upp=1 - 1e-12) + + def power(self, *args, **kwds): + raise NotImplementedError + + def _power_identity(self, *args, **kwds): + power_ = kwds.pop('power') + return self.power(*args, **kwds) - power_ + + def solve_power(self, **kwds): + '''solve for any one of the parameters of a t-test + + for t-test the keywords are: + effect_size, nobs, alpha, power + + exactly one needs to be ``None``, all others need numeric values + + *attaches* + + cache_fit_res : list + Cache of the result of the root finding procedure for the latest + call to ``solve_power``, mainly for debugging purposes. + The first element is the success indicator, one if successful. + The remaining elements contain the return information of the up to + three solvers that have been tried. + + + ''' + #TODO: maybe use explicit kwds, + # nicer but requires inspect? and not generic across tests + # I'm duplicating this in the subclass to get informative docstring + key = [k for k,v in iteritems(kwds) if v is None] + #print kwds, key + if len(key) != 1: + raise ValueError('need exactly one keyword that is None') + key = key[0] + + if key == 'power': + del kwds['power'] + return self.power(**kwds) + + if kwds['effect_size'] == 0: + import warnings + from statsmodels.tools.sm_exceptions import HypothesisTestWarning + warnings.warn('Warning: Effect size of 0 detected', HypothesisTestWarning) + if key == 'power': + return kwds['alpha'] + if key == 'alpha': + return kwds['power'] + else: + raise ValueError('Cannot detect an effect-size of 0. Try changing your effect-size.') + + + self._counter = 0 + + def func(x): + kwds[key] = x + fval = self._power_identity(**kwds) + self._counter += 1 + #print self._counter, + if self._counter > 500: + raise RuntimeError('possible endless loop (500 NaNs)') + if np.isnan(fval): + return np.inf + else: + return fval + + #TODO: I'm using the following so I get a warning when start_ttp is not defined + try: + start_value = self.start_ttp[key] + except KeyError: + start_value = 0.9 + import warnings + from statsmodels.tools.sm_exceptions import ValueWarning + warnings.warn('Warning: using default start_value for {0}'.format(key), ValueWarning) + + fit_kwds = self.start_bqexp[key] + fit_res = [] + #print vars() + try: + val, res = brentq_expanding(func, full_output=True, **fit_kwds) + failed = False + fit_res.append(res) + except ValueError: + failed = True + fit_res.append(None) + + success = None + if (not failed) and res.converged: + success = 1 + else: + # try backup + # TODO: check more cases to make this robust + if not np.isnan(start_value): + val, infodict, ier, msg = optimize.fsolve(func, start_value, + full_output=True) #scalar + #val = optimize.newton(func, start_value) #scalar + fval = infodict['fvec'] + fit_res.append(infodict) + else: + ier = -1 + fval = 1 + fit_res.append([None]) + + if ier == 1 and np.abs(fval) < 1e-4 : + success = 1 + else: + #print infodict + if key in ['alpha', 'power', 'effect_size']: + val, r = optimize.brentq(func, 1e-8, 1-1e-8, + full_output=True) #scalar + success = 1 if r.converged else 0 + fit_res.append(r) + else: + success = 0 + + if not success == 1: + import warnings + from statsmodels.tools.sm_exceptions import (ConvergenceWarning, + convergence_doc) + warnings.warn(convergence_doc, ConvergenceWarning) + + #attach fit_res, for reading only, should be needed only for debugging + fit_res.insert(0, success) + self.cache_fit_res = fit_res + return val + + def plot_power(self, dep_var='nobs', nobs=None, effect_size=None, + alpha=0.05, ax=None, title=None, plt_kwds=None, **kwds): + '''plot power with number of observations or effect size on x-axis + + Parameters + ---------- + dep_var : string in ['nobs', 'effect_size', 'alpha'] + This specifies which variable is used for the horizontal axis. + If dep_var='nobs' (default), then one curve is created for each + value of ``effect_size``. If dep_var='effect_size' or alpha, then + one curve is created for each value of ``nobs``. + nobs : scalar or array_like + specifies the values of the number of observations in the plot + effect_size : scalar or array_like + specifies the values of the effect_size in the plot + alpha : float or array_like + The significance level (type I error) used in the power + calculation. Can only be more than a scalar, if ``dep_var='alpha'`` + ax : None or axis instance + If ax is None, than a matplotlib figure is created. If ax is a + matplotlib axis instance, then it is reused, and the plot elements + are created with it. + title : string + title for the axis. Use an empty string, ``''``, to avoid a title. + plt_kwds : None or dict + not used yet + kwds : optional keywords for power function + These remaining keyword arguments are used as arguments to the + power function. Many power function support ``alternative`` as a + keyword argument, two-sample test support ``ratio``. + + Returns + ------- + fig : matplotlib figure instance + + Notes + ----- + This works only for classes where the ``power`` method has + ``effect_size``, ``nobs`` and ``alpha`` as the first three arguments. + If the second argument is ``nobs1``, then the number of observations + in the plot are those for the first sample. + TODO: fix this for FTestPower and GofChisquarePower + + TODO: maybe add line variable, if we want more than nobs and effectsize + ''' + #if pwr_kwds is None: + # pwr_kwds = {} + from statsmodels.graphics import utils + from statsmodels.graphics.plottools import rainbow + fig, ax = utils.create_mpl_ax(ax) + import matplotlib.pyplot as plt + colormap = plt.cm.Dark2 #pylint: disable-msg=E1101 + plt_alpha = 1 #0.75 + lw = 2 + if dep_var == 'nobs': + colors = rainbow(len(effect_size)) + colors = [colormap(i) for i in np.linspace(0, 0.9, len(effect_size))] + for ii, es in enumerate(effect_size): + power = self.power(es, nobs, alpha, **kwds) + ax.plot(nobs, power, lw=lw, alpha=plt_alpha, + color=colors[ii], label='es=%4.2F' % es) + xlabel = 'Number of Observations' + elif dep_var in ['effect size', 'effect_size', 'es']: + colors = rainbow(len(nobs)) + colors = [colormap(i) for i in np.linspace(0, 0.9, len(nobs))] + for ii, n in enumerate(nobs): + power = self.power(effect_size, n, alpha, **kwds) + ax.plot(effect_size, power, lw=lw, alpha=plt_alpha, + color=colors[ii], label='N=%4.2F' % n) + xlabel = 'Effect Size' + elif dep_var in ['alpha']: + # experimental nobs as defining separate lines + colors = rainbow(len(nobs)) + + for ii, n in enumerate(nobs): + power = self.power(effect_size, n, alpha, **kwds) + ax.plot(alpha, power, lw=lw, alpha=plt_alpha, + color=colors[ii], label='N=%4.2F' % n) + xlabel = 'alpha' + else: + raise ValueError('depvar not implemented') + + if title is None: + title = 'Power of Test' + ax.set_xlabel(xlabel) + ax.set_title(title) + ax.legend(loc='lower right') + return fig + + +class TTestPower(Power): + '''Statistical Power calculations for one sample or paired sample t-test + + ''' + + def power(self, effect_size, nobs, alpha, df=None, alternative='two-sided'): + '''Calculate the power of a t-test for one sample or paired samples. + + Parameters + ---------- + effect_size : float + standardized effect size, mean divided by the standard deviation. + effect size has to be positive. + nobs : int or float + sample size, number of observations. + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + df : int or float + degrees of freedom. By default this is None, and the df from the + one sample or paired ttest is used, ``df = nobs1 - 1`` + alternative : string, 'two-sided' (default), 'larger', 'smaller' + extra argument to choose whether the power is calculated for a + two-sided (default) or one sided test. The one-sided test can be + either 'larger', 'smaller'. + . + + Returns + ------- + power : float + Power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + + ''' + # for debugging + #print 'calling ttest power with', (effect_size, nobs, alpha, df, alternative) + return ttest_power(effect_size, nobs, alpha, df=df, + alternative=alternative) + + #method is only added to have explicit keywords and docstring + def solve_power(self, effect_size=None, nobs=None, alpha=None, power=None, + alternative='two-sided'): + '''solve for any one parameter of the power of a one sample t-test + + for the one sample t-test the keywords are: + effect_size, nobs, alpha, power + + Exactly one needs to be ``None``, all others need numeric values. + + This test can also be used for a paired t-test, where effect size is + defined in terms of the mean difference, and nobs is the number of + pairs. + + Parameters + ---------- + effect_size : float + standardized effect size, mean divided by the standard deviation. + effect size has to be positive. + nobs : int or float + sample size, number of observations. + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + power : float in interval (0,1) + power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + alternative : string, 'two-sided' (default) or 'one-sided' + extra argument to choose whether the power is calculated for a + two-sided (default) or one sided test. + 'one-sided' assumes we are in the relevant tail. + + Returns + ------- + value : float + The value of the parameter that was set to None in the call. The + value solves the power equation given the remaining parameters. + + *attaches* + + cache_fit_res : list + Cache of the result of the root finding procedure for the latest + call to ``solve_power``, mainly for debugging purposes. + The first element is the success indicator, one if successful. + The remaining elements contain the return information of the up to + three solvers that have been tried. + + Notes + ----- + The function uses scipy.optimize for finding the value that satisfies + the power equation. It first uses ``brentq`` with a prior search for + bounds. If this fails to find a root, ``fsolve`` is used. If ``fsolve`` + also fails, then, for ``alpha``, ``power`` and ``effect_size``, + ``brentq`` with fixed bounds is used. However, there can still be cases + where this fails. + + ''' + # for debugging + #print 'calling ttest solve with', (effect_size, nobs, alpha, power, alternative) + return super(TTestPower, self).solve_power(effect_size=effect_size, + nobs=nobs, + alpha=alpha, + power=power, + alternative=alternative) + +class TTestIndPower(Power): + '''Statistical Power calculations for t-test for two independent sample + + currently only uses pooled variance + + ''' + + + def power(self, effect_size, nobs1, alpha, ratio=1, df=None, + alternative='two-sided'): + '''Calculate the power of a t-test for two independent sample + + Parameters + ---------- + effect_size : float + standardized effect size, difference between the two means divided + by the standard deviation. `effect_size` has to be positive. + nobs1 : int or float + number of observations of sample 1. The number of observations of + sample two is ratio times the size of sample 1, + i.e. ``nobs2 = nobs1 * ratio`` + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + ratio : float + ratio of the number of observations in sample 2 relative to + sample 1. see description of nobs1 + The default for ratio is 1; to solve for ratio given the other + arguments, it has to be explicitly set to None. + df : int or float + degrees of freedom. By default this is None, and the df from the + ttest with pooled variance is used, ``df = (nobs1 - 1 + nobs2 - 1)`` + alternative : string, 'two-sided' (default), 'larger', 'smaller' + extra argument to choose whether the power is calculated for a + two-sided (default) or one sided test. The one-sided test can be + either 'larger', 'smaller'. + + Returns + ------- + power : float + Power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + + ''' + + nobs2 = nobs1*ratio + #pooled variance + if df is None: + df = (nobs1 - 1 + nobs2 - 1) + + nobs = 1./ (1. / nobs1 + 1. / nobs2) + #print 'calling ttest power with', (effect_size, nobs, alpha, df, alternative) + return ttest_power(effect_size, nobs, alpha, df=df, alternative=alternative) + + #method is only added to have explicit keywords and docstring + def solve_power(self, effect_size=None, nobs1=None, alpha=None, power=None, + ratio=1., alternative='two-sided'): + '''solve for any one parameter of the power of a two sample t-test + + for t-test the keywords are: + effect_size, nobs1, alpha, power, ratio + + exactly one needs to be ``None``, all others need numeric values + + Parameters + ---------- + effect_size : float + standardized effect size, difference between the two means divided + by the standard deviation. `effect_size` has to be positive. + nobs1 : int or float + number of observations of sample 1. The number of observations of + sample two is ratio times the size of sample 1, + i.e. ``nobs2 = nobs1 * ratio`` + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + power : float in interval (0,1) + power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + ratio : float + ratio of the number of observations in sample 2 relative to + sample 1. see description of nobs1 + The default for ratio is 1; to solve for ratio given the other + arguments it has to be explicitly set to None. + alternative : string, 'two-sided' (default), 'larger', 'smaller' + extra argument to choose whether the power is calculated for a + two-sided (default) or one sided test. The one-sided test can be + either 'larger', 'smaller'. + + Returns + ------- + value : float + The value of the parameter that was set to None in the call. The + value solves the power equation given the remaining parameters. + + + Notes + ----- + The function uses scipy.optimize for finding the value that satisfies + the power equation. It first uses ``brentq`` with a prior search for + bounds. If this fails to find a root, ``fsolve`` is used. If ``fsolve`` + also fails, then, for ``alpha``, ``power`` and ``effect_size``, + ``brentq`` with fixed bounds is used. However, there can still be cases + where this fails. + + ''' + return super(TTestIndPower, self).solve_power(effect_size=effect_size, + nobs1=nobs1, + alpha=alpha, + power=power, + ratio=ratio, + alternative=alternative) + +class NormalIndPower(Power): + '''Statistical Power calculations for z-test for two independent samples. + + currently only uses pooled variance + + ''' + + def __init__(self, ddof=0, **kwds): + self.ddof = ddof + super(NormalIndPower, self).__init__(**kwds) + + def power(self, effect_size, nobs1, alpha, ratio=1, + alternative='two-sided'): + '''Calculate the power of a z-test for two independent sample + + Parameters + ---------- + effect_size : float + standardized effect size, difference between the two means divided + by the standard deviation. effect size has to be positive. + nobs1 : int or float + number of observations of sample 1. The number of observations of + sample two is ratio times the size of sample 1, + i.e. ``nobs2 = nobs1 * ratio`` + ``ratio`` can be set to zero in order to get the power for a + one sample test. + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + ratio : float + ratio of the number of observations in sample 2 relative to + sample 1. see description of nobs1 + alternative : string, 'two-sided' (default), 'larger', 'smaller' + extra argument to choose whether the power is calculated for a + two-sided (default) or one sided test. The one-sided test can be + either 'larger', 'smaller'. + + Returns + ------- + power : float + Power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + + ''' + + ddof = self.ddof # for correlation, ddof=3 + + # get effective nobs, factor for std of test statistic + if ratio > 0: + nobs2 = nobs1*ratio + #equivalent to nobs = n1*n2/(n1+n2)=n1*ratio/(1+ratio) + nobs = 1./ (1. / (nobs1 - ddof) + 1. / (nobs2 - ddof)) + else: + nobs = nobs1 - ddof + return normal_power(effect_size, nobs, alpha, alternative=alternative) + + #method is only added to have explicit keywords and docstring + def solve_power(self, effect_size=None, nobs1=None, alpha=None, power=None, + ratio=1., alternative='two-sided'): + '''solve for any one parameter of the power of a two sample z-test + + for z-test the keywords are: + effect_size, nobs1, alpha, power, ratio + + exactly one needs to be ``None``, all others need numeric values + + Parameters + ---------- + effect_size : float + standardized effect size, difference between the two means divided + by the standard deviation. + If ratio=0, then this is the standardized mean in the one sample + test. + nobs1 : int or float + number of observations of sample 1. The number of observations of + sample two is ratio times the size of sample 1, + i.e. ``nobs2 = nobs1 * ratio`` + ``ratio`` can be set to zero in order to get the power for a + one sample test. + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + power : float in interval (0,1) + power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + ratio : float + ratio of the number of observations in sample 2 relative to + sample 1. see description of nobs1 + The default for ratio is 1; to solve for ration given the other + arguments it has to be explicitly set to None. + alternative : string, 'two-sided' (default), 'larger', 'smaller' + extra argument to choose whether the power is calculated for a + two-sided (default) or one sided test. The one-sided test can be + either 'larger', 'smaller'. + + Returns + ------- + value : float + The value of the parameter that was set to None in the call. The + value solves the power equation given the remaining parameters. + + + Notes + ----- + The function uses scipy.optimize for finding the value that satisfies + the power equation. It first uses ``brentq`` with a prior search for + bounds. If this fails to find a root, ``fsolve`` is used. If ``fsolve`` + also fails, then, for ``alpha``, ``power`` and ``effect_size``, + ``brentq`` with fixed bounds is used. However, there can still be cases + where this fails. + + ''' + return super(NormalIndPower, self).solve_power(effect_size=effect_size, + nobs1=nobs1, + alpha=alpha, + power=power, + ratio=ratio, + alternative=alternative) + + +class FTestPower(Power): + '''Statistical Power calculations for generic F-test + + ''' + + def power(self, effect_size, df_num, df_denom, alpha, ncc=1): + '''Calculate the power of a F-test. + + Parameters + ---------- + effect_size : float + standardized effect size, mean divided by the standard deviation. + effect size has to be positive. + df_num : int or float + numerator degrees of freedom. + df_denom : int or float + denominator degrees of freedom. + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + ncc : int + degrees of freedom correction for non-centrality parameter. + see Notes + + Returns + ------- + power : float + Power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + + Notes + ----- + + sample size is given implicitly by df_num + + set ncc=0 to match t-test, or f-test in LikelihoodModelResults. + ncc=1 matches the non-centrality parameter in R::pwr::pwr.f2.test + + ftest_power with ncc=0 should also be correct for f_test in regression + models, with df_num and d_denom as defined there. (not verified yet) + ''' + + pow_ = ftest_power(effect_size, df_num, df_denom, alpha, ncc=ncc) + #print effect_size, df_num, df_denom, alpha, pow_ + return pow_ + + #method is only added to have explicit keywords and docstring + def solve_power(self, effect_size=None, df_num=None, df_denom=None, + nobs=None, alpha=None, power=None, ncc=1): + '''solve for any one parameter of the power of a F-test + + for the one sample F-test the keywords are: + effect_size, df_num, df_denom, alpha, power + + Exactly one needs to be ``None``, all others need numeric values. + + + Parameters + ---------- + effect_size : float + standardized effect size, mean divided by the standard deviation. + effect size has to be positive. + nobs : int or float + sample size, number of observations. + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + power : float in interval (0,1) + power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + alternative : string, 'two-sided' (default) or 'one-sided' + extra argument to choose whether the power is calculated for a + two-sided (default) or one sided test. + 'one-sided' assumes we are in the relevant tail. + + Returns + ------- + value : float + The value of the parameter that was set to None in the call. The + value solves the power equation given the remainding parameters. + + + Notes + ----- + The function uses scipy.optimize for finding the value that satisfies + the power equation. It first uses ``brentq`` with a prior search for + bounds. If this fails to find a root, ``fsolve`` is used. If ``fsolve`` + also fails, then, for ``alpha``, ``power`` and ``effect_size``, + ``brentq`` with fixed bounds is used. However, there can still be cases + where this fails. + + ''' + return super(FTestPower, self).solve_power(effect_size=effect_size, + df_num=df_num, + df_denom=df_denom, + alpha=alpha, + power=power, + ncc=ncc) + +class FTestAnovaPower(Power): + '''Statistical Power calculations F-test for one factor balanced ANOVA + + ''' + + def power(self, effect_size, nobs, alpha, k_groups=2): + '''Calculate the power of a F-test for one factor ANOVA. + + Parameters + ---------- + effect_size : float + standardized effect size, mean divided by the standard deviation. + effect size has to be positive. + nobs : int or float + sample size, number of observations. + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + k_groups : int or float + number of groups in the ANOVA or k-sample comparison. Default is 2. + + Returns + ------- + power : float + Power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + + ''' + return ftest_anova_power(effect_size, nobs, alpha, k_groups=k_groups) + + #method is only added to have explicit keywords and docstring + def solve_power(self, effect_size=None, nobs=None, alpha=None, power=None, + k_groups=2): + '''solve for any one parameter of the power of a F-test + + for the one sample F-test the keywords are: + effect_size, nobs, alpha, power + + Exactly one needs to be ``None``, all others need numeric values. + + + Parameters + ---------- + effect_size : float + standardized effect size, mean divided by the standard deviation. + effect size has to be positive. + nobs : int or float + sample size, number of observations. + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + power : float in interval (0,1) + power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + + Returns + ------- + value : float + The value of the parameter that was set to None in the call. The + value solves the power equation given the remainding parameters. + + + Notes + ----- + The function uses scipy.optimize for finding the value that satisfies + the power equation. It first uses ``brentq`` with a prior search for + bounds. If this fails to find a root, ``fsolve`` is used. If ``fsolve`` + also fails, then, for ``alpha``, ``power`` and ``effect_size``, + ``brentq`` with fixed bounds is used. However, there can still be cases + where this fails. + + ''' + # update start values for root finding + if k_groups is not None: + self.start_ttp['nobs'] = k_groups * 10 + self.start_bqexp['nobs'] = dict(low=k_groups * 2, + start_upp=k_groups * 10) + # first attempt at special casing + if effect_size is None: + return self._solve_effect_size(effect_size=effect_size, + nobs=nobs, + alpha=alpha, + k_groups=k_groups, + power=power) + + return super(FTestAnovaPower, self).solve_power(effect_size=effect_size, + nobs=nobs, + alpha=alpha, + k_groups=k_groups, + power=power) + + def _solve_effect_size(self, effect_size=None, nobs=None, alpha=None, + power=None, k_groups=2): + '''experimental, test failure in solve_power for effect_size + ''' + def func(x): + effect_size = x + return self._power_identity(effect_size=effect_size, + nobs=nobs, + alpha=alpha, + k_groups=k_groups, + power=power) + + val, r = optimize.brentq(func, 1e-8, 1-1e-8, full_output=True) + if not r.converged: + print(r) + return val + + +class GofChisquarePower(Power): + '''Statistical Power calculations for one sample chisquare test + + ''' + + def power(self, effect_size, nobs, alpha, n_bins, ddof=0):#alternative='two-sided'): + '''Calculate the power of a chisquare test for one sample + + Only two-sided alternative is implemented + + Parameters + ---------- + effect_size : float + standardized effect size, according to Cohen's definition. + see :func:`statsmodels.stats.gof.chisquare_effectsize` + nobs : int or float + sample size, number of observations. + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + n_bins : int + number of bins or cells in the distribution. + + Returns + ------- + power : float + Power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + + ''' + from statsmodels.stats.gof import chisquare_power + return chisquare_power(effect_size, nobs, n_bins, alpha, ddof=0) + + #method is only added to have explicit keywords and docstring + def solve_power(self, effect_size=None, nobs=None, alpha=None, + power=None, n_bins=2): + '''solve for any one parameter of the power of a one sample chisquare-test + + for the one sample chisquare-test the keywords are: + effect_size, nobs, alpha, power + + Exactly one needs to be ``None``, all others need numeric values. + + n_bins needs to be defined, a default=2 is used. + + + Parameters + ---------- + effect_size : float + standardized effect size, according to Cohen's definition. + see :func:`statsmodels.stats.gof.chisquare_effectsize` + nobs : int or float + sample size, number of observations. + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + power : float in interval (0,1) + power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + n_bins : int + number of bins or cells in the distribution + + Returns + ------- + value : float + The value of the parameter that was set to None in the call. The + value solves the power equation given the remaining parameters. + + + Notes + ----- + The function uses scipy.optimize for finding the value that satisfies + the power equation. It first uses ``brentq`` with a prior search for + bounds. If this fails to find a root, ``fsolve`` is used. If ``fsolve`` + also fails, then, for ``alpha``, ``power`` and ``effect_size``, + ``brentq`` with fixed bounds is used. However, there can still be cases + where this fails. + + ''' + return super(GofChisquarePower, self).solve_power(effect_size=effect_size, + nobs=nobs, + n_bins=n_bins, + alpha=alpha, + power=power) + +class _GofChisquareIndPower(Power): + '''Statistical Power calculations for chisquare goodness-of-fit test + + TODO: this is not working yet + for 2sample case need two nobs in function + no one-sided chisquare test, is there one? use normal distribution? + -> drop one-sided options? + ''' + + + def power(self, effect_size, nobs1, alpha, ratio=1, + alternative='two-sided'): + '''Calculate the power of a chisquare for two independent sample + + Parameters + ---------- + effect_size : float + standardize effect size, difference between the two means divided + by the standard deviation. effect size has to be positive. + nobs1 : int or float + number of observations of sample 1. The number of observations of + sample two is ratio times the size of sample 1, + i.e. ``nobs2 = nobs1 * ratio`` + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + ratio : float + ratio of the number of observations in sample 2 relative to + sample 1. see description of nobs1 + The default for ratio is 1; to solve for ration given the other + arguments it has to be explicitely set to None. + alternative : string, 'two-sided' (default) or 'one-sided' + extra argument to choose whether the power is calculated for a + two-sided (default) or one sided test. + 'one-sided' assumes we are in the relevant tail. + + Returns + ------- + power : float + Power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + + ''' + + from statsmodels.stats.gof import chisquare_power + nobs2 = nobs1*ratio + #equivalent to nobs = n1*n2/(n1+n2)=n1*ratio/(1+ratio) + nobs = 1./ (1. / nobs1 + 1. / nobs2) + return chisquare_power(effect_size, nobs, alpha) + + #method is only added to have explicit keywords and docstring + def solve_power(self, effect_size=None, nobs1=None, alpha=None, power=None, + ratio=1., alternative='two-sided'): + '''solve for any one parameter of the power of a two sample z-test + + for z-test the keywords are: + effect_size, nobs1, alpha, power, ratio + + exactly one needs to be ``None``, all others need numeric values + + Parameters + ---------- + effect_size : float + standardize effect size, difference between the two means divided + by the standard deviation. + nobs1 : int or float + number of observations of sample 1. The number of observations of + sample two is ratio times the size of sample 1, + i.e. ``nobs2 = nobs1 * ratio`` + alpha : float in interval (0,1) + significance level, e.g. 0.05, is the probability of a type I + error, that is wrong rejections if the Null Hypothesis is true. + power : float in interval (0,1) + power of the test, e.g. 0.8, is one minus the probability of a + type II error. Power is the probability that the test correctly + rejects the Null Hypothesis if the Alternative Hypothesis is true. + ratio : float + ratio of the number of observations in sample 2 relative to + sample 1. see description of nobs1 + The default for ratio is 1; to solve for ration given the other + arguments it has to be explicitely set to None. + alternative : string, 'two-sided' (default) or 'one-sided' + extra argument to choose whether the power is calculated for a + two-sided (default) or one sided test. + 'one-sided' assumes we are in the relevant tail. + + Returns + ------- + value : float + The value of the parameter that was set to None in the call. The + value solves the power equation given the remainding parameters. + + + Notes + ----- + The function uses scipy.optimize for finding the value that satisfies + the power equation. It first uses ``brentq`` with a prior search for + bounds. If this fails to find a root, ``fsolve`` is used. If ``fsolve`` + also fails, then, for ``alpha``, ``power`` and ``effect_size``, + ``brentq`` with fixed bounds is used. However, there can still be cases + where this fails. + + ''' + return super(_GofChisquareIndPower, self).solve_power(effect_size=effect_size, + nobs1=nobs1, + alpha=alpha, + power=power, + ratio=ratio, + alternative=alternative) + +#shortcut functions +tt_solve_power = TTestPower().solve_power +tt_ind_solve_power = TTestIndPower().solve_power +zt_ind_solve_power = NormalIndPower().solve_power diff --git a/statsmodels/stats/proportion.py b/statsmodels/stats/proportion.py new file mode 100644 index 0000000..3270828 --- /dev/null +++ b/statsmodels/stats/proportion.py @@ -0,0 +1,1044 @@ +# -*- coding: utf-8 -*- +"""Tests and Confidence Intervals for Binomial Proportions + +Created on Fri Mar 01 00:23:07 2013 + +Author: Josef Perktold +License: BSD-3 +""" +from statsmodels.compat.python import lzip, range +import numpy as np +from scipy import stats, optimize +from sys import float_info + +from statsmodels.stats.base import AllPairsResults +from statsmodels.tools.sm_exceptions import HypothesisTestWarning + + +def proportion_confint(count, nobs, alpha=0.05, method='normal'): + '''confidence interval for a binomial proportion + + Parameters + ---------- + count : int or array_array_like + number of successes, can be pandas Series or DataFrame + nobs : int + total number of trials + alpha : float in (0, 1) + significance level, default 0.05 + method : {'normal', 'agresti_coull', 'beta', 'wilson', 'binom_test'} + default: 'normal' + method to use for confidence interval, + currently available methods : + + - `normal` : asymptotic normal approximation + - `agresti_coull` : Agresti-Coull interval + - `beta` : Clopper-Pearson interval based on Beta distribution + - `wilson` : Wilson Score interval + - `jeffreys` : Jeffreys Bayesian Interval + - `binom_test` : experimental, inversion of binom_test + + Returns + ------- + ci_low, ci_upp : float, ndarray, or pandas Series or DataFrame + lower and upper confidence level with coverage (approximately) 1-alpha. + When a pandas object is returned, then the index is taken from the + `count`. + + Notes + ----- + Beta, the Clopper-Pearson exact interval has coverage at least 1-alpha, + but is in general conservative. Most of the other methods have average + coverage equal to 1-alpha, but will have smaller coverage in some cases. + + The 'beta' and 'jeffreys' interval are central, they use alpha/2 in each + tail, and alpha is not adjusted at the boundaries. In the extreme case + when `count` is zero or equal to `nobs`, then the coverage will be only + 1 - alpha/2 in the case of 'beta'. + + The confidence intervals are clipped to be in the [0, 1] interval in the + case of 'normal' and 'agresti_coull'. + + Method "binom_test" directly inverts the binomial test in scipy.stats. + which has discrete steps. + + TODO: binom_test intervals raise an exception in small samples if one + interval bound is close to zero or one. + + References + ---------- + http://en.wikipedia.org/wiki/Binomial_proportion_confidence_interval + + Brown, Lawrence D.; Cai, T. Tony; DasGupta, Anirban (2001). "Interval + Estimation for a Binomial Proportion", + Statistical Science 16 (2): 101–133. doi:10.1214/ss/1009213286. + TODO: Is this the correct one ? + + ''' + + pd_index = getattr(count, 'index', None) + if pd_index is not None and callable(pd_index): + # this rules out lists, lists have an index method + pd_index = None + count = np.asarray(count) + nobs = np.asarray(nobs) + + q_ = count * 1. / nobs + alpha_2 = 0.5 * alpha + + if method == 'normal': + std_ = np.sqrt(q_ * (1 - q_) / nobs) + dist = stats.norm.isf(alpha / 2.) * std_ + ci_low = q_ - dist + ci_upp = q_ + dist + + elif method == 'binom_test': + # inverting the binomial test + def func(qi): + return stats.binom_test(q_ * nobs, nobs, p=qi) - alpha + if count == 0: + ci_low = 0 + else: + ci_low = optimize.brentq(func, float_info.min, q_) + if count == nobs: + ci_upp = 1 + else: + ci_upp = optimize.brentq(func, q_, 1. - float_info.epsilon) + + elif method == 'beta': + ci_low = stats.beta.ppf(alpha_2, count, nobs - count + 1) + ci_upp = stats.beta.isf(alpha_2, count + 1, nobs - count) + + if np.ndim(ci_low) > 0: + ci_low[q_ == 0] = 0 + ci_upp[q_ == 1] = 1 + else: + ci_low = ci_low if (q_ != 0) else 0 + ci_upp = ci_upp if (q_ != 1) else 1 + + elif method == 'agresti_coull': + crit = stats.norm.isf(alpha / 2.) + nobs_c = nobs + crit**2 + q_c = (count + crit**2 / 2.) / nobs_c + std_c = np.sqrt(q_c * (1. - q_c) / nobs_c) + dist = crit * std_c + ci_low = q_c - dist + ci_upp = q_c + dist + + elif method == 'wilson': + crit = stats.norm.isf(alpha / 2.) + crit2 = crit**2 + denom = 1 + crit2 / nobs + center = (q_ + crit2 / (2 * nobs)) / denom + dist = crit * np.sqrt(q_ * (1. - q_) / nobs + crit2 / (4. * nobs**2)) + dist /= denom + ci_low = center - dist + ci_upp = center + dist + + # method adjusted to be more forgiving of misspellings or incorrect option name + elif method[:4] == 'jeff': + ci_low, ci_upp = stats.beta.interval(1 - alpha, count + 0.5, + nobs - count + 0.5) + + else: + raise NotImplementedError('method "%s" is not available' % method) + + if method in ['normal', 'agresti_coull']: + ci_low = np.clip(ci_low, 0, 1) + ci_upp = np.clip(ci_upp, 0, 1) + if pd_index is not None and np.ndim(ci_low) > 0: + import pandas as pd + if np.ndim(ci_low) == 1: + ci_low = pd.Series(ci_low, index=pd_index) + ci_upp = pd.Series(ci_upp, index=pd_index) + if np.ndim(ci_low) == 2: + ci_low = pd.DataFrame(ci_low, index=pd_index) + ci_upp = pd.DataFrame(ci_upp, index=pd_index) + + return ci_low, ci_upp + + +def multinomial_proportions_confint(counts, alpha=0.05, method='goodman'): + '''Confidence intervals for multinomial proportions. + + Parameters + ---------- + counts : array_like of int, 1-D + Number of observations in each category. + alpha : float in (0, 1), optional + Significance level, defaults to 0.05. + method : {'goodman', 'sison-glaz'}, optional + Method to use to compute the confidence intervals; available methods + are: + + - `goodman`: based on a chi-squared approximation, valid if all + values in `counts` are greater or equal to 5 [2]_ + - `sison-glaz`: less conservative than `goodman`, but only valid if + `counts` has 7 or more categories (``len(counts) >= 7``) [3]_ + + Returns + ------- + confint : ndarray, 2-D + Array of [lower, upper] confidence levels for each category, such that + overall coverage is (approximately) `1-alpha`. + + Raises + ------ + ValueError + If `alpha` is not in `(0, 1)` (bounds excluded), or if the values in + `counts` are not all positive or null. + NotImplementedError + If `method` is not kown. + Exception + When ``method == 'sison-glaz'``, if for some reason `c` cannot be + computed; this signals a bug and should be reported. + + Notes + ----- + The `goodman` method [2]_ is based on approximating a statistic based on + the multinomial as a chi-squared random variable. The usual recommendation + is that this is valid if all the values in `counts` are greater than or + equal to 5. There is no condition on the number of categories for this + method. + + The `sison-glaz` method [3]_ approximates the multinomial probabilities, + and evaluates that with a maximum-likelihood estimator. The first + approximation is an Edgeworth expansion that converges when the number of + categories goes to infinity, and the maximum-likelihood estimator converges + when the number of observations (``sum(counts)``) goes to infinity. In + their paper, Sison & Glaz demo their method with at least 7 categories, so + ``len(counts) >= 7`` with all values in `counts` at or above 5 can be used + as a rule of thumb for the validity of this method. This method is less + conservative than the `goodman` method (i.e. it will yield confidence + intervals closer to the desired significance level), but produces + confidence intervals of uniform width over all categories (except when the + intervals reach 0 or 1, in which case they are truncated), which makes it + most useful when proportions are of similar magnitude. + + Aside from the original sources ([1]_, [2]_, and [3]_), the implementation + uses the formulas (though not the code) presented in [4]_ and [5]_. + + References + ---------- + .. [1] Levin, Bruce, "A representation for multinomial cumulative + distribution functions," The Annals of Statistics, Vol. 9, No. 5, + 1981, pp. 1123-1126. + + .. [2] Goodman, L.A., "On simultaneous confidence intervals for multinomial + proportions," Technometrics, Vol. 7, No. 2, 1965, pp. 247-254. + + .. [3] Sison, Cristina P., and Joseph Glaz, "Simultaneous Confidence + Intervals and Sample Size Determination for Multinomial + Proportions," Journal of the American Statistical Association, + Vol. 90, No. 429, 1995, pp. 366-369. + + .. [4] May, Warren L., and William D. Johnson, "A SAS® macro for + constructing simultaneous confidence intervals for multinomial + proportions," Computer methods and programs in Biomedicine, Vol. 53, + No. 3, 1997, pp. 153-162. + + .. [5] May, Warren L., and William D. Johnson, "Constructing two-sided + simultaneous confidence intervals for multinomial proportions for + small counts in a large number of cells," Journal of Statistical + Software, Vol. 5, No. 6, 2000, pp. 1-24. + ''' + if alpha <= 0 or alpha >= 1: + raise ValueError('alpha must be in (0, 1), bounds excluded') + counts = np.array(counts, dtype=np.float) + if (counts < 0).any(): + raise ValueError('counts must be >= 0') + + n = counts.sum() + k = len(counts) + proportions = counts / n + if method == 'goodman': + chi2 = stats.chi2.ppf(1 - alpha / k, 1) + delta = chi2 ** 2 + (4 * n * proportions * chi2 * (1 - proportions)) + region = ((2 * n * proportions + chi2 + + np.array([- np.sqrt(delta), np.sqrt(delta)])) / + (2 * (chi2 + n))).T + elif method[:5] == 'sison': # We accept any name starting with 'sison' + # Define a few functions we'll use a lot. + def poisson_interval(interval, p): + """Compute P(b <= Z <= a) where Z ~ Poisson(p) and + `interval = (b, a)`.""" + b, a = interval + prob = stats.poisson.cdf(a, p) - stats.poisson.cdf(b - 1, p) + if p == 0 and np.isnan(prob): + # hack for older scipy <=0.16.1 + return int(b - 1 < 0) + return prob + + def truncated_poisson_factorial_moment(interval, r, p): + """Compute mu_r, the r-th factorial moment of a poisson random + variable of parameter `p` truncated to `interval = (b, a)`.""" + b, a = interval + return p ** r * (1 - ((poisson_interval((a - r + 1, a), p) - + poisson_interval((b - r, b - 1), p)) / + poisson_interval((b, a), p))) + + def edgeworth(intervals): + """Compute the Edgeworth expansion term of Sison & Glaz's formula + (1) (approximated probability for multinomial proportions in a + given box).""" + # Compute means and central moments of the truncated poisson + # variables. + mu_r1, mu_r2, mu_r3, mu_r4 = [ + np.array([truncated_poisson_factorial_moment(interval, r, p) + for (interval, p) in zip(intervals, counts)]) + for r in range(1, 5) + ] + mu = mu_r1 + mu2 = mu_r2 + mu - mu ** 2 + mu3 = mu_r3 + mu_r2 * (3 - 3 * mu) + mu - 3 * mu ** 2 + 2 * mu ** 3 + mu4 = (mu_r4 + mu_r3 * (6 - 4 * mu) + + mu_r2 * (7 - 12 * mu + 6 * mu ** 2) + + mu - 4 * mu ** 2 + 6 * mu ** 3 - 3 * mu ** 4) + + # Compute expansion factors, gamma_1 and gamma_2. + g1 = mu3.sum() / mu2.sum() ** 1.5 + g2 = (mu4.sum() - 3 * (mu2 ** 2).sum()) / mu2.sum() ** 2 + + # Compute the expansion itself. + x = (n - mu.sum()) / np.sqrt(mu2.sum()) + phi = np.exp(- x ** 2 / 2) / np.sqrt(2 * np.pi) + H3 = x ** 3 - 3 * x + H4 = x ** 4 - 6 * x ** 2 + 3 + H6 = x ** 6 - 15 * x ** 4 + 45 * x ** 2 - 15 + f = phi * (1 + g1 * H3 / 6 + g2 * H4 / 24 + g1 ** 2 * H6 / 72) + return f / np.sqrt(mu2.sum()) + + + def approximated_multinomial_interval(intervals): + """Compute approximated probability for Multinomial(n, proportions) + to be in `intervals` (Sison & Glaz's formula (1)).""" + return np.exp( + np.sum(np.log([poisson_interval(interval, p) + for (interval, p) in zip(intervals, counts)])) + + np.log(edgeworth(intervals)) - + np.log(stats.poisson._pmf(n, n)) + ) + + def nu(c): + """Compute interval coverage for a given `c` (Sison & Glaz's + formula (7)).""" + return approximated_multinomial_interval( + [(np.maximum(count - c, 0), np.minimum(count + c, n)) + for count in counts]) + + # Find the value of `c` that will give us the confidence intervals + # (solving nu(c) <= 1 - alpha < nu(c + 1). + c = 1.0 + nuc = nu(c) + nucp1 = nu(c + 1) + while not (nuc <= (1 - alpha) < nucp1): + if c > n: + raise Exception("Couldn't find a value for `c` that " + "solves nu(c) <= 1 - alpha < nu(c + 1)") + c += 1 + nuc = nucp1 + nucp1 = nu(c + 1) + + # Compute gamma and the corresponding confidence intervals. + g = (1 - alpha - nuc) / (nucp1 - nuc) + ci_lower = np.maximum(proportions - c / n, 0) + ci_upper = np.minimum(proportions + (c + 2 * g) / n, 1) + region = np.array([ci_lower, ci_upper]).T + else: + raise NotImplementedError('method "%s" is not available' % method) + return region + + +def samplesize_confint_proportion(proportion, half_length, alpha=0.05, + method='normal'): + '''find sample size to get desired confidence interval length + + Parameters + ---------- + proportion : float in (0, 1) + proportion or quantile + half_length : float in (0, 1) + desired half length of the confidence interval + alpha : float in (0, 1) + significance level, default 0.05, + coverage of the two-sided interval is (approximately) ``1 - alpha`` + method : string in ['normal'] + method to use for confidence interval, + currently only normal approximation + + Returns + ------- + n : float + sample size to get the desired half length of the confidence interval + + Notes + ----- + this is mainly to store the formula. + possible application: number of replications in bootstrap samples + + ''' + q_ = proportion + if method == 'normal': + n = q_ * (1 - q_) / (half_length / stats.norm.isf(alpha / 2.))**2 + else: + raise NotImplementedError('only "normal" is available') + + return n + +def proportion_effectsize(prop1, prop2, method='normal'): + '''effect size for a test comparing two proportions + + for use in power function + + Parameters + ---------- + prop1, prop2: float or array_like + + Returns + ------- + es : float or ndarray + effect size for (transformed) prop1 - prop2 + + Notes + ----- + only method='normal' is implemented to match pwr.p2.test + see http://www.statmethods.net/stats/power.html + + Effect size for `normal` is defined as :: + + 2 * (arcsin(sqrt(prop1)) - arcsin(sqrt(prop2))) + + I think other conversions to normality can be used, but I need to check. + + Examples + -------- + >>> import statsmodels.api as sm + >>> sm.stats.proportion_effectsize(0.5, 0.4) + 0.20135792079033088 + >>> sm.stats.proportion_effectsize([0.3, 0.4, 0.5], 0.4) + array([-0.21015893, 0. , 0.20135792]) + + ''' + if method != 'normal': + raise ValueError('only "normal" is implemented') + + es = 2 * (np.arcsin(np.sqrt(prop1)) - np.arcsin(np.sqrt(prop2))) + return es + +def std_prop(prop, nobs): + '''standard error for the estimate of a proportion + + This is just ``np.sqrt(p * (1. - p) / nobs)`` + + Parameters + ---------- + prop : array_like + proportion + nobs : int, array_like + number of observations + + Returns + ------- + std : array_like + standard error for a proportion of nobs independent observations + ''' + return np.sqrt(prop * (1. - prop) / nobs) + +def _power_ztost(mean_low, var_low, mean_upp, var_upp, mean_alt, var_alt, + alpha=0.05, discrete=True, dist='norm', nobs=None, + continuity=0, critval_continuity=0): + '''Generic statistical power function for normal based equivalence test + + This includes options to adjust the normal approximation and can use + the binomial to evaluate the probability of the rejection region + + see power_ztost_prob for a description of the options + ''' + # TODO: refactor structure, separate norm and binom better + if not isinstance(continuity, tuple): + continuity = (continuity, continuity) + crit = stats.norm.isf(alpha) + k_low = mean_low + np.sqrt(var_low) * crit + k_upp = mean_upp - np.sqrt(var_upp) * crit + if discrete or dist == 'binom': + k_low = np.ceil(k_low * nobs + 0.5 * critval_continuity) + k_upp = np.trunc(k_upp * nobs - 0.5 * critval_continuity) + if dist == 'norm': + #need proportion + k_low = (k_low) * 1. / nobs #-1 to match PASS + k_upp = k_upp * 1. / nobs +# else: +# if dist == 'binom': +# #need counts +# k_low *= nobs +# k_upp *= nobs + #print mean_low, np.sqrt(var_low), crit, var_low + #print mean_upp, np.sqrt(var_upp), crit, var_upp + if np.any(k_low > k_upp): #vectorize + import warnings + warnings.warn("no overlap, power is zero", HypothesisTestWarning) + std_alt = np.sqrt(var_alt) + z_low = (k_low - mean_alt - continuity[0] * 0.5 / nobs) / std_alt + z_upp = (k_upp - mean_alt + continuity[1] * 0.5 / nobs) / std_alt + if dist == 'norm': + power = stats.norm.cdf(z_upp) - stats.norm.cdf(z_low) + elif dist == 'binom': + power = (stats.binom.cdf(k_upp, nobs, mean_alt) - + stats.binom.cdf(k_low-1, nobs, mean_alt)) + return power, (k_low, k_upp, z_low, z_upp) + + +def binom_tost(count, nobs, low, upp): + '''exact TOST test for one proportion using binomial distribution + + Parameters + ---------- + count : integer or array_like + the number of successes in nobs trials. + nobs : integer + the number of trials or observations. + low, upp : floats + lower and upper limit of equivalence region + + Returns + ------- + pvalue : float + p-value of equivalence test + pval_low, pval_upp : floats + p-values of lower and upper one-sided tests + + ''' + # binom_test_stat only returns pval + tt1 = binom_test(count, nobs, alternative='larger', prop=low) + tt2 = binom_test(count, nobs, alternative='smaller', prop=upp) + return np.maximum(tt1, tt2), tt1, tt2, + + +def binom_tost_reject_interval(low, upp, nobs, alpha=0.05): + '''rejection region for binomial TOST + + The interval includes the end points, + `reject` if and only if `r_low <= x <= r_upp`. + + The interval might be empty with `r_upp < r_low`. + + Parameters + ---------- + low, upp : floats + lower and upper limit of equivalence region + nobs : integer + the number of trials or observations. + + Returns + ------- + x_low, x_upp : float + lower and upper bound of rejection region + + ''' + x_low = stats.binom.isf(alpha, nobs, low) + 1 + x_upp = stats.binom.ppf(alpha, nobs, upp) - 1 + return x_low, x_upp + +def binom_test_reject_interval(value, nobs, alpha=0.05, alternative='two-sided'): + '''rejection region for binomial test for one sample proportion + + The interval includes the end points of the rejection region. + + Parameters + ---------- + value : float + proportion under the Null hypothesis + nobs : integer + the number of trials or observations. + + + Returns + ------- + x_low, x_upp : float + lower and upper bound of rejection region + + + ''' + if alternative in ['2s', 'two-sided']: + alternative = '2s' # normalize alternative name + alpha = alpha / 2 + + if alternative in ['2s', 'smaller']: + x_low = stats.binom.ppf(alpha, nobs, value) - 1 + else: + x_low = 0 + if alternative in ['2s', 'larger']: + x_upp = stats.binom.isf(alpha, nobs, value) + 1 + else : + x_upp = nobs + + return x_low, x_upp + +def binom_test(count, nobs, prop=0.5, alternative='two-sided'): + '''Perform a test that the probability of success is p. + + This is an exact, two-sided test of the null hypothesis + that the probability of success in a Bernoulli experiment + is `p`. + + Parameters + ---------- + count : integer or array_like + the number of successes in nobs trials. + nobs : integer + the number of trials or observations. + prop : float, optional + The probability of success under the null hypothesis, + `0 <= prop <= 1`. The default value is `prop = 0.5` + alternative : string in ['two-sided', 'smaller', 'larger'] + alternative hypothesis, which can be two-sided or either one of the + one-sided tests. + + Returns + ------- + p-value : float + The p-value of the hypothesis test + + Notes + ----- + This uses scipy.stats.binom_test for the two-sided alternative. + + ''' + + if np.any(prop > 1.0) or np.any(prop < 0.0): + raise ValueError("p must be in range [0,1]") + if alternative in ['2s', 'two-sided']: + pval = stats.binom_test(count, n=nobs, p=prop) + elif alternative in ['l', 'larger']: + pval = stats.binom.sf(count-1, nobs, prop) + elif alternative in ['s', 'smaller']: + pval = stats.binom.cdf(count, nobs, prop) + else: + raise ValueError('alternative not recognized\n' + 'should be two-sided, larger or smaller') + return pval + + +def power_binom_tost(low, upp, nobs, p_alt=None, alpha=0.05): + if p_alt is None: + p_alt = 0.5 * (low + upp) + x_low, x_upp = binom_tost_reject_interval(low, upp, nobs, alpha=alpha) + power = (stats.binom.cdf(x_upp, nobs, p_alt) - + stats.binom.cdf(x_low-1, nobs, p_alt)) + return power + +def power_ztost_prop(low, upp, nobs, p_alt, alpha=0.05, dist='norm', + variance_prop=None, discrete=True, continuity=0, + critval_continuity=0): + '''Power of proportions equivalence test based on normal distribution + + Parameters + ---------- + low, upp : floats + lower and upper limit of equivalence region + nobs : int + number of observations + p_alt : float in (0,1) + proportion under the alternative + alpha : float in (0,1) + significance level of the test + dist : string in ['norm', 'binom'] + This defines the distribution to evalute the power of the test. The + critical values of the TOST test are always based on the normal + approximation, but the distribution for the power can be either the + normal (default) or the binomial (exact) distribution. + variance_prop : None or float in (0,1) + If this is None, then the variances for the two one sided tests are + based on the proportions equal to the equivalence limits. + If variance_prop is given, then it is used to calculate the variance + for the TOST statistics. If this is based on an sample, then the + estimated proportion can be used. + discrete : bool + If true, then the critical values of the rejection region are converted + to integers. If dist is "binom", this is automatically assumed. + If discrete is false, then the TOST critical values are used as + floating point numbers, and the power is calculated based on the + rejection region that is not discretized. + continuity : bool or float + adjust the rejection region for the normal power probability. This has + and effect only if ``dist='norm'`` + critval_continuity : bool or float + If this is non-zero, then the critical values of the tost rejection + region are adjusted before converting to integers. This affects both + distributions, ``dist='norm'`` and ``dist='binom'``. + + Returns + ------- + power : float + statistical power of the equivalence test. + (k_low, k_upp, z_low, z_upp) : tuple of floats + critical limits in intermediate steps + temporary return, will be changed + + Notes + ----- + In small samples the power for the ``discrete`` version, has a sawtooth + pattern as a function of the number of observations. As a consequence, + small changes in the number of observations or in the normal approximation + can have a large effect on the power. + + ``continuity`` and ``critval_continuity`` are added to match some results + of PASS, and are mainly to investigate the sensitivity of the ztost power + to small changes in the rejection region. From my interpretation of the + equations in the SAS manual, both are zero in SAS. + + works vectorized + + **verification:** + + The ``dist='binom'`` results match PASS, + The ``dist='norm'`` results look reasonable, but no benchmark is available. + + References + ---------- + SAS Manual: Chapter 68: The Power Procedure, Computational Resources + PASS Chapter 110: Equivalence Tests for One Proportion. + + ''' + mean_low = low + var_low = std_prop(low, nobs)**2 + mean_upp = upp + var_upp = std_prop(upp, nobs)**2 + mean_alt = p_alt + var_alt = std_prop(p_alt, nobs)**2 + if variance_prop is not None: + var_low = var_upp = std_prop(variance_prop, nobs)**2 + power = _power_ztost(mean_low, var_low, mean_upp, var_upp, mean_alt, var_alt, + alpha=alpha, discrete=discrete, dist=dist, nobs=nobs, + continuity=continuity, critval_continuity=critval_continuity) + return np.maximum(power[0], 0), power[1:] + + +def _table_proportion(count, nobs): + '''create a k by 2 contingency table for proportion + + helper function for proportions_chisquare + + Parameters + ---------- + count : integer or array_like + the number of successes in nobs trials. + nobs : integer + the number of trials or observations. + + Returns + ------- + table : ndarray + (k, 2) contingency table + + Notes + ----- + recent scipy has more elaborate contingency table functions + + ''' + table = np.column_stack((count, nobs - count)) + expected = table.sum(0) * table.sum(1)[:,None] * 1. / table.sum() + n_rows = table.shape[0] + return table, expected, n_rows + + +def proportions_ztest(count, nobs, value=None, alternative='two-sided', + prop_var=False): + """ + Test for proportions based on normal (z) test + + Parameters + ---------- + count : integer or array_like + the number of successes in nobs trials. If this is array_like, then + the assumption is that this represents the number of successes for + each independent sample + nobs : integer or array-like + the number of trials or observations, with the same length as + count. + value : float, array_like or None, optional + This is the value of the null hypothesis equal to the proportion in the + case of a one sample test. In the case of a two-sample test, the + null hypothesis is that prop[0] - prop[1] = value, where prop is the + proportion in the two samples. If not provided value = 0 and the null + is prop[0] = prop[1] + alternative : string in ['two-sided', 'smaller', 'larger'] + The alternative hypothesis can be either two-sided or one of the one- + sided tests, smaller means that the alternative hypothesis is + ``prop < value`` and larger means ``prop > value``. In the two sample + test, smaller means that the alternative hypothesis is ``p1 < p2`` and + larger means ``p1 > p2`` where ``p1`` is the proportion of the first + sample and ``p2`` of the second one. + prop_var : False or float in (0, 1) + If prop_var is false, then the variance of the proportion estimate is + calculated based on the sample proportion. Alternatively, a proportion + can be specified to calculate this variance. Common use case is to + use the proportion under the Null hypothesis to specify the variance + of the proportion estimate. + + Returns + ------- + zstat : float + test statistic for the z-test + p-value : float + p-value for the z-test + + Examples + -------- + >>> count = 5 + >>> nobs = 83 + >>> value = .05 + >>> stat, pval = proportions_ztest(count, nobs, value) + >>> print('{0:0.3f}'.format(pval)) + 0.695 + + >>> import numpy as np + >>> from statsmodels.stats.proportion import proportions_ztest + >>> count = np.array([5, 12]) + >>> nobs = np.array([83, 99]) + >>> stat, pval = proportions_ztest(count, nobs) + >>> print('{0:0.3f}'.format(pval)) + 0.159 + + Notes + ----- + This uses a simple normal test for proportions. It should be the same as + running the mean z-test on the data encoded 1 for event and 0 for no event + so that the sum corresponds to the count. + + In the one and two sample cases with two-sided alternative, this test + produces the same p-value as ``proportions_chisquare``, since the + chisquare is the distribution of the square of a standard normal + distribution. + """ + # TODO: verify that this really holds + # TODO: add continuity correction or other improvements for small samples + # TODO: change options similar to propotion_ztost ? + + count = np.asarray(count) + nobs = np.asarray(nobs) + + if nobs.size == 1: + nobs = nobs * np.ones_like(count) + + prop = count * 1. / nobs + k_sample = np.size(prop) + if value is None: + if k_sample == 1: + raise ValueError('value must be provided for a 1-sample test') + value = 0 + if k_sample == 1: + diff = prop - value + elif k_sample == 2: + diff = prop[0] - prop[1] - value + else: + msg = 'more than two samples are not implemented yet' + raise NotImplementedError(msg) + + p_pooled = np.sum(count) * 1. / np.sum(nobs) + + nobs_fact = np.sum(1. / nobs) + if prop_var: + p_pooled = prop_var + var_ = p_pooled * (1 - p_pooled) * nobs_fact + std_diff = np.sqrt(var_) + from statsmodels.stats.weightstats import _zstat_generic2 + return _zstat_generic2(diff, std_diff, alternative) + +def proportions_ztost(count, nobs, low, upp, prop_var='sample'): + '''Equivalence test based on normal distribution + + Parameters + ---------- + count : integer or array_like + the number of successes in nobs trials. If this is array_like, then + the assumption is that this represents the number of successes for + each independent sample + nobs : integer + the number of trials or observations, with the same length as + count. + low, upp : float + equivalence interval low < prop1 - prop2 < upp + prop_var : string or float in (0, 1) + prop_var determines which proportion is used for the calculation + of the standard deviation of the proportion estimate + The available options for string are 'sample' (default), 'null' and + 'limits'. If prop_var is a float, then it is used directly. + + Returns + ------- + pvalue : float + pvalue of the non-equivalence test + t1, pv1 : tuple of floats + test statistic and pvalue for lower threshold test + t2, pv2 : tuple of floats + test statistic and pvalue for upper threshold test + + Notes + ----- + checked only for 1 sample case + + ''' + if prop_var == 'limits': + prop_var_low = low + prop_var_upp = upp + elif prop_var == 'sample': + prop_var_low = prop_var_upp = False #ztest uses sample + elif prop_var == 'null': + prop_var_low = prop_var_upp = 0.5 * (low + upp) + elif np.isreal(prop_var): + prop_var_low = prop_var_upp = prop_var + + tt1 = proportions_ztest(count, nobs, alternative='larger', + prop_var=prop_var_low, value=low) + tt2 = proportions_ztest(count, nobs, alternative='smaller', + prop_var=prop_var_upp, value=upp) + return np.maximum(tt1[1], tt2[1]), tt1, tt2, + +def proportions_chisquare(count, nobs, value=None): + '''test for proportions based on chisquare test + + Parameters + ---------- + count : integer or array_like + the number of successes in nobs trials. If this is array_like, then + the assumption is that this represents the number of successes for + each independent sample + nobs : integer + the number of trials or observations, with the same length as + count. + value : None or float or array_like + + Returns + ------- + chi2stat : float + test statistic for the chisquare test + p-value : float + p-value for the chisquare test + (table, expected) + table is a (k, 2) contingency table, ``expected`` is the corresponding + table of counts that are expected under independence with given + margins + + + Notes + ----- + Recent version of scipy.stats have a chisquare test for independence in + contingency tables. + + This function provides a similar interface to chisquare tests as + ``prop.test`` in R, however without the option for Yates continuity + correction. + + count can be the count for the number of events for a single proportion, + or the counts for several independent proportions. If value is given, then + all proportions are jointly tested against this value. If value is not + given and count and nobs are not scalar, then the null hypothesis is + that all samples have the same proportion. + + ''' + nobs = np.atleast_1d(nobs) + table, expected, n_rows = _table_proportion(count, nobs) + if value is not None: + expected = np.column_stack((nobs * value, nobs * (1 - value))) + ddof = n_rows - 1 + else: + ddof = n_rows + + #print table, expected + chi2stat, pval = stats.chisquare(table.ravel(), expected.ravel(), + ddof=ddof) + return chi2stat, pval, (table, expected) + + + + +def proportions_chisquare_allpairs(count, nobs, multitest_method='hs'): + '''chisquare test of proportions for all pairs of k samples + + Performs a chisquare test for proportions for all pairwise comparisons. + The alternative is two-sided + + Parameters + ---------- + count : integer or array_like + the number of successes in nobs trials. + nobs : integer + the number of trials or observations. + prop : float, optional + The probability of success under the null hypothesis, + `0 <= prop <= 1`. The default value is `prop = 0.5` + multitest_method : string + This chooses the method for the multiple testing p-value correction, + that is used as default in the results. + It can be any method that is available in ``multipletesting``. + The default is Holm-Sidak 'hs'. + + Returns + ------- + result : AllPairsResults instance + The returned results instance has several statistics, such as p-values, + attached, and additional methods for using a non-default + ``multitest_method``. + + Notes + ----- + Yates continuity correction is not available. + ''' + #all_pairs = lmap(list, lzip(*np.triu_indices(4, 1))) + all_pairs = lzip(*np.triu_indices(len(count), 1)) + pvals = [proportions_chisquare(count[list(pair)], nobs[list(pair)])[1] + for pair in all_pairs] + return AllPairsResults(pvals, all_pairs, multitest_method=multitest_method) + +def proportions_chisquare_pairscontrol(count, nobs, value=None, + multitest_method='hs', alternative='two-sided'): + '''chisquare test of proportions for pairs of k samples compared to control + + Performs a chisquare test for proportions for pairwise comparisons with a + control (Dunnet's test). The control is assumed to be the first element + of ``count`` and ``nobs``. The alternative is two-sided, larger or + smaller. + + Parameters + ---------- + count : integer or array_like + the number of successes in nobs trials. + nobs : integer + the number of trials or observations. + prop : float, optional + The probability of success under the null hypothesis, + `0 <= prop <= 1`. The default value is `prop = 0.5` + multitest_method : string + This chooses the method for the multiple testing p-value correction, + that is used as default in the results. + It can be any method that is available in ``multipletesting``. + The default is Holm-Sidak 'hs'. + alternative : string in ['two-sided', 'smaller', 'larger'] + alternative hypothesis, which can be two-sided or either one of the + one-sided tests. + + Returns + ------- + result : AllPairsResults instance + The returned results instance has several statistics, such as p-values, + attached, and additional methods for using a non-default + ``multitest_method``. + + + Notes + ----- + Yates continuity correction is not available. + + ``value`` and ``alternative`` options are not yet implemented. + + ''' + if (value is not None) or (alternative not in ['two-sided', '2s']): + raise NotImplementedError + #all_pairs = lmap(list, lzip(*np.triu_indices(4, 1))) + all_pairs = [(0, k) for k in range(1, len(count))] + pvals = [proportions_chisquare(count[list(pair)], nobs[list(pair)], + #alternative=alternative)[1] + )[1] + for pair in all_pairs] + return AllPairsResults(pvals, all_pairs, multitest_method=multitest_method) diff --git a/statsmodels/stats/regularized_covariance.py b/statsmodels/stats/regularized_covariance.py new file mode 100644 index 0000000..e0c8688 --- /dev/null +++ b/statsmodels/stats/regularized_covariance.py @@ -0,0 +1,181 @@ +from statsmodels.regression.linear_model import OLS +import numpy as np + + +def _calc_nodewise_row(exog, idx, alpha): + """calculates the nodewise_row values for the idxth variable, used to + estimate approx_inv_cov. + + Parameters + ---------- + exog : array-like + The weighted design matrix for the current partition. + idx : scalar + Index of the current variable. + alpha : scalar or array-like + The penalty weight. If a scalar, the same penalty weight + applies to all variables in the model. If a vector, it + must have the same length as `params`, and contains a + penalty weight for each coefficient. + + Returns + ------- + An array-like object of length p-1 + + Notes + ----- + + nodewise_row_i = arg min 1/(2n) ||exog_i - exog_-i gamma||_2^2 + + alpha ||gamma||_1 + """ + + p = exog.shape[1] + ind = list(range(p)) + ind.pop(idx) + + # handle array alphas + if not np.isscalar(alpha): + alpha = alpha[ind] + + tmod = OLS(exog[:, idx], exog[:, ind]) + + nodewise_row = tmod.fit_regularized(alpha=alpha).params + + return nodewise_row + + +def _calc_nodewise_weight(exog, nodewise_row, idx, alpha): + """calculates the nodewise_weightvalue for the idxth variable, used to + estimate approx_inv_cov. + + Parameters + ---------- + exog : array-like + The weighted design matrix for the current partition. + nodewise_row : array-like + The nodewise_row values for the current variable. + idx : scalar + Index of the current variable + alpha : scalar or array-like + The penalty weight. If a scalar, the same penalty weight + applies to all variables in the model. If a vector, it + must have the same length as `params`, and contains a + penalty weight for each coefficient. + + Returns + ------- + A scalar + + Notes + ----- + + nodewise_weight_i = sqrt(1/n ||exog,i - exog_-i nodewise_row||_2^2 + + alpha ||nodewise_row||_1) + """ + + n, p = exog.shape + ind = list(range(p)) + ind.pop(idx) + + # handle array alphas + if not np.isscalar(alpha): + alpha = alpha[ind] + + d = np.linalg.norm(exog[:, idx] - exog[:, ind].dot(nodewise_row))**2 + d = np.sqrt(d / n + alpha * np.linalg.norm(nodewise_row, 1)) + return d + + +def _calc_approx_inv_cov(nodewise_row_l, nodewise_weight_l): + """calculates the approximate inverse covariance matrix + + Parameters + ---------- + nodewise_row_l : list + A list of array-like object where each object corresponds to + the nodewise_row values for the corresponding variable, should + be length p. + nodewise_weight_l : list + A list of scalars where each scalar corresponds to the nodewise_weight + value for the corresponding variable, should be length p. + + Returns + ------ + An array-like object, p x p matrix + + Notes + ----- + + nwr = nodewise_row + nww = nodewise_weight + + approx_inv_cov_j = - 1 / nww_j [nwr_j,1,...,1,...nwr_j,p] + """ + + p = len(nodewise_weight_l) + + approx_inv_cov = -np.eye(p) + for idx in range(p): + ind = list(range(p)) + ind.pop(idx) + approx_inv_cov[idx, ind] = nodewise_row_l[idx] + approx_inv_cov *= -1 / nodewise_weight_l[:, None]**2 + + return approx_inv_cov + + +class RegularizedInvCovariance(object): + __doc__ = """ + Class for estimating regularized inverse covariance with + nodewise regression + + Parameters + ---------- + exog : array-like + A weighted design matrix for covariance + + Attributes + ---------- + exog : array-like + A weighted design matrix for covariance + alpha : scalar + Regularizing constant + """ + + def __init__(self, exog): + + self.exog = exog + + def fit(self, alpha=0): + """estimates the regularized inverse covariance using nodewise + regression + + Parameters + ---------- + alpha : scalar + Regularizing constant + """ + + n, p = self.exog.shape + + nodewise_row_l = [] + nodewise_weight_l = [] + + for idx in range(p): + nodewise_row = _calc_nodewise_row(self.exog, idx, alpha) + nodewise_row_l.append(nodewise_row) + + nodewise_weight = _calc_nodewise_weight(self.exog, nodewise_row, + idx, alpha) + nodewise_weight_l.append(nodewise_weight) + + nodewise_row_l = np.array(nodewise_row_l) + nodewise_weight_l = np.array(nodewise_weight_l) + + approx_inv_cov = _calc_approx_inv_cov(nodewise_row_l, + nodewise_weight_l) + + self._approx_inv_cov = approx_inv_cov + + def approx_inv_cov(self): + return self._approx_inv_cov diff --git a/statsmodels/stats/sandwich_covariance.py b/statsmodels/stats/sandwich_covariance.py new file mode 100644 index 0000000..f0b31bf --- /dev/null +++ b/statsmodels/stats/sandwich_covariance.py @@ -0,0 +1,877 @@ +# -*- coding: utf-8 -*- +"""Sandwich covariance estimators + + +Created on Sun Nov 27 14:10:57 2011 + +Author: Josef Perktold +Author: Skipper Seabold for HCxxx in linear_model.RegressionResults +License: BSD-3 + +Notes +----- + +for calculating it, we have two versions + +version 1: use pinv +pinv(x) scale pinv(x) used currently in linear_model, with scale is +1d (or diagonal matrix) +(x'x)^(-1) x' scale x (x'x)^(-1), scale in general is (nobs, nobs) so +pretty large general formulas for scale in cluster case are in [4], +which can be found (as of 2017-05-20) at +http://www.tandfonline.com/doi/abs/10.1198/jbes.2010.07136 +This paper also has the second version. + +version 2: +(x'x)^(-1) S (x'x)^(-1) with S = x' scale x, S is (kvar,kvars), +(x'x)^(-1) is available as normalized_covparams. + + + +S = sum (x*u) dot (x*u)' = sum x*u*u'*x' where sum here can aggregate +over observations or groups. u is regression residual. + +x is (nobs, k_var) +u is (nobs, 1) +x*u is (nobs, k_var) + + +For cluster robust standard errors, we first sum (x*w) over other groups +(including time) and then take the dot product (sum of outer products) + +S = sum_g(x*u)' dot sum_g(x*u) +For HAC by clusters, we first sum over groups for each time period, and then +use HAC on the group sums of (x*w). +If we have several groups, we have to sum first over all relevant groups, and +then take the outer product sum. This can be done by summing using indicator +functions or matrices or with explicit loops. Alternatively we calculate +separate covariance matrices for each group, sum them and subtract the +duplicate counted intersection. + +Not checked in details yet: degrees of freedom or small sample correction +factors, see (two) references (?) + + +This is the general case for MLE and GMM also + +in MLE hessian H, outerproduct of jacobian S, cov_hjjh = HJJH, +which reduces to the above in the linear case, but can be used +generally, e.g. in discrete, and is misnomed in GenericLikelihoodModel + +in GMM it's similar but I would have to look up the details, (it comes +out in sandwich form by default, it's in the sandbox), standard Newey +West or similar are on the covariance matrix of the moment conditions + +quasi-MLE: MLE with mis-specified model where parameter estimates are +fine (consistent ?) but cov_params needs to be adjusted similar or +same as in sandwiches. (I didn't go through any details yet.) + +TODO +---- +* small sample correction factors, Done for cluster, not yet for HAC +* automatic lag-length selection for Newey-West HAC, + -> added: nlag = floor[4(T/100)^(2/9)] Reference: xtscc paper, Newey-West + note this will not be optimal in the panel context, see Peterson +* HAC should maybe return the chosen nlags +* get consistent notation, varies by paper, S, scale, sigma? +* replace diag(hat_matrix) calculations in cov_hc2, cov_hc3 + + +References +---------- +[1] John C. Driscoll and Aart C. Kraay, “Consistent Covariance Matrix Estimation +with Spatially Dependent Panel Data,” Review of Economics and Statistics 80, +no. 4 (1998): 549-560. + +[2] Daniel Hoechle, "Robust Standard Errors for Panel Regressions with +Cross-Sectional Dependence", The Stata Journal + +[3] Mitchell A. Petersen, “Estimating Standard Errors in Finance Panel Data +Sets: Comparing Approaches,” Review of Financial Studies 22, no. 1 +(January 1, 2009): 435 -480. + +[4] A. Colin Cameron, Jonah B. Gelbach, and Douglas L. Miller, “Robust Inference +With Multiway Clustering,” Journal of Business and Economic Statistics 29 +(April 2011): 238-249. + + +not used yet: +A.C. Cameron, J.B. Gelbach, and D.L. Miller, “Bootstrap-based improvements +for inference with clustered errors,” The Review of Economics and +Statistics 90, no. 3 (2008): 414–427. + +""" +from statsmodels.compat.python import range +import numpy as np + +from statsmodels.tools.grouputils import combine_indices, group_sums +from statsmodels.stats.moment_helpers import se_cov + +__all__ = ['cov_cluster', 'cov_cluster_2groups', 'cov_hac', 'cov_nw_panel', + 'cov_white_simple', + 'cov_hc0', 'cov_hc1', 'cov_hc2', 'cov_hc3', + 'se_cov', 'weights_bartlett', 'weights_uniform'] + + + + +#----------- from linear_model.RegressionResults +''' + HC0_se + White's (1980) heteroskedasticity robust standard errors. + Defined as sqrt(diag(X.T X)^(-1)X.T diag(e_i^(2)) X(X.T X)^(-1) + where e_i = resid[i] + HC0_se is a property. It is not evaluated until it is called. + When it is called the RegressionResults instance will then have + another attribute cov_HC0, which is the full heteroskedasticity + consistent covariance matrix and also `het_scale`, which is in + this case just resid**2. HCCM matrices are only appropriate for OLS. + HC1_se + MacKinnon and White's (1985) alternative heteroskedasticity robust + standard errors. + Defined as sqrt(diag(n/(n-p)*HC_0) + HC1_se is a property. It is not evaluated until it is called. + When it is called the RegressionResults instance will then have + another attribute cov_HC1, which is the full HCCM and also `het_scale`, + which is in this case n/(n-p)*resid**2. HCCM matrices are only + appropriate for OLS. + HC2_se + MacKinnon and White's (1985) alternative heteroskedasticity robust + standard errors. + Defined as (X.T X)^(-1)X.T diag(e_i^(2)/(1-h_ii)) X(X.T X)^(-1) + where h_ii = x_i(X.T X)^(-1)x_i.T + HC2_se is a property. It is not evaluated until it is called. + When it is called the RegressionResults instance will then have + another attribute cov_HC2, which is the full HCCM and also `het_scale`, + which is in this case is resid^(2)/(1-h_ii). HCCM matrices are only + appropriate for OLS. + HC3_se + MacKinnon and White's (1985) alternative heteroskedasticity robust + standard errors. + Defined as (X.T X)^(-1)X.T diag(e_i^(2)/(1-h_ii)^(2)) X(X.T X)^(-1) + where h_ii = x_i(X.T X)^(-1)x_i.T + HC3_se is a property. It is not evaluated until it is called. + When it is called the RegressionResults instance will then have + another attribute cov_HC3, which is the full HCCM and also `het_scale`, + which is in this case is resid^(2)/(1-h_ii)^(2). HCCM matrices are + only appropriate for OLS. + +''' + +# Note: HCCM stands for Heteroskedasticity Consistent Covariance Matrix +def _HCCM(results, scale): + ''' + sandwich with pinv(x) * diag(scale) * pinv(x).T + + where pinv(x) = (X'X)^(-1) X + and scale is (nobs,) + ''' + H = np.dot(results.model.pinv_wexog, + scale[:,None]*results.model.pinv_wexog.T) + return H + +def cov_hc0(results): + """ + See statsmodels.RegressionResults + """ + + het_scale = results.resid**2 # or whitened residuals? only OLS? + cov_hc0 = _HCCM(results, het_scale) + + return cov_hc0 + +def cov_hc1(results): + """ + See statsmodels.RegressionResults + """ + + het_scale = results.nobs/(results.df_resid)*(results.resid**2) + cov_hc1 = _HCCM(results, het_scale) + return cov_hc1 + +def cov_hc2(results): + """ + See statsmodels.RegressionResults + """ + + # probably could be optimized + h = np.diag(np.dot(results.model.exog, + np.dot(results.normalized_cov_params, + results.model.exog.T))) + het_scale = results.resid**2/(1-h) + cov_hc2_ = _HCCM(results, het_scale) + return cov_hc2_ + +def cov_hc3(results): + """ + See statsmodels.RegressionResults + """ + + # above probably could be optimized to only calc the diag + h = np.diag(np.dot(results.model.exog, + np.dot(results.normalized_cov_params, + results.model.exog.T))) + het_scale=(results.resid/(1-h))**2 + cov_hc3_ = _HCCM(results, het_scale) + return cov_hc3_ + +#--------------------------------------- + +def _get_sandwich_arrays(results, cov_type=''): + """Helper function to get scores from results + + Parameters + + """ + + if isinstance(results, tuple): + # assume we have jac and hessian_inv + jac, hessian_inv = results + xu = jac = np.asarray(jac) + hessian_inv = np.asarray(hessian_inv) + elif hasattr(results, 'model'): + if hasattr(results, '_results'): + # remove wrapper + results = results._results + # assume we have a results instance + if hasattr(results.model, 'jac'): + xu = results.model.jac(results.params) + hessian_inv = np.linalg.inv(results.model.hessian(results.params)) + elif hasattr(results.model, 'score_obs'): + xu = results.model.score_obs(results.params) + hessian_inv = np.linalg.inv(results.model.hessian(results.params)) + else: + xu = results.model.wexog * results.wresid[:, None] + + hessian_inv = np.asarray(results.normalized_cov_params) + + # experimental support for freq_weights + if hasattr(results.model, 'freq_weights') and not cov_type == 'clu': + # we don't want to square the weights in the covariance calculations + # assumes that freq_weights are incorporated in score_obs or equivalent + # assumes xu/score_obs is 2D + # temporary asarray + xu /= np.sqrt(np.asarray(results.model.freq_weights)[:, None]) + + else: + raise ValueError('need either tuple of (jac, hessian_inv) or results' + + 'instance') + + return xu, hessian_inv + + +def _HCCM1(results, scale): + ''' + sandwich with pinv(x) * scale * pinv(x).T + + where pinv(x) = (X'X)^(-1) X + and scale is (nobs, nobs), or (nobs,) with diagonal matrix diag(scale) + + Parameters + ---------- + results : result instance + need to contain regression results, uses results.model.pinv_wexog + scale : ndarray (nobs,) or (nobs, nobs) + scale matrix, treated as diagonal matrix if scale is one-dimensional + + Returns + ------- + H : ndarray (k_vars, k_vars) + robust covariance matrix for the parameter estimates + + ''' + if scale.ndim == 1: + H = np.dot(results.model.pinv_wexog, + scale[:,None]*results.model.pinv_wexog.T) + else: + H = np.dot(results.model.pinv_wexog, + np.dot(scale, results.model.pinv_wexog.T)) + return H + +def _HCCM2(hessian_inv, scale): + ''' + sandwich with (X'X)^(-1) * scale * (X'X)^(-1) + + scale is (kvars, kvars) + this uses results.normalized_cov_params for (X'X)^(-1) + + Parameters + ---------- + results : result instance + need to contain regression results, uses results.normalized_cov_params + scale : ndarray (k_vars, k_vars) + scale matrix + + Returns + ------- + H : ndarray (k_vars, k_vars) + robust covariance matrix for the parameter estimates + + ''' + if scale.ndim == 1: + scale = scale[:,None] + + xxi = hessian_inv + H = np.dot(np.dot(xxi, scale), xxi.T) + return H + +#TODO: other kernels, move ? +def weights_bartlett(nlags): + '''Bartlett weights for HAC + + this will be moved to another module + + Parameters + ---------- + nlags : int + highest lag in the kernel window, this does not include the zero lag + + Returns + ------- + kernel : ndarray, (nlags+1,) + weights for Bartlett kernel + + ''' + + #with lag zero + return 1 - np.arange(nlags+1)/(nlags+1.) + +def weights_uniform(nlags): + '''uniform weights for HAC + + this will be moved to another module + + Parameters + ---------- + nlags : int + highest lag in the kernel window, this does not include the zero lag + + Returns + ------- + kernel : ndarray, (nlags+1,) + weights for uniform kernel + + ''' + + #with lag zero + return np.ones(nlags+1) + + +kernel_dict = {'bartlett': weights_bartlett, + 'uniform': weights_uniform} + + +def S_hac_simple(x, nlags=None, weights_func=weights_bartlett): + '''inner covariance matrix for HAC (Newey, West) sandwich + + assumes we have a single time series with zero axis consecutive, equal + spaced time periods + + + Parameters + ---------- + x : ndarray (nobs,) or (nobs, k_var) + data, for HAC this is array of x_i * u_i + nlags : int or None + highest lag to include in kernel window. If None, then + nlags = floor(4(T/100)^(2/9)) is used. + weights_func : callable + weights_func is called with nlags as argument to get the kernel + weights. default are Bartlett weights + + Returns + ------- + S : ndarray, (k_vars, k_vars) + inner covariance matrix for sandwich + + Notes + ----- + used by cov_hac_simple + + options might change when other kernels besides Bartlett are available. + + ''' + + if x.ndim == 1: + x = x[:,None] + n_periods = x.shape[0] + if nlags is None: + nlags = int(np.floor(4 * (n_periods / 100.)**(2./9.))) + + weights = weights_func(nlags) + + S = weights[0] * np.dot(x.T, x) #weights[0] just for completeness, is 1 + + for lag in range(1, nlags+1): + s = np.dot(x[lag:].T, x[:-lag]) + S += weights[lag] * (s + s.T) + + return S + +def S_white_simple(x): + '''inner covariance matrix for White heteroscedastistity sandwich + + + Parameters + ---------- + x : ndarray (nobs,) or (nobs, k_var) + data, for HAC this is array of x_i * u_i + + Returns + ------- + S : ndarray, (k_vars, k_vars) + inner covariance matrix for sandwich + + Notes + ----- + this is just dot(X.T, X) + + ''' + if x.ndim == 1: + x = x[:,None] + + return np.dot(x.T, x) + + +def S_hac_groupsum(x, time, nlags=None, weights_func=weights_bartlett): + '''inner covariance matrix for HAC over group sums sandwich + + This assumes we have complete equal spaced time periods. + The number of time periods per group need not be the same, but we need + at least one observation for each time period + + For a single categorical group only, or a everything else but time + dimension. This first aggregates x over groups for each time period, then + applies HAC on the sum per period. + + Parameters + ---------- + x : ndarray (nobs,) or (nobs, k_var) + data, for HAC this is array of x_i * u_i + time : ndarray, (nobs,) + timeindes, assumed to be integers range(n_periods) + nlags : int or None + highest lag to include in kernel window. If None, then + nlags = floor[4(T/100)^(2/9)] is used. + weights_func : callable + weights_func is called with nlags as argument to get the kernel + weights. default are Bartlett weights + + Returns + ------- + S : ndarray, (k_vars, k_vars) + inner covariance matrix for sandwich + + References + ---------- + Daniel Hoechle, xtscc paper + Driscoll and Kraay + + ''' + #needs groupsums + + x_group_sums = group_sums(x, time).T #TODO: transpose return in grou_sum + + return S_hac_simple(x_group_sums, nlags=nlags, weights_func=weights_func) + + +def S_crosssection(x, group): + '''inner covariance matrix for White on group sums sandwich + + I guess for a single categorical group only, + categorical group, can also be the product/intersection of groups + + This is used by cov_cluster and indirectly verified + + ''' + x_group_sums = group_sums(x, group).T #TODO: why transposed + + return S_white_simple(x_group_sums) + + +def cov_crosssection_0(results, group): + '''this one is still wrong, use cov_cluster instead''' + + #TODO: currently used version of groupsums requires 2d resid + scale = S_crosssection(results.resid[:,None], group) + scale = np.squeeze(scale) + cov = _HCCM1(results, scale) + return cov + +def cov_cluster(results, group, use_correction=True): + '''cluster robust covariance matrix + + Calculates sandwich covariance matrix for a single cluster, i.e. grouped + variables. + + Parameters + ---------- + results : result instance + result of a regression, uses results.model.exog and results.resid + TODO: this should use wexog instead + use_correction : bool + If true (default), then the small sample correction factor is used. + + Returns + ------- + cov : ndarray, (k_vars, k_vars) + cluster robust covariance matrix for parameter estimates + + Notes + ----- + same result as Stata in UCLA example and same as Peterson + + ''' + #TODO: currently used version of groupsums requires 2d resid + xu, hessian_inv = _get_sandwich_arrays(results, cov_type='clu') + + if not hasattr(group, 'dtype') or group.dtype != np.dtype('int'): + clusters, group = np.unique(group, return_inverse=True) + else: + clusters = np.unique(group) + + scale = S_crosssection(xu, group) + + nobs, k_params = xu.shape + n_groups = len(clusters) #replace with stored group attributes if available + + cov_c = _HCCM2(hessian_inv, scale) + + if use_correction: + cov_c *= (n_groups / (n_groups - 1.) * + ((nobs-1.) / float(nobs - k_params))) + + return cov_c + +def cov_cluster_2groups(results, group, group2=None, use_correction=True): + '''cluster robust covariance matrix for two groups/clusters + + Parameters + ---------- + results : result instance + result of a regression, uses results.model.exog and results.resid + TODO: this should use wexog instead + use_correction : bool + If true (default), then the small sample correction factor is used. + + Returns + ------- + cov_both : ndarray, (k_vars, k_vars) + cluster robust covariance matrix for parameter estimates, for both + clusters + cov_0 : ndarray, (k_vars, k_vars) + cluster robust covariance matrix for parameter estimates for first + cluster + cov_1 : ndarray, (k_vars, k_vars) + cluster robust covariance matrix for parameter estimates for second + cluster + + Notes + ----- + + verified against Peterson's table, (4 decimal print precision) + ''' + + if group2 is None: + if group.ndim !=2 or group.shape[1] != 2: + raise ValueError('if group2 is not given, then groups needs to be ' + + 'an array with two columns') + group0 = group[:, 0] + group1 = group[:, 1] + else: + group0 = group + group1 = group2 + group = (group0, group1) + + + cov0 = cov_cluster(results, group0, use_correction=use_correction) + #[0] because we get still also returns bse + cov1 = cov_cluster(results, group1, use_correction=use_correction) + + # cov of cluster formed by intersection of two groups + cov01 = cov_cluster(results, + combine_indices(group)[0], + use_correction=use_correction) + + #robust cov matrix for union of groups + cov_both = cov0 + cov1 - cov01 + + #return all three (for now?) + return cov_both, cov0, cov1 + + +def cov_white_simple(results, use_correction=True): + ''' + heteroscedasticity robust covariance matrix (White) + + Parameters + ---------- + results : result instance + result of a regression, uses results.model.exog and results.resid + TODO: this should use wexog instead + + Returns + ------- + cov : ndarray, (k_vars, k_vars) + heteroscedasticity robust covariance matrix for parameter estimates + + Notes + ----- + This produces the same result as cov_hc0, and does not include any small + sample correction. + + verified (against LinearRegressionResults and Peterson) + + See Also + -------- + cov_hc1, cov_hc2, cov_hc3 : heteroscedasticity robust covariance matrices + with small sample corrections + + ''' + xu, hessian_inv = _get_sandwich_arrays(results) + sigma = S_white_simple(xu) + + cov_w = _HCCM2(hessian_inv, sigma) #add bread to sandwich + + if use_correction: + nobs, k_params = xu.shape + cov_w *= nobs / float(nobs - k_params) + + return cov_w + + +def cov_hac_simple(results, nlags=None, weights_func=weights_bartlett, + use_correction=True): + ''' + heteroscedasticity and autocorrelation robust covariance matrix (Newey-West) + + Assumes we have a single time series with zero axis consecutive, equal + spaced time periods + + + Parameters + ---------- + results : result instance + result of a regression, uses results.model.exog and results.resid + TODO: this should use wexog instead + nlags : int or None + highest lag to include in kernel window. If None, then + nlags = floor[4(T/100)^(2/9)] is used. + weights_func : callable + weights_func is called with nlags as argument to get the kernel + weights. default are Bartlett weights + + Returns + ------- + cov : ndarray, (k_vars, k_vars) + HAC robust covariance matrix for parameter estimates + + Notes + ----- + verified only for nlags=0, which is just White + just guessing on correction factor, need reference + + options might change when other kernels besides Bartlett are available. + + ''' + xu, hessian_inv = _get_sandwich_arrays(results) + sigma = S_hac_simple(xu, nlags=nlags, weights_func=weights_func) + + cov_hac = _HCCM2(hessian_inv, sigma) + + if use_correction: + nobs, k_params = xu.shape + cov_hac *= nobs / float(nobs - k_params) + + return cov_hac + +cov_hac = cov_hac_simple #alias for users + +#---------------------- use time lags corrected for groups +#the following were copied from a different experimental script, +#groupidx is tuple, observations assumed to be stacked by group member and +#sorted by time, equal number of periods is not required, but equal spacing is. +#I think this is pure within group HAC: apply HAC to each group member +#separately + +def lagged_groups(x, lag, groupidx): + ''' + assumes sorted by time, groupidx is tuple of start and end values + not optimized, just to get a working version, loop over groups + ''' + out0 = [] + out_lagged = [] + for l,u in groupidx: + if l+lag < u: #group is longer than lag + out0.append(x[l+lag:u]) + out_lagged.append(x[l:u-lag]) + + if out0 == []: + raise ValueError('all groups are empty taking lags') + #return out0, out_lagged + return np.vstack(out0), np.vstack(out_lagged) + + + +def S_nw_panel(xw, weights, groupidx): + '''inner covariance matrix for HAC for panel data + + no denominator nobs used + + no reference for this, just accounting for time indices + ''' + nlags = len(weights)-1 + + S = weights[0] * np.dot(xw.T, xw) #weights just for completeness + for lag in range(1, nlags+1): + xw0, xwlag = lagged_groups(xw, lag, groupidx) + s = np.dot(xw0.T, xwlag) + S += weights[lag] * (s + s.T) + return S + + +def cov_nw_panel(results, nlags, groupidx, weights_func=weights_bartlett, + use_correction='hac'): + '''Panel HAC robust covariance matrix + + Assumes we have a panel of time series with consecutive, equal spaced time + periods. Data is assumed to be in long format with time series of each + individual stacked into one array. Panel can be unbalanced. + + Parameters + ---------- + results : result instance + result of a regression, uses results.model.exog and results.resid + TODO: this should use wexog instead + nlags : int or None + Highest lag to include in kernel window. Currently, no default + because the optimal length will depend on the number of observations + per cross-sectional unit. + groupidx : list of tuple + each tuple should contain the start and end index for an individual. + (groupidx might change in future). + weights_func : callable + weights_func is called with nlags as argument to get the kernel + weights. default are Bartlett weights + use_correction : 'cluster' or 'hac' or False + If False, then no small sample correction is used. + If 'cluster' (default), then the same correction as in cov_cluster is + used. + If 'hac', then the same correction as in single time series, cov_hac + is used. + + + Returns + ------- + cov : ndarray, (k_vars, k_vars) + HAC robust covariance matrix for parameter estimates + + Notes + ----- + For nlags=0, this is just White covariance, cov_white. + If kernel is uniform, `weights_uniform`, with nlags equal to the number + of observations per unit in a balance panel, then cov_cluster and + cov_hac_panel are identical. + + Tested against STATA `newey` command with same defaults. + + Options might change when other kernels besides Bartlett and uniform are + available. + + ''' + if nlags == 0: #so we can reproduce HC0 White + weights = [1, 0] #to avoid the scalar check in hac_nw + else: + weights = weights_func(nlags) + + xu, hessian_inv = _get_sandwich_arrays(results) + + S_hac = S_nw_panel(xu, weights, groupidx) + cov_hac = _HCCM2(hessian_inv, S_hac) + if use_correction: + nobs, k_params = xu.shape + if use_correction == 'hac': + cov_hac *= nobs / float(nobs - k_params) + elif use_correction in ['c', 'clu', 'cluster']: + n_groups = len(groupidx) + cov_hac *= n_groups / (n_groups - 1.) + cov_hac *= ((nobs-1.) / float(nobs - k_params)) + + return cov_hac + + +def cov_nw_groupsum(results, nlags, time, weights_func=weights_bartlett, + use_correction=0): + '''Driscoll and Kraay Panel robust covariance matrix + + Robust covariance matrix for panel data of Driscoll and Kraay. + + Assumes we have a panel of time series where the time index is available. + The time index is assumed to represent equal spaced periods. At least one + observation per period is required. + + Parameters + ---------- + results : result instance + result of a regression, uses results.model.exog and results.resid + TODO: this should use wexog instead + nlags : int or None + Highest lag to include in kernel window. Currently, no default + because the optimal length will depend on the number of observations + per cross-sectional unit. + time : ndarray of int + this should contain the coding for the time period of each observation. + time periods should be integers in range(maxT) where maxT is obs of i + weights_func : callable + weights_func is called with nlags as argument to get the kernel + weights. default are Bartlett weights + use_correction : 'cluster' or 'hac' or False + If False, then no small sample correction is used. + If 'hac' (default), then the same correction as in single time series, cov_hac + is used. + If 'cluster', then the same correction as in cov_cluster is + used. + + Returns + ------- + cov : ndarray, (k_vars, k_vars) + HAC robust covariance matrix for parameter estimates + + Notes + ----- + Tested against STATA xtscc package, which uses no small sample correction + + This first averages relevant variables for each time period over all + individuals/groups, and then applies the same kernel weighted averaging + over time as in HAC. + + Warning: + In the example with a short panel (few time periods and many individuals) + with mainly across individual variation this estimator did not produce + reasonable results. + + Options might change when other kernels besides Bartlett and uniform are + available. + + References + ---------- + Daniel Hoechle, xtscc paper + Driscoll and Kraay + + ''' + + xu, hessian_inv = _get_sandwich_arrays(results) + + #S_hac = S_nw_panel(xw, weights, groupidx) + S_hac = S_hac_groupsum(xu, time, nlags=nlags, weights_func=weights_func) + cov_hac = _HCCM2(hessian_inv, S_hac) + if use_correction: + nobs, k_params = xu.shape + if use_correction == 'hac': + cov_hac *= nobs / float(nobs - k_params) + elif use_correction in ['c', 'cluster']: + n_groups = len(np.unique(time)) + cov_hac *= n_groups / (n_groups - 1.) + cov_hac *= ((nobs-1.) / float(nobs - k_params)) + + return cov_hac diff --git a/statsmodels/stats/stattools.py b/statsmodels/stats/stattools.py new file mode 100644 index 0000000..5dae180 --- /dev/null +++ b/statsmodels/stats/stattools.py @@ -0,0 +1,465 @@ +""" +Statistical tests to be used in conjunction with the models + +Notes +----- +These functions haven't been formally tested. +""" + +from scipy import stats +import numpy as np +from statsmodels.tools.sm_exceptions import ValueWarning + + +# TODO: these are pretty straightforward but they should be tested +def durbin_watson(resids, axis=0): + r""" + Calculates the Durbin-Watson statistic + + Parameters + ---------- + resids : array-like + + Returns + ------- + dw : float, array-like + The Durbin-Watson statistic. + + Notes + ----- + The null hypothesis of the test is that there is no serial correlation. + The Durbin-Watson test statistics is defined as: + + .. math:: + + \sum_{t=2}^T((e_t - e_{t-1})^2)/\sum_{t=1}^Te_t^2 + + The test statistic is approximately equal to 2*(1-r) where ``r`` is the + sample autocorrelation of the residuals. Thus, for r == 0, indicating no + serial correlation, the test statistic equals 2. This statistic will + always be between 0 and 4. The closer to 0 the statistic, the more + evidence for positive serial correlation. The closer to 4, the more + evidence for negative serial correlation. + """ + resids = np.asarray(resids) + diff_resids = np.diff(resids, 1, axis=axis) + dw = np.sum(diff_resids**2, axis=axis) / np.sum(resids**2, axis=axis) + return dw + + +def omni_normtest(resids, axis=0): + """ + Omnibus test for normality + + Parameters + ---------- + resid : array-like + axis : int, optional + Default is 0 + + Returns + ------- + Chi^2 score, two-tail probability + """ + # TODO: change to exception in summary branch and catch in summary() + # behavior changed between scipy 0.9 and 0.10 + resids = np.asarray(resids) + n = resids.shape[axis] + if n < 8: + from warnings import warn + warn("omni_normtest is not valid with less than 8 observations; %i " + "samples were given." % int(n), ValueWarning) + return np.nan, np.nan + + return stats.normaltest(resids, axis=axis) + + +def jarque_bera(resids, axis=0): + r""" + Calculates the Jarque-Bera test for normality + + Parameters + ---------- + data : array-like + Data to test for normality + axis : int, optional + Axis to use if data has more than 1 dimension. Default is 0 + + Returns + ------- + JB : float or array + The Jarque-Bera test statistic + JBpv : float or array + The pvalue of the test statistic + skew : float or array + Estimated skewness of the data + kurtosis : float or array + Estimated kurtosis of the data + + Notes + ----- + Each output returned has 1 dimension fewer than data + + + The Jarque-Bera test statistic tests the null that the data is normally + distributed against an alternative that the data follow some other + distribution. The test statistic is based on two moments of the data, + the skewness, and the kurtosis, and has an asymptotic :math:`\chi^2_2` + distribution. + + The test statistic is defined + + .. math:: JB = n(S^2/6+(K-3)^2/24) + + where n is the number of data points, S is the sample skewness, and K is + the sample kurtosis of the data. + """ + resids = np.asarray(resids) + # Calculate residual skewness and kurtosis + skew = stats.skew(resids, axis=axis) + kurtosis = 3 + stats.kurtosis(resids, axis=axis) + + # Calculate the Jarque-Bera test for normality + n = resids.shape[axis] + jb = (n / 6.) * (skew ** 2 + (1 / 4.) * (kurtosis - 3) ** 2) + jb_pv = stats.chi2.sf(jb, 2) + + return jb, jb_pv, skew, kurtosis + + +def robust_skewness(y, axis=0): + """ + Calculates the four skewness measures in Kim & White + + Parameters + ---------- + y : array-like + + axis : int or None, optional + Axis along which the skewness measures are computed. If `None`, the + entire array is used. + + Returns + ------- + sk1 : ndarray + The standard skewness estimator. + sk2 : ndarray + Skewness estimator based on quartiles. + sk3 : ndarray + Skewness estimator based on mean-median difference, standardized by + absolute deviation. + sk4 : ndarray + Skewness estimator based on mean-median difference, standardized by + standard deviation. + + Notes + ----- + The robust skewness measures are defined + + .. math:: + + SK_{2}=\\frac{\\left(q_{.75}-q_{.5}\\right) + -\\left(q_{.5}-q_{.25}\\right)}{q_{.75}-q_{.25}} + + .. math:: + + SK_{3}=\\frac{\\mu-\\hat{q}_{0.5}} + {\\hat{E}\\left[\\left|y-\\hat{\\mu}\\right|\\right]} + + .. math:: + + SK_{4}=\\frac{\\mu-\\hat{q}_{0.5}}{\\hat{\\sigma}} + + .. [*] Tae-Hwan Kim and Halbert White, "On more robust estimation of + skewness and kurtosis," Finance Research Letters, vol. 1, pp. 56-73, + March 2004. + """ + + if axis is None: + y = y.ravel() + axis = 0 + + y = np.sort(y, axis) + + q1, q2, q3 = np.percentile(y, [25.0, 50.0, 75.0], axis=axis) + + mu = y.mean(axis) + shape = (y.size,) + if axis is not None: + shape = list(mu.shape) + shape.insert(axis, 1) + shape = tuple(shape) + + mu_b = np.reshape(mu, shape) + q2_b = np.reshape(q2, shape) + + sigma = np.mean(((y - mu_b)**2), axis) + + sk1 = stats.skew(y, axis=axis) + sk2 = (q1 + q3 - 2.0 * q2) / (q3 - q1) + sk3 = (mu - q2) / np.mean(abs(y - q2_b), axis=axis) + sk4 = (mu - q2) / sigma + + return sk1, sk2, sk3, sk4 + + +def _kr3(y, alpha=5.0, beta=50.0): + """ + KR3 estimator from Kim & White + + Parameters + ---------- + y : array-like, 1-d + alpha : float, optional + Lower cut-off for measuring expectation in tail. + beta : float, optional + Lower cut-off for measuring expectation in center. + + Returns + ------- + kr3 : float + Robust kurtosis estimator based on standardized lower- and upper-tail + expected values + + Notes + ----- + .. [*] Tae-Hwan Kim and Halbert White, "On more robust estimation of + skewness and kurtosis," Finance Research Letters, vol. 1, pp. 56-73, + March 2004. + """ + perc = (alpha, 100.0 - alpha, beta, 100.0 - beta) + lower_alpha, upper_alpha, lower_beta, upper_beta = np.percentile(y, perc) + l_alpha = np.mean(y[y < lower_alpha]) + u_alpha = np.mean(y[y > upper_alpha]) + + l_beta = np.mean(y[y < lower_beta]) + u_beta = np.mean(y[y > upper_beta]) + + return (u_alpha - l_alpha) / (u_beta - l_beta) + + +def expected_robust_kurtosis(ab=(5.0, 50.0), dg=(2.5, 25.0)): + """ + Calculates the expected value of the robust kurtosis measures in Kim and + White assuming the data are normally distributed. + + Parameters + ---------- + ab: iterable, optional + Contains 100*(alpha, beta) in the kr3 measure where alpha is the tail + quantile cut-off for measuring the extreme tail and beta is the central + quantile cutoff for the standardization of the measure + db: iterable, optional + Contains 100*(delta, gamma) in the kr4 measure where delta is the tail + quantile for measuring extreme values and gamma is the central quantile + used in the the standardization of the measure + + Returns + ------- + ekr: array, 4-element + Contains the expected values of the 4 robust kurtosis measures + + Notes + ----- + See `robust_kurtosis` for definitions of the robust kurtosis measures + """ + + alpha, beta = ab + delta, gamma = dg + expected_value = np.zeros(4) + ppf = stats.norm.ppf + pdf = stats.norm.pdf + q1, q2, q3, q5, q6, q7 = ppf(np.array((1.0, 2.0, 3.0, 5.0, 6.0, 7.0)) / 8) + expected_value[0] = 3 + + expected_value[1] = ((q7 - q5) + (q3 - q1)) / (q6 - q2) + + q_alpha, q_beta = ppf(np.array((alpha / 100.0, beta / 100.0))) + expected_value[2] = (2 * pdf(q_alpha) / alpha) / (2 * pdf(q_beta) / beta) + + q_delta, q_gamma = ppf(np.array((delta / 100.0, gamma / 100.0))) + expected_value[3] = (-2.0 * q_delta) / (-2.0 * q_gamma) + + return expected_value + + +def robust_kurtosis(y, axis=0, ab=(5.0, 50.0), dg=(2.5, 25.0), excess=True): + """ + Calculates the four kurtosis measures in Kim & White + + Parameters + ---------- + y : array-like + axis : int or None, optional + Axis along which the kurtoses are computed. If `None`, the + entire array is used. + ab: iterable, optional + Contains 100*(alpha, beta) in the kr3 measure where alpha is the tail + quantile cut-off for measuring the extreme tail and beta is the central + quantile cutoff for the standardization of the measure + db: iterable, optional + Contains 100*(delta, gamma) in the kr4 measure where delta is the tail + quantile for measuring extreme values and gamma is the central quantile + used in the the standardization of the measure + excess : bool, optional + If true (default), computed values are excess of those for a standard + normal distribution. + + Returns + ------- + kr1 : ndarray + The standard kurtosis estimator. + kr2 : ndarray + Kurtosis estimator based on octiles. + kr3 : ndarray + Kurtosis estimators based on exceedence expectations. + kr4 : ndarray + Kurtosis measure based on the spread between high and low quantiles. + + Notes + ----- + The robust kurtosis measures are defined + + .. math:: + + KR_{2}=\\frac{\\left(\\hat{q}_{.875}-\\hat{q}_{.625}\\right) + +\\left(\\hat{q}_{.375}-\\hat{q}_{.125}\\right)} + {\\hat{q}_{.75}-\\hat{q}_{.25}} + + .. math:: + + KR_{3}=\\frac{\\hat{E}\\left(y|y>\\hat{q}_{1-\\alpha}\\right) + -\\hat{E}\\left(y|y<\\hat{q}_{\\alpha}\\right)} + {\\hat{E}\\left(y|y>\\hat{q}_{1-\\beta}\\right) + -\\hat{E}\\left(y|y<\\hat{q}_{\\beta}\\right)} + + .. math:: + + KR_{4}=\\frac{\\hat{q}_{1-\\delta}-\\hat{q}_{\\delta}} + {\\hat{q}_{1-\\gamma}-\\hat{q}_{\\gamma}} + + where :math:`\\hat{q}_{p}` is the estimated quantile at :math:`p`. + + .. [*] Tae-Hwan Kim and Halbert White, "On more robust estimation of + skewness and kurtosis," Finance Research Letters, vol. 1, pp. 56-73, + March 2004. + """ + if (axis is None or + (y.squeeze().ndim == 1 and y.ndim != 1)): + y = y.ravel() + axis = 0 + + alpha, beta = ab + delta, gamma = dg + + perc = (12.5, 25.0, 37.5, 62.5, 75.0, 87.5, + delta, 100.0 - delta, gamma, 100.0 - gamma) + e1, e2, e3, e5, e6, e7, fd, f1md, fg, f1mg = np.percentile(y, perc, + axis=axis) + + expected_value = (expected_robust_kurtosis(ab, dg) + if excess else np.zeros(4)) + + kr1 = stats.kurtosis(y, axis, False) - expected_value[0] + kr2 = ((e7 - e5) + (e3 - e1)) / (e6 - e2) - expected_value[1] + if y.ndim == 1: + kr3 = _kr3(y, alpha, beta) + else: + kr3 = np.apply_along_axis(_kr3, axis, y, alpha, beta) + kr3 -= expected_value[2] + kr4 = (f1md - fd) / (f1mg - fg) - expected_value[3] + return kr1, kr2, kr3, kr4 + + +def _medcouple_1d(y): + """ + Calculates the medcouple robust measure of skew. + + Parameters + ---------- + y : array-like, 1-d + + Returns + ------- + mc : float + The medcouple statistic + + Notes + ----- + The current algorithm requires a O(N**2) memory allocations, and so may + not work for very large arrays (N>10000). + + .. [*] M. Huberta and E. Vandervierenb, "An adjusted boxplot for skewed + distributions" Computational Statistics & Data Analysis, vol. 52, pp. + 5186-5201, August 2008. + """ + + # Parameter changes the algorithm to the slower for large n + + y = np.squeeze(np.asarray(y)) + if y.ndim != 1: + raise ValueError("y must be squeezable to a 1-d array") + + y = np.sort(y) + + n = y.shape[0] + if n % 2 == 0: + mf = (y[n // 2 - 1] + y[n // 2]) / 2 + else: + mf = y[(n - 1) // 2] + + z = y - mf + lower = z[z <= 0.0] + upper = z[z >= 0.0] + upper = upper[:, None] + standardization = upper - lower + is_zero = np.logical_and(lower == 0.0, upper == 0.0) + standardization[is_zero] = np.inf + spread = upper + lower + h = spread / standardization + # GH5395 + num_ties = np.sum(lower == 0.0) + if num_ties: + # Replacements has -1 above the anti-diagonal, 0 on the anti-diagonal, + # and 1 below the anti-diagonal + replacements = np.ones((num_ties, num_ties)) - np.eye(num_ties) + replacements -= 2 * np.triu(replacements) + # Convert diagonal to anti-diagonal + replacements = np.fliplr(replacements) + # Always replace upper right block + h[:num_ties, -num_ties:] = replacements + + return np.median(h) + + +def medcouple(y, axis=0): + """ + Calculates the medcouple robust measure of skew. + + Parameters + ---------- + y : array-like + axis : int or None, optional + Axis along which the medcouple statistic is computed. If `None`, the + entire array is used. + + Returns + ------- + mc : ndarray + The medcouple statistic with the same shape as `y`, with the specified + axis removed. + + Notes + ----- + The current algorithm requires a O(N**2) memory allocations, and so may + not work for very large arrays (N>10000). + + .. [*] M. Huberta and E. Vandervierenb, "An adjusted boxplot for skewed + distributions" Computational Statistics & Data Analysis, vol. 52, pp. + 5186-5201, August 2008. + """ + y = np.asarray(y, dtype=np.double) # GH 4243 + if axis is None: + return _medcouple_1d(y.ravel()) + + return np.apply_along_axis(_medcouple_1d, axis, y) diff --git a/statsmodels/stats/tabledist.py b/statsmodels/stats/tabledist.py new file mode 100644 index 0000000..60ea4a3 --- /dev/null +++ b/statsmodels/stats/tabledist.py @@ -0,0 +1,320 @@ +# -*- coding: utf-8 -*- +""" +Created on Sat Oct 01 20:20:16 2011 + +Author: Josef Perktold +License: BSD-3 + + +TODO: +check orientation, size and alpha should be increasing for interp1d, +but what is alpha? can be either sf or cdf probability +change it to use one consistent notation + +check: instead of bound checking I could use the fill-value of the interpolators + + +""" +from __future__ import print_function +from statsmodels.compat.python import range +import numpy as np +from scipy.interpolate import interp1d, interp2d, Rbf +from statsmodels.tools.decorators import cache_readonly + + +class TableDist(object): + '''Distribution, critical values and p-values from tables + + currently only 1 extra parameter, e.g. sample size + + Parameters + ---------- + alpha : array_like, 1d + probabiliy in the table, could be either sf (right tail) or cdf (left + tail) + size : array_like, 1d + second paramater in the table + crit_table : array_like, 2d + array with critical values for sample size in rows and probability in + columns + + Notes + ----- + size and alpha should be increasing + + + ''' + + def __init__(self, alpha, size, crit_table): + self.alpha = np.asarray(alpha) + self.size = np.asarray(size) + self.crit_table = np.asarray(crit_table) + + self.n_alpha = len(alpha) + self.signcrit = np.sign(np.diff(self.crit_table, 1).mean()) + if self.signcrit > 0: #increasing + self.critv_bounds = self.crit_table[:,[0,1]] + else: + self.critv_bounds = self.crit_table[:,[1,0]] + + @cache_readonly + def polyn(self): + polyn = [interp1d(self.size, self.crit_table[:,i]) + for i in range(self.n_alpha)] + return polyn + + @cache_readonly + def poly2d(self): + #check for monotonicity ? + #fix this, interp needs increasing + poly2d = interp2d(self.size, self.alpha, self.crit_table) + return poly2d + + @cache_readonly + def polyrbf(self): + xs, xa = np.meshgrid(self.size.astype(float), self.alpha) + polyrbf = Rbf(xs.ravel(), xa.ravel(), self.crit_table.T.ravel(),function='linear') + return polyrbf + + def _critvals(self, n): + '''rows of the table, linearly interpolated for given sample size + + Parameters + ---------- + n : float + sample size, second parameter of the table + + Returns + ------- + critv : ndarray, 1d + critical values (ppf) corresponding to a row of the table + + Notes + ----- + This is used in two step interpolation, or if we want to know the + critical values for all alphas for any sample size that we can obtain + through interpolation + + ''' + return np.array([p(n) for p in self.polyn]) + + def prob(self, x, n): + '''find pvalues by interpolation, eiter cdf(x) or sf(x) + + returns extrem probabilities, 0.001 and 0.2, for out of range + + Parameters + ---------- + x : array_like + observed value, assumed to follow the distribution in the table + n : float + sample size, second parameter of the table + + Returns + ------- + prob : arraylike + This is the probability for each value of x, the p-value in + underlying distribution is for a statistical test. + + ''' + critv = self._critvals(n) + alpha = self.alpha +# if self.signcrit == 1: +# if x < critv[0]: #generalize: ? np.sign(x - critvals[0]) == self.signcrit: +# return alpha[0] +# elif x > critv[-1]: +# return alpha[-1] +# elif self.signcrit == -1: +# if x > critv[0]: +# return alpha[0] +# elif x < critv[-1]: +# return alpha[-1] + + if self.signcrit < 1: + #reverse if critv is decreasing + critv, alpha = critv[::-1], alpha[::-1] + + #now critv is increasing + if np.size(x) == 1: + if x < critv[0]: + return alpha[0] + elif x > critv[-1]: + return alpha[-1] + return interp1d(critv, alpha)(x)[()] + else: + #vectorized + cond_low = (x < critv[0]) + cond_high = (x > critv[-1]) + cond_interior = ~np.logical_or(cond_low, cond_high) + + probs = np.nan * np.ones(x.shape) #mistake if nan left + probs[cond_low] = alpha[0] + probs[cond_low] = alpha[-1] + probs[cond_interior] = interp1d(critv, alpha)(x[cond_interior]) + + return probs + + + def crit2(self, prob, n): + '''returns interpolated quantiles, similar to ppf or isf + + this can be either cdf or sf depending on the table, twosided? + + this doesn't work, no more knots warning + + ''' + return self.poly2d(n, prob) + + + def crit(self, prob, n): + '''returns interpolated quantiles, similar to ppf or isf + + use two sequential 1d interpolation, first by n then by prob + + Parameters + ---------- + prob : array_like + probabilities corresponding to the definition of table columns + n : int or float + sample size, second parameter of the table + + Returns + ------- + ppf : array_like + critical values with same shape as prob + + ''' + prob = np.asarray(prob) + alpha = self.alpha + critv = self._critvals(n) + + #vectorized + cond_ilow = (prob > alpha[0]) + cond_ihigh = (prob < alpha[-1]) + cond_interior = np.logical_or(cond_ilow, cond_ihigh) + + #scalar + if prob.size == 1: + if cond_interior: + return interp1d(alpha, critv)(prob) + else: + return np.nan + + #vectorized + quantile = np.nan * np.ones(prob.shape) #nans for outside + quantile[cond_interior] = interp1d(alpha, critv)(prob[cond_interior]) + return quantile + + def crit3(self, prob, n): + '''returns interpolated quantiles, similar to ppf or isf + + uses Rbf to interpolate critical values as function of `prob` and `n` + + Parameters + ---------- + prob : array_like + probabilities corresponding to the definition of table columns + n : int or float + sample size, second parameter of the table + + Returns + ------- + ppf : array_like + critical values with same shape as prob, returns nan for arguments + that are outside of the table bounds + + ''' + prob = np.asarray(prob) + alpha = self.alpha + + #vectorized + cond_ilow = (prob > alpha[0]) + cond_ihigh = (prob < alpha[-1]) + cond_interior = np.logical_or(cond_ilow, cond_ihigh) + + #scalar + if prob.size == 1: + if cond_interior: + return self.polyrbf(n, prob) + else: + return np.nan + + #vectorized + quantile = np.nan * np.ones(prob.shape) #nans for outside + + quantile[cond_interior] = self.polyrbf(n, prob[cond_interior]) + return quantile + + + +if __name__ == '__main__': + + ''' + example Lilliefors test for normality + An Analytic Approximation to the Distribution of Lilliefors's Test Statistic for Normality + Author(s): Gerard E. Dallal and Leland WilkinsonSource: The American Statistician, Vol. 40, No. 4 (Nov., 1986), pp. 294-296Published by: American Statistical AssociationStable URL: http://www.jstor.org/stable/2684607 . + ''' + + #for this test alpha is sf probability, i.e. right tail probability + + alpha = np.array([ 0.2 , 0.15 , 0.1 , 0.05 , 0.01 , 0.001])[::-1] + size = np.array([ 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 25, 30, 40, 100, 400, 900], float) + + #critical values, rows are by sample size, columns are by alpha + crit_lf = np.array( [[303, 321, 346, 376, 413, 433], + [289, 303, 319, 343, 397, 439], + [269, 281, 297, 323, 371, 424], + [252, 264, 280, 304, 351, 402], + [239, 250, 265, 288, 333, 384], + [227, 238, 252, 274, 317, 365], + [217, 228, 241, 262, 304, 352], + [208, 218, 231, 251, 291, 338], + [200, 210, 222, 242, 281, 325], + [193, 202, 215, 234, 271, 314], + [187, 196, 208, 226, 262, 305], + [181, 190, 201, 219, 254, 296], + [176, 184, 195, 213, 247, 287], + [171, 179, 190, 207, 240, 279], + [167, 175, 185, 202, 234, 273], + [163, 170, 181, 197, 228, 266], + [159, 166, 176, 192, 223, 260], + [143, 150, 159, 173, 201, 236], + [131, 138, 146, 159, 185, 217], + [115, 120, 128, 139, 162, 189], + [ 74, 77, 82, 89, 104, 122], + [ 37, 39, 41, 45, 52, 61], + [ 25, 26, 28, 30, 35, 42]])[:,::-1] / 1000. + + + lf = TableDist(alpha, size, crit_lf) + print(lf.prob(0.166, 20), 'should be:', 0.15) + print('') + print(lf.crit2(0.15, 20), 'should be:', 0.166, 'interp2d bad') + print(lf.crit(0.15, 20), 'should be:', 0.166, 'two 1d') + print(lf.crit3(0.15, 20), 'should be:', 0.166, 'Rbf') + print('') + print(lf.crit2(0.17, 20), 'should be in:', (.159, .166), 'interp2d bad') + print(lf.crit(0.17, 20), 'should be in:', (.159, .166), 'two 1d') + print(lf.crit3(0.17, 20), 'should be in:', (.159, .166), 'Rbf') + print('') + print(lf.crit2(0.19, 20), 'should be in:', (.159, .166), 'interp2d bad') + print(lf.crit(0.19, 20), 'should be in:', (.159, .166), 'two 1d') + print(lf.crit3(0.19, 20), 'should be in:', (.159, .166), 'Rbf') + print('') + print(lf.crit2(0.199, 20), 'should be in:', (.159, .166), 'interp2d bad') + print(lf.crit(0.199, 20), 'should be in:', (.159, .166), 'two 1d') + print(lf.crit3(0.199, 20), 'should be in:', (.159, .166), 'Rbf') + #testing + print(np.max(np.abs(np.array([lf.prob(c, size[i]) for i in range(len(size)) for c in crit_lf[i]]).reshape(-1,lf.n_alpha) - lf.alpha))) + #1.6653345369377348e-16 + print(np.max(np.abs(np.array([lf.crit(c, size[i]) for i in range(len(size)) for c in lf.alpha]).reshape(-1,lf.n_alpha) - crit_lf))) + #6.9388939039072284e-18) + print(np.max(np.abs(np.array([lf.crit3(c, size[i]) for i in range(len(size)) for c in lf.alpha]).reshape(-1,lf.n_alpha) - crit_lf))) + #4.0615705243496336e-12) + print((np.array([lf.crit3(c, size[i]) for i in range(len(size)) for c in lf.alpha[:-1]*1.1]).reshape(-1,lf.n_alpha-1) < crit_lf[:,:-1]).all()) + print((np.array([lf.crit3(c, size[i]) for i in range(len(size)) for c in lf.alpha[:-1]*1.1]).reshape(-1,lf.n_alpha-1) > crit_lf[:,1:]).all()) + print((np.array([lf.prob(c*0.9, size[i]) for i in range(len(size)) for c in crit_lf[i,:-1]]).reshape(-1,lf.n_alpha-1) > lf.alpha[:-1]).all()) + print((np.array([lf.prob(c*1.1, size[i]) for i in range(len(size)) for c in crit_lf[i,1:]]).reshape(-1,lf.n_alpha-1) < lf.alpha[1:]).all()) + #start at size_idx=2 because of non-monotonicity of lf_crit + print((np.array([lf.prob(c, size[i]*0.9) for i in range(2,len(size)) for c in crit_lf[i,:-1]]).reshape(-1,lf.n_alpha-1) > lf.alpha[:-1]).all()) diff --git a/statsmodels/stats/tests/__init__.py b/statsmodels/stats/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/stats/tests/gen_contingency_table_tests.R b/statsmodels/stats/tests/gen_contingency_table_tests.R new file mode 100644 index 0000000..af7e27a --- /dev/null +++ b/statsmodels/stats/tests/gen_contingency_table_tests.R @@ -0,0 +1,74 @@ +library(coin) +library(exact2x2) + +tables = list() + +tables[[1]] = matrix(c(23, 15, 19, 31), ncol=2, byrow=TRUE) + +tables[[2]] = matrix(c(144, 33, 84, 126, + 2, 4, 14, 29, + 0, 2, 6, 25, + 0, 0, 1, 5), ncol=4, byrow=TRUE) + +tables[[3]] = matrix(c(20, 10, 5, + 3, 30, 15, + 0, 5, 40), + ncol=3, byrow=TRUE) + +results = array(0, c(length(tables), 17)) + +for (k in 1:3) { + + table = as.table(tables[[k]]) + names(attributes(table)$dimnames) = c("x", "y") + + # Nominal homogeneity test with chi^2 reference + rslt = mh_test(table) + results[k, 1] = rslt@statistic@teststatistic + results[k, 2] = rslt@statistic@df + + # Nominal homogeneity test with binomial reference + if (prod(dim(table)) == 4) { + rslt = mcnemar.exact(table) + results[k, 3] = rslt$p.value + } + + # Nominal homogeneity test with continuity correction + if (prod(dim(table)) == 4) { + rslt = mcnemar.test(table) + results[k, 4] = rslt$p.value + } + + # Linear-by-linear homogeneity test with linear weights + scores = list(x=seq(dim(table)[1]), y=seq(dim(table)[2])) + rslt = lbl_test(table, scores=scores) + results[k, 5] = rslt@statistic@linearstatistic + results[k, 6] = rslt@statistic@expectation + results[k, 7] = rslt@statistic@covariance@variance + results[k, 8] = rslt@statistic@teststatistic + results[k, 9] = rslt@distribution@pvalue(rslt@statistic@teststatistic) + + # Linear-by-linear homogeneity test with quadratic column weights + scores = list(x=seq(dim(table)[1]), y=seq(dim(table)[2])^2) + rslt = lbl_test(table, scores=scores) + results[k, 10] = rslt@statistic@linearstatistic + results[k, 11] = rslt@statistic@expectation + results[k, 12] = rslt@statistic@covariance@variance + results[k, 13] = rslt@statistic@teststatistic + results[k, 14] = rslt@distribution@pvalue(rslt@statistic@teststatistic) + + # Bowker symmetry test (apparently mcnemar.test performs a + # symmetry test when dim>2 although this is not documented). + rslt = mcnemar.test(table, correct=FALSE) + results[k, 15] = rslt$statistic + results[k, 16] = rslt$parameter[1] + results[k, 17] = rslt$p.value +} + +colnames(results) = c("homog_stat", "homog_df", "homog_binom_p", + "homog_cont_p", "lbl_stat", "lbl_expval", "lbl_var", + "lbl_chi2", "lbl_pvalue", "lbl2_stat", "lbl2_expval", + "lbl2_var", "lbl2_chi2", "lbl2_pvalue", "bowker_stat", + "bowker_df", "bowker_pvalue") + +write.csv(results, file="contingency_table_r_results.csv", row.names=FALSE) diff --git a/statsmodels/stats/tests/results/__init__.py b/statsmodels/stats/tests/results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/stats/tests/results/anova.R b/statsmodels/stats/tests/results/anova.R new file mode 100644 index 0000000..f1fa519 --- /dev/null +++ b/statsmodels/stats/tests/results/anova.R @@ -0,0 +1,92 @@ +dta <- read.table('data.dat', header=TRUE) +dta$Duration <- factor(dta$Duration) +dta$Weight <- factor(dta$Weight) +dta$logDays <- log(dta$Days + 1) # Use log days to "stabilize" variance + +attach(dta) +library(car) +source('/home/skipper/statsmodels/statsmodels/tools/topy.R') + +sum.lm = lm(logDays ~ Duration * Weight, contrasts=list(Duration=contr.sum, + Weight=contr.sum)) + +anova.lm.sum <- anova(sum.lm) + +for(name in names(anova.lm.sum)) { + mkarray2(anova.lm.sum[[name]], name, TRUE) + }; cat("\n") + +anova.lm.interaction <- anova(lm(logDays ~ Duration + Weight), sum.lm) + +for(name in names(anova.lm.interaction)) { + mkarray2(anova.lm.interaction[[name]], name, TRUE) + }; cat("\n") + +anova.lm.variable <- anova(lm(logDays ~ Duration), lm(logDays ~ Duration + Weight)) + +anova.lm.variable2 <- anova(lm(logDays ~ Weight), lm(logDays ~ Duration + Weight)) + +anova.i <- anova(sum.lm) +anova.ii <- Anova(sum.lm, type='II') +anova.iii <- Anova(sum.lm, type='III') + +nosum.lm = lm(logDays ~ Duration * Weight, contrasts=list(Duration=contr.treatment, Weight=contr.treatment)) + +anova.i.nosum <- anova(nosum.lm) +anova.ii.nosum <- Anova(nosum.lm, type='II') +anova.iii.nosum <- Anova(nosum.lm, type='III') + +dta.dropped <- dta[4:60, ] +sum.lm.dropped <- lm(logDays ~ Duration * Weight, dta.dropped, + contrasts=list(Duration=contr.sum, Weight=contr.sum)) + +anova.i.dropped <- anova(sum.lm.dropped) +anova.ii.dropped <- Anova(sum.lm.dropped, type='II') +anova.iii.dropped <- Anova(sum.lm.dropped, type='III') + +for(name in names(anova.ii.dropped)) { + mkarray2(anova.ii.dropped[[name]], name, TRUE) + }; cat("\n") + +for(name in names(anova.iii.dropped)) { + mkarray2(anova.iii.dropped[[name]], name, TRUE) + }; cat("\n") + +anova.iii.dropped <- Anova(sum.lm.dropped, white="hc0", type='III') +for(name in names(anova.iii.dropped)) { + mkarray2(anova.iii.dropped[[name]], name, TRUE) + }; cat("\n") +anova.iii.dropped <- Anova(sum.lm.dropped, white="hc1", type='III') +for(name in names(anova.iii.dropped)) { + mkarray2(anova.iii.dropped[[name]], name, TRUE) + }; cat("\n") +anova.iii.dropped <- Anova(sum.lm.dropped, white="hc2", type='III') +for(name in names(anova.iii.dropped)) { + mkarray2(anova.iii.dropped[[name]], name, TRUE) + }; cat("\n") +anova.iii.dropped <- Anova(sum.lm.dropped, white="hc3", type='III') +for(name in names(anova.iii.dropped)) { + mkarray2(anova.iii.dropped[[name]], name, TRUE) + }; cat("\n") + + +anova.ii.dropped <- Anova(sum.lm.dropped, type='II', white="hc0") +for(name in names(anova.ii.dropped)) { + mkarray2(anova.ii.dropped[[name]], name, TRUE) + }; cat("\n") + +anova.ii.dropped <- Anova(sum.lm.dropped, type='II', white="hc1") +for(name in names(anova.ii.dropped)) { + mkarray2(anova.ii.dropped[[name]], name, TRUE) + }; cat("\n") + +anova.ii.dropped <- Anova(sum.lm.dropped, type='II', white="hc2") +for(name in names(anova.ii.dropped)) { + mkarray2(anova.ii.dropped[[name]], name, TRUE) + }; cat("\n") + +anova.ii.dropped <- Anova(sum.lm.dropped, type='II', white="hc3") +for(name in names(anova.ii.dropped)) { + mkarray2(anova.ii.dropped[[name]], name, TRUE) + }; cat("\n") + diff --git a/statsmodels/stats/tests/results/binary_constrict.csv b/statsmodels/stats/tests/results/binary_constrict.csv new file mode 100644 index 0000000..7608707 --- /dev/null +++ b/statsmodels/stats/tests/results/binary_constrict.csv @@ -0,0 +1,40 @@ +Case,diagnosis,rate,volumne,constrict,const,log_rate,log_volumne +1,constrict,0.825,3.7,1,1.0,-0.19237189264745613,1.308332819650179 +2,constrict,1.09,3.5,1,1.0,0.08617769624105241,1.252762968495368 +3,constrict,2.5,1.25,1,1.0,0.9162907318741551,0.22314355131420976 +4,constrict,1.5,0.75,1,1.0,0.4054651081081644,-0.2876820724517809 +5,constrict,3.2,0.8,1,1.0,1.1631508098056809,-0.2231435513142097 +6,constrict,3.5,0.7,1,1.0,1.252762968495368,-0.35667494393873245 +7,no_constrict,0.75,0.6,0,1.0,-0.2876820724517809,-0.5108256237659907 +8,no_constrict,1.7,1.1,0,1.0,0.5306282510621704,0.09531017980432493 +9,no_constrict,0.75,0.9,0,1.0,-0.2876820724517809,-0.10536051565782628 +10,no_constrict,0.45,0.9,0,1.0,-0.7985076962177716,-0.10536051565782628 +11,no_constrict,0.57,0.8,0,1.0,-0.5621189181535413,-0.2231435513142097 +12,no_constrict,2.75,0.55,0,1.0,1.0116009116784799,-0.5978370007556204 +13,no_constrict,3.0,0.6,0,1.0,1.0986122886681098,-0.5108256237659907 +14,constrict,2.33,1.4,1,1.0,0.8458682675776092,0.3364722366212129 +15,constrict,3.75,0.75,1,1.0,1.3217558399823195,-0.2876820724517809 +16,constrict,1.64,2.3,1,1.0,0.494696241836107,0.8329091229351039 +17,constrict,1.6,3.2,1,1.0,0.47000362924573563,1.1631508098056809 +18,constrict,1.415,0.85,1,1.0,0.34712953109520095,-0.16251892949777494 +19,no_constrict,1.06,1.7,0,1.0,0.058268908123975824,0.5306282510621704 +20,constrict,1.8,1.8,1,1.0,0.5877866649021191,0.5877866649021191 +21,no_constrict,2.0,0.4,0,1.0,0.6931471805599453,-0.916290731874155 +22,no_constrict,1.36,0.95,0,1.0,0.3074846997479607,-0.05129329438755058 +23,no_constrict,1.35,1.35,0,1.0,0.30010459245033816,0.30010459245033816 +24,no_constrict,1.36,1.5,0,1.0,0.3074846997479607,0.4054651081081644 +25,constrict,1.78,1.6,1,1.0,0.5766133643039938,0.47000362924573563 +26,no_constrict,1.5,0.6,0,1.0,0.4054651081081644,-0.5108256237659907 +27,constrict,1.5,1.8,1,1.0,0.4054651081081644,0.5877866649021191 +28,no_constrict,1.9,0.95,0,1.0,0.6418538861723947,-0.05129329438755058 +29,constrict,0.95,1.9,1,1.0,-0.05129329438755058,0.6418538861723947 +30,no_constrict,0.4,1.6,0,1.0,-0.916290731874155,0.47000362924573563 +31,constrict,0.75,2.7,1,1.0,-0.2876820724517809,0.9932517730102834 +32,no_constrict,0.03,2.35,0,1.0,-3.506557897319982,0.8544153281560676 +33,no_constrict,1.83,1.1,0,1.0,0.6043159668533296,0.09531017980432493 +34,constrict,2.2,1.1,1,1.0,0.7884573603642703,0.09531017980432493 +35,constrict,2.0,1.2,1,1.0,0.6931471805599453,0.1823215567939546 +36,constrict,3.33,0.8,1,1.0,1.2029723039923526,-0.2231435513142097 +37,no_constrict,1.9,0.95,0,1.0,0.6418538861723947,-0.05129329438755058 +38,no_constrict,1.9,0.75,0,1.0,0.6418538861723947,-0.2876820724517809 +39,constrict,1.625,1.3,1,1.0,0.4855078157817008,0.26236426446749106 diff --git a/statsmodels/stats/tests/results/bootleg.csv b/statsmodels/stats/tests/results/bootleg.csv new file mode 100644 index 0000000..7007c11 --- /dev/null +++ b/statsmodels/stats/tests/results/bootleg.csv @@ -0,0 +1,9265 @@ +0.950300,2,4.43400,3.787121 +0.613586,75,149.1170,4.974391 +0.8372366,53,501.2317,5.193843 +0.9023396,58,546.2543,5.495572 +0.9061918,96,424.4232,5.856011 +0.7911643,8,200.5667,3.511362 +0.5360133,7,806.1763,2.722873 +0.6327574,56,56.17163,4.84627 +0.7634097,28,996.1946,4.506239 +0.5940891,78,56.14756,5.015406 +0.7991432,12,157.4574,3.92541 +0.6599134,72,944.1173,4.99709 +0.6845088,98,268.675,5.280095 +0.6883003,80,632.1445,5.128627 +0.787793,90,178.9085,5.466432 +0.5937039,11,637.886,3.312434 +0.6812908,31,477.9169,4.407207 +0.6260902,30,145.0597,4.289132 +0.5198778,20,172.1525,3.732414 +0.551296,21,539.7639,3.826797 +0.9473277,43,364.0211,5.573688 +0.6470059,32,446.2837,4.363963 +0.7304492,69,854.5265,5.104756 +0.8461879,49,341.8976,5.17709 +0.6998816,32,420.9467,4.473319 +0.7708307,73,782.7106,5.234264 +0.8517651,65,50.74249,5.601281 +0.7680614,23,782.7298,4.362934 +0.6772532,10,62.75346,3.446085 +0.8061568,53,941.9258,5.094457 +0.535348,87,579.7095,4.927541 +0.7317784,8,760.4088,3.322854 +0.647424,35,973.2097,4.430608 +0.7205917,62,451.4614,5.016029 +0.8310729,46,867.2378,5.064711 +0.7092925,93,252.9435,5.294547 +0.7614025,42,18.29759,5.194786 +0.768294,92,443.8754,5.398033 +0.611393,96,660.7554,5.120007 +0.5584655,9,544.9949,3.037984 +0.5757473,27,207.4046,4.096346 +0.7165018,66,868.694,5.044124 +0.8916566,90,891.3335,5.730434 +0.930496,81,680.2784,5.855139 +0.9493338,21,814.3338,5.058685 +0.8789807,96,958.6534,5.722715 +0.6453387,99,32.75148,5.368509 +0.9432753,88,44.19807,6.429427 +0.7734237,11,481.0691,3.747131 +0.9275644,15,31.61525,4.961554 +0.8814721,68,452.8735,5.521471 +0.5684593,38,359.6916,4.35714 +0.7915564,34,395.8539,4.741082 +0.6212993,97,578.4411,5.14523 +0.786856,89,643.049,5.411403 +0.5872209,30,947.6958,4.193762 +0.863228,58,644.4567,5.336585 +0.6852954,2,650.4337,1.422949 +0.8156778,80,626.9999,5.412793 +0.7758632,40,146.7813,4.857534 +0.6193542,63,757.0062,4.82912 +0.698619,62,144.0496,5.004096 +0.924634,5,682.612,3.647421 +0.6921237,49,433.7529,4.784743 +0.6682577,12,709.6476,3.557659 +0.7406304,98,958.277,5.368286 +0.5085852,22,433.0734,3.789960 +0.8567905,78,869.9651,5.511207 +0.6796293,27,770.1198,4.288455 +0.8970843,7,914.6475,3.798629 +0.8490929,46,340.834,5.141464 +0.609374,71,516.113,4.902681 +0.8709478,20,759.5428,4.57836 +0.720285,94,205.1919,5.332692 +0.7809733,3,290.1928,2.359907 +0.6695694,62,545.2842,4.911675 +0.6835529,2,482.5781,1.418211 +0.8061166,2,952.5813,1.83861 +0.5194726,41,996.1952,4.328192 +0.8214913,51,699.2729,5.113396 +0.7761068,36,304.3256,4.749856 +0.7338799,63,84.29842,5.132537 +0.5905524,53,981.4905,4.648476 +0.9062086,43,145.8958,5.377721 +0.6504464,84,494.4505,5.096346 +0.8689327,93,276.0934,5.706336 +0.5645257,7,580.0792,2.785004 +0.650522,63,428.5393,4.890803 +0.839554,48,209.0835,5.161268 +0.6790368,57,874.8717,4.863635 +0.8461706,95,497.4795,5.621337 +0.9483254,95,113.4526,6.237262 +0.6620466,71,782.7844,4.992363 +0.6950035,72,745.4756,5.064967 +0.6869721,9,119.0430,3.344547 +0.6628797,22,627.2988,4.08501 +0.658888,51,74.652,4.809383 +0.830574,75,794.5755,5.406187 +0.6937293,17,435.4039,3.933864 +0.7577239,24,225.9839,4.390343 +0.7776778,92,830.089,5.408262 +0.764957,95,124.2182,5.472132 +0.9206389,17,727.5881,4.694345 +0.898351,70,950.8781,5.591991 +0.7973998,11,220.2692,3.831447 +0.7214944,95,380.3205,5.322659 +0.9238978,77,787.5278,5.781355 +0.9244872,91,512.0104,5.905293 +0.8909669,68,452.4798,5.559568 +0.7084065,65,626.041,5.02022 +0.6307753,75,215.9268,4.995051 +0.8594055,84,115.6110,5.675496 +0.6989477,97,849.4333,5.279922 +0.5869843,18,815.1642,3.756967 +0.8016823,64,250.8206,5.246913 +0.551895,33,760.6953,4.20931 +0.81746,45,312.4948,5.029417 +0.8709936,16,101.5497,4.468421 +0.937709,65,792.7134,5.753211 +0.7804762,54,582.7179,5.048146 +0.9183745,25,969.7477,4.970277 +0.5937925,3,661.8292,1.812094 +0.6098205,49,786.0637,4.623535 +0.8903852,67,28.15358,6.025434 +0.6488511,78,214.1912,5.057178 +0.7700727,11,126.2421,3.76314 +0.7121162,3,981.2008,2.131666 +0.9040377,61,285.9408,5.56359 +0.8668537,67,443.4215,5.457901 +0.5564086,54,254.5303,4.614918 +0.627594,59,711.7653,4.795566 +0.6236158,61,657.5285,4.813821 +0.7054692,26,43.02735,4.42352 +0.7985678,9,555.6648,3.635557 +0.6175037,12,67.01567,3.478781 +0.6436729,69,202.2135,4.959957 +0.7975962,58,778.9944,5.138275 +0.8657938,40,971.3195,5.077273 +0.6125781,39,258.3901,4.462404 +0.9230684,25,77.91052,5.146124 +0.7718941,5,182.3003,2.958140 +0.7183858,72,772.0861,5.111052 +0.685252,40,419.2469,4.616958 +0.6817711,87,990.548,5.170921 +0.5134425,24,350.7156,3.875863 +0.94244,4,786.998,3.564546 +0.7367939,90,898.815,5.302826 +0.6982901,53,512.9667,4.853358 +0.8511483,81,141.8637,5.598955 +0.7122271,3,821.5797,2.132261 +0.6902148,100,284.2936,5.303542 +0.752643,43,13.40143,5.308534 +0.5762477,9,569.3049,3.075412 +0.7480166,44,857.6439,4.816408 +0.6270913,97,676.256,5.153524 +0.5805739,80,18.0991,5.136321 +0.7211723,72,132.8565,5.167092 +0.5795756,63,76.89864,4.807039 +0.5234776,36,451.4553,4.233053 +0.7375684,80,172.0776,5.265248 +0.8239995,55,480.0646,5.181428 +0.6456712,25,129.3303,4.181064 +0.9413013,18,492.3785,4.887695 +0.6400262,92,689.0314,5.138445 +0.6229059,57,874.2567,4.760222 +0.7065448,88,183.0431,5.262541 +0.6663917,13,565.7418,3.629029 +0.9066384,27,931.4407,4.964972 +0.8259662,60,730.302,5.240379 +0.509955,83,559.9251,4.853519 +0.6687699,6,160.4952,2.867927 +0.9091107,22,363.1985,4.843181 +0.5648102,29,715.7917,4.126072 +0.6017205,67,510.1983,4.847094 +0.7983275,36,631.9508,4.794933 +0.6861993,33,619.5893,4.46455 +0.5205803,3,373.5958,1.636966 +0.941117,7,165.7246,4.136368 +0.5513367,39,537.9881,4.344938 +0.7491319,33,712.8302,4.602413 +0.6254723,36,240.1404,4.424605 +0.8193866,70,553.8917,5.333919 +0.5924001,50,346.2979,4.615012 +0.5575877,27,865.5236,4.052604 +0.5018944,78,13.42953,4.940013 +0.6858643,54,573.8197,4.840953 +0.7754497,98,760.7202,5.447041 +0.9309805,15,106.4171,4.749156 +0.7597726,5,164.1182,2.92082 +0.8578071,63,712.2652,5.373159 +0.911167,28,868.7552,5.015934 +0.5224571,94,120.4146,4.983536 +0.6644315,34,415.3146,4.447791 +0.5462101,7,624.7674,2.745171 +0.7798522,66,174.2775,5.229032 +0.569931,57,455.0914,4.67309 +0.8878053,56,651.2573,5.404565 +0.7848387,81,320.6422,5.359167 +0.5205078,17,452.1213,3.580051 +0.5922637,73,327.3382,4.898999 +0.5512022,47,533.1254,4.49198 +0.6539785,40,392.5646,4.555385 +0.9167344,99,214.5807,5.970447 +0.9447369,70,653.8565,5.854829 +0.5827263,45,704.0173,4.510883 +0.7946362,93,162.5867,5.513278 +0.5436138,22,855.6748,3.851738 +0.755334,35,556.5636,4.665327 +0.9268,54,869.746,5.561617 +0.6648528,47,433.7503,4.699148 +0.7485304,40,104.7193,4.806957 +0.5944208,40,929.1871,4.438083 +0.63304,45,547.4467,4.603049 +0.9118431,61,722.6399,5.567566 +0.720652,41,136.0821,4.743472 +0.6774275,99,188.8005,5.285412 +0.831584,82,642.8835,5.473357 +0.5817278,35,948.0573,4.309129 +0.6321327,22,784.3597,4.020958 +0.5431548,6,33.4411,2.598251 +0.8314369,16,942.1906,4.250072 +0.5546019,19,383.3337,3.746123 +0.6336268,3,975.2953,1.913129 +0.6703074,56,212.3536,4.855753 +0.5791341,44,55.41561,4.543996 +0.832449,19,179.6793,4.428198 +0.7833847,6,281.2441,3.188186 +0.5525693,6,92.11777,2.598153 +0.7141683,7,921.7208,3.139066 +0.7843614,9,264.1729,3.599121 +0.606754,87,726.8536,5.041784 +0.6120415,55,113.5644,4.749394 +0.9244803,99,99.19521,6.1186 +0.7773096,72,404.2429,5.252044 +0.7321032,86,700.6788,5.264721 +0.6722015,41,789.2637,4.603417 +0.7958672,62,244.6047,5.209776 +0.8295918,10,6.976075,4.622355 +0.5160006,84,417.1381,4.873595 +0.6063104,73,665.1216,4.915447 +0.830313,83,11.62979,6.405052 +0.8513132,3,935.2863,2.641412 +0.9099108,3,417.3052,2.976535 +0.605142,74,990.551,4.920812 +0.7359311,83,209.5253,5.278422 +0.8584674,99,694.433,5.678823 +0.7176196,55,310.9431,4.929912 +0.5039214,7,637.0151,2.655203 +0.6650235,7,252.5402,3.020462 +0.7516747,70,917.9605,5.159777 +0.6465379,20,966.2776,3.967723 +0.6117417,88,75.03909,5.120178 +0.864727,75,289.4869,5.544036 +0.5883802,42,988.5053,4.465431 +0.6207718,23,879.597,4.03577 +0.6597833,68,606.3898,4.959428 +0.5598158,21,627.1537,3.842139 +0.8209666,67,874.9125,5.300291 +0.754866,31,387.6171,4.575651 +0.5617583,19,723.7774,3.756965 +0.9393174,42,25.75119,6.090044 +0.7692625,64,621.2697,5.141441 +0.830146,95,408.8041,5.579854 +0.5445154,48,780.368,4.495197 +0.6460441,59,973.451,4.826685 +0.7571193,45,550.3283,4.859351 +0.6482274,10,910.6333,3.336849 +0.6453257,21,545.4061,4.010011 +0.944077,78,659.1318,5.919355 +0.8283513,63,232.6015,5.315383 +0.6238383,11,967.5066,3.375429 +0.920555,46,867.953,5.417839 +0.6191617,46,776.0902,4.591981 +0.7967018,6,238.7104,3.234803 +0.5562811,39,286.7352,4.35847 +0.8249085,18,661.9321,4.329062 +0.7856145,93,373.0646,5.451036 +0.8761004,93,841.654,5.69398 +0.5903102,88,126.7508,5.053856 +0.562227,36,81.24771,4.330475 +0.8585568,35,110.9485,5.03868 +0.658002,20,873.0264,3.991925 +0.9010046,10,545.304,4.148382 +0.8207666,30,220.0453,4.746643 +0.6796628,32,559.4068,4.427563 +0.8855762,26,447.3963,4.851362 +0.7611639,21,45.28665,4.390651 +0.7989508,51,821.7299,5.04934 +0.5588384,4,680.0978,2.114002 +0.7111297,6,488.6605,2.970037 +0.9003013,54,250.8912,5.46936 +0.8809515,64,917.479,5.462105 +0.6448157,6,759.0248,2.799152 +0.7000096,37,44.38138,4.700476 +0.6277596,84,826.4453,5.051443 +0.7988169,74,951.265,5.309046 +0.9424629,74,662.1041,5.874126 +0.866492,13,842.4465,4.206892 +0.7708649,62,183.6289,5.158482 +0.80865,86,481.3468,5.449073 +0.5991751,43,384.7992,4.509275 +0.6546014,67,499.3364,4.941333 +0.7256747,90,25.19916,5.582922 +0.6444263,84,142.5535,5.116413 +0.8193781,12,485.8926,3.968518 +0.547869,51,404.5397,4.551553 +0.7970432,38,154.9913,4.873851 +0.7669612,19,557.0404,4.206081 +0.8033985,57,968.377,5.138517 +0.894136,13,536.4957,4.337067 +0.7043946,38,739.0528,4.61108 +0.7234408,68,913.6276,5.079187 +0.622099,91,584.9706,5.101498 +0.7255545,27,418.1564,4.395093 +0.738156,19,58.73154,4.209344 +0.6241422,12,365.6692,3.463702 +0.5562845,19,350.9198,3.749867 +0.7281854,18,287.1144,4.070209 +0.5441473,59,121.4531,4.674919 +0.8905086,2,729.1572,2.266193 +0.8592729,21,186.6340,4.60649 +0.7442184,57,795.9408,4.998402 +0.7555524,76,809.0712,5.227268 +0.877916,38,349.5582,5.107913 +0.5961259,95,272.5336,5.098577 +0.5287142,89,965.3442,4.931151 +0.7706853,29,189.9224,4.581958 +0.6129344,78,816.0259,4.973186 +0.6940203,55,531.936,4.871643 +0.803978,85,113.2280,5.506545 +0.6513668,25,526.0979,4.16961 +0.7241574,24,810.4252,4.289929 +0.8009436,45,635.4232,4.967361 +0.6470061,54,599.8603,4.766273 +0.7905274,64,819.1808,5.189099 +0.8141194,57,112.7480,5.249975 +0.720669,93,890.1649,5.292697 +0.614216,4,26.84620,2.288507 +0.5201955,22,549.9339,3.810220 +0.7562491,23,75.20277,4.404095 +0.571583,2,591.1712,1.120692 +0.59512,24,925.6549,4.022300 +0.8498783,51,746.2723,5.199169 +0.720653,78,121.3126,5.229377 +0.8377182,30,618.6129,4.774599 +0.762667,56,190.1399,5.062476 +0.6654569,8,794.2568,3.154298 +0.8495638,39,68.62068,5.144765 +0.8259046,98,385.4926,5.590565 +0.8993462,79,421.6472,5.698037 +0.6378225,65,660.0563,4.88584 +0.7901517,41,131.5250,4.921998 +0.7735304,58,618.8744,5.081568 +0.6989816,14,925.2804,3.769055 +0.9247961,57,654.44,5.592775 +0.6678873,93,282.5398,5.210545 +0.7042879,9,3.896124,4.158098 +0.9381184,66,860.4778,5.763955 +0.7818833,6,78.19807,3.212809 +0.736335,99,79.06835,5.473526 +0.8725626,54,313.8057,5.342032 +0.8541985,68,528.8019,5.419967 +0.6945799,38,362.9406,4.598808 +0.6583852,51,933.405,4.741364 +0.9193304,23,292.4528,4.942313 +0.6527448,47,170.3905,4.694595 +0.6754736,48,306.507,4.741562 +0.5866164,62,608.678,4.762358 +0.8885043,92,137.4909,5.833394 +0.5866438,56,51.31247,4.754496 +0.6316082,56,327.2022,4.772503 +0.5772445,42,369.953,4.451939 +0.6347414,69,600.227,4.924792 +0.8806151,58,225.7173,5.440272 +0.6856101,98,415.3002,5.271872 +0.6636807,38,29.98377,4.680520 +0.5607791,7,385.8438,2.778012 +0.8966284,69,454.385,5.59322 +0.7196528,5,498.2873,2.791415 +0.643225,6,481.3396,2.796659 +0.7213205,36,550.7978,4.608818 +0.592653,34,996.0012,4.305271 +0.6135537,26,494.7108,4.127973 +0.8180465,5,587.1134,3.108012 +0.925586,34,608.966,5.243092 +0.712478,75,373.8838,5.139195 +0.8216724,78,524.4142,5.415784 +0.5777971,21,464.5309,3.877573 +0.7139551,73,652.4754,5.113785 +0.7583686,100,864.008,5.420804 +0.8995945,37,254.1523,5.196644 +0.6556193,50,675.7596,4.723593 +0.7279657,66,13.24369,5.578575 +0.7057946,67,68.34087,5.130584 +0.7979024,86,781.665,5.412042 +0.9401606,51,916.6018,5.606526 +0.6162031,43,280.8828,4.544513 +0.6506508,76,152.7170,5.053203 +0.9455006,37,84.7852,5.604932 +0.8825633,98,499.5796,5.765177 +0.7146368,73,172.6922,5.149105 +0.643779,66,744.6761,4.906691 +0.9246844,91,656.3491,5.897993 +0.6049427,97,825.6836,5.114873 +0.5431938,26,882.958,3.994681 +0.8126032,69,46.41403,5.517239 +0.7602118,7,182.2327,3.282168 +0.6820787,80,35.74084,5.289847 +0.7242503,71,633.399,5.115542 +0.762124,52,96.81844,5.048513 +0.5761674,27,795.3923,4.086751 +0.7674945,87,355.5641,5.363731 +0.6893945,89,848.0137,5.202317 +0.8342704,10,681.8076,3.853672 +0.9307401,34,270.5869,5.305084 +0.6917751,39,822.0006,4.604009 +0.7267107,23,680.2972,4.262292 +0.6354322,62,181.5393,4.868494 +0.7580115,57,501.0876,5.03591 +0.6178196,55,128.1938,4.756006 +0.6396423,44,624.3828,4.596975 +0.7626689,42,438.5162,4.824863 +0.5867045,63,103.1721,4.807943 +0.8525572,83,884.146,5.538926 +0.5375346,27,843.32,4.016654 +0.938737,8,476.519,4.204282 +0.8598953,30,895.0064,4.845791 +0.618619,26,310.2046,4.142067 +0.751289,85,971.0602,5.293395 +0.6007665,85,280.1201,5.02653 +0.8931311,96,661.1837,5.784881 +0.9477872,55,349.5601,5.745697 +0.8263472,25,868.1811,4.593935 +0.8971962,28,813.1129,4.94798 +0.917756,88,391.7887,5.859333 +0.5736361,12,298.5713,3.358818 +0.5923442,20,777.4425,3.860573 +0.9331808,56,926.266,5.622917 +0.5385511,27,131.7780,4.033215 +0.709832,64,184.5100,5.040587 +0.9305012,44,455.3916,5.46184 +0.7267914,59,697.8118,4.987088 +0.6695136,8,20.46508,3.278592 +0.636107,14,417.5571,3.632827 +0.662663,31,216.0035,4.380913 +0.6268085,67,388.1516,4.894231 +0.8478138,40,927.3398,5.015686 +0.8939183,49,127.1164,5.425592 +0.8187445,56,58.74734,5.334734 +0.6800727,54,652.806,4.828237 +0.7508679,55,478.8554,4.994428 +0.5247278,90,108.2003,4.958619 +0.5126827,83,367.0263,4.860525 +0.9360829,43,793.5388,5.466748 +0.5427037,17,355.0012,3.623390 +0.6746653,7,93.02982,3.059764 +0.6865374,83,642.7987,5.15102 +0.7966882,75,784.4196,5.31541 +0.9464101,14,331.0489,4.746153 +0.8584512,13,404.4904,4.183346 +0.8647911,39,852.2727,5.05704 +0.6417288,7,478.1858,2.960385 +0.8371056,85,444.343,5.522884 +0.8774682,24,836.418,4.745429 +0.7276132,95,91.43983,5.408513 +0.681911,83,834.1965,5.139621 +0.8320037,7,698.0064,3.507781 +0.7311164,15,910.4249,3.908022 +0.5453493,29,846.9758,4.090611 +0.5034893,15,962.7001,3.429684 +0.7765618,78,78.25059,5.408551 +0.6889326,30,700.1291,4.393576 +0.6663355,7,650.8927,3.018401 +0.903647,71,181.4400,5.697455 +0.8294555,53,483.8067,5.171024 +0.6864851,47,77.10473,4.805211 +0.8332093,64,638.4873,5.308758 +0.6178623,91,609.0503,5.093896 +0.9483832,42,134.5668,5.648304 +0.601083,21,988.283,3.919131 +0.8363535,13,264.5484,4.108176 +0.6232332,60,379.2178,4.806633 +0.6716989,82,134.4818,5.155346 +0.7271332,63,619.8103,5.036546 +0.716362,89,574.5563,5.25926 +0.7035438,46,185.5708,4.780743 +0.9094733,58,800.8275,5.519981 +0.7970491,86,899.1467,5.407964 +0.6710653,59,324.7219,4.885989 +0.7732243,82,267.0323,5.345934 +0.7177664,52,252.1324,4.894166 +0.5975854,54,403.198,4.68114 +0.7574227,82,848.186,5.283512 +0.61548,57,185.7698,4.767464 +0.856129,63,357.1877,5.385709 +0.7315266,85,348.6383,5.268519 +0.6396882,61,36.83948,4.971445 +0.8693308,81,553.7231,5.588287 +0.5279291,8,565.4334,2.850686 +0.653696,18,983.7102,3.891188 +0.5345938,27,865.7832,4.011338 +0.7072539,48,209.3058,4.817037 +0.9119935,63,136.3686,5.686828 +0.612377,99,792.52,5.141792 +0.9320222,42,279.1492,5.46138 +0.518647,98,812.767,4.985492 +0.8503986,49,813.2923,5.171308 +0.7017593,2,926.9244,1.471911 +0.928796,74,201.9075,5.851777 +0.572696,27,46.75606,4.135588 +0.7032733,46,360.8426,4.763264 +0.8491637,25,595.2798,4.674148 +0.7662437,46,696.0155,4.894196 +0.7282377,14,297.2000,3.849405 +0.875547,99,203.8363,5.792346 +0.8080239,83,931.4812,5.411267 +0.6885786,33,956.5435,4.466412 +0.7831086,97,837.6102,5.456536 +0.9459541,43,198.5099,5.60273 +0.5396256,39,300.1694,4.328677 +0.8436808,63,945.8707,5.323334 +0.6760259,83,752.4728,5.129654 +0.794726,30,289.6138,4.660757 +0.8699908,10,465.4956,3.999971 +0.6201105,11,823.6584,3.367809 +0.8532556,19,316.4788,4.484371 +0.8204,6,290.9876,3.316586 +0.8684488,30,453.036,4.888899 +0.9351581,85,438.0463,5.930551 +0.5873355,44,787.4419,4.500897 +0.5668142,2,706.7757,1.109026 +0.8327513,38,482.0475,4.940103 +0.8554855,59,795.2226,5.318344 +0.7925683,78,596.6343,5.336552 +0.8354968,58,736.0778,5.244615 +0.7509,85,198.9852,5.331186 +0.6546461,93,239.3210,5.190297 +0.5231616,72,35.3501,4.838751 +0.7953823,61,991.2709,5.165394 +0.6118757,13,108.9576,3.529129 +0.6601847,18,911.6591,3.905212 +0.6335368,63,919.9916,4.852865 +0.5913542,54,335.8841,4.672278 +0.7957373,32,452.8137,4.703563 +0.8788325,82,823.1708,5.62168 +0.6757324,48,310.3905,4.741838 +0.9181646,61,518.8919,5.608716 +0.650593,63,345.7281,4.894228 +0.688562,76,536.1067,5.094923 +0.7157119,65,283.2976,5.050122 +0.8862314,20,402.8624,4.654271 +0.7751035,59,526.9975,5.100229 +0.852668,40,456.2137,5.044085 +0.6919508,13,305.6826,3.693041 +0.9479584,79,364.8523,5.981857 +0.531493,27,907.4513,4.0057 +0.8479793,87,212.9312,5.605534 +0.9373602,77,881.6762,5.858075 +0.794942,84,288.0566,5.413612 +0.7529769,8,974.1157,3.380804 +0.8806292,10,838.2374,4.041734 +0.9071702,71,976.974,5.640227 +0.5128439,84,113.3925,4.886223 +0.508224,97,353.1583,4.966884 +0.6519604,55,435.3711,4.792745 +0.5119386,85,606.7859,4.873612 +0.9132375,11,377.7748,4.306664 +0.6261143,28,92.34715,4.246723 +0.5091433,83,896.1872,4.850326 +0.7412793,27,978.2313,4.423764 +0.8408322,7,227.3483,3.555352 +0.7672435,9,520.7616,3.540014 +0.5301034,3,137.9902,1.662143 +0.6913752,99,368.8408,5.292307 +0.5038832,80,961.1678,4.814971 +0.6810352,58,798.4374,4.880977 +0.912606,95,39.98357,6.282317 +0.8752428,87,634.5903,5.653246 +0.5952158,2,215.9915,1.180506 +0.7718479,48,745.4419,4.938152 +0.6458358,11,277.5476,3.430429 +0.5988926,47,477.9302,4.575699 +0.8380053,85,626.8053,5.516798 +0.7103821,69,536.2279,5.069106 +0.8866979,37,457.5733,5.116669 +0.7517034,20,398.4081,4.213259 +0.9147898,46,560.4219,5.396691 +0.9484228,17,738.7124,4.894374 +0.8846891,40,963.2052,5.150066 +0.9426123,27,772.5522,5.187897 +0.8692356,26,67.72579,4.906808 +0.8589243,45,178.4913,5.190465 +0.7328168,62,788.4979,5.034291 +0.623517,64,359.9294,4.855704 +0.8780984,91,355.0138,5.712913 +0.77191,38,768.8696,4.764597 +0.6181754,100,993.8187,5.156927 +0.8559087,43,211.7474,5.136296 +0.5625674,51,284.2133,4.580255 +0.7974567,4,236.5961,2.785214 +0.8577004,44,559.3555,5.12577 +0.9458263,71,286.2064,5.911821 +0.7599092,84,920.8071,5.304669 +0.7314819,15,749.6491,3.909982 +0.7849763,59,195.8903,5.155483 +0.6070717,33,678.3757,4.309346 +0.5852736,62,260.5681,4.769412 +0.6049603,85,602.8164,5.023711 +0.7056618,14,68.68933,3.836551 +0.7184723,93,2.506099,7.900124 +0.907464,25,868.7431,4.912952 +0.8818385,76,441.2289,5.598673 +0.904677,35,205.0632,5.193281 +0.8232554,27,47.38136,4.807151 +0.9188763,93,90.43636,6.059958 +0.6166306,48,24.47130,4.779987 +0.8503245,59,652.8947,5.304897 +0.8644836,93,696.1033,5.657553 +0.7398192,73,382.7746,5.177192 +0.5050311,88,83.43626,4.91444 +0.8900678,93,351.7667,5.774332 +0.7577198,5,355.05,2.906072 +0.5459648,5,673.3102,2.360118 +0.7315915,52,154.3075,4.943453 +0.7092939,43,819.5333,4.714818 +0.7618465,85,876.8257,5.317655 +0.7262858,83,700.0127,5.228118 +0.7737173,91,178.424,5.438783 +0.6358564,78,102.2227,5.061739 +0.6601463,78,880.9956,5.055251 +0.8248714,64,240.081,5.314529 +0.7785174,87,770.9972,5.373263 +0.8429175,76,725.753,5.453214 +0.5951001,72,385.1136,4.891615 +0.891007,96,479.0816,5.786144 +0.7736853,89,857.986,5.376108 +0.918299,100,390.0396,5.944879 +0.7906417,9,287.6082,3.617527 +0.6402875,74,647.4198,4.984587 +0.7765883,93,620.9507,5.417569 +0.6578024,10,85.02536,3.386581 +0.5627766,31,309.6647,4.18284 +0.6243535,79,396.6058,5.009259 +0.6200636,53,208.0446,4.718187 +0.7096096,74,775.759,5.112731 +0.83082,79,246.7897,5.477539 +0.8123965,6,153.8754,3.298421 +0.8382691,12,142.3883,4.064761 +0.705515,61,282.4126,4.982704 +0.7580165,37,324.4754,4.723757 +0.9096753,83,169.1843,5.839802 +0.949019,20,64.8373,5.213973 +0.8169494,70,896.4021,5.319118 +0.7710959,10,770.646,3.648601 +0.8901521,6,442.8634,3.61866 +0.5415315,33,652.749,4.191687 +0.5416192,18,662.6916,3.670651 +0.7902908,48,447.7559,4.992453 +0.5299773,43,16.22008,4.520329 +0.9289499,30,225.6202,5.213176 +0.8344856,14,91.72327,4.211774 +0.5235518,40,394.8788,4.319086 +0.8744765,40,442.6723,5.12431 +0.9026988,5,750.8111,3.500929 +0.5675176,40,151.6294,4.408606 +0.6096033,63,605.3651,4.813785 +0.5135856,71,670.9206,4.743154 +0.5918367,76,814.6443,4.918962 +0.6342168,53,534.5466,4.729815 +0.5325372,99,960.3788,5.013452 +0.741656,65,78.99525,5.181359 +0.6935803,36,51.64724,4.645036 +0.8542952,10,48.5374,4.044326 +0.7463491,12,615.9147,3.749647 +0.6943899,78,260.7352,5.139563 +0.889562,12,398.4491,4.25206 +0.8491757,82,60.51142,5.723753 +0.8016692,83,7.73509,6.604698 +0.8924879,21,262.3629,4.734577 +0.7525104,80,107.3612,5.331661 +0.7081317,21,92.81737,4.187879 +0.8065809,43,210.9749,4.979122 +0.5169801,35,395.1261,4.199522 +0.6757979,76,910.9608,5.065197 +0.7677337,77,365.431,5.278845 +0.8090006,93,842.7086,5.491836 +0.7051984,38,488.1513,4.617047 +0.7468627,45,45.37075,4.982465 +0.5568271,45,484.7282,4.468249 +0.7837019,32,851.0998,4.663072 +0.7612952,32,479.0075,4.612813 +0.733612,91,72.76688,5.415899 +0.8864325,62,547.5789,5.472746 +0.7578537,40,421.5965,4.777266 +0.6717871,60,709.5815,4.889155 +0.6287574,52,620.978,4.704199 +0.6445166,78,400.8385,5.035814 +0.8931823,45,485.385,5.282556 +0.7727532,28,379.5074,4.541311 +0.5352619,2,212.1915,1.035757 +0.7081157,3,139.0256,2.127859 +0.6033971,22,594.7747,3.965754 +0.9075128,51,414.4177,5.440742 +0.8494736,76,149.5367,5.544112 +0.7879249,79,855.974,5.328293 +0.5783671,12,636.4271,3.365007 +0.7535224,48,537.166,4.899041 +0.716179,45,136.7055,4.804574 +0.7744747,97,885.4469,5.435816 +0.841277,85,245.2894,5.559938 +0.544991,50,880.931,4.527181 +0.9347753,97,101.0668,6.16939 +0.7641154,88,752.9195,5.348427 +0.6819447,17,322.7949,3.910315 +0.8632081,52,916.537,5.254725 +0.868709,64,376.5412,5.438657 +0.7571078,21,676.9291,4.261664 +0.6838573,59,341.2879,4.910124 +0.8295345,17,71.70596,4.383508 +0.8079979,57,160.2103,5.204845 +0.8102735,76,371.9556,5.376022 +0.9184764,54,527.7015,5.527673 +0.6461691,60,121.8660,4.879243 +0.860307,61,699.5002,5.359746 +0.663215,21,508.4091,4.047775 +0.7294957,59,655.0106,4.99358 +0.8406354,61,281.0507,5.321951 +0.5139149,86,262.1952,4.891583 +0.7905041,86,300.4609,5.416914 +0.8456873,14,481.5299,4.194904 +0.5098909,5,19.22275,2.322491 +0.6678912,81,393.9353,5.105909 +0.830644,38,124.9105,4.991291 +0.8262549,83,261.9533,5.495006 +0.6959497,69,655.3541,5.03778 +0.8008555,69,289.2386,5.292137 +0.8117482,100,446.218,5.56089 +0.5293518,81,772.3581,4.864649 +0.6090772,49,221.2100,4.636553 +0.7506375,89,543.5856,5.33163 +0.6183604,77,479.8493,4.977886 +0.7233891,4,568.0821,2.538969 +0.7745052,56,225.0964,5.084653 +0.6148174,56,278.9049,4.744436 +0.5664338,3,26.61995,1.771754 +0.7387753,66,902.254,5.090323 +0.6776956,91,945.66,5.195144 +0.8217946,12,254.1228,3.987356 +0.9459525,96,623.9948,6.065962 +0.8649597,21,641.7817,4.595264 +0.7425515,77,617.3263,5.211645 +0.8400273,16,413.1986,4.289296 +0.6770476,40,220.3779,4.612167 +0.6674166,42,588.7063,4.614908 +0.6428335,10,133.642,3.340386 +0.8646097,77,855.3629,5.528825 +0.5891536,2,14.00990,1.198849 +0.8098053,40,872.5492,4.901222 +0.809758,42,176.2297,4.979482 +0.7928953,70,722.8662,5.259338 +0.797324,31,971.6011,4.6741 +0.5771383,99,69.68891,5.142041 +0.7773082,50,285.3107,5.000541 +0.5495215,54,160.6643,4.61034 +0.7773526,24,561.2561,4.424951 +0.8622123,25,101.0384,4.798824 +0.6110196,60,778.7585,4.778251 +0.7854684,34,708.4522,4.715879 +0.5639518,21,225.5089,3.856821 +0.8967337,96,316.8322,5.82831 +0.6992566,52,999.291,4.834764 +0.614064,23,555.4065,4.024895 +0.6308871,18,159.6431,3.860586 +0.9232963,5,100.3030,3.686886 +0.7375896,41,961.0838,4.738977 +0.8605606,28,672.7911,4.799961 +0.7257157,45,878.2304,4.783404 +0.5813184,27,289.4119,4.102855 +0.7107086,89,267.5164,5.264923 +0.9413629,10,369.3205,4.424309 +0.8740505,68,769.1524,5.480379 +0.6051843,61,386.9700,4.786589 +0.827576,66,678.199,5.312512 +0.900977,31,18.41794,5.674096 +0.7688614,69,257.3158,5.215556 +0.8761198,56,677.8171,5.357956 +0.5646782,6,382.0181,2.615419 +0.518497,3,378.3279,1.632089 +0.582818,59,70.65949,4.767608 +0.8276893,56,107.9941,5.283863 +0.7168767,59,470.4204,4.971592 +0.662991,93,701.3547,5.186381 +0.8005013,43,960.6649,4.927929 +0.5331211,96,445.2623,4.996752 +0.7771595,45,986.4243,4.901005 +0.7080667,37,156.1174,4.628933 +0.9328946,89,677.8293,5.929755 +0.6320658,2,87.63947,1.279896 +0.6080188,65,589.0781,4.83435 +0.6301288,6,705.1481,2.764101 +0.5133827,81,995.4598,4.838737 +0.719066,97,752.0547,5.320292 +0.6186295,22,683.8413,3.994817 +0.8119921,41,708.591,4.928048 +0.5609343,88,10.50586,5.267972 +0.6724697,14,202.2301,3.721339 +0.573703,9,450.9772,3.070775 +0.8628512,57,640.9474,5.323342 +0.868195,94,649.7503,5.678757 +0.6743816,62,90.98017,4.978108 +0.8300029,19,250.6289,4.408213 +0.6457565,46,410.854,4.646782 +0.6287419,57,793.6064,4.771207 +0.9050638,91,883.7435,5.794317 +0.9116619,5,213.3576,3.574827 +0.9284593,16,108.4316,4.781968 +0.6050885,93,391.021,5.09282 +0.7973473,30,814.708,4.650565 +0.5764903,49,359.3575,4.571037 +0.5405271,48,288.3529,4.494993 +0.6495582,79,511.0006,5.050636 +0.6367823,59,822.7776,4.810997 +0.8513049,77,870.4478,5.484962 +0.9267168,35,561.7305,5.272438 +0.8221376,19,437.5601,4.369938 +0.5401428,57,19.55145,4.751766 +0.6786695,16,669.9876,3.843398 +0.6102902,51,332.7534,4.662691 +0.8363006,90,474.4249,5.556992 +0.6663403,99,437.2999,5.242262 +0.8085966,14,251.4224,4.079578 +0.9347172,77,837.7067,5.842615 +0.7344155,54,536.4091,4.942499 +0.9004107,96,208.1096,5.873226 +0.6433048,62,254.7092,4.874714 +0.8065827,89,583.4963,5.462501 +0.5564002,28,326.8198,4.086037 +0.5880839,69,181.2231,4.86122 +0.9407387,28,778.9392,5.199814 +0.9369049,53,886.1674,5.610943 +0.8998097,99,34.78137,6.290163 +0.6223383,90,941.7874,5.090228 +0.7911574,82,281.1704,5.388264 +0.8075953,32,504.956,4.735014 +0.5975587,94,219.1553,5.098065 +0.7839761,62,455.6021,5.160191 +0.5952474,66,666.0851,4.822761 +0.8705345,83,759.6216,5.601404 +0.6809573,45,228.4825,4.710120 +0.6019187,11,386.5556,3.331947 +0.7658947,15,814.1042,3.998861 +0.813091,40,904.633,4.910092 +0.918683,83,480.8551,5.81735 +0.8389258,98,57.99856,5.822399 +0.8472037,79,450.0731,5.503936 +0.8081241,100,215.4546,5.58131 +0.6612245,51,610.5578,4.749989 +0.6165932,26,887.3631,4.130658 +0.596875,9,13.68237,3.251298 +0.8972038,34,965.9676,5.087532 +0.8693963,35,513.7941,5.004048 +0.7674038,73,459.8307,5.235216 +0.5901292,64,250.1572,4.802326 +0.7296133,61,208.4754,5.043975 +0.8878144,91,896.558,5.722354 +0.5677198,38,365.4184,4.355683 +0.7190616,81,515.5016,5.200799 +0.7814752,60,50.94589,5.290408 +0.8198621,34,977.1663,4.808182 +0.6872518,25,721.45,4.242103 +0.5930279,60,325.3461,4.755136 +0.5059111,32,55.22956,4.135281 +0.8121109,76,17.48439,5.939912 +0.7529022,66,799.6337,5.122457 +0.6601005,18,329.2555,3.912098 +0.6066048,10,102.3450,3.263182 +0.8305692,4,528.8944,2.906320 +0.7135519,56,984.7976,4.918357 +0.6207566,9,387.2948,3.173807 +0.8736776,16,980.3776,4.408145 +0.5024343,85,554.2605,4.859215 +0.9368968,98,732.1767,6.012956 +0.7485144,9,525.2917,3.486522 +0.6679124,29,918.2333,4.321213 +0.7410865,33,374.1743,4.591967 +0.890034,22,97.48476,4.824609 +0.6235045,3,163.2022,1.891596 +0.8788184,31,854.3159,4.942984 +0.5733564,37,896.6874,4.339044 +0.5235723,75,313.9326,4.804836 +0.9031916,32,943.1994,5.072061 +0.9249485,3,634.5567,3.085764 +0.7795184,67,493.5099,5.202364 +0.5442364,42,260.3850,4.397356 +0.7538088,62,784.0382,5.080281 +0.8714196,21,519.4405,4.624195 +0.6037611,95,392.9248,5.105584 +0.605645,60,388.6159,4.775016 +0.7262467,62,451.3037,5.027994 +0.7070611,87,613.337,5.224093 +0.7124193,55,764.3051,4.905012 +0.7101894,24,335.7709,4.267068 +0.6363921,82,912.7779,5.048506 +0.5928241,59,575.4637,4.736328 +0.5114741,93,76.76653,4.969051 +0.6220136,86,987.4373,5.057191 +0.7778587,16,566.4055,4.090325 +0.7682783,65,739.0363,5.147656 +0.5197742,14,43.77784,3.428288 +0.80071,35,263.5616,4.799034 +0.848174,59,953.4341,5.291993 +0.6336437,40,504.9083,4.513693 +0.8964462,29,426.0757,4.983478 +0.9333257,71,108.4557,5.932473 +0.7945195,27,445.6889,4.56859 +0.6805711,44,975.6775,4.672505 +0.6033443,84,673.2954,5.011609 +0.6296885,53,838.786,4.718106 +0.5823181,56,649.965,4.678212 +0.5828971,59,375.5552,4.723169 +0.511142,14,841.3459,3.379117 +0.8984646,69,992.3174,5.582221 +0.6265228,50,935.0175,4.667815 +0.8357867,25,882.2828,4.624052 +0.7292072,38,532.7761,4.668328 +0.7758697,47,696.2516,4.9334 +0.7132152,32,841.5131,4.495411 +0.9086833,78,30.63744,6.228538 +0.840099,80,492.2464,5.488013 +0.6170762,97,396.9618,5.142746 +0.704527,39,249.5485,4.647633 +0.5579608,9,817.2322,3.035987 +0.770093,62,954.7968,5.115551 +0.8798565,66,727.0262,5.482889 +0.7694484,46,751.1275,4.901031 +0.7374544,32,581.615,4.553228 +0.8999201,99,999.735,5.823784 +0.8503247,87,92.39913,5.69636 +0.9096688,76,50.36219,6.011044 +0.8427042,4,121.9022,2.976982 +0.7524447,6,660.8017,3.085734 +0.6241854,30,577.2345,4.265333 +0.8464372,99,474.021,5.650894 +0.7979247,35,697.1621,4.771349 +0.6554351,97,127.8194,5.24562 +0.9227335,37,278.5272,5.314402 +0.558691,20,388.7766,3.799387 +0.7875231,58,927.0415,5.110648 +0.8474654,11,318.4969,3.998567 +0.9199452,89,804.1497,5.853293 +0.755178,11,781.259,3.692196 +0.7501978,79,962.4833,5.24055 +0.5877117,66,66.11904,4.866375 +0.6082031,24,295.8402,4.054799 +0.9181698,39,877.5183,5.290326 +0.9190084,52,291.3868,5.529388 +0.908331,53,983.4375,5.449875 +0.7157437,47,555.3253,4.799205 +0.8001084,12,932.2304,3.901024 +0.7591904,99,164.9959,5.466765 +0.8684237,69,677.5477,5.472583 +0.7669572,55,622.1829,5.02765 +0.6282833,69,112.7529,4.951761 +0.8508472,18,856.9338,4.415786 +0.7813152,12,19.93834,4.079094 +0.8131596,67,917.1183,5.278312 +0.5229803,43,226.2008,4.380527 +0.760018,94,554.3343,5.38929 +0.6581901,58,114.3732,4.880992 +0.7050023,6,156.9929,2.963535 +0.6388137,26,345.2279,4.180866 +0.7703802,21,302.4435,4.307283 +0.7719865,73,825.9207,5.236278 +0.647917,91,504.8866,5.148101 +0.6770831,48,72.47072,4.804889 +0.6447003,35,175.7579,4.446625 +0.757191,94,476.659,5.386077 +0.8901368,78,382.6649,5.654444 +0.6815508,93,131.4914,5.266452 +0.5256458,36,822.9934,4.234394 +0.6296011,17,2.528912,4.934265 +0.677469,30,227.9974,4.3843 +0.7770068,41,10.56137,5.51524 +0.5165083,4,88.90173,2.023952 +0.7099214,6,708.6837,2.965266 +0.5776249,27,653.449,4.090242 +0.8385866,70,867.0004,5.381325 +0.653134,58,24.65445,5.028615 +0.5222114,38,940.511,4.271954 +0.52211,12,456.7922,3.253085 +0.8821391,25,431.2503,4.807591 +0.5107624,24,234.9617,3.87355 +0.791372,43,414.8101,4.916052 +0.5539438,31,842.9205,4.161233 +0.5333754,25,497.1534,3.945494 +0.9296186,54,416.9209,5.599508 +0.9344575,72,846.4138,5.797461 +0.7615936,10,617.3528,3.622655 +0.6086307,79,751.1954,4.975634 +0.6602143,34,809.9639,4.433619 +0.6904942,82,678.079,5.149386 +0.8644522,3,242.6071,2.713617 +0.7364714,20,489.1806,4.172711 +0.9352433,59,409.2411,5.695107 +0.8090254,95,529.3272,5.514943 +0.9187024,40,553.3839,5.320665 +0.841718,5,350.1257,3.205612 +0.6405692,52,765.612,4.72416 +0.8836825,33,897.9677,5.008132 +0.7230816,45,914.3267,4.777408 +0.5582674,44,268.5147,4.458432 +0.6244152,33,841.241,4.340628 +0.898817,19,297.5451,4.682202 +0.6923485,67,335.8841,5.020066 +0.8147905,97,528.7302,5.544107 +0.8768643,70,439.8828,5.524466 +0.690254,56,430.0983,4.880391 +0.612166,40,830.4586,4.470533 +0.6082176,75,78.70042,4.992784 +0.7485141,81,814.3725,5.256056 +0.6398987,7,971.5611,2.953990 +0.8322966,81,541.9221,5.470873 +0.7008189,28,314.5543,4.372912 +0.7927534,27,363.9284,4.56741 +0.69938,38,360.3372,4.609066 +0.6438937,97,270.8365,5.19707 +0.7341373,38,96.0892,4.736542 +0.8522399,52,668.3805,5.222469 +0.6801307,19,284.4478,4.004812 +0.831692,24,117.5902,4.639136 +0.9476048,10,240.9065,4.493684 +0.551496,94,993.1748,5.005831 +0.8230653,98,922.7676,5.56258 +0.8699226,40,900.2922,5.093391 +0.6854477,63,963.481,4.948333 +0.8432787,96,923.4997,5.606291 +0.8451935,36,623.6866,4.935431 +0.577007,25,887.985,4.023107 +0.8109441,94,56.21722,5.700043 +0.8529192,29,157.5588,4.845897 +0.817715,65,427.0795,5.283968 +0.7494217,5,122.7565,2.893578 +0.6925452,99,647.7264,5.284948 +0.8609249,36,630.441,4.989459 +0.9247448,93,182.9758,5.989076 +0.5416671,42,787.1045,4.385566 +0.8597668,42,692.5763,5.095625 +0.6654662,58,58.45632,4.942707 +0.9231077,77,432.3362,5.7963 +0.7628278,27,841.1814,4.477327 +0.8122138,17,380.4142,4.248607 +0.8622663,3,760.8548,2.695047 +0.5892135,2,65.48377,1.170696 +0.781671,3,592.567,2.359244 +0.5845937,10,856.3625,3.198467 +0.9229792,35,726.8734,5.244499 +0.8207156,75,72.31391,5.524492 +0.7980214,78,612.9044,5.349749 +0.8412272,11,464.5139,3.968972 +0.7087537,57,490.1565,4.928935 +0.7510459,66,987.4297,5.11618 +0.6339613,70,59.09847,5.014612 +0.7524349,95,349.5906,5.390574 +0.5876294,35,50.53542,4.381489 +0.7986364,13,537.1481,3.971551 +0.8415225,100,344.543,5.653898 +0.6416455,79,734.274,5.032779 +0.9383721,7,402.2937,4.084501 +0.6881057,86,328.5769,5.190362 +0.8396862,77,935.2592,5.448255 +0.932392,48,446.9599,5.534071 +0.8366197,48,323.8904,5.133291 +0.5522438,21,518.9197,3.828737 +0.824058,98,930.1329,5.565161 +0.6301056,95,90.10231,5.200541 +0.5108554,90,370.9280,4.916536 +0.6094796,21,341.6719,3.941419 +0.7173496,44,414.3781,4.757312 +0.5826613,8,428.8542,2.968118 +0.65258,38,239.701,4.520544 +0.6426234,93,185.9158,5.175764 +0.6141543,82,993.7445,5.009928 +0.656938,56,195.7736,4.831684 +0.8172469,30,518.1036,4.713522 +0.6019059,53,676.9374,4.670159 +0.6549961,6,547.4558,2.824931 +0.7232873,17,174.1364,4.019165 +0.7805223,32,50.51764,4.792173 +0.9196643,5,314.0752,3.621295 +0.7813478,83,469.8973,5.356797 +0.6547584,83,195.7537,5.115725 +0.9284674,32,394.5050,5.230222 +0.5197441,14,926.1198,3.395476 +0.6899643,72,802.6675,5.054524 +0.5053075,6,791.7115,2.484155 +0.5424734,15,289.0827,3.508554 +0.7931831,19,435.9833,4.281749 +0.5941135,78,221.3831,4.957422 +0.865215,28,291.7503,4.836752 +0.5424058,3,487.1848,1.687881 +0.7056974,65,740.978,5.012886 +0.9368825,35,14.76310,6.35053 +0.57561,45,291.1745,4.505737 +0.7682693,51,192.9438,5.006944 +0.6337592,36,428.2575,4.432639 +0.8266066,64,115.1584,5.371109 +0.5875868,6,201.9519,2.670309 +0.8789958,31,49.8531,5.149625 +0.7118476,13,884.6736,3.732919 +0.5739909,14,394.6366,3.504593 +0.7322612,47,187.8178,4.860688 +0.714794,50,630.2739,4.841745 +0.8901368,76,5.784143,8.037162 +0.7201633,26,820.6769,4.345689 +0.9010186,37,424.7176,5.182914 +0.6013714,59,541.621,4.751601 +0.7908577,46,997.1488,4.951546 +0.6927482,71,702.3211,5.051229 +0.5590977,11,594.2949,3.241059 +0.7164781,42,963.2049,4.711018 +0.9163904,43,502.9438,5.361358 +0.6612428,83,623.4967,5.104527 +0.6425414,87,862.6899,5.101567 +0.8213658,65,322.2208,5.303021 +0.7373462,89,551.5728,5.302949 +0.5986439,55,478.4257,4.695178 +0.7244378,30,347.0494,4.479614 +0.6218237,50,636.3346,4.661784 +0.725282,28,856.954,4.416502 +0.8487246,16,101.9375,4.375022 +0.7496028,57,605.1464,5.013753 +0.6803173,56,902.4544,4.85285 +0.7951882,70,583.4215,5.26867 +0.9259178,22,242.7018,4.957652 +0.7516096,36,551.4496,4.67813 +0.8295028,71,780.4252,5.365977 +0.8778276,15,475.6616,4.381838 +0.8194508,74,613.7646,5.370245 +0.8235226,30,845.348,4.726012 +0.7537613,69,934.379,5.15409 +0.6151436,20,976.8233,3.904389 +0.9386936,32,705.0091,5.281983 +0.6032401,27,860.4168,4.136792 +0.8156953,34,5.919545,6.147653 +0.8026528,42,280.3825,4.939681 +0.7619484,60,59.23093,5.209588 +0.876842,90,23.85571,6.264086 +0.6835586,12,487.0681,3.595008 +0.7693461,43,703.687,4.851691 +0.6153242,91,590.2577,5.089901 +0.5938335,2,361.9556,1.176101 +0.9398924,30,127.9098,5.339887 +0.6309711,19,744.1419,3.892506 +0.6674976,82,87.71144,5.172374 +0.7843308,32,890.146,4.664321 +0.8866003,55,245.5037,5.422817 +0.9174256,47,799.3804,5.417252 +0.7856124,89,946.9574,5.402764 +0.7332223,76,519.9381,5.185325 +0.5741031,45,596.0796,4.496812 +0.7555969,51,664.927,4.945389 +0.8515928,2,433.3597,2.047442 +0.573079,57,530.3749,4.677239 +0.8753101,72,65.81185,5.720728 +0.6491346,55,79.26238,4.842491 +0.794759,21,705.0873,4.362667 +0.9401834,16,505.0417,4.787617 +0.5122126,23,163.9715,3.842354 +0.8804487,55,7.418967,7.01951 +0.5310158,12,338.4504,3.271906 +0.9143952,2,334.7572,2.43831 +0.609437,49,766.6815,4.622999 +0.743276,29,559.6721,4.489996 +0.750802,43,906.3193,4.805193 +0.7028861,82,570.4726,5.175535 +0.7121867,61,670.229,4.981277 +0.5660296,84,38.86039,5.04032 +0.5041909,21,216.9332,3.744519 +0.5551879,50,348.8803,4.550023 +0.8878471,6,35.24714,3.745212 +0.892262,73,973.6806,5.593922 +0.696367,40,784.4907,4.633238 +0.6421879,87,282.2655,5.116123 +0.6215205,34,360.9796,4.365564 +0.789945,12,293.5746,3.88169 +0.640508,21,401.1258,4.002517 +0.7915758,10,797.9483,3.70977 +0.9387423,22,411.4235,5.024741 +0.5622273,54,898.4625,4.614994 +0.5953253,60,914.328,4.750301 +0.6392777,35,251.4834,4.428198 +0.8932596,42,377.1065,5.241942 +0.7364436,36,696.4678,4.64023 +0.5885521,10,365.018,3.20982 +0.829681,93,746.4872,5.549487 +0.5057063,93,958.7418,4.927446 +0.9257312,56,223.3139,5.636041 +0.6316418,80,73.15034,5.092505 +0.7197106,31,975.8304,4.483773 +0.7869882,29,766.9128,4.596767 +0.6074108,62,445.4765,4.800981 +0.8286439,26,784.7253,4.632707 +0.5689967,25,798.7926,4.008652 +0.8410289,5,870.3467,3.196519 +0.5227112,90,450.7685,4.933785 +0.6375155,4,668.4885,2.304924 +0.6896833,91,347.8749,5.231752 +0.7352017,52,438.1424,4.919824 +0.6386533,77,988.0837,5.007016 +0.9461375,49,491.345,5.64017 +0.654627,97,832.8996,5.199254 +0.5894615,29,60.51807,4.218363 +0.5269488,2,862.4869,1.015177 +0.9331138,87,461.2927,5.930507 +0.8665317,70,329.2841,5.497526 +0.9175936,89,572.3668,5.85077 +0.8128998,75,662.1277,5.36021 +0.765531,25,766.4274,4.423686 +0.8934914,39,80.10902,5.31473 +0.7163465,12,523.9966,3.673615 +0.7988134,17,41.4153,4.338415 +0.5451061,29,90.2829,4.114404 +0.9189236,10,718.424,4.249735 +0.5857667,34,673.6846,4.294493 +0.7549478,35,321.5195,4.673801 +0.7943498,5,543.3669,3.023187 +0.7016415,74,252.3303,5.117568 +0.559157,97,22.49902,5.190322 +0.8614353,89,59.39922,5.836828 +0.6084914,11,930.5192,3.342619 +0.9059065,52,830.8472,5.428208 +0.8895644,9,909.9186,3.990418 +0.9077405,66,367.3664,5.62232 +0.7912619,4,954.7676,2.755165 +0.6900781,79,4.370944,6.382217 +0.682151,37,498.7817,4.548054 +0.8415262,15,847.1698,4.231924 +0.8512212,81,70.99263,5.691611 +0.5211151,5,136.4987,2.309817 +0.8838984,23,530.1152,4.746854 +0.6994729,78,678.329,5.131444 +0.51668,42,187.2642,4.352938 +0.9481614,48,182.5941,5.705067 +0.9236594,4,668.0228,3.406841 +0.6312497,22,566.5117,4.020927 +0.7943789,17,577.5567,4.188866 +0.8626302,11,527.8644,4.051431 +0.6705389,50,89.56081,4.807473 +0.5516966,49,16.48661,4.683886 +0.8668004,29,971.0603,4.845009 +0.8014657,14,739.804,4.042122 +0.9053415,70,69.74634,5.837114 +0.6831015,69,194.3605,5.037981 +0.8789359,53,415.8494,5.343093 +0.9289235,69,568.3182,5.747231 +0.7899977,78,938.5117,5.323466 +0.9479518,39,874.7101,5.484147 +0.6049941,13,631.9339,3.496114 +0.9011545,67,390.2548,5.599185 +0.7040379,5,153.3049,2.757018 +0.6679361,76,271.9522,5.068211 +0.6960151,71,476.9279,5.062621 +0.8435223,54,164.3906,5.274298 +0.8736423,16,89.53738,4.491120 +0.59024,59,791.2283,4.72982 +0.9295583,4,208.2342,3.470088 +0.5965512,55,241.4432,4.700357 +0.6738523,47,545.3299,4.714014 +0.5366376,40,704.4424,4.338593 +0.8379685,43,361.8964,5.054343 +0.8422289,25,45.08528,4.825735 +0.717953,38,625.8311,4.641661 +0.5679036,27,216.3701,4.080988 +0.7799007,22,500.1768,4.36294 +0.9302193,42,778.122,5.413554 +0.782723,100,474.8462,5.486657 +0.8622244,25,578.762,4.722007 +0.940699,5,331.4978,3.788291 +0.6665559,91,293.6174,5.19182 +0.7849823,12,886.944,3.855518 +0.6102746,45,795.5418,4.558929 +0.5301608,34,410.1793,4.198522 +0.7874662,64,876.8466,5.180669 +0.7584281,61,372.7229,5.091763 +0.883191,19,283.4864,4.609797 +0.8593794,58,94.39034,5.436929 +0.9007119,90,606.605,5.777169 +0.7826633,84,414.7848,5.371269 +0.8178446,35,453.0215,4.834728 +0.5831485,51,648.3131,4.608569 +0.7011728,80,491.1916,5.157069 +0.577471,34,341.6812,4.284249 +0.8422745,3,247.0640,2.607015 +0.5670756,52,252.8716,4.604588 +0.8654929,46,553.3708,5.185306 +0.555244,43,568.0426,4.428859 +0.8185472,61,153.0966,5.287868 +0.6000175,94,396.2763,5.091671 +0.9250674,4,959.921,3.415297 +0.519015,23,407.4622,3.848192 +0.9100592,26,412.1465,4.97078 +0.5725889,11,752.5595,3.268075 +0.7735475,80,13.28211,5.94689 +0.6812585,61,742.4313,4.918926 +0.8009573,91,495.3601,5.466766 +0.8496011,36,14.80379,5.591567 +0.8966086,24,326.1461,4.849813 +0.6029698,77,911.9371,4.946375 +0.5789911,33,268.6701,4.265316 +0.9015798,74,379.2924,5.668898 +0.8378741,59,176.2669,5.314487 +0.5142631,13,875.7704,3.314014 +0.6618115,90,361.3256,5.170771 +0.618478,79,498.9765,4.996128 +0.589535,53,843.2393,4.647428 +0.5709581,19,283.5134,3.779699 +0.934535,53,136.1736,5.70354 +0.9176517,68,662.3776,5.671203 +0.8882659,49,385.4667,5.328562 +0.7906314,62,227.6577,5.19901 +0.8331562,33,189.6048,4.866175 +0.8592519,5,199.5106,3.29058 +0.8631095,5,586.7871,3.295034 +0.7715704,95,393.3997,5.430589 +0.7810495,18,892.4912,4.195172 +0.6263919,51,861.9839,4.683013 +0.726559,66,379.8912,5.077005 +0.584635,16,816.7968,3.646219 +0.7622277,99,441.9479,5.434317 +0.544085,4,913.6733,2.079431 +0.8988398,92,782.1835,5.776936 +0.7965645,46,648.4351,4.97143 +0.5655758,39,916.2638,4.367322 +0.5597001,40,481.4167,4.380355 +0.6119028,43,619.7148,4.528215 +0.5059835,35,910.8695,4.177567 +0.888591,3,379.9952,2.841126 +0.8923276,39,532.5778,5.174923 +0.9391946,88,295.5114,6.001715 +0.8329471,5,561.5299,3.165962 +0.807254,49,471.086,5.051749 +0.6779844,72,546.0019,5.035882 +0.7169698,39,519.4347,4.661549 +0.6063137,89,822.5501,5.056334 +0.8338426,46,400.1937,5.087515 +0.9038509,24,381.7342,4.880606 +0.8799192,61,668.0104,5.431366 +0.7922678,53,992.3444,5.057599 +0.6221619,74,577.9326,4.953811 +0.7974794,6,983.7875,3.226665 +0.5508857,7,651.114,2.755166 +0.5805972,47,369.621,4.545734 +0.7430752,51,665.0276,4.916948 +0.889692,77,94.36406,5.767793 +0.8952883,43,895.1652,5.247112 +0.9065478,17,242.677,4.641579 +0.8725372,82,83.33613,5.757366 +0.6905845,95,765.2116,5.250851 +0.5161306,2,751.7912,0.9905717 +0.6449158,76,438.4860,5.016555 +0.850453,76,108.6052,5.580327 +0.6725742,2,480.4059,1.386370 +0.6161149,76,295.3912,4.971517 +0.7963333,93,957.2727,5.458221 +0.8256374,92,764.9899,5.530569 +0.8711578,4,954.592,3.086392 +0.7021267,58,94.03852,4.987058 +0.6045699,15,764.2379,3.627434 +0.8155154,53,809.7748,5.121834 +0.8537439,97,361.4350,5.66994 +0.6076632,42,300.3761,4.50934 +0.6164641,90,997.455,5.079993 +0.6679983,77,914.1822,5.060077 +0.8267494,47,758.4837,5.069028 +0.889724,88,814.6457,5.709872 +0.5710028,58,572.7667,4.686314 +0.7476734,66,752.3688,5.111589 +0.8446393,16,688.6557,4.298853 +0.6105829,77,741.3553,4.960555 +0.6288055,99,627.1944,5.171451 +0.8747276,74,936.3155,5.536257 +0.8663237,60,476.5183,5.378106 +0.6572653,50,279.4464,4.738406 +0.818589,2,408.8505,1.893213 +0.5529693,48,363.1589,4.51419 +0.8066909,59,384.7873,5.188151 +0.799528,20,910.703,4.334523 +0.8265927,61,476.6806,5.262121 +0.9341984,38,883.2063,5.367274 +0.805301,37,72.53905,4.940323 +0.565158,56,547.6801,4.65019 +0.5359521,6,879.5133,2.550337 +0.7844629,81,944.9339,5.335886 +0.7571667,9,95.5825,3.542732 +0.9163885,78,973.905,5.746129 +0.5834059,92,85.6609,5.08992 +0.7239388,81,538.4948,5.210062 +0.7697425,2,525.1054,1.698599 +0.663207,98,479.0765,5.228057 +0.9052223,45,320.5551,5.352677 +0.5567801,53,341.8657,4.597828 +0.8841526,26,887.5597,4.833461 +0.9384,63,439.3002,5.75641 +0.838798,92,83.15308,5.710527 +0.6815254,15,309.6898,3.798653 +0.5857514,42,476.6759,4.464864 +0.8293977,80,31.63208,5.801698 +0.842452,34,184.5945,4.92152 +0.8692851,97,633.1602,5.703721 +0.7267881,31,137.6431,4.537449 +0.7356832,56,658.8381,4.969012 +0.7227652,91,554.936,5.288082 +0.8580446,92,162.8874,5.697804 +0.9311096,57,330.0965,5.656089 +0.87975,61,740.2764,5.428649 +0.5778756,23,14.93272,4.118634 +0.7842306,30,313.8244,4.629866 +0.6270722,33,779.2002,4.346039 +0.7057705,79,302.6537,5.167424 +0.5971569,35,33.86121,4.433412 +0.9313556,92,31.7865,6.522864 +0.9145324,22,844.1247,4.855005 +0.5121691,72,610.6148,4.751727 +0.7191218,46,152.6025,4.822954 +0.6811826,4,294.6595,2.422272 +0.6025292,48,964.4258,4.593841 +0.8007709,18,992.2387,4.250902 +0.9168472,47,961.849,5.410959 +0.9089293,79,416.9533,5.742267 +0.8455079,57,263.6889,5.292637 +0.8230542,30,80.5108,4.821179 +0.5176877,25,849.4768,3.915583 +0.559614,30,68.57347,4.180268 +0.8706231,16,203.46,4.426949 +0.7886635,87,614.8048,5.401131 +0.5709352,53,489.2911,4.618905 +0.6175398,45,82.33716,4.618999 +0.9273795,83,849.5728,5.847243 +0.6616265,64,464.1305,4.921935 +0.9092348,35,43.38426,5.454607 +0.6639229,9,488.635,3.271458 +0.7123701,24,645.2518,4.264661 +0.5971812,71,323.3251,4.887295 +0.9040199,58,302.4310,5.526017 +0.891341,3,853.512,2.85285 +0.8327472,46,999.0827,5.068139 +0.538213,77,36.63778,4.919466 +0.9343277,60,798.6898,5.678839 +0.5291167,96,940.8475,4.986283 +0.5365506,2,905.9114,1.037311 +0.5783818,67,519.9423,4.807253 +0.6017498,70,535.2365,4.878864 +0.5621818,55,61.71024,4.679536 +0.631023,85,936.9508,5.064591 +0.6173371,18,425.883,3.820447 +0.5176463,23,673.073,3.843871 +0.7944634,58,930.0162,5.12811 +0.5406991,33,242.3118,4.196870 +0.6967938,23,300.9028,4.203233 +0.902891,90,637.2883,5.785307 +0.8088856,26,119.2594,4.627547 +0.5780078,51,584.8612,4.600362 +0.7028602,54,774.6654,4.871879 +0.6738062,30,613.2607,4.363156 +0.5541092,10,650.902,3.135661 +0.9457014,54,949.3188,5.683393 +0.8972022,46,406.4764,5.321292 +0.8667156,11,684.8948,4.065692 +0.9310755,76,645.1775,5.818983 +0.5542021,24,646.2454,3.947356 +0.5404606,42,196.7277,4.394176 +0.686979,56,163.9087,4.898354 +0.7025409,41,410.7730,4.67216 +0.8317294,53,419.5157,5.181381 +0.9424831,76,426.1901,5.908399 +0.7372916,44,485.0423,4.798806 +0.6709233,84,331.3589,5.140749 +0.6746366,12,859.704,3.571476 +0.8216683,34,540.0916,4.821108 +0.643978,57,272.3593,4.812046 +0.5520607,53,60.71588,4.631438 +0.7007719,42,765.4727,4.67977 +0.9199158,12,441.8452,4.417682 +0.7121463,56,636.3291,4.919563 +0.7334962,37,720.3002,4.65424 +0.7212483,71,372.2988,5.118448 +0.8790645,22,142.9078,4.741032 +0.9044781,59,215.2122,5.560589 +0.5302091,33,553.2379,4.172572 +0.9233759,72,269.3898,5.778901 +0.6341785,99,731.2685,5.179165 +0.8801704,15,991.0715,4.383208 +0.6209372,66,531.3332,4.869074 +0.7938349,97,125.7036,5.560664 +0.7822507,53,943.604,5.032947 +0.7205718,37,352.3203,4.634869 +0.8427076,42,572.6246,5.04161 +0.7351081,7,70.82834,3.233934 +0.5523457,19,653.4837,3.739476 +0.9089972,81,543.5491,5.749272 +0.7323391,50,895.3925,4.87574 +0.521568,82,214.5986,4.871706 +0.713984,22,361.0807,4.202606 +0.7087699,71,76.13513,5.170263 +0.7970846,85,246.2059,5.433973 +0.9484904,23,924.6415,5.115985 +0.695886,39,421.1168,4.619389 +0.5020152,34,437.4275,4.149307 +0.9410206,71,688.0979,5.836372 +0.887759,11,259.6189,4.178223 +0.7860928,52,439.7041,5.040212 +0.6178195,77,148.7578,5.001551 +0.6259203,98,944.3424,5.156093 +0.7109561,51,193.5400,4.873273 +0.7578351,95,481.2859,5.394517 +0.7206983,24,140.5904,4.313175 +0.8106681,17,827.8169,4.234558 +0.8989231,38,423.3858,5.192314 +0.7481471,23,39.30671,4.449383 +0.5809042,43,147.3237,4.491469 +0.7851278,29,506.1053,4.596806 +0.7531022,27,360.8266,4.463365 +0.8690282,88,68.67441,5.829221 +0.7360276,14,836.9838,3.859787 +0.6293365,7,300.9803,2.933594 +0.6489233,37,151.2782,4.503674 +0.7898306,59,323.5039,5.148535 +0.6523805,84,815.1856,5.094532 +0.5320332,29,993.8974,4.066623 +0.9269118,36,547.8584,5.294179 +0.8070126,24,620.2786,4.506701 +0.6693941,42,17.37505,4.888551 +0.5038683,85,633.7558,4.860832 +0.8940935,26,757.7715,4.87946 +0.8346877,92,575.5123,5.561954 +0.9175068,83,713.3788,5.798848 +0.9257833,54,283.4987,5.595522 +0.9184304,74,780.53,5.726756 +0.8686702,7,355.3133,3.666443 +0.5827008,35,998.6566,4.310686 +0.7970785,87,304.8774,5.441025 +0.9382596,25,548.312,5.107429 +0.8953957,59,306.9858,5.497621 +0.5908737,18,574.3097,3.765925 +0.5266771,30,920.222,4.085747 +0.5057869,11,132.1592,3.141296 +0.6763682,66,533.283,4.970388 +0.5986894,27,175.3026,4.143136 +0.8778105,11,320.0037,4.125823 +0.6886012,37,602.0783,4.559364 +0.8813419,12,330.9027,4.21685 +0.7192435,42,460.7729,4.724577 +0.5545486,56,15.70768,4.807326 +0.9325303,38,346.1985,5.383635 +0.669051,56,640.025,4.834118 +0.6583283,86,996.489,5.1202 +0.6057796,77,325.1724,4.961303 +0.7796517,90,571.285,5.404014 +0.5056907,17,266.7461,3.554489 +0.7515106,11,303.1314,3.690423 +0.7039952,48,202.1302,4.811129 +0.809957,79,66.13782,5.541357 +0.9224645,6,619.0758,3.812107 +0.5094466,88,898.6833,4.893397 +0.9477443,73,129.9485,6.031339 +0.5485121,7,9.254338,2.885109 +0.9305325,22,684.9766,4.95488 +0.7119204,89,910.6426,5.244861 +0.7536868,36,162.9004,4.713997 +0.8250412,54,148.9539,5.221541 +0.687851,59,864.5388,4.906065 +0.918532,97,597.2784,5.909369 +0.5595147,41,544.9091,4.398864 +0.9004672,85,239.2722,5.78195 +0.59365,54,878.0916,4.668481 +0.8783227,10,896.2678,4.030569 +0.8133267,96,370.0175,5.54357 +0.8671705,60,64.87276,5.5537 +0.883281,74,645.421,5.575454 +0.5804001,84,84.52473,5.018588 +0.8266129,54,200.4741,5.207821 +0.6836131,20,664.69,4.04816 +0.6035206,9,628.5172,3.133810 +0.6702452,69,849.1852,4.986271 +0.6364704,48,883.8399,4.655244 +0.5671835,9,546.4393,3.056326 +0.5690553,3,236.2613,1.753378 +0.8756632,64,780.2536,5.444975 +0.7153843,63,838.4182,5.008798 +0.804762,33,609.6379,4.747504 +0.6179514,73,488.8654,4.938339 +0.8194816,96,853.4875,5.540392 +0.7588645,2,152.7610,1.664141 +0.7981592,57,334.5773,5.144643 +0.9490692,85,556.0761,6.016835 +0.5867042,70,990.4885,4.849403 +0.6007492,12,694.5446,3.410986 +0.736716,84,601.6296,5.260216 +0.6323489,2,774.0551,1.274785 +0.738871,58,355.3918,5.011991 +0.8140275,34,702.4303,4.794691 +0.7255078,34,647.2084,4.572123 +0.864685,28,838.2934,4.812339 +0.7486541,3,207.2905,2.251476 +0.7494737,2,623.8884,1.626546 +0.6653869,13,954.9271,3.624499 +0.537772,95,186.5677,5.007723 +0.6538231,71,568.5899,4.980417 +0.9414375,88,510.526,5.987133 +0.5479147,54,51.48266,4.646137 +0.557724,48,903.0369,4.516893 +0.9386544,56,857.2707,5.659779 +0.5940301,94,253.2258,5.088894 +0.6501443,64,959.9111,4.893937 +0.6067973,54,908.6455,4.691129 +0.654507,59,52.07229,4.941878 +0.8192652,79,340.7329,5.43031 +0.939037,64,876.5141,5.74957 +0.6135284,81,459.9465,5.006509 +0.7110579,18,878.6845,4.01835 +0.814323,78,780.191,5.388123 +0.8908215,43,392.1403,5.246676 +0.53005,80,518.9931,4.85878 +0.6253301,33,718.2566,4.343194 +0.9362074,50,393.0591,5.591873 +0.7219975,87,541.2979,5.255803 +0.9459326,15,316.912,4.798087 +0.930335,80,807.2895,5.841721 +0.5681464,16,378.3508,3.61698 +0.9499151,14,420.992,4.770063 +0.7182865,68,375.8024,5.081201 +0.7794312,9,96.4755,3.610739 +0.5496585,34,351.8712,4.233967 +0.8552836,83,358.2531,5.571118 +0.7258398,66,132.6162,5.114452 +0.6802115,50,625.1914,4.771628 +0.7970908,68,216.5083,5.284177 +0.7856198,32,35.54217,4.868538 +0.6896799,53,619.3499,4.833827 +0.5405124,11,709.2976,3.202944 +0.5931073,58,181.7167,4.740144 +0.9296065,57,274.144,5.657511 +0.8894637,99,230.9085,5.83801 +0.7269455,94,416.5431,5.324466 +0.5054073,6,366.2931,2.485701 +0.5939675,62,223.0338,4.787509 +0.9279325,87,412.7045,5.904856 +0.874619,38,700.4562,5.077989 +0.773303,85,519.679,5.351931 +0.6715655,4,828.7634,2.39306 +0.9316947,6,611.5014,3.880666 +0.7816273,64,883.5622,5.166293 +0.7616447,35,490.4985,4.682418 +0.6307362,20,816.8543,3.93619 +0.7790853,60,134.1737,5.174301 +0.7120402,8,831.7674,3.270146 +0.6111881,54,420.4505,4.704805 +0.5667839,65,250.6678,4.773346 +0.7412546,31,604.9042,4.536834 +0.761954,86,590.23,5.331604 +0.8147305,97,669.9403,5.538824 +0.921257,12,598.9547,4.420777 +0.8579846,9,796.0635,3.848182 +0.6420126,59,390.8569,4.82794 +0.6954217,94,744.5522,5.25295 +0.9495565,16,861.5791,4.855693 +0.6113444,54,989.5619,4.69867 +0.8328882,19,203.3542,4.424911 +0.8856367,28,696.2317,4.898714 +0.640194,2,117.6311,1.300124 +0.6474485,52,427.2151,4.742487 +0.5670605,59,541.7196,4.692942 +0.8488514,30,185.5357,4.848086 +0.7165594,73,490.8832,5.123192 +0.6623204,53,298.4773,4.790835 +0.5074262,23,273.8531,3.829228 +0.6352413,49,967.0568,4.668145 +0.5649781,62,178.2758,4.740777 +0.7498571,20,583.6562,4.204169 +0.5835476,56,123.3513,4.706382 +0.7550705,79,316.9494,5.271653 +0.7218668,75,330.5023,5.16151 +0.5017672,84,382.8786,4.85166 +0.630573,36,709.534,4.422514 +0.935681,96,964.6872,5.985507 +0.8554879,34,145.4236,4.982775 +0.7229327,81,378.9831,5.214754 +0.8577544,42,999.5687,5.083548 +0.9432636,89,833.7002,5.990668 +0.7666204,57,493.171,5.056368 +0.6362688,29,762.5893,4.259337 +0.8958883,67,622.4665,5.560987 +0.8283473,13,847.803,4.063877 +0.7218571,74,269.1406,5.157658 +0.8416842,15,260.8999,4.25085 +0.8848287,95,302.4653,5.775057 +0.8140273,82,303.3425,5.4457 +0.7295315,70,835.9745,5.11325 +0.5807518,51,702.8305,4.603968 +0.6501605,82,199.395,5.09776 +0.8406729,11,74.10512,4.033798 +0.903668,100,908.3707,5.848135 +0.7548947,70,466.2839,5.176738 +0.8195727,43,868.5602,4.982021 +0.5663267,78,102.8917,4.929645 +0.9173868,2,983.7003,2.457186 +0.628796,87,665.3164,5.079912 +0.8091684,35,694.259,4.802692 +0.7323985,53,860.108,4.918963 +0.7742748,5,320.925,2.959510 +0.6931249,34,890.3259,4.49974 +0.5241701,19,878.5768,3.686026 +0.8520986,31,769.1417,4.844574 +0.589649,22,718.8403,3.938434 +0.5274364,77,522.0673,4.826529 +0.6014354,43,831.8862,4.507671 +0.7802544,69,375.5549,5.23125 +0.6449134,2,891.3265,1.308500 +0.8130707,32,796.61,4.744624 +0.573831,8,728.1806,2.947466 +0.9301646,10,393.0404,4.335678 +0.8982183,99,279.571,5.862206 +0.5661488,79,75.63719,4.951629 +0.6237751,59,588.3647,4.790296 +0.6550018,40,711.4487,4.551573 +0.8109876,28,456.1428,4.643873 +0.6988211,2,699.4621,1.463250 +0.5704728,50,793.2397,4.570573 +0.5820357,46,923.769,4.525452 +0.6473964,75,769.8616,5.005384 +0.9244471,96,835.5283,5.924331 +0.6504812,57,542.7684,4.81398 +0.867966,74,895.898,5.512985 +0.9418494,16,774.1639,4.7926 +0.6489154,2,96.85372,1.325131 +0.5085422,15,625.4407,3.440078 +0.6989324,82,629.8381,5.166497 +0.9183082,48,186.7327,5.499822 +0.7709177,56,8.400555,5.942506 +0.6682601,40,867.857,4.576017 +0.89172,55,165.8517,5.472501 +0.6924027,21,631.6706,4.109167 +0.7003671,80,747.3869,5.149938 +0.6623735,22,971.5073,4.081657 +0.6241618,66,884.9327,4.870709 +0.5252733,96,722.093,4.981467 +0.6021912,33,411.8979,4.303828 +0.7934302,15,539.9897,4.080298 +0.8792068,41,204.9749,5.19277 +0.8198524,55,154.0691,5.216557 +0.928111,67,748.7546,5.715469 +0.5133573,38,246.1858,4.263624 +0.6884071,37,674.5355,4.55795 +0.7461944,64,473.5671,5.093302 +0.6532605,97,185.9989,5.225389 +0.5501679,27,628.1183,4.040324 +0.7534715,27,19.90830,4.748168 +0.7025255,31,938.235,4.446551 +0.8893203,50,492.9179,5.339381 +0.7325881,3,16.04148,2.286298 +0.8471792,46,99.03947,5.214267 +0.8558435,14,925.2775,4.2263 +0.9016918,25,899.1608,4.883661 +0.9413817,37,697.0876,5.402966 +0.9225349,82,561.812,5.82426 +0.5003238,9,688.7228,2.917672 +0.8512868,20,559.2459,4.507173 +0.8284532,44,595.7483,5.03024 +0.846141,66,653.0226,5.36898 +0.748223,39,755.2171,4.727535 +0.7368554,26,749.7013,4.384982 +0.7189159,3,647.6345,2.152868 +0.7414169,15,94.89577,3.977394 +0.8153508,24,211.3473,4.55558 +0.6970842,31,797.3713,4.435984 +0.8025622,50,6.803501,6.268036 +0.9030182,26,381.8899,4.936831 +0.6419183,16,749.4674,3.763236 +0.9327713,20,151.1507,4.961371 +0.8798308,24,400.5564,4.768297 +0.5138711,3,821.1119,1.620491 +0.53179,14,989.895,3.418602 +0.8421581,75,887.0516,5.438645 +0.8565368,86,552.1805,5.585046 +0.6598265,16,685.9115,3.801888 +0.9419386,65,314.7918,5.818752 +0.7884257,93,434.97,5.453545 +0.5809332,37,839.5907,4.352714 +0.5207864,44,85.54216,4.4121 +0.5672738,25,628.4949,4.006396 +0.6546446,54,218.9772,4.796863 +0.5339421,34,842.3085,4.202027 +0.5361476,42,825.7257,4.37603 +0.6629262,81,171.9478,5.118468 +0.5759406,36,173.0157,4.336918 +0.547108,31,106.1333,4.170199 +0.507479,78,627.4027,4.803467 +0.6631738,75,844.3643,5.033109 +0.5277626,29,585.636,4.060688 +0.5617955,64,210.7296,4.755963 +0.5835145,5,64.48203,2.462699 +0.882635,82,746.709,5.637861 +0.7425467,87,934.1737,5.291144 +0.7768254,52,92.34035,5.092246 +0.7278219,39,573.6261,4.684182 +0.8767195,34,706.6265,5.005221 +0.850523,73,99.0534,5.563408 +0.8754488,82,583.1682,5.616972 +0.6626895,42,438.3507,4.608795 +0.9348684,26,225.5050,5.147867 +0.9416782,45,132.6854,5.644021 +0.7208806,81,6.229939,6.237515 +0.5405073,7,75.27229,2.747032 +0.784138,27,888.8104,4.532014 +0.7047413,26,397.4317,4.317997 +0.8364552,75,366.4362,5.442106 +0.8720677,78,507.4042,5.575244 +0.8908936,64,713.2027,5.506109 +0.8166285,51,517.321,5.104816 +0.6565045,49,602.2967,4.711042 +0.7925262,27,43.26737,4.713331 +0.9016432,46,142.4901,5.405597 +0.8237432,37,112.9364,4.956212 +0.6777052,50,249.6319,4.781308 +0.9397628,44,116.4927,5.630913 +0.7341784,62,94.20431,5.111798 +0.6929476,61,14.01006,5.350054 +0.740762,86,974.9146,5.278999 +0.5808794,14,388.2787,3.518560 +0.7912621,63,532.4759,5.186615 +0.6266644,36,71.63259,4.466956 +0.6721112,45,252.2225,4.689743 +0.5568319,33,234.6669,4.226382 +0.7115908,38,835.0688,4.625388 +0.5007294,8,713.4759,2.793781 +0.9356461,65,800.8346,5.739674 +0.6431681,51,275.0588,4.726642 +0.6418362,30,783.4145,4.297577 +0.7584736,61,857.6538,5.078252 +0.9400944,68,808.2146,5.797917 +0.8150239,16,259.8427,4.214301 +0.5928511,25,884.6633,4.0527 +0.8235666,23,772.7027,4.52082 +0.7966892,100,173.8055,5.564043 +0.8403294,71,787.3465,5.397731 +0.6412425,45,936.1094,4.614527 +0.7763971,33,111.9587,4.725915 +0.6629552,67,97.09423,5.007628 +0.9173387,6,707.2925,3.775694 +0.7671331,5,428.4920,2.934431 +0.7318255,51,691.8642,4.891703 +0.9348959,48,464.1825,5.548811 +0.9217564,53,973.5796,5.518674 +0.6395493,32,814.8357,4.344956 +0.6595887,36,217.8564,4.494006 +0.7371668,79,601.646,5.218455 +0.8302437,87,993.3104,5.502131 +0.8564486,24,420.4169,4.674961 +0.7701998,76,656.015,5.263296 +0.6874573,47,608.4487,4.739844 +0.7121946,5,762.8256,2.769008 +0.7101067,68,554.8536,5.057617 +0.6214585,46,858.065,4.595565 +0.8607614,90,841.2433,5.61987 +0.6583589,22,568.094,4.076247 +0.6248519,16,359.5323,3.731892 +0.9475922,7,553.6634,4.161477 +0.9259968,89,677.8597,5.890037 +0.7219641,93,444.3312,5.305514 +0.866721,78,530.8345,5.555063 +0.895877,58,924.2145,5.455649 +0.7745198,83,239.1456,5.362005 +0.7279426,30,685.3133,4.479054 +0.6292672,5,652.6662,2.554493 +0.8621705,12,924.5616,4.119954 +0.7819186,96,730.1539,5.448783 +0.885565,90,730.3173,5.710649 +0.8552883,76,899.2516,5.488386 +0.6654058,86,486.6332,5.140343 +0.5998509,42,991.0918,4.485726 +0.8327136,54,536.8069,5.191774 +0.7425117,53,378.7974,4.952954 +0.7964822,75,952.3056,5.31239 +0.8088025,15,44.39403,4.251033 +0.6742135,36,860.2365,4.506043 +0.884635,39,389.9112,5.150668 +0.5918631,14,48.27244,3.582336 +0.9172598,17,29.02950,5.022216 +0.7190332,42,50.17895,4.837464 +0.5797433,60,961.7418,4.723679 +0.8932167,67,682.0348,5.54753 +0.6988684,85,423.5009,5.197771 +0.6357016,16,836.6406,3.749755 +0.6890077,32,461.3887,4.449031 +0.7588667,42,280.3290,4.825713 +0.5494846,55,47.56121,4.668146 +0.6874588,49,659.3741,4.770332 +0.6365405,66,737.9129,4.893803 +0.8233614,36,157.4156,4.91091 +0.5840611,60,124.7446,4.759483 +0.7339906,37,716.2325,4.655409 +0.7774252,44,334.844,4.901962 +0.6193005,9,940.9317,3.167399 +0.696985,26,88.31102,4.3444 +0.940315,59,700.5253,5.710277 +0.7377039,14,668.2784,3.865379 +0.913119,91,783.4478,5.83421 +0.5370352,14,440.6516,3.430929 +0.5327774,36,123.0329,4.263722 +0.648229,17,177.8754,3.844856 +0.6401825,64,575.8182,4.87999 +0.9480667,62,240.2785,5.85306 +0.8221232,31,667.1766,4.749486 +0.574851,16,771.9699,3.627125 +0.6598773,3,94.76652,1.993306 +0.7800032,26,714.9019,4.493196 +0.697495,32,653.2019,4.463514 +0.5867579,21,435.1138,3.895165 +0.6375613,18,609.9121,3.859645 +0.7611845,76,715.156,5.241431 +0.7984868,79,989.688,5.352595 +0.7752109,34,671.7063,4.689988 +0.8994018,22,624.0138,4.781058 +0.8005305,13,626.9485,3.975938 +0.6398316,55,286.0043,4.776561 +0.9424745,25,999.8135,5.127177 +0.5227684,13,699.9421,3.330973 +0.8779214,80,450.7731,5.617354 +0.917571,9,710.7334,4.149813 +0.8569605,99,590.8516,5.677787 +0.6843676,89,603.5044,5.196629 +0.733581,22,490.3643,4.245027 +0.8672448,26,182.8215,4.807842 +0.7397184,87,120.0428,5.35191 +0.5527422,23,235.8245,3.914409 +0.5820121,72,811.4327,4.863264 +0.9103458,29,548.7671,5.045708 +0.7945998,61,593.8792,5.170347 +0.5124122,96,562.5626,4.962827 +0.623792,51,197.2819,4.697112 +0.5217335,90,721.5645,4.929546 +0.8997264,24,919.2028,4.843187 +0.8411916,70,41.51056,5.664744 +0.7871999,5,232.2797,3.005849 +0.6698947,20,983.0028,4.016535 +0.7529359,84,25.78049,5.614619 +0.7208476,100,677.1795,5.346025 +0.5955761,18,635.3268,3.774734 +0.5967151,41,8.097904,4.849405 +0.7051689,44,680.4017,4.725193 +0.8043721,26,425.092,4.567816 +0.6045699,12,444.4552,3.420835 +0.9499069,68,96.17027,6.056731 +0.7528673,65,118.8346,5.174443 +0.5454412,32,666.9706,4.173194 +0.6051781,68,38.05244,4.970321 +0.9332288,77,568.6311,5.844464 +0.7542108,15,693.6439,3.968683 +0.7988791,42,207.1542,4.94052 +0.7200135,38,599.6341,4.646607 +0.6721438,49,389.8183,4.746427 +0.8592696,70,425.4091,5.462841 +0.7293571,43,247.9677,4.777638 +0.8784906,57,573.1369,5.382846 +0.8872626,60,518.9786,5.45521 +0.8542287,41,141.3212,5.121138 +0.8359833,60,26.23134,5.672828 +0.8527313,17,920.5974,4.37559 +0.5880137,61,823.1405,4.750736 +0.5841701,73,17.39604,5.082933 +0.61481,21,96.121,3.975453 +0.529416,91,166.0006,4.964893 +0.6913516,51,590.0996,4.809118 +0.8012878,63,291.3125,5.228858 +0.5019232,19,857.4837,3.645079 +0.8200012,68,28.59088,5.670121 +0.8115694,52,648.0865,5.100523 +0.9250571,51,160.3951,5.596079 +0.5669754,2,513.2984,1.109653 +0.6057292,64,150.8608,4.842164 +0.5911127,49,342.9278,4.597324 +0.8676585,14,558.4217,4.278688 +0.6736706,57,691.9278,4.855279 +0.897761,99,813.2623,5.818812 +0.8267767,46,228.8463,5.085301 +0.6035152,68,846.6566,4.85725 +0.7582057,20,242.3354,4.23916 +0.6485803,73,851.7446,4.987295 +0.5070576,79,756.7226,4.811436 +0.5045091,25,103.9773,3.906777 +0.6615933,25,756.1777,4.188058 +0.6169842,59,584.731,4.778306 +0.755264,82,2.038796,9.136763 +0.7341297,14,955.4349,3.854338 +0.7110796,100,249.6301,5.349031 +0.739534,90,239.7671,5.337524 +0.8744877,23,767.341,4.701607 +0.5994343,47,866.2662,4.572732 +0.5812632,27,242.8247,4.10473 +0.8300101,97,539.0103,5.585397 +0.7644073,77,93.01882,5.347438 +0.7088963,47,66.22171,4.870752 +0.761716,26,537.1646,4.448955 +0.8267095,51,146.2974,5.186344 +0.920754,6,883.9607,3.797106 +0.5645494,25,607.3827,4.001519 +0.7991966,61,233.9742,5.208985 +0.9370318,13,884.9198,4.590025 +0.9296204,16,614.5821,4.707096 +0.7483718,19,893.7514,4.154285 +0.87035,16,740.2796,4.396994 +0.6614598,3,704.9057,1.987768 +0.5755732,25,332.8273,4.025758 +0.8172683,22,533.8112,4.47024 +0.7023444,65,294.7561,5.02131 +0.8701465,78,502.7068,5.568647 +0.6377123,80,469.6564,5.039544 +0.8404908,72,49.64911,5.637678 +0.8580997,35,485.0983,4.96374 +0.8447534,84,954.432,5.521624 +0.8791155,26,796.0717,4.813707 +0.5021335,82,631.2578,4.83185 +0.864138,46,627.4507,5.17786 +0.6829586,100,381.9724,5.282529 +0.6399337,92,15.78762,5.45512 +0.892801,77,966.1946,5.631521 +0.7112448,93,557.9093,5.279971 +0.9059195,89,635.9542,5.79166 +0.6766005,45,865.898,4.682495 +0.8078958,82,484.666,5.414492 +0.9209267,5,709.386,3.620243 +0.5019439,34,358.7489,4.150157 +0.796657,22,698.0417,4.405835 +0.666716,67,518.8367,4.963378 +0.5832934,67,428.1866,4.817323 +0.6353169,50,160.2554,4.70964 +0.808612,24,875.6253,4.507879 +0.5622533,55,857.164,4.6292 +0.7769792,50,48.44318,5.144435 +0.7508037,18,215.6834,4.133351 +0.8904394,24,92.84264,4.901687 +0.7551548,8,796.5009,3.387813 +0.7183715,89,264.4048,5.28108 +0.7258366,88,963.9777,5.264218 +0.7143347,99,726.5095,5.32536 +0.8406081,83,836.4688,5.503172 +0.8187647,25,938.3164,4.569789 +0.8672593,46,313.6396,5.208531 +0.7980852,36,675.2051,4.793406 +0.8890563,58,892.8864,5.42769 +0.5277273,12,994.4026,3.26243 +0.5989106,60,404.3719,4.762745 +0.5224652,4,367.6047,2.031144 +0.9332694,15,366.5174,4.693619 +0.8910453,17,532.0215,4.541773 +0.742809,13,415.2074,3.816228 +0.6804219,49,587.299,4.75754 +0.6776288,11,547.1345,3.498423 +0.6405099,11,157.8323,3.42548 +0.7646327,30,314.6165,4.578473 +0.6431464,49,41.3123,4.794521 +0.6625404,21,192.0381,4.059123 +0.6285435,63,806.1845,4.844859 +0.5573989,47,505.8864,4.502889 +0.805001,40,903.4414,4.887536 +0.6460129,98,943.8153,5.190381 +0.8322745,30,99.25623,4.832698 +0.6887781,13,941.4417,3.677867 +0.9206663,47,952.5114,5.431576 +0.5918448,45,2.249338,5.900957 +0.7669543,39,634.4666,4.774106 +0.5947878,40,650.6587,4.440511 +0.6610799,98,738.0277,5.218904 +0.8867663,81,920.1037,5.641652 +0.6770999,41,660.3415,4.614517 +0.5231052,15,935.7127,3.467006 +0.9195054,66,973.0122,5.652802 +0.9458154,25,135.1134,5.245808 +0.6825682,18,518.101,3.957023 +0.7202741,31,954.2325,4.485164 +0.6372724,84,919.9869,5.067105 +0.6639058,94,535.0358,5.198697 +0.5768879,76,126.4520,4.922606 +0.6014787,98,379.4988,5.124203 +0.843094,26,599.521,4.683426 +0.745788,45,676.9461,4.830438 +0.8906488,91,755.4079,5.73699 +0.6100992,51,501.9635,4.657766 +0.8425603,61,661.1285,5.303181 +0.7462918,5,387.18,2.870519 +0.5925678,48,820.1916,4.577148 +0.6827127,75,374.9527,5.080066 +0.7781868,89,890.89,5.38604 +0.5066091,94,951.6413,4.936563 +0.7372862,90,806.7184,5.305063 +0.719858,71,201.6342,5.133828 +0.6634803,26,830.8077,4.223751 +0.6532852,63,685.4556,4.890671 +0.8625157,38,534.4332,5.037837 +0.9113472,60,437.6948,5.568579 +0.5088646,38,321.167,4.253789 +0.7771815,76,39.75654,5.505239 +0.8329044,62,524.4686,5.289855 +0.5650291,62,74.44416,4.768244 +0.8036751,73,829.7145,5.313832 +0.8067298,57,713.1123,5.151231 +0.8660429,3,628.0595,2.714821 +0.6403124,8,167.818,3.105184 +0.5834719,5,25.55454,2.491245 +0.5572141,15,912.192,3.532799 +0.6488088,16,908.6736,3.777065 +0.7077434,53,773.6298,4.868082 +0.5422179,92,392.5441,4.981776 +0.9266149,24,283.4202,5.020614 +0.934397,36,558.1984,5.341096 +0.7949,27,155.1294,4.600911 +0.7424595,23,666.7898,4.300019 +0.8616935,5,890.3192,3.286170 +0.6884716,12,873.8338,3.603543 +0.5995778,52,668.5873,4.651719 +0.8508779,54,410.018,5.255892 +0.6660627,75,879.4836,5.038071 +0.6070051,26,267.511,4.121184 +0.9190156,63,258.2150,5.667737 +0.7015881,80,761.3171,5.152116 +0.5142113,20,188.6005,3.720824 +0.6813229,93,817.4621,5.218213 +0.5267363,21,495.4859,3.781604 +0.7904401,18,243.0097,4.239977 +0.7043728,80,941.1215,5.155511 +0.7330856,28,214.5299,4.455344 +0.771847,40,761.3398,4.803051 +0.8222126,10,122.1747,3.845657 +0.6519614,52,676.2551,4.746188 +0.6944437,36,204.5020,4.568574 +0.8187647,9,639.2002,3.701892 +0.7374063,32,35.85045,4.713835 +0.643858,77,241.4941,5.035362 +0.7042147,28,781.8938,4.370234 +0.6143113,98,315.3997,5.149002 +0.944967,80,332.0912,5.973127 +0.7394078,37,842.948,4.666253 +0.8836379,73,903.33,5.560995 +0.6131344,14,725.1093,3.581661 +0.7558923,50,587.989,4.933226 +0.9276066,11,222.4321,4.416174 +0.6907774,97,309.7564,5.281169 +0.858821,20,501.4091,4.536867 +0.5517754,94,559.6398,5.009473 +0.7344678,31,542.87,4.522231 +0.6010437,2,644.5435,1.193663 +0.6390766,76,371.5618,5.008526 +0.6255595,8,534.3747,3.062646 +0.9056744,72,223.5716,5.699772 +0.8890962,72,173.6807,5.644737 +0.9489493,64,703.9186,5.826285 +0.8001742,28,105.0511,4.668771 +0.8885515,90,246.1473,5.766628 +0.9104312,68,907.543,5.628369 +0.7987321,11,748.0737,3.819856 +0.710524,91,97.95307,5.332649 +0.7085246,40,240.5481,4.676803 +0.5066204,29,770.7431,4.022715 +0.8146826,24,45.95264,4.681249 +0.7602707,76,8.387661,6.158087 +0.5249838,19,959.5517,3.687356 +0.8816273,38,889.53,5.102017 +0.6058824,83,365.8123,5.013899 +0.7755455,39,358.9888,4.805197 +0.803905,19,248.2879,4.324838 +0.7786487,74,795.3093,5.261867 +0.5892645,56,824.3645,4.688727 +0.7503843,59,146.3536,5.084155 +0.8878726,45,829.1219,5.248587 +0.7215956,45,586.8566,4.778501 +0.6683625,75,916.5796,5.041976 +0.8200763,11,655.7469,3.8903 +0.9290939,47,171.2948,5.557564 +0.8664462,49,687.7418,5.229077 +0.6709497,80,972.34,5.092141 +0.662782,11,260.5764,3.469753 +0.856763,68,72.66898,5.582224 +0.9451141,84,73.09254,6.229147 +0.5442873,34,625.0037,4.221118 +0.5587434,8,246.4427,2.919025 +0.6964054,7,884.3078,3.09278 +0.8280353,79,445.1356,5.446695 +0.9319106,83,83.3915,6.083346 +0.9094553,33,299.5859,5.154842 +0.7082671,94,916.572,5.275416 +0.5393918,46,441.9737,4.456249 +0.9006434,37,600.3707,5.172166 +0.7570982,51,3.471025,6.915447 +0.7251017,19,79.5184,4.152646 +0.7056264,15,538.5481,3.84945 +0.6071612,50,917.938,4.633409 +0.7963605,77,742.4764,5.333493 +0.6792351,15,444.376,3.789908 +0.8117668,31,414.1619,4.726513 +0.7630922,38,325.9708,4.756469 +0.8835082,57,859.4473,5.39423 +0.7853005,3,877.1259,2.371308 +0.5823137,32,137.8372,4.257573 +0.8698176,36,404.6398,5.032198 +0.6466369,3,76.42683,1.959759 +0.8688753,39,247.9359,5.105039 +0.911857,30,291.4432,5.098902 +0.7783195,55,21.39750,5.432208 +0.7999033,19,560.2088,4.298088 +0.8507938,89,975.0028,5.578287 +0.8241017,100,629.8307,5.585552 +0.5436256,22,376.0586,3.855056 +0.6320413,11,418.4698,3.396621 +0.7373736,92,27.8193,5.610314 +0.7955,46,330.8586,4.98233 +0.8829698,38,998.1991,5.105958 +0.8849295,63,727.0993,5.471034 +0.838828,86,77.1965,5.67457 +0.8527707,86,300.0162,5.594421 +0.5038315,70,206.4996,4.725505 +0.7296358,19,49.6474,4.200878 +0.6307941,34,957.3206,4.37594 +0.6606051,52,535.1912,4.764698 +0.5302261,42,398.8626,4.36944 +0.5320133,34,655.6624,4.199522 +0.717173,53,213.497,4.912165 +0.7287862,29,414.4081,4.459878 +0.8519769,40,395.7273,5.045371 +0.8458813,37,851.0596,4.953455 +0.5080707,21,542.4744,3.747078 +0.8051663,27,488.0093,4.597385 +0.7183791,64,716.7317,5.027853 +0.74227,54,722.8267,4.955939 +0.8676867,91,430.0528,5.667708 +0.7718417,16,637.8888,4.07256 +0.6280025,55,917.1669,4.742335 +0.8805145,73,291.5224,5.583936 +0.9136214,61,624.4414,5.579953 +0.6406982,39,63.4406,4.569391 +0.7158347,60,583.5661,4.978497 +0.8338452,90,533.1334,5.546689 +0.6402985,25,74.77586,4.190889 +0.8342987,15,943.0546,4.20576 +0.6310646,10,661.5494,3.299443 +0.8832602,16,427.1417,4.460933 +0.8367622,75,996.2516,5.420939 +0.7869439,40,632.3436,4.843514 +0.7270005,31,420.2332,4.508401 +0.7344772,37,232.4106,4.676147 +0.748638,28,576.1854,4.474753 +0.7833058,29,203.2394,4.613577 +0.9264593,94,401.6628,5.94759 +0.517303,5,91.09677,2.304455 +0.8696138,3,616.2727,2.733279 +0.6337402,96,20.0967,5.407003 +0.6865132,80,684.3764,5.124317 +0.8716307,34,857.9636,4.982612 +0.8256833,36,80.41628,4.974381 +0.7768496,100,922.0373,5.461231 +0.9348923,47,185.3694,5.588766 +0.9213014,59,715.2368,5.594296 +0.637975,47,960.5189,4.641537 +0.7403673,62,260.0004,5.072181 +0.888522,24,799.4427,4.793178 +0.7292344,81,333.3577,5.231112 +0.5112314,96,867.6153,4.959088 +0.6606651,48,740.136,4.701648 +0.8307073,18,575.5492,4.349796 +0.8462718,35,58.98953,5.070533 +0.9425635,4,623.8769,3.567630 +0.7125992,51,356.6673,4.860408 +0.719433,51,698.7236,4.865044 +0.8117532,67,123.0728,5.352249 +0.51242,13,494.2803,3.311685 +0.8207607,22,87.44027,4.552963 +0.7436482,32,212.3617,4.587393 +0.857994,15,814.849,4.293433 +0.8876703,25,357.3681,4.836751 +0.9342724,5,124.0048,3.764013 +0.8253175,2,505.8184,1.922227 +0.5419264,37,468.7642,4.287065 +0.8352296,49,595.4923,5.128307 +0.7760867,32,128.3048,4.69243 +0.5874936,17,628.5572,3.707673 +0.8402649,72,948.8077,5.404287 +0.8161572,35,549.248,4.826251 +0.5657067,75,14.10146,5.09065 +0.7584987,9,751.2792,3.512529 +0.8671165,44,395.8337,5.168171 +0.6058399,72,563.812,4.905976 +0.8298326,21,873.2819,4.467329 +0.7459137,2,764.5082,1.614097 +0.795002,100,483.403,5.515984 +0.5110326,35,590.3715,4.187442 +0.5340734,44,951.0518,4.408872 +0.7296615,4,321.1628,2.560116 +0.6477494,81,326.3393,5.072265 +0.7893775,51,766.0078,5.025427 +0.8201982,99,760.9333,5.56464 +0.8019888,56,156.5017,5.176328 +0.6829048,86,804.1223,5.166731 +0.6811957,80,395.5219,5.122117 +0.5937907,90,292.4034,5.054806 +0.6994597,75,591.3511,5.105359 +0.7505089,77,420.6277,5.236085 +0.7389941,70,134.9801,5.186518 +0.7474006,68,380.0116,5.143788 +0.9283534,65,871.1195,5.693591 +0.8853698,54,781.4963,5.36612 +0.6727283,50,98.73228,4.806432 +0.9024598,58,288.6449,5.52108 +0.9422723,48,601.0573,5.59093 +0.8320503,77,451.9414,5.44044 +0.7462295,52,463.9862,4.94351 +0.6709326,14,603.4235,3.706814 +0.7027618,56,633.9876,4.900411 +0.8641877,26,399.6143,4.767001 +0.9291702,100,940.3461,5.973414 +0.8258535,14,672.2688,4.121168 +0.813817,78,424.6809,5.399575 +0.8729098,22,278.2921,4.682318 +0.8000553,48,633.6019,5.012 +0.7571338,99,132.9017,5.47651 +0.585785,55,746.6153,4.669697 +0.5801946,49,803.9324,4.571639 +0.8304912,39,984.3345,4.941709 +0.9205222,49,108.9491,5.58668 +0.753516,41,940.5831,4.775568 +0.658206,12,818.7406,3.534411 +0.7980743,76,100.0541,5.42265 +0.8053866,43,924.0142,4.941535 +0.6634431,67,454.244,4.95901 +0.6276517,99,378.1968,5.176032 +0.9353756,16,152.446,4.803419 +0.7972733,24,216.8124,4.500071 +0.7848158,26,324.9694,4.517971 +0.924885,68,424.4133,5.725171 +0.8978605,35,36.21963,5.43976 +0.893118,59,16.27533,6.286604 +0.6643898,43,137.3643,4.656881 +0.5086009,31,757.6005,4.08214 +0.5289369,3,46.10701,1.668507 +0.6662625,100,811.5261,5.241232 +0.6849102,6,759.6397,2.899159 +0.6902612,59,737.0007,4.912149 +0.7061771,45,647.2657,4.74473 +0.667381,51,277.129,4.773309 +0.7089084,90,950.5108,5.24631 +0.726764,5,33.05932,2.874905 +0.932936,49,645.2856,5.539989 +0.8955401,36,128.7913,5.205502 +0.7664723,97,60.16786,5.574492 +0.6150861,41,680.7598,4.496292 +0.674237,67,329.4989,4.984961 +0.5336574,13,108.5183,3.364797 +0.760271,48,587.2861,4.913527 +0.7475153,29,444.9428,4.503107 +0.6400046,64,908.336,4.876023 +0.6650242,43,16.14885,4.913769 +0.6937891,80,561.2694,5.140687 +0.887406,83,32.14545,6.114019 +0.904731,2,377.119,2.365172 +0.8471754,19,624.3107,4.449655 +0.5666982,16,39.5771,3.662043 +0.9328277,11,480.6788,4.431356 +0.7922494,87,443.7334,5.417071 +0.8112987,95,226.9083,5.552231 +0.6133779,10,491.8312,3.261789 +0.6110203,68,785.7354,4.870548 +0.8970352,34,271.7124,5.11961 +0.8785843,67,798.9047,5.486443 +0.6724811,89,781.2876,5.171774 +0.6222045,16,807.4755,3.721919 +0.8502613,74,862.1943,5.455025 +0.5398314,29,411.4463,4.083856 +0.6792529,56,759.8733,4.852141 +0.6765828,24,468.7599,4.189076 +0.713825,69,830.8558,5.070837 +0.9256529,49,299.9408,5.524863 +0.5631582,20,253.5615,3.81113 +0.6424909,83,198.6384,5.092229 +0.7386519,76,21.18628,5.548556 +0.6851306,39,706.3514,4.591613 +0.7202942,62,387.4803,5.018255 +0.8902591,33,797.2625,5.037685 +0.5598123,7,790.0233,2.774130 +0.759497,10,520.5702,3.617932 +0.8977739,69,917.4554,5.580563 +0.729828,36,97.78912,4.682077 +0.5290516,15,958.4097,3.478331 +0.9282293,79,384.0795,5.847463 +0.8311524,21,158.7927,4.51141 +0.6868337,35,99.9053,4.557294 +0.6279094,49,79.26277,4.708953 +0.9039485,84,445.2753,5.756844 +0.898548,62,490.6054,5.526963 +0.8490779,40,810.5851,5.021547 +0.7652964,32,334.021,4.629276 +0.8686192,25,956.7512,4.739846 +0.6570135,70,142.3589,5.008457 +0.6120404,22,960.5204,3.980529 +0.6727586,61,732.1227,4.902816 +0.9390417,70,978.3288,5.805469 +0.6322727,65,42.49298,4.986196 +0.8420094,59,579.1828,5.28088 +0.8502256,57,885.6972,5.275624 +0.7768617,27,619.6548,4.516229 +0.5832149,72,206.8745,4.881147 +0.844921,63,888.1342,5.328041 +0.6436299,6,915.0828,2.795881 +0.7765341,94,958.9544,5.418364 +0.500027,83,214.0714,4.845321 +0.9493338,66,46.71093,6.250622 +0.5066988,9,639.482,2.930763 +0.7462216,11,396.7089,3.672843 +0.567244,52,520.2303,4.59758 +0.8421211,98,83.80207,5.765354 +0.8875776,32,428.5642,5.016232 +0.6608919,71,969.344,4.988638 +0.8039491,24,203.3197,4.522054 +0.8620975,8,511.9531,3.760100 +0.864312,6,502.6081,3.490271 +0.6693177,67,461.6307,4.969838 +0.5074913,77,596.7396,4.794191 +0.7032736,67,357.7343,5.0407 +0.8214841,35,854.0057,4.836031 +0.7366083,19,375.6881,4.133019 +0.6330116,85,361.0845,5.07839 +0.8963766,68,497.6582,5.579325 +0.9159304,52,604.829,5.484746 +0.6595075,7,986.7414,3.000678 +0.5753076,17,578.6994,3.68411 +0.5580612,50,856.1792,4.54921 +0.6553601,85,61.36344,5.201974 +0.900686,15,133.0886,4.539378 +0.6829527,86,544.1058,5.171349 +0.8457578,22,128.4829,4.613213 +0.9212189,71,304.4749,5.749921 +0.8918972,83,346.32,5.707472 +0.5864152,95,2.099936,6.718664 +0.5686968,50,82.45168,4.604964 +0.899514,11,82.5313,4.303197 +0.795062,72,482.2151,5.291828 +0.6483403,79,628.6701,5.046107 +0.7940012,97,252.8391,5.515253 +0.8008343,49,305.2234,5.045411 +0.8463603,89,591.3357,5.574033 +0.7679076,88,765.9055,5.356732 +0.6129822,86,190.9238,5.065058 +0.794287,74,65.87518,5.445131 +0.595042,22,736.6731,3.948656 +0.7492896,12,957.5914,3.755035 +0.5575823,16,953.6576,3.592982 +0.891035,34,198.4613,5.108404 +0.8700615,67,735.4535,5.456826 +0.6102607,74,615.7466,4.932702 +0.6442439,42,85.62474,4.617894 +0.9296985,6,933.5528,3.861461 +0.7083424,3,806.3799,2.120714 +0.8107343,46,923.9881,5.005333 +0.6170151,30,866.2096,4.249458 +0.5470541,19,480.3602,3.730668 +0.8595827,78,627.839,5.526631 +0.6772016,44,234.3043,4.684579 +0.6110317,58,695.5628,4.753752 +0.8653476,54,880.023,5.289088 +0.7431905,78,428.9381,5.228603 +0.8290363,76,533.6956,5.418502 +0.5193487,26,855.5284,3.952156 +0.8672889,90,488.9548,5.654752 +0.5127307,25,169.0594,3.915601 +0.7821378,91,451.9449,5.422582 +0.765217,30,465.913,4.572756 +0.821991,76,505.045,5.399814 +0.7502065,50,227.0218,4.941853 +0.5465306,12,906.6364,3.299862 +0.8074795,41,46.12214,5.096338 +0.7318816,61,239.4124,5.044108 +0.7379262,36,455.7286,4.648779 +0.7981295,71,324.1441,5.300941 +0.5761634,55,982.1628,4.652028 +0.5827038,70,810.1251,4.843766 +0.6060221,9,645.4407,3.139188 +0.929337,65,933.377,5.697937 +0.5944697,42,333.9487,4.483901 +0.5904768,42,39.00159,4.555614 +0.6237111,24,826.2296,4.077733 +0.7321938,99,546.025,5.365483 +0.8092262,24,113.7361,4.56686 +0.7384458,72,680.5146,5.154358 +0.7702537,12,562.1573,3.815985 +0.6441926,88,98.59672,5.168001 +0.7592311,29,482.56,4.530664 +0.5798336,5,606.1835,2.437498 +0.6674997,33,177.1550,4.446129 +0.7564904,24,553.4765,4.37112 +0.8303686,26,783.7082,4.638198 +0.7687771,99,716.0814,5.439636 +0.8210636,58,516.3427,5.208918 +0.8839874,13,236.9632,4.306785 +0.8675836,88,9.0463,7.04867 +0.5933452,12,885.4963,3.394909 +0.6987614,97,167.3294,5.31902 +0.6083984,32,348.0146,4.292166 +0.781873,49,182.8657,5.014807 +0.6179727,64,338.0714,4.846711 +0.5738579,28,887.2536,4.112514 +0.8718374,74,916.9767,5.52622 +0.695573,57,619.4104,4.899196 +0.7813837,45,763.106,4.914116 +0.7587202,56,243.6302,5.042987 +0.8526122,69,335.588,5.439119 +0.679438,25,3.925323,5.244888 +0.9018107,28,796.7149,4.970157 +0.9031522,60,560.215,5.521575 +0.620925,60,188.3965,4.815776 +0.5398193,23,962.0695,3.883163 +0.8001978,86,444.2741,5.429201 +0.8743729,85,382.2575,5.650717 +0.583254,25,654.4453,4.035908 +0.6820578,83,600.6018,5.143397 +0.7261496,39,706.9857,4.67826 +0.5349857,96,677.6188,4.996885 +0.8780665,26,145.6244,4.866995 +0.5110006,22,347.6669,3.795356 +0.9457965,31,497.3779,5.321787 +0.7104668,42,449.4024,4.706034 +0.926931,2,582.9908,2.539423 +0.6842416,48,820.8916,4.746617 +0.8984944,7,297.3639,3.820169 +0.5931354,16,962.1802,3.662621 +0.6215017,70,110.3659,4.950248 +0.5249559,9,451.851,2.968919 +0.6870519,78,313.5085,5.120267 +0.6895417,68,32.65226,5.201474 +0.6604548,62,818.0275,4.890735 +0.7258901,81,356.6513,5.222353 +0.8189167,84,452.3966,5.462345 +0.780193,75,79.63504,5.388074 +0.6710222,48,327.2395,4.731501 +0.8660183,76,809.9751,5.525832 +0.9385447,71,319.9745,5.852341 +0.8408653,45,476.6827,5.089412 +0.8506329,22,976.784,4.573917 +0.6274595,24,889.7172,4.084769 +0.7895091,91,31.23733,5.747325 +0.6720448,26,258.3145,4.253512 +0.6572791,76,163.3674,5.063448 +0.7308232,24,755.801,4.305953 +0.6334011,72,716.3932,4.951746 +0.875161,23,122.4376,4.770516 +0.6127634,92,978.5912,5.089453 +0.5246284,89,713.353,4.926033 +0.895216,15,353.697,4.469064 +0.7840556,2,170.7737,1.756434 +0.8611382,86,410.3382,5.609362 +0.5039933,89,312.2973,4.898963 +0.7011006,71,974.6255,5.064487 +0.7574644,99,511.3727,5.420484 +0.7464697,8,351.1746,3.36846 +0.9243401,74,892.4622,5.755217 +0.6147572,43,770.8194,4.532012 +0.9229638,52,813.2275,5.51579 +0.8206974,12,636.0771,3.9702 +0.7576767,21,246.3065,4.278102 +0.5283881,4,684.9849,2.043687 +0.6583222,39,346.022,4.54592 +0.6346257,96,211.0651,5.17961 +0.5608158,37,735.7256,4.317794 +0.7522666,60,914.4428,5.051786 +0.5487665,10,500.9638,3.125392 +0.6703224,94,579.5087,5.209303 +0.7221054,69,316.5972,5.103682 +0.8728384,10,63.56726,4.100998 +0.5574435,57,43.56925,4.718101 +0.8063746,62,131.3486,5.275156 +0.8943675,97,182.5163,5.864757 +0.6457493,5,430.6312,2.596322 +0.5910911,27,686.4856,4.114989 +0.659809,33,223.4219,4.424611 +0.5089013,37,85.17943,4.24973 +0.9337569,65,640.6944,5.733591 +0.8916446,68,81.18035,5.714367 +0.726869,88,469.9061,5.276224 +0.7227274,45,508.542,4.782788 +0.7008706,50,413.0376,4.818512 +0.5846127,3,629.5136,1.789435 +0.9457911,23,494.1918,5.106915 +0.7482145,76,977.4924,5.209178 +0.6433126,87,417.9693,5.110869 +0.5793081,29,982.1014,4.151251 +0.6934788,68,501.5589,5.025896 +0.6311162,48,915.3363,4.645259 +0.9031826,38,518.1569,5.206703 +0.856174,57,907.4092,5.294779 +0.6691795,35,226.9216,4.490414 +0.80142,93,697.1788,5.475566 +0.7584387,40,965.8347,4.768409 +0.8248351,38,591.9851,4.912069 +0.9428126,94,66.87335,6.314711 +0.7393929,32,643.1309,4.556659 +0.7509817,18,128.0423,4.150378 +0.944607,42,636.6847,5.51609 +0.6878091,82,735.6016,5.143399 +0.7364006,18,549.7353,4.082325 +0.5965991,73,703.3531,4.898591 +0.8115628,62,803.0491,5.221745 +0.6576455,82,477.9923,5.092711 +0.7706121,59,846.8496,5.082764 +0.6448159,65,988.0204,4.895462 +0.5759028,54,17.82405,4.816721 +0.5813438,49,489.6304,4.576707 +0.5037404,91,487.9228,4.911552 +0.8824765,13,813.0392,4.276511 +0.62344,75,81.9528,5.020752 +0.5867614,68,342.1725,4.836769 +0.8069038,68,679.784,5.276183 +0.8602681,89,264.0901,5.649063 +0.5375624,44,553.4245,4.416887 +0.5863542,75,189.5063,4.918604 +0.6014319,30,163.3551,4.237540 +0.734196,84,993.4357,5.248882 +0.6280806,44,466.1447,4.578057 +0.7870008,62,371.5928,5.172704 +0.5063825,14,845.189,3.369992 +0.7141679,39,317.1110,4.663328 +0.7700549,50,816.0496,4.962596 +0.7781668,81,587.8302,5.327848 +0.7701106,54,583.5682,5.022871 +0.8517387,17,358.7311,4.384958 +0.6512473,77,787.2048,5.030932 +0.6597704,41,623.5281,4.580925 +0.6045337,33,783.7763,4.303910 +0.6747628,65,275.5721,4.967814 +0.5754901,25,392.8563,4.02431 +0.5645206,4,78.64738,2.137807 +0.7526943,52,137.1844,5.000037 +0.8789649,41,763.2992,5.148074 +0.796924,51,58.16972,5.192775 +0.7044938,38,503.8397,4.615158 +0.5710955,43,426.3761,4.458341 +0.6121272,21,713.5597,3.941871 +0.8788232,25,983.937,4.780319 +0.9148775,11,63.67191,4.427849 +0.7441963,25,541.7408,4.373999 +0.8315873,82,310.8302,5.494771 +0.6930633,68,175.8612,5.051427 +0.6677114,31,610.1527,4.377058 +0.6290873,53,949.2253,4.716316 +0.7083651,67,177.3641,5.072448 +0.9437557,90,488.9657,6.019301 +0.8221788,6,101.5286,3.347645 +0.8082465,80,859.3798,5.387913 +0.8956217,31,760.4856,5.016639 +0.7809016,95,449.3862,5.44901 +0.6812002,17,164.7530,3.920066 +0.6770415,47,62.6635,4.800145 +0.6956216,54,702.0819,4.858225 +0.5366549,97,248.0049,5.016196 +0.8522364,42,803.0165,5.067515 +0.9384832,56,347.3381,5.689679 +0.8922538,100,325.7634,5.834656 +0.6228205,60,166.9741,4.822661 +0.7344996,76,784.5329,5.182257 +0.8145633,87,443.7463,5.474821 +0.5531538,26,108.4227,4.032707 +0.7911365,68,662.1342,5.236089 +0.8146687,46,745.2562,5.018899 +0.5045028,66,874.9952,4.67314 +0.640851,76,904.7578,5.002078 +0.8506346,21,911.0278,4.537878 +0.7239757,93,350.5313,5.315068 +0.6127368,28,218.7057,4.197065 +0.7262992,77,994.1657,5.172035 +0.8306157,30,895.4145,4.747346 +0.5229464,87,706.9792,4.906993 +0.6674732,91,347.1094,5.189795 +0.6238308,43,127.4031,4.577679 +0.7578883,49,72.34529,5.019715 +0.78206,64,247.9061,5.196063 +0.7060626,53,793.0226,4.86442 +0.6372835,15,378.8189,3.699193 +0.6513043,34,564.4485,4.41867 +0.9269004,43,806.0094,5.409004 +0.9135508,18,809.8735,4.696129 +0.5798318,49,812.5945,4.570963 +0.864919,17,580.5689,4.427441 +0.8151598,69,756.3115,5.306729 +0.7001978,67,902.1454,5.021915 +0.8482526,13,89.97161,4.201033 +0.6041064,73,262.3566,4.923191 +0.5754905,36,946.9922,4.320669 +0.8850153,77,726.441,5.60595 +0.8623828,64,202.0986,5.44658 +0.6556572,97,77.84997,5.277824 +0.751576,94,661.5748,5.367792 +0.7555403,99,118.5165,5.481632 +0.5605083,11,765.1715,3.243285 +0.545633,12,486.515,3.299668 +0.5149418,46,119.3487,4.42927 +0.7158448,21,82.71454,4.213274 +0.87695,16,805.7746,4.423861 +0.5104682,85,685.208,4.870765 +0.7702164,39,788.6638,4.779683 +0.5417859,11,694.7184,3.205555 +0.6259542,62,558.4269,4.831414 +0.7254502,8,903.2036,3.305184 +0.5322428,19,448.2684,3.703109 +0.8516168,21,844.6598,4.542132 +0.7967247,81,216.2363,5.405972 +0.6988626,80,398.184,5.156267 +0.833163,24,220.3202,4.611781 +0.9120844,14,544.9784,4.493611 +0.502613,89,313.4999,4.896737 +0.6447795,52,7.163189,5.317785 +0.9164835,25,225.1239,5.001143 +0.7750148,50,358.1708,4.988486 +0.9164688,86,323.5733,5.847662 +0.8563804,73,91.323,5.596053 +0.8697922,42,991.5779,5.126615 +0.9432807,64,453.3479,5.799377 +0.9311001,80,103.5973,6.007708 +0.84446,67,251.8546,5.404865 +0.6635903,20,436.5115,4.008136 +0.8023665,15,670.167,4.105092 +0.7924662,79,943.1383,5.338195 +0.8786404,44,880.9335,5.194768 +0.9433458,72,847.0615,5.856031 +0.6966925,84,899.6899,5.175258 +0.6961606,77,572.1535,5.118006 +0.6924574,16,650.4595,3.874692 +0.9265463,25,661.6503,5.024829 +0.6437473,13,478.7481,3.579849 +0.5920152,35,370.9993,4.333462 +0.7307583,80,895.2044,5.208895 +0.6856924,81,303.132,5.145253 +0.8606019,57,188.5887,5.363111 +0.6598683,22,774.669,4.077506 +0.8261763,32,297.7024,4.802724 +0.8439954,7,778.95,3.553677 +0.8775046,82,465.4186,5.631184 +0.766783,81,881.4362,5.295545 +0.7614452,2,817.9402,1.668020 +0.8634684,70,977.549,5.45882 +0.6649203,92,541.7072,5.18534 +0.8888453,31,648.309,4.989178 +0.9191742,96,278.8759,5.942768 +0.6181284,38,673.0179,4.442334 +0.5762689,58,465.1237,4.696843 +0.8854675,82,929.2616,5.644522 +0.5881515,8,892.8005,2.978079 +0.5335778,10,528.7554,3.094167 +0.6367293,77,205.4550,5.026452 +0.6616144,75,799.0715,5.030716 +0.6048582,38,636.1787,4.418348 +0.8995238,30,970.224,5.007292 +0.6125322,42,38.40748,4.607011 +0.891409,32,725.0784,5.021755 +0.5125611,13,124.2224,3.320415 +0.8535288,71,96.49186,5.557986 +0.8477504,10,847.9913,3.902614 +0.6988878,32,432.6877,4.470823 +0.6028712,81,661.689,4.984862 +0.6450516,6,527.1702,2.800764 +0.5884289,64,623.1206,4.788881 +0.8519591,94,654.6818,5.625326 +0.5619964,37,966.9962,4.31885 +0.5579332,41,643.9374,4.395229 +0.6932872,91,407.4764,5.235375 +0.8612836,67,490.0358,5.435572 +0.5966854,73,474.3225,4.902069 +0.704552,51,421.4517,4.840551 +0.8476425,22,486.5986,4.572071 +0.7455392,38,414.5594,4.709415 +0.8924924,54,406.7609,5.41228 +0.8657634,48,108.6856,5.306214 +0.8560119,72,307.5698,5.483292 +0.838315,27,158.7666,4.737385 +0.7618864,59,65.95942,5.182572 +0.7062403,37,541.1921,4.597449 +0.5729077,11,26.03542,3.336355 +0.6253862,5,929.4751,2.544401 +0.919899,84,661.6104,5.820895 +0.701458,50,923.4494,4.810711 +0.601871,15,289.9652,3.627385 +0.7481714,48,373.6807,4.893143 +0.7421667,60,804.6881,5.030723 +0.9165294,21,968.5381,4.829235 +0.7708394,93,859.6188,5.399452 +0.6857544,59,108.6902,4.954433 +0.8683556,16,234.4982,4.412145 +0.5154821,4,609.3116,2.01444 +0.8063035,44,448.0451,4.971776 +0.7653335,48,548.0994,4.92658 +0.800019,87,625.9536,5.428938 +0.6377652,28,644.537,4.234561 +0.7187339,44,338.4984,4.763994 +0.6851251,32,243.1097,4.451062 +0.6022412,49,916.9572,4.609347 +0.6934007,23,519.9725,4.189089 +0.6338835,8,207.3362,3.087767 +0.8626223,18,979.8857,4.45892 +0.6755484,73,703.2272,5.038301 +0.8819856,100,183.9347,5.83262 +0.7952068,13,281.5281,3.970075 +0.7492558,34,689.2815,4.626091 +0.689057,83,75.17532,5.240701 +0.7983914,96,711.9366,5.48896 +0.8984775,14,973.5494,4.413143 +0.8141442,39,231.5305,4.924353 +0.927646,55,854.625,5.57916 +0.5626983,30,684.469,4.150555 +0.7940533,28,398.7971,4.597789 +0.8263922,74,727.1975,5.38656 +0.9274736,27,920.6118,5.081359 +0.7471762,63,895.0358,5.07554 +0.7025308,49,451.5482,4.805477 +0.5272053,18,164.8201,3.651766 +0.8319172,40,758.38,4.967654 +0.8407389,92,280.317,5.604963 +0.6721226,40,6.242629,5.294283 +0.6011962,76,675.616,4.935894 +0.5040908,82,219.5354,4.842745 +0.5521607,6,234.1007,2.589530 +0.7266228,24,46.95129,4.402272 +0.8604109,36,333.7737,5.002898 +0.8973122,66,524.181,5.561721 +0.5554781,48,787.1215,4.513639 +0.6098639,53,319.3389,4.691742 +0.8863365,83,519.4829,5.669461 +0.8581715,96,536.0489,5.664068 +0.7726931,98,199.6556,5.481125 +0.7523195,40,783.0637,4.755842 +0.5606664,45,776.2248,4.472297 +0.7087404,100,453.8624,5.328639 +0.7956351,55,504.8159,5.102364 +0.816261,67,773.2044,5.289053 +0.8999163,92,420.2012,5.800766 +0.6197997,3,506.0942,1.878208 +0.6030411,33,786.2126,4.301144 +0.833885,85,995.8172,5.496898 +0.9029965,88,937.1946,5.762388 +0.8393617,64,63.50675,5.494906 +0.9094628,41,121.4946,5.379464 +0.8082,49,983.7319,5.043322 +0.8964454,46,638.3635,5.305559 +0.5779769,61,192.9905,4.749822 +0.8953077,99,750.7118,5.810478 +0.581519,22,535.7868,3.924285 +0.9164601,24,945.2403,4.929528 +0.8705304,55,339.1753,5.344138 +0.7342698,10,61.29176,3.600732 +0.7701855,63,524.8687,5.135257 +0.863639,18,860.5287,4.46405 +0.8513909,79,921.4234,5.501578 +0.9324593,18,963.6303,4.811038 +0.9403725,92,512.2976,6.008025 +0.7510038,16,726.3639,4.016014 +0.6960944,78,175.0947,5.157011 +0.6724534,82,183.5058,5.143424 +0.8803488,29,765.2642,4.901266 +0.9448258,94,209.1915,6.114054 +0.8993888,13,662.1018,4.360755 +0.7814681,54,156.3016,5.093745 +0.740741,3,390.4553,2.222361 +0.6476472,99,141.3868,5.240183 +0.6141115,21,526.9791,3.947356 +0.6393056,31,909.5848,4.318396 +0.8372989,9,87.88783,3.819755 +0.8913588,42,525.3397,5.223824 +0.7460777,97,749.0455,5.375651 +0.5112242,26,501.4006,3.939324 +0.7577458,4,659.9605,2.643840 +0.5752648,35,388.7491,4.302567 +0.69794,61,652.5404,4.95284 +0.9204288,8,829.281,4.062277 +0.8043629,61,921.2296,5.189422 +0.9433404,98,119.9997,6.206997 +0.8913393,73,235.3741,5.64058 +0.5868418,24,200.3035,4.018163 +0.6991804,42,813.9534,4.675992 +0.8727032,28,115.8981,4.919729 +0.9020416,21,939.1495,4.752712 +0.830164,78,445.4839,5.444142 +0.8304871,63,98.00515,5.389406 +0.8657783,67,686.2381,5.443104 +0.870506,51,183.5218,5.322739 +0.8817822,40,470.2017,5.15173 +0.5152709,11,504.1909,3.153231 +0.6023214,34,410.1415,4.328208 +0.708448,17,340.4375,3.970749 +0.9284348,78,900.37,5.811991 +0.8747284,41,79.9742,5.264772 +0.7587422,93,879.5506,5.37222 +0.81904,34,973.761,4.805789 +0.8129114,37,59.32467,4.991653 +0.6677408,14,262.6832,3.706778 +0.5907886,29,692.5856,4.173685 +0.6851459,68,326.6066,5.01713 +0.7346132,39,449.1581,4.702737 +0.6277834,44,188.2139,4.592086 +0.857076,79,228.5752,5.565726 +0.7489966,44,331.7083,4.83284 +0.6398296,58,686.1311,4.805169 +0.7281883,54,245.0005,4.945851 +0.61747,83,262.5449,5.039826 +0.6492152,56,272.5927,4.808709 +0.9269381,25,711.9383,5.025897 +0.7535203,74,871.2197,5.203336 +0.8108911,38,654.9283,4.869824 +0.8137289,82,277.0395,5.448624 +0.8100311,4,870.7871,2.823736 +0.9225277,79,451.9067,5.808043 +0.8175055,83,875.792,5.43713 +0.6985237,65,263.3531,5.016426 +0.8551307,66,156.4809,5.461053 +0.5031995,86,7.001363,5.14592 +0.7062228,81,695.2352,5.170916 +0.9492496,81,170.2286,6.075235 +0.6817957,56,515.211,4.861132 +0.6240201,92,331.1661,5.120305 +0.8650343,61,935.077,5.371217 +0.6146213,88,46.13228,5.165465 +0.9255326,43,735.5249,5.402824 +0.8170676,83,930.0177,5.435128 +0.5741391,5,645.2055,2.424253 +0.6910738,64,560.4809,4.975904 +0.5667899,3,781.4491,1.745705 +0.6861743,41,934.9234,4.630133 +0.8817557,85,164.7456,5.732311 +0.6339924,22,542.5813,4.026713 +0.6946548,5,854.4328,2.720764 +0.7252389,25,47.75734,4.431607 +0.7248704,81,953.853,5.204872 +0.6368351,80,951.1507,5.031408 +0.780265,18,810.2112,4.193673 +0.6341829,34,150.5378,4.406329 +0.9303506,5,552.1346,3.693135 +0.8295861,30,611.3115,4.748776 +0.800437,23,167.5824,4.484621 +0.5951078,87,539.6616,5.024872 +0.6653801,20,549.5701,4.010106 +0.6656014,22,913.4959,4.088659 +0.9053822,25,937.0722,4.901416 +0.8449916,30,823.8114,4.794852 +0.6178617,24,945.78,4.065802 +0.5110322,72,569.7987,4.750247 +0.6529969,92,117.9059,5.207349 +0.9252288,41,941.357,5.363595 +0.9405128,87,402.2649,5.984612 +0.9123847,3,119.6966,3.015796 +0.610349,94,444.4629,5.107595 +0.6394546,96,102.4159,5.218884 +0.706229,86,170.1007,5.248948 +0.7921645,3,803.7297,2.396599 +0.9096007,88,482.1117,5.810334 +0.8948665,73,65.74187,5.824915 +0.931119,68,116.2202,5.876182 +0.9165443,50,655.079,5.459218 +0.6190295,22,607.6026,3.996217 +0.9054205,97,967.335,5.835145 +0.8613796,80,361.8505,5.56635 +0.6320835,95,473.5218,5.151439 +0.6012724,51,913.223,4.638169 +0.5516284,74,14.16722,5.037012 +0.8876435,44,426.4689,5.246741 +0.8209103,26,568.8558,4.612582 +0.7733602,28,610.5125,4.535907 +0.5438819,12,284.5485,3.298577 +0.6699824,89,343.1282,5.179079 +0.7670792,75,877.652,5.243034 +0.856828,73,514.2097,5.477684 +0.6147122,17,344.4332,3.765827 +0.5102219,13,897.3323,3.306147 +0.8687245,52,85.07123,5.408425 +0.6356558,41,655.0069,4.534577 +0.607294,78,252.4761,4.977811 +0.6605997,68,380.34,4.967165 +0.6970468,99,412.926,5.300827 +0.7371676,20,761.8237,4.170572 +0.8613029,48,949.6652,5.191448 +0.7518092,57,25.86171,5.303964 +0.8428192,94,605.0885,5.599075 +0.7754938,22,904.471,4.345341 +0.5720353,82,105.3506,4.975982 +0.8558049,75,827.7432,5.482474 +0.8848964,64,442.2547,5.494559 +0.7725104,63,300.7922,5.154277 +0.6358212,60,676.6013,4.823146 +0.8280062,92,957.2909,5.533657 +0.5019211,18,683.6793,3.596421 +0.7994588,97,325.9287,5.518704 +0.6258279,10,352.8465,3.290894 +0.7595384,81,112.2573,5.354279 +0.898181,89,697.1813,5.755352 +0.5527367,6,865.4217,2.587159 +0.6229918,43,282.1226,4.557137 +0.5935787,90,214.6085,5.060573 +0.8400638,36,883.338,4.91393 +0.7590297,81,421.8259,5.290432 +0.8063303,11,98.57122,3.888847 +0.9430843,5,19.57140,4.149973 +0.6029501,27,792.172,4.136586 +0.5844242,64,290.7809,4.789975 +0.8108061,15,392.7209,4.137662 +0.5286417,14,965.8804,3.412557 +0.5333612,94,692.2099,4.97916 +0.7492556,69,983.1755,5.143672 +0.926265,15,476.2882,4.638733 +0.901209,6,680.2512,3.675874 +0.5610927,42,669.7171,4.419549 +0.5780818,48,396.2899,4.556932 +0.761414,30,31.87208,4.754897 +0.7238886,52,252.8219,4.907474 +0.8668956,6,686.2334,3.499596 +0.6828703,56,660.588,4.86045 +0.930659,17,121.4522,4.836156 +0.503826,12,823.3895,3.215834 +0.7849627,85,525.2481,5.379389 +0.8966239,84,598.0863,5.715069 +0.5897803,74,21.46131,5.072482 +0.5022443,68,429.8997,4.69497 +0.798633,54,655.1404,5.092552 +0.7352211,86,161.5042,5.314463 +0.6972101,3,406.9489,2.089562 +0.7888295,34,949.8539,4.721846 +0.7582605,77,560.0893,5.247737 +0.6223786,75,389.7527,4.968524 +0.6780707,67,432.9265,4.987482 +0.8433638,46,590.8193,5.108756 +0.8183657,29,757.525,4.685691 +0.8324944,20,900.0447,4.436677 +0.7936328,36,495.8806,4.785875 +0.7604421,8,317.4111,3.409744 +0.722952,51,47.86064,5.007258 +0.7312193,80,784.4329,5.211266 +0.7637257,45,218.7267,4.897432 +0.7031336,65,577.7302,5.010621 +0.886668,9,434.1708,3.983958 +0.939302,13,614.371,4.612743 +0.8505232,65,935.7227,5.366438 +0.8110883,48,767.812,5.039261 +0.6221106,48,331.0559,4.638021 +0.9313041,23,79.16897,5.136056 +0.632553,99,572.1408,5.178838 +0.6117593,62,895.7685,4.803032 +0.8212386,84,405.0264,5.471996 +0.5869189,65,147.9002,4.819915 +0.7997307,32,334.5291,4.721025 +0.6555177,53,274.5379,4.77934 +0.5538914,26,130.3128,4.030347 +0.7199913,91,864.055,5.276691 +0.9277619,75,665.7905,5.790155 +0.9266476,91,118.5833,6.043288 +0.8831789,55,14.28143,6.25009 +0.6372527,89,74.82464,5.18037 +0.75038,75,634.4639,5.209853 +0.8406942,28,641.8783,4.731309 +0.8768606,37,974.1806,5.062729 +0.7979076,28,565.2656,4.60292 +0.8365606,35,939.8184,4.881241 +0.7960196,84,160.4486,5.44722 +0.8787808,17,712.3158,4.482225 +0.5333636,32,338.1081,4.155507 +0.647125,32,484.6652,4.363403 +0.8641002,5,411.5565,3.302591 +0.7868153,30,324.2991,4.636093 +0.7962481,54,56.46181,5.23915 +0.8145667,10,880.2147,3.783172 +0.5658414,58,782.1528,4.675848 +0.9341618,51,552.7404,5.579226 +0.6841805,57,138.5348,4.912799 +0.9119638,53,161.4325,5.547657 +0.5188456,27,33.57959,4.037935 +0.757641,73,730.3337,5.205093 +0.9349815,18,982.9337,4.828403 +0.5066024,6,485.5756,2.487666 +0.5979052,67,867.3325,4.836706 +0.8607715,41,775.3904,5.08006 +0.7254145,87,609.8498,5.260913 +0.7255659,100,961.0768,5.351339 +0.5150924,99,445.5918,4.990515 +0.5446147,28,289.2843,4.065534 +0.9469407,99,475.0219,6.103677 +0.7343403,80,926.2906,5.215986 +0.5975759,29,512.1599,4.188007 +0.837378,9,599.9462,3.769414 +0.9442889,59,495.7354,5.749563 +0.8250957,97,715.8522,5.565506 +0.6550313,90,432.9978,5.15527 +0.7075834,9,212.4720,3.386328 +0.7454893,24,390.3709,4.348304 +0.695866,36,249.5993,4.56663 +0.60671,22,336.0653,3.976246 +0.8412084,9,965.9642,3.780548 +0.6861445,46,171.8996,4.746207 +0.9261788,43,673.9801,5.40854 +0.861084,90,308.0283,5.651429 +0.7909505,83,304.5175,5.3931 +0.5625539,3,679.3792,1.735618 +0.647025,10,605.1443,3.335524 +0.921531,93,231.2533,5.948928 +0.9164885,67,188.4395,5.720053 +0.7676392,83,989.0182,5.31298 +0.5940685,10,497.944,3.220156 +0.8676697,32,789.5488,4.924061 +0.7076742,29,67.17613,4.479062 +0.6318245,52,265.5441,4.720642 +0.571069,65,8.232299,5.137 +0.7430801,81,823.1498,5.244276 +0.7164226,8,284.3927,3.288375 +0.5729531,38,622.0593,4.361272 +0.5541727,55,264.4454,4.62462 +0.948875,15,670.5908,4.803963 +0.768947,100,119.684,5.521015 +0.921052,46,131.9058,5.519767 +0.568908,55,421.9705,4.64489 +0.5640359,47,556.3127,4.513669 +0.6904132,68,801.1595,5.014499 +0.6086555,12,922.6924,3.426733 +0.6123029,39,873.346,4.450664 +0.5088076,91,517.9313,4.919105 +0.87053,35,798.1675,5.000599 +0.8372315,14,616.9215,4.161282 +0.8365753,44,889.9804,5.049199 +0.6835763,100,733.1015,5.273686 +0.7802409,41,47.49915,5.001162 +0.7647672,98,640.1398,5.425595 +0.9454551,71,637.387,5.869999 +0.8679253,35,22.26791,5.454062 +0.7313009,100,178.5980,5.40588 +0.6704843,23,444.0414,4.141148 +0.659972,35,880.514,4.455541 +0.7058613,44,697.5712,4.726399 +0.762979,66,935.1429,5.143505 +0.7887987,58,50.98269,5.287288 +0.8073858,99,622.5568,5.534763 +0.6100832,79,867.3335,4.977132 +0.544471,3,459.738,1.692861 +0.8465874,95,196.6390,5.666055 +0.683948,55,459.1472,4.853582 +0.9185709,49,650.7622,5.456321 +0.5765227,5,679.4412,2.429649 +0.6383592,62,148.6722,4.880552 +0.6025905,56,325.3961,4.720113 +0.8848486,97,97.54827,5.90136 +0.7362832,26,218.8576,4.402630 +0.5784452,59,492.3637,4.71295 +0.6147081,36,333.0535,4.399336 +0.6825984,7,352.4882,3.06174 +0.9282963,26,169.3765,5.122438 +0.7680785,6,227.9232,3.141793 +0.5355871,43,347.3572,4.398321 +0.6693587,54,436.3146,4.812174 +0.773232,92,549.7613,5.404733 +0.6195498,69,980.2326,4.894582 +0.8400778,99,893.5253,5.617641 +0.9255642,70,761.4745,5.729276 +0.9080847,82,792.9793,5.742875 +0.522612,6,565.2858,2.521984 +0.6417358,47,183.7160,4.670733 +0.7013078,51,383.2288,4.83544 +0.7069545,56,436.4764,4.914058 +0.8542498,80,547.3648,5.529451 +0.509647,4,174.7376,2.004169 +0.934806,45,835.8438,5.488301 +0.7056071,4,688.9132,2.487025 +0.5115704,38,343.0629,4.258021 +0.8745496,20,267.9963,4.615004 +0.7428874,92,849.7082,5.331239 +0.624939,92,874.5263,5.110626 +0.8117291,78,619.3193,5.385168 +0.7642174,66,806.5085,5.147957 +0.5821417,25,235.8559,4.041735 +0.8256269,52,266.7959,5.164253 +0.882332,73,784.2244,5.558549 +0.6688183,56,96.3575,4.885902 +0.708993,92,537.4415,5.268645 +0.8660636,24,719.5138,4.701973 +0.5982325,52,796.4927,4.648324 +0.7785366,68,250.1605,5.229993 +0.8040057,6,204.6433,3.262558 +0.7114325,15,137.4441,3.885444 +0.918715,91,280.5756,5.905105 +0.77819,59,306.9236,5.120643 +0.7177611,89,459.1009,5.265906 +0.8641408,80,883.2309,5.552217 +0.5843685,24,252.8853,4.010388 +0.8850618,47,743.1372,5.269393 +0.5108136,14,170.1100,3.385231 +0.6256445,95,433.2858,5.141522 +0.8231917,79,441.6427,5.433135 +0.640841,20,919.4517,3.956233 +0.7994082,23,379.5856,4.457961 +0.8731463,64,95.10218,5.562394 +0.6484933,79,495.9768,5.049098 +0.5221934,40,259.5452,4.319939 +0.8810941,68,133.8570,5.596386 +0.5679002,35,538.902,4.287083 +0.8011864,2,146.2337,1.825452 +0.7634377,45,64.61275,4.981885 +0.9138625,24,81.08869,5.048115 +0.8308868,100,747.8617,5.600978 +0.9327479,50,626.0069,5.553264 +0.93067,33,997.0507,5.243978 +0.7921992,82,626.1785,5.369069 +0.6689989,8,817.166,3.162716 +0.8045147,78,872.6406,5.360772 +0.9334461,16,676.6,4.731911 +0.5758246,17,405.8145,3.686859 +0.9492571,89,128.8834,6.178498 +0.7000412,73,409.276,5.09306 +0.7811956,82,837.8587,5.33799 +0.6075243,33,233.9159,4.320678 +0.6513116,24,423.5256,4.137315 +0.7313515,14,853.3903,3.847889 +0.8564085,22,693.0677,4.598462 +0.7045416,63,136.4036,5.031386 +0.8711795,30,532.752,4.895991 +0.8020238,93,548.076,5.481821 +0.7703214,78,15.85805,5.814334 +0.6343191,27,128.4217,4.22205 +0.5738696,66,728.534,4.786255 +0.5966273,62,174.4677,4.797729 +0.6545792,88,954.4501,5.130017 +0.9350415,76,378.4156,5.864486 +0.8698155,88,643.2018,5.641198 +0.7418213,57,397.9183,5.003477 +0.6666204,16,693.6469,3.816609 +0.939269,32,410.4561,5.301479 +0.9056354,75,338.3497,5.70178 +0.7204378,96,104.8828,5.387561 +0.7352106,34,780.4859,4.592326 +0.604017,95,810.4942,5.098799 +0.5039632,100,229.6094,4.986289 +0.6678024,57,352.7455,4.852644 +0.6667347,61,620.592,4.892999 +0.7025512,35,866.2715,4.542347 +0.5823673,29,788.9539,4.157619 +0.7236481,100,242.7644,5.375992 +0.5487022,92,974.0744,4.986154 +0.5448123,5,572.2373,2.357788 +0.731591,73,525.9038,5.153309 +0.7486298,69,940.0264,5.142729 +0.8496939,32,712.1147,4.861084 +0.6722585,5,501.8601,2.663167 +0.5801296,69,207.4424,4.844236 +0.7432576,62,787.7531,5.056841 +0.6214598,33,23.85876,4.484477 +0.7875473,58,213.6908,5.145776 +0.642812,29,521.653,4.274674 +0.5335032,4,930.6728,2.055084 +0.7630798,81,908.8545,5.286844 +0.7369504,28,922.611,4.442898 +0.6428282,27,484.1696,4.216783 +0.6357108,74,283.3895,4.988065 +0.7164243,78,447.3305,5.171399 +0.7709437,55,372.3491,5.046897 +0.6852679,28,335.7585,4.338118 +0.808534,58,340.6183,5.184588 +0.7136241,62,718.4628,4.995206 +0.8177113,80,915.472,5.412148 +0.8319302,87,626.84,5.514708 +0.7422361,93,405.5656,5.349856 +0.6930993,81,146.8204,5.185964 +0.8682528,58,844.0453,5.349434 +0.7270226,100,424.7374,5.366699 +0.7914932,61,688.2172,5.160086 +0.5900729,27,767.5824,4.112602 +0.7003193,89,642.763,5.226167 +0.6651674,74,857.3294,5.027037 +0.7184364,63,284.3633,5.033157 +0.8324358,41,342.2922,5.003632 +0.5031346,67,438.8357,4.685145 +0.5825579,41,785.6322,4.437242 +0.7942139,23,211.6097,4.457539 +0.845134,6,783.0932,3.404465 +0.6857612,48,137.6217,4.786544 +0.7278745,10,717.0041,3.530233 +0.5885082,82,145.7116,4.994707 +0.6388615,30,770.114,4.291878 +0.926036,14,461.9188,4.58259 +0.6847766,27,422.8900,4.304487 +0.752521,85,811.802,5.298064 +0.7488061,63,189.1322,5.115276 +0.6599034,73,59.11036,5.103032 +0.6267682,35,710.3962,4.392984 +0.932423,92,361.4332,5.974252 +0.5922226,21,432.1012,3.905775 +0.8041683,90,853.5206,5.457261 +0.8005206,44,587.8442,4.950966 +0.927466,9,107.028,4.281798 +0.8202604,62,634.5662,5.249415 +0.803947,75,605.6371,5.33821 +0.6912899,47,671.1496,4.746582 +0.8335924,21,559.5399,4.484684 +0.5509898,3,283.7228,1.709308 +0.8715196,51,212.7831,5.317158 +0.6696205,18,518.5567,3.928592 +0.5242603,30,218.4836,4.089194 +0.609197,84,56.53437,5.101272 +0.7185949,92,848.8469,5.281629 +0.7343257,73,626.3547,5.156428 +0.865474,56,506.3368,5.32564 +0.5027801,93,974.2632,4.922927 +0.7855868,21,950.671,4.334514 +0.6107691,81,541.3309,5.000013 +0.5547765,49,494.3407,4.53091 +0.7692043,88,362.1617,5.375039 +0.9403376,49,752.7243,5.585192 +0.829064,60,478.2757,5.257702 +0.8601706,25,166.6052,4.754331 +0.6196904,43,304.0243,4.549829 +0.5717478,25,858.482,4.013487 +0.693023,20,335.4159,4.075407 +0.8598185,31,330.6993,4.889496 +0.6915085,37,69.03833,4.636358 +0.8468429,85,300.6356,5.567331 +0.5777309,21,91.25657,3.900269 +0.5987378,42,114.1785,4.513828 +0.564499,18,18.32179,3.827946 +0.628622,71,219.1825,4.950753 +0.9445081,23,707.8417,5.088072 +0.9388601,19,386.5834,4.917079 +0.8643879,47,592.6865,5.195143 +0.7737825,21,473.8053,4.309089 +0.7264336,9,615.857,3.425729 +0.9412087,84,400.5238,5.967095 +0.7427203,48,997.1332,4.867639 +0.7715587,85,657.4747,5.343616 +0.6399763,7,534.5213,2.955814 +0.6063786,26,711.9156,4.112105 +0.7256356,78,949.8124,5.18012 +0.6477573,47,895.3827,4.66007 +0.7986201,31,18.21264,5.083396 +0.750134,88,414.8571,5.328381 +0.5923543,14,92.57298,3.560902 +0.6832271,73,685.9445,5.053047 +0.7574562,43,151.873,4.863263 +0.677596,100,414.4082,5.270896 +0.6682776,89,907.168,5.162828 +0.9330502,96,284.6103,6.02071 +0.5842748,51,469.3508,4.612856 +0.8787779,81,401.5259,5.633028 +0.7580647,77,669.1351,5.244463 +0.8872826,87,650.057,5.6979 +0.8779282,62,661.6712,5.435085 +0.8914228,41,453.3747,5.2109 +0.9347915,49,936.5544,5.543634 +0.6613053,84,493.9254,5.116008 +0.5915268,55,993.0702,4.678128 +0.8180775,53,480.8366,5.137994 +0.558241,47,382.5659,4.506435 +0.682103,52,725.278,4.803213 +0.6710785,10,970.0457,3.389202 +0.5560348,45,16.90907,4.62216 +0.9401617,69,134.6376,5.927962 +0.9492752,16,819.697,4.853928 +0.8111686,82,99.48363,5.516021 +0.6539134,70,355.3463,4.976903 +0.6973646,87,273.2096,5.221455 +0.584519,33,907.0917,4.266788 +0.661414,45,753.884,4.653987 +0.691314,98,431.7889,5.281952 +0.9053537,70,284.3603,5.663525 +0.878904,92,177.3085,5.767757 +0.940425,74,634.511,5.861479 +0.6773772,9,36.89003,3.370417 +0.938145,71,9.568438,7.736828 +0.7049552,62,308.9711,4.991195 +0.768903,88,218.1471,5.393243 +0.8924252,18,442.2652,4.597484 +0.5605281,42,973.999,4.41706 +0.5675563,35,394.8235,4.288579 +0.9314867,64,990.4558,5.699404 +0.854969,56,221.3102,5.320816 +0.6154144,90,419.8957,5.08615 +0.5046474,5,929.2128,2.267940 +0.8938657,91,747.1564,5.750207 +0.5461269,34,592.0258,4.224583 +0.7374015,33,34.94556,4.743901 +0.7812415,44,585.6939,4.900668 +0.5854985,20,73.7051,3.879755 +0.8041685,56,485.833,5.138593 +0.6455867,67,134.8849,4.95596 +0.8334194,32,323.5623,4.823296 +0.6835554,33,248.6061,4.471775 +0.9274518,41,204.8720,5.435482 +0.7580894,12,390.4757,3.785481 +0.8234953,30,705.3142,4.727986 +0.5803942,47,998.7147,4.538939 +0.6302062,50,22.45701,4.863313 +0.7932594,59,29.19641,5.444473 +0.5677228,11,340.1472,3.260991 +0.5143458,70,301.0236,4.738882 +0.8996777,5,36.72852,3.613945 +0.6948788,20,59.8754,4.139033 +0.801904,3,17.53048,2.547548 +0.825884,3,362.6367,2.532459 +0.5641203,41,378.8667,4.409494 +0.6206331,82,59.89471,5.102902 +0.9020196,82,488.3076,5.728979 +0.5772379,11,192.7502,3.284991 +0.7854763,15,719.8687,4.054453 +0.5661362,5,326.2423,2.407589 +0.855098,90,987.4242,5.598997 +0.9094228,17,314.8952,4.647975 +0.9105804,14,822.2919,4.479334 +0.6425095,19,776.2866,3.915952 +0.5800772,23,751.0009,3.958348 +0.8283034,40,306.9341,4.975931 +0.8694394,12,63.79335,4.252581 +0.9487476,13,927.253,4.68589 +0.8891563,27,416.9288,4.897393 +0.6400752,35,650.9308,4.418827 +0.930565,77,427.6444,5.839496 +0.6607416,84,480.9301,5.115355 +0.7374158,21,360.8883,4.219661 +0.7214416,90,627.8624,5.275888 +0.6634831,52,242.9271,4.783196 +0.633519,51,832.0138,4.696118 +0.867209,15,101.3933,4.396753 +0.7320115,44,304.3464,4.795765 +0.8916781,51,853.781,5.351103 +0.6815065,32,698.7288,4.429519 +0.7062608,20,411.6185,4.103026 +0.6216569,94,854.663,5.120379 +0.7749632,17,886.286,4.130346 +0.7489943,51,669.2371,4.930199 +0.8960939,30,605.3457,4.998742 +0.541271,5,803.5865,2.349337 +0.883344,83,878.3484,5.645366 +0.6615822,19,616.9031,3.957096 +0.8645687,14,451.1396,4.269158 +0.8197885,44,745.7335,5.001257 +0.9105769,22,975.8806,4.831691 +0.8194167,33,518.502,4.792544 +0.8237274,11,263.2219,3.915241 +0.8786824,38,564.1758,5.09802 +0.9028904,65,866.5719,5.564251 +0.7634663,45,909.7111,4.868551 +0.9061444,11,340.5835,4.267836 +0.727566,31,405.0189,4.510243 +0.5869022,53,742.01,4.643569 +0.6267716,82,756.8724,5.033235 +0.6941218,49,674.2737,4.783475 +0.6440676,72,403.9489,4.977191 +0.7643208,80,940.397,5.28069 +0.8215134,91,962.321,5.508477 +0.7344723,70,929.2222,5.122587 +0.6420764,9,405.7842,3.221721 +0.9224962,33,907.7449,5.196097 +0.92215,42,604.9682,5.371616 +0.9473083,16,808.4234,4.83695 +0.6679534,10,297.2999,3.388319 +0.8085884,87,391.1016,5.462548 +0.7428786,94,208.0541,5.381112 +0.7319898,77,842.6398,5.18538 +0.8264745,54,333.4286,5.185714 +0.8906358,42,879.7977,5.210706 +0.7497273,88,757.6578,5.316739 +0.9363728,93,740.3891,5.97637 +0.5203183,4,5.041769,2.183347 +0.648732,17,203.3104,3.843603 +0.5029027,20,757.0614,3.693276 +0.8637881,78,296.9534,5.566156 +0.9129572,14,146.4340,4.545495 +0.6906615,40,257.9211,4.636827 +0.8834442,74,793.7916,5.571652 +0.7800757,21,4.930221,5.522151 +0.867441,17,116.9928,4.49343 +0.6881186,70,684.5632,5.032408 +0.5881212,52,243.6473,4.642358 +0.8899165,62,666.8032,5.482087 +0.7845255,90,713.7938,5.411659 +0.6786644,72,575.786,5.036507 +0.7749491,79,740.7498,5.299343 +0.6163517,50,402.6808,4.656188 +0.7617745,100,408.036,5.442128 +0.9361814,46,508.8477,5.525133 +0.7015941,74,770.7665,5.096961 +0.7794969,72,594.9117,5.249219 +0.642179,74,748.8859,4.986675 +0.5983462,52,171.4239,4.667948 +0.6005191,47,615.7238,4.576628 +0.8843986,22,501.1241,4.715799 +0.7008892,25,449.2083,4.275913 +0.52497,38,860.323,4.276883 +0.622708,53,19.02061,4.92084 +0.5727642,77,157.0283,4.918638 +0.7725483,86,575.0621,5.356232 +0.6069527,16,346.6407,3.695274 +0.7587479,48,168.0675,4.944474 +0.7360718,62,721.5008,5.04224 +0.8545806,40,658.2835,5.043252 +0.8961155,80,809.8722,5.67364 +0.6650538,14,150.3996,3.709953 +0.939034,30,475.0172,5.248813 +0.6833314,42,302.3655,4.655899 +0.6175995,45,685.2173,4.573027 +0.6677279,28,314.8646,4.302073 +0.7154529,21,892.7738,4.15897 +0.6333697,2,961.5814,1.277359 +0.5898549,7,320.5183,2.842989 +0.6582885,95,405.8774,5.200164 +0.510954,70,611.108,4.728801 +0.9055901,74,428.1937,5.68225 +0.8400673,54,58.62375,5.384523 +0.734939,62,260.0854,5.060028 +0.52751,44,515.2361,4.400222 +0.5424423,48,149.0962,4.507725 +0.7204047,77,301.1897,5.179545 +0.9272841,13,550.2231,4.527436 +0.6945376,15,446.9727,3.824939 +0.5553579,44,411.7695,4.449252 +0.7173361,87,997.4134,5.238975 +0.6202049,47,794.0686,4.610215 +0.8752933,3,974.2505,2.761596 +0.8339996,63,286.8030,5.323071 +0.6327848,42,810.0312,4.546531 +0.6340459,45,269.9277,4.613969 +0.866857,19,677.0124,4.522703 +0.7734467,59,643.4308,5.093006 +0.8982833,96,211.7656,5.862206 +0.6749493,21,304.4563,4.078275 +0.7511355,60,202.4649,5.082362 +0.742047,77,48.54489,5.371515 +0.6776796,63,789.4974,4.935029 +0.855732,27,571.1547,4.757314 +0.8018288,57,777.9217,5.137002 +0.7331972,22,51.23239,4.336138 +0.6569014,73,102.1165,5.055507 +0.7537886,29,154.4731,4.546038 +0.8012184,81,740.0648,5.38049 +0.8549478,54,546.232,5.262064 +0.8976285,61,231.4609,5.546494 +0.8834517,6,628.3206,3.580245 +0.6746422,89,548.0865,5.179786 +0.8358614,9,451.8896,3.766575 +0.8406225,57,762.0856,5.247538 +0.9481807,28,293.3038,5.290238 +0.5388981,3,598.9741,1.679330 +0.9480118,73,445.4003,5.920966 +0.8536345,98,30.87349,6.077053 +0.8899995,11,376.5903,4.180464 +0.9368585,82,236.7299,5.957222 +0.9390339,94,494.9168,6.014249 +0.5705278,3,303.2342,1.756266 +0.8376015,31,126.5897,4.857314 +0.5003688,16,621.8171,3.485094 +0.6873293,59,652.178,4.907611 +0.6599451,24,221.4411,4.164048 +0.9088598,39,815.7084,5.243244 +0.8031311,5,669.6773,3.052888 +0.9491043,10,996.9979,4.475921 +0.9290567,72,727.5371,5.768695 +0.7602706,12,188.8118,3.803644 +0.8416336,15,220.5798,4.255509 +0.9339155,19,4.776814,7.721867 +0.7953252,3,625.1871,2.409029 +0.7715417,90,690.4963,5.381861 +0.7641226,14,915.3901,3.933091 +0.5798988,52,903.444,4.616092 +0.8216424,11,951.3616,3.893048 +0.5785521,6,71.00523,2.661841 +0.8724881,87,714.1226,5.640678 +0.8948278,35,337.652,5.121659 +0.7871695,53,50.68324,5.213849 +0.7097965,5,905.984,2.761924 +0.9192579,88,4.904059,9.408779 +0.8199713,94,854.027,5.527674 +0.9406058,18,479.2811,4.882971 +0.893909,87,899.2716,5.717317 +0.650764,81,712.7453,5.067031 +0.5889707,18,383.5385,3.764445 +0.8529372,77,924.1236,5.489221 +0.609893,96,440.4276,5.12181 +0.531659,100,637.8155,5.021182 +0.7622855,12,853.1681,3.790901 +0.5062748,27,854.2535,3.961283 +0.6536989,51,892.0227,4.732863 +0.5918758,87,181.1760,5.037371 +0.8949669,90,866.063,5.744409 +0.7391464,22,531.6416,4.257614 +0.6058422,56,816.772,4.717399 +0.6916805,84,483.5835,5.173199 +0.7928663,65,677.2386,5.208507 +0.799502,84,632.8621,5.403581 +0.647877,88,237.0035,5.138919 +0.6310709,41,682.083,4.525733 +0.7535243,52,206.0863,4.982394 +0.842538,27,105.2609,4.78065 +0.9368387,36,790.4721,5.349369 +0.7363599,16,303.7005,3.987744 +0.6187289,6,904.779,2.736695 +0.7830982,75,54.84483,5.450532 +0.7057671,57,511.7964,4.922182 +0.8533923,24,698.5605,4.655287 +0.5684159,6,224.2865,2.626111 +0.6368277,55,697.6601,4.760043 +0.8902097,96,699.0142,5.771775 +0.73018,27,826.1295,4.398932 +0.7229493,27,810.7536,4.382487 +0.5890476,3,9.206372,1.889919 +0.6626262,57,311.4022,4.84493 +0.8247307,39,750.575,4.927463 +0.862285,61,599.7255,5.369646 +0.8596518,72,146.6928,5.543895 +0.6842161,72,170.3721,5.076099 +0.6330123,41,248.7231,4.54117 +0.7745,49,151.7156,5.005232 +0.5936884,35,572.1413,4.333129 +0.8357376,16,500.1788,4.271279 +0.51271,7,73.56993,2.686149 +0.6896422,15,463.5934,3.813312 +0.7443422,66,119.7634,5.164269 +0.8847271,62,525.1662,5.467059 +0.8533142,83,457.8641,5.556159 +0.9428908,31,915.307,5.28519 +0.7709193,41,914.0045,4.817427 +0.8091848,52,419.4211,5.102556 +0.7552535,16,49.63281,4.120643 +0.8687983,67,938.1444,5.44823 +0.7432566,33,646.8512,4.589547 +0.8600137,50,840.1946,5.217403 +0.7541783,34,157.5049,4.672121 +0.689819,8,177.5935,3.225273 +0.7587453,60,558.5484,5.07267 +0.9248554,40,357.1488,5.370525 +0.6697601,13,584.2735,3.636448 +0.6823748,8,271.6928,3.201521 +0.6981148,18,939.7967,3.988303 +0.889497,85,990.792,5.682722 +0.7092462,16,209.8601,3.92723 +0.6301518,51,804.4977,4.690217 +0.5037445,11,289.3195,3.132128 +0.8170627,88,197.9134,5.523932 +0.5186405,43,333.365,4.369594 +0.7309547,4,567.6746,2.561449 +0.8606785,93,217.5858,5.691876 +0.8870742,2,740.502,2.244443 +0.8995338,84,34.00486,6.173225 +0.7740336,48,913.8893,4.941309 +0.8933359,37,627.4083,5.138033 +0.7583827,18,540.0579,4.138342 +0.6642341,11,250.0934,3.473574 +0.6526306,21,904.9387,4.022325 +0.9433407,25,150.4380,5.214132 +0.7412913,88,924.085,5.296476 +0.8818567,65,24.57030,6.015878 +0.748409,24,914.8858,4.346754 +0.8659564,86,474.0914,5.620953 +0.6847987,20,913.508,4.049003 +0.8728599,58,771.6419,5.367578 +0.8868516,87,574.9383,5.69949 +0.6116315,82,41.29352,5.117752 +0.9496053,60,998.339,5.781189 +0.9210157,5,880.3966,3.619327 +0.7488685,100,154.2452,5.453751 +0.792422,57,997.3951,5.10985 +0.7057241,20,909.2889,4.095626 +0.9060405,48,457.6723,5.388283 +0.8020144,14,799.7226,4.043229 +0.9114372,53,694.1402,5.471555 +0.6164202,10,699.8877,3.267098 +0.8557893,32,968.0013,4.878456 +0.6859665,62,220.2631,4.961493 +0.8556446,79,460.6411,5.530325 +0.7087365,37,18.42120,4.892413 +0.6066091,48,832.439,4.601762 +0.737552,90,976.363,5.303552 +0.8328863,79,368.9973,5.466714 +0.5687865,60,950.4368,4.705405 +0.9128557,79,511.2905,5.753497 +0.7816981,19,371.8202,4.251545 +0.7339682,93,749.6793,5.321598 +0.9017031,93,407.8017,5.816921 +0.5868505,36,739.4715,4.341942 +0.8923477,82,594.2587,5.681646 +0.8414654,14,493.1889,4.179133 +0.8589573,18,553.6746,4.451215 +0.7069543,76,343.5581,5.139243 +0.5513179,37,41.46768,4.362217 +0.7954259,47,799.2324,4.981373 +0.9280813,3,747.2373,3.110425 +0.6391395,31,156.1447,4.340451 +0.508044,68,273.9174,4.707716 +0.6902827,52,682.7568,4.819914 +0.6414225,32,371.048,4.354987 +0.8544067,47,613.95,5.159753 +0.6471667,27,614.637,4.223626 +0.879826,52,65.41423,5.501719 +0.7318367,9,756.8057,3.439061 +0.6710358,99,823.9917,5.242706 +0.6586583,79,203.5998,5.08643 +0.9153481,65,145.8204,5.718992 +0.9045708,39,518.867,5.231822 +0.9182237,4,293.8663,3.375961 +0.6201512,91,958.31,5.094233 +0.531135,5,679.083,2.326895 +0.6544671,79,801.718,5.054843 +0.5949144,18,452.2243,3.775143 +0.7362622,80,828.845,5.22116 +0.7638218,92,458.6902,5.387075 +0.9012236,87,312.5676,5.784071 +0.7628684,94,537.0887,5.396255 +0.7550078,19,982.6065,4.170556 +0.6672037,77,32.73787,5.236582 +0.805925,75,779.1546,5.339145 +0.5541851,23,465.4516,3.912125 +0.7172208,65,536.8639,5.040288 +0.7138174,61,829.1607,4.982435 +0.6165516,36,703.632,4.396356 +0.7870262,30,985.7532,4.620939 +0.7912173,9,89.4149,3.652351 +0.6588602,81,851.9986,5.080004 +0.8534626,15,235.5219,4.298059 +0.5417177,97,37.93112,5.095782 +0.7268279,98,840.1265,5.341517 +0.8217522,99,139.2584,5.644923 +0.6615135,73,271.7089,5.027002 +0.8379693,14,933.443,4.160273 +0.6898353,78,174.3968,5.144343 +0.9456171,63,372.4586,5.81557 +0.9227115,69,630.8074,5.708987 +0.6673543,62,413.4679,4.911183 +0.7727943,24,809.3736,4.409296 +0.6507278,29,359.3616,4.294149 +0.6849543,82,693.828,5.13863 +0.5105532,4,978.4382,2.002822 +0.8235352,74,327.0553,5.398906 +0.5910593,46,855.208,4.541509 +0.6297961,8,967.5094,3.0706 +0.607688,8,471.5654,3.022891 +0.7571063,34,70.40006,4.733643 +0.791352,77,404.1305,5.333374 +0.9173874,79,271.0829,5.807408 +0.6797923,28,496.1202,4.321795 +0.7953507,57,596.6884,5.124088 +0.850552,70,335.183,5.442296 +0.7431803,94,839.5868,5.346693 +0.6440024,15,983.9204,3.708547 +0.7837544,62,560.4449,5.155577 +0.836111,68,626.0255,5.359618 +0.5484813,12,157.0824,3.312683 +0.7455065,23,808.4312,4.305929 +0.7591955,36,486.1776,4.698127 +0.8779367,58,330.3594,5.410352 +0.593193,36,840.8998,4.352766 +0.6269665,44,889.8402,4.57122 +0.8868482,77,174.344,5.680853 +0.752801,62,114.1809,5.142559 +0.8743457,45,570.4405,5.201879 +0.7211467,83,22.77365,5.534706 +0.6912285,50,179.5001,4.818787 +0.6746614,56,25.13000,5.057343 +0.8218585,18,350.1895,4.328555 +0.5137584,21,501.476,3.757731 +0.740062,100,295.5024,5.403938 +0.5987175,12,829.5367,3.406227 +0.6969432,24,777.029,4.229027 +0.8577518,90,243.7531,5.652591 +0.8004673,42,774.9877,4.912852 +0.7565447,100,561.181,5.423456 +0.5786212,70,75.22302,4.885775 +0.6195509,93,718.8692,5.110625 +0.788771,62,282.489,5.185677 +0.843245,44,575.6044,5.076896 +0.8157837,54,697.1208,5.137986 +0.8604531,98,792.4643,5.675903 +0.6037213,44,714.739,4.530425 +0.851184,33,819.7258,4.887258 +0.8473872,72,448.4953,5.441543 +0.5858104,70,778.5424,4.849169 +0.9012477,98,237.0837,5.880302 +0.6218494,86,359.1172,5.067211 +0.8382145,40,276.6088,5.01096 +0.7575617,45,487.4906,4.862268 +0.93472,74,982.2397,5.813632 +0.787328,48,72.26743,5.087387 +0.8512459,29,552.8546,4.79632 +0.719967,9,908.876,3.407101 +0.5877352,78,208.0282,4.947623 +0.8423043,79,600.2308,5.481344 +0.8392067,94,731.9999,5.584333 +0.5623799,49,16.30969,4.714975 +0.647799,9,46.71102,3.279418 +0.5288595,42,715.873,4.364200 +0.789742,2,784.4931,1.773259 +0.756642,43,649.7852,4.822198 +0.7764437,50,46.35313,5.150306 +0.6674194,85,991.1572,5.128339 +0.906969,11,130.1505,4.311036 +0.7518938,70,334.027,5.177749 +0.528787,18,255.6916,3.650907 +0.8252282,19,343.1041,4.384494 +0.6891648,17,884.256,3.918804 +0.8468115,2,649.4154,2.022372 +0.7624286,95,693.2675,5.398028 +0.7566833,68,228.3779,5.180752 +0.606168,29,811.7703,4.20159 +0.7548573,73,552.7757,5.203042 +0.820666,22,518.8606,4.481232 +0.6412007,32,405.3414,4.353561 +0.6027521,20,49.8559,3.934375 +0.734133,2,519.9769,1.575193 +0.7532216,43,924.8756,4.810621 +0.6853911,8,475.9357,3.204962 +0.9023783,19,398.6669,4.691687 +0.6758605,20,864.8661,4.029875 +0.7751433,11,661.0047,3.749591 +0.9425368,54,73.00199,5.890914 +0.8177478,11,295.5029,3.892388 +0.9261527,6,245.4474,3.854764 +0.8882492,35,651.1299,5.075141 +0.7468783,15,779.9176,3.948789 +0.5808538,17,480.0077,3.695823 +0.646268,20,723.2668,3.968426 +0.8976664,49,352.3127,5.372937 +0.7144762,39,539.7912,4.655678 +0.6694488,42,295.7246,4.628144 +0.7095104,34,871.5172,4.534577 +0.7675866,27,495.3648,4.49496 +0.6749292,82,737.8624,5.11927 +0.6683889,73,588.4477,5.026845 +0.5178061,22,718.1896,3.805074 +0.8245529,83,284.1121,5.48635 +0.6444938,35,864.6639,4.425571 +0.8060923,99,924.1675,5.52485 +0.7776994,25,816.9563,4.454753 +0.828381,4,362.6857,2.899921 +0.5356391,36,859.755,4.251434 +0.8132802,64,617.6336,5.252743 +0.5805669,32,734.2547,4.235485 +0.9149193,84,749.9509,5.792419 +0.6743994,95,277.3819,5.238203 +0.6252865,70,618.6787,4.918297 +0.803131,72,856.4609,5.302494 +0.6792797,28,90.66852,4.363507 +0.6178848,99,391.6746,5.158681 +0.6664492,99,552.1533,5.238936 +0.8704619,81,12.83819,6.593567 +0.9337554,76,194.8326,5.904346 +0.8441718,83,870.5995,5.51324 +0.7154217,49,367.0998,4.836076 +0.6672896,69,241.8273,5.000109 +0.6678378,94,974.4227,5.199604 +0.9408869,5,481.7649,3.783829 +0.6264312,10,93.73413,3.310071 +0.8699315,11,891.6617,4.077148 +0.6533887,78,550.6135,5.047538 +0.6871648,79,37.89538,5.28403 +0.8278326,41,55.32326,5.136375 +0.9007479,44,384.0775,5.308271 +0.9045541,84,87.16014,5.916201 +0.8465129,89,655.0107,5.572192 +0.6095092,56,275.0738,4.735062 +0.9337829,54,80.79501,5.798131 +0.5302162,22,841.8739,3.827253 +0.5068682,95,214.3008,4.954852 +0.6540878,49,531.6365,4.70768 +0.6909439,5,327.8551,2.714410 +0.9104148,32,848.5844,5.109452 +0.8152395,98,935.9499,5.541505 +0.6585675,64,568.535,4.913769 +0.8293236,13,607.8378,4.070081 +0.5164619,89,81.7367,4.943977 +0.6309601,3,53.40032,1.923181 +0.799725,79,833.1201,5.357887 +0.7794195,24,916.7622,4.425833 +0.8949443,27,301.5564,4.934083 +0.6930091,17,21.62224,4.103417 +0.6977771,22,386.8469,4.16481 +0.5475462,18,802.1444,3.681317 +0.5114595,92,272.2015,4.93625 +0.931486,73,945.969,5.78597 +0.7490772,68,791.3002,5.135225 +0.6596451,64,343.5261,4.922892 +0.8957032,94,16.72671,6.692282 +0.6923005,77,120.6771,5.158418 +0.9456358,24,780.0273,5.126279 +0.9438894,21,83.76159,5.157231 +0.7175115,80,626.8248,5.186013 +0.5829018,31,361.2286,4.218319 +0.5901643,22,676.4985,3.93967 +0.8064658,90,648.7313,5.467642 +0.6136763,38,743.9136,4.433546 +0.7821613,16,550.7289,4.102733 +0.8085253,86,214.4748,5.479572 +0.505325,97,299.8038,4.963743 +0.8778521,73,575.0015,5.548593 +0.6573341,79,166.5853,5.09082 +0.7532538,17,719.9617,4.073974 +0.8126741,98,959.151,5.534472 +0.617485,78,992.0062,4.979724 +0.7294307,42,842.8008,4.740066 +0.8311411,11,255.2206,3.942211 +0.7310049,3,64.00663,2.210547 +0.9218966,22,24.38936,5.372905 +0.6959823,13,281.8103,3.703621 +0.872274,7,286.046,3.68672 +0.8091158,6,714.5453,3.268219 +0.7140248,28,426.8686,4.397771 +0.7445735,34,30.09128,4.818709 +0.7104637,86,508.2352,5.2256 +0.7407903,73,839.1437,5.166587 +0.9153352,65,522.6144,5.636264 +0.688166,29,238.4367,4.378873 +0.6463528,11,613.1541,3.426388 +0.7123388,62,470.368,4.998166 +0.8895104,85,770.6312,5.687503 +0.5782297,59,402.029,4.714427 +0.829497,28,701.8173,4.693881 +0.5709144,36,853.1903,4.312955 +0.7069504,70,685.5334,5.069301 +0.8335032,53,856.0943,5.173089 +0.5544132,8,676.0023,2.906102 +0.8651928,24,406.7348,4.708713 +0.8610366,68,384.947,5.452404 +0.8713612,35,373.6557,5.019745 +0.5738918,29,452.9196,4.144968 +0.5240998,92,545.6718,4.950569 +0.7527017,64,163.9493,5.142884 +0.6616936,31,958.384,4.362104 +0.8629395,77,651.0979,5.528421 +0.783235,41,700.8783,4.851017 +0.8394277,29,67.74892,4.873075 +0.7977615,5,190.0469,3.04529 +0.5940232,54,580.2972,4.671643 +0.9218088,64,88.74913,5.819851 +0.8127387,47,991.2968,5.025708 +0.7963492,66,680.6744,5.227959 +0.5904958,55,863.2755,4.677009 +0.8075735,17,983.1247,4.22383 +0.7415049,43,793.1585,4.785166 +0.8843514,74,597.5391,5.581504 +0.7021487,6,873.4177,2.943845 +0.8391883,12,753.545,4.033319 +0.7921166,46,52.22621,5.114419 +0.5554143,69,76.81138,4.829512 +0.6042065,76,151.4294,4.966379 +0.8627017,3,525.6119,2.698795 +0.865755,2,376.8642,2.122449 +0.8279171,10,836.8117,3.82942 +0.822342,5,962.3499,3.122065 +0.6597195,71,21.51946,5.235428 +0.776297,41,967.7869,4.830209 +0.8637549,79,871.2532,5.542754 +0.6396458,39,743.7715,4.502273 +0.826949,97,36.28713,5.892425 +0.7012445,40,177.4653,4.669936 +0.5738541,55,864.6037,4.648669 +0.6926033,57,906.083,4.889783 +0.8142208,4,830.517,2.839772 +0.6244411,9,13.95435,3.327233 +0.5999928,84,440.6816,5.010063 +0.7107244,9,545.9235,3.385588 +0.6170333,66,398.5188,4.865456 +0.5432562,27,214.7615,4.035203 +0.891457,61,156.3249,5.549498 +0.8364938,75,499.4986,5.432955 +0.7364336,82,899.3403,5.23781 +0.6345384,51,661.4909,4.699565 +0.6238511,79,467.3019,5.006217 +0.6425458,54,541.773,4.759007 +0.8062015,98,279.2243,5.549434 +0.8942245,27,820.441,4.907142 +0.8293175,65,18.86648,5.856884 +0.5543704,15,907.1906,3.527276 +0.9427969,14,973.7963,4.692983 +0.5635837,55,917.0542,4.631148 +0.7863883,50,976.9138,5.000909 +0.6690678,71,936.7323,5.003891 +0.8103885,89,852.7451,5.465744 +0.5853477,7,566.7827,2.830862 +0.9155325,74,929.784,5.708425 +0.652931,90,849.3441,5.143776 +0.63539,94,112.5092,5.190783 +0.9347237,32,425.9525,5.268364 +0.5908132,32,193.1982,4.267024 +0.882015,92,412.4952,5.728643 +0.8953683,41,852.7085,5.214666 +0.5202744,78,282.4543,4.829493 +0.9373646,28,29.90516,5.635022 +0.9139742,35,175.8116,5.253379 +0.8243774,47,623.3277,5.06504 +0.7781752,71,674.4035,5.234271 +0.6977277,38,68.90478,4.672658 +0.6985117,56,139.0387,4.92994 +0.6405636,70,422.2165,4.949769 +0.7322623,34,302.2471,4.598792 +0.7356788,36,466.6663,4.643266 +0.5179625,98,422.796,4.988105 +0.920347,32,632.1662,5.168424 +0.8147306,22,655.7655,4.459846 +0.7213689,76,963.051,5.153094 +0.6786994,68,743.6589,4.99277 +0.6729528,21,82.73629,4.109708 +0.7944516,48,324.7937,5.01126 +0.7986539,8,300.5525,3.529152 +0.7704706,5,377.2322,2.945948 +0.8876776,97,425.3873,5.784077 +0.813792,43,990.8892,4.964142 +0.7389332,47,246.4452,4.866744 +0.6142692,4,950.8356,2.246285 +0.8333757,88,852.0517,5.520895 +0.918038,30,73.33338,5.266524 +0.5201918,42,149.4735,4.362267 +0.6865426,59,135.1505,4.944673 +0.818865,51,850.2187,5.103217 +0.7665226,28,317.5260,4.528706 +0.6878656,90,351.7311,5.220275 +0.6233782,24,686.0332,4.077961 +0.9079201,61,12.53428,6.715454 +0.7354724,37,866.4194,4.657101 +0.5748367,73,233.9909,4.874421 +0.9424346,27,604.6585,5.191774 +0.8052077,13,247.9588,4.004018 +0.5808156,22,55.97113,3.965451 +0.9059417,97,546.7074,5.851985 +0.7972078,82,324.6242,5.398432 +0.7553583,34,564.3914,4.642926 +0.5211904,43,59.69222,4.405759 +0.864604,94,383.3898,5.682846 +0.5628405,7,198.0784,2.785847 +0.8635089,89,179.457,5.68645 +0.8361038,4,631.6255,2.928310 +0.64402,42,762.8189,4.567911 +0.8099644,30,282.0744,4.705383 +0.5957105,10,675.4588,3.222615 +0.5611832,61,305.9021,4.713422 +0.7609862,75,581.0989,5.234911 +0.5861211,27,210.4605,4.115875 +0.681802,62,284.2667,4.946358 +0.9380357,22,163.5759,5.067801 +0.6476278,98,954.5236,5.193096 +0.6062827,71,570.621,4.896424 +0.8513,59,850.3103,5.303609 +0.6439583,33,685.2893,4.379145 +0.7549672,14,176.0377,3.930083 +0.5101834,28,353.0459,4.00226 +0.8534954,47,580.775,5.157762 +0.6642175,69,96.3145,5.032567 +0.7822325,20,464.9794,4.292241 +0.7222924,70,56.91364,5.224726 +0.7835733,92,11.13638,6.236578 +0.5127269,25,339.0517,3.910086 +0.9060686,81,300.5539,5.761269 +0.6473291,84,570.9105,5.08901 +0.7251075,34,842.6479,4.568951 +0.7233545,95,952.1911,5.311982 +0.8594078,44,426.2245,5.138217 +0.6228143,7,340.9586,2.917697 +0.6639282,60,579.4312,4.8763 +0.9111373,73,651.4216,5.685933 +0.850889,36,998.6415,4.948251 +0.5315727,20,452.9032,3.747659 +0.6490442,51,37.34832,4.852106 +0.715606,77,990.784,5.150418 +0.6712978,65,10.80619,5.424427 +0.8133968,100,891.5813,5.550796 +0.629085,96,415.4077,5.155445 +0.6325968,35,932.5289,4.402526 +0.7542193,78,229.4509,5.272169 +0.7610267,94,468.5767,5.394991 +0.9484245,24,661.5359,5.152519 +0.9051988,61,163.1016,5.61021 +0.642105,83,745.0839,5.068648 +0.6062096,71,29.42007,5.036339 +0.6614198,65,200.6846,4.95034 +0.9436293,20,906.2777,4.973695 +0.8892711,88,553.833,5.717634 +0.7912716,10,982.8139,3.707757 +0.8327392,90,923.7582,5.532846 +0.9494778,9,763.3662,4.394199 +0.837189,30,724.2563,4.770703 +0.764757,37,643.5556,4.728776 +0.6391173,62,732.9576,4.852631 +0.7116352,16,68.62962,3.974066 +0.926587,99,271.3453,6.005482 +0.7328461,22,375.7878,4.246613 +0.8062737,37,507.2412,4.840897 +0.7764293,97,522.9307,5.44909 +0.7452551,64,983.958,5.08166 +0.770722,96,122.8487,5.494829 +0.5441333,32,720.3908,4.170598 +0.663517,39,953.2992,4.546605 +0.5923693,90,235.0514,5.056502 +0.8482554,46,791.917,5.119762 +0.7808265,91,374.5348,5.424516 +0.9152311,40,974.5258,5.290716 +0.5714776,12,131.6730,3.362543 +0.5317691,42,633.3877,4.36961 +0.6123794,99,490.6901,5.14633 +0.5745781,8,645.4138,2.949351 +0.6082275,13,630.1471,3.502851 +0.6593624,89,215.2926,5.171144 +0.5644257,3,643.3973,1.740192 +0.920627,78,189.0088,5.84536 +0.5520711,51,623.7519,4.55584 +0.6121508,39,542.8347,4.453281 +0.7584429,21,187.2622,4.287515 +0.7916381,51,71.86452,5.147185 +0.8850048,16,997.5153,4.457286 +0.5391017,87,770.6265,4.931917 +0.7404479,7,323.7681,3.216882 +0.5623543,26,911.3213,4.02928 +0.5508669,96,484.6114,5.024189 +0.7931613,6,685.8204,3.213631 +0.9356591,55,520.1105,5.641592 +0.8191694,21,28.07199,4.681511 +0.7404314,76,362.3436,5.208253 +0.6132023,26,501.4922,4.1272 +0.898138,17,898.733,4.568876 +0.7149017,32,821.3167,4.499275 +0.6468989,98,799.4402,5.193233 +0.7843833,49,106.0027,5.056439 +0.78089,2,975.3173,1.739043 +0.7499181,33,292.2228,4.618129 +0.89562,3,215.3275,2.890152 +0.6734657,94,106.2031,5.270171 +0.5022134,82,435.0182,4.833872 +0.5035799,89,220.3418,4.901841 +0.6358235,5,732.8527,2.570277 +0.9185566,67,955.7941,5.65809 +0.8146047,77,848.0447,5.378849 +0.8849036,25,130.1811,4.875341 +0.666657,10,398.2127,3.382943 +0.866368,78,746.573,5.54593 +0.5504938,39,246.9974,4.349845 +0.712021,69,528.3399,5.072651 +0.5030071,65,637.7599,4.66033 +0.6105752,44,545.6989,4.544589 +0.6943772,65,979.1696,4.98809 +0.9203392,86,787.3725,5.833822 +0.5749371,12,488.0013,3.358939 +0.6378194,89,196.0952,5.133906 +0.5113716,66,593.8107,4.68551 +0.7412499,84,512.8562,5.272521 +0.6851877,28,589.8577,4.331579 +0.6870601,19,735.5807,4.011283 +0.7750765,15,479.3753,4.028658 +0.6845788,23,882.8073,4.166264 +0.7811759,64,597.6869,5.17059 +0.7607091,15,713.1093,3.985755 +0.5275841,3,320.7793,1.653622 +0.8151376,100,49.26603,5.78751 +0.5074881,77,757.4622,4.793207 +0.5229785,23,989.7796,3.852577 +0.7105007,28,31.24485,4.54415 +0.6215799,38,598.2167,4.449521 +0.8470756,49,10.20824,6.161224 +0.6472299,24,401.3113,4.129491 +0.9120567,60,41.54376,5.913973 +0.5377769,2,866.9126,1.040179 +0.7185213,18,930.2816,4.035555 +0.8158044,14,239.9823,4.104134 +0.770996,94,609.5532,5.412268 +0.7024562,43,650.9803,4.702584 +0.7775713,10,624.1942,3.668905 +0.8395731,24,386.586,4.617139 +0.6114049,91,218.1425,5.099238 +0.8950336,18,349.9376,4.6157 +0.5847385,92,22.30507,5.218627 +0.5681137,57,798.3608,4.666418 +0.8210785,93,933.207,5.522232 +0.5785641,83,4.989308,5.603602 +0.8157943,15,818.011,4.14539 +0.7407279,92,440.1779,5.337324 +0.733181,3,238.6378,2.200755 +0.7579886,42,635.1882,4.808085 +0.7311025,3,905.908,2.189757 +0.7900159,27,812.1494,4.548644 +0.760292,94,327.8632,5.402854 +0.6519805,77,849.4438,5.031642 +0.7062998,74,750.08,5.106512 +0.5844447,3,59.48537,1.801098 +0.6614328,90,460.961,5.165895 +0.881871,94,392.0773,5.744282 +0.8199697,65,654.326,5.280985 +0.898322,9,64.69922,4.13647 +0.7556982,59,152.5194,5.094736 +0.5939186,47,662.8237,4.564495 +0.8520484,84,444.9234,5.561018 +0.7401846,95,846.4764,5.347553 +0.6162178,30,412.4358,4.252757 +0.6134665,86,748.6544,5.044603 +0.6820989,3,169.3379,2.050289 +0.6442013,54,996.0875,4.757449 +0.5227555,12,294.5265,3.256112 +0.5621612,43,374.3188,4.443781 +0.6707198,14,582.3504,3.706538 +0.5717505,2,974.4778,1.120795 +0.714165,63,987.752,5.00491 +0.8463978,49,741.222,5.159691 +0.5952204,26,68.97992,4.131567 +0.5451793,20,707.1649,3.771381 +0.8645775,43,292.8327,5.152765 +0.9404841,4,51.03454,3.651606 +0.7179487,74,160.1517,5.169636 +0.6143455,31,974.3184,4.270616 +0.7752132,3,809.1733,2.335569 +0.7934382,59,504.3798,5.146776 +0.711908,86,888.908,5.221289 +0.6450752,84,229.6891,5.101429 +0.7590779,59,150.5668,5.10375 +0.9205524,29,818.9596,5.093759 +0.9360283,7,419.8364,4.064352 +0.5325355,85,266.1838,4.913121 +0.8768197,77,973.5951,5.569731 +0.7097386,99,643.0035,5.317974 +0.5718427,37,402.8701,4.340854 +0.5143585,41,440.6985,4.322562 +0.7406938,15,237.9263,3.946416 +0.7049336,96,920.0897,5.283441 +0.8494004,93,369.2301,5.627208 +0.6261061,45,662.1646,4.588758 +0.5064255,14,899.5559,3.369974 +0.7677488,79,651.7408,5.284578 +0.789773,59,296.7103,5.151136 +0.8435455,59,16.99554,5.912123 +0.6753605,53,791.7065,4.803538 +0.7715955,98,324.6493,5.457671 +0.8750405,21,577.243,4.637225 +0.8568845,79,527.212,5.53056 +0.6046421,54,708.383,4.688786 +0.7191854,53,919.355,4.890299 +0.6643493,97,347.9793,5.228687 +0.6956105,97,939.5987,5.272661 +0.6148152,27,557.7433,4.160999 +0.6576454,4,901.5362,2.356199 +0.8151161,36,74.71088,4.94727 +0.9228209,15,523.9028,4.61454 +0.6219353,32,922.2687,4.310781 +0.7883107,26,640.8576,4.516704 +0.6018958,97,34.22611,5.241195 +0.5793979,40,689.8196,4.412834 +0.6947763,5,26.97463,2.791473 +0.58931,35,138.7347,4.344029 +0.8847147,38,602.2617,5.121166 +0.7561305,49,523.4307,4.920687 +0.6925183,79,142.5949,5.168269 +0.6681708,46,193.5548,4.705324 +0.8585283,12,899.6494,4.105485 +0.6536122,66,584.4786,4.926772 +0.5651187,13,713.7666,3.414500 +0.88514,23,769.917,4.746323 +0.8002839,9,109.5764,3.673678 +0.9097735,4,111.6067,3.342624 +0.6178355,96,195.9049,5.151568 +0.7949732,57,597.5724,5.123088 +0.7527053,83,524.3268,5.288674 +0.8950565,49,72.84066,5.511047 +0.7359179,51,151.2464,4.939979 +0.8420705,7,564.432,3.548268 +0.7573152,83,299.6074,5.313 +0.9454348,87,942.5041,5.988617 +0.871066,18,952.1216,4.492747 +0.6274554,60,761.309,4.8073 +0.557569,10,423.8319,3.144131 +0.9005163,26,705.4903,4.910763 +0.8800185,65,730.4365,5.473082 +0.8613206,13,617.5602,4.188885 +0.8168853,17,650.0818,4.256188 +0.5328003,51,162.6084,4.53643 +0.6839809,84,377.3296,5.162864 +0.9303211,54,819.7178,5.583603 +0.6478824,71,990.3996,4.965008 +0.8349335,45,815.2025,5.061425 +0.769149,21,563.5817,4.294681 +0.6393773,87,829.238,5.09636 +0.8186378,40,399.7204,4.939388 +0.5060255,15,772.43,3.434855 +0.6399204,65,148.2399,4.91882 +0.5302873,41,873.3826,4.346774 +0.9489945,87,566.708,6.030224 +0.7902835,92,176.1944,5.489031 +0.935949,9,578.918,4.281535 +0.7065377,68,39.88104,5.213108 +0.6605787,74,199.7206,5.043517 +0.8500532,52,350.5747,5.231401 +0.5795111,43,185.7723,4.483979 +0.7721705,86,761.0165,5.350834 +0.8356097,31,587.8281,4.793397 +0.6543654,68,444.2728,4.953204 +0.745387,66,509.2115,5.112169 +0.6572928,32,453.2728,4.384213 +0.6103028,43,415.225,4.528702 +0.507783,24,459.682,3.864417 +0.7601003,75,316.1002,5.246828 +0.7714567,72,648.4202,5.228758 +0.6691248,74,148.5592,5.071301 +0.8532127,26,732.108,4.715798 +0.5091557,91,916.2237,4.917172 +0.6682798,23,442.3025,4.136524 +0.7504898,68,937.2238,5.136544 +0.9161427,30,880.0924,5.092573 +0.8091194,79,887.4123,5.381188 +0.7126703,51,412.3825,4.857893 +0.7594662,98,373.6597,5.425589 +0.5785451,27,661.7546,4.091882 +0.6655602,28,627.9785,4.290333 +0.5991819,54,216.0390,4.693234 +0.7969112,63,834.7526,5.193941 +0.8450834,25,649.1481,4.658746 +0.6193873,24,470.0091,4.072489 +0.9168002,2,62.04817,2.490147 +0.8613054,74,422.8139,5.507761 +0.62517,18,255.6169,3.841263 +0.6717216,30,248.8529,4.370396 +0.5892554,31,385.8409,4.229486 +0.8929538,34,581.5536,5.076849 +0.8155344,77,46.48784,5.609731 +0.5550282,19,784.9772,3.743976 +0.6795031,4,474.3498,2.415745 +0.6040601,66,200.2149,4.854484 +0.8937049,13,769.184,4.330309 +0.562713,48,40.01588,4.599981 +0.8443962,12,606.4958,4.054479 +0.5217481,98,304.271,4.997033 +0.6211519,73,460.562,4.944608 +0.801454,60,78.90437,5.287386 +0.7147738,91,760.2828,5.267743 +0.5293705,7,730.8396,2.708855 +0.6295258,25,288.2368,4.13171 +0.5811409,63,106.5195,4.796319 +0.7467691,83,303.5143,5.288863 +0.5357094,26,273.6827,3.986927 +0.8270343,25,75.21921,4.694638 +0.6370267,23,931.2065,4.067684 +0.5991126,3,463.7693,1.825909 +0.7526954,72,426.7363,5.193497 +0.8253992,93,330.6865,5.559655 +0.9159743,42,103.2218,5.454755 +0.8004575,92,11.91416,6.284229 +0.8738953,25,674.0253,4.764974 +0.8571217,38,390.5402,5.026141 +0.7039517,18,937.9678,4.001619 +0.7890745,34,410.5091,4.733657 +0.66447,39,688.1216,4.550597 +0.5939275,77,453.4037,4.93669 +0.7696701,100,856.4333,5.445882 +0.9277054,13,125.0380,4.591452 +0.9389669,99,787.151,6.030433 +0.8225612,91,994.0805,5.510888 +0.7342594,6,582.8713,3.033424 +0.8865646,57,5.988118,7.562239 +0.9154522,23,477.7697,4.904231 +0.5691102,7,96.046,2.807195 +0.6801258,9,342.9826,3.312514 +0.8502952,75,727.0152,5.467112 +0.5583243,47,911.0722,4.501544 +0.5236635,86,719.7257,4.899644 +0.5711945,61,904.3542,4.722019 +0.6034479,52,393.2907,4.663141 +0.8363296,65,490.6389,5.334549 +0.7217736,98,369.6968,5.345336 +0.7711621,71,24.62962,5.562754 +0.8946396,44,38.31367,5.588078 +0.8681217,34,730.2276,4.971574 +0.5378834,38,299.3967,4.304748 +0.7991737,58,345.0896,5.158856 +0.5592553,7,31.06375,2.814127 +0.9303648,2,961.1783,2.568641 +0.789962,48,667.3871,4.984806 +0.6122609,64,698.6285,4.828939 +0.5443432,21,316.0429,3.816686 +0.538685,4,822.2305,2.067093 +0.5826739,46,360.8801,4.532958 +0.6856244,17,109.1460,3.942286 +0.7513881,91,881.5027,5.341419 +0.6010855,16,407.8654,3.682199 +0.8463225,9,124.5201,3.838152 +0.899949,82,799.3413,5.706383 +0.9073209,28,842.0504,4.996587 +0.9469542,10,444.7476,4.468635 +0.8801998,100,651.3778,5.761765 +0.6018282,24,692.391,4.03621 +0.8014853,20,251.665,4.359587 +0.9432018,43,430.8335,5.534503 +0.9384274,100,25.18134,6.820565 +0.6923582,72,998.4995,5.057304 +0.5801159,42,782.1964,4.451911 +0.6414567,82,306.897,5.070821 +0.6720437,62,514.3452,4.91709 +0.7724809,57,339.2014,5.078844 +0.9028858,76,604.6113,5.676169 +0.9497646,65,64.40338,6.126636 +0.8328937,59,235.9650,5.282141 +0.7836799,77,586.6602,5.30615 +0.8561,32,898.7267,4.880362 +0.715531,15,130.4621,3.897282 +0.9006471,71,529.8968,5.624916 +0.6128581,49,414.7223,4.634115 +0.8566043,5,295.1873,3.272094 +0.7551571,36,54.301,4.802694 +0.6504977,38,414.6663,4.507891 +0.691055,88,229.4573,5.222388 +0.6377646,46,92.32049,4.671924 +0.7257486,47,581.0358,4.820107 +0.7063136,96,616.4358,5.290743 +0.8650301,40,943.64,5.074856 +0.6272809,41,135.1876,4.545061 +0.6924068,12,308.8051,3.619891 +0.6531557,13,949.6057,3.597409 +0.8044704,93,633.929,5.485044 +0.8368844,43,487.7978,5.043371 +0.8397715,74,513.7228,5.432954 +0.5198061,32,197.0448,4.13612 +0.5460146,42,882.3461,4.392564 +0.6740923,35,657.371,4.485618 +0.6792326,40,648.0051,4.599951 +0.8405607,53,811.9904,5.195353 +0.5946238,5,169.7788,2.477280 +0.8982927,26,848.3721,4.89743 +0.9365957,28,407.9059,5.186799 +0.7668708,53,178.9098,5.035299 +0.6584784,76,890.6541,5.033633 +0.5389569,12,497.2326,3.286257 +0.6999825,24,456.0215,4.240168 +0.9096133,31,747.363,5.084439 +0.8289016,2,283.8486,1.940521 +0.6901096,87,214.8528,5.214694 +0.6694101,78,530.8827,5.077346 +0.6567067,73,317.1940,5.014601 +0.679931,95,191.9584,5.260732 +0.5387921,23,10.62070,4.063064 +0.756781,59,405.9484,5.062023 +0.5842175,30,292.6955,4.195843 +0.6076509,77,417.3091,4.961052 +0.6543601,92,829.3172,5.161897 +0.5755779,49,196.0489,4.577904 +0.5450119,38,102.0792,4.334683 +0.9404626,51,345.8694,5.64067 +0.7038778,74,55.63226,5.222917 +0.8082828,86,120.1308,5.521448 +0.7313073,93,923.7832,5.313754 +0.5285032,3,618.0018,1.654841 +0.9024613,17,854.2145,4.591173 +0.6862795,37,30.83803,4.714655 +0.7354094,8,867.1883,3.332226 +0.9007964,29,611.6991,4.995666 +0.6588533,49,769.275,4.713477 +0.8563857,26,675.1622,4.728254 +0.8872304,87,328.7089,5.722146 +0.9268127,69,847.4352,5.724473 +0.6875418,60,935.4085,4.917128 +0.891503,19,974.8925,4.624085 +0.6769115,96,834.304,5.231948 +0.7652566,25,969.8592,4.421208 +0.6201267,12,685.9498,3.451914 +0.6599803,63,784.9818,4.901872 +0.6964509,81,667.3963,5.152364 +0.6965717,35,935.8557,4.529274 +0.6360838,51,280.4093,4.7129 +0.8371735,88,757.6325,5.533856 +0.6208766,74,120.8144,4.986134 +0.6598676,62,270.1187,4.904797 +0.8525584,26,247.1739,4.738222 +0.7263877,70,427.1566,5.116298 +0.7346672,31,453.3599,4.52499 +0.8395507,14,95.145,4.228401 +0.7380277,4,15.21835,2.710866 +0.5857433,63,4.982476,5.40675 +0.8829485,78,53.84525,5.862786 +0.6057832,60,87.74786,4.814740 +0.7225465,21,738.9869,4.176617 +0.6532181,99,770.4294,5.211655 +0.8260238,21,471.1853,4.462461 +0.7465538,91,348.1825,5.348179 +0.8766148,72,320.0464,5.555052 +0.6860644,88,913.9462,5.187536 +0.8306096,62,184.0549,5.32403 +0.6324524,63,799.4854,4.851846 +0.5364287,49,30.90720,4.577945 +0.6288004,24,822.3586,4.08774 +0.9113013,43,150.4739,5.401755 +0.6569249,22,476.9137,4.074598 +0.804286,26,90.7052,4.632987 +0.8768176,18,824.244,4.518036 +0.6579506,44,270.2119,4.642845 +0.7120674,45,417.2141,4.762816 +0.6624692,2,355.9182,1.358141 +0.7997539,59,516.3986,5.162715 +0.9064637,37,727.8032,5.196172 +0.8220323,7,432.6814,3.474522 +0.75176,55,861.221,4.988624 +0.6098563,56,461.1784,4.728862 +0.661423,93,384.5225,5.191923 +0.8380577,45,787.3014,5.07156 +0.5475543,54,151.5863,4.608017 +0.9364163,89,550.0236,5.958449 +0.8345188,33,715.9277,4.83412 +0.9300926,24,417.0907,5.028721 +0.715501,56,100.0091,4.987019 +0.9396052,60,513.9873,5.726164 +0.5227287,97,513.9972,4.986833 +0.8565892,7,304.42,3.615298 +0.9116222,74,986.7343,5.688216 +0.8512815,45,27.81513,5.487517 +0.9298235,83,989.083,5.857929 +0.626031,73,643.8244,4.949713 +0.8482173,91,457.0946,5.601593 +0.5709514,32,457.7069,4.220686 +0.6943745,92,242.0755,5.258453 +0.8606947,39,318.7593,5.064335 +0.840107,80,678.4295,5.48065 +0.5747926,29,651.5253,4.144597 +0.8357058,7,666.7798,3.522195 +0.869957,81,855.4466,5.580992 +0.670602,54,101.5262,4.85908 +0.8043425,81,708.5911,5.389184 +0.7803241,71,259.3759,5.26357 +0.7343555,43,335.7706,4.781522 +0.6297029,47,719.406,4.628093 +0.6101721,45,104.9270,4.593527 +0.5134342,15,925.1843,3.448606 +0.8411402,71,917.1132,5.397877 +0.7914293,83,136.8519,5.438173 +0.6139731,77,618.7109,4.967776 +0.5357605,24,862.5706,3.912846 +0.5025054,26,595.9775,3.923262 +0.89996,57,532.7505,5.473657 +0.7650395,53,698.8342,4.994776 +0.7758476,20,845.1518,4.268804 +0.769896,71,98.302,5.297764 +0.6660289,82,968.9507,5.100656 +0.9441867,10,37.19494,4.689927 +0.8946557,52,995.2553,5.374756 +0.7667594,71,705.5376,5.206838 +0.5014517,77,871.1445,4.783311 +0.5965555,7,819.4321,2.854995 +0.8659944,2,758.1844,2.121457 +0.6069824,22,158.3323,3.987152 +0.6479568,94,353.0358,5.176647 +0.5823552,65,489.6782,4.792003 +0.8344934,16,260.4225,4.279719 +0.914692,65,954.2295,5.618436 +0.7871276,33,206.7722,4.724443 +0.6903965,76,163.2536,5.12962 +0.6344172,37,484.5121,4.454353 +0.6875203,61,231.6496,4.951199 +0.7422141,52,591.7167,4.930737 +0.7599737,31,281.7283,4.594985 +0.6880801,23,810.4523,4.174274 +0.81849,54,857.3539,5.1427 +0.8148196,72,388.4852,5.349729 +0.8212496,76,979.5797,5.386053 +0.6091061,50,602.2909,4.639421 +0.8067955,63,27.98457,5.562519 +0.9042222,97,672.1885,5.838087 +0.6244393,47,2.131261,6.358538 +0.5254594,98,625.0347,4.997252 +0.8791726,34,862.3985,5.01207 +0.746068,56,620.111,4.992682 +0.8306618,24,473.0823,4.583617 +0.7019251,90,179.0329,5.269792 +0.820721,3,27.40536,2.585711 +0.6277612,95,375.2626,5.147359 +0.760516,77,973.8867,5.245349 +0.7752467,87,718.0702,5.366682 +0.7374634,28,778.2432,4.445331 +0.7285804,45,770.6425,4.790764 +0.8101368,99,420.6396,5.551649 +0.8354864,2,752.3351,1.967745 +0.9366795,96,934.8403,5.99238 +0.7295988,2,854.2223,1.559671 +0.902451,16,637.7424,4.546596 +0.6556947,67,88.20184,4.998451 +0.8541205,74,192.7775,5.521679 +0.9460709,29,695.1937,5.267903 +0.636149,84,870.8137,5.06554 +0.6345869,49,321.4711,4.677389 +0.8826033,54,110.8286,5.460166 +0.8048285,100,344.4542,5.551093 +0.760377,54,437.62,5.004792 +0.5793991,27,765.2235,4.092846 +0.6896911,15,676.624,3.810868 +0.660633,69,60.04597,5.061003 +0.5156361,16,606.4331,3.513952 +0.893971,53,914.421,5.386176 +0.9322795,45,194.9015,5.536317 +0.9217502,47,148.8462,5.526009 +0.7223354,41,354.2265,4.717427 +0.7254239,21,944.9461,4.181863 +0.708828,75,461.7057,5.127708 +0.7022857,28,137.4031,4.397661 +0.9036889,27,341.8465,4.972055 +0.8784777,44,937.2588,5.193275 +0.6917807,29,917.8933,4.370685 +0.8760101,23,943.734,4.705450 +0.9430376,66,524.9752,5.811901 +0.5017794,92,151.7466,4.928244 +0.8888717,89,367.2177,5.738572 +0.6703306,14,535.2485,3.706171 +0.672854,26,944.1592,4.242406 +0.6472046,80,827.924,5.0506 +0.8772473,5,160.6619,3.382955 +0.8926035,81,187.3492,5.733713 +0.6786785,93,663.5972,5.215532 +0.7578081,65,667.543,5.124931 +0.7833775,55,329.4239,5.081013 +0.7000353,43,82.3758,4.762278 +0.888855,70,652.9058,5.560005 +0.6924933,87,478.0858,5.199561 +0.840106,52,313.4649,5.202915 +0.5399748,25,364.0615,3.959138 +0.902836,16,403.3234,4.557186 +0.6867339,26,969.5584,4.271392 +0.8742233,37,480.4238,5.064757 +0.7599474,67,993.2258,5.14663 +0.883177,65,310.0843,5.512333 +0.6960705,31,389.7709,4.440958 +0.7739131,71,67.05128,5.352244 +0.7563553,22,940.1603,4.295526 +0.8219649,40,352.6679,4.952488 +0.9108295,14,658.4179,4.483537 +0.9498709,73,859.1367,5.912762 +0.8252522,84,979.9907,5.46482 +0.7923822,95,142.433,5.531805 +0.5749987,39,896.3604,4.383877 +0.8141943,10,294.8625,3.793207 +0.5594338,52,69.15462,4.625047 +0.932766,68,273.3,5.796079 +0.6501828,67,958.8537,4.927372 +0.6199984,91,910.7417,5.0943 +0.9105013,61,86.3416,5.723355 +0.6500351,13,101.7401,3.61627 +0.9173677,4,921.6633,3.358811 +0.7483216,56,811.9803,4.994524 +0.6619459,6,672.351,2.841462 +0.7787717,50,588.649,4.988066 +0.6915036,64,334.7062,4.985228 +0.8969362,5,505.469,3.470211 +0.8492126,3,306.2505,2.637068 +0.6736042,74,738.814,5.043914 +0.8280637,68,39.91354,5.600346 +0.9255473,6,906.1636,3.830839 +0.595304,14,217.5326,3.552682 +0.8425488,84,901.4002,5.515823 +0.7499038,4,308.2265,2.622547 +0.7292323,64,240.871,5.072892 +0.5156149,32,761.0943,4.120675 +0.9342052,76,325.2375,5.867557 +0.7430211,54,869.715,4.955698 +0.5554406,32,914.998,4.189741 +0.703071,36,997.2677,4.564418 +0.6830719,69,89.59823,5.077642 +0.6347344,13,419.0303,3.561125 +0.678805,77,456.5152,5.087955 +0.6484101,26,166.0909,4.212926 +0.5956851,21,718.855,3.909814 +0.6716819,49,506.3922,4.742036 +0.880219,4,437.3379,3.137609 +0.6992864,21,926.1055,4.122149 +0.7350454,17,803.2935,4.027239 +0.924039,65,518.5967,5.682937 +0.7097215,47,189.0405,4.809879 +0.820387,6,275.5597,3.317263 +0.9255068,81,23.14098,6.576327 +0.55869,9,627.6641,3.038083 +0.6046422,57,853.3931,4.728344 +0.744582,23,563.4014,4.306778 +0.6502728,57,30.85893,4.969265 +0.7468517,32,992.2413,4.570483 +0.6578665,20,675.1416,3.992919 +0.5214619,89,909.4671,4.920113 +0.8465362,44,158.5620,5.137696 +0.6626981,19,212.1094,3.971124 +0.8807791,42,327.2020,5.194205 +0.7866526,79,760.59,5.326811 +0.7779337,73,365.5488,5.26587 +0.9119104,46,26.67773,5.894684 +0.5792652,7,547.2527,2.817491 +0.5369576,36,356.6722,4.257976 +0.883138,81,393.9469,5.650472 +0.5432084,71,55.75745,4.842559 +0.895006,86,614.9657,5.72293 +0.768465,50,513.2161,4.965069 +0.9327656,92,794.7848,5.945621 +0.7523386,50,317.4484,4.936806 +0.741749,56,496.2921,4.986378 +0.7054378,77,244.3444,5.154722 +0.8930161,52,269.8881,5.405983 +0.8259867,30,446.4984,4.742886 +0.9428722,78,646.6361,5.911485 +0.587867,69,311.0502,4.850746 +0.7552073,27,941.9401,4.457584 +0.7985361,86,716.3606,5.414992 +0.7237573,8,175.6068,3.314545 +0.6685535,57,696.2688,4.845468 +0.5013911,23,945.8882,3.813899 +0.6523594,99,24.28822,5.442461 +0.7394495,49,881.9684,4.876581 +0.854433,28,707.679,4.777123 +0.8204082,83,605.3809,5.451369 +0.79852,86,288.334,5.438983 +0.7310523,85,717.5282,5.25414 +0.9195674,81,107.4469,5.937123 +0.6529936,19,20.64329,4.099437 +0.6067644,22,388.9285,3.975088 +0.8650076,38,466.122,5.050008 +0.6128448,67,98.0593,4.906338 +0.752887,51,922.446,4.935679 +0.6460481,27,814.8709,4.219734 +0.6936537,45,245.3472,4.734685 +0.784517,60,421.8168,5.13995 +0.6001813,61,686.6315,4.772608 +0.9319204,62,696.6375,5.688879 +0.922267,71,823.7056,5.718688 +0.6002578,9,503.0087,3.127464 +0.6310301,6,138.3597,2.776067 +0.8483663,18,189.1734,4.438687 +0.70115,88,191.8286,5.2494 +0.8561147,97,22.70583,6.228308 +0.667727,56,494.8825,4.834405 +0.6542349,9,824.6264,3.246751 +0.5206833,7,729.2577,2.690404 +0.658784,87,246.0525,5.150044 +0.5953643,23,366.7405,3.991525 +0.6766511,91,414.3638,5.203471 +0.825277,42,851.569,4.981794 +0.6250303,58,23.19250,4.962958 +0.8423589,99,93.69587,5.756519 +0.8063293,31,264.1642,4.722025 +0.620299,64,122.1244,4.876939 +0.7893993,47,877.3323,4.96473 +0.6962783,83,146.4735,5.210165 +0.5332282,41,131.3166,4.368617 +0.6765526,53,138.7834,4.842043 +0.8702945,27,497.7323,4.814542 +0.7776173,82,76.84477,5.449936 +0.8220009,15,216.7689,4.187112 +0.924437,7,953.394,3.967118 +0.8349073,25,895.0206,4.621042 +0.5263872,22,348.8703,3.823587 +0.6831776,52,279.0269,4.81924 +0.8806107,92,969.464,5.700816 +0.7174212,95,820.0121,5.301742 +0.6907261,79,551.123,5.12615 +0.6847294,89,759.6159,5.194662 +0.5568725,20,625.1609,3.793706 +0.6078584,10,146.1385,3.259882 +0.7378435,47,589.1384,4.846525 +0.9052463,80,710.1403,5.716327 +0.7568209,43,98.5796,4.888557 +0.5767346,61,609.2453,4.733473 +0.8850829,8,556.3335,3.865227 +0.6507976,72,844.7777,4.981404 +0.7150611,77,310.9208,5.167565 +0.8717278,21,382.6469,4.631755 +0.6029478,52,730.9699,4.657059 +0.8668438,61,542.8423,5.387924 +0.9472293,42,932.0925,5.527578 +0.8546157,31,560.8847,4.858193 +0.6580792,33,540.6646,4.408665 +0.6077477,11,744.3783,3.341634 +0.7560453,46,377.6593,4.879772 +0.5934148,59,364.4261,4.741766 +0.6420253,87,671.283,5.102801 +0.5611765,38,346.1592,4.344532 +0.939425,28,247.0993,5.230175 +0.6246716,11,705.8324,3.378152 +0.5071962,93,202.9717,4.940695 +0.6177509,44,86.61081,4.599245 +0.6201071,90,284.9948,5.100697 +0.7943832,4,651.253,2.767431 +0.5547687,14,92.42605,3.481923 +0.6008824,81,964.5551,4.979063 +0.8629902,95,927.3415,5.661068 +0.5217671,20,910.9093,3.727425 +0.7689205,71,179.86,5.252005 +0.6822136,93,682.3452,5.221752 +0.6892221,24,467.665,4.216273 +0.9466872,49,883.4082,5.627904 +0.782297,14,837.0868,3.984421 +0.6690006,34,806.0445,4.451114 +0.8822465,16,302.8304,4.464571 +0.814535,72,793.6759,5.333641 +0.780475,65,104.4416,5.256237 +0.6682725,41,54.42584,4.684022 +0.8818546,92,241.0917,5.755743 +0.5129674,89,518.6905,4.909487 +0.6083917,7,195.1739,2.888261 +0.8140826,93,353.8889,5.525755 +0.6558119,59,593.6033,4.848487 +0.5921442,53,938.0159,4.651416 +0.6950022,92,367.6952,5.248443 +0.8418083,45,53.97386,5.266512 +0.8581418,9,996.44,3.847388 +0.906525,76,919.7202,5.683072 +0.7922269,86,262.6776,5.426634 +0.8804859,57,874.4561,5.382196 +0.6551834,55,992.6632,4.791359 +0.6348819,63,68.21945,4.925976 +0.539279,2,999.5265,1.043612 +0.5769965,8,480.9133,2.955411 +0.7496352,5,952.3615,2.876907 +0.6318387,42,714.5921,4.545552 +0.8323459,12,329.8476,4.019001 +0.898379,75,202.0454,5.701038 +0.8675291,19,141.8562,4.573326 +0.5642187,34,590.5545,4.256547 +0.8223834,83,86.52396,5.576896 +0.8367909,82,911.1915,5.482459 +0.5391946,30,341.9927,4.112239 +0.7218873,64,588.085,5.037551 +0.712584,25,774.5507,4.297156 +0.6410482,70,466.223,4.94933 +0.9427801,78,553.2906,5.916202 +0.7313513,22,109.2037,4.277424 +0.6818153,96,512.4702,5.246855 +0.5512217,98,992.8429,5.035079 +0.7812837,89,618.1023,5.398797 +0.7540433,88,544.6624,5.331273 +0.7513365,43,739.7543,4.808344 +0.6869057,45,887.4778,4.702743 +0.7466107,87,160.8096,5.348803 +0.6327194,74,213.3965,4.989166 +0.799753,98,822.153,5.503853 +0.5081392,76,11.12948,4.967705 +0.5695873,58,148.3262,4.702562 +0.8698363,93,582.4204,5.680172 +0.7370043,53,83.27543,5.011579 +0.5155987,2,810.935,0.9893308 +0.9243925,64,607.5746,5.669679 +0.5951338,40,455.03,4.443665 +0.9100938,9,241.3229,4.124432 +0.5649921,47,58.03952,4.565033 +0.8871607,49,163.9309,5.37103 +0.6987442,58,873.9467,4.914947 +0.7717202,56,295.2688,5.068172 +0.8971835,26,322.9148,4.913746 +0.7098414,26,138.5701,4.354089 +0.5980129,75,381.2143,4.926538 +0.7466993,8,939.951,3.363184 +0.5817556,27,166.0144,4.111321 +0.6169866,9,789.4504,3.162706 +0.8773756,90,872.0359,5.676485 +0.9487774,19,620.3235,4.984752 +0.6012269,72,648.6574,4.896949 +0.8874921,70,590.1976,5.557023 +0.689685,87,78.50793,5.272388 +0.5055174,93,963.2988,4.927143 +0.6047475,64,893.5502,4.814436 +0.7766777,50,368.8056,4.991917 +0.5686279,25,323.1676,4.012975 +0.7818071,83,226.9735,5.3823 +0.8170889,12,153.6800,3.985706 +0.7977554,29,770.1328,4.626086 +0.7852365,46,989.7344,4.93727 +0.7927683,74,356.9458,5.312917 +0.7867968,6,399.7946,3.195968 +0.8733431,12,935.9138,4.166780 +0.8796833,70,934.9437,5.517356 +0.636514,68,971.9312,4.913639 +0.6808005,20,430.3306,4.045446 +0.6048896,85,981.4121,5.020153 +0.8654105,89,720.428,5.630987 +0.6864552,67,602.496,4.999139 +0.6300466,96,289.0463,5.163596 +0.817489,75,211.2414,5.410742 +0.8400478,92,679.8478,5.573994 +0.5698388,8,300.8922,2.941856 +0.582194,5,504.4376,2.443357 +0.5349201,22,127.5678,3.849569 +0.6187668,22,951.209,3.993716 +0.8008588,62,233.6063,5.225165 +0.5965371,94,40.45694,5.187102 +0.8151207,32,756.864,4.751175 +0.7769006,27,223.2838,4.536306 +0.7174666,8,396.4691,3.288214 +0.7976062,11,776.9354,3.816095 +0.518612,40,443.6649,4.309965 +0.804459,24,381.0473,4.506709 +0.6998635,62,207.0057,4.992047 +0.5738755,63,649.407,4.752359 +0.5914398,66,114.7394,4.847805 +0.7516815,54,737.3794,4.9768 +0.8206513,74,838.3675,5.368303 +0.6892161,22,248.1324,4.152309 +0.7557864,96,773.9158,5.388975 +0.7424069,8,419.5075,3.355515 +0.64102,31,125.2648,4.350865 +0.8755487,29,531.1229,4.887958 +0.8220866,64,95.23995,5.376784 +0.7298066,84,988.9888,5.239885 +0.6498086,59,777.8337,4.835051 +0.5952051,16,43.86029,3.720629 +0.5406545,28,730.805,4.053318 +0.8730058,94,570.9119,5.698879 +0.7848164,39,595.9421,4.819905 +0.5056704,85,235.6726,4.870872 +0.7503822,93,40.40904,5.569652 +0.7623385,77,656.6282,5.254356 +0.9050834,28,639.3919,4.989896 +0.5792019,63,720.7618,4.76066 +0.9365765,81,741.2498,5.889811 +0.5170495,36,709.0156,4.220138 +0.7579033,50,215.9502,4.962113 +0.7261358,35,950.1155,4.592818 +0.867949,61,174.7179,5.443687 +0.8219999,91,90.11405,5.635406 +0.7344778,6,768.4564,3.032963 +0.6391056,66,344.9348,4.907219 +0.715629,5,461.1896,2.780410 +0.9456008,14,125.8034,4.795929 +0.7781412,93,949.9423,5.414954 +0.9017116,9,294.1608,4.070416 +0.7990502,54,177.7193,5.134096 +0.5764074,30,277.9910,4.181882 +0.868876,87,530.6085,5.635381 +0.838551,3,655.3641,2.584304 +0.8733335,81,169.8654,5.663368 +0.8009454,37,421.7654,4.829536 +0.6619069,3,358.1408,1.990475 +0.936464,46,82.03691,5.698119 +0.8662996,15,787.2326,4.326679 +0.6319756,60,396.6261,4.821835 +0.8327794,21,356.1523,4.489936 +0.697243,14,426.6443,3.769716 +0.9422893,39,798.8793,5.442873 +0.8401464,40,876.4566,4.99153 +0.7271848,14,801.7663,3.837801 +0.9366602,79,839.1458,5.871191 +0.8654798,86,219.8499,5.655314 +0.601478,40,521.7851,4.454044 +0.8159394,76,844.3883,5.373576 +0.877629,12,263.1835,4.205521 +0.6199173,63,541.6174,4.832829 +0.8350693,96,494.7244,5.595292 +0.9331142,30,310.2021,5.223768 +0.5971522,26,294.0387,4.101062 +0.7050427,85,799.8672,5.200766 +0.8245875,85,519.8425,5.482495 +0.8156111,40,282.1250,4.940373 +0.5562086,50,914.5773,4.545837 +0.7945503,56,509.8487,5.11224 +0.9002302,48,657.2615,5.351519 +0.7408247,9,582.8542,3.464661 +0.7706727,10,123.3315,3.675843 +0.8233978,87,586.6883,5.492068 +0.6780417,86,613.6269,5.160592 +0.7555267,27,593.3262,4.462403 +0.8589791,98,210.522,5.72345 +0.8564374,49,475.0287,5.201909 +0.6455064,10,888.3926,3.330776 +0.6118692,22,225.4656,3.991082 +0.7097182,9,955.9376,3.380605 +0.8303001,97,751.4643,5.579085 +0.8857616,77,819.6227,5.606405 +0.9371744,94,581.324,5.995916 +0.904798,16,844.1146,4.555205 +0.8052004,76,937.64,5.343849 +0.6413274,76,156.2456,5.034433 +0.5005335,20,619.3793,3.689414 +0.6843155,95,944.576,5.237186 +0.5974006,85,681.7894,5.010067 +0.5821853,27,280.7281,4.104808 +0.8953317,29,409.1469,4.979421 +0.817542,38,884.406,4.885221 +0.6230185,10,126.0652,3.296125 +0.8992164,64,214.1892,5.59214 +0.8508804,86,21.84537,6.12389 +0.6022805,78,638.9464,4.956948 +0.8040262,95,829.4797,5.493623 +0.9077964,51,521.2882,5.434688 +0.7534537,25,426.964,4.399786 +0.9285945,35,190.0018,5.335034 +0.6491223,5,588.7468,2.603757 +0.8181373,96,574.1935,5.544206 +0.7787446,23,373.9165,4.400276 +0.670359,31,124.0375,4.413313 +0.6786379,88,957.521,5.173391 +0.5888266,74,550.2265,4.897334 +0.6085072,66,639.6363,4.845776 +0.6478314,71,985.1027,4.964951 +0.7657263,6,179.6602,3.137958 +0.8456286,68,404.8321,5.399875 +0.5364791,22,998.3107,3.8383 +0.6038707,50,164.2271,4.64913 +0.857209,77,795.551,5.505422 +0.5249804,39,328.439,4.302451 +0.7442277,42,966.5417,4.772024 +0.7201957,47,475.412,4.810843 +0.5699931,24,869.3557,3.975455 +0.6989484,70,816.274,5.051683 +0.7812828,44,2.135128,8.591494 +0.5219076,100,237.0052,5.014755 +0.6106303,98,854.5144,5.13124 +0.5026807,86,224.5775,4.875127 +0.8198123,71,575.1678,5.3441 +0.6138242,71,745.7467,4.907245 +0.6805838,55,638.4604,4.843034 +0.9290318,35,257.3453,5.317635 +0.6470365,22,696.273,4.051653 +0.6337309,97,363.7865,5.172954 +0.7886795,17,643.3402,4.171278 +0.8254145,5,582.7275,3.136136 +0.8516908,52,803.336,5.217638 +0.9166178,8,577.6604,4.041351 +0.8968548,98,527.179,5.820264 +0.5722818,24,793.7203,3.979998 +0.6032017,23,788.499,4.00212 +0.5075828,33,519.9306,4.133535 +0.8657794,62,58.56733,5.593048 +0.6514194,9,397.1311,3.243381 +0.740069,89,621.0678,5.306752 +0.9482056,56,275.5806,5.77576 +0.8230623,9,52.053,3.803464 +0.6082217,53,915.879,4.679475 +0.6464528,5,119.4947,2.607668 +0.8350917,7,226.1173,3.532820 +0.6178383,61,243.0198,4.816592 +0.7782553,77,374.1483,5.303223 +0.8656266,98,739.3553,5.694418 +0.6165961,45,754.2097,4.570610 +0.7231948,97,951.436,5.325928 +0.7702777,54,307.4097,5.037028 +0.7941128,83,842.361,5.377428 +0.9480839,73,274.8127,5.950433 +0.87857,68,853.7356,5.495204 +0.8815007,47,334.6438,5.276524 +0.5020565,73,127.3073,4.761097 +0.8132388,17,766.5308,4.243171 +0.6349836,72,217.501,4.97288 +0.7345042,45,446.8198,4.810678 +0.6324589,56,695.5116,4.765614 +0.6766945,65,682.7241,4.957177 +0.8384446,45,50.39085,5.266822 +0.8292134,96,840.1522,5.567259 +0.6719539,48,656.1994,4.724372 +0.809623,95,56.85168,5.701083 +0.7498366,17,364.4239,4.072086 +0.619014,13,707.4429,3.525017 +0.6811455,74,605.4795,5.060201 +0.882381,46,958.455,5.239598 +0.7015142,82,476.2719,5.175633 +0.5299216,16,494.2751,3.541732 +0.6607211,14,884.8854,3.6824 +0.6563658,76,473.8497,5.036273 +0.9086148,20,348.7688,4.768237 +0.5317627,83,431.7357,4.889704 +0.825882,54,6.723105,6.564159 +0.7910776,83,855.6105,5.369767 +0.5434787,31,396.3381,4.146151 +0.7552404,20,230.9523,4.232531 +0.9128294,2,948.336,2.421541 +0.8734858,3,943.6312,2.752039 +0.7619628,13,46.50071,3.95599 +0.530564,21,589.0549,3.788025 +0.8672307,32,385.6643,4.936566 +0.5758073,16,507.0537,3.630556 +0.9346337,28,207.8552,5.206275 +0.6086858,100,427.5916,5.148903 +0.8526955,60,625.6103,5.325112 +0.7807349,97,208.4894,5.491468 +0.6613672,24,666.5108,4.154454 +0.7868165,30,481.2405,4.628475 +0.9346749,13,889.5627,4.572415 +0.9328514,7,828.8279,4.030245 +0.5606693,6,261.8499,2.607946 +0.8161636,17,780.7351,4.252196 +0.6558015,79,528.6601,5.061497 +0.831897,81,635.7404,5.466197 +0.915886,22,853.311,4.862409 +0.5913286,72,60.15915,4.945122 +0.8646249,33,264.7087,4.962252 +0.8321677,72,908.4424,5.380992 +0.6962891,65,110.6920,5.048255 +0.6304735,72,218.5794,4.964444 +0.6745612,29,459.785,4.34005 +0.9232729,26,918.3574,5.02832 +0.8580391,47,854.3836,5.166712 +0.5624958,56,846.6226,4.643342 +0.7873887,36,127.6685,4.816235 +0.5135421,82,424.3989,4.85195 +0.814808,97,115.9282,5.628076 +0.8753602,40,178.0754,5.167777 +0.6118576,23,147.7502,4.036733 +0.6847514,43,587.8533,4.667379 +0.6061571,47,758.2529,4.585328 +0.5858277,36,416.5601,4.343773 +0.8739752,83,707.7928,5.61507 +0.8375114,6,982.8637,3.372709 +0.9003886,58,173.6305,5.545955 +0.5981954,71,128.2512,4.910756 +0.7455954,57,286.4944,5.020046 +0.7812342,42,253.2611,4.88518 +0.730042,91,961.7669,5.295857 +0.7136859,65,302.7885,5.044119 +0.693914,50,633.6842,4.798753 +0.7007014,9,755.1023,3.35871 +0.5536581,56,347.3614,4.634456 +0.5760761,33,840.6948,4.25189 +0.5446971,18,518.0001,3.677323 +0.843379,13,993.9418,4.115953 +0.787686,66,606.3317,5.208036 +0.824503,100,349.7422,5.603655 +0.8745048,52,832.2114,5.296925 +0.5533256,6,456.3044,2.589675 +0.9002027,32,78.98477,5.199832 +0.7572682,69,955.2467,5.161683 +0.9110095,86,223.9173,5.844839 +0.815023,94,299.6559,5.541953 +0.8908233,97,786.267,5.778197 +0.5329625,8,44.15612,2.887261 +0.5134662,39,538.1438,4.279916 +0.5981097,30,227.5569,4.225254 +0.7171263,75,704.7456,5.138373 +0.930335,42,353.6559,5.438617 +0.8124237,87,3.898780,7.969198 +0.9411632,55,725.4331,5.668858 +0.8050018,42,440.056,4.934311 +0.7530192,22,622.1026,4.290333 +0.8170806,84,470.7614,5.456249 +0.93525,14,386.908,4.651497 +0.7166343,60,104.1422,5.038449 +0.917954,87,868.0088,5.826831 +0.8879323,89,923.3232,5.70781 +0.8616931,37,534.479,5.0154 +0.6735284,59,446.7707,4.885447 +0.7125385,71,553.2622,5.093403 +0.7026195,75,235.6866,5.131304 +0.5473121,3,51.68421,1.711303 +0.6607179,73,43.87053,5.137546 +0.9180171,76,942.4687,5.738086 +0.7645448,19,49.50595,4.30261 +0.733274,29,65.80698,4.546218 +0.7325852,69,130.5952,5.163234 +0.8181913,32,208.0369,4.790727 +0.8948076,14,251.6971,4.419942 +0.6873142,66,993.6974,4.985319 +0.7436848,83,858.6368,5.261985 +0.6818223,2,192.871,1.415344 +0.8277169,97,240.0575,5.609687 +0.5514969,34,543.0716,4.23445 +0.6439629,72,103.1574,5.01859 +0.6550325,8,781.9898,3.12958 +0.6659297,19,936.6371,3.964243 +0.5612373,26,409.1167,4.030819 +0.7397453,2,391.9286,1.594413 +0.6857085,21,758.4541,4.093299 +0.9099568,5,498.0438,3.549488 +0.6577822,82,897.6692,5.086357 +0.500702,72,793.448,4.732607 +0.6754568,15,469.036,3.780968 +0.8649758,48,711.3555,5.208689 +0.9421843,99,391.6264,6.079699 +0.5887436,41,416.7053,4.452386 +0.6453773,33,118.3290,4.412801 +0.5258648,2,717.5804,1.012781 +0.8994016,91,624.9795,5.777852 +0.9174562,84,784.1775,5.804003 +0.6026578,45,320.371,4.553099 +0.7835312,95,79.15228,5.568083 +0.8392914,9,942.9991,3.773431 +0.5477099,23,308.0442,3.902671 +0.6494744,58,864.7787,4.82106 +0.7872531,43,741.0002,4.895919 +0.7405713,93,631.6467,5.337746 +0.5555238,3,66.43276,1.728283 +0.8471521,97,209.7429,5.67748 +0.6715602,45,588.2055,4.675771 +0.7405694,92,749.2553,5.327916 +0.8410912,54,457.7499,5.221268 +0.8757793,69,65.46372,5.692853 +0.7991129,56,816.1179,5.11671 +0.7858377,48,416.5169,4.982474 +0.5952346,45,733.9624,4.532618 +0.6598747,90,74.41126,5.236416 +0.6534484,33,614.6466,4.398455 +0.8005183,24,76.41495,4.570226 +0.8149166,73,807.8775,5.343885 +0.6109188,96,881.563,5.117026 +0.5833846,73,947.8851,4.874815 +0.8332582,88,968.2539,5.518672 +0.6754794,51,86.20849,4.835891 +0.8493183,44,524.7134,5.098639 +0.8793586,56,342.3730,5.390078 +0.9408401,71,467.3872,5.848698 +0.8204796,62,735.2938,5.247582 +0.5961426,44,397.1915,4.521413 +0.9433597,94,329.7532,6.065443 +0.7392313,68,959.699,5.111895 +0.7280047,44,253.7937,4.791354 +0.9357452,29,118.6147,5.291764 +0.5828571,12,498.9039,3.375103 +0.854744,96,453.3386,5.65804 +0.6149968,12,355.3678,3.444266 +0.7638173,54,969.4548,5.001912 +0.7476226,28,43.02059,4.604015 +0.850204,8,125.8630,3.741361 +0.9339542,93,395.239,5.985747 +0.7262818,57,318.2872,4.97424 +0.8771483,94,12.71455,6.793142 +0.8665523,10,839.1073,3.979023 +0.5291674,79,823.083,4.845809 +0.8461989,59,832.332,5.287621 +0.777691,78,744.0216,5.296929 +0.9102575,62,170.4963,5.642964 +0.8246145,85,441.5772,5.486911 +0.7071098,60,820.3086,4.956934 +0.764151,61,333.7483,5.108028 +0.5108066,80,644.122,4.827203 +0.7611696,16,294.2634,4.053159 +0.8603075,85,563.544,5.58912 +0.8424507,6,611.1168,3.395027 +0.6682346,29,18.91631,4.544126 +0.8095137,51,364.8527,5.093099 +0.7633285,38,899.6544,4.74209 +0.7597025,69,397.2478,5.181009 +0.5636095,68,83.49942,4.830507 +0.6316091,93,477.1815,5.135545 +0.6936116,17,552.0311,3.931617 +0.6651088,22,472.8825,4.091816 +0.6405015,26,806.6532,4.177675 +0.7669137,26,886.3107,4.457322 +0.5879523,43,646.7016,4.485114 +0.6280889,46,774.7226,4.608213 +0.5473221,16,613.2056,3.574369 +0.7583959,54,624.1828,4.994282 +0.7935764,27,411.9446,4.567327 +0.6500053,78,147.9928,5.072065 +0.7342936,74,691.8988,5.164618 +0.6859192,72,91.85724,5.113456 +0.8017832,38,38.24381,5.052178 +0.7350069,90,887.2783,5.299267 +0.5002206,82,194.0412,4.837904 +0.7533237,28,614.7288,4.48545 +0.6214808,73,677.9877,4.941362 +0.6034381,66,904.2544,4.834818 +0.6045959,2,877.1838,1.202471 +0.9191417,39,669.9381,5.300754 +0.6090986,15,6.147124,4.030793 +0.728691,100,992.5201,5.357287 +0.5803494,68,749.7505,4.818952 +0.918249,54,720.6098,5.51828 +0.5866335,42,368.2729,4.46873 +0.6226366,31,350.1711,4.293452 +0.7953375,27,164.7003,4.599415 +0.9233556,20,545.3525,4.841628 +0.693924,97,812.52,5.270879 +0.937212,74,26.53409,6.523377 +0.6805653,66,47.1862,5.100028 +0.7598593,85,643.3909,5.317449 +0.8058038,66,761.6447,5.250769 +0.8822559,54,532.8792,5.361971 +0.614166,33,678.061,4.322546 +0.5167548,13,344.9084,3.321401 +0.737005,56,5.424758,6.144477 +0.629088,3,598.6654,1.901919 +0.7769968,90,932.9398,5.390308 +0.6373748,34,936.7224,4.388537 +0.6587434,3,926.8075,1.980018 +0.5993432,94,95.931,5.129989 +0.5982387,29,182.5984,4.201114 +0.751724,11,552.4189,3.684922 +0.9073577,62,482.2382,5.567918 +0.8150025,43,122.7201,5.036162 +0.9243253,80,255.6612,5.857814 +0.6357316,58,495.1672,4.800787 +0.6556389,55,670.6358,4.795017 +0.5861568,55,27.15277,4.798386 +0.5978707,90,24.57173,5.221317 +0.6896733,96,195.3440,5.286647 +0.7350595,10,527.6045,3.550931 +0.6093675,12,663.3941,3.429223 +0.9398014,83,857.6633,5.922471 +0.7034168,87,443.1984,5.22213 +0.8345302,96,179.5248,5.641706 +0.5045654,19,171.2933,3.657253 +0.620858,27,380.0845,4.17572 +0.7262354,41,629.6416,4.717633 +0.7868302,46,629.6635,4.946523 +0.5429665,45,958.0298,4.441479 +0.8342748,98,286.7754,5.626783 +0.8041123,3,250.152,2.447191 +0.9403823,19,121.3608,4.999848 +0.7703869,74,891.5093,5.241131 +0.6782789,68,560.84,4.994993 +0.7609106,83,106.6299,5.379529 +0.7128542,66,300.9281,5.053566 +0.7754385,59,752.3254,5.095663 +0.6046017,21,642.2645,3.927618 +0.8529898,27,139.1238,4.798382 +0.636852,89,561.0196,5.111686 +0.9056183,86,387.1032,5.785767 +0.8224681,98,77.91344,5.710191 +0.5523867,13,804.8892,3.388849 +0.8291812,27,953.4762,4.661662 +0.8177408,34,269.3261,4.826065 +0.7287865,84,327.9159,5.25608 +0.8268878,29,43.29403,4.896835 +0.8671857,63,838.8865,5.402451 +0.8206525,53,195.2608,5.177668 +0.885049,98,626.2624,5.76788 +0.8990428,17,665.0439,4.577079 +0.6184093,100,463.2699,5.16428 +0.6138274,89,98.59672,5.11673 +0.8989895,91,652.5609,5.774916 +0.9167108,2,451.0968,2.454734 +0.6440376,3,173.423,1.945308 +0.5069269,8,320.9178,2.808423 +0.8790291,26,308.1264,4.833917 +0.817952,64,604.5596,5.266006 +0.7055887,5,673.2377,2.751103 +0.5783787,47,488.5517,4.539385 +0.6382853,9,577.6296,3.211400 +0.7494703,97,843.769,5.381327 +0.928212,21,92.71302,5.017997 +0.8945758,52,541.9428,5.386425 +0.9273533,29,110.0864,5.241252 +0.8712363,22,733.1957,4.654638 +0.681578,15,609.8606,3.792997 +0.9367158,23,38.28047,5.357522 +0.6860431,23,526.7873,4.172916 +0.946944,59,935.9354,5.751069 +0.8369122,62,745.5164,5.295105 +0.6243354,12,113.3691,3.479315 +0.6961065,17,401.2276,3.940114 +0.7622478,63,32.24591,5.361083 +0.6641784,83,513.3596,5.112256 +0.8703236,94,373.651,5.703827 +0.804767,42,894.5125,4.922929 +0.9440183,8,589.8074,4.246075 +0.6568347,90,353.4818,5.162083 +0.6973254,49,536.6094,4.792459 +0.6027091,22,107.0788,3.987613 +0.8687902,8,406.4523,3.792343 +0.6808716,68,779.8336,4.996458 +0.8583502,77,543.5237,5.51734 +0.9003844,71,810.7064,5.613159 +0.6359577,39,653.3212,4.496185 +0.7515497,45,191.9571,4.87259 +0.8712656,28,769.8281,4.838561 +0.6389448,85,906.1354,5.078503 +0.8614109,75,455.1657,5.51486 +0.5651436,48,913.2336,4.529435 +0.7610586,36,14.70605,5.143973 +0.8849197,17,692.9311,4.509625 +0.5267559,97,238.4357,5.000668 +0.8903445,65,446.8721,5.526908 +0.8770817,38,611.0206,5.090063 +0.8014531,67,382.1654,5.264014 +0.8535349,37,465.0802,4.989573 +0.5623505,16,46.12436,3.645094 +0.5837253,64,787.677,4.779464 +0.723658,50,863.5468,4.857386 +0.8564433,31,155.9212,4.911108 +0.9016261,37,59.11041,5.373747 +0.7303029,86,781.0103,5.259658 +0.7005043,98,556.3923,5.295225 +0.7180099,50,367.8436,4.856627 +0.9047978,22,993.9773,4.801455 +0.9126542,43,635.5784,5.335726 +0.7540421,2,224.3753,1.645104 +0.6360051,35,219.6251,4.424294 +0.8953461,53,753.7426,5.395435 +0.6365136,59,401.6807,4.817458 +0.928798,33,286.4699,5.268117 +0.9313734,89,13.00577,7.330162 +0.6127697,76,716.6624,4.955088 +0.7783512,32,544.107,4.654195 +0.8174788,20,838.73,4.389137 +0.8821462,49,274.2839,5.317271 +0.8402305,17,112.4692,4.387457 +0.7712608,36,101.398,4.78705 +0.71034,76,598.5716,5.136129 +0.5360852,35,592.9235,4.230668 +0.6590919,31,385.5477,4.36415 +0.9290205,86,167.1354,5.972936 +0.764866,11,895.893,3.718443 +0.8687183,76,210.8759,5.585765 +0.5457105,93,738.9931,4.990496 +0.5768204,27,113.9398,4.109705 +0.6897985,28,949.4001,4.338094 +0.7089148,99,806.9645,5.313572 +0.8057506,75,85.7964,5.453375 +0.8763766,4,506.4466,3.116303 +0.7624966,17,586.6706,4.099870 +0.939108,20,231.2577,4.979989 +0.5127664,27,809.2373,3.972834 +0.8927624,97,938.547,5.78237 +0.932796,100,77.90402,6.235576 +0.8703162,49,4.716565,7.690852 +0.8896408,5,86.81217,3.474228 +0.9108773,32,432.7296,5.126532 +0.6567976,82,872.5033,5.084811 +0.7518393,44,331.6293,4.839539 +0.5124162,27,275.0050,3.97686 +0.8612289,60,830.469,5.348553 +0.6776792,99,277.8799,5.27316 +0.8132378,86,368.4492,5.46904 +0.8724424,21,273.9887,4.644203 +0.6566044,64,86.6614,4.967259 +0.7538613,57,913.709,5.018571 +0.7935557,91,850.0482,5.438334 +0.5375645,19,508.9865,3.712566 +0.661665,75,580.1227,5.033955 +0.7219753,29,630.5849,4.439406 +0.5929547,38,192.0488,4.410132 +0.5711968,33,901.1568,4.242911 +0.9488055,89,921.9764,6.028084 +0.525361,88,201.8421,4.930438 +0.6649385,20,472.2082,4.010333 +0.5811662,13,152.8478,3.457696 +0.6499022,49,988.2758,4.695065 +0.677492,61,96.13616,4.969053 +0.590887,55,668.5633,4.679121 +0.759376,56,66.90409,5.134457 +0.5629632,4,81.52404,2.133665 +0.9168937,2,602.7444,2.454823 +0.5553233,47,641.6247,4.497973 +0.8793849,54,14.76064,6.1751 +0.8370545,23,53.10852,4.706975 +0.9032895,80,243.7683,5.753165 +0.664133,13,472.0562,3.625055 +0.7629233,86,414.7802,5.341122 +0.8270712,100,770.9533,5.589796 +0.6800086,13,53.56172,3.715934 +0.7511743,14,774.9862,3.899366 +0.7024368,27,108.2775,4.378215 +0.6683634,88,632.6104,5.158543 +0.8007708,35,679.7018,4.779465 +0.748455,68,74.26819,5.238721 +0.7580406,40,830.2967,4.768767 +0.6867868,16,479.4874,3.863907 +0.6345033,24,263.9350,4.108572 +0.9007885,20,503.914,4.718357 +0.7528125,81,679.4688,5.26777 +0.722395,70,318.6385,5.114427 +0.6747357,84,329.5006,5.148071 +0.5546724,16,689.949,3.588185 +0.765431,96,635.3626,5.413237 +0.5213844,28,166.1044,4.028827 +0.9055309,60,129.6213,5.624808 +0.5553817,35,980.6865,4.262468 +0.7184163,69,195.7097,5.111313 +0.5517323,18,802.4538,3.689246 +0.8142866,16,192.9957,4.220405 +0.8211981,3,258.9440,2.515333 +0.7878401,40,134.0559,4.89549 +0.8678996,45,140.8237,5.2421 +0.8137556,53,902.648,5.115614 +0.8358842,84,525.9433,5.506658 +0.6276921,2,695.4127,1.262518 +0.5544768,23,608.4648,3.911448 +0.7520554,22,888.8863,4.285105 +0.8799472,80,81.06966,5.776644 +0.8867459,71,192.9068,5.616458 +0.7170759,68,781.6296,5.06764 +0.614698,86,809.9607,5.046108 +0.582755,27,459.0978,4.101695 +0.615332,92,544.057,5.098476 +0.6483776,30,593.08,4.312197 +0.5182611,100,523.3287,5.001569 +0.7584443,98,146.7554,5.465532 +0.5973876,44,322.7757,4.525969 +0.6765142,38,715.8464,4.554027 +0.858699,64,971.8032,5.381975 +0.8657619,41,119.6429,5.179392 +0.8041556,5,304.7493,3.062042 +0.8865578,21,170.7769,4.726991 +0.6362995,16,81.66367,3.784736 +0.8037017,23,319.2337,4.474112 +0.935349,58,92.10311,5.834605 +0.6449784,75,534.9246,5.004607 +0.933069,77,135.6208,5.9515 +0.6285273,30,718.4376,4.272305 +0.7745992,51,646.361,4.990833 +0.9437443,28,201.3896,5.2771 +0.5553825,35,84.21426,4.292884 +0.691553,44,561.0249,4.699133 +0.7143561,74,606.226,5.125183 +0.9150011,64,868.6043,5.61144 +0.8900851,64,962.8469,5.497329 +0.7627361,89,839.356,5.35164 +0.5916001,19,553.8613,3.815483 +0.9347603,73,40.74093,6.246896 +0.611588,53,781.641,4.686268 +0.8381018,12,577.5503,4.031852 +0.7502626,8,508.3221,3.376268 +0.9077881,81,485.243,5.747453 +0.6604791,57,138.3778,4.864026 +0.5258188,88,750.15,4.919488 +0.7342328,75,540.5984,5.177501 +0.8287273,9,225.8167,3.751461 +0.9260355,9,459.3007,4.212197 +0.6270818,49,708.4415,4.655174 +0.5232657,73,949.5204,4.777819 +0.7676596,92,877.2513,5.384683 +0.8505276,37,776.581,4.970133 +0.9067703,50,944.0097,5.403308 +0.6516737,4,969.1537,2.340581 +0.5532437,8,799.1578,2.9033 +0.6457954,35,483.9951,4.432293 +0.6798643,19,401.1541,4.00008 +0.8913252,67,246.9467,5.579023 +0.8724801,71,237.0759,5.545666 +0.611114,8,908.8348,3.028642 +0.6440464,100,711.3521,5.203401 +0.5185833,39,497.3006,4.288981 +0.5987208,71,553.9285,4.883768 +0.8946845,33,764.2923,5.057894 +0.7702922,34,891.2136,4.674803 +0.8601194,27,672.5945,4.770744 +0.899896,38,752.2178,5.183315 +0.705802,48,362.9667,4.800478 +0.9295424,13,589.0369,4.541681 +0.6700632,91,571.293,5.186371 +0.7856916,3,348.2827,2.375896 +0.5164215,12,683.4326,3.24084 +0.5999788,60,659.1165,4.760225 +0.7430723,82,309.4263,5.271649 +0.6201451,87,102.5936,5.110393 +0.7364097,8,993.3758,3.334495 +0.889546,33,426.7778,5.047535 +0.7509362,51,760.6958,4.93314 +0.9496297,54,579.4342,5.726496 +0.7411664,9,999.2333,3.463098 +0.7252757,38,63.7578,4.747703 +0.8886869,59,85.71176,5.588225 +0.6316102,77,617.5745,4.99833 +0.6470583,23,802.9517,4.088519 +0.7556348,18,182.8062,4.150528 +0.6398546,83,429.5057,5.070863 +0.8742836,47,71.49425,5.384054 +0.9243806,69,251.6256,5.760898 +0.8849305,76,462.3092,5.609127 +0.6190392,89,919.5525,5.076913 +0.7086243,74,75.11446,5.201722 +0.611401,100,285.8263,5.160096 +0.5438444,40,553.223,4.352044 +0.6381758,74,417.0031,4.985918 +0.5709375,60,606.9691,4.711341 +0.6656767,8,591.2158,3.155852 +0.6668269,77,838.8434,5.058611 +0.6259845,41,256.3687,4.527205 +0.6382646,92,531.2887,5.138163 +0.5790715,42,133.6754,4.471822 +0.5505636,44,53.26842,4.487644 +0.7873557,18,109.4958,4.261192 +0.9278928,34,803.4808,5.25132 +0.6506427,40,322.5025,4.55164 +0.636289,14,439.4037,3.632874 +0.5138037,17,541.6375,3.566823 +0.7490946,24,208.8606,4.370446 +0.5264396,24,176.6778,3.905171 +0.5862563,42,460.3187,4.46604 +0.8596417,57,917.1627,5.306278 +0.5490575,43,659.7477,4.417489 +0.8022336,2,611.0282,1.823408 +0.62453,71,712.8487,4.926108 +0.9447033,25,993.19,5.144499 +0.6984111,12,901.4631,3.626986 +0.8310141,56,298.2470,5.229228 +0.7551605,74,724.2943,5.209182 +0.9028476,48,179.1977,5.421774 +0.5226023,80,250.3484,4.853282 +0.6273796,15,284.8897,3.680715 +0.5101388,9,799.4037,2.937410 +0.8970192,84,201.2089,5.771734 +0.7243075,13,98.06574,3.799825 +0.6452252,9,875.8479,3.225854 +0.6703307,76,359.7317,5.066694 +0.7062982,29,334.3508,4.412282 +0.9362348,36,821.206,5.344544 +0.7755292,52,741.3775,5.005386 +0.7115857,52,936.8725,4.860348 +0.6793413,30,229.3854,4.388151 +0.6130655,31,660.8805,4.270066 +0.7027686,53,625.6065,4.860058 +0.6274324,12,824.7647,3.466937 +0.7963726,5,994.202,3.027711 +0.8681058,60,90.89657,5.501354 +0.6015066,36,175.3427,4.384748 +0.6447442,38,735.3686,4.491722 +0.6795336,70,721.4585,5.015486 +0.7723539,75,896.9785,5.254934 +0.9078405,81,367.5354,5.759166 +0.6164017,8,73.57849,3.064286 +0.8370671,27,296.2669,4.70746 +0.797849,35,873.8625,4.76869 +0.7180328,33,339.4326,4.540756 +0.6986307,40,390.1059,4.645778 +0.8793415,2,188.5154,2.204849 +0.7290775,37,189.5800,4.669984 +0.888677,11,590.1095,4.166872 +0.7031697,39,530.7594,4.631734 +0.6527077,20,552.1618,3.98336 +0.6907402,65,105.7456,5.039006 +0.8501955,84,714.7776,5.543259 +0.6880136,85,948.7286,5.166637 +0.9312943,36,281.7262,5.347377 +0.7972013,66,878.5866,5.226604 +0.8539718,31,911.604,4.849066 +0.705903,64,72.05808,5.091427 +0.6510286,57,730.2199,4.812274 +0.5237086,8,359.0167,2.843074 +0.8376964,23,287.2865,4.58462 +0.9112111,65,439.1747,5.621653 +0.7693145,21,654.116,4.293623 +0.7690674,6,60.02425,3.182115 +0.8479559,89,46.64795,5.840863 +0.7676322,73,254.1046,5.252961 +0.8763505,43,33.84927,5.508428 +0.6333285,91,779.6607,5.118105 +0.5761417,16,363.9524,3.632995 +0.5943329,67,953.5303,4.830177 +0.886703,87,255.9935,5.733959 +0.7707937,56,995.4612,5.044243 +0.8661679,83,71.95059,5.766113 +0.6604832,48,823.6246,4.70053 +0.6021952,66,988.3845,4.832242 +0.8521975,100,10.07298,6.88639 +0.9453367,53,680.6012,5.676072 +0.8578552,45,555.8434,5.142528 +0.7095984,97,328.0429,5.316697 +0.7875645,82,318.109,5.374691 +0.7601498,37,449.384,4.7226 +0.8680032,78,332.5949,5.575869 +0.8951179,40,810.7306,5.196888 +0.7677873,36,646.9899,4.715364 +0.6233557,40,133.7175,4.51815 +0.6236224,31,282.5713,4.298041 +0.7886229,45,889.8385,4.930839 +0.9113417,13,704.8534,4.424861 +0.8048366,83,912.4802,5.403325 +0.8876121,73,97.97675,5.714737 +0.6566803,93,847.2992,5.173379 +0.7361686,23,484.196,4.288003 +0.6405429,27,119.6107,4.237244 +0.8265951,70,771.4504,5.348116 +0.9063825,83,216.2709,5.801286 +0.7329975,51,823.1752,4.892481 +0.707735,32,819.8191,4.483689 +0.8063754,92,985.24,5.475727 +0.5671987,36,8.130045,4.622987 +0.5949391,74,888.767,4.904264 +0.8925676,86,470.7429,5.72116 +0.9111893,86,206.8652,5.852285 +0.868771,39,701.3807,5.074553 +0.6581741,57,851.498,4.824371 +0.7124499,5,309.5104,2.773728 +0.6160275,3,927.5913,1.867738 +0.9077186,87,515.2092,5.791704 +0.6809903,100,251.1352,5.289401 +0.8249242,51,644.1882,5.124642 +0.5007189,63,489.9313,4.634174 +0.5823059,34,995.1942,4.286632 +0.8764704,96,332.826,5.745166 +0.9279742,62,399.9774,5.684188 +0.6058798,51,161.1977,4.668592 +0.6692909,73,918.8406,5.024354 +0.8575137,59,187.4093,5.376903 +0.7945395,21,115.6826,4.410157 +0.5041056,70,246.2471,4.72404 +0.6811694,74,584.603,5.06067 +0.5047193,32,918.3743,4.101420 +0.62641,45,241.3786,4.601556 +0.9231728,95,684.2123,5.916083 +0.8906883,62,79.7124,5.646251 +0.6451526,81,823.5166,5.055857 +0.5843882,2,572.7973,1.152088 +0.9415851,71,805.8501,5.836022 +0.5650946,58,264.105,4.683902 +0.6622129,74,503.0527,5.02709 +0.5227259,6,595.5645,2.522141 +0.7577065,89,300.0612,5.362241 +0.6885727,58,634.3311,4.897823 +0.6582183,24,597.0416,4.148695 +0.7621428,54,4.677027,6.505218 +0.6300545,61,732.2958,4.824428 +0.717593,81,639.7483,5.194602 +0.8089698,37,624.8774,4.84518 +0.8819809,71,110.4756,5.653277 +0.6684123,12,487.6716,3.55997 +0.731306,31,689.6599,4.512494 +0.7449809,77,364.2442,5.22728 +0.8060204,30,394.1408,4.685581 +0.7902367,72,962.9857,5.268578 +0.6622077,91,992.0186,5.166785 +0.9423636,49,688.1545,5.601706 +0.6138338,28,490.9497,4.190094 +0.6153132,49,371.723,4.639831 +0.5919034,26,88.76052,4.115030 +0.6712624,15,954.8967,3.767796 +0.7370935,16,271.2719,3.991453 +0.8260105,53,607.0709,5.156222 +0.7039847,34,370.7429,4.531785 +0.6835765,63,263.0202,4.963496 +0.6792575,13,78.47224,3.694629 +0.6581926,70,940.6411,4.97371 +0.6659625,74,701.9212,5.030244 +0.943103,48,552.5686,5.599539 +0.8172628,97,241.8532,5.579464 +0.6088576,48,431.5509,4.610688 +0.9066039,89,915.7831,5.786188 +0.8887035,57,401.5979,5.434053 +0.6746067,59,188.1885,4.906911 +0.6599387,2,803.0654,1.350025 +0.9274535,2,764.3575,2.542979 +0.5526748,73,4.931036,5.369283 +0.685566,91,873.84,5.210347 +0.9252521,76,580.645,5.788709 +0.624663,50,56.6223,4.739905 +0.8917172,14,592.4602,4.385331 +0.8361517,93,147.1155,5.641347 +0.855131,5,697.6645,3.25786 +0.616702,63,697.7248,4.82506 +0.7131682,24,436.9471,4.270307 +0.5582717,56,141.712,4.656545 +0.8133165,99,914.7708,5.543544 +0.7850109,35,122.0806,4.790481 +0.6573884,93,362.8063,5.185657 +0.6709559,81,324.0598,5.115466 +0.675296,3,276.5954,2.028428 +0.744242,41,77.85827,4.838235 +0.8627685,88,504.0866,5.623501 +0.823486,31,633.4859,4.754332 +0.9152854,22,663.1988,4.862911 +0.889191,25,632.754,4.830601 +0.5320597,23,522.3386,3.870895 +0.8348069,4,353.5423,2.926616 +0.5506804,92,605.5381,4.991792 +0.7402406,91,248.1225,5.345439 +0.6606832,91,199.1307,5.191928 +0.6876065,25,697.7802,4.243088 +0.8396906,17,69.82845,4.424644 +0.8303857,99,915.3883,5.589564 +0.670205,52,201.1685,4.801504 +0.5688656,16,839.9051,3.615185 +0.6059302,57,884.9344,4.730385 +0.625943,13,421.1995,3.542213 +0.579431,11,698.7441,3.282398 +0.5107836,30,521.7842,4.059707 +0.7034076,59,806.1451,4.937422 +0.5348029,85,608.8314,4.909535 +0.8178558,52,767.8403,5.115544 +0.8021263,97,609.5435,5.508143 +0.6139589,32,718.7935,4.297009 +0.6199155,18,820.2245,3.822254 +0.8459365,22,737.9467,4.560176 +0.7804563,6,534.7507,3.173321 +0.5024161,35,483.8863,4.173427 +0.8757202,43,105.3846,5.269118 +0.5523042,3,511.2241,1.711368 +0.710674,44,138.0479,4.774404 +0.8872324,57,781.0616,5.410725 +0.6919563,13,743.3296,3.686274 +0.5287773,88,847.8963,4.923581 +0.6964034,68,916.3211,5.024973 +0.6097059,34,425.8519,4.341618 +0.6914693,5,342.4144,2.715573 +0.6908814,75,600.6959,5.088477 +0.7843654,22,908.377,4.369244 +0.6641371,52,390.4209,4.775486 +0.7738185,93,701.611,5.409122 +0.8668095,75,18.17850,6.218107 +0.8612623,84,728.9866,5.578543 +0.7244234,31,540.4559,4.499312 +0.8197609,4,359.5769,2.865559 +0.7343252,8,199.2936,3.341473 +0.6836545,55,307.1725,4.859945 +0.8095471,62,373.0194,5.23192 +0.7809187,81,376.8042,5.344588 +0.7497668,97,103.3747,5.465082 +0.9281159,54,946.8552,5.567694 +0.7009217,95,200.3139,5.300944 +0.5690716,17,188.3412,3.680089 +0.7616844,55,650.7446,5.014634 +0.7634251,52,850.2973,4.974944 +0.6935619,21,385.6687,4.116289 +0.570187,27,798.2554,4.075779 +0.8573198,35,201.5977,4.991557 +0.9254133,3,227.7771,3.100818 +0.6926173,80,169.8465,5.169298 +0.7957502,80,579.6955,5.362447 +0.8909846,60,580.5683,5.467522 +0.6101913,7,739.8612,2.885962 +0.9292679,60,774.9304,5.648684 +0.6020853,83,329.8084,5.008931 +0.8730834,90,975.1034,5.659242 +0.615229,29,780.1903,4.218847 +0.6368305,62,272.5524,4.861233 +0.785301,88,625.0687,5.400485 +0.7612865,62,271.0423,5.119176 +0.6491867,8,449.3793,3.117950 +0.7028936,21,964.8851,4.130015 +0.7351485,36,435.3573,4.643088 +0.5901236,54,682.5866,4.66379 +0.8711818,7,971.5228,3.668632 +0.7885463,27,710.0058,4.545948 +0.8615259,27,922.5975,4.772005 +0.9423586,100,857.2488,6.056786 +0.5641551,45,95.40686,4.508179 +0.5478364,32,717.8125,4.177136 +0.9463165,16,838.3264,4.827952 +0.6402324,83,670.1578,5.066309 +0.8372235,89,450.2324,5.553761 +0.9247225,92,559.3225,5.910356 +0.8252188,14,982.6037,4.116096 +0.7574355,58,76.46756,5.140588 +0.641243,6,230.5134,2.795860 +0.5718324,66,218.8287,4.79571 +0.8140738,93,464.7936,5.51726 +0.9040285,7,963.9252,3.83736 +0.9163233,29,109.8488,5.171177 +0.8748685,10,834.4159,4.015456 +0.879919,59,813.5775,5.404823 +0.7757908,51,24.82199,5.310636 +0.7253728,87,268.653,5.279343 +0.7804497,47,914.5564,4.941718 +0.8855489,99,398.2152,5.791743 +0.6244977,39,690.1232,4.47439 +0.7809398,7,858.4253,3.331407 +0.9274042,80,869.2504,5.823213 +0.6230907,68,340.9755,4.900364 +0.7848126,79,316.7394,5.342187 +0.8068917,87,468.6103,5.45299 +0.8530915,95,969.5945,5.628566 +0.7027934,73,539.2994,5.093997 +0.8731742,84,621.7372,5.623118 +0.7634371,11,181.9686,3.733192 +0.6286905,42,288.0719,4.549231 +0.8355486,81,770.2646,5.473221 +0.7263397,96,641.287,5.329899 +0.7291552,22,869.557,4.22971 +0.7014426,13,170.1686,3.725237 +0.568906,9,932.683,3.058732 +0.6805077,21,636.6685,4.083097 +0.8519636,19,719.8393,4.465273 +0.5840272,10,293.2955,3.201459 +0.9297056,42,307.3728,5.441351 +0.8996739,11,116.8909,4.276207 +0.7365314,67,154.0723,5.141475 +0.763537,20,855.483,4.236114 +0.9162934,13,583.4637,4.456551 +0.7383305,87,578.0058,5.288548 +0.6220495,76,653.0012,4.971777 +0.6959088,17,204.1746,3.949512 +0.9408439,64,526.8199,5.776257 +0.9072844,39,816.4094,5.235457 +0.614806,36,866.7964,4.392034 +0.8616143,15,538.4074,4.31235 +0.5916647,82,276.8439,4.985187 +0.6381437,56,308.9643,4.785542 +0.6102399,84,288.0863,5.033928 +0.881096,65,423.3302,5.491607 +0.8805683,77,63.34668,5.801957 +0.8317284,24,465.7188,4.587363 +0.938735,16,346.6328,4.786943 +0.7878217,76,601.5734,5.306758 +0.8145564,100,76.89838,5.701038 +0.8641405,21,465.8502,4.597313 +0.9193547,50,890.4468,5.467787 +0.7352061,62,621.5478,5.042233 +0.875424,97,663.1315,5.724161 +0.5947927,15,437.6885,3.610047 +0.9293856,42,154.1849,5.489918 +0.8981893,100,195.0101,5.895842 +0.7722383,39,397.162,4.794676 +0.9468243,2,427.845,2.741961 +0.7672563,5,64.92349,2.969334 +0.753621,75,98.68655,5.295252 +0.7196577,37,662.6364,4.62432 +0.6445426,69,400.8762,4.947273 +0.621717,58,797.6387,4.77164 +0.754107,15,637.9203,3.969023 +0.7000804,99,874.8527,5.295806 +0.6727205,31,348.9427,4.393295 +0.7419021,51,307.5882,4.928106 +0.9111804,26,953.7102,4.960184 +0.6518057,68,78.44112,5.009199 +0.7369495,90,950.977,5.302565 +0.5943179,38,567.3262,4.399971 +0.9148237,17,146.5165,4.716318 +0.5039681,13,962.0642,3.293958 +0.8940384,66,260.9585,5.577167 +0.6596946,18,58.33929,3.961345 +0.7745604,80,873.7772,5.304947 +0.5579154,44,577.4417,4.451439 +0.6792655,79,305.888,5.114813 +0.7721706,74,725.1806,5.247874 +0.8730904,27,452.3935,4.827657 +0.8668253,43,479.2732,5.145368 +0.9243933,68,715.7662,5.70527 +0.8697712,45,759.5009,5.179335 +0.5704939,24,771.9525,3.976776 +0.849549,21,171.7464,4.57335 +0.7153914,68,756.1855,5.064555 +0.7469934,89,37.00684,5.545569 +0.8980766,93,735.0168,5.782137 +0.6740698,15,908.684,3.774217 +0.7262363,18,196.8211,4.073023 +0.7726955,93,825.9488,5.404193 +0.7877387,57,83.19955,5.202352 +0.5402169,35,836.5996,4.236559 +0.647406,92,696.285,5.15123 +0.6369996,43,600.33,4.574637 +0.5011999,34,536.5494,4.147083 +0.5253697,34,959.3483,4.186866 +0.6654399,10,953.6924,3.376122 +0.5754832,59,82.33117,4.746022 +0.6149122,12,758.6291,3.44049 +0.7273927,5,827.2032,2.811743 +0.765783,4,480.0208,2.671068 +0.8026067,20,628.1018,4.346873 +0.6688459,16,552.1669,3.822802 +0.654652,65,429.9494,4.921309 +0.5930605,54,299.062,4.676825 +0.91803,98,475.8612,5.921616 +0.8586014,94,822.9594,5.641858 +0.8724855,40,320.3798,5.126823 +0.9115961,67,663.3112,5.630971 +0.6378116,67,41.66062,5.02444 +0.783027,17,444.7541,4.159232 +0.8044376,26,517.2797,4.564801 +0.884418,84,946.382,5.656019 +0.9450776,82,74.40857,6.2069 +0.922469,81,659.5106,5.811031 +0.7723949,73,576.8139,5.242505 +0.914753,7,951.6982,3.902467 +0.808698,53,628.3094,5.106761 +0.785287,4,458.7135,2.737001 +0.6806215,13,703.8973,3.660244 +0.8762955,72,590.0658,5.53288 +0.8162853,79,92.18472,5.514161 +0.5399384,14,760.7746,3.434936 +0.724187,81,366.0025,5.218172 +0.5878947,23,272.8676,3.979876 +0.6592433,83,684.7305,5.099926 +0.886695,15,846.1366,4.414048 +0.7518114,65,513.9724,5.11545 +0.9269379,97,254.9159,5.999051 +0.7133172,82,926.9479,5.190505 +0.7594595,8,51.29232,3.464126 +0.8804678,52,914.019,5.318195 +0.5581051,54,949.4543,4.607886 +0.7872128,50,176.9121,5.045582 +0.7148681,29,874.4857,4.420948 +0.5074475,99,315.6612,4.981299 +0.6011498,70,222.744,4.89042 +0.8461398,49,937.784,5.155603 +0.9156136,74,311.1483,5.746345 +0.8033553,5,645.5019,3.053856 +0.6536788,98,629.0644,5.207469 +0.6301262,28,942.7225,4.217727 +0.871035,28,588.5174,4.841785 +0.9431953,11,805.0258,4.504676 +0.7250134,37,667.4511,4.636032 +0.8318205,86,759.111,5.502966 +0.7024738,45,490.5817,4.740243 +0.8091045,40,202.2661,4.934256 +0.6403498,12,429.5813,3.497927 +0.9449746,23,50.44319,5.349677 +0.851621,98,259.8235,5.685683 +0.9016514,15,42.46861,4.69127 +0.5920015,28,439.8243,4.149594 +0.6072063,3,576.5894,1.845912 +0.9052984,24,276.0850,4.899321 +0.6634726,92,703.5221,5.179664 +0.7561353,16,380.4236,4.035749 +0.8122183,94,804.0761,5.508063 +0.8418656,60,978.833,5.283574 +0.6981374,5,387.5784,2.732931 +0.5241897,21,733.9929,3.775666 +0.6772153,90,38.5611,5.353059 +0.6846175,9,523.6271,3.320686 +0.8614306,19,100.2818,4.57258 +0.9212194,65,524.0826,5.667082 +0.736799,48,376.7794,4.867054 +0.775878,51,470.2745,4.999156 +0.94356,27,448.0736,5.20886 +0.5971862,18,325.373,3.781982 +0.8788234,2,197.9009,2.201285 +0.7207136,56,182.7896,4.966495 +0.8813179,57,305.8846,5.41493 +0.6516088,44,977.5808,4.616521 +0.9432949,83,632.2853,5.954806 +0.8991265,89,533.6602,5.76696 +0.8716255,37,648.0715,5.048531 +0.5811219,78,61.75932,4.982568 +0.8066535,63,375.9281,5.235102 +0.6826185,95,692.657,5.2371 +0.9434476,75,200.0213,5.960525 +0.9371716,19,309.1242,4.912451 +0.6332529,77,912.1464,4.998099 +0.8121484,83,763.5391,5.42491 +0.8215588,72,196.3495,5.398243 +0.8692113,67,150.1000,5.527059 +0.9309966,66,598.433,5.728737 +0.8617159,3,323.4457,2.697052 +0.9094263,53,69.54,5.657197 +0.627946,100,53.37154,5.273825 +0.5469653,9,801.0173,3.013104 +0.9056166,76,348.6382,5.709042 +0.9144018,46,166.2865,5.457833 +0.7024664,26,991.9227,4.305153 +0.5906725,59,693.7827,4.731336 +0.9257523,32,898.1296,5.193483 +0.65419,10,994.8087,3.350149 +0.573937,57,11.15804,4.950549 +0.8722816,12,834.003,4.163117 +0.6104388,69,857.7779,4.879681 +0.7395572,22,625.7083,4.257045 +0.9465412,34,400.3912,5.400517 +0.889617,20,67.53875,4.789287 +0.6603941,62,557.3134,4.894162 +0.6572997,72,275.2044,5.008766 +0.6317894,61,893.6425,4.82618 +0.8166771,23,925.1903,4.497861 +0.7286248,2,555.7641,1.557043 +0.5152166,94,960.7927,4.949714 +0.9101605,61,986.4156,5.553379 +0.6866718,89,327.3256,5.211781 +0.8399551,77,168.6181,5.511889 +0.6353491,11,670.0163,3.401654 +0.853916,50,636.4847,5.201295 +0.8817695,88,767.3826,5.680463 +0.7185712,51,241.4021,4.882724 +0.770894,12,679.0355,3.816384 +0.9098048,72,985.2333,5.661611 +0.7218967,37,816.4549,4.627383 +0.7243346,61,997.2886,5.002563 +0.6719135,71,854.4393,5.009869 +0.8973335,85,484.1437,5.732463 +0.7554376,48,525.1413,4.903844 +0.9430205,70,144.7852,5.949187 +0.5493725,55,24.62404,4.720334 +0.5971568,6,909.9559,2.686758 +0.5690979,11,348.2237,3.263709 +0.7511994,95,182.5334,5.413766 +0.7210895,57,765.5559,4.949078 +0.8161127,3,732.3479,2.489221 +0.8336693,15,791.3677,4.204955 +0.8948794,18,254.5316,4.625170 +0.6632123,98,92.93594,5.287683 +0.8910968,56,3.694522,9.14612 +0.6376692,36,989.8612,4.434143 +0.80947,80,114.0895,5.478967 +0.82957,24,224.7908,4.599062 +0.8977277,50,151.2525,5.440728 +0.8022287,100,632.9642,5.528033 +0.7857295,10,423.1267,3.696796 +0.7545248,86,527.6158,5.317099 +0.6009039,81,487.6485,4.984334 +0.6896002,59,438.7283,4.917154 +0.6974143,13,814.5804,3.698697 +0.7301658,70,278.3712,5.134808 +0.6591984,4,657.8318,2.360831 +0.7862776,80,954.3117,5.331615 +0.8580173,76,922.4202,5.496869 +0.7225116,83,660.0493,5.22118 +0.6513679,23,295.4721,4.105703 +0.8454044,52,928.4528,5.195344 +0.7959045,85,906.7124,5.397084 +0.731706,80,590.0431,5.216045 +0.7256962,76,36.67469,5.365805 +0.6209987,91,219.8982,5.116044 +0.7788926,92,471.59,5.421277 +0.9395612,67,773.8309,5.785787 +0.5712265,40,617.832,4.399043 +0.8177507,36,918.277,4.845297 +0.5308056,7,784.1608,2.711805 +0.9239735,91,592.1715,5.897353 +0.6734823,5,703.1057,2.665332 +0.552545,50,9.700298,4.805741 +0.8571885,61,401.3484,5.362952 +0.8276853,100,722.3954,5.592684 +0.78248,79,226.7434,5.349608 +0.7540784,70,289.0356,5.186986 +0.679809,84,328.1678,5.157819 +0.5346721,5,321.7632,2.336343 +0.5046181,10,800.9464,3.034873 +0.6086207,41,363.4659,4.489845 +0.9056507,51,45.66387,5.714624 +0.757739,92,34.72594,5.618443 +0.7988586,13,563.46,3.971763 +0.6246819,98,911.8113,5.154245 +0.9473038,50,313.7374,5.683982 +0.8610659,43,569.1981,5.120719 +0.9211183,50,72.18092,5.677973 +0.6910641,44,79.55915,4.761997 +0.8947933,94,199.2544,5.837905 +0.6185201,93,777.6178,5.108263 +0.943615,39,746.2719,5.454103 +0.7002987,96,988.1737,5.273948 +0.7553033,39,915.4639,4.742379 +0.7679916,50,737.3042,4.958796 +0.6890029,94,907.0683,5.238912 +0.6199692,74,986.7426,4.946051 +0.6411281,94,818.5881,5.153933 +0.8464514,65,70.51132,5.514609 +0.6060643,92,352.4973,5.088319 +0.5031575,80,710.7902,4.814834 +0.5938577,14,609.6362,3.542741 +0.5328757,73,26.24858,4.894656 +0.865526,20,873.1708,4.555331 +0.7964953,62,272.376,5.207187 +0.7383672,76,876.4028,5.189204 +0.7729914,15,22.17502,4.243482 +0.9011562,48,287.6424,5.383655 +0.8172952,52,437.9903,5.124289 +0.5405907,22,802.478,3.846356 +0.6312621,7,216.3909,2.94054 +0.8226957,52,804.0583,5.128694 +0.885333,73,13.19686,6.600686 +0.7457342,60,609.2144,5.041968 +0.6578178,44,288.0032,4.641378 +0.83535,98,131.3518,5.685504 +0.8930805,88,976.9815,5.719899 +0.9396818,36,611.7228,5.374934 +0.777755,41,954.446,4.833966 +0.7981147,97,369.9938,5.510893 +0.944999,93,954.528,6.027065 +0.6157446,41,907.7825,4.495908 +0.7380916,76,861.9726,5.188795 +0.839211,68,23.80187,5.830786 +0.8532856,89,262.6102,5.625921 +0.6775974,17,292.3724,3.901788 +0.5828361,39,703.1539,4.39878 +0.8850796,24,198.9660,4.816882 +0.5914885,3,181.9281,1.809612 +0.5142923,5,830.6914,2.289293 +0.6603836,44,766.019,4.634749 +0.7912155,30,894.1168,4.632969 +0.7526184,71,153.6191,5.221186 +0.9332683,65,964.548,5.720877 +0.8309404,85,873.4239,5.490343 +0.625892,74,27.07511,5.129885 +0.5828644,56,693.3597,4.678749 +0.5136066,79,925.8308,4.820971 +0.8330586,80,19.34037,6.035081 +0.7008366,51,404.9684,4.833525 +0.8843272,91,152.3932,5.796872 +0.9225516,25,667.9643,5.000335 +0.8791967,66,828.0534,5.477954 +0.5186196,24,709.4802,3.882467 +0.751543,9,311.5484,3.49974 +0.7436109,27,477.438,4.435924 +0.6807055,87,495.5713,5.176597 +0.7510662,82,965.3252,5.268203 +0.7277244,57,502.561,4.968428 +0.9410907,91,166.2730,6.091714 +0.6792364,33,490.5878,4.452396 +0.7848101,10,12.64165,4.03457 +0.942731,30,198.6954,5.320442 +0.7519409,59,846.5128,5.039781 +0.5020636,78,693.9159,4.794566 +0.7176895,90,868.5585,5.264436 +0.5767474,15,14.59399,3.713746 +0.5775503,39,391.2338,4.393338 +0.6690003,27,870.2484,4.265722 +0.7235208,94,69.99504,5.418828 +0.8928368,32,934.5482,5.024385 +0.6799028,62,244.2493,4.946376 +0.5802962,44,262.7254,4.497853 +0.5605126,43,595.6193,4.437684 +0.9367013,51,894.6887,5.583736 +0.5337638,21,15.99230,3.907597 +0.5574367,40,687.904,4.374468 +0.8259194,30,937.608,4.73232 +0.8714596,38,471.542,5.07393 +0.6665597,49,399.8029,4.735126 +0.8192291,35,93.40303,4.915221 +0.8688831,56,259.5373,5.362454 +0.6838603,98,570.7892,5.263374 +0.6465024,93,946.6553,5.154663 +0.8457297,5,633.2096,3.217746 +0.6922344,70,457.7957,5.045673 +0.7149555,84,650.9649,5.214478 +0.6031059,75,638.7035,4.929953 +0.7407085,80,553.5425,5.236097 +0.5007247,9,785.852,2.918291 +0.5881926,2,575.2952,1.161514 +0.6842944,85,56.74425,5.275968 +0.6365547,8,593.1905,3.087423 +0.5593403,10,597.9742,3.146675 +0.6665544,2,261.012,1.370363 +0.5226974,14,860.4175,3.401291 +0.9373338,70,166.3507,5.890187 +0.5455807,16,558.8445,3.571325 +0.6551681,51,253.6940,4.751319 +0.5161405,19,33.30902,3.718792 +0.9238053,84,580.7067,5.845623 +0.86948,94,90.00178,5.827859 +0.6780455,11,784.5237,3.497723 +0.9178672,99,456.9874,5.928964 +0.767568,71,23.22718,5.569045 +0.7954395,72,365.8755,5.299927 +0.8839859,79,733.2088,5.618772 +0.7608575,89,448.5921,5.358179 +0.8567473,65,858.2716,5.387898 +0.8996104,56,643.5015,5.455172 +0.7666284,12,47.31088,3.893322 +0.6470064,93,699.9194,5.158058 +0.5875236,53,926.724,4.643525 +0.8953835,74,992.946,5.615506 +0.9201886,9,970.5459,4.163660 +0.601927,10,259.6253,3.240734 +0.647429,76,942.9703,5.013432 +0.8213445,33,641.5921,4.794998 +0.5490222,33,105.5942,4.225879 +0.5776677,67,403.6322,4.808392 +0.8079034,87,427.1954,5.458135 +0.6253146,65,887.0287,4.861523 +0.6817373,76,748.7887,5.078027 +0.7258991,74,732.7329,5.146395 +0.9250114,9,157.7767,4.239061 +0.8528482,35,754.1407,4.937605 +0.8636093,24,789.116,4.691449 +0.6416303,18,107.3528,3.893581 +0.938607,30,188.2054,5.293022 +0.6183642,98,784.5568,5.144735 +0.626452,49,708.409,4.654031 +0.5033137,90,364.6996,4.904766 +0.6416498,69,686.6995,4.935888 +0.9439444,30,16.76117,6.17131 +0.6769998,61,91.14787,4.971445 +0.6099088,33,292.5247,4.322005 +0.8562472,61,175.4549,5.400586 +0.6554333,26,733.8006,4.208067 +0.6010223,16,940.5603,3.678439 +0.7840678,73,110.2884,5.345153 +0.8568647,97,348.6922,5.681597 +0.8782813,11,752.7111,4.115416 +0.865477,47,912.7237,5.191814 +0.7104252,95,328.1609,5.303922 +0.6518729,99,406.2813,5.21742 +0.8136264,40,904.949,4.911606 +0.6043372,47,902.7367,4.581187 +0.8121081,67,7.538333,6.513966 +0.6552225,23,532.8514,4.107702 +0.7357522,22,482.9446,4.250429 +0.5070191,82,821.2403,4.838449 +0.5782021,65,832.5791,4.781427 +0.6097488,47,86.14851,4.635193 +0.7171686,97,668.8119,5.318037 +0.644155,46,660.5386,4.63903 +0.7727673,44,22.80839,5.203142 +0.7922387,75,505.9924,5.311956 +0.664713,98,532.7728,5.229238 +0.5679516,46,992.4062,4.500924 +0.825774,10,281.0117,3.834293 +0.6083309,41,597.429,4.484862 +0.7737187,21,467.6578,4.309089 +0.7249439,60,598.5867,4.997216 +0.9095895,37,8.365455,6.77549 +0.5130474,48,40.46562,4.494295 +0.6051408,80,447.1557,4.983537 +0.8676191,75,629.6436,5.527589 +0.9364891,57,469.2977,5.674607 +0.6506647,93,569.1126,5.166729 +0.5027852,74,545.2522,4.757751 +0.5031346,98,162.6768,4.975135 +0.767055,50,183.3676,4.991531 +0.6801705,23,719.5443,4.157980 +0.9061154,72,553.1563,5.657693 +0.8591993,97,490.7379,5.676845 +0.6889985,44,681.4208,4.692018 +0.7125659,97,200.8339,5.33931 +0.6351567,29,301.1039,4.265337 +0.6566573,52,440.792,4.759479 +0.8159221,94,986.9704,5.514844 +0.6077678,22,101.6926,3.999549 +0.7839771,64,576.8159,5.178063 +0.6734601,31,395.1654,4.393173 +0.6060289,28,3.081892,5.121582 +0.6789768,96,181.166,5.268511 +0.787318,16,775.1314,4.11447 +0.9073888,41,497.7243,5.282086 +0.7638307,87,131.2056,5.403349 +0.6463511,71,445.6236,4.969812 +0.6726806,25,761.584,4.210960 +0.7649493,53,632.2372,4.995885 +0.683377,75,176.2011,5.102595 +0.890173,53,383.1089,5.39159 +0.5778118,60,604.8159,4.722957 +0.6290806,81,835.3322,5.027719 +0.709206,75,365.1975,5.133035 +0.7821182,50,921.8328,4.990793 +0.8249756,33,449.9177,4.812041 +0.9164308,22,483.9926,4.875823 +0.5126529,7,69.3751,2.686872 +0.7279297,76,849.3809,5.167721 +0.6243633,81,425.4841,5.026262 +0.6822903,74,903.373,5.058437 +0.7674061,16,381.5476,4.066042 +0.8044243,45,994.9932,4.971361 +0.8797448,14,812.4009,4.326156 +0.5983747,64,350.2122,4.811645 +0.8931191,100,605.8303,5.813613 +0.7759804,25,990.4158,4.44877 +0.933721,48,125.8175,5.638129 +0.567207,39,158.5426,4.386867 +0.6834433,24,595.2227,4.201662 +0.5842774,83,144.4095,4.996242 +0.6096163,44,3.666158,5.442746 +0.5520212,33,788.1983,4.209405 +0.8487187,75,775.0258,5.461002 +0.6442834,59,384.4282,4.832377 +0.8525898,44,852.7334,5.101296 +0.6793526,5,544.8316,2.681385 +0.7896053,57,702.1907,5.106904 +0.6347688,37,207.1742,4.467327 +0.9105013,73,298.8515,5.713738 +0.5801921,61,194.1294,4.753626 +0.5398654,14,623.2005,3.435302 +0.5295864,36,825.9626,4.241144 +0.6955647,90,532.2933,5.227428 +0.8752002,7,34.37197,3.840195 +0.5065717,86,99.36485,4.895701 +0.6540707,91,816.5146,5.153864 +0.7494457,27,333.2309,4.455773 +0.6942405,34,378.8255,4.510573 +0.6192505,85,514.0551,5.049568 +0.76549,25,642.7535,4.425212 +0.7574782,64,469.1908,5.118944 +0.5830214,21,552.903,3.886642 +0.8790609,79,159.6307,5.674371 +0.7176675,58,884.7081,4.953248 +0.6629143,8,245.0644,3.154845 +0.8564256,41,392.7764,5.078983 +0.5191748,37,388.5444,4.248730 +0.5063773,82,608.4596,4.838639 +0.6187086,74,342.2091,4.954258 +0.9265214,49,19.84399,6.272573 +0.7227158,30,941.4727,4.464846 +0.5720824,44,88.08165,4.508306 +0.7417212,36,856.798,4.650463 +0.6945709,16,973.5857,3.877503 +0.6787784,67,199.1884,5.00703 +0.6079792,2,14.28654,1.248295 +0.8160534,87,902.7546,5.464555 +0.903873,43,596.1851,5.293944 +0.726878,20,652.6108,4.146919 +0.6090511,26,822.7786,4.116546 +0.7854577,6,632.6326,3.188597 +0.6051804,75,622.2571,4.933685 +0.7918214,37,643.5305,4.797766 +0.5232566,75,325.5463,4.80398 +0.590876,66,73.06404,4.867022 +0.5937229,27,42.58453,4.187347 +0.8824875,45,931.0037,5.224986 +0.7059692,52,659.4332,4.851961 +0.6663572,11,289.1740,3.476953 +0.6661134,75,418.1281,5.046652 +0.810046,78,319.3538,5.398473 +0.5153034,94,370.1154,4.955019 +0.6629067,75,76.91591,5.107002 +0.7524684,35,669.101,4.656308 +0.8711363,64,313.9587,5.454808 +0.6956076,29,55.13885,4.465562 +0.7708426,83,192.2650,5.363472 +0.5723024,29,745.2273,4.139486 +0.9359758,76,180.2033,5.927152 +0.937121,95,945.2132,5.988315 +0.7236621,84,584.52,5.233591 +0.5644985,54,327.6738,4.625826 +0.830407,38,621.8328,4.928221 +0.7119581,31,183.4619,4.492153 +0.77285,82,784.9956,5.319325 +0.8722319,85,500.9015,5.633511 +0.6801105,92,42.34472,5.362335 +0.7211597,80,755.886,5.191064 +0.7343016,17,662.3988,4.026676 +0.6084402,33,173.8741,4.327899 +0.6186405,40,577.6662,4.484631 +0.703274,15,875.0299,3.841051 +0.9385632,22,803.663,5.007829 +0.5536499,6,140.929,2.596166 +0.5189601,36,365.0004,4.226444 +0.7964722,33,112.4292,4.783128 +0.8923196,89,282.4267,5.766261 +0.8477578,57,813.3298,5.268937 +0.7376255,52,39.59667,5.092456 +0.586504,72,325.709,4.879086 +0.9245973,96,220.5104,5.990943 +0.5904537,70,650.9535,4.858109 +0.6962348,91,53.84608,5.360867 +0.6472336,86,286.8350,5.116716 +0.5478403,45,891.3937,4.449943 +0.5916281,49,112.7873,4.621543 +0.9236192,10,256.5085,4.30158 +0.701771,76,931.1325,5.114423 +0.6455423,9,114.6123,3.244296 +0.629923,96,926.7514,5.148559 +0.9445545,39,672.0967,5.463624 +0.6736415,85,449.6175,5.148535 +0.6858955,81,783.2148,5.130515 +0.566487,9,551.4185,3.054829 +0.9085593,35,254.0737,5.200862 +0.6143065,90,329.5405,5.087921 +0.6999386,19,490.2705,4.043115 +0.6395809,8,600.4834,3.094362 +0.9093209,36,853.3224,5.188147 +0.894677,100,848.318,5.811673 +0.6063929,85,898.3364,5.023168 +0.6523595,50,416.7666,4.722509 +0.942245,14,171.8807,4.742298 +0.783326,95,113.6980,5.527098 +0.752282,7,408.8336,3.248984 +0.7136485,15,471.0845,3.869695 +0.6320827,32,848.5555,4.330415 +0.59958,93,236.7872,5.092203 +0.7906985,82,470.0474,5.37129 +0.7225906,97,847.8583,5.325918 +0.5733982,37,779.5725,4.339675 +0.9068659,11,322.7737,4.273226 +0.9381555,37,206.4804,5.433981 +0.534364,36,896.7656,4.249114 +0.6322029,54,652.9157,4.738431 +0.5673037,32,607.234,4.212482 +0.5158305,29,241.0641,4.044624 +0.782321,41,343.6444,4.861221 +0.8978933,55,113.9618,5.540612 +0.7566181,71,803.6087,5.182157 +0.945313,93,760.1445,6.035159 +0.7764446,66,690.4359,5.178624 +0.5382854,44,937.8568,4.415998 +0.780881,21,808.7842,4.322801 +0.7872955,43,753.639,4.895828 +0.8437686,53,714.1587,5.207365 +0.6116142,97,820.0253,5.125958 +0.531347,2,33.00914,1.036805 +0.7165558,8,633.2616,3.283039 +0.705623,19,384.8555,4.058654 +0.8560466,41,376.2472,5.078905 +0.6344361,85,632.7684,5.073645 +0.5901747,22,282.6403,3.945618 +0.56803,53,73.53232,4.653907 +0.8146113,27,671.1104,4.620696 +0.9163909,73,747.9496,5.708432 +0.6061526,14,542.7819,3.568411 +0.9093413,95,335.4416,5.875304 +0.6494762,46,759.3723,4.647989 +0.5640401,44,632.509,4.461494 +0.5354444,34,836.2228,4.204653 +0.5299268,77,846.4679,4.828092 +0.741827,22,130.2941,4.296245 +0.5115407,87,295.344,4.894967 +0.5978896,76,131.5230,4.959506 +0.8912814,18,205.5997,4.616479 +0.5576322,43,383.5691,4.435671 +0.8717212,40,583.6276,5.107255 +0.9161417,8,499.1547,4.040285 +0.6521386,11,822.9779,3.438228 +0.7737015,17,762.6271,4.127920 +0.892949,87,399.3925,5.736645 +0.5966038,55,689.611,4.688806 +0.6431161,52,447.0586,4.733828 +0.8306688,44,702.1389,5.034286 +0.6649262,57,359.9672,4.846758 +0.9363835,85,887.7069,5.914833 +0.7510024,81,339.8045,5.277932 +0.7902674,15,705.98,4.068516 +0.7636627,56,448.0598,5.038424 +0.8669564,5,680.0533,3.31205 +0.8059546,75,503.0968,5.3473 +0.6403063,92,962.566,5.136234 +0.504068,3,617.9877,1.598052 +0.9186635,36,724.4784,5.240142 +0.5795384,56,545.9165,4.67465 +0.8195587,78,414.402,5.416073 +0.7491724,3,281.5133,2.251189 +0.7093393,13,665.9633,3.728246 +0.9406897,81,43.65671,6.348394 +0.8862442,15,820.4643,4.412285 +0.9183536,71,279.5010,5.739535 +0.7329661,45,293.7233,4.8157 +0.9149706,82,822.9326,5.774923 +0.6399313,75,173.1958,5.018545 +0.631958,78,704.475,5.007022 +0.9347626,82,427.1829,5.906078 +0.9193079,36,111.4287,5.350532 +0.7909542,49,249.1747,5.025715 +0.7143558,60,471.2938,4.978527 +0.929284,32,846.1144,5.216052 +0.8400567,98,342.8071,5.636219 +0.5706936,59,468.7645,4.700182 +0.6783719,48,140.5919,4.769985 +0.7694423,73,842.9439,5.230134 +0.5215988,17,298.5005,3.584042 +0.7042262,23,46.45078,4.306447 +0.6135268,61,104.5767,4.834267 +0.852132,17,683.1779,4.376271 +0.6286326,72,801.0265,4.94254 +0.9114498,70,413.9069,5.674662 +0.505581,30,934.0287,4.048985 +0.619673,54,249.2989,4.727874 +0.9039804,73,662.0442,5.652103 +0.9322274,75,826.7649,5.810783 +0.591522,17,550.8919,3.716205 +0.5615105,9,563.2861,3.044287 +0.8861427,77,612.0575,5.614371 +0.9227275,36,804.7779,5.261032 +0.5201386,6,563.5901,2.516629 +0.5150667,4,153.7693,2.017103 +0.858887,88,335.1279,5.625131 +0.865161,91,507.115,5.653645 +0.866841,28,569.142,4.826175 +0.5914268,73,731.0933,4.889649 +0.7301672,3,171.8421,2.193633 +0.8695504,46,972.9767,5.190517 +0.8743281,94,423.1992,5.713268 +0.7259997,71,57.63515,5.243207 +0.8552598,42,51.79937,5.275407 +0.7262848,91,622.4001,5.293459 +0.5421301,43,124.8007,4.423924 +0.764653,64,923.3807,5.125733 +0.8748403,73,247.373,5.571079 +0.7803132,31,380.4862,4.640732 +0.6482601,87,772.2889,5.112482 +0.7241264,43,272.1837,4.76339 +0.7953848,44,365.2316,4.946676 +0.6285879,91,448.7414,5.11578 +0.6652861,50,710.149,4.741542 +0.6856344,64,916.419,4.960469 +0.7254825,75,709.546,5.155371 +0.6569148,90,891.1667,5.150444 +0.9032712,56,578.0589,5.474436 +0.8196123,55,916.5202,5.158029 +0.8457452,68,948.5464,5.382074 +0.7056631,3,931.2039,2.112567 +0.8282234,89,748.6638,5.515993 +0.87756,69,756.8942,5.503454 +0.5580487,53,79.27887,4.631497 +0.8726777,84,865.3341,5.614437 +0.6403862,31,668.2423,4.322197 +0.8492341,73,141.7500,5.519904 +0.5361932,8,651.2265,2.867713 +0.7613272,82,428.129,5.303809 +0.8569944,82,709.8302,5.548995 +0.8017937,16,509.0666,4.161160 +0.6910281,42,458.1705,4.665068 +0.9100806,53,834.6907,5.461124 +0.8269713,11,110.7436,3.955719 +0.7171317,89,540.2364,5.261772 +0.851661,82,487.6866,5.540841 +0.7891677,30,331.5015,4.642001 +0.734028,16,122.0367,4.004476 +0.5187802,87,429.9464,4.903341 +0.5150383,16,718.979,3.512412 +0.785768,69,194.4107,5.270155 +0.8033854,47,199.0244,5.038606 +0.830575,35,729.6996,4.865471 +0.8736411,70,28.33166,5.956989 +0.8876228,62,56.37586,5.704145 +0.7772246,81,880.699,5.319602 +0.8581031,86,744.6876,5.583367 +0.7385866,56,814.1746,4.972997 +0.7709235,35,958.7655,4.697881 +0.7025145,38,608.5902,4.608887 +0.6822772,59,741.9122,4.896537 +0.7546338,39,377.0911,4.752481 +0.7098272,6,688.9395,2.965107 +0.8007708,68,664.4748,5.260526 +0.5081478,97,957.1152,4.961489 +0.8871281,80,610.9077,5.64364 +0.83781,29,404.5329,4.756917 +0.8565457,33,929.6463,4.904385 +0.7858467,76,614.8492,5.301542 +0.7393295,48,304.2518,4.877567 +0.6288801,56,575.7861,4.760722 +0.5747567,36,525.0601,4.322172 +0.7241387,4,744.9875,2.540414 +0.5838607,84,98.96394,5.017925 +0.9088057,30,939.4672,5.053044 +0.8893571,65,764.4263,5.508868 +0.7718164,92,629.6235,5.398965 +0.7592003,69,639.9231,5.170893 +0.5349374,43,16.79663,4.529065 +0.8402495,32,594.5056,4.832209 +0.5243549,21,561.1883,3.776770 +0.7070809,73,203.5126,5.126286 +0.7444766,45,996.601,4.823829 +0.9452716,51,968.5641,5.64201 +0.8834646,43,410.5079,5.214212 +0.5125273,8,554.2188,2.818634 +0.7855098,34,142.7244,4.760065 +0.857309,8,134.2902,3.76904 +0.850575,12,800.5671,4.075296 +0.7062366,30,828.565,4.429344 +0.5672662,6,703.8213,2.619697 +0.6565083,83,495.8813,5.098745 +0.7695762,23,429.8266,4.373533 +0.8751504,83,411.2986,5.634882 +0.660651,31,384.3733,4.367338 +0.6552163,71,410.1236,4.987248 +0.5242741,35,810.4681,4.209141 +0.5429164,41,657.2765,4.369296 +0.5608511,52,487.3664,4.58715 +0.8849192,18,747.3227,4.554355 +0.6341058,77,491.0945,5.00518 +0.5528817,5,483.2663,2.376328 +0.7755186,45,909.177,4.897701 +0.7080204,18,922.128,4.011066 +0.5753103,67,379.1132,4.80507 +0.8938414,45,276.1014,5.306521 +0.9153011,100,561.4111,5.914729 +0.9400833,71,244.9699,5.881615 +0.5751929,57,696.4602,4.679055 +0.8627746,66,751.1318,5.420788 +0.7402069,86,120.3373,5.34467 +0.6009191,52,934.1773,4.652193 +0.5917567,18,435.2733,3.769131 +0.7928228,18,282.6634,4.243414 +0.7406228,67,601.0171,5.109815 +0.949789,27,680.853,5.248154 +0.7617935,81,297.537,5.306533 +0.8564567,77,376.8077,5.522382 +0.6577059,74,182.6144,5.040919 +0.9413392,90,90.77082,6.190444 +0.7485857,60,824.7695,5.044612 +0.8942623,86,116.7217,5.83402 +0.6324165,69,534.8945,4.921818 +0.8736767,78,480.7874,5.582686 +0.809562,7,161.7137,3.445533 +0.655178,80,209.5545,5.087967 +0.8126558,75,553.6373,5.363033 +0.587771,54,741.3041,4.659252 +0.7304708,43,140.2912,4.801626 +0.6784025,99,485.646,5.262685 +0.8679588,83,685.2886,5.594575 +0.8094056,2,901.409,1.852349 +0.6667788,32,766.4673,4.398906 +0.9003594,34,264.8389,5.13664 +0.5131864,4,594.7674,2.009264 +0.5324579,58,79.92974,4.652622 +0.6300037,79,10.07310,5.450494 +0.6228218,30,902.6635,4.260279 +0.513834,87,502.2924,4.89453 +0.7645673,2,991.632,1.678955 +0.936889,47,418.9952,5.551662 +0.8618376,87,241.7598,5.644262 +0.9409066,51,286.3327,5.654553 +0.8910533,13,177.1792,4.35247 +0.7814179,48,452.7033,4.969485 +0.7402419,49,378.8289,4.890003 +0.7814724,91,598.634,5.41494 +0.5207353,33,137.6379,4.16805 +0.8606041,76,509.892,5.517765 +0.8672457,46,857.1114,5.183842 +0.8916283,3,191.1671,2.867489 +0.9291234,61,362.7399,5.68471 +0.6128671,21,493.3128,3.945307 +0.9130023,44,433.433,5.364272 +0.5526918,40,501.2452,4.367895 +0.7100667,58,626.435,4.941089 +0.9485433,61,902.1765,5.78576 +0.7375008,100,552.7585,5.383109 +0.8843444,69,535.1516,5.537504 +0.7355137,24,294.9474,4.32874 +0.5849977,63,918.668,4.769115 +0.8148579,32,288.1865,4.769015 +0.6047379,95,20.06207,5.315901 +0.9387293,65,47.6271,6.128658 +0.6730278,29,226.6681,4.347534 +0.8536057,86,299.622,5.597219 +0.7039593,5,717.411,2.746449 +0.554576,51,501.231,4.561373 +0.5985519,33,49.17765,4.357975 +0.6332506,60,222.0821,4.834659 +0.5311171,3,505.9751,1.661199 +0.6073137,63,391.6986,4.814172 +0.6546051,47,328.4854,4.683347 +0.8600348,35,942.1334,4.959945 +0.6736388,16,170.3470,3.848083 +0.5197377,42,528.5444,4.350034 +0.5483864,2,8.982135,1.112816 +0.8866457,91,968.5747,5.716457 +0.9170833,95,720.5013,5.883273 +0.7270387,21,628.9166,4.188418 +0.812512,16,938.998,4.188589 +0.8316781,20,444.9295,4.442617 +0.9298217,20,866.0785,4.874826 +0.6134887,60,964.2135,4.78133 +0.7366226,7,319.7519,3.206178 +0.8077966,41,974.1164,4.9127 +0.6130327,56,385.8269,4.736513 +0.6378037,37,850.088,4.456746 +0.7848023,55,823.8128,5.067312 +0.936098,52,897.3047,5.592718 +0.5120613,27,467.5221,3.973342 +0.9193753,5,709.4038,3.609307 +0.8621582,83,262.4155,5.608882 +0.5685211,52,168.9039,4.614078 +0.6970322,80,225.7021,5.167406 +0.8347935,100,76.00698,5.769876 +0.8225406,8,344.3646,3.609568 +0.6941333,43,435.8167,4.690098 +0.7356296,30,710.7536,4.496393 +0.8811275,6,103.0200,3.609537 +0.6109929,48,400.577,4.615333 +0.596709,60,363.4187,4.760152 +0.6572946,5,962.1019,2.623233 +0.6103808,55,631.1443,4.713493 +0.668965,96,892.3117,5.21696 +0.7999518,32,495.2423,4.713714 +0.8338344,48,908.905,5.102972 +0.8567186,7,846.6076,3.605534 +0.7154963,95,187.0719,5.334038 +0.7108011,96,628.3475,5.29923 +0.6893275,25,734.6108,4.246437 +0.5740601,11,364.6629,3.273750 +0.8039917,73,244.864,5.346882 +0.8573021,48,634.51,5.183936 +0.8183101,23,760.4014,4.504651 +0.8641757,94,978.3002,5.657207 +0.6303905,70,604.3785,4.927486 +0.8699731,79,863.8185,5.564262 +0.915676,8,143.355,4.073357 +0.601142,35,441.2769,4.348688 +0.87388,28,333.7200,4.866511 +0.9196098,2,325.7931,2.48037 +0.7254358,13,522.0907,3.769571 +0.9131236,70,356.7704,5.689551 +0.7061301,40,507.9874,4.657943 +0.916107,7,935.9404,3.911256 +0.6185521,24,139.8068,4.088015 +0.6262447,20,876.2364,3.926877 +0.6291963,78,148.0490,5.032363 +0.632995,91,192.7662,5.141416 +0.5512401,96,922.5635,5.020761 +0.8395904,21,948.335,4.49903 +0.7737163,35,381.1151,4.717049 +0.5824825,67,367.2437,4.817619 +0.5647798,46,202.662,4.508791 +0.8834567,23,404.0992,4.750842 +0.5374452,15,541.5736,3.495868 +0.879485,45,87.82374,5.342633 +0.7248722,19,681.9091,4.098538 +0.911358,10,43.89693,4.374565 +0.7451762,77,521.6592,5.220066 +0.723452,87,31.2523,5.495526 +0.7343267,78,979.8097,5.197778 +0.8797457,62,689.5224,5.441123 +0.9355938,9,8.536315,5.395588 +0.8081898,70,899.6859,5.295606 +0.779309,60,532.5658,5.122267 +0.9343759,90,800.8648,5.941199 +0.9125067,53,544.4229,5.483064 +0.7631274,89,498.3332,5.361002 +0.7271626,57,193.7866,4.991599 +0.5656534,45,542.3173,4.482748 +0.7439162,33,548.8423,4.592949 +0.6730048,71,419.1757,5.0202 +0.8488092,75,929.485,5.458401 +0.7990472,58,914.4833,5.140082 +0.7150551,60,300.436,4.989065 +0.7738144,47,841.0965,4.926207 +0.8007912,20,803.401,4.339192 +0.551277,78,16.59874,5.049359 +0.8536064,53,5.278028,7.26772 +0.6086101,22,656.6184,3.975391 +0.7950185,92,725.3911,5.451677 +0.7759385,24,724.6639,4.418522 +0.7436127,80,136.5426,5.292482 +0.7023383,78,583.6222,5.138942 +0.7387789,13,893.3477,3.800216 +0.5355073,87,367.4723,4.931304 +0.5799598,32,907.9728,4.233542 +0.7931919,23,580.6845,4.433776 +0.9020383,59,611.7858,5.502789 +0.8865545,52,26.28821,5.827225 +0.9361958,74,762.0372,5.828598 +0.582067,75,54.81664,4.963057 +0.8257129,4,567.6277,2.886287 +0.8633863,3,134.8775,2.717133 +0.7562748,93,860.8626,5.367093 +0.5468247,52,13.37389,4.752502 +0.5236045,76,758.5776,4.808922 +0.8087347,55,532.2803,5.136258 +0.7106333,92,111.2063,5.331034 +0.814428,41,509.0671,4.940242 +0.9088012,9,841.348,4.094842 +0.8740427,76,824.9096,5.553729 +0.8074883,69,252.8868,5.315484 +0.7213603,5,948.5723,2.794196 +0.6841834,28,313.8684,4.336824 +0.8791684,31,739.6711,4.946414 +0.8447433,53,223.9424,5.246248 +0.6077613,19,337.0328,3.850726 +0.6291898,19,882.2599,3.8882 +0.5982278,57,129.2187,4.745759 +0.8181028,71,778.5106,5.334016 +0.9189918,46,312.8849,5.440689 +0.6311825,5,906.8284,2.558528 +0.6925712,35,572.9342,4.524774 +0.7704907,37,621.4804,4.743354 +0.9046787,92,802.2702,5.801703 +0.6019258,60,991.2124,4.76121 +0.5629309,51,344.3215,4.578758 +0.8558432,38,589.3368,5.012244 +0.819681,32,977.2155,4.762014 +0.8277987,87,394.2501,5.51517 +0.5027483,24,314.9769,3.857077 +0.8158908,45,652.2671,5.008327 +0.8676783,82,104.2660,5.703369 +0.8946515,67,165.1998,5.624106 +0.8481332,95,468.5812,5.62917 +0.9427243,60,768.3167,5.735723 +0.8323833,26,398,4.655196 +0.8430963,33,469.1627,4.869046 +0.7642166,66,682.7124,5.150084 +0.8620012,43,557.2209,5.12448 +0.8747079,70,562.6493,5.509243 +0.6204153,14,15.61338,3.757389 +0.8136883,92,594.1941,5.503064 +0.7890769,21,960.2178,4.34413 +0.6135467,97,95.7961,5.179695 +0.6646005,79,102.7502,5.128727 +0.7282539,70,201.1261,5.142028 +0.6060018,16,13.12709,3.877434 +0.6576292,18,846.5295,3.900090 +0.9218128,19,225.0802,4.822128 +0.6956397,58,828.7143,4.909221 +0.5778678,53,305.8120,4.63554 +0.7409067,99,574.9399,5.382695 +0.6894707,35,474.0742,4.520339 +0.8547311,29,9.140069,5.801376 +0.9443449,36,740.9564,5.40459 +0.5030257,16,327.6132,3.492181 +0.7115186,14,705.3257,3.800159 +0.9499585,45,305.1216,5.635737 +0.6742548,79,184.8126,5.119984 +0.7671734,3,113.5515,2.320534 +0.743683,74,902.1817,5.181569 +0.9003837,6,700.1,3.670878 +0.818022,38,669.9273,4.890023 +0.5886032,2,378.721,1.162975 +0.804402,77,237.4354,5.38663 +0.6920335,58,268.8176,4.919222 +0.5761434,69,242.3807,4.834436 +0.7279316,32,213.1663,4.549817 +0.7118987,38,408.9461,4.633905 +0.7176286,33,133.8739,4.566852 +0.638278,76,13.88720,5.337516 +0.8056624,79,618.3595,5.377935 +0.9184175,52,114.7676,5.609458 +0.8495399,67,528.1128,5.39474 +0.9345234,11,795.6603,4.436122 +0.9183741,71,595.8968,5.706353 +0.6894078,63,32.08419,5.14501 +0.6199956,7,947.1682,2.907827 +0.7804436,39,746.3122,4.805868 +0.5348798,22,555.1823,3.837054 +0.770588,24,148.8212,4.438917 +0.5758073,32,768.8216,4.226697 +0.7512398,43,850.633,4.806761 +0.8007302,93,127.8680,5.548864 +0.9014866,25,678.9343,4.886736 +0.6555334,6,378.8423,2.827782 +0.9277143,52,953.2782,5.53991 +0.5545398,24,816.5394,3.947181 +0.781483,46,164.8824,4.971961 +0.5651579,54,238.7493,4.631017 +0.8015807,37,983.0817,4.819457 +0.6465967,100,23.79223,5.43803 +0.7298902,6,404.3406,3.022995 +0.5268403,15,595.9964,3.475157 +0.8249902,50,417.7287,5.119674 +0.7174687,44,28.92964,4.958069 +0.9220132,47,837.619,5.44125 +0.9163917,42,184.3981,5.395217 +0.6503536,32,85.93141,4.412043 +0.910666,8,312.4043,4.01467 +0.7578302,34,394.5199,4.654374 +0.7812384,5,798.26,2.977237 +0.5178476,35,456.0489,4.200271 +0.6632408,88,229.8003,5.168476 +0.8390662,31,835.2151,4.799856 +0.9352528,27,898.2456,5.132372 +0.8057271,58,350.117,5.176067 +0.610425,86,72.80154,5.102728 +0.9204428,22,964.564,4.886985 +0.8329993,95,981.9353,5.568629 +0.6198768,92,169.4371,5.129408 +0.6226202,84,898.3718,5.042082 +0.6418981,84,542.0965,5.079978 +0.6675953,95,291.8509,5.22411 +0.9360013,66,551.7465,5.762516 +0.8745606,88,678.362,5.656737 +0.5279922,5,832.993,2.319646 +0.818075,79,469.9906,5.417217 +0.8262758,2,645.9986,1.925928 +0.5706311,21,503.1586,3.863504 +0.7682838,39,861.4102,4.774088 +0.7245813,33,359.1662,4.55453 +0.6995345,46,293.3065,4.759532 +0.8709355,57,922.7088,5.345742 +0.8373729,60,504.0928,5.281386 +0.7081338,75,289.2888,5.136525 +0.7901496,5,5.439199,3.588918 +0.5290842,81,696.4208,4.864699 +0.7137549,27,77.53818,4.424457 +0.5482691,44,15.99154,4.590674 +0.8808748,18,22.94479,4.911921 +0.8147249,77,293.5421,5.405631 +0.6046856,2,878.4859,1.202698 +0.5329508,13,63.85672,3.373561 +0.6332334,22,704.2761,4.023677 +0.546437,8,890.3324,2.888729 +0.6326386,5,754.358,2.562415 +0.8817755,44,278.2696,5.238411 +0.8368096,19,138.9115,4.455741 +0.5355686,91,204.9948,4.971374 +0.7235912,8,344.4877,3.305657 +0.5048621,34,346.1112,4.155419 +0.5931924,60,160.0218,4.76904 +0.5299145,31,594.7286,4.120086 +0.6017189,87,369.6473,5.04039 +0.7418517,50,5.327944,6.087411 +0.8483486,64,305.071,5.376896 +0.6756182,4,862.6502,2.403836 +0.7777819,49,430.4768,4.976453 +0.9113989,60,362.3921,5.576478 +0.7407845,99,928.5576,5.375836 +0.7685601,49,344.4184,4.958712 +0.7725601,96,578.2455,5.4311 +0.6653655,50,945.6597,4.739644 +0.9468507,13,816.8829,4.670724 +0.5251872,29,804.5675,4.055112 +0.56988,7,438.1736,2.797492 +0.8973808,60,30.05556,5.950758 +0.9487586,11,261.4730,4.580859 +0.6696307,82,650.6464,5.110804 +0.8888442,27,907.014,4.881785 +0.7401928,22,558.9628,4.25965 +0.6110303,38,401.6077,4.433361 +0.7925204,16,439.8231,4.135301 +0.702094,9,504.9842,3.36415 +0.853108,33,35.07958,5.163423 +0.9353926,67,223.8085,5.818331 +0.6520575,24,758.8386,4.134634 +0.66278,81,118.4723,5.135034 +0.7340894,39,501.0299,4.699954 +0.8870821,53,874.5811,5.358251 +0.8916662,94,154.8354,5.848344 +0.83859,33,798.9093,4.845743 +0.9192628,35,969.539,5.218617 +0.8449602,89,174.3100,5.625377 +0.8755261,67,784.9093,5.475399 +0.7064768,8,992.3402,3.255223 +0.6243083,58,371.844,4.783567 +0.5539676,95,17.05929,5.202136 +0.6063726,90,191.1312,5.085874 +0.8869105,35,510.8736,5.074511 +0.8790183,42,885.0375,5.163212 +0.5933805,60,296.2700,4.75707 +0.6551459,30,24.56066,4.487992 +0.5723375,37,274.4002,4.345513 +0.6443248,33,836.795,4.378666 +0.735258,17,324.4626,4.036611 +0.8457457,86,740.4636,5.544534 +0.8943911,5,851.5544,3.451821 +0.838857,4,107.2173,2.963602 +0.856727,20,491.6441,4.529308 +0.6224996,72,30.61014,5.081849 +0.7584831,7,374.16,3.267944 +0.747176,10,637.9571,3.582344 +0.7691169,10,641.088,3.643957 +0.6950572,2,274.5504,1.453546 +0.6725931,29,665.696,4.332746 +0.7588209,56,4.689692,6.509686 +0.9223835,6,761.912,3.809601 +0.7851749,45,443.8975,4.932058 +0.7397743,40,2.279709,7.45333 +0.522246,20,346.4404,3.731591 +0.5984001,75,200.1283,4.938596 +0.8460583,10,705.9169,3.897459 +0.6427525,41,106.1142,4.585355 +0.8209742,37,392.5236,4.888823 +0.925232,81,785.0064,5.821471 +0.5509883,15,578.9168,3.521915 +0.7231179,48,606.5707,4.829564 +0.7479964,56,978.1678,4.992034 +0.8560428,89,172.6031,5.663342 +0.7445964,19,934.2746,4.14458 +0.8146255,5,297.5732,3.100598 +0.8801215,12,414.1117,4.206742 +0.5379769,19,896.2387,3.711643 +0.5590387,7,148.3427,2.779745 +0.7562362,2,126.4085,1.656177 +0.8628862,83,9.887536,6.832619 +0.6339987,49,957.1054,4.665933 +0.7959348,43,970.3764,4.915685 +0.9469303,27,894.7433,5.219109 +0.7474149,36,128.4815,4.709715 +0.6833293,17,967.5529,3.905373 +0.8428125,89,603.4397,5.562762 +0.9246594,88,878.4903,5.868944 +0.6135251,98,186.0699,5.160008 +0.5697204,97,4.151751,5.806717 +0.8312094,82,169.7990,5.527478 +0.910185,87,105.4579,5.936619 +0.693803,31,27.54992,4.604856 +0.8607749,20,951.5826,4.536226 +0.5555341,42,660.3545,4.410026 +0.7611825,68,533.4381,5.168059 +0.6107306,70,323.2711,4.90054 +0.6746679,35,374.4120,4.492795 +0.9177906,75,313.8561,5.766134 +0.7678125,96,441.6935,5.426057 +0.9169907,14,736.4204,4.517798 +0.7433266,56,989.043,4.9816 +0.9015917,98,391.5603,5.852269 +0.7285088,100,452.3493,5.368393 +0.5379222,32,316.8145,4.164098 +0.7352325,49,251.5620,4.888791 +0.8506556,14,172.2805,4.239404 +0.7878528,86,47.18904,5.595067 +0.7940741,14,709.88,4.020078 +0.6541361,31,382.5369,4.354275 +0.8305676,56,384.7685,5.21937 +0.899311,87,765.7054,5.743174 +0.669143,21,357.551,4.063729 +0.6986659,4,783.4702,2.467174 +0.8068675,98,264.7227,5.553613 +0.7591054,85,289.1455,5.33484 +0.7327918,54,51.85563,5.067093 +0.6006468,11,304.5714,3.330731 +0.7975916,41,464.2589,4.895099 +0.8373671,65,922.02,5.325994 +0.797545,27,324.2303,4.583439 +0.7110869,22,140.0273,4.217343 +0.6424185,65,367.1264,4.901086 +0.5556619,47,305.7816,4.504104 +0.772002,48,528.8508,4.943287 +0.6721145,5,79.38062,2.681564 +0.7806843,10,434.8125,3.681225 +0.6894094,28,566.1086,4.34089 +0.733033,7,71.62944,3.227396 +0.648652,51,326.0771,4.734045 +0.5223443,28,140.3916,4.032858 +0.6840796,52,532.834,4.810271 +0.5635255,5,600.5627,2.400079 +0.8416008,45,600.0655,5.087043 +0.799596,79,715.0368,5.359828 +0.8057718,12,815.9436,3.919591 +0.585966,58,812.5367,4.709579 +0.7304825,39,452.6062,4.693294 +0.7611653,14,301.6993,3.935817 +0.6647046,37,76.24282,4.567979 +0.6523098,91,841.6372,5.150504 +0.788072,2,838.2777,1.766685 +0.7445851,25,39.74841,4.50943 +0.7385261,53,652.0979,4.935246 +0.7808228,28,515.9685,4.557599 +0.888269,82,840.605,5.657258 +0.6899828,10,374.1941,3.439050 +0.6410592,61,875.8026,4.842899 +0.6451181,16,944.335,3.769109 +0.5841919,43,684.492,4.478166 +0.5010752,25,285.6268,3.890052 +0.8291245,8,368.9152,3.632677 +0.5235197,92,301.6914,4.954483 +0.7078635,85,642.3808,5.208843 +0.5116872,98,379.1896,4.979117 +0.6257265,10,875.562,3.286811 +0.6592452,35,250.9212,4.468037 +0.7221302,20,187.6121,4.154374 +0.7956171,54,451.887,5.091446 +0.6838694,20,473.7403,4.051287 +0.8295577,78,784.4418,5.430121 +0.9478423,68,488.6432,5.86968 +0.6691414,83,921.919,5.115242 +0.9224753,22,184.6860,4.951371 +0.8983257,48,267.843,5.374096 +0.8998352,79,766.9935,5.682365 +0.7091498,33,343.9942,4.520809 +0.6004464,14,410.7908,3.558120 +0.9099504,95,636.2874,5.852287 +0.7956578,56,548.764,5.113729 +0.7704919,32,462.0465,4.636439 +0.5645864,39,905.9903,4.36564 +0.77087,22,454.319,4.339972 +0.7042887,51,355.528,4.843002 +0.8015738,14,377.1564,4.049835 +0.8583845,39,860.9546,5.034111 +0.9179805,65,763.6357,5.639616 +0.7802,38,746.6791,4.785765 +0.7479871,15,385.239,3.957906 +0.7396997,41,142.9188,4.786167 +0.8558819,21,49.9631,4.717325 +0.7794685,8,6.951015,4.020868 +0.7423384,76,914.6567,5.197205 +0.8278342,88,835.197,5.50552 +0.7116068,57,448.2181,4.936231 +0.8406779,65,790.6183,5.338226 +0.602327,41,504.0098,4.475247 +0.8409111,57,538.369,5.254911 +0.8656233,44,69.18179,5.301835 +0.5141587,85,791.0469,4.875926 +0.5417386,7,141.6497,2.742201 +0.5982695,23,414.601,3.996176 +0.514064,83,421.916,4.861692 +0.602719,48,560.3881,4.597395 +0.6230789,83,319.8326,5.045922 +0.5042455,25,173.947,3.899675 +0.8705254,16,459.7512,4.404386 +0.6383081,73,827.3477,4.969256 +0.7887536,13,621.2912,3.940368 +0.5171924,95,261.1531,4.96909 +0.6338395,21,712.4886,3.985088 +0.886364,31,489.4844,4.984223 +0.6076696,82,823.9758,5.000153 +0.5168341,19,858.6781,3.672510 +0.6961416,22,412.6158,4.160402 +0.801484,65,553.8453,5.234128 +0.7856216,69,112.5570,5.306969 +0.9263677,52,276.0557,5.574726 +0.7135692,32,209.0116,4.517289 +0.8410421,88,738.9076,5.545727 +0.8297371,93,990.6756,5.545205 +0.741467,22,177.8167,4.284039 +0.7635628,64,581.6729,5.129171 +0.5543599,13,124.4985,3.405149 +0.815754,80,445.7278,5.420853 +0.9187836,79,491.0139,5.784896 +0.6401774,26,569.7998,4.179082 +0.6696699,57,670.915,4.847928 +0.8378535,11,43.21189,4.078821 +0.559829,57,982.0274,4.651717 +0.7326061,3,730.2683,2.194841 +0.6143365,4,658.2037,2.246992 +0.9091326,58,130.0204,5.619253 +0.7299739,46,905.6522,4.808786 +0.9438849,65,51.04049,6.149484 +0.6383169,34,143.9447,4.415962 +0.6008252,38,863.7329,4.409409 +0.7914155,67,926.258,5.221909 +0.5824244,3,889.5783,1.783688 +0.5264587,92,418.4913,4.956136 +0.9393047,42,118.5326,5.591449 +0.8931902,37,63.91318,5.311936 +0.6691642,25,686.5356,4.204276 +0.655101,78,714.8446,5.047903 +0.9385995,37,316.4599,5.410553 +0.6542483,12,294.8234,3.531808 +0.7505392,67,863.9093,5.127012 +0.8010309,17,441.6191,4.211893 +0.5404961,36,29.51087,4.338949 +0.8481581,77,556.2782,5.483866 +0.8356528,31,908.498,4.787953 +0.8227231,52,216.2118,5.164859 +0.905388,97,83.37888,6.029684 +0.7548435,56,900.9445,5.008181 +0.6031258,10,727.9192,3.238254 +0.6346565,82,77.91511,5.112419 +0.766229,28,344.5748,4.52627 +0.5894321,72,904.7874,4.875008 +0.6093439,35,782.5465,4.36002 +0.7497125,68,993.3388,5.134286 +0.5022351,80,492.7455,4.815045 +0.7511856,74,421.0537,5.209693 +0.5176743,42,230.2803,4.352358 +0.7387836,54,3.121385,6.995114 +0.761282,21,475.0687,4.276069 +0.8406623,40,402.1961,5.007226 +0.882509,85,381.4973,5.681394 +0.9286038,79,467.4862,5.840803 +0.5992355,79,835.7454,4.959146 +0.890761,24,666.5893,4.805821 +0.7234082,33,730.644,4.543084 +0.5505608,19,213.1412,3.742900 +0.8660476,47,939.6582,5.193467 +0.940598,45,349.6406,5.555837 +0.6006444,93,572.2021,5.080988 +0.5091824,3,983.6616,1.609518 +0.5216768,85,920.905,4.887062 +0.7967704,68,721.9357,5.248968 +0.59216,27,542.8038,4.11822 +0.7599046,18,528.9801,4.142539 +0.8651707,43,113.2006,5.218027 +0.5924965,83,143.1471,5.011246 +0.6820487,51,444.4327,4.794115 +0.7621458,85,451.2133,5.329308 +0.7125131,58,478.2222,4.94979 +0.785969,56,85.08017,5.18163 +0.8220104,61,561.3661,5.245318 +0.690745,82,96.57742,5.21521 +0.9415946,30,858.3626,5.253486 +0.6013633,26,154.6332,4.119098 +0.7275541,9,771.9723,3.427606 +0.7001641,36,248.4740,4.576007 +0.9099395,46,101.5428,5.489313 +0.5301535,12,15.86398,3.358847 +0.7246674,48,676.6038,4.831669 +0.6494136,86,336.4217,5.117376 +0.9117588,55,622.8621,5.500896 +0.8806666,16,913.2533,4.438764 +0.7748915,95,491.9472,5.432733 +0.8041172,31,736.1958,4.695681 +0.5250454,34,398.9952,4.189739 +0.8903168,45,496.8165,5.269568 +0.7864003,98,133.7617,5.54255 +0.672163,88,317.5607,5.176894 +0.5214742,38,623.1296,4.272 +0.73013,3,664.3804,2.187303 +0.8370519,57,483.929,5.245438 +0.905355,22,937.9329,4.804942 +0.5186103,86,984.7663,4.890574 +0.6401834,92,341.8974,5.14821 +0.6548418,31,841.7306,4.349167 +0.9211253,56,37.49689,5.965554 +0.847424,59,751.2014,5.293101 +0.5670823,36,487.3625,4.308973 +0.7570442,69,619.3497,5.166504 +0.7855974,78,226.0553,5.348713 +0.8519632,30,497.0498,4.826449 +0.7275984,28,953.4355,4.421089 +0.6861582,97,713.1176,5.257759 +0.6299306,62,779.7347,4.835759 +0.9084661,52,577.6044,5.448431 +0.8757678,77,722.9621,5.571258 +0.7955783,5,476.438,3.028203 +0.5515631,30,159.7,4.143206 +0.6687658,48,181.5406,4.740979 +0.7556932,67,214.9520,5.170283 +0.7495992,45,738.3258,4.838205 +0.8802353,4,359.4933,3.139567 +0.6101071,37,124.4847,4.432152 +0.7072711,82,990.3553,5.178028 +0.6836548,28,264.0952,4.338638 +0.602489,95,388.3661,5.103602 +0.9298973,78,22.56973,6.608796 +0.7459731,22,161.8984,4.298588 +0.8078601,21,62.63728,4.502277 +0.746816,30,345.1936,4.532392 +0.7855065,12,843.9162,3.85735 +0.875513,94,267.9591,5.739195 +0.5442306,69,11.17396,5.006721 +0.699071,94,19.41204,5.605957 +0.7866223,48,680.867,4.975987 +0.5264621,48,13.63537,4.625036 +0.9174577,35,495.3558,5.222406 +0.8724126,62,914.5348,5.408832 +0.865643,65,408.7572,5.435482 +0.6987177,16,736.9757,3.888351 +0.9262,47,655.252,5.470375 +0.5707421,49,653.633,4.556472 +0.8033052,7,200.0670,3.419037 +0.607467,16,681.1006,3.692504 +0.9112384,40,313.9323,5.300553 +0.727744,87,338.0306,5.277563 +0.5696553,77,73.57855,4.940687 +0.5205544,28,161.0509,4.027688 +0.7081532,90,462.7116,5.254306 +0.7741767,14,205.8534,3.980006 +0.7166292,16,373.7093,3.936160 +0.5436275,6,821.2211,2.567207 +0.8027656,11,680.4826,3.833235 +0.8254717,83,922.7415,5.458177 +0.932488,58,866.6913,5.643221 +0.8418702,45,569.1373,5.088895 +0.689414,32,417.8379,4.451095 +0.7923089,93,146.7568,5.51455 +0.8078084,24,657.6303,4.508357 +0.8114387,36,717.209,4.829867 +0.6953754,45,165.5859,4.750391 +0.5427887,13,667.9623,3.370327 +0.6278709,87,742.4106,5.077376 +0.719019,47,575.633,4.805737 +0.8485726,22,182.7487,4.60427 +0.8952204,13,134.3489,4.388571 +0.5808132,14,174.6743,3.525328 +0.8973759,90,853.2268,5.754695 +0.6880474,54,500.3682,4.846951 +0.677843,39,845.5148,4.575613 +0.7658533,68,863.7593,5.171952 +0.938231,54,944.06,5.630914 +0.8791004,66,866.3697,5.476817 +0.8274844,59,926.6531,5.229684 +0.9470333,18,209.7032,4.969697 +0.6802575,29,3.550959,5.529664 +0.5066382,24,740.083,3.860899 +0.8874296,23,712.4559,4.757439 +0.8624187,68,610.8993,5.444066 +0.7703005,49,791.0794,4.948802 +0.8037844,67,242.3122,5.286526 +0.912851,95,88.46587,6.044068 +0.8034184,93,912.2758,5.47648 +0.6455281,86,2.359885,7.036967 +0.6580722,80,904.2982,5.069314 +0.8415494,70,145.7251,5.462051 +0.90707,53,996.3983,5.443663 +0.8247734,79,285.8116,5.452874 +0.7215811,8,61.89573,3.339986 +0.6220738,26,908.8918,4.141114 +0.6506316,97,846.5834,5.192115 +0.7313284,38,93.45492,4.731484 +0.8823698,27,966.4982,4.853321 +0.7490274,52,386.2727,4.953415 +0.6805436,33,651.8731,4.452449 +0.7764903,39,280.9689,4.81385 +0.9432227,84,752.5136,5.9566 +0.8667044,76,394.4018,5.546927 +0.5788225,14,258.0226,3.517233 +0.8875073,89,733.1099,5.710791 +0.5351773,44,262.4027,4.418358 +0.6488808,73,949.2446,4.987076 +0.9236432,13,125.3093,4.562865 +0.8962864,58,309.9517,5.489335 +0.7281808,13,587.0542,3.775624 +0.5180642,77,354.9852,4.814268 +0.6902971,2,939.4611,1.4374 +0.7647461,99,548.2068,5.435252 +0.5776067,30,913.6733,4.176379 +0.8657476,6,795.0982,3.493412 +0.897945,32,541.3933,5.056966 +0.6598413,5,171.2253,2.637734 +0.893147,56,292.6846,5.454062 +0.6640957,61,271.5816,4.900817 +0.8715021,23,764.0064,4.689651 +0.8385217,13,201.9563,4.123507 +0.7627245,32,714.4778,4.611452 +0.8619162,40,977.3098,5.063287 +0.9254046,89,777.3225,5.883097 +0.6706702,18,700.07,3.928967 +0.6348828,16,987.2555,3.747484 +0.6960192,27,182.7434,4.344458 +0.8773171,90,39.94803,6.032864 +0.5626677,16,956.1505,3.602819 +0.5537715,46,444.1438,4.48079 +0.6688064,80,897.1477,5.08883 +0.6897467,86,601.8464,5.182841 +0.871555,50,638.7892,5.263301 +0.5150773,31,193.1971,4.101366 +0.8863904,75,97.00325,5.72981 +0.7150527,26,488.4888,4.338653 +0.7805498,31,186.7901,4.661684 +0.6060921,49,36.88978,4.719998 +0.8752972,75,59.6561,5.772133 +0.5284842,20,752.361,3.740229 +0.911607,12,123.6005,4.417916 +0.912127,75,577.6007,5.711903 +0.6424525,21,968.2822,4.001205 +0.9467245,29,44.99821,5.59281 +0.6967225,72,493.199,5.073494 +0.926016,23,473.5198,4.967169 +0.9147218,44,564.3584,5.365337 +0.6036511,88,221.1464,5.061308 +0.6954212,98,549.93,5.285678 +0.6096702,33,74.86955,4.357886 +0.6447025,8,297.3146,3.109925 +0.5721982,13,116.7042,3.443134 +0.8261254,82,283.0360,5.482771 +0.6414976,75,908.1127,4.993686 +0.814776,62,968.177,5.22812 +0.7715264,30,209.3643,4.607552 +0.5268074,37,739.2855,4.258942 +0.8995444,14,970.326,4.418598 +0.6672158,22,380.9123,4.098374 +0.5621144,53,377.9919,4.605991 +0.6793161,41,81.38955,4.678239 +0.6916072,85,566.663,5.179 +0.5736763,66,941.3328,4.784641 +0.9219027,6,886.3211,3.805059 +0.5896647,7,858.1352,2.839533 +0.9074126,10,93.07447,4.253267 +0.66789,51,629.9087,4.762436 +0.877229,69,750.5044,5.502388 +0.9137808,60,799.3949,5.563941 +0.9041558,14,184.6966,4.481808 +0.7500885,43,328.5007,4.818373 +0.8837174,63,472.7422,5.47702 +0.7709719,40,827.9627,4.800039 +0.5613473,21,753.5284,3.844366 +0.8607043,71,90.77541,5.593585 +0.894365,26,912.2157,4.878227 +0.6289452,15,394.0313,3.681227 +0.6738608,51,931.1405,4.770833 +0.612593,9,844.2056,3.152861 +0.7328856,51,999.851,4.890585 +0.9286233,28,415.55,5.132799 +0.6607356,51,361.9293,4.755496 +0.6956952,58,683.2114,4.911127 +0.8438404,59,179.9122,5.332682 +0.5322143,85,18.54251,5.046697 +0.6755007,15,829.881,3.777777 +0.5618366,62,92.26922,4.753428 +0.5100895,36,103.1916,4.225376 +0.6867955,29,328.8595,4.370096 +0.6402259,56,200.4614,4.798722 +0.9200455,96,727.2613,5.904703 +0.7006108,77,978.7424,5.12098 +0.6415493,27,808.732,4.210867 +0.7054206,38,983.0683,4.611176 +0.8708127,17,924.364,4.445982 +0.6735938,90,59.16235,5.288341 +0.893749,31,274.5217,5.035676 +0.811464,78,482.6777,5.38987 +0.5329308,98,757.2869,5.007849 +0.7138424,36,177.7422,4.61582 +0.8361404,44,14.41229,5.711417 +0.8358981,58,234.4316,5.279698 +0.7662827,45,166.0394,4.91555 +0.5136097,15,968.2607,3.448866 +0.9202818,12,400.6707,4.422114 +0.901509,80,856.068,5.695603 +0.8459219,12,243.37,4.075717 +0.895828,99,675.6542,5.815219 +0.9483792,2,505.0198,2.758998 +0.6077581,78,46.8255,5.059373 +0.8990502,28,440.9378,4.968781 +0.7994523,58,128.8626,5.208285 +0.7051844,87,246.3544,5.240367 +0.609106,82,627.9874,5.004618 +0.7393058,16,102.7798,4.025542 +0.7529953,85,445.276,5.309107 +0.731806,33,628.1298,4.56342 +0.880604,33,539.6335,5.00397 +0.5836496,19,496.0396,3.800555 +0.8817114,24,71.55129,4.891774 +0.9257038,29,832.7737,5.123804 +0.5565546,17,825.7594,3.646683 +0.814996,90,970.7049,5.483541 +0.7525624,43,709.3263,4.811639 +0.5808193,57,768.9612,4.688041 +0.6070652,30,126.9498,4.254673 +0.6703728,62,509.1423,4.914036 +0.8503237,98,835.3743,5.642843 +0.8517253,48,19.13650,5.712755 +0.5168282,49,49.78515,4.508736 +0.832432,60,758.4743,5.258661 +0.8950984,34,458.0435,5.092172 +0.5167257,90,269.1065,4.928903 +0.8812985,45,501.8186,5.232066 +0.8884966,4,959.577,3.17786 +0.5751634,23,179.3001,3.960573 +0.9069385,42,747.0547,5.287428 +0.8875317,19,296.2533,4.628104 +0.596398,71,686.8049,4.87814 +0.918342,86,300.7095,5.86174 +0.8740808,85,72.80344,5.814391 +0.5438677,37,944.3981,4.287476 +0.7976671,40,476.4478,4.876465 +0.9018208,52,461.4554,5.423492 +0.7830676,65,791.2986,5.182023 +0.8163788,46,515.612,5.029737 +0.6272917,35,201.1602,4.408986 +0.5440327,17,510.8568,3.624252 +0.7540332,56,198.2257,5.039744 +0.9448444,91,142.8565,6.14086 +0.6085111,30,756.2686,4.234089 +0.8094153,21,564.3328,4.408084 +0.5010243,17,944.5477,3.541730 +0.9293139,46,666.201,5.473828 +0.6923277,12,741.6548,3.613324 +0.914651,100,317.0432,5.9377 +0.8499166,92,470.4283,5.613306 +0.5807449,11,980.1108,3.284324 +0.8983226,6,733.9231,3.658757 +0.8945144,72,158.2759,5.677252 +0.5103657,33,903.8698,4.136651 +0.534177,22,375.0012,3.83756 +0.6324964,8,567.16,3.07826 +0.613885,56,13.62238,5.01518 +0.851725,27,382.9489,4.751082 +0.8799537,49,153.7527,5.345505 +0.7592371,18,819.073,4.137142 +0.9212617,38,678.4613,5.294067 +0.5598017,78,26.99321,5.006114 +0.6814634,42,681.3903,4.641436 +0.8606673,20,783.8055,4.537746 +0.6084816,4,685.7197,2.232538 +0.6399375,45,593.7783,4.615192 +0.6103587,22,351.3694,3.983024 +0.9266782,92,14.14941,7.182278 +0.9188638,49,253.6643,5.495489 +0.687522,2,884.6993,1.429223 +0.5745827,58,144.1793,4.712286 +0.6408255,43,72.38769,4.638984 +0.5272403,12,389.2443,3.26381 +0.7431113,18,929.1973,4.095248 +0.5755574,58,755.1514,4.692339 +0.7362868,26,668.128,4.384603 +0.8476235,80,459.8383,5.513119 +0.531841,26,521.0744,3.976064 +0.8565164,12,373.0101,4.10788 +0.7162138,73,845.4122,5.115485 +0.6513347,73,279.6416,5.00723 +0.550517,93,804.8208,4.997617 +0.553736,7,449.5708,2.762216 +0.8000883,90,715.2746,5.449685 +0.7449889,41,357.5293,4.76865 +0.7050233,5,928.9357,2.748723 +0.811888,92,684.0569,5.49554 +0.5949598,39,782.7147,4.419858 +0.6980153,37,617.763,4.578678 +0.6513668,46,966.251,4.650048 +0.6346104,43,623.7619,4.569875 +0.6049259,50,348.3189,4.637309 +0.8538904,93,555.5724,5.628339 +0.7127893,36,798.1527,4.586658 +0.9133792,28,404.7592,5.044139 +0.8015495,82,612.701,5.392967 +0.7103518,76,782.9977,5.13295 +0.8044765,10,496.2737,3.754206 +0.8711564,8,949.4938,3.795038 +0.850426,44,424.9812,5.107353 +0.7427764,31,531.0962,4.541912 +0.7833918,13,436.4556,3.928051 +0.5161939,9,153.1221,2.956119 +0.542656,22,466.4729,3.852124 +0.7050307,42,581.7667,4.691265 +0.9394027,90,696.7951,5.976785 +0.6877143,77,409.0994,5.106878 +0.6642221,79,415.6036,5.080381 +0.8659564,28,995.0667,4.815222 +0.6232415,99,540.7747,5.16357 +0.5393753,21,977.4539,3.802869 +0.6286016,33,708.3299,4.349475 +0.9232921,23,752.7533,4.940747 +0.6183734,92,523.36,5.104062 +0.9043008,92,200.5048,5.866232 +0.6344774,89,236.9535,5.122502 +0.8628253,13,701.8662,4.19359 +0.9023469,36,694.6135,5.157649 +0.920216,96,481.1691,5.919217 +0.7553396,30,291.5915,4.556811 +0.7868298,37,22.24995,5.117885 +0.5297635,90,7.767314,5.255495 +0.7545318,90,983.2014,5.339463 +0.624568,77,498.1715,4.988259 +0.6753779,93,882.7993,5.206611 +0.6985417,92,379.6412,5.25464 +0.7701595,40,774.3157,4.798714 +0.8281533,13,974.1746,4.062279 +0.5118858,97,242.9545,4.976425 +0.7758689,65,513.8558,5.171371 +0.7374977,95,351.8510,5.357994 +0.6412336,53,703.0254,4.740301 +0.9063756,100,900.0661,5.860283 +0.8418323,25,35.81261,4.872203 +0.7665503,31,927.7007,4.59406 +0.9219692,74,591.2485,5.752762 +0.6358764,88,928.0914,5.097556 +0.9315368,16,528.4209,4.723142 +0.8100316,75,250.0677,5.381272 +0.6597449,67,687.8693,4.947374 +0.7521641,51,428.6216,4.944315 +0.8862515,96,909.08,5.750776 +0.8434805,37,450.0125,4.956334 +0.6248698,79,847.8975,5.002474 +0.9387935,27,351.9824,5.181689 +0.7219279,32,688.6867,4.516232 +0.7028832,4,115.2441,2.491463 +0.943075,85,51.73854,6.33496 +0.5073794,44,17.59787,4.470998 +0.8603101,42,103.5809,5.19063 +0.5362855,41,957.9404,4.356659 +0.7562751,71,135.6305,5.237723 +0.8609146,54,509.9657,5.284062 +0.8023684,6,203.2283,3.256929 +0.8707021,16,28.49927,4.670428 +0.6753105,14,677.1358,3.71605 +0.8213447,86,969.6892,5.470054 +0.7359973,89,538.931,5.300517 +0.5872538,45,607.1356,4.519681 +0.8535855,45,984.2838,5.118899 +0.744609,72,340.6154,5.180845 +0.695795,60,691.346,4.935945 +0.9209901,19,839.272,4.780656 +0.9332112,25,274.9751,5.096345 +0.7586022,23,707.0266,4.339541 +0.8356929,73,491.7684,5.412498 +0.9449564,100,217.8314,6.150777 +0.769811,4,500.2968,2.684143 +0.8468755,81,842.382,5.505682 +0.8751426,29,595.5288,4.884167 +0.7680948,18,56.2383,4.252435 +0.6820803,50,727.2103,4.773905 +0.8127874,55,255.6038,5.168734 +0.8462327,43,101.6337,5.157443 +0.800735,61,891.4924,5.180328 +0.9404126,52,486.4209,5.63849 +0.5839157,12,165.2641,3.385607 +0.935952,24,741.7999,5.054673 +0.9156533,41,319.3794,5.340692 +0.8196525,59,989.9556,5.206648 +0.6757751,83,725.6698,5.12955 +0.648204,48,961.4014,4.676463 +0.765033,78,93.1138,5.358278 +0.7678091,93,854.3995,5.392688 +0.5783231,29,170.5511,4.164157 +0.8802704,69,471.1699,5.525453 +0.5391529,36,214.6134,4.266653 +0.8768197,92,684.0415,5.693874 +0.8024528,19,389.2881,4.310811 +0.8102137,25,543.2757,4.550161 +0.5723951,34,177.1517,4.28349 +0.7918926,15,860.9835,4.07184 +0.9097192,26,440.2916,4.967131 +0.8408364,34,993.8379,4.872849 +0.7611193,10,193.7934,3.635555 +0.6503083,44,663.8255,4.616585 +0.7713632,22,182.8751,4.361633 +0.9257941,9,785.8253,4.203124 +0.8617674,10,87.37827,4.022113 +0.6977722,24,710.5994,4.231432 +0.5354379,8,618.6639,2.866230 +0.7276367,78,194.4265,5.219456 +0.927455,28,165.6871,5.174257 +0.9348588,94,166.7061,6.069519 +0.5434083,10,335.4119,3.115874 +0.6687663,15,727.9403,3.763405 +0.54875,94,3.577831,5.762369 +0.6946637,95,57.15825,5.380881 +0.8181467,88,282.4998,5.508351 +0.702337,22,39.24263,4.280552 +0.6295064,62,309.4151,4.845432 +0.8923052,9,895.7956,4.004396 +0.6035331,60,645.0201,4.766525 +0.8836149,97,409.5161,5.769774 +0.6316577,69,864.4558,4.916431 +0.8140471,93,972.8971,5.502959 +0.924153,67,537.857,5.702411 +0.6059753,59,130.9093,4.786022 +0.7303484,97,704.4985,5.343819 +0.9404786,43,546.2941,5.50638 +0.9363265,74,825.2387,5.827465 +0.7937029,90,872.1234,5.430884 +0.6887033,72,160.8189,5.087694 +0.8896025,96,720.0252,5.768666 +0.6226318,65,479.5238,4.861916 +0.9318561,21,212.6343,4.969043 +0.6530969,44,196.4965,4.640452 +0.5156705,27,422.6076,3.980209 +0.5506686,44,778.192,4.43762 +0.941927,45,202.6295,5.601233 +0.6978838,48,9.815825,5.319749 +0.7202505,8,944.3096,3.29123 +0.7825415,92,833.0413,5.41958 +0.8102026,31,475.4885,4.719315 +0.704962,3,742.0467,2.110853 +0.868628,49,797.4157,5.234452 +0.662415,36,122.3492,4.517269 +0.5685591,11,841.5693,3.259537 +0.5324882,84,611.4716,4.897254 +0.9195188,45,979.4784,5.395093 +0.924014,24,307.1492,5.000818 +0.7681578,9,254.8762,3.550494 +0.938885,33,967.0505,5.299149 +0.5058739,76,580.4191,4.782108 +0.7195724,42,493.8713,4.724312 +0.6590689,26,844.7261,4.214671 +0.8727227,80,634.8739,5.588596 +0.8332684,74,364.154,5.423553 +0.5644423,15,487.3337,3.548919 +0.5277456,46,305.2887,4.4392 +0.6731391,95,41.32865,5.372164 +0.8058712,32,449.7839,4.73212 +0.7805167,82,459.6353,5.346971 +0.6403517,29,324.7766,4.274653 +0.6894963,50,183.9768,4.814299 +0.840274,56,528.483,5.240915 +0.7802236,81,713.9484,5.329507 +0.6491817,91,183.0804,5.1731 +0.8662118,26,236.4739,4.791629 +0.8121542,56,879.6062,5.150578 +0.9429012,75,153.1888,5.987243 +0.944928,66,743.2445,5.814485 +0.5885454,71,468.0117,4.868063 +0.6490172,97,725.429,5.190661 +0.5939193,24,571.1581,4.022086 +0.5846302,29,702.0651,4.162268 +0.7266355,97,453.0783,5.343648 +0.7995213,35,300.3975,4.791758 +0.8849358,46,862.011,5.251369 +0.7821957,19,512.0406,4.248446 +0.6250475,20,955.2649,3.924167 +0.5438873,29,18.50624,4.206306 +0.6162852,40,191.5103,4.494984 +0.9380071,43,949.3993,5.476223 +0.6859009,82,401.6121,5.148329 +0.867299,43,321.3514,5.159297 +0.5054768,16,301.6068,3.497222 +0.8004985,45,897.7953,4.961837 +0.5992018,50,781.0341,4.620266 +0.7640982,43,68.31587,4.941959 +0.6466677,29,209.8136,4.294416 +0.5161559,100,304.6677,5.002615 +0.7669,24,402.9333,4.401981 +0.6212073,12,879.2709,3.453426 +0.8967,91,814.1106,5.760005 +0.756986,58,258.9546,5.062312 +0.6706516,11,896.8628,3.480077 +0.7702406,14,247.8120,3.964634 +0.9408331,3,59.2535,3.297193 +0.611694,79,157.4412,5.007073 +0.9133146,49,888.8744,5.422573 +0.7713459,60,989.9753,5.094866 +0.782709,8,864.2783,3.469534 +0.8122757,28,791.8693,4.640118 +0.9426235,44,832.2008,5.526677 +0.5151007,39,486.6782,4.283144 +0.9192788,97,80.94583,6.115433 +0.5547035,16,464.9022,3.589676 +0.8503518,58,999.2576,5.286516 +0.6912052,37,2.840297,6.232477 +0.6996373,20,398.5893,4.088258 +0.6826364,12,164.8152,3.605829 +0.7570145,59,136.6271,5.10443 +0.7892998,71,606.7073,5.263065 +0.693803,13,137.5442,3.711556 +0.5734344,42,847.0786,4.439896 +0.5256841,75,807.9073,4.802194 +0.8720609,44,196.4655,5.217903 +0.849763,58,113.6172,5.37946 +0.883915,86,606.7208,5.679039 +0.6986861,45,724.167,4.72818 +0.7730728,85,237.2305,5.375397 +0.6843036,37,881.977,4.547593 +0.8880187,90,652.6476,5.722867 +0.5066843,68,230.6495,4.707207 +0.8091692,37,685.1842,4.844475 +0.5834305,21,865.753,3.885641 +0.7739443,5,774.2294,2.953505 +0.782279,30,254.5893,4.630117 +0.840519,26,279.9131,4.691499 +0.5002118,84,350.2359,4.84983 +0.5737223,22,703.2993,3.908331 +0.6703492,20,616.1641,4.019935 +0.7475401,98,548.261,5.39069 +0.7815499,8,816.3322,3.466209 +0.7417556,23,517.3739,4.300781 +0.8445668,36,822.2591,4.929407 +0.7967811,31,707.4966,4.675692 +0.6796176,28,661.9581,4.318972 +0.8140635,80,911.781,5.402426 +0.6108495,96,245.8480,5.13348 +0.7784848,82,990.4747,5.329618 +0.6128227,6,414.9884,2.724943 +0.7579412,74,153.5898,5.263626 +0.6994303,53,631.9404,4.853168 +0.5234492,78,297.832,4.834109 +0.8478319,59,693.8864,5.295759 +0.6780007,82,653.9778,5.126247 +0.9499825,77,248.3936,6.008599 +0.7981417,17,519.4062,4.201151 +0.7752259,42,311.8138,4.863517 +0.826048,33,864.1303,4.805565 +0.667351,98,974.1075,5.227651 +0.6381593,62,681.9012,4.851483 +0.798938,4,711.222,2.783472 +0.5879505,42,369.4315,4.471059 +0.8196174,54,180.369,5.192559 +0.6100542,90,444.2154,5.076279 +0.6362786,23,233.5411,4.077975 +0.750284,26,116.5786,4.461778 +0.9369969,5,178.8826,3.771926 +0.5257318,9,706.6695,2.969496 +0.7478378,42,643.4664,4.784185 +0.9030148,45,524.4915,5.324933 +0.6976315,19,264.6202,4.045463 +0.9357426,73,645.4213,5.821537 +0.7157091,12,958.8152,3.668812 +0.7272343,13,369.1633,3.777322 +0.5502546,48,959.5066,4.504085 +0.9253864,96,765.634,5.93158 +0.9491976,69,528.1747,5.886513 +0.5999067,35,714.8857,4.343182 +0.6613981,43,778.2886,4.619001 +0.879046,30,112.4804,5.003622 +0.9058213,5,695.0025,3.520497 +0.8086484,19,697.3336,4.321889 +0.9370875,92,947.153,5.967871 +0.8467592,85,885.2863,5.53676 +0.7995316,96,972.5823,5.487207 +0.5848051,35,458.6017,4.318515 +0.7358364,58,597.9595,4.996038 +0.6540596,48,143.7583,4.719058 +0.5006105,81,662.1652,4.82027 +0.8346951,48,14.25703,5.788726 +0.7329782,6,43.70629,3.085010 +0.9066034,2,823.6592,2.375442 +0.7878482,13,906.5229,3.935062 +0.7943929,65,946.3048,5.207958 +0.632154,21,257.8158,3.990246 +0.8313863,47,269.2579,5.108403 +0.5335781,33,642.3327,4.177841 +0.7919937,90,737.0373,5.429159 +0.7023364,84,296.3370,5.204418 +0.8558765,53,630.4518,5.249077 +0.7163529,46,152.1295,4.816822 +0.8768499,33,273.0424,5.009091 +0.8699501,77,859.3091,5.547184 +0.6634953,75,282.3771,5.04935 +0.5972464,3,744.7833,1.820563 +0.5361586,7,933.6834,2.722984 +0.9211899,78,470.3899,5.790909 +0.7581645,23,977.301,4.336052 +0.8797704,57,184.4853,5.438209 +0.7138117,74,2.634701,7.444284 +0.6939382,2,41.70306,1.465464 +0.7119747,36,351.9855,4.594677 +0.809572,22,557.5994,4.4462 +0.6464639,71,906.9329,4.963047 +0.8569028,7,617.3857,3.608468 +0.5721191,61,902.19,4.723571 +0.7498904,45,663.3189,4.840069 +0.6409147,57,531.118,4.796568 +0.7570784,76,460.3876,5.239693 +0.655966,100,186.1752,5.251874 +0.6083228,89,915.9558,5.05899 +0.8398448,35,487.5325,4.901501 +0.5304431,41,517.3377,4.34911 +0.7651443,26,709.3049,4.454686 +0.7308961,66,9.157054,5.800235 +0.6492565,27,835.3336,4.225992 +0.8777307,91,212.3944,5.741262 +0.7739295,81,861.2667,5.312202 +0.8367624,47,515.6989,5.106047 +0.7151403,58,933.0991,4.94759 +0.8882203,46,972.1538,5.263063 +0.828799,27,232.0475,4.688259 +0.8518334,56,420.6314,5.283884 +0.790318,16,171.5772,4.149405 +0.5580039,26,502.0283,4.023696 +0.6352824,22,475.6875,4.030243 +0.8705968,29,851.155,4.861 +0.6465768,33,538.81,4.386032 +0.7590183,69,73.19668,5.279012 +0.6525166,3,888.6056,1.963260 +0.7502,67,678.8216,5.12912 +0.5088592,89,461.3315,4.903761 +0.7982266,76,366.1689,5.344668 +0.6969608,66,241.728,5.02676 +0.6023179,78,363.5392,4.963039 +0.6775685,40,714.0139,4.595814 +0.66376,7,908.377,3.011174 +0.8134477,16,708.8301,4.193725 +0.5391178,46,835.6779,4.452678 +0.8838125,15,159.1018,4.443479 +0.672796,93,961.0114,5.201217 +0.5799419,50,484.976,4.589876 +0.5265862,41,490.8695,4.342801 +0.7029529,64,386.5903,5.005399 +0.9227982,85,515.2134,5.851962 +0.7224784,87,964.932,5.249543 +0.7436994,23,694.6903,4.30269 +0.5867254,76,376.4596,4.91713 +0.920802,42,540.3073,5.36702 +0.9338496,64,748.9049,5.719828 +0.838145,37,289.8473,4.951242 +0.5418479,91,779.7418,4.968562 +0.7017749,25,780.5221,4.27309 +0.5447994,43,683.9666,4.410061 +0.871518,51,778.878,5.273395 +0.8858706,40,121.4736,5.244512 +0.5150946,91,202.8316,4.937838 +0.6716517,84,745.3948,5.130122 +0.7249413,9,340.9548,3.426074 +0.7069959,61,733.6144,4.969756 +0.9488083,68,720.232,5.863705 +0.615935,17,160.8070,3.77786 +0.7771524,10,561.6105,3.66843 +0.6106939,75,556.1777,4.944092 +0.6134752,24,374.4686,4.062762 +0.5894027,51,207.9282,4.632573 +0.8338988,49,547.5659,5.125847 +0.7043978,22,531.6043,4.17634 +0.7000624,42,531.8091,4.681899 +0.6362798,6,823.059,2.778423 +0.7907857,89,825.5564,5.416972 +0.9223966,58,656.838,5.590938 +0.7182263,84,915.3776,5.217181 +0.86109,81,997.8343,5.548408 +0.8848985,89,869.6922,5.697209 +0.651742,22,614.38,4.062032 +0.6605856,3,98.09387,1.994872 +0.882514,63,711.0102,5.462032 +0.7547409,29,689.7354,4.515432 +0.9344155,10,400.5296,4.366817 +0.8368518,60,859.1815,5.270026 +0.7531741,56,901.1335,5.004396 +0.755553,9,359.4564,3.509542 +0.5549631,38,47.68359,4.383727 +0.9452977,2,460.798,2.723966 +0.7122327,55,485.7671,4.910092 +0.8996243,27,993.7618,4.929864 +0.7124914,43,538.1343,4.725792 +0.660462,99,233.3052,5.245786 +0.9464191,54,778.8559,5.693103 +0.8299546,74,141.3385,5.46646 +0.8861815,93,564.7782,5.741055 +0.5689354,11,962.0052,3.260038 +0.5572705,4,974.416,2.109944 +0.7668345,75,828.1217,5.243156 +0.7570055,26,791.2877,4.433298 +0.8012525,50,338.7716,5.058115 +0.6085329,61,566.1486,4.788552 +0.7073712,23,921.3009,4.216015 +0.613116,99,362.8237,5.151726 +0.8869052,28,692.1336,4.904267 +0.693029,29,395.8174,4.380828 +0.8763198,16,419.0561,4.430672 +0.6236438,13,929.845,3.533911 +0.631617,99,172.1357,5.202372 +0.8453343,29,491.5275,4.778079 +0.7733883,46,643.9964,4.912519 +0.8837153,93,751.4323,5.724347 +0.5842343,8,245.8035,2.974394 +0.7813733,56,967.567,5.070012 +0.7918319,86,426.1061,5.409196 +0.5988063,89,374.8896,5.051499 +0.8410293,7,502.7104,3.545143 +0.7985893,44,518.6063,4.94787 +0.8933352,77,730.5682,5.6391 +0.5008204,19,263.4858,3.647075 +0.7042678,68,759.1042,5.042159 +0.5722501,47,515.0346,4.528346 +0.6796555,73,455.8959,5.05149 +0.826039,84,33.03012,5.8104 +0.7891293,33,519.956,4.706889 +0.6771388,83,646.286,5.133324 +0.7841508,5,513.7669,2.988859 +0.8459404,6,305.2934,3.416229 +0.8240553,7,432.4855,3.481931 +0.6144259,22,963.728,3.985171 +0.793283,22,23.60787,4.664766 +0.7154832,80,681.36,5.180846 +0.9356364,98,61.58024,6.31134 +0.6426233,21,114.6117,4.029196 +0.7534234,5,194.0182,2.898595 +0.6921663,53,686.5312,4.837731 +0.612162,76,666.1722,4.954618 +0.653742,59,619.762,4.844223 +0.63553,59,731.1882,4.809578 +0.6200705,89,378.8527,5.087704 +0.6739772,18,445.6196,3.939308 +0.9462715,68,524.3853,5.854955 +0.7380447,41,375.4509,4.751645 +0.523857,78,851.987,4.827968 +0.5059004,81,653.6981,4.828579 +0.7512636,98,220.7087,5.42606 +0.6992854,16,132.8526,3.914488 +0.8227314,72,30.54506,5.703733 +0.9484554,86,735.9275,6.009947 +0.6075916,30,535.5072,4.234346 +0.8852776,38,952.3645,5.115993 +0.5918882,6,400.8994,2.676709 +0.6517169,8,804.8244,3.121701 +0.6898073,77,688.0591,5.103501 +0.9030026,67,11.96135,6.805333 +0.7437836,28,699.2324,4.461164 +0.875612,18,962.0697,4.511439 +0.5997572,86,864.9031,5.020716 +0.7092418,23,309.4445,4.230975 +0.6523984,83,734.0368,5.086989 +0.5312756,4,851.336,2.050064 +0.6282366,20,929.0183,3.93066 +0.5370415,23,451.2979,3.880654 +0.8735109,63,350.2037,5.448246 +0.8351599,24,859.1465,4.59044 +0.9494263,72,211.5009,5.974775 +0.6140805,16,844.5632,3.705149 +0.7450794,4,714.8403,2.603754 +0.7300385,70,851.1554,5.114127 +0.5096593,78,938.8038,4.805399 +0.8180738,76,614.2184,5.384708 +0.7153642,97,572.9604,5.316716 +0.8078966,7,338.2535,3.42692 +0.6904116,91,286.7615,5.237953 +0.8160172,70,553.6183,5.324621 +0.6299202,51,455.703,4.694567 +0.7084219,4,257.4866,2.499209 +0.9497703,50,348.7214,5.697982 +0.8508624,78,645.7308,5.497724 +0.6742178,82,677.2921,5.118834 +0.8821952,94,356.1011,5.74971 +0.5468056,2,705.1514,1.061390 +0.6789854,45,410.6719,4.69475 +0.8280198,79,810.9767,5.433856 +0.6221906,86,539.6919,5.062418 +0.8026975,15,852.9501,4.104213 +0.8222019,21,824.7458,4.443411 +0.5803124,37,138.2354,4.371959 +0.6882381,48,926.1536,4.753676 +0.8179348,66,203.1527,5.324453 +0.5960629,43,262.2780,4.508414 +0.6974869,88,196.3518,5.240979 +0.823517,91,940.689,5.514238 +0.8117326,13,280.8571,4.022421 +0.9262007,64,178.3617,5.74963 +0.678415,15,464.139,3.78771 +0.806295,18,643.1348,4.27097 +0.6671483,35,754.7018,4.470686 +0.6650073,14,21.80781,3.833526 +0.5473471,40,56.81366,4.401174 +0.9026884,52,113.4952,5.524751 +0.799699,58,557.2425,5.148982 +0.6020433,59,817.6421,4.749881 +0.7945232,47,44.2495,5.16844 +0.9197076,74,211.6517,5.794805 +0.859864,54,580.0636,5.277453 +0.7954953,68,945.6234,5.242217 +0.6905937,86,716.3957,5.182364 +0.6441292,74,974.002,4.988236 +0.5752189,16,88.31872,3.650503 +0.7610879,100,405.8932,5.440726 +0.7511553,49,522.1999,4.90919 +0.8332004,35,975.6917,4.870302 +0.7003797,94,765.2736,5.262087 +0.5723759,36,250.6977,4.324629 +0.6185644,29,946.417,4.224327 +0.8220523,19,398.2014,4.371275 +0.8655022,88,16.47093,6.414553 +0.903933,34,975.2979,5.118896 +0.6888455,27,885.4896,4.307053 +0.8945567,50,805.753,5.350675 +0.6323121,54,180.8512,4.758951 +0.5020541,89,814.6319,4.890543 +0.9150541,54,356.8162,5.524083 +0.8965727,76,253.6532,5.685681 +0.6544637,24,615.9503,4.140782 +0.6635601,41,573.3519,4.589051 +0.6201682,46,998.2747,4.592474 +0.8774226,67,135.0859,5.569834 +0.890321,35,201.3599,5.125744 +0.9028605,30,676.057,5.028651 +0.7226537,96,9.642385,6.045286 +0.8471953,3,809.2317,2.622658 +0.8198636,89,693.7546,5.494297 +0.6348555,43,912.2159,4.567892 +0.6425137,75,606.9982,4.998836 +0.873109,75,309.51,5.571157 +0.5760752,33,224.8230,4.262233 +0.7945425,30,828.5185,4.642699 +0.8734823,23,934.1412,4.695301 +0.8686912,61,513.1925,5.395958 +0.6471778,44,937.891,4.608398 +0.5882846,29,724.5066,4.168854 +0.942896,29,366.4086,5.262554 +0.5419351,3,237.3975,1.688196 +0.7674567,2,77.04476,1.701728 +0.8917366,74,66.67197,5.815672 +0.6472711,97,597.1157,5.189636 +0.8479221,21,807.45,4.529399 +0.5589803,43,80.83193,4.467882 +0.5077531,37,732.3927,4.226506 +0.7923223,50,849.2879,5.017456 +0.670393,84,831.423,5.126814 +0.7826879,75,302.5934,5.302287 +0.9387543,94,401.9712,6.022296 +0.8283552,65,534.5723,5.30889 +0.7227295,49,63.70136,4.94129 +0.5687914,34,455.7122,4.266248 +0.5752718,73,98.7667,4.898616 +0.88616,3,302.6824,2.828999 +0.6065566,78,693.4897,4.963533 +0.9167606,89,568.2099,5.8468 +0.6724503,5,574.031,2.663222 +0.784313,83,235.2819,5.386913 +0.940857,31,414.4548,5.290129 +0.9325461,21,901.5054,4.929178 +0.6883665,36,742.762,4.53579 +0.9292036,61,757.2979,5.659778 +0.9008816,96,76.9742,6.01577 +0.761467,48,742.2594,4.913388 +0.8365658,18,440.6055,4.373552 +0.6552103,64,556.7721,4.907782 +0.8254065,34,223.5664,4.856578 +0.8217355,94,426.2313,5.547764 +0.8287026,66,565.9248,5.319255 +0.7975493,62,454.1757,5.194802 +0.6771793,98,812.32,5.246957 +0.6177541,60,35.37344,4.911115 +0.79438,33,936.6395,4.71411 +0.6183924,60,960.2377,4.789908 +0.8887941,93,403.5623,5.763103 +0.7753973,24,56.94756,4.521837 +0.6653419,33,43.18045,4.522211 +0.8109106,48,550.3599,5.043916 +0.613164,39,613.6455,4.454258 +0.9059224,96,93.82517,6.002161 +0.8163602,62,753.2386,5.235758 +0.7707746,66,330.8447,5.180342 +0.5982049,30,835.1149,4.214452 +0.872359,22,767.238,4.658577 +0.84028,65,577.014,5.342823 +0.826224,92,556.121,5.538669 +0.6703941,45,160.551,4.69885 +0.8316669,41,568.3738,4.989419 +0.672689,88,603.938,5.167016 +0.584872,45,537.5861,4.516311 +0.6643863,80,971.6719,5.080185 +0.719142,69,552.564,5.086569 +0.8751901,66,19.89127,6.10715 +0.6868238,12,614.6998,3.60127 +0.891284,10,336.6336,4.105752 +0.7381764,63,855.624,5.056398 +0.6877144,40,834.2985,4.61508 +0.8837561,100,155.7344,5.855813 +0.7723711,50,92.417,5.050388 +0.7447593,38,89.42705,4.768572 +0.8722185,44,412.1780,5.186088 +0.5126045,33,58.81312,4.172292 +0.6937582,85,587.4888,5.182627 +0.7911117,22,194.6301,4.415096 +0.5921802,31,24.67419,4.352036 +0.5053348,33,938.2297,4.127942 +0.8214973,89,376.6808,5.514248 +0.7951828,18,93.5989,4.294712 +0.6450288,86,64.36293,5.183766 +0.8471788,39,480.3094,5.005853 +0.5958538,18,899.7957,3.774029 +0.9010773,94,338.4129,5.829971 +0.6502918,91,432.7548,5.154538 +0.5670526,37,415.3917,4.332074 +0.9350157,40,645.5472,5.414702 +0.9044,14,99.43052,4.524826 +0.8317929,39,303.3309,4.968462 +0.6933141,21,939.7346,4.108837 +0.845593,30,813.2998,4.797022 +0.7186427,16,188.2066,3.952521 +0.859615,24,155.5391,4.723889 +0.7278887,22,52.30448,4.31952 +0.7061932,83,761.9076,5.186903 +0.9022402,64,824.017,5.551911 +0.6490087,66,217.7326,4.93539 +0.6943846,36,516.58,4.551637 +0.5684814,26,286.0778,4.047090 +0.6554544,18,448.8217,3.899225 +0.795269,35,839.412,4.762103 +0.6238327,24,757.4391,4.078363 +0.550766,30,447.5801,4.131244 +0.8800597,2,410.1339,2.203728 +0.6440965,28,63.0589,4.304735 +0.9043739,22,208.8758,4.840424 +0.6648802,53,571.521,4.786388 +0.5320439,20,588.0347,3.747539 +0.6128809,55,149.5538,4.741544 +0.5747402,66,978.2475,4.786235 +0.80501,14,784.1936,4.052608 +0.8099135,50,652.5404,5.067729 +0.7363827,31,749.4184,4.523436 +0.6852816,3,659.303,2.054130 +0.7694083,78,255.168,5.303633 +0.8575165,30,626.4122,4.842038 +0.7631899,27,940.2408,4.4774 +0.8203281,20,645.0849,4.400649 +0.6073138,40,473.9538,4.465438 +0.8104157,69,324.3091,5.313832 +0.7241617,4,471.6251,2.541906 +0.8205727,60,901.444,5.222101 +0.9149799,19,811.2267,4.746086 +0.835535,84,701.7006,5.499324 +0.7527543,44,242.7408,4.850217 +0.6686033,40,773.8855,4.577449 +0.9312872,47,190.7668,5.56208 +0.9144552,24,263.1231,4.950928 +0.8733462,47,566.8382,5.228998 +0.5232224,36,412.0128,4.233111 +0.718345,76,351.4148,5.16206 +0.9048545,86,630.1111,5.764843 +0.5196135,16,225.0018,3.526032 +0.7626791,99,791.2467,5.4246 +0.9192357,20,362.8843,4.827192 +0.7492633,94,650.9407,5.363063 +0.8498713,36,704.8396,4.949172 +0.9369925,27,874.8804,5.144813 +0.5837224,69,712.8748,4.83564 +0.7980785,21,88.03727,4.439118 +0.8667148,44,538.502,5.158677 +0.6073327,29,183.8453,4.218646 +0.7684573,90,986.2768,5.370184 +0.6936724,33,581.2125,4.480758 +0.687191,79,669.1087,5.116968 +0.8340377,99,903.1325,5.600063 +0.6832922,53,18.68955,5.108172 +0.5332718,13,806.5033,3.351198 +0.5237699,4,241.6940,2.035217 +0.9088265,97,84.6489,6.045124 +0.8294818,21,586.6442,4.470498 +0.791115,50,282.425,5.036552 +0.91856,95,725.4959,5.890514 +0.7135054,55,753.2236,4.907396 +0.860862,65,102.1001,5.515011 +0.84523,54,972.6275,5.220716 +0.8560852,74,754.1516,5.475962 +0.7238725,20,874.4928,4.13784 +0.9034313,16,194.8503,4.585412 +0.7031215,54,115.2008,4.9226 +0.7868186,17,274.4223,4.178258 +0.7080042,99,931.5809,5.310344 +0.582401,66,842.4972,4.799686 +0.9021958,53,930.0976,5.422111 +0.6511199,13,567.0518,3.595049 +0.8124542,90,259.2000,5.511839 +0.934324,66,273.5482,5.78612 +0.7660926,76,925.8054,5.249383 +0.748764,56,26.35096,5.274348 +0.7552357,89,102.7598,5.418272 +0.9286532,27,123.1344,5.182816 +0.7288266,2,328.6701,1.558771 +0.5496063,48,543.8712,4.505532 +0.7565857,88,985.629,5.328539 +0.5106877,35,381.159,4.188819 +0.7752931,36,442.6338,4.739741 +0.7177923,33,98.16995,4.583176 +0.7972243,10,377.3643,3.733916 +0.9295137,91,103.3631,6.085717 +0.7990287,68,939.0697,5.251259 +0.75437,67,721.0245,5.137621 +0.7973704,25,326.4377,4.52186 +0.6784953,44,958.7787,4.668511 +0.6956036,28,483.9274,4.355713 +0.659538,96,855.451,5.200489 +0.944546,31,637.6513,5.305119 +0.8469256,34,975.7063,4.893041 +0.6674808,49,435.8748,4.735723 +0.936232,20,52.79911,5.141708 +0.7975782,81,159.8681,5.42625 +0.903022,28,861.7582,4.974912 +0.8505326,35,125.4830,4.997666 +0.6403539,54,775.8325,4.751972 +0.8043825,29,409.8449,4.653847 +0.5183124,16,839.732,3.518277 +0.6213446,22,726.9033,3.99988 +0.5936926,37,32.76075,4.474718 +0.809751,64,986.4935,5.236491 +0.94077,53,544.5571,5.649796 +0.6905449,97,811.6854,5.264553 +0.7754784,19,389.0463,4.233604 +0.6515826,21,845.3145,4.020459 +0.8438344,94,511.9097,5.606381 +0.6452673,84,667.1204,5.083721 +0.849467,44,324.1082,5.112301 +0.7666643,28,291.3787,4.530994 +0.8586009,22,708.908,4.606299 +0.9265102,15,175.7067,4.677897 +0.5242165,59,7.200673,4.92003 +0.5045844,79,930.6226,4.806901 +0.7911816,76,301.5211,5.332991 +0.9307524,57,860.0465,5.621265 +0.8383404,37,672.318,4.932198 +0.8236633,34,770.2948,4.822038 +0.763047,99,153.1683,5.480739 +0.6548154,65,926.9123,4.913963 +0.7707323,17,527.2263,4.123076 +0.8738404,61,301.1623,5.433622 +0.8657663,48,554.2702,5.216425 +0.6843261,94,947.1752,5.229856 +0.6344909,62,841.2254,4.843361 +0.8845142,23,681.4296,4.745308 +0.8838358,36,498.6873,5.082622 +0.9302862,56,39.67869,6.015003 +0.8695975,51,255.0341,5.299941 +0.9011584,3,704.5094,2.914552 +0.6071735,24,272.4455,4.053728 +0.5175375,67,5.328416,5.096529 +0.5891973,3,210.3449,1.803305 +0.5194459,34,179.9309,4.186702 +0.6079837,87,952.0759,5.042047 +0.7140844,81,408.8203,5.194953 +0.8013718,68,190.4623,5.302434 +0.6591662,100,340.2262,5.240922 +0.6670773,12,331.8724,3.559844 +0.9341007,58,957.1275,5.651292 +0.723373,63,932.6138,5.024305 +0.5604985,59,224.9405,4.691283 +0.6705802,22,879.1055,4.099297 +0.7786912,75,271.8816,5.29626 +0.6685635,39,810.294,4.55748 +0.6490457,99,592.4233,5.207065 +0.6931737,6,418.268,2.922958 +0.8710123,31,718.8835,4.914593 +0.5736931,61,229.3061,4.739087 +0.6210157,25,266.6708,4.115779 +0.8493002,81,67.53119,5.693514 +0.7759961,77,213.7897,5.318234 +0.9185508,71,282.1866,5.739998 +0.8265519,63,476.959,5.284545 +0.6687311,37,717.4073,4.517729 +0.6494729,44,908.6333,4.612895 +0.6121188,49,703.1177,4.628304 +0.816316,40,418.4573,4.931516 +0.7798099,96,142.9824,5.505915 +0.586697,41,549.3181,4.446578 +0.7764464,83,647.4829,5.338891 +0.6998719,31,659.3081,4.443376 +0.7472036,65,694.0377,5.100702 +0.703049,69,89.38273,5.122236 +0.703443,6,842.3088,2.947383 +0.5989944,20,546.0432,3.875062 +0.7512451,14,663.2664,3.900565 +0.5872646,12,212.4875,3.389856 +0.949173,20,168.1584,5.08552 +0.9155182,25,239.3825,4.992388 +0.5755633,51,90.36437,4.630002 +0.5876624,7,960.5489,2.834894 +0.7044702,68,543.0481,5.046567 +0.79438,30,52.91661,4.776874 +0.7362505,42,945.8348,4.754237 +0.7126581,24,443.559,4.268968 +0.787679,25,648.4927,4.48379 +0.7151991,13,409.3209,3.746174 +0.8669045,95,523.904,5.687001 +0.7202985,54,207.1601,4.933934 +0.7311327,91,113.9181,5.367735 +0.6618435,59,377.5652,4.865612 +0.9116986,72,495.8482,5.687799 +0.7557157,12,567.5894,3.775468 +0.9163235,57,713.0014,5.544914 +0.8607126,20,925.3333,4.536246 +0.9231666,88,805.9913,5.862893 +0.6026225,75,581.2631,4.929917 +0.8698394,12,428.8574,4.160611 +0.6368494,11,272.8854,3.410454 +0.7667054,61,836.1898,5.097482 +0.8000152,97,106.0452,5.59455 +0.672968,73,419.9799,5.040077 +0.7445197,21,292.8912,4.240783 +0.6600486,20,419.2918,4.000971 +0.9095673,11,770.5601,4.273962 +0.6372859,29,931.7848,4.260334 +0.7531992,49,307.2706,4.924747 +0.8082588,93,104.2067,5.590879 +0.801224,59,699.5637,5.161321 +0.8842195,63,245.3876,5.507366 +0.8049434,29,661.9891,4.648005 +0.7825961,100,809.3402,5.476277 +0.888974,23,292.7039,4.785021 +0.7712366,64,203.9149,5.177267 +0.9101844,93,789.2389,5.834102 +0.5827066,16,736.1206,3.642731 +0.7353298,50,545.3903,4.887766 +0.9000253,29,878.5962,4.986079 +0.5437368,40,302.523,4.356087 +0.8315908,96,929.6324,5.572368 +0.8205049,52,953.6965,5.12034 +0.6426717,16,342.5943,3.769862 +0.5522754,46,775.7081,4.475167 +0.8128539,74,26.48869,5.734373 +0.5600869,20,573.3304,3.800104 +0.5674171,55,762.024,4.638407 +0.537677,28,997.0594,4.047145 +0.5726309,37,957.9053,4.337529 +0.7954047,66,127.4570,5.291504 +0.7471518,61,324.2084,5.069361 +0.5223553,32,951.6902,4.131766 +0.7520169,41,74.86224,4.862345 +0.7027413,11,484.6241,3.559348 +0.7187845,61,725.0286,4.993993 +0.7299217,16,873.775,3.961720 +0.7115777,4,604.7973,2.504418 +0.9172477,38,439.2534,5.283334 +0.6639819,89,337.2648,5.168281 +0.8368359,63,611.6161,5.30952 +0.7896925,94,298.3923,5.476009 +0.8271702,44,666.0247,5.024567 +0.8040352,44,843.4855,4.955639 +0.949263,7,389.1023,4.184174 +0.8328376,85,646.6266,5.501056 +0.526783,100,325.3328,5.018803 +0.6688105,77,836.735,5.06227 +0.8282477,67,108.7778,5.415125 +0.7113153,9,856.2697,3.385048 +0.589003,20,91.5303,3.880131 +0.7194362,14,611.8864,3.820276 +0.7537761,56,591.2144,5.010757 +0.6846757,99,320.4645,5.282772 +0.8769688,38,910.5023,5.083227 +0.7869178,90,830.2127,5.415139 +0.807645,26,61.79666,4.682424 +0.9448865,18,321.8201,4.930096 +0.7294469,49,573.7421,4.859254 +0.9085438,27,658.597,4.980016 +0.9300719,42,317.518,5.442027 +0.5834533,3,827.8777,1.786282 +0.6734082,82,171.4136,5.147934 +0.7569421,51,123.9995,5.002314 +0.7239631,76,233.7967,5.185775 +0.6186872,47,424.2941,4.61253 +0.6766206,44,508.0513,4.670198 +0.932699,90,275.5164,5.979196 +0.6464799,84,803.1497,5.084213 +0.9442864,16,521.2168,4.819767 +0.7918385,42,154.5967,4.935284 +0.7414237,35,819.7154,4.628522 +0.6115499,43,488.3118,4.529439 +0.8058953,40,515.7696,4.897627 +0.614234,59,903.9223,4.770477 +0.9121058,10,464.811,4.213932 +0.8476603,79,582.6491,5.498521 +0.7929727,77,169.8307,5.374357 +0.6338905,7,485.1146,2.94188 +0.7834596,30,327.6489,4.626784 +0.8774419,17,442.962,4.483792 +0.5609554,32,68.48343,4.237052 +0.7647811,68,827.2835,5.169981 +0.832964,23,5.440919,5.976688 +0.5741506,26,547.8397,4.052964 +0.9304252,17,468.5578,4.765566 +0.68403,28,184.1941,4.347467 +0.8176484,32,766.89,4.758464 +0.9411109,59,779.2206,5.713063 +0.926516,84,836.5033,5.850456 +0.8412952,78,932.087,5.461819 +0.6364015,99,162.6142,5.213254 +0.7070626,89,175.7054,5.273428 +0.6629175,76,40.89244,5.182355 +0.9395931,56,864.6944,5.665923 +0.8185325,98,199.7678,5.601049 +0.8494492,2,715.3348,2.035239 +0.8009258,81,434.5775,5.390702 +0.6815484,13,673.4679,3.662592 +0.80715,99,144.2072,5.599653 +0.6203594,100,943.6284,5.160893 +0.9240174,8,951.9496,4.08529 +0.8159787,65,519.9843,5.274393 +0.5230194,12,905.3269,3.253303 +0.7412851,52,267.3375,4.944869 +0.8801484,85,647.5159,5.655434 +0.802909,57,781.1324,5.139793 +0.8999761,9,456.1147,4.052302 +0.8341594,10,5.503232,4.891732 +0.8345882,67,930.7735,5.338458 +0.7542815,50,129.2632,4.978182 +0.7412981,23,855.8213,4.295311 +0.9113762,38,889.0846,5.236185 +0.8416925,29,982.5072,4.756377 +0.5095571,82,905.1603,4.842070 +0.9491786,4,917.2897,3.631085 +0.8049138,63,970.9605,5.212878 +0.6334493,6,736.2926,2.771905 +0.8973752,100,631.2114,5.829958 +0.5115773,7,521.9071,2.671702 +0.7581456,73,83.04014,5.304008 +0.7434194,84,267.1309,5.294006 +0.7207906,74,704.4638,5.136362 +0.9040117,8,47.05634,4.098636 +0.6233847,99,815.7837,5.159965 +0.7571528,90,298.5627,5.368868 +0.7701096,14,493.4289,3.954212 +0.6898053,44,472.0429,4.697632 +0.6360893,97,800.1676,5.167418 +0.8561774,36,21.78472,5.422449 +0.5753474,3,428.5272,1.767289 +0.9458913,41,28.3417,6.084906 +0.6731936,92,64.30473,5.294787 +0.8784051,40,304.3885,5.152199 +0.6835589,12,757.9798,3.592619 +0.7425327,83,284.7888,5.281525 +0.5474802,43,565.8282,4.415549 +0.679627,18,61.24071,4.006403 +0.6870299,89,382.3318,5.209086 +0.6341744,67,603.614,4.902287 +0.9344777,56,755.1912,5.63539 +0.8766567,45,511.7271,5.213287 +0.6304936,7,695.3798,2.932777 +0.6135839,38,197.7654,4.448517 +0.5532043,11,73.55859,3.248804 +0.9467684,81,424.0672,5.980747 +0.7369565,18,801.3018,4.080849 +0.8355981,45,249.5172,5.093117 +0.6856068,45,969.7303,4.699566 +0.7299538,98,466.1102,5.356919 +0.875668,44,958.7983,5.182152 +0.8005378,79,956.557,5.358165 +0.513656,88,766.3824,4.900481 +0.725377,62,531.5351,5.023478 +0.845314,12,201.7055,4.078737 +0.9495224,2,585.7786,2.771761 +0.7933197,64,651.044,5.199389 +0.535197,9,945.569,2.988493 +0.5272532,4,170.3757,2.044560 +0.6848626,100,69.06699,5.373987 +0.6996583,15,376.6187,3.838532 +0.888774,54,949.0652,5.376733 +0.5558322,15,641.6645,3.531028 +0.6628907,48,285.8969,4.717985 +0.7657242,43,421.0658,4.850639 +0.569207,28,54.71352,4.151142 +0.9085392,17,229.6301,4.654862 +0.5070748,64,13.36672,4.802679 +0.61338,40,504.4076,4.476023 +0.8674259,67,317.9034,5.472228 +0.616898,58,124.3922,4.795652 +0.7760441,72,511.691,5.243743 +0.744249,49,410.2558,4.897526 +0.5424169,40,275.7656,4.354667 +0.9030827,70,471.7542,5.630173 +0.9166235,43,743.5866,5.353063 +0.6056715,24,951.203,4.042294 +0.6035406,50,904.2237,4.627114 +0.8029719,27,449.0773,4.592429 +0.7518686,77,868.1552,5.227454 +0.8557797,13,260.3399,4.182154 +0.8567424,70,330.3319,5.463428 +0.9108702,96,134.5617,5.970751 +0.8152673,70,468.8401,5.326343 +0.511748,8,144.1443,2.822673 +0.7473972,98,741.933,5.385549 +0.6116945,33,651.738,4.318166 +0.7951198,99,863.7611,5.498526 +0.6094803,70,518.7182,4.892452 +0.6264041,91,783.8267,5.106219 +0.5996085,38,81.17409,4.448564 +0.6727878,39,768.5118,4.566196 +0.9323841,9,7.531608,5.509384 +0.6817553,18,528.9048,3.955063 +0.5344935,17,440.8971,3.606659 +0.8520906,66,498.9145,5.394094 +0.7163306,87,35.37812,5.448221 +0.5705777,10,80.44106,3.188661 +0.8051647,3,193.439,2.453639 +0.5721151,55,154.0183,4.66567 +0.6572475,72,965.465,4.992097 +0.910285,63,813.4502,5.579033 +0.9048497,9,219.7808,4.096486 +0.7566543,6,747.506,3.097807 +0.7815772,22,683.9203,4.36401 +0.5786503,50,369.4688,4.59009 +0.7074791,12,192.057,3.663563 +0.6707687,5,195.6387,2.664786 +0.6535881,74,599.2874,5.009229 +0.9449619,73,454.6559,5.897153 +0.5999044,66,80.468,4.879648 +0.9103132,3,745.8394,2.975553 +0.798354,82,620.4156,5.384614 +0.7068981,63,534.5147,4.996694 +0.7926765,97,170.8177,5.533752 +0.5030747,66,276.78,4.676993 +0.6412308,91,198.3963,5.155648 +0.5837347,28,12.83706,4.340776 +0.6307461,77,501.6002,4.999005 +0.5892319,22,613.943,3.938322 +0.9173725,82,327.6299,5.820418 +0.8466205,52,964.144,5.198747 +0.7778326,20,118.1721,4.318618 +0.6377339,39,145.3060,4.52407 +0.8973141,53,65.21878,5.603597 +0.680635,95,961.3994,5.230268 +0.802825,70,272.1754,5.309848 +0.7659804,79,673.3793,5.280033 +0.8782393,26,629.0036,4.813546 +0.8774979,9,139.6891,3.970449 +0.525396,43,253.7263,4.383524 +0.8223621,89,773.2267,5.499203 +0.681816,15,451.6343,3.795628 +0.9253184,59,524.5041,5.625282 +0.534124,3,580.5324,1.668108 +0.7524038,24,900.835,4.356676 +0.8326032,81,585.9235,5.469971 +0.8192468,59,568.3666,5.213842 +0.604393,44,288.0690,4.540236 +0.5586066,12,147.7344,3.334218 +0.8883083,73,995.3096,5.577656 +0.6432519,61,561.362,4.850509 +0.5102173,65,972.368,4.670415 +0.7003389,16,957.4265,3.890828 +0.5521129,11,4.547047,3.579797 +0.59708,31,140.4593,4.259507 +0.8134452,29,902.408,4.669319 +0.9260697,59,51.65915,5.924638 +0.8265399,16,547.1571,4.238842 +0.832042,17,312.8203,4.31748 +0.6216659,61,817.8548,4.808829 +0.7283849,92,389.5894,5.314127 +0.5672065,11,610.8746,3.257575 +0.5323523,44,361.2781,4.410664 +0.59117,55,655.6214,4.679735 +0.6095431,19,307.1752,3.855151 +0.6091849,51,227.8409,4.666844 +0.7753224,78,517.2963,5.297495 +0.7268435,83,747.4984,5.22845 +0.730585,72,890.9116,5.134721 +0.6442031,8,887.0963,3.103915 +0.8302386,72,521.1991,5.385542 +0.7942507,67,324.7722,5.250096 +0.5806502,20,278.2976,3.844107 +0.8981183,13,968.5417,4.350224 +0.5357593,27,599.0527,4.0146 +0.7095182,34,629.3844,4.537233 +0.9377532,42,526.5726,5.472395 +0.7851188,86,644.761,5.383838 +0.7201651,86,630.1342,5.241761 +0.9102288,83,621.2721,5.766953 +0.6411688,68,830.1142,4.922934 +0.6090806,15,180.3769,3.647734 +0.5787879,36,718.225,4.327657 +0.814151,100,408.9423,5.569888 +0.6659953,86,37.7504,5.29409 +0.7499388,33,212.7551,4.626876 +0.8165642,69,474.2051,5.319668 +0.7661147,22,176.09,4.34867 +0.7600815,72,879.7484,5.198689 +0.5405304,20,170.2612,3.771913 +0.8303233,39,62.11989,5.087436 +0.5649674,54,939.8396,4.619411 +0.5468609,19,890.826,3.728276 +0.5018868,20,172.1611,3.698457 +0.5700143,57,62.23176,4.722349 +0.5904414,29,332.7185,4.178141 +0.6844848,44,537.8669,4.685287 +0.8536574,32,840.1896,4.872602 +0.6186735,82,923.3346,5.018009 +0.6855065,93,374.6255,5.237324 +0.9478164,43,546.3272,5.561435 +0.9324406,18,441.5948,4.825239 +0.6415473,32,767.5264,4.349149 +0.8552597,68,165.8796,5.477813 +0.9283917,62,763.6844,5.665571 +0.5535796,10,278.4392,3.137836 +0.7494807,64,396.153,5.104272 +0.7287479,23,147.1992,4.295707 +0.8010544,7,249.5940,3.407520 +0.7245908,52,658.1033,4.890957 +0.5780999,8,736.3381,2.956657 +0.8479071,13,535.5617,4.138403 +0.910282,88,706.6015,5.801665 +0.8260243,44,5.778081,6.569068 +0.7756616,12,68.24743,3.89199 +0.6779172,29,865.7203,4.34203 +0.7121331,60,51.67999,5.094517 +0.7587412,53,351.5271,4.992108 +0.7138279,6,622.5837,2.976316 +0.936066,61,493.9761,5.71497 +0.8927102,6,980.146,3.625845 +0.6222097,66,180.9405,4.890236 +0.7076899,93,746.9903,5.269072 +0.5555804,37,640.2992,4.309252 +0.7877178,36,777.8668,4.764064 +0.5842511,62,164.657,4.776821 +0.7328623,93,816.8986,5.318279 +0.6259894,52,479.0156,4.701554 +0.7226905,10,468.7935,3.519339 +0.5265653,19,997.8564,3.690211 +0.7318997,64,207.9046,5.084091 +0.9192412,69,667.0859,5.68892 +0.6231767,50,43.20987,4.759639 +0.6972005,80,845.1849,5.142585 +0.7779439,85,932.2534,5.353608 +0.9107332,100,582.1592,5.891565 +0.5050257,84,446.7605,4.855801 +0.637655,47,47.76077,4.734205 +0.785115,35,964.5286,4.73395 +0.690956,54,62.90913,4.940018 +0.719769,35,634.1213,4.582082 +0.5616795,56,915.7953,4.641653 +0.7737041,3,910.5499,2.330052 +0.8643882,91,65.94819,5.842094 +0.561113,19,13.89679,3.905443 +0.9246243,97,84.66878,6.138777 +0.8416577,64,208.3890,5.37398 +0.8823102,83,392.9894,5.663599 +0.816154,2,264.6879,1.884422 +0.6025324,62,199.5932,4.80521 +0.6947627,64,531.0227,4.983875 +0.6520982,2,38.59697,1.343845 +0.878029,87,501.3924,5.669977 +0.528619,6,922.9151,2.534323 +0.8532033,32,661.1688,4.874277 +0.5825841,85,19.02259,5.179472 +0.6906217,45,412.6579,4.718226 +0.668097,19,51.25001,4.03855 +0.8786804,92,948.0557,5.694116 +0.8551716,39,424.7596,5.036045 +0.8539307,28,756.1924,4.774472 +0.6223484,35,342.108,4.390973 +0.6102817,42,571.9411,4.507539 +0.7181276,87,831.6475,5.242309 +0.6940214,57,492.6249,4.898956 +0.8179872,85,77.64156,5.595095 +0.6283061,33,563.8613,4.350425 +0.6075136,55,379.0673,4.713306 +0.9265058,36,445.4369,5.297881 +0.6868859,8,470.9334,3.208735 +0.7996129,99,964.0103,5.508082 +0.5830702,24,774.4583,4.000224 +0.5702618,68,64.00718,4.856072 +0.5789566,43,972.203,4.467412 +0.5874349,36,916.7149,4.342063 +0.5833758,65,258.9836,4.801495 +0.8635545,49,458.9639,5.227687 +0.5935735,79,119.1572,4.983546 +0.8131558,84,845.3671,5.434132 +0.7309313,34,65.37927,4.670561 +0.5603136,54,231.8187,4.623004 +0.5756098,18,173.3843,3.745856 +0.8461455,71,301.1804,5.442179 +0.5327761,26,841.531,3.976124 +0.6493861,11,935.9827,3.431666 +0.8630635,100,888.5135,5.695541 +0.851174,47,429.4618,5.156982 +0.5861503,12,716.7889,3.380622 +0.921095,23,15.19805,5.710247 +0.5782739,5,942.0811,2.433206 +0.6693196,90,622.6583,5.176223 +0.5364548,35,405.8181,4.233303 +0.809616,81,687.281,5.40342 +0.9149833,46,412.5279,5.407319 +0.7445979,62,793.9484,5.059691 +0.8165355,8,394.0338,3.586587 +0.7509344,69,859.8796,5.148696 +0.6117458,55,682.8256,4.715332 +0.5845061,74,151.8629,4.91113 +0.7070729,49,328.4277,4.820550 +0.7195724,98,110.8851,5.395834 +0.6141301,77,832.5952,4.96579 +0.9010887,75,502.8683,5.664959 +0.8695804,75,635.2031,5.534273 +0.6162468,36,706.3104,4.395769 +0.9283751,95,975.9121,5.935814 +0.8729349,86,442.2792,5.64784 +0.8494098,3,32.31192,2.708795 +0.9168347,42,714.2314,5.338657 +0.5352037,24,911.7365,3.911702 +0.9059443,87,965.2333,5.767539 +0.7047665,61,370.0491,4.975073 +0.8152647,77,323.5922,5.403395 +0.8688586,64,478.9834,5.431414 +0.751632,9,470.4753,3.496043 +0.8244728,7,309.2294,3.487371 +0.8102466,79,903.5838,5.383902 +0.7057721,86,629.8928,5.213153 +0.5553194,60,33.40271,4.773593 +0.881195,60,621.9124,5.426565 +0.8358636,77,901.8299,5.437479 +0.696193,55,164.4135,4.904172 +0.932106,71,607.8688,5.782766 +0.6710505,44,631.6179,4.656993 +0.6212366,63,562.5125,4.834803 +0.8203601,4,27.23376,2.964745 +0.8001745,56,274.3495,5.143934 +0.9013971,27,296.505,4.965852 +0.9069266,82,392.5688,5.759936 +0.9232269,57,276.2901,5.61906 +0.9367268,68,482.8852,5.791665 +0.8689248,13,356.4507,4.228787 +0.702432,42,188.5659,4.708193 +0.5472108,23,207.8573,3.905311 +0.9229038,25,823.9425,4.998866 +0.5444981,28,772.9021,4.059997 +0.6736287,48,818.3279,4.725838 +0.7463483,76,478.1093,5.215087 +0.85102,55,389.6101,5.270833 +0.5619721,54,332.6585,4.621322 +0.664734,55,579.3978,4.813541 +0.8474316,71,106.0218,5.524184 +0.8554368,14,396.4834,4.234974 +0.865614,95,693.5883,5.675409 +0.5348477,17,295.1280,3.609408 +0.6671405,93,634.2797,5.194961 +0.9346352,15,200.4010,4.728396 +0.7714221,20,840.6805,4.256987 +0.7079719,52,749.5469,4.854797 +0.6277378,26,988.1618,4.151760 +0.6268555,98,629.3872,5.160994 +0.9238709,95,758.1687,5.917006 +0.6475484,68,21.38955,5.16726 +0.6446082,93,997.1099,5.151013 +0.7764024,4,247.0520,2.71087 +0.7230928,84,946.2879,5.226642 +0.8371537,38,946.4194,4.9437 +0.8428408,68,709.7673,5.377647 +0.5555994,10,563.73,3.139113 +0.7219313,99,561.1249,5.344151 +0.937448,23,28.74689,5.480904 +0.7335617,91,970.2005,5.302966 +0.8613441,6,176.6877,3.493646 +0.6869626,85,244.9659,5.187716 +0.9275152,86,83.32556,6.077996 +0.7939986,46,732.5617,4.963035 +0.7970223,30,882.1072,4.648926 +0.7209646,54,924.5706,4.907675 +0.8306365,96,607.961,5.577427 +0.6464567,14,9.694352,3.942865 +0.6340444,37,736.7627,4.450466 +0.8069274,40,95.86887,4.977036 +0.8013634,42,503.7897,4.921649 +0.9055047,42,118.7202,5.378602 +0.6954729,47,821.6369,4.753285 +0.6674997,44,239.8386,4.66436 +0.5699985,53,317.533,4.621385 +0.5287525,36,637.5462,4.240597 +0.6176084,4,475.3884,2.25576 +0.6085563,96,649.2288,5.115429 +0.671319,81,817.5754,5.102995 +0.9359667,37,92.84325,5.510533 +0.9292207,27,886.3095,5.092884 +0.941389,89,885.4375,5.976429 +0.5803328,53,74.98485,4.677075 +0.8983655,32,703.0716,5.05373 +0.6437962,43,460.7536,4.589923 +0.5086535,74,187.668,4.776272 +0.7736891,71,449.2642,5.231069 +0.8452449,32,304.0644,4.864419 +0.6696278,45,583.9474,4.672059 +0.6992343,65,438.3437,5.006878 +0.660791,31,961.1734,4.36029 +0.6564748,41,22.05504,4.776298 +0.665124,24,850.8597,4.16084 +0.8835836,27,965.2559,4.858438 +0.8815548,25,387.4771,4.807794 +0.6965337,31,975.1651,4.433565 +0.7860235,6,178.6597,3.203474 +0.8831334,48,57.10986,5.485092 +0.7900111,31,162.321,4.694016 +0.80504,90,989.0279,5.457521 +0.7779963,47,888.8225,4.935917 +0.8709396,21,6.076414,6.109931 +0.8758326,43,504.5797,5.178094 +0.8322847,18,610.0355,4.354371 +0.9086776,17,153.3854,4.677248 +0.788782,68,615.4611,5.231419 +0.5539504,2,984.5186,1.078088 +0.7439927,12,872.5737,3.741407 +0.8164331,71,103.7183,5.424622 +0.6064425,6,33.65510,2.751554 +0.8815675,16,550.0871,4.448882 +0.7435157,46,251.4903,4.860642 +0.94865,6,343.7878,4.039293 +0.9017165,65,280.3346,5.597134 +0.870245,56,159.3285,5.399134 +0.5617548,18,212.3836,3.716077 +0.8854695,56,81.97713,5.542365 +0.5792403,52,556.462,4.617672 +0.5890797,51,387.0378,4.623079 +0.6885989,98,502.3955,5.274165 +0.851565,71,129.9867,5.516691 +0.7055726,26,324.1496,4.322812 +0.5700456,55,957.5553,4.641816 +0.6144216,45,450.7585,4.570643 +0.7825922,22,521.1032,4.369765 +0.5166394,83,138.0069,4.879737 +0.6137133,51,713.3682,4.661488 +0.5643472,39,355.1127,4.370699 +0.6369376,93,324.8522,5.15104 +0.6506586,36,605.8106,4.46205 +0.8290645,55,544.3193,5.19356 +0.7932623,73,960.7906,5.285625 +0.8382057,96,207.4720,5.64295 +0.732158,41,137.2255,4.770089 +0.9480985,16,313.3048,4.867939 +0.6386916,99,589.2802,5.189086 +0.9390022,23,957.4552,5.041156 +0.5697346,38,17.83553,4.510244 +0.7913318,66,293.3076,5.235361 +0.6868162,4,387.668,2.43642 +0.6463822,54,750.9945,4.763262 +0.9371176,47,313.4571,5.566868 +0.50428,99,824.273,4.970733 +0.5946511,64,346.1248,4.805316 +0.8709878,57,759.798,5.34904 +0.6831977,45,11.36341,5.134924 +0.6508286,62,148.9947,4.90477 +0.9287122,60,801.24,5.644665 +0.6910198,69,990.3954,5.024397 +0.8440781,9,525.8345,3.796168 +0.8004705,72,489.8934,5.305356 +0.6084492,69,224.9862,4.892618 +0.8184517,82,935.883,5.430576 +0.7762058,75,950.8389,5.263271 +0.5760073,8,894.4134,2.951756 +0.8086744,7,174.8679,3.440552 +0.9261343,84,946.4264,5.845667 +0.7364095,79,848.88,5.212448 +0.8509722,25,417.1328,4.687007 +0.6892558,24,104.9072,4.250703 +0.8036012,61,102.1672,5.277396 +0.6162426,79,656.3961,4.989624 +0.5791517,72,467.3013,4.862522 +0.5149917,94,378.281,4.954349 +0.9379776,25,464.946,5.109888 +0.9067495,32,38.34473,5.403331 +0.5240937,28,961.5862,4.023214 +0.5280742,24,311.7771,3.903208 +0.6576594,4,689.7833,2.356709 +0.6781805,10,757.1474,3.406736 +0.5971721,63,324.5377,4.798868 +0.5290827,34,770.204,4.193887 +0.9037198,90,293.7151,5.821269 +0.6534974,48,190.0638,4.709046 +0.6981573,26,853.1525,4.296611 +0.6468021,48,748.4224,4.675426 +0.9040386,68,838.5664,5.60011 +0.7857422,38,481.7715,4.806148 +0.607947,42,201.8933,4.516507 +0.5071259,76,937.1517,4.782286 +0.5427897,92,431.5726,4.981826 +0.9072125,95,154.3396,5.92806 +0.9484,99,33.92708,6.716453 +0.8050603,87,9.65729,6.442394 +0.8860068,5,388.8540,3.412397 +0.6358902,52,845.1992,4.714964 +0.9361354,17,750.0811,4.796561 +0.8008013,49,565.2006,5.030775 +0.926761,26,575.6264,5.057938 +0.8576906,60,272.9478,5.368179 +0.7202081,22,979.6327,4.208136 +0.5819503,76,205.3432,4.918833 +0.6698566,12,945.551,3.560221 +0.6418892,55,64.02962,4.841915 +0.5271493,33,949.0254,4.165456 +0.8930948,23,24.1638,5.197677 +0.8822868,39,737.3787,5.126144 +0.6887659,6,343.5825,2.912568 +0.8297944,98,341.6935,5.606095 +0.6721322,46,193.0996,4.713452 +0.5849796,45,355.7672,4.520102 +0.6888258,5,729.3948,2.705554 +0.5311742,29,272.9869,4.071185 +0.8957202,49,516.2053,5.351545 +0.7909933,13,650.5345,3.946661 +0.6261204,51,142.9204,4.710608 +0.9168821,37,77.57931,5.410771 +0.8331488,69,43.80345,5.607263 +0.64225,94,956.1799,5.154705 +0.7601495,91,920.2586,5.359983 +0.7892926,96,349.8586,5.483655 +0.6306155,33,967.1055,4.351705 +0.6726184,80,51.44195,5.215103 +0.7116622,19,546.5421,4.069148 +0.6864173,18,182.2196,3.980004 +0.863477,91,543.1546,5.645966 +0.5452934,24,641.5907,3.931072 +0.7300484,91,650.1359,5.300523 +0.6697613,89,881.9166,5.165746 +0.5722327,44,356.5360,4.479965 +0.6642942,46,79.42196,4.736867 +0.6101755,69,492.5268,4.883647 +0.8585281,14,237.7073,4.259236 +0.9097088,71,482.4178,5.669828 +0.6898688,62,411.6998,4.954969 +0.810742,62,578.5291,5.224823 +0.8362431,75,527.7266,5.430838 +0.9416213,63,511.2204,5.772444 +0.7244791,7,610.4706,3.168309 +0.7757211,83,876.2432,5.332888 +0.7827547,64,120.3467,5.239134 +0.6797277,86,489.6258,5.166825 +0.756696,81,778.559,5.27448 +0.8787565,70,506.207,5.527242 +0.8407648,43,624.1819,5.050881 +0.812129,63,378.47,5.249874 +0.7311311,100,545.6201,5.370173 +0.6494214,71,989.3894,4.967769 +0.5589163,3,407.2068,1.727566 +0.7051075,21,910.3279,4.135289 +0.9440894,27,128.4959,5.29461 +0.6493793,36,815.854,4.457538 +0.5269008,22,20.1956,3.909876 +0.7765532,69,131.1495,5.270598 +0.8623126,59,805.8516,5.341169 +0.7862556,15,445.9598,4.061422 +0.7984945,11,16.42409,4.112416 +0.7628009,94,335.4126,5.40785 +0.5707517,4,754.9215,2.141816 +0.8307415,59,259.4171,5.271136 +0.9261452,91,879.6235,5.898394 +0.5931118,19,412.5692,3.820128 +0.7341011,30,290.3247,4.5055 +0.6307421,94,480.651,5.141479 +0.6214507,52,761.9476,4.689565 +0.6122929,51,391.2011,4.66427 +0.6126767,22,965.1558,3.981753 +0.6781432,82,529.8376,5.129141 +0.7212714,68,628.3364,5.078783 +0.8463072,52,414.1375,5.213921 +0.5499381,48,128.7722,4.524313 +0.8552063,45,983.869,5.124362 +0.7168726,54,76.57087,4.98376 +0.5863685,28,436.8953,4.139119 +0.6002564,4,212.4021,2.216034 +0.6476712,27,567.834,4.225193 +0.5111378,12,230.9686,3.234319 +0.8874011,31,699.3229,4.981643 +0.6029039,21,853.7822,3.923142 +0.844009,100,494.6368,5.648871 +0.6724859,33,871.8237,4.434046 +0.6211092,3,206.0795,1.884215 +0.8536017,100,339.2334,5.692342 +0.9383143,76,126.6032,5.989349 +0.5257438,86,212.6910,4.913543 +0.6733605,100,893.5537,5.253112 +0.6432021,12,786.3207,3.501315 +0.6230217,88,173.8344,5.102506 +0.6406076,51,392.1265,4.716152 +0.8299653,74,144.4691,5.464652 +0.711774,49,720.2103,4.819034 +0.6283814,10,413.4422,3.295601 +0.5821459,59,999.1213,4.714968 +0.6715785,20,695.5452,4.021824 +0.8592576,52,916.6212,5.241093 +0.542849,42,279.0223,4.3942 +0.537032,81,618.1086,4.877919 +0.8894632,38,737.5884,5.137352 +0.6570416,51,953.9288,4.738709 +0.9168326,47,24.62193,5.997725 +0.8971111,17,803.4249,4.565065 +0.5770282,56,547.2414,4.670345 +0.9473995,62,535.2846,5.802564 +0.5455282,93,714.1213,4.990395 +0.5863393,45,768.3091,4.516744 +0.7665414,16,849.9519,4.056045 +0.734118,54,776.0034,4.937319 +0.7203634,64,274.5625,5.04965 +0.659862,45,748.1406,4.651066 +0.6805168,34,603.1331,4.476605 +0.8645582,64,484.6595,5.415833 +0.8906369,26,384.7536,4.877756 +0.9474115,20,416.8705,5.021933 +0.6411807,57,330.5903,4.80329 +0.5703219,58,514.8321,4.685923 +0.7626901,30,75.8481,4.641237 +0.8855596,42,839.1963,5.190222 +0.9174876,27,572.5325,5.030947 +0.5043899,20,700.1571,3.696164 +0.5387181,100,214.0170,5.043657 +0.889451,94,411.1439,5.771975 +0.6211653,61,929.5267,4.807188 +0.726502,69,816.1978,5.096984 +0.9034006,27,188.2023,4.99858 +0.8471982,47,921.634,5.129633 +0.6937758,9,797.0683,3.341297 +0.5347142,19,938.8299,3.705463 +0.7464367,95,284.5240,5.383845 +0.5356522,31,119.4054,4.146077 +0.7287865,54,105.8386,4.986942 +0.7582195,10,393.5145,3.616798 +0.7883883,16,759.7446,4.117701 +0.580503,34,116.2226,4.308078 +0.5592169,53,86.60802,4.630375 +0.8841168,35,720.886,5.055972 +0.787728,8,431.0659,3.489781 +0.7440935,96,462.1459,5.37265 +0.547159,28,549.1209,4.066083 +0.6133399,7,31.53534,2.94565 +0.502118,22,858.4678,3.77632 +0.9333538,38,609.3464,5.369694 +0.6024722,75,638.6493,4.92888 +0.9074494,32,541.4686,5.102969 +0.6300227,79,159.6278,5.040472 +0.7318348,24,317.7376,4.318522 +0.741385,49,607.519,4.884875 +0.7133042,90,534.2835,5.262046 +0.7731119,64,555.0199,5.152396 +0.7659718,64,902.1246,5.129016 +0.692532,54,15.18751,5.217929 +0.7237324,40,311.8354,4.70425 +0.7820585,92,123.1948,5.494088 +0.8127579,20,389.9402,4.384254 +0.7185323,50,966.4689,4.845642 +0.7159182,54,783.1741,4.898585 +0.5016469,14,892.8262,3.360851 +0.6591599,72,400.8591,5.005014 +0.838539,89,620.7018,5.549374 +0.7455755,65,625.0824,5.098517 +0.9332795,27,755.9687,5.121938 +0.6061578,88,852.1542,5.047813 +0.6962892,84,664.6649,5.177628 +0.5947195,17,875.5658,3.72079 +0.6775777,53,539.8698,4.811517 +0.779415,80,754.9234,5.318238 +0.6246729,36,474.7039,4.414399 +0.8229145,91,413.4531,5.530172 +0.6903401,99,874.5921,5.277501 +0.5398703,51,286.4902,4.541068 +0.74952,4,502.8889,2.618777 +0.8640506,33,6.8444,6.388552 +0.9202534,49,339.0399,5.487683 +0.6719591,58,852.3847,4.86309 +0.9207745,32,368.0822,5.186344 +0.8846664,81,528.0204,5.646296 +0.6523939,96,646.4013,5.190536 +0.8606456,24,470.2877,4.688268 +0.6330717,34,113.3899,4.413138 +0.7145774,68,95.60072,5.132608 +0.7099229,38,220.1979,4.642589 +0.7290925,15,20.12214,4.110961 +0.9385502,61,264.7995,5.763972 +0.5603532,7,885.8671,2.775121 +0.7057838,42,68.22778,4.772341 +0.658553,20,643.2781,3.994641 +0.8370777,33,279.929,4.863052 +0.5989733,21,486.2542,3.918143 +0.6681295,12,829.0133,3.556748 +0.6356377,43,817.5014,4.569956 +0.6267693,93,462.5766,5.12758 +0.8400407,30,840.948,4.778211 +0.778122,92,63.86752,5.560302 +0.8315789,86,180.0045,5.557248 +0.5899593,72,82.99947,4.923858 +0.6298938,6,324.3013,2.766343 +0.8650625,45,810.102,5.161229 +0.7166938,77,519.5638,5.160264 +0.6128868,83,494.4236,5.022079 +0.7190987,63,988.826,5.014988 +0.8141917,54,62.45263,5.281654 +0.6892226,77,604.2335,5.1039 +0.7579322,39,483.3476,4.756018 +0.774113,12,376.1970,3.831128 +0.888773,9,193.2689,4.013519 +0.9433137,19,225.0416,4.975592 +0.668966,35,323.5154,4.483325 +0.5799831,32,858.7687,4.233789 +0.6964942,57,265.0989,4.915871 +0.7890881,19,622.6752,4.265669 +0.7703855,61,666.6304,5.108969 +0.7360461,100,156.7199,5.423589 +0.8626526,80,916.5676,5.546618 +0.8052394,59,234.3321,5.201593 +0.9434135,16,488.0507,4.814165 +0.675481,11,447.5658,3.494619 +0.7456587,71,858.7813,5.157294 +0.6115988,44,621.5159,4.545473 +0.7125888,13,903.394,3.734631 +0.564883,12,911.3827,3.336676 +0.8422981,35,737.8664,4.902571 +0.6269619,22,962.1986,4.009839 +0.7464384,89,917.6661,5.31518 +0.8062435,86,203.6891,5.476226 +0.6016839,63,164.1402,4.82052 +0.7231435,90,183.1313,5.313472 +0.9296296,69,712.086,5.744837 +0.7964493,18,372.9885,4.248754 +0.9082465,11,729.5307,4.267029 +0.7954384,80,890.9846,5.354851 +0.69333,30,549.6491,4.404942 +0.888512,38,226.2884,5.171376 +0.5163259,79,965.7332,4.825084 +0.8625625,40,270.5909,5.095962 +0.7878012,75,456.2498,5.303224 +0.7169962,38,24.90004,4.866604 +0.7119138,31,136.3598,4.502702 +0.9016313,80,625.8683,5.703408 +0.6697849,64,819.8403,4.931256 +0.6393241,36,822.4557,4.438223 +0.6457774,22,286.3792,4.056812 +0.6075175,5,507.1766,2.502779 +0.5790579,35,891.444,4.304589 +0.6785852,97,632.1274,5.245173 +0.9260163,27,785.0145,5.07486 +0.624276,100,624.4551,5.170826 +0.514745,99,233.9589,4.996166 +0.7554237,90,27.37145,5.658256 +0.8304656,20,75.88332,4.520449 +0.9465676,54,175.3672,5.777202 +0.9349736,67,373.3616,5.78206 +0.862613,34,248.4125,4.979623 +0.9212936,13,780.8202,4.483226 +0.7610356,13,216.7360,3.875411 +0.901645,33,163.7603,5.150118 +0.938008,100,475.4582,6.04847 +0.7903692,73,374.8208,5.295927 +0.9234672,71,793.222,5.726025 +0.8868499,22,658.971,4.721847 +0.9136649,96,313.9001,5.906933 +0.6772373,5,825.3243,2.674723 +0.7484092,30,211.6643,4.54816 +0.5736467,50,354.4955,4.581787 +0.8963927,40,739.9752,5.204105 +0.6797554,77,357.669,5.094093 +0.6830636,48,373.3237,4.753272 +0.6249168,59,358.1955,4.797946 +0.6989866,36,742.6241,4.557865 +0.720914,97,799.1175,5.323244 +0.8050567,78,401.0264,5.377754 +0.8354936,89,886.472,5.533914 +0.8940905,3,516.5265,2.87191 +0.7170255,57,97.04115,5.005992 +0.6894167,8,999.7774,3.212098 +0.8153368,83,640.4252,5.436478 +0.7875185,40,748.8123,4.842901 +0.5928658,38,222.8933,4.407356 +0.9368355,59,283.7960,5.725235 +0.8439394,88,743.0444,5.554312 +0.8655847,61,746.2011,5.376758 +0.615964,7,492.0405,2.900309 +0.708786,23,250.7864,4.233693 +0.928492,77,249.3429,5.858765 +0.9213118,70,240.5459,5.756381 +0.9447196,4,134.7652,3.622836 +0.6752938,92,700.4954,5.201173 +0.5822097,34,944.6738,4.286641 +0.7442257,37,780.9363,4.677971 +0.8501248,92,391.9927,5.620045 +0.7890855,31,26.29981,4.924178 +0.5417501,38,367.9578,4.309845 +0.6465953,76,816.0229,5.012992 +0.7753691,45,187.8045,4.933162 +0.8752703,95,937.9589,5.702937 +0.8304852,46,534.5124,5.070549 +0.9297963,95,821.1949,5.947772 +0.8118207,51,614.6753,5.088175 +0.6761814,68,77.04726,5.06311 +0.5594347,47,273.4567,4.511935 +0.6285156,17,791.629,3.789238 +0.8079738,6,552.786,3.265653 +0.6450331,64,620.8037,4.888043 +0.6683616,5,26.13905,2.716723 +0.6130411,71,577.7337,4.907943 +0.6039205,88,393.0017,5.051451 +0.6873019,33,507.5798,4.46876 +0.6871983,44,93.05181,4.742836 +0.8249064,40,27.54897,5.271431 +0.5337277,97,414.0519,5.005735 +0.7879977,47,203.7387,4.995218 +0.7460476,54,352.9217,4.976224 +0.9483304,14,817.392,4.74218 +0.6113758,86,287.5114,5.052821 +0.7624152,86,140.1357,5.386984 +0.9068276,76,127.8796,5.79775 +0.6900965,97,905.93,5.262664 +0.8448191,85,43.09855,5.815616 +0.8802071,31,137.8266,5.016079 +0.8578306,19,642.5522,4.48844 +0.7929309,82,623.4676,5.370958 +0.8476168,18,453.467,4.412116 +0.6834483,43,918.7422,4.661125 +0.7405542,80,56.81287,5.371752 +0.9219944,50,332.3488,5.512329 +0.7261745,44,701.9999,4.769600 +0.7007646,53,383.2142,4.862903 +0.6057453,72,986.2047,4.901948 +0.9261545,59,353.8751,5.64591 +0.771516,19,609.2304,4.217364 +0.7029976,85,168.6136,5.234305 +0.8446972,27,723.5938,4.715313 +0.5885027,57,335.832,4.708225 +0.6491714,64,861.9075,4.892884 +0.6330873,24,654.814,4.097357 +0.7772637,100,678.8785,5.466614 +0.8096222,38,244.029,4.889534 +0.584761,62,94.44627,4.795691 +0.700675,82,658.6258,5.169326 +0.848954,53,601.8697,5.227078 +0.8253134,71,66.77659,5.512754 +0.5726026,39,366.2374,4.385096 +0.889443,40,431.9839,5.186106 +0.9409584,20,611.2568,4.959802 +0.7115514,90,793.238,5.25328 +0.7011985,35,200.5195,4.561698 +0.5771735,40,98.96083,4.438054 +0.8109071,76,518.7619,5.368861 +0.8176633,37,18.97150,5.311783 +0.7706448,80,46.71877,5.489751 +0.5891102,78,840.1204,4.933083 +0.7720898,79,189.6653,5.332601 +0.7299095,48,298.656,4.85679 +0.6956586,32,739.8781,4.458631 +0.6287844,35,862.2396,4.395717 +0.8391402,38,300.8604,4.973045 +0.510979,99,235.7683,4.990011 +0.508311,83,427.9368,4.852489 +0.6374083,53,722.2017,4.733101 +0.8431894,21,933.971,4.51148 +0.6286747,89,648.9947,5.096027 +0.9137417,88,684.3439,5.819049 +0.7000148,65,253.8147,5.020509 +0.9283806,36,485.4688,5.30663 +0.5502186,97,901.5118,5.026643 +0.6794158,92,491.8415,5.2134 +0.5004906,9,369.889,2.919374 +0.8813509,4,156.3115,3.159320 +0.5316867,79,888.0104,4.849485 +0.7776448,23,552.1755,4.391651 +0.6669258,42,541.5799,4.614754 diff --git a/statsmodels/stats/tests/results/contingency_table_r_results.csv b/statsmodels/stats/tests/results/contingency_table_r_results.csv new file mode 100644 index 0000000..cd94963 --- /dev/null +++ b/statsmodels/stats/tests/results/contingency_table_r_results.csv @@ -0,0 +1,4 @@ +"homog_stat","homog_df","homog_binom_p","homog_cont_p","lbl_stat","lbl_expval","lbl_var","lbl_chi2","lbl_pvalue","lbl2_stat","lbl2_expval","lbl2_var","lbl2_chi2","lbl2_pvalue","bowker_stat","bowker_df","bowker_pvalue" +0.470588235294118,1,0.60759136127308,0.606905427217951,215,210.136363636364,5.44848959817612,4.34156260215759,0.0371927738063454,369,354.409090909091,49.0364063835851,4.34156260215755,0.0371927738063464,0.470588235294118,1,0.492716677227088 +271.922246968262,3,0,0,1760,1637.12,318.387012391739,47.4249696511547,5.71498404156046e-12,6006,5384.96,8083.23776042639,47.7148752803301,4.9293902293357e-12,297.610989010989,6,2.65851858368065e-61 +13.7647058823529,2,0,0,661,608.890625,45.1014721487451,60.2061714068945,8.54871728961371e-15,1761,1544.046875,804.735991710752,58.4895654377337,2.04281036531029e-14,13.7692307692308,3,0.00323670650323545 diff --git a/statsmodels/stats/tests/results/data.dat b/statsmodels/stats/tests/results/data.dat new file mode 100644 index 0000000..29e5a39 --- /dev/null +++ b/statsmodels/stats/tests/results/data.dat @@ -0,0 +1,61 @@ +Days Duration Weight ID + 0.0 1 1 1 + 2.0 1 1 2 + 1.0 1 1 3 + 3.0 1 1 4 + 0.0 1 1 5 + 2.0 1 1 6 + 0.0 1 1 7 + 5.0 1 1 8 + 6.0 1 1 9 + 8.0 1 1 10 + 2.0 1 2 1 + 4.0 1 2 2 + 7.0 1 2 3 + 12.0 1 2 4 + 15.0 1 2 5 + 4.0 1 2 6 + 3.0 1 2 7 + 1.0 1 2 8 + 5.0 1 2 9 + 20.0 1 2 10 + 15.0 1 3 1 + 10.0 1 3 2 + 8.0 1 3 3 + 5.0 1 3 4 + 25.0 1 3 5 + 16.0 1 3 6 + 7.0 1 3 7 + 30.0 1 3 8 + 3.0 1 3 9 + 27.0 1 3 10 + 0.0 2 1 1 + 1.0 2 1 2 + 1.0 2 1 3 + 0.0 2 1 4 + 4.0 2 1 5 + 2.0 2 1 6 + 7.0 2 1 7 + 4.0 2 1 8 + 0.0 2 1 9 + 3.0 2 1 10 + 5.0 2 2 1 + 3.0 2 2 2 + 2.0 2 2 3 + 0.0 2 2 4 + 1.0 2 2 5 + 1.0 2 2 6 + 3.0 2 2 7 + 6.0 2 2 8 + 7.0 2 2 9 + 9.0 2 2 10 + 10.0 2 3 1 + 8.0 2 3 2 + 12.0 2 3 3 + 3.0 2 3 4 + 7.0 2 3 5 + 15.0 2 3 6 + 4.0 2 3 7 + 9.0 2 3 8 + 6.0 2 3 9 + 1.0 2 3 10 diff --git a/statsmodels/stats/tests/results/framing.csv b/statsmodels/stats/tests/results/framing.csv new file mode 100644 index 0000000..4a87497 --- /dev/null +++ b/statsmodels/stats/tests/results/framing.csv @@ -0,0 +1,266 @@ +"","cond","anx","age","educ","gender","income","emo","p_harm","tone","eth","treat","english","immigr","anti_info","cong_mesg" +"1","3","a little anxious",45,"high school","male",13,7,6,0,1,0,"Oppose",4,0,1 +"2","4","somewhat anxious",73,"bachelor's degree or higher","male",16,6,3,0,0,0,"Favor",3,0,0 +"3","2","a little anxious",53,"some college","female",3,8,7,1,0,0,"Strongly Oppose",3,0,0 +"4","1","not anxious at all",45,"high school","male",14,9,8,1,1,1,"Strongly Oppose",4,0,1 +"5","3","somewhat anxious",55,"some college","female",12,5,5,0,1,0,"Strongly Oppose",2,0,0 +"6","1","a little anxious",85,"high school","female",3,5,6,1,1,1,"Strongly Oppose",4,0,0 +"7","1","a little anxious",58,"high school","female",10,10,8,1,1,1,"Oppose",4,0,0 +"8","2","a little anxious",53,"some college","male",9,8,7,1,0,0,"Favor",4,1,1 +"9","1","a little anxious",52,"some college","female",14,8,5,1,1,1,"Strongly Oppose",3,0,0 +"10","4","very anxious",42,"some college","male",15,3,2,0,0,0,"Oppose",2,0,0 +"11","4","a little anxious",38,"bachelor's degree or higher","female",9,11,8,0,0,0,"Strongly Oppose",4,1,1 +"12","4","very anxious",38,"high school","male",6,9,8,0,0,0,"Strongly Oppose",4,1,1 +"13","4","a little anxious",26,"bachelor's degree or higher","female",10,8,6,0,0,0,"Oppose",3,0,1 +"14","1","not anxious at all",52,"some college","male",11,10,8,1,1,1,"Strongly Oppose",4,0,1 +"15","1","very anxious",48,"some college","male",19,3,3,1,1,1,"Oppose",2,0,0 +"16","2","not anxious at all",62,"high school","female",10,12,8,1,0,0,"Strongly Oppose",4,1,1 +"17","1","not anxious at all",41,"less than high school","female",7,9,8,1,1,1,"Oppose",4,0,0 +"18","3","somewhat anxious",54,"high school","male",11,6,6,0,1,0,"Strongly Oppose",4,0,0 +"19","1","a little anxious",69,"high school","female",9,8,7,1,1,1,"Strongly Oppose",4,0,0 +"20","1","somewhat anxious",71,"less than high school","male",6,6,6,1,1,1,"Strongly Oppose",1,0,0 +"21","3","somewhat anxious",62,"some college","male",14,4,5,0,1,0,"Oppose",2,0,0 +"22","2","very anxious",41,"some college","male",13,3,6,1,0,0,"Strongly Oppose",3,0,0 +"23","3","a little anxious",60,"high school","female",11,7,7,0,1,0,"Strongly Oppose",4,0,1 +"24","4","somewhat anxious",62,"some college","male",17,6,8,0,0,0,"Oppose",4,0,1 +"25","4","somewhat anxious",31,"bachelor's degree or higher","male",13,7,5,0,0,0,"Strongly Oppose",4,0,0 +"26","3","somewhat anxious",50,"some college","female",13,4,2,0,1,0,"Strongly Oppose",2,0,0 +"27","3","a little anxious",48,"high school","male",7,9,5,0,1,0,"Strongly Oppose",4,0,1 +"28","2","somewhat anxious",29,"some college","male",10,6,4,1,0,0,"Strongly Favor",2,0,0 +"29","3","a little anxious",64,"high school","female",5,9,5,0,1,0,"Oppose",4,0,0 +"30","3","very anxious",65,"high school","female",12,4,6,0,1,0,"Strongly Oppose",4,0,1 +"31","4","not anxious at all",66,"less than high school","female",4,12,8,0,0,0,"Oppose",4,0,0 +"32","1","not anxious at all",68,"high school","female",9,11,8,1,1,1,"Strongly Oppose",4,0,1 +"33","4","somewhat anxious",43,"high school","female",15,6,6,0,0,0,"Favor",3,0,0 +"34","3","a little anxious",57,"bachelor's degree or higher","female",12,7,5,0,1,0,"Oppose",3,0,0 +"35","3","somewhat anxious",41,"high school","male",11,9,4,0,1,0,"Strongly Oppose",4,0,0 +"36","2","somewhat anxious",85,"bachelor's degree or higher","male",13,7,7,1,0,0,"Strongly Oppose",3,0,1 +"37","4","a little anxious",70,"bachelor's degree or higher","male",15,8,8,0,0,0,"Strongly Oppose",4,0,1 +"38","3","a little anxious",65,"bachelor's degree or higher","male",14,8,6,0,1,0,"Strongly Oppose",4,0,0 +"39","2","a little anxious",67,"less than high school","female",11,11,8,1,0,0,"Strongly Oppose",4,1,1 +"40","1","a little anxious",68,"some college","female",9,6,5,1,1,1,"Favor",2,0,0 +"41","2","somewhat anxious",64,"some college","male",13,5,5,1,0,0,"Strongly Oppose",2,0,0 +"42","1","a little anxious",37,"some college","male",13,10,8,1,1,1,"Strongly Oppose",4,0,1 +"43","3","not anxious at all",45,"high school","female",7,10,7,0,1,0,"Strongly Oppose",4,0,0 +"44","3","a little anxious",81,"less than high school","female",14,9,7,0,1,0,"Oppose",4,0,1 +"45","2","somewhat anxious",51,"high school","female",10,6,6,1,0,0,"Strongly Oppose",3,0,0 +"46","1","a little anxious",53,"some college","male",12,10,8,1,1,1,"Strongly Oppose",4,0,1 +"47","4","somewhat anxious",62,"high school","female",9,6,5,0,0,0,"Strongly Oppose",4,0,0 +"48","2","a little anxious",42,"less than high school","male",8,9,8,1,0,0,"Oppose",4,0,1 +"49","1","a little anxious",71,"some college","female",12,8,8,1,1,1,"Strongly Oppose",4,0,0 +"50","1","a little anxious",56,"high school","male",11,11,8,1,1,1,"Strongly Oppose",4,0,1 +"51","1","a little anxious",67,"less than high school","female",8,10,5,1,1,1,"Oppose",4,0,1 +"52","4","a little anxious",77,"some college","female",6,7,6,0,0,0,"Strongly Oppose",2,1,0 +"53","1","not anxious at all",24,"some college","female",15,11,7,1,1,1,"Strongly Oppose",4,1,1 +"54","4","a little anxious",42,"high school","male",3,7,5,0,0,0,"Oppose",2,0,0 +"55","3","very anxious",25,"bachelor's degree or higher","female",11,3,4,0,1,0,"Oppose",2,0,0 +"56","1","a little anxious",60,"high school","female",12,8,6,1,1,1,"Oppose",4,0,0 +"57","1","somewhat anxious",43,"some college","male",14,10,8,1,1,1,"Strongly Oppose",1,0,1 +"58","1","a little anxious",60,"some college","male",6,9,6,1,1,1,"Strongly Oppose",3,0,0 +"59","4","not anxious at all",31,"high school","male",11,11,7,0,0,0,"Strongly Oppose",4,1,0 +"60","2","somewhat anxious",47,"some college","female",13,7,6,1,0,0,"Favor",3,0,0 +"61","1","very anxious",32,"bachelor's degree or higher","female",10,3,2,1,1,1,"Favor",2,0,0 +"62","2","somewhat anxious",66,"some college","male",8,8,7,1,0,0,"Strongly Oppose",3,0,0 +"63","2","very anxious",44,"high school","female",15,6,8,1,0,0,"Strongly Oppose",4,0,0 +"64","2","somewhat anxious",46,"high school","male",17,6,4,1,0,0,"Strongly Oppose",3,0,0 +"65","4","very anxious",41,"high school","female",10,3,3,0,0,0,"Strongly Oppose",2,0,0 +"66","2","a little anxious",75,"high school","female",9,7,4,1,0,0,"Strongly Oppose",3,0,0 +"67","1","not anxious at all",53,"bachelor's degree or higher","male",10,12,8,1,1,1,"Strongly Oppose",4,0,1 +"68","3","very anxious",60,"bachelor's degree or higher","male",12,3,4,0,1,0,"Favor",2,0,0 +"69","3","very anxious",75,"high school","female",2,4,6,0,1,0,"Favor",2,0,0 +"70","2","not anxious at all",45,"high school","male",9,12,8,1,0,0,"Strongly Oppose",4,0,0 +"71","2","not anxious at all",69,"less than high school","female",5,12,8,1,0,0,"Strongly Oppose",4,0,1 +"72","4","somewhat anxious",67,"high school","female",15,6,4,0,0,0,"Strongly Oppose",3,0,0 +"73","4","somewhat anxious",20,"high school","male",9,5,5,0,0,0,"Oppose",2,0,0 +"74","1","somewhat anxious",43,"bachelor's degree or higher","male",16,6,4,1,1,1,"Strongly Oppose",2,0,0 +"75","4","a little anxious",32,"some college","male",10,9,8,0,0,0,"Strongly Oppose",4,0,0 +"76","3","somewhat anxious",39,"high school","male",12,5,4,0,1,0,"Favor",3,0,0 +"77","3","very anxious",53,"bachelor's degree or higher","female",13,4,3,0,1,0,"Favor",2,0,0 +"78","2","not anxious at all",57,"some college","female",2,12,8,1,0,0,"Strongly Oppose",4,1,0 +"79","4","a little anxious",62,"high school","female",7,8,7,0,0,0,"Strongly Oppose",3,1,1 +"80","2","a little anxious",69,"high school","female",7,9,8,1,0,0,"Strongly Oppose",4,0,0 +"81","2","somewhat anxious",44,"high school","female",13,7,6,1,0,0,"Oppose",4,0,0 +"82","1","not anxious at all",57,"high school","male",11,12,8,1,1,1,"Strongly Oppose",4,0,0 +"83","4","a little anxious",27,"some college","female",15,7,4,0,0,0,"Strongly Oppose",2,0,0 +"84","3","somewhat anxious",82,"bachelor's degree or higher","female",17,7,5,0,1,0,"Oppose",2,0,0 +"85","4","somewhat anxious",84,"high school","male",12,6,6,0,0,0,"Strongly Oppose",3,1,1 +"86","3","somewhat anxious",54,"some college","female",13,5,6,0,1,0,"Oppose",2,0,0 +"87","2","very anxious",36,"less than high school","male",11,4,6,1,0,0,"Oppose",4,0,0 +"88","1","not anxious at all",47,"some college","male",13,12,8,1,1,1,"Strongly Oppose",4,1,1 +"89","1","very anxious",28,"bachelor's degree or higher","female",12,3,6,1,1,1,"Strongly Oppose",4,0,0 +"90","2","very anxious",42,"high school","female",14,4,8,1,0,0,"Strongly Oppose",4,0,1 +"91","3","very anxious",60,"high school","male",6,7,8,0,1,0,"Strongly Oppose",4,0,0 +"92","1","very anxious",55,"bachelor's degree or higher","male",15,3,4,1,1,1,"Strongly Oppose",3,0,0 +"93","2","a little anxious",55,"high school","female",6,9,7,1,0,0,"Strongly Oppose",4,0,0 +"94","4","not anxious at all",61,"some college","male",12,12,8,0,0,0,"Strongly Oppose",4,1,1 +"95","3","somewhat anxious",84,"high school","female",11,5,2,0,1,0,"Favor",2,0,0 +"96","4","not anxious at all",45,"high school","female",3,10,8,0,0,0,"Oppose",1,0,1 +"97","1","a little anxious",67,"some college","male",7,8,8,1,1,1,"Oppose",3,0,0 +"98","2","not anxious at all",24,"some college","male",12,11,8,1,0,0,"Strongly Oppose",4,0,0 +"99","2","not anxious at all",64,"less than high school","male",11,10,7,1,0,0,"Strongly Oppose",4,1,1 +"100","1","a little anxious",72,"high school","female",7,10,3,1,1,1,"Strongly Oppose",4,0,0 +"101","2","not anxious at all",40,"high school","female",4,12,8,1,0,0,"Strongly Favor",1,0,1 +"102","4","not anxious at all",35,"bachelor's degree or higher","female",11,9,8,0,0,0,"Strongly Oppose",4,1,1 +"103","1","not anxious at all",69,"high school","female",8,12,8,1,1,1,"Oppose",4,0,1 +"104","1","a little anxious",30,"less than high school","female",6,11,7,1,1,1,"Oppose",4,0,0 +"105","2","a little anxious",45,"high school","female",7,8,8,1,0,0,"Strongly Oppose",3,0,0 +"106","4","very anxious",35,"some college","male",9,3,4,0,0,0,"Oppose",2,0,0 +"107","4","not anxious at all",47,"high school","male",11,10,8,0,0,0,"Oppose",3,1,1 +"108","4","a little anxious",53,"some college","male",11,5,4,0,0,0,"Strongly Oppose",2,0,0 +"109","3","a little anxious",75,"high school","male",4,9,6,0,1,0,"Oppose",2,0,0 +"110","1","somewhat anxious",70,"high school","female",13,8,6,1,1,1,"Favor",3,0,0 +"111","1","somewhat anxious",56,"high school","female",8,7,8,1,1,1,"Strongly Oppose",4,0,1 +"112","3","a little anxious",70,"less than high school","female",7,8,8,0,1,0,"Strongly Oppose",3,0,0 +"113","4","somewhat anxious",35,"bachelor's degree or higher","male",11,4,3,0,0,0,"Strongly Oppose",2,0,0 +"114","1","not anxious at all",54,"bachelor's degree or higher","female",11,12,6,1,1,1,"Strongly Oppose",4,0,0 +"115","2","somewhat anxious",76,"bachelor's degree or higher","male",12,5,6,1,0,0,"Strongly Oppose",2,0,0 +"116","1","a little anxious",65,"high school","female",13,9,6,1,1,1,"Strongly Oppose",4,1,1 +"117","2","somewhat anxious",22,"high school","male",12,5,4,1,0,0,"Oppose",2,0,0 +"118","3","somewhat anxious",28,"high school","male",13,8,8,0,1,0,"Strongly Oppose",4,0,1 +"119","4","very anxious",26,"bachelor's degree or higher","male",11,3,5,0,0,0,"Favor",3,0,0 +"120","1","somewhat anxious",67,"high school","male",13,5,6,1,1,1,"Strongly Oppose",4,0,0 +"121","4","very anxious",58,"high school","male",13,5,4,0,0,0,"Strongly Oppose",3,0,1 +"122","3","somewhat anxious",34,"some college","female",16,6,3,0,1,0,"Strongly Oppose",3,0,0 +"123","2","very anxious",29,"bachelor's degree or higher","female",1,5,6,1,0,0,"Oppose",2,0,0 +"124","3","a little anxious",61,"less than high school","male",13,10,6,0,1,0,"Oppose",4,0,1 +"125","4","not anxious at all",58,"some college","female",6,11,8,0,0,0,"Strongly Oppose",4,0,0 +"126","1","very anxious",46,"some college","female",10,5,4,1,1,1,"Oppose",2,0,0 +"127","3","not anxious at all",73,"less than high school","female",6,8,6,0,1,0,"Strongly Oppose",4,0,1 +"128","4","very anxious",23,"bachelor's degree or higher","male",1,3,3,0,0,0,"Strongly Oppose",1,0,0 +"129","3","very anxious",19,"high school","male",15,4,6,0,1,0,"Strongly Oppose",3,0,0 +"130","2","somewhat anxious",35,"some college","male",8,4,4,1,0,0,"Strongly Oppose",2,0,0 +"131","2","very anxious",29,"bachelor's degree or higher","male",19,4,5,1,0,0,"Strongly Oppose",3,0,0 +"132","2","very anxious",53,"bachelor's degree or higher","male",8,3,3,1,0,0,"Strongly Oppose",3,0,0 +"133","3","a little anxious",72,"bachelor's degree or higher","male",12,7,6,0,1,0,"Oppose",3,0,1 +"134","3","somewhat anxious",36,"bachelor's degree or higher","male",14,5,4,0,1,0,"Favor",1,0,0 +"135","1","not anxious at all",26,"less than high school","male",5,11,8,1,1,1,"Strongly Oppose",3,0,0 +"136","2","a little anxious",46,"bachelor's degree or higher","female",13,7,8,1,0,0,"Strongly Oppose",4,0,1 +"137","3","a little anxious",31,"high school","male",6,9,8,0,1,0,"Strongly Oppose",4,0,0 +"138","2","a little anxious",70,"high school","female",1,8,7,1,0,0,"Strongly Oppose",4,0,0 +"139","4","a little anxious",65,"bachelor's degree or higher","male",13,7,6,0,0,0,"Strongly Oppose",3,0,1 +"140","4","very anxious",69,"less than high school","female",1,4,4,0,0,0,"Oppose",2,0,0 +"141","4","very anxious",72,"bachelor's degree or higher","male",11,4,4,0,0,0,"Oppose",2,0,0 +"142","1","not anxious at all",71,"less than high school","female",13,12,8,1,1,1,"Strongly Oppose",4,1,1 +"143","2","very anxious",62,"some college","male",12,4,6,1,0,0,"Oppose",3,0,0 +"144","3","a little anxious",37,"bachelor's degree or higher","male",13,7,5,0,1,0,"Oppose",3,0,0 +"145","2","very anxious",36,"high school","female",5,3,6,1,0,0,"Oppose",3,0,0 +"146","4","somewhat anxious",47,"some college","female",9,4,4,0,0,0,"Favor",3,0,0 +"147","3","somewhat anxious",47,"bachelor's degree or higher","male",16,5,4,0,1,0,"Oppose",3,0,0 +"148","1","very anxious",28,"bachelor's degree or higher","male",4,3,3,1,1,1,"Oppose",3,0,0 +"149","2","somewhat anxious",34,"bachelor's degree or higher","female",11,5,6,1,0,0,"Oppose",2,0,0 +"150","2","very anxious",69,"bachelor's degree or higher","male",10,3,4,1,0,0,"Favor",2,0,0 +"151","3","a little anxious",47,"high school","male",12,10,8,0,1,0,"Oppose",3,0,1 +"152","1","not anxious at all",73,"high school","male",11,11,8,1,1,1,"Strongly Oppose",4,0,1 +"153","3","very anxious",63,"high school","female",10,3,3,0,1,0,"Strongly Oppose",2,0,0 +"154","2","somewhat anxious",33,"less than high school","male",1,7,4,1,0,0,"Strongly Oppose",2,0,0 +"155","1","somewhat anxious",42,"high school","female",6,7,4,1,1,1,"Oppose",2,0,0 +"156","3","somewhat anxious",43,"high school","female",7,5,6,0,1,0,"Strongly Oppose",4,1,1 +"157","4","very anxious",50,"bachelor's degree or higher","female",16,3,4,0,0,0,"Oppose",2,0,0 +"158","2","somewhat anxious",56,"bachelor's degree or higher","male",10,6,7,1,0,0,"Strongly Oppose",3,0,1 +"159","3","somewhat anxious",28,"some college","female",11,6,6,0,1,0,"Strongly Oppose",2,0,0 +"160","1","somewhat anxious",44,"some college","female",13,8,8,1,1,1,"Oppose",4,0,0 +"161","3","somewhat anxious",38,"bachelor's degree or higher","female",9,5,6,0,1,0,"Oppose",1,0,0 +"162","1","not anxious at all",34,"bachelor's degree or higher","female",14,11,7,1,1,1,"Strongly Oppose",2,0,0 +"163","2","very anxious",56,"some college","male",16,3,3,1,0,0,"Strongly Oppose",2,0,0 +"164","3","somewhat anxious",47,"bachelor's degree or higher","male",11,4,6,0,1,0,"Oppose",2,0,0 +"165","4","somewhat anxious",42,"bachelor's degree or higher","male",7,7,6,0,0,0,"Strongly Oppose",4,0,1 +"166","3","somewhat anxious",53,"some college","female",16,4,5,0,1,0,"Strongly Oppose",2,0,0 +"167","3","very anxious",38,"bachelor's degree or higher","female",11,4,4,0,1,0,"Strongly Favor",1,0,0 +"168","2","somewhat anxious",50,"bachelor's degree or higher","female",11,6,4,1,0,0,"Favor",3,0,0 +"169","3","a little anxious",21,"high school","male",15,8,7,0,1,0,"Strongly Oppose",3,0,1 +"170","4","somewhat anxious",25,"some college","male",18,5,6,0,0,0,"Strongly Oppose",3,0,0 +"171","3","very anxious",58,"high school","female",16,5,8,0,1,0,"Oppose",4,0,1 +"172","4","somewhat anxious",39,"some college","male",10,5,7,0,0,0,"Strongly Oppose",3,1,0 +"173","4","not anxious at all",26,"some college","female",7,12,8,0,0,0,"Strongly Oppose",4,0,0 +"174","4","somewhat anxious",61,"some college","female",8,8,6,0,0,0,"Strongly Oppose",4,0,1 +"175","1","somewhat anxious",29,"some college","female",11,5,4,1,1,1,"Oppose",1,0,0 +"176","3","not anxious at all",39,"some college","female",12,12,7,0,1,0,"Strongly Oppose",4,0,1 +"177","2","somewhat anxious",40,"bachelor's degree or higher","male",11,7,6,1,0,0,"Strongly Oppose",4,0,1 +"178","1","somewhat anxious",30,"bachelor's degree or higher","female",11,4,4,1,1,1,"Strongly Favor",2,0,0 +"179","2","very anxious",64,"bachelor's degree or higher","female",10,3,5,1,0,0,"Oppose",1,0,0 +"180","2","a little anxious",50,"less than high school","male",5,10,7,1,0,0,"Strongly Oppose",3,0,1 +"181","2","somewhat anxious",33,"bachelor's degree or higher","female",12,9,8,1,0,0,"Strongly Oppose",4,0,0 +"182","3","somewhat anxious",35,"high school","male",9,6,6,0,1,0,"Oppose",4,0,1 +"183","1","somewhat anxious",26,"bachelor's degree or higher","female",16,6,5,1,1,1,"Oppose",3,0,0 +"184","1","not anxious at all",44,"some college","male",16,10,8,1,1,1,"Strongly Oppose",4,0,0 +"185","1","somewhat anxious",44,"some college","male",13,6,6,1,1,1,"Oppose",4,0,1 +"186","1","not anxious at all",25,"some college","male",11,12,8,1,1,1,"Strongly Oppose",4,1,1 +"187","3","very anxious",44,"bachelor's degree or higher","male",17,3,4,0,1,0,"Oppose",1,0,0 +"188","2","a little anxious",51,"bachelor's degree or higher","female",17,9,8,1,0,0,"Strongly Oppose",4,1,1 +"189","2","very anxious",62,"bachelor's degree or higher","female",14,5,6,1,0,0,"Strongly Oppose",3,0,0 +"190","4","very anxious",55,"bachelor's degree or higher","female",18,3,8,0,0,0,"Strongly Oppose",4,0,1 +"191","3","somewhat anxious",43,"bachelor's degree or higher","male",13,5,6,0,1,0,"Strongly Oppose",3,0,1 +"192","4","very anxious",53,"bachelor's degree or higher","male",12,3,3,0,0,0,"Strongly Oppose",3,1,1 +"193","3","a little anxious",49,"some college","female",10,6,4,0,1,0,"Oppose",3,0,1 +"194","3","somewhat anxious",34,"some college","male",11,5,4,0,1,0,"Favor",2,0,0 +"195","4","not anxious at all",36,"high school","male",11,9,7,0,0,0,"Strongly Oppose",4,0,0 +"196","2","very anxious",31,"bachelor's degree or higher","male",11,3,3,1,0,0,"Strongly Oppose",3,0,1 +"197","4","somewhat anxious",57,"bachelor's degree or higher","female",15,5,5,0,0,0,"Strongly Oppose",2,0,0 +"198","2","somewhat anxious",18,"less than high school","female",16,6,6,1,0,0,"Oppose",1,0,0 +"199","3","somewhat anxious",37,"bachelor's degree or higher","female",12,5,6,0,1,0,"Strongly Oppose",3,0,0 +"200","3","very anxious",63,"bachelor's degree or higher","male",16,3,4,0,1,0,"Strongly Oppose",1,0,0 +"201","2","a little anxious",48,"bachelor's degree or higher","female",16,8,8,1,0,0,"Oppose",3,0,0 +"202","4","not anxious at all",32,"high school","male",13,12,8,0,0,0,"Strongly Oppose",4,0,1 +"203","2","a little anxious",28,"some college","female",9,7,5,1,0,0,"Oppose",2,0,0 +"204","4","somewhat anxious",45,"high school","female",13,6,5,0,0,0,"Favor",3,0,0 +"205","1","a little anxious",59,"some college","male",13,7,8,1,1,1,"Oppose",4,1,1 +"206","4","not anxious at all",82,"high school","female",10,11,8,0,0,0,"Strongly Oppose",3,1,0 +"207","2","very anxious",62,"bachelor's degree or higher","female",2,4,4,1,0,0,"Favor",2,0,0 +"208","1","very anxious",35,"bachelor's degree or higher","female",19,4,5,1,1,1,"Oppose",3,0,0 +"209","4","very anxious",47,"some college","female",15,4,5,0,0,0,"Oppose",1,0,1 +"210","3","not anxious at all",65,"some college","male",15,11,8,0,1,0,"Strongly Oppose",2,0,0 +"211","1","a little anxious",62,"high school","male",13,8,8,1,1,1,"Strongly Oppose",4,0,0 +"212","4","a little anxious",59,"bachelor's degree or higher","female",18,7,7,0,0,0,"Strongly Oppose",4,0,1 +"213","4","somewhat anxious",51,"bachelor's degree or higher","female",9,6,6,0,0,0,"Oppose",2,0,0 +"214","1","somewhat anxious",33,"high school","female",12,8,6,1,1,1,"Strongly Oppose",4,0,0 +"215","1","a little anxious",27,"some college","female",8,9,6,1,1,1,"Oppose",3,0,0 +"216","2","somewhat anxious",54,"bachelor's degree or higher","female",10,5,3,1,0,0,"Strongly Oppose",2,1,0 +"217","3","very anxious",58,"bachelor's degree or higher","male",5,3,2,0,1,0,"Favor",1,0,0 +"218","2","very anxious",20,"some college","male",3,3,3,1,0,0,"Strongly Favor",2,0,0 +"219","3","very anxious",47,"bachelor's degree or higher","male",5,3,3,0,1,0,"Oppose",3,0,0 +"220","2","a little anxious",29,"high school","male",12,10,7,1,0,0,"Oppose",4,1,1 +"221","3","not anxious at all",54,"high school","female",4,12,8,0,1,0,"Strongly Oppose",4,0,0 +"222","1","a little anxious",24,"bachelor's degree or higher","female",7,7,6,1,1,1,"Oppose",3,0,0 +"223","2","not anxious at all",47,"high school","female",10,12,8,1,0,0,"Strongly Oppose",4,1,1 +"224","3","a little anxious",25,"some college","female",11,7,3,0,1,0,"Oppose",2,0,0 +"225","4","somewhat anxious",28,"high school","male",10,5,6,0,0,0,"Oppose",3,0,0 +"226","2","somewhat anxious",57,"bachelor's degree or higher","male",16,7,6,1,0,0,"Strongly Favor",3,0,1 +"227","4","a little anxious",26,"high school","male",8,10,6,0,0,0,"Strongly Oppose",4,0,0 +"228","1","a little anxious",43,"high school","male",7,7,7,1,1,1,"Strongly Favor",3,0,1 +"229","4","somewhat anxious",35,"high school","male",12,6,6,0,0,0,"Strongly Oppose",4,0,1 +"230","4","a little anxious",29,"bachelor's degree or higher","female",11,7,5,0,0,0,"Oppose",2,0,0 +"231","2","very anxious",26,"some college","female",14,5,4,1,0,0,"Oppose",3,0,0 +"232","3","not anxious at all",18,"high school","female",15,12,8,0,1,0,"Strongly Oppose",4,0,0 +"233","4","very anxious",60,"bachelor's degree or higher","female",12,3,2,0,0,0,"Oppose",1,0,0 +"234","4","very anxious",42,"bachelor's degree or higher","female",15,3,3,0,0,0,"Strongly Oppose",2,0,0 +"235","1","a little anxious",29,"high school","female",15,10,8,1,1,1,"Strongly Oppose",4,0,1 +"236","3","somewhat anxious",57,"bachelor's degree or higher","female",10,5,4,0,1,0,"Favor",1,0,0 +"237","2","not anxious at all",53,"high school","female",14,10,8,1,0,0,"Strongly Oppose",4,0,1 +"238","3","very anxious",27,"some college","male",6,3,6,0,1,0,"Strongly Oppose",3,0,0 +"239","1","a little anxious",25,"bachelor's degree or higher","male",8,9,7,1,1,1,"Strongly Oppose",4,0,1 +"240","3","somewhat anxious",37,"some college","female",7,7,4,0,1,0,"Strongly Oppose",2,0,0 +"241","1","a little anxious",25,"some college","female",12,7,7,1,1,1,"Oppose",3,0,1 +"242","1","very anxious",38,"bachelor's degree or higher","female",13,4,3,1,1,1,"Strongly Oppose",3,0,0 +"243","1","somewhat anxious",39,"bachelor's degree or higher","female",15,5,5,1,1,1,"Strongly Oppose",3,0,0 +"244","1","somewhat anxious",26,"some college","male",7,7,6,1,1,1,"Strongly Oppose",4,0,1 +"245","4","very anxious",45,"bachelor's degree or higher","female",18,5,3,0,0,0,"Strongly Oppose",3,0,0 +"246","2","somewhat anxious",27,"some college","male",13,5,7,1,0,0,"Favor",4,0,0 +"247","3","very anxious",46,"high school","male",12,3,5,0,1,0,"Oppose",2,0,0 +"248","1","somewhat anxious",62,"high school","male",3,5,2,1,1,1,"Strongly Oppose",3,0,0 +"249","3","somewhat anxious",44,"high school","female",12,6,5,0,1,0,"Oppose",2,0,0 +"250","3","somewhat anxious",65,"bachelor's degree or higher","male",9,6,8,0,1,0,"Strongly Oppose",3,0,0 +"251","2","not anxious at all",34,"bachelor's degree or higher","male",8,12,7,1,0,0,"Oppose",3,0,0 +"252","4","somewhat anxious",66,"high school","female",11,7,8,0,0,0,"Oppose",3,1,1 +"253","3","very anxious",44,"high school","female",14,3,4,0,1,0,"Favor",2,0,0 +"254","1","a little anxious",34,"high school","male",13,7,5,1,1,1,"Oppose",3,0,1 +"255","4","a little anxious",43,"some college","male",10,11,8,0,0,0,"Strongly Oppose",4,0,0 +"256","2","a little anxious",30,"high school","male",9,8,7,1,0,0,"Strongly Oppose",4,0,0 +"257","1","not anxious at all",27,"some college","female",17,12,7,1,1,1,"Strongly Oppose",4,0,1 +"258","1","a little anxious",20,"high school","female",17,8,4,1,1,1,"Oppose",2,0,1 +"259","2","a little anxious",56,"high school","female",10,10,8,1,0,0,"Strongly Oppose",3,0,0 +"260","2","not anxious at all",42,"high school","male",12,10,7,1,0,0,"Oppose",4,0,1 +"261","3","somewhat anxious",44,"bachelor's degree or higher","male",17,7,6,0,1,0,"Oppose",1,0,0 +"262","4","somewhat anxious",28,"bachelor's degree or higher","female",14,6,6,0,0,0,"Strongly Oppose",1,0,1 +"263","2","very anxious",38,"bachelor's degree or higher","female",14,3,6,1,0,0,"Favor",2,0,0 +"264","1","somewhat anxious",29,"bachelor's degree or higher","male",10,9,7,1,1,1,"Strongly Oppose",4,0,1 +"265","4","very anxious",52,"some college","female",1,3,2,0,0,0,"Oppose",2,0,0 diff --git a/statsmodels/stats/tests/results/influence_lsdiag_R.json b/statsmodels/stats/tests/results/influence_lsdiag_R.json new file mode 100644 index 0000000..ec9d27b --- /dev/null +++ b/statsmodels/stats/tests/results/influence_lsdiag_R.json @@ -0,0 +1 @@ +{"std.dev":10.7037959322668,"hat":[0.0256401118204194,0.0102912791219414,0.00615382823137815,0.022891524007603,0.0149028803586687,0.00848322047305122,0.0339213507663737,0.00521465779974826,0.0135892996943951,0.00964349861258443,0.0148261221312362,0.0114787394848897,0.00622515475127008,0.00623205683569176,0.00705805381220983,0.00701573108771227,0.00702849608843835,0.0135888171571392,0.00604360424055167,0.0185013583395479,0.00858120532105016,0.00799485917244209,0.00718402177548796,0.0224837852066988,0.00811473226026162,0.0147545237754216,0.0231622431942168,0.0224376785416127,0.0082112045676624,0.00606781082952795,0.00571243309952239,0.0114605154651649,0.00880946490031011,0.00595820498997754,0.00514214315736581,0.0164601545232,0.0102784683124976,0.00688544005756105,0.00602756700727969,0.00893911789501998,0.00897683289555812,0.00516051024359278,0.0150583394863529,0.0105436821805678,0.00770297759351984,0.00596034041957265,0.0267667765845641,0.0314429295089532,0.005303857274646,0.00665726664130154,0.0066874148682557,0.0115270824054887,0.0213254654306056,0.00526744937681136,0.0101303958537354,0.0256171167020065,0.0213583916555208,0.0174371063951737,0.0288533116629094,0.033255899438993,0.0207676694028528,0.0319640205017044,0.0448246587385835,0.0433947127055191,0.00586865199381642,0.0181316303090566,0.00889086879242889,0.0242910670616789,0.006366903841275,0.00961496612212614,0.0096551461236696,0.00968674054580874,0.0367000872889966,0.0134121135066486,0.00935579619247665,0.00956203582796244,0.072184775316909,0.0199317772916179,0.0151375221664312,0.007532000800996,0.0189376955120401,0.0257774232921598,0.0116579793378601,0.0175305259784465,0.059561122373118,0.0128735636130396,0.0131143375458935,0.0173192836006609,0.0330453518821902,0.0137641167380622,0.0507621647937914,0.0682519640405402,0.0637030729482148,0.0137181879350601,0.0215702202951134,0.0446043996874069,0.0249299793934902,0.0209492860322901,0.0240180001011766,0.017027486899611,0.0182572408533526,0.0263353356436558,0.0226825616395567,0.0193903170510785,0.00778694180233196,0.0156551957164238,0.0105461352341668,0.0054401876111826,0.0714758092445992,0.00733136166121943,0.00695709616586619,0.00530896159319476,0.00558756331383583,0.00512472599576075,0.0105959679841227,0.00603532534508569,0.00659501217148171,0.00577443861992324,0.00775169372943981,0.0089916678662184,0.0057864151115724,0.00859080887894925,0.0160293998582886,0.00549869266072661,0.00906137965273838,0.0103996198379157,0.0274786408359742,0.0169267190232155,0.0127283072465307,0.00642804850670256,0.00651714212488823,0.00573238287609896,0.00578738254812433,0.0061027179681222,0.00779334544816983,0.00835152002145904,0.00611639969808241,0.00539962559756053,0.00830722201805155,0.00523487058337534,0.00725007053549223,0.00517038161017289,0.00590185682642882,0.007956326806033,0.00765774255916155,0.007955502636324,0.0068466010530311,0.0053531846956638,0.0106258337059,0.0064284043348593,0.005826466656413,0.00521508751663823,0.0121764632741771,0.0102743970506638,0.00556461366732775,0.00954948375236221,0.0120887310456719,0.00764557361580993,0.0118552532563707,0.0058205004011486,0.00496241443756517,0.0075069439535672,0.0114378710427829,0.0074305057373094,0.0136430606545319,0.00811149887778098,0.0078918374470175,0.0130481518846423,0.00610553132510172,0.0120431138025517,0.00675050816702919,0.00500505169093315,0.012459372441125,0.00644460576436083,0.0124393678392461,0.0130721374312924,0.00661331245445086,0.0117898017269195,0.0115947707300928,0.0134620015068775,0.0104167624268443,0.0149900115537686,0.012796888846679,0.00640250165990253,0.0112087908639513,0.0049805568298691,0.0395579521552196,0.0101013356976456,0.00631616199687159,0.00868631169196707,0.0235442767251173,0.0064761654437429,0.00566203542473931,0.00527731830844482,0.00578673053255762,0.0259607726985618,0.0107381193135285,0.0636485399634325,0.0421405764825622,0.0864330668425508,0.0136079407019335,0.0195808581702544],"std.res":[-0.196316563909338,-1.58040782007861,1.66872327572338,1.34341508583876,-2.28438422260224,0.544100142654128,-1.98521098763908,0.925431694706693,0.704210070985433,1.3245997283391,-1.70849972450638,0.248675832132645,-1.2491131286534,0.196628335417579,-0.751200252635306,0.903936319632761,-0.474260565745427,-0.954140345707953,0.254808607952922,-1.18679897442068,-0.963401055446865,-0.296661151737212,0.869186531630132,0.607352662869685,-1.17219136589598,-1.01989674073134,-2.69623165795296,0.0392375688858789,-0.368348760665096,-0.412877008197382,-0.235956558208753,-1.34125995503797,-0.67630849637833,0.65607161565897,0.492657205774263,-1.64743979275096,-0.290931455918949,-1.48317935233782,0.604367286402851,0.796017389742759,0.0785948423866266,0.769990115881544,-0.322520944828154,0.0265845270905754,0.736458827157187,0.215110466322646,0.464356952896315,1.00754251033223,1.19949877063676,0.0638064000524388,-0.657358037042942,0.60010708499341,-0.696201241738183,-0.089227234851327,-1.56131730433648,-0.9325611523992,0.530716512449827,0.425039892532143,0.490978711348936,-0.298900657109842,0.10196570267987,0.231666038602481,1.61073610071798,-4.61177824645797,-1.67171417215455,1.09363549457279,-0.242977308600308,0.832757776658303,1.38510504196001,0.094237594562031,-0.108526617648441,0.744773366249954,0.216566317649665,-0.0428604766863424,-0.11713403198105,1.01691599519089,-3.12604511597091,0.247169819773815,-0.540591362838104,0.652669528462157,0.498046904524297,-1.26959553526098,-0.346729426524019,-0.0660666086891167,0.710024807524027,-1.80848585460084,1.53572906935649,1.25372569567815,0.689287592707496,1.44104981666311,1.86982146007388,-0.119291159987129,0.585938674221658,1.17727653868868,-2.43084169972589,0.691434496569324,0.969288230919195,0.397159221311248,1.58907415603116,1.6957384766646,-0.403794344831542,0.563976069222923,-0.700338424719573,-1.58103959003691,0.341250175605907,-1.81577609585618,1.329287232264,-0.640710396900957,0.0206632289998204,-1.69968048284382,0.314957787710145,1.1729408200108,-0.737432060414148,-0.386429545353477,1.03809511411074,-1.99942777733404,-0.208661343038141,0.403253743047054,-0.648720658945711,0.981393503604874,-0.63384980819374,-0.641810246587076,0.427248463047835,-0.390141082886532,0.447414773581452,0.157299216029366,-0.203591765978771,0.288742421558322,-0.136236840694801,1.25304703367836,1.78509894920075,-1.68917566645152,1.58739528146004,-0.388409553631085,0.315006845548853,1.46090980072571,0.14352021258359,0.0633852500551296,0.663470442718878,0.947979939905229,0.843627044476115,-0.78859887909357,0.9006081588513,1.01639986938758,-0.35453371942124,-0.650134750525952,0.961428866368925,0.3775955558461,0.0465394463821932,1.47324435307107,-0.878426594985825,0.610461625248696,1.02023427466438,-0.280276673899175,0.361014730559554,1.32031875671212,-0.772207437719942,-0.0568901214076158,-0.580618296449997,0.736117011504206,-0.433317131085366,-0.10342038545443,-0.643724221756983,0.0687297923943459,0.338973567116065,0.254025869285857,0.127901081774005,-0.504796604764396,-0.15573360768388,0.61523151852243,-1.78482369470888,0.81089880692836,0.362847551310648,0.156904376625662,0.769621781253455,0.116165104784202,-0.206274980170583,-0.509613448705888,0.687516326660102,-0.188975669303196,1.24202180088551,0.0329042308705889,0.12509713617169,0.0549063671051535,-0.57103726489809,0.125082345368185,1.05805643188248,-0.499971973432698,0.351378617765663,0.366528722983862,-1.02766904840547,-0.0916980035285138,0.128483329847108,-0.372000108136787,-0.693384210899087,0.273651886580227,-0.806885514047033,0.969670165845089,0.823664430143535,-2.56296644438216,-1.38652400390208,0.339220971502577],"stud.res":[-0.195841650155928,-1.58641911384379,1.67629486670585,1.34615356839809,-2.30911462026156,0.543135486784031,-2.00012131660044,0.92509634690731,0.703315354849676,1.32713094478638,-1.71683959163678,0.248088781614905,-1.25088420547208,0.196152727840593,-0.750375107658658,0.903519110757567,-0.473335028565752,-0.953924493642193,0.254209052576079,-1.18802510847097,-0.96322628366184,-0.29598028913739,0.8686503389348,0.606387005928133,-1.17330010310829,-1.02000026406461,-2.73996101407075,0.039139009266436,-0.367547416337236,-0.412014830180053,-0.23539588727085,-1.34397432811432,-0.675383705781977,0.655130013479263,0.491717768844544,-1.65461725332716,-0.29026128702989,-1.48769369181953,0.60340088154561,0.795281980835,0.0783983359883584,0.769199731757697,-0.321793683858053,0.0265176947592663,0.735609227706009,0.214594257795231,0.463439906743433,1.00758103809289,1.20083011728272,0.0636465316147693,-0.656417381301477,0.599139753653563,-0.695297058846687,-0.0890045439086494,-1.56701685769839,-0.932254383600913,0.529756409715789,0.424163186628673,0.490040439784586,-0.298215654468385,0.101711841848535,0.231114397247127,1.61726107036966,-4.86764398407849,-1.67934208884918,1.0941772978568,-0.242402003722307,0.832113947504004,1.38832899324413,0.0940026160161176,-0.108256797972726,0.743937258675926,0.216046956688092,-0.0427528487486992,-0.116843382752984,1.01700362086789,-3.19768234046633,0.246585861706963,-0.539627759870405,0.651725502342392,0.497103867469635,-1.27156178807631,-0.345961668054881,-0.065901125851083,0.709137392446852,-1.81894556524909,1.54102459757303,1.25554001942724,0.688375781239747,1.44498371953291,1.88172072984451,-0.118995310685327,0.584969438510647,1.17842570711766,-2.46154765131209,0.690525000421128,0.969140227280323,0.396317176680491,1.59522991073774,1.70382731754696,-0.402943617359462,0.563007376866873,-0.69943904728865,-1.58706135252467,0.340491322911004,-1.82640124916578,1.33186940680996,-0.639758752399203,0.0206112680629333,-1.70784640555007,0.314243772401251,1.17405548679772,-0.736584000210845,-0.385602097321569,1.03829870738888,-2.01473746437696,-0.208159181010525,0.402403713052435,-0.64777396248311,0.981302150631367,-0.632894420139978,-0.64085924449681,0.42636921999817,-0.389308508925131,0.446513837278159,0.156913249461126,-0.203100737599413,0.288076376321522,-0.135900443739916,1.25485496873288,1.79503805950914,-1.69713708947243,1.59352290628663,-0.387579361020664,0.314292743441911,1.46511232942912,0.143166564492549,0.063226428308885,0.662534509256501,0.947737450577042,0.843013542338469,-0.78784697969303,0.90017884649062,1.01648475632564,-0.353753547415538,-0.649188992689208,0.961245241075313,0.376780629436078,0.0464226184615076,1.47761819169153,-0.877920458527771,0.609496834114724,1.02033960691221,-0.279626770847235,0.360224496709445,1.32280382547182,-0.771421425302176,-0.0567474628437029,-0.5796488067322,0.735266873950435,-0.432431078736509,-0.10316298039145,-0.642774365593392,0.068557700685133,0.338218460249998,0.253427901972945,0.127584561654038,-0.503849367221737,-0.155351291344395,0.614268229207809,-1.79475676920213,0.810198486112277,0.362054513235584,0.156519330084132,0.768830676474841,0.115876793974438,-0.205778049067948,-0.508663425399874,0.686602641167702,-0.188517174117412,1.24372718460356,0.0328215420854592,0.124787332610118,0.054768652515637,-0.570067942131696,0.124772577275949,1.05837581935424,-0.499027703272928,0.350603425517646,0.36573010825973,-1.0278146753345,-0.091469248847871,0.12816541689819,-0.371193343211837,-0.692476859181928,0.27301482677903,-0.80617546448163,0.96952391643312,0.822996376464045,-2.59978700077173,-1.38976512465791,0.338465456283954],"cooks":[0.000338059505147097,0.00865723178904938,0.0057474287115453,0.0140938976496562,0.026315293306287,0.000844300625026242,0.0461267376014711,0.00149645589240069,0.00227731187333796,0.0056949659784713,0.0146427705442443,0.000239361385611978,0.00325795021652146,8.08197258204333e-05,0.00133706125320125,0.00192435407575085,0.000530686936943157,0.00418048754474454,0.000131593858284322,0.00885007562558548,0.00267783692917164,0.000236426959739891,0.00182223172578306,0.00282817372255785,0.00374704179154727,0.00519244494199798,0.0574581094452386,1.17792162599887e-05,0.000374442249433928,0.000346892907477392,0.000106623262910048,0.0069520805096347,0.0013550671447424,0.000859987302149778,0.0004181687292271,0.0151404853745807,0.000293005308468407,0.00508391686223943,0.000738326318449162,0.00190510179676988,1.86511740010418e-05,0.00102515297007154,0.000530104106652094,2.51033860015907e-06,0.00140343607454492,9.24845486902184e-05,0.00197679574952389,0.0109850816553712,0.00255728867091129,9.095028474626e-06,0.000969739370632169,0.00139988021837211,0.00352053416166496,1.40529549821534e-05,0.00831590499269949,0.00762138649504167,0.00204903235146531,0.00106869109335038,0.00238734344804068,0.00102444737181892,7.35002804295178e-05,0.000590708733026918,0.0405846140050378,0.321602649997367,0.00549917299541763,0.00736219854213196,0.000176535846118652,0.00575496187862585,0.00409775895227504,2.87389448478375e-05,3.82757476720714e-05,0.00180855655440363,0.000595615712211844,8.32442376556658e-06,4.31924640614139e-05,0.0033279131976342,0.253427268586742,0.000414151601379732,0.00149725630618711,0.00107760417282862,0.00159606206744372,0.0142164391892161,0.00047268973233897,2.59608348928299e-05,0.0106428536293457,0.0142178843751192,0.0104469008602283,0.00923424279711962,0.00541232594463775,0.00966060403472993,0.0623223928396501,0.000347465696964811,0.00778627714602856,0.00642586278675653,0.0434227194762412,0.00744004039609359,0.00800701680649536,0.00112505067443086,0.0207139111317908,0.0166037304892332,0.00101073347141661,0.00286767246629379,0.00379446985525894,0.016476044955594,0.000304639702719548,0.017478919503576,0.0062778971860529,0.000748488718152608,1.09557214334998e-05,0.00711203136191795,0.000231655940733754,0.00244766695593282,0.00101854139780442,0.000256401998437516,0.00384698064086267,0.00809133019577491,9.6350063937219e-05,0.000314818615396243,0.00109589877497995,0.00291291662061268,0.00077943762285425,0.00118979778079808,0.000991231063632728,0.000280527992165689,0.000610164530529988,8.66741261662377e-05,0.000390386924874457,0.000478505381781142,7.97630657664005e-05,0.00338604958199346,0.00696787174457294,0.00548353062736187,0.00488935797381418,0.000308773733780811,0.000259800821814743,0.00599146913780161,4.22537459612443e-05,7.2705989655065e-06,0.0012291377930033,0.00157638551821612,0.00173253532978554,0.00107737017227842,0.00160512887141845,0.00276178437453593,0.000323320406012404,0.00112985308886524,0.00212408430270099,0.000255785443094714,7.7539611279836e-06,0.00468093201388434,0.00150741476623512,0.00065122024519556,0.00427681394726673,0.000271828003321492,0.000243101164460836,0.00560252035045689,0.00243225711169109,8.31181234324622e-06,0.00134818797601161,0.00105746980120869,0.000312136107001997,2.69666343222625e-05,0.00159815785535862,1.17876236074739e-05,0.000529770923159111,0.000175902857524192,4.33756792876663e-05,0.00112296089867711,4.96622765910915e-05,0.00153800127582792,0.00721684713812081,0.00110255372153265,0.000553692110039628,5.32295911835011e-05,0.00248695534435519,5.95787404228755e-05,9.4421861824405e-05,0.00103280344127862,0.00184829763694874,0.000162437518695764,0.00541274555931894,5.49216486911482e-06,6.76194077689675e-05,6.47535189411207e-06,0.00123214499041157,2.61046040255852e-05,0.0153694754032909,0.00085027249678487,0.000261598012166095,0.000392391037180782,0.00848824871967303,1.82699833003344e-05,3.13336417085302e-05,0.00024472376566775,0.000932782405131919,0.000665298900313244,0.00235569756564353,0.0213047462814089,0.00994896869574054,0.207159157926247,0.00884049069150734,0.000766062268694792],"dfits":[-0.0317691297817947,-0.161770345833471,0.131905685550953,0.206044283477855,-0.284014866826653,0.0502387149549593,-0.374788852715203,0.066978464083253,0.0825505079658197,0.130958987427375,-0.210613915739852,0.0267338322651338,-0.099002961306039,0.0155334371017513,-0.0632643386638917,0.0759456014577861,-0.0398227691416105,-0.111963337068527,0.0198223597786326,-0.163110746497045,-0.0896135944681868,-0.0265712042499109,0.0738914917688683,0.0919650084690659,-0.106124458313401,-0.124821862275667,-0.421913550003275,0.00592961589629288,-0.033443152667913,-0.0321921873795729,-0.0178424065102043,-0.144709165327537,-0.063671747628394,0.0507204261971537,0.0353514691364436,-0.21405162199616,-0.0295799072559915,-0.123873867738002,0.0469883066100764,0.0755297953148236,0.00746150632928833,0.055399894578576,-0.0397887965633926,0.00273737065660378,0.0648120325932964,0.0166169676035811,0.0768569245469983,0.18154273708397,0.0876864058206456,0.00521042511337785,-0.0538599860352603,0.0647001739058529,-0.10263618657193,-0.00647678080665288,-0.15852504396747,-0.151159252085608,0.0782615878196407,0.056505406342006,0.0844670521080161,-0.0553106829982772,0.0148123009661104,0.0419963891440685,0.350345930665751,-1.03674232029856,-0.129028743143792,0.148689223223965,-0.0229587144928392,0.13129432580815,0.111133121880882,0.0092621494553103,-0.0106891058613759,0.0735764529149022,0.0421697417328056,-0.00498477751253405,-0.0113549609930915,0.099927274684875,-0.891923025610985,0.0351651950880851,-0.066901196199663,0.0567755876508931,0.0690656990967065,-0.206836950011059,-0.0375738755715726,-0.00880300147728805,0.178462320358377,-0.20772209904691,0.177643503571488,0.166682231133931,0.127255839430806,0.170705190950118,0.435148726168444,-0.0322061032496542,0.152583147538054,0.138979283994013,-0.365485966762151,0.149202684680706,0.154963593406758,0.0579728851297259,0.250248107182785,0.22424882055609,-0.0549494057320888,0.0925931394796417,-0.106556046745712,-0.223171165998545,0.0301638688674026,-0.230330695818575,0.137502481734781,-0.047315967125388,0.00571857262221389,-0.146770570182486,0.0263024786531442,0.0857727455037498,-0.0552141303332612,-0.0276751761421024,0.107449845190476,-0.156994099672491,-0.0169605606054581,0.0306672195063882,-0.0572547611077122,0.0934725791086458,-0.0482832186635534,-0.0596558738500928,0.0544193581430485,-0.0289481583719494,0.0426981155407216,0.0160856428312143,-0.0341396881914093,0.0378008087567259,-0.0154307792136305,0.100933061361647,0.145385826023819,-0.128864375155872,0.12157933696689,-0.0303704719529812,0.0278544924768855,0.134454335646659,0.011231086453804,0.00465860795086943,0.0606384145468696,0.068751272474813,0.0720419956415018,-0.0567974476825012,0.0693599077248783,0.0910315171876065,-0.0310756657729568,-0.0581352284310337,0.0798111460946797,0.027641412553084,0.0048109501567653,0.118854119284479,-0.0672088870537804,0.044130379241155,0.113283234815316,-0.0284904636773912,0.0269465064108386,0.129887990514786,-0.0853341927912512,-0.00498101765088202,-0.0634906949959914,0.0562590973800299,-0.0305382166673249,-0.00897205089991251,-0.069139966023196,0.00593177909109768,0.0397773787755665,0.0229178333298728,0.0113790938696179,-0.0579331625147743,-0.0121760511184108,0.067820104153336,-0.147960114172528,0.0574626000624283,0.0406672273701887,0.012605791375952,0.086287517424793,0.013336045495007,-0.0167899498374329,-0.0555595982280932,0.0743650775631731,-0.0220215979607427,0.127604309431997,0.00404892422068045,0.0142075581658822,0.00439644516952661,-0.0606951101301077,0.00882759321615086,0.214793545557743,-0.0504102311603701,0.0279523722959418,0.0342351998620461,-0.159599384986038,-0.00738490537584023,0.00967141757633376,-0.0270368327058704,-0.0528301832345938,0.0445714555392936,-0.0839920249552144,0.25277452544073,0.172622448016845,-0.799663997319448,-0.163234829320064,0.047832636682972],"correlation":[1,-0.609979593563002,-0.33904565807348,-0.609979593563002,1,-0.0374066569030527,-0.33904565807348,-0.0374066569030527,1],"std.err":[1.06849580666268,0.214694110888404,0.284668053608957],"cov.scaled":[1.14168328885573,-0.139929170659961,-0.103126372374865,-0.139929170659961,0.0460935612501624,-0.00228616599155909,-0.103126372374865,-0.00228616599155909,0.0810359007455123],"cov.unscaled":[0.00996483249651867,-0.00122132885767367,-0.000900106918197171,-0.00122132885767367,0.000402313515060946,-1.9954098818383e-05,-0.000900106918197171,-1.9954098818383e-05,0.000707297010489554]} diff --git a/statsmodels/stats/tests/results/influence_measures_R.csv b/statsmodels/stats/tests/results/influence_measures_R.csv new file mode 100644 index 0000000..20b8d0f --- /dev/null +++ b/statsmodels/stats/tests/results/influence_measures_R.csv @@ -0,0 +1,203 @@ +"","dfb.1_","dfb.ggdp","dfb.lint","dffit","cov.r","cook.d","hat" +"1",0.00441265074628045,-0.0276220080672388,0.00820003383763133,-0.0317691297817947,1.04133845994251,0.000338059505147097,0.0256401118204194 +"2",-0.157853502778310,0.113535527733652,0.0220165237589744,-0.161770345833471,0.987643068137894,0.00865723178904938,0.0102912791219414 +"3",0.122568803310737,-0.0570659253028159,-0.00992921234127727,0.131905685550953,0.979229034686558,0.0057474287115453,0.00615382823137815 +"4",-0.0618024933201239,0.154029136886195,0.0918846063568454,0.206044283477855,1.01099941450810,0.0140938976496562,0.0228915240076030 +"5",-0.260615622829715,0.231858462722509,0.00183995633759404,-0.284014866826653,0.951618587852007,0.026315293306287,0.0149028803586687 +"6",0.0375488452639789,-0.0274508819385169,0.0182631319629678,0.0502387149549593,1.01935133349875,0.000844300625026242,0.00848322047305122 +"7",-0.337905835616791,0.333935348901952,0.0793904495268091,-0.374788852715203,0.989667951628328,0.0461267376014711,0.0339213507663737 +"8",0.056672246814329,-0.0134002898403391,-0.00639960282481565,0.066978464083253,1.00743037915877,0.00149645589240069,0.00521465779974826 +"9",-0.0112308668500980,0.0602333757498556,0.0242616108208375,0.0825505079658197,1.02153916278797,0.00227731187333797,0.0135892996943951 +"10",0.0187535474211386,0.0892523558754287,-0.0228231983037555,0.130958987427375,0.998237218935754,0.0056949659784713,0.00964349861258443 +"11",0.0216355175453458,-0.171734841157759,-0.000919129593533817,-0.210613915739852,0.985821467735423,0.0146427705442443,0.0148261221312362 +"12",-0.000850160461419477,0.0199488913393098,0.00216860696628446,0.0267338322651338,1.02605988206678,0.000239361385611978,0.0114787394848897 +"13",-0.0525109406799243,-0.0335527590525325,0.0309190052827991,-0.099002961306039,0.997745976735108,0.00325795021652146,0.00622515475127008 +"14",0.0060771579880768,0.00203029027593295,0.00666443336334128,0.0155334371017513,1.02099947789533,8.08197258204333e-05,0.00623205683569176 +"15",-0.0616775226635543,0.0316915198414122,0.0126168382837044,-0.0632643386638917,1.01377127701015,0.00133706125320125,0.00705805381220983 +"16",0.0158855550719328,0.0373760311301011,0.015936010049146,0.0759456014577861,1.00985865634571,0.00192435407575085,0.00701573108771227 +"17",-0.00827482317883835,-0.0174099907496639,-0.0122143485516132,-0.0398227691416105,1.01895131558588,0.000530686936943157,0.00702849608843835 +"18",-0.00568365101735981,-0.0849866152889783,0.0304765010920485,-0.111963337068527,1.01515316664282,0.00418048754474454,0.0135888171571392 +"19",0.0100243199715215,-0.00069133102581757,0.00842180969436625,0.0198223597786326,1.02040168406800,0.000131593858284322,0.00604360424055167 +"20",0.0220154606508643,-0.139265067144860,0.0147683811746775,-0.163110746497045,1.01255717356319,0.00885007562558548,0.0185013583395479 +"21",-0.0130195649086606,-0.0264773652686945,-0.0509029533577494,-0.0896135944681868,1.00975406587915,0.00267783692917164,0.00858120532105016 +"22",-0.00314946742919776,-0.0133247575626197,-0.00904996717266059,-0.0265712042499109,1.02205297666895,0.000236426959739891,0.00799485917244209 +"23",0.0575269774895746,-0.0356714227089746,0.0219368969109603,0.0738914917688683,1.01097219252539,0.00182223172578306,0.00718402177548796 +"24",-0.0210643432666686,0.0810114306757724,0.00266818393768672,0.091965008469066,1.03281455914362,0.00282817372255785,0.0224837852066988 +"25",-0.0117503088614016,-0.0525425641250743,-0.0383908165909053,-0.106124458313401,1.00247838191447,0.00374704179154727,0.00811473226026162 +"26",0.0105004763591099,-0.101735785505617,0.00544711405510734,-0.124821862275667,1.01435755655147,0.00519244494199798,0.0147545237754216 +"27",0.122690569892291,-0.353053155816855,-0.110472713141731,-0.421913550003275,0.929510893277947,0.0574581094452386,0.0231622431942168 +"28",-0.00126735925963920,0.00523371502331319,-9.08010137263473e-05,0.00592961589629288,1.03850627359943,1.17792162599887e-05,0.0224376785416127 +"29",-0.0320703912182957,0.0124962390223599,0.0164907653807581,-0.033443152667913,1.02154107743523,0.000374442249433928,0.0082112045676624 +"30",-0.0184936759060551,0.0044771456917678,-0.0132267787987295,-0.0321921873795729,1.01880331190181,0.000346892907477392,0.00606781082952795 +"31",-0.0135405988419321,-0.000831309338260206,0.00648965359237211,-0.0178424065102043,1.02020414252219,0.000106623262910048,0.00571243309952239 +"32",-0.0234070818701596,-0.00690834402732063,-0.108511324236670,-0.144709165327537,0.999396653353854,0.0069520805096347,0.0114605154651649 +"33",-0.0560167978914327,0.0413884268610769,-0.00947268432989638,-0.063671747628394,1.01720489684506,0.00135506714474240,0.00880946490031011 +"34",0.039032856167431,0.00177030401367416,-0.0208353905470559,0.0507204261971537,1.01470049111503,0.000859987302149778,0.00595820498997754 +"35",0.0271398296872078,-0.000366770357014306,-0.0067964125649682,0.0353514691364436,1.01674626951481,0.0004181687292271,0.00514214315736581 +"36",0.00272249628553370,-0.171171797787231,0.0586944561717607,-0.21405162199616,0.990558344427024,0.0151404853745807,0.0164601545232 +"37",-0.000691574327205712,-0.0211608044240972,-0.00160937221231222,-0.0295799072559915,1.02446320250087,0.000293005308468407,0.0102784683124976 +"38",-0.102977776581054,0.00882126434730293,0.0646964419297267,-0.123873867738002,0.988738732801928,0.00508391686223943,0.00688544005756105 +"39",0.0440629506555616,-0.0162498101477268,-0.0108067502953262,0.0469883066100764,1.01577076546269,0.000738326318449162,0.00602756700727969 +"40",0.0089983051368223,0.0504506598244362,-0.00231466167368299,0.0755297953148236,1.01463103670997,0.00190510179676988,0.00893911789501998 +"41",0.0071524743601461,-0.00291243347945575,-0.00394887498595224,0.00746150632928833,1.02432885775904,1.86511740010418e-05,0.00897683289555812 +"42",0.0460978661968373,-0.00873508251065908,-0.00663989974012211,0.055399894578576,1.01140044660800,0.00102515297007154,0.00516051024359278 +"43",-0.0350718800361681,0.0325157499206040,-0.00354005800166412,-0.0397887965633926,1.02913403149041,0.000530104106652094,0.0150583394863529 +"44",0.0025631198904251,-0.00199247062049748,3.62700743594409e-06,0.00273737065660378,1.02603554291675,2.51033860015907e-06,0.0105436821805678 +"45",0.0640411689078228,-0.0345803022641278,-0.0161639480459519,0.0648120325932963,1.01476652542117,0.00140343607454492,0.00770297759351984 +"46",0.0072572985220666,0.00166278623704280,0.00656776852875776,0.0166169676035811,1.02060327603551,9.24845486902184e-05,0.00596034041957265 +"47",0.06699840315261,-0.0692713372243957,-0.00140298574978897,0.0768569245469983,1.03976267084193,0.00197679574952389,0.0267667765845641 +"48",-0.0324325211886924,0.161284378977839,-0.0479098406900465,0.181542737083970,1.03222683012053,0.0109850816553712,0.0314429295089532 +"49",0.0689451826622192,-0.0206455622525693,0.0100406795817797,0.0876864058206456,0.998663045358613,0.00255728867091129,0.005303857274646 +"50",0.00399927193104791,0.000197273618196454,-0.00263638358718326,0.00521042511337785,1.02196938035181,9.09502847462599e-06,0.00665726664130154 +"51",-0.0464092481853032,0.0265872804978113,-0.00781367319531253,-0.0538599860352603,1.01541948128106,0.000969739370632168,0.0066874148682557 +"52",0.00272463044142107,0.0484269448707113,-0.00837565811752561,0.0647001739058529,1.02150131728966,0.00139988021837211,0.0115270824054887 +"53",0.0145170735404201,-0.0889260227956267,0.0167684940074198,-0.102636186571929,1.02978869434807,0.00352053416166496,0.0213254654306056 +"54",-0.00395413461459616,-0.00130815999892876,0.00094989305841703,-0.00647678080665288,1.02048165679473,1.40529549821534e-05,0.00526744937681136 +"55",-0.0219269423354034,-0.109502207401866,0.0333826229092215,-0.158525043967470,0.988387031848504,0.0083159049926995,0.0101303958537354 +"56",0.0257012163061195,-0.133522708721743,0.0295787369696062,-0.151159252085608,1.02831854873771,0.00762138649504167,0.0256171167020065 +"57",0.0391529981600801,0.0185536353850222,-0.0666856903091354,0.0782615878196407,1.03298640174875,0.00204903235146531,0.0213583916555208 +"58",0.0437333013136184,-0.0455471645778853,0.0162484804923643,0.0565054063420059,1.03043347928165,0.00106869109335038,0.0174371063951737 +"59",0.0463102014931531,0.00977717072271567,-0.0765682438348477,0.0844670521080161,1.04159673743007,0.00238734344804068,0.0288533116629094 +"60",-0.0507616871075231,0.0390831365038349,0.0313232219864747,-0.0553106829982772,1.04873814225288,0.00102444737181892,0.0332558994389930 +"61",0.0119027524383801,-0.00382669262943475,-0.0121956909420860,0.0148123009661104,1.03659674805722,7.35002804295178e-05,0.0207676694028528 +"62",0.0390229795481509,-0.0325719752923061,-0.0194940453196664,0.0419963891440685,1.04790215055176,0.000590708733026918,0.0319640205017044 +"63",0.277693832138477,-0.144223710760773,-0.291694786195702,0.350345930665751,1.02183895888408,0.0405846140050378,0.0448246587385835 +"64",-0.934439788188261,0.776299026187541,0.561797543736656,-1.03674232029856,0.756075005372038,0.321602649997368,0.0433947127055191 +"65",-0.102037227495745,4.67632247426027e-05,0.050998407378252,-0.129028743143792,0.978798602564472,0.00549917299541763,0.00586865199381642 +"66",0.0389825511280923,0.082839443154373,-0.098999349484315,0.148689223223965,1.0154443191391,0.00736219854213196,0.0181316303090566 +"67",-0.0095870845763813,-0.0106099615878710,0.0113908677560231,-0.0229587144928392,1.02342399018268,0.000176535846118652,0.00889086879242889 +"68",0.000841353635337924,0.10166786548926,-0.0619750035009119,0.131294325808150,1.02966296409543,0.00575496187862585,0.0242910670616789 +"69",0.0531764019139079,-0.00492320105530187,0.0523331059724712,0.111133121880882,0.992466490248236,0.00409775895227504,0.006366903841275 +"70",0.00809855601750616,-0.00194580209107360,-0.00607364646698403,0.0092621494553103,1.02494708533381,2.87389448478375e-05,0.00961496612212614 +"71",-0.00820390382245257,0.000176944138470458,0.00744755386225664,-0.0106891058613759,1.02494389848098,3.82757476720714e-05,0.0096551461236696 +"72",0.0386028433914636,0.0243860279587293,-0.0461817254440385,0.0735764529149022,1.01660998436365,0.00180855655440363,0.00968674054580874 +"73",0.00903180672589254,0.0222608033364389,-0.0331035927882998,0.0421697417328055,1.05316164331443,0.000595615712211844,0.0367000872889966 +"74",-0.000655865005578635,-0.00351083460673362,0.00196048252777031,-0.00498477751253405,1.02900113151422,8.32442376556658e-06,0.0134121135066486 +"75",-0.0112130677252186,0.00741197715374095,0.00212385543291173,-0.0113549609930915,1.02460417942585,4.31924640614139e-05,0.00935579619247665 +"76",0.0930715006991473,-0.0333819786027404,-0.0595477762440921,0.099927274684875,1.00913250874033,0.00332791319763420,0.00956203582796243 +"77",0.258374140134625,-0.829664337768013,0.260277672696777,-0.891923025610985,0.940801592553066,0.253427268586742,0.072184775316909 +"78",0.0201137391624832,0.00511802169936869,-0.0302247355692123,0.0351651950880851,1.03492124975438,0.000414151601379732,0.0199317772916179 +"79",-0.0291697324770151,-0.0253000421302248,0.0496149304703508,-0.066901196199663,1.02629763225091,0.00149725630618711,0.0151375221664312 +"80",0.0554713255109026,-0.0315583903055274,-0.00924647291965288,0.0567755876508931,1.01637790839255,0.00107760417282862,0.007532000800996 +"81",0.0598325523209567,-0.0254534612214656,-0.0526316996401606,0.0690656990967064,1.03096051003461,0.00159606206744372,0.0189376955120401 +"82",-0.130721943769868,-0.00080283319787362,0.185815985318551,-0.206836950011059,1.01697275660796,0.0142164391892161,0.0257774232921598 +"83",-0.0343891918602564,0.0130405076148331,0.0248367198031264,-0.0375738755715726,1.02534272182497,0.000472689732338971,0.0116579793378601 +"84",-0.00719714667434395,0.00215555444346089,0.00705320893951802,-0.00880300147728805,1.03327522340919,2.59608348928299e-05,0.0175305259784465 +"85",0.152707788587754,-0.165398832014439,-0.0367349235518283,0.178462320358377,1.07134228269724,0.0106428536293457,0.059561122373118 +"86",-0.206355181999023,0.138035912378501,0.0813895812934558,-0.207722099046910,0.97858758172213,0.0142178843751192,0.0128735636130396 +"87",0.0115238465794995,0.133171191000712,-0.0486567648445861,0.177643503571488,0.992575074145864,0.0104469008602283,0.0131143375458935 +"88",-0.036567034378381,0.127954047912141,0.0540734054675645,0.166682231133931,1.00883320384338,0.00923424279711962,0.0173192836006609 +"89",0.063746383368059,-0.0913267396340142,0.0770359585152424,0.127255839430806,1.04242103768270,0.00541232594463775,0.0330453518821902 +"90",-0.00228409276152349,0.0455996233109926,0.126968096281215,0.170705190950118,0.997505831546696,0.00966060403472993,0.0137641167380622 +"91",0.20052766709692,-0.324075119967845,0.268581333367471,0.435148726168444,1.01413269267506,0.0623223928396501,0.0507621647937914 +"92",-0.0144301693099021,0.0247396646815441,-0.0196192548450324,-0.0322061032496542,1.08936144532071,0.000347465696964812,0.0682519640405402 +"93",-0.0124421866109771,-0.0168647798770595,0.146089739391446,0.152583147538054,1.07869911787854,0.00778627714602856,0.0637030729482148 +"94",0.123976574618603,-0.110891228423988,0.0110763256345898,0.138979283994013,1.00799102071031,0.00642586278675653,0.0137181879350601 +"95",-0.112025024477038,0.149760794802547,-0.289118635563677,-0.365485966762151,0.947896500908963,0.0434227194762412,0.0215702202951134 +"96",-0.0280790180606476,0.0208790559060022,0.138243082801098,0.149202684680706,1.05498572140356,0.00744004039609358,0.0446043996874069 +"97",-0.0491434392637465,0.110810878946811,0.0792597913612842,0.154963593406758,1.02650745828803,0.00800701680649535,0.0249299793934902 +"98",-0.0151252564180455,0.0365075953511099,0.0337360196337896,0.0579728851297259,1.03448772639739,0.00112505067443086,0.0209492860322901 +"99",-0.0734390345628697,0.158692730055703,0.150584026370608,0.250248107182785,1.00111386125692,0.0207139111317908,0.0240180001011766 +"100",-0.0482781680043051,0.153797230656578,0.103776698563887,0.224248820556090,0.988686060552207,0.0166037304892332,0.0170274868996110 +"101",0.0109271947810833,-0.0291631572870645,-0.0356287230442795,-0.0549494057320888,1.03156833268080,0.00101073347141661,0.0182572408533526 +"102",-0.0052913171204953,0.00564314527688611,0.0829773089499882,0.0925931394796417,1.03769598611167,0.00286767246629380,0.0263353356436558 +"103",-0.0019142878931617,0.00153926630941227,-0.0941922688782311,-0.106556046745712,1.0311286142873,0.00379446985525894,0.0226825616395567 +"104",-0.00148862092462863,-0.0138245657804799,-0.191438414749723,-0.223171165998545,0.996776973342068,0.0164760449555940,0.0193903170510785 +"105",0.00966177958983113,0.00116607098132037,0.0181112920135118,0.0301638688674026,1.02140050901087,0.000304639702719548,0.00778694180233196 +"106",0.0315684814728745,-0.108482958344396,-0.152381071115158,-0.230330695818575,0.980955576260676,0.0174789195035760,0.0156551957164238 +"107",0.0337691400381436,-0.00586032306850008,0.100136363317599,0.137502481734781,0.998958833885263,0.00627789718605291,0.0105461352341668 +"108",-0.0223879159243522,-0.00887539543039462,-0.0107395324821781,-0.047315967125388,1.01447723394760,0.000748488718152608,0.00544018761118260 +"109",-0.00039639912220184,-0.000847423239870689,0.00547939417686392,0.00571857262221388,1.09337122518171,1.09557214334998e-05,0.0714758092445992 +"110",-0.0422412892641729,-0.0222473988898062,-0.0797383401581377,-0.146770570182486,0.9788284045791,0.00711203136191794,0.00733136166121943 +"111",0.0161896093370143,-0.00786798777495383,0.0120178190015976,0.0263024786531442,1.02081258841188,0.000231655940733754,0.00695709616586619 +"112",0.0739827000233145,-0.0207487103439364,-0.00735700794582506,0.0857727455037498,0.99962397445499,0.00244766695593281,0.00530896159319476 +"113",-0.0290363600359079,-0.0169979050587900,0.00828936431437202,-0.0552141303332612,1.01258585483040,0.00101854139780442,0.00558756331383583 +"114",-0.0160134796997051,-0.00255634564522483,-0.00431770457436411,-0.0276751761421024,1.01816222978241,0.000256401998437516,0.00512472599576075 +"115",-0.00119948966500862,0.0764594792612198,0.0146007985999872,0.107449845190476,1.00952092680642,0.00384698064086267,0.0105959679841227 +"116",-0.108975508843172,0.0440034138622466,-0.0515504819215314,-0.156994099672491,0.961064652115311,0.00809133019577491,0.00603532534508569 +"117",-0.00471629006851029,-0.00832572123788222,-0.00124078095505737,-0.0169605606054581,1.02129741081381,9.6350063937219e-05,0.00659501217148171 +"118",0.0225827076367757,-0.00873096785287788,0.00793475931079856,0.0306672195063882,1.01862338589035,0.000314818615396243,0.00577443861992324 +"119",-0.00792489782165613,-0.0279782539261459,-0.0189846969640875,-0.0572547611077122,1.01668187377065,0.00109589877497995,0.00775169372943981 +"120",0.0202548699263408,0.0102355475586194,0.0613962206909748,0.0934725791086458,1.00963701243817,0.00291291662061268,0.0089916678662184 +"121",-0.0262399601892536,0.00222698008489494,-0.0182865250506655,-0.0482832186635534,1.01496457816243,0.00077943762285425,0.0057864151115724 +"122",-0.0182997841278133,0.000722203224204362,-0.0388265413181986,-0.0596558738500928,1.01767947763927,0.00118979778079808,0.00859080887894925 +"123",0.0194069400066233,-0.0207398754554714,0.04095599319344,0.0544193581430485,1.02893007614522,0.000991231063632729,0.0160293998582886 +"124",-0.0155593572776726,-0.00838735127656365,0.00394399082388105,-0.0289481583719494,1.01850080404318,0.000280527992165689,0.00549869266072661 +"125",0.0221557227452900,-0.0145730871219834,0.0253214426788931,0.0426981155407216,1.02142300526946,0.000610164530529988,0.00906137965273838 +"126",0.0118319576696572,-0.0100568729398275,0.00624033558081889,0.0160856428312143,1.02551448366005,8.66741261662376e-05,0.0103996198379157 +"127",-0.0321395699668872,0.0267819948499196,0.014423229419617,-0.0341396881914093,1.04326131791001,0.000390386924874457,0.0274786408359742 +"128",0.0285989342361548,-0.0298177018632094,0.0121485026749138,0.0378008087567259,1.03141110028124,0.000478505381781142,0.0169267190232155 +"129",-0.0034160111520063,0.00157949232447250,-0.0120091857644707,-0.0154307792136305,1.02802919764379,7.97630657664005e-05,0.0127283072465307 +"130",0.0737756478120542,-0.0370654429094918,0.0324750293677335,0.100933061361647,0.99780047340909,0.00338604958199346,0.00642804850670256 +"131",0.108754951347604,-0.0571593779161993,0.0446983546984707,0.145385826023819,0.973579500624454,0.00696787174457294,0.00651714212488823 +"132",-0.0643914580818968,-0.0438273759818789,0.0201789867980899,-0.128864375155871,0.97778654363498,0.00548353062736187,0.00573238287609896 +"133",0.0666371382773241,0.0370804928370407,-0.0289816536417227,0.121579336966890,0.982836724119,0.00488935797381418,0.00578738254812433 +"134",-0.0180153629484886,-0.00820755928661826,0.0106333754404035,-0.0303704719529812,1.01914050917616,0.000308773733780811,0.00610271796812220 +"135",0.0165835783878316,0.00742681636431894,-0.0153624339037495,0.0278544924768855,1.02167247104538,0.000259800821814743,0.00779334544816983 +"136",0.133381912880122,-0.0679416994412494,-0.0498231260500659,0.134454335646659,0.991190489998133,0.00599146913780161,0.00835152002145904 +"137",0.00968493022342275,-0.00141490032435052,-0.00463870794204135,0.0112310864538040,1.02115876246777,4.22537459612443e-05,0.00611639969808241 +"138",0.00408227515979403,-0.00125792733906052,-0.000424633830322186,0.00465860795086943,1.02067795631047,7.2705989655065e-06,0.00539962559756053 +"139",0.023936930292261,0.0295448092704238,-0.0258444395950622,0.0606384145468696,1.01695399000087,0.0012291377930033,0.00830722201805155 +"140",0.0401198075217554,0.0149329030991533,-0.00636661847646686,0.068751272474813,1.00680665258836,0.00157638551821612,0.00523487058337534 +"141",0.0204239236396401,0.0398456755975789,-0.00913370706130725,0.0720419956415017,1.01170940968221,0.00173253532978554,0.00725007053549223 +"142",-0.0471934585512789,0.00816281290094035,0.00808889924349126,-0.0567974476825012,1.01096699928543,0.00107737017227842,0.00517038161017289 +"143",0.0250429731472113,0.0232330548410895,0.0144730764495864,0.0693599077248783,1.00881883202547,0.00160512887141845,0.00590185682642882 +"144",0.0657120357154397,-0.0447192415887432,0.0352773359062732,0.0910315171876064,1.00751516274721,0.00276178437453593,0.007956326806033 +"145",-0.0244165358758519,0.0163106918426248,-0.00928534991712937,-0.0310756657729568,1.02112515269773,0.000323320406012404,0.00765774255916155 +"146",-0.0182675580077279,-0.00186119164460427,-0.0355865149056045,-0.0581352284310337,1.01686252821256,0.00112985308886524,0.007955502636324 +"147",0.0376568946756121,-0.00781374471000143,0.0415309555016348,0.0798111460946797,1.00804842427754,0.00212408430270099,0.0068466010530311 +"148",0.0181075486475426,-0.00308223383691712,0.00703683264178592,0.027641412553084,1.01849979242030,0.000255785443094714,0.0053531846956638 +"149",0.000192720538665721,0.00351542038884082,-0.000193658580844725,0.0048109501567653,1.02609816633136,7.7539611279836e-06,0.0106258337059000 +"150",0.0478532261186887,0.00862866408578177,0.0559691907396153,0.118854119284479,0.98872648491769,0.00468093201388435,0.0064284043348593 +"151",-0.0252333258845494,-0.0213289759697564,-0.014164374755904,-0.0672088870537804,1.00934500911891,0.00150741476623512,0.005826466656413 +"152",0.0272331651927534,-0.00084310207518153,0.00992899729660538,0.044130379241155,1.01482766258498,0.00065122024519556,0.00521508751663823 +"153",-0.00710225750097059,0.0547800957000137,0.0658354653216222,0.113283234815316,1.01169968870489,0.00427681394726673,0.0121764632741771 +"154",-0.00137114874332356,-0.00996160204445658,-0.0175416146612188,-0.0284904636773912,1.02455302555841,0.000271828003321492,0.0102743970506638 +"155",0.0150897038830873,-0.00066886378955213,0.00894556402575175,0.0269465064108386,1.01890456436025,0.000243101164460836,0.00556461366732775 +"156",0.0250198564312417,0.0142030126381514,0.0884188846610821,0.129887990514786,0.998314369115631,0.00560252035045689,0.00954948375236221 +"157",-0.0117713500928547,-0.00498714552900062,-0.0651512370994424,-0.0853341927912512,1.01844073667151,0.00243225711169109,0.0120887310456719 +"158",-0.000737700277807603,-0.00237957914788789,-0.00166570949934585,-0.00498101765088202,1.02300005557492,8.31181234324622e-06,0.00764557361580993 +"159",0.00538250490485724,-0.0431696908992776,-0.0203734016364133,-0.0634906949959914,1.02219572446932,0.00134818797601161,0.0118552532563707 +"160",0.0254479311000674,0.00578665223807041,0.0207357048330848,0.0562590973800298,1.01285277340804,0.00105746980120869,0.0058205004011486 +"161",-0.0209303804157823,-4.3463445094145e-05,-0.00149335930816134,-0.0305382166673249,1.01740595329996,0.000312136107001997,0.00496241443756517 +"162",-0.0014867824193137,-0.00392322798417002,-0.00331799824034857,-0.0089720508999125,1.02274214525389,2.69666343222625e-05,0.0075069439535672 +"163",7.26061922794288e-06,-0.0520633773009452,0.00109160815282481,-0.069139966023196,1.02057246263341,0.00159815785535862,0.0114378710427829 +"164",0.00453199152303707,-0.00290974867092287,0.00191784417738352,0.00593177909109767,1.02275546155223,1.17876236074739e-05,0.0074305057373094 +"165",-0.00394405413073981,0.0314136607490823,0.00343614949952352,0.0397773787755665,1.02748868691037,0.000529770923159111,0.0136430606545319 +"166",0.0206436266244243,-0.0141982337619373,0.00228717512634034,0.0229178333298728,1.02253516472144,0.000175902857524192,0.00811149887778098 +"167",0.00527656766322706,-0.00215669321081007,0.00667970147743282,0.0113790938696179,1.02305157525718,4.33756792876663e-05,0.0078918374470175 +"168",-0.0505478098841772,0.0452340311661172,-0.0077512455361395,-0.0579331625147743,1.02470364670241,0.00112296089867711,0.0130481518846423 +"169",-0.00695986154908324,0.00171541884221137,-0.00507107581828556,-0.0121760511184108,1.02109132687974,4.96622765910915e-05,0.00610553132510172 +"170",0.062861929478814,-0.052029950315618,0.000630807452854909,0.067820104153336,1.02175117135334,0.00153800127582792,0.0120431138025516 +"171",-0.111833792827027,0.062779828499438,-0.0458634576877706,-0.147960114172528,0.973822905622709,0.00721684713812082,0.00675050816702919 +"172",0.0360271434583016,0.00505260140390775,0.00304347155630414,0.0574626000624283,1.01025388390112,0.00110255372153265,0.00500505169093315 +"173",0.0329779774392598,-0.00604854785857935,-0.0307379116317049,0.0406672273701887,1.02599776385942,0.000553692110039628,0.0124593724411250 +"174",0.0116461966266407,-0.00330347658493743,-0.00496478328638618,0.0126057913759520,1.02143416163789,5.32295911835011e-05,0.00644460576436083 +"175",0.0837728721708517,-0.0450190551898796,-0.0478365330815143,0.086287517424793,1.01886375294753,0.00248695534435519,0.0124393678392461 +"176",0.0113127458639896,-0.00310019216517976,-0.00992120676377764,0.0133360454950070,1.02846589831976,5.95787404228755e-05,0.0130721374312924 +"177",-0.0128992801078122,-0.000622871914185776,0.00841338257948104,-0.0167899498374329,1.02133147434765,9.4421861824405e-05,0.00661331245445086 +"178",-0.0100535952712144,-0.0371491693211343,0.0216397739562489,-0.0555595982280932,1.02332334660155,0.00103280344127862,0.0117898017269195 +"179",0.0490750623168452,0.00871118624318054,-0.0559028004022577,0.0743650775631731,1.01983577609568,0.00184829763694874,0.0115947707300928 +"180",-0.016039401929543,0.000472696875570029,0.0174741327685587,-0.0220215979607427,1.02852773957093,0.000162437518695764,0.0134620015068775 +"181",0.0974803722847094,-0.00332169423941818,-0.0921880852562085,0.127604309431997,1.00224113094403,0.00541274555931894,0.0104167624268443 +"182",0.00283540140600358,7.41417462581428e-06,-0.00331151169106651,0.00404892422068045,1.03066121997825,5.49216486911482e-06,0.0149900115537686 +"183",0.00943572178222147,0.00130112550011255,-0.0110896481073098,0.0142075581658822,1.028145740768,6.76194077689675e-05,0.0127968888466790 +"184",0.00276054177122061,0.00102518738419683,-0.00186258564895357,0.00439644516952661,1.02172361465490,6.47535189411207e-06,0.00640250165990253 +"185",-0.0528427198928091,0.0145130230875262,0.0423948478486204,-0.0606951101301077,1.02169764368166,0.00123214499041157,0.0112087908639513 +"186",0.00654559057872878,-0.000166297105310674,-0.000658667434868777,0.00882759321615085,1.02006924346754,2.61046040255853e-05,0.0049805568298691 +"187",0.135288478696973,-0.0150581670966123,-0.199635669627369,0.214793545557743,1.03930345379866,0.0153694754032909,0.0395579521552196 +"188",-0.00179627102161618,-0.0201086800333105,-0.0290838500824012,-0.0504102311603701,1.02172797996276,0.00085027249678487,0.0101013356976456 +"189",0.0228633288517162,-0.0119382788968720,0.00558263289324817,0.0279523722959418,1.01978078469251,0.000261598012166095,0.00631616199687159 +"190",0.0333739436992553,-0.0218923098588630,-0.00415781766913389,0.0342351998620461,1.02205129344620,0.000392391037180782,0.00868631169196707 +"191",-0.00598745902668872,0.009270210460352,-0.141775840861681,-0.159599384986038,1.02324167023042,0.00848824871967303,0.0235442767251173 +"192",-0.00647340381072984,0.00352793059889733,-0.000765260037889968,-0.00738490537584023,1.02171628389643,1.82699833003344e-05,0.0064761654437429 +"193",0.00743548784051025,0.000288068693556639,-0.00342475695480026,0.00967141757633376,1.02075508564530,3.13336417085302e-05,0.00566203542473931 +"194",-0.0144546759000131,-0.00298053500839273,-0.00591640830574529,-0.0270368327058704,1.01848655596354,0.000244723765667750,0.00527731830844482 +"195",-0.0480337598360777,0.0134066510273543,0.0144409902616019,-0.0528301832345938,1.01375391284357,0.000932782405131919,0.00578673053255762 +"196",0.0384875637713533,-0.019961709524301,-0.0340041611808522,0.0445714555392936,1.04111051504826,0.000665298900313244,0.0259607726985618 +"197",-0.0757826400189407,0.0248334483605990,0.0554728220573406,-0.0839920249552144,1.01620839515522,0.00235569756564353,0.0107381193135285 +"198",0.194612154018817,-0.108753164358864,-0.212800868866529,0.25277452544073,1.06894202002771,0.0213047462814089,0.0636485399634325 +"199",0.107922203693597,-0.147962133506614,0.071859357010609,0.172622448016845,1.04908953269907,0.00994896869574054,0.0421405764825622 +"200",-0.27412328503003,0.552251251650036,-0.566037344031052,-0.799663997319448,1.00482525547578,0.207159157926247,0.0864330668425508 +"201",-0.161321721103076,0.105000709326207,0.0730049656151564,-0.163234829320064,0.999692268982916,0.00884049069150734,0.0136079407019335 +"202",0.0324754262532597,-0.000909627767790876,-0.0412732756994127,0.047832636682972,1.03370893954323,0.000766062268694792,0.0195808581702544 diff --git a/statsmodels/stats/tests/results/influence_measures_bool_R.csv b/statsmodels/stats/tests/results/influence_measures_bool_R.csv new file mode 100644 index 0000000..a9b14bc --- /dev/null +++ b/statsmodels/stats/tests/results/influence_measures_bool_R.csv @@ -0,0 +1,203 @@ +"","dfb.1_","dfb.ggdp","dfb.lint","dffit","cov.r","cook.d","hat" +"1",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"2",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"3",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"4",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"5",FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE +"6",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"7",FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE +"8",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"9",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"10",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"11",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"12",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"13",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"14",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"15",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"16",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"17",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"18",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"19",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"20",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"21",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"22",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"23",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"24",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"25",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"26",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"27",FALSE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE +"28",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"29",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"30",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"31",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"32",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"33",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"34",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"35",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"36",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"37",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"38",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"39",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"40",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"41",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"42",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"43",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"44",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"45",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"46",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"47",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"48",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"49",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"50",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"51",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"52",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"53",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"54",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"55",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"56",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"57",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"58",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"59",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"60",FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE +"61",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"62",FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE +"63",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,TRUE +"64",FALSE,FALSE,FALSE,TRUE,TRUE,FALSE,FALSE +"65",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"66",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"67",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"68",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"69",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"70",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"71",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"72",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"73",FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE +"74",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"75",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"76",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"77",FALSE,FALSE,FALSE,TRUE,TRUE,FALSE,TRUE +"78",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"79",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"80",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"81",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"82",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"83",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"84",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"85",FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE +"86",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"87",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"88",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"89",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"90",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"91",FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE +"92",FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE +"93",FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE +"94",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"95",FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE +"96",FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE +"97",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"98",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"99",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"100",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"101",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"102",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"103",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"104",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"105",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"106",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"107",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"108",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"109",FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE +"110",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"111",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"112",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"113",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"114",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"115",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"116",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"117",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"118",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"119",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"120",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"121",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"122",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"123",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"124",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"125",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"126",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"127",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"128",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"129",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"130",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"131",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"132",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"133",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"134",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"135",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"136",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"137",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"138",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"139",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"140",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"141",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"142",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"143",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"144",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"145",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"146",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"147",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"148",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"149",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"150",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"151",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"152",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"153",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"154",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"155",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"156",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"157",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"158",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"159",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"160",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"161",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"162",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"163",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"164",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"165",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"166",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"167",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"168",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"169",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"170",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"171",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"172",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"173",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"174",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"175",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"176",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"177",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"178",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"179",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"180",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"181",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"182",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"183",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"184",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"185",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"186",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"187",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"188",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"189",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"190",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"191",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"192",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"193",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"194",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"195",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"196",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"197",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"198",FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,TRUE +"199",FALSE,FALSE,FALSE,FALSE,TRUE,FALSE,FALSE +"200",FALSE,FALSE,FALSE,TRUE,FALSE,FALSE,TRUE +"201",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE +"202",FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE diff --git a/statsmodels/stats/tests/results/results_influence_logit.csv b/statsmodels/stats/tests/results/results_influence_logit.csv new file mode 100644 index 0000000..eb4e37d --- /dev/null +++ b/statsmodels/stats/tests/results/results_influence_logit.csv @@ -0,0 +1,40 @@ +Case,LogRate,LogVolumne,resid_pearson,resid_deviance,hat_matrix_diagonal,dfb_intercept,dfb_lograte,dfb_logvolumne,Cooks C,Cooks Cbar,d_deviance,d_pearson_chi2 +1,-0.1924,1.3083,0.2205,0.3082,0.0927,-0.0165,0.0193,0.0556,0.00548,0.00497,0.1,0.0536 +2,0.0862,1.2528,0.1349,0.1899,0.0429,-0.0134,0.0151,0.0261,0.000853,0.000816,0.0369,0.019 +3,0.9163,0.2231,0.2923,0.4049,0.0612,-0.0492,0.066,0.0589,0.00593,0.00557,0.1695,0.091 +4,0.4055,-0.2877,3.5181,2.2775,0.0867,1.0734,-0.9302,-1.018,1.2873,1.1756,6.3626,13.5523 +5,1.1632,-0.2231,0.5287,0.7021,0.1158,-0.0832,0.1411,0.0583,0.0414,0.0366,0.5296,0.3161 +6,1.2528,-0.3567,0.609,0.7943,0.1524,-0.0922,0.171,0.0381,0.0787,0.0667,0.6976,0.4376 +7,-0.2877,-0.5108,-0.0328,-0.0464,0.00761,-0.0028,0.00274,0.00265,8.321e-06,8.258e-06,0.00216,0.00109 +8,0.5306,0.0953,-1.0196,-1.1939,0.0559,-0.1444,0.0613,0.057,0.0652,0.0616,1.487,1.1011 +9,-0.2877,-0.1054,-0.0938,-0.1323,0.0342,-0.0178,0.0173,0.0153,0.000322,0.000311,0.0178,0.00911 +10,-0.7985,-0.1054,-0.0293,-0.0414,0.00721,-0.00245,0.00246,0.00211,6.256e-06,6.211e-06,0.00172,0.000862 +11,-0.5621,-0.2231,-0.037,-0.0523,0.00969,-0.00361,0.00358,0.00319,1.4e-05,1.3e-05,0.00274,0.00138 +12,1.0116,-0.5978,-0.5073,-0.6768,0.1481,-0.1173,0.0647,0.1651,0.0525,0.0447,0.5028,0.3021 +13,1.0986,-0.5108,-0.7751,-0.97,0.1628,-0.0931,-0.00946,0.1775,0.1395,0.1168,1.0577,0.7175 +14,0.8459,0.3365,0.2559,0.3562,0.0551,-0.0414,0.0538,0.0527,0.00404,0.00382,0.1307,0.0693 +15,1.3218,-0.2877,0.4352,0.589,0.1336,-0.094,0.1408,0.0643,0.0337,0.0292,0.3761,0.2186 +16,0.4947,0.8329,0.1576,0.2215,0.0402,-0.0198,0.0234,0.0307,0.00108,0.00104,0.0501,0.0259 +17,0.47,1.1632,0.0709,0.1001,0.0172,-0.0063,0.00701,0.00914,8.9e-05,8.8e-05,0.0101,0.00511 +18,0.3471,-0.1625,2.9062,2.1192,0.0954,0.9595,-0.8279,-0.8477,0.9845,0.8906,5.3817,9.3363 +19,0.0583,0.5306,-1.0718,-1.2368,0.1315,-0.2591,0.2024,-0.00488,0.2003,0.174,1.7037,1.3227 +20,0.5878,0.5878,0.2405,0.3353,0.0525,-0.0331,0.0421,0.0518,0.00338,0.0032,0.1156,0.061 +21,0.6931,-0.9163,-0.1076,-0.1517,0.0373,-0.018,0.0158,0.0208,0.000465,0.000448,0.0235,0.012 +22,0.3075,-0.0513,-0.4193,-0.5691,0.1015,-0.1449,0.1237,0.1179,0.0221,0.0199,0.3437,0.1956 +23,0.3001,0.3001,-1.0242,-1.1978,0.0761,-0.1961,0.1275,0.0357,0.0935,0.0864,1.5212,1.1355 +24,0.3075,0.4055,-1.3684,-1.4527,0.0717,-0.1281,0.041,-0.1004,0.1558,0.1447,2.255,2.0171 +25,0.5766,0.47,0.3347,0.4608,0.0587,-0.0403,0.057,0.0708,0.00741,0.00698,0.2193,0.119 +26,0.4055,-0.5108,-0.1595,-0.2241,0.0548,-0.0366,0.0329,0.0373,0.00156,0.00147,0.0517,0.0269 +27,0.4055,0.5878,0.3645,0.4995,0.0661,-0.0327,0.0496,0.0788,0.0101,0.00941,0.2589,0.1423 +28,0.6419,-0.0513,-0.8989,-1.0883,0.0647,-0.1423,0.0617,0.1025,0.0597,0.0559,1.2404,0.8639 +29,-0.0513,0.6419,0.8981,1.0876,0.1682,0.2367,-0.195,0.0286,0.1961,0.1631,1.346,0.9697 +30,-0.9163,0.47,-0.0992,-0.14,0.0507,-0.0224,0.0227,0.0159,0.000554,0.000526,0.0201,0.0104 +31,-0.2877,0.9933,0.6198,0.8064,0.2459,0.1165,-0.0996,0.1322,0.1661,0.1253,0.7755,0.5095 +32,-3.5066,0.8544,-0.00073,-0.00103,2.2e-05,-3.22e-06,3.405e-06,2.48e-06,1.18e-11,1.18e-11,1.065e-06,5.324e-07 +33,0.6043,0.0953,-1.2062,-1.3402,0.051,-0.0882,-0.0137,-0.00216,0.0824,0.0782,1.8744,1.5331 +34,0.7885,0.0953,0.5447,0.7209,0.0601,-0.0425,0.0877,0.0671,0.0202,0.019,0.5387,0.3157 +35,0.6931,0.1823,0.5404,0.7159,0.0552,-0.034,0.0755,0.0711,0.018,0.017,0.5295,0.3091 +36,1.203,-0.2231,0.4828,0.6473,0.1177,-0.0867,0.1381,0.0631,0.0352,0.0311,0.4501,0.2641 +37,0.6419,-0.0513,-0.8989,-1.0883,0.0647,-0.1423,0.0617,0.1025,0.0597,0.0559,1.2404,0.8639 +38,0.6419,-0.2877,-0.4874,-0.6529,0.1,-0.1395,0.1032,0.1397,0.0293,0.0264,0.4526,0.2639 +39,0.4855,0.2624,0.7053,0.8987,0.0531,0.0326,0.019,0.0489,0.0295,0.0279,0.8355,0.5254 diff --git a/statsmodels/stats/tests/results/results_multinomial_proportions.py b/statsmodels/stats/tests/results/results_multinomial_proportions.py new file mode 100644 index 0000000..c0f0cb8 --- /dev/null +++ b/statsmodels/stats/tests/results/results_multinomial_proportions.py @@ -0,0 +1,79 @@ +# -*- coding: utf-8 -*- +"""Test values for multinomial_proportion_confint. + +Author: Sébastien Lerique +""" + + +import collections +import numpy as np + +from statsmodels.tools.testing import Holder + +res_multinomial = collections.defaultdict(Holder) + +# The following examples come from the Sison & Glaz paper, and the values were +# computed using the R MultinomialCI package. + +# Floating-point arithmetic errors get blown up in the Edgeworth expansion +# (starting in g1 and g2, but mostly when computing f, because of the +# polynomials), which explains why we only obtain a precision of 4 decimals +# when comparing to values computed in R. + +# We test with any method name that starts with 'sison', as that is the +# criterion. +key1 = ('sison', 'Sison-Glaz example 1') +res_multinomial[key1].proportions = [56, 72, 73, 59, 62, 87, 58] +res_multinomial[key1].cis = np.array([ + [.07922912, .1643361], [.11349036, .1985973], + [.11563169, .2007386], [.08565310, .1707601], + [.09207709, .1771840], [.14561028, .2307172], + [.08351178, .1686187]]) +res_multinomial[key1].precision = 4 + +key2 = ('sisonandglaz', 'Sison-Glaz example 2') +res_multinomial[key2].proportions = [5] * 50 +res_multinomial[key2].cis = [0, .05304026] * np.ones((50, 2)) +res_multinomial[key2].precision = 4 + +key3 = ('sison-whatever', 'Sison-Glaz example 3') +res_multinomial[key3].proportions = ( + [1] * 10 + [12] * 10 + [5] * 10 + [3] * 10 + [4] * 10) +res_multinomial[key3].cis = np.concatenate([ + [0, .04120118] * np.ones((10, 2)), + [.012, .08520118] * np.ones((10, 2)), + [0, .05720118] * np.ones((10, 2)), + [0, .04920118] * np.ones((10, 2)), + [0, .05320118] * np.ones((10, 2)) +]) +res_multinomial[key3].precision = 4 + +# The examples from the Sison & Glaz paper only include 3 decimals. +gkey1 = ('goodman', 'Sison-Glaz example 1') +res_multinomial[gkey1].proportions = [56, 72, 73, 59, 62, 87, 58] +res_multinomial[gkey1].cis = np.array([ + [.085, .166], + [.115, .204], + [.116, .207], + [.091, .173], + [.096, .181], + [.143, .239], + [.089, .171]]) +res_multinomial[gkey1].precision = 3 + +gkey2 = ('goodman', 'Sison-Glaz example 2') +res_multinomial[gkey2].proportions = [5] * 50 +res_multinomial[gkey2].cis = [.005, .075] * np.ones((50, 2)) +res_multinomial[gkey2].precision = 3 + +gkey3 = ('goodman', 'Sison-Glaz example 3') +res_multinomial[gkey3].proportions = ( + [1] * 10 + [12] * 10 + [5] * 10 + [3] * 10 + [4] * 10) +res_multinomial[gkey3].cis = np.concatenate([ + [0, .049] * np.ones((10, 2)), + [.019, .114] * np.ones((10, 2)), + [.005, .075] * np.ones((10, 2)), + [.002, .062] * np.ones((10, 2)), + [.004, .069] * np.ones((10, 2)) +]) +res_multinomial[gkey3].precision = 3 diff --git a/statsmodels/stats/tests/results/results_panelrobust.py b/statsmodels/stats/tests/results/results_panelrobust.py new file mode 100644 index 0000000..c14cf2b --- /dev/null +++ b/statsmodels/stats/tests/results/results_panelrobust.py @@ -0,0 +1,91 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + +cov_clu_stata = np.array([ + .00025262993207, + -.00065043385106, + .20961897960949, + -.00065043385106, + .00721940994738, + -1.2171040967615, + .20961897960949, + -1.2171040967615, + 417.18890043724]).reshape(3, 3) + +cov_pnw0_stata = np.array([ + .00004638910396, + -.00006781406833, + -.00501232990882, + -.00006781406833, + .00238784043122, + -.49683062350622, + -.00501232990882, + -.49683062350622, + 133.97367476797]).reshape(3, 3) + +cov_pnw1_stata = np.array([ + .00007381482253, + -.00009936717692, + -.00613513582975, + -.00009936717692, + .00341979122583, + -.70768252183061, + -.00613513582975, + -.70768252183061, + 197.31345000598]).reshape(3, 3) + +cov_pnw4_stata = np.array([ + .0001305958131, + -.00022910455176, + .00889686530849, + -.00022910455176, + .00468152667913, + -.88403667445531, + .00889686530849, + -.88403667445531, + 261.76140136858]).reshape(3, 3) + +cov_dk0_stata = np.array([ + .00005883478135, + -.00011241470772, + -.01670183921469, + -.00011241470772, + .00140649264687, + -.29263014921586, + -.01670183921469, + -.29263014921586, + 99.248049966902]).reshape(3, 3) + +cov_dk1_stata = np.array([ + .00009855800275, + -.00018443722054, + -.03257408922788, + -.00018443722054, + .00205106413403, + -.3943459697384, + -.03257408922788, + -.3943459697384, + 140.50692606398]).reshape(3, 3) + +cov_dk4_stata = np.array([ + .00018052657317, + -.00035661054613, + -.06728261073866, + -.00035661054613, + .0024312795189, + -.32394785247278, + -.06728261073866, + -.32394785247278, + 148.60456447156]).reshape(3, 3) + + +results = Bunch( + cov_clu_stata=cov_clu_stata, + cov_pnw0_stata=cov_pnw0_stata, + cov_pnw1_stata=cov_pnw1_stata, + cov_pnw4_stata=cov_pnw4_stata, + cov_dk0_stata=cov_dk0_stata, + cov_dk1_stata=cov_dk1_stata, + cov_dk4_stata=cov_dk4_stata +) diff --git a/statsmodels/stats/tests/results/results_power.py b/statsmodels/stats/tests/results/results_power.py new file mode 100644 index 0000000..2607e6d --- /dev/null +++ b/statsmodels/stats/tests/results/results_power.py @@ -0,0 +1,127 @@ +# -*- coding: utf-8 -*- +""" + +Created on Thu Feb 28 13:23:09 2013 + +Author: Josef Perktold +""" + +import collections + +from statsmodels.tools.testing import Holder + + +# numbers from R package `pwr` pwr.chisq.test +pwr_chisquare = collections.defaultdict(Holder) +pwr_chisquare[0].w = 1e-04 +pwr_chisquare[0].N = 5 +pwr_chisquare[0].df = 4 +pwr_chisquare[0].sig_level = 0.05 +pwr_chisquare[0].power = 0.05000000244872708 +pwr_chisquare[0].method = 'Chi squared power calculation' +pwr_chisquare[0].note = 'N is the number of observations' +pwr_chisquare[1].w = 0.005 +pwr_chisquare[1].N = 5 +pwr_chisquare[1].df = 4 +pwr_chisquare[1].sig_level = 0.05 +pwr_chisquare[1].power = 0.05000612192891004 +pwr_chisquare[1].method = 'Chi squared power calculation' +pwr_chisquare[1].note = 'N is the number of observations' +pwr_chisquare[2].w = 0.1 +pwr_chisquare[2].N = 5 +pwr_chisquare[2].df = 4 +pwr_chisquare[2].sig_level = 0.05 +pwr_chisquare[2].power = 0.05246644635810126 +pwr_chisquare[2].method = 'Chi squared power calculation' +pwr_chisquare[2].note = 'N is the number of observations' +pwr_chisquare[3].w = 1 +pwr_chisquare[3].N = 5 +pwr_chisquare[3].df = 4 +pwr_chisquare[3].sig_level = 0.05 +pwr_chisquare[3].power = 0.396188517504065 +pwr_chisquare[3].method = 'Chi squared power calculation' +pwr_chisquare[3].note = 'N is the number of observations' +pwr_chisquare[4].w = 1e-04 +pwr_chisquare[4].N = 100 +pwr_chisquare[4].df = 4 +pwr_chisquare[4].sig_level = 0.05 +pwr_chisquare[4].power = 0.05000004897454883 +pwr_chisquare[4].method = 'Chi squared power calculation' +pwr_chisquare[4].note = 'N is the number of observations' +pwr_chisquare[5].w = 0.005 +pwr_chisquare[5].N = 100 +pwr_chisquare[5].df = 4 +pwr_chisquare[5].sig_level = 0.05 +pwr_chisquare[5].power = 0.05012248082672883 +pwr_chisquare[5].method = 'Chi squared power calculation' +pwr_chisquare[5].note = 'N is the number of observations' +pwr_chisquare[6].w = 0.1 +pwr_chisquare[6].N = 100 +pwr_chisquare[6].df = 4 +pwr_chisquare[6].sig_level = 0.05 +pwr_chisquare[6].power = 0.1054845044462312 +pwr_chisquare[6].method = 'Chi squared power calculation' +pwr_chisquare[6].note = 'N is the number of observations' +pwr_chisquare[7].w = 1 +pwr_chisquare[7].N = 100 +pwr_chisquare[7].df = 4 +pwr_chisquare[7].sig_level = 0.05 +pwr_chisquare[7].power = 0.999999999999644 +pwr_chisquare[7].method = 'Chi squared power calculation' +pwr_chisquare[7].note = 'N is the number of observations' +pwr_chisquare[8].w = 1e-04 +pwr_chisquare[8].N = 1000 +pwr_chisquare[8].df = 4 +pwr_chisquare[8].sig_level = 0.05 +pwr_chisquare[8].power = 0.0500004897461283 +pwr_chisquare[8].method = 'Chi squared power calculation' +pwr_chisquare[8].note = 'N is the number of observations' +pwr_chisquare[9].w = 0.005 +pwr_chisquare[9].N = 1000 +pwr_chisquare[9].df = 4 +pwr_chisquare[9].sig_level = 0.05 +pwr_chisquare[9].power = 0.0512288025485101 +pwr_chisquare[9].method = 'Chi squared power calculation' +pwr_chisquare[9].note = 'N is the number of observations' +pwr_chisquare[10].w = 0.1 +pwr_chisquare[10].N = 1000 +pwr_chisquare[10].df = 4 +pwr_chisquare[10].sig_level = 0.05 +pwr_chisquare[10].power = 0.715986350467412 +pwr_chisquare[10].method = 'Chi squared power calculation' +pwr_chisquare[10].note = 'N is the number of observations' +pwr_chisquare[11].w = 1 +pwr_chisquare[11].N = 1000 +pwr_chisquare[11].df = 4 +pwr_chisquare[11].sig_level = 0.05 +pwr_chisquare[11].power = 1 +pwr_chisquare[11].method = 'Chi squared power calculation' +pwr_chisquare[11].note = 'N is the number of observations' +pwr_chisquare[12].w = 1e-04 +pwr_chisquare[12].N = 30000 +pwr_chisquare[12].df = 4 +pwr_chisquare[12].sig_level = 0.05 +pwr_chisquare[12].power = 0.05001469300301765 +pwr_chisquare[12].method = 'Chi squared power calculation' +pwr_chisquare[12].note = 'N is the number of observations' +pwr_chisquare[13].w = 0.005 +pwr_chisquare[13].N = 30000 +pwr_chisquare[13].df = 4 +pwr_chisquare[13].sig_level = 0.05 +pwr_chisquare[13].power = 0.0904799545200348 +pwr_chisquare[13].method = 'Chi squared power calculation' +pwr_chisquare[13].note = 'N is the number of observations' +pwr_chisquare[14].w = 0.1 +pwr_chisquare[14].N = 30000 +pwr_chisquare[14].df = 4 +pwr_chisquare[14].sig_level = 0.05 +pwr_chisquare[14].power = 1 +pwr_chisquare[14].method = 'Chi squared power calculation' +pwr_chisquare[14].note = 'N is the number of observations' +pwr_chisquare[15].w = 1 +pwr_chisquare[15].N = 30000 +pwr_chisquare[15].df = 4 +pwr_chisquare[15].sig_level = 0.05 +pwr_chisquare[15].power = 1 +pwr_chisquare[15].method = 'Chi squared power calculation' +pwr_chisquare[15].note = 'N is the number of observations' diff --git a/statsmodels/stats/tests/results/results_proportion.py b/statsmodels/stats/tests/results/results_proportion.py new file mode 100644 index 0000000..0072f52 --- /dev/null +++ b/statsmodels/stats/tests/results/results_proportion.py @@ -0,0 +1,124 @@ +# -*- coding: utf-8 -*- +""" + +Created on Fri Mar 01 14:48:59 2013 + +Author: Josef Perktold +""" + +import collections +import numpy as np + +from statsmodels.tools.testing import Holder + +# numbers from R package `pwr` pwr.chisq.test +res_binom = collections.defaultdict(Holder) +res_binom_methods = ["agresti-coull", "asymptotic", "bayes", "cloglog", + "exact", "logit", "probit", "profile", "lrt", "prop.test", + "wilson"] + + +# > bci = binom.confint(x = c(18), n = 20, tol = 1e-8) +# > mkarray2(bci$lower, "res_binom[(18, 20)].ci_low") +res_binom[(18, 20)].ci_low = np.array([ + 0.6867561125596077, 0.768521618913513, 0.716146742695748, + 0.656030707261567, 0.6830172859809176, 0.676197991611287, + 0.7027685414174645, 0.722052946372325, 0.7220576251734515, + 0.668722403162941, 0.6989663547715128 + ]) +# > mkarray2(bci$upper, "res_binom[(18, 20)].ci_upp") +res_binom[(18, 20)].ci_upp = np.array([ + 0.984343760998137, 1.031478381086487, 0.97862751197755, + 0.974010174395775, 0.9876514728297052, 0.974866415649319, + 0.978858461808406, 0.982318186566456, 0.982639913376776, + 0.982487361226571, 0.972133518786232 + ]) +# > +# > bci = binom.confint(x = c(4), n = 20, tol = 1e-8) +# > mkarray2(bci$lower, "res_binom[(4, 20)].ci_low") +res_binom[(4, 20)].ci_low = np.array([ + 0.0749115102767071, 0.0246954918846837, 0.07152005247873425, + 0.0623757232566298, 0.05733399705003284, 0.0771334546771001, + 0.0710801045992076, 0.0668624655835687, 0.0668375191189685, + 0.0661062308910436, 0.0806576625797981 + ]) +# > mkarray2(bci$upper, "res_binom[(4, 20)].ci_upp") +res_binom[(4, 20)].ci_upp = np.array([ + 0.4217635845549845, 0.3753045081153163, 0.4082257625169254, + 0.393143902056907, 0.436614002996668, 0.427846901518118, + 0.4147088121599544, 0.405367872119342, 0.405364309586823, + 0.442686245059445, 0.4160174322518935 + ]) +# > +# > bci = binom.confint(x = c(4), n = 200, tol = 1e-8) +# > mkarray2(bci$lower, "res_binom[(4, 200)].ci_low") +res_binom[(4, 200)].ci_low = np.array([ + 0.005991954548218395, 0.000597346459104517, 0.00678759879519299, + 0.006650668467968445, 0.005475565879556443, 0.00752663882411158, + 0.00705442514086136, 0.00625387073493174, 0.00625223049303646, + 0.00642601313670221, 0.00780442641634947 + ]) +# > mkarray2(bci$upper, "res_binom[(4, 200)].ci_upp") +res_binom[(4, 200)].ci_upp = np.array([ + 0.0520995587739575, 0.0394026535408955, 0.0468465669668423, + 0.04722535678688564, 0.05041360908989634, 0.05206026227201098, + 0.04916362085874019, 0.04585048214247203, 0.0458490848884339, + 0.0537574613520185, 0.05028708690582643 + ]) +# > bci = binom.confint(x = c(190), n = 200, tol = 1e-8) +# Warning message: +# In binom.bayes(x, n, conf.level = conf.level, ...) : +# 1 confidence interval failed to converge (marked by '*'). +# Try changing 'tol' to a different value. +# JP: I replace 0.02094150654714356 by np.nan in Bayes +# > mkarray2(bci$lower, "res_binom[(190, 200)].ci_low") +res_binom[(190, 200)].ci_low = np.array([ + 0.909307307911624, 0.919794926420966, np.nan, + 0.909066091776046, 0.9099724622986486, 0.9095820742314172, + 0.9118101288857796, 0.913954651984184, 0.913956305842353, + 0.9073089225133698, 0.910421851861224 + ]) +# > mkarray2(bci$upper, "res_binom[(190, 200)].ci_upp") +res_binom[(190, 200)].ci_upp = np.array([ + 0.973731898348837, 0.980205073579034, 1, 0.972780587302479, + 0.975765834527891, 0.9728891271086528, 0.973671370402242, + 0.974623779100809, 0.974626983311416, 0.974392083257476, + 0.972617354399236 + ]) + +# > bci = binom.confint(x = c(1), n = 30, tol = 1e-8) +res_binom[(1, 30)].ci_low = np.array([ + -8.305484e-03, -3.090070e-02, 6.903016e-05, 2.494567e-03, + 8.435709e-04, 4.675346e-03, 3.475014e-03, 3.012987e-03, + 1.932430e-03, 1.742467e-03, 5.908590e-03]) + +res_binom[(1, 30)].ci_upp = np.array([ + 0.18091798, 0.09756737, 0.12314380, 0.14513807, + 0.17216946, 0.20200244, 0.16637241, 0.13868254, + 0.13868375, 0.19053022, 0.16670391]) + +# > bci = binom.confint(x = c(29), n = 30, tol = 1e-8) +res_binom[(29, 30)].ci_low = np.array([ + 0.8190820, 0.9024326, 0.8768562, 0.7860836, + 0.8278305, 0.7979976, 0.8336276, 0.8613175, + 0.8613162, 0.8094698, 0.8332961]) +res_binom[(29, 30)].ci_upp = np.array([ + 1.0083055, 1.0309007, 0.9999310, 0.9952363, + 0.9991564, 0.9953247, 0.9965250, 0.9969870, + 0.9980676, 0.9982575, 0.9940914]) + +# > bci = binom.confint(x = c(0), n = 30, tol = 1e-8) +# Note: this ci_low clips one negative value to 0 +res_binom[(0, 30)].ci_low = np.zeros(11) +res_binom[(0, 30)].ci_upp = np.array([ + 0.13471170, 0.00000000, 0.06151672, 0.11570331, + 0.11570331, 0.11570331, 0.11570331, 0.10402893, + 0.06201781, 0.14132048, 0.11351339]) + +# > bci = binom.confint(x = c(30), n = 30, tol = 1e-8) +res_binom[(30, 30)].ci_low = np.array([ + 0.8652883, 1.0000000, 0.9384833, 0.8842967, + 0.8842967, 0.8842967, 0.8842967, 0.8959711, + 0.9379822, 0.8586795, 0.8864866]) +# Note: this ci_upp clips one value > 1 +res_binom[(30, 30)].ci_upp = np.ones(11) diff --git a/statsmodels/stats/tests/results/wspec1.csv b/statsmodels/stats/tests/results/wspec1.csv new file mode 100644 index 0000000..4ba1af4 --- /dev/null +++ b/statsmodels/stats/tests/results/wspec1.csv @@ -0,0 +1,36 @@ +IV1,IV2,DV +-0.02015,-8.12,-0.00262 +-0.09145,22.6,0.06002 +-0.23417,34.14,0.28942 +-0.11179,-24.21,-0.01991 +0.16144,-14.37,-0.11282 +0.15733,-10.98,-0.15465 +0.05293,-0.61,-0.09055 +0.05686,-3.38,-0.01311 +-0.11524,18.48,0.01793 +0.10973,-12.93,-0.02117 +0.11152,-9.32,-0.08318 +0.05917,5.86,-0.01982 +-0.00468,-6.67,0.03378 +-0.15653,25.27,0.10565 +0.115,-2.55,0.0483 +0.12352,-22.48,-0.07733 +-0.03604,3.69,0.07183 +0.05634,-6.19,-0.05512 +-0.00401,2.25,0.01318 +0.10524,-3.73,-0.00379 +0.02288,1.5,0.00922 +0.05646,-3.48,-0.02355 +0.09566,3.33,-0.06103 +0.01535,1.1,-0.0343 +0.0435,-4.41,-0.02346 +-0.00534,0,-0.05993 +0.04721,9.22,-0.00264 +0.01321,-3.86,-0.02038 +-0.00353,-3.54,-0.00693 +-0.07728,21.89,0.04091 +0.0572,-16.35,0.00791 +0.00372,3.75,0.10267 +0.02087,-2.38,-0.04426 +0.03918,-7.62,-0.05083 +0.03597,4.37,0.01428 diff --git a/statsmodels/stats/tests/results/wspec2.csv b/statsmodels/stats/tests/results/wspec2.csv new file mode 100644 index 0000000..a122bc1 --- /dev/null +++ b/statsmodels/stats/tests/results/wspec2.csv @@ -0,0 +1,36 @@ +IV1,IV2,IV3,DV +144.6,0.02846,2.28,-0.00262 +30,0.15082,2.768,0.06002 +-293.1,0.58902,3.323,0.28942 +-166,0.01642,-5.012,-0.01991 +-43.5,-0.23772,-1.471,-0.11282 +43.7,-0.42052,1.129,-0.15465 +182.4,-0.2129,1.837,-0.09055 +114.6,-0.22211,1.686,-0.01311 +207.5,0.02502,0.344,0.01793 +169.1,0.10521,-0.077,-0.02117 +172.5,-0.07982,0.637,-0.08318 +8.2,-0.08353,1.765,-0.01982 +222.5,-0.02544,2.345,0.03378 +126.2,0.28108,2.524,0.10565 +198.2,0.18466,1.465,0.0483 +188.6,-0.09714,1.014,-0.07733 +148,0.01393,1.279,0.07183 +106,-0.04318,0.482,-0.05512 +69.4,-0.14695,1.033,0.01318 +178.1,-0.07366,1.528,-0.00379 +66,0.02879,0.93,0.00922 +207.9,0.01782,-0.271,-0.02355 +250.6,-0.06627,1.253,-0.06103 +31.4,-0.114,0.906,-0.0343 +289.6,-0.08656,1.491,-0.02346 +301.4,0.01026,1.099,-0.05993 +113.6,0.12251,0.612,-0.00264 +138.8,0.05026,-0.418,-0.02038 +218.5,0,-1.507,-0.00693 +134.5,0.12344,1.373,0.04091 +59.5,0.05136,0.881,0.00791 +38,0.10883,0.212,0.10267 +212.8,-0.12725,0.067,-0.04426 +191.1,-0.09324,1.374,-0.05083 +176.4,-0.09707,1.06,0.01428 diff --git a/statsmodels/stats/tests/results/wspec3.csv b/statsmodels/stats/tests/results/wspec3.csv new file mode 100644 index 0000000..cbea124 --- /dev/null +++ b/statsmodels/stats/tests/results/wspec3.csv @@ -0,0 +1,36 @@ +IV1,IV2,DUM1,DUM2,DV +-0.02015,7.6,0,0,0.01291 +-0.09145,44.1,0,0,-0.04267 +-0.23417,252.7,0,0,-0.25406 +-0.11179,9.4,1,0,0.34175 +0.16144,-122.1,0,0,0.10051 +0.15733,-156.2,0,0,0.13155 +0.05293,-57.3,0,0,0.09492 +0.05686,-48.1,0,0,0.03839 +-0.11524,4.9,0,0,0.0188 +0.10973,22,0,0,0.01934 +0.11152,-16.9,0,0,0.10318 +0.05917,-16.3,0,0,0.06143 +-0.00468,-4.7,0,0,0.00608 +-0.15653,59.2,0,0,-0.00281 +0.115,49,0,0,0.01905 +0.12352,-26.9,0,0,0.06962 +-0.03604,3.7,0,1,0.21069 +0.05634,-11.3,0,0,0.06319 +-0.00401,-35,0,0,0.03645 +0.10524,-15.7,0,0,0.0444 +0.02288,6,0,0,0.02033 +0.05646,3.8,0,0,0.06044 +0.09566,-13.8,0,0,0.06762 +0.01535,-21.7,0,0,0.03301 +0.0435,-14.9,0,0,0.01857 +-0.00534,1.7,0,0,0.06799 +0.04721,21.7,0,0,0.01813 +0.01321,9.7,0,0,0.02022 +-0.00353,0,0,0,0.01317 +-0.07728,26,0,0,-0.00628 +0.0572,11.8,0,0,0.02035 +0.00372,27.1,0,0,-0.04564 +0.02087,-31.4,0,0,0.04537 +0.03918,-20.6,0,0,0.07685 +0.03597,-19.5,0,0,0.03299 diff --git a/statsmodels/stats/tests/results/wspec4.csv b/statsmodels/stats/tests/results/wspec4.csv new file mode 100644 index 0000000..abbc6e0 --- /dev/null +++ b/statsmodels/stats/tests/results/wspec4.csv @@ -0,0 +1,36 @@ +IV1,IV2,IV3,DUM1,DUM2,DV +144.6,-0.02036,0.03699,0,0,0.01291 +30,-0.09591,-0.25186,0,0,-0.04267 +-293.1,-0.2668,0.93698,0,0,-0.25406 +-166,-0.11855,0.73074,1,0,0.34175 +-43.5,0.14966,-0.29941,0,0,0.10051 +43.7,0.14612,-0.25366,0,0,0.13155 +182.4,0.05158,-0.2597,0,0,0.09492 +114.6,0.0553,-0.01949,0,0,0.03839 +207.5,-0.12244,-0.11013,0,0,0.0188 +169.1,0.10412,0.67668,0,0,0.01934 +172.5,0.10573,-0.28238,0,0,0.10318 +8.2,0.05749,-0.28363,0,0,0.06143 +222.5,-0.00469,0.24894,0,0,0.00608 +126.2,-0.17023,-0.22687,0,0,-0.00281 +198.2,0.10886,1.11175,0,0,0.01905 +188.6,0.11647,-0.05312,0,0,0.06962 +148,-0.03671,-0.49461,0,1,0.21069 +106,0.05481,0.16064,0,0,0.06319 +69.4,-0.00402,-0.23218,0,0,0.03645 +178.1,0.10007,0.10992,0,0,0.0444 +66,0.02262,-0.16417,0,0,0.02033 +207.9,0.05493,0.07899,0,0,0.06044 +250.6,0.09136,-0.16984,0,0,0.06762 +31.4,0.01524,0.19577,0,0,0.03301 +289.6,0.04258,0.05408,0,0,0.01857 +301.4,-0.00535,-0.20569,0,0,0.06799 +113.6,0.04613,0,0,0,0.01813 +138.8,0.01312,0.5414,0,0,0.02022 +218.5,-0.00354,-0.14705,0,0,0.01317 +134.5,-0.08043,-0.15811,0,0,-0.00628 +59.5,0.05562,1.16127,0,0,0.02035 +38,0.00371,-0.40133,0,0,-0.04564 +212.8,0.02066,0.15375,0,0,0.04537 +191.1,0.03843,-0.08458,0,0,0.07685 +176.4,0.03534,-0.29581,0,0,0.03299 diff --git a/statsmodels/stats/tests/test_anova.py b/statsmodels/stats/tests/test_anova.py new file mode 100644 index 0000000..aa6b422 --- /dev/null +++ b/statsmodels/stats/tests/test_anova.py @@ -0,0 +1,517 @@ +# -*- coding: utf-8 -*- + +from statsmodels.compat.python import StringIO + +import numpy as np + +from statsmodels.stats.anova import anova_lm +from statsmodels.formula.api import ols +from pandas import read_csv + +kidney_table = StringIO("""Days Duration Weight ID + 0.0 1 1 1 + 2.0 1 1 2 + 1.0 1 1 3 + 3.0 1 1 4 + 0.0 1 1 5 + 2.0 1 1 6 + 0.0 1 1 7 + 5.0 1 1 8 + 6.0 1 1 9 + 8.0 1 1 10 + 2.0 1 2 1 + 4.0 1 2 2 + 7.0 1 2 3 + 12.0 1 2 4 + 15.0 1 2 5 + 4.0 1 2 6 + 3.0 1 2 7 + 1.0 1 2 8 + 5.0 1 2 9 + 20.0 1 2 10 + 15.0 1 3 1 + 10.0 1 3 2 + 8.0 1 3 3 + 5.0 1 3 4 + 25.0 1 3 5 + 16.0 1 3 6 + 7.0 1 3 7 + 30.0 1 3 8 + 3.0 1 3 9 + 27.0 1 3 10 + 0.0 2 1 1 + 1.0 2 1 2 + 1.0 2 1 3 + 0.0 2 1 4 + 4.0 2 1 5 + 2.0 2 1 6 + 7.0 2 1 7 + 4.0 2 1 8 + 0.0 2 1 9 + 3.0 2 1 10 + 5.0 2 2 1 + 3.0 2 2 2 + 2.0 2 2 3 + 0.0 2 2 4 + 1.0 2 2 5 + 1.0 2 2 6 + 3.0 2 2 7 + 6.0 2 2 8 + 7.0 2 2 9 + 9.0 2 2 10 + 10.0 2 3 1 + 8.0 2 3 2 + 12.0 2 3 3 + 3.0 2 3 4 + 7.0 2 3 5 + 15.0 2 3 6 + 4.0 2 3 7 + 9.0 2 3 8 + 6.0 2 3 9 + 1.0 2 3 10 +""") + +kidney_table.seek(0) +kidney_table = read_csv(kidney_table, sep=r"\s+", engine='python').astype(int) + +class TestAnovaLM(object): + @classmethod + def setup_class(cls): + # kidney data taken from JT's course + # don't know the license + cls.data = kidney_table + cls.kidney_lm = ols('np.log(Days+1) ~ C(Duration) * C(Weight)', + data=cls.data).fit() + + def test_results(self): + Df = np.array([1, 2, 2, 54]) + sum_sq = np.array([2.339693, 16.97129, 0.6356584, 28.9892]) + mean_sq = np.array([2.339693, 8.485645, 0.3178292, 0.536837]) + f_value = np.array([4.358293, 15.80674, 0.5920404, np.nan]) + pr_f = np.array([0.0415617, 3.944502e-06, 0.5567479, np.nan]) + + results = anova_lm(self.kidney_lm) + np.testing.assert_equal(results['df'].values, Df) + np.testing.assert_almost_equal(results['sum_sq'].values, sum_sq, 4) + np.testing.assert_almost_equal(results['F'].values, f_value, 4) + np.testing.assert_almost_equal(results['PR(>F)'].values, pr_f) + + +class TestAnovaLMNoconstant(object): + @classmethod + def setup_class(cls): + # kidney data taken from JT's course + # don't know the license + cls.data = kidney_table + cls.kidney_lm = ols('np.log(Days+1) ~ C(Duration) * C(Weight) - 1', + data=cls.data).fit() + + def test_results(self): + Df = np.array([2, 2, 2, 54]) + sum_sq = np.array([158.6415227, 16.97129, 0.6356584, 28.9892]) + mean_sq = np.array([79.3207613, 8.485645, 0.3178292, 0.536837]) + f_value = np.array([147.7557648, 15.80674, 0.5920404, np.nan]) + pr_f = np.array([1.262324e-22, 3.944502e-06, 0.5567479, np.nan]) + + results = anova_lm(self.kidney_lm) + np.testing.assert_equal(results['df'].values, Df) + np.testing.assert_almost_equal(results['sum_sq'].values, sum_sq, 4) + np.testing.assert_almost_equal(results['F'].values, f_value, 4) + np.testing.assert_almost_equal(results['PR(>F)'].values, pr_f) + + # > sum2.lm = lm(logDays ~ Duration * Weight - 1, contrasts=list(Duration=contr.sum, Weight=contr.sum)) + # > anova.lm.sum2 <- anova(sum2.lm) + # > anova.lm.sum2 + # Analysis of Variance Table + # + # Response: logDays + # Df Sum Sq Mean Sq F value Pr(>F) + # Duration 2 158.642 79.321 147.756 < 2.2e-16 *** + # Weight 2 16.971 8.486 15.807 3.945e-06 *** + # Duration:Weight 2 0.636 0.318 0.592 0.5567 + # Residuals 54 28.989 0.537 + # --- + # Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 + + + +class TestAnovaLMCompare(TestAnovaLM): + def test_results(self): + new_model = ols("np.log(Days+1) ~ C(Duration) + C(Weight)", + self.data).fit() + results = anova_lm(new_model, self.kidney_lm) + + Res_Df = np.array([ + 56, 54 + ]) + RSS = np.array([ + 29.62486, 28.9892 + ]) + Df = np.array([ + 0, 2 + ]) + Sum_of_Sq = np.array([ + np.nan, 0.6356584 + ]) + F = np.array([ + np.nan, 0.5920404 + ]) + PrF = np.array([ + np.nan, 0.5567479 + ]) + + np.testing.assert_equal(results["df_resid"].values, Res_Df) + np.testing.assert_almost_equal(results["ssr"].values, RSS, 4) + np.testing.assert_almost_equal(results["df_diff"].values, Df) + np.testing.assert_almost_equal(results["ss_diff"].values, Sum_of_Sq) + np.testing.assert_almost_equal(results["F"].values, F) + np.testing.assert_almost_equal(results["Pr(>F)"].values, PrF) + + +class TestAnovaLMCompareNoconstant(TestAnovaLM): + def test_results(self): + new_model = ols("np.log(Days+1) ~ C(Duration) + C(Weight) - 1", + self.data).fit() + results = anova_lm(new_model, self.kidney_lm) + + Res_Df = np.array([ + 56, 54 + ]) + RSS = np.array([ + 29.62486, 28.9892 + ]) + Df = np.array([ + 0, 2 + ]) + Sum_of_Sq = np.array([ + np.nan, 0.6356584 + ]) + F = np.array([ + np.nan, 0.5920404 + ]) + PrF = np.array([ + np.nan, 0.5567479 + ]) + + np.testing.assert_equal(results["df_resid"].values, Res_Df) + np.testing.assert_almost_equal(results["ssr"].values, RSS, 4) + np.testing.assert_almost_equal(results["df_diff"].values, Df) + np.testing.assert_almost_equal(results["ss_diff"].values, Sum_of_Sq) + np.testing.assert_almost_equal(results["F"].values, F) + np.testing.assert_almost_equal(results["Pr(>F)"].values, PrF) + + +class TestAnova2(TestAnovaLM): + # drop some observations to make an unbalanced, disproportionate panel + # to make sure things are okay + def test_results(self): + data = self.data.drop([0,1,2]) + anova_ii = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", + data).fit() + + Sum_Sq = np.array([ + 3.067066, 13.27205, 0.1905093, 27.60181 + ]) + Df = np.array([ + 1, 2, 2, 51 + ]) + F_value = np.array([ + 5.667033, 12.26141, 0.1760025, np.nan + ]) + PrF = np.array([ + 0.02106078, 4.487909e-05, 0.8391231, np.nan + ]) + + results = anova_lm(anova_ii, typ="II") + np.testing.assert_equal(results['df'].values, Df) + np.testing.assert_almost_equal(results['sum_sq'].values, Sum_Sq, 4) + np.testing.assert_almost_equal(results['F'].values, F_value, 4) + np.testing.assert_almost_equal(results['PR(>F)'].values, PrF) + + +class TestAnova2Noconstant(TestAnovaLM): + # drop some observations to make an unbalanced, disproportionate panel + # to make sure things are okay + def test_results(self): + data = self.data.drop([0,1,2]) + anova_ii = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum) - 1", + data).fit() + + Sum_Sq = np.array([ + 154.7131692, 13.27205, 0.1905093, 27.60181 + ]) + Df = np.array([ + 2, 2, 2, 51 + ]) + F_value = np.array([ + 142.9321191, 12.26141, 0.1760025, np.nan + ]) + PrF = np.array([ + 1.238624e-21, 4.487909e-05, 0.8391231, np.nan + ]) + + results = anova_lm(anova_ii, typ="II") + np.testing.assert_equal(results['df'].values, Df) + np.testing.assert_almost_equal(results['sum_sq'].values, Sum_Sq, 4) + np.testing.assert_almost_equal(results['F'].values, F_value, 4) + np.testing.assert_almost_equal(results['PR(>F)'].values, PrF) + + # > sum2.lm.dropped <- lm(logDays ~ Duration * Weight - 1, dta.dropped, + # contrasts=list(Duration=contr.sum, Weight=contr.sum)) + # > anova.ii.dropped2 <- Anova(sum2.lm.dropped, type='II') + # > anova.ii.dropped2 + # Anova Table (Type II tests) + # + # Response: logDays + # Sum Sq Df F value Pr(>F) + # Duration 154.713 2 142.932 < 2.2e-16 *** + # Weight 13.272 2 12.261 4.488e-05 *** + # Duration:Weight 0.191 2 0.176 0.8391 + # Residuals 27.602 51 + + +class TestAnova2HC0(TestAnovaLM): + #NOTE: R doesn't return SSq with robust covariance. Why? + # drop some observations to make an unbalanced, disproportionate panel + # to make sure things are okay + def test_results(self): + data = self.data.drop([0,1,2]) + anova_ii = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", + data).fit() + + Sum_Sq = np.array([ + 151.4065, 2.904723, 13.45718, 0.1905093, 27.60181 + ]) + Df = np.array([ + 1, 2, 2, 51 + ]) + F = np.array([ + 6.972744, 13.7804, 0.1709936, np.nan + ]) + PrF = np.array([ + 0.01095599, 1.641682e-05, 0.8433081, np.nan + ]) + + results = anova_lm(anova_ii, typ="II", robust="hc0") + np.testing.assert_equal(results['df'].values, Df) + #np.testing.assert_almost_equal(results['sum_sq'].values, Sum_Sq, 4) + np.testing.assert_almost_equal(results['F'].values, F, 4) + np.testing.assert_almost_equal(results['PR(>F)'].values, PrF) + +class TestAnova2HC1(TestAnovaLM): + # drop some observations to make an unbalanced, disproportionate panel + # to make sure things are okay + def test_results(self): + data = self.data.drop([0,1,2]) + anova_ii = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", + data).fit() + + Sum_Sq = np.array([ + 151.4065, 2.904723, 13.45718, 0.1905093, 27.60181 + ]) + Df = np.array([ + 1, 2, 2, 51 + ]) + F = np.array([ + 6.238771, 12.32983, 0.1529943, np.nan + ]) + PrF = np.array([ + 0.01576555, 4.285456e-05, 0.858527, np.nan + ]) + + results = anova_lm(anova_ii, typ="II", robust="hc1") + np.testing.assert_equal(results['df'].values, Df) + #np.testing.assert_almost_equal(results['sum_sq'].values, Sum_Sq, 4) + np.testing.assert_almost_equal(results['F'].values, F, 4) + np.testing.assert_almost_equal(results['PR(>F)'].values, PrF) + +class TestAnova2HC2(TestAnovaLM): + # drop some observations to make an unbalanced, disproportionate panel + # to make sure things are okay + def test_results(self): + data = self.data.drop([0,1,2]) + anova_ii = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", + data).fit() + + Sum_Sq = np.array([ + 151.4065, 2.904723, 13.45718, 0.1905093, 27.60181 + ]) + Df = np.array([ + 1, 2, 2, 51 + ]) + F = np.array([ + 6.267499, 12.25354, 0.1501224, np.nan + ]) + PrF = np.array([ + 0.01554009, 4.511826e-05, 0.8609815, np.nan + ]) + + + results = anova_lm(anova_ii, typ="II", robust="hc2") + np.testing.assert_equal(results['df'].values, Df) + #np.testing.assert_almost_equal(results['sum_sq'].values, Sum_Sq, 4) + np.testing.assert_almost_equal(results['F'].values, F, 4) + np.testing.assert_almost_equal(results['PR(>F)'].values, PrF) + +class TestAnova2HC3(TestAnovaLM): + # drop some observations to make an unbalanced, disproportionate panel + # to make sure things are okay + def test_results(self): + data = self.data.drop([0,1,2]) + anova_ii = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", + data).fit() + + Sum_Sq = np.array([ + 151.4065, 2.904723, 13.45718, 0.1905093, 27.60181 + ]) + Df = np.array([ + 1, 2, 2, 51 + ]) + F = np.array([ + 5.633786, 10.89842, 0.1317223, np.nan + ]) + PrF = np.array([ + 0.02142223, 0.0001145965, 0.8768817, np.nan + ]) + + results = anova_lm(anova_ii, typ="II", robust="hc3") + np.testing.assert_equal(results['df'].values, Df) + #np.testing.assert_almost_equal(results['sum_sq'].values, Sum_Sq, 4) + np.testing.assert_almost_equal(results['F'].values, F, 4) + np.testing.assert_almost_equal(results['PR(>F)'].values, PrF) + +class TestAnova3(TestAnovaLM): + # drop some observations to make an unbalanced, disproportionate panel + # to make sure things are okay + def test_results(self): + data = self.data.drop([0,1,2]) + anova_iii = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", + data).fit() + + Sum_Sq = np.array([ + 151.4065, 2.904723, 13.45718, 0.1905093, 27.60181 + ]) + Df = np.array([ + 1, 1, 2, 2, 51 + ]) + F_value = np.array([ + 279.7545, 5.367071, 12.43245, 0.1760025, np.nan + ]) + PrF = np.array([ + 2.379855e-22, 0.02457384, 3.999431e-05, 0.8391231, np.nan + ]) + + results = anova_lm(anova_iii, typ="III") + np.testing.assert_equal(results['df'].values, Df) + np.testing.assert_almost_equal(results['sum_sq'].values, Sum_Sq, 4) + np.testing.assert_almost_equal(results['F'].values, F_value, 4) + np.testing.assert_almost_equal(results['PR(>F)'].values, PrF) + +class TestAnova3HC0(TestAnovaLM): + #NOTE: R doesn't return SSq with robust covariance. Why? + # drop some observations to make an unbalanced, disproportionate panel + # to make sure things are okay + def test_results(self): + data = self.data.drop([0,1,2]) + anova_iii = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", + data).fit() + + Sum_Sq = np.array([ + 151.4065, 2.904723, 13.45718, 0.1905093, 27.60181 + ]) + Df = np.array([ + 1, 1, 2, 2, 51 + ]) + F = np.array([ + 298.3404, 5.723638, 13.76069, 0.1709936, np.nan + ]) + PrF = np.array([ + 5.876255e-23, 0.02046031, 1.662826e-05, 0.8433081, np.nan + ]) + + results = anova_lm(anova_iii, typ="III", robust="hc0") + np.testing.assert_equal(results['df'].values, Df) + #np.testing.assert_almost_equal(results['sum_sq'].values, Sum_Sq, 4) + np.testing.assert_almost_equal(results['F'].values, F, 4) + np.testing.assert_almost_equal(results['PR(>F)'].values, PrF) + +class TestAnova3HC1(TestAnovaLM): + # drop some observations to make an unbalanced, disproportionate panel + # to make sure things are okay + def test_results(self): + data = self.data.drop([0,1,2]) + anova_iii = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", + data).fit() + + Sum_Sq = np.array([ + 151.4065, 2.904723, 13.45718, 0.1905093, 27.60181 + ]) + Df = np.array([ + 1, 1, 2, 2, 51 + ]) + F = np.array([ + 266.9361, 5.12115, 12.3122, 0.1529943, np.nan + ]) + PrF = np.array([ + 6.54355e-22, 0.02792296, 4.336712e-05, 0.858527, np.nan + ]) + + results = anova_lm(anova_iii, typ="III", robust="hc1") + np.testing.assert_equal(results['df'].values, Df) + #np.testing.assert_almost_equal(results['sum_sq'].values, Sum_Sq, 4) + np.testing.assert_almost_equal(results['F'].values, F, 4) + np.testing.assert_almost_equal(results['PR(>F)'].values, PrF) + +class TestAnova3HC2(TestAnovaLM): + # drop some observations to make an unbalanced, disproportionate panel + # to make sure things are okay + def test_results(self): + data = self.data.drop([0,1,2]) + anova_iii = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", + data).fit() + + Sum_Sq = np.array([ + 151.4065, 2.904723, 13.45718, 0.1905093, 27.60181 + ]) + Df = np.array([ + 1, 1, 2, 2, 51 + ]) + F = np.array([ + 264.5137, 5.074677, 12.19158, 0.1501224, np.nan + ]) + PrF = np.array([ + 7.958286e-22, 0.02860926, 4.704831e-05, 0.8609815, np.nan + ]) + + results = anova_lm(anova_iii, typ="III", robust="hc2") + np.testing.assert_equal(results['df'].values, Df) + #np.testing.assert_almost_equal(results['sum_sq'].values, Sum_Sq, 4) + np.testing.assert_almost_equal(results['F'].values, F, 4) + np.testing.assert_almost_equal(results['PR(>F)'].values, PrF) + +class TestAnova3HC3(TestAnovaLM): + # drop some observations to make an unbalanced, disproportionate panel + # to make sure things are okay + def test_results(self): + data = self.data.drop([0,1,2]) + anova_iii = ols("np.log(Days+1) ~ C(Duration, Sum)*C(Weight, Sum)", + data).fit() + + Sum_Sq = np.array([ + 151.4065, 2.904723, 13.45718, 0.1905093, 27.60181 + ]) + Df = np.array([ + 1, 1, 2, 2, 51 + ]) + F = np.array([ + 234.4026, 4.496996, 10.79903, 0.1317223, np.nan + ]) + PrF = np.array([ + 1.037224e-20, 0.03883841, 0.0001228716, 0.8768817, np.nan + ]) + + results = anova_lm(anova_iii, typ="III", robust="hc3") + np.testing.assert_equal(results['df'].values, Df) + #np.testing.assert_almost_equal(results['sum_sq'].values, Sum_Sq, 4) + np.testing.assert_almost_equal(results['F'].values, F, 4) + np.testing.assert_almost_equal(results['PR(>F)'].values, PrF) diff --git a/statsmodels/stats/tests/test_anova_rm.py b/statsmodels/stats/tests/test_anova_rm.py new file mode 100644 index 0000000..e53c621 --- /dev/null +++ b/statsmodels/stats/tests/test_anova_rm.py @@ -0,0 +1,198 @@ +import pandas as pd +import numpy as np +from statsmodels.stats.anova import AnovaRM +from numpy.testing import (assert_array_almost_equal, assert_raises, + assert_equal) +from pandas.util.testing import assert_frame_equal + + +DV = [7, 3, 6, 6, 5, 8, 6, 7, + 7, 11, 9, 11, 10, 10, 11, 11, + 8, 14, 10, 11, 12, 10, 11, 12, + 16, 7, 11, 9, 10, 11, 8, 8, + 16, 10, 13, 10, 10, 14, 11, 12, + 24, 29, 10, 22, 25, 28, 22, 24, + 1, 3, 5, 8, 3, 5, 6, 8, + 9, 18, 19, 1, 12, 15, 2, 3, + 3, 4, 13, 21, 2, 11, 18, 2, + 12, 7, 12, 3, 19, 1, 4, 13, + 13, 14, 3, 4, 8, 19, 21, 2, + 4, 9, 12, 2, 5, 8, 2, 4] + +id = [1, 2, 3, 4, 5, 6, 7, 8, + 1, 2, 3, 4, 5, 6, 7, 8, + 1, 2, 3, 4, 5, 6, 7, 8, + 1, 2, 3, 4, 5, 6, 7, 8, + 1, 2, 3, 4, 5, 6, 7, 8, + 1, 2, 3, 4, 5, 6, 7, 8, + 1, 2, 3, 4, 5, 6, 7, 8, + 1, 2, 3, 4, 5, 6, 7, 8, + 1, 2, 3, 4, 5, 6, 7, 8, + 1, 2, 3, 4, 5, 6, 7, 8, + 1, 2, 3, 4, 5, 6, 7, 8, + 1, 2, 3, 4, 5, 6, 7, 8] + +id = ['%d' % i for i in id] + +A = ['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', + 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b'] + +B = ['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', + 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', + 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', + 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', + 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', + 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c', + 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', + 'c', 'c', 'c', 'c', 'c', 'c', 'c', 'c'] + +D = ['a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'a', 'a', 'a', 'a', 'a', 'a', 'a', 'a', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', + 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b'] + +data = pd.DataFrame([id, A, B, D, DV], index=['id', 'A', 'B', 'D', 'DV']).T +data['DV'] = data['DV'].astype('int') + + +def test_single_factor_repeated_measures_anova(): + """ + Testing single factor repeated measures anova + Results reproduces R `ezANOVA` function from library ez + """ + df = AnovaRM(data.iloc[:16, :], 'DV', 'id', within=['B']).fit() + a = [[1, 7, 22.4, 0.002125452]] + assert_array_almost_equal(df.anova_table.iloc[:, [1, 2, 0, 3]].values, + a, decimal=5) + + +def test_two_factors_repeated_measures_anova(): + """ + Testing two factors repeated measures anova + Results reproduces R `ezANOVA` function from library ez + """ + df = AnovaRM(data.iloc[:48, :], 'DV', 'id', within=['A', 'B']).fit() + a = [[1, 7, 40.14159, 3.905263e-04], + [2, 14, 29.21739, 1.007549e-05], + [2, 14, 17.10545, 1.741322e-04]] + assert_array_almost_equal(df.anova_table.iloc[:, [1, 2, 0, 3]].values, + a, decimal=5) + + +def test_three_factors_repeated_measures_anova(): + """ + Testing three factors repeated measures anova + Results reproduces R `ezANOVA` function from library ez + """ + df = AnovaRM(data, 'DV', 'id', within=['A', 'B', 'D']).fit() + a = [[1, 7, 8.7650709, 0.021087505], + [2, 14, 8.4985785, 0.003833921], + [1, 7, 20.5076546, 0.002704428], + [2, 14, 0.8457797, 0.450021759], + [1, 7, 21.7593382, 0.002301792], + [2, 14, 6.2416695, 0.011536846], + [2, 14, 5.4253359, 0.018010647]] + assert_array_almost_equal(df.anova_table.iloc[:, [1, 2, 0, 3]].values, + a, decimal=5) + + +def test_repeated_measures_invalid_factor_name(): + """ + Test with a factor name of 'C', which conflicts with patsy. + """ + assert_raises(ValueError, AnovaRM, data.iloc[:16, :], 'DV', 'id', + within=['C']) + + +def test_repeated_measures_collinearity(): + data1 = data.iloc[:48, :].copy() + data1['E'] = data1['A'] + assert_raises(ValueError, AnovaRM, data1, 'DV', 'id', within=['A', 'E']) + + +def test_repeated_measures_unbalanced_data(): + assert_raises(ValueError, AnovaRM, data.iloc[1:48, :], 'DV', 'id', + within=['A', 'B']) + + +def test_repeated_measures_aggregation(): + df1 = AnovaRM(data, 'DV', 'id', within=['A', 'B', 'D']).fit() + df2 = AnovaRM(data.append(data), 'DV', 'id', within=['A', 'B', 'D'], + aggregate_func=np.mean).fit() + + assert_frame_equal(df1.anova_table, df2.anova_table) + + +def test_repeated_measures_aggregation_one_subject_duplicated(): + df1 = AnovaRM(data, 'DV', 'id', within=['A', 'B', 'D']).fit() + df2 = AnovaRM(data.append(data.loc[data['id'] == '1', :]).reset_index(), + 'DV', 'id', within=['A', 'B', 'D'], + aggregate_func=np.mean).fit() + + assert_frame_equal(df1.anova_table, df2.anova_table) + + +def test_repeated_measures_aggregate_func(): + assert_raises(ValueError, AnovaRM, data.append(data), 'DV', 'id', + within=['A', 'B', 'D']) + + m1 = AnovaRM(data.append(data), 'DV', 'id', within=['A', 'B', 'D'], + aggregate_func=np.mean) + m2 = AnovaRM(data.append(data), 'DV', 'id', within=['A', 'B', 'D'], + aggregate_func=np.median) + + assert_raises(AssertionError, assert_equal, + m1.aggregate_func, m2.aggregate_func) + assert_frame_equal(m1.fit().anova_table, m2.fit().anova_table) + + +def test_repeated_measures_aggregate_func_mean(): + m1 = AnovaRM(data.append(data), 'DV', 'id', within=['A', 'B', 'D'], + aggregate_func=np.mean) + + m2 = AnovaRM(data.append(data), 'DV', 'id', within=['A', 'B', 'D'], + aggregate_func='mean') + + assert_equal(m1.aggregate_func, m2.aggregate_func) + + +def test_repeated_measures_aggregate_compare_with_ezANOVA(): + # Results should reproduces those from R's `ezANOVA` (library ez). + ez = pd.DataFrame( + {'F Value': [8.7650709, 8.4985785, 20.5076546, 0.8457797, 21.7593382, + 6.2416695, 5.4253359], + 'Num DF': [1, 2, 1, 2, 1, 2, 2], + 'Den DF': [7, 14, 7, 14, 7, 14, 14], + 'Pr > F': [0.021087505, 0.003833921, 0.002704428, 0.450021759, + 0.002301792, 0.011536846, 0.018010647]}, + index=pd.Index(['A', 'B', 'D', 'A:B', 'A:D', 'B:D', 'A:B:D'])) + ez = ez[['F Value', 'Num DF', 'Den DF', 'Pr > F']] + + df = (AnovaRM(data.append(data), 'DV', 'id', within=['A', 'B', 'D'], + aggregate_func=np.mean) + .fit() + .anova_table) + + assert_frame_equal(ez, df, check_dtype=False) diff --git a/statsmodels/stats/tests/test_contingency_tables.py b/statsmodels/stats/tests/test_contingency_tables.py new file mode 100644 index 0000000..5ff4678 --- /dev/null +++ b/statsmodels/stats/tests/test_contingency_tables.py @@ -0,0 +1,598 @@ +""" +Tests for contingency table analyses. +""" + +import numpy as np +import statsmodels.stats.contingency_tables as ctab +import pandas as pd +from numpy.testing import assert_allclose, assert_equal +import os +import statsmodels.api as sm + +cur_dir = os.path.dirname(os.path.abspath(__file__)) +fname = "contingency_table_r_results.csv" +fpath = os.path.join(cur_dir, 'results', fname) +r_results = pd.read_csv(fpath) + + +tables = [None, None, None] + +tables[0] = np.asarray([[23, 15], [19, 31]]) + +tables[1] = np.asarray([[144, 33, 84, 126], + [2, 4, 14, 29], + [0, 2, 6, 25], + [0, 0, 1, 5]]) + +tables[2] = np.asarray([[20, 10, 5], + [3, 30, 15], + [0, 5, 40]]) + + +def test_homogeneity(): + + for k,table in enumerate(tables): + st = sm.stats.SquareTable(table, shift_zeros=False) + hm = st.homogeneity() + assert_allclose(hm.statistic, r_results.loc[k, "homog_stat"]) + assert_allclose(hm.df, r_results.loc[k, "homog_df"]) + + # Test Bhapkar via its relationship to Stuart_Maxwell. + hmb = st.homogeneity(method="bhapkar") + assert_allclose(hmb.statistic, hm.statistic / (1 - hm.statistic / table.sum())) + + +def test_SquareTable_from_data(): + + np.random.seed(434) + df = pd.DataFrame(index=range(100), columns=["v1", "v2"]) + df["v1"] = np.random.randint(0, 5, 100) + df["v2"] = np.random.randint(0, 5, 100) + table = pd.crosstab(df["v1"], df["v2"]) + + rslt1 = ctab.SquareTable(table) + rslt2 = ctab.SquareTable.from_data(df) + rslt3 = ctab.SquareTable(np.asarray(table)) + + assert_equal(rslt1.summary().as_text(), + rslt2.summary().as_text()) + + assert_equal(rslt2.summary().as_text(), + rslt3.summary().as_text()) + + s = str(rslt1) + assert_equal(s.startswith('A 5x5 contingency table with counts:'), True) + assert_equal(rslt1.table[0, 0], 8.) + + +def test_SquareTable_nonsquare(): + + tab = [[1, 0, 3], [2, 1, 4], [3, 0, 5]] + df = pd.DataFrame(tab, index=[0, 1, 3], columns=[0, 2, 3]) + + df2 = ctab.SquareTable(df, shift_zeros=False) + + e = np.asarray([[1, 0, 0, 3], [2, 0, 1, 4], [0, 0, 0, 0], [3, 0, 0, 5]], + dtype=np.float64) + + assert_equal(e, df2.table) + + +def test_cumulative_odds(): + + table = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] + table = np.asarray(table) + tbl_obj = ctab.Table(table) + + cum_odds = tbl_obj.cumulative_oddsratios + assert_allclose(cum_odds[0, 0], 28 / float(5 * 11)) + assert_allclose(cum_odds[0, 1], (3 * 15) / float(3 * 24), atol=1e-5, + rtol=1e-5) + assert_allclose(np.log(cum_odds), tbl_obj.cumulative_log_oddsratios, + atol=1e-5, rtol=1e-5) + + +def test_local_odds(): + + table = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] + table = np.asarray(table) + tbl_obj = ctab.Table(table) + + loc_odds = tbl_obj.local_oddsratios + assert_allclose(loc_odds[0, 0], 5 / 8.) + assert_allclose(loc_odds[0, 1], 12 / float(15), atol=1e-5, + rtol=1e-5) + assert_allclose(np.log(loc_odds), tbl_obj.local_log_oddsratios, + atol=1e-5, rtol=1e-5) + + +def test_shifting(): + + t = np.zeros((3, 4), dtype=np.float64) + result = np.full((3, 4), 0.5) + assert_equal(ctab.Table(t, shift_zeros=False).table, t) + assert_equal(ctab.Table(t, shift_zeros=True).table, result) + + t = np.asarray([[0, 1, 2], + [3, 0, 4], + [5, 6, 0]], dtype=np.float64) + r = np.asarray([[0.5, 1, 2], + [3, 0.5, 4], + [5, 6, 0.5]], dtype=np.float64) + assert_equal(ctab.Table(t).table, r) + assert_equal(ctab.Table(t, shift_zeros=True).table, r) + + +def test_stratified_table_cube(): + # Test that we can pass a rank 3 ndarray or a list of rank 2 + # ndarrays to StratifiedTable and get the same results. + + tab1 = [[[8, 9], [6, 7]], [[4, 9], [5, 5]], [[8, 8], [9, 11]]] + tab2 = np.asarray(tab1).T + + ct1 = ctab.StratifiedTable(tab1) + ct2 = ctab.StratifiedTable(tab2) + + assert_allclose(ct1.oddsratio_pooled, ct2.oddsratio_pooled) + assert_allclose(ct1.logodds_pooled, ct2.logodds_pooled) + + +def test_resids(): + + # CHD x serum data + table = [[12, 8, 31, 41], [307, 246, 439, 245]] + + # These results come from SAS + fit = [[22.083, 17.583, 32.536, 19.798], + [296.92, 236.42, 437.46, 266.2]] + c2 = [[4.6037, 5.223, 0.0725, 22.704], + [0.3424, 0.3885, 0.0054, 1.6886]] + + # These are regression tests + pr = np.array([[-2.14562121, -2.28538719, -0.26923882, 4.7649169 ], + [ 0.58514314, 0.62325942, 0.07342547, -1.29946443]]) + sr = np.array([[-2.55112945, -2.6338782 , -0.34712127, 5.5751083 ], + [ 2.55112945, 2.6338782 , 0.34712127, -5.5751083 ]]) + + tab = ctab.Table(table) + assert_allclose(tab.fittedvalues, fit, atol=1e-4, rtol=1e-4) + assert_allclose(tab.chi2_contribs, c2, atol=1e-4, rtol=1e-4) + assert_allclose(tab.resid_pearson, pr, atol=1e-4, rtol=1e-4) + assert_allclose(tab.standardized_resids, sr, atol=1e-4, rtol=1e-4) + + +def test_ordinal_association(): + + for k,table in enumerate(tables): + + row_scores = 1 + np.arange(table.shape[0]) + col_scores = 1 + np.arange(table.shape[1]) + + # First set of scores + rslt = ctab.Table(table, shift_zeros=False).test_ordinal_association(row_scores, col_scores) + assert_allclose(rslt.statistic, r_results.loc[k, "lbl_stat"]) + assert_allclose(rslt.null_mean, r_results.loc[k, "lbl_expval"]) + assert_allclose(rslt.null_sd**2, r_results.loc[k, "lbl_var"]) + assert_allclose(rslt.zscore**2, r_results.loc[k, "lbl_chi2"], rtol=1e-5, atol=1e-5) + assert_allclose(rslt.pvalue, r_results.loc[k, "lbl_pvalue"], rtol=1e-5, atol=1e-5) + + # Second set of scores + rslt = ctab.Table(table, shift_zeros=False).test_ordinal_association(row_scores, col_scores**2) + assert_allclose(rslt.statistic, r_results.loc[k, "lbl2_stat"]) + assert_allclose(rslt.null_mean, r_results.loc[k, "lbl2_expval"]) + assert_allclose(rslt.null_sd**2, r_results.loc[k, "lbl2_var"]) + assert_allclose(rslt.zscore**2, r_results.loc[k, "lbl2_chi2"]) + assert_allclose(rslt.pvalue, r_results.loc[k, "lbl2_pvalue"], rtol=1e-5, atol=1e-5) + + +def test_chi2_association(): + + np.random.seed(8743) + + table = np.random.randint(10, 30, size=(4, 4)) + + from scipy.stats import chi2_contingency + rslt_scipy = chi2_contingency(table) + + b = ctab.Table(table).test_nominal_association() + + assert_allclose(b.statistic, rslt_scipy[0]) + assert_allclose(b.pvalue, rslt_scipy[1]) + + +def test_symmetry(): + + for k,table in enumerate(tables): + st = sm.stats.SquareTable(table, shift_zeros=False) + b = st.symmetry() + assert_allclose(b.statistic, r_results.loc[k, "bowker_stat"]) + assert_equal(b.df, r_results.loc[k, "bowker_df"]) + assert_allclose(b.pvalue, r_results.loc[k, "bowker_pvalue"]) + + +def test_mcnemar(): + + # Use chi^2 without continuity correction + b1 = ctab.mcnemar(tables[0], exact=False, correction=False) + + st = sm.stats.SquareTable(tables[0]) + b2 = st.homogeneity() + assert_allclose(b1.statistic, b2.statistic) + assert_equal(b2.df, 1) + + # Use chi^2 with continuity correction + b3 = ctab.mcnemar(tables[0], exact=False, correction=True) + assert_allclose(b3.pvalue, r_results.loc[0, "homog_cont_p"]) + + # Use binomial reference distribution + b4 = ctab.mcnemar(tables[0], exact=True) + assert_allclose(b4.pvalue, r_results.loc[0, "homog_binom_p"]) + +def test_from_data_stratified(): + + df = pd.DataFrame([[1, 1, 1, 0, 1, 0, 1, 0], [0, 1, 0, 1, 0, 1, 0, 0], + [0, 0, 0, 0, 1, 1, 1, 1]]).T + e = np.asarray([[[0, 1], [1, 1]], [[2, 2], [1, 0]]]) + + # Test pandas + tab1 = ctab.StratifiedTable.from_data(0, 1, 2, df) + assert_equal(tab1.table, e) + + # Test ndarray + tab1 = ctab.StratifiedTable.from_data(0, 1, 2, np.asarray(df)) + assert_equal(tab1.table, e) + +def test_from_data_2x2(): + + df = pd.DataFrame([[1, 1, 1, 0, 1, 0, 1, 0], [0, 1, 0, 1, 0, 1, 0, 0]]).T + e = np.asarray([[1, 2], [4, 1]]) + + # Test pandas + tab1 = ctab.Table2x2.from_data(df, shift_zeros=False) + assert_equal(tab1.table, e) + + # Test ndarray + tab1 = ctab.Table2x2.from_data(np.asarray(df), shift_zeros=False) + assert_equal(tab1.table, e) + + +def test_cochranq(): + # library(CVST) + # table1 = matrix(c(1, 0, 1, 1, + # 0, 1, 1, 1, + # 1, 1, 1, 0, + # 0, 1, 0, 0, + # 0, 1, 0, 0, + # 1, 0, 1, 0, + # 0, 1, 0, 0, + # 1, 1, 1, 1, + # 0, 1, 0, 0), ncol=4, byrow=TRUE) + # rslt1 = cochranq.test(table1) + # table2 = matrix(c(0, 0, 1, 1, 0, + # 0, 1, 0, 1, 0, + # 0, 1, 1, 0, 1, + # 1, 0, 0, 0, 1, + # 1, 1, 0, 0, 0, + # 1, 0, 1, 0, 0, + # 0, 1, 0, 0, 0, + # 0, 0, 1, 1, 0, + # 0, 0, 0, 0, 0), ncol=5, byrow=TRUE) + # rslt2 = cochranq.test(table2) + + table = [[1, 0, 1, 1], + [0, 1, 1, 1], + [1, 1, 1, 0], + [0, 1, 0, 0], + [0, 1, 0, 0], + [1, 0, 1, 0], + [0, 1, 0, 0], + [1, 1, 1, 1], + [0, 1, 0, 0]] + table = np.asarray(table) + + stat, pvalue, df = ctab.cochrans_q(table, return_object=False) + assert_allclose(stat, 4.2) + assert_allclose(df, 3) + + table = [[0, 0, 1, 1, 0], + [0, 1, 0, 1, 0], + [0, 1, 1, 0, 1], + [1, 0, 0, 0, 1], + [1, 1, 0, 0, 0], + [1, 0, 1, 0, 0], + [0, 1, 0, 0, 0], + [0, 0, 1, 1, 0], + [0, 0, 0, 0, 0]] + table = np.asarray(table) + + stat, pvalue, df = ctab.cochrans_q(table, return_object=False) + assert_allclose(stat, 1.2174, rtol=1e-4) + assert_allclose(df, 4) + + # Cochran's q and Mcnemar are equivalent for 2x2 tables + data = table[:, 0:2] + xtab = np.asarray(pd.crosstab(data[:, 0], data[:, 1])) + b1 = ctab.cochrans_q(data, return_object=True) + b2 = ctab.mcnemar(xtab, exact=False, correction=False) + assert_allclose(b1.statistic, b2.statistic) + assert_allclose(b1.pvalue, b2.pvalue) + + # Test for printing bunch + assert_equal(str(b1).startswith("df 1\npvalue 0.65"), True) + + +class CheckStratifiedMixin(object): + + @classmethod + def initialize(cls, tables): + cls.rslt = ctab.StratifiedTable(tables) + cls.rslt_0 = ctab.StratifiedTable(tables, shift_zeros=True) + tables_pandas = [pd.DataFrame(x) for x in tables] + cls.rslt_pandas = ctab.StratifiedTable(tables_pandas) + + + def test_oddsratio_pooled(self): + assert_allclose(self.rslt.oddsratio_pooled, self.oddsratio_pooled, + rtol=1e-4, atol=1e-4) + + + def test_logodds_pooled(self): + assert_allclose(self.rslt.logodds_pooled, self.logodds_pooled, + rtol=1e-4, atol=1e-4) + + + def test_null_odds(self): + rslt = self.rslt.test_null_odds(correction=True) + assert_allclose(rslt.statistic, self.mh_stat, rtol=1e-4, atol=1e-5) + assert_allclose(rslt.pvalue, self.mh_pvalue, rtol=1e-4, atol=1e-4) + + + def test_oddsratio_pooled_confint(self): + lcb, ucb = self.rslt.oddsratio_pooled_confint() + assert_allclose(lcb, self.or_lcb, rtol=1e-4, atol=1e-4) + assert_allclose(ucb, self.or_ucb, rtol=1e-4, atol=1e-4) + + + def test_logodds_pooled_confint(self): + lcb, ucb = self.rslt.logodds_pooled_confint() + assert_allclose(lcb, np.log(self.or_lcb), rtol=1e-4, + atol=1e-4) + assert_allclose(ucb, np.log(self.or_ucb), rtol=1e-4, + atol=1e-4) + + + def test_equal_odds(self): + + if not hasattr(self, "or_homog"): + return + + rslt = self.rslt_0.test_equal_odds() + assert_allclose(rslt.statistic, self.or_homog, rtol=1e-4, atol=1e-4) + assert_allclose(rslt.pvalue, self.or_homog_p, rtol=1e-4, atol=1e-4) + + + def test_pandas(self): + + assert_equal(self.rslt.summary().as_text(), + self.rslt_pandas.summary().as_text()) + + + def test_from_data(self): + + np.random.seed(241) + df = pd.DataFrame(index=range(100), columns=("v1", "v2", "strat")) + df["v1"] = np.random.randint(0, 2, 100) + df["v2"] = np.random.randint(0, 2, 100) + df["strat"] = np.kron(np.arange(10), np.ones(10)) + + tables = [] + for k in range(10): + ii = np.arange(10*k, 10*(k+1)) + tables.append(pd.crosstab(df.loc[ii, "v1"], df.loc[ii, "v2"])) + + rslt1 = ctab.StratifiedTable(tables) + rslt2 = ctab.StratifiedTable.from_data("v1", "v2", "strat", df) + + assert_equal(rslt1.summary().as_text(), rslt2.summary().as_text()) + + +class TestStratified1(CheckStratifiedMixin): + """ + data = array(c(0, 0, 6, 5, + 3, 0, 3, 6, + 6, 2, 0, 4, + 5, 6, 1, 0, + 2, 5, 0, 0), + dim=c(2, 2, 5)) + rslt = mantelhaen.test(data) + """ + + @classmethod + def setup_class(cls): + tables = [None] * 5 + tables[0] = np.array([[0, 0], [6, 5]]) + tables[1] = np.array([[3, 0], [3, 6]]) + tables[2] = np.array([[6, 2], [0, 4]]) + tables[3] = np.array([[5, 6], [1, 0]]) + tables[4] = np.array([[2, 5], [0, 0]]) + + cls.initialize(tables) + + cls.oddsratio_pooled = 7 + cls.logodds_pooled = np.log(7) + cls.mh_stat = 3.9286 + cls.mh_pvalue = 0.04747 + cls.or_lcb = 1.026713 + cls.or_ucb = 47.725133 + + +class TestStratified2(CheckStratifiedMixin): + """ + data = array(c(20, 14, 10, 24, + 15, 12, 3, 15, + 3, 2, 3, 2, + 12, 3, 7, 5, + 1, 0, 3, 2), + dim=c(2, 2, 5)) + rslt = mantelhaen.test(data) + """ + + @classmethod + def setup_class(cls): + tables = [None] * 5 + tables[0] = np.array([[20, 14], [10, 24]]) + tables[1] = np.array([[15, 12], [3, 15]]) + tables[2] = np.array([[3, 2], [3, 2]]) + tables[3] = np.array([[12, 3], [7, 5]]) + tables[4] = np.array([[1, 0], [3, 2]]) + + cls.initialize(tables) + + cls.oddsratio_pooled = 3.5912 + cls.logodds_pooled = np.log(3.5912) + + cls.mh_stat = 11.8852 + cls.mh_pvalue = 0.0005658 + + cls.or_lcb = 1.781135 + cls.or_ucb = 7.240633 + + +class TestStratified3(CheckStratifiedMixin): + """ + data = array(c(313, 512, 19, 89, + 207, 353, 8, 17, + 205, 120, 391, 202, + 278, 139, 244, 131, + 138, 53, 299, 94, + 351, 22, 317, 24), + dim=c(2, 2, 6)) + rslt = mantelhaen.test(data) + """ + + @classmethod + def setup_class(cls): + tables = [None] * 6 + tables[0] = np.array([[313, 512], [19, 89]]) + tables[1] = np.array([[207, 353], [8, 17]]) + tables[2] = np.array([[205, 120], [391, 202]]) + tables[3] = np.array([[278, 139], [244, 131]]) + tables[4] = np.array([[138, 53], [299, 94]]) + tables[5] = np.array([[351, 22], [317, 24]]) + + cls.initialize(tables) + + cls.oddsratio_pooled = 1.101879 + cls.logodds_pooled = np.log(1.101879) + + cls.mh_stat = 1.3368 + cls.mh_pvalue = 0.2476 + + cls.or_lcb = 0.9402012 + cls.or_ucb = 1.2913602 + + cls.or_homog = 18.83297 + cls.or_homog_p = 0.002064786 + + +class Check2x2Mixin(object): + @classmethod + def initialize(cls): + cls.tbl_obj = ctab.Table2x2(cls.table) + cls.tbl_data_obj = ctab.Table2x2.from_data(cls.data) + + def test_oddsratio(self): + assert_allclose(self.tbl_obj.oddsratio, self.oddsratio) + + + def test_log_oddsratio(self): + assert_allclose(self.tbl_obj.log_oddsratio, self.log_oddsratio) + + + def test_log_oddsratio_se(self): + assert_allclose(self.tbl_obj.log_oddsratio_se, self.log_oddsratio_se) + + + def test_oddsratio_pvalue(self): + assert_allclose(self.tbl_obj.oddsratio_pvalue(), self.oddsratio_pvalue) + + + def test_oddsratio_confint(self): + lcb1, ucb1 = self.tbl_obj.oddsratio_confint(0.05) + lcb2, ucb2 = self.oddsratio_confint + assert_allclose(lcb1, lcb2) + assert_allclose(ucb1, ucb2) + + + def test_riskratio(self): + assert_allclose(self.tbl_obj.riskratio, self.riskratio) + + + def test_log_riskratio(self): + assert_allclose(self.tbl_obj.log_riskratio, self.log_riskratio) + + + def test_log_riskratio_se(self): + assert_allclose(self.tbl_obj.log_riskratio_se, self.log_riskratio_se) + + + def test_riskratio_pvalue(self): + assert_allclose(self.tbl_obj.riskratio_pvalue(), self.riskratio_pvalue) + + + def test_riskratio_confint(self): + lcb1, ucb1 = self.tbl_obj.riskratio_confint(0.05) + lcb2, ucb2 = self.riskratio_confint + assert_allclose(lcb1, lcb2) + assert_allclose(ucb1, ucb2) + + + def test_log_riskratio_confint(self): + lcb1, ucb1 = self.tbl_obj.log_riskratio_confint(0.05) + lcb2, ucb2 = self.log_riskratio_confint + assert_allclose(lcb1, lcb2) + assert_allclose(ucb1, ucb2) + + + def test_from_data(self): + assert_equal(self.tbl_obj.summary().as_text(), + self.tbl_data_obj.summary().as_text()) + + def test_summary(self): + + assert_equal(self.tbl_obj.summary().as_text(), + self.summary_string) + + +class Test2x2_1(Check2x2Mixin): + + @classmethod + def setup_class(cls): + data = np.zeros((8, 2)) + data[:, 0] = [0, 0, 1, 1, 0, 0, 1, 1] + data[:, 1] = [0, 1, 0, 1, 0, 1, 0, 1] + cls.data = np.asarray(data) + cls.table = np.asarray([[2, 2], [2, 2]]) + + cls.oddsratio = 1. + cls.log_oddsratio = 0. + cls.log_oddsratio_se = np.sqrt(2) + cls.oddsratio_confint = [0.062548836166112329, 15.987507702689751] + cls.oddsratio_pvalue = 1. + cls.riskratio = 1. + cls.log_riskratio = 0. + cls.log_riskratio_se = 1 / np.sqrt(2) + cls.riskratio_pvalue = 1. + cls.riskratio_confint = [0.25009765325990629, + 3.9984381579173824] + cls.log_riskratio_confint = [-1.3859038243496782, + 1.3859038243496782] + ss = [ ' Estimate SE LCB UCB p-value', + '---------------------------------------------------', + 'Odds ratio 1.000 0.063 15.988 1.000', + 'Log odds ratio 0.000 1.414 -2.772 2.772 1.000', + 'Risk ratio 1.000 0.250 3.998 1.000', + 'Log risk ratio 0.000 0.707 -1.386 1.386 1.000', + '---------------------------------------------------'] + cls.summary_string = '\n'.join(ss) + cls.initialize() diff --git a/statsmodels/stats/tests/test_contrast.py b/statsmodels/stats/tests/test_contrast.py new file mode 100644 index 0000000..4358dd9 --- /dev/null +++ b/statsmodels/stats/tests/test_contrast.py @@ -0,0 +1,68 @@ +import numpy as np +import numpy.random +from numpy.testing import assert_almost_equal, assert_equal +from statsmodels.stats.contrast import Contrast +import statsmodels.stats.contrast as smc + + +class TestContrast(object): + @classmethod + def setup_class(cls): + numpy.random.seed(54321) + cls.X = numpy.random.standard_normal((40,10)) + + def test_contrast1(self): + term = np.column_stack((self.X[:,0], self.X[:,2])) + c = Contrast(term, self.X) + test_contrast = [[1] + [0]*9, [0]*2 + [1] + [0]*7] + assert_almost_equal(test_contrast, c.contrast_matrix) + + def test_contrast2(self): + zero = np.zeros((40,)) + term = np.column_stack((zero, self.X[:,2])) + c = Contrast(term, self.X) + test_contrast = [0]*2 + [1] + [0]*7 + assert_almost_equal(test_contrast, c.contrast_matrix) + + def test_contrast3(self): + P = np.dot(self.X, np.linalg.pinv(self.X)) + resid = np.identity(40) - P + noise = np.dot(resid, numpy.random.standard_normal((40, 5))) + term = np.column_stack((noise, self.X[:,2])) + c = Contrast(term, self.X) + assert_equal(c.contrast_matrix.shape, (10,)) +#TODO: this should actually test the value of the contrast, not only its dimension + + def test_estimable(self): + X2 = np.column_stack((self.X, self.X[:,5])) + c = Contrast(self.X[:,5],X2) + #TODO: I don't think this should be estimable? isestimable correct? + + +def test_constraints(): + cm_ = np.eye(4, 3, k=-1) + cpairs = np.array([[ 1., 0., 0.], + [ 0., 1., 0.], + [ 0., 0., 1.], + [-1., 1., 0.], + [-1., 0., 1.], + [ 0., -1., 1.]]) + c0 = smc._constraints_factor(cm_) + assert_equal(c0, cpairs) + + c1 = smc._contrast_pairs(3, 4, 0) + assert_equal(c1, cpairs) + + # embedded + cpairs2 = np.array([[ 0., 1., 0., 0., 0., 0.], + [ 0., 0., 1., 0., 0., 0.], + [ 0., 0., 0., 1., 0., 0.], + [ 0., -1., 1., 0., 0., 0.], + [ 0., -1., 0., 1., 0., 0.], + [ 0., 0., -1., 1., 0., 0.]]) + + c0 = smc._constraints_factor(cm_, k_params=6, idx_start=1) + assert_equal(c0, cpairs2) + + c1 = smc._contrast_pairs(6, 4, 1) # k_params, k_level, idx_start + assert_equal(c1, cpairs2) diff --git a/statsmodels/stats/tests/test_correlation.py b/statsmodels/stats/tests/test_correlation.py new file mode 100644 index 0000000..9ee1b55 --- /dev/null +++ b/statsmodels/stats/tests/test_correlation.py @@ -0,0 +1,60 @@ +import numpy as np +from statsmodels.stats.correlation_tools import ( + kernel_covariance, GaussianMultivariateKernel) +from numpy.testing import assert_allclose + + +def test_kernel_covariance(): + + np.random.seed(342) + + # Number of independent observations + ng = 1000 + + # Dimension of the process + p = 3 + + # Each component of the process in an AR(r) with 10 values + # observed on a grid + r = 0.5 + ii = np.arange(10) + qm = r**np.abs(np.subtract.outer(ii, ii)) + qm = np.linalg.cholesky(qm) + + exog, groups, pos = [], [], [] + for j in range(ng): + pos1 = np.arange(10)[:, None] + groups1 = j * np.ones(10) + + # The components are independent AR processes + ex1 = np.random.normal(size=(10, 3)) + + ex1 = np.dot(qm, ex1) + pos.append(pos1) + groups.append(groups1) + exog.append(ex1) + + groups = np.concatenate(groups) + pos = np.concatenate(pos, axis=0) + exog = np.concatenate(exog, axis=0) + + for j in range(4): + + if j == 0: + kernel = None + bw = None + elif j == 1: + kernel = GaussianMultivariateKernel() + bw = None + elif j == 2: + kernel = GaussianMultivariateKernel() + bw = 1 + elif j == 3: + kernel = GaussianMultivariateKernel() + bw = kernel.set_default_bw(pos) + + cv = kernel_covariance(exog, pos, groups, kernel=kernel, bw=bw) + assert_allclose(cv(0, 0), np.eye(p), atol=0.1, rtol=0.01) + assert_allclose(cv(0, 1), 0.5*np.eye(p), atol=0.1, rtol=0.01) + assert_allclose(cv(0, 2), 0.25*np.eye(p), atol=0.1, rtol=0.01) + assert_allclose(cv(1, 2), 0.5*np.eye(p), atol=0.1, rtol=0.01) diff --git a/statsmodels/stats/tests/test_corrpsd.py b/statsmodels/stats/tests/test_corrpsd.py new file mode 100644 index 0000000..7120a46 --- /dev/null +++ b/statsmodels/stats/tests/test_corrpsd.py @@ -0,0 +1,469 @@ +# -*- coding: utf-8 -*- +"""Tests for finding a positive semi-definite correlation or covariance matrix + +Created on Mon May 27 12:07:02 2013 + +Author: Josef Perktold +""" +from statsmodels.compat.platform import PLATFORM_WIN32 + +import warnings + +import numpy as np +from numpy.testing import assert_almost_equal, assert_allclose +import scipy.sparse as sparse +import pytest + +from statsmodels.stats.correlation_tools import ( + corr_nearest, corr_clipped, cov_nearest, + _project_correlation_factors, corr_nearest_factor, _spg_optim, + corr_thresholded, cov_nearest_factor_homog, FactoredPSDMatrix) +from statsmodels.tools.testing import Holder + + +def norm_f(x, y): + '''Frobenious norm (squared sum) of difference between two arrays + ''' + d = ((x - y)**2).sum() + return np.sqrt(d) + + +# R library Matrix results +cov1_r = Holder() +#> nc <- nearPD(pr, conv.tol = 1e-7, keepDiag = TRUE, doDykstra =FALSE, corr=TRUE) +#> cat_items(nc, prefix="cov1_r.") +cov1_r.mat = '''''' +cov1_r.eigenvalues = np.array([ + 4.197315628646795, 0.7540460243978023, 0.5077608149667492, + 0.3801267599652769, 0.1607508970775889, 4.197315628646795e-08 + ]) +cov1_r.corr = '''TRUE''' +cov1_r.normF = 0.0743805226512533 +cov1_r.iterations = 11 +cov1_r.rel_tol = 8.288594638441735e-08 +cov1_r.converged = '''TRUE''' +#> mkarray2(as.matrix(nc$mat), name="cov1_r.mat") +cov1_r.mat = np.array([ + 1, 0.487968018215892, 0.642651880010906, 0.4906386709070835, + 0.6440990530811909, 0.8087111845493985, 0.487968018215892, 1, + 0.5141147294352735, 0.2506688108312097, 0.672351311297074, + 0.725832055882795, 0.642651880010906, 0.5141147294352735, 1, + 0.596827778712154, 0.5821917790519067, 0.7449631633814129, + 0.4906386709070835, 0.2506688108312097, 0.596827778712154, 1, + 0.729882058012399, 0.772150225146826, 0.6440990530811909, + 0.672351311297074, 0.5821917790519067, 0.729882058012399, 1, + 0.813191720191944, 0.8087111845493985, 0.725832055882795, + 0.7449631633814129, 0.772150225146826, 0.813191720191944, 1 + ]).reshape(6,6, order='F') + + +cov_r = Holder() +#nc <- nearPD(pr+0.01*diag(6), conv.tol = 1e-7, keepDiag = TRUE, doDykstra =FALSE, corr=FALSE) +#> cat_items(nc, prefix="cov_r.") +#cov_r.mat = '''''' +cov_r.eigenvalues = np.array([ + 4.209897516692652, 0.7668341923072066, 0.518956980021938, + 0.390838551407132, 0.1734728460460068, 4.209897516692652e-08 + ]) +cov_r.corr = '''FALSE''' +cov_r.normF = 0.0623948693159157 +cov_r.iterations = 11 +cov_r.rel_tol = 5.83987595937896e-08 +cov_r.converged = '''TRUE''' + +#> mkarray2(as.matrix(nc$mat), name="cov_r.mat") +cov_r.mat = np.array([ + 1.01, 0.486207476951913, 0.6428524769306785, 0.4886092840296514, + 0.645175579158233, 0.811533860074678, 0.486207476951913, 1.01, + 0.514394615153752, 0.2478398278204047, 0.673852495852274, + 0.7297661648968664, 0.6428524769306785, 0.514394615153752, 1.01, + 0.5971503271420517, 0.582018469844712, 0.7445177382760834, + 0.4886092840296514, 0.2478398278204047, 0.5971503271420517, 1.01, + 0.73161232298669, 0.7766852947049376, 0.645175579158233, + 0.673852495852274, 0.582018469844712, 0.73161232298669, 1.01, + 0.8107916469252828, 0.811533860074678, 0.7297661648968664, + 0.7445177382760834, 0.7766852947049376, 0.8107916469252828, 1.01 + ]).reshape(6,6, order='F') + + +def test_corr_psd(): + # test positive definite matrix is unchanged + x = np.array([[1, -0.2, -0.9], [-0.2, 1, -0.2], [-0.9, -0.2, 1]]) + + y = corr_nearest(x, n_fact=100) + #print np.max(np.abs(x - y)) + assert_almost_equal(x, y, decimal=14) + + y = corr_clipped(x) + assert_almost_equal(x, y, decimal=14) + + y = cov_nearest(x, n_fact=100) + assert_almost_equal(x, y, decimal=14) + + x2 = x + 0.001 * np.eye(3) + y = cov_nearest(x2, n_fact=100) + assert_almost_equal(x2, y, decimal=14) + + +class CheckCorrPSDMixin(object): + + def test_nearest(self): + x = self.x + res_r = self.res + y = corr_nearest(x, threshold=1e-7, n_fact=100) + #print np.max(np.abs(x - y)) + assert_almost_equal(y, res_r.mat, decimal=3) + d = norm_f(x, y) + assert_allclose(d, res_r.normF, rtol=0.0015) + evals = np.linalg.eigvalsh(y) + #print 'evals', evals / res_r.eigenvalues[::-1] - 1 + assert_allclose(evals, res_r.eigenvalues[::-1], rtol=0.003, atol=1e-7) + #print evals[0] / 1e-7 - 1 + assert_allclose(evals[0], 1e-7, rtol=1e-6) + + def test_clipped(self): + x = self.x + res_r = self.res + y = corr_clipped(x, threshold=1e-7) + #print np.max(np.abs(x - y)), np.max(np.abs((x - y) / y)) + assert_almost_equal(y, res_r.mat, decimal=1) + d = norm_f(x, y) + assert_allclose(d, res_r.normF, rtol=0.15) + + evals = np.linalg.eigvalsh(y) + assert_allclose(evals, res_r.eigenvalues[::-1], rtol=0.1, atol=1e-7) + assert_allclose(evals[0], 1e-7, rtol=0.02) + + def test_cov_nearest(self): + x = self.x + res_r = self.res + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + y = cov_nearest(x, method='nearest', threshold=1e-7) + #print np.max(np.abs(x - y)) + assert_almost_equal(y, res_r.mat, decimal=2) + d = norm_f(x, y) + assert_allclose(d, res_r.normF, rtol=0.0015) + + +class TestCovPSD(object): + + @classmethod + def setup_class(cls): + x = np.array([ 1, 0.477, 0.644, 0.478, 0.651, 0.826, + 0.477, 1, 0.516, 0.233, 0.682, 0.75, + 0.644, 0.516, 1, 0.599, 0.581, 0.742, + 0.478, 0.233, 0.599, 1, 0.741, 0.8, + 0.651, 0.682, 0.581, 0.741, 1, 0.798, + 0.826, 0.75, 0.742, 0.8, 0.798, 1]).reshape(6,6) + cls.x = x + 0.01 * np.eye(6) + cls.res = cov_r + + def test_cov_nearest(self): + x = self.x + res_r = self.res + y = cov_nearest(x, method='nearest') + #print np.max(np.abs(x - y)) + assert_almost_equal(y, res_r.mat, decimal=3) + d = norm_f(x, y) + assert_allclose(d, res_r.normF, rtol=0.001) + + y = cov_nearest(x, method='clipped') + #print np.max(np.abs(x - y)) + assert_almost_equal(y, res_r.mat, decimal=2) + d = norm_f(x, y) + assert_allclose(d, res_r.normF, rtol=0.15) + + +class TestCorrPSD1(CheckCorrPSDMixin): + + @classmethod + def setup_class(cls): + x = np.array([ 1, 0.477, 0.644, 0.478, 0.651, 0.826, + 0.477, 1, 0.516, 0.233, 0.682, 0.75, + 0.644, 0.516, 1, 0.599, 0.581, 0.742, + 0.478, 0.233, 0.599, 1, 0.741, 0.8, + 0.651, 0.682, 0.581, 0.741, 1, 0.798, + 0.826, 0.75, 0.742, 0.8, 0.798, 1]).reshape(6,6) + cls.x = x + cls.res = cov1_r + + +@pytest.mark.parametrize('threshold', [0, 1e-15, 1e-10, 1e-6]) +def test_corrpsd_threshold(threshold): + x = np.array([[1, -0.9, -0.9], [-0.9, 1, -0.9], [-0.9, -0.9, 1]]) + + y = corr_nearest(x, n_fact=100, threshold=threshold) + evals = np.linalg.eigvalsh(y) + assert_allclose(evals[0], threshold, rtol=1e-6, atol=1e-15) + + y = corr_clipped(x, threshold=threshold) + evals = np.linalg.eigvalsh(y) + assert_allclose(evals[0], threshold, rtol=0.25, atol=1e-15) + + y = cov_nearest(x, method='nearest', n_fact=100, threshold=threshold) + evals = np.linalg.eigvalsh(y) + assert_allclose(evals[0], threshold, rtol=1e-6, atol=1e-15) + + y = cov_nearest(x, n_fact=100, threshold=threshold) + evals = np.linalg.eigvalsh(y) + assert_allclose(evals[0], threshold, rtol=0.25, atol=1e-15) + + +class Test_Factor(object): + + def test_corr_nearest_factor_arrpack(self): + + # regression results for svds call + u2 = np.array([[ + 6.39407581e-19, 9.15225947e-03, 1.82631698e-02, + 2.72917181e-02, 3.61975557e-02, 4.49413101e-02, + 5.34848732e-02, 6.17916613e-02, 6.98268388e-02, + 7.75575058e-02, 8.49528448e-02, 9.19842264e-02, + 9.86252769e-02, 1.04851906e-01, 1.10642305e-01, + 1.15976906e-01, 1.20838331e-01, 1.25211306e-01, + 1.29082570e-01, 1.32440778e-01, 1.35276397e-01, + 1.37581605e-01, 1.39350201e-01, 1.40577526e-01, + 1.41260396e-01, 1.41397057e-01, 1.40987160e-01, + 1.40031756e-01, 1.38533306e-01, 1.36495727e-01, + 1.33924439e-01, 1.30826443e-01, 1.27210404e-01, + 1.23086750e-01, 1.18467769e-01, 1.13367717e-01, + 1.07802909e-01, 1.01791811e-01, 9.53551023e-02, + 8.85157320e-02, 8.12989329e-02, 7.37322125e-02, + 6.58453049e-02, 5.76700847e-02, 4.92404406e-02, + 4.05921079e-02, 3.17624629e-02, 2.27902803e-02, + 1.37154584e-02, 4.57871801e-03, -4.57871801e-03, + -1.37154584e-02, -2.27902803e-02, -3.17624629e-02, + -4.05921079e-02, -4.92404406e-02, -5.76700847e-02, + -6.58453049e-02, -7.37322125e-02, -8.12989329e-02, + -8.85157320e-02, -9.53551023e-02, -1.01791811e-01, + -1.07802909e-01, -1.13367717e-01, -1.18467769e-01, + -1.23086750e-01, -1.27210404e-01, -1.30826443e-01, + -1.33924439e-01, -1.36495727e-01, -1.38533306e-01, + -1.40031756e-01, -1.40987160e-01, -1.41397057e-01, + -1.41260396e-01, -1.40577526e-01, -1.39350201e-01, + -1.37581605e-01, -1.35276397e-01, -1.32440778e-01, + -1.29082570e-01, -1.25211306e-01, -1.20838331e-01, + -1.15976906e-01, -1.10642305e-01, -1.04851906e-01, + -9.86252769e-02, -9.19842264e-02, -8.49528448e-02, + -7.75575058e-02, -6.98268388e-02, -6.17916613e-02, + -5.34848732e-02, -4.49413101e-02, -3.61975557e-02, + -2.72917181e-02, -1.82631698e-02, -9.15225947e-03, + -3.51829569e-17]]).T + s2 = np.array([ 24.88812183]) + + d = 100 + dm = 1 + + # Construct a test matrix with exact factor structure + X = np.zeros((d,dm), dtype=np.float64) + x = np.linspace(0, 2*np.pi, d) + for j in range(dm): + X[:,j] = np.sin(x*(j+1)) + _project_correlation_factors(X) + X *= 0.7 + mat = np.dot(X, X.T) + np.fill_diagonal(mat, 1.) + + from scipy.sparse.linalg import svds + u, s, vt = svds(mat, dm) + + #difference in sign + dsign = np.sign(u[1]) * np.sign(u2[1]) + + assert_allclose(u, dsign * u2, rtol=1e-6, atol=1e-14) + assert_allclose(s, s2, rtol=1e-6) + + @pytest.mark.parametrize('dm', [1, 2]) + def test_corr_nearest_factor(self, dm): + + objvals = [np.array([6241.8, 6241.8, 579.4, 264.6, 264.3]), + np.array([2104.9, 2104.9, 710.5, 266.3, 286.1])] + + d = 100 + + # Construct a test matrix with exact factor structure + X = np.zeros((d, dm), dtype=np.float64) + x = np.linspace(0, 2 * np.pi, d) + np.random.seed(10) + for j in range(dm): + X[:, j] = np.sin(x * (j + 1)) + 1e-10 * np.random.randn(d) + + _project_correlation_factors(X) + assert np.isfinite(X).all() + X *= 0.7 + mat = np.dot(X, X.T) + np.fill_diagonal(mat, 1.) + + # Try to recover the structure + rslt = corr_nearest_factor(mat, dm, maxiter=10000) + err_msg = 'rank=%d, niter=%d' % (dm, len(rslt.objective_values)) + assert_allclose(rslt.objective_values[:5], objvals[dm - 1], + rtol=0.5, err_msg=err_msg) + assert rslt.Converged + + mat1 = rslt.corr.to_matrix() + assert_allclose(mat, mat1, rtol=0.25, atol=1e-3, err_msg=err_msg) + + @pytest.mark.parametrize('dm', [1, 2]) + def test_corr_nearest_factor_sparse(self, dm): + # Test that result is the same if the input is dense or sparse + d = 100 + + # Generate a test matrix of factors + X = np.zeros((d, dm), dtype=np.float64) + x = np.linspace(0, 2 * np.pi, d) + np.random.seed(10) + for j in range(dm): + X[:, j] = np.sin(x * (j + 1)) + 1e-10 * np.random.randn(d) + + # Get the correlation matrix + _project_correlation_factors(X) + X *= 0.7 + mat = np.dot(X, X.T) + np.fill_diagonal(mat, 1) + + # Threshold it + mat *= (np.abs(mat) >= 0.35) + smat = sparse.csr_matrix(mat) + + try: + rslt = corr_nearest_factor(mat, dm, maxiter=10000) + assert rslt.Converged is True + mat_dense = rslt.corr.to_matrix() + + rslt = corr_nearest_factor(smat, dm, maxiter=10000) + assert rslt.Converged is True + mat_sparse = rslt.corr.to_matrix() + + assert_allclose(mat_dense, mat_sparse, rtol=.25, atol=1e-3) + except AssertionError as err: + if PLATFORM_WIN32: + pytest.xfail('Known to randomly fail on Win32') + raise err + + # Test on a quadratic function. + def test_spg_optim(self, reset_randomstate): + + dm = 100 + + ind = np.arange(dm) + indmat = np.abs(ind[:,None] - ind[None,:]) + M = 0.8**indmat + + def obj(x): + return np.dot(x, np.dot(M, x)) + + def grad(x): + return 2*np.dot(M, x) + + def project(x): + return x + + x = np.random.normal(size=dm) + rslt = _spg_optim(obj, grad, x, project) + xnew = rslt.params + assert rslt.Converged is True + assert_almost_equal(obj(xnew), 0, decimal=3) + + def test_decorrelate(self, reset_randomstate): + + d = 30 + dg = np.linspace(1, 2, d) + root = np.random.normal(size=(d, 4)) + fac = FactoredPSDMatrix(dg, root) + mat = fac.to_matrix() + rmat = np.linalg.cholesky(mat) + dcr = fac.decorrelate(rmat) + idm = np.dot(dcr, dcr.T) + assert_almost_equal(idm, np.eye(d)) + + rhs = np.random.normal(size=(d, 5)) + mat2 = np.dot(rhs.T, np.linalg.solve(mat, rhs)) + mat3 = fac.decorrelate(rhs) + mat3 = np.dot(mat3.T, mat3) + assert_almost_equal(mat2, mat3) + + def test_logdet(self, reset_randomstate): + + d = 30 + dg = np.linspace(1, 2, d) + root = np.random.normal(size=(d, 4)) + fac = FactoredPSDMatrix(dg, root) + mat = fac.to_matrix() + + _, ld = np.linalg.slogdet(mat) + ld2 = fac.logdet() + + assert_almost_equal(ld, ld2) + + def test_solve(self, reset_randomstate): + + d = 30 + dg = np.linspace(1, 2, d) + root = np.random.normal(size=(d, 2)) + fac = FactoredPSDMatrix(dg, root) + rhs = np.random.normal(size=(d, 5)) + sr1 = fac.solve(rhs) + mat = fac.to_matrix() + sr2 = np.linalg.solve(mat, rhs) + assert_almost_equal(sr1, sr2) + + @pytest.mark.parametrize('dm', [1, 2]) + def test_cov_nearest_factor_homog(self, dm): + + d = 100 + + # Construct a test matrix with exact factor structure + X = np.zeros((d, dm), dtype=np.float64) + x = np.linspace(0, 2*np.pi, d) + for j in range(dm): + X[:, j] = np.sin(x*(j+1)) + mat = np.dot(X, X.T) + np.fill_diagonal(mat, np.diag(mat) + 3.1) + + # Try to recover the structure + rslt = cov_nearest_factor_homog(mat, dm) + mat1 = rslt.to_matrix() + + assert_allclose(mat, mat1, rtol=0.25, atol=1e-3) + + @pytest.mark.parametrize('dm', [1, 2]) + def test_cov_nearest_factor_homog_sparse(self, dm): + # Check that dense and sparse inputs give the same result + + d = 100 + + # Construct a test matrix with exact factor structure + X = np.zeros((d, dm), dtype=np.float64) + x = np.linspace(0, 2*np.pi, d) + for j in range(dm): + X[:, j] = np.sin(x*(j+1)) + mat = np.dot(X, X.T) + np.fill_diagonal(mat, np.diag(mat) + 3.1) + + # Fit to dense + rslt = cov_nearest_factor_homog(mat, dm) + mat1 = rslt.to_matrix() + + # Fit to sparse + smat = sparse.csr_matrix(mat) + rslt = cov_nearest_factor_homog(smat, dm) + mat2 = rslt.to_matrix() + + assert_allclose(mat1, mat2, rtol=0.25, atol=1e-3) + + def test_corr_thresholded(self, reset_randomstate): + + import datetime + + t1 = datetime.datetime.now() + X = np.random.normal(size=(2000,10)) + tcor = corr_thresholded(X, 0.2, max_elt=4e6) + t2 = datetime.datetime.now() + ss = (t2-t1).seconds + + fcor = np.corrcoef(X) + fcor *= (np.abs(fcor) >= 0.2) + + assert_allclose(tcor.todense(), fcor, rtol=0.25, atol=1e-3) diff --git a/statsmodels/stats/tests/test_data.txt b/statsmodels/stats/tests/test_data.txt new file mode 100644 index 0000000..de835be --- /dev/null +++ b/statsmodels/stats/tests/test_data.txt @@ -0,0 +1,5000 @@ + 1 1 -1.113973 2.251535 + 1 2 -.0808538 1.242346 + 1 3 -.2376072 -1.426376 + 1 4 -.1524857 -1.109394 + 1 5 -.0014262 .9146864 + 1 6 -1.212737 -1.424686 + 1 7 -.1272733 .7589449 + 1 8 -1.433539 .9296525 + 1 9 -.2421959 1.056465 + 1 10 .4609221 3.308434 + 2 1 -.5507909 -2.545477 + 2 2 -1.287685 -3.02192 + 2 3 -.220503 -1.003296 + 2 4 .8143178 -.118388 + 2 5 -.0463721 -1.27967 + 2 6 .6220436 -3.539696 + 2 7 -.6530094 -2.235361 + 2 8 .0294105 -2.552972 + 2 9 -.5297469 -2.697836 + 2 10 1.062629 -.2633513 + 3 1 -1.068723 1.526512 + 3 2 -1.487991 -1.168439 + 3 3 -.814688 1.043587 + 3 4 -.2338627 -.1197725 + 3 5 .1520617 .8082583 + 3 6 -.7190769 .4063513 + 3 7 -.789831 .1766931 + 3 8 .2342699 -.0555624 + 3 9 -1.761113 2.518384 + 3 10 -.3273719 -.7832754 + 4 1 -.2296702 -2.250634 + 4 2 -.2630124 -4.333897 + 4 3 -1.149102 -5.923194 + 4 4 -1.545472 -4.946723 + 4 5 -.4622119 -4.187626 + 4 6 -.897935 -2.35512 + 4 7 -.0184996 -.5751319 + 4 8 -1.528389 -5.423674 + 4 9 -.4938884 -5.3437 + 4 10 -1.502312 -4.846558 + 5 1 2.779623 2.437731 + 5 2 .8433719 1.258013 + 5 3 .9458475 2.086509 + 5 4 .7096778 -1.228165 + 5 5 1.899227 1.900515 + 5 6 1.166349 .7273204 + 5 7 1.181561 2.911051 + 5 8 2.706866 1.111888 + 5 9 1.545396 3.96031 + 5 10 1.981749 1.977234 + 6 1 -.9365615 -.2101905 + 6 2 .6461006 2.049301 + 6 3 -.4348849 -.1027518 + 6 4 -.0757555 2.485265 + 6 5 -.7847632 .2498533 + 6 6 -.5248117 3.359383 + 6 7 -1.255933 .9409757 + 6 8 -.6616459 -.5577587 + 6 9 -.3824796 1.318928 + 6 10 .2396478 1.55268 + 7 1 1.623504 2.128958 + 7 2 .7098557 -.3429381 + 7 3 .2069566 .7544986 + 7 4 1.820897 1.98184 + 7 5 1.621639 3.058263 + 7 6 1.50036 .7002476 + 7 7 .1174462 .5142314 + 7 8 .9641763 2.592447 + 7 9 1.188708 3.484527 + 7 10 .8094589 1.059548 + 8 1 -.8293902 -3.095103 + 8 2 -.0773441 -1.075754 + 8 3 -1.059797 -1.427806 + 8 4 .7497107 -.5424759 + 8 5 -.0257226 -.9234265 + 8 6 .1400615 -3.386066 + 8 7 -.1043562 -1.617814 + 8 8 -.2583136 1.359765 + 8 9 -.0208603 -1.772177 + 8 10 -.4723518 -4.76895 + 9 1 1.332783 1.145341 + 9 2 -.6728608 .5174692 + 9 3 -.4754492 .3798001 + 9 4 -.6039808 -1.239824 + 9 5 .1309609 1.316887 + 9 6 -1.086091 -.8632649 + 9 7 .0309397 .117274 + 9 8 .3321901 .5235909 + 9 9 -.5372118 .7940336 + 9 10 -.6328836 .7600009 + 10 1 1.370561 .1820614 + 10 2 1.633542 4.072609 + 10 3 .7839341 .970894 + 10 4 2.220442 .3808429 + 10 5 1.79873 3.506714 + 10 6 1.163082 .9684718 + 10 7 1.18292 .4053151 + 10 8 .9972349 1.02293 + 10 9 2.089964 4.046412 + 10 10 2.753031 .9294024 + 11 1 1.574512 -.3453712 + 11 2 1.295469 .9458361 + 11 3 .8262731 -2.631818 + 11 4 -.7519966 -3.259816 + 11 5 1.85721 -1.481273 + 11 6 1.313615 -.1135894 + 11 7 .4492904 -1.354932 + 11 8 1.282646 -.7164733 + 11 9 .793996 1.56023 + 11 10 1.81194 -2.335421 + 12 1 .3962149 3.406662 + 12 2 .4690258 .3962663 + 12 3 -.4272058 -.5746272 + 12 4 -.6374772 -.0199228 + 12 5 .4908172 2.181542 + 12 6 .2576996 2.100275 + 12 7 1.045368 3.721958 + 12 8 -1.523433 -2.673755 + 12 9 .2149735 .4150824 + 12 10 .9596599 1.279467 + 13 1 -.0050541 -.2301515 + 13 2 .0573285 -4.603349 + 13 3 -.2873524 -3.122442 + 13 4 -.9560087 -2.047489 + 13 5 -.1322481 -2.479723 + 13 6 .8563187 -1.100657 + 13 7 .5628442 -2.072644 + 13 8 .0939828 -3.75598 + 13 9 -1.128489 -4.817086 + 13 10 -.1227113 -2.103747 + 14 1 .7103909 1.28138 + 14 2 .8252832 3.881294 + 14 3 .3337111 .0889839 + 14 4 -.0575897 .6532867 + 14 5 -.4192458 .390807 + 14 6 .3601439 1.74841 + 14 7 -1.393545 -.2194363 + 14 8 -.0698411 -.4834067 + 14 9 .2814299 1.426163 + 14 10 1.181061 3.507429 + 15 1 1.009861 -1.532208 + 15 2 1.311839 -.8157541 + 15 3 1.498951 1.96216 + 15 4 1.455375 .4142921 + 15 5 1.400201 .4846902 + 15 6 1.145606 1.750008 + 15 7 2.791482 .5052052 + 15 8 2.462629 .3794637 + 15 9 2.243632 1.976851 + 15 10 2.540534 4.890906 + 16 1 -1.32975 .9970715 + 16 2 -1.093146 .8712451 + 16 3 -.6130105 -.0015206 + 16 4 -1.686704 -.7815932 + 16 5 -.5000154 1.08846 + 16 6 -2.321311 -.9686073 + 16 7 -1.000255 -.8243695 + 16 8 -1.689007 -.3098336 + 16 9 -2.105825 -1.594268 + 16 10 -.1087233 2.540669 + 17 1 -.1834565 -.7474391 + 17 2 1.760618 .664487 + 17 3 .917949 -.2989441 + 17 4 .125932 -2.346791 + 17 5 .1489584 .6523662 + 17 6 1.48386 .9892153 + 17 7 -.0756009 -3.088845 + 17 8 .3020325 -2.159972 + 17 9 1.277132 -.3618947 + 17 10 1.257159 -.259792 + 18 1 1.350247 1.825974 + 18 2 .7981172 2.452424 + 18 3 .1627823 -1.100261 + 18 4 -.2530656 -.1072167 + 18 5 1.409152 3.023995 + 18 6 .9650795 4.045239 + 18 7 .7924365 -1.429348 + 18 8 .4374514 2.007032 + 18 9 1.433336 -.0483654 + 18 10 -.4121532 .0446989 + 19 1 -.6057982 -2.072419 + 19 2 -1.22436 -.9157416 + 19 3 -.4113617 -1.730782 + 19 4 .5172122 1.605569 + 19 5 .5599416 -1.911302 + 19 6 .2631143 -2.46949 + 19 7 1.052545 1.815052 + 19 8 -.4619475 -1.493746 + 19 9 -.1950531 .12866 + 19 10 .9847641 .4901831 + 20 1 1.194973 3.08798 + 20 2 .2886658 -.1272869 + 20 3 1.372576 .9298378 + 20 4 .3359049 -.7808023 + 20 5 .2632762 -.5619125 + 20 6 1.389192 .6404333 + 20 7 1.002251 -1.225412 + 20 8 .9873933 .1694237 + 20 9 .5451626 1.069149 + 20 10 1.272609 .1138117 + 21 1 .0715169 .9921842 + 21 2 -.5385422 2.645248 + 21 3 .1261714 .5394431 + 21 4 .9742477 -1.758292 + 21 5 -.387336 .5208343 + 21 6 -.163562 1.382814 + 21 7 -1.209613 .5298108 + 21 8 -.1052205 1.81125 + 21 9 .233432 3.334133 + 21 10 .033963 1.81531 + 22 1 -1.469799 -1.274279 + 22 2 -.7735941 .7755678 + 22 3 -2.34248 -2.870692 + 22 4 -.1510078 .8005464 + 22 5 -.5982444 .9196078 + 22 6 -.3231765 1.600504 + 22 7 -1.572776 -2.307724 + 22 8 -2.091078 .2940469 + 22 9 -.951831 -.1817034 + 22 10 -1.445554 1.463074 + 23 1 .3725035 1.296975 + 23 2 .3820614 2.208395 + 23 3 .0626017 3.521993 + 23 4 .3118868 .4395174 + 23 5 -.7015404 -1.236747 + 23 6 -1.061542 -1.303136 + 23 7 .3601503 -1.04813 + 23 8 -.5234128 -.0554307 + 23 9 -.4160686 -1.818478 + 23 10 -.935867 -.9283634 + 24 1 .615806 .3311929 + 24 2 .8959293 .3965915 + 24 3 1.041519 .761867 + 24 4 .8322722 .5173993 + 24 5 1.241602 2.09244 + 24 6 -.525863 -1.223376 + 24 7 1.244826 .7953752 + 24 8 .554536 -1.143122 + 24 9 .8645113 -1.19864 + 24 10 -.9087342 -1.909376 + 25 1 2.490452 3.036211 + 25 2 .566798 -.3936324 + 25 3 1.174179 4.968726 + 25 4 1.337521 3.712697 + 25 5 1.640917 .5074627 + 25 6 1.151234 4.668456 + 25 7 1.665541 2.425635 + 25 8 .5556951 .6610473 + 25 9 2.255266 2.723161 + 25 10 1.204085 -.8891255 + 26 1 -1.064435 -1.178893 + 26 2 -1.507475 .2652018 + 26 3 -.8579538 -2.429297 + 26 4 -.9578646 -1.4996 + 26 5 -1.380655 -1.76092 + 26 6 .4141689 2.402735 + 26 7 -.0267256 -1.490961 + 26 8 -1.557922 .8440058 + 26 9 .3288124 .7986623 + 26 10 -.3716564 -2.116218 + 27 1 -.3418024 -3.62125 + 27 2 -.5443683 -1.823602 + 27 3 -.3091648 -2.701856 + 27 4 -1.808666 -5.609725 + 27 5 .0141565 -1.931061 + 27 6 .6868294 -1.941063 + 27 7 -1.186494 -3.378432 + 27 8 .0788637 -2.170361 + 27 9 .1955413 -2.742892 + 27 10 -1.73326 -5.803233 + 28 1 2.037613 .370481 + 28 2 .4098332 2.592271 + 28 3 2.589939 2.755091 + 28 4 .4561431 2.675986 + 28 5 .0258005 1.062077 + 28 6 .3613938 -.4269319 + 28 7 1.01658 1.794224 + 28 8 .6531302 -.487547 + 28 9 1.239858 .2717134 + 28 10 1.733052 1.12657 + 29 1 1.528067 -2.546305 + 29 2 -.1173849 -4.213757 + 29 3 .1412974 -3.165163 + 29 4 1.161742 -4.47086 + 29 5 .2451712 -1.843103 + 29 6 -.0870678 -3.126637 + 29 7 -.9637305 -5.905717 + 29 8 -.0554156 -2.196696 + 29 9 -.4720482 -4.647809 + 29 10 .1132368 -3.675967 + 30 1 .6572391 -.1810672 + 30 2 .6745709 -.5412003 + 30 3 .4953664 -1.938183 + 30 4 .8027694 -1.049345 + 30 5 1.334518 2.330137 + 30 6 .595479 .5037384 + 30 7 -.4331662 -1.044778 + 30 8 1.896155 .8808025 + 30 9 .4341521 -1.923676 + 30 10 .2443834 .5174551 + 31 1 -.236808 1.523393 + 31 2 .2551001 1.540333 + 31 3 -.1413419 .4251668 + 31 4 .4838046 2.716643 + 31 5 1.01381 -2.267009 + 31 6 .3188626 -.4143309 + 31 7 .1241043 1.28881 + 31 8 1.320021 1.215297 + 31 9 .3550206 -.3735294 + 31 10 2.088094 2.051288 + 32 1 -.6425009 3.016043 + 32 2 .4888144 3.82457 + 32 3 -.5688635 3.073783 + 32 4 -.7428322 2.652193 + 32 5 -.8726666 2.259493 + 32 6 -.0072319 3.294394 + 32 7 .0944773 3.73045 + 32 8 -.4719657 5.652805 + 32 9 -.002363 1.316024 + 32 10 -.7055649 3.672465 + 33 1 1.066728 2.772746 + 33 2 .7828333 .9267769 + 33 3 1.614972 3.514425 + 33 4 1.202383 .849719 + 33 5 .7388576 .8559657 + 33 6 1.793998 .8247188 + 33 7 .4188262 .9468174 + 33 8 1.287768 1.192935 + 33 9 1.763492 2.848863 + 33 10 .7878532 1.271121 + 34 1 -1.008752 -.0237641 + 34 2 -2.003197 -2.488989 + 34 3 -1.089493 -2.617767 + 34 4 -1.764551 -2.207082 + 34 5 -2.375314 -5.992844 + 34 6 -.0554277 -2.782006 + 34 7 -2.07135 -3.742386 + 34 8 -2.168578 -4.107751 + 34 9 -1.494982 -1.4097 + 34 10 -2.42748 -4.542908 + 35 1 .4351655 -.1829615 + 35 2 .3130368 1.421464 + 35 3 .0475111 2.693851 + 35 4 1.150088 .4114417 + 35 5 -.0957933 -.3948805 + 35 6 -.5626023 1.468046 + 35 7 .7080812 .3045558 + 35 8 .7833046 2.149841 + 35 9 1.530476 4.189656 + 35 10 -.392029 1.836654 + 36 1 1.0746 1.334824 + 36 2 .858286 1.181961 + 36 3 1.087671 1.481181 + 36 4 .8066015 2.742746 + 36 5 .968512 -.3749059 + 36 6 .4630476 2.44119 + 36 7 .7254922 -.0272765 + 36 8 1.071142 .1138723 + 36 9 .9984562 .5836798 + 36 10 .7640775 3.27064 + 37 1 -1.984955 1.182446 + 37 2 1.703192 4.951967 + 37 3 .70728 3.779326 + 37 4 .1184022 2.989509 + 37 5 .5033596 2.156005 + 37 6 .1772844 3.906913 + 37 7 -.3786118 3.030409 + 37 8 .3874881 3.954621 + 37 9 .4214773 3.14631 + 37 10 -.2451651 3.019984 + 38 1 .0966754 1.819611 + 38 2 .3879874 .4967604 + 38 3 -1.395914 -1.222764 + 38 4 -.989659 -2.631211 + 38 5 -1.069286 -1.865198 + 38 6 -1.157302 -2.171825 + 38 7 -.2298466 -1.165969 + 38 8 -.162679 .1136425 + 38 9 .0452585 -.7178748 + 38 10 1.475002 .348091 + 39 1 -.3680276 1.008016 + 39 2 -.0768016 .9168845 + 39 3 -.2463435 -.4906966 + 39 4 -1.046038 -1.117032 + 39 5 -.0558881 -2.599502 + 39 6 .9340258 2.846533 + 39 7 .0387625 -.5874603 + 39 8 .4839897 -.4617234 + 39 9 .2249989 .3547341 + 39 10 .259582 6.206707 + 40 1 -.9563262 -5.226881 + 40 2 .158707 -2.80379 + 40 3 -1.419837 -2.904984 + 40 4 -.0518155 -5.127484 + 40 5 -.6936554 -4.768349 + 40 6 -1.083972 -1.757608 + 40 7 .1809549 -3.154513 + 40 8 -.9489363 -5.076436 + 40 9 .4788771 -.2498513 + 40 10 -1.20961 -4.886969 + 41 1 .1895332 -.9003911 + 41 2 .1223631 -2.135502 + 41 3 -1.228928 -1.727191 + 41 4 .5337941 1.946297 + 41 5 .0529219 -.8247613 + 41 6 -1.437048 -1.485657 + 41 7 -.206628 .5203915 + 41 8 -.3504592 -1.013146 + 41 9 .4133495 -2.11442 + 41 10 -.5753759 -5.671011 + 42 1 .9354859 -3.749093 + 42 2 -.7046662 -.3788415 + 42 3 .2735081 -2.195758 + 42 4 .5713441 -2.486974 + 42 5 .5723248 -.6334812 + 42 6 -.4295612 -1.476024 + 42 7 -.0990854 -.796925 + 42 8 -.2557784 -4.837788 + 42 9 .6341735 -2.101528 + 42 10 1.114925 .1935925 + 43 1 .3638722 -3.892314 + 43 2 .2192631 -2.75728 + 43 3 .7088032 -5.672783 + 43 4 1.291891 -4.523396 + 43 5 1.545635 -2.23069 + 43 6 .6984189 -5.255136 + 43 7 1.096994 -3.37829 + 43 8 -.9533722 -2.838433 + 43 9 -1.333343 -6.560651 + 43 10 .1325082 -4.231973 + 44 1 1.34609 2.80968 + 44 2 .8609981 5.157394 + 44 3 1.440838 4.059852 + 44 4 1.31601 4.396537 + 44 5 2.519416 4.529044 + 44 6 1.826352 3.553517 + 44 7 1.398376 3.261309 + 44 8 1.342633 2.678228 + 44 9 1.382244 2.567711 + 44 10 1.0065 .5983293 + 45 1 .2307572 1.985198 + 45 2 -.9988996 3.689198 + 45 3 .6118762 .3478896 + 45 4 -.1187919 1.536239 + 45 5 -.5651595 2.60128 + 45 6 .8897935 1.931453 + 45 7 .2191047 1.128779 + 45 8 .1270417 3.614626 + 45 9 .2746617 2.90299 + 45 10 .5508143 4.293116 + 46 1 .078143 .678977 + 46 2 -1.434957 -1.591428 + 46 3 -.330221 -.3885328 + 46 4 -.5095385 -1.590133 + 46 5 -.090955 -.5159563 + 46 6 .5905747 .2174876 + 46 7 -.5174507 .1700746 + 46 8 -1.716782 -1.525219 + 46 9 -1.618016 -.1487674 + 46 10 .0945247 3.33564 + 47 1 1.834461 2.205469 + 47 2 2.275893 .9900074 + 47 3 1.588463 2.728559 + 47 4 1.009486 2.664118 + 47 5 .8830495 2.335695 + 47 6 2.527426 2.792583 + 47 7 1.99428 3.975189 + 47 8 1.075636 -1.461666 + 47 9 1.62277 .2772777 + 47 10 -.2918671 .5717175 + 48 1 .6970845 3.548941 + 48 2 .3042401 2.714567 + 48 3 -.4733489 2.132618 + 48 4 .1186638 .2675722 + 48 5 .472446 3.49572 + 48 6 .0734216 2.383074 + 48 7 -.3304651 .1469643 + 48 8 -.1054729 2.743034 + 48 9 -.5502433 2.170792 + 48 10 -.6758031 -1.304036 + 49 1 -1.041904 2.614929 + 49 2 .2966474 6.801648 + 49 3 2.121607 2.953831 + 49 4 1.40961 4.125618 + 49 5 .72012 2.226582 + 49 6 1.468288 5.16179 + 49 7 .6989707 4.297358 + 49 8 .6398349 5.877613 + 49 9 1.50502 2.30839 + 49 10 2.039683 5.803663 + 50 1 -.575293 -.3911918 + 50 2 1.762867 .4241942 + 50 3 .4482329 2.129771 + 50 4 -.3965478 2.316875 + 50 5 -1.678993 -1.766155 + 50 6 -.4135653 1.104911 + 50 7 .2927381 .6836871 + 50 8 -1.213393 -.1328436 + 50 9 .4000321 .0105331 + 50 10 .3823605 1.738259 + 51 1 -.8829772 -1.230511 + 51 2 -.6324606 3.128573 + 51 3 .043897 .9378504 + 51 4 -.6960941 .2223853 + 51 5 -.6172736 1.144565 + 51 6 -1.547163 1.458072 + 51 7 -.100471 1.777758 + 51 8 -1.057376 1.23549 + 51 9 -1.17698 1.268143 + 51 10 -.0482326 5.12384 + 52 1 -1.17903 -1.424888 + 52 2 -.73939 -.6274891 + 52 3 .1877236 .0635122 + 52 4 -2.343301 -.4132502 + 52 5 -1.790024 -2.65057 + 52 6 -1.430529 -.0825908 + 52 7 -2.358212 -2.990146 + 52 8 -2.442413 -2.191358 + 52 9 -1.23455 .3577392 + 52 10 -1.410859 -2.390217 + 53 1 -.615875 -1.882129 + 53 2 -.4050235 -2.269866 + 53 3 1.700189 -1.987662 + 53 4 -.2603097 -.5872757 + 53 5 .0030433 -1.478914 + 53 6 -.5567633 -.5711855 + 53 7 1.92195 -.3205912 + 53 8 .4176314 -3.899356 + 53 9 .3705572 -.5002469 + 53 10 -.490355 -1.408963 + 54 1 .0004666 -1.352051 + 54 2 .4852016 -.1910567 + 54 3 -.0966698 -3.082341 + 54 4 -1.460837 .1644528 + 54 5 .2273265 1.150178 + 54 6 -1.45966 -1.679475 + 54 7 .0572578 1.093598 + 54 8 -1.654427 -1.100947 + 54 9 1.237763 -1.333114 + 54 10 -.2878364 -1.780298 + 55 1 1.478501 1.467222 + 55 2 .4603204 -.5379936 + 55 3 .4879025 .3834782 + 55 4 1.604256 2.304569 + 55 5 1.163704 .4021196 + 55 6 1.489046 -1.715636 + 55 7 .8985639 2.520392 + 55 8 .7750524 .3807169 + 55 9 1.898098 .2142996 + 55 10 .1348248 -.9902997 + 56 1 -1.172022 -1.255857 + 56 2 -1.996386 -.6948862 + 56 3 -1.828054 -2.934108 + 56 4 -1.694053 -2.265916 + 56 5 -1.590156 -1.318494 + 56 6 -1.720063 .8799964 + 56 7 -.8483286 1.144535 + 56 8 -1.399485 2.224534 + 56 9 -1.957177 -3.558478 + 56 10 -1.24907 -1.762664 + 57 1 -.0772464 1.308189 + 57 2 -1.954798 .3009691 + 57 3 .4118662 2.00026 + 57 4 -1.344646 1.167232 + 57 5 -.9593112 .8892092 + 57 6 -.6343449 1.525563 + 57 7 -1.098343 -1.334385 + 57 8 -.6753605 3.269268 + 57 9 .2483906 2.777401 + 57 10 -.5119361 1.517861 + 58 1 1.37044 2.686421 + 58 2 .1992836 4.470279 + 58 3 1.780507 4.082414 + 58 4 2.055047 5.420131 + 58 5 .5121466 3.711266 + 58 6 1.473428 2.824285 + 58 7 1.329377 3.340376 + 58 8 .0997097 4.848788 + 58 9 .0592693 1.22174 + 58 10 -.7709802 3.445836 + 59 1 -1.741525 -.8517226 + 59 2 -.7552054 .4590898 + 59 3 .2501201 .7584463 + 59 4 -1.110712 .689433 + 59 5 -.400084 2.492942 + 59 6 .4388102 .5513753 + 59 7 -.7038921 .1453933 + 59 8 .6593503 1.671134 + 59 9 -.7045739 1.111596 + 59 10 .8348078 3.478904 + 60 1 -.6234985 1.035679 + 60 2 -.8827932 -.3437634 + 60 3 -.4877819 .4702546 + 60 4 -1.357737 -1.923994 + 60 5 -.982067 -2.592882 + 60 6 .6913385 2.39666 + 60 7 -1.414991 -2.518005 + 60 8 .2656616 -.3867499 + 60 9 -.2962375 -2.936986 + 60 10 .0142404 .7719765 + 61 1 -.439088 1.007766 + 61 2 -.193091 .3836968 + 61 3 -.242038 2.372758 + 61 4 .2151277 .249827 + 61 5 -1.30581 1.51413 + 61 6 -1.180675 1.423673 + 61 7 .1970787 1.277134 + 61 8 .2143584 .5484737 + 61 9 -.0211159 .299883 + 61 10 -1.212968 -1.433422 + 62 1 1.244519 1.081811 + 62 2 .2099649 -1.353206 + 62 3 1.079102 .5684164 + 62 4 -1.379466 -2.538114 + 62 5 -.6902483 -2.311461 + 62 6 1.598011 2.727869 + 62 7 .4156265 -1.169007 + 62 8 -1.180868 -1.18629 + 62 9 .5274237 -.7270185 + 62 10 .2932127 -1.296323 + 63 1 1.652472 3.269476 + 63 2 .9311473 3.587776 + 63 3 .1365538 3.301447 + 63 4 -.9336739 2.468721 + 63 5 .6648791 1.450015 + 63 6 1.112161 .9805532 + 63 7 -.0768514 1.019256 + 63 8 1.118798 2.231499 + 63 9 -.2639879 -.8075618 + 63 10 1.720496 3.289132 + 64 1 -2.126607 -2.0323 + 64 2 -1.034993 .0076568 + 64 3 -.4070164 .0774245 + 64 4 -.9165144 .1537139 + 64 5 -.8468651 .0403835 + 64 6 -1.71135 1.873977 + 64 7 -2.643143 -2.905062 + 64 8 -.8416802 1.620987 + 64 9 -.2111055 2.15277 + 64 10 -1.293431 .1462283 + 65 1 1.470439 .2505732 + 65 2 -.2797295 -1.905268 + 65 3 1.2573 2.755377 + 65 4 .2549482 .1192819 + 65 5 -.9284112 -1.104261 + 65 6 -.1346348 .5341791 + 65 7 .4486474 1.608888 + 65 8 -.5673625 -2.705442 + 65 9 .5566354 .3581157 + 65 10 .5457277 -.1588266 + 66 1 -1.276205 -2.63712 + 66 2 .3802429 1.930348 + 66 3 -.4719372 -1.524975 + 66 4 .1339759 -1.857387 + 66 5 .3012415 -.3952781 + 66 6 .2892204 .0674402 + 66 7 -.9101849 -2.450623 + 66 8 .4789195 .0783564 + 66 9 -.2173619 -1.134714 + 66 10 -.4335834 -2.602576 + 67 1 -1.746627 -1.556566 + 67 2 -.2461215 .4684856 + 67 3 .6478384 2.154312 + 67 4 -.6014463 .6292101 + 67 5 -.0820355 .6818564 + 67 6 .0722168 3.289532 + 67 7 .336309 2.045677 + 67 8 -1.220219 3.693871 + 67 9 .6756133 .8521259 + 67 10 -1.442097 -1.00193 + 68 1 1.670991 .100397 + 68 2 .0335964 -1.760578 + 68 3 2.005924 -.7875214 + 68 4 1.365976 -.6309421 + 68 5 1.387996 1.324375 + 68 6 1.447517 .9915884 + 68 7 2.210074 2.969625 + 68 8 1.92698 .5908512 + 68 9 1.627984 .8709837 + 68 10 1.04416 -.6319273 + 69 1 -.0124644 1.419468 + 69 2 1.030046 .6109844 + 69 3 -.5636157 -.3836077 + 69 4 .0282581 .1377721 + 69 5 -.2643643 2.553824 + 69 6 .0057051 -1.07576 + 69 7 .4353822 3.140088 + 69 8 .2053966 1.170084 + 69 9 -.3652686 .3928741 + 69 10 -.0470572 .9432311 + 70 1 .662173 .691067 + 70 2 .0287157 .9367777 + 70 3 .0919333 4.407112 + 70 4 .6123652 .1652073 + 70 5 .9550495 1.434304 + 70 6 .2893381 -.1547853 + 70 7 -1.567039 2.306578 + 70 8 1.311026 3.289917 + 70 9 .3497968 1.474192 + 70 10 -.4420402 .3080444 + 71 1 -.7991003 1.022175 + 71 2 -.5328414 -.8583595 + 71 3 -1.312079 1.143468 + 71 4 -1.304409 -2.393357 + 71 5 -.1132078 -.2235197 + 71 6 -.2002916 .460861 + 71 7 -.966539 -.6213126 + 71 8 -1.701905 .1049957 + 71 9 -2.362988 -2.286353 + 71 10 -.1560949 -.6161904 + 72 1 -1.759597 -2.54192 + 72 2 -1.570932 -2.757867 + 72 3 -.3251486 -3.74301 + 72 4 -1.264545 -3.548995 + 72 5 -.7891811 .8878638 + 72 6 -.8644689 -.6600763 + 72 7 -.7237157 -4.057347 + 72 8 -1.018566 -3.456203 + 72 9 -1.069755 -2.529535 + 72 10 .8272165 -2.611904 + 73 1 -.3610777 .8627242 + 73 2 -2.044819 .1477814 + 73 3 -1.189291 .505493 + 73 4 -.2003012 .3545881 + 73 5 -1.717357 -1.545984 + 73 6 -1.381707 -1.255205 + 73 7 -1.648393 .5353007 + 73 8 -1.14658 -2.670967 + 73 9 -1.570629 1.950688 + 73 10 -1.459593 2.579752 + 74 1 .2983489 .5581883 + 74 2 -.5395431 3.039327 + 74 3 .2994908 1.497299 + 74 4 -.8069515 .947127 + 74 5 -.7145913 1.403247 + 74 6 .4835035 1.135937 + 74 7 .3220123 3.149889 + 74 8 -.5779068 2.90988 + 74 9 .4638343 3.072803 + 74 10 .2621138 1.923369 + 75 1 .3848984 .5701465 + 75 2 1.545214 .6877246 + 75 3 -.8788593 .0956231 + 75 4 .932452 1.014515 + 75 5 .2293503 -1.113819 + 75 6 .5246851 1.852423 + 75 7 -.3868059 .1628141 + 75 8 -.1423754 -4.996533 + 75 9 -.1445253 -1.929576 + 75 10 .2055996 -1.239898 + 76 1 -.0543353 2.582696 + 76 2 -.7466006 -.0700716 + 76 3 -.2443508 2.729753 + 76 4 -.6737047 -3.573879 + 76 5 -1.266468 2.062438 + 76 6 .3490027 2.534081 + 76 7 .4766811 .588997 + 76 8 -1.146015 -2.122133 + 76 9 .3727362 2.651158 + 76 10 -.9754266 1.534763 + 77 1 .4448988 -.2193734 + 77 2 -.1803424 .9482737 + 77 3 -.803889 -.6683654 + 77 4 -1.172673 .0351796 + 77 5 .1531071 -.377766 + 77 6 1.213774 1.157787 + 77 7 -.7639153 -.2762698 + 77 8 -.3890682 -3.896112 + 77 9 .2032362 .4628553 + 77 10 -1.682079 -1.606341 + 78 1 .3725399 4.729499 + 78 2 .268485 4.462913 + 78 3 -.2863291 4.527299 + 78 4 -.4285598 3.15636 + 78 5 .1662205 6.15921 + 78 6 -.1146359 4.265123 + 78 7 -.9870021 4.135365 + 78 8 -.8400126 1.920976 + 78 9 -.683973 3.567228 + 78 10 .0656645 5.654191 + 79 1 .1833397 -2.728171 + 79 2 -.955341 -1.3267 + 79 3 -1.224389 -3.134072 + 79 4 -.7033014 -.9321624 + 79 5 -1.204872 -2.657676 + 79 6 .2990843 -2.506747 + 79 7 -1.28442 -1.761684 + 79 8 -.05433 -.0101 + 79 9 -.3129859 -4.19744 + 79 10 -.48162 -1.850879 + 80 1 .3709864 .2072858 + 80 2 -.8601138 .6410634 + 80 3 -.3298343 -.1312528 + 80 4 .3098594 .3753572 + 80 5 -.8402381 -1.692083 + 80 6 -1.089901 -.9368669 + 80 7 -.4766479 -.3077386 + 80 8 -1.085312 -.817827 + 80 9 -.0769635 -1.277251 + 80 10 -.4160216 -.9232594 + 81 1 -.5272707 2.492023 + 81 2 .9265733 2.790575 + 81 3 .8395156 2.917142 + 81 4 .997837 3.821295 + 81 5 -.2418556 2.769039 + 81 6 1.10829 4.222867 + 81 7 -.5968684 4.107396 + 81 8 .7612233 2.035242 + 81 9 .0729438 .7496958 + 81 10 .6534098 3.831431 + 82 1 -.5755852 .7773246 + 82 2 -.9763342 3.374248 + 82 3 -1.928036 -1.315026 + 82 4 -3.154886 .5804853 + 82 5 -1.422153 -.2064837 + 82 6 -2.059228 -1.144735 + 82 7 -3.225644 -1.548839 + 82 8 -1.344668 2.167114 + 82 9 -2.249151 -2.55973 + 82 10 -1.133575 .9506042 + 83 1 -1.210145 .00427 + 83 2 -.4756099 .6423019 + 83 3 -.7874444 1.157616 + 83 4 -.6038613 1.552962 + 83 5 -1.016748 -1.954607 + 83 6 -.7537422 -.9986326 + 83 7 -.7994386 -.5780545 + 83 8 -.8198663 -1.195533 + 83 9 -.7091545 -1.349308 + 83 10 -1.420908 -3.080597 + 84 1 .7461836 -.0254735 + 84 2 -.4304503 2.27268 + 84 3 1.035587 .5626667 + 84 4 .6368332 .2364947 + 84 5 1.223844 1.341512 + 84 6 1.359299 1.367263 + 84 7 -.0167454 .5935086 + 84 8 -.8196754 -1.457118 + 84 9 1.410377 2.993989 + 84 10 .5997642 .9570292 + 85 1 1.628572 -1.35826 + 85 2 2.052706 -.4462183 + 85 3 .215812 -1.890946 + 85 4 .6963931 -.88616 + 85 5 .818251 -2.13424 + 85 6 -.1413346 -3.322396 + 85 7 .2018216 -.8162438 + 85 8 -.1636942 -.7240803 + 85 9 -.4798506 -4.181 + 85 10 -.1174669 -.5232955 + 86 1 -.6495263 -.6829134 + 86 2 -1.895121 -5.51412 + 86 3 -.1903552 .9088601 + 86 4 -.6449907 -6.215881 + 86 5 -1.662863 -1.023716 + 86 6 -.1996787 -3.340915 + 86 7 -2.122803 -2.146306 + 86 8 -.7962283 -1.637065 + 86 9 -1.01159 -2.681375 + 86 10 -.7748188 -2.316792 + 87 1 .8127542 -.5909941 + 87 2 -.7785764 -3.736 + 87 3 -.7024275 -3.593106 + 87 4 .9921172 -1.198709 + 87 5 .7975324 .2150961 + 87 6 .250467 .2749398 + 87 7 .4358244 -2.918331 + 87 8 .065637 -.7143529 + 87 9 .1993551 -.7192752 + 87 10 -.3692175 -.681936 + 88 1 3.332827 3.641891 + 88 2 3.247604 6.263003 + 88 3 2.340322 2.254026 + 88 4 2.626786 1.581534 + 88 5 3.280261 2.549119 + 88 6 1.760448 1.061697 + 88 7 3.55281 4.356301 + 88 8 2.727623 3.949953 + 88 9 1.983919 1.001524 + 88 10 1.07229 -.5318067 + 89 1 1.526344 3.851074 + 89 2 .343597 -1.085497 + 89 3 1.676662 2.201779 + 89 4 .634718 1.480652 + 89 5 .4231488 -.1160433 + 89 6 2.03657 1.501163 + 89 7 -.003951 -1.335885 + 89 8 .8643371 -1.829961 + 89 9 .9630698 .2187398 + 89 10 1.229657 2.195579 + 90 1 .6774948 .13387 + 90 2 1.54678 -2.665641 + 90 3 -.1487001 -2.904281 + 90 4 1.527219 .713655 + 90 5 .5745606 -1.754661 + 90 6 -.1216967 -2.595916 + 90 7 -.086078 -3.479263 + 90 8 1.573822 -2.001506 + 90 9 .8749673 -1.962126 + 90 10 1.32782 -.7756476 + 91 1 .5364156 .5309559 + 91 2 1.044684 -.9052037 + 91 3 -.272637 -1.981785 + 91 4 -.4093122 -.6303263 + 91 5 .7212245 -1.268853 + 91 6 .3781427 1.119254 + 91 7 -.1825575 -1.728389 + 91 8 -.1777665 .3995577 + 91 9 .3727928 1.961935 + 91 10 -.3966752 -3.982467 + 92 1 .7738721 -1.140398 + 92 2 -1.888295 -4.964508 + 92 3 -1.296459 -4.149817 + 92 4 -2.039593 -3.451557 + 92 5 -.9700022 -4.489924 + 92 6 -.004035 .5129095 + 92 7 .1486926 -.207259 + 92 8 -1.804143 -3.883155 + 92 9 -.1051963 -2.852115 + 92 10 -.3828316 -1.544678 + 93 1 -.6516115 1.896614 + 93 2 -1.112646 -2.311133 + 93 3 -.9352806 .3627226 + 93 4 -.8951915 -2.572836 + 93 5 -.4816938 -.0324859 + 93 6 .7686692 3.784502 + 93 7 -.7999012 1.112347 + 93 8 .8176185 1.476878 + 93 9 -.9369711 -2.300562 + 93 10 .6676452 .1401932 + 94 1 1.214736 1.410911 + 94 2 -.8337653 .0307171 + 94 3 .5541754 -1.674761 + 94 4 1.270796 2.27291 + 94 5 -.2061931 -.7724628 + 94 6 .0866545 1.231509 + 94 7 -.2551947 -2.274495 + 94 8 -.6307989 -1.513553 + 94 9 .4124774 -1.254067 + 94 10 -1.012987 -2.406973 + 95 1 1.032044 3.514778 + 95 2 .2490372 1.534935 + 95 3 .2588367 2.071565 + 95 4 .1169671 1.840981 + 95 5 -.0244914 1.781758 + 95 6 .9549935 3.5147 + 95 7 1.364106 3.127855 + 95 8 .9321354 1.757664 + 95 9 .2904355 2.301433 + 95 10 .8085022 2.11163 + 96 1 1.114837 -.7178155 + 96 2 -1.267564 -2.741404 + 96 3 -1.085746 -4.827821 + 96 4 -.8708308 -3.71345 + 96 5 -.489081 -1.264031 + 96 6 -.7432358 -1.651288 + 96 7 -.9332526 -3.7981 + 96 8 -.9088738 -2.490584 + 96 9 -.4789856 .1301999 + 96 10 -.2546913 -1.527178 + 97 1 .0533133 3.440775 + 97 2 1.744777 4.877036 + 97 3 1.402804 6.417698 + 97 4 1.641241 4.237218 + 97 5 1.281364 5.909176 + 97 6 1.03682 4.032018 + 97 7 -.0996061 5.693103 + 97 8 1.348916 3.032289 + 97 9 -.3237499 4.656998 + 97 10 .1847036 2.368484 + 98 1 -.6517955 -1.866707 + 98 2 -.0171172 -2.659516 + 98 3 -.7687393 .3396965 + 98 4 -.6190444 -.5611658 + 98 5 -.9726762 -.0161824 + 98 6 -1.63478 -2.613414 + 98 7 -.7557085 .7616437 + 98 8 -.4223914 -1.580691 + 98 9 .3260078 1.707461 + 98 10 .3354938 .9962233 + 99 1 -1.027093 -1.58087 + 99 2 .4703917 -1.370057 + 99 3 -.820445 -.7738686 + 99 4 -.7226994 -4.449502 + 99 5 -1.430104 -1.259469 + 99 6 -1.270371 -3.569478 + 99 7 -.4025181 -2.638689 + 99 8 -1.261932 -3.126859 + 99 9 -1.126017 -1.884274 + 99 10 -.6694252 -4.541583 + 100 1 -.30744 1.02539 + 100 2 -.6012539 -.335935 + 100 3 -.435059 .5852526 + 100 4 -1.806088 -.6447401 + 100 5 .1366319 1.9103 + 100 6 -2.050971 1.091531 + 100 7 .435282 1.132483 + 100 8 .3822627 1.328956 + 100 9 -.1652966 .3171474 + 100 10 .2587045 1.497525 + 101 1 -.2273589 -1.063786 + 101 2 -1.185664 .6527855 + 101 3 .400003 1.310241 + 101 4 .7594776 .7713131 + 101 5 -.8813154 -.9125404 + 101 6 -1.127854 -.3648072 + 101 7 -1.895109 -1.2161 + 101 8 -1.669487 -.5815258 + 101 9 -1.891508 -1.104043 + 101 10 -1.055494 .1329769 + 102 1 -1.723715 .664099 + 102 2 -3.010109 -1.279886 + 102 3 -1.525109 .3261039 + 102 4 -1.146745 .6388897 + 102 5 -1.600002 .3282819 + 102 6 -3.072865 .1835895 + 102 7 -2.617226 -1.256764 + 102 8 -2.208615 -2.902243 + 102 9 -1.264346 -2.840227 + 102 10 -1.449807 -.6277186 + 103 1 .3226332 .4997346 + 103 2 -.076093 .5681773 + 103 3 -1.894362 .8960136 + 103 4 .0410097 1.833357 + 103 5 -.2243991 .044889 + 103 6 -.9386661 -.0806124 + 103 7 -.2758278 1.382825 + 103 8 -1.135128 .076048 + 103 9 -.3520421 1.571149 + 103 10 .7385342 1.755647 + 104 1 1.256971 .648344 + 104 2 .8465124 .8998452 + 104 3 1.27114 2.468534 + 104 4 .1194901 -1.80525 + 104 5 1.978375 2.43786 + 104 6 1.086473 .8904172 + 104 7 .6335369 -.0536024 + 104 8 1.852129 2.068656 + 104 9 1.153308 2.812323 + 104 10 .7714425 2.740011 + 105 1 -2.042488 -1.369616 + 105 2 .3178222 .4381413 + 105 3 -.600008 1.47808 + 105 4 -1.314453 -2.10709 + 105 5 -.6073269 -1.32969 + 105 6 -.120853 .8055446 + 105 7 .0065417 1.450818 + 105 8 .0155846 -2.299504 + 105 9 -.1486192 1.961463 + 105 10 .5344943 .2794205 + 106 1 -1.169599 -2.828606 + 106 2 -1.849769 -3.345207 + 106 3 -1.218134 -1.553143 + 106 4 -1.33059 -2.381288 + 106 5 -.8316581 -3.005554 + 106 6 -.4472938 -3.395564 + 106 7 -.9147623 .1233101 + 106 8 -1.556795 -2.780197 + 106 9 -1.420463 -4.245845 + 106 10 -2.549732 -6.574844 + 107 1 .7972398 -.6703857 + 107 2 1.013986 2.205157 + 107 3 1.280889 4.960197 + 107 4 1.94929 4.616246 + 107 5 .6728333 1.599389 + 107 6 1.326033 2.621707 + 107 7 1.640348 -.0979825 + 107 8 -.0193518 3.05404 + 107 9 1.477356 2.36653 + 107 10 1.749324 3.181671 + 108 1 -.2119814 -1.666841 + 108 2 -.3043244 -3.054193 + 108 3 -.695592 -2.988183 + 108 4 .4245084 -.1200044 + 108 5 .3031314 -.2345145 + 108 6 -1.672249 -3.897476 + 108 7 1.019048 .0358505 + 108 8 -.4983453 -.0931661 + 108 9 .7222788 1.283888 + 108 10 -.7430365 -1.72292 + 109 1 .5269582 -1.876588 + 109 2 -.2942517 1.061157 + 109 3 1.260649 1.803303 + 109 4 .1170161 -.9161218 + 109 5 -1.431327 -3.264418 + 109 6 -1.710629 -3.232257 + 109 7 .2631577 .8800084 + 109 8 .4623963 -.3746355 + 109 9 .0295791 .5078085 + 109 10 .7788738 1.551043 + 110 1 .2946399 2.479715 + 110 2 .2595214 2.977597 + 110 3 -.5736612 1.704173 + 110 4 .1835434 3.867414 + 110 5 -.0237556 .7681468 + 110 6 .6630996 .5613937 + 110 7 -.8409108 3.52354 + 110 8 -.1552351 -.472919 + 110 9 .6044915 .5183871 + 110 10 -.7809685 .2677606 + 111 1 -1.532933 1.757141 + 111 2 -1.279813 2.542971 + 111 3 -.5264512 1.206971 + 111 4 -1.638465 1.460618 + 111 5 -1.226385 1.901769 + 111 6 -.6994659 3.616364 + 111 7 -.2850284 1.397959 + 111 8 -.9615322 2.048981 + 111 9 -.8090673 1.631124 + 111 10 -.758942 1.80999 + 112 1 1.142599 2.590217 + 112 2 .5199317 .9012542 + 112 3 .1671776 -1.384863 + 112 4 -.2558758 -2.502313 + 112 5 1.370843 3.455235 + 112 6 1.432706 2.168218 + 112 7 .0478287 -1.01463 + 112 8 1.777138 -.3324981 + 112 9 .5305171 -.5686251 + 112 10 1.20891 -2.435307 + 113 1 -.3121598 -1.818837 + 113 2 1.303828 -.5285407 + 113 3 -.4248065 -7.170979 + 113 4 2.158508 3.135753 + 113 5 -.21672 -2.695576 + 113 6 .2123556 -.8669874 + 113 7 1.753473 -1.866275 + 113 8 1.301555 -1.463479 + 113 9 .0197642 -5.298079 + 113 10 .9646027 -1.643543 + 114 1 -.5405908 -.5000682 + 114 2 -1.547085 -.6405376 + 114 3 .3640202 1.800588 + 114 4 1.094777 .7435986 + 114 5 -.1703027 .8763703 + 114 6 1.455668 1.378347 + 114 7 -.7272233 -1.435992 + 114 8 1.194396 1.51213 + 114 9 -.7808616 -1.645977 + 114 10 .5322501 1.37332 + 115 1 1.97693 -.6823063 + 115 2 1.745592 2.078362 + 115 3 .2409086 -2.854815 + 115 4 .2869095 -.9275485 + 115 5 2.636622 1.88622 + 115 6 .8873282 -2.273578 + 115 7 1.227679 .5559428 + 115 8 .1884174 -.2892387 + 115 9 1.867471 .5786712 + 115 10 2.333602 3.665067 + 116 1 -.2838019 .5397308 + 116 2 -.0743282 .03362 + 116 3 -1.390081 -1.25984 + 116 4 -.7925932 .651867 + 116 5 -.4653697 1.019436 + 116 6 -1.737794 -2.05872 + 116 7 -.1542077 -.8429675 + 116 8 -.1742824 1.889222 + 116 9 -.218655 .393846 + 116 10 .2456035 2.077366 + 117 1 -.8520899 1.058148 + 117 2 -.5770284 1.787735 + 117 3 -.7568671 -.834977 + 117 4 .1464327 -2.417961 + 117 5 -.3322017 -1.907948 + 117 6 .4868663 2.144097 + 117 7 -1.063539 .6907289 + 117 8 -.4787531 -.5964946 + 117 9 -.3970969 .2641942 + 117 10 .9385663 1.85771 + 118 1 -.9728964 -2.14444 + 118 2 -1.526036 -4.672813 + 118 3 -.6930456 -1.524115 + 118 4 -.1408402 -1.905714 + 118 5 -.2694957 -3.529598 + 118 6 -.4137527 -2.309146 + 118 7 -.8092418 -1.716916 + 118 8 -1.502103 -2.9842 + 118 9 -.6589891 -3.01728 + 118 10 -1.06735 -2.348024 + 119 1 1.195466 -3.292557 + 119 2 1.885971 -1.199523 + 119 3 .4774106 -2.676813 + 119 4 .8775216 -2.975778 + 119 5 1.12687 -.664959 + 119 6 1.322387 -.9901112 + 119 7 .9471256 -1.757863 + 119 8 .6504224 -1.37303 + 119 9 .6395935 -3.285441 + 119 10 .2788958 -3.098464 + 120 1 -1.505186 -.6822897 + 120 2 -.1863681 -.8140666 + 120 3 -.1696211 -1.998106 + 120 4 -.3226475 -.8244213 + 120 5 -.568579 -1.075819 + 120 6 -1.598264 -2.777033 + 120 7 -1.058119 -4.563534 + 120 8 -.7734848 -2.518186 + 120 9 -.394709 .9269257 + 120 10 -.9740321 -3.21834 + 121 1 -.4891163 -.5992677 + 121 2 .1057358 -.3556572 + 121 3 .8981277 2.899486 + 121 4 -.5074894 -2.993659 + 121 5 -.1182769 3.665098 + 121 6 -1.046309 -.3870076 + 121 7 .0576563 1.524976 + 121 8 .1695461 .354616 + 121 9 -.9486295 2.9306 + 121 10 -.2887603 2.591684 + 122 1 -.1706829 -.8137514 + 122 2 -.1512809 -.4865153 + 122 3 -1.866713 -2.345707 + 122 4 .2566354 .8374416 + 122 5 -.7825446 1.330374 + 122 6 -1.02989 .6564873 + 122 7 -.6444219 -.3626479 + 122 8 -.2783471 .6864146 + 122 9 -.7015004 .5802032 + 122 10 -.6379129 1.608424 + 123 1 -2.318145 -3.890716 + 123 2 -1.875275 -3.094651 + 123 3 .1264697 .7230974 + 123 4 -.8920876 -4.149077 + 123 5 -1.682701 -1.914709 + 123 6 -1.743317 -2.600914 + 123 7 -1.819896 -3.333781 + 123 8 -2.960504 -2.589056 + 123 9 -2.509812 -1.578856 + 123 10 -3.222315 -4.181535 + 124 1 1.340514 .9054741 + 124 2 -.4462702 -.9070659 + 124 3 -.3843558 .4841001 + 124 4 -.6317815 -.3784642 + 124 5 .3321961 -.1564197 + 124 6 .511156 -.6143296 + 124 7 .4042374 -1.746679 + 124 8 .360633 .7452682 + 124 9 1.109597 3.695779 + 124 10 .8513098 1.611356 + 125 1 1.03682 3.06856 + 125 2 -1.646388 3.689954 + 125 3 -.3264412 2.370048 + 125 4 -1.875114 .5472155 + 125 5 -.0959938 1.090865 + 125 6 -.4162325 2.723062 + 125 7 -.1119899 3.420455 + 125 8 -.4904234 4.488451 + 125 9 -.8705801 2.8891 + 125 10 -.5656731 1.742721 + 126 1 .1805784 -3.235839 + 126 2 1.179855 2.45316 + 126 3 .8037672 1.416103 + 126 4 1.080037 2.337693 + 126 5 1.084708 -.8897643 + 126 6 1.823085 2.830274 + 126 7 .8762894 .4271989 + 126 8 .9406815 .5138517 + 126 9 -.2232153 -2.698347 + 126 10 1.406596 .6613618 + 127 1 .0165641 .5003499 + 127 2 2.179157 1.309202 + 127 3 .3198292 -.6243532 + 127 4 -.3691842 -.1071197 + 127 5 1.715909 2.847828 + 127 6 .1733232 -1.884756 + 127 7 .6009777 .8099669 + 127 8 .9436939 -.2137216 + 127 9 -.0949055 2.212341 + 127 10 .017553 -.4165724 + 128 1 -.5433387 .4253175 + 128 2 -.5029234 .5789004 + 128 3 .5211815 .098434 + 128 4 -1.327222 .3302552 + 128 5 -.6762775 -.9722145 + 128 6 -.3618637 -.2873932 + 128 7 -.7687715 -.7687259 + 128 8 -.2951016 .1257518 + 128 9 -.7266483 .0674387 + 128 10 -1.252552 -.8973701 + 129 1 -.0863846 3.102758 + 129 2 .9026731 3.456725 + 129 3 -.7877837 .5526427 + 129 4 -.5163476 -.6269442 + 129 5 -1.363382 -1.187456 + 129 6 -.4138386 -1.110376 + 129 7 -.1353253 -.9504108 + 129 8 .5943301 -1.692959 + 129 9 -.5309526 -2.062739 + 129 10 .1095079 1.121347 + 130 1 1.929706 2.765751 + 130 2 -.0655605 -.5198578 + 130 3 1.028925 -.2150865 + 130 4 .3135404 -1.307056 + 130 5 1.903801 .0877836 + 130 6 2.278376 2.261121 + 130 7 .0735654 -.3298533 + 130 8 .8811373 1.480693 + 130 9 1.062071 1.474062 + 130 10 -.1125495 -.9275653 + 131 1 .0648873 -.3521852 + 131 2 -.5791595 .1308538 + 131 3 .4199167 -.3386582 + 131 4 -.4558089 -2.617508 + 131 5 -.0722665 -.4281615 + 131 6 .231862 -1.886847 + 131 7 1.478834 .0224241 + 131 8 -1.001553 -.0847604 + 131 9 -.1782843 -1.917283 + 131 10 -.1564308 -3.130079 + 132 1 -1.019181 .0200638 + 132 2 -.4961173 .3865641 + 132 3 1.35356 -.1029345 + 132 4 .1918307 .5736313 + 132 5 1.861858 1.116495 + 132 6 .2320639 -.0025085 + 132 7 1.038427 3.604883 + 132 8 .2566665 -3.379059 + 132 9 .732312 -1.152695 + 132 10 .3350747 .9386025 + 133 1 1.122148 1.134448 + 133 2 2.029797 2.722962 + 133 3 1.310429 .5122328 + 133 4 2.032864 3.624718 + 133 5 1.269219 .3060164 + 133 6 1.111681 3.18979 + 133 7 1.386283 1.256458 + 133 8 .9358281 .0616248 + 133 9 .8514835 1.056134 + 133 10 2.315762 2.355947 + 134 1 -1.371877 -1.179645 + 134 2 -.7040234 -1.103898 + 134 3 -.9803987 .8363541 + 134 4 -.9285728 -.7827415 + 134 5 .0662748 .0337842 + 134 6 .4045094 -.57982 + 134 7 -.5514838 -2.113352 + 134 8 .2958546 -1.124506 + 134 9 .8850405 2.800964 + 134 10 -.5244119 -.0116373 + 135 1 1.137474 5.961402 + 135 2 .4784831 2.94379 + 135 3 .2625026 .9176828 + 135 4 .3104182 2.860877 + 135 5 .5137424 .7042544 + 135 6 1.306909 1.435339 + 135 7 -.0313864 .5228027 + 135 8 -.186235 -1.271922 + 135 9 1.584509 3.459329 + 135 10 .3404723 1.439009 + 136 1 -.3176857 3.307505 + 136 2 -1.389532 -2.251975 + 136 3 -.4894886 1.971502 + 136 4 -.6021305 -.155708 + 136 5 .9800115 2.344574 + 136 6 -.1674932 2.814846 + 136 7 .1358826 3.535276 + 136 8 -.4418559 .4957766 + 136 9 .5035751 3.340428 + 136 10 .08826 1.968644 + 137 1 .906303 .7483035 + 137 2 1.829715 2.394549 + 137 3 1.51302 1.847137 + 137 4 .6979597 -1.117381 + 137 5 2.68907 2.52242 + 137 6 .683557 -.5037488 + 137 7 2.051676 1.404773 + 137 8 2.000847 1.751018 + 137 9 2.357832 .8735614 + 137 10 .5347344 -1.817397 + 138 1 -.2812151 .4206019 + 138 2 -1.642295 -2.360229 + 138 3 -1.454205 -1.527778 + 138 4 -2.180756 -.5560856 + 138 5 -.9034208 -1.375717 + 138 6 -.8739077 .021745 + 138 7 -1.219949 .7918775 + 138 8 -1.860803 .6987982 + 138 9 -.1424217 .9080375 + 138 10 -.4411889 2.296062 + 139 1 .2368722 -.7969258 + 139 2 .7704114 .7053307 + 139 3 .8776377 3.900215 + 139 4 .2862734 -1.59924 + 139 5 1.031795 1.900746 + 139 6 1.151224 .534938 + 139 7 -.6417074 -.6551379 + 139 8 .9852904 2.471547 + 139 9 1.169294 1.234408 + 139 10 .032294 1.991022 + 140 1 .6665971 -2.094111 + 140 2 -.2493329 .2993383 + 140 3 -1.130127 -2.9526 + 140 4 .4320592 -.0345785 + 140 5 -.7153089 -2.068078 + 140 6 .3478394 .0754025 + 140 7 -.4798547 -1.600744 + 140 8 -.0301924 -.9981151 + 140 9 1.057889 -.3962929 + 140 10 .3649959 -1.809456 + 141 1 .6948985 .0793539 + 141 2 1.062332 .45043 + 141 3 .4595664 -.5577831 + 141 4 .0985885 -1.271958 + 141 5 .0999379 -.042119 + 141 6 .1427608 -1.793847 + 141 7 -.6946738 -3.248423 + 141 8 1.637022 .2051989 + 141 9 .3412363 -4.153411 + 141 10 .8315647 -.3269548 + 142 1 -1.352595 1.700809 + 142 2 .9540107 3.203953 + 142 3 -.1943454 -2.001988 + 142 4 -.3280677 1.080932 + 142 5 -.2086546 .6752999 + 142 6 -.6101229 -1.751971 + 142 7 -.2566233 .2131354 + 142 8 -.5246541 .8350056 + 142 9 .1646399 3.462605 + 142 10 -1.034909 .2646542 + 143 1 .0448691 2.41865 + 143 2 -.4356121 1.32812 + 143 3 -.0825828 .8118514 + 143 4 -.630595 2.053387 + 143 5 .649057 3.950355 + 143 6 .096456 2.184955 + 143 7 -.4990795 2.296469 + 143 8 -.3597159 1.500352 + 143 9 -.7083262 .3796474 + 143 10 .8274471 4.496874 + 144 1 -.5294296 1.311344 + 144 2 -.5713952 1.858385 + 144 3 -.3006437 -1.726695 + 144 4 -1.384088 -.1837583 + 144 5 -.5069499 -2.010858 + 144 6 -1.004325 -1.045414 + 144 7 -.3126183 -3.429463 + 144 8 -.5474278 -1.329987 + 144 9 -.7577525 -4.937083 + 144 10 .2396353 1.777937 + 145 1 1.541924 -.1254331 + 145 2 1.512024 -2.073712 + 145 3 .3673947 -2.13974 + 145 4 1.114393 -2.830455 + 145 5 1.060051 -3.271914 + 145 6 1.90557 -1.784583 + 145 7 1.757367 .2454436 + 145 8 .7203176 -1.009822 + 145 9 1.711954 -.7102479 + 145 10 -.1281954 1.165511 + 146 1 -1.215603 -1.587076 + 146 2 -.4438338 .9181454 + 146 3 -2.283071 -3.738272 + 146 4 -.7138093 -1.972057 + 146 5 -1.202025 -.9141591 + 146 6 -.8173367 -.883429 + 146 7 -3.157542 -4.270138 + 146 8 -1.497 -2.764462 + 146 9 -1.992007 -2.039938 + 146 10 -2.528262 -3.457254 + 147 1 .5213266 .1857789 + 147 2 .4904672 2.447836 + 147 3 1.393715 2.433999 + 147 4 .3898938 1.493939 + 147 5 1.621289 -.894845 + 147 6 -.3683619 -4.491122 + 147 7 .3010333 .6107273 + 147 8 .615381 2.375362 + 147 9 .0909443 -.1493371 + 147 10 .0181424 -.6748795 + 148 1 2.71172 -.3160677 + 148 2 -.5428204 -.8188478 + 148 3 1.742009 .826719 + 148 4 -.3614109 .7353384 + 148 5 .9825044 1.787014 + 148 6 .7107928 3.372693 + 148 7 1.158519 -.1193373 + 148 8 2.228199 1.12973 + 148 9 1.365829 4.386292 + 148 10 1.24592 1.849743 + 149 1 .207574 1.886866 + 149 2 -.8468529 -2.753048 + 149 3 .2717996 1.497869 + 149 4 .3642048 1.418869 + 149 5 .1037671 -.7140926 + 149 6 .1752419 2.269934 + 149 7 .6261655 1.209206 + 149 8 .5711751 1.003731 + 149 9 -.6657945 -.456066 + 149 10 .3443209 2.454392 + 150 1 .2628663 1.323564 + 150 2 .6836686 -1.891596 + 150 3 1.619647 -1.81405 + 150 4 .8878975 -1.088468 + 150 5 -.0628102 -1.712478 + 150 6 1.923237 -2.548779 + 150 7 1.451509 2.931875 + 150 8 .1321426 -.3560954 + 150 9 .4843097 -3.881274 + 150 10 .754445 -3.077117 + 151 1 -2.517717 -4.641908 + 151 2 -.8917969 .0885197 + 151 3 -.5842545 2.205779 + 151 4 .8742589 3.861263 + 151 5 -.4193482 -2.215555 + 151 6 -.0577132 -.0754342 + 151 7 .7398254 3.246052 + 151 8 -1.143858 -1.191968 + 151 9 -1.146396 -1.016269 + 151 10 -1.288092 -1.071756 + 152 1 1.562281 2.749471 + 152 2 -.9508975 .9528586 + 152 3 .7187545 .0392965 + 152 4 .4721039 .7589168 + 152 5 -.0207431 1.84324 + 152 6 -.4801808 2.421382 + 152 7 2.097044 2.586039 + 152 8 1.109255 3.481569 + 152 9 .2616218 4.053693 + 152 10 .1788171 -1.294219 + 153 1 1.477348 3.929144 + 153 2 1.057103 .41298 + 153 3 -.2217751 -2.073408 + 153 4 -.267188 -.3797075 + 153 5 .7559541 2.532452 + 153 6 .1769513 1.02136 + 153 7 .1598735 1.685401 + 153 8 -.3026016 3.518153 + 153 9 1.820178 2.855754 + 153 10 .7838269 3.102 + 154 1 -.8993931 -.138353 + 154 2 -.6724625 -3.074205 + 154 3 -.8038765 -1.29403 + 154 4 .2693575 -.6093149 + 154 5 -.3154404 .2672532 + 154 6 -.8448217 -2.536916 + 154 7 .0219786 1.575316 + 154 8 -.3993881 -.1116466 + 154 9 .402795 .5490735 + 154 10 -.6840111 -1.837509 + 155 1 -1.082456 1.055131 + 155 2 .8114615 3.083379 + 155 3 .2702373 1.683426 + 155 4 -.5581403 .4628977 + 155 5 -.545866 2.844967 + 155 6 -1.666345 1.660014 + 155 7 .0318347 2.357635 + 155 8 -.8919484 2.853413 + 155 9 -.3911865 4.050969 + 155 10 -.856153 .7321634 + 156 1 .9273248 1.484378 + 156 2 1.052091 2.284382 + 156 3 1.090718 1.164228 + 156 4 .2807963 -.5431325 + 156 5 .396203 .9808029 + 156 6 .1767778 .1354672 + 156 7 1.063346 2.191927 + 156 8 .8674662 2.077389 + 156 9 .7487417 2.834185 + 156 10 .8119218 2.650764 + 157 1 -.2816002 .5675004 + 157 2 .4475866 -2.823788 + 157 3 -.4112304 -2.67265 + 157 4 -.0168083 -3.345162 + 157 5 .6453065 2.542101 + 157 6 -.0685401 -1.851216 + 157 7 -.6049193 -3.368436 + 157 8 -.5060703 -.5802656 + 157 9 .2292864 -.5126253 + 157 10 .8158804 2.626698 + 158 1 -.2299427 -2.208304 + 158 2 -1.465738 -2.873101 + 158 3 -.3851026 -1.714427 + 158 4 -1.844474 -1.992327 + 158 5 -1.350999 -3.181477 + 158 6 -.7661012 -1.666075 + 158 7 -.5182586 -.7006466 + 158 8 -.9606374 2.036036 + 158 9 -1.034296 .1654572 + 158 10 .1393013 -.8629993 + 159 1 -.5774902 -.7543121 + 159 2 .8418973 .5187241 + 159 3 1.517918 2.116457 + 159 4 .8281202 -1.74471 + 159 5 1.806037 1.28078 + 159 6 1.93653 -.396245 + 159 7 1.887751 -1.570058 + 159 8 1.095567 .810391 + 159 9 .6452029 -2.974287 + 159 10 .3336136 -2.130026 + 160 1 .0560004 -.1487989 + 160 2 -1.399459 -2.804983 + 160 3 -.3405381 1.282268 + 160 4 -.20107 1.814233 + 160 5 -.9442612 .5544719 + 160 6 -.6813218 3.145516 + 160 7 -.5853062 3.228242 + 160 8 -.530753 .0589817 + 160 9 -1.6505 2.271235 + 160 10 -.6733608 2.073979 + 161 1 -.218534 -.1218188 + 161 2 1.326365 -4.727849 + 161 3 -.3574726 -2.17107 + 161 4 .806392 -2.256358 + 161 5 .6057959 -.6157665 + 161 6 -.1914674 -.8217739 + 161 7 1.123208 -1.278828 + 161 8 .0383666 .209165 + 161 9 .1510715 1.572502 + 161 10 .6724604 .0346016 + 162 1 -1.170384 -3.043354 + 162 2 -.5699519 -1.509624 + 162 3 -1.610872 -.9715545 + 162 4 -.6910549 -2.046927 + 162 5 -1.883333 -1.94091 + 162 6 -2.304578 -.2563767 + 162 7 -.8585031 -2.268134 + 162 8 -.5821385 1.3434 + 162 9 -2.171582 -3.424878 + 162 10 .454142 1.304486 + 163 1 .0682683 .073052 + 163 2 1.214858 1.458254 + 163 3 1.357526 .3494359 + 163 4 1.979643 .9180176 + 163 5 .4225484 -.6500865 + 163 6 .3003607 -.4248528 + 163 7 -.339114 -.6688753 + 163 8 .6842546 -2.500318 + 163 9 -.2428847 -.5546069 + 163 10 1.191397 1.353616 + 164 1 .6984115 .8869818 + 164 2 -.3114632 .9693271 + 164 3 -.0676689 2.750735 + 164 4 .7536669 4.521238 + 164 5 .1868442 .9516076 + 164 6 -.1413355 2.492955 + 164 7 -.0511391 1.754971 + 164 8 1.406439 2.877561 + 164 9 -.7319694 .6230732 + 164 10 .8252794 1.335801 + 165 1 .0236589 -.9568677 + 165 2 -.6532319 -2.279805 + 165 3 .0748333 -1.890834 + 165 4 .9480297 -.1938213 + 165 5 .8366396 1.58709 + 165 6 1.534068 .4348792 + 165 7 .7708839 -.1618721 + 165 8 .4274171 -.4873622 + 165 9 .1870074 -2.155049 + 165 10 -.177515 -3.110621 + 166 1 -1.098859 -.5920581 + 166 2 -.9290608 -3.101122 + 166 3 .6131724 .1522057 + 166 4 -1.122446 -3.268791 + 166 5 .0560356 -.7794154 + 166 6 .2710847 .5500305 + 166 7 -.2026692 1.28108 + 166 8 -.8099154 -1.907041 + 166 9 -2.736868 -2.196124 + 166 10 -1.096448 -1.580692 + 167 1 -.0526631 .6041983 + 167 2 -1.100535 -.9912623 + 167 3 .4149659 2.40076 + 167 4 -.00472 -.7278086 + 167 5 .1049893 1.215227 + 167 6 -.7315287 .6685522 + 167 7 .045641 -2.670578 + 167 8 -1.559566 -3.385414 + 167 9 -.0435758 -.873367 + 167 10 -.0101412 -.2595538 + 168 1 .6619704 -.7978195 + 168 2 -1.050731 -2.828812 + 168 3 .8178414 1.922439 + 168 4 .1073398 -3.332251 + 168 5 .453701 -.3862498 + 168 6 -.7143505 .2527356 + 168 7 .7485694 -.1312749 + 168 8 -1.095729 2.762357 + 168 9 -.4723473 1.318529 + 168 10 -.0350396 1.18769 + 169 1 -.3648554 -2.039038 + 169 2 -.7180243 .3142204 + 169 3 -2.948345 -5.349726 + 169 4 -.5315265 .3370739 + 169 5 -2.353969 -2.752182 + 169 6 -2.540482 -4.304165 + 169 7 -1.168728 -3.280766 + 169 8 -.0774826 -1.82157 + 169 9 -1.571125 -1.27434 + 169 10 -1.239722 -1.242517 + 170 1 -2.142673 -5.261681 + 170 2 -1.329374 -3.544588 + 170 3 1.601171 1.540548 + 170 4 -.6785678 -1.09221 + 170 5 -1.47225 -3.393965 + 170 6 -.142407 .316651 + 170 7 -.2646598 2.637469 + 170 8 -.5096512 .9664109 + 170 9 -.2833731 -1.389762 + 170 10 -.7669728 .1936933 + 171 1 -.8192428 1.13311 + 171 2 .9898943 2.297665 + 171 3 -.0230184 .1006097 + 171 4 .2399236 1.095949 + 171 5 .3053612 .5748833 + 171 6 .963463 .8180534 + 171 7 -.4860988 .9527991 + 171 8 -.0692099 1.825514 + 171 9 -.8502733 .6388777 + 171 10 -1.283414 .3734815 + 172 1 -.8431298 -.9268867 + 172 2 .3529854 1.298038 + 172 3 -.0375654 1.294601 + 172 4 -.0359143 2.425815 + 172 5 -.1419308 3.632447 + 172 6 -.4898075 -.1270456 + 172 7 -1.571141 -2.091832 + 172 8 -.5063169 -.9404621 + 172 9 -.5323418 .6808207 + 172 10 -1.265365 -1.659448 + 173 1 -.3074681 -3.744056 + 173 2 .0128831 -1.369184 + 173 3 1.668606 -.0936919 + 173 4 .8933852 -.8467079 + 173 5 -.106788 -1.579046 + 173 6 .9782317 -1.1189 + 173 7 .0619686 -.5123405 + 173 8 .7482453 .7251906 + 173 9 -.5718384 -3.033018 + 173 10 1.208004 -1.774972 + 174 1 1.183647 3.633567 + 174 2 .6571789 4.917963 + 174 3 .4104261 .1076078 + 174 4 .8509687 1.172129 + 174 5 -.8918184 -.8303726 + 174 6 .1956672 1.496083 + 174 7 1.578395 2.710816 + 174 8 .4049356 4.484574 + 174 9 .8937336 4.950325 + 174 10 .4529676 1.405937 + 175 1 -1.65352 .0838972 + 175 2 -.2309531 5.697551 + 175 3 -.4318032 1.911139 + 175 4 -1.510749 -.7804399 + 175 5 -1.452483 .8695905 + 175 6 -1.381688 2.011106 + 175 7 -.564146 1.581408 + 175 8 -.8667379 3.02288 + 175 9 -1.358863 2.856873 + 175 10 -1.24699 3.225023 + 176 1 -.7295141 -.5809878 + 176 2 -2.073046 -3.792236 + 176 3 -.981509 -2.365548 + 176 4 -.7187941 -3.629414 + 176 5 -2.802562 -3.765871 + 176 6 -2.055736 -3.568851 + 176 7 -1.469411 -2.648622 + 176 8 -1.010402 -2.448078 + 176 9 -1.449149 -3.446722 + 176 10 -2.346939 -5.786505 + 177 1 -.3697796 -.6789604 + 177 2 1.658121 -2.204923 + 177 3 1.230698 -.4189701 + 177 4 .0864893 1.322332 + 177 5 -.060457 -2.350932 + 177 6 .2571428 -3.105993 + 177 7 .7984378 1.419838 + 177 8 -.3508098 -3.753417 + 177 9 .7591479 -2.407995 + 177 10 1.226709 -.5637372 + 178 1 -1.368852 1.340317 + 178 2 -.6685671 .6986182 + 178 3 -.8064997 .1810547 + 178 4 -1.388262 -.1908172 + 178 5 -1.228139 -.9698696 + 178 6 -2.199634 -2.745624 + 178 7 -1.687684 -3.254971 + 178 8 -1.797085 .9033581 + 178 9 -1.359861 1.150749 + 178 10 -.7983872 2.317923 + 179 1 1.094101 2.901727 + 179 2 1.515052 -.5104455 + 179 3 .2674952 .7494395 + 179 4 1.027182 1.570767 + 179 5 -.25699 -.889062 + 179 6 .5751835 3.536514 + 179 7 1.524367 2.614656 + 179 8 -.3513322 -2.906071 + 179 9 1.656786 2.172945 + 179 10 .4702808 -1.204862 + 180 1 2.041242 1.66587 + 180 2 1.818126 2.058042 + 180 3 1.733074 3.325069 + 180 4 .8396602 -1.171018 + 180 5 .9472879 3.138461 + 180 6 1.272281 1.856169 + 180 7 1.235971 1.544322 + 180 8 .7575622 3.129912 + 180 9 1.116356 .8618689 + 180 10 .8841577 1.861653 + 181 1 .1386561 -4.148429 + 181 2 -1.186929 -3.865263 + 181 3 -1.55532 -5.218671 + 181 4 -1.464089 -3.000787 + 181 5 -1.996886 -5.138233 + 181 6 -.516063 -2.819559 + 181 7 -.7101689 -6.558918 + 181 8 -1.478828 -5.465365 + 181 9 -.7180475 -3.681235 + 181 10 .2140186 -2.606836 + 182 1 -.2790625 2.057077 + 182 2 -.3927402 .0625171 + 182 3 -.8911508 2.052067 + 182 4 -.9866819 -.9560664 + 182 5 -1.662471 .299643 + 182 6 -.6471785 -.4327168 + 182 7 -2.078366 .0206296 + 182 8 -1.421348 .3885998 + 182 9 -2.044713 -2.029938 + 182 10 -1.259837 -1.107218 + 183 1 .3027718 1.759707 + 183 2 -.3815809 2.863256 + 183 3 -1.022873 3.508856 + 183 4 -.9037364 .8475043 + 183 5 -.1228331 .2998169 + 183 6 .288749 2.339627 + 183 7 -1.309011 1.714386 + 183 8 -1.027871 -.2569484 + 183 9 -.8841406 2.50456 + 183 10 -1.15667 1.920699 + 184 1 -1.286843 -4.772414 + 184 2 -.1695421 -.5259076 + 184 3 -.6703273 -4.031744 + 184 4 -.3343556 -.8105775 + 184 5 -.3262946 -1.871442 + 184 6 -1.036542 -1.273887 + 184 7 -2.331001 -2.36356 + 184 8 -.2657892 -2.086825 + 184 9 -1.450755 -3.954972 + 184 10 -1.459442 -3.882952 + 185 1 .2876309 -1.468898 + 185 2 .8273166 .729457 + 185 3 .761857 .1457367 + 185 4 .4231769 1.902594 + 185 5 -.8880459 .8271645 + 185 6 -.6206563 -1.953304 + 185 7 -.550608 2.574509 + 185 8 -.6142449 1.10793 + 185 9 .8701097 -2.436863 + 185 10 .3838095 .2974561 + 186 1 -.10691 -2.063178 + 186 2 1.672973 1.787359 + 186 3 -.9649013 -.0390061 + 186 4 .8487311 1.591314 + 186 5 .2074853 -.5610718 + 186 6 1.55586 2.597752 + 186 7 .8356314 .7631337 + 186 8 1.416516 3.575981 + 186 9 1.20095 -1.368798 + 186 10 .1686722 .0692553 + 187 1 1.36779 1.669715 + 187 2 2.404252 1.25666 + 187 3 1.042808 1.699085 + 187 4 1.327344 4.357837 + 187 5 .7424465 2.182179 + 187 6 .4293301 3.210378 + 187 7 .3484732 1.275487 + 187 8 1.050426 3.226163 + 187 9 .7814149 .2671545 + 187 10 1.997925 2.075275 + 188 1 .0612062 -.2217263 + 188 2 -.583554 1.914097 + 188 3 -.3951586 -1.674586 + 188 4 -.6148574 -1.304543 + 188 5 .3040142 -1.728247 + 188 6 -1.52957 .5878383 + 188 7 -1.537565 -3.790133 + 188 8 .671102 -1.718776 + 188 9 -.2064778 -.8064378 + 188 10 -.5119709 -2.458233 + 189 1 .5784101 -1.408868 + 189 2 .7647842 -1.240584 + 189 3 -.0913445 -.754285 + 189 4 .2193833 -2.803572 + 189 5 1.25874 -.3929558 + 189 6 -.174836 -.1817976 + 189 7 .0507956 -2.212095 + 189 8 1.575013 2.304653 + 189 9 -.0095097 -1.811476 + 189 10 1.326639 .2687823 + 190 1 -.7176436 -5.431726 + 190 2 -.4177297 -3.3828 + 190 3 -.0918092 -.8447255 + 190 4 .5558158 -1.402351 + 190 5 .7448398 1.004804 + 190 6 -.0382538 .7030895 + 190 7 1.305051 -2.543672 + 190 8 .7613887 .7890249 + 190 9 .0694763 -1.54734 + 190 10 .4564758 -.6706207 + 191 1 -.0055784 .0404293 + 191 2 -1.756267 -2.370427 + 191 3 -1.478872 -.7058254 + 191 4 -1.535994 -.0743753 + 191 5 -2.755957 -1.916599 + 191 6 -1.04365 -1.802165 + 191 7 -1.622453 -1.605473 + 191 8 -.4134297 -.852227 + 191 9 .056267 -1.791846 + 191 10 .1459906 -1.109663 + 192 1 .0032432 -1.867342 + 192 2 -.0151666 .5074528 + 192 3 .8724207 -1.805142 + 192 4 -.2626871 .5697799 + 192 5 .2767297 -.1327526 + 192 6 1.100403 .6743398 + 192 7 1.163487 -1.40558 + 192 8 1.046137 -1.071273 + 192 9 .9875138 -.5554947 + 192 10 .2053632 -1.321015 + 193 1 -1.044531 -2.058052 + 193 2 -.2429246 -1.240499 + 193 3 -1.010574 -1.428591 + 193 4 -1.376134 -.9814488 + 193 5 -1.35945 -1.137418 + 193 6 -.7388539 -.1165088 + 193 7 -1.00588 -2.560542 + 193 8 -.93126 -.3635462 + 193 9 -1.672588 -3.920544 + 193 10 -.7883782 .5749516 + 194 1 -.0390103 -2.169574 + 194 2 -.3091158 .3503246 + 194 3 -.6255381 -2.170662 + 194 4 -1.941136 -2.747964 + 194 5 .0576752 2.55669 + 194 6 1.063581 -.4598726 + 194 7 .3590502 1.891446 + 194 8 -1.478308 -1.741462 + 194 9 -.9439784 -2.085554 + 194 10 -.3036149 -2.53867 + 195 1 -1.001537 -1.44371 + 195 2 -.0441078 .3171684 + 195 3 -.3091689 .5224478 + 195 4 .1642665 3.342635 + 195 5 -.8819084 -.7864232 + 195 6 1.323652 1.063313 + 195 7 -.6374608 1.250782 + 195 8 .3815121 1.333839 + 195 9 .2838958 -1.586505 + 195 10 .2159456 -1.196706 + 196 1 -.8203834 2.286663 + 196 2 -1.346538 1.827768 + 196 3 -.0821335 1.284756 + 196 4 .3236315 -1.249282 + 196 5 -.5455182 .7758048 + 196 6 .5071004 -.6679618 + 196 7 -.0010483 .9390697 + 196 8 -.3543162 .4829406 + 196 9 .1510304 .6003446 + 196 10 .5451254 2.931818 + 197 1 -.3781313 .397656 + 197 2 .9001364 3.407543 + 197 3 1.11848 1.184757 + 197 4 .5995359 2.517887 + 197 5 1.403811 2.62401 + 197 6 .4402975 1.773258 + 197 7 1.789099 3.222227 + 197 8 1.309173 2.779097 + 197 9 1.206456 .2925524 + 197 10 2.36869 6.428272 + 198 1 .0400497 1.471897 + 198 2 -.4505612 2.959075 + 198 3 -.3389474 -.0568686 + 198 4 .5077369 -.3890538 + 198 5 1.640716 3.188256 + 198 6 -.4192427 -.8429539 + 198 7 -.0856177 -.9218082 + 198 8 1.049565 3.662166 + 198 9 .6712843 -.7652535 + 198 10 1.015924 2.130288 + 199 1 1.335665 1.375303 + 199 2 .3707056 1.229685 + 199 3 1.502883 3.053051 + 199 4 1.09996 1.659595 + 199 5 1.722772 2.550652 + 199 6 .7027981 -1.601562 + 199 7 1.236368 .3792193 + 199 8 .7596202 1.003462 + 199 9 .8186638 -1.006504 + 199 10 .8747464 .7492996 + 200 1 .2496182 -.6427897 + 200 2 -.5204648 -4.013382 + 200 3 1.058033 2.593933 + 200 4 .2543158 -2.984094 + 200 5 .3098024 .5154909 + 200 6 .88994 -.3510085 + 200 7 -.6196515 -2.219406 + 200 8 -.481198 -4.201015 + 200 9 .008196 -.6397054 + 200 10 .3850856 -1.49666 + 201 1 .3099373 .3741831 + 201 2 -1.036105 -1.157182 + 201 3 -1.483137 -2.992256 + 201 4 -.4611127 -.1922358 + 201 5 .3995545 -1.181416 + 201 6 -1.132733 1.72567 + 201 7 .7729884 2.696115 + 201 8 .1028151 3.149239 + 201 9 .5339602 1.950588 + 201 10 .6820886 .7440397 + 202 1 -.2146198 2.857153 + 202 2 -.32135 .7411867 + 202 3 .732195 1.985388 + 202 4 -.6136075 -.0703884 + 202 5 .3990219 -.5865121 + 202 6 -.4442025 -1.754021 + 202 7 -.3821937 2.526712 + 202 8 -.2255107 1.063442 + 202 9 1.470879 1.459439 + 202 10 -.0656427 .8098302 + 203 1 1.046151 5.808048 + 203 2 .4258604 4.532372 + 203 3 -.2120585 1.688599 + 203 4 .5791008 2.586599 + 203 5 1.855478 5.070837 + 203 6 -.3470984 1.554683 + 203 7 1.124477 5.568844 + 203 8 .4761629 2.526216 + 203 9 -.4130365 .5501781 + 203 10 -.5430018 2.957802 + 204 1 -.6424686 -3.079251 + 204 2 -1.023347 -1.21871 + 204 3 -1.146224 1.582628 + 204 4 -1.35649 -1.266184 + 204 5 -1.673099 -4.739756 + 204 6 -.6709613 -2.562531 + 204 7 .7989284 -1.13616 + 204 8 -.4266404 -.2057255 + 204 9 -1.570767 -1.765625 + 204 10 -1.746535 -.0629807 + 205 1 -.3690447 -1.437742 + 205 2 -1.460822 1.801379 + 205 3 -1.266762 -.2483381 + 205 4 -.7891883 1.205004 + 205 5 -2.093906 -.1600716 + 205 6 -.8961874 -2.263684 + 205 7 -2.332494 -2.124993 + 205 8 -.3617198 -2.051425 + 205 9 -1.058901 -.9806469 + 205 10 -.7648399 -.7630386 + 206 1 .589663 -1.754721 + 206 2 .9986748 -1.297907 + 206 3 .6378127 .1815986 + 206 4 1.248174 -.7912217 + 206 5 1.9877 .2900411 + 206 6 .9381645 -2.304149 + 206 7 1.225571 -3.284773 + 206 8 1.242543 -2.005627 + 206 9 .1330562 -.3519955 + 206 10 1.543778 -1.934863 + 207 1 .0584711 .0916879 + 207 2 .3467418 .2420788 + 207 3 .2211787 -.1294392 + 207 4 -.137219 1.308466 + 207 5 -.8779281 3.251486 + 207 6 1.506027 .295622 + 207 7 -.0785543 -1.943282 + 207 8 .7102866 1.827549 + 207 9 -.2366241 -1.687964 + 207 10 -.7862691 -.7598147 + 208 1 .9536135 -.2365135 + 208 2 -.5778862 .2278703 + 208 3 -.6760517 1.08672 + 208 4 -.5979557 -1.902714 + 208 5 -.360365 -3.387309 + 208 6 -.1971353 -1.766531 + 208 7 -.6506908 -1.911484 + 208 8 -.0744228 -3.515426 + 208 9 .7865167 -1.038733 + 208 10 .7181262 .8270651 + 209 1 .026861 .4301842 + 209 2 .4520307 -.8377256 + 209 3 .5395158 .0731654 + 209 4 .3188552 -2.764389 + 209 5 .5988429 -1.267686 + 209 6 -1.261472 -1.787062 + 209 7 -.8700297 -.1150556 + 209 8 .0528209 -1.625305 + 209 9 -.7411549 .3065581 + 209 10 .2551177 .4168022 + 210 1 -.397064 1.206704 + 210 2 .3823742 1.436503 + 210 3 .4232594 2.508531 + 210 4 .8359489 2.073889 + 210 5 -.0938416 3.236282 + 210 6 -.6273575 1.587862 + 210 7 -.6200729 2.351383 + 210 8 .8541753 5.381388 + 210 9 -.1695279 .3288944 + 210 10 .1575173 2.699981 + 211 1 -.6115948 -.6593454 + 211 2 -1.269506 -.5478505 + 211 3 -1.775899 .3491354 + 211 4 -1.987448 -.7273456 + 211 5 .4647724 .7426664 + 211 6 -.7316316 1.907359 + 211 7 .2238102 -.889735 + 211 8 -.7701637 .7481177 + 211 9 -.7595081 2.616494 + 211 10 -.0325096 2.030333 + 212 1 .1074353 -2.715808 + 212 2 -1.252298 -2.327907 + 212 3 -.1214904 -2.503762 + 212 4 -.2859883 .6002074 + 212 5 -2.082076 -1.973044 + 212 6 -1.288194 -2.457169 + 212 7 -1.11734 -2.628028 + 212 8 -1.48377 -.5055826 + 212 9 -.7496727 -.8523708 + 212 10 -.4095735 -1.028753 + 213 1 .1157584 1.585741 + 213 2 -1.210966 -1.51502 + 213 3 -.5273772 3.486576 + 213 4 .2860503 -.1705396 + 213 5 -.9399279 2.548553 + 213 6 .1440045 3.439235 + 213 7 -.1585683 .5509651 + 213 8 1.064464 3.606317 + 213 9 1.024311 2.368155 + 213 10 .0757167 3.073461 + 214 1 .0393643 1.782546 + 214 2 -.1399209 -.345655 + 214 3 .5318901 3.060665 + 214 4 .2483835 2.366034 + 214 5 -.1048664 .5627356 + 214 6 .5062177 2.725866 + 214 7 .8353537 3.534654 + 214 8 .7435631 1.709099 + 214 9 -.7843632 -.1813493 + 214 10 .0163605 .8226073 + 215 1 -.3170136 2.38967 + 215 2 -1.163158 -1.027452 + 215 3 -.2016526 1.281934 + 215 4 .4909714 1.617236 + 215 5 .055177 -.1614739 + 215 6 1.567225 1.763654 + 215 7 1.170562 4.101787 + 215 8 .2476525 1.611567 + 215 9 .3556964 1.783192 + 215 10 .3198597 .4008409 + 216 1 -2.074243 -4.214386 + 216 2 -.8852009 -2.345138 + 216 3 -.4873275 -2.671689 + 216 4 .0963273 -.9806806 + 216 5 .1684674 .1848676 + 216 6 .2145195 -1.712924 + 216 7 -.6465462 -1.712248 + 216 8 -.6484512 -.5808405 + 216 9 -.8860222 -2.57017 + 216 10 .4250713 .9380507 + 217 1 -.1319532 -1.571933 + 217 2 -.6577279 -6.107401 + 217 3 -.192555 -.9965724 + 217 4 -.4235805 -.9436349 + 217 5 .0526127 -.2904944 + 217 6 .8045008 -2.684737 + 217 7 .0118851 -.0956637 + 217 8 -.5699707 -1.991468 + 217 9 .1662653 -1.306746 + 217 10 -.1651694 -.3999853 + 218 1 -1.217432 -1.447173 + 218 2 -1.050732 -2.609342 + 218 3 -1.291843 -.3073467 + 218 4 -.9993242 -2.452848 + 218 5 -1.328904 -.3746817 + 218 6 -.4186512 -1.893099 + 218 7 -.6546846 -1.902259 + 218 8 -.8473139 -4.108675 + 218 9 -1.27959 -2.505211 + 218 10 -1.097345 -3.561725 + 219 1 -.0096319 .0481462 + 219 2 .0874925 -.7166294 + 219 3 1.849615 .670902 + 219 4 -1.148196 -2.490605 + 219 5 -.1043687 .1359784 + 219 6 -.0589613 1.497483 + 219 7 1.731141 1.519123 + 219 8 -.6947308 -1.322912 + 219 9 .0389968 .7707486 + 219 10 1.704867 .2567713 + 220 1 .6485268 4.05531 + 220 2 -.1761502 1.216829 + 220 3 .2396707 1.822027 + 220 4 -1.524206 .0386034 + 220 5 .6651192 3.15463 + 220 6 .7191977 3.037493 + 220 7 -1.313106 .192916 + 220 8 -1.65724 .9152255 + 220 9 -.8092532 3.665651 + 220 10 .2012606 2.003225 + 221 1 -1.148003 -.1471343 + 221 2 .2904049 1.197849 + 221 3 .5464238 -.2591565 + 221 4 -.1814473 .0088937 + 221 5 .3241171 6.19451 + 221 6 .4215039 2.409876 + 221 7 .3248 2.900002 + 221 8 -.1258446 2.709362 + 221 9 -1.463248 -2.533578 + 221 10 -.7155107 -1.626988 + 222 1 .3355351 -2.117195 + 222 2 .1610266 -1.96146 + 222 3 -.6646451 -4.341068 + 222 4 .6121821 -.8355237 + 222 5 .6628336 1.685138 + 222 6 .322869 -.8037829 + 222 7 1.249763 1.510134 + 222 8 -.1471668 -.2892464 + 222 9 -.0021361 .4682435 + 222 10 .2214926 .5726926 + 223 1 .2539428 4.20888 + 223 2 -.0829283 1.571763 + 223 3 .3840784 1.46634 + 223 4 -.0696943 -.7417974 + 223 5 -.3747577 .2772295 + 223 6 .519278 1.166323 + 223 7 .5366142 2.119918 + 223 8 .8278123 -1.529441 + 223 9 1.724613 3.570709 + 223 10 .5860537 1.064656 + 224 1 .4141248 -.4412816 + 224 2 .6286317 2.911754 + 224 3 2.227542 3.725024 + 224 4 .5947936 .8370303 + 224 5 .2956898 1.100753 + 224 6 .3915595 -.9757308 + 224 7 .5207757 1.380483 + 224 8 .2100701 .0441545 + 224 9 1.945644 3.086347 + 224 10 -.0966398 .0872928 + 225 1 -.6082711 -1.925688 + 225 2 -2.32304 -1.200773 + 225 3 -1.299209 -2.450588 + 225 4 -1.184233 -1.319112 + 225 5 .2552518 .570733 + 225 6 -1.954708 -2.484124 + 225 7 -2.571483 -.8138552 + 225 8 -.3353058 -1.630898 + 225 9 -1.038655 -.9340177 + 225 10 -.7986013 -2.112811 + 226 1 .3980761 .8982823 + 226 2 -.4028637 .2183092 + 226 3 .7498214 1.316528 + 226 4 1.599157 3.145131 + 226 5 .8329669 1.785259 + 226 6 2.245173 3.023138 + 226 7 -.2599773 .9678908 + 226 8 .0423107 .6382466 + 226 9 1.459096 2.278138 + 226 10 1.584945 2.695137 + 227 1 .3006005 1.167482 + 227 2 -.660771 -1.228508 + 227 3 -1.253586 .8681844 + 227 4 1.072072 2.132787 + 227 5 .7859382 .5949378 + 227 6 .7211208 .8633099 + 227 7 .5466481 1.252747 + 227 8 .5946671 -.9976035 + 227 9 .0552838 -1.303037 + 227 10 1.321262 1.136896 + 228 1 -.0943567 -.8963493 + 228 2 .4267636 2.809403 + 228 3 1.548451 -.4311783 + 228 4 -.2436621 -.4317625 + 228 5 1.004872 2.337266 + 228 6 .9841251 1.835262 + 228 7 -.3278924 -.3002668 + 228 8 -.1558791 -2.316723 + 228 9 .8547696 .9778864 + 228 10 1.393689 -1.177643 + 229 1 -.3435932 2.14732 + 229 2 .137458 1.311662 + 229 3 -1.512185 1.303465 + 229 4 -1.126664 .7086713 + 229 5 -.9924116 .1018778 + 229 6 -.825115 .80402 + 229 7 -.57839 -.7161622 + 229 8 -1.397125 .6382655 + 229 9 -.9247866 .4542267 + 229 10 -.3837516 1.085961 + 230 1 1.071429 3.157892 + 230 2 -.5046697 4.339156 + 230 3 .8139225 1.507174 + 230 4 1.123252 5.196305 + 230 5 -.134728 1.352186 + 230 6 -.9912385 -.1919708 + 230 7 -.2820606 -.7508036 + 230 8 .3931925 4.744782 + 230 9 .5157597 2.754598 + 230 10 -.2086518 1.110415 + 231 1 -1.179599 -5.995092 + 231 2 -2.337778 -7.120228 + 231 3 -.0761145 -1.334465 + 231 4 -2.207078 -4.077167 + 231 5 -2.195465 -2.364622 + 231 6 -.505509 -3.253703 + 231 7 -1.430807 -4.165145 + 231 8 -3.118687 -2.982322 + 231 9 -1.016035 -2.739817 + 231 10 -.6119618 -.2710494 + 232 1 .5951335 -2.801734 + 232 2 .1679499 -3.678296 + 232 3 .0230699 -4.036187 + 232 4 .4768201 -1.989194 + 232 5 -1.642619 -6.710372 + 232 6 .7316549 -4.655164 + 232 7 .4946294 -.327229 + 232 8 .2939402 -4.387096 + 232 9 .4560669 -.5380837 + 232 10 .335748 -4.924254 + 233 1 .6146625 2.848368 + 233 2 .1711353 -.0971595 + 233 3 -.2621667 .5415633 + 233 4 -.7124954 -.6388943 + 233 5 .4678753 4.601162 + 233 6 -.9015861 1.504757 + 233 7 -.4186472 -1.286894 + 233 8 .6639184 4.35321 + 233 9 -1.298046 -1.135525 + 233 10 .3700988 3.323381 + 234 1 1.373857 1.659813 + 234 2 1.114205 .675771 + 234 3 .1769534 1.205476 + 234 4 .8212657 2.164603 + 234 5 .1180503 2.102339 + 234 6 1.872216 1.467234 + 234 7 .6717694 1.34526 + 234 8 .0255024 -1.051546 + 234 9 -.4783837 .5452288 + 234 10 .825532 -.6517893 + 235 1 -1.405122 -1.267585 + 235 2 -1.199194 .8590366 + 235 3 -1.596591 1.009295 + 235 4 -.7070174 -1.10077 + 235 5 -.2166757 -.1032722 + 235 6 -1.54448 -.9348866 + 235 7 -.6194881 -1.099534 + 235 8 -3.087866 1.112303 + 235 9 -1.045653 -.3544905 + 235 10 -1.189094 2.118564 + 236 1 .6682934 4.687471 + 236 2 -1.068241 4.337969 + 236 3 -.6464585 3.554047 + 236 4 2.199108 7.63534 + 236 5 1.900464 7.176608 + 236 6 .1775008 4.818498 + 236 7 -.0679346 8.63729 + 236 8 .0031437 4.977495 + 236 9 -.6098273 4.682532 + 236 10 .041267 4.634816 + 237 1 3.015884 3.734187 + 237 2 1.099594 4.190113 + 237 3 1.349407 3.67803 + 237 4 .4075076 1.162557 + 237 5 1.182913 .2397097 + 237 6 1.841442 3.611123 + 237 7 .1584282 -.2374895 + 237 8 2.488701 3.317129 + 237 9 .7530761 .745113 + 237 10 2.024504 .9279177 + 238 1 -.0806234 -.6205269 + 238 2 1.016699 .459137 + 238 3 .4379601 .8047634 + 238 4 1.304907 2.739841 + 238 5 .2889075 .4312358 + 238 6 .2066177 2.400015 + 238 7 -.3196324 2.237907 + 238 8 1.652837 4.389544 + 238 9 1.04265 3.496934 + 238 10 .5519159 3.549008 + 239 1 -.1965126 .6665802 + 239 2 .2639443 -.9663051 + 239 3 .9796112 2.276449 + 239 4 -.8847243 -2.144583 + 239 5 -.1596828 -1.252726 + 239 6 -.3317973 .9569994 + 239 7 -.3718832 -.9249196 + 239 8 -.0336193 -1.073113 + 239 9 .3598642 -1.558405 + 239 10 -.9647111 -.2911451 + 240 1 -.2029296 -2.768175 + 240 2 .3810453 -.3925647 + 240 3 .2171977 .6512071 + 240 4 .4852371 -.1464403 + 240 5 -.0568182 -.8247639 + 240 6 .5192772 .5924842 + 240 7 .0979002 1.43681 + 240 8 1.059904 1.512299 + 240 9 -.5420668 -2.082501 + 240 10 .8737857 .3916641 + 241 1 .9925215 -.3782835 + 241 2 -.1784983 -2.864689 + 241 3 -.0206479 -2.976763 + 241 4 -.7199898 -2.594354 + 241 5 .3870982 .724631 + 241 6 -.454117 -3.375586 + 241 7 .4702056 -1.206252 + 241 8 -.4124804 -2.326562 + 241 9 .1877917 -1.680095 + 241 10 -.7756151 -1.191788 + 242 1 -.9332266 .0290744 + 242 2 .4738447 -2.364854 + 242 3 .8634816 -1.072413 + 242 4 .3119388 1.194328 + 242 5 .354138 -.2917208 + 242 6 1.179272 2.704923 + 242 7 .5045125 1.412567 + 242 8 .5890952 2.024863 + 242 9 -.7080652 -1.386342 + 242 10 -1.070799 -2.760986 + 243 1 .6486718 .0337706 + 243 2 1.241322 -.5355301 + 243 3 .9580994 .6424401 + 243 4 .5386211 .1633962 + 243 5 1.108166 -.9984469 + 243 6 .1009867 .0980954 + 243 7 1.615238 .9379937 + 243 8 .5553036 -2.006517 + 243 9 .1518945 .3498302 + 243 10 .5191274 -2.719153 + 244 1 .4255827 .3293101 + 244 2 .0129206 -1.807182 + 244 3 .9281789 .8793892 + 244 4 .0120462 -1.064213 + 244 5 1.734962 .268415 + 244 6 1.221375 1.232161 + 244 7 .3624727 -1.694466 + 244 8 -.8902692 -5.025065 + 244 9 .4049786 1.105032 + 244 10 .2248479 -1.697498 + 245 1 1.175567 3.98541 + 245 2 .6644362 1.002352 + 245 3 .2844231 2.446949 + 245 4 .6981318 2.189806 + 245 5 .4013539 1.748925 + 245 6 1.427538 3.42563 + 245 7 .0943638 3.713614 + 245 8 2.064175 3.192848 + 245 9 1.060871 1.097333 + 245 10 1.464671 2.731573 + 246 1 .6174493 -.6718361 + 246 2 .4077542 .750989 + 246 3 -.6581159 -1.506779 + 246 4 .9294955 -1.83817 + 246 5 .5283322 .4945601 + 246 6 .7212919 .4206315 + 246 7 .0378538 2.79194 + 246 8 1.134881 -2.386852 + 246 9 .0695256 2.208776 + 246 10 -.236601 -.840753 + 247 1 -.679658 .8168082 + 247 2 -.1898849 1.035921 + 247 3 .5698505 -.1023526 + 247 4 -.7217593 -.9417092 + 247 5 .4726942 -.4547373 + 247 6 -.330133 -1.890858 + 247 7 -.2641342 -1.073515 + 247 8 .9194682 -.4403566 + 247 9 -1.429415 -2.478914 + 247 10 .3068592 -.965704 + 248 1 -.1602734 -1.705552 + 248 2 -.8954244 -1.848137 + 248 3 -.8223076 -4.265204 + 248 4 -1.868718 -3.66406 + 248 5 -1.423068 -5.519494 + 248 6 -.7993475 -2.033741 + 248 7 .3977728 -1.707327 + 248 8 -.4901192 -3.405042 + 248 9 -1.092182 -4.01042 + 248 10 -1.537071 -4.268551 + 249 1 -.6820873 1.663573 + 249 2 -.6531279 -.7051771 + 249 3 .4159039 1.088005 + 249 4 .9476266 4.833041 + 249 5 .3534274 2.161716 + 249 6 -.6417844 .2803738 + 249 7 -.1055345 .310353 + 249 8 .9559166 .7669755 + 249 9 .2415738 1.86774 + 249 10 .7915351 2.719856 + 250 1 -.6255234 1.477494 + 250 2 .6078202 1.116484 + 250 3 .3518136 2.706651 + 250 4 .6208629 .9514104 + 250 5 -1.24214 .2287964 + 250 6 -.1425405 .8317059 + 250 7 -1.42149 -1.979494 + 250 8 .929285 .2047833 + 250 9 -.2591406 -.5173755 + 250 10 .2322595 .5367476 + 251 1 .5588566 -.0176471 + 251 2 -.0326221 -1.545378 + 251 3 -.1725239 -1.463794 + 251 4 .241517 -3.248243 + 251 5 -1.178791 -1.284071 + 251 6 -.5427169 -3.536395 + 251 7 .9548197 -2.335515 + 251 8 .1044202 -1.567503 + 251 9 -1.077449 -2.948381 + 251 10 -.024714 -.3409961 + 252 1 -.205943 -.2650023 + 252 2 -1.102183 -.6988783 + 252 3 -.6143269 -.2390969 + 252 4 -1.33634 -.9712477 + 252 5 -1.381014 -.0991764 + 252 6 .3275205 2.218798 + 252 7 .2724457 .1966149 + 252 8 -1.25783 -1.706668 + 252 9 -.2500912 1.847667 + 252 10 -.3557407 -1.865569 + 253 1 .6257565 -1.232998 + 253 2 -.5270381 -1.729766 + 253 3 1.304764 1.453481 + 253 4 -.1409938 .7742209 + 253 5 1.211696 4.051054 + 253 6 .2860036 -1.527792 + 253 7 1.302976 1.543092 + 253 8 .3767011 1.951575 + 253 9 -1.035709 -.2918589 + 253 10 .5249965 1.291487 + 254 1 1.355989 2.074506 + 254 2 .1944588 -.9336225 + 254 3 -.1214475 -.2484383 + 254 4 -.6620914 -.9311118 + 254 5 .1570102 -.7639118 + 254 6 .3632445 1.738548 + 254 7 .3033527 2.339588 + 254 8 .498846 -.1744284 + 254 9 1.772107 -.2755619 + 254 10 1.840007 5.813581 + 255 1 -.6956108 -.6167479 + 255 2 -.9018457 .868219 + 255 3 -.0774787 2.989222 + 255 4 -.1016639 -1.312787 + 255 5 -1.24166 -2.864279 + 255 6 -1.232354 -1.656081 + 255 7 -.4320211 -.303928 + 255 8 .2400876 2.034222 + 255 9 -.2738799 2.2421 + 255 10 .1473638 1.172281 + 256 1 -1.035309 -1.377625 + 256 2 -2.465892 -5.337194 + 256 3 -1.05896 -1.284925 + 256 4 -1.744016 -2.794505 + 256 5 -.1096963 .4022831 + 256 6 -1.712544 -2.597528 + 256 7 -1.039896 -3.082436 + 256 8 -1.412659 -3.309213 + 256 9 -1.880947 -3.979668 + 256 10 -1.019374 .6656162 + 257 1 .09337 3.50955 + 257 2 .1103318 1.872877 + 257 3 -1.431271 2.646127 + 257 4 -.923067 3.179349 + 257 5 .0473523 1.881992 + 257 6 -1.558912 -1.362364 + 257 7 -.328671 3.949821 + 257 8 -.0131149 4.640366 + 257 9 -.9936112 1.080561 + 257 10 -1.211454 1.944428 + 258 1 -.6337694 .6714936 + 258 2 -.1503031 -.1501856 + 258 3 -.1589092 -1.018322 + 258 4 .6069336 -1.928636 + 258 5 .1224315 -1.914423 + 258 6 -1.469305 -1.26824 + 258 7 .7765642 -.2217568 + 258 8 -.5273626 .3871776 + 258 9 -.2998069 -.8126664 + 258 10 .0579095 -1.729784 + 259 1 .3647669 -2.129443 + 259 2 .4266549 -.7659959 + 259 3 1.714425 -.0913557 + 259 4 .73882 -1.324728 + 259 5 -.5222238 -.4852236 + 259 6 -.0854941 -.2636802 + 259 7 -.646125 -3.869163 + 259 8 1.310737 -.0319204 + 259 9 -.5482571 .8824027 + 259 10 -.4905764 -1.242731 + 260 1 .1644088 3.100904 + 260 2 .0316094 .0530294 + 260 3 .4013842 -.1065089 + 260 4 .5338898 3.842869 + 260 5 .5401665 2.964833 + 260 6 .7930433 3.818338 + 260 7 1.212144 2.668796 + 260 8 .9383436 5.177269 + 260 9 .1155802 3.779479 + 260 10 .9105824 5.2956 + 261 1 1.772599 5.393563 + 261 2 .3691106 1.847859 + 261 3 2.05704 2.969325 + 261 4 1.146043 5.31847 + 261 5 -.0922514 .5344753 + 261 6 .0793354 2.526461 + 261 7 1.045706 2.70496 + 261 8 1.347399 1.860383 + 261 9 .3940315 2.74999 + 261 10 1.601967 .1851162 + 262 1 .3510965 4.116924 + 262 2 -1.244576 -1.529299 + 262 3 -.2887838 -.8027782 + 262 4 .943773 .7768357 + 262 5 .4959598 -.8612224 + 262 6 -.6938952 .534788 + 262 7 1.066712 1.252113 + 262 8 .3194331 -2.469036 + 262 9 .0166562 .0969901 + 262 10 .7178756 2.301741 + 263 1 .9316694 -1.308913 + 263 2 .0992978 -.8673558 + 263 3 .5015071 -.6797466 + 263 4 -.1116772 -1.43778 + 263 5 1.752064 .7292169 + 263 6 -.2680943 -.9647876 + 263 7 1.29396 2.94945 + 263 8 .3953666 -1.270376 + 263 9 .7711735 .9110264 + 263 10 .173939 -1.445127 + 264 1 .6637033 1.587145 + 264 2 .5748037 2.225869 + 264 3 .5499929 .1140359 + 264 4 .7188996 -1.503427 + 264 5 -.0070246 -.1531791 + 264 6 .3123268 .0573037 + 264 7 -.9234247 -1.208042 + 264 8 -.2523746 3.369372 + 264 9 .040527 .301045 + 264 10 .3952304 1.157413 + 265 1 .0918374 -1.267905 + 265 2 1.853918 2.207949 + 265 3 .5850404 .0318398 + 265 4 .9215478 .9369535 + 265 5 .575112 1.340409 + 265 6 -.2088707 .0962994 + 265 7 -.1734518 -1.029963 + 265 8 .930531 1.897125 + 265 9 1.515866 -.0828013 + 265 10 .3134698 -2.003094 + 266 1 .7471818 -1.280663 + 266 2 .0694748 .0497835 + 266 3 1.017348 2.181315 + 266 4 .3876083 3.506531 + 266 5 -1.185464 1.968666 + 266 6 -.382493 2.068704 + 266 7 -.724726 .6328075 + 266 8 .0889789 1.754957 + 266 9 1.025515 .1428981 + 266 10 -.1029762 3.185127 + 267 1 .8750756 .7864909 + 267 2 -.747746 -.4863289 + 267 3 -.4167241 2.003703 + 267 4 .9271164 -.3732269 + 267 5 -.7536917 -1.839801 + 267 6 -.5112864 -.0732499 + 267 7 .4693545 .5008613 + 267 8 -.0501356 -2.839725 + 267 9 .5575157 -1.485621 + 267 10 1.232309 -.6928712 + 268 1 -.4286477 -.6740281 + 268 2 -2.046979 -.0591465 + 268 3 -.3577667 -.9367003 + 268 4 -1.77235 1.220945 + 268 5 -1.191666 .5952983 + 268 6 -1.061073 -1.885458 + 268 7 -.6214969 -1.171813 + 268 8 -1.544963 -1.31572 + 268 9 -2.393114 1.748346 + 268 10 -1.074169 -3.667469 + 269 1 -.4422706 -.7386926 + 269 2 -2.041154 -3.330781 + 269 3 -1.679752 -2.288584 + 269 4 -2.35014 -3.540108 + 269 5 -1.17732 -.7216267 + 269 6 -.7079435 -.8395771 + 269 7 -2.354443 -3.876697 + 269 8 -1.124455 -3.501561 + 269 9 .0832402 -2.023006 + 269 10 -1.687099 -1.77071 + 270 1 .5066496 3.175278 + 270 2 1.149323 1.710393 + 270 3 .8450081 2.19156 + 270 4 1.366767 3.111118 + 270 5 .7997035 4.434868 + 270 6 1.035339 2.335899 + 270 7 1.394193 5.611959 + 270 8 .8982787 1.791932 + 270 9 -.3182986 .7452462 + 270 10 .2148138 5.409936 + 271 1 .5683352 -.9200357 + 271 2 -1.143476 -1.82617 + 271 3 -1.528896 1.819053 + 271 4 -2.298108 -3.338978 + 271 5 -.486378 -.0763246 + 271 6 .4231069 .7580193 + 271 7 -.0382085 1.79726 + 271 8 .0599152 .4161851 + 271 9 .0955369 .6313087 + 271 10 -1.420672 -1.249066 + 272 1 .360182 6.428327 + 272 2 .5336096 7.746113 + 272 3 1.10967 4.217622 + 272 4 1.318853 5.540405 + 272 5 .1928189 7.634931 + 272 6 1.868157 7.414566 + 272 7 1.719002 7.102513 + 272 8 1.311856 6.106687 + 272 9 .7141919 4.593322 + 272 10 .6558189 7.213266 + 273 1 .4261202 1.325096 + 273 2 .1574592 1.221033 + 273 3 1.382538 1.213273 + 273 4 1.601376 2.38476 + 273 5 .1514847 1.946386 + 273 6 .3858716 .5109634 + 273 7 .1573007 .9692866 + 273 8 .1714366 .3739781 + 273 9 .740108 2.694966 + 273 10 -.7126279 .8698809 + 274 1 -1.275201 3.146218 + 274 2 -.3337395 3.421805 + 274 3 -.6807697 -.791932 + 274 4 .094655 1.161929 + 274 5 -1.614691 -.2595239 + 274 6 -.0056486 3.369143 + 274 7 -1.402255 1.058793 + 274 8 -.9496348 .0098827 + 274 9 -.1901916 2.161934 + 274 10 -.526421 2.938261 + 275 1 1.404401 1.922012 + 275 2 -.8479825 -.5974793 + 275 3 .5551311 -.0634707 + 275 4 .120732 1.149148 + 275 5 -.5315143 -2.692029 + 275 6 .8335769 -.56916 + 275 7 -.4223254 -1.047111 + 275 8 -.1645954 -1.054557 + 275 9 .8397245 1.034874 + 275 10 -1.358795 -.5213187 + 276 1 -.0437045 1.929105 + 276 2 .2208279 -1.065072 + 276 3 -1.263357 -3.208578 + 276 4 -.8563637 -2.63395 + 276 5 -.485633 -2.080454 + 276 6 .1837639 1.084685 + 276 7 -.5646113 -4.882828 + 276 8 -.2308659 -1.795438 + 276 9 -.4463532 -.7049216 + 276 10 -.6590122 -2.443081 + 277 1 1.105171 -.4585118 + 277 2 1.903722 .992862 + 277 3 1.171871 1.764093 + 277 4 1.413884 .9288573 + 277 5 -.161494 .7550272 + 277 6 1.229558 1.209538 + 277 7 .7822666 -2.389042 + 277 8 .6245995 .4473903 + 277 9 1.667333 1.159534 + 277 10 1.662027 2.664106 + 278 1 -1.257121 -1.062338 + 278 2 -.4857364 -1.859366 + 278 3 -.4695221 -2.10775 + 278 4 -.424833 -1.743351 + 278 5 .0890938 -1.908982 + 278 6 1.193046 1.127037 + 278 7 -.333879 -2.041629 + 278 8 1.472751 .1594183 + 278 9 -.1197587 -2.641762 + 278 10 .7744794 -.198738 + 279 1 .3056105 -1.605856 + 279 2 -1.058255 -3.798013 + 279 3 .3120412 .6442868 + 279 4 .0608813 -1.490263 + 279 5 .310604 -3.226834 + 279 6 .23408 -.6381745 + 279 7 .4149793 -2.29419 + 279 8 -1.371843 -1.412752 + 279 9 .5280664 -4.481213 + 279 10 -.1925232 -4.076558 + 280 1 -.2104055 1.806256 + 280 2 .3165161 1.392973 + 280 3 .1357231 .5869187 + 280 4 -.6018031 .9278034 + 280 5 .5277494 1.589437 + 280 6 .1248126 .8864543 + 280 7 -.1349436 .8676683 + 280 8 .7517115 2.107488 + 280 9 -.1402433 1.320008 + 280 10 .8292385 -.0937585 + 281 1 .0048537 -.4546574 + 281 2 -1.350778 -3.214368 + 281 3 -.9300727 -2.477466 + 281 4 -1.091304 -.4267188 + 281 5 1.76406 1.79186 + 281 6 -.235031 1.985206 + 281 7 .9337168 .2449346 + 281 8 .8894295 -.8898416 + 281 9 .0872185 1.008609 + 281 10 -.2851903 -1.672063 + 282 1 .2473879 -1.34134 + 282 2 -.3316757 .9244647 + 282 3 .512238 .115557 + 282 4 .9039181 -.0280877 + 282 5 .547024 -.0745859 + 282 6 1.224362 -1.047249 + 282 7 .27343 -1.275514 + 282 8 1.209972 -.1661881 + 282 9 1.521983 -.1685919 + 282 10 1.526268 -1.998607 + 283 1 -1.460393 -1.145021 + 283 2 .7575911 .6431463 + 283 3 -.5244011 -.1600968 + 283 4 .8122581 -.983875 + 283 5 -1.147373 -2.748764 + 283 6 .3327325 -1.756385 + 283 7 .602522 .3396862 + 283 8 .0879591 1.815702 + 283 9 1.334288 2.346755 + 283 10 -.6573533 -.1649583 + 284 1 -.6337579 -.8371237 + 284 2 -.8461487 .4914629 + 284 3 -.2117531 1.089847 + 284 4 -.0117765 -.7013565 + 284 5 -.0789424 -.0999364 + 284 6 -.5500525 .4651148 + 284 7 -1.395762 -3.212136 + 284 8 .4618104 1.210305 + 284 9 .66264 3.262594 + 284 10 -1.751047 -2.463191 + 285 1 -.2856698 -3.894995 + 285 2 -.7424809 -5.08774 + 285 3 -.1001574 -4.610766 + 285 4 -1.223242 -2.832906 + 285 5 -1.725884 -2.992929 + 285 6 .6462654 -4.533737 + 285 7 -.7096204 -5.639345 + 285 8 .1233242 -5.368943 + 285 9 .5398992 -1.15512 + 285 10 .5055323 -2.749073 + 286 1 -1.668531 .2212468 + 286 2 1.023343 3.203849 + 286 3 .4181822 3.54003 + 286 4 .7565898 .9894442 + 286 5 .0287599 -1.475459 + 286 6 .0724912 -.4873334 + 286 7 -.5179029 -.5315184 + 286 8 .7134054 1.208864 + 286 9 -.4319775 -1.363303 + 286 10 .0739882 3.802881 + 287 1 -1.935435 .9118819 + 287 2 -2.095297 -.7379755 + 287 3 -.721016 -3.552889 + 287 4 -1.848714 1.7831 + 287 5 -1.820215 .5146583 + 287 6 -.3620733 1.234901 + 287 7 -1.423656 .8143681 + 287 8 -2.651203 -1.14212 + 287 9 -.3498964 -.3684206 + 287 10 -1.192345 1.480427 + 288 1 -.76341 -2.127842 + 288 2 -1.305989 .348884 + 288 3 -1.137073 .0433275 + 288 4 .2833143 -.7932639 + 288 5 -.9064541 .0951351 + 288 6 -.1933955 -.3155874 + 288 7 .2286331 .1167062 + 288 8 -.9254668 .6362901 + 288 9 -.6886753 -.75538 + 288 10 -.3244376 2.389177 + 289 1 -.0608594 3.65827 + 289 2 .7701365 3.057038 + 289 3 .7763952 5.143516 + 289 4 .3849347 2.639215 + 289 5 -.3348695 3.682957 + 289 6 -.2941056 1.679909 + 289 7 .9028705 3.169494 + 289 8 .5994911 5.22807 + 289 9 .8468918 2.840572 + 289 10 1.084319 5.208366 + 290 1 1.431985 3.081578 + 290 2 .9291185 .5693145 + 290 3 -1.040786 .3378932 + 290 4 1.675363 1.823355 + 290 5 1.430992 4.176705 + 290 6 .6537787 .6327383 + 290 7 -.3876851 4.141751 + 290 8 1.02944 5.734938 + 290 9 .7009004 2.929651 + 290 10 .9363461 3.449493 + 291 1 -.4222023 -.9553124 + 291 2 .3438784 -.9702309 + 291 3 -.2422371 -2.078196 + 291 4 .2162838 -2.5263 + 291 5 -.0478098 -1.56432 + 291 6 -.120312 -1.289782 + 291 7 -.8896275 -1.505295 + 291 8 -.6466461 -1.413619 + 291 9 .088691 -.1566611 + 291 10 -.3132509 -1.852522 + 292 1 -.4925852 -3.37087 + 292 2 .3142375 -2.979269 + 292 3 .8098291 -3.102055 + 292 4 -.0309093 -3.00617 + 292 5 .1300918 -2.207057 + 292 6 .4544894 .0735604 + 292 7 -.6855474 -2.936456 + 292 8 1.231201 -.20735 + 292 9 -.2966711 -2.853282 + 292 10 .4326966 -1.627525 + 293 1 -.5953501 -.6960797 + 293 2 -.9956862 .2201483 + 293 3 .0159993 .2272351 + 293 4 -.9779801 .0417832 + 293 5 -1.500325 -2.307612 + 293 6 -.9959835 1.127879 + 293 7 -.4232532 -1.719617 + 293 8 -.5598248 -1.267455 + 293 9 .2186248 -.0761362 + 293 10 -1.234179 -3.115372 + 294 1 1.121934 .3258687 + 294 2 -.3002118 -1.29864 + 294 3 2.216118 2.31594 + 294 4 .1143867 -1.687388 + 294 5 .0028749 -2.032747 + 294 6 .2275681 .3396165 + 294 7 -.3454866 -2.232009 + 294 8 .0569153 -.7773654 + 294 9 .281196 1.131526 + 294 10 -.6137836 -.9987382 + 295 1 -.6335627 -1.903595 + 295 2 -.0082566 -2.619677 + 295 3 -.7999982 -2.975821 + 295 4 .1780989 -3.118157 + 295 5 .7583269 .0462846 + 295 6 .1826241 -2.913262 + 295 7 -.8128164 -2.898692 + 295 8 .4154827 -3.108252 + 295 9 1.126049 -1.508563 + 295 10 -.4073088 -3.490055 + 296 1 -.0236263 -2.467747 + 296 2 .0224632 .9410301 + 296 3 -.1079885 -.735872 + 296 4 -.6519762 .6511194 + 296 5 -1.516521 -3.660626 + 296 6 .6440648 -1.90728 + 296 7 -.762248 -2.827313 + 296 8 .1124184 -1.674701 + 296 9 .4133556 .1528977 + 296 10 1.163524 -.8055658 + 297 1 .2652938 4.953881 + 297 2 .1649487 7.169178 + 297 3 .6724626 3.208345 + 297 4 .9107273 6.012301 + 297 5 .5299174 1.45804 + 297 6 -.3721145 2.824732 + 297 7 1.146502 4.260746 + 297 8 1.436541 2.396386 + 297 9 -.1122249 6.902519 + 297 10 .8334019 5.368154 + 298 1 .7312837 -1.069968 + 298 2 -.5102405 -3.308913 + 298 3 -.9292251 -.2422212 + 298 4 -.2150672 -3.080508 + 298 5 .7037851 -.213078 + 298 6 -1.06391 -1.236876 + 298 7 -.3456267 2.561281 + 298 8 -.6818334 -2.622968 + 298 9 -.2075897 -2.102076 + 298 10 .0716005 .6245267 + 299 1 .2217795 .9225801 + 299 2 .1711643 1.034666 + 299 3 .4550282 -.1482511 + 299 4 -.6956599 -.1912163 + 299 5 .5078331 -1.030261 + 299 6 -.2184 2.038437 + 299 7 .2040441 -.7810257 + 299 8 .4641071 -.7868103 + 299 9 .2759933 1.002228 + 299 10 .0687826 -.9461448 + 300 1 -1.157354 3.064995 + 300 2 -1.085663 1.880853 + 300 3 -1.034096 1.047404 + 300 4 -.893792 .069346 + 300 5 -1.520618 .9253366 + 300 6 -.9912338 1.467025 + 300 7 -1.247197 -1.54687 + 300 8 -1.423021 1.534549 + 300 9 -1.189256 -.0318463 + 300 10 -2.660626 -2.72154 + 301 1 1.212624 -.1379576 + 301 2 .8962982 -.3261759 + 301 3 .6913161 .0718027 + 301 4 1.008605 .2879519 + 301 5 .1364647 -.4650801 + 301 6 1.488669 1.172586 + 301 7 .1387877 -1.070213 + 301 8 -.118714 -1.594402 + 301 9 1.110829 1.302383 + 301 10 -.1282128 -1.182917 + 302 1 1.266426 .3541912 + 302 2 -.2130778 2.286933 + 302 3 -.9522302 -2.412134 + 302 4 -.1713218 -.3536798 + 302 5 .0944488 -.307781 + 302 6 -.0850507 -.1239224 + 302 7 -.0232138 -1.544283 + 302 8 -.3646309 .4098703 + 302 9 -.9486059 -.864284 + 302 10 -.4303542 -.2923739 + 303 1 .1989395 3.165762 + 303 2 -.1615809 .8782057 + 303 3 -.6035842 3.944757 + 303 4 .1173443 -.5820931 + 303 5 .5804065 3.624507 + 303 6 .0649533 2.326556 + 303 7 .2787693 1.353267 + 303 8 1.180739 3.202775 + 303 9 1.0369 .4606698 + 303 10 -.0579956 .9728234 + 304 1 1.299442 3.394002 + 304 2 1.267889 6.025136 + 304 3 2.386807 4.775618 + 304 4 1.144757 2.352683 + 304 5 .4609431 2.455348 + 304 6 .308527 2.509389 + 304 7 .676951 4.577685 + 304 8 .5688994 -.2836845 + 304 9 1.22781 1.340273 + 304 10 1.525781 4.336875 + 305 1 -.1072164 -1.179699 + 305 2 .378837 -2.53644 + 305 3 .4745473 -.1411331 + 305 4 .5133877 -.6760728 + 305 5 .0968005 -2.13964 + 305 6 -.7575296 -1.115131 + 305 7 .3498355 -.5259158 + 305 8 .5677224 .6951905 + 305 9 .0137834 .1040811 + 305 10 .2281571 2.68638 + 306 1 2.505945 2.661103 + 306 2 -.5128537 .0979747 + 306 3 .4093541 1.555751 + 306 4 .3468592 2.923481 + 306 5 .3893701 .6506599 + 306 6 .4230124 .4158594 + 306 7 2.241051 1.052937 + 306 8 1.910467 1.709813 + 306 9 .3605613 1.085548 + 306 10 1.175306 1.53056 + 307 1 .904353 -2.349495 + 307 2 -.4886938 -1.001411 + 307 3 1.380073 1.046942 + 307 4 -.4340216 -.7895899 + 307 5 .1318686 .7192857 + 307 6 .8004378 -1.884229 + 307 7 .8784896 -2.124703 + 307 8 -.2726218 -.2625537 + 307 9 .017715 -.7719643 + 307 10 .5782194 -3.014054 + 308 1 .1933789 -2.18305 + 308 2 -.1952871 -1.833437 + 308 3 -.7377759 .7389084 + 308 4 -.1181372 -2.198929 + 308 5 -1.430342 -2.365241 + 308 6 .5002977 -.9795716 + 308 7 -.0445634 -.3071025 + 308 8 1.019042 -1.643237 + 308 9 -.2519647 -1.355526 + 308 10 -1.363734 -1.439991 + 309 1 -.6590933 -2.573743 + 309 2 .2100908 -1.121971 + 309 3 -.1594792 -2.287323 + 309 4 .1107149 .5555104 + 309 5 -.684333 -3.212126 + 309 6 -1.358433 -3.950673 + 309 7 -1.71907 -2.621594 + 309 8 -.843949 -3.013556 + 309 9 -.4446799 -3.731741 + 309 10 -2.107879 -3.073752 + 310 1 -1.082236 .0589311 + 310 2 .3473772 1.319451 + 310 3 -.2044194 1.047891 + 310 4 -.412802 -.4301148 + 310 5 -.253235 2.77829 + 310 6 -.0658997 -.2226901 + 310 7 -.9983549 -1.212613 + 310 8 -.5606914 -.2779118 + 310 9 -.6213195 1.606124 + 310 10 .4323931 .7963311 + 311 1 .1637869 .8144814 + 311 2 .3888807 -1.996529 + 311 3 -.4877957 -2.641775 + 311 4 -.3621924 -3.031136 + 311 5 .8755594 .5251995 + 311 6 -.7360529 -1.465007 + 311 7 1.448663 -.4546512 + 311 8 .1079994 -2.727451 + 311 9 -.3728598 1.274828 + 311 10 1.091286 1.491997 + 312 1 -.6550789 .7337952 + 312 2 -1.216076 1.709714 + 312 3 -1.037694 -.1907317 + 312 4 -.9941657 1.635481 + 312 5 -.5152657 .6996572 + 312 6 -1.016564 .9987954 + 312 7 -.8836941 -.5357457 + 312 8 -1.280333 .9544096 + 312 9 .4750716 3.358946 + 312 10 -1.16969 .3597584 + 313 1 .6278168 2.423372 + 313 2 -1.249266 -2.423709 + 313 3 -.0539184 -1.664979 + 313 4 .6682127 1.03183 + 313 5 .2515903 1.240996 + 313 6 .5905681 1.505387 + 313 7 1.071352 1.208588 + 313 8 .5429903 -.2078185 + 313 9 -.2466664 -.3524755 + 313 10 .2986039 .4956123 + 314 1 -1.213561 .0995333 + 314 2 -2.08583 -3.158766 + 314 3 -1.458448 -1.43713 + 314 4 -1.55637 -2.087229 + 314 5 -1.564798 -2.030253 + 314 6 -2.57597 .6134729 + 314 7 -1.71215 -4.167862 + 314 8 -.9081715 -2.209743 + 314 9 -1.097981 -2.601 + 314 10 -1.738765 -.7134905 + 315 1 -.3219499 6.132199 + 315 2 -.4168345 4.09077 + 315 3 .2039351 2.836242 + 315 4 -.1341842 1.223872 + 315 5 -.7908282 3.693241 + 315 6 -.8131104 1.406583 + 315 7 .9417753 5.787119 + 315 8 .1985477 1.656944 + 315 9 -1.455228 1.082366 + 315 10 -.2573244 3.045901 + 316 1 1.139231 4.704838 + 316 2 -.0435883 1.222427 + 316 3 .3903391 1.48265 + 316 4 1.012324 3.861323 + 316 5 -.0368865 -.5093943 + 316 6 .8973801 2.160011 + 316 7 .3613149 -.1648915 + 316 8 -1.422709 -1.728362 + 316 9 -.8538588 1.349076 + 316 10 .5913562 .0812178 + 317 1 1.313735 3.962234 + 317 2 .6639349 2.575644 + 317 3 1.085506 3.857906 + 317 4 2.290491 .7252183 + 317 5 .5426903 -.1802098 + 317 6 1.089875 1.652033 + 317 7 1.949163 4.238834 + 317 8 1.200622 .1271455 + 317 9 -.1057174 -1.823779 + 317 10 1.461174 2.447588 + 318 1 -.1093736 1.211051 + 318 2 .8840867 2.544989 + 318 3 .6600249 .7247286 + 318 4 1.62985 1.974992 + 318 5 .5351541 4.100967 + 318 6 .3037682 .2348031 + 318 7 1.841704 2.020627 + 318 8 .2392886 -1.063084 + 318 9 .0736966 -.0599461 + 318 10 .978501 .0759804 + 319 1 -.5852684 2.99405 + 319 2 1.166138 6.947165 + 319 3 .8595033 4.387637 + 319 4 .4148157 2.948615 + 319 5 .7843937 1.955702 + 319 6 .5490359 3.764022 + 319 7 -.2628809 2.967941 + 319 8 .7899153 1.041289 + 319 9 1.538118 2.106266 + 319 10 .2480692 3.471334 + 320 1 1.376184 1.397995 + 320 2 -.5421448 -1.224357 + 320 3 .5843778 .6223827 + 320 4 -.3739028 -1.167495 + 320 5 .169015 -.6434228 + 320 6 .2669372 .6718704 + 320 7 -.3901301 1.938211 + 320 8 -.3398134 .0979659 + 320 9 .0600606 1.580089 + 320 10 .0630012 1.012247 + 321 1 -.7114034 1.006528 + 321 2 -1.110904 2.097334 + 321 3 -1.160171 .0838931 + 321 4 -1.247983 -.9012175 + 321 5 -.783526 1.903065 + 321 6 .2134164 -1.969308 + 321 7 -1.181847 2.817079 + 321 8 .3122529 1.300823 + 321 9 -.5189598 4.103461 + 321 10 -.4910371 .2201543 + 322 1 .840999 .7732243 + 322 2 .4931779 2.595244 + 322 3 1.410488 1.644607 + 322 4 -.3935182 -1.669401 + 322 5 -.1491356 -2.332692 + 322 6 .7085593 1.389216 + 322 7 -1.145233 -.7497268 + 322 8 -.1426497 -1.292283 + 322 9 .0855018 .5679272 + 322 10 1.014541 1.439126 + 323 1 .8222046 2.608925 + 323 2 .3437938 2.019197 + 323 3 .1671889 2.021837 + 323 4 .0938427 2.399146 + 323 5 .3004334 1.784897 + 323 6 .1344928 1.33614 + 323 7 -.6547418 -.00929 + 323 8 -1.341654 -.680935 + 323 9 .7747284 2.588015 + 323 10 -.7156495 .3515812 + 324 1 -.1230086 1.783272 + 324 2 -.4881498 -.3822282 + 324 3 .3514171 -1.246508 + 324 4 -.1728574 .9644995 + 324 5 -.4734338 .2610707 + 324 6 -.27917 .141532 + 324 7 .5372118 -.2599156 + 324 8 -1.399001 -3.409292 + 324 9 -.2749071 -1.867347 + 324 10 1.070853 1.040053 + 325 1 -1.720132 -2.124197 + 325 2 -.6501931 -.2484825 + 325 3 -.4379873 -.6277484 + 325 4 -1.238178 -1.764803 + 325 5 -.8571739 -.3961552 + 325 6 -.5373721 -1.780688 + 325 7 -.0301044 1.064706 + 325 8 -.0613058 -1.904758 + 325 9 .0970504 -1.231271 + 325 10 -.9715793 -.7554119 + 326 1 1.394202 2.801936 + 326 2 .7951759 .2986445 + 326 3 1.364746 1.294738 + 326 4 .2713875 -.5043192 + 326 5 2.647352 3.885561 + 326 6 1.619217 .3610069 + 326 7 1.244619 1.467165 + 326 8 .6747259 .0556479 + 326 9 2.199409 2.427234 + 326 10 .7258136 2.233684 + 327 1 1.134018 -.3883313 + 327 2 .8332224 -.1600463 + 327 3 1.122737 -1.411546 + 327 4 1.290364 1.672051 + 327 5 1.498085 .9376276 + 327 6 .1756893 -3.605857 + 327 7 .8118833 .0109993 + 327 8 1.512753 .8302828 + 327 9 .4798213 .3372447 + 327 10 .312312 1.89495 + 328 1 .0966263 1.208175 + 328 2 -1.403313 -.9184096 + 328 3 .0939596 -.5021042 + 328 4 1.23189 2.445007 + 328 5 -.754278 .8017802 + 328 6 .7751966 .3338559 + 328 7 -.7872727 .5828404 + 328 8 .5517874 1.105145 + 328 9 -1.118373 .3368771 + 328 10 -1.084542 -3.082005 + 329 1 -.64419 -1.856086 + 329 2 .2792873 -1.500095 + 329 3 1.022133 -.9396803 + 329 4 -.2666279 -2.313416 + 329 5 .0841673 1.66788 + 329 6 1.078811 -.5304371 + 329 7 .5985367 -.5998325 + 329 8 .7469683 -.5514413 + 329 9 .3353473 .077413 + 329 10 .0253191 .3968397 + 330 1 .523804 -.2777813 + 330 2 -.8467154 .0210209 + 330 3 1.565408 -1.039337 + 330 4 .517679 1.544941 + 330 5 .8906721 1.331069 + 330 6 .7820405 2.576909 + 330 7 .790448 -1.534705 + 330 8 -.4168262 -2.327561 + 330 9 1.047 .5375486 + 330 10 .6091557 1.02087 + 331 1 -1.008289 1.200104 + 331 2 1.336903 -.4700743 + 331 3 1.559659 .9253162 + 331 4 .5510666 -1.377242 + 331 5 .6839844 -2.100733 + 331 6 1.284005 2.620907 + 331 7 .0673638 2.145791 + 331 8 -.3229722 -.8831274 + 331 9 .7090932 1.469871 + 331 10 .8416753 4.174598 + 332 1 -.0296125 2.530032 + 332 2 .2191554 2.351596 + 332 3 -1.068912 -3.565866 + 332 4 -1.324151 1.447325 + 332 5 -1.12399 .8211809 + 332 6 -1.364655 -1.121884 + 332 7 .9857613 .417506 + 332 8 -1.901747 -1.715484 + 332 9 -.7951809 2.402612 + 332 10 -1.826209 1.014032 + 333 1 -.0345799 -.4965591 + 333 2 .0780219 -3.016384 + 333 3 .6748441 1.053736 + 333 4 .2271895 .687906 + 333 5 .8589821 -.6531677 + 333 6 1.172365 -3.654833 + 333 7 1.028686 .3755 + 333 8 .4096808 -3.021688 + 333 9 .9025163 -1.425923 + 333 10 -.0767436 .3022914 + 334 1 .4781853 .7008832 + 334 2 -.9816372 -3.810112 + 334 3 .7682565 -.1027172 + 334 4 -.0089384 -1.062498 + 334 5 -.1059492 -.3398289 + 334 6 .962351 1.808518 + 334 7 .2916376 -1.270707 + 334 8 .1074231 -4.010852 + 334 9 .6399701 .8242661 + 334 10 1.389498 3.390346 + 335 1 -.0341366 1.359662 + 335 2 -.2300572 3.03093 + 335 3 -.4112186 1.242827 + 335 4 .0346978 -1.556063 + 335 5 .0514196 1.258791 + 335 6 -.8035721 .1634853 + 335 7 -.7463363 -.850821 + 335 8 -1.377113 1.798171 + 335 9 .5717965 .1745555 + 335 10 -.6162994 -.7321001 + 336 1 -1.141614 -.687887 + 336 2 .5763119 1.178286 + 336 3 .0279686 -1.075711 + 336 4 -.7928141 1.310478 + 336 5 -.8519275 -3.037306 + 336 6 .1790458 -.3380367 + 336 7 .6120673 .9180999 + 336 8 -.9078634 -.4184029 + 336 9 .3521987 1.55241 + 336 10 .8129057 1.317359 + 337 1 -.5301838 -1.421428 + 337 2 .6498045 .1096817 + 337 3 -.3122817 -4.051725 + 337 4 -1.243292 -1.931706 + 337 5 .4840939 -2.083177 + 337 6 .627633 .2089486 + 337 7 .5189809 -.7541553 + 337 8 -1.241234 -.1435724 + 337 9 -1.091277 -3.027426 + 337 10 .7091281 .9971457 + 338 1 .4726462 1.325428 + 338 2 .9362557 1.001695 + 338 3 .7990077 1.718518 + 338 4 .6904245 -.1676747 + 338 5 .9130564 .7183853 + 338 6 1.101782 1.686772 + 338 7 .3384881 1.796878 + 338 8 1.193409 1.82498 + 338 9 .3697639 -1.424815 + 338 10 .5570083 1.532877 + 339 1 -.8531764 2.778892 + 339 2 -.1966925 2.143157 + 339 3 -.9839787 .5678203 + 339 4 -.6858693 2.60121 + 339 5 -.5955294 3.222797 + 339 6 -1.8449 1.518352 + 339 7 -.7711766 -.0444492 + 339 8 -.8642274 5.037053 + 339 9 -.3996727 2.182715 + 339 10 -.9959184 2.186512 + 340 1 1.287086 1.085785 + 340 2 .3749849 2.455178 + 340 3 1.062874 .3061398 + 340 4 .5123792 2.817225 + 340 5 1.095079 1.21031 + 340 6 1.573182 2.794 + 340 7 1.418342 1.910308 + 340 8 1.802045 1.037917 + 340 9 .959832 3.390004 + 340 10 2.239 4.629809 + 341 1 -.8337001 .8668393 + 341 2 -1.28723 -.2980531 + 341 3 -.2560894 -.145299 + 341 4 -1.188697 -1.147569 + 341 5 -1.344844 -.8542031 + 341 6 -.7178921 -1.243278 + 341 7 -.0706205 1.477563 + 341 8 -1.299475 -1.719622 + 341 9 -.9761535 2.462304 + 341 10 -.7972464 .5179787 + 342 1 .2874753 -.9459405 + 342 2 -1.140748 -1.587461 + 342 3 -.4820356 -1.542755 + 342 4 .4356451 .4693216 + 342 5 -.32961 1.672015 + 342 6 .5791374 .4184265 + 342 7 .0804543 -.4851521 + 342 8 -.5911621 .3340384 + 342 9 -1.91879 1.688906 + 342 10 1.082112 1.332891 + 343 1 .4171742 .173781 + 343 2 3.082487 -1.044352 + 343 3 1.169403 -.0743846 + 343 4 .4818434 -3.061883 + 343 5 2.183904 .4495065 + 343 6 .7593696 -1.829309 + 343 7 1.535539 -1.78552 + 343 8 -.0450767 -2.684433 + 343 9 1.431003 -.078194 + 343 10 1.105973 -1.140877 + 344 1 -.4055815 -2.813725 + 344 2 -.8611348 -2.930415 + 344 3 .1992989 1.829839 + 344 4 -.5147722 .3920042 + 344 5 -.5171298 1.002206 + 344 6 -.9463255 2.67207 + 344 7 1.472377 2.169219 + 344 8 -1.185128 -2.07848 + 344 9 -.3231675 -.4512805 + 344 10 -1.74948 -2.876919 + 345 1 .1971563 -2.533665 + 345 2 -1.009619 -1.667742 + 345 3 1.358866 3.246997 + 345 4 .3870358 -1.087757 + 345 5 1.741294 .6383464 + 345 6 .6472943 -1.760053 + 345 7 -.8908844 -1.995473 + 345 8 .8650471 -2.052088 + 345 9 .9572592 -1.488084 + 345 10 .2796121 -2.186462 + 346 1 -1.467454 -1.0503 + 346 2 -.2532741 -1.464429 + 346 3 -.1472076 -.3408597 + 346 4 .8591915 -1.017709 + 346 5 -.3550845 -1.765731 + 346 6 -1.195446 -1.052871 + 346 7 -.1267164 -2.062441 + 346 8 .4523068 .9465333 + 346 9 -.503657 -2.177341 + 346 10 .5974607 .4098534 + 347 1 .7031173 -1.929116 + 347 2 .1502877 -.6849976 + 347 3 1.079347 1.523654 + 347 4 -.7781886 -.1715465 + 347 5 .3196149 1.682385 + 347 6 -.1547143 -2.135677 + 347 7 .2725263 -2.901819 + 347 8 -.3182507 .1369572 + 347 9 1.105789 -.6038599 + 347 10 1.123925 -2.72728 + 348 1 -1.27843 .4381262 + 348 2 -.3512814 -.9529293 + 348 3 .105588 1.195718 + 348 4 -.4149123 -2.303596 + 348 5 -.7499133 -1.323834 + 348 6 .3610358 .0437909 + 348 7 -1.114799 -1.898063 + 348 8 -.776548 1.502896 + 348 9 -.0640514 2.731061 + 348 10 -1.579033 -.8110284 + 349 1 .0999836 -.7638679 + 349 2 1.209674 -.4843366 + 349 3 -.392669 -2.406988 + 349 4 1.762224 -.9527221 + 349 5 -.6671348 -4.50182 + 349 6 1.104294 .3747261 + 349 7 -.0154446 -3.598221 + 349 8 .762148 -2.193823 + 349 9 -.1002964 -1.143165 + 349 10 .4510945 -1.332772 + 350 1 1.000029 3.471359 + 350 2 -.0457645 .7268938 + 350 3 -.7032851 -2.00837 + 350 4 -.7188159 -3.079881 + 350 5 .2030054 -.8126448 + 350 6 -.3613122 1.642794 + 350 7 -.0194365 -3.071692 + 350 8 -.7358596 1.629515 + 350 9 -.0129708 -1.144292 + 350 10 -.522209 -1.486797 + 351 1 -1.217535 -4.934941 + 351 2 -.0483732 -.7145358 + 351 3 -.7571822 -3.650282 + 351 4 -.7582182 -4.133046 + 351 5 .0554951 -1.216737 + 351 6 -.1074803 -3.879589 + 351 7 -.7859623 -2.769078 + 351 8 -.0981961 -3.28409 + 351 9 .1348416 -2.472425 + 351 10 1.225851 -1.531439 + 352 1 -.595589 -4.308309 + 352 2 -.9149055 -5.720735 + 352 3 .5663604 -4.376552 + 352 4 -.2481878 -3.630968 + 352 5 -.1685 -1.912258 + 352 6 -.554507 -6.055714 + 352 7 -1.053859 -5.451947 + 352 8 -.9003046 -4.171236 + 352 9 -.4654292 -3.647272 + 352 10 -.840481 -2.040392 + 353 1 -.1589666 .3276464 + 353 2 -1.262318 -2.278812 + 353 3 -.1362039 2.149777 + 353 4 -.3166539 -.8814074 + 353 5 -.3432451 -.4128024 + 353 6 -.1864908 -3.100622 + 353 7 .3038542 .4002667 + 353 8 -.4272004 -.9876967 + 353 9 .0433596 .9843839 + 353 10 .3247434 -1.000466 + 354 1 -.9978524 -.9869629 + 354 2 -.9464179 -2.68557 + 354 3 -.760933 -3.451186 + 354 4 -1.758346 -1.009217 + 354 5 -.798512 -2.201924 + 354 6 -1.134871 -1.111341 + 354 7 -1.345791 -2.990888 + 354 8 -.4439098 2.075257 + 354 9 .0497388 -4.45066 + 354 10 .8240383 -2.045157 + 355 1 -1.422537 -1.664761 + 355 2 -.427367 -.4851996 + 355 3 .2844664 -3.078959 + 355 4 .4780743 -.3058663 + 355 5 -.0573853 -.5254004 + 355 6 -1.06673 -1.030774 + 355 7 -.4895939 -4.373556 + 355 8 -.772621 -2.229898 + 355 9 -1.657596 -3.134791 + 355 10 -.1875441 -3.788352 + 356 1 .175938 -.5078521 + 356 2 .0720406 .0808382 + 356 3 .2769918 -.2085884 + 356 4 1.545677 -1.91006 + 356 5 .6386923 -.191249 + 356 6 1.73172 1.787358 + 356 7 .8457142 -.4710856 + 356 8 1.230206 -.1243482 + 356 9 2.434192 .0095079 + 356 10 1.156173 1.576705 + 357 1 .717388 -.5418587 + 357 2 .8409083 -.4738864 + 357 3 .6001222 -1.448303 + 357 4 .6910822 -2.712983 + 357 5 1.317533 -1.022015 + 357 6 .7697452 .1576287 + 357 7 .1603402 -1.019497 + 357 8 .2641011 -.9525455 + 357 9 .7911133 -.416232 + 357 10 .5033729 -.2270353 + 358 1 1.175059 -.779038 + 358 2 .5949914 1.045863 + 358 3 1.106856 2.446459 + 358 4 -.4519127 .4342671 + 358 5 -.5643611 -.6856034 + 358 6 -.4651806 1.369249 + 358 7 .5311009 1.259885 + 358 8 .4178049 2.95355 + 358 9 -.3521637 2.536368 + 358 10 1.210013 -.684526 + 359 1 -1.018668 -1.077062 + 359 2 -.6906709 -.600858 + 359 3 -1.410484 -4.411857 + 359 4 .0062039 -1.11622 + 359 5 -.4723842 -1.576853 + 359 6 .542465 -1.190021 + 359 7 .5931194 -2.630582 + 359 8 -.8850244 -1.019225 + 359 9 -1.12701 -2.311237 + 359 10 .1957597 .5937567 + 360 1 1.464742 3.596365 + 360 2 1.916965 3.746908 + 360 3 1.989942 1.545314 + 360 4 1.506444 1.887023 + 360 5 2.121707 -2.21517 + 360 6 1.586579 .3038366 + 360 7 1.343209 -2.974389 + 360 8 .318958 1.784048 + 360 9 2.264643 3.166786 + 360 10 .580301 -.6073509 + 361 1 -.0047498 3.179522 + 361 2 .9173191 3.722483 + 361 3 .2045486 3.237594 + 361 4 .692564 2.052249 + 361 5 .6428299 2.891396 + 361 6 .6835338 2.688569 + 361 7 .0621936 1.961589 + 361 8 -.2271586 2.491282 + 361 9 .5147851 3.342131 + 361 10 -.4401184 .3320173 + 362 1 -.9329444 -.924626 + 362 2 -.8063075 -.2996407 + 362 3 .1358762 -.1040865 + 362 4 -1.823792 -4.460451 + 362 5 -.6714351 -.8630504 + 362 6 -.4733475 -.726538 + 362 7 -1.074792 -2.79022 + 362 8 -.8152092 -.8182088 + 362 9 .1224095 1.060908 + 362 10 .3062999 -.3005203 + 363 1 -2.171992 -1.849388 + 363 2 -2.224676 -.39443 + 363 3 -2.152846 -1.03288 + 363 4 -.041466 .5743951 + 363 5 -1.903765 -.1783118 + 363 6 -2.955784 -1.163626 + 363 7 -.9454063 1.746331 + 363 8 -1.95572 -.4471476 + 363 9 -1.584458 .1393538 + 363 10 -1.028017 .6801541 + 364 1 .2280406 2.924021 + 364 2 -1.261086 -1.165338 + 364 3 -2.019082 -3.581627 + 364 4 -.2639151 .6799535 + 364 5 -.9835242 -.0977344 + 364 6 -1.591298 -1.263671 + 364 7 .3806881 -.5235142 + 364 8 -.2386861 2.263564 + 364 9 -1.753455 .0206722 + 364 10 .003244 -.6679841 + 365 1 -1.307529 -2.674345 + 365 2 -1.416086 -.042206 + 365 3 -1.167556 -.7856366 + 365 4 -1.661194 -2.587862 + 365 5 -1.672819 -3.544657 + 365 6 -.3199935 -.6373743 + 365 7 -.4385923 .7567182 + 365 8 .0452868 .9746832 + 365 9 -.9363165 .3904944 + 365 10 -1.342519 -1.761821 + 366 1 -.0125248 3.545247 + 366 2 -.8516936 .9159751 + 366 3 .0498779 3.384288 + 366 4 1.838684 2.976934 + 366 5 1.201677 7.040684 + 366 6 .2071851 .894658 + 366 7 -.1670124 .6312494 + 366 8 -.5534649 1.6243 + 366 9 -.7880661 1.996419 + 366 10 .8838658 .4972352 + 367 1 -.6030208 -.8415774 + 367 2 -1.94056 -3.805515 + 367 3 -2.342715 -4.87499 + 367 4 -2.323491 -4.225123 + 367 5 -2.717042 -4.677723 + 367 6 -1.328835 .6660575 + 367 7 -1.008107 -3.067841 + 367 8 -1.849764 -4.600489 + 367 9 -1.410766 -3.906488 + 367 10 -2.000228 -5.136794 + 368 1 -.7445215 2.139421 + 368 2 .0979543 3.051342 + 368 3 -1.569118 -1.63978 + 368 4 -1.639416 .3739988 + 368 5 -.20704 .1416045 + 368 6 -.743534 .347235 + 368 7 -.0071092 2.516553 + 368 8 1.084817 3.677345 + 368 9 -.5520653 4.258949 + 368 10 -.0843069 -.2635856 + 369 1 -1.870674 -3.743335 + 369 2 -2.436843 -3.345125 + 369 3 -2.220279 -3.094991 + 369 4 -1.454587 -4.027362 + 369 5 -2.301934 -2.577597 + 369 6 -.8766038 -4.349296 + 369 7 -2.37972 -5.986567 + 369 8 -1.920468 -6.984557 + 369 9 -.5517857 -4.166302 + 369 10 -1.007551 -5.348446 + 370 1 .2675304 .8432758 + 370 2 -.5173684 -4.512389 + 370 3 -.5385896 -2.509871 + 370 4 -.2707357 -2.555482 + 370 5 -.8387904 -2.239731 + 370 6 -.7502377 -1.345504 + 370 7 -1.21098 -2.705103 + 370 8 .3272575 .6733996 + 370 9 -.2693458 -1.967517 + 370 10 -1.51174 -4.394127 + 371 1 .8658993 2.401864 + 371 2 .5694863 1.626551 + 371 3 1.59426 3.303421 + 371 4 -.0394821 .4322766 + 371 5 .5766224 1.615413 + 371 6 1.362109 1.48777 + 371 7 -.0075051 1.302828 + 371 8 .9601732 4.973707 + 371 9 -1.213404 -.1219416 + 371 10 -.129021 1.713119 + 372 1 -1.029784 .2946149 + 372 2 -.7234232 -1.063948 + 372 3 .7799363 .757264 + 372 4 -.9587575 1.299233 + 372 5 -1.091083 -1.48621 + 372 6 -.7423564 -.8135334 + 372 7 -.2809204 1.06414 + 372 8 .487967 2.125468 + 372 9 -1.824855 -1.314012 + 372 10 -.2890447 1.56795 + 373 1 -1.387584 .070205 + 373 2 -.2189843 -1.345379 + 373 3 .1667443 3.669709 + 373 4 .4580645 1.700927 + 373 5 .2726969 1.727182 + 373 6 .1778178 2.455134 + 373 7 -.2862008 2.415548 + 373 8 -1.352834 1.999186 + 373 9 .5776142 1.112005 + 373 10 .5641723 .4722159 + 374 1 -.2062007 .6627476 + 374 2 .0798875 .6567752 + 374 3 -.5031145 .6768382 + 374 4 -.3551856 1.892588 + 374 5 -.3580014 -.0693808 + 374 6 .2438183 .6433935 + 374 7 -1.361192 -1.39268 + 374 8 -.9262058 -1.370277 + 374 9 .1628584 1.810411 + 374 10 1.421647 -1.538967 + 375 1 .3221255 1.463645 + 375 2 1.255186 2.782729 + 375 3 1.033051 1.540211 + 375 4 .1678073 4.33535 + 375 5 .6040758 -.0933425 + 375 6 .3728646 -.3406181 + 375 7 .2509676 .9784555 + 375 8 -.8094957 -.3378635 + 375 9 .6270386 2.44438 + 375 10 -.1518685 4.05947 + 376 1 .2611696 -2.028676 + 376 2 -.7275745 -1.402231 + 376 3 .6616477 -.2468495 + 376 4 -.8691949 -3.083127 + 376 5 -.1946765 -.9081417 + 376 6 .9376171 .6714628 + 376 7 .4927319 -1.513386 + 376 8 -.5620987 -1.235962 + 376 9 .5936772 -.5783228 + 376 10 .6042633 -.4205357 + 377 1 -2.649898 -3.81094 + 377 2 -1.655321 -3.72097 + 377 3 -2.443664 -3.724946 + 377 4 -2.127761 -5.600814 + 377 5 -1.177635 -4.16115 + 377 6 -1.377227 -4.539193 + 377 7 -.96815 -3.433222 + 377 8 -.5125041 -3.106145 + 377 9 -2.061866 -5.524243 + 377 10 -2.810571 -4.434413 + 378 1 -2.338704 -5.005356 + 378 2 -1.656822 -5.29887 + 378 3 -.66752 -5.178211 + 378 4 -1.421779 -3.867168 + 378 5 .0099803 -2.171135 + 378 6 -1.158701 -2.939146 + 378 7 -1.433236 -5.372736 + 378 8 -.8795348 -4.894604 + 378 9 -1.26688 -3.002025 + 378 10 -2.064336 -5.208756 + 379 1 .56175 6.485942 + 379 2 .9244747 .6027086 + 379 3 .072753 1.531353 + 379 4 .640782 6.348257 + 379 5 1.05646 3.150079 + 379 6 .9276287 4.381526 + 379 7 .2058034 .5054486 + 379 8 .178113 2.081574 + 379 9 2.297468 4.853758 + 379 10 .2891109 4.017732 + 380 1 -.2727286 -1.172392 + 380 2 .2622191 -2.782768 + 380 3 -1.776102 -2.688119 + 380 4 .7835556 -2.694143 + 380 5 -.3700525 -2.696292 + 380 6 -.3973808 1.115081 + 380 7 -1.025798 -3.355073 + 380 8 -1.210958 -3.057121 + 380 9 .7745685 -1.246443 + 380 10 .6823879 -1.399245 + 381 1 -.1389521 1.119125 + 381 2 .383912 1.526184 + 381 3 -.1540905 .2111322 + 381 4 -.8339081 1.019494 + 381 5 1.37506 .4786931 + 381 6 .0226934 2.360403 + 381 7 .4259548 2.059906 + 381 8 -.8472951 -.0952861 + 381 9 -1.064817 .8264878 + 381 10 -.5788585 -1.286639 + 382 1 -.18602 .9143266 + 382 2 -.4718808 -1.017367 + 382 3 .2652463 -2.894339 + 382 4 -1.216186 -2.82424 + 382 5 -.8109982 -2.29513 + 382 6 -1.549591 -1.698686 + 382 7 -1.418895 -1.74393 + 382 8 -.7169449 -4.557049 + 382 9 -1.267944 -1.532938 + 382 10 .0035272 -3.39837 + 383 1 1.091774 2.434479 + 383 2 -.1719602 3.263875 + 383 3 -1.216398 .2513596 + 383 4 -.4874731 .6186442 + 383 5 -.0111257 .9499747 + 383 6 -.535559 1.793149 + 383 7 -1.510683 1.791825 + 383 8 .1951609 3.793243 + 383 9 -.7253405 .5536453 + 383 10 -.9152568 .5808493 + 384 1 -.2389407 2.659433 + 384 2 -.0465461 3.50509 + 384 3 .3263168 4.209057 + 384 4 -.1805945 1.160524 + 384 5 .9056537 4.777255 + 384 6 -.3788006 2.787255 + 384 7 -.3651813 .6233462 + 384 8 -1.285669 2.744303 + 384 9 -.7486035 -1.69739 + 384 10 -.7972383 2.420904 + 385 1 -.1189061 .8887793 + 385 2 -1.147574 1.219993 + 385 3 .3564054 4.473996 + 385 4 -.0313242 -.1905694 + 385 5 -.9909368 1.452563 + 385 6 .1912384 1.563893 + 385 7 -.8124213 1.321995 + 385 8 .0460558 .7245447 + 385 9 .1916294 4.070405 + 385 10 .683269 3.197297 + 386 1 .733038 -.6786328 + 386 2 -.4328094 -2.456077 + 386 3 -.2891144 -1.263554 + 386 4 .6648033 -2.050103 + 386 5 .1220821 -.426532 + 386 6 -.0032352 -1.565241 + 386 7 .3380939 .2080529 + 386 8 -.7624062 -2.170307 + 386 9 .034877 -.8399373 + 386 10 -.0694554 -1.830667 + 387 1 -1.213341 -2.604572 + 387 2 -.3505026 -.7526515 + 387 3 -.8015363 -2.280797 + 387 4 -.3926122 -2.223322 + 387 5 -1.772868 -2.179348 + 387 6 -1.423786 -.7722486 + 387 7 -3.253332 -4.234037 + 387 8 -1.18157 -.3957207 + 387 9 -1.09419 -.7762269 + 387 10 -.6858385 -1.630605 + 388 1 -2.123918 -2.658032 + 388 2 -1.763603 -.9070067 + 388 3 .627344 -1.363785 + 388 4 .3064886 -2.358666 + 388 5 -1.105821 -2.24256 + 388 6 -1.370474 -4.459815 + 388 7 -.7883329 -.9456815 + 388 8 -1.255332 -.3594983 + 388 9 -.9302744 .4103589 + 388 10 -1.734834 -3.872535 + 389 1 1.636304 4.878328 + 389 2 .8420483 .986828 + 389 3 .4902027 1.030463 + 389 4 1.561347 5.429127 + 389 5 .3193175 2.848952 + 389 6 1.971495 3.749794 + 389 7 1.604653 1.722209 + 389 8 -.031091 2.814834 + 389 9 1.325941 2.074522 + 389 10 1.313713 3.266188 + 390 1 -.1481084 -1.686957 + 390 2 -1.539168 -4.242666 + 390 3 -.0672399 -1.307308 + 390 4 .0991664 -1.436172 + 390 5 -.3925485 -1.16717 + 390 6 -.284917 -3.36085 + 390 7 1.028584 2.02427 + 390 8 .1521842 .1270557 + 390 9 -.7923329 -1.690846 + 390 10 -1.032059 -3.061796 + 391 1 -1.073351 -3.620128 + 391 2 -.2690195 2.77845 + 391 3 -.7653798 -.3245218 + 391 4 -1.206248 -1.274928 + 391 5 1.079103 1.25298 + 391 6 -.8228603 .1701522 + 391 7 .0770863 -2.512754 + 391 8 -.1563727 -1.951039 + 391 9 -.1091052 -1.146867 + 391 10 -.5970102 -.8082113 + 392 1 -.778818 -2.149872 + 392 2 -1.124083 -1.706628 + 392 3 -1.249473 -2.10093 + 392 4 -1.353908 -2.409914 + 392 5 -2.006394 -4.0176 + 392 6 .4067655 .7217132 + 392 7 -.6210231 -4.528327 + 392 8 -.8292722 -2.719974 + 392 9 .1029305 -2.586509 + 392 10 -.1138842 -2.76546 + 393 1 1.37527 -.8749509 + 393 2 1.115777 -.1393572 + 393 3 -.151459 -1.034124 + 393 4 .7711652 2.072216 + 393 5 .4574333 -1.451379 + 393 6 .7529836 1.22789 + 393 7 -.0698638 -.6474718 + 393 8 .9219314 -.3181329 + 393 9 1.46152 2.361929 + 393 10 -.8179705 -.2439315 + 394 1 -.2519535 -.2649384 + 394 2 .2682973 .8984743 + 394 3 -.2655891 .2438378 + 394 4 -1.390692 -.8121323 + 394 5 -1.755518 -2.606077 + 394 6 -.4655634 -3.107933 + 394 7 -.8527375 -1.599537 + 394 8 -.2329211 -2.734554 + 394 9 .344005 2.110598 + 394 10 -.9888225 .3048791 + 395 1 -.8984658 .2038043 + 395 2 .0965772 4.283431 + 395 3 -.6580652 .7473171 + 395 4 .2438093 1.819212 + 395 5 -.1076336 -2.270298 + 395 6 1.807546 1.503969 + 395 7 -.1048535 2.369996 + 395 8 -.3932262 1.135453 + 395 9 -.8891494 .3334768 + 395 10 -.1850104 .7098111 + 396 1 -.017905 -.2280871 + 396 2 -.4417512 -.7029725 + 396 3 .913402 -.1278549 + 396 4 -.1188169 -.6936073 + 396 5 1.261677 -2.11687 + 396 6 .4208337 -.4546144 + 396 7 1.359924 2.324958 + 396 8 .5337011 -1.040696 + 396 9 .2693107 .9022439 + 396 10 .9880946 -1.36061 + 397 1 -.7676239 .962248 + 397 2 -.3178857 1.084165 + 397 3 -.3132098 1.509503 + 397 4 -.4339292 -.5050718 + 397 5 .2527694 2.793793 + 397 6 -1.366622 -.4007915 + 397 7 .607631 1.388012 + 397 8 -1.017177 .0501715 + 397 9 -.8145512 -.5959447 + 397 10 .1584879 -.5414529 + 398 1 -1.546453 -3.930412 + 398 2 -1.318608 -4.12843 + 398 3 -1.011837 -2.496718 + 398 4 -1.248173 -5.044407 + 398 5 .3670759 -2.0697 + 398 6 .9517725 -1.654942 + 398 7 -.6049573 -1.623286 + 398 8 -.0641443 -1.953758 + 398 9 -1.672673 -4.557882 + 398 10 -1.265704 -2.264621 + 399 1 -.0593621 -.1262234 + 399 2 .1390234 .2107332 + 399 3 .6143929 2.229314 + 399 4 1.522082 2.783622 + 399 5 -.6489763 -.3426912 + 399 6 .950194 -.098972 + 399 7 -.3629631 -.4596865 + 399 8 1.022763 1.062923 + 399 9 -.0413916 -.1947412 + 399 10 -.2173491 1.720362 + 400 1 -2.01255 -.1468048 + 400 2 -1.466231 -2.075447 + 400 3 -.328725 -.5171174 + 400 4 -1.081673 -1.224342 + 400 5 -1.919911 -1.101861 + 400 6 -1.547702 .0808054 + 400 7 -1.581804 -.7976359 + 400 8 -.458555 -1.338285 + 400 9 -2.187351 -2.599372 + 400 10 -1.692946 -1.500466 + 401 1 .1914289 -1.696554 + 401 2 -2.018934 -1.246415 + 401 3 -1.537366 -1.867577 + 401 4 -.5202571 2.083177 + 401 5 .1608804 2.068106 + 401 6 .4066608 .35845 + 401 7 .0123159 -1.685919 + 401 8 -.0054039 -.7783538 + 401 9 .8345245 -.1941541 + 401 10 1.107574 2.468156 + 402 1 -.8062186 2.287118 + 402 2 -.3320312 1.861541 + 402 3 .5146966 2.103429 + 402 4 .9527199 -.4108217 + 402 5 -1.297568 -1.612024 + 402 6 -1.410252 -1.751004 + 402 7 -.6556836 -1.968718 + 402 8 -.4294576 1.578267 + 402 9 -.018121 -.3737303 + 402 10 -.9197619 2.050787 + 403 1 -.1031541 -2.463573 + 403 2 -.0467654 1.766958 + 403 3 -1.848265 -.9244912 + 403 4 -2.142257 -3.752481 + 403 5 .7792882 -.2481943 + 403 6 -1.396972 -1.124067 + 403 7 -1.767408 -2.201828 + 403 8 -.7720683 -.8175995 + 403 9 -.3092144 .5331707 + 403 10 -1.18094 -.8751833 + 404 1 .5574738 1.012129 + 404 2 .9787374 2.795616 + 404 3 -.6734901 3.540449 + 404 4 1.24167 3.314948 + 404 5 .1352221 4.229395 + 404 6 .8817216 .6018347 + 404 7 -.9404455 -.6503668 + 404 8 1.34717 3.642462 + 404 9 -.3886456 .9426833 + 404 10 .2241393 4.824384 + 405 1 1.825318 -.1515077 + 405 2 2.115816 1.201826 + 405 3 .9304053 -.4817632 + 405 4 .1921156 -2.148475 + 405 5 .8255455 1.300841 + 405 6 .5831465 -1.725 + 405 7 .9376793 1.429005 + 405 8 1.55576 .4336303 + 405 9 .606691 -1.553775 + 405 10 .7915356 .5471672 + 406 1 .1949664 -1.609993 + 406 2 1.016778 2.132151 + 406 3 -.2586179 -1.115174 + 406 4 .1688379 .5940931 + 406 5 -.0040697 .4558524 + 406 6 .2493155 1.928022 + 406 7 .6937189 .3330708 + 406 8 .2827526 -.3635032 + 406 9 -.1027333 .4543974 + 406 10 1.589826 2.387834 + 407 1 -.7128226 -1.909525 + 407 2 -.2865859 -3.697958 + 407 3 .8992133 -1.598288 + 407 4 .0485923 -1.41454 + 407 5 -.8217157 -2.161766 + 407 6 -.5069422 .2655977 + 407 7 -.6864436 -1.997193 + 407 8 -.5299146 -.1487815 + 407 9 -.9854889 -3.505768 + 407 10 -.3828234 -2.071238 + 408 1 -.1031225 -.193574 + 408 2 -.3857403 2.465618 + 408 3 -.2060512 1.988495 + 408 4 -.2416199 1.48284 + 408 5 -.7164702 .9025726 + 408 6 .2646143 -.1305631 + 408 7 -1.027854 -3.130802 + 408 8 .3418452 -1.073651 + 408 9 -1.378198 -.6554665 + 408 10 -1.505273 -2.505978 + 409 1 .6187845 2.273488 + 409 2 1.275673 3.445526 + 409 3 .7887467 -.0290776 + 409 4 2.147919 3.447604 + 409 5 .6304201 4.496997 + 409 6 -.0092821 -3.239878 + 409 7 1.076677 3.398389 + 409 8 1.838847 .8533272 + 409 9 1.071178 1.863122 + 409 10 1.599813 3.012568 + 410 1 1.623485 3.023676 + 410 2 1.688435 4.342941 + 410 3 .9627274 -.8370011 + 410 4 .878053 .0911687 + 410 5 .6619849 .9105803 + 410 6 1.400549 1.941754 + 410 7 .0447184 .8805856 + 410 8 2.751527 2.383714 + 410 9 1.582199 3.265009 + 410 10 -.3083791 2.304447 + 411 1 .5157974 -2.422948 + 411 2 -.6832858 -.3687448 + 411 3 .6330415 -1.482227 + 411 4 1.594655 1.644737 + 411 5 2.229709 2.163126 + 411 6 .8013659 -.8816252 + 411 7 -.4055098 -.0280363 + 411 8 .5054734 .4837077 + 411 9 .9044289 1.635944 + 411 10 .2105808 1.142422 + 412 1 -.7347844 -3.902147 + 412 2 .0814267 .0670649 + 412 3 -.7462096 -2.404454 + 412 4 -.8561645 1.647258 + 412 5 -1.213475 -1.157459 + 412 6 -.2517644 -1.563273 + 412 7 -1.449893 .0672905 + 412 8 -1.213773 .0771902 + 412 9 -.9339671 -2.473112 + 412 10 1.743578 1.217293 + 413 1 -1.501508 -4.74582 + 413 2 -1.043551 -2.064824 + 413 3 .27646 -1.94369 + 413 4 .4618978 -.6562665 + 413 5 -.8354864 -2.916754 + 413 6 .3948614 -.3600055 + 413 7 -1.113149 -3.073426 + 413 8 -1.172547 -1.353321 + 413 9 -1.625494 -.8432627 + 413 10 -.3830567 -1.659044 + 414 1 2.070886 .7795202 + 414 2 .6195166 1.908721 + 414 3 1.034001 1.127271 + 414 4 .3176284 .7095832 + 414 5 .2653214 1.408377 + 414 6 1.118213 .5098971 + 414 7 .5788648 -1.134248 + 414 8 .9913274 2.486023 + 414 9 .3730953 -.0786542 + 414 10 -.0116555 -2.474389 + 415 1 -.3349656 -.0892018 + 415 2 .6066259 1.052264 + 415 3 -.2882415 .1731756 + 415 4 .7285664 2.057892 + 415 5 -.2154823 -2.178997 + 415 6 .8905088 .2365695 + 415 7 .1597038 2.225168 + 415 8 -.2642411 -.4768011 + 415 9 -.0173702 .8307357 + 415 10 -.0942339 -1.338356 + 416 1 -.5867347 -.5911654 + 416 2 .6581494 1.809741 + 416 3 -.5409455 .0445679 + 416 4 -.3837071 1.309709 + 416 5 .2574132 -.3206614 + 416 6 1.467135 .7045974 + 416 7 -.9820654 -2.447804 + 416 8 -.082296 .4758784 + 416 9 .516479 1.73012 + 416 10 .2833954 .7711113 + 417 1 2.441603 1.912426 + 417 2 .2111196 -.7762764 + 417 3 .1353235 .3823783 + 417 4 .0135145 1.943285 + 417 5 1.116857 1.943743 + 417 6 -.0099324 .2669403 + 417 7 .4448675 1.977202 + 417 8 1.159355 1.135729 + 417 9 2.071271 .6578733 + 417 10 .2560751 .8004469 + 418 1 -.3367818 1.970263 + 418 2 -.8470147 -3.019895 + 418 3 -.9560864 -5.519354 + 418 4 -1.073972 -1.947595 + 418 5 -2.082256 -1.646251 + 418 6 -.1829985 -1.573143 + 418 7 -1.049946 -4.261832 + 418 8 -.0466021 -.1050563 + 418 9 -1.370385 -2.745022 + 418 10 -.2428657 -2.183631 + 419 1 1.504079 3.464292 + 419 2 -1.259651 .1361358 + 419 3 -.1121893 1.367987 + 419 4 -1.05013 -.5596214 + 419 5 -1.317778 -1.253009 + 419 6 -.2690841 2.344856 + 419 7 .4263131 1.125889 + 419 8 .5164971 3.039961 + 419 9 -1.117693 .2860814 + 419 10 -.1778297 1.956031 + 420 1 -.6638264 -2.034836 + 420 2 1.281359 1.940011 + 420 3 -.0575579 2.458019 + 420 4 1.164482 -.9480169 + 420 5 .1465704 2.01344 + 420 6 .5810494 -1.547655 + 420 7 1.840428 4.892933 + 420 8 1.178746 1.100073 + 420 9 1.111845 .4014868 + 420 10 -.0388699 1.646489 + 421 1 .0070452 -.4972007 + 421 2 .0531656 -.1948821 + 421 3 .9443462 -1.806122 + 421 4 -.0126633 -1.927632 + 421 5 -.165668 -.8824214 + 421 6 1.406864 -.1935287 + 421 7 -.246475 1.319037 + 421 8 .4510905 2.951708 + 421 9 -.0552967 2.509493 + 421 10 .9734349 2.244194 + 422 1 -1.564715 -1.352146 + 422 2 .855391 3.443546 + 422 3 .1271437 -.6750422 + 422 4 .5520694 .5220137 + 422 5 -.5309771 -2.739075 + 422 6 -.2985711 -3.814489 + 422 7 .1602508 -.6443366 + 422 8 .2836008 -.3463539 + 422 9 .7023704 1.311289 + 422 10 .9814914 -.6798663 + 423 1 -.9494383 -3.152365 + 423 2 -.6546491 -3.878369 + 423 3 -.3864028 1.016228 + 423 4 .0122976 -.9310973 + 423 5 -.9387039 1.054112 + 423 6 -.5552303 -4.802896 + 423 7 -1.198291 -3.928394 + 423 8 .1043659 -1.540226 + 423 9 -1.274448 -2.711023 + 423 10 -.0798866 2.031069 + 424 1 1.734211 3.190301 + 424 2 .9767532 2.782577 + 424 3 1.193593 3.91996 + 424 4 .3344921 .0236341 + 424 5 1.919613 2.546419 + 424 6 1.578051 3.697517 + 424 7 1.40677 .8268937 + 424 8 2.15641 4.377097 + 424 9 .9412709 1.215672 + 424 10 .2309116 -.0190983 + 425 1 -.452094 1.854568 + 425 2 -1.00189 -2.553212 + 425 3 -.0130555 -.1134608 + 425 4 .1772467 -.0172197 + 425 5 .9496551 -.8119242 + 425 6 -1.10435 -.6266581 + 425 7 .5593736 -.147649 + 425 8 .1976095 1.299561 + 425 9 -.5017295 .4907691 + 425 10 .1245164 -.5356318 + 426 1 .9084791 3.488263 + 426 2 .3022215 1.593072 + 426 3 .3523518 3.560014 + 426 4 1.389558 4.391698 + 426 5 -.3045548 2.211039 + 426 6 1.504628 4.758518 + 426 7 -.3813789 .886306 + 426 8 -1.122167 .2882462 + 426 9 1.42917 4.359997 + 426 10 1.289825 3.711389 + 427 1 .9988312 2.404515 + 427 2 1.257572 2.406475 + 427 3 1.990186 1.645045 + 427 4 1.38881 -.0760527 + 427 5 .5176821 -.6175386 + 427 6 1.613265 .5432907 + 427 7 .2159253 -1.656765 + 427 8 2.480673 4.467958 + 427 9 1.579619 1.33492 + 427 10 1.015025 2.976076 + 428 1 .0494811 -5.017232 + 428 2 -.3149573 -4.798469 + 428 3 -2.115308 -4.840232 + 428 4 1.593306 -.5352834 + 428 5 -.079479 -5.039601 + 428 6 .3672556 -3.95359 + 428 7 -.5096328 -4.939913 + 428 8 -1.264978 -6.594603 + 428 9 -.4028769 -5.406234 + 428 10 -.6661755 -4.167671 + 429 1 -.1097099 .0199443 + 429 2 -.7167571 -.1464609 + 429 3 -.0509188 -2.301697 + 429 4 .8798097 -.8627442 + 429 5 -.4581181 -1.542627 + 429 6 -.6673009 -.5231506 + 429 7 -.4488439 -.341106 + 429 8 -1.493959 -1.550375 + 429 9 .7072334 -.896534 + 429 10 -.5766434 -.1429675 + 430 1 .6044408 -1.2024 + 430 2 -.46694 -2.311639 + 430 3 1.665778 -.3730754 + 430 4 -.1317859 -2.08054 + 430 5 -.2766372 -1.635686 + 430 6 -1.102014 -.1918309 + 430 7 -.5368614 -.5182484 + 430 8 .6285307 -2.221296 + 430 9 .0195935 -.8501439 + 430 10 .3593442 -.7892064 + 431 1 -.2574317 -.4560567 + 431 2 .0975656 -1.356327 + 431 3 .2632216 -1.919121 + 431 4 .2765998 .4748544 + 431 5 .4300176 -.4813799 + 431 6 .4923273 1.291828 + 431 7 1.003912 .5043193 + 431 8 .8404063 -2.568706 + 431 9 .6355165 -2.630508 + 431 10 2.006631 2.400579 + 432 1 -1.143222 -2.350887 + 432 2 -1.826607 1.516606 + 432 3 -1.062554 -.1034092 + 432 4 -.725263 .8435242 + 432 5 .0565487 2.580381 + 432 6 .1901658 -1.081234 + 432 7 .5491037 1.5596 + 432 8 -1.826998 -1.889271 + 432 9 -.673655 -1.248513 + 432 10 -.4593998 1.240963 + 433 1 .1691684 1.218385 + 433 2 -1.91807 -2.949035 + 433 3 .0081709 -1.415665 + 433 4 -.7260606 .5953585 + 433 5 .5105734 3.575824 + 433 6 -.1437019 -.5755485 + 433 7 .4840844 -.1388436 + 433 8 .3926634 1.912847 + 433 9 -.8762536 -1.290947 + 433 10 -.412704 -1.901707 + 434 1 -2.25279 -5.273857 + 434 2 -1.714723 -5.482409 + 434 3 -.8295858 -3.188483 + 434 4 -2.444655 -7.843253 + 434 5 -.7853277 -2.476118 + 434 6 -2.068517 -2.093982 + 434 7 -2.585114 -4.634119 + 434 8 -.919925 -3.396191 + 434 9 .1633523 -1.44048 + 434 10 -1.613323 -5.179605 + 435 1 -1.602668 -.3203701 + 435 2 .5510446 2.277113 + 435 3 .2731864 -1.103835 + 435 4 .8420033 .5257187 + 435 5 .2451231 .2521747 + 435 6 .0986502 1.777096 + 435 7 .7048341 .9748376 + 435 8 -.0268416 -2.522256 + 435 9 .3603241 -1.941055 + 435 10 -.8263332 -1.256569 + 436 1 -.3601574 -2.312183 + 436 2 -.0717983 -.9491949 + 436 3 -.1674869 -2.542461 + 436 4 .9953864 1.041109 + 436 5 -.3301154 1.796981 + 436 6 -.3035614 -3.096237 + 436 7 1.034271 -2.583395 + 436 8 -.2270305 -.1086363 + 436 9 -.3944024 1.621027 + 436 10 1.868106 1.602469 + 437 1 1.327535 .1598556 + 437 2 .2767647 -.6695495 + 437 3 .1117265 -1.395034 + 437 4 -.3764054 1.158429 + 437 5 -.7836369 -1.759002 + 437 6 .68331 1.411001 + 437 7 .261591 1.87514 + 437 8 -.3326955 -.306918 + 437 9 -.6381776 -.8331632 + 437 10 -.2460251 -2.582434 + 438 1 -.2560682 .2037976 + 438 2 1.269286 1.72191 + 438 3 .2706043 .100284 + 438 4 -.4085233 -2.304594 + 438 5 .2756313 2.221198 + 438 6 1.155215 2.067843 + 438 7 2.662324 2.508456 + 438 8 3.381401 3.951496 + 438 9 .9376914 1.198312 + 438 10 -.2386081 1.603678 + 439 1 1.375761 5.207918 + 439 2 .4423097 2.387374 + 439 3 .5830641 3.637509 + 439 4 -.1641637 3.91785 + 439 5 -1.459138 -.8339624 + 439 6 .5626828 4.342764 + 439 7 .1730993 3.74051 + 439 8 -.6648005 .9761756 + 439 9 -1.03572 1.340201 + 439 10 -.5610915 2.339057 + 440 1 1.282473 -3.473607 + 440 2 1.78932 -1.250972 + 440 3 1.533081 -2.761228 + 440 4 -.3913983 -2.38858 + 440 5 1.316373 -1.886167 + 440 6 2.838928 .070364 + 440 7 .3778873 -1.505551 + 440 8 2.66299 .8551965 + 440 9 .0422313 -2.602297 + 440 10 1.199256 -3.342403 + 441 1 1.925085 5.810988 + 441 2 1.329674 3.862953 + 441 3 1.590699 4.223527 + 441 4 1.809034 5.038814 + 441 5 .5276424 3.36681 + 441 6 .6710454 1.176385 + 441 7 .7777985 3.40734 + 441 8 1.906092 4.701039 + 441 9 1.923245 2.828849 + 441 10 1.592659 3.908236 + 442 1 .1823671 .5516407 + 442 2 -.1504644 -1.554295 + 442 3 -.8163794 -.409709 + 442 4 -.6780152 -.8284285 + 442 5 -1.7705 -2.104317 + 442 6 -.8156215 -.937685 + 442 7 -.994137 -2.063158 + 442 8 -2.270714 -4.573486 + 442 9 -1.026439 -1.177351 + 442 10 -.2501065 .1504591 + 443 1 .5740207 3.466416 + 443 2 1.058301 3.197285 + 443 3 .8104317 4.012905 + 443 4 .6862648 2.83182 + 443 5 .0341383 .7353115 + 443 6 .9138442 2.327193 + 443 7 .260097 1.348206 + 443 8 1.581338 4.514749 + 443 9 1.354229 .5353475 + 443 10 .9457233 4.026806 + 444 1 -.0077119 -3.190456 + 444 2 .0551145 -3.596902 + 444 3 1.020954 -.9419343 + 444 4 -.1434664 -3.170668 + 444 5 .7838643 -2.616662 + 444 6 .8149613 -5.569409 + 444 7 .5583765 -3.398926 + 444 8 .6079774 -3.331208 + 444 9 1.072682 -2.293409 + 444 10 -1.635865 -7.046462 + 445 1 1.294 -.064443 + 445 2 1.284704 1.292138 + 445 3 .8113809 .3704103 + 445 4 .0360593 .8059724 + 445 5 .3459978 .557832 + 445 6 .6842941 -1.061024 + 445 7 .768517 -1.606793 + 445 8 -.5137277 -1.193248 + 445 9 .6777138 -.4126529 + 445 10 -.1743898 -.5636351 + 446 1 -.2833169 -.4881735 + 446 2 1.232053 -.2779263 + 446 3 -1.578528 -1.89766 + 446 4 -.1701858 -1.427808 + 446 5 -.0878887 .2325244 + 446 6 .8466319 -.1734368 + 446 7 .5339299 -1.550349 + 446 8 .0069559 -.9014176 + 446 9 -.0850843 -.7973491 + 446 10 .0445299 1.677193 + 447 1 1.244462 -.2813219 + 447 2 .7706342 -.3274696 + 447 3 2.029404 -.7262349 + 447 4 1.093884 1.307541 + 447 5 -.0262879 -1.096675 + 447 6 1.018307 -.6573641 + 447 7 1.464599 1.671719 + 447 8 -.2191465 -1.483904 + 447 9 .0961823 -1.197459 + 447 10 1.576548 2.67785 + 448 1 -.7819886 -.5758462 + 448 2 -.1067826 -.9289398 + 448 3 1.09466 .6674385 + 448 4 -.8513584 -1.943838 + 448 5 -.1103761 -.4954867 + 448 6 -1.170346 .0634899 + 448 7 -1.281976 -4.537732 + 448 8 -1.048875 -1.623256 + 448 9 -.7202869 -1.981802 + 448 10 -1.356103 -2.70335 + 449 1 .780911 -.8005388 + 449 2 -.3212849 .5306858 + 449 3 .7742513 -.8227566 + 449 4 -.8894921 -.7125913 + 449 5 1.256309 1.854548 + 449 6 .4138374 -.2414136 + 449 7 -.0938981 2.351233 + 449 8 -1.3708 -.9259219 + 449 9 1.685384 -.3649867 + 449 10 1.621749 .9699164 + 450 1 -.693516 -1.395638 + 450 2 -1.16671 -2.645705 + 450 3 -.4434176 -4.058168 + 450 4 -2.328338 -6.661051 + 450 5 -2.287679 -2.384988 + 450 6 -1.097368 -3.720875 + 450 7 -1.936696 -2.576731 + 450 8 -.9807376 -4.31207 + 450 9 -2.166593 -6.168357 + 450 10 -.2307579 -2.907965 + 451 1 -.6445392 -1.344205 + 451 2 -1.185327 -.240715 + 451 3 .4016508 .6638312 + 451 4 -1.111103 -3.300896 + 451 5 -.9722462 -2.589497 + 451 6 .19608 -1.881335 + 451 7 .1152492 .088235 + 451 8 -.6359737 -2.156315 + 451 9 -.1342334 -2.330736 + 451 10 -.271674 .0603456 + 452 1 -.0606828 -.4446095 + 452 2 -.2505071 1.17738 + 452 3 -2.009021 -4.732916 + 452 4 -.1586868 -.6050504 + 452 5 -.6575706 -5.216979 + 452 6 .6953923 -.1194488 + 452 7 -.616479 -2.37141 + 452 8 -.7711889 -1.697133 + 452 9 -.2623308 -1.809036 + 452 10 .7965435 1.563352 + 453 1 -.3477908 -2.752378 + 453 2 .0814351 3.049219 + 453 3 1.078618 1.588751 + 453 4 .0581523 2.430225 + 453 5 1.440285 2.670775 + 453 6 -.9359018 -1.712218 + 453 7 .5436273 .658848 + 453 8 .3586571 2.437746 + 453 9 .3691075 -.3180394 + 453 10 -2.556064 -1.133035 + 454 1 -.8103027 .3313543 + 454 2 -1.526003 -4.266233 + 454 3 .0666736 1.97239 + 454 4 -.055649 .2919683 + 454 5 -.0116252 3.362326 + 454 6 -1.829207 .0529239 + 454 7 -.6722212 .6972919 + 454 8 -1.274012 -1.837079 + 454 9 -.5955167 -1.465482 + 454 10 -1.887076 1.137399 + 455 1 -.0598448 3.506877 + 455 2 .142093 1.916299 + 455 3 .8764141 3.749248 + 455 4 -.4978266 4.199536 + 455 5 -.4744421 1.218119 + 455 6 -.6240288 .9545363 + 455 7 -.7144527 3.419988 + 455 8 .1262228 3.244722 + 455 9 -.7108215 2.089641 + 455 10 -.396209 3.293334 + 456 1 .9931827 2.304585 + 456 2 .123794 -.9702383 + 456 3 -.5935802 1.450896 + 456 4 1.265399 1.196209 + 456 5 .1758724 1.623233 + 456 6 .2514593 1.422258 + 456 7 -1.731871 .4759974 + 456 8 -.6493905 -1.514841 + 456 9 .7120224 .7888171 + 456 10 -.6218277 -1.423006 + 457 1 -.9329444 -5.133676 + 457 2 -1.246644 -2.461416 + 457 3 .6488222 .4049606 + 457 4 .6832745 .7808949 + 457 5 -.0414484 -.7884268 + 457 6 .5644282 -1.641498 + 457 7 -.667787 -1.459372 + 457 8 .0435556 -.7535673 + 457 9 -1.200322 -.745594 + 457 10 -1.402349 -2.732503 + 458 1 .2586697 2.572212 + 458 2 -.361248 .2838089 + 458 3 .1426998 .7478423 + 458 4 -.6113911 3.262412 + 458 5 -.5117323 1.423192 + 458 6 -.9612436 -1.444049 + 458 7 -1.240537 1.093298 + 458 8 -1.001768 -.8175362 + 458 9 -1.749746 .5150104 + 458 10 -.8183131 -1.089437 + 459 1 .3869868 2.790486 + 459 2 .3286066 1.073783 + 459 3 1.656495 3.236034 + 459 4 .4831998 -1.772237 + 459 5 1.311491 3.081719 + 459 6 1.792279 -.8372608 + 459 7 .0407104 2.480815 + 459 8 1.134679 1.348804 + 459 9 1.422543 1.31334 + 459 10 1.188388 1.895708 + 460 1 -1.229831 -1.166649 + 460 2 .6547959 .4537871 + 460 3 -.1163394 .9092483 + 460 4 -.5163766 -4.690589 + 460 5 -2.061277 -4.870557 + 460 6 -1.041617 -3.246004 + 460 7 -.111656 -.8974286 + 460 8 -.7606674 -2.502137 + 460 9 -.8800873 -1.560514 + 460 10 -.6357743 -1.614715 + 461 1 -.0499422 2.459471 + 461 2 .17933 1.509496 + 461 3 1.524792 2.125407 + 461 4 -.2203395 -.1164641 + 461 5 -.3552831 -.9144968 + 461 6 -.0508331 -2.194261 + 461 7 .2583371 1.118912 + 461 8 .2129896 1.456533 + 461 9 .8697835 2.407538 + 461 10 .4496496 2.566832 + 462 1 .5778555 3.260968 + 462 2 .4640873 2.2194 + 462 3 1.727386 3.19534 + 462 4 .0328359 -1.682171 + 462 5 .0395433 .5094826 + 462 6 1.442306 -.1992525 + 462 7 -1.34632 -1.137385 + 462 8 .3472636 2.206575 + 462 9 -.6062221 .3116289 + 462 10 -1.02959 -2.460936 + 463 1 .488069 -.7719045 + 463 2 .224513 -1.405883 + 463 3 .1750936 -1.784459 + 463 4 .3459969 -.5111983 + 463 5 .3186721 -3.012005 + 463 6 -.1321543 -.2595133 + 463 7 .1442679 -1.985698 + 463 8 -.4785298 -3.262681 + 463 9 .8978547 .1589466 + 463 10 .5041783 -2.354146 + 464 1 .0524563 -.5099359 + 464 2 .5518264 -3.141937 + 464 3 2.714243 -1.228808 + 464 4 .5947378 -2.498291 + 464 5 .5415964 -3.398087 + 464 6 .8429409 -.2869278 + 464 7 .5579789 -3.039368 + 464 8 .6621224 -1.608326 + 464 9 .3403133 -3.328768 + 464 10 .4478637 -1.983862 + 465 1 .4344409 1.049089 + 465 2 .7611457 2.389434 + 465 3 .2632526 1.911364 + 465 4 1.468508 3.856431 + 465 5 -.5624062 -1.305477 + 465 6 1.127899 -.5023427 + 465 7 .4563978 -1.533073 + 465 8 .5899177 -.8203129 + 465 9 -.0405417 -1.036197 + 465 10 .7460121 -.2847904 + 466 1 .136169 .977666 + 466 2 .5972466 2.337216 + 466 3 -.5282793 -.6254815 + 466 4 .4311492 1.965056 + 466 5 .6669644 1.962815 + 466 6 .4404365 .1458644 + 466 7 .7783122 2.033966 + 466 8 .8098732 3.23798 + 466 9 .643719 -2.343687 + 466 10 1.059358 .5682003 + 467 1 1.396002 -2.037745 + 467 2 .6284592 -2.935527 + 467 3 .4000702 -2.141178 + 467 4 .584424 2.015122 + 467 5 .8012309 .1664379 + 467 6 -.12486 -2.694419 + 467 7 .9658216 -.1455323 + 467 8 .3274135 -2.528351 + 467 9 .0658425 .5189533 + 467 10 .6707103 -.1007586 + 468 1 .4937788 1.56737 + 468 2 .9928804 .1273928 + 468 3 .4423388 .535194 + 468 4 .495714 3.650008 + 468 5 1.273688 .1751573 + 468 6 .8958566 1.338358 + 468 7 .0961002 .0397323 + 468 8 2.263992 3.147342 + 468 9 .9674364 3.31263 + 468 10 .2563647 .7152029 + 469 1 .4216019 -.9407744 + 469 2 1.399263 -.5063294 + 469 3 -.0216054 .2178457 + 469 4 1.286045 .357494 + 469 5 .2619539 .1975994 + 469 6 1.884525 2.94722 + 469 7 1.168823 1.122076 + 469 8 .2115647 2.62381 + 469 9 .8546471 -1.653274 + 469 10 1.67261 1.649941 + 470 1 .5186357 -.7605744 + 470 2 -.6896887 -1.465926 + 470 3 .0542658 -1.21581 + 470 4 .0859867 -3.171865 + 470 5 -.2643983 -3.317875 + 470 6 .6272839 -.1626671 + 470 7 -.5159931 -2.493808 + 470 8 .3323292 -.804706 + 470 9 .5171393 2.497954 + 470 10 -.0638637 1.206197 + 471 1 .3220632 -1.324873 + 471 2 .980136 -1.504795 + 471 3 -.2532462 .1325734 + 471 4 .789984 -.8727639 + 471 5 1.436864 -3.147545 + 471 6 .5097044 -2.220442 + 471 7 .397614 -4.214648 + 471 8 .7564544 -2.607033 + 471 9 1.205068 -2.099972 + 471 10 1.924057 -2.330542 + 472 1 .7246941 1.597339 + 472 2 .5040356 2.32045 + 472 3 .5763428 2.216267 + 472 4 .0542709 3.422224 + 472 5 .8965965 2.372284 + 472 6 .2464421 .6423162 + 472 7 -.2741039 2.762528 + 472 8 1.142397 -.2501601 + 472 9 .4665295 .5884876 + 472 10 .5374241 3.34522 + 473 1 1.169988 2.36799 + 473 2 1.191892 2.70429 + 473 3 1.4945 3.138014 + 473 4 1.950034 4.462552 + 473 5 1.642218 3.248163 + 473 6 .9450042 2.222471 + 473 7 1.335385 -.0375831 + 473 8 .2492417 .4934994 + 473 9 1.882432 .8426313 + 473 10 1.506808 -.4519488 + 474 1 -.5708832 .2838852 + 474 2 .9818603 2.081658 + 474 3 .2790271 -.2540119 + 474 4 -.8444172 1.594845 + 474 5 -.286851 1.965796 + 474 6 -.8794868 .3319204 + 474 7 -.2043926 -.9133918 + 474 8 -.2688162 1.008824 + 474 9 -.3477406 3.226343 + 474 10 -.4433938 2.153789 + 475 1 .4245591 2.086255 + 475 2 -.4946041 -2.272095 + 475 3 -.2148269 .1008767 + 475 4 1.5057 3.141412 + 475 5 -.6277946 3.416986 + 475 6 2.119659 5.119712 + 475 7 -.146392 .0241062 + 475 8 .109479 -2.105205 + 475 9 1.649779 1.842312 + 475 10 .8330554 4.217445 + 476 1 .8717216 -.4967655 + 476 2 -.7454231 -3.057722 + 476 3 -.190138 -1.588644 + 476 4 -.2772791 -2.270676 + 476 5 -.2373092 -.6012625 + 476 6 -.7202951 -5.522466 + 476 7 -.8588698 -3.385403 + 476 8 .6135204 -.4711897 + 476 9 1.782739 -.4309441 + 476 10 -.1573513 -.0163591 + 477 1 .4824667 -.5281268 + 477 2 -.4994904 -1.849527 + 477 3 -1.253004 -2.45171 + 477 4 -.1263799 -4.134973 + 477 5 .5460196 -2.088633 + 477 6 .6968823 1.236504 + 477 7 .049839 -.0807042 + 477 8 1.45288 -.2804415 + 477 9 -.7240943 -3.515354 + 477 10 -.6819166 -2.274659 + 478 1 -.0679487 -1.836647 + 478 2 -1.277281 -1.277995 + 478 3 .8854836 1.217588 + 478 4 1.142317 .8378381 + 478 5 -.0131482 1.197186 + 478 6 -.7658634 -2.617491 + 478 7 .148683 .2176631 + 478 8 .3748206 -.5013412 + 478 9 .1877059 .1772054 + 478 10 .2491001 1.456882 + 479 1 .7738475 3.145003 + 479 2 .6115706 2.455661 + 479 3 .588763 3.586291 + 479 4 1.633834 3.726554 + 479 5 .3517998 2.226039 + 479 6 .868722 .5614613 + 479 7 .8200638 3.87775 + 479 8 .5428685 5.872612 + 479 9 -.8444331 .0843651 + 479 10 .3245695 4.399031 + 480 1 .166501 .9544092 + 480 2 -.6757479 1.753986 + 480 3 .4999409 3.679324 + 480 4 .5148152 1.93232 + 480 5 -.4049782 2.147339 + 480 6 -.137938 4.961839 + 480 7 .1876394 3.211929 + 480 8 .2411677 3.936345 + 480 9 .3541164 .8783491 + 480 10 -.1067768 3.799003 + 481 1 .5493166 3.494118 + 481 2 .5567415 .1307616 + 481 3 1.46569 2.295378 + 481 4 -.1607851 3.854419 + 481 5 .4098502 -.0869326 + 481 6 .3846918 .0455931 + 481 7 1.408218 4.952337 + 481 8 2.327258 1.458939 + 481 9 -.0942937 .4176691 + 481 10 .4363301 .8105946 + 482 1 .3074039 .6770884 + 482 2 .3678102 1.460825 + 482 3 -.8588473 -2.209955 + 482 4 -.3470667 -.058466 + 482 5 -.1442455 1.604633 + 482 6 -.4972656 -3.388484 + 482 7 -.607422 .4479947 + 482 8 -.9446015 .4514995 + 482 9 -.4530154 -3.527195 + 482 10 1.021734 -.1244987 + 483 1 -.0797235 .0254365 + 483 2 -1.657584 -2.414463 + 483 3 -.8564492 -1.028192 + 483 4 -.500339 -1.456119 + 483 5 -.8034439 -.7944966 + 483 6 -.929258 -2.818038 + 483 7 -.4921236 -.1182517 + 483 8 .9209039 .4624628 + 483 9 -2.080961 -2.129794 + 483 10 -.3358073 1.0534 + 484 1 1.591278 .6412288 + 484 2 .0003292 -2.573144 + 484 3 .1979216 -2.765766 + 484 4 -1.154586 -4.460439 + 484 5 -.5963323 -4.58525 + 484 6 1.672208 -.8683722 + 484 7 .6096804 -1.083266 + 484 8 -.1995927 -4.212424 + 484 9 .5801918 -2.690674 + 484 10 -.2285596 -1.897893 + 485 1 .0956469 -1.647338 + 485 2 -.0137822 1.080993 + 485 3 .8946502 2.027608 + 485 4 .0030466 2.407066 + 485 5 .8315565 .6967988 + 485 6 1.290427 4.301954 + 485 7 1.43779 .9460621 + 485 8 .2753742 2.340688 + 485 9 1.474161 .8764277 + 485 10 1.168334 2.848818 + 486 1 1.027399 2.588399 + 486 2 -.8029219 .7516522 + 486 3 .2533042 -.8283246 + 486 4 1.622947 3.75266 + 486 5 .3706092 -1.075958 + 486 6 .3470429 1.35381 + 486 7 .5182595 -.1841006 + 486 8 -.740574 -3.085339 + 486 9 -.0812146 -1.735127 + 486 10 .6457015 -.0100923 + 487 1 .89122 1.412509 + 487 2 -1.84795 -.6476804 + 487 3 -.9021395 -2.224344 + 487 4 .5426308 1.774932 + 487 5 -.4847171 1.361784 + 487 6 -.0855673 1.081277 + 487 7 -.9899008 -2.193656 + 487 8 -.4255385 -.5890685 + 487 9 .3820588 -1.286968 + 487 10 -1.296298 .0667292 + 488 1 .2395263 2.521157 + 488 2 .7232313 1.397135 + 488 3 .4470927 1.280583 + 488 4 .9180733 1.271599 + 488 5 .5514744 1.609707 + 488 6 1.928102 3.000073 + 488 7 2.240527 4.362073 + 488 8 1.06263 3.274819 + 488 9 1.113751 3.341811 + 488 10 2.536921 6.199859 + 489 1 -1.244924 .8086164 + 489 2 -2.014045 -2.288778 + 489 3 -.8442704 .2294647 + 489 4 -.5785966 -.0995551 + 489 5 -1.295853 -.518943 + 489 6 -.6477054 3.604867 + 489 7 -1.696128 -2.867242 + 489 8 -1.694158 -1.025143 + 489 9 -.5246676 2.219172 + 489 10 -.4771005 1.593935 + 490 1 -.7328269 -3.162478 + 490 2 -.0978976 .3551829 + 490 3 -.3325543 -.9752662 + 490 4 -.3897143 -5.409183 + 490 5 -.8496802 -3.592917 + 490 6 -.465873 -2.653398 + 490 7 -.6389433 .0091672 + 490 8 -1.842746 -3.761688 + 490 9 -.1576391 1.379471 + 490 10 -.6932973 -1.587387 + 491 1 1.230693 .2579845 + 491 2 1.285313 -.7795343 + 491 3 -1.046274 -.6544493 + 491 4 1.578548 -.7443537 + 491 5 -.8614488 -3.28026 + 491 6 -.1985457 .2745566 + 491 7 -.220863 -4.05599 + 491 8 -.3689895 -3.607911 + 491 9 .6715914 -.8901137 + 491 10 -.3837904 -.8730828 + 492 1 -1.265203 -2.693516 + 492 2 -.090899 -2.574813 + 492 3 .365869 .5228035 + 492 4 .9955097 2.206074 + 492 5 -.2145209 -1.546479 + 492 6 -.4808803 -1.77461 + 492 7 .1577232 -4.379991 + 492 8 .5359161 -1.971655 + 492 9 -.0629176 -4.664596 + 492 10 .0313729 -3.542443 + 493 1 1.176209 1.683713 + 493 2 .4259985 .4057804 + 493 3 1.688201 1.34762 + 493 4 1.151781 .1564157 + 493 5 .7126628 1.882809 + 493 6 1.629853 2.895485 + 493 7 2.041654 .3342512 + 493 8 1.689575 2.312145 + 493 9 .6031001 1.620347 + 493 10 1.452902 1.639806 + 494 1 -.9676991 1.268667 + 494 2 -1.197123 .8748823 + 494 3 -.499871 -.1199364 + 494 4 -2.141563 -1.281559 + 494 5 -.8741325 .0143381 + 494 6 -2.688715 -3.103278 + 494 7 -2.769295 -2.587314 + 494 8 -1.641987 -1.756963 + 494 9 -.7681715 -.0675087 + 494 10 -1.004753 -2.870488 + 495 1 1.061946 -2.286191 + 495 2 .662551 1.002858 + 495 3 .7356764 -.9382895 + 495 4 .4808448 -.9514114 + 495 5 -.4979812 -2.734997 + 495 6 .1116666 -2.587744 + 495 7 .3269557 .2426851 + 495 8 -.5952946 -.5938548 + 495 9 .5258829 -.6029328 + 495 10 1.010255 -1.421944 + 496 1 .6730576 2.727849 + 496 2 -.2441198 1.543326 + 496 3 .1370337 .57209 + 496 4 -.199497 -.1395658 + 496 5 .7715949 1.635498 + 496 6 .3294 -.2948219 + 496 7 .0998959 3.023627 + 496 8 .3704027 -.077176 + 496 9 .9055668 3.390342 + 496 10 1.861465 4.300356 + 497 1 -.0766302 -3.207384 + 497 2 1.237136 -1.309461 + 497 3 .8495774 -.5833904 + 497 4 .7453023 -1.402915 + 497 5 -.1027304 -2.13673 + 497 6 1.353729 -.9737407 + 497 7 -.1096489 -4.067335 + 497 8 .4109711 -2.308214 + 497 9 .4152246 -2.882645 + 497 10 -.1817578 -2.292598 + 498 1 .9373128 2.435911 + 498 2 -.4335596 .1373739 + 498 3 1.249027 -.7368234 + 498 4 .5366198 .5909308 + 498 5 2.481492 7.002803 + 498 6 1.458367 2.051867 + 498 7 1.26713 2.335333 + 498 8 1.979471 4.10223 + 498 9 1.466995 4.206719 + 498 10 .9814652 1.769253 + 499 1 .5154107 -1.192308 + 499 2 -.0823599 .4922651 + 499 3 .4505591 -1.388515 + 499 4 .3475047 .7941831 + 499 5 -.7609926 -1.08425 + 499 6 -.8916075 -3.299844 + 499 7 -.6039193 -2.204624 + 499 8 .7171692 1.272819 + 499 9 .4266107 -2.184453 + 499 10 .6624547 -1.470384 + 500 1 .0283524 1.502491 + 500 2 -.5271088 -.5950647 + 500 3 -.4184161 2.122376 + 500 4 1.557888 .6030506 + 500 5 -.1874991 -.8182437 + 500 6 -.077057 3.720502 + 500 7 .2188469 .5591205 + 500 8 -.15553 -3.766785 + 500 9 -.0401722 .9033538 + 500 10 -.0011715 -.5297611 diff --git a/statsmodels/stats/tests/test_descriptivestats.py b/statsmodels/stats/tests/test_descriptivestats.py new file mode 100644 index 0000000..8166ec3 --- /dev/null +++ b/statsmodels/stats/tests/test_descriptivestats.py @@ -0,0 +1,12 @@ +from statsmodels.stats.descriptivestats import sign_test +from numpy.testing import assert_almost_equal, assert_equal + + +def test_sign_test(): + x = [7.8, 6.6, 6.5, 7.4, 7.3, 7., 6.4, 7.1, 6.7, 7.6, 6.8] + M, p = sign_test(x, mu0=6.5) + # from R SIGN.test(x, md=6.5) + # from R + assert_almost_equal(p, 0.02148, 5) + # not from R, we use a different convention + assert_equal(M, 4) diff --git a/statsmodels/stats/tests/test_diagnostic.py b/statsmodels/stats/tests/test_diagnostic.py new file mode 100644 index 0000000..a8373cc --- /dev/null +++ b/statsmodels/stats/tests/test_diagnostic.py @@ -0,0 +1,1057 @@ +# -*- coding: utf-8 -*- +"""Tests for Regression Diagnostics and Specification Tests + +Created on Thu Feb 09 13:19:47 2012 + +Author: Josef Perktold +License: BSD-3 + +currently all tests are against R + +""" +import os + +import numpy as np +import pandas as pd + +from numpy.testing import (assert_, assert_almost_equal, assert_equal, + assert_allclose, assert_array_equal) +import pytest + +from statsmodels.regression.linear_model import OLS +from statsmodels.tools.tools import add_constant +from statsmodels.datasets import macrodata + +import statsmodels.stats.sandwich_covariance as sw +import statsmodels.stats.diagnostic as smsdia +import json + +import statsmodels.stats.outliers_influence as oi + +cur_dir = os.path.abspath(os.path.dirname(__file__)) + + +def compare_t_est(sp, sp_dict, decimal=(14, 14)): + assert_allclose(sp[0], sp_dict['statistic'], atol=10 ** -decimal[0], + rtol=10 ** -decimal[0]) + assert_allclose(sp[1], sp_dict['pvalue'], atol=10 ** -decimal[1], + rtol=10 ** -decimal[0]) + + +def notyet_atst(): + d = macrodata.load(as_pandas=False).data + + realinv = d['realinv'] + realgdp = d['realgdp'] + realint = d['realint'] + endog = realinv + exog = add_constant(np.c_[realgdp, realint]) + res_ols1 = OLS(endog, exog).fit() + + #growth rates + gs_l_realinv = 400 * np.diff(np.log(d['realinv'])) + gs_l_realgdp = 400 * np.diff(np.log(d['realgdp'])) + lint = d['realint'][:-1] + tbilrate = d['tbilrate'][:-1] + + endogg = gs_l_realinv + exogg = add_constant(np.c_[gs_l_realgdp, lint]) + exogg2 = add_constant(np.c_[gs_l_realgdp, tbilrate]) + + res_ols = OLS(endogg, exogg).fit() + res_ols2 = OLS(endogg, exogg2).fit() + + #the following were done accidentally with res_ols1 in R, + #with original Greene data + + params = np.array([-272.3986041341653, 0.1779455206941112, + 0.2149432424658157]) + cov_hac_4 = np.array([1321.569466333051, -0.2318836566017612, + 37.01280466875694, -0.2318836566017614, 4.602339488102263e-05, + -0.0104687835998635, 37.012804668757, -0.0104687835998635, + 21.16037144168061]).reshape(3,3, order='F') + cov_hac_10 = np.array([2027.356101193361, -0.3507514463299015, + 54.81079621448568, -0.350751446329901, 6.953380432635583e-05, + -0.01268990195095196, 54.81079621448564, -0.01268990195095195, + 22.92512402151113]).reshape(3,3, order='F') + + #goldfeld-quandt + het_gq_greater = dict(statistic=13.20512768685082, df1=99, df2=98, + pvalue=1.246141976112324e-30, distr='f') + het_gq_less = dict(statistic=13.20512768685082, df1=99, df2=98, pvalue=1.) + het_gq_2sided = dict(statistic=13.20512768685082, df1=99, df2=98, + pvalue=1.246141976112324e-30, distr='f') + + #goldfeld-quandt, fraction = 0.5 + het_gq_greater_2 = dict(statistic=87.1328934692124, df1=48, df2=47, + pvalue=2.154956842194898e-33, distr='f') + + gq = smsdia.het_goldfeldquandt(endog, exog, split=0.5) + compare_t_est(gq, het_gq_greater, decimal=(13, 14)) + assert_equal(gq[-1], 'increasing') + + + harvey_collier = dict(stat=2.28042114041313, df=199, + pvalue=0.02364236161988260, distr='t') + #hc = harvtest(fm, order.by=ggdp , data = list()) + harvey_collier_2 = dict(stat=0.7516918462158783, df=199, + pvalue=0.4531244858006127, distr='t') + + + + ################################## + + + +class TestDiagnosticG(object): + + @classmethod + def setup_class(cls): + d = macrodata.load_pandas().data + #growth rates + gs_l_realinv = 400 * np.diff(np.log(d['realinv'].values)) + gs_l_realgdp = 400 * np.diff(np.log(d['realgdp'].values)) + lint = d['realint'][:-1].values + tbilrate = d['tbilrate'][:-1].values + + endogg = gs_l_realinv + exogg = add_constant(np.c_[gs_l_realgdp, lint]) + exogg2 = add_constant(np.c_[gs_l_realgdp, tbilrate]) + exogg3 = add_constant(np.c_[gs_l_realgdp]) + + res_ols = OLS(endogg, exogg).fit() + res_ols2 = OLS(endogg, exogg2).fit() + + res_ols3 = OLS(endogg, exogg3).fit() + + cls.res = res_ols + cls.res2 = res_ols2 + cls.res3 = res_ols3 + cls.endog = cls.res.model.endog + cls.exog = cls.res.model.exog + + def test_basic(self): + #mainly to check I got the right regression + #> mkarray(fm$coefficients, "params") + params = np.array([-9.48167277465485, 4.3742216647032, + -0.613996969478989]) + + assert_almost_equal(self.res.params, params, decimal=12) + + def test_hac(self): + res = self.res + #> nw = NeweyWest(fm, lag = 4, prewhite = FALSE, verbose=TRUE) + #> nw2 = NeweyWest(fm, lag=10, prewhite = FALSE, verbose=TRUE) + + #> mkarray(nw, "cov_hac_4") + cov_hac_4 = np.array([1.385551290884014, -0.3133096102522685, + -0.0597207976835705, -0.3133096102522685, 0.1081011690351306, + 0.000389440793564336, -0.0597207976835705, 0.000389440793564339, + 0.0862118527405036]).reshape(3,3, order='F') + + #> mkarray(nw2, "cov_hac_10") + cov_hac_10 = np.array([1.257386180080192, -0.2871560199899846, + -0.03958300024627573, -0.2871560199899845, 0.1049107028987101, + 0.0003896205316866944, -0.03958300024627578, 0.0003896205316866961, + 0.0985539340694839]).reshape(3,3, order='F') + + cov = sw.cov_hac_simple(res, nlags=4, use_correction=False) + bse_hac = sw.se_cov(cov) + assert_almost_equal(cov, cov_hac_4, decimal=14) + assert_almost_equal(bse_hac, np.sqrt(np.diag(cov)), decimal=14) + + cov = sw.cov_hac_simple(res, nlags=10, use_correction=False) + bse_hac = sw.se_cov(cov) + assert_almost_equal(cov, cov_hac_10, decimal=14) + assert_almost_equal(bse_hac, np.sqrt(np.diag(cov)), decimal=14) + + + def test_het_goldfeldquandt(self): + #TODO: test options missing + + #> gq = gqtest(fm, alternative='greater') + #> mkhtest_f(gq, 'het_gq_greater', 'f') + het_gq_greater = dict(statistic=0.5313259064778423, + pvalue=0.9990217851193723, + parameters=(98, 98), distr='f') + + #> gq = gqtest(fm, alternative='less') + #> mkhtest_f(gq, 'het_gq_less', 'f') + het_gq_less = dict(statistic=0.5313259064778423, + pvalue=0.000978214880627621, + parameters=(98, 98), distr='f') + + #> gq = gqtest(fm, alternative='two.sided') + #> mkhtest_f(gq, 'het_gq_two_sided', 'f') + het_gq_two_sided = dict(statistic=0.5313259064778423, + pvalue=0.001956429761255241, + parameters=(98, 98), distr='f') + + + #> gq = gqtest(fm, fraction=0.1, alternative='two.sided') + #> mkhtest_f(gq, 'het_gq_two_sided_01', 'f') + het_gq_two_sided_01 = dict(statistic=0.5006976835928314, + pvalue=0.001387126702579789, + parameters=(88, 87), distr='f') + + #> gq = gqtest(fm, fraction=0.5, alternative='two.sided') + #> mkhtest_f(gq, 'het_gq_two_sided_05', 'f') + het_gq_two_sided_05 = dict(statistic=0.434815645134117, + pvalue=0.004799321242905568, + parameters=(48, 47), distr='f') + + endogg, exogg = self.endog, self.exog + #tests + gq = smsdia.het_goldfeldquandt(endogg, exogg, split=0.5) + compare_t_est(gq, het_gq_greater, decimal=(14, 14)) + assert_equal(gq[-1], 'increasing') + + gq = smsdia.het_goldfeldquandt(endogg, exogg, split=0.5, + alternative='decreasing') + compare_t_est(gq, het_gq_less, decimal=(14, 14)) + assert_equal(gq[-1], 'decreasing') + + gq = smsdia.het_goldfeldquandt(endogg, exogg, split=0.5, + alternative='two-sided') + compare_t_est(gq, het_gq_two_sided, decimal=(14, 14)) + assert_equal(gq[-1], 'two-sided') + + #TODO: forcing the same split as R 202-90-90-1=21 + gq = smsdia.het_goldfeldquandt(endogg, exogg, split=90, drop=21, + alternative='two-sided') + compare_t_est(gq, het_gq_two_sided_01, decimal=(14, 14)) + assert_equal(gq[-1], 'two-sided') + #TODO other options ??? + + def test_het_breusch_pagan(self): + res = self.res + + bptest = dict(statistic=0.709924388395087, pvalue=0.701199952134347, + parameters=(2,), distr='f') + + bp = smsdia.het_breuschpagan(res.resid, res.model.exog) + compare_t_est(bp, bptest, decimal=(12, 12)) + + + + def test_het_white(self): + res = self.res + + #TODO: regressiontest, compare with Greene or Gretl or Stata + hw = smsdia.het_white(res.resid, res.model.exog) + hw_values = (33.503722896538441, 2.9887960597830259e-06, + 7.7945101228430946, 1.0354575277704231e-06) + assert_almost_equal(hw, hw_values) + + def test_het_arch(self): + #test het_arch and indirectly het_lm against R + #> library(FinTS) + #> at = ArchTest(residuals(fm), lags=4) + #> mkhtest(at, 'archtest_4', 'chi2') + archtest_4 = dict(statistic=3.43473400836259, + pvalue=0.487871315392619, parameters=(4,), + distr='chi2') + + #> at = ArchTest(residuals(fm), lags=12) + #> mkhtest(at, 'archtest_12', 'chi2') + archtest_12 = dict(statistic=8.648320999014171, + pvalue=0.732638635007718, parameters=(12,), + distr='chi2') + + at4 = smsdia.het_arch(self.res.resid, maxlag=4) + at12 = smsdia.het_arch(self.res.resid, maxlag=12) + compare_t_est(at4[:2], archtest_4, decimal=(12, 13)) + compare_t_est(at12[:2], archtest_12, decimal=(12, 13)) + + def test_het_arch2(self): + #test autolag options, this also test het_lm + #unfortunately optimal lag=1 for this data + resid = self.res.resid + + res1 = smsdia.het_arch(resid, maxlag=1, autolag=None, store=True) + rs1 = res1[-1] + + res2 = smsdia.het_arch(resid, maxlag=5, autolag='aic', store=True) + rs2 = res2[-1] + + assert_almost_equal(rs2.resols.params, rs1.resols.params, decimal=13) + assert_almost_equal(res2[:4], res1[:4], decimal=13) + + #test that smallest lag, maxlag=1 works + res3 = smsdia.het_arch(resid, maxlag=1, autolag='aic') + assert_almost_equal(res3[:4], res1[:4], decimal=13) + + def test_acorr_breusch_godfrey(self): + res = self.res + + #bgf = bgtest(fm, order = 4, type="F") + breuschgodfrey_f = dict(statistic=1.179280833676792, + pvalue=0.321197487261203, + parameters=(4,195,), distr='f') + + #> bgc = bgtest(fm, order = 4, type="Chisq") + #> mkhtest(bgc, "breuschpagan_c", "chi2") + breuschgodfrey_c = dict(statistic=4.771042651230007, + pvalue=0.3116067133066697, + parameters=(4,), distr='chi2') + + bg = smsdia.acorr_breusch_godfrey(res, nlags=4) + bg_r = [breuschgodfrey_c['statistic'], breuschgodfrey_c['pvalue'], + breuschgodfrey_f['statistic'], breuschgodfrey_f['pvalue']] + assert_almost_equal(bg, bg_r, decimal=13) + + # check that lag choice works + bg2 = smsdia.acorr_breusch_godfrey(res, nlags=None) + bg3 = smsdia.acorr_breusch_godfrey(res, nlags=14) + assert_almost_equal(bg2, bg3, decimal=13) + + def test_acorr_ljung_box(self): + + #unit-test which may be useful later + #ddof correction for fitted parameters in ARMA(p,q) fitdf=p+q + #> bt = Box.test(residuals(fm), lag=4, type = "Ljung-Box", fitdf=2) + #> mkhtest(bt, "ljung_box_4df2", "chi2") + # ljung_box_4df2 = dict(statistic=5.23587172795227, + # pvalue=0.0729532930400377, + # parameters=(2,), distr='chi2') + + #> bt = Box.test(residuals(fm), lag=4, type = "Box-Pierce", fitdf=2) + #> mkhtest(bt, "ljung_box_bp_4df2", "chi2") + # ljung_box_bp_4df2 = dict(statistic=5.12462932741681, + # pvalue=0.0771260128929921, + # parameters=(2,), distr='chi2') + + + res = self.res + + #general test + + #> bt = Box.test(residuals(fm), lag=4, type = "Ljung-Box") + #> mkhtest(bt, "ljung_box_4", "chi2") + ljung_box_4 = dict(statistic=5.23587172795227, pvalue=0.263940335284713, + parameters=(4,), distr='chi2') + + #> bt = Box.test(residuals(fm), lag=4, type = "Box-Pierce") + #> mkhtest(bt, "ljung_box_bp_4", "chi2") + ljung_box_bp_4 = dict(statistic=5.12462932741681, + pvalue=0.2747471266820692, + parameters=(4,), distr='chi2') + + + lb, lbpval, bp, bppval = smsdia.acorr_ljungbox(res.resid, 4, + boxpierce=True) + compare_t_est([lb[-1], lbpval[-1]], ljung_box_4, decimal=(13, 13)) + compare_t_est([bp[-1], bppval[-1]], ljung_box_bp_4, decimal=(13, 13)) + + def test_acorr_ljung_box_big_default(self): + res = self.res + #test with big dataset and default lag + + #> bt = Box.test(residuals(fm), type = "Ljung-Box") + #> mkhtest(bt, "ljung_box_none", "chi2") + ljung_box_none = dict(statistic=51.03724531797195, pvalue=0.11334744923390, + distr='chi2') + + #> bt = Box.test(residuals(fm), type = "Box-Pierce") + #> mkhtest(bt, "ljung_box_bp_none", "chi2") + ljung_box_bp_none = dict(statistic=45.12238537034000, + pvalue=0.26638168491464, + distr='chi2') + lb, lbpval, bp, bppval = smsdia.acorr_ljungbox(res.resid, boxpierce=True) + compare_t_est([lb[-1], lbpval[-1]], ljung_box_none, decimal=(13, 13)) + compare_t_est([bp[-1], bppval[-1]], ljung_box_bp_none, decimal=(13, 13)) + + def test_acorr_ljung_box_small_default(self): + res = self.res + #test with small dataset and default lag + + #> bt = Box.test(residuals(fm), type = "Ljung-Box") + #> mkhtest(bt, "ljung_box_small", "chi2") + ljung_box_small = dict(statistic=9.61503968281915, pvalue=0.72507000996945, + parameters=(0,), distr='chi2') + + #> bt = Box.test(residuals(fm), type = "Box-Pierce") + #> mkhtest(bt, "ljung_box_bp_small", "chi2") + ljung_box_bp_small = dict(statistic=7.41692150864936, + pvalue=0.87940785887006, + parameters=(0,), distr='chi2') + + lb, lbpval, bp, bppval = smsdia.acorr_ljungbox(res.resid[:30], boxpierce=True) + compare_t_est([lb[-1], lbpval[-1]], ljung_box_small, decimal=(13, 13)) + compare_t_est([bp[-1], bppval[-1]], ljung_box_bp_small, decimal=(13, 13)) + + + def test_harvey_collier(self): + + #> hc = harvtest(fm, order.by = NULL, data = list()) + #> mkhtest_f(hc, 'harvey_collier', 't') + harvey_collier = dict(statistic=0.494432160939874, + pvalue=0.6215491310408242, + parameters=(198), distr='t') + + #> hc2 = harvtest(fm, order.by=ggdp , data = list()) + #> mkhtest_f(hc2, 'harvey_collier_2', 't') + harvey_collier_2 = dict(statistic=1.42104628340473, + pvalue=0.1568762892441689, + parameters=(198), distr='t') + + hc = smsdia.linear_harvey_collier(self.res) + compare_t_est(hc, harvey_collier, decimal=(12, 12)) + + + def test_rainbow(self): + #rainbow test + #> rt = raintest(fm) + #> mkhtest_f(rt, 'raintest', 'f') + raintest = dict(statistic=0.6809600116739604, pvalue=0.971832843583418, + parameters=(101, 98), distr='f') + + #> rt = raintest(fm, center=0.4) + #> mkhtest_f(rt, 'raintest_center_04', 'f') + raintest_center_04 = dict(statistic=0.682635074191527, + pvalue=0.971040230422121, + parameters=(101, 98), distr='f') + + #> rt = raintest(fm, fraction=0.4) + #> mkhtest_f(rt, 'raintest_fraction_04', 'f') + raintest_fraction_04 = dict(statistic=0.565551237772662, + pvalue=0.997592305968473, + parameters=(122, 77), distr='f') + + #> rt = raintest(fm, order.by=ggdp) + #Warning message: + #In if (order.by == "mahalanobis") { : + # the condition has length > 1 and only the first element will be used + #> mkhtest_f(rt, 'raintest_order_gdp', 'f') + raintest_order_gdp = dict(statistic=1.749346160513353, + pvalue=0.002896131042494884, + parameters=(101, 98), distr='f') + + rb = smsdia.linear_rainbow(self.res) + compare_t_est(rb, raintest, decimal=(13, 14)) + rb = smsdia.linear_rainbow(self.res, frac=0.4) + compare_t_est(rb, raintest_fraction_04, decimal=(13, 14)) + + + def test_compare_lr(self): + res = self.res + res3 = self.res3 #nested within res + #lrtest + #lrt = lrtest(fm, fm2) + #Model 1: ginv ~ ggdp + lint + #Model 2: ginv ~ ggdp + + lrtest = dict(loglike1=-763.9752181602237, loglike2=-766.3091902020184, + chi2value=4.66794408358942, pvalue=0.03073069384028677, + df=(4,3,1)) + lrt = res.compare_lr_test(res3) + assert_almost_equal(lrt[0], lrtest['chi2value'], decimal=11) + assert_almost_equal(lrt[1], lrtest['pvalue'], decimal=11) + + waldtest = dict(fvalue=4.65216373312492, pvalue=0.03221346195239025, + df=(199,200,1)) + + wt = res.compare_f_test(res3) + assert_almost_equal(wt[0], waldtest['fvalue'], decimal=11) + assert_almost_equal(wt[1], waldtest['pvalue'], decimal=11) + + + def test_compare_nonnested(self): + res = self.res + res2 = self.res2 + #jt = jtest(fm, lm(ginv ~ ggdp + tbilrate)) + #Estimate Std. Error t value Pr(>|t|) + jtest = [('M1 + fitted(M2)', 1.591505670785873, 0.7384552861695823, + 2.155182176352370, 0.032354572525314450, '*'), + ('M2 + fitted(M1)', 1.305687653016899, 0.4808385176653064, + 2.715438978051544, 0.007203854534057954, '**')] + + jt1 = smsdia.compare_j(res2, res) + assert_almost_equal(jt1, jtest[0][3:5], decimal=13) + + jt2 = smsdia.compare_j(res, res2) + assert_almost_equal(jt2, jtest[1][3:5], decimal=14) + + #Estimate Std. Error z value Pr(>|z|) + coxtest = [('fitted(M1) ~ M2', -0.782030488930356, 0.599696502782265, + -1.304043770977755, 1.922186587840554e-01, ' '), + ('fitted(M2) ~ M1', -2.248817107408537, 0.392656854330139, + -5.727181590258883, 1.021128495098556e-08, '***')] + + ct1 = smsdia.compare_cox(res, res2) + assert_almost_equal(ct1, coxtest[0][3:5], decimal=13) + + ct2 = smsdia.compare_cox(res2, res) + assert_almost_equal(ct2, coxtest[1][3:5], decimal=12) + #TODO should be approx + + # Res.Df Df F Pr(>F) + encomptest = [('M1 vs. ME', 198, -1, 4.644810213266983, + 0.032354572525313666, '*'), + ('M2 vs. ME', 198, -1, 7.373608843521585, + 0.007203854534058054, '**')] + + # Estimate Std. Error t value + petest = [('M1 + log(fit(M1))-fit(M2)', -229.281878354594596, + 44.5087822087058598, -5.15139, 6.201281252449979e-07), + ('M2 + fit(M1)-exp(fit(M2))', 0.000634664704814, + 0.0000462387010349, 13.72583, 1.319536115230356e-30)] + + + def test_cusum_ols(self): + #R library(strucchange) + #> sc = sctest(ginv ~ ggdp + lint, type="OLS-CUSUM") + #> mkhtest(sc, 'cusum_ols', 'BB') + cusum_ols = dict(statistic=1.055750610401214, pvalue=0.2149567397376543, + parameters=(), distr='BB') #Brownian Bridge + + k_vars=3 + cs_ols = smsdia.breaks_cusumolsresid(self.res.resid, ddof=k_vars) # + compare_t_est(cs_ols, cusum_ols, decimal=(12, 12)) + + def test_breaks_hansen(self): + #> sc = sctest(ginv ~ ggdp + lint, type="Nyblom-Hansen") + #> mkhtest(sc, 'breaks_nyblom_hansen', 'BB') + breaks_nyblom_hansen = dict(statistic=1.0300792740544484, + pvalue=0.1136087530212015, + parameters=(), distr='BB') + + bh = smsdia.breaks_hansen(self.res) + assert_almost_equal(bh[0], breaks_nyblom_hansen['statistic'], + decimal=13) + #TODO: breaks_hansen doesn't return pvalues + + + def test_recursive_residuals(self): + + reccumres_standardize = np.array([-2.151, -3.748, -3.114, -3.096, + -1.865, -2.230, -1.194, -3.500, -3.638, -4.447, -4.602, -4.631, -3.999, + -4.830, -5.429, -5.435, -6.554, -8.093, -8.567, -7.532, -7.079, -8.468, + -9.320, -12.256, -11.932, -11.454, -11.690, -11.318, -12.665, -12.842, + -11.693, -10.803, -12.113, -12.109, -13.002, -11.897, -10.787, -10.159, + -9.038, -9.007, -8.634, -7.552, -7.153, -6.447, -5.183, -3.794, -3.511, + -3.979, -3.236, -3.793, -3.699, -5.056, -5.724, -4.888, -4.309, -3.688, + -3.918, -3.735, -3.452, -2.086, -6.520, -7.959, -6.760, -6.855, -6.032, + -4.405, -4.123, -4.075, -3.235, -3.115, -3.131, -2.986, -1.813, -4.824, + -4.424, -4.796, -4.000, -3.390, -4.485, -4.669, -4.560, -3.834, -5.507, + -3.792, -2.427, -1.756, -0.354, 1.150, 0.586, 0.643, 1.773, -0.830, + -0.388, 0.517, 0.819, 2.240, 3.791, 3.187, 3.409, 2.431, 0.668, 0.957, + -0.928, 0.327, -0.285, -0.625, -2.316, -1.986, -0.744, -1.396, -1.728, + -0.646, -2.602, -2.741, -2.289, -2.897, -1.934, -2.532, -3.175, -2.806, + -3.099, -2.658, -2.487, -2.515, -2.224, -2.416, -1.141, 0.650, -0.947, + 0.725, 0.439, 0.885, 2.419, 2.642, 2.745, 3.506, 4.491, 5.377, 4.624, + 5.523, 6.488, 6.097, 5.390, 6.299, 6.656, 6.735, 8.151, 7.260, 7.846, + 8.771, 8.400, 8.717, 9.916, 9.008, 8.910, 8.294, 8.982, 8.540, 8.395, + 7.782, 7.794, 8.142, 8.362, 8.400, 7.850, 7.643, 8.228, 6.408, 7.218, + 7.699, 7.895, 8.725, 8.938, 8.781, 8.350, 9.136, 9.056, 10.365, 10.495, + 10.704, 10.784, 10.275, 10.389, 11.586, 11.033, 11.335, 11.661, 10.522, + 10.392, 10.521, 10.126, 9.428, 9.734, 8.954, 9.949, 10.595, 8.016, + 6.636, 6.975]) + + rr = smsdia.recursive_olsresiduals(self.res, skip=3, alpha=0.95) + assert_equal(np.round(rr[5][1:], 3), reccumres_standardize) #extra zero in front + #assert_equal(np.round(rr[3][4:], 3), np.diff(reccumres_standardize)) + assert_almost_equal(rr[3][4:], np.diff(reccumres_standardize),3) + assert_almost_equal(rr[4][3:].std(ddof=1), 10.7242, decimal=4) + + #regression number, visually checked with graph from gretl + ub0 = np.array([ 13.37318571, 13.50758959, 13.64199346, 13.77639734, + 13.91080121]) + ub1 = np.array([ 39.44753774, 39.58194162, 39.7163455 , 39.85074937, + 39.98515325]) + lb, ub = rr[6] + assert_almost_equal(ub[:5], ub0, decimal=7) + assert_almost_equal(lb[:5], -ub0, decimal=7) + assert_almost_equal(ub[-5:], ub1, decimal=7) + assert_almost_equal(lb[-5:], -ub1, decimal=7) + + #test a few values with explicit OLS + endog = self.res.model.endog + exog = self.res.model.exog + params = [] + ypred = [] + for i in range(3,10): + resi = OLS(endog[:i], exog[:i]).fit() + ypred.append(resi.model.predict(resi.params, exog[i])) + params.append(resi.params) + assert_almost_equal(rr[2][3:10], ypred, decimal=12) + assert_almost_equal(rr[0][3:10], endog[3:10] - ypred, decimal=12) + assert_almost_equal(rr[1][2:9], params, decimal=12) + + def test_normality(self): + res = self.res + + #> library(nortest) #Lilliefors (Kolmogorov-Smirnov) normality test + #> lt = lillie.test(residuals(fm)) + #> mkhtest(lt, "lilliefors", "-") + lilliefors1 = dict(statistic=0.0723390908786589, + pvalue=0.01204113540102896, parameters=(), distr='-') + + #> lt = lillie.test(residuals(fm)**2) + #> mkhtest(lt, "lilliefors", "-") + lilliefors2 = dict(statistic=0.301311621898024, + pvalue=1.004305736618051e-51, + parameters=(), distr='-') + + #> lt = lillie.test(residuals(fm)[1:20]) + #> mkhtest(lt, "lilliefors", "-") + lilliefors3 = dict(statistic=0.1333956004203103, + pvalue=0.20, parameters=(), distr='-') + + lf1 = smsdia.lilliefors(res.resid) + lf2 = smsdia.lilliefors(res.resid**2) + lf3 = smsdia.lilliefors(res.resid[:20]) + + compare_t_est(lf1, lilliefors1, decimal=(14, 14)) + compare_t_est(lf2, lilliefors2, decimal=(14, 14)) # pvalue very small + assert_allclose(lf2[1], lilliefors2['pvalue'], rtol=1e-10) + compare_t_est(lf3, lilliefors3, decimal=(14, 1)) + # R uses different approximation for pvalue in last case + + #> ad = ad.test(residuals(fm)) + #> mkhtest(ad, "ad3", "-") + adr1 = dict(statistic=1.602209621518313, pvalue=0.0003937979149362316, + parameters=(), distr='-') + + #> ad = ad.test(residuals(fm)**2) + #> mkhtest(ad, "ad3", "-") + adr2 = dict(statistic=np.inf, pvalue=np.nan, parameters=(), distr='-') + + #> ad = ad.test(residuals(fm)[1:20]) + #> mkhtest(ad, "ad3", "-") + adr3 = dict(statistic=0.3017073732210775, pvalue=0.5443499281265933, + parameters=(), distr='-') + + ad1 = smsdia.normal_ad(res.resid) + compare_t_est(ad1, adr1, decimal=(11, 13)) + ad2 = smsdia.normal_ad(res.resid**2) + assert_(np.isinf(ad2[0])) + ad3 = smsdia.normal_ad(res.resid[:20]) + compare_t_est(ad3, adr3, decimal=(11, 12)) + + + def test_influence(self): + res = self.res + + #this test is slow + infl = oi.OLSInfluence(res) + + path = os.path.join(cur_dir, "results", "influence_lsdiag_R.json") + with open(path, 'r') as fp: + lsdiag = json.load(fp) + + #basic + assert_almost_equal(np.array(lsdiag['cov.scaled']).reshape(3, 3), + res.cov_params(), decimal=14) + assert_almost_equal(np.array(lsdiag['cov.unscaled']).reshape(3, 3), + res.normalized_cov_params, decimal=14) + + c0, c1 = infl.cooks_distance #TODO: what's c1 + + + assert_almost_equal(c0, lsdiag['cooks'], decimal=14) + assert_almost_equal(infl.hat_matrix_diag, lsdiag['hat'], decimal=14) + assert_almost_equal(infl.resid_studentized_internal, + lsdiag['std.res'], decimal=14) + + #slow: + #infl._get_all_obs() #slow, nobs estimation loop, called implicitly + dffits, dffth = infl.dffits + assert_almost_equal(dffits, lsdiag['dfits'], decimal=14) + assert_almost_equal(infl.resid_studentized_external, + lsdiag['stud.res'], decimal=14) + + import pandas + fn = os.path.join(cur_dir,"results/influence_measures_R.csv") + infl_r = pandas.read_csv(fn, index_col=0) + conv = lambda s: 1 if s=='TRUE' else 0 + fn = os.path.join(cur_dir,"results/influence_measures_bool_R.csv") + #not used yet: + #infl_bool_r = pandas.read_csv(fn, index_col=0, + # converters=dict(zip(lrange(7),[conv]*7))) + infl_r2 = np.asarray(infl_r) + assert_almost_equal(infl.dfbetas, infl_r2[:,:3], decimal=13) + assert_almost_equal(infl.cov_ratio, infl_r2[:,4], decimal=14) + #duplicates + assert_almost_equal(dffits, infl_r2[:,3], decimal=14) + assert_almost_equal(c0, infl_r2[:,5], decimal=14) + assert_almost_equal(infl.hat_matrix_diag, infl_r2[:,6], decimal=14) + + #Note: for dffits, R uses a threshold around 0.36, mine: dffits[1]=0.24373 + #TODO: finish and check thresholds and pvalues + ''' + R has + >>> np.nonzero(np.asarray(infl_bool_r["dffit"]))[0] + array([ 6, 26, 63, 76, 90, 199]) + >>> np.nonzero(np.asarray(infl_bool_r["cov.r"]))[0] + array([ 4, 26, 59, 61, 63, 72, 76, 84, 91, 92, 94, 95, 108, + 197, 198]) + >>> np.nonzero(np.asarray(infl_bool_r["hat"]))[0] + array([ 62, 76, 84, 90, 91, 92, 95, 108, 197, 199]) + ''' + + +class TestDiagnosticGPandas(TestDiagnosticG): + + @classmethod + def setup_class(cls): + d = macrodata.load_pandas().data + #growth rates + d['gs_l_realinv'] = 400 * np.log(d['realinv']).diff() + d['gs_l_realgdp'] = 400 * np.log(d['realgdp']).diff() + d['lint'] = d['realint'].shift(1) + d['tbilrate'] = d['tbilrate'].shift(1) + + d = d.dropna() + cls.d = d + endogg = d['gs_l_realinv'] + exogg = add_constant(d[['gs_l_realgdp', 'lint']]) + exogg2 = add_constant(d[['gs_l_realgdp', 'tbilrate']]) + exogg3 = add_constant(d[['gs_l_realgdp']]) + + res_ols = OLS(endogg, exogg).fit() + res_ols2 = OLS(endogg, exogg2).fit() + + res_ols3 = OLS(endogg, exogg3).fit() + + cls.res = res_ols + cls.res2 = res_ols2 + cls.res3 = res_ols3 + cls.endog = cls.res.model.endog + cls.exog = cls.res.model.exog + + +def test_spec_white(): + resdir = os.path.join(cur_dir, "results") + wsfiles = ['wspec1.csv', 'wspec2.csv', 'wspec3.csv', 'wspec4.csv'] + for file in wsfiles: + mdlfile = os.path.join(resdir, file) + mdl = np.asarray(pd.read_csv(mdlfile)) + # DV is in last column + lastcol = mdl.shape[1] - 1 + dv = mdl[:,lastcol] + # create design matrix + design = np.concatenate((np.ones((mdl.shape[0], 1)), \ + np.delete(mdl, lastcol, 1)), axis=1) + # perform OLS and generate residuals + resids = dv - np.dot(design, np.linalg.lstsq(design, dv, rcond=-1)[0]) + # perform White spec test. wspec3/wspec4 contain dummies. + wsres = smsdia.spec_white(resids, design) + # compare results to SAS 9.3 output + if file == 'wspec1.csv': + assert_almost_equal(wsres, [3.251, 0.661, 5], decimal=3) + elif file == 'wspec2.csv': + assert_almost_equal(wsres, [6.070, 0.733, 9], decimal=3) + elif file == 'wspec3.csv': + assert_almost_equal(wsres, [6.767, 0.454, 7], decimal=3) + else: + assert_almost_equal(wsres, [8.462, 0.671, 11], decimal=3) + + +def grangertest(): + #> gt = grangertest(ginv, ggdp, order=4) + #> gt + #Granger causality test + # + #Model 1: ggdp ~ Lags(ggdp, 1:4) + Lags(ginv, 1:4) + #Model 2: ggdp ~ Lags(ggdp, 1:4) + + grangertest = dict(fvalue=1.589672703015157, pvalue=0.178717196987075, + df=(198,193)) + + +@pytest.mark.smoke +def test_outlier_influence_funcs(reset_randomstate): + x = add_constant(np.random.randn(10, 2)) + y = x.sum(1) + np.random.randn(10) + res = OLS(y, x).fit() + out_05 = oi.summary_table(res) + # GH3344 : Check alpha has an effect + out_01 = oi.summary_table(res, alpha=0.01) + assert_(np.all(out_01[1][:, 6] <= out_05[1][:, 6])) + assert_(np.all(out_01[1][:, 7] >= out_05[1][:, 7])) + + res2 = OLS(y, x[:,0]).fit() + oi.summary_table(res2, alpha=0.05) + infl = res2.get_influence() + infl.summary_table() + + +def test_influence_wrapped(): + from pandas import DataFrame + + d = macrodata.load_pandas().data + #growth rates + gs_l_realinv = 400 * np.log(d['realinv']).diff().dropna() + gs_l_realgdp = 400 * np.log(d['realgdp']).diff().dropna() + lint = d['realint'][:-1] + + # re-index these because they won't conform to lint + gs_l_realgdp.index = lint.index + gs_l_realinv.index = lint.index + + data = dict(const=np.ones_like(lint), lint=lint, lrealgdp=gs_l_realgdp) + #order is important + exog = DataFrame(data, columns=['const','lrealgdp','lint']) + + res = OLS(gs_l_realinv, exog).fit() + + #basic + # already tested + #assert_almost_equal(lsdiag['cov.scaled'], + # res.cov_params().values.ravel(), decimal=14) + #assert_almost_equal(lsdiag['cov.unscaled'], + # res.normalized_cov_params.values.ravel(), decimal=14) + + infl = oi.OLSInfluence(res) + + # smoke test just to make sure it works, results separately tested + df = infl.summary_frame() + assert_(isinstance(df, DataFrame)) + + #this test is slow + path = os.path.join(cur_dir, "results", "influence_lsdiag_R.json") + with open(path, "r") as fp: + lsdiag = json.load(fp) + + c0, c1 = infl.cooks_distance #TODO: what's c1, it's pvalues? -ss + + + #NOTE: we get a hard-cored 5 decimals with pandas testing + assert_almost_equal(c0, lsdiag['cooks'], 14) + assert_almost_equal(infl.hat_matrix_diag, (lsdiag['hat']), 14) + assert_almost_equal(infl.resid_studentized_internal, + lsdiag['std.res'], 14) + + #slow: + dffits, dffth = infl.dffits + assert_almost_equal(dffits, lsdiag['dfits'], 14) + assert_almost_equal(infl.resid_studentized_external, + lsdiag['stud.res'], 14) + + import pandas + fn = os.path.join(cur_dir,"results/influence_measures_R.csv") + infl_r = pandas.read_csv(fn, index_col=0) + conv = lambda s: 1 if s=='TRUE' else 0 + fn = os.path.join(cur_dir,"results/influence_measures_bool_R.csv") + #not used yet: + #infl_bool_r = pandas.read_csv(fn, index_col=0, + # converters=dict(zip(lrange(7),[conv]*7))) + infl_r2 = np.asarray(infl_r) + #TODO: finish wrapping this stuff + assert_almost_equal(infl.dfbetas, infl_r2[:,:3], decimal=13) + assert_almost_equal(infl.cov_ratio, infl_r2[:,4], decimal=14) + + +def test_influence_dtype(): + # see #2148 bug when endog is integer + y = np.ones(20) + np.random.seed(123) + x = np.random.randn(20, 3) + res1 = OLS(y, x).fit() + + res2 = OLS(y*1., x).fit() + cr1 = res1.get_influence().cov_ratio + cr2 = res2.get_influence().cov_ratio + assert_allclose(cr1, cr2, rtol=1e-14) + # regression test for values + cr3 = np.array( + [ 1.22239215, 1.31551021, 1.52671069, 1.05003921, 0.89099323, + 1.57405066, 1.03230092, 0.95844196, 1.15531836, 1.21963623, + 0.87699564, 1.16707748, 1.10481391, 0.98839447, 1.08999334, + 1.35680102, 1.46227715, 1.45966708, 1.13659521, 1.22799038]) + assert_almost_equal(cr1, cr3, decimal=8) + + +def get_duncan_data(): + # results from R with NA -> 1. Just testing interface here because + # outlier_test is just a wrapper + labels = ['accountant', 'pilot', 'architect', 'author', 'chemist', + 'minister', 'professor', 'dentist', 'reporter', 'engineer', + 'undertaker', 'lawyer', 'physician', 'welfare.worker', 'teacher', + 'conductor', 'contractor', 'factory.owner', 'store.manager', + 'banker', 'bookkeeper', 'mail.carrier', 'insurance.agent', + 'store.clerk', 'carpenter', 'electrician', 'RR.engineer', + 'machinist', 'auto.repairman', 'plumber', 'gas.stn.attendant', + 'coal.miner', 'streetcar.motorman', 'taxi.driver', + 'truck.driver', 'machine.operator', 'barber', 'bartender', + 'shoe.shiner', 'cook', 'soda.clerk', 'watchman', 'janitor', + 'policeman', 'waiter'] + #Duncan's prestige data from car + exog = [[1.0, 62.0, 86.0], [1.0, 72.0, 76.0], [1.0, 75.0, 92.0], + [1.0, 55.0, 90.0], [1.0, 64.0, 86.0], [1.0, 21.0, 84.0], + [1.0, 64.0, 93.0], [1.0, 80.0, 100.0], [1.0, 67.0, 87.0], + [1.0, 72.0, 86.0], [1.0, 42.0, 74.0], [1.0, 76.0, 98.0], + [1.0, 76.0, 97.0], [1.0, 41.0, 84.0], [1.0, 48.0, 91.0], + [1.0, 76.0, 34.0], [1.0, 53.0, 45.0], [1.0, 60.0, 56.0], + [1.0, 42.0, 44.0], [1.0, 78.0, 82.0], [1.0, 29.0, 72.0], + [1.0, 48.0, 55.0], [1.0, 55.0, 71.0], [1.0, 29.0, 50.0], + [1.0, 21.0, 23.0], [1.0, 47.0, 39.0], [1.0, 81.0, 28.0], + [1.0, 36.0, 32.0], [1.0, 22.0, 22.0], [1.0, 44.0, 25.0], + [1.0, 15.0, 29.0], [1.0, 7.0, 7.0], [1.0, 42.0, 26.0], + [1.0, 9.0, 19.0], [1.0, 21.0, 15.0], [1.0, 21.0, 20.0], + [1.0, 16.0, 26.0], [1.0, 16.0, 28.0], [1.0, 9.0, 17.0], + [1.0, 14.0, 22.0], [1.0, 12.0, 30.0], [1.0, 17.0, 25.0], + [1.0, 7.0, 20.0], [1.0, 34.0, 47.0], [1.0, 8.0, 32.0]] + endog = [ 82., 83., 90., 76., 90., 87., 93., 90., 52., 88., 57., + 89., 97., 59., 73., 38., 76., 81., 45., 92., 39., 34., + 41., 16., 33., 53., 67., 57., 26., 29., 10., 15., 19., + 10., 13., 24., 20., 7., 3., 16., 6., 11., 8., 41., + 10.] + + return endog, exog, labels + + +def test_outlier_test(): + endog, exog, labels = get_duncan_data() + ndarray_mod = OLS(endog, exog).fit() + rstudent = [3.1345185839, -2.3970223990, 2.0438046359, -1.9309187757, + 1.8870465798, -1.7604905300, -1.7040324156, 1.6024285876, + -1.4332485037, -1.1044851583, 1.0688582315, 1.0185271840, + -0.9024219332, -0.9023876471, -0.8830953936, 0.8265782334, + 0.8089220547, 0.7682770197, 0.7319491074, -0.6665962829, + 0.5227352794, -0.5135016547, 0.5083881518, 0.4999224372, + -0.4980818221, -0.4759717075, -0.4293565820, -0.4114056499, + -0.3779540862, 0.3556874030, 0.3409200462, 0.3062248646, + 0.3038999429, -0.3030815773, -0.1873387893, 0.1738050251, + 0.1424246593, -0.1292266025, 0.1272066463, -0.0798902878, + 0.0788467222, 0.0722556991, 0.0505098280, 0.0233215136, + 0.0007112055] + unadj_p = [0.003177202, 0.021170298, 0.047432955, 0.060427645, 0.066248120, + 0.085783008, 0.095943909, 0.116738318, 0.159368890, 0.275822623, + 0.291386358, 0.314400295, 0.372104049, 0.372122040, 0.382333561, + 0.413260793, 0.423229432, 0.446725370, 0.468363101, 0.508764039, + 0.603971990, 0.610356737, 0.613905871, 0.619802317, 0.621087703, + 0.636621083, 0.669911674, 0.682917818, 0.707414459, 0.723898263, + 0.734904667, 0.760983108, 0.762741124, 0.763360242, 0.852319039, + 0.862874018, 0.887442197, 0.897810225, 0.899398691, 0.936713197, + 0.937538115, 0.942749758, 0.959961394, 0.981506948, 0.999435989] + bonf_p = [0.1429741, 0.9526634, 2.1344830, 2.7192440, 2.9811654, 3.8602354, + 4.3174759, 5.2532243, 7.1716001, 12.4120180, 13.1123861, 14.1480133, + 16.7446822, 16.7454918, 17.2050103, 18.5967357, 19.0453245, + 20.1026416, 21.0763395, 22.8943818, 27.1787396, 27.4660532, + 27.6257642, 27.8911043, 27.9489466, 28.6479487, 30.1460253, + 30.7313018, 31.8336506, 32.5754218, 33.0707100, 34.2442399, + 34.3233506, 34.3512109, 38.3543568, 38.8293308, 39.9348989, + 40.4014601, 40.4729411, 42.1520939, 42.1892152, 42.4237391, + 43.1982627, 44.1678127, 44.9746195] + bonf_p = np.array(bonf_p) + bonf_p[bonf_p > 1] = 1 + sorted_labels = ["minister", "reporter", "contractor", "insurance.agent", + "machinist", "store.clerk", "conductor", "factory.owner", + "mail.carrier", "streetcar.motorman", "carpenter", "coal.miner", + "bartender", "bookkeeper", "soda.clerk", "chemist", "RR.engineer", + "professor", "electrician", "gas.stn.attendant", "auto.repairman", + "watchman", "banker", "machine.operator", "dentist", "waiter", + "shoe.shiner", "welfare.worker", "plumber", "physician", "pilot", + "engineer", "accountant", "lawyer", "undertaker", "barber", + "store.manager", "truck.driver", "cook", "janitor", "policeman", + "architect", "teacher", "taxi.driver", "author"] + + res2 = np.c_[rstudent, unadj_p, bonf_p] + res = oi.outlier_test(ndarray_mod, method='b', labels=labels, order=True) + np.testing.assert_almost_equal(res.values, res2, 7) + np.testing.assert_equal(res.index.tolist(), sorted_labels) # pylint: disable-msg=E1103 + + data = pd.DataFrame(np.column_stack((endog, exog)), + columns='y const var1 var2'.split(), + index=labels) + + # check `order` with pandas bug in #3971 + res_pd = OLS.from_formula('y ~ const + var1 + var2 - 0', data).fit() + + res_outl2 = oi.outlier_test(res_pd, method='b', order=True) + assert_almost_equal(res_outl2.values, res2, 7) + assert_equal(res_outl2.index.tolist(), sorted_labels) + + res_outl1 = res_pd.outlier_test(method='b') + res_outl1 = res_outl1.sort_values(['unadj_p'], ascending=True) + assert_almost_equal(res_outl1.values, res2, 7) + assert_equal(res_outl1.index.tolist(), sorted_labels) + assert_array_equal(res_outl2.index, res_outl1.index) + + # additional keywords in method + res_outl3 = res_pd.outlier_test(method='b', order=True) + assert_equal(res_outl3.index.tolist(), sorted_labels) + res_outl4 = res_pd.outlier_test(method='b', order=True, cutoff=0.15) + assert_equal(res_outl4.index.tolist(), sorted_labels[:1]) + + +if __name__ == '__main__': + import pytest + pytest.main([__file__, '-vvs', '-x', '--pdb']) + + #t = TestDiagnosticG() + #t.test_basic() + #t.test_hac() + #t.test_acorr_breusch_godfrey() + #t.test_acorr_ljung_box() + #t.test_het_goldfeldquandt() + #t.test_het_breusch_pagan() + #t.test_het_white() + #t.test_compare_lr() + #t.test_compare_nonnested() + #t.test_influence() + + + ################################################## + + ''' + J test + + Model 1: ginv ~ ggdp + lint + Model 2: ginv ~ ggdp + tbilrate + Estimate Std. Error t value Pr(>|t|) + M1 + fitted(M2) 1.591505670785873 0.7384552861695823 2.15518 0.0323546 * + M2 + fitted(M1) 1.305687653016899 0.4808385176653064 2.71544 0.0072039 ** + --- + Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 + + + = lm(ginv ~ ggdp + tbilrate) + > ct = coxtest(fm, fm3) + > ct + Cox test + + Model 1: ginv ~ ggdp + lint + Model 2: ginv ~ ggdp + tbilrate + Estimate Std. Error z value Pr(>|z|) + fitted(M1) ~ M2 -0.782030488930356 0.599696502782265 -1.30404 0.19222 + fitted(M2) ~ M1 -2.248817107408537 0.392656854330139 -5.72718 1.0211e-08 *** + --- + Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 + + + + > et = encomptest(fm, fm3) + > et + Encompassing test + + Model 1: ginv ~ ggdp + lint + Model 2: ginv ~ ggdp + tbilrate + Model E: ginv ~ ggdp + lint + tbilrate + Res.Df Df F Pr(>F) + M1 vs. ME 198 -1 4.64481 0.0323546 * + M2 vs. ME 198 -1 7.37361 0.0072039 ** + --- + Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 + + + > fm4 = lm(realinv ~ realgdp + realint, data=d) + > fm5 = lm(log(realinv) ~ realgdp + realint, data=d) + > pet = petest(fm4, fm5) + > pet + PE test + + Model 1: realinv ~ realgdp + realint + Model 2: log(realinv) ~ realgdp + realint + Estimate Std. Error t value + M1 + log(fit(M1))-fit(M2) -229.281878354594596 44.5087822087058598 -5.15139 + M2 + fit(M1)-exp(fit(M2)) 0.000634664704814 0.0000462387010349 13.72583 + Pr(>|t|) + M1 + log(fit(M1))-fit(M2) 6.2013e-07 *** + M2 + fit(M1)-exp(fit(M2)) < 2.22e-16 *** + --- + Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 + + ''' diff --git a/statsmodels/stats/tests/test_diagnostic_other.py b/statsmodels/stats/tests/test_diagnostic_other.py new file mode 100644 index 0000000..3baee55 --- /dev/null +++ b/statsmodels/stats/tests/test_diagnostic_other.py @@ -0,0 +1,271 @@ +# -*- coding: utf-8 -*- +"""Unit tests for generic score/LM tests and conditional moment tests + +Created on Mon Nov 17 08:44:06 2014 + +Author: Josef Perktold +License: BSD-3 + +""" + +import numpy as np +from numpy.testing import assert_allclose + +from statsmodels.regression.linear_model import OLS +from statsmodels.stats._diagnostic_other import CMTNewey, CMTTauchen +import statsmodels.stats._diagnostic_other as diao + + +class CheckCMT(object): + + def test_score(self): + expected = self.results_score + for msg, actual in self.res_score(): + # not all cases provide all 3 elements, + # TODO: fix API, returns of functions + assert_allclose(actual, expected[:np.size(actual)], rtol=1e-13, + err_msg=msg) + + def test_scorehc0(self): + expected = self.results_hc0 + for msg, actual in self.res_hc0(): + assert_allclose(actual, expected[:np.size(actual)], rtol=1e-13, + err_msg=msg) + + def test_scoreopg(self): + expected = self.results_opg + for msg, actual in self.res_opg(): + assert_allclose(actual, expected[:np.size(actual)], rtol=1e-13, + err_msg=msg) + + +class TestCMTOLS(CheckCMT): + + @classmethod + def setup_class(cls): + + np.random.seed(864259) + + nobs, k_vars = 100, 4 + sig_e = 1 + x0 = np.random.randn(nobs, k_vars) + x0[:,0] = 1 + y_true = x0.sum(1) + y = y_true + sig_e * np.random.randn(nobs) + + x1 = np.random.randn(nobs, 2) + x = np.column_stack((x0, x1)) + + cls.exog_full = x + cls.exog_add = x1 + cls.res_ols = OLS(y, x0).fit() + + cls.attach_moment_conditions() + + # results from initial run, not reference package (drooped 2 digits) + cls.results_score = (1.6857659627548, 0.43046770240535, 2) + cls.results_hc0 = (1.6385932313952, 0.4407415561953, 2) + cls.results_opg = (1.72226002418488, 0.422684174119544, 2.0) + + @classmethod # TODO: a better structure ? + def attach_moment_conditions(self): + res_ols = self.res_ols + # assumes x = column_stack([x0, x1]) + x = self.exog_full + #x0 = self.res_ols.model.exog # not used here + x1 = self.exog_add + + nobs, k_constraints = x1.shape + + # TODO: cleanup after initial copy past + moms_obs = res_ols.resid[:, None] * x + moms = moms_obs.sum(0) + cov_moms = res_ols.mse_resid * x.T.dot(x) #np.linalg.inv(x.T.dot(x)) + cov_moms *= res_ols.df_resid / nobs + + # weights used for GMM to replicate OLS + weights = np.linalg.inv(cov_moms) + # we don't use last two variables + weights[:, -k_constraints:] = 0 + weights[-k_constraints:, :] = 0 + + k_moms = moms.shape[0] + # TODO: Newey has different versions that all produce the same result + # in example + L = np.eye(k_moms)[-k_constraints:] #.dot(np.linalg.inv(cov_moms)) + + moms_deriv = cov_moms[:, :-k_constraints] + + covm = moms_obs.T.dot(moms_obs) + + #attach + self.nobs = nobs + self.moms = moms + self.moms_obs = moms_obs + self.cov_moms = cov_moms + self.covm = covm + self.moms_deriv = moms_deriv + self.weights = weights + self.L = L + + def res_score(self): + res_ols = self.res_ols + nobs = self.nobs + moms = self.moms + moms_obs = self.moms_obs + cov_moms = self.cov_moms + covm = self.covm + moms_deriv = self.moms_deriv + weights = self.weights + L = self.L + x = self.exog_full # for auxiliary regression only + + res_all = [] + + # auxiliary regression + stat = nobs * OLS(res_ols.resid, x).fit().rsquared + res_all.append(('ols R2', stat)) + + stat = moms.dot(np.linalg.solve(cov_moms, moms)) + res_all.append(('score simple', stat)) + + tres = diao.lm_robust(moms, np.eye(moms.shape[0])[-2:], + np.linalg.inv(cov_moms), cov_moms) + res_all.append(('score mle', tres)) + + tres = CMTNewey(moms, cov_moms, cov_moms[:,:-2], weights, L).chisquare + res_all.append(('Newey', tres)) + + tres = CMTTauchen(moms[:-2], cov_moms[:-2, :-2], moms[-2:], + cov_moms[-2:, :-2], cov_moms).chisquare + res_all.append(('Tauchen', tres)) + + return res_all + + def res_opg(self): + res_ols = self.res_ols + nobs = self.nobs + moms = self.moms + moms_obs = self.moms_obs + covm = self.covm + moms_deriv = self.moms_deriv + weights = self.weights + L = self.L + x = self.exog_full + + res_ols2_hc0 = OLS(res_ols.model.endog, x).fit(cov_type='HC0') + + res_all = [] + + # auxiliary regression + ones = np.ones(nobs) + stat = nobs * OLS(ones, moms_obs).fit().rsquared + res_all.append(('ols R2', stat)) + + tres = res_ols2_hc0.compare_lm_test(res_ols, demean=False) + res_all.append(('comp_lm uc', tres)) + + tres = CMTNewey(moms, covm, covm[:,:-2], weights, L).chisquare + res_all.append(('Newey', tres)) + + tres = CMTTauchen(moms[:-2], covm[:-2, :-2], moms[-2:], covm[-2:, :-2], + covm).chisquare + res_all.append(('Tauchen', tres)) + + tres = diao.lm_robust_subset(moms[-2:], 2, covm, covm) + res_all.append(('score subset QMLE', tres)) + + tres = diao.lm_robust(moms, np.eye(moms.shape[0])[-2:], + np.linalg.inv(covm), covm, cov_params=None) + res_all.append(('scoreB QMLE', tres)) + + tres = diao.lm_robust(moms, np.eye(moms.shape[0])[-2:], + np.linalg.inv(covm), None, + cov_params=np.linalg.inv(covm)) + res_all.append(('scoreV QMLE', tres)) + + return res_all + + def res_hc0(self): + res_ols = self.res_ols + nobs = self.nobs + moms = self.moms + moms_obs = self.moms_obs + cov_moms = self.cov_moms # Hessian with scale + covm = self.covm + moms_deriv = self.moms_deriv + weights = self.weights + L = self.L + + x0 = res_ols.model.exog + x1 = self.exog_add + + res_all = [] + + tres = diao.cm_test_robust(resid=res_ols.resid, resid_deriv=x0, + instruments=x1, weights=1) + # TODO: extra return and no df in cm_test_robust Wooldridge + res_all.append(('Wooldridge', tres[:2])) + + tres = CMTNewey(moms, covm, moms_deriv, weights, L).chisquare + res_all.append(('Newey', tres)) + + tres = CMTTauchen(moms[:-2], cov_moms[:-2, :-2], moms[-2:], + cov_moms[-2:, :-2], covm).chisquare + res_all.append(('Tauchen', tres)) + + tres = diao.lm_robust_subset(moms[-2:], 2, cov_moms, covm) + res_all.append(('score subset QMLE', tres)) + + tres = diao.lm_robust(moms, np.eye(moms.shape[0])[-2:], + np.linalg.inv(cov_moms), covm) + res_all.append(('scoreB QMLE', tres)) + + # need sandwich cov_params V + Ainv = np.linalg.inv(cov_moms) + vv = Ainv.dot(covm).dot(Ainv) + tres = diao.lm_robust(moms, np.eye(moms.shape[0])[-2:], + np.linalg.inv(cov_moms), None, + cov_params=vv) + res_all.append(('scoreV QMLE', tres)) + + tres = diao.conditional_moment_test_generic(moms_obs[:, -2:], + cov_moms[-2:, :-2], + moms_obs[:,:-2], + cov_moms[:-2, :-2]) + tres_ = (tres.stat_cmt, tres.pval_cmt) + res_all.append(('cmt', tres_)) + + # using unscaled hessian instead of scaled + x = self.exog_full + hess_unscaled = x.T.dot(x) + tres = diao.conditional_moment_test_generic(moms_obs[:, -2:], + hess_unscaled[-2:, :-2], moms_obs[:,:-2], + hess_unscaled[:-2, :-2])#, covm) + tres_ = (tres.stat_cmt, tres.pval_cmt) + res_all.append(('cmt', tres_)) + + score_deriv_uu = cov_moms[:-2, :-2] + score_deriv_cu = cov_moms[-2:, :-2] + cov_score_cc = covm[-2:, -2:] + cov_score_cu = covm[-2:, :-2] + cov_score_uu = covm[:-2, :-2] + moms[-2:], 2, cov_moms, covm + tres = diao.lm_robust_subset_parts(moms[-2:], 2, score_deriv_uu, + score_deriv_cu, cov_score_cc, + cov_score_cu, cov_score_uu) + + res_all.append(('score subset_parts QMLE', tres)) + + params_deriv = np.eye(x.shape[1], x.shape[1] - 2) + #params_deriv[[-2, -1], [-2, -1]] = 0 + score = moms + score_deriv = cov_moms + cov_score = covm + + tres = diao.lm_robust_reparameterized(score, params_deriv, + score_deriv, cov_score) + + res_all.append(('score reparam QMLE', tres)) + + return res_all diff --git a/statsmodels/stats/tests/test_gof.py b/statsmodels/stats/tests/test_gof.py new file mode 100644 index 0000000..a9f0ced --- /dev/null +++ b/statsmodels/stats/tests/test_gof.py @@ -0,0 +1,104 @@ +# -*- coding: utf-8 -*- +""" + +Created on Thu Feb 28 13:24:59 2013 + +Author: Josef Perktold +""" +from statsmodels.compat.python import itervalues + +import numpy as np +from numpy.testing import assert_almost_equal, assert_equal + +from statsmodels.stats.gof import (chisquare, chisquare_power, + chisquare_effectsize) +from statsmodels.tools.testing import Holder + + +def test_chisquare_power(): + from .results.results_power import pwr_chisquare + for case in itervalues(pwr_chisquare): + power = chisquare_power(case.w, case.N, case.df + 1, + alpha=case.sig_level) + assert_almost_equal(power, case.power, decimal=6, + err_msg=repr(vars(case))) + +def test_chisquare(): + # TODO: no tests for ``value`` yet + res1 = Holder() + res2 = Holder() + #> freq = c(1048, 660, 510, 420, 362) + #> pr1 = c(1020, 690, 510, 420, 360) + #> pr2 = c(1050, 660, 510, 420, 360) + #> c = chisq.test(freq, p=pr1, rescale.p = TRUE) + #> cat_items(c, "res1.") + res1.statistic = 2.084086388178453 + res1.parameter = 4 + res1.p_value = 0.72029651761105 + res1.method = 'Chi-squared test for given probabilities' + res1.data_name = 'freq' + res1.observed = np.array([ + 1048, 660, 510, 420, 362 + ]) + res1.expected = np.array([ + 1020, 690, 510, 420, 360 + ]) + res1.residuals = np.array([ + 0.876714007519206, -1.142080481440321, -2.517068894406109e-15, + -2.773674830645328e-15, 0.105409255338946 + ]) + + + #> c = chisq.test(freq, p=pr2, rescale.p = TRUE) + #> cat_items(c, "res2.") + res2.statistic = 0.01492063492063492 + res2.parameter = 4 + res2.p_value = 0.999972309849908 + res2.method = 'Chi-squared test for given probabilities' + res2.data_name = 'freq' + res2.observed = np.array([ + 1048, 660, 510, 420, 362 + ]) + res2.expected = np.array([ + 1050, 660, 510, 420, 360 + ]) + res2.residuals = np.array([ + -0.06172133998483677, 0, -2.517068894406109e-15, + -2.773674830645328e-15, 0.105409255338946 + ]) + + freq = np.array([1048, 660, 510, 420, 362]) + pr1 = np.array([1020, 690, 510, 420, 360]) + pr2 = np.array([1050, 660, 510, 420, 360]) + + for pr, res in zip([pr1, pr2], [res1, res2]): + stat, pval = chisquare(freq, pr) + assert_almost_equal(stat, res.statistic, decimal=12) + assert_almost_equal(pval, res.p_value, decimal=13) + + +def test_chisquare_effectsize(): + + pr1 = np.array([1020, 690, 510, 420, 360]) + pr2 = np.array([1050, 660, 510, 420, 360]) + #> library(pwr) + #> ES.w1(pr1/3000, pr2/3000) + es_r = 0.02699815282115563 + es1 = chisquare_effectsize(pr1, pr2) + es2 = chisquare_effectsize(pr1, pr2, cohen=False) + assert_almost_equal(es1, es_r, decimal=14) + assert_almost_equal(es2, es_r**2, decimal=14) + + # regression tests for correction + res1 = chisquare_effectsize(pr1, pr2, cohen=False, + correction=(3000, len(pr1)-1)) + res0 = 0 #-0.00059994422693327625 + assert_equal(res1, res0) + pr3 = pr2 + [0,0,0,50,50] + res1 = chisquare_effectsize(pr1, pr3, cohen=False, + correction=(3000, len(pr1)-1)) + res0 = 0.0023106468846296755 + assert_almost_equal(res1, res0, decimal=14) + # compare + # res_nc = chisquare_effectsize(pr1, pr3, cohen=False) + # 0.0036681143072077533 diff --git a/statsmodels/stats/tests/test_groups_sw.py b/statsmodels/stats/tests/test_groups_sw.py new file mode 100644 index 0000000..3df5b63 --- /dev/null +++ b/statsmodels/stats/tests/test_groups_sw.py @@ -0,0 +1,78 @@ +# -*- coding: utf-8 -*- +"""Test for a helper function for PanelHAC robust covariance + +the functions should be rewritten to make it more efficient + +Created on Thu May 17 21:09:41 2012 + +Author: Josef Perktold +""" +import numpy as np +from numpy.testing import assert_equal, assert_raises +import statsmodels.stats.sandwich_covariance as sw +from statsmodels.tools.grouputils import GroupSorted + + +class CheckPanelLagMixin(object): + + @classmethod + def calculate(cls): + cls.g = g = GroupSorted(cls.gind) # pylint: disable-msg=W0201 + cls.alla = [(lag, sw.lagged_groups(cls.x, lag, g.groupidx)) # pylint: disable-msg=W0201 + for lag in range(5)] + + def test_values(self): + for lag, (y0, ylag) in self.alla: + assert_equal(y0, self.alle[lag].T) + assert_equal(y0, ylag + lag) + + def test_raises(self): + mlag = self.mlag + assert_raises(ValueError, sw.lagged_groups, self.x, mlag, + self.g.groupidx) + + +class TestBalanced(CheckPanelLagMixin): + + @classmethod + def setup_class(cls): + cls.gind = np.repeat([0,1,2], 5) + cls.mlag = 5 + x = np.arange(15) + x += 10**cls.gind + cls.x = x[:,None] + #expected result + cls.alle = { + 0 : np.array([[ 1, 2, 3, 4, 5, 15, 16, 17, 18, 19, + 110, 111, 112, 113, 114]]), + 1 : np.array([[ 2, 3, 4, 5, 16, 17, 18, 19, 111, 112, + 113, 114]]), + 2 : np.array([[ 3, 4, 5, 17, 18, 19, 112, 113, 114]]), + 3 : np.array([[ 4, 5, 18, 19, 113, 114]]), + 4 : np.array([[ 5, 19, 114]]) + } + cls.calculate() + +class TestUnBalanced(CheckPanelLagMixin): + + @classmethod + def setup_class(cls): + cls.gind = gind = np.repeat([0,1,2], [3, 5, 10]) + cls.mlag = 10 #maxlag + x = np.arange(18) + x += 10**gind + cls.x = x[:,None] + + #expected result + cls.alle = { + 0 : np.array([[ 1, 2, 3, 13, 14, 15, 16, 17, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117]]), + 1 : np.array([[ 2, 3, 14, 15, 16, 17, 109, 110, 111, 112, + 113, 114, 115, 116, 117]]), + 2 : np.array([[ 3, 15, 16, 17, 110, 111, 112, 113, 114, 115, + 116, 117]]), + 3 : np.array([[ 16, 17, 111, 112, 113, 114, 115, 116, 117]]), + 4 : np.array([[ 17, 112, 113, 114, 115, 116, 117]]), + 5 : np.array([[113, 114, 115, 116, 117]]), + } + cls.calculate() diff --git a/statsmodels/stats/tests/test_influence.py b/statsmodels/stats/tests/test_influence.py new file mode 100644 index 0000000..81d2e2d --- /dev/null +++ b/statsmodels/stats/tests/test_influence.py @@ -0,0 +1,248 @@ +# -*- coding: utf-8 -*- +""" +Created on Tue Jun 12 13:18:12 2018 + +Author: Josef Perktold +""" +from statsmodels.compat.pandas import testing as pdt + +import os.path +import numpy as np +from numpy.testing import assert_allclose +import pandas as pd + +import pytest + +from statsmodels.regression.linear_model import OLS +from statsmodels.genmod.generalized_linear_model import GLM +from statsmodels.genmod import families + +from statsmodels.stats.outliers_influence import MLEInfluence + +cur_dir = os.path.abspath(os.path.dirname(__file__)) + +file_name = 'binary_constrict.csv' +file_path = os.path.join(cur_dir, 'results', file_name) +data_bin = pd.read_csv(file_path, index_col=0) + +file_name = 'results_influence_logit.csv' +file_path = os.path.join(cur_dir, 'results', file_name) +results_sas_df = pd.read_csv(file_path, index_col=0) + + +def test_influence_glm_bernoulli(): + # example uses Finney's data and is used in Pregibon 1981 + + df = data_bin + results_sas = np.asarray(results_sas_df) + + res = GLM(df['constrict'], df[['const', 'log_rate', 'log_volumne']], + family=families.Binomial()).fit(attach_wls=True, atol=1e-10) + + infl = res.get_influence(observed=False) + + k_vars = 3 + assert_allclose(infl.dfbetas, results_sas[:, 5:8], atol=1e-4) + assert_allclose(infl.d_params, results_sas[:, 5:8] * res.bse.values, atol=1e-4) + assert_allclose(infl.cooks_distance[0] * k_vars, results_sas[:, 8], atol=6e-5) + assert_allclose(infl.hat_matrix_diag, results_sas[:, 4], atol=6e-5) + + c_bar = infl.cooks_distance[0] * 3 * (1 - infl.hat_matrix_diag) + assert_allclose(c_bar, results_sas[:, 9], atol=6e-5) + + +class InfluenceCompareExact(object): + # Mixin to compare and test two Influence instances + + def test_basics(self): + infl1 = self.infl1 + infl0 = self.infl0 + + assert_allclose(infl0.hat_matrix_diag, infl1.hat_matrix_diag, + rtol=1e-12) + + assert_allclose(infl0.resid_studentized, + infl1.resid_studentized, rtol=1e-12, atol=1e-7) + + cd_rtol = getattr(self, 'cd_rtol', 1e-7) + assert_allclose(infl0.cooks_distance[0], infl1.cooks_distance[0], + rtol=cd_rtol) + assert_allclose(infl0.dfbetas, infl1.dfbetas, rtol=1e-9, atol=5e-9) + assert_allclose(infl0.d_params, infl1.d_params, rtol=1e-9, atol=5e-9) + assert_allclose(infl0.d_fittedvalues, infl1.d_fittedvalues, rtol=5e-9) + assert_allclose(infl0.d_fittedvalues_scaled, + infl1.d_fittedvalues_scaled, rtol=5e-9) + + @pytest.mark.smoke + @pytest.mark.matplotlib + def test_plots(self, close_figures): + infl1 = self.infl1 + infl0 = self.infl0 + + fig = infl0.plot_influence(external=False) + fig = infl1.plot_influence(external=False) + + fig = infl0.plot_index('resid', threshold=0.2, title='') + fig = infl1.plot_index('resid', threshold=0.2, title='') + + fig = infl0.plot_index('dfbeta', idx=1, threshold=0.2, title='') + fig = infl1.plot_index('dfbeta', idx=1, threshold=0.2, title='') + + fig = infl0.plot_index('cook', idx=1, threshold=0.2, title='') + fig = infl1.plot_index('cook', idx=1, threshold=0.2, title='') + + fig = infl0.plot_index('hat', idx=1, threshold=0.2, title='') + fig = infl1.plot_index('hat', idx=1, threshold=0.2, title='') + + + def test_summary(self): + infl1 = self.infl1 + infl0 = self.infl0 + + df0 = infl0.summary_frame() + df1 = infl1.summary_frame() + assert_allclose(df0.values, df1.values, rtol=5e-5) + pdt.assert_index_equal(df0.index, df1.index) + + +def _check_looo(self): + infl = self.infl1 + # unwrap if needed + results = getattr(infl.results, '_results', infl.results) + + res_looo = infl._res_looo + mask_infl = infl.cooks_distance[0] > 2 * infl.cooks_distance[0].std() + mask_low = ~mask_infl + diff_params = results.params - res_looo['params'] + assert_allclose(infl.d_params[mask_low], diff_params[mask_low], atol=0.05) + assert_allclose(infl.params_one[mask_low], res_looo['params'][mask_low], rtol=0.01) + + +class TestInfluenceLogitGLMMLE(InfluenceCompareExact): + + @classmethod + def setup_class(cls): + df = data_bin + res = GLM(df['constrict'], df[['const', 'log_rate', 'log_volumne']], + family=families.Binomial()).fit(attach_wls=True, atol=1e-10) + + cls.infl1 = res.get_influence() + cls.infl0 = MLEInfluence(res) + + def test_looo(self): + _check_looo(self) + + +class TestInfluenceBinomialGLMMLE(InfluenceCompareExact): + # example based on Williams and R docs + + @classmethod + def setup_class(cls): + yi = np.array([0, 2, 14, 19, 30]) + ni = 40 * np.ones(len(yi)) + xi = np.arange(1, len(yi) + 1) + exog = np.column_stack((np.ones(len(yi)), xi)) + endog = np.column_stack((yi, ni - yi)) + + res = GLM(endog, exog, family=families.Binomial()).fit() + + cls.infl1 = res.get_influence() + cls.infl0 = MLEInfluence(res) + cls.cd_rtol = 5e-5 + + def test_looo(self): + _check_looo(self) + + def test_r(self): + # values from R, + # > xi <- 1:5 + # > yi <- c(0,2,14,19,30) # number of mice responding to dose xi + # > mi <- rep(40, 5) # number of mice exposed + # > glmI <- glm(cbind(yi, mi -yi) ~ xi, family = binomial) + # > imI <- influence.measures(glmI) + # > t(imI$infmat) + + # dfbeta/dfbetas and dffits don't make sense to me and are furthe away from + # looo than mine + # resid seem to be resid_deviance based and not resid_pearson + # I didn't compare cov.r + infl1 = self.infl1 + cooks_d = [0.25220202795934726, 0.26107981497746285, 1.28985614424132389, + 0.08449722285516942, 0.36362110845918005] + hat = [0.2594393406119333, 0.3696442663244837, 0.3535768402250521, + 0.389209198535791057, 0.6281303543027403] + + assert_allclose(infl1.hat_matrix_diag, hat, rtol=5e-6) + assert_allclose(infl1.cooks_distance[0], cooks_d, rtol=1e-5) + + +class TestInfluenceGaussianGLMMLE(InfluenceCompareExact): + + @classmethod + def setup_class(cls): + from .test_diagnostic import get_duncan_data + endog, exog, labels = get_duncan_data() + data = pd.DataFrame(np.column_stack((endog, exog)), + columns='y const var1 var2'.split(), + index=labels) + + res = GLM.from_formula('y ~ const + var1 + var2 - 1', data).fit() + #res = GLM(endog, exog).fit() + + cls.infl1 = res.get_influence() + cls.infl0 = MLEInfluence(res) + + def test_looo(self): + _check_looo(self) + + +class TestInfluenceGaussianGLMOLS(InfluenceCompareExact): + + @classmethod + def setup_class(cls): + from .test_diagnostic import get_duncan_data + endog, exog, labels = get_duncan_data() + data = pd.DataFrame(np.column_stack((endog, exog)), + columns='y const var1 var2'.split(), + index=labels) + + res0 = GLM.from_formula('y ~ const + var1 + var2 - 1', data).fit() + res1 = OLS.from_formula('y ~ const + var1 + var2 - 1', data).fit() + cls.infl1 = res1.get_influence() + cls.infl0 = res0.get_influence() + + def test_basics(self): + # needs to override attributes that are not equivalent, + # i.e. not available or different definition like external vs internal + infl1 = self.infl1 + infl0 = self.infl0 + + assert_allclose(infl0.hat_matrix_diag, infl1.hat_matrix_diag, + rtol=1e-12) + assert_allclose(infl0.resid_studentized, + infl1.resid_studentized, rtol=1e-12, atol=1e-7) + assert_allclose(infl0.cooks_distance, infl1.cooks_distance, rtol=1e-7) + assert_allclose(infl0.dfbetas, infl1.dfbetas, rtol=0.1) # changed + # OLSInfluence only has looo dfbeta/d_params + assert_allclose(infl0.d_params, infl1.dfbeta, rtol=1e-9, atol=1e-14) + # d_fittedvalues is not available in OLSInfluence, i.e. only scaled dffits + # assert_allclose(infl0.d_fittedvalues, infl1.d_fittedvalues, rtol=1e-9) + assert_allclose(infl0.d_fittedvalues_scaled, + infl1.dffits_internal[0], rtol=1e-9) + + # specific to linear link + assert_allclose(infl0.d_linpred, + infl0.d_fittedvalues, rtol=1e-12) + assert_allclose(infl0.d_linpred_scaled, + infl0.d_fittedvalues_scaled, rtol=1e-12) + + def test_summary(self): + infl1 = self.infl1 + infl0 = self.infl0 + + df0 = infl0.summary_frame() + df1 = infl1.summary_frame() + # just some basic check on overlap except for dfbetas + cols = ['cooks_d', 'standard_resid', 'hat_diag', 'dffits_internal'] + assert_allclose(df0[cols].values, df1[cols].values, rtol=1e-5) + pdt.assert_index_equal(df0.index, df1.index) diff --git a/statsmodels/stats/tests/test_inter_rater.py b/statsmodels/stats/tests/test_inter_rater.py new file mode 100644 index 0000000..630c487 --- /dev/null +++ b/statsmodels/stats/tests/test_inter_rater.py @@ -0,0 +1,351 @@ +# -*- coding: utf-8 -*- +""" + +Created on Mon Dec 10 09:18:14 2012 + +Author: Josef Perktold +""" + +import numpy as np +from numpy.testing import assert_almost_equal, assert_equal, assert_allclose + +from statsmodels.stats.inter_rater import (fleiss_kappa, cohens_kappa, + to_table, aggregate_raters) +from statsmodels.tools.testing import Holder + + +table0 = np.asarray('''\ +1 0 0 0 0 14 1.000 +2 0 2 6 4 2 0.253 +3 0 0 3 5 6 0.308 +4 0 3 9 2 0 0.440 +5 2 2 8 1 1 0.330 +6 7 7 0 0 0 0.462 +7 3 2 6 3 0 0.242 +8 2 5 3 2 2 0.176 +9 6 5 2 1 0 0.286 +10 0 2 2 3 7 0.286'''.split(), float).reshape(10,-1) + +table1 = table0[:, 1:-1] + +table10 = [[0, 4, 1], + [0, 8, 0], + [0, 1, 5]] + +#Fleiss 1971, Fleiss has only the transformed table +diagnoses = np.array( [[4, 4, 4, 4, 4, 4], + [2, 2, 2, 5, 5, 5], + [2, 3, 3, 3, 3, 5], + [5, 5, 5, 5, 5, 5], + [2, 2, 2, 4, 4, 4], + [1, 1, 3, 3, 3, 3], + [3, 3, 3, 3, 5, 5], + [1, 1, 3, 3, 3, 4], + [1, 1, 4, 4, 4, 4], + [5, 5, 5, 5, 5, 5], + [1, 4, 4, 4, 4, 4], + [1, 2, 4, 4, 4, 4], + [2, 2, 2, 3, 3, 3], + [1, 4, 4, 4, 4, 4], + [2, 2, 4, 4, 4, 5], + [3, 3, 3, 3, 3, 5], + [1, 1, 1, 4, 5, 5], + [1, 1, 1, 1, 1, 2], + [2, 2, 4, 4, 4, 4], + [1, 3, 3, 5, 5, 5], + [5, 5, 5, 5, 5, 5], + [2, 4, 4, 4, 4, 4], + [2, 2, 4, 5, 5, 5], + [1, 1, 4, 4, 4, 4], + [1, 4, 4, 4, 4, 5], + [2, 2, 2, 2, 2, 4], + [1, 1, 1, 1, 5, 5], + [2, 2, 4, 4, 4, 4], + [1, 3, 3, 3, 3, 3], + [5, 5, 5, 5, 5, 5]]) +diagnoses_rownames = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', ] +diagnoses_colnames = ['rater1', 'rater2', 'rater3', 'rater4', 'rater5', 'rater6', ] + + + +def test_fleiss_kappa(): + #currently only example from Wikipedia page + kappa_wp = 0.210 + assert_almost_equal(fleiss_kappa(table1), kappa_wp, decimal=3) + + +def test_fleis_randolph(): + # reference numbers from online calculator + # http://justusrandolph.net/kappa/#dInfo + table = [[7, 0], [7, 0]] + assert_equal(fleiss_kappa(table, method='unif'), 1) + + table = [[6.99, 0.01], [6.99, 0.01]] + # % Overall Agreement 0.996671 + # Fixed Marginal Kappa: -0.166667 + # Free Marginal Kappa: 0.993343 + assert_allclose(fleiss_kappa(table), -0.166667, atol=6e-6) + assert_allclose(fleiss_kappa(table, method='unif'), 0.993343, atol=6e-6) + + table = [[7, 1], [3, 5]] + # % Overall Agreement 0.607143 + # Fixed Marginal Kappa: 0.161905 + # Free Marginal Kappa: 0.214286 + assert_allclose(fleiss_kappa(table, method='fleiss'), 0.161905, atol=6e-6) + assert_allclose(fleiss_kappa(table, method='randolph'), 0.214286, atol=6e-6) + + table = [[7, 0], [0, 7]] + # % Overall Agreement 1.000000 + # Fixed Marginal Kappa: 1.000000 + # Free Marginal Kappa: 1.000000 + assert_allclose(fleiss_kappa(table), 1) + assert_allclose(fleiss_kappa(table, method='uniform'), 1) + + table = [[6, 1, 0], [0, 7, 0]] + # % Overall Agreement 0.857143 + # Fixed Marginal Kappa: 0.708333 + # Free Marginal Kappa: 0.785714 + assert_allclose(fleiss_kappa(table), 0.708333, atol=6e-6) + assert_allclose(fleiss_kappa(table, method='rand'), 0.785714, atol=6e-6) + + +class CheckCohens(object): + + def test_results(self): + res = self.res + res2 = self.res2 + + res_ = [res.kappa, res.std_kappa, res.kappa_low, res.kappa_upp, res.std_kappa0, + res.z_value, res.pvalue_one_sided, res.pvalue_two_sided] + + assert_almost_equal(res_, res2, decimal=4) + assert_equal(str(res), self.res_string) + + +class UnweightedCohens(CheckCohens): + #comparison to printout of a SAS example + @classmethod + def setup_class(cls): + #temporary: res instance is at last position + cls.res = cohens_kappa(table10) + res10_sas = [0.4842, 0.1380, 0.2137, 0.7547] + res10_sash0 = [0.1484, 3.2626, 0.0006, 0.0011] #for test H0:kappa=0 + cls.res2 = res10_sas + res10_sash0 #concatenate + + cls.res_string = '''\ + Simple Kappa Coefficient + -------------------------------- + Kappa 0.4842 + ASE 0.1380 + 95% Lower Conf Limit 0.2137 + 95% Upper Conf Limit 0.7547 + + Test of H0: Simple Kappa = 0 + + ASE under H0 0.1484 + Z 3.2626 + One-sided Pr > Z 0.0006 + Two-sided Pr > |Z| 0.0011''' + '\n' + + def test_option(self): + kappa = cohens_kappa(table10, return_results=False) + assert_almost_equal(kappa, self.res2[0], decimal=4) + +class TestWeightedCohens(CheckCohens): + #comparison to printout of a SAS example + @classmethod + def setup_class(cls): + #temporary: res instance is at last position + cls.res = cohens_kappa(table10, weights=[0, 1, 2]) + res10w_sas = [0.4701, 0.1457, 0.1845, 0.7558] + res10w_sash0 = [0.1426, 3.2971, 0.0005, 0.0010] #for test H0:kappa=0 + cls.res2 = res10w_sas + res10w_sash0 #concatenate + + cls.res_string = '''\ + Weighted Kappa Coefficient + -------------------------------- + Kappa 0.4701 + ASE 0.1457 + 95% Lower Conf Limit 0.1845 + 95% Upper Conf Limit 0.7558 + + Test of H0: Weighted Kappa = 0 + + ASE under H0 0.1426 + Z 3.2971 + One-sided Pr > Z 0.0005 + Two-sided Pr > |Z| 0.0010''' + '\n' + + def test_option(self): + kappa = cohens_kappa(table10, weights=[0, 1, 2], return_results=False) + assert_almost_equal(kappa, self.res2[0], decimal=4) + + +def test_cohenskappa_weights(): + #some tests for equivalent results with different options + np.random.seed(9743678) + table = np.random.randint(0, 10, size=(5,5)) + 5*np.eye(5) + + #example aggregation, 2 groups of levels + mat = np.array([[1,1,1, 0,0],[0,0,0,1,1]]) + table_agg = np.dot(np.dot(mat, table), mat.T) + res1 = cohens_kappa(table, weights=np.arange(5) > 2, wt='linear') + res2 = cohens_kappa(table_agg, weights=np.arange(2), wt='linear') + assert_almost_equal(res1.kappa, res2.kappa, decimal=14) + assert_almost_equal(res1.var_kappa, res2.var_kappa, decimal=14) + + #equivalence toeplitz with linear for special cases + res1 = cohens_kappa(table, weights=2*np.arange(5), wt='linear') + res2 = cohens_kappa(table, weights=2*np.arange(5), wt='toeplitz') + res3 = cohens_kappa(table, weights=res1.weights[0], wt='toeplitz') + #2-Dim weights + res4 = cohens_kappa(table, weights=res1.weights) + + assert_almost_equal(res1.kappa, res2.kappa, decimal=14) + assert_almost_equal(res1.var_kappa, res2.var_kappa, decimal=14) + + assert_almost_equal(res1.kappa, res3.kappa, decimal=14) + assert_almost_equal(res1.var_kappa, res3.var_kappa, decimal=14) + + assert_almost_equal(res1.kappa, res4.kappa, decimal=14) + assert_almost_equal(res1.var_kappa, res4.var_kappa, decimal=14) + + #equivalence toeplitz with quadratic for special cases + res1 = cohens_kappa(table, weights=5*np.arange(5)**2, wt='toeplitz') + res2 = cohens_kappa(table, weights=5*np.arange(5), wt='quadratic') + assert_almost_equal(res1.kappa, res2.kappa, decimal=14) + assert_almost_equal(res1.var_kappa, res2.var_kappa, decimal=14) + +anxiety = np.array([ + 3, 3, 3, 4, 5, 5, 2, 3, 5, 2, 2, 6, 1, 5, 2, 2, 1, 2, 4, 3, 3, 6, 4, + 6, 2, 4, 2, 4, 3, 3, 2, 3, 3, 3, 2, 2, 1, 3, 3, 4, 2, 1, 4, 4, 3, 2, + 1, 6, 1, 1, 1, 2, 3, 3, 1, 1, 3, 3, 2, 2 + ]).reshape(20,3, order='F') +anxiety_rownames = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', ] +anxiety_colnames = ['rater1', 'rater2', 'rater3', ] + + +def test_cohens_kappa_irr(): + + ck_w3 = Holder() + ck_w4 = Holder() + + #>r = kappa2(anxiety[,1:2], c(0,0,0,1,1,1)) + #> cat_items(r, pref="ck_w3.") + ck_w3.method = "Cohen's Kappa for 2 Raters (Weights: 0,0,0,1,1,1)" + ck_w3.irr_name = 'Kappa' + ck_w3.value = 0.1891892 + ck_w3.stat_name = 'z' + ck_w3.statistic = 0.5079002 + ck_w3.p_value = 0.6115233 + + #> r = kappa2(anxiety[,1:2], c(0,0,1,1,2,2)) + #> cat_items(r, pref="ck_w4.") + ck_w4.method = "Cohen's Kappa for 2 Raters (Weights: 0,0,1,1,2,2)" + ck_w4.irr_name = 'Kappa' + ck_w4.value = 0.2820513 + ck_w4.stat_name = 'z' + ck_w4.statistic = 1.257410 + ck_w4.p_value = 0.2086053 + + ck_w1 = Holder() + ck_w2 = Holder() + ck_w3 = Holder() + ck_w4 = Holder() + #> r = kappa2(anxiety[,2:3]) + #> cat_items(r, pref="ck_w1.") + ck_w1.method = "Cohen's Kappa for 2 Raters (Weights: unweighted)" + ck_w1.irr_name = 'Kappa' + ck_w1.value = -0.006289308 + ck_w1.stat_name = 'z' + ck_w1.statistic = -0.0604067 + ck_w1.p_value = 0.9518317 + + #> r = kappa2(anxiety[,2:3], "equal") + #> cat_items(r, pref="ck_w2.") + ck_w2.method = "Cohen's Kappa for 2 Raters (Weights: equal)" + ck_w2.irr_name = 'Kappa' + ck_w2.value = 0.1459075 + ck_w2.stat_name = 'z' + ck_w2.statistic = 1.282472 + ck_w2.p_value = 0.1996772 + + #> r = kappa2(anxiety[,2:3], "squared") + #> cat_items(r, pref="ck_w3.") + ck_w3.method = "Cohen's Kappa for 2 Raters (Weights: squared)" + ck_w3.irr_name = 'Kappa' + ck_w3.value = 0.2520325 + ck_w3.stat_name = 'z' + ck_w3.statistic = 1.437451 + ck_w3.p_value = 0.1505898 + + #> r = kappa2(anxiety[,2:3], c(0,0,1,1,2)) + #> cat_items(r, pref="ck_w4.") + ck_w4.method = "Cohen's Kappa for 2 Raters (Weights: 0,0,1,1,2)" + ck_w4.irr_name = 'Kappa' + ck_w4.value = 0.2391304 + ck_w4.stat_name = 'z' + ck_w4.statistic = 1.223734 + ck_w4.p_value = 0.2210526 + + all_cases = [(ck_w1, None, None), + (ck_w2, None, 'linear'), + (ck_w2, np.arange(5), None), + (ck_w2, np.arange(5), 'toeplitz'), + (ck_w3, None, 'quadratic'), + (ck_w3, np.arange(5)**2, 'toeplitz'), + (ck_w3, 4*np.arange(5)**2, 'toeplitz'), + (ck_w4, [0,0,1,1,2], 'toeplitz')] + + #Note R:irr drops the missing category level 4 and uses the reduced matrix + r = np.histogramdd(anxiety[:,1:], ([1, 2, 3, 4, 6, 7], [1, 2, 3, 4, 6, 7])) + + for res2, w, wt in all_cases: + msg = repr(w) + repr(wt) + res1 = cohens_kappa(r[0], weights=w, wt=wt) + assert_almost_equal(res1.kappa, res2.value, decimal=6, err_msg=msg) + assert_almost_equal(res1.z_value, res2.statistic, decimal=5, err_msg=msg) + assert_almost_equal(res1.pvalue_two_sided, res2.p_value, decimal=6, err_msg=msg) + + +def test_fleiss_kappa_irr(): + fleiss = Holder() + #> r = kappam.fleiss(diagnoses) + #> cat_items(r, pref="fleiss.") + fleiss.method = "Fleiss' Kappa for m Raters" + fleiss.irr_name = 'Kappa' + fleiss.value = 0.4302445 + fleiss.stat_name = 'z' + fleiss.statistic = 17.65183 + fleiss.p_value = 0 + data_ = aggregate_raters(diagnoses)[0] + res1_kappa = fleiss_kappa(data_) + assert_almost_equal(res1_kappa, fleiss.value, decimal=7) + +def test_to_table(): + data = diagnoses + res1 = to_table(data[:,:2]-1, 5) + res0 = np.asarray([[(data[:,:2]-1 == [i,j]).all(1).sum() + for j in range(5)] + for i in range(5)] ) + assert_equal(res1[0], res0) + + res2 = to_table(data[:,:2]) + assert_equal(res2[0], res0) + + bins = [0.5, 1.5, 2.5, 3.5, 4.5, 5.5] + res3 = to_table(data[:,:2], bins) + assert_equal(res3[0], res0) + + #more than 2 columns + res4 = to_table(data[:,:3]-1, bins=[-0.5, 0.5, 1.5, 2.5, 3.5, 4.5]) + res5 = to_table(data[:,:3]-1, bins=5) + assert_equal(res4[0].sum(-1), res0) + assert_equal(res5[0].sum(-1), res0) + + +def test_aggregate_raters(): + data = diagnoses + resf = aggregate_raters(data) + colsum = np.array([26, 26, 30, 55, 43]) + assert_equal(resf[0].sum(0), colsum) diff --git a/statsmodels/stats/tests/test_knockoff.py b/statsmodels/stats/tests/test_knockoff.py new file mode 100644 index 0000000..f449f78 --- /dev/null +++ b/statsmodels/stats/tests/test_knockoff.py @@ -0,0 +1,157 @@ +import numpy as np +from numpy.testing import assert_allclose, assert_array_equal, assert_equal +import pytest +import statsmodels.api as sm +from statsmodels.stats import knockoff_regeffects as kr +from statsmodels.stats._knockoff import (RegressionFDR, + _design_knockoff_equi, + _design_knockoff_sdp) + +try: + import cvxopt # noqa:F401 + has_cvxopt = True +except ImportError: + has_cvxopt = False + + +def test_equi(): + # Test the structure of the equivariant knockoff construction. + + np.random.seed(2342) + exog = np.random.normal(size=(10, 4)) + + exog1, exog2, sl = _design_knockoff_equi(exog) + + exoga = np.concatenate((exog1, exog2), axis=1) + + gmat = np.dot(exoga.T, exoga) + + cm1 = gmat[0:4, 0:4] + cm2 = gmat[4:, 4:] + cm3 = gmat[0:4, 4:] + + assert_allclose(cm1, cm2, rtol=1e-4, atol=1e-4) + assert_allclose(cm1 - cm3, np.diag(sl * np.ones(4)), rtol=1e-4, atol=1e-4) + + +def test_sdp(): + # Test the structure of the SDP knockoff construction. + + if not has_cvxopt: + return + + np.random.seed(2342) + exog = np.random.normal(size=(10, 4)) + + exog1, exog2, sl = _design_knockoff_sdp(exog) + + exoga = np.concatenate((exog1, exog2), axis=1) + + gmat = np.dot(exoga.T, exoga) + + cm1 = gmat[0:4, 0:4] + cm2 = gmat[4:, 4:] + cm3 = gmat[0:4, 4:] + + assert_allclose(cm1, cm2, rtol=1e-4, atol=1e-4) + assert_allclose(cm1 - cm3, np.diag(sl * np.ones(4)), rtol=1e-5, atol=1e-5) + + +@pytest.mark.parametrize("p", [49, 50]) +@pytest.mark.parametrize("tester", [ + kr.CorrelationEffects(), + kr.ForwardEffects(pursuit=False), + kr.ForwardEffects(pursuit=True), + kr.OLSEffects(), + kr.RegModelEffects(sm.OLS), + kr.RegModelEffects(sm.OLS, True, + fit_kws={"L1_wt": 0, "alpha": 1}), + ]) +@pytest.mark.parametrize("method", ["equi", "sdp"]) +def test_testers(p, tester, method): + + if method == "sdp" and not has_cvxopt: + return + + np.random.seed(2432) + n = 200 + + y = np.random.normal(size=n) + x = np.random.normal(size=(n, p)) + + kn = RegressionFDR(y, x, tester, design_method=method) + assert_equal(len(kn.stats), p) + assert_equal(len(kn.fdr), p) + kn.summary() # smoke test + + +@pytest.mark.slow +@pytest.mark.parametrize("method", ["equi", "sdp"]) +@pytest.mark.parametrize("tester,n,p,es", [ + [kr.CorrelationEffects(), 300, 100, 6], + [kr.ForwardEffects(pursuit=False), 300, 100, 3.5], + [kr.ForwardEffects(pursuit=True), 300, 100, 3.5], + [kr.OLSEffects(), 3000, 200, 3.5], +]) +def test_sim(method, tester, n, p, es): + # This function assesses the performance of the knockoff approach + # relative to its theoretical claims. + + if method == "sdp" and not has_cvxopt: + return + + np.random.seed(43234) + + # Number of variables with a non-zero coefficient + npos = 30 + + # Aim to control FDR to this level + target_fdr = 0.2 + + # Number of siumulation replications + nrep = 10 + + if method == "sdp" and not has_cvxopt: + return + + fdr, power = 0, 0 + for k in range(nrep): + + # Generate the predictors + x = np.random.normal(size=(n, p)) + x /= np.sqrt(np.sum(x*x, 0)) + + # Generate the response variable + coeff = es * (-1)**np.arange(npos) + y = np.dot(x[:, 0:npos], coeff) + np.random.normal(size=n) + + kn = RegressionFDR(y, x, tester) + + # Threshold to achieve the target FDR + tr = kn.threshold(target_fdr) + + # Number of selected coefficients + cp = np.sum(kn.stats >= tr) + + # Number of false positives + fp = np.sum(kn.stats[npos:] >= tr) + + # Observed FDR + fdr += fp / max(cp, 1) + + # Proportion of true positives that are detected + power += np.mean(kn.stats[0:npos] >= tr) + + # The estimated FDR may never exceed the target FDR + estimated_fdr = (np.sum(kn.stats <= -tr) / + (1 + np.sum(kn.stats >= tr))) + assert_equal(estimated_fdr < target_fdr, True) + + power /= nrep + fdr /= nrep + + # Check for reasonable power + assert_array_equal(power > 0.6, True) + + # Check that we are close to the target FDR + assert_array_equal(fdr < target_fdr + 0.05, True) diff --git a/statsmodels/stats/tests/test_lilliefors.py b/statsmodels/stats/tests/test_lilliefors.py new file mode 100644 index 0000000..04bb47c --- /dev/null +++ b/statsmodels/stats/tests/test_lilliefors.py @@ -0,0 +1,59 @@ + +import numpy as np +from numpy.testing import assert_almost_equal +from scipy import stats + +from statsmodels.stats._lilliefors import lilliefors + + +class TestLilliefors(object): + + def test_normal(self): + np.random.seed(3975) + x_n = stats.norm.rvs(size=500) + + # R function call: + # require(nortest) + # lillie.test(x_n) + + d_ks_norm, p_norm = lilliefors(x_n, dist='norm') + # shift normal distribution > 0 to exactly mirror R `KScorrect` test + # R `KScorrect` requires all values tested for exponential + # distribution to be > 0 + # R function call: + # require(KScorrect) + # LcKS(x_n+abs(min(x_n))+0.001, 'pexp') + + d_ks_exp, p_exp = lilliefors(x_n+np.abs(x_n.min()) + 0.001, dist='exp') + # assert normal + assert_almost_equal(d_ks_norm, 0.025957, decimal=3) + assert_almost_equal(p_norm, 0.2000, decimal=3) + # assert exp + assert_almost_equal(d_ks_exp, 0.3436007, decimal=3) + assert_almost_equal(p_exp, 0.01, decimal=3) + + def test_expon(self): + np.random.seed(3975) + x_e = stats.expon.rvs(size=500) + # R function call: + # require(nortest) + # lillie.test(x_n) + d_ks_norm, p_norm = lilliefors(x_e, dist='norm') + # R function call: + # require(KScorrect) + # LcKS(x_e, 'pexp') + d_ks_exp, p_exp = lilliefors(x_e, dist='exp') + # assert normal + assert_almost_equal(d_ks_norm, 0.15581, decimal=3) + assert_almost_equal(p_norm, 2.2e-16, decimal=3) + # assert exp + assert_almost_equal(d_ks_exp, 0.02763748, decimal=3) + assert_almost_equal(p_exp, 0.200, decimal=3) + + def test_pval_bounds(self): + x = np.arange(1, 10) + d_ks_n, p_n = lilliefors(x, dist='norm') + d_ks_e, p_e = lilliefors(x, dist='exp') + + assert_almost_equal(p_n, 0.200, decimal=7) + assert_almost_equal(p_e, 0.200, decimal=7) diff --git a/statsmodels/stats/tests/test_mediation.py b/statsmodels/stats/tests/test_mediation.py new file mode 100644 index 0000000..f855e40 --- /dev/null +++ b/statsmodels/stats/tests/test_mediation.py @@ -0,0 +1,214 @@ +import numpy as np +import statsmodels.api as sm +import os +from statsmodels.stats.mediation import Mediation +import pandas as pd +from numpy.testing import assert_allclose +import patsy +import pytest + +# Compare to mediation R package vignette +df = [['index', 'Estimate', 'Lower CI bound', 'Upper CI bound', 'P-value'], + ['ACME (control)', 0.085106, 0.029938, 0.141525, 0.00], + ['ACME (treated)', 0.085674, 0.031089, 0.147762, 0.00], + ['ADE (control)', 0.016938, -0.129157, 0.121945, 0.66], + ['ADE (treated)', 0.017506, -0.139649, 0.130030, 0.66], + ['Total effect', 0.102612, -0.036749, 0.227213, 0.20], + ['Prop. mediated (control)', 0.698070, -6.901715, 2.725978, 0.20], + ['Prop. mediated (treated)', 0.718648, -6.145419, 2.510750, 0.20], + ['ACME (average)', 0.085390, 0.030272, 0.144768, 0.00], + ['ADE (average)', 0.017222, -0.134465, 0.125987, 0.66], + ['Prop. mediated (average)', 0.710900, -6.523567, 2.618364, 0.20]] +framing_boot_4231 = pd.DataFrame(df[1:], columns=df[0]).set_index('index') + +# Compare to mediation R package vignette +df = [['index', 'Estimate', 'Lower CI bound', 'Upper CI bound', 'P-value'], + ['ACME (control)', 0.075529, 0.024995, 0.132408, 0.00], + ['ACME (treated)', 0.076348, 0.027475, 0.130138, 0.00], + ['ADE (control)', 0.021389, -0.094323, 0.139148, 0.68], + ['ADE (treated)', 0.022207, -0.101239, 0.145740, 0.68], + ['Total effect', 0.097736, -0.025384, 0.225386, 0.16], + ['Prop. mediated (control)', 0.656820, -3.664956, 4.845269, 0.16], + ['Prop. mediated (treated)', 0.687690, -3.449415, 4.469289, 0.16], + ['ACME (average)', 0.075938, 0.026109, 0.129450, 0.00], + ['ADE (average)', 0.021798, -0.097781, 0.142444, 0.68], + ['Prop. mediated (average)', 0.669659, -3.557185, 4.657279, 0.16]] +framing_para_4231 = pd.DataFrame(df[1:], columns=df[0]).set_index('index') + + + +df = [['index', 'Estimate', 'Lower CI bound', 'Upper CI bound', 'P-value'], + ['ACME (control)', 0.065989, 0.003366, 0.152261, 0.04], + ['ACME (treated)', 0.081424, 0.008888, 0.199853, 0.04], + ['ADE (control)', 0.240392, -0.026286, 0.470918, 0.08], + ['ADE (treated)', 0.255827, -0.030681, 0.491535, 0.08], + ['Total effect', 0.321816, 0.037238, 0.549530, 0.00], + ['Prop. mediated (control)', 0.196935, 0.015232, 1.864804, 0.04], + ['Prop. mediated (treated)', 0.248896, 0.032229, 1.738846, 0.04], + ['ACME (average)', 0.073707, 0.006883, 0.169923, 0.04], + ['ADE (average)', 0.248109, -0.028483, 0.478978, 0.08], + ['Prop. mediated (average)', 0.226799, 0.028865, 1.801825, 0.04]] +framing_moderated_4231 = pd.DataFrame(df[1:], columns=df[0]).set_index('index') + + +@pytest.mark.slow +def test_framing_example(): + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + data = pd.read_csv(os.path.join(cur_dir, 'results', "framing.csv")) + + outcome = np.asarray(data["cong_mesg"]) + outcome_exog = patsy.dmatrix("emo + treat + age + educ + gender + income", data, + return_type='dataframe') + probit = sm.families.links.probit + outcome_model = sm.GLM(outcome, outcome_exog, family=sm.families.Binomial(link=probit())) + + mediator = np.asarray(data["emo"]) + mediator_exog = patsy.dmatrix("treat + age + educ + gender + income", data, + return_type='dataframe') + mediator_model = sm.OLS(mediator, mediator_exog) + + tx_pos = [outcome_exog.columns.tolist().index("treat"), + mediator_exog.columns.tolist().index("treat")] + med_pos = outcome_exog.columns.tolist().index("emo") + + med = Mediation(outcome_model, mediator_model, tx_pos, med_pos, + outcome_fit_kwargs={'atol':1e-11}) + + np.random.seed(4231) + para_rslt = med.fit(method='parametric', n_rep=100) + diff = np.asarray(para_rslt.summary() - framing_para_4231) + assert_allclose(diff, 0, atol=1e-6) + + np.random.seed(4231) + boot_rslt = med.fit(method='boot', n_rep=100) + diff = np.asarray(boot_rslt.summary() - framing_boot_4231) + assert_allclose(diff, 0, atol=1e-6) + + + +def test_framing_example_moderator(): + # moderation without formulas, generally not useful but test anyway + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + data = pd.read_csv(os.path.join(cur_dir, 'results', "framing.csv")) + + outcome = np.asarray(data["cong_mesg"]) + outcome_exog = patsy.dmatrix("emo + treat + age + educ + gender + income", data, + return_type='dataframe') + probit = sm.families.links.probit + outcome_model = sm.GLM(outcome, outcome_exog, family=sm.families.Binomial(link=probit())) + + mediator = np.asarray(data["emo"]) + mediator_exog = patsy.dmatrix("treat + age + educ + gender + income", data, + return_type='dataframe') + mediator_model = sm.OLS(mediator, mediator_exog) + + tx_pos = [outcome_exog.columns.tolist().index("treat"), + mediator_exog.columns.tolist().index("treat")] + med_pos = outcome_exog.columns.tolist().index("emo") + + ix = (outcome_exog.columns.tolist().index("age"), + mediator_exog.columns.tolist().index("age")) + moderators = {ix : 20} + med = Mediation(outcome_model, mediator_model, tx_pos, med_pos, + moderators=moderators) + + # Just a smoke test + np.random.seed(4231) + med_rslt = med.fit(method='parametric', n_rep=100) + + +@pytest.mark.slow +def test_framing_example_formula(): + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + data = pd.read_csv(os.path.join(cur_dir, 'results', "framing.csv")) + + probit = sm.families.links.probit + outcome_model = sm.GLM.from_formula("cong_mesg ~ emo + treat + age + educ + gender + income", + data, family=sm.families.Binomial(link=probit())) + + mediator_model = sm.OLS.from_formula("emo ~ treat + age + educ + gender + income", data) + + med = Mediation(outcome_model, mediator_model, "treat", "emo", + outcome_fit_kwargs={'atol': 1e-11}) + + np.random.seed(4231) + med_rslt = med.fit(method='boot', n_rep=100) + diff = np.asarray(med_rslt.summary() - framing_boot_4231) + assert_allclose(diff, 0, atol=1e-6) + + np.random.seed(4231) + med_rslt = med.fit(method='parametric', n_rep=100) + diff = np.asarray(med_rslt.summary() - framing_para_4231) + assert_allclose(diff, 0, atol=1e-6) + + +@pytest.mark.slow +def test_framing_example_moderator_formula(): + + cur_dir = os.path.dirname(os.path.abspath(__file__)) + data = pd.read_csv(os.path.join(cur_dir, 'results', "framing.csv")) + + probit = sm.families.links.probit + outcome_model = sm.GLM.from_formula("cong_mesg ~ emo + treat*age + emo*age + educ + gender + income", + data, family=sm.families.Binomial(link=probit())) + + mediator_model = sm.OLS.from_formula("emo ~ treat*age + educ + gender + income", data) + + moderators = {"age" : 20} + med = Mediation(outcome_model, mediator_model, "treat", "emo", + moderators=moderators) + + np.random.seed(4231) + med_rslt = med.fit(method='parametric', n_rep=100) + diff = np.asarray(med_rslt.summary() - framing_moderated_4231) + assert_allclose(diff, 0, atol=1e-6) + + +def test_mixedlm(): + + np.random.seed(3424) + + n = 200 + + # The exposure (not time varying) + x = np.random.normal(size=n) + xv = np.outer(x, np.ones(3)) + + # The mediator (with random intercept) + mx = np.asarray([4., 4, 1]) + mx /= np.sqrt(np.sum(mx**2)) + med = mx[0] * np.outer(x, np.ones(3)) + med += mx[1] * np.outer(np.random.normal(size=n), np.ones(3)) + med += mx[2] * np.random.normal(size=(n, 3)) + + # The outcome (exposure and mediator effects) + ey = np.outer(x, np.r_[0, 0.5, 1]) + med + + # Random structure of the outcome (random intercept and slope) + ex = np.asarray([5., 2, 2]) + ex /= np.sqrt(np.sum(ex**2)) + e = ex[0] * np.outer(np.random.normal(size=n), np.ones(3)) + e += ex[1] * np.outer(np.random.normal(size=n), np.r_[-1, 0, 1]) + e += ex[2] * np.random.normal(size=(n, 3)) + y = ey + e + + # Group membership + idx = np.outer(np.arange(n), np.ones(3)) + + # Time + tim = np.outer(np.ones(n), np.r_[-1, 0, 1]) + + df = pd.DataFrame({"y": y.flatten(), "x": xv.flatten(), + "id": idx.flatten(), "time": tim.flatten(), + "med": med.flatten()}) + + mediator_model = sm.MixedLM.from_formula("med ~ x", groups="id", data=df) + outcome_model = sm.MixedLM.from_formula("y ~ med + x", groups="id", data=df) + me = Mediation(outcome_model, mediator_model, "x", "med") + mr = me.fit(n_rep=2) + st = mr.summary() + pm = st.loc["Prop. mediated (average)", "Estimate"] + assert_allclose(pm, 0.52, rtol=1e-2, atol=1e-2) diff --git a/statsmodels/stats/tests/test_moment_helpers.py b/statsmodels/stats/tests/test_moment_helpers.py new file mode 100644 index 0000000..1764fd4 --- /dev/null +++ b/statsmodels/stats/tests/test_moment_helpers.py @@ -0,0 +1,126 @@ +# -*- coding: utf-8 -*- +""" +Created on Sun Oct 16 17:33:56 2011 + +Author: Josef Perktold +""" +import numpy as np +import pytest +from numpy.testing import assert_almost_equal, assert_, assert_equal + +from statsmodels.stats import moment_helpers +from statsmodels.stats.moment_helpers import (cov2corr, mvsk2mc, mc2mvsk, + mnc2mc, mc2mnc, cum2mc, mc2cum, + mnc2cum) + + +def test_cov2corr(): + cov_a = np.ones((3, 3)) + np.diag(np.arange(1, 4) ** 2 - 1) + corr_a = np.array([[1, 1 / 2., 1 / 3.], + [1 / 2., 1, 1 / 2. / 3.], + [1 / 3., 1 / 2. / 3., 1]]) + + corr = cov2corr(cov_a) + assert_almost_equal(corr, corr_a, decimal=15) + + cov_mat = cov_a + corr_mat = cov2corr(cov_mat) + assert_(isinstance(corr_mat, np.ndarray)) + assert_equal(corr_mat, corr) + + cov_ma = np.ma.array(cov_a) + corr_ma = cov2corr(cov_ma) + assert_equal(corr_mat, corr) + + assert_(isinstance(corr_ma, np.ma.core.MaskedArray)) + + cov_ma2 = np.ma.array(cov_a, mask=[[False, True, False], + [True, False, False], + [False, False, False]]) + + corr_ma2 = cov2corr(cov_ma2) + assert_(np.ma.allclose(corr_ma, corr, atol=1e-15)) + assert_equal(corr_ma2.mask, cov_ma2.mask) + + +ms = [([0.0, 1, 0, 3], [0.0, 1.0, 0.0, 0.0], [0.0, 1.0, 0.0, 0.0]), + ([1.0, 1, 0, 3], [1.0, 1.0, 0.0, 0.0], [1.0, 0.0, -1.0, 6.0]), + ([0.0, 1, 1, 3], [0.0, 1.0, 1.0, 0.0], [0.0, 1.0, 1.0, 0.0]), + ([1.0, 1, 1, 3], [1.0, 1.0, 1.0, 0.0], [1.0, 0.0, 0.0, 2.0]), + ([1.0, 1, 1, 4], [1.0, 1.0, 1.0, 1.0], [1.0, 0.0, 0.0, 3.0]), + ([1.0, 2, 0, 3], [1.0, 2.0, 0.0, -9.0], [1.0, 1.0, -4.0, 9.0]), + ([0.0, 2, 1, 3], [0.0, 2.0, 1.0, -9.0], [0.0, 2.0, 1.0, -9.0]), + # neg.variance if mnc2 cumulant + assert_equal(mnc2cum(mc2mnc(mom[0])), mom[1]) + assert_equal(mnc2cum(mom[0]), mom[2]) + if len(mom) <= 4: + assert_equal(mc2cum(mom[0]), mom[1]) + + # test cumulant -> moment + assert_equal(cum2mc(mom[1]), mom[0]) + assert_equal(mc2mnc(cum2mc(mom[2])), mom[0]) + if len(mom) <= 4: + assert_equal(cum2mc(mom[1]), mom[0]) + + # round trip: mnc -> cum -> mc == mnc -> mc, + assert_equal(cum2mc(mnc2cum(mom[0])), mnc2mc(mom[0])) + + # round trip: mc -> mnc -> mc == mc, + assert_equal(mc2mnc(mnc2mc(mom[0])), mom[0]) + + if len(mom[0]) == 4: + # round trip: mc -> mvsk -> mc == mc + assert_equal(mvsk2mc(mc2mvsk(mom[0])), mom[0]) + + # round trip: mc -> mvsk -> mnc == mc -> mnc + # TODO: mvsk2mnc not defined + # assert_equal(mvsk2mnc(mc2mvsk(mom[0])), mc2mnc(mom[0])) + + +rs = np.random.RandomState(12345) +random_vals = np.random.randint(0, 100, 12).reshape(4, 3) +multidimension_test_vals = [np.array([[5., 10., 1.], + [5., 10., 1.], + [5., 10., 1.], + [80., 310., 4.]]), + random_vals] + + +@pytest.mark.parametrize('test_vals', multidimension_test_vals) +def test_multidimensional(test_vals): + assert_almost_equal(cum2mc(mnc2cum(mc2mnc(test_vals).T).T).T, test_vals) + assert_almost_equal(cum2mc(mc2cum(test_vals).T).T, test_vals) + assert_almost_equal(mvsk2mc(mc2mvsk(test_vals).T).T, test_vals) + + +@pytest.mark.parametrize('func_name', ['cum2mc', 'cum2mc', 'mc2cum', 'mc2mnc', + 'mc2mvsk', 'mnc2cum', 'mnc2mc', + 'mnc2mc', 'mvsk2mc', 'mvsk2mnc']) +def test_moment_conversion_types(func_name): + # written in 2009 + # TODO: why did I use list as return type? + func = getattr(moment_helpers, func_name) + + assert (isinstance(func([1.0, 1, 0, 3]), list) or + isinstance(func(np.array([1.0, 1, 0, 3])), tuple) or + isinstance(func(np.array([1.0, 1, 0, 3])), np.ndarray)) + + assert (isinstance(func(np.array([1.0, 1, 0, 3])), list) or + isinstance(func(np.array([1.0, 1, 0, 3])), tuple) or + isinstance(func(np.array([1.0, 1, 0, 3])), np.ndarray)) + + assert (isinstance(func(tuple([1.0, 1, 0, 3])), list) or + isinstance(func(np.array([1.0, 1, 0, 3])), tuple) or + isinstance(func(np.array([1.0, 1, 0, 3])), np.ndarray)) diff --git a/statsmodels/stats/tests/test_multi.py b/statsmodels/stats/tests/test_multi.py new file mode 100644 index 0000000..e966a2f --- /dev/null +++ b/statsmodels/stats/tests/test_multi.py @@ -0,0 +1,456 @@ +'''Tests for multipletests and fdr pvalue corrections + +Author : Josef Perktold + + +['b', 's', 'sh', 'hs', 'h', 'fdr_i', 'fdr_n', 'fdr_tsbh'] +are tested against R:multtest + +'hommel' is tested against R stats p_adjust (not available in multtest + +'fdr_gbs', 'fdr_2sbky' I did not find them in R, currently tested for + consistency only + +''' +import pytest +import numpy as np +from numpy.testing import (assert_almost_equal, assert_equal, + assert_allclose) + +from statsmodels.stats.multitest import (multipletests, fdrcorrection, + fdrcorrection_twostage, + NullDistribution, + local_fdr, multitest_methods_names) +from statsmodels.stats.multicomp import tukeyhsd +from scipy.stats.distributions import norm + +pval0 = np.array([ + 0.838541367553, 0.642193923795, 0.680845947633, + 0.967833824309, 0.71626938238, 0.177096952723, 5.23656777208e-005, + 0.0202732688798, 0.00028140506198, 0.0149877310796]) + +res_multtest1 = np.array([ + [5.2365677720800003e-05, 5.2365677720800005e-04, + 5.2365677720800005e-04, 5.2365677720800005e-04, + 5.2353339704891422e-04, 5.2353339704891422e-04, + 5.2365677720800005e-04, 1.5337740764175588e-03], + [2.8140506198000000e-04, 2.8140506197999998e-03, + 2.5326455578199999e-03, 2.5326455578199999e-03, + 2.8104897961789277e-03, 2.5297966317768816e-03, + 1.4070253098999999e-03, 4.1211324652269442e-03], + [1.4987731079600001e-02, 1.4987731079600000e-01, + 1.1990184863680001e-01, 1.1990184863680001e-01, + 1.4016246580579017e-01, 1.1379719679449507e-01, + 4.9959103598666670e-02, 1.4632862843720582e-01], + [2.0273268879800001e-02, 2.0273268879799999e-01, + 1.4191288215860001e-01, 1.4191288215860001e-01, + 1.8520270949069695e-01, 1.3356756197485375e-01, + 5.0683172199499998e-02, 1.4844940238274187e-01], + [1.7709695272300000e-01, 1.0000000000000000e+00, + 1.0000000000000000e+00, 9.6783382430900000e-01, + 8.5760763426056130e-01, 6.8947825122356643e-01, + 3.5419390544599999e-01, 1.0000000000000000e+00], + [6.4219392379499995e-01, 1.0000000000000000e+00, + 1.0000000000000000e+00, 9.6783382430900000e-01, + 9.9996560644133570e-01, 9.9413539782557070e-01, + 8.9533672797500008e-01, 1.0000000000000000e+00], + [6.8084594763299999e-01, 1.0000000000000000e+00, + 1.0000000000000000e+00, 9.6783382430900000e-01, + 9.9998903512635740e-01, 9.9413539782557070e-01, + 8.9533672797500008e-01, 1.0000000000000000e+00], + [7.1626938238000004e-01, 1.0000000000000000e+00, + 1.0000000000000000e+00, 9.6783382430900000e-01, + 9.9999661886871472e-01, 9.9413539782557070e-01, + 8.9533672797500008e-01, 1.0000000000000000e+00], + [8.3854136755300002e-01, 1.0000000000000000e+00, + 1.0000000000000000e+00, 9.6783382430900000e-01, + 9.9999998796038225e-01, 9.9413539782557070e-01, + 9.3171263061444454e-01, 1.0000000000000000e+00], + [9.6783382430900000e-01, 1.0000000000000000e+00, + 1.0000000000000000e+00, 9.6783382430900000e-01, + 9.9999999999999878e-01, 9.9413539782557070e-01, + 9.6783382430900000e-01, 1.0000000000000000e+00]]) + + +res_multtest2_columns = [ + 'rawp', 'Bonferroni', 'Holm', 'Hochberg', 'SidakSS', 'SidakSD', + 'BH', 'BY', 'ABH', 'TSBH_0.05'] + +rmethods = { + 'rawp': (0, 'pval'), + 'Bonferroni': (1, 'b'), + 'Holm': (2, 'h'), + 'Hochberg': (3, 'sh'), + 'SidakSS': (4, 's'), + 'SidakSD': (5, 'hs'), + 'BH': (6, 'fdr_i'), + 'BY': (7, 'fdr_n'), + 'TSBH_0.05': (9, 'fdr_tsbh') +} + +NA = np.nan +# all rejections, except for Bonferroni and Sidak +res_multtest2 = np.array([ + 0.002, 0.004, 0.006, 0.008, 0.01, 0.012, 0.012, 0.024, 0.036, 0.048, + 0.06, 0.072, 0.012, 0.02, 0.024, 0.024, 0.024, 0.024, 0.012, 0.012, + 0.012, 0.012, 0.012, 0.012, 0.01194015976019192, 0.02376127616613988, + 0.03546430060660932, 0.04705017875634587, 0.058519850599, + 0.06987425045000606, 0.01194015976019192, 0.01984063872102404, + 0.02378486270400004, 0.023808512, 0.023808512, 0.023808512, 0.012, + 0.012, 0.012, 0.012, 0.012, 0.012, 0.0294, 0.0294, 0.0294, 0.0294, + 0.0294, 0.0294, NA, NA, NA, NA, NA, NA, 0, 0, 0, 0, 0, 0 + ]).reshape(6, 10, order='F') + +res_multtest3 = np.array([ + 0.001, 0.002, 0.003, 0.004, 0.005, 0.05, 0.06, 0.07, 0.08, 0.09, 0.01, + 0.02, 0.03, 0.04, 0.05, 0.5, 0.6, 0.7, 0.8, 0.9, 0.01, 0.018, 0.024, + 0.028, 0.03, 0.25, 0.25, 0.25, 0.25, 0.25, 0.01, 0.018, 0.024, 0.028, + 0.03, 0.09, 0.09, 0.09, 0.09, 0.09, 0.00995511979025177, + 0.01982095664805061, 0.02959822305108317, 0.03928762649718986, + 0.04888986953422814, 0.4012630607616213, 0.4613848859051006, + 0.5160176928207072, 0.5656115457763677, 0.6105838818818925, + 0.00995511979025177, 0.0178566699880266, 0.02374950634358763, + 0.02766623106147537, 0.02962749064373438, 0.2262190625000001, + 0.2262190625000001, 0.2262190625000001, 0.2262190625000001, + 0.2262190625000001, 0.01, 0.01, 0.01, 0.01, 0.01, 0.08333333333333334, + 0.0857142857142857, 0.0875, 0.0888888888888889, 0.09, + 0.02928968253968254, 0.02928968253968254, 0.02928968253968254, + 0.02928968253968254, 0.02928968253968254, 0.2440806878306878, + 0.2510544217687075, 0.2562847222222222, 0.2603527336860670, + 0.2636071428571428, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, 0.005, + 0.005, 0.005, 0.005, 0.005, 0.04166666666666667, 0.04285714285714286, + 0.04375, 0.04444444444444445, 0.045 + ]).reshape(10, 10, order='F') + +res0_large = np.array([ + 0.00031612, 0.0003965, 0.00048442, 0.00051932, 0.00101436, 0.00121506, + 0.0014516, 0.00265684, 0.00430043, 0.01743686, 0.02080285, 0.02785414, + 0.0327198, 0.03494679, 0.04206808, 0.08067095, 0.23882767, 0.28352304, + 0.36140401, 0.43565145, 0.44866768, 0.45368782, 0.48282088, + 0.49223781, 0.55451638, 0.6207473, 0.71847853, 0.72424145, 0.85950263, + 0.89032747, 0.0094836, 0.011895, 0.0145326, 0.0155796, 0.0304308, + 0.0364518, 0.043548, 0.0797052, 0.1290129, 0.5231058, 0.6240855, + 0.8356242, 0.981594, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 0.0094836, 0.0114985, 0.01356376, 0.01402164, 0.02637336, + 0.0303765, 0.0348384, 0.06110732, 0.09460946, 0.36617406, 0.416057, + 0.52922866, 0.5889564, 0.59409543, 0.67308928, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 0.0094836, 0.0114985, 0.01356376, 0.01402164, + 0.02637336, 0.0303765, 0.0348384, 0.06110732, 0.09460946, 0.36617406, + 0.416057, 0.52922866, 0.5889564, 0.59409543, 0.67308928, 0.89032747, + 0.89032747, 0.89032747, 0.89032747, 0.89032747, 0.89032747, + 0.89032747, 0.89032747, 0.89032747, 0.89032747, 0.89032747, + 0.89032747, 0.89032747, 0.89032747, 0.89032747, 0.009440257627368331, + 0.01182686507401931, 0.01443098172617119, 0.01546285007478554, + 0.02998742566629453, 0.03581680249125385, 0.04264369065603335, + 0.0767094173291795, 0.1212818694859857, 0.410051586220387, + 0.4677640287633493, 0.5715077903157826, 0.631388450393325, + 0.656016359012282, 0.724552174001554, 0.919808283456286, + 0.999721715014484, 0.9999547032674126, 0.9999985652190126, + 0.999999964809746, 0.999999982525548, 0.999999986719131, + 0.999999997434160, 0.999999998521536, 0.999999999970829, + 0.999999999999767, 1, 1, 1, 1, 0.009440257627368331, + 0.01143489901147732, 0.0134754287611275, 0.01392738605848343, + 0.0260416568490015, 0.02993768724817902, 0.0342629726119179, + 0.0593542206208364, 0.09045742964699988, 0.308853956167216, + 0.343245865702423, 0.4153483370083637, 0.4505333180190900, + 0.453775200643535, 0.497247406680671, 0.71681858015803, + 0.978083969553718, 0.986889206426321, 0.995400461639735, + 0.9981506396214986, 0.9981506396214986, 0.9981506396214986, + 0.9981506396214986, 0.9981506396214986, 0.9981506396214986, + 0.9981506396214986, 0.9981506396214986, 0.9981506396214986, + 0.9981506396214986, 0.9981506396214986, 0.0038949, 0.0038949, + 0.0038949, 0.0038949, 0.0060753, 0.0060753, 0.006221142857142857, + 0.00996315, 0.01433476666666667, 0.05231058, 0.05673504545454545, + 0.06963535, 0.07488597857142856, 0.07488597857142856, 0.08413616, + 0.15125803125, 0.421460594117647, 0.4725384, 0.570637910526316, + 0.6152972625, 0.6152972625, 0.6152972625, 0.6152972625, 0.6152972625, + 0.665419656, 0.7162468846153845, 0.775972982142857, 0.775972982142857, + 0.889140651724138, 0.89032747, 0.01556007537622183, + 0.01556007537622183, 0.01556007537622183, 0.01556007537622183, + 0.02427074531648065, 0.02427074531648065, 0.02485338565390302, + 0.0398026560334295, 0.0572672083580799, 0.2089800939109816, + 0.2266557764630925, 0.2781923271071372, 0.2991685206792373, + 0.2991685206792373, 0.336122876445059, 0.6042738882921044, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.00220711, 0.00220711, 0.00220711, + 0.00220711, 0.00344267, 0.00344267, 0.003525314285714285, 0.005645785, + 0.00812303444444444, 0.029642662, 0.0321498590909091, + 0.03946003166666667, 0.04243538785714285, 0.04243538785714285, + 0.0476771573333333, 0.085712884375, 0.23882767, 0.26777176, + 0.323361482631579, 0.34866844875, 0.34866844875, 0.34866844875, + 0.34866844875, 0.34866844875, 0.3770711384, 0.4058732346153846, + 0.4397180232142857, 0.4397180232142857, 0.503846369310345, + 0.504518899666667, 0.00272643, 0.00272643, 0.00272643, 0.00272643, + 0.00425271, 0.00425271, 0.0043548, 0.006974205, 0.01003433666666667, + 0.036617406, 0.03971453181818182, 0.048744745, 0.052420185, + 0.052420185, 0.058895312, 0.105880621875, 0.295022415882353, + 0.33077688, 0.399446537368421, 0.43070808375, 0.43070808375, + 0.43070808375, 0.43070808375, 0.43070808375, 0.4657937592, + 0.5013728192307692, 0.5431810875, 0.5431810875, 0.622398456206897, + 0.623229229 + ]).reshape(30, 10, order='F') + + +class CheckMultiTestsMixin(object): + + @pytest.mark.parametrize('key,val', sorted(rmethods.items())) + def test_multi_pvalcorrection_rmethods(self, key, val): + # test against R package multtest mt.rawp2adjp + + res_multtest = self.res2 + pval0 = res_multtest[:, 0] + + if val[1] in self.methods: + reject, pvalscorr = multipletests(pval0, + alpha=self.alpha, + method=val[1])[:2] + assert_almost_equal(pvalscorr, res_multtest[:, val[0]], 15) + assert_equal(reject, pvalscorr <= self.alpha) + + def test_multi_pvalcorrection(self): + # test against R package multtest mt.rawp2adjp + + res_multtest = self.res2 + pval0 = res_multtest[:, 0] + + pvalscorr = np.sort(fdrcorrection(pval0, method='n')[1]) + assert_almost_equal(pvalscorr, res_multtest[:, 7], 15) + pvalscorr = np.sort(fdrcorrection(pval0, method='i')[1]) + assert_almost_equal(pvalscorr, res_multtest[:, 6], 15) + + +class TestMultiTests1(CheckMultiTestsMixin): + @classmethod + def setup_class(cls): + cls.methods = ['b', 's', 'sh', 'hs', 'h', 'fdr_i', 'fdr_n'] + cls.alpha = 0.1 + cls.res2 = res_multtest1 + + +class TestMultiTests2(CheckMultiTestsMixin): + # case: all hypothesis rejected (except 'b' and 's' + @classmethod + def setup_class(cls): + cls.methods = ['b', 's', 'sh', 'hs', 'h', 'fdr_i', 'fdr_n'] + cls.alpha = 0.05 + cls.res2 = res_multtest2 + + +class TestMultiTests3(CheckMultiTestsMixin): + @classmethod + def setup_class(cls): + cls.methods = ['b', 's', 'sh', 'hs', 'h', 'fdr_i', 'fdr_n', + 'fdr_tsbh'] + cls.alpha = 0.05 + cls.res2 = res0_large + + +class TestMultiTests4(CheckMultiTestsMixin): + # in simulations, all two stage fdr, fdr_tsbky, fdr_tsbh, fdr_gbs, have in + # some cases (cases with large Alternative) an FDR that looks too large + # this is the first case #rejected = 12, DGP : has 10 false + @classmethod + def setup_class(cls): + cls.methods = ['b', 's', 'sh', 'hs', 'h', 'fdr_i', 'fdr_n', + 'fdr_tsbh'] + cls.alpha = 0.05 + cls.res2 = res_multtest3 + + +@pytest.mark.parametrize('alpha', [0.01, 0.05, 0.1]) +@pytest.mark.parametrize('method', ['b', 's', 'sh', 'hs', 'h', 'hommel', + 'fdr_i', 'fdr_n', 'fdr_tsbky', + 'fdr_tsbh', 'fdr_gbs']) +@pytest.mark.parametrize('ii', list(range(11))) +def test_pvalcorrection_reject(alpha, method, ii): + # consistency test for reject boolean and pvalscorr + + pval1 = np.hstack((np.linspace(0.0001, 0.0100, ii), + np.linspace(0.05001, 0.11, 10 - ii))) + # using .05001 instead of 0.05 to avoid edge case issue #768 + reject, pvalscorr = multipletests(pval1, alpha=alpha, + method=method)[:2] + + msg = 'case %s %3.2f rejected:%d\npval_raw=%r\npvalscorr=%r' % ( + method, alpha, reject.sum(), pval1, pvalscorr) + assert_equal(reject, pvalscorr <= alpha, err_msg=msg) + + +def test_hommel(): + # tested against R stats p_adjust(pval0, method='hommel') + pval0 = np.array([ + 0.00116, 0.00924, 0.01075, 0.01437, 0.01784, 0.01918, + 0.02751, 0.02871, 0.03054, 0.03246, 0.04259, 0.06879, + 0.0691, 0.08081, 0.08593, 0.08993, 0.09386, 0.09412, + 0.09718, 0.09758, 0.09781, 0.09788, 0.13282, 0.20191, + 0.21757, 0.24031, 0.26061, 0.26762, 0.29474, 0.32901, + 0.41386, 0.51479, 0.52461, 0.53389, 0.56276, 0.62967, + 0.72178, 0.73403, 0.87182, 0.95384]) + + result_ho = np.array([ + 0.0464, 0.25872, 0.29025, + 0.3495714285714286, 0.41032, 0.44114, + 0.57771, 0.60291, 0.618954, + 0.6492, 0.7402725000000001, 0.86749, + 0.86749, 0.8889100000000001, 0.8971477777777778, + 0.8993, 0.9175374999999999, 0.9175374999999999, + 0.9175374999999999, 0.9175374999999999, 0.9175374999999999, + 0.9175374999999999, 0.95384, 0.9538400000000001, + 0.9538400000000001, 0.9538400000000001, 0.9538400000000001, + 0.9538400000000001, 0.9538400000000001, 0.9538400000000001, + 0.9538400000000001, 0.9538400000000001, 0.9538400000000001, + 0.9538400000000001, 0.9538400000000001, 0.9538400000000001, + 0.9538400000000001, 0.9538400000000001, 0.9538400000000001, + 0.9538400000000001]) + + rej, pvalscorr, _, _ = multipletests(pval0, alpha=0.1, method='ho') + assert_almost_equal(pvalscorr, result_ho, 15) + assert_equal(rej, result_ho < 0.1) + + +def test_fdr_bky(): + # test for fdrcorrection_twostage + # example from BKY + pvals = [ + 0.0001, 0.0004, 0.0019, 0.0095, 0.0201, 0.0278, 0.0298, 0.0344, 0.0459, + 0.3240, 0.4262, 0.5719, 0.6528, 0.7590, 1.000] + + # no test for corrected p-values, but they are inherited + # same number of rejection as in BKY paper: + # single step-up:4, two-stage:8, iterated two-step:9 + # also alpha_star is the same as theirs for TST + + # alpha_star for stage 2 + res_tst = fdrcorrection_twostage(pvals, alpha=0.05, iter=False) + assert_almost_equal([0.047619, 0.0649], res_tst[-1][:2], 3) + assert_equal(8, res_tst[0].sum()) + + +@pytest.mark.parametrize('method', sorted(multitest_methods_names)) +def test_issorted(method): + # test that is_sorted keyword works correctly + # the fdrcorrection functions are tested indirectly + + # data generated as random numbers np.random.beta(0.2, 0.5, size=10) + pvals = np.array([31, 9958111, 7430818, 8653643, 9892855, 876, 2651691, + 145836, 9931, 6174747]) * 1e-7 + sortind = np.argsort(pvals) + sortrevind = sortind.argsort() + pvals_sorted = pvals[sortind] + + res1 = multipletests(pvals, method=method, is_sorted=False) + res2 = multipletests(pvals_sorted, method=method, is_sorted=True) + assert_equal(res2[0][sortrevind], res1[0]) + assert_allclose(res2[0][sortrevind], res1[0], rtol=1e-10) + + +def test_tukeyhsd(): + # example multicomp in R p 83 + + res = '''\ + pair diff lwr upr p adj + P-M 8.150000 -10.037586 26.3375861 0.670063958 + S-M -3.258333 -21.445919 14.9292527 0.982419709 + T-M 23.808333 5.620747 41.9959194 0.006783701 + V-M 4.791667 -13.395919 22.9792527 0.931020848 + S-P -11.408333 -29.595919 6.7792527 0.360680099 + T-P 15.658333 -2.529253 33.8459194 0.113221634 + V-P -3.358333 -21.545919 14.8292527 0.980350080 + T-S 27.066667 8.879081 45.2542527 0.002027122 + V-S 8.050000 -10.137586 26.2375861 0.679824487 + V-T -19.016667 -37.204253 -0.8290806 0.037710044 + ''' + + res = np.array([ + [8.150000, -10.037586, 26.3375861, 0.670063958], + [-3.258333, -21.445919, 14.9292527, 0.982419709], + [23.808333, 5.620747, 41.9959194, 0.006783701], + [4.791667, -13.395919, 22.9792527, 0.931020848], + [-11.408333, -29.595919, 6.7792527, 0.360680099], + [15.658333, -2.529253, 33.8459194, 0.113221634], + [-3.358333, -21.545919, 14.8292527, 0.980350080], + [27.066667, 8.879081, 45.2542527, 0.002027122], + [8.050000, -10.137586, 26.2375861, 0.679824487], + [-19.016667, -37.204253, -0.8290806, 0.037710044]]) + + m_r = [94.39167, 102.54167, 91.13333, 118.20000, 99.18333] + myres = tukeyhsd(m_r, 6, 110.8, alpha=0.05, df=4) + pairs, reject, meandiffs, std_pairs, confint, q_crit = myres[:6] + assert_almost_equal(meandiffs, res[:, 0], decimal=5) + assert_almost_equal(confint, res[:, 1:3], decimal=2) + assert_equal(reject, res[:, 3] < 0.05) + + # check p-values (divergence of high values is expected) + small_pvals_idx = [2, 5, 7, 9] + assert_allclose(myres[8][small_pvals_idx], res[small_pvals_idx, 3], + rtol=1e-3) + + +def test_local_fdr(): + + # Create a mixed population of Z-scores: 1000 standard normal and + # 20 uniformly distributed between 3 and 4. + grid = np.linspace(0.001, 0.999, 1000) + z0 = norm.ppf(grid) + z1 = np.linspace(3, 4, 20) + zs = np.concatenate((z0, z1)) + + # Exact local FDR for U(3, 4) component. + f1 = np.exp(-z1**2 / 2) / np.sqrt(2*np.pi) + r = len(z1) / float(len(z0) + len(z1)) + f1 /= (1 - r) * f1 + r + + fdr = local_fdr(zs) + fdr1 = fdr[len(z0):] + + assert_allclose(f1, fdr1, rtol=0.05, atol=0.1) + + +def test_null_distribution(): + + # Create a mixed population of Z-scores: 1000 standard normal and + # 20 uniformly distributed between 3 and 4. + grid = np.linspace(0.001, 0.999, 1000) + z0 = norm.ppf(grid) + z1 = np.linspace(3, 4, 20) + zs = np.concatenate((z0, z1)) + emp_null = NullDistribution(zs, estimate_null_proportion=True) + + assert_allclose(emp_null.mean, 0, atol=1e-5, rtol=1e-5) + assert_allclose(emp_null.sd, 1, atol=1e-5, rtol=1e-2) + assert_allclose(emp_null.null_proportion, 0.98, atol=1e-5, rtol=1e-2) + + # consistency check + assert_allclose(emp_null.pdf(np.r_[-1, 0, 1]), + norm.pdf(np.r_[-1, 0, 1], + loc=emp_null.mean, scale=emp_null.sd), + rtol=1e-13) + + +@pytest.mark.parametrize('estimate_prob', [True, False]) +@pytest.mark.parametrize('estimate_scale', [True, False]) +@pytest.mark.parametrize('estimate_mean', [True, False]) +def test_null_constrained(estimate_mean, estimate_scale, estimate_prob): + + # Create a mixed population of Z-scores: 1000 standard normal and + # 20 uniformly distributed between 3 and 4. + grid = np.linspace(0.001, 0.999, 1000) + z0 = norm.ppf(grid) + z1 = np.linspace(3, 4, 20) + zs = np.concatenate((z0, z1)) + + emp_null = NullDistribution(zs, estimate_mean=estimate_mean, + estimate_scale=estimate_scale, + estimate_null_proportion=estimate_prob) + + if not estimate_mean: + assert_allclose(emp_null.mean, 0, atol=1e-5, rtol=1e-5) + if not estimate_scale: + assert_allclose(emp_null.sd, 1, atol=1e-5, rtol=1e-2) + if not estimate_prob: + assert_allclose(emp_null.null_proportion, 1, atol=1e-5, rtol=1e-2) + + # consistency check + assert_allclose(emp_null.pdf(np.r_[-1, 0, 1]), + norm.pdf(np.r_[-1, 0, 1], loc=emp_null.mean, + scale=emp_null.sd), + rtol=1e-13) diff --git a/statsmodels/stats/tests/test_nonparametric.py b/statsmodels/stats/tests/test_nonparametric.py new file mode 100644 index 0000000..f6072f4 --- /dev/null +++ b/statsmodels/stats/tests/test_nonparametric.py @@ -0,0 +1,276 @@ +# -*- coding: utf-8 -*- +""" + +Created on Fri Jul 05 14:05:24 2013 + +Author: Josef Perktold +""" +from statsmodels.compat.python import lzip, range +import numpy as np +from numpy.testing import assert_allclose, assert_almost_equal +import pytest + +from statsmodels.stats.contingency_tables import mcnemar, cochrans_q, SquareTable +from statsmodels.sandbox.stats.runs import (Runs, + runstest_1samp, runstest_2samp) +from statsmodels.sandbox.stats.runs import mcnemar as sbmcnemar + + +def _expand_table(table): + '''expand a 2 by 2 contingency table to observations + ''' + return np.repeat([[1, 1], [1, 0], [0, 1], [0, 0]], table.ravel(), axis=0) + + +def test_mcnemar_exact(): + f_obs1 = np.array([[101, 121], [59, 33]]) + f_obs2 = np.array([[101, 70], [59, 33]]) + f_obs3 = np.array([[101, 80], [59, 33]]) + f_obs4 = np.array([[101, 30], [60, 33]]) + f_obs5 = np.array([[101, 10], [30, 33]]) + f_obs6 = np.array([[101, 10], [10, 33]]) + + #vassar college online computation + res1 = 0.000004 + res2 = 0.378688 + res3 = 0.089452 + res4 = 0.00206 + res5 = 0.002221 + res6 = 1. + stat = mcnemar(f_obs1, exact=True) + assert_almost_equal([stat.statistic, stat.pvalue], [59, res1], decimal=6) + stat = mcnemar(f_obs2, exact=True) + assert_almost_equal([stat.statistic, stat.pvalue], [59, res2], decimal=6) + stat = mcnemar(f_obs3, exact=True) + assert_almost_equal([stat.statistic, stat.pvalue], [59, res3], decimal=6) + stat = mcnemar(f_obs4, exact=True) + assert_almost_equal([stat.statistic, stat.pvalue], [30, res4], decimal=6) + stat = mcnemar(f_obs5, exact=True) + assert_almost_equal([stat.statistic, stat.pvalue], [10, res5], decimal=6) + stat = mcnemar(f_obs6, exact=True) + assert_almost_equal([stat.statistic, stat.pvalue], [10, res6], decimal=6) + + +def test_mcnemar_chisquare(): + f_obs1 = np.array([[101, 121], [59, 33]]) + f_obs2 = np.array([[101, 70], [59, 33]]) + f_obs3 = np.array([[101, 80], [59, 33]]) + + #> mcn = mcnemar.test(matrix(c(101, 121, 59, 33),nrow=2)) + res1 = [2.067222e01, 5.450095e-06] + res2 = [0.7751938, 0.3786151] + res3 = [2.87769784, 0.08981434] + + stat = mcnemar(f_obs1, exact=False) + assert_allclose([stat.statistic, stat.pvalue], res1, rtol=1e-6) + stat = mcnemar(f_obs2, exact=False) + assert_allclose([stat.statistic, stat.pvalue], res2, rtol=1e-6) + stat = mcnemar(f_obs3, exact=False) + assert_allclose([stat.statistic, stat.pvalue], res3, rtol=1e-6) + + # test correction = False + res1 = [2.135556e01, 3.815136e-06] + res2 = [0.9379845, 0.3327967] + res3 = [3.17266187, 0.07488031] + + res = mcnemar(f_obs1, exact=False, correction=False) + assert_allclose([res.statistic, res.pvalue], res1, rtol=1e-6) + res = mcnemar(f_obs2, exact=False, correction=False) + assert_allclose([res.statistic, res.pvalue], res2, rtol=1e-6) + res = mcnemar(f_obs3, exact=False, correction=False) + assert_allclose([res.statistic, res.pvalue], res3, rtol=1e-6) + + +def test_mcnemar_vectorized(reset_randomstate): + ttk = np.random.randint(5,15, size=(2,2,3)) + with pytest.deprecated_call(): + res = sbmcnemar(ttk, exact=False) + with pytest.deprecated_call(): + res1 = lzip(*[sbmcnemar(ttk[:, :, i], exact=False) for i in range(3)]) + assert_allclose(res, res1, rtol=1e-13) + + with pytest.deprecated_call(): + res = sbmcnemar(ttk, exact=False, correction=False) + with pytest.deprecated_call(): + res1 = lzip(*[sbmcnemar(ttk[:, :, i], exact=False, correction=False) + for i in range(3)]) + assert_allclose(res, res1, rtol=1e-13) + + with pytest.deprecated_call(): + res = sbmcnemar(ttk, exact=True) + with pytest.deprecated_call(): + res1 = lzip(*[sbmcnemar(ttk[:, :, i], exact=True) for i in range(3)]) + assert_allclose(res, res1, rtol=1e-13) + + +def test_symmetry_bowker(): + table = np.array([0, 3, 4, 4, 2, 4, 1, 2, 4, 3, 5, 3, 0, 0, 2, 2, 3, 0, 0, + 1, 5, 5, 5, 5, 5]).reshape(5, 5) + + res = SquareTable(table, shift_zeros=False).symmetry() + mcnemar5_1 = dict(statistic=7.001587, pvalue=0.7252951, parameters=(10,), + distr='chi2') + assert_allclose([res.statistic, res.pvalue], + [mcnemar5_1['statistic'], mcnemar5_1['pvalue']], + rtol=1e-7) + + res = SquareTable(1 + table, shift_zeros=False).symmetry() + mcnemar5_1b = dict(statistic=5.355988, pvalue=0.8661652, parameters=(10,), + distr='chi2') + assert_allclose([res.statistic, res.pvalue], + [mcnemar5_1b['statistic'], mcnemar5_1b['pvalue']], + rtol=1e-7) + + table = np.array([2, 2, 3, 6, 2, 3, 4, 3, 6, 6, 6, 7, 1, 9, 6, 7, 1, 1, 9, + 8, 0, 1, 8, 9, 4]).reshape(5, 5) + + res = SquareTable(table, shift_zeros=False).symmetry() + mcnemar5_2 = dict(statistic=18.76432, pvalue=0.04336035, parameters=(10,), + distr='chi2') + assert_allclose([res.statistic, res.pvalue], + [mcnemar5_2['statistic'], mcnemar5_2['pvalue']], + rtol=1.5e-7) + + res = SquareTable(1 + table, shift_zeros=False).symmetry() + mcnemar5_2b = dict(statistic=14.55256, pvalue=0.1492461, parameters=(10,), + distr='chi2') + assert_allclose([res.statistic, res.pvalue], + [mcnemar5_2b['statistic'], mcnemar5_2b['pvalue']], + rtol=1e-7) + + +def test_cochransq(): + #example from dataplot docs, Conovover p. 253 + #http://www.itl.nist.gov/div898/software/dataplot/refman1/auxillar/cochran.htm + x = np.array([[1, 1, 1], + [1, 1, 1], + [0, 1, 0], + [1, 1, 0], + [0, 0, 0], + [1, 1, 1], + [1, 1, 1], + [1, 1, 0], + [0, 0, 1], + [0, 1, 0], + [1, 1, 1], + [1, 1, 1]]) + res_qstat = 2.8 + res_pvalue = 0.246597 + res = cochrans_q(x) + assert_almost_equal([res.statistic, res.pvalue], [res_qstat, res_pvalue]) + + #equivalence of mcnemar and cochranq for 2 samples + a,b = x[:,:2].T + res = cochrans_q(x[:, :2]) + with pytest.deprecated_call(): + assert_almost_equal(sbmcnemar(a, b, exact=False, correction=False), + [res.statistic, res.pvalue]) + + +def test_cochransq2(): + # from an example found on web, verifies 13.286 + data = np.array(''' + 0 0 0 1 + 0 0 0 1 + 0 0 0 1 + 1 1 1 1 + 1 0 0 1 + 0 1 0 1 + 1 0 0 1 + 0 0 0 1 + 0 1 0 0 + 0 0 0 0 + 1 0 0 1 + 0 0 1 1'''.split(), int).reshape(-1, 4) + + res = cochrans_q(data) + assert_allclose([res.statistic, res.pvalue], [13.2857143, 0.00405776], rtol=1e-6) + + +def test_cochransq3(): + # another example compared to SAS + # in frequency weight format + dt = [('A', 'S1'), ('B', 'S1'), ('C', 'S1'), ('count', int)] + dta = np.array([('F', 'F', 'F', 6), + ('U', 'F', 'F', 2), + ('F', 'F', 'U', 16), + ('U', 'F', 'U', 4), + ('F', 'U', 'F', 2), + ('U', 'U', 'F', 6), + ('F', 'U', 'U', 4), + ('U', 'U', 'U', 6)], dt) + + cases = np.array([[0, 0, 0], + [1, 0, 0], + [0, 0, 1], + [1, 0, 1], + [0, 1, 0], + [1, 1, 0], + [0, 1, 1], + [1, 1, 1]]) + count = np.array([ 6, 2, 16, 4, 2, 6, 4, 6]) + data = np.repeat(cases, count, 0) + + res = cochrans_q(data) + assert_allclose([res.statistic, res.pvalue], [8.4706, 0.0145], atol=5e-5) + +def test_runstest(reset_randomstate): + #comparison numbers from R, tseries, runs.test + #currently only 2-sided used + x = np.array([1, 1, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1]) + + z_twosided = 1.386750 + pvalue_twosided = 0.1655179 + + z_greater = 1.386750 + pvalue_greater = 0.08275893 + + z_less = 1.386750 + pvalue_less = 0.917241 + + #print Runs(x).runs_test(correction=False) + assert_almost_equal(np.array(Runs(x).runs_test(correction=False)), + [z_twosided, pvalue_twosided], decimal=6) + + + # compare with runstest_1samp which should have same indicator + assert_almost_equal(runstest_1samp(x, correction=False), + [z_twosided, pvalue_twosided], decimal=6) + + x2 = x - 0.5 + np.random.uniform(-0.1, 0.1, size=len(x)) + assert_almost_equal(runstest_1samp(x2, cutoff=0, correction=False), + [z_twosided, pvalue_twosided], decimal=6) + + assert_almost_equal(runstest_1samp(x2, cutoff='mean', correction=False), + [z_twosided, pvalue_twosided], decimal=6) + assert_almost_equal(runstest_1samp(x2, cutoff=x2.mean(), correction=False), + [z_twosided, pvalue_twosided], decimal=6) + + # check median + assert_almost_equal(runstest_1samp(x2, cutoff='median', correction=False), + runstest_1samp(x2, cutoff=np.median(x2), correction=False), + decimal=6) + + +def test_runstest_2sample(): + # regression test, checked with MonteCarlo and looks reasonable + + x = [31.8, 32.8, 39.2, 36, 30, 34.5, 37.4] + y = [35.5, 27.6, 21.3, 24.8, 36.7, 30] + y[-1] += 1e-6 #avoid tie that creates warning + groups = np.concatenate((np.zeros(len(x)), np.ones(len(y)))) + + res = runstest_2samp(x, y) + res1 = (0.022428065200812752, 0.98210649318649212) + assert_allclose(res, res1, rtol=1e-6) + + # check as stacked array + res2 = runstest_2samp(x, y) + assert_allclose(res2, res, rtol=1e-6) + + xy = np.concatenate((x, y)) + res_1s = runstest_1samp(xy) + assert_allclose(res_1s, res1, rtol=1e-6) + # check cutoff + res2_1s = runstest_1samp(xy, xy.mean()) + assert_allclose(res2_1s, res_1s, rtol=1e-6) diff --git a/statsmodels/stats/tests/test_pairwise.py b/statsmodels/stats/tests/test_pairwise.py new file mode 100644 index 0000000..eeee58d --- /dev/null +++ b/statsmodels/stats/tests/test_pairwise.py @@ -0,0 +1,364 @@ +# -*- coding: utf-8 -*- +""" + +Created on Wed Mar 28 15:34:18 2012 + +Author: Josef Perktold +""" +from statsmodels.compat.python import BytesIO, asbytes, range + +import warnings + +import numpy as np +import pandas as pd +import pytest +from numpy.testing import assert_, assert_allclose, assert_almost_equal, assert_equal, \ + assert_raises + +from statsmodels.stats.libqsturng import qsturng +from statsmodels.stats.multicomp import (tukeyhsd, pairwise_tukeyhsd, + MultiComparison) + +ss = '''\ + 43.9 1 1 + 39.0 1 2 + 46.7 1 3 + 43.8 1 4 + 44.2 1 5 + 47.7 1 6 + 43.6 1 7 + 38.9 1 8 + 43.6 1 9 + 40.0 1 10 + 89.8 2 1 + 87.1 2 2 + 92.7 2 3 + 90.6 2 4 + 87.7 2 5 + 92.4 2 6 + 86.1 2 7 + 88.1 2 8 + 90.8 2 9 + 89.1 2 10 + 68.4 3 1 + 69.3 3 2 + 68.5 3 3 + 66.4 3 4 + 70.0 3 5 + 68.1 3 6 + 70.6 3 7 + 65.2 3 8 + 63.8 3 9 + 69.2 3 10 + 36.2 4 1 + 45.2 4 2 + 40.7 4 3 + 40.5 4 4 + 39.3 4 5 + 40.3 4 6 + 43.2 4 7 + 38.7 4 8 + 40.9 4 9 + 39.7 4 10''' + +#idx Treatment StressReduction +ss2 = '''\ +1 mental 2 +2 mental 2 +3 mental 3 +4 mental 4 +5 mental 4 +6 mental 5 +7 mental 3 +8 mental 4 +9 mental 4 +10 mental 4 +11 physical 4 +12 physical 4 +13 physical 3 +14 physical 5 +15 physical 4 +16 physical 1 +17 physical 1 +18 physical 2 +19 physical 3 +20 physical 3 +21 medical 1 +22 medical 2 +23 medical 2 +24 medical 2 +25 medical 3 +26 medical 2 +27 medical 3 +28 medical 1 +29 medical 3 +30 medical 1''' + +ss3 = '''\ +1 24.5 +1 23.5 +1 26.4 +1 27.1 +1 29.9 +2 28.4 +2 34.2 +2 29.5 +2 32.2 +2 30.1 +3 26.1 +3 28.3 +3 24.3 +3 26.2 +3 27.8''' + +ss5 = '''\ +2 - 3\t4.340\t0.691\t7.989\t*** +2 - 1\t4.600\t0.951\t8.249\t*** +3 - 2\t-4.340\t-7.989\t-0.691\t*** +3 - 1\t0.260\t-3.389\t3.909\t- +1 - 2\t-4.600\t-8.249\t-0.951\t*** +1 - 3\t-0.260\t-3.909\t3.389\t- +''' + +cylinders = np.array([8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 8, 8, 8, 8, 8, 8, 8, 8, 8, 4, 6, 6, 6, 4, 4, + 4, 4, 4, 4, 6, 8, 8, 8, 8, 4, 4, 4, 4, 8, 8, 8, 8, 6, 6, 6, 6, 4, 4, 4, 4, 6, 6, + 6, 6, 4, 4, 4, 4, 4, 8, 4, 6, 6, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 6, 6, 4, 6, 4, 4, 4, 4, 4, 4, 4, 4]) +cyl_labels = np.array(['USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'France', + 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'Japan', 'USA', 'USA', 'USA', 'Japan', + 'Germany', 'France', 'Germany', 'Sweden', 'Germany', 'USA', 'USA', 'USA', 'USA', 'USA', 'Germany', + 'USA', 'USA', 'France', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'Germany', + 'Japan', 'USA', 'USA', 'USA', 'USA', 'Germany', 'Japan', 'Japan', 'USA', 'Sweden', 'USA', 'France', + 'Japan', 'Germany', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', 'USA', + 'Germany', 'Japan', 'Japan', 'USA', 'USA', 'Japan', 'Japan', 'Japan', 'Japan', 'Japan', 'Japan', 'USA', + 'USA', 'USA', 'USA', 'Japan', 'USA', 'USA', 'USA', 'Germany', 'USA', 'USA', 'USA']) + +#accommodate recfromtxt for python 3.2, requires bytes +ss = asbytes(ss) +ss2 = asbytes(ss2) +ss3 = asbytes(ss3) +ss5 = asbytes(ss5) + +dta = pd.read_csv(BytesIO(ss), sep=r'\s+', header=None, engine='python') +dta.columns = "Rust", "Brand", "Replication" +dta2 = pd.read_csv(BytesIO(ss2), sep=r'\s+', header=None, engine='python') +dta2.columns = "idx", "Treatment", "StressReduction" +dta2["Treatment"] = dta2["Treatment"].map(lambda v: v.encode('utf-8')) +dta3 = pd.read_csv(BytesIO(ss3), sep=r'\s+', header=None, engine='python') +dta3.columns = ["Brand", "Relief"] +dta5 = pd.read_csv(BytesIO(ss5), sep=r'\t', header=None, engine='python') +dta5.columns = ['pair', 'mean', 'lower', 'upper', 'sig'] +for col in ('pair', 'sig'): + dta5[col] = dta5[col].map(lambda v: v.encode('utf-8')) +sas_ = dta5.iloc[[1, 3, 2]] + + +def get_thsd(mci, alpha=0.05): + var_ = np.var(mci.groupstats.groupdemean(), ddof=len(mci.groupsunique)) + means = mci.groupstats.groupmean + nobs = mci.groupstats.groupnobs + resi = tukeyhsd(means, nobs, var_, df=None, alpha=alpha, + q_crit=qsturng(1-alpha, len(means), (nobs-1).sum())) + #print resi[4] + var2 = (mci.groupstats.groupvarwithin() * (nobs - 1.)).sum() \ + / (nobs - 1.).sum() + #print nobs, (nobs - 1).sum() + #print mci.groupstats.groupvarwithin() + assert_almost_equal(var_, var2, decimal=14) + return resi + +class CheckTuckeyHSDMixin(object): + + @classmethod + def setup_class_(cls): + cls.mc = MultiComparison(cls.endog, cls.groups) + cls.res = cls.mc.tukeyhsd(alpha=cls.alpha) + + def test_multicomptukey(self): + assert_almost_equal(self.res.meandiffs, self.meandiff2, decimal=14) + assert_almost_equal(self.res.confint, self.confint2, decimal=2) + assert_equal(self.res.reject, self.reject2) + + def test_group_tukey(self): + res_t = get_thsd(self.mc, alpha=self.alpha) + assert_almost_equal(res_t[4], self.confint2, decimal=2) + + def test_shortcut_function(self): + #check wrapper function + res = pairwise_tukeyhsd(self.endog, self.groups, alpha=self.alpha) + assert_almost_equal(res.confint, self.res.confint, decimal=14) + + @pytest.mark.smoke + @pytest.mark.matplotlib + def test_plot_simultaneous_ci(self, close_figures): + self.res._simultaneous_ci() + reference = self.res.groupsunique[1] + self.res.plot_simultaneous(comparison_name=reference) + + +class TestTuckeyHSD2(CheckTuckeyHSDMixin): + + @classmethod + def setup_class(cls): + #balanced case + cls.endog = dta2['StressReduction'] + cls.groups = dta2['Treatment'] + cls.alpha = 0.05 + cls.setup_class_() #in super + + #from R + tukeyhsd2s = np.array([ 1.5,1,-0.5,0.3214915, + -0.1785085,-1.678509,2.678509,2.178509, + 0.6785085,0.01056279,0.1079035,0.5513904] + ).reshape(3,4, order='F') + cls.meandiff2 = tukeyhsd2s[:, 0] + cls.confint2 = tukeyhsd2s[:, 1:3] + pvals = tukeyhsd2s[:, 3] + cls.reject2 = pvals < 0.05 + + def test_table_names_default_group_order(self): + t = self.res._results_table + # if the group_order parameter is not used, the groups should + # be reported in alphabetical order + expected_order = [(b'medical', b'mental'), + (b'medical', b'physical'), + (b'mental', b'physical')] + for i in range(1, 4): + first_group = t[i][0].data + second_group = t[i][1].data + assert_((first_group, second_group) == expected_order[i - 1]) + + def test_table_names_custom_group_order(self): + # if the group_order parameter is used, the groups should + # be reported in the specified order + mc = MultiComparison(self.endog, self.groups, + group_order=[b'physical', b'medical', b'mental']) + res = mc.tukeyhsd(alpha=self.alpha) + #print(res) + t = res._results_table + expected_order = [(b'physical',b'medical'), + (b'physical',b'mental'), + (b'medical', b'mental')] + for i in range(1, 4): + first_group = t[i][0].data + second_group = t[i][1].data + assert_((first_group, second_group) == expected_order[i - 1]) + + +class TestTuckeyHSD2Pandas(TestTuckeyHSD2): + + @classmethod + def setup_class(cls): + super(TestTuckeyHSD2Pandas, cls).setup_class() + + cls.endog = pd.Series(cls.endog) + # we are working with bytes on python 3, not with strings in this case + cls.groups = pd.Series(cls.groups, dtype=object) + + def test_incorrect_output(self): + # too few groups + assert_raises(ValueError, MultiComparison, np.array([1] * 10), [1, 2] * 4) + # too many groups + assert_raises(ValueError, MultiComparison, np.array([1] * 10), [1, 2] * 6) + # just one group + assert_raises(ValueError, MultiComparison, np.array([1] * 10), [1] * 10) + + # group_order doesn't select all observations, only one group left + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('always') + assert_raises(ValueError, MultiComparison, np.array([1] * 10), + [1, 2] * 5, group_order=[1]) + + # group_order doesn't select all observations, + # we do tukey_hsd with reduced set of observations + data = np.arange(15) + groups = np.repeat([1, 2, 3], 5) + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('always') + mod1 = MultiComparison(np.array(data), groups, group_order=[1, 2]) + assert_equal(len(w), 1) + assert issubclass(w[0].category, UserWarning) + + res1 = mod1.tukeyhsd(alpha=0.01) + mod2 = MultiComparison(np.array(data[:10]), groups[:10]) + res2 = mod2.tukeyhsd(alpha=0.01) + + attributes = ['confint', 'data', 'df_total', 'groups', 'groupsunique', + 'meandiffs', 'q_crit', 'reject', 'reject2', 'std_pairs', + 'variance'] + for att in attributes: + err_msg = att + 'failed' + assert_allclose(getattr(res1, att), getattr(res2, att), rtol=1e-14, + err_msg=err_msg) + + attributes = ['data', 'datali', 'groupintlab', 'groups', 'groupsunique', + 'ngroups', 'nobs', 'pairindices'] + for att in attributes: + err_msg = att + 'failed' + assert_allclose(getattr(mod1, att), getattr(mod2, att), rtol=1e-14, + err_msg=err_msg) + + +class TestTuckeyHSD2s(CheckTuckeyHSDMixin): + @classmethod + def setup_class(cls): + #unbalanced case + cls.endog = dta2['StressReduction'][3:29] + cls.groups = dta2['Treatment'][3:29] + cls.alpha = 0.01 + cls.setup_class_() + + #from R + tukeyhsd2s = np.array( + [1.8888888888888889, 0.888888888888889, -1, 0.2658549, + -0.5908785, -2.587133, 3.511923, 2.368656, + 0.5871331, 0.002837638, 0.150456, 0.1266072] + ).reshape(3,4, order='F') + cls.meandiff2 = tukeyhsd2s[:, 0] + cls.confint2 = tukeyhsd2s[:, 1:3] + pvals = tukeyhsd2s[:, 3] + cls.reject2 = pvals < 0.01 + + +class TestTuckeyHSD3(CheckTuckeyHSDMixin): + + @classmethod + def setup_class(cls): + #SAS case + cls.endog = dta3['Relief'] + cls.groups = dta3['Brand'] + cls.alpha = 0.05 + cls.setup_class_() + #super(cls, cls).setup_class_() + #CheckTuckeyHSD.setup_class_() + cls.meandiff2 = sas_['mean'] + cls.confint2 = sas_[['lower','upper']].astype(float).values.reshape((3, 2)) + cls.reject2 = sas_['sig'] == asbytes('***') + + +class TestTuckeyHSD4(CheckTuckeyHSDMixin): + + @classmethod + def setup_class(cls): + #unbalanced case verified in Matlab + cls.endog = cylinders + cls.groups = cyl_labels + cls.alpha = 0.05 + cls.setup_class_() + cls.res._simultaneous_ci() + + #from Matlab + cls.halfwidth2 = np.array([1.5228335685980883, 0.9794949704444682, 0.78673802805533644, + 2.3321237694566364, 0.57355135882752939]) + cls.meandiff2 = np.array([0.22222222222222232, 0.13333333333333375, 0.0, 2.2898550724637685, + -0.088888888888888573, -0.22222222222222232, 2.0676328502415462, + -0.13333333333333375, 2.1565217391304348, 2.2898550724637685]) + cls.confint2 = np.array([-2.32022210717, 2.76466655161, -2.247517583, 2.51418424967, + -3.66405224956, 3.66405224956, 0.113960166573, 4.46574997835, + -1.87278583908, 1.6950080613, -3.529655688, 3.08521124356, 0.568180988881, + 3.5670847116, -3.31822643175, 3.05155976508, 0.951206924521, 3.36183655374, + -0.74487911754, 5.32458926247]).reshape(10,2) + cls.reject2 = np.array([False, False, False, True, False, False, True, False, True, False]) + + def test_hochberg_intervals(self): + assert_almost_equal(self.res.halfwidths, self.halfwidth2, 14) diff --git a/statsmodels/stats/tests/test_panel_robustcov.py b/statsmodels/stats/tests/test_panel_robustcov.py new file mode 100644 index 0000000..5675536 --- /dev/null +++ b/statsmodels/stats/tests/test_panel_robustcov.py @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- +"""Test for panel robust covariance estimators after pooled ols +this follows the example from xtscc paper/help + +Created on Tue May 22 20:27:57 2012 + +Author: Josef Perktold +""" + +from statsmodels.compat.python import range, lmap +import numpy as np +from numpy.testing import assert_almost_equal + +from statsmodels.regression.linear_model import OLS +from statsmodels.tools.tools import add_constant +import statsmodels.stats.sandwich_covariance as sw + + +def test_panel_robust_cov(): + import statsmodels.datasets.grunfeld as gr + from .results.results_panelrobust import results as res_stata + + dtapa = gr.data.load_pandas() + #Stata example/data seems to miss last firm + dtapa_endog = dtapa.endog[:200] + dtapa_exog = dtapa.exog[:200] + res = OLS(dtapa_endog, add_constant(dtapa_exog[['value', 'capital']], + prepend=False)).fit() + + #time indicator in range(max Ti) + time = np.asarray(dtapa_exog[['year']]) + time -= time.min() + time = np.squeeze(time).astype(int) + + #sw.cov_nw_panel requires bounds instead of index + tidx = [(i*20, 20*(i+1)) for i in range(10)] + + #firm index in range(n_firms) + firm_names, firm_id = np.unique(np.asarray(dtapa_exog[['firm']], 'S20'), + return_inverse=True) + + #panel newey west standard errors + cov = sw.cov_nw_panel(res, 0, tidx, use_correction='hac') + #dropping numpy 1.4 soon + #np.testing.assert_allclose(cov, res_stata.cov_pnw0_stata, rtol=1e-6) + assert_almost_equal(cov, res_stata.cov_pnw0_stata, decimal=4) + + cov = sw.cov_nw_panel(res, 1, tidx, use_correction='hac') + #np.testing.assert_allclose(cov, res_stata.cov_pnw1_stata, rtol=1e-6) + assert_almost_equal(cov, res_stata.cov_pnw1_stata, decimal=4) + + cov = sw.cov_nw_panel(res, 4, tidx) #check default + #np.testing.assert_allclose(cov, res_stata.cov_pnw4_stata, rtol=1e-6) + assert_almost_equal(cov, res_stata.cov_pnw4_stata, decimal=4) + + #cluster robust standard errors + cov_clu = sw.cov_cluster(res, firm_id) + assert_almost_equal(cov_clu, res_stata.cov_clu_stata, decimal=4) + + #cluster robust standard errors, non-int groups + cov_clu = sw.cov_cluster(res, lmap(str, firm_id)) + assert_almost_equal(cov_clu, res_stata.cov_clu_stata, decimal=4) + + #Driscoll and Kraay panel robust standard errors + rcov = sw.cov_nw_groupsum(res, 0, time, use_correction=0) + assert_almost_equal(rcov, res_stata.cov_dk0_stata, decimal=4) + + rcov = sw.cov_nw_groupsum(res, 1, time, use_correction=0) + assert_almost_equal(rcov, res_stata.cov_dk1_stata, decimal=4) + + rcov = sw.cov_nw_groupsum(res, 4, time) #check default + assert_almost_equal(rcov, res_stata.cov_dk4_stata, decimal=4) diff --git a/statsmodels/stats/tests/test_power.py b/statsmodels/stats/tests/test_power.py new file mode 100644 index 0000000..f86e4ce --- /dev/null +++ b/statsmodels/stats/tests/test_power.py @@ -0,0 +1,773 @@ +# -*- coding: utf-8 -*- +# pylint: disable=W0231, W0142 +"""Tests for statistical power calculations + +Note: + tests for chisquare power are in test_gof.py + +Created on Sat Mar 09 08:44:49 2013 + +Author: Josef Perktold +""" +import copy +import warnings + +import numpy as np +from numpy.testing import (assert_almost_equal, assert_allclose, assert_raises, + assert_equal, assert_warns) +import pytest + +import statsmodels.stats.power as smp +from statsmodels.stats.tests.test_weightstats import Holder +from statsmodels.tools.sm_exceptions import HypothesisTestWarning + +try: + import matplotlib.pyplot as plt # noqa:F401 +except ImportError: + pass + + +class CheckPowerMixin(object): + + def test_power(self): + #test against R results + kwds = copy.copy(self.kwds) + del kwds['power'] + kwds.update(self.kwds_extra) + if hasattr(self, 'decimal'): + decimal = self.decimal + else: + decimal = 6 + res1 = self.cls() + assert_almost_equal(res1.power(**kwds), self.res2.power, decimal=decimal) + + def test_positional(self): + + res1 = self.cls() + + + kwds = copy.copy(self.kwds) + del kwds['power'] + kwds.update(self.kwds_extra) + + # positional args + if hasattr(self, 'args_names'): + args_names = self.args_names + else: + nobs_ = 'nobs' if 'nobs' in kwds else 'nobs1' + args_names = ['effect_size', nobs_, 'alpha'] + + # pop positional args + args = [kwds.pop(arg) for arg in args_names] + + if hasattr(self, 'decimal'): + decimal = self.decimal + else: + decimal = 6 + + res = res1.power(*args, **kwds) + assert_almost_equal(res, self.res2.power, decimal=decimal) + + def test_roots(self): + kwds = copy.copy(self.kwds) + kwds.update(self.kwds_extra) + + # kwds_extra are used as argument, but not as target for root + for key in self.kwds: + # keep print to check whether tests are really executed + #print 'testing roots', key + value = kwds[key] + kwds[key] = None + + result = self.cls().solve_power(**kwds) + assert_allclose(result, value, rtol=0.001, err_msg=key+' failed') + # yield can be used to investigate specific errors + #yield assert_allclose, result, value, 0.001, 0, key+' failed' + kwds[key] = value # reset dict + + @pytest.mark.matplotlib + def test_power_plot(self, close_figures): + if self.cls == smp.FTestPower: + pytest.skip('skip FTestPower plot_power') + fig = plt.figure() + ax = fig.add_subplot(2,1,1) + fig = self.cls().plot_power(dep_var='nobs', + nobs= np.arange(2, 100), + effect_size=np.array([0.1, 0.2, 0.3, 0.5, 1]), + #alternative='larger', + ax=ax, title='Power of t-Test', + **self.kwds_extra) + ax = fig.add_subplot(2,1,2) + self.cls().plot_power(dep_var='es', + nobs=np.array([10, 20, 30, 50, 70, 100]), + effect_size=np.linspace(0.01, 2, 51), + #alternative='larger', + ax=ax, title='', + **self.kwds_extra) + +#''' test cases +#one sample +# two-sided one-sided +#large power OneS1 OneS3 +#small power OneS2 OneS4 +# +#two sample +# two-sided one-sided +#large power TwoS1 TwoS3 +#small power TwoS2 TwoS4 +#small p, ratio TwoS4 TwoS5 +#''' + +class TestTTPowerOneS1(CheckPowerMixin): + + @classmethod + def setup_class(cls): + + #> p = pwr.t.test(d=1,n=30,sig.level=0.05,type="two.sample",alternative="two.sided") + #> cat_items(p, prefix='tt_power2_1.') + res2 = Holder() + res2.n = 30 + res2.d = 1 + res2.sig_level = 0.05 + res2.power = 0.9995636009612725 + res2.alternative = 'two.sided' + res2.note = 'NULL' + res2.method = 'One-sample t test power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs': res2.n, + 'alpha': res2.sig_level, 'power':res2.power} + cls.kwds_extra = {} + cls.cls = smp.TTestPower + +class TestTTPowerOneS2(CheckPowerMixin): + # case with small power + + @classmethod + def setup_class(cls): + + res2 = Holder() + #> p = pwr.t.test(d=0.2,n=20,sig.level=0.05,type="one.sample",alternative="two.sided") + #> cat_items(p, "res2.") + res2.n = 20 + res2.d = 0.2 + res2.sig_level = 0.05 + res2.power = 0.1359562887679666 + res2.alternative = 'two.sided' + res2.note = '''NULL''' + res2.method = 'One-sample t test power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs': res2.n, + 'alpha': res2.sig_level, 'power':res2.power} + cls.kwds_extra = {} + cls.cls = smp.TTestPower + +class TestTTPowerOneS3(CheckPowerMixin): + + @classmethod + def setup_class(cls): + + res2 = Holder() + #> p = pwr.t.test(d=1,n=30,sig.level=0.05,type="one.sample",alternative="greater") + #> cat_items(p, prefix='tt_power1_1g.') + res2.n = 30 + res2.d = 1 + res2.sig_level = 0.05 + res2.power = 0.999892010204909 + res2.alternative = 'greater' + res2.note = 'NULL' + res2.method = 'One-sample t test power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs': res2.n, + 'alpha': res2.sig_level, 'power': res2.power} + cls.kwds_extra = {'alternative': 'larger'} + cls.cls = smp.TTestPower + +class TestTTPowerOneS4(CheckPowerMixin): + + @classmethod + def setup_class(cls): + + res2 = Holder() + #> p = pwr.t.test(d=0.05,n=20,sig.level=0.05,type="one.sample",alternative="greater") + #> cat_items(p, "res2.") + res2.n = 20 + res2.d = 0.05 + res2.sig_level = 0.05 + res2.power = 0.0764888785042198 + res2.alternative = 'greater' + res2.note = '''NULL''' + res2.method = 'One-sample t test power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs': res2.n, + 'alpha': res2.sig_level, 'power': res2.power} + cls.kwds_extra = {'alternative': 'larger'} + cls.cls = smp.TTestPower + +class TestTTPowerOneS5(CheckPowerMixin): + # case one-sided less, not implemented yet + + @classmethod + def setup_class(cls): + + res2 = Holder() + #> p = pwr.t.test(d=0.2,n=20,sig.level=0.05,type="one.sample",alternative="less") + #> cat_items(p, "res2.") + res2.n = 20 + res2.d = 0.2 + res2.sig_level = 0.05 + res2.power = 0.006063932667926375 + res2.alternative = 'less' + res2.note = '''NULL''' + res2.method = 'One-sample t test power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs': res2.n, + 'alpha': res2.sig_level, 'power': res2.power} + cls.kwds_extra = {'alternative': 'smaller'} + cls.cls = smp.TTestPower + +class TestTTPowerOneS6(CheckPowerMixin): + # case one-sided less, negative effect size, not implemented yet + + @classmethod + def setup_class(cls): + + res2 = Holder() + #> p = pwr.t.test(d=-0.2,n=20,sig.level=0.05,type="one.sample",alternative="less") + #> cat_items(p, "res2.") + res2.n = 20 + res2.d = -0.2 + res2.sig_level = 0.05 + res2.power = 0.21707518167191 + res2.alternative = 'less' + res2.note = '''NULL''' + res2.method = 'One-sample t test power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs': res2.n, + 'alpha': res2.sig_level, 'power': res2.power} + cls.kwds_extra = {'alternative': 'smaller'} + cls.cls = smp.TTestPower + + +class TestTTPowerTwoS1(CheckPowerMixin): + + @classmethod + def setup_class(cls): + + #> p = pwr.t.test(d=1,n=30,sig.level=0.05,type="two.sample",alternative="two.sided") + #> cat_items(p, prefix='tt_power2_1.') + res2 = Holder() + res2.n = 30 + res2.d = 1 + res2.sig_level = 0.05 + res2.power = 0.967708258242517 + res2.alternative = 'two.sided' + res2.note = 'n is number in *each* group' + res2.method = 'Two-sample t test power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs1': res2.n, + 'alpha': res2.sig_level, 'power': res2.power, 'ratio': 1} + cls.kwds_extra = {} + cls.cls = smp.TTestIndPower + +class TestTTPowerTwoS2(CheckPowerMixin): + + @classmethod + def setup_class(cls): + + res2 = Holder() + #> p = pwr.t.test(d=0.1,n=20,sig.level=0.05,type="two.sample",alternative="two.sided") + #> cat_items(p, "res2.") + res2.n = 20 + res2.d = 0.1 + res2.sig_level = 0.05 + res2.power = 0.06095912465411235 + res2.alternative = 'two.sided' + res2.note = 'n is number in *each* group' + res2.method = 'Two-sample t test power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs1': res2.n, + 'alpha': res2.sig_level, 'power': res2.power, 'ratio': 1} + cls.kwds_extra = {} + cls.cls = smp.TTestIndPower + +class TestTTPowerTwoS3(CheckPowerMixin): + + @classmethod + def setup_class(cls): + + res2 = Holder() + #> p = pwr.t.test(d=1,n=30,sig.level=0.05,type="two.sample",alternative="greater") + #> cat_items(p, prefix='tt_power2_1g.') + res2.n = 30 + res2.d = 1 + res2.sig_level = 0.05 + res2.power = 0.985459690251624 + res2.alternative = 'greater' + res2.note = 'n is number in *each* group' + res2.method = 'Two-sample t test power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs1': res2.n, + 'alpha': res2.sig_level, 'power':res2.power, 'ratio': 1} + cls.kwds_extra = {'alternative': 'larger'} + cls.cls = smp.TTestIndPower + +class TestTTPowerTwoS4(CheckPowerMixin): + # case with small power + + @classmethod + def setup_class(cls): + + res2 = Holder() + #> p = pwr.t.test(d=0.01,n=30,sig.level=0.05,type="two.sample",alternative="greater") + #> cat_items(p, "res2.") + res2.n = 30 + res2.d = 0.01 + res2.sig_level = 0.05 + res2.power = 0.0540740302835667 + res2.alternative = 'greater' + res2.note = 'n is number in *each* group' + res2.method = 'Two-sample t test power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs1': res2.n, + 'alpha': res2.sig_level, 'power':res2.power} + cls.kwds_extra = {'alternative': 'larger'} + cls.cls = smp.TTestIndPower + +class TestTTPowerTwoS5(CheckPowerMixin): + # case with unequal n, ratio>1 + + @classmethod + def setup_class(cls): + + res2 = Holder() + #> p = pwr.t2n.test(d=0.1,n1=20, n2=30,sig.level=0.05,alternative="two.sided") + #> cat_items(p, "res2.") + res2.n1 = 20 + res2.n2 = 30 + res2.d = 0.1 + res2.sig_level = 0.05 + res2.power = 0.0633081832564667 + res2.alternative = 'two.sided' + res2.method = 't test power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs1': res2.n1, + 'alpha': res2.sig_level, 'power':res2.power, 'ratio': 1.5} + cls.kwds_extra = {'alternative': 'two-sided'} + cls.cls = smp.TTestIndPower + +class TestTTPowerTwoS6(CheckPowerMixin): + # case with unequal n, ratio>1 + + @classmethod + def setup_class(cls): + + res2 = Holder() + #> p = pwr.t2n.test(d=0.1,n1=20, n2=30,sig.level=0.05,alternative="greater") + #> cat_items(p, "res2.") + res2.n1 = 20 + res2.n2 = 30 + res2.d = 0.1 + res2.sig_level = 0.05 + res2.power = 0.09623589080917805 + res2.alternative = 'greater' + res2.method = 't test power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs1': res2.n1, + 'alpha': res2.sig_level, 'power':res2.power, 'ratio': 1.5} + cls.kwds_extra = {'alternative': 'larger'} + cls.cls = smp.TTestIndPower + + + +def test_normal_power_explicit(): + # a few initial test cases for NormalIndPower + sigma = 1 + d = 0.3 + nobs = 80 + alpha = 0.05 + res1 = smp.normal_power(d, nobs/2., 0.05) + res2 = smp.NormalIndPower().power(d, nobs, 0.05) + res3 = smp.NormalIndPower().solve_power(effect_size=0.3, nobs1=80, alpha=0.05, power=None) + res_R = 0.475100870572638 + assert_almost_equal(res1, res_R, decimal=13) + assert_almost_equal(res2, res_R, decimal=13) + assert_almost_equal(res3, res_R, decimal=13) + + + norm_pow = smp.normal_power(-0.01, nobs/2., 0.05) + norm_pow_R = 0.05045832927039234 + #value from R: >pwr.2p.test(h=0.01,n=80,sig.level=0.05,alternative="two.sided") + assert_almost_equal(norm_pow, norm_pow_R, decimal=11) + + norm_pow = smp.NormalIndPower().power(0.01, nobs, 0.05, + alternative="larger") + norm_pow_R = 0.056869534873146124 + #value from R: >pwr.2p.test(h=0.01,n=80,sig.level=0.05,alternative="greater") + assert_almost_equal(norm_pow, norm_pow_R, decimal=11) + + # Note: negative effect size is same as switching one-sided alternative + # TODO: should I switch to larger/smaller instead of "one-sided" options + norm_pow = smp.NormalIndPower().power(-0.01, nobs, 0.05, + alternative="larger") + norm_pow_R = 0.0438089705093578 + #value from R: >pwr.2p.test(h=0.01,n=80,sig.level=0.05,alternative="less") + assert_almost_equal(norm_pow, norm_pow_R, decimal=11) + +class TestNormalIndPower1(CheckPowerMixin): + + @classmethod + def setup_class(cls): + #> example from above + # results copied not directly from R + res2 = Holder() + res2.n = 80 + res2.d = 0.3 + res2.sig_level = 0.05 + res2.power = 0.475100870572638 + res2.alternative = 'two.sided' + res2.note = 'NULL' + res2.method = 'two sample power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs1': res2.n, + 'alpha': res2.sig_level, 'power':res2.power, 'ratio': 1} + cls.kwds_extra = {} + cls.cls = smp.NormalIndPower + +class TestNormalIndPower2(CheckPowerMixin): + + @classmethod + def setup_class(cls): + res2 = Holder() + #> np = pwr.2p.test(h=0.01,n=80,sig.level=0.05,alternative="less") + #> cat_items(np, "res2.") + res2.h = 0.01 + res2.n = 80 + res2.sig_level = 0.05 + res2.power = 0.0438089705093578 + res2.alternative = 'less' + res2.method = ('Difference of proportion power calculation for' + + ' binomial distribution (arcsine transformation)') + res2.note = 'same sample sizes' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.h, 'nobs1': res2.n, + 'alpha': res2.sig_level, 'power':res2.power, 'ratio': 1} + cls.kwds_extra = {'alternative':'smaller'} + cls.cls = smp.NormalIndPower + + +class TestNormalIndPower_onesamp1(CheckPowerMixin): + + @classmethod + def setup_class(cls): + # forcing one-sample by using ratio=0 + #> example from above + # results copied not directly from R + res2 = Holder() + res2.n = 40 + res2.d = 0.3 + res2.sig_level = 0.05 + res2.power = 0.475100870572638 + res2.alternative = 'two.sided' + res2.note = 'NULL' + res2.method = 'two sample power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs1': res2.n, + 'alpha': res2.sig_level, 'power':res2.power} + # keyword for which we don't look for root: + cls.kwds_extra = {'ratio': 0} + + cls.cls = smp.NormalIndPower + +class TestNormalIndPower_onesamp2(CheckPowerMixin): + # Note: same power as two sample case with twice as many observations + + @classmethod + def setup_class(cls): + # forcing one-sample by using ratio=0 + res2 = Holder() + #> np = pwr.norm.test(d=0.01,n=40,sig.level=0.05,alternative="less") + #> cat_items(np, "res2.") + res2.d = 0.01 + res2.n = 40 + res2.sig_level = 0.05 + res2.power = 0.0438089705093578 + res2.alternative = 'less' + res2.method = 'Mean power calculation for normal distribution with known variance' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.d, 'nobs1': res2.n, + 'alpha': res2.sig_level, 'power':res2.power} + # keyword for which we don't look for root: + cls.kwds_extra = {'ratio': 0, 'alternative':'smaller'} + + cls.cls = smp.NormalIndPower + + + +class TestChisquarePower(CheckPowerMixin): + + @classmethod + def setup_class(cls): + # one example from test_gof, results_power + res2 = Holder() + res2.w = 0.1 + res2.N = 5 + res2.df = 4 + res2.sig_level = 0.05 + res2.power = 0.05246644635810126 + res2.method = 'Chi squared power calculation' + res2.note = 'N is the number of observations' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.w, 'nobs': res2.N, + 'alpha': res2.sig_level, 'power':res2.power} + # keyword for which we don't look for root: + # solving for n_bins doesn't work, will not be used in regular usage + cls.kwds_extra = {'n_bins': res2.df + 1} + + cls.cls = smp.GofChisquarePower + + def _test_positional(self): + + res1 = self.cls() + args_names = ['effect_size','nobs', 'alpha', 'n_bins'] + kwds = copy.copy(self.kwds) + del kwds['power'] + kwds.update(self.kwds_extra) + args = [kwds[arg] for arg in args_names] + if hasattr(self, 'decimal'): + decimal = self.decimal #pylint: disable-msg=E1101 + else: + decimal = 6 + assert_almost_equal(res1.power(*args), self.res2.power, decimal=decimal) + + + +def test_ftest_power(): + #equivalence ftest, ttest + + for alpha in [0.01, 0.05, 0.1, 0.20, 0.50]: + res0 = smp.ttest_power(0.01, 200, alpha) + res1 = smp.ftest_power(0.01, 199, 1, alpha=alpha, ncc=0) + assert_almost_equal(res1, res0, decimal=6) + + + #example from Gplus documentation F-test ANOVA + #Total sample size:200 + #Effect size "f":0.25 + #Beta/alpha ratio:1 + #Result: + #Alpha:0.1592 + #Power (1-beta):0.8408 + #Critical F:1.4762 + #Lambda: 12.50000 + res1 = smp.ftest_anova_power(0.25, 200, 0.1592, k_groups=10) + res0 = 0.8408 + assert_almost_equal(res1, res0, decimal=4) + + + # TODO: no class yet + # examples agains R::pwr + res2 = Holder() + #> rf = pwr.f2.test(u=5, v=199, f2=0.1**2, sig.level=0.01) + #> cat_items(rf, "res2.") + res2.u = 5 + res2.v = 199 + res2.f2 = 0.01 + res2.sig_level = 0.01 + res2.power = 0.0494137732920332 + res2.method = 'Multiple regression power calculation' + + res1 = smp.ftest_power(np.sqrt(res2.f2), res2.v, res2.u, + alpha=res2.sig_level, ncc=1) + assert_almost_equal(res1, res2.power, decimal=5) + + res2 = Holder() + #> rf = pwr.f2.test(u=5, v=199, f2=0.3**2, sig.level=0.01) + #> cat_items(rf, "res2.") + res2.u = 5 + res2.v = 199 + res2.f2 = 0.09 + res2.sig_level = 0.01 + res2.power = 0.7967191006290872 + res2.method = 'Multiple regression power calculation' + + res1 = smp.ftest_power(np.sqrt(res2.f2), res2.v, res2.u, + alpha=res2.sig_level, ncc=1) + assert_almost_equal(res1, res2.power, decimal=5) + + res2 = Holder() + #> rf = pwr.f2.test(u=5, v=19, f2=0.3**2, sig.level=0.1) + #> cat_items(rf, "res2.") + res2.u = 5 + res2.v = 19 + res2.f2 = 0.09 + res2.sig_level = 0.1 + res2.power = 0.235454222377575 + res2.method = 'Multiple regression power calculation' + + res1 = smp.ftest_power(np.sqrt(res2.f2), res2.v, res2.u, + alpha=res2.sig_level, ncc=1) + assert_almost_equal(res1, res2.power, decimal=5) + +# class based version of two above test for Ftest +class TestFtestAnovaPower(CheckPowerMixin): + + @classmethod + def setup_class(cls): + res2 = Holder() + #example from Gplus documentation F-test ANOVA + #Total sample size:200 + #Effect size "f":0.25 + #Beta/alpha ratio:1 + #Result: + #Alpha:0.1592 + #Power (1-beta):0.8408 + #Critical F:1.4762 + #Lambda: 12.50000 + #converted to res2 by hand + res2.f = 0.25 + res2.n = 200 + res2.k = 10 + res2.alpha = 0.1592 + res2.power = 0.8408 + res2.method = 'Multiple regression power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': res2.f, 'nobs': res2.n, + 'alpha': res2.alpha, 'power': res2.power} + # keyword for which we don't look for root: + # solving for n_bins doesn't work, will not be used in regular usage + cls.kwds_extra = {'k_groups': res2.k} # rootfinding doesn't work + #cls.args_names = ['effect_size','nobs', 'alpha']#, 'k_groups'] + cls.cls = smp.FTestAnovaPower + # precision for test_power + cls.decimal = 4 + + + +class TestFtestPower(CheckPowerMixin): + + @classmethod + def setup_class(cls): + res2 = Holder() + #> rf = pwr.f2.test(u=5, v=19, f2=0.3**2, sig.level=0.1) + #> cat_items(rf, "res2.") + res2.u = 5 + res2.v = 19 + res2.f2 = 0.09 + res2.sig_level = 0.1 + res2.power = 0.235454222377575 + res2.method = 'Multiple regression power calculation' + + cls.res2 = res2 + cls.kwds = {'effect_size': np.sqrt(res2.f2), 'df_num': res2.v, + 'df_denom': res2.u, 'alpha': res2.sig_level, + 'power': res2.power} + # keyword for which we don't look for root: + # solving for n_bins doesn't work, will not be used in regular usage + cls.kwds_extra = {} + cls.args_names = ['effect_size', 'df_num', 'df_denom', 'alpha'] + cls.cls = smp.FTestPower + # precision for test_power + cls.decimal = 5 + + +def test_power_solver(): + # messing up the solver to trigger backup + + nip = smp.NormalIndPower() + + # check result + es0 = 0.1 + pow_ = nip.solve_power(es0, nobs1=1600, alpha=0.01, power=None, ratio=1, + alternative='larger') + # value is regression test + assert_almost_equal(pow_, 0.69219411243824214, decimal=5) + es = nip.solve_power(None, nobs1=1600, alpha=0.01, power=pow_, ratio=1, + alternative='larger') + assert_almost_equal(es, es0, decimal=4) + assert_equal(nip.cache_fit_res[0], 1) + assert_equal(len(nip.cache_fit_res), 2) + + # cause first optimizer to fail + nip.start_bqexp['effect_size'] = {'upp': -10, 'low': -20} + nip.start_ttp['effect_size'] = 0.14 + es = nip.solve_power(None, nobs1=1600, alpha=0.01, power=pow_, ratio=1, + alternative='larger') + assert_almost_equal(es, es0, decimal=4) + assert_equal(nip.cache_fit_res[0], 1) + assert_equal(len(nip.cache_fit_res), 3, err_msg=repr(nip.cache_fit_res)) + + nip.start_ttp['effect_size'] = np.nan + es = nip.solve_power(None, nobs1=1600, alpha=0.01, power=pow_, ratio=1, + alternative='larger') + assert_almost_equal(es, es0, decimal=4) + assert_equal(nip.cache_fit_res[0], 1) + assert_equal(len(nip.cache_fit_res), 4) + + # Test our edge-case where effect_size = 0 + es = nip.solve_power(nobs1=1600, alpha=0.01, effect_size=0, power=None) + assert_almost_equal(es, 0.01) + + # I let this case fail, could be fixed for some statistical tests + # (we shouldn't get here in the first place) + # effect size is negative, but last stage brentq uses [1e-8, 1-1e-8] + assert_raises(ValueError, nip.solve_power, None, nobs1=1600, alpha=0.01, + power=0.005, ratio=1, alternative='larger') + + with pytest.warns(HypothesisTestWarning): + with pytest.raises(ValueError): + nip.solve_power(nobs1=None, effect_size=0, alpha=0.01, + power=0.005, ratio=1, alternative='larger') + + +# TODO: can something useful be made from this? +@pytest.mark.skip(reason='Known failure on modern SciPy >= 0.10') +def test_power_solver_warn(): + # messing up the solver to trigger warning + # I wrote this with scipy 0.9, + # convergence behavior of scipy 0.11 is different, + # fails at a different case, but is successful where it failed before + + pow_ = 0.69219411243824214 # from previous function + nip = smp.NormalIndPower() + # using nobs, has one backup (fsolve) + nip.start_bqexp['nobs1'] = {'upp': 50, 'low': -20} + val = nip.solve_power(0.1, nobs1=None, alpha=0.01, power=pow_, ratio=1, + alternative='larger') + + assert_almost_equal(val, 1600, decimal=4) + assert_equal(nip.cache_fit_res[0], 1) + assert_equal(len(nip.cache_fit_res), 3) + + # case that has convergence failure, and should warn + nip.start_ttp['nobs1'] = np.nan + + from statsmodels.tools.sm_exceptions import ConvergenceWarning + assert_warns(ConvergenceWarning, nip.solve_power, 0.1, nobs1=None, + alpha=0.01, power=pow_, ratio=1, alternative='larger') + # this converges with scipy 0.11 ??? + # nip.solve_power(0.1, nobs1=None, alpha=0.01, power=pow_, ratio=1, alternative='larger') + + with warnings.catch_warnings(): # python >= 2.6 + warnings.simplefilter("ignore") + val = nip.solve_power(0.1, nobs1=None, alpha=0.01, power=pow_, ratio=1, + alternative='larger') + assert_equal(nip.cache_fit_res[0], 0) + assert_equal(len(nip.cache_fit_res), 3) diff --git a/statsmodels/stats/tests/test_proportion.py b/statsmodels/stats/tests/test_proportion.py new file mode 100644 index 0000000..116329f --- /dev/null +++ b/statsmodels/stats/tests/test_proportion.py @@ -0,0 +1,576 @@ +# -*- coding: utf-8 -*- +""" + +Created on Fri Mar 01 14:56:56 2013 + +Author: Josef Perktold +""" +import warnings + +import pytest +import numpy as np +import pandas as pd +from numpy.testing import (assert_almost_equal, assert_equal, assert_array_less, + assert_raises, assert_allclose) + +from statsmodels.stats.proportion import (proportion_confint, + multinomial_proportions_confint) +import statsmodels.stats.proportion as smprop +from statsmodels.tools.sm_exceptions import HypothesisTestWarning +from statsmodels.tools.testing import Holder + + +probci_methods = {'agresti_coull': 'agresti-coull', + 'normal': 'asymptotic', + 'beta': 'exact', + 'wilson': 'wilson', + 'jeffreys': 'bayes' + } + + +def test_confint_proportion(): + from .results.results_proportion import res_binom, res_binom_methods + + + for case in res_binom: + count, nobs = case + for method in probci_methods: + idx = res_binom_methods.index(probci_methods[method]) + res_low = res_binom[case].ci_low[idx] + res_upp = res_binom[case].ci_upp[idx] + if np.isnan(res_low) or np.isnan(res_upp): + continue + if (count == 0 or count == nobs) and method == 'jeffreys': + # maybe a bug or different corner case definition + continue + if method == 'jeffreys' and nobs == 30: + # something is strange in extreme case e.g 0/30 or 1/30 + continue + ci = proportion_confint(count, nobs, alpha=0.05, method=method) + # we impose that confint is in [0, 1] + res_low = max(res_low, 0) + res_upp = min(res_upp, 1) + assert_almost_equal(ci, [res_low, res_upp], decimal=6, + err_msg=repr(case) + method) + + +@pytest.mark.parametrize('method', probci_methods) +def test_confint_proportion_ndim(method): + # check that it works with 1-D, 2-D and pandas + + count = np.arange(6).reshape(2, 3) + nobs = 10 * np.ones((2, 3)) + + count_pd = pd.DataFrame(count) + nobs_pd = pd.DataFrame(nobs) + + ci_arr = proportion_confint(count, nobs, alpha=0.05, method=method) + ci_pd = proportion_confint(count_pd, nobs_pd, alpha=0.05, + method=method) + assert_allclose(ci_arr, (ci_pd[0].values, ci_pd[1].values), rtol=1e-13) + # spot checking one value + ci12 = proportion_confint(count[1, 2], nobs[1, 2], alpha=0.05, + method=method) + assert_allclose((ci_pd[0].values[1, 2], ci_pd[1].values[1, 2]), ci12, + rtol=1e-13) + assert_allclose((ci_arr[0][1, 2], ci_arr[1][1, 2]), ci12, rtol=1e-13) + + # check that lists work as input + ci_li = proportion_confint(count.tolist(), nobs.tolist(), alpha=0.05, + method=method) + assert_allclose(ci_arr, (ci_li[0], ci_li[1]), rtol=1e-13) + + # check pandas Series, 1-D + ci_pds = proportion_confint(count_pd.iloc[0], nobs_pd.iloc[0], + alpha=0.05, method=method) + assert_allclose((ci_pds[0].values, ci_pds[1].values), + (ci_pd[0].values[0], ci_pd[1].values[0]), rtol=1e-13) + + # check scalar nobs, verifying one value + ci_arr2 = proportion_confint(count, nobs[1, 2], alpha=0.05, + method=method) + assert_allclose((ci_arr2[0][1, 2], ci_arr[1][1, 2]), ci12, rtol=1e-13) + + +def test_samplesize_confidenceinterval_prop(): + #consistency test for samplesize to achieve confidence_interval + nobs = 20 + ci = smprop.proportion_confint(12, nobs, alpha=0.05, method='normal') + res = smprop.samplesize_confint_proportion(12./nobs, (ci[1] - ci[0]) / 2) + assert_almost_equal(res, nobs, decimal=13) + +def test_proportion_effect_size(): + # example from blog + es = smprop.proportion_effectsize(0.5, 0.4) + assert_almost_equal(es, 0.2013579207903309, decimal=13) + +def test_confint_multinomial_proportions(): + from .results.results_multinomial_proportions import res_multinomial + + for ((method, description), values) in res_multinomial.items(): + cis = multinomial_proportions_confint(values.proportions, 0.05, + method=method) + assert_almost_equal( + values.cis, cis, decimal=values.precision, + err_msg='"%s" method, %s' % (method, description)) + +def test_multinomial_proportions_errors(): + # Out-of-bounds values for alpha raise a ValueError + for alpha in [-.1, 0, 1, 1.1]: + assert_raises(ValueError, multinomial_proportions_confint, + [5] * 50, alpha=alpha) + + assert_raises(ValueError, multinomial_proportions_confint, + np.arange(50) - 1) + # Any unknown method is reported. + for method in ['unknown_method', 'sisok_method', 'unknown-glaz']: + assert_raises(NotImplementedError, multinomial_proportions_confint, + [5] * 50, method=method) + +def test_confint_multinomial_proportions_zeros(): + # test when a count is zero or close to zero + # values from R MultinomialCI + ci01 = np.array([ + 0.09364718, 0.1898413, + 0.00000000, 0.0483581, + 0.13667426, 0.2328684, + 0.10124019, 0.1974343, + 0.10883321, 0.2050273, + 0.17210833, 0.2683024, + 0.09870919, 0.1949033]).reshape(-1,2) + + ci0 = np.array([ + 0.09620253, 0.19238867, + 0.00000000, 0.05061652, + 0.13924051, 0.23542664, + 0.10379747, 0.19998360, + 0.11139241, 0.20757854, + 0.17468354, 0.27086968, + 0.10126582, 0.19745196]).reshape(-1,2) + + # the shifts are the differences between "LOWER(SG)" "UPPER(SG)" and + # "LOWER(C+1)" "UPPER(C+1)" in verbose printout + # ci01_shift = np.array([0.002531008, -0.002515122]) # not needed + ci0_shift = np.array([0.002531642, 0.002515247]) + + p = [56, 0.1, 73, 59, 62, 87, 58] + ci_01 = smprop.multinomial_proportions_confint(p, 0.05, + method='sison_glaz') + p = [56, 0, 73, 59, 62, 87, 58] + ci_0 = smprop.multinomial_proportions_confint(p, 0.05, + method='sison_glaz') + + assert_allclose(ci_01, ci01, atol=1e-5) + assert_allclose(ci_0, np.maximum(ci0 - ci0_shift, 0), atol=1e-5) + assert_allclose(ci_01, ci_0, atol=5e-4) + + +class CheckProportionMixin(object): + def test_proptest(self): + # equality of k-samples + pt = smprop.proportions_chisquare(self.n_success, self.nobs, value=None) + assert_almost_equal(pt[0], self.res_prop_test.statistic, decimal=13) + assert_almost_equal(pt[1], self.res_prop_test.p_value, decimal=13) + + # several against value + pt = smprop.proportions_chisquare(self.n_success, self.nobs, + value=self.res_prop_test_val.null_value[0]) + assert_almost_equal(pt[0], self.res_prop_test_val.statistic, decimal=13) + assert_almost_equal(pt[1], self.res_prop_test_val.p_value, decimal=13) + + # one proportion against value + pt = smprop.proportions_chisquare(self.n_success[0], self.nobs[0], + value=self.res_prop_test_1.null_value) + assert_almost_equal(pt[0], self.res_prop_test_1.statistic, decimal=13) + assert_almost_equal(pt[1], self.res_prop_test_1.p_value, decimal=13) + + def test_pairwiseproptest(self): + ppt = smprop.proportions_chisquare_allpairs(self.n_success, self.nobs, + multitest_method=None) + assert_almost_equal(ppt.pvals_raw, self.res_ppt_pvals_raw) + ppt = smprop.proportions_chisquare_allpairs(self.n_success, self.nobs, + multitest_method='h') + assert_almost_equal(ppt.pval_corrected(), self.res_ppt_pvals_holm) + + pptd = smprop.proportions_chisquare_pairscontrol(self.n_success, + self.nobs, multitest_method='hommel') + assert_almost_equal(pptd.pvals_raw, ppt.pvals_raw[:len(self.nobs) - 1], + decimal=13) + + + def test_number_pairs_1493(self): + ppt = smprop.proportions_chisquare_allpairs(self.n_success[:3], + self.nobs[:3], + multitest_method=None) + + assert_equal(len(ppt.pvals_raw), 3) + idx = [0, 1, 3] + assert_almost_equal(ppt.pvals_raw, self.res_ppt_pvals_raw[idx]) + + +class TestProportion(CheckProportionMixin): + def setup(self): + self.n_success = np.array([ 73, 90, 114, 75]) + self.nobs = np.array([ 86, 93, 136, 82]) + + self.res_ppt_pvals_raw = np.array([ + 0.00533824886503131, 0.8327574849753566, 0.1880573726722516, + 0.002026764254350234, 0.1309487516334318, 0.1076118730631731 + ]) + self.res_ppt_pvals_holm = np.array([ + 0.02669124432515654, 0.8327574849753566, 0.4304474922526926, + 0.0121605855261014, 0.4304474922526926, 0.4304474922526926 + ]) + + res_prop_test = Holder() + res_prop_test.statistic = 11.11938768628861 + res_prop_test.parameter = 3 + res_prop_test.p_value = 0.011097511366581344 + res_prop_test.estimate = np.array([ + 0.848837209302326, 0.967741935483871, 0.838235294117647, + 0.9146341463414634 + ]).reshape(4,1, order='F') + res_prop_test.null_value = '''NULL''' + res_prop_test.conf_int = '''NULL''' + res_prop_test.alternative = 'two.sided' + res_prop_test.method = '4-sample test for equality of proportions ' + \ + 'without continuity correction' + res_prop_test.data_name = 'smokers2 out of patients' + self.res_prop_test = res_prop_test + + #> pt = prop.test(smokers2, patients, p=rep(c(0.9), 4), correct=FALSE) + #> cat_items(pt, "res_prop_test_val.") + res_prop_test_val = Holder() + res_prop_test_val.statistic = np.array([ + 13.20305530710751 + ]).reshape(1,1, order='F') + res_prop_test_val.parameter = np.array([ + 4 + ]).reshape(1,1, order='F') + res_prop_test_val.p_value = 0.010325090041836 + res_prop_test_val.estimate = np.array([ + 0.848837209302326, 0.967741935483871, 0.838235294117647, + 0.9146341463414634 + ]).reshape(4,1, order='F') + res_prop_test_val.null_value = np.array([ + 0.9, 0.9, 0.9, 0.9 + ]).reshape(4,1, order='F') + res_prop_test_val.conf_int = '''NULL''' + res_prop_test_val.alternative = 'two.sided' + res_prop_test_val.method = '4-sample test for given proportions without continuity correction' + res_prop_test_val.data_name = 'smokers2 out of patients, null probabilities rep(c(0.9), 4)' + self.res_prop_test_val = res_prop_test_val + + #> pt = prop.test(smokers2[1], patients[1], p=0.9, correct=FALSE) + #> cat_items(pt, "res_prop_test_1.") + res_prop_test_1 = Holder() + res_prop_test_1.statistic = 2.501291989664086 + res_prop_test_1.parameter = 1 + res_prop_test_1.p_value = 0.113752943640092 + res_prop_test_1.estimate = 0.848837209302326 + res_prop_test_1.null_value = 0.9 + res_prop_test_1.conf_int = np.array([0.758364348004061, + 0.9094787701686766]) + res_prop_test_1.alternative = 'two.sided' + res_prop_test_1.method = '1-sample proportions test without continuity correction' + res_prop_test_1.data_name = 'smokers2[1] out of patients[1], null probability 0.9' + self.res_prop_test_1 = res_prop_test_1 + + # GH 2969 + def test_default_values(self): + count = np.array([5, 12]) + nobs = np.array([83, 99]) + stat, pval = smprop.proportions_ztest(count, nobs, value=None) + assert_almost_equal(stat, -1.4078304151258787) + assert_almost_equal(pval, 0.15918129181156992) + + # GH 2779 + def test_scalar(self): + count = 5 + nobs = 83 + value = 0.05 + stat, pval = smprop.proportions_ztest(count, nobs, value=value) + assert_almost_equal(stat, 0.392126026314) + assert_almost_equal(pval, 0.694965098115) + + assert_raises(ValueError, smprop.proportions_ztest, count, nobs, value=None) + + +def test_binom_test(): + #> bt = binom.test(51,235,(1/6),alternative="less") + #> cat_items(bt, "binom_test_less.") + binom_test_less = Holder() + binom_test_less.statistic = 51 + binom_test_less.parameter = 235 + binom_test_less.p_value = 0.982022657605858 + binom_test_less.conf_int = [0, 0.2659460862574313] + binom_test_less.estimate = 0.2170212765957447 + binom_test_less.null_value = 1. / 6 + binom_test_less.alternative = 'less' + binom_test_less.method = 'Exact binomial test' + binom_test_less.data_name = '51 and 235' + + #> bt = binom.test(51,235,(1/6),alternative="greater") + #> cat_items(bt, "binom_test_greater.") + binom_test_greater = Holder() + binom_test_greater.statistic = 51 + binom_test_greater.parameter = 235 + binom_test_greater.p_value = 0.02654424571169085 + binom_test_greater.conf_int = [0.1735252778065201, 1] + binom_test_greater.estimate = 0.2170212765957447 + binom_test_greater.null_value = 1. / 6 + binom_test_greater.alternative = 'greater' + binom_test_greater.method = 'Exact binomial test' + binom_test_greater.data_name = '51 and 235' + + #> bt = binom.test(51,235,(1/6),alternative="t") + #> cat_items(bt, "binom_test_2sided.") + binom_test_2sided = Holder() + binom_test_2sided.statistic = 51 + binom_test_2sided.parameter = 235 + binom_test_2sided.p_value = 0.0437479701823997 + binom_test_2sided.conf_int = [0.1660633298083073, 0.2752683640289254] + binom_test_2sided.estimate = 0.2170212765957447 + binom_test_2sided.null_value = 1. / 6 + binom_test_2sided.alternative = 'two.sided' + binom_test_2sided.method = 'Exact binomial test' + binom_test_2sided.data_name = '51 and 235' + + alltests = [('larger', binom_test_greater), + ('smaller', binom_test_less), + ('two-sided', binom_test_2sided)] + + for alt, res0 in alltests: + # only p-value is returned + res = smprop.binom_test(51, 235, prop=1. / 6, alternative=alt) + #assert_almost_equal(res[0], res0.statistic) + assert_almost_equal(res, res0.p_value, decimal=13) + + # R binom_test returns Copper-Pearson confint + ci_2s = smprop.proportion_confint(51, 235, alpha=0.05, method='beta') + ci_low, ci_upp = smprop.proportion_confint(51, 235, alpha=0.1, + method='beta') + assert_almost_equal(ci_2s, binom_test_2sided.conf_int, decimal=13) + assert_almost_equal(ci_upp, binom_test_less.conf_int[1], decimal=13) + assert_almost_equal(ci_low, binom_test_greater.conf_int[0], decimal=13) + + +def test_binom_rejection_interval(): + # consistency check with binom_test + # some code duplication but limit checks are different + alpha = 0.05 + nobs = 200 + prop = 12./20 + alternative='smaller' + ci_low, ci_upp = smprop.binom_test_reject_interval(prop, nobs, alpha=alpha, + alternative=alternative) + assert_equal(ci_upp, nobs) + pval = smprop.binom_test(ci_low, nobs, prop=prop, + alternative=alternative) + assert_array_less(pval, alpha) + pval = smprop.binom_test(ci_low + 1, nobs, prop=prop, + alternative=alternative) + assert_array_less(alpha, pval) + + alternative='larger' + ci_low, ci_upp = smprop.binom_test_reject_interval(prop, nobs, alpha=alpha, + alternative=alternative) + assert_equal(ci_low, 0) + pval = smprop.binom_test(ci_upp, nobs, prop=prop, + alternative=alternative) + assert_array_less(pval, alpha) + pval = smprop.binom_test(ci_upp - 1, nobs, prop=prop, + alternative=alternative) + assert_array_less(alpha, pval) + + alternative='two-sided' + ci_low, ci_upp = smprop.binom_test_reject_interval(prop, nobs, alpha=alpha, + alternative=alternative) + pval = smprop.binom_test(ci_upp, nobs, prop=prop, + alternative=alternative) + assert_array_less(pval, alpha) + pval = smprop.binom_test(ci_upp - 1, nobs, prop=prop, + alternative=alternative) + assert_array_less(alpha, pval) + pval = smprop.binom_test(ci_upp, nobs, prop=prop, + alternative=alternative) + assert_array_less(pval, alpha) + + pval = smprop.binom_test(ci_upp - 1, nobs, prop=prop, + alternative=alternative) + assert_array_less(alpha, pval) + + + +def test_binom_tost(): + # consistency check with two different implementation, + # proportion_confint is tested against R + # no reference case from other package available + ci = smprop.proportion_confint(10, 20, method='beta', alpha=0.1) + bt = smprop.binom_tost(10, 20, *ci) + assert_almost_equal(bt, [0.05] * 3, decimal=12) + + ci = smprop.proportion_confint(5, 20, method='beta', alpha=0.1) + bt = smprop.binom_tost(5, 20, *ci) + assert_almost_equal(bt, [0.05] * 3, decimal=12) + + # vectorized, TODO: observed proportion = 0 returns nan + ci = smprop.proportion_confint(np.arange(1, 20), 20, method='beta', + alpha=0.05) + bt = smprop.binom_tost(np.arange(1, 20), 20, *ci) + bt = np.asarray(bt) + assert_almost_equal(bt, 0.025 * np.ones(bt.shape), decimal=12) + +def test_power_binom_tost(): + # comparison numbers from PASS manual + p_alt = 0.6 + np.linspace(0, 0.09, 10) + power = smprop.power_binom_tost(0.5, 0.7, 500, p_alt=p_alt, alpha=0.05) + res_power = np.array([0.9965, 0.9940, 0.9815, 0.9482, 0.8783, 0.7583, + 0.5914, 0.4041, 0.2352, 0.1139]) + assert_almost_equal(power, res_power, decimal=4) + + rej_int = smprop.binom_tost_reject_interval(0.5, 0.7, 500) + res_rej_int = (269, 332) + assert_equal(rej_int, res_rej_int) + + # TODO: actual alpha=0.0489 for all p_alt above + + # another case + nobs = np.arange(20, 210, 20) + power = smprop.power_binom_tost(0.4, 0.6, nobs, p_alt=0.5, alpha=0.05) + res_power = np.array([ 0., 0., 0., 0.0889, 0.2356, 0.3517, 0.4457, + 0.6154, 0.6674, 0.7708]) + # TODO: I currently don't impose power>=0, i.e np.maximum(power, 0) + assert_almost_equal(np.maximum(power, 0), res_power, decimal=4) + +def test_power_ztost_prop(): + power = smprop.power_ztost_prop(0.1, 0.9, 10, p_alt=0.6, alpha=0.05, + discrete=True, dist='binom')[0] + assert_almost_equal(power, 0.8204, decimal=4) # PASS example + + with warnings.catch_warnings(): # python >= 2.6 + warnings.simplefilter("ignore", HypothesisTestWarning) + power = smprop.power_ztost_prop(0.4, 0.6, np.arange(20, 210, 20), + p_alt=0.5, alpha=0.05, discrete=False, + dist='binom')[0] + + res_power = np.array([ 0., 0., 0., 0.0889, 0.2356, 0.4770, 0.5530, + 0.6154, 0.7365, 0.7708]) + # TODO: I currently don't impose power>=0, i.e np.maximum(power, 0) + assert_almost_equal(np.maximum(power, 0), res_power, decimal=4) + + # with critval_continuity correction + power = smprop.power_ztost_prop(0.4, 0.6, np.arange(20, 210, 20), + p_alt=0.5, alpha=0.05, discrete=False, + dist='binom', variance_prop=None, + continuity=2, critval_continuity=1)[0] + + res_power = np.array([0., 0., 0., 0.0889, 0.2356, 0.3517, 0.4457, + 0.6154, 0.6674, 0.7708]) + # TODO: I currently don't impose power>=0, i.e np.maximum(power, 0) + assert_almost_equal(np.maximum(power, 0), res_power, decimal=4) + + power = smprop.power_ztost_prop(0.4, 0.6, np.arange(20, 210, 20), + p_alt=0.5, alpha=0.05, discrete=False, + dist='binom', variance_prop=0.5, + critval_continuity=1)[0] + + res_power = np.array([0., 0., 0., 0.0889, 0.2356, 0.3517, 0.4457, + 0.6154, 0.6674, 0.7112]) + # TODO: I currently don't impose power>=0, i.e np.maximum(power, 0) + assert_almost_equal(np.maximum(power, 0), res_power, decimal=4) + +def test_ztost(): + xfair = np.repeat([1,0], [228, 762-228]) + + # comparing to SAS last output at + # http://support.sas.com/documentation/cdl/en/procstat/63104/HTML/default/viewer.htm#procstat_freq_sect028.htm + # confidence interval for tost + # generic ztost is moved to weightstats + from statsmodels.stats.weightstats import zconfint, ztost + ci01 = zconfint(xfair, alpha=0.1, ddof=0) + assert_almost_equal(ci01, [0.2719, 0.3265], 4) + res = ztost(xfair, 0.18, 0.38, ddof=0) + + assert_almost_equal(res[1][0], 7.1865, 4) + assert_almost_equal(res[2][0], -4.8701, 4) + assert_array_less(res[0], 0.0001) + + +def test_power_ztost_prop_norm(): + # regression test for normal distribution + # from a rough comparison, the results and variations look reasonable + with pytest.warns(HypothesisTestWarning): + power = smprop.power_ztost_prop(0.4, 0.6, np.arange(20, 210, 20), + p_alt=0.5, alpha=0.05, discrete=False, + dist='norm', variance_prop=0.5, + continuity=0, critval_continuity=0)[0] + + res_power = np.array([0., 0., 0., 0.11450013, 0.27752006, 0.41495922, + 0.52944621, 0.62382638, 0.70092914, 0.76341806]) + # TODO: I currently don't impose power>=0, i.e np.maximum(power, 0) + assert_almost_equal(np.maximum(power, 0), res_power, decimal=4) + + # regression test for normal distribution + with pytest.warns(HypothesisTestWarning): + power = smprop.power_ztost_prop(0.4, 0.6, np.arange(20, 210, 20), + p_alt=0.5, alpha=0.05, discrete=False, + dist='norm', variance_prop=0.5, + continuity=1, critval_continuity=0)[0] + + res_power = np.array([0., 0., 0.02667562, 0.20189793, 0.35099606, + 0.47608598, 0.57981118, 0.66496683, 0.73427591, + 0.79026127]) + # TODO: I currently don't impose power>=0, i.e np.maximum(power, 0) + assert_almost_equal(np.maximum(power, 0), res_power, decimal=4) + + # regression test for normal distribution + with pytest.warns(HypothesisTestWarning): + power = smprop.power_ztost_prop(0.4, 0.6, np.arange(20, 210, 20), + p_alt=0.5, alpha=0.05, discrete=True, + dist='norm', variance_prop=0.5, + continuity=1, critval_continuity=0)[0] + + res_power = np.array([0., 0., 0., 0.08902071, 0.23582284, 0.35192313, + 0.55312718, 0.61549537, 0.66743625, 0.77066806]) + # TODO: I currently don't impose power>=0, i.e np.maximum(power, 0) + assert_almost_equal(np.maximum(power, 0), res_power, decimal=4) + + # regression test for normal distribution + with pytest.warns(HypothesisTestWarning): + power = smprop.power_ztost_prop(0.4, 0.6, np.arange(20, 210, 20), + p_alt=0.5, alpha=0.05, discrete=True, + dist='norm', variance_prop=0.5, + continuity=1, critval_continuity=1)[0] + + res_power = np.array([0., 0., 0., 0.08902071, 0.23582284, 0.35192313, + 0.44588687, 0.61549537, 0.66743625, 0.71115563]) + # TODO: I currently don't impose power>=0, i.e np.maximum(power, 0) + assert_almost_equal(np.maximum(power, 0), res_power, decimal=4) + + # regression test for normal distribution + with pytest.warns(HypothesisTestWarning): + power = smprop.power_ztost_prop(0.4, 0.6, np.arange(20, 210, 20), + p_alt=0.5, alpha=0.05, discrete=True, + dist='norm', variance_prop=None, + continuity=0, critval_continuity=0)[0] + + res_power = np.array([0., 0., 0., 0., 0.15851942, 0.41611758, + 0.5010377, 0.5708047, 0.70328247, 0.74210096]) + # TODO: I currently don't impose power>=0, i.e np.maximum(power, 0) + assert_almost_equal(np.maximum(power, 0), res_power, decimal=4) + + +def test_proportion_ztests(): + # currently only consistency test with proportions chisquare + # Note: alternative handling is generic + + res1 = smprop.proportions_ztest(15, 20., value=0.5, prop_var=0.5) + res2 = smprop.proportions_chisquare(15, 20., value=0.5) + assert_almost_equal(res1[1], res2[1], decimal=13) + + res1 = smprop.proportions_ztest(np.asarray([15, 10]), np.asarray([20., 20]), + value=0, prop_var=None) + res2 = smprop.proportions_chisquare(np.asarray([15, 10]), np.asarray([20., 20])) + # test only p-value + assert_almost_equal(res1[1], res2[1], decimal=13) diff --git a/statsmodels/stats/tests/test_qsturng.py b/statsmodels/stats/tests/test_qsturng.py new file mode 100644 index 0000000..2509bd8 --- /dev/null +++ b/statsmodels/stats/tests/test_qsturng.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +""" + +Created on Wed Mar 28 13:49:11 2012 + +Author: Josef Perktold +""" + +import pytest +import numpy as np +from numpy.testing import assert_almost_equal + +from statsmodels.stats.libqsturng import qsturng, psturng +from statsmodels.sandbox.stats.multicomp import get_tukeyQcrit + + +@pytest.mark.parametrize('alpha', [0.01, 0.05]) +@pytest.mark.parametrize('k', np.arange(2, 11)) +def test_qstrung(alpha, k): + rows = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 24, 30, 40, 60, 120, 9999] + + c1 = get_tukeyQcrit(k, rows, alpha=alpha) + c2 = qsturng(1 - alpha, k, rows) + assert_almost_equal(c1, c2, decimal=2) + # roundtrip + assert_almost_equal(psturng(qsturng(1 - alpha, k, rows), k, rows), + alpha, + 5) diff --git a/statsmodels/stats/tests/test_regularized_covariance.py b/statsmodels/stats/tests/test_regularized_covariance.py new file mode 100644 index 0000000..a84f0b4 --- /dev/null +++ b/statsmodels/stats/tests/test_regularized_covariance.py @@ -0,0 +1,53 @@ +import numpy as np +from numpy.testing import assert_equal, assert_ +from statsmodels.stats.regularized_covariance import ( + _calc_nodewise_row, _calc_nodewise_weight, + _calc_approx_inv_cov, RegularizedInvCovariance) + + +def test_calc_nodewise_row(): + + np.random.seed(435265) + X = np.random.normal(size=(50, 3)) + ghat = _calc_nodewise_row(X, 0, 0.01) + assert_equal(ghat.shape, (2,)) + + +def test_calc_nodewise_weight(): + + np.random.seed(435265) + X = np.random.normal(size=(50, 3)) + ghat = np.random.normal(size=2) + that = _calc_nodewise_weight(X, ghat, 0, 0.01) + assert_(isinstance(that, float)) + + +def test_calc_approx_inv_cov(): + + np.random.seed(435265) + X = np.random.normal(size=(50, 3)) + ghat_l = [] + that_l = [] + for i in range(3): + ghat = _calc_nodewise_row(X, i, 0.01) + that = _calc_nodewise_weight(X, ghat, i, 0.01) + ghat_l.append(ghat) + that_l.append(that) + theta_hat = _calc_approx_inv_cov(np.array(ghat_l), np.array(that_l)) + assert_equal(theta_hat.shape, (3, 3)) + + +def test_fit(): + + np.random.seed(435265) + X = np.random.normal(size=(50, 3)) + inv = np.linalg.inv(np.cov(X.T)) + regcov = RegularizedInvCovariance(exog=X) + regcov.fit() + # check that unregularized is what we expect + diff = np.linalg.norm(regcov.approx_inv_cov() - inv) + assert_(diff < 0.1) + + # check that regularizing actually does something + regcov.fit(alpha=0.5) + assert_(np.sum(regcov.approx_inv_cov() == 0) > np.sum(inv == 0)) diff --git a/statsmodels/stats/tests/test_sandwich.py b/statsmodels/stats/tests/test_sandwich.py new file mode 100644 index 0000000..46e7cbb --- /dev/null +++ b/statsmodels/stats/tests/test_sandwich.py @@ -0,0 +1,90 @@ +# -*- coding: utf-8 -*- +"""Tests for sandwich robust covariance estimation + +see also in regression for cov_hac compared to Gretl and +sandbox.panel test_random_panel for comparing cov_cluster, cov_hac_panel and +cov_white + +Created on Sat Dec 17 08:39:16 2011 + +Author: Josef Perktold +""" +import numpy as np +from numpy.testing import assert_almost_equal + +from statsmodels.regression.linear_model import OLS +from statsmodels.tools.tools import add_constant +import statsmodels.stats.sandwich_covariance as sw + + +def test_cov_cluster_2groups(): + #comparing cluster robust standard errors to Peterson + #requires Petersen's test_data + #http://www.kellogg.northwestern.edu/faculty/petersen/htm/papers/se/test_data.txt + import os + cur_dir = os.path.abspath(os.path.dirname(__file__)) + fpath = os.path.join(cur_dir,"test_data.txt") + pet = np.genfromtxt(fpath) + endog = pet[:,-1] + group = pet[:,0].astype(int) + time = pet[:,1].astype(int) + exog = add_constant(pet[:,2]) + res = OLS(endog, exog).fit() + + cov01, covg, covt = sw.cov_cluster_2groups(res, group, group2=time) + + #Reference number from Petersen + #http://www.kellogg.northwestern.edu/faculty/petersen/htm/papers/se/test_data.htm + + bse_petw = [0.0284, 0.0284] + bse_pet0 = [0.0670, 0.0506] + bse_pet1 = [0.0234, 0.0334] #year + bse_pet01 = [0.0651, 0.0536] #firm and year + bse_0 = sw.se_cov(covg) + bse_1 = sw.se_cov(covt) + bse_01 = sw.se_cov(cov01) + #print res.HC0_se, bse_petw - res.HC0_se + #print bse_0, bse_0 - bse_pet0 + #print bse_1, bse_1 - bse_pet1 + #print bse_01, bse_01 - bse_pet01 + assert_almost_equal(bse_petw, res.HC0_se, decimal=4) + assert_almost_equal(bse_0, bse_pet0, decimal=4) + assert_almost_equal(bse_1, bse_pet1, decimal=4) + assert_almost_equal(bse_01, bse_pet01, decimal=4) + +def test_hac_simple(): + + from statsmodels.datasets import macrodata + d2 = macrodata.load_pandas().data + g_gdp = 400*np.diff(np.log(d2['realgdp'].values)) + g_inv = 400*np.diff(np.log(d2['realinv'].values)) + exogg = add_constant(np.c_[g_gdp, d2['realint'][:-1].values]) + res_olsg = OLS(g_inv, exogg).fit() + + + + #> NeweyWest(fm, lag = 4, prewhite = FALSE, sandwich = TRUE, verbose=TRUE, adjust=TRUE) + #Lag truncation parameter chosen: 4 + # (Intercept) ggdp lint + cov1_r = [[ 1.40643899878678802, -0.3180328707083329709, -0.060621111216488610], + [ -0.31803287070833292, 0.1097308348999818661, 0.000395311760301478], + [ -0.06062111121648865, 0.0003953117603014895, 0.087511528912470993]] + + #> NeweyWest(fm, lag = 4, prewhite = FALSE, sandwich = TRUE, verbose=TRUE, adjust=FALSE) + #Lag truncation parameter chosen: 4 + # (Intercept) ggdp lint + cov2_r = [[ 1.3855512908840137, -0.313309610252268500, -0.059720797683570477], + [ -0.3133096102522685, 0.108101169035130618, 0.000389440793564339], + [ -0.0597207976835705, 0.000389440793564336, 0.086211852740503622]] + + cov1 = sw.cov_hac_simple(res_olsg, nlags=4, use_correction=True) + se1 = sw.se_cov(cov1) + cov2 = sw.cov_hac_simple(res_olsg, nlags=4, use_correction=False) + se2 = sw.se_cov(cov2) + assert_almost_equal(cov1, cov1_r, decimal=14) + assert_almost_equal(cov2, cov2_r, decimal=14) + + # compare default for nlags + cov3 = sw.cov_hac_simple(res_olsg, use_correction=False) + cov4 = sw.cov_hac_simple(res_olsg, nlags=4, use_correction=False) + assert_almost_equal(cov3, cov4, decimal=14) diff --git a/statsmodels/stats/tests/test_statstools.py b/statsmodels/stats/tests/test_statstools.py new file mode 100644 index 0000000..15714a6 --- /dev/null +++ b/statsmodels/stats/tests/test_statstools.py @@ -0,0 +1,300 @@ +# TODO: Test robust skewness +# TODO: Test robust kurtosis +import numpy as np +import pandas as pd +from numpy.testing import (assert_almost_equal, assert_raises, assert_equal) +from statsmodels.stats.stattools import (omni_normtest, jarque_bera, + durbin_watson, _medcouple_1d, medcouple, + robust_kurtosis, robust_skewness) +from statsmodels.stats._adnorm import normal_ad + +#a random array, rounded to 4 decimals +x = np.array([-0.1184, -1.3403, 0.0063, -0.612, -0.3869, -0.2313, -2.8485, + -0.2167, 0.4153, 1.8492, -0.3706, 0.9726, -0.1501, -0.0337, + -1.4423, 1.2489, 0.9182, -0.2331, -0.6182, 0.183]) + + +def test_durbin_watson(): + #benchmark values from R car::durbinWatsonTest(x) + #library("car") + #> durbinWatsonTest(x) + #[1] 1.95298958377419 + #> durbinWatsonTest(x**2) + #[1] 1.848802400319998 + #> durbinWatsonTest(x[2:20]+0.5*x[1:19]) + #[1] 1.09897993228779 + #> durbinWatsonTest(x[2:20]+0.8*x[1:19]) + #[1] 0.937241876707273 + #> durbinWatsonTest(x[2:20]+0.9*x[1:19]) + #[1] 0.921488912587806 + st_R = 1.95298958377419 + assert_almost_equal(durbin_watson(x), st_R, 14) + + st_R = 1.848802400319998 + assert_almost_equal(durbin_watson(x**2), st_R, 14) + + st_R = 1.09897993228779 + assert_almost_equal(durbin_watson(x[1:] + 0.5 * x[:-1]), st_R, 14) + + st_R = 0.937241876707273 + assert_almost_equal(durbin_watson(x[1:] + 0.8 * x[:-1]), st_R, 14) + + st_R = 0.921488912587806 + assert_almost_equal(durbin_watson(x[1:] + 0.9 * x[:-1]), st_R, 14) + + +def test_omni_normtest(): + #tests against R fBasics + from scipy import stats + + st_pv_R = np.array( + [[3.994138321207883, -1.129304302161460, 1.648881473704978], + [0.1357325110375005, 0.2587694866795507, 0.0991719192710234]]) + + nt = omni_normtest(x) + assert_almost_equal(nt, st_pv_R[:, 0], 14) + + st = stats.skewtest(x) + assert_almost_equal(st, st_pv_R[:, 1], 14) + + kt = stats.kurtosistest(x) + assert_almost_equal(kt, st_pv_R[:, 2], 11) + + st_pv_R = np.array( + [[34.523210399523926, 4.429509162503833, 3.860396220444025], + [3.186985686465249e-08, 9.444780064482572e-06, 1.132033129378485e-04]]) + + x2 = x**2 + #TODO: fix precision in these test with relative tolerance + nt = omni_normtest(x2) + assert_almost_equal(nt, st_pv_R[:, 0], 12) + + st = stats.skewtest(x2) + assert_almost_equal(st, st_pv_R[:, 1], 12) + + kt = stats.kurtosistest(x2) + assert_almost_equal(kt, st_pv_R[:, 2], 12) + + +def test_omni_normtest_axis(reset_randomstate): + #test axis of omni_normtest + x = np.random.randn(25, 3) + nt1 = omni_normtest(x) + nt2 = omni_normtest(x, axis=0) + nt3 = omni_normtest(x.T, axis=1) + assert_almost_equal(nt2, nt1, decimal=13) + assert_almost_equal(nt3, nt1, decimal=13) + + +def test_jarque_bera(): + #tests against R fBasics + st_pv_R = np.array([1.9662677226861689, 0.3741367669648314]) + jb = jarque_bera(x)[:2] + assert_almost_equal(jb, st_pv_R, 14) + + st_pv_R = np.array([78.329987305556, 0.000000000000]) + jb = jarque_bera(x**2)[:2] + assert_almost_equal(jb, st_pv_R, 13) + + st_pv_R = np.array([5.7135750796706670, 0.0574530296971343]) + jb = jarque_bera(np.log(x**2))[:2] + assert_almost_equal(jb, st_pv_R, 14) + + st_pv_R = np.array([2.6489315748495761, 0.2659449923067881]) + jb = jarque_bera(np.exp(-x**2))[:2] + assert_almost_equal(jb, st_pv_R, 14) + + +def test_shapiro(): + #tests against R fBasics + #testing scipy.stats + from scipy.stats import shapiro + + st_pv_R = np.array([0.939984787255526, 0.239621898000460]) + sh = shapiro(x) + assert_almost_equal(sh, st_pv_R, 4) + + #st is ok -7.15e-06, pval agrees at -3.05e-10 + st_pv_R = np.array([5.799574255943298e-01, 1.838456834681376e-06 * 1e4]) + sh = shapiro(x**2) * np.array([1, 1e4]) + assert_almost_equal(sh, st_pv_R, 5) + + st_pv_R = np.array([0.91730442643165588, 0.08793704167882448]) + sh = shapiro(np.log(x**2)) + assert_almost_equal(sh, st_pv_R, 5) + + #diff is [ 9.38773155e-07, 5.48221246e-08] + st_pv_R = np.array([0.818361863493919373, 0.001644620895206969]) + sh = shapiro(np.exp(-x**2)) + assert_almost_equal(sh, st_pv_R, 5) + + +def test_adnorm(): + #tests against R fBasics + st_pv = [] + st_pv_R = np.array([0.5867235358882148, 0.1115380760041617]) + ad = normal_ad(x) + assert_almost_equal(ad, st_pv_R, 12) + st_pv.append(st_pv_R) + + st_pv_R = np.array([2.976266267594575e+00, 8.753003709960645e-08]) + ad = normal_ad(x**2) + assert_almost_equal(ad, st_pv_R, 11) + st_pv.append(st_pv_R) + + st_pv_R = np.array([0.4892557856308528, 0.1968040759316307]) + ad = normal_ad(np.log(x**2)) + assert_almost_equal(ad, st_pv_R, 12) + st_pv.append(st_pv_R) + + st_pv_R = np.array([1.4599014654282669312, 0.0006380009232897535]) + ad = normal_ad(np.exp(-x**2)) + assert_almost_equal(ad, st_pv_R, 12) + st_pv.append(st_pv_R) + + ad = normal_ad(np.column_stack((x, x**2, np.log(x**2), np.exp(-x**2))).T, + axis=1) + assert_almost_equal(ad, np.column_stack(st_pv), 11) + + +def test_durbin_watson_pandas(reset_randomstate): + x = np.random.randn(50) + x_series = pd.Series(x) + assert_almost_equal(durbin_watson(x), durbin_watson(x_series), decimal=13) + + +class TestStattools(object): + @classmethod + def setup_class(cls): + x = np.random.standard_normal(1000) + e1, e2, e3, e4, e5, e6, e7 = np.percentile(x, (12.5, 25.0, 37.5, 50.0, 62.5, 75.0, 87.5)) + c05, c50, c95 = np.percentile(x, (5.0, 50.0, 95.0)) + f025, f25, f75, f975 = np.percentile(x, (2.5, 25.0, 75.0, 97.5)) + mean = np.mean + kr1 = mean(((x - mean(x)) / np.std(x))**4.0) - 3.0 + kr2 = ((e7 - e5) + (e3 - e1)) / (e6 - e2) - 1.2330951154852172 + kr3 = (mean(x[x > c95]) - mean(x[x < c05])) / (mean(x[x > c50]) - mean(x[x < c50])) - 2.5852271228708048 + kr4 = (f975 - f025) / (f75 - f25) - 2.9058469516701639 + cls.kurtosis_x = x + cls.expected_kurtosis = np.array([kr1, kr2, kr3, kr4]) + cls.kurtosis_constants = np.array([3.0,1.2330951154852172,2.5852271228708048,2.9058469516701639]) + + def test_medcouple_no_axis(self): + x = np.reshape(np.arange(100.0), (50, 2)) + mc = medcouple(x, axis=None) + assert_almost_equal(mc, medcouple(x.ravel())) + + def test_medcouple_1d(self): + x = np.reshape(np.arange(100.0),(50,2)) + assert_raises(ValueError, _medcouple_1d, x) + + def test_medcouple_symmetric(self): + mc = medcouple(np.arange(5.0)) + assert_almost_equal(mc, 0) + + def test_medcouple_nonzero(self): + mc = medcouple(np.array([1, 2, 7, 9, 10.0])) + assert_almost_equal(mc, -0.3333333) + + def test_medcouple_int(self): + # GH 4243 + mc1 = medcouple(np.array([1, 2, 7, 9, 10])) + mc2 = medcouple(np.array([1, 2, 7, 9, 10.0])) + assert_equal(mc1, mc2) + + def test_medcouple_symmetry(self, reset_randomstate): + x = np.random.standard_normal(100) + mcp = medcouple(x) + mcn = medcouple(-x) + assert_almost_equal(mcp + mcn, 0) + + def test_medcouple_ties(self, reset_randomstate): + x = np.array([1, 2, 2, 3, 4]) + mc = medcouple(x) + assert_almost_equal(mc, 1.0 / 6.0) + + def test_durbin_watson(self, reset_randomstate): + x = np.random.standard_normal(100) + dw = sum(np.diff(x)**2.0) / np.dot(x, x) + assert_almost_equal(dw, durbin_watson(x)) + + def test_durbin_watson_2d(self, reset_randomstate): + shape = (1, 10) + x = np.random.standard_normal(100) + dw = sum(np.diff(x)**2.0) / np.dot(x, x) + x = np.tile(x[:, None], shape) + assert_almost_equal(np.squeeze(dw * np.ones(shape)), durbin_watson(x)) + + def test_durbin_watson_3d(self, reset_randomstate): + shape = (10, 1, 10) + x = np.random.standard_normal(100) + dw = sum(np.diff(x)**2.0) / np.dot(x, x) + x = np.tile(x[None, :, None], shape) + assert_almost_equal(np.squeeze(dw * np.ones(shape)), durbin_watson(x, axis=1)) + + def test_robust_skewness_1d(self): + x = np.arange(21.0) + sk = robust_skewness(x) + assert_almost_equal(np.array(sk), np.zeros(4)) + + def test_robust_skewness_1d_2d(self, reset_randomstate): + x = np.random.randn(21) + y = x[:, None] + sk_x = robust_skewness(x) + sk_y = robust_skewness(y, axis=None) + assert_almost_equal(np.array(sk_x), np.array(sk_y)) + + def test_robust_skewness_symmetric(self, reset_randomstate): + x = np.random.standard_normal(100) + x = np.hstack([x, np.zeros(1), -x]) + sk = robust_skewness(x) + assert_almost_equal(np.array(sk), np.zeros(4)) + + def test_robust_skewness_3d(self, reset_randomstate): + x = np.random.standard_normal(100) + x = np.hstack([x, np.zeros(1), -x]) + x = np.tile(x, (10, 10, 1)) + sk_3d = robust_skewness(x, axis=2) + result = np.zeros((10, 10)) + for sk in sk_3d: + assert_almost_equal(sk, result) + + def test_robust_kurtosis_1d_2d(self, reset_randomstate): + x = np.random.randn(100) + y = x[:, None] + kr_x = np.array(robust_kurtosis(x)) + kr_y = np.array(robust_kurtosis(y, axis=None)) + assert_almost_equal(kr_x, kr_y) + + def test_robust_kurtosis(self): + x = self.kurtosis_x + assert_almost_equal(np.array(robust_kurtosis(x)), self.expected_kurtosis) + + def test_robust_kurtosis_3d(self): + x = np.tile(self.kurtosis_x, (10, 10, 1)) + kurtosis = np.array(robust_kurtosis(x, axis=2)) + for i, r in enumerate(self.expected_kurtosis): + assert_almost_equal(r * np.ones((10, 10)), kurtosis[i]) + + def test_robust_kurtosis_excess_false(self): + x = self.kurtosis_x + expected = self.expected_kurtosis + self.kurtosis_constants + kurtosis = np.array(robust_kurtosis(x, excess=False)) + assert_almost_equal(expected, kurtosis) + + def test_robust_kurtosis_ab(self): + # Test custom alpha, beta in kr3 + x = self.kurtosis_x + alpha, beta = (10.0, 45.0) + kurtosis = robust_kurtosis(self.kurtosis_x, ab=(alpha,beta), excess=False) + num = np.mean(x[x>np.percentile(x,100.0 - alpha)]) - np.mean(x[xnp.percentile(x,100.0 - beta)]) - np.mean(x[x t = tost(-clinic$var1[16:30] + clinic$var1[1:15], eps=0.6) +#> cat_items(t, prefix="tost_clinic_paired_1.") +tost_clinic_paired_1 = Holder() +tost_clinic_paired_1.mean_diff = 0.1646666666666667 +tost_clinic_paired_1.se_diff = 0.1357514067862445 +tost_clinic_paired_1.alpha = 0.05 +tost_clinic_paired_1.ci_diff = (-0.0744336620516462, 0.4037669953849797) +tost_clinic_paired_1.df = 14 +tost_clinic_paired_1.epsilon = 0.6 +tost_clinic_paired_1.result = 'rejected' +tost_clinic_paired_1.p_value = 0.003166881489265175 +tost_clinic_paired_1.check_me = (-0.2706666666666674, 0.600000000000001) + + +#> t = tost(clinic$var2[1:15], clinic$var2[16:30], eps=0.6) +#> cat_items(t, prefix="tost_clinic_indep.") +tost_clinic_indep = Holder() +tost_clinic_indep.sample = 'independent' +tost_clinic_indep.mean_diff = 0.562666666666666 +tost_clinic_indep.se_diff = 0.2149871904637392 +tost_clinic_indep.alpha = 0.05 +tost_clinic_indep.ci_diff = (0.194916250699966, 0.930417082633366) +tost_clinic_indep.df = 24.11000151062728 +tost_clinic_indep.epsilon = 0.6 +tost_clinic_indep.result = 'not rejected' +tost_clinic_indep.p_value = 0.4317936812594803 +tost_clinic_indep.check_me = (0.525333333333332, 0.6) + +#> t = tost(clinic$var1[1:15], clinic$var1[16:30], eps=0.6) +#> cat_items(t, prefix="tost_clinic_indep_1.") +tost_clinic_indep_1 = Holder() +tost_clinic_indep_1.sample = 'independent' +tost_clinic_indep_1.mean_diff = 0.1646666666666667 +tost_clinic_indep_1.se_diff = 0.2531625991083627 +tost_clinic_indep_1.alpha = 0.05 +tost_clinic_indep_1.ci_diff = (-0.2666862980722534, 0.596019631405587) +tost_clinic_indep_1.df = 26.7484787582315 +tost_clinic_indep_1.epsilon = 0.6 +tost_clinic_indep_1.result = 'rejected' +tost_clinic_indep_1.p_value = 0.04853083976236974 +tost_clinic_indep_1.check_me = (-0.2706666666666666, 0.6) + +#pooled variance +#> t = tost(clinic$var1[1:15], clinic$var1[16:30], eps=0.6, var.equal = TRUE) +#> cat_items(t, prefix="tost_clinic_indep_1_pooled.") +tost_clinic_indep_1_pooled = Holder() +tost_clinic_indep_1_pooled.mean_diff = 0.1646666666666667 +tost_clinic_indep_1_pooled.se_diff = 0.2531625991083628 +tost_clinic_indep_1_pooled.alpha = 0.05 +tost_clinic_indep_1_pooled.ci_diff = (-0.2659960620757337, 0.595329395409067) +tost_clinic_indep_1_pooled.df = 28 +tost_clinic_indep_1_pooled.epsilon = 0.6 +tost_clinic_indep_1_pooled.result = 'rejected' +tost_clinic_indep_1_pooled.p_value = 0.04827315100761467 +tost_clinic_indep_1_pooled.check_me = (-0.2706666666666666, 0.6) + +#> t = tost(clinic$var2[1:15], clinic$var2[16:30], eps=0.6, var.equal = TRUE) +#> cat_items(t, prefix="tost_clinic_indep_2_pooled.") +tost_clinic_indep_2_pooled = Holder() +tost_clinic_indep_2_pooled.mean_diff = 0.562666666666666 +tost_clinic_indep_2_pooled.se_diff = 0.2149871904637392 +tost_clinic_indep_2_pooled.alpha = 0.05 +tost_clinic_indep_2_pooled.ci_diff = (0.1969453064978777, 0.928388026835454) +tost_clinic_indep_2_pooled.df = 28 +tost_clinic_indep_2_pooled.epsilon = 0.6 +tost_clinic_indep_2_pooled.result = 'not rejected' +tost_clinic_indep_2_pooled.p_value = 0.43169347692374 +tost_clinic_indep_2_pooled.check_me = (0.525333333333332, 0.6) + + +#tost ratio, log transformed +#> t = tost(log(clinic$var1[1:15]), log(clinic$var1[16:30]), eps=log(1.25), paired=TRUE) +#> cat_items(t, prefix="tost_clinic_1_paired.") +tost_clinic_1_paired = Holder() +tost_clinic_1_paired.mean_diff = 0.0431223318225235 +tost_clinic_1_paired.se_diff = 0.03819576328421437 +tost_clinic_1_paired.alpha = 0.05 +tost_clinic_1_paired.ci_diff = (-0.02415225319362176, 0.1103969168386687) +tost_clinic_1_paired.df = 14 +tost_clinic_1_paired.epsilon = 0.2231435513142098 +tost_clinic_1_paired.result = 'rejected' +tost_clinic_1_paired.p_value = 0.0001664157928976468 +tost_clinic_1_paired.check_me = (-0.1368988876691603, 0.2231435513142073) + +#> t = tost(log(clinic$var1[1:15]), log(clinic$var1[16:30]), eps=log(1.25), paired=FALSE) +#> cat_items(t, prefix="tost_clinic_1_indep.") +tost_clinic_1_indep = Holder() +tost_clinic_1_indep.mean_diff = 0.04312233182252334 +tost_clinic_1_indep.se_diff = 0.073508371131806 +tost_clinic_1_indep.alpha = 0.05 +tost_clinic_1_indep.ci_diff = (-0.0819851930203655, 0.1682298566654122) +tost_clinic_1_indep.df = 27.61177037646526 +tost_clinic_1_indep.epsilon = 0.2231435513142098 +tost_clinic_1_indep.result = 'rejected' +tost_clinic_1_indep.p_value = 0.01047085593138891 +tost_clinic_1_indep.check_me = (-0.1368988876691633, 0.22314355131421) + +#> t = tost(log(y), log(x), eps=log(1.25), paired=TRUE) +#> cat_items(t, prefix="tost_s_paired.") +tost_s_paired = Holder() +tost_s_paired.mean_diff = 0.06060076667771316 +tost_s_paired.se_diff = 0.04805826005366752 +tost_s_paired.alpha = 0.05 +tost_s_paired.ci_diff = (-0.0257063329659993, 0.1469078663214256) +tost_s_paired.df = 11 +tost_s_paired.epsilon = 0.2231435513142098 +tost_s_paired.result = 'rejected' +tost_s_paired.p_value = 0.003059338540563293 +tost_s_paired.check_me = (-0.1019420179587835, 0.2231435513142098) + +#multiple endpoints +#> compvall <- multeq.diff(data=clinic,grp="fact",method="step.up",margin.up=rep(0.6,5), margin.lo=c(-1.0, -1.0, -1.5, -1.5, -1.5)) +#> cat_items(compvall, prefix="tost_clinic_all_no_multi.") +tost_clinic_all_no_multi = Holder() +tost_clinic_all_no_multi.comp_name = '2-1' +tost_clinic_all_no_multi.estimate = np.array([ + -0.1646666666666667, -0.562666666666666, -0.3073333333333332, + -0.5553333333333335, -0.469333333333333]) +tost_clinic_all_no_multi.degr_fr = np.array([ + 26.74847875823152, 24.1100015106273, 23.90046331918926, + 25.71678948210178, 24.88436709341423]) +tost_clinic_all_no_multi.test_stat = np.array([ + 3.020456692101513, 2.034229724989578, 4.052967897750272, + 4.37537447933403, 4.321997343344]) +tost_clinic_all_no_multi.p_value = np.array([ + 0.00274867705173331, 0.02653543052872217, 0.0002319468040526358, + 8.916466517494902e-05, 0.00010890038649094043]) +tost_clinic_all_no_multi.lower = np.array([ + -0.596019631405587, -0.930417082633366, -0.690410573009442, + -0.92373513818557, -0.876746448909633]) +tost_clinic_all_no_multi.upper = np.array([ + 0.2666862980722534, -0.194916250699966, 0.07574390634277595, + -0.186931528481097, -0.06192021775703377]) +tost_clinic_all_no_multi.margin_lo = np.array([ + -1, -1, -1.5, -1.5, -1.5]) +tost_clinic_all_no_multi.margin_up = np.array([ + 0.6, 0.6, 0.6, 0.6, 0.6]) +tost_clinic_all_no_multi.base = 1 +tost_clinic_all_no_multi.method = 'step.up' +tost_clinic_all_no_multi.var_equal = '''FALSE''' +tost_clinic_all_no_multi.FWER = 0.05 + + + +#> comp <- multeq.diff(data=clinic,grp="fact", resp=c("var1"),method="step.up",margin.up=rep(0.6), margin.lo=rep(-1.5)) +#> cat_items(comp, prefix="tost_clinic_1_asym.") +tost_clinic_1_asym = Holder +tost_clinic_1_asym.comp_name = '2-1' +tost_clinic_1_asym.estimate = -0.1646666666666667 +tost_clinic_1_asym.degr_fr = 26.74847875823152 +tost_clinic_1_asym.test_stat = 3.020456692101513 +tost_clinic_1_asym.p_value = 0.00274867705173331 +tost_clinic_1_asym.lower = -0.596019631405587 +tost_clinic_1_asym.upper = 0.2666862980722534 +tost_clinic_1_asym.margin_lo = -1.5 +tost_clinic_1_asym.margin_up = 0.6 +tost_clinic_1_asym.base = 1 +tost_clinic_1_asym.method = 'step.up' +tost_clinic_1_asym.var_equal = '''FALSE''' +tost_clinic_1_asym.FWER = 0.05 + +#TODO: not used yet, some p-values are multi-testing adjusted +# not implemented +#> compvall <- multeq.diff(data=clinic,grp="fact",method="step.up",margin.up=rep(0.6,5), margin.lo=c(-0.5, -0.5, -1.5, -1.5, -1.5)) +#> cat_items(compvall, prefix="tost_clinic_all_multi.") +tost_clinic_all_multi = Holder() +tost_clinic_all_multi.comp_name = '2-1' +tost_clinic_all_multi.estimate = np.array([ + -0.1646666666666667, -0.562666666666666, -0.3073333333333332, + -0.5553333333333335, -0.469333333333333]) +tost_clinic_all_multi.degr_fr = np.array([ + 26.74847875823152, 24.1100015106273, 23.90046331918926, + 25.71678948210178, 24.88436709341423]) +tost_clinic_all_multi.test_stat = np.array([ + 1.324576910311299, -0.2914902349832590, 4.052967897750272, + 4.37537447933403, 4.321997343344]) +tost_clinic_all_multi.p_value = np.array([ + 0.0982588867413542, 0.6134151998456164, 0.0006958404121579073, + 0.0002674939955248471, 0.0003267011594728213]) +tost_clinic_all_multi.lower = np.array([ + -0.596019631405587, -0.930417082633366, -0.812901144055456, + -1.040823983574101, -1.006578759345919]) +tost_clinic_all_multi.upper = np.array([ + 0.2666862980722534, -0.194916250699966, 0.1982344773887895, + -0.0698426830925655, 0.0679120926792529]) +tost_clinic_all_multi.margin_lo = np.array([ + -0.5, -0.5, -1.5, -1.5, -1.5]) +tost_clinic_all_multi.margin_up = np.array([ + 0.6, 0.6, 0.6, 0.6, 0.6]) +tost_clinic_all_multi.base = 1 +tost_clinic_all_multi.method = 'step.up' +tost_clinic_all_multi.var_equal = '''FALSE''' +tost_clinic_all_multi.FWER = 0.05 + + +#t-tests + +#> tt = t.test(clinic$var1[16:30], clinic$var1[1:15], data=clinic, mu=-0., alternative="two.sided", paired=TRUE) +#> cat_items(tt, prefix="ttest_clinic_paired_1.") +ttest_clinic_paired_1 = Holder() +ttest_clinic_paired_1.statistic = 1.213001548676048 +ttest_clinic_paired_1.parameter = 14 +ttest_clinic_paired_1.p_value = 0.245199929713149 +ttest_clinic_paired_1.conf_int = (-0.1264911434745851, 0.4558244768079186) +ttest_clinic_paired_1.estimate = 0.1646666666666667 +ttest_clinic_paired_1.null_value = 0 +ttest_clinic_paired_1.alternative = 'two.sided' +ttest_clinic_paired_1.method = 'Paired t-test' +ttest_clinic_paired_1.data_name = 'clinic$var1[1:15] and clinic$var1[16:30]' + + + +#> ttless = t.test(clinic$var1[1:15], clinic$var1[16:30],, data=clinic, mu=-0., alternative="less", paired=FALSE) +#> cat_items(ttless, prefix="ttest_clinic_paired_1_l.") +ttest_clinic_paired_1_l = Holder() +ttest_clinic_paired_1_l.statistic = 0.650438363512706 +ttest_clinic_paired_1_l.parameter = 26.7484787582315 +ttest_clinic_paired_1_l.p_value = 0.739521349864458 +ttest_clinic_paired_1_l.conf_int = (-np.inf, 0.596019631405587) +ttest_clinic_paired_1_l.estimate = (3.498, 3.333333333333333) +ttest_clinic_paired_1_l.null_value = 0 +ttest_clinic_paired_1_l.alternative = 'less' +ttest_clinic_paired_1_l.method = 'Welch Two Sample t-test' +ttest_clinic_paired_1_l.data_name = 'clinic$var1[1:15] and clinic$var1[16:30]' + +#> cat_items(tt, prefix="ttest_clinic_indep_1_g.") +ttest_clinic_indep_1_g = Holder() +ttest_clinic_indep_1_g.statistic = 0.650438363512706 +ttest_clinic_indep_1_g.parameter = 26.7484787582315 +ttest_clinic_indep_1_g.p_value = 0.2604786501355416 +ttest_clinic_indep_1_g.conf_int = (-0.2666862980722534, np.inf) +ttest_clinic_indep_1_g.estimate = (3.498, 3.333333333333333) +ttest_clinic_indep_1_g.null_value = 0 +ttest_clinic_indep_1_g.alternative = 'greater' +ttest_clinic_indep_1_g.method = 'Welch Two Sample t-test' +ttest_clinic_indep_1_g.data_name = 'clinic$var1[1:15] and clinic$var1[16:30]' + +#> cat_items(ttless, prefix="ttest_clinic_indep_1_l.") +ttest_clinic_indep_1_l = Holder() +ttest_clinic_indep_1_l.statistic = 0.650438363512706 +ttest_clinic_indep_1_l.parameter = 26.7484787582315 +ttest_clinic_indep_1_l.p_value = 0.739521349864458 +ttest_clinic_indep_1_l.conf_int = (-np.inf, 0.596019631405587) +ttest_clinic_indep_1_l.estimate = (3.498, 3.333333333333333) +ttest_clinic_indep_1_l.null_value = 0 +ttest_clinic_indep_1_l.alternative = 'less' +ttest_clinic_indep_1_l.method = 'Welch Two Sample t-test' +ttest_clinic_indep_1_l.data_name = 'clinic$var1[1:15] and clinic$var1[16:30]' + +#> ttless = t.test(clinic$var1[1:15], clinic$var1[16:30],, data=clinic, mu=1., alternative="less", paired=FALSE) +#> cat_items(ttless, prefix="ttest_clinic_indep_1_l_mu.") +ttest_clinic_indep_1_l_mu = Holder() +ttest_clinic_indep_1_l_mu.statistic = -3.299592184135306 +ttest_clinic_indep_1_l_mu.parameter = 26.7484787582315 +ttest_clinic_indep_1_l_mu.p_value = 0.001372434925571605 +ttest_clinic_indep_1_l_mu.conf_int = (-np.inf, 0.596019631405587) +ttest_clinic_indep_1_l_mu.estimate = (3.498, 3.333333333333333) +ttest_clinic_indep_1_l_mu.null_value = 1 +ttest_clinic_indep_1_l_mu.alternative = 'less' +ttest_clinic_indep_1_l_mu.method = 'Welch Two Sample t-test' +ttest_clinic_indep_1_l_mu.data_name = 'clinic$var1[1:15] and clinic$var1[16:30]' + + +#> tt2 = t.test(clinic$var1[1:15], clinic$var1[16:30],, data=clinic, mu=1, alternative="two.sided", paired=FALSE) +#> cat_items(tt2, prefix="ttest_clinic_indep_1_two_mu.") +ttest_clinic_indep_1_two_mu = Holder() +ttest_clinic_indep_1_two_mu.statistic = -3.299592184135306 +ttest_clinic_indep_1_two_mu.parameter = 26.7484787582315 +ttest_clinic_indep_1_two_mu.p_value = 0.00274486985114321 +ttest_clinic_indep_1_two_mu.conf_int = (-0.3550087243406, 0.6843420576739336) +ttest_clinic_indep_1_two_mu.estimate = (3.498, 3.333333333333333) +ttest_clinic_indep_1_two_mu.null_value = 1 +ttest_clinic_indep_1_two_mu.alternative = 'two.sided' +ttest_clinic_indep_1_two_mu.method = 'Welch Two Sample t-test' +ttest_clinic_indep_1_two_mu.data_name = 'clinic$var1[1:15] and clinic$var1[16:30]' + +#> tt2 = t.test(clinic$var1[1:15], clinic$var1[16:30],, data=clinic, mu=1, alternative="two.sided", paired=FALSE, var.equal=TRUE) +#> cat_items(tt2, prefix="ttest_clinic_indep_1_two_mu_pooled.") +ttest_clinic_indep_1_two_mu_pooled = Holder() +ttest_clinic_indep_1_two_mu_pooled.statistic = -3.299592184135305 +ttest_clinic_indep_1_two_mu_pooled.parameter = 28 +ttest_clinic_indep_1_two_mu_pooled.p_value = 0.002643203760742494 +ttest_clinic_indep_1_two_mu_pooled.conf_int = (-0.35391340938235, 0.6832467427156834) +ttest_clinic_indep_1_two_mu_pooled.estimate = (3.498, 3.333333333333333) +ttest_clinic_indep_1_two_mu_pooled.null_value = 1 +ttest_clinic_indep_1_two_mu_pooled.alternative = 'two.sided' +ttest_clinic_indep_1_two_mu_pooled.method = ' Two Sample t-test' +ttest_clinic_indep_1_two_mu_pooled.data_name = 'clinic$var1[1:15] and clinic$var1[16:30]' + + + + +res1 = smws.ttost_paired(clinic[:15, 2], clinic[15:, 2], -0.6, 0.6, transform=None) +res2 = smws.ttost_paired(clinic[:15, 3], clinic[15:, 3], -0.6, 0.6, transform=None) +res = smws.ttost_ind(clinic[:15, 3], clinic[15:, 3], -0.6, 0.6, usevar='unequal') + + +class CheckTostMixin(object): + + def test_pval(self): + assert_almost_equal(self.res1.pvalue, self.res2.p_value, decimal=13) + #assert_almost_equal(self.res1.df, self.res2.df, decimal=13) + +class TestTostp1(CheckTostMixin): + #paired var1 + @classmethod + def setup_class(cls): + cls.res2 = tost_clinic_paired_1 + x1, x2 = clinic[:15, 2], clinic[15:, 2] + cls.res1 = Holder() + res = smws.ttost_paired(x1, x2, -0.6, 0.6, transform=None) + cls.res1.pvalue = res[0] + #cls.res1.df = res[1][-1] not yet + res_ds = smws.DescrStatsW(x1 - x2, weights=None, ddof=0) + #tost confint 2*alpha TODO: check again + cls.res1.tconfint_diff = res_ds.tconfint_mean(0.1) + cls.res1.confint_05 = res_ds.tconfint_mean(0.05) + cls.res1.mean_diff = res_ds.mean + cls.res1.std_mean_diff = res_ds.std_mean + + cls.res2b = ttest_clinic_paired_1 + + def test_special(self): + #TODO: add attributes to other cases and move to superclass + assert_almost_equal(self.res1.tconfint_diff, self.res2.ci_diff, + decimal=13) + assert_almost_equal(self.res1.mean_diff, self.res2.mean_diff, + decimal=13) + assert_almost_equal(self.res1.std_mean_diff, self.res2.se_diff, + decimal=13) + #compare with ttest + assert_almost_equal(self.res1.confint_05, self.res2b.conf_int, + decimal=13) + + +class TestTostp2(CheckTostMixin): + #paired var2 + @classmethod + def setup_class(cls): + cls.res2 = tost_clinic_paired + x, y = clinic[:15, 3], clinic[15:, 3] + cls.res1 = Holder() + res = smws.ttost_paired(x, y, -0.6, 0.6, transform=None) + cls.res1.pvalue = res[0] + +class TestTosti1(CheckTostMixin): + @classmethod + def setup_class(cls): + cls.res2 = tost_clinic_indep_1 + x, y = clinic[:15, 2], clinic[15:, 2] + cls.res1 = Holder() + res = smws.ttost_ind(x, y, -0.6, 0.6, usevar='unequal') + cls.res1.pvalue = res[0] + +class TestTosti2(CheckTostMixin): + @classmethod + def setup_class(cls): + cls.res2 = tost_clinic_indep + x, y = clinic[:15, 3], clinic[15:, 3] + cls.res1 = Holder() + res = smws.ttost_ind(x, y, -0.6, 0.6, usevar='unequal') + cls.res1.pvalue = res[0] + +class TestTostip1(CheckTostMixin): + @classmethod + def setup_class(cls): + cls.res2 = tost_clinic_indep_1_pooled + x, y = clinic[:15, 2], clinic[15:, 2] + cls.res1 = Holder() + res = smws.ttost_ind(x, y, -0.6, 0.6, usevar='pooled') + cls.res1.pvalue = res[0] + +class TestTostip2(CheckTostMixin): + @classmethod + def setup_class(cls): + cls.res2 = tost_clinic_indep_2_pooled + x, y = clinic[:15, 3], clinic[15:, 3] + cls.res1 = Holder() + res = smws.ttost_ind(x, y, -0.6, 0.6, usevar='pooled') + cls.res1.pvalue = res[0] + +#transform=np.log +#class TestTostp1_log(CheckTost): +def test_tost_log(): + x1, x2 = clinic[:15, 2], clinic[15:, 2] + + resp = smws.ttost_paired(x1, x2, 0.8, 1.25, transform=np.log) + assert_almost_equal(resp[0], tost_clinic_1_paired.p_value, 13) + + resi = smws.ttost_ind(x1, x2, 0.8, 1.25, transform=np.log, usevar='unequal') + assert_almost_equal(resi[0], tost_clinic_1_indep.p_value, 13) + +def test_tost_asym(): + x1, x2 = clinic[:15, 2], clinic[15:, 2] + #Note: x1, x2 reversed by definition in multeq.dif + assert_almost_equal(x2.mean() - x1.mean(), tost_clinic_1_asym.estimate, 13) + resa = smws.ttost_ind(x2, x1, -1.5, 0.6, usevar='unequal') + assert_almost_equal(resa[0], tost_clinic_1_asym.p_value, 13) + + #multi-endpoints, asymmetric bounds, vectorized + resall = smws.ttost_ind(clinic[15:, 2:7], clinic[:15, 2:7], + [-1.0, -1.0, -1.5, -1.5, -1.5], 0.6, + usevar='unequal') + assert_almost_equal(resall[0], tost_clinic_all_no_multi.p_value, 13) + + #SMOKE tests: foe multi-endpoint vectorized, k on k + resall = smws.ttost_ind(clinic[15:, 2:7], clinic[:15, 2:7], + np.exp([-1.0, -1.0, -1.5, -1.5, -1.5]), 0.6, + usevar='unequal', transform=np.log) + resall = smws.ttost_ind(clinic[15:, 2:7], clinic[:15, 2:7], + [-1.0, -1.0, -1.5, -1.5, -1.5], 0.6, + usevar='unequal', transform=np.exp) + + resall = smws.ttost_paired(clinic[15:, 2:7], clinic[:15, 2:7], + [-1.0, -1.0, -1.5, -1.5, -1.5], 0.6, + transform=np.log) + resall = smws.ttost_paired(clinic[15:, 2:7], clinic[:15, 2:7], + [-1.0, -1.0, -1.5, -1.5, -1.5], 0.6, + transform=np.exp) + + resall = smws.ttest_ind(clinic[15:, 2:7], clinic[:15, 2:7], + value=[-1.0, -1.0, -1.5, -1.5, -1.5]) + + #k on 1: compare all with reference + resall = smws.ttost_ind(clinic[15:, 2:7], clinic[:15, 2:3], + [-1.0, -1.0, -1.5, -1.5, -1.5], 0.6, usevar='unequal') + resa3_2 = smws.ttost_ind(clinic[15:, 3:4], clinic[:15, 2:3], + [-1.0, -1.0, -1.5, -1.5, -1.5], 0.6, usevar='unequal') + assert_almost_equal(resall[0][1], resa3_2[0][1], decimal=13) + resall = smws.ttost_ind(clinic[15:, 2], clinic[:15, 2], + [-1.0, -0.5, -0.7, -1.5, -1.5], 0.6, usevar='unequal') + resall = smws.ttost_ind(clinic[15:, 2], clinic[:15, 2], + [-1.0, -0.5, -0.7, -1.5, -1.5], + np.repeat(0.6,5), usevar='unequal') + +def test_ttest(): + x1, x2 = clinic[:15, 2], clinic[15:, 2] + all_tests = [] + t1 = smws.ttest_ind(x1, x2, alternative='larger', usevar='unequal') + all_tests.append((t1, ttest_clinic_indep_1_g)) + t2 = smws.ttest_ind(x1, x2, alternative='smaller', usevar='unequal') + all_tests.append((t2, ttest_clinic_indep_1_l)) + t3 = smws.ttest_ind(x1, x2, alternative='smaller', usevar='unequal', + value=1) + all_tests.append((t3, ttest_clinic_indep_1_l_mu)) + + for res1, res2 in all_tests: + assert_almost_equal(res1[0], res2.statistic, decimal=13) + assert_almost_equal(res1[1], res2.p_value, decimal=13) + #assert_almost_equal(res1[2], res2.df, decimal=13) + + cm = smws.CompareMeans(smws.DescrStatsW(x1), smws.DescrStatsW(x2)) + ci = cm.tconfint_diff(alternative='two-sided', usevar='unequal') + assert_almost_equal(ci, ttest_clinic_indep_1_two_mu.conf_int, decimal=13) + ci = cm.tconfint_diff(alternative='two-sided', usevar='pooled') + assert_almost_equal(ci, ttest_clinic_indep_1_two_mu_pooled.conf_int, decimal=13) + ci = cm.tconfint_diff(alternative='smaller', usevar='unequal') + assert_almost_equal_inf(ci, ttest_clinic_indep_1_l.conf_int, decimal=13) + ci = cm.tconfint_diff(alternative='larger', usevar='unequal') + assert_almost_equal_inf(ci, ttest_clinic_indep_1_g.conf_int, decimal=13) + + + #test get_compare + cm = smws.CompareMeans(smws.DescrStatsW(x1), smws.DescrStatsW(x2)) + cm1 = cm.d1.get_compare(cm.d2) + cm2 = cm.d1.get_compare(x2) + cm3 = cm.d1.get_compare(np.hstack((x2,x2))) + #all use the same d1, no copying + assert_(cm.d1 is cm1.d1) + assert_(cm.d1 is cm2.d1) + assert_(cm.d1 is cm3.d1) + +def tost_transform_paired(): + raw = np.array('''\ + 103.4 90.11 59.92 77.71 68.17 77.71 94.54 97.51 + 69.48 58.21 72.17 101.3 74.37 79.84 84.44 96.06 + 96.74 89.30 94.26 97.22 48.52 61.62 95.68 85.80'''.split(), float) + + x, y = raw.reshape(-1,2).T + + res1 = smws.ttost_paired(x, y, 0.8, 1.25, transform=np.log) + res_sas = (0.0031, (3.38, 0.0031), (-5.90, 0.00005)) + assert_almost_equal(res1[0], res_sas[0], 3) + assert_almost_equal(res1[1:], res_sas[1:], 2) + #result R tost + assert_almost_equal(res1[0], tost_s_paired.p_value, 13) diff --git a/statsmodels/stats/tests/test_weightstats.py b/statsmodels/stats/tests/test_weightstats.py new file mode 100644 index 0000000..fc0b36d --- /dev/null +++ b/statsmodels/stats/tests/test_weightstats.py @@ -0,0 +1,761 @@ +'''tests for weightstats, compares with replication + +no failures but needs cleanup +update 2012-09-09: + added test after fixing bug in covariance + TODOs: + - I don't remember what all the commented out code is doing + - should be refactored to use generator or inherited tests + - still gaps in test coverage + - value/diff in ttest_ind is tested in test_tost.py + - what about pandas data structures? + +Author: Josef Perktold +License: BSD (3-clause) + +''' + +import numpy as np +from scipy import stats +import pandas as pd +from numpy.testing import assert_, assert_almost_equal, assert_allclose + +from statsmodels.stats.weightstats import (DescrStatsW, CompareMeans, + ttest_ind, ztest, zconfint) +from statsmodels.tools.testing import Holder + + +# Mixin for tests against other packages. +class CheckExternalMixin(object): + + @classmethod + def get_descriptives(cls, ddof=0): + cls.descriptive = DescrStatsW(cls.data, cls.weights, ddof) + + @classmethod + def save_data(cls, fname="data.csv"): + # Utility to get data into another package. + df = pd.DataFrame(index=np.arange(len(cls.weights))) + df["weights"] = cls.weights + if cls.data.ndim == 1: + df["data1"] = cls.data + else: + for k in range(cls.data.shape[1]): + df["data%d" % (k + 1)] = cls.data[:, k] + df.to_csv(fname) + + def test_mean(self): + mn = self.descriptive.mean + assert_allclose(mn, self.mean, rtol=1e-4) + + def test_sum(self): + sm = self.descriptive.sum + assert_allclose(sm, self.sum, rtol=1e-4) + + def test_var(self): + # Use vardef=wgt option in SAS to match + var = self.descriptive.var + assert_allclose(var, self.var, rtol=1e-4) + + def test_std(self): + # Use vardef=wgt option in SAS to match + std = self.descriptive.std + assert_allclose(std, self.std, rtol=1e-4) + + def test_sem(self): + # Use default vardef in SAS to match; only makes sense if + # weights sum to n. + if not hasattr(self, "sem"): + return + sem = self.descriptive.std_mean + assert_allclose(sem, self.sem, rtol=1e-4) + + def test_quantiles(self): + quant = np.asarray(self.quantiles, dtype=np.float64) + for return_pandas in False, True: + qtl = self.descriptive.quantile(self.quantile_probs, + return_pandas=return_pandas) + qtl = np.asarray(qtl, dtype=np.float64) + assert_allclose(qtl, quant, rtol=1e-4) + + +class TestSim1(CheckExternalMixin): + # 1d data + + # Taken from SAS + mean = 0.401499 + sum = 12.9553441 + var = 1.08022 + std = 1.03933 + quantiles = np.r_[-1.81098, -0.84052, 0.32859, 0.77808, 2.93431] + + @classmethod + def setup_class(cls): + np.random.seed(9876789) + cls.data = np.random.normal(size=20) + cls.weights = np.random.uniform(0, 3, size=20) + cls.quantile_probs = np.r_[0, 0.1, 0.5, 0.75, 1] + cls.get_descriptives() + + +class TestSim1t(CheckExternalMixin): + # 1d data with ties + + # Taken from SAS + mean = 5.05103296 + sum = 156.573464 + var = 9.9711934 + std = 3.15771965 + quantiles = np.r_[0, 1, 5, 8, 9] + + @classmethod + def setup_class(cls): + np.random.seed(9876789) + cls.data = np.random.randint(0, 10, size=20) + cls.data[15:20] = cls.data[0:5] + cls.data[18:20] = cls.data[15:17] + cls.weights = np.random.uniform(0, 3, size=20) + cls.quantile_probs = np.r_[0, 0.1, 0.5, 0.75, 1] + cls.get_descriptives() + + +class TestSim1n(CheckExternalMixin): + # 1d data with weights summing to n so we can check the standard + # error of the mean + + # Taken from SAS + mean = -0.3131058 + sum = -6.2621168 + var = 0.49722696 + std = 0.70514322 + sem = 0.15767482 + quantiles = np.r_[-1.61593, -1.45576, -0.24356, 0.16770, 1.18791] + + @classmethod + def setup_class(cls): + np.random.seed(4342) + cls.data = np.random.normal(size=20) + cls.weights = np.random.uniform(0, 3, size=20) + cls.weights *= 20 / cls.weights.sum() + cls.quantile_probs = np.r_[0, 0.1, 0.5, 0.75, 1] + cls.get_descriptives(1) + + +class TestSim2(CheckExternalMixin): + # 2d data + + # Taken from SAS + mean = [-0.2170406, -0.2387543] + sum = [-6.8383999, -7.5225444] + var = [1.77426344, 0.61933542] + std = [1.3320148, 0.78697867] + quantiles = np.column_stack( + (np.r_[-2.55277, -1.40479, -0.61040, 0.52740, 2.66246], + np.r_[-1.49263, -1.15403, -0.16231, 0.16464, 1.83062])) + + @classmethod + def setup_class(cls): + np.random.seed(2249) + cls.data = np.random.normal(size=(20, 2)) + cls.weights = np.random.uniform(0, 3, size=20) + cls.quantile_probs = np.r_[0, 0.1, 0.5, 0.75, 1] + cls.get_descriptives() + + +class TestWeightstats(object): + + @classmethod + def setup_class(cls): + np.random.seed(9876789) + n1, n2 = 20, 20 + m1, m2 = 1, 1.2 + x1 = m1 + np.random.randn(n1) + x2 = m2 + np.random.randn(n2) + x1_2d = m1 + np.random.randn(n1, 3) + x2_2d = m2 + np.random.randn(n2, 3) + w1 = np.random.randint(1,4, n1) + w2 = np.random.randint(1,4, n2) + cls.x1, cls.x2 = x1, x2 + cls.w1, cls.w2 = w1, w2 + cls.x1_2d, cls.x2_2d = x1_2d, x2_2d + + def test_weightstats_1(self): + x1, x2 = self.x1, self.x2 + w1, w2 = self.w1, self.w2 + w1_ = 2. * np.ones(len(x1)) + w2_ = 2. * np.ones(len(x2)) + + d1 = DescrStatsW(x1) +# print ttest_ind(x1, x2) +# print ttest_ind(x1, x2, usevar='unequal') +# #print ttest_ind(x1, x2, usevar='unequal') +# print stats.ttest_ind(x1, x2) +# print ttest_ind(x1, x2, usevar='unequal', alternative='larger') +# print ttest_ind(x1, x2, usevar='unequal', alternative='smaller') +# print ttest_ind(x1, x2, usevar='unequal', weights=(w1_, w2_)) +# print stats.ttest_ind(np.r_[x1, x1], np.r_[x2,x2]) + assert_almost_equal(ttest_ind(x1, x2, weights=(w1_, w2_))[:2], + stats.ttest_ind(np.r_[x1, x1], np.r_[x2, x2])) + + def test_weightstats_2(self): + x1, x2 = self.x1, self.x2 + w1, w2 = self.w1, self.w2 + + d1 = DescrStatsW(x1) + d1w = DescrStatsW(x1, weights=w1) + d2w = DescrStatsW(x2, weights=w2) + x1r = d1w.asrepeats() + x2r = d2w.asrepeats() +# print 'random weights' +# print ttest_ind(x1, x2, weights=(w1, w2)) +# print stats.ttest_ind(x1r, x2r) + assert_almost_equal(ttest_ind(x1, x2, weights=(w1, w2))[:2], + stats.ttest_ind(x1r, x2r), 14) + # not the same as new version with random weights/replication +# assert x1r.shape[0] == d1w.sum_weights +# assert x2r.shape[0] == d2w.sum_weights + + assert_almost_equal(x2r.mean(0), d2w.mean, 14) + assert_almost_equal(x2r.var(), d2w.var, 14) + assert_almost_equal(x2r.std(), d2w.std, 14) + # note: the following is for 1d + assert_almost_equal(np.cov(x2r, bias=1), d2w.cov, 14) + # assert_almost_equal(np.corrcoef(np.x2r), d2w.corrcoef, 19) + # TODO: exception in corrcoef (scalar case) + + # one-sample tests +# print d1.ttest_mean(3) +# print stats.ttest_1samp(x1, 3) +# print d1w.ttest_mean(3) +# print stats.ttest_1samp(x1r, 3) + assert_almost_equal(d1.ttest_mean(3)[:2], stats.ttest_1samp(x1, 3), 11) + assert_almost_equal(d1w.ttest_mean(3)[:2], + stats.ttest_1samp(x1r, 3), 11) + + def test_weightstats_3(self): + x1_2d, x2_2d = self.x1_2d, self.x2_2d + w1, w2 = self.w1, self.w2 + + d1w_2d = DescrStatsW(x1_2d, weights=w1) + d2w_2d = DescrStatsW(x2_2d, weights=w2) + x1r_2d = d1w_2d.asrepeats() + x2r_2d = d2w_2d.asrepeats() + + assert_almost_equal(x2r_2d.mean(0), d2w_2d.mean, 14) + assert_almost_equal(x2r_2d.var(0), d2w_2d.var, 14) + assert_almost_equal(x2r_2d.std(0), d2w_2d.std, 14) + assert_almost_equal(np.cov(x2r_2d.T, bias=1), d2w_2d.cov, 14) + assert_almost_equal(np.corrcoef(x2r_2d.T), d2w_2d.corrcoef, 14) + +# print d1w_2d.ttest_mean(3) +# #scipy.stats.ttest is also vectorized +# print stats.ttest_1samp(x1r_2d, 3) + t, p, d = d1w_2d.ttest_mean(3) + assert_almost_equal([t, p], stats.ttest_1samp(x1r_2d, 3), 11) + # print [stats.ttest_1samp(xi, 3) for xi in x1r_2d.T] + cm = CompareMeans(d1w_2d, d2w_2d) + ressm = cm.ttest_ind() + resss = stats.ttest_ind(x1r_2d, x2r_2d) + assert_almost_equal(ressm[:2], resss, 14) + +# doesn't work for 2d, levene doesn't use weights +# cm = CompareMeans(d1w_2d, d2w_2d) +# ressm = cm.test_equal_var() +# resss = stats.levene(x1r_2d, x2r_2d) +# assert_almost_equal(ressm[:2], resss, 14) + + def test_weightstats_ddof_tests(self): + # explicit test that ttest and confint are independent of ddof + # one sample case + x1_2d = self.x1_2d + w1 = self.w1 + + d1w_d0 = DescrStatsW(x1_2d, weights=w1, ddof=0) + d1w_d1 = DescrStatsW(x1_2d, weights=w1, ddof=1) + d1w_d2 = DescrStatsW(x1_2d, weights=w1, ddof=2) + + # check confint independent of user ddof + res0 = d1w_d0.ttest_mean() + res1 = d1w_d1.ttest_mean() + res2 = d1w_d2.ttest_mean() + # concatenate into one array with np.r_ + assert_almost_equal(np.r_[res1], np.r_[res0], 14) + assert_almost_equal(np.r_[res2], np.r_[res0], 14) + + res0 = d1w_d0.ttest_mean(0.5) + res1 = d1w_d1.ttest_mean(0.5) + res2 = d1w_d2.ttest_mean(0.5) + assert_almost_equal(np.r_[res1], np.r_[res0], 14) + assert_almost_equal(np.r_[res2], np.r_[res0], 14) + + # check confint independent of user ddof + res0 = d1w_d0.tconfint_mean() + res1 = d1w_d1.tconfint_mean() + res2 = d1w_d2.tconfint_mean() + assert_almost_equal(res1, res0, 14) + assert_almost_equal(res2, res0, 14) + + def test_comparemeans_convenient_interface(self): + x1_2d, x2_2d = self.x1_2d, self.x2_2d + d1 = DescrStatsW(x1_2d) + d2 = DescrStatsW(x2_2d) + cm1 = CompareMeans(d1, d2) + + # smoke test for summary + from statsmodels.iolib.table import SimpleTable + for use_t in [True, False]: + for usevar in ['pooled', 'unequal']: + smry = cm1.summary(use_t=use_t, usevar=usevar) + assert_(isinstance(smry, SimpleTable)) + + # test for from_data method + cm2 = CompareMeans.from_data(x1_2d, x2_2d) + assert_(str(cm1.summary()) == str(cm2.summary())) + + def test_comparemeans_convenient_interface_1d(self): + # same as above for 2d, just use 1d data instead + x1_2d, x2_2d = self.x1, self.x2 + d1 = DescrStatsW(x1_2d) + d2 = DescrStatsW(x2_2d) + cm1 = CompareMeans(d1, d2) + + # smoke test for summary + from statsmodels.iolib.table import SimpleTable + for use_t in [True, False]: + for usevar in ['pooled', 'unequal']: + smry = cm1.summary(use_t=use_t, usevar=usevar) + assert_(isinstance(smry, SimpleTable)) + + # test for from_data method + cm2 = CompareMeans.from_data(x1_2d, x2_2d) + assert_(str(cm1.summary()) == str(cm2.summary())) + + +class CheckWeightstats1dMixin(object): + + def test_basic(self): + x1r = self.x1r + d1w = self.d1w + + assert_almost_equal(x1r.mean(0), d1w.mean, 14) + assert_almost_equal(x1r.var(0, ddof=d1w.ddof), d1w.var, 14) + assert_almost_equal(x1r.std(0, ddof=d1w.ddof), d1w.std, 14) + var1 = d1w.var_ddof(ddof=1) + assert_almost_equal(x1r.var(0, ddof=1), var1, 14) + std1 = d1w.std_ddof(ddof=1) + assert_almost_equal(x1r.std(0, ddof=1), std1, 14) + + assert_almost_equal(np.cov(x1r.T, bias=1-d1w.ddof), d1w.cov, 14) + + # assert_almost_equal(np.corrcoef(x1r.T), d1w.corrcoef, 14) + + def test_ttest(self): + x1r = self.x1r + d1w = self.d1w + assert_almost_equal(d1w.ttest_mean(3)[:2], + stats.ttest_1samp(x1r, 3), 11) + +# def +# assert_almost_equal(ttest_ind(x1, x2, weights=(w1, w2))[:2], +# stats.ttest_ind(x1r, x2r), 14) + + def test_ttest_2sample(self): + x1, x2 = self.x1, self.x2 + x1r, x2r = self.x1r, self.x2r + w1, w2 = self.w1, self.w2 + + # Note: stats.ttest_ind handles 2d/nd arguments + res_sp = stats.ttest_ind(x1r, x2r) + assert_almost_equal(ttest_ind(x1, x2, weights=(w1, w2))[:2], + res_sp, 14) + + # check correct ttest independent of user ddof + cm = CompareMeans(DescrStatsW(x1, weights=w1, ddof=0), + DescrStatsW(x2, weights=w2, ddof=1)) + assert_almost_equal(cm.ttest_ind()[:2], res_sp, 14) + + cm = CompareMeans(DescrStatsW(x1, weights=w1, ddof=1), + DescrStatsW(x2, weights=w2, ddof=2)) + assert_almost_equal(cm.ttest_ind()[:2], res_sp, 14) + + cm0 = CompareMeans(DescrStatsW(x1, weights=w1, ddof=0), + DescrStatsW(x2, weights=w2, ddof=0)) + cm1 = CompareMeans(DescrStatsW(x1, weights=w1, ddof=0), + DescrStatsW(x2, weights=w2, ddof=1)) + cm2 = CompareMeans(DescrStatsW(x1, weights=w1, ddof=1), + DescrStatsW(x2, weights=w2, ddof=2)) + + res0 = cm0.ttest_ind(usevar='unequal') + res1 = cm1.ttest_ind(usevar='unequal') + res2 = cm2.ttest_ind(usevar='unequal') + assert_almost_equal(res1, res0, 14) + assert_almost_equal(res2, res0, 14) + + # check confint independent of user ddof + res0 = cm0.tconfint_diff(usevar='pooled') + res1 = cm1.tconfint_diff(usevar='pooled') + res2 = cm2.tconfint_diff(usevar='pooled') + assert_almost_equal(res1, res0, 14) + assert_almost_equal(res2, res0, 14) + + res0 = cm0.tconfint_diff(usevar='unequal') + res1 = cm1.tconfint_diff(usevar='unequal') + res2 = cm2.tconfint_diff(usevar='unequal') + assert_almost_equal(res1, res0, 14) + assert_almost_equal(res2, res0, 14) + + def test_confint_mean(self): + # compare confint_mean with ttest + d1w = self.d1w + alpha = 0.05 + low, upp = d1w.tconfint_mean() + t, p, d = d1w.ttest_mean(low) + assert_almost_equal(p, alpha * np.ones(p.shape), 8) + t, p, d = d1w.ttest_mean(upp) + assert_almost_equal(p, alpha * np.ones(p.shape), 8) + t, p, d = d1w.ttest_mean(np.vstack((low, upp))) + assert_almost_equal(p, alpha * np.ones(p.shape), 8) + + +class CheckWeightstats2dMixin(CheckWeightstats1dMixin): + + def test_corr(self): + x1r = self.x1r + d1w = self.d1w + + assert_almost_equal(np.corrcoef(x1r.T), d1w.corrcoef, 14) + + +class TestWeightstats1d_ddof(CheckWeightstats1dMixin): + + @classmethod + def setup_class(cls): + np.random.seed(9876789) + n1, n2 = 20, 20 + m1, m2 = 1, 1.2 + x1 = m1 + np.random.randn(n1, 1) + x2 = m2 + np.random.randn(n2, 1) + w1 = np.random.randint(1, 4, n1) + w2 = np.random.randint(1, 4, n2) + + cls.x1, cls.x2 = x1, x2 + cls.w1, cls.w2 = w1, w2 + cls.d1w = DescrStatsW(x1, weights=w1, ddof=1) + cls.d2w = DescrStatsW(x2, weights=w2, ddof=1) + cls.x1r = cls.d1w.asrepeats() + cls.x2r = cls.d2w.asrepeats() + + +class TestWeightstats2d(CheckWeightstats2dMixin): + + @classmethod + def setup_class(cls): + np.random.seed(9876789) + n1, n2 = 20, 20 + m1, m2 = 1, 1.2 + x1 = m1 + np.random.randn(n1, 3) + x2 = m2 + np.random.randn(n2, 3) + w1 = np.random.randint(1, 4, n1) + w2 = np.random.randint(1, 4, n2) + cls.x1, cls.x2 = x1, x2 + cls.w1, cls.w2 = w1, w2 + + cls.d1w = DescrStatsW(x1, weights=w1) + cls.d2w = DescrStatsW(x2, weights=w2) + cls.x1r = cls.d1w.asrepeats() + cls.x2r = cls.d2w.asrepeats() + + +class TestWeightstats2d_ddof(CheckWeightstats2dMixin): + + @classmethod + def setup_class(cls): + np.random.seed(9876789) + n1, n2 = 20, 20 + m1, m2 = 1, 1.2 + x1 = m1 + np.random.randn(n1, 3) + x2 = m2 + np.random.randn(n2, 3) + w1 = np.random.randint(1, 4, n1) + w2 = np.random.randint(1, 4, n2) + + cls.x1, cls.x2 = x1, x2 + cls.w1, cls.w2 = w1, w2 + cls.d1w = DescrStatsW(x1, weights=w1, ddof=1) + cls.d2w = DescrStatsW(x2, weights=w2, ddof=1) + cls.x1r = cls.d1w.asrepeats() + cls.x2r = cls.d2w.asrepeats() + + +class TestWeightstats2d_nobs(CheckWeightstats2dMixin): + + @classmethod + def setup_class(cls): + np.random.seed(9876789) + n1, n2 = 20, 30 + m1, m2 = 1, 1.2 + x1 = m1 + np.random.randn(n1, 3) + x2 = m2 + np.random.randn(n2, 3) + w1 = np.random.randint(1, 4, n1) + w2 = np.random.randint(1, 4, n2) + + cls.x1, cls.x2 = x1, x2 + cls.w1, cls.w2 = w1, w2 + cls.d1w = DescrStatsW(x1, weights=w1, ddof=0) + cls.d2w = DescrStatsW(x2, weights=w2, ddof=1) + cls.x1r = cls.d1w.asrepeats() + cls.x2r = cls.d2w.asrepeats() + + +def test_ttest_ind_with_uneq_var(): + + # from scipy + # check vs. R + a = (1, 2, 3) + b = (1.1, 2.9, 4.2) + pr = 0.53619490753126731 + tr = -0.68649512735572582 + t, p, df = ttest_ind(a, b, usevar='unequal') + assert_almost_equal([t, p], [tr, pr], 13) + + a = (1, 2, 3, 4) + pr = 0.84354139131608286 + tr = -0.2108663315950719 + t, p, df = ttest_ind(a, b, usevar='unequal') + assert_almost_equal([t, p], [tr, pr], 13) + + +def test_ztest_ztost(): + # compare weightstats with separately tested proportion ztest ztost + import statsmodels.stats.proportion as smprop + + x1 = [0, 1] + w1 = [5, 15] + + res2 = smprop.proportions_ztest(15, 20., value=0.5) + d1 = DescrStatsW(x1, w1) + res1 = d1.ztest_mean(0.5) + assert_allclose(res1, res2, rtol=0.03, atol=0.003) + + d2 = DescrStatsW(x1, np.array(w1)*21./20) + res1 = d2.ztest_mean(0.5) + assert_almost_equal(res1, res2, decimal=12) + + res1 = d2.ztost_mean(0.4, 0.6) + res2 = smprop.proportions_ztost(15, 20., 0.4, 0.6) + assert_almost_equal(res1[0], res2[0], decimal=12) + + x2 = [0, 1] + w2 = [10, 10] + # d2 = DescrStatsW(x1, np.array(w1)*21./20) + d2 = DescrStatsW(x2, w2) + res1 = ztest(d1.asrepeats(), d2.asrepeats()) + res2 = smprop.proportions_chisquare(np.asarray([15, 10]), + np.asarray([20., 20])) + # TODO: check this is this difference expected?, see test_proportion + assert_allclose(res1[1], res2[1], rtol=0.03) + + res1a = CompareMeans(d1, d2).ztest_ind() + assert_allclose(res1a[1], res2[1], rtol=0.03) + assert_almost_equal(res1a, res1, decimal=12) + + +# test for ztest and z confidence interval against R BSDA z.test +# Note: I needed to calculate the pooled standard deviation for R +# std = np.std(np.concatenate((x-x.mean(),y-y.mean())), ddof=2) + +# > zt = z.test(x, sigma.x=0.57676142668828667, y, sigma.y=0.57676142668828667) +# > cat_items(zt, "ztest.") +ztest_ = Holder() +ztest_.statistic = 6.55109865675183 +ztest_.p_value = 5.711530850508982e-11 +ztest_.conf_int = np.array([1.230415246535603, 2.280948389828034]) +ztest_.estimate = np.array([7.01818181818182, 5.2625]) +ztest_.null_value = 0 +ztest_.alternative = 'two.sided' +ztest_.method = 'Two-sample z-Test' +ztest_.data_name = 'x and y' +# > zt = z.test(x, sigma.x=0.57676142668828667, y, +# sigma.y=0.57676142668828667, alternative="less") +# > cat_items(zt, "ztest_smaller.") +ztest_smaller = Holder() +ztest_smaller.statistic = 6.55109865675183 +ztest_smaller.p_value = 0.999999999971442 +ztest_smaller.conf_int = np.array([np.nan, 2.196499421109045]) +ztest_smaller.estimate = np.array([7.01818181818182, 5.2625]) +ztest_smaller.null_value = 0 +ztest_smaller.alternative = 'less' +ztest_smaller.method = 'Two-sample z-Test' +ztest_smaller.data_name = 'x and y' +# > zt = z.test(x, sigma.x=0.57676142668828667, y, +# sigma.y=0.57676142668828667, alternative="greater") +# > cat_items(zt, "ztest_larger.") +ztest_larger = Holder() +ztest_larger.statistic = 6.55109865675183 +ztest_larger.p_value = 2.855760072861813e-11 +ztest_larger.conf_int = np.array([1.314864215254592, np.nan]) +ztest_larger.estimate = np.array([7.01818181818182, 5.2625]) +ztest_larger.null_value = 0 +ztest_larger.alternative = 'greater' +ztest_larger.method = 'Two-sample z-Test' +ztest_larger.data_name = 'x and y' + + +# > zt = z.test(x, sigma.x=0.57676142668828667, y, +# sigma.y=0.57676142668828667, mu=1, alternative="two.sided") +# > cat_items(zt, "ztest_mu.") +ztest_mu = Holder() +ztest_mu.statistic = 2.81972854805176 +ztest_mu.p_value = 0.00480642898427981 +ztest_mu.conf_int = np.array([1.230415246535603, 2.280948389828034]) +ztest_mu.estimate = np.array([7.01818181818182, 5.2625]) +ztest_mu.null_value = 1 +ztest_mu.alternative = 'two.sided' +ztest_mu.method = 'Two-sample z-Test' +ztest_mu.data_name = 'x and y' + +# > zt = z.test(x, sigma.x=0.57676142668828667, y, +# sigma.y=0.57676142668828667, mu=1, alternative="greater") +# > cat_items(zt, "ztest_larger_mu.") +ztest_larger_mu = Holder() +ztest_larger_mu.statistic = 2.81972854805176 +ztest_larger_mu.p_value = 0.002403214492139871 +ztest_larger_mu.conf_int = np.array([1.314864215254592, np.nan]) +ztest_larger_mu.estimate = np.array([7.01818181818182, 5.2625]) +ztest_larger_mu.null_value = 1 +ztest_larger_mu.alternative = 'greater' +ztest_larger_mu.method = 'Two-sample z-Test' +ztest_larger_mu.data_name = 'x and y' + +# > zt = z.test(x, sigma.x=0.57676142668828667, y, +# sigma.y=0.57676142668828667, mu=2, alternative="less") +# > cat_items(zt, "ztest_smaller_mu.") +ztest_smaller_mu = Holder() +ztest_smaller_mu.statistic = -0.911641560648313 +ztest_smaller_mu.p_value = 0.1809787183191324 +ztest_smaller_mu.conf_int = np.array([np.nan, 2.196499421109045]) +ztest_smaller_mu.estimate = np.array([7.01818181818182, 5.2625]) +ztest_smaller_mu.null_value = 2 +ztest_smaller_mu.alternative = 'less' +ztest_smaller_mu.method = 'Two-sample z-Test' +ztest_smaller_mu.data_name = 'x and y' + +# > zt = z.test(x, sigma.x=0.46436662631627995, mu=6.4, +# alternative="two.sided") +# > cat_items(zt, "ztest_mu_1s.") +ztest_mu_1s = Holder() +ztest_mu_1s.statistic = 4.415212090914452 +ztest_mu_1s.p_value = 1.009110038015147e-05 +ztest_mu_1s.conf_int = np.array([6.74376372125119, 7.29259991511245]) +ztest_mu_1s.estimate = 7.01818181818182 +ztest_mu_1s.null_value = 6.4 +ztest_mu_1s.alternative = 'two.sided' +ztest_mu_1s.method = 'One-sample z-Test' +ztest_mu_1s.data_name = 'x' + +# > zt = z.test(x, sigma.x=0.46436662631627995, mu=7.4, alternative="less") +# > cat_items(zt, "ztest_smaller_mu_1s.") +ztest_smaller_mu_1s = Holder() +ztest_smaller_mu_1s.statistic = -2.727042762035397 +ztest_smaller_mu_1s.p_value = 0.00319523783881176 +ztest_smaller_mu_1s.conf_int = np.array([np.nan, 7.248480744895716]) +ztest_smaller_mu_1s.estimate = 7.01818181818182 +ztest_smaller_mu_1s.null_value = 7.4 +ztest_smaller_mu_1s.alternative = 'less' +ztest_smaller_mu_1s.method = 'One-sample z-Test' +ztest_smaller_mu_1s.data_name = 'x' + +# > zt = z.test(x, sigma.x=0.46436662631627995, mu=6.4, alternative="greater") +# > cat_items(zt, "ztest_greater_mu_1s.") +ztest_larger_mu_1s = Holder() +ztest_larger_mu_1s.statistic = 4.415212090914452 +ztest_larger_mu_1s.p_value = 5.045550190097003e-06 +ztest_larger_mu_1s.conf_int = np.array([6.78788289146792, np.nan]) +ztest_larger_mu_1s.estimate = 7.01818181818182 +ztest_larger_mu_1s.null_value = 6.4 +ztest_larger_mu_1s.alternative = 'greater' +ztest_larger_mu_1s.method = 'One-sample z-Test' +ztest_larger_mu_1s.data_name = 'x' + + +alternatives = {'less': 'smaller', + 'greater': 'larger', + 'two.sided': 'two-sided'} + + +class TestZTest(object): + # all examples use the same data + # no weights used in tests + + @classmethod + def setup_class(cls): + cls.x1 = np.array([7.8, 6.6, 6.5, 7.4, 7.3, 7., 6.4, + 7.1, 6.7, 7.6, 6.8]) + cls.x2 = np.array([4.5, 5.4, 6.1, 6.1, 5.4, 5., 4.1, 5.5]) + cls.d1 = DescrStatsW(cls.x1) + cls.d2 = DescrStatsW(cls.x2) + cls.cm = CompareMeans(cls.d1, cls.d2) + + def test(self): + x1, x2 = self.x1, self.x2 + cm = self.cm + + # tc : test cases + for tc in [ztest_, ztest_smaller, ztest_larger, + ztest_mu, ztest_smaller_mu, ztest_larger_mu]: + + zstat, pval = ztest(x1, x2, value=tc.null_value, + alternative=alternatives[tc.alternative]) + assert_allclose(zstat, tc.statistic, rtol=1e-10) + assert_allclose(pval, tc.p_value, rtol=1e-10, atol=1e-16) + + zstat, pval = cm.ztest_ind(value=tc.null_value, + alternative=alternatives[tc.alternative]) + assert_allclose(zstat, tc.statistic, rtol=1e-10) + assert_allclose(pval, tc.p_value, rtol=1e-10, atol=1e-16) + + # overwrite nan in R's confint + tc_conf_int = tc.conf_int.copy() + if np.isnan(tc_conf_int[0]): + tc_conf_int[0] = - np.inf + if np.isnan(tc_conf_int[1]): + tc_conf_int[1] = np.inf + + # Note: value is shifting our confidence interval in zconfint + ci = zconfint(x1, x2, value=0, + alternative=alternatives[tc.alternative]) + assert_allclose(ci, tc_conf_int, rtol=1e-10) + + ci = cm.zconfint_diff(alternative=alternatives[tc.alternative]) + assert_allclose(ci, tc_conf_int, rtol=1e-10) + + ci = zconfint(x1, x2, value=tc.null_value, + alternative=alternatives[tc.alternative]) + assert_allclose(ci, tc_conf_int - tc.null_value, rtol=1e-10) + + # 1 sample test copy-paste + d1 = self.d1 + for tc in [ztest_mu_1s, ztest_smaller_mu_1s, ztest_larger_mu_1s]: + zstat, pval = ztest(x1, value=tc.null_value, + alternative=alternatives[tc.alternative]) + assert_allclose(zstat, tc.statistic, rtol=1e-10) + assert_allclose(pval, tc.p_value, rtol=1e-10, atol=1e-16) + + zstat, pval = d1.ztest_mean(value=tc.null_value, + alternative=alternatives[tc.alternative]) + assert_allclose(zstat, tc.statistic, rtol=1e-10) + assert_allclose(pval, tc.p_value, rtol=1e-10, atol=1e-16) + + # overwrite nan in R's confint + tc_conf_int = tc.conf_int.copy() + if np.isnan(tc_conf_int[0]): + tc_conf_int[0] = - np.inf + if np.isnan(tc_conf_int[1]): + tc_conf_int[1] = np.inf + + # Note: value is shifting our confidence interval in zconfint + ci = zconfint(x1, value=0, + alternative=alternatives[tc.alternative]) + assert_allclose(ci, tc_conf_int, rtol=1e-10) + + ci = d1.zconfint_mean(alternative=alternatives[tc.alternative]) + assert_allclose(ci, tc_conf_int, rtol=1e-10) diff --git a/statsmodels/stats/weightstats.py b/statsmodels/stats/weightstats.py new file mode 100644 index 0000000..7b2647c --- /dev/null +++ b/statsmodels/stats/weightstats.py @@ -0,0 +1,1479 @@ +'''Ttests and descriptive statistics with weights + + +Created on 2010-09-18 + +Author: josef-pktd +License: BSD (3-clause) + + +References +---------- +SPSS manual +SAS manual + +This follows in large parts the SPSS manual, which is largely the same as +the SAS manual with different, simpler notation. + +Freq, Weight in SAS seems redundant since they always show up as product, SPSS +has only weights. + +Notes +----- + +This has potential problems with ddof, I started to follow numpy with ddof=0 +by default and users can change it, but this might still mess up the t-tests, +since the estimates for the standard deviation will be based on the ddof that +the user chooses. +- fixed ddof for the meandiff ttest, now matches scipy.stats.ttest_ind + +Note: scipy has now a separate, pooled variance option in ttest, but I haven't +compared yet. + +''' + + +import numpy as np +from scipy import stats + +from statsmodels.tools.decorators import cache_readonly + + +class DescrStatsW(object): + '''descriptive statistics and tests with weights for case weights + + Assumes that the data is 1d or 2d with (nobs, nvars) observations in rows, + variables in columns, and that the same weight applies to each column. + + If degrees of freedom correction is used, then weights should add up to the + number of observations. ttest also assumes that the sum of weights + corresponds to the sample size. + + This is essentially the same as replicating each observations by its + weight, if the weights are integers, often called case or frequency weights. + + Parameters + ---------- + data : array_like, 1-D or 2-D + dataset + weights : None or 1-D ndarray + weights for each observation, with same length as zero axis of data + ddof : int + default ddof=0, degrees of freedom correction used for second moments, + var, std, cov, corrcoef. + However, statistical tests are independent of `ddof`, based on the + standard formulas. + + Examples + -------- + + >>> import numpy as np + >>> np.random.seed(0) + >>> x1_2d = 1.0 + np.random.randn(20, 3) + >>> w1 = np.random.randint(1, 4, 20) + >>> d1 = DescrStatsW(x1_2d, weights=w1) + >>> d1.mean + array([ 1.42739844, 1.23174284, 1.083753 ]) + >>> d1.var + array([ 0.94855633, 0.52074626, 1.12309325]) + >>> d1.std_mean + array([ 0.14682676, 0.10878944, 0.15976497]) + + >>> tstat, pval, df = d1.ttest_mean(0) + >>> tstat; pval; df + array([ 9.72165021, 11.32226471, 6.78342055]) + array([ 1.58414212e-12, 1.26536887e-14, 2.37623126e-08]) + 44.0 + + >>> tstat, pval, df = d1.ttest_mean([0, 1, 1]) + >>> tstat; pval; df + array([ 9.72165021, 2.13019609, 0.52422632]) + array([ 1.58414212e-12, 3.87842808e-02, 6.02752170e-01]) + 44.0 + + #if weiqhts are integers, then asrepeats can be used + + >>> x1r = d1.asrepeats() + >>> x1r.shape + ... + >>> stats.ttest_1samp(x1r, [0, 1, 1]) + ... + + ''' + def __init__(self, data, weights=None, ddof=0): + + self.data = np.asarray(data) + if weights is None: + self.weights = np.ones(self.data.shape[0]) + else: + # TODO: why squeeze? + self.weights = np.asarray(weights).squeeze().astype(float) + self.ddof = ddof + + + @cache_readonly + def sum_weights(self): + """Sum of weights""" + return self.weights.sum(0) + + @cache_readonly + def nobs(self): + '''alias for number of observations/cases, equal to sum of weights + ''' + return self.sum_weights + + @cache_readonly + def sum(self): + '''weighted sum of data''' + return np.dot(self.data.T, self.weights) + + @cache_readonly + def mean(self): + '''weighted mean of data''' + return self.sum / self.sum_weights + + @cache_readonly + def demeaned(self): + '''data with weighted mean subtracted''' + return self.data - self.mean + + @cache_readonly + def sumsquares(self): + '''weighted sum of squares of demeaned data''' + return np.dot((self.demeaned**2).T, self.weights) + + #need memoize instead of cache decorator + def var_ddof(self, ddof=0): + '''variance of data given ddof + + Parameters + ---------- + ddof : int, float + degrees of freedom correction, independent of attribute ddof + + Returns + ------- + var : float, ndarray + variance with denominator ``sum_weights - ddof`` + ''' + return self.sumsquares / (self.sum_weights - ddof) + + def std_ddof(self, ddof=0): + '''standard deviation of data with given ddof + + Parameters + ---------- + ddof : int, float + degrees of freedom correction, independent of attribute ddof + + Returns + ------- + std : float, ndarray + standard deviation with denominator ``sum_weights - ddof`` + ''' + return np.sqrt(self.var_ddof(ddof=ddof)) + + @cache_readonly + def var(self): + '''variance with default degrees of freedom correction + ''' + return self.sumsquares / (self.sum_weights - self.ddof) + + @cache_readonly + def _var(self): + '''variance without degrees of freedom correction + + used for statistical tests with controlled ddof + ''' + return self.sumsquares / self.sum_weights + + @cache_readonly + def std(self): + '''standard deviation with default degrees of freedom correction + ''' + return np.sqrt(self.var) + + @cache_readonly + def cov(self): + '''weighted covariance of data if data is 2 dimensional + + assumes variables in columns and observations in rows + uses default ddof + ''' + cov_ = np.dot(self.weights * self.demeaned.T, self.demeaned) + cov_ /= (self.sum_weights - self.ddof) + return cov_ + + @cache_readonly + def corrcoef(self): + '''weighted correlation with default ddof + + assumes variables in columns and observations in rows + ''' + return self.cov / self.std / self.std[:,None] + + @cache_readonly + def std_mean(self): + '''standard deviation of weighted mean + ''' + std = self.std + if self.ddof != 0: + #ddof correction, (need copy of std) + std = std * np.sqrt((self.sum_weights - self.ddof) + / self.sum_weights) + + return std / np.sqrt(self.sum_weights - 1) + + + def quantile(self, probs, return_pandas=True): + """ + Compute quantiles for a weighted sample. + + Parameters + ---------- + probs : array-like + A vector of probability points at which to calculate the + quantiles. Each element of `probs` should fall in [0, 1]. + return_pandas : bool + If True, return value is a Pandas DataFrame or Series. + Otherwise returns a ndarray. + + Returns + ------- + quantiles : Series, DataFrame, or ndarray + If `return_pandas` = True, returns one of the following: + * data are 1d, `return_pandas` = True: a Series indexed by + the probability points. + * data are 2d, `return_pandas` = True: a DataFrame with + the probability points as row index and the variables + as column index. + + If `return_pandas` = False, returns an ndarray containing the + same values as the Series/DataFrame. + + Notes + ----- + To compute the quantiles, first, the weights are summed over + exact ties yielding distinct data values y_1 < y_2 < ..., and + corresponding weights w_1, w_2, .... Let s_j denote the sum + of the first j weights, and let W denote the sum of all the + weights. For a probability point p, if pW falls strictly + between s_j and s_{j+1} then the estimated quantile is + y_{j+1}. If pW = s_j then the estimated quantile is (y_j + + y_{j+1})/2. If pW < p_1 then the estimated quantile is y_1. + + References + ---------- + SAS documentation for weighted quantiles: + + https://support.sas.com/documentation/cdl/en/procstat/63104/HTML/default/viewer.htm#procstat_univariate_sect028.htm + """ + + import pandas as pd + + probs = np.asarray(probs) + probs = np.atleast_1d(probs) + + if self.data.ndim == 1: + rslt = self._quantile(self.data, probs) + if return_pandas: + rslt = pd.Series(rslt, index=probs) + else: + rslt = [] + for vec in self.data.T: + rslt.append(self._quantile(vec, probs)) + rslt = np.column_stack(rslt) + if return_pandas: + columns = ["col%d" % (j+1) for j in range(rslt.shape[1])] + rslt = pd.DataFrame(data=rslt, columns=columns, index=probs) + + if return_pandas: + rslt.index.name = "p" + + return rslt + + + def _quantile(self, vec, probs): + # Helper function to calculate weighted quantiles for one column. + # Follows definition from SAS documentation. + # Returns ndarray + + import pandas as pd + + # Aggregate over ties + df = pd.DataFrame(index=np.arange(len(self.weights))) + df["weights"] = self.weights + df["vec"] = vec + dfg = df.groupby("vec").agg(np.sum) + weights = dfg.values[:, 0] + values = np.asarray(dfg.index) + + cweights = np.cumsum(weights) + totwt = cweights[-1] + targets = probs * totwt + ii = np.searchsorted(cweights, targets) + + rslt = values[ii] + + # Exact hits + jj = np.flatnonzero(np.abs(targets - cweights[ii]) < 1e-10) + jj = jj[ii[jj] < len(cweights) - 1] + rslt[jj] = (values[ii[jj]] + values[ii[jj]+1]) / 2 + + return rslt + + + def tconfint_mean(self, alpha=0.05, alternative='two-sided'): + '''two-sided confidence interval for weighted mean of data + + If the data is 2d, then these are separate confidence intervals + for each column. + + Parameters + ---------- + alpha : float + significance level for the confidence interval, coverage is + ``1-alpha`` + alternative : string + This specifies the alternative hypothesis for the test that + corresponds to the confidence interval. + The alternative hypothesis, H1, has to be one of the following + + 'two-sided': H1: mean not equal to value (default) + 'larger' : H1: mean larger than value + 'smaller' : H1: mean smaller than value + + Returns + ------- + lower, upper : floats or ndarrays + lower and upper bound of confidence interval + + Notes + ----- + In a previous version, statsmodels 0.4, alpha was the confidence + level, e.g. 0.95 + ''' + #TODO: add asymmetric + dof = self.sum_weights - 1 + ci = _tconfint_generic(self.mean, self.std_mean, dof, alpha, + alternative) + return ci + + + def zconfint_mean(self, alpha=0.05, alternative='two-sided'): + '''two-sided confidence interval for weighted mean of data + + Confidence interval is based on normal distribution. + If the data is 2d, then these are separate confidence intervals + for each column. + + Parameters + ---------- + alpha : float + significance level for the confidence interval, coverage is + ``1-alpha`` + alternative : string + This specifies the alternative hypothesis for the test that + corresponds to the confidence interval. + The alternative hypothesis, H1, has to be one of the following + + 'two-sided': H1: mean not equal to value (default) + 'larger' : H1: mean larger than value + 'smaller' : H1: mean smaller than value + + Returns + ------- + lower, upper : floats or ndarrays + lower and upper bound of confidence interval + + Notes + ----- + In a previous version, statsmodels 0.4, alpha was the confidence + level, e.g. 0.95 + ''' + + return _zconfint_generic(self.mean, self.std_mean, alpha, alternative) + + + def ttest_mean(self, value=0, alternative='two-sided'): + '''ttest of Null hypothesis that mean is equal to value. + + The alternative hypothesis H1 is defined by the following + 'two-sided': H1: mean not equal to value + 'larger' : H1: mean larger than value + 'smaller' : H1: mean smaller than value + + Parameters + ---------- + value : float or array + the hypothesized value for the mean + alternative : string + The alternative hypothesis, H1, has to be one of the following + + 'two-sided': H1: mean not equal to value (default) + 'larger' : H1: mean larger than value + 'smaller' : H1: mean smaller than value + + Returns + ------- + tstat : float + test statisic + pvalue : float + pvalue of the t-test + df : int or float + + ''' + #TODO: check direction with R, smaller=less, larger=greater + tstat = (self.mean - value) / self.std_mean + dof = self.sum_weights - 1 + #TODO: use outsourced + if alternative == 'two-sided': + pvalue = stats.t.sf(np.abs(tstat), dof)*2 + elif alternative == 'larger': + pvalue = stats.t.sf(tstat, dof) + elif alternative == 'smaller': + pvalue = stats.t.cdf(tstat, dof) + + return tstat, pvalue, dof + + def ttost_mean(self, low, upp): + '''test of (non-)equivalence of one sample + + TOST: two one-sided t tests + + null hypothesis: m < low or m > upp + alternative hypothesis: low < m < upp + + where m is the expected value of the sample (mean of the population). + + If the pvalue is smaller than a threshold, say 0.05, then we reject the + hypothesis that the expected value of the sample (mean of the + population) is outside of the interval given by thresholds low and upp. + + Parameters + ---------- + low, upp : float + equivalence interval low < mean < upp + + Returns + ------- + pvalue : float + pvalue of the non-equivalence test + t1, pv1, df1 : tuple + test statistic, pvalue and degrees of freedom for lower threshold + test + t2, pv2, df2 : tuple + test statistic, pvalue and degrees of freedom for upper threshold + test + + ''' + + t1, pv1, df1 = self.ttest_mean(low, alternative='larger') + t2, pv2, df2 = self.ttest_mean(upp, alternative='smaller') + return np.maximum(pv1, pv2), (t1, pv1, df1), (t2, pv2, df2) + + def ztest_mean(self, value=0, alternative='two-sided'): + '''z-test of Null hypothesis that mean is equal to value. + + The alternative hypothesis H1 is defined by the following + 'two-sided': H1: mean not equal to value + 'larger' : H1: mean larger than value + 'smaller' : H1: mean smaller than value + + Parameters + ---------- + value : float or array + the hypothesized value for the mean + alternative : string + The alternative hypothesis, H1, has to be one of the following + + 'two-sided': H1: mean not equal to value (default) + 'larger' : H1: mean larger than value + 'smaller' : H1: mean smaller than value + + Returns + ------- + tstat : float + test statisic + pvalue : float + pvalue of the t-test + + Notes + ----- + This uses the same degrees of freedom correction as the t-test in the + calculation of the standard error of the mean, i.e it uses + `(sum_weights - 1)` instead of `sum_weights` in the denominator. + See Examples below for the difference. + + Examples + -------- + + z-test on a proportion, with 20 observations, 15 of those are our event + + >>> import statsmodels.api as sm + >>> x1 = [0, 1] + >>> w1 = [5, 15] + >>> d1 = sm.stats.DescrStatsW(x1, w1) + >>> d1.ztest_mean(0.5) + (2.5166114784235836, 0.011848940928347452) + + This differs from the proportions_ztest because of the degrees of + freedom correction: + >>> sm.stats.proportions_ztest(15, 20.0, value=0.5) + (2.5819888974716112, 0.009823274507519247). + + We can replicate the results from ``proportions_ztest`` if we increase + the weights to have artificially one more observation: + + >>> sm.stats.DescrStatsW(x1, np.array(w1)*21./20).ztest_mean(0.5) + (2.5819888974716116, 0.0098232745075192366) + ''' + tstat = (self.mean - value) / self.std_mean + #TODO: use outsourced + if alternative == 'two-sided': + pvalue = stats.norm.sf(np.abs(tstat))*2 + elif alternative == 'larger': + pvalue = stats.norm.sf(tstat) + elif alternative == 'smaller': + pvalue = stats.norm.cdf(tstat) + + return tstat, pvalue + + def ztost_mean(self, low, upp): + '''test of (non-)equivalence of one sample, based on z-test + + TOST: two one-sided z-tests + + null hypothesis: m < low or m > upp + alternative hypothesis: low < m < upp + + where m is the expected value of the sample (mean of the population). + + If the pvalue is smaller than a threshold, say 0.05, then we reject the + hypothesis that the expected value of the sample (mean of the + population) is outside of the interval given by thresholds low and upp. + + Parameters + ---------- + low, upp : float + equivalence interval low < mean < upp + + Returns + ------- + pvalue : float + pvalue of the non-equivalence test + t1, pv1 : tuple + test statistic and p-value for lower threshold test + t2, pv2 : tuple + test statistic and p-value for upper threshold test + + ''' + + t1, pv1 = self.ztest_mean(low, alternative='larger') + t2, pv2 = self.ztest_mean(upp, alternative='smaller') + return np.maximum(pv1, pv2), (t1, pv1), (t2, pv2) + + def get_compare(self, other, weights=None): + '''return an instance of CompareMeans with self and other + + Parameters + ---------- + other : array_like or instance of DescrStatsW + If array_like then this creates an instance of DescrStatsW with + the given weights. + weights : None or array + weights are only used if other is not an instance of DescrStatsW + + Returns + ------- + cm : instance of CompareMeans + the instance has self attached as d1 and other as d2. + + See Also + -------- + CompareMeans + + ''' + if not isinstance(other, self.__class__): + d2 = DescrStatsW(other, weights) + else: + d2 = other + return CompareMeans(self, d2) + + def asrepeats(self): + '''get array that has repeats given by floor(weights) + + observations with weight=0 are dropped + + ''' + w_int = np.floor(self.weights).astype(int) + return np.repeat(self.data, w_int, axis=0) + + + +def _tstat_generic(value1, value2, std_diff, dof, alternative, diff=0): + '''generic ttest to save typing''' + + tstat = (value1 - value2 - diff) / std_diff + if alternative in ['two-sided', '2-sided', '2s']: + pvalue = stats.t.sf(np.abs(tstat), dof)*2 + elif alternative in ['larger', 'l']: + pvalue = stats.t.sf(tstat, dof) + elif alternative in ['smaller', 's']: + pvalue = stats.t.cdf(tstat, dof) + else: + raise ValueError('invalid alternative') + return tstat, pvalue + +def _tconfint_generic(mean, std_mean, dof, alpha, alternative): + '''generic t-confint to save typing''' + + if alternative in ['two-sided', '2-sided', '2s']: + tcrit = stats.t.ppf(1 - alpha / 2., dof) + lower = mean - tcrit * std_mean + upper = mean + tcrit * std_mean + elif alternative in ['larger', 'l']: + tcrit = stats.t.ppf(alpha, dof) + lower = mean + tcrit * std_mean + upper = np.inf + elif alternative in ['smaller', 's']: + tcrit = stats.t.ppf(1 - alpha, dof) + lower = -np.inf + upper = mean + tcrit * std_mean + else: + raise ValueError('invalid alternative') + + return lower, upper + + +def _zstat_generic(value1, value2, std_diff, alternative, diff=0): + '''generic (normal) z-test to save typing + + can be used as ztest based on summary statistics + + ''' + zstat = (value1 - value2 - diff) / std_diff + if alternative in ['two-sided', '2-sided', '2s']: + pvalue = stats.norm.sf(np.abs(zstat))*2 + elif alternative in ['larger', 'l']: + pvalue = stats.norm.sf(zstat) + elif alternative in ['smaller', 's']: + pvalue = stats.norm.cdf(zstat) + else: + raise ValueError('invalid alternative') + return zstat, pvalue + +def _zstat_generic2(value, std_diff, alternative): + '''generic (normal) z-test to save typing + + can be used as ztest based on summary statistics + ''' + zstat = value / std_diff + if alternative in ['two-sided', '2-sided', '2s']: + pvalue = stats.norm.sf(np.abs(zstat))*2 + elif alternative in ['larger', 'l']: + pvalue = stats.norm.sf(zstat) + elif alternative in ['smaller', 's']: + pvalue = stats.norm.cdf(zstat) + else: + raise ValueError('invalid alternative') + return zstat, pvalue + +def _zconfint_generic(mean, std_mean, alpha, alternative): + '''generic normal-confint to save typing''' + + if alternative in ['two-sided', '2-sided', '2s']: + zcrit = stats.norm.ppf(1 - alpha / 2.) + lower = mean - zcrit * std_mean + upper = mean + zcrit * std_mean + elif alternative in ['larger', 'l']: + zcrit = stats.norm.ppf(alpha) + lower = mean + zcrit * std_mean + upper = np.inf + elif alternative in ['smaller', 's']: + zcrit = stats.norm.ppf(1 - alpha) + lower = -np.inf + upper = mean + zcrit * std_mean + else: + raise ValueError('invalid alternative') + + return lower, upper + + +class CompareMeans(object): + '''class for two sample comparison + + The tests and the confidence interval work for multi-endpoint comparison: + If d1 and d2 have the same number of rows, then each column of the data + in d1 is compared with the corresponding column in d2. + + Parameters + ---------- + d1, d2 : instances of DescrStatsW + + Notes + ----- + The result for the statistical tests and the confidence interval are + independent of the user specified ddof. + + TODO: Extend to any number of groups or write a version that works in that + case, like in SAS and SPSS. + + ''' + + def __init__(self, d1, d2): + '''assume d1, d2 hold the relevant attributes + + ''' + self.d1 = d1 + self.d2 = d2 + #assume nobs is available +# if not hasattr(self.d1, 'nobs'): +# d1.nobs1 = d1.sum_weights.astype(float) #float just to make sure +# self.nobs2 = d2.sum_weights.astype(float) + + @classmethod + def from_data(cls, data1, data2, weights1=None, weights2=None, + ddof1=0, ddof2=0): + '''construct a CompareMeans object from data + + Parameters + ---------- + data1, data2 : array-like, 1-D or 2-D + compared datasets + weights1, weights2 : None or 1-D ndarray + weights for each observation of data1 and data2 respectively, + with same length as zero axis of corresponding dataset. + ddof1, ddof2 : int + default ddof1=0, ddof2=0, degrees of freedom for data1, + data2 respectively. + + Returns + ------- + A CompareMeans instance. + + ''' + return cls(DescrStatsW(data1, weights=weights1, ddof=ddof1), + DescrStatsW(data2, weights=weights2, ddof=ddof2)) + + def summary(self, use_t=True, alpha=0.05, usevar='pooled', value=0): + '''summarize the results of the hypothesis test + + Parameters + ---------- + use_t : bool, optional + if use_t is True, then t test results are returned + if use_t is False, then z test results are returned + alpha : float + significance level for the confidence interval, coverage is + ``1-alpha`` + usevar : string, 'pooled' or 'unequal' + If ``pooled``, then the standard deviation of the samples is + assumed to be the same. If ``unequal``, then the variance of + Welsh ttest will be used, and the degrees of freedom are those + of Satterthwaite if ``use_t`` is True. + value : float + difference between the means under the Null hypothesis. + + Returns + ------- + smry : SimpleTable + + ''' + + d1 = self.d1 + d2 = self.d2 + + confint_percents = 100 - alpha * 100 + + if use_t: + tstat, pvalue, _ = self.ttest_ind(usevar=usevar, value=value) + lower, upper = self.tconfint_diff(alpha=alpha, usevar=usevar) + else: + tstat, pvalue = self.ztest_ind(usevar=usevar, value=value) + lower, upper = self.zconfint_diff(alpha=alpha, usevar=usevar) + + if usevar == 'pooled': + std_err = self.std_meandiff_pooledvar + else: + std_err = self.std_meandiff_separatevar + + std_err = np.atleast_1d(std_err) + tstat = np.atleast_1d(tstat) + pvalue = np.atleast_1d(pvalue) + lower = np.atleast_1d(lower) + upper = np.atleast_1d(upper) + conf_int = np.column_stack((lower, upper)) + params = np.atleast_1d(d1.mean - d2.mean - value) + + title = 'Test for equality of means' + yname = 'y' # not used in params_frame + xname = ['subset #%d' % (ii + 1) for ii in range(tstat.shape[0])] + + from statsmodels.iolib.summary import summary_params + return summary_params((None, params, std_err, tstat, pvalue, conf_int), + alpha=alpha, use_t=use_t, yname=yname, xname=xname, + title=title) + + @cache_readonly + def std_meandiff_separatevar(self): + #this uses ``_var`` to use ddof=0 for formula + d1 = self.d1 + d2 = self.d2 + return np.sqrt(d1._var / (d1.nobs-1) + d2._var / (d2.nobs-1)) + + @cache_readonly + def std_meandiff_pooledvar(self): + '''variance assuming equal variance in both data sets + + ''' + #this uses ``_var`` to use ddof=0 for formula + + d1 = self.d1 + d2 = self.d2 + #could make var_pooled into attribute + var_pooled = ((d1.sumsquares + d2.sumsquares) / + #(d1.nobs - d1.ddof + d2.nobs - d2.ddof)) + (d1.nobs - 1 + d2.nobs - 1)) + return np.sqrt(var_pooled * (1. / d1.nobs + 1. /d2.nobs)) + + def dof_satt(self): + '''degrees of freedom of Satterthwaite for unequal variance + ''' + d1 = self.d1 + d2 = self.d2 + #this follows blindly the SPSS manual + #except I use ``_var`` which has ddof=0 + sem1 = d1._var / (d1.nobs-1) + sem2 = d2._var / (d2.nobs-1) + semsum = sem1 + sem2 + z1 = (sem1 / semsum)**2 / (d1.nobs - 1) + z2 = (sem2 / semsum)**2 / (d2.nobs - 1) + dof = 1. / (z1 + z2) + return dof + + def ttest_ind(self, alternative='two-sided', usevar='pooled', value=0): + '''ttest for the null hypothesis of identical means + + this should also be the same as onewaygls, except for ddof differences + + Parameters + ---------- + x1 : array_like, 1-D or 2-D + first of the two independent samples, see notes for 2-D case + x2 : array_like, 1-D or 2-D + second of the two independent samples, see notes for 2-D case + alternative : string + The alternative hypothesis, H1, has to be one of the following + 'two-sided': H1: difference in means not equal to value (default) + 'larger' : H1: difference in means larger than value + 'smaller' : H1: difference in means smaller than value + + usevar : string, 'pooled' or 'unequal' + If ``pooled``, then the standard deviation of the samples is assumed to be + the same. If ``unequal``, then Welsh ttest with Satterthwait degrees + of freedom is used + value : float + difference between the means under the Null hypothesis. + + + Returns + ------- + tstat : float + test statisic + pvalue : float + pvalue of the t-test + df : int or float + degrees of freedom used in the t-test + + Notes + ----- + The result is independent of the user specified ddof. + + ''' + d1 = self.d1 + d2 = self.d2 + + if usevar == 'pooled': + stdm = self.std_meandiff_pooledvar + dof = (d1.nobs - 1 + d2.nobs - 1) + elif usevar == 'unequal': + stdm = self.std_meandiff_separatevar + dof = self.dof_satt() + else: + raise ValueError('usevar can only be "pooled" or "unequal"') + + tstat, pval = _tstat_generic(d1.mean, d2.mean, stdm, dof, alternative, + diff=value) + + return tstat, pval, dof + + def ztest_ind(self, alternative='two-sided', usevar='pooled', value=0): + '''z-test for the null hypothesis of identical means + + Parameters + ---------- + x1 : array_like, 1-D or 2-D + first of the two independent samples, see notes for 2-D case + x2 : array_like, 1-D or 2-D + second of the two independent samples, see notes for 2-D case + alternative : string + The alternative hypothesis, H1, has to be one of the following + 'two-sided': H1: difference in means not equal to value (default) + 'larger' : H1: difference in means larger than value + 'smaller' : H1: difference in means smaller than value + + usevar : string, 'pooled' or 'unequal' + If ``pooled``, then the standard deviation of the samples is assumed to be + the same. If ``unequal``, then the standard deviations of the samples may + be different. + value : float + difference between the means under the Null hypothesis. + + Returns + ------- + tstat : float + test statisic + pvalue : float + pvalue of the z-test + + ''' + d1 = self.d1 + d2 = self.d2 + + if usevar == 'pooled': + stdm = self.std_meandiff_pooledvar + elif usevar == 'unequal': + stdm = self.std_meandiff_separatevar + else: + raise ValueError('usevar can only be "pooled" or "unequal"') + + tstat, pval = _zstat_generic(d1.mean, d2.mean, stdm, alternative, + diff=value) + + return tstat, pval + + def tconfint_diff(self, alpha=0.05, alternative='two-sided', + usevar='pooled'): + '''confidence interval for the difference in means + + Parameters + ---------- + alpha : float + significance level for the confidence interval, coverage is + ``1-alpha`` + alternative : string + This specifies the alternative hypothesis for the test that + corresponds to the confidence interval. + The alternative hypothesis, H1, has to be one of the following : + + 'two-sided': H1: difference in means not equal to value (default) + 'larger' : H1: difference in means larger than value + 'smaller' : H1: difference in means smaller than value + + usevar : string, 'pooled' or 'unequal' + If ``pooled``, then the standard deviation of the samples is assumed to be + the same. If ``unequal``, then Welsh ttest with Satterthwait degrees + of freedom is used + + Returns + ------- + lower, upper : floats + lower and upper limits of the confidence interval + + Notes + ----- + The result is independent of the user specified ddof. + + ''' + d1 = self.d1 + d2 = self.d2 + diff = d1.mean - d2.mean + if usevar == 'pooled': + std_diff = self.std_meandiff_pooledvar + dof = (d1.nobs - 1 + d2.nobs - 1) + elif usevar == 'unequal': + std_diff = self.std_meandiff_separatevar + dof = self.dof_satt() + else: + raise ValueError('usevar can only be "pooled" or "unequal"') + + res = _tconfint_generic(diff, std_diff, dof, alpha=alpha, + alternative=alternative) + return res + + def zconfint_diff(self, alpha=0.05, alternative='two-sided', + usevar='pooled'): + '''confidence interval for the difference in means + + Parameters + ---------- + alpha : float + significance level for the confidence interval, coverage is + ``1-alpha`` + alternative : string + This specifies the alternative hypothesis for the test that + corresponds to the confidence interval. + The alternative hypothesis, H1, has to be one of the following : + + 'two-sided': H1: difference in means not equal to value (default) + 'larger' : H1: difference in means larger than value + 'smaller' : H1: difference in means smaller than value + + usevar : string, 'pooled' or 'unequal' + If ``pooled``, then the standard deviation of the samples is assumed to be + the same. If ``unequal``, then Welsh ttest with Satterthwait degrees + of freedom is used + + Returns + ------- + lower, upper : floats + lower and upper limits of the confidence interval + + Notes + ----- + The result is independent of the user specified ddof. + + ''' + d1 = self.d1 + d2 = self.d2 + diff = d1.mean - d2.mean + if usevar == 'pooled': + std_diff = self.std_meandiff_pooledvar + elif usevar == 'unequal': + std_diff = self.std_meandiff_separatevar + else: + raise ValueError('usevar can only be "pooled" or "unequal"') + + res = _zconfint_generic(diff, std_diff, alpha=alpha, + alternative=alternative) + return res + + def ttost_ind(self, low, upp, usevar='pooled'): + ''' + test of equivalence for two independent samples, base on t-test + + Parameters + ---------- + low, upp : float + equivalence interval low < m1 - m2 < upp + usevar : string, 'pooled' or 'unequal' + If ``pooled``, then the standard deviation of the samples is assumed to be + the same. If ``unequal``, then Welsh ttest with Satterthwait degrees + of freedom is used + + Returns + ------- + pvalue : float + pvalue of the non-equivalence test + t1, pv1 : tuple of floats + test statistic and pvalue for lower threshold test + t2, pv2 : tuple of floats + test statistic and pvalue for upper threshold test + ''' + tt1 = self.ttest_ind(alternative='larger', usevar=usevar, value=low) + tt2 = self.ttest_ind(alternative='smaller', usevar=usevar, value=upp) + #TODO: remove tuple return, use same as for function tost_ind + return np.maximum(tt1[1], tt2[1]), (tt1, tt2) + + def ztost_ind(self, low, upp, usevar='pooled'): + ''' + test of equivalence for two independent samples, based on z-test + + Parameters + ---------- + low, upp : float + equivalence interval low < m1 - m2 < upp + usevar : string, 'pooled' or 'unequal' + If ``pooled``, then the standard deviation of the samples is assumed to be + the same. If ``unequal``, then Welsh ttest with Satterthwait degrees + of freedom is used + + Returns + ------- + pvalue : float + pvalue of the non-equivalence test + t1, pv1 : tuple of floats + test statistic and pvalue for lower threshold test + t2, pv2 : tuple of floats + test statistic and pvalue for upper threshold test + ''' + tt1 = self.ztest_ind(alternative='larger', usevar=usevar, value=low) + tt2 = self.ztest_ind(alternative='smaller', usevar=usevar, value=upp) + #TODO: remove tuple return, use same as for function tost_ind + return np.maximum(tt1[1], tt2[1]), tt1, tt2 + + #tost.__doc__ = tost_ind.__doc__ + +#doesn't work for 2d, doesn't take weights into account +## def test_equal_var(self): +## '''Levene test for independence +## +## ''' +## d1 = self.d1 +## d2 = self.d2 +## #rewrite this, for now just use scipy.stats +## return stats.levene(d1.data, d2.data) + + +def ttest_ind(x1, x2, alternative='two-sided', usevar='pooled', + weights=(None, None), value=0): + '''ttest independent sample + + Convenience function that uses the classes and throws away the intermediate + results, + compared to scipy stats: drops axis option, adds alternative, usevar, and + weights option. + + Parameters + ---------- + x1 : array_like, 1-D or 2-D + first of the two independent samples, see notes for 2-D case + x2 : array_like, 1-D or 2-D + second of the two independent samples, see notes for 2-D case + alternative : string + The alternative hypothesis, H1, has to be one of the following + + * 'two-sided' (default): H1: difference in means not equal to value + * 'larger' : H1: difference in means larger than value + * 'smaller' : H1: difference in means smaller than value + + usevar : string, 'pooled' or 'unequal' + If ``pooled``, then the standard deviation of the samples is assumed to be + the same. If ``unequal``, then Welsh ttest with Satterthwait degrees + of freedom is used + weights : tuple of None or ndarrays + Case weights for the two samples. For details on weights see + ``DescrStatsW`` + value : float + difference between the means under the Null hypothesis. + + + Returns + ------- + tstat : float + test statisic + pvalue : float + pvalue of the t-test + df : int or float + degrees of freedom used in the t-test + + ''' + cm = CompareMeans(DescrStatsW(x1, weights=weights[0], ddof=0), + DescrStatsW(x2, weights=weights[1], ddof=0)) + tstat, pval, dof = cm.ttest_ind(alternative=alternative, usevar=usevar, + value=value) + + return tstat, pval, dof + + +def ttost_ind(x1, x2, low, upp, usevar='pooled', weights=(None, None), + transform=None): + '''test of (non-)equivalence for two independent samples + + TOST: two one-sided t tests + + null hypothesis: m1 - m2 < low or m1 - m2 > upp + alternative hypothesis: low < m1 - m2 < upp + + where m1, m2 are the means, expected values of the two samples. + + If the pvalue is smaller than a threshold, say 0.05, then we reject the + hypothesis that the difference between the two samples is larger than the + the thresholds given by low and upp. + + Parameters + ---------- + x1 : array_like, 1-D or 2-D + first of the two independent samples, see notes for 2-D case + x2 : array_like, 1-D or 2-D + second of the two independent samples, see notes for 2-D case + low, upp : float + equivalence interval low < m1 - m2 < upp + usevar : string, 'pooled' or 'unequal' + If ``pooled``, then the standard deviation of the samples is assumed to be + the same. If ``unequal``, then Welsh ttest with Satterthwait degrees + of freedom is used + weights : tuple of None or ndarrays + Case weights for the two samples. For details on weights see + ``DescrStatsW`` + transform : None or function + If None (default), then the data is not transformed. Given a function, + sample data and thresholds are transformed. If transform is log, then + the equivalence interval is in ratio: low < m1 / m2 < upp + + Returns + ------- + pvalue : float + pvalue of the non-equivalence test + t1, pv1 : tuple of floats + test statistic and pvalue for lower threshold test + t2, pv2 : tuple of floats + test statistic and pvalue for upper threshold test + + Notes + ----- + The test rejects if the 2*alpha confidence interval for the difference + is contained in the ``(low, upp)`` interval. + + This test works also for multi-endpoint comparisons: If d1 and d2 + have the same number of columns, then each column of the data in d1 is + compared with the corresponding column in d2. This is the same as + comparing each of the corresponding columns separately. Currently no + multi-comparison correction is used. The raw p-values reported here can + be correction with the functions in ``multitest``. + + ''' + + if transform: + if transform is np.log: + #avoid hstack in special case + x1 = transform(x1) + x2 = transform(x2) + else: + #for transforms like rankdata that will need both datasets + #concatenate works for stacking 1d and 2d arrays + xx = transform(np.concatenate((x1, x2), 0)) + x1 = xx[:len(x1)] + x2 = xx[len(x1):] + low = transform(low) + upp = transform(upp) + cm = CompareMeans(DescrStatsW(x1, weights=weights[0], ddof=0), + DescrStatsW(x2, weights=weights[1], ddof=0)) + pval, res = cm.ttost_ind(low, upp, usevar=usevar) + return pval, res[0], res[1] + +def ttost_paired(x1, x2, low, upp, transform=None, weights=None): + '''test of (non-)equivalence for two dependent, paired sample + + TOST: two one-sided t tests + + null hypothesis: md < low or md > upp + alternative hypothesis: low < md < upp + + where md is the mean, expected value of the difference x1 - x2 + + If the pvalue is smaller than a threshold,say 0.05, then we reject the + hypothesis that the difference between the two samples is larger than the + the thresholds given by low and upp. + + Parameters + ---------- + x1 : array_like + first of the two independent samples + x2 : array_like + second of the two independent samples + low, upp : float + equivalence interval low < mean of difference < upp + weights : None or ndarray + case weights for the two samples. For details on weights see + ``DescrStatsW`` + transform : None or function + If None (default), then the data is not transformed. Given a function + sample data and thresholds are transformed. If transform is log the + the equivalence interval is in ratio: low < x1 / x2 < upp + + Returns + ------- + pvalue : float + pvalue of the non-equivalence test + t1, pv1, df1 : tuple + test statistic, pvalue and degrees of freedom for lower threshold test + t2, pv2, df2 : tuple + test statistic, pvalue and degrees of freedom for upper threshold test + + ''' + + if transform: + if transform is np.log: + #avoid hstack in special case + x1 = transform(x1) + x2 = transform(x2) + else: + #for transforms like rankdata that will need both datasets + #concatenate works for stacking 1d and 2d arrays + xx = transform(np.concatenate((x1, x2), 0)) + x1 = xx[:len(x1)] + x2 = xx[len(x1):] + low = transform(low) + upp = transform(upp) + dd = DescrStatsW(x1 - x2, weights=weights, ddof=0) + t1, pv1, df1 = dd.ttest_mean(low, alternative='larger') + t2, pv2, df2 = dd.ttest_mean(upp, alternative='smaller') + return np.maximum(pv1, pv2), (t1, pv1, df1), (t2, pv2, df2) + +def ztest(x1, x2=None, value=0, alternative='two-sided', usevar='pooled', + ddof=1.): + '''test for mean based on normal distribution, one or two samples + + In the case of two samples, the samples are assumed to be independent. + + Parameters + ---------- + x1 : array_like, 1-D or 2-D + first of the two independent samples + x2 : array_like, 1-D or 2-D + second of the two independent samples + value : float + In the one sample case, value is the mean of x1 under the Null + hypothesis. + In the two sample case, value is the difference between mean of x1 and + mean of x2 under the Null hypothesis. The test statistic is + `x1_mean - x2_mean - value`. + alternative : string + The alternative hypothesis, H1, has to be one of the following + + 'two-sided': H1: difference in means not equal to value (default) + 'larger' : H1: difference in means larger than value + 'smaller' : H1: difference in means smaller than value + + usevar : string, 'pooled' + Currently, only 'pooled' is implemented. + If ``pooled``, then the standard deviation of the samples is assumed to be + the same. see CompareMeans.ztest_ind for different options. + ddof : int + Degrees of freedom use in the calculation of the variance of the mean + estimate. In the case of comparing means this is one, however it can + be adjusted for testing other statistics (proportion, correlation) + + Returns + ------- + tstat : float + test statisic + pvalue : float + pvalue of the t-test + + Notes + ----- + usevar not implemented, is always pooled in two sample case + use CompareMeans instead. + + ''' + # TODO: this should delegate to CompareMeans like ttest_ind + # However that does not implement ddof + + #usevar is not used, always pooled + + if usevar != 'pooled': + raise NotImplementedError('only usevar="pooled" is implemented') + + x1 = np.asarray(x1) + nobs1 = x1.shape[0] + x1_mean = x1.mean(0) + x1_var = x1.var(0) + if x2 is not None: + x2 = np.asarray(x2) + nobs2 = x2.shape[0] + x2_mean = x2.mean(0) + x2_var = x2.var(0) + var_pooled = (nobs1 * x1_var + nobs2 * x2_var) + var_pooled /= (nobs1 + nobs2 - 2 * ddof) + var_pooled *= (1. / nobs1 + 1. / nobs2) + else: + var_pooled = x1_var / (nobs1 - ddof) + x2_mean = 0 + + std_diff = np.sqrt(var_pooled) + #stat = x1_mean - x2_mean - value + return _zstat_generic(x1_mean, x2_mean, std_diff, alternative, diff=value) + +def zconfint(x1, x2=None, value=0, alpha=0.05, alternative='two-sided', + usevar='pooled', ddof=1.): + '''confidence interval based on normal distribution z-test + + Parameters + ---------- + x1 : array_like, 1-D or 2-D + first of the two independent samples, see notes for 2-D case + x2 : array_like, 1-D or 2-D + second of the two independent samples, see notes for 2-D case + value : float + In the one sample case, value is the mean of x1 under the Null + hypothesis. + In the two sample case, value is the difference between mean of x1 and + mean of x2 under the Null hypothesis. The test statistic is + `x1_mean - x2_mean - value`. + usevar : string, 'pooled' + Currently, only 'pooled' is implemented. + If ``pooled``, then the standard deviation of the samples is assumed to be + the same. see CompareMeans.ztest_ind for different options. + ddof : int + Degrees of freedom use in the calculation of the variance of the mean + estimate. In the case of comparing means this is one, however it can + be adjusted for testing other statistics (proportion, correlation) + + Notes + ----- + checked only for 1 sample case + + usevar not implemented, is always pooled in two sample case + + ``value`` shifts the confidence interval so it is centered at + `x1_mean - x2_mean - value` + + See Also + -------- + ztest + CompareMeans + + ''' + #usevar is not used, always pooled + # mostly duplicate code from ztest + + if usevar != 'pooled': + raise NotImplementedError('only usevar="pooled" is implemented') + x1 = np.asarray(x1) + nobs1 = x1.shape[0] + x1_mean = x1.mean(0) + x1_var = x1.var(0) + if x2 is not None: + x2 = np.asarray(x2) + nobs2 = x2.shape[0] + x2_mean = x2.mean(0) + x2_var = x2.var(0) + var_pooled = (nobs1 * x1_var + nobs2 * x2_var) + var_pooled /= (nobs1 + nobs2 - 2 * ddof) + var_pooled *= (1. / nobs1 + 1. / nobs2) + else: + var_pooled = x1_var / (nobs1 - ddof) + x2_mean = 0 + + std_diff = np.sqrt(var_pooled) + ci = _zconfint_generic(x1_mean - x2_mean - value, std_diff, alpha, alternative) + return ci + +def ztost(x1, low, upp, x2=None, usevar='pooled', ddof=1.): + '''Equivalence test based on normal distribution + + Parameters + ---------- + x1 : array_like + one sample or first sample for 2 independent samples + low, upp : float + equivalence interval low < m1 - m2 < upp + x1 : array_like or None + second sample for 2 independent samples test. If None, then a + one-sample test is performed. + usevar : string, 'pooled' + If `pooled`, then the standard deviation of the samples is assumed to be + the same. Only `pooled` is currently implemented. + + Returns + ------- + pvalue : float + pvalue of the non-equivalence test + t1, pv1 : tuple of floats + test statistic and pvalue for lower threshold test + t2, pv2 : tuple of floats + test statistic and pvalue for upper threshold test + + Notes + ----- + checked only for 1 sample case + + ''' + tt1 = ztest(x1, x2, alternative='larger', usevar=usevar, value=low, + ddof=ddof) + tt2 = ztest(x1, x2, alternative='smaller', usevar=usevar, value=upp, + ddof=ddof) + return np.maximum(tt1[1], tt2[1]), tt1, tt2, diff --git a/statsmodels/tests/__init__.py b/statsmodels/tests/__init__.py new file mode 100644 index 0000000..72cbcf9 --- /dev/null +++ b/statsmodels/tests/__init__.py @@ -0,0 +1 @@ +# Tests for the package behavior of statsmodels diff --git a/statsmodels/tests/test_package.py b/statsmodels/tests/test_package.py new file mode 100644 index 0000000..74dd519 --- /dev/null +++ b/statsmodels/tests/test_package.py @@ -0,0 +1,23 @@ +import subprocess + +import pytest + +from statsmodels.compat import PY3 +from statsmodels.compat.platform import PLATFORM_WIN + + +@pytest.mark.skipif(PLATFORM_WIN, reason="subprocess does not play nicely") +def test_lazy_imports(): + # Check that when statsmodels.api is imported, matplotlib is _not_ imported + cmd = ("import statsmodels.api as sm; " + "import sys; " + "mods = [x for x in sys.modules if 'matplotlib.pyplot' in x]; " + "assert not mods, mods") + + # TODO: is there a cleaner way to do this import in an isolated environment + pyexe = 'python3' if PY3 else 'python' + p = subprocess.Popen(pyexe + ' -c "' + cmd + '"', + shell=True, close_fds=True) + p.wait() + rc = p.returncode + assert rc == 0 diff --git a/statsmodels/tools/__init__.py b/statsmodels/tools/__init__.py new file mode 100644 index 0000000..0050de3 --- /dev/null +++ b/statsmodels/tools/__init__.py @@ -0,0 +1,6 @@ +from .tools import add_constant, categorical +from statsmodels.tools._testing import PytestTester + +__all__ = ['test', 'add_constant', 'categorical'] + +test = PytestTester() diff --git a/statsmodels/tools/_testing.py b/statsmodels/tools/_testing.py new file mode 100644 index 0000000..663a92c --- /dev/null +++ b/statsmodels/tools/_testing.py @@ -0,0 +1,216 @@ +"""Testing helper functions + +Warning: current status experimental, mostly copy paste + +Warning: these functions will be changed without warning as the need +during refactoring arises. + +The first group of functions provide consistency checks + +""" +import os +import sys +from distutils.version import LooseVersion + +import numpy as np +from numpy.testing import assert_allclose, assert_ + +import pandas as pd +import pandas.util.testing as tm + + +class PytestTester(object): + def __init__(self, package_path=None): + f = sys._getframe(1) + if package_path is None: + package_path = f.f_locals.get('__file__', None) + if package_path is None: + raise ValueError('Unable to determine path') + self.package_path = os.path.dirname(package_path) + self.package_name = f.f_locals.get('__name__', None) + + def __call__(self, extra_args=None, exit=False): + try: + import pytest + if not LooseVersion(pytest.__version__) >= LooseVersion('3.0'): + raise ImportError + if extra_args is None: + extra_args = ['--tb=short', '--disable-pytest-warnings'] + cmd = [self.package_path] + extra_args + print('Running pytest ' + ' '.join(cmd)) + status = pytest.main(cmd) + if exit: + sys.exit(status) + except ImportError: + raise ImportError('pytest>=3 required to run the test') + + +def assert_equal(left, right): + """ + pandas >= 0.24.0 has `tm.assert_equal` that works for any of + Index, Series, and DataFrame inputs. Until statsmodels requirements + catch up to that, we implement a version of that here. + + Parameters + ---------- + left : pd.Index, pd.Series, or pd.DataFrame + right : object + + Raises + ------ + AssertionError + """ + if isinstance(left, pd.Index): + tm.assert_index_equal(left, right) + elif isinstance(left, pd.Series): + tm.assert_series_equal(left, right) + elif isinstance(left, pd.DataFrame): + tm.assert_frame_equal(left, right) + else: + raise TypeError(type(left)) + + +def check_ttest_tvalues(results): + # test that t_test has same results a params, bse, tvalues, ... + res = results + mat = np.eye(len(res.params)) + tt = res.t_test(mat) + + assert_allclose(tt.effect, res.params, rtol=1e-12) + # TODO: tt.sd and tt.tvalue are 2d also for single regressor, squeeze + assert_allclose(np.squeeze(tt.sd), res.bse, rtol=1e-10) + assert_allclose(np.squeeze(tt.tvalue), res.tvalues, rtol=1e-12) + assert_allclose(tt.pvalue, res.pvalues, rtol=5e-10) + assert_allclose(tt.conf_int(), res.conf_int(), rtol=1e-10) + + # test params table frame returned by t_test + table_res = np.column_stack((res.params, res.bse, res.tvalues, + res.pvalues, res.conf_int())) + table2 = tt.summary_frame().values + assert_allclose(table2, table_res, rtol=1e-12) + + # TODO: move this to test_attributes ? + assert_(hasattr(res, 'use_t')) + + tt = res.t_test(mat[0]) + tt.summary() # smoke test for #1323 + assert_allclose(tt.pvalue, res.pvalues[0], rtol=5e-10) + # TODO: Adapt more of test_generic_methods.test_ttest_values here? + + +def check_ftest_pvalues(results): + """ + Check that the outputs of `res.wald_test` produces pvalues that + match res.pvalues. + + Check that the string representations of `res.summary()` and (possibly) + `res.summary2()` correctly label either the t or z-statistic. + + Parameters + ---------- + results : Results + + Raises + ------ + AssertionError + """ + res = results + use_t = res.use_t + k_vars = len(res.params) + # check default use_t + pvals = [res.wald_test(np.eye(k_vars)[k], use_f=use_t).pvalue + for k in range(k_vars)] + assert_allclose(pvals, res.pvalues, rtol=5e-10, atol=1e-25) + + # automatic use_f based on results class use_t + pvals = [res.wald_test(np.eye(k_vars)[k]).pvalue + for k in range(k_vars)] + assert_allclose(pvals, res.pvalues, rtol=5e-10, atol=1e-25) + + # TODO: Separate these out into summary/summary2 tests? + # label for pvalues in summary + string_use_t = 'P>|z|' if use_t is False else 'P>|t|' + summ = str(res.summary()) + assert_(string_use_t in summ) + + # try except for models that don't have summary2 + try: + summ2 = str(res.summary2()) + except AttributeError: + pass + else: + assert_(string_use_t in summ2) + + +def check_fitted(results): + import pytest + + # ignore wrapper for isinstance check + from statsmodels.genmod.generalized_linear_model import GLMResults + from statsmodels.discrete.discrete_model import DiscreteResults + + # possibly unwrap -- GEE has no wrapper + results = getattr(results, '_results', results) + + if isinstance(results, (GLMResults, DiscreteResults)): + pytest.skip('Not supported for {0}'.format(type(results))) + + res = results + fitted = res.fittedvalues + assert_allclose(res.model.endog - fitted, res.resid, rtol=1e-12) + assert_allclose(fitted, res.predict(), rtol=1e-12) + + +def check_predict_types(results): + """ + Check that the `predict` method of the given results object produces the + correct output type. + + Parameters + ---------- + results : Results + + Raises + ------ + AssertionError + """ + res = results + # squeeze to make 1d for single regressor test case + p_exog = np.squeeze(np.asarray(res.model.exog[:2])) + + # ignore wrapper for isinstance check + from statsmodels.genmod.generalized_linear_model import GLMResults + from statsmodels.discrete.discrete_model import DiscreteResults + + # possibly unwrap -- GEE has no wrapper + results = getattr(results, '_results', results) + + if isinstance(results, (GLMResults, DiscreteResults)): + # SMOKE test only TODO: mark this somehow + res.predict(p_exog) + res.predict(p_exog.tolist()) + res.predict(p_exog[0].tolist()) + else: + fitted = res.fittedvalues[:2] + assert_allclose(fitted, res.predict(p_exog), rtol=1e-12) + # this needs reshape to column-vector: + assert_allclose(fitted, res.predict(np.squeeze(p_exog).tolist()), + rtol=1e-12) + # only one prediction: + assert_allclose(fitted[:1], res.predict(p_exog[0].tolist()), + rtol=1e-12) + assert_allclose(fitted[:1], res.predict(p_exog[0]), + rtol=1e-12) + + # Check that pandas wrapping works as expected + exog_index = range(len(p_exog)) + predicted = res.predict(p_exog) + + cls = pd.Series if p_exog.ndim == 1 else pd.DataFrame + predicted_pandas = res.predict(cls(p_exog, index=exog_index)) + + # predicted.ndim may not match p_exog.ndim because it may be squeezed + # if p_exog has only one column + cls = pd.Series if predicted.ndim == 1 else pd.DataFrame + predicted_expected = cls(predicted, index=exog_index) + assert_equal(predicted_expected, predicted_pandas) diff --git a/statsmodels/tools/catadd.py b/statsmodels/tools/catadd.py new file mode 100644 index 0000000..3ca7778 --- /dev/null +++ b/statsmodels/tools/catadd.py @@ -0,0 +1,38 @@ +from __future__ import print_function +import numpy as np + + +def add_indep(x, varnames, dtype=None): + ''' + construct array with independent columns + + x is either iterable (list, tuple) or instance of ndarray or a subclass + of it. If x is an ndarray, then each column is assumed to represent a + variable with observations in rows. + ''' + # TODO: this needs tests for subclasses + + if isinstance(x, np.ndarray) and x.ndim == 2: + x = x.T + + nvars_orig = len(x) + nobs = len(x[0]) + if not dtype: + dtype = np.asarray(x[0]).dtype + xout = np.zeros((nobs, nvars_orig), dtype=dtype) + count = 0 + rank_old = 0 + varnames_new = [] + varnames_dropped = [] + keepindx = [] + for (xi, ni) in zip(x, varnames): + xout[:, count] = xi + rank_new = np.linalg.matrix_rank(xout) + if rank_new > rank_old: + varnames_new.append(ni) + rank_old = rank_new + count += 1 + else: + varnames_dropped.append(ni) + + return xout[:, :count], varnames_new diff --git a/statsmodels/tools/data.py b/statsmodels/tools/data.py new file mode 100644 index 0000000..37bfd79 --- /dev/null +++ b/statsmodels/tools/data.py @@ -0,0 +1,124 @@ +""" +Compatibility tools for various data structure inputs +""" +from statsmodels.compat.python import range +import numpy as np +import pandas as pd + + +def _check_period_index(x, freq="M"): + from pandas import PeriodIndex, DatetimeIndex + if not isinstance(x.index, (DatetimeIndex, PeriodIndex)): + raise ValueError("The index must be a DatetimeIndex or PeriodIndex") + + if x.index.freq is not None: + inferred_freq = x.index.freqstr + else: + inferred_freq = pd.infer_freq(x.index) + if not inferred_freq.startswith(freq): + raise ValueError("Expected frequency {}. Got {}".format(inferred_freq, + freq)) + + +def is_data_frame(obj): + return isinstance(obj, pd.DataFrame) + + +def is_design_matrix(obj): + from patsy import DesignMatrix + return isinstance(obj, DesignMatrix) + + +def _is_structured_ndarray(obj): + return isinstance(obj, np.ndarray) and obj.dtype.names is not None + + +def interpret_data(data, colnames=None, rownames=None): + """ + Convert passed data structure to form required by estimation classes + + Parameters + ---------- + data : ndarray-like + colnames : sequence or None + May be part of data structure + rownames : sequence or None + + Returns + ------- + (values, colnames, rownames) : (homogeneous ndarray, list) + """ + if isinstance(data, np.ndarray): + if _is_structured_ndarray(data): + if colnames is None: + colnames = data.dtype.names + values = struct_to_ndarray(data) + else: + values = data + + if colnames is None: + colnames = ['Y_%d' % i for i in range(values.shape[1])] + elif is_data_frame(data): + # XXX: hack + data = data.dropna() + values = data.values + colnames = data.columns + rownames = data.index + else: # pragma: no cover + raise TypeError('Cannot handle input type {typ}' + .format(typ=type(data).__name__)) + + if not isinstance(colnames, list): + colnames = list(colnames) + + # sanity check + if len(colnames) != values.shape[1]: + raise ValueError('length of colnames does not match number ' + 'of columns in data') + + if rownames is not None and len(rownames) != len(values): + raise ValueError('length of rownames does not match number ' + 'of rows in data') + + return values, colnames, rownames + + +def struct_to_ndarray(arr): + return arr.view((float, (len(arr.dtype.names),)), type=np.ndarray) + + +def _is_using_ndarray_type(endog, exog): + return (type(endog) is np.ndarray and + (type(exog) is np.ndarray or exog is None)) + + +def _is_using_ndarray(endog, exog): + return (isinstance(endog, np.ndarray) and + (isinstance(exog, np.ndarray) or exog is None)) + + +def _is_using_pandas(endog, exog): + from statsmodels.compat.pandas import data_klasses as klasses + return (isinstance(endog, klasses) or isinstance(exog, klasses)) + + +def _is_array_like(endog, exog): + try: # do it like this in case of mixed types, ie., ndarray and list + endog = np.asarray(endog) + exog = np.asarray(exog) + return True + except: + return False + + +def _is_using_patsy(endog, exog): + # we get this when a structured array is passed through a formula + return (is_design_matrix(endog) and + (is_design_matrix(exog) or exog is None)) + + +def _is_recarray(data): + """ + Returns true if data is a recarray + """ + return isinstance(data, np.core.recarray) diff --git a/statsmodels/tools/decorators.py b/statsmodels/tools/decorators.py new file mode 100644 index 0000000..c8c5748 --- /dev/null +++ b/statsmodels/tools/decorators.py @@ -0,0 +1,138 @@ +from __future__ import print_function +from statsmodels.tools.sm_exceptions import CacheWriteWarning +import warnings + +__all__ = ['cache_readonly', 'cache_writable', 'deprecated_alias', + 'ResettableCache'] + + +class ResettableCache(dict): + def __init__(self, *args, **kwargs): + super(ResettableCache, self).__init__(*args, **kwargs) + self.__dict__ = self + + +def deprecated_alias(old_name, new_name, remove_version=None, msg=None, + warning=FutureWarning): + """ + Deprecate attribute in favor of alternative name. + + Parameters + ---------- + old_name : str + Old, deprecated name + new_name : str + New name + remove_version : str, optional + Version that the alias will be removed + msg : str, optional + Message to show. Default is + `old_name` is a deprecated alias for `new_name` + warning : Warning, optional + Warning class to give. Default is FutureWarning. + + Notes + ----- + Older or less-used classes may not conform to statsmodels naming + conventions. `deprecated_alias` lets us bring them into conformance + without breaking backward-compatibility. + + Example + ------- + Instances of the `Foo` class have a `nvars` attribute, but it _should_ + be called `neqs`: + + class Foo(object): + nvars = deprecated_alias('nvars', 'neqs') + def __init__(self, neqs): + self.neqs = neqs + + >>> foo = Foo(3) + >>> foo.nvars + __main__:1: FutureWarning: nvars is a deprecated alias for neqs + 3 + """ + + if msg is None: + msg = '%s is a deprecated alias for %s' % (old_name, new_name) + if remove_version is not None: + msg += ', will be removed in version %s' % remove_version + + def fget(self): + warnings.warn(msg, warning, stacklevel=2) + return getattr(self, new_name) + + def fset(self, value): + warnings.warn(msg, warning, stacklevel=2) + setattr(self, new_name, value) + + res = property(fget=fget, fset=fset) + return res + + +class CachedAttribute(object): + + def __init__(self, func, cachename=None): + self.fget = func + self.name = func.__name__ + self.cachename = cachename or '_cache' + + def __get__(self, obj, type=None): + if obj is None: + return self.fget + # Get the cache or set a default one if needed + _cachename = self.cachename + _cache = getattr(obj, _cachename, None) + if _cache is None: + setattr(obj, _cachename, {}) + _cache = getattr(obj, _cachename) + # Get the name of the attribute to set and cache + name = self.name + _cachedval = _cache.get(name, None) + if _cachedval is None: + _cachedval = self.fget(obj) + _cache[name] = _cachedval + + return _cachedval + + def __set__(self, obj, value): + errmsg = "The attribute '%s' cannot be overwritten" % self.name + warnings.warn(errmsg, CacheWriteWarning) + + +class CachedWritableAttribute(CachedAttribute): + def __set__(self, obj, value): + _cache = getattr(obj, self.cachename) + name = self.name + _cache[name] = value + + +class _cache_readonly(property): + """ + Decorator for CachedAttribute + """ + + def __init__(self, cachename=None): + self.func = None + self.cachename = cachename + + def __call__(self, func): + return CachedAttribute(func, + cachename=self.cachename) + + +cache_readonly = _cache_readonly() + + +class cache_writable(_cache_readonly): + """ + Decorator for CachedWritableAttribute + """ + def __call__(self, func): + return CachedWritableAttribute(func, + cachename=self.cachename) + + +def nottest(fn): + fn.__test__ = False + return fn diff --git a/statsmodels/tools/docstring.py b/statsmodels/tools/docstring.py new file mode 100644 index 0000000..94af8ec --- /dev/null +++ b/statsmodels/tools/docstring.py @@ -0,0 +1,676 @@ +""" +Substantially copied from NumpyDoc 1.0pre. +""" +import copy +import inspect +import re +import textwrap +from collections import namedtuple +from collections.abc import Mapping + + +def dedent_lines(lines): + """Deindent a list of lines maximally""" + return textwrap.dedent("\n".join(lines)).split("\n") + + +def strip_blank_lines(l): + """Remove leading and trailing blank lines from a list of lines""" + while l and not l[0].strip(): + del l[0] + while l and not l[-1].strip(): + del l[-1] + return l + + +class Reader(object): + """ + A line-based string reader. + """ + + def __init__(self, data): + """ + Parameters + ---------- + data : str + String with lines separated by '\n'. + + """ + if isinstance(data, list): + self._str = data + else: + self._str = data.split('\n') # store string as list of lines + + self.reset() + + def __getitem__(self, n): + return self._str[n] + + def reset(self): + self._l = 0 # current line nr + + def read(self): + if not self.eof(): + out = self[self._l] + self._l += 1 + return out + else: + return '' + + def seek_next_non_empty_line(self): + for l in self[self._l:]: + if l.strip(): + break + else: + self._l += 1 + + def eof(self): + return self._l >= len(self._str) + + def read_to_condition(self, condition_func): + start = self._l + for line in self[start:]: + if condition_func(line): + return self[start:self._l] + self._l += 1 + if self.eof(): + return self[start:self._l + 1] + return [] + + def read_to_next_empty_line(self): + self.seek_next_non_empty_line() + + def is_empty(line): + return not line.strip() + + return self.read_to_condition(is_empty) + + def read_to_next_unindented_line(self): + def is_unindented(line): + return (line.strip() and (len(line.lstrip()) == len(line))) + + return self.read_to_condition(is_unindented) + + def peek(self, n=0): + if self._l + n < len(self._str): + return self[self._l + n] + else: + return '' + + def is_empty(self): + return not ''.join(self._str).strip() + + +class ParseError(Exception): + def __str__(self): + message = self.args[0] + if hasattr(self, 'docstring'): + message = "%s in %r" % (message, self.docstring) + return message + + +Parameter = namedtuple('Parameter', ['name', 'type', 'desc']) + + +class NumpyDocString(Mapping): + """Parses a numpydoc string to an abstract representation + + Instances define a mapping from section title to structured data. + + """ + + sections = { + 'Signature': '', + 'Summary': [''], + 'Extended Summary': [], + 'Parameters': [], + 'Returns': [], + 'Yields': [], + 'Receives': [], + 'Raises': [], + 'Warns': [], + 'Other Parameters': [], + 'Attributes': [], + 'Methods': [], + 'See Also': [], + 'Notes': [], + 'Warnings': [], + 'References': '', + 'Examples': '', + 'index': {} + } + + def __init__(self, docstring): + orig_docstring = docstring + docstring = textwrap.dedent(docstring).split('\n') + + self._doc = Reader(docstring) + self._parsed_data = copy.deepcopy(self.sections) + + try: + self._parse() + except ParseError as e: + e.docstring = orig_docstring + raise + + def __getitem__(self, key): + return self._parsed_data[key] + + def __setitem__(self, key, val): + if key not in self._parsed_data: + self._error_location("Unknown section %s" % key) + else: + self._parsed_data[key] = val + + def __iter__(self): + return iter(self._parsed_data) + + def __len__(self): + return len(self._parsed_data) + + def _is_at_section(self): + self._doc.seek_next_non_empty_line() + + if self._doc.eof(): + return False + + l1 = self._doc.peek().strip() # e.g. Parameters + + if l1.startswith('.. index::'): + return True + + l2 = self._doc.peek(1).strip() # ---------- or ========== + return l2.startswith('-' * len(l1)) or l2.startswith('=' * len(l1)) + + def _strip(self, doc): + i = 0 + j = 0 + for i, line in enumerate(doc): + if line.strip(): + break + + for j, line in enumerate(doc[::-1]): + if line.strip(): + break + + return doc[i:len(doc) - j] + + def _read_to_next_section(self): + section = self._doc.read_to_next_empty_line() + + while not self._is_at_section() and not self._doc.eof(): + if not self._doc.peek(-1).strip(): # previous line was empty + section += [''] + + section += self._doc.read_to_next_empty_line() + + return section + + def _read_sections(self): + while not self._doc.eof(): + data = self._read_to_next_section() + name = data[0].strip() + + if name.startswith('..'): # index section + yield name, data[1:] + elif len(data) < 2: + yield StopIteration + else: + yield name, self._strip(data[2:]) + + def _parse_param_list(self, content, single_element_is_type=False): + r = Reader(content) + params = [] + while not r.eof(): + header = r.read().strip() + if ' : ' in header: + arg_name, arg_type = header.split(' : ')[:2] + else: + if single_element_is_type: + arg_name, arg_type = '', header + else: + arg_name, arg_type = header, '' + + desc = r.read_to_next_unindented_line() + desc = dedent_lines(desc) + desc = strip_blank_lines(desc) + + params.append(Parameter(arg_name, arg_type, desc)) + + return params + + # See also supports the following formats. + # + # + # SPACE* COLON SPACE+ SPACE* + # ( COMMA SPACE+ )+ (COMMA | PERIOD)? SPACE* + # ( COMMA SPACE+ )* SPACE* COLON SPACE+ SPACE* + + # is one of + # + # COLON COLON BACKTICK BACKTICK + # where + # is a legal function name, and + # is any nonempty sequence of word characters. + # Examples: func_f1 :meth:`func_h1` :obj:`~baz.obj_r` :class:`class_j` + # is a string describing the function. + + _role = r":(?P\w+):" + _funcbacktick = r"`(?P(?:~\w+\.)?[a-zA-Z0-9_\.-]+)`" + _funcplain = r"(?P[a-zA-Z0-9_\.-]+)" + _funcname = r"(" + _role + _funcbacktick + r"|" + _funcplain + r")" + _funcnamenext = _funcname.replace('role', 'rolenext') + _funcnamenext = _funcnamenext.replace('name', 'namenext') + _description = r"(?P\s*:(\s+(?P\S+.*))?)?\s*$" + _func_rgx = re.compile(r"^\s*" + _funcname + r"\s*") + _line_rgx = re.compile( + r"^\s*" + + r"(?P" + # group for all function names + _funcname + + r"(?P([,]\s+" + _funcnamenext + r")*)" + + r")" + # end of "allfuncs" + # Some function lists have a trailing comma (or period) + r"(?P[,\.])?" + + _description) + + # Empty elements are replaced with '..' + empty_description = '..' + + def _parse_see_also(self, content): + """ + func_name : Descriptive text + continued text + another_func_name : Descriptive text + func_name1, func_name2, :meth:`func_name`, func_name3 + + """ + + items = [] + + def parse_item_name(text): + """Match ':role:`name`' or 'name'.""" + m = self._func_rgx.match(text) + if not m: + raise ParseError("%s is not a item name" % text) + role = m.group('role') + name = m.group('name') if role else m.group('name2') + return name, role, m.end() + + rest = [] + for line in content: + if not line.strip(): + continue + + line_match = self._line_rgx.match(line) + description = None + if line_match: + description = line_match.group('desc') + if line_match.group('trailing') and description: + self._error_location( + 'Unexpected comma or period after function list at ' + 'index %d of line ' + '"%s"' % (line_match.end('trailing'), line)) + if not description and line.startswith(' '): + rest.append(line.strip()) + elif line_match: + funcs = [] + text = line_match.group('allfuncs') + while True: + if not text.strip(): + break + name, role, match_end = parse_item_name(text) + funcs.append((name, role)) + text = text[match_end:].strip() + if text and text[0] == ',': + text = text[1:].strip() + rest = list(filter(None, [description])) + items.append((funcs, rest)) + else: + raise ParseError("%s is not a item name" % line) + return items + + def _parse_index(self, section, content): + """ + .. index: default + :refguide: something, else, and more + + """ + + def strip_each_in(lst): + return [s.strip() for s in lst] + + out = {} + section = section.split('::') + if len(section) > 1: + out['default'] = strip_each_in(section[1].split(','))[0] + for line in content: + line = line.split(':') + if len(line) > 2: + out[line[1]] = strip_each_in(line[2].split(',')) + return out + + def _parse_summary(self): + """Grab signature (if given) and summary""" + if self._is_at_section(): + return + + # If several signatures present, take the last one + while True: + summary = self._doc.read_to_next_empty_line() + summary_str = " ".join([s.strip() for s in summary]).strip() + compiled = re.compile(r'^([\w., ]+=)?\s*[\w\.]+\(.*\)$') + if compiled.match(summary_str): + self['Signature'] = summary_str + if not self._is_at_section(): + continue + break + + if summary is not None: + self['Summary'] = summary + + if not self._is_at_section(): + self['Extended Summary'] = self._read_to_next_section() + + def _parse(self): + self._doc.reset() + self._parse_summary() + + sections = list(self._read_sections()) + section_names = set([section for section, content in sections]) + + has_returns = 'Returns' in section_names + has_yields = 'Yields' in section_names + # We could do more tests, but we are not. Arbitrarily. + if has_returns and has_yields: + msg = 'Docstring contains both a Returns and Yields section.' + raise ValueError(msg) + if not has_yields and 'Receives' in section_names: + msg = 'Docstring contains a Receives section but not Yields.' + raise ValueError(msg) + + for (section, content) in sections: + if not section.startswith('..'): + section = (s.capitalize() for s in section.split(' ')) + section = ' '.join(section) + if self.get(section): + self._error_location("The section %s appears twice" + % section) + + if section in ('Parameters', 'Other Parameters', 'Attributes', + 'Methods'): + self[section] = self._parse_param_list(content) + elif section in ( + 'Returns', 'Yields', 'Raises', 'Warns', 'Receives'): + self[section] = self._parse_param_list( + content, single_element_is_type=True) + elif section.startswith('.. index::'): + self['index'] = self._parse_index(section, content) + elif section == 'See Also': + self['See Also'] = self._parse_see_also(content) + else: + self[section] = content + + def _error_location(self, msg): + if hasattr(self, '_obj'): + # we know where the docs came from: + try: + filename = inspect.getsourcefile(self._obj) + except TypeError: + filename = None + msg = msg + (" in the docstring of %s in %s." + % (self._obj, filename)) + + raise ValueError(msg) + + # string conversion routines + + def _str_header(self, name, symbol='-'): + return [name, len(name) * symbol] + + def _str_indent(self, doc, indent=4): + out = [] + for line in doc: + out += [' ' * indent + line] + return out + + def _str_signature(self): + if self['Signature']: + return [self['Signature'].replace('*', r'\*')] + [''] + else: + return [''] + + def _str_summary(self): + if self['Summary']: + return self['Summary'] + [''] + else: + return [] + + def _str_extended_summary(self): + if self['Extended Summary']: + return self['Extended Summary'] + [''] + else: + return [] + + def _str_param_list(self, name): + out = [] + if self[name]: + out += self._str_header(name) + for param in self[name]: + parts = [] + if param.name: + parts.append(param.name) + if param.type: + parts.append(param.type) + out += [' : '.join(parts)] + if param.desc and ''.join(param.desc).strip(): + out += self._str_indent(param.desc) + out += [''] + return out + + def _str_section(self, name): + out = [] + if self[name]: + out += self._str_header(name) + out += self[name] + out += [''] + return out + + def _str_see_also(self, func_role): + if not self['See Also']: + return [] + out = [] + out += self._str_header("See Also") + last_had_desc = True + for funcs, desc in self['See Also']: + assert isinstance(funcs, list) + links = [] + for func, role in funcs: + if role: + link = ':%s:`%s`' % (role, func) + elif func_role: + link = ':%s:`%s`' % (func_role, func) + else: + link = "%s" % func + links.append(link) + link = ', '.join(links) + out += [link] + if desc: + out += self._str_indent([' '.join(desc)]) + last_had_desc = True + else: + last_had_desc = False + out += self._str_indent([self.empty_description]) + + if last_had_desc: + out += [''] + return out + + def _str_index(self): + idx = self['index'] + out = [] + output_index = False + default_index = idx.get('default', '') + if default_index: + output_index = True + out += ['.. index:: %s' % default_index] + for section, references in idx.items(): + if section == 'default': + continue + output_index = True + out += [' :%s: %s' % (section, ', '.join(references))] + if output_index: + return out + else: + return '' + + def __str__(self, func_role=''): + out = [] + out += self._str_signature() + out += self._str_summary() + out += self._str_extended_summary() + for param_list in ('Parameters', 'Returns', 'Yields', 'Receives', + 'Other Parameters', 'Raises', 'Warns'): + out += self._str_param_list(param_list) + out += self._str_section('Warnings') + out += self._str_see_also(func_role) + for s in ('Notes', 'References', 'Examples'): + out += self._str_section(s) + for param_list in ('Attributes', 'Methods'): + out += self._str_param_list(param_list) + out += self._str_index() + return '\n'.join(out) + + +class Docstring(object): + """ + Docstring modification. + + Parameters + ---------- + docstring : str + The docstring to modify. + """ + + def __init__(self, docstring): + self._ds = None + self._docstring = docstring + if docstring is None: + return + self._ds = NumpyDocString(docstring) + + def remove_parameters(self, parameters): + """ + Parameters + ---------- + parameters : str, list[str] + The names of the parameters to remove. + """ + if self._docstring is None: + # Protection against -oo execution + return + if isinstance(parameters, str): + parameters = [parameters] + repl = [param for param in self._ds['Parameters'] + if param.name not in parameters] + if len(repl) + len(parameters) != len(self._ds['Parameters']): + raise ValueError('One or more parameters were not found.') + self._ds['Parameters'] = repl + + def insert_parameters(self, after, parameters): + """ + Parameters + ---------- + after : {None, str} + If None, inset the parameters before the first parameter in the + docstring. + parameters : Parameter, list[Parameter] + A Parameter of a list of Parameters. + """ + if self._docstring is None: + # Protection against -oo execution + return + if isinstance(parameters, Parameter): + parameters = [parameters] + if after is None: + self._ds['Parameters'] = parameters + self._ds['Parameters'] + else: + loc = -1 + for i, param in enumerate(self._ds['Parameters']): + if param.name == after: + loc = i+1 + break + if loc < 0: + raise ValueError() + params = self._ds['Parameters'][:loc] + parameters + params += self._ds['Parameters'][loc:] + self._ds['Parameters'] = params + + def replace_block(self, block_name, block): + """ + Parameters + ---------- + block_name : str + Name of the block to replace, e.g., 'Summary'. + block : object + The replacement block. The structure of the replacement block must + match how the block is stored by NumpyDocString. + """ + if self._docstring is None: + # Protection against -oo execution + return + block_name = ' '.join(map(str.capitalize, block_name.split(' '))) + if block_name not in self._ds: + raise ValueError('{0} is not a block in the ' + 'docstring'.format(block_name)) + if not isinstance(block, list): + block = [block] + self._ds[block_name] = block + + def extract_parameters(self, parameters, indent=0): + if self._docstring is None: + # Protection against -oo execution + return + if isinstance(parameters, str): + parameters = [parameters] + final = [] + ds_params = [param.name for param in self._ds['Parameters']] + missing = set(parameters).difference(ds_params) + if missing: + raise ValueError('{0} were not found in the ' + 'docstring'.format(','.join(missing))) + for param in parameters: + for ds_param in self._ds['Parameters']: + if ds_param.name == param: + final.append(ds_param) + ds = copy.deepcopy(self._ds) + for key in ds: + if key != 'Parameters': + ds[key] = [] if key != 'index' else {} + else: + ds[key] = final + out = '\n'.join(str(ds).split('\n')[3:]) + if indent: + out = textwrap.indent(out, ' ' * indent) + return out + + def __str__(self): + return str(self._ds) + + +def remove_parameters(docstring, parameters): + """ + Parameters + ---------- + docstring : str + The docstring to modify. + parameters : str, list[str] + The names of the parameters to remove. + + Returns + ------- + str + The modified docstring. + """ + if docstring is None: + return + return str(Docstring(docstring).remove_parameters(parameters)) diff --git a/statsmodels/tools/eval_measures.py b/statsmodels/tools/eval_measures.py new file mode 100644 index 0000000..45abeee --- /dev/null +++ b/statsmodels/tools/eval_measures.py @@ -0,0 +1,585 @@ +# -*- coding: utf-8 -*- +"""some measures for evaluation of prediction, tests and model selection + +Created on Tue Nov 08 15:23:20 2011 + +Author: Josef Perktold +License: BSD-3 + +""" +import numpy as np + + +def mse(x1, x2, axis=0): + """mean squared error + + Parameters + ---------- + x1, x2 : array_like + The performance measure depends on the difference between these two + arrays. + axis : int + axis along which the summary statistic is calculated + + Returns + ------- + mse : ndarray or float + mean squared error along given axis. + + Notes + ----- + If ``x1`` and ``x2`` have different shapes, then they need to broadcast. + This uses ``numpy.asanyarray`` to convert the input. Whether this is the + desired result or not depends on the array subclass, for example + numpy matrices will silently produce an incorrect result. + + """ + x1 = np.asanyarray(x1) + x2 = np.asanyarray(x2) + return np.mean((x1-x2)**2, axis=axis) + + +def rmse(x1, x2, axis=0): + """root mean squared error + + Parameters + ---------- + x1, x2 : array_like + The performance measure depends on the difference between these two + arrays. + axis : int + axis along which the summary statistic is calculated + + Returns + ------- + rmse : ndarray or float + root mean squared error along given axis. + + Notes + ----- + If ``x1`` and ``x2`` have different shapes, then they need to broadcast. + This uses ``numpy.asanyarray`` to convert the input. Whether this is the + desired result or not depends on the array subclass, for example + numpy matrices will silently produce an incorrect result. + + """ + x1 = np.asanyarray(x1) + x2 = np.asanyarray(x2) + return np.sqrt(mse(x1, x2, axis=axis)) + + +def maxabs(x1, x2, axis=0): + """maximum absolute error + + Parameters + ---------- + x1, x2 : array_like + The performance measure depends on the difference between these two + arrays. + axis : int + axis along which the summary statistic is calculated + + Returns + ------- + maxabs : ndarray or float + maximum absolute difference along given axis. + + Notes + ----- + If ``x1`` and ``x2`` have different shapes, then they need to broadcast. + This uses ``numpy.asanyarray`` to convert the input. Whether this is the + desired result or not depends on the array subclass. + + """ + x1 = np.asanyarray(x1) + x2 = np.asanyarray(x2) + return np.max(np.abs(x1-x2), axis=axis) + + +def meanabs(x1, x2, axis=0): + """mean absolute error + + Parameters + ---------- + x1, x2 : array_like + The performance measure depends on the difference between these two + arrays. + axis : int + axis along which the summary statistic is calculated + + Returns + ------- + meanabs : ndarray or float + mean absolute difference along given axis. + + Notes + ----- + If ``x1`` and ``x2`` have different shapes, then they need to broadcast. + This uses ``numpy.asanyarray`` to convert the input. Whether this is the + desired result or not depends on the array subclass. + + """ + x1 = np.asanyarray(x1) + x2 = np.asanyarray(x2) + return np.mean(np.abs(x1-x2), axis=axis) + + +def medianabs(x1, x2, axis=0): + """median absolute error + + Parameters + ---------- + x1, x2 : array_like + The performance measure depends on the difference between these two + arrays. + axis : int + axis along which the summary statistic is calculated + + Returns + ------- + medianabs : ndarray or float + median absolute difference along given axis. + + Notes + ----- + If ``x1`` and ``x2`` have different shapes, then they need to broadcast. + This uses ``numpy.asanyarray`` to convert the input. Whether this is the + desired result or not depends on the array subclass. + + """ + x1 = np.asanyarray(x1) + x2 = np.asanyarray(x2) + return np.median(np.abs(x1-x2), axis=axis) + + +def bias(x1, x2, axis=0): + """bias, mean error + + Parameters + ---------- + x1, x2 : array_like + The performance measure depends on the difference between these two + arrays. + axis : int + axis along which the summary statistic is calculated + + Returns + ------- + bias : ndarray or float + bias, or mean difference along given axis. + + Notes + ----- + If ``x1`` and ``x2`` have different shapes, then they need to broadcast. + This uses ``numpy.asanyarray`` to convert the input. Whether this is the + desired result or not depends on the array subclass. + + """ + x1 = np.asanyarray(x1) + x2 = np.asanyarray(x2) + return np.mean(x1-x2, axis=axis) + + +def medianbias(x1, x2, axis=0): + """median bias, median error + + Parameters + ---------- + x1, x2 : array_like + The performance measure depends on the difference between these two + arrays. + axis : int + axis along which the summary statistic is calculated + + Returns + ------- + medianbias : ndarray or float + median bias, or median difference along given axis. + + Notes + ----- + If ``x1`` and ``x2`` have different shapes, then they need to broadcast. + This uses ``numpy.asanyarray`` to convert the input. Whether this is the + desired result or not depends on the array subclass. + + """ + x1 = np.asanyarray(x1) + x2 = np.asanyarray(x2) + return np.median(x1-x2, axis=axis) + + +def vare(x1, x2, ddof=0, axis=0): + """variance of error + + Parameters + ---------- + x1, x2 : array_like + The performance measure depends on the difference between these two + arrays. + axis : int + axis along which the summary statistic is calculated + + Returns + ------- + vare : ndarray or float + variance of difference along given axis. + + Notes + ----- + If ``x1`` and ``x2`` have different shapes, then they need to broadcast. + This uses ``numpy.asanyarray`` to convert the input. Whether this is the + desired result or not depends on the array subclass. + + """ + x1 = np.asanyarray(x1) + x2 = np.asanyarray(x2) + return np.var(x1-x2, ddof=ddof, axis=axis) + + +def stde(x1, x2, ddof=0, axis=0): + """standard deviation of error + + Parameters + ---------- + x1, x2 : array_like + The performance measure depends on the difference between these two + arrays. + axis : int + axis along which the summary statistic is calculated + + Returns + ------- + stde : ndarray or float + standard deviation of difference along given axis. + + Notes + ----- + If ``x1`` and ``x2`` have different shapes, then they need to broadcast. + This uses ``numpy.asanyarray`` to convert the input. Whether this is the + desired result or not depends on the array subclass. + + """ + x1 = np.asanyarray(x1) + x2 = np.asanyarray(x2) + return np.std(x1-x2, ddof=ddof, axis=axis) + + +def iqr(x1, x2, axis=0): + """interquartile range of error + + rounded index, no interpolations + + this could use newer numpy function instead + + Parameters + ---------- + x1, x2 : array_like + The performance measure depends on the difference between these two + arrays. + axis : int + axis along which the summary statistic is calculated + + Returns + ------- + mse : ndarray or float + mean squared error along given axis. + + Notes + ----- + If ``x1`` and ``x2`` have different shapes, then they need to broadcast. + + This uses ``numpy.asarray`` to convert the input, in contrast to the other + functions in this category. + + """ + x1 = np.asarray(x1) + x2 = np.asarray(x2) + if axis is None: + x1 = np.ravel(x1) + x2 = np.ravel(x2) + axis = 0 + xdiff = np.sort(x1 - x2) + nobs = x1.shape[axis] + idx = np.round((nobs-1) * np.array([0.25, 0.75])).astype(int) + sl = [slice(None)] * xdiff.ndim + sl[axis] = idx + iqr = np.diff(xdiff[tuple(sl)], axis=axis) + iqr = np.squeeze(iqr) # drop reduced dimension + return iqr + + +# Information Criteria +# --------------------- + +def aic(llf, nobs, df_modelwc): + """Akaike information criterion + + Parameters + ---------- + llf : float + value of the loglikelihood + nobs : int + number of observations + df_modelwc : int + number of parameters including constant + + Returns + ------- + aic : float + information criterion + + References + ---------- + http://en.wikipedia.org/wiki/Akaike_information_criterion + + """ + return -2. * llf + 2. * df_modelwc + + +def aicc(llf, nobs, df_modelwc): + """Akaike information criterion (AIC) with small sample correction + + Parameters + ---------- + llf : float + value of the loglikelihood + nobs : int + number of observations + df_modelwc : int + number of parameters including constant + + Returns + ------- + aicc : float + information criterion + + References + ---------- + http://en.wikipedia.org/wiki/Akaike_information_criterion#AICc + + """ + return -2. * llf + 2. * df_modelwc * nobs / (nobs - df_modelwc - 1.) + + +def bic(llf, nobs, df_modelwc): + """Bayesian information criterion (BIC) or Schwarz criterion + + Parameters + ---------- + llf : float + value of the loglikelihood + nobs : int + number of observations + df_modelwc : int + number of parameters including constant + + Returns + ------- + bic : float + information criterion + + References + ---------- + http://en.wikipedia.org/wiki/Bayesian_information_criterion + + """ + return -2. * llf + np.log(nobs) * df_modelwc + + +def hqic(llf, nobs, df_modelwc): + """Hannan-Quinn information criterion (HQC) + + Parameters + ---------- + llf : float + value of the loglikelihood + nobs : int + number of observations + df_modelwc : int + number of parameters including constant + + Returns + ------- + hqic : float + information criterion + + References + ---------- + Wikipedia doesn't say much + + """ + return -2. * llf + 2 * np.log(np.log(nobs)) * df_modelwc + + +# IC based on residual sigma + +def aic_sigma(sigma2, nobs, df_modelwc, islog=False): + r"""Akaike information criterion + + Parameters + ---------- + sigma2 : float + estimate of the residual variance or determinant of Sigma_hat in the + multivariate case. If islog is true, then it is assumed that sigma + is already log-ed, for example logdetSigma. + nobs : int + number of observations + df_modelwc : int + number of parameters including constant + + Returns + ------- + aic : float + information criterion + + Notes + ----- + A constant has been dropped in comparison to the loglikelihood base + information criteria. The information criteria should be used to compare + only comparable models. + + For example, AIC is defined in terms of the loglikelihood as + + :math:`-2 llf + 2 k` + + in terms of :math:`\hat{\sigma}^2` + + :math:`log(\hat{\sigma}^2) + 2 k / n` + + in terms of the determinant of :math:`\hat{\Sigma}` + + :math:`log(\|\hat{\Sigma}\|) + 2 k / n` + + Note: In our definition we do not divide by n in the log-likelihood + version. + + TODO: Latex math + + reference for example lecture notes by Herman Bierens + + See Also + -------- + + References + ---------- + http://en.wikipedia.org/wiki/Akaike_information_criterion + + """ + if not islog: + sigma2 = np.log(sigma2) + return sigma2 + aic(0, nobs, df_modelwc) / nobs + + +def aicc_sigma(sigma2, nobs, df_modelwc, islog=False): + """Akaike information criterion (AIC) with small sample correction + + Parameters + ---------- + sigma2 : float + estimate of the residual variance or determinant of Sigma_hat in the + multivariate case. If islog is true, then it is assumed that sigma + is already log-ed, for example logdetSigma. + nobs : int + number of observations + df_modelwc : int + number of parameters including constant + + Returns + ------- + aicc : float + information criterion + + Notes + ----- + A constant has been dropped in comparison to the loglikelihood base + information criteria. These should be used to compare for comparable + models. + + References + ---------- + http://en.wikipedia.org/wiki/Akaike_information_criterion#AICc + + """ + if not islog: + sigma2 = np.log(sigma2) + return sigma2 + aicc(0, nobs, df_modelwc) / nobs + + +def bic_sigma(sigma2, nobs, df_modelwc, islog=False): + """Bayesian information criterion (BIC) or Schwarz criterion + + Parameters + ---------- + sigma2 : float + estimate of the residual variance or determinant of Sigma_hat in the + multivariate case. If islog is true, then it is assumed that sigma + is already log-ed, for example logdetSigma. + nobs : int + number of observations + df_modelwc : int + number of parameters including constant + + Returns + ------- + bic : float + information criterion + + Notes + ----- + A constant has been dropped in comparison to the loglikelihood base + information criteria. These should be used to compare for comparable + models. + + References + ---------- + http://en.wikipedia.org/wiki/Bayesian_information_criterion + + """ + if not islog: + sigma2 = np.log(sigma2) + return sigma2 + bic(0, nobs, df_modelwc) / nobs + + +def hqic_sigma(sigma2, nobs, df_modelwc, islog=False): + """Hannan-Quinn information criterion (HQC) + + Parameters + ---------- + sigma2 : float + estimate of the residual variance or determinant of Sigma_hat in the + multivariate case. If islog is true, then it is assumed that sigma + is already log-ed, for example logdetSigma. + nobs : int + number of observations + df_modelwc : int + number of parameters including constant + + Returns + ------- + hqic : float + information criterion + + Notes + ----- + A constant has been dropped in comparison to the loglikelihood base + information criteria. These should be used to compare for comparable + models. + + References + ---------- + xxx + + """ + if not islog: + sigma2 = np.log(sigma2) + return sigma2 + hqic(0, nobs, df_modelwc) / nobs + + +# from var_model.py, VAR only? separates neqs and k_vars per equation +# def fpe_sigma(): +# ((nobs + self.df_model) / self.df_resid) ** neqs * np.exp(ld) + + +__all__ = [maxabs, meanabs, medianabs, medianbias, mse, rmse, stde, vare, + aic, aic_sigma, aicc, aicc_sigma, bias, bic, bic_sigma, + hqic, hqic_sigma, iqr] diff --git a/statsmodels/tools/grouputils.py b/statsmodels/tools/grouputils.py new file mode 100644 index 0000000..28afd81 --- /dev/null +++ b/statsmodels/tools/grouputils.py @@ -0,0 +1,552 @@ +# -*- coding: utf-8 -*- +"""Tools for working with groups + +This provides several functions to work with groups and a Group class that +keeps track of the different representations and has methods to work more +easily with groups. + + +Author: Josef Perktold, +Author: Nathaniel Smith, recipe for sparse_dummies on scipy user mailing list + +Created on Tue Nov 29 15:44:53 2011 : sparse_dummies +Created on Wed Nov 30 14:28:24 2011 : combine_indices +changes: add Group class + +Notes +~~~~~ + +This reverses the class I used before, where the class was for the data and +the group was auxiliary. Here, it is only the group, no data is kept. + +sparse_dummies needs checking for corner cases, e.g. +what if a category level has zero elements? This can happen with subset + selection even if the original groups where defined as arange. + +Not all methods and options have been tried out yet after refactoring + +need more efficient loop if groups are sorted -> see GroupSorted.group_iter +""" +from __future__ import print_function +from statsmodels.compat.python import lrange, lzip, range +import numpy as np +import pandas as pd + +import statsmodels.tools.data as data_util +from pandas import Index, MultiIndex + + +def combine_indices(groups, prefix='', sep='.', return_labels=False): + """use np.unique to get integer group indices for product, intersection + + """ + if isinstance(groups, tuple): + groups = np.column_stack(groups) + else: + groups = np.asarray(groups) + + dt = groups.dtype + + is2d = (groups.ndim == 2) # need to store + + if is2d: + ncols = groups.shape[1] + if not groups.flags.c_contiguous: + groups = np.array(groups, order='C') + + groups_ = groups.view([('', groups.dtype)] * groups.shape[1]) + else: + groups_ = groups + + uni, uni_idx, uni_inv = np.unique(groups_, return_index=True, + return_inverse=True) + + if is2d: + uni = uni.view(dt).reshape(-1, ncols) + + # avoiding a view would be + # for t in uni.dtype.fields.values(): + # assert (t[0] == dt) + # + # uni.dtype = dt + # uni.shape = (uni.size//ncols, ncols) + + if return_labels: + label = [(prefix+sep.join(['%s']*len(uni[0]))) % tuple(ii) + for ii in uni] + return uni_inv, uni_idx, uni, label + else: + return uni_inv, uni_idx, uni + + +# written for and used in try_covariance_grouploop.py +def group_sums(x, group, use_bincount=True): + """simple bincount version, again + + group : array, integer + assumed to be consecutive integers + + no dtype checking because I want to raise in that case + + uses loop over columns of x + + for comparison, simple python loop + """ + x = np.asarray(x) + if x.ndim == 1: + x = x[:, None] + elif x.ndim > 2 and use_bincount: + raise ValueError('not implemented yet') + + if use_bincount: + + # re-label groups or bincount takes too much memory + if np.max(group) > 2 * x.shape[0]: + group = pd.factorize(group)[0] + + return np.array([np.bincount(group, weights=x[:, col]) + for col in range(x.shape[1])]) + else: + uniques = np.unique(group) + result = np.zeros([len(uniques)] + list(x.shape[1:])) + for ii, cat in enumerate(uniques): + result[ii] = x[group == cat].sum(0) + return result + + +def group_sums_dummy(x, group_dummy): + """sum by groups given group dummy variable + + group_dummy can be either ndarray or sparse matrix + """ + if data_util._is_using_ndarray_type(group_dummy, None): + return np.dot(x.T, group_dummy) + else: # check for sparse + return x.T * group_dummy + + +# TODO: See if this can be entirely replaced by Grouping.dummy_sparse; +# see GH#5687 +def dummy_sparse(groups): + """create a sparse indicator from a group array with integer labels + + Parameters + ---------- + groups: ndarray, int, 1d (nobs,) + an array of group indicators for each observation. Group levels are + assumed to be defined as consecutive integers, i.e. range(n_groups) + where n_groups is the number of group levels. A group level with no + observations for it will still produce a column of zeros. + + Returns + ------- + indi : ndarray, int8, 2d (nobs, n_groups) + an indicator array with one row per observation, that has 1 in the + column of the group level for that observation + + Examples + -------- + + >>> g = np.array([0, 0, 2, 1, 1, 2, 0]) + >>> indi = dummy_sparse(g) + >>> indi + <7x3 sparse matrix of type '' + with 7 stored elements in Compressed Sparse Row format> + >>> indi.todense() + matrix([[1, 0, 0], + [1, 0, 0], + [0, 0, 1], + [0, 1, 0], + [0, 1, 0], + [0, 0, 1], + [1, 0, 0]], dtype=int8) + + + current behavior with missing groups + >>> g = np.array([0, 0, 2, 0, 2, 0]) + >>> indi = dummy_sparse(g) + >>> indi.todense() + matrix([[1, 0, 0], + [1, 0, 0], + [0, 0, 1], + [1, 0, 0], + [0, 0, 1], + [1, 0, 0]], dtype=int8) + + """ + from scipy import sparse + + indptr = np.arange(len(groups)+1) + data = np.ones(len(groups), dtype=np.int8) + indi = sparse.csr_matrix((data, groups, indptr)) + + return indi + + +class Group(object): + + def __init__(self, group, name=''): + + # self.group = np.asarray(group) # TODO: use checks in combine_indices + self.name = name + uni, uni_idx, uni_inv = combine_indices(group) + + # TODO: rename these to something easier to remember + self.group_int, self.uni_idx, self.uni = uni, uni_idx, uni_inv + + self.n_groups = len(self.uni) + + # put this here so they can be overwritten before calling labels + self.separator = '.' + self.prefix = self.name + if self.prefix: + self.prefix = self.prefix + '=' + + # cache decorator + def counts(self): + return np.bincount(self.group_int) + + # cache_decorator + def labels(self): + # is this only needed for product of groups (intersection)? + prefix = self.prefix + uni = self.uni + sep = self.separator + + if uni.ndim > 1: + label = [(prefix+sep.join(['%s']*len(uni[0]))) % tuple(ii) + for ii in uni] + else: + label = [prefix + '%s' % ii for ii in uni] + return label + + def dummy(self, drop_idx=None, sparse=False, dtype=int): + """ + drop_idx is only available if sparse=False + + drop_idx is supposed to index into uni + """ + uni = self.uni + if drop_idx is not None: + idx = lrange(len(uni)) + del idx[drop_idx] + uni = uni[idx] + + group = self.group + + if not sparse: + return (group[:, None] == uni[None, :]).astype(dtype) + else: + return dummy_sparse(self.group_int) + + def interaction(self, other): + if isinstance(other, self.__class__): + other = other.group + return self.__class__((self, other)) + + def group_sums(self, x, use_bincount=True): + return group_sums(x, self.group_int, use_bincount=use_bincount) + + def group_demean(self, x, use_bincount=True): + nobs = float(len(x)) + means_g = group_sums(x / nobs, self.group_int, + use_bincount=use_bincount) + x_demeaned = x - means_g[self.group_int] # check reverse_index? + return x_demeaned, means_g + + +class GroupSorted(Group): + def __init__(self, group, name=''): + super(self.__class__, self).__init__(group, name=name) + + idx = (np.nonzero(np.diff(group))[0]+1).tolist() + self.groupidx = lzip([0] + idx, idx + [len(group)]) + + def group_iter(self): + for low, upp in self.groupidx: + yield slice(low, upp) + + def lag_indices(self, lag): + """return the index array for lagged values + + Warning: if k is larger then the number of observations for an + individual, then no values for that individual are returned. + + TODO: for the unbalanced case, I should get the same truncation for + the array with lag=0. From the return of lag_idx we wouldn't know + which individual is missing. + + TODO: do I want the full equivalent of lagmat in tsa? + maxlag or lag or lags. + + not tested yet + + """ + lag_idx = np.asarray(self.groupidx)[:, 1] - lag # asarray or already? + mask_ok = (lag <= lag_idx) + # still an observation that belongs to the same individual + + return lag_idx[mask_ok] + + +def _is_hierarchical(x): + """ + Checks if the first item of an array-like object is also array-like + If so, we have a MultiIndex and returns True. Else returns False. + """ + item = x[0] + # is there a better way to do this? + if isinstance(item, (list, tuple, np.ndarray, pd.Series, pd.DataFrame)): + return True + else: + return False + + +def _make_hierarchical_index(index, names): + return MultiIndex.from_tuples(*[index], names=names) + + +def _make_generic_names(index): + n_names = len(index.names) + pad = str(len(str(n_names))) # number of digits + return [("group{0:0"+pad+"}").format(i) for i in range(n_names)] + + +class Grouping(object): + def __init__(self, index, names=None): + """ + index : index-like + Can be pandas MultiIndex or Index or array-like. If array-like + and is a MultipleIndex (more than one grouping variable), + groups are expected to be in each row. E.g., [('red', 1), + ('red', 2), ('green', 1), ('green', 2)] + names : list or str, optional + The names to use for the groups. Should be a str if only + one grouping variable is used. + + Notes + ----- + If index is already a pandas Index then there is no copy. + """ + if isinstance(index, (Index, MultiIndex)): + if names is not None: + if hasattr(index, 'set_names'): # newer pandas + index.set_names(names, inplace=True) + else: + index.names = names + self.index = index + else: # array-like + if _is_hierarchical(index): + self.index = _make_hierarchical_index(index, names) + else: + self.index = Index(index, name=names) + if names is None: + names = _make_generic_names(self.index) + if hasattr(self.index, 'set_names'): + self.index.set_names(names, inplace=True) + else: + self.index.names = names + + self.nobs = len(self.index) + self.nlevels = len(self.index.names) + self.slices = None + + @property + def index_shape(self): + if hasattr(self.index, 'levshape'): + return self.index.levshape + else: + return self.index.shape + + @property + def levels(self): + if hasattr(self.index, 'levels'): + return self.index.levels + else: + return pd.Categorical(self.index).levels + + @property + def labels(self): + # this was index_int, but that's not a very good name... + codes = getattr(self.index, 'codes', None) + if codes is None: + if hasattr(self.index, 'labels'): + codes = self.index.labels + else: + codes = pd.Categorical(self.index).codes[None] + return codes + + @property + def group_names(self): + return self.index.names + + def reindex(self, index=None, names=None): + """ + Resets the index in-place. + """ + # NOTE: this isn't of much use if the rest of the data doesn't change + # This needs to reset cache + if names is None: + names = self.group_names + self = Grouping(index, names) + + def get_slices(self, level=0): + """ + Sets the slices attribute to be a list of indices of the sorted + groups for the first index level. I.e., self.slices[0] is the + index where each observation is in the first (sorted) group. + """ + # TODO: refactor this + groups = self.index.get_level_values(level).unique() + groups = np.array(groups) + groups.sort() + if isinstance(self.index, MultiIndex): + self.slices = [self.index.get_loc_level(x, level=level)[0] + for x in groups] + else: + self.slices = [self.index.get_loc(x) for x in groups] + + def count_categories(self, level=0): + """ + Sets the attribute counts to equal the bincount of the (integer-valued) + labels. + """ + # TODO: refactor this not to set an attribute. Why would we do this? + self.counts = np.bincount(self.labels[level]) + + def check_index(self, is_sorted=True, unique=True, index=None): + """Sanity checks""" + if not index: + index = self.index + if is_sorted: + test = pd.DataFrame(lrange(len(index)), index=index) + test_sorted = test.sort() + if not test.index.equals(test_sorted.index): + raise Exception('Data is not be sorted') + if unique: + if len(index) != len(index.unique()): + raise Exception('Duplicate index entries') + + def sort(self, data, index=None): + """Applies a (potentially hierarchical) sort operation on a numpy array + or pandas series/dataframe based on the grouping index or a + user-supplied index. Returns an object of the same type as the + original data as well as the matching (sorted) Pandas index. + """ + + if index is None: + index = self.index + if data_util._is_using_ndarray_type(data, None): + if data.ndim == 1: + out = pd.Series(data, index=index, copy=True) + out = out.sort_index() + else: + out = pd.DataFrame(data, index=index) + out = out.sort_index(inplace=False) # copies + return np.array(out), out.index + elif data_util._is_using_pandas(data, None): + out = data + out = out.reindex(index) # copies? + out = out.sort_index() + return out, out.index + else: + msg = 'data must be a Numpy array or a Pandas Series/DataFrame' + raise ValueError(msg) + + def transform_dataframe(self, dataframe, function, level=0, **kwargs): + """Apply function to each column, by group + Assumes that the dataframe already has a proper index""" + if dataframe.shape[0] != self.nobs: + raise Exception('dataframe does not have the same shape as index') + out = dataframe.groupby(level=level).apply(function, **kwargs) + if 1 in out.shape: + return np.ravel(out) + else: + return np.array(out) + + def transform_array(self, array, function, level=0, **kwargs): + """Apply function to each column, by group + """ + if array.shape[0] != self.nobs: + raise Exception('array does not have the same shape as index') + dataframe = pd.DataFrame(array, index=self.index) + return self.transform_dataframe(dataframe, function, level=level, + **kwargs) + + def transform_slices(self, array, function, level=0, **kwargs): + """Apply function to each group. Similar to transform_array but does + not coerce array to a DataFrame and back and only works on a 1D or 2D + numpy array. function is called function(group, group_idx, **kwargs). + """ + array = np.asarray(array) + if array.shape[0] != self.nobs: + raise Exception('array does not have the same shape as index') + # always reset because level is given. need to refactor this. + self.get_slices(level=level) + processed = [] + for s in self.slices: + if array.ndim == 2: + subset = array[s, :] + elif array.ndim == 1: + subset = array[s] + processed.append(function(subset, s, **kwargs)) + processed = np.array(processed) + return processed.reshape(-1, processed.shape[-1]) + + # TODO: this isn't general needs to be a PanelGrouping object + def dummies_time(self): + self.dummy_sparse(level=1) + return self._dummies + + def dummies_groups(self, level=0): + self.dummy_sparse(level=level) + return self._dummies + + def dummy_sparse(self, level=0): + """create a sparse indicator from a group array with integer labels + + Parameters + ---------- + groups: ndarray, int, 1d (nobs,) an array of group indicators for each + observation. Group levels are assumed to be defined as consecutive + integers, i.e. range(n_groups) where n_groups is the number of + group levels. A group level with no observations for it will still + produce a column of zeros. + + Returns + ------- + indi : ndarray, int8, 2d (nobs, n_groups) + an indicator array with one row per observation, that has 1 in the + column of the group level for that observation + + Examples + -------- + + >>> g = np.array([0, 0, 2, 1, 1, 2, 0]) + >>> indi = dummy_sparse(g) + >>> indi + <7x3 sparse matrix of type '' + with 7 stored elements in Compressed Sparse Row format> + >>> indi.todense() + matrix([[1, 0, 0], + [1, 0, 0], + [0, 0, 1], + [0, 1, 0], + [0, 1, 0], + [0, 0, 1], + [1, 0, 0]], dtype=int8) + + + current behavior with missing groups + >>> g = np.array([0, 0, 2, 0, 2, 0]) + >>> indi = dummy_sparse(g) + >>> indi.todense() + matrix([[1, 0, 0], + [1, 0, 0], + [0, 0, 1], + [1, 0, 0], + [0, 0, 1], + [1, 0, 0]], dtype=int8) + """ + indi = dummy_sparse(self.labels[level]) + self._dummies = indi diff --git a/statsmodels/tools/linalg.py b/statsmodels/tools/linalg.py new file mode 100644 index 0000000..ab46057 --- /dev/null +++ b/statsmodels/tools/linalg.py @@ -0,0 +1,176 @@ +""" +Linear Algebra solvers and other helpers +""" +from __future__ import print_function +from statsmodels.compat.python import range +import numpy as np +from scipy.linalg import pinv, pinv2, lstsq # noqa:F401 + + +def logdet_symm(m, check_symm=False): + """ + Return log(det(m)) asserting positive definiteness of m. + + Parameters + ---------- + m : array-like + 2d array that is positive-definite (and symmetric) + + Returns + ------- + logdet : float + The log-determinant of m. + """ + from scipy import linalg + if check_symm: + if not np.all(m == m.T): # would be nice to short-circuit check + raise ValueError("m is not symmetric.") + c, _ = linalg.cho_factor(m, lower=True) + return 2*np.sum(np.log(c.diagonal())) + + +def stationary_solve(r, b): + """ + Solve a linear system for a Toeplitz correlation matrix. + + A Toeplitz correlation matrix represents the covariance of a + stationary series with unit variance. + + Parameters + ---------- + r : array-like + A vector describing the coefficient matrix. r[0] is the first + band next to the diagonal, r[1] is the second band, etc. + b : array-like + The right-hand side for which we are solving, i.e. we solve + Tx = b and return b, where T is the Toeplitz coefficient matrix. + + Returns + ------- + The solution to the linear system. + """ + + db = r[0:1] + + dim = b.ndim + if b.ndim == 1: + b = b[:, None] + x = b[0:1, :] + + for j in range(1, len(b)): + rf = r[0:j][::-1] + a = (b[j, :] - np.dot(rf, x)) / (1 - np.dot(rf, db[::-1])) + z = x - np.outer(db[::-1], a) + x = np.concatenate((z, a[None, :]), axis=0) + + if j == len(b) - 1: + break + + rn = r[j] + a = (rn - np.dot(rf, db)) / (1 - np.dot(rf, db[::-1])) + z = db - a*db[::-1] + db = np.concatenate((z, np.r_[a])) + + if dim == 1: + x = x[:, 0] + + return x + + +def transf_constraints(constraints): + """use QR to get transformation matrix to impose constraint + + Parameters + ---------- + constraints : ndarray, 2-D + restriction matrix with one constraints in rows + + Returns + ------- + transf : ndarray + transformation matrix to reparameterize so that constraint is + imposed + + Notes + ----- + This is currently and internal helper function for GAM. + API not stable and will most likely change. + + The code for this function was taken from patsy spline handling, and + corresponds to the reparameterization used by Wood in R's mgcv package. + + See Also + -------- + statsmodels.base._constraints.TransformRestriction : class to impose + constraints by reparameterization used by `_fit_constrained`. + + """ + + from scipy import linalg + + m = constraints.shape[0] + q, _ = linalg.qr(np.transpose(constraints)) + transf = q[:, m:] + return transf + + +def matrix_sqrt(mat, inverse=False, full=False, nullspace=False, + threshold=1e-15): + """matrix square root for symmetric matrices + + Usage is for decomposing a covariance function S into a square root R + such that + + R' R = S if inverse is False, or + R' R = pinv(S) if inverse is True + + Parameters + ---------- + mat : array_like, 2-d square + symmetric square matrix for which square root or inverse square + root is computed. + There is no checking for whether the matrix is symmetric. + A warning is issued if some singular values are negative, i.e. + below the negative of the threshold. + inverse : bool + If False (default), then the matrix square root is returned. + If inverse is True, then the matrix square root of the inverse + matrix is returned. + full : bool + If full is False (default, then the square root has reduce number + of rows if the matrix is singular, i.e. has singular values below + the threshold. + nullspace: bool + If nullspace is true, then the matrix square root of the null space + of the matrix is returned. + threshold : float + Singular values below the threshold are dropped. + + Returns + ------- + msqrt : ndarray + matrix square root or square root of inverse matrix. + + """ + # see also scipy.linalg null_space + u, s, v = np.linalg.svd(mat) + if np.any(s < -threshold): + import warnings + warnings.warn('some singular values are negative') + + if not nullspace: + mask = s > threshold + s[s < threshold] = 0 + else: + mask = s < threshold + s[s > threshold] = 0 + + sqrt_s = np.sqrt(s[mask]) + if inverse: + sqrt_s = 1 / np.sqrt(s[mask]) + + if full: + b = np.dot(u[:, mask], np.dot(np.diag(sqrt_s), v[mask])) + else: + b = np.dot(np.diag(sqrt_s), v[mask]) + return b diff --git a/statsmodels/tools/numdiff.py b/statsmodels/tools/numdiff.py new file mode 100644 index 0000000..e913b57 --- /dev/null +++ b/statsmodels/tools/numdiff.py @@ -0,0 +1,354 @@ +"""numerical differentiation function, gradient, Jacobian, and Hessian + +Author : josef-pkt +License : BSD + +Notes +----- +These are simple forward differentiation, so that we have them available +without dependencies. + +* Jacobian should be faster than numdifftools because it doesn't use loop over + observations. +* numerical precision will vary and depend on the choice of stepsizes +""" + +# TODO: +# * some cleanup +# * check numerical accuracy (and bugs) with numdifftools and analytical +# derivatives +# - linear least squares case: (hess - 2*X'X) is 1e-8 or so +# - gradient and Hessian agree with numdifftools when evaluated away from +# minimum +# - forward gradient, Jacobian evaluated at minimum is inaccurate, centered +# (+/- epsilon) is ok +# * dot product of Jacobian is different from Hessian, either wrong example or +# a bug (unlikely), or a real difference +# +# +# What are the conditions that Jacobian dotproduct and Hessian are the same? +# +# See also: +# +# BHHH: Greene p481 17.4.6, MLE Jacobian = d loglike / d beta , where loglike +# is vector for each observation +# see also example 17.4 when J'J is very different from Hessian +# also does it hold only at the minimum, what's relationship to covariance +# of Jacobian matrix +# http://projects.scipy.org/scipy/ticket/1157 +# http://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm +# objective: sum((y-f(beta,x)**2), Jacobian = d f/d beta +# and not d objective/d beta as in MLE Greene +# similar: http://crsouza.blogspot.com/2009/11/neural-network-learning-by-levenberg_18.html#hessian +# +# in example: if J = d x*beta / d beta then J'J == X'X +# similar to http://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm +from __future__ import print_function +from statsmodels.compat.python import range +import numpy as np + +# NOTE: we only do double precision internally so far +EPS = np.MachAr().eps + +_hessian_docs = """ + Calculate Hessian with finite difference derivative approximation + + Parameters + ---------- + x : array_like + value at which function derivative is evaluated + f : function + function of one array f(x, `*args`, `**kwargs`) + epsilon : float or array-like, optional + Stepsize used, if None, then stepsize is automatically chosen + according to EPS**(1/%(scale)s)*x. + args : tuple + Arguments for function `f`. + kwargs : dict + Keyword arguments for function `f`. + %(extra_params)s + + Returns + ------- + hess : ndarray + array of partial second derivatives, Hessian + %(extra_returns)s + + Notes + ----- + Equation (%(equation_number)s) in Ridout. Computes the Hessian as:: + + %(equation)s + + where e[j] is a vector with element j == 1 and the rest are zero and + d[i] is epsilon[i]. + + References + ----------: + + Ridout, M.S. (2009) Statistical applications of the complex-step method + of numerical differentiation. The American Statistician, 63, 66-74 +""" + + +def _get_epsilon(x, s, epsilon, n): + if epsilon is None: + h = EPS**(1. / s) * np.maximum(np.abs(x), 0.1) + else: + if np.isscalar(epsilon): + h = np.empty(n) + h.fill(epsilon) + else: # pragma : no cover + h = np.asarray(epsilon) + if h.shape != x.shape: + raise ValueError("If h is not a scalar it must have the same" + " shape as x.") + return h + + +def approx_fprime(x, f, epsilon=None, args=(), kwargs={}, centered=False): + ''' + Gradient of function, or Jacobian if function f returns 1d array + + Parameters + ---------- + x : array + parameters at which the derivative is evaluated + f : function + `f(*((x,)+args), **kwargs)` returning either one value or 1d array + epsilon : float, optional + Stepsize, if None, optimal stepsize is used. This is EPS**(1/2)*x for + `centered` == False and EPS**(1/3)*x for `centered` == True. + args : tuple + Tuple of additional arguments for function `f`. + kwargs : dict + Dictionary of additional keyword arguments for function `f`. + centered : bool + Whether central difference should be returned. If not, does forward + differencing. + + Returns + ------- + grad : array + gradient or Jacobian + + Notes + ----- + If f returns a 1d array, it returns a Jacobian. If a 2d array is returned + by f (e.g., with a value for each observation), it returns a 3d array + with the Jacobian of each observation with shape xk x nobs x xk. I.e., + the Jacobian of the first observation would be [:, 0, :] + ''' + n = len(x) + # TODO: add scaled stepsize + f0 = f(*((x,)+args), **kwargs) + dim = np.atleast_1d(f0).shape # it could be a scalar + grad = np.zeros((n,) + dim, np.promote_types(float, x.dtype)) + ei = np.zeros((n,), float) + if not centered: + epsilon = _get_epsilon(x, 2, epsilon, n) + for k in range(n): + ei[k] = epsilon[k] + grad[k, :] = (f(*((x+ei,) + args), **kwargs) - f0)/epsilon[k] + ei[k] = 0.0 + else: + epsilon = _get_epsilon(x, 3, epsilon, n) / 2. + for k in range(len(x)): + ei[k] = epsilon[k] + grad[k, :] = (f(*((x+ei,)+args), **kwargs) - + f(*((x-ei,)+args), **kwargs))/(2 * epsilon[k]) + ei[k] = 0.0 + return grad.squeeze().T + + +def approx_fprime_cs(x, f, epsilon=None, args=(), kwargs={}): + ''' + Calculate gradient or Jacobian with complex step derivative approximation + + Parameters + ---------- + x : array + parameters at which the derivative is evaluated + f : function + `f(*((x,)+args), **kwargs)` returning either one value or 1d array + epsilon : float, optional + Stepsize, if None, optimal stepsize is used. Optimal step-size is + EPS*x. See note. + args : tuple + Tuple of additional arguments for function `f`. + kwargs : dict + Dictionary of additional keyword arguments for function `f`. + + Returns + ------- + partials : ndarray + array of partial derivatives, Gradient or Jacobian + + Notes + ----- + The complex-step derivative has truncation error O(epsilon**2), so + truncation error can be eliminated by choosing epsilon to be very small. + The complex-step derivative avoids the problem of round-off error with + small epsilon because there is no subtraction. + ''' + # From Guilherme P. de Freitas, numpy mailing list + # May 04 2010 thread "Improvement of performance" + # http://mail.scipy.org/pipermail/numpy-discussion/2010-May/050250.html + n = len(x) + epsilon = _get_epsilon(x, 1, epsilon, n) + increments = np.identity(n) * 1j * epsilon + # TODO: see if this can be vectorized, but usually dim is small + partials = [f(x+ih, *args, **kwargs).imag / epsilon[i] + for i, ih in enumerate(increments)] + return np.array(partials).T + + +def approx_hess_cs(x, f, epsilon=None, args=(), kwargs={}): + '''Calculate Hessian with complex-step derivative approximation + + Parameters + ---------- + x : array_like + value at which function derivative is evaluated + f : function + function of one array f(x) + epsilon : float + stepsize, if None, then stepsize is automatically chosen + + Returns + ------- + hess : ndarray + array of partial second derivatives, Hessian + + Notes + ----- + based on equation 10 in + M. S. RIDOUT: Statistical Applications of the Complex-step Method + of Numerical Differentiation, University of Kent, Canterbury, Kent, U.K. + + The stepsize is the same for the complex and the finite difference part. + ''' + # TODO: might want to consider lowering the step for pure derivatives + n = len(x) + h = _get_epsilon(x, 3, epsilon, n) + ee = np.diag(h) + hess = np.outer(h, h) + + n = len(x) + + for i in range(n): + for j in range(i, n): + hess[i, j] = (f(*((x + 1j*ee[i, :] + ee[j, :],) + args), **kwargs) + - f(*((x + 1j*ee[i, :] - ee[j, :],)+args), + **kwargs)).imag/2./hess[i, j] + hess[j, i] = hess[i, j] + + return hess + + +def approx_hess1(x, f, epsilon=None, args=(), kwargs={}, return_grad=False): + n = len(x) + h = _get_epsilon(x, 3, epsilon, n) + ee = np.diag(h) + + f0 = f(*((x,)+args), **kwargs) + # Compute forward step + g = np.zeros(n) + for i in range(n): + g[i] = f(*((x+ee[i, :],)+args), **kwargs) + + hess = np.outer(h, h) # this is now epsilon**2 + # Compute "double" forward step + for i in range(n): + for j in range(i, n): + hess[i, j] = (f(*((x + ee[i, :] + ee[j, :],) + args), **kwargs) - + g[i] - g[j] + f0)/hess[i, j] + hess[j, i] = hess[i, j] + if return_grad: + grad = (g - f0)/h + return hess, grad + else: + return hess + +approx_hess1.__doc__ = _hessian_docs % dict(scale="3", +extra_params="""return_grad : bool + Whether or not to also return the gradient +""", +extra_returns="""grad : nparray + Gradient if return_grad == True +""", +equation_number="7", +equation="""1/(d_j*d_k) * ((f(x + d[j]*e[j] + d[k]*e[k]) - f(x + d[j]*e[j]))) +""") + + +def approx_hess2(x, f, epsilon=None, args=(), kwargs={}, return_grad=False): + # + n = len(x) + # NOTE: ridout suggesting using eps**(1/4)*theta + h = _get_epsilon(x, 3, epsilon, n) + ee = np.diag(h) + f0 = f(*((x,)+args), **kwargs) + # Compute forward step + g = np.zeros(n) + gg = np.zeros(n) + for i in range(n): + g[i] = f(*((x+ee[i, :],)+args), **kwargs) + gg[i] = f(*((x-ee[i, :],)+args), **kwargs) + + hess = np.outer(h, h) # this is now epsilon**2 + # Compute "double" forward step + for i in range(n): + for j in range(i, n): + hess[i, j] = (f(*((x + ee[i, :] + ee[j, :],) + args), **kwargs) - + g[i] - g[j] + f0 + + f(*((x - ee[i, :] - ee[j, :],) + args), **kwargs) - + gg[i] - gg[j] + f0)/(2 * hess[i, j]) + hess[j, i] = hess[i, j] + if return_grad: + grad = (g - f0)/h + return hess, grad + else: + return hess + + +approx_hess2.__doc__ = _hessian_docs % dict(scale="3", +extra_params="""return_grad : bool + Whether or not to also return the gradient +""", +extra_returns="""grad : nparray + Gradient if return_grad == True +""", +equation_number="8", +equation = """1/(2*d_j*d_k) * ((f(x + d[j]*e[j] + d[k]*e[k]) - f(x + d[j]*e[j])) - + (f(x + d[k]*e[k]) - f(x)) + + (f(x - d[j]*e[j] - d[k]*e[k]) - f(x + d[j]*e[j])) - + (f(x - d[k]*e[k]) - f(x))) +""") + + +def approx_hess3(x, f, epsilon=None, args=(), kwargs={}): + n = len(x) + h = _get_epsilon(x, 4, epsilon, n) + ee = np.diag(h) + hess = np.outer(h,h) + + for i in range(n): + for j in range(i, n): + hess[i, j] = (f(*((x + ee[i, :] + ee[j, :],) + args), **kwargs) + - f(*((x + ee[i, :] - ee[j, :],) + args), **kwargs) + - (f(*((x - ee[i, :] + ee[j, :],) + args), **kwargs) + - f(*((x - ee[i, :] - ee[j, :],) + args), **kwargs)) + )/(4.*hess[i, j]) + hess[j, i] = hess[i, j] + return hess + +approx_hess3.__doc__ = _hessian_docs % dict(scale="4", extra_params="", + extra_returns="", + equation_number="9", +equation = """1/(4*d_j*d_k) * ((f(x + d[j]*e[j] + d[k]*e[k]) - f(x + d[j]*e[j] + - d[k]*e[k])) - + (f(x - d[j]*e[j] + d[k]*e[k]) - f(x - d[j]*e[j] + - d[k]*e[k]))""") +approx_hess = approx_hess3 +approx_hess.__doc__ += "\n This is an alias for approx_hess3" diff --git a/statsmodels/tools/parallel.py b/statsmodels/tools/parallel.py new file mode 100644 index 0000000..ac12dd4 --- /dev/null +++ b/statsmodels/tools/parallel.py @@ -0,0 +1,75 @@ +"""Parallel utility function using joblib + +copied from https://github.com/mne-tools/mne-python + +Author: Alexandre Gramfort +License: Simplified BSD + +changes for statsmodels (Josef Perktold) +- try import from joblib directly, (doesn't import all of sklearn) + +""" +from __future__ import print_function + +from statsmodels.tools.sm_exceptions import (ModuleUnavailableWarning, + module_unavailable_doc) + + +def parallel_func(func, n_jobs, verbose=5): + """Return parallel instance with delayed function + + Util function to use joblib only if available + + Parameters + ---------- + func: callable + A function + n_jobs: int + Number of jobs to run in parallel + verbose: int + Verbosity level + + Returns + ------- + parallel: instance of joblib.Parallel or list + The parallel object + my_func: callable + func if not parallel or delayed(func) + n_jobs: int + Number of jobs >= 0 + + Examples + -------- + >>> from math import sqrt + >>> from statsmodels.tools.parallel import parallel_func + >>> parallel, p_func, n_jobs = parallel_func(sqrt, n_jobs=-1, verbose=0) + >>> print(n_jobs) + >>> parallel(p_func(i**2) for i in range(10)) + """ + try: + try: + from joblib import Parallel, delayed + except ImportError: + from sklearn.externals.joblib import Parallel, delayed + + parallel = Parallel(n_jobs, verbose=verbose) + my_func = delayed(func) + + if n_jobs == -1: + try: + import multiprocessing + n_jobs = multiprocessing.cpu_count() + except (ImportError, NotImplementedError): + import warnings + warnings.warn(module_unavailable_doc.format('multiprocessing'), + ModuleUnavailableWarning) + n_jobs = 1 + + except ImportError: + import warnings + warnings.warn(module_unavailable_doc.format('joblib'), + ModuleUnavailableWarning) + n_jobs = 1 + my_func = func + parallel = list + return parallel, my_func, n_jobs diff --git a/statsmodels/tools/print_version.py b/statsmodels/tools/print_version.py new file mode 100755 index 0000000..082bf27 --- /dev/null +++ b/statsmodels/tools/print_version.py @@ -0,0 +1,283 @@ +#!/usr/bin/env python +from __future__ import print_function +from statsmodels.compat.python import reduce +import sys +from os.path import dirname + + +def safe_version(module, attr='__version__', *others): + if not isinstance(attr, list): + attr = [attr] + try: + return reduce(getattr, [module] + attr) + except AttributeError: + if others: + return safe_version(module, others[0], *others[1:]) + return "Cannot detect version" + + +def _show_versions_only(): + print("\nINSTALLED VERSIONS") + print("------------------") + print("Python: %d.%d.%d.%s.%s" % sys.version_info[:]) + try: + import os + (sysname, nodename, release, version, machine) = os.uname() + print("OS: %s %s %s %s" % (sysname, release, version, machine)) + print("byteorder: %s" % sys.byteorder) + print("LC_ALL: %s" % os.environ.get('LC_ALL', "None")) + print("LANG: %s" % os.environ.get('LANG', "None")) + except: + pass + try: + import statsmodels + has_sm = True + except ImportError: + has_sm = False + + print('\nStatsmodels\n===========\n') + if has_sm: + print('Installed: %s' % safe_version(statsmodels)) + else: + print('Not installed') + + print("\nRequired Dependencies\n=====================\n") + try: + import Cython + print("cython: %s" % safe_version(Cython)) + except ImportError: + print("cython: Not installed") + + try: + import numpy + print("numpy: %s" % safe_version(numpy, ['version', 'version'])) + except ImportError: + print("numpy: Not installed") + + try: + import scipy + print("scipy: %s" % safe_version(scipy, ['version', 'version'])) + except ImportError: + print("scipy: Not installed") + + try: + import pandas + print("pandas: %s" % safe_version(pandas)) + except ImportError: + print("pandas: Not installed") + + try: + import dateutil + print(" dateutil: %s" % safe_version(dateutil)) + except ImportError: + print(" dateutil: not installed") + + try: + import patsy + print("patsy: %s" % safe_version(patsy)) + except ImportError: + print("patsy: Not installed") + + print("\nOptional Dependencies\n=====================\n") + + try: + import matplotlib as mpl + print("matplotlib: %s" % safe_version(mpl)) + except ImportError: + print("matplotlib: Not installed") + + try: + from cvxopt import info + print("cvxopt: %s" % safe_version(info, 'version')) + except ImportError: + print("cvxopt: Not installed") + + try: + import joblib + print("joblib: %s " % (safe_version(joblib))) + except ImportError: + print("joblib: Not installed") + + print("\nDeveloper Tools\n================\n") + + try: + import IPython + print("IPython: %s" % safe_version(IPython)) + except ImportError: + print("IPython: Not installed") + try: + import jinja2 + print(" jinja2: %s" % safe_version(jinja2)) + except ImportError: + print(" jinja2: Not installed") + + try: + import sphinx + print("sphinx: %s" % safe_version(sphinx)) + except ImportError: + print("sphinx: Not installed") + + try: + import pygments + print(" pygments: %s" % safe_version(pygments)) + except ImportError: + print(" pygments: Not installed") + + try: + import pytest + print("pytest: %s (%s)" % (safe_version(pytest), dirname(pytest.__file__))) + except ImportError: + print("pytest: Not installed") + + try: + import virtualenv + print("virtualenv: %s" % safe_version(virtualenv)) + except ImportError: + print("virtualenv: Not installed") + + print("\n") + + +def show_versions(show_dirs=True): + if not show_dirs: + _show_versions_only() + print("\nINSTALLED VERSIONS") + print("------------------") + print("Python: %d.%d.%d.%s.%s" % sys.version_info[:]) + try: + import os + (sysname, nodename, release, version, machine) = os.uname() + print("OS: %s %s %s %s" % (sysname, release, version, machine)) + print("byteorder: %s" % sys.byteorder) + print("LC_ALL: %s" % os.environ.get('LC_ALL', "None")) + print("LANG: %s" % os.environ.get('LANG', "None")) + except: + pass + + try: + import statsmodels + has_sm = True + except ImportError: + has_sm = False + + print('\nStatsmodels\n===========\n') + if has_sm: + print('Installed: %s (%s)' % (safe_version(statsmodels), + dirname(statsmodels.__file__))) + else: + print('Not installed') + + print("\nRequired Dependencies\n=====================\n") + try: + import Cython + print("cython: %s (%s)" % (safe_version(Cython), + dirname(Cython.__file__))) + except ImportError: + print("cython: Not installed") + + try: + import numpy + print("numpy: %s (%s)" % (safe_version(numpy, ['version', 'version']), + dirname(numpy.__file__))) + except ImportError: + print("numpy: Not installed") + + try: + import scipy + print("scipy: %s (%s)" % (safe_version(scipy, ['version', 'version']), + dirname(scipy.__file__))) + except ImportError: + print("scipy: Not installed") + + try: + import pandas + print("pandas: %s (%s)" % (safe_version(pandas, ['version', 'version'], + '__version__'), + dirname(pandas.__file__))) + except ImportError: + print("pandas: Not installed") + + try: + import dateutil + print(" dateutil: %s (%s)" % (safe_version(dateutil), + dirname(dateutil.__file__))) + except ImportError: + print(" dateutil: not installed") + + try: + import patsy + print("patsy: %s (%s)" % (safe_version(patsy), + dirname(patsy.__file__))) + except ImportError: + print("patsy: Not installed") + + print("\nOptional Dependencies\n=====================\n") + + try: + import matplotlib as mpl + print("matplotlib: %s (%s)" % (safe_version(mpl), + dirname(mpl.__file__))) + print(" backend: %s " % mpl.rcParams['backend']) + except ImportError: + print("matplotlib: Not installed") + + try: + from cvxopt import info + print("cvxopt: %s (%s)" % (safe_version(info, 'version'), + dirname(info.__file__))) + except ImportError: + print("cvxopt: Not installed") + + try: + import joblib + print("joblib: %s (%s)" % (safe_version(joblib), + dirname(joblib.__file__))) + except ImportError: + print("joblib: Not installed") + + print("\nDeveloper Tools\n================\n") + + try: + import IPython + print("IPython: %s (%s)" % (safe_version(IPython), + dirname(IPython.__file__))) + except ImportError: + print("IPython: Not installed") + try: + import jinja2 + print(" jinja2: %s (%s)" % (safe_version(jinja2), + dirname(jinja2.__file__))) + except ImportError: + print(" jinja2: Not installed") + + try: + import sphinx + print("sphinx: %s (%s)" % (safe_version(sphinx), + dirname(sphinx.__file__))) + except ImportError: + print("sphinx: Not installed") + + try: + import pygments + print(" pygments: %s (%s)" % (safe_version(pygments), + dirname(pygments.__file__))) + except ImportError: + print(" pygments: Not installed") + + try: + import pytest + print("pytest: %s (%s)" % (safe_version(pytest), dirname(pytest.__file__))) + except ImportError: + print("pytest: Not installed") + + try: + import virtualenv + print("virtualenv: %s (%s)" % (safe_version(virtualenv), + dirname(virtualenv.__file__))) + except ImportError: + print("virtualenv: Not installed") + + print("\n") + +if __name__ == "__main__": + show_versions() diff --git a/statsmodels/tools/rootfinding.py b/statsmodels/tools/rootfinding.py new file mode 100644 index 0000000..c4ff2ae --- /dev/null +++ b/statsmodels/tools/rootfinding.py @@ -0,0 +1,220 @@ +# -*- coding: utf-8 -*- +""" + +Created on Mon Mar 18 15:48:23 2013 +Author: Josef Perktold + +TODO: + - test behavior if nans or infs are encountered during the evaluation. + now partially robust to nans, if increasing can be determined or is given. + - rewrite core loop to use for...except instead of while. + +""" +from __future__ import print_function +import numpy as np +from scipy import optimize + +DEBUG = False + + +# based on scipy.stats.distributions._ppf_single_call +def brentq_expanding(func, low=None, upp=None, args=(), xtol=1e-5, + start_low=None, start_upp=None, increasing=None, + max_it=100, maxiter_bq=100, factor=10, + full_output=False): + '''find the root of a function in one variable by expanding and brentq + + Assumes function ``func`` is monotonic. + + Parameters + ---------- + func : callable + function for which we find the root ``x`` such that ``func(x) = 0`` + low : float or None + lower bound for brentq + upp : float or None + upper bound for brentq + args : tuple + optional additional arguments for ``func`` + xtol : float + parameter x tolerance given to brentq + start_low : float (positive) or None + starting bound for expansion with increasing ``x``. It needs to be + positive. If None, then it is set to 1. + start_upp : float (negative) or None + starting bound for expansion with decreasing ``x``. It needs to be + negative. If None, then it is set to -1. + increasing : bool or None + If None, then the function is evaluated at the initial bounds to + determine wether the function is increasing or not. If increasing is + True (False), then it is assumed that the function is monotonically + increasing (decreasing). + max_it : int + maximum number of expansion steps. + maxiter_bq : int + maximum number of iterations of brentq. + factor : float + expansion factor for step of shifting the bounds interval, default is + 10. + full_output : bool, optional + If full_output is False, the root is returned. If full_output is True, + the return value is (x, r), where x is the root, and r is a + RootResults object. + + + Returns + ------- + x : float + root of the function, value at which ``func(x) = 0``. + info : RootResult (optional) + returned if ``full_output`` is True. + attributes: + + - start_bounds : starting bounds for expansion stage + - brentq_bounds : bounds used with ``brentq`` + - iterations_expand : number of iterations in expansion stage + - converged : True if brentq converged. + - flag : return status, 'converged' if brentq converged + - function_calls : number of function calls by ``brentq`` + - iterations : number of iterations in ``brentq`` + + + Notes + ----- + If increasing is None, then whether the function is monotonically + increasing or decreasing is inferred from evaluating the function at the + initial bounds. This can fail if there is numerically no variation in the + data in this range. In this case, using different starting bounds or + directly specifying ``increasing`` can make it possible to move the + expansion in the right direction. + + If + + ''' + # TODO: rtol is missing, what does it do? + left, right = low, upp # alias + + # start_upp first because of possible sl = -1 > upp + if upp is not None: + su = upp + elif start_upp is not None: + if start_upp < 0: + raise ValueError('start_upp needs to be positive') + su = start_upp + else: + su = 1. + + if low is not None: + sl = low + elif start_low is not None: + if start_low > 0: + raise ValueError('start_low needs to be negative') + sl = start_low + else: + sl = min(-1., su - 1.) + + # need sl < su + if upp is None: + su = max(su, sl + 1.) + + # increasing or not ? + if ((low is None) or (upp is None)) and increasing is None: + assert sl < su # check during developement + f_low = func(sl, *args) + f_upp = func(su, *args) + + # special case for F-distribution (symmetric around zero for effect + # size) + # chisquare also takes an indefinite time (didn't wait see if it + # returns) + if np.max(np.abs(f_upp - f_low)) < 1e-15 and sl == -1 and su == 1: + sl = 1e-8 + f_low = func(sl, *args) + increasing = (f_low < f_upp) + if DEBUG: + print('symm', sl, su, f_low, f_upp) + + # possibly func returns nan + delta = su - sl + if np.isnan(f_low): + # try just 3 points to find ``increasing`` + # don't change sl because brentq can handle one nan bound + for fraction in [0.25, 0.5, 0.75]: + sl_ = sl + fraction * delta + f_low = func(sl_, *args) + if not np.isnan(f_low): + break + else: + raise ValueError('could not determine whether function is ' + + 'increasing based on starting interval.' + + '\nspecify increasing or change starting ' + + 'bounds') + if np.isnan(f_upp): + for fraction in [0.25, 0.5, 0.75]: + su_ = su + fraction * delta + f_upp = func(su_, *args) + if not np.isnan(f_upp): + break + else: + raise ValueError('could not determine whether function is' + + 'increasing based on starting interval.' + + '\nspecify increasing or change starting ' + + 'bounds') + + increasing = (f_low < f_upp) + + if DEBUG: + print('low, upp', low, upp, func(sl, *args), func(su, *args)) + print('increasing', increasing) + print('sl, su', sl, su) + + if not increasing: + sl, su = su, sl + left, right = right, left + + n_it = 0 + if left is None and sl != 0: + left = sl + while func(left, *args) > 0: + # condition is also false if func returns nan + right = left + left *= factor + if n_it >= max_it: + break + n_it += 1 + # left is now such that func(left) < q + if right is None and su != 0: + right = su + while func(right, *args) < 0: + left = right + right *= factor + if n_it >= max_it: + break + n_it += 1 + # right is now such that func(right) > q + + if n_it >= max_it: + # print('Warning: max_it reached') + # TODO: use Warnings, Note: brentq might still work even with max_it + f_low = func(sl, *args) + f_upp = func(su, *args) + if np.isnan(f_low) and np.isnan(f_upp): + # can we still get here? + raise ValueError('max_it reached' + + '\nthe function values at boths bounds are NaN' + + '\nchange the starting bounds, set bounds' + + 'or increase max_it') + + res = optimize.brentq(func, left, right, args=args, + xtol=xtol, maxiter=maxiter_bq, + full_output=full_output) + if full_output: + val = res[0] + info = res[1] + info.iterations_expand = n_it + info.start_bounds = (sl, su) + info.brentq_bounds = (left, right) + info.increasing = increasing + return val, info + else: + return res diff --git a/statsmodels/tools/sequences.py b/statsmodels/tools/sequences.py new file mode 100644 index 0000000..8ff2db3 --- /dev/null +++ b/statsmodels/tools/sequences.py @@ -0,0 +1,218 @@ +"""Low discrepancy sequence tools.""" +from __future__ import division +import numpy as np + + +def discrepancy(sample, bounds=None): + """Discrepancy. + + Compute the centered discrepancy on a given sample. + It is a measure of the uniformity of the points in the parameter space. + The lower the value is, the better the coverage of the parameter space is. + + Parameters + ---------- + sample : array_like (n_samples, k_vars) + The sample to compute the discrepancy from. + bounds : tuple or array_like ([min, k_vars], [max, k_vars]) + Desired range of transformed data. The transformation apply the bounds + on the sample and not the theoretical space, unit cube. Thus min and + max values of the sample will coincide with the bounds. + + Returns + ------- + discrepancy : float + Centered discrepancy. + + References + ---------- + [1] Fang et al. "Design and modeling for computer experiments", + Computer Science and Data Analysis Series Science and Data Analysis + Series, 2006. + + """ + sample = np.asarray(sample) + n_sample, dim = sample.shape + + # Sample scaling from bounds to unit hypercube + if bounds is not None: + min_ = bounds.min(axis=0) + max_ = bounds.max(axis=0) + sample = (sample - min_) / (max_ - min_) + + abs_ = abs(sample - 0.5) + disc1 = np.sum(np.prod(1 + 0.5 * abs_ - 0.5 * abs_ ** 2, axis=1)) + + prod_arr = 1 + for i in range(dim): + s0 = sample[:, i] + prod_arr *= (1 + + 0.5 * abs(s0[:, None] - 0.5) + 0.5 * abs(s0 - 0.5) - + 0.5 * abs(s0[:, None] - s0)) + disc2 = prod_arr.sum() + + c2 = ((13.0 / 12.0) ** dim - 2.0 / n_sample * disc1 + + 1.0 / (n_sample ** 2) * disc2) + + return c2 + + +def primes_from_2_to(n): + """Prime numbers from 2 to *n*. + + Parameters + ---------- + n : int + Sup bound with ``n >= 6``. + + Returns + ------- + primes : list(int) + Primes in ``2 <= p < n``. + + References + ---------- + [1] `StackOverflow `_. + + """ + sieve = np.ones(n // 3 + (n % 6 == 2), dtype=np.bool) + for i in range(1, int(n ** 0.5) // 3 + 1): + if sieve[i]: + k = 3 * i + 1 | 1 + sieve[k * k // 3::2 * k] = False + sieve[k * (k - 2 * (i & 1) + 4) // 3::2 * k] = False + return np.r_[2, 3, ((3 * np.nonzero(sieve)[0][1:] + 1) | 1)] + + +def n_primes(n): + """List of the n-first prime numbers. + + Parameters + ---------- + n : int + Number of prime numbers wanted. + + Returns + ------- + primes : list(int) + List of primes. + + """ + primes = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, + 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, + 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, + 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, + 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, + 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, + 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, + 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, + 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, + 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, + 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, + 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, + 953, 967, 971, 977, 983, 991, 997][:n] + + if len(primes) < n: + big_number = 10 + while 'Not enought primes': + primes = primes_from_2_to(big_number)[:n] + if len(primes) == n: + break + big_number += 1000 + + return primes + + +def van_der_corput(n_sample, base=2, start_index=0): + """Van der Corput sequence. + + Pseudo-random number generator based on a b-adic expansion. + + Parameters + ---------- + n_sample : int + Number of element of the sequence. + base : int + Base of the sequence. + start_index : int + Index to start the sequence from. + + Returns + ------- + sequence : list (n_samples,) + Sequence of Van der Corput. + + """ + sequence = [] + for i in range(start_index, start_index + n_sample): + n_th_number, denom = 0., 1. + quotient = i + while quotient > 0: + quotient, remainder = divmod(quotient, base) + denom *= base + n_th_number += remainder / denom + sequence.append(n_th_number) + + return sequence + + +def halton(dim, n_sample, bounds=None, start_index=0): + """Halton sequence. + + Pseudo-random number generator that generalize the Van der Corput sequence + for multiple dimensions. Halton sequence use base-two Van der Corput + sequence for the first dimension, base-three for its second and base-n for + its n-dimension. + + Parameters + ---------- + dim : int + Dimension of the parameter space. + n_sample : int + Number of samples to generate in the parametr space. + bounds : tuple or array_like ([min, k_vars], [max, k_vars]) + Desired range of transformed data. The transformation apply the bounds + on the sample and not the theoretical space, unit cube. Thus min and + max values of the sample will coincide with the bounds. + start_index : int + Index to start the sequence from. + + Returns + ------- + sequence : array_like (n_samples, k_vars) + Sequence of Halton. + + References + ---------- + [1] Halton, "On the efficiency of certain quasi-random sequences of points + in evaluating multi-dimensional integrals", Numerische Mathematik, 1960. + + Examples + -------- + Generate samples from a low discrepancy sequence of Halton. + + >>> from statsmodels.tools import sequences + >>> sample = sequences.halton(dim=2, n_sample=5) + + Compute the quality of the sample using the discrepancy criterion. + + >>> uniformity = sequences.discrepancy(sample) + + If some wants to continue an existing design, extra points can be obtained. + + >>> sample_continued = sequences.halton(dim=2, n_sample=5, start_index=5) + + """ + base = n_primes(dim) + + # Generate a sample using a Van der Corput sequence per dimension. + sample = [van_der_corput(n_sample + 1, bdim, start_index) for bdim in base] + sample = np.array(sample).T[1:] + + # Sample scaling from unit hypercube to feature range + if bounds is not None: + min_ = bounds.min(axis=0) + max_ = bounds.max(axis=0) + sample = sample * (max_ - min_) + min_ + + return sample diff --git a/statsmodels/tools/sm_exceptions.py b/statsmodels/tools/sm_exceptions.py new file mode 100644 index 0000000..cac9dcd --- /dev/null +++ b/statsmodels/tools/sm_exceptions.py @@ -0,0 +1,132 @@ +""" +Contains custom errors and warnings. + +Errors should derive from Exception or another custom error. Custom errors are +only needed it standard errors, for example ValueError or TypeError, are not +accurate descriptions of the reason for the error. + +Warnings should derive from either an existing warning or another custom +warning, and should usually be accompanied by a sting using the format +warning_name_doc that services as a generic message to use when the warning is +raised. +""" + +import warnings + + +# Errors +class PerfectSeparationError(Exception): + pass + + +class MissingDataError(Exception): + pass + + +class X13NotFoundError(Exception): + pass + + +class X13Error(Exception): + pass + + +# Warning +class X13Warning(Warning): + pass + + +class IOWarning(RuntimeWarning): + pass + + +class ModuleUnavailableWarning(Warning): + pass + + +module_unavailable_doc = """ +The module {0} is not available. Cannot run in parallel. +""" + + +class ModelWarning(UserWarning): + pass + + +class ConvergenceWarning(ModelWarning): + pass + + +convergence_doc = """ +Failed to converge on a solution. +""" + + +class CacheWriteWarning(ModelWarning): + pass + + +class IterationLimitWarning(ModelWarning): + pass + + +iteration_limit_doc = """ +Maximum iteration reached. +""" + + +class InvalidTestWarning(ModelWarning): + pass + + +class NotImplementedWarning(ModelWarning): + pass + + +class OutputWarning(ModelWarning): + pass + + +class DomainWarning(ModelWarning): + pass + + +class ValueWarning(ModelWarning): + pass + + +class EstimationWarning(ModelWarning): + pass + + +class SingularMatrixWarning(ModelWarning): + pass + + +class HypothesisTestWarning(ModelWarning): + pass + + +class InterpolationWarning(ModelWarning): + pass + + +class PrecisionWarning(ModelWarning): + pass + + +class SpecificationWarning(ModelWarning): + pass + + +class HessianInversionWarning(ModelWarning): + pass + + +class CollinearityWarning(ModelWarning): + pass + + +warnings.simplefilter('always', category=ModelWarning) +warnings.simplefilter("always", (ConvergenceWarning, CacheWriteWarning, + IterationLimitWarning, InvalidTestWarning)) diff --git a/statsmodels/tools/testing.py b/statsmodels/tools/testing.py new file mode 100644 index 0000000..9b2729d --- /dev/null +++ b/statsmodels/tools/testing.py @@ -0,0 +1,67 @@ +"""assert functions from numpy and pandas testing + +""" +from statsmodels.compat.pandas import testing as pdt + +import numpy.testing as npt +import pandas + +from statsmodels.tools.tools import Bunch + +# Standard list for parsing tables +PARAM_LIST = ['params', 'bse', 'tvalues', 'pvalues'] + + +def bunch_factory(attribute, columns): + """ + Generates a special purpose Bunch class + + Parameters + ---------- + attribute: str + Attribute to access when splitting + columns: List[str] + List of names to use when splitting the columns of attribute + + Notes + ----- + After the class is initialized as a Bunch, the columne of attribute + are split so that Bunch has the keys in columns and + bunch[column[i]] = bunch[attribute][:, i] + """ + class FactoryBunch(Bunch): + def __init__(self, *args, **kwargs): + super(FactoryBunch, self).__init__(*args, **kwargs) + if not hasattr(self, attribute): + raise AttributeError('{0} is required and must be passed to ' + 'the constructor'.format(attribute)) + for i, att in enumerate(columns): + self[att] = getattr(self, attribute)[:, i] + + return FactoryBunch + + +ParamsTableTestBunch = bunch_factory('params_table', PARAM_LIST) + +MarginTableTestBunch = bunch_factory('margins_table', PARAM_LIST) + + +class Holder(object): + """ + Test-focused class to simplify accessing values by attribute + """ + def __init__(self, **kwds): + self.__dict__.update(kwds) + + +# adjusted functions + +def assert_equal(actual, desired, err_msg='', verbose=True, **kwds): + if isinstance(desired, pandas.Index): + pdt.assert_index_equal(actual, desired) + elif isinstance(desired, pandas.Series): + pdt.assert_series_equal(actual, desired, **kwds) + elif isinstance(desired, pandas.DataFrame): + pdt.assert_frame_equal(actual, desired, **kwds) + else: + npt.assert_equal(actual, desired, err_msg='', verbose=True) diff --git a/statsmodels/tools/tests/__init__.py b/statsmodels/tools/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tools/tests/test_catadd.py b/statsmodels/tools/tests/test_catadd.py new file mode 100644 index 0000000..6ccf27b --- /dev/null +++ b/statsmodels/tools/tests/test_catadd.py @@ -0,0 +1,19 @@ + +import numpy as np +from numpy.testing import assert_equal +from statsmodels.tools.catadd import add_indep + +from scipy import linalg + +def test_add_indep(): + x1 = np.array([0,0,0,0,0,1,1,1,2,2,2]) + x2 = np.array([0,0,0,0,0,1,1,1,1,1,1]) + x0 = np.ones(len(x2)) + x = np.column_stack([x0, x1[:,None]*np.arange(3), x2[:,None]*np.arange(2)]) + varnames = ['const'] + ['var1_%d' %i for i in np.arange(3)] \ + + ['var2_%d' %i for i in np.arange(2)] + xo, vo = add_indep(x, varnames) + + assert_equal(xo, np.column_stack((x0, x1, x2))) + assert_equal((linalg.svdvals(x) > 1e-12).sum(), 3) + assert_equal(vo, ['const', 'var1_1', 'var2_1']) diff --git a/statsmodels/tools/tests/test_data.py b/statsmodels/tools/tests/test_data.py new file mode 100644 index 0000000..ee0c4f4 --- /dev/null +++ b/statsmodels/tools/tests/test_data.py @@ -0,0 +1,50 @@ +import pandas +import numpy as np + +from statsmodels.tools import data + +def test_missing_data_pandas(): + """ + Fixes GH: #144 + """ + X = np.random.random((10,5)) + X[1,2] = np.nan + df = pandas.DataFrame(X) + vals, cnames, rnames = data.interpret_data(df) + np.testing.assert_equal(rnames.tolist(), [0,2,3,4,5,6,7,8,9]) + +def test_structarray(): + X = np.random.random((9,)).view([('var1', 'f8'), + ('var2', 'f8'), + ('var3', 'f8')]) + vals, cnames, rnames = data.interpret_data(X) + np.testing.assert_equal(cnames, X.dtype.names) + np.testing.assert_equal(vals, X.view((float,3))) + np.testing.assert_equal(rnames, None) + +def test_recarray(): + X = np.random.random((9,)).view([('var1', 'f8'), + ('var2', 'f8'), + ('var3', 'f8')]) + vals, cnames, rnames = data.interpret_data(X.view(np.recarray)) + np.testing.assert_equal(cnames, X.dtype.names) + np.testing.assert_equal(vals, X.view((float,3))) + np.testing.assert_equal(rnames, None) + + +def test_dataframe(): + X = np.random.random((10,5)) + df = pandas.DataFrame(X) + vals, cnames, rnames = data.interpret_data(df) + np.testing.assert_equal(vals, df.values) + np.testing.assert_equal(rnames.tolist(), df.index.tolist()) + np.testing.assert_equal(cnames, df.columns.tolist()) + +def test_patsy_577(): + X = np.random.random((10, 2)) + df = pandas.DataFrame(X, columns=["var1", "var2"]) + from patsy import dmatrix + endog = dmatrix("var1 - 1", df) + np.testing.assert_(data._is_using_patsy(endog, None)) + exog = dmatrix("var2 - 1", df) + np.testing.assert_(data._is_using_patsy(endog, exog)) diff --git a/statsmodels/tools/tests/test_decorators.py b/statsmodels/tools/tests/test_decorators.py new file mode 100644 index 0000000..02884f5 --- /dev/null +++ b/statsmodels/tools/tests/test_decorators.py @@ -0,0 +1,82 @@ +# -*- coding: utf-8 -*- + +import pytest +from numpy.testing import assert_equal + +from statsmodels.tools.decorators import ( + cache_readonly, CacheWriteWarning, deprecated_alias) + + +def test_cache_readonly(): + + class Example(object): + def __init__(self): + self._cache = {} + self.a = 0 + + @cache_readonly + def b(self): + return 1 + + @cache_readonly + def e(self): + return 4 + + @cache_readonly + def f(self): + return self.e + 1 + + ex = Example() + + # Try accessing/setting a readonly attribute + assert_equal(ex.__dict__, dict(a=0, _cache={})) + + b = ex.b + assert_equal(b, 1) + assert_equal(ex.__dict__, dict(a=0, _cache=dict(b=1,))) + # assert_equal(ex.__dict__, dict(a=0, b=1, _cache=dict(b=1))) + + with pytest.warns(CacheWriteWarning): + ex.b = -1 + + assert_equal(ex._cache, dict(b=1,)) + + +def dummy_factory(msg, remove_version, warning): + class Dummy(object): + y = deprecated_alias('y', 'x', + remove_version=remove_version, + msg=msg, + warning=warning) + + def __init__(self, y): + self.x = y + + return Dummy(1) + + +@pytest.mark.parametrize('warning', [FutureWarning, UserWarning]) +@pytest.mark.parametrize('remove_version', [None, '0.11']) +@pytest.mark.parametrize('msg', ['test message', None]) +def test_deprecated_alias(msg, remove_version, warning): + dummy_set = dummy_factory(msg, remove_version, warning) + with pytest.warns(warning) as w: + dummy_set.y = 2 + assert dummy_set.x == 2 + + assert warning.__class__ is w[0].category.__class__ + + dummy_get = dummy_factory(msg, remove_version, warning) + with pytest.warns(warning) as w: + x = dummy_get.y + assert x == 1 + + assert warning.__class__ is w[0].category.__class__ + message = str(w[0].message) + if not msg: + if remove_version: + assert 'will be removed' in message + else: + assert 'will be removed' not in message + else: + assert msg in message diff --git a/statsmodels/tools/tests/test_eval_measures.py b/statsmodels/tools/tests/test_eval_measures.py new file mode 100644 index 0000000..eb8dd99 --- /dev/null +++ b/statsmodels/tools/tests/test_eval_measures.py @@ -0,0 +1,104 @@ +# -*- coding: utf-8 -*- +""" +Created on Tue Nov 08 22:28:48 2011 + +@author: josef +""" +import pytest + +from statsmodels.compat.python import zip +import numpy as np +from numpy.testing import assert_equal, assert_almost_equal + +from statsmodels.tools.eval_measures import ( + maxabs, meanabs, medianabs, medianbias, mse, rmse, vare, + aic, aic_sigma, aicc, aicc_sigma, bias, bic, bic_sigma, + hqic, hqic_sigma, iqr) + + +def test_eval_measures(): + #mainly regression tests + + x = np.arange(20).reshape(4,5) + y = np.ones((4,5)) + assert_equal(iqr(x, y), 5*np.ones(5)) + assert_equal(iqr(x, y, axis=1), 2*np.ones(4)) + assert_equal(iqr(x, y, axis=None), 9) + + assert_equal(mse(x, y), + np.array([ 73.5, 87.5, 103.5, 121.5, 141.5])) + assert_equal(mse(x, y, axis=1), + np.array([ 3., 38., 123., 258.])) + + assert_almost_equal(rmse(x, y), + np.array([ 8.5732141 , 9.35414347, 10.17349497, + 11.02270384, 11.89537725])) + assert_almost_equal(rmse(x, y, axis=1), + np.array([ 1.73205081, 6.164414, + 11.09053651, 16.0623784 ])) + + assert_equal(maxabs(x, y), + np.array([ 14., 15., 16., 17., 18.])) + assert_equal(maxabs(x, y, axis=1), + np.array([ 3., 8., 13., 18.])) + + assert_equal(meanabs(x, y), + np.array([ 7. , 7.5, 8.5, 9.5, 10.5])) + assert_equal(meanabs(x, y, axis=1), + np.array([ 1.4, 6. , 11. , 16. ])) + assert_equal(meanabs(x, y, axis=0), + np.array([ 7. , 7.5, 8.5, 9.5, 10.5])) + + assert_equal(medianabs(x, y), + np.array([ 6.5, 7.5, 8.5, 9.5, 10.5])) + assert_equal(medianabs(x, y, axis=1), + np.array([ 1., 6., 11., 16.])) + + assert_equal(bias(x, y), + np.array([ 6.5, 7.5, 8.5, 9.5, 10.5])) + assert_equal(bias(x, y, axis=1), + np.array([ 1., 6., 11., 16.])) + + assert_equal(medianbias(x, y), + np.array([ 6.5, 7.5, 8.5, 9.5, 10.5])) + assert_equal(medianbias(x, y, axis=1), + np.array([ 1., 6., 11., 16.])) + + assert_equal(vare(x, y), + np.array([ 31.25, 31.25, 31.25, 31.25, 31.25])) + assert_equal(vare(x, y, axis=1), + np.array([ 2., 2., 2., 2.])) + + +ics = [aic, aicc, bic, hqic] +ics_sig = [aic_sigma, aicc_sigma, bic_sigma, hqic_sigma] + + +@pytest.mark.parametrize('ic,ic_sig', zip(ics, ics_sig)) +def test_ic_equivalence(ic, ic_sig): + # consistency check + + assert ic(np.array(2), 10, 2).dtype == np.float + assert ic_sig(np.array(2), 10, 2).dtype == np.float + + assert_almost_equal(ic(-10./2.*np.log(2.), 10, 2)/10, + ic_sig(2, 10, 2), + decimal=14) + + assert_almost_equal(ic_sig(np.log(2.), 10, 2, islog=True), + ic_sig(2, 10, 2), + decimal=14) + + +def test_ic(): + # test information criteria + + # examples penalty directly from formula + n = 10 + k = 2 + assert_almost_equal(aic(0, 10, 2), 2*k, decimal=14) + # next see Wikipedia + assert_almost_equal(aicc(0, 10, 2), + aic(0, n, k) + 2*k*(k+1.)/(n-k-1.), decimal=14) + assert_almost_equal(bic(0, 10, 2), np.log(n)*k, decimal=14) + assert_almost_equal(hqic(0, 10, 2), 2*np.log(np.log(n))*k, decimal=14) diff --git a/statsmodels/tools/tests/test_grouputils.py b/statsmodels/tools/tests/test_grouputils.py new file mode 100644 index 0000000..ece54fc --- /dev/null +++ b/statsmodels/tools/tests/test_grouputils.py @@ -0,0 +1,337 @@ +from statsmodels.compat.python import PY37 + +import numpy as np +from numpy.testing import assert_equal +import pandas as pd +from pandas.util import testing as tm +from scipy import sparse + +from statsmodels.tools.grouputils import ( + dummy_sparse, + Grouping, Group, combine_indices, group_sums) +from statsmodels.tools.tools import categorical +from statsmodels.datasets import grunfeld, anes96 +import pytest + + +class CheckGrouping(object): + + @pytest.mark.smoke + def test_reindex(self): + self.grouping.reindex(self.grouping.index) + + def test_count_categories(self): + self.grouping.count_categories(level=0) + np.testing.assert_equal(self.grouping.counts, self.expected_counts) + + def test_sort(self): + # data frame + sorted_data, index = self.grouping.sort(self.data) + expected_sorted_data = self.data.sort_index() + + tm.assert_frame_equal(sorted_data, expected_sorted_data) + np.testing.assert_(isinstance(sorted_data, pd.DataFrame)) + np.testing.assert_(not index.equals(self.grouping.index)) + + # make sure it copied + if hasattr(sorted_data, 'equals'): # newer pandas + np.testing.assert_(not sorted_data.equals(self.data)) + + # 2d arrays + sorted_data, index = self.grouping.sort(self.data.values) + np.testing.assert_array_equal(sorted_data, + expected_sorted_data.values) + np.testing.assert_(isinstance(sorted_data, np.ndarray)) + + # 1d series + series = self.data[self.data.columns[0]] + sorted_data, index = self.grouping.sort(series) + + expected_sorted_data = series.sort_index() + tm.assert_series_equal(sorted_data, expected_sorted_data) + np.testing.assert_(isinstance(sorted_data, pd.Series)) + if hasattr(sorted_data, 'equals'): + np.testing.assert_(not sorted_data.equals(series)) + + # 1d array + array = series.values + sorted_data, index = self.grouping.sort(array) + + expected_sorted_data = series.sort_index().values + np.testing.assert_array_equal(sorted_data, expected_sorted_data) + np.testing.assert_(isinstance(sorted_data, np.ndarray)) + + @pytest.mark.xfail(condition=PY37, + reason='Unexplained conversion to complex on Python 3.7') + def test_transform_dataframe(self): + names = self.data.index.names + transformed_dataframe = self.grouping.transform_dataframe( + self.data, + lambda x : x.mean(), + level=0) + grouped = self.data.reset_index().groupby(names[0]) + expected = grouped.apply(lambda x : x.mean())[self.data.columns] + np.testing.assert_array_equal(transformed_dataframe, + expected.values) + + if len(names) > 1: + transformed_dataframe = self.grouping.transform_dataframe( + self.data, lambda x : x.mean(), + level=1) + grouped = self.data.reset_index().groupby(names[1]) + expected = grouped.apply(lambda x: x.mean())[self.data.columns] + np.testing.assert_array_equal(transformed_dataframe, + expected.values) + + @pytest.mark.xfail(condition=PY37, + reason='Unexplained conversion to complex on Python 3.7') + def test_transform_array(self): + names = self.data.index.names + transformed_array = self.grouping.transform_array( + self.data.values, + lambda x : x.mean(), + level=0) + grouped = self.data.reset_index().groupby(names[0]) + expected = grouped.apply(lambda x: x.mean())[self.data.columns] + np.testing.assert_array_equal(transformed_array, + expected.values) + + if len(names) > 1: + transformed_array = self.grouping.transform_array( + self.data.values, + lambda x : x.mean(), level=1) + grouped = self.data.reset_index().groupby(names[1]) + expected = grouped.apply(lambda x: x.mean())[self.data.columns] + np.testing.assert_array_equal(transformed_array, + expected.values) + + + def test_transform_slices(self): + names = self.data.index.names + transformed_slices = self.grouping.transform_slices( + self.data.values, + lambda x, idx : x.mean(0), + level=0) + expected = self.data.reset_index().groupby(names[0]).mean()[ + self.data.columns] + np.testing.assert_allclose(transformed_slices, expected.values, + rtol=1e-12, atol=1e-25) + + if len(names) > 1: + transformed_slices = self.grouping.transform_slices( + self.data.values, + lambda x, idx : x.mean(0), + level=1) + expected = self.data.reset_index().groupby(names[1] + ).mean()[ + self.data.columns] + np.testing.assert_allclose(transformed_slices, expected.values, + rtol=1e-12, atol=1e-25) + + @pytest.mark.smoke + def test_dummies_groups(self): + # calls dummy_sparse under the hood + self.grouping.dummies_groups() + + if len(self.grouping.group_names) > 1: + self.grouping.dummies_groups(level=1) + + def test_dummy_sparse(self): + data = self.data + self.grouping.dummy_sparse() + expected = categorical(data.index.get_level_values(0).values, + drop=True) + np.testing.assert_equal(self.grouping._dummies.toarray(), expected) + + if len(self.grouping.group_names) > 1: + self.grouping.dummy_sparse(level=1) + expected = categorical(data.index.get_level_values(1).values, + drop=True) + np.testing.assert_equal(self.grouping._dummies.toarray(), + expected) + + +class TestMultiIndexGrouping(CheckGrouping): + @classmethod + def setup_class(cls): + grun_data = grunfeld.load_pandas().data + multi_index_data = grun_data.set_index(['firm', 'year']) + multi_index_panel = multi_index_data.index + cls.grouping = Grouping(multi_index_panel) + cls.data = multi_index_data + + cls.expected_counts = [20] * 11 + + +class TestIndexGrouping(CheckGrouping): + @classmethod + def setup_class(cls): + grun_data = grunfeld.load_pandas().data + index_data = grun_data.set_index(['firm']) + index_group = index_data.index + cls.grouping = Grouping(index_group) + cls.data = index_data + + cls.expected_counts = [20] * 11 + + +def test_init_api(): + # make a multi-index panel + grun_data = grunfeld.load_pandas().data + multi_index_panel = grun_data.set_index(['firm', 'year']).index + grouping = Grouping(multi_index_panel) + # check group_names + np.testing.assert_array_equal(grouping.group_names, ['firm', 'year']) + # check shape + np.testing.assert_array_equal(grouping.index_shape, (11, 20)) + # check index_int + np.testing.assert_array_equal(grouping.labels, + [[ 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, + 5, 5, 5, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, + 8, 8, 8, 8, 8, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, + 7, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, + 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, + 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]]) + grouping = Grouping(multi_index_panel, names=['firms', 'year']) + np.testing.assert_array_equal(grouping.group_names, ['firms', 'year']) + + # make a multi-index grouping + anes_data = anes96.load_pandas().data + multi_index_groups = anes_data.set_index(['educ', 'income', + 'TVnews']).index + grouping = Grouping(multi_index_groups) + np.testing.assert_array_equal(grouping.group_names, + ['educ', 'income', 'TVnews']) + np.testing.assert_array_equal(grouping.index_shape, (7, 24, 8)) + + # make a list multi-index panel + list_panel = multi_index_panel.tolist() + grouping = Grouping(list_panel, names=['firms', 'year']) + np.testing.assert_array_equal(grouping.group_names, ['firms', 'year']) + np.testing.assert_array_equal(grouping.index_shape, (11, 20)) + + # make a list multi-index grouping + list_groups = multi_index_groups.tolist() + grouping = Grouping(list_groups, names=['educ', 'income', 'TVnews']) + np.testing.assert_array_equal(grouping.group_names, + ['educ', 'income', 'TVnews']) + np.testing.assert_array_equal(grouping.index_shape, (7, 24, 8)) + + + # single-variable index grouping + index_group = multi_index_panel.get_level_values(0) + grouping = Grouping(index_group) + # the original multi_index_panel had it's name changed inplace above + np.testing.assert_array_equal(grouping.group_names, ['firms']) + np.testing.assert_array_equal(grouping.index_shape, (220,)) + + # single variable list grouping + list_group = multi_index_panel.get_level_values(0).tolist() + grouping = Grouping(list_group) + np.testing.assert_array_equal(grouping.group_names, ["group0"]) + np.testing.assert_array_equal(grouping.index_shape, 11*20) + + # test generic group names + grouping = Grouping(list_groups) + np.testing.assert_array_equal(grouping.group_names, + ['group0', 'group1', 'group2']) + + +def test_combine_indices(): + # Moved from grouputils __main__ section + np.random.seed(985367) + groups = np.random.randint(0, 2, size=(10, 2)) + uv, ux, u, label = combine_indices(groups, return_labels=True) + uv, ux, u, label = combine_indices(groups, prefix='g1,g2=', sep=',', + return_labels=True) + + group0 = np.array(['sector0', 'sector1'])[groups[:, 0]] + group1 = np.array(['region0', 'region1'])[groups[:, 1]] + uv, ux, u, label = combine_indices((group0, group1), + prefix='sector,region=', + sep=',', + return_labels=True) + uv, ux, u, label = combine_indices((group0, group1), prefix='', sep='.', + return_labels=True) + group_joint = np.array(label)[uv] + group_joint_expected = np.array(['sector1.region0', 'sector0.region1', + 'sector0.region0', 'sector0.region1', + 'sector1.region1', 'sector0.region0', + 'sector1.region0', 'sector1.region0', + 'sector0.region1', 'sector0.region0'], + dtype='|U15') + assert_equal(group_joint, group_joint_expected) + + +@pytest.mark.smoke +def test_group_sums(): + # Moved from grouputils __main__ section + g = np.array([0, 0, 1, 2, 1, 1, 2, 0]) + + group_sums(np.arange(len(g)*3*2).reshape(len(g), 3, 2), g, + use_bincount=False).T + group_sums(np.arange(len(g)*3*2).reshape(len(g), 3, 2)[:, :, 0], g) + group_sums(np.arange(len(g)*3*2).reshape(len(g), 3, 2)[:, :, 1], g) + + +@pytest.mark.smoke +def test_group_class(): + # Moved from grouputils __main__ section + g = np.array([0, 0, 1, 2, 1, 1, 2, 0]) + + x = np.arange(len(g)*3).reshape(len(g), 3, order='F') + mygroup = Group(g) + + mygroup.group_int + mygroup.group_sums(x) + mygroup.labels() + + +def test_dummy_sparse(): + # See GH#5687 + + g = np.array([0, 0, 2, 1, 1, 2, 0]) + indi = dummy_sparse(g) + assert isinstance(indi, sparse.csr.csr_matrix) + result = indi.todense() + expected = np.matrix([[1, 0, 0], + [1, 0, 0], + [0, 0, 1], + [0, 1, 0], + [0, 1, 0], + [0, 0, 1], + [1, 0, 0]], dtype=np.int8) + assert_equal(result, expected) + + + # current behavior with missing groups + g = np.array([0, 0, 2, 0, 2, 0]) + indi = dummy_sparse(g) + result = indi.todense() + expected = np.matrix([[1, 0, 0], + [1, 0, 0], + [0, 0, 1], + [1, 0, 0], + [0, 0, 1], + [1, 0, 0]], dtype=np.int8) + assert_equal(result, expected) diff --git a/statsmodels/tools/tests/test_linalg.py b/statsmodels/tools/tests/test_linalg.py new file mode 100644 index 0000000..7f572c7 --- /dev/null +++ b/statsmodels/tools/tests/test_linalg.py @@ -0,0 +1,24 @@ +from statsmodels.tools import linalg +import numpy as np +from numpy.testing import assert_allclose +from scipy.linalg import toeplitz + + +def test_stationary_solve_1d(): + b = np.random.uniform(size=10) + r = np.random.uniform(size=9) + t = np.concatenate((np.r_[1], r)) + tmat = toeplitz(t) + soln = np.linalg.solve(tmat, b) + soln1 = linalg.stationary_solve(r, b) + assert_allclose(soln, soln1, rtol=1e-5, atol=1e-5) + + +def test_stationary_solve_2d(): + b = np.random.uniform(size=(10, 2)) + r = np.random.uniform(size=9) + t = np.concatenate((np.r_[1], r)) + tmat = toeplitz(t) + soln = np.linalg.solve(tmat, b) + soln1 = linalg.stationary_solve(r, b) + assert_allclose(soln, soln1, rtol=1e-5, atol=1e-5) diff --git a/statsmodels/tools/tests/test_numdiff.py b/statsmodels/tools/tests/test_numdiff.py new file mode 100644 index 0000000..e39ed63 --- /dev/null +++ b/statsmodels/tools/tests/test_numdiff.py @@ -0,0 +1,373 @@ +'''Testing numerical differentiation + +Still some problems, with API (args tuple versus *args) +finite difference Hessian has some problems that I didn't look at yet + +Should Hessian also work per observation, if fun returns 2d + +''' +from __future__ import print_function +import numpy as np +from numpy.testing import assert_almost_equal, assert_allclose +import statsmodels.api as sm +from statsmodels.tools import numdiff +from statsmodels.tools.numdiff import (approx_fprime, approx_fprime_cs, + approx_hess_cs) + +DEC3 = 3 +DEC4 = 4 +DEC5 = 5 +DEC6 = 6 +DEC8 = 8 +DEC13 = 13 +DEC14 = 14 + +def maxabs(x,y): + return np.abs(x-y).max() + +def fun(beta, x): + return np.dot(x, beta).sum(0) + +def fun1(beta, y, x): + #print(beta.shape, x.shape) + xb = np.dot(x, beta) + return (y-xb)**2 #(xb-xb.mean(0))**2 + +def fun2(beta, y, x): + #print(beta.shape, x.shape) + return fun1(beta, y, x).sum(0) + + +#ravel() added because of MNLogit 2d params +class CheckGradLoglikeMixin(object): + def test_score(self): + for test_params in self.params: + sc = self.mod.score(test_params) + scfd = numdiff.approx_fprime(test_params.ravel(), + self.mod.loglike) + assert_almost_equal(sc, scfd, decimal=1) + + sccs = numdiff.approx_fprime_cs(test_params.ravel(), + self.mod.loglike) + assert_almost_equal(sc, sccs, decimal=11) + + def test_hess(self): + for test_params in self.params: + he = self.mod.hessian(test_params) + hefd = numdiff.approx_fprime_cs(test_params, self.mod.score) + assert_almost_equal(he, hefd, decimal=DEC8) + + #NOTE: notice the accuracy below + assert_almost_equal(he, hefd, decimal=7) + hefd = numdiff.approx_fprime(test_params, self.mod.score, + centered=True) + assert_allclose(he, hefd, rtol=1e-9) + hefd = numdiff.approx_fprime(test_params, self.mod.score, + centered=False) + assert_almost_equal(he, hefd, decimal=4) + + hescs = numdiff.approx_fprime_cs(test_params.ravel(), + self.mod.score) + assert_allclose(he, hescs, rtol=1e-13) + + hecs = numdiff.approx_hess_cs(test_params.ravel(), + self.mod.loglike) + assert_allclose(he, hecs, rtol=1e-9) + + #NOTE: Look at the lack of precision - default epsilon not always + #best + grad = self.mod.score(test_params) + hecs, gradcs = numdiff.approx_hess1(test_params, self.mod.loglike, + 1e-6, return_grad=True) + assert_almost_equal(he, hecs, decimal=1) + assert_almost_equal(grad, gradcs, decimal=1) + hecs, gradcs = numdiff.approx_hess2(test_params, self.mod.loglike, + 1e-4, return_grad=True) + assert_almost_equal(he, hecs, decimal=3) + assert_almost_equal(grad, gradcs, decimal=1) + hecs = numdiff.approx_hess3(test_params, self.mod.loglike, 1e-5) + assert_almost_equal(he, hecs, decimal=4) + + +class TestGradMNLogit(CheckGradLoglikeMixin): + @classmethod + def setup_class(cls): + #from .results.results_discrete import Anes + data = sm.datasets.anes96.load(as_pandas=False) + exog = data.exog + exog = sm.add_constant(exog, prepend=False) + cls.mod = sm.MNLogit(data.endog, exog) + + #def loglikeflat(cls, params): + #reshapes flattened params + # return cls.loglike(params.reshape(6,6)) + #cls.mod.loglike = loglikeflat #need instance method + #cls.params = [np.ones((6,6)).ravel()] + res = cls.mod.fit(disp=0) + cls.params = [res.params.ravel('F')] + + def test_hess(self): + #NOTE: I had to overwrite this to lessen the tolerance + for test_params in self.params: + he = self.mod.hessian(test_params) + hefd = numdiff.approx_fprime_cs(test_params, self.mod.score) + assert_almost_equal(he, hefd, decimal=DEC8) + + #NOTE: notice the accuracy below and the epsilon changes + # this doesn't work well for score -> hessian with non-cs step + # it's a little better around the optimum + assert_almost_equal(he, hefd, decimal=7) + hefd = numdiff.approx_fprime(test_params, self.mod.score, + centered=True) + assert_almost_equal(he, hefd, decimal=4) + hefd = numdiff.approx_fprime(test_params, self.mod.score, 1e-9, + centered=False) + assert_almost_equal(he, hefd, decimal=2) + + hescs = numdiff.approx_fprime_cs(test_params, self.mod.score) + assert_almost_equal(he, hescs, decimal=DEC8) + + hecs = numdiff.approx_hess_cs(test_params, self.mod.loglike) + assert_almost_equal(he, hecs, decimal=5) + #NOTE: these just don't work well + #hecs = numdiff.approx_hess1(test_params, self.mod.loglike, 1e-3) + #assert_almost_equal(he, hecs, decimal=1) + #hecs = numdiff.approx_hess2(test_params, self.mod.loglike, 1e-4) + #assert_almost_equal(he, hecs, decimal=0) + hecs = numdiff.approx_hess3(test_params, self.mod.loglike, 1e-4) + assert_almost_equal(he, hecs, decimal=0) + +class TestGradLogit(CheckGradLoglikeMixin): + @classmethod + def setup_class(cls): + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + #mod = sm.Probit(data.endog, data.exog) + cls.mod = sm.Logit(data.endog, data.exog) + #res = mod.fit(method="newton") + cls.params = [np.array([1,0.25,1.4,-7])] + ##loglike = mod.loglike + ##score = mod.score + ##hess = mod.hessian + + +class CheckDerivativeMixin(object): + @classmethod + def setup_class(cls): + nobs = 200 + #x = np.arange(nobs*3).reshape(nobs,-1) + np.random.seed(187678) + x = np.random.randn(nobs,3) + + xk = np.array([1,2,3]) + xk = np.array([1.,1.,1.]) + #xk = np.zeros(3) + beta = xk + y = np.dot(x, beta) + 0.1*np.random.randn(nobs) + xkols = np.dot(np.linalg.pinv(x),y) + + cls.x = x + cls.y = y + cls.params = [np.array([1.,1.,1.]), xkols] + cls.init() + + @classmethod + def init(cls): + pass + + def test_grad_fun1_fd(self): + for test_params in self.params: + #gtrue = self.x.sum(0) + gtrue = self.gradtrue(test_params) + fun = self.fun() + epsilon = 1e-6 + gfd = numdiff.approx_fprime(test_params, fun, epsilon=epsilon, + args=self.args) + gfd += numdiff.approx_fprime(test_params, fun, epsilon=-epsilon, + args=self.args) + gfd /= 2. + assert_almost_equal(gtrue, gfd, decimal=DEC6) + + def test_grad_fun1_fdc(self): + for test_params in self.params: + #gtrue = self.x.sum(0) + gtrue = self.gradtrue(test_params) + fun = self.fun() + + # default epsilon of 1e-6 is not precise enough here + gfd = numdiff.approx_fprime(test_params, fun, epsilon=1e-8, + args=self.args, centered=True) + assert_almost_equal(gtrue, gfd, decimal=DEC5) + + def test_grad_fun1_cs(self): + for test_params in self.params: + #gtrue = self.x.sum(0) + gtrue = self.gradtrue(test_params) + fun = self.fun() + + gcs = numdiff.approx_fprime_cs(test_params, fun, args=self.args) + assert_almost_equal(gtrue, gcs, decimal=DEC13) + + def test_hess_fun1_fd(self): + for test_params in self.params: + #hetrue = 0 + hetrue = self.hesstrue(test_params) + if hetrue is not None: #Hessian doesn't work for 2d return of fun + fun = self.fun() + #default works, epsilon 1e-6 or 1e-8 is not precise enough + hefd = numdiff.approx_hess1(test_params, fun, #epsilon=1e-8, + # TODO: should be kwds + args=self.args) + assert_almost_equal(hetrue, hefd, decimal=DEC3) + #TODO: I reduced precision to DEC3 from DEC4 because of + # TestDerivativeFun + hefd = numdiff.approx_hess2(test_params, fun, #epsilon=1e-8, + # TODO: should be kwds + args=self.args) + assert_almost_equal(hetrue, hefd, decimal=DEC3) + hefd = numdiff.approx_hess3(test_params, fun, #epsilon=1e-8, + # TODO: should be kwds + args=self.args) + assert_almost_equal(hetrue, hefd, decimal=DEC3) + + def test_hess_fun1_cs(self): + for test_params in self.params: + #hetrue = 0 + hetrue = self.hesstrue(test_params) + if hetrue is not None: #Hessian doesn't work for 2d return of fun + fun = self.fun() + hecs = numdiff.approx_hess_cs(test_params, fun, args=self.args) + assert_almost_equal(hetrue, hecs, decimal=DEC6) + + +class TestDerivativeFun(CheckDerivativeMixin): + @classmethod + def setup_class(cls): + super(TestDerivativeFun,cls).setup_class() + xkols = np.dot(np.linalg.pinv(cls.x), cls.y) + cls.params = [np.array([1.,1.,1.]), xkols] + cls.args = (cls.x,) + + def fun(self): + return fun + def gradtrue(self, params): + return self.x.sum(0) + def hesstrue(self, params): + return np.zeros((3,3)) #make it (3,3), because test fails with scalar 0 + #why is precision only DEC3 + +class TestDerivativeFun2(CheckDerivativeMixin): + @classmethod + def setup_class(cls): + super(TestDerivativeFun2,cls).setup_class() + xkols = np.dot(np.linalg.pinv(cls.x), cls.y) + cls.params = [np.array([1.,1.,1.]), xkols] + cls.args = (cls.y, cls.x) + + def fun(self): + return fun2 + + def gradtrue(self, params): + y, x = self.y, self.x + return (-x*2*(y-np.dot(x, params))[:,None]).sum(0) + #2*(y-np.dot(x, params)).sum(0) + + def hesstrue(self, params): + x = self.x + return 2*np.dot(x.T, x) + +class TestDerivativeFun1(CheckDerivativeMixin): + @classmethod + def setup_class(cls): + super(TestDerivativeFun1, cls).setup_class() + xkols = np.dot(np.linalg.pinv(cls.x), cls.y) + cls.params = [np.array([1.,1.,1.]), xkols] + cls.args = (cls.y, cls.x) + + def fun(self): + return fun1 + def gradtrue(self, params): + y, x = self.y, self.x + return (-x*2*(y-np.dot(x, params))[:,None]) + def hesstrue(self, params): + return None + y, x = self.y, self.x + return (-x*2*(y-np.dot(x, params))[:,None]) #TODO: check shape + + +def test_dtypes(): + def f(x): + return 2*x + + desired = np.array([[2, 0], + [0, 2]]) + assert_allclose(approx_fprime(np.array([1, 2]), f), desired) + assert_allclose(approx_fprime(np.array([1., 2.]), f), desired) + assert_allclose(approx_fprime(np.array([1.+0j, 2.+0j]), f), desired) + + +if __name__ == '__main__': + + epsilon = 1e-6 + nobs = 200 + x = np.arange(nobs*3).reshape(nobs,-1) + x = np.random.randn(nobs,3) + + xk = np.array([1,2,3]) + xk = np.array([1.,1.,1.]) + #xk = np.zeros(3) + beta = xk + y = np.dot(x, beta) + 0.1*np.random.randn(nobs) + xkols = np.dot(np.linalg.pinv(x),y) + + print(approx_fprime((1,2,3),fun,epsilon,x)) + gradtrue = x.sum(0) + print(x.sum(0)) + gradcs = approx_fprime_cs((1,2,3), fun, (x,), h=1.0e-20) + print(gradcs, maxabs(gradcs, gradtrue)) + print(approx_hess_cs((1,2,3), fun, (x,), h=1.0e-20)) #this is correctly zero + + print(approx_hess_cs((1,2,3), fun2, (y,x), h=1.0e-20)-2*np.dot(x.T, x)) + print(numdiff.approx_hess(xk,fun2,1e-3, (y,x))[0] - 2*np.dot(x.T, x)) + + gt = (-x*2*(y-np.dot(x, [1,2,3]))[:,None]) + g = approx_fprime_cs((1,2,3), fun1, (y,x), h=1.0e-20)#.T #this shouldn't be transposed + gd = numdiff.approx_fprime((1,2,3),fun1,epsilon,(y,x)) + print(maxabs(g, gt)) + print(maxabs(gd, gt)) + + data = sm.datasets.spector.load(as_pandas=False) + data.exog = sm.add_constant(data.exog, prepend=False) + #mod = sm.Probit(data.endog, data.exog) + mod = sm.Logit(data.endog, data.exog) + #res = mod.fit(method="newton") + test_params = [1,0.25,1.4,-7] + loglike = mod.loglike + score = mod.score + hess = mod.hessian + + #cs doesn't work for Probit because special.ndtr doesn't support complex + #maybe calculating ndtr for real and imag parts separately, if we need it + #and if it still works in this case + print('sm', score(test_params)) + print('fd', numdiff.approx_fprime(test_params,loglike,epsilon)) + print('cs', numdiff.approx_fprime_cs(test_params,loglike)) + print('sm', hess(test_params)) + print('fd', numdiff.approx_fprime(test_params,score,epsilon)) + print('cs', numdiff.approx_fprime_cs(test_params, score)) + + hesscs = numdiff.approx_hess_cs(test_params, loglike) + print('cs', hesscs) + print(maxabs(hess(test_params), hesscs)) + + data = sm.datasets.anes96.load(as_pandas=False) + exog = data.exog + exog = sm.add_constant(exog, prepend=False) + res1 = sm.MNLogit(data.endog, exog).fit(method="newton", disp=0) + + datap = sm.datasets.randhie.load(as_pandas=False) + nobs = len(datap.endog) + exogp = sm.add_constant(datap.exog.view(float).reshape(nobs,-1), + prepend=False) + modp = sm.Poisson(datap.endog, exogp) + resp = modp.fit(method='newton', disp=0) diff --git a/statsmodels/tools/tests/test_parallel.py b/statsmodels/tools/tests/test_parallel.py new file mode 100644 index 0000000..6c5866a --- /dev/null +++ b/statsmodels/tools/tests/test_parallel.py @@ -0,0 +1,13 @@ +from statsmodels.compat.python import range +import warnings +from statsmodels.tools.parallel import parallel_func +from numpy import arange, testing +from math import sqrt + +def test_parallel(): + x = arange(10.) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + parallel, p_func, n_jobs = parallel_func(sqrt, n_jobs=-1, verbose=0) + y = parallel(p_func(i**2) for i in range(10)) + testing.assert_equal(x,y) diff --git a/statsmodels/tools/tests/test_rootfinding.py b/statsmodels/tools/tests/test_rootfinding.py new file mode 100644 index 0000000..4b840d3 --- /dev/null +++ b/statsmodels/tools/tests/test_rootfinding.py @@ -0,0 +1,93 @@ +# -*- coding: utf-8 -*- +""" + +Created on Sat Mar 23 13:34:19 2013 + +Author: Josef Perktold +""" + +import numpy as np +from statsmodels.tools.rootfinding import brentq_expanding + +from numpy.testing import (assert_allclose, assert_equal, assert_raises, + assert_array_less) + +def func(x, a): + f = (x - a)**3 + return f + +def func_nan(x, a, b): + x = np.atleast_1d(x) + f = (x - 1.*a)**3 + f[x < b] = np.nan + return f + + + +def funcn(x, a): + f = -(x - a)**3 + return f + + +def test_brentq_expanding(): + cases = [ + (0, {}), + (50, {}), + (-50, {}), + (500000, dict(low=10000)), + (-50000, dict(upp=-1000)), + (500000, dict(low=300000, upp=700000)), + (-50000, dict(low= -70000, upp=-1000)) + ] + + funcs = [(func, None), + (func, True), + (funcn, None), + (funcn, False)] + + for f, inc in funcs: + for a, kwds in cases: + kw = {'increasing':inc} + kw.update(kwds) + res = brentq_expanding(f, args=(a,), **kwds) + #print '%10d'%a, ['dec', 'inc'][f is func], res - a + assert_allclose(res, a, rtol=1e-5) + + # wrong sign for start bounds + # doesn't raise yet during development TODO: activate this + # it kind of works in some cases, but not correctly or in a useful way + #assert_raises(ValueError, brentq_expanding, func, args=(-500,), start_upp=-1000) + #assert_raises(ValueError, brentq_expanding, func, args=(500,), start_low=1000) + + # low upp given, but doesn't bound root, leave brentq exception + # ValueError: f(a) and f(b) must have different signs + assert_raises(ValueError, brentq_expanding, funcn, args=(-50000,), low= -40000, upp=-10000) + + # max_it too low to find root bounds + # ValueError: f(a) and f(b) must have different signs + assert_raises(ValueError, brentq_expanding, func, args=(-50000,), max_it=2) + + # maxiter_bq too low + # RuntimeError: Failed to converge after 3 iterations. + assert_raises(RuntimeError, brentq_expanding, func, args=(-50000,), maxiter_bq=3) + + # cannot determin whether increasing, all 4 low trial points return nan + assert_raises(ValueError, brentq_expanding, func_nan, args=(-20, 0.6)) + + # test for full_output + a = 500 + val, info = brentq_expanding(func, args=(a,), full_output=True) + assert_allclose(val, a, rtol=1e-5) + info1 = {'iterations': 63, 'start_bounds': (-1, 1), + 'brentq_bounds': (100, 1000), 'flag': 'converged', + 'function_calls': 64, 'iterations_expand': 3, 'converged': True} + + # adjustments for scipy 0.8.0 with changed convergence criteria + assert_array_less(info.__dict__['iterations'], 70) + assert_array_less(info.__dict__['function_calls'], 70) + for k in info1: + if k in ['iterations', 'function_calls']: + continue + assert_equal(info1[k], info.__dict__[k]) + + assert_allclose(info.root, a, rtol=1e-5) diff --git a/statsmodels/tools/tests/test_sequences.py b/statsmodels/tools/tests/test_sequences.py new file mode 100644 index 0000000..577ff58 --- /dev/null +++ b/statsmodels/tools/tests/test_sequences.py @@ -0,0 +1,45 @@ +import numpy as np +import numpy.testing as npt +from statsmodels.tools import sequences + + +def test_discrepancy(): + space_0 = [[0.1, 0.5], [0.2, 0.4], [0.3, 0.3], [0.4, 0.2], [0.5, 0.1]] + space_1 = [[1, 3], [2, 6], [3, 2], [4, 5], [5, 1], [6, 4]] + space_2 = [[1, 5], [2, 4], [3, 3], [4, 2], [5, 1], [6, 6]] + + corners = np.array([[0.5, 0.5], [6.5, 6.5]]) + + npt.assert_allclose(sequences.discrepancy(space_0), 0.1353, atol=1e-4) + + # From Fang et al. Design and modeling for computer experiments, 2006 + npt.assert_allclose(sequences.discrepancy(space_1, corners), 0.0081, atol=1e-4) + npt.assert_allclose(sequences.discrepancy(space_2, corners), 0.0105, atol=1e-4) + + +def test_van_der_corput(): + sample = sequences.van_der_corput(10) + out = [0., 0.5, 0.25, 0.75, 0.125, 0.625, 0.375, 0.875, 0.0625, 0.5625] + npt.assert_almost_equal(sample, out) + + sample = sequences.van_der_corput(5, start_index=3) + out = [0.75, 0.125, 0.625, 0.375, 0.875] + npt.assert_almost_equal(sample, out) + + +def test_primes(): + primes = sequences.primes_from_2_to(50) + out = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47] + npt.assert_allclose(primes, out) + + +def test_halton(): + corners = np.array([[0, 2], [10, 5]]) + sample = sequences.halton(dim=2, n_sample=5, bounds=corners) + + out = np.array([[5., 3.], [2.5, 4.], [7.5, 2.3], [1.25, 3.3], [6.25, 4.3]]) + npt.assert_almost_equal(sample, out, decimal=1) + + sample = sequences.halton(dim=2, n_sample=3, bounds=corners, start_index=2) + out = np.array([[7.5, 2.3], [1.25, 3.3], [6.25, 4.3]]) + npt.assert_almost_equal(sample, out, decimal=1) diff --git a/statsmodels/tools/tests/test_testing.py b/statsmodels/tools/tests/test_testing.py new file mode 100644 index 0000000..434fc17 --- /dev/null +++ b/statsmodels/tools/tests/test_testing.py @@ -0,0 +1,27 @@ +import pytest +import numpy as np + +from statsmodels.tools.testing import ParamsTableTestBunch, \ + MarginTableTestBunch, Holder + + +@pytest.mark.parametrize('attribute, bunch_type', + (('params_table', ParamsTableTestBunch), + ('margins_table', MarginTableTestBunch))) +def check_params_table_classes(attribute, bunch_type): + table = np.empty((10, 4)) + bunch = bunch_type(**{attribute: table}) + assert attribute in bunch + + +def test_bad_table(): + table = np.empty((10, 4)) + with pytest.raises(AttributeError): + ParamsTableTestBunch(margins_table=table) + + +def test_holder(): + holder = Holder() + holder.new_attr = 1 + assert hasattr(holder, 'new_attr') + assert getattr(holder, 'new_attr') == 1 diff --git a/statsmodels/tools/tests/test_tools.py b/statsmodels/tools/tests/test_tools.py new file mode 100644 index 0000000..7ffcc65 --- /dev/null +++ b/statsmodels/tools/tests/test_tools.py @@ -0,0 +1,680 @@ +""" +Test functions for models.tools +""" +from statsmodels.compat.python import lrange, range + +import string + +import numpy as np +from numpy.random import standard_normal +from numpy.testing import (assert_equal, assert_array_equal, + assert_almost_equal, assert_string_equal) +import pandas as pd +from pandas.util.testing import assert_frame_equal, assert_series_equal +import pytest + +from statsmodels.datasets import longley +from statsmodels.tools import tools +from statsmodels.tools.tools import pinv_extended + + +@pytest.fixture('module') +def string_var(): + string_var = [string.ascii_lowercase[0:5], + string.ascii_lowercase[5:10], + string.ascii_lowercase[10:15], + string.ascii_lowercase[15:20], + string.ascii_lowercase[20:25]] + string_var *= 5 + string_var = np.asarray(sorted(string_var)) + series = pd.Series(string_var, name='string_var') + return series + + +class TestTools(object): + + def test_add_constant_list(self): + x = lrange(1,5) + x = tools.add_constant(x) + y = np.asarray([[1,1,1,1],[1,2,3,4.]]).T + assert_equal(x, y) + + def test_add_constant_1d(self): + x = np.arange(1,5) + x = tools.add_constant(x) + y = np.asarray([[1,1,1,1],[1,2,3,4.]]).T + assert_equal(x, y) + + def test_add_constant_has_constant1d(self): + x = np.ones(5) + x = tools.add_constant(x, has_constant='skip') + assert_equal(x, np.ones((5,1))) + + with pytest.raises(ValueError): + tools.add_constant(x, has_constant='raise') + + assert_equal(tools.add_constant(x, has_constant='add'), + np.ones((5, 2))) + + def test_add_constant_has_constant2d(self): + x = np.asarray([[1,1,1,1],[1,2,3,4.]]).T + y = tools.add_constant(x, has_constant='skip') + assert_equal(x, y) + + with pytest.raises(ValueError): + tools.add_constant(x, has_constant='raise') + + assert_equal(tools.add_constant(x, has_constant='add'), + np.column_stack((np.ones(4), x))) + + def test_add_constant_recarray(self): + dt = np.dtype([('', int), ('', '>> import numpy as np + >>> import statsmodels.api as sm + + Univariate examples + + >>> import string + >>> string_var = [string.ascii_lowercase[0:5], \ + string.ascii_lowercase[5:10], \ + string.ascii_lowercase[10:15], \ + string.ascii_lowercase[15:20], \ + string.ascii_lowercase[20:25]] + >>> string_var *= 5 + >>> string_var = np.asarray(sorted(string_var)) + >>> design = sm.tools.categorical(string_var, drop=True) + + Or for a numerical categorical variable + + >>> instr = np.floor(np.arange(10,60, step=2)/10) + >>> design = sm.tools.categorical(instr, drop=True) + + With a structured array + + >>> num = np.random.randn(25,2) + >>> struct_ar = np.zeros((25,1), dtype=[('var1', 'f4'),('var2', 'f4'), \ + ('instrument','f4'),('str_instr','a5')]) + >>> struct_ar['var1'] = num[:,0][:,None] + >>> struct_ar['var2'] = num[:,1][:,None] + >>> struct_ar['instrument'] = instr[:,None] + >>> struct_ar['str_instr'] = string_var[:,None] + >>> design = sm.tools.categorical(struct_ar, col='instrument', drop=True) + + Or + + >>> design2 = sm.tools.categorical(struct_ar, col='str_instr', drop=True) + ''' + # TODO: add a NameValidator function + if isinstance(col, (list, tuple)): + if len(col) == 1: + col = col[0] + else: + raise ValueError("Can only convert one column at a time") + if (not isinstance(data, (pd.DataFrame, pd.Series)) and + not isinstance(col, (string_types, int)) and + col is not None): + raise TypeError('col must be a str, int or None') + + # Pull out a Series from a DataFrame if provided + if isinstance(data, pd.DataFrame): + if col is None: + raise TypeError('col must be a str or int when using a DataFrame') + elif col not in data: + raise ValueError('Column \'{0}\' not found in data'.format(col)) + data = data[col] + # Set col to None since we not have a Series + col = None + + if isinstance(data, pd.Series): + if col is not None and data.name != col: + raise ValueError('data.name does not match col ' + '\'{0}\''.format(col)) + data_cat = pd.Categorical(data) + dummies = pd.get_dummies(data_cat) + col_map = {i: cat for i, cat in enumerate(data_cat.categories) if + cat in dummies} + if not drop: + dummies.columns = list(dummies.columns) + dummies = pd.concat([dummies, data], 1) + if dictnames: + return dummies, col_map + return dummies + # catch recarrays and structured arrays + elif data.dtype.names or data.__class__ is np.recarray: + if not col and np.squeeze(data).ndim > 1: + raise IndexError("col is None and the input array is not 1d") + if isinstance(col, (int, long)): + col = data.dtype.names[col] + if col is None and data.dtype.names and len(data.dtype.names) == 1: + col = data.dtype.names[0] + + tmp_arr = np.unique(data[col]) + + # if the cols are shape (#,) vs (#,1) need to add an axis and flip + _swap = True + if data[col].ndim == 1: + tmp_arr = tmp_arr[:, None] + _swap = False + tmp_dummy = (tmp_arr == data[col]).astype(float) + if _swap: + tmp_dummy = np.squeeze(tmp_dummy).swapaxes(1, 0) + + if not tmp_arr.dtype.names: # how do we get to this code path? + tmp_arr = [asstr2(item) for item in np.squeeze(tmp_arr)] + elif tmp_arr.dtype.names: + tmp_arr = [asstr2(item) for item in np.squeeze(tmp_arr.tolist())] + + # prepend the varname and underscore, if col is numeric attribute + # lookup is lost for recarrays... + if col is None: + try: + col = data.dtype.names[0] + except: + col = 'var' + # TODO: the above needs to be made robust because there could be many + # var_yes, var_no varaibles for instance. + tmp_arr = [col + '_' + item for item in tmp_arr] + # TODO: test this for rec and structured arrays!!! + + if drop is True: + if len(data.dtype) <= 1: + if tmp_dummy.shape[0] < tmp_dummy.shape[1]: + tmp_dummy = np.squeeze(tmp_dummy).swapaxes(1, 0) + dt = lzip(tmp_arr, [tmp_dummy.dtype.str]*len(tmp_arr)) + # preserve array type + return np.array(lmap(tuple, tmp_dummy.tolist()), + dtype=dt).view(type(data)) + + data = nprf.drop_fields(data, col, usemask=False, + asrecarray=type(data) is np.recarray) + data = nprf.append_fields(data, tmp_arr, data=tmp_dummy, + usemask=False, + asrecarray=type(data) is np.recarray) + return data + + # Catch array-like for an error + elif not isinstance(data, np.ndarray): + raise NotImplementedError("Array-like objects are not supported") + else: + if isinstance(col, (int, long)): + offset = data.shape[1] # need error catching here? + tmp_arr = np.unique(data[:, col]) + tmp_dummy = (tmp_arr[:, np.newaxis] == data[:, col]).astype(float) + tmp_dummy = tmp_dummy.swapaxes(1, 0) + if drop is True: + offset -= 1 + data = np.delete(data, col, axis=1).astype(float) + data = np.column_stack((data, tmp_dummy)) + if dictnames is True: + col_map = _make_dictnames(tmp_arr, offset) + return data, col_map + return data + elif col is None and np.squeeze(data).ndim == 1: + tmp_arr = np.unique(data) + tmp_dummy = (tmp_arr[:, None] == data).astype(float) + tmp_dummy = tmp_dummy.swapaxes(1, 0) + if drop is True: + if dictnames is True: + col_map = _make_dictnames(tmp_arr) + return tmp_dummy, col_map + return tmp_dummy + else: + data = np.column_stack((data, tmp_dummy)) + if dictnames is True: + col_map = _make_dictnames(tmp_arr, offset=1) + return data, col_map + return data + else: + raise IndexError("The index %s is not understood" % col) + + +# TODO: add an axis argument to this for sysreg +def add_constant(data, prepend=True, has_constant='skip'): + """ + Adds a column of ones to an array + + Parameters + ---------- + data : array-like + ``data`` is the column-ordered design matrix + prepend : bool + If true, the constant is in the first column. Else the constant is + appended (last column). + has_constant : str {'raise', 'add', 'skip'} + Behavior if ``data`` already has a constant. The default will return + data without adding another constant. If 'raise', will raise an + error if a constant is present. Using 'add' will duplicate the + constant, if one is present. + + Returns + ------- + data : array, recarray or DataFrame + The original values with a constant (column of ones) as the first or + last column. Returned value depends on input type. + + Notes + ----- + When the input is recarray or a pandas Series or DataFrame, the added + column's name is 'const'. + """ + if _is_using_pandas(data, None) or _is_recarray(data): + from statsmodels.tsa.tsatools import add_trend + return add_trend(data, trend='c', prepend=prepend, has_constant=has_constant) + + # Special case for NumPy + x = np.asanyarray(data) + if x.ndim == 1: + x = x[:,None] + elif x.ndim > 2: + raise ValueError('Only implementd 2-dimensional arrays') + + is_nonzero_const = np.ptp(x, axis=0) == 0 + is_nonzero_const &= np.all(x != 0.0, axis=0) + if is_nonzero_const.any(): + if has_constant == 'skip': + return x + elif has_constant == 'raise': + raise ValueError("data already contains a constant") + + x = [np.ones(x.shape[0]), x] + x = x if prepend else x[::-1] + return np.column_stack(x) + + +def isestimable(C, D): + """ True if (Q, P) contrast `C` is estimable for (N, P) design `D` + + From an Q x P contrast matrix `C` and an N x P design matrix `D`, checks if + the contrast `C` is estimable by looking at the rank of ``vstack([C,D])`` + and verifying it is the same as the rank of `D`. + + Parameters + ---------- + C : (Q, P) array-like + contrast matrix. If `C` has is 1 dimensional assume shape (1, P) + D: (N, P) array-like + design matrix + + Returns + ------- + tf : bool + True if the contrast `C` is estimable on design `D` + + Examples + -------- + >>> D = np.array([[1, 1, 1, 0, 0, 0], + ... [0, 0, 0, 1, 1, 1], + ... [1, 1, 1, 1, 1, 1]]).T + >>> isestimable([1, 0, 0], D) + False + >>> isestimable([1, -1, 0], D) + True + """ + C = np.asarray(C) + D = np.asarray(D) + if C.ndim == 1: + C = C[None, :] + if C.shape[1] != D.shape[1]: + raise ValueError('Contrast should have %d columns' % D.shape[1]) + new = np.vstack([C, D]) + if np.linalg.matrix_rank(new) != np.linalg.matrix_rank(D): + return False + return True + + +def pinv_extended(X, rcond=1e-15): + """ + Return the pinv of an array X as well as the singular values + used in computation. + + Code adapted from numpy. + """ + X = np.asarray(X) + X = X.conjugate() + u, s, vt = np.linalg.svd(X, 0) + s_orig = np.copy(s) + m = u.shape[0] + n = vt.shape[1] + cutoff = rcond * np.maximum.reduce(s) + for i in range(min(n, m)): + if s[i] > cutoff: + s[i] = 1./s[i] + else: + s[i] = 0. + res = np.dot(np.transpose(vt), np.multiply(s[:, np.core.newaxis], + np.transpose(u))) + return res, s_orig + + +def recipr(x): + """ + Return the reciprocal of an array, setting all entries less than or + equal to 0 to 0. Therefore, it presumes that X should be positive in + general. + """ + + x = np.asarray(x) + out = np.zeros_like(x, dtype=np.float64) + nans = np.isnan(x.flat) + pos = ~nans + pos[pos] = pos[pos] & (x.flat[pos] > 0) + out.flat[pos] = 1.0 / x.flat[pos] + out.flat[nans] = np.nan + return out + + +def recipr0(x): + """ + Return the reciprocal of an array, setting all entries equal to 0 + as 0. It does not assume that X should be positive in + general. + """ + x = np.asarray(x) + out = np.zeros_like(x, dtype=np.float64) + nans = np.isnan(x.flat) + non_zero = ~nans + non_zero[non_zero] = non_zero[non_zero] & (x.flat[non_zero] != 0) + out.flat[non_zero] = 1.0 / x.flat[non_zero] + out.flat[nans] = np.nan + return out + + +def clean0(matrix): + """ + Erase columns of zeros: can save some time in pseudoinverse. + """ + colsum = np.add.reduce(matrix**2, 0) + val = [matrix[:, i] for i in np.flatnonzero(colsum)] + return np.array(np.transpose(val)) + + +def fullrank(X, r=None): + """ + Return a matrix whose column span is the same as X. + + If the rank of X is known it can be specified as r -- no check + is made to ensure that this really is the rank of X. + + """ + + if r is None: + r = np.linalg.matrix_rank(X) + + V, D, U = L.svd(X, full_matrices=0) + order = np.argsort(D) + order = order[::-1] + value = [] + for i in range(r): + value.append(V[:, order[i]]) + return np.asarray(np.transpose(value)).astype(np.float64) + + +def unsqueeze(data, axis, oldshape): + """ + Unsqueeze a collapsed array + + >>> from numpy import mean + >>> from numpy.random import standard_normal + >>> x = standard_normal((3,4,5)) + >>> m = mean(x, axis=1) + >>> m.shape + (3, 5) + >>> m = unsqueeze(m, 1, x.shape) + >>> m.shape + (3, 1, 5) + >>> + """ + newshape = list(oldshape) + newshape[axis] = 1 + return data.reshape(newshape) + + +def chain_dot(*arrs): + """ + Returns the dot product of the given matrices. + + Parameters + ---------- + arrs: argument list of ndarray + + Returns + ------- + Dot product of all arguments. + + Examples + -------- + >>> import numpy as np + >>> from statsmodels.tools import chain_dot + >>> A = np.arange(1,13).reshape(3,4) + >>> B = np.arange(3,15).reshape(4,3) + >>> C = np.arange(5,8).reshape(3,1) + >>> chain_dot(A,B,C) + array([[1820], + [4300], + [6780]]) + """ + return reduce(lambda x, y: np.dot(y, x), arrs[::-1]) + + +def nan_dot(A, B): + """ + Returns np.dot(left_matrix, right_matrix) with the convention that + nan * 0 = 0 and nan * x = nan if x != 0. + + Parameters + ---------- + A, B : np.ndarrays + """ + # Find out who should be nan due to nan * nonzero + should_be_nan_1 = np.dot(np.isnan(A), (B != 0)) + should_be_nan_2 = np.dot((A != 0), np.isnan(B)) + should_be_nan = should_be_nan_1 + should_be_nan_2 + + # Multiply after setting all nan to 0 + # This is what happens if there were no nan * nonzero conflicts + C = np.dot(np.nan_to_num(A), np.nan_to_num(B)) + + C[should_be_nan] = np.nan + + return C + + +def maybe_unwrap_results(results): + """ + Gets raw results back from wrapped results. + + Can be used in plotting functions or other post-estimation type + routines. + """ + return getattr(results, '_results', results) + +class Bunch(dict): + """ + Returns a dict-like object with keys accessible via attribute lookup. + """ + def __init__(self, *args, **kwargs): + super(Bunch, self).__init__(*args, **kwargs) + self.__dict__ = self + + +def _ensure_2d(x, ndarray=False): + """ + + Parameters + ---------- + x : array, Series, DataFrame or None + Input to verify dimensions, and to transform as necesary + ndarray : bool + Flag indicating whether to always return a NumPy array. Setting False + will return an pandas DataFrame when the input is a Series or a + DataFrame. + + Returns + ------- + out : array, DataFrame or None + array or DataFrame with 2 dimensiona. One dimensional arrays are + returned as nobs by 1. None is returned if x is None. + names : list of str or None + list containing variables names when the input is a pandas datatype. + Returns None if the input is an ndarray. + + Notes + ----- + Accepts None for simplicity + """ + if x is None: + return x + is_pandas = _is_using_pandas(x, None) + if x.ndim == 2: + if is_pandas: + return x, x.columns + else: + return x, None + elif x.ndim > 2: + raise ValueError('x mst be 1 or 2-dimensional.') + + name = x.name if is_pandas else None + if ndarray: + return np.asarray(x)[:, None], name + else: + return pd.DataFrame(x), name diff --git a/statsmodels/tools/transform_model.py b/statsmodels/tools/transform_model.py new file mode 100644 index 0000000..25ec93d --- /dev/null +++ b/statsmodels/tools/transform_model.py @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- +""" +Created on Tue May 27 13:23:24 2014 + +Author: Josef Perktold +License: BSD-3 + +""" + +import numpy as np + + +class StandardizeTransform(object): + """class to reparameterize a model for standardized exog + + Parameters + ---------- + data : array_like + data that is standardized along axis=0 + ddof : None or int + degrees of freedom for calculation of standard deviation. + default is 1, in contrast to numpy.std + const_idx : None or int + If None, then the presence of a constant is detected if the standard + deviation of a column is **equal** to zero. A constant column is + not transformed. If this is an integer, then the corresponding column + will not be transformed. + demean : bool, default is True + If demean is true, then the data will be demeaned, otherwise it will + only be rescaled. + + Notes + ----- + Warning: Not all options are tested and it is written for one use case. + API changes are expected. + + This can be used to transform only the design matrix, exog, in a model, + which is required in some discrete models when the endog cannot be rescaled + or demeaned. + The transformation is full rank and does not drop the constant. + + """ + + def __init__(self, data, ddof=1, const_idx=None, demean=True): + data = np.asarray(data) + self.mean = data.mean(0) + self.scale = data.std(0, ddof=1) + + # do not transform a constant + if const_idx is None: + const_idx = np.nonzero(self.scale == 0)[0] + if len(const_idx) == 0: + const_idx = 'nc' + else: + const_idx = int(const_idx) + + if const_idx != 'nc': + self.mean[const_idx] = 0 + self.scale[const_idx] = 1 + + if demean is False: + self.mean = None + + self.const_idx = const_idx + + def transform(self, data): + """standardize the data using the stored transformation + + """ + # could use scipy.stats.zscore instead + if self.mean is None: + return np.asarray(data) / self.scale + else: + return (np.asarray(data) - self.mean) / self.scale + + def transform_params(self, params): + """Transform parameters of the standardized model to the original model + + Parameters + ---------- + params : ndarray + parameters estimated with the standardized model + + Returns + ------- + params_new : ndarray + parameters transformed to the parameterization of the original + model + + """ + + params_new = params / self.scale + if self.const_idx != 'nc': + params_new[self.const_idx] -= (params_new * self.mean).sum() + + return params_new + + __call__ = transform diff --git a/statsmodels/tools/web.py b/statsmodels/tools/web.py new file mode 100644 index 0000000..a41c8da --- /dev/null +++ b/statsmodels/tools/web.py @@ -0,0 +1,75 @@ +""" +Provides a function to open the system browser to either search or go directly +to a function's reference +""" +import webbrowser + +from statsmodels.compat.python import urlencode, string_types +from statsmodels import __version__ + +BASE_URL = 'https://www.statsmodels.org/' + + +def _generate_url(arg, stable): + """ + Parse inputs and return a correctly formatted URL or raises ValueError + if the input is not understandable + """ + url = BASE_URL + if stable: + url += 'stable/' + else: + url += 'devel/' + + if arg is None: + return url + elif isinstance(arg, string_types): + url += 'search.html?' + url += urlencode({'q': arg}) + url += '&check_keywords=yes&area=default' + else: + try: + func = arg + func_name = func.__name__ + func_module = func.__module__ + if not func_module.startswith('statsmodels.'): + raise ValueError('Function must be from statsmodels') + url += 'generated/' + url += func_module + '.' + func_name + '.html' + except AttributeError: + raise ValueError('Input not understood') + return url + + +def webdoc(arg=None, stable=None): + """ + Opens a browser and displays online documentation + + Parameters + ---------- + arg, optional : string or statsmodels function + Either a string to search the documentation or a function + stable, optional : bool + Flag indicating whether to use the stable documentation (True) or + the development documentation (False). If not provided, opens + the stable documentation if the current version of statsmodels is a + release + + Examples + -------- + >>> import statsmodels.api as sm + >>> sm.webdoc() # Documention site + >>> sm.webdoc('glm') # Search for glm in docs + >>> sm.webdoc(sm.OLS, stable=False) # Go to generated help for OLS, devel + + Notes + ----- + By default, open stable documentation if the current version of statsmodels + is a release. Otherwise opens the development documentation. + + Uses the default system browser. + """ + stable = __version__ if 'dev' not in __version__ else stable + url_or_error = _generate_url(arg, stable) + webbrowser.open(url_or_error) + return None diff --git a/statsmodels/tsa/__init__.py b/statsmodels/tsa/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/tsa/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/tsa/_bds.py b/statsmodels/tsa/_bds.py new file mode 100644 index 0000000..294b026 --- /dev/null +++ b/statsmodels/tsa/_bds.py @@ -0,0 +1,248 @@ +""" +BDS test for IID time series + +References +---------- + +Broock, W. A., J. A. Scheinkman, W. D. Dechert, and B. LeBaron. 1996. +"A Test for Independence Based on the Correlation Dimension." +Econometric Reviews 15 (3): 197-235. + +Kanzler, Ludwig. 1999. +"Very Fast and Correctly Sized Estimation of the BDS Statistic". +SSRN Scholarly Paper ID 151669. Rochester, NY: Social Science Research Network. + +LeBaron, Blake. 1997. +"A Fast Algorithm for the BDS Statistic." +Studies in Nonlinear Dynamics & Econometrics 2 (2) (January 1). +""" + +from __future__ import division +import numpy as np +from scipy import stats + + +def distance_indicators(x, epsilon=None, distance=1.5): + """ + Calculate all pairwise threshold distance indicators for a time series + + Parameters + ---------- + x : 1d array + observations of time series for which heaviside distance indicators + are calculated + epsilon : scalar, optional + the threshold distance to use in calculating the heaviside indicators + distance : scalar, optional + if epsilon is omitted, specifies the distance multiplier to use when + computing it + + Returns + ------- + indicators : 2d array + matrix of distance threshold indicators + + Notes + ----- + Since this can be a very large matrix, use np.int8 to save some space. + + """ + x = np.asarray(x) + nobs = len(x) + + if epsilon is not None and epsilon <= 0: + raise ValueError("Threshold distance must be positive if specified." + " Got epsilon of %f" % epsilon) + if distance <= 0: + raise ValueError("Threshold distance must be positive." + " Got distance multiplier %f" % distance) + + # TODO: add functionality to select epsilon optimally + # TODO: and/or compute for a range of epsilons in [0.5*s, 2.0*s]? + # or [1.5*s, 2.0*s]? + if epsilon is None: + epsilon = distance * x.std(ddof=1) + + return np.abs(x[:, None] - x) < epsilon + + +def correlation_sum(indicators, embedding_dim): + """ + Calculate a correlation sum + + Useful as an estimator of a correlation integral + + Parameters + ---------- + indicators : 2d array + matrix of distance threshold indicators + embedding_dim : integer + embedding dimension + + Returns + ------- + corrsum : float + Correlation sum + indicators_joint + matrix of joint-distance-threshold indicators + + """ + if not indicators.ndim == 2: + raise ValueError('Indicators must be a matrix') + if not indicators.shape[0] == indicators.shape[1]: + raise ValueError('Indicator matrix must be symmetric (square)') + + if embedding_dim == 1: + indicators_joint = indicators + else: + corrsum, indicators = correlation_sum(indicators, embedding_dim - 1) + indicators_joint = indicators[1:, 1:]*indicators[:-1, :-1] + + nobs = len(indicators_joint) + corrsum = np.mean(indicators_joint[np.triu_indices(nobs, 1)]) + return corrsum, indicators_joint + + +def correlation_sums(indicators, max_dim): + """ + Calculate all correlation sums for embedding dimensions 1:max_dim + + Parameters + ---------- + indicators : 2d array + matrix of distance threshold indicators + max_dim : integer + maximum embedding dimension + + Returns + ------- + corrsums : 1d array + Correlation sums + + """ + + corrsums = np.zeros((1, max_dim)) + + corrsums[0, 0], indicators = correlation_sum(indicators, 1) + for i in range(1, max_dim): + corrsums[0, i], indicators = correlation_sum(indicators, 2) + + return corrsums + + +def _var(indicators, max_dim): + """ + Calculate the variance of a BDS effect + + Parameters + ---------- + indicators : 2d array + matrix of distance threshold indicators + max_dim : integer + maximum embedding dimension + + Returns + ------- + variances : float + Variance of BDS effect + + """ + nobs = len(indicators) + corrsum_1dim, _ = correlation_sum(indicators, 1) + k = ((indicators.sum(1)**2).sum() - 3*indicators.sum() + + 2*nobs) / (nobs * (nobs - 1) * (nobs - 2)) + + variances = np.zeros((1, max_dim - 1)) + + for embedding_dim in range(2, max_dim + 1): + tmp = 0 + for j in range(1, embedding_dim): + tmp += (k**(embedding_dim - j))*(corrsum_1dim**(2 * j)) + variances[0, embedding_dim-2] = 4 * ( + k**embedding_dim + + 2 * tmp + + ((embedding_dim - 1)**2) * (corrsum_1dim**(2 * embedding_dim)) - + (embedding_dim**2) * k * (corrsum_1dim**(2 * embedding_dim - 2))) + + return variances, k + + +def bds(x, max_dim=2, epsilon=None, distance=1.5): + """ + Calculate the BDS test statistic for independence of a time series + + Parameters + ---------- + x : 1d array + observations of time series for which bds statistics is calculated + max_dim : integer + maximum embedding dimension + epsilon : scalar, optional + the threshold distance to use in calculating the correlation sum + distance : scalar, optional + if epsilon is omitted, specifies the distance multiplier to use when + computing it + + Returns + ------- + bds_stat : float + The BDS statistic + pvalue : float + The p-values associated with the BDS statistic + + Notes + ----- + The null hypothesis of the test statistic is for an independent and + identically distributed (i.i.d.) time series, and an unspecified + alternative hypothesis. + + This test is often used as a residual diagnostic. + + The calculation involves matrices of size (nobs, nobs), so this test + will not work with very long datasets. + + Implementation conditions on the first m-1 initial values, which are + required to calculate the m-histories: + x_t^m = (x_t, x_{t-1}, ... x_{t-(m-1)}) + + """ + x = np.asarray(x) + nobs_full = len(x) + + if max_dim < 2 or max_dim >= nobs_full: + raise ValueError("Maximum embedding dimension must be in the range" + " [2,len(x)-1]. Got %d." % max_dim) + + # Cache the indicators + indicators = distance_indicators(x, epsilon, distance) + + # Get estimates of m-dimensional correlation integrals + corrsum_mdims = correlation_sums(indicators, max_dim) + + # Get variance of effect + variances, k = _var(indicators, max_dim) + stddevs = np.sqrt(variances) + + bds_stats = np.zeros((1, max_dim - 1)) + pvalues = np.zeros((1, max_dim - 1)) + for embedding_dim in range(2, max_dim+1): + ninitial = (embedding_dim - 1) + nobs = nobs_full - ninitial + + # Get estimates of 1-dimensional correlation integrals + # (see Kanzler footnote 10 for why indicators are truncated) + corrsum_1dim, _ = correlation_sum(indicators[ninitial:, ninitial:], 1) + corrsum_mdim = corrsum_mdims[0, embedding_dim - 1] + + # Get the intermediate values for the statistic + effect = corrsum_mdim - (corrsum_1dim**embedding_dim) + sd = stddevs[0, embedding_dim - 2] + + # Calculate the statistic: bds_stat ~ N(0,1) + bds_stats[0, embedding_dim - 2] = np.sqrt(nobs) * effect / sd + + # Calculate the p-value (two-tailed test) + pvalue = 2*stats.norm.sf(np.abs(bds_stats[0, embedding_dim - 2])) + pvalues[0, embedding_dim - 2] = pvalue + + return np.squeeze(bds_stats), np.squeeze(pvalues) diff --git a/statsmodels/tsa/_exponential_smoothers.pyx b/statsmodels/tsa/_exponential_smoothers.pyx new file mode 100644 index 0000000..60ccbcc --- /dev/null +++ b/statsmodels/tsa/_exponential_smoothers.pyx @@ -0,0 +1,343 @@ +#!python +#cython: wraparound=False, boundscheck=False, cdivision=True + +import numpy as np +cimport numpy as np + +np.import_array() + +cdef object _holt_init(double[::1] x, np.uint8_t[::1] xi, double[::1] p, + y, double[::1] l, double[::1] b): + """Initialization for the Holt Models""" + cdef double alpha, beta, phi, alphac, betac, l0, b0 + cdef Py_ssize_t i, n, idx = 0 + n = p.shape[0] + for i in range(n): + if xi[i]: + p[i] = x[idx] + idx += 1 + alpha = p[0] + beta = p[1] + l0 = p[3] + b0 = p[4] + phi = p[5] + alphac = 1 - alpha + betac = 1 - beta + l[0] = l0 + b[0] = b0 + return alpha, beta, phi, alphac, betac + + +cdef double[::1] ensure_1d(object x): + """ + This is a work aound function that ensures that X is a 1-d array. It is needed since + scipy.optimize.brute in version <= 1.0 calls squueze so that 1-d arrays are squeezed to + scalars. + + Fixed in SciPy 1.1 + """ + if x.ndim == 0: + # Due to bug in SciPy 1.0 that was fixed in 1.1 that squeezes + x = np.array([x], dtype=np.double) + return x + + +def _holt__(object x, np.uint8_t[::1] xi, double[::1] p, double[::1] y, double[::1] l, + double[::1] b, double[::1] s, Py_ssize_t m, Py_ssize_t n, double max_seen): + """ + Compute the sum of squared residuals for Simple Exponential Smoothing + + Returns + ------- + sse : float + Sum of squared errors + """ + cdef double alpha, beta, phi, betac, alphac, err, sse + cdef double[::1] x_arr + cdef Py_ssize_t i + + x_arr = ensure_1d(x) + alpha, beta, phi, alphac, betac = _holt_init(x_arr, xi, p, y, l, b) + + err = y[0] - l[0] + sse = err * err + for i in range(1, n): + l[i] = (alpha * y[i - 1]) + (alphac * l[i - 1]) + err = y[i] - l[i] + sse += err * err + return sse + + +def _holt_mul_dam(object x, np.uint8_t[::1] xi, double[::1] p, double[::1] y, double[::1] l, + double[::1] b, double[::1] s, Py_ssize_t m, Py_ssize_t n, double max_seen): + """ + Multiplicative and Multiplicative Damped + Minimization Function + (M,) & (Md,) + """ + cdef double alpha, beta, phi, betac, alphac, err, sse + cdef double[::1] x_arr + cdef Py_ssize_t i + + x_arr = ensure_1d(x) + alpha, beta, phi, alphac, betac = _holt_init(x_arr, xi, p, y, l, b) + if alpha == 0.0: + return max_seen + if beta > alpha: + return max_seen + err = y[0] - (l[0] * b[0]**phi) + sse = err * err + for i in range(1, n): + l[i] = (alpha * y[i - 1]) + (alphac * (l[i - 1] * b[i - 1]**phi)) + b[i] = (beta * (l[i] / l[i - 1])) + (betac * b[i - 1]**phi) + err = y[i] - (l[i] * b[i]**phi) + sse += err * err + return sse + + +def _holt_add_dam(object x, np.uint8_t[::1] xi, double[::1] p, double[::1] y, double[::1] l, + double[::1] b, double[::1] s, Py_ssize_t m, Py_ssize_t n, double max_seen): + """ + Additive and Additive Damped + Minimization Function + (A,) & (Ad,) + """ + cdef double alpha, beta, phi, betac, alphac, err, sse + cdef double[::1] x_arr + cdef Py_ssize_t i + + x_arr = ensure_1d(x) + alpha, beta, phi, alphac, betac = _holt_init(x_arr, xi, p, y, l, b) + if alpha == 0.0: + return max_seen + if beta > alpha: + return max_seen + + err = y[0] - (l[0] + phi * b[0]) + sse = err * err + for i in range(1, n): + l[i] = (alpha * y[i - 1]) + (alphac * (l[i - 1] + phi * b[i - 1])) + b[i] = (beta * (l[i] - l[i - 1])) + (betac * phi * b[i - 1]) + err = y[i] - (l[i] + phi * b[i]) + sse += err * err + return sse + + +cdef object _holt_win_init(double[::1] x, np.uint8_t[::1] xi, double[::1] p, y, + double[::1] l, double[::1] b, double[::1] s, Py_ssize_t m): + """Initialization for the Holt Winters Seasonal Models""" + cdef double alpha, beta, gamma, phi, alphac, betac, l0, b0 + cdef Py_ssize_t i, n, idx = 0 + + n = p.shape[0] + for i in range(n): + if xi[i]: + p[i] = x[idx] + idx += 1 + alpha = p[0] + beta = p[1] + gamma = p[2] + l0 = p[3] + b0 = p[4] + phi = p[5] + + alphac = 1 - alpha + betac = 1 - beta + gammac = 1 - gamma + + l[0] = l0 + b[0] = b0 + for i in range(m): + s[i] = p[6+i] + + return alpha, beta, gamma, phi, alphac, betac, gammac + + +def _holt_win_add_add_dam(double[::1] x, np.uint8_t[::1] xi, double[::1] p, double[::1] y, + double[::1] l, double[::1] b, double[::1] s, Py_ssize_t m, + Py_ssize_t n, double max_seen): + """ + Additive and Additive Damped with Additive Seasonal + Minimization Function + (A,A) & (Ad,A) + """ + cdef double alpha, beta, gamma, phi, alphac, betac, gammac, err, sse + cdef double[::1] x_arr + cdef Py_ssize_t i + + x_arr = ensure_1d(x) + alpha, beta, gamma, phi, alphac, betac, gammac = _holt_win_init(x_arr, xi, p, y, l, b, s, m) + if alpha * beta == 0.0: + return max_seen + if beta > alpha or gamma > 1 - alpha: + return max_seen + + err = y[0] - (l[0] + phi * b[0] + s[0]) + sse = err * err + for i in range(1, n): + l[i] = (alpha * y[i - 1]) - (alpha * s[i - 1]) + \ + (alphac * (l[i - 1] + phi * b[i - 1])) + b[i] = (beta * (l[i] - l[i - 1])) + (betac * phi * b[i - 1]) + s[i + m - 1] = gamma * y[i - 1] - \ + (gamma * (l[i - 1] + phi * b[i - 1])) + (gammac * s[i - 1]) + err = y[i] - (l[i] + phi * b[i] + s[i]) + sse += err * err + return sse + +def _holt_win__add(double[::1] x, np.uint8_t[::1] xi, double[::1] p, double[::1] y, double[::1] l, + double[::1] b, double[::1] s, Py_ssize_t m, Py_ssize_t n, double max_seen): + """ + Additive Seasonal + Minimization Function + (,A) + """ + cdef double alpha, beta, gamma, phi, alphac, betac, gammac, err, sse + cdef double[::1] x_arr + cdef Py_ssize_t i + + x_arr = ensure_1d(x) + alpha, beta, gamma, phi, alphac, betac, gammac= _holt_win_init(x_arr, xi, p, y, l, b, s, m) + if alpha == 0.0: + return max_seen + if gamma > 1 - alpha: + return max_seen + + err = y[0] - (l[0] + s[0]) + sse = err * err + for i in range(1, n): + l[i] = (alpha * y[i - 1]) - (alpha * s[i - 1]) + (alphac * (l[i - 1])) + s[i + m - 1] = gamma * y[i - 1] - \ + (gamma * (l[i - 1])) + (gammac * s[i - 1]) + err = y[i] - (l[i] + s[i]) + sse += err * err + return sse + + +def _holt_win__mul(double[::1] x, np.uint8_t[::1] xi, double[::1] p, double[::1] y, double[::1] l, + double[::1] b, double[::1] s, Py_ssize_t m, Py_ssize_t n, double max_seen): + """ + Multiplicative Seasonal + Minimization Function + (,M) + """ + cdef double alpha, beta, gamma, phi, alphac, betac, gammac, err, sse + cdef double[::1] x_arr + cdef Py_ssize_t i + + x_arr = ensure_1d(x) + alpha, beta, gamma, phi, alphac, betac, gammac= _holt_win_init(x_arr, xi, p, y, l, b, s, m) + + if alpha == 0.0: + return max_seen + if gamma > 1 - alpha: + return max_seen + + err = y[0] - (l[0] * s[0]) + sse = err * err + for i in range(1, n): + l[i] = (alpha * y[i - 1] / s[i - 1]) + (alphac * (l[i - 1])) + s[i + m - 1] = (gamma * y[i - 1] / (l[i - 1])) + (gammac * s[i - 1]) + err = y[i] - (l[i] * s[i]) + sse += err * err + return sse + + +def _holt_win_mul_mul_dam(double[::1] x, np.uint8_t[::1] xi, double[::1] p, double[::1] y, + double[::1] l, double[::1] b, double[::1] s, Py_ssize_t m, Py_ssize_t n, + double max_seen): + """ + Multiplicative and Multiplicative Damped with Multiplicative Seasonal + Minimization Function + (M,M) & (Md,M) + """ + cdef double alpha, beta, gamma, phi, alphac, betac, gammac, err, sse + cdef double[::1] x_arr + cdef Py_ssize_t i + + x_arr = ensure_1d(x) + alpha, beta, gamma, phi, alphac, betac, gammac= _holt_win_init(x_arr, xi, p, y, l, b, s, m) + + if alpha * beta == 0.0: + return max_seen + if beta > alpha or gamma > 1 - alpha: + return max_seen + + err = y[0] - ((l[0] * b[0]**phi) * s[0]) + sse = err * err + for i in range(1, n): + l[i] = (alpha * y[i - 1] / s[i - 1]) + \ + (alphac * (l[i - 1] * b[i - 1]**phi)) + b[i] = (beta * (l[i] / l[i - 1])) + (betac * b[i - 1]**phi) + s[i + m - 1] = (gamma * y[i - 1] / (l[i - 1] * + b[i - 1]**phi)) + (gammac * s[i - 1]) + err = y[i] - ((l[i] * b[i]**phi) * s[i]) + sse += err * err + return sse + + + +def _holt_win_add_mul_dam(double[::1] x, np.uint8_t[::1] xi, double[::1] p, double[::1] y, + double[::1] l, double[::1] b, double[::1] s, Py_ssize_t m, Py_ssize_t n, + double max_seen): + """ + Additive and Additive Damped with Multiplicative Seasonal + Minimization Function + (A,M) & (Ad,M) + """ + cdef double alpha, beta, gamma, phi, alphac, betac, gammac, err, sse + cdef double[::1] x_arr + cdef Py_ssize_t i + + x_arr = ensure_1d(x) + alpha, beta, gamma, phi, alphac, betac, gammac= _holt_win_init(x_arr, xi, p, y, l, b, s, m) + + if alpha * beta == 0.0: + return max_seen + if beta > alpha or gamma > 1 - alpha: + return max_seen + + err = y[0] - ((l[0] + phi * b[0]) * s[0]) + sse = err * err + for i in range(1, n): + l[i] = (alpha * y[i - 1] / s[i - 1]) + \ + (alphac * (l[i - 1] + phi * b[i - 1])) + b[i] = (beta * (l[i] - l[i - 1])) + (betac * phi * b[i - 1]) + s[i + m - 1] = (gamma * y[i - 1] / (l[i - 1] + phi * + b[i - 1])) + (gammac * s[i - 1]) + err = y[i] - ((l[i] + phi * b[i]) * s[i]) + sse += err * err + return sse + + + +def _holt_win_mul_add_dam(double[::1] x, np.uint8_t[::1] xi, double[::1] p, double[::1] y, + double[::1] l, double[::1] b, double[::1] s, Py_ssize_t m, Py_ssize_t n, + double max_seen): + """ + Multiplicative and Multiplicative Damped with Additive Seasonal + Minimization Function + (M,A) & (M,Ad) + """ + cdef double alpha, beta, gamma, phi, alphac, betac, gammac, err, sse + cdef double[::1] x_arr + cdef Py_ssize_t i + + x_arr = ensure_1d(x) + alpha, beta, gamma, phi, alphac, betac, gammac= _holt_win_init(x_arr, xi, p, y, l, b, s, m) + + if alpha * beta == 0.0: + return max_seen + if beta > alpha or gamma > 1 - alpha: + return max_seen + + err = y[0] - ((l[0] * phi * b[0]) + s[0]) + sse = err * err + for i in range(1, n): + l[i] = (alpha * y[i - 1]) - (alpha * s[i - 1]) + \ + (alphac * (l[i - 1] * b[i - 1]**phi)) + b[i] = (beta * (l[i] / l[i - 1])) + (betac * b[i - 1]**phi) + s[i + m - 1] = gamma * y[i - 1] - \ + (gamma * (l[i - 1] * b[i - 1]**phi)) + (gammac * s[i - 1]) + err = y[i] - ((l[i] * phi * b[i]) + s[i]) + sse += err * err + return sse diff --git a/statsmodels/tsa/adfvalues.py b/statsmodels/tsa/adfvalues.py new file mode 100644 index 0000000..2594c1c --- /dev/null +++ b/statsmodels/tsa/adfvalues.py @@ -0,0 +1,450 @@ +from scipy.stats import norm +from numpy import array, polyval, inf, asarray + +__all__ = ['mackinnonp', 'mackinnoncrit'] + +# These are the cut-off values for the left-tail vs. the rest of the +# tau distribution, for getting the p-values + +tau_star_nc = [-1.04, -1.53, -2.68, -3.09, -3.07, -3.77] +tau_min_nc = [-19.04, -19.62, -21.21, -23.25, -21.63, -25.74] +tau_max_nc = [inf, 1.51, 0.86, 0.88, 1.05, 1.24] +tau_star_c = [-1.61, -2.62, -3.13, -3.47, -3.78, -3.93] +tau_min_c = [-18.83, -18.86, -23.48, -28.07, -25.96, -23.27] +tau_max_c = [2.74, 0.92, 0.55, 0.61, 0.79, 1] +tau_star_ct = [-2.89, -3.19, -3.50, -3.65, -3.80, -4.36] +tau_min_ct = [-16.18, -21.15, -25.37, -26.63, -26.53, -26.18] +tau_max_ct = [0.7, 0.63, 0.71, 0.93, 1.19, 1.42] +tau_star_ctt = [-3.21, -3.51, -3.81, -3.83, -4.12, -4.63] +tau_min_ctt = [-17.17, -21.1, -24.33, -24.03, -24.33, -28.22] +tau_max_ctt = [0.54, 0.79, 1.08, 1.43, 3.49, 1.92] + +_tau_maxs = { + "nc": tau_max_nc, + "c": tau_max_c, + "ct": tau_max_ct, + "ctt": tau_max_ctt, +} +_tau_mins = { + "nc": tau_min_nc, + "c": tau_min_c, + "ct": tau_min_ct, + "ctt": tau_min_ctt, +} +_tau_stars = { + "nc": tau_star_nc, + "c": tau_star_c, + "ct": tau_star_ct, + "ctt": tau_star_ctt, +} + + +small_scaling = array([1, 1, 1e-2]) +tau_nc_smallp = [ + [0.6344, 1.2378, 3.2496], + [1.9129, 1.3857, 3.5322], + [2.7648, 1.4502, 3.4186], + [3.4336, 1.4835, 3.19], + [4.0999, 1.5533, 3.59], + [4.5388, 1.5344, 2.9807]] +tau_nc_smallp = asarray(tau_nc_smallp)*small_scaling + +tau_c_smallp = [ + [2.1659, 1.4412, 3.8269], + [2.92, 1.5012, 3.9796], + [3.4699, 1.4856, 3.164], + [3.9673, 1.4777, 2.6315], + [4.5509, 1.5338, 2.9545], + [5.1399, 1.6036, 3.4445]] +tau_c_smallp = asarray(tau_c_smallp)*small_scaling + +tau_ct_smallp = [ + [3.2512, 1.6047, 4.9588], + [3.6646, 1.5419, 3.6448], + [4.0983, 1.5173, 2.9898], + [4.5844, 1.5338, 2.8796], + [5.0722, 1.5634, 2.9472], + [5.53, 1.5914, 3.0392]] +tau_ct_smallp = asarray(tau_ct_smallp)*small_scaling + +tau_ctt_smallp = [ + [4.0003, 1.658, 4.8288], + [4.3534, 1.6016, 3.7947], + [4.7343, 1.5768, 3.2396], + [5.214, 1.6077, 3.3449], + [5.6481, 1.6274, 3.3455], + [5.9296, 1.5929, 2.8223]] +tau_ctt_smallp = asarray(tau_ctt_smallp)*small_scaling + +_tau_smallps = { + "nc": tau_nc_smallp, + "c": tau_c_smallp, + "ct": tau_ct_smallp, + "ctt": tau_ctt_smallp, +} + + +large_scaling = array([1, 1e-1, 1e-1, 1e-2]) +tau_nc_largep = [ + [0.4797, 9.3557, -0.6999, 3.3066], + [1.5578, 8.558, -2.083, -3.3549], + [2.2268, 6.8093, -3.2362, -5.4448], + [2.7654, 6.4502, -3.0811, -4.4946], + [3.2684, 6.8051, -2.6778, -3.4972], + [3.7268, 7.167, -2.3648, -2.8288]] +tau_nc_largep = asarray(tau_nc_largep)*large_scaling + +tau_c_largep = [ + [1.7339, 9.3202, -1.2745, -1.0368], + [2.1945, 6.4695, -2.9198, -4.2377], + [2.5893, 4.5168, -3.6529, -5.0074], + [3.0387, 4.5452, -3.3666, -4.1921], + [3.5049, 5.2098, -2.9158, -3.3468], + [3.9489, 5.8933, -2.5359, -2.721]] +tau_c_largep = asarray(tau_c_largep)*large_scaling + +tau_ct_largep = [ + [2.5261, 6.1654, -3.7956, -6.0285], + [2.85, 5.272, -3.6622, -5.1695], + [3.221, 5.255, -3.2685, -4.1501], + [3.652, 5.9758, -2.7483, -3.2081], + [4.0712, 6.6428, -2.3464, -2.546], + [4.4735, 7.1757, -2.0681, -2.1196]] +tau_ct_largep = asarray(tau_ct_largep)*large_scaling + +tau_ctt_largep = [ + [3.0778, 4.9529, -4.1477, -5.9359], + [3.4713, 5.967, -3.2507, -4.2286], + [3.8637, 6.7852, -2.6286, -3.1381], + [4.2736, 7.6199, -2.1534, -2.4026], + [4.6679, 8.2618, -1.822, -1.9147], + [5.0009, 8.3735, -1.6994, -1.6928]] +tau_ctt_largep = asarray(tau_ctt_largep)*large_scaling + +_tau_largeps = { + "nc": tau_nc_largep, + "c": tau_c_largep, + "ct": tau_ct_largep, + "ctt": tau_ctt_largep, +} + + +# NOTE: The Z-statistic is used when lags are included to account for +# serial correlation in the error term + +z_star_nc = [-2.9, -8.7, -14.8, -20.9, -25.7, -30.5] +z_star_c = [-8.9, -14.3, -19.5, -25.1, -29.6, -34.4] +z_star_ct = [-15.0, -19.6, -25.3, -29.6, -31.8, -38.4] +z_star_ctt = [-20.7, -25.3, -29.9, -34.4, -38.5, -44.2] + + +# These are Table 5 from MacKinnon (1994) +# small p is defined as p in .005 to .150 ie p = .005 up to z_star +# Z* is the largest value for which it is appropriate to use these +# approximations +# the left tail approximation is +# p = norm.cdf(d_0 + d_1*log(abs(z)) + d_2*log(abs(z))**2 + d_3*log(abs(z))**3) +# there is no Z-min, ie., it is well-behaved in the left tail + +z_nc_smallp = array([ + [.0342, -.6376, 0, -.03872], + [1.3426, -.7680, 0, -.04104], + [3.8607, -2.4159, .51293, -.09835], + [6.1072, -3.7250, .85887, -.13102], + [7.7800, -4.4579, 1.00056, -.14014], + [4.0253, -.8815, 0, -.04887]]) + +z_c_smallp = array([ + [2.2142, -1.7863, .32828, -.07727], + [1.1662, .1814, -.36707, 0], + [6.6584, -4.3486, 1.04705, -.15011], + [3.3249, -.8456, 0, -.04818], + [4.0356, -.9306, 0, -.04776], + [13.9959, -8.4314, 1.97411, -.22234]]) + +z_ct_smallp = array([ + [4.6476, -2.8932, 0.5832, -0.0999], + [7.2453, -4.7021, 1.127, -.15665], + [3.4893, -0.8914, 0, -.04755], + [1.6604, 1.0375, -0.53377, 0], + [2.006, 1.1197, -0.55315, 0], + [11.1626, -5.6858, 1.21479, -.15428]]) + +z_ctt_smallp = array([ + [3.6739, -1.1549, 0, -0.03947], + [3.9783, -1.0619, 0, -0.04394], + [2.0062, 0.8907, -0.51708, 0], + [4.9218, -1.0663, 0, -0.04691], + [5.1433, -0.9877, 0, -0.04993], + [23.6812, -14.6485, 3.42909, -.33794]]) +# These are Table 6 from MacKinnon (1994). +# These are well-behaved in the right tail. +# the approximation function is +# p = norm.cdf(d_0 + d_1 * z + d_2*z**2 + d_3*z**3 + d_4*z**4) +z_large_scaling = array([1, 1e-1, 1e-2, 1e-3, 1e-5]) +z_nc_largep = array([ + [0.4927, 6.906, 13.2331, 12.099, 0], + [1.5167, 4.6859, 4.2401, 2.7939, 7.9601], + [2.2347, 3.9465, 2.2406, 0.8746, 1.4239], + [2.8239, 3.6265, 1.6738, 0.5408, 0.7449], + [3.3174, 3.3492, 1.2792, 0.3416, 0.3894], + [3.729, 3.0611, 0.9579, 0.2087, 0.1943]]) +z_nc_largep *= z_large_scaling + +z_c_largep = array([ + [1.717, 5.5243, 4.3463, 1.6671, 0], + [2.2394, 4.2377, 2.432, 0.9241, 0.4364], + [2.743, 3.626, 1.5703, 0.4612, 0.567], + [3.228, 3.3399, 1.2319, 0.3162, 0.3482], + [3.6583, 3.0934, 0.9681, 0.2111, 0.1979], + [4.0379, 2.8735, 0.7694, 0.1433, 0.1146]]) +z_c_largep *= z_large_scaling + +z_ct_largep = array([ + [2.7117, 4.5731, 2.2868, 0.6362, 0.5], + [3.0972, 4.0873, 1.8982, 0.5796, 0.7384], + [3.4594, 3.6326, 1.4284, 0.3813, 0.4325], + [3.806, 3.2634, 1.0689, 0.2402, 0.2304], + [4.1402, 2.9867, 0.8323, 0.16, 0.1315], + [4.4497, 2.7534, 0.6582, 0.1089, 0.0773]]) +z_ct_largep *= z_large_scaling + +z_ctt_largep = array([ + [3.4671, 4.3476, 1.9231, 0.5381, 0.6216], + [3.7827, 3.9421, 1.5699, 0.4093, 0.4485], + [4.052, 3.4947, 1.1772, 0.2642, 0.2502], + [4.3311, 3.1625, 0.9126, 0.1775, 0.1462], + [4.594, 2.8739, 0.707, 0.1181, 0.0838], + [4.8479, 2.6447, 0.5647, 0.0827, 0.0518]]) +z_ctt_largep *= z_large_scaling + + +# TODO: finish this and then integrate them into adf function +def mackinnonp(teststat, regression="c", N=1, lags=None): + """ + Returns MacKinnon's approximate p-value for teststat. + + Parameters + ---------- + teststat : float + "T-value" from an Augmented Dickey-Fuller regression. + regression : str {"c", "nc", "ct", "ctt"} + This is the method of regression that was used. Following MacKinnon's + notation, this can be "c" for constant, "nc" for no constant, "ct" for + constant and trend, and "ctt" for constant, trend, and trend-squared. + N : int + The number of series believed to be I(1). For (Augmented) Dickey- + Fuller N = 1. + + Returns + ------- + p-value : float + The p-value for the ADF statistic estimated using MacKinnon 1994. + + References + ---------- + .. [*] MacKinnon, J.G. 1994 "Approximate Asymptotic Distribution Functions + for Unit-Root and Cointegration Tests." Journal of Business & Economics + Statistics, 12.2, 167-76. + + Notes + ----- + For (A)DF + H_0: AR coefficient = 1 + H_a: AR coefficient < 1 + """ + maxstat = _tau_maxs[regression] + minstat = _tau_mins[regression] + starstat = _tau_stars[regression] + if teststat > maxstat[N-1]: + return 1.0 + elif teststat < minstat[N-1]: + return 0.0 + if teststat <= starstat[N-1]: + tau_coef = _tau_smallps[regression][N-1] + else: + # Note: above is only for z stats + tau_coef = _tau_largeps[regression][N-1] + return norm.cdf(polyval(tau_coef[::-1], teststat)) + + +# These are the new estimates from MacKinnon 2010 +# the first axis is N -1 +# the second axis is 1 %, 5 %, 10 % +# the last axis is the coefficients + +tau_nc_2010 = [[ + [-2.56574, -2.2358, -3.627, 0], # N = 1 + [-1.94100, -0.2686, -3.365, 31.223], + [-1.61682, 0.2656, -2.714, 25.364]]] +tau_nc_2010 = asarray(tau_nc_2010) + +tau_c_2010 = [ + [[-3.43035, -6.5393, -16.786, -79.433], # N = 1, 1% + [-2.86154, -2.8903, -4.234, -40.040], # 5 % + [-2.56677, -1.5384, -2.809, 0]], # 10 % + [[-3.89644, -10.9519, -33.527, 0], # N = 2 + [-3.33613, -6.1101, -6.823, 0], + [-3.04445, -4.2412, -2.720, 0]], + [[-4.29374, -14.4354, -33.195, 47.433], # N = 3 + [-3.74066, -8.5632, -10.852, 27.982], + [-3.45218, -6.2143, -3.718, 0]], + [[-4.64332, -18.1031, -37.972, 0], # N = 4 + [-4.09600, -11.2349, -11.175, 0], + [-3.81020, -8.3931, -4.137, 0]], + [[-4.95756, -21.8883, -45.142, 0], # N = 5 + [-4.41519, -14.0405, -12.575, 0], + [-4.13157, -10.7417, -3.784, 0]], + [[-5.24568, -25.6688, -57.737, 88.639], # N = 6 + [-4.70693, -16.9178, -17.492, 60.007], + [-4.42501, -13.1875, -5.104, 27.877]], + [[-5.51233, -29.5760, -69.398, 164.295], # N = 7 + [-4.97684, -19.9021, -22.045, 110.761], + [-4.69648, -15.7315, -5.104, 27.877]], + [[-5.76202, -33.5258, -82.189, 256.289], # N = 8 + [-5.22924, -23.0023, -24.646, 144.479], + [-4.95007, -18.3959, -7.344, 94.872]], + [[-5.99742, -37.6572, -87.365, 248.316], # N = 9 + [-5.46697, -26.2057, -26.627, 176.382], + [-5.18897, -21.1377, -9.484, 172.704]], + [[-6.22103, -41.7154, -102.680, 389.33], # N = 10 + [-5.69244, -29.4521, -30.994, 251.016], + [-5.41533, -24.0006, -7.514, 163.049]], + [[-6.43377, -46.0084, -106.809, 352.752], # N = 11 + [-5.90714, -32.8336, -30.275, 249.994], + [-5.63086, -26.9693, -4.083, 151.427]], + [[-6.63790, -50.2095, -124.156, 579.622], # N = 12 + [-6.11279, -36.2681, -32.505, 314.802], + [-5.83724, -29.9864, -2.686, 184.116]]] +tau_c_2010 = asarray(tau_c_2010) + +tau_ct_2010 = [ + [[-3.95877, -9.0531, -28.428, -134.155], # N = 1 + [-3.41049, -4.3904, -9.036, -45.374], + [-3.12705, -2.5856, -3.925, -22.380]], + [[-4.32762, -15.4387, -35.679, 0], # N = 2 + [-3.78057, -9.5106, -12.074, 0], + [-3.49631, -7.0815, -7.538, 21.892]], + [[-4.66305, -18.7688, -49.793, 104.244], # N = 3 + [-4.11890, -11.8922, -19.031, 77.332], + [-3.83511, -9.0723, -8.504, 35.403]], + [[-4.96940, -22.4694, -52.599, 51.314], # N = 4 + [-4.42871, -14.5876, -18.228, 39.647], + [-4.14633, -11.2500, -9.873, 54.109]], + [[-5.25276, -26.2183, -59.631, 50.646], # N = 5 + [-4.71537, -17.3569, -22.660, 91.359], + [-4.43422, -13.6078, -10.238, 76.781]], + [[-5.51727, -29.9760, -75.222, 202.253], # N = 6 + [-4.98228, -20.3050, -25.224, 132.03], + [-4.70233, -16.1253, -9.836, 94.272]], + [[-5.76537, -33.9165, -84.312, 245.394], # N = 7 + [-5.23299, -23.3328, -28.955, 182.342], + [-4.95405, -18.7352, -10.168, 120.575]], + [[-6.00003, -37.8892, -96.428, 335.92], # N = 8 + [-5.46971, -26.4771, -31.034, 220.165], + [-5.19183, -21.4328, -10.726, 157.955]], + [[-6.22288, -41.9496, -109.881, 466.068], # N = 9 + [-5.69447, -29.7152, -33.784, 273.002], + [-5.41738, -24.2882, -8.584, 169.891]], + [[-6.43551, -46.1151, -120.814, 566.823], # N = 10 + [-5.90887, -33.0251, -37.208, 346.189], + [-5.63255, -27.2042, -6.792, 177.666]], + [[-6.63894, -50.4287, -128.997, 642.781], # N = 11 + [-6.11404, -36.4610, -36.246, 348.554], + [-5.83850, -30.1995, -5.163, 210.338]], + [[-6.83488, -54.7119, -139.800, 736.376], # N = 12 + [-6.31127, -39.9676, -37.021, 406.051], + [-6.03650, -33.2381, -6.606, 317.776]]] +tau_ct_2010 = asarray(tau_ct_2010) + +tau_ctt_2010 = [ + [[-4.37113, -11.5882, -35.819, -334.047], # N = 1 + [-3.83239, -5.9057, -12.490, -118.284], + [-3.55326, -3.6596, -5.293, -63.559]], + [[-4.69276, -20.2284, -64.919, 88.884], # N =2 + [-4.15387, -13.3114, -28.402, 72.741], + [-3.87346, -10.4637, -17.408, 66.313]], + [[-4.99071, -23.5873, -76.924, 184.782], # N = 3 + [-4.45311, -15.7732, -32.316, 122.705], + [-4.17280, -12.4909, -17.912, 83.285]], + [[-5.26780, -27.2836, -78.971, 137.871], # N = 4 + [-4.73244, -18.4833, -31.875, 111.817], + [-4.45268, -14.7199, -17.969, 101.92]], + [[-5.52826, -30.9051, -92.490, 248.096], # N = 5 + [-4.99491, -21.2360, -37.685, 194.208], + [-4.71587, -17.0820, -18.631, 136.672]], + [[-5.77379, -34.7010, -105.937, 393.991], # N = 6 + [-5.24217, -24.2177, -39.153, 232.528], + [-4.96397, -19.6064, -18.858, 174.919]], + [[-6.00609, -38.7383, -108.605, 365.208], # N = 7 + [-5.47664, -27.3005, -39.498, 246.918], + [-5.19921, -22.2617, -17.910, 208.494]], + [[-6.22758, -42.7154, -119.622, 421.395], # N = 8 + [-5.69983, -30.4365, -44.300, 345.48], + [-5.42320, -24.9686, -19.688, 274.462]], + [[-6.43933, -46.7581, -136.691, 651.38], # N = 9 + [-5.91298, -33.7584, -42.686, 346.629], + [-5.63704, -27.8965, -13.880, 236.975]], + [[-6.64235, -50.9783, -145.462, 752.228], # N = 10 + [-6.11753, -37.056, -48.719, 473.905], + [-5.84215, -30.8119, -14.938, 316.006]], + [[-6.83743, -55.2861, -152.651, 792.577], # N = 11 + [-6.31396, -40.5507, -46.771, 487.185], + [-6.03921, -33.8950, -9.122, 285.164]], + [[-7.02582, -59.6037, -166.368, 989.879], # N = 12 + [-6.50353, -44.0797, -47.242, 543.889], + [-6.22941, -36.9673, -10.868, 418.414]]] +tau_ctt_2010 = asarray(tau_ctt_2010) + +tau_2010s = { + "nc": tau_nc_2010, + "c": tau_c_2010, + "ct": tau_ct_2010, + "ctt": tau_ctt_2010, +} + + +def mackinnoncrit(N=1, regression="c", nobs=inf): + """ + Returns the critical values for cointegrating and the ADF test. + + In 2010 MacKinnon updated the values of his 1994 paper with critical values + for the augmented Dickey-Fuller tests. These new values are to be + preferred and are used here. + + Parameters + ---------- + N : int + The number of series of I(1) series for which the null of + non-cointegration is being tested. For N > 12, the critical values + are linearly interpolated (not yet implemented). For the ADF test, + N = 1. + reg : str {'c', 'tc', 'ctt', 'nc'} + Following MacKinnon (1996), these stand for the type of regression run. + 'c' for constant and no trend, 'tc' for constant with a linear trend, + 'ctt' for constant with a linear and quadratic trend, and 'nc' for + no constant. The values for the no constant case are taken from the + 1996 paper, as they were not updated for 2010 due to the unrealistic + assumptions that would underlie such a case. + nobs : int or np.inf + This is the sample size. If the sample size is numpy.inf, then the + asymptotic critical values are returned. + + References + ---------- + .. [*] MacKinnon, J.G. 1994 "Approximate Asymptotic Distribution Functions + for Unit-Root and Cointegration Tests." Journal of Business & Economics + Statistics, 12.2, 167-76. + .. [*] MacKinnon, J.G. 2010. "Critical Values for Cointegration Tests." + Queen's University, Dept of Economics Working Papers 1227. + http://ideas.repec.org/p/qed/wpaper/1227.html + """ + reg = regression + if reg not in ['c', 'ct', 'nc', 'ctt']: + raise ValueError("regression keyword %s not understood" % reg) + tau = tau_2010s[reg] + if nobs is inf: + return tau[N-1, :, 0] + else: + val = tau[N-1, :, ::-1] + return polyval(val.T, 1./nobs) diff --git a/statsmodels/tsa/api.py b/statsmodels/tsa/api.py new file mode 100644 index 0000000..ea038e1 --- /dev/null +++ b/statsmodels/tsa/api.py @@ -0,0 +1,52 @@ +__all__ = ["AR", "ARMA", "ARIMA", + "var", "VAR", "VECM", "SVAR", "DynamicVAR", + "filters", + "innovations", + "tsatools", + "add_trend", "detrend", "lagmat", "lagmat2ds", "add_lag", + "interp", + "stattools", + "acovf", "acf", "pacf", "pacf_yw", "pacf_ols", "ccovf", "ccf", + "periodogram", "q_stat", "coint", "arma_order_select_ic", + "adfuller", "kpss", "bds", + "datetools", + "seasonal_decompose", + "graphics", + "x13_arima_select_order", "x13_arima_analysis", + "statespace", + "SARIMAX", "UnobservedComponents", "VARMAX", "DynamicFactor", + "MarkovRegression", "MarkovAutoregression", + "ExponentialSmoothing", "SimpleExpSmoothing", "Holt", + "arma_generate_sample", "ArmaProcess"] + +from .ar_model import AR +from .arima_model import ARMA, ARIMA +from . import vector_ar as var +from .arima_process import arma_generate_sample, ArmaProcess +from .vector_ar.var_model import VAR +from .vector_ar.vecm import VECM +from .vector_ar.svar_model import SVAR +from .vector_ar.dynamic import DynamicVAR +from .filters import api as filters +from . import tsatools +from .tsatools import (add_trend, detrend, lagmat, lagmat2ds, add_lag) +from . import interp +from . import stattools +from .stattools import ( + acovf, acf, pacf, pacf_yw, pacf_ols, ccovf, ccf, + periodogram, q_stat, coint, arma_order_select_ic, + adfuller, kpss, bds) +from .base import datetools +from .seasonal import seasonal_decompose +from ..graphics import tsaplots as graphics +from .x13 import x13_arima_select_order +from .x13 import x13_arima_analysis +from .statespace import api as statespace +from .statespace.sarimax import SARIMAX +from .statespace.structural import UnobservedComponents +from .statespace.varmax import VARMAX +from .statespace.dynamic_factor import DynamicFactor +from .regime_switching.markov_regression import MarkovRegression +from .regime_switching.markov_autoregression import MarkovAutoregression +from .holtwinters import ExponentialSmoothing, SimpleExpSmoothing, Holt +from .innovations import api as innovations diff --git a/statsmodels/tsa/ar_model.py b/statsmodels/tsa/ar_model.py new file mode 100644 index 0000000..aec9b58 --- /dev/null +++ b/statsmodels/tsa/ar_model.py @@ -0,0 +1,885 @@ +# -*- coding: utf-8 -*- +from __future__ import division +from statsmodels.compat.python import iteritems, range, lmap + +import numpy as np +from numpy import dot, identity +from numpy.linalg import inv, slogdet +from scipy.stats import norm +from statsmodels.regression.linear_model import OLS +from statsmodels.tsa.tsatools import (lagmat, add_trend, + _ar_transparams, _ar_invtransparams) +import statsmodels.tsa.base.tsa_model as tsbase +import statsmodels.base.model as base +from statsmodels.tools.decorators import cache_readonly, cache_writable +from statsmodels.tools.numdiff import approx_fprime, approx_hess +from statsmodels.tsa.kalmanf.kalmanfilter import KalmanFilter +import statsmodels.base.wrapper as wrap +from statsmodels.tsa.vector_ar import util + + +__all__ = ['AR'] + + +def sumofsq(x, axis=0): + """Helper function to calculate sum of squares along first axis""" + return np.sum(x**2, axis=axis) + + +def _check_ar_start(start, k_ar, method, dynamic): + if (method == 'cmle' or dynamic) and start < k_ar: + raise ValueError("Start must be >= k_ar for conditional MLE " + "or dynamic forecast. Got %d" % start) + + +def _ar_predict_out_of_sample(y, params, k_ar, k_trend, steps, start=0): + mu = params[:k_trend] if k_trend else 0 # only have to worry constant + arparams = params[k_trend:][::-1] # reverse for dot + + # dynamic endogenous variable + endog = np.zeros(k_ar + steps) # this is one too big but doesn't matter + if start: + endog[:k_ar] = y[start-k_ar:start] + else: + endog[:k_ar] = y[-k_ar:] + + forecast = np.zeros(steps) + for i in range(steps): + fcast = mu + np.dot(arparams, endog[i:i+k_ar]) + forecast[i] = fcast + endog[i + k_ar] = fcast + + return forecast + + +class AR(tsbase.TimeSeriesModel): + __doc__ = tsbase._tsa_doc % {"model": "Autoregressive AR(p) model", + "params": """endog : array-like + 1-d endogenous response variable. The independent variable.""", + "extra_params": base._missing_param_doc, + "extra_sections": ""} + + def __init__(self, endog, dates=None, freq=None, missing='none'): + super(AR, self).__init__(endog, None, dates, freq, missing=missing) + endog = self.endog # original might not have been an ndarray + if endog.ndim == 1: + endog = endog[:, None] + self.endog = endog # to get shapes right + elif endog.ndim > 1 and endog.shape[1] != 1: + raise ValueError("Only the univariate case is implemented") + + def initialize(self): + pass + + def _transparams(self, params): + """ + Transforms params to induce stationarity/invertability. + + Reference + --------- + Jones(1980) + """ + p = self.k_ar + k = self.k_trend + newparams = params.copy() + newparams[k:k+p] = _ar_transparams(params[k:k+p].copy()) + return newparams + + def _invtransparams(self, start_params): + """ + Inverse of the Jones reparameterization + """ + p = self.k_ar + k = self.k_trend + newparams = start_params.copy() + newparams[k:k+p] = _ar_invtransparams(start_params[k:k+p].copy()) + return newparams + + def _presample_fit(self, params, start, p, end, y, predictedvalues): + """ + Return the pre-sample predicted values using the Kalman Filter + + Notes + ----- + See predict method for how to use start and p. + """ + k = self.k_trend + + # build system matrices + T_mat = KalmanFilter.T(params, p, k, p) + R_mat = KalmanFilter.R(params, p, k, 0, p) + + # Initial State mean and variance + alpha = np.zeros((p, 1)) + Q_0 = dot(inv(identity(p**2)-np.kron(T_mat, T_mat)), + dot(R_mat, R_mat.T).ravel('F')) + + Q_0 = Q_0.reshape(p, p, order='F') # TODO: order might need to be p+k + P = Q_0 + Z_mat = KalmanFilter.Z(p) + for i in range(end): # iterate p-1 times to fit presample + v_mat = y[i] - dot(Z_mat, alpha) + F_mat = dot(dot(Z_mat, P), Z_mat.T) + Finv = 1./F_mat # inv. always scalar + K = dot(dot(dot(T_mat, P), Z_mat.T), Finv) + # update state + alpha = dot(T_mat, alpha) + dot(K, v_mat) + L = T_mat - dot(K, Z_mat) + P = dot(dot(T_mat, P), L.T) + dot(R_mat, R_mat.T) + #P[0,0] += 1 # for MA part, R_mat.R_mat.T above + if i >= start - 1: # only record if we ask for it + predictedvalues[i + 1 - start] = dot(Z_mat, alpha) + + def _get_prediction_index(self, start, end, dynamic, index=None): + method = getattr(self, 'method', 'mle') + k_ar = getattr(self, 'k_ar', 0) + if start is None: + if method == 'mle' and not dynamic: + start = 0 + else: # can't do presample fit for cmle or dynamic + start = k_ar + start = self._index[start] + if end is None: + end = self._index[-1] + + start, end, out_of_sample, prediction_index = ( + super(AR, self)._get_prediction_index(start, end, index)) + + # This replaces the _validate() call + if 'mle' not in method and start < k_ar: + raise ValueError("Start must be >= k_ar for conditional MLE or " + "dynamic forecast. Got %s" % start) + # Other validation + _check_ar_start(start, k_ar, method, dynamic) + + return start, end, out_of_sample, prediction_index + + def predict(self, params, start=None, end=None, dynamic=False): + """ + Returns in-sample and out-of-sample prediction. + + Parameters + ---------- + params : array + The fitted model parameters. + start : int, str, or datetime + Zero-indexed observation number at which to start forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. + end : int, str, or datetime + Zero-indexed observation number at which to end forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. + dynamic : bool + The `dynamic` keyword affects in-sample prediction. If dynamic + is False, then the in-sample lagged values are used for + prediction. If `dynamic` is True, then in-sample forecasts are + used in place of lagged dependent variables. The first forecasted + value is `start`. + + Returns + ------- + predicted values : array + + Notes + ----- + The linear Gaussian Kalman filter is used to return pre-sample fitted + values. The exact initial Kalman Filter is used. See Durbin and Koopman + in the references for more information. + """ + # will return an index of a date + start, end, out_of_sample, _ = ( + self._get_prediction_index(start, end, dynamic)) + + if start - end > 1: + raise ValueError("end is before start") + + k_ar = self.k_ar + k_trend = self.k_trend + method = self.method + endog = self.endog.squeeze() + + if dynamic: + out_of_sample += end - start + 1 + return _ar_predict_out_of_sample(endog, params, k_ar, + k_trend, out_of_sample, start) + + predictedvalues = np.zeros(end + 1 - start) + + # fit pre-sample + if method == 'mle': # use Kalman Filter to get initial values + if k_trend: + mu = params[0]/(1-np.sum(params[k_trend:])) + else: + mu = 0 + + # modifies predictedvalues in place + if start < k_ar: + self._presample_fit(params, start, k_ar, min(k_ar-1, end), + endog[:k_ar] - mu, predictedvalues) + predictedvalues[:k_ar-start] += mu + + if end < k_ar: + return predictedvalues + + # just do the whole thing and truncate + fittedvalues = np.dot(self.X, params) + + pv_start = max(k_ar - start, 0) + fv_start = max(start - k_ar, 0) + fv_end = min(len(fittedvalues), end-k_ar+1) + predictedvalues[pv_start:] = fittedvalues[fv_start:fv_end] + + if out_of_sample: + forecastvalues = _ar_predict_out_of_sample(endog, params, + k_ar, k_trend, + out_of_sample) + predictedvalues = np.r_[predictedvalues, forecastvalues] + + return predictedvalues + + def _presample_varcov(self, params): + """ + Returns the inverse of the presample variance-covariance. + + Notes + ----- + See Hamilton p. 125 + """ + k = self.k_trend + p = self.k_ar + p1 = p+1 + + # get inv(Vp) Hamilton 5.3.7 + params0 = np.r_[-1, params[k:]] + + Vpinv = np.zeros((p, p), dtype=params.dtype) + for i in range(1, p1): + Vpinv[i-1, i-1:] = np.correlate(params0, params0[:i],)[:-1] + Vpinv[i-1, i-1:] -= np.correlate(params0[-i:], params0,)[:-1] + + Vpinv = Vpinv + Vpinv.T - np.diag(Vpinv.diagonal()) + return Vpinv + + def _loglike_css(self, params): + """ + Loglikelihood of AR(p) process using conditional sum of squares + """ + nobs = self.nobs + Y = self.Y + X = self.X + ssr = sumofsq(Y.squeeze() - np.dot(X, params)) + sigma2 = ssr/nobs + return (-nobs/2 * (np.log(2 * np.pi) + np.log(sigma2)) - + ssr/(2 * sigma2)) + + def _loglike_mle(self, params): + """ + Loglikelihood of AR(p) process using exact maximum likelihood + """ + nobs = self.nobs + X = self.X + endog = self.endog + k_ar = self.k_ar + k_trend = self.k_trend + + # reparameterize according to Jones (1980) like in ARMA/Kalman Filter + if self.transparams: + params = self._transparams(params) + + # get mean and variance for pre-sample lags + yp = endog[:k_ar].copy() + if k_trend: + c = [params[0]] * k_ar + else: + c = [0] + mup = np.asarray(c / (1 - np.sum(params[k_trend:]))) + diffp = yp - mup[:, None] + + # get inv(Vp) Hamilton 5.3.7 + Vpinv = self._presample_varcov(params) + + diffpVpinv = np.dot(np.dot(diffp.T, Vpinv), diffp).item() + ssr = sumofsq(endog[k_ar:].squeeze() - np.dot(X, params)) + + # concentrating the likelihood means that sigma2 is given by + sigma2 = 1./nobs * (diffpVpinv + ssr) + self.sigma2 = sigma2 + logdet = slogdet(Vpinv)[1] # TODO: add check for singularity + loglike = -1/2. * (nobs * (np.log(2 * np.pi) + np.log(sigma2)) - + logdet + diffpVpinv / sigma2 + ssr / sigma2) + return loglike + + def loglike(self, params): + """ + The loglikelihood of an AR(p) process + + Parameters + ---------- + params : array + The fitted parameters of the AR model + + Returns + ------- + llf : float + The loglikelihood evaluated at `params` + + Notes + ----- + Contains constant term. If the model is fit by OLS then this returns + the conditonal maximum likelihood. + + .. math:: \\frac{\\left(n-p\\right)}{2}\\left(\\log\\left(2\\pi\\right)+\\log\\left(\\sigma^{2}\\right)\\right)-\\frac{1}{\\sigma^{2}}\\sum_{i}\\epsilon_{i}^{2} + + If it is fit by MLE then the (exact) unconditional maximum likelihood + is returned. + + .. math:: -\\frac{n}{2}log\\left(2\\pi\\right)-\\frac{n}{2}\\log\\left(\\sigma^{2}\\right)+\\frac{1}{2}\\left|V_{p}^{-1}\\right|-\\frac{1}{2\\sigma^{2}}\\left(y_{p}-\\mu_{p}\\right)^{\\prime}V_{p}^{-1}\\left(y_{p}-\\mu_{p}\\right)-\\frac{1}{2\\sigma^{2}}\\sum_{t=p+1}^{n}\\epsilon_{i}^{2} + + where + + :math:`\\mu_{p}` is a (`p` x 1) vector with each element equal to the + mean of the AR process and :math:`\\sigma^{2}V_{p}` is the (`p` x `p`) + variance-covariance matrix of the first `p` observations. + """ + # TODO: Math is on Hamilton ~pp 124-5 + if self.method == "cmle": + return self._loglike_css(params) + + else: + return self._loglike_mle(params) + + def score(self, params): + """ + Return the gradient of the loglikelihood at params. + + Parameters + ---------- + params : array-like + The parameter values at which to evaluate the score function. + + Notes + ----- + Returns numerical gradient. + """ + loglike = self.loglike + return approx_fprime(params, loglike, epsilon=1e-8) + + def information(self, params): + """ + Not Implemented Yet + """ + return + + def hessian(self, params): + """ + Returns numerical hessian for now. + """ + loglike = self.loglike + return approx_hess(params, loglike) + + def _stackX(self, k_ar, trend): + """ + Private method to build the RHS matrix for estimation. + + Columns are trend terms then lags. + """ + endog = self.endog + X = lagmat(endog, maxlag=k_ar, trim='both') + k_trend = util.get_trendorder(trend) + if k_trend: + X = add_trend(X, prepend=True, trend=trend, has_constant="raise") + self.k_trend = k_trend + return X + + def select_order(self, maxlag, ic, trend='c', method='mle'): + """ + Select the lag order according to the information criterion. + + Parameters + ---------- + maxlag : int + The highest lag length tried. See `AR.fit`. + ic : str {'aic','bic','hqic','t-stat'} + Criterion used for selecting the optimal lag length. + See `AR.fit`. + trend : str {'c','nc'} + Whether to include a constant or not. 'c' - include constant. + 'nc' - no constant. + + Returns + ------- + bestlag : int + Best lag according to IC. + """ + endog = self.endog + + # make Y and X with same nobs to compare ICs + Y = endog[maxlag:] + self.Y = Y # attach to get correct fit stats + X = self._stackX(maxlag, trend) # sets k_trend + self.X = X + k = self.k_trend # k_trend set in _stackX + k = max(1, k) # handle if startlag is 0 + results = {} + + if ic != 't-stat': + for lag in range(k, maxlag+1): + # have to reinstantiate the model to keep comparable models + endog_tmp = endog[maxlag-lag:] + fit = AR(endog_tmp).fit(maxlag=lag, method=method, + full_output=0, trend=trend, + maxiter=100, disp=0) + results[lag] = getattr(fit, ic) + bestic, bestlag = min((res, k) for k, res in iteritems(results)) + + else: # choose by last t-stat. + stop = 1.6448536269514722 # for t-stat, norm.ppf(.95) + for lag in range(maxlag, k - 1, -1): + # have to reinstantiate the model to keep comparable models + endog_tmp = endog[maxlag - lag:] + fit = AR(endog_tmp).fit(maxlag=lag, method=method, + full_output=0, trend=trend, + maxiter=35, disp=-1) + + bestlag = 0 + if np.abs(fit.tvalues[-1]) >= stop: + bestlag = lag + break + return bestlag + + def fit(self, maxlag=None, method='cmle', ic=None, trend='c', + transparams=True, start_params=None, solver='lbfgs', maxiter=35, + full_output=1, disp=1, callback=None, **kwargs): + """ + Fit the unconditional maximum likelihood of an AR(p) process. + + Parameters + ---------- + maxlag : int + If `ic` is None, then maxlag is the lag length used in fit. If + `ic` is specified then maxlag is the highest lag order used to + select the correct lag order. If maxlag is None, the default is + round(12*(nobs/100.)**(1/4.)) + method : str {'cmle', 'mle'}, optional + cmle - Conditional maximum likelihood using OLS + mle - Unconditional (exact) maximum likelihood. See `solver` + and the Notes. + ic : str {'aic','bic','hic','t-stat'} + Criterion used for selecting the optimal lag length. + aic - Akaike Information Criterion + bic - Bayes Information Criterion + t-stat - Based on last lag + hqic - Hannan-Quinn Information Criterion + If any of the information criteria are selected, the lag length + which results in the lowest value is selected. If t-stat, the + model starts with maxlag and drops a lag until the highest lag + has a t-stat that is significant at the 95 % level. + trend : str {'c','nc'} + Whether to include a constant or not. 'c' - include constant. + 'nc' - no constant. + + The below can be specified if method is 'mle' + + transparams : bool, optional + Whether or not to transform the parameters to ensure stationarity. + Uses the transformation suggested in Jones (1980). + start_params : array-like, optional + A first guess on the parameters. Default is cmle estimates. + solver : str or None, optional + Solver to be used if method is 'mle'. The default is 'lbfgs' + (limited memory Broyden-Fletcher-Goldfarb-Shanno). Other choices + are 'bfgs', 'newton' (Newton-Raphson), 'nm' (Nelder-Mead), + 'cg' - (conjugate gradient), 'ncg' (non-conjugate gradient), + and 'powell'. + maxiter : int, optional + The maximum number of function evaluations. Default is 35. + tol : float + The convergence tolerance. Default is 1e-08. + full_output : bool, optional + If True, all output from solver will be available in + the Results object's mle_retvals attribute. Output is dependent + on the solver. See Notes for more information. + disp : bool, optional + If True, convergence information is output. + callback : function, optional + Called after each iteration as callback(xk) where xk is the current + parameter vector. + kwargs + See Notes for keyword arguments that can be passed to fit. + + References + ---------- + Jones, R.H. 1980 "Maximum likelihood fitting of ARMA models to time + series with missing observations." `Technometrics`. 22.3. + 389-95. + + See Also + -------- + statsmodels.base.model.LikelihoodModel.fit + """ + method = method.lower() + if method not in ['cmle', 'yw', 'mle']: + raise ValueError("Method %s not recognized" % method) + self.method = method + self.trend = trend + self.transparams = transparams + nobs = len(self.endog) # overwritten if method is 'cmle' + endog = self.endog + + if maxlag is None: + maxlag = int(round(12*(nobs/100.)**(1/4.))) + k_ar = maxlag # stays this if ic is None + + # select lag length + if ic is not None: + ic = ic.lower() + if ic not in ['aic', 'bic', 'hqic', 't-stat']: + raise ValueError("ic option %s not understood" % ic) + k_ar = self.select_order(k_ar, ic, trend, method) + + self.k_ar = k_ar # change to what was chosen by ic + + # redo estimation for best lag + # make LHS + Y = endog[k_ar:, :] + # make lagged RHS + X = self._stackX(k_ar, trend) # sets self.k_trend + k_trend = self.k_trend + self.exog_names = util.make_lag_names(self.endog_names, k_ar, k_trend) + self.Y = Y + self.X = X + + if method == "cmle": # do OLS + arfit = OLS(Y, X).fit() + params = arfit.params + self.nobs = nobs - k_ar + self.sigma2 = arfit.ssr/arfit.nobs # needed for predict fcasterr + + elif method == "mle": + solver = solver.lower() + self.nobs = nobs + if start_params is None: + start_params = OLS(Y, X).fit().params + else: + if len(start_params) != k_trend + k_ar: + raise ValueError("Length of start params is %d. There" + " are %d parameters." % + (len(start_params), k_trend + k_ar)) + start_params = self._invtransparams(start_params) + if solver == 'lbfgs': + kwargs.setdefault('pgtol', 1e-8) + kwargs.setdefault('factr', 1e2) + kwargs.setdefault('m', 12) + kwargs.setdefault('approx_grad', True) + mlefit = super(AR, self).fit(start_params=start_params, + method=solver, maxiter=maxiter, + full_output=full_output, disp=disp, + callback=callback, **kwargs) + + params = mlefit.params + if self.transparams: + params = self._transparams(params) + self.transparams = False # turn off now for other results + + # don't use yw, because we can't estimate the constant + #elif method == "yw": + # params, omega = yule_walker(endog, order=maxlag, + # method="mle", demean=False) + # # how to handle inference after Yule-Walker? + # self.params = params #TODO: don't attach here + # self.omega = omega + + pinv_exog = np.linalg.pinv(X) + normalized_cov_params = np.dot(pinv_exog, pinv_exog.T) + arfit = ARResults(self, params, normalized_cov_params) + if method == 'mle' and full_output: + arfit.mle_retvals = mlefit.mle_retvals + arfit.mle_settings = mlefit.mle_settings + return ARResultsWrapper(arfit) + + +class ARResults(tsbase.TimeSeriesModelResults): + """ + Class to hold results from fitting an AR model. + + Parameters + ---------- + model : AR Model instance + Reference to the model that is fit. + params : array + The fitted parameters from the AR Model. + normalized_cov_params : array + inv(dot(X.T,X)) where X is the lagged values. + scale : float, optional + An estimate of the scale of the model. + + Attributes + ---------- + + aic : float + Akaike Information Criterion using Lutkephol's definition. + :math:`log(sigma) + 2*(1 + k_ar + k_trend)/nobs` + bic : float + Bayes Information Criterion + :math:`\\log(\\sigma) + (1 + k_ar + k_trend)*\\log(nobs)/nobs` + bse : array + The standard errors of the estimated parameters. If `method` is 'cmle', + then the standard errors that are returned are the OLS standard errors + of the coefficients. If the `method` is 'mle' then they are computed + using the numerical Hessian. + fittedvalues : array + The in-sample predicted values of the fitted AR model. The `k_ar` + initial values are computed via the Kalman Filter if the model is + fit by `mle`. + fpe : float + Final prediction error using Lütkepohl's definition + ((n_totobs+k_trend)/(n_totobs-k_ar-k_trend))*sigma + hqic : float + Hannan-Quinn Information Criterion. + k_ar : float + Lag length. Sometimes used as `p` in the docs. + k_trend : float + The number of trend terms included. 'nc'=0, 'c'=1. + llf : float + The loglikelihood of the model evaluated at `params`. See `AR.loglike` + model : AR model instance + A reference to the fitted AR model. + nobs : float + The number of available observations `nobs` - `k_ar` + n_totobs : float + The number of total observations in `endog`. Sometimes `n` in the docs. + params : array + The fitted parameters of the model. + pvalues : array + The p values associated with the standard errors. + resid : array + The residuals of the model. If the model is fit by 'mle' then the + pre-sample residuals are calculated using fittedvalues from the Kalman + Filter. + roots : array + The roots of the AR process are the solution to + (1 - arparams[0]*z - arparams[1]*z**2 -...- arparams[p-1]*z**k_ar) = 0 + Stability requires that the roots in modulus lie outside the unit + circle. + scale : float + Same as sigma2 + sigma2 : float + The variance of the innovations (residuals). + trendorder : int + The polynomial order of the trend. 'nc' = None, 'c' or 't' = 0, + 'ct' = 1, etc. + tvalues : array + The t-values associated with `params`. + """ + + _cache = {} # for scale setter + + def __init__(self, model, params, normalized_cov_params=None, scale=1.): + super(ARResults, self).__init__(model, params, normalized_cov_params, + scale) + self._cache = {} + self.nobs = model.nobs + n_totobs = len(model.endog) + self.n_totobs = n_totobs + self.X = model.X # copy? + self.Y = model.Y + k_ar = model.k_ar + self.k_ar = k_ar + k_trend = model.k_trend + self.k_trend = k_trend + trendorder = None + if k_trend > 0: + trendorder = k_trend - 1 + self.trendorder = trendorder + #TODO: cmle vs mle? + self.df_model = k_ar + k_trend + self.df_resid = self.model.df_resid = n_totobs - self.df_model + + @cache_writable() + def sigma2(self): + model = self.model + if model.method == "cmle": # do DOF correction + return 1. / self.nobs * sumofsq(self.resid) + else: + return self.model.sigma2 + + @cache_writable() # for compatability with RegressionResults + def scale(self): + return self.sigma2 + + @cache_readonly + def bse(self): # allow user to specify? + if self.model.method == "cmle": # uses different scale/sigma def. + resid = self.resid + ssr = np.dot(resid, resid) + ols_scale = ssr / (self.nobs - self.k_ar - self.k_trend) + return np.sqrt(np.diag(self.cov_params(scale=ols_scale))) + else: + hess = approx_hess(self.params, self.model.loglike) + return np.sqrt(np.diag(-np.linalg.inv(hess))) + + @cache_readonly + def pvalues(self): + return norm.sf(np.abs(self.tvalues))*2 + + @cache_readonly + def aic(self): + #JP: this is based on loglike with dropped constant terms ? + # Lutkepohl + #return np.log(self.sigma2) + 1./self.model.nobs * self.k_ar + # Include constant as estimated free parameter and double the loss + return np.log(self.sigma2) + 2 * (1 + self.df_model)/self.nobs + # Stata defintion + #nobs = self.nobs + #return -2 * self.llf/nobs + 2 * (self.k_ar+self.k_trend)/nobs + + @cache_readonly + def hqic(self): + nobs = self.nobs + # Lutkepohl + # return np.log(self.sigma2)+ 2 * np.log(np.log(nobs))/nobs * self.k_ar + # R uses all estimated parameters rather than just lags + return (np.log(self.sigma2) + 2 * np.log(np.log(nobs))/nobs * + (1 + self.df_model)) + # Stata + #nobs = self.nobs + #return -2 * self.llf/nobs + 2 * np.log(np.log(nobs))/nobs * \ + # (self.k_ar + self.k_trend) + + @cache_readonly + def fpe(self): + nobs = self.nobs + df_model = self.df_model + # Lutkepohl + return ((nobs+df_model)/(nobs-df_model))*self.sigma2 + + @cache_readonly + def bic(self): + nobs = self.nobs + # Lutkepohl + #return np.log(self.sigma2) + np.log(nobs)/nobs * self.k_ar + # Include constant as est. free parameter + return np.log(self.sigma2) + (1 + self.df_model) * np.log(nobs)/nobs + # Stata + # return -2 * self.llf/nobs + np.log(nobs)/nobs * (self.k_ar + \ + # self.k_trend) + + @cache_readonly + def resid(self): + # NOTE: uses fittedvalues because it calculate presample values for mle + model = self.model + endog = model.endog.squeeze() + if model.method == "cmle": # elimate pre-sample + return endog[self.k_ar:] - self.fittedvalues + else: + return model.endog.squeeze() - self.fittedvalues + + #def ssr(self): + # resid = self.resid + # return np.dot(resid, resid) + + @cache_readonly + def roots(self): + k = self.k_trend + return np.roots(np.r_[1, -self.params[k:]]) ** -1 + + @cache_readonly + def fittedvalues(self): + return self.model.predict(self.params) + + def predict(self, start=None, end=None, dynamic=False): + params = self.params + predictedvalues = self.model.predict(params, start, end, dynamic) + return predictedvalues + # TODO: consider returning forecast errors and confidence intervals? + + # Same docstring as AR.predict, but with "params" parameter removed + preddoc = AR.predict.__doc__.split('\n') + predict.__doc__ = '\n'.join(preddoc[:5] + preddoc[7:]) + + +class ARResultsWrapper(wrap.ResultsWrapper): + _attrs = {} + _wrap_attrs = wrap.union_dicts(tsbase.TimeSeriesResultsWrapper._wrap_attrs, + _attrs) + _methods = {} + _wrap_methods = wrap.union_dicts( + tsbase.TimeSeriesResultsWrapper._wrap_methods, _methods) +wrap.populate_wrapper(ARResultsWrapper, ARResults) # noqa:E305 + + +if __name__ == "__main__": + import statsmodels.api as sm + sunspots = sm.datasets.sunspots.load(as_pandas=False) +# Why does R demean the data by defaut? + ar_ols = AR(sunspots.endog) + res_ols = ar_ols.fit(maxlag=9) + ar_mle = AR(sunspots.endog) + res_mle_bfgs = ar_mle.fit(maxlag=9, method="mle", solver="bfgs", + maxiter=500, gtol=1e-10) +# res_mle2 = ar_mle.fit(maxlag=1, method="mle", maxiter=500, penalty=True, +# tol=1e-13) + +# ar_yw = AR(sunspots.endog) +# res_yw = ar_yw.fit(maxlag=4, method="yw") + +# # Timings versus talkbox +# from timeit import default_timer as timer +# print "Time AR fit vs. talkbox" +# # generate a long series of AR(2) data +# +# nobs = 1000000 +# y = np.empty(nobs) +# y[0:2] = 0 +# for i in range(2,nobs): +# y[i] = .25 * y[i-1] - .75 * y[i-2] + np.random.rand() +# +# mod_sm = AR(y) +# t = timer() +# res_sm = mod_sm.fit(method="yw", trend="nc", demean=False, maxlag=2) +# t_end = timer() +# print str(t_end - t) + " seconds for sm.AR with yule-walker, 2 lags" +# try: +# import scikits.talkbox as tb +# except: +# raise ImportError("You need scikits.talkbox installed for timings") +# t = timer() +# mod_tb = tb.lpc(y, 2) +# t_end = timer() +# print str(t_end - t) + " seconds for talkbox.lpc" +# print """For higher lag lengths ours quickly fills up memory and starts +#thrashing the swap. Should we include talkbox C code or Cythonize the +#Levinson recursion algorithm?""" + + ## Try with a pandas series + import pandas + import scikits.timeseries as ts + d1 = ts.Date(year=1700, freq='A') + #NOTE: have to have yearBegin offset for annual data until parser rewrite + #should this be up to the user, or should it be done in TSM init? + #NOTE: not anymore, it's end of year now + ts_dr = ts.date_array(start_date=d1, length=len(sunspots.endog)) + pandas_dr = pandas.DatetimeIndex(start=d1.datetime, + periods=len(sunspots.endog), + freq='A-DEC') + #pandas_dr = pandas_dr.shift(-1, pandas.datetools.yearBegin) + + dates = np.arange(1700, 1700 + len(sunspots.endog)) + dates = ts.date_array(dates, freq='A') + #sunspots = pandas.Series(sunspots.endog, index=dates) + + #NOTE: pandas only does business days for dates it looks like + import datetime + dt_dates = np.asarray(lmap(datetime.datetime.fromordinal, + ts_dr.toordinal().astype(int))) + sunspots = pandas.Series(sunspots.endog, index=dt_dates) + + #NOTE: pandas can't handle pre-1900 dates + mod = AR(sunspots, freq='A') + res = mod.fit(method='mle', maxlag=9) + +# some data for an example in Box Jenkins + IBM = np.asarray([460, 457, 452, 459, 462, 459, 463, 479, 493, 490.]) + w = np.diff(IBM) + theta = .5 diff --git a/statsmodels/tsa/arima_model.py b/statsmodels/tsa/arima_model.py new file mode 100644 index 0000000..25bcd05 --- /dev/null +++ b/statsmodels/tsa/arima_model.py @@ -0,0 +1,1999 @@ +# Note: The information criteria add 1 to the number of parameters +# whenever the model has an AR or MA term since, in principle, +# the variance could be treated as a free parameter and restricted +# This code does not allow this, but it adds consistency with other +# packages such as gretl and X12-ARIMA + +from __future__ import absolute_import +from statsmodels.compat.python import string_types, range, long +# for 2to3 with extensions + +from datetime import datetime + +import numpy as np +from scipy import optimize +from scipy.stats import t, norm +from scipy.signal import lfilter +from numpy import dot, log, zeros, pi +from numpy.linalg import inv + +from statsmodels.tools.decorators import cache_readonly +import statsmodels.tsa.base.tsa_model as tsbase +import statsmodels.base.wrapper as wrap +from statsmodels.regression.linear_model import yule_walker, OLS +from statsmodels.tsa.tsatools import (lagmat, add_trend, + _ar_transparams, _ar_invtransparams, + _ma_transparams, _ma_invtransparams, + unintegrate, unintegrate_levels) +from statsmodels.tsa.vector_ar import util +from statsmodels.tsa.ar_model import AR +from statsmodels.tsa.arima_process import arma2ma +from statsmodels.tools.numdiff import approx_hess_cs, approx_fprime_cs +from statsmodels.tsa.kalmanf import KalmanFilter + +_armax_notes = r""" + Notes + ----- + If exogenous variables are given, then the model that is fit is + + .. math:: + + \phi(L)(y_t - X_t\beta) = \theta(L)\epsilon_t + + where :math:`\phi` and :math:`\theta` are polynomials in the lag + operator, :math:`L`. This is the regression model with ARMA errors, + or ARMAX model. This specification is used, whether or not the model + is fit using conditional sum of square or maximum-likelihood, using + the `method` argument in + :meth:`statsmodels.tsa.arima_model.%(Model)s.fit`. Therefore, for + now, `css` and `mle` refer to estimation methods only. This may + change for the case of the `css` model in future versions. +""" + +_arma_params = \ +"""endog : array-like + The endogenous variable. + order : iterable + The (p,q) order of the model for the number of AR parameters, + differences, and MA parameters to use. + exog : array-like, optional + An optional array of exogenous variables. This should *not* include a + constant or trend. You can specify this in the `fit` method.""" + +_arma_model = "Autoregressive Moving Average ARMA(p,q) Model" + +_arima_model = "Autoregressive Integrated Moving Average ARIMA(p,d,q) Model" + +_arima_params = \ +"""endog : array-like + The endogenous variable. + order : iterable + The (p,d,q) order of the model for the number of AR parameters, + differences, and MA parameters to use. + exog : array-like, optional + An optional array of exogenous variables. This should *not* include a + constant or trend. You can specify this in the `fit` method.""" + +_predict_notes = """ + Notes + ----- + Use the results predict method instead. +""" + +_results_notes = """ + Notes + ----- + It is recommended to use dates with the time-series models, as the + below will probably make clear. However, if ARIMA is used without + dates and/or `start` and `end` are given as indices, then these + indices are in terms of the *original*, undifferenced series. Ie., + given some undifferenced observations:: + + 1970Q1, 1 + 1970Q2, 1.5 + 1970Q3, 1.25 + 1970Q4, 2.25 + 1971Q1, 1.2 + 1971Q2, 4.1 + + 1970Q1 is observation 0 in the original series. However, if we fit an + ARIMA(p,1,q) model then we lose this first observation through + differencing. Therefore, the first observation we can forecast (if + using exact MLE) is index 1. In the differenced series this is index + 0, but we refer to it as 1 from the original series. +""" + +_predict = """ + %(Model)s model in-sample and out-of-sample prediction + + Parameters + ---------- + %(params)s + start : int, str, or datetime + Zero-indexed observation number at which to start forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. + end : int, str, or datetime + Zero-indexed observation number at which to end forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. However, if the dates index does not + have a fixed frequency, end must be an integer index if you + want out of sample prediction. + exog : array-like, optional + If the model is an ARMAX and out-of-sample forecasting is + requested, exog must be given. Note that you'll need to pass + `k_ar` additional lags for any exogenous variables. E.g., if you + fit an ARMAX(2, q) model and want to predict 5 steps, you need 7 + observations to do this. + dynamic : bool, optional + The `dynamic` keyword affects in-sample prediction. If dynamic + is False, then the in-sample lagged values are used for + prediction. If `dynamic` is True, then in-sample forecasts are + used in place of lagged dependent variables. The first forecasted + value is `start`. + %(extra_params)s + + Returns + ------- + %(returns)s + %(extra_section)s +""" + +_predict_returns = """predict : array + The predicted values. + +""" + +_arma_predict = _predict % {"Model" : "ARMA", + "params" : """params : array-like + The fitted parameters of the model.""", + "extra_params" : "", + "returns" : _predict_returns, + "extra_section" : _predict_notes} + +_arma_results_predict = _predict % {"Model" : "ARMA", "params" : "", + "extra_params" : "", + "returns" : _predict_returns, + "extra_section" : _results_notes} +_arima_extras = """typ : str {'linear', 'levels'} + + - 'linear' : Linear prediction in terms of the differenced + endogenous variables. + - 'levels' : Predict the levels of the original endogenous + variables.\n""" + +_arima_predict = _predict % {"Model" : "ARIMA", + "params" : """params : array-like + The fitted parameters of the model.""", + "extra_params" : _arima_extras, + "returns" : _predict_returns, + "extra_section" : _predict_notes} + +_arima_results_predict = _predict % {"Model" : "ARIMA", + "params" : "", + "extra_params" :_arima_extras, + "returns" : _predict_returns, + "extra_section" : _results_notes} + +_arima_plot_predict_example = """ Examples + -------- + >>> import statsmodels.api as sm + >>> import matplotlib.pyplot as plt + >>> import pandas as pd + >>> + >>> dta = sm.datasets.sunspots.load_pandas().data[['SUNACTIVITY']] + >>> dta.index = pd.date_range(start='1700', end='2009', freq='A') + >>> res = sm.tsa.ARMA(dta, (3, 0)).fit() + >>> fig, ax = plt.subplots() + >>> ax = dta.loc['1950':].plot(ax=ax) + >>> fig = res.plot_predict('1990', '2012', dynamic=True, ax=ax, + ... plot_insample=False) + >>> plt.show() + + .. plot:: plots/arma_predict_plot.py +""" + +_plot_extras = """alpha : float, optional + The confidence intervals for the forecasts are (1 - alpha)% + plot_insample : bool, optional + Whether to plot the in-sample series. Default is True. + ax : matplotlib.Axes, optional + Existing axes to plot with.""" + +_plot_predict = (""" + Plot forecasts + """ + '\n'.join(_predict.split('\n')[2:])) % { + "params": "", + "extra_params": _plot_extras, + "returns": """fig : matplotlib.Figure + The plotted Figure instance""", + "extra_section": ('\n' + _arima_plot_predict_example + + '\n' + _results_notes) +} + +_arima_plot_predict = (""" + Plot forecasts + """ + '\n'.join(_predict.split('\n')[2:])) % { + "params" : "", + "extra_params" : _plot_extras, + "returns" : """fig : matplotlib.Figure + The plotted Figure instance""", + "extra_section" : ('\n' + _arima_plot_predict_example + + '\n' + + '\n'.join(_results_notes.split('\n')[:3]) + + (""" + This is hard-coded to only allow plotting of the forecasts in levels. +""") + + '\n'.join(_results_notes.split('\n')[3:])) + } + + +def cumsum_n(x, n): + for _ in range(n): + x = np.cumsum(x) + + return x + + +def _check_arima_start(start, k_ar, k_diff, method, dynamic): + if start < 0: + raise ValueError("The start index %d of the original series " + "has been differenced away" % start) + elif (dynamic or 'mle' not in method) and start < k_ar: + raise ValueError("Start must be >= k_ar for conditional MLE " + "or dynamic forecast. Got %d" % start) + + +def _get_predict_out_of_sample(endog, p, q, k_trend, k_exog, start, errors, + trendparam, exparams, arparams, maparams, steps, + method, exog=None): + """ + Returns endog, resid, mu of appropriate length for out of sample + prediction. + """ + if q: + resid = np.zeros(q) + if start and 'mle' in method or (start == p and not start == 0): + resid[:q] = errors[start-q:start] + elif start: + resid[:q] = errors[start-q-p:start-p] + else: + resid[:q] = errors[-q:] + else: + resid = None + + y = endog + if k_trend == 1: + # use expectation not constant + if k_exog > 0: + #TODO: technically should only hold for MLE not + # conditional model. See #274. + # ensure 2-d for conformability + if np.ndim(exog) == 1 and k_exog == 1: + # have a 1d series of observations -> 2d + exog = exog[:, None] + elif np.ndim(exog) == 1: + # should have a 1d row of exog -> 2d + if len(exog) != k_exog: + raise ValueError("1d exog given and len(exog) != k_exog") + exog = exog[None, :] + X = lagmat(np.dot(exog, exparams), p, original='in', trim='both') + mu = trendparam * (1 - arparams.sum()) + # arparams were reversed in unpack for ease later + mu = mu + (np.r_[1, -arparams[::-1]] * X).sum(1)[:, None] + else: + mu = trendparam * (1 - arparams.sum()) + mu = np.array([mu]*steps) + elif k_exog > 0: + X = np.dot(exog, exparams) + #NOTE: you shouldn't have to give in-sample exog! + X = lagmat(X, p, original='in', trim='both') + mu = (np.r_[1, -arparams[::-1]] * X).sum(1)[:, None] + else: + mu = np.zeros(steps) + + endog = np.zeros(p + steps - 1) + + if p and start: + endog[:p] = y[start-p:start] + elif p: + endog[:p] = y[-p:] + + return endog, resid, mu + + +def _arma_predict_out_of_sample(params, steps, errors, p, q, k_trend, k_exog, + endog, exog=None, start=0, method='mle'): + (trendparam, exparams, + arparams, maparams) = _unpack_params(params, (p, q), k_trend, + k_exog, reverse=True) + endog, resid, mu = _get_predict_out_of_sample(endog, p, q, k_trend, k_exog, + start, errors, trendparam, + exparams, arparams, + maparams, steps, method, + exog) + + forecast = np.zeros(steps) + if steps == 1: + if q: + return mu[0] + np.dot(arparams, endog[:p]) + np.dot(maparams, + resid[:q]) + else: + return mu[0] + np.dot(arparams, endog[:p]) + + if q: + i = 0 # if q == 1 + else: + i = -1 + + for i in range(min(q, steps - 1)): + fcast = (mu[i] + np.dot(arparams, endog[i:i + p]) + + np.dot(maparams[:q - i], resid[i:i + q])) + forecast[i] = fcast + endog[i+p] = fcast + + for i in range(i + 1, steps - 1): + fcast = mu[i] + np.dot(arparams, endog[i:i+p]) + forecast[i] = fcast + endog[i+p] = fcast + + #need to do one more without updating endog + forecast[steps - 1] = mu[steps - 1] + np.dot(arparams, endog[steps - 1:]) + return forecast + + +def _arma_predict_in_sample(start, end, endog, resid, k_ar, method): + """ + Pre- and in-sample fitting for ARMA. + """ + if 'mle' in method: + fittedvalues = endog - resid # get them all then trim + else: + fittedvalues = endog[k_ar:] - resid + + fv_start = start + if 'mle' not in method: + fv_start -= k_ar # start is in terms of endog index + fv_end = min(len(fittedvalues), end + 1) + return fittedvalues[fv_start:fv_end] + + +def _unpack_params(params, order, k_trend, k_exog, reverse=False): + p, q = order + k = k_trend + k_exog + maparams = params[k+p:] + arparams = params[k:k+p] + trend = params[:k_trend] + exparams = params[k_trend:k] + if reverse: + return trend, exparams, arparams[::-1], maparams[::-1] + return trend, exparams, arparams, maparams + + +def _unpack_order(order): + k_ar, k_ma, k = order + k_lags = max(k_ar, k_ma+1) + return k_ar, k_ma, order, k_lags + + +def _make_arma_names(data, k_trend, order, exog_names): + k_ar, k_ma = order + exog_names = exog_names or [] + ar_lag_names = util.make_lag_names([data.ynames], k_ar, 0) + ar_lag_names = [''.join(('ar.', i)) for i in ar_lag_names] + ma_lag_names = util.make_lag_names([data.ynames], k_ma, 0) + ma_lag_names = [''.join(('ma.', i)) for i in ma_lag_names] + trend_name = util.make_lag_names('', 0, k_trend) + + exog_names = trend_name + exog_names + ar_lag_names + ma_lag_names + return exog_names + + +def _make_arma_exog(endog, exog, trend): + k_trend = 1 # overwritten if no constant + if exog is None and trend == 'c': # constant only + exog = np.ones((len(endog), 1)) + elif exog is not None and trend == 'c': # constant plus exogenous + exog = add_trend(exog, trend='c', prepend=True, has_constant='raise') + elif exog is not None and trend == 'nc': + # make sure it's not holding constant from last run + if exog.var() == 0: + exog = None + k_trend = 0 + if trend == 'nc': + k_trend = 0 + return k_trend, exog + + +def _check_estimable(nobs, n_params): + if nobs <= n_params: + raise ValueError("Insufficient degrees of freedom to estimate") + + +class ARMA(tsbase.TimeSeriesModel): + + __doc__ = tsbase._tsa_doc % {"model" : _arma_model, + "params" : _arma_params, "extra_params" : "", + "extra_sections" : _armax_notes % + {"Model" : "ARMA"}} + + def __init__(self, endog, order, exog=None, dates=None, freq=None, + missing='none'): + super(ARMA, self).__init__(endog, exog, dates, freq, missing=missing) + # GH 2575 + _endog = endog if hasattr(endog, 'ndim') else np.asarray(endog) + if (_endog.ndim == 2 and _endog.shape[1] != 1) or _endog.ndim > 2: + raise ValueError('endog must be 1-d or 2-d with 1 column') + exog = self.data.exog # get it after it's gone through processing + _check_estimable(len(self.endog), sum(order)) + self.k_ar = k_ar = order[0] + self.k_ma = k_ma = order[1] + self.k_lags = max(k_ar, k_ma+1) + if exog is not None: + if exog.ndim == 1: + exog = exog[:, None] + k_exog = exog.shape[1] # number of exog. variables excl. const + else: + k_exog = 0 + self.k_exog = k_exog + self._orig_exog_names = self.exog_names + + def _fit_start_params_hr(self, order, start_ar_lags=None): + """ + Get starting parameters for fit. + + Parameters + ---------- + order : iterable + (p,q,k) - AR lags, MA lags, and number of exogenous variables + including the constant. + start_ar_lags : int, optional + If start_ar_lags is not None, rather than fitting an AR process + according to best BIC, fits an AR process with a lag length equal + to start_ar_lags. + + Returns + ------- + start_params : array + A first guess at the starting parameters. + + Notes + ----- + If necessary, fits an AR process with the laglength start_ar_lags, or + selected according to best BIC if start_ar_lags is None. Obtain the + residuals. Then fit an ARMA(p,q) model via OLS using these residuals + for a first approximation. Uses a separate OLS regression to find the + coefficients of exogenous variables. + + References + ---------- + Hannan, E.J. and Rissanen, J. 1982. "Recursive estimation of mixed + autoregressive-moving average order." `Biometrika`. 69.1. + + Durbin, J. 1960. "The Fitting of Time-Series Models." + `Review of the International Statistical Institute`. Vol. 28, No. 3 + """ + p, q, k = order + start_params = zeros((p+q+k)) + # make copy of endog because overwritten + endog = np.array(self.endog, np.float64) + exog = self.exog + if k != 0: + ols_params = OLS(endog, exog).fit().params + start_params[:k] = ols_params + endog -= np.dot(exog, ols_params).squeeze() + if q != 0: + if p != 0: + # make sure we don't run into small data problems in AR fit + nobs = len(endog) + if start_ar_lags is None: + maxlag = int(round(12*(nobs/100.)**(1/4.))) + if maxlag >= nobs: + maxlag = nobs - 1 + armod = AR(endog).fit(ic='bic', trend='nc', maxlag=maxlag) + else: + if start_ar_lags >= nobs: + start_ar_lags = nobs - 1 + armod = AR(endog).fit(trend='nc', maxlag=start_ar_lags) + arcoefs_tmp = armod.params + p_tmp = armod.k_ar + # it's possible in small samples that optimal lag-order + # doesn't leave enough obs. No consistent way to fix. + if p_tmp + q >= len(endog): + raise ValueError("Proper starting parameters cannot" + " be found for this order with this " + "number of observations. Use the " + "start_params argument, or set " + "start_ar_lags to an integer less than " + "len(endog) - q.") + resid = endog[p_tmp:] - np.dot(lagmat(endog, p_tmp, + trim='both'), + arcoefs_tmp) + if p < p_tmp + q: + endog_start = p_tmp + q - p + resid_start = 0 + else: + endog_start = 0 + resid_start = p - p_tmp - q + lag_endog = lagmat(endog, p, 'both')[endog_start:] + lag_resid = lagmat(resid, q, 'both')[resid_start:] + # stack ar lags and resids + X = np.column_stack((lag_endog, lag_resid)) + coefs = OLS(endog[max(p_tmp + q, p):], X).fit().params + start_params[k:k+p+q] = coefs + else: + start_params[k+p:k+p+q] = yule_walker(endog, order=q)[0] + if q == 0 and p != 0: + arcoefs = yule_walker(endog, order=p)[0] + start_params[k:k+p] = arcoefs + + # check AR coefficients + if p and not np.all(np.abs(np.roots(np.r_[1, -start_params[k:k + p]] + )) < 1): + raise ValueError("The computed initial AR coefficients are not " + "stationary\nYou should induce stationarity, " + "choose a different model order, or you can\n" + "pass your own start_params.") + # check MA coefficients + elif q and not np.all(np.abs(np.roots(np.r_[1, start_params[k + p:]] + )) < 1): + raise ValueError("The computed initial MA coefficients are not " + "invertible\nYou should induce invertibility, " + "choose a different model order, or you can\n" + "pass your own start_params.") + + # check MA coefficients + return start_params + + def _fit_start_params(self, order, method, start_ar_lags=None): + if method != 'css-mle': # use Hannan-Rissanen to get start params + start_params = self._fit_start_params_hr(order, start_ar_lags) + else: # use CSS to get start params + func = lambda params: -self.loglike_css(params) + #start_params = [.1]*(k_ar+k_ma+k_exog) # different one for k? + start_params = self._fit_start_params_hr(order, start_ar_lags) + if self.transparams: + start_params = self._invtransparams(start_params) + bounds = [(None,)*2]*sum(order) + mlefit = optimize.fmin_l_bfgs_b(func, start_params, + approx_grad=True, m=12, + pgtol=1e-7, factr=1e3, + bounds=bounds, iprint=-1) + start_params = mlefit[0] + if self.transparams: + start_params = self._transparams(start_params) + return start_params + + def score(self, params): + """ + Compute the score function at params. + + Notes + ----- + This is a numerical approximation. + """ + return approx_fprime_cs(params, self.loglike, args=(False,)) + + def hessian(self, params): + """ + Compute the Hessian at params, + + Notes + ----- + This is a numerical approximation. + """ + return approx_hess_cs(params, self.loglike, args=(False,)) + + def _transparams(self, params): + """ + Transforms params to induce stationarity/invertability. + + Reference + --------- + Jones(1980) + """ + k_ar, k_ma = self.k_ar, self.k_ma + k = self.k_exog + self.k_trend + newparams = np.zeros_like(params) + + # just copy exogenous parameters + if k != 0: + newparams[:k] = params[:k] + + # AR Coeffs + if k_ar != 0: + newparams[k:k+k_ar] = _ar_transparams(params[k:k+k_ar].copy()) + + # MA Coeffs + if k_ma != 0: + newparams[k+k_ar:] = _ma_transparams(params[k+k_ar:].copy()) + return newparams + + def _invtransparams(self, start_params): + """ + Inverse of the Jones reparameterization + """ + k_ar, k_ma = self.k_ar, self.k_ma + k = self.k_exog + self.k_trend + newparams = start_params.copy() + arcoefs = newparams[k:k+k_ar] + macoefs = newparams[k+k_ar:] + # AR coeffs + if k_ar != 0: + newparams[k:k+k_ar] = _ar_invtransparams(arcoefs) + + # MA coeffs + if k_ma != 0: + newparams[k+k_ar:k+k_ar+k_ma] = _ma_invtransparams(macoefs) + return newparams + + def _get_prediction_index(self, start, end, dynamic, index=None): + method = getattr(self, 'method', 'mle') + k_ar = getattr(self, 'k_ar', 0) + k_diff = getattr(self, 'k_diff', 0) + + if start is None: + if 'mle' in method and not dynamic: + start = 0 + else: + start = k_ar + start = self._index[start] + + start, end, out_of_sample, prediction_index = ( + super(ARMA, self)._get_prediction_index(start, end, index)) + + # This replaces the _validate() call + if 'mle' not in method and start < k_ar - k_diff: + raise ValueError("Start must be >= k_ar for conditional " + "MLE or dynamic forecast. Got %s" % start) + # Other validation + _check_arima_start(start, k_ar, k_diff, method, dynamic) + + return start, end, out_of_sample, prediction_index + + def geterrors(self, params): + """ + Get the errors of the ARMA process. + + Parameters + ---------- + params : array-like + The fitted ARMA parameters + order : array-like + 3 item iterable, with the number of AR, MA, and exogenous + parameters, including the trend + """ + + # start, end, out_of_sample, prediction_index = ( + # self._get_prediction_index(start, end, index)) + params = np.asarray(params) + k_ar, k_ma = self.k_ar, self.k_ma + k = self.k_exog + self.k_trend + + method = getattr(self, 'method', 'mle') + if 'mle' in method: # use KalmanFilter to get errors + (y, k, nobs, k_ar, k_ma, k_lags, newparams, Z_mat, m, R_mat, + T_mat, paramsdtype) = KalmanFilter._init_kalman_state(params, + self) + + errors = KalmanFilter.geterrors(y, k, k_ar, k_ma, k_lags, nobs, + Z_mat, m, R_mat, T_mat, + paramsdtype) + if isinstance(errors, tuple): + errors = errors[0] # non-cython version returns a tuple + else: # use scipy.signal.lfilter + y = self.endog.copy() + k = self.k_exog + self.k_trend + if k > 0: + y -= dot(self.exog, params[:k]) + + k_ar = self.k_ar + k_ma = self.k_ma + + (trendparams, exparams, + arparams, maparams) = _unpack_params(params, (k_ar, k_ma), + self.k_trend, self.k_exog, + reverse=False) + b, a = np.r_[1, -arparams], np.r_[1, maparams] + zi = zeros((max(k_ar, k_ma))) + for i in range(k_ar): + zi[i] = sum(-b[:i+1][::-1]*y[:i+1]) + e = lfilter(b, a, y, zi=zi) + errors = e[0][k_ar:] + return errors.squeeze() + + def predict(self, params, start=None, end=None, exog=None, dynamic=False): + method = getattr(self, 'method', 'mle') # don't assume fit + #params = np.asarray(params) + + # will return an index of a date + start, end, out_of_sample, _ = ( + self._get_prediction_index(start, end, dynamic)) + + if out_of_sample and (exog is None and self.k_exog > 0): + raise ValueError("You must provide exog for ARMAX") + + endog = self.endog + resid = self.geterrors(params) + k_ar = self.k_ar + + if exog is not None: + # Note: we ignore currently the index of exog if it is available + exog = np.asarray(exog) + if self.k_exog == 1 and exog.ndim == 1: + exog = exog[:, None] + + if out_of_sample != 0 and self.k_exog > 0: + # we need the last k_ar exog for the lag-polynomial + if self.k_exog > 0 and k_ar > 0 and not dynamic: + # need the last k_ar exog for the lag-polynomial + exog = np.vstack((self.exog[-k_ar:, self.k_trend:], exog)) + + if dynamic: + if self.k_exog > 0: + # need the last k_ar exog for the lag-polynomial + exog_insample = self.exog[start - k_ar:, self.k_trend:] + if exog is not None: + exog = np.vstack((exog_insample, exog)) + else: + exog = exog_insample + #TODO: now that predict does dynamic in-sample it should + # also return error estimates and confidence intervals + # but how? len(endog) is not tot_obs + out_of_sample += end - start + 1 + return _arma_predict_out_of_sample(params, out_of_sample, resid, + k_ar, self.k_ma, self.k_trend, + self.k_exog, endog, exog, + start, method) + + predictedvalues = _arma_predict_in_sample(start, end, endog, resid, + k_ar, method) + if out_of_sample: + forecastvalues = _arma_predict_out_of_sample(params, out_of_sample, + resid, k_ar, + self.k_ma, + self.k_trend, + self.k_exog, endog, + exog, method=method) + predictedvalues = np.r_[predictedvalues, forecastvalues] + return predictedvalues + predict.__doc__ = _arma_predict + + def loglike(self, params, set_sigma2=True): + """ + Compute the log-likelihood for ARMA(p,q) model + + Notes + ----- + Likelihood used depends on the method set in fit + """ + method = self.method + if method in ['mle', 'css-mle']: + return self.loglike_kalman(params, set_sigma2) + elif method == 'css': + return self.loglike_css(params, set_sigma2) + else: + raise ValueError("Method %s not understood" % method) + + def loglike_kalman(self, params, set_sigma2=True): + """ + Compute exact loglikelihood for ARMA(p,q) model by the Kalman Filter. + """ + return KalmanFilter.loglike(params, self, set_sigma2) + + def loglike_css(self, params, set_sigma2=True): + """ + Conditional Sum of Squares likelihood function. + """ + k_ar = self.k_ar + k_ma = self.k_ma + k = self.k_exog + self.k_trend + y = self.endog.copy().astype(params.dtype) + nobs = self.nobs + # how to handle if empty? + if self.transparams: + newparams = self._transparams(params) + else: + newparams = params + if k > 0: + y -= dot(self.exog, newparams[:k]) + # the order of p determines how many zeros errors to set for lfilter + b, a = np.r_[1, -newparams[k:k + k_ar]], np.r_[1, newparams[k + k_ar:]] + zi = np.zeros((max(k_ar, k_ma)), dtype=params.dtype) + for i in range(k_ar): + zi[i] = sum(-b[:i + 1][::-1] * y[:i + 1]) + errors = lfilter(b, a, y, zi=zi)[0][k_ar:] + + ssr = np.dot(errors, errors) + sigma2 = ssr/nobs + if set_sigma2: + self.sigma2 = sigma2 + llf = -nobs/2.*(log(2*pi) + log(sigma2)) - ssr/(2*sigma2) + return llf + + def fit(self, start_params=None, trend='c', method="css-mle", + transparams=True, solver='lbfgs', maxiter=500, full_output=1, + disp=5, callback=None, start_ar_lags=None, **kwargs): + """ + Fits ARMA(p,q) model using exact maximum likelihood via Kalman filter. + + Parameters + ---------- + start_params : array-like, optional + Starting parameters for ARMA(p,q). If None, the default is given + by ARMA._fit_start_params. See there for more information. + transparams : bool, optional + Whether or not to transform the parameters to ensure stationarity. + Uses the transformation suggested in Jones (1980). If False, + no checking for stationarity or invertibility is done. + method : str {'css-mle','mle','css'} + This is the loglikelihood to maximize. If "css-mle", the + conditional sum of squares likelihood is maximized and its values + are used as starting values for the computation of the exact + likelihood via the Kalman filter. If "mle", the exact likelihood + is maximized via the Kalman Filter. If "css" the conditional sum + of squares likelihood is maximized. All three methods use + `start_params` as starting parameters. See above for more + information. + trend : str {'c','nc'} + Whether to include a constant or not. 'c' includes constant, + 'nc' no constant. + solver : str or None, optional + Solver to be used. The default is 'lbfgs' (limited memory + Broyden-Fletcher-Goldfarb-Shanno). Other choices are 'bfgs', + 'newton' (Newton-Raphson), 'nm' (Nelder-Mead), 'cg' - + (conjugate gradient), 'ncg' (non-conjugate gradient), and + 'powell'. By default, the limited memory BFGS uses m=12 to + approximate the Hessian, projected gradient tolerance of 1e-8 and + factr = 1e2. You can change these by using kwargs. + maxiter : int, optional + The maximum number of function evaluations. Default is 500. + tol : float + The convergence tolerance. Default is 1e-08. + full_output : bool, optional + If True, all output from solver will be available in + the Results object's mle_retvals attribute. Output is dependent + on the solver. See Notes for more information. + disp : int, optional + If True, convergence information is printed. For the default + l_bfgs_b solver, disp controls the frequency of the output during + the iterations. disp < 0 means no output in this case. + callback : function, optional + Called after each iteration as callback(xk) where xk is the current + parameter vector. + start_ar_lags : int, optional + Parameter for fitting start_params. When fitting start_params, + residuals are obtained from an AR fit, then an ARMA(p,q) model is + fit via OLS using these residuals. If start_ar_lags is None, fit + an AR process according to best BIC. If start_ar_lags is not None, + fits an AR process with a lag length equal to start_ar_lags. + See ARMA._fit_start_params_hr for more information. + kwargs + See Notes for keyword arguments that can be passed to fit. + + Returns + ------- + statsmodels.tsa.arima_model.ARMAResults class + + See Also + -------- + statsmodels.base.model.LikelihoodModel.fit : for more information + on using the solvers. + ARMAResults : results class returned by fit + + Notes + ----- + If fit by 'mle', it is assumed for the Kalman Filter that the initial + unknown state is zero, and that the initial variance is + P = dot(inv(identity(m**2)-kron(T,T)),dot(R,R.T).ravel('F')).reshape(r, + r, order = 'F') + + """ + k_ar = self.k_ar + k_ma = self.k_ma + + # enforce invertibility + self.transparams = transparams + + endog, exog = self.endog, self.exog + k_exog = self.k_exog + self.nobs = len(endog) # this is overwritten if method is 'css' + + # (re)set trend and handle exogenous variables + # always pass original exog + k_trend, exog = _make_arma_exog(endog, self.exog, trend) + + # Check has something to estimate + if k_ar == 0 and k_ma == 0 and k_trend == 0 and k_exog == 0: + raise ValueError("Estimation requires the inclusion of least one " + "AR term, MA term, a constant or an exogenous " + "variable.") + + # check again now that we know the trend + _check_estimable(len(endog), k_ar + k_ma + k_exog + k_trend) + + self.k_trend = k_trend + self.exog = exog # overwrites original exog from __init__ + + # (re)set names for this model + self.exog_names = _make_arma_names(self.data, k_trend, + (k_ar, k_ma), self._orig_exog_names) + k = k_trend + k_exog + + # choose objective function + if k_ma == 0 and k_ar == 0: + method = "css" # Always CSS when no AR or MA terms + + self.method = method = method.lower() + + # adjust nobs for css + if method == 'css': + self.nobs = len(self.endog) - k_ar + + if start_params is not None: + start_params = np.asarray(start_params) + + else: # estimate starting parameters + start_params = self._fit_start_params((k_ar, k_ma, k), method, + start_ar_lags) + + if transparams: # transform initial parameters to ensure invertibility + start_params = self._invtransparams(start_params) + + if solver == 'lbfgs': + kwargs.setdefault('pgtol', 1e-8) + kwargs.setdefault('factr', 1e2) + kwargs.setdefault('m', 12) + kwargs.setdefault('approx_grad', True) + mlefit = super(ARMA, self).fit(start_params, method=solver, + maxiter=maxiter, + full_output=full_output, disp=disp, + callback=callback, **kwargs) + params = mlefit.params + + if transparams: # transform parameters back + params = self._transparams(params) + + self.transparams = False # so methods don't expect transf. + + normalized_cov_params = None # TODO: fix this + armafit = ARMAResults(self, params, normalized_cov_params) + armafit.mle_retvals = mlefit.mle_retvals + armafit.mle_settings = mlefit.mle_settings + return ARMAResultsWrapper(armafit) + + # base class of "from_formula" is "class Model(object)" + @classmethod + def from_formula(cls, formula, data, subset=None, drop_cols=None, *args, **kwargs): + raise NotImplementedError("from_formula is not supported" + " for ARMA models.") + + +#NOTE: the length of endog changes when we give a difference to fit +#so model methods are not the same on unfit models as fit ones +#starting to think that order of model should be put in instantiation... +class ARIMA(ARMA): + __doc__ = tsbase._tsa_doc % {"model" : _arima_model, + "params" : _arima_params, "extra_params" : "", + "extra_sections" : _armax_notes % + {"Model" : "ARIMA"}} + + def __new__(cls, endog, order, exog=None, dates=None, freq=None, + missing='none'): + p, d, q = order + if d == 0: # then we just use an ARMA model + return ARMA(endog, (p, q), exog, dates, freq, missing) + else: + mod = super(ARIMA, cls).__new__(cls) + mod.__init__(endog, order, exog, dates, freq, missing) + return mod + + def __getnewargs__(self): + # using same defaults as in __init__ + dates = getattr(self, 'dates', None) + freq = getattr(self, 'freq', None) + missing = getattr(self, 'missing', 'none') + return ((self.endog), + (self.k_lags, self.k_diff, self.k_ma), + self.exog, dates, freq, missing) + + def __init__(self, endog, order, exog=None, dates=None, freq=None, + missing='none'): + p, d, q = order + if d > 2: + #NOTE: to make more general, need to address the d == 2 stuff + # in the predict method + raise ValueError("d > 2 is not supported") + super(ARIMA, self).__init__(endog, (p, q), exog, dates, freq, missing) + self.k_diff = d + self._first_unintegrate = unintegrate_levels(self.endog[:d], d) + self.endog = np.diff(self.endog, n=d) + #NOTE: will check in ARMA but check again since differenced now + _check_estimable(len(self.endog), p+q) + if exog is not None: + self.exog = self.exog[d:] + if d == 1: + self.data.ynames = 'D.' + self.endog_names + else: + self.data.ynames = 'D{0:d}.'.format(d) + self.endog_names + # what about exog, should we difference it automatically before + # super call? + + # Reset index + orig_length = len(self._index) + new_length = self.endog.shape[0] + if self.data.row_labels is not None: + self.data._cache['row_labels'] = ( + self.data.row_labels[orig_length - new_length:]) + if self._index is not None: + if self._index_generated: + self._index = self._index[:-(orig_length - new_length)] + else: + self._index = self._index[orig_length - new_length:] + + def _get_prediction_index(self, start, end, dynamic, index=None): + method = getattr(self, 'method', 'mle') + k_ar = getattr(self, 'k_ar', 0) + k_diff = getattr(self, 'k_diff', 0) + if start is None: + if 'mle' in method and not dynamic: + start = 0 + else: + start = k_ar + start = self._index[start] + elif isinstance(start, (int, long, np.integer)): + start -= k_diff + if start < 0: + raise ValueError('The start index %d of the original series ' + ' has been differenced away' % start) + if isinstance(end, (int, long, np.integer)): + end -= k_diff + + start, end, out_of_sample, prediction_index = ( + super(ARIMA, self)._get_prediction_index(start, end, index)) + + # From _get_predict_end + if 'mle' not in self.method and not dynamic: + end -= k_ar + + # This replaces the _validate() call + if 'mle' not in method and start < k_ar - k_diff: + raise ValueError("Start must be >= k_ar for conditional " + "MLE or dynamic forecast. Got %s" % start) + # Other validation + _check_arima_start(start, k_ar, k_diff, method, dynamic) + + return start, end, out_of_sample, prediction_index + + def fit(self, start_params=None, trend='c', method="css-mle", + transparams=True, solver='lbfgs', maxiter=500, full_output=1, + disp=5, callback=None, start_ar_lags=None, **kwargs): + """ + Fits ARIMA(p,d,q) model by exact maximum likelihood via Kalman filter. + + Parameters + ---------- + start_params : array-like, optional + Starting parameters for ARMA(p,q). If None, the default is given + by ARMA._fit_start_params. See there for more information. + transparams : bool, optional + Whehter or not to transform the parameters to ensure stationarity. + Uses the transformation suggested in Jones (1980). If False, + no checking for stationarity or invertibility is done. + method : str {'css-mle','mle','css'} + This is the loglikelihood to maximize. If "css-mle", the + conditional sum of squares likelihood is maximized and its values + are used as starting values for the computation of the exact + likelihood via the Kalman filter. If "mle", the exact likelihood + is maximized via the Kalman Filter. If "css" the conditional sum + of squares likelihood is maximized. All three methods use + `start_params` as starting parameters. See above for more + information. + trend : str {'c','nc'} + Whether to include a constant or not. 'c' includes constant, + 'nc' no constant. + solver : str or None, optional + Solver to be used. The default is 'lbfgs' (limited memory + Broyden-Fletcher-Goldfarb-Shanno). Other choices are 'bfgs', + 'newton' (Newton-Raphson), 'nm' (Nelder-Mead), 'cg' - + (conjugate gradient), 'ncg' (non-conjugate gradient), and + 'powell'. By default, the limited memory BFGS uses m=12 to + approximate the Hessian, projected gradient tolerance of 1e-8 and + factr = 1e2. You can change these by using kwargs. + maxiter : int, optional + The maximum number of function evaluations. Default is 500. + tol : float + The convergence tolerance. Default is 1e-08. + full_output : bool, optional + If True, all output from solver will be available in + the Results object's mle_retvals attribute. Output is dependent + on the solver. See Notes for more information. + disp : int, optional + If True, convergence information is printed. For the default + l_bfgs_b solver, disp controls the frequency of the output during + the iterations. disp < 0 means no output in this case. + callback : function, optional + Called after each iteration as callback(xk) where xk is the current + parameter vector. + start_ar_lags : int, optional + Parameter for fitting start_params. When fitting start_params, + residuals are obtained from an AR fit, then an ARMA(p,q) model is + fit via OLS using these residuals. If start_ar_lags is None, fit + an AR process according to best BIC. If start_ar_lags is not None, + fits an AR process with a lag length equal to start_ar_lags. + See ARMA._fit_start_params_hr for more information. + kwargs + See Notes for keyword arguments that can be passed to fit. + + Returns + ------- + `statsmodels.tsa.arima.ARIMAResults` class + + See Also + -------- + statsmodels.base.model.LikelihoodModel.fit : for more information + on using the solvers. + ARIMAResults : results class returned by fit + + Notes + ----- + If fit by 'mle', it is assumed for the Kalman Filter that the initial + unknown state is zero, and that the initial variance is + P = dot(inv(identity(m**2)-kron(T,T)),dot(R,R.T).ravel('F')).reshape(r, + r, order = 'F') + + """ + mlefit = super(ARIMA, self).fit(start_params, trend, + method, transparams, solver, + maxiter, full_output, disp, + callback, start_ar_lags, **kwargs) + normalized_cov_params = None # TODO: fix this? + arima_fit = ARIMAResults(self, mlefit._results.params, + normalized_cov_params) + arima_fit.k_diff = self.k_diff + + arima_fit.mle_retvals = mlefit.mle_retvals + arima_fit.mle_settings = mlefit.mle_settings + + return ARIMAResultsWrapper(arima_fit) + + def predict(self, params, start=None, end=None, exog=None, typ='linear', + dynamic=False): + # go ahead and convert to an index for easier checking + if isinstance(start, (string_types, datetime)): + # start = _index_date(start, self.data.dates) + start, _, _ = self._get_index_label_loc(start) + if isinstance(start, slice): + start = start.start + # Adjustment since _index was already changed to fit the + # differenced endog. + start += self.k_diff + if typ == 'linear': + if not dynamic or (start != self.k_ar + self.k_diff and + start is not None): + return super(ARIMA, self).predict(params, start, end, exog, + dynamic) + else: + # need to assume pre-sample residuals are zero + # do this by a hack + q = self.k_ma + self.k_ma = 0 + predictedvalues = super(ARIMA, self).predict(params, start, + end, exog, + dynamic) + self.k_ma = q + return predictedvalues + elif typ == 'levels': + endog = self.data.endog + if not dynamic: + predict = super(ARIMA, self).predict(params, start, end, exog, + dynamic) + + start, end, out_of_sample, _ = ( + self._get_prediction_index(start, end, dynamic)) + + d = self.k_diff + if 'mle' in self.method: + start += d - 1 # for case where d == 2 + end += d - 1 + # add each predicted diff to lagged endog + if out_of_sample: + fv = predict[:-out_of_sample] + endog[start:end+1] + if d == 2: #TODO: make a general solution to this + fv += np.diff(endog[start - 1:end + 1]) + levels = unintegrate_levels(endog[-d:], d) + fv = np.r_[fv, + unintegrate(predict[-out_of_sample:], + levels)[d:]] + else: + fv = predict + endog[start:end + 1] + if d == 2: + fv += np.diff(endog[start - 1:end + 1]) + else: + k_ar = self.k_ar + if out_of_sample: + fv = (predict[:-out_of_sample] + + endog[max(start, self.k_ar-1):end+k_ar+1]) + if d == 2: + fv += np.diff(endog[start - 1:end + 1]) + levels = unintegrate_levels(endog[-d:], d) + fv = np.r_[fv, + unintegrate(predict[-out_of_sample:], + levels)[d:]] + else: + fv = predict + endog[max(start, k_ar):end+k_ar+1] + if d == 2: + fv += np.diff(endog[start - 1:end + 1]) + else: + #IFF we need to use pre-sample values assume pre-sample + # residuals are zero, do this by a hack + if start == self.k_ar + self.k_diff or start is None: + # do the first k_diff+1 separately + p = self.k_ar + q = self.k_ma + k_exog = self.k_exog + k_trend = self.k_trend + k_diff = self.k_diff + (trendparam, exparams, + arparams, maparams) = _unpack_params(params, (p, q), + k_trend, + k_exog, + reverse=True) + # this is the hack + self.k_ma = 0 + + predict = super(ARIMA, self).predict(params, start, end, + exog, dynamic) + if not start: + start, _, _, _ = self._get_prediction_index( + start, end, dynamic) + start += k_diff + self.k_ma = q + return endog[start-1] + np.cumsum(predict) + else: + predict = super(ARIMA, self).predict(params, start, end, + exog, dynamic) + return endog[start-1] + np.cumsum(predict) + return fv + + else: # pragma : no cover + raise ValueError("typ %s not understood" % typ) + + predict.__doc__ = _arima_predict + + +class ARMAResults(tsbase.TimeSeriesModelResults): + """ + Class to hold results from fitting an ARMA model. + + Parameters + ---------- + model : ARMA instance + The fitted model instance + params : array + Fitted parameters + normalized_cov_params : array, optional + The normalized variance covariance matrix + scale : float, optional + Optional argument to scale the variance covariance matrix. + + Attributes + ---------- + aic : float + Akaike Information Criterion + :math:`-2*llf+2* df_model` + where `df_model` includes all AR parameters, MA parameters, constant + terms parameters on constant terms and the variance. + arparams : array + The parameters associated with the AR coefficients in the model. + arroots : array + The roots of the AR coefficients are the solution to + (1 - arparams[0]*z - arparams[1]*z**2 -...- arparams[p-1]*z**k_ar) = 0 + Stability requires that the roots in modulus lie outside the unit + circle. + bic : float + Bayes Information Criterion + -2*llf + log(nobs)*df_model + Where if the model is fit using conditional sum of squares, the + number of observations `nobs` does not include the `p` pre-sample + observations. + bse : array + The standard errors of the parameters. These are computed using the + numerical Hessian. + df_model : array + The model degrees of freedom = `k_exog` + `k_trend` + `k_ar` + `k_ma` + df_resid : array + The residual degrees of freedom = `nobs` - `df_model` + fittedvalues : array + The predicted values of the model. + hqic : float + Hannan-Quinn Information Criterion + -2*llf + 2*(`df_model`)*log(log(nobs)) + Like `bic` if the model is fit using conditional sum of squares then + the `k_ar` pre-sample observations are not counted in `nobs`. + k_ar : int + The number of AR coefficients in the model. + k_exog : int + The number of exogenous variables included in the model. Does not + include the constant. + k_ma : int + The number of MA coefficients. + k_trend : int + This is 0 for no constant or 1 if a constant is included. + llf : float + The value of the log-likelihood function evaluated at `params`. + maparams : array + The value of the moving average coefficients. + maroots : array + The roots of the MA coefficients are the solution to + (1 + maparams[0]*z + maparams[1]*z**2 + ... + maparams[q-1]*z**q) = 0 + Stability requires that the roots in modules lie outside the unit + circle. + model : ARMA instance + A reference to the model that was fit. + nobs : float + The number of observations used to fit the model. If the model is fit + using exact maximum likelihood this is equal to the total number of + observations, `n_totobs`. If the model is fit using conditional + maximum likelihood this is equal to `n_totobs` - `k_ar`. + n_totobs : float + The total number of observations for `endog`. This includes all + observations, even pre-sample values if the model is fit using `css`. + params : array + The parameters of the model. The order of variables is the trend + coefficients and the `k_exog` exognous coefficients, then the + `k_ar` AR coefficients, and finally the `k_ma` MA coefficients. + pvalues : array + The p-values associated with the t-values of the coefficients. Note + that the coefficients are assumed to have a Student's T distribution. + resid : array + The model residuals. If the model is fit using 'mle' then the + residuals are created via the Kalman Filter. If the model is fit + using 'css' then the residuals are obtained via `scipy.signal.lfilter` + adjusted such that the first `k_ma` residuals are zero. These zero + residuals are not returned. + scale : float + This is currently set to 1.0 and not used by the model or its results. + sigma2 : float + The variance of the residuals. If the model is fit by 'css', + sigma2 = ssr/nobs, where ssr is the sum of squared residuals. If + the model is fit by 'mle', then sigma2 = 1/nobs * sum(v**2 / F) + where v is the one-step forecast error and F is the forecast error + variance. See `nobs` for the difference in definitions depending on the + fit. + """ + _cache = {} + + #TODO: use this for docstring when we fix nobs issue + + def __init__(self, model, params, normalized_cov_params=None, scale=1.): + super(ARMAResults, self).__init__(model, params, normalized_cov_params, + scale) + self.sigma2 = model.sigma2 + nobs = model.nobs + self.nobs = nobs + k_exog = model.k_exog + self.k_exog = k_exog + k_trend = model.k_trend + self.k_trend = k_trend + k_ar = model.k_ar + self.k_ar = k_ar + self.n_totobs = len(model.endog) + k_ma = model.k_ma + self.k_ma = k_ma + df_model = k_exog + k_trend + k_ar + k_ma + self._ic_df_model = df_model + 1 + self.df_model = df_model + self.df_resid = self.nobs - df_model + self._cache = {} + + @cache_readonly + def arroots(self): + return np.roots(np.r_[1, -self.arparams])**-1 + + @cache_readonly + def maroots(self): + return np.roots(np.r_[1, self.maparams])**-1 + + @cache_readonly + def arfreq(self): + r""" + Returns the frequency of the AR roots. + + This is the solution, x, to z = abs(z)*exp(2j*np.pi*x) where z are the + roots. + """ + z = self.arroots + return np.arctan2(z.imag, z.real) / (2*pi) + + @cache_readonly + def mafreq(self): + r""" + Returns the frequency of the MA roots. + + This is the solution, x, to z = abs(z)*exp(2j*np.pi*x) where z are the + roots. + """ + z = self.maroots + return np.arctan2(z.imag, z.real) / (2*pi) + + @cache_readonly + def arparams(self): + k = self.k_exog + self.k_trend + return self.params[k:k+self.k_ar] + + @cache_readonly + def maparams(self): + k = self.k_exog + self.k_trend + k_ar = self.k_ar + return self.params[k+k_ar:] + + @cache_readonly + def llf(self): + return self.model.loglike(self.params) + + @cache_readonly + def bse(self): + params = self.params + hess = self.model.hessian(params) + if len(params) == 1: # can't take an inverse, ensure 1d + return np.sqrt(-1./hess[0]) + return np.sqrt(np.diag(-inv(hess))) + + def cov_params(self): # add scale argument? + params = self.params + hess = self.model.hessian(params) + return -inv(hess) + + @cache_readonly + def aic(self): + return -2 * self.llf + 2 * self._ic_df_model + + @cache_readonly + def bic(self): + nobs = self.nobs + return -2 * self.llf + np.log(nobs) * self._ic_df_model + + @cache_readonly + def hqic(self): + nobs = self.nobs + return -2 * self.llf + 2 * np.log(np.log(nobs)) * self._ic_df_model + + @cache_readonly + def fittedvalues(self): + model = self.model + endog = model.endog.copy() + k_ar = self.k_ar + exog = model.exog # this is a copy + if exog is not None: + if model.method == "css" and k_ar > 0: + exog = exog[k_ar:] + if model.method == "css" and k_ar > 0: + endog = endog[k_ar:] + fv = endog - self.resid + # add deterministic part back in + #k = self.k_exog + self.k_trend + #TODO: this needs to be commented out for MLE with constant + #if k != 0: + # fv += dot(exog, self.params[:k]) + return fv + + @cache_readonly + def resid(self): + return self.model.geterrors(self.params) + + @cache_readonly + def pvalues(self): + #TODO: same for conditional and unconditional? + df_resid = self.df_resid + return t.sf(np.abs(self.tvalues), df_resid) * 2 + + def predict(self, start=None, end=None, exog=None, dynamic=False): + return self.model.predict(self.params, start, end, exog, dynamic) + predict.__doc__ = _arma_results_predict + + def _forecast_error(self, steps): + sigma2 = self.sigma2 + ma_rep = arma2ma(np.r_[1, -self.arparams], + np.r_[1, self.maparams], lags=steps) + + fcasterr = np.sqrt(sigma2 * np.cumsum(ma_rep**2)) + return fcasterr + + def _forecast_conf_int(self, forecast, fcasterr, alpha): + const = norm.ppf(1 - alpha / 2.) + conf_int = np.c_[forecast - const * fcasterr, + forecast + const * fcasterr] + + return conf_int + + def forecast(self, steps=1, exog=None, alpha=.05): + """ + Out-of-sample forecasts + + Parameters + ---------- + steps : int + The number of out of sample forecasts from the end of the + sample. + exog : array + If the model is an ARMAX, you must provide out of sample + values for the exogenous variables. This should not include + the constant. + alpha : float + The confidence intervals for the forecasts are (1 - alpha) % + + Returns + ------- + forecast : array + Array of out of sample forecasts + stderr : array + Array of the standard error of the forecasts. + conf_int : array + 2d array of the confidence interval for the forecast + """ + if exog is not None: + #TODO: make a convenience function for this. we're using the + # pattern elsewhere in the codebase + exog = np.asarray(exog) + if self.k_exog == 1 and exog.ndim == 1: + exog = exog[:, None] + elif exog.ndim == 1: + if len(exog) != self.k_exog: + raise ValueError("1d exog given and len(exog) != k_exog") + exog = exog[None, :] + if exog.shape[0] != steps: + raise ValueError("new exog needed for each step") + if self.k_exog != exog.shape[1]: + raise ValueError('exog must contain the same number of ' + 'variables as in the estimated model.') + # prepend in-sample exog observations + if self.k_ar > 0: + exog = np.vstack((self.model.exog[-self.k_ar:, self.k_trend:], + exog)) + else: + if self.k_exog: + raise ValueError('Forecast values for exog are required when ' + 'the model contains exogenous regressors.') + + + + forecast = _arma_predict_out_of_sample(self.params, + steps, self.resid, self.k_ar, + self.k_ma, self.k_trend, + self.k_exog, self.model.endog, + exog, method=self.model.method) + + # compute the standard errors + fcasterr = self._forecast_error(steps) + conf_int = self._forecast_conf_int(forecast, fcasterr, alpha) + + return forecast, fcasterr, conf_int + + def summary(self, alpha=.05): + """Summarize the Model + + Parameters + ---------- + alpha : float, optional + Significance level for the confidence intervals. + + Returns + ------- + smry : Summary instance + This holds the summary table and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary.Summary + """ + from statsmodels.iolib.summary import Summary + model = self.model + title = model.__class__.__name__ + ' Model Results' + method = model.method + # get sample TODO: make better sample machinery for estimation + k_diff = getattr(self, 'k_diff', 0) + if 'mle' in method: + start = k_diff + else: + start = k_diff + self.k_ar + if self.data.dates is not None: + dates = self.data.dates + sample = [dates[start].strftime('%m-%d-%Y')] + sample += ['- ' + dates[-1].strftime('%m-%d-%Y')] + else: + sample = str(start) + ' - ' + str(len(self.data.orig_endog)) + + k_ar, k_ma = self.k_ar, self.k_ma + if not k_diff: + order = str((k_ar, k_ma)) + else: + order = str((k_ar, k_diff, k_ma)) + top_left = [('Dep. Variable:', None), + ('Model:', [model.__class__.__name__ + order]), + ('Method:', [method]), + ('Date:', None), + ('Time:', None), + ('Sample:', [sample[0]]), + ('', [sample[1]]) + ] + + top_right = [ + ('No. Observations:', [str(len(self.model.endog))]), + ('Log Likelihood', ["%#5.3f" % self.llf]), + ('S.D. of innovations', ["%#5.3f" % self.sigma2**.5]), + ('AIC', ["%#5.3f" % self.aic]), + ('BIC', ["%#5.3f" % self.bic]), + ('HQIC', ["%#5.3f" % self.hqic])] + + smry = Summary() + smry.add_table_2cols(self, gleft=top_left, gright=top_right, + title=title) + smry.add_table_params(self, alpha=alpha, use_t=False) + + # Make the roots table + from statsmodels.iolib.table import SimpleTable + + if k_ma and k_ar: + arstubs = ["AR.%d" % i for i in range(1, k_ar + 1)] + mastubs = ["MA.%d" % i for i in range(1, k_ma + 1)] + stubs = arstubs + mastubs + roots = np.r_[self.arroots, self.maroots] + freq = np.r_[self.arfreq, self.mafreq] + elif k_ma: + mastubs = ["MA.%d" % i for i in range(1, k_ma + 1)] + stubs = mastubs + roots = self.maroots + freq = self.mafreq + elif k_ar: + arstubs = ["AR.%d" % i for i in range(1, k_ar + 1)] + stubs = arstubs + roots = self.arroots + freq = self.arfreq + else: # 0,0 model + stubs = [] + if len(stubs): # not 0, 0 + modulus = np.abs(roots) + data = np.column_stack((roots.real, roots.imag, modulus, freq)) + roots_table = SimpleTable([('%17.4f' % row[0], + '%+17.4fj' % row[1], + '%17.4f' % row[2], + '%17.4f' % row[3]) for row in data], + headers=[' Real', + ' Imaginary', + ' Modulus', + ' Frequency'], + title="Roots", + stubs=stubs) + + smry.tables.append(roots_table) + return smry + + def summary2(self, title=None, alpha=.05, float_format="%.4f"): + """Experimental summary function for ARIMA Results + + Parameters + ---------- + title : string, optional + Title for the top table. If not None, then this replaces the + default title + alpha : float + significance level for the confidence intervals + float_format: string + print format for floats in parameters summary + + Returns + ------- + smry : Summary instance + This holds the summary table and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary2.Summary : class to hold summary + results + + """ + from pandas import DataFrame + # get sample TODO: make better sample machinery for estimation + k_diff = getattr(self, 'k_diff', 0) + if 'mle' in self.model.method: + start = k_diff + else: + start = k_diff + self.k_ar + if self.data.dates is not None: + dates = self.data.dates + sample = [dates[start].strftime('%m-%d-%Y')] + sample += [dates[-1].strftime('%m-%d-%Y')] + else: + sample = str(start) + ' - ' + str(len(self.data.orig_endog)) + + k_ar, k_ma = self.k_ar, self.k_ma + + # Roots table + if k_ma and k_ar: + arstubs = ["AR.%d" % i for i in range(1, k_ar + 1)] + mastubs = ["MA.%d" % i for i in range(1, k_ma + 1)] + stubs = arstubs + mastubs + roots = np.r_[self.arroots, self.maroots] + freq = np.r_[self.arfreq, self.mafreq] + elif k_ma: + mastubs = ["MA.%d" % i for i in range(1, k_ma + 1)] + stubs = mastubs + roots = self.maroots + freq = self.mafreq + elif k_ar: + arstubs = ["AR.%d" % i for i in range(1, k_ar + 1)] + stubs = arstubs + roots = self.arroots + freq = self.arfreq + else: # 0, 0 order + stubs = [] + + if len(stubs): + modulus = np.abs(roots) + data = np.column_stack((roots.real, roots.imag, modulus, freq)) + data = DataFrame(data) + data.columns = ['Real', 'Imaginary', 'Modulus', 'Frequency'] + data.index = stubs + + # Summary + from statsmodels.iolib import summary2 + smry = summary2.Summary() + + # Model info + model_info = summary2.summary_model(self) + model_info['Method:'] = self.model.method + model_info['Sample:'] = sample[0] + model_info[' '] = sample[-1] + model_info['S.D. of innovations:'] = "%#5.3f" % self.sigma2**.5 + model_info['HQIC:'] = "%#5.3f" % self.hqic + model_info['No. Observations:'] = str(len(self.model.endog)) + + # Parameters + params = summary2.summary_params(self) + smry.add_dict(model_info) + smry.add_df(params, float_format=float_format) + if len(stubs): + smry.add_df(data, float_format="%17.4f") + smry.add_title(results=self, title=title) + + return smry + + def plot_predict(self, start=None, end=None, exog=None, dynamic=False, + alpha=.05, plot_insample=True, ax=None): + from statsmodels.graphics.utils import _import_mpl, create_mpl_ax + _ = _import_mpl() + fig, ax = create_mpl_ax(ax) + + # use predict so you set dates + forecast = self.predict(start, end, exog, dynamic) + # doing this twice. just add a plot keyword to predict? + start, end, out_of_sample, _ = ( + self.model._get_prediction_index(start, end, dynamic=False)) + + if out_of_sample: + steps = out_of_sample + fc_error = self._forecast_error(steps) + conf_int = self._forecast_conf_int(forecast[-steps:], fc_error, + alpha) + + if hasattr(self.data, "predict_dates"): + from pandas import Series + forecast = Series(forecast, index=self.data.predict_dates) + ax = forecast.plot(ax=ax, label='forecast') + else: + ax.plot(forecast) + + x = ax.get_lines()[-1].get_xdata() + if out_of_sample: + label = "{0:.0%} confidence interval".format(1 - alpha) + ax.fill_between(x[-out_of_sample:], conf_int[:, 0], conf_int[:, 1], + color='gray', alpha=.5, label=label) + + if plot_insample: + ax.plot(x[:end + 1 - start], self.model.endog[start:end+1], + label=self.model.endog_names) + + ax.legend(loc='best') + + return fig + plot_predict.__doc__ = _plot_predict + + +class ARMAResultsWrapper(wrap.ResultsWrapper): + _attrs = {} + _wrap_attrs = wrap.union_dicts(tsbase.TimeSeriesResultsWrapper._wrap_attrs, + _attrs) + _methods = {} + _wrap_methods = wrap.union_dicts(tsbase.TimeSeriesResultsWrapper._wrap_methods, + _methods) +wrap.populate_wrapper(ARMAResultsWrapper, ARMAResults) # noqa:E305 + + +class ARIMAResults(ARMAResults): + def predict(self, start=None, end=None, exog=None, typ='linear', + dynamic=False): + return self.model.predict(self.params, start, end, exog, typ, dynamic) + predict.__doc__ = _arima_results_predict + + def _forecast_error(self, steps): + sigma2 = self.sigma2 + ma_rep = arma2ma(np.r_[1, -self.arparams], + np.r_[1, self.maparams], lags=steps) + + fcerr = np.sqrt(np.cumsum(cumsum_n(ma_rep, self.k_diff)**2)*sigma2) + return fcerr + + def _forecast_conf_int(self, forecast, fcerr, alpha): + const = norm.ppf(1 - alpha/2.) + conf_int = np.c_[forecast - const*fcerr, forecast + const*fcerr] + return conf_int + + def forecast(self, steps=1, exog=None, alpha=.05): + """ + Out-of-sample forecasts + + Parameters + ---------- + steps : int + The number of out of sample forecasts from the end of the + sample. + exog : array + If the model is an ARIMAX, you must provide out of sample + values for the exogenous variables. This should not include + the constant. + alpha : float + The confidence intervals for the forecasts are (1 - alpha) % + + Returns + ------- + forecast : array + Array of out of sample forecasts + stderr : array + Array of the standard error of the forecasts. + conf_int : array + 2d array of the confidence interval for the forecast + + Notes + ----- + Prediction is done in the levels of the original endogenous variable. + If you would like prediction of differences in levels use `predict`. + """ + if exog is not None: + if self.k_exog == 1 and exog.ndim == 1: + exog = exog[:, None] + if exog.shape[0] != steps: + raise ValueError("new exog needed for each step") + if self.k_exog != exog.shape[1]: + raise ValueError('exog must contain the same number of ' + 'variables as in the estimated model.') + # prepend in-sample exog observations + if self.k_ar > 0: + exog = np.vstack((self.model.exog[-self.k_ar:, self.k_trend:], + exog)) + else: + if self.k_exog: + raise ValueError('Forecast values for exog are required when ' + 'the model contains exogenous regressors.') + + forecast = _arma_predict_out_of_sample(self.params, steps, self.resid, + self.k_ar, self.k_ma, + self.k_trend, self.k_exog, + self.model.endog, + exog, method=self.model.method) + + d = self.k_diff + endog = self.model.data.endog[-d:] + forecast = unintegrate(forecast, unintegrate_levels(endog, d))[d:] + + # get forecast errors + fcerr = self._forecast_error(steps) + conf_int = self._forecast_conf_int(forecast, fcerr, alpha) + return forecast, fcerr, conf_int + + def plot_predict(self, start=None, end=None, exog=None, dynamic=False, + alpha=.05, plot_insample=True, ax=None): + from statsmodels.graphics.utils import _import_mpl, create_mpl_ax + _ = _import_mpl() + fig, ax = create_mpl_ax(ax) + + # use predict so you set dates + forecast = self.predict(start, end, exog, 'levels', dynamic) + # doing this twice. just add a plot keyword to predict? + start, end, out_of_sample, _ = ( + self.model._get_prediction_index(start, end, dynamic)) + + if out_of_sample: + steps = out_of_sample + fc_error = self._forecast_error(steps) + conf_int = self._forecast_conf_int(forecast[-steps:], fc_error, + alpha) + + if hasattr(self.data, "predict_dates"): + from pandas import Series + forecast = Series(forecast, index=self.data.predict_dates) + ax = forecast.plot(ax=ax, label='forecast') + else: + ax.plot(forecast) + + x = ax.get_lines()[-1].get_xdata() + if out_of_sample: + label = "{0:.0%} confidence interval".format(1 - alpha) + ax.fill_between(x[-out_of_sample:], conf_int[:, 0], conf_int[:, 1], + color='gray', alpha=.5, label=label) + + if plot_insample: + import re + k_diff = self.k_diff + label = re.sub(r"D\d*\.", "", self.model.endog_names) + levels = unintegrate(self.model.endog, + self.model._first_unintegrate) + ax.plot(x[:end + 1 - start], + levels[start + k_diff:end + k_diff + 1], label=label) + + ax.legend(loc='best') + + return fig + + plot_predict.__doc__ = _arima_plot_predict + + +class ARIMAResultsWrapper(ARMAResultsWrapper): + pass +wrap.populate_wrapper(ARIMAResultsWrapper, ARIMAResults) # noqa:E305 + + +if __name__ == "__main__": + import statsmodels.api as sm + + # simulate arma process + from statsmodels.tsa.arima_process import arma_generate_sample + y = arma_generate_sample([1., -.75], [1., .25], nsample=1000) + arma = ARMA(y) + res = arma.fit(trend='nc', order=(1, 1)) + + np.random.seed(12345) + y_arma22 = arma_generate_sample([1., -.85, .35], [1, .25, -.9], + nsample=1000) + arma22 = ARMA(y_arma22) + res22 = arma22.fit(trend='nc', order=(2, 2)) + + # test CSS + arma22_css = ARMA(y_arma22) + res22css = arma22_css.fit(trend='nc', order=(2, 2), method='css') + + data = sm.datasets.sunspots.load(as_pandas=False) + ar = ARMA(data.endog) + resar = ar.fit(trend='nc', order=(9, 0)) + + y_arma31 = arma_generate_sample([1, -.75, -.35, .25], [.1], + nsample=1000) + + arma31css = ARMA(y_arma31) + res31css = arma31css.fit(order=(3, 1), method="css", trend="nc", + transparams=True) + + y_arma13 = arma_generate_sample([1., -.75], [1, .25, -.5, .8], + nsample=1000) + arma13css = ARMA(y_arma13) + res13css = arma13css.fit(order=(1, 3), method='css', trend='nc') + +# check css for p < q and q < p + y_arma41 = arma_generate_sample([1., -.75, .35, .25, -.3], [1, -.35], + nsample=1000) + arma41css = ARMA(y_arma41) + res41css = arma41css.fit(order=(4, 1), trend='nc', method='css') + + y_arma14 = arma_generate_sample([1, -.25], [1., -.75, .35, .25, -.3], + nsample=1000) + arma14css = ARMA(y_arma14) + res14css = arma14css.fit(order=(4, 1), trend='nc', method='css') + + # ARIMA Model + from statsmodels.datasets import webuse + dta = webuse('wpi1') + wpi = dta['wpi'] + + mod = ARIMA(wpi, (1, 1, 1)).fit() diff --git a/statsmodels/tsa/arima_process.py b/statsmodels/tsa/arima_process.py new file mode 100644 index 0000000..ca9575d --- /dev/null +++ b/statsmodels/tsa/arima_process.py @@ -0,0 +1,956 @@ +"""ARMA process and estimation with scipy.signal.lfilter + +Notes +----- +* written without textbook, works but not sure about everything + briefly checked and it looks to be standard least squares, see below + +* theoretical autocorrelation function of general ARMA + Done, relatively easy to guess solution, time consuming to get + theoretical test cases, example file contains explicit formulas for + acovf of MA(1), MA(2) and ARMA(1,1) + +Properties: +Judge, ... (1985): The Theory and Practise of Econometrics + +Author: josefpktd +License: BSD +""" +from statsmodels.compat.python import range + +import numpy as np +from scipy import signal, optimize, linalg + +__all__ = ['arma_acf', 'arma_acovf', 'arma_generate_sample', + 'arma_impulse_response', 'arma2ar', 'arma2ma', 'deconvolve', + 'lpol2index', 'index2lpol'] + + +def arma_generate_sample(ar, ma, nsample, sigma=1, distrvs=np.random.randn, + burnin=0): + """ + Generate a random sample of an ARMA process + + Parameters + ---------- + ar : array_like, 1d + coefficient for autoregressive lag polynomial, including zero lag + ma : array_like, 1d + coefficient for moving-average lag polynomial, including zero lag + nsample : int + length of simulated time series + sigma : float + standard deviation of noise + distrvs : function, random number generator + function that generates the random numbers, and takes sample size + as argument + default: np.random.randn + TODO: change to size argument + burnin : integer + Burn in observations at the generated and dropped from the beginning of + the sample + + Returns + ------- + sample : array + sample of ARMA process given by ar, ma of length nsample + + Notes + ----- + As mentioned above, both the AR and MA components should include the + coefficient on the zero-lag. This is typically 1. Further, due to the + conventions used in signal processing used in signal.lfilter vs. + conventions in statistics for ARMA processes, the AR parameters should + have the opposite sign of what you might expect. See the examples below. + + Examples + -------- + >>> import numpy as np + >>> np.random.seed(12345) + >>> arparams = np.array([.75, -.25]) + >>> maparams = np.array([.65, .35]) + >>> ar = np.r_[1, -arparams] # add zero-lag and negate + >>> ma = np.r_[1, maparams] # add zero-lag + >>> y = sm.tsa.arma_generate_sample(ar, ma, 250) + >>> model = sm.tsa.ARMA(y, (2, 2)).fit(trend='nc', disp=0) + >>> model.params + array([ 0.79044189, -0.23140636, 0.70072904, 0.40608028]) + """ + # TODO: unify with ArmaProcess method + eta = sigma * distrvs(nsample + burnin) + return signal.lfilter(ma, ar, eta)[burnin:] + + +def arma_acovf(ar, ma, nobs=10, sigma2=1, dtype=None): + """ + Theoretical autocovariance function of ARMA process + + Parameters + ---------- + ar : array_like, 1d + coefficient for autoregressive lag polynomial, including zero lag + ma : array_like, 1d + coefficient for moving-average lag polynomial, including zero lag + nobs : int + number of terms (lags plus zero lag) to include in returned acovf + sigma2 : float + Variance of the innovation term. + + Returns + ------- + acovf : array + autocovariance of ARMA process given by ar, ma + + See Also + -------- + arma_acf + acovf + + References + ---------- + .. [*] Brockwell, Peter J., and Richard A. Davis. 2009. Time Series: + Theory and Methods. 2nd ed. 1991. New York, NY: Springer. + """ + if dtype is None: + dtype = np.common_type(np.array(ar), np.array(ma), np.array(sigma2)) + + p = len(ar) - 1 + q = len(ma) - 1 + m = max(p, q) + 1 + + if sigma2.real < 0: + raise ValueError('Must have positive innovation variance.') + + # Short-circuit for trivial corner-case + if p == q == 0: + out = np.zeros(nobs, dtype=dtype) + out[0] = sigma2 + return out + + # Get the moving average representation coefficients that we need + ma_coeffs = arma2ma(ar, ma, lags=m) + + # Solve for the first m autocovariances via the linear system + # described by (BD, eq. 3.3.8) + A = np.zeros((m, m), dtype=dtype) + b = np.zeros((m, 1), dtype=dtype) + # We need a zero-right-padded version of ar params + tmp_ar = np.zeros(m, dtype=dtype) + tmp_ar[:p + 1] = ar + for k in range(m): + A[k, :(k + 1)] = tmp_ar[:(k + 1)][::-1] + A[k, 1:m - k] += tmp_ar[(k + 1):m] + b[k] = sigma2 * np.dot(ma[k:q + 1], ma_coeffs[:max((q + 1 - k), 0)]) + acovf = np.zeros(max(nobs, m), dtype=dtype) + acovf[:m] = np.linalg.solve(A, b)[:, 0] + + # Iteratively apply (BD, eq. 3.3.9) to solve for remaining autocovariances + if nobs > m: + zi = signal.lfiltic([1], ar, acovf[:m:][::-1]) + acovf[m:] = signal.lfilter([1], ar, np.zeros(nobs - m, dtype=dtype), + zi=zi)[0] + + return acovf[:nobs] + + +def arma_acf(ar, ma, lags=10, **kwargs): + """ + Theoretical autocorrelation function of an ARMA process + + Parameters + ---------- + ar : array_like, 1d + coefficient for autoregressive lag polynomial, including zero lag + ma : array_like, 1d + coefficient for moving-average lag polynomial, including zero lag + lags : int + number of terms (lags plus zero lag) to include in returned acf + + Returns + ------- + acf : array + autocorrelation of ARMA process given by ar, ma + + + See Also + -------- + arma_acovf + acf + acovf + """ + if 'nobs' in kwargs: + lags = kwargs['nobs'] + import warnings + warnings.warn('nobs is deprecated in favor of lags', + DeprecationWarning) + + acovf = arma_acovf(ar, ma, lags) + return acovf / acovf[0] + + +def arma_pacf(ar, ma, lags=10, **kwargs): + """ + Partial autocorrelation function of an ARMA process + + Parameters + ---------- + ar : array_like, 1d + coefficient for autoregressive lag polynomial, including zero lag + ma : array_like, 1d + coefficient for moving-average lag polynomial, including zero lag + lags : int + number of terms (lags plus zero lag) to include in returned pacf + + Returns + ------- + pacf : array + partial autocorrelation of ARMA process given by ar, ma + + Notes + ----- + solves yule-walker equation for each lag order up to nobs lags + + not tested/checked yet + """ + if 'nobs' in kwargs: + lags = kwargs['nobs'] + import warnings + warnings.warn('nobs is deprecated in favor of lags', + DeprecationWarning) + # TODO: Should use rank 1 inverse update + apacf = np.zeros(lags) + acov = arma_acf(ar, ma, lags=lags + 1) + + apacf[0] = 1. + for k in range(2, lags + 1): + r = acov[:k] + apacf[k - 1] = linalg.solve(linalg.toeplitz(r[:-1]), r[1:])[-1] + return apacf + + +def arma_periodogram(ar, ma, worN=None, whole=0): + """ + Periodogram for ARMA process given by lag-polynomials ar and ma + + Parameters + ---------- + ar : array_like + autoregressive lag-polynomial with leading 1 and lhs sign + ma : array_like + moving average lag-polynomial with leading 1 + worN : {None, int}, optional + option for scipy.signal.freqz (read "w or N") + If None, then compute at 512 frequencies around the unit circle. + If a single integer, the compute at that many frequencies. + Otherwise, compute the response at frequencies given in worN + whole : {0,1}, optional + options for scipy.signal.freqz + Normally, frequencies are computed from 0 to pi (upper-half of + unit-circle. If whole is non-zero compute frequencies from 0 to 2*pi. + + Returns + ------- + w : array + frequencies + sd : array + periodogram, spectral density + + Notes + ----- + Normalization ? + + This uses signal.freqz, which does not use fft. There is a fft version + somewhere. + """ + w, h = signal.freqz(ma, ar, worN=worN, whole=whole) + sd = np.abs(h) ** 2 / np.sqrt(2 * np.pi) + if np.any(np.isnan(h)): + # this happens with unit root or seasonal unit root' + import warnings + warnings.warn('Warning: nan in frequency response h, maybe a unit ' + 'root', RuntimeWarning) + return w, sd + + +def arma_impulse_response(ar, ma, leads=100, **kwargs): + """ + Get the impulse response function (MA representation) for ARMA process + + Parameters + ---------- + ma : array_like, 1d + moving average lag polynomial + ar : array_like, 1d + auto regressive lag polynomial + leads : int + number of observations to calculate + + Returns + ------- + ir : array, 1d + impulse response function with nobs elements + + Notes + ----- + This is the same as finding the MA representation of an ARMA(p,q). + By reversing the role of ar and ma in the function arguments, the + returned result is the AR representation of an ARMA(p,q), i.e + + ma_representation = arma_impulse_response(ar, ma, leads=100) + ar_representation = arma_impulse_response(ma, ar, leads=100) + + Fully tested against matlab + + Examples + -------- + AR(1) + + >>> arma_impulse_response([1.0, -0.8], [1.], leads=10) + array([ 1. , 0.8 , 0.64 , 0.512 , 0.4096 , + 0.32768 , 0.262144 , 0.2097152 , 0.16777216, 0.13421773]) + + this is the same as + + >>> 0.8**np.arange(10) + array([ 1. , 0.8 , 0.64 , 0.512 , 0.4096 , + 0.32768 , 0.262144 , 0.2097152 , 0.16777216, 0.13421773]) + + MA(2) + + >>> arma_impulse_response([1.0], [1., 0.5, 0.2], leads=10) + array([ 1. , 0.5, 0.2, 0. , 0. , 0. , 0. , 0. , 0. , 0. ]) + + ARMA(1,2) + + >>> arma_impulse_response([1.0, -0.8], [1., 0.5, 0.2], leads=10) + array([ 1. , 1.3 , 1.24 , 0.992 , 0.7936 , + 0.63488 , 0.507904 , 0.4063232 , 0.32505856, 0.26004685]) + """ + if 'nobs' in kwargs: + leads = kwargs['nobs'] + import warnings + warnings.warn('nobs is deprecated in favor of leads', + DeprecationWarning) + impulse = np.zeros(leads) + impulse[0] = 1. + return signal.lfilter(ma, ar, impulse) + + +def arma2ma(ar, ma, lags=100, **kwargs): + """ + Get the MA representation of an ARMA process + + Parameters + ---------- + ar : array_like, 1d + auto regressive lag polynomial + ma : array_like, 1d + moving average lag polynomial + lags : int + number of coefficients to calculate + + Returns + ------- + ar : array, 1d + coefficients of AR lag polynomial with nobs elements + + Notes + ----- + Equivalent to ``arma_impulse_response(ma, ar, leads=100)`` + + + Examples + -------- + """ + if 'nobs' in kwargs: + lags = kwargs['nobs'] + import warnings + warnings.warn('nobs is deprecated in favor of lags', + DeprecationWarning) + + return arma_impulse_response(ar, ma, leads=lags) + + +def arma2ar(ar, ma, lags=100, **kwargs): + """ + Get the AR representation of an ARMA process + + Parameters + ---------- + ar : array_like, 1d + auto regressive lag polynomial + ma : array_like, 1d + moving average lag polynomial + lags : int + number of coefficients to calculate + + Returns + ------- + ar : array, 1d + coefficients of AR lag polynomial with nobs elements + + Notes + ----- + Equivalent to ``arma_impulse_response(ma, ar, leads=100)`` + + + Examples + -------- + """ + if 'nobs' in kwargs: + lags = kwargs['nobs'] + import warnings + warnings.warn('nobs is deprecated in favor of lags', + DeprecationWarning) + return arma_impulse_response(ma, ar, leads=lags) + + +# moved from sandbox.tsa.try_fi +def ar2arma(ar_des, p, q, n=20, mse='ar', start=None): + """ + Find arma approximation to ar process + + This finds the ARMA(p,q) coefficients that minimize the integrated + squared difference between the impulse_response functions (MA + representation) of the AR and the ARMA process. This does not check + whether the MA lag polynomial of the ARMA process is invertible, neither + does it check the roots of the AR lag polynomial. + + Parameters + ---------- + ar_des : array_like + coefficients of original AR lag polynomial, including lag zero + p : int + length of desired AR lag polynomials + q : int + length of desired MA lag polynomials + n : int + number of terms of the impulse_response function to include in the + objective function for the approximation + mse : string, 'ar' + not used yet, + + Returns + ------- + ar_app, ma_app : arrays + coefficients of the AR and MA lag polynomials of the approximation + res : tuple + result of optimize.leastsq + + Notes + ----- + Extension is possible if we want to match autocovariance instead + of impulse response function. + """ + + # TODO: convert MA lag polynomial, ma_app, to be invertible, by mirroring + # TODO: roots outside the unit interval to ones that are inside. How to do + # TODO: this? + + # p,q = pq + def msear_err(arma, ar_des): + ar, ma = np.r_[1, arma[:p - 1]], np.r_[1, arma[p - 1:]] + ar_approx = arma_impulse_response(ma, ar, n) + return (ar_des - ar_approx) # ((ar - ar_approx)**2).sum() + + if start is None: + arma0 = np.r_[-0.9 * np.ones(p - 1), np.zeros(q - 1)] + else: + arma0 = start + res = optimize.leastsq(msear_err, arma0, ar_des, maxfev=5000) + arma_app = np.atleast_1d(res[0]) + ar_app = np.r_[1, arma_app[:p - 1]], + ma_app = np.r_[1, arma_app[p - 1:]] + return ar_app, ma_app, res + + +_arma_docs = {'ar': arma2ar.__doc__, + 'ma': arma2ma.__doc__} + + +def lpol2index(ar): + """ + Remove zeros from lag polynomial + + Parameters + ---------- + ar : array_like + coefficients of lag polynomial + + Returns + ------- + coeffs : array + non-zero coefficients of lag polynomial + index : array + index (lags) of lag polynomial with non-zero elements + """ + ar = np.asarray(ar) + index = np.nonzero(ar)[0] + coeffs = ar[index] + return coeffs, index + + +def index2lpol(coeffs, index): + """ + Expand coefficients to lag poly + + Parameters + ---------- + coeffs : array + non-zero coefficients of lag polynomial + index : array + index (lags) of lag polynomial with non-zero elements + + Returns + ------- + ar : array_like + coefficients of lag polynomial + """ + n = max(index) + ar = np.zeros(n + 1) + ar[index] = coeffs + return ar + + +def lpol_fima(d, n=20): + """MA representation of fractional integration + + .. math:: (1-L)^{-d} for |d|<0.5 or |d|<1 (?) + + Parameters + ---------- + d : float + fractional power + n : int + number of terms to calculate, including lag zero + + Returns + ------- + ma : array + coefficients of lag polynomial + + """ + # hide import inside function until we use this heavily + from scipy.special import gammaln + j = np.arange(n) + return np.exp(gammaln(d + j) - gammaln(j + 1) - gammaln(d)) + + +# moved from sandbox.tsa.try_fi +def lpol_fiar(d, n=20): + """AR representation of fractional integration + + .. math:: (1-L)^{d} for |d|<0.5 or |d|<1 (?) + + Parameters + ---------- + d : float + fractional power + n : int + number of terms to calculate, including lag zero + + Returns + ------- + ar : array + coefficients of lag polynomial + + Notes: + first coefficient is 1, negative signs except for first term, + ar(L)*x_t + """ + # hide import inside function until we use this heavily + from scipy.special import gammaln + j = np.arange(n) + ar = - np.exp(gammaln(-d + j) - gammaln(j + 1) - gammaln(-d)) + ar[0] = 1 + return ar + + +# moved from sandbox.tsa.try_fi +def lpol_sdiff(s): + """return coefficients for seasonal difference (1-L^s) + + just a trivial convenience function + + Parameters + ---------- + s : int + number of periods in season + + Returns + ------- + sdiff : list, length s+1 + + """ + return [1] + [0] * (s - 1) + [-1] + + +def deconvolve(num, den, n=None): + """Deconvolves divisor out of signal, division of polynomials for n terms + + calculates den^{-1} * num + + Parameters + ---------- + num : array_like + signal or lag polynomial + denom : array_like + coefficients of lag polynomial (linear filter) + n : None or int + number of terms of quotient + + Returns + ------- + quot : array + quotient or filtered series + rem : array + remainder + + Notes + ----- + If num is a time series, then this applies the linear filter den^{-1}. + If both num and den are both lag polynomials, then this calculates the + quotient polynomial for n terms and also returns the remainder. + + This is copied from scipy.signal.signaltools and added n as optional + parameter. + + """ + num = np.atleast_1d(num) + den = np.atleast_1d(den) + N = len(num) + D = len(den) + if D > N and n is None: + quot = [] + rem = num + else: + if n is None: + n = N - D + 1 + input = np.zeros(n, float) + input[0] = 1 + quot = signal.lfilter(num, den, input) + num_approx = signal.convolve(den, quot, mode='full') + if len(num) < len(num_approx): # 1d only ? + num = np.concatenate((num, np.zeros(len(num_approx) - len(num)))) + rem = num - num_approx + return quot, rem + + +class ArmaProcess(object): + r""" + Theoretical properties of an ARMA process for specified lag-polynomials + + Parameters + ---------- + ar : array_like, 1d, optional + Coefficient for autoregressive lag polynomial, including zero lag. + See the notes for some information about the sign. + ma : array_like, 1d, optional + Coefficient for moving-average lag polynomial, including zero lag + nobs : int, optional + Length of simulated time series. Used, for example, if a sample is + generated. See example. + + Notes + ----- + Both the AR and MA components must include the coefficient on the + zero-lag. In almost all cases these values should be 1. Further, due to + using the lag-polynomial representation, the AR parameters should + have the opposite sign of what one would write in the ARMA representation. + See the examples below. + + The ARMA(p,q) process is described by + + .. math:: + + y_{t}=\phi_{1}y_{t-1}+\ldots+\phi_{p}y_{t-p}+\theta_{1}\epsilon_{t-1} + +\ldots+\theta_{q}\epsilon_{t-q}+\epsilon_{t} + + and the parameterization used in this function uses the lag-polynomial + representation, + + .. math:: + + \left(1-\phi_{1}L-\ldots-\phi_{p}L^{p}\right)y_{t} = + \left(1-\theta_{1}L-\ldots-\theta_{q}L^{q}\right) + + Examples + -------- + >>> import numpy as np + >>> np.random.seed(12345) + >>> arparams = np.array([.75, -.25]) + >>> maparams = np.array([.65, .35]) + >>> ar = np.r_[1, -arparams] # add zero-lag and negate + >>> ma = np.r_[1, maparams] # add zero-lag + >>> arma_process = sm.tsa.ArmaProcess(ar, ma) + >>> arma_process.isstationary + True + >>> arma_process.isinvertible + True + >>> y = arma_process.generate_sample(250) + >>> model = sm.tsa.ARMA(y, (2, 2)).fit(trend='nc', disp=0) + >>> model.params + array([ 0.79044189, -0.23140636, 0.70072904, 0.40608028]) + """ + + # TODO: Check unit root behavior + def __init__(self, ar=None, ma=None, nobs=100): + if ar is None: + ar = np.array([1.]) + if ma is None: + ma = np.array([1.]) + self.ar = np.asarray(ar) + self.ma = np.asarray(ma) + self.arcoefs = -self.ar[1:] + self.macoefs = self.ma[1:] + self.arpoly = np.polynomial.Polynomial(self.ar) + self.mapoly = np.polynomial.Polynomial(self.ma) + self.nobs = nobs + + @classmethod + def from_coeffs(cls, arcoefs=None, macoefs=None, nobs=100): + """ + Convenience function to create ArmaProcess from ARMA representation + + Parameters + ---------- + arcoefs : array-like, optional + Coefficient for autoregressive lag polynomial, not including zero + lag. The sign is inverted to conform to the usual time series + representation of an ARMA process in statistics. See the class + docstring for more information. + macoefs : array-like, optional + Coefficient for moving-average lag polynomial, excluding zero lag + nobs : int, optional + Length of simulated time series. Used, for example, if a sample + is generated. + + Examples + -------- + >>> arparams = [.75, -.25] + >>> maparams = [.65, .35] + >>> arma_process = sm.tsa.ArmaProcess.from_coeffs(ar, ma) + >>> arma_process.isstationary + True + >>> arma_process.isinvertible + True + """ + arcoefs = [] if arcoefs is None else arcoefs + macoefs = [] if macoefs is None else macoefs + return cls(np.r_[1, -np.asarray(arcoefs)], + np.r_[1, np.asarray(macoefs)], + nobs=nobs) + + @classmethod + def from_estimation(cls, model_results, nobs=None): + """ + Convenience function to create an ArmaProcess from the results + of an ARMA estimation + + Parameters + ---------- + model_results : ARMAResults instance + A fitted model + nobs : int, optional + If None, nobs is taken from the results + """ + arcoefs = model_results.arparams + macoefs = model_results.maparams + nobs = nobs or model_results.nobs + return cls(np.r_[1, -arcoefs], np.r_[1, macoefs], nobs=nobs) + + def __mul__(self, oth): + if isinstance(oth, self.__class__): + ar = (self.arpoly * oth.arpoly).coef + ma = (self.mapoly * oth.mapoly).coef + else: + try: + aroth, maoth = oth + arpolyoth = np.polynomial.Polynomial(aroth) + mapolyoth = np.polynomial.Polynomial(maoth) + ar = (self.arpoly * arpolyoth).coef + ma = (self.mapoly * mapolyoth).coef + except: + raise TypeError('Other type is not a valid type') + return self.__class__(ar, ma, nobs=self.nobs) + + def __repr__(self): + msg = 'ArmaProcess({0}, {1}, nobs={2}) at {3}' + return msg.format(self.ar.tolist(), self.ma.tolist(), + self.nobs, hex(id(self))) + + def __str__(self): + return 'ArmaProcess\nAR: {0}\nMA: {1}'.format(self.ar.tolist(), + self.ma.tolist()) + + def acovf(self, nobs=None): + nobs = nobs or self.nobs + return arma_acovf(self.ar, self.ma, nobs=nobs) + + acovf.__doc__ = arma_acovf.__doc__ + + def acf(self, lags=None): + lags = lags or self.nobs + return arma_acf(self.ar, self.ma, lags=lags) + + acf.__doc__ = arma_acf.__doc__ + + def pacf(self, lags=None): + lags = lags or self.nobs + return arma_pacf(self.ar, self.ma, lags=lags) + + pacf.__doc__ = arma_pacf.__doc__ + + def periodogram(self, nobs=None): + nobs = nobs or self.nobs + return arma_periodogram(self.ar, self.ma, worN=nobs) + + periodogram.__doc__ = arma_periodogram.__doc__ + + def impulse_response(self, leads=None): + leads = leads or self.nobs + return arma_impulse_response(self.ar, self.ma, leads=leads) + + impulse_response.__doc__ = arma_impulse_response.__doc__ + + def arma2ma(self, lags=None): + lags = lags or self.lags + return arma2ma(self.ar, self.ma, lags=lags) + + arma2ma.__doc__ = _arma_docs['ma'] + + def arma2ar(self, lags=None): + lags = lags or self.lags + return arma2ar(self.ar, self.ma, lags=lags) + + arma2ar.__doc__ = _arma_docs['ar'] + + @property + def arroots(self): + """Roots of autoregressive lag-polynomial""" + return self.arpoly.roots() + + @property + def maroots(self): + """Roots of moving average lag-polynomial""" + return self.mapoly.roots() + + @property + def isstationary(self): + """ + Arma process is stationary if AR roots are outside unit circle + + Returns + ------- + isstationary : boolean + True if autoregressive roots are outside unit circle + """ + if np.all(np.abs(self.arroots) > 1.0): + return True + else: + return False + + @property + def isinvertible(self): + """ + Arma process is invertible if MA roots are outside unit circle + + Returns + ------- + isinvertible : boolean + True if moving average roots are outside unit circle + """ + if np.all(np.abs(self.maroots) > 1): + return True + else: + return False + + def invertroots(self, retnew=False): + """ + Make MA polynomial invertible by inverting roots inside unit circle + + Parameters + ---------- + retnew : boolean + If False (default), then return the lag-polynomial as array. + If True, then return a new instance with invertible MA-polynomial + + Returns + ------- + manew : array + new invertible MA lag-polynomial, returned if retnew is false. + wasinvertible : boolean + True if the MA lag-polynomial was already invertible, returned if + retnew is false. + armaprocess : new instance of class + If retnew is true, then return a new instance with invertible + MA-polynomial + """ + # TODO: variable returns like this? + pr = self.maroots + mainv = self.ma + invertible = self.isinvertible + if not invertible: + pr[np.abs(pr) < 1] = 1. / pr[np.abs(pr) < 1] + pnew = np.polynomial.Polynomial.fromroots(pr) + mainv = pnew.coef / pnew.coef[0] + + if retnew: + return self.__class__(self.ar, mainv, nobs=self.nobs) + else: + return mainv, invertible + + def generate_sample(self, nsample=100, scale=1., distrvs=None, axis=0, + burnin=0): + """ + Simulate an ARMA + + Parameters + ---------- + nsample : int or tuple of ints + If nsample is an integer, then this creates a 1d timeseries of + length size. If nsample is a tuple, creates a len(nsample) + dimensional time series where time is indexed along the input + variable ``axis``. All series are unless ``distrvs`` generates + dependent data. + scale : float + standard deviation of noise + distrvs : function, random number generator + function that generates the random numbers, and takes sample size + as argument + default: np.random.randn + TODO: change to size argument + burnin : integer (default: 0) + to reduce the effect of initial conditions, burnin observations + at the beginning of the sample are dropped + axis : int + See nsample. + + Returns + ------- + rvs : ndarray + random sample(s) of arma process + + Notes + ----- + Should work for n-dimensional with time series along axis, but not + tested yet. Processes are sampled independently. + """ + if distrvs is None: + distrvs = np.random.normal + if np.ndim(nsample) == 0: + nsample = [nsample] + if burnin: + # handle burin time for nd arrays + # maybe there is a better trick in scipy.fft code + newsize = list(nsample) + newsize[axis] += burnin + newsize = tuple(newsize) + fslice = [slice(None)] * len(newsize) + fslice[axis] = slice(burnin, None, None) + fslice = tuple(fslice) + else: + newsize = tuple(nsample) + fslice = tuple([slice(None)] * np.ndim(newsize)) + eta = scale * distrvs(size=newsize) + return signal.lfilter(self.ma, self.ar, eta, axis=axis)[fslice] diff --git a/statsmodels/tsa/arma_mle.py b/statsmodels/tsa/arma_mle.py new file mode 100644 index 0000000..1514a5d --- /dev/null +++ b/statsmodels/tsa/arma_mle.py @@ -0,0 +1,368 @@ +""" +Created on Sun Oct 10 14:57:50 2010 + +Author: josef-pktd, Skipper Seabold +License: BSD + +TODO: check everywhere initialization of signal.lfilter + +""" + +from statsmodels.compat.python import range +import numpy as np +from scipy import signal, optimize +from statsmodels.base.model import GenericLikelihoodModel + + +#copied from sandbox/regression/mle.py +#rename until merge of classes is complete +class Arma(GenericLikelihoodModel): #switch to generic mle + """ + univariate Autoregressive Moving Average model, conditional on initial values + + The ARMA model is estimated either with conditional Least Squares or with + conditional Maximum Likelihood. The implementation is + using scipy.filter.lfilter which makes it faster than the Kalman Filter + Implementation. The Kalman Filter Implementation however uses the exact + Maximum Likelihood and will be more accurate, statistically more efficent + in small samples. + + In large samples conditional LS, conditional MLE and exact MLE should be very + close to each other, they are equivalent asymptotically. + + Notes + ----- + this can subclass TSMLEModel + + TODO: + + - CondLS return raw estimation results + - needs checking that there is no wrong state retained, when running fit + several times with different options + - still needs consistent order options. + - Currently assumes that the mean is zero, no mean or effect of exogenous + variables are included in the estimation. + + """ + + def __init__(self, endog, exog=None): + #need to override p,q (nar,nma) correctly + super(Arma, self).__init__(endog, exog) + #set default arma(1,1) + self.nar = 1 + self.nma = 1 + #self.initialize() + + def initialize(self): + pass + + def geterrors(self, params): + #copied from sandbox.tsa.arima.ARIMA + p, q = self.nar, self.nma + ar = np.concatenate(([1], -params[:p])) + ma = np.concatenate(([1], params[p:p+q])) + + #lfilter_zi requires same length for ar and ma + maxlag = 1+max(p,q) + armax = np.zeros(maxlag) + armax[:p+1] = ar + mamax = np.zeros(maxlag) + mamax[:q+1] = ma + #remove zi again to match better with Skipper's version + #zi = signal.lfilter_zi(armax, mamax) + #errorsest = signal.lfilter(rhoy, rhoe, self.endog, zi=zi)[0] #zi is also returned + errorsest = signal.lfilter(ar, ma, self.endog) + return errorsest + + def loglike(self, params): + """ + Loglikelihood for arma model + + Notes + ----- + The ancillary parameter is assumed to be the last element of + the params vector + """ + +# #copied from sandbox.tsa.arima.ARIMA +# p = self.nar +# rhoy = np.concatenate(([1], params[:p])) +# rhoe = np.concatenate(([1], params[p:-1])) +# errorsest = signal.lfilter(rhoy, rhoe, self.endog) + errorsest = self.geterrors(params) + sigma2 = np.maximum(params[-1]**2, 1e-6) + axis = 0 + nobs = len(errorsest) + #this doesn't help for exploding paths + #errorsest[np.isnan(errorsest)] = 100 +# llike = -0.5 * (np.sum(np.log(sigma2),axis) +# + np.sum((errorsest**2)/sigma2, axis) +# + nobs*np.log(2*np.pi)) + llike = -0.5 * (nobs*np.log(sigma2) + + np.sum((errorsest**2)/sigma2, axis) + + nobs*np.log(2*np.pi)) + return llike + + #add for Jacobian calculation bsejac in GenericMLE, copied from loglike + def nloglikeobs(self, params): + """ + Loglikelihood for arma model + + Notes + ----- + The ancillary parameter is assumed to be the last element of + the params vector + """ + +# #copied from sandbox.tsa.arima.ARIMA +# p = self.nar +# rhoy = np.concatenate(([1], params[:p])) +# rhoe = np.concatenate(([1], params[p:-1])) +# errorsest = signal.lfilter(rhoy, rhoe, self.endog) + errorsest = self.geterrors(params) + sigma2 = np.maximum(params[-1]**2, 1e-6) + axis = 0 + nobs = len(errorsest) + #this doesn't help for exploding paths + #errorsest[np.isnan(errorsest)] = 100 +# llike = -0.5 * (np.sum(np.log(sigma2),axis) +# + np.sum((errorsest**2)/sigma2, axis) +# + nobs*np.log(2*np.pi)) + llike = 0.5 * (np.log(sigma2) + + (errorsest**2)/sigma2 + + np.log(2*np.pi)) + return llike + +#use generic instead +# def score(self, params): +# """ +# Score vector for Arma model +# """ +# #return None +# #print params +# jac = ndt.Jacobian(self.loglike, stepMax=1e-4) +# return jac(params)[-1] + +#use generic instead +# def hessian(self, params): +# """ +# Hessian of arma model. Currently uses numdifftools +# """ +# #return None +# Hfun = ndt.Jacobian(self.score, stepMax=1e-4) +# return Hfun(params)[-1] + + #copied from arima.ARIMA, needs splitting out of method specific code + def fit(self, order=(0,0), start_params=None, method="ls", **optkwds): + ''' + Estimate lag coefficients of an ARIMA process. + + Parameters + ---------- + order : sequence + p,d,q where p is the number of AR lags, d is the number of + differences to induce stationarity, and q is the number of + MA lags to estimate. + method : str {"ls", "ssm"} + Method of estimation. LS is conditional least squares. + SSM is state-space model and the Kalman filter is used to + maximize the exact likelihood. + rhoy0, rhoe0 : array_like (optional) + starting values for estimation + + Returns + ------- + (rh, cov_x, infodict, mesg, ier) : output of scipy.optimize.leastsq + + rh : + estimate of lag parameters, concatenated [rhoy, rhoe] + cov_x : + unscaled (!) covariance matrix of coefficient estimates + ''' + if not hasattr(order, '__iter__'): + raise ValueError("order must be an iterable sequence. Got type \ +%s instead" % type(order)) + + p,q = order + self.nar = p # needed for geterrors, needs cleanup + self.nma = q + +## if d > 0: +## raise ValueError("Differencing not implemented yet") +## # assume no constant, ie mu = 0 +## # unless overwritten then use w_bar for mu +## Y = np.diff(endog, d, axis=0) #TODO: handle lags? + + x = self.endog.squeeze() # remove the squeeze might be needed later +# def errfn( rho): +# #rhoy, rhoe = rho +# rhoy = np.concatenate(([1], rho[:p])) +# rhoe = np.concatenate(([1], rho[p:])) +# etahatr = signal.lfilter(rhoy, rhoe, x) +# #print rho,np.sum(etahatr*etahatr) +# return etahatr + + #replace with start_params + if start_params is None: + arcoefs0 = 0.5 * np.ones(p) + macoefs0 = 0.5 * np.ones(q) + start_params = np.r_[arcoefs0, macoefs0] + + method = method.lower() + + if method == "ls": + #update + optim_kwds = dict(ftol=1e-10, full_output=True) + optim_kwds.update(optkwds) + #changes: use self.geterrors (nobs,): +# rh, cov_x, infodict, mesg, ier = \ +# optimize.leastsq(errfn, np.r_[rhoy0, rhoe0],ftol=1e-10,full_output=True) + rh, cov_x, infodict, mesg, ier = \ + optimize.leastsq(self.geterrors, start_params, **optim_kwds) + #TODO: need missing parameter estimates for LS, scale, residual-sdt + #TODO: integrate this into the MLE.fit framework? + elif method == "ssm": + pass + else: #this is also conditional least squares + # fmin_bfgs is slow or doesn't work yet + errfnsum = lambda rho : np.sum(self.geterrors(rho)**2) + #xopt, {fopt, gopt, Hopt, func_calls, grad_calls + optim_kwds = dict(maxiter=2, full_output=True) + optim_kwds.update(optkwds) + + rh, fopt, gopt, cov_x, _,_, ier = \ + optimize.fmin_bfgs(errfnsum, start_params, **optim_kwds) + infodict, mesg = None, None + self.params = rh + self.ar_est = np.concatenate(([1], -rh[:p])) + self.ma_est = np.concatenate(([1], rh[p:p+q])) + #rh[-q:])) doesnt work for q=0, added p+q as endpoint for safety if var is included + self.error_estimate = self.geterrors(rh) + return rh, cov_x, infodict, mesg, ier + + #renamed and needs check with other fit + def fit_mle(self, order=(0,0), start_params=None, method='nm', maxiter=5000, tol=1e-08, + **kwds): + '''Estimate an ARMA model with given order using Conditional Maximum Likelihood + + Parameters + ---------- + order : tuple, 2 elements + specifies the number of lags(nar, nma) to include, not including lag 0 + start_params : array_like, 1d, (nar+nma+1,) + start parameters for the optimization, the length needs to be equal to the + number of ar plus ma coefficients plus 1 for the residual variance + method : str + optimization method, as described in LikelihoodModel + maxiter : int + maximum number of iteration in the optimization + tol : float + tolerance (?) for the optimization + + Returns + ------- + mlefit : instance of (GenericLikelihood ?)Result class + contains estimation results and additional statistics + + ''' + nar, nma = p, q = order + self.nar, self.nma = nar, nma + if start_params is None: + start_params = np.concatenate((0.05*np.ones(nar + nma), [1])) + mlefit = super(Arma, self).fit(start_params=start_params, + maxiter=maxiter, method=method, tol=tol, **kwds) + #bug fix: running ls and then mle didn't overwrite this + rh = mlefit.params + self.params = rh + self.ar_est = np.concatenate(([1], -rh[:p])) + self.ma_est = np.concatenate(([1], rh[p:p+q])) + self.error_estimate = self.geterrors(rh) + return mlefit + + #copied from arima.ARIMA + def predicted(self, ar=None, ma=None): + '''past predicted values of time series + just added, not checked yet + ''' + +# #ar, ma not used, not useful as arguments for predicted pattern +# #need it for prediction for other time series, endog +# if ar is None: +# ar = self.ar_est +# if ma is None: +# ma = self.ma_est + return self.endog - self.error_estimate + + #copied from arima.ARIMA + def forecast(self, ar=None, ma=None, nperiod=10): + '''nperiod ahead forecast at the end of the data period + + forecast is based on the error estimates + ''' + eta = np.r_[self.error_estimate, np.zeros(nperiod)] + if ar is None: + ar = self.ar_est + if ma is None: + ma = self.ma_est + return signal.lfilter(ma, ar, eta) + + def forecast2(self, step_ahead=1, start=None, end=None, endog=None): + '''rolling h-period ahead forecast without reestimation, 1 period ahead only + + in construction: uses loop to go over data and + not sure how to get (finite) forecast polynomial for h-step + + Notes + ----- + just the idea: + To improve performance with expanding arrays, specify total period by endog + and the conditional forecast period by step_ahead + + This should be used by/with results which should contain predicted error or + noise. Could be either a recursive loop or lfilter with a h-step ahead + forecast filter, but then I need to calculate that one. ??? + + further extension: allow reestimation option + + question: return h-step ahead or range(h)-step ahead ? + ''' + if step_ahead != 1: + raise NotImplementedError + + p,q = self.nar, self.nma + k = 0 + errors = self.error_estimate + y = self.endog + + #this is for 1step ahead only, still need h-step predictive polynomial + arcoefs_rev = self.params[k:k+p][::-1] + macoefs_rev = self.params[k+p:k+p+q][::-1] + + predicted = [] + # create error vector iteratively + for i in range(start, end): + predicted.append(sum(arcoefs_rev*y[i-p:i]) + sum(macoefs_rev * errors[i-p:i])) + + return np.asarray(predicted) + + def forecast3(self, step_ahead=1, start=None): #, end=None): + '''another try for h-step ahead forecasting + ''' + + from .arima_process import arma2ma + p,q = self.nar, self.nma + k=0 + ar = self.params[k:k+p] + ma = self.params[k+p:k+p+q] + marep = arma2ma(ar,ma, start)[step_ahead+1:] #truncated ma representation + errors = self.error_estimate + forecasts = np.convolve(errors, marep) + return forecasts#[-(errors.shape[0] - start-5):] #get 5 overlapping for testing + + #copied from arima.ARIMA + #TODO: is this needed as a method at all? + #JP: not needed in this form, but can be replace with using the parameters + @classmethod + def generate_sample(cls, ar, ma, nsample, std=1): + eta = std * np.random.randn(nsample) + return signal.lfilter(ma, ar, eta) diff --git a/statsmodels/tsa/base/__init__.py b/statsmodels/tsa/base/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/tsa/base/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/tsa/base/datetools.py b/statsmodels/tsa/base/datetools.py new file mode 100644 index 0000000..f50ec51 --- /dev/null +++ b/statsmodels/tsa/base/datetools.py @@ -0,0 +1,193 @@ +""" +Tools for working with dates +""" +from statsmodels.compat.python import (lrange, lzip, lmap, + asstr, zip, map) +import re +import datetime + +from pandas import to_datetime +import numpy as np + +_quarter_to_day = { + "1" : (3, 31), + "2" : (6, 30), + "3" : (9, 30), + "4" : (12, 31), + "I" : (3, 31), + "II" : (6, 30), + "III" : (9, 30), + "IV" : (12, 31) + } + + +_mdays = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] +_months_with_days = lzip(lrange(1,13), _mdays) +_month_to_day = dict(zip(map(str,lrange(1,13)), _months_with_days)) +_month_to_day.update(dict(zip(["I", "II", "III", "IV", "V", "VI", + "VII", "VIII", "IX", "X", "XI", "XII"], + _months_with_days))) + +# regex patterns +_y_pattern = r'^\d?\d?\d?\d$' + +_q_pattern = r''' +^ # beginning of string +\d?\d?\d?\d # match any number 1-9999, includes leading zeros + +(:?q) # use q or a : as a separator + +([1-4]|(I{1,3}V?)) # match 1-4 or I-IV roman numerals + +$ # end of string +''' + +_m_pattern = r''' +^ # beginning of string +\d?\d?\d?\d # match any number 1-9999, includes leading zeros + +(:?m) # use m or a : as a separator + +(([1-9][0-2]?)|(I?XI{0,2}|I?VI{0,3}|I{1,3})) # match 1-12 or + # I-XII roman numerals + +$ # end of string +''' + + +#NOTE: see also ts.extras.isleapyear, which accepts a sequence +def _is_leap(year): + year = int(year) + return year % 4 == 0 and (year % 100 != 0 or year % 400 == 0) + + +def date_parser(timestr, parserinfo=None, **kwargs): + """ + Uses dateutil.parser.parse, but also handles monthly dates of the form + 1999m4, 1999:m4, 1999:mIV, 1999mIV and the same for quarterly data + with q instead of m. It is not case sensitive. The default for annual + data is the end of the year, which also differs from dateutil. + """ + flags = re.IGNORECASE | re.VERBOSE + if re.search(_q_pattern, timestr, flags): + y,q = timestr.replace(":","").lower().split('q') + month, day = _quarter_to_day[q.upper()] + year = int(y) + elif re.search(_m_pattern, timestr, flags): + y,m = timestr.replace(":","").lower().split('m') + month, day = _month_to_day[m.upper()] + year = int(y) + if _is_leap(y) and month == 2: + day += 1 + elif re.search(_y_pattern, timestr, flags): + month, day = 12, 31 + year = int(timestr) + else: + return to_datetime(timestr, **kwargs) + + return datetime.datetime(year, month, day) + + +def date_range_str(start, end=None, length=None): + """ + Returns a list of abbreviated date strings. + + Parameters + ---------- + start : str + The first abbreviated date, for instance, '1965q1' or '1965m1' + end : str, optional + The last abbreviated date if length is None. + length : int, optional + The length of the returned array of end is None. + + Returns + ------- + date_range : list + List of strings + """ + flags = re.IGNORECASE | re.VERBOSE + #_check_range_inputs(end, length, freq) + start = start.lower() + if re.search(_m_pattern, start, flags): + annual_freq = 12 + split = 'm' + elif re.search(_q_pattern, start, flags): + annual_freq = 4 + split = 'q' + elif re.search(_y_pattern, start, flags): + annual_freq = 1 + start += 'a1' # hack + if end: + end += 'a1' + split = 'a' + else: + raise ValueError("Date %s not understood" % start) + yr1, offset1 = lmap(int, start.replace(":","").split(split)) + if end is not None: + end = end.lower() + yr2, offset2 = lmap(int, end.replace(":","").split(split)) + length = (yr2 - yr1) * annual_freq + offset2 + elif length: + yr2 = yr1 + length // annual_freq + offset2 = length % annual_freq + (offset1 - 1) + years = np.repeat(lrange(yr1+1, yr2), annual_freq).tolist() + years = np.r_[[str(yr1)]*(annual_freq+1-offset1), years] # tack on first year + years = np.r_[years, [str(yr2)]*offset2] # tack on last year + if split != 'a': + offset = np.tile(np.arange(1, annual_freq+1), yr2-yr1-1) + offset = np.r_[np.arange(offset1, annual_freq+1).astype('a2'), offset] + offset = np.r_[offset, np.arange(1,offset2+1).astype('a2')] + date_arr_range = [''.join([i, split, asstr(j)]) for i,j in + zip(years, offset)] + else: + date_arr_range = years.tolist() + return date_arr_range + + +def dates_from_str(dates): + """ + Turns a sequence of date strings and returns a list of datetime. + + Parameters + ---------- + dates : array-like + A sequence of abbreviated dates as string. For instance, + '1996m1' or '1996Q1'. The datetime dates are at the end of the + period. + + Returns + ------- + date_list : array + A list of datetime types. + """ + return lmap(date_parser, dates) + + +def dates_from_range(start, end=None, length=None): + """ + Turns a sequence of date strings and returns a list of datetime. + + Parameters + ---------- + start : str + The first abbreviated date, for instance, '1965q1' or '1965m1' + end : str, optional + The last abbreviated date if length is None. + length : int, optional + The length of the returned array of end is None. + + Examples + -------- + >>> import statsmodels.api as sm + >>> import pandas as pd + >>> dates = pd.date_range('1960m1', length=nobs) + + + Returns + ------- + date_list : array + A list of datetime types. + """ + dates = date_range_str(start, end, length) + return dates_from_str(dates) diff --git a/statsmodels/tsa/base/tests/__init__.py b/statsmodels/tsa/base/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/base/tests/test_base.py b/statsmodels/tsa/base/tests/test_base.py new file mode 100644 index 0000000..3023648 --- /dev/null +++ b/statsmodels/tsa/base/tests/test_base.py @@ -0,0 +1,113 @@ +from datetime import datetime + +import numpy as np +import numpy.testing as npt +import pandas as pd +import pytest + +from statsmodels.tsa.base.tsa_model import TimeSeriesModel +from statsmodels.tools.testing import assert_equal +from statsmodels.tools.sm_exceptions import ValueWarning + + +def test_pandas_nodates_index(): + + data = [988, 819, 964] + dates = ['a', 'b', 'c'] + s = pd.Series(data, index=dates) + + # TODO: Remove this, this is now valid + # npt.assert_raises(ValueError, TimeSeriesModel, s) + + # Test with a non-date index that doesn't raise an exception because it + # can be coerced into a nanosecond DatetimeIndex + data = [988, 819, 964] + # index=pd.date_range('1970-01-01', periods=3, freq='QS') + index = pd.to_datetime([100, 101, 102]) + s = pd.Series(data, index=index) + + actual_str = (index[0].strftime('%Y-%m-%d %H:%M:%S.%f') + + str(index[0].value)) + assert_equal(actual_str, '1970-01-01 00:00:00.000000100') + + with pytest.warns(ValueWarning, match="No frequency information"): + mod = TimeSeriesModel(s) + + start, end, out_of_sample, _ = mod._get_prediction_index(0, 4) + assert_equal(len(mod.data.predict_dates), 5) + + +def test_predict_freq(): + # test that predicted dates have same frequency + x = np.arange(1,36.) + + # there's a bug in pandas up to 0.10.2 for YearBegin + #dates = date_range("1972-4-1", "2007-4-1", freq="AS-APR") + dates = pd.date_range("1972-4-30", "2006-4-30", freq="A-APR") + series = pd.Series(x, index=dates) + model = TimeSeriesModel(series) + #npt.assert_(model.data.freq == "AS-APR") + assert_equal(model._index.freqstr, "A-APR") + + start, end, out_of_sample, _ = ( + model._get_prediction_index("2006-4-30", "2016-4-30")) + + predict_dates = model.data.predict_dates + + #expected_dates = date_range("2006-12-31", "2016-12-31", + # freq="AS-APR") + expected_dates = pd.date_range("2006-4-30", "2016-4-30", freq="A-APR") + assert_equal(predict_dates, expected_dates) + #ptesting.assert_series_equal(predict_dates, expected_dates) + + +def test_keyerror_start_date(): + x = np.arange(1,36.) + + # dates = date_range("1972-4-1", "2007-4-1", freq="AS-APR") + dates = pd.date_range("1972-4-30", "2006-4-30", freq="A-APR") + series = pd.Series(x, index=dates) + model = TimeSeriesModel(series) + + npt.assert_raises(KeyError, model._get_prediction_index, "1970-4-30", None) + + +def test_period_index(): + # test 1285 + + dates = pd.period_range(start="1/1/1990", periods=20, freq="M") + x = np.arange(1, 21.) + + model = TimeSeriesModel(pd.Series(x, index=dates)) + assert_equal(model._index.freqstr, "M") + model = TimeSeriesModel(pd.Series(x, index=dates)) + npt.assert_(model.data.freq == "M") + + +def test_pandas_dates(): + + data = [988, 819, 964] + dates = ['2016-01-01 12:00:00', '2016-02-01 12:00:00', '2016-03-01 12:00:00'] + + datetime_dates = pd.to_datetime(dates) + + result = pd.Series(data=data, index=datetime_dates, name='price') + df = pd.DataFrame(data={'price': data}, index=pd.DatetimeIndex(dates, freq='MS')) + + model = TimeSeriesModel(df['price']) + + assert_equal(model.data.dates, result.index) + + +def test_get_predict_start_end(): + index = pd.date_range(start='1970-01-01', end='1990-01-01', freq='AS') + endog = pd.Series(np.zeros(10), index[:10]) + model = TimeSeriesModel(endog) + + predict_starts = [1, '1971-01-01', datetime(1971, 1, 1), index[1]] + predict_ends = [20, '1990-01-01', datetime(1990, 1, 1), index[-1]] + + desired = (1, 9, 11) + for start in predict_starts: + for end in predict_ends: + assert_equal(model._get_prediction_index(start, end)[:3], desired) diff --git a/statsmodels/tsa/base/tests/test_datetools.py b/statsmodels/tsa/base/tests/test_datetools.py new file mode 100644 index 0000000..fdf6a4f --- /dev/null +++ b/statsmodels/tsa/base/tests/test_datetools.py @@ -0,0 +1,87 @@ +from datetime import datetime +import numpy.testing as npt +from statsmodels.tsa.base.datetools import ( + date_parser, dates_from_range) + + +def test_regex_matching_month(): + t1 = "1999m4" + t2 = "1999:m4" + t3 = "1999:mIV" + t4 = "1999mIV" + result = datetime(1999, 4, 30) + npt.assert_equal(date_parser(t1), result) + npt.assert_equal(date_parser(t2), result) + npt.assert_equal(date_parser(t3), result) + npt.assert_equal(date_parser(t4), result) + + +def test_regex_matching_quarter(): + t1 = "1999q4" + t2 = "1999:q4" + t3 = "1999:qIV" + t4 = "1999qIV" + result = datetime(1999, 12, 31) + npt.assert_equal(date_parser(t1), result) + npt.assert_equal(date_parser(t2), result) + npt.assert_equal(date_parser(t3), result) + npt.assert_equal(date_parser(t4), result) + + +def test_dates_from_range(): + results = [datetime(1959, 3, 31, 0, 0), + datetime(1959, 6, 30, 0, 0), + datetime(1959, 9, 30, 0, 0), + datetime(1959, 12, 31, 0, 0), + datetime(1960, 3, 31, 0, 0), + datetime(1960, 6, 30, 0, 0), + datetime(1960, 9, 30, 0, 0), + datetime(1960, 12, 31, 0, 0), + datetime(1961, 3, 31, 0, 0), + datetime(1961, 6, 30, 0, 0), + datetime(1961, 9, 30, 0, 0), + datetime(1961, 12, 31, 0, 0), + datetime(1962, 3, 31, 0, 0), + datetime(1962, 6, 30, 0, 0)] + dt_range = dates_from_range('1959q1', '1962q2') + npt.assert_(results == dt_range) + + # test with starting period not the first with length + results = results[2:] + dt_range = dates_from_range('1959q3', length=len(results)) + npt.assert_(results == dt_range) + + # check month + results = [datetime(1959, 3, 31, 0, 0), + datetime(1959, 4, 30, 0, 0), + datetime(1959, 5, 31, 0, 0), + datetime(1959, 6, 30, 0, 0), + datetime(1959, 7, 31, 0, 0), + datetime(1959, 8, 31, 0, 0), + datetime(1959, 9, 30, 0, 0), + datetime(1959, 10, 31, 0, 0), + datetime(1959, 11, 30, 0, 0), + datetime(1959, 12, 31, 0, 0), + datetime(1960, 1, 31, 0, 0), + datetime(1960, 2, 28, 0, 0), + datetime(1960, 3, 31, 0, 0), + datetime(1960, 4, 30, 0, 0), + datetime(1960, 5, 31, 0, 0), + datetime(1960, 6, 30, 0, 0), + datetime(1960, 7, 31, 0, 0), + datetime(1960, 8, 31, 0, 0), + datetime(1960, 9, 30, 0, 0), + datetime(1960, 10, 31, 0, 0), + datetime(1960, 12, 31, 0, 0), + datetime(1961, 1, 31, 0, 0), + datetime(1961, 2, 28, 0, 0), + datetime(1961, 3, 31, 0, 0), + datetime(1961, 4, 30, 0, 0), + datetime(1961, 5, 31, 0, 0), + datetime(1961, 6, 30, 0, 0), + datetime(1961, 7, 31, 0, 0), + datetime(1961, 8, 31, 0, 0), + datetime(1961, 9, 30, 0, 0), + datetime(1961, 10, 31, 0, 0)] + + dt_range = dates_from_range("1959m3", length=len(results)) diff --git a/statsmodels/tsa/base/tests/test_tsa_indexes.py b/statsmodels/tsa/base/tests/test_tsa_indexes.py new file mode 100644 index 0000000..b16c2b0 --- /dev/null +++ b/statsmodels/tsa/base/tests/test_tsa_indexes.py @@ -0,0 +1,979 @@ +""" +Test index support in time series models + +1. Test support for passing / constructing the underlying index in __init__ +2. Test wrapping of output using the underlying index +3. Test wrapping of prediction / forecasting using the underlying index or + extensions of it. + +Author: Chad Fulton +License: BSD-3 +""" +from __future__ import division, absolute_import, print_function + +import pytest +import warnings +import numpy as np +import pandas as pd + +from numpy.testing import assert_equal, assert_raises + +from statsmodels.tsa.base import tsa_model + +nobs = 5 +base_dta = np.arange(nobs) +dta = [ + base_dta.tolist(), + base_dta, + pd.Series(base_dta), + pd.DataFrame(base_dta) +] + +base_date_indexes = [ + # (usual candidates) + pd.date_range(start='1950-01-01', periods=nobs, freq='D'), + pd.date_range(start='1950-01-01', periods=nobs, freq='W'), + pd.date_range(start='1950-01-01', periods=nobs, freq='M'), + pd.date_range(start='1950-01-01', periods=nobs, freq='Q'), + pd.date_range(start='1950-01-01', periods=nobs, freq='A'), + # (some more complicated frequencies) + pd.date_range(start='1950-01-01', periods=nobs, freq='2Q'), + pd.date_range(start='1950-01-01', periods=nobs, freq='2QS'), + pd.date_range(start='1950-01-01', periods=nobs, freq='5s'), + pd.date_range(start='1950-01-01', periods=nobs, freq='1D10min')] + +# Note: we separate datetime indexes and period indexes because the +# date coercion does not handle string versions of PeriodIndex objects +# most of the time. +base_period_indexes = [ + pd.period_range(start='1950-01-01', periods=nobs, freq='D'), + pd.period_range(start='1950-01-01', periods=nobs, freq='W'), + pd.period_range(start='1950-01-01', periods=nobs, freq='M'), + pd.period_range(start='1950-01-01', periods=nobs, freq='Q'), + pd.period_range(start='1950-01-01', periods=nobs, freq='A')] +try: + # Only later versions of pandas support these + base_period_indexes += [ + pd.period_range(start='1950-01-01', periods=nobs, freq='2Q'), + pd.period_range(start='1950-01-01', periods=nobs, freq='5s'), + pd.period_range(start='1950-01-01', periods=nobs, freq='1D10min')] +except: + pass + +date_indexes = [ + (x, None) for x in base_date_indexes] +period_indexes = [ + (x, None) for x in base_period_indexes] + +numpy_datestr_indexes = [ + (x.map(str), x.freq) for x in base_date_indexes] +list_datestr_indexes = [ + (x.tolist(), y) for x, y in numpy_datestr_indexes] +series_datestr_indexes = [ + (pd.Series(x), y) for x, y in list_datestr_indexes] + +numpy_datetime_indexes = [ + (pd.to_datetime(x).to_pydatetime(), x.freq) + for x in base_date_indexes] +list_datetime_indexes = [ + (x.tolist(), y) for x, y in numpy_datetime_indexes] +series_datetime_indexes = [ + (pd.Series(x, dtype=object), y) for x, y in list_datetime_indexes] + +series_timestamp_indexes = [ + (pd.Series(x), x.freq) for x in base_date_indexes] + +# Supported increment indexes +supported_increment_indexes = [ + (pd.Int64Index(np.arange(nobs)), None), + (pd.RangeIndex(start=0, stop=nobs, step=1), None), + (pd.RangeIndex(start=-5, stop=nobs - 5, step=1), None), + (pd.RangeIndex(start=0, stop=nobs * 6, step=6), None)] + +# Supported date indexes +# Only the Int64Index and the `date_indexes` are valid without +# frequency information +supported_date_indexes = ( + numpy_datestr_indexes + + list_datestr_indexes + series_datestr_indexes + + numpy_datetime_indexes + list_datetime_indexes + + series_datetime_indexes + series_timestamp_indexes) + +# Unsupported (but still valid) indexes +unsupported_indexes = [ + # Non-incrementing-from-zero indexes + (np.arange(1, nobs+1), None), + (np.arange(nobs)[::-1], None), + # Float indexes, even if they increment from zero + (np.arange(nobs) * 1.0, None), + # Non-date-string indexes + ([x for x in 'abcde'], None), + # Non-date-object indexes + ([str, 1, 'a', -30.1, {}], None), +] + +# Unsupported date indexes (i.e. those without inferrable frequency) +unsupported_date_indexes = [ + (['1950', '1952', '1941', '1954', '1991'], None), + (['1950-01-01', '1950-01-02', '1950-01-03', + '1950-01-04', '1950-01-06'], None) +] + + +def test_instantiation_valid(): + tsa_model.__warningregistry__ = {} + + # The primary goal of this test function is to make sure the + # combinations that are supposed to be valid are actually valid, and + # that valid but unsupported options give the appropriate warning + # Secondarily, it also has some tests that invalid combinations raise + # exceptions, although it's not intended to be comprehensive. + # + # Each of `endog`, `exog` can be in the following categories: + # 0. None (only for exog) + # 1. list + # 2. numpy array + # 3. pandas series + # 4. pandas dataframe + # + # Each pandas index (of `endog`, `exog`, or passed to `dates`) can be: + # 0. None + # 1. RangeIndex (if applicable; i.e. if Pandas >= 0.18) + # 2. Int64Index with values exactly equal to 0, 1, ..., nobs-1 + # 3. DatetimeIndex with frequency + # 4. PeriodIndex with frequency + # 5. Anything that doesn't fall into the above categories also should + # only raise an exception if it was passed to dates, and may trigger + # a warning otherwise. + # + # `date` can be one of the following: + # 0. None + # 2. Pandas index #2 + # 3. Pandas index #3 + # 4. List of date strings (requires freq) + # 5. List of datetime objects (requires freq) + # 6. Array of date strings (requires freq) + # 7. Array of datetime objects (requires freq) + # 8. Series of date strings (requires freq) + # 9. Series of datetime objects (requires freq) + # 10. Series of pandas timestamps (requires freq) + # 11. Anything that doesn't fall into the above categories should raise + # an exception. + # + # `freq` can be: + # 0. None + # 1. Something that can be passed to `pd.to_offset` + # 2. Anything that can't should raise an Exception + # + # Each test will be denoted by: + # endog.index:exog.index/date/freq where the corresponding + # location is the integer from above; e.g. 1.0:0.0/9/1 corresponds to + # - List endog (with no index) + # - No exog + # - Series of datetime objects + # - Something valid for `pd.to_offset` (e.g. 'D', if that works with + # dates) + # + # Notice that the endog.index:exog.index really collapses to a single + # element, which is the evaluated `row_label`. This is first the exog + # index, if exists, then the endog index, if it exists, or None + # otherwise. **Thus, we will not test `exog` here.** + # + # Example valid combinations of row_label/date/freq include: + # - */0/0 (i.e. anything is valid if date and freq are not passed) + # - */%/% where %/% denotes a valid date/freq combination (i.e. any + # row_label is valid if a valid date/freq combination is given) + # + # Example invalid combinations include: + # - [1-2],[3-4].4/0/[1-2] (i.e. if have freq, then must have, or + # coerce, a date index) + # - */[4-10]/0 (i.e. for some types of dates, freq must be passed) + + # Baseline: list, numpy endog with no dates, no freq + for endog in dta[:2]: + # No indexes, should not raise warnings + with warnings.catch_warnings(): + warnings.simplefilter('error') + + mod = tsa_model.TimeSeriesModel(endog) + assert_equal(isinstance(mod._index, + (pd.Int64Index, pd.RangeIndex)), True) + assert_equal(mod._index_none, True) + assert_equal(mod._index_dates, False) + assert_equal(mod._index_generated, True) + assert_equal(mod.data.dates, None) + assert_equal(mod.data.freq, None) + + # Test list, numpy endog, pandas w/o index; with dates / freq argument + for endog in dta: + # Supported date indexes, should not raise warnings, do not need freq + with warnings.catch_warnings(): + warnings.simplefilter('error') + + for ix, freq in date_indexes + period_indexes: + mod = tsa_model.TimeSeriesModel(endog, dates=ix) + if freq is None: + freq = ix.freq + if not isinstance(freq, str): + freq = freq.freqstr + assert_equal( + isinstance(mod._index, (pd.DatetimeIndex, pd.PeriodIndex)), + True) + assert_equal(mod._index_none, False) + assert_equal(mod._index_dates, True) + assert_equal(mod._index_generated, False) + assert_equal(mod._index.freq, mod._index_freq) + assert_equal(mod.data.dates.equals(mod._index), True) + assert_equal(mod.data.freq, freq) + + # Supported date indexes, should not raise warnings, can use valid freq + with warnings.catch_warnings(): + warnings.simplefilter('error') + + for ix, freq in date_indexes + period_indexes: + mod = tsa_model.TimeSeriesModel(endog, dates=ix, freq=freq) + if freq is None: + freq = ix.freq + if not isinstance(freq, str): + freq = freq.freqstr + assert_equal( + isinstance(mod._index, (pd.DatetimeIndex, pd.PeriodIndex)), + True) + assert_equal(mod._index_none, False) + assert_equal(mod._index_dates, True) + assert_equal(mod._index_generated, False) + assert_equal(mod._index.freq, mod._index_freq) + assert_equal(mod.data.dates.equals(mod._index), True) + assert_equal(mod.data.freq, freq) + + # Other supported indexes, with valid freq, should not raise warnings + with warnings.catch_warnings(): + warnings.simplefilter('error') + + for ix, freq in supported_date_indexes: + mod = tsa_model.TimeSeriesModel(endog, dates=ix, freq=freq) + if freq is None: + freq = ix.freq + if not isinstance(freq, str): + freq = freq.freqstr + assert_equal( + isinstance(mod._index, (pd.DatetimeIndex, pd.PeriodIndex)), + True) + assert_equal(mod._index_none, False) + assert_equal(mod._index_dates, True) + assert_equal(mod._index_generated, False) + assert_equal(mod._index.freq, mod._index_freq) + assert_equal(mod.data.dates.equals(mod._index), True) + assert_equal(mod.data.freq, freq) + + # Since only supported indexes are valid `dates` arguments, everything + # else is invalid here + for ix, freq in supported_increment_indexes + unsupported_indexes: + assert_raises(ValueError, tsa_model.TimeSeriesModel, endog, + dates=ix) + + # Test pandas (Series, DataFrame); with index (no dates/freq argument) + for base_endog in dta[2:4]: + # DatetimeIndex and PeriodIndex, should not raise warnings + with warnings.catch_warnings(): + warnings.simplefilter('error') + + for ix, freq in date_indexes + period_indexes: + endog = base_endog.copy() + endog.index = ix + + mod = tsa_model.TimeSeriesModel(endog) + if freq is None: + freq = ix.freq + if not isinstance(freq, str): + freq = freq.freqstr + assert_equal( + isinstance(mod._index, (pd.DatetimeIndex, pd.PeriodIndex)), + True) + assert_equal(mod._index_none, False) + assert_equal(mod._index_dates, True) + assert_equal(mod._index_generated, False) + assert_equal(mod._index.freq, mod._index_freq) + assert_equal(mod.data.dates.equals(mod._index), True) + assert_equal(mod.data.freq, freq) + + # Increment index (this is a "supported" index in the sense that it + # doesn't raise a warning, but obviously not a date index) + endog = base_endog.copy() + endog.index = supported_increment_indexes[0][0] + + mod = tsa_model.TimeSeriesModel(endog) + assert_equal(type(mod._index) == pd.Int64Index, True) + assert_equal(mod._index_none, False) + assert_equal(mod._index_dates, False) + assert_equal(mod._index_generated, False) + assert_equal(mod._index_freq, None) + assert_equal(mod.data.dates, None) + assert_equal(mod.data.freq, None) + + # RangeIndex (start=0, end=nobs, so equivalent to increment index) + endog = base_endog.copy() + endog.index = supported_increment_indexes[1][0] + + mod = tsa_model.TimeSeriesModel(endog) + assert_equal(type(mod._index) == pd.RangeIndex, True) + assert_equal(mod._index_none, False) + assert_equal(mod._index_dates, False) + assert_equal(mod._index_generated, False) + assert_equal(mod._index_freq, None) + assert_equal(mod.data.dates, None) + assert_equal(mod.data.freq, None) + + # Supported indexes *when a freq is given*, should not raise a warning + with warnings.catch_warnings(): + warnings.simplefilter('error') + + for ix, freq in supported_date_indexes: + endog = base_endog.copy() + endog.index = ix + + mod = tsa_model.TimeSeriesModel(endog, freq=freq) + if freq is None: + freq = ix.freq + if not isinstance(freq, str): + freq = freq.freqstr + assert_equal( + isinstance(mod._index, (pd.DatetimeIndex, pd.PeriodIndex)), + True) + assert_equal(mod._index_none, False) + assert_equal(mod._index_dates, True) + assert_equal(mod._index_generated, False) + assert_equal(mod._index.freq, mod._index_freq) + assert_equal(mod.data.dates.equals(mod._index), True) + assert_equal(mod.data.freq, freq) + + # Unsupported (or any) indexes to the given series, *when a supported + # date and freq is given*, should not raise a warning + with warnings.catch_warnings(): + warnings.simplefilter('error') + + for ix, freq in supported_date_indexes: + endog = base_endog.copy() + endog.index = unsupported_indexes[0][0] + + mod = tsa_model.TimeSeriesModel(endog, dates=ix, freq=freq) + if freq is None: + freq = ix.freq + if not isinstance(freq, str): + freq = freq.freqstr + assert_equal( + isinstance(mod._index, (pd.DatetimeIndex, pd.PeriodIndex)), + True) + assert_equal(mod._index_none, False) + assert_equal(mod._index_dates, True) + assert_equal(mod._index_generated, False) + assert_equal(mod._index.freq, mod._index_freq) + assert_equal(mod.data.dates.equals(mod._index), True) + assert_equal(mod.data.freq, freq) + + # Date indexes with inferrable freq, but no given freq, should all give + # warnings + message = ('No frequency information was provided,' + ' so inferred frequency %s will be used.') + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('always') + + for ix, freq in supported_date_indexes: + endog = base_endog.copy() + endog.index = ix + mod = tsa_model.TimeSeriesModel(endog) + if freq is None: + freq = ix.freq + if not isinstance(freq, str): + freq = freq.freqstr + assert_equal(type(mod._index) == pd.DatetimeIndex, True) + assert_equal(mod._index_none, False) + assert_equal(mod._index_dates, True) + assert_equal(mod._index_generated, False) + assert_equal(mod._index.freq, mod._index_freq) + assert_equal(mod.data.dates.equals(mod._index), True) + + # Note: here, we need to hedge the test a little bit because + # inferred frequencies aren't always the same as the original + # frequency. From the examples above, when the actual freq is + # 2QS-OCT, the inferred freq is 2QS-JAN. This is an issue with + # inferred frequencies, but since we are warning the user, it's + # not a failure of the code. Thus we only test the "major" part + # of the freq, and just test that the right message is given + # (even though it won't have the actual freq of the data in + # it). + assert_equal(mod.data.freq.split('-')[0], freq.split('-')[0]) + assert_equal(str(w[-1].message), message % mod.data.freq) + + # Unsupported (but valid) indexes, should all give warnings + message = ('An unsupported index was provided and will be' + ' ignored when e.g. forecasting.') + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('always') + + for ix, freq in unsupported_indexes: + endog = base_endog.copy() + endog.index = ix + mod = tsa_model.TimeSeriesModel(endog) + assert_equal(isinstance(mod._index, + (pd.Int64Index, pd.RangeIndex)), True) + assert_equal(mod._index_none, False) + assert_equal(mod._index_dates, False) + assert_equal(mod._index_generated, True) + assert_equal(mod._index_freq, None) + assert_equal(mod.data.dates, None) + assert_equal(mod.data.freq, None) + + assert_equal(str(w[0].message), message) + + # Date indexes without inferrable freq, and with no given freq, should + # all give warnings + message = ('A date index has been provided, but it has no' + ' associated frequency information and so will be' + ' ignored when e.g. forecasting.') + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('always') + + for ix, freq in unsupported_date_indexes: + endog = base_endog.copy() + endog.index = ix + mod = tsa_model.TimeSeriesModel(endog) + assert_equal(isinstance(mod._index, + (pd.Int64Index, pd.RangeIndex)), True) + assert_equal(mod._index_none, False) + assert_equal(mod._index_dates, False) + assert_equal(mod._index_generated, True) + assert_equal(mod._index_freq, None) + assert_equal(mod.data.dates, None) + assert_equal(mod.data.freq, None) + + assert_equal(str(w[0].message), message) + + # Test (invalid) freq with no index + endog = dta[0] + assert_raises(ValueError, tsa_model.TimeSeriesModel, endog, + freq=date_indexes[1][0].freq) + + # Test conflicting index, freq specifications + endog = dta[2].copy() + endog.index = date_indexes[0][0] + assert_raises(ValueError, tsa_model.TimeSeriesModel, endog, + freq=date_indexes[1][0].freq) + + # Test unsupported index, but a freq specification + endog = dta[2].copy() + endog.index = unsupported_indexes[0][0] + assert_raises(ValueError, tsa_model.TimeSeriesModel, endog, + freq=date_indexes[1][0].freq) + + # Test index that can coerce to date time but incorrect freq + endog = dta[2].copy() + endog.index = numpy_datestr_indexes[0][0] + assert_raises(ValueError, tsa_model.TimeSeriesModel, endog, + freq=date_indexes[1][0].freq) + + +def test_prediction_increment_unsupported(): + # a. Generated from unsupported index + endog = dta[2].copy() + endog.index = unsupported_indexes[-2][0] + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('ignore') + mod = tsa_model.TimeSeriesModel(endog) + + # Tests three common use cases: basic prediction, negative indexes, and + # out-of-sample indexes. + + # Basic prediction: [0, end]; notice that since this is an in-sample + # prediction, the index returned is the (unsupported) original index + start_key = 0 + end_key = None + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 0) + assert_equal(end, nobs-1) + assert_equal(out_of_sample, 0) + assert_equal(prediction_index.equals(mod.data.row_labels), True) + + # Negative index: [-2, end]; notice that since this is an in-sample + # prediction, the index returned is a piece of the (unsupported) + # original index + start_key = -2 + end_key = -1 + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 3) + assert_equal(end, 4) + assert_equal(out_of_sample, 0) + assert_equal(prediction_index.equals(mod.data.row_labels[3:]), True) + + # Forecasting: [1, 5], notice that since an unsupported index was given, + # a warning will be issued + start_key = 1 + end_key = nobs + message = ('No supported index is available.' + ' Prediction results will be given with' + ' an integer index beginning at `start`.') + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('always') + + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(str(w[0].message), message) + + assert_equal(start, 1) + assert_equal(end, 4) + assert_equal(out_of_sample, 1) + assert_equal(prediction_index.equals(pd.Index(np.arange(1, 6))), True) + + # Test getting a location that exists in the (internal) index + loc, index, index_was_expanded = mod._get_index_loc(2) + assert_equal(loc, 2) + desired_index = pd.RangeIndex(start=0, stop=3, step=1) + assert_equal(index.equals(desired_index), True) + assert_equal(index_was_expanded, False) + + # Test getting a location that exists in the (internal) index + # when using the function that alternatively falls back to the row labels + loc, index, index_was_expanded = mod._get_index_label_loc(2) + assert_equal(loc, 2) + desired_index = pd.RangeIndex(start=0, stop=3, step=1) + assert_equal(index.equals(desired_index), True) + assert_equal(index_was_expanded, False) + + # Test getting a location that exists in the given (unsupported) index + # Note that the returned index is now like the row labels + loc, index, index_was_expanded = mod._get_index_label_loc('c') + assert_equal(loc, 2) + desired_index = mod.data.row_labels[:3] + assert_equal(index.equals(desired_index), True) + assert_equal(index_was_expanded, False) + + +def test_prediction_increment_nonpandas(): + endog = dta[0] + mod = tsa_model.TimeSeriesModel(endog) + + # Tests three common use cases: basic prediction, negative indexes, and + # out-of-sample indexes. + + # Basic prediction: [0, end]; since there was no index at all and the data + # is not Pandas, the returned prediction_index is None + start_key = 0 + end_key = None + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 0) + assert_equal(end, nobs-1) + assert_equal(out_of_sample, 0) + assert_equal(prediction_index is None, True) + + # Negative index: [-2, end]; since there was no index at all and the data + # is not Pandas, the returned prediction_index is None + start_key = -2 + end_key = -1 + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 3) + assert_equal(end, 4) + assert_equal(out_of_sample, 0) + assert_equal(prediction_index is None, True) + + # Forecasting: [1, 5]; since there was no index at all and the data + # is not Pandas, the returned prediction_index is None + start_key = 1 + end_key = nobs + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 1) + assert_equal(end, 4) + assert_equal(out_of_sample, 1) + assert_equal(prediction_index is None, True) + + + # Test getting a location that exists in the (internal) index + loc, index, index_was_expanded = mod._get_index_loc(2) + assert_equal(loc, 2) + desired_index = pd.RangeIndex(start=0, stop=3, step=1) + assert_equal(index.equals(desired_index), True) + assert_equal(index_was_expanded, False) + + # Test getting a location that exists in the (internal) index + # when using the function that alternatively falls back to the row labels + loc, index, index_was_expanded = mod._get_index_label_loc(2) + assert_equal(loc, 2) + desired_index = pd.RangeIndex(start=0, stop=3, step=1) + assert_equal(index.equals(desired_index), True) + assert_equal(index_was_expanded, False) + + +def test_prediction_increment_pandas_noindex(): + endog = dta[2].copy() + mod = tsa_model.TimeSeriesModel(endog) + + # Tests three common use cases: basic prediction, negative indexes, and + # out-of-sample indexes. + + # Basic prediction: [0, end]; since there was no index and the data is + # Pandas, the index is the generated incrementing index, and no warning is + # issued + start_key = 0 + end_key = None + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 0) + assert_equal(end, nobs-1) + assert_equal(out_of_sample, 0) + assert_equal(prediction_index.equals(mod._index), True) + + # Negative index: [-2, end]; since there was no index and the data is + # Pandas, the index is the generated incrementing index, and no warning is + # issued + start_key = -2 + end_key = -1 + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 3) + assert_equal(end, 4) + assert_equal(out_of_sample, 0) + assert_equal(prediction_index.equals(mod._index[3:]), True) + + # Forecasting: [1, 5]; since there was no index and the data is + # Pandas, the index is the generated incrementing index, and no warning is + # issued + start_key = 1 + end_key = nobs + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 1) + assert_equal(end, 4) + assert_equal(out_of_sample, 1) + assert_equal(prediction_index.equals(pd.Index(np.arange(1, 6))), True) + + +def test_prediction_increment_pandas_dates(): + # Date-based index + endog = dta[2].copy() + endog.index = date_indexes[0][0] # Daily, 1950-01-01, 1950-01-02, ... + mod = tsa_model.TimeSeriesModel(endog) + + # Tests three common use cases: basic prediction, negative indexes, and + # out-of-sample indexes. + + # Basic prediction: [0, end]; the index is the date index + start_key = 0 + end_key = None + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 0) + assert_equal(end, nobs-1) + assert_equal(out_of_sample, 0) + assert type(prediction_index) is type(endog.index) # noqa: E721 + assert_equal(prediction_index.equals(mod._index), True) + + # Negative index: [-2, end] + start_key = -2 + end_key = -1 + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 3) + assert_equal(end, 4) + assert_equal(out_of_sample, 0) + assert type(prediction_index) is type(endog.index) # noqa: E721 + assert_equal(prediction_index.equals(mod._index[3:]), True) + + # Forecasting: [1, 5]; the index is an extended version of the date index + start_key = 1 + end_key = nobs + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 1) + assert_equal(end, 4) + assert_equal(out_of_sample, 1) + desired_index = pd.date_range(start='1950-01-02', periods=5, freq='D') + assert_equal(prediction_index.equals(desired_index), True) + + # Date-based keys + start_key = '1950-01-01' + end_key = '1950-01-08' + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 0) + assert_equal(end, 4) + assert_equal(out_of_sample, 3) + desired_index = pd.date_range(start='1950-01-01', periods=8, freq='D') + assert_equal(prediction_index.equals(desired_index), True) + + + # Test getting a location that exists in the (internal) index + loc, index, index_was_expanded = mod._get_index_loc(2) + assert_equal(loc, 2) + desired_index = pd.date_range(start='1950-01-01', periods=3, freq='D') + assert_equal(index.equals(desired_index), True) + assert_equal(index_was_expanded, False) + + # Test getting a location that exists in the (internal) index + # when using the function that alternatively falls back to the row labels + loc, index, index_was_expanded = mod._get_index_label_loc(2) + assert_equal(loc, 2) + desired_index = pd.date_range(start='1950-01-01', periods=3, freq='D') + assert_equal(index.equals(desired_index), True) + assert_equal(index_was_expanded, False) + + # Test getting a location that exists in the given (unsupported) index + # Note that the returned index is now like the row labels + loc, index, index_was_expanded = mod._get_index_label_loc('1950-01-03') + assert_equal(loc, 2) + desired_index = mod.data.row_labels[:3] + assert_equal(index.equals(desired_index), True) + assert_equal(index_was_expanded, False) + + +def test_prediction_increment_pandas_dates_nanosecond(): + # Date-based index + endog = dta[2].copy() + endog.index = pd.date_range(start='1970-01-01', periods=len(endog), freq='N') + mod = tsa_model.TimeSeriesModel(endog) + + # Tests three common use cases: basic prediction, negative indexes, and + # out-of-sample indexes. + + # Basic prediction: [0, end]; the index is the date index + start_key = 0 + end_key = None + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 0) + assert_equal(end, nobs-1) + assert_equal(out_of_sample, 0) + assert type(prediction_index) is type(endog.index) # noqa: E721 + assert_equal(prediction_index.equals(mod._index), True) + + # Negative index: [-2, end] + start_key = -2 + end_key = -1 + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 3) + assert_equal(end, 4) + assert_equal(out_of_sample, 0) + assert type(prediction_index) is type(endog.index) # noqa: E721 + assert_equal(prediction_index.equals(mod._index[3:]), True) + + # Forecasting: [1, 5]; the index is an extended version of the date index + start_key = 1 + end_key = nobs + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 1) + assert_equal(end, 4) + assert_equal(out_of_sample, 1) + desired_index = pd.date_range(start='1970-01-01', periods=6, freq='N')[1:] + assert_equal(prediction_index.equals(desired_index), True) + + # Date-based keys + start_key = pd.Timestamp('1970-01-01') + end_key = pd.Timestamp(start_key.value + 7) + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 0) + assert_equal(end, 4) + assert_equal(out_of_sample, 3) + desired_index = pd.date_range(start='1970-01-01', periods=8, freq='N') + assert_equal(prediction_index.equals(desired_index), True) + + +def test_range_index(): + tsa_model.__warningregistry__ = {} + + endog = pd.Series(np.random.normal(size=5)) + assert_equal(isinstance(endog.index, pd.RangeIndex), True) + # Warning should not be given + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('always') + mod = tsa_model.TimeSeriesModel(endog) + assert_equal(len(w), 0) + + +def test_prediction_rangeindex(): + index = supported_increment_indexes[2][0] + endog = pd.Series(dta[0], index=index) + mod = tsa_model.TimeSeriesModel(endog) + + # Tests three common use cases: basic prediction, negative indexes, and + # out-of-sample indexes. + + # Basic prediction: [0, end] + start_key = 0 + end_key = None + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 0) + assert_equal(end, nobs - 1) + assert_equal(out_of_sample, 0) + desired_index = pd.RangeIndex(start=-5, stop=0, step=1) + assert_equal(prediction_index.equals(desired_index), True) + + # Negative index: [-2, end] + start_key = -2 + end_key = -1 + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 3) + assert_equal(end, 4) + assert_equal(out_of_sample, 0) + desired_index = pd.RangeIndex(start=-2, stop=0, step=1) + assert_equal(prediction_index.equals(desired_index), True) + + # Forecasting: [1, 5] + start_key = 1 + end_key = nobs + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 1) + assert_equal(end, 4) + assert_equal(out_of_sample, 1) + desired_index = pd.RangeIndex(start=-4, stop=1, step=1) + assert_equal(prediction_index.equals(desired_index), True) + + +def test_prediction_rangeindex_withstep(): + index = supported_increment_indexes[3][0] + endog = pd.Series(dta[0], index=index) + mod = tsa_model.TimeSeriesModel(endog) + + # Tests three common use cases: basic prediction, negative indexes, and + # out-of-sample indexes. + + # Basic prediction: [0, end] + start_key = 0 + end_key = None + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 0) + assert_equal(end, nobs - 1) + assert_equal(out_of_sample, 0) + desired_index = pd.RangeIndex(start=0, stop=nobs * 6, step=6) + assert_equal(prediction_index.equals(desired_index), True) + + # Negative index: [-2, end] + start_key = -2 + end_key = -1 + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 3) + assert_equal(end, 4) + assert_equal(out_of_sample, 0) + desired_index = pd.RangeIndex(start=3 * 6, stop=nobs * 6, step=6) + assert_equal(prediction_index.equals(desired_index), True) + + # Forecasting: [1, 5] + start_key = 1 + end_key = nobs + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + assert_equal(start, 1) + assert_equal(end, 4) + assert_equal(out_of_sample, 1) + desired_index = pd.RangeIndex(start=1 * 6, stop=(nobs + 1) * 6, step=6) + assert_equal(prediction_index.equals(desired_index), True) + + # Test getting a location that exists in the index + loc, index, index_was_expanded = mod._get_index_loc(2) + assert_equal(loc, 2) + desired_index = pd.RangeIndex(start=0, stop=3 * 6, step=6) + assert_equal(index.equals(desired_index), True) + assert_equal(index_was_expanded, False) + + +def test_custom_index(): + tsa_model.__warningregistry__ = {} + + endog = pd.Series(np.random.normal(size=5), + index=['a', 'b', 'c', 'd', 'e']) + message = ('An unsupported index was provided and will be ignored when' + ' e.g. forecasting.') + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('always') + + mod = tsa_model.TimeSeriesModel(endog) + assert_equal(str(w[0].message), message) + start_key = -2 + end_key = -1 + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + + # Test the default output index + assert_equal(prediction_index.equals(pd.Index(['d', 'e'])), True) + + # Test custom output index + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key, index=['f', 'g'])) + assert_equal(prediction_index.equals(pd.Index(['f', 'g'])), True) + + # Test getting a location in the index w/o fallback to row lables + loc, index, index_was_expanded = mod._get_index_loc(2) + assert_equal(loc, 2) + assert_equal(index.equals(pd.RangeIndex(0, 3)), True) + assert_equal(index_was_expanded, False) + assert_equal(index_was_expanded, False) + + # Test getting an invalid location in the index w/ fallback to row lables + with pytest.raises(KeyError): + mod._get_index_loc('c') + + # Test getting a location in the index w/ fallback to row lables + loc, index, index_was_expanded = mod._get_index_label_loc('c') + assert_equal(loc, 2) + assert_equal(index.equals(pd.Index(['a', 'b', 'c'])), True) + assert_equal(index_was_expanded, False) + + # Test getting an invalid location in the index w/ fallback to row lables + with pytest.raises(KeyError): + mod._get_index_label_loc('aa') + + # Test out-of-sample + start_key = 4 + end_key = 5 + message = ('No supported index is available.' + ' Prediction results will be given with' + ' an integer index beginning at `start`.') + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('always') + + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key)) + assert_equal(prediction_index.equals(pd.Index([4, 5])), True) + assert_equal(str(w[0].message), message) + + # Test out-of-sample custom index + start, end, out_of_sample, prediction_index = ( + mod._get_prediction_index(start_key, end_key, index=['f', 'g'])) + assert_equal(prediction_index.equals(pd.Index(['f', 'g'])), True) + + # Test invalid custom index + assert_raises(ValueError, mod._get_prediction_index, start_key, end_key, + index=['f', 'g', 'h']) diff --git a/statsmodels/tsa/base/tsa_model.py b/statsmodels/tsa/base/tsa_model.py new file mode 100644 index 0000000..38b0354 --- /dev/null +++ b/statsmodels/tsa/base/tsa_model.py @@ -0,0 +1,639 @@ +from statsmodels.compat.python import long +from statsmodels.compat.pandas import is_numeric_dtype + +import numbers + +import warnings +import numpy as np +from pandas import (to_datetime, Int64Index, DatetimeIndex, Period, + PeriodIndex, RangeIndex, Timestamp, Series, Index, + Float64Index, date_range, period_range) +from pandas.tseries.frequencies import to_offset + +from statsmodels.base import data +import statsmodels.base.model as base +import statsmodels.base.wrapper as wrap +from statsmodels.tools.sm_exceptions import ValueWarning + +_tsa_doc = """ + %(model)s + + Parameters + ---------- + %(params)s + dates : array-like of datetime, optional + An array-like object of datetime objects. If a pandas object is given + for endog or exog, it is assumed to have a DateIndex. + freq : str, optional + The frequency of the time-series. A Pandas offset or 'B', 'D', 'W', + 'M', 'A', or 'Q'. This is optional if dates are given. + %(extra_params)s + %(extra_sections)s +""" + +_model_doc = "Timeseries model base class" + +_generic_params = base._model_params_doc +_missing_param_doc = base._missing_param_doc + + +class TimeSeriesModel(base.LikelihoodModel): + + __doc__ = _tsa_doc % {"model": _model_doc, "params": _generic_params, + "extra_params": _missing_param_doc, + "extra_sections": ""} + + def __init__(self, endog, exog=None, dates=None, freq=None, + missing='none', **kwargs): + super(TimeSeriesModel, self).__init__(endog, exog, missing=missing, + **kwargs) + + # Date handling in indexes + self._init_dates(dates, freq) + + def _init_dates(self, dates=None, freq=None): + """ + Initialize dates + + Parameters + ---------- + dates : array_like, optional + An array like object containing dates. + freq : str, tuple, datetime.timedelta, DateOffset or None, optional + A frequency specification for either `dates` or the row labels from + the endog / exog data. + + Notes + ----- + Creates `self._index` and related attributes. `self._index` is always + a Pandas index, and it is always Int64Index, DatetimeIndex, or + PeriodIndex. + + If Pandas objects, endog / exog may have any type of index. If it is + an Int64Index with values 0, 1, ..., nobs-1 or if it is (coerceable to) + a DatetimeIndex or PeriodIndex *with an associated frequency*, then it + is called a "supported" index. Otherwise it is called an "unsupported" + index. + + Supported indexes are standardized (i.e. a list of date strings is + converted to a DatetimeIndex) and the result is put in `self._index`. + + Unsupported indexes are ignored, and a supported Int64Index is + generated and put in `self._index`. Warnings are issued in this case + to alert the user if the returned index from some operation (e.g. + forecasting) is different from the original data's index. However, + whenever possible (e.g. purely in-sample prediction), the original + index is returned. + + The benefit of supported indexes is that they allow *forecasting*, i.e. + it is possible to extend them in a reasonable way. Thus every model + must have an underlying supported index, even if it is just a generated + Int64Index. + + """ + + # Get our index from `dates` if available, otherwise from whatever + # Pandas index we might have retrieved from endog, exog + if dates is not None: + index = dates + else: + index = self.data.row_labels + + # Sanity check that we don't have a `freq` without an index + if index is None and freq is not None: + raise ValueError('Frequency provided without associated index.') + + # If an index is available, see if it is a date-based index or if it + # can be coerced to one. (If it can't we'll fall back, below, to an + # internal, 0, 1, ... nobs-1 integer index for modeling purposes) + inferred_freq = False + if index is not None: + # Try to coerce to date-based index + if not isinstance(index, (DatetimeIndex, PeriodIndex)): + try: + # Only try to coerce non-numeric index types (string, + # list of date-times, etc.) + # Note that np.asarray(Float64Index([...])) yields an + # object dtype array in earlier versions of Pandas (and so + # will not have is_numeric_dtype == True), so explicitly + # check for it here. But note also that in very early + # Pandas (~0.12), Float64Index doesn't exist (and so the + # Statsmodels compat makes it an empty tuple, so in that + # case also check if the first element is a float. + _index = np.asarray(index) + if (is_numeric_dtype(_index) or + isinstance(index, Float64Index) or + (Float64Index == tuple() and + isinstance(_index[0], float))): + raise ValueError('Numeric index given') + # If a non-index Pandas series was given, only keep its + # values (because we must have a pd.Index type, below, and + # pd.to_datetime will return a Series when passed + # non-list-like objects) + if isinstance(index, Series): + index = index.values + # All coercion is done via pd.to_datetime + # Note: date coercion via pd.to_datetime does not handle + # string versions of PeriodIndex objects most of the time. + _index = to_datetime(index) + # Older versions of Pandas can sometimes fail here and + # return a numpy array - check to make sure it's an index + if not isinstance(_index, Index): + raise ValueError('Could not coerce to date index') + index = _index + except: + # Only want to actually raise an exception if `dates` was + # provided but can't be coerced. If we got the index from + # the row_labels, we'll just ignore it and use the integer + # index below + if dates is not None: + raise ValueError('Non-date index index provided to' + ' `dates` argument.') + # Now, if we were given, or coerced, a date-based index, make sure + # it has an associated frequency + if isinstance(index, (DatetimeIndex, PeriodIndex)): + # If no frequency, try to get an inferred frequency + if freq is None and index.freq is None: + freq = index.inferred_freq + # If we got an inferred frequncy, alert the user + if freq is not None: + inferred_freq = True + if freq is not None: + warnings.warn('No frequency information was' + ' provided, so inferred frequency %s' + ' will be used.' + % freq, ValueWarning) + + # Convert the passed freq to a pandas offset object + if freq is not None: + freq = to_offset(freq) + + # Now, if no frequency information is available from the index + # itself or from the `freq` argument, raise an exception + if freq is None and index.freq is None: + # But again, only want to raise the exception if `dates` + # was provided. + if dates is not None: + raise ValueError('No frequency information was' + ' provided with date index and no' + ' frequency could be inferred.') + # However, if the index itself has no frequency information but + # the `freq` argument is available (or was inferred), construct + # a new index with an associated frequency + elif freq is not None and index.freq is None: + resampled_index = date_range( + start=index[0], end=index[-1], freq=freq) + if not inferred_freq and not resampled_index.equals(index): + raise ValueError('The given frequency argument could' + ' not be matched to the given index.') + index = resampled_index + # Finally, if the index itself has a frequency and there was + # also a given frequency, raise an exception if they are not + # equal + elif (freq is not None and not inferred_freq and + not (index.freq == freq)): + raise ValueError('The given frequency argument is' + ' incompatible with the given index.') + # Finally, raise an exception if we could not coerce to date-based + # but we were given a frequency argument + elif freq is not None: + raise ValueError('Given index could not be coerced to dates' + ' but `freq` argument was provided.') + + # Get attributes of the index + has_index = index is not None + date_index = isinstance(index, (DatetimeIndex, PeriodIndex)) + int_index = isinstance(index, Int64Index) + range_index = isinstance(index, RangeIndex) + has_freq = index.freq is not None if date_index else None + increment = Index(range(self.endog.shape[0])) + is_increment = index.equals(increment) if int_index else None + + # Issue warnings for unsupported indexes + if has_index and not (date_index or range_index or is_increment): + warnings.warn('An unsupported index was provided and will be' + ' ignored when e.g. forecasting.', ValueWarning) + if date_index and not has_freq: + warnings.warn('A date index has been provided, but it has no' + ' associated frequency information and so will be' + ' ignored when e.g. forecasting.', ValueWarning) + + # Construct the internal index + index_generated = False + + if ((date_index and has_freq) or (int_index and is_increment) or + range_index): + _index = index + else: + _index = increment + index_generated = True + self._index = _index + self._index_generated = index_generated + self._index_none = index is None + self._index_dates = date_index and not index_generated + self._index_freq = self._index.freq if self._index_dates else None + self._index_inferred_freq = inferred_freq + + # For backwards compatibility, set data.dates, data.freq + self.data.dates = self._index if self._index_dates else None + self.data.freq = self._index.freqstr if self._index_dates else None + + def _get_index_loc(self, key, base_index=None): + """ + Get the location of a specific key in an index + + Parameters + ---------- + key : label + The key for which to find the location if the underlying index is + a DateIndex or a location if the underlying index is a RangeIndex + or an Int64Index. + base_index : pd.Index, optional + Optionally the base index to search. If None, the model's index is + searched. + + Returns + ------- + loc : int + The location of the key + index : pd.Index + The index including the key; this is a copy of the original index + unless the index had to be expanded to accomodate `key`. + index_was_expanded : bool + Whether or not the index was expanded to accomodate `key`. + + Notes + ----- + If `key` is past the end of of the given index, and the index is either + an Int64Index or a date index, this function extends the index up to + and including key, and then returns the location in the new index. + + """ + if base_index is None: + base_index = self._index + + index = base_index + date_index = isinstance(base_index, (PeriodIndex, DatetimeIndex)) + int_index = isinstance(base_index, Int64Index) + range_index = isinstance(base_index, RangeIndex) + index_class = type(base_index) + nobs = len(index) + + # Special handling for RangeIndex + if range_index and isinstance(key, (int, long, np.integer)): + # Negative indices (that lie in the Index) + if key < 0 and -key <= nobs: + key = nobs + key + # Out-of-sample (note that we include key itself in the new index) + elif key > nobs - 1: + # See gh5835. Remove the except after pandas 0.25 required. + try: + base_index_start = base_index.start + base_index_step = base_index.step + except AttributeError: + base_index_start = base_index._start + base_index_step = base_index._step + stop = base_index_start + (key + 1) * base_index_step + index = RangeIndex(start=base_index_start, + stop=stop, + step=base_index_step) + + # Special handling for Int64Index + if (not range_index and int_index and not date_index and + isinstance(key, (int, long, np.integer))): + # Negative indices (that lie in the Index) + if key < 0 and -key <= nobs: + key = nobs + key + # Out-of-sample (note that we include key itself in the new index) + elif key > base_index[-1]: + index = Int64Index(np.arange(base_index[0], int(key + 1))) + + # Special handling for date indexes + if date_index: + # Use index type to choose creation function + if index_class is DatetimeIndex: + index_fn = date_range + else: + index_fn = period_range + # Integer key (i.e. already given a location) + if isinstance(key, (int, long, np.integer)): + # Negative indices (that lie in the Index) + if key < 0 and -key < nobs: + key = index[nobs + key] + # Out-of-sample (note that we include key itself in the new + # index) + elif key > len(base_index) - 1: + index = index_fn(start=base_index[0], + periods=int(key + 1), + freq=base_index.freq) + key = index[-1] + else: + key = index[key] + # Other key types (i.e. string date or some datetime-like object) + else: + # Covert the key to the appropriate date-like object + if index_class is PeriodIndex: + date_key = Period(key, freq=base_index.freq) + else: + date_key = Timestamp(key) + + # Out-of-sample + if date_key > base_index[-1]: + # First create an index that may not always include `key` + index = index_fn(start=base_index[0], end=date_key, + freq=base_index.freq) + + # Now make sure we include `key` + if not index[-1] == date_key: + index = index_fn(start=base_index[0], + periods=len(index) + 1, + freq=base_index.freq) + + # Get the location + if date_index: + # (note that get_loc will throw a KeyError if key is invalid) + loc = index.get_loc(key) + elif int_index or range_index: + # For Int64Index and RangeIndex, key is assumed to be the location + # and not an index value (this assumption is required to support + # RangeIndex) + try: + index[key] + # We want to raise a KeyError in this case, to keep the exception + # consistent across index types. + # - Attempting to index with an out-of-bound location (e.g. + # index[10] on an index of length 9) will raise an IndexError + # (as of Pandas 0.22) + # - Attemtping to index with a type that cannot be cast to integer + # (e.g. a non-numeric string) will raise a ValueError if the + # index is RangeIndex (otherwise will raise an IndexError) + # (as of Pandas 0.22) + except (IndexError, ValueError) as e: + raise KeyError(str(e)) + loc = key + else: + loc = index.get_loc(key) + + # Check if we now have a modified index + index_was_expanded = index is not base_index + + # Return the index through the end of the loc / slice + if isinstance(loc, slice): + end = loc.stop + else: + end = loc + + return loc, index[:end + 1], index_was_expanded + + def _get_index_label_loc(self, key, base_index=None): + """ + Get the location of a specific key in an index or model row labels + + Parameters + ---------- + key : label + The key for which to find the location if the underlying index is + a DateIndex or is only being used as row labels, or a location if + the underlying index is a RangeIndex or an Int64Index. + base_index : pd.Index, optional + Optionally the base index to search. If None, the model's index is + searched. + + Returns + ------- + loc : int + The location of the key + index : pd.Index + The index including the key; this is a copy of the original index + unless the index had to be expanded to accomodate `key`. + index_was_expanded : bool + Whether or not the index was expanded to accomodate `key`. + + Notes + ----- + This method expands on `_get_index_loc` by first trying the given + base index (or the model's index if the base index was not given) and + then falling back to try again with the model row labels as the base + index. + + """ + try: + loc, index, index_was_expanded = ( + self._get_index_loc(key, base_index)) + except KeyError as e: + try: + if not isinstance(key, (int, long, np.integer)): + loc = self.data.row_labels.get_loc(key) + else: + raise + # Require scalar + # Pandas may return a slice if there are multiple matching + # locations that are monotonic increasing (otherwise it may + # return an array of integer locations, see below). + if isinstance(loc, slice): + loc = loc.start + if isinstance(loc, np.ndarray): + # Pandas may return a mask (boolean array), for e.g.: + # pd.Index(list('abcb')).get_loc('b') + if loc.dtype == bool: + # Return the first True value + # (we know there is at least one True value if we're + # here because otherwise the get_loc call would have + # raised an exception) + loc = np.argmax(loc) + # Finally, Pandas may return an integer array of + # locations that match the given value, for e.g. + # pd.DatetimeIndex(['2001-02', '2001-01']).get_loc('2001') + # (this appears to be slightly undocumented behavior, since + # only int, slice, and mask are mentioned in docs for + # pandas.Index.get_loc as of 0.23.4) + else: + loc = loc[0] + if not isinstance(loc, numbers.Integral): + raise + + index = self.data.row_labels[:loc + 1] + index_was_expanded = False + except: + raise e + return loc, index, index_was_expanded + + def _get_prediction_index(self, start, end, index=None, silent=False): + """ + Get the location of a specific key in an index or model row labels + + Parameters + ---------- + start : label + The key at which to start prediction. Depending on the underlying + model's index, may be an integer, a date (string, datetime object, + pd.Timestamp, or pd.Period object), or some other object in the + model's row labels. + end : label + The key at which to end prediction (note that this key will be + *included* in prediction). Depending on the underlying + model's index, may be an integer, a date (string, datetime object, + pd.Timestamp, or pd.Period object), or some other object in the + model's row labels. + index : pd.Index, optional + Optionally an index to associate the predicted results to. If None, + an attempt is made to create an index for the predicted results + from the model's index or model's row labels. + silent : bool, optional + Argument to silence warnings. + + Returns + ------- + start : integer + The index / observation location at which to begin prediction. + end : int + The index / observation location at which to end in-sample + prediction. The maximum value for this is nobs-1. + out_of_sample : int + The number of observations to forecast after the end of the sample. + prediction_index : pd.Index or None + The index associated with the prediction results. This index covers + the range [start, end + out_of_sample]. If the model has no given + index and no given row labels (i.e. endog/exog is not Pandas), then + this will be None. + + Notes + ----- + The arguments `start` and `end` behave differently, depending on if + they are integer or not. If either is an integer, then it is assumed + to refer to a *location* in the index, not to an index value. On the + other hand, if it is a date string or some other type of object, then + it is assumed to refer to an index *value*. In all cases, the returned + `start` and `end` values refer to index *locations* (so in the former + case, the given location is validated and returned whereas in the + latter case a location is found that corresponds to the given index + value). + + This difference in behavior is necessary to support `RangeIndex`. This + is because integers for a RangeIndex could refer either to index values + or to index locations in an ambiguous way (while for `Int64Index`, + since we have required them to be full indexes, there is no ambiguity). + + """ + + # Convert index keys (start, end) to index locations and get associated + # indexes. + try: + start, start_index, start_oos = self._get_index_label_loc(start) + except KeyError: + raise KeyError('The `start` argument could not be matched to a' + ' location related to the index of the data.') + if end is None: + end = max(start, len(self._index) - 1) + try: + end, end_index, end_oos = self._get_index_label_loc(end) + except KeyError: + raise KeyError('The `end` argument could not be matched to a' + ' location related to the index of the data.') + + # Handle slices (if the given index keys cover more than one date) + if isinstance(start, slice): + start = start.start + if isinstance(end, slice): + end = end.stop - 1 + + # Get the actual index for the prediction + prediction_index = end_index[start:] + + # Validate prediction options + if end < start: + raise ValueError('Prediction must have `end` after `start`.') + + # Handle custom prediction index + # First, if we were given an index, check that it's the right size and + # use it if so + if index is not None: + if not len(prediction_index) == len(index): + raise ValueError('Invalid `index` provided in prediction.' + ' Must have length consistent with `start`' + ' and `end` arguments.') + # But if we weren't given Pandas input, this index will not be + # used because the data will not be wrapped; in that case, issue + # a warning + if not isinstance(self.data, data.PandasData) and not silent: + warnings.warn('Because the model data (`endog`, `exog`) were' + ' not given as Pandas objects, the prediction' + ' output will be Numpy arrays, and the given' + ' `index` argument will only be used' + ' internally.', ValueWarning) + prediction_index = Index(index) + # Now, if we *do not* have a supported index, but we were given some + # kind of index... + elif self._index_generated and not self._index_none: + # If we are in sample, and have row labels, use them + if self.data.row_labels is not None and not (start_oos or end_oos): + prediction_index = self.data.row_labels[start:end + 1] + # Otherwise, warn the user that they will get an Int64Index + elif not silent: + warnings.warn('No supported index is available.' + ' Prediction results will be given with' + ' an integer index beginning at `start`.', + ValueWarning) + elif self._index_none: + prediction_index = None + + # For backwards compatibility, set `predict_*` values + if prediction_index is not None: + self.data.predict_start = prediction_index[0] + self.data.predict_end = prediction_index[-1] + self.data.predict_dates = prediction_index + else: + self.data.predict_start = None + self.data.predict_end = None + self.data.predict_dates = None + + # Compute out-of-sample observations + nobs = len(self.endog) + out_of_sample = max(end - (nobs - 1), 0) + end -= out_of_sample + + return start, end, out_of_sample, prediction_index + + def _get_exog_names(self): + return self.data.xnames + + def _set_exog_names(self, vals): + if not isinstance(vals, list): + vals = [vals] + self.data.xnames = vals + + # overwrite with writable property for (V)AR models + exog_names = property(_get_exog_names, _set_exog_names) + + +class TimeSeriesModelResults(base.LikelihoodModelResults): + def __init__(self, model, params, normalized_cov_params, scale=1.): + self.data = model.data + super(TimeSeriesModelResults, + self).__init__(model, params, normalized_cov_params, scale) + + +class TimeSeriesResultsWrapper(wrap.ResultsWrapper): + _attrs = {} + _wrap_attrs = wrap.union_dicts(base.LikelihoodResultsWrapper._wrap_attrs, + _attrs) + _methods = {'predict' : 'dates'} + _wrap_methods = wrap.union_dicts(base.LikelihoodResultsWrapper._wrap_methods, + _methods) +wrap.populate_wrapper(TimeSeriesResultsWrapper, # noqa:E305 + TimeSeriesModelResults) + + +if __name__ == "__main__": + import statsmodels.api as sm + import pandas + + mdata = sm.datasets.macrodata.load(as_pandas=False) + + #make a DataFrame + #TODO: attach a DataFrame to some of the datasets, for quicker use + dates = [str(int(x[0])) +':'+ str(int(x[1])) \ + for x in mdata.data[['year','quarter']]] + + df = pandas.DataFrame(mdata.data[['realgdp','realinv','realcons']], index=dates) + ex_mod = TimeSeriesModel(df) diff --git a/statsmodels/tsa/coint_tables.py b/statsmodels/tsa/coint_tables.py new file mode 100644 index 0000000..ce20b7b --- /dev/null +++ b/statsmodels/tsa/coint_tables.py @@ -0,0 +1,226 @@ +# -*- coding: utf-8 -*- +""" +Created on Thu Aug 30 12:26:38 2012 +Author: Josef Perktold + + +function jc = c_sja(n,p) +% PURPOSE: find critical values for Johansen maximum eigenvalue statistic +% ------------------------------------------------------------ +% USAGE: jc = c_sja(n,p) +% where: n = dimension of the VAR system +% p = order of time polynomial in the null-hypothesis +% p = -1, no deterministic part +% p = 0, for constant term +% p = 1, for constant plus time-trend +% p > 1 returns no critical values +% ------------------------------------------------------------ +% RETURNS: a (3x1) vector of percentiles for the maximum eigenvalue +% statistic for: [90% 95% 99%] +% ------------------------------------------------------------ +% NOTES: for n > 12, the function returns a (3x1) vector of zeros. +% The values returned by the function were generated using +% a method described in MacKinnon (1996), using his FORTRAN +% program johdist.f +% ------------------------------------------------------------ +% SEE ALSO: johansen() +% ------------------------------------------------------------ +% References: MacKinnon, Haug, Michelis (1996) 'Numerical distribution +% functions of likelihood ratio tests for cointegration', +% Queen's University Institute for Economic Research Discussion paper. +% ------------------------------------------------------- +% written by: +% James P. LeSage, Dept of Economics +% University of Toledo +% 2801 W. Bancroft St, +% Toledo, OH 43606 +% jlesage@spatial-econometrics.com + +""" + +import numpy as np + +ss_ejcp0 = '''\ + 2.9762 4.1296 6.9406 + 9.4748 11.2246 15.0923 + 15.7175 17.7961 22.2519 + 21.8370 24.1592 29.0609 + 27.9160 30.4428 35.7359 + 33.9271 36.6301 42.2333 + 39.9085 42.7679 48.6606 + 45.8930 48.8795 55.0335 + 51.8528 54.9629 61.3449 + 57.7954 61.0404 67.6415 + 63.7248 67.0756 73.8856 + 69.6513 73.0946 80.0937''' + +ss_ejcp1 = '''\ + 2.7055 3.8415 6.6349 + 12.2971 14.2639 18.5200 + 18.8928 21.1314 25.8650 + 25.1236 27.5858 32.7172 + 31.2379 33.8777 39.3693 + 37.2786 40.0763 45.8662 + 43.2947 46.2299 52.3069 + 49.2855 52.3622 58.6634 + 55.2412 58.4332 64.9960 + 61.2041 64.5040 71.2525 + 67.1307 70.5392 77.4877 + 73.0563 76.5734 83.7105''' + +ss_ejcp2 = '''\ + 2.7055 3.8415 6.6349 + 15.0006 17.1481 21.7465 + 21.8731 24.2522 29.2631 + 28.2398 30.8151 36.1930 + 34.4202 37.1646 42.8612 + 40.5244 43.4183 49.4095 + 46.5583 49.5875 55.8171 + 52.5858 55.7302 62.1741 + 58.5316 61.8051 68.5030 + 64.5292 67.9040 74.7434 + 70.4630 73.9355 81.0678 + 76.4081 79.9878 87.2395''' + +ejcp0 = np.array(ss_ejcp0.split(),float).reshape(-1,3) +ejcp1 = np.array(ss_ejcp1.split(),float).reshape(-1,3) +ejcp2 = np.array(ss_ejcp2.split(),float).reshape(-1,3) + + +def c_sja(n, p): + if ((p > 1) or (p < -1)): + jc = np.full(3, np.nan) + elif ((n > 12) or (n < 1)): + jc = np.full(3, np.nan) + elif p == -1: + jc = ejcp0[n-1,:] + elif p == 0: + jc = ejcp1[n-1,:] + elif p == 1: + jc = ejcp2[n-1,:] + + return jc + + +''' +function jc = c_sjt(n,p) +% PURPOSE: find critical values for Johansen trace statistic +% ------------------------------------------------------------ +% USAGE: jc = c_sjt(n,p) +% where: n = dimension of the VAR system +% NOTE: routine doesn't work for n > 12 +% p = order of time polynomial in the null-hypothesis +% p = -1, no deterministic part +% p = 0, for constant term +% p = 1, for constant plus time-trend +% p > 1 returns no critical values +% ------------------------------------------------------------ +% RETURNS: a (3x1) vector of percentiles for the trace +% statistic for [90% 95% 99%] +% ------------------------------------------------------------ +% NOTES: for n > 12, the function returns a (3x1) vector of zeros. +% The values returned by the function were generated using +% a method described in MacKinnon (1996), using his FORTRAN +% program johdist.f +% ------------------------------------------------------------ +% SEE ALSO: johansen() +% ------------------------------------------------------------ +% % References: MacKinnon, Haug, Michelis (1996) 'Numerical distribution +% functions of likelihood ratio tests for cointegration', +% Queen's University Institute for Economic Research Discussion paper. +% ------------------------------------------------------- +% written by: +% James P. LeSage, Dept of Economics +% University of Toledo +% 2801 W. Bancroft St, +% Toledo, OH 43606 +% jlesage@spatial-econometrics.com +% these are the values from Johansen's 1995 book +% for comparison to the MacKinnon values +%jcp0 = [ 2.98 4.14 7.02 +% 10.35 12.21 16.16 +% 21.58 24.08 29.19 +% 36.58 39.71 46.00 +% 55.54 59.24 66.71 +% 78.30 86.36 91.12 +% 104.93 109.93 119.58 +% 135.16 140.74 151.70 +% 169.30 175.47 187.82 +% 207.21 214.07 226.95 +% 248.77 256.23 270.47 +% 293.83 301.95 318.14]; +% +''' + + +ss_tjcp0 = '''\ + 2.9762 4.1296 6.9406 + 10.4741 12.3212 16.3640 + 21.7781 24.2761 29.5147 + 37.0339 40.1749 46.5716 + 56.2839 60.0627 67.6367 + 79.5329 83.9383 92.7136 + 106.7351 111.7797 121.7375 + 137.9954 143.6691 154.7977 + 173.2292 179.5199 191.8122 + 212.4721 219.4051 232.8291 + 255.6732 263.2603 277.9962 + 302.9054 311.1288 326.9716''' + + +ss_tjcp1 = '''\ + 2.7055 3.8415 6.6349 + 13.4294 15.4943 19.9349 + 27.0669 29.7961 35.4628 + 44.4929 47.8545 54.6815 + 65.8202 69.8189 77.8202 + 91.1090 95.7542 104.9637 + 120.3673 125.6185 135.9825 + 153.6341 159.5290 171.0905 + 190.8714 197.3772 210.0366 + 232.1030 239.2468 253.2526 + 277.3740 285.1402 300.2821 + 326.5354 334.9795 351.2150''' + +ss_tjcp2 = '''\ + 2.7055 3.8415 6.6349 + 16.1619 18.3985 23.1485 + 32.0645 35.0116 41.0815 + 51.6492 55.2459 62.5202 + 75.1027 79.3422 87.7748 + 102.4674 107.3429 116.9829 + 133.7852 139.2780 150.0778 + 169.0618 175.1584 187.1891 + 208.3582 215.1268 228.2226 + 251.6293 259.0267 273.3838 + 298.8836 306.8988 322.4264 + 350.1125 358.7190 375.3203''' + +tjcp0 = np.array(ss_tjcp0.split(),float).reshape(-1,3) +tjcp1 = np.array(ss_tjcp1.split(),float).reshape(-1,3) +tjcp2 = np.array(ss_tjcp2.split(),float).reshape(-1,3) + + +def c_sjt(n, p): + if ((p > 1) or (p < -1)): + jc = np.full(3, np.nan) + elif ((n > 12) or (n < 1)): + jc = np.full(3, np.nan) + elif p == -1: + jc = tjcp0[n-1,:] + elif p == 0: + jc = tjcp1[n-1,:] + elif p == 1: + jc = tjcp2[n-1,:] + else: + raise ValueError('invalid p') + + return jc + + +if __name__ == '__main__': + for p in range(-2, 3, 1): + for n in range(12): + print(n, p) + print(c_sja(n, p)) + print(c_sjt(n, p)) diff --git a/statsmodels/tsa/descriptivestats.py b/statsmodels/tsa/descriptivestats.py new file mode 100644 index 0000000..7d550c8 --- /dev/null +++ b/statsmodels/tsa/descriptivestats.py @@ -0,0 +1,80 @@ +# -*- coding: utf-8 -*- +"""Descriptive Statistics for Time Series + +Created on Sat Oct 30 14:24:08 2010 + +Author: josef-pktd +License: BSD(3clause) +""" + +import numpy as np +from . import stattools as stt + + +#todo: check subclassing for descriptive stats classes +class TsaDescriptive(object): + '''collection of descriptive statistical methods for time series + + ''' + + def __init__(self, data, label=None, name=''): + self.data = data + self.label = label + self.name = name + + def filter(self, num, den): + from scipy.signal import lfilter + xfiltered = lfilter(num, den, self.data) + return self.__class__(xfiltered, self.label, self.name + '_filtered') + + def detrend(self, order=1): + from . import tsatools + xdetrended = tsatools.detrend(self.data, order=order) + return self.__class__(xdetrended, self.label, self.name + '_detrended') + + def fit(self, order=(1,0,1), **kwds): + from .arima_model import ARMA + self.mod = ARMA(self.data) + self.res = self.mod.fit(order=order, **kwds) + #self.estimated_process = + return self.res + + def acf(self, nlags=40): + return stt.acf(self.data, nlags=nlags) + + def pacf(self, nlags=40): + return stt.pacf(self.data, nlags=nlags) + + def periodogram(self): + #doesn't return frequesncies + return stt.periodogram(self.data) + + # copied from fftarma.py + def plot4(self, fig=None, nobs=100, nacf=20, nfreq=100): + data = self.data + acf = self.acf(nacf) + pacf = self.pacf(nacf) + w = np.linspace(0, np.pi, nfreq, endpoint=False) + spdr = self.periodogram()[:nfreq] #(w) + + if fig is None: + import matplotlib.pyplot as plt + fig = plt.figure() + ax = fig.add_subplot(2,2,1) + namestr = ' for %s' % self.name if self.name else '' + ax.plot(data) + ax.set_title('Time series' + namestr) + + ax = fig.add_subplot(2,2,2) + ax.plot(acf) + ax.set_title('Autocorrelation' + namestr) + + ax = fig.add_subplot(2,2,3) + ax.plot(spdr) # (wr, spdr) + ax.set_title('Power Spectrum' + namestr) + + ax = fig.add_subplot(2,2,4) + ax.plot(pacf) + ax.set_title('Partial Autocorrelation' + namestr) + + return fig diff --git a/statsmodels/tsa/filters/__init__.py b/statsmodels/tsa/filters/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/tsa/filters/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/tsa/filters/_utils.py b/statsmodels/tsa/filters/_utils.py new file mode 100644 index 0000000..7dc03b9 --- /dev/null +++ b/statsmodels/tsa/filters/_utils.py @@ -0,0 +1,149 @@ +from functools import wraps + +import pandas as pd +import numpy as np + +from statsmodels.tools.data import _is_using_pandas +from statsmodels.tsa.tsatools import freq_to_period + + +def _get_pandas_wrapper(X, trim_head=None, trim_tail=None, names=None): + index = X.index + #TODO: allow use index labels + if trim_head is None and trim_tail is None: + index = index + elif trim_tail is None: + index = index[trim_head:] + elif trim_head is None: + index = index[:-trim_tail] + else: + index = index[trim_head:-trim_tail] + if hasattr(X, "columns"): + if names is None: + names = X.columns + return lambda x : X.__class__(x, index=index, columns=names) + else: + if names is None: + names = X.name + return lambda x : X.__class__(x, index=index, name=names) + + +def _maybe_get_pandas_wrapper(X, trim_head=None, trim_tail=None): + """ + If using pandas returns a function to wrap the results, e.g., wrapper(X) + trim is an integer for the symmetric truncation of the series in some + filters. + otherwise returns None + """ + if _is_using_pandas(X, None): + return _get_pandas_wrapper(X, trim_head, trim_tail) + else: + return lambda x : x + + +def _maybe_get_pandas_wrapper_freq(X, trim=None): + if _is_using_pandas(X, None): + index = X.index + func = _get_pandas_wrapper(X, trim) + freq = index.inferred_freq + return func, freq + else: + return lambda x : x, None + + +def pandas_wrapper(func, trim_head=None, trim_tail=None, names=None, *args, + **kwargs): + @wraps(func) + def new_func(X, *args, **kwargs): + # quick pass-through for do nothing case + if not _is_using_pandas(X, None): + return func(X, *args, **kwargs) + + wrapper_func = _get_pandas_wrapper(X, trim_head, trim_tail, + names) + ret = func(X, *args, **kwargs) + ret = wrapper_func(ret) + return ret + + return new_func + + +def pandas_wrapper_bunch(func, trim_head=None, trim_tail=None, + names=None, *args, **kwargs): + @wraps(func) + def new_func(X, *args, **kwargs): + # quick pass-through for do nothing case + if not _is_using_pandas(X, None): + return func(X, *args, **kwargs) + + wrapper_func = _get_pandas_wrapper(X, trim_head, trim_tail, + names) + ret = func(X, *args, **kwargs) + ret = wrapper_func(ret) + return ret + + return new_func + + +def pandas_wrapper_predict(func, trim_head=None, trim_tail=None, + columns=None, *args, **kwargs): + raise NotImplementedError + + +def pandas_wrapper_freq(func, trim_head=None, trim_tail=None, + freq_kw='freq', columns=None, *args, **kwargs): + """ + Return a new function that catches the incoming X, checks if it's pandas, + calls the functions as is. Then wraps the results in the incoming index. + + Deals with frequencies. Expects that the function returns a tuple, + a Bunch object, or a pandas-object. + """ + + @wraps(func) + def new_func(X, *args, **kwargs): + # quick pass-through for do nothing case + if not _is_using_pandas(X, None): + return func(X, *args, **kwargs) + + wrapper_func = _get_pandas_wrapper(X, trim_head, trim_tail, + columns) + index = X.index + freq = index.inferred_freq + kwargs.update({freq_kw : freq_to_period(freq)}) + ret = func(X, *args, **kwargs) + ret = wrapper_func(ret) + return ret + + return new_func + + +def dummy_func(X): + return X + + +def dummy_func_array(X): + return X.values + + +def dummy_func_pandas_columns(X): + return X.values + + +def dummy_func_pandas_series(X): + return X['A'] + + +def test_pandas_freq_decorator(): + X = pd.util.testing.makeDataFrame() + # in X, get a function back that returns an X with the same columns + func = pandas_wrapper(dummy_func) + + np.testing.assert_equal(func(X.values), X) + + func = pandas_wrapper(dummy_func_array) + pd.util.testing.assert_frame_equal(func(X), X) + + expected = X.rename(columns=dict(zip('ABCD', 'EFGH'))) + func = pandas_wrapper(dummy_func_array, names=list('EFGH')) + pd.util.testing.assert_frame_equal(func(X), expected) diff --git a/statsmodels/tsa/filters/api.py b/statsmodels/tsa/filters/api.py new file mode 100644 index 0000000..e8183cf --- /dev/null +++ b/statsmodels/tsa/filters/api.py @@ -0,0 +1,6 @@ +__all__ = ["bkfilter", "hpfilter", "cffilter", "miso_lfilter", + "convolution_filter", "recursive_filter"] +from .bk_filter import bkfilter +from .hp_filter import hpfilter +from .cf_filter import cffilter +from .filtertools import miso_lfilter, convolution_filter, recursive_filter diff --git a/statsmodels/tsa/filters/bk_filter.py b/statsmodels/tsa/filters/bk_filter.py new file mode 100644 index 0000000..513ca69 --- /dev/null +++ b/statsmodels/tsa/filters/bk_filter.py @@ -0,0 +1,96 @@ +from __future__ import absolute_import + +import numpy as np +from scipy.signal import fftconvolve +from ._utils import _maybe_get_pandas_wrapper + + +def bkfilter(X, low=6, high=32, K=12): + """ + Baxter-King bandpass filter + + Parameters + ---------- + X : array-like + A 1 or 2d ndarray. If 2d, variables are assumed to be in columns. + low : float + Minimum period for oscillations, ie., Baxter and King suggest that + the Burns-Mitchell U.S. business cycle has 6 for quarterly data and + 1.5 for annual data. + high : float + Maximum period for oscillations BK suggest that the U.S. + business cycle has 32 for quarterly data and 8 for annual data. + K : int + Lead-lag length of the filter. Baxter and King propose a truncation + length of 12 for quarterly data and 3 for annual data. + + Returns + ------- + Y : array + Cyclical component of X + + References + ---------- :: + Baxter, M. and R. G. King. "Measuring Business Cycles: Approximate + Band-Pass Filters for Economic Time Series." *Review of Economics and + Statistics*, 1999, 81(4), 575-593. + + Notes + ----- + Returns a centered weighted moving average of the original series. Where + the weights a[j] are computed :: + + a[j] = b[j] + theta, for j = 0, +/-1, +/-2, ... +/- K + b[0] = (omega_2 - omega_1)/pi + b[j] = 1/(pi*j)(sin(omega_2*j)-sin(omega_1*j), for j = +/-1, +/-2,... + + and theta is a normalizing constant :: + + theta = -sum(b)/(2K+1) + + Examples + -------- + >>> import statsmodels.api as sm + >>> import pandas as pd + >>> dta = sm.datasets.macrodata.load_pandas().data + >>> index = pd.DatetimeIndex(start='1959Q1', end='2009Q4', freq='Q') + >>> dta.set_index(index, inplace=True) + + >>> cycles = sm.tsa.filters.bkfilter(dta[['realinv']], 6, 24, 12) + + >>> import matplotlib.pyplot as plt + >>> fig, ax = plt.subplots() + >>> cycles.plot(ax=ax, style=['r--', 'b-']) + >>> plt.show() + + .. plot:: plots/bkf_plot.py + + See Also + -------- + statsmodels.tsa.filters.cf_filter.cffilter + statsmodels.tsa.filters.hp_filter.hpfilter + statsmodels.tsa.seasonal.seasonal_decompose + """ + #TODO: change the docstring to ..math::? + #TODO: allow windowing functions to correct for Gibb's Phenomenon? + # adjust bweights (symmetrically) by below before demeaning + # Lancosz Sigma Factors np.sinc(2*j/(2.*K+1)) + _pandas_wrapper = _maybe_get_pandas_wrapper(X, K, K) + X = np.asarray(X) + omega_1 = 2.*np.pi/high # convert from freq. to periodicity + omega_2 = 2.*np.pi/low + bweights = np.zeros(2*K+1) + bweights[K] = (omega_2 - omega_1)/np.pi # weight at zero freq. + j = np.arange(1,int(K)+1) + weights = 1/(np.pi*j)*(np.sin(omega_2*j)-np.sin(omega_1*j)) + bweights[K+j] = weights # j is an idx + bweights[:K] = weights[::-1] # make symmetric weights + bweights -= bweights.mean() # make sure weights sum to zero + if X.ndim == 2: + bweights = bweights[:,None] + X = fftconvolve(X, bweights, mode='valid') + # get a centered moving avg/convolution + if _pandas_wrapper is not None: + return _pandas_wrapper(X) + + return X diff --git a/statsmodels/tsa/filters/cf_filter.py b/statsmodels/tsa/filters/cf_filter.py new file mode 100644 index 0000000..82b467b --- /dev/null +++ b/statsmodels/tsa/filters/cf_filter.py @@ -0,0 +1,109 @@ +from statsmodels.compat.python import range + +import numpy as np +from ._utils import _maybe_get_pandas_wrapper + +# the data is sampled quarterly, so cut-off frequency of 18 + +# Wn is normalized cut-off freq +#Cutoff frequency is that frequency where the magnitude response of the filter +# is sqrt(1/2.). For butter, the normalized cutoff frequency Wn must be a +# number between 0 and 1, where 1 corresponds to the Nyquist frequency, p +# radians per sample. + + +#NOTE: uses a loop, could probably be sped-up for very large datasets +def cffilter(X, low=6, high=32, drift=True): + """ + Christiano Fitzgerald asymmetric, random walk filter + + Parameters + ---------- + X : array-like + 1 or 2d array to filter. If 2d, variables are assumed to be in columns. + low : float + Minimum period of oscillations. Features below low periodicity are + filtered out. Default is 6 for quarterly data, giving a 1.5 year + periodicity. + high : float + Maximum period of oscillations. Features above high periodicity are + filtered out. Default is 32 for quarterly data, giving an 8 year + periodicity. + drift : bool + Whether or not to remove a trend from the data. The trend is estimated + as np.arange(nobs)*(X[-1] - X[0])/(len(X)-1) + + Returns + ------- + cycle : array + The features of `X` between periodicities given by low and high + trend : array + The trend in the data with the cycles removed. + + Examples + -------- + >>> import statsmodels.api as sm + >>> import pandas as pd + >>> dta = sm.datasets.macrodata.load_pandas().data + >>> index = pd.DatetimeIndex(start='1959Q1', end='2009Q4', freq='Q') + >>> dta.set_index(index, inplace=True) + + >>> cf_cycles, cf_trend = sm.tsa.filters.cffilter(dta[["infl", "unemp"]]) + + >>> import matplotlib.pyplot as plt + >>> fig, ax = plt.subplots() + >>> cf_cycles.plot(ax=ax, style=['r--', 'b-']) + >>> plt.show() + + .. plot:: plots/cff_plot.py + + See Also + -------- + statsmodels.tsa.filters.bk_filter.bkfilter + statsmodels.tsa.filters.hp_filter.hpfilter + statsmodels.tsa.seasonal.seasonal_decompose + + """ + #TODO: cythonize/vectorize loop?, add ability for symmetric filter, + # and estimates of theta other than random walk. + if low < 2: + raise ValueError("low must be >= 2") + _pandas_wrapper = _maybe_get_pandas_wrapper(X) + X = np.asanyarray(X) + if X.ndim == 1: + X = X[:,None] + nobs, nseries = X.shape + a = 2*np.pi/high + b = 2*np.pi/low + + if drift: # get drift adjusted series + X = X - np.arange(nobs)[:,None]*(X[-1] - X[0])/(nobs-1) + + J = np.arange(1,nobs+1) + Bj = (np.sin(b*J)-np.sin(a*J))/(np.pi*J) + B0 = (b-a)/np.pi + Bj = np.r_[B0,Bj][:,None] + y = np.zeros((nobs,nseries)) + + for i in range(nobs): + + B = -.5*Bj[0] -np.sum(Bj[1:-i-2]) + A = -Bj[0] - np.sum(Bj[1:-i-2]) - np.sum(Bj[1:i]) - B + y[i] = Bj[0] * X[i] + np.dot(Bj[1:-i-2].T,X[i+1:-1]) + B*X[-1] + \ + np.dot(Bj[1:i].T, X[1:i][::-1]) + A*X[0] + y = y.squeeze() + + cycle, trend = y, X.squeeze()-y + + if _pandas_wrapper is not None: + return _pandas_wrapper(cycle), _pandas_wrapper(trend) + + return cycle, trend + + +if __name__ == "__main__": + import statsmodels as sm + dta = sm.datasets.macrodata.load(as_pandas=False).data[['infl','tbilrate']].view((float,2))[1:] + cycle, trend = cffilter(dta, 6, 32, drift=True) + dta = sm.datasets.macrodata.load(as_pandas=False).data['tbilrate'][1:] + cycle2, trend2 = cffilter(dta, 6, 32, drift=True) diff --git a/statsmodels/tsa/filters/filtertools.py b/statsmodels/tsa/filters/filtertools.py new file mode 100644 index 0000000..f4b690e --- /dev/null +++ b/statsmodels/tsa/filters/filtertools.py @@ -0,0 +1,374 @@ +# -*- coding: utf-8 -*- +"""Linear Filters for time series analysis and testing + + +TODO: +* check common sequence in signature of filter functions (ar,ma,x) or (x,ar,ma) + +Created on Sat Oct 23 17:18:03 2010 + +Author: Josef-pktd +""" +#not original copied from various experimental scripts +#version control history is there + +from statsmodels.compat.python import range +import numpy as np +import scipy.fftpack as fft +from scipy import signal +from scipy.signal.signaltools import _centered as trim_centered +from ._utils import _maybe_get_pandas_wrapper + + +def _pad_nans(x, head=None, tail=None): + if np.ndim(x) == 1: + if head is None and tail is None: + return x + elif head and tail: + return np.r_[[np.nan] * head, x, [np.nan] * tail] + elif tail is None: + return np.r_[[np.nan] * head, x] + elif head is None: + return np.r_[x, [np.nan] * tail] + elif np.ndim(x) == 2: + if head is None and tail is None: + return x + elif head and tail: + return np.r_[[[np.nan] * x.shape[1]] * head, x, + [[np.nan] * x.shape[1]] * tail] + elif tail is None: + return np.r_[[[np.nan] * x.shape[1]] * head, x] + elif head is None: + return np.r_[x, [[np.nan] * x.shape[1]] * tail] + else: + raise ValueError("Nan-padding for ndim > 2 not implemented") + +#original changes and examples in sandbox.tsa.try_var_convolve + +# don't do these imports, here just for copied fftconvolve +#get rid of these imports +#from scipy.fftpack import fft, ifft, ifftshift, fft2, ifft2, fftn, \ +# ifftn, fftfreq +#from numpy import product,array + + +# previous location in sandbox.tsa.try_var_convolve +def fftconvolveinv(in1, in2, mode="full"): + """Convolve two N-dimensional arrays using FFT. See convolve. + + copied from scipy.signal.signaltools, but here used to try out inverse filter + doesn't work or I can't get it to work + + 2010-10-23: + looks ok to me for 1d, + from results below with padded data array (fftp) + but it doesn't work for multidimensional inverse filter (fftn) + original signal.fftconvolve also uses fftn + + """ + s1 = np.array(in1.shape) + s2 = np.array(in2.shape) + complex_result = (np.issubdtype(in1.dtype, np.complex) or + np.issubdtype(in2.dtype, np.complex)) + size = s1+s2-1 + + # Always use 2**n-sized FFT + fsize = 2**np.ceil(np.log2(size)) + IN1 = fft.fftn(in1,fsize) + #IN1 *= fftn(in2,fsize) #JP: this looks like the only change I made + IN1 /= fft.fftn(in2,fsize) # use inverse filter + # note the inverse is elementwise not matrix inverse + # is this correct, NO doesn't seem to work for VARMA + fslice = tuple([slice(0, int(sz)) for sz in size]) + ret = fft.ifftn(IN1)[fslice].copy() + del IN1 + if not complex_result: + ret = ret.real + if mode == "full": + return ret + elif mode == "same": + if np.product(s1,axis=0) > np.product(s2,axis=0): + osize = s1 + else: + osize = s2 + return trim_centered(ret,osize) + elif mode == "valid": + return trim_centered(ret,abs(s2-s1)+1) + + +#code duplication with fftconvolveinv +def fftconvolve3(in1, in2=None, in3=None, mode="full"): + """Convolve two N-dimensional arrays using FFT. See convolve. + + for use with arma (old version: in1=num in2=den in3=data + + * better for consistency with other functions in1=data in2=num in3=den + * note in2 and in3 need to have consistent dimension/shape + since I'm using max of in2, in3 shapes and not the sum + + copied from scipy.signal.signaltools, but here used to try out inverse + filter doesn't work or I can't get it to work + + 2010-10-23 + looks ok to me for 1d, + from results below with padded data array (fftp) + but it doesn't work for multidimensional inverse filter (fftn) + original signal.fftconvolve also uses fftn + """ + if (in2 is None) and (in3 is None): + raise ValueError('at least one of in2 and in3 needs to be given') + s1 = np.array(in1.shape) + if in2 is not None: + s2 = np.array(in2.shape) + else: + s2 = 0 + if in3 is not None: + s3 = np.array(in3.shape) + s2 = max(s2, s3) # try this looks reasonable for ARMA + #s2 = s3 + + complex_result = (np.issubdtype(in1.dtype, np.complex) or + np.issubdtype(in2.dtype, np.complex)) + size = s1+s2-1 + + # Always use 2**n-sized FFT + fsize = 2**np.ceil(np.log2(size)) + #convolve shorter ones first, not sure if it matters + if in2 is not None: + IN1 = fft.fftn(in2, fsize) + if in3 is not None: + IN1 /= fft.fftn(in3, fsize) # use inverse filter + # note the inverse is elementwise not matrix inverse + # is this correct, NO doesn't seem to work for VARMA + IN1 *= fft.fftn(in1, fsize) + fslice = tuple([slice(0, int(sz)) for sz in size]) + ret = fft.ifftn(IN1)[fslice].copy() + del IN1 + if not complex_result: + ret = ret.real + if mode == "full": + return ret + elif mode == "same": + if np.product(s1,axis=0) > np.product(s2,axis=0): + osize = s1 + else: + osize = s2 + return trim_centered(ret,osize) + elif mode == "valid": + return trim_centered(ret,abs(s2-s1)+1) + + +#original changes and examples in sandbox.tsa.try_var_convolve +#examples and tests are there +def recursive_filter(x, ar_coeff, init=None): + ''' + Autoregressive, or recursive, filtering. + + Parameters + ---------- + x : array-like + Time-series data. Should be 1d or n x 1. + ar_coeff : array-like + AR coefficients in reverse time order. See Notes + init : array-like + Initial values of the time-series prior to the first value of y. + The default is zero. + + Returns + ------- + y : array + Filtered array, number of columns determined by x and ar_coeff. If a + pandas object is given, a pandas object is returned. + + Notes + ----- + + Computes the recursive filter :: + + y[n] = ar_coeff[0] * y[n-1] + ... + + ar_coeff[n_coeff - 1] * y[n - n_coeff] + x[n] + + where n_coeff = len(n_coeff). + ''' + _pandas_wrapper = _maybe_get_pandas_wrapper(x) + x = np.asarray(x).squeeze() + ar_coeff = np.asarray(ar_coeff).squeeze() + + if x.ndim > 1 or ar_coeff.ndim > 1: + raise ValueError('x and ar_coeff have to be 1d') + + if init is not None: # integer init are treated differently in lfiltic + if len(init) != len(ar_coeff): + raise ValueError("ar_coeff must be the same length as init") + init = np.asarray(init, dtype=float) + + if init is not None: + zi = signal.lfiltic([1], np.r_[1, -ar_coeff], init, x) + else: + zi = None + + y = signal.lfilter([1.], np.r_[1, -ar_coeff], x, zi=zi) + + if init is not None: + result = y[0] + else: + result = y + + if _pandas_wrapper: + return _pandas_wrapper(result) + return result + + +def convolution_filter(x, filt, nsides=2): + ''' + Linear filtering via convolution. Centered and backward displaced moving + weighted average. + + Parameters + ---------- + x : array_like + data array, 1d or 2d, if 2d then observations in rows + filt : array_like + Linear filter coefficients in reverse time-order. Should have the + same number of dimensions as x though if 1d and ``x`` is 2d will be + coerced to 2d. + nsides : int, optional + If 2, a centered moving average is computed using the filter + coefficients. If 1, the filter coefficients are for past values only. + Both methods use scipy.signal.convolve. + + Returns + ------- + y : ndarray, 2d + Filtered array, number of columns determined by x and filt. If a + pandas object is given, a pandas object is returned. The index of + the return is the exact same as the time period in ``x`` + + Notes + ----- + In nsides == 1, x is filtered :: + + y[n] = filt[0]*x[n-1] + ... + filt[n_filt-1]*x[n-n_filt] + + where n_filt is len(filt). + + If nsides == 2, x is filtered around lag 0 :: + + y[n] = filt[0]*x[n - n_filt/2] + ... + filt[n_filt / 2] * x[n] + + ... + x[n + n_filt/2] + + where n_filt is len(filt). If n_filt is even, then more of the filter + is forward in time than backward. + + If filt is 1d or (nlags,1) one lag polynomial is applied to all + variables (columns of x). If filt is 2d, (nlags, nvars) each series is + independently filtered with its own lag polynomial, uses loop over nvar. + This is different than the usual 2d vs 2d convolution. + + Filtering is done with scipy.signal.convolve, so it will be reasonably + fast for medium sized data. For large data fft convolution would be + faster. + ''' + # for nsides shift the index instead of using 0 for 0 lag this + # allows correct handling of NaNs + if nsides == 1: + trim_head = len(filt) - 1 + trim_tail = None + elif nsides == 2: + trim_head = int(np.ceil(len(filt)/2.) - 1) or None + trim_tail = int(np.ceil(len(filt)/2.) - len(filt) % 2) or None + else: # pragma : no cover + raise ValueError("nsides must be 1 or 2") + + _pandas_wrapper = _maybe_get_pandas_wrapper(x) + x = np.asarray(x) + filt = np.asarray(filt) + if x.ndim > 1 and filt.ndim == 1: + filt = filt[:, None] + if x.ndim > 2: + raise ValueError('x array has to be 1d or 2d') + + if filt.ndim == 1 or min(filt.shape) == 1: + result = signal.convolve(x, filt, mode='valid') + elif filt.ndim == 2: + nlags = filt.shape[0] + nvar = x.shape[1] + result = np.zeros((x.shape[0] - nlags + 1, nvar)) + if nsides == 2: + for i in range(nvar): + # could also use np.convolve, but easier for swiching to fft + result[:, i] = signal.convolve(x[:, i], filt[:, i], + mode='valid') + elif nsides == 1: + for i in range(nvar): + result[:, i] = signal.convolve(x[:, i], np.r_[0, filt[:, i]], + mode='valid') + result = _pad_nans(result, trim_head, trim_tail) + if _pandas_wrapper: + return _pandas_wrapper(result) + return result + + +# previously located in sandbox.tsa.garch +def miso_lfilter(ar, ma, x, useic=False): + ''' + use nd convolution to merge inputs, + then use lfilter to produce output + + arguments for column variables + return currently 1d + + Parameters + ---------- + ar : array_like, 1d, float + autoregressive lag polynomial including lag zero, ar(L)y_t + ma : array_like, same ndim as x, currently 2d + moving average lag polynomial ma(L)x_t + x : array_like, 2d + input data series, time in rows, variables in columns + + Returns + ------- + y : array, 1d + filtered output series + inp : array, 1d + combined input series + + Notes + ----- + currently for 2d inputs only, no choice of axis + Use of signal.lfilter requires that ar lag polynomial contains + floating point numbers + does not cut off invalid starting and final values + + miso_lfilter find array y such that:: + + ar(L)y_t = ma(L)x_t + + with shapes y (nobs,), x (nobs,nvars), ar (narlags,), ma (narlags,nvars) + + ''' + ma = np.asarray(ma) + ar = np.asarray(ar) + #inp = signal.convolve(x, ma, mode='valid') + #inp = signal.convolve(x, ma)[:, (x.shape[1]+1)//2] + #Note: convolve mixes up the variable left-right flip + #I only want the flip in time direction + #this might also be a mistake or problem in other code where I + #switched from correlate to convolve + # correct convolve version, for use with fftconvolve in other cases + #inp2 = signal.convolve(x, ma[:,::-1])[:, (x.shape[1]+1)//2] + inp = signal.correlate(x, ma[::-1,:])[:, (x.shape[1]+1)//2] + #for testing 2d equivalence between convolve and correlate + #np.testing.assert_almost_equal(inp2, inp) + nobs = x.shape[0] + # cut of extra values at end + + #todo initialize also x for correlate + if useic: + return signal.lfilter([1], ar, inp, + #zi=signal.lfilter_ic(np.array([1.,0.]),ar, ic))[0][:nobs], inp[:nobs] + zi=signal.lfiltic(np.array([1.,0.]),ar, useic))[0][:nobs], inp[:nobs] + else: + return signal.lfilter([1], ar, inp)[:nobs], inp[:nobs] + #return signal.lfilter([1], ar, inp), inp diff --git a/statsmodels/tsa/filters/hp_filter.py b/statsmodels/tsa/filters/hp_filter.py new file mode 100644 index 0000000..a297a7e --- /dev/null +++ b/statsmodels/tsa/filters/hp_filter.py @@ -0,0 +1,101 @@ +from __future__ import absolute_import + +from scipy import sparse +from scipy.sparse.linalg import spsolve +import numpy as np +from ._utils import _maybe_get_pandas_wrapper + + +def hpfilter(X, lamb=1600): + """ + Hodrick-Prescott filter + + Parameters + ---------- + X : array-like + The 1d ndarray timeseries to filter of length (nobs,) or (nobs,1) + lamb : float + The Hodrick-Prescott smoothing parameter. A value of 1600 is + suggested for quarterly data. Ravn and Uhlig suggest using a value + of 6.25 (1600/4**4) for annual data and 129600 (1600*3**4) for monthly + data. + + Returns + ------- + cycle : array + The estimated cycle in the data given lamb. + trend : array + The estimated trend in the data given lamb. + + Examples + -------- + >>> import statsmodels.api as sm + >>> import pandas as pd + >>> dta = sm.datasets.macrodata.load_pandas().data + >>> index = pd.DatetimeIndex(start='1959Q1', end='2009Q4', freq='Q') + >>> dta.set_index(index, inplace=True) + + >>> cycle, trend = sm.tsa.filters.hpfilter(dta.realgdp, 1600) + >>> gdp_decomp = dta[['realgdp']] + >>> gdp_decomp["cycle"] = cycle + >>> gdp_decomp["trend"] = trend + + >>> import matplotlib.pyplot as plt + >>> fig, ax = plt.subplots() + >>> gdp_decomp[["realgdp", "trend"]]["2000-03-31":].plot(ax=ax, + ... fontsize=16) + >>> plt.show() + + .. plot:: plots/hpf_plot.py + + Notes + ----- + The HP filter removes a smooth trend, `T`, from the data `X`. by solving + + min sum((X[t] - T[t])**2 + lamb*((T[t+1] - T[t]) - (T[t] - T[t-1]))**2) + T t + + Here we implemented the HP filter as a ridge-regression rule using + scipy.sparse. In this sense, the solution can be written as + + T = inv(I - lamb*K'K)X + + where I is a nobs x nobs identity matrix, and K is a (nobs-2) x nobs matrix + such that + + K[i,j] = 1 if i == j or i == j + 2 + K[i,j] = -2 if i == j + 1 + K[i,j] = 0 otherwise + + See Also + -------- + statsmodels.tsa.filters.bk_filter.bkfilter + statsmodels.tsa.filters.cf_filter.cffilter + statsmodels.tsa.seasonal.seasonal_decompose + + References + ---------- + Hodrick, R.J, and E. C. Prescott. 1980. "Postwar U.S. Business Cycles: An + Empricial Investigation." `Carnegie Mellon University discussion + paper no. 451`. + Ravn, M.O and H. Uhlig. 2002. "Notes On Adjusted the Hodrick-Prescott + Filter for the Frequency of Observations." `The Review of Economics and + Statistics`, 84(2), 371-80. + """ + _pandas_wrapper = _maybe_get_pandas_wrapper(X) + X = np.asarray(X, float) + if X.ndim > 1: + X = X.squeeze() + nobs = len(X) + I = sparse.eye(nobs, nobs) # noqa:E741 + offsets = np.array([0,1,2]) + data = np.repeat([[1.],[-2.],[1.]], nobs, axis=1) + K = sparse.dia_matrix((data, offsets), shape=(nobs-2,nobs)) + + use_umfpack = True + trend = spsolve(I+lamb*K.T.dot(K), X, use_umfpack=use_umfpack) + + cycle = X-trend + if _pandas_wrapper is not None: + return _pandas_wrapper(cycle), _pandas_wrapper(trend) + return cycle, trend diff --git a/statsmodels/tsa/filters/tests/__init__.py b/statsmodels/tsa/filters/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/filters/tests/results/__init__.py b/statsmodels/tsa/filters/tests/results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/filters/tests/results/filter.R b/statsmodels/tsa/filters/tests/results/filter.R new file mode 100644 index 0000000..0ac15b3 --- /dev/null +++ b/statsmodels/tsa/filters/tests/results/filter.R @@ -0,0 +1,49 @@ +library(R2nparray) + +x <- c(-50, 175, 149, 214, 247, 237, 225, 329, 729, 809, 530, 489, 540, 457, + 195, 176, 337, 239, 128, 102, 232, 429, 3, 98, 43, -141, -77, -13, + 125, 361, -45, 184) +x <- ts(x, start=c(1951, 1), frequency=4) + + +conv2 <- filter(x, c(.75, .25), method="convolution") + +conv1 <- filter(x, c(.75, .25), method="convolution", sides=1) + +recurse <- filter(x, c(.75, .25), method="recursive") + +recurse.init <- filter(x, c(.75, .25), method="recursive", init=c(150, 100)) + +conv2.odd <- filter(x, c(.75, .5, .3, .2, .1), method="convolution", + sides=2) +conv1.odd <- filter(x, c(.75, .5, .3, .2, .1), method="convolution", + sides=1) +recurse.odd <- filter(x, c(.75, .5, .3, .2, .1), method="recursive", + init=c(150, 100, 125, 135, 145)) + +# missing values + +x[10] = NaN + +conv2.na <- filter(x, c(.75, .25), method="convolution") + +conv1.na <- filter(x, c(.75, .25), method="convolution", sides=1) + +recurse.na <- filter(x, c(.75, .25), method="recursive") + +recurse.init.na <- filter(x, c(.75, .25), method="recursive", init=c(150, 100)) + + +options(digits=12) + +R2nparray(list(conv2=as.numeric(conv2), conv1=as.numeric(conv1), + recurse=as.numeric(recurse), + recurse_init=as.numeric(recurse.init), + conv2_na=as.numeric(conv2.na), conv1_na=as.numeric(conv1.na), + recurse_na=as.numeric(recurse.na), + recurse_init_na=as.numeric(recurse.init.na), + conv2_odd=as.numeric(conv2.odd), + conv1_odd=as.numeric(conv1.odd), + recurse_odd=as.numeric(recurse.odd)), + fname="filter_results.py") + diff --git a/statsmodels/tsa/filters/tests/results/filter_results.py b/statsmodels/tsa/filters/tests/results/filter_results.py new file mode 100644 index 0000000..bc29c27 --- /dev/null +++ b/statsmodels/tsa/filters/tests/results/filter_results.py @@ -0,0 +1,83 @@ +import numpy as np + +conv2 = np.array([ + 118.75, 155.5, 197.75, 238.75, 239.5, 228, 303, 629, 789, 599.75, + 499.25, 527.25, 477.75, 260.5, 180.75, 296.75, 263.5, 155.75, 108.5, + 199.5, 379.75, 109.5, 74.25, 56.75, -95, -93, -29, 90.5, 302, 56.5, + 126.75, np.nan]) + +conv1 = np.array([ + np.nan, 118.75, 155.5, 197.75, 238.75, 239.5, 228, 303, 629, 789, + 599.75, 499.25, 527.25, 477.75, 260.5, 180.75, 296.75, 263.5, 155.75, + 108.5, 199.5, 379.75, 109.5, 74.25, 56.75, -95, -93, -29, 90.5, 302, + 56.5, 126.75]) + +recurse = np.array([ + -50, 137.5, 239.625, 428.09375, 627.9765625, 815.005859375, + 993.248535156, 1277.68786621, 1935.57803345, 2580.10549164, + 2948.97362709, 3345.75659323, 3786.56085169, 4133.35978708, + 4241.66005323, 4390.58498669, 4690.35375333, 4854.41156167, + 4941.39710958, 5021.6507226, 5233.58731935, 5609.60317016, + 5518.59920746, 5639.35019814, 5652.16245047, 5507.95938738, + 5467.01015315, 5464.24746171, 5589.93813457, 5919.51546636, + 5792.12113341, 6007.96971665]) + +recurse_init = np.array([ + 87.5, 278.125, 379.46875, 568.1328125, 767.966796875, + 955.008300781, 1133.2479248, 1417.6880188, 2075.5779953, + 2720.10550117, 3088.97362471, 3485.75659382, 3926.56085154, + 4273.35978711, 4381.66005322, 4530.58498669, 4830.35375333, + 4994.41156167, 5081.39710958, 5161.6507226, 5373.58731935, + 5749.60317016, 5658.59920746, 5779.35019814, 5792.16245047, + 5647.95938738, 5607.01015315, 5604.24746171, 5729.93813457, + 6059.51546636, 5932.12113341, 6147.96971665]) + +conv2_na = np.array([ + 118.75, 155.5, 197.75, 238.75, 239.5, 228, 303, 629, + np.nan, np.nan, 499.25, 527.25, 477.75, 260.5, 180.75, + 296.75, 263.5, 155.75, 108.5, 199.5, 379.75, 109.5, 74.25, + 56.75, -95, -93, -29, 90.5, 302, 56.5, 126.75, np.nan]) + +conv1_na = np.array([ + np.nan, 118.75, 155.5, 197.75, 238.75, 239.5, 228, 303, 629, + np.nan, np.nan, 499.25, 527.25, 477.75, 260.5, 180.75, 296.75, + 263.5, 155.75, 108.5, 199.5, 379.75, 109.5, 74.25, 56.75, + -95, -93, -29, 90.5, 302, 56.5, 126.75]) + +recurse_na = np.array([ + -50, 137.5, 239.625, 428.09375, 627.9765625, 815.005859375, + 993.248535156, 1277.68786621, 1935.57803345, np.nan, np.nan, + np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, + np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, + np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan]) + +recurse_init_na = np.array([ + 87.5, 278.125, 379.46875, 568.1328125, 767.966796875, + 955.008300781, 1133.2479248, 1417.6880188, 2075.5779953, + np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, + np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, + np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, np.nan, + np.nan, np.nan]) + +conv2_odd = np.array([ + np.nan, np.nan, 366.95, 412.75, 419.05, 501.15, 850.85, + 1138.65, 1109, 1053.15, 1043.2, 946.35, 687.55, 523.5, + 544.65, 485.25, 371.3, 297.2, 344.9, 517.85, 319.55, 260.3, + 191.15, -11.35, -95.45, -72.15, 40.25, 299.85, 173.95, + 247.5, np.nan, np.nan]) + +conv1_odd = np.array([ + np.nan, np.nan, np.nan, np.nan, 366.95, 412.75, 419.05, 501.15, + 850.85, 1138.65, 1109, 1053.15, 1043.2, 946.35, 687.55, 523.5, + 544.65, 485.25, 371.3, 297.2, 344.9, 517.85, 319.55, 260.3, + 191.15, -11.35, -95.45, -72.15, 40.25, 299.85, 173.95, 247.5]) + +recurse_odd = np.array([ + 191.5, 462.125, 668.84375, 1044.1453125, 1556.46835938, + 2238.65205078, 3175.44806152, 4572.56601685, 6833.45236176, + 9776.38394429, 13509.7387615, 18791.5897613, 26145.4239591, + 36153.4065035, 49699.8299323, 68480.4947171, 94501.551723, + 130110.583827, 179061.168784, 246469.715955, 339396.406323, + 467401.785292, 643016.749056, 885080.436404, 1218108.49028, + 1676305.60832, 2307074.11064, 3175195.69641, 4370080.25182, + 6014713.24095, 8277634.14851, 11392536.8578]) diff --git a/statsmodels/tsa/filters/tests/test_filters.py b/statsmodels/tsa/filters/tests/test_filters.py new file mode 100644 index 0000000..f17d46d --- /dev/null +++ b/statsmodels/tsa/filters/tests/test_filters.py @@ -0,0 +1,739 @@ +from datetime import datetime +import numpy as np +from numpy.testing import (assert_almost_equal, assert_equal, assert_allclose, + assert_raises, assert_) +from numpy import array, column_stack +from statsmodels.datasets import macrodata +from pandas import DataFrame, date_range, concat +from statsmodels.tsa.filters.api import (bkfilter, hpfilter, cffilter, + convolution_filter, recursive_filter) + + +def test_bking1d(): + # Test Baxter King band-pass filter. Results are taken from Stata + bking_results = array([ + 7.320813, 2.886914, -6.818976, -13.49436, + -13.27936, -9.405913, -5.691091, -5.133076, -7.273468, + -9.243364, -8.482916, -4.447764, 2.406559, 10.68433, + 19.46414, 28.09749, 34.11066, 33.48468, 24.64598, 9.952399, + -4.265528, -12.59471, -13.46714, -9.049501, -3.011248, + .5655082, 2.897976, 7.406077, 14.67959, 18.651, 13.05891, + -2.945415, -24.08659, -41.86147, -48.68383, -43.32689, + -31.66654, -20.38356, -13.76411, -9.978693, -3.7704, 10.27108, + 31.02847, 51.87613, 66.93117, 73.51951, 73.4053, 69.17468, + 59.8543, 38.23899, -.2604809, -49.0107, -91.1128, -112.1574, + -108.3227, -86.51453, -59.91258, -40.01185, -29.70265, + -22.76396, -13.08037, 1.913622, 20.44045, 37.32873, 46.79802, + 51.95937, 59.67393, 70.50803, 81.27311, 83.53191, 67.72536, + 33.78039, -6.509092, -37.31579, -46.05207, -29.81496, 1.416417, + 28.31503, + 32.90134, 8.949259, -35.41895, -84.65775, -124.4288, -144.6036, + -140.2204, -109.2624, -53.6901, 15.07415, 74.44268, 104.0403, + 101.0725, 76.58291, 49.27925, 36.15751, 36.48799, 37.60897, + 27.75998, 4.216643, -23.20579, -39.33292, -36.6134, -20.90161, + -4.143123, 5.48432, 9.270075, 13.69573, 22.16675, 33.01987, + 41.93186, 47.12222, 48.62164, 47.30701, 40.20537, 22.37898, + -7.133002, -43.3339, -78.51229, -101.3684, -105.2179, + -90.97147, + -68.30824, -48.10113, -35.60709, -31.15775, -31.82346, + -32.49278, -28.22499, -14.42852, 10.1827, 36.64189, 49.43468, + 38.75517, 6.447761, -33.15883, -62.60446, -72.87829, -66.54629, + -52.61205, -38.06676, -26.19963, -16.51492, -7.007577, + .6125674, + 7.866972, 14.8123, 22.52388, 30.65265, 39.47801, 49.05027, + 59.02925, + 72.88999, 95.08865, 125.8983, 154.4283, 160.7638, 130.6092, + 67.84406, -7.070272, -68.08128, -99.39944, -104.911, + -100.2372, -98.11596, -104.2051, -114.0125, -113.3475, + -92.98669, -51.91707, -.7313812, 43.22938, 64.62762, 64.07226, + 59.35707, 67.06026, 91.87247, 124.4591, 151.2402, 163.0648, + 154.6432]) + X = macrodata.load_pandas().data['realinv'].values + Y = bkfilter(X, 6, 32, 12) + assert_almost_equal(Y, bking_results, 4) + + +def test_bking2d(): + # Test Baxter-King band-pass filter with 2d input + bking_results = array([ + [7.320813, -.0374475], [2.886914, -.0430094], + [-6.818976, -.053456], [-13.49436, -.0620739], [-13.27936, -.0626929], + [-9.405913, -.0603022], [-5.691091, -.0630016], [-5.133076, -.0832268], + [-7.273468, -.1186448], [-9.243364, -.1619868], [-8.482916, -.2116604], + [-4.447764, -.2670747], [2.406559, -.3209931], [10.68433, -.3583075], + [19.46414, -.3626742], [28.09749, -.3294618], [34.11066, -.2773388], + [33.48468, -.2436127], [24.64598, -.2605531], [9.952399, -.3305166], + [-4.265528, -.4275561], [-12.59471, -.5076068], [-13.46714, -.537573], + [-9.049501, -.5205845], [-3.011248, -.481673], [.5655082, -.4403994], + [2.897976, -.4039957], [7.406077, -.3537394], [14.67959, -.2687359], + [18.651, -.1459743], [13.05891, .0014926], [-2.945415, .1424277], + [-24.08659, .2451936], [-41.86147, .288541], [-48.68383, .2727282], + [-43.32689, .1959127], [-31.66654, .0644874], [-20.38356, -.1158372], + [-13.76411, -.3518627], [-9.978693, -.6557535], [-3.7704, -1.003754], + [10.27108, -1.341632], [31.02847, -1.614486], [51.87613, -1.779089], + [66.93117, -1.807459], [73.51951, -1.679688], [73.4053, -1.401012], + [69.17468, -.9954996], [59.8543, -.511261], [38.23899, -.0146745], + [-.2604809, .4261311], [-49.0107, .7452514], [-91.1128, .8879492], + [-112.1574, .8282748], [-108.3227, .5851508], [-86.51453, .2351699], + [-59.91258, -.1208998], [-40.01185, -.4297895], [-29.70265, -.6821963], + [-22.76396, -.9234254], [-13.08037, -1.217539], [1.913622, -1.57367], + [20.44045, -1.927008], [37.32873, -2.229565], [46.79802, -2.463154], + [51.95937, -2.614697], [59.67393, -2.681357], [70.50803, -2.609654], + [81.27311, -2.301618], [83.53191, -1.720974], [67.72536, -.9837123], + [33.78039, -.2261613], [-6.509092, .4546985], [-37.31579, 1.005751], + [-46.05207, 1.457224], [-29.81496, 1.870815], [1.416417, 2.263313], + [28.31503, 2.599906], [32.90134, 2.812282], [8.949259, 2.83358], + [-35.41895, 2.632667], [-84.65775, 2.201077], [-124.4288, 1.598951], + [-144.6036, .9504762], [-140.2204, .4187932], [-109.2624, .1646726], + [-53.6901, .2034265], [15.07415, .398165], [74.44268, .5427476], + [104.0403, .5454975], [101.0725, .4723354], [76.58291, .4626823], + [49.27925, .5840143], [36.15751, .7187981], [36.48799, .6058422], + [37.60897, .1221227], [27.75998, -.5891272], [4.216643, -1.249841], + [-23.20579, -1.594972], [-39.33292, -1.545968], [-36.6134, -1.275494], + [-20.90161, -1.035783], [-4.143123, -.9971732], [5.48432, -1.154264], + [9.270075, -1.29987], [13.69573, -1.240559], [22.16675, -.9662656], + [33.01987, -.6420301], [41.93186, -.4698712], [47.12222, -.4527797], + [48.62164, -.4407153], [47.30701, -.2416076], [40.20537, .2317583], + [22.37898, .8710276], [-7.133002, 1.426177], [-43.3339, 1.652785], + [-78.51229, 1.488021], [-101.3684, 1.072096], [-105.2179, .6496446], + [-90.97147, .4193682], [-68.30824, .41847], [-48.10113, .5253419], + [-35.60709, .595076], [-31.15775, .5509905], [-31.82346, .3755519], + [-32.49278, .1297979], [-28.22499, -.0916165], [-14.42852, -.2531037], + [10.1827, -.3220784], [36.64189, -.2660561], [49.43468, -.1358522], + [38.75517, -.0279508], [6.447761, .0168735], [-33.15883, .0315687], + [-62.60446, .0819507], [-72.87829, .2274033], [-66.54629, .4641401], + [-52.61205, .7211093], [-38.06676, .907773], [-26.19963, .9387103], + [-16.51492, .7940786], [-7.007577, .5026631], [.6125674, .1224996], + [7.866972, -.2714422], [14.8123, -.6273921], [22.52388, -.9124271], + [30.65265, -1.108861], [39.47801, -1.199206], [49.05027, -1.19908], + [59.02925, -1.139046], [72.88999, -.9775021], [95.08865, -.6592603], + [125.8983, -.1609712], [154.4283, .4796201], [160.7638, 1.100565], + [130.6092, 1.447148], [67.84406, 1.359608], [-7.070272, .8931825], + [-68.08128, .2619787], [-99.39944, -.252208], [-104.911, -.4703874], + [-100.2372, -.4430657], [-98.11596, -.390683], [-104.2051, -.5647846], + [-114.0125, -.9397582], [-113.3475, -1.341633], [-92.98669, -1.567337], + [-51.91707, -1.504943], [-.7313812, -1.30576], [43.22938, -1.17151], + [64.62762, -1.136151], [64.07226, -1.050555], [59.35707, -.7308369], + [67.06026, -.1766731], [91.87247, .3898467], [124.4591, .8135461], + [151.2402, .9644226], [163.0648, .6865934], [154.6432, .0115685]]) + + mdata = macrodata.load_pandas() + X = mdata.data[['realinv', 'cpi']].values.astype(np.float) + Y = bkfilter(X, 6, 32, 12) + assert_almost_equal(Y, bking_results, 4) + + +def test_hpfilter(): + # Test Hodrick-Prescott Filter. Results taken from Stata. + hpfilt_res = array([ + [3.951191484487844718e+01, 2.670837085155121713e+03], + [8.008853245681075350e+01, 2.698712467543189177e+03], + [4.887545512195401898e+01, 2.726612544878045810e+03], + [3.059193256079834100e+01, 2.754612067439201837e+03], + [6.488266733421960453e+01, 2.782816332665780465e+03], + [2.304024204546703913e+01, 2.811349757954532834e+03], + [-1.355312369487364776e+00, 2.840377312369487299e+03], + [-6.746236512580753697e+01, 2.870078365125807522e+03], + [-8.136743836853429457e+01, 2.900631438368534418e+03], + [-6.016789026443257171e+01, 2.932172890264432681e+03], + [-4.636922433138215638e+01, 2.964788224331382025e+03], + [-2.069533915570400495e+01, 2.998525339155703932e+03], + [-2.162152558595607843e+00, 3.033403152558595593e+03], + [-4.718647774311648391e+00, 3.069427647774311481e+03], + [-1.355645669169007306e+01, 3.106603456691690099e+03], + [-4.436926204475639679e+01, 3.144932262044756499e+03], + [-4.332027378211660107e+01, 3.184407273782116590e+03], + [-4.454697106352068658e+01, 3.224993971063520803e+03], + [-2.629875787765286077e+01, 3.266630757877652741e+03], + [-4.426119635629265758e+01, 3.309228196356292756e+03], + [-1.443441190762496262e+01, 3.352680411907625057e+03], + [-2.026686669186437939e+01, 3.396853866691864368e+03], + [-1.913700136208899494e+01, 3.441606001362089046e+03], + [-5.482458977940950717e+01, 3.486781589779409387e+03], + [-1.596244517937793717e+01, 3.532213445179378141e+03], + [-1.374011542874541192e+01, 3.577700115428745448e+03], + [1.325482813403914406e+01, 3.623030171865960710e+03], + [5.603040174253828809e+01, 3.667983598257461836e+03], + [1.030743373627105939e+02, 3.712348662637289181e+03], + [7.217534795943993231e+01, 3.755948652040559864e+03], + [5.462972503693208637e+01, 3.798671274963067845e+03], + [4.407065050666142270e+01, 3.840449349493338559e+03], + [3.749016270204992907e+01, 3.881249837297949853e+03], + [-1.511244199923112319e+00, 3.921067244199923152e+03], + [-9.093507374079763395e+00, 3.959919507374079785e+03], + [-1.685361946760258434e+01, 3.997823619467602384e+03], + [2.822211031434289907e+01, 4.034790889685657021e+03], + [6.117590627896424849e+01, 4.070822093721035344e+03], + [5.433135391434370831e+01, 4.105935646085656117e+03], + [3.810480376716623141e+01, 4.140188196232833434e+03], + [7.042964928802848590e+01, 4.173670350711971878e+03], + [4.996346842507591646e+01, 4.206496531574924120e+03], + [4.455282059571254649e+01, 4.238825179404287155e+03], + [-7.584961950576143863e+00, 4.270845961950576566e+03], + [-4.620339247697120300e+01, 4.302776392476971523e+03], + [-7.054024364552969928e+01, 4.334829243645529459e+03], + [-6.492941099801464588e+01, 4.367188410998014660e+03], + [-1.433567024239555394e+02, 4.399993702423955256e+03], + [-5.932834493089012540e+01, 4.433344344930889747e+03], + [-6.842096758743628016e+01, 4.467249967587436004e+03], + [-6.774011924654860195e+01, 4.501683119246548813e+03], + [-9.030958565658056614e+01, 4.536573585656580690e+03], + [-4.603981499136807543e+01, 4.571808814991368308e+03], + [2.588118806672991923e+01, 4.607219811933269739e+03], + [3.489419371912299539e+01, 4.642608806280876706e+03], + [7.675179642495095322e+01, 4.677794203575049323e+03], + [1.635497817724171910e+02, 4.712616218227582976e+03], + [1.856079654765617306e+02, 4.746963034523438182e+03], + [1.254269446392718237e+02, 4.780825055360728584e+03], + [1.387413113837174024e+02, 4.814308688616282780e+03], + [6.201826599282230745e+01, 4.847598734007177882e+03], + [4.122129542972197669e+01, 4.880966704570278125e+03], + [-4.120287475842360436e+01, 4.914722874758424041e+03], + [-9.486328233441963675e+01, 4.949203282334419782e+03], + [-1.894232132641573116e+02, 4.984718213264157384e+03], + [-1.895766639620087517e+02, 5.021518663962008759e+03], + [-1.464092413342650616e+02, 5.059737241334265491e+03], + [-1.218770668721217589e+02, 5.099388066872122181e+03], + [-4.973075629078175552e+01, 5.140393756290781312e+03], + [-5.365375213897277717e+01, 5.182600752138972894e+03], + [-7.175241524251214287e+01, 5.225824415242512259e+03], + [-7.834757283225462743e+01, 5.269846572832254424e+03], + [-6.264220687943907251e+01, 5.314404206879438789e+03], + [-3.054332122210325906e+00, 5.359185332122210639e+03], + [4.808218808024685131e+01, 5.403838811919753425e+03], + [2.781399326736391231e+00, 5.448011600673263274e+03], + [-2.197570415173231595e+01, 5.491380704151732061e+03], + [1.509441335012807031e+02, 5.533624866498719712e+03], + [1.658909029574851957e+02, 5.574409097042514986e+03], + [2.027292548049981633e+02, 5.613492745195001589e+03], + [1.752101578176061594e+02, 5.650738842182393455e+03], + [1.452808749847536092e+02, 5.686137125015246056e+03], + [1.535481629475025329e+02, 5.719786837052497503e+03], + [1.376169777998875361e+02, 5.751878022200112355e+03], + [1.257703080340770612e+02, 5.782696691965922582e+03], + [-2.524186846895645431e+01, 5.812614868468956047e+03], + [-6.546618027042404719e+01, 5.842083180270424236e+03], + [1.192352023580315290e+01, 5.871536479764196883e+03], + [1.043482970188742911e+02, 5.901368702981125352e+03], + [2.581376184768396342e+01, 5.931981238152316109e+03], + [6.634330880534071184e+01, 5.963840691194659485e+03], + [-4.236780162594641297e+01, 5.997429801625946311e+03], + [-1.759397735321817891e+02, 6.033272773532181418e+03], + [-1.827933311233055065e+02, 6.071867331123305121e+03], + [-2.472312362505917918e+02, 6.113601236250591683e+03], + [-2.877470049336488955e+02, 6.158748004933649099e+03], + [-2.634066336693540507e+02, 6.207426633669354487e+03], + [-1.819572770763625158e+02, 6.259576277076362203e+03], + [-1.175034606274621183e+02, 6.314971460627461965e+03], + [-4.769898649718379602e+01, 6.373272986497183410e+03], + [1.419578280287896632e+01, 6.434068217197121157e+03], + [6.267929662760798237e+01, 6.496914703372392069e+03], + [6.196413196753746888e+01, 6.561378868032462378e+03], + [5.019769125317907310e+01, 6.627066308746821051e+03], + [4.665364933213822951e+01, 6.693621350667861407e+03], + [3.662430749527266016e+01, 6.760719692504727391e+03], + [7.545680850246480986e+01, 6.828066191497535328e+03], + [6.052940492147536133e+01, 6.895388595078524304e+03], + [6.029518881462354329e+01, 6.962461811185376064e+03], + [2.187042136652689805e+01, 7.029098578633473153e+03], + [2.380067926824722235e+01, 7.095149320731752596e+03], + [-7.119129802169481991e+00, 7.160478129802169860e+03], + [-3.194497359120850888e+01, 7.224963973591208742e+03], + [-1.897137038934124575e+01, 7.288481370389341464e+03], + [-1.832687287845146784e+01, 7.350884872878451461e+03], + [4.600482336597542599e+01, 7.412017176634024509e+03], + [2.489047706403016491e+01, 7.471709522935970199e+03], + [6.305909392127250612e+01, 7.529821906078727807e+03], + [4.585212309498183458e+01, 7.586229876905018500e+03], + [9.314260180878318351e+01, 7.640848398191216802e+03], + [1.129819097095369216e+02, 7.693621090290463144e+03], + [1.204662123176703972e+02, 7.744549787682329224e+03], + [1.336860614601246198e+02, 7.793706938539875409e+03], + [1.034567175813735957e+02, 7.841240282418626521e+03], + [1.403118873372050075e+02, 7.887381112662795204e+03], + [1.271726169351004501e+02, 7.932425383064899506e+03], + [8.271925765282139764e+01, 7.976756742347178260e+03], + [-3.197432211752584408e+01, 8.020838322117525422e+03], + [-1.150209535194062482e+02, 8.065184953519406008e+03], + [-1.064694837456772802e+02, 8.110291483745677397e+03], + [-1.190428718925368230e+02, 8.156580871892536379e+03], + [-1.353635336292991269e+02, 8.204409533629299403e+03], + [-9.644348283027102298e+01, 8.254059482830271008e+03], + [-6.143413116116607853e+01, 8.305728131161165948e+03], + [-3.019161311097923317e+01, 8.359552613110980019e+03], + [1.384333163552582846e+00, 8.415631666836447039e+03], + [-4.156016073666614830e+01, 8.474045160736666730e+03], + [-4.843882841860977351e+01, 8.534873828418609264e+03], + [-6.706442838867042155e+01, 8.598172428388670596e+03], + [-2.019644488579979225e+01, 8.663965444885800025e+03], + [-4.316446881084630149e+00, 8.732235446881084499e+03], + [4.435061943264736328e+01, 8.802952380567352520e+03], + [2.820550564155564643e+01, 8.876083494358445023e+03], + [5.155624419490777655e+01, 8.951623755805092514e+03], + [-4.318760899315748247e+00, 9.029585760899315574e+03], + [-6.534632828542271454e+01, 9.110014328285422380e+03], + [-7.226757738268497633e+01, 9.192951577382684263e+03], + [-9.412378615444868046e+01, 9.278398786154448317e+03], + [-1.191240653288368776e+02, 9.366312065328836979e+03], + [-4.953669826751865912e+01, 9.456588698267518339e+03], + [-6.017251579067487910e+01, 9.549051515790675694e+03], + [-5.103438828313483100e+01, 9.643492388283135369e+03], + [-7.343057830678117170e+01, 9.739665578306781754e+03], + [-2.774245193054957781e+01, 9.837293451930549054e+03], + [-3.380481112519191811e+00, 9.936052481112519672e+03], + [-2.672779877794346248e+01, 1.003560179877794326e+04], + [-3.217342505148371856e+01, 1.013559842505148299e+04], + [-4.140567518359966925e+01, 1.023568267518359971e+04], + [-6.687756033938057953e+00, 1.033547475603393832e+04], + [7.300600408459467872e+01, 1.043456899591540605e+04], + [6.862345670680042531e+01, 1.053255554329319966e+04], + [5.497882461487461114e+01, 1.062907017538512628e+04], + [9.612244093055960548e+01, 1.072379155906944106e+04], + [1.978212770103891671e+02, 1.081643272298961165e+04], + [1.362772276848754700e+02, 1.090676677231512440e+04], + [2.637635494867263333e+02, 1.099469045051327339e+04], + [1.876813256815166824e+02, 1.108018567431848351e+04], + [1.711447873158413131e+02, 1.116339921268415856e+04], + [5.257586460826678376e+01, 1.124459513539173349e+04], + [4.710652228531762375e+01, 1.132414447771468258e+04], + [-6.237613484241046535e+01, 1.140245113484241119e+04], + [-9.982044354035315337e+01, 1.147994844354035376e+04], + [-7.916275548997509759e+01, 1.155703075548997549e+04], + [-9.526003459472303803e+01, 1.163403003459472347e+04], + [-1.147987680369169539e+02, 1.171122876803691724e+04], + [-1.900259054765901965e+02, 1.178884990547659072e+04], + [-2.212256473439556430e+02, 1.186704464734395515e+04], + [-2.071394278781845060e+02, 1.194584542787818464e+04], + [-8.968541528904825100e+01, 1.202514641528904758e+04], + [-6.189531564415665343e+01, 1.210471231564415575e+04], + [-5.662878162551714922e+01, 1.218425178162551674e+04], + [-4.961678134413705266e+01, 1.226343478134413635e+04], + [-3.836288992144181975e+01, 1.234189588992144127e+04], + [-8.956671991456460091e+00, 1.241923867199145570e+04], + [3.907028461866866564e+01, 1.249504271538133071e+04], + [1.865299000184495526e+01, 1.256888200999815490e+04], + [4.279803532226833340e+01, 1.264035496467773191e+04], + [3.962735362631610769e+01, 1.270907164637368442e+04], + [1.412691291877854383e+02, 1.277466887081221466e+04], + [1.256537791844366438e+02, 1.283680822081556289e+04], + [7.067642758858892194e+01, 1.289523957241141034e+04], + [1.108876647603192396e+02, 1.294979133523968085e+04], + [9.956490829291760747e+01, 1.300033609170708223e+04], + [1.571612709880937473e+02, 1.304681572901190702e+04], + [2.318746375812715996e+02, 1.308923436241872878e+04], + [2.635546670125277160e+02, 1.312769433298747208e+04], + [2.044220965739259555e+02, 1.316244290342607383e+04], + [2.213739418903714977e+02, 1.319389205810962812e+04], + [1.020184547767112235e+02, 1.322258154522328914e+04], + [-1.072694716663390864e+02, 1.324918947166633916e+04], + [-3.490477058718843182e+02, 1.327445770587188417e+04], + [-3.975570728533530200e+02, 1.329906107285335383e+04], + [-3.331152428080622485e+02, 1.332345624280806260e+04]]) + dta = macrodata.load_pandas().data['realgdp'].values + res = column_stack((hpfilter(dta, 1600))) + assert_almost_equal(res, hpfilt_res, 6) + + +def test_cfitz_filter(): + # Test Christiano-Fitzgerald Filter. Results taken from R. + # NOTE: The Stata mata code and the matlab code it's based on are wrong. + cfilt_res = array([ + [0.712599537179426, 0.439563468233128], + [1.06824041304411, 0.352886666575907], + [1.19422467791128, 0.257297004260607], + [0.970845473140327, 0.114504692143872], + [0.467026976628563, -0.070734782329146], + [-0.089153511514031, -0.238609685132605], + [-0.452339254128573, -0.32376584042956], + [-0.513231214461187, -0.314288554228112], + [-0.352372578720063, -0.258815055101336], + [-0.160282602521333, -0.215076844089567], + [-0.0918782593827686, -0.194120745417214], + [-0.168083823205437, -0.158327420072693], + [-0.291595204965808, -0.0742727139742986], + [-0.348638756841307, 0.037008291163602], + [-0.304328040874631, 0.108196527328748], + [-0.215933150969686, 0.0869231107437175], + [-0.165632621390694, -0.0130556619786275], + [-0.182326839507151, -0.126570926191824], + [-0.223737786804725, -0.205535321806185], + [-0.228939291453403, -0.269110078201836], + [-0.185518327227038, -0.375976507132174], + [-0.143900152461529, -0.53760115656157], + [-0.162749541550174, -0.660065018626038], + [-0.236263634756884, -0.588542352053736], + [-0.275785854309211, -0.236867929421996], + [-0.173666515108109, 0.303436335579219], + [0.0963135720251639, 0.779772338801993], + [0.427070069032285, 0.929108075350647], + [0.629034743259998, 0.658330841002647], + [0.557941248993624, 0.118500049361018], + [0.227866624051603, -0.385048321099911], + [-0.179878859883227, -0.582223992561493], + [-0.428263000051965, -0.394053702908091], + [-0.381640684645912, 0.0445437406977307], + [-0.0942745548364887, 0.493997792757968], + [0.238132391504895, 0.764519811304315], + [0.431293754256291, 0.814755206427316], + [0.455010435813661, 0.745567043101108], + [0.452800768971269, 0.709401694610443], + [0.615754619329312, 0.798293251119636], + [1.00256335412457, 0.975856845059388], + [1.44841039351691, 1.09097252730799], + [1.64651971120370, 0.967823457118036], + [1.35534532901802, 0.522397724737059], + [0.580492790312048, -0.16941343361609], + [-0.410746188031773, -0.90760401289056], + [-1.26148406066881, -1.49592867122591], + [-1.75784179124566, -1.87404167409849], + [-1.94478553960064, -2.14586210891112], + [-2.03751202708559, -2.465855239868], + [-2.20376059354166, -2.86294187189049], + [-2.39722338315852, -3.15004697654831], + [-2.38032366161537, -3.01390466643222], + [-1.91798022532025, -2.23395210271226], + [-0.982318490353716, -0.861346053067472], + [0.199047030343412, 0.790266582335616], + [1.28582776574786, 2.33731327460104], + [2.03565905376430, 3.54085486821911], + [2.41201557412526, 4.36519456268955], + [2.52011070482927, 4.84810517685452], + [2.45618479815452, 4.92906708807477], + [2.22272146945388, 4.42591058990048], + [1.78307567169034, 3.20962906108388], + [1.18234431860844, 1.42568060336985], + [0.590069172333348, -0.461896808688991], + [0.19662302949837, -1.89020992539465], + [0.048307034171166, -2.53490571941987], + [-0.0141956981899000, -2.50020338531674], + [-0.230505187108187, -2.20625973569823], + [-0.700947410386801, -2.06643697511048], + [-1.27085123163060, -2.21536883679783], + [-1.64082547897928, -2.49016921117735], + [-1.62286182971254, -2.63948740221362], + [-1.31609762181362, -2.54685250637904], + [-1.03085567704873, -2.27157435428923], + [-1.01100120380112, -1.90404507430561], + [-1.19823958399826, -1.4123209792214], + [-1.26398933608383, -0.654000086153317], + [-0.904710628949692, 0.447960016248203], + [-0.151340093679588, 1.73970411237156], + [0.592926881165989, 2.85741581650685], + [0.851660587507523, 3.4410446351716], + [0.480324393352127, 3.36870271362297], + [-0.165153230782417, 2.82003806696544], + [-0.459235919375844, 2.12858991660866], + [0.0271158842479935, 1.55840980891556], + [1.18759188180671, 1.17980298478623], + [2.43238266962309, 0.904011534980672], + [3.08277213720132, 0.595286911949837], + [2.79953663720953, 0.148014782859571], + [1.73694442845833, -0.496297332023011], + [0.357638079951977, -1.33108149877570], + [-0.891418825216945, -2.22650083183366], + [-1.77646467793627, -2.89359299718574], + [-2.24614790863088, -2.97921619243347], + [-2.29048879096607, -2.30003092779280], + [-1.87929656465888, -1.05298381273274], + [-1.04510101454788, 0.215837488618531], + [0.00413338508394524, 0.937866257924888], + [0.906870625251025, 0.92664365343019], + [1.33869057593416, 0.518564571494679], + [1.22659678454440, 0.288096869652890], + [0.79380139656044, 0.541053084632774], + [0.38029431865832, 1.01905199983437], + [0.183929413600038, 1.10529586616777], + [0.140045425897033, 0.393618564826736], + [0.0337313182352219, -0.86431819007665], + [-0.269208622829813, -1.85638085246792], + [-0.687276639992166, -1.82275359004533], + [-1.00161592325614, -0.692695765071617], + [-1.06320089194036, 0.803577361347341], + [-0.927152307196776, 1.67366338751788], + [-0.786802101366614, 1.42564362251793], + [-0.772970884572502, 0.426446388877964], + [-0.81275662801789, -0.437721213831647], + [-0.686831250382476, -0.504255468075149], + [-0.237936463020255, 0.148656301898438], + [0.459631879129522, 0.832925905720478], + [1.12717379822508, 0.889455302576383], + [1.48640453200855, 0.268042676202216], + [1.46515245776211, -0.446505038539178], + [1.22993484959115, -0.563868578181134], + [1.0272100765927, 0.0996849952196907], + [0.979191212438404, 1.05053652824665], + [1.00733490030391, 1.51658415000556], + [0.932192535457706, 1.06262774912638], + [0.643374300839414, -0.0865180803476065], + [0.186885168954461, -1.24799408923277], + [-0.290842337365465, -1.80035611156538], + [-0.669446735516495, -1.58847333561510], + [-0.928915624595538, -0.932116966867929], + [-1.11758635926997, -0.307879396807850], + [-1.26832454569756, -0.00856199983957032], + [-1.35755577149251, -0.0303537516690989], + [-1.34244112665546, -0.196807620887435], + [-1.22227976023299, -0.342062643495923], + [-1.04601473486818, -0.390474392372016], + [-0.85158508717846, -0.322164402093596], + [-0.605033439160543, -0.126930141915954], + [-0.218304303942818, 0.179551077808122], + [0.352173017779006, 0.512327303000081], + [1.01389600097229, 0.733397490572755], + [1.55149778750607, 0.748740387440165], + [1.75499674757591, 0.601759717901009], + [1.56636057468633, 0.457705308377562], + [1.12239792537274, 0.470849913286519], + [0.655802600286141, 0.646142040378738], + [0.335285115340180, 0.824103600255079], + [0.173454596506888, 0.808068498175582], + [0.0666753011315252, 0.521488214487996], + [-0.0842367474816212, 0.0583493276173476], + [-0.285604762631464, -0.405958418332253], + [-0.465735422869919, -0.747800086512926], + [-0.563586691231348, -0.94982272350799], + [-0.598110322024572, -1.04736894794361], + [-0.65216025756061, -1.04858365218822], + [-0.789663117801624, -0.924145633093637], + [-0.984704045337959, -0.670740724179446], + [-1.12449565589348, -0.359476803003931], + [-1.07878318723543, -0.092290938944355], + [-0.775555435407062, 0.102132527529259], + [-0.231610677329856, 0.314409560305622], + [0.463192794235131, 0.663523546243286], + [1.17416973448423, 1.13156902460931], + [1.74112278814906, 1.48967153067024], + [2.00320855757084, 1.42571085941843], + [1.8529912317336, 0.802460519079555], + [1.30747261947211, -0.169219078629572], + [0.540237070403222, -1.01621539672694], + [-0.177136817092375, -1.3130784867977], + [-0.611981468823591, -0.982477824460773], + [-0.700240028737747, -0.344919609255406], + [-0.572396497740112, 0.125083535035390], + [-0.450934466600975, 0.142553112732280], + [-0.494020014254326, -0.211429053871656], + [-0.701707589094918, -0.599602868825992], + [-0.94721339346157, -0.710669870591623], + [-1.09297139748946, -0.47846194092245], + [-1.08850658866583, -0.082258450179988], + [-0.976082880696692, 0.235758921309309], + [-0.81885695346771, 0.365298185204303], + [-0.63165529525553, 0.384725179378064], + [-0.37983149226421, 0.460240196164378], + [-0.0375551354277652, 0.68580913832794], + [0.361996927427804, 0.984470835955107], + [0.739920615366072, 1.13195975020298], + [1.03583478061534, 0.88812510421667], + [1.25614938962160, 0.172561520611839], + [1.45295030231799, -0.804979390544485], + [1.64887158748426, -1.55662011197859], + [1.78022721495313, -1.52921975346218], + [1.71945683859668, -0.462240366424548], + [1.36728880239190, 1.31213774341268], + [0.740173894315912, 2.88362740582926], + [-0.0205364331835904, 3.20319080963167], + [-0.725643970956428, 1.75222466531151], + [-1.23900506689782, -0.998432917440275], + [-1.52651897508678, -3.72752870885448], + [-1.62857516631435, -5.00551707196292], + [-1.59657420180451, -4.18499132634584], + [-1.45489013276495, -1.81759097305637], + [-1.21309542313047, 0.722029457352468]]) + dta = macrodata.load_pandas().data[['tbilrate', 'infl']].values[1:] + cyc, trend = cffilter(dta) + assert_almost_equal(cyc, cfilt_res, 8) + # do 1d + cyc, trend = cffilter(dta[:, 1]) + assert_almost_equal(cyc, cfilt_res[:, 1], 8) + + +def test_bking_pandas(): + # 1d + dta = macrodata.load_pandas().data + index = date_range(start='1959-01-01', end='2009-10-01', freq='Q') + dta.index = index + filtered = bkfilter(dta["infl"]) + nd_filtered = bkfilter(dta['infl'].values) + assert_equal(filtered.values, nd_filtered) + assert_equal(filtered.index[0], datetime(1962, 3, 31)) + assert_equal(filtered.index[-1], datetime(2006, 9, 30)) + assert_equal(filtered.name, "infl") + + # 2d + filtered = bkfilter(dta[["infl", "unemp"]]) + nd_filtered = bkfilter(dta[['infl', 'unemp']].values) + assert_equal(filtered.values, nd_filtered) + assert_equal(filtered.index[0], datetime(1962, 3, 31)) + assert_equal(filtered.index[-1], datetime(2006, 9, 30)) + assert_equal(filtered.columns.values, ["infl", "unemp"]) + + +def test_cfitz_pandas(): + # 1d + dta = macrodata.load_pandas().data + index = date_range(start='1959-01-01', end='2009-10-01', freq='Q') + dta.index = index + cycle, trend = cffilter(dta["infl"]) + ndcycle, ndtrend = cffilter(dta['infl'].values) + assert_allclose(cycle.values, ndcycle, rtol=1e-14) + assert_equal(cycle.index[0], datetime(1959, 3, 31)) + assert_equal(cycle.index[-1], datetime(2009, 9, 30)) + assert_equal(cycle.name, "infl") + + # 2d + cycle, trend = cffilter(dta[["infl", "unemp"]]) + ndcycle, ndtrend = cffilter(dta[['infl', 'unemp']].values) + assert_allclose(cycle.values, ndcycle, rtol=1e-14) + assert_equal(cycle.index[0], datetime(1959, 3, 31)) + assert_equal(cycle.index[-1], datetime(2009, 9, 30)) + assert_equal(cycle.columns.values, ["infl", "unemp"]) + + +def test_hpfilter_pandas(): + dta = macrodata.load_pandas().data + index = date_range(start='1959-01-01', end='2009-10-01', freq='Q') + dta.index = index + cycle, trend = hpfilter(dta["realgdp"]) + ndcycle, ndtrend = hpfilter(dta['realgdp'].values) + assert_equal(cycle.values, ndcycle) + assert_equal(cycle.index[0], datetime(1959, 3, 31)) + assert_equal(cycle.index[-1], datetime(2009, 9, 30)) + assert_equal(cycle.name, "realgdp") + + +class TestFilters(object): + @classmethod + def setup_class(cls): + # even + data = [-50, 175, 149, 214, 247, 237, 225, 329, 729, 809, + 530, 489, 540, 457, 195, 176, 337, 239, 128, 102, + 232, 429, 3, 98, 43, -141, -77, -13, 125, 361, -45, 184] + cls.data = DataFrame(data, date_range(start='1/1/1951', + periods=len(data), + freq='Q')) + data[9] = np.nan + cls.datana = DataFrame(data, date_range(start='1/1/1951', + periods=len(data), + freq='Q')) + from .results import filter_results + cls.expected = filter_results + + def test_convolution(self): + x = self.data.values.squeeze() + res = convolution_filter(x, [.75, .25]) + expected = self.expected.conv2 + np.testing.assert_almost_equal(res, expected) + + res = convolution_filter(x, [.75, .25], nsides=1) + expected = self.expected.conv1 + np.testing.assert_almost_equal(res, expected) + + x = self.datana.values.squeeze() + res = convolution_filter(x, [.75, .25]) + expected = self.expected.conv2_na + np.testing.assert_almost_equal(res, expected) + + res = convolution_filter(x, [.75, .25], nsides=1) + expected = self.expected.conv1_na + np.testing.assert_almost_equal(res, expected) + + def test_convolution2d(self): + x = self.data.values + res = convolution_filter(x, [[.75], [.25]]) + expected = self.expected.conv2 + np.testing.assert_almost_equal(res, expected[:, None]) + res = convolution_filter(np.c_[x, x], [[.75, .75], [.25, .25]]) + np.testing.assert_almost_equal(res, np.c_[expected, expected]) + + res = convolution_filter(x, [[.75], [.25]], nsides=1) + expected = self.expected.conv1 + np.testing.assert_almost_equal(res, expected[:, None]) + + x = self.datana.values + res = convolution_filter(x, [[.75], [.25]]) + expected = self.expected.conv2_na + np.testing.assert_almost_equal(res, expected[:, None]) + + res = convolution_filter(x, [[.75], [.25]], nsides=1) + expected = self.expected.conv1_na + np.testing.assert_almost_equal(res, expected[:, None]) + + def test_recursive(self): + x = self.data.values.squeeze() + res = recursive_filter(x, [.75, .25]) + expected = self.expected.recurse + np.testing.assert_almost_equal(res, expected) + + res = recursive_filter(x, [.75, .25], init=[150, 100]) + expected = self.expected.recurse_init + np.testing.assert_almost_equal(res, expected) + + x = self.datana.values.squeeze() + res = recursive_filter(x, [.75, .25]) + expected = self.expected.recurse_na + np.testing.assert_almost_equal(res, expected) + + res = recursive_filter(x, [.75, .25], init=[150, 100]) + expected = self.expected.recurse_init_na + np.testing.assert_almost_equal(res, expected) + + assert_raises(ValueError, recursive_filter, x, + [.75, .25, .5], [150, 100]) + + def test_pandas(self): + start = datetime(1951, 3, 31) + end = datetime(1958, 12, 31) + x = self.data[0] + res = convolution_filter(x, [.75, .25]) + assert_(res.index[0] == start) + assert_(res.index[-1] == end) + + res = convolution_filter(x, [.75, .25], nsides=1) + assert_(res.index[0] == start) + # with no nan-padding q1 if not + assert_(res.index[-1] == end) + + res = recursive_filter(x, [.75, .25]) + assert_(res.index[0] == start) + assert_(res.index[-1] == end) + + x = self.datana + res = recursive_filter(x, [.75, .25]) + assert_(res.index[0] == start) + assert_(res.index[-1] == end) + + def test_pandas2d(self): + start = datetime(1951, 3, 31) + end = datetime(1958, 12, 31) + x = concat((self.data[0], self.data[0]), axis=1) + res = convolution_filter(x, [[.75, .75], [.25, .25]]) + assert_(res.index[0] == start) + assert_(res.index[-1] == end) + + def test_odd_length_filter(self): + start = datetime(1951, 3, 31) + end = datetime(1958, 12, 31) + x = self.data[0] + res = convolution_filter(x, [.75, .5, .3, .2, .1]) + expected = self.expected.conv2_odd + np.testing.assert_almost_equal(res.values.squeeze(), expected) + np.testing.assert_(res.index[0] == start) + np.testing.assert_(res.index[-1] == end) + + res = convolution_filter(x, [.75, .5, .3, .2, .1], nsides=1) + expected = self.expected.conv1_odd + np.testing.assert_almost_equal(res.values.squeeze(), expected) + np.testing.assert_(res.index[0] == start) + np.testing.assert_(res.index[-1] == end) + # with no NAs + + # not a stable filter + res = recursive_filter(x, [.75, .5, .3, .2, .1], init=[150, 100, + 125, 135, + 145]) + expected = self.expected.recurse_odd + # only have 12 characters in R and this blows up and gets big + np.testing.assert_almost_equal(res.values.squeeze(), expected, 4) + np.testing.assert_(res.index[0] == start) + np.testing.assert_(res.index[-1] == end) diff --git a/statsmodels/tsa/holtwinters.py b/statsmodels/tsa/holtwinters.py new file mode 100644 index 0000000..a23f86a --- /dev/null +++ b/statsmodels/tsa/holtwinters.py @@ -0,0 +1,1137 @@ +""" +Notes +----- +Code written using below textbook as a reference. +Results are checked against the expected outcomes in the text book. + +Properties: +Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles and +practice. OTexts, 2014. + +Author: Terence L van Zyl +Modified: Kevin Sheppard +""" +from statsmodels.compat.python import string_types + +import numpy as np +import pandas as pd +from scipy.optimize import basinhopping, brute, minimize +from scipy.spatial.distance import sqeuclidean +from scipy.special import inv_boxcox +from scipy.stats import boxcox + +from statsmodels.base.model import Results +from statsmodels.base.wrapper import populate_wrapper, union_dicts, ResultsWrapper +from statsmodels.tsa.base.tsa_model import TimeSeriesModel +from statsmodels.tsa.tsatools import freq_to_period +import statsmodels.tsa._exponential_smoothers as smoothers + + +def _holt_init(x, xi, p, y, l, b): + """Initialization for the Holt Models""" + p[xi.astype(np.bool)] = x + alpha, beta, _, l0, b0, phi = p[:6] + alphac = 1 - alpha + betac = 1 - beta + y_alpha = alpha * y + l[:] = 0 + b[:] = 0 + l[0] = l0 + b[0] = b0 + return alpha, beta, phi, alphac, betac, y_alpha + + +def _holt__(x, xi, p, y, l, b, s, m, n, max_seen): + """ + Simple Exponential Smoothing + Minimization Function + (,) + """ + alpha, beta, phi, alphac, betac, y_alpha = _holt_init(x, xi, p, y, l, b) + for i in range(1, n): + l[i] = (y_alpha[i - 1]) + (alphac * (l[i - 1])) + return sqeuclidean(l, y) + + +def _holt_mul_dam(x, xi, p, y, l, b, s, m, n, max_seen): + """ + Multiplicative and Multiplicative Damped + Minimization Function + (M,) & (Md,) + """ + alpha, beta, phi, alphac, betac, y_alpha = _holt_init(x, xi, p, y, l, b) + if alpha == 0.0: + return max_seen + if beta > alpha: + return max_seen + for i in range(1, n): + l[i] = (y_alpha[i - 1]) + (alphac * (l[i - 1] * b[i - 1]**phi)) + b[i] = (beta * (l[i] / l[i - 1])) + (betac * b[i - 1]**phi) + return sqeuclidean(l * b**phi, y) + + +def _holt_add_dam(x, xi, p, y, l, b, s, m, n, max_seen): + """ + Additive and Additive Damped + Minimization Function + (A,) & (Ad,) + """ + alpha, beta, phi, alphac, betac, y_alpha = _holt_init(x, xi, p, y, l, b) + if alpha == 0.0: + return max_seen + if beta > alpha: + return max_seen + for i in range(1, n): + l[i] = (y_alpha[i - 1]) + (alphac * (l[i - 1] + phi * b[i - 1])) + b[i] = (beta * (l[i] - l[i - 1])) + (betac * phi * b[i - 1]) + return sqeuclidean(l + phi * b, y) + + +def _holt_win_init(x, xi, p, y, l, b, s, m): + """Initialization for the Holt Winters Seasonal Models""" + p[xi.astype(np.bool)] = x + alpha, beta, gamma, l0, b0, phi = p[:6] + s0 = p[6:] + alphac = 1 - alpha + betac = 1 - beta + gammac = 1 - gamma + y_alpha = alpha * y + y_gamma = gamma * y + l[:] = 0 + b[:] = 0 + s[:] = 0 + l[0] = l0 + b[0] = b0 + s[:m] = s0 + return alpha, beta, gamma, phi, alphac, betac, gammac, y_alpha, y_gamma + + +def _holt_win__mul(x, xi, p, y, l, b, s, m, n, max_seen): + """ + Multiplicative Seasonal + Minimization Function + (,M) + """ + alpha, beta, gamma, phi, alphac, betac, gammac, y_alpha, y_gamma = _holt_win_init( + x, xi, p, y, l, b, s, m) + if alpha == 0.0: + return max_seen + if gamma > 1 - alpha: + return max_seen + for i in range(1, n): + l[i] = (y_alpha[i - 1] / s[i - 1]) + (alphac * (l[i - 1])) + s[i + m - 1] = (y_gamma[i - 1] / (l[i - 1])) + (gammac * s[i - 1]) + return sqeuclidean(l * s[:-(m - 1)], y) + + +def _holt_win__add(x, xi, p, y, l, b, s, m, n, max_seen): + """ + Additive Seasonal + Minimization Function + (,A) + """ + alpha, beta, gamma, phi, alphac, betac, gammac, y_alpha, y_gamma = _holt_win_init( + x, xi, p, y, l, b, s, m) + if alpha == 0.0: + return max_seen + if gamma > 1 - alpha: + return max_seen + for i in range(1, n): + l[i] = (y_alpha[i - 1]) - (alpha * s[i - 1]) + (alphac * (l[i - 1])) + s[i + m - 1] = y_gamma[i - 1] - (gamma * (l[i - 1])) + (gammac * s[i - 1]) + return sqeuclidean(l + s[:-(m - 1)], y) + + +def _holt_win_add_mul_dam(x, xi, p, y, l, b, s, m, n, max_seen): + """ + Additive and Additive Damped with Multiplicative Seasonal + Minimization Function + (A,M) & (Ad,M) + """ + alpha, beta, gamma, phi, alphac, betac, gammac, y_alpha, y_gamma = _holt_win_init( + x, xi, p, y, l, b, s, m) + if alpha * beta == 0.0: + return max_seen + if beta > alpha or gamma > 1 - alpha: + return max_seen + for i in range(1, n): + l[i] = (y_alpha[i - 1] / s[i - 1]) + \ + (alphac * (l[i - 1] + phi * b[i - 1])) + b[i] = (beta * (l[i] - l[i - 1])) + (betac * phi * b[i - 1]) + s[i + m - 1] = (y_gamma[i - 1] / (l[i - 1] + phi * + b[i - 1])) + (gammac * s[i - 1]) + return sqeuclidean((l + phi * b) * s[:-(m - 1)], y) + + +def _holt_win_mul_mul_dam(x, xi, p, y, l, b, s, m, n, max_seen): + """ + Multiplicative and Multiplicative Damped with Multiplicative Seasonal + Minimization Function + (M,M) & (Md,M) + """ + alpha, beta, gamma, phi, alphac, betac, gammac, y_alpha, y_gamma = _holt_win_init( + x, xi, p, y, l, b, s, m) + if alpha * beta == 0.0: + return max_seen + if beta > alpha or gamma > 1 - alpha: + return max_seen + for i in range(1, n): + l[i] = (y_alpha[i - 1] / s[i - 1]) + \ + (alphac * (l[i - 1] * b[i - 1]**phi)) + b[i] = (beta * (l[i] / l[i - 1])) + (betac * b[i - 1]**phi) + s[i + m - 1] = (y_gamma[i - 1] / (l[i - 1] * + b[i - 1]**phi)) + (gammac * s[i - 1]) + return sqeuclidean((l * b**phi) * s[:-(m - 1)], y) + + +def _holt_win_add_add_dam(x, xi, p, y, l, b, s, m, n, max_seen): + """ + Additive and Additive Damped with Additive Seasonal + Minimization Function + (A,A) & (Ad,A) + """ + alpha, beta, gamma, phi, alphac, betac, gammac, y_alpha, y_gamma = _holt_win_init( + x, xi, p, y, l, b, s, m) + if alpha * beta == 0.0: + return max_seen + if beta > alpha or gamma > 1 - alpha: + return max_seen + for i in range(1, n): + l[i] = (y_alpha[i - 1]) - (alpha * s[i - 1]) + \ + (alphac * (l[i - 1] + phi * b[i - 1])) + b[i] = (beta * (l[i] - l[i - 1])) + (betac * phi * b[i - 1]) + s[i + m - 1] = y_gamma[i - 1] - (gamma * (l[i - 1] + phi * b[i - 1])) + (gammac * s[i - 1]) + return sqeuclidean((l + phi * b) + s[:-(m - 1)], y) + + +def _holt_win_mul_add_dam(x, xi, p, y, l, b, s, m, n, max_seen): + """ + Multiplicative and Multiplicative Damped with Additive Seasonal + Minimization Function + (M,A) & (M,Ad) + """ + alpha, beta, gamma, phi, alphac, betac, gammac, y_alpha, y_gamma = _holt_win_init( + x, xi, p, y, l, b, s, m) + if alpha * beta == 0.0: + return max_seen + if beta > alpha or gamma > 1 - alpha: + return max_seen + for i in range(1, n): + l[i] = (y_alpha[i - 1]) - (alpha * s[i - 1]) + \ + (alphac * (l[i - 1] * b[i - 1]**phi)) + b[i] = (beta * (l[i] / l[i - 1])) + (betac * b[i - 1]**phi) + s[i + m - 1] = y_gamma[i - 1] - \ + (gamma * (l[i - 1] * b[i - 1]**phi)) + (gammac * s[i - 1]) + return sqeuclidean((l * phi * b) + s[:-(m - 1)], y) + + +SMOOTHERS = {('mul', 'add'): smoothers._holt_win_add_mul_dam, + ('mul', 'mul'): smoothers._holt_win_mul_mul_dam, + ('mul', None): smoothers._holt_win__mul, + ('add', 'add'): smoothers._holt_win_add_add_dam, + ('add', 'mul'): smoothers._holt_win_mul_add_dam, + ('add', None): smoothers._holt_win__add, + (None, 'add'): smoothers._holt_add_dam, + (None, 'mul'): smoothers._holt_mul_dam, + (None, None): smoothers._holt__} + +PY_SMOOTHERS = {('mul', 'add'): _holt_win_add_mul_dam, + ('mul', 'mul'): _holt_win_mul_mul_dam, + ('mul', None): _holt_win__mul, + ('add', 'add'): _holt_win_add_add_dam, + ('add', 'mul'): _holt_win_mul_add_dam, + ('add', None): _holt_win__add, + (None, 'add'): _holt_add_dam, + (None, 'mul'): _holt_mul_dam, + (None, None): _holt__} + + +class HoltWintersResults(Results): + """ + Holt Winter's Exponential Smoothing Results + + Parameters + ---------- + model : ExponentialSmoothing instance + The fitted model instance + params : dict + All the parameters for the Exponential Smoothing model. + + Attributes + ---------- + params: dict + All the parameters for the Exponential Smoothing model. + params_formatted: pd.DataFrame + DataFrame containing all parameters, their short names and a flag + indicating whether the parameter's value was optimized to fit the data. + fittedfcast: array + An array of both the fitted values and forecast values. + fittedvalues: array + An array of the fitted values. Fitted by the Exponential Smoothing + model. + fcastvalues: array + An array of the forecast values forecast by the Exponential Smoothing + model. + sse: float + The sum of squared errors + level: array + An array of the levels values that make up the fitted values. + slope: array + An array of the slope values that make up the fitted values. + season: array + An array of the seasonal values that make up the fitted values. + aic: float + The Akaike information criterion. + bic: float + The Bayesian information criterion. + aicc: float + AIC with a correction for finite sample sizes. + resid: array + An array of the residuals of the fittedvalues and actual values. + k: int + the k parameter used to remove the bias in AIC, BIC etc. + optimized: bool + Flag indicating whether the model parameters were optimized to fit + the data. + mle_retvals: {None, scipy.optimize.optimize.OptimizeResult} + Optimization results if the parameters were optimized to fit the data. + """ + + def __init__(self, model, params, **kwargs): + self.data = model.data + super(HoltWintersResults, self).__init__(model, params, **kwargs) + + def predict(self, start=None, end=None): + """ + In-sample prediction and out-of-sample forecasting + + Parameters + ---------- + start : int, str, or datetime, optional + Zero-indexed observation number at which to start forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. Default is the the zeroth observation. + end : int, str, or datetime, optional + Zero-indexed observation number at which to end forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. However, if the dates index does not + have a fixed frequency, end must be an integer index if you + want out of sample prediction. Default is the last observation in + the sample. + + Returns + ------- + forecast : array + Array of out of sample forecasts. + """ + return self.model.predict(self.params, start, end) + + def forecast(self, steps=1): + """ + Out-of-sample forecasts + + Parameters + ---------- + steps : int + The number of out of sample forecasts from the end of the + sample. + + Returns + ------- + forecast : array + Array of out of sample forecasts + """ + try: + freq = getattr(self.model._index, 'freq', 1) + start = self.model._index[-1] + freq + end = self.model._index[-1] + steps * freq + return self.model.predict(self.params, start=start, end=end) + except (AttributeError, ValueError): + # May occur when the index doesn't have a freq + return self.model._predict(h=steps, **self.params).fcastvalues + + def summary(self): + """ + Summarize the fitted Model + + Returns + ------- + smry : Summary instance + This holds the summary table and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary.Summary + """ + from statsmodels.iolib.summary import Summary + from statsmodels.iolib.table import SimpleTable + model = self.model + title = model.__class__.__name__ + ' Model Results' + + dep_variable = 'endog' + if isinstance(self.model.endog, pd.DataFrame): + dep_variable = self.model.endog.columns[0] + elif isinstance(self.model.endog, pd.Series): + dep_variable = self.model.endog.name + seasonal_periods = None if self.model.seasonal is None else self.model.seasonal_periods + lookup = {'add': 'Additive', 'additive': 'Additive', + 'mul': 'Multiplicative', 'multiplicative': 'Multiplicative', None: 'None'} + transform = self.params['use_boxcox'] + box_cox_transform = True if transform else False + box_cox_coeff = transform if isinstance(transform, string_types) else self.params['lamda'] + if isinstance(box_cox_coeff, float): + box_cox_coeff = '{:>10.5f}'.format(box_cox_coeff) + top_left = [('Dep. Variable:', [dep_variable]), + ('Model:', [model.__class__.__name__]), + ('Optimized:', [str(np.any(self.optimized))]), + ('Trend:', [lookup[self.model.trend]]), + ('Seasonal:', [lookup[self.model.seasonal]]), + ('Seasonal Periods:', [str(seasonal_periods)]), + ('Box-Cox:', [str(box_cox_transform)]), + ('Box-Cox Coeff.:', [str(box_cox_coeff)])] + + top_right = [ + ('No. Observations:', [str(len(self.model.endog))]), + ('SSE', ['{:5.3f}'.format(self.sse)]), + ('AIC', ['{:5.3f}'.format(self.aic)]), + ('BIC', ['{:5.3f}'.format(self.bic)]), + ('AICC', ['{:5.3f}'.format(self.aicc)]), + ('Date:', None), + ('Time:', None)] + + smry = Summary() + smry.add_table_2cols(self, gleft=top_left, gright=top_right, + title=title) + formatted = self.params_formatted # type: pd.DataFrame + + def _fmt(x): + abs_x = np.abs(x) + scale = 1 + if abs_x != 0: + scale = int(np.log10(abs_x)) + if scale > 4 or scale < -3: + return '{:>20.5g}'.format(x) + dec = min(7 - scale, 7) + fmt = '{{:>20.{0}f}}'.format(dec) + return fmt.format(x) + + tab = [] + for _, vals in formatted.iterrows(): + tab.append([_fmt(vals.iloc[1]), + '{0:>20}'.format(vals.iloc[0]), + '{0:>20}'.format(str(bool(vals.iloc[2])))]) + params_table = SimpleTable(tab, headers=['coeff', 'code', 'optimized'], + title="", + stubs=list(formatted.index)) + + smry.tables.append(params_table) + + return smry + + +class HoltWintersResultsWrapper(ResultsWrapper): + _attrs = {'fittedvalues': 'rows', + 'level': 'rows', + 'resid': 'rows', + 'season': 'rows', + 'slope': 'rows'} + _wrap_attrs = union_dicts(ResultsWrapper._wrap_attrs, _attrs) + _methods = {'predict': 'dates', + 'forecast': 'dates'} + _wrap_methods = union_dicts(ResultsWrapper._wrap_methods, _methods) + + +populate_wrapper(HoltWintersResultsWrapper, HoltWintersResults) + + +class ExponentialSmoothing(TimeSeriesModel): + """ + Holt Winter's Exponential Smoothing + + Parameters + ---------- + endog : array-like + Time series + trend : {"add", "mul", "additive", "multiplicative", None}, optional + Type of trend component. + damped : bool, optional + Should the trend component be damped. + seasonal : {"add", "mul", "additive", "multiplicative", None}, optional + Type of seasonal component. + seasonal_periods : int, optional + The number of periods in a complete seasonal cycle, e.g., 4 for + quarterly data or 7 for daily data with a weekly cycle. + + Returns + ------- + results : ExponentialSmoothing class + + Notes + ----- + This is a full implementation of the holt winters exponential smoothing as + per [1]_. This includes all the unstable methods as well as the stable + methods. The implementation of the library covers the functionality of the + R library as much as possible whilst still being Pythonic. + + References + ---------- + .. [1] Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles + and practice. OTexts, 2014. + """ + + def __init__(self, endog, trend=None, damped=False, seasonal=None, + seasonal_periods=None, dates=None, freq=None, missing='none'): + super(ExponentialSmoothing, self).__init__(endog, None, dates, + freq, missing=missing) + self.endog = self.endog.astype(np.double) + if trend in ['additive', 'multiplicative']: + trend = {'additive': 'add', 'multiplicative': 'mul'}[trend] + self.trend = trend + self.damped = damped + if seasonal in ['additive', 'multiplicative']: + seasonal = {'additive': 'add', 'multiplicative': 'mul'}[seasonal] + self.seasonal = seasonal + self.trending = trend in ['mul', 'add'] + self.seasoning = seasonal in ['mul', 'add'] + if (self.trend == 'mul' or self.seasonal == 'mul') and np.any(endog <= 0.0): + raise ValueError('endog must be strictly positive when using multiplicative ' + 'trend or seasonal components.') + if self.damped and not self.trending: + raise ValueError('Can only dampen the trend component') + if self.seasoning: + self.seasonal_periods = seasonal_periods + if seasonal_periods is None: + self.seasonal_periods = freq_to_period(self._index_freq) + if self.seasonal_periods <= 1: + raise ValueError('seasonal_periods must be larger than 1.') + else: + self.seasonal_periods = 0 + self.nobs = len(self.endog) + + def predict(self, params, start=None, end=None): + """ + Returns in-sample and out-of-sample prediction. + + Parameters + ---------- + params : array + The fitted model parameters. + start : int, str, or datetime + Zero-indexed observation number at which to start forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. + end : int, str, or datetime + Zero-indexed observation number at which to end forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. + + Returns + ------- + predicted values : array + """ + if start is None: + freq = getattr(self._index, 'freq', 1) + start = self._index[-1] + freq + start, end, out_of_sample, prediction_index = self._get_prediction_index( + start=start, end=end) + if out_of_sample > 0: + res = self._predict(h=out_of_sample, **params) + else: + res = self._predict(h=0, **params) + return res.fittedfcast[start:end + out_of_sample + 1] + + def fit(self, smoothing_level=None, smoothing_slope=None, smoothing_seasonal=None, + damping_slope=None, optimized=True, use_boxcox=False, remove_bias=False, + use_basinhopping=False, start_params=None, initial_level=None, initial_slope=None, + use_brute=True): + """ + Fit the model + + Parameters + ---------- + smoothing_level : float, optional + The alpha value of the simple exponential smoothing, if the value + is set then this value will be used as the value. + smoothing_slope : float, optional + The beta value of the Holt's trend method, if the value is + set then this value will be used as the value. + smoothing_seasonal : float, optional + The gamma value of the holt winters seasonal method, if the value + is set then this value will be used as the value. + damping_slope : float, optional + The phi value of the damped method, if the value is + set then this value will be used as the value. + optimized : bool, optional + Estimate model parameters by maximizing the log-likelihood + use_boxcox : {True, False, 'log', float}, optional + Should the Box-Cox transform be applied to the data first? If 'log' + then apply the log. If float then use lambda equal to float. + remove_bias : bool, optional + Remove bias from forecast values and fitted values by enforcing + that the average residual is equal to zero. + use_basinhopping : bool, optional + Using Basin Hopping optimizer to find optimal values + start_params: array, optional + Starting values to used when optimizing the fit. If not provided, + starting values are determined using a combination of grid search + and reasonable values based on the initial values of the data + initial_level: float, optional + Value to use when initializing the fitted level. + initial_slope: float, optional + Value to use when initializing the fitted slope. + use_brute: bool, optional + Search for good starting values using a brute force (grid) + optimizer. If False, a naive set of starting values is used. + + Returns + ------- + results : HoltWintersResults class + See statsmodels.tsa.holtwinters.HoltWintersResults + + Notes + ----- + This is a full implementation of the holt winters exponential smoothing + as per [1]. This includes all the unstable methods as well as the + stable methods. The implementation of the library covers the + functionality of the R library as much as possible whilst still + being Pythonic. + + References + ---------- + [1] Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles + and practice. OTexts, 2014. + """ + # Variable renames to alpha,beta, etc as this helps with following the + # mathematical notation in general + alpha = float(smoothing_level) if smoothing_level is not None else None + beta = float(smoothing_slope) if smoothing_slope is not None else None + gamma = float(smoothing_seasonal) if smoothing_seasonal is not None else None + phi = float(damping_slope) if damping_slope is not None else None + self._l0 = float(initial_level) if initial_level is not None else None + self._b0 = float(initial_slope) if initial_slope is not None else None + + data = self.endog + damped = self.damped + seasoning = self.seasoning + trending = self.trending + trend = self.trend + seasonal = self.seasonal + m = self.seasonal_periods + opt = None + phi = phi if damped else 1.0 + if use_boxcox == 'log': + lamda = 0.0 + y = boxcox(data, lamda) + elif isinstance(use_boxcox, float): + lamda = use_boxcox + y = boxcox(data, lamda) + elif use_boxcox: + y, lamda = boxcox(data) + else: + lamda = None + y = data.squeeze() + if np.ndim(y) != 1: + raise ValueError('Only 1 dimensional data supported') + self._y = y = np.ascontiguousarray(y, dtype=np.double) + lvls = np.zeros(self.nobs) + b = np.zeros(self.nobs) + s = np.zeros(self.nobs + m - 1) + p = np.zeros(6 + m) + max_seen = np.finfo(np.double).max + l0, b0, s0 = self.initial_values() + + xi = np.zeros_like(p, dtype=np.bool) + if optimized: + init_alpha = alpha if alpha is not None else 0.5 / max(m, 1) + init_beta = beta if beta is not None else 0.1 * init_alpha if trending else beta + init_gamma = None + init_phi = phi if phi is not None else 0.99 + # Selection of functions to optimize for appropriate parameters + if seasoning: + init_gamma = gamma if gamma is not None else 0.05 * \ + (1 - init_alpha) + xi = np.array([alpha is None, trending and beta is None, gamma is None, + initial_level is None, trending and initial_slope is None, + phi is None and damped] + [True] * m) + func = SMOOTHERS[(seasonal, trend)] + elif trending: + xi = np.array([alpha is None, beta is None, False, + initial_level is None, initial_slope is None, + phi is None and damped] + [False] * m) + func = SMOOTHERS[(None, trend)] + else: + xi = np.array([alpha is None, False, False, + initial_level is None, False, False] + [False] * m) + func = SMOOTHERS[(None, None)] + p[:] = [init_alpha, init_beta, init_gamma, l0, b0, init_phi] + s0 + if np.any(xi): + # txi [alpha, beta, gamma, l0, b0, phi, s0,..,s_(m-1)] + # Have a quick look in the region for a good starting place for alpha etc. + # using guesstimates for the levels + txi = xi & np.array([True, True, True, False, False, True] + [False] * m) + txi = txi.astype(np.bool) + bounds = np.array([(0.0, 1.0), (0.0, 1.0), (0.0, 1.0), + (0.0, None), (0.0, None), (0.0, 1.0)] + [(None, None), ] * m) + args = (txi.astype(np.uint8), p, y, lvls, b, s, m, self.nobs, max_seen) + if start_params is None and np.any(txi) and use_brute: + res = brute(func, bounds[txi], args, Ns=20, full_output=True, finish=None) + p[txi], max_seen, _, _ = res + else: + if start_params is not None: + start_params = np.atleast_1d(np.squeeze(start_params)) + if len(start_params) != xi.sum(): + raise ValueError('start_params must have {0} values but ' + 'has {1} instead'.format(len(xi), len(start_params))) + p[xi] = start_params + args = (xi.astype(np.uint8), p, y, lvls, b, s, m, self.nobs, max_seen) + max_seen = func(np.ascontiguousarray(p[xi]), *args) + # alpha, beta, gamma, l0, b0, phi = p[:6] + # s0 = p[6:] + # bounds = np.array([(0.0,1.0),(0.0,1.0),(0.0,1.0),(0.0,None), + # (0.0,None),(0.8,1.0)] + [(None,None),]*m) + args = (xi.astype(np.uint8), p, y, lvls, b, s, m, self.nobs, max_seen) + if use_basinhopping: + # Take a deeper look in the local minimum we are in to find the best + # solution to parameters, maybe hop around to try escape the local + # minimum we may be in. + res = basinhopping(func, p[xi], + minimizer_kwargs={'args': args, 'bounds': bounds[xi]}, + stepsize=0.01) + success = res.lowest_optimization_result.success + else: + # Take a deeper look in the local minimum we are in to find the best + # solution to parameters + res = minimize(func, p[xi], args=args, bounds=bounds[xi]) + success = res.success + + if not success: + from warnings import warn + from statsmodels.tools.sm_exceptions import ConvergenceWarning + warn("Optimization failed to converge. Check mle_retvals.", + ConvergenceWarning) + p[xi] = res.x + opt = res + else: + from warnings import warn + from statsmodels.tools.sm_exceptions import EstimationWarning + message = "Model has no free parameters to estimate. Set " \ + "optimized=False to suppress this warning" + warn(message, EstimationWarning) + + [alpha, beta, gamma, l0, b0, phi] = p[:6] + s0 = p[6:] + + hwfit = self._predict(h=0, smoothing_level=alpha, smoothing_slope=beta, + smoothing_seasonal=gamma, damping_slope=phi, + initial_level=l0, initial_slope=b0, initial_seasons=s0, + use_boxcox=use_boxcox, remove_bias=remove_bias, is_optimized=xi) + hwfit._results.mle_retvals = opt + return hwfit + + def initial_values(self): + """ + Compute initial values used in the exponential smoothing recursions + + Returns + ------- + initial_level : float + The initial value used for the level component + initial_slope : {float, None} + The initial value used for the trend component + initial_seasons : list + The initial values used for the seasonal components + + Notes + ----- + Convenience function the exposes the values used to initialize the + recursions. When optimizing parameters these are used as starting + values. + + Method used to compute the initial value depends on when components + are included in the model. In a simple exponential smoothing model + without trend or a seasonal components, the initial value is set to the + first observation. When a trend is added, the trend is initialized + either using y[1]/y[0], if multiplicative, or y[1]-y[0]. When the + seasonal component is added the initialization adapts to account for + the modified structure. + """ + y = self._y + trend = self.trend + seasonal = self.seasonal + seasoning = self.seasoning + trending = self.trending + m = self.seasonal_periods + l0 = self._l0 + b0 = self._b0 + if seasoning: + l0 = y[np.arange(self.nobs) % m == 0].mean() if l0 is None else l0 + if b0 is None and trending: + lead, lag = y[m:m + m], y[:m] + if trend == 'mul': + b0 = np.exp((np.log(lead.mean()) - np.log(lag.mean())) / m) + else: + b0 = ((lead - lag) / m).mean() + s0 = list(y[:m] / l0) if seasonal == 'mul' else list(y[:m] - l0) + elif trending: + l0 = y[0] if l0 is None else l0 + if b0 is None: + b0 = y[1] / y[0] if trend == 'mul' else y[1] - y[0] + s0 = [] + else: + if l0 is None: + l0 = y[0] + b0 = None + s0 = [] + + return l0, b0, s0 + + def _predict(self, h=None, smoothing_level=None, smoothing_slope=None, + smoothing_seasonal=None, initial_level=None, initial_slope=None, + damping_slope=None, initial_seasons=None, use_boxcox=None, lamda=None, + remove_bias=None, is_optimized=None): + """ + Helper prediction function + + Parameters + ---------- + h : int, optional + The number of time steps to forecast ahead. + """ + # Variable renames to alpha, beta, etc as this helps with following the + # mathematical notation in general + alpha = smoothing_level + beta = smoothing_slope + gamma = smoothing_seasonal + phi = damping_slope + + # Start in sample and out of sample predictions + data = self.endog + damped = self.damped + seasoning = self.seasoning + trending = self.trending + trend = self.trend + seasonal = self.seasonal + m = self.seasonal_periods + phi = phi if damped else 1.0 + if use_boxcox == 'log': + lamda = 0.0 + y = boxcox(data, 0.0) + elif isinstance(use_boxcox, float): + lamda = use_boxcox + y = boxcox(data, lamda) + elif use_boxcox: + y, lamda = boxcox(data) + else: + lamda = None + y = data.squeeze() + if np.ndim(y) != 1: + raise NotImplementedError('Only 1 dimensional data supported') + y_alpha = np.zeros((self.nobs,)) + y_gamma = np.zeros((self.nobs,)) + alphac = 1 - alpha + y_alpha[:] = alpha * y + if trending: + betac = 1 - beta + if seasoning: + gammac = 1 - gamma + y_gamma[:] = gamma * y + lvls = np.zeros((self.nobs + h + 1,)) + b = np.zeros((self.nobs + h + 1,)) + s = np.zeros((self.nobs + h + m + 1,)) + lvls[0] = initial_level + b[0] = initial_slope + s[:m] = initial_seasons + phi_h = np.cumsum(np.repeat(phi, h + 1)**np.arange(1, h + 1 + 1) + ) if damped else np.arange(1, h + 1 + 1) + trended = {'mul': np.multiply, + 'add': np.add, + None: lambda l, b: l + }[trend] + detrend = {'mul': np.divide, + 'add': np.subtract, + None: lambda l, b: 0 + }[trend] + dampen = {'mul': np.power, + 'add': np.multiply, + None: lambda b, phi: 0 + }[trend] + nobs = self.nobs + if seasonal == 'mul': + for i in range(1, nobs + 1): + lvls[i] = y_alpha[i - 1] / s[i - 1] + \ + (alphac * trended(lvls[i - 1], dampen(b[i - 1], phi))) + if trending: + b[i] = (beta * detrend(lvls[i], lvls[i - 1])) + \ + (betac * dampen(b[i - 1], phi)) + s[i + m - 1] = y_gamma[i - 1] / trended(lvls[i - 1], dampen(b[i - 1], phi)) + \ + (gammac * s[i - 1]) + slope = b[1:nobs + 1].copy() + season = s[m:nobs + m].copy() + lvls[nobs:] = lvls[nobs] + if trending: + b[:nobs] = dampen(b[:nobs], phi) + b[nobs:] = dampen(b[nobs], phi_h) + trend = trended(lvls, b) + s[nobs + m - 1:] = [s[(nobs - 1) + j % m] for j in range(h + 1 + 1)] + fitted = trend * s[:-m] + elif seasonal == 'add': + for i in range(1, nobs + 1): + lvls[i] = y_alpha[i - 1] - (alpha * s[i - 1]) + \ + (alphac * trended(lvls[i - 1], dampen(b[i - 1], phi))) + if trending: + b[i] = (beta * detrend(lvls[i], lvls[i - 1])) + \ + (betac * dampen(b[i - 1], phi)) + s[i + m - 1] = y_gamma[i - 1] - \ + (gamma * trended(lvls[i - 1], dampen(b[i - 1], phi))) + \ + (gammac * s[i - 1]) + slope = b[1:nobs + 1].copy() + season = s[m:nobs + m].copy() + lvls[nobs:] = lvls[nobs] + if trending: + b[:nobs] = dampen(b[:nobs], phi) + b[nobs:] = dampen(b[nobs], phi_h) + trend = trended(lvls, b) + s[nobs + m - 1:] = [s[(nobs - 1) + j % m] for j in range(h + 1 + 1)] + fitted = trend + s[:-m] + else: + for i in range(1, nobs + 1): + lvls[i] = y_alpha[i - 1] + \ + (alphac * trended(lvls[i - 1], dampen(b[i - 1], phi))) + if trending: + b[i] = (beta * detrend(lvls[i], lvls[i - 1])) + \ + (betac * dampen(b[i - 1], phi)) + slope = b[1:nobs + 1].copy() + season = s[m:nobs + m].copy() + lvls[nobs:] = lvls[nobs] + if trending: + b[:nobs] = dampen(b[:nobs], phi) + b[nobs:] = dampen(b[nobs], phi_h) + trend = trended(lvls, b) + fitted = trend + level = lvls[1:nobs + 1].copy() + if use_boxcox or use_boxcox == 'log' or isinstance(use_boxcox, float): + fitted = inv_boxcox(fitted, lamda) + level = inv_boxcox(level, lamda) + slope = detrend(trend[:nobs], level) + if seasonal == 'add': + season = (fitted - inv_boxcox(trend, lamda))[:nobs] + else: # seasonal == 'mul': + season = (fitted / inv_boxcox(trend, lamda))[:nobs] + sse = sqeuclidean(fitted[:-h - 1], data) + # (s0 + gamma) + (b0 + beta) + (l0 + alpha) + phi + k = m * seasoning + 2 * trending + 2 + 1 * damped + aic = self.nobs * np.log(sse / self.nobs) + k * 2 + if self.nobs - k - 3 > 0: + aicc_penalty = (2 * (k + 2) * (k + 3)) / (self.nobs - k - 3) + else: + aicc_penalty = np.inf + aicc = aic + aicc_penalty + bic = self.nobs * np.log(sse / self.nobs) + k * np.log(self.nobs) + resid = data - fitted[:-h - 1] + if remove_bias: + fitted += resid.mean() + self.params = {'smoothing_level': alpha, + 'smoothing_slope': beta, + 'smoothing_seasonal': gamma, + 'damping_slope': phi if damped else np.nan, + 'initial_level': lvls[0], + 'initial_slope': b[0] / phi, + 'initial_seasons': s[:m], + 'use_boxcox': use_boxcox, + 'lamda': lamda, + 'remove_bias': remove_bias} + + # Format parameters into a DataFrame + codes = ['alpha', 'beta', 'gamma', 'l.0', 'b.0', 'phi'] + codes += ['s.{0}'.format(i) for i in range(m)] + idx = ['smoothing_level', 'smoothing_slope', 'smoothing_seasonal', + 'initial_level', 'initial_slope', 'damping_slope'] + idx += ['initial_seasons.{0}'.format(i) for i in range(m)] + + formatted = [alpha, beta, gamma, lvls[0], b[0], phi] + formatted += s[:m].tolist() + formatted = list(map(lambda v: np.nan if v is None else v, formatted)) + formatted = np.array(formatted) + if is_optimized is None: + optimized = np.zeros(len(codes), dtype=np.bool) + else: + optimized = is_optimized.astype(np.bool) + included = [True, trending, seasoning, True, trending, damped] + included += [True] * m + formatted = pd.DataFrame([[c, f, o] for c, f, o in zip(codes, formatted, optimized)], + columns=['name', 'param', 'optimized'], + index=idx) + formatted = formatted.loc[included] + + hwfit = HoltWintersResults(self, self.params, fittedfcast=fitted, + fittedvalues=fitted[:-h - 1], fcastvalues=fitted[-h - 1:], + sse=sse, level=level, slope=slope, season=season, aic=aic, + bic=bic, aicc=aicc, resid=resid, k=k, + params_formatted=formatted, optimized=optimized) + return HoltWintersResultsWrapper(hwfit) + + +class SimpleExpSmoothing(ExponentialSmoothing): + """ + Simple Exponential Smoothing + + Parameters + ---------- + endog : array-like + Time series + + Returns + ------- + results : SimpleExpSmoothing class + + Notes + ----- + This is a full implementation of the simple exponential smoothing as + per [1]_. `SimpleExpSmoothing` is a restricted version of + :class:`ExponentialSmoothing`. + + See Also + -------- + ExponentialSmoothing + Holt + + References + ---------- + .. [1] Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles + and practice. OTexts, 2014. + """ + + def __init__(self, endog): + super(SimpleExpSmoothing, self).__init__(endog) + + def fit(self, smoothing_level=None, optimized=True, start_params=None, + initial_level=None, use_brute=True): + """ + Fit the model + + Parameters + ---------- + smoothing_level : float, optional + The smoothing_level value of the simple exponential smoothing, if + the value is set then this value will be used as the value. + optimized : bool, optional + Estimate model parameters by maximizing the log-likelihood + start_params: array, optional + Starting values to used when optimizing the fit. If not provided, + starting values are determined using a combination of grid search + and reasonable values based on the initial values of the data + initial_level: float, optional + Value to use when initializing the fitted level. + use_brute: bool, optional + Search for good starting values using a brute force (grid) + optimizer. If False, a naive set of starting values is used. + + Returns + ------- + results : HoltWintersResults class + See statsmodels.tsa.holtwinters.HoltWintersResults + + Notes + ----- + This is a full implementation of the simple exponential smoothing as + per [1]. + + References + ---------- + [1] Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles + and practice. OTexts, 2014. + """ + return super(SimpleExpSmoothing, self).fit(smoothing_level=smoothing_level, + optimized=optimized, start_params=start_params, + initial_level=initial_level, + use_brute=use_brute) + + +class Holt(ExponentialSmoothing): + """ + Holt's Exponential Smoothing + + Parameters + ---------- + endog : array-like + Time series + exponential : bool, optional + Type of trend component. + damped : bool, optional + Should the trend component be damped. + + Returns + ------- + results : Holt class + + Notes + ----- + This is a full implementation of the Holt's exponential smoothing as + per [1]_. `Holt` is a restricted version of :class:`ExponentialSmoothing`. + + See Also + -------- + ExponentialSmoothing + SimpleExpSmoothing + + References + ---------- + .. [1] Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles + and practice. OTexts, 2014. + """ + + def __init__(self, endog, exponential=False, damped=False): + trend = 'mul' if exponential else 'add' + super(Holt, self).__init__(endog, trend=trend, damped=damped) + + def fit(self, smoothing_level=None, smoothing_slope=None, damping_slope=None, + optimized=True, start_params=None, initial_level=None, + initial_slope=None, use_brute=True): + """ + Fit the model + + Parameters + ---------- + smoothing_level : float, optional + The alpha value of the simple exponential smoothing, if the value + is set then this value will be used as the value. + smoothing_slope : float, optional + The beta value of the Holt's trend method, if the value is + set then this value will be used as the value. + damping_slope : float, optional + The phi value of the damped method, if the value is + set then this value will be used as the value. + optimized : bool, optional + Estimate model parameters by maximizing the log-likelihood + start_params: array, optional + Starting values to used when optimizing the fit. If not provided, + starting values are determined using a combination of grid search + and reasonable values based on the initial values of the data + initial_level: float, optional + Value to use when initializing the fitted level. + initial_slope: float, optional + Value to use when initializing the fitted slope. + use_brute: bool, optional + Search for good starting values using a brute force (grid) + optimizer. If False, a naive set of starting values is used. + + Returns + ------- + results : HoltWintersResults class + See statsmodels.tsa.holtwinters.HoltWintersResults + + Notes + ----- + This is a full implementation of the Holt's exponential smoothing as + per [1]. + + References + ---------- + [1] Hyndman, Rob J., and George Athanasopoulos. Forecasting: principles + and practice. OTexts, 2014. + """ + return super(Holt, self).fit(smoothing_level=smoothing_level, + smoothing_slope=smoothing_slope, damping_slope=damping_slope, + optimized=optimized, start_params=start_params, + initial_level=initial_level, initial_slope=initial_slope, use_brute=use_brute) diff --git a/statsmodels/tsa/innovations/__init__.py b/statsmodels/tsa/innovations/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/tsa/innovations/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/tsa/innovations/_arma_innovations.pyx.in b/statsmodels/tsa/innovations/_arma_innovations.pyx.in new file mode 100644 index 0000000..1b9b3b5 --- /dev/null +++ b/statsmodels/tsa/innovations/_arma_innovations.pyx.in @@ -0,0 +1,494 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +Innovations algorithm + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("cnp.float32_t", "np.float32", "cnp.NPY_FLOAT32"), + "d": ("cnp.float64_t", "float", "cnp.NPY_FLOAT64"), + "c": ("cnp.complex64_t", "np.complex64", "cnp.NPY_COMPLEX64"), + "z": ("cnp.complex128_t", "complex", "cnp.NPY_COMPLEX128"), +} + +}} + +# Typical imports +import numpy as np +import warnings +from statsmodels.tsa import arima_process +from statsmodels.src.math cimport NPY_PI, dlog, zlog +cimport numpy as cnp +cimport cython + +cnp.import_array() + +cdef int C = 0 + + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +}} + + +cdef {{prefix}}toeplitz(int n, int offset0, int offset1, + {{cython_type}} [:] in_column, + {{cython_type}} [:, :] out_matrix): + """ + toeplitz(int n, int o0, int o1, {{cython_type}} [:] in_column, {{cython_type}} [:, :] out_matrix + + Construct a Toeplitz block in a matrix in place + + Parameters + ---------- + n : int + The number of entries of `in_column` to use. + offset0 : int + The row offset for `out_matrix` at which to begin writing the Toeplitz + block. + offset1 : int + The column offset for `out_matrix` at which to begin writing the + Toeplitz block. + in_column : ndarray + The column used to construct the Toeplitz block. + out_matrix : ndarray + The matrix in which to write a Toeplitz block + + Notes + ----- + This function constructs the Toeplitz block in-place and does not return + any output. + + """ + cdef Py_ssize_t i, j + + for i in range(n): + for j in range(i + 1): + out_matrix[offset0 + i, offset1 + j] = in_column[i - j] + if i != j: + # Note: scipy by default does complex conjugate, but not + # necessary here since we're only dealing with covariances, + # which will be real (except in the case of complex-step + # differentiation, but in that case we do not want to apply + # the conjugation anyway) + out_matrix[offset0 + j, offset1 + i] = in_column[i - j] + + +cpdef {{prefix}}arma_transformed_acovf_fast({{cython_type}} [:] ar, + {{cython_type}} [:] ma, + {{cython_type}} [:] arma_acovf): + """ + arma_transformed_acovf_fast({{cython_type}} [:] ar, {{cython_type}} [:] ma, {{cython_type}} [:] arma_acovf) + + Quickly construct the autocovariance matrix for a transformed process. + + Using the autocovariance function for an ARMA process, constructs the + autocovariances associated with the transformed process described + in equation (3.3.1) of _[1] in a memory efficient, and so fast, way. + + Parameters + ---------- + ar : ndarray + Autoregressive coefficients, including the zero lag, where the sign + convention assumes the coefficients are part of the lag polynomial on + the left-hand-side of the ARMA definition (i.e. they have the opposite + sign from the usual econometrics convention in which the coefficients + are on the right-hand-side of the ARMA definition). + ma : ndarray + Moving average coefficients, including the zero lag, where the sign + convention assumes the coefficients are part of the lag polynomial on + the right-hand-side of the ARMA definition (i.e. they have the same + sign from the usual econometrics convention in which the coefficients + are on the right-hand-side of the ARMA definition). + arma_acovf : ndarray + The vector of autocovariances of the ARMA process. + + Returns + ------- + acovf : ndarray + A matrix containing the autocovariances of the portion of the + transformed process with time-varying autocovariances. Its dimension + is equal to `min(m * 2, n)` where `m = max(len(ar) - 1, len(ma) - 1)` + and `n` is the length of the input array `arma_acovf`. It is important + to note that only the values in the first `m` columns or `m` rows are + valid. In particular, the entries in the block `acovf[m:, m:]` should + not be used in any case (and in fact will always be equal to zeros). + acovf2 : ndarray + An array containing the autocovariance function of the portion of the + transformed process with time-invariant autocovariances. Its dimension + is equal to `max(n - m, 0)` where `n` is the length of the input + array `arma_acovf`. + + Notes + ----- + The definition of this autocovariance matrix is from _[1] equation 3.3.3. + + This function assumes that the variance of the ARMA innovation term is + equal to one. If this is not true, then the calling program should replace + `arma_acovf` with `arma_acovf / sigma2`, where sigma2 is that variance. + + This function is relatively fast even when `arma_acovf` is large, since + it only constructs the full autocovariance matrix for a generally small + subset of observations. The trade-off is that the output of this function + is somewhat more difficult to use. + + References + ---------- + .. [1] Brockwell, Peter J., and Richard A. Davis. 2009. + Time Series: Theory and Methods. 2nd ed. 1991. + New York, NY: Springer. + + """ + cdef Py_ssize_t nobs, p, q, m, m2, n, i, j, r, tmp_ix + cdef cnp.npy_intp dim1[1] + cdef cnp.npy_intp dim2[2] + cdef {{cython_type}} [:, :] acovf + cdef {{cython_type}} [:] acovf2 + + nobs = arma_acovf.shape[0] + p = len(ar) - 1 + q = len(ma) - 1 + m = max(p, q) + m2 = 2 * m + n = min(m2, nobs) + + dim2[0] = m2; + dim2[1] = m2; + acovf = cnp.PyArray_ZEROS(2, dim2, {{typenum}}, C) + dim1[0] = max(nobs - m, 0); + acovf2 = cnp.PyArray_ZEROS(1, dim1, {{typenum}}, C) + + # Set i, j = 1, ..., m (which is then done) + {{prefix}}toeplitz(m, 0, 0, arma_acovf, acovf) + + # Set i = 1, ..., m; j = m + 1, ..., 2 m + # and i = m + 1, ..., 2 m; j = 1, ..., m + if nobs > m: + for j in range(m): + for i in range(m, m2): + acovf[i, j] = arma_acovf[i - j] + for r in range(1, p + 1): + tmp_ix = abs(r - (i - j)) + acovf[i, j] = acovf[i, j] - (-ar[r] * arma_acovf[tmp_ix]) + acovf[:m, m:m2] = acovf[m:m2, :m].T + + # Set values for |i - j| <= q, min(i, j) = m + 1, and max(i, j) <= nobs + if nobs > m: + for i in range(nobs - m): + for r in range(q + 1 - i): + acovf2[i] = acovf2[i] + ma[r] * ma[r + i] + + return acovf[:n, :n], acovf2 + + +cpdef {{prefix}}arma_innovations_algo_fast(int nobs, + {{cython_type}} [:] ar_params, + {{cython_type}} [:] ma_params, + {{cython_type}} [:, :] acovf, + {{cython_type}} [:] acovf2): + """ + arma_innovations_algo_fast(int nobs, {{cython_type}} [:] ar_params, {{cython_type}} [:] ma_params, {{cython_type}} [:, :] acovf, {{cython_type}} [:] acovf2) + + Quickly apply innovations algorithm for an ARMA process. + + Parameters + ---------- + ar_params : ndarray + Autoregressive parameters. + ma_params : ndarray + Moving average parameters. + acovf : ndarray + An `m * 2` x `m * 2` autocovariance matrix at least the first `m` + columns filled in, where `m = max(len(ar_params), ma_params)` + (see `arma_transformed_acovf_fast`). + acovf2 : ndarray + A `max(0, nobs - m)` length vector containing the autocovariance + function associated with the final `nobs - m` observations. + + Returns + ------- + theta : ndarray + The matrix of moving average coefficients from the innovations + algorithm. + v : ndarray + The vector of mean squared errors. + + Notes + ----- + The innovations algorithm is presented in _[1], section 2.5.2. + + Details of the innovations algorithm applied to ARMA processes is given + in _[1] section 3.3 and in section 5.2.7. + + This function is relatively fast even with a large number of observations + since we can exploit a number of known zeros in the theta array. + + References + ---------- + .. [1] Brockwell, Peter J., and Richard A. Davis. 2009. + Time Series: Theory and Methods. 2nd ed. 1991. + New York, NY: Springer. + + """ + cdef Py_ssize_t i, j, k, n, _n, m, m2, p, q, start, start2 + cdef cnp.npy_intp dim1[1] + cdef cnp.npy_intp dim2[2] + cdef {{cython_type}} [:, :] theta + cdef {{cython_type}} [:] v + + p = len(ar_params) + q = len(ma_params) + m = max(p, q) + m2 = 2 * m + + dim1[0] = nobs; + v = cnp.PyArray_ZEROS(1, dim1, {{typenum}}, C) + dim2[0] = nobs; + dim2[1] = m + 1; + theta = cnp.PyArray_ZEROS(2, dim2, {{typenum}}, C) + + if m > 0: + v[0] = acovf[0, 0] + else: + # (handle the corner case where p = q = 0) + v[0] = acovf2[0] + + for n in range(nobs - 1): + _n = n + 1 + + start = 0 if n < m else n + 1 - q + for k in range(start, n + 1): + # See Brockwell and Davis, p. 100-101 + # (here we have weak rather than strict inequality due to Python's + # zero indexing) + if n >= m and n - k >= q: + continue + + if n + 1 < m2 and k < m: + theta[_n, n - k] = acovf[n + 1, k] + else: + theta[_n, n - k] = acovf2[n + 1 - k] + + start2 = 0 if n < m else n - m + for j in range(start2, k): + if n - j < m + 1: + theta[_n, n - k] = theta[_n, n - k] - theta[k - 1 + 1, k - j - 1] * theta[_n, n - j] * v[j] + theta[_n, n - k] = theta[_n, n - k] / v[k] + + if n + 1 < m: + v[n + 1] = acovf[n + 1, n + 1] + else: + v[n + 1] = acovf2[0] + start = max(0, n - (m + 1) + 2) + for i in range(start, n + 1): + v[n + 1] = v[n + 1] - theta[_n, n - i]**2 * v[i] + + return theta, v + + +cpdef {{prefix}}arma_innovations_filter({{cython_type}} [:] endog, + {{cython_type}} [:] ar_params, + {{cython_type}} [:] ma_params, + {{cython_type}} [:, :] theta): + """ + arma_innovations_filter({{cython_type}} [:] endog, {{cython_type}} [:] ar_params, {{cython_type}} [:] ma_params, {{cython_type}} [:, :] theta): + + Innovations filter for an ARMA process. + + Parameters + ---------- + endog : ndarray + The observed time-series process. + ar_params : ndarray + Autoregressive parameters. + ma_params : ndarray + Moving average parameters. + theta : ndarray + The matrix of moving average coefficients from the innovations + algorithm (see `arma_innovations_algo` or `arma_innovations_algo_fast`) + + Returns + ------- + u : ndarray + The vector of innovations: the one-step-ahead prediction errors from + applying the innovations algorithm. + + Notes + ----- + The innovations algorithm is presented in _[1], section 2.5.2. + + Details of the innovations algorithm applied to ARMA processes is given + in _[1] section 3.3 and in section 5.2.7. + + References + ---------- + .. [1] Brockwell, Peter J., and Richard A. Davis. 2009. + Time Series: Theory and Methods. 2nd ed. 1991. + New York, NY: Springer. + + """ + cdef Py_ssize_t nobs, i, k, j, m, p, q + cdef cnp.npy_intp dim1[1] + cdef {{cython_type}} [:] u + cdef {{cython_type}} hat + + p = len(ar_params) + q = len(ma_params) + m = max(p, q) + + nobs = theta.shape[0] + k = theta.shape[1] + + dim1[0] = nobs; + u = cnp.PyArray_ZEROS(1, dim1, {{typenum}}, C) + u[0] = endog[0] + + for i in range(1, nobs): + hat = 0 + if i < m: + for j in range(i): + hat = hat + theta[i, j] * u[i - j - 1] + else: + for j in range(p): + hat = hat + ar_params[j] * endog[i - j - 1] + for j in range(q): + hat = hat + theta[i, j] * u[i - j - 1] + u[i] = endog[i] - hat + + return u + + +cpdef {{prefix}}arma_innovations({{cython_type}} [:] endog, + {{cython_type}} [:] ar_params, + {{cython_type}} [:] ma_params, + {{cython_type}} sigma2): + """ + arma_innovations({{cython_type}} [:] endog, {{cython_type}} [:] ar_params, {{cython_type}} [:] ma_params): + + Compute innovations and variances based on an ARMA process. + + Parameters + ---------- + endog : ndarray + The observed time-series process. + ar_params : ndarray + Autoregressive parameters. + ma_params : ndarray + Moving average parameters. + sigma2 : ndarray + The ARMA innovation variance. + + Returns + ------- + u : ndarray + The vector of innovations: the one-step-ahead prediction errors from + applying the innovations algorithm. + v : ndarray + The vector of innovation variances. + + Notes + ----- + The innovations algorithm is presented in _[1], section 2.5.2. + + References + ---------- + .. [1] Brockwell, Peter J., and Richard A. Davis. 2009. + Time Series: Theory and Methods. 2nd ed. 1991. + New York, NY: Springer. + + """ + cdef Py_ssize_t nobs = len(endog), i + cdef {{cython_type}} const + cdef {{cython_type}} [:] ar, ma, arma_acovf, llf_obs, acovf2, u, v + cdef {{cython_type}} [:, :] acovf + cdef cnp.npy_intp dim1[1] + + dim1[0] = len(ar_params) + 1; + ar = cnp.PyArray_ZEROS(1, dim1, {{typenum}}, C) + dim1[0] = len(ma_params) + 1; + ma = cnp.PyArray_ZEROS(1, dim1, {{typenum}}, C) + + ar[0] = 1 + for i in range(1, len(ar_params) + 1): + ar[i] = -1 * ar_params[i - 1] + ma[0] = 1 + ma[1:] = ma_params + + arma_acovf = arima_process.arma_acovf(ar, ma, nobs, sigma2, dtype={{dtype}}) / sigma2 + acovf, acovf2 = {{prefix}}arma_transformed_acovf_fast(ar, ma, arma_acovf) + theta, v = {{prefix}}arma_innovations_algo_fast(nobs, ar_params, ma_params, acovf, acovf2) + u = {{prefix}}arma_innovations_filter(endog, ar_params, ma_params, theta) + + return u, v + + +cpdef {{prefix}}arma_loglikeobs_fast({{cython_type}} [:] endog, + {{cython_type}} [:] ar_params, + {{cython_type}} [:] ma_params, + {{cython_type}} sigma2): + """ + {{prefix}}arma_loglikeobs_fast({{cython_type}} [:] endog, {{cython_type}} [:] ar_params, {{cython_type}} [:] ma_params, {{cython_type}} sigma2) + + Quickly calculate the loglikelihood of each observation for an ARMA process + + Parameters + ---------- + endog : ndarray + The observed time-series process. + ar_params : ndarray + Autoregressive parameters. + ma_params : ndarray + Moving average parameters. + sigma2 : ndarray + The ARMA innovation variance. + + Returns + ------- + loglike : ndarray of float + Array of loglikelihood values for each observation. + + Notes + ----- + Details related to computing the loglikelihood associated with an ARMA + process using the innovations algorithm are given in _[1] section 5.2. + + References + ---------- + .. [1] Brockwell, Peter J., and Richard A. Davis. 2009. + Time Series: Theory and Methods. 2nd ed. 1991. + New York, NY: Springer. + + """ + + cdef Py_ssize_t nobs = len(endog), i + cdef {{cython_type}} const + cdef {{cython_type}} [:] llf_obs, u, v + cdef cnp.npy_intp dim1[1] + + u, v = {{prefix}}arma_innovations(endog, ar_params, ma_params, sigma2) + + dim1[0] = nobs; + llf_obs = cnp.PyArray_ZEROS(1, dim1, {{typenum}}, C) + + const = {{combined_prefix}}log(2*NPY_PI) + for i in range(nobs): + llf_obs[i] = -0.5 * u[i]**2 / (sigma2 * v[i]) - 0.5 * (const + {{combined_prefix}}log(sigma2 * v[i])) + + return np.array(llf_obs, dtype={{dtype}}) + +{{endfor}} diff --git a/statsmodels/tsa/innovations/api.py b/statsmodels/tsa/innovations/api.py new file mode 100644 index 0000000..9efc9d7 --- /dev/null +++ b/statsmodels/tsa/innovations/api.py @@ -0,0 +1,2 @@ +from .arma_innovations import ( # noqa: F401 + arma_innovations, arma_loglike, arma_loglikeobs, arma_score, arma_scoreobs) diff --git a/statsmodels/tsa/innovations/arma_innovations.py b/statsmodels/tsa/innovations/arma_innovations.py new file mode 100644 index 0000000..8e611ef --- /dev/null +++ b/statsmodels/tsa/innovations/arma_innovations.py @@ -0,0 +1,269 @@ +import numpy as np + +from statsmodels.tsa import arima_process +from statsmodels.tsa.statespace.tools import prefix_dtype_map +from statsmodels.tools.numdiff import _get_epsilon, approx_fprime_cs +from scipy.linalg.blas import find_best_blas_type +from . import _arma_innovations + + +def arma_innovations(endog, ar_params=None, ma_params=None, sigma2=1, + normalize=False, prefix=None): + """ + Compute innovations using a given ARMA process + + Parameters + ---------- + endog : ndarray + The observed time-series process, may be univariate or multivariate. + ar_params : ndarray, optional + Autoregressive parameters. + ma_params : ndarray, optional + Moving average parameters. + sigma2 : ndarray, optional + The ARMA innovation variance. Default is 1. + normalize : boolean, optional + Whether or not to normalize the returned innovations. Default is False. + prefix : str, optional + The BLAS prefix associated with the datatype. Default is to find the + best datatype based on given input. This argument is typically only + used internally. + + Returns + ------- + innovations : ndarray + Innovations (one-step-ahead prediction errors) for the given `endog` + series with predictions based on the given ARMA process. If + `normalize=True`, then the returned innovations have been "whitened" by + dividing through by the square root of the mean square error. + innovations_mse : ndarray + Mean square error for the innovations. + + """ + # Parameters + endog = np.array(endog) + squeezed = endog.ndim == 1 + if squeezed: + endog = endog[:, None] + + ar_params = np.atleast_1d([] if ar_params is None else ar_params) + ma_params = np.atleast_1d([] if ma_params is None else ma_params) + + nobs, k_endog = endog.shape + ar = np.r_[1, -ar_params] + ma = np.r_[1, ma_params] + + # Get BLAS prefix + if prefix is None: + prefix, dtype, _ = find_best_blas_type( + [endog, ar_params, ma_params, np.array(sigma2)]) + dtype = prefix_dtype_map[prefix] + + # Make arrays contiguous for BLAS calls + endog = np.asfortranarray(endog, dtype=dtype) + ar_params = np.asfortranarray(ar_params, dtype=dtype) + ma_params = np.asfortranarray(ma_params, dtype=dtype) + sigma2 = dtype(sigma2).item() + + # Get the appropriate functions + arma_transformed_acovf_fast = getattr( + _arma_innovations, prefix + 'arma_transformed_acovf_fast') + arma_innovations_algo_fast = getattr( + _arma_innovations, prefix + 'arma_innovations_algo_fast') + arma_innovations_filter = getattr( + _arma_innovations, prefix + 'arma_innovations_filter') + + # Run the innovations algorithm for ARMA coefficients + arma_acovf = arima_process.arma_acovf(ar, ma, + sigma2=sigma2, nobs=nobs) / sigma2 + acovf, acovf2 = arma_transformed_acovf_fast(ar, ma, arma_acovf) + theta, v = arma_innovations_algo_fast(nobs, ar_params, ma_params, + acovf, acovf2) + v = np.array(v) + if normalize: + v05 = v**0.5 + + # Run the innovations filter across each series + u = [] + for i in range(k_endog): + u_i = np.array(arma_innovations_filter(endog[:, i], ar_params, + ma_params, theta)) + u.append(u_i / v05 if normalize else u_i) + u = np.vstack(u).T + + # Post-processing + if squeezed: + u = u.squeeze() + + return u, v + + +def arma_loglike(endog, ar_params=None, ma_params=None, sigma2=1, prefix=None): + """ + Compute loglikelihood of the given data assuming an ARMA process + + Parameters + ---------- + endog : ndarray + The observed time-series process. + ar_params : ndarray, optional + Autoregressive parameters. + ma_params : ndarray, optional + Moving average parameters. + sigma2 : ndarray, optional + The ARMA innovation variance. Default is 1. + prefix : str, optional + The BLAS prefix associated with the datatype. Default is to find the + best datatype based on given input. This argument is typically only + used internally. + + Returns + ------- + loglike : numeric + The joint loglikelihood. + + """ + llf_obs = arma_loglikeobs(endog, ar_params=ar_params, ma_params=ma_params, + sigma2=sigma2, prefix=prefix) + return np.sum(llf_obs) + + +def arma_loglikeobs(endog, ar_params=None, ma_params=None, sigma2=1, + prefix=None): + """ + Compute loglikelihood for each observation assuming an ARMA process + + Parameters + ---------- + endog : ndarray + The observed time-series process. + ar_params : ndarray, optional + Autoregressive parameters. + ma_params : ndarray, optional + Moving average parameters. + sigma2 : ndarray, optional + The ARMA innovation variance. Default is 1. + prefix : str, optional + The BLAS prefix associated with the datatype. Default is to find the + best datatype based on given input. This argument is typically only + used internally. + + Returns + ------- + loglikeobs : array of numeric + Array of loglikelihood values for each observation. + + """ + endog = np.array(endog) + ar_params = np.atleast_1d([] if ar_params is None else ar_params) + ma_params = np.atleast_1d([] if ma_params is None else ma_params) + + if prefix is None: + prefix, dtype, _ = find_best_blas_type( + [endog, ar_params, ma_params, np.array(sigma2)]) + dtype = prefix_dtype_map[prefix] + + endog = np.ascontiguousarray(endog, dtype=dtype) + ar_params = np.asfortranarray(ar_params, dtype=dtype) + ma_params = np.asfortranarray(ma_params, dtype=dtype) + sigma2 = dtype(sigma2).item() + + func = getattr(_arma_innovations, prefix + 'arma_loglikeobs_fast') + return func(endog, ar_params, ma_params, sigma2) + + +def arma_score(endog, ar_params=None, ma_params=None, sigma2=1, + prefix=None): + """ + Compute the score (gradient of the loglikelihood function) + + Parameters + ---------- + endog : ndarray + The observed time-series process. + ar_params : ndarray, optional + Autoregressive coefficients, not including the zero lag. + ma_params : ndarray, optional + Moving average coefficients, not including the zero lag, where the sign + convention assumes the coefficients are part of the lag polynomial on + the right-hand-side of the ARMA definition (i.e. they have the same + sign from the usual econometrics convention in which the coefficients + are on the right-hand-side of the ARMA definition). + sigma2 : ndarray, optional + The ARMA innovation variance. Default is 1. + prefix : str, optional + The BLAS prefix associated with the datatype. Default is to find the + best datatype based on given input. This argument is typically only + used internally. + + Returns + --------- + score : array + Score, evaluated at the given parameters. + + Notes + ----- + This is a numerical approximation, calculated using first-order complex + step differentiation on the `arma_loglike` method. + """ + ar_params = [] if ar_params is None else ar_params + ma_params = [] if ma_params is None else ma_params + + p = len(ar_params) + q = len(ma_params) + + def func(params): + return arma_loglike(endog, params[:p], params[p:p + q], params[p + q:]) + + params0 = np.r_[ar_params, ma_params, sigma2] + epsilon = _get_epsilon(params0, 2., None, len(params0)) + return approx_fprime_cs(params0, func, epsilon) + + +def arma_scoreobs(endog, ar_params=None, ma_params=None, sigma2=1, + prefix=None): + """ + Compute the score per observation (gradient of the loglikelihood function) + + Parameters + ---------- + endog : ndarray + The observed time-series process. + ar_params : ndarray, optional + Autoregressive coefficients, not including the zero lag. + ma_params : ndarray, optional + Moving average coefficients, not including the zero lag, where the sign + convention assumes the coefficients are part of the lag polynomial on + the right-hand-side of the ARMA definition (i.e. they have the same + sign from the usual econometrics convention in which the coefficients + are on the right-hand-side of the ARMA definition). + sigma2 : ndarray, optional + The ARMA innovation variance. Default is 1. + prefix : str, optional + The BLAS prefix associated with the datatype. Default is to find the + best datatype based on given input. This argument is typically only + used internally. + + Returns + --------- + scoreobs : array + Score per observation, evaluated at the given parameters. + + Notes + ----- + This is a numerical approximation, calculated using first-order complex + step differentiation on the `arma_loglike` method. + """ + ar_params = [] if ar_params is None else ar_params + ma_params = [] if ma_params is None else ma_params + + p = len(ar_params) + q = len(ma_params) + + def func(params): + return arma_loglikeobs(endog, params[:p], params[p:p + q], + params[p + q:]) + + params0 = np.r_[ar_params, ma_params, sigma2] + epsilon = _get_epsilon(params0, 2., None, len(params0)) + return approx_fprime_cs(params0, func, epsilon) diff --git a/statsmodels/tsa/innovations/tests/__init__.py b/statsmodels/tsa/innovations/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/innovations/tests/test_arma_innovations.py b/statsmodels/tsa/innovations/tests/test_arma_innovations.py new file mode 100644 index 0000000..509074b --- /dev/null +++ b/statsmodels/tsa/innovations/tests/test_arma_innovations.py @@ -0,0 +1,45 @@ +""" +Tests for ARMA innovations algorithm wrapper +""" +from __future__ import division, absolute_import, print_function + +import numpy as np +import pytest +from numpy.testing import assert_allclose + +from statsmodels.tsa.innovations import arma_innovations +from statsmodels.tsa.statespace.sarimax import SARIMAX + + +@pytest.mark.parametrize("ar_params,ma_params,sigma2", [ + (np.array([]), np.array([]), 1), + (np.array([0.]), np.array([0.]), 1), + (np.array([0.9]), np.array([]), 1), + (np.array([]), np.array([0.9]), 1), + (np.array([0.2, -0.4, 0.1, 0.1]), np.array([0.5, 0.1]), 1.123), + (np.array([0.5, 0.1]), np.array([0.2, -0.4, 0.1, 0.1]), 1.123), +]) +def test_innovations_algo_filter_kalman_filter(ar_params, ma_params, sigma2): + # Test the innovations algorithm and filter against the Kalman filter + # for exact likelihood evaluation of an ARMA process + np.random.seed(42) + endog = np.random.normal(size=100) + + # Innovations algorithm approach + llf = arma_innovations.arma_loglike(endog, ar_params, ma_params, sigma2) + llf_obs = arma_innovations.arma_loglikeobs(endog, ar_params, ma_params, + sigma2) + score = arma_innovations.arma_score(endog, ar_params, ma_params, sigma2) + score_obs = arma_innovations.arma_scoreobs(endog, ar_params, ma_params, + sigma2) + + # Kalman filter apparoach + mod = SARIMAX(endog, order=(len(ar_params), 0, len(ma_params))) + params = np.r_[ar_params, ma_params, sigma2] + + # Test that the two approaches are the same + assert_allclose(llf, mod.loglike(params)) + assert_allclose(llf_obs, mod.loglikeobs(params)) + # Note: the tolerance on the two gets worse as more nobs are added + assert_allclose(score, mod.score(params), atol=1e-5) + assert_allclose(score_obs, mod.score_obs(params), atol=1e-5) diff --git a/statsmodels/tsa/innovations/tests/test_cython_arma_innovations_fast.py b/statsmodels/tsa/innovations/tests/test_cython_arma_innovations_fast.py new file mode 100644 index 0000000..bde7c5e --- /dev/null +++ b/statsmodels/tsa/innovations/tests/test_cython_arma_innovations_fast.py @@ -0,0 +1,359 @@ +""" +Tests for fast version of ARMA innovations algorithm +""" +from __future__ import division, absolute_import, print_function + +import numpy as np +import pytest +from numpy.testing import assert_equal, assert_allclose + +from statsmodels.tsa.arima_process import arma_acovf +from statsmodels.tsa.innovations import _arma_innovations, arma_innovations +from statsmodels.tsa.statespace.sarimax import SARIMAX + + +def test_brockwell_davis_ex533(): + # See Brockwell and Davis (2009) - Time Series Theory and Methods + # Example 5.3.3: ARMA(1, 1) process, p.g. 177 + nobs = 10 + + ar_params = np.array([0.2]) + ma_params = np.array([0.4]) + sigma2 = 8.92 + p = len(ar_params) + q = len(ma_params) + m = max(p, q) + + ar = np.r_[1, -ar_params] + ma = np.r_[1, ma_params] + + # First, get the autocovariance of the process + arma_process_acovf = arma_acovf(ar, ma, nobs=nobs, sigma2=sigma2) + unconditional_variance = ( + sigma2 * (1 + 2 * ar_params[0] * ma_params[0] + ma_params[0]**2) / + (1 - ar_params[0]**2)) + assert_allclose(arma_process_acovf[0], unconditional_variance) + + # Next, get the autocovariance of the transformed process + # Note: as required by {{prefix}}arma_transformed_acovf, we first divide + # through by sigma^2 + arma_process_acovf /= sigma2 + unconditional_variance /= sigma2 + out = np.array(_arma_innovations.darma_transformed_acovf_fast( + ar, ma, arma_process_acovf)) + acovf = np.array(out[0]) + acovf2 = np.array(out[1]) + + # `acovf` is an m^2 x m^2 matrix, where m = max(p, q) + # but it is only valid for the autocovariances of the first m observations + # (this means in particular that the block `acovf[m:, m:]` should *not* be + # used) + # `acovf2` then contains the (time invariant) autocovariance terms for + # the observations m + 1, ..., nobs - since the autocovariance is the same + # for these terms, to save space we do not construct the autocovariance + # matrix as we did for the first m terms. Thus `acovf2[0]` is the variance, + # `acovf2[1]` is the first autocovariance, etc. + + # Test the autocovariance function for observations m + 1, ..., nobs + # (it is time invariant here) + assert_equal(acovf2.shape, (nobs - m,)) + assert_allclose(acovf2[0], 1 + ma_params[0]**2) + assert_allclose(acovf2[1], ma_params[0]) + assert_allclose(acovf2[2:], 0) + + # Test the autocovariance function for observations 1, ..., m + # (it is time varying here) + assert_equal(acovf.shape, (m * 2, m * 2)) + + # (we need to check `acovf[:m * 2, :m]`, i.e. `acovf[:2, :1])` + ix = np.diag_indices_from(acovf) + ix_lower = (ix[0][:-1] + 1, ix[1][:-1]) + + # acovf[ix] is the diagonal, and we want to check the first m + # elements of the diagonal + assert_allclose(acovf[ix][:m], unconditional_variance) + + # acovf[ix_lower] is the first lower off-diagonal + assert_allclose(acovf[ix_lower][:m], ma_params[0]) + + # Now, check that we compute the moving average coefficients and the + # associated variances correctly + out = _arma_innovations.darma_innovations_algo_fast( + nobs, ar_params, ma_params, acovf, acovf2) + theta = np.array(out[0]) + v = np.array(out[1]) + + # Test v (see eq. 5.3.13) + desired_v = np.zeros(nobs) + desired_v[0] = unconditional_variance + for i in range(1, nobs): + desired_v[i] = 1 + (1 - 1 / desired_v[i - 1]) * ma_params[0]**2 + assert_allclose(v, desired_v) + + # Test theta (see eq. 5.3.13) + # Note that they will have shape (nobs, m + 1) here, not (nobs, nobs - 1) + # as in the original (non-fast) version + assert_equal(theta.shape, (nobs, m + 1)) + desired_theta = np.zeros(nobs) + for i in range(1, nobs): + desired_theta[i] = ma_params[0] / desired_v[i - 1] + assert_allclose(theta[:, 0], desired_theta) + assert_allclose(theta[:, 1:], 0) + + # Test against Table 5.3.1 + endog = np.array([ + -1.1, 0.514, 0.116, -0.845, 0.872, -0.467, -0.977, -1.699, -1.228, + -1.093]) + u = _arma_innovations.darma_innovations_filter(endog, ar_params, ma_params, + theta) + + # Note: Table 5.3.1 has \hat X_n+1 = -0.5340 for n = 1, but this seems to + # be a typo, since equation 5.3.12 gives the form of the prediction + # equation as \hat X_n+1 = \phi X_n + \theta_n1 (X_n - \hat X_n) + # Then for n = 1 we have: + # \hat X_n+1 = 0.2 (-1.1) + (0.2909) (-1.1 - 0) = -0.5399 + # And for n = 2 if we use what we have computed, then we get: + # \hat X_n+1 = 0.2 (0.514) + (0.3833) (0.514 - (-0.54)) = 0.5068 + # as desired, whereas if we used the book's number for n=1 we would get: + # \hat X_n+1 = 0.2 (0.514) + (0.3833) (0.514 - (-0.534)) = 0.5045 + # which is not what Table 5.3.1 shows. + desired_hat = np.array([ + 0, -0.540, 0.5068, -0.1321, -0.4539, 0.7046, -0.5620, -0.3614, + -0.8748, -0.3869]) + desired_u = endog - desired_hat + assert_allclose(u, desired_u, atol=1e-4) + + +def test_brockwell_davis_ex534(): + # See Brockwell and Davis (2009) - Time Series Theory and Methods + # Example 5.3.4: ARMA(1, 1) process, p.g. 178 + nobs = 10 + + ar_params = np.array([1, -0.24]) + ma_params = np.array([0.4, 0.2, 0.1]) + sigma2 = 1 + p = len(ar_params) + q = len(ma_params) + m = max(p, q) + + ar = np.r_[1, -ar_params] + ma = np.r_[1, ma_params] + + # First, get the autocovariance of the process + arma_process_acovf = arma_acovf(ar, ma, nobs=nobs, sigma2=sigma2) + assert_allclose(arma_process_acovf[:3], + [7.17133, 6.44139, 5.06027], atol=1e-5) + + # Next, get the autocovariance of the transformed process + out = np.array(_arma_innovations.darma_transformed_acovf_fast( + ar, ma, arma_process_acovf)) + acovf = np.array(out[0]) + acovf2 = np.array(out[1]) + # See test_brockwell_davis_ex533 for details on acovf vs acovf2 + + # Test acovf + assert_equal(acovf.shape, (m * 2, m * 2)) + + ix = np.diag_indices_from(acovf) + ix_lower1 = (ix[0][:-1] + 1, ix[1][:-1]) + ix_lower2 = (ix[0][:-2] + 2, ix[1][:-2]) + ix_lower3 = (ix[0][:-3] + 3, ix[1][:-3]) + ix_lower4 = (ix[0][:-4] + 4, ix[1][:-4]) + + assert_allclose(acovf[ix][:m], 7.17133, atol=1e-5) + desired = [6.44139, 6.44139, 0.816] + assert_allclose(acovf[ix_lower1][:m], desired, atol=1e-5) + assert_allclose(acovf[ix_lower2][0], 5.06027, atol=1e-5) + assert_allclose(acovf[ix_lower2][1:m], 0.34, atol=1e-5) + assert_allclose(acovf[ix_lower3][:m], 0.1, atol=1e-5) + assert_allclose(acovf[ix_lower4][:m], 0, atol=1e-5) + + # Test acovf2 + assert_equal(acovf2.shape, (nobs - m,)) + assert_allclose(acovf2[:4], [1.21, 0.5, 0.24, 0.1]) + assert_allclose(acovf2[4:], 0) + + # Test innovations algorithm output + out = _arma_innovations.darma_innovations_algo_fast( + nobs, ar_params, ma_params, acovf, acovf2) + theta = np.array(out[0]) + v = np.array(out[1]) + + # Test v (see Table 5.3.2) + desired_v = [7.1713, 1.3856, 1.0057, 1.0019, 1.0016, 1.0005, 1.0000, + 1.0000, 1.0000, 1.0000] + assert_allclose(v, desired_v, atol=1e-4) + + # Test theta (see Table 5.3.2) + assert_equal(theta.shape, (nobs, m + 1)) + desired_theta = np.array([ + [0, 0.8982, 1.3685, 0.4008, 0.3998, 0.3992, 0.4000, 0.4000, 0.4000, + 0.4000], + [0, 0, 0.7056, 0.1806, 0.2020, 0.1995, 0.1997, 0.2000, 0.2000, 0.2000], + [0, 0, 0, 0.0139, 0.0722, 0.0994, 0.0998, 0.0998, 0.0999, 0.1]]).T + assert_allclose(theta[:, :m], desired_theta, atol=1e-4) + assert_allclose(theta[:, m:], 0) + + # Test innovations filter output + endog = np.array([1.704, 0.527, 1.041, 0.942, 0.555, -1.002, -0.585, 0.010, + -0.638, 0.525]) + u = _arma_innovations.darma_innovations_filter(endog, ar_params, ma_params, + theta) + + desired_hat = np.array([ + 0, 1.5305, -0.1710, 1.2428, 0.7443, 0.3138, -1.7293, -0.1688, + 0.3193, -0.8731]) + desired_u = endog - desired_hat + assert_allclose(u, desired_u, atol=1e-4) + + +@pytest.mark.parametrize("ar_params,ma_params,sigma2", [ + (np.array([]), np.array([]), 1), + (np.array([0.]), np.array([0.]), 1), + (np.array([0.9]), np.array([]), 1), + (np.array([]), np.array([0.9]), 1), + (np.array([0.2, -0.4, 0.1, 0.1]), np.array([0.5, 0.1]), 1.123), + (np.array([0.5, 0.1]), np.array([0.2, -0.4, 0.1, 0.1]), 1.123), +]) +def test_innovations_algo_filter_kalman_filter(ar_params, ma_params, sigma2): + # Test the innovations algorithm and filter against the Kalman filter + # for exact likelihood evaluation of an ARMA process + + ar = np.r_[1, -ar_params] + ma = np.r_[1, ma_params] + + endog = np.random.normal(size=10) + nobs = len(endog) + + # Innovations algorithm approach + arma_process_acovf = arma_acovf(ar, ma, nobs=nobs, sigma2=sigma2) + acovf, acovf2 = np.array(_arma_innovations.darma_transformed_acovf_fast( + ar, ma, arma_process_acovf / sigma2)) + theta, r = _arma_innovations.darma_innovations_algo_fast( + nobs, ar_params, ma_params, acovf, acovf2) + u = _arma_innovations.darma_innovations_filter(endog, ar_params, ma_params, + theta) + + v = np.array(r) * sigma2 + u = np.array(u) + + llf_obs = -0.5 * u**2 / v - 0.5 * np.log(2 * np.pi * v) + + # Kalman filter apparoach + mod = SARIMAX(endog, order=(len(ar_params), 0, len(ma_params))) + res = mod.filter(np.r_[ar_params, ma_params, sigma2]) + + # Test that the two approaches are identical + assert_allclose(u, res.forecasts_error[0]) + # assert_allclose(theta[1:, 0], res.filter_results.kalman_gain[0, 0, :-1]) + assert_allclose(llf_obs, res.llf_obs) + + # Get llf_obs directly + llf_obs2 = _arma_innovations.darma_loglikeobs_fast( + endog, ar_params, ma_params, sigma2) + + assert_allclose(llf_obs2, res.llf_obs) + + +@pytest.mark.parametrize("ar_params,ma_params,sigma2", [ + (np.array([]), np.array([]), 1), + (np.array([0.]), np.array([0.]), 1), + (np.array([0.9]), np.array([]), 1), + (np.array([]), np.array([0.9]), 1), + (np.array([0.2, -0.4, 0.1, 0.1]), np.array([0.5, 0.1]), 1.123), + (np.array([0.5, 0.1]), np.array([0.2, -0.4, 0.1, 0.1]), 1.123), +]) +def test_innovations_algo_direct_filter_kalman_filter(ar_params, ma_params, + sigma2): + # Test the innovations algorithm and filter against the Kalman filter + # for exact likelihood evaluation of an ARMA process, using the direct + # function. + + endog = np.random.normal(size=10) + + # Innovations algorithm approach + u, r = arma_innovations.arma_innovations(endog, ar_params, ma_params, + sigma2) + + v = np.array(r) * sigma2 + u = np.array(u) + + llf_obs = -0.5 * u**2 / v - 0.5 * np.log(2 * np.pi * v) + + # Kalman filter apparoach + mod = SARIMAX(endog, order=(len(ar_params), 0, len(ma_params))) + res = mod.filter(np.r_[ar_params, ma_params, sigma2]) + + # Test that the two approaches are identical + assert_allclose(u, res.forecasts_error[0]) + # assert_allclose(theta[1:, 0], res.filter_results.kalman_gain[0, 0, :-1]) + assert_allclose(llf_obs, res.llf_obs) + + # Get llf_obs directly + llf_obs2 = _arma_innovations.darma_loglikeobs_fast( + endog, ar_params, ma_params, sigma2) + + assert_allclose(llf_obs2, res.llf_obs) + + +@pytest.mark.parametrize("ar_params,diff,ma_params,sigma2", [ + (np.array([]), 1, np.array([]), 1), + (np.array([0.]), 1, np.array([0.]), 1), + (np.array([0.9]), 1, np.array([]), 1), + (np.array([]), 1, np.array([0.9]), 1), + (np.array([0.2, -0.4, 0.1, 0.1]), 1, np.array([0.5, 0.1]), 1.123), + (np.array([0.5, 0.1]), 1, np.array([0.2, -0.4, 0.1, 0.1]), 1.123), + (np.array([0.5, 0.1]), 2, np.array([0.2, -0.4, 0.1, 0.1]), 1.123), +]) +def test_integrated_process(ar_params, diff, ma_params, sigma2): + # Test loglikelihood computation when model has integration + + nobs = 100 + + endog = np.cumsum(np.random.normal(size=nobs)) + + # Innovations algorithm approach + llf_obs = arma_innovations.arma_loglikeobs( + np.diff(endog, diff), ar_params, ma_params, sigma2) + + # Kalman filter apparoach + mod = SARIMAX(endog, order=(len(ar_params), diff, len(ma_params)), + simple_differencing=True) + res = mod.filter(np.r_[ar_params, ma_params, sigma2]) + + # Test that the two approaches are identical + assert_allclose(llf_obs, res.llf_obs) + + +@pytest.mark.parametrize("ar_params,ma_params,sigma2", [ + (np.array([]), np.array([]), 1), + (np.array([0.]), np.array([0.]), 1), + (np.array([0.9]), np.array([]), 1), + (np.array([]), np.array([0.9]), 1), + (np.array([0.2, -0.4, 0.1, 0.1]), np.array([0.5, 0.1]), 1.123), + (np.array([0.5, 0.1]), np.array([0.2, -0.4, 0.1, 0.1]), 1.123), +]) +def test_regression_with_arma_errors(ar_params, ma_params, sigma2): + # Test loglikelihood computation when model has regressors + nobs = 100 + + eps = np.random.normal(nobs) + exog = np.c_[np.ones(nobs), np.random.uniform(size=nobs)] + beta = [5, -0.2] + endog = np.dot(exog, beta) + eps + + # Innovations algorithm approach + beta_hat = np.squeeze(np.linalg.pinv(exog).dot(endog)) + demeaned = endog - np.dot(exog, beta_hat) + llf_obs = arma_innovations.arma_loglikeobs( + demeaned, ar_params, ma_params, sigma2) + + # Kalman filter approach + # (this works since we impose here that the regression coefficients are + # beta_hat - in practice, the MLE estimates will not necessarily match + # the OLS estimates beta_hat) + mod = SARIMAX(endog, exog=exog, order=(len(ar_params), 0, len(ma_params))) + res = mod.filter(np.r_[beta_hat, ar_params, ma_params, sigma2]) + + # Test that the two approaches are identical + assert_allclose(llf_obs, res.llf_obs) diff --git a/statsmodels/tsa/interp/__init__.py b/statsmodels/tsa/interp/__init__.py new file mode 100644 index 0000000..6bc4552 --- /dev/null +++ b/statsmodels/tsa/interp/__init__.py @@ -0,0 +1,5 @@ +__all__ = ['dentonm', 'test'] +from .denton import dentonm +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/tsa/interp/denton.py b/statsmodels/tsa/interp/denton.py new file mode 100644 index 0000000..e351a6f --- /dev/null +++ b/statsmodels/tsa/interp/denton.py @@ -0,0 +1,308 @@ + +import numpy as np +from numpy import (dot, eye, diag_indices, zeros, ones, diag, + asarray, r_) +from numpy.linalg import solve +#from scipy.linalg import block_diag +#from scipy import linalg + +#def denton(indicator, benchmark, freq="aq", **kwarg): +# """ +# Denton's method to convert low-frequency to high frequency data. +# +# Parameters +# ---------- +# benchmark : array-like +# The higher frequency benchmark. A 1d or 2d data series in columns. +# If 2d, then M series are assumed. +# indicator +# A low-frequency indicator series. It is assumed that there are no +# pre-sample indicators. Ie., the first indicators line up with +# the first benchmark. +# freq : str {"aq","qm", "other"} +# "aq" - Benchmarking an annual series to quarterly. +# "mq" - Benchmarking a quarterly series to monthly. +# "other" - Custom stride. A kwarg, k, must be supplied. +# kwargs : +# k : int +# The number of high-frequency observations that sum to make an +# aggregate low-frequency observation. `k` is used with +# `freq` == "other". +# Returns +# ------- +# benchmarked series : array +# +# Notes +# ----- +# Denton's method minimizes the distance given by the penalty function, in +# a least squares sense, between the unknown benchmarked series and the +# indicator series subject to the condition that the sum of the benchmarked +# series is equal to the benchmark. +# +# +# References +# ---------- +# Bloem, A.M, Dippelsman, R.J. and Maehle, N.O. 2001 Quarterly National +# Accounts Manual--Concepts, Data Sources, and Compilation. IMF. +# http://www.imf.org/external/pubs/ft/qna/2000/Textbook/index.htm +# Denton, F.T. 1971. "Adjustment of monthly or quarterly series to annual +# totals: an approach based on quadratic minimization." Journal of the +# American Statistical Association. 99-102. +# +# """ +# # check arrays and make 2d +# indicator = np.asarray(indicator) +# if indicator.ndim == 1: +# indicator = indicator[:,None] +# benchmark = np.asarray(benchmark) +# if benchmark.ndim == 1: +# benchmark = benchmark[:,None] +# +# # get dimensions +# N = len(indicator) # total number of high-freq +# m = len(benchmark) # total number of low-freq +# +# # number of low-freq observations for aggregate measure +# # 4 for annual to quarter and 3 for quarter to monthly +# if freq == "aq": +# k = 4 +# elif freq == "qm": +# k = 3 +# elif freq == "other": +# k = kwargs.get("k") +# if not k: +# raise ValueError("k must be supplied with freq=\"other\"") +# else: +# raise ValueError("freq %s not understood" % freq) +# +# n = k*m # number of indicator series with a benchmark for back-series +# # if k*m != n, then we are going to extrapolate q observations +# +# B = block_diag(*(np.ones((k,1)),)*m) +# +# r = benchmark - B.T.dot(indicator) +#TODO: take code in the string at the end and implement Denton's original +# method with a few of the penalty functions. + + +def dentonm(indicator, benchmark, freq="aq", **kwargs): + """ + Modified Denton's method to convert low-frequency to high-frequency data. + + Uses proportionate first-differences as the penalty function. See notes. + + Parameters + ---------- + indicator + A low-frequency indicator series. It is assumed that there are no + pre-sample indicators. Ie., the first indicators line up with + the first benchmark. + benchmark : array-like + The higher frequency benchmark. A 1d or 2d data series in columns. + If 2d, then M series are assumed. + freq : str {"aq","qm", "other"} + "aq" - Benchmarking an annual series to quarterly. + "mq" - Benchmarking a quarterly series to monthly. + "other" - Custom stride. A kwarg, k, must be supplied. + kwargs : + k : int + The number of high-frequency observations that sum to make an + aggregate low-frequency observation. `k` is used with + `freq` == "other". + Returns + ------- + benchmarked series : array + + Examples + -------- + >>> indicator = [50,100,150,100] * 5 + >>> benchmark = [500,400,300,400,500] + >>> benchmarked = dentonm(indicator, benchmark, freq="aq") + + Notes + ----- + Denton's method minimizes the distance given by the penalty function, in + a least squares sense, between the unknown benchmarked series and the + indicator series subject to the condition that the sum of the benchmarked + series is equal to the benchmark. The modification allows that the first + value not be pre-determined as is the case with Denton's original method. + If the there is no benchmark provided for the last few indicator + observations, then extrapolation is performed using the last + benchmark-indicator ratio of the previous period. + + Minimizes sum((X[t]/I[t] - X[t-1]/I[t-1])**2) + + s.t. + + sum(X) = A, for each period. Where X is the benchmarked series, I is + the indicator, and A is the benchmark. + + References + ---------- + Bloem, A.M, Dippelsman, R.J. and Maehle, N.O. 2001 Quarterly National + Accounts Manual--Concepts, Data Sources, and Compilation. IMF. + http://www.imf.org/external/pubs/ft/qna/2000/Textbook/index.htm + Cholette, P. 1988. "Benchmarking systems of socio-economic time series." + Statistics Canada, Time Series Research and Analysis Division, + Working Paper No TSRA-88-017E. + Denton, F.T. 1971. "Adjustment of monthly or quarterly series to annual + totals: an approach based on quadratic minimization." Journal of the + American Statistical Association. 99-102. + """ +# penalty : str +# Penalty function. Can be "D1", "D2", "D3", "D4", "D5". +# X is the benchmarked series and I is the indicator. +# D1 - sum((X[t] - X[t-1]) - (I[t] - I[ti-1])**2) +# D2 - sum((ln(X[t]/X[t-1]) - ln(I[t]/I[t-1]))**2) +# D3 - sum((X[t]/X[t-1] / I[t]/I[t-1])**2) +# D4 - sum((X[t]/I[t] - X[t-1]/I[t-1])**2) +# D5 - sum((X[t]/I[t] / X[t-1]/I[t-1] - 1)**2) +#NOTE: only D4 is the only one implemented, see IMF chapter 6. + + # check arrays and make 2d + indicator = asarray(indicator) + if indicator.ndim == 1: + indicator = indicator[:,None] + benchmark = asarray(benchmark) + if benchmark.ndim == 1: + benchmark = benchmark[:,None] + + # get dimensions + N = len(indicator) # total number of high-freq + m = len(benchmark) # total number of low-freq + + # number of low-freq observations for aggregate measure + # 4 for annual to quarter and 3 for quarter to monthly + if freq == "aq": + k = 4 + elif freq == "qm": + k = 3 + elif freq == "other": + k = kwargs.get("k") + if not k: + raise ValueError("k must be supplied with freq=\"other\"") + else: + raise ValueError("freq %s not understood" % freq) + + n = k*m # number of indicator series with a benchmark for back-series + # if k*m != n, then we are going to extrapolate q observations + if N > n: + q = N - n + else: + q = 0 + + # make the aggregator matrix + #B = block_diag(*(ones((k,1)),)*m) + B = np.kron(np.eye(m), ones((k,1))) + + # following the IMF paper, we can do + Zinv = diag(1./indicator.squeeze()[:n]) + # this is D in Denton's notation (not using initial value correction) +# D = eye(n) + # make off-diagonal = -1 +# D[((np.diag_indices(n)[0])[:-1]+1,(np.diag_indices(n)[1])[:-1])] = -1 + # account for starting conditions +# H = D[1:,:] +# HTH = dot(H.T,H) + # just make HTH + HTH = eye(n) + diag_idx0, diag_idx1 = diag_indices(n) + HTH[diag_idx0[1:-1], diag_idx1[1:-1]] += 1 + HTH[diag_idx0[:-1]+1, diag_idx1[:-1]] = -1 + HTH[diag_idx0[:-1], diag_idx1[:-1]+1] = -1 + + W = dot(dot(Zinv,HTH),Zinv) + + # make partitioned matrices + # TODO: break this out so that we can simplify the linalg? + I = zeros((n+m, n+m)) # noqa:E741 + I[:n,:n] = W + I[:n,n:] = B + I[n:,:n] = B.T + + A = zeros((m+n,1)) # zero first-order constraints + A[-m:] = benchmark # adding up constraints + X = solve(I,A) + X = X[:-m] # drop the lagrange multipliers + + # handle extrapolation + if q > 0: + # get last Benchmark-Indicator ratio + bi = X[n-1]/indicator[n-1] + extrapolated = bi * indicator[n:] + X = r_[X,extrapolated] + + return X.squeeze() + + +if __name__ == "__main__": + #these will be the tests + # from IMF paper + + # quarterly data + indicator = np.array([98.2, 100.8, 102.2, 100.8, 99.0, 101.6, + 102.7, 101.5, 100.5, 103.0, 103.5, 101.5]) + # two annual observations + benchmark = np.array([4000.,4161.4]) + x_imf = dentonm(indicator, benchmark, freq="aq") + + imf_stata = np.array([969.8, 998.4, 1018.3, 1013.4, 1007.2, 1042.9, + 1060.3, 1051.0, 1040.6, 1066.5, 1071.7, 1051.0]) + np.testing.assert_almost_equal(imf_stata, x_imf, 1) + + # Denton example + zQ = np.array([50,100,150,100] * 5) + Y = np.array([500,400,300,400,500]) + x_denton = dentonm(zQ, Y, freq="aq") + x_stata = np.array([64.334796,127.80616,187.82379,120.03526,56.563894, + 105.97568,147.50144,89.958987,40.547201,74.445963, + 108.34473,76.66211,42.763347,94.14664,153.41596, + 109.67405,58.290761,122.62556,190.41409,128.66959]) + + +""" +# Examples from the Denton 1971 paper +k = 4 +m = 5 +n = m*k + +zQ = [50,100,150,100] * m +Y = [500,400,300,400,500] + +A = np.eye(n) +B = block_diag(*(np.ones((k,1)),)*m) + +r = Y - B.T.dot(zQ) +#Ainv = inv(A) +Ainv = A # shortcut for identity +C = Ainv.dot(B).dot(inv(B.T.dot(Ainv).dot(B))) +x = zQ + C.dot(r) + +# minimize first difference d(x-z) +R = linalg.tri(n, dtype=float) # R is tril so actually R.T in paper +Ainv = R.dot(R.T) +C = Ainv.dot(B).dot(inv(B.T.dot(Ainv).dot(B))) +x1 = zQ + C.dot(r) + +# minimize the second difference d**2(x-z) +Ainv = R.dot(Ainv).dot(R.T) +C = Ainv.dot(B).dot(inv(B.T.dot(Ainv).dot(B))) +x12 = zQ + C.dot(r) + + +# # do it proportionately (x-z)/z +Z = np.diag(zQ) +Ainv = np.eye(n) +C = Z.dot(Ainv).dot(Z).dot(B).dot(inv(B.T.dot(Z).dot(Ainv).dot(Z).dot(B))) +x11 = zQ + C.dot(r) + +# do it proportionately with differencing d((x-z)/z) +Ainv = R.dot(R.T) +C = Z.dot(Ainv).dot(Z).dot(B).dot(inv(B.T.dot(Z).dot(Ainv).dot(Z).dot(B))) +x111 = zQ + C.dot(r) + +x_stata = np.array([64.334796,127.80616,187.82379,120.03526,56.563894, + 105.97568,147.50144,89.958987,40.547201,74.445963, + 108.34473,76.66211,42.763347,94.14664,153.41596, + 109.67405,58.290761,122.62556,190.41409,128.66959]) +""" diff --git a/statsmodels/tsa/interp/tests/__init__.py b/statsmodels/tsa/interp/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/interp/tests/test_denton.py b/statsmodels/tsa/interp/tests/test_denton.py new file mode 100644 index 0000000..7651458 --- /dev/null +++ b/statsmodels/tsa/interp/tests/test_denton.py @@ -0,0 +1,30 @@ +import numpy as np +from statsmodels.tsa.interp import dentonm + + +def test_denton_quarterly(): + # Data and results taken from IMF paper + indicator = np.array([98.2, 100.8, 102.2, 100.8, 99.0, 101.6, + 102.7, 101.5, 100.5, 103.0, 103.5, 101.5]) + benchmark = np.array([4000.,4161.4]) + x_imf = dentonm(indicator, benchmark, freq="aq") + imf_stata = np.array([969.8, 998.4, 1018.3, 1013.4, 1007.2, 1042.9, + 1060.3, 1051.0, 1040.6, 1066.5, 1071.7, 1051.0]) + np.testing.assert_almost_equal(imf_stata, x_imf, 1) + + +def test_denton_quarterly2(): + # Test denton vs stata. Higher precision than other test. + zQ = np.array([50,100,150,100] * 5) + Y = np.array([500,400,300,400,500]) + x_denton = dentonm(zQ, Y, freq="aq") + x_stata = np.array([64.334796,127.80616,187.82379,120.03526,56.563894, + 105.97568,147.50144,89.958987,40.547201,74.445963, + 108.34473,76.66211,42.763347,94.14664,153.41596, + 109.67405,58.290761,122.62556,190.41409,128.66959]) + np.testing.assert_almost_equal(x_denton, x_stata, 5) + + +if __name__ == "__main__": + import pytest + pytest.main([__file__, '-vvs', '-x', '--pdb']) diff --git a/statsmodels/tsa/kalmanf/__init__.py b/statsmodels/tsa/kalmanf/__init__.py new file mode 100644 index 0000000..8472ada --- /dev/null +++ b/statsmodels/tsa/kalmanf/__init__.py @@ -0,0 +1,5 @@ +__all__ = ['KalmanFilter', 'test'] +from .kalmanfilter import KalmanFilter +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/tsa/kalmanf/kalman_loglike.pyx b/statsmodels/tsa/kalmanf/kalman_loglike.pyx new file mode 100644 index 0000000..70169e8 --- /dev/null +++ b/statsmodels/tsa/kalmanf/kalman_loglike.pyx @@ -0,0 +1,355 @@ +from numpy cimport float64_t, ndarray, complex128_t +from numpy import log as nplog +from numpy import (identity, dot, kron, pi, sum, zeros_like, ones, + asfortranarray) +from numpy.linalg import pinv +cimport cython +cimport numpy as cnp + +cnp.import_array() + +# included in Cython numpy headers +from numpy cimport PyArray_ZEROS +from scipy.linalg.cython_blas cimport dgemm, dgemv, zgemm, zgemv + + +ctypedef float64_t DOUBLE +ctypedef complex128_t dcomplex +cdef int FORTRAN = 1 + +cdef extern from "math.h": + double log(double x) + + +@cython.boundscheck(False) +@cython.wraparound(False) +@cython.cdivision(True) +def kalman_filter_double(double[:] y not None, + unsigned int k, unsigned int p, unsigned int q, + int r, unsigned int nobs, + double[::1, :] Z_mat, + double[::1, :] R_mat, + double[::1, :] T_mat): + """ + Cython version of the Kalman filter recursions for an ARMA process. + """ + cdef cnp.npy_intp yshape[2] + yshape[0] = nobs + yshape[1] = 1 + cdef cnp.npy_intp mshape[2] + mshape[0] = r + mshape[1] = 1 + cdef cnp.npy_intp r2shape[2] + r2shape[0] = r + r2shape[1] = r + + cdef: + int one = 1 # univariate filter + int ldz = Z_mat.strides[1] / sizeof(DOUBLE) + int ldt = T_mat.strides[1] / sizeof(DOUBLE) + int ldr = R_mat.strides[1] / sizeof(DOUBLE) + # forecast errors + ndarray[DOUBLE, ndim=2] v = PyArray_ZEROS(2, yshape, cnp.NPY_DOUBLE, + FORTRAN) + # store variance of forecast errors + double[::1, :] F = ones((nobs,1), order='F') # variance of forecast errors + double loglikelihood = 0 + int i = 0 + # initial state + double[::1, :] alpha = PyArray_ZEROS(2, mshape, cnp.NPY_DOUBLE, FORTRAN) + int lda = alpha.strides[1] / sizeof(DOUBLE) + # initial variance + double[::1, :] P = asfortranarray(dot(pinv(identity(r**2) - + kron(T_mat, T_mat)), + dot(R_mat, + R_mat.T).ravel('F') + ).reshape(r, r, order='F')) + int ldp = P.strides[1] / sizeof(DOUBLE) + double F_mat = 0. + double Finv = 0. + double v_mat = 0 + double[::1, :] K = PyArray_ZEROS(2, r2shape, cnp.NPY_DOUBLE, FORTRAN) + int ldk = K.strides[1] / sizeof(DOUBLE) + + # pre-allocate some tmp arrays for the dgemm calls + # T_mat rows x P cols + double[::1, :] tmp1 = PyArray_ZEROS(2, r2shape, cnp.NPY_DOUBLE, FORTRAN) + int ldt1 = tmp1.strides[1] / sizeof(DOUBLE) + double[::1, :] tmp2 = zeros_like(alpha, order='F') # K rows x v_mat cols + int ldt2 = tmp2.strides[1] / sizeof(DOUBLE) + double[::1, :] L = zeros_like(T_mat, order='F') + int ldl = L.strides[1] / sizeof(DOUBLE) + # T_mat rows x P cols + double[::1, :] tmp3 = PyArray_ZEROS(2, r2shape, cnp.NPY_DOUBLE, FORTRAN) + int ldt3 = tmp3.strides[1] / sizeof(DOUBLE) + + double alph = 1.0 + double beta = 0.0 + + # NOTE: not sure about just checking F_mat[0, 0], didn't appear to work + while not F_mat == 1. and i < nobs: + # Predict + # Z_mat is just a selector matrix + v_mat = y[i] - alpha[0, 0] + v[i, 0] = v_mat + + # one-step forecast error covariance + # Z_mat is just a selector matrix + F_mat = P[0, 0] + F[i,0] = F_mat + Finv = 1. / F_mat # always scalar for univariate series + + # compute Kalman Gain, K equivalent to: + # K = np.dot(np.dot(np.dot(T_mat, P), Z_mat.T), Finv) + # in two steps: + # tmp1 = np.dot(T_mat, P) + # K = Finv * tmp1.dot(Z_mat.T) + dgemm("N", "N", &r, &r, &r, + &alph, &T_mat[0, 0], &ldt, &P[0, 0], &ldp, + &beta, &tmp1[0, 0], &ldt1) + dgemv("N", &r, &r, + &Finv, &tmp1[0, 0], &ldt1, &Z_mat[0, 0], &one, + &beta, &K[0, 0], &one) + + # update state; equivalent to: + # alpha = np.dot(T_mat, alpha) + np.dot(K, v_mat) + # in two steps: + # tmp2 = np.dot(T_mat, alpha) + # alpha = tmp2 + np.dot(K, v_mat) + dgemv("N", &r, &r, + &alph, &T_mat[0, 0], &ldt, &alpha[0, 0], &one, + &beta, &tmp2[0, 0], &one) + for ii in range(r): + alpha[ii, 0] = K[ii, 0] * v_mat + tmp2[ii, 0] + + # The next block is equivalent to: + # L = T_mat - np.dot(K, Z_mat) + # in two steps: + # L = np.dot(K, Z_mat) + # L = T_mat - L + dgemm("N", "N", &r, &r, &one, + &alph, &K[0, 0], &ldk, &Z_mat[0, 0], &ldz, + &beta, &L[0, 0], &ldl) + for jj in range(r): + for kk in range(r): + L[jj, kk] = T_mat[jj, kk] - L[jj, kk] + + # The next block computes P equivalent to: + # P = np.dot(np.dot(T_mat, P), L.T) + np.dot(R_mat, R_mat.T) + # in three steps: + # tmp5 = np.dot(R_mat, R_mat.T) + # tmp3 = np.dot(T_mat, P) + # P = np.dot(tmp3, L.T) + tmp5 + dgemm("N", "N", &r, &r, &r, + &alph, &T_mat[0, 0], &ldt, &P[0, 0], &ldp, + &beta, &tmp3[0, 0], &ldt3) + dgemm("N", "T", &r, &r, &one, + &alph, &R_mat[0, 0], &ldr, &R_mat[0, 0], &ldr, + &beta, &P[0, 0], &ldp) + dgemm("N", "T", &r, &r, &r, + &alph, &tmp3[0, 0], &ldt3, &L[0, 0], &ldl, + &alph, &P[0, 0], &ldp) + + loglikelihood += log(F_mat) + i += 1 + + for i in xrange(i,nobs): + v_mat = y[i] - alpha[0, 0] + v[i, 0] = v_mat + # The next block is equivalent to: + # alpha = np.dot(T_mat, alpha) + np.dot(K, v_mat) + # in two steps: + # tmp2 = np.dot(T_mat, alpha) + # alpha = np.dot(K, v_mat) + tmp2 + dgemm("N", "N", &r, &one, &r, + &alph, &T_mat[0, 0], &ldt, &alpha[0, 0], &lda, + &beta, &tmp2[0, 0], &ldt2) + for ii in range(r): + alpha[ii, 0] = K[ii, 0] * v_mat + tmp2[ii, 0] + return v, F, loglikelihood + + +@cython.boundscheck(False) +@cython.wraparound(False) +@cython.cdivision(True) +def kalman_filter_complex(dcomplex[:] y, + unsigned int k, unsigned int p, unsigned int q, + int r, unsigned int nobs, + dcomplex[::1, :] Z_mat, + dcomplex[::1, :] R_mat, + dcomplex[::1, :] T_mat): + """ + Cython version of the Kalman filter recursions for an ARMA process. + """ + cdef cnp.npy_intp yshape[2] + yshape[0] = nobs + yshape[1] = 1 + cdef cnp.npy_intp mshape[2] + mshape[0] = r + mshape[1] = 1 + cdef cnp.npy_intp r2shape[2] + r2shape[0] = r + r2shape[1] = r + + + cdef: + int one = 1 + int ldz = Z_mat.strides[1] / sizeof(dcomplex) + int ldt = T_mat.strides[1] / sizeof(dcomplex) + int ldr = R_mat.strides[1] / sizeof(dcomplex) + # forecast errors + ndarray[complex, ndim=2] v = PyArray_ZEROS(2, yshape, + cnp.NPY_CDOUBLE, FORTRAN) + # store variance of forecast errors + dcomplex[::1, :] F = ones((nobs, 1), dtype=complex, order='F') + dcomplex loglikelihood = 0 + 0j + int i = 0 + # initial state + dcomplex[::1, :] alpha = PyArray_ZEROS(2, mshape, + cnp.NPY_CDOUBLE, FORTRAN) + int lda = alpha.strides[1] / sizeof(dcomplex) + # initial variance + dcomplex[::1, :] P = asfortranarray(dot(pinv(identity(r**2) - kron(T_mat, T_mat)), + dot(R_mat, R_mat.T).ravel('F')).reshape(r, r, order='F')) + int ldp = P.strides[1] / sizeof(dcomplex) + dcomplex F_mat = 0 + dcomplex Finv = 0 + dcomplex v_mat = 0 + dcomplex[::1, :] K = PyArray_ZEROS(2, mshape, cnp.NPY_CDOUBLE, FORTRAN) + int ldk = K.strides[1] / sizeof(dcomplex) + + # pre-allocate some tmp arrays for the dgemm calls + dcomplex[::1, :] tmp1 = PyArray_ZEROS(2, r2shape, + cnp.NPY_CDOUBLE, FORTRAN) + int ldt1 = tmp1.strides[1] / sizeof(dcomplex) + dcomplex[::1, :] tmp2 = zeros_like(alpha, order='F') + int ldt2 = tmp2.strides[1] / sizeof(dcomplex) + dcomplex[::1, :] L = zeros_like(T_mat, dtype=complex, order='F') + int ldl = L.strides[1] / sizeof(dcomplex) + # T_mat rows x P cols + dcomplex[::1, :] tmp3 = PyArray_ZEROS(2, r2shape, + cnp.NPY_CDOUBLE, FORTRAN) + int ldt3 = tmp3.strides[1] / sizeof(dcomplex) + + dcomplex alph = 1 + 0j + dcomplex beta = 0 + + while F_mat != 1 and i < nobs: + # Z_mat is just a selector matrix + v_mat = y[i] - alpha[0,0] + v[i, 0] = v_mat + + # one-step forecast error covariance + # Z_mat is just a selctor matrix so the below is equivalent + F_mat = P[0, 0] + F[i, 0] = F_mat + Finv = 1. / F_mat # always scalar for univariate series + + # compute Kalman Gain K, equivalent to: + # K = np.dot(np.dot(np.dot(T_mat, P), Z_mat.T), Finv) + # in two steps: + # tmp1 = np.dot(T_mat, P) + # K = Finv * tmp1.dot(Z_mat.T) + zgemm("N", "N", &r, &r, &r, + &alph, &T_mat[0, 0], &ldt, &P[0, 0], &ldp, + &beta, &tmp1[0, 0], &ldt1) + zgemv("N", &r, &r, + &Finv, &tmp1[0, 0], &ldt1, &Z_mat[0, 0], &one, + &beta, &K[0, 0], &one) + + # update state, equivalent to: + # alpha = np.dot(T_mat, alpha) + np.dot(K, v_mat) + # in two steps: + # tmp2 = np.dot(T_mat, alpha) + # alpha = tmp2 + np.dot(K, v_mat) + zgemv("N", &r, &r, + &alph, &T_mat[0, 0], &ldt, &alpha[0, 0], &one, + &beta, &tmp2[0, 0], &one) + for ii in range(r): + alpha[ii, 0] = K[ii, 0] * v_mat + tmp2[ii, 0] + + # The next block is equivalent to: + # L = T_mat - np.dot(K, Z_mat) + # in two steps: + # L = np.dot(K, Z_mat) + # L = T_mat - L + zgemm("N", "N", &r, &r, &one, + &alph, &K[0, 0], &ldk, &Z_mat[0, 0], &ldz, + &beta, &L[0, 0], &ldl) + for jj in range(r): + for kk in range(r): + L[jj, kk] = T_mat[jj, kk] - L[jj, kk] + + # The next block computes P equivalent to: + # P = np.dot(np.dot(T_mat, P), L.T) + np.dot(R_mat, R_mat.T) + # in three steps: + # tmp5 = np.dot(R_mat, R_mat.T) + # tmp3 = np.dot(T_mat, P) + # P = np.dot(tmp3, L.T) + tmp5 + zgemm("N", "N", &r, &r, &r, + &alph, &T_mat[0, 0], &ldt, &P[0, 0], &ldp, + &beta, &tmp3[0, 0], &ldt3) + zgemm("N", "T", &r, &r, &one, + &alph, &R_mat[0, 0], &ldr, &R_mat[0, 0], &ldr, + &beta, &P[0, 0], &ldp) + zgemm("N", "T", &r, &r, &r, + &alph, &tmp3[0, 0], &ldt3, &L[0, 0], &ldl, + &alph, &P[0, 0], &ldp) + + loglikelihood += nplog(F_mat) + i += 1 + + for i in xrange(i, nobs): + # Z_mat is just a selector + v_mat = y[i] - alpha[0, 0] + v[i, 0] = v_mat + # The next block is equivalent to: + # alpha = np.dot(T_mat, alpha) + np.dot(K, v_mat) + # in two steps: + # tmp2 = np.dot(T_mat, alpha) + # alpha = np.dot(K, v_mat) + tmp2 + zgemm("N", "N", &r, &one, &r, + &alph, &T_mat[0, 0], &ldt, &alpha[0, 0], &lda, + &beta, &tmp2[0, 0], &ldt2) + for ii in range(r): + alpha[ii, 0] = K[ii, 0] * v_mat + tmp2[ii, 0] + + return v, F, loglikelihood + + +@cython.boundscheck(False) +@cython.wraparound(False) +@cython.cdivision(True) +def kalman_loglike_double(double[:] y, unsigned int k, unsigned int p, + unsigned int q, int r, unsigned int nobs, + double[::1, :] Z_mat, + double[::1, :] R_mat, + double[::1, :] T_mat): + """ + Cython version of the Kalman filter recursions for an ARMA process. + """ + v, F, loglikelihood = kalman_filter_double(y, k, p, q, r, nobs, + Z_mat, R_mat, T_mat) + sigma2 = 1. / nobs * sum(v**2 / F) + loglike = -.5 * (loglikelihood + nobs * log(sigma2)) + loglike -= nobs / 2. * (log(2 * pi) + 1) + return loglike, sigma2 + + +@cython.boundscheck(False) +@cython.wraparound(False) +@cython.cdivision(True) +def kalman_loglike_complex(dcomplex[:] y, unsigned int k, unsigned int p, + unsigned int q, int r, unsigned int nobs, + dcomplex[::1, :] Z_mat, + dcomplex[::1, :] R_mat, + dcomplex[::1, :] T_mat): + """ + Cython version of the Kalman filter recursions for an ARMA process. + """ + v, F, loglikelihood = kalman_filter_complex(y, k, p, q, r, nobs, + Z_mat, R_mat, T_mat) + sigma2 = 1. / nobs * sum(v**2 / F) + loglike = -.5 * (loglikelihood + nobs * nplog(sigma2)) + loglike -= nobs / 2. * (log(2 * pi) + 1) + return loglike, sigma2 diff --git a/statsmodels/tsa/kalmanf/kalmanfilter.py b/statsmodels/tsa/kalmanf/kalmanfilter.py new file mode 100644 index 0000000..39ed80e --- /dev/null +++ b/statsmodels/tsa/kalmanf/kalmanfilter.py @@ -0,0 +1,232 @@ +""" +State Space Analysis using the Kalman Filter + +References +----------- +Durbin., J and Koopman, S.J. `Time Series Analysis by State Space Methods`. + Oxford, 2001. + +Hamilton, J.D. `Time Series Analysis`. Princeton, 1994. + +Harvey, A.C. `Forecasting, Structural Time Series Models and the Kalman Filter`. + Cambridge, 1989. + +Notes +----- +This file follows Hamilton's notation pretty closely. +The ARMA Model class follows Durbin and Koopman notation. +Harvey uses Durbin and Koopman notation. +""" # noqa:E501 +# Anderson and Moore `Optimal Filtering` provides a more efficient algorithm +# namely the information filter +# if the number of series is much greater than the number of states +# e.g., with a DSGE model. See Also +# http://www.federalreserve.gov/pubs/oss/oss4/aimindex.html +# Harvey notes that the square root filter will keep P_t pos. def. but +# is not strictly needed outside of the engineering (long series) +from __future__ import print_function +import numpy as np + +from . import kalman_loglike + +# Fast filtering and smoothing for multivariate state space models +# and The Riksbank -- Strid and Walentin (2008) +# Block Kalman filtering for large-scale DSGE models +# but this is obviously macro model specific + + +class KalmanFilter(object): + r""" + Kalman Filter code intended for use with the ARMA model. + + Notes + ----- + The notation for the state-space form follows Durbin and Koopman (2001). + + The observation equations is + + .. math:: y_{t} = Z_{t}\alpha_{t} + \epsilon_{t} + + The state equation is + + .. math:: \alpha_{t+1} = T_{t}\alpha_{t} + R_{t}\eta_{t} + + For the present purposed \epsilon_{t} is assumed to always be zero. + """ + + @classmethod + def T(cls, params, r, k, p): # F in Hamilton + """ + The coefficient matrix for the state vector in the state equation. + + Its dimension is r+k x r+k. + + Parameters + ---------- + r : int + In the context of the ARMA model r is max(p,q+1) where p is the + AR order and q is the MA order. + k : int + The number of exogenous variables in the ARMA model, including + the constant if appropriate. + p : int + The AR coefficient in an ARMA model. + + References + ---------- + Durbin and Koopman Section 3.7. + """ + arr = np.zeros((r, r), dtype=params.dtype, order="F") + # allows for complex-step derivative + params_padded = np.zeros(r, dtype=params.dtype, + order="F") + # handle zero coefficients if necessary + # NOTE: squeeze added for cg optimizer + params_padded[:p] = params[k:p + k] + arr[:, 0] = params_padded + # first p params are AR coeffs w/ short params + arr[:-1, 1:] = np.eye(r - 1) + return arr + + @classmethod + def R(cls, params, r, k, q, p): # R is H in Hamilton + """ + The coefficient matrix for the state vector in the observation + equation. + + Its dimension is r+k x 1. + + Parameters + ---------- + r : int + In the context of the ARMA model r is max(p,q+1) where p is the + AR order and q is the MA order. + k : int + The number of exogenous variables in the ARMA model, including + the constant if appropriate. + q : int + The MA order in an ARMA model. + p : int + The AR order in an ARMA model. + + References + ---------- + Durbin and Koopman Section 3.7. + """ + arr = np.zeros((r, 1), dtype=params.dtype, order="F") + # this allows zero coefficients + # dtype allows for compl. der. + arr[1:q + 1, :] = params[p + k:p + k + q][:, None] + arr[0] = 1.0 + return arr + + @classmethod + def Z(cls, r): + """ + Returns the Z selector matrix in the observation equation. + + Parameters + ---------- + r : int + In the context of the ARMA model r is max(p,q+1) where p is the + AR order and q is the MA order. + + Notes + ----- + Currently only returns a 1 x r vector [1,0,0,...0]. Will need to + be generalized when the Kalman Filter becomes more flexible. + """ + arr = np.zeros((1, r), order="F") + arr[:, 0] = 1. + return arr + + @classmethod + def geterrors(cls, y, k, k_ar, k_ma, k_lags, nobs, Z_mat, m, R_mat, T_mat, + paramsdtype): + """ + Returns just the errors of the Kalman Filter + """ + if np.issubdtype(paramsdtype, np.float64): + return kalman_loglike.kalman_filter_double( + y, k, k_ar, k_ma, k_lags, int(nobs), Z_mat, R_mat, T_mat)[0] + elif np.issubdtype(paramsdtype, np.complex128): + return kalman_loglike.kalman_filter_complex( + y, k, k_ar, k_ma, k_lags, int(nobs), Z_mat, R_mat, T_mat)[0] + else: + raise TypeError("dtype %s is not supported " + "Please file a bug report" % paramsdtype) + + @classmethod + def _init_kalman_state(cls, params, arma_model): + """ + Returns the system matrices and other info needed for the + Kalman Filter recursions + """ + paramsdtype = params.dtype + y = arma_model.endog.copy().astype(paramsdtype) + k = arma_model.k_exog + arma_model.k_trend + nobs = arma_model.nobs + k_ar = arma_model.k_ar + k_ma = arma_model.k_ma + k_lags = arma_model.k_lags + + if arma_model.transparams: + newparams = arma_model._transparams(params) + else: + newparams = params # don't need a copy if not modified. + + if k > 0: + y -= np.dot(arma_model.exog, newparams[:k]) + + # system matrices + Z_mat = cls.Z(k_lags) + m = Z_mat.shape[1] # r + R_mat = cls.R(newparams, k_lags, k, k_ma, k_ar) + T_mat = cls.T(newparams, k_lags, k, k_ar) + return (y, k, nobs, k_ar, k_ma, k_lags, + newparams, Z_mat, m, R_mat, T_mat, paramsdtype) + + @classmethod + def loglike(cls, params, arma_model, set_sigma2=True): + """ + The loglikelihood for an ARMA model using the Kalman Filter recursions. + + Parameters + ---------- + params : array + The coefficients of the ARMA model, assumed to be in the order of + trend variables and `k` exogenous coefficients, the `p` AR + coefficients, then the `q` MA coefficients. + arma_model : `statsmodels.tsa.arima.ARMA` instance + A reference to the ARMA model instance. + set_sigma2 : bool, optional + True if arma_model.sigma2 should be set. + Note that sigma2 will be computed in any case, + but it will be discarded if set_sigma2 is False. + + Notes + ----- + This works for both real valued and complex valued parameters. The + complex values being used to compute the numerical derivative. If + available will use a Cython version of the Kalman Filter. + """ + # TODO: see section 3.4.6 in Harvey for computing the derivatives in + # the recursion itself. + # TODO: this won't work for time-varying parameters + (y, k, nobs, k_ar, k_ma, k_lags, newparams, Z_mat, m, R_mat, T_mat, + paramsdtype) = cls._init_kalman_state(params, arma_model) + if np.issubdtype(paramsdtype, np.float64): + loglike, sigma2 = kalman_loglike.kalman_loglike_double( + y, k, k_ar, k_ma, k_lags, int(nobs), + Z_mat, R_mat, T_mat) + elif np.issubdtype(paramsdtype, np.complex128): + loglike, sigma2 = kalman_loglike.kalman_loglike_complex( + y, k, k_ar, k_ma, k_lags, int(nobs), + Z_mat.astype(complex), R_mat, T_mat) + else: + raise TypeError("This dtype %s is not supported " + " Please files a bug report." % paramsdtype) + if set_sigma2: + arma_model.sigma2 = sigma2 + + return loglike diff --git a/statsmodels/tsa/mlemodel.py b/statsmodels/tsa/mlemodel.py new file mode 100644 index 0000000..2b4c54c --- /dev/null +++ b/statsmodels/tsa/mlemodel.py @@ -0,0 +1,81 @@ +"""Base Classes for Likelihood Models in time series analysis + +Warning: imports numdifftools + + + +Created on Sun Oct 10 15:00:47 2010 + +Author: josef-pktd +License: BSD + +""" + + +try: + import numdifftools as ndt +except ImportError: + pass + +from statsmodels.base.model import LikelihoodModel + + +#copied from sandbox/regression/mle.py +#TODO: I take it this is only a stub and should be included in another +# model class? +class TSMLEModel(LikelihoodModel): + """ + univariate time series model for estimation with maximum likelihood + + Note: This is not working yet + """ + + def __init__(self, endog, exog=None): + #need to override p,q (nar,nma) correctly + super(TSMLEModel, self).__init__(endog, exog) + #set default arma(1,1) + self.nar = 1 + self.nma = 1 + #self.initialize() + + def geterrors(self, params): + raise NotImplementedError + + def loglike(self, params): + """ + Loglikelihood for timeseries model + + Notes + ----- + needs to be overwritten by subclass + """ + raise NotImplementedError + + def score(self, params): + """ + Score vector for Arma model + """ + #return None + #print params + jac = ndt.Jacobian(self.loglike, stepMax=1e-4) + return jac(params)[-1] + + def hessian(self, params): + """ + Hessian of arma model. Currently uses numdifftools + """ + #return None + Hfun = ndt.Jacobian(self.score, stepMax=1e-4) + return Hfun(params)[-1] + + def fit(self, start_params=None, maxiter=5000, method='fmin', tol=1e-08): + '''estimate model by minimizing negative loglikelihood + + does this need to be overwritten ? + ''' + if start_params is None and hasattr(self, '_start_params'): + start_params = self._start_params + #start_params = np.concatenate((0.05*np.ones(self.nar + self.nma), [1])) + mlefit = super(TSMLEModel, self).fit(start_params=start_params, + maxiter=maxiter, method=method, tol=tol) + return mlefit diff --git a/statsmodels/tsa/regime_switching/__init__.py b/statsmodels/tsa/regime_switching/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/tsa/regime_switching/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/tsa/regime_switching/_hamilton_filter.pxd b/statsmodels/tsa/regime_switching/_hamilton_filter.pxd new file mode 100644 index 0000000..89b3214 --- /dev/null +++ b/statsmodels/tsa/regime_switching/_hamilton_filter.pxd @@ -0,0 +1,48 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +Hamilton filter declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cimport numpy as np + +cdef shamilton_filter_iteration(int t, int k_regimes, int order, + np.float32_t [:,:] transition, + np.float32_t [:] weighted_likelihoods, + np.float32_t [:] prev_filtered_marginalized_probabilities, + np.float32_t [:] conditional_likelihoods, + np.float32_t [:] joint_likelihoods, + np.float32_t [:] curr_predicted_joint_probabilities, + np.float32_t [:] prev_filtered_joint_probabilities, + np.float32_t [:] curr_filtered_joint_probabilities) +cdef dhamilton_filter_iteration(int t, int k_regimes, int order, + np.float64_t [:,:] transition, + np.float64_t [:] weighted_likelihoods, + np.float64_t [:] prev_filtered_marginalized_probabilities, + np.float64_t [:] conditional_likelihoods, + np.float64_t [:] joint_likelihoods, + np.float64_t [:] curr_predicted_joint_probabilities, + np.float64_t [:] prev_filtered_joint_probabilities, + np.float64_t [:] curr_filtered_joint_probabilities) +cdef chamilton_filter_iteration(int t, int k_regimes, int order, + np.complex64_t [:,:] transition, + np.complex64_t [:] weighted_likelihoods, + np.complex64_t [:] prev_filtered_marginalized_probabilities, + np.complex64_t [:] conditional_likelihoods, + np.complex64_t [:] joint_likelihoods, + np.complex64_t [:] curr_predicted_joint_probabilities, + np.complex64_t [:] prev_filtered_joint_probabilities, + np.complex64_t [:] curr_filtered_joint_probabilities) +cdef zhamilton_filter_iteration(int t, int k_regimes, int order, + np.complex128_t [:,:] transition, + np.complex128_t [:] weighted_likelihoods, + np.complex128_t [:] prev_filtered_marginalized_probabilities, + np.complex128_t [:] conditional_likelihoods, + np.complex128_t [:] joint_likelihoods, + np.complex128_t [:] curr_predicted_joint_probabilities, + np.complex128_t [:] prev_filtered_joint_probabilities, + np.complex128_t [:] curr_filtered_joint_probabilities) diff --git a/statsmodels/tsa/regime_switching/_hamilton_filter.pyx.in b/statsmodels/tsa/regime_switching/_hamilton_filter.pyx.in new file mode 100644 index 0000000..6bb302f --- /dev/null +++ b/statsmodels/tsa/regime_switching/_hamilton_filter.pyx.in @@ -0,0 +1,136 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +Hamilton filter + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# Typical imports +import numpy as np +import warnings +cimport numpy as np +cimport cython + +cdef int FORTRAN = 1 + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} + +def {{prefix}}hamilton_filter(int nobs, int k_regimes, int order, + {{cython_type}} [:,:,:] regime_transition, + {{cython_type}} [:,:] conditional_likelihoods, + {{cython_type}} [:] joint_likelihoods, + {{cython_type}} [:,:] predicted_joint_probabilities, + {{cython_type}} [:,:] filtered_joint_probabilities): + cdef int t, i, j, k, ix, regime_transition_t = 0, time_varying_regime_transition + cdef: + # k_regimes_order_m1 is not used when order == 0. + int k_regimes_order_m1 = k_regimes**max(order - 1, 0) + int k_regimes_order = k_regimes**order + int k_regimes_order_p1 = k_regimes**(order + 1) + {{cython_type}} [:] weighted_likelihoods, tmp_filtered_marginalized_probabilities + + time_varying_regime_transition = regime_transition.shape[2] > 1 + weighted_likelihoods = np.zeros(k_regimes_order_p1, dtype={{dtype}}) + # tmp_filtered_marginalized_probabilities is not used if order == 0. + tmp_filtered_marginalized_probabilities = np.zeros(k_regimes_order, dtype={{dtype}}) + + for t in range(nobs): + if time_varying_regime_transition: + regime_transition_t = t + + if order > 0: + # Collapse filtered joint probabilities over the last dimension + # Pr[S_{t-1}, ..., S_{t-r} | t-1] = \sum_{ S_{t-r-1} } Pr[S_{t-1}, ..., S_{t-r}, S_{t-r-1} | t-1] + ix = 0 + tmp_filtered_marginalized_probabilities[:] = 0 + for j in range(k_regimes_order): + for i in range(k_regimes): + tmp_filtered_marginalized_probabilities[j] = ( + tmp_filtered_marginalized_probabilities[j] + + filtered_joint_probabilities[ix, t]) + ix = ix + 1 + + {{prefix}}hamilton_filter_iteration(t, k_regimes, order, + regime_transition[:, :, regime_transition_t], + weighted_likelihoods, + tmp_filtered_marginalized_probabilities, + conditional_likelihoods[:, t], + joint_likelihoods, + predicted_joint_probabilities[:, t], + filtered_joint_probabilities[:, t], + filtered_joint_probabilities[:, t+1]) + + +cdef {{prefix}}hamilton_filter_iteration(int t, int k_regimes, int order, + {{cython_type}} [:,:] regime_transition, + {{cython_type}} [:] weighted_likelihoods, + {{cython_type}} [:] prev_filtered_marginalized_probabilities, + {{cython_type}} [:] conditional_likelihoods, + {{cython_type}} [:] joint_likelihoods, + {{cython_type}} [:] curr_predicted_joint_probabilities, + {{cython_type}} [:] prev_filtered_joint_probabilities, + {{cython_type}} [:] curr_filtered_joint_probabilities): + cdef int i, j, k, ix + cdef: + int k_regimes_order_m1 = k_regimes**(order - 1) + int k_regimes_order = k_regimes**order + int k_regimes_order_p1 = k_regimes**(order + 1) + + # Compute predicted joint probabilities + # Pr[S_t, S_{t-1}, ..., S_{t-r} | t-1] = Pr[S_t | S_{t-1}] * Pr[S_{t-1}, ..., S_{t-r} | t-1] + if order > 0: + ix = 0 + for i in range(k_regimes): + for j in range(k_regimes): + for k in range(k_regimes_order_m1): + curr_predicted_joint_probabilities[ix] = ( + prev_filtered_marginalized_probabilities[j * k_regimes_order_m1 + k] * + regime_transition[i, j]) + ix += 1 + else: + curr_predicted_joint_probabilities[:] = 0 + for i in range(k_regimes): + for j in range(k_regimes): + # There appears to be a bug in cython for += with complex types. + # https://groups.google.com/forum/#!topic/cython-users/jD8U6AuYKS0 + curr_predicted_joint_probabilities[i] = ( + curr_predicted_joint_probabilities[i] + + prev_filtered_joint_probabilities[j] * regime_transition[i, j]) + + + # Compute weighted likelihoods f(y_t | S_t, S_{t-1}, ..., S_{t-r}, t-1) * Pr[S_t, S_{t-1}, ..., S_{t-r} | t-1] + # and the joint likelihood f(y_t | t-1) + for i in range(k_regimes_order_p1): + weighted_likelihoods[i] = ( + curr_predicted_joint_probabilities[i] * + conditional_likelihoods[i]) + joint_likelihoods[t] = joint_likelihoods[t] + weighted_likelihoods[i] + + # Compute filtered joint probabilities + # Pr[S_t, S_{t-1}, ..., S_{t-r} | t] = ( + # f(y_t | S_t, S_{t-1}, ..., S_{t-r}, t-1) * + # Pr[S_t, S_{t-1}, ..., S_{t-r} | t-1] / + # f(y_t | t-1)) + for i in range(k_regimes_order_p1): + if joint_likelihoods[t] == 0: + curr_filtered_joint_probabilities[i] = np.inf + else: + curr_filtered_joint_probabilities[i] = ( + weighted_likelihoods[i] / joint_likelihoods[t]) + +{{endfor}} diff --git a/statsmodels/tsa/regime_switching/_kim_smoother.pxd b/statsmodels/tsa/regime_switching/_kim_smoother.pxd new file mode 100644 index 0000000..757775f --- /dev/null +++ b/statsmodels/tsa/regime_switching/_kim_smoother.pxd @@ -0,0 +1,71 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +Kim smoother declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cimport numpy as np + +cpdef skim_smoother(int nobs, int k_regimes, int order, + np.float32_t [:,:,:] regime_transition, + np.float32_t [:,:] predicted_joint_probabilities, + np.float32_t [:,:] filtered_joint_probabilities, + np.float32_t [:,:] smoothed_joint_probabilities) + +cpdef dkim_smoother(int nobs, int k_regimes, int order, + np.float64_t [:,:,:] regime_transition, + np.float64_t [:,:] predicted_joint_probabilities, + np.float64_t [:,:] filtered_joint_probabilities, + np.float64_t [:,:] smoothed_joint_probabilities) + +cpdef ckim_smoother(int nobs, int k_regimes, int order, + np.complex64_t [:,:,:] regime_transition, + np.complex64_t [:,:] predicted_joint_probabilities, + np.complex64_t [:,:] filtered_joint_probabilities, + np.complex64_t [:,:] smoothed_joint_probabilities) + +cpdef zkim_smoother(int nobs, int k_regimes, int order, + np.complex128_t [:,:,:] regime_transition, + np.complex128_t [:,:] predicted_joint_probabilities, + np.complex128_t [:,:] filtered_joint_probabilities, + np.complex128_t [:,:] smoothed_joint_probabilities) + +cdef skim_smoother_iteration(int k_regimes, int order, + np.float32_t [:] tmp_joint_probabilities, + np.float32_t [:] tmp_probabilities_fraction, + np.float32_t [:,:] regime_transition, + np.float32_t [:] predicted_joint_probabilities, + np.float32_t [:] filtered_joint_probabilities, + np.float32_t [:] prev_smoothed_joint_probabilities, + np.float32_t [:] next_smoothed_joint_probabilities) + +cdef dkim_smoother_iteration(int k_regimes, int order, + np.float64_t [:] tmp_joint_probabilities, + np.float64_t [:] tmp_probabilities_fraction, + np.float64_t [:,:] regime_transition, + np.float64_t [:] predicted_joint_probabilities, + np.float64_t [:] filtered_joint_probabilities, + np.float64_t [:] prev_smoothed_joint_probabilities, + np.float64_t [:] next_smoothed_joint_probabilities) + +cdef ckim_smoother_iteration(int k_regimes, int order, + np.complex64_t [:] tmp_joint_probabilities, + np.complex64_t [:] tmp_probabilities_fraction, + np.complex64_t [:,:] regime_transition, + np.complex64_t [:] predicted_joint_probabilities, + np.complex64_t [:] filtered_joint_probabilities, + np.complex64_t [:] prev_smoothed_joint_probabilities, + np.complex64_t [:] next_smoothed_joint_probabilities) + +cdef zkim_smoother_iteration(int k_regimes, int order, + np.complex128_t [:] tmp_joint_probabilities, + np.complex128_t [:] tmp_probabilities_fraction, + np.complex128_t [:,:] regime_transition, + np.complex128_t [:] predicted_joint_probabilities, + np.complex128_t [:] filtered_joint_probabilities, + np.complex128_t [:] prev_smoothed_joint_probabilities, + np.complex128_t [:] next_smoothed_joint_probabilities) diff --git a/statsmodels/tsa/regime_switching/_kim_smoother.pyx.in b/statsmodels/tsa/regime_switching/_kim_smoother.pyx.in new file mode 100644 index 0000000..15e6a57 --- /dev/null +++ b/statsmodels/tsa/regime_switching/_kim_smoother.pyx.in @@ -0,0 +1,117 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +Kim smoother + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# Typical imports +import numpy as np +import warnings +cimport numpy as np +cimport cython + +cdef int FORTRAN = 1 + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} + +cpdef {{prefix}}kim_smoother(int nobs, int k_regimes, int order, + {{cython_type}} [:,:,:] regime_transition, + {{cython_type}} [:,:] predicted_joint_probabilities, + {{cython_type}} [:,:] filtered_joint_probabilities, + {{cython_type}} [:,:] smoothed_joint_probabilities): + cdef int t, i, j, k, ix, regime_transition_t = 0, time_varying_regime_transition + cdef: + int k_regimes_order_m1 = k_regimes**(order - 1) + int k_regimes_order = k_regimes**order + int k_regimes_order_p1 = k_regimes**(order + 1) + int k_regimes_order_p2 = k_regimes**(order + 2) + {{cython_type}} [:] tmp_joint_probabilities, tmp_probabilities_fraction + + time_varying_regime_transition = regime_transition.shape[2] > 1 + tmp_joint_probabilities = np.zeros(k_regimes_order_p2, dtype={{dtype}}) + tmp_probabilities_fraction = np.zeros(k_regimes_order_p1, dtype={{dtype}}) + + # S_T, S_{T-1}, ..., S_{T-r} | T + smoothed_joint_probabilities[:, nobs-1] = filtered_joint_probabilities[:, nobs-1] + + for t in range(nobs - 2, -1, -1): + if time_varying_regime_transition: + regime_transition_t = t + 1 + + {{prefix}}kim_smoother_iteration(k_regimes, order, + tmp_joint_probabilities, + tmp_probabilities_fraction, + regime_transition[:, :, regime_transition_t], + predicted_joint_probabilities[:, t+1], + filtered_joint_probabilities[:, t], + smoothed_joint_probabilities[:, t+1], + smoothed_joint_probabilities[:, t]) + + +cdef {{prefix}}kim_smoother_iteration(int k_regimes, int order, + {{cython_type}} [:] tmp_joint_probabilities, + {{cython_type}} [:] tmp_probabilities_fraction, + {{cython_type}} [:,:] regime_transition, + {{cython_type}} [:] predicted_joint_probabilities, + {{cython_type}} [:] filtered_joint_probabilities, + {{cython_type}} [:] prev_smoothed_joint_probabilities, + {{cython_type}} [:] next_smoothed_joint_probabilities): + cdef int t, i, j, k, ix + cdef: + int k_regimes_order_m1 = k_regimes**(order - 1) + int k_regimes_order = k_regimes**order + int k_regimes_order_p1 = k_regimes**(order + 1) + int k_regimes_order_p2 = k_regimes**(order + 2) + + # Pr[S_{t+1}, S_t, ..., S_{t-r+1} | t] = Pr[S_{t+1} | S_t] * Pr[S_t, ..., S_{t-r+1} | t] + ix = 0 + for i in range(k_regimes): + for j in range(k_regimes): + for k in range(k_regimes_order): + tmp_joint_probabilities[ix] = ( + filtered_joint_probabilities[j * k_regimes_order + k] * + regime_transition[i, j]) + ix += 1 + + # S_{t+1}, S_t, ..., S_{t-r+2} | T / S_{t+1}, S_t, ..., S_{t-r+2} | t + for i in range(k_regimes_order_p1): + if predicted_joint_probabilities[i] == 0: + tmp_probabilities_fraction[i] = np.inf + else: + tmp_probabilities_fraction[i] = ( + prev_smoothed_joint_probabilities[i] / + predicted_joint_probabilities[i]) + + # S_{t+1}, S_t, ..., S_{t-r+1} | T + ix = 0 + for i in range(k_regimes_order_p1): + for j in range(k_regimes): + tmp_joint_probabilities[ix] = ( + tmp_probabilities_fraction[i] * + tmp_joint_probabilities[ix]) + ix = ix + 1 + + for i in range(k_regimes_order_p1): + for j in range(k_regimes): + ix = j * k_regimes_order_p1 + i + next_smoothed_joint_probabilities[i] = ( + next_smoothed_joint_probabilities[i] + + tmp_joint_probabilities[ix]) + +{{endfor}} diff --git a/statsmodels/tsa/regime_switching/markov_autoregression.py b/statsmodels/tsa/regime_switching/markov_autoregression.py new file mode 100644 index 0000000..a38d250 --- /dev/null +++ b/statsmodels/tsa/regime_switching/markov_autoregression.py @@ -0,0 +1,492 @@ +""" +Markov switching autoregression models + +Author: Chad Fulton +License: BSD-3 +""" + +from __future__ import division, absolute_import, print_function + +import numpy as np +import statsmodels.base.wrapper as wrap + +from statsmodels.tsa.tsatools import lagmat +from statsmodels.tsa.regime_switching import ( + markov_switching, markov_regression) +from statsmodels.tsa.statespace.tools import ( + constrain_stationary_univariate, unconstrain_stationary_univariate) + + +class MarkovAutoregression(markov_regression.MarkovRegression): + r""" + Markov switching regression model + + Parameters + ---------- + endog : array_like + The endogenous variable. + k_regimes : integer + The number of regimes. + order : integer + The order of the autoregressive lag polynomial. + trend : {'nc', 'c', 't', 'ct'} + Whether or not to include a trend. To include an constant, time trend, + or both, set `trend='c'`, `trend='t'`, or `trend='ct'`. For no trend, + set `trend='nc'`. Default is a constant. + exog : array_like, optional + Array of exogenous regressors, shaped nobs x k. + exog_tvtp : array_like, optional + Array of exogenous or lagged variables to use in calculating + time-varying transition probabilities (TVTP). TVTP is only used if this + variable is provided. If an intercept is desired, a column of ones must + be explicitly included in this array. + switching_ar : boolean or iterable, optional + If a boolean, sets whether or not all autoregressive coefficients are + switching across regimes. If an iterable, should be of length equal + to `order`, where each element is a boolean describing whether the + corresponding coefficient is switching. Default is True. + switching_trend : boolean or iterable, optional + If a boolean, sets whether or not all trend coefficients are + switching across regimes. If an iterable, should be of length equal + to the number of trend variables, where each element is + a boolean describing whether the corresponding coefficient is + switching. Default is True. + switching_exog : boolean or iterable, optional + If a boolean, sets whether or not all regression coefficients are + switching across regimes. If an iterable, should be of length equal + to the number of exogenous variables, where each element is + a boolean describing whether the corresponding coefficient is + switching. Default is True. + switching_variance : boolean, optional + Whether or not there is regime-specific heteroskedasticity, i.e. + whether or not the error term has a switching variance. Default is + False. + + Notes + ----- + This model is new and API stability is not guaranteed, although changes + will be made in a backwards compatible way if possible. + + The model can be written as: + + .. math:: + + y_t = a_{S_t} + x_t' \beta_{S_t} + \phi_{1, S_t} + (y_{t-1} - a_{S_{t-1}} - x_{t-1}' \beta_{S_{t-1}}) + \dots + + \phi_{p, S_t} (y_{t-p} - a_{S_{t-p}} - x_{t-p}' \beta_{S_{t-p}}) + + \varepsilon_t \\ + \varepsilon_t \sim N(0, \sigma_{S_t}^2) + + i.e. the model is an autoregression with where the autoregressive + coefficients, the mean of the process (possibly including trend or + regression effects) and the variance of the error term may be switching + across regimes. + + The `trend` is accomodated by prepending columns to the `exog` array. Thus + if `trend='c'`, the passed `exog` array should not already have a column of + ones. + + References + ---------- + Kim, Chang-Jin, and Charles R. Nelson. 1999. + "State-Space Models with Regime Switching: + Classical and Gibbs-Sampling Approaches with Applications". + MIT Press Books. The MIT Press. + + """ + + def __init__(self, endog, k_regimes, order, trend='c', exog=None, + exog_tvtp=None, switching_ar=True, switching_trend=True, + switching_exog=False, switching_variance=False, + dates=None, freq=None, missing='none'): + + # Properties + self.switching_ar = switching_ar + + # Switching options + if self.switching_ar is True or self.switching_ar is False: + self.switching_ar = [self.switching_ar] * order + elif not len(self.switching_ar) == order: + raise ValueError('Invalid iterable passed to `switching_ar`.') + + # Initialize the base model + super(MarkovAutoregression, self).__init__( + endog, k_regimes, trend=trend, exog=exog, order=order, + exog_tvtp=exog_tvtp, switching_trend=switching_trend, + switching_exog=switching_exog, + switching_variance=switching_variance, dates=dates, freq=freq, + missing=missing) + + # Sanity checks + if self.nobs <= self.order: + raise ValueError('Must have more observations than the order of' + ' the autoregression.') + + # Autoregressive exog + self.exog_ar = lagmat(endog, self.order)[self.order:] + + # Reshape other datasets + self.nobs -= self.order + self.orig_endog = self.endog + self.endog = self.endog[self.order:] + if self._k_exog > 0: + self.orig_exog = self.exog + self.exog = self.exog[self.order:] + + # Reset the ModelData datasets + self.data.endog, self.data.exog = ( + self.data._convert_endog_exog(self.endog, self.exog)) + + # Reset indexes, if provided + if self.data.row_labels is not None: + self.data._cache['row_labels'] = ( + self.data.row_labels[self.order:]) + if self._index is not None: + if self._index_generated: + self._index = self._index[:-self.order] + else: + self._index = self._index[self.order:] + + # Parameters + self.parameters['autoregressive'] = self.switching_ar + + # Cache an array for holding slices + self._predict_slices = [slice(None, None, None)] * (self.order + 1) + + def predict_conditional(self, params): + """ + In-sample prediction, conditional on the current and previous regime + + Parameters + ---------- + params : array_like + Array of parameters at which to create predictions. + + Returns + ------- + predict : array_like + Array of predictions conditional on current, and possibly past, + regimes + """ + params = np.array(params, ndmin=1) + + # Prediction is based on: + # y_t = x_t beta^{(S_t)} + + # \phi_1^{(S_t)} (y_{t-1} - x_{t-1} beta^{(S_t-1)}) + ... + # \phi_p^{(S_t)} (y_{t-p} - x_{t-p} beta^{(S_t-p)}) + eps_t + if self._k_exog > 0: + xb = [] + for i in range(self.k_regimes): + coeffs = params[self.parameters[i, 'exog']] + xb.append(np.dot(self.orig_exog, coeffs)) + + predict = np.zeros( + (self.k_regimes,) * (self.order + 1) + (self.nobs,), + dtype=np.promote_types(np.float64, params.dtype)) + # Iterate over S_{t} = i + for i in range(self.k_regimes): + ar_coeffs = params[self.parameters[i, 'autoregressive']] + + # y_t - x_t beta^{(S_t)} + ix = self._predict_slices[:] + ix[0] = i + ix = tuple(ix) + if self._k_exog > 0: + predict[ix] += xb[i][self.order:] + + # Iterate over j = 2, .., p + for j in range(1, self.order + 1): + for k in range(self.k_regimes): + # This gets a specific time-period / regime slice: + # S_{t} = i, S_{t-j} = k, across all other time-period / + # regime slices. + ix = self._predict_slices[:] + ix[0] = i + ix[j] = k + ix = tuple(ix) + + start = self.order - j + end = -j + if self._k_exog > 0: + predict[ix] += ar_coeffs[j-1] * ( + self.orig_endog[start:end] - xb[k][start:end]) + else: + predict[ix] += ar_coeffs[j-1] * ( + self.orig_endog[start:end]) + + return predict + + def _resid(self, params): + return self.endog - self.predict_conditional(params) + + def _conditional_likelihoods(self, params): + """ + Compute likelihoods conditional on the current period's regime and + the last `self.order` regimes. + """ + # Get the residuals + resid = self._resid(params) + + # Compute the conditional likelihoods + variance = params[self.parameters['variance']].squeeze() + if self.switching_variance: + variance = np.reshape(variance, (self.k_regimes, 1, 1)) + + conditional_likelihoods = ( + np.exp(-0.5 * resid**2 / variance) / np.sqrt(2 * np.pi * variance)) + + return conditional_likelihoods + + @property + def _res_classes(self): + return {'fit': (MarkovAutoregressionResults, + MarkovAutoregressionResultsWrapper)} + + def _em_iteration(self, params0): + """ + EM iteration + """ + # Inherited parameters + result, params1 = markov_switching.MarkovSwitching._em_iteration( + self, params0) + + tmp = np.sqrt(result.smoothed_marginal_probabilities) + + # Regression coefficients + coeffs = None + if self._k_exog > 0: + coeffs = self._em_exog(result, self.endog, self.exog, + self.parameters.switching['exog'], tmp) + for i in range(self.k_regimes): + params1[self.parameters[i, 'exog']] = coeffs[i] + + # Autoregressive + if self.order > 0: + if self._k_exog > 0: + ar_coeffs, variance = self._em_autoregressive( + result, coeffs) + else: + ar_coeffs = self._em_exog( + result, self.endog, self.exog_ar, + self.parameters.switching['autoregressive']) + variance = self._em_variance( + result, self.endog, self.exog_ar, ar_coeffs, tmp) + for i in range(self.k_regimes): + params1[self.parameters[i, 'autoregressive']] = ar_coeffs[i] + params1[self.parameters['variance']] = variance + + return result, params1 + + def _em_autoregressive(self, result, betas, tmp=None): + """ + EM step for autoregressive coefficients and variances + """ + if tmp is None: + tmp = np.sqrt(result.smoothed_marginal_probabilities) + + resid = np.zeros((self.k_regimes, self.nobs + self.order)) + resid[:] = self.orig_endog + if self._k_exog > 0: + for i in range(self.k_regimes): + resid[i] -= np.dot(self.orig_exog, betas[i]) + + # The difference between this and `_em_exog` is that here we have a + # different endog and exog for each regime + coeffs = np.zeros((self.k_regimes,) + (self.order,)) + variance = np.zeros((self.k_regimes,)) + exog = np.zeros((self.nobs, self.order)) + for i in range(self.k_regimes): + endog = resid[i, self.order:] + exog = lagmat(resid[i], self.order)[self.order:] + tmp_endog = tmp[i] * endog + tmp_exog = tmp[i][:, None] * exog + + coeffs[i] = np.dot(np.linalg.pinv(tmp_exog), tmp_endog) + + if self.switching_variance: + tmp_resid = endog - np.dot(exog, coeffs[i]) + variance[i] = (np.sum( + tmp_resid**2 * result.smoothed_marginal_probabilities[i]) / + np.sum(result.smoothed_marginal_probabilities[i])) + else: + tmp_resid = tmp_endog - np.dot(tmp_exog, coeffs[i]) + variance[i] = np.sum(tmp_resid**2) + + # Variances + if not self.switching_variance: + variance = variance.sum() / self.nobs + + return coeffs, variance + + @property + def start_params(self): + """ + (array) Starting parameters for maximum likelihood estimation. + """ + # Inherited parameters + params = markov_switching.MarkovSwitching.start_params.fget(self) + + # OLS for starting parameters + endog = self.endog.copy() + if self._k_exog > 0 and self.order > 0: + exog = np.c_[self.exog, self.exog_ar] + elif self._k_exog > 0: + exog = self.exog + elif self.order > 0: + exog = self.exog_ar + + if self._k_exog > 0 or self.order > 0: + beta = np.dot(np.linalg.pinv(exog), endog) + variance = np.var(endog - np.dot(exog, beta)) + else: + variance = np.var(endog) + + # Regression coefficients + if self._k_exog > 0: + if np.any(self.switching_coeffs): + for i in range(self.k_regimes): + params[self.parameters[i, 'exog']] = ( + beta[:self._k_exog] * (i / self.k_regimes)) + else: + params[self.parameters['exog']] = beta[:self._k_exog] + + # Autoregressive + if self.order > 0: + if np.any(self.switching_ar): + for i in range(self.k_regimes): + params[self.parameters[i, 'autoregressive']] = ( + beta[self._k_exog:] * (i / self.k_regimes)) + else: + params[self.parameters['autoregressive']] = beta[self._k_exog:] + + # Variance + if self.switching_variance: + params[self.parameters['variance']] = ( + np.linspace(variance / 10., variance, num=self.k_regimes)) + else: + params[self.parameters['variance']] = variance + + return params + + @property + def param_names(self): + """ + (list of str) List of human readable parameter names (for parameters + actually included in the model). + """ + # Inherited parameters + param_names = np.array( + markov_regression.MarkovRegression.param_names.fget(self), + dtype=object) + + # Autoregressive + if np.any(self.switching_ar): + for i in range(self.k_regimes): + param_names[self.parameters[i, 'autoregressive']] = [ + 'ar.L%d[%d]' % (j+1, i) for j in range(self.order)] + else: + param_names[self.parameters['autoregressive']] = [ + 'ar.L%d' % (j+1) for j in range(self.order)] + + return param_names.tolist() + + def transform_params(self, unconstrained): + """ + Transform unconstrained parameters used by the optimizer to constrained + parameters used in likelihood evaluation + + Parameters + ---------- + unconstrained : array_like + Array of unconstrained parameters used by the optimizer, to be + transformed. + + Returns + ------- + constrained : array_like + Array of constrained parameters which may be used in likelihood + evalation. + """ + # Inherited parameters + constrained = super(MarkovAutoregression, self).transform_params( + unconstrained) + + # Autoregressive + # TODO may provide unexpected results when some coefficients are not + # switching + for i in range(self.k_regimes): + s = self.parameters[i, 'autoregressive'] + constrained[s] = constrain_stationary_univariate( + unconstrained[s]) + + return constrained + + def untransform_params(self, constrained): + """ + Transform constrained parameters used in likelihood evaluation + to unconstrained parameters used by the optimizer + + Parameters + ---------- + constrained : array_like + Array of constrained parameters used in likelihood evalution, to be + transformed. + + Returns + ------- + unconstrained : array_like + Array of unconstrained parameters used by the optimizer. + """ + # Inherited parameters + unconstrained = super(MarkovAutoregression, self).untransform_params( + constrained) + + # Autoregressive + # TODO may provide unexpected results when some coefficients are not + # switching + for i in range(self.k_regimes): + s = self.parameters[i, 'autoregressive'] + unconstrained[s] = unconstrain_stationary_univariate( + constrained[s]) + + return unconstrained + + +class MarkovAutoregressionResults(markov_regression.MarkovRegressionResults): + r""" + Class to hold results from fitting a Markov switching autoregression model + + Parameters + ---------- + model : MarkovAutoregression instance + The fitted model instance + params : array + Fitted parameters + filter_results : HamiltonFilterResults or KimSmootherResults instance + The underlying filter and, optionally, smoother output + cov_type : string + The type of covariance matrix estimator to use. Can be one of 'approx', + 'opg', 'robust', or 'none'. + + Attributes + ---------- + model : Model instance + A reference to the model that was fit. + filter_results : HamiltonFilterResults or KimSmootherResults instance + The underlying filter and, optionally, smoother output + nobs : float + The number of observations used to fit the model. + params : array + The parameters of the model. + scale : float + This is currently set to 1.0 and not used by the model or its results. + + """ + pass + + +class MarkovAutoregressionResultsWrapper( + markov_regression.MarkovRegressionResultsWrapper): + pass +wrap.populate_wrapper(MarkovAutoregressionResultsWrapper, # noqa:E305 + MarkovAutoregressionResults) diff --git a/statsmodels/tsa/regime_switching/markov_regression.py b/statsmodels/tsa/regime_switching/markov_regression.py new file mode 100644 index 0000000..f16724a --- /dev/null +++ b/statsmodels/tsa/regime_switching/markov_regression.py @@ -0,0 +1,456 @@ +""" +Markov switching regression models + +Author: Chad Fulton +License: BSD-3 +""" + +from __future__ import division, absolute_import, print_function + +import numpy as np +import statsmodels.base.wrapper as wrap + +from statsmodels.tsa.regime_switching import markov_switching + + +class MarkovRegression(markov_switching.MarkovSwitching): + r""" + First-order k-regime Markov switching regression model + + Parameters + ---------- + endog : array_like + The endogenous variable. + k_regimes : integer + The number of regimes. + trend : {'nc', 'c', 't', 'ct'} + Whether or not to include a trend. To include an intercept, time trend, + or both, set `trend='c'`, `trend='t'`, or `trend='ct'`. For no trend, + set `trend='nc'`. Default is an intercept. + exog : array_like, optional + Array of exogenous regressors, shaped nobs x k. + order : integer, optional + The order of the model describes the dependence of the likelihood on + previous regimes. This depends on the model in question and should be + set appropriately by subclasses. + exog_tvtp : array_like, optional + Array of exogenous or lagged variables to use in calculating + time-varying transition probabilities (TVTP). TVTP is only used if this + variable is provided. If an intercept is desired, a column of ones must + be explicitly included in this array. + switching_trend : boolean or iterable, optional + If a boolean, sets whether or not all trend coefficients are + switching across regimes. If an iterable, should be of length equal + to the number of trend variables, where each element is + a boolean describing whether the corresponding coefficient is + switching. Default is True. + switching_exog : boolean or iterable, optional + If a boolean, sets whether or not all regression coefficients are + switching across regimes. If an iterable, should be of length equal + to the number of exogenous variables, where each element is + a boolean describing whether the corresponding coefficient is + switching. Default is True. + switching_variance : boolean, optional + Whether or not there is regime-specific heteroskedasticity, i.e. + whether or not the error term has a switching variance. Default is + False. + + Notes + ----- + This model is new and API stability is not guaranteed, although changes + will be made in a backwards compatible way if possible. + + The model can be written as: + + .. math:: + + y_t = a_{S_t} + x_t' \beta_{S_t} + \varepsilon_t \\ + \varepsilon_t \sim N(0, \sigma_{S_t}^2) + + i.e. the model is a dynamic linear regression where the coefficients and + the variance of the error term may be switching across regimes. + + The `trend` is accomodated by prepending columns to the `exog` array. Thus + if `trend='c'`, the passed `exog` array should not already have a column of + ones. + + References + ---------- + Kim, Chang-Jin, and Charles R. Nelson. 1999. + "State-Space Models with Regime Switching: + Classical and Gibbs-Sampling Approaches with Applications". + MIT Press Books. The MIT Press. + + """ + + def __init__(self, endog, k_regimes, trend='c', exog=None, order=0, + exog_tvtp=None, switching_trend=True, switching_exog=True, + switching_variance=False, dates=None, freq=None, + missing='none'): + + # Properties + self.trend = trend + self.switching_trend = switching_trend + self.switching_exog = switching_exog + self.switching_variance = switching_variance + + # Exogenous data + self.k_exog, exog = markov_switching.prepare_exog(exog) + + # Trend + nobs = len(endog) + self.k_trend = 0 + self._k_exog = self.k_exog + trend_exog = None + if trend == 'c': + trend_exog = np.ones((nobs, 1)) + self.k_trend = 1 + elif trend == 't': + trend_exog = (np.arange(nobs) + 1)[:, np.newaxis] + self.k_trend = 1 + elif trend == 'ct': + trend_exog = np.c_[np.ones((nobs, 1)), + (np.arange(nobs) + 1)[:, np.newaxis]] + self.k_trend = 2 + if trend_exog is not None: + exog = trend_exog if exog is None else np.c_[trend_exog, exog] + self._k_exog += self.k_trend + + # Initialize the base model + super(MarkovRegression, self).__init__( + endog, k_regimes, order=order, exog_tvtp=exog_tvtp, exog=exog, + dates=dates, freq=freq, missing=missing) + + # Switching options + if self.switching_trend is True or self.switching_trend is False: + self.switching_trend = [self.switching_trend] * self.k_trend + elif not len(self.switching_trend) == self.k_trend: + raise ValueError('Invalid iterable passed to `switching_trend`.') + if self.switching_exog is True or self.switching_exog is False: + self.switching_exog = [self.switching_exog] * self.k_exog + elif not len(self.switching_exog) == self.k_exog: + raise ValueError('Invalid iterable passed to `switching_exog`.') + + self.switching_coeffs = ( + np.r_[self.switching_trend, + self.switching_exog].astype(bool).tolist()) + + # Parameters + self.parameters['exog'] = self.switching_coeffs + self.parameters['variance'] = [1] if self.switching_variance else [0] + + def predict_conditional(self, params): + """ + In-sample prediction, conditional on the current regime + + Parameters + ---------- + params : array_like + Array of parameters at which to perform prediction. + + Returns + ------- + predict : array_like + Array of predictions conditional on current, and possibly past, + regimes + """ + params = np.array(params, ndmin=1) + + # Since in the base model the values are the same across columns, we + # only compute a single column, and then expand it below. + predict = np.zeros((self.k_regimes, self.nobs), dtype=params.dtype) + + for i in range(self.k_regimes): + # Predict + if self._k_exog > 0: + coeffs = params[self.parameters[i, 'exog']] + predict[i] = np.dot(self.exog, coeffs) + + return predict[:, None, :] + + def _resid(self, params): + predict = np.repeat(self.predict_conditional(params), + self.k_regimes, axis=1) + return self.endog - predict + + def _conditional_likelihoods(self, params): + """ + Compute likelihoods conditional on the current period's regime + """ + + # Get residuals + resid = self._resid(params) + + # Compute the conditional likelihoods + variance = params[self.parameters['variance']].squeeze() + if self.switching_variance: + variance = np.reshape(variance, (self.k_regimes, 1, 1)) + + conditional_likelihoods = ( + np.exp(-0.5 * resid**2 / variance) / np.sqrt(2 * np.pi * variance)) + + return conditional_likelihoods + + @property + def _res_classes(self): + return {'fit': (MarkovRegressionResults, + MarkovRegressionResultsWrapper)} + + def _em_iteration(self, params0): + """ + EM iteration + + Notes + ----- + This uses the inherited _em_iteration method for computing the + non-TVTP transition probabilities and then performs the EM step for + regression coefficients and variances. + """ + # Inherited parameters + result, params1 = super(MarkovRegression, self)._em_iteration(params0) + + tmp = np.sqrt(result.smoothed_marginal_probabilities) + + # Regression coefficients + coeffs = None + if self._k_exog > 0: + coeffs = self._em_exog(result, self.endog, self.exog, + self.parameters.switching['exog'], tmp) + for i in range(self.k_regimes): + params1[self.parameters[i, 'exog']] = coeffs[i] + + # Variances + params1[self.parameters['variance']] = self._em_variance( + result, self.endog, self.exog, coeffs, tmp) + # params1[self.parameters['variance']] = 0.33282116 + + return result, params1 + + def _em_exog(self, result, endog, exog, switching, tmp=None): + """ + EM step for regression coefficients + """ + k_exog = exog.shape[1] + coeffs = np.zeros((self.k_regimes, k_exog)) + + # First, estimate non-switching coefficients + if not np.all(switching): + nonswitching_exog = exog[:, ~switching] + nonswitching_coeffs = ( + np.dot(np.linalg.pinv(nonswitching_exog), endog)) + coeffs[:, ~switching] = nonswitching_coeffs + endog = endog - np.dot(nonswitching_exog, nonswitching_coeffs) + + # Next, get switching coefficients + if np.any(switching): + switching_exog = exog[:, switching] + if tmp is None: + tmp = np.sqrt(result.smoothed_marginal_probabilities) + for i in range(self.k_regimes): + tmp_endog = tmp[i] * endog + tmp_exog = tmp[i][:, np.newaxis] * switching_exog + coeffs[i, switching] = ( + np.dot(np.linalg.pinv(tmp_exog), tmp_endog)) + + return coeffs + + def _em_variance(self, result, endog, exog, betas, tmp=None): + """ + EM step for variances + """ + k_exog = 0 if exog is None else exog.shape[1] + + if self.switching_variance: + variance = np.zeros(self.k_regimes) + for i in range(self.k_regimes): + if k_exog > 0: + resid = endog - np.dot(exog, betas[i]) + else: + resid = endog + variance[i] = ( + np.sum(resid**2 * + result.smoothed_marginal_probabilities[i]) / + np.sum(result.smoothed_marginal_probabilities[i])) + else: + variance = 0 + if tmp is None: + tmp = np.sqrt(result.smoothed_marginal_probabilities) + for i in range(self.k_regimes): + tmp_endog = tmp[i] * endog + if k_exog > 0: + tmp_exog = tmp[i][:, np.newaxis] * exog + resid = tmp_endog - np.dot(tmp_exog, betas[i]) + else: + resid = tmp_endog + variance += np.sum(resid**2) + variance /= self.nobs + return variance + + @property + def start_params(self): + """ + (array) Starting parameters for maximum likelihood estimation. + + Notes + ----- + These are not very sophisticated and / or good. We set equal transition + probabilities and interpolate regression coefficients between zero and + the OLS estimates, where the interpolation is based on the regime + number. We rely heavily on the EM algorithm to quickly find much better + starting parameters, which are then used by the typical scoring + approach. + """ + # Inherited parameters + params = markov_switching.MarkovSwitching.start_params.fget(self) + + # Regression coefficients + if self._k_exog > 0: + beta = np.dot(np.linalg.pinv(self.exog), self.endog) + variance = np.var(self.endog - np.dot(self.exog, beta)) + + if np.any(self.switching_coeffs): + for i in range(self.k_regimes): + params[self.parameters[i, 'exog']] = ( + beta * (i / self.k_regimes)) + else: + params[self.parameters['exog']] = beta + else: + variance = np.var(self.endog) + + # Variances + if self.switching_variance: + params[self.parameters['variance']] = ( + np.linspace(variance / 10., variance, num=self.k_regimes)) + else: + params[self.parameters['variance']] = variance + + return params + + @property + def param_names(self): + """ + (list of str) List of human readable parameter names (for parameters + actually included in the model). + """ + # Inherited parameters + param_names = np.array( + markov_switching.MarkovSwitching.param_names.fget(self), + dtype=object) + + # Regression coefficients + if np.any(self.switching_coeffs): + for i in range(self.k_regimes): + param_names[self.parameters[i, 'exog']] = [ + '%s[%d]' % (exog_name, i) for exog_name in self.exog_names] + else: + param_names[self.parameters['exog']] = self.exog_names + + # Variances + if self.switching_variance: + for i in range(self.k_regimes): + param_names[self.parameters[i, 'variance']] = 'sigma2[%d]' % i + else: + param_names[self.parameters['variance']] = 'sigma2' + + return param_names.tolist() + + def transform_params(self, unconstrained): + """ + Transform unconstrained parameters used by the optimizer to constrained + parameters used in likelihood evaluation + + Parameters + ---------- + unconstrained : array_like + Array of unconstrained parameters used by the optimizer, to be + transformed. + + Returns + ------- + constrained : array_like + Array of constrained parameters which may be used in likelihood + evalation. + """ + # Inherited parameters + constrained = super(MarkovRegression, self).transform_params( + unconstrained) + + # Nothing to do for regression coefficients + constrained[self.parameters['exog']] = ( + unconstrained[self.parameters['exog']]) + + # Force variances to be positive + constrained[self.parameters['variance']] = ( + unconstrained[self.parameters['variance']]**2) + + return constrained + + def untransform_params(self, constrained): + """ + Transform constrained parameters used in likelihood evaluation + to unconstrained parameters used by the optimizer + + Parameters + ---------- + constrained : array_like + Array of constrained parameters used in likelihood evalution, to be + transformed. + + Returns + ------- + unconstrained : array_like + Array of unconstrained parameters used by the optimizer. + """ + # Inherited parameters + unconstrained = super(MarkovRegression, self).untransform_params( + constrained) + + # Nothing to do for regression coefficients + unconstrained[self.parameters['exog']] = ( + constrained[self.parameters['exog']]) + + # Force variances to be positive + unconstrained[self.parameters['variance']] = ( + constrained[self.parameters['variance']]**0.5) + + return unconstrained + + +class MarkovRegressionResults(markov_switching.MarkovSwitchingResults): + r""" + Class to hold results from fitting a Markov switching regression model + + Parameters + ---------- + model : MarkovRegression instance + The fitted model instance + params : array + Fitted parameters + filter_results : HamiltonFilterResults or KimSmootherResults instance + The underlying filter and, optionally, smoother output + cov_type : string + The type of covariance matrix estimator to use. Can be one of 'approx', + 'opg', 'robust', or 'none'. + + Attributes + ---------- + model : Model instance + A reference to the model that was fit. + filter_results : HamiltonFilterResults or KimSmootherResults instance + The underlying filter and, optionally, smoother output + nobs : float + The number of observations used to fit the model. + params : array + The parameters of the model. + scale : float + This is currently set to 1.0 and not used by the model or its results. + + """ + pass + + +class MarkovRegressionResultsWrapper( + markov_switching.MarkovSwitchingResultsWrapper): + pass +wrap.populate_wrapper(MarkovRegressionResultsWrapper, # noqa:E305 + MarkovRegressionResults) diff --git a/statsmodels/tsa/regime_switching/markov_switching.py b/statsmodels/tsa/regime_switching/markov_switching.py new file mode 100644 index 0000000..cb5dd51 --- /dev/null +++ b/statsmodels/tsa/regime_switching/markov_switching.py @@ -0,0 +1,2312 @@ +""" +Markov switching models + +Author: Chad Fulton +License: BSD-3 +""" +from __future__ import division, absolute_import, print_function +from statsmodels.compat.scipy import logsumexp + +import warnings +from collections import OrderedDict + +import numpy as np +import pandas as pd + +from statsmodels.tools.tools import Bunch +from statsmodels.tools.numdiff import approx_fprime_cs, approx_hess_cs +from statsmodels.tools.decorators import cache_readonly +from statsmodels.tools.eval_measures import aic, bic, hqic +from statsmodels.tools.tools import pinv_extended +from statsmodels.tools.sm_exceptions import EstimationWarning + +import statsmodels.base.wrapper as wrap +from statsmodels.base.data import PandasData + +import statsmodels.tsa.base.tsa_model as tsbase +from statsmodels.tsa.statespace.tools import find_best_blas_type, prepare_exog + +from statsmodels.tsa.regime_switching._hamilton_filter import ( + shamilton_filter, dhamilton_filter, chamilton_filter, zhamilton_filter) +from statsmodels.tsa.regime_switching._kim_smoother import ( + skim_smoother, dkim_smoother, ckim_smoother, zkim_smoother) + +prefix_hamilton_filter_map = { + 's': shamilton_filter, 'd': dhamilton_filter, + 'c': chamilton_filter, 'z': zhamilton_filter +} + +prefix_kim_smoother_map = { + 's': skim_smoother, 'd': dkim_smoother, + 'c': ckim_smoother, 'z': zkim_smoother +} + + +def _logistic(x): + """ + Note that this is not a vectorized function + """ + x = np.array(x) + # np.exp(x) / (1 + np.exp(x)) + if x.ndim == 0: + y = np.reshape(x, (1, 1, 1)) + # np.exp(x[i]) / (1 + np.sum(np.exp(x[:]))) + elif x.ndim == 1: + y = np.reshape(x, (len(x), 1, 1)) + # np.exp(x[i,t]) / (1 + np.sum(np.exp(x[:,t]))) + elif x.ndim == 2: + y = np.reshape(x, (x.shape[0], 1, x.shape[1])) + # np.exp(x[i,j,t]) / (1 + np.sum(np.exp(x[:,j,t]))) + elif x.ndim == 3: + y = x + else: + raise NotImplementedError + + tmp = np.c_[np.zeros((y.shape[-1], y.shape[1], 1)), y.T].T + evaluated = np.reshape(np.exp(y - logsumexp(tmp, axis=0)), x.shape) + + return evaluated + + +def _partials_logistic(x): + """ + Note that this is not a vectorized function + """ + tmp = _logistic(x) + + # k + if tmp.ndim == 0: + return tmp - tmp**2 + # k x k + elif tmp.ndim == 1: + partials = np.diag(tmp - tmp**2) + # k x k x t + elif tmp.ndim == 2: + partials = [np.diag(tmp[:, t] - tmp[:, t]**2) + for t in range(tmp.shape[1])] + shape = tmp.shape[1], tmp.shape[0], tmp.shape[0] + partials = np.concatenate(partials).reshape(shape).transpose((1, 2, 0)) + # k x k x j x t + else: + partials = [[np.diag(tmp[:, j, t] - tmp[:, j, t]**2) + for t in range(tmp.shape[2])] + for j in range(tmp.shape[1])] + shape = tmp.shape[1], tmp.shape[2], tmp.shape[0], tmp.shape[0] + partials = np.concatenate(partials).reshape(shape).transpose( + (2, 3, 0, 1)) + + for i in range(tmp.shape[0]): + for j in range(i): + partials[i, j, ...] = -tmp[i, ...] * tmp[j, ...] + partials[j, i, ...] = partials[i, j, ...] + return partials + + +def py_hamilton_filter(initial_probabilities, regime_transition, + conditional_likelihoods, model_order): + """ + Hamilton filter using pure Python + + Parameters + ---------- + initial_probabilities : array + Array of initial probabilities, shaped (k_regimes,) giving the + distribution of the regime process at time t = -order where order + is a nonnegative integer. + regime_transition : array + Matrix of regime transition probabilities, shaped either + (k_regimes, k_regimes, 1) or if there are time-varying transition + probabilities (k_regimes, k_regimes, nobs + order). Entry [i, j, + t] contains the probability of moving from j at time t-1 to i at + time t, so each matrix regime_transition[:, :, t] should be left + stochastic. The first order entries and initial_probabilities are + used to produce the initial joint distribution of dimension order + + 1 at time t=0. + conditional_likelihoods : array + Array of likelihoods conditional on the last `order+1` regimes, + shaped (k_regimes,)*(order + 1) + (nobs,). + + Returns + ------- + filtered_marginal_probabilities : array + Array containing Pr[S_t=s_t | Y_t] - the probability of being in each + regime conditional on time t information. Shaped (k_regimes, nobs). + predicted_joint_probabilities : array + Array containing Pr[S_t=s_t, ..., S_{t-order}=s_{t-order} | Y_{t-1}] - + the joint probability of the current and previous `order` periods + being in each combination of regimes conditional on time t-1 + information. Shaped (k_regimes,) * (order + 1) + (nobs,). + joint_likelihoods : array + Array of likelihoods condition on time t information, shaped (nobs,). + filtered_joint_probabilities : array + Array containing Pr[S_t=s_t, ..., S_{t-order}=s_{t-order} | Y_{t}] - + the joint probability of the current and previous `order` periods + being in each combination of regimes conditional on time t + information. Shaped (k_regimes,) * (order + 1) + (nobs,). + + """ + + # Dimensions + k_regimes = len(initial_probabilities) + nobs = conditional_likelihoods.shape[-1] + order = conditional_likelihoods.ndim - 2 + dtype = conditional_likelihoods.dtype + + # Check for compatible shapes. + incompatible_shapes = ( + regime_transition.shape[-1] not in (1, nobs + model_order) + or regime_transition.shape[:2] != (k_regimes, k_regimes) + or conditional_likelihoods.shape[0] != k_regimes) + if incompatible_shapes: + raise ValueError('Arguments do not have compatible shapes') + + # Storage + # Pr[S_t = s_t | Y_t] + filtered_marginal_probabilities = ( + np.zeros((k_regimes, nobs), dtype=dtype)) + # Pr[S_t = s_t, ... S_{t-r} = s_{t-r} | Y_{t-1}] + predicted_joint_probabilities = np.zeros( + (k_regimes,) * (order + 1) + (nobs,), dtype=dtype) + # f(y_t | Y_{t-1}) + joint_likelihoods = np.zeros((nobs,), dtype) + # Pr[S_t = s_t, ... S_{t-r} = s_{t-r} | Y_t] + filtered_joint_probabilities = np.zeros( + (k_regimes,) * (order + 1) + (nobs + 1,), dtype=dtype) + + # Initial probabilities + filtered_marginal_probabilities[:, 0] = initial_probabilities + tmp = np.copy(initial_probabilities) + shape = (k_regimes, k_regimes) + for i in range(order): + tmp = np.reshape(regime_transition[..., i], shape + (1,) * i) * tmp + filtered_joint_probabilities[..., 0] = tmp + + # Check that regime_transition is oriented correctly. + if not np.allclose(np.sum(regime_transition, axis=0), 1): + raise ValueError('regime_transition does not contain ' + 'left stochastic matrices.') + + # Reshape regime_transition so we can use broadcasting + shape = (k_regimes, k_regimes) + shape += (1,) * (order-1) + shape += (regime_transition.shape[-1],) + regime_transition = np.reshape(regime_transition, shape) + + # Get appropriate subset of transition matrix + if regime_transition.shape[-1] > 1: + regime_transition = regime_transition[..., model_order:] + + # Hamilton filter iterations + transition_t = 0 + for t in range(nobs): + if regime_transition.shape[-1] > 1: + transition_t = t + + # S_t, S_{t-1}, ..., S_{t-r} | t-1, stored at zero-indexed location t + if order > 0: + predicted_joint_probabilities[..., t] = ( + # S_t | S_{t-1} + regime_transition[..., transition_t] * + # S_{t-1}, S_{t-2}, ..., S_{t-r} | t-1 + filtered_joint_probabilities[..., t].sum(axis=-1)) + else: + predicted_joint_probabilities[..., t] = ( + np.dot(regime_transition[..., transition_t], + filtered_joint_probabilities[..., t])) + + # f(y_t, S_t, ..., S_{t-r} | t-1) + tmp = (conditional_likelihoods[..., t] * + predicted_joint_probabilities[..., t]) + # f(y_t | t-1) + joint_likelihoods[t] = np.sum(tmp) + + # S_t, S_{t-1}, ..., S_{t-r} | t, stored at index t+1 + filtered_joint_probabilities[..., t+1] = ( + tmp / joint_likelihoods[t]) + + # S_t | t + filtered_marginal_probabilities = filtered_joint_probabilities[..., 1:] + for i in range(1, filtered_marginal_probabilities.ndim - 1): + filtered_marginal_probabilities = np.sum( + filtered_marginal_probabilities, axis=-2) + + return (filtered_marginal_probabilities, predicted_joint_probabilities, + joint_likelihoods, filtered_joint_probabilities[..., 1:]) + + +def cy_hamilton_filter(initial_probabilities, regime_transition, + conditional_likelihoods, model_order): + """ + Hamilton filter using Cython inner loop + + Parameters + ---------- + initial_probabilities : array + Array of initial probabilities, shaped (k_regimes,) giving the + distribution of the regime process at time t = -order where order + is a nonnegative integer. + regime_transition : array + Matrix of regime transition probabilities, shaped either + (k_regimes, k_regimes, 1) or if there are time-varying transition + probabilities (k_regimes, k_regimes, nobs + order). Entry [i, j, + t] contains the probability of moving from j at time t-1 to i at + time t, so each matrix regime_transition[:, :, t] should be left + stochastic. The first order entries and initial_probabilities are + used to produce the initial joint distribution of dimension order + + 1 at time t=0. + conditional_likelihoods : array + Array of likelihoods conditional on the last `order+1` regimes, + shaped (k_regimes,)*(order + 1) + (nobs,). + + Returns + ------- + filtered_marginal_probabilities : array + Array containing Pr[S_t=s_t | Y_t] - the probability of being in each + regime conditional on time t information. Shaped (k_regimes, nobs). + predicted_joint_probabilities : array + Array containing Pr[S_t=s_t, ..., S_{t-order}=s_{t-order} | Y_{t-1}] - + the joint probability of the current and previous `order` periods + being in each combination of regimes conditional on time t-1 + information. Shaped (k_regimes,) * (order + 1) + (nobs,). + joint_likelihoods : array + Array of likelihoods condition on time t information, shaped (nobs,). + filtered_joint_probabilities : array + Array containing Pr[S_t=s_t, ..., S_{t-order}=s_{t-order} | Y_{t}] - + the joint probability of the current and previous `order` periods + being in each combination of regimes conditional on time t + information. Shaped (k_regimes,) * (order + 1) + (nobs,). + """ + + # Dimensions + k_regimes = len(initial_probabilities) + nobs = conditional_likelihoods.shape[-1] + order = conditional_likelihoods.ndim - 2 + dtype = conditional_likelihoods.dtype + + # Check for compatible shapes. + incompatible_shapes = ( + regime_transition.shape[-1] not in (1, nobs + model_order) + or regime_transition.shape[:2] != (k_regimes, k_regimes) + or conditional_likelihoods.shape[0] != k_regimes) + if incompatible_shapes: + raise ValueError('Arguments do not have compatible shapes') + + # Storage + # Pr[S_t = s_t | Y_t] + filtered_marginal_probabilities = ( + np.zeros((k_regimes, nobs), dtype=dtype)) + # Pr[S_t = s_t, ... S_{t-r} = s_{t-r} | Y_{t-1}] + # Has k_regimes^(order+1) elements + predicted_joint_probabilities = np.zeros( + (k_regimes,) * (order + 1) + (nobs,), dtype=dtype) + # f(y_t | Y_{t-1}) + joint_likelihoods = np.zeros((nobs,), dtype) + # Pr[S_t = s_t, ... S_{t-r+1} = s_{t-r+1} | Y_t] + # Has k_regimes^order elements + filtered_joint_probabilities = np.zeros( + (k_regimes,) * (order + 1) + (nobs + 1,), dtype=dtype) + + # Initial probabilities + filtered_marginal_probabilities[:, 0] = initial_probabilities + tmp = np.copy(initial_probabilities) + shape = (k_regimes, k_regimes) + transition_t = 0 + for i in range(order): + if regime_transition.shape[-1] > 1: + transition_t = i + tmp = np.reshape(regime_transition[..., transition_t], + shape + (1,) * i) * tmp + filtered_joint_probabilities[..., 0] = tmp + + # Get appropriate subset of transition matrix + if regime_transition.shape[-1] > 1: + regime_transition = regime_transition[..., model_order:] + + # Run Cython filter iterations + prefix, dtype, _ = find_best_blas_type(( + regime_transition, conditional_likelihoods, joint_likelihoods, + predicted_joint_probabilities, filtered_joint_probabilities)) + func = prefix_hamilton_filter_map[prefix] + func(nobs, k_regimes, order, regime_transition, + conditional_likelihoods.reshape(k_regimes**(order+1), nobs), + joint_likelihoods, + predicted_joint_probabilities.reshape(k_regimes**(order+1), nobs), + filtered_joint_probabilities.reshape(k_regimes**(order+1), nobs+1)) + + # S_t | t + filtered_marginal_probabilities = filtered_joint_probabilities[..., 1:] + for i in range(1, filtered_marginal_probabilities.ndim - 1): + filtered_marginal_probabilities = np.sum( + filtered_marginal_probabilities, axis=-2) + + return (filtered_marginal_probabilities, predicted_joint_probabilities, + joint_likelihoods, filtered_joint_probabilities[..., 1:]) + + +def py_kim_smoother(regime_transition, predicted_joint_probabilities, + filtered_joint_probabilities): + """ + Kim smoother using pure Python + + Parameters + ---------- + regime_transition : array + Matrix of regime transition probabilities, shaped either + (k_regimes, k_regimes, 1) or if there are time-varying transition + probabilities (k_regimes, k_regimes, nobs). + predicted_joint_probabilities : array + Array containing Pr[S_t=s_t, ..., S_{t-order}=s_{t-order} | Y_{t-1}] - + the joint probability of the current and previous `order` periods + being in each combination of regimes conditional on time t-1 + information. Shaped (k_regimes,) * (order + 1) + (nobs,). + filtered_joint_probabilities : array + Array containing Pr[S_t=s_t, ..., S_{t-order}=s_{t-order} | Y_{t}] - + the joint probability of the current and previous `order` periods + being in each combination of regimes conditional on time t + information. Shaped (k_regimes,) * (order + 1) + (nobs,). + + Returns + ------- + smoothed_joint_probabilities : array + Array containing Pr[S_t=s_t, ..., S_{t-order}=s_{t-order} | Y_T] - + the joint probability of the current and previous `order` periods + being in each combination of regimes conditional on all information. + Shaped (k_regimes,) * (order + 1) + (nobs,). + smoothed_marginal_probabilities : array + Array containing Pr[S_t=s_t | Y_T] - the probability of being in each + regime conditional on all information. Shaped (k_regimes, nobs). + """ + + # Dimensions + k_regimes = filtered_joint_probabilities.shape[0] + nobs = filtered_joint_probabilities.shape[-1] + order = filtered_joint_probabilities.ndim - 2 + dtype = filtered_joint_probabilities.dtype + + # Storage + smoothed_joint_probabilities = np.zeros( + (k_regimes,) * (order + 1) + (nobs,), dtype=dtype) + smoothed_marginal_probabilities = np.zeros((k_regimes, nobs), dtype=dtype) + + # S_T, S_{T-1}, ..., S_{T-r} | T + smoothed_joint_probabilities[..., -1] = ( + filtered_joint_probabilities[..., -1]) + + # Reshape transition so we can use broadcasting + shape = (k_regimes, k_regimes) + shape += (1,) * (order) + shape += (regime_transition.shape[-1],) + regime_transition = np.reshape(regime_transition, shape) + + # Get appropriate subset of transition matrix + if regime_transition.shape[-1] == nobs + order: + regime_transition = regime_transition[..., order:] + + # Kim smoother iterations + transition_t = 0 + for t in range(nobs - 2, -1, -1): + if regime_transition.shape[-1] > 1: + transition_t = t + 1 + + # S_{t+1}, S_t, ..., S_{t-r+1} | t + # x = predicted_joint_probabilities[..., t] + x = (filtered_joint_probabilities[..., t] * + regime_transition[..., transition_t]) + # S_{t+1}, S_t, ..., S_{t-r+2} | T / S_{t+1}, S_t, ..., S_{t-r+2} | t + y = (smoothed_joint_probabilities[..., t+1] / + predicted_joint_probabilities[..., t+1]) + # S_t, S_{t-1}, ..., S_{t-r+1} | T + smoothed_joint_probabilities[..., t] = (x * y[..., None]).sum(axis=0) + + # Get smoothed marginal probabilities S_t | T by integrating out + # S_{t-k+1}, S_{t-k+2}, ..., S_{t-1} + smoothed_marginal_probabilities = smoothed_joint_probabilities + for i in range(1, smoothed_marginal_probabilities.ndim - 1): + smoothed_marginal_probabilities = np.sum( + smoothed_marginal_probabilities, axis=-2) + + return smoothed_joint_probabilities, smoothed_marginal_probabilities + + +def cy_kim_smoother(regime_transition, predicted_joint_probabilities, + filtered_joint_probabilities): + """ + Kim smoother using Cython inner loop + + Parameters + ---------- + regime_transition : array + Matrix of regime transition probabilities, shaped either + (k_regimes, k_regimes, 1) or if there are time-varying transition + probabilities (k_regimes, k_regimes, nobs). + predicted_joint_probabilities : array + Array containing Pr[S_t=s_t, ..., S_{t-order}=s_{t-order} | Y_{t-1}] - + the joint probability of the current and previous `order` periods + being in each combination of regimes conditional on time t-1 + information. Shaped (k_regimes,) * (order + 1) + (nobs,). + filtered_joint_probabilities : array + Array containing Pr[S_t=s_t, ..., S_{t-order}=s_{t-order} | Y_{t}] - + the joint probability of the current and previous `order` periods + being in each combination of regimes conditional on time t + information. Shaped (k_regimes,) * (order + 1) + (nobs,). + + Returns + ------- + smoothed_joint_probabilities : array + Array containing Pr[S_t=s_t, ..., S_{t-order}=s_{t-order} | Y_T] - + the joint probability of the current and previous `order` periods + being in each combination of regimes conditional on all information. + Shaped (k_regimes,) * (order + 1) + (nobs,). + smoothed_marginal_probabilities : array + Array containing Pr[S_t=s_t | Y_T] - the probability of being in each + regime conditional on all information. Shaped (k_regimes, nobs). + """ + + # Dimensions + k_regimes = filtered_joint_probabilities.shape[0] + nobs = filtered_joint_probabilities.shape[-1] + order = filtered_joint_probabilities.ndim - 2 + dtype = filtered_joint_probabilities.dtype + + # Storage + smoothed_joint_probabilities = np.zeros( + (k_regimes,) * (order + 1) + (nobs,), dtype=dtype) + + # Get appropriate subset of transition matrix + if regime_transition.shape[-1] == nobs + order: + regime_transition = regime_transition[..., order:] + + # Run Cython smoother iterations + prefix, dtype, _ = find_best_blas_type(( + regime_transition, predicted_joint_probabilities, + filtered_joint_probabilities)) + func = prefix_kim_smoother_map[prefix] + func(nobs, k_regimes, order, regime_transition, + predicted_joint_probabilities.reshape(k_regimes**(order+1), nobs), + filtered_joint_probabilities.reshape(k_regimes**(order+1), nobs), + smoothed_joint_probabilities.reshape(k_regimes**(order+1), nobs)) + + # Get smoothed marginal probabilities S_t | T by integrating out + # S_{t-k+1}, S_{t-k+2}, ..., S_{t-1} + smoothed_marginal_probabilities = smoothed_joint_probabilities + for i in range(1, smoothed_marginal_probabilities.ndim - 1): + smoothed_marginal_probabilities = np.sum( + smoothed_marginal_probabilities, axis=-2) + + return smoothed_joint_probabilities, smoothed_marginal_probabilities + + +class MarkovSwitchingParams(object): + """ + Class to hold parameters in Markov switching models + + Parameters + ---------- + k_regimes : int + The number of regimes between which parameters may switch. + + Notes + ----- + + The purpose is to allow selecting parameter indexes / slices based on + parameter type, regime number, or both. + + Parameters are lexicographically ordered in the following way: + + 1. Named type string (e.g. "autoregressive") + 2. Number (e.g. the first autoregressive parameter, then the second) + 3. Regime (if applicable) + + Parameter blocks are set using dictionary setter notation where the key + is the named type string and the value is a list of boolean values + indicating whether a given parameter is switching or not. + + For example, consider the following code: + + parameters = MarkovSwitchingParams(k_regimes=2) + parameters['regime_transition'] = [1,1] + parameters['exog'] = [0, 1] + + This implies the model has 7 parameters: 4 "regime_transition"-related + parameters (2 parameters that each switch according to regimes) and 3 + "exog"-related parameters (1 parameter that does not switch, and one 1 that + does). + + The order of parameters is then: + + 1. The first "regime_transition" parameter, regime 0 + 2. The first "regime_transition" parameter, regime 1 + 3. The second "regime_transition" parameter, regime 1 + 4. The second "regime_transition" parameter, regime 1 + 5. The first "exog" parameter + 6. The second "exog" parameter, regime 0 + 7. The second "exog" parameter, regime 1 + + Retrieving indexes / slices is done through dictionary getter notation. + There are three options for the dictionary key: + + - Regime number (zero-indexed) + - Named type string (e.g. "autoregressive") + - Regime number and named type string + + In the above example, consider the following getters: + + >>> parameters[0] + array([0, 2, 4, 6]) + >>> parameters[1] + array([1, 3, 5, 6]) + >>> parameters['exog'] + slice(4, 7, None) + >>> parameters[0, 'exog'] + [4, 6] + >>> parameters[1, 'exog'] + [4, 7] + + Notice that in the last two examples, both lists of indexes include 4. + That's because that is the index of the the non-switching first "exog" + parameter, which should be selected regardless of the regime. + + In addition to the getter, the `k_parameters` attribute is an OrderedDict + with the named type strings as the keys. It can be used to get the total + number of parameters of each type: + + >>> parameters.k_parameters['regime_transition'] + 4 + >>> parameters.k_parameters['exog'] + 3 + + """ + def __init__(self, k_regimes): + self.k_regimes = k_regimes + + self.k_params = 0 + self.k_parameters = OrderedDict() + self.switching = OrderedDict() + self.slices_purpose = OrderedDict() + self.relative_index_regime_purpose = [ + OrderedDict() for i in range(self.k_regimes)] + self.index_regime_purpose = [ + OrderedDict() for i in range(self.k_regimes)] + self.index_regime = [[] for i in range(self.k_regimes)] + + def __getitem__(self, key): + _type = type(key) + + # Get a slice for a block of parameters by purpose + if _type is str: + return self.slices_purpose[key] + # Get a slice for a block of parameters by regime + elif _type is int: + return self.index_regime[key] + elif _type is tuple: + if not len(key) == 2: + raise IndexError('Invalid index') + if type(key[1]) == str and type(key[0]) == int: + return self.index_regime_purpose[key[0]][key[1]] + elif type(key[0]) == str and type(key[1]) == int: + return self.index_regime_purpose[key[1]][key[0]] + else: + raise IndexError('Invalid index') + else: + raise IndexError('Invalid index') + + def __setitem__(self, key, value): + _type = type(key) + + if _type is str: + value = np.array(value, dtype=bool, ndmin=1) + k_params = self.k_params + self.k_parameters[key] = ( + value.size + np.sum(value) * (self.k_regimes - 1)) + self.k_params += self.k_parameters[key] + self.switching[key] = value + self.slices_purpose[key] = np.s_[k_params:self.k_params] + + for j in range(self.k_regimes): + self.relative_index_regime_purpose[j][key] = [] + self.index_regime_purpose[j][key] = [] + + offset = 0 + for i in range(value.size): + switching = value[i] + for j in range(self.k_regimes): + # Non-switching parameters + if not switching: + self.relative_index_regime_purpose[j][key].append( + offset) + # Switching parameters + else: + self.relative_index_regime_purpose[j][key].append( + offset + j) + offset += 1 if not switching else self.k_regimes + + for j in range(self.k_regimes): + offset = 0 + indices = [] + for k, v in self.relative_index_regime_purpose[j].items(): + v = (np.r_[v] + offset).tolist() + self.index_regime_purpose[j][k] = v + indices.append(v) + offset += self.k_parameters[k] + self.index_regime[j] = np.concatenate(indices).astype(int) + else: + raise IndexError('Invalid index') + + +class MarkovSwitching(tsbase.TimeSeriesModel): + """ + First-order k-regime Markov switching model + + Parameters + ---------- + endog : array_like + The endogenous variable. + k_regimes : integer + The number of regimes. + order : integer, optional + The order of the model describes the dependence of the likelihood on + previous regimes. This depends on the model in question and should be + set appropriately by subclasses. + exog_tvtp : array_like, optional + Array of exogenous or lagged variables to use in calculating + time-varying transition probabilities (TVTP). TVTP is only used if this + variable is provided. If an intercept is desired, a column of ones must + be explicitly included in this array. + + Notes + ----- + This model is new and API stability is not guaranteed, although changes + will be made in a backwards compatible way if possible. + + References + ---------- + Kim, Chang-Jin, and Charles R. Nelson. 1999. + "State-Space Models with Regime Switching: + Classical and Gibbs-Sampling Approaches with Applications". + MIT Press Books. The MIT Press. + + """ + + def __init__(self, endog, k_regimes, order=0, exog_tvtp=None, exog=None, + dates=None, freq=None, missing='none'): + + # Properties + self.k_regimes = k_regimes + self.tvtp = exog_tvtp is not None + # The order of the model may be overridden in subclasses + self.order = order + + # Exogenous data + # TODO add checks for exog_tvtp consistent shape and indices + self.k_tvtp, self.exog_tvtp = prepare_exog(exog_tvtp) + + # Initialize the base model + super(MarkovSwitching, self).__init__(endog, exog, dates=dates, + freq=freq, missing=missing) + + # Dimensions + self.nobs = self.endog.shape[0] + + # Sanity checks + if self.endog.ndim > 1 and self.endog.shape[1] > 1: + raise ValueError('Must have univariate endogenous data.') + if self.k_regimes < 2: + raise ValueError('Markov switching models must have at least two' + ' regimes.') + if not(self.exog_tvtp is None or self.exog_tvtp.shape[0] == self.nobs): + raise ValueError('Time-varying transition probabilities exogenous' + ' array must have the same number of observations' + ' as the endogenous array.') + + # Parameters + self.parameters = MarkovSwitchingParams(self.k_regimes) + k_transition = self.k_regimes - 1 + if self.tvtp: + k_transition *= self.k_tvtp + self.parameters['regime_transition'] = [1] * k_transition + + # Internal model properties: default is steady-state initialization + self._initialization = 'steady-state' + self._initial_probabilities = None + + @property + def k_params(self): + """ + (int) Number of parameters in the model + """ + return self.parameters.k_params + + def initialize_steady_state(self): + """ + Set initialization of regime probabilities to be steady-state values + + Notes + ----- + Only valid if there are not time-varying transition probabilities. + + """ + if self.tvtp: + raise ValueError('Cannot use steady-state initialization when' + ' the regime transition matrix is time-varying.') + + self._initialization = 'steady-state' + self._initial_probabilities = None + + def initialize_known(self, probabilities, tol=1e-8): + """ + Set initialization of regime probabilities to use known values + """ + self._initialization = 'known' + probabilities = np.array(probabilities, ndmin=1) + if not probabilities.shape == (self.k_regimes,): + raise ValueError('Initial probabilities must be a vector of shape' + ' (k_regimes,).') + if not np.abs(np.sum(probabilities) - 1) < tol: + raise ValueError('Initial probabilities vector must sum to one.') + self._initial_probabilities = probabilities + + def initial_probabilities(self, params, regime_transition=None): + """ + Retrieve initial probabilities + """ + params = np.array(params, ndmin=1) + if self._initialization == 'steady-state': + if regime_transition is None: + regime_transition = self.regime_transition_matrix(params) + if regime_transition.ndim == 3: + regime_transition = regime_transition[..., 0] + m = regime_transition.shape[0] + A = np.c_[(np.eye(m) - regime_transition).T, np.ones(m)].T + try: + probabilities = np.linalg.pinv(A)[:, -1] + except np.linalg.LinAlgError: + raise RuntimeError('Steady-state probabilities could not be' + ' constructed.') + elif self._initialization == 'known': + probabilities = self._initial_probabilities + else: + raise RuntimeError('Invalid initialization method selected.') + + return probabilities + + def _regime_transition_matrix_tvtp(self, params, exog_tvtp=None): + if exog_tvtp is None: + exog_tvtp = self.exog_tvtp + nobs = len(exog_tvtp) + + regime_transition_matrix = np.zeros( + (self.k_regimes, self.k_regimes, nobs), + dtype=np.promote_types(np.float64, params.dtype)) + + # Compute the predicted values from the regression + for i in range(self.k_regimes): + coeffs = params[self.parameters[i, 'regime_transition']] + regime_transition_matrix[:-1, i, :] = np.dot( + exog_tvtp, + np.reshape(coeffs, (self.k_regimes-1, self.k_tvtp)).T).T + + # Perform the logistic transformation + tmp = np.c_[np.zeros((nobs, self.k_regimes, 1)), + regime_transition_matrix[:-1, :, :].T].T + regime_transition_matrix[:-1, :, :] = np.exp( + regime_transition_matrix[:-1, :, :] - logsumexp(tmp, axis=0)) + + # Compute the last column of the transition matrix + regime_transition_matrix[-1, :, :] = ( + 1 - np.sum(regime_transition_matrix[:-1, :, :], axis=0)) + + return regime_transition_matrix + + def regime_transition_matrix(self, params, exog_tvtp=None): + """ + Construct the left-stochastic transition matrix + + Notes + ----- + This matrix will either be shaped (k_regimes, k_regimes, 1) or if there + are time-varying transition probabilities, it will be shaped + (k_regimes, k_regimes, nobs). + + The (i,j)th element of this matrix is the probability of transitioning + from regime j to regime i; thus the previous regime is represented in a + column and the next regime is represented by a row. + + It is left-stochastic, meaning that each column sums to one (because + it is certain that from one regime (j) you will transition to *some + other regime*). + + """ + params = np.array(params, ndmin=1) + if not self.tvtp: + regime_transition_matrix = np.zeros( + (self.k_regimes, self.k_regimes, 1), + dtype=np.promote_types(np.float64, params.dtype)) + regime_transition_matrix[:-1, :, 0] = np.reshape( + params[self.parameters['regime_transition']], + (self.k_regimes-1, self.k_regimes)) + regime_transition_matrix[-1, :, 0] = ( + 1 - np.sum(regime_transition_matrix[:-1, :, 0], axis=0)) + else: + regime_transition_matrix = ( + self._regime_transition_matrix_tvtp(params, exog_tvtp)) + + return regime_transition_matrix + + def predict(self, params, start=None, end=None, probabilities=None, + conditional=False): + """ + In-sample prediction and out-of-sample forecasting + + Parameters + ---------- + params : array + Parameters at which to form predictions + start : int, str, or datetime, optional + Zero-indexed observation number at which to start forecasting, + i.e., the first forecast is start. Can also be a date string to + parse or a datetime type. Default is the the zeroth observation. + end : int, str, or datetime, optional + Zero-indexed observation number at which to end forecasting, i.e., + the last forecast is end. Can also be a date string to + parse or a datetime type. However, if the dates index does not + have a fixed frequency, end must be an integer index if you + want out of sample prediction. Default is the last observation in + the sample. + probabilities : string or array_like, optional + Specifies the weighting probabilities used in constructing the + prediction as a weighted average. If a string, can be 'predicted', + 'filtered', or 'smoothed'. Otherwise can be an array of + probabilities to use. Default is smoothed. + conditional: boolean or int, optional + Whether or not to return predictions conditional on current or + past regimes. If False, returns a single vector of weighted + predictions. If True or 1, returns predictions conditional on the + current regime. For larger integers, returns predictions + conditional on the current regime and some number of past regimes. + + Returns + ------- + predict : array + Array of out of in-sample predictions and / or out-of-sample + forecasts. + """ + if start is None: + start = self._index[0] + + # Handle start, end + start, end, out_of_sample, prediction_index = ( + self._get_prediction_index(start, end)) + + if out_of_sample > 0: + raise NotImplementedError + + # Perform in-sample prediction + predict = self.predict_conditional(params) + squeezed = np.squeeze(predict) + + # Check if we need to do weighted averaging + if squeezed.ndim - 1 > conditional: + # Determine in-sample weighting probabilities + if probabilities is None or probabilities == 'smoothed': + results = self.smooth(params, return_raw=True) + probabilities = results.smoothed_joint_probabilities + elif probabilities == 'filtered': + results = self.filter(params, return_raw=True) + probabilities = results.filtered_joint_probabilities + elif probabilities == 'predicted': + results = self.filter(params, return_raw=True) + probabilities = results.predicted_joint_probabilities + + # Compute weighted average + predict = (predict * probabilities) + for i in range(predict.ndim - 1 - int(conditional)): + predict = np.sum(predict, axis=-2) + else: + predict = squeezed + + return predict[start:end + out_of_sample + 1] + + def predict_conditional(self, params): + """ + In-sample prediction, conditional on the current, and possibly past, + regimes + + Parameters + ---------- + params : array_like + Array of parameters at which to perform prediction. + + Returns + ------- + predict : array_like + Array of predictions conditional on current, and possibly past, + regimes + """ + raise NotImplementedError + + def _conditional_likelihoods(self, params): + """ + Compute likelihoods conditional on the current period's regime (and + the last self.order periods' regimes if self.order > 0). + + Must be implemented in subclasses. + """ + raise NotImplementedError + + def _filter(self, params, regime_transition=None): + # Get the regime transition matrix if not provided + if regime_transition is None: + regime_transition = self.regime_transition_matrix(params) + # Get the initial probabilities + initial_probabilities = self.initial_probabilities( + params, regime_transition) + + # Compute the conditional likelihoods + conditional_likelihoods = self._conditional_likelihoods(params) + + # Apply the filter + return ((regime_transition, initial_probabilities, + conditional_likelihoods) + + cy_hamilton_filter(initial_probabilities, regime_transition, + conditional_likelihoods, self.order)) + + def filter(self, params, transformed=True, cov_type=None, cov_kwds=None, + return_raw=False, results_class=None, + results_wrapper_class=None): + """ + Apply the Hamilton filter + + Parameters + ---------- + params : array_like + Array of parameters at which to perform filtering. + transformed : boolean, optional + Whether or not `params` is already transformed. Default is True. + cov_type : str, optional + See `fit` for a description of covariance matrix types + for results object. + cov_kwds : dict or None, optional + See `fit` for a description of required keywords for alternative + covariance estimators + return_raw : boolean,optional + Whether or not to return only the raw Hamilton filter output or a + full results object. Default is to return a full results object. + results_class : type, optional + A results class to instantiate rather than + `MarkovSwitchingResults`. Usually only used internally by + subclasses. + results_wrapper_class : type, optional + A results wrapper class to instantiate rather than + `MarkovSwitchingResults`. Usually only used internally by + subclasses. + + Returns + ------- + MarkovSwitchingResults + """ + params = np.array(params, ndmin=1) + + if not transformed: + params = self.transform_params(params) + + # Save the parameter names + self.data.param_names = self.param_names + + # Get the result + names = ['regime_transition', 'initial_probabilities', + 'conditional_likelihoods', 'filtered_marginal_probabilities', + 'predicted_joint_probabilities', 'joint_likelihoods', + 'filtered_joint_probabilities'] + result = HamiltonFilterResults( + self, Bunch(**dict(zip(names, self._filter(params))))) + + # Wrap in a results object + return self._wrap_results(params, result, return_raw, cov_type, + cov_kwds, results_class, + results_wrapper_class) + + def _smooth(self, params, filtered_marginal_probabilities, + predicted_joint_probabilities, + filtered_joint_probabilities, regime_transition=None): + # Get the regime transition matrix + if regime_transition is None: + regime_transition = self.regime_transition_matrix(params) + + # Apply the smoother + return cy_kim_smoother(regime_transition, + predicted_joint_probabilities, + filtered_joint_probabilities) + + @property + def _res_classes(self): + return {'fit': (MarkovSwitchingResults, MarkovSwitchingResultsWrapper)} + + def _wrap_results(self, params, result, return_raw, cov_type=None, + cov_kwds=None, results_class=None, wrapper_class=None): + if not return_raw: + # Wrap in a results object + result_kwargs = {} + if cov_type is not None: + result_kwargs['cov_type'] = cov_type + if cov_kwds is not None: + result_kwargs['cov_kwds'] = cov_kwds + + if results_class is None: + results_class = self._res_classes['fit'][0] + if wrapper_class is None: + wrapper_class = self._res_classes['fit'][1] + + res = results_class(self, params, result, **result_kwargs) + result = wrapper_class(res) + return result + + def smooth(self, params, transformed=True, cov_type=None, cov_kwds=None, + return_raw=False, results_class=None, + results_wrapper_class=None): + """ + Apply the Kim smoother and Hamilton filter + + Parameters + ---------- + params : array_like + Array of parameters at which to perform filtering. + transformed : boolean, optional + Whether or not `params` is already transformed. Default is True. + cov_type : str, optional + See `fit` for a description of covariance matrix types + for results object. + cov_kwds : dict or None, optional + See `fit` for a description of required keywords for alternative + covariance estimators + return_raw : boolean,optional + Whether or not to return only the raw Hamilton filter output or a + full results object. Default is to return a full results object. + results_class : type, optional + A results class to instantiate rather than + `MarkovSwitchingResults`. Usually only used internally by + subclasses. + results_wrapper_class : type, optional + A results wrapper class to instantiate rather than + `MarkovSwitchingResults`. Usually only used internally by + subclasses. + + Returns + ------- + MarkovSwitchingResults + """ + params = np.array(params, ndmin=1) + + if not transformed: + params = self.transform_params(params) + + # Save the parameter names + self.data.param_names = self.param_names + + # Hamilton filter + names = ['regime_transition', 'initial_probabilities', + 'conditional_likelihoods', 'filtered_marginal_probabilities', + 'predicted_joint_probabilities', 'joint_likelihoods', + 'filtered_joint_probabilities'] + result = Bunch(**dict(zip(names, self._filter(params)))) + + # Kim smoother + out = self._smooth(params, result.filtered_marginal_probabilities, + result.predicted_joint_probabilities, + result.filtered_joint_probabilities) + result['smoothed_joint_probabilities'] = out[0] + result['smoothed_marginal_probabilities'] = out[1] + result = KimSmootherResults(self, result) + + # Wrap in a results object + return self._wrap_results(params, result, return_raw, cov_type, + cov_kwds, results_class, + results_wrapper_class) + + def loglikeobs(self, params, transformed=True): + """ + Loglikelihood evaluation for each period + + Parameters + ---------- + params : array_like + Array of parameters at which to evaluate the loglikelihood + function. + transformed : boolean, optional + Whether or not `params` is already transformed. Default is True. + """ + params = np.array(params, ndmin=1) + + if not transformed: + params = self.transform_params(params) + + results = self._filter(params) + + return np.log(results[5]) + + def loglike(self, params, transformed=True): + """ + Loglikelihood evaluation + + Parameters + ---------- + params : array_like + Array of parameters at which to evaluate the loglikelihood + function. + transformed : boolean, optional + Whether or not `params` is already transformed. Default is True. + """ + return np.sum(self.loglikeobs(params, transformed)) + + def score(self, params, transformed=True): + """ + Compute the score function at params. + + Parameters + ---------- + params : array_like + Array of parameters at which to evaluate the score + function. + transformed : boolean, optional + Whether or not `params` is already transformed. Default is True. + """ + params = np.array(params, ndmin=1) + + return approx_fprime_cs(params, self.loglike, args=(transformed,)) + + def score_obs(self, params, transformed=True): + """ + Compute the score per observation, evaluated at params + + Parameters + ---------- + params : array_like + Array of parameters at which to evaluate the score + function. + transformed : boolean, optional + Whether or not `params` is already transformed. Default is True. + """ + params = np.array(params, ndmin=1) + + return approx_fprime_cs(params, self.loglikeobs, args=(transformed,)) + + def hessian(self, params, transformed=True): + """ + Hessian matrix of the likelihood function, evaluated at the given + parameters + + Parameters + ---------- + params : array_like + Array of parameters at which to evaluate the Hessian + function. + transformed : boolean, optional + Whether or not `params` is already transformed. Default is True. + """ + params = np.array(params, ndmin=1) + + return approx_hess_cs(params, self.loglike) + + def fit(self, start_params=None, transformed=True, cov_type='approx', + cov_kwds=None, method='bfgs', maxiter=100, full_output=1, disp=0, + callback=None, return_params=False, em_iter=5, search_reps=0, + search_iter=5, search_scale=1., **kwargs): + """ + Fits the model by maximum likelihood via Hamilton filter. + + Parameters + ---------- + start_params : array_like, optional + Initial guess of the solution for the loglikelihood maximization. + If None, the default is given by Model.start_params. + transformed : boolean, optional + Whether or not `start_params` is already transformed. Default is + True. + cov_type : str, optional + The type of covariance matrix estimator to use. Can be one of + 'approx', 'opg', 'robust', or 'none'. Default is 'approx'. + cov_kwds : dict or None, optional + Keywords for alternative covariance estimators + method : str, optional + The `method` determines which solver from `scipy.optimize` + is used, and it can be chosen from among the following strings: + + - 'newton' for Newton-Raphson, 'nm' for Nelder-Mead + - 'bfgs' for Broyden-Fletcher-Goldfarb-Shanno (BFGS) + - 'lbfgs' for limited-memory BFGS with optional box constraints + - 'powell' for modified Powell's method + - 'cg' for conjugate gradient + - 'ncg' for Newton-conjugate gradient + - 'basinhopping' for global basin-hopping solver + + The explicit arguments in `fit` are passed to the solver, + with the exception of the basin-hopping solver. Each + solver has several optional arguments that are not the same across + solvers. See the notes section below (or scipy.optimize) for the + available arguments and for the list of explicit arguments that the + basin-hopping solver supports. + maxiter : int, optional + The maximum number of iterations to perform. + full_output : boolean, optional + Set to True to have all available output in the Results object's + mle_retvals attribute. The output is dependent on the solver. + See LikelihoodModelResults notes section for more information. + disp : boolean, optional + Set to True to print convergence messages. + callback : callable callback(xk), optional + Called after each iteration, as callback(xk), where xk is the + current parameter vector. + return_params : boolean, optional + Whether or not to return only the array of maximizing parameters. + Default is False. + em_iter : int, optional + Number of initial EM iteration steps used to improve starting + parameters. + search_reps : int, optional + Number of randomly drawn search parameters that are drawn around + `start_params` to try and improve starting parameters. Default is + 0. + search_iter : int, optional + Number of initial EM iteration steps used to improve each of the + search parameter repetitions. + search_scale : float or array, optional. + Scale of variates for random start parameter search. + **kwargs + Additional keyword arguments to pass to the optimizer. + + Returns + ------- + MarkovSwitchingResults + + """ + + if start_params is None: + start_params = self.start_params + transformed = True + else: + start_params = np.array(start_params, ndmin=1) + + # Random search for better start parameters + if search_reps > 0: + start_params = self._start_params_search( + search_reps, start_params=start_params, + transformed=transformed, em_iter=search_iter, + scale=search_scale) + transformed = True + + # Get better start params through EM algorithm + if em_iter and not self.tvtp: + start_params = self._fit_em(start_params, transformed=transformed, + maxiter=em_iter, tolerance=0, + return_params=True) + transformed = True + + if transformed: + start_params = self.untransform_params(start_params) + + # Maximum likelihood estimation by scoring + fargs = (False,) + mlefit = super(MarkovSwitching, self).fit(start_params, method=method, + fargs=fargs, + maxiter=maxiter, + full_output=full_output, + disp=disp, callback=callback, + skip_hessian=True, **kwargs) + + # Just return the fitted parameters if requested + if return_params: + result = self.transform_params(mlefit.params) + # Otherwise construct the results class if desired + else: + result = self.smooth(mlefit.params, transformed=False, + cov_type=cov_type, cov_kwds=cov_kwds) + + result.mlefit = mlefit + result.mle_retvals = mlefit.mle_retvals + result.mle_settings = mlefit.mle_settings + + return result + + def _fit_em(self, start_params=None, transformed=True, cov_type='none', + cov_kwds=None, maxiter=50, tolerance=1e-6, full_output=True, + return_params=False, **kwargs): + """ + Fits the model using the Expectation-Maximization (EM) algorithm + + Parameters + ---------- + start_params : array_like, optional + Initial guess of the solution for the loglikelihood maximization. + If None, the default is given by `start_params`. + transformed : boolean, optional + Whether or not `start_params` is already transformed. Default is + True. + cov_type : str, optional + The type of covariance matrix estimator to use. Can be one of + 'approx', 'opg', 'robust', or 'none'. Default is 'none'. + cov_kwds : dict or None, optional + Keywords for alternative covariance estimators + maxiter : int, optional + The maximum number of iterations to perform. + tolerance : float, optional + The iteration stops when the difference between subsequent + loglikelihood values is less than this tolerance. + full_output : bool, optional + Set to True to have all available output in the Results object's + mle_retvals attribute. This includes all intermediate values for + parameters and loglikelihood values + return_params : boolean, optional + Whether or not to return only the array of maximizing parameters. + Default is False. + **kwargs + Additional keyword arguments to pass to the optimizer. + + Notes + ----- + This is a private method for finding good starting parameters for MLE + by scoring. It has not been tested for a thoroughly correct EM + implementation in all cases. It does not support TVTP transition + probabilities. + + Returns + ------- + MarkovSwitchingResults + """ + + if start_params is None: + start_params = self.start_params + transformed = True + else: + start_params = np.array(start_params, ndmin=1) + + if not transformed: + start_params = self.transform_params(start_params) + + # Perform expectation-maximization + llf = [] + params = [start_params] + i = 0 + delta = 0 + while i < maxiter and (i < 2 or (delta > tolerance)): + out = self._em_iteration(params[-1]) + llf.append(out[0].llf) + params.append(out[1]) + if i > 0: + delta = 2 * (llf[-1] - llf[-2]) / np.abs((llf[-1] + llf[-2])) + i += 1 + + # Just return the fitted parameters if requested + if return_params: + result = params[-1] + # Otherwise construct the results class if desired + else: + result = self.filter(params[-1], transformed=True, + cov_type=cov_type, cov_kwds=cov_kwds) + + # Save the output + if full_output: + em_retvals = Bunch(**{'params': np.array(params), + 'llf': np.array(llf), + 'iter': i}) + em_settings = Bunch(**{'tolerance': tolerance, + 'maxiter': maxiter}) + else: + em_retvals = None + em_settings = None + + result.mle_retvals = em_retvals + result.mle_settings = em_settings + + return result + + def _em_iteration(self, params0): + """ + EM iteration + + Notes + ----- + The EM iteration in this base class only performs the EM step for + non-TVTP transition probabilities. + """ + params1 = np.zeros(params0.shape, + dtype=np.promote_types(np.float64, params0.dtype)) + + # Smooth at the given parameters + result = self.smooth(params0, transformed=True, return_raw=True) + + # The EM with TVTP is not yet supported, just return the previous + # iteration parameters + if self.tvtp: + params1[self.parameters['regime_transition']] = ( + params0[self.parameters['regime_transition']]) + else: + regime_transition = self._em_regime_transition(result) + for i in range(self.k_regimes): + params1[self.parameters[i, 'regime_transition']] = ( + regime_transition[i]) + + return result, params1 + + def _em_regime_transition(self, result): + """ + EM step for regime transition probabilities + """ + + # Marginalize the smoothed joint probabilites to just S_t, S_{t-1} | T + tmp = result.smoothed_joint_probabilities + for i in range(tmp.ndim - 3): + tmp = np.sum(tmp, -2) + smoothed_joint_probabilities = tmp + + # Transition parameters (recall we're not yet supporting TVTP here) + k_transition = len(self.parameters[0, 'regime_transition']) + regime_transition = np.zeros((self.k_regimes, k_transition)) + for i in range(self.k_regimes): # S_{t_1} + for j in range(self.k_regimes - 1): # S_t + regime_transition[i, j] = ( + np.sum(smoothed_joint_probabilities[j, i]) / + np.sum(result.smoothed_marginal_probabilities[i])) + + # It may be the case that due to rounding error this estimates + # transition probabilities that sum to greater than one. If so, + # re-scale the probabilities and warn the user that something + # is not quite right + delta = np.sum(regime_transition[i]) - 1 + if delta > 0: + warnings.warn('Invalid regime transition probabilities' + ' estimated in EM iteration; probabilities have' + ' been re-scaled to continue estimation.', + EstimationWarning) + regime_transition[i] /= 1 + delta + 1e-6 + + return regime_transition + + def _start_params_search(self, reps, start_params=None, transformed=True, + em_iter=5, scale=1.): + """ + Search for starting parameters as random permutations of a vector + + Parameters + ---------- + reps : int + Number of random permutations to try. + start_params : array, optional + Starting parameter vector. If not given, class-level start + parameters are used. + transformed : boolean, optional + If `start_params` was provided, whether or not those parameters + are already transformed. Default is True. + em_iter : int, optional + Number of EM iterations to apply to each random permutation. + scale : array or float, optional + Scale of variates for random start parameter search. Can be given + as an array of length equal to the number of parameters or as a + single scalar. + + Notes + ----- + This is a private method for finding good starting parameters for MLE + by scoring, where the defaults have been set heuristically. + + """ + if start_params is None: + start_params = self.start_params + transformed = True + else: + start_params = np.array(start_params, ndmin=1) + + # Random search is over untransformed space + if transformed: + start_params = self.untransform_params(start_params) + + # Construct the standard deviations + scale = np.array(scale, ndmin=1) + if scale.size == 1: + scale = np.ones(self.k_params) * scale + if not scale.size == self.k_params: + raise ValueError('Scale of variates for random start' + ' parameter search must be given for each' + ' parameter or as a single scalar.') + + # Construct the random variates + variates = np.zeros((reps, self.k_params)) + for i in range(self.k_params): + variates[:, i] = scale[i] * np.random.uniform(-0.5, 0.5, size=reps) + + llf = self.loglike(start_params, transformed=False) + params = start_params + for i in range(reps): + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + + try: + proposed_params = self._fit_em( + start_params + variates[i], transformed=False, + maxiter=em_iter, return_params=True) + proposed_llf = self.loglike(proposed_params) + + if proposed_llf > llf: + llf = proposed_llf + params = self.untransform_params(proposed_params) + except Exception: # FIXME: catch something specific + pass + + # Return transformed parameters + return self.transform_params(params) + + @property + def start_params(self): + """ + (array) Starting parameters for maximum likelihood estimation. + """ + params = np.zeros(self.k_params, dtype=np.float64) + + # Transition probabilities + if self.tvtp: + params[self.parameters['regime_transition']] = 0. + else: + params[self.parameters['regime_transition']] = 1. / self.k_regimes + + return params + + @property + def param_names(self): + """ + (list of str) List of human readable parameter names (for parameters + actually included in the model). + """ + param_names = np.zeros(self.k_params, dtype=object) + + # Transition probabilities + if self.tvtp: + # TODO add support for exog_tvtp_names + param_names[self.parameters['regime_transition']] = [ + 'p[%d->%d].tvtp%d' % (j, i, k) + for i in range(self.k_regimes-1) + for k in range(self.k_tvtp) + for j in range(self.k_regimes) + ] + else: + param_names[self.parameters['regime_transition']] = [ + 'p[%d->%d]' % (j, i) + for i in range(self.k_regimes-1) + for j in range(self.k_regimes)] + + return param_names.tolist() + + def transform_params(self, unconstrained): + """ + Transform unconstrained parameters used by the optimizer to constrained + parameters used in likelihood evaluation + + Parameters + ---------- + unconstrained : array_like + Array of unconstrained parameters used by the optimizer, to be + transformed. + + Returns + ------- + constrained : array_like + Array of constrained parameters which may be used in likelihood + evalation. + + Notes + ----- + In the base class, this only transforms the transition-probability- + related parameters. + """ + constrained = np.array(unconstrained, copy=True) + constrained = constrained.astype( + np.promote_types(np.float64, constrained.dtype)) + + # Nothing to do for transition probabilities if TVTP + if self.tvtp: + constrained[self.parameters['regime_transition']] = ( + unconstrained[self.parameters['regime_transition']]) + # Otherwise do logistic transformation + else: + # Transition probabilities + for i in range(self.k_regimes): + tmp1 = unconstrained[self.parameters[i, 'regime_transition']] + tmp2 = np.r_[0, tmp1] + constrained[self.parameters[i, 'regime_transition']] = np.exp( + tmp1 - logsumexp(tmp2)) + + # Do not do anything for the rest of the parameters + + return constrained + + def _untransform_logistic(self, unconstrained, constrained): + """ + Function to allow using a numerical root-finder to reverse the + logistic transform. + """ + resid = np.zeros(unconstrained.shape, dtype=unconstrained.dtype) + exp = np.exp(unconstrained) + sum_exp = np.sum(exp) + for i in range(len(unconstrained)): + resid[i] = (unconstrained[i] - + np.log(1 + sum_exp - exp[i]) + + np.log(1 / constrained[i] - 1)) + return resid + + def untransform_params(self, constrained): + """ + Transform constrained parameters used in likelihood evaluation + to unconstrained parameters used by the optimizer + + Parameters + ---------- + constrained : array_like + Array of constrained parameters used in likelihood evalution, to be + transformed. + + Returns + ------- + unconstrained : array_like + Array of unconstrained parameters used by the optimizer. + + Notes + ----- + In the base class, this only untransforms the transition-probability- + related parameters. + """ + unconstrained = np.array(constrained, copy=True) + unconstrained = unconstrained.astype( + np.promote_types(np.float64, unconstrained.dtype)) + + # Nothing to do for transition probabilities if TVTP + if self.tvtp: + unconstrained[self.parameters['regime_transition']] = ( + constrained[self.parameters['regime_transition']]) + # Otherwise reverse logistic transformation + else: + for i in range(self.k_regimes): + s = self.parameters[i, 'regime_transition'] + if self.k_regimes == 2: + unconstrained[s] = -np.log(1. / constrained[s] - 1) + else: + from scipy.optimize import root + out = root(self._untransform_logistic, + np.zeros(unconstrained[s].shape, + unconstrained.dtype), + args=(constrained[s],)) + if not out['success']: + raise ValueError('Could not untransform parameters.') + unconstrained[s] = out['x'] + + # Do not do anything for the rest of the parameters + + return unconstrained + + +class HamiltonFilterResults(object): + """ + Results from applying the Hamilton filter to a state space model. + + Parameters + ---------- + model : Representation + A Statespace representation + + Attributes + ---------- + nobs : int + Number of observations. + k_endog : int + The dimension of the observation series. + k_regimes : int + The number of unobserved regimes. + regime_transition : array + The regime transition matrix. + initialization : str + Initialization method for regime probabilities. + initial_probabilities : array + Initial regime probabilities + conditional_likelihoods : array + The likelihood values at each time period, conditional on regime. + predicted_joint_probabilities : array + Predicted joint probabilities at each time period. + filtered_marginal_probabilities : array + Filtered marginal probabilities at each time period. + filtered_joint_probabilities : array + Filtered joint probabilities at each time period. + joint_likelihoods : array + The likelihood values at each time period. + llf_obs : array + The loglikelihood values at each time period. + """ + def __init__(self, model, result): + + self.model = model + + self.nobs = model.nobs + self.order = model.order + self.k_regimes = model.k_regimes + + attributes = ['regime_transition', 'initial_probabilities', + 'conditional_likelihoods', + 'predicted_joint_probabilities', + 'filtered_marginal_probabilities', + 'filtered_joint_probabilities', + 'joint_likelihoods'] + for name in attributes: + setattr(self, name, getattr(result, name)) + + self.initialization = model._initialization + self.llf_obs = np.log(self.joint_likelihoods) + self.llf = np.sum(self.llf_obs) + + # Subset transition if necessary (e.g. for Markov autoregression) + if self.regime_transition.shape[-1] > 1 and self.order > 0: + self.regime_transition = self.regime_transition[..., self.order:] + + # Cache for predicted marginal probabilities + self._predicted_marginal_probabilities = None + + @property + def predicted_marginal_probabilities(self): + if self._predicted_marginal_probabilities is None: + self._predicted_marginal_probabilities = ( + self.predicted_joint_probabilities) + for i in range(self._predicted_marginal_probabilities.ndim - 2): + self._predicted_marginal_probabilities = np.sum( + self._predicted_marginal_probabilities, axis=-2) + return self._predicted_marginal_probabilities + + @property + def expected_durations(self): + """ + (array) Expected duration of a regime, possibly time-varying. + """ + return 1. / (1 - np.diagonal(self.regime_transition).squeeze()) + + +class KimSmootherResults(HamiltonFilterResults): + """ + Results from applying the Kim smoother to a Markov switching model. + + Parameters + ---------- + model : MarkovSwitchingModel + The model object. + result : dict + A dictionary containing two keys: 'smoothd_joint_probabilities' and + 'smoothed_marginal_probabilities'. + + Attributes + ---------- + nobs : int + Number of observations. + k_endog : int + The dimension of the observation series. + k_states : int + The dimension of the unobserved state process. + """ + def __init__(self, model, result): + super(KimSmootherResults, self).__init__(model, result) + + attributes = ['smoothed_joint_probabilities', + 'smoothed_marginal_probabilities'] + + for name in attributes: + setattr(self, name, getattr(result, name)) + + +class MarkovSwitchingResults(tsbase.TimeSeriesModelResults): + r""" + Class to hold results from fitting a Markov switching model + + Parameters + ---------- + model : MarkovSwitching instance + The fitted model instance + params : array + Fitted parameters + filter_results : HamiltonFilterResults or KimSmootherResults instance + The underlying filter and, optionally, smoother output + cov_type : string + The type of covariance matrix estimator to use. Can be one of 'approx', + 'opg', 'robust', or 'none'. + + Attributes + ---------- + model : Model instance + A reference to the model that was fit. + filter_results : HamiltonFilterResults or KimSmootherResults instance + The underlying filter and, optionally, smoother output + nobs : float + The number of observations used to fit the model. + params : array + The parameters of the model. + scale : float + This is currently set to 1.0 and not used by the model or its results. + + """ + use_t = False + + def __init__(self, model, params, results, cov_type='opg', cov_kwds=None, + **kwargs): + self.data = model.data + + tsbase.TimeSeriesModelResults.__init__(self, model, params, + normalized_cov_params=None, + scale=1.) + + # Save the filter / smoother output + self.filter_results = results + if isinstance(results, KimSmootherResults): + self.smoother_results = results + else: + self.smoother_results = None + + # Dimensions + self.nobs = model.nobs + self.order = model.order + self.k_regimes = model.k_regimes + + # Setup covariance matrix notes dictionary + if not hasattr(self, 'cov_kwds'): + self.cov_kwds = {} + self.cov_type = cov_type + + # Setup the cache + self._cache = {} + + # Handle covariance matrix calculation + if cov_kwds is None: + cov_kwds = {} + self._cov_approx_complex_step = ( + cov_kwds.pop('approx_complex_step', True)) + self._cov_approx_centered = cov_kwds.pop('approx_centered', False) + try: + self._rank = None + self._get_robustcov_results(cov_type=cov_type, use_self=True, + **cov_kwds) + except np.linalg.LinAlgError: + self._rank = 0 + k_params = len(self.params) + self.cov_params_default = np.zeros((k_params, k_params)) * np.nan + self.cov_kwds['cov_type'] = ( + 'Covariance matrix could not be calculated: singular.' + ' information matrix.') + + # Copy over arrays + attributes = ['regime_transition', 'initial_probabilities', + 'conditional_likelihoods', + 'predicted_marginal_probabilities', + 'predicted_joint_probabilities', + 'filtered_marginal_probabilities', + 'filtered_joint_probabilities', + 'joint_likelihoods', 'expected_durations'] + for name in attributes: + setattr(self, name, getattr(self.filter_results, name)) + + attributes = ['smoothed_joint_probabilities', + 'smoothed_marginal_probabilities'] + for name in attributes: + if self.smoother_results is not None: + setattr(self, name, getattr(self.smoother_results, name)) + else: + setattr(self, name, None) + + # Reshape some arrays to long-format + self.predicted_marginal_probabilities = ( + self.predicted_marginal_probabilities.T) + self.filtered_marginal_probabilities = ( + self.filtered_marginal_probabilities.T) + if self.smoother_results is not None: + self.smoothed_marginal_probabilities = ( + self.smoothed_marginal_probabilities.T) + + # Make into Pandas arrays if using Pandas data + if isinstance(self.data, PandasData): + index = self.data.row_labels + if self.expected_durations.ndim > 1: + self.expected_durations = pd.DataFrame( + self.expected_durations, index=index) + self.predicted_marginal_probabilities = pd.DataFrame( + self.predicted_marginal_probabilities, index=index) + self.filtered_marginal_probabilities = pd.DataFrame( + self.filtered_marginal_probabilities, index=index) + if self.smoother_results is not None: + self.smoothed_marginal_probabilities = pd.DataFrame( + self.smoothed_marginal_probabilities, index=index) + + def _get_robustcov_results(self, cov_type='opg', **kwargs): + from statsmodels.base.covtype import descriptions + + use_self = kwargs.pop('use_self', False) + if use_self: + res = self + else: + raise NotImplementedError + res = self.__class__( + self.model, self.params, + normalized_cov_params=self.normalized_cov_params, + scale=self.scale) + + # Set the new covariance type + res.cov_type = cov_type + res.cov_kwds = {} + + approx_type_str = 'complex-step' + + # Calculate the new covariance matrix + k_params = len(self.params) + if k_params == 0: + res.cov_params_default = np.zeros((0, 0)) + res._rank = 0 + res.cov_kwds['description'] = 'No parameters estimated.' + elif cov_type == 'custom': + res.cov_type = kwargs['custom_cov_type'] + res.cov_params_default = kwargs['custom_cov_params'] + res.cov_kwds['description'] = kwargs['custom_description'] + res._rank = np.linalg.matrix_rank(res.cov_params_default) + elif cov_type == 'none': + res.cov_params_default = np.zeros((k_params, k_params)) * np.nan + res._rank = np.nan + res.cov_kwds['description'] = descriptions['none'] + elif self.cov_type == 'approx': + res.cov_params_default = res.cov_params_approx + res.cov_kwds['description'] = descriptions['approx'].format( + approx_type=approx_type_str) + elif self.cov_type == 'opg': + res.cov_params_default = res.cov_params_opg + res.cov_kwds['description'] = descriptions['OPG'].format( + approx_type=approx_type_str) + elif self.cov_type == 'robust': + res.cov_params_default = res.cov_params_robust + res.cov_kwds['description'] = descriptions['robust'].format( + approx_type=approx_type_str) + else: + raise NotImplementedError('Invalid covariance matrix type.') + + return res + + @cache_readonly + def aic(self): + """ + (float) Akaike Information Criterion + """ + # return -2*self.llf + 2*self.params.shape[0] + return aic(self.llf, self.nobs, self.params.shape[0]) + + @cache_readonly + def bic(self): + """ + (float) Bayes Information Criterion + """ + # return -2*self.llf + self.params.shape[0]*np.log(self.nobs) + return bic(self.llf, self.nobs, self.params.shape[0]) + + @cache_readonly + def cov_params_approx(self): + """ + (array) The variance / covariance matrix. Computed using the numerical + Hessian approximated by complex step or finite differences methods. + """ + evaluated_hessian = self.model.hessian(self.params, transformed=True) + neg_cov, singular_values = pinv_extended(evaluated_hessian) + + if self._rank is None: + self._rank = np.linalg.matrix_rank(np.diag(singular_values)) + + return -neg_cov + + @cache_readonly + def cov_params_opg(self): + """ + (array) The variance / covariance matrix. Computed using the outer + product of gradients method. + """ + score_obs = self.model.score_obs(self.params, transformed=True).T + cov_params, singular_values = pinv_extended( + np.inner(score_obs, score_obs)) + + if self._rank is None: + self._rank = np.linalg.matrix_rank(np.diag(singular_values)) + + return cov_params + + @cache_readonly + def cov_params_robust(self): + """ + (array) The QMLE variance / covariance matrix. Computed using the + numerical Hessian as the evaluated hessian. + """ + cov_opg = self.cov_params_opg + evaluated_hessian = self.model.hessian(self.params, transformed=True) + cov_params, singular_values = pinv_extended( + np.dot(np.dot(evaluated_hessian, cov_opg), evaluated_hessian) + ) + + if self._rank is None: + self._rank = np.linalg.matrix_rank(np.diag(singular_values)) + + return cov_params + + @cache_readonly + def fittedvalues(self): + """ + (array) The predicted values of the model. An (nobs x k_endog) array. + """ + return self.model.predict(self.params) + + @cache_readonly + def hqic(self): + """ + (float) Hannan-Quinn Information Criterion + """ + # return -2*self.llf + 2*np.log(np.log(self.nobs))*self.params.shape[0] + return hqic(self.llf, self.nobs, self.params.shape[0]) + + @cache_readonly + def llf_obs(self): + """ + (float) The value of the log-likelihood function evaluated at `params`. + """ + return self.model.loglikeobs(self.params) + + @cache_readonly + def llf(self): + """ + (float) The value of the log-likelihood function evaluated at `params`. + """ + return self.model.loglike(self.params) + + @cache_readonly + def resid(self): + """ + (array) The model residuals. An (nobs x k_endog) array. + """ + return self.model.endog - self.fittedvalues + + def predict(self, start=None, end=None, probabilities=None, + conditional=False): + """ + In-sample prediction and out-of-sample forecasting + + Parameters + ---------- + start : int, str, or datetime, optional + Zero-indexed observation number at which to start forecasting, + i.e., the first forecast is start. Can also be a date string to + parse or a datetime type. Default is the the zeroth observation. + end : int, str, or datetime, optional + Zero-indexed observation number at which to end forecasting, i.e., + the last forecast is end. Can also be a date string to + parse or a datetime type. However, if the dates index does not + have a fixed frequency, end must be an integer index if you + want out of sample prediction. Default is the last observation in + the sample. + probabilities : string or array_like, optional + Specifies the weighting probabilities used in constructing the + prediction as a weighted average. If a string, can be 'predicted', + 'filtered', or 'smoothed'. Otherwise can be an array of + probabilities to use. Default is smoothed. + conditional: boolean or int, optional + Whether or not to return predictions conditional on current or + past regimes. If False, returns a single vector of weighted + predictions. If True or 1, returns predictions conditional on the + current regime. For larger integers, returns predictions + conditional on the current regime and some number of past regimes. + + Returns + ------- + predict : array + Array of out of in-sample predictions and / or out-of-sample + forecasts. An (npredict x k_endog) array. + """ + return self.model.predict(self.params, start=start, end=end, + probabilities=probabilities, + conditional=conditional) + + def forecast(self, steps=1, **kwargs): + """ + Out-of-sample forecasts + + Parameters + ---------- + steps : int, str, or datetime, optional + If an integer, the number of steps to forecast from the end of the + sample. Can also be a date string to parse or a datetime type. + However, if the dates index does not have a fixed frequency, steps + must be an integer. Default + **kwargs + Additional arguments may required for forecasting beyond the end + of the sample. See `FilterResults.predict` for more details. + + Returns + ------- + forecast : array + Array of out of sample forecasts. A (steps x k_endog) array. + """ + raise NotImplementedError + + def summary(self, alpha=.05, start=None, title=None, model_name=None, + display_params=True): + """ + Summarize the Model + + Parameters + ---------- + alpha : float, optional + Significance level for the confidence intervals. Default is 0.05. + start : int, optional + Integer of the start observation. Default is 0. + title : str, optional + The title of the summary table. + model_name : string + The name of the model used. Default is to use model class name. + display_params : boolean, optional + Whether or not to display tables of estimated parameters. Default + is True. Usually only used internally. + + Returns + ------- + summary : Summary instance + This holds the summary table and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary.Summary + """ + from statsmodels.iolib.summary import Summary + + # Model specification results + model = self.model + if title is None: + title = 'Markov Switching Model Results' + + if start is None: + start = 0 + if self.data.dates is not None: + dates = self.data.dates + d = dates[start] + sample = ['%02d-%02d-%02d' % (d.month, d.day, d.year)] + d = dates[-1] + sample += ['- ' + '%02d-%02d-%02d' % (d.month, d.day, d.year)] + else: + sample = [str(start), ' - ' + str(self.model.nobs)] + + # Standardize the model name as a list of str + if model_name is None: + model_name = model.__class__.__name__ + + # Create the tables + if not isinstance(model_name, list): + model_name = [model_name] + + top_left = [('Dep. Variable:', None)] + top_left.append(('Model:', [model_name[0]])) + for i in range(1, len(model_name)): + top_left.append(('', ['+ ' + model_name[i]])) + top_left += [ + ('Date:', None), + ('Time:', None), + ('Sample:', [sample[0]]), + ('', [sample[1]]) + ] + + top_right = [ + ('No. Observations:', [self.model.nobs]), + ('Log Likelihood', ["%#5.3f" % self.llf]), + ('AIC', ["%#5.3f" % self.aic]), + ('BIC', ["%#5.3f" % self.bic]), + ('HQIC', ["%#5.3f" % self.hqic]) + ] + + if hasattr(self, 'cov_type'): + top_left.append(('Covariance Type:', [self.cov_type])) + + summary = Summary() + summary.add_table_2cols(self, gleft=top_left, gright=top_right, + title=title) + + # Make parameters tables for each regime + from statsmodels.iolib.summary import summary_params + import re + + def make_table(self, mask, title, strip_end=True): + res = (self, self.params[mask], self.bse[mask], + self.tvalues[mask], self.pvalues[mask], + self.conf_int(alpha)[mask]) + + param_names = [ + re.sub(r'\[\d+\]$', '', name) for name in + np.array(self.data.param_names)[mask].tolist() + ] + + return summary_params(res, yname=None, xname=param_names, + alpha=alpha, use_t=False, title=title) + + params = model.parameters + regime_masks = [[] for i in range(model.k_regimes)] + other_masks = {} + for key, switching in params.switching.items(): + k_params = len(switching) + if key == 'regime_transition': + continue + other_masks[key] = [] + + for i in range(k_params): + if switching[i]: + for j in range(self.k_regimes): + regime_masks[j].append(params[j, key][i]) + else: + other_masks[key].append(params[0, key][i]) + + for i in range(self.k_regimes): + mask = regime_masks[i] + if len(mask) > 0: + table = make_table(self, mask, 'Regime %d parameters' % i) + summary.tables.append(table) + + mask = [] + for key, _mask in other_masks.items(): + mask.extend(_mask) + if len(mask) > 0: + table = make_table(self, mask, 'Non-switching parameters') + summary.tables.append(table) + + # Transition parameters + mask = params['regime_transition'] + table = make_table(self, mask, 'Regime transition parameters') + summary.tables.append(table) + + # Add warnings/notes, added to text format only + etext = [] + if hasattr(self, 'cov_type') and 'description' in self.cov_kwds: + etext.append(self.cov_kwds['description']) + if self._rank < len(self.params): + etext.append("Covariance matrix is singular or near-singular," + " with condition number %6.3g. Standard errors may be" + " unstable." % np.linalg.cond(self.cov_params())) + + if etext: + etext = ["[{0}] {1}".format(i + 1, text) + for i, text in enumerate(etext)] + etext.insert(0, "Warnings:") + summary.add_extra_txt(etext) + + return summary + + +class MarkovSwitchingResultsWrapper(wrap.ResultsWrapper): + _attrs = { + 'cov_params_approx': 'cov', + 'cov_params_default': 'cov', + 'cov_params_opg': 'cov', + 'cov_params_robust': 'cov', + } + _wrap_attrs = wrap.union_dicts(tsbase.TimeSeriesResultsWrapper._wrap_attrs, + _attrs) + _methods = { + 'forecast': 'dates', + } + _wrap_methods = wrap.union_dicts( + tsbase.TimeSeriesResultsWrapper._wrap_methods, _methods) +wrap.populate_wrapper(MarkovSwitchingResultsWrapper, # noqa:E305 + MarkovSwitchingResults) diff --git a/statsmodels/tsa/regime_switching/tests/__init__.py b/statsmodels/tsa/regime_switching/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/regime_switching/tests/results/__init__.py b/statsmodels/tsa/regime_switching/tests/results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/regime_switching/tests/results/mar_filardo.csv b/statsmodels/tsa/regime_switching/tests/results/mar_filardo.csv new file mode 100644 index 0000000..1d553bb --- /dev/null +++ b/statsmodels/tsa/regime_switching/tests/results/mar_filardo.csv @@ -0,0 +1 @@ +dlip,dmdlleading,transition_00,transition_10,filtered_0,smoothed_0,duration0,duration1 0,-1.315793134,,,,,, -0.463457141,0.542041742,,,,,, 0,0.797866076,,,,,, 0.922986632,-1.572317338,,,,,, 0.682073841,1.324204951,,,,,, 0,-0.778336628,0.998775,0.417661,0.661039,0.209407,816.2879,2.394286 -0.226405988,-1.31019399,0.951736,0.081398,0.535619,0.182025,20.71927,12.28531 -0.455667853,-1.859087707,0.884943,0.04962,0.309032,0.145482,8.691347,20.1532 0.455667853,0.014403944,0.7443,0.029358,0.468544,0.13292,3.910828,34.06189 -0.684945807,-1.064496246,0.987689,0.163137,0.292996,0.128835,81.23144,6.129806 -0.461484959,-1.8941562,0.922373,0.062497,0.236747,0.120567,12.8821,16.00085 -0.465446252,-1.921480471,0.732307,0.028381,0.139381,0.088826,3.735622,35.23537 -0.705747343,-0.816574453,0.722719,0.027641,0.056933,0.066686,3.60645,36.1785 -0.95551645,-0.819748477,0.94853,0.078599,0.032805,0.072972,19.42867,12.72275 -0.241533386,-1.681332938,0.948255,0.078371,0.092129,0.114191,19.32541,12.75982 -0.731123284,0.03216902,0.799489,0.034838,0.034222,0.112214,4.987248,28.70443 -0.245914958,-0.541719465,0.988066,0.165564,0.151155,0.40603,83.79465,6.039966 0,1.736755747,0.967719,0.100818,0.27313,0.477691,30.97786,9.918877 0.490719688,1.973729256,0.999409,0.519472,0.844464,0.706868,1693.3,1.925032 0.486318555,2.730521092,0.999612,0.577767,0.971411,0.740248,2575.311,1.730802 -1.972004789,0.278559375,0.999898,0.743891,0.767455,0.73716,9829.282,1.344282 1.485686234,1.589809356,0.992252,0.202241,0.988905,0.989876,129.0636,4.9446 0.968314221,1.299660221,0.999234,0.482951,0.998264,0.997724,1305.686,2.070602 0.71505417,2.032490944,0.998721,0.411736,0.999513,0.998923,781.6227,2.428742 0.236271203,0.993680444,0.99965,0.591956,0.999769,0.999456,2857.516,1.689316 1.853997876,0.732887127,0.997803,0.34049,0.99998,0.999978,455.1569,2.936944 1.792697333,1.208665529,0.996518,0.284858,0.999968,0.999973,287.2264,3.510515 1.306669382,2.373811004,0.998497,0.390004,0.99994,0.999957,665.4848,2.564075 1.485686234,0.450280577,0.999809,0.670737,0.999994,0.999999,5227.865,1.490897 1.649531163,3.649279698,0.994271,0.231198,0.999848,0.999914,174.5576,4.325298 1.797650442,3.502572834,0.99998,0.878688,0.999999,0.999999,49982.95,1.138061 -0.394359232,-1.345298571,0.999974,0.862255,0.999774,0.999937,38551.14,1.159749 0.394359232,-0.254775223,0.878463,0.047999,0.957108,0.984405,8.227935,20.83372 -0.196821107,-0.69433637,0.980323,0.129794,0.89051,0.98286,50.81974,7.704538 0.977038243,0.622423385,0.958125,0.087867,0.987311,0.992897,23.88072,11.3808 0.193312702,2.118583211,0.99577,0.263016,0.99271,0.993582,236.3889,3.802051 0.38457009,-1.758562959,0.999699,0.612464,0.998438,0.996481,3327.778,1.63275 0.19126706,-0.906243325,0.776674,0.032345,0.924641,0.911718,4.477758,30.91628 0.190594767,-2.903936767,0.940205,0.072379,0.942172,0.883427,16.72378,13.81624 -0.190594767,-1.379646476,0.314068,0.010586,0.364974,0.127995,1.457871,94.4619 -0.383211174,-3.240071538,0.87182,0.046462,0.277216,0.106534,7.801549,21.52297 -0.774643966,-2.374995988,0.20162,0.007601,0.022645,0.016712,1.252537,131.5639 -0.588332955,-2.177911415,0.538715,0.017784,0.013147,0.024166,2.167857,56.22892 0.392930382,-0.012350861,0.623411,0.021553,0.092288,0.075833,2.655415,46.39822 0,-0.254775223,0.9871,0.159537,0.203846,0.151077,77.52013,6.26814 0.39010352,-0.983818549,0.980323,0.129794,0.506374,0.209208,50.81974,7.704538 0.387317043,0.231843743,0.932002,0.067366,0.645502,0.205754,14.70622,14.84421 0.57583715,0.229487225,0.99159,0.194848,0.835906,0.214817,118.8992,5.132198 0.190594767,0.467249575,0.991555,0.194481,0.87081,0.206833,118.4084,5.141894 0.189927183,-0.01525415,0.99444,0.234211,0.909432,0.196893,179.8502,4.269648 -0.38052195,-0.254775223,0.987035,0.15915,0.844312,0.104756,77.12787,6.283374 -0.57583715,-0.015826483,0.980323,0.129794,0.72584,0.072409,50.81974,7.704538 -0.582017989,1.870452343,0.987022,0.159074,0.638266,0.074931,77.05078,6.286382 -0.78587108,-0.254775223,0.999534,0.55253,0.663373,0.201116,2145.186,1.809857 3.450049621,1.367508328,0.980323,0.129794,0.999773,0.999904,50.81974,7.704538 1.825901649,2.912910443,0.998865,0.428172,0.999971,0.99999,881.2426,2.335512 0.535992721,-1.600086992,0.999926,0.7769,0.999955,0.999993,13574.67,1.287167 1.056348123,-0.254775223,0.821556,0.037659,0.979314,0.989875,5.603992,26.55384 0.34759193,0.19567599,0.980323,0.129794,0.946543,0.983823,50.81974,7.704538 0.17296396,0.417119802,0.991038,0.189267,0.952415,0.987569,111.5873,5.283544 0.344281508,-0.03180969,0.993927,0.225388,0.978215,0.992622,164.6628,4.436797 0.342109371,-0.477740755,0.986654,0.156959,0.984248,0.992998,74.92918,6.371088 0.33996447,-0.478239003,0.971075,0.106735,0.98625,0.992113,34.57276,9.369037 0.337846298,-0.928178441,0.971051,0.106687,0.988277,0.990038,34.54316,9.373186 -0.337846298,-1.615340428,0.937984,0.070927,0.907252,0.967874,16.12493,14.09892 0.673600655,-0.483346751,0.817563,0.037113,0.972816,0.954798,5.48134,26.94446 -0.335754357,-2.569693409,0.970795,0.106204,0.923828,0.910001,34.24123,9.41583 -1.019920139,-2.385033293,0.45277,0.0147,0.12203,0.07548,1.827385,68.02907 -0.517245468,-0.494296295,0.534297,0.017611,0.070844,0.025276,2.14729,56.78302 -1.226446751,-1.218638106,0.970241,0.105175,0.019489,0.026887,33.60312,9.507979 -1.436485473,-0.012937136,0.900444,0.054094,0.005964,0.03716,10.04461,18.48618 -0.365147208,-0.254775223,0.987087,0.159459,0.143677,0.461762,77.44075,6.271213 0.182880967,0.706770647,0.980323,0.129794,0.466198,0.691007,50.81974,7.704538 -0.366380822,0.222552653,0.996354,0.279597,0.503475,0.779292,274.2949,3.576579 -0.368873228,0.693099173,0.991451,0.193403,0.508523,0.831212,116.976,5.170559 0.368873228,1.150400123,0.996265,0.276866,0.802825,0.930042,267.7602,3.611853 0.183499855,1.130928244,0.998334,0.376309,0.901479,0.952342,600.3645,2.657389 0,0.885487987,0.998276,0.371775,0.941878,0.961881,580.0568,2.689799 0,0.197714237,0.99734,0.316757,0.962077,0.968511,375.9974,3.156995 0,1.090536547,0.99107,0.189578,0.966727,0.970999,111.9871,5.274869 0.727851941,1.729854415,0.998148,0.362442,0.993485,0.993679,540.0987,2.759064 0.896287438,1.691232133,0.999402,0.517758,0.999065,0.999272,1672.751,1.931403 0.706513649,1.23303118,0.99936,0.508162,0.999749,0.999842,1562.274,1.967877 1.214671872,1.418904013,0.998561,0.395784,0.99994,0.999971,694.7727,2.526628 0.682073841,1.595226152,0.998964,0.44073,0.999817,0.999914,965.0843,2.268961 1.173365994,0.959814608,0.999241,0.484297,0.999966,0.999991,1318.256,2.06485 0.659268369,0.146831743,0.997668,0.332968,0.999565,0.999921,428.7304,3.003295 0.974112821,0.344627171,0.990237,0.181925,0.999323,0.999681,102.4272,5.496771 0,-0.055770182,0.993101,0.21305,0.992022,0.997506,144.9521,4.693737 0.480571731,0.734352525,0.986084,0.153831,0.995347,0.997466,71.85903,6.50062 -0.159717804,-0.649253052,0.996527,0.285155,0.991714,0.997526,287.9699,3.506859 0.31896654,0.53263042,0.961213,0.091528,0.990127,0.995755,25.78161,10.92562 0.94579413,-0.451046139,0.995044,0.246075,0.999066,0.997895,201.7954,4.063803 0.156040843,0.332885626,0.972374,0.109292,0.988761,0.984122,36.19732,9.149767 0.155593092,-0.059653209,0.992957,0.211099,0.993875,0.981322,141.9909,4.737124 0.30985316,-0.645400719,0.985989,0.153329,0.99474,0.97102,71.37363,6.521904 -0.465446252,-1.040633884,0.961466,0.091847,0.917091,0.889738,25.95118,10.88766 0,0.138926073,0.925344,0.063902,0.937652,0.861758,13.39477,15.64903 0.465446252,-0.058504306,0.990101,0.180758,0.986573,0.85855,101.0176,5.532267 -0.465446252,-1.835835825,0.986017,0.153478,0.960134,0.751912,71.5169,6.515598 -0.46947614,-0.854177617,0.752054,0.030025,0.746164,0.175126,4.03314,33.30609 -1.757048302,0.543632212,0.945181,0.075933,0.09631,0.074243,18.24189,13.16947 2.226524441,-0.056165425,0.99514,0.248111,0.998245,0.999599,205.7443,4.030461 1.232420219,-0.652390061,0.986074,0.15378,0.999388,0.999462,71.80947,6.502782 0.455030548,0.142839615,0.961005,0.091269,0.988117,0.984209,25.64437,10.95664 -0.455030548,0.141264899,0.990168,0.181335,0.939513,0.975423,101.7129,5.51466 0.75627663,-0.650815344,0.990141,0.181102,0.98704,0.982536,101.4325,5.521737 -0.150413842,-1.051592188,0.961109,0.091399,0.94013,0.967193,25.71317,10.94106 0.449995574,-0.655577362,0.923993,0.063253,0.976117,0.959689,13.15665,15.80956 0,-0.859006668,0.960793,0.091006,0.966623,0.936485,25.50572,10.98825 -0.752080786,-1.0661387,0.944736,0.075597,0.759507,0.888195,18.09512,13.22806 -0.151676058,-0.254775223,0.922164,0.062401,0.814671,0.893577,12.8476,16.02537 0.151676058,-0.458648892,0.980323,0.129794,0.910317,0.906645,50.81974,7.704538 0.302085213,-0.868902025,0.97201,0.108558,0.959358,0.907009,35.72679,9.211624 0,-0.460325141,0.943815,0.074912,0.9529,0.850735,17.79828,13.349 -0.453761271,-1.705577872,0.971929,0.108397,0.902002,0.75299,35.6239,9.225326 -0.919075484,-1.09335456,0.79252,0.034036,0.414562,0.080662,4.819741,29.38059 -1.250179997,-1.312986156,0.918635,0.060836,0.106644,0.017272,12.29034,16.43763 -0.956921694,-1.10948128,0.884439,0.049489,0.058896,0.008513,8.653425,20.20646 -1.138179982,-0.469598076,0.916476,0.059926,0.027773,0.005209,11.97259,16.68723 -1.162583853,-1.118711482,0.971478,0.107509,0.021968,0.006974,35.06019,9.301535 -0.675699154,0.609161036,0.915217,0.059411,0.037889,0.016582,11.79476,16.83191 -0.856639545,0.174409986,0.99567,0.260467,0.070802,0.120304,230.927,3.839256 0.515605997,1.654084434,0.990698,0.186043,0.717409,0.73832,107.5016,5.375108 1.518038171,1.618328448,0.999316,0.498926,0.99587,0.997929,1462.908,2.004305 0.661278383,2.189338293,0.999272,0.490037,0.999016,0.999316,1373.244,2.040662 1.138179982,1.539889096,0.999735,0.629028,0.999927,0.999967,3771.681,1.589754 0.480571731,1.508247915,0.999163,0.470566,0.999668,0.999835,1195.339,2.125098 0.634207878,0.903538886,0.999115,0.462734,0.99979,0.999898,1130.281,2.161067 1.553807042,1.457921257,0.997424,0.320655,0.999969,0.999984,388.1736,3.118617 0.152959637,-0.443632691,0.999033,0.450316,0.999139,0.99978,1034.026,2.220661 0.758392158,1.432237608,0.972724,0.110012,0.997794,0.998575,36.66228,9.089898 1.04423884,1.037948228,0.998988,0.444002,0.99981,0.999902,988.1106,2.252244 0.733761608,1.202445463,0.997968,0.350445,0.999686,0.999849,492.1778,2.853516 1.15374896,-0.254775223,0.998481,0.388534,0.999942,0.999886,658.2084,2.573781 0.849481949,-0.0741067,0.980323,0.129794,0.997935,0.960598,50.81974,7.704538 0,-0.254775223,0.985631,0.151473,0.981985,0.644221,69.59591,6.601854 -1.279266144,-0.61643927,0.980323,0.129794,0.55525,0.06887,50.81974,7.704538 -1.902797179,-1.164699608,0.963321,0.094278,0.03307,0.016435,27.26374,10.60692 0,-0.07212677,0.908682,0.056906,0.220393,0.089131,10.95079,17.57285 -0.448754192,-0.803724451,0.985681,0.151726,0.255143,0.27243,69.83675,6.590834 0.299581731,-1.176440733,0.949629,0.07953,0.633675,0.71191,19.85267,12.57389 3.331235784,1.943115449,0.906943,0.056283,0.999594,0.999752,10.7461,17.76751 2.557684179,-0.617752028,0.99959,0.570322,0.999995,0.999974,2439.514,1.753395 -1.015237146,-1.535671052,0.963239,0.094167,0.285709,0.084843,27.20277,10.61947 -0.768249617,-1.92612332,0.837665,0.040051,0.040443,0.011644,6.160088,24.96805 -0.774197415,-0.254775223,0.721069,0.027517,0.00478,0.000471,3.585116,36.34132 -0.259403518,-0.067684429,0.980323,0.129794,0.059508,0.002902,50.81974,7.704538 -1.044395916,-0.254775223,0.985791,0.152295,0.023074,0.003135,70.38021,6.566187 -0.526317004,0.118359539,0.980323,0.129794,0.062255,0.008038,50.81974,7.704538 0,0.116972417,0.989737,0.177748,0.27019,0.017348,97.44173,5.625928 -1.061017911,-0.069418358,0.989712,0.177547,0.060115,0.010235,97.20521,5.632315 -0.267022856,-0.625833162,0.985748,0.152073,0.17138,0.016371,70.16758,6.575794 -1.345915337,-0.440821788,0.962729,0.093483,0.023019,0.002787,26.8306,10.6971 -1.915243221,-0.254775223,0.972856,0.110286,0.00315,0.002777,36.84017,9.067313 0.275862244,0.67201547,0.980323,0.129794,0.491627,0.30296,50.81974,7.704538 -0.275862244,0.480522208,0.996124,0.272688,0.542697,0.428643,257.9875,3.667199 0.550965581,1.199795878,0.994568,0.236587,0.923701,0.813028,184.1021,4.226771 2.173998664,1.000846655,0.998474,0.387908,0.99945,0.999649,655.1331,2.577933 1.335133317,0.985276097,0.997831,0.342092,0.999822,0.99994,460.9549,2.923188 1.578980173,0.796022537,0.99777,0.338615,0.999949,0.999981,448.4502,2.953202 1.038970385,-0.080710775,0.996885,0.297821,0.99959,0.99984,321.0721,3.357721 1.028286696,1.29831898,0.985465,0.15063,0.998059,0.998781,68.79865,6.638769 -0.256082086,-0.942063151,0.998718,0.411413,0.991324,0.998969,779.7715,2.430649 2.030526616,1.115109213,0.936539,0.070023,0.99972,0.999901,15.75771,14.28106 1.496287268,0.760461924,0.998227,0.368108,0.999943,0.999977,564.0664,2.716595 0.739830748,0.583452653,0.996684,0.290478,0.999436,0.999506,301.5447,3.4426 -0.739830748,-0.254775223,0.995469,0.255572,0.958726,0.9937,220.6977,3.912788 1.717833654,0.907063573,0.980323,0.129794,0.999089,0.999824,50.81974,7.704538 0.485437846,-0.254775223,0.99744,0.321419,0.99874,0.999703,390.5969,3.111203 0.241838086,-0.751054157,0.980323,0.129794,0.993645,0.998203,50.81974,7.704538 -0.241838086,-1.254783556,0.953906,0.08345,0.947179,0.990638,21.695,11.98321 -0.242424361,-1.264884821,0.894559,0.052284,0.817016,0.98219,9.484018,19.12623 0.966191091,0.419763591,0.892861,0.051789,0.981511,0.996351,9.333661,19.30925 0.240096154,-0.086849071,0.993955,0.225847,0.990136,0.998374,165.4305,4.427772 0.478469812,0.414123592,0.985308,0.149851,0.995335,0.998726,68.06593,6.673299 0.238379136,0.078003787,0.993895,0.224868,0.995918,0.998678,163.797,4.447054 0.475060276,1.392708498,0.988986,0.171958,0.996841,0.998253,90.79243,5.815373 0,0.558898917,0.998915,0.434319,0.997796,0.99904,921.3989,2.302456 0.708385489,0.552331661,0.995269,0.250954,0.999335,0.999712,211.353,3.984795 0.936775,0.70523215,0.995214,0.249728,0.999721,0.999907,208.9217,4.004354 0.696866932,0.538250345,0.996344,0.279289,0.999608,0.999922,273.5516,3.580525 0.92166551,0.532010897,0.995093,0.247113,0.999728,0.999948,203.803,4.046726 1.14026321,0.525868867,0.995039,0.245961,0.999793,0.999913,201.5753,4.065691 0.45248946,-0.410417277,0.994985,0.244829,0.998334,0.998917,199.4063,4.084476 -0.45248946,-0.4106599,0.974241,0.113289,0.922744,0.984798,38.82203,8.827014 0.226500663,0.056751509,0.974231,0.113264,0.959959,0.992368,38.80579,8.828903 0.900906994,0.519821989,0.988568,0.168969,0.994879,0.998943,87.4771,5.918238 0.670393572,0.207119363,0.994931,0.243719,0.998426,0.999618,197.2938,4.103082 0.444445176,0.204995702,0.991217,0.191019,0.998173,0.99943,113.8504,5.235068 0,0.050568526,0.991184,0.190693,0.992978,0.998086,113.4269,5.244023 0.883007945,0.504529868,0.988444,0.168107,0.9987,0.999474,86.53576,5.948576 0.657176516,0.498807846,0.994793,0.240927,0.999157,0.999585,192.0514,4.150637 0,0.344028962,0.99474,0.239888,0.996265,0.998674,190.126,4.168618 1.516822147,0.488722626,0.993094,0.21295,0.999874,0.999808,144.7998,4.695935 0.643089033,0.483235507,0.994646,0.238063,0.999011,0.99852,186.7795,4.200561 0.213447253,0.038910745,0.994594,0.237075,0.997362,0.99613,184.9837,4.218075 0.637621714,0.911418752,0.988206,0.166492,0.998334,0.98914,84.78867,6.006285 0.633581845,0.467249575,0.997459,0.322365,0.999268,0.984351,393.6121,3.102078 0.420168685,0.604828924,0.99444,0.234211,0.998697,0.954446,179.8502,4.269648 -1.478379618,0.030125255,0.995636,0.259638,0.841378,0.835141,229.1705,3.851515 3.141619623,0.453944966,0.988023,0.165283,0.999946,0.999983,83.49565,6.050221 1.229523686,0.308606549,0.994308,0.231846,0.999685,0.999928,175.6871,4.313201 1.013179893,0.445017696,0.99265,0.207105,0.999575,0.999903,136.0597,4.828464 0.603016903,-0.254775223,0.994218,0.230269,0.998644,0.999778,172.9482,4.342749 1.393057354,0.301554446,0.980323,0.129794,0.999032,0.999747,50.81974,7.704538 0.394477829,-0.39356775,0.992559,0.205956,0.99579,0.999359,134.3841,4.85541 0.784317746,0.575105059,0.974979,0.114983,0.996911,0.999314,39.96715,8.696942 0.778214044,-0.39261122,0.995402,0.253996,0.998994,0.999838,217.4751,3.937071 0.964327627,0.158164112,0.975021,0.11508,0.998243,0.99943,40.03319,8.689624 0.383142231,-0.392232289,0.990429,0.183608,0.996491,0.998529,104.4824,5.446373 0.191022026,0.567147213,0.975037,0.115118,0.986813,0.994125,40.05938,8.686726 0.949674754,0.830717118,0.995337,0.252499,0.998671,0.999303,214.447,3.960409 0.565505748,0.8190606,0.99707,0.305087,0.999152,0.999525,341.3461,3.277753 1.121507082,0.675464044,0.99701,0.302635,0.999858,0.999957,334.3952,3.304313 1.109068669,0.009425724,0.996147,0.273368,0.999839,0.999966,259.5611,3.658067 0.549955557,0.008729541,0.987582,0.162462,0.996981,0.999382,80.52751,6.155268 1.451931132,0.9224784,0.987567,0.162368,0.999716,0.999905,80.42956,6.158838 0,-0.515192036,0.997509,0.324772,0.995867,0.99949,401.3744,3.079083 1.075279178,-1.30327762,0.969154,0.103235,0.998613,0.999685,32.41917,9.686644 0.355872262,-0.915716161,0.886184,0.049945,0.954937,0.991916,8.786095,20.0219 0.531445006,-0.653446847,0.939255,0.071749,0.975511,0.993403,16.46231,13.93756 0.176522552,-1.191236916,0.960935,0.091182,0.970995,0.992374,25.59831,10.96711 0.877968765,-0.793860086,0.904709,0.055506,0.989915,0.990347,10.49414,18.01608 0.696866932,-1.205223654,0.950458,0.080251,0.992554,0.981796,20.18477,12.46089 -0.696866932,-0.527999436,0.902553,0.054781,0.643262,0.82112,10.26196,18.25444 0.174672533,-0.666016378,0.968469,0.102062,0.840187,0.835947,31.71485,9.798001 0.522194398,0.429690146,0.960091,0.090151,0.946596,0.830981,25.05703,11.09249 -1.047129987,-0.80197221,0.99406,0.227578,0.762141,0.817353,168.3455,4.394097 -0.704228263,-0.667146941,0.949777,0.079658,0.633185,0.813335,19.91124,12.55374 1.054491318,0.157596496,0.960014,0.090059,0.940303,0.83759,25.00893,11.10385 -0.877968765,0.700863449,0.990419,0.183524,0.799942,0.817758,104.3785,5.448884 0,0.960634742,0.996316,0.278415,0.916744,0.860763,271.452,3.591761 -0.353357258,0.94603974,0.997671,0.333149,0.921035,0.877589,429.3518,3.001662 1.928192955,1.193571359,0.99761,0.329932,0.99769,0.998683,418.4266,3.030929 -0.17376199,0.006321531,0.998457,0.386439,0.995765,0.998816,647.965,2.587732 0.865806274,0.005641591,0.987514,0.162043,0.998792,0.999787,80.0917,6.171208 1.369884436,0.134582829,0.987499,0.161951,0.999673,0.99995,79.99656,6.174707 1.183445765,0.904284759,0.990025,0.180119,0.999476,0.999807,100.2516,5.551887 -0.168208618,-0.382898238,0.997427,0.320817,0.995472,0.998981,388.6851,3.117046 0.33613477,0.638657651,0.975436,0.116067,0.991077,0.997407,40.71013,8.615698 0.335008689,0.378539117,0.995889,0.266158,0.995191,0.999139,243.2517,3.757172 0.167084416,-1.142542626,0.993501,0.218759,0.995303,0.999608,153.8584,4.571233 1.161838795,0.380147545,0.911885,0.0581,0.998344,0.999507,11.34884,17.21163 0.32948959,-0.001930587,0.993519,0.219033,0.997488,0.999027,154.2943,4.565525 -0.164609091,0.24900418,0.987333,0.160931,0.986555,0.995875,78.94472,6.213825 0.328947665,-0.758554626,0.991839,0.19754,0.994765,0.998163,122.5357,5.062271 0.327869146,0.999946383,0.953319,0.082881,0.986991,0.993352,21.42204,12.06544 0.163532334,1.230400591,0.997827,0.341891,0.995279,0.99718,460.2225,2.924911 1.298719553,0.357596562,0.998554,0.395159,0.999795,0.999946,691.5495,2.530627 0.32206147,0.23243646,0.993257,0.21522,0.997817,0.999601,148.2953,4.646398 0.641027836,0.712584195,0.991598,0.194941,0.998887,0.999727,119.023,5.129762 0.636944829,-0.495739195,0.996391,0.280763,0.999371,0.99969,277.122,3.561725 0.790517951,-0.496321234,0.970167,0.10504,0.997226,0.995539,33.51995,9.520198 -0.473560475,0.227734761,0.970137,0.104985,0.916127,0.963155,33.48646,9.525131 -0.316957476,-0.495739195,0.991529,0.194208,0.900756,0.973759,118.0447,5.149119 0.947874395,-0.981170668,0.970167,0.10504,0.989606,0.986317,33.51995,9.520198 0.470589104,-0.86416163,0.932298,0.067532,0.985506,0.977079,14.77062,14.8078 0.312500254,-0.377099397,0.944258,0.075239,0.985659,0.952452,17.93983,13.29092 0,-0.010276323,0.975681,0.11666,0.977998,0.911104,41.11986,8.571902 0,-1.236378196,0.987147,0.159814,0.97716,0.863095,77.80166,6.257281 -0.940445803,-0.997352892,0.897593,0.053199,0.571132,0.130312,9.764992,18.79744 -0.315457675,-0.628142178,0.930467,0.066526,0.622688,0.094451,14.38174,15.03183 -1.913934021,-1.762341463,0.962582,0.093289,0.063426,0.058408,26.72524,10.71939 0,-1.656965182,0.775512,0.032228,0.225625,0.08805,4.454573,31.02891 -0.161160389,-1.157424807,0.806314,0.035662,0.254053,0.081773,5.163006,28.04107 -0.161420535,-1.427427097,0.909745,0.057296,0.312242,0.082945,11.07976,17.45337 -0.161681523,0.268101786,0.862067,0.044401,0.350647,0.075984,7.249919,22.52179 -0.324149392,0.005641591,0.992108,0.200568,0.35564,0.08417,126.7146,4.985841 0.162206037,-0.645655199,0.987499,0.161951,0.560933,0.093965,79.99656,6.174707 -0.162206037,-0.254775223,0.961449,0.091826,0.537342,0.049522,25.93994,10.89017 -0.651468102,-0.12431206,0.980323,0.129794,0.374913,0.026253,50.81974,7.704538 -1.98026273,-0.515871977,0.984317,0.145166,0.047826,0.01706,63.76256,6.888671 -0.668898815,0.266738345,0.969118,0.103172,0.07057,0.089974,32.38137,9.69252 2.32182901,2.058952669,0.992089,0.200351,0.996504,0.998615,126.4116,4.99125 0.816331064,1.133259681,0.999666,0.598297,0.999608,0.999748,2994.507,1.671411 -0.325733187,0.990570885,0.998283,0.372317,0.996151,0.998366,582.4516,2.685885 0,0.975252586,0.997791,0.339796,0.995483,0.998675,452.6639,2.942944 0.48820276,0.960306556,0.99773,0.336386,0.998223,0.999443,440.5808,2.972771 0.485830915,0.227153421,0.99767,0.333076,0.999307,0.999532,429.103,3.002315 0.483482005,-0.134655088,0.99152,0.194118,0.998995,0.998427,117.9244,5.151519 -0.32206147,-0.254775223,0.984032,0.143894,0.97904,0.983415,62.62387,6.949559 -0.485045413,-0.134799203,0.980323,0.129794,0.938173,0.975489,50.81974,7.704538 1.607751673,0.342955188,0.984028,0.143876,0.998955,0.999299,62.60816,6.950412 0.635932191,0.576090091,0.993081,0.212771,0.998925,0.999286,144.5267,4.699884 0.47430919,0.686408196,0.99541,0.254182,0.999189,0.999475,217.8529,3.934195 1.098050248,1.601426563,0.996221,0.275536,0.999835,0.999777,264.6192,3.629292 2.313133202,1.001666206,0.99925,0.485837,0.999997,0.999999,1332.794,2.058304 0.607904608,0.761608456,0.997834,0.342276,0.999278,0.999798,461.6227,2.921621 0.754720564,0.751381952,0.99669,0.290713,0.999428,0.999787,302.1553,3.439816 1.640603539,0.189176672,0.99663,0.28862,0.999933,0.999716,296.7525,3.464758 -0.148038517,0.297407296,0.990936,0.188277,0.969096,0.967757,110.3223,5.311322 0.295858204,0.403844063,0.992504,0.205282,0.986593,0.970996,133.4085,4.871345 -0.147819687,0.941541383,0.993783,0.223091,0.977096,0.968988,160.8614,4.482476 1.322576222,0.927398674,0.997591,0.328943,0.998801,0.998864,415.1158,3.040036 1.016711736,0.702169879,0.99753,0.325846,0.999704,0.999857,404.8768,3.068933 1.434744841,0.272930487,0.996325,0.278676,0.999925,0.999983,272.0782,3.588396 1.273902578,0.688133806,0.992175,0.201339,0.999748,0.999938,127.7938,4.966745 0.84034108,0.679326017,0.996232,0.275879,0.999342,0.999808,265.4257,3.624783 0.139372845,0.260424268,0.996173,0.274132,0.995875,0.999113,261.3349,3.647877 1.383147915,0.257783562,0.992001,0.199346,0.999666,0.999877,125.0176,5.016393 0,-0.254775223,0.991964,0.198928,0.989225,0.998045,124.4392,5.026955 0.274348595,-0.459483585,0.980323,0.129794,0.990614,0.998648,50.81974,7.704538 0.546449447,-0.254775223,0.97197,0.108478,0.99436,0.99884,35.67552,9.218444 0.678889233,-0.357286764,0.980323,0.129794,0.996777,0.998968,50.81974,7.704538 0.674311388,-0.357391958,0.976499,0.118706,0.997527,0.998412,42.55193,8.424158 -0.134499012,-1.079522166,0.976495,0.118695,0.975119,0.994022,42.5442,8.424935 0.80429388,0.158448506,0.920447,0.061627,0.992724,0.988967,12.57021,16.22671 0.399734043,-0.357921183,0.990434,0.183651,0.995204,0.97519,104.5345,5.445116 0,0.054344034,0.976474,0.11864,0.983656,0.800248,42.50529,8.428844 -1.608613775,-1.705577872,0.98852,0.168633,0.562207,0.511364,87.10935,5.930029 -1.360565206,-0.568418972,0.79252,0.034036,0.096388,0.35606,4.819741,29.38059 -0.411805661,-1.413292656,0.966209,0.098436,0.204065,0.69766,29.59395,10.15889 0.411805661,0.273488024,0.865016,0.045002,0.595717,0.908375,7.408271,22.22136 -0.137080213,-2.169727356,0.992183,0.201428,0.72574,0.984782,127.919,4.964546 1.227009259,-0.685346394,0.626806,0.021725,0.950442,0.993143,2.679573,46.0302 0.27063616,-1.995842053,0.958759,0.088587,0.947225,0.991789,24.24776,11.2884 -0.542006747,-1.469588616,0.695583,0.025721,0.43882,0.956923,3.284971,38.87884 -0.272109011,-2.843552318,0.852951,0.042656,0.385227,0.973482,6.800439,23.44344 0.407886357,-3.029519711,0.337541,0.011234,0.365046,0.940246,1.509526,89.01414 -0.680737823,-2.507389736,0.268259,0.009355,0.042072,0.326115,1.366603,106.8957 -2.910808416,-3.051310047,0.480212,0.015625,0.000167,0.001551,1.92386,64.00167 -4.311012365,-2.751783857,0.260755,0.009156,3.22E-07,1.93E-07,1.352731,109.2157 -2.678731596,-1.655180031,0.374766,0.012295,0.000114,2.04E-05,1.599401,81.33679 -1.519786091,-0.254775223,0.806807,0.035723,0.00992,0.001681,5.176182,27.9931 -1.854767236,0.638657651,0.980323,0.129794,0.018244,0.021481,50.81974,7.704538 0.931683758,2.872433952,0.995889,0.266158,0.990389,0.984939,243.2517,3.757172 -0.309597771,2.058170247,0.999921,0.769845,0.997879,0.994669,12636.12,1.298963 1.232681248,1.178941092,0.999666,0.59811,0.999963,0.999962,2990.363,1.671934 0.610688921,1.392320837,0.998416,0.382994,0.999825,0.999856,631.4245,2.611004 1.810004164,1.135745444,0.998914,0.434224,0.999994,0.999998,920.7675,2.302958 1.040901591,1.230117852,0.998291,0.372895,0.999896,0.99994,585.0158,2.681722 0.442805152,0.872632435,0.998553,0.395092,0.999374,0.999644,691.204,2.531057 1.025650017,0.74913728,0.997279,0.313996,0.999794,0.999933,367.56,3.184751 0.726219604,0.298629621,0.996617,0.288162,0.999324,0.99984,295.5797,3.470267 1.151091847,2.359752788,0.99252,0.205481,0.999698,0.999751,133.6953,4.866642 1.702168757,0.814753689,0.999804,0.667642,0.999995,0.999997,5099.394,1.497809 -0.281690327,0.169853866,0.996987,0.301731,0.988629,0.997757,331.863,3.314205 0.422238488,-0.254775223,0.990623,0.185358,0.994593,0.999175,106.6461,5.394978 1.11733006,0.694098528,0.980323,0.129794,0.998718,0.999598,50.81974,7.704538 0.138792527,0.581175309,0.996272,0.277065,0.996593,0.999107,268.2325,3.609258 0.553251757,0.986192099,0.995451,0.255142,0.999018,0.999604,219.8138,3.919393 0.550207715,-0.152053077,0.997774,0.33882,0.999449,0.999824,449.1764,2.951424 0.273972774,0.052759617,0.98354,0.141776,0.994496,0.998736,60.7549,7.053403 0.409556886,-0.459693327,0.988488,0.168412,0.996898,0.999458,86.86817,5.937803 1.621657159,0.256734844,0.971959,0.108458,0.999763,0.999944,35.66265,9.220158 0.801072375,0.558237386,0.991949,0.198761,0.999117,0.999664,124.2103,5.031157 0.39814253,-0.55888088,0.995263,0.25083,0.998457,0.9996,211.1068,3.986759 0.528402815,0.554127065,0.966756,0.099281,0.993206,0.997635,30.08084,10.07241 0.918039234,0.147235369,0.995229,0.250063,0.998833,0.999739,209.5836,3.998994 1.425818063,0.345226577,0.990244,0.181985,0.999803,0.999945,102.4996,5.494966 0.769234562,0.242490844,0.993108,0.21315,0.999145,0.999607,145.1049,4.691536 0.763362486,0.240030339,0.991745,0.196515,0.998918,0.9987,121.1424,5.088672 0,-0.452403745,0.99171,0.196129,0.989358,0.993594,120.6202,5.098689 0.126662462,0.140092023,0.972309,0.109161,0.978339,0.987864,36.11284,9.160778 0.505051579,0.138538952,0.990121,0.18093,0.993744,0.988417,101.2242,5.527014 0,-0.352958834,0.990094,0.180701,0.99008,0.98104,100.9491,5.534012 0.125865341,0.235181662,0.976674,0.119157,0.989489,0.964464,42.8715,8.39227 -0.504414689,0.524196584,0.991639,0.19537,0.969856,0.948772,119.5979,5.118502 -0.379987791,-1.425520302,0.99497,0.244522,0.967665,0.959038,198.8198,4.08961 0.25348556,0.721795039,0.862468,0.044482,0.970092,0.955156,7.271051,22.48101 1.257878221,-0.157640684,0.99645,0.282616,0.99851,0.999025,281.6611,3.538364 2.469261259,0.807523517,0.98338,0.141101,0.99996,0.999993,60.16677,7.087137 0.365186042,-0.062836584,0.996948,0.300219,0.998383,0.999737,327.6553,3.330906 0.967359418,-0.063204283,0.985911,0.152919,0.99885,0.999653,70.97817,6.539414 0.240384731,-0.1591272,0.985902,0.152872,0.985968,0.996845,70.93264,6.54144 0.359497092,0.12690463,0.983336,0.140922,0.985582,0.997137,60.01128,7.096143 0.596304689,0.787394324,0.98989,0.178994,0.995791,0.999151,98.91166,5.586781 0.474496738,0.683317961,0.996838,0.29603,0.998119,0.999621,316.2206,3.378041 0.824989947,-1.004544433,0.9962,0.274923,0.99947,0.999879,263.1811,3.637385 0.234466696,-1.105040147,0.929639,0.066083,0.973479,0.994679,14.21246,15.13255 -0.351906522,-0.349696919,0.917076,0.060175,0.837521,0.975782,12.05919,16.6181 0.819197091,-0.065021845,0.976806,0.119498,0.981506,0.995373,43.11398,8.368327 0.349040494,0.312334048,0.985857,0.152638,0.988305,0.995471,70.70799,6.551467 -1.05079776,-1.774272644,0.992698,0.207715,0.894287,0.99297,136.9538,4.814297 1.166874383,0.317745425,0.771813,0.03186,0.988582,0.995563,4.382375,31.38737 -0.116076624,-0.731647848,0.992767,0.208602,0.980489,0.994129,138.2624,4.793824 -0.582412829,-1.699191283,0.955394,0.084938,0.901932,0.98689,22.41829,11.77325 -0.351082865,-0.643502631,0.794373,0.034246,0.786776,0.97531,4.86317,29.20089 0.234192145,0.036911907,0.96159,0.092005,0.907804,0.989016,26.03516,10.86902 0.583092031,-1.623320531,0.988165,0.166217,0.980553,0.997262,84.49271,6.016248 -0.349447065,-1.045293173,0.815446,0.036831,0.813883,0.981361,5.418479,27.1512 -0.116754246,-0.45338502,0.924772,0.063625,0.84513,0.988189,13.29296,15.71707 0.349854584,0.339874696,0.972262,0.109066,0.941725,0.996621,36.0519,9.168746 0.348634868,0.04122894,0.993043,0.212258,0.976028,0.998566,143.7461,4.711237 0,-3.763907204,0.988254,0.166812,0.977807,0.996803,85.13322,5.994756 -1.991864331,-3.048542024,0.090834,0.004528,0.000994,0.000706,1.099909,220.8295 -2.395324102,-2.05471794,0.2617,0.009181,4.17E-05,7.18E-06,1.354464,108.9182 -1.219527309,1.124556991,0.673076,0.024294,0.004628,0.002611,3.058815,41.1631 -0.368777308,1.830806105,0.998257,0.370296,0.500822,0.339791,573.5626,2.70054 1.467018975,1.788196751,0.9995,0.542762,0.997952,0.997913,1999.861,1.842429 1.326119494,1.945313517,0.999461,0.532227,0.99995,0.999976,1854.638,1.878896 0.597016699,1.120492033,0.999592,0.570858,0.999914,0.999955,2449.021,1.75175 1.76995771,1.294142482,0.998244,0.369354,0.999986,0.999964,569.4573,2.707429 0.466745305,-1.511437483,0.998708,0.410407,0.999244,0.997526,774.035,2.436604 -0.818239515,-0.254775223,0.843414,0.040988,0.326695,0.486205,6.386265,24.39728 0.234466696,-1.527430677,0.980323,0.129794,0.620234,0.57859,50.81974,7.704538 0.350672481,0.236626258,0.839639,0.040367,0.727452,0.531554,6.235911,24.77242 -0.820156911,1.20510472,0.99166,0.195596,0.466363,0.540615,119.9016,5.112589 0.703402666,-0.06172497,0.998488,0.389162,0.916907,0.973143,661.3095,2.569624 0.582412829,-1.223775053,0.985938,0.153062,0.963691,0.982081,71.11601,6.533293 1.154747242,-0.938705588,0.899626,0.053834,0.990701,0.975191,9.962739,18.57575 -0.229885159,-0.156784034,0.936891,0.070241,0.897689,0.783124,15.84569,14.23678 -0.461361833,-2.333029141,0.983404,0.141204,0.794385,0.753315,60.25656,7.081953 -0.812540744,-1.766139004,0.557115,0.018528,0.171532,0.036557,2.257921,53.97118 -1.17234637,-0.967972336,0.774339,0.03211,0.027752,0.003402,4.431428,31.14254 -0.828897582,-0.254775223,0.933758,0.068363,0.035629,0.005839,15.09614,14.62774 -2.042113006,-0.87016178,0.980323,0.129794,0.003098,0.009828,50.81974,7.704538 2.160948433,1.479077494,0.943696,0.074825,0.992471,0.778072,17.76086,13.36448 -0.595594375,-0.86329637,0.999068,0.45553,0.972901,0.732705,1073.447,2.195245 -0.599162967,0.555766196,0.944339,0.075299,0.853426,0.378938,17.9658,13.28034 -0.60277458,0.04749201,0.995242,0.250369,0.790276,0.371875,210.1897,3.994109 -0.363416511,-0.860226113,0.988382,0.16768,0.753714,0.363695,86.07119,5.96374 -0.486618965,0.350675668,0.944624,0.075512,0.714989,0.324441,18.05826,13.2429 -0.488998529,-0.860226113,0.993174,0.21406,0.729723,0.323841,146.5017,4.671584 -0.73801073,1.550690069,0.944624,0.075512,0.580812,0.261166,18.05826,13.2429 -0.867953372,0.931009422,0.999179,0.473244,0.578198,0.277407,1218.394,2.113077 -0.374298628,0.917113189,0.997546,0.326635,0.707543,0.30974,407.4666,3.061517 -0.878850603,1.382237742,0.997485,0.323603,0.61892,0.334752,397.5898,3.090206 1.873883689,1.731105642,0.998894,0.431762,0.99695,0.995893,904.496,2.31609 -0.123839025,1.875921409,0.999404,0.518069,0.996208,0.996239,1676.458,1.930245 0.740744128,1.831468243,0.999538,0.553874,0.999562,0.999449,2166.045,1.805464 1.222509113,1.61277572,0.999501,0.542925,0.999954,0.999948,2002.206,1.841874 1.087624014,1.318683813,0.999265,0.488657,0.999952,0.99995,1359.821,2.046425 0.599162967,1.123368898,0.998763,0.416326,0.999804,0.999831,808.3585,2.401964 1.8935477,0.851148427,0.998253,0.370021,0.99999,0.999997,572.3597,2.702551 1.396995944,-0.085713475,0.997174,0.309412,0.999894,0.999984,353.881,3.231936 1.605539075,0.753636684,0.985337,0.149995,0.999741,0.99988,68.20089,6.666895 0.793205292,0.991605682,0.996644,0.289081,0.999183,0.999596,297.9353,3.459237 0.225479239,0.40366337,0.997795,0.340027,0.997023,0.999054,453.492,2.940945 0.449438959,-0.09084076,0.993781,0.22306,0.996934,0.999197,160.8103,4.483102 1.997846693,0.560889985,0.985206,0.149346,0.999907,0.99996,67.5937,6.695867 -0.109950533,-0.011367395,0.995285,0.251326,0.991229,0.998241,212.0957,3.97889 1.094102818,-0.335845353,0.987122,0.159668,0.999193,0.999842,77.65346,6.262989 0.542594929,-0.254775223,0.977355,0.120955,0.994139,0.998968,44.15939,8.267515 0.647251451,-0.498380702,0.980323,0.129794,0.995376,0.998917,50.81974,7.704538 0.536194314,-1.235175232,0.970031,0.104793,0.994501,0.997714,33.36824,9.542611 0.426894992,-0.666129155,0.897789,0.053259,0.971946,0.979953,9.783677,18.77616 0.106439606,-0.585081056,0.960083,0.090142,0.962867,0.966886,25.05222,11.09362 -0.106439606,-0.503222555,0.965233,0.096975,0.940936,0.950183,28.76288,10.31193 -0.748266452,-1.254783556,0.969781,0.104342,0.76834,0.931916,33.092,9.583847 0.107238616,0.32977759,0.894559,0.052284,0.860669,0.934184,9.484018,19.12623 -0.537346806,-0.088385833,0.992919,0.210584,0.811555,0.946245,141.2174,4.748694 0.322754449,0.655450342,0.985269,0.149656,0.932476,0.981206,67.88373,6.681977 0.749067173,-0.007963086,0.996009,0.269432,0.986391,0.998054,250.5611,3.711506 0.319319058,0.155229452,0.987199,0.160123,0.989896,0.998346,78.1168,6.2452 0.424178791,-0.582644369,0.99038,0.183171,0.994851,0.998571,103.9462,5.45937 0.211416569,0.481424422,0.965377,0.097188,0.985318,0.994002,28.88289,10.28939 -0.317292704,0.637725631,0.994577,0.236749,0.974389,0.994064,184.3947,4.223877 -0.318302656,-0.012742027,0.995882,0.265977,0.972779,0.996001,242.8523,3.759729 0.424178791,0.547797304,0.987091,0.159485,0.991157,0.997657,77.46716,6.27019 0.52770571,0.303217457,0.995175,0.248884,0.997095,0.998412,207.2595,4.017933 -0.845671002,-0.095918954,0.99258,0.206226,0.964595,0.994523,134.7773,4.849039 0.423729448,-0.096170907,0.985074,0.148705,0.992983,0.999185,66.99774,6.724707 1.0515344,0.848466858,0.985068,0.148674,0.998878,0.999535,66.96831,6.726142 0.521649592,0.058214078,0.997161,0.308843,0.999332,0.999044,352.2099,3.237896 -0.626306849,0.44588938,0.988598,0.169174,0.97062,0.975742,87.70129,5.911089 -0.946877143,0.518026151,0.994227,0.230423,0.8624,0.970184,173.2137,4.339852 0.21119332,0.741020061,0.994915,0.24339,0.960821,0.990965,196.6708,4.108629 0,-0.178584743,0.996568,0.286509,0.980038,0.995015,291.3771,3.49029 -0.422833611,0.352667799,0.982763,0.138595,0.967675,0.993153,58.0133,7.215263 0.422833611,0.1230114,0.993198,0.214394,0.992047,0.998513,147.0157,4.664316 0.210748234,-0.179388864,0.989821,0.178426,0.993555,0.998815,98.23918,5.604575 0.105207795,-0.179445652,0.982738,0.1385,0.992219,0.99878,57.9322,7.220236 0.524385051,0.719380102,0.982737,0.138493,0.996896,0.999182,57.92648,7.220587 0.625653761,0.56216211,0.996434,0.28213,0.999026,0.999748,280.4639,3.544468 0.518404479,1.140767073,0.995296,0.251565,0.999154,0.999728,212.5717,3.975124 -0.207039411,-0.620139166,0.998306,0.374063,0.997592,0.999653,590.2304,2.673344 1.133448507,0.401921774,0.963089,0.093964,0.999194,0.999772,27.09228,10.64234 0.612872194,0.108201582,0.993762,0.22276,0.998998,0.999717,160.3183,4.48914 0.101781179,0.106888824,0.989553,0.176277,0.994797,0.998924,95.72304,5.6729 0.911398714,0.249367005,0.989529,0.176087,0.999216,0.999878,95.50317,5.679005 0.903167203,0.745947925,0.991844,0.197597,0.999333,0.999799,122.6137,5.060805 0.696866932,0.665585256,0.996598,0.287512,0.999538,0.99986,293.9212,3.478115 0.19821612,0.587335017,0.99608,0.271421,0.998165,0.999422,255.0789,3.684312 -0.099058948,-0.184918426,0.9955,0.256308,0.994129,0.998841,222.2128,3.901563 1.37797456,-0.955548938,0.982572,0.137845,0.999626,0.999936,57.37764,7.254539 -0.097799519,-1.671229499,0.935105,0.069154,0.930233,0.995009,15.40958,14.46039 0.390625497,-0.755312557,0.80234,0.035177,0.948296,0.994171,5.059202,28.42743 0.873367997,-0.541925456,0.953574,0.083127,0.991467,0.997363,21.53958,12.02982 0,1.030956775,0.967707,0.100799,0.964467,0.989474,30.96693,9.920704 0.38572854,0.099458233,0.997943,0.348864,0.992199,0.99849,486.1363,2.866449 0.38424639,0.027710841,0.989392,0.175018,0.994663,0.998948,94.26824,5.713712 0.478240988,-0.254775223,0.987973,0.164952,0.99638,0.999246,83.14381,6.062363 0.190657827,1.284793325,0.980323,0.129794,0.992561,0.997475,50.81974,7.704538 1.042169546,-1.021596687,0.998687,0.408159,0.999528,0.999925,761.3466,2.450024 0.282353129,0.512046241,0.927639,0.065044,0.975543,0.993616,13.81959,15.37428 -0.18814681,-0.532939519,0.994862,0.242297,0.971926,0.996641,194.6104,4.127172 0.282087634,-0.046079495,0.968201,0.101612,0.982953,0.997814,31.44742,9.841334 0.374883288,-0.115886311,0.986317,0.15509,0.990888,0.998919,73.08507,6.447859 0.466636404,0.367848719,0.984545,0.146209,0.995251,0.99914,64.7057,6.83953 0.278940209,0.363996088,0.993377,0.216948,0.996696,0.99937,150.9929,4.609406 -0.092893643,-0.460607199,0.993332,0.216297,0.993101,0.999184,149.9734,4.623263 0.092893643,-0.805740804,0.971915,0.10837,0.987592,0.998861,35.60662,9.227633 0.832182334,0.364848102,0.949458,0.079383,0.996554,0.998853,19.7855,12.59712 -0.276625349,-1.151023897,0.993342,0.216441,0.98859,0.997907,150.1983,4.620194 0.0922935,-0.393375383,0.910671,0.05764,0.972372,0.992142,11.19463,17.34896 -0.555043053,-0.324147407,0.974988,0.115002,0.903768,0.986716,39.98042,8.69547 0.370370794,0.29885941,0.977809,0.122198,0.974867,0.993904,45.06244,8.183451 0,-0.254775223,0.992523,0.205518,0.983604,0.995434,133.7493,4.865758 -0.463178225,-0.600437509,0.980323,0.129794,0.957314,0.993103,50.81974,7.704538 0.370714048,-0.116366896,0.964309,0.095646,0.985209,0.995093,28.01833,10.45524 0.461468285,0.228150863,0.984532,0.146149,0.993298,0.99477,64.65153,6.842322 -1.018055993,-0.18597577,0.991535,0.194273,0.925053,0.98478,118.131,5.147402 0.925932541,-1.152881432,0.98254,0.13772,0.994723,0.998705,57.27221,7.261119 0.367985696,0.643330987,0.910404,0.05754,0.979827,0.993702,11.16116,17.37919 -0.091869552,-0.392421493,0.995923,0.267066,0.985953,0.997027,245.2641,3.744387 0.549955557,0.294676709,0.975029,0.115099,0.995689,0.997797,40.0463,8.688173 0.637815374,-0.117882662,0.992468,0.204839,0.998109,0.997892,132.77,4.881873 0.272109011,-0.254775223,0.984492,0.145961,0.995294,0.993997,64.48097,6.851136 0.090538711,-1.493607308,0.980323,0.129794,0.990487,0.977956,50.81974,7.704538 0.090456813,-1.089272416,0.847537,0.041691,0.931279,0.673766,6.558985,23.98603 -0.634922768,-1.449028967,0.919174,0.061068,0.690833,0.311984,12.37223,16.37508 -1.46657074,-1.535020305,0.857457,0.043499,0.106714,0.061139,7.015435,22.98918 -1.020890537,-0.326382816,0.837821,0.040076,0.043505,0.052134,6.166036,24.95254 -0.56127369,-0.829489448,0.977723,0.12196,0.099843,0.083295,44.88842,8.19944 -0.847861886,0.891369129,0.947402,0.077674,0.061426,0.095738,19.01212,12.8743 -0.664454272,0.454950964,0.997368,0.318024,0.171692,0.313946,379.9219,3.144416 0.285306898,0.309401168,0.994318,0.232025,0.650277,0.650277,175.9985,4.309888 \ No newline at end of file diff --git a/statsmodels/tsa/regime_switching/tests/results/results_predict_fedfunds.csv b/statsmodels/tsa/regime_switching/tests/results/results_predict_fedfunds.csv new file mode 100644 index 0000000..7928eb3 --- /dev/null +++ b/statsmodels/tsa/regime_switching/tests/results/results_predict_fedfunds.csv @@ -0,0 +1,227 @@ +const_p1,const_p2,const_f1,const_f2,const_sm1,const_sm2,const_yhat1,const_yhat2,const_pyhat,const_fyhat,const_syhat,constL1exog_syhat,constL1exog_syhat1,constL1exog_syhat2 +.7376958,.2623042,.9997776,.0002225,.9999886,.0000114,3.70877,9.556793,5.242731,3.710071,3.708837,,, +.9818866,.0181134,.999989,.000011,.9999995,5.62e-07,3.70877,9.556793,3.814698,3.708834,3.708773,,, +.9820836,.0179164,.9999828,.0000172,.9999991,8.81e-07,3.70877,9.556793,3.813545,3.70887,3.708775,,, +.9820778,.0179221,.9999788,.0000212,.9999989,1.09e-06,3.70877,9.556793,3.813579,3.708894,3.708776,,, +.9820741,.0179259,.9999622,.0000378,.999998,1.95e-06,3.70877,9.556793,3.813601,3.708991,3.708781,1.831308,2.472625,1.392144 +.9820586,.0179414,.9999341,.0000659,.9999966,3.39e-06,3.70877,9.556793,3.813692,3.709155,3.70879,2.268597,2.839436,1.934797 +.9820325,.0179675,.9999228,.0000772,.999996,3.98e-06,3.70877,9.556793,3.813844,3.709222,3.708793,2.504288,3.019767,2.2552 +.9820219,.0179781,.9998981,.0001019,.9999948,5.26e-06,3.70877,9.556793,3.813906,3.709366,3.708801,2.707525,3.046899,2.523101 +.9819989,.0180011,.9998805,.0001195,.9999938,6.17e-06,3.70877,9.556793,3.814041,3.709469,3.708806,2.969676,3.084172,2.896406 +.9819825,.0180175,.9998599,.0001401,.9999928,7.24e-06,3.70877,9.556793,3.814137,3.709589,3.708812,3.18926,3.243036,3.146579 +.9819633,.0180367,.9998598,.0001402,.9999927,7.25e-06,3.70877,9.556793,3.814249,3.70959,3.708812,3.376379,3.322518,3.43591 +.9819632,.0180368,.9998462,.0001538,.999992,7.97e-06,3.70877,9.556793,3.81425,3.709669,3.708817,3.273995,3.161087,3.438036 +.9819506,.0180494,.9997917,.0002083,.9999892,.0000108,3.70877,9.556793,3.814323,3.709988,3.708833,3.302091,3.209093,3.468282 +.9818998,.0181002,.9997855,.0002144,.999989,.000011,3.70877,9.556793,3.81462,3.710024,3.708834,3.190691,3.082165,3.518581 +.9818941,.0181059,.9999656,.0000344,.9999982,1.77e-06,3.70877,9.556793,3.814654,3.708971,3.70878,2.676074,2.657601,3.506871 +.9820618,.0179382,.9999899,.0000102,.9999995,5.21e-07,3.70877,9.556793,3.813673,3.708829,3.708773,1.505545,1.462715,2.16521 +.9820844,.0179156,.9999833,.0000167,.9999992,8.60e-07,3.70877,9.556793,3.813541,3.708868,3.708775,1.018261,.958331,1.162562 +.9820783,.0179217,.9999495,.0000506,.9999974,2.60e-06,3.70877,9.556793,3.813577,3.709066,3.708785,1.511617,1.521546,1.493146 +.9820467,.0179533,.9999131,.0000869,.9999955,4.50e-06,3.70877,9.556793,3.813761,3.709278,3.708796,2.263951,2.353165,2.083339 +.9820129,.0179871,.9998296,.0001704,.9999911,8.89e-06,3.70877,9.556793,3.813959,3.709766,3.708822,2.748969,2.898975,2.406418 +.9819351,.0180649,.9996696,.0003304,.9999825,.0000175,3.70877,9.556793,3.814414,3.710702,3.708872,3.084917,3.156353,2.964966 +.981786,.018214,.9994285,.0005715,.9999698,.0000301,3.70877,9.556793,3.815286,3.712112,3.708946,3.503891,3.489995,3.520062 +.9815614,.0184387,.9994652,.0005348,.999972,.000028,3.70877,9.556793,3.8166,3.711897,3.708934,3.986069,4.035326,3.934834 +.9815956,.0184044,.9996057,.0003944,.9999796,.0000204,3.70877,9.556793,3.8164,3.711076,3.708889,3.845686,3.776379,3.920848 +.9817264,.0182736,.999856,.000144,.9999926,7.41e-06,3.70877,9.556793,3.815634,3.709612,3.708813,3.53088,3.489225,3.580799 +.9819597,.0180403,.9999388,.0000612,.9999968,3.14e-06,3.70877,9.556793,3.81427,3.709128,3.708788,2.659254,2.546042,2.803689 +.9820368,.0179632,.9999589,.000041,.9999979,2.11e-06,3.70877,9.556793,3.813819,3.70901,3.708782,2.095736,1.980844,2.224948 +.9820556,.0179444,.9999713,.0000287,.9999985,1.48e-06,3.70877,9.556793,3.813709,3.708938,3.708779,1.852,1.863727,1.839663 +.982067,.0179329,.9999731,.0000269,.9999986,1.38e-06,3.70877,9.556793,3.813642,3.708927,3.708778,1.705161,1.723561,1.684164 +.9820688,.0179312,.9999306,.0000694,.9999964,3.57e-06,3.70877,9.556793,3.813632,3.709176,3.708791,1.730321,1.840032,1.567684 +.9820292,.0179708,.9999248,.0000752,.9999961,3.88e-06,3.70877,9.556793,3.813864,3.70921,3.708793,2.431717,2.542717,2.304694 +.9820237,.0179763,.9999083,.0000917,.9999953,4.73e-06,3.70877,9.556793,3.813895,3.709306,3.708798,2.513138,2.57788,2.44728 +.9820084,.0179916,.9998741,.0001259,.9999935,6.50e-06,3.70877,9.556793,3.813985,3.709506,3.708808,2.62614,2.693316,2.561214 +.9819766,.0180234,.9998617,.0001383,.9999928,7.15e-06,3.70877,9.556793,3.814172,3.709579,3.708812,2.791865,2.801997,2.782812 +.981965,.018035,.9998522,.0001478,.9999924,7.64e-06,3.70877,9.556793,3.814239,3.709634,3.708815,2.851919,2.871364,2.834998 +.9819561,.0180438,.9998541,.0001459,.9999924,7.58e-06,3.70877,9.556793,3.814291,3.709624,3.708814,2.906022,2.966903,2.852718 +.9819579,.0180421,.9997625,.0002375,.9999877,.0000124,3.70877,9.556793,3.814281,3.710159,3.708842,3.009227,3.079246,2.945725 +.9818726,.0181274,.9997206,.0002794,.9999855,.0000145,3.70877,9.556793,3.81478,3.710404,3.708855,3.324776,3.365401,3.290619 +.9818335,.0181665,.9997162,.0002838,.9999852,.0000148,3.70877,9.556793,3.815008,3.710429,3.708857,3.525028,3.609638,3.459325 +.9818295,.0181705,.9997047,.0002953,.9999846,.0000154,3.70877,9.556793,3.815032,3.710497,3.70886,3.538539,3.633008,3.467517 +.9818187,.0181813,.999716,.000284,.9999852,.0000148,3.70877,9.556793,3.815094,3.710431,3.708857,3.540229,3.700191,3.420547 +.9818292,.0181708,.9996676,.0003324,.9999824,.0000176,3.70877,9.556793,3.815033,3.710714,3.708873,3.489318,3.58355,3.411572 +.9817842,.0182159,.9994432,.0005567,.9999704,.0000296,3.70877,9.556793,3.815297,3.712026,3.708943,3.71,3.888904,3.552691 +.9815751,.0184249,.9993491,.000651,.9999654,.0000345,3.70877,9.556793,3.816519,3.712577,3.708972,4.116197,4.243034,4.028508 +.9814873,.0185127,.9993544,.0006456,.9999655,.0000345,3.70877,9.556793,3.817033,3.712545,3.708972,4.275736,4.45837,4.177522 +.9814923,.0185077,.9992639,.0007361,.9999595,.0000405,3.70877,9.556793,3.817003,3.713075,3.709007,4.358746,4.631372,4.229281 +.9814079,.018592,.9987648,.0012353,.9999287,.0000713,3.70877,9.556793,3.817497,3.715994,3.709187,4.642481,4.897738,4.507643 +.9809429,.0190571,.9979933,.0020067,.9998719,.0001281,3.70877,9.556793,3.820216,3.720505,3.709519,4.978095,5.104101,4.899562 +.9802241,.0197758,.9959831,.0040169,.9997402,.0002598,3.70877,9.556793,3.824419,3.732261,3.710289,5.337822,5.337117,5.338327 +.9783511,.0216489,.9946395,.0053605,.9996985,.0003016,3.70877,9.556793,3.835373,3.740119,3.710534,5.794573,5.714682,5.857948 +.9770993,.0229007,.9978499,.0021501,.9998862,.0001139,3.70877,9.556793,3.842694,3.721344,3.709436,5.836755,5.830125,5.841867 +.9800906,.0199095,.9993742,.0006258,.999967,.000033,3.70877,9.556793,3.825201,3.71243,3.708963,5.059279,5.070888,5.051047 +.9815108,.0184892,.9994912,.0005088,.999971,.000029,3.70877,9.556793,3.816895,3.711745,3.70894,4.323678,4.35304,4.303565 +.9816198,.0183802,.999269,.000731,.9998878,.0001122,3.70877,9.556793,3.816258,3.713045,3.709426,4.248055,4.227117,4.262413 +.9814128,.0185872,.998329,.0016709,.9979967,.0020033,3.70877,9.556793,3.817469,3.718542,3.720485,4.661473,4.576157,4.716111 +.980537,.019463,.9916658,.0083341,.9764566,.0235434,3.70877,9.556793,3.82259,3.757508,3.846452,5.306712,5.161865,5.393076 +.9743286,.0256714,.9895275,.0104725,.9249268,.0750732,3.70877,9.556793,3.858897,3.770013,4.1478,6.332373,6.099176,6.564503 +.9723363,.0276637,.9889915,.0110085,.7923684,.2076316,3.70877,9.556793,3.870548,3.773148,4.923005,6.284777,5.982467,6.53833 +.9718368,.0281632,.974013,.0259869,.4413242,.5586758,3.70877,9.556793,3.873469,3.860742,6.975919,6.478172,6.03827,6.593009 +.9578809,.0421191,.7088267,.2911734,.0466012,.9533988,3.70877,9.556793,3.955084,5.411559,9.284268,7.296552,6.460438,7.30485 +.7107974,.2892026,.1005571,.8994429,.0029009,.997099,3.70877,9.556793,5.400033,8.968733,9.539828,8.867719,7.869485,8.93118 +.1440513,.8559487,.0080047,.9919953,.0011666,.9988334,3.70877,9.556793,8.714377,9.509981,9.549972,9.045574,8.212791,9.553485 +.057817,.942183,.0047662,.9952338,.0074692,.9925308,3.70877,9.556793,9.218678,9.52892,9.513113,8.329976,8.020488,9.562139 +.0547995,.9452005,.0110985,.9889015,.0864779,.9135221,3.70877,9.556793,9.236324,9.491889,9.051068,7.654822,7.611776,9.151626 +.0606996,.9393004,.0558457,.9441543,.4809731,.5190269,3.70877,9.556793,9.20182,9.230206,6.744051,7.049016,7.046554,8.435221 +.1023921,.8976079,.3161151,.6838849,.8977214,.1022786,3.70877,9.556793,8.958002,7.708145,4.306898,5.81704,5.814537,7.256321 +.3448943,.6551057,.9529809,.0470191,.9972818,.0027182,3.70877,9.556793,7.539844,3.983739,3.724666,5.139013,5.13464,6.098828 +.9382845,.0617155,.9957243,.0042758,.9997301,.0002699,3.70877,9.556793,4.069684,3.733775,3.710349,4.142889,3.688474,4.394758 +.97811,.02189,.9951816,.0048184,.9997313,.0002687,3.70877,9.556793,3.836783,3.736948,3.710341,4.85277,4.267033,5.034659 +.9776044,.0223956,.998083,.001917,.9998995,.0001005,3.70877,9.556793,3.83974,3.71998,3.709358,5.155045,4.973974,5.706321 +.9803077,.0196923,.9996578,.0003423,.9999782,.0000218,3.70877,9.556793,3.823931,3.710772,3.708898,4.571352,4.492369,5.060409 +.9817749,.0182251,.9991401,.0008599,.99976,.00024,3.70877,9.556793,3.815351,3.713799,3.710174,3.808026,3.696524,3.927749 +.9812927,.0187073,.9984251,.0015749,.995508,.004492,3.70877,9.556793,3.818171,3.71798,3.735039,4.508434,4.352981,4.597115 +.9806264,.0193736,.9972397,.0027603,.9428005,.0571995,3.70877,9.556793,3.822067,3.724912,4.043274,5.038599,4.840997,5.103775 +.979522,.020478,.9818339,.0181661,.5537605,.4462395,3.70877,9.556793,3.828526,3.815006,6.318389,5.661628,5.355406,5.692415 +.9651679,.0348321,.8530456,.1469544,.0991841,.9008158,3.70877,9.556793,3.912469,4.568163,8.976763,7.301357,6.493879,7.315054 +.8451713,.1548287,.0300818,.9699182,.0005918,.9994081,3.70877,9.556793,4.614212,9.380874,9.553332,8.715515,7.326397,8.71555 +.0783869,.921613,.0010091,.9989909,.0000196,.9999804,3.70877,9.556793,9.098385,9.550892,9.556679,9.655275,9.598218,11.60682 +.0512989,.9487011,.0015696,.9984304,.0000297,.9999703,3.70877,9.556793,9.256796,9.547614,9.55662,8.840707,8.830189,11.3388 +.0518211,.9481789,.0001252,.9998748,2.39e-06,.9999976,3.70877,9.556793,9.253742,9.556061,9.55678,10.8225,8.173305,10.8225 +.0504753,.9495247,.0000403,.9999597,.000013,.999987,3.70877,9.556793,9.261613,9.556558,9.556717,12.73945,9.477875,12.73965 +.0503962,.9496038,.001481,.998519,.0156336,.9843664,3.70877,9.556793,9.262075,9.548132,9.465368,9.974022,9.974022,13.5986 +.0517386,.9482614,.0779672,.9220328,.5556827,.4443173,3.70877,9.556793,9.254225,9.100839,6.307148,7.448603,7.448603,10.78955 +.1230035,.8769965,.4091304,.5908696,.8923706,.1076294,3.70877,9.556793,8.837466,7.164189,4.338189,4.952647,4.949996,7.614517 +.4315598,.5684401,.5858818,.4141181,.9578715,.0421285,3.70877,9.556793,7.033021,6.130542,3.955138,6.450385,4.34717,6.640697 +.5962454,.4037546,.8807697,.1192303,.9923835,.0076165,3.70877,9.556793,6.069936,4.406032,3.753312,5.116845,5.066675,7.070253 +.8710028,.1289972,.9863916,.0136084,.9991698,.0008302,3.70877,9.556793,4.463149,3.788352,3.713625,4.726859,4.65509,6.198095 +.9694145,.0305856,.9952391,.0047609,.9997077,.0002923,3.70877,9.556793,3.887635,3.736612,3.710479,5.011682,4.179649,5.589425 +.9776579,.0223421,.996165,.003835,.9997671,.0002329,3.70877,9.556793,3.839427,3.731197,3.710132,5.226906,4.46443,5.833974 +.9785206,.0214794,.9978493,.0021507,.9997901,.0002099,3.70877,9.556793,3.834382,3.721348,3.709998,4.948143,4.548041,5.824133 +.98009,.0199101,.9984894,.0015106,.9990297,.0009703,3.70877,9.556793,3.825205,3.717604,3.714444,4.763768,4.231219,5.60673 +.9806864,.0193136,.9971752,.0028248,.9879678,.0120322,3.70877,9.556793,3.821716,3.72529,3.779135,5.394799,4.155723,5.632583 +.9794618,.0205381,.9928595,.0071404,.9088904,.0911096,3.70877,9.556793,3.828877,3.750527,4.241581,6.027369,4.673698,6.074389 +.9754409,.0245591,.9790298,.0209702,.6709118,.3290882,3.70877,9.556793,3.852392,3.831404,5.633285,6.663375,5.167326,6.678365 +.9625551,.0374449,.9560277,.0439722,.3820007,.6179993,3.70877,9.556793,3.927748,3.965921,7.322845,7.225809,5.643235,7.268343 +.9411234,.0588766,.8720841,.1279159,.129078,.870922,3.70877,9.556793,4.053082,4.456825,8.801942,7.673487,6.209391,7.713082 +.8629101,.1370899,.4770057,.5229943,.0172653,.9827347,3.70877,9.556793,4.510475,6.767253,9.455826,8.397498,6.606598,8.405678 +.4948017,.5051983,.0198198,.9801801,.0003854,.9996146,3.70877,9.556793,6.663181,9.440886,9.55454,9.375547,7.32544,9.375654 +.0688255,.9311745,.0007999,.9992001,.0000152,.9999847,3.70877,9.556793,9.1543,9.552115,9.556705,10.88931,8.429197,10.90646 +.051104,.9488961,.0005044,.9994956,9.55e-06,.9999905,3.70877,9.556793,9.257936,9.553843,9.556738,11.3769,8.714792,11.54397 +.0508286,.9491714,.000182,.999818,3.43e-06,.9999965,3.70877,9.556793,9.259546,9.555729,9.556773,11.85097,8.780759,11.85222 +.0505283,.9494717,5.67e-06,.9999943,1.07e-07,.9999999,3.70877,9.556793,9.261303,9.55676,9.556793,12.74731,9.333604,12.74731 +.050364,.949636,8.16e-07,.9999992,1.54e-08,1,3.70877,9.556793,9.262263,9.556788,9.556793,15.51025,11.42102,15.51025 +.0503594,.9496406,.0000182,.9999818,3.49e-07,.9999996,3.70877,9.556793,9.26229,9.556686,9.556791,12.29176,12.29176,16.83475 +.0503757,.9496243,.0007771,.9992229,.0000147,.9999853,3.70877,9.556793,9.262195,9.552249,9.556707,10.28245,10.28245,14.30258 +.0510828,.9489172,2.89e-07,.9999997,5.45e-09,1,3.70877,9.556793,9.25806,9.556791,9.556793,11.61238,8.090569,11.61238 +.050359,.949641,1.10e-07,.9999999,2.08e-09,1,3.70877,9.556793,9.262293,9.556792,9.556793,16.97341,13.3116,16.97341 +.0503588,.9496412,2.24e-08,1,4.23e-10,1,3.70877,9.556793,9.262294,9.556793,9.556793,17.30668,13.78634,17.30668 +.0503587,.9496413,2.92e-08,1,5.50e-10,1,3.70877,9.556793,9.262294,9.556793,9.556793,18.65449,14.82626,18.65471 +.0503587,.9496413,5.58e-06,.9999944,1.05e-07,.9999999,3.70877,9.556793,9.262295,9.556761,9.556793,14.46502,14.46502,18.14064 +.0503639,.9496361,2.40e-06,.9999976,4.53e-08,.9999999,3.70877,9.556793,9.262264,9.556779,9.556793,13.93092,10.89948,13.93092 +.0503609,.9496391,1.66e-06,.9999983,3.14e-08,.9999999,3.70877,9.556793,9.262281,9.556784,9.556793,14.37497,11.42169,14.37497 +.0503602,.9496398,.0001666,.9998334,3.25e-06,.9999968,3.70877,9.556793,9.262285,9.555819,9.556774,11.54737,11.54737,14.36861 +.0505139,.9494861,.0016064,.9983935,.0000327,.9999673,3.70877,9.556793,9.261387,9.547399,9.556602,8.734435,8.595025,10.80423 +.0518555,.9481446,.0038268,.9961731,.0000769,.9999232,3.70877,9.556793,9.253541,9.534413,9.556344,8.943102,7.254905,9.04239 +.0539243,.9460757,.0032753,.9967247,.0000635,.9999365,3.70877,9.556793,9.241443,9.53764,9.556422,8.432573,6.924034,8.433858 +.0534104,.9465896,.0013624,.9986376,.0000264,.9999736,3.70877,9.556793,9.244448,9.548825,9.556639,8.448098,7.225063,8.448396 +.0516281,.9483719,.0013674,.9986326,.0000263,.9999737,3.70877,9.556793,9.25487,9.548797,9.55664,9.250766,7.924766,9.255078 +.0516328,.9483672,.0009715,.9990284,.0000184,.9999816,3.70877,9.556793,9.254844,9.551111,9.556685,9.561737,8.023977,9.564042 +.0512639,.9487361,.0003069,.9996931,5.80e-06,.9999942,3.70877,9.556793,9.257001,9.554998,9.55676,9.78944,8.368082,9.789679 +.0506446,.9493554,.0001016,.9998984,1.98e-06,.999998,3.70877,9.556793,9.260622,9.556199,9.556782,10.57913,9.117296,10.58065 +.0504534,.9495466,.0016472,.9983528,.0000347,.9999654,3.70877,9.556793,9.261741,9.54716,9.556591,9.828331,9.815725,11.32301 +.0518934,.9481066,.0047859,.9952142,.0001138,.9998862,3.70877,9.556793,9.25332,9.528806,9.556128,8.326496,8.084562,9.248471 +.0548178,.9451821,.0105388,.9894612,.0002706,.9997294,3.70877,9.556793,9.236217,9.495162,9.555211,7.968068,7.444566,8.510942 +.0601781,.9398219,.011929,.988071,.0004063,.9995937,3.70877,9.556793,9.20487,9.487032,9.554418,7.797318,7.070516,7.95793 +.0614734,.9385266,.0094017,.9905983,.0009389,.999061,3.70877,9.556793,9.197295,9.501812,9.551303,7.886533,7.040267,7.971292 +.0591185,.9408814,.0128242,.9871758,.0048718,.9951282,3.70877,9.556793,9.211066,9.481797,9.528303,7.887259,7.227557,8.072835 +.0623075,.9376925,.043543,.956457,.0229177,.9770823,3.70877,9.556793,9.192418,9.302153,9.422771,7.30066,6.993566,7.506404 +.0909292,.9090708,.1485886,.8514114,.0469927,.9530073,3.70877,9.556793,9.025037,8.687843,9.281979,6.502852,6.249644,6.661716 +.1888039,.8111961,.2728584,.7271417,.0567973,.9432027,3.70877,9.556793,8.452663,7.961112,9.224641,5.848752,5.619293,5.921072 +.3045904,.6954096,.429946,.570054,.0570281,.9429719,3.70877,9.556793,7.775541,7.042459,9.223292,6.052836,5.651648,6.12429 +.4509545,.5490455,.4453482,.5546518,.0466283,.9533718,3.70877,9.556793,6.919601,6.952386,9.28411,6.394635,5.607582,6.44189 +.4653052,.5346947,.3984752,.6015248,.0342835,.9657165,3.70877,9.556793,6.835677,7.226501,9.356303,6.87506,5.96464,6.943046 +.421632,.578368,.333094,.666906,.0239641,.9760359,3.70877,9.556793,7.09108,7.608852,9.416651,7.080949,6.236509,7.20149 +.3607141,.6392859,.3524925,.6475075,.0163044,.9836956,3.70877,9.556793,7.447329,7.495409,9.461445,7.020358,6.286122,7.17503 +.3787883,.6212117,.2334698,.7665302,.0067983,.9932017,3.70877,9.556793,7.34163,8.191457,9.517036,6.914561,6.138781,6.954099 +.2678907,.7321093,.0584654,.9415346,.0012797,.9987203,3.70877,9.556793,7.990162,9.214887,9.54931,7.437253,6.519526,7.445452 +.1048329,.8951671,.010318,.989682,.0002017,.9997983,3.70877,9.556793,8.943727,9.496453,9.555614,8.247514,7.26423,8.259493 +.0599723,.9400277,.0015812,.9984187,.0000304,.9999696,3.70877,9.556793,9.206074,9.547546,9.556616,8.800888,7.705005,8.804131 +.051832,.948168,.0009255,.9990745,.0000183,.9999818,3.70877,9.556793,9.253678,9.551381,9.556686,9.74052,8.499221,9.808734 +.051221,.948779,.0021482,.9978518,.0000448,.9999552,3.70877,9.556793,9.257252,9.54423,9.556531,9.318309,8.7498,9.981037 +.0523602,.9476398,.0040742,.9959258,.0001052,.9998948,3.70877,9.556793,9.250589,9.532967,9.556178,8.615889,8.142057,9.342804 +.0541547,.9458452,.0067634,.9932365,.0003805,.9996195,3.70877,9.556793,9.240095,9.517241,9.554568,8.310145,7.779929,9.046017 +.0566604,.9433396,.0071861,.9928138,.0021532,.9978468,3.70877,9.556793,9.225442,9.514769,9.544202,8.122429,7.450436,8.561507 +.0570543,.9429457,.0080363,.9919637,.0163216,.9836783,3.70877,9.556793,9.223139,9.509797,9.461344,8.06747,7.318541,8.736112 +.0578464,.9421536,.0140897,.9859103,.1186408,.8813592,3.70877,9.556793,9.218506,9.474396,8.862979,7.368597,7.017911,8.758828 +.0634865,.9365135,.0813341,.9186659,.543765,.456235,3.70877,9.556793,9.185523,9.081149,6.376843,6.552896,6.540946,8.113037 +.1261405,.8738595,.285347,.714653,.8583246,.1416753,3.70877,9.556793,8.81912,7.888078,4.537291,5.594151,5.475195,6.811069 +.3162265,.6837735,.630861,.369139,.968286,.031714,3.70877,9.556793,7.707493,5.867503,3.894234,5.252515,5.002752,6.063491 +.6381541,.3618459,.9504541,.0495459,.9972499,.0027501,3.70877,9.556793,5.824853,3.998516,3.724853,4.929419,4.813092,5.662596 +.9359302,.0640698,.9978096,.0021903,.9998849,.0001151,3.70877,9.556793,4.083452,3.721579,3.709443,4.286259,4.194264,4.900965 +.9800531,.019947,.9995306,.0004694,.9999756,.0000244,3.70877,9.556793,3.82542,3.711515,3.708912,3.717198,3.578583,4.209394 +.9816565,.0183435,.9997798,.0002203,.9999886,.0000114,3.70877,9.556793,3.816043,3.710058,3.708837,3.541503,3.408145,3.986915 +.9818887,.0181114,.9998373,.0001627,.9999916,8.42e-06,3.70877,9.556793,3.814686,3.709722,3.708819,3.189564,3.02046,3.532578 +.9819422,.0180578,.9998378,.0001623,.9999916,8.39e-06,3.70877,9.556793,3.814373,3.709719,3.708819,3.015388,2.761958,3.320222 +.9819427,.0180573,.999846,.0001539,.999992,7.96e-06,3.70877,9.556793,3.81437,3.70967,3.708817,3.042857,2.747537,3.306076 +.9819504,.0180496,.9998335,.0001665,.9999914,8.61e-06,3.70877,9.556793,3.814324,3.709744,3.70882,3.002553,2.703691,3.198682 +.9819387,.0180613,.9998481,.000152,.9999921,7.88e-06,3.70877,9.556793,3.814393,3.709659,3.708816,3.10698,2.828977,3.263055 +.9819523,.0180477,.9997972,.0002028,.9999893,.0000107,3.70877,9.556793,3.814313,3.709956,3.708833,3.064441,2.806232,3.156415 +.9819049,.0180951,.9994684,.0005316,.9999708,.0000292,3.70877,9.556793,3.814591,3.711879,3.708941,3.304724,3.079071,3.349157 +.9815986,.0184014,.9988852,.0011149,.9999304,.0000695,3.70877,9.556793,3.816382,3.71529,3.709177,4.077081,3.660009,4.124638 +.9810551,.0189449,.9971934,.0028066,.9997794,.0002206,3.70877,9.556793,3.81956,3.725183,3.71006,4.566038,4.175121,4.595146 +.9794788,.0205212,.9929582,.0070418,.9994116,.0005883,3.70877,9.556793,3.828778,3.749951,3.712211,5.235425,4.676962,5.263006 +.9755328,.0244672,.9889305,.0110695,.9991763,.0008237,3.70877,9.556793,3.851855,3.773505,3.713587,5.838032,5.1478,5.8982 +.9717799,.02822,.9903922,.0096078,.9993276,.0006724,3.70877,9.556793,3.873801,3.764957,3.712702,5.88869,5.353448,6.006532 +.9731419,.0268581,.9917701,.0082299,.9994836,.0005164,3.70877,9.556793,3.865837,3.756899,3.71179,5.650352,5.166267,5.79265 +.9744257,.0255742,.9951116,.0048884,.9997014,.0002986,3.70877,9.556793,3.858329,3.737358,3.710516,5.538863,5.083153,5.748745 +.9775391,.0224609,.9963413,.0036587,.9997736,.0002264,3.70877,9.556793,3.840122,3.730166,3.710094,5.286134,4.909994,5.455621 +.9786849,.0213151,.9961977,.0038023,.9997658,.0002342,3.70877,9.556793,3.833421,3.731006,3.71014,5.203722,4.803016,5.358268 +.9785511,.0214489,.9963211,.0036789,.9997711,.000229,3.70877,9.556793,3.834203,3.730284,3.710109,5.326283,4.897751,5.505361 +.9786661,.0213339,.9963412,.0036588,.9997575,.0002425,3.70877,9.556793,3.833531,3.730167,3.710188,5.265781,4.892343,5.419424 +.9786848,.0213152,.9949928,.0050072,.9996672,.0003328,3.70877,9.556793,3.833422,3.738052,3.710716,5.208025,4.976932,5.299777 +.9774284,.0225715,.9946225,.0053775,.9996445,.0003555,3.70877,9.556793,3.840769,3.740218,3.710849,5.434537,5.248524,5.524192 +.9770834,.0229166,.99468,.00532,.999648,.0003519,3.70877,9.556793,3.842787,3.739882,3.710828,5.3884,5.257504,5.460289 +.977137,.022863,.9946227,.0053773,.9996476,.0003524,3.70877,9.556793,3.842473,3.740216,3.710831,5.328261,5.274662,5.36072 +.9770836,.0229164,.9947492,.0052507,.999662,.000338,3.70877,9.556793,3.842785,3.739476,3.710747,5.35511,5.293343,5.394659 +.9772016,.0227984,.9945675,.0054325,.9996915,.0003085,3.70877,9.556793,3.842096,3.740539,3.710574,5.372501,5.338941,5.394736 +.9770322,.0229678,.9977272,.0022729,.9998731,.0001269,3.70877,9.556793,3.843086,3.722062,3.709512,5.452638,5.477922,5.435889 +.9799761,.0200239,.9983342,.0016658,.9999064,.0000936,3.70877,9.556793,3.82587,3.718512,3.709317,4.882108,4.928061,4.850593 +.9805418,.0194582,.998339,.001661,.9999008,.0000992,3.70877,9.556793,3.822562,3.718484,3.70935,4.806666,4.792923,4.816381 +.9805462,.0194538,.9974042,.0025958,.9998279,.0001721,3.70877,9.556793,3.822536,3.72395,3.709776,4.882067,4.85832,4.898543 +.9796753,.0203247,.9963774,.0036226,.9996811,.0003189,3.70877,9.556793,3.82763,3.729955,3.710635,5.278541,5.245199,5.3009 +.9787186,.0212814,.9938359,.0061641,.9991794,.0008206,3.70877,9.556793,3.833225,3.744818,3.713569,5.510527,5.330189,5.620605 +.9763505,.0236495,.9851985,.0148015,.9979665,.0020335,3.70877,9.556793,3.847073,3.79533,3.720662,5.91604,5.774785,6.006871 +.9683027,.0316973,.9725566,.0274434,.9971454,.0028546,3.70877,9.556793,3.894136,3.86926,3.725464,6.369084,6.152766,6.565149 +.9565238,.0434762,.9646139,.0353861,.9976425,.0023576,3.70877,9.556793,3.96302,3.915709,3.722557,6.472348,6.309919,6.779056 +.9491234,.0508766,.9866005,.0133995,.9992712,.0007288,3.70877,9.556793,4.006298,3.787131,3.713032,6.166741,6.103334,6.68342 +.969609,.030391,.9984906,.0015094,.9999213,.0000787,3.70877,9.556793,3.886497,3.717597,3.70923,5.35135,5.324054,5.835004 +.9806875,.0193125,.9996817,.0003183,.9999836,.0000164,3.70877,9.556793,3.82171,3.710632,3.708866,4.179661,4.132563,4.48576 +.9817972,.0182028,.9999506,.0000494,.9999974,2.54e-06,3.70877,9.556793,3.81522,3.709059,3.708785,3.414703,3.377915,3.52192 +.9820479,.0179521,.9999713,.0000287,.9999985,1.48e-06,3.70877,9.556793,3.813755,3.708938,3.708779,2.203474,2.271626,2.115997 +.982067,.0179329,.9999705,.0000295,.9999985,1.51e-06,3.70877,9.556793,3.813642,3.708942,3.708779,1.823223,1.890859,1.750906 +.9820664,.0179336,.9999709,.0000291,.9999985,1.49e-06,3.70877,9.556793,3.813646,3.70894,3.708779,1.834497,1.854651,1.812876 +.9820668,.0179333,.9999804,.0000196,.999999,1.01e-06,3.70877,9.556793,3.813644,3.708885,3.708776,1.814991,1.729833,1.922723 +.9820756,.0179244,.9999847,.0000153,.9999992,7.83e-07,3.70877,9.556793,3.813592,3.708859,3.708775,1.578217,1.423067,1.788079 +.9820796,.0179204,.9999847,.0000153,.9999992,7.83e-07,3.70877,9.556793,3.813569,3.708859,3.708775,1.363374,1.317874,1.4119 +.9820796,.0179204,.9999887,.0000113,.9999994,5.78e-07,3.70877,9.556793,3.813569,3.708836,3.708773,1.466598,1.441834,1.489571 +.9820833,.0179166,.999989,.000011,.9999995,5.63e-07,3.70877,9.556793,3.813547,3.708834,3.708773,1.274937,1.313173,1.244443 +.9820836,.0179164,.999989,.000011,.9999995,5.63e-07,3.70877,9.556793,3.813545,3.708834,3.708773,1.233032,1.29632,1.185423 +.9820836,.0179164,.9999889,.0000111,.9999994,5.71e-07,3.70877,9.556793,3.813545,3.708835,3.708773,1.351381,1.293064,1.397081 +.9820835,.0179165,.9999807,.0000193,.999999,9.93e-07,3.70877,9.556793,3.813546,3.708883,3.708776,1.368077,1.335848,1.390817 +.9820758,.0179242,.9999617,.0000383,.999998,1.97e-06,3.70877,9.556793,3.813591,3.708994,3.708781,1.848841,1.699826,1.940641 +.9820581,.0179419,.9999239,.0000761,.9999961,3.93e-06,3.70877,9.556793,3.813694,3.709215,3.708793,2.310586,2.209126,2.366568 +.9820229,.0179771,.9998584,.0001416,.9999926,7.37e-06,3.70877,9.556793,3.8139,3.709598,3.708813,2.764744,2.638925,2.824465 +.9819619,.0180381,.9997182,.0002817,.9999851,.0000149,3.70877,9.556793,3.814257,3.710418,3.708857,3.343914,3.036805,3.459788 +.9818314,.0181686,.9994374,.0005626,.9999694,.0000306,3.70877,9.556793,3.815021,3.71206,3.708949,3.806304,3.468405,3.910976 +.9815696,.0184304,.9989265,.0010735,.9999384,.0000616,3.70877,9.556793,3.816551,3.715048,3.709131,4.322728,3.985987,4.419353 +.9810937,.0189063,.9980094,.0019905,.9998788,.0001212,3.70877,9.556793,3.819335,3.720411,3.709479,4.785995,4.336953,4.904437 +.9802392,.0197608,.9967461,.0032539,.9998016,.0001984,3.70877,9.556793,3.824332,3.727799,3.70993,5.059835,4.657316,5.180828 +.9790621,.0209379,.9965488,.0034512,.9997894,.0002107,3.70877,9.556793,3.831215,3.728953,3.710002,5.143878,5.000844,5.21044 +.9788783,.0211217,.996472,.003528,.9997864,.0002136,3.70877,9.556793,3.83229,3.729402,3.710019,5.148761,4.916379,5.291348 +.9788067,.0211933,.996506,.003494,.9997967,.0002032,3.70877,9.556793,3.832709,3.729203,3.709959,5.154384,4.936847,5.35499 +.9788383,.0211617,.9972454,.0027546,.99985,.00015,3.70877,9.556793,3.832524,3.724879,3.709647,5.064756,4.948065,5.281224 +.9795272,.0204728,.9987407,.0012593,.9999347,.0000653,3.70877,9.556793,3.828495,3.716134,3.709152,4.797365,4.723593,5.464302 +.9809206,.0190795,.9997936,.0002063,.9999894,.0000106,3.70877,9.556793,3.820347,3.709977,3.708832,4.08531,4.078696,4.914553 +.9819016,.0180984,.9999534,.0000466,.9999976,2.39e-06,3.70877,9.556793,3.81461,3.709042,3.708784,2.981632,2.97441,3.724269 +.9820505,.0179495,.9999621,.0000379,.999998,1.94e-06,3.70877,9.556793,3.813739,3.708992,3.708781,1.956489,1.906075,2.877074 +.9820585,.0179415,.9999942,5.77e-06,.9999997,2.96e-07,3.70877,9.556793,3.813692,3.708804,3.708772,1.564194,1.527188,1.870849 +.9820885,.0179115,.9999962,3.73e-06,.9999998,1.91e-07,3.70877,9.556793,3.813517,3.708792,3.708771,.1384992,.1517437,.1041634 +.9820904,.0179096,.9999962,3.73e-06,.9999998,1.91e-07,3.70877,9.556793,3.813506,3.708792,3.708771,-.2369698,-.1676456,-.3802484 +.9820904,.0179096,.9999964,3.63e-06,.9999998,1.86e-07,3.70877,9.556793,3.813506,3.708791,3.708771,-.2928468,-.1591626,-.5239687 +.9820905,.0179095,.9999965,3.44e-06,.9999998,1.77e-07,3.70877,9.556793,3.813505,3.70879,3.708771,-.0218886,-.186655,.133808 +.9820907,.0179094,.9999965,3.49e-06,.9999998,1.79e-07,3.70877,9.556793,3.813504,3.70879,3.708771,.0668349,-.2345839,.2793285 +.9820906,.0179094,.9999962,3.78e-06,.9999998,1.94e-07,3.70877,9.556793,3.813505,3.708792,3.708771,.0643252,-.1345215,.1909246 +.9820904,.0179097,.9999962,3.78e-06,.9999998,1.94e-07,3.70877,9.556793,3.813506,3.708792,3.708771,.0745394,-.0243442,.1396657 +.9820904,.0179097,.9999962,3.78e-06,.9999962,3.78e-06,3.70877,9.556793,3.813506,3.708792,3.708792,.0966984,.0219892,.1484894 diff --git a/statsmodels/tsa/regime_switching/tests/results/results_predict_rgnp.csv b/statsmodels/tsa/regime_switching/tests/results/results_predict_rgnp.csv new file mode 100644 index 0000000..8b343b8 --- /dev/null +++ b/statsmodels/tsa/regime_switching/tests/results/results_predict_rgnp.csv @@ -0,0 +1,137 @@ +switchar2_p1,switchar2_p2,switchar2_f1,switchar2_f2,switchar2_sm1,switchar2_sm2,switchar2_yhat1,switchar2_yhat2,switchar2_pyhat,switchar2_fyhat,switchar2_syhat +,,,,,,,,,, +,,,,,,,,,, +,,,,,,,,,, +.3655099,.6344901,.1908335,.8091666,.2039875,.7960125,.6668599,.8056132,.7548975,.7791345,1.175943 +.3611798,.6388202,.3588357,.6411644,.4560583,.5439417,.2757178,.4150288,.3647124,.365039,.6393359 +.3653444,.6346556,.8787717,.1212283,.861632,.138368,-.0489651,.8798761,.5405291,.0636367,-.0475077 +.3782332,.6217668,.2201452,.7798548,.3592777,.6407223,.0795501,.2984534,.2156569,.2502629,.7076135 +.3619064,.6380936,.0060957,.9939043,.0082053,.9917946,-.2810024,1.033839,.5579897,1.025824,1.37325 +.3566003,.6433997,.11223,.88777,.0884842,.9115158,.1003189,1.192435,.8029861,1.069867,1.505547 +.3592313,.6407687,.3765296,.6234704,.0499525,.9500476,.3861393,.8377848,.6755396,.6677269,1.195445 +.365783,.634217,.7021681,.2978319,.4766508,.5233492,.2789021,.6074251,.4872569,.3767467,.5998272 +.3738553,.6261446,.8631248,.1368752,.9677929,.0322071,-.0134841,.280744,.1707453,.0267884,-.5156572 +.3778453,.6221547,.9939212,.0060788,.9937111,.0062889,-.3697357,.4270407,.1259825,-.3648922,-1.069221 +.3810876,.6189124,.6417809,.3582191,.6563745,.3436256,-.4973104,.2940543,-.007525,-.2138285,-.4417256 +.3723584,.6276416,.0010628,.9989372,.0006934,.9993066,-.6216475,.7895434,.2640746,.7880436,1.270005 +.3564756,.6435244,.012374,.987626,.0291472,.9708528,-.349462,1.204387,.650478,1.18516,1.405585 +.356756,.643244,.0119621,.9880379,.0092829,.9907171,.0968139,.9555007,.649159,.9452289,1.321816 +.3567457,.6432543,.3283875,.6716126,.4892569,.510743,.2540295,1.095943,.7955943,.8194695,1.050847 +.3645897,.6354104,.3161621,.6838379,.1268433,.8731567,.3827603,.5847964,.5111361,.5209202,1.080783 +.3642866,.6357134,.3383332,.6616668,.3105439,.6894561,.1474826,.8656664,.6040417,.622681,.978343 +.3648362,.6351638,.6774012,.3225988,.8668257,.1331743,.1532161,.6805145,.4881369,.3233219,.2800821 +.3732414,.6267586,.3011953,.6988047,.4282137,.5717863,-.0017978,.3782444,.2363969,.2637775,.556136 +.3639156,.6360844,.5726407,.4273593,.7200522,.2799478,-.3046013,.8760991,.4464239,.199982,.1164198 +.3706445,.6293555,.0987641,.9012359,.1196774,.8803226,-.1050289,.5673033,.3181071,.500901,1.043566 +.3588975,.6411025,.2103667,.7896333,.1060183,.8939817,-.210565,1.05934,.6035746,.7921946,1.173387 +.361664,.638336,.6925763,.3074237,.2164227,.7835773,.0497307,.7404512,.4906424,.2620745,.7977074 +.3736176,.6263824,.2575079,.7424921,.005824,.994176,.0085827,.426209,.2701765,.318667,.8089374 +.3628326,.6371674,.997604,.002396,.9961206,.0038793,-.264759,.896194,.4749624,-.2619774,-.920441 +.3811789,.6188211,.9977646,.0022354,.99639,.00361,-.1612,-.0384718,-.0852532,-.1609257,-1.00337 +.3811829,.6188171,.0010599,.9989401,.0011916,.9988084,-.7774606,.2547778,-.1386938,.2536838,.7459083 +.3564755,.6435245,1.58e-08,1,1.49e-08,1,-.8607886,1.348258,.560787,1.348258,1.54865 +.3564492,.6435508,.001224,.998776,.0006004,.9993997,.0446378,1.350136,.8847919,1.348538,1.932688 +.3564796,.6435204,.3604717,.6395283,.2442461,.7557539,.5060323,.9844004,.8138719,.8119622,1.324627 +.365385,.634615,.33878,.66122,.1291146,.8708854,.4691985,.5743639,.535938,.5387359,.9758657 +.3648473,.6351528,.7996124,.2003876,.8402012,.1597988,.267849,.996059,.7303736,.4137732,.5672621 +.3762709,.6237291,.3155236,.6844764,.228146,.771854,.2605178,.0665302,.1395221,.1277379,.5768158 +.3642708,.6357293,.0098121,.9901879,.0029106,.9970894,-.3134682,1.041803,.5481176,1.028505,1.364321 +.3566925,.6433076,.886528,.113472,.846061,.153939,.0416518,1.097726,.7210326,.1614867,.2476345 +.3784254,.6215746,.5235677,.4764323,.4480896,.5519103,.2633849,.1340759,.1830097,.2017779,.5294089 +.369428,.630572,.9513308,.0486692,.9706135,.0293865,-.3070059,.7367491,.3511568,-.2562071,-.4980835 +.3800319,.6199682,.0439671,.9560329,.0420237,.9579763,-.2055761,.2772512,.0937615,.2560227,.9187043 +.3575391,.6424609,.0117721,.988228,.011024,.9889759,-.4756168,1.242086,.6279398,1.221865,1.406804 +.356741,.643259,.0498644,.9501356,.1314053,.8685947,.0266372,.923333,.6034449,.8786198,1.105651 +.3576853,.6423147,.0157562,.9842438,.0117993,.9882007,.1151268,.926867,.6365194,.9140771,1.344204 +.3568398,.6431602,.2576703,.7423297,.2752726,.7247275,.2603368,1.133504,.8219233,.9085149,1.321995 +.3628366,.6371633,.3590391,.6409609,.2117085,.7882915,.4166265,.6422516,.5603865,.5612433,1.022684 +.3653495,.6346505,.2964521,.703548,.189856,.810144,.1760955,.7276233,.5261229,.5641218,.9811047 +.363798,.636202,.7142375,.2857625,.8386366,.1613634,.0733605,.7645192,.513077,.2708678,.1629116 +.3741545,.6258455,.0818044,.9181957,.0717512,.9282488,.0274522,.3683135,.2407787,.3404296,1.003676 +.3584771,.6415229,.0551477,.9448522,.0749342,.9250659,-.2439651,1.182559,.6711826,1.103889,1.311399 +.3578163,.6421837,.0780104,.9219896,.0646097,.9353903,.1381912,.890511,.6213188,.8318223,1.205812 +.358383,.641617,.4395099,.5604901,.8584533,.1415467,.2015714,.983662,.703374,.6399255,.5431973 +.3673443,.6326557,.1202812,.8797188,.0779433,.9220567,.2680204,.5275288,.4321998,.4963148,1.241017 +.3594309,.6405691,.4637097,.5362903,.5746583,.4253416,.1109875,1.24799,.8393159,.7207507,1.105171 +.3679442,.6320558,.3577688,.6422312,.2465385,.7534615,.4165906,.4647978,.4470603,.4475508,.9700944 +.365318,.634682,.4642533,.5357467,.8108636,.1891364,.0563841,.8096159,.5344468,.4599256,.4282598 +.3679577,.6320423,.0641185,.9358815,.0669424,.9330576,.0497228,.5854846,.388347,.5511324,1.238735 +.3580387,.6419613,.1949094,.8050906,.2332901,.7667099,.0105471,1.30052,.8386597,1.049092,1.393703 +.3612809,.6387191,.300744,.699256,.459328,.540672,.3948515,.7132688,.5982307,.6175067,1.031192 +.3639044,.6360956,.1455622,.8544378,.1226258,.8773742,.2664956,.8734233,.6525596,.7850776,1.452815 +.3600576,.6399424,.2920372,.7079628,.1179143,.8820857,.3485572,1.085151,.8199348,.8700382,1.473615 +.3636886,.6363115,.3610975,.6389025,.6701577,.3298423,.5294808,.8166577,.7122148,.7129588,1.117233 +.3654005,.6345995,.309507,.690493,.3870208,.6129792,.2398921,.3660286,.3199383,.3269885,.7566582 +.3641216,.6358784,.4339314,.5660686,.6008897,.3991103,-.1082219,.9467762,.5626286,.4889795,.5728013 +.367206,.632794,.3232115,.6767884,.3871084,.6128916,.0531779,.6076186,.4040247,.428417,.772496 +.3644613,.6355386,.2838635,.7161365,.5072133,.4927867,-.1068446,.763018,.4459867,.5160958,.6046163 +.3634859,.6365141,.068095,.931905,.0823548,.9176452,-.0959154,.7668481,.4532457,.7080982,1.19073 +.3581372,.6418628,.421362,.578638,.4438438,.5561562,-.0416897,1.056154,.6629754,.5935645,.8270106 +.3668944,.6331056,.1854353,.8145647,.2989025,.7010975,.1643479,.5480497,.4072717,.4768978,.8094192 +.361046,.638954,.0738302,.9261699,.0187918,.9812082,-.0512716,.9540159,.5910608,.8797954,1.360345 +.3582794,.6417206,.3792882,.6207117,.2526048,.7473952,.1375967,1.016455,.701578,.6831142,1.095962 +.3658514,.6341486,.6069332,.3930668,.8806944,.1193056,.2456208,.568009,.4500628,.3723409,.3789999 +.3714945,.6285055,.0663378,.9336622,.0777551,.922245,-.0352519,.4446202,.2663504,.4127866,1.077137 +.3580937,.6419063,.7386758,.2613242,.7365384,.2634616,-.2241057,1.187275,.6818687,.1447223,.3215021 +.3747603,.6252397,.3813017,.6186984,.2480231,.7519769,.1966081,.3553618,.2958672,.2948288,.7948864 +.3659014,.6340986,.8316975,.1683026,.9079095,.0920905,-.180831,.8179061,.4524668,-.012741,-.1486508 +.3770663,.6229337,.87519,.12481,.8067881,.1932119,-.0632746,.3479188,.1928716,-.0119535,-.2175115 +.3781444,.6218556,.6100608,.3899392,.4258435,.5741565,-.3230339,.4675073,.1685686,-.0147709,.2901475 +.3715721,.6284279,.0172509,.9827491,.0017807,.9982194,-.3892398,.7295551,.3138422,.7102549,1.106248 +.3568769,.6431231,.9889793,.0110207,.9996961,.0003039,-.2622162,1.142509,.641195,-.2467351,-.538968 +.3809651,.6190349,.0025518,.9974482,.002083,.997917,.0853241,.028174,.0499461,.0283198,.7719029 +.3565125,.6434875,.9905953,.0094047,.9964426,.0035574,-.2815244,1.734997,1.016082,-.2625596,-.0889179 +.3810052,.6189948,.3292068,.6707932,.1744831,.8255169,.5766323,-.0012819,.2189064,.1889714,.7750577 +.36461,.63539,.6318375,.3681625,.8349881,.165012,-.2396213,.8475749,.4511723,.1606435,.0031042 +.3721119,.6278881,.0111827,.9888173,.0097676,.9902325,-.0823655,.5193925,.2954712,.5126633,1.249954 +.3567264,.6432736,.0320511,.9679489,.0413362,.9586638,-.1129587,1.408029,.8654523,1.359279,1.659853 +.3572437,.6427563,.3648334,.6351666,.4673626,.5326374,.4163951,.8898959,.7207407,.7171471,1.113082 +.3654931,.6345069,.1939078,.8060921,.3887317,.6112683,.337547,.5993049,.5036342,.548548,.9766124 +.361256,.638744,.1323635,.8676365,.0406093,.9593907,.167944,1.062599,.7393993,.9441791,1.577669 +.3597304,.6402696,.498467,.501533,.3508248,.6491752,.4220645,1.044722,.8207333,.7343479,1.181616 +.3688058,.6311942,.356284,.643716,.3692181,.6307819,.3744644,.2590503,.3016157,.3001705,.5756877 +.3652812,.6347188,.0709767,.9290233,.089928,.910072,-.2463651,.6087282,.2963787,.5480365,.8741023 +.3582087,.6417913,.956079,.043921,.9115888,.0884112,-.291689,1.0384,.5619506,-.2332702,-.527754 +.3801495,.6198505,.3854555,.6145445,.2328662,.7671338,.0405197,.2029729,.1412164,.1403544,.6426073 +.3660043,.6339957,.994001,.005999,.9913173,.0086827,-.3939995,.8796137,.4134658,-.3863591,-.6873238 +.3810896,.6189104,.9126762,.0873239,.8453703,.1546297,-.205447,.0969485,-.0182913,-.1790407,-.7267979 +.3790736,.6209264,.9998629,.0001371,.9999191,.0000809,-.5811837,.5661494,.1312257,-.5810264,-1.32168 +.3812349,.6187651,.0012389,.9987611,.0011699,.9988301,-.5924893,.1384216,-.1402272,.137516,.6240655 +.3564799,.6435201,9.31e-06,.9999907,7.15e-06,.9999928,-.7767551,1.472514,.6706945,1.472493,1.74309 +.3564495,.6435506,.0706543,.9293457,.1225256,.8774744,.077838,1.061299,.7107452,.9918137,1.303984 +.3582007,.6417993,.0964938,.9035062,.0505851,.9494149,.230602,.8202751,.6090538,.7633753,1.156554 +.3588412,.6411588,.6011773,.3988228,.6002312,.3997688,.2267366,1.015415,.7324044,.5412793,.8228542 +.3713519,.6286482,.4333998,.5666002,.4540614,.5459386,.3145667,.3836636,.3580043,.353717,.718225 +.3671928,.6328072,.1700871,.8299129,.1971657,.8028343,-.1043802,.7024823,.4062082,.5652454,.9236737 +.3606655,.6393345,.0853925,.9146075,.0797246,.9202754,-.1158232,.940254,.5593634,.8500729,1.215137 +.358566,.641434,.0824606,.9175394,.1073687,.8926314,.0558167,.951513,.6303467,.8776534,1.244283 +.3584934,.6415067,.0798316,.9201683,.0236819,.9763181,.1818834,.9462167,.6722083,.8851987,1.348312 +.3584282,.6415718,.8117195,.1882805,.7113619,.2886381,.2943652,1.012657,.7552012,.4296057,.8013623 +.376571,.623429,.3287594,.6712406,.7905903,.2094096,.3177593,.1023483,.1834659,.1731667,.4115401 +.3645989,.6354011,.0001937,.9998063,.0000534,.9999465,-.2536942,1.005844,.5466175,1.005599,1.679178 +.356454,.643546,.5861492,.4138509,.6666598,.3333402,.2368061,1.507272,1.054409,.7625895,1.348948 +.3709793,.6290207,.415696,.584304,.1972527,.8027472,.6850777,.2529412,.4132549,.4325786,.9398638 +.3667539,.6332461,.6525174,.3474827,.6578275,.3421725,.1057528,.8636656,.5856981,.3691144,.5881053 +.3726245,.6273755,.5579455,.4420545,.7796769,.2203231,.1100055,.3696976,.27293,.2248036,.1860365 +.3702802,.6297198,.1001561,.8998439,.0293324,.9706676,-.2476939,.6137009,.2947435,.527427,1.125174 +.358932,.641068,.8126831,.1873169,.1429511,.8570489,-.2804277,1.033013,.5615768,-.0343982,.9548979 +.3765949,.6234051,.1139573,.8860427,.0077561,.9922439,.0479682,.3432032,.2320192,.309559,.7096683 +.3592741,.6407259,.9999623,.0000377,.9999784,.0000215,-.2872946,1.078295,.5876743,-.2872432,-.9256884 +.3812374,.6187626,.1415462,.8584538,.0547459,.9452541,-.1671722,-.3660731,-.2902446,-.3379194,.0901736 +.359958,.640042,8.65e-06,.9999914,7.12e-06,.9999928,-.9680839,1.24652,.4493558,1.246501,1.469094 +.3564494,.6435506,.0013372,.9986628,.0005885,.9994115,-.2213253,1.130314,.6485232,1.128507,1.56611 +.3564824,.6435176,.94006,.0599401,.845143,.154857,.1735296,1.078947,.7561818,.2278004,.4941151 +.3797525,.6202475,.4100294,.5899706,.0490023,.9509977,.3287447,.0638878,.1644679,.1724869,.7057356 +.3666135,.6333866,.9941261,.0058739,.9961222,.0038778,-.3074672,.8746909,.4412958,-.3005233,-.6183509 +.3810927,.6189073,.9865972,.0134027,.996933,.003067,-.1776888,.0368088,-.0449347,-.1748139,-1.010209 +.3809061,.619094,.0203599,.9796401,.0650344,.9349656,-.6692971,.3808981,-.0191276,.3595163,.7818835 +.3569539,.6430461,.9790046,.0209954,.9652825,.0347175,-.751592,1.166428,.4817834,-.7113224,-1.280465 +.3807178,.6192821,.3201608,.6798392,.1632341,.8367659,-.1369031,.2466296,.1006118,.1238374,.7574543 +.3643857,.6356143,.0228407,.9771593,.0520427,.9479573,-.4943302,.9059532,.3957099,.8739698,.9687712 +.3570154,.6429846,.0027989,.9972011,.0035125,.9964876,-.2296742,1.026684,.5781449,1.023168,1.395377 +.3565186,.6434814,.1375207,.8624793,.1369265,.8630735,.132511,1.19744,.8177727,1.05099,1.492269 +.3598582,.6401418,.2749309,.7250692,.6349947,.3650052,.3607773,.7020003,.5792084,.6081876,.8663656 +.3632645,.6367355,.0747665,.9252335,.04608,.9539199,.2392728,.9091664,.6658179,.8590808,1.638283 +.3583026,.6416974,.3430003,.6569996,.2439876,.7560124,.3945461,1.222072,.9255675,.9382305,1.486441 +.3649519,.6350481,.2784336,.7215664,.2026928,.7973073,.5596761,.5065153,.5259164,.521317,.917065 +.3633513,.6366487,.4820935,.5179065,.4820935,.5179065,.0647946,.6038795,.4080022,.3439901,.4402459 diff --git a/statsmodels/tsa/regime_switching/tests/test_markov_autoregression.py b/statsmodels/tsa/regime_switching/tests/test_markov_autoregression.py new file mode 100644 index 0000000..c0fd60c --- /dev/null +++ b/statsmodels/tsa/regime_switching/tests/test_markov_autoregression.py @@ -0,0 +1,899 @@ +""" +Tests for Markov Autoregression models + +Author: Chad Fulton +License: BSD-3 +""" +from __future__ import division, absolute_import, print_function + +import warnings +import os + +import numpy as np +from numpy.testing import assert_equal, assert_allclose +import pandas as pd +import pytest + +from statsmodels.tools import add_constant +from statsmodels.tsa.regime_switching import markov_autoregression + +current_path = os.path.dirname(os.path.abspath(__file__)) + + +rgnp = [2.59316421, 2.20217133, 0.45827562, 0.9687438, + -0.24130757, 0.89647478, 2.05393219, 1.73353648, + 0.93871289, -0.46477833, -0.80983406, -1.39763689, + -0.39886093, 1.1918416, 1.45620048, 2.11808228, + 1.08957863, 1.32390273, 0.87296367, -0.19773273, + 0.45420215, 0.07221876, 1.1030364, 0.82097489, + -0.05795795, 0.58447772, -1.56192672, -2.05041027, + 0.53637183, 2.33676839, 2.34014559, 1.2339263, + 1.8869648, -0.45920792, 0.84940469, 1.70139849, + -0.28756312, 0.09594627, -0.86080289, 1.03447127, + 1.23685944, 1.42004502, 2.22410631, 1.30210173, + 1.03517699, 0.9253425, -0.16559951, 1.3444382, + 1.37500131, 1.73222184, 0.71605635, 2.21032143, + 0.85333031, 1.00238776, 0.42725441, 2.14368343, + 1.43789184, 1.57959926, 2.27469826, 1.95962656, + 0.25992399, 1.01946914, 0.49016398, 0.5636338, + 0.5959546, 1.43082857, 0.56230122, 1.15388393, + 1.68722844, 0.77438205, -0.09647045, 1.39600146, + 0.13646798, 0.55223715, -0.39944872, -0.61671102, + -0.08722561, 1.2101835, -0.90729755, 2.64916158, + -0.0080694, 0.51111895, -0.00401437, 2.16821432, + 1.92586732, 1.03504717, 1.85897219, 2.32004929, + 0.25570789, -0.09855274, 0.89073682, -0.55896485, + 0.28350255, -1.31155407, -0.88278776, -1.97454941, + 1.01275265, 1.68264723, 1.38271284, 1.86073637, + 0.4447377, 0.41449001, 0.99202275, 1.36283576, + 1.59970522, 1.98845816, -0.25684232, 0.87786949, + 3.1095655, 0.85324478, 1.23337317, 0.00314302, + -0.09433369, 0.89883322, -0.19036628, 0.99772376, + -2.39120054, 0.06649673, 1.26136017, 1.91637838, + -0.3348029, 0.44207108, -1.40664911, -1.52129889, + 0.29919869, -0.80197448, 0.15204792, 0.98585027, + 2.13034606, 1.34397924, 1.61550522, 2.70930099, + 1.24461412, 0.50835466, 0.14802167] + +rec = [0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, + 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0] + + +def test_predict(): + # AR(1) without mean, k_regimes=2 + endog = np.ones(10) + mod = markov_autoregression.MarkovAutoregression( + endog, k_regimes=2, order=1, trend='nc') + assert_equal(mod.nobs, 9) + assert_equal(mod.endog, np.ones(9)) + + params = np.r_[0.5, 0.5, 1., 0.1, 0.5] + mod_resid = mod._resid(params) + resids = np.zeros((2, 2, mod.nobs)) + # Resids when: S_{t} = 0 + resids[0, :, :] = np.ones(9) - 0.1 * np.ones(9) + assert_allclose(mod_resid[0, :, :], resids[0, :, :]) + # Resids when: S_{t} = 1 + resids[1, :, :] = np.ones(9) - 0.5 * np.ones(9) + assert_allclose(mod_resid[1, :, :], resids[1, :, :]) + + # AR(1) with mean, k_regimes=2 + endog = np.arange(10) + mod = markov_autoregression.MarkovAutoregression( + endog, k_regimes=2, order=1) + assert_equal(mod.nobs, 9) + assert_equal(mod.endog, np.arange(1, 10)) + + params = np.r_[0.5, 0.5, 2., 3., 1., 0.1, 0.5] + mod_resid = mod._resid(params) + resids = np.zeros((2, 2, mod.nobs)) + # Resids when: S_t = 0, S_{t-1} = 0 + resids[0, 0, :] = (np.arange(1, 10) - 2.) - 0.1 * (np.arange(9) - 2.) + assert_allclose(mod_resid[0, 0, :], resids[0, 0, :]) + # Resids when: S_t = 0, S_{t-1} = 1 + resids[0, 1, :] = (np.arange(1, 10) - 2.) - 0.1 * (np.arange(9) - 3.) + assert_allclose(mod_resid[0, 1, :], resids[0, 1, :]) + # Resids when: S_t = 1, S_{t-1} = 0 + resids[1, 0, :] = (np.arange(1, 10) - 3.) - 0.5 * (np.arange(9) - 2.) + assert_allclose(mod_resid[1, 0, :], resids[1, 0, :]) + # Resids when: S_t = 1, S_{t-1} = 1 + resids[1, 1, :] = (np.arange(1, 10) - 3.) - 0.5 * (np.arange(9) - 3.) + assert_allclose(mod_resid[1, 1, :], resids[1, 1, :]) + + # AR(2) with mean, k_regimes=3 + endog = np.arange(10) + mod = markov_autoregression.MarkovAutoregression( + endog, k_regimes=3, order=2) + assert_equal(mod.nobs, 8) + assert_equal(mod.endog, np.arange(2, 10)) + + params = np.r_[[0.3] * 6, 2., 3., 4, 1., 0.1, 0.5, 0.8, -0.05, -0.25, -0.4] + mod_resid = mod._resid(params) + resids = np.zeros((3, 3, 3, mod.nobs)) + # Resids when: S_t = 0, S_{t-1} = 0, S_{t-2} = 0 + resids[0, 0, 0, :] = ( + (np.arange(2, 10) - 2.) - + 0.1 * (np.arange(1, 9) - 2.) - + (-0.05) * (np.arange(8) - 2.)) + assert_allclose(mod_resid[0, 0, 0, :], resids[0, 0, 0, :]) + + # Resids when: S_t = 1, S_{t-1} = 0, S_{t-2} = 0 + resids[1, 0, 0, :] = ( + (np.arange(2, 10) - 3.) - + 0.5 * (np.arange(1, 9) - 2.) - + (-0.25) * (np.arange(8) - 2.)) + assert_allclose(mod_resid[1, 0, 0, :], resids[1, 0, 0, :]) + + # Resids when: S_t = 0, S_{t-1} = 2, S_{t-2} = 1 + resids[0, 2, 1, :] = ( + (np.arange(2, 10) - 2.) - + 0.1 * (np.arange(1, 9) - 4.) - + (-0.05) * (np.arange(8) - 3.)) + assert_allclose(mod_resid[0, 2, 1, :], resids[0, 2, 1, :]) + + # AR(1) with mean + non-switching exog + endog = np.arange(10) + exog = np.r_[0.4, 5, 0.2, 1.2, -0.3, 2.5, 0.2, -0.7, 2., -1.1] + mod = markov_autoregression.MarkovAutoregression( + endog, k_regimes=2, order=1, exog=exog) + assert_equal(mod.nobs, 9) + assert_equal(mod.endog, np.arange(1, 10)) + + params = np.r_[0.5, 0.5, 2., 3., 1.5, 1., 0.1, 0.5] + mod_resid = mod._resid(params) + resids = np.zeros((2, 2, mod.nobs)) + # Resids when: S_t = 0, S_{t-1} = 0 + resids[0, 0, :] = ( + (np.arange(1, 10) - 2. - 1.5 * exog[1:]) - + 0.1 * (np.arange(9) - 2. - 1.5 * exog[:-1])) + assert_allclose(mod_resid[0, 0, :], resids[0, 0, :]) + # Resids when: S_t = 0, S_{t-1} = 1 + resids[0, 1, :] = ( + (np.arange(1, 10) - 2. - 1.5 * exog[1:]) - + 0.1 * (np.arange(9) - 3. - 1.5 * exog[:-1])) + assert_allclose(mod_resid[0, 1, :], resids[0, 1, :]) + # Resids when: S_t = 1, S_{t-1} = 0 + resids[1, 0, :] = ( + (np.arange(1, 10) - 3. - 1.5 * exog[1:]) - + 0.5 * (np.arange(9) - 2. - 1.5 * exog[:-1])) + assert_allclose(mod_resid[1, 0, :], resids[1, 0, :]) + # Resids when: S_t = 1, S_{t-1} = 1 + resids[1, 1, :] = ( + (np.arange(1, 10) - 3. - 1.5 * exog[1:]) - + 0.5 * (np.arange(9) - 3. - 1.5 * exog[:-1])) + assert_allclose(mod_resid[1, 1, :], resids[1, 1, :]) + + +def test_conditional_likelihoods(): + # AR(1) without mean, k_regimes=2, non-switching variance + endog = np.ones(10) + mod = markov_autoregression.MarkovAutoregression( + endog, k_regimes=2, order=1) + assert_equal(mod.nobs, 9) + assert_equal(mod.endog, np.ones(9)) + + params = np.r_[0.5, 0.5, 2., 3., 2., 0.1, 0.5] + resid = mod._resid(params) + conditional_likelihoods = ( + np.exp(-0.5 * resid**2 / 2) / np.sqrt(2 * np.pi * 2)) + assert_equal(mod._conditional_likelihoods(params), conditional_likelihoods) + + # AR(1) without mean, k_regimes=3, switching variance + endog = np.ones(10) + mod = markov_autoregression.MarkovAutoregression( + endog, k_regimes=3, order=1, switching_variance=True) + assert_equal(mod.nobs, 9) + assert_equal(mod.endog, np.ones(9)) + + params = np.r_[[0.3]*6, 2., 3., 4., 1.5, 3., 4.5, 0.1, 0.5, 0.8] + mod_conditional_likelihoods = mod._conditional_likelihoods(params) + conditional_likelihoods = mod._resid(params) + + # S_t = 0 + conditional_likelihoods[0, :, :] = ( + np.exp(-0.5 * conditional_likelihoods[0, :, :]**2 / 1.5) / + np.sqrt(2 * np.pi * 1.5)) + assert_allclose(mod_conditional_likelihoods[0, :, :], + conditional_likelihoods[0, :, :]) + # S_t = 1 + conditional_likelihoods[1, :, :] = ( + np.exp(-0.5 * conditional_likelihoods[1, :, :]**2 / 3.) / + np.sqrt(2 * np.pi * 3.)) + assert_allclose(mod_conditional_likelihoods[1, :, :], + conditional_likelihoods[1, :, :]) + # S_t = 2 + conditional_likelihoods[2, :, :] = ( + np.exp(-0.5 * conditional_likelihoods[2, :, :]**2 / 4.5) / + np.sqrt(2 * np.pi * 4.5)) + assert_allclose(mod_conditional_likelihoods[2, :, :], + conditional_likelihoods[2, :, :]) + + +class MarkovAutoregression(object): + @classmethod + def setup_class(cls, true, endog, atol=1e-5, rtol=1e-7, **kwargs): + cls.model = markov_autoregression.MarkovAutoregression(endog, **kwargs) + cls.true = true + cls.result = cls.model.smooth(cls.true['params']) + cls.atol = atol + cls.rtol = rtol + + def test_llf(self): + assert_allclose(self.result.llf, self.true['llf'], atol=self.atol, + rtol=self.rtol) + + def test_fit(self, **kwargs): + # Test fitting against Stata + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + res = self.model.fit(disp=False, **kwargs) + assert_allclose(res.llf, self.true['llf_fit'], atol=self.atol, + rtol=self.rtol) + + @pytest.mark.smoke + def test_fit_em(self, **kwargs): + # Test EM fitting (smoke test) + res_em = self.model._fit_em(**kwargs) + assert_allclose(res_em.llf, self.true['llf_fit_em'], atol=self.atol, + rtol=self.rtol) + + +hamilton_ar2_short_filtered_joint_probabilities = np.array([ + [[[4.99506987e-02, 6.44048275e-04, 6.22227140e-05, + 4.45756755e-06, 5.26645567e-07, 7.99846146e-07, + 1.19425705e-05, 6.87762063e-03], + [1.95930395e-02, 3.25884335e-04, 1.12955091e-04, + 3.38537103e-04, 9.81927968e-06, 2.71696750e-05, + 5.83828290e-03, 7.64261509e-02]], + + [[1.97113193e-03, 9.50372207e-05, 1.98390978e-04, + 1.88188953e-06, 4.83449400e-07, 1.14872860e-05, + 4.02918239e-06, 4.35015431e-04], + [2.24870443e-02, 1.27331172e-03, 9.62155856e-03, + 4.04178695e-03, 2.75516282e-04, 1.18179572e-02, + 5.99778157e-02, 1.48149567e-01]]], + + + [[[6.70912859e-02, 1.84223872e-02, 2.55621792e-04, + 4.48500688e-05, 7.80481515e-05, 2.73734559e-06, + 7.59835896e-06, 1.42930726e-03], + [2.10053328e-02, 7.44036383e-03, 3.70388879e-04, + 2.71878370e-03, 1.16152088e-03, 7.42182691e-05, + 2.96490192e-03, 1.26774695e-02]], + + [[8.09335679e-02, 8.31016518e-02, 2.49149080e-02, + 5.78825626e-04, 2.19019941e-03, 1.20179130e-03, + 7.83659430e-05, 2.76363377e-03], + [7.36967899e-01, 8.88697316e-01, 9.64463954e-01, + 9.92270877e-01, 9.96283886e-01, 9.86863839e-01, + 9.31117063e-01, 7.51241236e-01]]]]) + + +hamilton_ar2_short_predicted_joint_probabilities = np.array([[ + [[[1.20809334e-01, 3.76964436e-02, 4.86045844e-04, + 4.69578023e-05, 3.36400588e-06, 3.97445190e-07, + 6.03622290e-07, 9.01273552e-06], + [3.92723623e-02, 1.47863379e-02, 2.45936108e-04, + 8.52441571e-05, 2.55484811e-04, 7.41034525e-06, + 2.05042201e-05, 4.40599447e-03]], + + [[4.99131230e-03, 1.48756005e-03, 7.17220245e-05, + 1.49720314e-04, 1.42021122e-06, 3.64846209e-07, + 8.66914462e-06, 3.04071516e-06], + [4.70476003e-02, 1.69703652e-02, 9.60933974e-04, + 7.26113047e-03, 3.05022748e-03, 2.07924699e-04, + 8.91869322e-03, 4.52636381e-02]]], + + + [[[4.99131230e-03, 6.43506069e-03, 1.76698327e-03, + 2.45179642e-05, 4.30179435e-06, 7.48598845e-06, + 2.62552503e-07, 7.28796600e-07], + [1.62256192e-03, 2.01472650e-03, 7.13642497e-04, + 3.55258493e-05, 2.60772139e-04, 1.11407276e-04, + 7.11864528e-06, 2.84378568e-04]], + + [[5.97950448e-03, 7.76274317e-03, 7.97069493e-03, + 2.38971340e-03, 5.55180599e-05, 2.10072977e-04, + 1.15269812e-04, 7.51646942e-06], + [5.63621989e-02, 7.06862760e-02, 8.52394030e-02, + 9.25065601e-02, 9.51736612e-02, 9.55585689e-02, + 9.46550451e-02, 8.93080931e-02]]]], + + + + [[[[3.92723623e-02, 1.22542551e-02, 1.58002431e-04, + 1.52649118e-05, 1.09356167e-06, 1.29200377e-07, + 1.96223855e-07, 2.92983500e-06], + [1.27665503e-02, 4.80670161e-03, 7.99482261e-05, + 2.77109335e-05, 8.30522919e-05, 2.40893443e-06, + 6.66545485e-06, 1.43228843e-03]], + + [[1.62256192e-03, 4.83571884e-04, 2.33151963e-05, + 4.86706634e-05, 4.61678312e-07, 1.18603191e-07, + 2.81814142e-06, 9.88467229e-07], + [1.52941031e-02, 5.51667911e-03, 3.12377744e-04, + 2.36042810e-03, 9.91559466e-04, 6.75915830e-05, + 2.89926399e-03, 1.47141776e-02]]], + + + [[[4.70476003e-02, 6.06562252e-02, 1.66554040e-02, + 2.31103828e-04, 4.05482745e-05, 7.05621631e-05, + 2.47479309e-06, 6.86956236e-06], + [1.52941031e-02, 1.89906063e-02, 6.72672133e-03, + 3.34863029e-04, 2.45801156e-03, 1.05011361e-03, + 6.70996238e-05, 2.68052335e-03]], + + [[5.63621989e-02, 7.31708248e-02, 7.51309569e-02, + 2.25251946e-02, 5.23307566e-04, 1.98012644e-03, + 1.08652148e-03, 7.08494735e-05], + [5.31264334e-01, 6.66281623e-01, 8.03457913e-01, + 8.71957394e-01, 8.97097216e-01, 9.00725317e-01, + 8.92208794e-01, 8.41808970e-01]]]]]) + + +hamilton_ar2_short_smoothed_joint_probabilities = np.array([ + [[[1.29898189e-02, 1.66298475e-04, 1.29822987e-05, + 9.95268382e-07, 1.84473346e-07, 7.18761267e-07, + 1.69576494e-05, 6.87762063e-03], + [5.09522472e-03, 8.41459714e-05, 2.35672254e-05, + 7.55872505e-05, 3.43949612e-06, 2.44153330e-05, + 8.28997024e-03, 7.64261509e-02]], + + [[5.90021731e-04, 2.55342733e-05, 4.50698224e-05, + 5.30734135e-07, 1.80741761e-07, 1.11483792e-05, + 5.98539007e-06, 4.35015431e-04], + [6.73107901e-03, 3.42109009e-04, 2.18579464e-03, + 1.13987259e-03, 1.03004157e-04, 1.14692946e-02, + 8.90976350e-02, 1.48149567e-01]]], + + + [[[6.34648123e-02, 1.79187451e-02, 2.37462147e-04, + 3.55542558e-05, 7.63980455e-05, 2.90520820e-06, + 8.17644492e-06, 1.42930726e-03], + [1.98699352e-02, 7.23695477e-03, 3.44076057e-04, + 2.15527721e-03, 1.13696383e-03, 7.87695658e-05, + 3.19047276e-03, 1.26774695e-02]], + + [[8.81925054e-02, 8.33092133e-02, 2.51106301e-02, + 5.81007470e-04, 2.19065072e-03, 1.20221350e-03, + 7.56893839e-05, 2.76363377e-03], + [8.03066603e-01, 8.90916999e-01, 9.72040418e-01, + 9.96011175e-01, 9.96489179e-01, 9.87210535e-01, + 8.99315113e-01, 7.51241236e-01]]]]) + + +class TestHamiltonAR2Short(MarkovAutoregression): + # This is just a set of regression tests + @classmethod + def setup_class(cls): + true = { + 'params': np.r_[0.754673, 0.095915, -0.358811, 1.163516, + np.exp(-0.262658)**2, 0.013486, -0.057521], + 'llf': -10.14066, + 'llf_fit': -4.0523073, + 'llf_fit_em': -8.885836 + } + super(TestHamiltonAR2Short, cls).setup_class( + true, rgnp[-10:], k_regimes=2, order=2, switching_ar=False) + + def test_fit_em(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + super(TestHamiltonAR2Short, self).test_fit_em() + + def test_filter_output(self, **kwargs): + res = self.result + + # Filtered + assert_allclose(res.filtered_joint_probabilities, + hamilton_ar2_short_filtered_joint_probabilities) + + # Predicted + desired = hamilton_ar2_short_predicted_joint_probabilities + if desired.ndim > res.predicted_joint_probabilities.ndim: + desired = desired.sum(axis=-2) + assert_allclose(res.predicted_joint_probabilities, desired) + + def test_smoother_output(self, **kwargs): + res = self.result + + # Filtered + assert_allclose(res.filtered_joint_probabilities, + hamilton_ar2_short_filtered_joint_probabilities) + + # Predicted + desired = hamilton_ar2_short_predicted_joint_probabilities + if desired.ndim > res.predicted_joint_probabilities.ndim: + desired = desired.sum(axis=-2) + assert_allclose(res.predicted_joint_probabilities, desired) + + # Smoothed, entry-by-entry + assert_allclose( + res.smoothed_joint_probabilities[..., -1], + hamilton_ar2_short_smoothed_joint_probabilities[..., -1]) + assert_allclose( + res.smoothed_joint_probabilities[..., -2], + hamilton_ar2_short_smoothed_joint_probabilities[..., -2]) + assert_allclose( + res.smoothed_joint_probabilities[..., -3], + hamilton_ar2_short_smoothed_joint_probabilities[..., -3]) + assert_allclose( + res.smoothed_joint_probabilities[..., :-3], + hamilton_ar2_short_smoothed_joint_probabilities[..., :-3]) + + +hamilton_ar4_filtered = [ + 0.776712, 0.949192, 0.996320, 0.990258, 0.940111, 0.537442, + 0.140001, 0.008942, 0.048480, 0.614097, 0.910889, 0.995463, + 0.979465, 0.992324, 0.984561, 0.751038, 0.776268, 0.522048, + 0.814956, 0.821786, 0.472729, 0.673567, 0.029031, 0.001556, + 0.433276, 0.985463, 0.995025, 0.966067, 0.998445, 0.801467, + 0.960997, 0.996431, 0.461365, 0.199357, 0.027398, 0.703626, + 0.946388, 0.985321, 0.998244, 0.989567, 0.984510, 0.986811, + 0.793788, 0.973675, 0.984848, 0.990418, 0.918427, 0.998769, + 0.977647, 0.978742, 0.927635, 0.998691, 0.988934, 0.991654, + 0.999288, 0.999073, 0.918636, 0.987710, 0.966876, 0.910015, + 0.826150, 0.969451, 0.844049, 0.941525, 0.993363, 0.949978, + 0.615206, 0.970915, 0.787585, 0.707818, 0.200476, 0.050835, + 0.140723, 0.809850, 0.086422, 0.990344, 0.785963, 0.817425, + 0.659152, 0.996578, 0.992860, 0.948501, 0.996883, 0.999712, + 0.906694, 0.725013, 0.963690, 0.386960, 0.241302, 0.009078, + 0.015789, 0.000896, 0.541530, 0.928686, 0.953704, 0.992741, + 0.935877, 0.918958, 0.977316, 0.987941, 0.987300, 0.996769, + 0.645469, 0.921285, 0.999917, 0.949335, 0.968914, 0.886025, + 0.777141, 0.904381, 0.368277, 0.607429, 0.002491, 0.227610, + 0.871284, 0.987717, 0.288705, 0.512124, 0.030329, 0.005177, + 0.256183, 0.020955, 0.051620, 0.549009, 0.991715, 0.987892, + 0.995377, 0.999833, 0.993756, 0.956164, 0.927714] + +hamilton_ar4_smoothed = [ + 0.968096, 0.991071, 0.998559, 0.958534, 0.540652, 0.072784, + 0.010999, 0.006228, 0.172144, 0.898574, 0.989054, 0.998293, + 0.986434, 0.993248, 0.976868, 0.858521, 0.847452, 0.675670, + 0.596294, 0.165407, 0.035270, 0.127967, 0.007414, 0.004944, + 0.815829, 0.998128, 0.998091, 0.993227, 0.999283, 0.921100, + 0.977171, 0.971757, 0.124680, 0.063710, 0.114570, 0.954701, + 0.994852, 0.997302, 0.999345, 0.995817, 0.996218, 0.994580, + 0.933990, 0.996054, 0.998151, 0.996976, 0.971489, 0.999786, + 0.997362, 0.996755, 0.993053, 0.999947, 0.998469, 0.997987, + 0.999830, 0.999360, 0.953176, 0.992673, 0.975235, 0.938121, + 0.946784, 0.986897, 0.905792, 0.969755, 0.995379, 0.914480, + 0.772814, 0.931385, 0.541742, 0.394596, 0.063428, 0.027829, + 0.124527, 0.286105, 0.069362, 0.995950, 0.961153, 0.962449, + 0.945022, 0.999855, 0.998943, 0.980041, 0.999028, 0.999838, + 0.863305, 0.607421, 0.575983, 0.013300, 0.007562, 0.000635, + 0.001806, 0.002196, 0.803550, 0.972056, 0.984503, 0.998059, + 0.985211, 0.988486, 0.994452, 0.994498, 0.998873, 0.999192, + 0.870482, 0.976282, 0.999961, 0.984283, 0.973045, 0.786176, + 0.403673, 0.275418, 0.115199, 0.257560, 0.004735, 0.493936, + 0.907360, 0.873199, 0.052959, 0.076008, 0.001653, 0.000847, + 0.062027, 0.021257, 0.219547, 0.955654, 0.999851, 0.997685, + 0.998324, 0.999939, 0.996858, 0.969209, 0.927714] + + +class TestHamiltonAR4(MarkovAutoregression): + @classmethod + def setup_class(cls): + # Results from E-views: + # Dependent variable followed by a list of switching regressors: + # rgnp c + # List of non-switching regressors: + # ar(1) ar(2) ar(3) ar(4) + # Do not check "Regime specific error variances" + # Switching type: Markov + # Number of Regimes: 2 + # Probability regressors: + # c + # Method SWITCHREG + # Sample 1951q1 1984q4 + true = { + 'params': np.r_[0.754673, 0.095915, -0.358811, 1.163516, + np.exp(-0.262658)**2, 0.013486, -0.057521, + -0.246983, -0.212923], + 'llf': -181.26339, + 'llf_fit': -181.26339, + 'llf_fit_em': -183.85444, + 'bse_oim': np.r_[.0965189, .0377362, .2645396, .0745187, np.nan, + .1199942, .137663, .1069103, .1105311, ] + } + super(TestHamiltonAR4, cls).setup_class( + true, rgnp, k_regimes=2, order=4, switching_ar=False) + + def test_filtered_regimes(self): + res = self.result + assert_equal(len(res.filtered_marginal_probabilities[:, 1]), + self.model.nobs) + assert_allclose(res.filtered_marginal_probabilities[:, 1], + hamilton_ar4_filtered, atol=1e-5) + + def test_smoothed_regimes(self): + res = self.result + assert_equal(len(res.smoothed_marginal_probabilities[:, 1]), + self.model.nobs) + assert_allclose(res.smoothed_marginal_probabilities[:, 1], + hamilton_ar4_smoothed, atol=1e-5) + + def test_bse(self): + # Can't compare middle element of bse because we estimate sigma^2 + # rather than sigma + bse = self.result.cov_params_approx.diagonal()**0.5 + assert_allclose(bse[:4], self.true['bse_oim'][:4], atol=1e-6) + assert_allclose(bse[6:], self.true['bse_oim'][6:], atol=1e-6) + + +class TestHamiltonAR2Switch(MarkovAutoregression): + # Results from Stata, see http://www.stata.com/manuals14/tsmswitch.pdf + @classmethod + def setup_class(cls): + path = os.path.join(current_path, 'results', + 'results_predict_rgnp.csv') + results = pd.read_csv(path) + + true = { + 'params': np.r_[.3812383, .3564492, -.0055216, 1.195482, + .6677098**2, .3710719, .4621503, .7002937, + -.3206652], + 'llf': -179.32354, + 'llf_fit': -179.38684, + 'llf_fit_em': -184.99606, + 'bse_oim': np.r_[.1424841, .0994742, .2057086, .1225987, np.nan, + .1754383, .1652473, .187409, .1295937], + 'smoothed0': results.iloc[3:]['switchar2_sm1'], + 'smoothed1': results.iloc[3:]['switchar2_sm2'], + 'predict0': results.iloc[3:]['switchar2_yhat1'], + 'predict1': results.iloc[3:]['switchar2_yhat2'], + 'predict_predicted': results.iloc[3:]['switchar2_pyhat'], + 'predict_filtered': results.iloc[3:]['switchar2_fyhat'], + 'predict_smoothed': results.iloc[3:]['switchar2_syhat'], + } + super(TestHamiltonAR2Switch, cls).setup_class( + true, rgnp, k_regimes=2, order=2) + + def test_smoothed_marginal_probabilities(self): + assert_allclose(self.result.smoothed_marginal_probabilities[:, 0], + self.true['smoothed0'], atol=1e-6) + assert_allclose(self.result.smoothed_marginal_probabilities[:, 1], + self.true['smoothed1'], atol=1e-6) + + def test_predict(self): + # Smoothed + actual = self.model.predict( + self.true['params'], probabilities='smoothed') + assert_allclose(actual, self.true['predict_smoothed'], atol=1e-6) + actual = self.model.predict( + self.true['params'], probabilities=None) + assert_allclose(actual, self.true['predict_smoothed'], atol=1e-6) + + actual = self.result.predict(probabilities='smoothed') + assert_allclose(actual, self.true['predict_smoothed'], atol=1e-6) + actual = self.result.predict(probabilities=None) + assert_allclose(actual, self.true['predict_smoothed'], atol=1e-6) + + def test_bse(self): + # Can't compare middle element of bse because we estimate sigma^2 + # rather than sigma + bse = self.result.cov_params_approx.diagonal()**0.5 + assert_allclose(bse[:4], self.true['bse_oim'][:4], atol=1e-7) + assert_allclose(bse[6:], self.true['bse_oim'][6:], atol=1e-7) + + +hamilton_ar1_switch_filtered = [ + 0.840288, 0.730337, 0.900234, 0.596492, 0.921618, 0.983828, + 0.959039, 0.898366, 0.477335, 0.251089, 0.049367, 0.386782, + 0.942868, 0.965632, 0.982857, 0.897603, 0.946986, 0.916413, + 0.640912, 0.849296, 0.778371, 0.954420, 0.929906, 0.723930, + 0.891196, 0.061163, 0.004806, 0.977369, 0.997871, 0.977950, + 0.896580, 0.963246, 0.430539, 0.906586, 0.974589, 0.514506, + 0.683457, 0.276571, 0.956475, 0.966993, 0.971618, 0.987019, + 0.916670, 0.921652, 0.930265, 0.655554, 0.965858, 0.964981, + 0.976790, 0.868267, 0.983240, 0.852052, 0.919150, 0.854467, + 0.987868, 0.935840, 0.958138, 0.979535, 0.956541, 0.716322, + 0.919035, 0.866437, 0.899609, 0.914667, 0.976448, 0.867252, + 0.953075, 0.977850, 0.884242, 0.688299, 0.968461, 0.737517, + 0.870674, 0.559413, 0.380339, 0.582813, 0.941311, 0.240020, + 0.999349, 0.619258, 0.828343, 0.729726, 0.991009, 0.966291, + 0.899148, 0.970798, 0.977684, 0.695877, 0.637555, 0.915824, + 0.434600, 0.771277, 0.113756, 0.144002, 0.008466, 0.994860, + 0.993173, 0.961722, 0.978555, 0.789225, 0.836283, 0.940383, + 0.968368, 0.974473, 0.980248, 0.518125, 0.904086, 0.993023, + 0.802936, 0.920906, 0.685445, 0.666524, 0.923285, 0.643861, + 0.938184, 0.008862, 0.945406, 0.990061, 0.991500, 0.486669, + 0.805039, 0.089036, 0.025067, 0.863309, 0.352784, 0.733295, + 0.928710, 0.984257, 0.926597, 0.959887, 0.984051, 0.872682, + 0.824375, 0.780157] + +hamilton_ar1_switch_smoothed = [ + 0.900074, 0.758232, 0.914068, 0.637248, 0.901951, 0.979905, + 0.958935, 0.888641, 0.261602, 0.148761, 0.056919, 0.424396, + 0.932184, 0.954962, 0.983958, 0.895595, 0.949519, 0.923473, + 0.678898, 0.848793, 0.807294, 0.958868, 0.942936, 0.809137, + 0.960892, 0.032947, 0.007127, 0.967967, 0.996551, 0.979278, + 0.896181, 0.987462, 0.498965, 0.908803, 0.986893, 0.488720, + 0.640492, 0.325552, 0.951996, 0.959703, 0.960914, 0.986989, + 0.916779, 0.924570, 0.935348, 0.677118, 0.960749, 0.958966, + 0.976974, 0.838045, 0.986562, 0.847774, 0.908866, 0.821110, + 0.984965, 0.915302, 0.938196, 0.976518, 0.973780, 0.744159, + 0.922006, 0.873292, 0.904035, 0.917547, 0.978559, 0.870915, + 0.948420, 0.979747, 0.884791, 0.711085, 0.973235, 0.726311, + 0.828305, 0.446642, 0.411135, 0.639357, 0.973151, 0.141707, + 0.999805, 0.618207, 0.783239, 0.672193, 0.987618, 0.964655, + 0.877390, 0.962437, 0.989002, 0.692689, 0.699370, 0.937934, + 0.522535, 0.824567, 0.058746, 0.146549, 0.009864, 0.994072, + 0.992084, 0.956945, 0.984297, 0.795926, 0.845698, 0.935364, + 0.963285, 0.972767, 0.992168, 0.528278, 0.826349, 0.996574, + 0.811431, 0.930873, 0.680756, 0.721072, 0.937977, 0.731879, + 0.996745, 0.016121, 0.951187, 0.989820, 0.996968, 0.592477, + 0.889144, 0.036015, 0.040084, 0.858128, 0.418984, 0.746265, + 0.907990, 0.980984, 0.900449, 0.934741, 0.986807, 0.872818, + 0.812080, 0.780157] + + +class TestHamiltonAR1Switch(MarkovAutoregression): + @classmethod + def setup_class(cls): + # Results from E-views: + # Dependent variable followed by a list of switching regressors: + # rgnp c ar(1) + # List of non-switching regressors: + # Do not check "Regime specific error variances" + # Switching type: Markov + # Number of Regimes: 2 + # Probability regressors: + # c + # Method SWITCHREG + # Sample 1951q1 1984q4 + true = { + 'params': np.r_[0.85472458, 0.53662099, 1.041419, -0.479157, + np.exp(-0.231404)**2, 0.243128, 0.713029], + 'llf': -186.7575, + 'llf_fit': -186.7575, + 'llf_fit_em': -189.25446 + } + super(TestHamiltonAR1Switch, cls).setup_class( + true, rgnp, k_regimes=2, order=1) + + def test_filtered_regimes(self): + assert_allclose(self.result.filtered_marginal_probabilities[:, 0], + hamilton_ar1_switch_filtered, atol=1e-5) + + def test_smoothed_regimes(self): + assert_allclose(self.result.smoothed_marginal_probabilities[:, 0], + hamilton_ar1_switch_smoothed, atol=1e-5) + + def test_expected_durations(self): + expected_durations = [6.883477, 1.863513] + assert_allclose(self.result.expected_durations, expected_durations, + atol=1e-5) + + +hamilton_ar1_switch_tvtp_filtered = [ + 0.999996, 0.999211, 0.999849, 0.996007, 0.999825, 0.999991, + 0.999981, 0.999819, 0.041745, 0.001116, 1.74e-05, 0.000155, + 0.999976, 0.999958, 0.999993, 0.999878, 0.999940, 0.999791, + 0.996553, 0.999486, 0.998485, 0.999894, 0.999765, 0.997657, + 0.999619, 0.002853, 1.09e-05, 0.999884, 0.999996, 0.999997, + 0.999919, 0.999987, 0.989762, 0.999807, 0.999978, 0.050734, + 0.010660, 0.000217, 0.006174, 0.999977, 0.999954, 0.999995, + 0.999934, 0.999867, 0.999824, 0.996783, 0.999941, 0.999948, + 0.999981, 0.999658, 0.999994, 0.999753, 0.999859, 0.999330, + 0.999993, 0.999956, 0.999970, 0.999996, 0.999991, 0.998674, + 0.999869, 0.999432, 0.999570, 0.999600, 0.999954, 0.999499, + 0.999906, 0.999978, 0.999712, 0.997441, 0.999948, 0.998379, + 0.999578, 0.994745, 0.045936, 0.006816, 0.027384, 0.000278, + 1.000000, 0.996382, 0.999541, 0.998130, 0.999992, 0.999990, + 0.999860, 0.999986, 0.999997, 0.998520, 0.997777, 0.999821, + 0.033353, 0.011629, 6.95e-05, 4.52e-05, 2.04e-06, 0.999963, + 0.999977, 0.999949, 0.999986, 0.999240, 0.999373, 0.999858, + 0.999946, 0.999972, 0.999991, 0.994039, 0.999817, 0.999999, + 0.999715, 0.999924, 0.997763, 0.997944, 0.999825, 0.996592, + 0.695147, 0.000161, 0.999665, 0.999928, 0.999988, 0.992742, + 0.374214, 0.001569, 2.16e-05, 0.000941, 4.32e-05, 0.000556, + 0.999955, 0.999993, 0.999942, 0.999973, 0.999999, 0.999919, + 0.999438, 0.998738] + +hamilton_ar1_switch_tvtp_smoothed = [ + 0.999997, 0.999246, 0.999918, 0.996118, 0.999740, 0.999990, + 0.999984, 0.999783, 0.035454, 0.000958, 1.53e-05, 0.000139, + 0.999973, 0.999939, 0.999994, 0.999870, 0.999948, 0.999884, + 0.997243, 0.999668, 0.998424, 0.999909, 0.999860, 0.998037, + 0.999559, 0.002533, 1.16e-05, 0.999801, 0.999993, 0.999997, + 0.999891, 0.999994, 0.990096, 0.999753, 0.999974, 0.048495, + 0.009289, 0.000542, 0.005991, 0.999974, 0.999929, 0.999995, + 0.999939, 0.999880, 0.999901, 0.996221, 0.999937, 0.999935, + 0.999985, 0.999450, 0.999995, 0.999768, 0.999897, 0.998930, + 0.999992, 0.999949, 0.999954, 0.999995, 0.999994, 0.998687, + 0.999902, 0.999547, 0.999653, 0.999538, 0.999966, 0.999485, + 0.999883, 0.999982, 0.999831, 0.996940, 0.999968, 0.998678, + 0.999780, 0.993895, 0.055372, 0.020421, 0.022913, 0.000127, + 1.000000, 0.997072, 0.999715, 0.996893, 0.999990, 0.999991, + 0.999811, 0.999978, 0.999998, 0.999100, 0.997866, 0.999787, + 0.034912, 0.009932, 5.91e-05, 3.99e-05, 1.77e-06, 0.999954, + 0.999976, 0.999932, 0.999991, 0.999429, 0.999393, 0.999845, + 0.999936, 0.999961, 0.999995, 0.994246, 0.999570, 1.000000, + 0.999702, 0.999955, 0.998611, 0.998019, 0.999902, 0.998486, + 0.673991, 0.000205, 0.999627, 0.999902, 0.999994, 0.993707, + 0.338707, 0.001359, 2.36e-05, 0.000792, 4.47e-05, 0.000565, + 0.999932, 0.999993, 0.999931, 0.999950, 0.999999, 0.999940, + 0.999626, 0.998738] + +expected_durations = [ + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [1.223309, 1864.084], + [1.223309, 1864.084], [1.223309, 1864.084], [1.223309, 1864.084], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [1.223309, 1864.084], [1.223309, 1864.084], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [1.223309, 1864.084], + [1.223309, 1864.084], [1.223309, 1864.084], [1.223309, 1864.084], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [1.223309, 1864.084], + [1.223309, 1864.084], [1.223309, 1864.084], [1.223309, 1864.084], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [1.223309, 1864.084], [1.223309, 1864.084], [1.223309, 1864.084], + [1.223309, 1864.084], [1.223309, 1864.084], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [1.223309, 1864.084], [1.223309, 1864.084], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [1.223309, 1864.084], [1.223309, 1864.084], [1.223309, 1864.084], + [1.223309, 1864.084], [1.223309, 1864.084], [1.223309, 1864.084], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391], [710.7573, 1.000391], + [710.7573, 1.000391], [710.7573, 1.000391]] + + +class TestHamiltonAR1SwitchTVTP(MarkovAutoregression): + @classmethod + def setup_class(cls): + # Results from E-views: + # Dependent variable followed by a list of switching regressors: + # rgnp c ar(1) + # List of non-switching regressors: + # Do not check "Regime specific error variances" + # Switching type: Markov + # Number of Regimes: 2 + # Probability regressors: + # c recession + # Method SWITCHREG + # Sample 1951q1 1984q4 + true = { + 'params': np.r_[6.564923, 7.846371, -8.064123, -15.37636, + 1.027190, -0.719760, + np.exp(-0.217003)**2, 0.161489, 0.022536], + 'llf': -163.914049, + 'llf_fit': -161.786477, + 'llf_fit_em': -163.914049 + } + exog_tvtp = np.c_[np.ones(len(rgnp)), rec] + super(TestHamiltonAR1SwitchTVTP, cls).setup_class( + true, rgnp, k_regimes=2, order=1, exog_tvtp=exog_tvtp) + + @pytest.mark.skip + def test_fit_em(self): + pass + + def test_filtered_regimes(self): + assert_allclose(self.result.filtered_marginal_probabilities[:, 0], + hamilton_ar1_switch_tvtp_filtered, atol=1e-5) + + def test_smoothed_regimes(self): + assert_allclose(self.result.smoothed_marginal_probabilities[:, 0], + hamilton_ar1_switch_tvtp_smoothed, atol=1e-5) + + def test_expected_durations(self): + assert_allclose(self.result.expected_durations, expected_durations, + rtol=1e-5, atol=1e-7) + + +class TestFilardo(MarkovAutoregression): + @classmethod + def setup_class(cls): + path = os.path.join(current_path, 'results', 'mar_filardo.csv') + cls.mar_filardo = pd.read_csv(path) + true = { + 'params': np.r_[4.35941747, -1.6493936, 1.7702123, 0.9945672, + 0.517298, -0.865888, + np.exp(-0.362469)**2, + 0.189474, 0.079344, 0.110944, 0.122251], + 'llf': -586.5718, + 'llf_fit': -586.5718, + 'llf_fit_em': -586.5718 + } + endog = cls.mar_filardo['dlip'].iloc[1:].values + exog_tvtp = add_constant( + cls.mar_filardo['dmdlleading'].iloc[:-1].values) + super(TestFilardo, cls).setup_class( + true, endog, k_regimes=2, order=4, switching_ar=False, + exog_tvtp=exog_tvtp) + + @pytest.mark.skip + def test_fit(self, **kwargs): + pass + + @pytest.mark.skip + def test_fit_em(self): + pass + + def test_filtered_regimes(self): + assert_allclose(self.result.filtered_marginal_probabilities[:, 0], + self.mar_filardo['filtered_0'].iloc[5:], atol=1e-5) + + def test_smoothed_regimes(self): + assert_allclose(self.result.smoothed_marginal_probabilities[:, 0], + self.mar_filardo['smoothed_0'].iloc[5:], atol=1e-5) + + def test_expected_durations(self): + assert_allclose(self.result.expected_durations, + self.mar_filardo[['duration0', 'duration1']].iloc[5:], + rtol=1e-5, atol=1e-7) + + +class TestFilardoPandas(MarkovAutoregression): + @classmethod + def setup_class(cls): + path = os.path.join(current_path, 'results', 'mar_filardo.csv') + cls.mar_filardo = pd.read_csv(path) + cls.mar_filardo.index = pd.date_range('1948-02-01', '1991-04-01', + freq='MS') + true = { + 'params': np.r_[4.35941747, -1.6493936, 1.7702123, 0.9945672, + 0.517298, -0.865888, + np.exp(-0.362469)**2, + 0.189474, 0.079344, 0.110944, 0.122251], + 'llf': -586.5718, + 'llf_fit': -586.5718, + 'llf_fit_em': -586.5718 + } + endog = cls.mar_filardo['dlip'].iloc[1:] + exog_tvtp = add_constant( + cls.mar_filardo['dmdlleading'].iloc[:-1]) + super(TestFilardoPandas, cls).setup_class( + true, endog, k_regimes=2, order=4, switching_ar=False, + exog_tvtp=exog_tvtp) + + @pytest.mark.skip + def test_fit(self, **kwargs): + pass + + @pytest.mark.skip + def test_fit_em(self): + pass + + def test_filtered_regimes(self): + assert_allclose(self.result.filtered_marginal_probabilities[0], + self.mar_filardo['filtered_0'].iloc[5:], atol=1e-5) + + def test_smoothed_regimes(self): + assert_allclose(self.result.smoothed_marginal_probabilities[0], + self.mar_filardo['smoothed_0'].iloc[5:], atol=1e-5) + + def test_expected_durations(self): + assert_allclose(self.result.expected_durations, + self.mar_filardo[['duration0', 'duration1']].iloc[5:], + rtol=1e-5, atol=1e-7) diff --git a/statsmodels/tsa/regime_switching/tests/test_markov_regression.py b/statsmodels/tsa/regime_switching/tests/test_markov_regression.py new file mode 100644 index 0000000..a7dd244 --- /dev/null +++ b/statsmodels/tsa/regime_switching/tests/test_markov_regression.py @@ -0,0 +1,1270 @@ +""" +Tests for Markov Regression models + +Author: Chad Fulton +License: BSD-3 +""" +from __future__ import division, absolute_import, print_function + +import os +import warnings + +import numpy as np +from numpy.testing import assert_allclose, assert_raises +import pandas as pd +import pytest + +from statsmodels.tsa.regime_switching import (markov_switching, + markov_regression) + + +current_path = os.path.dirname(os.path.abspath(__file__)) + + +# See https://www.stata-press.com/data/r14/usmacro +fedfunds = [1.03, 0.99, 1.34, 1.5, 1.94, 2.36, 2.48, 2.69, 2.81, 2.93, 2.93, + 3.0, 3.23, 3.25, 1.86, 0.94, 1.32, 2.16, 2.57, 3.08, 3.58, 3.99, + 3.93, 3.7, 2.94, 2.3, 2.0, 1.73, 1.68, 2.4, 2.46, 2.61, 2.85, + 2.92, 2.97, 2.96, 3.33, 3.45, 3.46, 3.49, 3.46, 3.58, 3.97, 4.08, + 4.07, 4.17, 4.56, 4.91, 5.41, 5.56, 4.82, 3.99, 3.89, 4.17, 4.79, + 5.98, 5.94, 5.92, 6.57, 8.33, 8.98, 8.94, 8.57, 7.88, 6.7, 5.57, + 3.86, 4.56, 5.47, 4.75, 3.54, 4.3, 4.74, 5.14, 6.54, 7.82, 10.56, + 10.0, 9.32, 11.25, 12.09, 9.35, 6.3, 5.42, 6.16, 5.41, 4.83, 5.2, + 5.28, 4.87, 4.66, 5.16, 5.82, 6.51, 6.76, 7.28, 8.1, 9.58, 10.07, + 10.18, 10.95, 13.58, 15.05, 12.69, 9.84, 15.85, 16.57, 17.78, + 17.58, 13.59, 14.23, 14.51, 11.01, 9.29, 8.65, 8.8, 9.46, 9.43, + 9.69, 10.56, 11.39, 9.27, 8.48, 7.92, 7.9, 8.1, 7.83, 6.92, 6.21, + 6.27, 6.22, 6.65, 6.84, 6.92, 6.66, 7.16, 7.98, 8.47, 9.44, 9.73, + 9.08, 8.61, 8.25, 8.24, 8.16, 7.74, 6.43, 5.86, 5.64, 4.82, 4.02, + 3.77, 3.26, 3.04, 3.04, 3.0, 3.06, 2.99, 3.21, 3.94, 4.49, 5.17, + 5.81, 6.02, 5.8, 5.72, 5.36, 5.24, 5.31, 5.28, 5.28, 5.52, 5.53, + 5.51, 5.52, 5.5, 5.53, 4.86, 4.73, 4.75, 5.09, 5.31, 5.68, 6.27, + 6.52, 6.47, 5.59, 4.33, 3.5, 2.13, 1.73, 1.75, 1.74, 1.44, 1.25, + 1.25, 1.02, 1.0, 1.0, 1.01, 1.43, 1.95, 2.47, 2.94, 3.46, 3.98, + 4.46, 4.91, 5.25, 5.25, 5.26, 5.25, 5.07, 4.5, 3.18, 2.09, 1.94, + 0.51, 0.18, 0.18, 0.16, 0.12, 0.13, 0.19, 0.19, 0.19] + +# See https://www.stata-press.com/data/r14/usmacro +ogap = [-0.53340107, 0.72974336, 2.93532324, 3.58194304, 4.15760183, + 4.28775644, 3.01683831, 2.64185619, 1.82473528, 2.37461162, + 2.39338565, 1.24197006, 1.1370815, -1.28657401, -4.46665335, + -4.79258966, -3.06711817, -1.3212384, -0.54485309, 0.86588413, + -0.2469136, -0.75004685, 0.7417022, -0.71350163, -1.5151515, + -3.80444455, -4.02601957, -3.17873883, -2.48841596, -1.42372882, + -0.61779928, -0.6430338, -0.73277968, -1.38330388, -1.31537247, + -0.95626277, 0., -0.15248552, 0.93233085, 1.03888392, + 1.27174389, 0.63400578, 2.13007665, 2.44789481, 3.37605071, + 4.72771597, 6.20753956, 5.39234877, 5.0825758, 4.8605876, + 4.65116262, 3.52755141, 3.35122228, 3.09326482, 4.10191917, + 4.69641066, 4.38452244, 3.79841614, 4.38338947, 3.63766766, + 3.24129653, 1.84967709, 0.75554705, -0.02802691, -0.03673432, + -1.90527546, -0.14918824, -0.42940569, -0.46382189, -0.97892815, + -0.12142799, 1.37281513, 1.5143193, 2.47730422, 3.9762032, + 4.08987427, 2.62857127, 2.90107131, 0.97277576, 0.42547619, + -1.60488391, -2.97784758, -4.98650694, -5.03382635, -4.25698328, + -3.74993205, -2.39661908, -2.41223454, -2.66694117, -2.62232494, + -2.29969597, -1.38809109, -0.67855304, -1.08100712, -1.82682908, + 0.92868561, 0.87040615, 1.32669306, 0.56407404, -0.13848817, + -0.13089494, -0.58975571, -1.00534534, -3.55482054, -4.20365095, + -2.97225475, -1.57762408, -2.77206445, -2.32418823, -4.01929235, + -6.25393772, -6.46356869, -7.47437572, -8.06377602, -7.57157278, + -6.14639282, -5.00167227, -3.74511886, -2.54788184, -1.64858043, + -1.47994602, -1.44707143, -1.31824112, -1.20102882, -0.57691002, + -0.64480144, -0.57239723, -0.93083948, -0.8392899, -1.19972074, + -1.18918467, -0.87174636, -0.78151888, 0.10762761, -0.10596547, + 0.40488175, 0.17958413, 0.67704558, 0.99767941, 1.00495291, + 0.98304421, 0.47067845, 0.80427116, 0.45058677, -0.26300991, + -1.84629929, -2.99437666, -2.90482664, -3.09490418, -3.32399321, + -2.87384319, -2.47262239, -2.19618678, -1.91843009, -2.46574545, + -2.58180451, -2.72212362, -2.17548561, -1.96046102, -1.3287729, + -1.42521954, -1.04951096, -1.47037697, -1.87099183, -1.72912872, + -1.76828432, -1.85885167, -0.9193368, -0.95776832, -0.62119246, + -0.53508854, -0.04090983, 0.47511154, 0.41246772, 0.57928383, + 0.67604625, 1.1378212, 1.96481478, 2.05066752, 1.93714142, + 2.34412026, 3.16807413, 2.57455897, 3.59218717, 2.79711962, + 2.41787243, 1.19362748, 0.82524049, -0.36692095, -1.00542021, + -0.89346135, -1.23166943, -1.56921482, -2.29188299, -2.56877398, + -2.37549472, -1.4183135, -1.00017595, -1.03901041, -0.86736482, + -0.63541794, -0.38296556, 0.11404825, 0.07249562, 0.30608681, + 0.27121997, 0.90333837, 0.595429, 0.08057959, 0.25154814, + -0.27741581, -0.14053501, -0.06035376, -0.2722317, -1.5122633, + -1.5272249, -2.5325017, -5.14671373, -6.88223982, -7.36753035, + -7.43927145, -6.89403868, -6.8306222, -6.26507998, -5.93287086, + -5.59370756] + +# See https://www.stata-press.com/data/r14/usmacro +inf = [np.nan, np.nan, np.nan, np.nan, -0.2347243, + 0.37373397, 0.25006533, 1.04645514, 2.01665616, 2.58033299, + 3.41399837, 3.60986805, 3.46304512, 3.08529949, 3.45609665, + 3.27347994, 2.29982662, 1.91197193, 0.89083761, 0.390598, + 0.96842253, 1.47531354, 1.39343977, 1.82488036, 1.35991514, + 1.39598227, 1.50695646, 0.8690359, 1.20648873, 0.70517123, + 0.89477205, 1.30740857, 1.20212376, 1.30043352, 1.22895002, + 1.03573787, 1.36272156, 1.39236343, 1.48636675, 1.46398985, + 1.07421875, 1.26611042, 1.1639185, 1.64622331, 1.71658623, + 1.78565705, 2.41930342, 2.6897428, 3.27391338, 3.5685041, + 2.87078357, 2.56671929, 2.70717716, 2.99242783, 3.74010396, + 4.11855173, 4.47761202, 4.62397051, 4.87426901, 5.50198364, + 5.52285719, 5.83354473, 6.22577858, 6.03848171, 5.68597221, + 5.60000038, 4.81102371, 4.31496382, 4.27074528, 3.53535342, + 3.50587225, 3.22580624, 3.02948403, 3.33414626, 4.1129365, + 5.60817289, 6.83709764, 8.41692829, 9.91564655, 10.54788017, + 11.45758915, 12.04798317, 11.13530636, 9.53939915, 8.67963028, + 7.38337183, 6.34047985, 6.01503754, 5.58903217, 5.18573475, + 5.90339899, 6.79609919, 6.57417107, 6.59522104, 6.47466183, + 7.02936935, 8.02397346, 8.9289465, 9.78376389, 10.75433922, + 11.72252846, 12.64148235, 14.20953751, 14.42577076, 12.93487072, + 12.53929329, 11.26111889, 9.87392902, 10.85386753, 9.5831337, + 7.58190918, 6.90676928, 5.81573057, 4.44292784, 3.59408045, + 3.29905081, 2.52680969, 3.23384356, 4.62551022, 4.40519285, + 4.29570436, 4.1543026, 3.64175439, 3.60676312, 3.35249043, + 3.5137701, 3.1053853, 1.67858768, 1.66821122, 1.34587157, + 2.03802228, 3.69979739, 4.16317225, 4.40493536, 3.96511626, + 3.97994113, 4.1420536, 4.3066597, 4.67509222, 5.15961123, + 4.70588255, 4.62759781, 5.23231459, 4.58372736, 5.56420517, + 6.27646685, 5.25958157, 4.84686804, 3.85226536, 2.96485686, + 2.89388347, 3.07301927, 3.07467055, 3.12198234, 3.17306924, + 3.12524581, 2.8174715, 2.76977897, 2.53936958, 2.38237333, + 2.85493255, 2.60332823, 2.84049082, 3.09557867, 2.66420412, + 2.62607908, 2.78390908, 2.8270874, 2.8999064, 3.23162007, + 2.94453382, 2.30179024, 2.22504783, 1.89075232, 1.48277605, + 1.58312511, 1.59639311, 1.5253576, 1.68703699, 2.11280179, + 2.34625125, 2.61982656, 3.25799918, 3.29342604, 3.46889949, + 3.44350553, 3.40975904, 3.32491398, 2.67803454, 1.87507534, + 1.23194993, 1.31765401, 1.57628381, 2.25352097, 2.97640777, + 2.00593972, 2.21688938, 2.00165296, 1.81766617, 2.78586531, + 2.67522621, 3.38513398, 3.0353508, 2.92293549, 3.81956744, + 3.6745038, 3.69086194, 3.92426181, 3.34028482, 1.96539891, + 2.43147993, 2.66511655, 2.34880662, 4.03147316, 4.13719845, + 4.31058264, 5.25250196, 1.59580016, -0.1842365, -0.94229329, + -1.60695589, 1.48749816, 2.33687115, 1.78588998, 1.22873163, + 1.21550024] + +# See https://www.stata-press.com/data/r14/snp500 +areturns = [1.60864139, 0.6581642, 0.91177338, + 1.88970506, 0.76378739, 0.10790635, 0.29509732, + 0.16913767, 1.30772412, 0.85901159, 0.92307973, + 0.9833895, 0.9116146, 2.58575296, 0.36441925, + 1.89720023, 0.65161127, 1.17255056, 0.53518051, + 0.00534112, 1.25064528, 2.00023437, 0.79801333, + 1.42980587, 0.02078664, 2.31948757, 2.78705025, + 1.36003578, 0.15257211, 0.30815724, 0.40030465, + 0.89941251, 0.36925647, 0.75660467, 0.87896836, + 1.07261622, 0.1137321, 1.32838523, 1.03085732, + 1.33930087, 0.66706187, 0.94959277, 1.07173061, + 0.80687243, 1.35347247, 1.56781077, 0.71599048, + 0.50293237, 0.33926481, 2.94415998, 0.72026408, + 0.28967711, 1.05362082, 0.3702977, 2.05277085, + 0.49342933, 0.03423685, 0.34392089, 1.01741159, + 1.43457139, 0.03759775, 1.54626679, 1.07742834, + 0.28664029, 0.72592038, 0.91093767, 0.06915179, + 0.88005662, 0.47802091, 1.2907486, 0.57604247, + 0.71046084, 0.81753206, 0.26241753, 2.57300162, + 0.16590172, 0.2918649, 0.96136051, 1.6711514, + 0.94229084, 1.83614326, 0.28854966, 0.35050908, + 0.04593768, 0.07599987, 0.09888303, 0.12907109, + 2.0099268, 0.23006552, 1.18803704, 0.99970037, + 1.32702613, 0.45646569, 1.43720019, 0.04425191, + 0.53156406, 0.45951003, 1.26583254, 0.26994073, + 0.1238014, 0.53068936, 0.21927625, 0.73882329, + 0.13153869, 0.97837049, 2.36890459, 2.29313374, + 0.75562358, 0.08656374, 2.4979558, 0.64189923, + 0.22916116, 2.27840376, 0.46641645, 2.02508688, + 1.25530422, 1.27711689, 0.07773363, 0.23380435, + 1.58663058, 0.19108967, 0.52218717, 0.18055375, + 1.18262017, 0.47418493, 0.88282752, 0.98944044, + 1.04560554, 0.65470523, 0.2604697, 0.14658713, + 0.77688956, 1.10911596, 0.69967973, 1.04578161, + 0.29641318, 0.98087156, 0.46531865, 0.11846001, + 0.44440377, 1.11066306, 0.02238905, 0.19865835, + 1.48028743, 0.27695858, 0.9391492, 1.70575404, + 2.94507742, 0.35386264, 0.72816408, 1.80369282, + 0.12440593, 1.04197288, 1.2957871, 1.35031664, + 0.55384284, 1.13915396, 0.29186234, 1.21344364, + 0.23005128, 0.85578758, 1.80613887, 1.55996382, + 1.46395147, 0.59826899, 0.65880769, 1.68974137, + 1.12778795, 4.19566727, 0.14379959, 2.09945345, + 0.29264972, 1.25936544, 0.84738803, 0.54094779, + 2.27655816, 1.48392296, 1.13808954, 1.16038692, + 0.46204364, 2.09433556, 1.16782069, 2.0192802, + 2.6190269, 1.63471925, 0.25279006, 2.64083171, + 1.64290273, 2.42852569, 1.54714262, 1.14975035, + 3.59362221, 1.16689992, 5.11030865, 1.81326246, + 0.93489766, 1.38605726, 0.53841805, 1.02298951, + 2.03038621, 2.8340385, 0.13691254, 3.18769765, + 0.23076122, 1.95332313, 1.63122225, 2.66484141, + 0.86377442, 1.1782372, 0.57231718, 1.11979997, + 2.07001758, 0.08726255, 1.71130466, 1.04979181, + 1.9825747, 3.43235064, 1.50204682, 1.75699294, + 2.56816769, 0.75786251, 0.93131924, 1.45494628, + 0.49975556, 0.32756457, 0.47183469, 3.3737793, + 2.25759649, 0.34138981, 3.09048033, 10.32189178, + 10.15319347, 0.12398402, 4.65263939, 7.62032652, + 7.04052448, 4.55579329, 3.52704573, 3.38968754, + 3.00466204, 0.46617937, 1.42808878, 1.00660408, + 4.65142584, 5.20996618, 4.80301046, 0.99780792, + 1.15280604, 1.87296033, 4.60985804, 5.41294718, + 6.06733084, 3.18375754, 10.0548315, 4.22182512, + 1.24640226, 2.66358495, 2.60049844, 0.00352026, + 1.02208447, 4.09924603, 1.27764511, 0.90124834, + 0.5303241, 3.84383249, 1.24640775, 1.39796948, + 2.34609175, 1.7742399, 3.56689548, 1.27681601, + 5.32056713, 3.19770503, 1.89575887, 0.59274858, + 0.64010525, 2.65920091, 0.81912726, 0.4868626, + 3.13063931, 1.3960743, 1.03451502, 1.28983963, + 3.27489519, 1.41772103, 2.00014663, 2.02787399, + 3.50289273, 1.65296888, 0.02450024, 0.04084374, + 0.17252181, 0.78132814, 0.20216605, 1.48436368, + 0.3301619, 1.12080252, 0.00699845, 3.87074757, + 0.84627002, 2.26680374, 2.07992935, 1.62452054, + 0.66078293, 2.26608515, 1.58540344, 0.98763937, + 0.25370923, 1.2576412, 1.07146478, 0.48786601, + 0.02327727, 1.29385257, 3.52217674, 1.05305433, + 5.13598871, 1.43351507, 2.12951326, 3.03700447, + 0.65843326, 4.28524971, 2.3428576, 4.72853422, + 0.58606911, 2.70345545, 0.8207835, 0.16228235, + 2.80714321, 1.97183621, 0.5928334, 3.61601782, + 1.82700455, 1.52638936, 0.72525144, 0.6499536, + 1.58741212, 0.72647524, 0.65064299, 0.43771812, + 2.68048692, 2.20902133, 0.0988697, 0.31138307, + 2.79860616, 1.13209391, 0.91427463, 0.69550049, + 0.68990183, 0.65359998, 1.04932129, 0.00310441, + 0.48663121, 1.68144464, 0.99051267, 0.22263506, + 0.97846323, 0.55040002, 2.56734443, 0.12510587, + 2.15363359, 1.18440747, 0.66974002, 0.48981813, + 2.08285856, 1.03952742, 1.00747502, 0.52523118, + 0.81593889, 0.22168602, 2.73786068, 1.21678591, + 0.235705, 0.56248677, 3.66057348, 0.35822684, + 0.97550339, 1.21677041, 4.03415823, 9.10342026, + 2.24355674, 3.6120553, 4.36456299, 0.83891636, + 1.07712805, 2.28685427, 4.04548168, 1.67408013, + 4.57762337, 2.47123241, 1.88890803, 1.62245703, + 0.02149973, 0.48483402, 4.40716505, 0.28621164, + 4.56798553, 1.6255945, 0.6124717, 2.72943926, + 0.80645156, 1.26738918, 0.91451788, 1.59959269, + 0.0356785, 1.93719864, 0.42164543, 0.87313241, + 0.52508104, 0.44771862, 1.38226497, 1.83891225, + 0.00711749, 0.26621303, 2.25254321, 0.27307722, + 0.26436633, 1.80608702, 2.29477572, 2.0931437, + 2.2915051, 0.82041657, 2.09074521, 1.87793779, + 2.15142703, 1.549685, 2.44940472, 0.45297864, + 0.35515305, 0.23224437, 1.77138305, 0.98827285, + 0.98435384, 0.80031335, 0.49445853, 0.36061874, + 2.15444446, 1.92558503, 0.75404048, 0.31921348, + 0.32092738, 0.48054051, 0.98650485, 1.1810472, + 0.28533801, 3.02953291, 0.16818592, 2.20164418, + 0.3911584, 0.6942575, 0.55016953, 0.06157291, + 0.19509397, 2.3744297, 0.73775989, 1.12842739, + 0.87197775, 0.30168825, 0.71310955, 0.27689508, + 1.13476491, 1.60331428, 1.56165123, 0.31513214, + 0.02698154, 0.49029687, 0.17265303, 0.36386153, + 0.56225872, 1.59077382, 1.84919345, 1.4230696, + 1.28607559, 0.57890779, 1.14760947, 0.22594096, + 0.43510813, 2.90668917, 1.49716794, 1.9549973, + 2.10786223, 0.71948445, 0.19396119, 0.86563414, + 0.63498968, 2.3593328, 0.18950517, 0.45737442, + 1.82937241, 1.72589195, 0.29414186, 0.74434268, + 1.22564518, 2.01444268, 2.32068515, 0.98414028, + 0.1174908, 0.22450124, 1.24669802, 0.70953292, + 0.21857196, 0.11119327, 0.60500813, 2.04446197, + 1.146896, 0.54849964, 0.23402978, 0.32219616, + 2.7076292, 1.57800817, 2.08260155, 1.81090641, + 0.45189673, 1.01260054, 0.65379494, 0.94736898, + 0.37556711, 0.44287458, 0.34578958, 1.48449266, + 1.95924711, 0.09717447] + +# See https://www.stata-press.com/data/r14/mumpspc +# Note that this has already been seasonally differenced at period 12 +mumpspc = [0.29791319, 0.41467956, 1.13061404, 1.23267496, + 1.55659747, 1.41078568, 0.45335022, 0.1419628, + 0.03802268, 0.04621375, 0.01261204, 0.04653099, + 0.10195512, 0.18079406, -0.1898452, -0.24501109, + -0.71440864, -0.82188988, -0.32300544, -0.07680188, + -0.0183593, -0.02145147, -0.14442876, -0.13897884, + -0.41970083, -0.53978181, -0.81733, -0.77516699, + -0.6827361, -0.27539611, 0.01427381, -0.02352227, + 0.00223821, -0.00509738, 0.03753691, 0.05826023, + 0.34700248, 0.53648567, 0.56336415, 0.73740566, + 0.68290168, 0.80702746, 0.47288245, 0.22873914, + 0.1323263, 0.18721257, 0.38872179, 0.5571546, + 0.62545192, 0.51162982, 1.28496778, 0.91240239, + 0.44763446, -0.34558165, -0.32126725, -0.13707247, + -0.11812115, -0.14246191, -0.33914241, -0.59595251, + -0.76603931, -0.95292002, -1.69234133, -1.44532502, + -0.8163048, -0.27210402, -0.05841839, 0.02669862, + 0.06060357, 0.04068814, 0.17806116, 0.25716701, + 0.58398741, 0.95062274, 2.00101161, 2.05761814, + 1.74057662, 0.76864243, 0.3566184, 0.01938879, + 0.01129906, -0.00691494, -0.11471844, -0.12220788, + -0.46378085, -0.76668882, -1.8203615, -1.80084801, + -1.58501005, -0.5208298, -0.27426577, -0.01387694, + -0.04243414, -0.07133579, -0.10209171, -0.04366681, + -0.06109473, -0.03943163, 0.3148942, 0.57496029, + 0.60446811, 0.73262405, 0.37140131, 0.18555129, + 0.08227628, 0.11913572, 0.22764499, 0.35582894, + 0.60779673, 0.85310715, 1.23990095, 0.89678788, + 0.23346186, -0.24769557, -0.28325707, -0.13954946, + -0.09492368, -0.07607545, -0.23001991, -0.42238122, + -0.68010765, -0.90599316, -1.69077659, -1.67265296, + -1.00972712, -0.67655402, 0.01419702, -0.00304723, + 0.06103691, 0.09834027, 0.18685167, 0.29223168, + 0.52865916, 0.54262394, 0.64842945, 0.95841271, + 1.24009287, 1.16617942, 0.80071652, 0.3447271, + 0.1351914, 0.04118001, 0.1700764, 0.39442945, + 0.35222113, 0.21554053, 0.4189862, 0.01172769, + -0.86072814, -1.04859877, -0.81989408, -0.35956979, + -0.13597609, -0.10660569, -0.25517979, -0.39934713, + -0.48581338, -0.33558851, -0.32364452, 0.02615488, + 0.53735149, 0.43695128, 0.12556195, 0.04231615, + 0.00691247, -0.03409019, -0.05299731, -0.1705423, + -0.23371273, -0.13540632, -0.13686514, -0.28611076, + -0.2569176, -0.15721166, -0.12167645, -0.0396246, + -0.03912748, -0.03107409, 0.02763657, -0.03745994, + -0.0960384, -0.16005671, -0.23481375, -0.2919997, + -0.28406811, -0.23517478, -0.10721764, -0.05092888, + -0.04520934, 0.01234692, -0.03137775, -0.01226076, + 0.00540099, 0.0410589, -0.06418979, -0.23792684, + -0.19889355, 0.15362859, 0.19808075, 0.09901999, + 0.08383148, 0.1328882, 0.1155429, 0.06566355, + 0.13103351, -0.00214756, 0.11389524, 0.60455656, + 0.43063915, -0.11312306, 0.00848174, -0.04416773, + -0.03458966, -0.11635408, -0.09985384, -0.10910749, + -0.03021795, 0.00818002, -0.20921308, -0.42517149, + -0.26740992, 0.21723568, 0.19341183, 0.03723881, + 0.0800474, 0.1313054, 0.17315492, 0.60613275, + 0.88496959, 1.29391515, 1.67872524, 1.1444242, + 0.56303668, 0.21097398, -0.29172775, -0.07173294, + -0.10594339, -0.13427913, -0.23306128, -0.63841069, + -1.01829767, -1.37716746, -1.74518943, -1.48689389, + -1.00245714, -0.67613804, -0.09916437, 0.01034598, + 0.00059676, -0.02620511, 0.07644644, 0.21421635, + 0.36779583, 0.44090557, 0.65572244, 0.69319898, + 1.03741217, 1.03150916, 0.48106751, 0.19878693, + 0.08993446, 0.10016203, 0.08885416, 0.01304582, + 0.01628131, -0.16743767, -0.3889482, -0.25320077, + -0.41278255, -0.64387393, -0.24642634, -0.09595281, + 0.00029226, -0.03017606, -0.09989822, -0.10608336, + -0.12089968, -0.02303368, -0.07865107, -0.07976627, + -0.27282, -0.00616729, 0.12162459, 0.01441428, + 0.01936977, 0.04224043, 0.10971794, 0.31981739, + 0.37371701, 0.21740788, 0.66436541, 0.8377074, + 1.11139965, 0.89899027, 0.63889956, 0.26021931, + 0.10602421, 0.05764158, 0.03996068, 0.13342732, + -0.01258349, 0.20526713, -0.05639255, -0.51611507, + -1.10225511, -1.04906142, -0.82814342, -0.32945809, + -0.16659749, -0.13606755, -0.156371, -0.44539213, + -0.54849428, -0.57765388, -0.46875834, -0.20867264, + 0.11628377, 0.30508852, 0.18076879, 0.15996796, + 0.09090945, 0.13049443, 0.37585843, 0.47701722, + 0.8886351, 1.12534606, 1.0532701, 1.1787746, + 1.19929063, 0.67156017, 0.26693404, 0.08880523, + -0.0367229, 0.01958427, -0.2178995, -0.35959432, + -0.61479795, -1.12488365, -1.24093127, -1.37260103, + -1.34592342, -1.1085875, -0.48515847, -0.22466549, + -0.01377375, -0.15326615, -0.20697775, -0.21839607, + -0.37820193, -0.18108195, -0.23839343, 0.00777894, + -0.01658171, 0.14208788, 0.21352491, 0.08116969, + 0.0220954, 0.05151662, 0.15160444, 0.46347663, + 0.59711337, 0.69609326, 0.85816896, 0.44160861, + 0.29913878, 0.35687125, 0.02410281, -0.00206721, + 0.04784113, 0.01441422, 0.01972398, -0.19168586, + -0.31085777, -0.38792318, -0.59203249, -0.4652282, + -0.36413753, -0.41189915, -0.27989927, -0.06170946, + -0.09512204, -0.05406281, -0.04524729, -0.19567066, + -0.19209856, -0.30510414, -0.21937585, -0.34253049, + -0.08848315, 0.0628857, 0.12370691, 0.08033729, + 0.02536885, 0.06512444, -0.00683796, 0.01617461, + 0.09414208, 0.17485267, 0.01436073, 0.15278709, + 0.21909434, -0.13190985, 0.1297549, 0.00458425, + 0.00097814, 0.0419029, 0.09299085, 0.30784416, + 0.3420583, 0.31633973, 0.6052171, 0.59994769, + 0.19161701, 0.14463156, -0.00356764, 0.03013593, + -0.00030272, -0.04639405, -0.11171955, -0.26541206, + -0.46245131, -0.59785151, -0.93805957, -1.02102923, + -0.85468853, -0.57457525, -0.43376198, -0.22778665, + -0.08325937, -0.07688884, -0.10757375, -0.04266521, + -0.07971251, 0.19849321, 0.46367952, 0.45219129, + 0.5286305, 0.82308269, 0.62806904, 0.44585282, + 0.2649036, 0.18073915, 0.24439827, 0.33583486, + 0.36763605, 0.31510991, 0.44708037, 0.27008474, + 0.06621343, -0.20664448, -0.34370041, -0.30381745, + -0.18254732, -0.16462031, -0.20288868, -0.47805107, + -0.42589119, -0.52396262, -0.80304122, -0.54068702, + -0.32430774, -0.41455108, -0.18256193, -0.11230741, + -0.05113308, -0.00785848, -0.00410898, 0.02002721, + 0.04911622, 0.11129829, 0.03739616, 0.23160917, + 0.09051466, 0.0703001, 0.15306205, 0.092351, + 0.04038295, -0.00022292, -0.0345473, -0.104352, + -0.14002147, -0.25555477, -0.15546834, -0.12915748, + -0.00736588, 0.18039131, 0.03981721, 0.05406788, + -0.00028329, 0.12522104, 0.09731361, 0.29498664, + 0.20997131, 0.16853192, 0.07126871, 0.02766478, + -0.13036358, -0.26429421, -0.18460721, -0.17133695, + -0.06757163, -0.16766661, -0.17020702, -0.26582304, + -0.23111637, -0.16535208, -0.13117793, -0.28425765, + -0.30206084, -0.16778651, -0.0795947, -0.0456669, + -0.01921733, -0.02716412, 0.01525059, 0.01458484, + 0.00587094, 0.01239279, -0.03418982, -0.09835899, + 0.05628902, 0.00924054] + + +class MarkovRegression(object): + @classmethod + def setup_class(cls, true, endog, atol=1e-5, rtol=1e-7, **kwargs): + cls.model = markov_regression.MarkovRegression(endog, **kwargs) + cls.true = true + cls.result = cls.model.smooth(cls.true['params']) + cls.atol = atol + cls.rtol = rtol + + @pytest.mark.smoke + def test_summary(self): + self.result.summary() + + def test_llf(self): + assert_allclose(self.result.llf, self.true['llf'], atol=self.atol, + rtol=self.rtol) + + def test_fit(self, **kwargs): + # Test fitting against Stata + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + res = self.model.fit(disp=False, **kwargs) + assert_allclose(res.llf, self.true['llf_fit'], atol=self.atol, + rtol=self.rtol) + + @pytest.mark.smoke + def test_fit_em(self, **kwargs): + # Test EM fitting (smoke test) + res_em = self.model._fit_em(**kwargs) + assert_allclose(res_em.llf, self.true['llf_fit_em'], atol=self.atol, + rtol=self.rtol) + + +fedfunds_const_filtered_joint_probabilities = np.array([ + [[9.81875427e-01, 9.99977639e-01, 9.99982269e-01, + 9.99977917e-01, 9.99961064e-01, 9.99932206e-01, + 9.99919386e-01, 9.99894144e-01, 9.99875287e-01, + 9.99853807e-01, 9.99852600e-01, 9.99839056e-01, + 9.99783848e-01, 9.99774884e-01, 9.99954588e-01, + 9.99988082e-01, 9.99982757e-01, 9.99948590e-01, + 9.99910525e-01, 9.99825195e-01, 9.99660841e-01, + 9.99411534e-01, 9.99435921e-01, 9.99578212e-01, + 9.99835797e-01, 9.99931424e-01, 9.99955815e-01, + 9.99969158e-01, 9.99971638e-01, 9.99929247e-01, + 9.99921198e-01, 9.99904441e-01, 9.99869417e-01, + 9.99855264e-01, 9.99845124e-01, 9.99846496e-01, + 9.99755048e-01, 9.99708382e-01, 9.99701905e-01, + 9.99690188e-01, 9.99700859e-01, 9.99653041e-01, + 9.99426220e-01, 9.99320494e-01, 9.99321052e-01, + 9.99230758e-01, 9.98727025e-01, 9.97930031e-01, + 9.95880407e-01, 9.94433855e-01, 9.97574246e-01, + 9.99263821e-01, 9.99459141e-01, 9.99242937e-01, + 9.98291614e-01, 9.91580774e-01, 9.89101309e-01, + 9.88455096e-01, 9.73457493e-01, 7.07858812e-01, + 9.84830417e-02, 5.48777905e-03, 6.48064326e-04, + 9.48013715e-04, 1.00281851e-02, 1.69325148e-01, + 8.57820523e-01, 9.93211456e-01, 9.94962561e-01, + 9.97835285e-01, 9.99559280e-01, 9.99122588e-01, + 9.98381004e-01, 9.97159054e-01, 9.81694661e-01, + 8.52237392e-01, 2.98185003e-02, 3.80317793e-04, + 3.03223798e-05, 3.72338821e-06, 9.81252727e-08, + 1.16279423e-06, 2.19178686e-03, 2.54688430e-01, + 5.45485941e-01, 8.49963514e-01, 9.79591871e-01, + 9.94535520e-01, 9.95920695e-01, 9.97652340e-01, + 9.98379085e-01, 9.97097840e-01, 9.92715379e-01, + 9.78668900e-01, 9.54978984e-01, 8.70032440e-01, + 4.73445558e-01, 1.87649267e-02, 2.26217560e-04, + 7.75338336e-06, 1.77410820e-06, 2.00686803e-08, + 9.02595322e-11, 2.90324859e-10, 2.76383741e-07, + 4.31669137e-09, 6.21472832e-13, 4.82334762e-14, + 1.27598134e-14, 3.17409414e-12, 2.61276609e-10, + 7.78226008e-11, 5.39702646e-09, 5.20281165e-06, + 1.16430050e-04, 2.28275630e-04, 8.20520602e-05, + 3.54392208e-05, 2.52690630e-05, 5.71223049e-06, + 6.04760361e-07, 3.25802367e-06, 1.49189117e-04, + 9.03616681e-04, 2.05169327e-03, 1.79174202e-03, + 2.00293091e-03, 8.80162479e-03, 6.98800266e-02, + 2.10894169e-01, 3.78257683e-01, 4.16997707e-01, + 3.74555143e-01, 3.09162817e-01, 3.19673213e-01, + 2.13371614e-01, 5.00408396e-02, 5.65131400e-03, + 2.67174854e-04, 2.77281533e-05, 3.81188091e-05, + 1.64157087e-04, 4.99719207e-04, 8.42437704e-04, + 9.94072768e-04, 1.92236077e-03, 1.77274131e-02, + 1.80694204e-01, 5.59064015e-01, 9.22767369e-01, + 9.95149639e-01, 9.99418123e-01, 9.99755674e-01, + 9.99825956e-01, 9.99829396e-01, 9.99837748e-01, + 9.99825597e-01, 9.99839509e-01, 9.99789371e-01, + 9.99458023e-01, 9.98857894e-01, 9.97136330e-01, + 9.92814933e-01, 9.88571000e-01, 9.89824082e-01, + 9.91277010e-01, 9.94688346e-01, 9.96090383e-01, + 9.96010189e-01, 9.96126138e-01, 9.96152552e-01, + 9.94805484e-01, 9.94365920e-01, 9.94404335e-01, + 9.94350015e-01, 9.94473588e-01, 9.94298374e-01, + 9.97447776e-01, 9.98217589e-01, 9.98253594e-01, + 9.97319145e-01, 9.96244465e-01, 9.93650638e-01, + 9.84885276e-01, 9.71807970e-01, 9.63220269e-01, + 9.84748123e-01, 9.97795750e-01, 9.99604178e-01, + 9.99934302e-01, 9.99968719e-01, 9.99969041e-01, + 9.99969388e-01, 9.99978903e-01, 9.99983737e-01, + 9.99983963e-01, 9.99987949e-01, 9.99988448e-01, + 9.99988464e-01, 9.99988318e-01, 9.99980100e-01, + 9.99960662e-01, 9.99921917e-01, 9.99854499e-01, + 9.99711016e-01, 9.99422933e-01, 9.98897716e-01, + 9.97954476e-01, 9.96644185e-01, 9.96382036e-01, + 9.96295075e-01, 9.96325086e-01, 9.97066095e-01, + 9.98599288e-01, 9.99729020e-01, 9.99942853e-01, + 9.99959712e-01, 9.99992291e-01, 9.99995977e-01, + 9.99996082e-01, 9.99996179e-01, 9.99996370e-01, + 9.99996334e-01, 9.99996045e-01, 9.99996030e-01, + 9.99996030e-01], + [1.79021167e-02, 1.14091306e-05, 5.61557959e-07, + 8.80398735e-07, 1.08717798e-06, 1.94073468e-06, + 3.37670187e-06, 3.96039606e-06, 5.22475895e-06, + 6.12683114e-06, 7.18211108e-06, 7.18979687e-06, + 7.88353588e-06, 1.06791533e-05, 1.09974873e-05, + 1.76468607e-06, 5.20603180e-07, 8.57457507e-07, + 2.59206830e-06, 4.45469808e-06, 8.73353814e-06, + 1.69387908e-05, 2.93063475e-05, 2.74245464e-05, + 2.02263872e-05, 7.38324620e-06, 3.13785014e-06, + 2.10478420e-06, 1.47354829e-06, 1.37871330e-06, + 3.55723955e-06, 3.85823009e-06, 4.70191999e-06, + 6.45467678e-06, 7.09050564e-06, 7.57792773e-06, + 7.48186721e-06, 1.21760845e-05, 1.43286436e-05, + 1.45502695e-05, 1.51400501e-05, 1.45617528e-05, + 1.70401707e-05, 2.85443698e-05, 3.33783376e-05, + 3.30986931e-05, 3.77268239e-05, 6.32867451e-05, + 1.02678523e-04, 2.05654391e-04, 2.75680178e-04, + 1.10405281e-04, 3.20904634e-05, 2.60815610e-05, + 3.74458003e-05, 8.51014220e-05, 4.26242634e-04, + 5.36412357e-04, 5.55614723e-04, 9.68406481e-04, + 2.07440399e-03, 2.51696579e-03, 4.11814576e-03, + 1.01505143e-02, 4.58175094e-02, 1.46789923e-01, + 9.51602906e-02, 2.51277827e-03, 2.19080166e-04, + 2.47729179e-04, 9.84424301e-05, 1.75415066e-05, + 4.40579693e-05, 8.06554966e-05, 1.39332709e-04, + 8.08543683e-04, 2.63400428e-04, 6.28778860e-04, + 1.53926554e-03, 1.21448448e-04, 4.01921637e-05, + 1.47981180e-03, 7.57754547e-02, 1.54441814e-01, + 4.03957090e-02, 3.08060743e-02, 6.79972580e-03, + 7.03557513e-04, 2.44292397e-04, 1.96941023e-04, + 1.10340666e-04, 7.73495785e-05, 1.44199620e-04, + 3.60905335e-04, 1.04887049e-03, 2.05193714e-03, + 3.56087416e-03, 1.05497090e-03, 5.73656986e-04, + 4.96641901e-04, 1.80265024e-04, 5.65192629e-06, + 8.15973913e-07, 1.82423614e-05, 7.76851662e-04, + 2.84604839e-07, 1.10296978e-07, 2.24235284e-08, + 2.91783631e-08, 5.57802135e-06, 2.40181297e-06, + 1.66126826e-06, 1.66577067e-04, 1.60124567e-03, + 3.71040697e-03, 3.04702430e-03, 1.28036894e-03, + 1.33199390e-03, 9.46259530e-04, 3.01196207e-04, + 1.01009606e-04, 1.64390413e-03, 4.63667164e-03, + 9.63523286e-03, 9.87732797e-03, 7.60992378e-03, + 1.08213202e-02, 3.47413597e-02, 7.87085339e-02, + 6.19641042e-02, 5.16881745e-02, 2.83502897e-02, + 2.39198441e-02, 2.39310293e-02, 3.28190388e-02, + 2.00980320e-02, 8.42451713e-03, 4.66668659e-03, + 1.31406606e-03, 8.97753552e-04, 2.11004086e-03, + 3.91003494e-03, 6.26373002e-03, 6.34371628e-03, + 7.04224256e-03, 1.21673274e-02, 6.36067034e-02, + 1.04652728e-01, 7.17968006e-02, 2.76866443e-02, + 2.66003442e-03, 1.12494156e-04, 2.40738814e-05, + 1.12943610e-05, 8.34520559e-06, 8.32013406e-06, + 7.89300655e-06, 8.53818448e-06, 7.79122759e-06, + 1.03973423e-05, 2.72411101e-05, 5.70666949e-05, + 1.43281927e-04, 3.59485298e-04, 5.68122941e-04, + 4.93097756e-04, 4.23244829e-04, 2.50908844e-04, + 1.87544775e-04, 1.94954279e-04, 1.88610947e-04, + 1.87324551e-04, 2.56591337e-04, 2.75680269e-04, + 2.72701680e-04, 2.75688894e-04, 2.69118592e-04, + 2.79368706e-04, 1.16602211e-04, 8.54105771e-05, + 8.50836389e-05, 1.32948236e-04, 1.85246543e-04, + 3.13229937e-04, 7.48658490e-04, 1.39370122e-03, + 1.85235809e-03, 6.94881963e-04, 7.74820062e-05, + 1.63275933e-05, 2.53162706e-06, 1.47419297e-06, + 1.51187760e-06, 1.49217514e-06, 1.00525815e-06, + 7.82384697e-07, 7.82207824e-07, 5.77845546e-07, + 5.62709744e-07, 5.62700867e-07, 5.70153586e-07, + 9.91143211e-07, 1.96623986e-06, 3.90276412e-06, + 7.25964578e-06, 1.44416500e-05, 2.88341084e-05, + 5.49895700e-05, 1.01928727e-04, 1.66788149e-04, + 1.76920424e-04, 1.80878376e-04, 1.79263902e-04, + 1.41441142e-04, 6.46353467e-05, 1.05822848e-05, + 2.38770925e-06, 1.94345661e-06, 2.95614088e-07, + 1.91116221e-07, 1.91095610e-07, 1.86129447e-07, + 1.76579974e-07, 1.78918351e-07, 1.93625709e-07, + 1.93628651e-07]], + + [[1.12025955e-05, 1.08238349e-05, 1.71596282e-05, + 2.11831999e-05, 3.78067714e-05, 6.57213848e-05, + 7.69689076e-05, 1.01479702e-04, 1.18846167e-04, + 1.39184231e-04, 1.39184063e-04, 1.52618987e-04, + 2.06583251e-04, 2.12093282e-04, 3.40270257e-05, + 1.01343628e-05, 1.67136918e-05, 5.05076133e-05, + 8.66507075e-05, 1.69568562e-04, 3.27466124e-04, + 5.61681158e-04, 5.19031075e-04, 3.83481719e-04, + 1.41026283e-04, 6.07294396e-05, 4.09142321e-05, + 2.86746604e-05, 2.68478873e-05, 6.92750449e-05, + 7.49687747e-05, 9.13357640e-05, 1.25272004e-04, + 1.37363965e-04, 1.46709304e-04, 1.44790612e-04, + 2.35646550e-04, 2.75965631e-04, 2.79621160e-04, + 2.90883100e-04, 2.79620868e-04, 3.27463569e-04, + 5.47092221e-04, 6.32282164e-04, 6.24012551e-04, + 7.11758349e-04, 1.18880242e-03, 1.88316198e-03, + 3.62983774e-03, 4.41594500e-03, 1.67213822e-03, + 5.61598141e-04, 4.92415886e-04, 7.11767023e-04, + 1.60853614e-03, 7.65465286e-03, 7.24380556e-03, + 7.05094383e-03, 1.63405802e-02, 1.20569790e-01, + 3.94742135e-02, 2.08678283e-03, 1.51404348e-04, + 8.92900957e-05, 1.99758310e-04, 7.61880868e-04, + 4.06265456e-04, 1.18223714e-03, 3.92458604e-03, + 1.52531964e-03, 3.10635338e-04, 8.44534873e-04, + 1.50619244e-03, 2.54719705e-03, 1.58406633e-02, + 7.41723708e-02, 9.56881006e-02, 5.83874154e-04, + 1.90161316e-05, 2.96375310e-05, 2.36039059e-06, + 7.58604311e-07, 2.57849849e-05, 9.40604577e-04, + 5.33706193e-03, 3.09799210e-03, 1.66375727e-03, + 2.74932130e-03, 3.05895259e-03, 1.78605741e-03, + 1.35561648e-03, 2.61499931e-03, 6.20778364e-03, + 1.51802588e-02, 2.05865429e-02, 3.71923130e-02, + 5.95732628e-02, 1.65718056e-02, 3.80823607e-04, + 1.50863835e-05, 9.51367568e-06, 3.43305910e-06, + 1.06949636e-07, 1.53871486e-08, 3.43715817e-07, + 1.46644282e-05, 5.44780299e-09, 2.07973264e-09, + 4.22811016e-10, 5.50174068e-10, 1.05177578e-07, + 4.52926927e-08, 3.13205860e-08, 3.13648669e-06, + 3.02223414e-05, 7.21922046e-05, 6.18725853e-05, + 2.56885381e-05, 2.57933905e-05, 1.83306498e-05, + 5.78811168e-06, 1.91303926e-06, 3.09596995e-05, + 8.97107118e-05, 1.98397776e-04, 2.25453416e-04, + 1.76630376e-04, 2.34227583e-04, 7.30232210e-04, + 2.38495171e-03, 4.00510154e-03, 7.77726570e-03, + 8.97115089e-03, 8.22739679e-03, 6.04111865e-03, + 7.78825566e-03, 5.37640212e-03, 1.15742054e-03, + 1.96231469e-04, 2.98340104e-05, 1.74288946e-05, + 4.04251152e-05, 7.66081747e-05, 1.27458564e-04, + 1.35365069e-04, 1.50582215e-04, 2.47483336e-04, + 1.19104299e-03, 2.75836722e-03, 1.54674662e-03, + 5.81818376e-04, 4.20436146e-04, 2.14900000e-04, + 1.60869708e-04, 1.60870261e-04, 1.52618788e-04, + 1.65161879e-04, 1.50622869e-04, 2.01215675e-04, + 5.25921364e-04, 1.08428049e-03, 2.64975788e-03, + 6.12720308e-03, 8.04408524e-03, 6.02884531e-03, + 5.43410929e-03, 3.39451560e-03, 2.90252080e-03, + 3.18247731e-03, 3.05958361e-03, 3.05966473e-03, + 4.19096979e-03, 4.24463587e-03, 4.13448594e-03, + 4.18905097e-03, 4.08069293e-03, 4.24434753e-03, + 1.76233516e-03, 1.48624883e-03, 1.52595908e-03, + 2.38530006e-03, 3.18322588e-03, 5.16768050e-03, + 1.11378320e-02, 1.52736098e-02, 1.41741690e-02, + 4.54911025e-03, 8.77392678e-04, 2.94712782e-04, + 4.85508787e-05, 2.86746478e-05, 2.94397372e-05, + 2.90546890e-05, 1.95742396e-05, 1.52422076e-05, + 1.52422111e-05, 1.12600205e-05, 1.09674004e-05, + 1.09674006e-05, 1.11127487e-05, 1.93182406e-05, + 3.83078048e-05, 7.59623818e-05, 1.41028921e-04, + 2.79623709e-04, 5.54340948e-04, 1.04233041e-03, + 1.88320811e-03, 2.94262269e-03, 2.94184869e-03, + 2.98057651e-03, 2.94168054e-03, 2.32272136e-03, + 1.09836589e-03, 1.93411390e-04, 4.60605812e-05, + 3.78067203e-05, 5.75348228e-06, 3.72600447e-06, + 3.72600486e-06, 3.62917375e-06, 3.44299546e-06, + 3.48862495e-06, 3.77538503e-06, 3.77538498e-06, + 3.77538498e-06], + [2.11253415e-04, 1.27726353e-07, 9.96660517e-09, + 1.92893528e-08, 4.25132434e-08, 1.31928738e-07, + 2.68831493e-07, 4.15719953e-07, 6.42307057e-07, + 8.82117691e-07, 1.03405286e-06, 1.13509493e-06, + 1.68479526e-06, 2.34314197e-06, 3.87056416e-07, + 1.84972077e-08, 8.99961200e-09, 4.47949311e-08, + 2.32324230e-07, 7.81405794e-07, 2.95897306e-06, + 9.84611707e-06, 1.57411766e-05, 1.08818924e-05, + 2.95071175e-06, 4.63781583e-07, 1.32789240e-07, + 6.24246828e-08, 4.09188950e-08, 9.87912777e-08, + 2.75844825e-07, 3.64508436e-07, 6.09288617e-07, + 9.17164574e-07, 1.07606678e-06, 1.13499677e-06, + 1.82395688e-06, 3.47637333e-06, 4.14516370e-06, + 4.37886128e-06, 4.37989719e-06, 4.93360580e-06, + 9.64763432e-06, 1.86794329e-05, 2.15570874e-05, + 2.43845482e-05, 4.64462028e-05, 1.23520043e-04, + 3.87076429e-04, 9.44545390e-04, 4.77935817e-04, + 6.41759692e-05, 1.63523468e-05, 1.92148699e-05, + 6.24041695e-05, 6.79471603e-04, 3.22864270e-03, + 3.95754786e-03, 9.64631226e-03, 1.70602991e-01, + 8.59968341e-01, 9.89908472e-01, 9.95082386e-01, + 9.88812182e-01, 9.43954547e-01, 6.83123048e-01, + 4.66129206e-02, 3.09352861e-03, 8.93773079e-04, + 3.91666349e-04, 3.16418394e-05, 1.53356713e-05, + 6.87457292e-05, 2.13092992e-04, 2.32534345e-03, + 7.27816933e-02, 8.74229999e-01, 9.98407029e-01, + 9.98411396e-01, 9.99845191e-01, 9.99957349e-01, + 9.98518267e-01, 9.22006973e-01, 5.89929152e-01, + 4.08781288e-01, 1.16132419e-01, 1.19446461e-02, + 2.01160124e-03, 7.76059520e-04, 3.64661127e-04, + 1.54958020e-04, 2.09811287e-04, 9.32637836e-04, + 5.78993623e-03, 2.33856026e-02, 9.07233098e-02, + 4.63420305e-01, 9.63608297e-01, 9.98819302e-01, + 9.99480518e-01, 9.99808447e-01, 9.99990895e-01, + 9.99999077e-01, 9.99981742e-01, 9.99222528e-01, + 9.99985047e-01, 9.99999884e-01, 9.99999975e-01, + 9.99999970e-01, 9.99994421e-01, 9.99997493e-01, + 9.99998293e-01, 9.99833386e-01, 9.98390415e-01, + 9.96142941e-01, 9.96652508e-01, 9.98575706e-01, + 9.98606878e-01, 9.99002678e-01, 9.99674761e-01, + 9.99892598e-01, 9.98350925e-01, 9.95183180e-01, + 9.89371440e-01, 9.87872581e-01, 9.90372881e-01, + 9.86999118e-01, 9.56222788e-01, 8.50681207e-01, + 7.24756775e-01, 5.66049041e-01, 5.46874738e-01, + 5.92553862e-01, 6.58678757e-01, 6.41466629e-01, + 7.58742098e-01, 9.36158241e-01, 9.88524579e-01, + 9.98222528e-01, 9.99044684e-01, 9.97834411e-01, + 9.95885383e-01, 9.93159943e-01, 9.92686387e-01, + 9.91828320e-01, 9.85759730e-01, 9.18418400e-01, + 7.13462025e-01, 3.66380818e-01, 4.79992398e-02, + 1.60850862e-03, 4.89463014e-05, 5.35211883e-06, + 1.87952723e-06, 1.38874976e-06, 1.31354781e-06, + 1.34854399e-06, 1.33034183e-06, 1.62179619e-06, + 5.65868721e-06, 3.05843904e-05, 1.56845284e-04, + 9.14581641e-04, 3.02542940e-03, 3.57894927e-03, + 2.79578295e-03, 1.49389314e-03, 7.56187782e-04, + 6.19788616e-04, 6.19323917e-04, 5.99172642e-04, + 8.16221729e-04, 1.13285230e-03, 1.18549926e-03, + 1.18823205e-03, 1.17003007e-03, 1.18816020e-03, + 5.10520503e-04, 1.79560242e-04, 1.35036369e-04, + 2.10470876e-04, 4.39360698e-04, 9.96435388e-04, + 3.66366176e-03, 1.21697619e-02, 2.12118606e-02, + 8.85040895e-03, 6.31975856e-04, 2.36270150e-05, + 8.19945322e-07, 7.50841896e-08, 4.48888835e-08, + 4.54342381e-08, 3.02100160e-08, 1.58478237e-08, + 1.23342395e-08, 9.10969133e-09, 6.55477183e-09, + 6.38307937e-09, 6.46757155e-09, 1.13921361e-08, + 3.92715328e-08, 1.54492028e-07, 5.69351898e-07, + 2.10015832e-06, 8.28479101e-06, 3.11191703e-05, + 1.07326014e-04, 3.11263455e-04, 5.09327027e-04, + 5.47428437e-04, 5.52354866e-04, 4.31919788e-04, + 1.60904664e-04, 1.29332277e-05, 5.04162769e-07, + 9.33695004e-08, 1.15650115e-08, 1.13921931e-09, + 7.36511886e-10, 7.17294041e-10, 6.62811758e-10, + 6.37139329e-10, 6.98642410e-10, 7.56071871e-10, + 7.56083358e-10]]]) + + +class TestFedFundsConst(MarkovRegression): + # Results from Stata, see http://www.stata.com/manuals14/tsmswitch.pdf + @classmethod + def setup_class(cls): + path = os.path.join(current_path, 'results', + 'results_predict_fedfunds.csv') + results = pd.read_csv(path) + true = { + 'params': np.r_[.9820939, .0503587, 3.70877, 9.556793, + 2.107562**2], + 'llf': -508.63592, + 'llf_fit': -508.63592, + 'llf_fit_em': -508.65852, + 'bse_oim': np.r_[.0104002, .0268434, .1767083, .2999889, np.nan], + 'smoothed0': results['const_sm1'], + 'smoothed1': results['const_sm2'], + 'predict0': results['const_yhat1'], + 'predict1': results['const_yhat2'], + 'predict_predicted': results['const_pyhat'], + 'predict_filtered': results['const_fyhat'], + 'predict_smoothed': results['const_syhat'], + } + super(TestFedFundsConst, cls).setup_class(true, fedfunds, k_regimes=2) + + def test_filter_output(self, **kwargs): + res = self.result + assert_allclose(res.filtered_joint_probabilities, + fedfunds_const_filtered_joint_probabilities) + + def test_smoothed_marginal_probabilities(self): + assert_allclose(self.result.smoothed_marginal_probabilities[:, 0], + self.true['smoothed0'], atol=1e-6) + assert_allclose(self.result.smoothed_marginal_probabilities[:, 1], + self.true['smoothed1'], atol=1e-6) + + def test_predict(self): + # Predictions conditional on regime (the same no matter which + # probabilities are selected) + for name in ['predicted', 'filtered', 'smoothed', None]: + actual = self.model.predict( + self.true['params'], probabilities=name, conditional=True) + assert_allclose(actual[0], + self.true['predict0'], atol=1e-6) + assert_allclose(actual[1], + self.true['predict1'], atol=1e-6) + + # Predicted + actual = self.model.predict( + self.true['params'], probabilities='predicted') + assert_allclose(actual, self.true['predict_predicted'], atol=1e-5) + + # Filtered + actual = self.model.predict( + self.true['params'], probabilities='filtered') + assert_allclose(self.model.predict(self.true['params'], + probabilities='filtered'), + self.true['predict_filtered'], atol=1e-5) + + # Smoothed + actual = self.model.predict( + self.true['params'], probabilities='smoothed') + assert_allclose(actual, self.true['predict_smoothed'], atol=1e-6) + actual = self.model.predict( + self.true['params'], probabilities=None) + assert_allclose(actual, self.true['predict_smoothed'], atol=1e-6) + + def test_bse(self): + # Can't compare last element of bse because we estimate sigma^2 rather + # than sigma^2 + bse = self.result.cov_params_approx.diagonal()**0.5 + assert_allclose(bse[:-1], self.true['bse_oim'][:-1], atol=1e-7) + + +fedfunds_const_short_filtered_joint_probabilities = np.array([ + [[9.81370301e-01, 9.99956215e-01, 9.99995966e-01, + 9.99996082e-01, 9.99996179e-01, 9.99996370e-01, + 9.99996334e-01, 9.99996045e-01, 9.99996030e-01, + 9.99996030e-01], + [1.78929069e-02, 3.78065881e-05, 3.06546640e-07, + 1.91118379e-07, 1.91095611e-07, 1.86129447e-07, + 1.76579974e-07, 1.78918351e-07, 1.93625709e-07, + 1.93628651e-07]], + + [[3.71038873e-05, 5.75327472e-06, 3.72600443e-06, + 3.72600486e-06, 3.62917375e-06, 3.44299546e-06, + 3.48862495e-06, 3.77538503e-06, 3.77538498e-06, + 3.77538498e-06], + [6.99688113e-04, 2.24977302e-07, 1.18135050e-09, + 7.36520203e-10, 7.17294043e-10, 6.62811758e-10, + 6.37139329e-10, 6.98642410e-10, 7.56071871e-10, + 7.56083358e-10]]]) + + +fedfunds_const_short_predicted_joint_probabilities = np.array([ + [[[7.11514435e-01, 9.63797786e-01, 9.82050899e-01, + 9.82089938e-01, 9.82090052e-01, 9.82090147e-01, + 9.82090335e-01, 9.82090300e-01, 9.82090016e-01, + 9.82090001e-01], + [1.29727398e-02, 1.75725147e-02, 3.71296195e-05, + 3.01057585e-07, 1.87696195e-07, 1.87673833e-07, + 1.82796594e-07, 1.73418115e-07, 1.75714621e-07, + 1.90158628e-07]], + + [[6.65201476e-04, 1.86850353e-06, 2.89727435e-07, + 1.87636739e-07, 1.87636761e-07, 1.82760472e-07, + 1.73384775e-07, 1.75682617e-07, 1.90123482e-07, + 1.90123479e-07], + [1.25440648e-02, 3.52353838e-05, 1.13295645e-08, + 5.94912755e-11, 3.70902000e-11, 3.61219955e-11, + 3.33783385e-11, 3.20855083e-11, 3.51827235e-11, + 3.80747965e-11]]], + + + [[[1.29727398e-02, 1.75725147e-02, 1.79053160e-02, + 1.79060278e-02, 1.79060298e-02, 1.79060316e-02, + 1.79060350e-02, 1.79060344e-02, 1.79060292e-02, + 1.79060289e-02], + [2.36526442e-04, 3.20392181e-04, 6.76968547e-07, + 5.48905479e-09, 3.42218481e-09, 3.42177711e-09, + 3.33285249e-09, 3.16185867e-09, 3.20372988e-09, + 3.46708131e-09]], + + [[1.25440648e-02, 3.52353838e-05, 5.46354728e-06, + 3.53836769e-06, 3.53836810e-06, 3.44641328e-06, + 3.26961068e-06, 3.31294233e-06, 3.58526155e-06, + 3.58526150e-06], + [2.36550228e-01, 6.64452729e-04, 2.13647738e-07, + 1.12185923e-09, 6.99430003e-10, 6.81172047e-10, + 6.29433420e-10, 6.05053821e-10, 6.63459686e-10, + 7.17997074e-10]]]]) + +fedfunds_const_short_smoothed_joint_probabilities = np.array([ + [[9.82056759e-01, 9.99961887e-01, 9.99999502e-01, + 9.99999618e-01, 9.99999623e-01, 9.99999637e-01, + 9.99999644e-01, 9.99999627e-01, 9.99999612e-01, + 9.99996030e-01], + [1.79054228e-02, 3.78068025e-05, 3.06547724e-07, + 1.91119055e-07, 1.91096269e-07, 1.86130055e-07, + 1.76580558e-07, 1.78918992e-07, 1.93626403e-07, + 1.93628651e-07]], + + [[1.90448249e-06, 2.95069837e-07, 1.91096241e-07, + 1.91095282e-07, 1.86127261e-07, 1.76579242e-07, + 1.78922146e-07, 1.93629492e-07, 1.94345814e-07, + 3.77538498e-06], + [3.59138585e-05, 1.15384749e-08, 6.05881299e-11, + 3.77738466e-11, 3.67874300e-11, 3.39933060e-11, + 3.26771544e-11, 3.58315175e-11, 3.89203762e-11, + 7.56083358e-10]]]) + + +class TestFedFundsConstShort(MarkovRegression): + # This is just a set of regression tests + @classmethod + def setup_class(cls): + true = { + 'params': np.r_[.9820939, .0503587, 3.70877, 9.556793, + 2.107562**2], + 'llf': -29.909297, + 'llf_fit': -7.8553370, + 'llf_fit_em': -7.8554974 + } + super(TestFedFundsConstShort, cls).setup_class(true, fedfunds[-10:], + k_regimes=2) + + def test_filter_output(self, **kwargs): + res = self.result + + # Filtered + assert_allclose(res.filtered_joint_probabilities, + fedfunds_const_short_filtered_joint_probabilities) + + # Predicted + desired = fedfunds_const_short_predicted_joint_probabilities + if desired.ndim > res.predicted_joint_probabilities.ndim: + desired = desired.sum(axis=-2) + assert_allclose(res.predicted_joint_probabilities, desired) + + def test_smoother_output(self, **kwargs): + res = self.result + + # Filtered + assert_allclose(res.filtered_joint_probabilities, + fedfunds_const_short_filtered_joint_probabilities) + + # Predicted + desired = fedfunds_const_short_predicted_joint_probabilities + if desired.ndim > res.predicted_joint_probabilities.ndim: + desired = desired.sum(axis=-2) + assert_allclose(res.predicted_joint_probabilities, desired) + + # Smoothed, last entry + assert_allclose(res.smoothed_joint_probabilities, + fedfunds_const_short_smoothed_joint_probabilities) + + def test_hamilton_filter_order_zero(self): + k_regimes = 3 + nobs = 4 + initial_probabilities = np.ones(k_regimes) / k_regimes + + # We don't actually transition between the 3 regimes. + regime_transition = np.eye(k_regimes)[:, :, np.newaxis] + + # Regime i correponds to a sequence of iid draws from discrete + # random variables that are equally likely to be -1 and i for i=0, + # 1, 2. We observe the sequence -1, -1, 1, -1. The first two + # observations tell us nothing, but the third lets us know that we + # are in regime 1 the whole time. + conditional_likelihoods = np.ones((k_regimes, nobs)) / 2 + conditional_likelihoods[:, 2] = [0, 1, 0] + + expected_marginals = np.empty((k_regimes, nobs)) + expected_marginals[:, :2] = [[1/3], [1/3], [1/3]] + expected_marginals[:, 2:] = [[0], [1], [0]] + + py_results = markov_switching.py_hamilton_filter( + initial_probabilities, regime_transition, conditional_likelihoods, + model_order=0) + assert_allclose(py_results[0], expected_marginals) + + cy_results = markov_switching.cy_hamilton_filter( + initial_probabilities, regime_transition, conditional_likelihoods, + model_order=0) + assert_allclose(cy_results[0], expected_marginals) + + def test_hamilton_filter_order_zero_with_tvtp(self): + k_regimes = 3 + nobs = 8 + initial_probabilities = np.ones(k_regimes) / k_regimes + + # We don't actually transition between the 3 regimes except from + # t=3 to t=4 where we reset to regimes 1 and 2 being equally + # likely. + regime_transition = np.zeros((k_regimes, k_regimes, nobs)) + regime_transition[...] = np.eye(k_regimes)[:, :, np.newaxis] + regime_transition[..., 4] = [[0, 0, 0], + [1/2, 1/2, 1/2], + [1/2, 1/2, 1/2]] + + # Regime i correponds to a sequence of iid draws from discrete + # random variables that are equally likely to be -1, i, and i + 1 + # for i = 0, 1, 2. We observe the sequence: + # + # t = 0, 1, 2, 3, 4, 5, 6, 7 + # X_t = -1, 1, 2, -1, -1, 2, 3, -1 + # + # The first observations tell us nothing, the second tells us that + # regime 0 and 1 are equally likely, and the third tells us that we + # must be in regime 1 for t = 0, 1, 2, 3. At t=4 we transition to + # state 1 or 2. In this case, neither a -1 or 2 changes our view + # that these states are equally likely, but a 3 tells we must be in + # state 2 for the second four timestamps. + conditional_likelihoods = np.empty((k_regimes, nobs)) + conditional_likelihoods[:, 0] = [1/3, 1/3, 1/3] + conditional_likelihoods[:, 1] = [1/3, 1/3, 0] + conditional_likelihoods[:, 2] = [0, 1/3, 1/3] + conditional_likelihoods[:, 3:5] = [[1/3], [1/3], [1/3]] + conditional_likelihoods[:, 5] = [0, 1/3, 1/3] + conditional_likelihoods[:, 6] = [0, 0, 1/3] + conditional_likelihoods[:, 7] = [1/3, 1/3, 1/3] + + expected_marginals = np.empty((k_regimes, nobs)) + expected_marginals[:, 0] = [1/3, 1/3, 1/3] + expected_marginals[:, 1] = [1/2, 1/2, 0] + expected_marginals[:, 2:4] = [[0], [1], [0]] + expected_marginals[:, 4:6] = [[0], [1/2], [1/2]] + expected_marginals[:, 6:8] = [[0], [0], [1]] + + py_results = markov_switching.py_hamilton_filter( + initial_probabilities, regime_transition, conditional_likelihoods, + model_order=0) + assert_allclose(py_results[0], expected_marginals) + + cy_results = markov_switching.cy_hamilton_filter( + initial_probabilities, regime_transition, conditional_likelihoods, + model_order=0) + assert_allclose(cy_results[0], expected_marginals) + + def test_hamilton_filter_shape_checks(self): + k_regimes = 3 + nobs = 8 + order = 3 + + initial_probabilities = np.ones(k_regimes) / k_regimes + regime_transition = np.ones((k_regimes, k_regimes, nobs)) / k_regimes + conditional_likelihoods = np.ones(order * (k_regimes,) + (nobs,)) + + for func in [markov_switching.py_hamilton_filter, + markov_switching.cy_hamilton_filter]: + with assert_raises(ValueError): + func(initial_probabilities, + regime_transition, + conditional_likelihoods, model_order=3) + + def test_py_hamilton_filter(self): + mod = self.model + params = self.true['params'] + + regime_transition = mod.regime_transition_matrix(params) + initial_probabilities = mod.initial_probabilities( + params, regime_transition) + conditional_likelihoods = mod._conditional_likelihoods(params) + + actual = markov_switching.py_hamilton_filter( + initial_probabilities, regime_transition, conditional_likelihoods, + model_order=mod.order) + desired = markov_switching.cy_hamilton_filter( + initial_probabilities, regime_transition, conditional_likelihoods, + model_order=mod.order) + + for i in range(3): + assert_allclose(actual[i], desired[i]) + + def test_py_kim_smoother(self): + mod = self.model + params = self.true['params'] + + regime_transition = mod.regime_transition_matrix(params) + initial_probabilities = mod.initial_probabilities( + params, regime_transition) + conditional_likelihoods = mod._conditional_likelihoods(params) + + # Hamilton filter + filter_output = markov_switching.cy_hamilton_filter( + initial_probabilities, regime_transition, conditional_likelihoods, + model_order=mod.order) + + # Kim smoother + actual = markov_switching.py_kim_smoother( + regime_transition, filter_output[1], filter_output[3]) + desired = markov_switching.cy_kim_smoother( + regime_transition, filter_output[1], filter_output[3]) + + for i in range(2): + assert_allclose(actual[i], desired[i]) + + +class TestFedFundsConstL1(MarkovRegression): + # Results from Stata, see http://www.stata.com/manuals14/tsmswitch.pdf + @classmethod + def setup_class(cls): + true = { + 'params': np.r_[.6378175, .1306295, .724457, -.0988764, + .7631424, 1.061174, .6915759**2], + 'llf': -264.71069, + 'llf_fit': -264.71069, + 'llf_fit_em': -264.71153, + 'bse_oim': np.r_[.1202616, .0495924, .2886657, .1183838, .0337234, + .0185031, np.nan] + } + super(TestFedFundsConstL1, cls).setup_class( + true, fedfunds[1:], k_regimes=2, exog=fedfunds[:-1]) + + def test_bse(self): + # Can't compare last element of bse because we estimate sigma^2 rather + # than sigma^2 + bse = self.result.cov_params_approx.diagonal()**0.5 + assert_allclose(bse[:-1], self.true['bse_oim'][:-1], atol=1e-6) + + +class TestFedFundsConstL1Exog(MarkovRegression): + # Results from Stata, see http://www.stata.com/manuals14/tsmswitch.pdf + @classmethod + def setup_class(cls): + path = os.path.join(current_path, 'results', + 'results_predict_fedfunds.csv') + results = pd.read_csv(path) + + true = { + 'params': np.r_[.7279288, .2114578, .6554954, -.0944924, + .8314458, .9292574, .1355425, .0343072, + -.0273928, .2125275, .5764495**2], + 'llf': -229.25614, + 'llf_fit': -229.25614, + 'llf_fit_em': -229.25624, + 'bse_oim': np.r_[.0929915, .0641179, .1373889, .1279231, .0333236, + .0270852, .0294113, .0240138, .0408057, .0297351, + np.nan], + 'predict0': results.iloc[4:]['constL1exog_syhat1'], + 'predict1': results.iloc[4:]['constL1exog_syhat2'], + 'predict_smoothed': results.iloc[4:]['constL1exog_syhat'], + } + super(TestFedFundsConstL1Exog, cls).setup_class( + true, fedfunds[4:], k_regimes=2, + exog=np.c_[fedfunds[3:-1], ogap[4:], inf[4:]]) + + def test_fit(self, **kwargs): + kwargs.setdefault('em_iter', 10) + kwargs.setdefault('maxiter', 100) + super(TestFedFundsConstL1Exog, self).test_fit(**kwargs) + + def test_predict(self): + # Predictions conditional on regime (the same no matter which + # probabilities are selected) + for name in ['predicted', 'filtered', 'smoothed', None]: + actual = self.model.predict( + self.true['params'], probabilities=name, conditional=True) + assert_allclose(actual[0], + self.true['predict0'], atol=1e-5) + assert_allclose(actual[1], + self.true['predict1'], atol=1e-5) + + # Smoothed + actual = self.model.predict( + self.true['params'], probabilities='smoothed') + assert_allclose(actual, self.true['predict_smoothed'], atol=1e-5) + actual = self.model.predict( + self.true['params'], probabilities=None) + assert_allclose(actual, self.true['predict_smoothed'], atol=1e-5) + + actual = self.result.predict(probabilities='smoothed') + assert_allclose(actual, self.true['predict_smoothed'], atol=1e-5) + actual = self.result.predict(probabilities=None) + assert_allclose(actual, self.true['predict_smoothed'], atol=1e-5) + + def test_bse(self): + # Can't compare last element of bse because we estimate sigma^2 rather + # than sigma^2 + bse = self.result.cov_params_approx.diagonal()**0.5 + assert_allclose(bse[:-1], self.true['bse_oim'][:-1], atol=1e-7) + + +class TestFedFundsConstL1Exog3(MarkovRegression): + # Results from Stata, see http://www.stata.com/manuals14/tsmswitch.pdf + @classmethod + def setup_class(cls): + true = { + 'params': np.r_[.7253684, .1641252, .6178282, + .2564055, .7994204, .3821718, + .5261292, -.0034106, .6015991, + .8464551, .9690088, .4178913, + .1201952, .0464136, .1075357, + -.0425603, .1298906, .9099168, + .438375**2], + 'llf': -189.89493, + 'llf_fit': -182.27188, + 'llf_fit_em': -226.88581 + } + super(TestFedFundsConstL1Exog3, cls).setup_class( + true, fedfunds[4:], k_regimes=3, + exog=np.c_[fedfunds[3:-1], ogap[4:], inf[4:]]) + + def test_fit(self, **kwargs): + kwargs['search_reps'] = 20 + np.random.seed(1234) + super(TestFedFundsConstL1Exog3, self).test_fit(**kwargs) + + +class TestAreturnsConstL1Variance(MarkovRegression): + # Results from Stata, see http://www.stata.com/manuals14/tsmswitch.pdf + @classmethod + def setup_class(cls): + true = { + 'params': np.r_[.7530865, .6825357, .7641424, 1.972771, .0790744, + .527953, .5895792**2, 1.605333**2], + 'llf': -745.7977, + 'llf_fit': -745.7977, + 'llf_fit_em': -745.83654, + 'bse_oim': np.r_[.0634387, .0662574, .0782852, .2784204, .0301862, + .0857841, np.nan, np.nan] + } + super(TestAreturnsConstL1Variance, cls).setup_class( + true, areturns[1:], k_regimes=2, exog=areturns[:-1], + switching_variance=True) + + def test_fit(self, **kwargs): + kwargs.setdefault('em_iter', 10) + kwargs.setdefault('maxiter', 100) + super(TestAreturnsConstL1Variance, self).test_fit(**kwargs) + + def test_bse(self): + # Can't compare last two element of bse because we estimate sigma^2 + # rather than sigma + bse = self.result.cov_params_approx.diagonal()**0.5 + assert_allclose(bse[:-2], self.true['bse_oim'][:-2], atol=1e-7) + + +class TestMumpspcNoconstL1Variance(MarkovRegression): + # Results from Stata, see http://www.stata.com/manuals14/tsmswitch.pdf + @classmethod + def setup_class(cls): + true = { + 'params': np.r_[.762733, .1473767, .420275, .9847369, .0562405**2, + .2611362**2], + 'llf': 131.7225, + 'llf_fit': 131.7225, + 'llf_fit_em': 131.7175 + } + super(TestMumpspcNoconstL1Variance, cls).setup_class( + true, mumpspc[1:], k_regimes=2, trend='nc', exog=mumpspc[:-1], + switching_variance=True, atol=1e-4) + + +def test_exog_tvtp(): + exog = np.ones_like(fedfunds) + + mod1 = markov_regression.MarkovRegression(fedfunds, k_regimes=2) + mod2 = markov_regression.MarkovRegression(fedfunds, k_regimes=2, + exog_tvtp=exog) + + params = np.r_[0.98209618, 0.05036498, 3.70877542, 9.55676298, 4.44181911] + params_tvtp = params.copy() + params_tvtp[0] = mod2._untransform_logistic( + np.r_[0.], np.r_[1 - params[0]]) + params_tvtp[1] = mod2._untransform_logistic( + np.r_[0.], np.r_[1 - params[1]]) + + res1 = mod1.smooth(params) + res2 = mod2.smooth(params_tvtp) + + assert_allclose(res2.llf_obs, res1.llf_obs) + assert_allclose(res2.regime_transition - res1.regime_transition, 0, + atol=1e-15) + assert_allclose(res2.predicted_joint_probabilities, + res1.predicted_joint_probabilities) + assert_allclose(res2.filtered_joint_probabilities, + res1.filtered_joint_probabilities) + assert_allclose(res2.smoothed_joint_probabilities, + res1.smoothed_joint_probabilities) diff --git a/statsmodels/tsa/regime_switching/tests/test_markov_switching.py b/statsmodels/tsa/regime_switching/tests/test_markov_switching.py new file mode 100644 index 0000000..3a8e57b --- /dev/null +++ b/statsmodels/tsa/regime_switching/tests/test_markov_switching.py @@ -0,0 +1,318 @@ +""" +General tests for Markov switching models + +Author: Chad Fulton +License: BSD-3 +""" +from __future__ import division, absolute_import, print_function + +import numpy as np +from numpy.testing import assert_equal, assert_allclose, assert_raises +import pandas as pd + +from statsmodels.tools.numdiff import approx_fprime_cs +from statsmodels.tsa.regime_switching import markov_switching + + +def test_params(): + def check_transtion_2(params): + assert_equal(params['regime_transition'], np.s_[0:2]) + assert_equal(params[0, 'regime_transition'], [0]) + assert_equal(params[1, 'regime_transition'], [1]) + assert_equal(params['regime_transition', 0], [0]) + assert_equal(params['regime_transition', 1], [1]) + + def check_transition_3(params): + assert_equal(params['regime_transition'], np.s_[0:6]) + assert_equal(params[0, 'regime_transition'], [0, 3]) + assert_equal(params[1, 'regime_transition'], [1, 4]) + assert_equal(params[2, 'regime_transition'], [2, 5]) + assert_equal(params['regime_transition', 0], [0, 3]) + assert_equal(params['regime_transition', 1], [1, 4]) + assert_equal(params['regime_transition', 2], [2, 5]) + + params = markov_switching.MarkovSwitchingParams(k_regimes=2) + params['regime_transition'] = [1] + assert_equal(params.k_params, 1 * 2) + assert_equal(params[0], [0]) + assert_equal(params[1], [1]) + check_transtion_2(params) + + params['exog'] = [0, 1] + assert_equal(params.k_params, 1 * 2 + 1 + 1 * 2) + assert_equal(params[0], [0, 2, 3]) + assert_equal(params[1], [1, 2, 4]) + check_transtion_2(params) + assert_equal(params['exog'], np.s_[2:5]) + assert_equal(params[0, 'exog'], [2, 3]) + assert_equal(params[1, 'exog'], [2, 4]) + assert_equal(params['exog', 0], [2, 3]) + assert_equal(params['exog', 1], [2, 4]) + + params = markov_switching.MarkovSwitchingParams(k_regimes=3) + params['regime_transition'] = [1, 1] + assert_equal(params.k_params, 2 * 3) + assert_equal(params[0], [0, 3]) + assert_equal(params[1], [1, 4]) + assert_equal(params[2], [2, 5]) + check_transition_3(params) + + # Test for invalid parameter setting + assert_raises(IndexError, params.__setitem__, None, [1, 1]) + + # Test for invalid parameter selection + assert_raises(IndexError, params.__getitem__, None) + assert_raises(IndexError, params.__getitem__, (0, 0)) + assert_raises(IndexError, params.__getitem__, ('exog', 'exog')) + assert_raises(IndexError, params.__getitem__, ('exog', 0, 1)) + + +def test_init_endog(): + index = pd.date_range(start='1950-01-01', periods=10, freq='D') + endog = [ + np.ones(10), pd.Series(np.ones(10), index=index), np.ones((10, 1)), + pd.DataFrame(np.ones((10, 1)), index=index) + ] + for _endog in endog: + mod = markov_switching.MarkovSwitching(_endog, k_regimes=2) + assert_equal(mod.nobs, 10) + assert_equal(mod.endog, _endog.squeeze()) + assert_equal(mod.k_regimes, 2) + assert_equal(mod.tvtp, False) + assert_equal(mod.k_tvtp, 0) + assert_equal(mod.k_params, 2) + + # Invalid: k_regimes < 2 + endog = np.ones(10) + assert_raises(ValueError, markov_switching.MarkovSwitching, endog, + k_regimes=1) + + # Invalid: multiple endog columns + endog = np.ones((10, 2)) + assert_raises(ValueError, markov_switching.MarkovSwitching, endog, + k_regimes=2) + + +def test_init_exog_tvtp(): + endog = np.ones(10) + exog_tvtp = np.c_[np.ones((10, 1)), (np.arange(10) + 1)[:, np.newaxis]] + mod = markov_switching.MarkovSwitching(endog, k_regimes=2, + exog_tvtp=exog_tvtp) + assert_equal(mod.tvtp, True) + assert_equal(mod.k_tvtp, 2) + + # Invalid exog_tvtp (too many obs) + exog_tvtp = np.c_[np.ones((11, 1)), (np.arange(11) + 1)[:, np.newaxis]] + assert_raises(ValueError, markov_switching.MarkovSwitching, endog, + k_regimes=2, exog_tvtp=exog_tvtp) + + +def test_transition_matrix(): + # k_regimes = 2 + endog = np.ones(10) + mod = markov_switching.MarkovSwitching(endog, k_regimes=2) + params = np.r_[0., 0., 1.] + transition_matrix = np.zeros((2, 2, 1)) + transition_matrix[1, :] = 1. + assert_allclose(mod.regime_transition_matrix(params), transition_matrix) + + # k_regimes = 3 + endog = np.ones(10) + mod = markov_switching.MarkovSwitching(endog, k_regimes=3) + params = np.r_[[0]*3, [0.2]*3, 1.] + transition_matrix = np.zeros((3, 3, 1)) + transition_matrix[1, :, 0] = 0.2 + transition_matrix[2, :, 0] = 0.8 + assert_allclose(mod.regime_transition_matrix(params), transition_matrix) + + # k_regimes = 2, tvtp + endog = np.ones(10) + exog_tvtp = np.c_[np.ones((10, 1)), (np.arange(10) + 1)[:, np.newaxis]] + mod = markov_switching.MarkovSwitching(endog, k_regimes=2, + exog_tvtp=exog_tvtp) + + # If all TVTP regression coefficients are zero, then the logit transform + # results in exp(0) / (1 + exp(0)) = 0.5 for all parameters; since it's + # k_regimes=2 the remainder calculation is also 0.5. + params = np.r_[0, 0, 0, 0] + assert_allclose(mod.regime_transition_matrix(params), 0.5) + + # Manually compute the TVTP coefficients + params = np.r_[1, 2, 1, 2] + transition_matrix = np.zeros((2, 2, 10)) + + coeffs0 = np.sum(exog_tvtp, axis=1) + p11 = np.exp(coeffs0) / (1 + np.exp(coeffs0)) + transition_matrix[0, 0, :] = p11 + transition_matrix[1, 0, :] = 1 - p11 + + coeffs1 = np.sum(2 * exog_tvtp, axis=1) + p21 = np.exp(coeffs1) / (1 + np.exp(coeffs1)) + transition_matrix[0, 1, :] = p21 + transition_matrix[1, 1, :] = 1 - p21 + assert_allclose(mod.regime_transition_matrix(params), transition_matrix, + atol=1e-10) + + # k_regimes = 3, tvtp + endog = np.ones(10) + exog_tvtp = np.c_[np.ones((10, 1)), (np.arange(10) + 1)[:, np.newaxis]] + mod = markov_switching.MarkovSwitching( + endog, k_regimes=3, exog_tvtp=exog_tvtp) + + # If all TVTP regression coefficients are zero, then the logit transform + # results in exp(0) / (1 + exp(0) + exp(0)) = 1/3 for all parameters; + # since it's k_regimes=3 the remainder calculation is also 1/3. + params = np.r_[[0]*12] + assert_allclose(mod.regime_transition_matrix(params), 1 / 3) + + # Manually compute the TVTP coefficients for the first column + params = np.r_[[0]*6, [2]*6] + transition_matrix = np.zeros((3, 3, 10)) + + p11 = np.zeros(10) + p12 = 2 * np.sum(exog_tvtp, axis=1) + tmp = np.exp(np.c_[p11, p12]).T + transition_matrix[:2, 0, :] = tmp / (1 + np.sum(tmp, axis=0)) + transition_matrix[2, 0, :] = ( + 1 - np.sum(transition_matrix[:2, 0, :], axis=0)) + assert_allclose(mod.regime_transition_matrix(params)[:, 0, :], + transition_matrix[:, 0, :], atol=1e-10) + + +def test_initial_probabilities(): + endog = np.ones(10) + mod = markov_switching.MarkovSwitching(endog, k_regimes=2) + params = np.r_[0.5, 0.5, 1.] + + # Valid known initial probabilities + mod.initialize_known([0.2, 0.8]) + assert_allclose(mod.initial_probabilities(params), [0.2, 0.8]) + + # Invalid known initial probabilities (too many elements) + assert_raises(ValueError, mod.initialize_known, [0.2, 0.2, 0.6]) + + # Invalid known initial probabilities (doesn't sum to 1) + assert_raises(ValueError, mod.initialize_known, [0.2, 0.2]) + + # Valid steady-state probabilities + mod.initialize_steady_state() + assert_allclose(mod.initial_probabilities(params), [0.5, 0.5]) + + # Invalid steady-state probabilities (when mod has tvtp) + endog = np.ones(10) + mod = markov_switching.MarkovSwitching(endog, k_regimes=2, exog_tvtp=endog) + assert_raises(ValueError, mod.initialize_steady_state) + + +def test_logistic(): + logistic = markov_switching._logistic + + # For a number, logistic(x) = np.exp(x) / (1 + np.exp(x)) + cases = [0, 10., -4] + for x in cases: + # Have to use allclose b/c logistic() actually uses logsumexp, so + # they're not equal + assert_allclose(logistic(x), np.exp(x) / (1 + np.exp(x))) + + # For a vector, logistic(x) returns + # np.exp(x[i]) / (1 + np.sum(np.exp(x[:]))) for each i + # but squeezed + cases = [[1.], [0, 1.], [-2, 3., 1.2, -30.]] + for x in cases: + actual = logistic(x) + desired = [np.exp(i) / (1 + np.sum(np.exp(x))) for i in x] + assert_allclose(actual, desired) + + # For a 2-dim, logistic(x) returns + # np.exp(x[i, t]) / (1 + np.sum(np.exp(x[:, t]))) for each i, each t + # but squeezed + case = [[1.]] + actual = logistic(case) + assert_equal(actual.shape, (1, 1)) + assert_allclose(actual, np.exp(1) / (1 + np.exp(1))) + + # Here, np.array(case) is 2x1, so it is interpreted as i=0, 1 and t=0 + case = [[0], [1.]] + actual = logistic(case) + desired = [np.exp(i) / (1 + np.sum(np.exp(case))) for i in case] + assert_allclose(actual, desired) + + # Here, np.array(case) is 1x2, so it is interpreted as i=0 and t=0, 1 + case = [[0, 1.]] + actual = logistic(case) + desired = np.exp(case) / (1 + np.exp(case)) + assert_allclose(actual, desired) + + # For a 3-dim, logistic(x) returns + # np.exp(x[i, j, t]) / (1 + np.sum(np.exp(x[:, j, t]))) + # for each i, each j, each t + case = np.arange(2*3*4).reshape(2, 3, 4) + actual = logistic(case) + for j in range(3): + assert_allclose(actual[:, j, :], logistic(case[:, j, :])) + + +def test_partials_logistic(): + # Here we compare to analytic derivatives and to finite-difference + # approximations + logistic = markov_switching._logistic + partials_logistic = markov_switching._partials_logistic + + # For a number, logistic(x) = np.exp(x) / (1 + np.exp(x)) + # Then d/dx = logistix(x) - logistic(x)**2 + cases = [0, 10., -4] + for x in cases: + assert_allclose(partials_logistic(x), logistic(x) - logistic(x)**2) + assert_allclose(partials_logistic(x), approx_fprime_cs([x], logistic)) + + # For a vector, logistic(x) returns + # np.exp(x[i]) / (1 + np.sum(np.exp(x[:]))) for each i + # Then d logistic(x[i]) / dx[i] = (logistix(x) - logistic(x)**2)[i] + # And d logistic(x[i]) / dx[j] = -(logistic(x[i]) * logistic[x[j]]) + cases = [[1.], [0, 1.], [-2, 3., 1.2, -30.]] + for x in cases: + evaluated = np.atleast_1d(logistic(x)) + partials = np.diag(evaluated - evaluated**2) + for i in range(len(x)): + for j in range(i): + partials[i, j] = partials[j, i] = -evaluated[i] * evaluated[j] + assert_allclose(partials_logistic(x), partials) + assert_allclose(partials_logistic(x), approx_fprime_cs(x, logistic)) + + # For a 2-dim, logistic(x) returns + # np.exp(x[i, t]) / (1 + np.sum(np.exp(x[:, t]))) for each i, each t + # but squeezed + case = [[1.]] + evaluated = logistic(case) + partial = [evaluated - evaluated**2] + assert_allclose(partials_logistic(case), partial) + assert_allclose(partials_logistic(case), approx_fprime_cs(case, logistic)) + + # # Here, np.array(case) is 2x1, so it is interpreted as i=0, 1 and t=0 + case = [[0], [1.]] + evaluated = logistic(case)[:, 0] + partials = np.diag(evaluated - evaluated**2) + partials[0, 1] = partials[1, 0] = -np.multiply(*evaluated) + assert_allclose(partials_logistic(case)[:, :, 0], partials) + assert_allclose(partials_logistic(case), + approx_fprime_cs(np.squeeze(case), logistic)[..., None]) + + # Here, np.array(case) is 1x2, so it is interpreted as i=0 and t=0, 1 + case = [[0, 1.]] + evaluated = logistic(case) + partials = (evaluated - evaluated**2)[None, ...] + assert_allclose(partials_logistic(case), partials) + assert_allclose(partials_logistic(case), + approx_fprime_cs(case, logistic).T) + + # For a 3-dim, logistic(x) returns + # np.exp(x[i, j, t]) / (1 + np.sum(np.exp(x[:, j, t]))) + # for each i, each j, each t + case = np.arange(2*3*4).reshape(2, 3, 4) + evaluated = logistic(case) + partials = partials_logistic(case) + for t in range(4): + for j in range(3): + desired = np.diag(evaluated[:, j, t] - evaluated[:, j, t]**2) + desired[0, 1] = desired[1, 0] = -np.multiply(*evaluated[:, j, t]) + assert_allclose(partials[..., j, t], desired) diff --git a/statsmodels/tsa/seasonal.py b/statsmodels/tsa/seasonal.py new file mode 100644 index 0000000..ec1cf3b --- /dev/null +++ b/statsmodels/tsa/seasonal.py @@ -0,0 +1,216 @@ +""" +Seasonal Decomposition by Moving Averages +""" +from statsmodels.compat.python import lmap, range, iteritems +import numpy as np +from pandas.core.nanops import nanmean as pd_nanmean +from .filters._utils import (_maybe_get_pandas_wrapper_freq, + _maybe_get_pandas_wrapper) +from .filters.filtertools import convolution_filter +from statsmodels.tsa.tsatools import freq_to_period + + +def seasonal_mean(x, freq): + """ + Return means for each period in x. freq is an int that gives the + number of periods per cycle. E.g., 12 for monthly. NaNs are ignored + in the mean. + """ + return np.array([pd_nanmean(x[i::freq], axis=0) for i in range(freq)]) + + +def _extrapolate_trend(trend, npoints): + """ + Replace nan values on trend's end-points with least-squares extrapolated + values with regression considering npoints closest defined points. + """ + front = next(i for i, vals in enumerate(trend) + if not np.any(np.isnan(vals))) + back = trend.shape[0] - 1 - next(i for i, vals in enumerate(trend[::-1]) + if not np.any(np.isnan(vals))) + front_last = min(front + npoints, back) + back_first = max(front, back - npoints) + + k, n = np.linalg.lstsq( + np.c_[np.arange(front, front_last), np.ones(front_last - front)], + trend[front:front_last], rcond=-1)[0] + extra = (np.arange(0, front) * np.c_[k] + np.c_[n]).T + if trend.ndim == 1: + extra = extra.squeeze() + trend[:front] = extra + + k, n = np.linalg.lstsq( + np.c_[np.arange(back_first, back), np.ones(back - back_first)], + trend[back_first:back], rcond=-1)[0] + extra = (np.arange(back + 1, trend.shape[0]) * np.c_[k] + np.c_[n]).T + if trend.ndim == 1: + extra = extra.squeeze() + trend[back + 1:] = extra + + return trend + + +def seasonal_decompose(x, model="additive", filt=None, freq=None, two_sided=True, + extrapolate_trend=0): + """ + Seasonal decomposition using moving averages + + Parameters + ---------- + x : array-like + Time series. If 2d, individual series are in columns. + model : str {"additive", "multiplicative"} + Type of seasonal component. Abbreviations are accepted. + filt : array-like + The filter coefficients for filtering out the seasonal component. + The concrete moving average method used in filtering is determined by two_sided. + freq : int, optional + Frequency of the series. Must be used if x is not a pandas object. + Overrides default periodicity of x if x is a pandas + object with a timeseries index. + two_sided : bool + The moving average method used in filtering. + If True (default), a centered moving average is computed using the filt. + If False, the filter coefficients are for past values only. + extrapolate_trend : int or 'freq', optional + If set to > 0, the trend resulting from the convolution is + linear least-squares extrapolated on both ends (or the single one + if two_sided is False) considering this many (+1) closest points. + If set to 'freq', use `freq` closest points. Setting this parameter + results in no NaN values in trend or resid components. + + Returns + ------- + results : obj + A object with seasonal, trend, and resid attributes. + + Notes + ----- + This is a naive decomposition. More sophisticated methods should + be preferred. + + The additive model is Y[t] = T[t] + S[t] + e[t] + + The multiplicative model is Y[t] = T[t] * S[t] * e[t] + + The seasonal component is first removed by applying a convolution + filter to the data. The average of this smoothed series for each + period is the returned seasonal component. + + See Also + -------- + statsmodels.tsa.filters.bk_filter.bkfilter + statsmodels.tsa.filters.cf_filter.xffilter + statsmodels.tsa.filters.hp_filter.hpfilter + statsmodels.tsa.filters.convolution_filter + """ + if freq is None: + _pandas_wrapper, pfreq = _maybe_get_pandas_wrapper_freq(x) + else: + _pandas_wrapper = _maybe_get_pandas_wrapper(x) + pfreq = None + x = np.asanyarray(x).squeeze() + nobs = len(x) + + if not np.all(np.isfinite(x)): + raise ValueError("This function does not handle missing values") + if model.startswith('m'): + if np.any(x <= 0): + raise ValueError("Multiplicative seasonality is not appropriate " + "for zero and negative values") + + if freq is None: + if pfreq is not None: + pfreq = freq_to_period(pfreq) + freq = pfreq + else: + raise ValueError("You must specify a freq or x must be a " + "pandas object with a timeseries index with " + "a freq not set to None") + + if filt is None: + if freq % 2 == 0: # split weights at ends + filt = np.array([.5] + [1] * (freq - 1) + [.5]) / freq + else: + filt = np.repeat(1./freq, freq) + + nsides = int(two_sided) + 1 + trend = convolution_filter(x, filt, nsides) + + if extrapolate_trend == 'freq': + extrapolate_trend = freq - 1 + + if extrapolate_trend > 0: + trend = _extrapolate_trend(trend, extrapolate_trend + 1) + + if model.startswith('m'): + detrended = x / trend + else: + detrended = x - trend + + period_averages = seasonal_mean(detrended, freq) + + if model.startswith('m'): + period_averages /= np.mean(period_averages, axis=0) + else: + period_averages -= np.mean(period_averages, axis=0) + + seasonal = np.tile(period_averages.T, nobs // freq + 1).T[:nobs] + + if model.startswith('m'): + resid = x / seasonal / trend + else: + resid = detrended - seasonal + + results = lmap(_pandas_wrapper, [seasonal, trend, resid, x]) + return DecomposeResult(seasonal=results[0], trend=results[1], + resid=results[2], observed=results[3]) + + +class DecomposeResult(object): + def __init__(self, **kwargs): + for key, value in iteritems(kwargs): + setattr(self, key, value) + self.nobs = len(self.observed) + + def plot(self): + from statsmodels.graphics.utils import _import_mpl + plt = _import_mpl() + fig, axes = plt.subplots(4, 1, sharex=True) + if hasattr(self.observed, 'plot'): # got pandas use it + self.observed.plot(ax=axes[0], legend=False) + axes[0].set_ylabel('Observed') + self.trend.plot(ax=axes[1], legend=False) + axes[1].set_ylabel('Trend') + self.seasonal.plot(ax=axes[2], legend=False) + axes[2].set_ylabel('Seasonal') + self.resid.plot(ax=axes[3], legend=False) + axes[3].set_ylabel('Residual') + else: + axes[0].plot(self.observed) + axes[0].set_ylabel('Observed') + axes[1].plot(self.trend) + axes[1].set_ylabel('Trend') + axes[2].plot(self.seasonal) + axes[2].set_ylabel('Seasonal') + axes[3].plot(self.resid) + axes[3].set_ylabel('Residual') + axes[3].set_xlabel('Time') + axes[3].set_xlim(0, self.nobs) + + fig.tight_layout() + return fig + + +if __name__ == "__main__": + x = np.array([-50, 175, 149, 214, 247, 237, 225, 329, 729, 809, + 530, 489, 540, 457, 195, 176, 337, 239, 128, 102, + 232, 429, 3, 98, 43, -141, -77, -13, 125, 361, -45, 184]) + results = seasonal_decompose(x, freq=4) + + from pandas import DataFrame, date_range + data = DataFrame(x, date_range(start='1/1/1951', + periods=len(x), + freq='Q')) + + res = seasonal_decompose(data) diff --git a/statsmodels/tsa/statespace/__init__.py b/statsmodels/tsa/statespace/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/tsa/statespace/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/tsa/statespace/_filters/__init__.py b/statsmodels/tsa/statespace/_filters/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/statespace/_filters/_conventional.pxd b/statsmodels/tsa/statespace/_filters/_conventional.pxd new file mode 100644 index 0000000..c82625e --- /dev/null +++ b/statsmodels/tsa/statespace/_filters/_conventional.pxd @@ -0,0 +1,69 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models - Conventional Kalman Filter declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cimport numpy as np +from statsmodels.tsa.statespace._representation cimport ( + sStatespace, dStatespace, cStatespace, zStatespace +) +from statsmodels.tsa.statespace._kalman_filter cimport ( + sKalmanFilter, dKalmanFilter, cKalmanFilter, zKalmanFilter +) + +# Single precision +cdef int sforecast_missing_conventional(sKalmanFilter kfilter, sStatespace model) +cdef int supdating_missing_conventional(sKalmanFilter kfilter, sStatespace model) +cdef np.float32_t sinverse_missing_conventional(sKalmanFilter kfilter, sStatespace model, np.float32_t determinant) except * +cdef np.float32_t sloglikelihood_missing_conventional(sKalmanFilter kfilter, sStatespace model, np.float32_t determinant) +cdef np.float32_t sscale_missing_conventional(sKalmanFilter kfilter, sStatespace model) + +cdef int sforecast_conventional(sKalmanFilter kfilter, sStatespace model) +cdef int supdating_conventional(sKalmanFilter kfilter, sStatespace model) +cdef int sprediction_conventional(sKalmanFilter kfilter, sStatespace model) +cdef np.float32_t sloglikelihood_conventional(sKalmanFilter kfilter, sStatespace model, np.float32_t determinant) +cdef np.float32_t sscale_conventional(sKalmanFilter kfilter, sStatespace model) + +# Double precision +cdef int dforecast_missing_conventional(dKalmanFilter kfilter, dStatespace model) +cdef int dupdating_missing_conventional(dKalmanFilter kfilter, dStatespace model) +cdef np.float64_t dinverse_missing_conventional(dKalmanFilter kfilter, dStatespace model, np.float64_t determinant) except * +cdef np.float64_t dloglikelihood_missing_conventional(dKalmanFilter kfilter, dStatespace model, np.float64_t determinant) +cdef np.float64_t dscale_missing_conventional(dKalmanFilter kfilter, dStatespace model) + +cdef int dforecast_conventional(dKalmanFilter kfilter, dStatespace model) +cdef int dupdating_conventional(dKalmanFilter kfilter, dStatespace model) +cdef int dprediction_conventional(dKalmanFilter kfilter, dStatespace model) +cdef np.float64_t dloglikelihood_conventional(dKalmanFilter kfilter, dStatespace model, np.float64_t determinant) +cdef np.float64_t dscale_conventional(dKalmanFilter kfilter, dStatespace model) + +# Single precision complex +cdef int cforecast_missing_conventional(cKalmanFilter kfilter, cStatespace model) +cdef int cupdating_missing_conventional(cKalmanFilter kfilter, cStatespace model) +cdef np.complex64_t cinverse_missing_conventional(cKalmanFilter kfilter, cStatespace model, np.complex64_t determinant) except * +cdef np.complex64_t cloglikelihood_missing_conventional(cKalmanFilter kfilter, cStatespace model, np.complex64_t determinant) +cdef np.complex64_t cscale_missing_conventional(cKalmanFilter kfilter, cStatespace model) + +cdef int cforecast_conventional(cKalmanFilter kfilter, cStatespace model) +cdef int cupdating_conventional(cKalmanFilter kfilter, cStatespace model) +cdef int cprediction_conventional(cKalmanFilter kfilter, cStatespace model) +cdef np.complex64_t cloglikelihood_conventional(cKalmanFilter kfilter, cStatespace model, np.complex64_t determinant) +cdef np.complex64_t cscale_conventional(cKalmanFilter kfilter, cStatespace model) + +# Double precision complex +cdef int zforecast_missing_conventional(zKalmanFilter kfilter, zStatespace model) +cdef int zupdating_missing_conventional(zKalmanFilter kfilter, zStatespace model) +cdef np.complex128_t zinverse_missing_conventional(zKalmanFilter kfilter, zStatespace model, np.complex128_t determinant) except * +cdef np.complex128_t zloglikelihood_missing_conventional(zKalmanFilter kfilter, zStatespace model, np.complex128_t determinant) +cdef np.complex128_t zscale_missing_conventional(zKalmanFilter kfilter, zStatespace model) + +cdef int zforecast_conventional(zKalmanFilter kfilter, zStatespace model) +cdef int zupdating_conventional(zKalmanFilter kfilter, zStatespace model) +cdef int zprediction_conventional(zKalmanFilter kfilter, zStatespace model) +cdef np.complex128_t zloglikelihood_conventional(zKalmanFilter kfilter, zStatespace model, np.complex128_t determinant) +cdef np.complex128_t zscale_conventional(zKalmanFilter kfilter, zStatespace model) diff --git a/statsmodels/tsa/statespace/_filters/_conventional.pyx.in b/statsmodels/tsa/statespace/_filters/_conventional.pyx.in new file mode 100644 index 0000000..8f307d1 --- /dev/null +++ b/statsmodels/tsa/statespace/_filters/_conventional.pyx.in @@ -0,0 +1,321 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# Typical imports +cimport numpy as np +from statsmodels.src.math cimport * +cimport scipy.linalg.cython_blas as blas +cimport scipy.linalg.cython_lapack as lapack + +from statsmodels.tsa.statespace._kalman_filter cimport FILTER_CONCENTRATED + + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +}} + +# ### Missing Observation Conventional Kalman filter +# +# See Durbin and Koopman (2012) Chapter 4.10 +# +# Here k_endog is the same as usual, but the design matrix and observation +# covariance matrix are enforced to be zero matrices, and the loglikelihood +# is defined to be zero. + +cdef int {{prefix}}forecast_missing_conventional({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef int i, j + cdef int inc = 1, design_t = 0 + cdef {{cython_type}} alpha = 1 + + # #### Forecast for time t + # `forecast` $= Z_t a_t + d_t$ + # Just set to zeros, see below (this means if forecasts are required for + # this part, they must be done in the wrappe) + + # #### Forecast error for time t + # It is undefined here, since obs is nan + # Note: use kfilter dimensions since we just want to set the whole array + # to zero + for i in range(kfilter.k_endog): + kfilter._forecast[i] = 0 + kfilter._forecast_error[i] = 0 + + # #### Forecast error covariance matrix for time t + # $F_t \equiv 0$ + # Note: use kfilter dimensions since we just want to set the whole array + # to zeros + for i in range(kfilter.k_endog): # columns + for j in range(kfilter.k_endog): # rows + kfilter._forecast_error_cov[j + i*kfilter.k_endog] = 0 + +cdef int {{prefix}}updating_missing_conventional({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef int inc = 1 + + # Simply copy over the input arrays ($a_t, P_t$) to the filtered arrays + # ($a_{t|t}, P_{t|t}$) + # Note: use kfilter dimensions since we just want to copy whole arrays; + blas.{{prefix}}copy(&kfilter.k_states, kfilter._input_state, &inc, kfilter._filtered_state, &inc) + blas.{{prefix}}copy(&kfilter.k_states2, kfilter._input_state_cov, &inc, kfilter._filtered_state_cov, &inc) + +cdef {{cython_type}} {{prefix}}inverse_missing_conventional({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, {{cython_type}} determinant) except *: + # Since the inverse of the forecast error covariance matrix is not + # stored, we don't need to fill it (e.g. with NPY_NAN values). Instead, + # just do a noop here and return a zero determinant ($|0|$). + return 0.0 + +cdef {{cython_type}} {{prefix}}loglikelihood_missing_conventional({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, {{cython_type}} determinant): + return 0.0 + +cdef {{cython_type}} {{prefix}}scale_missing_conventional({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + return 0.0 + +# ### Conventional Kalman filter +# +# The following are the above routines as defined in the conventional Kalman +# filter. +# +# See Durbin and Koopman (2012) Chapter 4 + +cdef int {{prefix}}forecast_conventional({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + + # Constants + cdef: + int inc = 1, ld, i, j + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + # #### Forecast for time t + # `forecast` $= Z_t a_t + d_t$ + # + # *Note*: $a_t$ is given from the initialization (for $t = 0$) or + # from the previous iteration of the filter (for $t > 0$). + + # $\\# = d_t$ + blas.{{prefix}}copy(&model._k_endog, model._obs_intercept, &inc, kfilter._forecast, &inc) + # `forecast` $= 1.0 * Z_t a_t + 1.0 * \\#$ + # $(p \times 1) = (p \times m) (m \times 1) + (p \times 1)$ + blas.{{prefix}}gemv("N", &model._k_endog, &model._k_states, + &alpha, model._design, &model._k_endog, + kfilter._input_state, &inc, + &alpha, kfilter._forecast, &inc) + + # #### Forecast error for time t + # `forecast_error` $\equiv v_t = y_t -$ `forecast` + + # $\\# = y_t$ + blas.{{prefix}}copy(&model._k_endog, model._obs, &inc, kfilter._forecast_error, &inc) + # $v_t = -1.0 * $ `forecast` $ + \\#$ + # $(p \times 1) = (p \times 1) + (p \times 1)$ + blas.{{prefix}}axpy(&model._k_endog, &gamma, kfilter._forecast, &inc, kfilter._forecast_error, &inc) + + # *Intermediate calculation* (used just below and then once more) + # `tmp1` array used here, dimension $(m \times p)$ + # $\\#_1 = P_t Z_t'$ + # $(m \times p) = (m \times m) (p \times m)'$ + blas.{{prefix}}gemm("N", "T", &model._k_states, &model._k_endog, &model._k_states, + &alpha, kfilter._input_state_cov, &kfilter.k_states, + model._design, &model._k_endog, + &beta, kfilter._tmp1, &kfilter.k_states) + + # #### Forecast error covariance matrix for time t + # $F_t \equiv Z_t P_t Z_t' + H_t$ + # + # *Note*: this and does nothing at all to `forecast_error_cov` if + # converged == True + # TODO make sure when converged, the copies are made correctly + if not kfilter.converged: + # $\\# = H_t$ + # blas.{{prefix}}copy(&kfilter.k_endog2, kfilter._obs_cov, &inc, kfilter._forecast_error_cov, &inc) + for i in range(model._k_endog): # columns + for j in range(model._k_endog): # rows + kfilter._forecast_error_cov[j + i*kfilter.k_endog] = model._obs_cov[j + i*model._k_endog] + + # $F_t = 1.0 * Z_t \\#_1 + 1.0 * \\#$ + blas.{{prefix}}gemm("N", "N", &model._k_endog, &model._k_endog, &model._k_states, + &alpha, model._design, &model._k_endog, + kfilter._tmp1, &kfilter.k_states, + &alpha, kfilter._forecast_error_cov, &kfilter.k_endog) + + return 0 + +cdef int {{prefix}}updating_conventional({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + # Constants + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + # #### Filtered state for time t + # $a_{t|t} = a_t + P_t Z_t' F_t^{-1} v_t$ + # $a_{t|t} = 1.0 * \\#_1 \\#_2 + 1.0 a_t$ + blas.{{prefix}}copy(&kfilter.k_states, kfilter._input_state, &inc, kfilter._filtered_state, &inc) + blas.{{prefix}}gemv("N", &model._k_states, &model._k_endog, + &alpha, kfilter._tmp1, &kfilter.k_states, + kfilter._tmp2, &inc, + &alpha, kfilter._filtered_state, &inc) + + # #### Filtered state covariance for time t + # $P_{t|t} = P_t - P_t Z_t' F_t^{-1} Z_t P_t$ + # $P_{t|t} = P_t - \\#_1 \\#_3 P_t$ + # + # *Note*: this and does nothing at all to `filtered_state_cov` if + # converged == True + if not kfilter.converged: + blas.{{prefix}}copy(&kfilter.k_states2, kfilter._input_state_cov, &inc, kfilter._filtered_state_cov, &inc) + + # `tmp0` array used here, dimension $(m \times m)$ + # $\\#_0 = 1.0 * \\#_1 \\#_3$ + # $(m \times m) = (m \times p) (p \times m)$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_endog, + &alpha, kfilter._tmp1, &kfilter.k_states, + kfilter._tmp3, &kfilter.k_endog, + &beta, kfilter._tmp0, &kfilter.k_states) + + # $P_{t|t} = - 1.0 * \\# P_t + 1.0 * P_t$ + # $(m \times m) = (m \times m) (m \times m) + (m \times m)$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &gamma, kfilter._tmp0, &kfilter.k_states, + kfilter._input_state_cov, &kfilter.k_states, + &alpha, kfilter._filtered_state_cov, &kfilter.k_states) + + # #### Kalman gain for time t + # $K_t = T_t P_t Z_t' F_t^{-1}$ + # + # *Note*: this and does nothing at all to `kalman_gain` if + # converged == True + # *Note*: Kim and Nelson (1999) have a different version of the Kalman + # gain, defined as $P_t Z_t' F_t^{-1}$. That is not adopted here. + if not kfilter.converged: + # `tmp00` array used here, dimension $(m \times m)$ + # $\\#_{00} = 1.0 * T_t P_t$ + # $(m \times m) = (m \times m) (m \times m)$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, model._transition, &model._k_states, + kfilter._input_state_cov, &kfilter.k_states, + &beta, kfilter._tmp00, &kfilter.k_states) + + # K_t = 1.0 * \\#_{00} \\#_3' + # $(m \times p) = (m \times m) (m \times p)$ + blas.{{prefix}}gemm("N", "T", &model._k_states, &model._k_endog, &model._k_states, + &alpha, kfilter._tmp00, &kfilter.k_states, + kfilter._tmp3, &kfilter.k_endog, + &beta, kfilter._kalman_gain, &kfilter.k_states) + + return 0 + +cdef int {{prefix}}prediction_conventional({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + + # Constants + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + # #### Predicted state for time t+1 + # $a_{t+1} = T_t a_{t|t} + c_t$ + blas.{{prefix}}copy(&model._k_states, model._state_intercept, &inc, kfilter._predicted_state, &inc) + blas.{{prefix}}gemv("N", &model._k_states, &model._k_states, + &alpha, model._transition, &model._k_states, + kfilter._filtered_state, &inc, + &alpha, kfilter._predicted_state, &inc) + + # #### Predicted state covariance matrix for time t+1 + # $P_{t+1} = T_t P_{t|t} T_t' + Q_t^*$ + # + # *Note*: this and does nothing at all to `predicted_state_cov` if + # converged == True + if not kfilter.converged: + blas.{{prefix}}copy(&model._k_states2, model._selected_state_cov, &inc, kfilter._predicted_state_cov, &inc) + # `tmp0` array used here, dimension $(m \times m)$ + + # $\\#_0 = T_t P_{t|t} $ + + # $(m \times m) = (m \times m) (m \times m)$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, model._transition, &model._k_states, + kfilter._filtered_state_cov, &kfilter.k_states, + &beta, kfilter._tmp0, &kfilter.k_states) + # $P_{t+1} = 1.0 \\#_0 T_t' + 1.0 \\#$ + # $(m \times m) = (m \times m) (m \times m) + (m \times m)$ + blas.{{prefix}}gemm("N", "T", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._tmp0, &kfilter.k_states, + model._transition, &model._k_states, + &alpha, kfilter._predicted_state_cov, &kfilter.k_states) + + return 0 + + +cdef {{cython_type}} {{prefix}}loglikelihood_conventional({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, {{cython_type}} determinant): + # Constants + cdef: + {{cython_type}} loglikelihood + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + + loglikelihood = -0.5*(model._k_endog*{{combined_prefix}}log(2*NPY_PI) + {{combined_prefix}}log(determinant)) + + if not kfilter.filter_method & FILTER_CONCENTRATED: + {{if combined_prefix == 'd'}} + loglikelihood = loglikelihood - 0.5*blas.{{prefix}}dot(&model._k_endog, kfilter._forecast_error, &inc, kfilter._tmp2, &inc) + {{else}} + blas.{{prefix}}gemv("N", &inc, &model._k_endog, + &alpha, kfilter._forecast_error, &inc, + kfilter._tmp2, &inc, + &beta, kfilter._tmp0, &inc) + loglikelihood = loglikelihood - 0.5 * kfilter._tmp0[0] + {{endif}} + + return loglikelihood + +cdef {{cython_type}} {{prefix}}scale_conventional({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + # Constants + cdef: + {{cython_type}} scale + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + + {{if combined_prefix == 'd'}} + scale = blas.{{prefix}}dot(&model._k_endog, kfilter._forecast_error, &inc, kfilter._tmp2, &inc) + {{else}} + blas.{{prefix}}gemv("N", &inc, &model._k_endog, + &alpha, kfilter._forecast_error, &inc, + kfilter._tmp2, &inc, + &beta, kfilter._tmp0, &inc) + scale = kfilter._tmp0[0] + {{endif}} + + return scale + +{{endfor}} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/_filters/_inversions.pxd b/statsmodels/tsa/statespace/_filters/_inversions.pxd new file mode 100644 index 0000000..e838ef2 --- /dev/null +++ b/statsmodels/tsa/statespace/_filters/_inversions.pxd @@ -0,0 +1,53 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models - Inversion methods declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cimport numpy as np +from statsmodels.tsa.statespace._representation cimport ( + sStatespace, dStatespace, cStatespace, zStatespace +) +from statsmodels.tsa.statespace._kalman_filter cimport ( + sKalmanFilter, dKalmanFilter, cKalmanFilter, zKalmanFilter +) + +# Single precision +cdef np.float32_t sinverse_univariate(sKalmanFilter kfilter, sStatespace model, np.float32_t determinant) except * +cdef np.float32_t sfactorize_cholesky(sKalmanFilter kfilter, sStatespace model, np.float32_t determinant) except * +cdef np.float32_t sfactorize_lu(sKalmanFilter kfilter, sStatespace model, np.float32_t determinant) except * +cdef np.float32_t sinverse_cholesky(sKalmanFilter kfilter, sStatespace model, np.float32_t determinant) except * +cdef np.float32_t sinverse_lu(sKalmanFilter kfilter, sStatespace model, np.float32_t determinant) except * +cdef np.float32_t ssolve_cholesky(sKalmanFilter kfilter, sStatespace model, np.float32_t determinant) except * +cdef np.float32_t ssolve_lu(sKalmanFilter kfilter, sStatespace model, np.float32_t determinant) except * + +# Double precision +cdef np.float64_t dinverse_univariate(dKalmanFilter kfilter, dStatespace model, np.float64_t determinant) except * +cdef np.float64_t dfactorize_cholesky(dKalmanFilter kfilter, dStatespace model, np.float64_t determinant) except * +cdef np.float64_t dfactorize_lu(dKalmanFilter kfilter, dStatespace model, np.float64_t determinant) except * +cdef np.float64_t dinverse_cholesky(dKalmanFilter kfilter, dStatespace model, np.float64_t determinant) except * +cdef np.float64_t dinverse_lu(dKalmanFilter kfilter, dStatespace model, np.float64_t determinant) except * +cdef np.float64_t dsolve_cholesky(dKalmanFilter kfilter, dStatespace model, np.float64_t determinant) except * +cdef np.float64_t dsolve_lu(dKalmanFilter kfilter, dStatespace model, np.float64_t determinant) except * + +# Single precision complex +cdef np.complex64_t cinverse_univariate(cKalmanFilter kfilter, cStatespace model, np.complex64_t determinant) except * +cdef np.complex64_t cfactorize_cholesky(cKalmanFilter kfilter, cStatespace model, np.complex64_t determinant) except * +cdef np.complex64_t cfactorize_lu(cKalmanFilter kfilter, cStatespace model, np.complex64_t determinant) except * +cdef np.complex64_t cinverse_cholesky(cKalmanFilter kfilter, cStatespace model, np.complex64_t determinant) except * +cdef np.complex64_t cinverse_lu(cKalmanFilter kfilter, cStatespace model, np.complex64_t determinant) except * +cdef np.complex64_t csolve_cholesky(cKalmanFilter kfilter, cStatespace model, np.complex64_t determinant) except * +cdef np.complex64_t csolve_lu(cKalmanFilter kfilter, cStatespace model, np.complex64_t determinant) except * + +# Double precision complex +cdef np.complex128_t zinverse_univariate(zKalmanFilter kfilter, zStatespace model, np.complex128_t determinant) except * +cdef np.complex128_t zfactorize_cholesky(zKalmanFilter kfilter, zStatespace model, np.complex128_t determinant) except * +cdef np.complex128_t zfactorize_lu(zKalmanFilter kfilter, zStatespace model, np.complex128_t determinant) except * +cdef np.complex128_t zinverse_cholesky(zKalmanFilter kfilter, zStatespace model, np.complex128_t determinant) except * +cdef np.complex128_t zinverse_lu(zKalmanFilter kfilter, zStatespace model, np.complex128_t determinant) except * +cdef np.complex128_t zsolve_cholesky(zKalmanFilter kfilter, zStatespace model, np.complex128_t determinant) except * +cdef np.complex128_t zsolve_lu(zKalmanFilter kfilter, zStatespace model, np.complex128_t determinant) except * diff --git a/statsmodels/tsa/statespace/_filters/_inversions.pyx.in b/statsmodels/tsa/statespace/_filters/_inversions.pyx.in new file mode 100644 index 0000000..d59684e --- /dev/null +++ b/statsmodels/tsa/statespace/_filters/_inversions.pyx.in @@ -0,0 +1,407 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +cimport numpy as np +import numpy as np +from statsmodels.src.math cimport * +cimport scipy.linalg.cython_blas as blas +cimport scipy.linalg.cython_lapack as lapack + +from statsmodels.tsa.statespace._kalman_filter cimport ( + MEMORY_NO_SMOOTHING, MEMORY_NO_STD_FORECAST) + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +}} + +# ## Forecast error covariance inversion +# +# The following are routines that can calculate the inverse of the forecast +# error covariance matrix (defined in `forecast_`). +# +# These routines are aware of the possibility that the Kalman filter may have +# converged to a steady state, in which case they do not need to perform the +# inversion or calculate the determinant. + +cdef {{cython_type}} {{prefix}}inverse_univariate({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, {{cython_type}} determinant) except *: + """ + Factorize the forecast error covariance matrix using simple division + in the case that the observations are univariate. + + If the model has converged to a steady-state, this is a NOOP and simply + returns the determinant that was passed in. + """ + # TODO it's not a noop if converged, but the docstring says it is... + + # #### Intermediate values + cdef: + int inc = 1 + {{cython_type}} scalar + + # Take the inverse of the forecast error covariance matrix + if not kfilter.converged: + determinant = kfilter._forecast_error_cov[0] + try: + scalar = 1.0 / kfilter._forecast_error_cov[0] + except: + raise np.linalg.LinAlgError('Non-positive-definite forecast error' + ' covariance matrix encountered at' + ' period %d' % kfilter.t) + kfilter._tmp2[0] = scalar * kfilter._forecast_error[0] + blas.{{prefix}}copy(&model._k_endogstates, model._design, &inc, kfilter._tmp3, &inc) + blas.{{prefix}}scal(&model._k_endogstates, &scalar, kfilter._tmp3, &inc) + + if not (kfilter.conserve_memory & MEMORY_NO_STD_FORECAST > 0): + kfilter._standardized_forecast_error[0] = kfilter._forecast_error[0] * scalar**0.5 + + if not (kfilter.conserve_memory & MEMORY_NO_SMOOTHING > 0): + kfilter._tmp4[0] = scalar * model._obs_cov[0] + + return determinant + +cdef {{cython_type}} {{prefix}}factorize_cholesky({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, {{cython_type}} determinant) except *: + """ + Factorize the forecast error covariance matrix using a Cholesky + decomposition. Called by either of the `solve_cholesky` or + `invert_cholesky` routines. + + Requires a positive definite matrix, but is faster than an LU + decomposition. + + If the model has converged to a steady-state, this is a NOOP and simply + returns the determinant that was passed in. + """ + cdef: + int inc = 1 + int info + int i + + if not kfilter.converged or not (kfilter.conserve_memory & MEMORY_NO_STD_FORECAST > 0): + blas.{{prefix}}copy(&kfilter.k_endog2, kfilter._forecast_error_cov, &inc, kfilter._forecast_error_fac, &inc) + lapack.{{prefix}}potrf("U", &model._k_endog, kfilter._forecast_error_fac, &kfilter.k_endog, &info) + + if info < 0: + raise np.linalg.LinAlgError('Illegal value in forecast error' + ' covariance matrix encountered at' + ' period %d' % kfilter.t) + if info > 0: + raise np.linalg.LinAlgError('Non-positive-definite forecast error' + ' covariance matrix encountered at' + ' period %d' % kfilter.t) + + # Calculate the determinant (just the squared product of the + # diagonals, in the Cholesky decomposition case) + determinant = 1.0 + for i in range(model._k_endog): + determinant = determinant * kfilter.forecast_error_fac[i, i] + determinant = determinant**2 + + return determinant + +cdef {{cython_type}} {{prefix}}factorize_lu({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, {{cython_type}} determinant) except *: + """ + Factorize the forecast error covariance matrix using an LU + decomposition. Called by either of the `solve_lu` or `invert_lu` + routines. + + Is slower than a Cholesky decomposition, but does not require a + positive definite matrix. + + If the model has converged to a steady-state, this is a NOOP and simply + returns the determinant that was passed in. + """ + cdef: + int inc = 1 + int info + int i + + if not kfilter.converged: + # Perform LU decomposition into `forecast_error_fac` + blas.{{prefix}}copy(&kfilter.k_endog2, kfilter._forecast_error_cov, &inc, kfilter._forecast_error_fac, &inc) + + lapack.{{prefix}}getrf(&model._k_endog, &model._k_endog, + kfilter._forecast_error_fac, &kfilter.k_endog, + kfilter._forecast_error_ipiv, &info) + + if info < 0: + raise np.linalg.LinAlgError('Illegal value in forecast error' + ' covariance matrix encountered at' + ' period %d' % kfilter.t) + if info > 0: + raise np.linalg.LinAlgError('Singular forecast error covariance' + ' matrix encountered at period %d' % + kfilter.t) + + # Calculate the determinant (product of the diagonals, but with + # sign modifications according to the permutation matrix) + determinant = 1 + for i in range(model._k_endog): + if not kfilter._forecast_error_ipiv[i] == i+1: + determinant *= -1*kfilter.forecast_error_fac[i, i] + else: + determinant *= kfilter.forecast_error_fac[i, i] + + return determinant + +cdef {{cython_type}} {{prefix}}inverse_cholesky({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, {{cython_type}} determinant) except *: + """ + inverse_cholesky(self, determinant) + + If the model has converged to a steady-state, this is a NOOP and simply + returns the determinant that was passed in. + """ + cdef: + int info + int inc = 1 + int i, j + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + + if not kfilter.converged or not (kfilter.conserve_memory & MEMORY_NO_STD_FORECAST > 0): + # Perform the Cholesky decomposition and get the determinant + determinant = {{prefix}}factorize_cholesky(kfilter, model, determinant) + + # Use the Cholesky factor to get standardized forecast errors, if desired + # (in the notation of DK, kfilter._forecast_error_fac holds L_t', and + # we want to solve the equation L_t' v_t^s = v_t) + if not (kfilter.conserve_memory & MEMORY_NO_STD_FORECAST > 0): + blas.{{prefix}}copy(&kfilter.k_endog, kfilter._forecast_error, &inc, kfilter._standardized_forecast_error, &inc) + lapack.{{prefix}}trtrs("U", "T", "N", &model._k_endog, &inc, + kfilter._forecast_error_fac, &kfilter.k_endog, + kfilter._standardized_forecast_error, &kfilter.k_endog, &info) + + if info != 0: + raise np.linalg.LinAlgError('Error computing standardized' + ' forecast error at period %d' + % kfilter.t) + + # Continue taking the inverse + lapack.{{prefix}}potri("U", &model._k_endog, kfilter._forecast_error_fac, &kfilter.k_endog, &info) + + # ?potri only fills in the upper triangle of the symmetric array, and + # since the ?symm and ?symv routines are not available as of scipy + # 0.11.0, we can't use them, so we must fill in the lower triangle + # by hand + for i in range(model._k_endog): # columns + for j in range(i): # rows + kfilter.forecast_error_fac[i,j] = kfilter.forecast_error_fac[j,i] + + + # Get `tmp2` and `tmp3` via matrix multiplications + + # `tmp2` array used here, dimension $(p \times 1)$ + # $\\#_2 = F_t^{-1} v_t$ + #blas.{{prefix}}symv("U", &model._k_endog, &alpha, kfilter._forecast_error_fac, &kfilter.k_endog, + # kfilter._forecast_error, &inc, &beta, kfilter._tmp2, &inc) + blas.{{prefix}}gemv("N", &model._k_endog, &model._k_endog, + &alpha, kfilter._forecast_error_fac, &kfilter.k_endog, + kfilter._forecast_error, &inc, + &beta, kfilter._tmp2, &inc) + + # `tmp3` array used here, dimension $(p \times m)$ + # $\\#_3 = F_t^{-1} Z_t$ + #blas.{{prefix}}symm("L", "U", &kfilter.k_endog, &kfilter.k_states, + # &alpha, kfilter._forecast_error_fac, &kfilter.k_endog, + # kfilter._design, &kfilter.k_endog, + # &beta, kfilter._tmp3, &kfilter.k_endog) + blas.{{prefix}}gemm("N", "N", &model._k_endog, &model._k_states, &model._k_endog, + &alpha, kfilter._forecast_error_fac, &kfilter.k_endog, + model._design, &model._k_endog, + &beta, kfilter._tmp3, &kfilter.k_endog) + + if not (kfilter.conserve_memory & MEMORY_NO_SMOOTHING > 0): + # `tmp4` array used here, dimension $(p \times p)$ + # $\\#_4 = F_t^{-1} H_t$ + #blas.{{prefix}}symm("L", "U", &kfilter.k_endog, &kfilter.k_endog, + # &alpha, kfilter._forecast_error_fac, &kfilter.k_endog, + # kfilter._obs_cov, &kfilter.k_endog, + # &beta, kfilter._tmp4, &kfilter.k_endog) + blas.{{prefix}}gemm("N", "N", &model._k_endog, &model._k_endog, &model._k_endog, + &alpha, kfilter._forecast_error_fac, &kfilter.k_endog, + model._obs_cov, &model._k_endog, + &beta, kfilter._tmp4, &kfilter.k_endog) + + return determinant + +cdef {{cython_type}} {{prefix}}inverse_lu({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, {{cython_type}} determinant) except *: + """ + inverse_cholesky(self, determinant) + + If the model has converged to a steady-state, this is a NOOP and simply + returns the determinant that was passed in. + """ + cdef: + int info + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + + if not kfilter.converged: + # Perform the Cholesky decomposition and get the determinant + determinant = {{prefix}}factorize_lu(kfilter, model, determinant) + + # Continue taking the inverse + lapack.{{prefix}}getri(&model._k_endog, kfilter._forecast_error_fac, &kfilter.k_endog, + kfilter._forecast_error_ipiv, kfilter._forecast_error_work, &kfilter.ldwork, &info) + + # Get `tmp2` and `tmp3` via matrix multiplications + + # `tmp2` array used here, dimension $(p \times 1)$ + # $\\#_2 = F_t^{-1} v_t$ + blas.{{prefix}}gemv("N", &model._k_endog, &model._k_endog, + &alpha, kfilter._forecast_error_fac, &kfilter.k_endog, + kfilter._forecast_error, &inc, + &beta, kfilter._tmp2, &inc) + + # `tmp3` array used here, dimension $(p \times m)$ + # $\\#_3 = F_t^{-1} Z_t$ + blas.{{prefix}}gemm("N", "N", &model._k_endog, &model._k_states, &model._k_endog, + &alpha, kfilter._forecast_error_fac, &kfilter.k_endog, + model._design, &model._k_endog, + &beta, kfilter._tmp3, &kfilter.k_endog) + + if not (kfilter.conserve_memory & MEMORY_NO_SMOOTHING > 0): + # `tmp4` array used here, dimension $(p \times p)$ + # $\\#_4 = F_t^{-1} H_t$ + blas.{{prefix}}gemm("N", "N", &model._k_endog, &model._k_endog, &model._k_endog, + &alpha, kfilter._forecast_error_fac, &kfilter.k_endog, + model._obs_cov, &model._k_endog, + &beta, kfilter._tmp4, &kfilter.k_endog) + + return determinant + +cdef {{cython_type}} {{prefix}}solve_cholesky({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, {{cython_type}} determinant) except *: + """ + solve_cholesky(self, determinant) + + If the model has converged to a steady-state, this is a NOOP and simply + returns the determinant that was passed in. + """ + cdef: + int info, i, j + int inc = 1 + + if not kfilter.converged: + # Perform the Cholesky decomposition and get the determinant + determinant = {{prefix}}factorize_cholesky(kfilter, model, determinant) + + # Use the Cholesky factor to get standardized forecast errors, if desired + # (in the notation of DK, kfilter._forecast_error_fac holds L_t', and + # we want to solve the equation L_t' v_t^s = v_t) + if not (kfilter.conserve_memory & MEMORY_NO_STD_FORECAST > 0): + blas.{{prefix}}copy(&kfilter.k_endog, kfilter._forecast_error, &inc, kfilter._standardized_forecast_error, &inc) + lapack.{{prefix}}trtrs("U", "T", "N", &model._k_endog, &inc, + kfilter._forecast_error_fac, &kfilter.k_endog, + kfilter._standardized_forecast_error, &kfilter.k_endog, &info) + + if info != 0: + raise np.linalg.LinAlgError('Error computing standardized' + ' forecast error at period %d' + % kfilter.t) + + # Solve the linear systems + # `tmp2` array used here, dimension $(p \times 1)$ + # $F_t \\#_2 = v_t$ + blas.{{prefix}}copy(&kfilter.k_endog, kfilter._forecast_error, &inc, kfilter._tmp2, &inc) + lapack.{{prefix}}potrs("U", &model._k_endog, &inc, kfilter._forecast_error_fac, &kfilter.k_endog, kfilter._tmp2, &kfilter.k_endog, &info) + + # `tmp3` array used here, dimension $(p \times m)$ + # $F_t \\#_3 = Z_t$ + if model._k_states == model.k_states and model._k_endog == model.k_endog: + blas.{{prefix}}copy(&kfilter.k_endogstates, model._design, &inc, kfilter._tmp3, &inc) + else: + for i in range(model._k_states): # columns + for j in range(model._k_endog): # rows + kfilter._tmp3[j + i*kfilter.k_endog] = model._design[j + i*model._k_endog] + lapack.{{prefix}}potrs("U", &model._k_endog, &model._k_states, kfilter._forecast_error_fac, &kfilter.k_endog, kfilter._tmp3, &kfilter.k_endog, &info) + + if not (kfilter.conserve_memory & MEMORY_NO_SMOOTHING > 0): + # `tmp4` array used here, dimension $(p \times p)$ + # $F_t \\#_4 = H_t$ + if model._k_states == model.k_states and model._k_endog == model.k_endog: + blas.{{prefix}}copy(&kfilter.k_endog2, model._obs_cov, &inc, kfilter._tmp4, &inc) + else: + for i in range(model._k_endog): # columns + for j in range(model._k_endog): # rows + kfilter._tmp4[j + i*kfilter.k_endog] = model._obs_cov[j + i*model._k_endog] + lapack.{{prefix}}potrs("U", &model._k_endog, &model._k_endog, kfilter._forecast_error_fac, &kfilter.k_endog, kfilter._tmp4, &kfilter.k_endog, &info) + + return determinant + +cdef {{cython_type}} {{prefix}}solve_lu({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, {{cython_type}} determinant) except *: + """ + inverse_cholesky(self, determinant) + + If the model has converged to a steady-state, this is a NOOP and simply + returns the determinant that was passed in. + """ + cdef: + int info + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + + if not kfilter.converged: + # Perform the Cholesky decomposition and get the determinant + determinant = {{prefix}}factorize_lu(kfilter, model, determinant) + + # Solve the linear systems + # `tmp2` array used here, dimension $(p \times 1)$ + # $F_t \\#_2 = v_t$ + blas.{{prefix}}copy(&kfilter.k_endog, kfilter._forecast_error, &inc, kfilter._tmp2, &inc) + lapack.{{prefix}}getrs("N", &model._k_endog, &inc, kfilter._forecast_error_fac, &kfilter.k_endog, + kfilter._forecast_error_ipiv, kfilter._tmp2, &kfilter.k_endog, &info) + + # `tmp3` array used here, dimension $(p \times m)$ + # $F_t \\#_3 = Z_t$ + if model._k_states == model.k_states and model._k_endog == model.k_endog: + blas.{{prefix}}copy(&kfilter.k_endogstates, model._design, &inc, kfilter._tmp3, &inc) + else: + for i in range(model._k_states): # columns + for j in range(model._k_endog): # rows + kfilter._tmp3[j + i*kfilter.k_endog] = model._design[j + i*model._k_endog] + lapack.{{prefix}}getrs("N", &model._k_endog, &model._k_states, kfilter._forecast_error_fac, &kfilter.k_endog, + kfilter._forecast_error_ipiv, kfilter._tmp3, &kfilter.k_endog, &info) + + if not (kfilter.conserve_memory & MEMORY_NO_SMOOTHING > 0): + # `tmp4` array used here, dimension $(p \times p)$ + # $F_t \\#_4 = H_t$ + if model._k_states == model.k_states and model._k_endog == model.k_endog: + blas.{{prefix}}copy(&kfilter.k_endog2, model._obs_cov, &inc, kfilter._tmp4, &inc) + else: + for i in range(model._k_endog): # columns + for j in range(model._k_endog): # rows + kfilter._tmp4[j + i*kfilter.k_endog] = model._obs_cov[j + i*model._k_endog] + lapack.{{prefix}}getrs("N", &model._k_endog, &model._k_endog, kfilter._forecast_error_fac, &kfilter.k_endog, + kfilter._forecast_error_ipiv, kfilter._tmp4, &kfilter.k_endog, &info) + + return determinant + +{{endfor}} diff --git a/statsmodels/tsa/statespace/_filters/_univariate.pxd b/statsmodels/tsa/statespace/_filters/_univariate.pxd new file mode 100644 index 0000000..d62c410 --- /dev/null +++ b/statsmodels/tsa/statespace/_filters/_univariate.pxd @@ -0,0 +1,85 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models - Conventional Kalman Filter declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cimport numpy as np +from statsmodels.tsa.statespace._representation cimport ( + sStatespace, dStatespace, cStatespace, zStatespace +) +from statsmodels.tsa.statespace._kalman_filter cimport ( + sKalmanFilter, dKalmanFilter, cKalmanFilter, zKalmanFilter +) + +# Single precision +cdef int sforecast_univariate(sKalmanFilter kfilter, sStatespace model) +cdef int supdating_univariate(sKalmanFilter kfilter, sStatespace model) +cdef int sprediction_univariate(sKalmanFilter kfilter, sStatespace model) +cdef np.float32_t sinverse_noop_univariate(sKalmanFilter kfilter, sStatespace model, np.float32_t determinant) except * +cdef np.float32_t sloglikelihood_univariate(sKalmanFilter kfilter, sStatespace model, np.float32_t determinant) +cdef np.float32_t sscale_univariate(sKalmanFilter kfilter, sStatespace model) + +cdef void sforecast_error(sKalmanFilter kfilter, sStatespace model, int i) +cdef np.float32_t sforecast_error_cov(sKalmanFilter kfilter, sStatespace model, int i) +cdef void stemp_arrays(sKalmanFilter kfilter, sStatespace model, int i, np.float32_t forecast_error_cov_inv) +cdef void sfiltered_state(sKalmanFilter kfilter, sStatespace model, int i, np.float32_t forecast_error_cov_inv) +cdef void sfiltered_state_cov(sKalmanFilter kfilter, sStatespace model, int i, np.float32_t forecast_error_cov_inv) +cdef void spredicted_state(sKalmanFilter kfilter, sStatespace model) +cdef void spredicted_state_cov(sKalmanFilter kfilter, sStatespace model) +cdef void sloglikelihood(sKalmanFilter kfilter, sStatespace model, int i, np.float32_t forecast_error_cov, np.float32_t forecast_error_cov_inv) + +# Double precision +cdef int dforecast_univariate(dKalmanFilter kfilter, dStatespace model) +cdef int dupdating_univariate(dKalmanFilter kfilter, dStatespace model) +cdef int dprediction_univariate(dKalmanFilter kfilter, dStatespace model) +cdef np.float64_t dinverse_noop_univariate(dKalmanFilter kfilter, dStatespace model, np.float64_t determinant) except * +cdef np.float64_t dloglikelihood_univariate(dKalmanFilter kfilter, dStatespace model, np.float64_t determinant) +cdef np.float64_t dscale_univariate(dKalmanFilter kfilter, dStatespace model) + +cdef void dforecast_error(dKalmanFilter kfilter, dStatespace model, int i) +cdef np.float64_t dforecast_error_cov(dKalmanFilter kfilter, dStatespace model, int i) +cdef void dtemp_arrays(dKalmanFilter kfilter, dStatespace model, int i, np.float64_t forecast_error_cov_inv) +cdef void dfiltered_state(dKalmanFilter kfilter, dStatespace model, int i, np.float64_t forecast_error_cov_inv) +cdef void dfiltered_state_cov(dKalmanFilter kfilter, dStatespace model, int i, np.float64_t forecast_error_cov_inv) +cdef void dpredicted_state(dKalmanFilter kfilter, dStatespace model) +cdef void dpredicted_state_cov(dKalmanFilter kfilter, dStatespace model) +cdef void dloglikelihood(dKalmanFilter kfilter, dStatespace model, int i, np.float64_t forecast_error_cov, np.float64_t forecast_error_cov_inv) + +# Single precision complex +cdef int cforecast_univariate(cKalmanFilter kfilter, cStatespace model) +cdef int cupdating_univariate(cKalmanFilter kfilter, cStatespace model) +cdef int cprediction_univariate(cKalmanFilter kfilter, cStatespace model) +cdef np.complex64_t cinverse_noop_univariate(cKalmanFilter kfilter, cStatespace model, np.complex64_t determinant) except * +cdef np.complex64_t cloglikelihood_univariate(cKalmanFilter kfilter, cStatespace model, np.complex64_t determinant) +cdef np.complex64_t cscale_univariate(cKalmanFilter kfilter, cStatespace model) + +cdef void cforecast_error(cKalmanFilter kfilter, cStatespace model, int i) +cdef np.complex64_t cforecast_error_cov(cKalmanFilter kfilter, cStatespace model, int i) +cdef void ctemp_arrays(cKalmanFilter kfilter, cStatespace model, int i, np.complex64_t forecast_error_cov_inv) +cdef void cfiltered_state(cKalmanFilter kfilter, cStatespace model, int i, np.complex64_t forecast_error_cov_inv) +cdef void cfiltered_state_cov(cKalmanFilter kfilter, cStatespace model, int i, np.complex64_t forecast_error_cov_inv) +cdef void cpredicted_state(cKalmanFilter kfilter, cStatespace model) +cdef void cpredicted_state_cov(cKalmanFilter kfilter, cStatespace model) +cdef void cloglikelihood(cKalmanFilter kfilter, cStatespace model, int i, np.complex64_t forecast_error_cov, np.complex64_t forecast_error_cov_inv) + +# Double precision complex +cdef int zforecast_univariate(zKalmanFilter kfilter, zStatespace model) +cdef int zupdating_univariate(zKalmanFilter kfilter, zStatespace model) +cdef int zprediction_univariate(zKalmanFilter kfilter, zStatespace model) +cdef np.complex128_t zinverse_noop_univariate(zKalmanFilter kfilter, zStatespace model, np.complex128_t determinant) except * +cdef np.complex128_t zloglikelihood_univariate(zKalmanFilter kfilter, zStatespace model, np.complex128_t determinant) +cdef np.complex128_t zscale_univariate(zKalmanFilter kfilter, zStatespace model) + +cdef void zforecast_error(zKalmanFilter kfilter, zStatespace model, int i) +cdef np.complex128_t zforecast_error_cov(zKalmanFilter kfilter, zStatespace model, int i) +cdef void ztemp_arrays(zKalmanFilter kfilter, zStatespace model, int i, np.complex128_t forecast_error_cov_inv) +cdef void zfiltered_state(zKalmanFilter kfilter, zStatespace model, int i, np.complex128_t forecast_error_cov_inv) +cdef void zfiltered_state_cov(zKalmanFilter kfilter, zStatespace model, int i, np.complex128_t forecast_error_cov_inv) +cdef void zpredicted_state(zKalmanFilter kfilter, zStatespace model) +cdef void zpredicted_state_cov(zKalmanFilter kfilter, zStatespace model) +cdef void zloglikelihood(zKalmanFilter kfilter, zStatespace model, int i, np.complex128_t forecast_error_cov, np.complex128_t forecast_error_cov_inv) diff --git a/statsmodels/tsa/statespace/_filters/_univariate.pyx.in b/statsmodels/tsa/statespace/_filters/_univariate.pyx.in new file mode 100644 index 0000000..9d0e1ce --- /dev/null +++ b/statsmodels/tsa/statespace/_filters/_univariate.pyx.in @@ -0,0 +1,451 @@ +#cython: profile=False +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# Typical imports +cimport numpy as np +import numpy as np +from statsmodels.src.math cimport * +cimport scipy.linalg.cython_blas as blas +cimport scipy.linalg.cython_lapack as lapack + +from statsmodels.tsa.statespace._kalman_filter cimport ( + MEMORY_NO_LIKELIHOOD, MEMORY_NO_STD_FORECAST, FILTER_CONCENTRATED) + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +combined_suffix = '' +if combined_prefix == 'z': + combined_suffix = 'u' +}} + +# ### Univariate Kalman filter +# +# The following are the routines as defined in the univariate Kalman filter. +# +# See Durbin and Koopman (2012) Chapter 6.4 + +cdef int {{prefix}}forecast_univariate({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + + # Constants + cdef: + int i, j, k + int inc = 1 + {{cython_type}} forecast_error_cov + {{cython_type}} forecast_error_cov_inv + + # Initialize the filtered states + blas.{{prefix}}copy(&kfilter.k_states, kfilter._input_state, &inc, + kfilter._filtered_state, &inc) + if not kfilter.converged: + blas.{{prefix}}copy(&kfilter.k_states2, kfilter._input_state_cov, &inc, + kfilter._filtered_state_cov, &inc) + + # Make sure the loglikelihood is set to zero if necessary + + # Iterate over the observations at time t + for i in range(model._k_endog): + + # #### Forecast for time t + # `forecast` $= Z_{t,i} a_{t,i} + d_{t,i}$ + # Note: $Z_{t,i}$ is a row vector starting at [i,0,t] and ending at + # [i,k_states,t] + # Note: zdot and cdot are broken, so have to use gemv for those + + # #### Forecast error for time t + # `forecast_error` $\equiv v_t = y_t -$ `forecast` + {{prefix}}forecast_error(kfilter, model, i) + + # #### Forecast error covariance matrix for time t + # $F_{t,i} \equiv Z_{t,i} P_{t,i} Z_{t,i}' + H_{t,i}$ + # TODO what about Kalman convergence? + # Note: zdot and cdot are broken, so have to use gemv for those + if not kfilter.converged: + forecast_error_cov = {{prefix}}forecast_error_cov(kfilter, model, i) + else: + forecast_error_cov = kfilter._forecast_error_cov[i + i*kfilter.k_endog] + + # Handle numerical issues that can cause a very small negative + # forecast_error_cov + if forecast_error_cov{{if combined_prefix == 'z'}}.real{{endif}} < 0: + kfilter._forecast_error_cov[i + i*kfilter.k_endog] = 0 + forecast_error_cov = 0 + + # If we have a non-zero variance + # (if we have a zero-variance then we are done with this iteration) + if forecast_error_cov{{if combined_prefix == 'z'}}.real{{endif}} > kfilter.tolerance_diffuse: + forecast_error_cov_inv = 1.0 / forecast_error_cov + if not (kfilter.conserve_memory & MEMORY_NO_STD_FORECAST > 0): + kfilter._standardized_forecast_error[i] = ( + kfilter._forecast_error[i] * forecast_error_cov_inv**0.5) + + # Save temporary array data + {{prefix}}temp_arrays(kfilter, model, i, forecast_error_cov_inv) + + # #### Filtered state for time t + # $a_{t,i+1} = a_{t,i} + P_{t,i} Z_{t,i}' F_{t,i}^{-1} v_{t,i}$ + # Make a new temporary array + # K_{t,i} = P_{t,i} Z_{t,i}' F_{t,i}^{-1} + {{prefix}}filtered_state(kfilter, model, i, forecast_error_cov_inv) + + # #### Filtered state covariance for time t + # $P_{t,i+1} = P_{t,i} - P_{t,i} Z_{t,i}' F_{t,i}^{-1} Z_{t,i} P_{t,i}'$ + if not kfilter.converged: + {{prefix}}filtered_state_cov(kfilter, model, i, forecast_error_cov_inv) + + # #### Loglikelihood + {{prefix}}loglikelihood(kfilter, model, i, forecast_error_cov, forecast_error_cov_inv) + else: + # Otherwise, we need to record that this observation is not associated + # with a loglikelihood step (so that it can be excluded in the denominator + # when computing the scale) + kfilter.nobs_kendog_univariate_singular = kfilter.nobs_kendog_univariate_singular + 1 + + # Make final filtered_state_cov symmetric (is not currently symmetric + # due to use of ?syr or ?her) + if not kfilter.converged: + for j in range(model._k_states): # columns + for k in range(model._k_states): # rows + if k > j: # row > column => in lower triangle + kfilter._filtered_state_cov[j + k*kfilter.k_states] = kfilter._filtered_state_cov[k + j*kfilter.k_states] + + return 0 + +cdef void {{prefix}}forecast_error({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, int i): + cdef: + int inc = 1 + {{cython_type}} alpha = 1 + {{cython_type}} beta = 0 + int k_states = model._k_states + # Adjust for a VAR transition (i.e. design = [#, 0], where the zeros + # correspond to all states except the first k_posdef states) + if model.subset_design: + k_states = model._k_posdef + + # `forecast` $= Z_{t,i} a_{t,i} + d_{t,i}$ + {{if combined_prefix == 'd'}} + kfilter._forecast[i] = ( + model._obs_intercept[i] + + blas.{{prefix}}dot(&k_states, &model._design[i], &model._k_endog, + kfilter._filtered_state, &inc) + ) + {{else}} + blas.{{prefix}}gemv("N", &inc, &k_states, + &alpha, kfilter._filtered_state, &inc, + &model._design[i], &model._k_endog, + &beta, kfilter._tmp0, &inc) + kfilter._forecast[i] = model._obs_intercept[i] + kfilter._tmp0[0] + {{endif}} + + # `forecast_error` $\equiv v_t = y_t -$ `forecast` + kfilter._forecast_error[i] = model._obs[i] - kfilter._forecast[i] + +cdef {{cython_type}} {{prefix}}forecast_error_cov({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, int i): + cdef: + int inc = 1 + {{cython_type}} alpha = 1 + {{cython_type}} beta = 0 + {{cython_type}} forecast_error_cov + int k_states = model._k_states + + # Adjust for a VAR transition (i.e. design = [#, 0], where the zeros + # correspond to all states except the first k_posdef states) + if model.subset_design: + k_states = model._k_posdef + + # *Intermediate calculation* (used just below and then once more) + # $M_{t,i} = P_{t,i} Z_{t,i}'$ + # $(m \times 1) = (m \times m) (1 \times m)'$ + blas.{{prefix}}gemv("N", &model._k_states, &k_states, + &alpha, kfilter._filtered_state_cov, &kfilter.k_states, + &model._design[i], &model._k_endog, + &beta, &kfilter._M[i*kfilter.k_states], &inc) + + # $F_{t,i} \equiv Z_{t,i} P_{t,i} Z_{t,i}' + H_{t,i}$ + {{if combined_prefix == 'd'}} + # blas.{{prefix}}symv("U", &model._k_states, + # &alpha, kfilter._filtered_state_cov, &kfilter.k_states, + # &model._design[i], &model._k_endog, + # &beta, &kfilter._M[i*kfilter.k_states], &inc) + + forecast_error_cov = ( + model._obs_cov[i + i*model._k_endog] + + blas.{{prefix}}dot(&k_states, &model._design[i], &model._k_endog, + &kfilter._M[i*kfilter.k_states], &inc) + ) + {{else}} + # blas.{{prefix}}gemv("N", &model._k_states, &k_states, + # &alpha, kfilter._filtered_state_cov, &kfilter.k_states, + # &model._design[i], &model._k_endog, + # &beta, &kfilter._M[i*kfilter.k_states], &inc) + + blas.{{prefix}}gemv("N", &inc, &k_states, + &alpha, &kfilter._M[i*kfilter.k_states], &inc, + &model._design[i], &model._k_endog, + &beta, kfilter._tmp0, &inc) + forecast_error_cov = model._obs_cov[i + i*model._k_endog] + kfilter._tmp0[0] + {{endif}} + kfilter._forecast_error_cov[i + i*kfilter.k_endog] = forecast_error_cov + return forecast_error_cov + +cdef void {{prefix}}temp_arrays({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, int i, {{cython_type}} forecast_error_cov_inv): + cdef: + int k_states = model._k_states + + # Adjust for a VAR transition (i.e. design = [#, 0], where the zeros + # correspond to all states except the first k_posdef states) + if model.subset_design: + k_states = model._k_posdef + + # $\\#_1 = P_{t,i} Z_{t,i}'$ - set above + # $\\#_2 = v_{t,i} / F_{t,i}$ + kfilter._tmp2[i] = kfilter._forecast_error[i] * forecast_error_cov_inv + # $\\#_3 = Z_{t,i} / F_{t,i}$ + blas.{{prefix}}copy(&k_states, &model._design[i], &model._k_endog, + &kfilter._tmp3[i], &kfilter.k_endog) + blas.{{prefix}}scal(&k_states, &forecast_error_cov_inv, &kfilter._tmp3[i], &kfilter.k_endog) + # $\\#_4 = H_{t,i} / F_{t,i}$ + kfilter._tmp4[i + i*kfilter.k_endog] = model._obs_cov[i + i*model._k_endog] * forecast_error_cov_inv + +cdef void {{prefix}}filtered_state({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, int i, {{cython_type}} forecast_error_cov_inv): + cdef int j + # $a_{t,i+1} = a_{t,i} + P_{t,i} Z_{t,i}' F_{t,i}^{-1} v_{t,i}$ + for j in range(model._k_states): + if not kfilter.converged: + kfilter._kalman_gain[j + i*kfilter.k_states] = kfilter._M[j + i*kfilter.k_states] * forecast_error_cov_inv + kfilter._filtered_state[j] = ( + kfilter._filtered_state[j] + + kfilter._forecast_error[i] * kfilter._kalman_gain[j + i*kfilter.k_states] + ) + +cdef void {{prefix}}filtered_state_cov({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, int i, {{cython_type}} forecast_error_cov_inv): + cdef: + int inc = 1, j, k + {{cython_type}} scalar = -1.0 * forecast_error_cov_inv + {{cython_type}} alpha = 1.0 + {{cython_type}} gamma = -1.0 + int k_states = model._k_states + int k_states1 = model._k_states + + # Adjust for a VAR transition (i.e. design = [#, 0], where the zeros + # correspond to all states except the first k_posdef states) + if model.subset_design: + k_states = model._k_posdef + if model._k_posdef > model._k_states: + k_states1 = model._k_posdef + 1 + + # $P_{t,i+1} = P_{t,i} - P_{t,i} Z_{t,i}' F_{t,i}^{-1} Z_{t,i} P_{t,i}'$ + # blas.{{prefix}}ger{{combined_suffix}}(&model._k_states, &model._k_states, + # &gamma, &kfilter._M[i*kfilter.k_states], &inc, + # &kfilter._kalman_gain[i*kfilter.k_states], &inc, + # kfilter._filtered_state_cov, &kfilter.k_states + # ) + + {{if combined_prefix == 'd'}} + blas.{{prefix}}syr("L", &model._k_states, + &scalar, &kfilter._M[i*kfilter.k_states], &inc, + kfilter._filtered_state_cov, &kfilter.k_states + ) + {{else}} + blas.{{prefix}}syrk("L", "N", &model._k_states, &inc, + &scalar, &kfilter._M[i*kfilter.k_states], &kfilter.k_states, + &alpha, kfilter._filtered_state_cov, &kfilter.k_states) + {{endif}} + + # The ?syr or ?her call fills in the lower triangle. Eventually (see the + # end of `forecast_univariate`) we need to fill in the entire upper + # triangle, but for the intermediate P_{t,i} calculations, we just need + # to make sure we have the right values for the first k_states columns, + # and since the lower triangle is already filled in correctly, we only + # need to worry about the small upper left portion of the upper triangle. + for j in range(k_states): # columns + for k in range(k_states1): # rows + if k > j: # row > column => in lower triangle + kfilter._filtered_state_cov[j + k*kfilter.k_states] = kfilter._filtered_state_cov[k + j*kfilter.k_states] + +cdef void {{prefix}}loglikelihood({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, int i, {{cython_type}} forecast_error_cov, {{cython_type}} forecast_error_cov_inv): + kfilter._loglikelihood[0] = ( + kfilter._loglikelihood[0] - 0.5*( + {{combined_prefix}}log(2 * NPY_PI * forecast_error_cov) + ) + ) + if kfilter.filter_method & FILTER_CONCENTRATED: + kfilter._scale[0] = kfilter._scale[0] + kfilter._forecast_error[i]**2 * forecast_error_cov_inv + else: + kfilter._loglikelihood[0] = kfilter._loglikelihood[0] - 0.5 * (kfilter._forecast_error[i]**2 * forecast_error_cov_inv) + +cdef int {{prefix}}updating_univariate({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + # the updating step was performed in the forecast_univariate step + return 0 + +cdef int {{prefix}}prediction_univariate({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + # Constants + cdef: + int inc = 1 + int i, j + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + # #### Predicted state for time t+1 + # $a_{t+1} = T_t a_{t,n} + c_t$ + + # #### Predicted state covariance matrix for time t+1 + # $P_{t+1} = T_t P_{t,n} T_t' + Q_t^*$ + # + # TODO check behavior during convergence + if not model.companion_transition: + {{prefix}}predicted_state(kfilter, model) + if not kfilter.converged: + {{prefix}}predicted_state_cov(kfilter, model) + else: + {{prefix}}companion_predicted_state(kfilter, model) + if not kfilter.converged: + {{prefix}}companion_predicted_state_cov(kfilter, model) + + # #### Kalman gain for time t + # $K_t = T_t P_t Z_t' F_t^{-1}$ + # Kalman gain calculation done in forecasting step. + + return 0 + +cdef void {{prefix}}predicted_state({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + + # $a_{t+1} = T_t a_{t,n} + c_t$ + blas.{{prefix}}copy(&model._k_states, model._state_intercept, &inc, kfilter._predicted_state, &inc) + blas.{{prefix}}gemv("N", &model._k_states, &model._k_states, + &alpha, model._transition, &model._k_states, + kfilter._filtered_state, &inc, + &alpha, kfilter._predicted_state, &inc) + +cdef void {{prefix}}predicted_state_cov({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + + # $P_{t+1} = T_t P_{t,n} T_t' + Q_t^*$ + blas.{{prefix}}copy(&model._k_states2, model._selected_state_cov, &inc, kfilter._predicted_state_cov, &inc) + # `tmp0` array used here, dimension $(m \times m)$ + + # $\\#_0 = T_t P_{t|t} $ + + # $(m \times m) = (m \times m) (m \times m)$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, model._transition, &model._k_states, + kfilter._filtered_state_cov, &kfilter.k_states, + &beta, kfilter._tmp0, &kfilter.k_states) + # $P_{t+1} = 1.0 \\#_0 T_t' + 1.0 \\#$ + # $(m \times m) = (m \times m) (m \times m) + (m \times m)$ + blas.{{prefix}}gemm("N", "T", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._tmp0, &kfilter.k_states, + model._transition, &model._k_states, + &alpha, kfilter._predicted_state_cov, &kfilter.k_states) + +cdef void {{prefix}}companion_predicted_state({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef: + int i + int inc = 1 + {{cython_type}} alpha = 1.0 + + # $a_{t+1} = T_t a_{t,n} + c_t$ + blas.{{prefix}}copy(&model._k_states, model._state_intercept, &inc, kfilter._predicted_state, &inc) + blas.{{prefix}}gemv("N", &model._k_posdef, &model._k_states, + &alpha, model._transition, &model._k_states, + kfilter._filtered_state, &inc, + &alpha, kfilter._predicted_state, &inc) + + for i in range(model._k_posdef, model._k_states): + kfilter._predicted_state[i] = kfilter._predicted_state[i] + kfilter._filtered_state[i - model._k_posdef] + +cdef void {{prefix}}companion_predicted_state_cov({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef: + int i, j, idx + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} tmp + + # $P_{t+1} = T_t P_{t,n} T_t' + Q_t^*$ + + # `tmp0` array used here, dimension $(p \times m)$ + # $\\#_0 = \phi_t P_{t|t} $ + + # $(p \times m) = (p \times m) (m \times m)$ + blas.{{prefix}}gemm("N", "N", &model._k_posdef, &model._k_states, &model._k_states, + &alpha, model._transition, &model._k_states, + kfilter._filtered_state_cov, &kfilter.k_states, + &beta, kfilter._tmp0, &kfilter.k_states) + + # $P_{t+1} = 1.0 \\#_0 \phi_t' + 1.0 \\#$ + # $(m \times m) = (p \times m) (m \times p) + (m \times m)$ + blas.{{prefix}}gemm("N", "T", &model._k_posdef, &model._k_posdef, &model._k_states, + &alpha, kfilter._tmp0, &kfilter.k_states, + model._transition, &model._k_states, + &beta, kfilter._predicted_state_cov, &kfilter.k_states) + + # Fill in the basic matrix blocks + for i in range(kfilter.k_states): # columns + for j in range(kfilter.k_states): # rows + idx = j + i*kfilter.k_states + + # Add the Q matrix to the upper-left block + if i < model._k_posdef and j < model._k_posdef: + kfilter._predicted_state_cov[idx] = ( + kfilter._predicted_state_cov[idx] + + model._state_cov[j + i*model._k_posdef] + ) + + # Set the upper-right block to be the first m-p columns of + # \phi _t P_{t|t}, and the lower-left block to the its transpose + elif i >= model._k_posdef and j < model._k_posdef: + tmp = kfilter._tmp0[j + (i-model._k_posdef)*kfilter.k_states] + kfilter._predicted_state_cov[idx] = tmp + kfilter._predicted_state_cov[i + j*model._k_states] = tmp + + # Set the lower-right block + elif i >= model._k_posdef and j >= model._k_posdef: + kfilter._predicted_state_cov[idx] = ( + kfilter._filtered_state_cov[(j - model._k_posdef) + (i - model._k_posdef)*kfilter.k_states] + ) + +cdef {{cython_type}} {{prefix}}inverse_noop_univariate({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, {{cython_type}} determinant) except *: + return 0 + +cdef {{cython_type}} {{prefix}}loglikelihood_univariate({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, {{cython_type}} determinant): + return 0 + +cdef {{cython_type}} {{prefix}}scale_univariate({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + return 0 + +{{endfor}} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/_filters/_univariate_diffuse.pxd b/statsmodels/tsa/statespace/_filters/_univariate_diffuse.pxd new file mode 100644 index 0000000..c9b9364 --- /dev/null +++ b/statsmodels/tsa/statespace/_filters/_univariate_diffuse.pxd @@ -0,0 +1,57 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models - Conventional Kalman Filter declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cimport numpy as np +from statsmodels.tsa.statespace._representation cimport ( + sStatespace, dStatespace, cStatespace, zStatespace +) +from statsmodels.tsa.statespace._kalman_filter cimport ( + sKalmanFilter, dKalmanFilter, cKalmanFilter, zKalmanFilter +) + +# Single precision +cdef int sforecast_univariate_diffuse(sKalmanFilter kfilter, sStatespace model) +cdef int supdating_univariate_diffuse(sKalmanFilter kfilter, sStatespace model) +cdef int sprediction_univariate_diffuse(sKalmanFilter kfilter, sStatespace model) +cdef np.float32_t sinverse_noop_univariate_diffuse(sKalmanFilter kfilter, sStatespace model, np.float32_t determinant) except * +cdef np.float32_t sloglikelihood_univariate_diffuse(sKalmanFilter kfilter, sStatespace model, np.float32_t determinant) + +cdef np.float32_t sforecast_error_diffuse_cov(sKalmanFilter kfilter, sStatespace model, int i) +cdef void spredicted_diffuse_state_cov(sKalmanFilter kfilter, sStatespace model) + +# Double precision +cdef int dforecast_univariate_diffuse(dKalmanFilter kfilter, dStatespace model) +cdef int dupdating_univariate_diffuse(dKalmanFilter kfilter, dStatespace model) +cdef int dprediction_univariate_diffuse(dKalmanFilter kfilter, dStatespace model) +cdef np.float64_t dinverse_noop_univariate_diffuse(dKalmanFilter kfilter, dStatespace model, np.float64_t determinant) except * +cdef np.float64_t dloglikelihood_univariate_diffuse(dKalmanFilter kfilter, dStatespace model, np.float64_t determinant) + +cdef np.float64_t dforecast_error_diffuse_cov(dKalmanFilter kfilter, dStatespace model, int i) +cdef void dpredicted_diffuse_state_cov(dKalmanFilter kfilter, dStatespace model) + +# Single precision complex +cdef int cforecast_univariate_diffuse(cKalmanFilter kfilter, cStatespace model) +cdef int cupdating_univariate_diffuse(cKalmanFilter kfilter, cStatespace model) +cdef int cprediction_univariate_diffuse(cKalmanFilter kfilter, cStatespace model) +cdef np.complex64_t cinverse_noop_univariate_diffuse(cKalmanFilter kfilter, cStatespace model, np.complex64_t determinant) except * +cdef np.complex64_t cloglikelihood_univariate_diffuse(cKalmanFilter kfilter, cStatespace model, np.complex64_t determinant) + +cdef np.complex64_t cforecast_error_diffuse_cov(cKalmanFilter kfilter, cStatespace model, int i) +cdef void cpredicted_diffuse_state_cov(cKalmanFilter kfilter, cStatespace model) + +# Double precision complex +cdef int zforecast_univariate_diffuse(zKalmanFilter kfilter, zStatespace model) +cdef int zupdating_univariate_diffuse(zKalmanFilter kfilter, zStatespace model) +cdef int zprediction_univariate_diffuse(zKalmanFilter kfilter, zStatespace model) +cdef np.complex128_t zinverse_noop_univariate_diffuse(zKalmanFilter kfilter, zStatespace model, np.complex128_t determinant) except * +cdef np.complex128_t zloglikelihood_univariate_diffuse(zKalmanFilter kfilter, zStatespace model, np.complex128_t determinant) + +cdef np.complex128_t zforecast_error_diffuse_cov(zKalmanFilter kfilter, zStatespace model, int i) +cdef void zpredicted_diffuse_state_cov(zKalmanFilter kfilter, zStatespace model) diff --git a/statsmodels/tsa/statespace/_filters/_univariate_diffuse.pyx.in b/statsmodels/tsa/statespace/_filters/_univariate_diffuse.pyx.in new file mode 100644 index 0000000..b77f138 --- /dev/null +++ b/statsmodels/tsa/statespace/_filters/_univariate_diffuse.pyx.in @@ -0,0 +1,298 @@ +#cython: profile=False +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# Typical imports +cimport numpy as np +import numpy as np +from statsmodels.src.math cimport * +cimport scipy.linalg.cython_blas as blas +cimport scipy.linalg.cython_lapack as lapack + +from statsmodels.tsa.statespace._kalman_filter cimport ( + FILTER_CONCENTRATED, MEMORY_NO_LIKELIHOOD, MEMORY_NO_STD_FORECAST) + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +combined_suffix = '' +if combined_prefix == 'z': + combined_suffix = 'u' +}} + +from statsmodels.tsa.statespace._filters._univariate cimport ( + {{prefix}}forecast_error, {{prefix}}forecast_error_cov, + {{prefix}}temp_arrays, {{prefix}}predicted_state, {{prefix}}predicted_state_cov) + +# ### Univariate Kalman filter +# +# The following are the routines as defined in the univariate Kalman filter. +# +# See Durbin and Koopman (2012) Chapter 6.4 + +cdef int {{prefix}}forecast_univariate_diffuse({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + # Constants + cdef: + int i, j, k + int inc = 1 + {{cython_type}} forecast_error_cov, forecast_error_cov_inv, forecast_error_diffuse_cov, forecast_error_diffuse_cov_inv, F1, F12 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + # Initialize the filtered states + blas.{{prefix}}copy(&kfilter.k_states, kfilter._input_state, &inc, + kfilter._filtered_state, &inc) + blas.{{prefix}}copy(&kfilter.k_states2, kfilter._input_state_cov, &inc, + kfilter._filtered_state_cov, &inc) + blas.{{prefix}}copy(&kfilter.k_states2, kfilter._input_diffuse_state_cov, &inc, + kfilter._predicted_diffuse_state_cov, &inc) + + # Iterate over endogenous variables + for i in range(model._k_endog): + # forecast_t, v_t, + {{prefix}}forecast_error(kfilter, model, i) + + # F_{*,t} + forecast_error_cov = {{prefix}}forecast_error_cov(kfilter, model, i) + if forecast_error_cov{{if combined_prefix == 'z'}}.real{{endif}} < 0: + kfilter._forecast_error_cov[i + i*kfilter.k_endog] = 0 + forecast_error_cov = 0 + + # Save temporary array data + if not forecast_error_cov == 0: + forecast_error_cov_inv = 1.0 / forecast_error_cov + {{prefix}}temp_arrays(kfilter, model, i, forecast_error_cov_inv) + + # F_{\infty,t} + forecast_error_diffuse_cov = {{prefix}}forecast_error_diffuse_cov(kfilter, model, i) + if forecast_error_diffuse_cov{{if combined_prefix == 'z'}}.real{{endif}} < 0: + kfilter._forecast_error_diffuse_cov[i + i*kfilter.k_endog] = 0 + forecast_error_diffuse_cov = 0 + + # F_{\infty, i, i, t} > 0 + if forecast_error_diffuse_cov{{if combined_prefix == 'z'}}.real{{endif}} > kfilter.tolerance_diffuse: + forecast_error_diffuse_cov_inv = 1.0 / forecast_error_diffuse_cov + + F1 = forecast_error_diffuse_cov_inv + # Usually F2 = -forecast_error_cov * forecast_error_diffuse_cov_inv**2 + # but this version is more convenient for the *axpy call + F12 = -forecast_error_cov * forecast_error_diffuse_cov_inv + + # K0 = M_inf[:, i:i+1] * F1 + blas.{{prefix}}copy(&kfilter.k_states, &kfilter._M_inf[i * kfilter.k_states], &inc, kfilter._tmpK0, &inc) + blas.{{prefix}}scal(&kfilter.k_states, &F1, kfilter._tmpK0, &inc) + # K1 = M[:, i:i+1] * F1 + M_inf[:, i:i+1] * F2 + # K1 = M[:, i:i+1] * F1 + K0 * F12 + blas.{{prefix}}copy(&kfilter.k_states, &kfilter._M[i*kfilter.k_states], &inc, kfilter._tmpK1, &inc) + blas.{{prefix}}scal(&kfilter.k_states, &F1, kfilter._tmpK1, &inc) + blas.{{prefix}}axpy(&kfilter.k_states, &F12, kfilter._tmpK0, &inc, kfilter._tmpK1, &inc) + # L0 = np.eye(m) - np.dot(K0, Zi) + kfilter.tmpL0[:] = 0 + blas.{{prefix}}ger{{combined_suffix}}(&model._k_states, &model._k_states, &gamma, kfilter._tmpK0, &inc, &model._design[i], &model._k_endog, kfilter._tmpL0, &kfilter.k_states) + for j in range(kfilter.k_states): + kfilter._tmpL0[j + j*kfilter.k_states] = kfilter._tmpL0[j + j*kfilter.k_states] + 1 + # L1 = -np.dot(K1, Zi) + kfilter.tmpL1[:] = 0 + blas.{{prefix}}ger{{combined_suffix}}(&model._k_states, &model._k_states, &gamma, kfilter._tmpK1, &inc, &model._design[i], &model._k_endog, kfilter._tmpL1, &kfilter.k_states) + + # a_t = a_t + K0[:, 0] * v[i] + blas.{{prefix}}axpy(&kfilter.k_states, &kfilter._forecast_error[i], kfilter._tmpK0, &inc, kfilter._filtered_state, &inc) + + # P_t = np.dot(P_t_inf, L1.T) + np.dot(P_t, L0.T) + # `tmp0` array used here, dimension $(m \times m)$ + blas.{{prefix}}copy(&kfilter.k_states2, kfilter._filtered_state_cov, &inc, kfilter._tmp0, &inc) + blas.{{prefix}}gemm("N", "T", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._tmp0, &kfilter.k_states, + kfilter._tmpL0, &kfilter.k_states, + &beta, kfilter._filtered_state_cov, &kfilter.k_states) + blas.{{prefix}}gemm("N", "T", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._predicted_diffuse_state_cov, &kfilter.k_states, + kfilter._tmpL1, &kfilter.k_states, + &alpha, kfilter._filtered_state_cov, &kfilter.k_states) + # P_t_inf = np.dot(P_t_inf, L0.T) + blas.{{prefix}}copy(&kfilter.k_states2, kfilter._predicted_diffuse_state_cov, &inc, kfilter._tmp0, &inc) + blas.{{prefix}}gemm("N", "T", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._tmp0, &kfilter.k_states, + kfilter._tmpL0, &kfilter.k_states, + &beta, kfilter._predicted_diffuse_state_cov, &kfilter.k_states) + + # Loglikelihood + kfilter._loglikelihood[0] = ( + kfilter._loglikelihood[0] - 0.5*( + {{combined_prefix}}log(2 * NPY_PI * forecast_error_diffuse_cov))) + elif forecast_error_cov{{if combined_prefix == 'z'}}.real{{endif}} > kfilter.tolerance_diffuse: + kfilter.nobs_kendog_diffuse_nonsingular = kfilter.nobs_kendog_diffuse_nonsingular + 1 + forecast_error_cov_inv = 1.0 / forecast_error_cov + + # K0 = M[:, i:i+1] / F[i, i] + blas.{{prefix}}copy(&kfilter.k_states, &kfilter._M[i*kfilter.k_states], &inc, kfilter._tmpK0, &inc) + blas.{{prefix}}scal(&kfilter.k_states, &forecast_error_cov_inv, kfilter._tmpK0, &inc) + + # L0 = np.eye(m) - np.dot(K0, Zi) + kfilter.tmpL0[:] = 0 + blas.{{prefix}}ger{{combined_suffix}}(&model._k_states, &model._k_states, &gamma, kfilter._tmpK0, &inc, &model._design[i], &model._k_endog, kfilter._tmpL0, &kfilter.k_states) + for j in range(kfilter.k_states): + kfilter._tmpL0[j + j*kfilter.k_states] = kfilter._tmpL0[j + j*kfilter.k_states] + 1 + + # a_t = a_t + K0[:, 0] * v[i] + blas.{{prefix}}axpy(&kfilter.k_states, &kfilter._forecast_error[i], kfilter._tmpK0, &inc, kfilter._filtered_state, &inc) + # P_t = np.dot(P_t, L0) + blas.{{prefix}}copy(&kfilter.k_states2, kfilter._filtered_state_cov, &inc, kfilter._tmp0, &inc) + blas.{{prefix}}gemm("N", "T", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._tmp0, &kfilter.k_states, + kfilter._tmpL0, &kfilter.k_states, + &beta, kfilter._filtered_state_cov, &kfilter.k_states) + # P_t_inf = P_t_inf + # (noop) + + # Loglikelihood + if not forecast_error_cov == 0: + kfilter._loglikelihood[0] = ( + kfilter._loglikelihood[0] - 0.5*( + {{combined_prefix}}log(2 * NPY_PI * forecast_error_cov))) + + if kfilter.filter_method & FILTER_CONCENTRATED: + kfilter._scale[0] = kfilter._scale[0] + kfilter._forecast_error[i]**2 * forecast_error_cov_inv + else: + kfilter._loglikelihood[0] = kfilter._loglikelihood[0] - 0.5 * (kfilter._forecast_error[i]**2 * forecast_error_cov_inv) + + # Kalman gain + blas.{{prefix}}copy(&kfilter.k_states, kfilter._tmpK0, &inc, &kfilter._kalman_gain[i * kfilter.k_states], &inc) + + # Prediction (done below) + # a_t1[:] = np.dot(T, a_tt) + # P_t1[:] = np.dot(np.dot(T, P_tt), T.T) + RQR + # P_t1_inf[:] = np.dot(np.dot(T, P_t_inf), T.T) + + return 0 + + +cdef {{cython_type}} {{prefix}}forecast_error_diffuse_cov({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, int i): + cdef: + int inc = 1 + {{cython_type}} alpha = 1 + {{cython_type}} beta = 0 + {{cython_type}} forecast_error_diffuse_cov + int k_states = model._k_states + + # Adjust for a VAR transition (i.e. design = [#, 0], where the zeros + # correspond to all states except the first k_posdef states) + if model.subset_design: + k_states = model._k_posdef + + # *Intermediate calculation* + # `M_inf` array used here, dimension $(m \times 1)$ + # $M_{i, \infty} = P_{t,i,\infty} Z_{t,i}'$ + # $(m \times 1) = (m \times m) (1 \times m)'$ + blas.{{prefix}}gemv("N", &model._k_states, &model._k_states, + &alpha, kfilter._predicted_diffuse_state_cov, &kfilter.k_states, + &model._design[i], &model._k_endog, + &beta, &kfilter._M_inf[i * kfilter.k_states], &inc) + + # $F_{t,i,\infty} \equiv Z_{t,i} P_{t,i,\infty} Z_{t,i}'$ + {{if combined_prefix == 'd'}} + # blas.{{prefix}}symv("U", &model._k_states, + # &alpha, kfilter._filtered_state_cov, &kfilter.k_states, + # &model._design[i], &model._k_endog, + # &beta, &kfilter._M_inf[i * kfilter.k_states], &inc) + + forecast_error_diffuse_cov = ( + blas.{{prefix}}dot(&k_states, &model._design[i], &model._k_endog, + &kfilter._M_inf[i * kfilter.k_states], &inc) + ) + {{else}} + # blas.{{prefix}}gemv("N", &model._k_states, &k_states, + # &alpha, kfilter._filtered_state_cov, &kfilter.k_states, + # &model._design[i], &model._k_endog, + # &beta, &kfilter._M_inf[i * kfilter.k_states], &inc) + + blas.{{prefix}}gemv("N", &inc, &k_states, + &alpha, &kfilter._M_inf[i * kfilter.k_states], &inc, + &model._design[i], &model._k_endog, + &beta, kfilter._tmp0, &inc) + forecast_error_diffuse_cov = kfilter._tmp0[0] + {{endif}} + kfilter._forecast_error_diffuse_cov[i + i*kfilter.k_endog] = forecast_error_diffuse_cov + return forecast_error_diffuse_cov + + +cdef int {{prefix}}prediction_univariate_diffuse({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + # Constants + cdef: + int inc = 1 + int i, j + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + {{prefix}}predicted_state(kfilter, model) + {{prefix}}predicted_state_cov(kfilter, model) + {{prefix}}predicted_diffuse_state_cov(kfilter, model) + + return 0 + + +cdef void {{prefix}}predicted_diffuse_state_cov({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + + # Need special handling for the completely missing case, since the + # conventional Kalman filter routines are used in this case and they don't + # copy over the predicted diffuse state cov + if model._nmissing == model.k_endog: + blas.{{prefix}}copy(&kfilter.k_states2, kfilter._input_diffuse_state_cov, &inc, + kfilter._predicted_diffuse_state_cov, &inc) + + # P_t1_inf[:] = np.dot(np.dot(T, P_t_inf), T.T) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, model._transition, &model._k_states, + kfilter._predicted_diffuse_state_cov, &kfilter.k_states, + &beta, kfilter._tmp0, &kfilter.k_states) + # $P_{t+1} = 1.0 \\#_0 T_t' + 1.0 \\#$ + # $(m \times m) = (m \times m) (m \times m) + (m \times m)$ + blas.{{prefix}}gemm("N", "T", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._tmp0, &kfilter.k_states, + model._transition, &model._k_states, + &beta, kfilter._predicted_diffuse_state_cov, &kfilter.k_states) + + +# Note: updating, inverse, loglikelihood are all performed in prior steps +cdef int {{prefix}}updating_univariate_diffuse({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + return 0 + +cdef {{cython_type}} {{prefix}}inverse_noop_univariate_diffuse({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, {{cython_type}} determinant) except *: + return 0 + +cdef {{cython_type}} {{prefix}}loglikelihood_univariate_diffuse({{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model, {{cython_type}} determinant): + return 0 + +{{endfor}} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/_initialization.pxd b/statsmodels/tsa/statespace/_initialization.pxd new file mode 100644 index 0000000..fa6a371 --- /dev/null +++ b/statsmodels/tsa/statespace/_initialization.pxd @@ -0,0 +1,111 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models - Initialization declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cimport numpy as np + +from statsmodels.tsa.statespace._representation cimport ( + sStatespace, dStatespace, cStatespace, zStatespace +) + +cdef class sInitialization(object): + cdef readonly int k_states + cdef public np.float64_t approximate_diffuse_variance + + cdef np.float32_t [:] constant + cdef np.float32_t [::1, :] stationary_cov + cdef np.float32_t [::1, :] _tmp_transition + cdef np.float32_t [::1, :] _tmp_selected_state_cov + + cpdef int initialize(self, inititialization_type, int offset, + sStatespace model, + np.float32_t [:] initial_state_mean, + np.float32_t [::1, :] initial_diffuse_state_cov, + np.float32_t [::1, :] initial_stationary_state_cov, + int complex_step=*) except 1 + cdef int clear_constant(self, int offset, np.float32_t [:] initial_state_mean) except 1 + cdef int clear_cov(self, int offset, np.float32_t [::1, :] cov) except 1 + cdef int initialize_known_constant(self, int offset, np.float32_t [:] initial_state_mean) except 1 + cdef int initialize_known_stationary_cov(self, int offset, np.float32_t [::1, :] initial_stationary_state_cov) except 1 + cdef int initialize_diffuse(self, int offset, np.float32_t [::1, :] initial_diffuse_state_cov) except 1 + cdef int initialize_approximate_diffuse(self, int offset, np.float32_t [::1, :] initial_stationary_state_cov) except 1 + cdef int initialize_stationary_constant(self, int offset, sStatespace model, np.float32_t [:] initial_state_mean, int complex_step=*) except 1 + cdef int initialize_stationary_stationary_cov(self, int offset, sStatespace model, np.float32_t [::1, :] initial_stationary_state_cov, int complex_step=*) except 1 + +cdef class dInitialization(object): + cdef readonly int k_states + cdef public np.float64_t approximate_diffuse_variance + + cdef np.float64_t [:] constant + cdef np.float64_t [::1, :] stationary_cov + cdef np.float64_t [::1, :] _tmp_transition + cdef np.float64_t [::1, :] _tmp_selected_state_cov + + cpdef int initialize(self, inititialization_type, int offset, + dStatespace model, + np.float64_t [:] initial_state_mean, + np.float64_t [::1, :] initial_diffuse_state_cov, + np.float64_t [::1, :] initial_stationary_state_cov, + int complex_step=*) except 1 + cdef int clear_constant(self, int offset, np.float64_t [:] initial_state_mean) except 1 + cdef int clear_cov(self, int offset, np.float64_t [::1, :] cov) except 1 + cdef int initialize_known_constant(self, int offset, np.float64_t [:] initial_state_mean) except 1 + cdef int initialize_known_stationary_cov(self, int offset, np.float64_t [::1, :] initial_stationary_state_cov) except 1 + cdef int initialize_diffuse(self, int offset, np.float64_t [::1, :] initial_diffuse_state_cov) except 1 + cdef int initialize_approximate_diffuse(self, int offset, np.float64_t [::1, :] initial_stationary_state_cov) except 1 + cdef int initialize_stationary_constant(self, int offset, dStatespace model, np.float64_t [:] initial_state_mean, int complex_step=*) except 1 + cdef int initialize_stationary_stationary_cov(self, int offset, dStatespace model, np.float64_t [::1, :] initial_stationary_state_cov, int complex_step=*) except 1 + +cdef class cInitialization(object): + cdef readonly int k_states + cdef public np.float64_t approximate_diffuse_variance + + cdef np.complex64_t [:] constant + cdef np.complex64_t [::1, :] stationary_cov + cdef np.complex64_t [::1, :] _tmp_transition + cdef np.complex64_t [::1, :] _tmp_selected_state_cov + + cpdef int initialize(self, inititialization_type, int offset, + cStatespace model, + np.complex64_t [:] initial_state_mean, + np.complex64_t [::1, :] initial_diffuse_state_cov, + np.complex64_t [::1, :] initial_stationary_state_cov, + int complex_step=*) except 1 + cdef int clear_constant(self, int offset, np.complex64_t [:] initial_state_mean) except 1 + cdef int clear_cov(self, int offset, np.complex64_t [::1, :] cov) except 1 + cdef int initialize_known_constant(self, int offset, np.complex64_t [:] initial_state_mean) except 1 + cdef int initialize_known_stationary_cov(self, int offset, np.complex64_t [::1, :] initial_stationary_state_cov) except 1 + cdef int initialize_diffuse(self, int offset, np.complex64_t [::1, :] initial_diffuse_state_cov) except 1 + cdef int initialize_approximate_diffuse(self, int offset, np.complex64_t [::1, :] initial_stationary_state_cov) except 1 + cdef int initialize_stationary_constant(self, int offset, cStatespace model, np.complex64_t [:] initial_state_mean, int complex_step=*) except 1 + cdef int initialize_stationary_stationary_cov(self, int offset, cStatespace model, np.complex64_t [::1, :] initial_stationary_state_cov, int complex_step=*) except 1 + +cdef class zInitialization(object): + cdef readonly int k_states + cdef public np.float64_t approximate_diffuse_variance + + cdef np.complex128_t [:] constant + cdef np.complex128_t [::1, :] stationary_cov + cdef np.complex128_t [::1, :] _tmp_transition + cdef np.complex128_t [::1, :] _tmp_selected_state_cov + + cpdef int initialize(self, inititialization_type, int offset, + zStatespace model, + np.complex128_t [:] initial_state_mean, + np.complex128_t [::1, :] initial_diffuse_state_cov, + np.complex128_t [::1, :] initial_stationary_state_cov, + int complex_step=*) except 1 + cdef int clear_constant(self, int offset, np.complex128_t [:] initial_state_mean) except 1 + cdef int clear_cov(self, int offset, np.complex128_t [::1, :] cov) except 1 + cdef int initialize_known_constant(self, int offset, np.complex128_t [:] initial_state_mean) except 1 + cdef int initialize_known_stationary_cov(self, int offset, np.complex128_t [::1, :] initial_stationary_state_cov) except 1 + cdef int initialize_diffuse(self, int offset, np.complex128_t [::1, :] initial_diffuse_state_cov) except 1 + cdef int initialize_approximate_diffuse(self, int offset, np.complex128_t [::1, :] initial_stationary_state_cov) except 1 + cdef int initialize_stationary_constant(self, int offset, zStatespace model, np.complex128_t [:] initial_state_mean, int complex_step=*) except 1 + cdef int initialize_stationary_stationary_cov(self, int offset, zStatespace model, np.complex128_t [::1, :] initial_stationary_state_cov, int complex_step=*) except 1 diff --git a/statsmodels/tsa/statespace/_initialization.pyx.in b/statsmodels/tsa/statespace/_initialization.pyx.in new file mode 100644 index 0000000..f3c3b36 --- /dev/null +++ b/statsmodels/tsa/statespace/_initialization.pyx.in @@ -0,0 +1,254 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models - Initialization + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# Typical imports +import numpy as np +import warnings +cimport numpy as np +cimport cython + +np.import_array() + +from statsmodels.src.math cimport * +cimport scipy.linalg.cython_blas as blas +cimport scipy.linalg.cython_lapack as lapack +cimport statsmodels.tsa.statespace._tools as tools + +{{for prefix, types in TYPES.items()}} +from statsmodels.tsa.statespace._representation cimport {{prefix}}Statespace +{{endfor}} + +cdef int FORTRAN = 1 + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +}} + +## State Space Initialization +cdef class {{prefix}}Initialization(object): + + def __init__(self, int k_states, {{cython_type}} [:] constant, + {{cython_type}} [::1, :] stationary_cov, + np.float64_t approximate_diffuse_variance=1e6): + cdef: + int k + np.npy_intp dim1[1] + np.npy_intp dim2[2] + + self.k_states = k_states + self.constant = constant + self.stationary_cov = stationary_cov + self.approximate_diffuse_variance = approximate_diffuse_variance + + # Validate + tools.validate_vector_shape('known constant', &self.constant.shape[0], self.k_states, None) + tools.validate_matrix_shape('known covariance', &self.stationary_cov.shape[0], self.k_states, self.k_states, None) + + # Internal temporary matrices + dim2[0] = self.k_states; dim2[1] = self.k_states; + self._tmp_transition = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim2[0] = self.k_states; dim2[1] = self.k_states; + self._tmp_selected_state_cov = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + def __reduce__(self): + init = (self.k_states, np.array(self.constant), np.array(self.stationary_cov), + self.approximate_diffuse_variance) + state = {'_tmp_transition': np.array(self._tmp_transition, copy=True, order='F'), + '_tmp_selected_state_cov': np.array(self._tmp_selected_state_cov, copy=True, order='F')} + return (self.__class__, init, state) + + def __setstate__(self, state): + self._tmp_transition = state['_tmp_transition'] + self._tmp_selected_state_cov = state['_tmp_selected_state_cov'] + + cpdef int initialize(self, initialization_type, int offset, + {{prefix}}Statespace model, + {{cython_type}} [:] initial_state_mean, + {{cython_type}} [::1, :] initial_diffuse_state_cov, + {{cython_type}} [::1, :] initial_stationary_state_cov, + int complex_step=False) except 1: + + if offset + self.k_states > model.k_states: + raise ValueError('Invalid offset.') + tools.validate_vector_shape('initial state mean', &initial_state_mean.shape[0], model.k_states, None) + tools.validate_matrix_shape('initial diffuse state cov', &initial_diffuse_state_cov.shape[0], model.k_states, model.k_states, None) + tools.validate_matrix_shape('initial stationary state cov', &initial_stationary_state_cov.shape[0], model.k_states, model.k_states, None) + + if initialization_type == 'known': + self.initialize_known_constant(offset, initial_state_mean) + self.initialize_known_stationary_cov(offset, initial_stationary_state_cov) + self.clear_cov(offset, initial_diffuse_state_cov) + elif initialization_type == 'diffuse': + self.initialize_diffuse(offset, initial_diffuse_state_cov) + self.clear_constant(offset, initial_state_mean) + self.clear_cov(offset, initial_stationary_state_cov) + elif initialization_type == 'approximate_diffuse': + self.initialize_known_constant(offset, initial_state_mean) + self.initialize_approximate_diffuse(offset, initial_stationary_state_cov) + self.clear_cov(offset, initial_diffuse_state_cov) + elif initialization_type == 'stationary': + self.initialize_stationary_constant(offset, model, initial_state_mean, complex_step) + self.initialize_stationary_stationary_cov(offset, model, initial_stationary_state_cov, complex_step) + self.clear_cov(offset, initial_diffuse_state_cov) + else: + raise ValueError('Invalid initialization type') + + return 0 + + cdef int clear_constant(self, int offset, {{cython_type}} [:] initial_state_mean) except 1: + initial_state_mean[offset:offset + self.k_states] = 0 + return 0 + + cdef int clear_cov(self, int offset, {{cython_type}} [::1, :] cov) except 1: + cov[offset:offset + self.k_states, offset:offset + self.k_states] = 0 + return 0 + + cdef int initialize_known_constant(self, int offset, + {{cython_type}} [:] initial_state_mean) except 1: + cdef int inc = 1 + blas.{{prefix}}copy(&self.k_states, &self.constant[0], &inc, + &initial_state_mean[offset], &inc) + + return 0 + + cdef int initialize_known_stationary_cov(self, int offset, + {{cython_type}} [::1, :] initial_stationary_state_cov) except 1: + cdef int i, inc = 1 + # Copy columns + for i in range(self.k_states): + blas.{{prefix}}copy(&self.k_states, &self.stationary_cov[0, i], &inc, + &initial_stationary_state_cov[offset, offset + i], &inc) + + return 0 + + cdef int initialize_diffuse(self, int offset, + {{cython_type}} [::1, :] initial_diffuse_state_cov) except 1: + cdef int i + for i in range(offset, offset + self.k_states): + initial_diffuse_state_cov[i, i] = 1 + + return 0 + + cdef int initialize_approximate_diffuse(self, int offset, + {{cython_type}} [::1, :] initial_stationary_state_cov) except 1: + cdef int i + for i in range(offset, offset + self.k_states): + initial_stationary_state_cov[i, i] = self.approximate_diffuse_variance + + return 0 + + cdef int initialize_stationary_constant(self, int offset, {{prefix}}Statespace model, + {{cython_type}} [:] initial_state_mean, + int complex_step=False) except 1: + + cdef: + np.npy_intp dim2[2] + int i, info, inc = 1 + int k_states2 = self.k_states**2 + np.float64_t asum, tol = 1e-9 + cdef {{cython_type}} scalar + cdef int [::1,:] ipiv + + # Clear the unconditional mean (for this block) + initial_state_mean[offset:offset + self.k_states] = 0 + + # Check if the state intercept is all zeros; if it is, then the + # unconditional mean is also all zeros + {{if combined_prefix == 'd'}} + asum = blas.{{prefix}}asum(&model.k_states, &model.state_intercept[0, 0], &inc) + {{elif prefix == 'c'}} + asum = blas.scasum(&model.k_states, &model.state_intercept[0, 0], &inc) + {{else}} + asum = blas.dzasum(&model.k_states, &model.state_intercept[0, 0], &inc) + {{endif}} + + # If the state intercept is non-zero, compute the mean + if asum > tol: + dim2[0] = self.k_states + dim2[1] = self.k_states + ipiv = np.PyArray_ZEROS(2, dim2, np.NPY_INT32, FORTRAN) + + # Create T - I + # (copy colummns) + for i in range(self.k_states): + blas.{{prefix}}copy(&self.k_states, &model.transition[offset,offset + i,0], &inc, + &self._tmp_transition[0,i], &inc) + self._tmp_transition[i, i] = self._tmp_transition[i, i] - 1 + # Multiply by -1 to get I - T + scalar = -1.0 + blas.{{prefix}}scal(&k_states2, &scalar, &self._tmp_transition[0, 0], &inc) + + # c + blas.{{prefix}}copy(&self.k_states, &model.state_intercept[offset,0], &inc, + &initial_state_mean[offset], &inc) + + # Solve (I - T) x = c + lapack.{{prefix}}getrf(&self.k_states, &self.k_states, &self._tmp_transition[0, 0], &self.k_states, + &ipiv[0, 0], &info) + lapack.{{prefix}}getrs('N', &self.k_states, &inc, &self._tmp_transition[0, 0], &self.k_states, + &ipiv[0, 0], &initial_state_mean[offset], &self.k_states, &info) + + return 0 + + cdef int initialize_stationary_stationary_cov(self, int offset, {{prefix}}Statespace model, + {{cython_type}} [::1, :] initial_stationary_state_cov, + int complex_step=False) except 1: + cdef: + int i, inc = 1 + int k_states2 = self.k_states**2 + + # Create selected state covariance matrix + tools._{{prefix}}select_cov(self.k_states, model.k_posdef, model.k_states, + &model.tmp[0,0], + &model.selection[offset,0,0], + &model.state_cov[0,0,0], + &self._tmp_selected_state_cov[0,0]) + + # Create a copy of the transition matrix + # (copy colummns) + for i in range(self.k_states): + blas.{{prefix}}copy(&self.k_states, &model.transition[offset,offset + i,0], &inc, + &self._tmp_transition[0,i], &inc) + + # Solve the discrete Lyapunov equation to the get initial state + # covariance matrix + tools._{{prefix}}solve_discrete_lyapunov( + &self._tmp_transition[0,0], &self._tmp_selected_state_cov[0,0], self.k_states, complex_step) + + # Copy into initial_stationary_state_cov + # (copy colummns) + for i in range(self.k_states): + blas.{{prefix}}copy(&self.k_states, &self._tmp_selected_state_cov[0,i], &inc, + &initial_stationary_state_cov[offset,offset + i], &inc) + + return 0 + + +{{endfor}} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/_kalman_filter.pxd b/statsmodels/tsa/statespace/_kalman_filter.pxd new file mode 100644 index 0000000..bcf5167 --- /dev/null +++ b/statsmodels/tsa/statespace/_kalman_filter.pxd @@ -0,0 +1,657 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +Kalman Filter declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +# ## Constants + +# ### Filters +cdef int FILTER_CONVENTIONAL # Durbin and Koopman (2012), Chapter 4 +cdef int FILTER_EXACT_INITIAL # ibid., Chapter 5.6 +cdef int FILTER_AUGMENTED # ibid., Chapter 5.7 +cdef int FILTER_SQUARE_ROOT # ibid., Chapter 6.3 +cdef int FILTER_UNIVARIATE # ibid., Chapter 6.4 +cdef int FILTER_COLLAPSED # ibid., Chapter 6.5 +cdef int FILTER_EXTENDED # ibid., Chapter 10.2 +cdef int FILTER_UNSCENTED # ibid., Chapter 10.3 +cdef int FILTER_CONCENTRATED # Harvey (1989), Chapter 3.4 + +# ### Inversion methods +# Methods by which the terms using the inverse of the forecast error +# covariance matrix are solved. +cdef int INVERT_UNIVARIATE +cdef int SOLVE_LU +cdef int INVERT_LU +cdef int SOLVE_CHOLESKY +cdef int INVERT_CHOLESKY + +# ### Numerical Stability methods +# Methods to improve numerical stability +cdef int STABILITY_FORCE_SYMMETRY + +# ### Memory conservation options +cdef int MEMORY_STORE_ALL +cdef int MEMORY_NO_FORECAST +cdef int MEMORY_NO_PREDICTED +cdef int MEMORY_NO_FILTERED +cdef int MEMORY_NO_LIKELIHOOD +cdef int MEMORY_NO_GAIN +cdef int MEMORY_NO_SMOOTHING +cdef int MEMORY_NO_STD_FORECAST +cdef int MEMORY_CONSERVE + +# ### Timing options +cdef int TIMING_INIT_FILTERED +cdef int TIMING_INIT_PREDICTED + +# Typical imports +cimport numpy as np + +from statsmodels.tsa.statespace._representation cimport ( + sStatespace, dStatespace, cStatespace, zStatespace +) + +# Single precision +cdef class sKalmanFilter(object): + # Statespace object + cdef readonly sStatespace model + + # ### Filter parameters + cdef readonly int t + cdef public np.float64_t tolerance, tolerance_diffuse + cdef readonly int nobs_diffuse + cdef readonly int nobs_kendog_diffuse_nonsingular + cdef readonly int nobs_kendog_univariate_singular + cdef readonly int converged + cdef readonly int period_converged + cdef readonly int time_invariant + cdef readonly int filter_method + cdef public int inversion_method + cdef public int stability_method + cdef readonly int conserve_memory + cdef public int filter_timing + cdef readonly int loglikelihood_burn + + # ### Kalman filter properties + cdef readonly np.float32_t [:] loglikelihood, scale + cdef readonly np.float32_t [::1,:] filtered_state, predicted_state, forecast, forecast_error, standardized_forecast_error + cdef readonly np.float32_t [::1,:,:] filtered_state_cov, predicted_state_cov, forecast_error_cov, predicted_diffuse_state_cov, forecast_error_diffuse_cov, M, M_inf + cdef readonly np.float32_t [::1,:,:] kalman_gain + + # ### Steady State Values + cdef readonly np.float32_t [::1,:] converged_forecast_error_cov + cdef readonly np.float32_t [::1,:] converged_filtered_state_cov + cdef readonly np.float32_t [::1,:] converged_predicted_state_cov + cdef readonly np.float32_t [::1,:] converged_kalman_gain + cdef readonly np.float32_t [::1,:] converged_M + cdef readonly np.float32_t converged_determinant + + # ### Temporary arrays + cdef readonly np.float32_t [::1,:] forecast_error_fac + cdef readonly int [:] forecast_error_ipiv + cdef readonly np.float32_t [::1,:] forecast_error_work + cdef readonly np.float32_t [::1,:] tmp0, tmp00 + cdef readonly np.float32_t [::1,:] tmp2 + cdef readonly np.float32_t [::1,:,:] tmp1, tmp3, tmp4 + cdef readonly np.float32_t [:] tmpK0, tmpK1 + cdef readonly np.float32_t [::1,:] tmpL0, tmpL1 + + cdef readonly np.float32_t determinant + + # ### Pointers to current-iteration arrays + # cdef np.float32_t * _obs + # cdef np.float32_t * _design + # cdef np.float32_t * _obs_intercept + # cdef np.float32_t * _obs_cov + # cdef np.float32_t * _transition + # cdef np.float32_t * _state_intercept + # cdef np.float32_t * _selection + # cdef np.float32_t * _state_cov + # cdef np.float32_t * _selected_state_cov + # cdef np.float32_t * _initial_state + # cdef np.float32_t * _initial_state_cov + + cdef np.float32_t * _input_state + cdef np.float32_t * _input_state_cov + cdef np.float32_t * _input_diffuse_state_cov + + cdef np.float32_t * _forecast + cdef np.float32_t * _forecast_error + cdef np.float32_t * _standardized_forecast_error + cdef np.float32_t * _forecast_error_cov + cdef np.float32_t * _filtered_state + cdef np.float32_t * _filtered_state_cov + cdef np.float32_t * _predicted_state + cdef np.float32_t * _predicted_state_cov + + cdef np.float32_t * _forecast_error_diffuse_cov + cdef np.float32_t * _predicted_diffuse_state_cov + cdef np.float32_t * _M + cdef np.float32_t * _M_inf + + cdef np.float32_t * _kalman_gain + cdef np.float32_t * _loglikelihood + cdef np.float32_t * _scale + + cdef np.float32_t * _converged_forecast_error_cov + cdef np.float32_t * _converged_filtered_state_cov + cdef np.float32_t * _converged_predicted_state_cov + cdef np.float32_t * _converged_kalman_gain + cdef np.float32_t * _converged_M + + cdef np.float32_t * _forecast_error_fac + cdef int * _forecast_error_ipiv + cdef np.float32_t * _forecast_error_work + + cdef np.float32_t * _tmp0 + cdef np.float32_t * _tmp00 + cdef np.float32_t * _tmp1 + cdef np.float32_t * _tmp2 + cdef np.float32_t * _tmp3 + cdef np.float32_t * _tmp4 + + cdef np.float32_t * _tmpM_inf + cdef np.float32_t * _tmpK0 + cdef np.float32_t * _tmpK1 + cdef np.float32_t * _tmpL0 + cdef np.float32_t * _tmpL1 + + # ### Pointers to current-iteration Kalman filtering functions + cdef int (*forecasting)( + sKalmanFilter, sStatespace + ) + cdef np.float32_t (*inversion)( + sKalmanFilter, sStatespace, np.float32_t + ) except * + cdef int (*updating)( + sKalmanFilter, sStatespace + ) + cdef np.float32_t (*calculate_loglikelihood)( + sKalmanFilter, sStatespace, np.float32_t + ) + cdef np.float32_t (*calculate_scale)( + sKalmanFilter, sStatespace + ) + cdef int (*prediction)( + sKalmanFilter, sStatespace + ) + + # ### Define some constants + cdef readonly int k_endog, k_states, k_posdef, k_endog2, k_states2, k_posdef2, k_endogstates, k_statesposdef + cdef readonly int ldwork + + cdef allocate_arrays(self) + cdef void set_dimensions(self) + cpdef set_filter_method(self, int filter_method, int force_reset=*) + cpdef seek(self, unsigned int t, int reset=*) + + cdef void initialize_statespace_object_pointers(self) except * + cdef void initialize_filter_object_pointers(self) + cdef void initialize_function_pointers(self) except * + cdef void post_convergence(self) + cdef void numerical_stability(self) + cdef int check_diffuse(self) + cdef void check_convergence(self) + cdef void migrate_storage(self) + cdef void _reinitialize_pointers(self) except * + + cdef void _forecasting(self) + cdef np.float32_t _inversion(self) + cdef void _updating(self) + cdef np.float32_t _calculate_loglikelihood(self) + cdef void _prediction(self) + +# Double precision +cdef class dKalmanFilter(object): + # Statespace object + cdef readonly dStatespace model + + # ### Filter parameters + cdef readonly int t + cdef public np.float64_t tolerance, tolerance_diffuse + cdef readonly int nobs_diffuse + cdef readonly int nobs_kendog_diffuse_nonsingular + cdef readonly int nobs_kendog_univariate_singular + cdef readonly int converged + cdef readonly int period_converged + cdef readonly int time_invariant + cdef readonly int filter_method + cdef public int inversion_method + cdef public int stability_method + cdef readonly int conserve_memory + cdef public int filter_timing + cdef readonly int loglikelihood_burn + + # ### Kalman filter properties + cdef readonly np.float64_t [:] loglikelihood, scale + cdef readonly np.float64_t [::1,:] filtered_state, predicted_state, forecast, forecast_error, standardized_forecast_error + cdef readonly np.float64_t [::1,:,:] filtered_state_cov, predicted_state_cov, forecast_error_cov, predicted_diffuse_state_cov, forecast_error_diffuse_cov, M, M_inf + cdef readonly np.float64_t [::1,:,:] kalman_gain + + # ### Steady State Values + cdef readonly np.float64_t [::1,:] converged_forecast_error_cov + cdef readonly np.float64_t [::1,:] converged_filtered_state_cov + cdef readonly np.float64_t [::1,:] converged_predicted_state_cov + cdef readonly np.float64_t [::1,:] converged_kalman_gain + cdef readonly np.float64_t [::1,:] converged_M + cdef readonly np.float64_t converged_determinant + + # ### Temporary arrays + cdef readonly np.float64_t [::1,:] forecast_error_fac + cdef readonly int [:] forecast_error_ipiv + cdef readonly np.float64_t [::1,:] forecast_error_work + cdef readonly np.float64_t [::1,:] tmp0, tmp00 + cdef readonly np.float64_t [::1,:] tmp2 + cdef readonly np.float64_t [::1,:,:] tmp1, tmp3, tmp4 + cdef readonly np.float64_t [:] tmpM_inf, tmpK0, tmpK1 + cdef readonly np.float64_t [::1,:] tmpL0, tmpL1 + + cdef readonly np.float64_t determinant + + # ### Pointers to current-iteration arrays + # cdef np.float64_t * _obs + # cdef np.float64_t * _design + # cdef np.float64_t * _obs_intercept + # cdef np.float64_t * _obs_cov + # cdef np.float64_t * _transition + # cdef np.float64_t * _state_intercept + # cdef np.float64_t * _selection + # cdef np.float64_t * _state_cov + # cdef np.float64_t * _selected_state_cov + # cdef np.float64_t * _initial_state + # cdef np.float64_t * _initial_state_cov + + cdef np.float64_t * _input_state + cdef np.float64_t * _input_state_cov + cdef np.float64_t * _input_diffuse_state_cov + + cdef np.float64_t * _forecast + cdef np.float64_t * _forecast_error + cdef np.float64_t * _standardized_forecast_error + cdef np.float64_t * _forecast_error_cov + cdef np.float64_t * _filtered_state + cdef np.float64_t * _filtered_state_cov + cdef np.float64_t * _predicted_state + cdef np.float64_t * _predicted_state_cov + + cdef np.float64_t * _forecast_error_diffuse_cov + cdef np.float64_t * _predicted_diffuse_state_cov + cdef np.float64_t * _M + cdef np.float64_t * _M_inf + + cdef np.float64_t * _kalman_gain + cdef np.float64_t * _loglikelihood + cdef np.float64_t * _scale + + cdef np.float64_t * _converged_forecast_error_cov + cdef np.float64_t * _converged_filtered_state_cov + cdef np.float64_t * _converged_predicted_state_cov + cdef np.float64_t * _converged_kalman_gain + cdef np.float64_t * _converged_M + + cdef np.float64_t * _forecast_error_fac + cdef int * _forecast_error_ipiv + cdef np.float64_t * _forecast_error_work + + cdef np.float64_t * _tmp0 + cdef np.float64_t * _tmp00 + cdef np.float64_t * _tmp1 + cdef np.float64_t * _tmp2 + cdef np.float64_t * _tmp3 + cdef np.float64_t * _tmp4 + + cdef np.float64_t * _tmpM_inf + cdef np.float64_t * _tmpK0 + cdef np.float64_t * _tmpK1 + cdef np.float64_t * _tmpL0 + cdef np.float64_t * _tmpL1 + + # ### Pointers to current-iteration Kalman filtering functions + cdef int (*forecasting)( + dKalmanFilter, dStatespace + ) + cdef np.float64_t (*inversion)( + dKalmanFilter, dStatespace, np.float64_t + ) except * + cdef int (*updating)( + dKalmanFilter, dStatespace + ) + cdef np.float64_t (*calculate_loglikelihood)( + dKalmanFilter, dStatespace, np.float64_t + ) + cdef np.float64_t (*calculate_scale)( + dKalmanFilter, dStatespace + ) + cdef int (*prediction)( + dKalmanFilter, dStatespace + ) + + # ### Define some constants + cdef readonly int k_endog, k_states, k_posdef, k_endog2, k_states2, k_posdef2, k_endogstates, k_statesposdef + cdef readonly int ldwork + + cdef allocate_arrays(self) + cdef void set_dimensions(self) + cpdef set_filter_method(self, int filter_method, int force_reset=*) + cpdef seek(self, unsigned int t, int reset=*) + + cdef void initialize_statespace_object_pointers(self) except * + cdef void initialize_filter_object_pointers(self) + cdef void initialize_function_pointers(self) except * + cdef void post_convergence(self) + cdef void numerical_stability(self) + cdef int check_diffuse(self) + cdef void check_convergence(self) + cdef void migrate_storage(self) + cdef void _reinitialize_pointers(self) except * + + cdef void _forecasting(self) + cdef np.float64_t _inversion(self) + cdef void _updating(self) + cdef np.float64_t _calculate_loglikelihood(self) + cdef void _prediction(self) + +# Single precision complex +cdef class cKalmanFilter(object): + # Statespace object + cdef readonly cStatespace model + + # ### Filter parameters + cdef readonly int t + cdef public np.float64_t tolerance, tolerance_diffuse + cdef readonly int nobs_diffuse + cdef readonly int nobs_kendog_diffuse_nonsingular + cdef readonly int nobs_kendog_univariate_singular + cdef readonly int converged + cdef readonly int period_converged + cdef readonly int time_invariant + cdef readonly int filter_method + cdef public int inversion_method + cdef public int stability_method + cdef readonly int conserve_memory + cdef public int filter_timing + cdef readonly int loglikelihood_burn + + # ### Kalman filter properties + cdef readonly np.complex64_t [:] loglikelihood, scale + cdef readonly np.complex64_t [::1,:] filtered_state, predicted_state, forecast, forecast_error, standardized_forecast_error + cdef readonly np.complex64_t [::1,:,:] filtered_state_cov, predicted_state_cov, forecast_error_cov, predicted_diffuse_state_cov, forecast_error_diffuse_cov, M, M_inf + cdef readonly np.complex64_t [::1,:,:] kalman_gain + + # ### Steady State Values + cdef readonly np.complex64_t [::1,:] converged_forecast_error_cov + cdef readonly np.complex64_t [::1,:] converged_filtered_state_cov + cdef readonly np.complex64_t [::1,:] converged_predicted_state_cov + cdef readonly np.complex64_t [::1,:] converged_kalman_gain + cdef readonly np.complex64_t [::1,:] converged_M + cdef readonly np.complex64_t converged_determinant + + # ### Temporary arrays + cdef readonly np.complex64_t [::1,:] forecast_error_fac + cdef readonly int [:] forecast_error_ipiv + cdef readonly np.complex64_t [::1,:] forecast_error_work + cdef readonly np.complex64_t [::1,:] tmp0, tmp00 + cdef readonly np.complex64_t [::1,:] tmp2 + cdef readonly np.complex64_t [::1,:,:] tmp1, tmp3, tmp4 + cdef readonly np.complex64_t [:] tmpM_inf, tmpK0, tmpK1 + cdef readonly np.complex64_t [::1,:] tmpL0, tmpL1 + + cdef readonly np.complex64_t determinant + + # ### Pointers to current-iteration arrays + # cdef np.complex64_t * _obs + # cdef np.complex64_t * _design + # cdef np.complex64_t * _obs_intercept + # cdef np.complex64_t * _obs_cov + # cdef np.complex64_t * _transition + # cdef np.complex64_t * _state_intercept + # cdef np.complex64_t * _selection + # cdef np.complex64_t * _state_cov + # cdef np.complex64_t * _selected_state_cov + # cdef np.complex64_t * _initial_state + # cdef np.complex64_t * _initial_state_cov + + cdef np.complex64_t * _input_state + cdef np.complex64_t * _input_state_cov + cdef np.complex64_t * _input_diffuse_state_cov + + cdef np.complex64_t * _forecast + cdef np.complex64_t * _forecast_error + cdef np.complex64_t * _standardized_forecast_error + cdef np.complex64_t * _forecast_error_cov + cdef np.complex64_t * _filtered_state + cdef np.complex64_t * _filtered_state_cov + cdef np.complex64_t * _predicted_state + cdef np.complex64_t * _predicted_state_cov + + cdef np.complex64_t * _forecast_error_diffuse_cov + cdef np.complex64_t * _predicted_diffuse_state_cov + cdef np.complex64_t * _M + cdef np.complex64_t * _M_inf + + cdef np.complex64_t * _kalman_gain + cdef np.complex64_t * _loglikelihood + cdef np.complex64_t * _scale + + cdef np.complex64_t * _converged_forecast_error_cov + cdef np.complex64_t * _converged_filtered_state_cov + cdef np.complex64_t * _converged_predicted_state_cov + cdef np.complex64_t * _converged_kalman_gain + cdef np.complex64_t * _converged_M + + cdef np.complex64_t * _forecast_error_fac + cdef int * _forecast_error_ipiv + cdef np.complex64_t * _forecast_error_work + + cdef np.complex64_t * _tmp0 + cdef np.complex64_t * _tmp00 + cdef np.complex64_t * _tmp1 + cdef np.complex64_t * _tmp2 + cdef np.complex64_t * _tmp3 + cdef np.complex64_t * _tmp4 + + cdef np.complex64_t * _tmpM_inf + cdef np.complex64_t * _tmpK0 + cdef np.complex64_t * _tmpK1 + cdef np.complex64_t * _tmpL0 + cdef np.complex64_t * _tmpL1 + + # ### Pointers to current-iteration Kalman filtering functions + cdef int (*forecasting)( + cKalmanFilter, cStatespace + ) + cdef np.complex64_t (*inversion)( + cKalmanFilter, cStatespace, np.complex64_t + ) except * + cdef int (*updating)( + cKalmanFilter, cStatespace + ) + cdef np.complex64_t (*calculate_loglikelihood)( + cKalmanFilter, cStatespace, np.complex64_t + ) + cdef np.complex64_t (*calculate_scale)( + cKalmanFilter, cStatespace + ) + cdef int (*prediction)( + cKalmanFilter, cStatespace + ) + + # ### Define some constants + cdef readonly int k_endog, k_states, k_posdef, k_endog2, k_states2, k_posdef2, k_endogstates, k_statesposdef + cdef readonly int ldwork + + cdef allocate_arrays(self) + cdef void set_dimensions(self) + cpdef set_filter_method(self, int filter_method, int force_reset=*) + cpdef seek(self, unsigned int t, int reset=*) + + cdef void initialize_statespace_object_pointers(self) except * + cdef void initialize_filter_object_pointers(self) + cdef void initialize_function_pointers(self) except * + cdef void post_convergence(self) + cdef void numerical_stability(self) + cdef int check_diffuse(self) + cdef void check_convergence(self) + cdef void migrate_storage(self) + cdef void _reinitialize_pointers(self) except * + + cdef void _forecasting(self) + cdef np.complex64_t _inversion(self) + cdef void _updating(self) + cdef np.complex64_t _calculate_loglikelihood(self) + cdef void _prediction(self) + +# Double precision complex +cdef class zKalmanFilter(object): + # Statespace object + cdef readonly zStatespace model + + # ### Filter parameters + cdef readonly int t + cdef public np.float64_t tolerance, tolerance_diffuse + cdef readonly int nobs_diffuse + cdef readonly int nobs_kendog_diffuse_nonsingular + cdef readonly int nobs_kendog_univariate_singular + cdef readonly int converged + cdef readonly int period_converged + cdef readonly int time_invariant + cdef readonly int filter_method + cdef public int inversion_method + cdef public int stability_method + cdef readonly int conserve_memory + cdef public int filter_timing + cdef readonly int loglikelihood_burn + + # ### Kalman filter properties + cdef readonly np.complex128_t [:] loglikelihood, scale + cdef readonly np.complex128_t [::1,:] filtered_state, predicted_state, forecast, forecast_error, standardized_forecast_error + cdef readonly np.complex128_t [::1,:,:] filtered_state_cov, predicted_state_cov, forecast_error_cov, predicted_diffuse_state_cov, forecast_error_diffuse_cov, M, M_inf + cdef readonly np.complex128_t [::1,:,:] kalman_gain + + # ### Steady State Values + cdef readonly np.complex128_t [::1,:] converged_forecast_error_cov + cdef readonly np.complex128_t [::1,:] converged_filtered_state_cov + cdef readonly np.complex128_t [::1,:] converged_predicted_state_cov + cdef readonly np.complex128_t [::1,:] converged_kalman_gain + cdef readonly np.complex128_t [::1,:] converged_M + cdef readonly np.complex128_t converged_determinant + + # ### Temporary arrays + cdef readonly np.complex128_t [::1,:] forecast_error_fac + cdef readonly int [:] forecast_error_ipiv + cdef readonly np.complex128_t [::1,:] forecast_error_work + cdef readonly np.complex128_t [::1,:] tmp0, tmp00 + cdef readonly np.complex128_t [::1,:] tmp2 + cdef readonly np.complex128_t [::1,:,:] tmp1, tmp3, tmp4 + cdef readonly np.complex128_t [:] tmpM_inf, tmpK0, tmpK1 + cdef readonly np.complex128_t [::1,:] tmpL0, tmpL1 + + cdef readonly np.complex128_t determinant + + # ### Pointers to current-iteration arrays + # cdef np.complex128_t * _obs + # cdef np.complex128_t * _design + # cdef np.complex128_t * _obs_intercept + # cdef np.complex128_t * _obs_cov + # cdef np.complex128_t * _transition + # cdef np.complex128_t * _state_intercept + # cdef np.complex128_t * _selection + # cdef np.complex128_t * _state_cov + # cdef np.complex128_t * _selected_state_cov + # cdef np.complex128_t * _initial_state + # cdef np.complex128_t * _initial_state_cov + + cdef np.complex128_t * _input_state + cdef np.complex128_t * _input_state_cov + cdef np.complex128_t * _input_diffuse_state_cov + + cdef np.complex128_t * _forecast + cdef np.complex128_t * _forecast_error + cdef np.complex128_t * _standardized_forecast_error + cdef np.complex128_t * _forecast_error_cov + cdef np.complex128_t * _filtered_state + cdef np.complex128_t * _filtered_state_cov + cdef np.complex128_t * _predicted_state + cdef np.complex128_t * _predicted_state_cov + + cdef np.complex128_t * _forecast_error_diffuse_cov + cdef np.complex128_t * _predicted_diffuse_state_cov + cdef np.complex128_t * _M + cdef np.complex128_t * _M_inf + + cdef np.complex128_t * _kalman_gain + cdef np.complex128_t * _loglikelihood + cdef np.complex128_t * _scale + + cdef np.complex128_t * _converged_forecast_error_cov + cdef np.complex128_t * _converged_filtered_state_cov + cdef np.complex128_t * _converged_predicted_state_cov + cdef np.complex128_t * _converged_kalman_gain + cdef np.complex128_t * _converged_M + + cdef np.complex128_t * _forecast_error_fac + cdef int * _forecast_error_ipiv + cdef np.complex128_t * _forecast_error_work + + cdef np.complex128_t * _tmp0 + cdef np.complex128_t * _tmp00 + cdef np.complex128_t * _tmp1 + cdef np.complex128_t * _tmp2 + cdef np.complex128_t * _tmp3 + cdef np.complex128_t * _tmp4 + + cdef np.complex128_t * _tmpM_inf + cdef np.complex128_t * _tmpK0 + cdef np.complex128_t * _tmpK1 + cdef np.complex128_t * _tmpL0 + cdef np.complex128_t * _tmpL1 + + # ### Pointers to current-iteration Kalman filtering functions + cdef int (*forecasting)( + zKalmanFilter, zStatespace + ) + cdef np.complex128_t (*inversion)( + zKalmanFilter, zStatespace, np.complex128_t + ) except * + cdef int (*updating)( + zKalmanFilter, zStatespace + ) + cdef np.complex128_t (*calculate_loglikelihood)( + zKalmanFilter, zStatespace, np.complex128_t + ) + cdef np.complex128_t (*calculate_scale)( + zKalmanFilter, zStatespace + ) + cdef int (*prediction)( + zKalmanFilter, zStatespace + ) + + # ### Define some constants + cdef readonly int k_endog, k_states, k_posdef, k_endog2, k_states2, k_posdef2, k_endogstates, k_statesposdef + cdef readonly int ldwork + + cdef allocate_arrays(self) + cdef void set_dimensions(self) + cpdef set_filter_method(self, int filter_method, int force_reset=*) + cpdef seek(self, unsigned int t, int reset=*) + + cdef void initialize_statespace_object_pointers(self) except * + cdef void initialize_filter_object_pointers(self) + cdef void initialize_function_pointers(self) except * + cdef void post_convergence(self) + cdef void numerical_stability(self) + cdef int check_diffuse(self) + cdef void check_convergence(self) + cdef void migrate_storage(self) + cdef void _reinitialize_pointers(self) except * + + cdef void _forecasting(self) + cdef np.complex128_t _inversion(self) + cdef void _updating(self) + cdef np.complex128_t _calculate_loglikelihood(self) + cdef void _prediction(self) diff --git a/statsmodels/tsa/statespace/_kalman_filter.pyx.in b/statsmodels/tsa/statespace/_kalman_filter.pyx.in new file mode 100644 index 0000000..ce6b6d3 --- /dev/null +++ b/statsmodels/tsa/statespace/_kalman_filter.pyx.in @@ -0,0 +1,1235 @@ +""" +Kalman Filter + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# ## Constants + +# ### Filters +# TODO note that only the conventional filter is implemented +cdef int FILTER_CONVENTIONAL = 0x01 # Durbin and Koopman (2012), Chapter 4 +cdef int FILTER_EXACT_INITIAL = 0x02 # ibid., Chapter 5.6 +cdef int FILTER_AUGMENTED = 0x04 # ibid., Chapter 5.7 +cdef int FILTER_SQUARE_ROOT = 0x08 # ibid., Chapter 6.3 +cdef int FILTER_UNIVARIATE = 0x10 # ibid., Chapter 6.4 +cdef int FILTER_COLLAPSED = 0x20 # ibid., Chapter 6.5 +cdef int FILTER_EXTENDED = 0x40 # ibid., Chapter 10.2 +cdef int FILTER_UNSCENTED = 0x80 # ibid., Chapter 10.3 +cdef int FILTER_CONCENTRATED = 0x100 # Harvey (1989), Chapter 3.4 + +# ### Inversion methods +# Methods by which the terms using the inverse of the forecast error +# covariance matrix are solved. +cdef int INVERT_UNIVARIATE = 0x01 +cdef int SOLVE_LU = 0x02 +cdef int INVERT_LU = 0x04 +cdef int SOLVE_CHOLESKY = 0x08 +cdef int INVERT_CHOLESKY = 0x10 + +# ### Numerical Stability methods +# Methods to improve numerical stability +cdef int STABILITY_FORCE_SYMMETRY = 0x01 + +# ### Memory conservation options +cdef int MEMORY_STORE_ALL = 0 +cdef int MEMORY_NO_FORECAST = 0x01 +cdef int MEMORY_NO_PREDICTED = 0x02 +cdef int MEMORY_NO_FILTERED = 0x04 +cdef int MEMORY_NO_LIKELIHOOD = 0x08 +cdef int MEMORY_NO_GAIN = 0x10 +cdef int MEMORY_NO_SMOOTHING = 0x20 +cdef int MEMORY_NO_STD_FORECAST = 0x40 +cdef int MEMORY_CONSERVE = ( + MEMORY_NO_FORECAST | MEMORY_NO_PREDICTED | MEMORY_NO_FILTERED | + MEMORY_NO_LIKELIHOOD | MEMORY_NO_GAIN | MEMORY_NO_SMOOTHING | + MEMORY_NO_STD_FORECAST +) + +# ### Timing options +# By default, assume filter is initialized with predicted values (as in +# Durbin and Koopman 2012) +# +# Alternately, assume filter is initialized with filtered values (as in +# Kim and Nelson 1999) +cdef int TIMING_INIT_PREDICTED = 0 +cdef int TIMING_INIT_FILTERED = 1 + +# Typical imports +import numpy as np +import warnings +cimport numpy as np +cimport cython + +np.import_array() + +from statsmodels.src.math cimport * +cimport scipy.linalg.cython_blas as blas +cimport scipy.linalg.cython_lapack as lapack +cimport statsmodels.tsa.statespace._tools as tools + +{{for prefix, types in TYPES.items()}} +from statsmodels.tsa.statespace._representation cimport {{prefix}}Statespace +from statsmodels.tsa.statespace._filters._conventional cimport ( + {{prefix}}forecast_missing_conventional, + {{prefix}}updating_missing_conventional, + {{prefix}}inverse_missing_conventional, + {{prefix}}loglikelihood_missing_conventional, + {{prefix}}scale_missing_conventional, + {{prefix}}forecast_conventional, + {{prefix}}updating_conventional, + {{prefix}}prediction_conventional, + {{prefix}}loglikelihood_conventional, + {{prefix}}scale_conventional +) +from statsmodels.tsa.statespace._filters._univariate cimport ( + {{prefix}}forecast_univariate, + {{prefix}}updating_univariate, + {{prefix}}inverse_noop_univariate, + {{prefix}}prediction_univariate, + {{prefix}}loglikelihood_univariate, + {{prefix}}scale_univariate +) +from statsmodels.tsa.statespace._filters._univariate_diffuse cimport ( + {{prefix}}forecast_univariate_diffuse, + {{prefix}}updating_univariate_diffuse, + {{prefix}}inverse_noop_univariate_diffuse, + {{prefix}}prediction_univariate_diffuse, + {{prefix}}loglikelihood_univariate_diffuse +) +from statsmodels.tsa.statespace._filters._inversions cimport ( + {{prefix}}inverse_univariate, + {{prefix}}factorize_cholesky, + {{prefix}}factorize_lu, + {{prefix}}inverse_cholesky, + {{prefix}}inverse_lu, + {{prefix}}solve_cholesky, + {{prefix}}solve_lu +) +{{endfor}} + +cdef int FORTRAN = 1 + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +}} + +# ## Kalman filter +cdef class {{prefix}}KalmanFilter(object): + """ + {{prefix}}KalmanFilter(model, filter_method=FILTER_CONVENTIONAL, inversion_method=INVERT_UNIVARIATE | SOLVE_CHOLESKY, stability_method=STABILITY_FORCE_SYMMETRY, filter_timing=TIMING_INIT_PREDICTED, tolerance=1e-19) + + A representation of the Kalman filter recursions. + + While the filter is mathematically represented as a recursion, it is here + translated into Python as a stateful iterator. + + Because there are actually several types of Kalman filter depending on the + state space model of interest, this class only handles the *iteration* + aspect of filtering, and delegates the actual operations to four general + workhorse routines, which can be implemented separately for each type of + Kalman filter. + + In order to maintain a consistent interface, and because these four general + routines may be quite different across filter types, their argument is only + the stateful ?KalmanFilter object. Furthermore, in order to allow the + different types of filter to substitute alternate matrices, this class + defines a set of pointers to the various state space arrays and the + filtering output arrays. + + For example, handling missing observations requires not only substituting + `obs`, `design`, and `obs_cov` matrices, but the new matrices actually have + different dimensions than the originals. This can be flexibly accomodated + simply by replacing e.g. the `obs` pointer to the substituted `obs` array + and replacing `k_endog` for that iteration. Then in the next iteration, when + the `obs` vector may be missing different elements (or none at all), it can + again be redefined. + + Each iteration of the filter (see `__next__`) proceeds in a number of + steps. + + `initialize_object_pointers` initializes pointers to current-iteration + objects (i.e. the state space arrays and filter output arrays). + + `initialize_function_pointers` initializes pointers to the appropriate + Kalman filtering routines (i.e. `forecast_conventional` or + `forecast_exact_initial`, etc.). + + `select_arrays` converts the base arrays into "selected" arrays using + selection matrices. In particular, it handles the state covariance matrix + and redefined matrices based on missing values. + + `post_convergence` handles copying arrays from time $t-1$ to time $t$ when + the Kalman filter has converged and they don't need to be re-calculated. + + `forecasting` calls the Kalman filter `forcasting_` routine + + `inversion` calls the appropriate function to invert the forecast error + covariance matrix. + + `updating` calls the Kalman filter `updating_` routine + + `loglikelihood` calls the Kalman filter `loglikelihood_` routine + + `prediction` calls the Kalman filter `prediction_` routine + + `numerical_stability` performs end-of-iteration tasks to improve the numerical + stability of the filter + + `check_convergence` checks for convergence of the filter to steady-state. + """ + + # ### Statespace model + # cdef readonly {{prefix}}Statespace model + + # ### Filter parameters + # Holds the time-iteration state of the filter + # *Note*: must be changed using the `seek` method + # cdef readonly int t + # Holds the tolerance parameter for convergence + # cdef public np.float64_t tolerance + # Holds the convergence to steady-state status of the filter + # *Note*: is by default reset each time `seek` is called + # cdef readonly int converged + # cdef readonly int period_converged + # Holds whether or not the model is time-invariant + # *Note*: is by default reset each time `seek` is called + # cdef readonly int time_invariant + # The Kalman filter procedure to use + # cdef readonly int filter_method + # The method by which the terms using the inverse of the forecast + # error covariance matrix are solved. + # cdef public int inversion_method + # Methods to improve numerical stability + # cdef public int stability_method + # Whether or not to conserve memory + # If True, only stores filtered states and covariance matrices + # cdef readonly int conserve_memory + # Whether or not to use alternate timing + # If True, uses the Kim and Nelson (1999) timing + # cdef readonly int filter_timing + # If conserving loglikelihood, the number of periods to "burn" + # before starting to record the loglikelihood + # cdef readonly int loglikelihood_burn + + # ### Kalman filter properties + + # `loglikelihood` $\equiv \log p(y_t | Y_{t-1})$ + # cdef readonly {{cython_type}} [:] loglikelihood + + # `filtered_state` $\equiv a_{t|t} = E(\alpha_t | Y_t)$ is the **filtered estimator** of the state $(m \times T)$ + # `predicted_state` $\equiv a_{t+1} = E(\alpha_{t+1} | Y_t)$ is the **one-step ahead predictor** of the state $(m \times T-1)$ + # `forecast` $\equiv E(y_t|Y_{t-1})$ is the **forecast** of the next observation $(p \times T)$ + # `forecast_error` $\equiv v_t = y_t - E(y_t|Y_{t-1})$ is the **one-step ahead forecast error** of the next observation $(p \times T)$ + # + # *Note*: Actual values in `filtered_state` will be from 1 to `nobs`+1. Actual + # values in `predicted_state` will be from 0 to `nobs`+1 because the initialization + # is copied over to the zeroth entry, and similar for the covariances, below. + # + # *Old notation: beta_tt, beta_tt1, y_tt1, eta_tt1* + # cdef readonly {{cython_type}} [::1,:] filtered_state, predicted_state, forecast, forecast_error + + # `filtered_state_cov` $\equiv P_{t|t} = Var(\alpha_t | Y_t)$ is the **filtered state covariance matrix** $(m \times m \times T)$ + # `predicted_state_cov` $\equiv P_{t+1} = Var(\alpha_{t+1} | Y_t)$ is the **predicted state covariance matrix** $(m \times m \times T)$ + # `forecast_error_cov` $\equiv F_t = Var(v_t | Y_{t-1})$ is the **forecast error covariance matrix** $(p \times p \times T)$ + # + # *Old notation: P_tt, P_tt1, f_tt1* + # cdef readonly {{cython_type}} [::1,:,:] filtered_state_cov, predicted_state_cov, forecast_error_cov + + # `kalman_gain` $\equiv K_{t} = T_t P_t Z_t' F_t^{-1}$ is the **Kalman gain** $(m \times p \times T)$ + # cdef readonly {{cython_type}} [::1,:,:] kalman_gain + + # ### Steady State Values + # These matrices are used to hold the converged matrices after the Kalman + # filter has reached steady-state + # cdef readonly {{cython_type}} [::1,:] converged_forecast_error_cov + # cdef readonly {{cython_type}} [::1,:] converged_filtered_state_cov + # cdef readonly {{cython_type}} [::1,:] converged_predicted_state_cov + # cdef readonly {{cython_type}} [::1,:] converged_kalman_gain + # cdef readonly {{cython_type}} converged_determinant + + # ### Temporary arrays + # These matrices are used to temporarily hold selected observation vectors, + # design matrices, and observation covariance matrices in the case of + # missing data. + # `forecast_error_fac` is a forecast error covariance matrix **factorization** $(p \times p)$. + # Depending on the method for handling the inverse of the forecast error covariance matrix, it may be: + # - a Cholesky factorization if `cholesky_solve` is used + # - an inverse calculated via Cholesky factorization if `cholesky_inverse` is used + # - an LU factorization if `lu_solve` is used + # - an inverse calculated via LU factorization if `lu_inverse` is used + # cdef readonly {{cython_type}} [::1,:] forecast_error_fac + # `forecast_error_ipiv` holds pivot indices if an LU decomposition is used + # cdef readonly int [:] forecast_error_ipiv + # `forecast_error_work` is a work array for matrix inversion if an LU + # decomposition is used + # cdef readonly {{cython_type}} [::1,:] forecast_error_work + # These hold the memory allocations of the anonymous temporary arrays + # cdef readonly {{cython_type}} [::1,:] tmp0, tmp00 + # These hold the memory allocations of the named temporary arrays + # (these are all time-varying in the last dimension) + # cdef readonly {{cython_type}} [::1,:] tmp2 + # cdef readonly {{cython_type}} [::1,:,:] tmp1, tmp3 + + # Holds the determinant across calculations (this is done because after + # convergence, it doesn't need to be re-calculated anymore) + # cdef readonly {{cython_type}} determinant + + # ### Pointers to current-iteration arrays + # cdef {{cython_type}} * _obs + # cdef {{cython_type}} * _design + # cdef {{cython_type}} * _obs_intercept + # cdef {{cython_type}} * _obs_cov + # cdef {{cython_type}} * _transition + # cdef {{cython_type}} * _state_intercept + # cdef {{cython_type}} * _selection + # cdef {{cython_type}} * _state_cov + # cdef {{cython_type}} * _selected_state_cov + # cdef {{cython_type}} * _initial_state + # cdef {{cython_type}} * _initial_state_cov + + # cdef {{cython_type}} * _input_state + # cdef {{cython_type}} * _input_state_cov + + # cdef {{cython_type}} * _forecast + # cdef {{cython_type}} * _forecast_error + # cdef {{cython_type}} * _forecast_error_cov + # cdef {{cython_type}} * _filtered_state + # cdef {{cython_type}} * _filtered_state_cov + # cdef {{cython_type}} * _predicted_state + # cdef {{cython_type}} * _predicted_state_cov + + # cdef {{cython_type}} * _kalman_gain + # cdef {{cython_type}} * _loglikelihood + + # cdef {{cython_type}} * _converged_forecast_error_cov + # cdef {{cython_type}} * _converged_filtered_state_cov + # cdef {{cython_type}} * _converged_predicted_state_cov + # cdef {{cython_type}} * _converged_kalman_gain + + # cdef {{cython_type}} * _forecast_error_fac + # cdef int * _forecast_error_ipiv + # cdef {{cython_type}} * _forecast_error_work + + # cdef {{cython_type}} * _tmp0 + # cdef {{cython_type}} * _tmp00 + # cdef {{cython_type}} * _tmp1 + # cdef {{cython_type}} * _tmp2 + # cdef {{cython_type}} * _tmp3 + + # ### Pointers to current-iteration Kalman filtering functions + # cdef int (*forecasting)( + # {{prefix}}KalmanFilter, {{prefix}}Statespace + # ) + # cdef {{cython_type}} (*inversion)( + # {{prefix}}KalmanFilter, {{prefix}}Statespace, {{cython_type}} + # ) except * + # cdef int (*updating)( + # {{prefix}}KalmanFilter, {{prefix}}Statespace + # ) + # cdef {{cython_type}} (*calculate_loglikelihood)( + # {{prefix}}KalmanFilter, {{prefix}}Statespace, {{cython_type}} + # ) + # cdef int (*prediction)( + # {{prefix}}KalmanFilter, {{prefix}}Statespace + # ) + + # ### Define some constants + # cdef readonly int k_endog, k_states, k_posdef, k_endog2, k_states2, k_endogstates + # cdef readonly ldwork + + def __init__(self, + {{prefix}}Statespace model, + int filter_method=FILTER_CONVENTIONAL, + int inversion_method=INVERT_UNIVARIATE | SOLVE_CHOLESKY, + int stability_method=STABILITY_FORCE_SYMMETRY, + int conserve_memory=MEMORY_STORE_ALL, + int filter_timing=TIMING_INIT_PREDICTED, + np.float64_t tolerance=1e-19, + int loglikelihood_burn=0): + + # Save the model + self.model = model + + # Initialize filter parameters + self.tolerance = tolerance + self.tolerance_diffuse = 1e-10 # TODO replace hardcode with argument + self.inversion_method = inversion_method + self.stability_method = stability_method + self.conserve_memory = conserve_memory + self.filter_timing = filter_timing + self.loglikelihood_burn = loglikelihood_burn + + # Initialize the constant values + self.time_invariant = self.model.time_invariant + + # TODO replace with optimal work array size + self.ldwork = self.model.k_endog + + # Set the filter method + self.set_dimensions() + self.set_filter_method(filter_method, True) + + # Initialize time and convergence status + self.t = 0 + self.nobs_diffuse = 0 + self.converged = 0 + self.period_converged = 0 + + def __reduce__(self): + args = (self.model, self.filter_method, self.inversion_method, + self.stability_method, self.conserve_memory, self.filter_timing, + self.tolerance, self.loglikelihood_burn) + state = {'t': self.t, + 'nobs_diffuse' : self.nobs_diffuse, + 'converged' : self.converged, + 'converged_determinant' : self.converged_determinant, + 'determinant' : self.determinant, + 'period_converged' : self.period_converged, + 'converged_filtered_state_cov': np.array(self.converged_filtered_state_cov, copy=True, order='F'), + 'converged_forecast_error_cov': np.array(self.converged_forecast_error_cov, copy=True, order='F'), + 'converged_kalman_gain': np.array(self.converged_kalman_gain, copy=True, order='F'), + 'converged_M': np.array(self.converged_M, copy=True, order='F'), + 'converged_predicted_state_cov': np.array(self.converged_predicted_state_cov, copy=True, order='F'), + 'filtered_state': np.array(self.filtered_state, copy=True, order='F'), + 'filtered_state_cov': np.array(self.filtered_state_cov, copy=True, order='F'), + 'forecast': np.array(self.forecast, copy=True, order='F'), + 'forecast_error': np.array(self.forecast_error, copy=True, order='F'), + 'forecast_error_cov': np.array(self.forecast_error_cov, copy=True, order='F'), + 'forecast_error_fac': np.array(self.forecast_error_fac, copy=True, order='F'), + 'forecast_error_ipiv': np.array(self.forecast_error_ipiv, copy=True, order='F'), + 'forecast_error_work': np.array(self.forecast_error_work, copy=True, order='F'), + 'kalman_gain': np.array(self.kalman_gain, copy=True, order='F'), + 'loglikelihood': np.array(self.loglikelihood, copy=True, order='F'), + 'predicted_state': np.array(self.predicted_state, copy=True, order='F'), + 'predicted_state_cov': np.array(self.predicted_state_cov, copy=True, order='F'), + 'standardized_forecast_error': np.array(self.standardized_forecast_error, copy=True, order='F'), + 'predicted_diffuse_state_cov': np.array(self.predicted_diffuse_state_cov, copy=True, order='F'), + 'forecast_error_diffuse_cov': np.array(self.forecast_error_diffuse_cov, copy=True, order='F'), + 'tmp0': np.array(self.tmp0, copy=True, order='F'), + 'tmp00': np.array(self.tmp00, copy=True, order='F'), + 'tmp1': np.array(self.tmp1, copy=True, order='F'), + 'tmp2': np.array(self.tmp2, copy=True, order='F'), + 'tmp3': np.array(self.tmp3, copy=True, order='F'), + 'tmp4': np.array(self.tmp4, copy=True, order='F'), + 'M': np.array(self.M, copy=True, order='F'), + 'M_inf': np.array(self.M_inf, copy=True, order='F'), + 'tmpK0': np.array(self.tmpK0, copy=True, order='F'), + 'tmpK1': np.array(self.tmpK1, copy=True, order='F'), + 'tmpL0': np.array(self.tmpL0, copy=True, order='F'), + 'tmpL1': np.array(self.tmpL1, copy=True, order='F') + } + + return (self.__class__, args, state) + + def __setstate__(self, state): + self.t = state['t'] + self.nobs_diffuse = state['nobs_diffuse'] + self.converged = state['converged'] + self.converged_determinant = state['converged_determinant'] + self.determinant = state['determinant'] + self.period_converged = state['period_converged'] + self.converged_filtered_state_cov = state['converged_filtered_state_cov'] + self.converged_forecast_error_cov = state['converged_forecast_error_cov'] + self.converged_kalman_gain = state['converged_kalman_gain'] + self.converged_M = state['converged_M'] + self.converged_predicted_state_cov = state['converged_predicted_state_cov'] + self.filtered_state = state['filtered_state'] + self.filtered_state_cov = state['filtered_state_cov'] + self.forecast = state['forecast'] + self.forecast_error = state['forecast_error'] + self.forecast_error_cov = state['forecast_error_cov'] + self.forecast_error_fac = state['forecast_error_fac'] + self.forecast_error_ipiv = state['forecast_error_ipiv'] + self.forecast_error_work = state['forecast_error_work'] + self.kalman_gain = state['kalman_gain'] + self.loglikelihood = state['loglikelihood'] + self.predicted_state = state['predicted_state'] + self.predicted_state_cov = state['predicted_state_cov'] + self.standardized_forecast_error = state['standardized_forecast_error'] + self.predicted_diffuse_state_cov = state['predicted_diffuse_state_cov'] + self.forecast_error_diffuse_cov = state['forecast_error_diffuse_cov'] + self.tmp0 = state['tmp0'] + self.tmp00 = state['tmp00'] + self.tmp1 = state['tmp1'] + self.tmp2 = state['tmp2'] + self.tmp3 = state['tmp3'] + self.tmp4 = state['tmp4'] + self.M = state['M'] + self.M_inf = state['M_inf'] + self.tmpK0 = state['tmpK0'] + self.tmpK1 = state['tmpK1'] + self.tmpL0 = state['tmpL0'] + self.tmpL1 = state['tmpL1'] + self._reinitialize_pointers() + + cdef void _reinitialize_pointers(self) except *: + self._converged_forecast_error_cov = &self.converged_forecast_error_cov[0,0] + self._converged_filtered_state_cov = &self.converged_filtered_state_cov[0,0] + self._converged_predicted_state_cov = &self.converged_predicted_state_cov[0,0] + self._converged_kalman_gain = &self.converged_kalman_gain[0,0] + self._converged_M = &self.converged_M[0,0] + self._forecast_error_fac = &self.forecast_error_fac[0,0] + self._forecast_error_work = &self.forecast_error_work[0,0] + self._forecast_error_ipiv = &self.forecast_error_ipiv[0] + self._tmp0 = &self.tmp0[0, 0] + self._tmp00 = &self.tmp00[0, 0] + + self._tmpK0 = &self.tmpK0[0] + self._tmpK1 = &self.tmpK1[0] + self._tmpL0 = &self.tmpL0[0,0] + self._tmpL1 = &self.tmpL1[0,0] + + cdef allocate_arrays(self): + # Local variables + cdef: + np.npy_intp dim1[1] + np.npy_intp dim2[2] + np.npy_intp dim3[3] + cdef int storage + # #### Allocate arrays for calculations + + # Arrays for Kalman filter output + + # Forecast + if self.conserve_memory & MEMORY_NO_FORECAST: + storage = 2 + else: + storage = self.model.nobs + dim2[0] = self.k_endog; dim2[1] = storage; + self.forecast = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self.forecast_error = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim3[0] = self.k_endog; dim3[1] = self.k_endog; dim3[2] = storage; + self.forecast_error_cov = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + # Standardized forecast errors + if self.conserve_memory & MEMORY_NO_STD_FORECAST > 0: + storage = 1 + else: + storage = self.model.nobs + dim2[0] = self.k_endog; dim2[1] = storage; + self.standardized_forecast_error = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + # Filtered + if self.conserve_memory & MEMORY_NO_FILTERED > 0: + storage = 2 + else: + storage = self.model.nobs + dim2[0] = self.k_states; dim2[1] = storage; + self.filtered_state = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim3[0] = self.k_states; dim3[1] = self.k_states; dim3[2] = storage; + self.filtered_state_cov = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + + # Predicted + if self.conserve_memory & MEMORY_NO_PREDICTED > 0: + storage = 2 + else: + storage = self.model.nobs + dim2[0] = self.k_states; dim2[1] = storage+1; + self.predicted_state = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim3[0] = self.k_states; dim3[1] = self.k_states; dim3[2] = storage+1; + self.predicted_state_cov = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + + # Exact diffuse initialization + # TODO: only create full nobs-length arrays if necessary + if self.conserve_memory & MEMORY_NO_FORECAST: + storage = 2 + else: + storage = self.model.nobs + dim3[0] = self.k_endog; dim3[1] = self.k_endog; dim3[2] = storage; + self.forecast_error_diffuse_cov = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + if self.conserve_memory & MEMORY_NO_PREDICTED > 0: + storage = 2 + else: + storage = self.model.nobs + dim3[0] = self.k_states; dim3[1] = self.k_states; dim3[2] = storage+1; + self.predicted_diffuse_state_cov = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + dim3[0] = self.k_states; dim3[1] = self.k_endog; dim3[2] = storage; + self.M = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + self.M_inf = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + dim1[0] = self.k_states; + self.tmpK0 = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + self._tmpK0 = &self.tmpK0[0] + self.tmpK1 = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + self._tmpK1 = &self.tmpK1[0] + dim2[0] = self.k_states; dim2[1] = self.k_states; + self.tmpL0 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._tmpL0 = &self.tmpL0[0,0] + self.tmpL1 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._tmpL1 = &self.tmpL1[0,0] + + # Kalman Gain + if self.conserve_memory & MEMORY_NO_GAIN > 0: + storage = 1 + else: + storage = self.model.nobs + dim3[0] = self.k_states; dim3[1] = self.k_endog; dim3[2] = storage; + self.kalman_gain = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + + # Likelihood + if self.conserve_memory & MEMORY_NO_LIKELIHOOD > 0: + storage = 1 + else: + storage = self.model.nobs + dim1[0] = storage + self.loglikelihood = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + self.scale = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + + # Converged matrices + dim2[0] = self.k_endog; dim2[1] = self.k_endog; + self.converged_forecast_error_cov = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._converged_forecast_error_cov = &self.converged_forecast_error_cov[0,0] + dim2[0] = self.k_states; dim2[1] = self.k_states; + self.converged_filtered_state_cov = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._converged_filtered_state_cov = &self.converged_filtered_state_cov[0,0] + dim2[0] = self.k_states; dim2[1] = self.k_states; + self.converged_predicted_state_cov = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._converged_predicted_state_cov = &self.converged_predicted_state_cov[0,0] + dim2[0] = self.k_states; dim2[1] = self.k_endog; + self.converged_kalman_gain = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._converged_kalman_gain = &self.converged_kalman_gain[0,0] + dim2[0] = self.k_states; dim2[1] = self.k_endog; + self.converged_M = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._converged_M = &self.converged_M[0,0] + + # #### Arrays for temporary calculations + # *Note*: in math notation below, a $\\#$ will represent a generic + # temporary array, and a $\\#_i$ will represent a named temporary array. + + # Arrays related to matrix factorizations / inverses + dim2[0] = self.k_endog; dim2[1] = self.k_endog; + self.forecast_error_fac = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._forecast_error_fac = &self.forecast_error_fac[0,0] + dim2[0] = self.ldwork; dim2[1] = self.ldwork; + self.forecast_error_work = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._forecast_error_work = &self.forecast_error_work[0,0] + dim1[0] = self.k_endog; + self.forecast_error_ipiv = np.PyArray_ZEROS(1, dim1, np.NPY_INT, FORTRAN) + self._forecast_error_ipiv = &self.forecast_error_ipiv[0] + + # Holds arrays of dimension $(m \times m)$ and $(m \times r)$ + dim2[0] = self.k_states; dim2[1] = self.k_states; + self.tmp0 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._tmp0 = &self.tmp0[0, 0] + + dim2[0] = self.k_states; dim2[1] = self.k_states; + self.tmp00 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._tmp00 = &self.tmp00[0, 0] + + # Optionally we may not want to store temporary arrays required + # for smoothing + if self.conserve_memory & MEMORY_NO_SMOOTHING > 0: + storage = 1 + else: + storage = self.model.nobs + + # Holds arrays of dimension $(m \times p \times T)$ + # $\\#_1 = P_t Z_t'$ + # Also known as the matrix M + dim3[0] = self.k_states; dim3[1] = self.k_endog; dim3[2] = storage; + self.tmp1 = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + + # Holds arrays of dimension $(p \times T)$ + # $\\#_2 = F_t^{-1} v_t$ + dim2[0] = self.k_endog; dim2[1] = storage; + self.tmp2 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + # Holds arrays of dimension $(p \times m \times T)$ + # $\\#_3 = F_t^{-1} Z_t$ + dim3[0] = self.k_endog; dim3[1] = self.k_states; dim3[2] = storage; + self.tmp3 = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + + # Holds arrays of dimension $(p \times p \times T)$ + # $\\#_4 = F_t^{-1} H_t$ + dim3[0] = self.k_endog; dim3[1] = self.k_endog; dim3[2] = storage; + self.tmp4 = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + + cdef void set_dimensions(self): + """ + Set dimensions for the Kalman filter + + These are used *only* to define the shapes of the Kalman filter output + and temporary arrays in memory. They will not change between iterations + of the filter. + + They only differ from the {{prefix}}Statespace versions in the case + that the FILTER_COLLAPSED flag is set, in which case model.k_endog + and kfilter.k_endog will be different + (since kfilter.k_endog = model.k_states). + + Across *iterations* of the Kalman filter, both model.k_* and + kfilter.k_* are fixed, although model._k_* may be different from either + when there is missing data in a given period's observations. + + The actual dimension of the *data* being considered at a given + iteration is always given by model._k_* variables, which take into + account both FILTER_COLLAPSED and missing data. + + But, the dimension *in memory* of the Kalman filter arrays will always + be given by kfilter.k_*. + + The following relations will always hold: + + kfilter.k_endog = model.k_states if self.filter_method & FILTER_COLLAPSED else model.k_endog + kfilter.k_endog = model._k_endog + model._nmissing + """ + self.k_endog = self.model.k_states if self.filter_method & FILTER_COLLAPSED else self.model.k_endog + self.k_states = self.model.k_states + self.k_posdef = self.model.k_posdef + self.k_endog2 = self.k_endog**2 + self.k_states2 = self.k_states**2 + self.k_posdef2 = self.k_posdef**2 + self.k_endogstates = self.k_endog * self.k_states + self.k_statesposdef = self.k_states * self.k_posdef + + cpdef set_filter_method(self, int filter_method, int force_reset=True): + """ + set_filter_method(self, filter_method, force_reset=True) + + Change the filter method. + """ + if not filter_method == self.filter_method or force_reset: + # Check for invalid filter methods + if filter_method & FILTER_COLLAPSED and self.k_endog <= self.k_states: + raise RuntimeError('Cannot collapse observation vector if the' + ' state dimension is equal to or larger than the' + ' dimension of the observation vector.') + + if filter_method & FILTER_COLLAPSED and filter_method & FILTER_CONCENTRATED: + raise RuntimeError('Cannot apply a concentrated likelihood function' + ' with a collapsed observation vector.') + + # Change the smoother output flag + self.filter_method = filter_method + + # Reset dimensions + self.set_dimensions() + + # Reset matrices + self.allocate_arrays() + + # Seek to the beginning + self.seek(0, True) + + cpdef seek(self, unsigned int t, int reset=True): + """ + seek(self, t, reset = True) + + Change the time-state of the filter + + Is usually called to reset the filter to the beginning. + """ + if not t == 0 and t >= self.model.nobs: + raise IndexError("Observation index out of range") + self.t = t + + if reset: + self.nobs_diffuse = 0 + self.nobs_kendog_diffuse_nonsingular = 0 + self.nobs_kendog_univariate_singular = 0 + self.converged = 0 + self.period_converged = 0 + + def __iter__(self): + return self + + def __call__(self, int filter_method=-1): + """ + Iterate the filter across the entire set of observations. + """ + cdef int i + + # Reset the filter method if necessary + if not filter_method == -1: + self.set_filter_method(filter_method) + + # Reset the filter + self.seek(0, True) + + # Perform forward filtering iterations + for i in range(self.model.nobs): + next(self) + + def __next__(self): + """ + Perform an iteration of the Kalman filter + """ + cdef int inc = 1 + cdef int filtered_t = self.t + cdef int predicted_t = self.t + if self.conserve_memory & MEMORY_NO_FILTERED > 0: + filtered_t = 1 + if self.conserve_memory & MEMORY_NO_PREDICTED > 0: + predicted_t = 1 + + # Get time subscript, and stop the iterator if at the end + if not self.t < self.model.nobs: + raise StopIteration + + # Clear values + if self.t == 0 or not (self.conserve_memory & MEMORY_NO_LIKELIHOOD): + self.loglikelihood[self.t] = 0 + self.scale[self.t] = 0 + + # Initialize pointers to current-iteration objects + self.initialize_statespace_object_pointers() + self.initialize_filter_object_pointers() + + # Initialize pointers to appropriate Kalman filtering functions + self.initialize_function_pointers() + + # Convert base arrays into "selected" arrays + # - State covariance matrix? $Q_t \to R_t Q_t R_t`$ + # - Missing values: $y_t \to W_t y_t$, $Z_t \to W_t Z_t$, $H_t \to W_t H_t$ + # self.select_state_cov() + # self.select_missing() + # self.transform() + + # Post-convergence: copy previous iteration arrays + self.post_convergence() + + # Prediction step (alternate timing) + if self.filter_timing == TIMING_INIT_FILTERED: + # We need to shift back to the previous filtered_* arrays, or to + # the initial_* arrays if we're at time t==0 + if self.t == 0: + self._filtered_state = self.model._initial_state + self._filtered_state_cov = self.model._initial_state_cov + + self._input_diffuse_state_cov = self.model._initial_diffuse_state_cov + if self.check_diffuse(): + raise NotImplementedError('Cannot use alternate ("filtered")' + ' timing with exact diffuse' + ' initialization.') + else: + self._filtered_state = &self.filtered_state[0, filtered_t-1] + self._filtered_state_cov = &self.filtered_state_cov[0, 0, filtered_t-1] + + # Perform the prediction step + self.prediction(self, self.model) + # self._prediction() + + # Aids to numerical stability + self.numerical_stability() + + # Now shift back to the current filtered_* arrays (so they can be + # set in the updating step) + self._filtered_state = &self.filtered_state[0, filtered_t] + self._filtered_state_cov = &self.filtered_state_cov[0, 0, filtered_t] + + # Form forecasts + self.forecasting(self, self.model) + # self._forecasting() + + # Perform `forecast_error_cov` inversion (or decomposition) + self.determinant = self.inversion(self, self.model, self.determinant) + # self.determinant = self._inversion() + + # Updating step + self.updating(self, self.model) + # self._updating() + + # Retrieve the loglikelihood + if not self.conserve_memory & MEMORY_NO_LIKELIHOOD or self.t >= self.loglikelihood_burn: + self._loglikelihood[0] = ( + self._loglikelihood[0] + + self.calculate_loglikelihood(self, self.model, self.determinant) + + # self._calculate_loglikelihood() + + self.model.collapse_loglikelihood + ) + if self.filter_method & FILTER_CONCENTRATED: + self._scale[0] = self._scale[0] + self.calculate_scale(self, self.model) + + # Prediction step (default timing) + if self.filter_timing == TIMING_INIT_PREDICTED: + self.prediction(self, self.model) + # self._prediction() + + # Aids to numerical stability + self.numerical_stability() + + # Last prediction step (alternate timing) + if self.filter_timing == TIMING_INIT_FILTERED and self.t == self.model.nobs-1: + self._predicted_state = &self.predicted_state[0, predicted_t+1] + self._predicted_state_cov = &self.predicted_state_cov[0, 0, predicted_t+1] + self._predicted_diffuse_state_cov = &self.predicted_diffuse_state_cov[0, 0, predicted_t+1] + self.prediction(self, self.model) + + # Check for convergence + self.check_convergence() + + # If conserving memory, migrate storage: t->t-1, t+1->t + self.migrate_storage() + + # Advance the time + self.t += 1 + + cdef void _forecasting(self): + {{prefix}}forecast_univariate(self, self.model) + + cdef {{cython_type}} _inversion(self): + {{prefix}}inverse_noop_univariate(self, self.model, self.determinant) + + cdef void _updating(self): + {{prefix}}updating_univariate(self, self.model) + + cdef {{cython_type}} _calculate_loglikelihood(self): + return {{prefix}}loglikelihood_univariate(self, self.model, self.determinant) + + cdef void _prediction(self): + {{prefix}}prediction_univariate(self, self.model) + + cdef void initialize_statespace_object_pointers(self) except *: + cdef: + int transform_diagonalize = 0 + int transform_generalized_collapse = 0 + + # Determine which transformations need to be made + transform_generalized_collapse = self.filter_method & FILTER_COLLAPSED + transform_diagonalize = self.filter_method & FILTER_UNIVARIATE + + # Initialize object-level pointers to statespace arrays + #self.model.initialize_object_pointers(self.t) + self.model.seek(self.t, transform_diagonalize, transform_generalized_collapse) + + # Handle missing data + if self.model._nmissing > 0 or (self.model.has_missing and self.filter_method & FILTER_UNIVARIATE): + # TODO there is likely a way to allow convergence and the univariate filter, but it + # doesn't work "out-of-the-box" right now + self.converged = 0 + + cdef void initialize_filter_object_pointers(self): + cdef: + int t = self.t + int inc = 1 + # Indices for arrays that may or may not be stored completely + cdef: + int forecast_t = t + int filtered_t = t + int predicted_t = t + int gain_t = t + int smoothing_t = t + int loglikelihood_t = t + int std_forecast_t = t + if self.conserve_memory & MEMORY_NO_FORECAST > 0: + forecast_t = 1 + if self.conserve_memory & MEMORY_NO_FILTERED > 0: + filtered_t = 1 + if self.conserve_memory & MEMORY_NO_PREDICTED > 0: + predicted_t = 1 + if self.conserve_memory & MEMORY_NO_GAIN > 0: + gain_t = 0 + if self.conserve_memory & MEMORY_NO_SMOOTHING > 0: + smoothing_t = 0 + if self.conserve_memory & MEMORY_NO_LIKELIHOOD > 0: + loglikelihood_t = 0 + if self.conserve_memory & MEMORY_NO_STD_FORECAST > 0: + std_forecast_t = 0 + + # Initialize object-level pointers to input arrays + self._input_state = &self.predicted_state[0, predicted_t] + self._input_state_cov = &self.predicted_state_cov[0, 0, predicted_t] + self._input_diffuse_state_cov = &self.predicted_diffuse_state_cov[0, 0, predicted_t] + + # Copy initialization arrays to input arrays if we're starting the + # filter + if t == 0 and self.filter_timing == TIMING_INIT_PREDICTED: + # `predicted_state[:,0]` $= a_1 =$ `initial_state` + # `predicted_state_cov[:,:,0]` $= P_1 =$ `initial_state_cov` + # Under the default timing assumption (TIMING_INIT_PREDICTED), the + # recursion takes $a_t, P_t$ as input, and as a last step computes + # $a_{t+1}, P_{t+1}$, which can be input for the next recursion. + # This means that the filter ends by computing $a_{T+1}, P_{T+1}$, + # so that the predicted_* arrays have time-dimension T+1, rather than + # T like all the other arrays. + # Note that $a_{T+1}, P_{T+1}$ should not be in use anywhere. + # TODO phase out any use of these, and eventually stop computing it + # This means that the zeroth entry in the time-dimension can hold the + # input array (even though it is no different than what is held in the + # initial_state_* arrays). + blas.{{prefix}}copy(&self.model._k_states, self.model._initial_state, &inc, self._input_state, &inc) + blas.{{prefix}}copy(&self.model._k_states2, self.model._initial_state_cov, &inc, self._input_state_cov, &inc) + blas.{{prefix}}copy(&self.model._k_states2, self.model._initial_diffuse_state_cov, &inc, self._input_diffuse_state_cov, &inc) + + # Initialize object-level pointers to output arrays + self._forecast = &self.forecast[0, forecast_t] + self._forecast_error = &self.forecast_error[0, forecast_t] + self._forecast_error_cov = &self.forecast_error_cov[0, 0, forecast_t] + self._forecast_error_diffuse_cov = &self.forecast_error_diffuse_cov[0, 0, forecast_t] + self._standardized_forecast_error = &self.standardized_forecast_error[0, std_forecast_t] + + self._filtered_state = &self.filtered_state[0, filtered_t] + self._filtered_state_cov = &self.filtered_state_cov[0, 0, filtered_t] + + if self.filter_timing == TIMING_INIT_PREDICTED: + self._predicted_state = &self.predicted_state[0, predicted_t+1] + self._predicted_state_cov = &self.predicted_state_cov[0, 0, predicted_t+1] + self._predicted_diffuse_state_cov = &self.predicted_diffuse_state_cov[0, 0, predicted_t+1] + else: + self._predicted_state = &self.predicted_state[0, predicted_t] + self._predicted_state_cov = &self.predicted_state_cov[0, 0, predicted_t] + self._predicted_diffuse_state_cov = &self.predicted_diffuse_state_cov[0, 0, predicted_t] + self._M = &self.M[0, 0, predicted_t] + self._M_inf = &self.M_inf[0, 0, predicted_t] + + self._kalman_gain = &self.kalman_gain[0, 0, gain_t] + + self._loglikelihood = &self.loglikelihood[loglikelihood_t] + self._scale = &self.scale[loglikelihood_t] + + # Initialize object-level pointers to named temporary arrays + self._tmp1 = &self.tmp1[0, 0, smoothing_t] + self._tmp2 = &self.tmp2[0, smoothing_t] + self._tmp3 = &self.tmp3[0, 0, smoothing_t] + self._tmp4 = &self.tmp4[0, 0, smoothing_t] + + cdef void initialize_function_pointers(self) except *: + cdef int diffuse = self.check_diffuse() + + # Filtering method + + # Must use univariate diffuse method if we are at a diffuse observation + if diffuse: + self.forecasting = {{prefix}}forecast_univariate_diffuse + self.updating = {{prefix}}updating_univariate_diffuse + self.inversion = {{prefix}}inverse_noop_univariate_diffuse + self.calculate_loglikelihood = {{prefix}}loglikelihood_univariate_diffuse + self.calculate_scale = {{prefix}}scale_univariate + self.prediction = {{prefix}}prediction_univariate_diffuse + # Univariate method + elif self.filter_method & FILTER_UNIVARIATE: + self.forecasting = {{prefix}}forecast_univariate + self.updating = {{prefix}}updating_univariate + self.inversion = {{prefix}}inverse_noop_univariate + self.calculate_loglikelihood = {{prefix}}loglikelihood_univariate + self.calculate_scale = {{prefix}}scale_univariate + self.prediction = {{prefix}}prediction_univariate + # Conventional method + elif self.filter_method & FILTER_CONVENTIONAL: + self.forecasting = {{prefix}}forecast_conventional + self.updating = {{prefix}}updating_conventional + self.calculate_loglikelihood = {{prefix}}loglikelihood_conventional + self.calculate_scale = {{prefix}}scale_conventional + self.prediction = {{prefix}}prediction_conventional + + # Inversion method + if self.inversion_method & INVERT_UNIVARIATE and self.k_endog == 1: + self.inversion = {{prefix}}inverse_univariate + elif self.inversion_method & SOLVE_CHOLESKY: + self.inversion = {{prefix}}solve_cholesky + elif self.inversion_method & SOLVE_LU: + self.inversion = {{prefix}}solve_lu + elif self.inversion_method & INVERT_CHOLESKY: + self.inversion = {{prefix}}inverse_cholesky + elif self.inversion_method & INVERT_LU: + self.inversion = {{prefix}}inverse_lu + else: + raise NotImplementedError("Invalid inversion method") + else: + raise NotImplementedError("Invalid filtering method") + + # Handle completely missing data, can always just use conventional + # methods + if self.model._nmissing == self.model.k_endog: + # Change the forecasting step to set the forecast at the intercept + # $d_t$, so that the forecast error is $v_t = y_t - d_t$. + self.forecasting = {{prefix}}forecast_missing_conventional + + # Change the updating step to just copy $a_{t|t} = a_t$ and + # $P_{t|t} = P_t$ + self.updating = {{prefix}}updating_missing_conventional + + # Change the inversion step to inverse to nans. + self.inversion = {{prefix}}inverse_missing_conventional + + # Change the loglikelihood calculation to give zero. + self.calculate_loglikelihood = {{prefix}}loglikelihood_missing_conventional + self.calculate_scale = {{prefix}}scale_missing_conventional + + # The prediction step is the same as the conventional Kalman + # filter + + cdef void post_convergence(self): + # Constants + cdef: + int inc = 1 + + if self.converged: + # $F_t$ + blas.{{prefix}}copy(&self.k_endog2, self._converged_forecast_error_cov, &inc, self._forecast_error_cov, &inc) + # $P_{t|t}$ + blas.{{prefix}}copy(&self.k_states2, self._converged_filtered_state_cov, &inc, self._filtered_state_cov, &inc) + # $P_t$ + blas.{{prefix}}copy(&self.k_states2, self._converged_predicted_state_cov, &inc, self._predicted_state_cov, &inc) + # $K_t$ + blas.{{prefix}}copy(&self.k_endogstates, self._converged_kalman_gain, &inc, self._kalman_gain, &inc) + # $|F_t|$ + self.determinant = self.converged_determinant + # $M_t$ + blas.{{prefix}}copy(&self.k_endogstates, self._converged_M, &inc, self._M, &inc) + + cdef void numerical_stability(self): + cdef int i, j + cdef int predicted_t = self.t + cdef {{cython_type}} value + + if self.conserve_memory & MEMORY_NO_PREDICTED: + predicted_t = 1 + + if self.filter_timing == TIMING_INIT_PREDICTED: + predicted_t += 1 + + if self.stability_method & STABILITY_FORCE_SYMMETRY: + # Enforce symmetry of predicted covariance matrix + # $P_{t+1} = 0.5 * (P_{t+1} + P_{t+1}')$ + # See Grewal (2001), Section 6.3.1.1 + for i in range(self.k_states): + for j in range(i, self.k_states): + value = 0.5 * ( + self.predicted_state_cov[i,j,predicted_t] + + self.predicted_state_cov[j,i,predicted_t] + ) + self.predicted_state_cov[i,j,predicted_t] = value + self.predicted_state_cov[j,i,predicted_t] = value + + cdef int check_diffuse(self): + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} scalar + + if self.t == self.nobs_diffuse: + {{if combined_prefix == 'd'}} + if blas.{{prefix}}dot(&self.k_states2, self._input_diffuse_state_cov, &inc, self._input_diffuse_state_cov, &inc) > self.tolerance_diffuse: + self.nobs_diffuse = self.nobs_diffuse + 1 + {{else}} + blas.{{prefix}}gemv("N", &inc, &self.k_states2, &alpha, self._input_diffuse_state_cov, &inc, self._input_diffuse_state_cov, &inc, &beta, self._tmp00, &inc) + if {{combined_prefix}}abs(self._tmp00[0]) > self.tolerance_diffuse: + self.nobs_diffuse = self.nobs_diffuse + 1 + {{endif}} + + return self.t < self.nobs_diffuse + + cdef void check_convergence(self): + # Constants + cdef: + int inc = 1, missing_flag = 0 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + # Indices for arrays that may or may not be stored completely + cdef: + int forecast_t = self.t + int filtered_t = self.t + int predicted_t = self.t + int gain_t = self.t + if self.conserve_memory & MEMORY_NO_FORECAST > 0: + forecast_t = 1 + if self.conserve_memory & MEMORY_NO_FILTERED > 0: + filtered_t = 1 + if self.conserve_memory & MEMORY_NO_PREDICTED > 0: + predicted_t = 1 + if self.conserve_memory & MEMORY_NO_GAIN > 0: + gain_t = 0 + + # Figure out if there is a missing value + if self.model.nmissing[self.t] > 0 or (not self.t == 0 and self.model.nmissing[self.t-1] > 0): + missing_flag = 1 + + if self.time_invariant and not self.converged and not missing_flag and not self.t < self.nobs_diffuse + 1: + # #### Check for steady-state convergence + # + # `tmp0` array used here, dimension $(m \times m)$ + # `tmp00` array used here, dimension $(1 \times 1)$ + if self.filter_timing == TIMING_INIT_PREDICTED: + blas.{{prefix}}copy(&self.k_states2, self._input_state_cov, &inc, self._tmp0, &inc) + blas.{{prefix}}axpy(&self.k_states2, &gamma, self._predicted_state_cov, &inc, self._tmp0, &inc) + elif self.t > 0: + blas.{{prefix}}copy(&self.k_states2, &self.predicted_state_cov[0,0,predicted_t], &inc, self._tmp0, &inc) + blas.{{prefix}}axpy(&self.k_states2, &gamma, &self.predicted_state_cov[0,0,predicted_t-1], &inc, self._tmp0, &inc) + else: + return + + + {{if combined_prefix == 'd'}} + if blas.{{prefix}}dot(&self.k_states2, self._tmp0, &inc, self._tmp0, &inc) < self.tolerance: + self.converged = 1 + self.period_converged = self.t + + {{else}} + blas.{{prefix}}gemv("N", &inc, &self.k_states2, &alpha, self._tmp0, &inc, self._tmp0, &inc, &beta, self._tmp00, &inc) + if {{combined_prefix}}abs(self._tmp00[0]) < self.tolerance: + self.converged = 1 + self.period_converged = self.t + {{endif}} + + # If we just converged, copy the current iteration matrices to the + # converged storage + if self.converged == 1: + # $F_t$ + blas.{{prefix}}copy(&self.k_endog2, &self.forecast_error_cov[0, 0, forecast_t], &inc, self._converged_forecast_error_cov, &inc) + # $P_{t|t}$ + blas.{{prefix}}copy(&self.k_states2, &self.filtered_state_cov[0, 0, filtered_t], &inc, self._converged_filtered_state_cov, &inc) + # $P_t$ + blas.{{prefix}}copy(&self.k_states2, &self.predicted_state_cov[0, 0, predicted_t], &inc, self._converged_predicted_state_cov, &inc) + # $|F_t|$ + self.converged_determinant = self.determinant + # $K_t$ + blas.{{prefix}}copy(&self.k_endogstates, &self.kalman_gain[0, 0, gain_t], &inc, self._converged_kalman_gain, &inc) + # $M_t$ + blas.{{prefix}}copy(&self.k_endogstates, &self.M[0, 0, predicted_t], &inc, self._converged_M, &inc) + + cdef void migrate_storage(self): + cdef: + int inc = 1 + int diffuse = self.check_diffuse() + + + # Forecast: 1 -> 0 + if self.conserve_memory & MEMORY_NO_FORECAST > 0: + blas.{{prefix}}copy(&self.k_endog, &self.forecast[0, 1], &inc, &self.forecast[0, 0], &inc) + blas.{{prefix}}copy(&self.k_endog, &self.forecast_error[0, 1], &inc, &self.forecast_error[0, 0], &inc) + blas.{{prefix}}copy(&self.k_endog2, &self.forecast_error_cov[0, 0, 1], &inc, &self.forecast_error_cov[0, 0, 0], &inc) + + # Filtered: 1 -> 0 + if self.conserve_memory & MEMORY_NO_FILTERED > 0: + blas.{{prefix}}copy(&self.k_states, &self.filtered_state[0, 1], &inc, &self.filtered_state[0, 0], &inc) + blas.{{prefix}}copy(&self.k_states2, &self.filtered_state_cov[0, 0, 1], &inc, &self.filtered_state_cov[0, 0, 0], &inc) + + # Predicted: 1 -> 0 + if self.conserve_memory & MEMORY_NO_PREDICTED > 0: + blas.{{prefix}}copy(&self.k_states, &self.predicted_state[0, 1], &inc, &self.predicted_state[0, 0], &inc) + blas.{{prefix}}copy(&self.k_states2, &self.predicted_state_cov[0, 0, 1], &inc, &self.predicted_state_cov[0, 0, 0], &inc) + if diffuse: + blas.{{prefix}}copy(&self.k_states2, &self.predicted_diffuse_state_cov[0, 0, 1], &inc, &self.predicted_diffuse_state_cov[0, 0, 0], &inc) + + # Predicted: 2 -> 1 + if self.filter_timing == TIMING_INIT_PREDICTED: + blas.{{prefix}}copy(&self.k_states, &self.predicted_state[0, 2], &inc, &self.predicted_state[0, 1], &inc) + blas.{{prefix}}copy(&self.k_states2, &self.predicted_state_cov[0, 0, 2], &inc, &self.predicted_state_cov[0, 0, 1], &inc) + if diffuse: + blas.{{prefix}}copy(&self.k_states2, &self.predicted_diffuse_state_cov[0, 0, 2], &inc, &self.predicted_diffuse_state_cov[0, 0, 1], &inc) + + +{{endfor}} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/_kalman_smoother.pxd b/statsmodels/tsa/statespace/_kalman_smoother.pxd new file mode 100644 index 0000000..ee0e672 --- /dev/null +++ b/statsmodels/tsa/statespace/_kalman_smoother.pxd @@ -0,0 +1,479 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Model Smoother declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cdef int SMOOTHER_STATE # Durbin and Koopman (2012), Chapter 4.4.2 +cdef int SMOOTHER_STATE_COV # Durbin and Koopman (2012), Chapter 4.4.3 +cdef int SMOOTHER_DISTURBANCE # Durbin and Koopman (2012), Chapter 4.5 +cdef int SMOOTHER_DISTURBANCE_COV # Durbin and Koopman (2012), Chapter 4.5 +cdef int SMOOTHER_STATE_AUTOCOV # Durbin and Koopman (2012), Chapter 4.7 +cdef int SMOOTHER_ALL + +cdef int SMOOTH_CONVENTIONAL +cdef int SMOOTH_CLASSICAL +cdef int SMOOTH_ALTERNATIVE +cdef int SMOOTH_UNIVARIATE + +# Typical imports +cimport numpy as np + +from statsmodels.tsa.statespace._representation cimport ( + sStatespace, dStatespace, cStatespace, zStatespace +) +from statsmodels.tsa.statespace._kalman_filter cimport ( + sKalmanFilter, dKalmanFilter, cKalmanFilter, zKalmanFilter +) + +# Single precision +cdef class sKalmanSmoother(object): + # Statespace object + cdef readonly sStatespace model + # Kalman filter + cdef readonly sKalmanFilter kfilter + + cdef readonly int t + cdef readonly int smoother_output + cdef readonly int smooth_method + cdef readonly int _smooth_method + cdef readonly int filter_method + + cdef readonly np.float32_t [::1,:] scaled_smoothed_estimator + cdef readonly np.float32_t [::1,:,:] scaled_smoothed_estimator_cov + cdef readonly np.float32_t [::1,:] smoothing_error + cdef readonly np.float32_t [::1,:] smoothed_state + cdef readonly np.float32_t [::1,:,:] smoothed_state_cov + cdef readonly np.float32_t [::1,:] smoothed_measurement_disturbance + cdef readonly np.float32_t [::1,:] smoothed_state_disturbance + cdef readonly np.float32_t [::1,:,:] smoothed_measurement_disturbance_cov + cdef readonly np.float32_t [::1,:,:] smoothed_state_disturbance_cov + + cdef readonly np.float32_t [::1,:,:] smoothed_state_autocov + cdef readonly np.float32_t [::1,:] tmp_autocov + + cdef readonly np.float32_t [::1,:] scaled_smoothed_diffuse_estimator + cdef readonly np.float32_t [::1,:,:] scaled_smoothed_diffuse1_estimator_cov + cdef readonly np.float32_t [::1,:,:] scaled_smoothed_diffuse2_estimator_cov + + cdef readonly np.float32_t [:] selected_design + cdef readonly np.float32_t [:] selected_obs_cov + + cdef readonly np.float32_t [::1,:] tmpL, tmpL2, tmp0, tmp00, tmp000 + + # Statespace + # cdef np.float32_t * _design + # cdef np.float32_t * _obs_cov + # cdef np.float32_t * _transition + # cdef np.float32_t * _selection + # cdef np.float32_t * _state_cov + + # Kalman filter + # cdef np.float32_t * _predicted_state + # cdef np.float32_t * _predicted_state_cov + # cdef np.float32_t * _kalman_gain + + # cdef np.float32_t * _tmp1 + # cdef np.float32_t * _tmp2 + # cdef np.float32_t * _tmp3 + # cdef np.float32_t * _tmp4 + + # Kalman smoother + cdef np.float32_t * _input_scaled_smoothed_estimator + cdef np.float32_t * _input_scaled_smoothed_estimator_cov + + cdef np.float32_t * _scaled_smoothed_estimator + cdef np.float32_t * _scaled_smoothed_estimator_cov + cdef np.float32_t * _smoothing_error + cdef np.float32_t * _smoothed_state + cdef np.float32_t * _smoothed_state_cov + cdef np.float32_t * _smoothed_measurement_disturbance + cdef np.float32_t * _smoothed_state_disturbance + cdef np.float32_t * _smoothed_measurement_disturbance_cov + cdef np.float32_t * _smoothed_state_disturbance_cov + + cdef np.float32_t * _smoothed_state_autocov + cdef np.float32_t * _tmp_autocov + + cdef np.float32_t * _input_scaled_smoothed_diffuse_estimator + cdef np.float32_t * _input_scaled_smoothed_diffuse1_estimator_cov + cdef np.float32_t * _input_scaled_smoothed_diffuse2_estimator_cov + cdef np.float32_t * _scaled_smoothed_diffuse_estimator + cdef np.float32_t * _scaled_smoothed_diffuse1_estimator_cov + cdef np.float32_t * _scaled_smoothed_diffuse2_estimator_cov + + # Temporary + cdef np.float32_t * _tmpL + cdef np.float32_t * _tmpL2 + cdef np.float32_t * _tmp0 + cdef np.float32_t * _tmp00 + cdef np.float32_t * _tmp000 + + # Functions + cdef int (*smooth_estimators_measurement)( + sKalmanSmoother, sKalmanFilter, sStatespace + ) except * + cdef int (*smooth_estimators_time)( + sKalmanSmoother, sKalmanFilter, sStatespace + ) + cdef int (*smooth_state)( + sKalmanSmoother, sKalmanFilter, sStatespace + ) + cdef int (*smooth_disturbances)( + sKalmanSmoother, sKalmanFilter, sStatespace + ) + + # cdef readonly int k_endog, k_states, k_posdef, k_endog2, k_states2, k_posdef2, k_endogstates, k_statesposdef + + cdef allocate_arrays(self) + cdef int check_filter_method_changed(self) + cdef int reset_filter_method(self, int force_reset=*) + cpdef set_smoother_output(self, int smoother_output, int force_reset=*) + cpdef set_smooth_method(self, int smooth_method) + cpdef reset(self, int force_reset=*) + cpdef seek(self, unsigned int t) + cdef void initialize_statespace_object_pointers(self) except * + cdef void initialize_filter_object_pointers(self) + cdef void initialize_smoother_object_pointers(self) except * + cdef void initialize_function_pointers(self) except * + cdef void _initialize_temp_pointers(self) except * + +# Double precision +cdef class dKalmanSmoother(object): + # Statespace object + cdef readonly dStatespace model + # Kalman filter + cdef readonly dKalmanFilter kfilter + + cdef readonly int t + cdef readonly int smoother_output + cdef readonly int smooth_method + cdef readonly int _smooth_method + cdef readonly int filter_method + + cdef readonly np.float64_t [::1,:] scaled_smoothed_estimator + cdef readonly np.float64_t [::1,:,:] scaled_smoothed_estimator_cov + cdef readonly np.float64_t [::1,:] smoothing_error + cdef readonly np.float64_t [::1,:] smoothed_state + cdef readonly np.float64_t [::1,:,:] smoothed_state_cov + cdef readonly np.float64_t [::1,:] smoothed_measurement_disturbance + cdef readonly np.float64_t [::1,:] smoothed_state_disturbance + cdef readonly np.float64_t [::1,:,:] smoothed_measurement_disturbance_cov + cdef readonly np.float64_t [::1,:,:] smoothed_state_disturbance_cov + + cdef readonly np.float64_t [::1,:,:] smoothed_state_autocov + cdef readonly np.float64_t [::1,:] tmp_autocov + + cdef readonly np.float64_t [::1,:] scaled_smoothed_diffuse_estimator + cdef readonly np.float64_t [::1,:,:] scaled_smoothed_diffuse1_estimator_cov + cdef readonly np.float64_t [::1,:,:] scaled_smoothed_diffuse2_estimator_cov + + cdef readonly np.float64_t [:] selected_design + cdef readonly np.float64_t [:] selected_obs_cov + + cdef readonly np.float64_t [::1,:] tmpL, tmpL2, tmp0, tmp00, tmp000 + + # Statespace + # cdef np.float64_t * _design + # cdef np.float64_t * _obs_cov + # cdef np.float64_t * _transition + # cdef np.float64_t * _selection + # cdef np.float64_t * _state_cov + + # Kalman filter + # cdef np.float64_t * _predicted_state + # cdef np.float64_t * _predicted_state_cov + # cdef np.float64_t * _kalman_gain + + # cdef np.float64_t * _tmp1 + # cdef np.float64_t * _tmp2 + # cdef np.float64_t * _tmp3 + # cdef np.float64_t * _tmp4 + + # Kalman smoother + cdef np.float64_t * _input_scaled_smoothed_estimator + cdef np.float64_t * _input_scaled_smoothed_estimator_cov + + cdef np.float64_t * _scaled_smoothed_estimator + cdef np.float64_t * _scaled_smoothed_estimator_cov + cdef np.float64_t * _smoothing_error + cdef np.float64_t * _smoothed_state + cdef np.float64_t * _smoothed_state_cov + cdef np.float64_t * _smoothed_measurement_disturbance + cdef np.float64_t * _smoothed_state_disturbance + cdef np.float64_t * _smoothed_measurement_disturbance_cov + cdef np.float64_t * _smoothed_state_disturbance_cov + + cdef np.float64_t * _smoothed_state_autocov + cdef np.float64_t * _tmp_autocov + + cdef np.float64_t * _input_scaled_smoothed_diffuse_estimator + cdef np.float64_t * _input_scaled_smoothed_diffuse1_estimator_cov + cdef np.float64_t * _input_scaled_smoothed_diffuse2_estimator_cov + cdef np.float64_t * _scaled_smoothed_diffuse_estimator + cdef np.float64_t * _scaled_smoothed_diffuse1_estimator_cov + cdef np.float64_t * _scaled_smoothed_diffuse2_estimator_cov + + # Temporary + cdef np.float64_t * _tmpL + cdef np.float64_t * _tmpL2 + cdef np.float64_t * _tmp0 + cdef np.float64_t * _tmp00 + cdef np.float64_t * _tmp000 + + # Functions + cdef int (*smooth_estimators_measurement)( + dKalmanSmoother, dKalmanFilter, dStatespace + ) except * + cdef int (*smooth_estimators_time)( + dKalmanSmoother, dKalmanFilter, dStatespace + ) + cdef int (*smooth_state)( + dKalmanSmoother, dKalmanFilter, dStatespace + ) + cdef int (*smooth_disturbances)( + dKalmanSmoother, dKalmanFilter, dStatespace + ) + + # cdef readonly int k_endog, k_states, k_posdef, k_endog2, k_states2, k_posdef2, k_endogstates, k_statesposdef + + cdef allocate_arrays(self) + cdef int check_filter_method_changed(self) + cdef int reset_filter_method(self, int force_reset=*) + cpdef set_smoother_output(self, int smoother_output, int force_reset=*) + cpdef set_smooth_method(self, int smooth_method) + cpdef reset(self, int force_reset=*) + cpdef seek(self, unsigned int t) + cdef void initialize_statespace_object_pointers(self) except * + cdef void initialize_filter_object_pointers(self) + cdef void initialize_smoother_object_pointers(self) except * + cdef void initialize_function_pointers(self) except * + cdef void _initialize_temp_pointers(self) except * + +# Single precision complex +cdef class cKalmanSmoother(object): + # Statespace object + cdef readonly cStatespace model + # Kalman filter + cdef readonly cKalmanFilter kfilter + + cdef readonly int t + cdef readonly int smoother_output + cdef readonly int smooth_method + cdef readonly int _smooth_method + cdef readonly int filter_method + + cdef readonly np.complex64_t [::1,:] scaled_smoothed_estimator + cdef readonly np.complex64_t [::1,:,:] scaled_smoothed_estimator_cov + cdef readonly np.complex64_t [::1,:] smoothing_error + cdef readonly np.complex64_t [::1,:] smoothed_state + cdef readonly np.complex64_t [::1,:,:] smoothed_state_cov + cdef readonly np.complex64_t [::1,:] smoothed_measurement_disturbance + cdef readonly np.complex64_t [::1,:] smoothed_state_disturbance + cdef readonly np.complex64_t [::1,:,:] smoothed_measurement_disturbance_cov + cdef readonly np.complex64_t [::1,:,:] smoothed_state_disturbance_cov + + cdef readonly np.complex64_t [::1,:,:] smoothed_state_autocov + cdef readonly np.complex64_t [::1,:] tmp_autocov + + cdef readonly np.complex64_t [::1,:] scaled_smoothed_diffuse_estimator + cdef readonly np.complex64_t [::1,:,:] scaled_smoothed_diffuse1_estimator_cov + cdef readonly np.complex64_t [::1,:,:] scaled_smoothed_diffuse2_estimator_cov + + cdef readonly np.complex64_t [:] selected_design + cdef readonly np.complex64_t [:] selected_obs_cov + + cdef readonly np.complex64_t [::1,:] tmpL, tmpL2, tmp0, tmp00, tmp000 + + # Statespace + # cdef np.complex64_t * _design + # cdef np.complex64_t * _obs_cov + # cdef np.complex64_t * _transition + # cdef np.complex64_t * _selection + # cdef np.complex64_t * _state_cov + + # Kalman filter + # cdef np.complex64_t * _predicted_state + # cdef np.complex64_t * _predicted_state_cov + # cdef np.complex64_t * _kalman_gain + + # cdef np.complex64_t * _tmp1 + # cdef np.complex64_t * _tmp2 + # cdef np.complex64_t * _tmp3 + # cdef np.complex64_t * _tmp4 + + # Kalman smoother + cdef np.complex64_t * _input_scaled_smoothed_estimator + cdef np.complex64_t * _input_scaled_smoothed_estimator_cov + + cdef np.complex64_t * _scaled_smoothed_estimator + cdef np.complex64_t * _scaled_smoothed_estimator_cov + cdef np.complex64_t * _smoothing_error + cdef np.complex64_t * _smoothed_state + cdef np.complex64_t * _smoothed_state_cov + cdef np.complex64_t * _smoothed_measurement_disturbance + cdef np.complex64_t * _smoothed_state_disturbance + cdef np.complex64_t * _smoothed_measurement_disturbance_cov + cdef np.complex64_t * _smoothed_state_disturbance_cov + + cdef np.complex64_t * _smoothed_state_autocov + cdef np.complex64_t * _tmp_autocov + + cdef np.complex64_t * _input_scaled_smoothed_diffuse_estimator + cdef np.complex64_t * _input_scaled_smoothed_diffuse1_estimator_cov + cdef np.complex64_t * _input_scaled_smoothed_diffuse2_estimator_cov + cdef np.complex64_t * _scaled_smoothed_diffuse_estimator + cdef np.complex64_t * _scaled_smoothed_diffuse1_estimator_cov + cdef np.complex64_t * _scaled_smoothed_diffuse2_estimator_cov + + # Temporary + cdef np.complex64_t * _tmpL + cdef np.complex64_t * _tmpL2 + cdef np.complex64_t * _tmp0 + cdef np.complex64_t * _tmp00 + cdef np.complex64_t * _tmp000 + + # Functions + cdef int (*smooth_estimators_measurement)( + cKalmanSmoother, cKalmanFilter, cStatespace + ) except * + cdef int (*smooth_estimators_time)( + cKalmanSmoother, cKalmanFilter, cStatespace + ) + cdef int (*smooth_state)( + cKalmanSmoother, cKalmanFilter, cStatespace + ) + cdef int (*smooth_disturbances)( + cKalmanSmoother, cKalmanFilter, cStatespace + ) + + # cdef readonly int k_endog, k_states, k_posdef, k_endog2, k_states2, k_posdef2, k_endogstates, k_statesposdef + + cdef allocate_arrays(self) + cdef int check_filter_method_changed(self) + cdef int reset_filter_method(self, int force_reset=*) + cpdef set_smoother_output(self, int smoother_output, int force_reset=*) + cpdef set_smooth_method(self, int smooth_method) + cpdef reset(self, int force_reset=*) + cpdef seek(self, unsigned int t) + cdef void initialize_statespace_object_pointers(self) except * + cdef void initialize_filter_object_pointers(self) + cdef void initialize_smoother_object_pointers(self) except * + cdef void initialize_function_pointers(self) except * + cdef void _initialize_temp_pointers(self) except * + +# Double precision complex +cdef class zKalmanSmoother(object): + # Statespace object + cdef readonly zStatespace model + # Kalman filter + cdef readonly zKalmanFilter kfilter + + cdef readonly int t + cdef readonly int smoother_output + cdef readonly int smooth_method + cdef readonly int _smooth_method + cdef readonly int filter_method + + cdef readonly np.complex128_t [::1,:] scaled_smoothed_estimator + cdef readonly np.complex128_t [::1,:,:] scaled_smoothed_estimator_cov + cdef readonly np.complex128_t [::1,:] smoothing_error + cdef readonly np.complex128_t [::1,:] smoothed_state + cdef readonly np.complex128_t [::1,:,:] smoothed_state_cov + cdef readonly np.complex128_t [::1,:] smoothed_measurement_disturbance + cdef readonly np.complex128_t [::1,:] smoothed_state_disturbance + cdef readonly np.complex128_t [::1,:,:] smoothed_measurement_disturbance_cov + cdef readonly np.complex128_t [::1,:,:] smoothed_state_disturbance_cov + + cdef readonly np.complex128_t [::1,:,:] smoothed_state_autocov + cdef readonly np.complex128_t [::1,:] tmp_autocov + + cdef readonly np.complex128_t [::1,:] scaled_smoothed_diffuse_estimator + cdef readonly np.complex128_t [::1,:,:] scaled_smoothed_diffuse1_estimator_cov + cdef readonly np.complex128_t [::1,:,:] scaled_smoothed_diffuse2_estimator_cov + + cdef readonly np.complex128_t [:] selected_design + cdef readonly np.complex128_t [:] selected_obs_cov + + cdef readonly np.complex128_t [::1,:] tmpL, tmpL2, tmp0, tmp00, tmp000 + + # Statespace + # cdef np.complex128_t * _design + # cdef np.complex128_t * _obs_cov + # cdef np.complex128_t * _transition + # cdef np.complex128_t * _selection + # cdef np.complex128_t * _state_cov + + # Kalman filter + # cdef np.complex128_t * _predicted_state + # cdef np.complex128_t * _predicted_state_cov + # cdef np.complex128_t * _kalman_gain + + # cdef np.complex128_t * _tmp1 + # cdef np.complex128_t * _tmp2 + # cdef np.complex128_t * _tmp3 + # cdef np.complex128_t * _tmp4 + + # Kalman smoother + cdef np.complex128_t * _input_scaled_smoothed_estimator + cdef np.complex128_t * _input_scaled_smoothed_estimator_cov + + cdef np.complex128_t * _scaled_smoothed_estimator + cdef np.complex128_t * _scaled_smoothed_estimator_cov + cdef np.complex128_t * _smoothing_error + cdef np.complex128_t * _smoothed_state + cdef np.complex128_t * _smoothed_state_cov + cdef np.complex128_t * _smoothed_measurement_disturbance + cdef np.complex128_t * _smoothed_state_disturbance + cdef np.complex128_t * _smoothed_measurement_disturbance_cov + cdef np.complex128_t * _smoothed_state_disturbance_cov + + cdef np.complex128_t * _smoothed_state_autocov + cdef np.complex128_t * _tmp_autocov + + cdef np.complex128_t * _input_scaled_smoothed_diffuse_estimator + cdef np.complex128_t * _input_scaled_smoothed_diffuse1_estimator_cov + cdef np.complex128_t * _input_scaled_smoothed_diffuse2_estimator_cov + cdef np.complex128_t * _scaled_smoothed_diffuse_estimator + cdef np.complex128_t * _scaled_smoothed_diffuse1_estimator_cov + cdef np.complex128_t * _scaled_smoothed_diffuse2_estimator_cov + + # Temporary + cdef np.complex128_t * _tmpL + cdef np.complex128_t * _tmpL2 + cdef np.complex128_t * _tmp0 + cdef np.complex128_t * _tmp00 + cdef np.complex128_t * _tmp000 + + # Functions + cdef int (*smooth_estimators_measurement)( + zKalmanSmoother, zKalmanFilter, zStatespace + ) except * + cdef int (*smooth_estimators_time)( + zKalmanSmoother, zKalmanFilter, zStatespace + ) + cdef int (*smooth_state)( + zKalmanSmoother, zKalmanFilter, zStatespace + ) + cdef int (*smooth_disturbances)( + zKalmanSmoother, zKalmanFilter, zStatespace + ) + + # cdef readonly int k_endog, k_states, k_posdef, k_endog2, k_states2, k_posdef2, k_endogstates, k_statesposdef + + cdef allocate_arrays(self) + cdef int check_filter_method_changed(self) + cdef int reset_filter_method(self, int force_reset=*) + cpdef set_smoother_output(self, int smoother_output, int force_reset=*) + cpdef set_smooth_method(self, int smooth_method) + cpdef reset(self, int force_reset=*) + cpdef seek(self, unsigned int t) + cdef void initialize_statespace_object_pointers(self) except * + cdef void initialize_filter_object_pointers(self) + cdef void initialize_smoother_object_pointers(self) except * + cdef void initialize_function_pointers(self) except * + cdef void _initialize_temp_pointers(self) except * diff --git a/statsmodels/tsa/statespace/_kalman_smoother.pyx.in b/statsmodels/tsa/statespace/_kalman_smoother.pyx.in new file mode 100644 index 0000000..ae10c34 --- /dev/null +++ b/statsmodels/tsa/statespace/_kalman_smoother.pyx.in @@ -0,0 +1,758 @@ +#cython: profile=False +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# ## Constants + +# ### Smoothers +cdef int SMOOTHER_STATE = 0x01 # Durbin and Koopman (2012), Chapter 4.4.2 +cdef int SMOOTHER_STATE_COV = 0x02 # Durbin and Koopman (2012), Chapter 4.4.3 +cdef int SMOOTHER_DISTURBANCE = 0x04 # Durbin and Koopman (2012), Chapter 4.5 +cdef int SMOOTHER_DISTURBANCE_COV = 0x08 # Durbin and Koopman (2012), Chapter 4.5 +cdef int SMOOTHER_STATE_AUTOCOV = 0x10 # Durbin and Koopman (2012), Chapter 4.7 +cdef int SMOOTHER_ALL = ( + SMOOTHER_STATE | SMOOTHER_STATE_COV | SMOOTHER_STATE_AUTOCOV | + SMOOTHER_DISTURBANCE | SMOOTHER_DISTURBANCE_COV +) + +cdef int SMOOTH_CONVENTIONAL = 0x01 +cdef int SMOOTH_CLASSICAL = 0x02 +cdef int SMOOTH_ALTERNATIVE = 0x04 +cdef int SMOOTH_UNIVARIATE = 0x08 + +from statsmodels.tsa.statespace._kalman_filter cimport ( + FILTER_CONVENTIONAL, FILTER_UNIVARIATE, FILTER_COLLAPSED, + MEMORY_NO_PREDICTED, MEMORY_NO_GAIN, MEMORY_NO_SMOOTHING +) + +# Typical imports +import numpy as np +import warnings +cimport numpy as np +cimport cython + +np.import_array() + +cimport scipy.linalg.cython_blas as blas + +cdef int FORTRAN = 1 + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +}} + +from statsmodels.tsa.statespace._smoothers._conventional cimport ( + {{prefix}}smoothed_estimators_missing_conventional, + {{prefix}}smoothed_disturbances_missing_conventional, + {{prefix}}smoothed_estimators_measurement_conventional, + {{prefix}}smoothed_estimators_time_conventional, + {{prefix}}smoothed_state_conventional, + {{prefix}}smoothed_state_autocov_conventional, + {{prefix}}smoothed_disturbances_conventional +) +from statsmodels.tsa.statespace._smoothers._univariate cimport ( + {{prefix}}smoothed_estimators_measurement_univariate, + {{prefix}}smoothed_estimators_time_univariate, + {{prefix}}smoothed_disturbances_univariate +) +from statsmodels.tsa.statespace._smoothers._univariate_diffuse cimport ( + {{prefix}}smoothed_estimators_measurement_univariate_diffuse, + {{prefix}}smoothed_estimators_time_univariate_diffuse, + {{prefix}}smoothed_state_univariate_diffuse, + {{prefix}}smoothed_disturbances_univariate_diffuse, + {{prefix}}smoothed_state_autocov_univariate_diffuse +) +from statsmodels.tsa.statespace._smoothers._classical cimport ( + {{prefix}}smoothed_estimators_measurement_classical, + {{prefix}}smoothed_estimators_time_classical, + {{prefix}}smoothed_state_classical +) +from statsmodels.tsa.statespace._smoothers._alternative cimport ( + {{prefix}}smoothed_estimators_measurement_alternative, + {{prefix}}smoothed_estimators_time_alternative, + {{prefix}}smoothed_state_alternative, + {{prefix}}smoothed_disturbances_alternative +) + +# ## Kalman filter +cdef class {{prefix}}KalmanSmoother(object): + """ + {{prefix}}KalmanSmoother(model, kfilter, smoother_output=SMOOTHING_ALL) + + A representation of the Kalman smoother recursions; it performs a single + backwards pass through the data (after the forwards pass via the Kalman + filter has already been completed). In all cases, it calculates: + + - `scaled_smoothed_estimator` + - `smoothing_error` + + it can optionally peform three types of smoothing: + + - State smoothing provides `smoothed_state` and `smoothed_state_cov` + - Disturbance smoothing provides `smoothed_measurement_disturbance` and + `smoothed_state_disturbance` + - Simulation smoothing provides `sampled_measurement_disturbance` and + `sampled_state_disturbance` (note that this requires Disturbance + smoothing as well). + + Note: this output arrays in this class are always defined in-memory + according to the original dimensions in the {{prefix}}Statespace object. + + Note: if the `filter_method` of the underlying {{prefix}}KalmanFilter + changes, the smoother *must* be reset using the object callable (__call__) + or the `reset` method. This is because when the filter method is changed, + the filter output arrays are reset. + """ + + # ### Statespace model + # cdef readonly {{prefix}}Statespace model + # ### Kalman filter + # cdef readonly {{prefix}}KalmanFilter kfilter + + # ### Smoother parameters + # Holds the time-iteration state of the filter + # *Note*: must be changed using the `seek` method + # cdef readonly int t + # cdef readonly int smoother_output + # Keep track of the filter method against which the arrays were created + # so that we can re-allocate memory if the filter method changes. + # cdef readonly int filter_method + + # ### Kalman smoother properties + + # `scaled_smoothed_estimator` $\equiv r_t$ is the **scaled smoothed estimator** of $\eta_t$ $(m \times T)$ + # cdef readonly {{cython_type}} [::1,:] scaled_smoothed_estimator + + # `scaled_smoothed_estimator_cov` $\equiv N_t$ is the **scaled smoothed estimator covariance matrix** $(m \times m \times T)$ + # cdef readonly {{cython_type}} [::1,:,:] scaled_smoothed_estimator_cov + + # `smoothing_error` $\equiv u_t = F_{t}^{-1} v_t - K_t' r_t$ is the **smoothing error** $(p \times T)$ + # cdef readonly {{cython_type}} [::1,:] smoothing_error + + # `smoothed_state` $\equiv \hat \alpha_t = E(\alpha_t | Y_n)$ is the **smoothed estimator** of the state $(m \times T)$ + # cdef readonly {{cython_type}} [::1,:] smoothed_state + + # `smoothed_state_cov` $\equiv V_t = Var(\alpha_t | Y_n)$ is the **smoothed state covariance matrix** $(m \times m \times T)$ + # cdef readonly {{cython_type}} [::1,:,:] smoothed_state_cov + + # `smoothed_measurement_disturbance` $\equiv \hat \varepsilon_t = E(\varepsilon_t | Y_n)$ is the **smoothed measurement disturbance** $(p \times T)$ + # cdef readonly {{cython_type}} [::1,:] smoothed_measurement_disturbance + + # `smoothed_state_disturbance` $\equiv \hat \eta_t = E(\eta_t | Y_n)$ is the **smoothed state disturbance** $(r \times T)$ + # cdef readonly {{cython_type}} [::1,:] smoothed_state_disturbance + + # `smoothed_measurement_disturbance_cov` $\equiv Var (\varepsilon_t | Y_n)$ is the **smoothed measurement disturbance covariance matrix** $(p \times p \times T)$ + # cdef readonly {{cython_type}} [::1,:,:] smoothed_measurement_disturbance_cov + + # `smoothed_state_disturbance` $\equiv Var (\eta_t | Y_n)$ is the **smoothed state disturbance covariance matrix** $(r \times r \times T)$ + # cdef readonly {{cython_type}} [::1,:,:] smoothed_state_disturbance_cov + + # ### Temporary arrays + # These matrices are used to temporarily hold selected observation vectors, + # design matrices, and observation covariance matrices in the case of + # missing data. + # The following are contiguous memory segments which are then used to + # store the data in the above matrices. + # cdef readonly {{cython_type}} [:] selected_design + # cdef readonly {{cython_type}} [:] selected_obs_cov + # These hold the memory allocations of the unnamed temporary arrays + # cdef readonly {{cython_type}} [::1,:] tmpL, tmpL2, tmp0, tmp00, tmp000 + + # ### Pointers to current-iteration arrays + + # Statespace + # cdef {{cython_type}} * _design + # cdef {{cython_type}} * _obs_cov + # cdef {{cython_type}} * _transition + # cdef {{cython_type}} * _selection + # cdef {{cython_type}} * _state_cov + + # Kalman filter + # cdef {{cython_type}} * _predicted_state + # cdef {{cython_type}} * _predicted_state_cov + # cdef {{cython_type}} * _kalman_gain + + # cdef {{cython_type}} * _tmp1 + # cdef {{cython_type}} * _tmp2 + # cdef {{cython_type}} * _tmp3 + # cdef {{cython_type}} * _tmp4 + + # Kalman smoother + # cdef {{cython_type}} * _input_scaled_smoothed_estimator + # cdef {{cython_type}} * _input_scaled_smoothed_estimator_cov + + # cdef {{cython_type}} * _scaled_smoothed_estimator + # cdef {{cython_type}} * _scaled_smoothed_estimator_cov + # cdef {{cython_type}} * _smoothing_error + # cdef {{cython_type}} * _smoothed_state + # cdef {{cython_type}} * _smoothed_state_cov + # cdef {{cython_type}} * _smoothed_measurement_disturbance + # cdef {{cython_type}} * _smoothed_state_disturbance + # cdef {{cython_type}} * _smoothed_measurement_disturbance_cov + # cdef {{cython_type}} * _smoothed_state_disturbance_cov + + # cdef {{cython_type}} * _tmpL + # cdef {{cython_type}} * _tmpL2 + # cdef {{cython_type}} * _tmp0 + # cdef {{cython_type}} * _tmp00 + # cdef {{cython_type}} * _tmp000 + + # ### Pointers to current-iteration Kalman smoothing functions + # cdef int (*smooth_estimators)( + # {{prefix}}KalmanSmoother, {{prefix}}KalmanFilter, {{prefix}}Statespace + # ) + # cdef int (*smooth_state)( + # {{prefix}}KalmanSmoother, {{prefix}}KalmanFilter, {{prefix}}Statespace + # ) + # cdef int (*smooth_disturbances)( + # {{prefix}}KalmanSmoother, {{prefix}}KalmanFilter, {{prefix}}Statespace + # ) + + # ### Define some constants + # cdef readonly int k_endog, k_states, k_posdef, k_endog2, k_states2, k_posdef2, k_endogstates, k_statesposdef + + def __init__(self, + {{prefix}}Statespace model, + {{prefix}}KalmanFilter kfilter, + int smoother_output=SMOOTHER_ALL, + int smooth_method=0): + + # Save the model + self.model = model + self.kfilter = kfilter + + # Save the parameters + self.filter_method = kfilter.filter_method + + # Make sure the appropriate output has been stored in the filter + if self.kfilter.conserve_memory & MEMORY_NO_PREDICTED: + raise ValueError('Cannot perform smoothing without all prediced states') + + if self.kfilter.conserve_memory & MEMORY_NO_GAIN: + raise ValueError('Cannot perform smoothing without all Kalman gains') + + if self.kfilter.conserve_memory & MEMORY_NO_SMOOTHING: + raise ValueError('Cannot perform smoothing without all smoothing variables') + + # Set smoothing output and initialize output arrays + self.set_smoother_output(smoother_output) + self.set_smooth_method(smooth_method) + + cdef allocate_arrays(self): + cdef: + np.npy_intp dim1[1] + np.npy_intp dim2[2] + np.npy_intp dim3[3] + # #### Allocate arrays for calculations + # Note: these are defined in memory according to the kfilter dimensions + # In the case of FILTERED_COLLAPSED, the smoothed measurement + # output describes only the component of transformed observations + # that is related to the states. + + # Arrays for Kalman smoother output + dim2[0] = self.kfilter.k_states; dim2[1] = self.model.nobs+1; + self.scaled_smoothed_estimator = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim3[0] = self.kfilter.k_states; dim3[1] = self.kfilter.k_states; dim3[2] = self.model.nobs+1; + self.scaled_smoothed_estimator_cov = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + dim2[0] = self.kfilter.k_endog; dim2[1] = self.model.nobs; + self.smoothing_error = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim2[0] = self.kfilter.k_states; dim2[1] = self.model.nobs; + self.smoothed_state = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim3[0] = self.kfilter.k_states; dim3[1] = self.kfilter.k_states; dim3[2] = self.model.nobs; + self.smoothed_state_cov = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + dim2[0] = self.kfilter.k_endog; dim2[1] = self.model.nobs; + self.smoothed_measurement_disturbance = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim2[0] = self.kfilter.k_posdef; dim2[1] = self.model.nobs; + self.smoothed_state_disturbance = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim3[0] = self.kfilter.k_endog; dim3[1] = self.kfilter.k_endog; dim3[2] = self.model.nobs; + self.smoothed_measurement_disturbance_cov = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + dim3[0] = self.kfilter.k_posdef; dim3[1] = self.kfilter.k_posdef; dim3[2] = self.model.nobs; + self.smoothed_state_disturbance_cov = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + + # Smoothed state autocovariance arrays + dim3[0] = self.kfilter.k_states; dim3[1] = self.kfilter.k_states; dim3[2] = self.model.nobs + self.smoothed_state_autocov = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + + dim2[0] = self.kfilter.k_states; dim2[1] = self.kfilter.k_states; + self.tmp_autocov = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._tmp_autocov = &self.tmp_autocov[0, 0] + + # Diffuse output + dim2[0] = self.kfilter.k_states; dim2[1] = self.model.nobs+1; + self.scaled_smoothed_diffuse_estimator = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim3[0] = self.kfilter.k_states; dim3[1] = self.kfilter.k_states; dim3[2] = self.model.nobs+1; + self.scaled_smoothed_diffuse1_estimator_cov = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + self.scaled_smoothed_diffuse2_estimator_cov = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + + # #### Arrays for temporary calculations + # *Note*: in math notation below, a $\\#$ will represent a generic + # temporary array, and a $\\#_i$ will represent a named temporary array. + + # # $L_t$ $(m \times m)$, also holds $(m \times r)$ sometimes + dim2[0] = self.kfilter.k_states; dim2[1] = max(self.kfilter.k_states, self.kfilter.k_posdef); + self.tmpL = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._tmpL = &self.tmpL[0, 0] + self.tmpL2 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._tmpL2 = &self.tmpL2[0, 0] + + # # Holds arrays of dimension $(m \times m)$ and $(m \times r)$ + dim2[0] = self.kfilter.k_states; dim2[1] = max(self.kfilter.k_states, self.kfilter.k_posdef); + self.tmp0 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._tmp0 = &self.tmp0[0, 0] + + # # Holds arrays of dimension $(m \times p)$ + dim2[0] = self.kfilter.k_states; dim2[1] = self.kfilter.k_endog; + self.tmp00 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._tmp00 = &self.tmp00[0, 0] + + # # Holds arrays of dimension $(m \times p)$ + dim2[0] = self.kfilter.k_states; dim2[1] = self.kfilter.k_endog; + self.tmp000 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self._tmp000 = &self.tmp000[0, 0] + + # Arrays for missing data + # dim1[0] = self.kfilter.k_endog * self.kfilter.k_states; + # self.selected_design = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + # dim1[0] = self.kfilter.k_endog2; + # self.selected_obs_cov = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + + def __reduce__(self): + state = { + 't': self.t, + '_smooth_method': self._smooth_method, + 'scaled_smoothed_estimator': np.array(self.scaled_smoothed_estimator, copy=True, order='F'), + 'scaled_smoothed_estimator_cov': np.array(self.scaled_smoothed_estimator_cov, copy=True, order='F'), + 'smoothing_error': np.array(self.smoothing_error, copy=True, order='F'), + 'smoothed_state': np.array(self.smoothed_state, copy=True, order='F'), + 'smoothed_state_cov': np.array(self.smoothed_state_cov, copy=True, order='F'), + 'smoothed_measurement_disturbance': np.array(self.smoothed_measurement_disturbance, copy=True, order='F'), + 'smoothed_state_disturbance': np.array(self.smoothed_state_disturbance, copy=True, order='F'), + 'smoothed_measurement_disturbance_cov': np.array(self.smoothed_measurement_disturbance_cov, copy=True, order='F'), + 'smoothed_state_disturbance_cov': np.array(self.smoothed_state_disturbance_cov, copy=True, order='F'), + 'smoothed_state_autocov': np.array(self.smoothed_state_autocov, copy=True, order='F'), + 'tmp_autocov': np.array(self.tmp_autocov, copy=True, order='F'), + 'scaled_smoothed_diffuse_estimator': np.array(self.scaled_smoothed_diffuse_estimator, copy=True, order='F'), + 'scaled_smoothed_diffuse1_estimator_cov': np.array(self.scaled_smoothed_diffuse1_estimator_cov, copy=True, order='F'), + 'scaled_smoothed_diffuse2_estimator_cov': np.array(self.scaled_smoothed_diffuse2_estimator_cov, copy=True, order='F'), + 'tmpL': np.array(self.tmpL, copy=True, order='F'), + 'tmpL2': np.array(self.tmpL2, copy=True, order='F'), + 'tmp0': np.array(self.tmp0, copy=True, order='F'), + 'tmp00': np.array(self.tmp00, copy=True, order='F'), + 'tmp000': np.array(self.tmp000, copy=True, order='F') + } + args = (self.model, self.kfilter, self.smoother_output, self.smooth_method) + return (self.__class__, args, state) + + def __setstate__(self, state): + self.t = state['t'] + self._smooth_method = state['_smooth_method'] + self.scaled_smoothed_estimator = state['scaled_smoothed_estimator'] + self.scaled_smoothed_estimator_cov = state['scaled_smoothed_estimator_cov'] + self.smoothing_error = state['smoothing_error'] + self.smoothed_state = state['smoothed_state'] + self.smoothed_state_cov = state['smoothed_state_cov'] + self.smoothed_measurement_disturbance = state['smoothed_measurement_disturbance'] + self.smoothed_state_disturbance = state['smoothed_state_disturbance'] + self.smoothed_measurement_disturbance_cov = state['smoothed_measurement_disturbance_cov'] + self.smoothed_state_disturbance_cov = state['smoothed_state_disturbance_cov'] + self.smoothed_state_autocov = state['smoothed_state_autocov'] + self.tmp_autocov = state['tmp_autocov'] + self.scaled_smoothed_diffuse_estimator = state['scaled_smoothed_diffuse_estimator'] + self.scaled_smoothed_diffuse1_estimator_cov = state['scaled_smoothed_diffuse1_estimator_cov'] + self.scaled_smoothed_diffuse2_estimator_cov = state['scaled_smoothed_diffuse2_estimator_cov'] + self.tmpL = state['tmpL'] + self.tmpL2 = state['tmpL2'] + self.tmp0 = state['tmp0'] + self.tmp00 = state['tmp00'] + self.tmp000 = state['tmp000'] + self.initialize_smoother_object_pointers() + self._initialize_temp_pointers() + + cdef void _initialize_temp_pointers(self) except *: + self._tmpL = &self.tmpL[0, 0] + self._tmpL2 = &self.tmpL2[0, 0] + self._tmp0 = &self.tmp0[0, 0] + self._tmp00 = &self.tmp00[0, 0] + self._tmp000 = &self.tmp000[0, 0] + self._tmp_autocov = &self.tmp_autocov[0, 0] + + cdef int check_filter_method_changed(self): + return not self.kfilter.filter_method == self.filter_method + + cdef int reset_filter_method(self, int force_reset=True): + cdef int changed = self.check_filter_method_changed() + + if changed or force_reset: + # Save the new method + self.filter_method = self.kfilter.filter_method + # Reset matrices + self.allocate_arrays() + # Reset the smooth method (in case it was based on the filter + # method) + self.set_smooth_method(self.smooth_method) + + return changed + + cpdef set_smoother_output(self, int smoother_output, int force_reset=True): + if not smoother_output == self.smoother_output or force_reset: + # Change the smoother output flag + self.smoother_output = smoother_output + + # Reset matrices + self.reset(True) + + cpdef set_smooth_method(self, int smooth_method): + cdef int _smooth_method + self.smooth_method = smooth_method + + # If no smooth method provided, use default for the filter type + if self.smooth_method == 0: + self.reset_filter_method(False) + if self.kfilter.filter_method & FILTER_UNIVARIATE: + _smooth_method = SMOOTH_UNIVARIATE + else: + _smooth_method = SMOOTH_CONVENTIONAL + else: + _smooth_method = self.smooth_method + + # Make sure we don't have an invalid smooth method for our filter + # method + if((_smooth_method & SMOOTH_UNIVARIATE) and not (self.filter_method & FILTER_UNIVARIATE) or + (self.filter_method & FILTER_UNIVARIATE) and not (_smooth_method & SMOOTH_UNIVARIATE)): + raise ValueError('Invalid smoothing method: can only use' + ' univariate smoothing when univariate filtering' + ' has been used previously.') + + + self._smooth_method = _smooth_method + + cpdef reset(self, int force_reset=False): + """ + reset(self) + + Reset the smoother. + """ + # Reset the filter method (if necessary) + self.reset_filter_method(force_reset) + + # Set the time + self.t = self.model.nobs-1 + + cpdef seek(self, unsigned int t): + """ + seek(self, t) + + Change the time-state of the smoother + + Notes + ----- + Between seek calls, the `filter_method` parameter of the associated + Kalman filter object is not allowed to change. If the `filter_method` + has changed, either recall the smoother using the object callable or + explicitly reset the smoother using the `reset` method. + """ + # Make sure the seek location is valid + if not t == 0 and t >= self.model.nobs: + raise IndexError("Observation index out of range") + + # Make sure we haven't changed filter methods in-between seeking + if self.check_filter_method_changed(): + raise RuntimeError("Filter method in associated Kalman filter was" + " changed in between smoother seek() calls." + " If the filter method is changed, the smoother" + " must be called from the beginning. Use the" + " object callable (`__call__`) or the `reset`" + " method.") + self.t = t + + def __iter__(self): + return self + + def __call__(self, int smoother_output=-1): + """ + Iterate the smoother across the entire set of observations. + """ + cdef int i + + # Reset the smoother + self.reset() + + # Perform backwards smoothing iterations + for i in range(self.model.nobs-1,-1,-1): + next(self) + + def __next__(self): + """ + Perform an iteration of the Kalman smoother + """ + cdef int t + cdef int diffuse = self.t < self.kfilter.nobs_diffuse + + # Get time subscript, and stop the iterator if at the end + if not self.t >= 0: + raise StopIteration + + # Make sure we haven't changed filter methods in-between iterations + if self.check_filter_method_changed(): + raise RuntimeError("Filter method in associated Kalman filter was" + " changed in between smoother iterations." + " If the filter method is changed, the smoother" + " must be called from the beginning. Use the" + " object callable (`__call__`) or the `reset`" + " method.") + + # Initialize pointers to current-iteration objects + self.initialize_statespace_object_pointers() + self.initialize_filter_object_pointers() + self.initialize_smoother_object_pointers() + + # Initialize pointers to appropriate Kalman smoothing functions + self.initialize_function_pointers() + + # Conventional timing of the measurement step of the scaled smoothed + # estimator and covariance matrix, smoothing error + # $L_t, r_{t-1}, N_{t-1}, u_t$ + if diffuse or self._smooth_method & (SMOOTH_CONVENTIONAL | SMOOTH_CLASSICAL | SMOOTH_UNIVARIATE): + self.smooth_estimators_measurement(self, self.kfilter, self.model) + + # Smoothed state and covariance matrix + # $\hat \alpha_t, V_t$ + if self.smoother_output & (SMOOTHER_STATE | SMOOTHER_STATE_COV): + self.smooth_state(self, self.kfilter, self.model) + + # Modified Byrson-Frazier timing of the measurement step of the scaled + # smoothed estimator and covariance matrix, smoothing error + # $L_t, r_{t-1}, N_{t-1}, u_t$ + if not diffuse and self._smooth_method & SMOOTH_ALTERNATIVE: + self.smooth_estimators_measurement(self, self.kfilter, self.model) + + # Smoothed state autocovariance matrix + if self.smoother_output & SMOOTHER_STATE_AUTOCOV: + if diffuse: + {{prefix}}smoothed_state_autocov_univariate_diffuse(self, self.kfilter, self.model) + else: + if self.smooth_method & SMOOTH_ALTERNATIVE: + self._input_scaled_smoothed_estimator_cov = &self.scaled_smoothed_estimator_cov[0, 0, self.t+1] + {{prefix}}smoothed_state_autocov_conventional(self, self.kfilter, self.model) + if self.smooth_method & SMOOTH_ALTERNATIVE: + self._input_scaled_smoothed_estimator_cov = &self.scaled_smoothed_estimator_cov[0, 0, self.t] + + # Smoothed disturbances + # $\hat \eta_t, \hat \varepsilon_t, Var(\eta_t | Y_n), Var(\varepsilon_t | Y_n)$ + if self.smoother_output & SMOOTHER_DISTURBANCE: + self.smooth_disturbances(self, self.kfilter, self.model) + + # Time step of the scaled smoothed estimator and covariance matrix + self.smooth_estimators_time(self, self.kfilter, self.model) + + # Since the exact diffuse filtering and smoothing only uses the + # univariate method, if non-univariate filtering methods are used for + # the remaining filtering and smoothing, we need to run one or more + # univariate time smoothing steps to get the appropriate values (e.g. + # for scaled_smoothed_estimator). Moreover, the alternative and + # classical methods have different timing. + if self.kfilter.nobs_diffuse > 0 and self.t == self.kfilter.nobs_diffuse: + t = self.t + if self._smooth_method & SMOOTH_CONVENTIONAL: + {{prefix}}smoothed_estimators_time_univariate(self, self.kfilter, self.model) + if self._smooth_method & SMOOTH_ALTERNATIVE: + self.t = self.t - 1 + self.initialize_statespace_object_pointers() + self.initialize_filter_object_pointers() + self.initialize_smoother_object_pointers() + self.initialize_function_pointers() + {{prefix}}smoothed_estimators_time_univariate(self, self.kfilter, self.model) + self.t = t + elif self._smooth_method & SMOOTH_CLASSICAL: + self.t = t - 1 + self.initialize_statespace_object_pointers() + self.initialize_filter_object_pointers() + self.initialize_smoother_object_pointers() + self.initialize_function_pointers() + {{prefix}}smoothed_estimators_measurement_classical(self, self.kfilter, self.model) + self.t = t + self.initialize_statespace_object_pointers() + self.initialize_filter_object_pointers() + self.initialize_smoother_object_pointers() + self.initialize_function_pointers() + {{prefix}}smoothed_estimators_time_univariate(self, self.kfilter, self.model) + + # Note: the above diffuse handling for alternative and classical + # handling modifies the pointers, and should be the last part of this + # function + + # Advance the smoother + self.t -= 1 + + cdef void initialize_statespace_object_pointers(self) except *: + cdef: + int transform_diagonalize = 0 + int transform_generalized_collapse = 0 + int collapse_occurred = 0 + + # Determine which transformations (would) need to be made + transform_generalized_collapse = self.kfilter.filter_method & FILTER_COLLAPSED + if not transform_generalized_collapse: + transform_diagonalize = self.kfilter.filter_method & FILTER_UNIVARIATE + + # Initialize object-level pointers to statespace arrays + # Note: doesn't matter what transformations were required for the + # filter; we don't need to perform them for the smoother + # TODO actually we do, to get _design, _obs_cov, etc. However we don't + # need it to recalculate the selected_obs and loglikelihood, so + # need to decouple those parts from the generalized collapse + self.model.seek(self.t, transform_diagonalize, transform_generalized_collapse) + + # Initialize object-level pointers to statespace arrays + # self._design = self.model._design + # self._obs_cov = self.model._obs_cov + # self._transition = self.model._transition + # self._selection = self.model._selection + # self._state_cov = self.model._state_cov + + # A collapse would not actually occur in a given iteration, even with + # the FILTER_COLLAPSED flag, in the case that there was enough missing + # data that k_endog - nmissing <= k_states + # collapse_occurred = ( + # transform_generalized_collapse and + # self.model.k_endog - self.model._nmissing > self.model.k_states + # ) + + # If a collapse should have occurred, the dimensions need to be + # adjusted (because we didn't tell the model about the collapse in the + # seek() call above) + # if collapse_occurred: + # self.model.set_dimensions(self.model.k_states, + # self.model.k_states, + # self.model.k_posdef) + + cdef void initialize_filter_object_pointers(self): + # cdef: + # int t = self.t + # int inc = 1 + + # # Initialize object-level pointers to output arrays + # self._predicted_state = &self.kfilter.predicted_state[0, t] + # self._predicted_state_cov = &self.kfilter.predicted_state_cov[0, 0, t] + # self._kalman_gain = &self.kfilter.kalman_gain[0, 0, t] + + # # Initialize object-level pointers to named temporary arrays + # self._tmp1 = &self.kfilter.tmp1[0, 0, t] + # self._tmp2 = &self.kfilter.tmp2[0, t] + # self._tmp3 = &self.kfilter.tmp3[0, 0, t] + # self._tmp4 = &self.kfilter.tmp4[0, 0, t] + + self.kfilter.seek(self.t, False) + self.kfilter.initialize_filter_object_pointers() + + cdef void initialize_smoother_object_pointers(self) except *: + cdef: + int t = self.t + int inc = 1 + int diffuse = self.t < self.kfilter.nobs_diffuse + + # Initialize object-level pointers to output arrays + if diffuse or self._smooth_method & (SMOOTH_CONVENTIONAL | SMOOTH_CLASSICAL | SMOOTH_UNIVARIATE): + self._input_scaled_smoothed_estimator = &self.scaled_smoothed_estimator[0, t+1] + self._input_scaled_smoothed_estimator_cov = &self.scaled_smoothed_estimator_cov[0, 0, t+1] + self._scaled_smoothed_estimator = &self.scaled_smoothed_estimator[0, t] + self._scaled_smoothed_estimator_cov = &self.scaled_smoothed_estimator_cov[0, 0, t] + else: # if self._smooth_method & SMOOTH_ALTERNATIVE + self._input_scaled_smoothed_estimator = &self.scaled_smoothed_estimator[0, t] + self._input_scaled_smoothed_estimator_cov = &self.scaled_smoothed_estimator_cov[0, 0, t] + self._scaled_smoothed_estimator = &self.scaled_smoothed_estimator[0, t-1] + self._scaled_smoothed_estimator_cov = &self.scaled_smoothed_estimator_cov[0, 0, t-1] + + self._smoothing_error = &self.smoothing_error[0, t] + self._smoothed_state = &self.smoothed_state[0, t] + self._smoothed_state_cov = &self.smoothed_state_cov[0, 0, t] + self._smoothed_measurement_disturbance = &self.smoothed_measurement_disturbance[0, t] + self._smoothed_state_disturbance = &self.smoothed_state_disturbance[0, t] + self._smoothed_measurement_disturbance_cov = &self.smoothed_measurement_disturbance_cov[0, 0, t] + self._smoothed_state_disturbance_cov = &self.smoothed_state_disturbance_cov[0, 0, t] + + self._smoothed_state_autocov = &self.smoothed_state_autocov[0, 0, t] + + # Diffuse + if diffuse: + self._input_scaled_smoothed_diffuse_estimator = &self.scaled_smoothed_diffuse_estimator[0, t+1] + self._input_scaled_smoothed_diffuse1_estimator_cov = &self.scaled_smoothed_diffuse1_estimator_cov[0, 0, t+1] + self._input_scaled_smoothed_diffuse2_estimator_cov = &self.scaled_smoothed_diffuse2_estimator_cov[0, 0, t+1] + self._scaled_smoothed_diffuse_estimator = &self.scaled_smoothed_diffuse_estimator[0, t] + self._scaled_smoothed_diffuse1_estimator_cov = &self.scaled_smoothed_diffuse1_estimator_cov[0, 0, t] + self._scaled_smoothed_diffuse2_estimator_cov = &self.scaled_smoothed_diffuse2_estimator_cov[0, 0, t] + + + cdef void initialize_function_pointers(self) except *: + cdef int diffuse = self.t < self.kfilter.nobs_diffuse + # Diffuse smoother + if diffuse: + self.smooth_estimators_measurement = {{prefix}}smoothed_estimators_measurement_univariate_diffuse + self.smooth_estimators_time = {{prefix}}smoothed_estimators_time_univariate_diffuse + self.smooth_state = {{prefix}}smoothed_state_univariate_diffuse + self.smooth_disturbances = {{prefix}}smoothed_disturbances_univariate_diffuse + # Multivariate modified Bryson-Frazier smoother + elif self._smooth_method & SMOOTH_ALTERNATIVE: + self.smooth_estimators_measurement = {{prefix}}smoothed_estimators_measurement_alternative + self.smooth_estimators_time = {{prefix}}smoothed_estimators_time_alternative + self.smooth_state = {{prefix}}smoothed_state_alternative + self.smooth_disturbances = {{prefix}}smoothed_disturbances_alternative + # Multivariate classical (Anderson and Moore) smoother + elif self._smooth_method & SMOOTH_CLASSICAL: + self.smooth_estimators_measurement = {{prefix}}smoothed_estimators_measurement_classical + self.smooth_estimators_time = {{prefix}}smoothed_estimators_time_classical + self.smooth_state = {{prefix}}smoothed_state_classical + self.smooth_disturbances = {{prefix}}smoothed_disturbances_conventional + # Univariate (modified Bryson-Frazier) smoother + elif self._smooth_method & SMOOTH_UNIVARIATE: + self.smooth_estimators_measurement = {{prefix}}smoothed_estimators_measurement_univariate + self.smooth_estimators_time = {{prefix}}smoothed_estimators_time_univariate + self.smooth_state = {{prefix}}smoothed_state_conventional + self.smooth_disturbances = {{prefix}}smoothed_disturbances_univariate + # Multivariate conventional (Durbin and Koopman) smoother + elif self._smooth_method & SMOOTH_CONVENTIONAL: + self.smooth_estimators_measurement = {{prefix}}smoothed_estimators_measurement_conventional + self.smooth_estimators_time = {{prefix}}smoothed_estimators_time_conventional + self.smooth_state = {{prefix}}smoothed_state_conventional + self.smooth_disturbances = {{prefix}}smoothed_disturbances_conventional + else: + raise NotImplementedError("Smoother method not available.") + + # Handle completely missing data + # (All methods except the conventional method can use the same routines in this case) + # This is essentially just an application of the smoothed_estimators_time_* step. + if self._smooth_method & SMOOTH_CONVENTIONAL and self.model._nmissing == self.model.k_endog: + # Change the smoothing functions to take into account a missing observation + self.smooth_estimators_measurement = {{prefix}}smoothed_estimators_missing_conventional + # (no need to change the state smoothing recursion) + # self.smooth_state = {{prefix}}smoothed_state_missing_conventional + self.smooth_disturbances = {{prefix}}smoothed_disturbances_missing_conventional + +{{endfor}} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/_pykalman_smoother.py b/statsmodels/tsa/statespace/_pykalman_smoother.py new file mode 100644 index 0000000..717054a --- /dev/null +++ b/statsmodels/tsa/statespace/_pykalman_smoother.py @@ -0,0 +1,272 @@ +""" +Kalman Smoother + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import numpy as np + +SMOOTHER_STATE = 0x01 # Durbin and Koopman (2012), Chapter 4.4.2 +SMOOTHER_STATE_COV = 0x02 # ibid., Chapter 4.4.3 +SMOOTHER_DISTURBANCE = 0x04 # ibid., Chapter 4.5 +SMOOTHER_DISTURBANCE_COV = 0x08 # ibid., Chapter 4.5 +SMOOTHER_ALL = ( + SMOOTHER_STATE | SMOOTHER_STATE_COV | SMOOTHER_DISTURBANCE | + SMOOTHER_DISTURBANCE_COV +) + + +class _KalmanSmoother(object): + + def __init__(self, model, kfilter, smoother_output): + # Save values + self.model = model + self.kfilter = kfilter + self._kfilter = model._kalman_filter + self.smoother_output = smoother_output + + # Create storage + self.scaled_smoothed_estimator = None + self.scaled_smoothed_estimator_cov = None + self.smoothing_error = None + self.smoothed_state = None + self.smoothed_state_cov = None + self.smoothed_state_disturbance = None + self.smoothed_state_disturbance_cov = None + self.smoothed_measurement_disturbance = None + self.smoothed_measurement_disturbance_cov = None + + # Intermediate values + self.tmp_L = np.zeros((model.k_states, model.k_states, model.nobs), + dtype=kfilter.dtype) + + if smoother_output & (SMOOTHER_STATE | SMOOTHER_DISTURBANCE): + self.scaled_smoothed_estimator = ( + np.zeros((model.k_states, model.nobs+1), dtype=kfilter.dtype)) + self.smoothing_error = ( + np.zeros((model.k_endog, model.nobs), dtype=kfilter.dtype)) + if smoother_output & (SMOOTHER_STATE_COV | SMOOTHER_DISTURBANCE_COV): + self.scaled_smoothed_estimator_cov = ( + np.zeros((model.k_states, model.k_states, model.nobs + 1), + dtype=kfilter.dtype)) + + # State smoothing + if smoother_output & SMOOTHER_STATE: + self.smoothed_state = np.zeros((model.k_states, model.nobs), + dtype=kfilter.dtype) + if smoother_output & SMOOTHER_STATE_COV: + self.smoothed_state_cov = ( + np.zeros((model.k_states, model.k_states, model.nobs), + dtype=kfilter.dtype)) + + # Disturbance smoothing + if smoother_output & SMOOTHER_DISTURBANCE: + self.smoothed_state_disturbance = ( + np.zeros((model.k_posdef, model.nobs), dtype=kfilter.dtype)) + self.smoothed_measurement_disturbance = ( + np.zeros((model.k_endog, model.nobs), dtype=kfilter.dtype)) + if smoother_output & SMOOTHER_DISTURBANCE_COV: + self.smoothed_state_disturbance_cov = ( + np.zeros((model.k_posdef, model.k_posdef, model.nobs), + dtype=kfilter.dtype)) + self.smoothed_measurement_disturbance_cov = ( + np.zeros((model.k_endog, model.k_endog, model.nobs), + dtype=kfilter.dtype)) + + def seek(self, t): + if t >= self.model.nobs: + raise IndexError("Observation index out of range") + self.t = t + + def __iter__(self): + return self + + def __call__(self): + self.seek(self.model.nobs-1) + # Perform backwards smoothing iterations + for i in range(self.model.nobs-1, -1, -1): + next(self) + + def next(self): + # next() is required for compatibility with Python2.7. + return self.__next__() + + def __next__(self): + # Check for valid iteration + if not self.t >= 0: + raise StopIteration + + # Get local copies of variables + t = self.t + kfilter = self.kfilter + _kfilter = self._kfilter + model = self.model + smoother_output = self.smoother_output + + scaled_smoothed_estimator = self.scaled_smoothed_estimator + scaled_smoothed_estimator_cov = self.scaled_smoothed_estimator_cov + smoothing_error = self.smoothing_error + smoothed_state = self.smoothed_state + smoothed_state_cov = self.smoothed_state_cov + smoothed_state_disturbance = self.smoothed_state_disturbance + smoothed_state_disturbance_cov = self.smoothed_state_disturbance_cov + smoothed_measurement_disturbance = ( + self.smoothed_measurement_disturbance) + smoothed_measurement_disturbance_cov = ( + self.smoothed_measurement_disturbance_cov) + tmp_L = self.tmp_L + + # Seek the Cython Kalman filter to the right place, setup matrices + _kfilter.seek(t, False) + _kfilter.initialize_statespace_object_pointers() + _kfilter.initialize_filter_object_pointers() + _kfilter.select_missing() + + missing_entire_obs = ( + _kfilter.model.nmissing[t] == _kfilter.model.k_endog) + missing_partial_obs = ( + not missing_entire_obs and _kfilter.model.nmissing[t] > 0) + + # Get the appropriate (possibly time-varying) indices + design_t = 0 if kfilter.design.shape[2] == 1 else t + obs_cov_t = 0 if kfilter.obs_cov.shape[2] == 1 else t + transition_t = 0 if kfilter.transition.shape[2] == 1 else t + selection_t = 0 if kfilter.selection.shape[2] == 1 else t + state_cov_t = 0 if kfilter.state_cov.shape[2] == 1 else t + + # Get endog dimension (can vary if there missing data) + k_endog = _kfilter.k_endog + + # Get references to representation matrices and Kalman filter output + transition = model.transition[:, :, transition_t] + selection = model.selection[:, :, selection_t] + state_cov = model.state_cov[:, :, state_cov_t] + + predicted_state = kfilter.predicted_state[:, t] + predicted_state_cov = kfilter.predicted_state_cov[:, :, t] + + mask = ~kfilter.missing[:, t].astype(bool) + if missing_partial_obs: + design = np.array( + _kfilter.selected_design[:k_endog*model.k_states], copy=True + ).reshape(k_endog, model.k_states, order='F') + obs_cov = np.array( + _kfilter.selected_obs_cov[:k_endog**2], copy=True + ).reshape(k_endog, k_endog) + kalman_gain = kfilter.kalman_gain[:, mask, t] + + forecasts_error_cov = np.array( + _kfilter.forecast_error_cov[:, :, t], copy=True + ).ravel(order='F')[:k_endog**2].reshape(k_endog, k_endog) + forecasts_error = np.array( + _kfilter.forecast_error[:k_endog, t], copy=True) + F_inv = np.linalg.inv(forecasts_error_cov) + else: + if missing_entire_obs: + design = np.zeros(model.design.shape[:-1]) + else: + design = model.design[:, :, design_t] + obs_cov = model.obs_cov[:, :, obs_cov_t] + kalman_gain = kfilter.kalman_gain[:, :, t] + forecasts_error_cov = kfilter.forecasts_error_cov[:, :, t] + forecasts_error = kfilter.forecasts_error[:, t] + F_inv = np.linalg.inv(forecasts_error_cov) + + # Create a temporary matrix + tmp_L[:, :, t] = transition - kalman_gain.dot(design) + L = tmp_L[:, :, t] + + # Perform the recursion + + # Intermediate values + if smoother_output & (SMOOTHER_STATE | SMOOTHER_DISTURBANCE): + if missing_entire_obs: + # smoothing_error is undefined here, keep it as zeros + scaled_smoothed_estimator[:, t - 1] = ( + transition.transpose().dot(scaled_smoothed_estimator[:, t]) + ) + else: + smoothing_error[:k_endog, t] = ( + F_inv.dot(forecasts_error) - + kalman_gain.transpose().dot( + scaled_smoothed_estimator[:, t]) + ) + scaled_smoothed_estimator[:, t - 1] = ( + design.transpose().dot(smoothing_error[:k_endog, t]) + + transition.transpose().dot(scaled_smoothed_estimator[:, t]) + ) + if smoother_output & (SMOOTHER_STATE_COV | SMOOTHER_DISTURBANCE_COV): + if missing_entire_obs: + scaled_smoothed_estimator_cov[:, :, t - 1] = ( + L.transpose().dot( + scaled_smoothed_estimator_cov[:, :, t] + ).dot(L) + ) + else: + scaled_smoothed_estimator_cov[:, :, t - 1] = ( + design.transpose().dot(F_inv).dot(design) + + L.transpose().dot( + scaled_smoothed_estimator_cov[:, :, t] + ).dot(L) + ) + + # State smoothing + if smoother_output & SMOOTHER_STATE: + smoothed_state[:, t] = ( + predicted_state + + predicted_state_cov.dot(scaled_smoothed_estimator[:, t - 1]) + ) + if smoother_output & SMOOTHER_STATE_COV: + smoothed_state_cov[:, :, t] = ( + predicted_state_cov - + predicted_state_cov.dot( + scaled_smoothed_estimator_cov[:, :, t - 1] + ).dot(predicted_state_cov) + ) + + # Disturbance smoothing + if smoother_output & (SMOOTHER_DISTURBANCE | SMOOTHER_DISTURBANCE_COV): + QR = state_cov.dot(selection.transpose()) + + if smoother_output & SMOOTHER_DISTURBANCE: + smoothed_state_disturbance[:, t] = ( + QR.dot(scaled_smoothed_estimator[:, t]) + ) + # measurement disturbance is set to zero when all missing + # (unconditional distribution) + if not missing_entire_obs: + smoothed_measurement_disturbance[mask, t] = ( + obs_cov.dot(smoothing_error[:k_endog, t]) + ) + + if smoother_output & SMOOTHER_DISTURBANCE_COV: + smoothed_state_disturbance_cov[:, :, t] = ( + state_cov - + QR.dot( + scaled_smoothed_estimator_cov[:, :, t] + ).dot(QR.transpose()) + ) + + if missing_entire_obs: + smoothed_measurement_disturbance_cov[:, :, t] = obs_cov + else: + # For non-missing portion, calculate as usual + ix = np.ix_(mask, mask, [t]) + smoothed_measurement_disturbance_cov[ix] = ( + obs_cov - obs_cov.dot( + F_inv + kalman_gain.transpose().dot( + scaled_smoothed_estimator_cov[:, :, t] + ).dot(kalman_gain) + ).dot(obs_cov) + )[:, :, np.newaxis] + + # For missing portion, use unconditional distribution + ix = np.ix_(~mask, ~mask, [t]) + mod_ix = np.ix_(~mask, ~mask, [0]) + smoothed_measurement_disturbance_cov[ix] = np.copy( + model.obs_cov[:, :, obs_cov_t:obs_cov_t+1])[mod_ix] + + # Advance the smoother + self.t -= 1 diff --git a/statsmodels/tsa/statespace/_representation.pxd b/statsmodels/tsa/statespace/_representation.pxd new file mode 100644 index 0000000..403a0e7 --- /dev/null +++ b/statsmodels/tsa/statespace/_representation.pxd @@ -0,0 +1,331 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cimport numpy as np + +cdef class sStatespace(object): + # Statespace dimensions + cdef readonly int nobs, k_endog, k_states, k_posdef + + # Statespace representation matrices + cdef readonly np.float32_t [::1,:] obs, obs_intercept, state_intercept + cdef readonly np.float32_t [:] initial_state + cdef readonly np.float32_t [::1,:] initial_state_cov, initial_diffuse_state_cov + cdef readonly np.float32_t [::1,:,:] design, obs_cov, transition, selection, state_cov, selected_state_cov + + cdef readonly int [::1,:] missing + cdef readonly int [:] nmissing + cdef readonly int has_missing + + # Flags + cdef readonly int time_invariant + cdef readonly int initialized + cdef public int diagonal_obs_cov + cdef public int subset_design + cdef public int companion_transition + + # Temporary arrays + cdef np.float32_t [::1,:] tmp + + # Temporary selection arrays + cdef readonly np.float32_t [:] selected_obs + cdef readonly np.float32_t [:] selected_obs_intercept + cdef readonly np.float32_t [:] selected_design + cdef readonly np.float32_t [:] selected_obs_cov + + # Temporary transformation arrays + cdef readonly np.float32_t [::1,:] transform_cholesky + cdef readonly np.float32_t [::1,:] transform_obs_cov + cdef readonly np.float32_t [::1,:] transform_design + cdef readonly np.float32_t transform_determinant + + cdef readonly np.float32_t [:] collapse_obs + cdef readonly np.float32_t [:] collapse_obs_tmp + cdef readonly np.float32_t [::1,:] collapse_design + cdef readonly np.float32_t [::1,:] collapse_obs_cov + cdef readonly np.float32_t [::1,:] collapse_cholesky + cdef readonly np.float32_t collapse_loglikelihood + + # Pointers + cdef np.float32_t * _obs + cdef np.float32_t * _design + cdef np.float32_t * _obs_intercept + cdef np.float32_t * _obs_cov + cdef np.float32_t * _transition + cdef np.float32_t * _state_intercept + cdef np.float32_t * _selection + cdef np.float32_t * _state_cov + cdef np.float32_t * _selected_state_cov + cdef np.float32_t * _initial_state + cdef np.float32_t * _initial_state_cov + cdef np.float32_t * _initial_diffuse_state_cov + + # Current location + cdef int t + cdef int _k_endog, _k_states, _k_posdef, _k_endog2, _k_states2, _k_posdef2, _k_endogstates, _k_statesposdef + cdef int _nmissing + + # Functions + cpdef seek(self, unsigned int t, unsigned int transform_diagonalize, unsigned int transform_generalized_collapse) + + cdef void set_dimensions(self, unsigned int k_endog, unsigned int k_states, unsigned int k_posdef) + cdef void select_state_cov(self, unsigned int t) + cdef int select_missing(self, unsigned int t) + cdef void _select_missing_entire_obs(self, unsigned int t) + cdef void _select_missing_partial_obs(self, unsigned int t) + cdef void transform(self, unsigned int t, unsigned int previous_t, unsigned int transform_diagonalize, unsigned int transform_generalized_collapse) except * + cdef void transform_diagonalize(self, unsigned int t, unsigned int previous_t) except * + cdef int transform_generalized_collapse(self, unsigned int t, unsigned int previous_t) except * + +cdef class dStatespace(object): + # Statespace dimensions + cdef readonly int nobs, k_endog, k_states, k_posdef + + # Statespace representation matrices + cdef readonly np.float64_t [::1,:] obs, obs_intercept, state_intercept + cdef readonly np.float64_t [:] initial_state + cdef readonly np.float64_t [::1,:] initial_state_cov, initial_diffuse_state_cov + cdef readonly np.float64_t [::1,:,:] design, obs_cov, transition, selection, state_cov, selected_state_cov + + cdef readonly int [::1,:] missing + cdef readonly int [:] nmissing + cdef readonly int has_missing + + # Flags + cdef readonly int time_invariant + cdef readonly int initialized + cdef public int diagonal_obs_cov + cdef public int subset_design + cdef public int companion_transition + + # Temporary arrays + cdef np.float64_t [::1,:] tmp + + # Temporary selection arrays + cdef readonly np.float64_t [:] selected_obs + cdef readonly np.float64_t [:] selected_obs_intercept + cdef readonly np.float64_t [:] selected_design + cdef readonly np.float64_t [:] selected_obs_cov + + # Temporary transformation arrays + cdef readonly np.float64_t [::1,:] transform_cholesky + cdef readonly np.float64_t [::1,:] transform_obs_cov + cdef readonly np.float64_t [::1,:] transform_design + cdef readonly np.float64_t transform_determinant + + cdef readonly np.float64_t [:] collapse_obs + cdef readonly np.float64_t [:] collapse_obs_tmp + cdef readonly np.float64_t [::1,:] collapse_design + cdef readonly np.float64_t [::1,:] collapse_obs_cov + cdef readonly np.float64_t [::1,:] collapse_cholesky + cdef readonly np.float64_t collapse_loglikelihood + + # Pointers + cdef np.float64_t * _obs + cdef np.float64_t * _design + cdef np.float64_t * _obs_intercept + cdef np.float64_t * _obs_cov + cdef np.float64_t * _transition + cdef np.float64_t * _state_intercept + cdef np.float64_t * _selection + cdef np.float64_t * _state_cov + cdef np.float64_t * _selected_state_cov + cdef np.float64_t * _initial_state + cdef np.float64_t * _initial_state_cov + cdef np.float64_t * _initial_diffuse_state_cov + + # Current location + cdef int t + cdef int _k_endog, _k_states, _k_posdef, _k_endog2, _k_states2, _k_posdef2, _k_endogstates, _k_statesposdef + cdef int _nmissing + + # Functions + cpdef seek(self, unsigned int t, unsigned int transform_diagonalize, unsigned int transform_generalized_collapse) + + cdef void set_dimensions(self, unsigned int k_endog, unsigned int k_states, unsigned int k_posdef) + cdef void select_state_cov(self, unsigned int t) + cdef int select_missing(self, unsigned int t) + cdef void _select_missing_entire_obs(self, unsigned int t) + cdef void _select_missing_partial_obs(self, unsigned int t) + cdef void transform(self, unsigned int t, unsigned int previous_t, unsigned int transform_diagonalize, unsigned int transform_generalized_collapse) except * + cdef void transform_diagonalize(self, unsigned int t, unsigned int previous_t) except * + cdef int transform_generalized_collapse(self, unsigned int t, unsigned int previous_t) except * + +cdef class cStatespace(object): + # Statespace dimensions + cdef readonly int nobs, k_endog, k_states, k_posdef + + # Statespace representation matrices + cdef readonly np.complex64_t [::1,:] obs, obs_intercept, state_intercept + cdef readonly np.complex64_t [:] initial_state + cdef readonly np.complex64_t [::1,:] initial_state_cov, initial_diffuse_state_cov + cdef readonly np.complex64_t [::1,:,:] design, obs_cov, transition, selection, state_cov, selected_state_cov + + cdef readonly int [::1,:] missing + cdef readonly int [:] nmissing + cdef readonly int has_missing + + # Flags + cdef readonly int time_invariant + cdef readonly int initialized + cdef public int diagonal_obs_cov + cdef public int subset_design + cdef public int companion_transition + + # Temporary arrays + cdef np.complex64_t [::1,:] tmp + + # Temporary selection arrays + cdef readonly np.complex64_t [:] selected_obs + cdef readonly np.complex64_t [:] selected_obs_intercept + cdef readonly np.complex64_t [:] selected_design + cdef readonly np.complex64_t [:] selected_obs_cov + + # Temporary transformation arrays + cdef readonly np.complex64_t [::1,:] transform_cholesky + cdef readonly np.complex64_t [::1,:] transform_obs_cov + cdef readonly np.complex64_t [::1,:] transform_design + cdef readonly np.complex64_t transform_determinant + + cdef readonly np.complex64_t [:] collapse_obs + cdef readonly np.complex64_t [:] collapse_obs_tmp + cdef readonly np.complex64_t [::1,:] collapse_design + cdef readonly np.complex64_t [::1,:] collapse_obs_cov + cdef readonly np.complex64_t [::1,:] collapse_cholesky + cdef readonly np.complex64_t collapse_loglikelihood + + # Pointers + cdef np.complex64_t * _obs + cdef np.complex64_t * _design + cdef np.complex64_t * _obs_intercept + cdef np.complex64_t * _obs_cov + cdef np.complex64_t * _transition + cdef np.complex64_t * _state_intercept + cdef np.complex64_t * _selection + cdef np.complex64_t * _state_cov + cdef np.complex64_t * _selected_state_cov + cdef np.complex64_t * _initial_state + cdef np.complex64_t * _initial_state_cov + cdef np.complex64_t * _initial_diffuse_state_cov + + # Current location + cdef int t + cdef int _k_endog, _k_states, _k_posdef, _k_endog2, _k_states2, _k_posdef2, _k_endogstates, _k_statesposdef + cdef int _nmissing + + # Functions + cpdef seek(self, unsigned int t, unsigned int transform_diagonalize, unsigned int transform_generalized_collapse) + + cdef void set_dimensions(self, unsigned int k_endog, unsigned int k_states, unsigned int k_posdef) + cdef void select_state_cov(self, unsigned int t) + cdef int select_missing(self, unsigned int t) + cdef void _select_missing_entire_obs(self, unsigned int t) + cdef void _select_missing_partial_obs(self, unsigned int t) + cdef void transform(self, unsigned int t, unsigned int previous_t, unsigned int transform_diagonalize, unsigned int transform_generalized_collapse) except * + cdef void transform_diagonalize(self, unsigned int t, unsigned int previous_t) except * + cdef int transform_generalized_collapse(self, unsigned int t, unsigned int previous_t) except * + +cdef class zStatespace(object): + # Statespace dimensions + cdef readonly int nobs, k_endog, k_states, k_posdef + + # Statespace representation matrices + cdef readonly np.complex128_t [::1,:] obs, obs_intercept, state_intercept + cdef readonly np.complex128_t [:] initial_state + cdef readonly np.complex128_t [::1,:] initial_state_cov, initial_diffuse_state_cov + cdef readonly np.complex128_t [::1,:,:] design, obs_cov, transition, selection, state_cov, selected_state_cov + + cdef readonly int [::1,:] missing + cdef readonly int [:] nmissing + cdef readonly int has_missing + + # Flags + cdef readonly int time_invariant + cdef readonly int initialized + cdef public int diagonal_obs_cov + cdef public int subset_design + cdef public int companion_transition + + # Temporary arrays + cdef np.complex128_t [::1,:] tmp + + # Temporary selection arrays + cdef readonly np.complex128_t [:] selected_obs + cdef readonly np.complex128_t [:] selected_obs_intercept + cdef readonly np.complex128_t [:] selected_design + cdef readonly np.complex128_t [:] selected_obs_cov + + # Temporary transformation arrays + cdef readonly np.complex128_t [::1,:] transform_cholesky + cdef readonly np.complex128_t [::1,:] transform_obs_cov + cdef readonly np.complex128_t [::1,:] transform_design + cdef readonly np.complex128_t transform_determinant + + cdef readonly np.complex128_t [:] collapse_obs + cdef readonly np.complex128_t [:] collapse_obs_tmp + cdef readonly np.complex128_t [::1,:] collapse_design + cdef readonly np.complex128_t [::1,:] collapse_obs_cov + cdef readonly np.complex128_t [::1,:] collapse_cholesky + cdef readonly np.complex128_t collapse_loglikelihood + + # Pointers + cdef np.complex128_t * _obs + cdef np.complex128_t * _design + cdef np.complex128_t * _obs_intercept + cdef np.complex128_t * _obs_cov + cdef np.complex128_t * _transition + cdef np.complex128_t * _state_intercept + cdef np.complex128_t * _selection + cdef np.complex128_t * _state_cov + cdef np.complex128_t * _selected_state_cov + cdef np.complex128_t * _initial_state + cdef np.complex128_t * _initial_state_cov + cdef np.complex128_t * _initial_diffuse_state_cov + + # Current location + cdef int t + cdef int _k_endog, _k_states, _k_posdef, _k_endog2, _k_states2, _k_posdef2, _k_endogstates, _k_statesposdef + cdef int _nmissing + + # Functions + cpdef seek(self, unsigned int t, unsigned int transform_diagonalize, unsigned int transform_generalized_collapse) + + cdef void set_dimensions(self, unsigned int k_endog, unsigned int k_states, unsigned int k_posdef) + cdef void select_state_cov(self, unsigned int t) + cdef int select_missing(self, unsigned int t) + cdef void _select_missing_entire_obs(self, unsigned int t) + cdef void _select_missing_partial_obs(self, unsigned int t) + cdef void transform(self, unsigned int t, unsigned int previous_t, unsigned int transform_diagonalize, unsigned int transform_generalized_collapse) except * + cdef void transform_diagonalize(self, unsigned int t, unsigned int previous_t) except * + cdef int transform_generalized_collapse(self, unsigned int t, unsigned int previous_t) except * + +cdef int sselect_cov(int k, int k_posdef, + np.float32_t * tmp, + np.float32_t * selection, + np.float32_t * cov, + np.float32_t * selected_cov) + +cdef int dselect_cov(int k, int k_posdef, + np.float64_t * tmp, + np.float64_t * selection, + np.float64_t * cov, + np.float64_t * selected_cov) + +cdef int cselect_cov(int k, int k_posdef, + np.complex64_t * tmp, + np.complex64_t * selection, + np.complex64_t * cov, + np.complex64_t * selected_cov) + +cdef int zselect_cov(int k, int k_posdef, + np.complex128_t * tmp, + np.complex128_t * selection, + np.complex128_t * cov, + np.complex128_t * selected_cov) diff --git a/statsmodels/tsa/statespace/_representation.pyx.in b/statsmodels/tsa/statespace/_representation.pyx.in new file mode 100644 index 0000000..6507696 --- /dev/null +++ b/statsmodels/tsa/statespace/_representation.pyx.in @@ -0,0 +1,1017 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# Typical imports +import numpy as np +import warnings +cimport numpy as np +cimport cython + +np.import_array() + +from statsmodels.src.math cimport * +cimport scipy.linalg.cython_blas as blas +cimport scipy.linalg.cython_lapack as lapack +cimport statsmodels.tsa.statespace._tools as tools + +{{for prefix, types in TYPES.items()}} +from statsmodels.tsa.statespace._initialization cimport {{prefix}}Initialization +{{endfor}} + +cdef int FORTRAN = 1 + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +}} + +## State Space Representation +cdef class {{prefix}}Statespace(object): + """ + {{prefix}}Statespace(obs, design, obs_intercept, obs_cov, transition, state_intercept, selection, state_cov) + + *See Durbin and Koopman (2012), Chapter 4 for all notation* + """ + + # ### State space representation + # + # $$ + # \begin{align} + # y_t & = Z_t \alpha_t + d_t + \varepsilon_t \hspace{3em} & \varepsilon_t & \sim N(0, H_t) \\\\ + # \alpha_{t+1} & = T_t \alpha_t + c_t + R_t \eta_t & \eta_t & \sim N(0, Q_t) \\\\ + # & & \alpha_1 & \sim N(a_1, P_1) + # \end{align} + # $$ + # + # $y_t$ is $p \times 1$ + # $\varepsilon_t$ is $p \times 1$ + # $\alpha_t$ is $m \times 1$ + # $\eta_t$ is $r \times 1$ + # $t = 1, \dots, T$ + + # `nobs` $\equiv T$ is the length of the time-series + # `k_endog` $\equiv p$ is dimension of observation space + # `k_states` $\equiv m$ is the dimension of the state space + # `k_posdef` $\equiv r$ is the dimension of the state shocks + # *Old notation: T, n, k, g* + # cdef readonly int nobs, k_endog, k_states, k_posdef + + # `obs` $\equiv y_t$ is the **observation vector** $(p \times T)$ + # `design` $\equiv Z_t$ is the **design vector** $(p \times m \times T)$ + # `obs_intercept` $\equiv d_t$ is the **observation intercept** $(p \times T)$ + # `obs_cov` $\equiv H_t$ is the **observation covariance matrix** $(p \times p \times T)$ + # `transition` $\equiv T_t$ is the **transition matrix** $(m \times m \times T)$ + # `state_intercept` $\equiv c_t$ is the **state intercept** $(m \times T)$ + # `selection` $\equiv R_t$ is the **selection matrix** $(m \times r \times T)$ + # `state_cov` $\equiv Q_t$ is the **state covariance matrix** $(r \times r \times T)$ + # `selected_state_cov` $\equiv R Q_t R'$ is the **selected state covariance matrix** $(m \times m \times T)$ + # `initial_state` $\equiv a_1$ is the **initial state mean** $(m \times 1)$ + # `initial_state_cov` $\equiv P_1$ is the **initial state covariance matrix** $(m \times m)$ + # `initial_state_cov` $\equiv P_\inf$ is the **initial diffuse state covariance matrix** $(m \times m)$ + # + # With the exception of `obs`, these are *optionally* time-varying. If they are instead time-invariant, + # then the dimension of length $T$ is instead of length $1$. + # + # *Note*: the initial vectors' notation 1-indexed as in Durbin and Koopman, + # but in the recursions below it will be 0-indexed in the Python arrays. + # + # *Old notation: y, -, mu, beta_tt_init, P_tt_init* + # cdef readonly {{cython_type}} [::1,:] obs, obs_intercept, state_intercept + # cdef readonly {{cython_type}} [:] initial_state + # cdef readonly {{cython_type}} [::1,:] initial_state_cov + # *Old notation: H, R, F, G, Q*, G Q* G'* + # cdef readonly {{cython_type}} [::1,:,:] design, obs_cov, transition, selection, state_cov, selected_state_cov + + # `missing` is a $(p \times T)$ boolean matrix where a row is a $(p \times 1)$ vector + # in which the $i$th position is $1$ if $y_{i,t}$ is to be considered a missing value. + # *Note:* This is created as the output of np.isnan(obs). + # cdef readonly int [::1,:] missing + # `nmissing` is an `T \times 0` integer vector holding the number of *missing* observations + # $p - p_t$ + # cdef readonly int [:] nmissing + + # Flag for a time-invariant model, which requires that *all* of the + # possibly time-varying arrays are time-invariant. + # cdef readonly int time_invariant + + # Flag for initialization. + # cdef readonly int initialized + + # Flags for performance improvements + # TODO need to add this to the UI in representation + # cdef public int diagonal_obs_cov + # cdef public int subset_design + # cdef public int companion_transition + + # Temporary arrays + # cdef {{cython_type}} [::1,:] tmp + + # Temporary selection arrays + # cdef readonly {{cython_type}} [:] selected_obs + # The following are contiguous memory segments which are then used to + # store the data in the above matrices. + # cdef readonly {{cython_type}} [:] selected_design + # cdef readonly {{cython_type}} [:] selected_obs_cov + + # Temporary transformation arrays + # cdef readonly {{cython_type}} [::1,:] transform_cholesky + # cdef readonly {{cython_type}} [::1,:] transform_obs_cov + # cdef readonly {{cython_type}} [::1,:] transform_design + # cdef readonly {{cython_type}} transform_determinant + + # cdef readonly {{cython_type}} [:] collapse_obs + # cdef readonly {{cython_type}} [:] collapse_obs_tmp + # cdef readonly {{cython_type}} [::1,:] collapse_design + # cdef readonly {{cython_type}} [::1,:] collapse_obs_cov + # cdef readonly {{cython_type}} [::1,:] collapse_cholesky + # cdef readonly {{cython_type}} collapse_loglikelihood + + # Pointers + # cdef {{cython_type}} * _obs + # cdef {{cython_type}} * _design + # cdef {{cython_type}} * _obs_intercept + # cdef {{cython_type}} * _obs_cov + # cdef {{cython_type}} * _transition + # cdef {{cython_type}} * _state_intercept + # cdef {{cython_type}} * _selection + # cdef {{cython_type}} * _state_cov + # cdef {{cython_type}} * _selected_state_cov + # cdef {{cython_type}} * _initial_state + # cdef {{cython_type}} * _initial_state_cov + + # Current location dimensions + # cdef int _k_endog, _k_states, _k_posdef, _k_endog2, _k_states2, _k_posdef2, _k_endogstates, _k_statesposdef + # cdef int _nmissing + + # ### Initialize state space model + # *Note*: The initial state and state covariance matrix must be provided. + def __init__(self, + {{cython_type}} [::1,:] obs, + {{cython_type}} [::1,:,:] design, + {{cython_type}} [::1,:] obs_intercept, + {{cython_type}} [::1,:,:] obs_cov, + {{cython_type}} [::1,:,:] transition, + {{cython_type}} [::1,:] state_intercept, + {{cython_type}} [::1,:,:] selection, + {{cython_type}} [::1,:,:] state_cov, + diagonal_obs_cov=-1): + + # Local variables + cdef: + int t, i, j + np.npy_intp dim1[1] + np.npy_intp dim2[2] + np.npy_intp dim3[3] + + # #### State space representation variables + # **Note**: these arrays share data with the versions defined in + # Python and passed to this constructor, so if they are updated in + # Python they will also be updated here. + self.obs = obs + self.design = design + self.obs_intercept = obs_intercept + self.obs_cov = obs_cov + self.transition = transition + self.state_intercept = state_intercept + self.selection = selection + self.state_cov = state_cov + + # Dimensions + self.k_endog = obs.shape[0] + self.k_states = selection.shape[0] + self.k_posdef = selection.shape[1] + self.nobs = obs.shape[1] + + # #### Validate matrix dimensions + # + # Make sure that the given state-space matrices have consistent sizes + tools.validate_matrix_shape('design', &self.design.shape[0], + self.k_endog, self.k_states, self.nobs) + tools.validate_vector_shape('observation intercept', &self.obs_intercept.shape[0], + self.k_endog, self.nobs) + tools.validate_matrix_shape('observation covariance matrix', &self.obs_cov.shape[0], + self.k_endog, self.k_endog, self.nobs) + tools.validate_matrix_shape('transition', &self.transition.shape[0], + self.k_states, self.k_states, self.nobs) + tools.validate_vector_shape('state intercept', &self.state_intercept.shape[0], + self.k_states, self.nobs) + tools.validate_matrix_shape('state covariance matrix', &self.state_cov.shape[0], + self.k_posdef, self.k_posdef, self.nobs) + + # Check for a time-invariant model + self.time_invariant = ( + self.design.shape[2] == 1 and + self.obs_intercept.shape[1] == 1 and + self.obs_cov.shape[2] == 1 and + self.transition.shape[2] == 1 and + self.state_intercept.shape[1] == 1 and + self.selection.shape[2] == 1 and + self.state_cov.shape[2] == 1 + ) + + # Set the flag for initialization to be false + self.initialized = False + + # Unless it is specified, check for a diagonal covariance matrix + if diagonal_obs_cov == -1: + diagonal_obs_cov = True + for t in range(self.obs_cov.shape[2]): + for i in range(self.k_endog): + for j in range(self.k_endog): + if i == j: + continue + if not ({{combined_prefix}}abs(self.obs_cov[i, j, t]) < 1e-9): + diagonal_obs_cov = False + break + self.diagonal_obs_cov = diagonal_obs_cov + + # Allocate selected state covariance matrix + dim3[0] = self.k_states; dim3[1] = self.k_states; dim3[2] = 1; + # (we only allocate memory for time-varying array if necessary) + if self.state_cov.shape[2] > 1 or self.selection.shape[2] > 1: + dim3[2] = self.nobs + self.selected_state_cov = np.PyArray_ZEROS(3, dim3, {{typenum}}, FORTRAN) + + # Handle missing data + self.missing = np.array(np.isnan(obs), dtype=np.int32, order="F") + self.nmissing = np.array(np.sum(self.missing, axis=0), dtype=np.int32) + self.has_missing = np.sum(self.nmissing) > 0 + + # Create the temporary array + # Holds arrays of dimension $(m \times m)$ + dim2[0] = self.k_states; dim2[1] = max(self.k_states, self.k_posdef); + self.tmp = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + # Arrays for initialization + dim1[0] = self.k_states; + self.initial_state = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + dim2[0] = self.k_states; dim2[1] = self.k_states; + self.initial_state_cov = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim2[0] = self.k_states; dim2[1] = self.k_states; + self.initial_diffuse_state_cov = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + # Arrays for missing data + dim1[0] = self.k_endog; + self.selected_obs = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + dim1[0] = self.k_endog; + self.selected_obs_intercept = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + dim1[0] = self.k_endog * self.k_states; + self.selected_design = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + dim1[0] = self.k_endog**2; + self.selected_obs_cov = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + + # Arrays for transformations + dim2[0] = self.k_endog; dim2[1] = self.k_endog; + self.transform_cholesky = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self.transform_obs_cov = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim2[0] = self.k_endog; dim2[1] = self.k_states; + self.transform_design = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + dim1[0] = self.k_states; + self.collapse_obs = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + self.collapse_obs_tmp = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + dim2[0] = self.k_states; dim2[1] = self.k_states; + self.collapse_design = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self.collapse_obs_cov = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self.collapse_cholesky = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + # Initialize location + self.t = 0 + + # Initialize dimensions + self.set_dimensions(self.k_endog, self.k_states, self.k_posdef) + + def __reduce__(self): + init = (np.array(self.obs, copy=True, order='F'), np.array(self.design, copy=True, order='F'), + np.array(self.obs_intercept, copy=True, order='F'), np.array(self.obs_cov, copy=True, order='F'), + np.array(self.transition, copy=True, order='F'), np.array(self.state_intercept, copy=True, order='F'), + np.array(self.selection, copy=True, order='F'), np.array(self.state_cov, copy=True, order='F'), + self.diagonal_obs_cov) + state = {'initialized': self.initialized, + 'initial_state': None, + 'initial_state_cov': None, + 'initial_diffuse_state_cov': None, + 'missing': np.array(self.missing, copy=True, order='F'), + 'nmissing': np.array(self.nmissing, copy=True, order='F'), + 'has_missing': self.has_missing, + 'tmp': np.array(self.tmp, copy=True, order='F'), + 'selected_state_cov': np.array(self.selected_state_cov, copy=True, order='F'), + 'selected_obs': np.array(self.selected_obs, copy=True, order='F'), + 'selected_obs_intercept': np.array(self.selected_obs_intercept, copy=True, order='F'), + 'selected_design': np.array(self.selected_design, copy=True, order='F'), + 'selected_obs_cov': np.array(self.selected_obs_cov, copy=True, order='F'), + 'transform_cholesky': np.array(self.transform_cholesky, copy=True, order='F'), + 'transform_obs_cov': np.array(self.transform_obs_cov, copy=True, order='F'), + 'transform_design': np.array(self.transform_design, copy=True, order='F'), + 'collapse_obs': np.array(self.collapse_obs, copy=True, order='F'), + 'collapse_obs_tmp': np.array(self.collapse_obs_tmp, copy=True, order='F'), + 'collapse_design': np.array(self.collapse_design, copy=True, order='F'), + 'collapse_obs_cov': np.array(self.collapse_obs_cov, copy=True, order='F'), + 'collapse_cholesky': np.array(self.collapse_cholesky, copy=True, order='F'), + 't': self.t, + 'collapse_loglikelihood': self.collapse_loglikelihood, + 'companion_transition': self.companion_transition, + 'transform_determinant': self.transform_determinant, + } + if self.initialized: + state['initial_state'] = np.array(self.initial_state, copy=True, order='F') + state['initial_state_cov'] = np.array(self.initial_state_cov, copy=True, order='F') + state['initial_diffuse_state_cov'] = np.array(self.initial_diffuse_state_cov, copy=True, order='F') + return (self.__class__, init, state) + + def __setstate__(self, state): + self.initial_state = state['initial_state'] + self.initial_state_cov = state['initial_state_cov'] + self.initial_diffuse_state_cov = state['initial_diffuse_state_cov'] + self.initialized = state['initialized'] + self.selected_state_cov = state['selected_state_cov'] + self.missing = state['missing'] + self.nmissing =state['nmissing'] + self.has_missing = state['has_missing'] + self.tmp = state['tmp'] + self.selected_obs = state['selected_obs'] + self.selected_obs_intercept = state['selected_obs_intercept'] + self.selected_design = state['selected_design'] + self.selected_obs_cov =state['selected_obs_cov'] + self.transform_cholesky = state['transform_cholesky'] + self.transform_obs_cov = state['transform_obs_cov'] + self.transform_design = state['transform_design'] + self.collapse_obs = state['collapse_obs'] + self.collapse_obs_tmp = state['collapse_obs_tmp'] + self.collapse_design = state['collapse_design'] + self.collapse_obs_cov = state['collapse_obs_cov'] + self.collapse_cholesky = state['collapse_cholesky'] + self.t = state['t'] + self.collapse_loglikelihood = state['collapse_loglikelihood'] + self.companion_transition = state['companion_transition'] + self.transform_determinant = state['transform_determinant'] + + def initialize(self, init, offset=0, complex_step=False, clear=True): + cdef {{prefix}}Initialization _init + # Clear initial arrays + if clear: + self.initial_state[:] = 0 + self.initial_diffuse_state_cov[:] = 0 + self.initial_state_cov[:] = 0 + + # If using global initialization, compute the actual elements and + # return them + if init.initialization_type is not None: + init._initialize_initialization(prefix='{{prefix}}') + _init = init._initializations['{{prefix}}'] + _init.initialize(init.initialization_type, offset, self, + self.initial_state, + self.initial_diffuse_state_cov, + self.initial_state_cov, complex_step) + # Otherwise, if using blocks, initialize each of the blocks + else: + for block_index, block_init in init.blocks.items(): + self.initialize(block_init, offset=offset + block_index[0], + complex_step=complex_step, clear=False) + + if not self.initialized: + self.initialized = True + + # ## Initialize: known values + # + # Initialize the filter with specific values, assumed to be known with + # certainty or else as filled with parameters from a maximum likelihood + # estimation run. + def initialize_known(self, {{cython_type}} [:] initial_state, {{cython_type}} [::1,:] initial_state_cov): + """ + initialize_known(initial_state, initial_state_cov) + """ + tools.validate_vector_shape('initial state', &initial_state.shape[0], self.k_states, None) + tools.validate_matrix_shape('initial state covariance', &initial_state_cov.shape[0], self.k_states, self.k_states, None) + + self.initial_state = initial_state + self.initial_state_cov = initial_state_cov + self.initial_diffuse_state_cov[:] = 0 + + self.initialized = True + + # ## Initialize: approximate diffuse priors + # + # Durbin and Koopman note that this initialization should only be coupled + # with the standard Kalman filter for "approximate exploratory work" and + # can lead to "large rounding errors" (p. 125). + # + # *Note:* see Durbin and Koopman section 5.6.1 + def initialize_approximate_diffuse(self, {{cython_type}} variance=1e2): + """ + initialize_approximate_diffuse(variance=1e2) + """ + cdef np.npy_intp dim[1] + dim[0] = self.k_states + self.initial_state = np.PyArray_ZEROS(1, dim, {{typenum}}, FORTRAN) + self.initial_state_cov = np.eye(self.k_states, dtype={{dtype}}).T * variance + self.initial_diffuse_state_cov[:] = 0 + + self.initialized = True + + # ## Initialize: stationary process + # *Note:* see Durbin and Koopman section 5.6.2 + def initialize_stationary(self, complex_step=False): + """ + initialize_stationary() + """ + cdef np.npy_intp dim1[1] + cdef np.npy_intp dim2[2] + cdef int i, info, inc = 1 + cdef int k_states2 = self.k_states**2 + cdef np.float64_t asum, tol = 1e-9 + cdef {{cython_type}} scalar + cdef int [::1,:] ipiv + + # Create selected state covariance matrix + {{prefix}}select_cov(self.k_states, self.k_posdef, + &self.tmp[0,0], + &self.selection[0,0,0], + &self.state_cov[0,0,0], + &self.selected_state_cov[0,0,0]) + + # Initial state mean + {{if combined_prefix == 'd'}} + asum = blas.{{prefix}}asum(&self.k_states, &self.state_intercept[0, 0], &inc) + {{elif prefix == 'c'}} + asum = blas.scasum(&self.k_states, &self.state_intercept[0, 0], &inc) + {{else}} + asum = blas.dzasum(&self.k_states, &self.state_intercept[0, 0], &inc) + {{endif}} + + dim1[0] = self.k_states + self.initial_state = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + if asum > tol: + dim2[0] = self.k_states + dim2[1] = self.k_states + ipiv = np.PyArray_ZEROS(2, dim2, np.NPY_INT32, FORTRAN) + + # I - T + blas.{{prefix}}copy(&k_states2, &self.transition[0,0,0], &inc, + &self.tmp[0,0], &inc) + scalar = -1.0 + blas.{{prefix}}scal(&k_states2, &scalar, &self.tmp[0, 0], &inc) + for i in range(self.k_states): + self.tmp[i, i] = self.tmp[i, i] + 1 + + # c + blas.{{prefix}}copy(&self.k_states, &self.state_intercept[0,0], &inc, + &self.initial_state[0], &inc) + + # Solve (I - T) x = c + lapack.{{prefix}}getrf(&self.k_states, &self.k_states, &self.tmp[0, 0], &self.k_states, + &ipiv[0, 0], &info) + lapack.{{prefix}}getrs('N', &self.k_states, &inc, &self.tmp[0, 0], &self.k_states, + &ipiv[0, 0], &self.initial_state[0], &self.k_states, &info) + + dim2[0] = self.k_states; dim2[1] = self.k_states; + self.initial_state_cov = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + # Create a copy of the transition matrix (to avoid overwriting it) + blas.{{prefix}}copy(&k_states2, &self.transition[0,0,0], &inc, + &self.tmp[0,0], &inc) + + # Copy the selected state covariance to the initial state covariance + # (it will be overwritten with the appropriate matrix) + blas.{{prefix}}copy(&k_states2, &self.selected_state_cov[0,0,0], &inc, + &self.initial_state_cov[0,0], &inc) + + # Solve the discrete Lyapunov equation to the get initial state + # covariance matrix + tools._{{prefix}}solve_discrete_lyapunov(&self.tmp[0,0], &self.initial_state_cov[0,0], self.k_states, complex_step) + + self.initial_diffuse_state_cov[:] = 0 + + self.initialized = True + + def __iter__(self): + return self + + def __next__(self): + """ + Advance to the next location + """ + if self.t >= self.nobs: + raise StopIteration + else: + self.seek(self.t+1, 0, 0) + + cpdef seek(self, unsigned int t, unsigned int transform_diagonalize, unsigned int transform_generalized_collapse): + cdef int previous_t = self.t + + # Set the global time indicator, if valid + if t >= self.nobs: + raise IndexError("Observation index out of range") + self.t = t + + # Indices for possibly time-varying arrays + cdef: + int k_endog + int design_t = 0 + int obs_intercept_t = 0 + int obs_cov_t = 0 + int transition_t = 0 + int state_intercept_t = 0 + int selection_t = 0 + int state_cov_t = 0 + + # Get indices for possibly time-varying arrays + if not self.time_invariant: + if self.design.shape[2] > 1: design_t = t + if self.obs_intercept.shape[1] > 1: obs_intercept_t = t + if self.obs_cov.shape[2] > 1: obs_cov_t = t + if self.transition.shape[2] > 1: transition_t = t + if self.state_intercept.shape[1] > 1: state_intercept_t = t + if self.selection.shape[2] > 1: selection_t = t + if self.state_cov.shape[2] > 1: state_cov_t = t + + # Initialize object-level pointers to statespace arrays + self._obs = &self.obs[0, t] + self._design = &self.design[0, 0, design_t] + self._obs_intercept = &self.obs_intercept[0, obs_intercept_t] + self._obs_cov = &self.obs_cov[0, 0, obs_cov_t] + self._transition = &self.transition[0, 0, transition_t] + self._state_intercept = &self.state_intercept[0, state_intercept_t] + self._selection = &self.selection[0, 0, selection_t] + self._state_cov = &self.state_cov[0, 0, state_cov_t] + + # Initialize object-level pointers to initialization + if not self.initialized: + raise RuntimeError("Statespace model not initialized.") + self._initial_state = &self.initial_state[0] + self._initial_state_cov = &self.initial_state_cov[0,0] + self._initial_diffuse_state_cov = &self.initial_diffuse_state_cov[0,0] + + # Create the selected state covariance matrix + self.select_state_cov(t) + + # Handle missing data + # Note: this modifies object pointers and _* dimensions + k_endog = self.select_missing(t) + + # Set dimensions + self.set_dimensions(k_endog, self.k_states, self.k_posdef) + + # Handle transformations + self.transform(t, previous_t, transform_diagonalize, transform_generalized_collapse) + + cdef void set_dimensions(self, unsigned int k_endog, unsigned int k_states, unsigned int k_posdef): + self._k_endog = k_endog + self._k_states = k_states + self._k_posdef = k_posdef + self._k_endog2 = k_endog**2 + self._k_states2 = k_states**2 + self._k_posdef2 = k_posdef**2 + self._k_endogstates = k_endog * k_states + self._k_statesposdef = k_states * k_posdef + + cdef void select_state_cov(self, unsigned int t): + cdef int selected_state_cov_t = 0 + + # ### Get selected state covariance matrix + if t == 0 or self.selected_state_cov.shape[2] > 1: + selected_state_cov_t = t + self._selected_state_cov = &self.selected_state_cov[0, 0, selected_state_cov_t] + + {{prefix}}select_cov(self.k_states, self.k_posdef, + &self.tmp[0,0], + self._selection, + self._state_cov, + self._selected_state_cov) + else: + self._selected_state_cov = &self.selected_state_cov[0, 0, 0] + + cdef int select_missing(self, unsigned int t): + # Note: this assumes that object pointers are already initialized + # Note: this assumes that transform_... will be done *later* + cdef int k_endog = self.k_endog + + # Set the current iteration nmissing + self._nmissing = self.nmissing[t] + + # ### Perform missing selections + # In Durbin and Koopman (2012), these are represented as matrix + # multiplications, i.e. $Z_t^* = W_t Z_t$ where $W_t$ is a row + # selection matrix (it contains a subset of rows of the identity + # matrix). + # + # It's more efficient, though, to just copy over the data directly, + # which is what is done here. Note that the `selected_*` arrays are + # defined as single-dimensional, so the assignment indexes below are + # set such that the arrays can be interpreted by the BLAS and LAPACK + # functions as two-dimensional, column-major arrays. + # + # In the case that all data is missing (e.g. this is what happens in + # forecasting), we actually set don't change the dimension, but we set + # the design matrix to the zeros array. + if self._nmissing == self.k_endog: + self._select_missing_entire_obs(t) + elif self._nmissing > 0: + self._select_missing_partial_obs(t) + k_endog = self.k_endog - self._nmissing + + # Return the number of non-missing endogenous variables + return k_endog + + cdef void _select_missing_entire_obs(self, unsigned int t): + cdef: + int i, j + + # Design matrix is set to zeros + for i in range(self.k_states): + for j in range(self.k_endog): + self.selected_design[j + i*self.k_endog] = 0.0 + self._design = &self.selected_design[0] + + cdef void _select_missing_partial_obs(self, unsigned int t): + cdef: + int i, j, k, l + int inc = 1 + int design_t = 0 + int obs_cov_t = 0 + int k_endog = self.k_endog - self._nmissing + + k = 0 + for i in range(self.k_endog): + if not self.missing[i, t]: + + self.selected_obs[k] = self._obs[i] + self.selected_obs_intercept[k] = self._obs_intercept[i] + + # i is rows, k is rows + blas.{{prefix}}copy(&self.k_states, + &self._design[i], &self.k_endog, + &self.selected_design[k], &k_endog) + + # i, k is columns, j, l is rows + l = 0 + for j in range(self.k_endog): + if not self.missing[j, t]: + self.selected_obs_cov[l + k*k_endog] = self._obs_cov[j + i*self.k_endog] + l += 1 + k += 1 + self._obs = &self.selected_obs[0] + self._obs_intercept = &self.selected_obs_intercept[0] + self._design = &self.selected_design[0] + self._obs_cov = &self.selected_obs_cov[0] + + cdef void transform(self, unsigned int t, unsigned int previous_t, unsigned int transform_diagonalize, unsigned int transform_generalized_collapse) except *: + # Reset the collapsed loglikelihood + self.collapse_loglikelihood = 0 + + if transform_generalized_collapse and not self._k_endog <= self._k_states: + k_endog = self.transform_generalized_collapse(t, previous_t) + # Reset dimensions + self.set_dimensions(k_endog, self._k_states, self._k_posdef) + elif transform_diagonalize and not self.diagonal_obs_cov: + self.transform_diagonalize(t, previous_t) + + cdef void transform_diagonalize(self, unsigned int t, unsigned int previous_t) except *: + # Note: this assumes that initialize_object_pointers has *already* been done + # Note: this assumes that select_missing has *already* been done + # TODO need unit tests, especially for the missing case + # TODO need to also transform observation intercept + cdef: + int i, j, inc=1 + int obs_cov_t, design_t + int info + int reset_missing + {{cython_type}} * _transform_obs_cov = &self.transform_obs_cov[0, 0] + {{cython_type}} * _transform_cholesky = &self.transform_cholesky[0, 0] + + # Compute the cholesky decomposition of *self._obs_cov + if self.diagonal_obs_cov: + return + + # Handle missing data + if self.nmissing[t] == self.k_endog: + return + reset_missing = 0 + for i in range(self.k_endog): + reset_missing = reset_missing + (not self.missing[i,t] == self.missing[i,previous_t]) + + # Perform the LDL decomposition, if necessary + if t == 0 or self.obs_cov.shape[2] > 1 or reset_missing: + # Make sure we don't have an observation intercept + if not np.sum(self.obs_intercept) == 0 or self.obs_intercept.shape[2] > 1: + raise RuntimeError('The univariate method with non-diagonal observation covariance matrix' + ' does not currently support an observation intercept.') + + # LDL decomposition + blas.{{prefix}}copy(&self._k_endog2, self._obs_cov, &inc, _transform_cholesky, &inc) + info = tools._{{prefix}}ldl(_transform_cholesky, self._k_endog) + + # Check for errors + if info > 0: + warnings.warn("Positive semi-definite observation covariance matrix encountered at period %d" % t) + elif info < 0: + raise np.linalg.LinAlgError('Invalid value in LDL factorization of observation covariance matrix encountered at period %d' % t) + + # Currently both L and D are stored in transform_cholesky + for i in range(self._k_endog): # i is rows + for j in range(self._k_endog): # j is columns + # Diagonal elements come from the diagonal + if i == j: + _transform_obs_cov[i + i * self._k_endog] = _transform_cholesky[i + i * self._k_endog] + # Other elements are zero + else: + _transform_obs_cov[i + j * self._k_endog] = 0 + + # Zero out the upper triangle of the cholesky + if j > i: + _transform_cholesky[i + j * self._k_endog] = 0 + + # Convert from L to C simply by setting the diagonal elements to ones + _transform_cholesky[i + i * self._k_endog] = 1 + + # Solve for y_t^* + # (unless this is a completely missing observation) + if not self._nmissing == self.k_endog: + # If we have some missing elements, selected_obs is already populated + if self._nmissing == 0: + blas.{{prefix}}copy(&self._k_endog, &self.obs[0,t], &inc, &self.selected_obs[0], &inc) + lapack.{{prefix}}trtrs("L", "N", "U", &self._k_endog, &inc, + _transform_cholesky, &self.k_endog, + &self.selected_obs[0], &self._k_endog, &info) + + # Check for errors + if info > 0: + raise np.linalg.LinAlgError('Singular factorization of observation covariance matrix encountered at period %d' % t) + elif info < 0: + raise np.linalg.LinAlgError('Invalid value in factorization of observation covariance matrix encountered at period %d' % t) + + # Setup the pointer + self._obs = &self.selected_obs[0] + + # Solve for Z_t^*, if necessary + if t == 0 or self.design.shape[2] > 1 or reset_missing: + blas.{{prefix}}copy(&self._k_endogstates, self._design, &inc, &self.transform_design[0,0], &inc) + lapack.{{prefix}}trtrs("L", "N", "U", &self._k_endog, &self._k_states, + _transform_cholesky, &self.k_endog, + &self.transform_design[0,0], &self._k_endog, + &info) + + # Check for errors + if info > 0: + raise np.linalg.LinAlgError('Singular factorization of observation covariance matrix encountered at period %d' % t) + elif info < 0: + raise np.linalg.LinAlgError('Invalid value in factorization of observation covariance matrix encountered at period %d' % t) + + # Setup final pointers + self._design = &self.transform_design[0,0] + self._obs_cov = &self.transform_obs_cov[0,0] + + cdef int transform_generalized_collapse(self, unsigned int t, unsigned int previous_t) except *: + # Note: this assumes that initialize_object_pointers has *already* been done + # Note: this assumes that select_missing has *already* been done + # TODO need unit tests, especially for the missing case + cdef: + int i, j, inc=1 + int obs_cov_t, design_t + int info + int reset_missing + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + int k_states = self._k_states + int k_states2 = self._k_states2 + int k_endogstates = self._k_endogstates + + # $y_t^* = \bar A^* y_t = C_t Z_t' H_t^{-1} y_t$ + # $Z_t^* = C_t^{-1}$ + # $H_t^* = I_m$ + + # Make sure we have enough observations to perform collapse + if self.k_endog < self.k_states: + raise RuntimeError('Cannot collapse observation vector it the' + ' state dimension is larger than the dimension' + ' of the observation vector.') + + # Adjust for a VAR transition (i.e. design = [#, 0], where the zeros + # correspond to all states except the first k_posdef states) + if self.subset_design: + k_states = self._k_posdef + k_states2 = self._k_posdef2 + k_endogstates = self._k_endog * self._k_posdef + + # Handle missing data + if self.nmissing[t] == self.k_endog: + return self.k_states + reset_missing = 0 + for i in range(self.k_endog): + reset_missing = reset_missing + (not self.missing[i,t] == self.missing[i,previous_t]) + + # Initialize the transformation + if self.collapse_obs_cov[0,0] == 0: + # Set H_t^* to identity + for i in range(k_states): + self.collapse_obs_cov[i,i] = 1 + + # Make sure we don't have an observation intercept + if not np.sum(self.obs_intercept) == 0 or self.obs_intercept.shape[2] > 1: + raise RuntimeError('The observation collapse transformation' + ' does not currently support an observation' + ' intercept.') + + # Perform the Cholesky decomposition of H_t, if necessary + if t == 0 or self.obs_cov.shape[2] > 1 or reset_missing: + # Cholesky decomposition: $H = L L'$ + blas.{{prefix}}copy(&self._k_endog2, self._obs_cov, &inc, &self.transform_cholesky[0,0], &inc) + # Use LDA=self.k_endog so that we can use the memoryview slicing below + lapack.{{prefix}}potrf("L", &self._k_endog, &self.transform_cholesky[0,0], &self.k_endog, &info) + + # Check for errors + if info > 0: + raise np.linalg.LinAlgError('Non-positive-definite observation covariance matrix encountered at period %d' % t) + elif info < 0: + raise np.linalg.LinAlgError('Invalid value in observation covariance matrix encountered at period %d' % t) + + # Calculate the determinant (just the squared product of the + # diagonals, in the Cholesky decomposition case) + self.transform_determinant = 1.0 + for i in range(self._k_endog): + if not self.transform_cholesky[i, i] == 0: + self.transform_determinant = self.transform_determinant * self.transform_cholesky[i, i] + self.transform_determinant = self.transform_determinant**2 + + # Get $Z_t \equiv C^{-1}$, if necessary + if t == 0 or self.obs_cov.shape[2] > 1 or self.design.shape[2] > 1 or reset_missing: + # Calculate $H_t^{-1} Z_t \equiv (Z_t' H_t^{-1})'$ via Cholesky solver + blas.{{prefix}}copy(&self._k_endogstates, self._design, &inc, &self.transform_design[0,0], &inc) + lapack.{{prefix}}potrs("L", &self._k_endog, &k_states, + &self.transform_cholesky[0,0], &self.k_endog, + &self.transform_design[0,0], &self._k_endog, + &info) + + # Check for errors + if not info == 0: + raise np.linalg.LinAlgError('Invalid value in calculation of H_t^{-1}Z matrix encountered at period %d' % t) + + # Calculate $(H_t^{-1} Z_t)' Z_t$ + # $(m \times m) = (m \times p) (p \times p) (p \times m)$ + blas.{{prefix}}gemm("T", "N", &k_states, &k_states, &self._k_endog, + &alpha, self._design, &self._k_endog, + &self.transform_design[0,0], &self._k_endog, + &beta, &self.collapse_cholesky[0,0], &self._k_states) + + # Calculate $(Z_t' H_t^{-1} Z_t)^{-1}$ via Cholesky inversion + lapack.{{prefix}}potrf("U", &k_states, &self.collapse_cholesky[0,0], &self.k_states, &info) + lapack.{{prefix}}potri("U", &k_states, &self.collapse_cholesky[0,0], &self.k_states, &info) + + # Calculate $C_t$ (the upper triangular cholesky decomposition of $(Z_t' H_t^{-1} Z_t)^{-1}$) + lapack.{{prefix}}potrf("U", &k_states, &self.collapse_cholesky[0,0], &self.k_states, &info) + + # Check for errors + if info > 0: + raise np.linalg.LinAlgError('Non-positive-definite ZHZ matrix encountered at period %d' % t) + elif info < 0: + raise np.linalg.LinAlgError('Invalid value in ZHZ matrix encountered at period %d' % t) + + # Calculate $C_t'^{-1} \equiv Z_t$ + # Do so by solving the system: $C_t' x = I$ + # (Recall that collapse_obs_cov is an identity matrix) + blas.{{prefix}}copy(&self._k_states2, &self.collapse_obs_cov[0,0], &inc, &self.collapse_design[0,0], &inc) + lapack.{{prefix}}trtrs("U", "T", "N", &k_states, &k_states, + &self.collapse_cholesky[0,0], &self._k_states, + &self.collapse_design[0,0], &self._k_states, + &info) + + # Calculate $\bar y_t^* = \bar A_t^* y_t = C_t Z_t' H_t^{-1} y_t$ + # (unless this is a completely missing observation) + self.collapse_loglikelihood = 0 + if not self._nmissing == self.k_endog: + # If we have some missing elements, selected_obs is already populated + if self._nmissing == 0: + blas.{{prefix}}copy(&self.k_endog, &self.obs[0,t], &inc, &self.selected_obs[0], &inc) + # $\\# = Z_t' H_t^{-1} y_t$ + blas.{{prefix}}gemv("T", &self._k_endog, &k_states, + &alpha, &self.transform_design[0,0], &self._k_endog, + &self.selected_obs[0], &inc, + &beta, &self.collapse_obs[0], &inc) + # $y_t^* = C_t \\#$ + blas.{{prefix}}trmv("U", "N", "N", &k_states, + &self.collapse_cholesky[0,0], &self._k_states, + &self.collapse_obs[0], &inc) + + # Get residuals for loglikelihood calculation + # Note: Durbin and Koopman (2012) appears to have an error in the + # formula here. They have $e_t = y_t - Z_t \bar y_t^*$, whereas it + # should be: $e_t = y_t - Z_t C_t' \bar y_t^*$ + # See Jungbacker and Koopman (2014), section 2.5 where $e_t$ is + # defined. In this case, $Z_t^dagger = Z_t C_t$ where + # $C_t C_t' = (Z_t' \Sigma_\varepsilon^{-1} Z_t)^{-1}$. + # + + # $ \\# = C_t' y_t^*$ + blas.{{prefix}}copy(&k_states, &self.collapse_obs[0], &inc, &self.collapse_obs_tmp[0], &inc) + blas.{{prefix}}trmv("U", "T", "N", &k_states, + &self.collapse_cholesky[0,0], &self._k_states, + &self.collapse_obs_tmp[0], &inc) + + # $e_t = - Z_t C_t' y_t^* + y_t$ + blas.{{prefix}}gemv("N", &self._k_endog, &k_states, + &gamma, self._design, &self._k_endog, + &self.collapse_obs_tmp[0], &inc, + &alpha, &self.selected_obs[0], &inc) + + # Calculate e_t' H_t^{-1} e_t via Cholesky solver + # $H_t^{-1} = (L L')^{-1} = L^{-1}' L^{-1}$ + # So we want $e_t' L^{-1}' L^{-1} e_t = (L^{-1} e_t)' L^{-1} e_t$ + # We have $L$ in `transform_cholesky`, so we want to do a linear + # solve of $L x = e_t$ where L is lower triangular + lapack.{{prefix}}trtrs("L", "N", "N", &self._k_endog, &inc, + &self.transform_cholesky[0,0], &self.k_endog, + &self.selected_obs[0], &self._k_endog, + &info) + + # Calculate loglikelihood contribution of this observation + + # $e_t' H_t^{-1} e_t = (L^{-1} e_t)' L^{-1} e_t = \sum_i e_{i,t}**2$ + self.collapse_loglikelihood = 0 + for i in range(self._k_endog): + self.collapse_loglikelihood = self.collapse_loglikelihood + self.selected_obs[i]**2 + + # (p-m) log( 2*pi) + log( |H_t| ) + self.collapse_loglikelihood = ( + self.collapse_loglikelihood + + (self._k_endog - k_states)*{{combined_prefix}}log(2*NPY_PI) + + {{combined_prefix}}log(self.transform_determinant) + ) + + # -0.5 * ... + self.collapse_loglikelihood = -0.5 * self.collapse_loglikelihood + + # Set pointers + self._obs = &self.collapse_obs[0] + self._design = &self.collapse_design[0,0] + self._obs_cov = &self.collapse_obs_cov[0,0] + + # TODO can I replace this with k_states? I think I should be able to + return self._k_states + +# ### Selected covariance matrice +cdef int {{prefix}}select_cov(int k, int k_posdef, + {{cython_type}} * tmp, + {{cython_type}} * selection, + {{cython_type}} * cov, + {{cython_type}} * selected_cov): + cdef: + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + + # Only need to do something if there is a covariance matrix + # (i.e k_posdof == 0) + if k_posdef > 0: + + # #### Calculate selected state covariance matrix + # $Q_t^* = R_t Q_t R_t'$ + # + # Combine a selection matrix and a covariance matrix to get + # a simplified (but possibly singular) "selected" covariance + # matrix (see e.g. Durbin and Koopman p. 43) + + # `tmp0` array used here, dimension $(m \times r)$ + + # TODO this does not require two ?gemm calls, since we know that it + # is just selection rows and columns of the Q matrix + + # $\\#_0 = 1.0 * R_t Q_t$ + # $(m \times r) = (m \times r) (r \times r)$ + blas.{{prefix}}gemm("N", "N", &k, &k_posdef, &k_posdef, + &alpha, selection, &k, + cov, &k_posdef, + &beta, tmp, &k) + # $Q_t^* = 1.0 * \\#_0 R_t'$ + # $(m \times m) = (m \times r) (m \times r)'$ + blas.{{prefix}}gemm("N", "T", &k, &k, &k_posdef, + &alpha, tmp, &k, + selection, &k, + &beta, selected_cov, &k) + +{{endfor}} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/_simulation_smoother.pxd b/statsmodels/tsa/statespace/_simulation_smoother.pxd new file mode 100644 index 0000000..aacee86 --- /dev/null +++ b/statsmodels/tsa/statespace/_simulation_smoother.pxd @@ -0,0 +1,304 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Model Smoother declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cdef int SMOOTHER_STATE # Durbin and Koopman (2012), Chapter 4.4.2 +cdef int SMOOTHER_STATE_COV # Durbin and Koopman (2012), Chapter 4.4.3 +cdef int SMOOTHER_DISTURBANCE # Durbin and Koopman (2012), Chapter 4.5 +cdef int SMOOTHER_DISTURBANCE_COV # Durbin and Koopman (2012), Chapter 4.5 +cdef int SMOOTHER_ALL + +# Typical imports +cimport numpy as np + +from statsmodels.tsa.statespace._representation cimport ( + sStatespace, dStatespace, cStatespace, zStatespace +) +from statsmodels.tsa.statespace._kalman_filter cimport ( + sKalmanFilter, dKalmanFilter, cKalmanFilter, zKalmanFilter +) +from statsmodels.tsa.statespace._kalman_smoother cimport ( + sKalmanSmoother, dKalmanSmoother, cKalmanSmoother, zKalmanSmoother +) + +# Single precision +cdef class sSimulationSmoother(object): + # ### Statespace model + cdef readonly sStatespace model + # ### Kalman filter + cdef readonly sKalmanFilter kfilter + # ### Kalman smoother + cdef readonly sKalmanSmoother smoother + + # ### Simulated Statespace model + cdef readonly sStatespace simulated_model + # ### Simulated Kalman filter + cdef readonly sKalmanFilter simulated_kfilter + # ### Simulated Kalman smoother + cdef readonly sKalmanSmoother simulated_smoother + + # ### Simulated Statespace model + cdef readonly sStatespace secondary_simulated_model + # ### Simulated Kalman filter + cdef readonly sKalmanFilter secondary_simulated_kfilter + # ### Simulated Kalman smoother + cdef readonly sKalmanSmoother secondary_simulated_smoother + + # ### Simulation parameters + cdef public int simulation_output + cdef public int has_missing + + # ### Random variates + cdef int n_disturbance_variates + cdef readonly np.float32_t [:] disturbance_variates + cdef int n_initial_state_variates + cdef readonly np.float32_t [:] initial_state_variates + + # ### Simulated Data + cdef readonly np.float32_t [::1,:] simulated_measurement_disturbance + cdef readonly np.float32_t [::1,:] simulated_state_disturbance + cdef readonly np.float32_t [::1,:] simulated_state + + # ### Generated Data + cdef readonly np.float32_t [::1,:] generated_obs + cdef readonly np.float32_t [::1,:] generated_state + + # ### Temporary arrays + cdef readonly np.float32_t [::1,:] tmp0, tmp1, tmp2 + + # ### Pointers + cdef np.float32_t * _tmp0 + cdef np.float32_t * _tmp1 + cdef np.float32_t * _tmp2 + + # ### Parameters + cdef readonly int nobs + cdef readonly int pretransformed_disturbance_variates + cdef readonly int pretransformed_initial_state_variates + cdef readonly int fixed_initial_state + + cpdef draw_disturbance_variates(self) + cpdef draw_initial_state_variates(self) + cpdef set_disturbance_variates(self, np.float32_t [:] variates, int pretransformed=*) + cpdef set_initial_state_variates(self, np.float32_t [:] variates, int pretransformed=*) + cpdef set_initial_state(self, np.float32_t [:] initial_state) + cpdef simulate(self, int simulation_output=*) + + cdef np.float32_t generate_obs(self, int t, np.float32_t * obs, np.float32_t * state, np.float32_t * variates) + cdef np.float32_t generate_state(self, int t, np.float32_t * state, np.float32_t * input_state, np.float32_t * variates) + cdef void cholesky(self, np.float32_t * source, np.float32_t * destination, int n) + cdef void transform_variates(self, np.float32_t * variates, np.float32_t * cholesky_factor, int n) + cdef void _reinitialize_temp_pointers(self) except * + +# Double precision +cdef class dSimulationSmoother(object): + # ### Statespace model + cdef readonly dStatespace model + # ### Kalman filter + cdef readonly dKalmanFilter kfilter + # ### Kalman smoother + cdef readonly dKalmanSmoother smoother + + # ### Simulated Statespace model + cdef readonly dStatespace simulated_model + # ### Simulated Kalman filter + cdef readonly dKalmanFilter simulated_kfilter + # ### Simulated Kalman smoother + cdef readonly dKalmanSmoother simulated_smoother + + # ### Simulated Statespace model + cdef readonly dStatespace secondary_simulated_model + # ### Simulated Kalman filter + cdef readonly dKalmanFilter secondary_simulated_kfilter + # ### Simulated Kalman smoother + cdef readonly dKalmanSmoother secondary_simulated_smoother + + # ### Simulation parameters + cdef public int simulation_output + cdef public int has_missing + + # ### Random variates + cdef int n_disturbance_variates + cdef readonly np.float64_t [:] disturbance_variates + cdef int n_initial_state_variates + cdef readonly np.float64_t [:] initial_state_variates + + # ### Simulated Data + cdef readonly np.float64_t [::1,:] simulated_measurement_disturbance + cdef readonly np.float64_t [::1,:] simulated_state_disturbance + cdef readonly np.float64_t [::1,:] simulated_state + + # ### Generated Data + cdef readonly np.float64_t [::1,:] generated_obs + cdef readonly np.float64_t [::1,:] generated_state + + # ### Temporary arrays + cdef readonly np.float64_t [::1,:] tmp0, tmp1, tmp2 + + # ### Pointers + cdef np.float64_t * _tmp0 + cdef np.float64_t * _tmp1 + cdef np.float64_t * _tmp2 + + # ### Parameters + cdef readonly int nobs + cdef readonly int pretransformed_disturbance_variates + cdef readonly int pretransformed_initial_state_variates + cdef readonly int fixed_initial_state + + cpdef draw_disturbance_variates(self) + cpdef draw_initial_state_variates(self) + cpdef set_disturbance_variates(self, np.float64_t [:] variates, int pretransformed=*) + cpdef set_initial_state_variates(self, np.float64_t [:] variates, int pretransformed=*) + cpdef set_initial_state(self, np.float64_t [:] initial_state) + cpdef simulate(self, int simulation_output=*) + + cdef np.float64_t generate_obs(self, int t, np.float64_t * obs, np.float64_t * state, np.float64_t * variates) + cdef np.float64_t generate_state(self, int t, np.float64_t * state, np.float64_t * input_state, np.float64_t * variates) + cdef void cholesky(self, np.float64_t * source, np.float64_t * destination, int n) + cdef void transform_variates(self, np.float64_t * variates, np.float64_t * cholesky_factor, int n) + cdef void _reinitialize_temp_pointers(self) except * + +# Single precision complex +cdef class cSimulationSmoother(object): + # ### Statespace model + cdef readonly cStatespace model + # ### Kalman filter + cdef readonly cKalmanFilter kfilter + # ### Kalman smoother + cdef readonly cKalmanSmoother smoother + + # ### Simulated Statespace model + cdef readonly cStatespace simulated_model + # ### Simulated Kalman filter + cdef readonly cKalmanFilter simulated_kfilter + # ### Simulated Kalman smoother + cdef readonly cKalmanSmoother simulated_smoother + + # ### Simulated Statespace model + cdef readonly cStatespace secondary_simulated_model + # ### Simulated Kalman filter + cdef readonly cKalmanFilter secondary_simulated_kfilter + # ### Simulated Kalman smoother + cdef readonly cKalmanSmoother secondary_simulated_smoother + + # ### Simulation parameters + cdef public int simulation_output + cdef public int has_missing + + # ### Random variates + cdef int n_disturbance_variates + cdef readonly np.complex64_t [:] disturbance_variates + cdef int n_initial_state_variates + cdef readonly np.complex64_t [:] initial_state_variates + + # ### Simulated Data + cdef readonly np.complex64_t [::1,:] simulated_measurement_disturbance + cdef readonly np.complex64_t [::1,:] simulated_state_disturbance + cdef readonly np.complex64_t [::1,:] simulated_state + + # ### Generated Data + cdef readonly np.complex64_t [::1,:] generated_obs + cdef readonly np.complex64_t [::1,:] generated_state + + # ### Temporary arrays + cdef readonly np.complex64_t [::1,:] tmp0, tmp1, tmp2 + + # ### Pointers + cdef np.complex64_t * _tmp0 + cdef np.complex64_t * _tmp1 + cdef np.complex64_t * _tmp2 + + # ### Parameters + cdef readonly int nobs + cdef readonly int pretransformed_disturbance_variates + cdef readonly int pretransformed_initial_state_variates + cdef readonly int fixed_initial_state + + cpdef draw_disturbance_variates(self) + cpdef draw_initial_state_variates(self) + cpdef set_disturbance_variates(self, np.complex64_t [:] variates, int pretransformed=*) + cpdef set_initial_state_variates(self, np.complex64_t [:] variates, int pretransformed=*) + cpdef set_initial_state(self, np.complex64_t [:] initial_state) + cpdef simulate(self, int simulation_output=*) + + cdef np.complex64_t generate_obs(self, int t, np.complex64_t * obs, np.complex64_t * state, np.complex64_t * variates) + cdef np.complex64_t generate_state(self, int t, np.complex64_t * state, np.complex64_t * input_state, np.complex64_t * variates) + cdef void cholesky(self, np.complex64_t * source, np.complex64_t * destination, int n) + cdef void transform_variates(self, np.complex64_t * variates, np.complex64_t * cholesky_factor, int n) + cdef void _reinitialize_temp_pointers(self) except * + +# Double precision complex +cdef class zSimulationSmoother(object): + # ### Statespace model + cdef readonly zStatespace model + # ### Kalman filter + cdef readonly zKalmanFilter kfilter + # ### Kalman smoother + cdef readonly zKalmanSmoother smoother + + # ### Simulated Statespace model + cdef readonly zStatespace simulated_model + # ### Simulated Kalman filter + cdef readonly zKalmanFilter simulated_kfilter + # ### Simulated Kalman smoother + cdef readonly zKalmanSmoother simulated_smoother + + # ### Simulated Statespace model + cdef readonly zStatespace secondary_simulated_model + # ### Simulated Kalman filter + cdef readonly zKalmanFilter secondary_simulated_kfilter + # ### Simulated Kalman smoother + cdef readonly zKalmanSmoother secondary_simulated_smoother + + # ### Simulation parameters + cdef public int simulation_output + cdef public int has_missing + + # ### Random variates + cdef int n_disturbance_variates + cdef readonly np.complex128_t [:] disturbance_variates + cdef int n_initial_state_variates + cdef readonly np.complex128_t [:] initial_state_variates + + # ### Simulated Data + cdef readonly np.complex128_t [::1,:] simulated_measurement_disturbance + cdef readonly np.complex128_t [::1,:] simulated_state_disturbance + cdef readonly np.complex128_t [::1,:] simulated_state + + # ### Generated Data + cdef readonly np.complex128_t [::1,:] generated_obs + cdef readonly np.complex128_t [::1,:] generated_state + + # ### Temporary arrays + cdef readonly np.complex128_t [::1,:] tmp0, tmp1, tmp2 + + # ### Pointers + cdef np.complex128_t * _tmp0 + cdef np.complex128_t * _tmp1 + cdef np.complex128_t * _tmp2 + + # ### Parameters + cdef readonly int nobs + cdef readonly int pretransformed_disturbance_variates + cdef readonly int pretransformed_initial_state_variates + cdef readonly int fixed_initial_state + + cpdef draw_disturbance_variates(self) + cpdef draw_initial_state_variates(self) + cpdef set_disturbance_variates(self, np.complex128_t [:] variates, int pretransformed=*) + cpdef set_initial_state_variates(self, np.complex128_t [:] variates, int pretransformed=*) + cpdef set_initial_state(self, np.complex128_t [:] initial_state) + cpdef simulate(self, int simulation_output=*) + + cdef np.complex128_t generate_obs(self, int t, np.complex128_t * obs, np.complex128_t * state, np.complex128_t * variates) + cdef np.complex128_t generate_state(self, int t, np.complex128_t * state, np.complex128_t * input_state, np.complex128_t * variates) + cdef void cholesky(self, np.complex128_t * source, np.complex128_t * destination, int n) + cdef void transform_variates(self, np.complex128_t * variates, np.complex128_t * cholesky_factor, int n) + cdef void _reinitialize_temp_pointers(self) except * \ No newline at end of file diff --git a/statsmodels/tsa/statespace/_simulation_smoother.pyx.in b/statsmodels/tsa/statespace/_simulation_smoother.pyx.in new file mode 100644 index 0000000..1cb7b45 --- /dev/null +++ b/statsmodels/tsa/statespace/_simulation_smoother.pyx.in @@ -0,0 +1,659 @@ +#cython: profile=False +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# ## Constants + +# ### Simulation smoothers +# TODO actually just copy the values from SMOOTHING_STATE, SMOOTHING_DISTURBANCE +# because we always want them to be identical +cdef int SIMULATE_STATE = 0x01 # Durbin and Koopman (2012), Chapter 4.9.1 +cdef int SIMULATE_DISTURBANCE = 0x04 # Durbin and Koopman (2012), Chapter 4.9.2 +cdef int SIMULATE_ALL = ( + SIMULATE_STATE | SIMULATE_DISTURBANCE +) + +from statsmodels.tsa.statespace._kalman_filter cimport ( + FILTER_CONVENTIONAL, FILTER_COLLAPSED, FILTER_UNIVARIATE, + INVERT_UNIVARIATE, SOLVE_CHOLESKY, TIMING_INIT_PREDICTED, + STABILITY_FORCE_SYMMETRY, MEMORY_STORE_ALL +) +from statsmodels.tsa.statespace._kalman_smoother cimport ( + SMOOTHER_ALL +) + +# Typical imports +import numpy as np +import warnings +cimport numpy as np +cimport cython + +np.import_array() + +cimport scipy.linalg.cython_blas as blas +cimport scipy.linalg.cython_lapack as lapack +cimport statsmodels.tsa.statespace._tools as tools + +cdef int FORTRAN = 1 + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +}} + +cdef class {{prefix}}SimulationSmoother(object): + # ### Statespace model + # cdef readonly {{prefix}}Statespace model + # ### Kalman filter + # cdef readonly {{prefix}}KalmanFilter kfilter + # ### Kalman smoother + # cdef readonly {{prefix}}KalmanSmoother smoother + + # ### Simulated Statespace model + # cdef readonly {{prefix}}Statespace simulated_model + # ### Simulated Kalman filter + # cdef readonly {{prefix}}KalmanFilter simulated_kfilter + # ### Simulated Kalman smoother + # cdef readonly {{prefix}}KalmanSmoother simulated_smoother + + # ### Secondary Simulated Statespace model + # Note: currently only used in the case of missing data + # cdef readonly {{prefix}}Statespace secondary_simulated_model + # ### Simulated Kalman filter + # cdef readonly {{prefix}}KalmanFilter secondary_simulated_kfilter + # ### Simulated Kalman smoother + # cdef readonly {{prefix}}KalmanSmoother secondary_simulated_smoother + + # ### Simulation parameters + # cdef public int simulation_output + # cdef readonly int has_missing + + # ### Random variates + # cdef int n_disturbance_variates + # cdef readonly {{cython_type}} [:] disturbance_variates + # cdef int n_initial_state_variates + # cdef readonly {{cython_type}} [:] initial_state_variates + + # ### Simulated Data + # cdef readonly {{cython_type}} [::1,:] simulated_measurement_disturbance + # cdef readonly {{cython_type}} [::1,:] simulated_state_disturbance + # cdef readonly {{cython_type}} [::1,:] simulated_state + + # ### Generated Data + # cdef readonly {{cython_type}} [::1,:] generated_obs + # cdef readonly {{cython_type}} [::1,:] generated_state + + # ### Temporary arrays + # cdef readonly {{cython_type}} [::1,:] tmp0, tmp1, tmp2 + + # ### Pointers + # cdef {{cython_type}} * _tmp0 + # cdef {{cython_type}} * _tmp1 + # cdef {{cython_type}} * _tmp2 + + def __init__(self, + {{prefix}}Statespace model, + int filter_method=FILTER_CONVENTIONAL, + int inversion_method=INVERT_UNIVARIATE | SOLVE_CHOLESKY, + int stability_method=STABILITY_FORCE_SYMMETRY, + int conserve_memory=MEMORY_STORE_ALL, + int filter_timing=TIMING_INIT_PREDICTED, + np.float64_t tolerance=1e-19, + int loglikelihood_burn=0, + int smoother_output=SMOOTHER_ALL, + int simulation_output=SIMULATE_ALL, + int nobs=-1): + cdef int inc = 1 + cdef: + np.npy_intp dim1[1] + np.npy_intp dim2[2] + cdef {{cython_type}} [::1,:] obs + cdef {{cython_type}} [::1,:] secondary_obs + cdef int nobs_endog + + # Use model nobs by default + if nobs == -1: + nobs = model.nobs + # Only allow more nobs if a time-invariant model + elif nobs > model.nobs and model.time_invariant == 0: + raise ValueError('In a time-varying model, cannot create more' + ' simulations than there are observations.') + elif nobs <= 0: + raise ValueError('Invalid number of simulations; must be' + ' positive.') + + self.nobs = nobs + nobs_endog = self.nobs * model.k_endog + + self.pretransformed_disturbance_variates = False + self.pretransformed_initial_state_variates = False + self.fixed_initial_state = False + + # Model objects + self.model = model + # self.kfilter = {{prefix}}KalmanFilter( + # self.model, filter_method, inversion_method, + # stability_method, conserve_memory, + # tolerance, loglikelihood_burn + # ) + # self.smoother = {{prefix}}KalmanSmoother( + # self.model, self.kfilter, smoother_output + # ) + + # Simulated model objects + dim2[0] = model.k_endog; dim2[1] = self.nobs; + obs = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + self.simulated_model = {{prefix}}Statespace( + obs, model.design, model.obs_intercept, model.obs_cov, + model.transition, model.state_intercept, model.selection, + model.state_cov + ) + self.simulated_kfilter = {{prefix}}KalmanFilter( + self.simulated_model, filter_method, inversion_method, + stability_method, conserve_memory, filter_timing, + tolerance, loglikelihood_burn + ) + self.simulated_smoother = {{prefix}}KalmanSmoother( + self.simulated_model, self.simulated_kfilter, smoother_output + ) + + # Secondary simulated model objects + # Currently only used if there is missing data (since then the + # approach in which the Kalman filter only has to be run over the + # series y_t^* = y_t - y_t^+ is infeasible), although it could also + # allow drawing multiple samples at the same time, see Durbin and + # Koopman (2002). + self.has_missing = model.has_missing + if self.has_missing: + dim2[0] = model.k_endog; dim2[1] = self.nobs; + secondary_obs = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + blas.{{prefix}}copy(&nobs_endog, &model.obs[0,0], &inc, &secondary_obs[0,0], &inc) + self.secondary_simulated_model = {{prefix}}Statespace( + secondary_obs, model.design, model.obs_intercept, model.obs_cov, + model.transition, model.state_intercept, model.selection, + model.state_cov + ) + self.secondary_simulated_kfilter = {{prefix}}KalmanFilter( + self.secondary_simulated_model, filter_method, inversion_method, + stability_method, conserve_memory, filter_timing, + tolerance, loglikelihood_burn + ) + self.secondary_simulated_smoother = {{prefix}}KalmanSmoother( + self.secondary_simulated_model, self.secondary_simulated_kfilter, smoother_output + ) + # In the case of non-missing data, the Kalman filter will actually + # be run over y_t^* = y_t - y_t^+, which means the observation equation + # intercept should be zero; make sure that it is + else: + dim2[0] = self.model.k_endog; dim2[1] = self.model.obs_intercept.shape[1]; + self.simulated_model.obs_intercept = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim2[0] = self.model.k_states; dim2[1] = self.model.state_intercept.shape[1]; + self.simulated_model.state_intercept = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + + # Initialize the simulated model memoryviews + # Note: the actual initialization is replaced in the simulate() + # function below, but will complain if the memoryviews haven't been + # first initialized, which this call does. + self.simulated_model.initialize_approximate_diffuse() + if self.has_missing: + self.secondary_simulated_model.initialize_approximate_diffuse() + + # Parameters + self.simulation_output = simulation_output + self.n_disturbance_variates = self.nobs * (self.model.k_endog + self.model.k_posdef) + self.n_initial_state_variates = self.model.k_states + + # Random variates + dim1[0] = self.n_disturbance_variates; + self.disturbance_variates = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + dim1[0] = self.n_initial_state_variates; + self.initial_state_variates = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + + # Simulated data (\tilde eta_t, \tilde eps_t, \tilde alpha_t) + # Note that these are (k_endog x nobs), (k_posdef x nobs), (k_states x nobs) + if filter_method & FILTER_COLLAPSED: + dim2[0] = self.model.k_states; dim2[1] = self.nobs; + else: + dim2[0] = self.model.k_endog; dim2[1] = self.nobs; + self.simulated_measurement_disturbance = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim2[0] = self.model.k_posdef; dim2[1] = self.nobs; + self.simulated_state_disturbance = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim2[0] = self.model.k_states; dim2[1] = self.nobs; + self.simulated_state = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + # Generated data (y_t^+, alpha_t^+) + dim2[0] = self.model.k_endog; dim2[1] = self.nobs; + self.generated_obs = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim2[0] = self.model.k_states; dim2[1] = self.nobs+1; + self.generated_state = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + # Temporary arrays + dim2[0] = self.model.k_states; dim2[1] = self.model.k_states; + self.tmp0 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) # chol(P_1) + dim2[0] = self.model.k_posdef; dim2[1] = self.model.k_posdef; + self.tmp2 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) # chol(Q_t) + dim2[0] = self.model.k_endog; dim2[1] = self.model.k_endog; + self.tmp1 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) # chol(H_t) + + # Pointers + self._tmp0 = &self.tmp0[0,0] + self._tmp1 = &self.tmp1[0,0] + self._tmp2 = &self.tmp2[0,0] + + def __reduce__(self): + args = (self.model, self.model.filter_method, self.model.inversion_method, + self.model.stability_method, self.model.conserve_memory, self.model.filter_timing, + self.model.tolerance, self.model.loglikelihood_burn, self.simulated_smoother.smoother_output, + self.simulation_output, self.nobs, self.pretransformed_variates) + state = { + 'disturbance_variates': np.array(self.disturbance_variates, copy=True, order='F'), + 'initial_state_variates': np.array(self.initial_state_variates, copy=True, order='F'), + 'simulated_measurement_disturbance': np.array(self.simulated_measurement_disturbance, copy=True, order='F'), + 'simulated_state_disturbance': np.array(self.simulated_state_disturbance, copy=True, order='F'), + 'simulated_state': np.array(self.simulated_state, copy=True, order='F'), + 'generated_obs': np.array(self.generated_obs, copy=True, order='F'), + 'generated_state': np.array(self.generated_state, copy=True, order='F'), + 'tmp0': np.array(self.tmp0, copy=True, order='F'), + 'tmp2': np.array(self.tmp2, copy=True, order='F'), + 'tmp1': np.array(self.tmp1, copy=True, order='F') + } + return (self.__class__, args, state) + + def __setstate__(self, state): + self.disturbance_variates = state['disturbance_variates'] + self.initial_state_variates = state['initial_state_variates'] + self.simulated_measurement_disturbance = state['simulated_measurement_disturbance'] + self.simulated_state_disturbance = state['simulated_state_disturbance'] + self.simulated_state = state['simulated_state'] + self.generated_obs = state['generated_obs'] + self.generated_state = state['generated_state'] + self.tmp0 = state['tmp0'] + self.tmp2 = state['tmp2'] + self.tmp1 = state['tmp1'] + + cdef void _reinitialize_temp_pointers(self) except *: + self._tmp0 = &self.tmp0[0,0] + self._tmp1 = &self.tmp1[0,0] + self._tmp2 = &self.tmp2[0,0] + + + cpdef draw_disturbance_variates(self): + self.disturbance_variates = np.random.normal(size=self.n_disturbance_variates) + self.pretransformed_disturbance_variates = False + + cpdef draw_initial_state_variates(self): + self.initial_state_variates = np.random.normal(size=self.n_initial_state_variates) + self.pretransformed_initial_state_variates = False + self.fixed_initial_state = False + + cpdef set_disturbance_variates(self, {{cython_type}} [:] variates, int pretransformed=0): + # TODO allow variates to be an iterator or callback + tools.validate_vector_shape('disturbance variates', &variates.shape[0], + self.n_disturbance_variates) + self.disturbance_variates = variates + self.pretransformed_disturbance_variates = pretransformed + + cpdef set_initial_state_variates(self, {{cython_type}} [:] variates, int pretransformed=0): + # Note that the initial state is set to be: + # initial_state = mod.initial_state + initial_state_variate * cholesky(mod.initial_state_cov) + # so is can be difficult to set the initial state itself via this method; + # see instead set_initial_state + # TODO allow variates to be an iterator or callback + tools.validate_vector_shape('initial state variates', + &variates.shape[0], + self.n_initial_state_variates) + self.initial_state_variates = variates + self.pretransformed_initial_state_variates = pretransformed + self.fixed_initial_state = False + + cpdef set_initial_state(self, {{cython_type}} [:] initial_state): + # Using this method sets a flag that indicates the self.initial_state_variates + # variable should be interpreted as the actual initial_state. + # TODO allow variates to be an iterator or callback + tools.validate_vector_shape('initial state', + &initial_state.shape[0], + self.n_initial_state_variates) + self.initial_state_variates = initial_state + self.pretransformed_initial_state_variates = True + self.fixed_initial_state = True + + cpdef simulate(self, int simulation_output=-1): + """ + Draw a simulation + """ + cdef: + int inc = 1 + int info + int measurement_idx, state_idx, t + int k_endog = self.model.k_endog + int k_states = self.model.k_states + int k_states2 = self.model.k_states**2 + int k_posdef = self.model.k_posdef + int k_posdef2 = self.model.k_posdef**2 + int nobs_endog = self.nobs * self.model.k_endog + int nobs_kstates = self.nobs * self.model.k_states + int nobs1_kstates = (self.nobs+1) * self.model.k_states + int nobs_posdef = self.nobs * self.model.k_posdef + cdef: + {{cython_type}} alpha = 1.0 + {{cython_type}} gamma = -1.0 + cdef {{prefix}}Statespace collapsing_model + cdef {{cython_type}} [:,:] collapsing_obs + cdef np.npy_intp dim2[2] + + + if simulation_output == -1: + simulation_output = self.simulation_output + + # Forwards recursion + # 0. Statespace initialization + if not self.model.initialized: + raise RuntimeError("Statespace model not initialized.") + blas.{{prefix}}copy(&k_states, &self.model.initial_state[0], &inc, &self.simulated_model.initial_state[0], &inc) + blas.{{prefix}}copy(&k_states2, &self.model.initial_state_cov[0,0], &inc, &self.simulated_model.initial_state_cov[0,0], &inc) + blas.{{prefix}}copy(&k_states2, &self.model.initial_diffuse_state_cov[0,0], &inc, &self.simulated_model.initial_diffuse_state_cov[0,0], &inc) + + if self.has_missing: + blas.{{prefix}}copy(&k_states, &self.model.initial_state[0], &inc, &self.secondary_simulated_model.initial_state[0], &inc) + blas.{{prefix}}copy(&k_states2, &self.model.initial_state_cov[0,0], &inc, &self.secondary_simulated_model.initial_state_cov[0,0], &inc) + blas.{{prefix}}copy(&k_states2, &self.model.initial_diffuse_state_cov[0,0], &inc, &self.secondary_simulated_model.initial_diffuse_state_cov[0,0], &inc) + + # 0. Kalman filter initialization: get alpha_1^+ ~ N(a_1, P_1) + # Usually, this means transforming the N(0,1) random variate + # into a N(initial_state, initial_state_cov) random variate. + # alpha_1^+ = initial_state + variate * chol(initial_state_cov) + # If pretransformed_variates is True, then the variates should already + # be N(0, initial_state_cov), and then we just need: + # alpha_1^+ = initial_state + variate + # However, if fixed_initial_state is True, then we just set: + # alpha_1^+ = variate + blas.{{prefix}}copy(&k_states, &self.initial_state_variates[0], &inc, &self.generated_state[0,0], &inc) + if not self.fixed_initial_state: + self.cholesky(&self.model.initial_state_cov[0,0], self._tmp0, k_states) + if not self.pretransformed_initial_state_variates: + self.transform_variates(&self.generated_state[0,0], self._tmp0, k_states) + # In the case of no missing data, we want to keep the initial state at zero + if self.has_missing: + blas.{{prefix}}axpy(&k_states, &alpha, &self.model.initial_state[0], &inc, &self.generated_state[0,0], &inc) + + + self.simulated_kfilter.seek(0) # reset the filter + if self.has_missing: + self.secondary_simulated_kfilter.seek(0) # reset the filter + measurement_idx = 0 + state_idx = nobs_endog + # Note: it is only when we are simulating a series that we might have + # self.model.nobs != self.simulated_model.nobs, and in that case we do + # not need to copy over the observations. + # TODO: Need more explicit support for the pure simulation case, both + # to avoid errors (like the copy statement below) and because we can + # probably speed up the process by not running the filter parts. + if not self.has_missing and (self.model.nobs == self.simulated_model.nobs): + # reset the obs data in the primary simulated model + # (but only if there is not missing data - in that case we will + # combine the actual data with the generated data in the primary + # model, so copy the actual data here and subtract data below) + blas.{{prefix}}copy(&nobs_endog, &self.model.obs[0,0], &inc, &self.simulated_model.obs[0,0], &inc) + for t in range(self.nobs): + # 1. Transform independent draws to w_t^+: eps_t^+ = ind_eps * chol(H_t) + # eta_t^+ = ind_eta * chol(Q_t) + + # 2. Construct y_t^+ = d_t + Z_t alpha_t^+ + eps_t^+ + # alpha_{t+1}^+ = c_t + T_t alpha_t^+ + eta_t^+ + + # Measurement disturbance (eps) + # self._tmp1 = chol(H_t) + if t == 0 or self.model.obs_cov.shape[2] > 1: + self.cholesky(&self.model.obs_cov[0,0,t], self._tmp1, k_endog) + + # eps_t^+ = ind_eps * chol(H_t) + if not self.pretransformed_disturbance_variates: + self.transform_variates(&self.disturbance_variates[measurement_idx], self._tmp1, k_endog) + # y_t^+ + self.generate_obs(t, &self.generated_obs[0,t], &self.generated_state[0,t], &self.disturbance_variates[measurement_idx]) + + measurement_idx += k_endog + + # State disturbance (eta) + # self._tmp1 = chol(Q_t) + if t == 0 or self.model.state_cov.shape[2] > 1: + self.cholesky(&self.model.state_cov[0,0,t], self._tmp2, k_posdef) + + # eta_t^+ = ind_eta * chol(Q_t) + if not self.pretransformed_disturbance_variates: + self.transform_variates(&self.disturbance_variates[state_idx], self._tmp2, k_posdef) + # alpha_t+1^+ + self.generate_state(t, &self.generated_state[0,t+1], &self.generated_state[0,t], &self.disturbance_variates[state_idx]) + + state_idx += k_posdef + + # If we are just generating new series (i.e. all we want is + # generated_obs, generated_state), go to the next iteration + if self.simulation_output == 0: + continue + + # Typically, rather than running the Kalman filter separately for + # y_t^+ and y_t, we can instead run it over y_t^* = y_t - y_t^+ + if not self.has_missing: + # Construct y_t^* = - y_t^+ + y_t + blas.{{prefix}}axpy(&k_endog, &gamma, &self.generated_obs[0,t], &inc, &self.simulated_model.obs[0, t], &inc) + + # 3. Iterate Kalman filter, based on y_t^* + # (this will give us alpha_t+1^*) + next(self.simulated_kfilter) + # In the case of missing data, we have to run them separately + else: + # 3-1. Iterate the Kalman filter on the y_t^+ data + # to get alpha_t+1^+ + blas.{{prefix}}copy(&k_endog, &self.generated_obs[0,t], &inc, &self.simulated_model.obs[0, t], &inc) + next(self.simulated_kfilter) + + # 3-2. Iterate the Kalman filter on the y_t data + # to get alpha_t+1 + next(self.secondary_simulated_kfilter) + + # If we are just generating new series (i.e. all we want is + # generated_obs, generated_state), return now + if self.simulation_output == 0: + return + + # Backwards recursion + # This gives us \hat w_t^* = \hat w_t - \hat w_t^+ (simulation_output & SIMULATE_DISTURBANCE) + # \hat alpha_t+1^* = \hat alpha_t+1 - \hat alpha_t+1^+ (simulation_output & SIMULATE_STATE) + # or if there is missing data: + # this gives us \hat w_t^+ + # \hat alpha_t+1 + # and we construct starred versions below + self.simulated_smoother.smoother_output = simulation_output + self.simulated_smoother() + + # In the FILTER_COLLAPSED case, we now need to replace nobs_endog with + # nobs_kstates + if self.simulated_kfilter.filter_method & FILTER_COLLAPSED: + nobs_endog = nobs_kstates + + if self.has_missing: + # This gives us \hat w_t + # \hat alpha_t+1 + self.secondary_simulated_smoother.smoother_output = simulation_output + self.secondary_simulated_smoother() + + # Construct \hat w_t^* = \hat w_t - \hat w_t^+ + # \hat alpha_t+1^* = \hat alpha_t+1 - \hat alpha_t+1^+ + # Note: this overwrites the values in self.simulated_smoother, + # so that the steps below will be the same regardless of whether or + # not there was missing data + if self.simulation_output & SIMULATE_DISTURBANCE: + # If there are partially missing entries, we need to re-order + # the smoothed measurment disturbances. + tools.{{prefix}}reorder_missing_vector(self.secondary_simulated_smoother.smoothed_measurement_disturbance, self.model.missing) + blas.{{prefix}}swap(&nobs_endog, &self.simulated_smoother.smoothed_measurement_disturbance[0,0], &inc, + &self.secondary_simulated_smoother.smoothed_measurement_disturbance[0,0], &inc) + blas.{{prefix}}axpy(&nobs_endog, &gamma, &self.secondary_simulated_smoother.smoothed_measurement_disturbance[0,0], &inc, + &self.simulated_smoother.smoothed_measurement_disturbance[0,0], &inc) + blas.{{prefix}}swap(&nobs_posdef, &self.simulated_smoother.smoothed_state_disturbance[0,0], &inc, + &self.secondary_simulated_smoother.smoothed_state_disturbance[0,0], &inc) + blas.{{prefix}}axpy(&nobs_posdef, &gamma, &self.secondary_simulated_smoother.smoothed_state_disturbance[0,0], &inc, + &self.simulated_smoother.smoothed_state_disturbance[0,0], &inc) + + if self.simulation_output & SIMULATE_STATE: + blas.{{prefix}}swap(&nobs_kstates, &self.simulated_smoother.smoothed_state[0,0], &inc, + &self.secondary_simulated_smoother.smoothed_state[0,0], &inc) + blas.{{prefix}}axpy(&nobs_kstates, &gamma, &self.secondary_simulated_smoother.smoothed_state[0,0], &inc, + &self.simulated_smoother.smoothed_state[0,0], &inc) + + # Construct the final simulated variables + # This gives us \tilde w_t = \hat w_t^* + w_t^+ (simulation_output & SIMULATE_DISTURBANCE) + # \tilde alpha_t+1 = \hat alpha_t^* + alpha_t^+ (simulation_output & SIMULATE_STATE) + if self.simulation_output & SIMULATE_DISTURBANCE: + # \tilde eps_t = \hat eps_t^* + eps_t^+ + # In the FILTER_COLLAPSED case, we have to use a collapsed version of the disturbance variates, + # so we construct a new representation that can perform the collapse on the variates + if self.simulated_kfilter.filter_method & FILTER_COLLAPSED: + dim2[0] = k_endog; dim2[1] = self.nobs; + collapsing_obs = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + nobs_endog = k_endog * self.nobs + blas.{{prefix}}copy(&nobs_endog, &self.disturbance_variates[0], &inc, &collapsing_obs[0, 0], &inc) + nobs_endog = nobs_kstates + + collapsing_model = {{prefix}}Statespace( + collapsing_obs, + self.model.design, self.model.obs_intercept, self.model.obs_cov, + self.model.transition, self.model.state_intercept, self.model.selection, + self.model.state_cov + ) + collapsing_model.initialized = True + for t in range(self.nobs): + collapsing_model.seek(t, self.simulated_kfilter.filter_method & FILTER_UNIVARIATE, + self.simulated_kfilter.filter_method & FILTER_COLLAPSED) + blas.{{prefix}}copy(&k_states, &collapsing_model.collapse_obs[0], &inc, &self.simulated_measurement_disturbance[0,t], &inc) + else: + blas.{{prefix}}copy(&nobs_endog, &self.disturbance_variates[0], &inc, &self.simulated_measurement_disturbance[0,0], &inc) + + blas.{{prefix}}axpy(&nobs_endog, &alpha, &self.simulated_smoother.smoothed_measurement_disturbance[0,0], &inc, + &self.simulated_measurement_disturbance[0,0], &inc) + + # \tilde eta_t = \hat eta_t^* + eta_t^+ + blas.{{prefix}}copy(&nobs_posdef, &self.disturbance_variates[k_endog * self.nobs], &inc, &self.simulated_state_disturbance[0,0], &inc) + blas.{{prefix}}axpy(&nobs_posdef, &alpha, &self.simulated_smoother.smoothed_state_disturbance[0,0], &inc, + &self.simulated_state_disturbance[0,0], &inc) + + if self.simulation_output & SIMULATE_STATE: + # \tilde alpha_t = \hat alpha_t^* + alpha_t^+ + blas.{{prefix}}copy(&nobs_kstates, &self.generated_state[0,0], &inc, &self.simulated_state[0,0], &inc) + blas.{{prefix}}axpy(&nobs_kstates, &alpha, &self.simulated_smoother.smoothed_state[0,0], &inc, + &self.simulated_state[0,0], &inc) + + cdef {{cython_type}} generate_obs(self, int t, {{cython_type}} * obs, {{cython_type}} * state, {{cython_type}} * variates): + cdef: + int inc = 1 + int k_endog = self.model.k_endog + int k_states = self.model.k_states + int design_t = 0 + int obs_intercept_t = 0 + cdef: + {{cython_type}} alpha = 1.0 + + # Get indices for possibly time-varying arrays + # Note that this would be problematic if simulating a + # time-varying system if the number of simulated observations was + # greater than the number of observations in the model (because then + # e.g. self.model.design[0,0,design_t] would be an invalid memory + # location). + # However, this problem is ruled out in the constructor since for + # time-varying systems, the number of simulated observations must be + # less than the number of observations in the model. + if not self.model.time_invariant: + if self.model.design.shape[2] > 1: design_t = t + if self.model.obs_intercept.shape[1] > 1: obs_intercept_t = t + + # \\# = d_t + \varepsilon_t + blas.{{prefix}}copy(&k_endog, variates, &inc, obs, &inc) + blas.{{prefix}}axpy(&k_endog, &alpha, &self.model.obs_intercept[0,obs_intercept_t], &inc, obs, &inc) + + # y_t = \\# + Z_t alpha_t + blas.{{prefix}}gemv("N", &k_endog, &k_states, + &alpha, &self.model.design[0,0,design_t], &k_endog, + state, &inc, + &alpha, obs, &inc) + + cdef {{cython_type}} generate_state(self, int t, {{cython_type}} * state, {{cython_type}} * input_state, {{cython_type}} * variates): + cdef: + int inc = 1 + int k_states = self.model.k_states + int k_posdef = self.model.k_posdef + int state_intercept_t = 0 + int transition_t = 0 + int selection_t = 0 + cdef: + {{cython_type}} alpha = 1.0 + + # Get indices for possibly time-varying arrays + if not self.model.time_invariant: + if self.model.state_intercept.shape[1] > 1: state_intercept_t = t + if self.model.transition.shape[2] > 1: transition_t = t + if self.model.selection.shape[2] > 1: selection_t = t + + # \\# = R_t eta_t + c_t + blas.{{prefix}}copy(&k_states, &self.model.state_intercept[0,state_intercept_t], &inc, state, &inc) + blas.{{prefix}}gemv("N", &k_states, &k_posdef, + &alpha, &self.model.selection[0,0,selection_t], &k_states, + variates, &inc, + &alpha, state, &inc) + + # alpha_{t+1} = T_t alpha_t + \\# + blas.{{prefix}}gemv("N", &k_states, &k_states, + &alpha, &self.model.transition[0,0,transition_t], &k_states, + input_state, &inc, + &alpha, state, &inc) + + cdef void cholesky(self, {{cython_type}} * source, {{cython_type}} * destination, int n): + cdef: + int inc = 1 + int n2 = n**2 + int info + if n == 1: + destination[0] = source[0]**0.5 + else: + blas.{{prefix}}copy(&n2, source, &inc, destination, &inc) + lapack.{{prefix}}potrf("L", &n, destination, &n, &info) + + cdef void transform_variates(self, {{cython_type}} * variates, {{cython_type}} * cholesky_factor, int n): + cdef: + int inc = 1 + + # Overwrites variate + if n == 1: + variates[0] = cholesky_factor[0] * variates[0] + else: + blas.{{prefix}}trmv("L", "N", "N", &n, cholesky_factor, &n, + variates, &inc) + +{{endfor}} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/_smoothers/__init__.py b/statsmodels/tsa/statespace/_smoothers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/statespace/_smoothers/_alternative.pxd b/statsmodels/tsa/statespace/_smoothers/_alternative.pxd new file mode 100644 index 0000000..219efbf --- /dev/null +++ b/statsmodels/tsa/statespace/_smoothers/_alternative.pxd @@ -0,0 +1,44 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models - Conventional Kalman Filter declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cimport numpy as np +from statsmodels.tsa.statespace._representation cimport ( + sStatespace, dStatespace, cStatespace, zStatespace +) +from statsmodels.tsa.statespace._kalman_filter cimport ( + sKalmanFilter, dKalmanFilter, cKalmanFilter, zKalmanFilter +) +from statsmodels.tsa.statespace._kalman_smoother cimport ( + sKalmanSmoother, dKalmanSmoother, cKalmanSmoother, zKalmanSmoother +) + +# Single precision +cdef int ssmoothed_estimators_measurement_alternative(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) except * +cdef int ssmoothed_estimators_time_alternative(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) +cdef int ssmoothed_state_alternative(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) +cdef int ssmoothed_disturbances_alternative(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) + +# Double precision +cdef int dsmoothed_estimators_measurement_alternative(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) except * +cdef int dsmoothed_estimators_time_alternative(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) +cdef int dsmoothed_state_alternative(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) +cdef int dsmoothed_disturbances_alternative(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) + +# Single precision complex +cdef int csmoothed_estimators_measurement_alternative(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) except * +cdef int csmoothed_estimators_time_alternative(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) +cdef int csmoothed_state_alternative(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) +cdef int csmoothed_disturbances_alternative(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) + +# Double precision complex +cdef int zsmoothed_estimators_measurement_alternative(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) except * +cdef int zsmoothed_estimators_time_alternative(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) +cdef int zsmoothed_state_alternative(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) +cdef int zsmoothed_disturbances_alternative(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) diff --git a/statsmodels/tsa/statespace/_smoothers/_alternative.pyx.in b/statsmodels/tsa/statespace/_smoothers/_alternative.pyx.in new file mode 100644 index 0000000..f2eb0be --- /dev/null +++ b/statsmodels/tsa/statespace/_smoothers/_alternative.pyx.in @@ -0,0 +1,293 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# Typical imports +import numpy as np +cimport numpy as np +from statsmodels.src.math cimport * +cimport scipy.linalg.cython_blas as blas + +from statsmodels.tsa.statespace._kalman_smoother cimport ( + SMOOTHER_STATE, SMOOTHER_STATE_COV, SMOOTHER_DISTURBANCE, + SMOOTHER_DISTURBANCE_COV +) + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +}} + +# ### Alternative conventional Kalman smoother +# +# The following are the above routines as defined in the conventional Kalman +# smoother. +# +# See Durbin and Koopman (2012) Chapter 4 + +cdef int {{prefix}}smoothed_estimators_measurement_alternative({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model) except *: + cdef: + int i + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + if model._nmissing == model.k_endog: + # $L_t = T_t$ + blas.{{prefix}}copy(&model._k_states2, model._transition, &inc, smoother._tmpL, &inc) + return 1 + + # $C_t = (I - P_t Z_t' F_t^{-1} Z_t)$ + # $C_t = (I - \\#_1 \\#_3)$ + # $(m \times m) = (m \times m) + (m \times p) (p \times m)$ + # (this is required for any type of smoothing) + blas.{{prefix}}copy(&model._k_states2, model._transition, &inc, smoother._tmpL, &inc) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_endog, + &gamma, kfilter._tmp1, &kfilter.k_states, + kfilter._tmp3, &kfilter.k_endog, + &beta, smoother._tmpL, &kfilter.k_states) + for i in range(model._k_states): + smoother.tmpL[i,i] = smoother.tmpL[i,i] + 1 + + # Scaled smoothed estimator + # $\tilde r_{t} = Z_n' F_n^{-1} v_n + C_t' \hat r_n$ + # $\tilde r_{t} = \\#_3' v_n + C_t' \hat r_n$ + # $(m \times 1) = (m \times p) (p \times 1) + (m \times m) (m \times 1)$ + if smoother.smoother_output & (SMOOTHER_STATE | SMOOTHER_DISTURBANCE): + blas.{{prefix}}gemv("T", &model._k_states, &model._k_states, + &alpha, smoother._tmpL, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator, &inc, + &beta, smoother._tmp0, &inc) + + blas.{{prefix}}copy(&model._k_states, smoother._tmp0, &inc, + smoother._input_scaled_smoothed_estimator, &inc) + blas.{{prefix}}gemv("T", &model._k_endog, &model._k_states, + &alpha, kfilter._tmp3, &kfilter.k_endog, + &kfilter.forecast_error[0, smoother.t], &inc, + &alpha, smoother._input_scaled_smoothed_estimator, &inc) + + # Scaled smoothed estimator covariance matrix + # $\tilde N_{t} = Z_t' F_t^{-1} Z_t + C_t' \hat N_t C_t$ + # $\tilde N_{t} = Z_t' \\#_3 + C_t' \hat N_t C_t$ + # $(m \times m) = (m \times p) (p \times m) + (m \times m) (m \times m) (m \times m)$ + if smoother.smoother_output & (SMOOTHER_STATE_COV | SMOOTHER_DISTURBANCE_COV): + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, + smoother._tmpL, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmpL, &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states) + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_endog, + &alpha, model._design, &model._k_endog, + kfilter._tmp3, &kfilter.k_endog, + &alpha, smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states) + + # $L_t = T_t C_t$ + # $(m \times m) = (m \times m) (m \times m)$ + blas.{{prefix}}copy(&model._k_states2, smoother._tmpL, &inc, smoother._tmp0, &inc) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, model._transition, &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._tmpL, &kfilter.k_states) + + # Smoothing error + # $u_t = \\#_2 - K_t' \tilde r_{t+1}$ + # $(p \times 1) = (p \times 1) - (p \times m) (m \times 1)$ + if smoother.smoother_output & (SMOOTHER_DISTURBANCE): + blas.{{prefix}}copy(&kfilter.k_endog, kfilter._tmp2, &inc, smoother._smoothing_error, &inc) + if smoother.t < model.nobs - 1: + blas.{{prefix}}gemv("T", &model._k_states, &model._k_endog, + &gamma, kfilter._kalman_gain, &kfilter.k_states, + &smoother.scaled_smoothed_estimator[0, smoother.t+1], &inc, + &alpha, smoother._smoothing_error, &inc) + +cdef int {{prefix}}smoothed_estimators_time_alternative({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef: + int i + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + if smoother.t == 0: + return 1 + + # Scaled smoothed estimator + # $\hat r_{t-1} = T_t' \tilde r_t$ + # $(m \times 1) = (m \times m) (m \times 1) + if smoother.smoother_output & (SMOOTHER_STATE | SMOOTHER_DISTURBANCE): + blas.{{prefix}}gemv("T", &model._k_states, &model._k_states, + &alpha, model._transition, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator, &inc, + &beta, smoother._scaled_smoothed_estimator, &inc) + + # Scaled smoothed estimator covariance matrix + # $\hat N_{t-1} = T_t' \tilde N_t T_t$ + # $(m \times m) = (m \times p) (m \times m) (m \times m)$ + if smoother.smoother_output & (SMOOTHER_STATE_COV | SMOOTHER_DISTURBANCE_COV): + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, model._transition, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + model._transition, &kfilter.k_states, + &beta, smoother._scaled_smoothed_estimator_cov, &kfilter.k_states) + +cdef int {{prefix}}smoothed_state_alternative({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef int i, j + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + # Need to clear out the scaled_smoothed_estimator and + # scaled_smoothed_estimator_cov in case we're re-running the filter + if smoother.t == model.nobs - 1: + smoother.scaled_smoothed_estimator[:, model.nobs-1] = 0 + smoother.scaled_smoothed_estimator_cov[:, :, model.nobs-1] = 0 + + # Smoothed state + if smoother.smoother_output & SMOOTHER_STATE: + # $\hat \alpha_t = a_t|t + P_t|t \hat r_t$ + # $(m \times 1) = (m \times 1) + (m \times m) (m \times 1)$ + blas.{{prefix}}copy(&kfilter.k_states, &kfilter.filtered_state[0,smoother.t], &inc, smoother._smoothed_state, &inc) + + blas.{{prefix}}gemv("N", &model._k_states, &model._k_states, + &alpha, &kfilter.filtered_state_cov[0, 0, smoother.t], &kfilter.k_states, + smoother._input_scaled_smoothed_estimator, &inc, + &alpha, smoother._smoothed_state, &inc) + + # Smoothed state covariance + if smoother.smoother_output & SMOOTHER_STATE_COV: + # $V_t = P_t|t [I - \hat N_t P_t|t]$ + # $(m \times m) = (m \times m) [(m \times m) - (m \times m) (m \times m)]$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &gamma, smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, + &kfilter.filtered_state_cov[0, 0, smoother.t], &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + for i in range(kfilter.k_states): + smoother.tmp0[i,i] = 1 + smoother.tmp0[i,i] + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, &kfilter.filtered_state_cov[0,0,smoother.t], &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._smoothed_state_cov, &kfilter.k_states) + +cdef int {{prefix}}smoothed_disturbances_alternative({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef int i, j + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + # At this point $\tilde r_t$ has been computed, and is stored in + # scaled_smoothed_estimator[:, t] but $\varepsilon_t$ depends + # on $\tilde r_{t+1}$, which is stored in scaled_smoothed_estimator[:, t+1] + + # Temporary arrays + + # $\\#_0 = R_t Q_t$ + # $(m \times r) = (m \times r) (r \times r)$ + if smoother.smoother_output & (SMOOTHER_DISTURBANCE | SMOOTHER_DISTURBANCE_COV): + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_posdef, &model._k_posdef, + &alpha, model._selection, &model._k_states, + model._state_cov, &model._k_posdef, + &beta, smoother._tmp0, &kfilter.k_states) + + if smoother.smoother_output & SMOOTHER_DISTURBANCE: + # Smoothed measurement disturbance + # $\hat \varepsilon_t = H_t u_t$ + # $(p \times 1) = (p \times p) (p \times 1)$ + blas.{{prefix}}gemv("N", &model._k_endog, &model._k_endog, + &alpha, model._obs_cov, &model._k_endog, + smoother._smoothing_error, &inc, + &beta, smoother._smoothed_measurement_disturbance, &inc) + + # Smoothed state disturbance + # $\hat \eta_t = \\#_0' \tilde r_{t+1}$ + # $(r \times 1) = (r \times m) (m \times 1)$ + blas.{{prefix}}gemv("T", &model._k_states, &model._k_posdef, + &alpha, smoother._tmp0, &kfilter.k_states, + &smoother.scaled_smoothed_estimator[0, smoother.t+1], &inc, + &beta, smoother._smoothed_state_disturbance, &inc) + + if smoother.smoother_output & SMOOTHER_DISTURBANCE_COV: + # $\\#_00 = K_t H_t$ + # $(m \times p) = (m \times p) (p \times p)$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_endog, &model._k_endog, + &alpha, kfilter._kalman_gain, &kfilter.k_states, + model._obs_cov, &model._k_endog, + &beta, smoother._tmp00, &kfilter.k_states) + + # Smoothed measurement disturbance covariance matrix + # $Var(\varepsilon_t | Y_n) = H_t - H_t \\#_4 - \\#_00' \tilde N_t \\#_00$ + # $(p \times p) = (p \times p) - (p \times p) (p \times p) - (p \times m) (m \times m) (m \times p)$ + blas.{{prefix}}gemm("N", "N", &model._k_endog, &model._k_endog, &model._k_endog, + &gamma, model._obs_cov, &model._k_endog, + kfilter._tmp4, &kfilter.k_endog, + &beta, smoother._smoothed_measurement_disturbance_cov, &kfilter.k_endog) + + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_endog, &model._k_states, + &alpha, &smoother.scaled_smoothed_estimator_cov[0, 0, smoother.t+1], &kfilter.k_states, + smoother._tmp00, &kfilter.k_states, + &beta, smoother._tmp000, &kfilter.k_states) + + blas.{{prefix}}gemm("T", "N", &model._k_endog, &model._k_endog, &model._k_states, + &gamma, smoother._tmp00, &kfilter.k_states, + smoother._tmp000, &kfilter.k_states, + &alpha, smoother._smoothed_measurement_disturbance_cov, &kfilter.k_endog) + + # blas.{{prefix}}axpy(&model._k_endog2, &alpha, + # model._obs_cov, &inc, + # smoother._smoothed_measurement_disturbance_cov, &inc) + for i in range(kfilter.k_endog): + for j in range(i+1): + smoother._smoothed_measurement_disturbance_cov[i + j*kfilter.k_endog] = model._obs_cov[i + j*model._k_endog] + smoother._smoothed_measurement_disturbance_cov[i + j*kfilter.k_endog] + if not i == j: + smoother._smoothed_measurement_disturbance_cov[j + i*kfilter.k_endog] = model._obs_cov[j + i*model._k_endog] + smoother._smoothed_measurement_disturbance_cov[j + i*kfilter.k_endog] + + # Smoothed state disturbance covariance matrix + # $Var(\eta_t | Y_n) = Q_t - \\#_0' \tilde N_t \\#_0$ + # $(r \times r) = (r \times r) - (r \times m) (m \times m) (m \times r)$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_posdef, &model._k_states, + &alpha, &smoother.scaled_smoothed_estimator_cov[0, 0, smoother.t+1], &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._tmpL, &kfilter.k_states) + + blas.{{prefix}}copy(&model._k_posdef2, model._state_cov, &inc, smoother._smoothed_state_disturbance_cov, &inc) + blas.{{prefix}}gemm("T", "N", &model._k_posdef, &model._k_posdef, &model._k_states, + &gamma, smoother._tmp0, &kfilter.k_states, + smoother._tmpL, &kfilter.k_states, + &alpha, smoother._smoothed_state_disturbance_cov, &kfilter.k_posdef) + +{{endfor}} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/_smoothers/_classical.pxd b/statsmodels/tsa/statespace/_smoothers/_classical.pxd new file mode 100644 index 0000000..31ca320 --- /dev/null +++ b/statsmodels/tsa/statespace/_smoothers/_classical.pxd @@ -0,0 +1,40 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models - Conventional Kalman Filter declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cimport numpy as np +from statsmodels.tsa.statespace._representation cimport ( + sStatespace, dStatespace, cStatespace, zStatespace +) +from statsmodels.tsa.statespace._kalman_filter cimport ( + sKalmanFilter, dKalmanFilter, cKalmanFilter, zKalmanFilter +) +from statsmodels.tsa.statespace._kalman_smoother cimport ( + sKalmanSmoother, dKalmanSmoother, cKalmanSmoother, zKalmanSmoother +) + +# Single precision +cdef int ssmoothed_estimators_measurement_classical(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) except * +cdef int ssmoothed_estimators_time_classical(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) +cdef int ssmoothed_state_classical(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) + +# Double precision +cdef int dsmoothed_estimators_measurement_classical(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) except * +cdef int dsmoothed_estimators_time_classical(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) +cdef int dsmoothed_state_classical(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) + +# Single precision complex +cdef int csmoothed_estimators_measurement_classical(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) except * +cdef int csmoothed_estimators_time_classical(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) +cdef int csmoothed_state_classical(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) + +# Double precision complex +cdef int zsmoothed_estimators_measurement_classical(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) except * +cdef int zsmoothed_estimators_time_classical(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) +cdef int zsmoothed_state_classical(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) diff --git a/statsmodels/tsa/statespace/_smoothers/_classical.pyx.in b/statsmodels/tsa/statespace/_smoothers/_classical.pyx.in new file mode 100644 index 0000000..397ec67 --- /dev/null +++ b/statsmodels/tsa/statespace/_smoothers/_classical.pyx.in @@ -0,0 +1,237 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models + +Author: Chad Fulton +License: Simplified-BSD + +Notes +----- + +The dimensions used in all the BLAS / LAPACK calls below use the following +convention: + +- The dimensions of the arrays *as they are to be manipulated* are all defined + as model._k_* +- If the array in question is defined in the Statespace object + (obs, obs_intercept, design, obs_cov, state_intercept, transition, selection, + state_cov, selected_state_cov), then the dimension in-memory is defined as + model._k_* + This is because the in-memory shape of matrices changes according to whether + or not data is missing and whether or not the generalized collapse transform + is applied. +- If the array in question is defined in the Kalman filter object + (forecast_*, filtered_*, predicted_*, etc.), then the dimension in-memory is + defined as kfilter.k_* + This is because the in-memory shape of matrices only changes according to + filter_method. +- If the array in question is defined in the Kalman smoother object + (smoothed_*, etc.), then the dimension in-memory is defined as kfilter.k_* + This is because the in-memory shape of matrices only changes according to + filter_method. + +Thus, for example, a ?gemm call has the following signature: + +dgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc) + +- m, n, and k are the dimensions *as they are to be manipulated*, and are + always defined as model._k_* +- lda, ldb, and ldc are the *in-memory* dimension, and they are set as + model._k_* if the array is defined in the Statespace object, otherwise + (in either the filter or smoother cases) they are set as kfilter.k_* + +Note that for ?copy calls, the number of elements to be copied is defined to be +the dimension in memory of the array that is being copied *from*. +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# Typical imports +import numpy as np +cimport numpy as np +from statsmodels.src.math cimport * +cimport scipy.linalg.cython_blas as blas +cimport scipy.linalg.cython_lapack as lapack + +from statsmodels.tsa.statespace._kalman_smoother cimport ( + SMOOTHER_STATE, SMOOTHER_STATE_COV, SMOOTHER_DISTURBANCE, + SMOOTHER_DISTURBANCE_COV +) + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +}} + +# ### Classical Kalman smoother +# +# The following are the above routines as defined in the conventional Kalman +# smoother. +# +# See Durbin and Koopman (2012) Chapter 4.6.1 + +cdef int {{prefix}}smoothed_estimators_measurement_classical({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model) except *: + cdef: + int i, j, info + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + {{cython_type}} tmp + + # Factorize the predicted state covariance matrix + blas.{{prefix}}copy(&kfilter.k_states2, &kfilter.predicted_state_cov[0,0,smoother.t+1], &inc, + smoother._tmpL, &inc) + lapack.{{prefix}}potrf("L", &kfilter.k_states, smoother._tmpL, &kfilter.k_states, &info) + + if info < 0: + raise np.linalg.LinAlgError('Illegal value in predicted state' + ' covariance matrix encountered at' + ' period %d' % smoother.t) + if info > 0: + raise np.linalg.LinAlgError('Singular predicted state covariance' + ' matrix encountered at period %d' % + smoother.t) + + # Scaled smoothed estimator + # $r_t = P_{t+1}^{-1} (\hat \alpha_{t+1} - a_{t+1})$ + # $(m \times 1) = (m \times m) [(m \times 1) - (m \times 1)]$ + # Note: save $r_t$ as _input_scaled_smoothed_estimator not as + # _scaled_smoothed_estimator + if smoother.t < model.nobs-1 and smoother.smoother_output & (SMOOTHER_STATE | SMOOTHER_DISTURBANCE): + blas.{{prefix}}copy(&kfilter.k_states, &smoother.smoothed_state[0, smoother.t+1], &inc, + smoother._input_scaled_smoothed_estimator, &inc) + blas.{{prefix}}axpy(&kfilter.k_states, &gamma, &kfilter.predicted_state[0,smoother.t+1], &inc, + smoother._input_scaled_smoothed_estimator, &inc) + + lapack.{{prefix}}potrs("L", &kfilter.k_states, &inc, smoother._tmpL, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator, &kfilter.k_states, &info) + + if info < 0: + raise np.linalg.LinAlgError('Illegal value in predicted state' + ' covariance matrix encountered at' + ' period %d' % smoother.t) + + # Scaled smoothed estimator covariance matrix + # $N_t = P_{t+1}^{-1} (P_{t+1} - V_{t+1}) P_{t+1}^{-1} + # $(m \times m) = (m \times p) (p \times m) + (m \times m) (m \times m) (m \times m)$ + # Note: save $N_t$ as _input_scaled_smoothed_estimator_cov not as + # _scaled_smoothed_estimator_cov + if smoother.t < model.nobs-1 and smoother.smoother_output & (SMOOTHER_STATE_COV | SMOOTHER_DISTURBANCE_COV): + blas.{{prefix}}copy(&kfilter.k_states2, &kfilter.predicted_state_cov[0, 0, smoother.t+1], &inc, + smoother._input_scaled_smoothed_estimator_cov, &inc) + blas.{{prefix}}axpy(&kfilter.k_states2, &gamma, &smoother.smoothed_state_cov[0, 0, smoother.t+1], &inc, + smoother._input_scaled_smoothed_estimator_cov, &inc) + + lapack.{{prefix}}potrs("L", &kfilter.k_states, &kfilter.k_states, smoother._tmpL, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, &info) + + if info < 0: + raise np.linalg.LinAlgError('Illegal value in predicted state' + ' covariance matrix encountered at' + ' period %d' % smoother.t) + + # transpose + for i in range(kfilter.k_states): + for j in range(i, kfilter.k_states): + if i == j: + continue + tmp = smoother.scaled_smoothed_estimator_cov[i,j,smoother.t+1] + smoother.scaled_smoothed_estimator_cov[i,j,smoother.t+1] = smoother.scaled_smoothed_estimator_cov[j,i,smoother.t+1] + smoother.scaled_smoothed_estimator_cov[j,i,smoother.t+1] = tmp + + lapack.{{prefix}}potrs("L", &kfilter.k_states, &kfilter.k_states, smoother._tmpL, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, &info) + + if info < 0: + raise np.linalg.LinAlgError('Illegal value in predicted state' + ' covariance matrix encountered at' + ' period %d' % smoother.t) + + # Smoothing error + # $u_t = \\#_2 - K_t' r_t$ + # $(p \times 1) = (p \times 1) - (p \times m) (m \times 1)$ + if smoother.smoother_output & (SMOOTHER_DISTURBANCE): + if not model._nmissing == model.k_endog: + blas.{{prefix}}copy(&kfilter.k_endog, kfilter._tmp2, &inc, smoother._smoothing_error, &inc) + blas.{{prefix}}gemv("T", &model._k_states, &model._k_endog, + &gamma, kfilter._kalman_gain, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator, &inc, + &alpha, smoother._smoothing_error, &inc) + + # $L_t = (T_t - K_t Z_t)$ + # $(m \times m) = (m \times m) + (m \times p) (p \times m)$ + # (this is required for any type of smoothing) + blas.{{prefix}}copy(&model._k_states2, model._transition, &inc, smoother._tmpL, &inc) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_endog, + &gamma, kfilter._kalman_gain, &kfilter.k_states, + model._design, &model._k_endog, + &alpha, smoother._tmpL, &kfilter.k_states) + +cdef int {{prefix}}smoothed_estimators_time_classical({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + pass + +cdef int {{prefix}}smoothed_state_classical({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef int i, j + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + if (smoother.smoother_output & SMOOTHER_STATE) or (smoother.smoother_output & SMOOTHER_STATE_COV): + blas.{{prefix}}gemm("N", "T", &model._k_states, &model._k_states, &model._k_states, + &alpha, &kfilter.filtered_state_cov[0, 0, smoother.t], &kfilter.k_states, + model._transition, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + + # Smoothed state + if smoother.smoother_output & SMOOTHER_STATE: + # $\hat \alpha_t = a_t|t + P_t|t T_t' r_t$ + # $(m \times 1) = (m \times 1) + (m \times m) (m \times 1)$ + blas.{{prefix}}copy(&kfilter.k_states, &kfilter.filtered_state[0,smoother.t], &inc, smoother._smoothed_state, &inc) + + blas.{{prefix}}gemv("N", &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator, &inc, + &alpha, smoother._smoothed_state, &inc) + + # Smoothed state covariance + if smoother.smoother_output & SMOOTHER_STATE_COV: + # $V_t = P_t|t [I - T_t' N_t T_t P_t|t]$ + # $(m \times m) = (m \times m) [(m \times m) - (m \times m) (m \times m)]$ + blas.{{prefix}}gemm("N", "T", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._tmpL2, &kfilter.k_states) + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &gamma, model._transition, &kfilter.k_states, + smoother._tmpL2, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + for i in range(kfilter.k_states): + smoother.tmp0[i,i] = 1 + smoother.tmp0[i,i] + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, &kfilter.filtered_state_cov[0,0,smoother.t], &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._smoothed_state_cov, &kfilter.k_states) + +{{endfor}} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/_smoothers/_conventional.pxd b/statsmodels/tsa/statespace/_smoothers/_conventional.pxd new file mode 100644 index 0000000..c0fd1ef --- /dev/null +++ b/statsmodels/tsa/statespace/_smoothers/_conventional.pxd @@ -0,0 +1,60 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models - Conventional Kalman Filter declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cimport numpy as np +from statsmodels.tsa.statespace._representation cimport ( + sStatespace, dStatespace, cStatespace, zStatespace +) +from statsmodels.tsa.statespace._kalman_filter cimport ( + sKalmanFilter, dKalmanFilter, cKalmanFilter, zKalmanFilter +) +from statsmodels.tsa.statespace._kalman_smoother cimport ( + sKalmanSmoother, dKalmanSmoother, cKalmanSmoother, zKalmanSmoother +) + +# Single precision +cdef int ssmoothed_estimators_missing_conventional(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) except * +cdef int ssmoothed_disturbances_missing_conventional(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) + +cdef int ssmoothed_estimators_measurement_conventional(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) except * +cdef int ssmoothed_estimators_time_conventional(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) +cdef int ssmoothed_state_conventional(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) +cdef int ssmoothed_state_autocov_conventional(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) +cdef int ssmoothed_disturbances_conventional(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) + +# Double precision +cdef int dsmoothed_estimators_missing_conventional(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) except * +cdef int dsmoothed_disturbances_missing_conventional(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) + +cdef int dsmoothed_estimators_measurement_conventional(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) except * +cdef int dsmoothed_estimators_time_conventional(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) +cdef int dsmoothed_state_conventional(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) +cdef int dsmoothed_state_autocov_conventional(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) +cdef int dsmoothed_disturbances_conventional(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) + +# Single precision complex +cdef int csmoothed_estimators_missing_conventional(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) except * +cdef int csmoothed_disturbances_missing_conventional(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) + +cdef int csmoothed_estimators_measurement_conventional(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) except * +cdef int csmoothed_estimators_time_conventional(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) +cdef int csmoothed_state_conventional(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) +cdef int csmoothed_state_autocov_conventional(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) +cdef int csmoothed_disturbances_conventional(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) + +# Double precision complex +cdef int zsmoothed_estimators_missing_conventional(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) except * +cdef int zsmoothed_disturbances_missing_conventional(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) + +cdef int zsmoothed_estimators_measurement_conventional(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) except * +cdef int zsmoothed_estimators_time_conventional(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) +cdef int zsmoothed_state_conventional(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) +cdef int zsmoothed_state_autocov_conventional(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) +cdef int zsmoothed_disturbances_conventional(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) diff --git a/statsmodels/tsa/statespace/_smoothers/_conventional.pyx.in b/statsmodels/tsa/statespace/_smoothers/_conventional.pyx.in new file mode 100644 index 0000000..21f0506 --- /dev/null +++ b/statsmodels/tsa/statespace/_smoothers/_conventional.pyx.in @@ -0,0 +1,421 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models + +Author: Chad Fulton +License: Simplified-BSD + +Notes +----- + +The dimensions used in all the BLAS / LAPACK calls below use the following +convention: + +- The dimensions of the arrays *as they are to be manipulated* are all defined + as model._k_* +- If the array in question is defined in the Statespace object + (obs, obs_intercept, design, obs_cov, state_intercept, transition, selection, + state_cov, selected_state_cov), then the dimension in-memory is defined as + model._k_* + This is because the in-memory shape of matrices changes according to whether + or not data is missing and whether or not the generalized collapse transform + is applied. +- If the array in question is defined in the Kalman filter object + (forecast_*, filtered_*, predicted_*, etc.), then the dimension in-memory is + defined as kfilter.k_* + This is because the in-memory shape of matrices only changes according to + filter_method. +- If the array in question is defined in the Kalman smoother object + (smoothed_*, etc.), then the dimension in-memory is defined as kfilter.k_* + This is because the in-memory shape of matrices only changes according to + filter_method. + +Thus, for example, a ?gemm call has the following signature: + +dgemm(transa, transb, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc) + +- m, n, and k are the dimensions *as they are to be manipulated*, and are + always defined as model._k_* +- lda, ldb, and ldc are the *in-memory* dimension, and they are set as + model._k_* if the array is defined in the Statespace object, otherwise + (in either the filter or smoother cases) they are set as kfilter.k_* + +Note that for ?copy calls, the number of elements to be copied is defined to be +the dimension in memory of the array that is being copied *from*. +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# Typical imports +import numpy as np +cimport numpy as np +from statsmodels.src.math cimport * +cimport scipy.linalg.cython_blas as blas + +from statsmodels.tsa.statespace._kalman_smoother cimport ( + SMOOTHER_STATE, SMOOTHER_STATE_COV, SMOOTHER_DISTURBANCE, + SMOOTHER_DISTURBANCE_COV +) + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +}} + +# ### Missing Observation Conventional Kalman smoother +# +# See Durbin and Koopman (2012) Chapter 4.10 +# +# Here k_endog is the same as usual, but the design matrix and observation +# covariance matrix are enforced to be zero matrices. + +cdef int {{prefix}}smoothed_estimators_missing_conventional({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model) except *: + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + # Scaled smoothed estimator + # $r_{t-1} = T_t' r_t$ + # $(m \times 1) = (m \times m) (m \times 1)$ + # Note: save $r_{t-1}$ as scaled_smoothed_estimator[t] rather than + # as scaled_smoothed_estimator[t-1] because we actually need to store + # T+1 of them (r_{T-1} to r_{-1} -> r_T to r_0) + if smoother.smoother_output & (SMOOTHER_STATE | SMOOTHER_DISTURBANCE): + blas.{{prefix}}gemv("T", &model._k_states, &model._k_states, + &alpha, model._transition, &model._k_states, + smoother._input_scaled_smoothed_estimator, &inc, + &beta, smoother._scaled_smoothed_estimator, &inc) + + # Scaled smoothed estimator covariance matrix + # $N_{t-1} = T_t' N_t T_t$ + # $(m \times m) = (m \times m) (m \times m) (m \times m)$ + # Note: save $N_{t-1}$ as scaled_smoothed_estimator_cov[t] rather + # than as scaled_smoothed_estimator_cov[t-1] because we actually + # need to store T+1 of them (N_{T-1} to N_{-1} -> N_T to N_0) + if smoother.smoother_output & (SMOOTHER_STATE_COV | SMOOTHER_DISTURBANCE_COV): + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, + model._transition, &model._k_states, + &beta, smoother._tmp0, &kfilter.k_states) + blas.{{prefix}}gemm("T", "N", &kfilter.k_states, &kfilter.k_states, &kfilter.k_states, + &alpha, model._transition, &model._k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._scaled_smoothed_estimator_cov, &kfilter.k_states) + + # $L_t = T_t$ + blas.{{prefix}}copy(&model._k_states2, model._transition, &inc, smoother._tmpL, &inc) + + # Smoothing error + # It is undefined here, since F_t^{-1} is nan + # for i in range(kfilter.k_endog): + # smoother._smoothing_error[i] = 0 + + # Smoothing error + # $u_t = - K_t' r_t$ + # $(p \times 1) = (p \times 1) - (p \times m) (m \times 1)$ + # TODO in the missing case, I think K_t is defined to be zeros, so this + # would be unnecessary + if smoother.smoother_output & (SMOOTHER_DISTURBANCE): + blas.{{prefix}}gemv("T", &model._k_states, &model._k_endog, + &gamma, kfilter._kalman_gain, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator, &inc, + &beta, smoother._smoothing_error, &inc) + +cdef int {{prefix}}smoothed_disturbances_missing_conventional({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + # Temporary arrays + + # $\\#_0 = R_t Q_t$ + # $(m \times r) = (m \times r) (r \times r)$ + if smoother.smoother_output & (SMOOTHER_DISTURBANCE | SMOOTHER_DISTURBANCE_COV): + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_posdef, &model._k_posdef, + &alpha, model._selection, &model._k_states, + model._state_cov, &model._k_posdef, + &beta, smoother._tmp0, &kfilter.k_states) + + if smoother.smoother_output & SMOOTHER_DISTURBANCE: + # Smoothed state disturbance + # $\hat \eta_t = \\#_0' r_t$ + # $(r \times 1) = (r \times m) (m \times 1)$ + blas.{{prefix}}gemv("T", &kfilter.k_states, &kfilter.k_posdef, + &alpha, smoother._tmp0, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator, &inc, + &beta, smoother._smoothed_state_disturbance, &inc) + + if smoother.smoother_output & SMOOTHER_DISTURBANCE_COV: + # Smoothed state disturbance covariance matrix + # $Var(\eta_t | Y_n) = Q_t - \\#_0' N_t \\#_0$ + # $(r \times r) = (r \times r) - (r \times m) (m \times m) (m \times r)$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_posdef, &model._k_states, + &alpha, smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._tmpL, &kfilter.k_states) + blas.{{prefix}}copy(&model._k_posdef2, model._state_cov, &inc, smoother._smoothed_state_disturbance_cov, &inc) + blas.{{prefix}}gemm("T", "N", &model._k_posdef, &model._k_posdef, &model._k_states, + &gamma, smoother._tmp0, &kfilter.k_states, + smoother._tmpL, &kfilter.k_states, + &alpha, smoother._smoothed_state_disturbance_cov, &kfilter.k_posdef) + + + # Just return the unconditional distribution for the measurement + # disturbances corresponding to a missing observation + + # TODO this is not explicitly addressed in Durbin and Koopman Chapter 4 + # or in Koopman (1993) - need to find a source for if this is correct + # Note: this is what the MATLAB ssm toolbox does, also + + # Smoothed measurement disturbances have unconditional expected + # value of 0, so no need to do anything + + # Smoothed measurement and state disturbances have unconditional covariance + # matrix of $H_t, Q_t$, respectively + blas.{{prefix}}copy(&model._k_endog2, model._obs_cov, &inc, smoother._smoothed_measurement_disturbance_cov, &inc) + + +# ### Conventional Kalman smoother +# +# The following are the above routines as defined in the conventional Kalman +# smoother. +# +# See Durbin and Koopman (2012) Chapter 4 + +cdef int {{prefix}}smoothed_estimators_measurement_conventional({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model) except *: + cdef: + int i + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + # Smoothing error + # $u_t = \\#_2 - K_t' r_t$ + # $(p \times 1) = (p \times 1) - (p \times m) (m \times 1)$ + if smoother.smoother_output & (SMOOTHER_DISTURBANCE): + blas.{{prefix}}copy(&model._k_endog, kfilter._tmp2, &inc, smoother._smoothing_error, &inc) + blas.{{prefix}}gemv("T", &model._k_states, &model._k_endog, + &gamma, kfilter._kalman_gain, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator, &inc, + &alpha, smoother._smoothing_error, &inc) + + # $L_t = (T_t - K_t Z_t)$ + # $(m \times m) = (m \times m) + (m \times p) (p \times m)$ + # (this is required for any type of smoothing) + blas.{{prefix}}copy(&model._k_states2, model._transition, &inc, smoother._tmpL, &inc) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_endog, + &gamma, kfilter._kalman_gain, &kfilter.k_states, + model._design, &model._k_endog, + &alpha, smoother._tmpL, &kfilter.k_states) + + # Scaled smoothed estimator + # $r_{t-1} = Z_t' \\#_2 + L_t' r_t$ + # $(m \times 1) = (m \times p) (p \times 1) + (m \times m) (m \times 1)$ + # Note: save $r_{t-1}$ as scaled_smoothed_estimator[t] rather than + # as scaled_smoothed_estimator[t-1] because we actually need to store + # T+1 of them (r_{T-1} to r_{-1} -> r_T to r_0) + if smoother.smoother_output & (SMOOTHER_STATE | SMOOTHER_DISTURBANCE): + blas.{{prefix}}gemv("T", &model._k_states, &model._k_states, + &alpha, smoother._tmpL, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator, &inc, + &beta, smoother._scaled_smoothed_estimator, &inc) + + blas.{{prefix}}gemv("T", &model._k_endog, &model._k_states, + &alpha, model._design, &model._k_endog, + kfilter._tmp2, &inc, + &alpha, smoother._scaled_smoothed_estimator, &inc) + + # Scaled smoothed estimator covariance matrix + # $N_{t-1} = Z_t' \\#_3 + L_t' N_t L_t$ + # $(m \times m) = (m \times p) (p \times m) + (m \times m) (m \times m) (m \times m)$ + # Note: save $N_{t-1}$ as scaled_smoothed_estimator_cov[t] rather + # than as scaled_smoothed_estimator_cov[t-1] because we actually + # need to store T+1 of them (N_{T-1} to N_{-1} -> N_T to N_0) + if smoother.smoother_output & (SMOOTHER_STATE_COV | SMOOTHER_DISTURBANCE_COV): + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, + smoother._tmpL, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmpL, &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._scaled_smoothed_estimator_cov, &kfilter.k_states) + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_endog, + &alpha, model._design, &model._k_endog, + kfilter._tmp3, &kfilter.k_endog, + &alpha, smoother._scaled_smoothed_estimator_cov, &kfilter.k_states) + +cdef int {{prefix}}smoothed_estimators_time_conventional({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + pass + +cdef int {{prefix}}smoothed_state_conventional({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef int i, j + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + # Smoothed state + if smoother.smoother_output & SMOOTHER_STATE: + # $\hat \alpha_t = a_t + P_t r_{t-1}$ + # $(m \times 1) = (m \times 1) + (m \times m) (m \times 1)$ + blas.{{prefix}}copy(&kfilter.k_states, &kfilter.predicted_state[0,smoother.t], &inc, smoother._smoothed_state, &inc) + blas.{{prefix}}gemv("N", &model._k_states, &model._k_states, + &alpha, &kfilter.predicted_state_cov[0,0,smoother.t], &kfilter.k_states, + smoother._scaled_smoothed_estimator, &inc, + &alpha, smoother._smoothed_state, &inc) + + # Smoothed state covariance + if smoother.smoother_output & SMOOTHER_STATE_COV: + # $V_t = P_t [I - N_{t-1} P_t]$ + # $(m \times m) = (m \times m) [(m \times m) - (m \times m) (m \times m)]$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &gamma, smoother._scaled_smoothed_estimator_cov, &kfilter.k_states, + &kfilter.predicted_state_cov[0,0,smoother.t], &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + for i in range(kfilter.k_states): + smoother.tmp0[i,i] = 1 + smoother.tmp0[i,i] + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, &kfilter.predicted_state_cov[0,0,smoother.t], &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._smoothed_state_cov, &kfilter.k_states) + + +cdef int {{prefix}}smoothed_state_autocov_conventional({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef: + int i + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + # This function computes Cov(alpha_{t+1}, alpha_t) = Cov(alpha_t, alpha_{t+1})' + # From Durbin and Koopman, 2012, Chapter 4.7 + # Cov(alpha_{t+1}, alpha_t) = (I - P_{t+1} N_{t}) L_t P_t + + blas.{{prefix}}gemm("N", "N", &model.k_states, &model.k_states, &model.k_states, + &gamma, &kfilter.predicted_state_cov[0,0,smoother.t+1], &kfilter.k_states, + smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + for i in range(kfilter.k_states): + smoother.tmp0[i,i] = 1 + smoother.tmp0[i,i] + + blas.{{prefix}}gemm("N", "N", &model.k_states, &model.k_states, &model.k_states, + &alpha, smoother._tmpL, &kfilter.k_states, + &kfilter.predicted_state_cov[0,0,smoother.t], &kfilter.k_states, + &beta, smoother._tmp_autocov, &kfilter.k_states) + + blas.{{prefix}}gemm("N", "N", &model.k_states, &model.k_states, &model.k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + smoother._tmp_autocov, &kfilter.k_states, + &beta, smoother._smoothed_state_autocov, &kfilter.k_states) + +cdef int {{prefix}}smoothed_disturbances_conventional({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef int i, j + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + # Temporary arrays + + # $\\#_0 = R_t Q_t$ + # $(m \times r) = (m \times r) (r \times r)$ + if smoother.smoother_output & (SMOOTHER_DISTURBANCE | SMOOTHER_DISTURBANCE_COV): + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_posdef, &model._k_posdef, + &alpha, model._selection, &model._k_states, + model._state_cov, &model._k_posdef, + &beta, smoother._tmp0, &kfilter.k_states) + + if smoother.smoother_output & SMOOTHER_DISTURBANCE: + # Smoothed measurement disturbance + # $\hat \varepsilon_t = H_t u_t$ + # $(p \times 1) = (p \times p) (p \times 1)$ + blas.{{prefix}}gemv("N", &model._k_endog, &model._k_endog, + &alpha, model._obs_cov, &model._k_endog, + smoother._smoothing_error, &inc, + &beta, smoother._smoothed_measurement_disturbance, &inc) + + # Smoothed state disturbance + # $\hat \eta_t = \\#_0' r_t$ + # $(r \times 1) = (r \times m) (m \times 1)$ + blas.{{prefix}}gemv("T", &model._k_states, &model._k_posdef, + &alpha, smoother._tmp0, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator, &inc, + &beta, smoother._smoothed_state_disturbance, &inc) + + if smoother.smoother_output & SMOOTHER_DISTURBANCE_COV: + # $\\#_00 = K_t H_t$ + # $(m \times p) = (m \times p) (p \times p)$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_endog, &model._k_endog, + &alpha, kfilter._kalman_gain, &kfilter.k_states, + model._obs_cov, &model._k_endog, + &beta, smoother._tmp00, &kfilter.k_states) + + # Smoothed measurement disturbance covariance matrix + # $Var(\varepsilon_t | Y_n) = H_t - H_t \\#_4 - \\#_00' N_t \\#_00$ + # $(p \times p) = (p \times p) - (p \times p) (p \times p) - (p \times m) (m \times m) (m \times p)$ + blas.{{prefix}}gemm("N", "N", &model._k_endog, &model._k_endog, &model._k_endog, + &gamma, model._obs_cov, &model._k_endog, + kfilter._tmp4, &kfilter.k_endog, + &beta, smoother._smoothed_measurement_disturbance_cov, &kfilter.k_endog) + + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_endog, &model._k_states, + &alpha, smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, + smoother._tmp00, &kfilter.k_states, + &beta, smoother._tmp000, &kfilter.k_states) + + blas.{{prefix}}gemm("T", "N", &model._k_endog, &model._k_endog, &model._k_states, + &gamma, smoother._tmp00, &kfilter.k_states, + smoother._tmp000, &kfilter.k_states, + &alpha, smoother._smoothed_measurement_disturbance_cov, &kfilter.k_endog) + + # blas.{{prefix}}axpy(&model._k_endog2, &alpha, + # model._obs_cov, &inc, + # smoother._smoothed_measurement_disturbance_cov, &inc) + for i in range(kfilter.k_endog): + for j in range(i+1): + smoother._smoothed_measurement_disturbance_cov[i + j*kfilter.k_endog] = model._obs_cov[i + j*model._k_endog] + smoother._smoothed_measurement_disturbance_cov[i + j*kfilter.k_endog] + if not i == j: + smoother._smoothed_measurement_disturbance_cov[j + i*kfilter.k_endog] = model._obs_cov[j + i*model._k_endog] + smoother._smoothed_measurement_disturbance_cov[j + i*kfilter.k_endog] + + # Smoothed state disturbance covariance matrix + # $Var(\eta_t | Y_n) = Q_t - \\#_0' N_t \\#_0$ + # $(r \times r) = (r \times r) - (r \times m) (m \times m) (m \times r)$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_posdef, &model._k_states, + &alpha, smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._tmpL, &kfilter.k_states) + + blas.{{prefix}}copy(&model._k_posdef2, model._state_cov, &inc, smoother._smoothed_state_disturbance_cov, &inc) + blas.{{prefix}}gemm("T", "N", &model._k_posdef, &model._k_posdef, &model._k_states, + &gamma, smoother._tmp0, &kfilter.k_states, + smoother._tmpL, &kfilter.k_states, + &alpha, smoother._smoothed_state_disturbance_cov, &kfilter.k_posdef) + +{{endfor}} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/_smoothers/_univariate.pxd b/statsmodels/tsa/statespace/_smoothers/_univariate.pxd new file mode 100644 index 0000000..6318245 --- /dev/null +++ b/statsmodels/tsa/statespace/_smoothers/_univariate.pxd @@ -0,0 +1,40 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models - Conventional Kalman Filter declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cimport numpy as np +from statsmodels.tsa.statespace._representation cimport ( + sStatespace, dStatespace, cStatespace, zStatespace +) +from statsmodels.tsa.statespace._kalman_filter cimport ( + sKalmanFilter, dKalmanFilter, cKalmanFilter, zKalmanFilter +) +from statsmodels.tsa.statespace._kalman_smoother cimport ( + sKalmanSmoother, dKalmanSmoother, cKalmanSmoother, zKalmanSmoother +) + +# Single precision +cdef int ssmoothed_estimators_measurement_univariate(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) except * +cdef int ssmoothed_estimators_time_univariate(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) +cdef int ssmoothed_disturbances_univariate(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) + +# Double precision +cdef int dsmoothed_estimators_measurement_univariate(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) except * +cdef int dsmoothed_estimators_time_univariate(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) +cdef int dsmoothed_disturbances_univariate(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) + +# Single precision complex +cdef int csmoothed_estimators_measurement_univariate(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) except * +cdef int csmoothed_estimators_time_univariate(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) +cdef int csmoothed_disturbances_univariate(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) + +# Double precision complex +cdef int zsmoothed_estimators_measurement_univariate(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) except * +cdef int zsmoothed_estimators_time_univariate(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) +cdef int zsmoothed_disturbances_univariate(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) diff --git a/statsmodels/tsa/statespace/_smoothers/_univariate.pyx.in b/statsmodels/tsa/statespace/_smoothers/_univariate.pyx.in new file mode 100644 index 0000000..328666b --- /dev/null +++ b/statsmodels/tsa/statespace/_smoothers/_univariate.pyx.in @@ -0,0 +1,335 @@ +#cython: profile=False +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models + +Note: there is a typo in Durbin and Koopman (2012) in the equations for the +univariate smoothed measurement disturbances and smoothed measurement +disturbance covariances. In each equation (p157), the Kalman gain vector +K_{t,i} is used, but in fact these should be multiplied by the forecast error +covariance F_{t,i}. The original paper on the univariate approach, Koopman and +Durbin (2000) has the correct form. The typo arose because the original paper +defines the Kalman gain as K_{t,i} = P_{t,i} Z_{t,i}' but the book defines it +as K_{t,i} = P_{t,i} Z_{t,i}' F_{t,i}^{-1}, and the book does not correct the +disturbances formulas for this change. + +Furthermore, in analogy to the disturbance smoother from chapter 4, the +formula for the univariate covariance ought to be subtracted from the +observation covariance. + +So, what we ought to have is: + +\hat \varepsilon_{t,i} = \sigma_{t,i}^2 F_{t,i}^{-1} (v_{t,i} - F_{t,i} K_{t,i}' r_{t,i}) +Var(\hat \varepsilon_{t,i}) = \sigma_{t,i}^2 - \sigma_{t,i}^4 F_{t,i}^{-2} (v_{t,i} - F_{t,i} K_{t,i}' r_{t,i}) + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# Typical imports +import numpy as np +cimport numpy as np +from statsmodels.src.math cimport * +cimport scipy.linalg.cython_blas as blas + +from statsmodels.tsa.statespace._kalman_smoother cimport ( + SMOOTHER_STATE, SMOOTHER_STATE_COV, SMOOTHER_STATE_AUTOCOV, + SMOOTHER_DISTURBANCE, SMOOTHER_DISTURBANCE_COV +) + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +combined_suffix = '' +if combined_prefix == 'z': + combined_suffix = 'u' +}} + +# ### Univariate Kalman smoother +# +# The following are the routines as defined in the univariate Kalman filter. +# +# The only modification to the conventional Kalman smoother is the recursive +# definition of the scaled smoothing error and the scaled smoothing error +# covariance matrix. +# +# See Durbin and Koopman (2012) Chapter 6.4 + +cdef int {{prefix}}smoothed_estimators_measurement_univariate({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model) except *: + cdef: + int i, j, inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + {{cython_type}} scalar + int k_states = model._k_states + # {{cython_type}} [::1, :] tmpL + # {{cython_type}} * _tmpL + + # dim2[0] = self.kfilter.k_states; dim2[1] = self.kfilter.k_states; + # self.tmpL = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + # Adjust for a VAR transition (i.e. design = [#, 0], where the zeros + # correspond to all states except the first k_posdef states) + if model.subset_design: + k_states = model._k_posdef + + # Need to clear out the scaled_smoothed_estimator and + # scaled_smoothed_estimator_cov in case we're re-running the filter + if smoother.t == model.nobs - 1: + smoother.scaled_smoothed_estimator[:, model.nobs-1] = 0 + smoother.scaled_smoothed_estimator_cov[:, :, model.nobs-1] = 0 + + # Smoothing error + # (not used in the univariate approach) + + # Given r_{t,0}: + # calculate r_{t-1,p}, ..., r_{t-1, 0} and N_{t-1,p}, ..., N_{t-1,0} + + # Iterate + for i in range(kfilter.k_endog-1,-1,-1): + # If we want smoothed disturbances, then we need to calculate + # and store K_{t,i}' r_{t,i} for later (otherwise r_{t,i} will not be + # available) + if smoother.smoother_output & SMOOTHER_DISTURBANCE: + # Note: zdot and cdot are broken, so have to use gemv for those + {{if combined_prefix == 'd'}} + smoother._smoothed_measurement_disturbance[i] = ( + blas.{{prefix}}dot(&model._k_states, &kfilter._kalman_gain[i*kfilter.k_states], &inc, + smoother._scaled_smoothed_estimator, &inc) + ) + {{else}} + blas.{{prefix}}gemv("N", &inc, &model._k_states, + &alpha, smoother._scaled_smoothed_estimator, &inc, + &kfilter._kalman_gain[i*kfilter.k_states], &inc, + &beta, &smoother._smoothed_measurement_disturbance[i], &inc) + {{endif}} + + # If we want smoothed disturbance covs, then we need to calculate + # and store K_{t,i}' N_{t,i} K_{t,i} for later (otherwise N_{t,i} will not be + # available) + if smoother.smoother_output & SMOOTHER_DISTURBANCE_COV: + blas.{{prefix}}gemv("N", &model._k_states, &model._k_states, + &alpha, smoother._scaled_smoothed_estimator_cov, &kfilter.k_states, + &kfilter._kalman_gain[i*kfilter.k_states], &inc, + &beta, smoother._tmpL, &inc) + # Note: zdot and cdot are broken, so have to use gemv for those + {{if combined_prefix == 'd'}} + smoother._smoothed_measurement_disturbance_cov[i + i*kfilter.k_endog] = ( + blas.{{prefix}}dot(&model._k_states, &kfilter._kalman_gain[i*kfilter.k_states], &inc, + smoother._tmpL, &inc) + ) + {{else}} + blas.{{prefix}}gemv("N", &inc, &model._k_states, + &alpha, smoother._tmpL, &inc, + &kfilter._kalman_gain[i*kfilter.k_states], &inc, + &beta, &smoother._smoothed_measurement_disturbance_cov[i*kfilter.k_endog + i], &inc) + {{endif}} + + # $L_{t,i} = (I_m - K_{t,i} Z_{t,i})$ + # $(m \times m) = (m \times m) - (m \times 1) (1 \times m)$ + # blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &inc, + # &gamma, &kfilter._kalman_gain[i*kfilter.k_states], &kfilter.k_states, + # &model._design[i], &model._k_endog, + # &beta, smoother._tmpL, &kfilter.k_states) + # Zero the temporary matrix + # blas.{{prefix}}scal(&kfilter.k_states2, &beta, smoother._tmpL, &inc) + smoother.tmpL[:,:k_states] = 0 + # Create the K_{t,i} Z_{t,i} component + # (m x p) (m x 1) x (1 x p) + blas.{{prefix}}ger{{combined_suffix}}(&model._k_states, &k_states, + &gamma, &kfilter._kalman_gain[i*kfilter.k_states], &inc, + &model._design[i], &model._k_endog, + smoother._tmpL, &kfilter.k_states + ) + # Add the identity matrix + for j in range(k_states): + smoother._tmpL[j + j*kfilter.k_states] = smoother._tmpL[j + j*kfilter.k_states] + 1 + + # Accumulate L_{t,i} into L_{t} = L_{t,n} L_{t,n-1} ... L_{t,1} + if i == kfilter.k_endog-1: + blas.{{prefix}}copy(&kfilter.k_states2, smoother._tmpL, &inc, smoother._tmpL2, &inc) + else: + blas.{{prefix}}copy(&kfilter.k_states2, smoother._tmpL2, &inc, smoother._tmp0, &inc) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + smoother._tmpL, &kfilter.k_states, + &beta, smoother._tmpL2, &kfilter.k_states) + + # Scaled smoothed estimator + # $r_{t,i-1} = Z_{t,i}' v_{t,i} / F_{t,i} + L_{t,i}' r_{t,i}$ + # $(m \times 1) = (m \times 1) (1 \times 1) + (m \times m) (m \times 1)$ + # Note: save $r_{t-1}$ as scaled_smoothed_estimator[t] rather than + # as scaled_smoothed_estimator[t-1] because we actually need to store + # T+1 of them (r_{T-1} to r_{-1} -> r_T to r_0) + if smoother.smoother_output & (SMOOTHER_STATE | SMOOTHER_DISTURBANCE): + #blas.{{prefix}}scal(&kfilter.k_states, &beta, smoother._tmp0, &inc) + + blas.{{prefix}}gemv("T", &model._k_states, &k_states, + &alpha, smoother._tmpL, &kfilter.k_states, + smoother._scaled_smoothed_estimator, &inc, + &beta, smoother._tmp0, &inc) + blas.{{prefix}}swap(&k_states, smoother._tmp0, &inc, + smoother._scaled_smoothed_estimator, &inc) + blas.{{prefix}}axpy(&k_states, &kfilter._tmp2[i], &model._design[i], &model._k_endog, + smoother._scaled_smoothed_estimator, &inc) + + if smoother.smoother_output & (SMOOTHER_STATE_COV | SMOOTHER_DISTURBANCE_COV): + # Scaled smoothed estimator covariance matrix + # $N_{t,i-1} = Z_{t,i}' Z_{t,i} / F_{t,i} + L_{t,i}' N_{t,i} L_{t,i}$ + # $(m \times m) = (m \times p) (p \times m) + (m \times m) (m \times m) (m \times m)$ + # Note: save $N_{t-1}$ as scaled_smoothed_estimator_cov[t] rather + # than as scaled_smoothed_estimator_cov[t-1] because we actually + # need to store T+1 of them (N_{T-1} to N_{-1} -> N_T to N_0) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._scaled_smoothed_estimator_cov, &kfilter.k_states, + smoother._tmpL, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmpL, &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._scaled_smoothed_estimator_cov, &kfilter.k_states) + blas.{{prefix}}ger{{combined_suffix}}(&model._k_states, &model._k_states, + &alpha, &model._design[i], &model._k_endog, + &kfilter._tmp3[i], &kfilter.k_endog, + smoother._scaled_smoothed_estimator_cov, &kfilter.k_states + ) + + # Replace L with accumulated version + # blas.{{prefix}}copy(&kfilter.k_states2, smoother._tmpL2, &inc, smoother._tmpL, &inc) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, model._transition, &kfilter.k_states, + smoother._tmpL2, &kfilter.k_states, + &beta, smoother._tmpL, &kfilter.k_states) + +cdef int {{prefix}}smoothed_estimators_time_univariate({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef: + int i, j, inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + {{cython_type}} scalar + int k_states = model._k_states + {{cython_type}} * _transition + + if smoother.t == 0: + return 1 + + # r_{t-1,p} = T_{t-1}' r_{t,0} + if model.transition.shape[2] > 1: + _transition = &model.transition[0, 0, smoother.t-1] + else: + _transition = &model.transition[0, 0, 0] + if smoother.smoother_output & (SMOOTHER_STATE | SMOOTHER_DISTURBANCE): + blas.{{prefix}}gemv("T", &model._k_states, &model._k_states, + &alpha, _transition, &model._k_states, + smoother._scaled_smoothed_estimator, &inc, + &beta, &smoother.scaled_smoothed_estimator[0, smoother.t-1], &inc) + # N_{t-1,p} = T_{t-1}' N_{t,0} T_{t-1} + if smoother.smoother_output & (SMOOTHER_STATE_COV | SMOOTHER_DISTURBANCE_COV): + blas.{{prefix}}copy(&kfilter.k_states2, smoother._scaled_smoothed_estimator_cov, &inc, + &smoother.scaled_smoothed_estimator_cov[0, 0, smoother.t-1], &inc) + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, _transition, &model._k_states, + smoother._scaled_smoothed_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + _transition, &model._k_states, + &beta, &smoother.scaled_smoothed_estimator_cov[0, 0, smoother.t-1], &kfilter.k_states) + + +cdef int {{prefix}}smoothed_disturbances_univariate({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + # Note: this only differs from the conventional version in the + # definition of the smoothed measurement disturbance and cov + cdef int i, j + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + + # Temporary arrays + + # $\\#_0 = R_t Q_t$ + # $(m \times r) = (m \times r) (r \times r)$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_posdef, &model._k_posdef, + &alpha, model._selection, &model._k_states, + model._state_cov, &model._k_posdef, + &beta, smoother._tmp0, &kfilter.k_states) + + if smoother.smoother_output & SMOOTHER_DISTURBANCE: + for i in range(model._k_endog): + # Smoothed measurement disturbance + # $\hat \varepsilon_t = (H_{t,i} / F_{t,i}) (v_{t,i} - F_{t,i} K_{t,i}' r_{t,i})$ + # Note: K_{t,i}' r_{t,i} was stored in _smoothed_measurement_disturbance[i] + # in smoothed_estimators_univariate, above, so we just need to implement + # $\hat \varepsilon_t = (H_{t,i} / F_{t,i}) (v_{t,i} - \\#)$ here + # (this is because we do not otherwise store the r_{t,i} values) + # $(p \times 1) = (p \times p) (p \times 1)$ + smoother._smoothed_measurement_disturbance[i] = ( + kfilter._tmp4[i + i*kfilter.k_endog] * ( + kfilter._forecast_error[i] - + kfilter._forecast_error_cov[i + i*kfilter.k_endog] * smoother._smoothed_measurement_disturbance[i] + ) + ) + + # Smoothed state disturbance + # $\hat \eta_t = \\#_0' r_t$ + # $(r \times 1) = (r \times m) (m \times 1)$ + blas.{{prefix}}gemv("T", &model._k_states, &model._k_posdef, + &alpha, smoother._tmp0, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator, &inc, + &beta, smoother._smoothed_state_disturbance, &inc) + + if smoother.smoother_output & SMOOTHER_DISTURBANCE_COV: + for i in range(model._k_endog): + # Smoothed measurement disturbance covariance matrix + # $Var(\varepsilon_{t,i} | Y_n) = H_{t,i} - (H_{t,i} / F_{t,i})^2 * (F_{t,i} + F_{t,i}^2 K_{t,i}' N_{t,i} K_{t,i})$ + # Note: K_{t,i}' N_{t,i} K_{t,i} was stored in _smoothed_measurement_disturbance_cov[i,i] + # in smoothed_estimators_univariate, above, so we just need to implement + # $Var(\varepsilon_{t,i} | Y_n) = H_{t,i} - (H_{t,i} / F_{t,i})^2 * (F_{t,i} + F_{t,i}^2 * \\#)$ here + # (this is because we do not otherwise store the N_{t,i} values) + # $(1 \times 1) = (p \times p) - (p \times p) (p \times p) - (p \times m) (m \times m) (m \times p)$ + smoother._smoothed_measurement_disturbance_cov[i + i*kfilter.k_endog] = model._obs_cov[i + i*model._k_endog] - ( + (kfilter._tmp4[i + i*kfilter.k_endog]**2) * ( + kfilter._forecast_error_cov[i + i*kfilter.k_endog] + + kfilter._forecast_error_cov[i + i*kfilter.k_endog]**2 * smoother._smoothed_measurement_disturbance_cov[i + i*kfilter.k_endog] + ) + ) + + # Smoothed state disturbance covariance matrix + # $Var(\eta_t | Y_n) = Q_t - \\#_0' N_t \\#_0$ + # $(r \times r) = (r \times r) - (r \times m) (m \times m) (m \times r)$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_posdef, &model._k_states, + &alpha, smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._tmpL, &kfilter.k_states) + blas.{{prefix}}copy(&model._k_posdef2, model._state_cov, &inc, smoother._smoothed_state_disturbance_cov, &inc) + blas.{{prefix}}gemm("T", "N", &kfilter.k_posdef, &kfilter.k_posdef, &kfilter.k_states, + &gamma, smoother._tmp0, &kfilter.k_states, + smoother._tmpL, &kfilter.k_states, + &alpha, smoother._smoothed_state_disturbance_cov, &kfilter.k_posdef) + +{{endfor}} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/_smoothers/_univariate_diffuse.pxd b/statsmodels/tsa/statespace/_smoothers/_univariate_diffuse.pxd new file mode 100644 index 0000000..8f628c6 --- /dev/null +++ b/statsmodels/tsa/statespace/_smoothers/_univariate_diffuse.pxd @@ -0,0 +1,48 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models - Conventional Kalman Filter declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cimport numpy as np +from statsmodels.tsa.statespace._representation cimport ( + sStatespace, dStatespace, cStatespace, zStatespace +) +from statsmodels.tsa.statespace._kalman_filter cimport ( + sKalmanFilter, dKalmanFilter, cKalmanFilter, zKalmanFilter +) +from statsmodels.tsa.statespace._kalman_smoother cimport ( + sKalmanSmoother, dKalmanSmoother, cKalmanSmoother, zKalmanSmoother +) + +# Single precision +cdef int ssmoothed_estimators_measurement_univariate_diffuse(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) except * +cdef int ssmoothed_estimators_time_univariate_diffuse(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) +cdef int ssmoothed_state_univariate_diffuse(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) +cdef int ssmoothed_disturbances_univariate_diffuse(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) +cdef int ssmoothed_state_autocov_univariate_diffuse(sKalmanSmoother smoother, sKalmanFilter kfilter, sStatespace model) + +# Double precision +cdef int dsmoothed_estimators_measurement_univariate_diffuse(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) except * +cdef int dsmoothed_estimators_time_univariate_diffuse(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) +cdef int dsmoothed_state_univariate_diffuse(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) +cdef int dsmoothed_disturbances_univariate_diffuse(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) +cdef int dsmoothed_state_autocov_univariate_diffuse(dKalmanSmoother smoother, dKalmanFilter kfilter, dStatespace model) + +# Single precision complex +cdef int csmoothed_estimators_measurement_univariate_diffuse(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) except * +cdef int csmoothed_estimators_time_univariate_diffuse(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) +cdef int csmoothed_state_univariate_diffuse(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) +cdef int csmoothed_disturbances_univariate_diffuse(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) +cdef int csmoothed_state_autocov_univariate_diffuse(cKalmanSmoother smoother, cKalmanFilter kfilter, cStatespace model) + +# Double precision complex +cdef int zsmoothed_estimators_measurement_univariate_diffuse(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) except * +cdef int zsmoothed_estimators_time_univariate_diffuse(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) +cdef int zsmoothed_state_univariate_diffuse(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) +cdef int zsmoothed_disturbances_univariate_diffuse(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) +cdef int zsmoothed_state_autocov_univariate_diffuse(zKalmanSmoother smoother, zKalmanFilter kfilter, zStatespace model) diff --git a/statsmodels/tsa/statespace/_smoothers/_univariate_diffuse.pyx.in b/statsmodels/tsa/statespace/_smoothers/_univariate_diffuse.pyx.in new file mode 100644 index 0000000..6cf0e80 --- /dev/null +++ b/statsmodels/tsa/statespace/_smoothers/_univariate_diffuse.pyx.in @@ -0,0 +1,663 @@ +#cython: profile=False +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models + +Note: some of the calls below are not fully optimized (in the sense that some +things are re-computed rather than stored) but since these iterations will +almost always only be for a very few periods, gains from further optimization +are likely to be small. + +Note: there is a typo in Durbin and Koopman (2012) in the equations for the +univariate smoothed measurement disturbances and smoothed measurement +disturbance covariances. In each equation (p157), the Kalman gain vector +K_{t,i} is used, but in fact these should be multiplied by the forecast error +covariance F_{t,i}. The original paper on the univariate approach, Koopman and +Durbin (2000) has the correct form. The typo arose because the original paper +defines the Kalman gain as K_{t,i} = P_{t,i} Z_{t,i}' but the book defines it +as K_{t,i} = P_{t,i} Z_{t,i}' F_{t,i}^{-1}, and the book does not correct the +disturbances formulas for this change. + +Furthermore, in analogy to the disturbance smoother from chapter 4, the +formula for the univariate covariance ought to be subtracted from the +observation covariance. + +So, what we ought to have is: + +\hat \varepsilon_{t,i} = \sigma_{t,i}^2 F_{t,i}^{-1} (v_{t,i} - F_{t,i} K_{t,i}' r_{t,i}) +Var(\hat \varepsilon_{t,i}) = \sigma_{t,i}^2 - \sigma_{t,i}^4 F_{t,i}^{-2} (v_{t,i} - F_{t,i} K_{t,i}' r_{t,i}) + +Author: Chad Fulton +License: Simplified-BSD +""" + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +# Typical imports +import numpy as np +cimport numpy as np +from statsmodels.src.math cimport * +cimport scipy.linalg.cython_blas as blas + +from statsmodels.tsa.statespace._kalman_smoother cimport ( + SMOOTHER_STATE, SMOOTHER_STATE_COV, SMOOTHER_STATE_AUTOCOV, + SMOOTHER_DISTURBANCE, SMOOTHER_DISTURBANCE_COV +) + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +combined_suffix = '' +if combined_prefix == 'z': + combined_suffix = 'u' +}} + +# ### Univariate diffuse Kalman smoother +# +# See Durbin and Koopman (2012) Chapter 5.3 + +cdef int {{prefix}}smoothed_estimators_measurement_univariate_diffuse({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model) except *: + cdef: + int i, j, inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + {{cython_type}} scalar + int k_states = model._k_states + {{cython_type}} forecast_error_cov, forecast_error_cov_inv, forecast_error_diffuse_cov, forecast_error_diffuse_cov_inv, F1, F12, F2 + + # Adjust for a VAR transition (i.e. design = [#, 0], where the zeros + # correspond to all states except the first k_posdef states) + if model.subset_design: + k_states = model._k_posdef + + # Need to clear out the scaled_smoothed_estimator and + # scaled_smoothed_estimator_cov in case we're re-running the filter + if smoother.t == model.nobs - 1: + smoother.scaled_smoothed_estimator[:, model.nobs-1] = 0 + smoother.scaled_smoothed_estimator_cov[:, :, model.nobs-1] = 0 + + smoother.scaled_smoothed_diffuse_estimator[:, model.nobs-1] = 0 + smoother.scaled_smoothed_diffuse1_estimator_cov[:, :, model.nobs-1] = 0 + smoother.scaled_smoothed_diffuse2_estimator_cov[:, :, model.nobs-1] = 0 + + # Smoothing error + # (not used in the univariate approach) + + # Given r_{t,0}: + # calculate r_{t-1,p}, ..., r_{t-1, 0} and N_{t-1,p}, ..., N_{t-1,0} + + # Clear temporary arrays used for cumulation of L0 and L1 + smoother.tmpL[:] = 0 + smoother.tmpL2[:] = 0 + for i in range(kfilter.k_states): + smoother.tmpL[i, i] = 1 + smoother.tmpL2[i, i] = 1 + + # Iterate + for i in range(kfilter.k_endog-1,-1,-1): + # Forecast error covariance and diffuse forecast error covariance + # F_{*,t} + forecast_error_cov = kfilter._forecast_error_cov[i + i*kfilter.k_endog] + # F_{\infty,t} + forecast_error_diffuse_cov = kfilter._forecast_error_diffuse_cov[i + i*kfilter.k_endog] + + # Intermediate computations (must be done first so we can set the + # measurement disturbance variables correctly) + if {{combined_prefix}}abs(forecast_error_diffuse_cov) > kfilter.tolerance_diffuse: + forecast_error_diffuse_cov_inv = 1.0 / forecast_error_diffuse_cov + + F1 = forecast_error_diffuse_cov_inv + # Usually F2 = -forecast_error_cov * forecast_error_diffuse_cov_inv**2 + # but this version is more convenient for the *axpy call + F12 = -forecast_error_cov * forecast_error_diffuse_cov_inv + F2 = F12 * forecast_error_diffuse_cov_inv + + # K0 = M_inf[:, i:i+1] * F1 + blas.{{prefix}}copy(&kfilter.k_states, &kfilter._M_inf[i * kfilter.k_states], &inc, kfilter._tmpK0, &inc) + blas.{{prefix}}scal(&kfilter.k_states, &F1, kfilter._tmpK0, &inc) + # K1 = M[:, i:i+1] * F1 + M_inf[:, i:i+1] * F2 + # K1 = M[:, i:i+1] * F1 + K0 * F12 + blas.{{prefix}}copy(&kfilter.k_states, &kfilter._M[i*kfilter.k_states], &inc, kfilter._tmpK1, &inc) + blas.{{prefix}}scal(&kfilter.k_states, &F1, kfilter._tmpK1, &inc) + blas.{{prefix}}axpy(&kfilter.k_states, &F12, kfilter._tmpK0, &inc, kfilter._tmpK1, &inc) + # L0 = np.eye(m) - np.dot(K0, Zi) + kfilter.tmpL0[:] = 0 + blas.{{prefix}}ger{{combined_suffix}}(&model._k_states, &model._k_states, &gamma, kfilter._tmpK0, &inc, &model._design[i], &model._k_endog, kfilter._tmpL0, &kfilter.k_states) + for j in range(kfilter.k_states): + kfilter._tmpL0[j + j*kfilter.k_states] = kfilter._tmpL0[j + j*kfilter.k_states] + 1 + # L1 = -np.dot(K1, Zi) + kfilter.tmpL1[:] = 0 + blas.{{prefix}}ger{{combined_suffix}}(&model._k_states, &model._k_states, &gamma, kfilter._tmpK1, &inc, &model._design[i], &model._k_endog, kfilter._tmpL1, &kfilter.k_states) + elif not forecast_error_cov == 0: + forecast_error_cov_inv = 1.0 / forecast_error_cov + + # K0 = M[:, i:i+1] / F[i, i] + blas.{{prefix}}copy(&kfilter.k_states, &kfilter._M[i*kfilter.k_states], &inc, kfilter._tmpK0, &inc) + blas.{{prefix}}scal(&kfilter.k_states, &forecast_error_cov_inv, kfilter._tmpK0, &inc) + + # L0 = np.eye(m) - np.dot(K0, Zi) + kfilter.tmpL0[:] = 0 + blas.{{prefix}}ger{{combined_suffix}}(&model._k_states, &model._k_states, &gamma, kfilter._tmpK0, &inc, &model._design[i], &model._k_endog, kfilter._tmpL0, &kfilter.k_states) + for j in range(kfilter.k_states): + kfilter._tmpL0[j + j*kfilter.k_states] = kfilter._tmpL0[j + j*kfilter.k_states] + 1 + else: + kfilter.tmpK0[:] = 0 + + # Cumulate L0 and L1 + blas.{{prefix}}copy(&kfilter.k_states2, smoother._tmpL, &inc, smoother._tmp0, &inc) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + kfilter._tmpL0, &kfilter.k_states, + &beta, smoother._tmpL, &kfilter.k_states) + if {{combined_prefix}}abs(forecast_error_diffuse_cov) > kfilter.tolerance_diffuse: + blas.{{prefix}}copy(&kfilter.k_states2, smoother._tmpL2, &inc, smoother._tmp0, &inc) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + kfilter._tmpL1, &kfilter.k_states, + &beta, smoother._tmpL2, &kfilter.k_states) + + # Store values for measurement disturbance smoothing + # np.dot(K0.T, rt) + if smoother.smoother_output & SMOOTHER_DISTURBANCE: + # Note: zdot and cdot are broken, so have to use gemv for those + {{if combined_prefix == 'd'}} + smoother._smoothed_measurement_disturbance[i] = ( + blas.{{prefix}}dot(&model._k_states, kfilter._tmpK0, &inc, + smoother._scaled_smoothed_estimator, &inc) + ) + {{else}} + blas.{{prefix}}gemv("N", &inc, &model._k_states, + &alpha, smoother._scaled_smoothed_estimator, &inc, + kfilter._tmpK0, &inc, + &beta, &smoother._smoothed_measurement_disturbance[i], &inc) + {{endif}} + + # Store values for measurement disturbance covariance smoothing + # np.dot(np.dot(K0.T, Nt), K0) + if smoother.smoother_output & SMOOTHER_DISTURBANCE_COV: + blas.{{prefix}}gemv("N", &model._k_states, &model._k_states, + &alpha, smoother._scaled_smoothed_estimator_cov, &kfilter.k_states, + kfilter._tmpK0, &inc, + &beta, smoother._tmp0, &inc) + # Note: zdot and cdot are broken, so have to use gemv for those + {{if combined_prefix == 'd'}} + smoother._smoothed_measurement_disturbance_cov[i + i*kfilter.k_endog] = ( + blas.{{prefix}}dot(&model._k_states, kfilter._tmpK0, &inc, + smoother._tmp0, &inc) + ) + {{else}} + blas.{{prefix}}gemv("N", &inc, &model._k_states, + &alpha, smoother._tmp0, &inc, + kfilter._tmpK0, &inc, + &beta, &smoother._smoothed_measurement_disturbance_cov[i*kfilter.k_endog + i], &inc) + {{endif}} + + # F_{\infty, i, i, t} > 0 + if {{combined_prefix}}abs(forecast_error_diffuse_cov) > kfilter.tolerance_diffuse: + # Update + # rt_inf[:] = Zi.T[:, 0] * v[i] * F1 + np.dot(L0.T, rt_inf) + np.dot(L1.T, rt) + blas.{{prefix}}copy(&model._k_states, smoother._scaled_smoothed_diffuse_estimator, &inc, smoother._tmp0, &inc) + blas.{{prefix}}copy(&model._k_states, &model._design[i], &model._k_endog, smoother._scaled_smoothed_diffuse_estimator, &inc) + scalar = F1 * kfilter._forecast_error[i] + blas.{{prefix}}gemv("T", &model._k_states, &model._k_states, + &alpha, kfilter._tmpL0, &kfilter.k_states, + smoother._tmp0, &inc, + &scalar, smoother._scaled_smoothed_diffuse_estimator, &inc) + + blas.{{prefix}}gemv("T", &model._k_states, &model._k_states, + &alpha, kfilter._tmpL1, &kfilter.k_states, + smoother._scaled_smoothed_estimator, &inc, + &alpha, smoother._scaled_smoothed_diffuse_estimator, &inc) + + # rt[:] = np.dot(L0.T, rt) + blas.{{prefix}}copy(&model._k_states, smoother._scaled_smoothed_estimator, &inc, smoother._tmp0, &inc) + blas.{{prefix}}gemv("T", &model._k_states, &model._k_states, + &alpha, kfilter._tmpL0, &kfilter.k_states, + smoother._tmp0, &inc, + &beta, smoother._scaled_smoothed_estimator, &inc) + + # Nt_inf2[:] = ZiTZi * F2 + np.dot(np.dot(L0.T, Nt_inf2), L0) + np.dot(np.dot(L0.T, Nt_inf1), L1) + np.dot(np.dot(L1.T, Nt_inf1.T), L0) + np.dot(np.dot(L1.T, Nt), L1) + # Nt_inf2[:] = ZiTZi * F2 + np.dot(np.dot(L0.T, Nt_inf2), L0) + np.dot(np.dot(L0.T, Nt_inf1), L1) + np.dot(np.dot(L1.T, Nt_inf1.T), L0) + np.dot(np.dot(L1.T, Nt), L1) + # : np.dot(L0.T, Nt_inf2) -> tmp0 + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._tmpL0, &kfilter.k_states, + smoother._scaled_smoothed_diffuse2_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + # : np.dot(tmp0, L0) -> scaled_smoothed_diffuse2_estimator_cov + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + kfilter._tmpL0, &kfilter.k_states, + &beta, smoother._scaled_smoothed_diffuse2_estimator_cov, &kfilter.k_states) + # : np.dot(L0.T, Nt_inf1) -> tmp0 + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._tmpL0, &kfilter.k_states, + smoother._scaled_smoothed_diffuse1_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + # : np.dot(tmp0, L1) -> scaled_smoothed_diffuse2_estimator_cov + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + kfilter._tmpL1, &kfilter.k_states, + &alpha, smoother._scaled_smoothed_diffuse2_estimator_cov, &kfilter.k_states) + # : np.dot(L1.T, Nt_inf1.T) -> tmp0 + blas.{{prefix}}gemm("T", "T", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._tmpL1, &kfilter.k_states, + smoother._scaled_smoothed_diffuse1_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + # : np.dot(tmp0, L0) -> scaled_smoothed_diffuse2_estimator_cov + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + kfilter._tmpL0, &kfilter.k_states, + &alpha, smoother._scaled_smoothed_diffuse2_estimator_cov, &kfilter.k_states) + # : np.dot(L1.T, Nt) -> tmp0 + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._tmpL1, &kfilter.k_states, + smoother._scaled_smoothed_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + # : np.dot(tmp0, L1) -> scaled_smoothed_diffuse2_estimator_cov + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + kfilter._tmpL1, &kfilter.k_states, + &alpha, smoother._scaled_smoothed_diffuse2_estimator_cov, &kfilter.k_states) + # Note: still need to add ZiTZi * F2 to Nt_inf2, which is done below. + + # Nt_inf1[:] = ZiTZi * F1 + np.dot(np.dot(L0.T, Nt_inf1), L0) + np.dot(np.dot(L1.T, Nt), L0) + # : np.dot(L0.T, Nt_inf1) -> tmp0 + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._tmpL0, &kfilter.k_states, + smoother._scaled_smoothed_diffuse1_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + # : np.dot(tmp0, L0) -> scaled_smoothed_diffuse2_estimator_cov + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + kfilter._tmpL0, &kfilter.k_states, + &beta, smoother._scaled_smoothed_diffuse1_estimator_cov, &kfilter.k_states) + # : np.dot(L1.T, Nt) -> tmp0 + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._tmpL1, &kfilter.k_states, + smoother._scaled_smoothed_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + # : np.dot(tmp0, L0) -> scaled_smoothed_diffuse2_estimator_cov + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + kfilter._tmpL0, &kfilter.k_states, + &alpha, smoother._scaled_smoothed_diffuse1_estimator_cov, &kfilter.k_states) + # # : np.dot(L0.T, Nt) -> tmp0 + # blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + # &alpha, kfilter._tmpL0, &kfilter.k_states, + # smoother._scaled_smoothed_estimator_cov, &kfilter.k_states, + # &beta, smoother._tmp0, &kfilter.k_states) + # # : np.dot(tmp0, L1) -> scaled_smoothed_diffuse2_estimator_cov + # blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + # &alpha, smoother._tmp0, &kfilter.k_states, + # kfilter._tmpL1, &kfilter.k_states, + # &alpha, smoother._scaled_smoothed_diffuse1_estimator_cov, &kfilter.k_states) + # Note: still need to add ZiTZi * F1 to Nt_inf1, which is done below. + + # Now add in ZiTZi + # ZiTZi + smoother.tmp0[:] = 0 + blas.{{prefix}}ger{{combined_suffix}}(&model._k_states, &model._k_states, &alpha, &model._design[i], &model._k_endog, &model._design[i], &model._k_endog, smoother._tmp0, &kfilter.k_states) + + # : Nt_inf2 += ZiTZi * F2 + blas.{{prefix}}axpy(&kfilter.k_states2, &F2, smoother._tmp0, &inc, smoother._scaled_smoothed_diffuse2_estimator_cov, &inc) + # : Nt_inf1 += ZiTZi * F1 + blas.{{prefix}}axpy(&kfilter.k_states2, &F1, smoother._tmp0, &inc, smoother._scaled_smoothed_diffuse1_estimator_cov, &inc) + + # Nt[:] = np.dot(np.dot(L0.T, Nt), L0) + # : np.dot(L0.T, Nt) -> tmp0 + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._tmpL0, &kfilter.k_states, + smoother._scaled_smoothed_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + # : np.dot(tmp0, L0) -> scaled_smoothed_estimator_cov + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + kfilter._tmpL0, &kfilter.k_states, + &beta, smoother._scaled_smoothed_estimator_cov, &kfilter.k_states) + + # F_{\infty, i, i, t} = 0 + elif not forecast_error_cov == 0: + # Update + # Note: Koopman and Durbin (2003) subtract the latter term, + # but they use a different definition of the smoothing + # recursion in general than the book Durbin and Koopman; this + # version is consistent with the definition of the smoothing + # recursion in the book. + # rt[:] = Zi.T[:, 0] * v[i] / F[i, i] + np.dot(L0.T, rt) + blas.{{prefix}}copy(&model._k_states, smoother._scaled_smoothed_estimator, &inc, smoother._tmp0, &inc) + blas.{{prefix}}copy(&model._k_states, &model._design[i], &model._k_endog, smoother._scaled_smoothed_estimator, &inc) + scalar = forecast_error_cov_inv * kfilter._forecast_error[i] + blas.{{prefix}}gemv("T", &model._k_states, &model._k_states, + &alpha, kfilter._tmpL0, &kfilter.k_states, + smoother._tmp0, &inc, + &scalar, smoother._scaled_smoothed_estimator, &inc) + # rt_inf[:] = rt_inf[:] + + # Nt[:] = ZiTZi / F[i, i] + np.dot(np.dot(L0.T, Nt), L0) + # : np.dot(L0.T, Nt) -> tmp0 + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, kfilter._tmpL0, &kfilter.k_states, + smoother._scaled_smoothed_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + # : np.dot(tmp0, L0) -> scaled_smoothed_diffuse2_estimator_cov + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + kfilter._tmpL0, &kfilter.k_states, + &beta, smoother._scaled_smoothed_estimator_cov, &kfilter.k_states) + blas.{{prefix}}ger{{combined_suffix}}(&model._k_states, &model._k_states, &forecast_error_cov_inv, &model._design[i], &model._k_endog, &model._design[i], &model._k_endog, smoother._scaled_smoothed_estimator_cov, &kfilter.k_states) + # Nt_inf1[:] = np.dot(Nt_inf1, L0) + blas.{{prefix}}copy(&model._k_states2, smoother._scaled_smoothed_diffuse1_estimator_cov, &inc, smoother._tmp0, &inc) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + kfilter._tmpL0, &kfilter.k_states, + &beta, smoother._scaled_smoothed_diffuse1_estimator_cov, &kfilter.k_states) + # Nt_inf2[:] = Nt_inf2 + + # Finalize the cumulated L0 and L1 by premultiplying by T + # (and put them into kfilter.tmpL0 and kfilter.tmpL1) + blas.{{prefix}}copy(&kfilter.k_states2, smoother._tmpL, &inc, smoother._tmp0, &inc) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, model._transition, &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, kfilter._tmpL0, &kfilter.k_states) + blas.{{prefix}}copy(&kfilter.k_states2, smoother._tmpL2, &inc, smoother._tmp0, &inc) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, model._transition, &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, kfilter._tmpL1, &kfilter.k_states) + + +cdef int {{prefix}}smoothed_estimators_time_univariate_diffuse({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef: + int i, j, inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + {{cython_type}} scalar + int k_states = model._k_states + + if smoother.t == 0: + return 1 + + # TODO check that this is the right transition matrix to use in the case + # of time-varying matrices + # rt1[:] = np.dot(T1.T, rt) + blas.{{prefix}}gemv("T", &model._k_states, &model._k_states, + &alpha, model._transition, &model._k_states, + smoother._scaled_smoothed_estimator, &inc, + &beta, &smoother.scaled_smoothed_estimator[0, smoother.t-1], &inc) + # rt1_inf[:] = np.dot(T1.T, rt_inf) + blas.{{prefix}}gemv("T", &model._k_states, &model._k_states, + &alpha, model._transition, &model._k_states, + smoother._scaled_smoothed_diffuse_estimator, &inc, + &beta, &smoother.scaled_smoothed_diffuse_estimator[0, smoother.t-1], &inc) + + # Nt1 = np.dot(np.dot(T1.T, Nt1), T1) + blas.{{prefix}}copy(&kfilter.k_states2, smoother._scaled_smoothed_estimator_cov, &inc, + &smoother.scaled_smoothed_estimator_cov[0, 0, smoother.t-1], &inc) + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, model._transition, &model._k_states, + smoother._scaled_smoothed_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + model._transition, &model._k_states, + &beta, &smoother.scaled_smoothed_estimator_cov[0, 0, smoother.t-1], &kfilter.k_states) + # Nt1_inf1 = np.dot(np.dot(T1.T, Nt1_inf1), T1) + blas.{{prefix}}copy(&kfilter.k_states2, smoother._scaled_smoothed_diffuse1_estimator_cov, &inc, + &smoother.scaled_smoothed_diffuse1_estimator_cov[0, 0, smoother.t-1], &inc) + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, model._transition, &model._k_states, + smoother._scaled_smoothed_diffuse1_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + model._transition, &model._k_states, + &beta, &smoother.scaled_smoothed_diffuse1_estimator_cov[0, 0, smoother.t-1], &kfilter.k_states) + # Nt1_inf2 = np.dot(np.dot(T1.T, Nt1_inf2), T1) + blas.{{prefix}}copy(&kfilter.k_states2, smoother._scaled_smoothed_diffuse2_estimator_cov, &inc, + &smoother.scaled_smoothed_diffuse2_estimator_cov[0, 0, smoother.t-1], &inc) + blas.{{prefix}}gemm("T", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, model._transition, &model._k_states, + smoother._scaled_smoothed_diffuse2_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + model._transition, &model._k_states, + &beta, &smoother.scaled_smoothed_diffuse2_estimator_cov[0, 0, smoother.t-1], &kfilter.k_states) + +cdef int {{prefix}}smoothed_state_univariate_diffuse({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef: + int i, j, inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + {{cython_type}} scalar + int k_states = model._k_states + + # Smoothed state + if smoother.smoother_output & SMOOTHER_STATE: + # alpha_hat[:] = a_t + np.dot(P_t, rt) + np.dot(P_t_inf, rt_inf) + blas.{{prefix}}copy(&kfilter.k_states, &kfilter.predicted_state[0,smoother.t], &inc, smoother._smoothed_state, &inc) + blas.{{prefix}}gemv("N", &model._k_states, &model._k_states, + &alpha, &kfilter.predicted_state_cov[0,0,smoother.t], &kfilter.k_states, + smoother._scaled_smoothed_estimator, &inc, + &alpha, smoother._smoothed_state, &inc) + blas.{{prefix}}gemv("N", &model._k_states, &model._k_states, + &alpha, &kfilter.predicted_diffuse_state_cov[0,0,smoother.t], &kfilter.k_states, + smoother._scaled_smoothed_diffuse_estimator, &inc, + &alpha, smoother._smoothed_state, &inc) + + # Smoothed state covariance + if smoother.smoother_output & SMOOTHER_STATE_COV: + # V[:] = P_t - np.dot(np.dot(P_t, Nt), P_t) - np.dot(np.dot(P_t, Nt_inf1), P_t_inf) - np.dot(np.dot(P_t_inf, Nt_inf1), P_t).T - np.dot(np.dot(P_t_inf, Nt_inf2), P_t_inf) + # : P_t [ I - N_t P_t] + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &gamma, smoother._scaled_smoothed_estimator_cov, &kfilter.k_states, + &kfilter.predicted_state_cov[0,0,smoother.t], &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + for i in range(kfilter.k_states): + smoother.tmp0[i,i] = 1 + smoother.tmp0[i,i] + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, &kfilter.predicted_state_cov[0,0,smoother.t], &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._smoothed_state_cov, &kfilter.k_states) + # : - np.dot(np.dot(P_t_inf, Nt_inf1), P_t) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, &kfilter.predicted_diffuse_state_cov[0,0,smoother.t], &kfilter.k_states, + smoother._scaled_smoothed_diffuse1_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &gamma, smoother._tmp0, &kfilter.k_states, + &kfilter.predicted_state_cov[0,0,smoother.t], &kfilter.k_states, + &alpha, smoother._smoothed_state_cov, &kfilter.k_states) + + # : - np.dot(np.dot(P_t_inf, Nt_inf1), P_t).T + # [or] + # : - np.dot(np.dot(P_t, Nt_inf1.T), P_t_inf) + blas.{{prefix}}gemm("N", "T", &model._k_states, &model._k_states, &model._k_states, + &alpha, &kfilter.predicted_state_cov[0,0,smoother.t], &kfilter.k_states, + smoother._scaled_smoothed_diffuse1_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &gamma, smoother._tmp0, &kfilter.k_states, + &kfilter.predicted_diffuse_state_cov[0,0,smoother.t], &kfilter.k_states, + &alpha, smoother._smoothed_state_cov, &kfilter.k_states) + + # - np.dot(np.dot(P_t_inf, Nt_inf2), P_t_inf) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &alpha, &kfilter.predicted_diffuse_state_cov[0,0,smoother.t], &kfilter.k_states, + smoother._scaled_smoothed_diffuse2_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_states, &model._k_states, + &gamma, smoother._tmp0, &kfilter.k_states, + &kfilter.predicted_diffuse_state_cov[0,0,smoother.t], &kfilter.k_states, + &alpha, smoother._smoothed_state_cov, &kfilter.k_states) + +cdef int {{prefix}}smoothed_disturbances_univariate_diffuse({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + # Note: this only differs from the conventional version in the + # definition of the smoothed measurement disturbance and cov + cdef int i, j + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + {{cython_type}} forecast_error_cov, forecast_error_cov_inv, forecast_error_diffuse_cov, forecast_error_diffuse_cov_inv, obs_cov + + # Temporary arrays + + # $\\#_0 = R_t Q_t$ + # $(m \times r) = (m \times r) (r \times r)$ + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_posdef, &model._k_posdef, + &alpha, model._selection, &model._k_states, + model._state_cov, &model._k_posdef, + &beta, smoother._tmp0, &kfilter.k_states) + + for i in range(model._k_endog): + forecast_error_cov = kfilter._forecast_error_cov[i + i*kfilter.k_endog] + forecast_error_diffuse_cov = kfilter._forecast_error_diffuse_cov[i + i*kfilter.k_endog] + obs_cov = model._obs_cov[i + i*model._k_endog] + + # Smoothed measurement disturbance + if smoother.smoother_output & SMOOTHER_DISTURBANCE: + if {{combined_prefix}}abs(forecast_error_diffuse_cov) > kfilter.tolerance_diffuse: + smoother._smoothed_measurement_disturbance[i] = -obs_cov * smoother._smoothed_measurement_disturbance[i] + elif not forecast_error_cov == 0: + smoother._smoothed_measurement_disturbance[i] = obs_cov * ( + kfilter._forecast_error[i] / forecast_error_cov - smoother._smoothed_measurement_disturbance[i]) + else: + smoother._smoothed_measurement_disturbance[i] = 0 + + # Smoothed measurement disturbance covariance matrix + if smoother.smoother_output & SMOOTHER_DISTURBANCE_COV: + if {{combined_prefix}}abs(forecast_error_diffuse_cov) > kfilter.tolerance_diffuse: + smoother._smoothed_measurement_disturbance_cov[i + i*kfilter.k_endog] = ( + obs_cov * (1 - obs_cov * smoother._smoothed_measurement_disturbance_cov[i + i*kfilter.k_endog])) + elif not forecast_error_cov == 0: + smoother._smoothed_measurement_disturbance_cov[i + i*kfilter.k_endog] = ( + obs_cov * (1 - obs_cov * (1. / forecast_error_cov + smoother._smoothed_measurement_disturbance_cov[i + i*kfilter.k_endog]))) + else: + smoother._smoothed_measurement_disturbance_cov[i + i*kfilter.k_endog] = obs_cov + + # Smoothed state disturbance + if smoother.smoother_output & SMOOTHER_DISTURBANCE: + blas.{{prefix}}gemv("T", &model._k_states, &model._k_posdef, + &alpha, smoother._tmp0, &kfilter.k_states, + smoother._input_scaled_smoothed_estimator, &inc, + &beta, smoother._smoothed_state_disturbance, &inc) + + # Smoothed state disturbance covariance matrix + if smoother.smoother_output & SMOOTHER_DISTURBANCE_COV: + blas.{{prefix}}gemm("N", "N", &model._k_states, &model._k_posdef, &model._k_states, + &alpha, smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &beta, smoother._tmpL, &kfilter.k_states) + blas.{{prefix}}copy(&model._k_posdef2, model._state_cov, &inc, smoother._smoothed_state_disturbance_cov, &inc) + blas.{{prefix}}gemm("T", "N", &kfilter.k_posdef, &kfilter.k_posdef, &kfilter.k_states, + &gamma, smoother._tmp0, &kfilter.k_states, + smoother._tmpL, &kfilter.k_states, + &alpha, smoother._smoothed_state_disturbance_cov, &kfilter.k_posdef) + +cdef int {{prefix}}smoothed_state_autocov_univariate_diffuse({{prefix}}KalmanSmoother smoother, {{prefix}}KalmanFilter kfilter, {{prefix}}Statespace model): + cdef: + int i + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + # The below code was a test to see if the diffuse autocov could be + # relatively simply computed (i.e. which required certain terms to cancel + # out), but it appears that it cannot (i.e. it requires the computation of + # L2, which is nontrivial and not described by Durbin and Koopman). + return 0 + + # -P_t1 N0t -> tmp0 + blas.{{prefix}}gemm("N", "N", &model.k_states, &model.k_states, &model.k_states, + &gamma, &kfilter.predicted_state_cov[0,0,smoother.t+1], &kfilter.k_states, + smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + + # - P_t1_inf N2t - P_t1 N0t -> tmpL + blas.{{prefix}}copy(&kfilter.k_states2, smoother._tmp0, &inc, smoother._tmpL, &inc) + blas.{{prefix}}gemm("N", "N", &model.k_states, &model.k_states, &model.k_states, + &gamma, &kfilter.predicted_diffuse_state_cov[0,0,smoother.t+1], &kfilter.k_states, + smoother._input_scaled_smoothed_diffuse2_estimator_cov, &kfilter.k_states, + &alpha, smoother._tmpL, &kfilter.k_states) + + # I - P_t1_inf N1t - P_t1 N0t -> tmp0 + blas.{{prefix}}gemm("N", "N", &model.k_states, &model.k_states, &model.k_states, + &gamma, &kfilter.predicted_diffuse_state_cov[0,0,smoother.t+1], &kfilter.k_states, + smoother._input_scaled_smoothed_diffuse1_estimator_cov, &kfilter.k_states, + &alpha, smoother._tmp0, &kfilter.k_states) + for i in range(kfilter.k_states): + smoother.tmp0[i,i] = 1 + smoother.tmp0[i,i] + + # L0t P_t -> tmpL2 + blas.{{prefix}}gemm("N", "N", &model.k_states, &model.k_states, &model.k_states, + &alpha, kfilter._tmpL0, &kfilter.k_states, + &kfilter.predicted_state_cov[0, 0, smoother.t], &kfilter.k_states, + &beta, smoother._tmpL2, &kfilter.k_states) + # L0t P_t + L1t P_t_inf -> tmpL2 + blas.{{prefix}}gemm("N", "N", &model.k_states, &model.k_states, &model.k_states, + &alpha, kfilter._tmpL1, &kfilter.k_states, + &kfilter.predicted_diffuse_state_cov[0, 0, smoother.t], &kfilter.k_states, + &alpha, smoother._tmpL2, &kfilter.k_states) + + # [I - P_t1_inf N1t - P_t1 N0t] (L1t P_t_inf + L0t P_t) -> smoothed_state_autocov + blas.{{prefix}}gemm("N", "N", &model.k_states, &model.k_states, &model.k_states, + &alpha, smoother._tmp0, &kfilter.k_states, + smoother._tmpL2, &kfilter.k_states, + &beta, smoother._smoothed_state_autocov, &kfilter.k_states) + + # L0t P_t_inf -> tmp0 + blas.{{prefix}}gemm("N", "N", &model.k_states, &model.k_states, &model.k_states, + &alpha, kfilter._tmpL0, &kfilter.k_states, + &kfilter.predicted_diffuse_state_cov[0, 0, smoother.t], &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + + # [- P_t1_inf N2t - P_t1 N0t] L0t P_t_inf +-> smoothed_state_autocov + blas.{{prefix}}gemm("N", "N", &model.k_states, &model.k_states, &model.k_states, + &alpha, smoother._tmpL, &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &alpha, smoother._smoothed_state_autocov, &kfilter.k_states) + + # [- P_t1_inf N0t ] -> tmpL + blas.{{prefix}}gemm("N", "N", &model.k_states, &model.k_states, &model.k_states, + &gamma, &kfilter.predicted_diffuse_state_cov[0,0,smoother.t+1], &kfilter.k_states, + smoother._input_scaled_smoothed_estimator_cov, &kfilter.k_states, + &beta, smoother._tmpL, &kfilter.k_states) + + # L1t P_t -> tmp0 + blas.{{prefix}}gemm("N", "N", &model.k_states, &model.k_states, &model.k_states, + &alpha, kfilter._tmpL1, &kfilter.k_states, + &kfilter.predicted_state_cov[0, 0, smoother.t], &kfilter.k_states, + &beta, smoother._tmp0, &kfilter.k_states) + + # [- P_t1_inf N0t ] L1t P_t +-> smoothed_state_autocov + blas.{{prefix}}gemm("N", "N", &model.k_states, &model.k_states, &model.k_states, + &alpha, smoother._tmpL, &kfilter.k_states, + smoother._tmp0, &kfilter.k_states, + &alpha, smoother._smoothed_state_autocov, &kfilter.k_states) + +{{endfor}} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/_tools.pxd b/statsmodels/tsa/statespace/_tools.pxd new file mode 100644 index 0000000..cb589fe --- /dev/null +++ b/statsmodels/tsa/statespace/_tools.pxd @@ -0,0 +1,145 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Models - Cython Tools declarations + +Author: Chad Fulton +License: Simplified-BSD +""" + +cimport numpy as np + +cdef validate_matrix_shape(str name, Py_ssize_t *shape, int nrows, int ncols, object nobs=*) + +cdef validate_vector_shape(str name, Py_ssize_t *shape, int nrows, object nobs=*) + +cdef int _ssolve_discrete_lyapunov(np.float32_t * a, np.float32_t * q, int n, int complex_step=*) except * +cdef int _dsolve_discrete_lyapunov(np.float64_t * a, np.float64_t * q, int n, int complex_step=*) except * +cdef int _csolve_discrete_lyapunov(np.complex64_t * a, np.complex64_t * q, int n, int complex_step=*) except * +cdef int _zsolve_discrete_lyapunov(np.complex128_t * a, np.complex128_t * q, int n, int complex_step=*) except * + +cdef int _sldl(np.float32_t * A, int n) except * +cdef int _dldl(np.float64_t * A, int n) except * +cdef int _cldl(np.complex64_t * A, int n) except * +cdef int _zldl(np.complex128_t * A, int n) except * + +cpdef int sldl(np.float32_t [::1, :] A) except * +cpdef int dldl(np.float64_t [::1, :] A) except * +cpdef int cldl(np.complex64_t [::1, :] A) except * +cpdef int zldl(np.complex128_t [::1, :] A) except * + +cdef int _sreorder_missing_diagonal(np.float32_t * a, int * missing, int n) +cdef int _dreorder_missing_diagonal(np.float64_t * a, int * missing, int n) +cdef int _creorder_missing_diagonal(np.complex64_t * a, int * missing, int n) +cdef int _zreorder_missing_diagonal(np.complex128_t * a, int * missing, int n) + +cdef int _sreorder_missing_submatrix(np.float32_t * a, int * missing, int n) +cdef int _dreorder_missing_submatrix(np.float64_t * a, int * missing, int n) +cdef int _creorder_missing_submatrix(np.complex64_t * a, int * missing, int n) +cdef int _zreorder_missing_submatrix(np.complex128_t * a, int * missing, int n) + +cdef int _sreorder_missing_rows(np.float32_t * a, int * missing, int n, int m) +cdef int _dreorder_missing_rows(np.float64_t * a, int * missing, int n, int m) +cdef int _creorder_missing_rows(np.complex64_t * a, int * missing, int n, int m) +cdef int _zreorder_missing_rows(np.complex128_t * a, int * missing, int n, int m) + +cdef int _sreorder_missing_cols(np.float32_t * a, int * missing, int n, int m) +cdef int _dreorder_missing_cols(np.float64_t * a, int * missing, int n, int m) +cdef int _creorder_missing_cols(np.complex64_t * a, int * missing, int n, int m) +cdef int _zreorder_missing_cols(np.complex128_t * a, int * missing, int n, int m) + +cpdef int sreorder_missing_matrix(np.float32_t [::1, :, :] A, int [::1, :] missing, int reorder_rows, int reorder_cols, int diagonal) except * +cpdef int dreorder_missing_matrix(np.float64_t [::1, :, :] A, int [::1, :] missing, int reorder_rows, int reorder_cols, int diagonal) except * +cpdef int creorder_missing_matrix(np.complex64_t [::1, :, :] A, int [::1, :] missing, int reorder_rows, int reorder_cols, int diagonal) except * +cpdef int zreorder_missing_matrix(np.complex128_t [::1, :, :] A, int [::1, :] missing, int reorder_rows, int reorder_cols, int diagonal) except * + +cpdef int sreorder_missing_vector(np.float32_t [::1, :] A, int [::1, :] missing) except * +cpdef int dreorder_missing_vector(np.float64_t [::1, :] A, int [::1, :] missing) except * +cpdef int creorder_missing_vector(np.complex64_t [::1, :] A, int [::1, :] missing) except * +cpdef int zreorder_missing_vector(np.complex128_t [::1, :] A, int [::1, :] missing) except * + +cdef int _scopy_missing_diagonal(np.float32_t * a, np.float32_t * b, int * missing, int n) +cdef int _dcopy_missing_diagonal(np.float64_t * a, np.float64_t * b, int * missing, int n) +cdef int _ccopy_missing_diagonal(np.complex64_t * a, np.complex64_t * b, int * missing, int n) +cdef int _zcopy_missing_diagonal(np.complex128_t * a, np.complex128_t * b, int * missing, int n) + +cdef int _scopy_missing_submatrix(np.float32_t * a, np.float32_t * b, int * missing, int n) +cdef int _dcopy_missing_submatrix(np.float64_t * a, np.float64_t * b, int * missing, int n) +cdef int _ccopy_missing_submatrix(np.complex64_t * a, np.complex64_t * b, int * missing, int n) +cdef int _zcopy_missing_submatrix(np.complex128_t * a, np.complex128_t * b, int * missing, int n) + +cdef int _scopy_missing_rows(np.float32_t * a, np.float32_t * b, int * missing, int n, int m) +cdef int _dcopy_missing_rows(np.float64_t * a, np.float64_t * b, int * missing, int n, int m) +cdef int _ccopy_missing_rows(np.complex64_t * a, np.complex64_t * b, int * missing, int n, int m) +cdef int _zcopy_missing_rows(np.complex128_t * a, np.complex128_t * b, int * missing, int n, int m) + +cdef int _scopy_missing_cols(np.float32_t * a, np.float32_t * b, int * missing, int n, int m) +cdef int _dcopy_missing_cols(np.float64_t * a, np.float64_t * b, int * missing, int n, int m) +cdef int _ccopy_missing_cols(np.complex64_t * a, np.complex64_t * b, int * missing, int n, int m) +cdef int _zcopy_missing_cols(np.complex128_t * a, np.complex128_t * b, int * missing, int n, int m) + +cpdef int scopy_missing_matrix(np.float32_t [::1, :, :] A, np.float32_t [::1, :, :] B, int [::1, :] missing, int copy_rows, int copy_cols, int diagonal) except * +cpdef int dcopy_missing_matrix(np.float64_t [::1, :, :] A, np.float64_t [::1, :, :] B, int [::1, :] missing, int copy_rows, int copy_cols, int diagonal) except * +cpdef int ccopy_missing_matrix(np.complex64_t [::1, :, :] A, np.complex64_t [::1, :, :] B, int [::1, :] missing, int copy_rows, int copy_cols, int diagonal) except * +cpdef int zcopy_missing_matrix(np.complex128_t [::1, :, :] A, np.complex128_t [::1, :, :] B, int [::1, :] missing, int copy_rows, int copy_cols, int diagonal) except * + +cpdef int scopy_missing_vector(np.float32_t [::1, :] A, np.float32_t [::1, :] B, int [::1, :] missing) except * +cpdef int dcopy_missing_vector(np.float64_t [::1, :] A, np.float64_t [::1, :] B, int [::1, :] missing) except * +cpdef int ccopy_missing_vector(np.complex64_t [::1, :] A, np.complex64_t [::1, :] B, int [::1, :] missing) except * +cpdef int zcopy_missing_vector(np.complex128_t [::1, :] A, np.complex128_t [::1, :] B, int [::1, :] missing) except * + +cdef int _scopy_index_diagonal(np.float32_t * a, np.float32_t * b, int * index, int n) +cdef int _dcopy_index_diagonal(np.float64_t * a, np.float64_t * b, int * index, int n) +cdef int _ccopy_index_diagonal(np.complex64_t * a, np.complex64_t * b, int * index, int n) +cdef int _zcopy_index_diagonal(np.complex128_t * a, np.complex128_t * b, int * index, int n) + +cdef int _scopy_index_submatrix(np.float32_t * a, np.float32_t * b, int * index, int n) +cdef int _dcopy_index_submatrix(np.float64_t * a, np.float64_t * b, int * index, int n) +cdef int _ccopy_index_submatrix(np.complex64_t * a, np.complex64_t * b, int * index, int n) +cdef int _zcopy_index_submatrix(np.complex128_t * a, np.complex128_t * b, int * index, int n) + +cdef int _scopy_index_rows(np.float32_t * a, np.float32_t * b, int * index, int n, int m) +cdef int _dcopy_index_rows(np.float64_t * a, np.float64_t * b, int * index, int n, int m) +cdef int _ccopy_index_rows(np.complex64_t * a, np.complex64_t * b, int * index, int n, int m) +cdef int _zcopy_index_rows(np.complex128_t * a, np.complex128_t * b, int * index, int n, int m) + +cdef int _scopy_index_cols(np.float32_t * a, np.float32_t * b, int * index, int n, int m) +cdef int _dcopy_index_cols(np.float64_t * a, np.float64_t * b, int * index, int n, int m) +cdef int _ccopy_index_cols(np.complex64_t * a, np.complex64_t * b, int * index, int n, int m) +cdef int _zcopy_index_cols(np.complex128_t * a, np.complex128_t * b, int * index, int n, int m) + +cpdef int scopy_index_matrix(np.float32_t [::1, :, :] A, np.float32_t [::1, :, :] B, int [::1, :] index, int copy_rows, int copy_cols, int diagonal) except * +cpdef int dcopy_index_matrix(np.float64_t [::1, :, :] A, np.float64_t [::1, :, :] B, int [::1, :] index, int copy_rows, int copy_cols, int diagonal) except * +cpdef int ccopy_index_matrix(np.complex64_t [::1, :, :] A, np.complex64_t [::1, :, :] B, int [::1, :] index, int copy_rows, int copy_cols, int diagonal) except * +cpdef int zcopy_index_matrix(np.complex128_t [::1, :, :] A, np.complex128_t [::1, :, :] B, int [::1, :] index, int copy_rows, int copy_cols, int diagonal) except * + +cpdef int scopy_index_vector(np.float32_t [::1, :] A, np.float32_t [::1, :] B, int [::1, :] index) except * +cpdef int dcopy_index_vector(np.float64_t [::1, :] A, np.float64_t [::1, :] B, int [::1, :] index) except * +cpdef int ccopy_index_vector(np.complex64_t [::1, :] A, np.complex64_t [::1, :] B, int [::1, :] index) except * +cpdef int zcopy_index_vector(np.complex128_t [::1, :] A, np.complex128_t [::1, :] B, int [::1, :] index) except * + +cdef int _sselect_cov(int k_states, int k_posdef, int k_states_total, + np.float32_t * tmp, + np.float32_t * selection, + np.float32_t * cov, + np.float32_t * selected_cov) + +cdef int _dselect_cov(int k_states, int k_posdef, int k_states_total, + np.float64_t * tmp, + np.float64_t * selection, + np.float64_t * cov, + np.float64_t * selected_cov) + +cdef int _cselect_cov(int k_states, int k_posdef, int k_states_total, + np.complex64_t * tmp, + np.complex64_t * selection, + np.complex64_t * cov, + np.complex64_t * selected_cov) + +cdef int _zselect_cov(int k_states, int k_posdef, int k_states_total, + np.complex128_t * tmp, + np.complex128_t * selection, + np.complex128_t * cov, + np.complex128_t * selected_cov) + diff --git a/statsmodels/tsa/statespace/_tools.pyx.in b/statsmodels/tsa/statespace/_tools.pyx.in new file mode 100644 index 0000000..97680a6 --- /dev/null +++ b/statsmodels/tsa/statespace/_tools.pyx.in @@ -0,0 +1,1108 @@ +#cython: boundscheck=False +#cython: wraparound=False +#cython: cdivision=False +""" +State Space Model - Cython tools + +Author: Chad Fulton +License: Simplified-BSD +""" + +# Typical imports +cimport numpy as np +cimport cython +import numpy as np + +np.import_array() + +from statsmodels.src.math cimport * +cimport scipy.linalg.cython_blas as blas +cimport scipy.linalg.cython_lapack as lapack + +cdef FORTRAN = 1 + +# Array shape validation +cdef validate_matrix_shape(str name, Py_ssize_t *shape, int nrows, int ncols, nobs=None): + if not shape[0] == nrows: + raise ValueError('Invalid shape for %s matrix: requires %d rows,' + ' got %d' % (name, nrows, shape[0])) + if not shape[1] == ncols: + raise ValueError('Invalid shape for %s matrix: requires %d columns,' + 'got %d' % (name, shape[1], shape[1])) + if nobs is not None and shape[2] not in [1, nobs]: + raise ValueError('Invalid time-varying dimension for %s matrix:' + ' requires 1 or %d, got %d' % (name, nobs, shape[2])) + +cdef validate_vector_shape(str name, Py_ssize_t *shape, int nrows, nobs = None): + if not shape[0] == nrows: + raise ValueError('Invalid shape for %s vector: requires %d rows,' + ' got %d' % (name, nrows, shape[0])) + if nobs is not None and not shape[1] in [1, nobs]: + raise ValueError('Invalid time-varying dimension for %s vector:' + ' requires 1 or %d got %d' % (name, nobs, shape[1])) + +{{py: + +TYPES = { + "s": ("np.float32_t", "np.float32", "np.NPY_FLOAT32"), + "d": ("np.float64_t", "float", "np.NPY_FLOAT64"), + "c": ("np.complex64_t", "np.complex64", "np.NPY_COMPLEX64"), + "z": ("np.complex128_t", "complex", "np.NPY_COMPLEX128"), +} + +}} + +{{for prefix, types in TYPES.items()}} +{{py:cython_type, dtype, typenum = types}} +{{py: +combined_prefix = prefix +combined_cython_type = cython_type +if prefix == 'c': + combined_prefix = 'z' + combined_cython_type = 'np.complex128_t' +if prefix == 's': + combined_prefix = 'd' + combined_cython_type = 'np.float64_t' +}} + + +cdef bint _{{prefix}}select1({{cython_type}} * a): + return 0 + +cdef bint _{{prefix}}select2({{cython_type}} * a, {{cython_type}} * b): + return 0 + +cdef int _{{prefix}}solve_discrete_lyapunov({{cython_type}} * a, {{cython_type}} * q, int n, int complex_step=False) except *: + # Note: some of this code (esp. the Sylvester solving part) cribbed from + # https://raw.githubusercontent.com/scipy/scipy/master/scipy/linalg/_solvers.py + + # Solve an equation of the form $A'XA-X=-Q$ + # a: input / output + # q: input / output + cdef: + int i, j + int info + int inc = 1 + int n2 = n**2 + {{if prefix == 's' or prefix == 'c'}} + np.float32_t scale = 0.0 + {{else}} + np.float64_t scale = 0.0 + {{endif}} + {{cython_type}} tmp = 0.0 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} delta = -2.0 + char trans + cdef np.npy_intp dim[2] + cdef {{cython_type}} [::1,:] apI, capI, u, v + cdef int [::1,:] ipiv + # Dummy selection function, won't actually be referenced since we don't + # need to order the eigenvalues in the ?gees call. + cdef: + int sdim + int lwork = 3*n + bint bwork + cdef np.npy_intp dim1[1] + cdef {{cython_type}} [::1,:] work + cdef {{cython_type}} [:] wr + {{if prefix == 's' or prefix == 'c'}} + cdef np.float32_t [:] wi + {{else}} + cdef np.float64_t [:] wi + {{endif}} + + # Initialize arrays + dim[0] = n; dim[1] = n; + apI = np.PyArray_ZEROS(2, dim, {{typenum}}, FORTRAN) + capI = np.PyArray_ZEROS(2, dim, {{typenum}}, FORTRAN) + u = np.PyArray_ZEROS(2, dim, {{typenum}}, FORTRAN) + v = np.PyArray_ZEROS(2, dim, {{typenum}}, FORTRAN) + ipiv = np.PyArray_ZEROS(2, dim, np.NPY_INT32, FORTRAN) + + dim1[0] = n; + wr = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + {{if prefix == 's'}} + wi = np.PyArray_ZEROS(1, dim1, {{typenum}}, FORTRAN) + {{else}} + wi = np.PyArray_ZEROS(1, dim1, np.NPY_FLOAT64, FORTRAN) + {{endif}} + #vs = np.PyArray_ZEROS(2, dim, {{typenum}}, FORTRAN) + dim[0] = lwork; dim[1] = lwork; + work = np.PyArray_ZEROS(2, dim, {{typenum}}, FORTRAN) + + # - Solve for b.conj().transpose() -------- + + # Get apI = a + I (stored in apI) + # = (a + eye) + # For: c = 2*np.dot(np.dot(inv(a + eye), q), aHI_inv) + blas.{{prefix}}copy(&n2, a, &inc, &apI[0,0], &inc) + # (for loop below adds the identity) + + # Get conj(a) + I (stored in capI) + # a^H + I -> capI + # For: aHI_inv = inv(aH + eye) + blas.{{prefix}}copy(&n2, a, &inc, &capI[0,0], &inc) + # (for loop below adds the identity) + + # Get conj(a) - I (stored in a) + # a^H - I -> a + # For: b = np.dot(aH - eye, aHI_inv) + # (for loop below subtracts the identity) + + # Add / subtract identity matrix + for i in range(n): + apI[i,i] = apI[i,i] + 1 # apI -> a + eye + capI[i,i] = capI[i,i] + 1 # aH + eye + a[i + i*n] = a[i + i*n] - 1 # a - eye + + # Solve [conj(a) + I] b' = [conj(a) - I] (result stored in a) + # For: b = np.dot(aH - eye, aHI_inv) + # Where: aHI_inv = inv(aH + eye) + # where b = (a^H - eye) (a^H + eye)^{-1} + # or b^H = (a + eye)^{-1} (a - eye) + # or (a + eye) b^H = (a - eye) + lapack.{{prefix}}getrf(&n, &n, &capI[0,0], &n, &ipiv[0,0], &info) + + if not info == 0: + raise np.linalg.LinAlgError('LU decomposition error.') + + lapack.{{prefix}}getrs("N", &n, &n, &capI[0,0], &n, &ipiv[0,0], + a, &n, &info) + + if not info == 0: + raise np.linalg.LinAlgError('LU solver error.') + + # Now we have b^H; we could take the conjugate transpose to get b, except + # that the input to the continuous Lyapunov equation is exactly + # b^H, so we already have the quantity we need. + + # - Solve for (-c) -------- + + # where c = 2*np.dot(np.dot(inv(a + eye), q), aHI_inv) + # = 2*(a + eye)^{-1} q (a^H + eye)^{-1} + # and with q Hermitian + # consider x = (a + eye)^{-1} q (a^H + eye)^{-1} + # this can be done in two linear solving steps: + # 1. consider y = q (a^H + eye)^{-1} + # or y (a^H + eye) = q + # or (a^H + eye)^H y^H = q^H + # or (a + eye) y^H = q + # 2. Then consider x = (a + eye)^{-1} y + # or (a + eye) x = y + + # Solve [conj(a) + I] tmp' = q (result stored in q) + # For: y = q (a^H + eye)^{-1} => (a + eye) y^H = q + lapack.{{prefix}}getrs("N", &n, &n, &capI[0,0], &n, &ipiv[0,0], + q, &n, &info) + + if not info == 0: + raise np.linalg.LinAlgError('LU solver error.') + + # Replace the result (stored in q) with its (conjugate) transpose + for j in range(1, n): + for i in range(j): + tmp = q[i + j*n] + q[i + j*n] = q[j + i*n] + q[j + i*n] = tmp + + {{if combined_prefix == 'z'}} + if not complex_step: + for i in range(n2): + q[i] = q[i] - q[i].imag * 2.0j + {{endif}} + + lapack.{{prefix}}getrs("N", &n, &n, &capI[0,0], &n, &ipiv[0,0], + q, &n, &info) + + if not info == 0: + raise np.linalg.LinAlgError('LU solver error.') + + # q -> -2.0 * q + blas.{{prefix}}scal(&n2, &delta, q, &inc) + + # - Solve continuous time Lyapunov -------- + + # Now solve the continuous time Lyapunov equation (AX + XA^H = Q), on the + # transformed inputs ... + + # ... which requires solving the continuous time Sylvester equation + # (AX + XB = Q) where B = A^H + + # Compute the real Schur decomposition of a (unordered) + # TODO compute the optimal lwork rather than always using 3*n + {{if combined_prefix == 'd'}} + # a is now the Schur form of A; (r) + # u is now the unitary Schur transformation matrix for A; (u) + # In the usual case, we will also have: + # r = s, so s is also stored in a + # u = v, so v is also stored in u + # In the complex-step case, we will instead have: + # r = s.conj() + # u = v.conj() + lapack.{{prefix}}gees("V", "N", &_{{prefix}}select2, &n, + a, &n, + &sdim, + &wr[0], &wi[0], + &u[0,0], &n, + &work[0,0], &lwork, + &bwork, &info) + {{else}} + lapack.{{prefix}}gees("V", "N", &_{{prefix}}select1, &n, + a, &n, + &sdim, + &wr[0], + &u[0,0], &n, + &work[0,0], &lwork, + &wi[0], + &bwork, &info) + {{endif}} + + if not info == 0: + raise np.linalg.LinAlgError('Schur decomposition solver error.') + + # Get v (so that in the complex step case we can take the conjugate) + blas.{{prefix}}copy(&n2, &u[0,0], &inc, &v[0,0], &inc) + # If complex step, take the conjugate + {{if combined_prefix == 'z'}} + if complex_step: + for i in range(n): + for j in range(n): + v[i,j] = v[i,j] - v[i,j].imag * 2.0j + {{endif}} + + # Construct f = u^H*q*u (result overwrites q) + # In the usual case, v = u + # In the complex step case, v = u.conj() + blas.{{prefix}}gemm("N", "N", &n, &n, &n, + &alpha, q, &n, + &v[0,0], &n, + &beta, &capI[0,0], &n) + blas.{{prefix}}gemm("C", "N", &n, &n, &n, + &alpha, &u[0,0], &n, + &capI[0,0], &n, + &beta, q, &n) + + # DTRYSL Solve op(A)*X + X*op(B) = scale*C which is here: + # r*X + X*r = scale*q + # results overwrite q + blas.{{prefix}}copy(&n2, a, &inc, &apI[0,0], &inc) + {{if combined_prefix == 'z'}} + if complex_step: + for i in range(n): + for j in range(n): + apI[j,i] = apI[j,i] - apI[j,i].imag * 2.0j + {{endif}} + lapack.{{prefix}}trsyl("N", "C", &inc, &n, &n, + a, &n, + &apI[0,0], &n, + q, &n, + &scale, &info) + + # Scale q by scale + if not scale == 1.0: + blas.{{prefix}}scal(&n2, <{{cython_type}}*> &scale, q, &inc) + + # Calculate the solution: u * q * v^H (results overwrite q) + # In the usual case, v = u + # In the complex step case, v = u.conj() + blas.{{prefix}}gemm("N", "C", &n, &n, &n, + &alpha, q, &n, + &v[0,0], &n, + &beta, &capI[0,0], &n) + blas.{{prefix}}gemm("N", "N", &n, &n, &n, + &alpha, &u[0,0], &n, + &capI[0,0], &n, + &beta, q, &n) + + +cpdef _{{prefix}}compute_coefficients_from_multivariate_pacf({{cython_type}} [::1,:] partial_autocorrelations, + {{cython_type}} [::1,:] error_variance, + int transform_variance, + int order, int k_endog): + """ + Notes + ----- + + This uses the ?trmm BLAS functions which are not available in + Scipy v0.11.0 + """ + # Constants + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + {{cython_type}} gamma = -1.0 + int k_endog2 = k_endog**2 + int k_endog_order = k_endog * order + int k_endog_order1 = k_endog * (order+1) + int info, s, k + # Local variables + cdef: + np.npy_intp dim2[2] + {{cython_type}} [::1, :] initial_variance + {{cython_type}} [::1, :] forward_variance + {{cython_type}} [::1, :] backward_variance + {{cython_type}} [::1, :] autocovariances + {{cython_type}} [::1, :] forwards1 + {{cython_type}} [::1, :] forwards2 + {{cython_type}} [::1, :] backwards1 + {{cython_type}} [::1, :] backwards2 + {{cython_type}} [::1, :] forward_factors + {{cython_type}} [::1, :] backward_factors + {{cython_type}} [::1, :] tmp + {{cython_type}} [::1, :] tmp2 + # Pointers + cdef: + {{cython_type}} * forwards + {{cython_type}} * prev_forwards + {{cython_type}} * backwards + {{cython_type}} * prev_backwards + # ?trmm + # cdef {{prefix}}trmm_t *{{prefix}}trmm = <{{prefix}}trmm_t*>Capsule_AsVoidPtr(blas.{{prefix}}trmm._cpointer) + + # dim2[0] = self.k_endog; dim2[1] = storage; + # self.forecast = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + # If we want to keep the provided variance but with the constrained + # coefficient matrices, we need to make a copy here, and then after the + # main loop we will transform the coefficients to match the passed variance + if not transform_variance: + initial_variance = np.asfortranarray(error_variance.copy()) + # Need to make the input variance large enough that the recursions + # don't lead to zero-matrices due to roundoff error, which would case + # exceptions from the Cholesky decompositions. + # Note that this will still not always ensure positive definiteness, + # and for k_endog, order large enough an exception may still be raised + error_variance = np.asfortranarray(np.eye(k_endog, dtype={{dtype}}) * (order + k_endog)**10) + + # Initialize matrices + dim2[0] = k_endog; dim2[1] = k_endog; + forward_variance = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + backward_variance = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + forward_factors = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + backward_factors = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + tmp = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + tmp2 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + dim2[0] = k_endog; dim2[1] = k_endog_order; + # \phi_{s,k}, s = 1, ..., p + # k = 1, ..., s+1 + forwards1 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + forwards2 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + # \phi_{s,k}^* + backwards1 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + backwards2 = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + dim2[0] = k_endog; dim2[1] = k_endog_order1; + autocovariances = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + blas.{{prefix}}copy(&k_endog2, &error_variance[0,0], &inc, &forward_variance[0,0], &inc) # \Sigma_s + blas.{{prefix}}copy(&k_endog2, &error_variance[0,0], &inc, &backward_variance[0,0], &inc) # \Sigma_s^*, s = 0, ..., p + blas.{{prefix}}copy(&k_endog2, &error_variance[0,0], &inc, &autocovariances[0,0], &inc) # \Gamma_s + + # error_variance_factor = linalg.cholesky(error_variance, lower=True) + blas.{{prefix}}copy(&k_endog2, &error_variance[0,0], &inc, &forward_factors[0,0], &inc) + lapack.{{prefix}}potrf("L", &k_endog, &forward_factors[0,0], &k_endog, &info) + blas.{{prefix}}copy(&k_endog2, &forward_factors[0,0], &inc, &backward_factors[0,0], &inc) + + # We fill in the entries as follows: + # [1,1] + # [2,2], [2,1] + # [3,3], [3,1], [3,2] + # ... + # [p,p], [p,1], ..., [p,p-1] + # the last row, correctly ordered, is then used as the coefficients + for s in range(order): # s = 0, ..., p-1 + if s % 2 == 0: + forwards = &forwards1[0, 0] + prev_forwards = &forwards2[0, 0] + backwards = &backwards1[0, 0] + prev_backwards = &backwards2[0, 0] + else: + forwards = &forwards2[0, 0] + prev_forwards = &forwards1[0, 0] + backwards = &backwards2[0, 0] + prev_backwards = &backwards1[0, 0] + + # Create the "last" (k = s+1) matrix + # Note: this is for k = s+1. However, below we then have to fill + # in for k = 1, ..., s in order. + # P L*^{-1} = x + # x L* = P + # L*' x' = P' + # forwards[:, s*k_endog:(s+1)*k_endog] = np.dot( + # forward_factors, + # linalg.solve_triangular( + # backward_factors, partial_autocorrelations[:, s*k_endog:(s+1)*k_endog].T, + # lower=True, trans='T').T + # ) + for k in range(k_endog): + blas.{{prefix}}copy(&k_endog, &partial_autocorrelations[k,s*k_endog], &k_endog, &tmp[0, k], &inc) + lapack.{{prefix}}trtrs("L", "T", "N", &k_endog, &k_endog, &backward_factors[0,0], &k_endog, + &tmp[0, 0], &k_endog, &info) + # {{prefix}}gemm("N", "T", &k_endog, &k_endog, &k_endog, + # &alpha, &forward_factors[0,0], &k_endog, + # &tmp[0, 0], &k_endog, + # &beta, &forwards[s*k_endog2], &k_endog) + blas.{{prefix}}trmm("R", "L", "T", "N", &k_endog, &k_endog, + &alpha, &forward_factors[0,0], &k_endog, + &tmp[0, 0], &k_endog) + for k in range(k_endog): + blas.{{prefix}}copy(&k_endog, &tmp[k,0], &k_endog, &forwards[s*k_endog2 + k*k_endog], &inc) + + # P' L^{-1} = x + # x L = P' + # L' x' = P + # backwards[:, s*k_endog:(s+1)*k_endog] = np.dot( + # backward_factors, + # linalg.solve_triangular( + # forward_factors, partial_autocorrelations[:, s*k_endog:(s+1)*k_endog], + # lower=True, trans='T').T + # ) + blas.{{prefix}}copy(&k_endog2, &partial_autocorrelations[0, s*k_endog], &inc, &tmp[0, 0], &inc) + lapack.{{prefix}}trtrs("L", "T", "N", &k_endog, &k_endog, &forward_factors[0, 0], &k_endog, + &tmp[0, 0], &k_endog, &info) + # {{prefix}}gemm("N", "T", &k_endog, &k_endog, &k_endog, + # &alpha, &backward_factors[0, 0], &k_endog, + # &tmp[0, 0], &k_endog, + # &beta, &backwards[s * k_endog2], &k_endog) + blas.{{prefix}}trmm("R", "L", "T", "N", &k_endog, &k_endog, + &alpha, &backward_factors[0,0], &k_endog, + &tmp[0, 0], &k_endog) + for k in range(k_endog): + blas.{{prefix}}copy(&k_endog, &tmp[k,0], &k_endog, &backwards[s*k_endog2 + k*k_endog], &inc) + + # Update the variance + # Note: if s >= 1, this will be further updated in the for loop + # below + # Also, this calculation will be re-used in the forward variance + # tmp = np.dot(forwards[:, s*k_endog:(s+1)*k_endog], backward_variance) + # tmpT = np.dot(backward_variance.T, forwards[:, s*k_endog:(s+1)*k_endog].T) + blas.{{prefix}}gemm("T", "T", &k_endog, &k_endog, &k_endog, + &alpha, &backward_variance[0, 0], &k_endog, + &forwards[s * k_endog2], &k_endog, + &beta, &tmp[0, 0], &k_endog) + # autocovariances[:, (s+1)*k_endog:(s+2)*k_endog] = tmp.copy().T + blas.{{prefix}}copy(&k_endog2, &tmp[0, 0], &inc, &autocovariances[0, (s+1)*k_endog], &inc) + + # Create the remaining k = 1, ..., s matrices, + # only has an effect if s >= 1 + for k in range(s): + # forwards[:, k*k_endog:(k+1)*k_endog] = ( + # prev_forwards[:, k*k_endog:(k+1)*k_endog] - + # np.dot( + # forwards[:, s*k_endog:(s+1)*k_endog], + # prev_backwards[:, (s-k-1)*k_endog:(s-k)*k_endog] + # ) + # ) + blas.{{prefix}}copy(&k_endog2, &prev_forwards[k * k_endog2], &inc, &forwards[k * k_endog2], &inc) + blas.{{prefix}}gemm("N", "N", &k_endog, &k_endog, &k_endog, + &gamma, &forwards[s * k_endog2], &k_endog, + &prev_backwards[(s - k - 1) * k_endog2], &k_endog, + &alpha, &forwards[k * k_endog2], &k_endog) + + # backwards[:, k*k_endog:(k+1)*k_endog] = ( + # prev_backwards[:, k*k_endog:(k+1)*k_endog] - + # np.dot( + # backwards[:, s*k_endog:(s+1)*k_endog], + # prev_forwards[:, (s-k-1)*k_endog:(s-k)*k_endog] + # ) + # ) + blas.{{prefix}}copy(&k_endog2, &prev_backwards[k * k_endog2], &inc, &backwards[k * k_endog2], &inc) + blas.{{prefix}}gemm("N", "N", &k_endog, &k_endog, &k_endog, + &gamma, &backwards[s * k_endog2], &k_endog, + &prev_forwards[(s - k - 1) * k_endog2], &k_endog, + &alpha, &backwards[k * k_endog2], &k_endog) + + # autocovariances[:, (s+1)*k_endog:(s+2)*k_endog] += np.dot( + # autocovariances[:, (k+1)*k_endog:(k+2)*k_endog], + # prev_forwards[:, (s-k-1)*k_endog:(s-k)*k_endog].T + # ) + blas.{{prefix}}gemm("N", "T", &k_endog, &k_endog, &k_endog, + &alpha, &autocovariances[0, (k+1)*k_endog], &k_endog, + &prev_forwards[(s - k - 1) * k_endog2], &k_endog, + &alpha, &autocovariances[0, (s+1)*k_endog], &k_endog) + + # Create forward and backwards variances + # backward_variance = ( + # backward_variance - + # np.dot( + # np.dot(backwards[:, s*k_endog:(s+1)*k_endog], forward_variance), + # backwards[:, s*k_endog:(s+1)*k_endog].T + # ) + # ) + blas.{{prefix}}gemm("N", "N", &k_endog, &k_endog, &k_endog, + &alpha, &backwards[s * k_endog2], &k_endog, + &forward_variance[0, 0], &k_endog, + &beta, &tmp2[0, 0], &k_endog) + blas.{{prefix}}gemm("N", "T", &k_endog, &k_endog, &k_endog, + &gamma, &tmp2[0, 0], &k_endog, + &backwards[s * k_endog2], &k_endog, + &alpha, &backward_variance[0, 0], &k_endog) + # forward_variance = ( + # forward_variance - + # np.dot(tmp, forwards[:, s*k_endog:(s+1)*k_endog].T) + # ) + # forward_variance = ( + # forward_variance - + # np.dot(tmpT.T, forwards[:, s*k_endog:(s+1)*k_endog].T) + # ) + blas.{{prefix}}gemm("T", "T", &k_endog, &k_endog, &k_endog, + &gamma, &tmp[0, 0], &k_endog, + &forwards[s * k_endog2], &k_endog, + &alpha, &forward_variance[0, 0], &k_endog) + + # Cholesky factors + # forward_factors = linalg.cholesky(forward_variance, lower=True) + # backward_factors = linalg.cholesky(backward_variance, lower=True) + blas.{{prefix}}copy(&k_endog2, &forward_variance[0,0], &inc, &forward_factors[0,0], &inc) + lapack.{{prefix}}potrf("L", &k_endog, &forward_factors[0,0], &k_endog, &info) + blas.{{prefix}}copy(&k_endog2, &backward_variance[0,0], &inc, &backward_factors[0,0], &inc) + lapack.{{prefix}}potrf("L", &k_endog, &backward_factors[0,0], &k_endog, &info) + + + # If we do not want to use the transformed variance, we need to + # adjust the constrained matrices, as presented in Lemma 2.3, see above + if not transform_variance: + if order % 2 == 0: + forwards = &forwards2[0,0] + else: + forwards = &forwards1[0,0] + + # Here, we need to construct T such that: + # variance = T * initial_variance * T' + # To do that, consider the Cholesky of variance (L) and + # input_variance (M) to get: + # L L' = T M M' T' = (TM) (TM)' + # => L = T M + # => L M^{-1} = T + # initial_variance_factor = np.linalg.cholesky(initial_variance) + # L' + lapack.{{prefix}}potrf("U", &k_endog, &initial_variance[0,0], &k_endog, &info) + # transformed_variance_factor = np.linalg.cholesky(variance) + # M' + blas.{{prefix}}copy(&k_endog2, &forward_variance[0,0], &inc, &tmp[0,0], &inc) + lapack.{{prefix}}potrf("U", &k_endog, &tmp[0,0], &k_endog, &info) + # {{prefix}}potri("L", &k_endog, &tmp[0,0], &k_endog, &info) + + # We need to zero out the lower triangle of L', because ?trtrs only + # knows that M' is upper triangular + for s in range(k_endog - 1): # column + for k in range(s+1, k_endog): # row + initial_variance[k, s] = 0 + + # Note that T is lower triangular + # L M^{-1} = T + # M' T' = L' + # transform = np.dot(initial_variance_factor, + # np.linalg.inv(transformed_variance_factor)) + lapack.{{prefix}}trtrs("U", "N", "N", &k_endog, &k_endog, &tmp[0,0], &k_endog, + &initial_variance[0, 0], &k_endog, &info) + # Now: + # initial_variance = T' + + for s in range(order): + # forwards[:, s*k_endog:(s+1)*k_endog] = ( + # np.dot( + # np.dot(transform, forwards[:, s*k_endog:(s+1)*k_endog]), + # inv_transform + # ) + # ) + # TF T^{-1} = x + # TF = x T + # (TF)' = T' x' + + # Get TF + blas.{{prefix}}copy(&k_endog2, &forwards[s * k_endog2], &inc, &tmp2[0,0], &inc) + blas.{{prefix}}trmm("L", "U", "T", "N", &k_endog, &k_endog, + &alpha, &initial_variance[0, 0], &k_endog, + &tmp2[0, 0], &k_endog) + for k in range(k_endog): + blas.{{prefix}}copy(&k_endog, &tmp2[k,0], &k_endog, &tmp[0, k], &inc) + # Get x' + lapack.{{prefix}}trtrs("U", "N", "N", &k_endog, &k_endog, &initial_variance[0,0], &k_endog, + &tmp[0, 0], &k_endog, &info) + # Get x + for k in range(k_endog): + blas.{{prefix}}copy(&k_endog, &tmp[k,0], &k_endog, &forwards[s * k_endog2 + k*k_endog], &inc) + + + if order % 2 == 0: + return forwards2, forward_variance + else: + return forwards1, forward_variance + +cpdef _{{prefix}}constrain_sv_less_than_one({{cython_type}} [::1,:] unconstrained, int order, int k_endog): + """ + Transform arbitrary matrices to matrices with singular values less than + one. + + Corresponds to Lemma 2.2 in Ansley and Kohn (1986). See + `constrain_stationary_multivariate` for more details. + """ + # Constants + cdef: + int inc = 1 + {{cython_type}} alpha = 1.0 + int k_endog2 = k_endog**2 + int info, i + # Local variables + cdef: + np.npy_intp dim2[2] + {{cython_type}} [::1, :] constrained + {{cython_type}} [::1, :] tmp + {{cython_type}} [::1, :] eye + + dim2[0] = k_endog; dim2[1] = k_endog * order; + constrained = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + dim2[0] = k_endog; dim2[1] = k_endog; + tmp = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + eye = np.PyArray_ZEROS(2, dim2, {{typenum}}, FORTRAN) + + eye = np.asfortranarray(np.eye(k_endog, dtype={{dtype}})) + for i in range(order): + blas.{{prefix}}copy(&k_endog2, &eye[0, 0], &inc, &tmp[0, 0], &inc) + blas.{{prefix}}gemm("N", "T", &k_endog, &k_endog, &k_endog, + &alpha, &unconstrained[0, i*k_endog], &k_endog, + &unconstrained[0, i*k_endog], &k_endog, + &alpha, &tmp[0, 0], &k_endog) + lapack.{{prefix}}potrf("L", &k_endog, &tmp[0, 0], &k_endog, &info) + + blas.{{prefix}}copy(&k_endog2, &unconstrained[0, i*k_endog], &inc, &constrained[0, i*k_endog], &inc) + # constrained.append(linalg.solve_triangular(B, A, lower=lower)) + lapack.{{prefix}}trtrs("L", "N", "N", &k_endog, &k_endog, &tmp[0, 0], &k_endog, + &constrained[0, i*k_endog], &k_endog, &info) + return constrained + +cdef int _{{prefix}}ldl({{cython_type}} * A, int n) except *: + # See Golub and Van Loan, Algorithm 4.1.2 + cdef: + int info = 0 + int j, i, k + cdef np.npy_intp dim[1] + np.float64_t tol = 1e-15 + {{cython_type}} [:] v + + dim[0] = n + v = np.PyArray_ZEROS(1, dim, {{typenum}}, FORTRAN) + + for j in range(n): + # Compute v(1:j) + v[j] = A[j + j*n] + + # Positive definite element: use Golub and Van Loan algorithm + if v[j].real < -tol: + info = -j + break + elif v[j].real > tol: + for i in range(j): + v[i] = A[j + i*n] * A[i + i*n] + v[j] = v[j] - A[j + i*n] * v[i] + + # Store d(j) and compute L(j+1:n,j) + A[j + j*n] = v[j] + for i in range(j+1, n): + for k in range(j): + A[i + j*n] = A[i + j*n] - A[i + k*n] * v[k] + A[i + j*n] = A[i + j*n] / v[j] + # Positive semi-definite element: zero the appropriate column + else: + info = 1 + for i in range(j, n): + A[i + j*n] + + return info + +cpdef int {{prefix}}ldl({{cython_type}} [::1, :] A) except *: + _{{prefix}}ldl(&A[0,0], A.shape[0]) + +cdef int _{{prefix}}reorder_missing_diagonal({{cython_type}} * a, int * missing, int n): + """ + a is a pointer to an n x n diagonal array A + missing is a pointer to an n x 1 array + n is the dimension of A + """ + cdef int i, j, k, nobs + + nobs = n + # Construct the non-missing index + for i in range(n): + nobs = nobs - missing[i] + + # Perform replacement + k = nobs-1 + for i in range(n-1,-1,-1): + if not missing[i]: + a[i + i*n] = a[k + k*n] + k = k - 1 + else: + a[i + i*n] = 0 + +cdef int _{{prefix}}reorder_missing_submatrix({{cython_type}} * a, int * missing, int n): + """ + a is a pointer to an n x n array A + missing is a pointer to an n x 1 array + n is the dimension of A + """ + cdef int i, j, k, nobs + + _{{prefix}}reorder_missing_rows(a, missing, n, n) + _{{prefix}}reorder_missing_cols(a, missing, n, n) + +cdef int _{{prefix}}reorder_missing_rows({{cython_type}} * a, int * missing, int n, int m): + """ + a is a pointer to an n x m array A + missing is a pointer to an n x 1 array + n is the number of rows of A + m is the number of columns of A + """ + cdef int i, j, k, nobs + + nobs = n + # Construct the non-missing index + for i in range(n): + nobs = nobs - missing[i] + + # Perform replacement + k = nobs-1 + for i in range(n-1,-1,-1): + if not missing[i]: + blas.{{prefix}}swap(&m, &a[i], &n, &a[k], &n) + k = k - 1 + + +cdef int _{{prefix}}reorder_missing_cols({{cython_type}} * a, int * missing, int n, int m): + """ + a is a pointer to an n x m array A + missing is a pointer to an m x 1 array + n is the number of rows of A + m is the number of columns of A + """ + cdef int i, j, k, nobs, inc = 1 + + nobs = m + # Construct the non-missing index + for i in range(m): + nobs = nobs - missing[i] + + # Perform replacement + k = nobs-1 + for i in range(m-1,-1,-1): + if not missing[i]: + blas.{{prefix}}swap(&n, &a[i*n], &inc, &a[k*n], &inc) + k = k - 1 + +cpdef int {{prefix}}reorder_missing_matrix({{cython_type}} [::1, :, :] A, int [::1, :] missing, int reorder_rows, int reorder_cols, int diagonal) except *: + cdef int n, m, T, t + + n, m, T = A.shape[0:3] + + if reorder_rows and reorder_cols: + if not n == m: + raise RuntimeError('Reordering a submatrix requires n = m') + if diagonal: + for t in range(T): + _{{prefix}}reorder_missing_diagonal(&A[0, 0, t], &missing[0, t], n) + else: + for t in range(T): + _{{prefix}}reorder_missing_submatrix(&A[0, 0, t], &missing[0, t], n) + elif diagonal: + raise RuntimeError('`diagonal` argument only valid with reordering a submatrix') + elif reorder_rows: + for t in range(T): + _{{prefix}}reorder_missing_rows(&A[0, 0, t], &missing[0, t], n, m) + elif reorder_cols: + for t in range(T): + _{{prefix}}reorder_missing_cols(&A[0, 0, t], &missing[0, t], n, m) + + +cpdef int {{prefix}}reorder_missing_vector({{cython_type}} [::1, :] A, int [::1, :] missing) except *: + cdef int i, k, t, n, T, nobs + + n, T = A.shape[0:2] + + for t in range(T): + _{{prefix}}reorder_missing_rows(&A[0, t], &missing[0, t], n, 1) + + +cdef int _{{prefix}}copy_missing_diagonal({{cython_type}} * a, {{cython_type}} * b, int * missing, int n): + """ + Copy the non-missing block of diagonal entries + + a is a pointer to an n x n diagonal array A (copy from) + b is a pointer to an n x n diagonal array B (copy to) + missing is a pointer to an n x 1 array + n is the dimension of A, B + """ + cdef int i, j, k, nobs + + nobs = n + # Construct the non-missing index + for i in range(n): + nobs = nobs - missing[i] + + # Perform replacement + k = nobs-1 + for i in range(nobs): + b[i + i*n] = a[i + i*n] + + +cdef int _{{prefix}}copy_missing_submatrix({{cython_type}} * a, {{cython_type}} * b, int * missing, int n): + """ + Copy the non-missing submatrix + + a is a pointer to an n x n diagonal array A (copy from) + b is a pointer to an n x n diagonal array B (copy to) + missing is a pointer to an n x 1 array + n is the dimension of A, B + """ + cdef int i, j, k, nobs, inc = 1 + + nobs = n + # Construct the non-missing index + for i in range(n): + nobs = nobs - missing[i] + + # Perform replacement + for i in range(nobs): + blas.{{prefix}}copy(&nobs, &a[i*n], &inc, &b[i*n], &inc) + + +cdef int _{{prefix}}copy_missing_rows({{cython_type}} * a, {{cython_type}} * b, int * missing, int n, int m): + """ + a is a pointer to an n x m array A + b is a pointer to an n x n diagonal array B (copy to) + missing is a pointer to an n x 1 array + n is the number of rows of A + m is the number of columns of A + """ + cdef int i, j, k, nobs + + nobs = n + # Construct the non-missing index + for i in range(n): + nobs = nobs - missing[i] + + # Perform replacement + for i in range(nobs): + blas.{{prefix}}copy(&m, &a[i], &n, &b[i], &n) + + +cdef int _{{prefix}}copy_missing_cols({{cython_type}} * a, {{cython_type}} * b, int * missing, int n, int m): + """ + a is a pointer to an n x m array A + b is a pointer to an n x n diagonal array B (copy to) + missing is a pointer to an m x 1 array + n is the number of rows of A + m is the number of columns of A + """ + cdef int i, j, k, nobs, inc = 1 + + nobs = m + # Construct the non-missing index + for i in range(m): + nobs = nobs - missing[i] + + # Perform replacement + for i in range(nobs): + blas.{{prefix}}copy(&n, &a[i*n], &inc, &b[i*n], &inc) + + +cpdef int {{prefix}}copy_missing_matrix({{cython_type}} [::1, :, :] A, {{cython_type}} [::1, :, :] B, int [::1, :] missing, int missing_rows, int missing_cols, int diagonal) except *: + cdef int n, m, T, t, A_T, A_t = 0, time_varying + + n, m, T = B.shape[0:3] + A_T = A.shape[2] + time_varying = (A_T == T) + + if missing_rows and missing_cols: + if not n == m: + raise RuntimeError('Copying a submatrix requires n = m') + if diagonal: + for t in range(T): + if time_varying: + A_t = t + _{{prefix}}copy_missing_diagonal(&A[0, 0, A_t], &B[0, 0, t], &missing[0, t], n) + else: + for t in range(T): + if time_varying: + A_t = t + _{{prefix}}copy_missing_submatrix(&A[0, 0, A_t], &B[0, 0, t], &missing[0, t], n) + elif diagonal: + raise RuntimeError('`diagonal` argument only valid with copying a submatrix') + elif missing_rows: + for t in range(T): + if time_varying: + A_t = t + _{{prefix}}copy_missing_rows(&A[0, 0, A_t], &B[0, 0, t], &missing[0, t], n, m) + elif missing_cols: + for t in range(T): + if time_varying: + A_t = t + _{{prefix}}copy_missing_cols(&A[0, 0, A_t], &B[0, 0, t], &missing[0, t], n, m) + pass + + +cpdef int {{prefix}}copy_missing_vector({{cython_type}} [::1, :] A, {{cython_type}} [::1, :] B, int [::1, :] missing) except *: + cdef int n, t, T, A_t = 0, A_T + + n, T = B.shape[0:2] + A_T = A.shape[1] + time_varying = (A_T == T) + + for t in range(T): + if time_varying: + A_t = t + _{{prefix}}copy_missing_rows(&A[0, A_t], &B[0, t], &missing[0, t], n, 1) + +cdef int _{{prefix}}copy_index_diagonal({{cython_type}} * a, {{cython_type}} * b, int * index, int n): + """ + Copy the non-index block of diagonal entries + + a is a pointer to an n x n diagonal array A (copy from) + b is a pointer to an n x n diagonal array B (copy to) + index is a pointer to an n x 1 array + n is the dimension of A, B + """ + cdef int i, j, k, nobs + + # Perform replacement + for i in range(n): + if index[i]: + b[i + i*n] = a[i + i*n] + + +cdef int _{{prefix}}copy_index_submatrix({{cython_type}} * a, {{cython_type}} * b, int * index, int n): + """ + Copy the non-index submatrix + + a is a pointer to an n x n diagonal array A (copy from) + b is a pointer to an n x n diagonal array B (copy to) + index is a pointer to an n x 1 array + n is the dimension of A, B + """ + cdef int i, j, k, nobs, inc = 1 + + _{{prefix}}copy_index_rows(a, b, index, n, n) + _{{prefix}}copy_index_cols(a, b, index, n, n) + + +cdef int _{{prefix}}copy_index_rows({{cython_type}} * a, {{cython_type}} * b, int * index, int n, int m): + """ + a is a pointer to an n x m array A + b is a pointer to an n x n diagonal array B (copy to) + index is a pointer to an n x 1 array + n is the number of rows of A + m is the number of columns of A + """ + cdef int i, j, k, nobs + + # Perform replacement + for i in range(n): + if index[i]: + blas.{{prefix}}copy(&m, &a[i], &n, &b[i], &n) + + +cdef int _{{prefix}}copy_index_cols({{cython_type}} * a, {{cython_type}} * b, int * index, int n, int m): + """ + a is a pointer to an n x m array A + b is a pointer to an n x n diagonal array B (copy to) + index is a pointer to an m x 1 array + n is the number of rows of A + m is the number of columns of A + """ + cdef int i, j, k, nobs, inc = 1 + + # Perform replacement + for i in range(m): + if index[i]: + blas.{{prefix}}copy(&n, &a[i*n], &inc, &b[i*n], &inc) + + +cpdef int {{prefix}}copy_index_matrix({{cython_type}} [::1, :, :] A, {{cython_type}} [::1, :, :] B, int [::1, :] index, int index_rows, int index_cols, int diagonal) except *: + cdef int n, m, T, t, A_T, A_t = 0, time_varying + + n, m, T = B.shape[0:3] + A_T = A.shape[2] + time_varying = (A_T == T) + + if index_rows and index_cols: + if not n == m: + raise RuntimeError('Copying a submatrix requires n = m') + if diagonal: + for t in range(T): + if time_varying: + A_t = t + _{{prefix}}copy_index_diagonal(&A[0, 0, A_t], &B[0, 0, t], &index[0, t], n) + else: + for t in range(T): + if time_varying: + A_t = t + _{{prefix}}copy_index_submatrix(&A[0, 0, A_t], &B[0, 0, t], &index[0, t], n) + elif diagonal: + raise RuntimeError('`diagonal` argument only valid with copying a submatrix') + elif index_rows: + for t in range(T): + if time_varying: + A_t = t + _{{prefix}}copy_index_rows(&A[0, 0, A_t], &B[0, 0, t], &index[0, t], n, m) + elif index_cols: + for t in range(T): + if time_varying: + A_t = t + _{{prefix}}copy_index_cols(&A[0, 0, A_t], &B[0, 0, t], &index[0, t], n, m) + + +cpdef int {{prefix}}copy_index_vector({{cython_type}} [::1, :] A, {{cython_type}} [::1, :] B, int [::1, :] index) except *: + cdef int n, t, T, A_t = 0, A_T + + n, T = B.shape[0:2] + A_T = A.shape[1] + time_varying = (A_T == T) + + for t in range(T): + if time_varying: + A_t = t + _{{prefix}}copy_index_rows(&A[0, A_t], &B[0, t], &index[0, t], n, 1) + +cdef int _{{prefix}}select_cov(int k_states, int k_posdef, int k_states_total, + {{cython_type}} * tmp, + {{cython_type}} * selection, + {{cython_type}} * cov, + {{cython_type}} * selected_cov): + cdef: + int i, k_states2 = k_states**2 + {{cython_type}} alpha = 1.0 + {{cython_type}} beta = 0.0 + + # Only need to do something if there is a covariance matrix + # (i.e k_posdof == 0) + if k_posdef > 0: + + # #### Calculate selected state covariance matrix + # $Q_t^* = R_t Q_t R_t'$ + # + # Combine a selection matrix and a covariance matrix to get + # a simplified (but possibly singular) "selected" covariance + # matrix (see e.g. Durbin and Koopman p. 43) + + # `tmp0` array used here, dimension $(m \times r)$ + + # $\\#_0 = 1.0 * R_t Q_t$ + # $(m \times r) = (m \times r) (r \times r)$ + blas.{{prefix}}gemm("N", "N", &k_states, &k_posdef, &k_posdef, + &alpha, selection, &k_states_total, + cov, &k_posdef, + &beta, tmp, &k_states) + # $Q_t^* = 1.0 * \\#_0 R_t'$ + # $(m \times m) = (m \times r) (m \times r)'$ + blas.{{prefix}}gemm("N", "T", &k_states, &k_states, &k_posdef, + &alpha, tmp, &k_states, + selection, &k_states_total, + &beta, selected_cov, &k_states) + else: + for i in range(k_states2): + selected_cov[i] = 0 + +{{endfor}} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/api.py b/statsmodels/tsa/statespace/api.py new file mode 100644 index 0000000..e393d5f --- /dev/null +++ b/statsmodels/tsa/statespace/api.py @@ -0,0 +1,5 @@ +__all__ = ["SARIMAX", "MLEModel", "MLEResults", "tools", "Initialization"] +from .sarimax import SARIMAX +from .mlemodel import MLEModel, MLEResults +from .initialization import Initialization +from . import tools diff --git a/statsmodels/tsa/statespace/dynamic_factor.py b/statsmodels/tsa/statespace/dynamic_factor.py new file mode 100644 index 0000000..67982a5 --- /dev/null +++ b/statsmodels/tsa/statespace/dynamic_factor.py @@ -0,0 +1,1362 @@ +# -*- coding: utf-8 -*- +""" +Dynamic factor model + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +from warnings import warn +from collections import OrderedDict + +import numpy as np +from .mlemodel import MLEModel, MLEResults, MLEResultsWrapper +from .tools import ( + is_invertible, prepare_exog, + constrain_stationary_univariate, unconstrain_stationary_univariate, + constrain_stationary_multivariate, unconstrain_stationary_multivariate +) +from statsmodels.multivariate.pca import PCA +from statsmodels.regression.linear_model import OLS +from statsmodels.tsa.vector_ar.var_model import VAR +from statsmodels.tools.tools import Bunch +from statsmodels.tools.data import _is_using_pandas +from statsmodels.tsa.tsatools import lagmat +from statsmodels.tools.decorators import cache_readonly +from statsmodels.tools.sm_exceptions import ValueWarning +import statsmodels.base.wrapper as wrap + + +class DynamicFactor(MLEModel): + r""" + Dynamic factor model + + Parameters + ---------- + endog : array_like + The observed time-series process :math:`y` + exog : array_like, optional + Array of exogenous regressors for the observation equation, shaped + nobs x k_exog. + k_factors : int + The number of unobserved factors. + factor_order : int + The order of the vector autoregression followed by the factors. + error_cov_type : {'scalar', 'diagonal', 'unstructured'}, optional + The structure of the covariance matrix of the observation error term, + where "unstructured" puts no restrictions on the matrix, "diagonal" + requires it to be any diagonal matrix (uncorrelated errors), and + "scalar" requires it to be a scalar times the identity matrix. Default + is "diagonal". + error_order : int, optional + The order of the vector autoregression followed by the observation + error component. Default is None, corresponding to white noise errors. + error_var : boolean, optional + Whether or not to model the errors jointly via a vector autoregression, + rather than as individual autoregressions. Has no effect unless + `error_order` is set. Default is False. + enforce_stationarity : boolean, optional + Whether or not to transform the AR parameters to enforce stationarity + in the autoregressive component of the model. Default is True. + **kwargs + Keyword arguments may be used to provide default values for state space + matrices or for Kalman filtering options. See `Representation`, and + `KalmanFilter` for more details. + + Attributes + ---------- + exog : array_like, optional + Array of exogenous regressors for the observation equation, shaped + nobs x k_exog. + k_factors : int + The number of unobserved factors. + factor_order : int + The order of the vector autoregression followed by the factors. + error_cov_type : {'diagonal', 'unstructured'} + The structure of the covariance matrix of the error term, where + "unstructured" puts no restrictions on the matrix and "diagonal" + requires it to be a diagonal matrix (uncorrelated errors). + error_order : int + The order of the vector autoregression followed by the observation + error component. + error_var : boolean + Whether or not to model the errors jointly via a vector autoregression, + rather than as individual autoregressions. Has no effect unless + `error_order` is set. + enforce_stationarity : boolean, optional + Whether or not to transform the AR parameters to enforce stationarity + in the autoregressive component of the model. Default is True. + + Notes + ----- + The dynamic factor model considered here is in the so-called static form, + and is specified: + + .. math:: + + y_t & = \Lambda f_t + B x_t + u_t \\ + f_t & = A_1 f_{t-1} + \dots + A_p f_{t-p} + \eta_t \\ + u_t & = C_1 u_{t-1} + \dots + C_1 f_{t-q} + \varepsilon_t + + where there are `k_endog` observed series and `k_factors` unobserved + factors. Thus :math:`y_t` is a `k_endog` x 1 vector and :math:`f_t` is a + `k_factors` x 1 vector. + + :math:`x_t` are optional exogenous vectors, shaped `k_exog` x 1. + + :math:`\eta_t` and :math:`\varepsilon_t` are white noise error terms. In + order to identify the factors, :math:`Var(\eta_t) = I`. Denote + :math:`Var(\varepsilon_t) \equiv \Sigma`. + + Options related to the unobserved factors: + + - `k_factors`: this is the dimension of the vector :math:`f_t`, above. + To exclude factors completely, set `k_factors = 0`. + - `factor_order`: this is the number of lags to include in the factor + evolution equation, and corresponds to :math:`p`, above. To have static + factors, set `factor_order = 0`. + + Options related to the observation error term :math:`u_t`: + + - `error_order`: the number of lags to include in the error evolution + equation; corresponds to :math:`q`, above. To have white noise errors, + set `error_order = 0` (this is the default). + - `error_cov_type`: this controls the form of the covariance matrix + :math:`\Sigma`. If it is "dscalar", then :math:`\Sigma = \sigma^2 I`. If + it is "diagonal", then + :math:`\Sigma = \text{diag}(\sigma_1^2, \dots, \sigma_n^2)`. If it is + "unstructured", then :math:`\Sigma` is any valid variance / covariance + matrix (i.e. symmetric and positive definite). + - `error_var`: this controls whether or not the errors evolve jointly + according to a VAR(q), or individually according to separate AR(q) + processes. In terms of the formulation above, if `error_var = False`, + then the matrices :math:C_i` are diagonal, otherwise they are general + VAR matrices. + + References + ---------- + .. [*] Lütkepohl, Helmut. 2007. + New Introduction to Multiple Time Series Analysis. + Berlin: Springer. + + """ + + def __init__(self, endog, k_factors, factor_order, exog=None, + error_order=0, error_var=False, error_cov_type='diagonal', + enforce_stationarity=True, **kwargs): + + # Model properties + self.enforce_stationarity = enforce_stationarity + + # Factor-related properties + self.k_factors = k_factors + self.factor_order = factor_order + + # Error-related properties + self.error_order = error_order + self.error_var = error_var and error_order > 0 + self.error_cov_type = error_cov_type + + # Exogenous data + (self.k_exog, exog) = prepare_exog(exog) + + # Note: at some point in the future might add state regression, as in + # SARIMAX. + self.mle_regression = self.k_exog > 0 + + # We need to have an array or pandas at this point + if not _is_using_pandas(endog, None): + endog = np.asanyarray(endog, order='C') + + # Save some useful model orders, internally used + k_endog = endog.shape[1] if endog.ndim > 1 else 1 + self._factor_order = max(1, self.factor_order) * self.k_factors + self._error_order = self.error_order * k_endog + + # Calculate the number of states + k_states = self._factor_order + k_posdef = self.k_factors + if self.error_order > 0: + k_states += self._error_order + k_posdef += k_endog + + if k_states == 0: + k_states = 1 + k_posdef = 1 + + # Test for non-multivariate endog + if k_endog < 2: + raise ValueError('The dynamic factors model is only valid for' + ' multivariate time series.') + + # Test for too many factors + if self.k_factors >= k_endog: + raise ValueError('Number of factors must be less than the number' + ' of endogenous variables.') + + # Test for invalid error_cov_type + if self.error_cov_type not in ['scalar', 'diagonal', 'unstructured']: + raise ValueError('Invalid error covariance matrix type' + ' specification.') + + # By default, initialize as stationary + kwargs.setdefault('initialization', 'stationary') + + # Initialize the state space model + super(DynamicFactor, self).__init__( + endog, exog=exog, k_states=k_states, k_posdef=k_posdef, **kwargs + ) + + # Set as time-varying model if we have exog + if self.k_exog > 0: + self.ssm._time_invariant = False + + # Initialize the components + self.parameters = OrderedDict() + self._initialize_loadings() + self._initialize_exog() + self._initialize_error_cov() + self._initialize_factor_transition() + self._initialize_error_transition() + self.k_params = sum(self.parameters.values()) + + # Cache parameter vector slices + def _slice(key, offset): + length = self.parameters[key] + param_slice = np.s_[offset:offset + length] + offset += length + return param_slice, offset + + offset = 0 + self._params_loadings, offset = _slice('factor_loadings', offset) + self._params_exog, offset = _slice('exog', offset) + self._params_error_cov, offset = _slice('error_cov', offset) + self._params_factor_transition, offset = ( + _slice('factor_transition', offset)) + self._params_error_transition, offset = ( + _slice('error_transition', offset)) + + def _initialize_loadings(self): + # Initialize the parameters + self.parameters['factor_loadings'] = self.k_endog * self.k_factors + + # Setup fixed components of state space matrices + if self.error_order > 0: + start = self._factor_order + end = self._factor_order + self.k_endog + self.ssm['design', :, start:end] = np.eye(self.k_endog) + + # Setup indices of state space matrices + self._idx_loadings = np.s_['design', :, :self.k_factors] + + def _initialize_exog(self): + # Initialize the parameters + self.parameters['exog'] = self.k_exog * self.k_endog + + # If we have exog effects, then the obs intercept needs to be + # time-varying + if self.k_exog > 0: + self.ssm['obs_intercept'] = np.zeros((self.k_endog, self.nobs)) + + # Setup indices of state space matrices + self._idx_exog = np.s_['obs_intercept', :self.k_endog, :] + + def _initialize_error_cov(self): + if self.error_cov_type == 'scalar': + self._initialize_error_cov_diagonal(scalar=True) + elif self.error_cov_type == 'diagonal': + self._initialize_error_cov_diagonal(scalar=False) + elif self.error_cov_type == 'unstructured': + self._initialize_error_cov_unstructured() + + def _initialize_error_cov_diagonal(self, scalar=False): + # Initialize the parameters + self.parameters['error_cov'] = 1 if scalar else self.k_endog + + # Setup fixed components of state space matrices + + # Setup indices of state space matrices + k_endog = self.k_endog + k_factors = self.k_factors + idx = np.diag_indices(k_endog) + if self.error_order > 0: + matrix = 'state_cov' + idx = (idx[0] + k_factors, idx[1] + k_factors) + else: + matrix = 'obs_cov' + self._idx_error_cov = (matrix,) + idx + + def _initialize_error_cov_unstructured(self): + # Initialize the parameters + k_endog = self.k_endog + self.parameters['error_cov'] = int(k_endog * (k_endog + 1) / 2) + + # Setup fixed components of state space matrices + + # Setup indices of state space matrices + self._idx_lower_error_cov = np.tril_indices(self.k_endog) + if self.error_order > 0: + start = self.k_factors + end = self.k_factors + self.k_endog + self._idx_error_cov = ( + np.s_['state_cov', start:end, start:end]) + else: + self._idx_error_cov = np.s_['obs_cov', :, :] + + def _initialize_factor_transition(self): + order = self.factor_order * self.k_factors + k_factors = self.k_factors + + # Initialize the parameters + self.parameters['factor_transition'] = ( + self.factor_order * self.k_factors**2) + + # Setup fixed components of state space matrices + # VAR(p) for factor transition + if self.k_factors > 0: + if self.factor_order > 0: + self.ssm['transition', k_factors:order, :order - k_factors] = ( + np.eye(order - k_factors)) + + self.ssm['selection', :k_factors, :k_factors] = np.eye(k_factors) + # Identification requires constraining the state covariance to an + # identity matrix + self.ssm['state_cov', :k_factors, :k_factors] = np.eye(k_factors) + + # Setup indices of state space matrices + self._idx_factor_transition = np.s_['transition', :k_factors, :order] + + def _initialize_error_transition(self): + # Initialize the appropriate situation + if self.error_order == 0: + self._initialize_error_transition_white_noise() + else: + # Generic setup fixed components of state space matrices + # VAR(q) for error transition + # (in the individual AR case, we still have the VAR(q) companion + # matrix structure, but force the coefficient matrices to be + # diagonal) + k_endog = self.k_endog + k_factors = self.k_factors + _factor_order = self._factor_order + _error_order = self._error_order + _slice = np.s_['selection', + _factor_order:_factor_order + k_endog, + k_factors:k_factors + k_endog] + self.ssm[_slice] = np.eye(k_endog) + _slice = np.s_[ + 'transition', + _factor_order + k_endog:_factor_order + _error_order, + _factor_order:_factor_order + _error_order - k_endog] + self.ssm[_slice] = np.eye(_error_order - k_endog) + + # Now specialized setups + if self.error_var: + self._initialize_error_transition_var() + else: + self._initialize_error_transition_individual() + + def _initialize_error_transition_white_noise(self): + # Initialize the parameters + self.parameters['error_transition'] = 0 + + # No fixed components of state space matrices + + # Setup indices of state space matrices (just an empty slice) + self._idx_error_transition = np.s_['transition', 0:0, 0:0] + + def _initialize_error_transition_var(self): + k_endog = self.k_endog + _factor_order = self._factor_order + _error_order = self._error_order + + # Initialize the parameters + self.parameters['error_transition'] = _error_order * k_endog + + # Fixed components already setup above + + # Setup indices of state space matrices + # Here we want to set all of the elements of the coefficient matrices, + # the same as in a VAR specification + self._idx_error_transition = np.s_[ + 'transition', + _factor_order:_factor_order + k_endog, + _factor_order:_factor_order + _error_order] + + def _initialize_error_transition_individual(self): + k_endog = self.k_endog + _error_order = self._error_order + + # Initialize the parameters + self.parameters['error_transition'] = _error_order + + # Fixed components already setup above + + # Setup indices of state space matrices + # Here we want to set only the diagonal elements of the coefficient + # matrices, and we want to set them in order by equation, not by + # matrix (i.e. set the first element of the first matrix's diagonal, + # then set the first element of the second matrix's diagonal, then...) + + # The basic setup is a tiled list of diagonal indices, one for each + # coefficient matrix + idx = np.tile(np.diag_indices(k_endog), self.error_order) + # Now we need to shift the rows down to the correct location + row_shift = self._factor_order + # And we need to shift the columns in an increasing way + col_inc = self._factor_order + np.repeat( + [i * k_endog for i in range(self.error_order)], k_endog) + idx[0] += row_shift + idx[1] += col_inc + + # Make a copy (without the row shift) so that we can easily get the + # diagonal parameters back out of a generic coefficients matrix array + idx_diag = idx.copy() + idx_diag[0] -= row_shift + idx_diag[1] -= self._factor_order + idx_diag = idx_diag[:, np.lexsort((idx_diag[1], idx_diag[0]))] + self._idx_error_diag = (idx_diag[0], idx_diag[1]) + + # Finally, we want to fill the entries in in the correct order, which + # is to say we want to fill in lexicographically, first by row then by + # column + idx = idx[:, np.lexsort((idx[1], idx[0]))] + self._idx_error_transition = np.s_['transition', idx[0], idx[1]] + + @property + def _res_classes(self): + return {'fit': (DynamicFactorResults, DynamicFactorResultsWrapper)} + + @property + def start_params(self): + params = np.zeros(self.k_params, dtype=np.float64) + + endog = self.endog.copy() + + # 1. Factor loadings (estimated via PCA) + if self.k_factors > 0: + # Use principal components + OLS as starting values + res_pca = PCA(endog, ncomp=self.k_factors) + mod_ols = OLS(endog, res_pca.factors) + res_ols = mod_ols.fit() + + # Using OLS params for the loadings tends to gives higher starting + # log-likelihood. + params[self._params_loadings] = res_ols.params.T.ravel() + # params[self._params_loadings] = res_pca.loadings.ravel() + + # However, using res_ols.resid tends to causes non-invertible + # starting VAR coefficients for error VARs + # endog = res_ols.resid + endog = endog - np.dot(res_pca.factors, res_pca.loadings.T) + + # 2. Exog (OLS on residuals) + if self.k_exog > 0: + mod_ols = OLS(endog, exog=self.exog) + res_ols = mod_ols.fit() + # In the form: beta.x1.y1, beta.x2.y1, beta.x1.y2, ... + params[self._params_exog] = res_ols.params.T.ravel() + endog = res_ols.resid + + # 3. Factors (VAR on res_pca.factors) + stationary = True + if self.k_factors > 1 and self.factor_order > 0: + # 3a. VAR transition (OLS on factors estimated via PCA) + mod_factors = VAR(res_pca.factors) + res_factors = mod_factors.fit(maxlags=self.factor_order, ic=None, + trend='nc') + # Save the parameters + params[self._params_factor_transition] = ( + res_factors.params.T.ravel()) + + # Test for stationarity + coefficient_matrices = ( + params[self._params_factor_transition].reshape( + self.k_factors * self.factor_order, self.k_factors + ).T + ).reshape(self.k_factors, self.k_factors, self.factor_order).T + + stationary = is_invertible([1] + list(-coefficient_matrices)) + elif self.k_factors > 0 and self.factor_order > 0: + # 3b. AR transition + Y = res_pca.factors[self.factor_order:] + X = lagmat(res_pca.factors, self.factor_order, trim='both') + params_ar = np.linalg.pinv(X).dot(Y) + stationary = is_invertible(np.r_[1, -params_ar.squeeze()]) + params[self._params_factor_transition] = params_ar[:, 0] + + # Check for stationarity + if not stationary and self.enforce_stationarity: + raise ValueError('Non-stationary starting autoregressive' + ' parameters found with `enforce_stationarity`' + ' set to True.') + + # 4. Errors + if self.error_order == 0: + if self.error_cov_type == 'scalar': + params[self._params_error_cov] = endog.var(axis=0).mean() + elif self.error_cov_type == 'diagonal': + params[self._params_error_cov] = endog.var(axis=0) + elif self.error_cov_type == 'unstructured': + cov_factor = np.diag(endog.std(axis=0)) + params[self._params_error_cov] = ( + cov_factor[self._idx_lower_error_cov].ravel()) + else: + mod_errors = VAR(endog) + res_errors = mod_errors.fit(maxlags=self.error_order, ic=None, + trend='nc') + + # Test for stationarity + coefficient_matrices = ( + np.array(res_errors.params.T).ravel().reshape( + self.k_endog * self.error_order, self.k_endog + ).T + ).reshape(self.k_endog, self.k_endog, self.error_order).T + + stationary = is_invertible([1] + list(-coefficient_matrices)) + if not stationary and self.enforce_stationarity: + raise ValueError('Non-stationary starting error autoregressive' + ' parameters found with' + ' `enforce_stationarity` set to True.') + + # Get the error autoregressive parameters + if self.error_var: + params[self._params_error_transition] = ( + np.array(res_errors.params.T).ravel()) + else: + # In the case of individual autoregressions, extract just the + # diagonal elements + params[self._params_error_transition] = ( + res_errors.params.T[self._idx_error_diag]) + + # Get the error covariance parameters + if self.error_cov_type == 'scalar': + params[self._params_error_cov] = ( + res_errors.sigma_u.diagonal().mean()) + elif self.error_cov_type == 'diagonal': + params[self._params_error_cov] = res_errors.sigma_u.diagonal() + elif self.error_cov_type == 'unstructured': + try: + cov_factor = np.linalg.cholesky(res_errors.sigma_u) + except np.linalg.LinAlgError: + cov_factor = np.eye(res_errors.sigma_u.shape[0]) * ( + res_errors.sigma_u.diagonal().mean()**0.5) + cov_factor = np.eye(res_errors.sigma_u.shape[0]) * ( + res_errors.sigma_u.diagonal().mean()**0.5) + params[self._params_error_cov] = ( + cov_factor[self._idx_lower_error_cov].ravel()) + + return params + + @property + def param_names(self): + param_names = [] + endog_names = self.endog_names + + # 1. Factor loadings + param_names += [ + 'loading.f%d.%s' % (j+1, endog_names[i]) + for i in range(self.k_endog) + for j in range(self.k_factors) + ] + + # 2. Exog + # Recall these are in the form: beta.x1.y1, beta.x2.y1, beta.x1.y2, ... + param_names += [ + 'beta.%s.%s' % (self.exog_names[j], endog_names[i]) + for i in range(self.k_endog) + for j in range(self.k_exog) + ] + + # 3. Error covariances + if self.error_cov_type == 'scalar': + param_names += ['sigma2'] + elif self.error_cov_type == 'diagonal': + param_names += [ + 'sigma2.%s' % endog_names[i] + for i in range(self.k_endog) + ] + elif self.error_cov_type == 'unstructured': + param_names += [ + ('sqrt.var.%s' % endog_names[i] if i == j else + 'sqrt.cov.%s.%s' % (endog_names[j], endog_names[i])) + for i in range(self.k_endog) + for j in range(i+1) + ] + + # 4. Factor transition VAR + param_names += [ + 'L%d.f%d.f%d' % (i+1, k+1, j+1) + for j in range(self.k_factors) + for i in range(self.factor_order) + for k in range(self.k_factors) + ] + + # 5. Error transition VAR + if self.error_var: + param_names += [ + 'L%d.e(%s).e(%s)' % (i+1, endog_names[k], endog_names[j]) + for j in range(self.k_endog) + for i in range(self.error_order) + for k in range(self.k_endog) + ] + else: + param_names += [ + 'L%d.e(%s).e(%s)' % (i+1, endog_names[j], endog_names[j]) + for j in range(self.k_endog) + for i in range(self.error_order) + ] + + return param_names + + def transform_params(self, unconstrained): + """ + Transform unconstrained parameters used by the optimizer to constrained + parameters used in likelihood evaluation + + Parameters + ---------- + unconstrained : array_like + Array of unconstrained parameters used by the optimizer, to be + transformed. + + Returns + ------- + constrained : array_like + Array of constrained parameters which may be used in likelihood + evalation. + + Notes + ----- + Constrains the factor transition to be stationary and variances to be + positive. + """ + unconstrained = np.array(unconstrained, ndmin=1) + dtype = unconstrained.dtype + constrained = np.zeros(unconstrained.shape, dtype=dtype) + + # 1. Factor loadings + # The factor loadings do not need to be adjusted + constrained[self._params_loadings] = ( + unconstrained[self._params_loadings]) + + # 2. Exog + # The regression coefficients do not need to be adjusted + constrained[self._params_exog] = ( + unconstrained[self._params_exog]) + + # 3. Error covariances + # If we have variances, force them to be positive + if self.error_cov_type in ['scalar', 'diagonal']: + constrained[self._params_error_cov] = ( + unconstrained[self._params_error_cov]**2) + # Otherwise, nothing needs to be done + elif self.error_cov_type == 'unstructured': + constrained[self._params_error_cov] = ( + unconstrained[self._params_error_cov]) + + # 4. Factor transition VAR + # VAR transition: optionally force to be stationary + if self.enforce_stationarity and self.factor_order > 0: + # Transform the parameters + unconstrained_matrices = ( + unconstrained[self._params_factor_transition].reshape( + self.k_factors, self._factor_order)) + # This is always an identity matrix, but because the transform + # done prior to update (where the ssm representation matrices + # change), it may be complex + cov = self.ssm['state_cov', :self.k_factors, :self.k_factors].real + coefficient_matrices, variance = ( + constrain_stationary_multivariate(unconstrained_matrices, cov)) + constrained[self._params_factor_transition] = ( + coefficient_matrices.ravel()) + else: + constrained[self._params_factor_transition] = ( + unconstrained[self._params_factor_transition]) + + # 5. Error transition VAR + # VAR transition: optionally force to be stationary + if self.enforce_stationarity and self.error_order > 0: + + # Joint VAR specification + if self.error_var: + unconstrained_matrices = ( + unconstrained[self._params_error_transition].reshape( + self.k_endog, self._error_order)) + start = self.k_factors + end = self.k_factors + self.k_endog + cov = self.ssm['state_cov', start:end, start:end].real + coefficient_matrices, variance = ( + constrain_stationary_multivariate( + unconstrained_matrices, cov)) + constrained[self._params_error_transition] = ( + coefficient_matrices.ravel()) + # Separate AR specifications + else: + coefficients = ( + unconstrained[self._params_error_transition].copy()) + for i in range(self.k_endog): + start = i * self.error_order + end = (i + 1) * self.error_order + coefficients[start:end] = constrain_stationary_univariate( + coefficients[start:end]) + constrained[self._params_error_transition] = coefficients + + else: + constrained[self._params_error_transition] = ( + unconstrained[self._params_error_transition]) + + return constrained + + def untransform_params(self, constrained): + """ + Transform constrained parameters used in likelihood evaluation + to unconstrained parameters used by the optimizer. + + Parameters + ---------- + constrained : array_like + Array of constrained parameters used in likelihood evalution, to be + transformed. + + Returns + ------- + unconstrained : array_like + Array of unconstrained parameters used by the optimizer. + """ + constrained = np.array(constrained, ndmin=1) + dtype = constrained.dtype + unconstrained = np.zeros(constrained.shape, dtype=dtype) + + # 1. Factor loadings + # The factor loadings do not need to be adjusted + unconstrained[self._params_loadings] = ( + constrained[self._params_loadings]) + + # 2. Exog + # The regression coefficients do not need to be adjusted + unconstrained[self._params_exog] = ( + constrained[self._params_exog]) + + # 3. Error covariances + # If we have variances, force them to be positive + if self.error_cov_type in ['scalar', 'diagonal']: + unconstrained[self._params_error_cov] = ( + constrained[self._params_error_cov]**0.5) + # Otherwise, nothing needs to be done + elif self.error_cov_type == 'unstructured': + unconstrained[self._params_error_cov] = ( + constrained[self._params_error_cov]) + + # 3. Factor transition VAR + # VAR transition: optionally force to be stationary + if self.enforce_stationarity and self.factor_order > 0: + # Transform the parameters + constrained_matrices = ( + constrained[self._params_factor_transition].reshape( + self.k_factors, self._factor_order)) + cov = self.ssm['state_cov', :self.k_factors, :self.k_factors].real + coefficient_matrices, variance = ( + unconstrain_stationary_multivariate( + constrained_matrices, cov)) + unconstrained[self._params_factor_transition] = ( + coefficient_matrices.ravel()) + else: + unconstrained[self._params_factor_transition] = ( + constrained[self._params_factor_transition]) + + # 5. Error transition VAR + # VAR transition: optionally force to be stationary + if self.enforce_stationarity and self.error_order > 0: + + # Joint VAR specification + if self.error_var: + constrained_matrices = ( + constrained[self._params_error_transition].reshape( + self.k_endog, self._error_order)) + start = self.k_factors + end = self.k_factors + self.k_endog + cov = self.ssm['state_cov', start:end, start:end].real + coefficient_matrices, variance = ( + unconstrain_stationary_multivariate( + constrained_matrices, cov)) + unconstrained[self._params_error_transition] = ( + coefficient_matrices.ravel()) + # Separate AR specifications + else: + coefficients = ( + constrained[self._params_error_transition].copy()) + for i in range(self.k_endog): + start = i * self.error_order + end = (i + 1) * self.error_order + coefficients[start:end] = ( + unconstrain_stationary_univariate( + coefficients[start:end])) + unconstrained[self._params_error_transition] = coefficients + + else: + unconstrained[self._params_error_transition] = ( + constrained[self._params_error_transition]) + + return unconstrained + + def update(self, params, transformed=True, complex_step=False): + """ + Update the parameters of the model + + Updates the representation matrices to fill in the new parameter + values. + + Parameters + ---------- + params : array_like + Array of new parameters. + transformed : boolean, optional + Whether or not `params` is already transformed. If set to False, + `transform_params` is called. Default is True.. + + Returns + ------- + params : array_like + Array of parameters. + + Notes + ----- + Let `n = k_endog`, `m = k_factors`, and `p = factor_order`. Then the + `params` vector has length + :math:`[n \times m] + [n] + [m^2 \times p]`. + It is expanded in the following way: + + - The first :math:`n \times m` parameters fill out the factor loading + matrix, starting from the [0,0] entry and then proceeding along rows. + These parameters are not modified in `transform_params`. + - The next :math:`n` parameters provide variances for the error_cov + errors in the observation equation. They fill in the diagonal of the + observation covariance matrix, and are constrained to be positive by + `transofrm_params`. + - The next :math:`m^2 \times p` parameters are used to create the `p` + coefficient matrices for the vector autoregression describing the + factor transition. They are transformed in `transform_params` to + enforce stationarity of the VAR(p). They are placed so as to make + the transition matrix a companion matrix for the VAR. In particular, + we assume that the first :math:`m^2` parameters fill the first + coefficient matrix (starting at [0,0] and filling along rows), the + second :math:`m^2` parameters fill the second matrix, etc. + + """ + params = super(DynamicFactor, self).update( + params, transformed=transformed, complex_step=complex_step) + + # 1. Factor loadings + # Update the design / factor loading matrix + self.ssm[self._idx_loadings] = ( + params[self._params_loadings].reshape(self.k_endog, self.k_factors) + ) + + # 2. Exog + if self.k_exog > 0: + exog_params = params[self._params_exog].reshape( + self.k_endog, self.k_exog).T + self.ssm[self._idx_exog] = np.dot(self.exog, exog_params).T + + # 3. Error covariances + if self.error_cov_type in ['scalar', 'diagonal']: + self.ssm[self._idx_error_cov] = ( + params[self._params_error_cov]) + elif self.error_cov_type == 'unstructured': + error_cov_lower = np.zeros((self.k_endog, self.k_endog), + dtype=params.dtype) + error_cov_lower[self._idx_lower_error_cov] = ( + params[self._params_error_cov]) + self.ssm[self._idx_error_cov] = ( + np.dot(error_cov_lower, error_cov_lower.T)) + + # 4. Factor transition VAR + self.ssm[self._idx_factor_transition] = ( + params[self._params_factor_transition].reshape( + self.k_factors, self.factor_order * self.k_factors)) + + # 5. Error transition VAR + if self.error_var: + self.ssm[self._idx_error_transition] = ( + params[self._params_error_transition].reshape( + self.k_endog, self._error_order)) + else: + self.ssm[self._idx_error_transition] = ( + params[self._params_error_transition]) + + +class DynamicFactorResults(MLEResults): + """ + Class to hold results from fitting an DynamicFactor model. + + Parameters + ---------- + model : DynamicFactor instance + The fitted model instance + + Attributes + ---------- + specification : dictionary + Dictionary including all attributes from the DynamicFactor model + instance. + coefficient_matrices_var : array + Array containing autoregressive lag polynomial coefficient matrices, + ordered from lowest degree to highest. + + See Also + -------- + statsmodels.tsa.statespace.kalman_filter.FilterResults + statsmodels.tsa.statespace.mlemodel.MLEResults + """ + def __init__(self, model, params, filter_results, cov_type='opg', + **kwargs): + super(DynamicFactorResults, self).__init__(model, params, + filter_results, cov_type, + **kwargs) + + self.df_resid = np.inf # attribute required for wald tests + + self.specification = Bunch(**{ + # Model properties + 'k_endog': self.model.k_endog, + 'enforce_stationarity': self.model.enforce_stationarity, + + # Factor-related properties + 'k_factors': self.model.k_factors, + 'factor_order': self.model.factor_order, + + # Error-related properties + 'error_order': self.model.error_order, + 'error_var': self.model.error_var, + 'error_cov_type': self.model.error_cov_type, + + # Other properties + 'k_exog': self.model.k_exog + }) + + # Polynomials / coefficient matrices + self.coefficient_matrices_var = None + if self.model.factor_order > 0: + ar_params = ( + np.array(self.params[self.model._params_factor_transition])) + k_factors = self.model.k_factors + factor_order = self.model.factor_order + self.coefficient_matrices_var = ( + ar_params.reshape(k_factors * factor_order, k_factors).T + ).reshape(k_factors, k_factors, factor_order).T + + self.coefficient_matrices_error = None + if self.model.error_order > 0: + ar_params = ( + np.array(self.params[self.model._params_error_transition])) + k_endog = self.model.k_endog + error_order = self.model.error_order + if self.model.error_var: + self.coefficient_matrices_error = ( + ar_params.reshape(k_endog * error_order, k_endog).T + ).reshape(k_endog, k_endog, error_order).T + else: + mat = np.zeros((k_endog, k_endog * error_order)) + mat[self.model._idx_error_diag] = ar_params + self.coefficient_matrices_error = ( + mat.T.reshape(error_order, k_endog, k_endog)) + + @property + def factors(self): + """ + Estimates of unobserved factors + + Returns + ------- + out : Bunch + Has the following attributes shown in Notes. + + Notes + ----- + The output is a bunch of the following format: + + - `filtered`: a time series array with the filtered estimate of + the component + - `filtered_cov`: a time series array with the filtered estimate of + the variance/covariance of the component + - `smoothed`: a time series array with the smoothed estimate of + the component + - `smoothed_cov`: a time series array with the smoothed estimate of + the variance/covariance of the component + - `offset`: an integer giving the offset in the state vector where + this component begins + """ + # If present, level is always the first component of the state vector + out = None + spec = self.specification + if spec.k_factors > 0: + offset = 0 + end = spec.k_factors + res = self.filter_results + out = Bunch( + filtered=res.filtered_state[offset:end], + filtered_cov=res.filtered_state_cov[offset:end, offset:end], + smoothed=None, smoothed_cov=None, + offset=offset) + if self.smoothed_state is not None: + out.smoothed = self.smoothed_state[offset:end] + if self.smoothed_state_cov is not None: + out.smoothed_cov = ( + self.smoothed_state_cov[offset:end, offset:end]) + return out + + @cache_readonly + def coefficients_of_determination(self): + """ + Coefficients of determination (:math:`R^2`) from regressions of + individual estimated factors on endogenous variables. + + Returns + ------- + coefficients_of_determination : array + A `k_endog` x `k_factors` array, where + `coefficients_of_determination[i, j]` represents the :math:`R^2` + value from a regression of factor `j` and a constant on endogenous + variable `i`. + + Notes + ----- + Although it can be difficult to interpret the estimated factor loadings + and factors, it is often helpful to use the cofficients of + determination from univariate regressions to assess the importance of + each factor in explaining the variation in each endogenous variable. + + In models with many variables and factors, this can sometimes lend + interpretation to the factors (for example sometimes one factor will + load primarily on real variables and another on nominal variables). + + See Also + -------- + plot_coefficients_of_determination + + """ + from statsmodels.tools import add_constant + spec = self.specification + coefficients = np.zeros((spec.k_endog, spec.k_factors)) + which = 'filtered' if self.smoothed_state is None else 'smoothed' + + for i in range(spec.k_factors): + exog = add_constant(self.factors[which][i]) + for j in range(spec.k_endog): + endog = self.filter_results.endog[j] + coefficients[j, i] = OLS(endog, exog).fit().rsquared + + return coefficients + + def plot_coefficients_of_determination(self, endog_labels=None, + fig=None, figsize=None): + """ + Plot the coefficients of determination + + Parameters + ---------- + endog_labels : boolean, optional + Whether or not to label the endogenous variables along the x-axis + of the plots. Default is to include labels if there are 5 or fewer + endogenous variables. + fig : Matplotlib Figure instance, optional + If given, subplots are created in this figure instead of in a new + figure. Note that the grid will be created in the provided + figure using `fig.add_subplot()`. + figsize : tuple, optional + If a figure is created, this argument allows specifying a size. + The tuple is (width, height). + + Notes + ----- + + Produces a `k_factors` x 1 plot grid. The `i`th plot shows a bar plot + of the coefficients of determination associated with factor `i`. The + endogenous variables are arranged along the x-axis according to their + position in the `endog` array. + + See Also + -------- + coefficients_of_determination + + """ + from statsmodels.graphics.utils import _import_mpl, create_mpl_fig + _import_mpl() + fig = create_mpl_fig(fig, figsize) + + spec = self.specification + + # Should we label endogenous variables? + if endog_labels is None: + endog_labels = spec.k_endog <= 5 + + # Plot the coefficients of determination + coefficients_of_determination = self.coefficients_of_determination + plot_idx = 1 + locations = np.arange(spec.k_endog) + for coeffs in coefficients_of_determination.T: + # Create the new axis + ax = fig.add_subplot(spec.k_factors, 1, plot_idx) + ax.set_ylim((0, 1)) + ax.set(title='Factor %i' % plot_idx, ylabel=r'$R^2$') + bars = ax.bar(locations, coeffs) + + if endog_labels: + width = bars[0].get_width() + ax.xaxis.set_ticks(locations + width / 2) + ax.xaxis.set_ticklabels(self.model.endog_names) + else: + ax.set(xlabel='Endogenous variables') + ax.xaxis.set_ticks([]) + + plot_idx += 1 + + return fig + + def get_prediction(self, start=None, end=None, dynamic=False, index=None, + exog=None, **kwargs): + """ + In-sample prediction and out-of-sample forecasting + + Parameters + ---------- + start : int, str, or datetime, optional + Zero-indexed observation number at which to start forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. Default is the the zeroth observation. + end : int, str, or datetime, optional + Zero-indexed observation number at which to end forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. However, if the dates index does not + have a fixed frequency, end must be an integer index if you + want out of sample prediction. Default is the last observation in + the sample. + exog : array_like, optional + If the model includes exogenous regressors, you must provide + exactly enough out-of-sample values for the exogenous variables if + end is beyond the last observation in the sample. + dynamic : boolean, int, str, or datetime, optional + Integer offset relative to `start` at which to begin dynamic + prediction. Can also be an absolute date string to parse or a + datetime type (these are not interpreted as offsets). + Prior to this observation, true endogenous values will be used for + prediction; starting with this observation and continuing through + the end of prediction, forecasted endogenous values will be used + instead. + **kwargs + Additional arguments may required for forecasting beyond the end + of the sample. See `FilterResults.predict` for more details. + + Returns + ------- + forecast : array + Array of out of sample forecasts. + """ + if start is None: + start = self.model._index[0] + + # Handle end (e.g. date) + _start, _end, _out_of_sample, prediction_index = ( + self.model._get_prediction_index(start, end, index, silent=True)) + + # Handle exogenous parameters + if _out_of_sample and self.model.k_exog > 0: + # Create a new faux VARMAX model for the extended dataset + nobs = self.model.data.orig_endog.shape[0] + _out_of_sample + endog = np.zeros((nobs, self.model.k_endog)) + + if self.model.k_exog > 0: + if exog is None: + raise ValueError('Out-of-sample forecasting in a model' + ' with a regression component requires' + ' additional exogenous values via the' + ' `exog` argument.') + exog = np.array(exog) + required_exog_shape = (_out_of_sample, self.model.k_exog) + if not exog.shape == required_exog_shape: + raise ValueError('Provided exogenous values are not of the' + ' appropriate shape. Required %s, got %s.' + % (str(required_exog_shape), + str(exog.shape))) + exog = np.c_[self.model.data.orig_exog.T, exog.T].T + + # TODO replace with init_kwds or specification or similar + model = DynamicFactor( + endog, + k_factors=self.model.k_factors, + factor_order=self.model.factor_order, + exog=exog, + error_order=self.model.error_order, + error_var=self.model.error_var, + error_cov_type=self.model.error_cov_type, + enforce_stationarity=self.model.enforce_stationarity + ) + model.update(self.params) + + # Set the kwargs with the update time-varying state space + # representation matrices + for name in self.filter_results.shapes.keys(): + if name == 'obs': + continue + mat = getattr(model.ssm, name) + if mat.shape[-1] > 1: + if len(mat.shape) == 2: + kwargs[name] = mat[:, -_out_of_sample:] + else: + kwargs[name] = mat[:, :, -_out_of_sample:] + elif self.model.k_exog == 0 and exog is not None: + warn('Exogenous array provided to predict, but additional data not' + ' required. `exog` argument ignored.', ValueWarning) + + return super(DynamicFactorResults, self).get_prediction( + start=start, end=end, dynamic=dynamic, index=index, exog=exog, + **kwargs) + + def summary(self, alpha=.05, start=None, separate_params=True): + from statsmodels.iolib.summary import summary_params + spec = self.specification + + # Create the model name + model_name = [] + if spec.k_factors > 0: + if spec.factor_order > 0: + model_type = ('DynamicFactor(factors=%d, order=%d)' % + (spec.k_factors, spec.factor_order)) + else: + model_type = 'StaticFactor(factors=%d)' % spec.k_factors + + model_name.append(model_type) + if spec.k_exog > 0: + model_name.append('%d regressors' % spec.k_exog) + else: + model_name.append('SUR(%d regressors)' % spec.k_exog) + + if spec.error_order > 0: + error_type = 'VAR' if spec.error_var else 'AR' + model_name.append('%s(%d) errors' % (error_type, spec.error_order)) + + summary = super(DynamicFactorResults, self).summary( + alpha=alpha, start=start, model_name=model_name, + display_params=not separate_params + ) + + if separate_params: + indices = np.arange(len(self.params)) + + def make_table(self, mask, title, strip_end=True): + res = (self, self.params[mask], self.bse[mask], + self.zvalues[mask], self.pvalues[mask], + self.conf_int(alpha)[mask]) + + param_names = [ + '.'.join(name.split('.')[:-1]) if strip_end else name + for name in + np.array(self.data.param_names)[mask].tolist() + ] + + return summary_params(res, yname=None, xname=param_names, + alpha=alpha, use_t=False, title=title) + + k_endog = self.model.k_endog + k_exog = self.model.k_exog + k_factors = self.model.k_factors + factor_order = self.model.factor_order + _factor_order = self.model._factor_order + _error_order = self.model._error_order + + # Add parameter tables for each endogenous variable + loading_indices = indices[self.model._params_loadings] + loading_masks = [] + exog_indices = indices[self.model._params_exog] + exog_masks = [] + for i in range(k_endog): + # 1. Factor loadings + # Recall these are in the form: + # 'loading.f1.y1', 'loading.f2.y1', 'loading.f1.y2', ... + + loading_mask = ( + loading_indices[i * k_factors:(i + 1) * k_factors]) + loading_masks.append(loading_mask) + + # 2. Exog + # Recall these are in the form: + # beta.x1.y1, beta.x2.y1, beta.x1.y2, ... + exog_mask = exog_indices[i * k_exog:(i + 1) * k_exog] + exog_masks.append(exog_mask) + + # Create the table + mask = np.concatenate([loading_mask, exog_mask]) + title = "Results for equation %s" % self.model.endog_names[i] + table = make_table(self, mask, title) + summary.tables.append(table) + + # Add parameter tables for each factor + factor_indices = indices[self.model._params_factor_transition] + factor_masks = [] + if factor_order > 0: + for i in range(k_factors): + start = i * _factor_order + factor_mask = factor_indices[start: start + _factor_order] + factor_masks.append(factor_mask) + + # Create the table + title = "Results for factor equation f%d" % (i+1) + table = make_table(self, factor_mask, title) + summary.tables.append(table) + + # Add parameter tables for error transitions + error_masks = [] + if spec.error_order > 0: + error_indices = indices[self.model._params_error_transition] + for i in range(k_endog): + if spec.error_var: + start = i * _error_order + end = (i + 1) * _error_order + else: + start = i * spec.error_order + end = (i + 1) * spec.error_order + + error_mask = error_indices[start:end] + error_masks.append(error_mask) + + # Create the table + title = ("Results for error equation e(%s)" % + self.model.endog_names[i]) + table = make_table(self, error_mask, title) + summary.tables.append(table) + + # Error covariance terms + error_cov_mask = indices[self.model._params_error_cov] + table = make_table(self, error_cov_mask, + "Error covariance matrix", strip_end=False) + summary.tables.append(table) + + # Add a table for all other parameters + masks = [] + for m in (loading_masks, exog_masks, factor_masks, + error_masks, [error_cov_mask]): + m = np.array(m).flatten() + if len(m) > 0: + masks.append(m) + masks = np.concatenate(masks) + inverse_mask = np.array(list(set(indices).difference(set(masks)))) + if len(inverse_mask) > 0: + table = make_table(self, inverse_mask, "Other parameters", + strip_end=False) + summary.tables.append(table) + + return summary + summary.__doc__ = MLEResults.summary.__doc__ + + +class DynamicFactorResultsWrapper(MLEResultsWrapper): + _attrs = {} + _wrap_attrs = wrap.union_dicts(MLEResultsWrapper._wrap_attrs, + _attrs) + _methods = {} + _wrap_methods = wrap.union_dicts(MLEResultsWrapper._wrap_methods, + _methods) +wrap.populate_wrapper(DynamicFactorResultsWrapper, # noqa:E305 + DynamicFactorResults) diff --git a/statsmodels/tsa/statespace/initialization.py b/statsmodels/tsa/statespace/initialization.py new file mode 100644 index 0000000..de3ec24 --- /dev/null +++ b/statsmodels/tsa/statespace/initialization.py @@ -0,0 +1,613 @@ +""" +State Space Representation - Initialization + +Author: Chad Fulton +License: Simplified-BSD +""" +import warnings + +import numpy as np + +from . import tools + + +class Initialization(object): + r""" + State space initialization + + Parameters + ---------- + k_states : int + exact_diffuse_initialization : bool, optional + Whether or not to use exact diffuse initialization; only has an effect + if some states are initialized as diffuse. Default is True. + approximate_diffuse_variance : float, optional + If using approximate diffuse initialization, the initial variance used. + Default is 1e6. + + Notes + ----- + As developed in Durbin and Koopman (2012), the state space recursions + must be initialized for the first time period. The general form of this + initialization is: + + .. math:: + + \alpha_1 & = a + A \delta + R_0 \eta_0 \\ + \delta & \sim N(0, \kappa I), \kappa \to \infty \\ + \eta_0 & \sim N(0, Q_0) + + Thus the state vector can be initialized with a known constant part + (elements of :math:`a`), with part modeled as a diffuse initial + distribution (as a part of :math:`\delta`), and with a part modeled as a + known (proper) initial distribution (as a part of :math:`\eta_0`). + + There are two important restrictions: + + 1. An element of the state vector initialized as diffuse cannot be also + modeled with a stationary component. In the `validate` method, + violations of this cause an exception to be raised. + 2. If an element of the state vector is initialized with both a known + constant part and with a diffuse initial distribution, the effect of + the diffuse initialization will essentially ignore the given known + constant value. In the `validate` method, violations of this cause a + warning to be given, since it is not technically invalid but may + indicate user error. + + The :math:`\eta_0` compoenent is also referred to as the stationary part + because it is often set to the unconditional distribution of a stationary + process. + + Initialization is specified for blocks (consecutive only, for now) of the + state vector, with the entire state vector and individual elements as + special cases. Denote the block in question as :math:`\alpha_1^{(i)}`. It + can be initialized in the following ways: + + - 'known' + - 'diffuse' or 'exact_diffuse' or 'approximate_diffuse' + - 'stationary' + - 'mixed' + + In the first three cases, the block's initialization is specified as an + instance of the `Initialization` class, with the `initialization_type` + attribute set to one of those three string values. In the 'mixed' cases, + the initialization is also an instance of the `Initialization` class, but + it will itself contain sub-blocks. Details of each type follow. + + Regardless of the type, for each block, the following must be defined: + the `constant` array, an array `diffuse` with indices corresponding to + diffuse elements, an array `stationary` with indices corresponding to + stationary elements, and `stationary_cov`, a matrix with order equal to the + number of stationary elements in the block. + + **Known** + + If a block is initialized as known, then a known (possibly degenerate) + distribution is used; in particular, the block of states is understood to + be distributed + :math:`\alpha_1^{(i)} \sim N(a^{(i)}, Q_0^{(i)})`. Here, is is possible to + set :math:`a^{(i)} = 0`, and it is also possible that + :math:`Q_0^{(i)}` is only positive-semidefinite; i.e. + :math:`\alpha_1^{(i)}` may be degenerate. One particular example is + that if the entire block's initial values are known, then + :math:`R_0^{(i)} = 0`, and so `Var(\alpha_1^{(i)}) = 0`. + + Here, `constant` must be provided (although it can be zeros), and + `stationary_cov` is optional (by default it is a matrix of zeros). + + **Diffuse** + + If a block is initialized as diffuse, then set + :math:`\alpha_1^{(i)} \sim N(a^{(i)}, \kappa^{(i)} I)`. If the block is + initialized using the exact diffuse initialization procedure, then it is + understood that :math:`\kappa^{(i)} \to \infty`. + + If the block is initialized using the approximate diffuse initialization + procedure, then `\kappa^{(i)}` is set to some large value rather than + driven to infinity. + + In the approximate diffuse initialization case, it is possible, although + unlikely, that a known constant value may have some effect on + initialization if :math:`\kappa^{(i)}` is not set large enough. + + Here, `constant` may be provided, and `approximate_diffuse_variance` may be + provided. + + **Stationary** + + If a block is initialized as stationary, then the block of states is + understood to have the distribution + :math:`\alpha_1^{(i)} \sim N(a^{(i)}, Q_0^{(i)})`. :math:`a^{(i)}` is + the unconditional mean of the block, computed as + :math:`(I - T^{(i)})^{-1} c_t`. :math:`Q_0^{(i)}` is the unconditional + variance of the block, computed as the solution to the discrete Lyapunov + equation: + + .. math:: + + T^{(i)} Q_0^{(i)} T^{(i)} + (R Q R')^{(i)} = Q_0^{(i)} + + :math:`T^{(i)}` and :math:`(R Q R')^{(i)}` are the submatrices of + the corresponding state space system matrices corresponding to the given + block of states. + + Here, no values can be provided. + + **Mixed** + + In this case, the block can be further broken down into sub-blocks. + Usually, only the top-level `Initialization` instance will be of 'mixed' + type, and in many cases, even the top-level instance will be purely + 'known', 'diffuse', or 'stationary'. + + For a block of type mixed, suppose that it has `J` sub-blocks, + :math:`\alpha_1^{(i,j)}`. Then + :math:`\alpha_1^{(i)} = a^{(i)} + A^{(i)} \delta + R_0^{(i)} \eta_0^{(i)}`. + + Examples + -------- + + Basic examples have one specification for all of the states: + + >>> Initialization(k_states=2, 'known', constant=[0, 1]) + >>> Initialization(k_states=2, 'known', stationary_cov=np.eye(2)) + >>> Initialization(k_states=2, 'known', constant=[0, 1], + stationary_cov=np.eye(2)) + >>> Initialization(k_states=2, 'diffuse') + >>> Initialization(k_states=2, 'approximate_diffuse', + approximate_diffuse_variance=1e6) + >>> Initialization(k_states=2, 'stationary') + + More complex examples initialize different blocks of states separately + + >>> init = Initialization(k_states=3) + >>> init.set((0, 1), 'known', constant=[0, 1]) + >>> init.set((0, 1), 'known', stationary_cov=np.eye(2)) + >>> init.set((0, 1), 'known', constant=[0, 1], + stationary_cov=np.eye(2)) + >>> init.set((0, 1), 'diffuse') + >>> init.set((0, 1), 'approximate_diffuse', + approximate_diffuse_variance=1e6) + >>> init.set((0, 1), 'stationary') + + A still more complex example initializes a block using a previously + created `Initialization` object: + + >>> init1 = Initialization(k_states=2, 'known', constant=[0, 1]) + >>> init2 = Initialization(k_states=3) + >>> init2.set((1, 2), init1) + + """ + + def __init__(self, k_states, initialization_type=None, + initialization_classes=None, approximate_diffuse_variance=1e6, + constant=None, stationary_cov=None): + # Parameters + self.k_states = k_states + + # Attributes handling blocks of states with different initializations + self._states = tuple(np.arange(k_states)) + self._initialization = np.array([None] * k_states) + self.blocks = {} + + # Attributes handling initialization of the entire set of states + # `constant` is a vector of constant values (i.e. it is the vector + # a from DK) + self.initialization_type = None + self.constant = np.zeros(self.k_states) + self.stationary_cov = np.zeros((self.k_states, self.k_states)) + self.approximate_diffuse_variance = approximate_diffuse_variance + + # Cython interface attributes + self.prefix_initialization_map = ( + initialization_classes if initialization_classes is not None + else tools.prefix_initialization_map.copy()) + self._representations = {} + self._initializations = {} + + # If given a global initialization, use it now + if initialization_type is not None: + self.set(None, initialization_type, constant=constant, + stationary_cov=stationary_cov) + + def __setitem__(self, index, initialization_type): + self.set(index, initialization_type) + + def _initialize_initialization(self, prefix): + dtype = tools.prefix_dtype_map[prefix] + + # If the dtype-specific representation matrices do not exist, create + # them + if prefix not in self._representations: + # Copy the statespace representation matrices + self._representations[prefix] = { + 'constant': self.constant.astype(dtype), + 'stationary_cov': np.asfortranarray( + self.stationary_cov.astype(dtype)), + } + # If they do exist, update them + else: + self._representations[prefix]['constant'][:] = ( + self.constant.astype(dtype)[:]) + self._representations[prefix]['stationary_cov'][:] = ( + self.stationary_cov.astype(dtype)[:]) + + # Create if necessary + if prefix not in self._initializations: + # Setup the base statespace object + cls = self.prefix_initialization_map[prefix] + self._initializations[prefix] = cls( + self.k_states, self._representations[prefix]['constant'], + self._representations[prefix]['stationary_cov'], + self.approximate_diffuse_variance) + # Otherwise update + else: + self._initializations[prefix].approximate_diffuse_variance = ( + self.approximate_diffuse_variance) + + return prefix, dtype + + def set(self, index, initialization_type, constant=None, + stationary_cov=None, approximate_diffuse_variance=None): + r""" + Set initialization for states, either globally or for a block + + Parameters + ---------- + index : tuple or int or None + Arguments used to create a `slice` of states. Can be a tuple with + `(start, stop)` (note that for `slice`, stop is not inclusive), or + an integer (to select a specific state), or None (to select all the + states). + initialization_type : str + The type of initialization used for the states selected by `index`. + Must be one of 'known', 'diffuse', 'approximate_diffuse', or + 'stationary'. + constant : array-like, optional + A vector of constant values, denoted :math:`a`. Most often used + with 'known' initialization, but may also be used with + 'approximate_diffuse' (although it will then likely have little + effect). + stationary_cov : array-like, optional + The covariance matrix of the stationary part, denoted :math:`Q_0`. + Only used with 'known' initialization. + approximate_diffuse_variance : float, optional + The approximate diffuse variance, denoted :math:`\kappa`. Only + applicable with 'approximate_diffuse' initialization. Default is + 1e6. + """ + # Construct the index, using a slice object as an intermediate step + # to enforce regularity + if not isinstance(index, slice): + if isinstance(index, (int, np.integer)): + index = int(index) + if index < 0 or index >= self.k_states: + raise ValueError('Invalid index.') + index = (index, index + 1) + elif index is None: + index = (index,) + elif not isinstance(index, tuple): + raise ValueError('Invalid index.') + if len(index) > 2: + raise ValueError('Cannot include a slice step in `index`.') + index = slice(*index) + index = self._states[index] + + # Compatibility with zero-length slices (can make it easier to set up + # initialization without lots of if statements) + if len(index) == 0: + return + + # Make sure that we are not setting a block when global initialization + # was previously set + if self.initialization_type is not None and not index == self._states: + raise ValueError('Cannot set initialization for the block of' + ' states %s because initialization was' + ' previously performed globally. You must either' + ' re-initialize globally or' + ' else unset the global initialization before' + ' initializing specific blocks of states.' + % str(index)) + # Make sure that we are not setting a block that *overlaps* with + # another block (although we are free to *replace* an entire block) + uninitialized = np.equal(self._initialization[index, ], None) + if index not in self.blocks and not np.all(uninitialized): + raise ValueError('Cannot set initialization for the state(s) %s' + ' because they are a subset of a previously' + ' initialized block. You must either' + ' re-initialize the entire block as a whole or' + ' else unset the entire block before' + ' re-initializing the subset.' + % str(np.array(index)[~uninitialized])) + + # If setting for all states, set this object's initialization + # attributes + k_states = len(index) + if k_states == self.k_states: + self.initialization_type = initialization_type + + # General validation + if (approximate_diffuse_variance is not None and + not initialization_type == 'approximate_diffuse'): + raise ValueError('`approximate_diffuse_variance` can only be' + ' provided when using approximate diffuse' + ' initialization.') + if (stationary_cov is not None and + not initialization_type == 'known'): + raise ValueError('`stationary_cov` can only be provided when' + ' using known initialization.') + + # Specific initialization handling + if initialization_type == 'known': + # Make sure we were given some known initialization + if constant is None and stationary_cov is None: + raise ValueError('Must specify either the constant vector' + ' or the stationary covariance matrix' + ' (or both) if using known' + ' initialization.') + # Defaults + if stationary_cov is None: + stationary_cov = np.zeros((k_states, k_states)) + else: + stationary_cov = np.array(stationary_cov) + + # Validate + if not stationary_cov.shape == (k_states, k_states): + raise ValueError('Invalid stationary covariance matrix;' + ' given shape %s but require shape %s.' + % (str(stationary_cov.shape), + str((k_states, k_states)))) + + # Set values + self.stationary_cov = stationary_cov + elif initialization_type == 'diffuse': + if constant is not None: + warnings.warn('Constant values provided, but they are' + ' ignored in exact diffuse initialization.') + elif initialization_type == 'approximate_diffuse': + if approximate_diffuse_variance is not None: + self.approximate_diffuse_variance = ( + approximate_diffuse_variance) + elif initialization_type == 'stationary': + if constant is not None: + raise ValueError('Constant values cannot be provided for' + ' stationary initialization.') + else: + raise ValueError('Invalid initialization type.') + + # Handle constant + if constant is None: + constant = np.zeros(k_states) + else: + constant = np.array(constant) + if not constant.shape == (k_states,): + raise ValueError('Invalid constant vector; given shape %s' + ' but require shape %s.' + % (str(constant.shape), str((k_states,)))) + self.constant = constant + # Otherwise, if setting a sub-block, construct the new initialization + # object + else: + if isinstance(initialization_type, Initialization): + init = initialization_type + else: + if approximate_diffuse_variance is None: + approximate_diffuse_variance = ( + self.approximate_diffuse_variance) + init = Initialization( + k_states, initialization_type, constant=constant, + stationary_cov=stationary_cov, + approximate_diffuse_variance=approximate_diffuse_variance) + + self.blocks[index] = init + for i in index: + self._initialization[i] = index + + def unset(self, index): + """ + Unset initialization for states, either globally or for a block + + Parameters + ---------- + index : tuple or int or None + Arguments used to create a `slice` of states. Can be a tuple with + `(start, stop)` (note that for `slice`, stop is not inclusive), or + an integer (to select a specific state), or None (to select all the + states). + + Notes + ----- + Note that this specifically unsets initializations previously created + using `set` with this same index. Thus you cannot use `index=None` to + unset all initializations, but only to unset a previously set global + initialization. To unset all initializations (including both global and + block level), use the `clear` method. + """ + if isinstance(index, (int, np.integer)): + index = int(index) + if index < 0 or index > self.k_states: + raise ValueError('Invalid index.') + index = (index, index + 1) + elif index is None: + index = (index,) + elif not isinstance(index, tuple): + raise ValueError('Invalid index.') + if len(index) > 2: + raise ValueError('Cannot include a slice step in `index`.') + index = self._states[slice(*index)] + + # Compatibility with zero-length slices (can make it easier to set up + # initialization without lots of if statements) + if len(index) == 0: + return + + # Unset the values + k_states = len(index) + if k_states == self.k_states and self.initialization_type is not None: + self.initialization_type = None + self.constant[:] = 0 + self.stationary_cov[:] = 0 + elif index in self.blocks: + for i in index: + self._initialization[i] = None + del self.blocks[index] + else: + raise ValueError('The given index does not correspond to a' + ' previously initialized block.') + + def clear(self): + """ + Clear all previously set initializations, either global or block level + """ + # Clear initializations + for i in self._states: + self._initialization[i] = None + + # Delete block initializations + keys = list(self.blocks.keys()) + for key in keys: + del self.blocks[key] + + # Clear global attributes + self.initialization_type = None + self.constant[:] = 0 + self.stationary_cov[:] = 0 + + @property + def initialized(self): + return not (self.initialization_type is None and + np.any(np.equal(self._initialization, None))) + + def __call__(self, index=None, model=None, initial_state_mean=None, + initial_diffuse_state_cov=None, + initial_stationary_state_cov=None, complex_step=False): + r""" + Construct initialization representation + + Parameters + ---------- + model : Representation, optional + A state space model representation object, optional if 'stationary' + initialization is used and ignored otherwise. See notes for + details in the stationary initialization case. + model_index : array, optional + The base index of the block in the model. + initial_state_mean : array, optional + An array (or more usually view) in which to place the initial state + mean. + initial_diffuse_state_cov : array, optional + An array (or more usually view) in which to place the diffuse + component of initial state covariance matrix. + initial_stationary_state_cov : array, optional + An array (or more usually view) in which to place the stationary + component of initial state covariance matrix. + + + Returns + ------- + initial_state_mean : array + Initial state mean, :math:`a_1^{(0)} = a` + initial_diffuse_state_cov : array + Diffuse component of initial state covariance matrix, + :math:`P_\infty = A A'` + initial_stationary_state_cov : array + Stationary component of initial state covariance matrix, + :math:`P_* = R_0 Q_0 R_0'` + + Notes + ----- + If stationary initialization is used either globally or for any block + of states, then either `model` or all of `state_intercept`, + `transition`, `selection`, and `state_cov` must be provided. + """ + # Check that all states are initialized somehow + if (self.initialization_type is None and + np.any(np.equal(self._initialization, None))): + raise ValueError('Cannot construct initialization representation' + ' because not all states have been initialized.') + + # Setup indexes + if index is None: + index = self._states + ix1 = np.s_[:] + ix2 = np.s_[:, :] + else: + ix1 = np.s_[index[0]:index[-1] + 1] + ix2 = np.ix_(index, index) + + # Retrieve state_intercept, etc. if `model` was given + if model is not None: + state_intercept = model['state_intercept', ix1, 0] + transition = model[('transition',) + ix2 + (0,)] + selection = model['selection', ix1, :, 0] + state_cov = model['state_cov'] + selected_state_cov = np.dot(selection, state_cov).dot(selection.T) + + # Create output arrays if not given + if initial_state_mean is None: + initial_state_mean = np.zeros(self.k_states) + cov_shape = (self.k_states, self.k_states) + if initial_diffuse_state_cov is None: + initial_diffuse_state_cov = np.zeros(cov_shape) + if initial_stationary_state_cov is None: + initial_stationary_state_cov = np.zeros(cov_shape) + + # If using global initialization, compute the actual elements and + # return them + if self.initialization_type is not None: + eye = np.eye(self.k_states) + zeros = np.zeros((self.k_states, self.k_states)) + + # General validation + if self.initialization_type == 'stationary' and model is None: + raise ValueError('Stationary initialization requires passing' + ' either the `model` argument or all of the' + ' individual transition equation arguments.') + if self.initialization_type == 'stationary': + # TODO performance + eigvals = np.linalg.eigvals(transition) + threshold = 1. - 1e-10 + if not np.max(np.abs(eigvals)) < threshold: + raise ValueError('Transition equation is not stationary,' + ' and so stationary initialization cannot' + ' be used.') + + # Set the initial state mean + if self.initialization_type == 'stationary': + # TODO performance + initial_state_mean[ix1] = np.linalg.solve(eye - transition, + state_intercept) + else: + initial_state_mean[ix1] = self.constant + + # Set the diffuse component + if self.initialization_type == 'diffuse': + initial_diffuse_state_cov[ix2] = np.eye(self.k_states) + else: + initial_diffuse_state_cov[ix2] = zeros + + # Set the stationary component + if self.initialization_type == 'known': + initial_stationary_state_cov[ix2] = self.stationary_cov + elif self.initialization_type == 'diffuse': + initial_stationary_state_cov[ix2] = zeros + elif self.initialization_type == 'approximate_diffuse': + initial_stationary_state_cov[ix2] = ( + eye * self.approximate_diffuse_variance) + elif self.initialization_type == 'stationary': + # TODO performance + initial_stationary_state_cov[ix2] = ( + tools.solve_discrete_lyapunov(transition, + selected_state_cov, + complex_step=complex_step)) + else: + # Otherwise, if using blocks, recursively initialize + # them (values will be set in-place) + for block_index, init in self.blocks.items(): + init(index=tuple(np.array(index)[block_index, ]), + model=model, initial_state_mean=initial_state_mean, + initial_diffuse_state_cov=initial_diffuse_state_cov, + initial_stationary_state_cov=initial_stationary_state_cov) + + return (initial_state_mean, initial_diffuse_state_cov, + initial_stationary_state_cov) diff --git a/statsmodels/tsa/statespace/kalman_filter.py b/statsmodels/tsa/statespace/kalman_filter.py new file mode 100644 index 0000000..e68bbad --- /dev/null +++ b/statsmodels/tsa/statespace/kalman_filter.py @@ -0,0 +1,2257 @@ +""" +State Space Representation and Kalman Filter + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import contextlib +from warnings import warn + +import numpy as np +from .representation import OptionWrapper, Representation, FrozenRepresentation +from .tools import (validate_vector_shape, validate_matrix_shape, + reorder_missing_matrix, reorder_missing_vector) +from . import tools +from statsmodels.tools.sm_exceptions import ValueWarning + +# Define constants +FILTER_CONVENTIONAL = 0x01 # Durbin and Koopman (2012), Chapter 4 +FILTER_EXACT_INITIAL = 0x02 # ibid., Chapter 5.6 +FILTER_AUGMENTED = 0x04 # ibid., Chapter 5.7 +FILTER_SQUARE_ROOT = 0x08 # ibid., Chapter 6.3 +FILTER_UNIVARIATE = 0x10 # ibid., Chapter 6.4 +FILTER_COLLAPSED = 0x20 # ibid., Chapter 6.5 +FILTER_EXTENDED = 0x40 # ibid., Chapter 10.2 +FILTER_UNSCENTED = 0x80 # ibid., Chapter 10.3 +FILTER_CONCENTRATED = 0x100 # Harvey (1989), Chapter 3.4 + +INVERT_UNIVARIATE = 0x01 +SOLVE_LU = 0x02 +INVERT_LU = 0x04 +SOLVE_CHOLESKY = 0x08 +INVERT_CHOLESKY = 0x10 + +STABILITY_FORCE_SYMMETRY = 0x01 + +MEMORY_STORE_ALL = 0 +MEMORY_NO_FORECAST = 0x01 +MEMORY_NO_PREDICTED = 0x02 +MEMORY_NO_FILTERED = 0x04 +MEMORY_NO_LIKELIHOOD = 0x08 +MEMORY_NO_GAIN = 0x10 +MEMORY_NO_SMOOTHING = 0x20 +MEMORY_NO_STD_FORECAST = 0x40 +MEMORY_CONSERVE = ( + MEMORY_NO_FORECAST | MEMORY_NO_PREDICTED | MEMORY_NO_FILTERED | + MEMORY_NO_LIKELIHOOD | MEMORY_NO_GAIN | MEMORY_NO_SMOOTHING | + MEMORY_NO_STD_FORECAST +) + +TIMING_INIT_PREDICTED = 0 +TIMING_INIT_FILTERED = 1 + + +class KalmanFilter(Representation): + r""" + State space representation of a time series process, with Kalman filter + + Parameters + ---------- + k_endog : array_like or integer + The observed time-series process :math:`y` if array like or the + number of variables in the process if an integer. + k_states : int + The dimension of the unobserved state process. + k_posdef : int, optional + The dimension of a guaranteed positive definite covariance matrix + describing the shocks in the transition equation. Must be less than + or equal to `k_states`. Default is `k_states`. + loglikelihood_burn : int, optional + The number of initial periods during which the loglikelihood is not + recorded. Default is 0. + tolerance : float, optional + The tolerance at which the Kalman filter determines convergence to + steady-state. Default is 1e-19. + results_class : class, optional + Default results class to use to save filtering output. Default is + `FilterResults`. If specified, class must extend from `FilterResults`. + **kwargs + Keyword arguments may be used to provide values for the filter, + inversion, and stability methods. See `set_filter_method`, + `set_inversion_method`, and `set_stability_method`. + Keyword arguments may be used to provide default values for state space + matrices. See `Representation` for more details. + + Notes + ----- + There are several types of options available for controlling the Kalman + filter operation. All options are internally held as bitmasks, but can be + manipulated by setting class attributes, which act like boolean flags. For + more information, see the `set_*` class method documentation. The options + are: + + filter_method + The filtering method controls aspects of which + Kalman filtering approach will be used. + inversion_method + The Kalman filter may contain one matrix inversion: that of the + forecast error covariance matrix. The inversion method controls how and + if that inverse is performed. + stability_method + The Kalman filter is a recursive algorithm that may in some cases + suffer issues with numerical stability. The stability method controls + what, if any, measures are taken to promote stability. + conserve_memory + By default, the Kalman filter computes a number of intermediate + matrices at each iteration. The memory conservation options control + which of those matrices are stored. + filter_timing + By default, the Kalman filter follows Durbin and Koopman, 2012, in + initializing the filter with predicted values. Kim and Nelson, 1999, + instead initialize the filter with filtered values, which is + essentially just a different timing convention. + + The `filter_method` and `inversion_method` options intentionally allow + the possibility that multiple methods will be indicated. In the case that + multiple methods are selected, the underlying Kalman filter will attempt to + select the optional method given the input data. + + For example, it may be that INVERT_UNIVARIATE and SOLVE_CHOLESKY are + indicated (this is in fact the default case). In this case, if the + endogenous vector is 1-dimensional (`k_endog` = 1), then INVERT_UNIVARIATE + is used and inversion reduces to simple division, and if it has a larger + dimension, the Cholesky decomposition along with linear solving (rather + than explicit matrix inversion) is used. If only SOLVE_CHOLESKY had been + set, then the Cholesky decomposition method would *always* be used, even in + the case of 1-dimensional data. + + See Also + -------- + FilterResults + statsmodels.tsa.statespace.representation.Representation + """ + + filter_methods = [ + 'filter_conventional', 'filter_exact_initial', 'filter_augmented', + 'filter_square_root', 'filter_univariate', 'filter_collapsed', + 'filter_extended', 'filter_unscented', 'filter_concentrated' + ] + + filter_conventional = OptionWrapper('filter_method', FILTER_CONVENTIONAL) + """ + (bool) Flag for conventional Kalman filtering. + """ + filter_exact_initial = OptionWrapper('filter_method', FILTER_EXACT_INITIAL) + """ + (bool) Flag for exact initial Kalman filtering. Not implemented. + """ + filter_augmented = OptionWrapper('filter_method', FILTER_AUGMENTED) + """ + (bool) Flag for augmented Kalman filtering. Not implemented. + """ + filter_square_root = OptionWrapper('filter_method', FILTER_SQUARE_ROOT) + """ + (bool) Flag for square-root Kalman filtering. Not implemented. + """ + filter_univariate = OptionWrapper('filter_method', FILTER_UNIVARIATE) + """ + (bool) Flag for univariate filtering of multivariate observation vector. + """ + filter_collapsed = OptionWrapper('filter_method', FILTER_COLLAPSED) + """ + (bool) Flag for Kalman filtering with collapsed observation vector. + """ + filter_extended = OptionWrapper('filter_method', FILTER_EXTENDED) + """ + (bool) Flag for extended Kalman filtering. Not implemented. + """ + filter_unscented = OptionWrapper('filter_method', FILTER_UNSCENTED) + """ + (bool) Flag for unscented Kalman filtering. Not implemented. + """ + filter_concentrated = OptionWrapper('filter_method', FILTER_CONCENTRATED) + """ + (bool) Flag for Kalman filtering with concentrated log-likelihood. + """ + + inversion_methods = [ + 'invert_univariate', 'solve_lu', 'invert_lu', 'solve_cholesky', + 'invert_cholesky' + ] + + invert_univariate = OptionWrapper('inversion_method', INVERT_UNIVARIATE) + """ + (bool) Flag for univariate inversion method (recommended). + """ + solve_lu = OptionWrapper('inversion_method', SOLVE_LU) + """ + (bool) Flag for LU and linear solver inversion method. + """ + invert_lu = OptionWrapper('inversion_method', INVERT_LU) + """ + (bool) Flag for LU inversion method. + """ + solve_cholesky = OptionWrapper('inversion_method', SOLVE_CHOLESKY) + """ + (bool) Flag for Cholesky and linear solver inversion method (recommended). + """ + invert_cholesky = OptionWrapper('inversion_method', INVERT_CHOLESKY) + """ + (bool) Flag for Cholesky inversion method. + """ + + stability_methods = ['stability_force_symmetry'] + + stability_force_symmetry = ( + OptionWrapper('stability_method', STABILITY_FORCE_SYMMETRY) + ) + """ + (bool) Flag for enforcing covariance matrix symmetry + """ + + memory_options = [ + 'memory_store_all', 'memory_no_forecast', 'memory_no_predicted', + 'memory_no_filtered', 'memory_no_likelihood', 'memory_no_gain', + 'memory_no_smoothing', 'memory_no_std_forecast', 'memory_conserve' + ] + + memory_store_all = OptionWrapper('conserve_memory', MEMORY_STORE_ALL) + """ + (bool) Flag for storing all intermediate results in memory (default). + """ + memory_no_forecast = OptionWrapper('conserve_memory', MEMORY_NO_FORECAST) + """ + (bool) Flag to prevent storing forecasts. + """ + memory_no_predicted = OptionWrapper('conserve_memory', MEMORY_NO_PREDICTED) + """ + (bool) Flag to prevent storing predicted state and covariance matrices. + """ + memory_no_filtered = OptionWrapper('conserve_memory', MEMORY_NO_FILTERED) + """ + (bool) Flag to prevent storing filtered state and covariance matrices. + """ + memory_no_likelihood = ( + OptionWrapper('conserve_memory', MEMORY_NO_LIKELIHOOD) + ) + """ + (bool) Flag to prevent storing likelihood values for each observation. + """ + memory_no_gain = OptionWrapper('conserve_memory', MEMORY_NO_GAIN) + """ + (bool) Flag to prevent storing the Kalman gain matrices. + """ + memory_no_smoothing = OptionWrapper('conserve_memory', MEMORY_NO_SMOOTHING) + """ + (bool) Flag to prevent storing likelihood values for each observation. + """ + memory_no_std_forecast = ( + OptionWrapper('conserve_memory', MEMORY_NO_STD_FORECAST)) + """ + (bool) Flag to prevent storing standardized forecast errors. + """ + memory_conserve = OptionWrapper('conserve_memory', MEMORY_CONSERVE) + """ + (bool) Flag to conserve the maximum amount of memory. + """ + + timing_options = [ + 'timing_init_predicted', 'timing_init_filtered' + ] + timing_init_predicted = OptionWrapper('filter_timing', + TIMING_INIT_PREDICTED) + """ + (bool) Flag for the default timing convention (Durbin and Koopman, 2012). + """ + timing_init_filtered = OptionWrapper('filter_timing', TIMING_INIT_FILTERED) + """ + (bool) Flag for the alternate timing convention (Kim and Nelson, 2012). + """ + + # Default filter options + filter_method = FILTER_CONVENTIONAL + """ + (int) Filtering method bitmask. + """ + inversion_method = INVERT_UNIVARIATE | SOLVE_CHOLESKY + """ + (int) Inversion method bitmask. + """ + stability_method = STABILITY_FORCE_SYMMETRY + """ + (int) Stability method bitmask. + """ + conserve_memory = MEMORY_STORE_ALL + """ + (int) Memory conservation bitmask. + """ + filter_timing = TIMING_INIT_PREDICTED + """ + (int) Filter timing. + """ + + def __init__(self, k_endog, k_states, k_posdef=None, + loglikelihood_burn=0, tolerance=1e-19, results_class=None, + kalman_filter_classes=None, **kwargs): + super(KalmanFilter, self).__init__( + k_endog, k_states, k_posdef, **kwargs + ) + + # Setup the underlying Kalman filter storage + self._kalman_filters = {} + + # Filter options + self.loglikelihood_burn = loglikelihood_burn + self.results_class = ( + results_class if results_class is not None else FilterResults + ) + # Options + self.prefix_kalman_filter_map = ( + kalman_filter_classes + if kalman_filter_classes is not None + else tools.prefix_kalman_filter_map.copy()) + + self.set_filter_method(**kwargs) + self.set_inversion_method(**kwargs) + self.set_stability_method(**kwargs) + self.set_conserve_memory(**kwargs) + self.set_filter_timing(**kwargs) + + self.tolerance = tolerance + + # Internal flags + # The _scale internal flag is used because we may want to + # use a fixed scale, in which case we want the flag to the Cython + # Kalman filter to indicate that the scale should not be concentrated + # out, so that self.filter_concentrated = False, but we still want to + # alert the results object that we are viewing the model as one in + # which the scale had been concentrated out for e.g. degree of freedom + # computations. + # This value should always be None, except within the fixed_scale + # context, and should not be modified by users or anywhere else. + self._scale = None + + @property + def _kalman_filter(self): + prefix = self.prefix + if prefix in self._kalman_filters: + return self._kalman_filters[prefix] + return None + + def _initialize_filter(self, filter_method=None, inversion_method=None, + stability_method=None, conserve_memory=None, + tolerance=None, filter_timing=None, + loglikelihood_burn=None): + if filter_method is None: + filter_method = self.filter_method + if inversion_method is None: + inversion_method = self.inversion_method + if stability_method is None: + stability_method = self.stability_method + if conserve_memory is None: + conserve_memory = self.conserve_memory + if loglikelihood_burn is None: + loglikelihood_burn = self.loglikelihood_burn + if filter_timing is None: + filter_timing = self.filter_timing + if tolerance is None: + tolerance = self.tolerance + + # Make sure we have endog + if self.endog is None: + raise RuntimeError('Must bind a dataset to the model before' + ' filtering or smoothing.') + + # Initialize the representation matrices + prefix, dtype, create_statespace = self._initialize_representation() + + # Determine if we need to (re-)create the filter + # (definitely need to recreate if we recreated the _statespace object) + create_filter = create_statespace or prefix not in self._kalman_filters + if not create_filter: + kalman_filter = self._kalman_filters[prefix] + + create_filter = ( + not kalman_filter.conserve_memory == conserve_memory or + not kalman_filter.loglikelihood_burn == loglikelihood_burn + ) + + # If the dtype-specific _kalman_filter does not exist (or if we need + # to re-create it), create it + if create_filter: + if prefix in self._kalman_filters: + # Delete the old filter + del self._kalman_filters[prefix] + # Setup the filter + cls = self.prefix_kalman_filter_map[prefix] + self._kalman_filters[prefix] = cls( + self._statespaces[prefix], filter_method, inversion_method, + stability_method, conserve_memory, filter_timing, tolerance, + loglikelihood_burn + ) + # Otherwise, update the filter parameters + else: + kalman_filter = self._kalman_filters[prefix] + kalman_filter.set_filter_method(filter_method, False) + kalman_filter.inversion_method = inversion_method + kalman_filter.stability_method = stability_method + kalman_filter.filter_timing = filter_timing + kalman_filter.tolerance = tolerance + # conserve_memory and loglikelihood_burn changes always lead to + # re-created filters + + return prefix, dtype, create_filter, create_statespace + + def set_filter_method(self, filter_method=None, **kwargs): + r""" + Set the filtering method + + The filtering method controls aspects of which Kalman filtering + approach will be used. + + Parameters + ---------- + filter_method : integer, optional + Bitmask value to set the filter method to. See notes for details. + **kwargs + Keyword arguments may be used to influence the filter method by + setting individual boolean flags. See notes for details. + + Notes + ----- + The filtering method is defined by a collection of boolean flags, and + is internally stored as a bitmask. The methods available are: + + FILTER_CONVENTIONAL = 0x01 + Conventional Kalman filter. + FILTER_UNIVARIATE = 0x10 + Univariate approach to Kalman filtering. Overrides conventional + method if both are specified. + FILTER_COLLAPSED = 0x20 + Collapsed approach to Kalman filtering. Will be used *in addition* + to conventional or univariate filtering. + FILTER_CONCENTRATED = 0x20 + Use the concentrated log-likelihood function. Will be used + *in addition* to the other options. + + Note that only the first method is available if using a Scipy version + older than 0.16. + + If the bitmask is set directly via the `filter_method` argument, then + the full method must be provided. + + If keyword arguments are used to set individual boolean flags, then + the lowercase of the method must be used as an argument name, and the + value is the desired value of the boolean flag (True or False). + + Note that the filter method may also be specified by directly modifying + the class attributes which are defined similarly to the keyword + arguments. + + The default filtering method is FILTER_CONVENTIONAL. + + Examples + -------- + >>> mod = sm.tsa.statespace.SARIMAX(range(10)) + >>> mod.ssm.filter_method + 1 + >>> mod.ssm.filter_conventional + True + >>> mod.ssm.filter_univariate = True + >>> mod.ssm.filter_method + 17 + >>> mod.ssm.set_filter_method(filter_univariate=False, + ... filter_collapsed=True) + >>> mod.ssm.filter_method + 33 + >>> mod.ssm.set_filter_method(filter_method=1) + >>> mod.ssm.filter_conventional + True + >>> mod.ssm.filter_univariate + False + >>> mod.ssm.filter_collapsed + False + >>> mod.ssm.filter_univariate = True + >>> mod.ssm.filter_method + 17 + """ + if filter_method is not None: + self.filter_method = filter_method + for name in KalmanFilter.filter_methods: + if name in kwargs: + setattr(self, name, kwargs[name]) + + def set_inversion_method(self, inversion_method=None, **kwargs): + r""" + Set the inversion method + + The Kalman filter may contain one matrix inversion: that of the + forecast error covariance matrix. The inversion method controls how and + if that inverse is performed. + + Parameters + ---------- + inversion_method : integer, optional + Bitmask value to set the inversion method to. See notes for + details. + **kwargs + Keyword arguments may be used to influence the inversion method by + setting individual boolean flags. See notes for details. + + Notes + ----- + The inversion method is defined by a collection of boolean flags, and + is internally stored as a bitmask. The methods available are: + + INVERT_UNIVARIATE = 0x01 + If the endogenous time series is univariate, then inversion can be + performed by simple division. If this flag is set and the time + series is univariate, then division will always be used even if + other flags are also set. + SOLVE_LU = 0x02 + Use an LU decomposition along with a linear solver (rather than + ever actually inverting the matrix). + INVERT_LU = 0x04 + Use an LU decomposition along with typical matrix inversion. + SOLVE_CHOLESKY = 0x08 + Use a Cholesky decomposition along with a linear solver. + INVERT_CHOLESKY = 0x10 + Use an Cholesky decomposition along with typical matrix inversion. + + If the bitmask is set directly via the `inversion_method` argument, + then the full method must be provided. + + If keyword arguments are used to set individual boolean flags, then + the lowercase of the method must be used as an argument name, and the + value is the desired value of the boolean flag (True or False). + + Note that the inversion method may also be specified by directly + modifying the class attributes which are defined similarly to the + keyword arguments. + + The default inversion method is `INVERT_UNIVARIATE | SOLVE_CHOLESKY` + + Several things to keep in mind are: + + - If the filtering method is specified to be univariate, then simple + division is always used regardless of the dimension of the endogenous + time series. + - Cholesky decomposition is about twice as fast as LU decomposition, + but it requires that the matrix be positive definite. While this + should generally be true, it may not be in every case. + - Using a linear solver rather than true matrix inversion is generally + faster and is numerically more stable. + + Examples + -------- + >>> mod = sm.tsa.statespace.SARIMAX(range(10)) + >>> mod.ssm.inversion_method + 1 + >>> mod.ssm.solve_cholesky + True + >>> mod.ssm.invert_univariate + True + >>> mod.ssm.invert_lu + False + >>> mod.ssm.invert_univariate = False + >>> mod.ssm.inversion_method + 8 + >>> mod.ssm.set_inversion_method(solve_cholesky=False, + ... invert_cholesky=True) + >>> mod.ssm.inversion_method + 16 + """ + if inversion_method is not None: + self.inversion_method = inversion_method + for name in KalmanFilter.inversion_methods: + if name in kwargs: + setattr(self, name, kwargs[name]) + + def set_stability_method(self, stability_method=None, **kwargs): + r""" + Set the numerical stability method + + The Kalman filter is a recursive algorithm that may in some cases + suffer issues with numerical stability. The stability method controls + what, if any, measures are taken to promote stability. + + Parameters + ---------- + stability_method : integer, optional + Bitmask value to set the stability method to. See notes for + details. + **kwargs + Keyword arguments may be used to influence the stability method by + setting individual boolean flags. See notes for details. + + Notes + ----- + The stability method is defined by a collection of boolean flags, and + is internally stored as a bitmask. The methods available are: + + STABILITY_FORCE_SYMMETRY = 0x01 + If this flag is set, symmetry of the predicted state covariance + matrix is enforced at each iteration of the filter, where each + element is set to the average of the corresponding elements in the + upper and lower triangle. + + If the bitmask is set directly via the `stability_method` argument, + then the full method must be provided. + + If keyword arguments are used to set individual boolean flags, then + the lowercase of the method must be used as an argument name, and the + value is the desired value of the boolean flag (True or False). + + Note that the stability method may also be specified by directly + modifying the class attributes which are defined similarly to the + keyword arguments. + + The default stability method is `STABILITY_FORCE_SYMMETRY` + + Examples + -------- + >>> mod = sm.tsa.statespace.SARIMAX(range(10)) + >>> mod.ssm.stability_method + 1 + >>> mod.ssm.stability_force_symmetry + True + >>> mod.ssm.stability_force_symmetry = False + >>> mod.ssm.stability_method + 0 + """ + if stability_method is not None: + self.stability_method = stability_method + for name in KalmanFilter.stability_methods: + if name in kwargs: + setattr(self, name, kwargs[name]) + + def set_conserve_memory(self, conserve_memory=None, **kwargs): + r""" + Set the memory conservation method + + By default, the Kalman filter computes a number of intermediate + matrices at each iteration. The memory conservation options control + which of those matrices are stored. + + Parameters + ---------- + conserve_memory : integer, optional + Bitmask value to set the memory conservation method to. See notes + for details. + **kwargs + Keyword arguments may be used to influence the memory conservation + method by setting individual boolean flags. See notes for details. + + Notes + ----- + The memory conservation method is defined by a collection of boolean + flags, and is internally stored as a bitmask. The methods available + are: + + MEMORY_STORE_ALL = 0 + Store all intermediate matrices. This is the default value. + MEMORY_NO_FORECAST = 0x01 + Do not store the forecast, forecast error, or forecast error + covariance matrices. If this option is used, the `predict` method + from the results class is unavailable. + MEMORY_NO_PREDICTED = 0x02 + Do not store the predicted state or predicted state covariance + matrices. + MEMORY_NO_FILTERED = 0x04 + Do not store the filtered state or filtered state covariance + matrices. + MEMORY_NO_LIKELIHOOD = 0x08 + Do not store the vector of loglikelihood values for each + observation. Only the sum of the loglikelihood values is stored. + MEMORY_NO_GAIN = 0x10 + Do not store the Kalman gain matrices. + MEMORY_NO_SMOOTHING = 0x20 + Do not store temporary variables related to Klaman smoothing. If + this option is used, smoothing is unavailable. + MEMORY_NO_SMOOTHING = 0x20 + Do not store standardized forecast errors. + MEMORY_CONSERVE + Do not store any intermediate matrices. + + Note that if using a Scipy version less than 0.16, the options + MEMORY_NO_GAIN, MEMORY_NO_SMOOTHING, and MEMORY_NO_STD_FORECAST + have no effect. + + If the bitmask is set directly via the `conserve_memory` argument, + then the full method must be provided. + + If keyword arguments are used to set individual boolean flags, then + the lowercase of the method must be used as an argument name, and the + value is the desired value of the boolean flag (True or False). + + Note that the memory conservation method may also be specified by + directly modifying the class attributes which are defined similarly to + the keyword arguments. + + The default memory conservation method is `MEMORY_STORE_ALL`, so that + all intermediate matrices are stored. + + Examples + -------- + >>> mod = sm.tsa.statespace.SARIMAX(range(10)) + >>> mod.ssm..conserve_memory + 0 + >>> mod.ssm.memory_no_predicted + False + >>> mod.ssm.memory_no_predicted = True + >>> mod.ssm.conserve_memory + 2 + >>> mod.ssm.set_conserve_memory(memory_no_filtered=True, + ... memory_no_forecast=True) + >>> mod.ssm.conserve_memory + 7 + """ + if conserve_memory is not None: + self.conserve_memory = conserve_memory + for name in KalmanFilter.memory_options: + if name in kwargs: + setattr(self, name, kwargs[name]) + + def set_filter_timing(self, alternate_timing=None, **kwargs): + r""" + Set the filter timing convention + + By default, the Kalman filter follows Durbin and Koopman, 2012, in + initializing the filter with predicted values. Kim and Nelson, 1999, + instead initialize the filter with filtered values, which is + essentially just a different timing convention. + + Parameters + ---------- + alternate_timing : integer, optional + Whether or not to use the alternate timing convention. Default is + unspecified. + **kwargs + Keyword arguments may be used to influence the memory conservation + method by setting individual boolean flags. See notes for details. + """ + if alternate_timing is not None: + self.filter_timing = int(alternate_timing) + if 'timing_init_predicted' in kwargs: + self.filter_timing = int(not kwargs['timing_init_predicted']) + if 'timing_init_filtered' in kwargs: + self.filter_timing = int(kwargs['timing_init_filtered']) + + @contextlib.contextmanager + def fixed_scale(self, scale): + """ + fixed_scale(scale) + + Context manager for fixing the scale when FILTER_CONCENTRATED is set + + Parameters + ---------- + scale : numeric + Scale of the model. + + Notes + ----- + This a no-op if scale is None. + + This context manager is most useful in models which are explicitly + concentrating out the scale, so that the set of parameters they are + estimating does not include the scale. + + """ + # If a scale was provided, use it and do not concentrate it out of the + # loglikelihood + if scale is not None and scale != 1: + if not self.filter_concentrated: + raise ValueError('Cannot provide scale if filter method does' + ' not include FILTER_CONCENTRATED.') + self.filter_concentrated = False + self._scale = scale + obs_cov = self['obs_cov'] + state_cov = self['state_cov'] + self['obs_cov'] = scale * obs_cov + self['state_cov'] = scale * state_cov + try: + yield + finally: + # If a scale was provided, reset the model + if scale is not None and scale != 1: + self['state_cov'] = state_cov + self['obs_cov'] = obs_cov + self.filter_concentrated = True + self._scale = None + + def _filter(self, filter_method=None, inversion_method=None, + stability_method=None, conserve_memory=None, + filter_timing=None, tolerance=None, loglikelihood_burn=None, + complex_step=False): + # Initialize the filter + prefix, dtype, create_filter, create_statespace = ( + self._initialize_filter( + filter_method, inversion_method, stability_method, + conserve_memory, filter_timing, tolerance, loglikelihood_burn + ) + ) + kfilter = self._kalman_filters[prefix] + + # Initialize the state + self._initialize_state(prefix=prefix, complex_step=complex_step) + + # Run the filter + kfilter() + + return kfilter + + def filter(self, filter_method=None, inversion_method=None, + stability_method=None, conserve_memory=None, filter_timing=None, + tolerance=None, loglikelihood_burn=None, complex_step=False): + r""" + Apply the Kalman filter to the statespace model. + + Parameters + ---------- + filter_method : int, optional + Determines which Kalman filter to use. Default is conventional. + inversion_method : int, optional + Determines which inversion technique to use. Default is by Cholesky + decomposition. + stability_method : int, optional + Determines which numerical stability techniques to use. Default is + to enforce symmetry of the predicted state covariance matrix. + conserve_memory : int, optional + Determines what output from the filter to store. Default is to + store everything. + filter_timing : int, optional + Determines the timing convention of the filter. Default is that + from Durbin and Koopman (2012), in which the filter is initialized + with predicted values. + tolerance : float, optional + The tolerance at which the Kalman filter determines convergence to + steady-state. Default is 1e-19. + loglikelihood_burn : int, optional + The number of initial periods during which the loglikelihood is not + recorded. Default is 0. + + Notes + ----- + This function by default does not compute variables required for + smoothing. + """ + if conserve_memory is None: + conserve_memory = self.conserve_memory | MEMORY_NO_SMOOTHING + + # Run the filter + kfilter = self._filter( + filter_method, inversion_method, stability_method, conserve_memory, + filter_timing, tolerance, loglikelihood_burn, complex_step) + + # Create the results object + results = self.results_class(self) + results.update_representation(self) + results.update_filter(kfilter) + + return results + + def loglike(self, **kwargs): + r""" + Calculate the loglikelihood associated with the statespace model. + + Parameters + ---------- + **kwargs + Additional keyword arguments to pass to the Kalman filter. See + `KalmanFilter.filter` for more details. + + Returns + ------- + loglike : float + The joint loglikelihood. + """ + if self.memory_no_likelihood: + raise RuntimeError('Cannot compute loglikelihood if' + ' MEMORY_NO_LIKELIHOOD option is selected.') + kwargs['conserve_memory'] = MEMORY_CONSERVE ^ MEMORY_NO_LIKELIHOOD + kfilter = self._filter(**kwargs) + loglikelihood_burn = kwargs.get('loglikelihood_burn', + self.loglikelihood_burn) + loglike = np.sum(kfilter.loglikelihood[loglikelihood_burn:]) + + # Need to modify the computed log-likelihood to incorporate the + # MLE scale. + if self.filter_method & FILTER_CONCENTRATED: + d = max(loglikelihood_burn, kfilter.nobs_diffuse) + nobs_k_endog = np.sum( + self.k_endog - + np.array(self._statespace.nmissing)[d:]) + + # In the univariate case, we need to subtract observations + # associated with a singular forecast error covariance matrix + nobs_k_endog -= kfilter.nobs_kendog_univariate_singular + + scale = np.sum(kfilter.scale[d:]) / nobs_k_endog + + loglike += -0.5 * nobs_k_endog + + # Now need to modify this for diffuse initialization, since for + # diffuse periods we only need to add in the scale value part if + # the diffuse forecast error covariance matrix element was singular + if kfilter.nobs_diffuse > 0: + nobs_k_endog -= kfilter.nobs_kendog_diffuse_nonsingular + + loglike += -0.5 * nobs_k_endog * np.log(scale) + return loglike + + def loglikeobs(self, **kwargs): + r""" + Calculate the loglikelihood for each observation associated with the + statespace model. + + Parameters + ---------- + **kwargs + Additional keyword arguments to pass to the Kalman filter. See + `KalmanFilter.filter` for more details. + + Notes + ----- + If `loglikelihood_burn` is positive, then the entries in the returned + loglikelihood vector are set to be zero for those initial time periods. + + Returns + ------- + loglike : array of float + Array of loglikelihood values for each observation. + """ + if self.memory_no_likelihood: + raise RuntimeError('Cannot compute loglikelihood if' + ' MEMORY_NO_LIKELIHOOD option is selected.') + if not self.filter_method & FILTER_CONCENTRATED: + kwargs['conserve_memory'] = MEMORY_CONSERVE ^ MEMORY_NO_LIKELIHOOD + kfilter = self._filter(**kwargs) + llf_obs = np.array(kfilter.loglikelihood, copy=True) + loglikelihood_burn = kwargs.get('loglikelihood_burn', + self.loglikelihood_burn) + + # If the scale was concentrated out of the log-likelihood function, + # then the llf_obs above is: + # -0.5 * k_endog * log 2 * pi - 0.5 * log |F_t| + # and we need to add in the effect of the scale: + # -0.5 * k_endog * log scale - 0.5 v' F_t^{-1} v / scale + # and note that v' F_t^{-1} is in the _kalman_filter.scale array + # Also note that we need to adjust the nobs and k_endog in both the + # denominator of the scale computation and in the llf_obs adjustment + # to take into account missing values. + if self.filter_method & FILTER_CONCENTRATED: + d = max(loglikelihood_burn, kfilter.nobs_diffuse) + nmissing = np.array(self._statespace.nmissing) + nobs_k_endog = np.sum(self.k_endog - nmissing[d:]) + + # In the univariate case, we need to subtract observations + # associated with a singular forecast error covariance matrix + nobs_k_endog -= kfilter.nobs_kendog_univariate_singular + + scale = np.sum(kfilter.scale[d:]) / nobs_k_endog + + # Need to modify this for diffuse initialization, since for + # diffuse periods we only need to add in the scale value if the + # diffuse forecast error covariance matrix element was singular + nsingular = 0 + if kfilter.nobs_diffuse > 0: + d = kfilter.nobs_diffuse + Finf = kfilter.forecast_error_diffuse_cov + singular = np.diagonal(Finf).real <= kfilter.tolerance_diffuse + nsingular = np.sum(~singular, axis=1) + + scale_obs = np.array(kfilter.scale, copy=True) + llf_obs += -0.5 * ( + (self.k_endog - nmissing - nsingular) * np.log(scale) + + scale_obs / scale) + + # Set any burned observations to have zero likelihood + llf_obs[:loglikelihood_burn] = 0 + + return llf_obs + + def simulate(self, nsimulations, measurement_shocks=None, + state_shocks=None, initial_state=None): + r""" + Simulate a new time series following the state space model + + Parameters + ---------- + nsimulations : int + The number of observations to simulate. If the model is + time-invariant this can be any number. If the model is + time-varying, then this number must be less than or equal to the + number + measurement_shocks : array_like, optional + If specified, these are the shocks to the measurement equation, + :math:`\varepsilon_t`. If unspecified, these are automatically + generated using a pseudo-random number generator. If specified, + must be shaped `nsimulations` x `k_endog`, where `k_endog` is the + same as in the state space model. + state_shocks : array_like, optional + If specified, these are the shocks to the state equation, + :math:`\eta_t`. If unspecified, these are automatically + generated using a pseudo-random number generator. If specified, + must be shaped `nsimulations` x `k_posdef` where `k_posdef` is the + same as in the state space model. + initial_state : array_like, optional + If specified, this is the state vector at time zero, which should + be shaped (`k_states` x 1), where `k_states` is the same as in the + state space model. If unspecified, but the model has been + initialized, then that initialization is used. If unspecified and + the model has not been initialized, then a vector of zeros is used. + Note that this is not included in the returned `simulated_states` + array. + + Returns + ------- + simulated_obs : array + An (nsimulations x k_endog) array of simulated observations. + simulated_states : array + An (nsimulations x k_states) array of simulated states. + """ + time_invariant = self.time_invariant + # Check for valid number of simulations + if not time_invariant and nsimulations > self.nobs: + raise ValueError('In a time-varying model, cannot create more' + ' simulations than there are observations.') + + # Check / generate measurement shocks + if measurement_shocks is not None: + measurement_shocks = np.array(measurement_shocks) + if measurement_shocks.ndim == 0: + measurement_shocks = measurement_shocks[np.newaxis, np.newaxis] + elif measurement_shocks.ndim == 1: + measurement_shocks = measurement_shocks[:, np.newaxis] + if not measurement_shocks.shape == (nsimulations, self.k_endog): + raise ValueError('Invalid shape of provided measurement' + ' shocks. Required (%d, %d)' + % (nsimulations, self.k_endog)) + elif self.shapes['obs_cov'][-1] == 1: + measurement_shocks = np.random.multivariate_normal( + mean=np.zeros(self.k_endog), cov=self['obs_cov'], + size=nsimulations) + + # Check / generate state shocks + if state_shocks is not None: + state_shocks = np.array(state_shocks) + if state_shocks.ndim == 0: + state_shocks = state_shocks[np.newaxis, np.newaxis] + elif state_shocks.ndim == 1: + state_shocks = state_shocks[:, np.newaxis] + if not state_shocks.shape == (nsimulations, self.k_posdef): + raise ValueError('Invalid shape of provided state shocks.' + ' Required (%d, %d).' + % (nsimulations, self.k_posdef)) + elif self.shapes['state_cov'][-1] == 1: + state_shocks = np.random.multivariate_normal( + mean=np.zeros(self.k_posdef), cov=self['state_cov'], + size=nsimulations) + + # Get the initial states + if initial_state is not None: + initial_state = np.array(initial_state) + if initial_state.ndim == 0: + initial_state = initial_state[np.newaxis] + elif (initial_state.ndim > 1 and + not initial_state.shape == (self.k_states, 1)): + raise ValueError('Invalid shape of provided initial state' + ' vector. Required (%d, 1)' % self.k_states) + elif self.initialization == 'known': + initial_state = np.random.multivariate_normal( + self._initial_state, self._initial_state_cov) + elif self.initialization == 'stationary': + from scipy.linalg import solve_discrete_lyapunov + # (I - T)^{-1} c = x => (I - T) x = c + initial_state_mean = np.linalg.solve( + np.eye(self.k_states) - self['transition', :, :, 0], + self['state_intercept', :, 0]) + R = self['selection', :, :, 0] + Q = self['state_cov', :, :, 0] + selected_state_cov = R.dot(Q).dot(R.T) + initial_state_cov = solve_discrete_lyapunov( + self['transition', :, :, 0], selected_state_cov) + initial_state = np.random.multivariate_normal( + initial_state_mean, initial_state_cov) + elif self.initialization == 'approximate_diffuse': + initial_state = np.zeros(self.k_states) + elif self.initialization is not None: + out = self.initialization(model=self) + initial_state = out[0] + np.random.multivariate_normal( + np.zeros_like(out[0]), out[2]) + else: + initial_state = np.zeros(self.k_states) + + return self._simulate(nsimulations, measurement_shocks, state_shocks, + initial_state) + + def _simulate(self, nsimulations, measurement_shocks, state_shocks, + initial_state): + time_invariant = self.time_invariant + + # Holding variables for the simulations + simulated_obs = np.zeros((nsimulations, self.k_endog), + dtype=self.dtype) + simulated_states = np.zeros((nsimulations+1, self.k_states), + dtype=self.dtype) + simulated_states[0] = initial_state + + # Perform iterations to create the new time series + obs_intercept_t = 0 + design_t = 0 + state_intercept_t = 0 + transition_t = 0 + selection_t = 0 + for t in range(nsimulations): + # Get the current shocks (this accomodates time-varying matrices) + if measurement_shocks is None: + measurement_shock = np.random.multivariate_normal( + mean=np.zeros(self.k_endog), cov=self['obs_cov', :, :, t]) + else: + measurement_shock = measurement_shocks[t] + + if state_shocks is None: + state_shock = np.random.multivariate_normal( + mean=np.zeros(self.k_posdef), + cov=self['state_cov', :, :, t]) + else: + state_shock = state_shocks[t] + + # Get current-iteration matrices + if not time_invariant: + obs_intercept_t = 0 if self.obs_intercept.shape[-1] == 1 else t + design_t = 0 if self.design.shape[-1] == 1 else t + state_intercept_t = ( + 0 if self.state_intercept.shape[-1] == 1 else t) + transition_t = 0 if self.transition.shape[-1] == 1 else t + selection_t = 0 if self.selection.shape[-1] == 1 else t + + obs_intercept = self['obs_intercept', :, obs_intercept_t] + design = self['design', :, :, design_t] + state_intercept = self['state_intercept', :, state_intercept_t] + transition = self['transition', :, :, transition_t] + selection = self['selection', :, :, selection_t] + + # Iterate the measurement equation + simulated_obs[t] = ( + obs_intercept + np.dot(design, simulated_states[t]) + + measurement_shock) + + # Iterate the state equation + simulated_states[t+1] = ( + state_intercept + np.dot(transition, simulated_states[t]) + + np.dot(selection, state_shock)) + + return simulated_obs, simulated_states[:-1] + + def impulse_responses(self, steps=10, impulse=0, orthogonalized=False, + cumulative=False, **kwargs): + r""" + Impulse response function + + Parameters + ---------- + steps : int, optional + The number of steps for which impulse responses are calculated. + Default is 10. Note that the initial impulse is not counted as a + step, so if `steps=1`, the output will have 2 entries. + impulse : int or array_like + If an integer, the state innovation to pulse; must be between 0 + and `k_posdef-1` where `k_posdef` is the same as in the state + space model. Alternatively, a custom impulse vector may be + provided; must be a column vector with shape `(k_posdef, 1)`. + orthogonalized : boolean, optional + Whether or not to perform impulse using orthogonalized innovations. + Note that this will also affect custum `impulse` vectors. Default + is False. + cumulative : boolean, optional + Whether or not to return cumulative impulse responses. Default is + False. + **kwargs + If the model is time-varying and `steps` is greater than the number + of observations, any of the state space representation matrices + that are time-varying must have updated values provided for the + out-of-sample steps. + For example, if `design` is a time-varying component, `nobs` is 10, + and `steps` is 15, a (`k_endog` x `k_states` x 5) matrix must be + provided with the new design matrix values. + + Returns + ------- + impulse_responses : array + Responses for each endogenous variable due to the impulse + given by the `impulse` argument. A (steps + 1 x k_endog) array. + + Notes + ----- + Intercepts in the measurement and state equation are ignored when + calculating impulse responses. + + """ + # Since the first step is the impulse itself, we actually want steps+1 + steps += 1 + + # Check for what kind of impulse we want + if type(impulse) == int: + if impulse >= self.k_posdef or impulse < 0: + raise ValueError('Invalid value for `impulse`. Must be the' + ' index of one of the state innovations.') + + # Create the (non-orthogonalized) impulse vector + idx = impulse + impulse = np.zeros(self.k_posdef) + impulse[idx] = 1 + else: + impulse = np.array(impulse) + if impulse.ndim > 1: + impulse = np.squeeze(impulse) + if not impulse.shape == (self.k_posdef,): + raise ValueError('Invalid impulse vector. Must be shaped' + ' (%d,)' % self.k_posdef) + + # Orthogonalize the impulses, if requested, using Cholesky on the + # first state covariance matrix + if orthogonalized: + state_chol = np.linalg.cholesky(self.state_cov[:, :, 0]) + impulse = np.dot(state_chol, impulse) + + # If we have a time-invariant system, we can solve for the IRF directly + # Note that it doesn't matter if we have time-invariant intercepts, + # since those don't affect the IRF anyway + time_invariant = ( + self._design.shape[2] == self._obs_cov.shape[2] == + self._transition.shape[2] == self._selection.shape[2] == + self._state_cov.shape[2]) + if time_invariant: + # Get the state space matrices + design = self.design[:, :, 0] + transition = self.transition[:, :, 0] + selection = self.selection[:, :, 0] + + # Holding arrays + irf = np.zeros((steps, self.k_endog), dtype=self.dtype) + states = np.zeros((steps, self.k_states), dtype=self.dtype) + + # First iteration + states[0] = np.dot(selection, impulse) + irf[0] = np.dot(design, states[0]) + + # Iterations + for t in range(1, steps): + states[t] = np.dot(transition, states[t-1]) + irf[t] = np.dot(design, states[t]) + + # Otherwise, create a new model + else: + # Get the basic model components + representation = {} + for name, shape in self.shapes.items(): + if name in ['obs', 'obs_intercept', 'state_intercept']: + continue + representation[name] = getattr(self, name) + + # Allow additional specification + warning = ('Model has time-invariant %s matrix, so the %s' + ' argument to `irf` has been ignored.') + exception = ('Impulse response functions for models with' + ' time-varying %s matrix requires an updated' + ' time-varying matrix for any periods beyond those in' + ' the original model.') + for name, shape in self.shapes.items(): + if name in ['obs', 'obs_intercept', 'state_intercept']: + continue + if representation[name].shape[-1] == 1: + if name in kwargs: + warn(warning % (name, name), ValueWarning) + elif name not in kwargs: + raise ValueError(exception % name) + else: + mat = np.asarray(kwargs[name]) + validate_matrix_shape(name, mat.shape, shape[0], + shape[1], steps) + if mat.ndim < 3 or not mat.shape[2] == steps: + raise ValueError(exception % name) + representation[name] = np.c_[representation[name], mat] + + # Setup the new statespace representation + model_kwargs = { + 'filter_method': self.filter_method, + 'inversion_method': self.inversion_method, + 'stability_method': self.stability_method, + 'conserve_memory': self.conserve_memory, + 'tolerance': self.tolerance, + 'loglikelihood_burn': self.loglikelihood_burn + } + model_kwargs.update(representation) + model = self.__class__(np.zeros(self.endog.T.shape), self.k_states, + self.k_posdef, **model_kwargs) + model.initialize_approximate_diffuse() + model._initialize_filter() + model._initialize_state() + + # Get the impulse response function via simulation of the state + # space model, but with other shocks set to zero + # Since simulate returns the zero-th period, we need to simulate + # steps + 1 periods and exclude the zero-th observation. + steps += 1 + measurement_shocks = np.zeros((steps, self.k_endog)) + state_shocks = np.zeros((steps, self.k_posdef)) + state_shocks[0] = impulse + irf, _ = model.simulate( + steps, measurement_shocks=measurement_shocks, + state_shocks=state_shocks) + irf = irf[1:] + + # Get the cumulative response if requested + if cumulative: + irf = np.cumsum(irf, axis=0) + + return irf + + +class FilterResults(FrozenRepresentation): + """ + Results from applying the Kalman filter to a state space model. + + Parameters + ---------- + model : Representation + A Statespace representation + + Attributes + ---------- + nobs : int + Number of observations. + nobs_diffuse : int + Number of observations under the diffuse Kalman filter. + k_endog : int + The dimension of the observation series. + k_states : int + The dimension of the unobserved state process. + k_posdef : int + The dimension of a guaranteed positive definite + covariance matrix describing the shocks in the + measurement equation. + dtype : dtype + Datatype of representation matrices + prefix : str + BLAS prefix of representation matrices + shapes : dictionary of name,tuple + A dictionary recording the shapes of each of the + representation matrices as tuples. + endog : array + The observation vector. + design : array + The design matrix, :math:`Z`. + obs_intercept : array + The intercept for the observation equation, :math:`d`. + obs_cov : array + The covariance matrix for the observation equation :math:`H`. + transition : array + The transition matrix, :math:`T`. + state_intercept : array + The intercept for the transition equation, :math:`c`. + selection : array + The selection matrix, :math:`R`. + state_cov : array + The covariance matrix for the state equation :math:`Q`. + missing : array of bool + An array of the same size as `endog`, filled + with boolean values that are True if the + corresponding entry in `endog` is NaN and False + otherwise. + nmissing : array of int + An array of size `nobs`, where the ith entry + is the number (between 0 and `k_endog`) of NaNs in + the ith row of the `endog` array. + time_invariant : bool + Whether or not the representation matrices are time-invariant + initialization : str + Kalman filter initialization method. + initial_state : array_like + The state vector used to initialize the Kalamn filter. + initial_state_cov : array_like + The state covariance matrix used to initialize the Kalamn filter. + initial_diffuse_state_cov : array_like + Diffuse state covariance matrix used to initialize the Kalamn filter. + filter_method : int + Bitmask representing the Kalman filtering method + inversion_method : int + Bitmask representing the method used to + invert the forecast error covariance matrix. + stability_method : int + Bitmask representing the methods used to promote + numerical stability in the Kalman filter + recursions. + conserve_memory : int + Bitmask representing the selected memory conservation method. + filter_timing : int + Whether or not to use the alternate timing convention. + tolerance : float + The tolerance at which the Kalman filter + determines convergence to steady-state. + loglikelihood_burn : int + The number of initial periods during which + the loglikelihood is not recorded. + converged : bool + Whether or not the Kalman filter converged. + period_converged : int + The time period in which the Kalman filter converged. + filtered_state : array + The filtered state vector at each time period. + filtered_state_cov : array + The filtered state covariance matrix at each time period. + predicted_state : array + The predicted state vector at each time period. + predicted_state_cov : array + The predicted state covariance matrix at each time period. + forecast_error_diffuse_cov : array + Diffuse forecast error covariance matrix at each time period. + predicted_diffuse_state_cov : array + The predicted diffuse state covariance matrix at each time period. + kalman_gain : array + The Kalman gain at each time period. + forecasts : array + The one-step-ahead forecasts of observations at each time period. + forecasts_error : array + The forecast errors at each time period. + forecasts_error_cov : array + The forecast error covariance matrices at each time period. + llf_obs : array + The loglikelihood values at each time period. + """ + _filter_attributes = [ + 'filter_method', 'inversion_method', 'stability_method', + 'conserve_memory', 'filter_timing', 'tolerance', 'loglikelihood_burn', + 'converged', 'period_converged', 'filtered_state', + 'filtered_state_cov', 'predicted_state', 'predicted_state_cov', + 'forecasts_error_diffuse_cov', 'predicted_diffuse_state_cov', + 'tmp1', 'tmp2', 'tmp3', 'tmp4', 'forecasts', + 'forecasts_error', 'forecasts_error_cov', 'llf_obs', + 'collapsed_forecasts', 'collapsed_forecasts_error', + 'collapsed_forecasts_error_cov', 'scale' + ] + + _filter_options = ( + KalmanFilter.filter_methods + KalmanFilter.stability_methods + + KalmanFilter.inversion_methods + KalmanFilter.memory_options + ) + + _attributes = FrozenRepresentation._model_attributes + _filter_attributes + + def __init__(self, model): + super(FilterResults, self).__init__(model) + + # Setup caches for uninitialized objects + self._kalman_gain = None + self._standardized_forecasts_error = None + + def update_representation(self, model, only_options=False): + """ + Update the results to match a given model + + Parameters + ---------- + model : Representation + The model object from which to take the updated values. + only_options : boolean, optional + If set to true, only the filter options are updated, and the state + space representation is not updated. Default is False. + + Notes + ----- + This method is rarely required except for internal usage. + """ + if not only_options: + super(FilterResults, self).update_representation(model) + + # Save the options as boolean variables + for name in self._filter_options: + setattr(self, name, getattr(model, name, None)) + + def update_filter(self, kalman_filter): + """ + Update the filter results + + Parameters + ---------- + kalman_filter : statespace.kalman_filter.KalmanFilter + The model object from which to take the updated values. + + Notes + ----- + This method is rarely required except for internal usage. + """ + # State initialization + self.initial_state = np.array( + kalman_filter.model.initial_state, copy=True + ) + self.initial_state_cov = np.array( + kalman_filter.model.initial_state_cov, copy=True + ) + + # Save Kalman filter parameters + self.filter_method = kalman_filter.filter_method + self.inversion_method = kalman_filter.inversion_method + self.stability_method = kalman_filter.stability_method + self.conserve_memory = kalman_filter.conserve_memory + self.filter_timing = kalman_filter.filter_timing + self.tolerance = kalman_filter.tolerance + self.loglikelihood_burn = kalman_filter.loglikelihood_burn + + # Save Kalman filter output + self.converged = bool(kalman_filter.converged) + self.period_converged = kalman_filter.period_converged + + self.filtered_state = np.array(kalman_filter.filtered_state, copy=True) + self.filtered_state_cov = np.array( + kalman_filter.filtered_state_cov, copy=True + ) + self.predicted_state = np.array( + kalman_filter.predicted_state, copy=True + ) + self.predicted_state_cov = np.array( + kalman_filter.predicted_state_cov, copy=True + ) + + # Reset caches + has_missing = np.sum(self.nmissing) > 0 + if not (self.memory_no_std_forecast or self.invert_lu or + self.solve_lu or self.filter_collapsed): + if has_missing: + self._standardized_forecasts_error = np.array( + reorder_missing_vector( + kalman_filter.standardized_forecast_error, + self.missing, prefix=self.prefix)) + else: + self._standardized_forecasts_error = np.array( + kalman_filter.standardized_forecast_error, copy=True) + else: + self._standardized_forecasts_error = None + + # In the partially missing data case, all entries will + # be in the upper left submatrix rather than the correct placement + # Re-ordering does not make sense in the collapsed case. + if has_missing and (not self.memory_no_gain and + not self.filter_collapsed): + self._kalman_gain = np.array(reorder_missing_matrix( + kalman_filter.kalman_gain, self.missing, reorder_cols=True, + prefix=self.prefix)) + self.tmp1 = np.array(reorder_missing_matrix( + kalman_filter.tmp1, self.missing, reorder_cols=True, + prefix=self.prefix)) + self.tmp2 = np.array(reorder_missing_vector( + kalman_filter.tmp2, self.missing, prefix=self.prefix)) + self.tmp3 = np.array(reorder_missing_matrix( + kalman_filter.tmp3, self.missing, reorder_rows=True, + prefix=self.prefix)) + self.tmp4 = np.array(reorder_missing_matrix( + kalman_filter.tmp4, self.missing, reorder_cols=True, + reorder_rows=True, prefix=self.prefix)) + else: + self._kalman_gain = np.array( + kalman_filter.kalman_gain, copy=True) + self.tmp1 = np.array(kalman_filter.tmp1, copy=True) + self.tmp2 = np.array(kalman_filter.tmp2, copy=True) + self.tmp3 = np.array(kalman_filter.tmp3, copy=True) + self.tmp4 = np.array(kalman_filter.tmp4, copy=True) + self.M = np.array(kalman_filter.M, copy=True) + self.M_diffuse = np.array(kalman_filter.M_inf, copy=True) + + # Note: use forecasts rather than forecast, so as not to interfer + # with the `forecast` methods in subclasses + self.forecasts = np.array(kalman_filter.forecast, copy=True) + self.forecasts_error = np.array( + kalman_filter.forecast_error, copy=True + ) + self.forecasts_error_cov = np.array( + kalman_filter.forecast_error_cov, copy=True + ) + self.llf_obs = np.array(kalman_filter.loglikelihood, copy=True) + + # Diffuse objects + self.nobs_diffuse = kalman_filter.nobs_diffuse + self.initial_diffuse_state_cov = None + self.forecasts_error_diffuse_cov = None + self.predicted_diffuse_state_cov = None + if self.nobs_diffuse > 0: + self.initial_diffuse_state_cov = np.array( + kalman_filter.model.initial_diffuse_state_cov, copy=True) + self.predicted_diffuse_state_cov = np.array( + kalman_filter.predicted_diffuse_state_cov, copy=True) + if has_missing and not self.filter_collapsed: + self.forecasts_error_diffuse_cov = np.array( + reorder_missing_matrix( + kalman_filter.forecast_error_diffuse_cov, + self.missing, reorder_cols=True, reorder_rows=True, + prefix=self.prefix)) + else: + self.forecasts_error_diffuse_cov = np.array( + kalman_filter.forecast_error_diffuse_cov, copy=True) + + # If there was missing data, save the original values from the Kalman + # filter output, since below will set the values corresponding to + # the missing observations to nans. + self.missing_forecasts = None + self.missing_forecasts_error = None + self.missing_forecasts_error_cov = None + if np.sum(self.nmissing) > 0: + # Copy the provided arrays (which are as the Kalman filter dataset) + # into new variables + self.missing_forecasts = np.copy(self.forecasts) + self.missing_forecasts_error = np.copy(self.forecasts_error) + self.missing_forecasts_error_cov = ( + np.copy(self.forecasts_error_cov) + ) + + # Save the collapsed values + self.collapsed_forecasts = None + self.collapsed_forecasts_error = None + self.collapsed_forecasts_error_cov = None + if self.filter_collapsed: + # Copy the provided arrays (which are from the collapsed dataset) + # into new variables + self.collapsed_forecasts = self.forecasts[:self.k_states, :] + self.collapsed_forecasts_error = ( + self.forecasts_error[:self.k_states, :] + ) + self.collapsed_forecasts_error_cov = ( + self.forecasts_error_cov[:self.k_states, :self.k_states, :] + ) + # Recreate the original arrays (which should be from the original + # dataset) in the appropriate dimension + self.forecasts = np.zeros((self.k_endog, self.nobs)) + self.forecasts_error = np.zeros((self.k_endog, self.nobs)) + self.forecasts_error_cov = ( + np.zeros((self.k_endog, self.k_endog, self.nobs)) + ) + + # Fill in missing values in the forecast, forecast error, and + # forecast error covariance matrix (this is required due to how the + # Kalman filter implements observations that are either partly or + # completely missing) + # Construct the predictions, forecasts + if not (self.memory_no_forecast or self.memory_no_predicted): + for t in range(self.nobs): + design_t = 0 if self.design.shape[2] == 1 else t + obs_cov_t = 0 if self.obs_cov.shape[2] == 1 else t + obs_intercept_t = 0 if self.obs_intercept.shape[1] == 1 else t + + # For completely missing observations, the Kalman filter will + # produce forecasts, but forecast errors and the forecast + # error covariance matrix will be zeros - make them nan to + # improve clarity of results. + if self.nmissing[t] > 0: + mask = ~self.missing[:, t].astype(bool) + # We can recover forecasts + # For partially missing observations, the Kalman filter + # will produce all elements (forecasts, forecast errors, + # forecast error covariance matrices) as usual, but their + # dimension will only be equal to the number of non-missing + # elements, and their location in memory will be in the + # first blocks (e.g. for the forecasts_error, the first + # k_endog - nmissing[t] columns will be filled in), + # regardless of which endogenous variables they refer to + # (i.e. the non- missing endogenous variables for that + # observation). Furthermore, the forecast error covariance + # matrix is only valid for those elements. What is done is + # to set all elements to nan for these observations so that + # they are flagged as missing. The variables + # missing_forecasts, etc. then provide the forecasts, etc. + # provided by the Kalman filter, from which the data can be + # retrieved if desired. + self.forecasts[:, t] = np.dot( + self.design[:, :, design_t], self.predicted_state[:, t] + ) + self.obs_intercept[:, obs_intercept_t] + self.forecasts_error[:, t] = np.nan + self.forecasts_error[mask, t] = ( + self.endog[mask, t] - self.forecasts[mask, t]) + # TODO: We should only fill in the non-masked elements of + # this array. Also, this will give the multivariate version + # even if univariate filtering was selected. Instead, we + # should use the reordering methods and then replace the + # masked values with NaNs + self.forecasts_error_cov[:, :, t] = np.dot( + np.dot(self.design[:, :, design_t], + self.predicted_state_cov[:, :, t]), + self.design[:, :, design_t].T + ) + self.obs_cov[:, :, obs_cov_t] + # In the collapsed case, everything just needs to be rebuilt + # for the original observed data, since the Kalman filter + # produced these values for the collapsed data. + elif self.filter_collapsed: + self.forecasts[:, t] = np.dot( + self.design[:, :, design_t], self.predicted_state[:, t] + ) + self.obs_intercept[:, obs_intercept_t] + + self.forecasts_error[:, t] = ( + self.endog[:, t] - self.forecasts[:, t] + ) + + self.forecasts_error_cov[:, :, t] = np.dot( + np.dot(self.design[:, :, design_t], + self.predicted_state_cov[:, :, t]), + self.design[:, :, design_t].T + ) + self.obs_cov[:, :, obs_cov_t] + + # Note: if we concentrated out the scale, need to adjust the + # loglikelihood values and all of the covariance matrices and the + # values that depend on the covariance matrices + # Note: concentrated computation is not permitted with collapsed + # version, so we do not need to modify collapsed arrays. + self.scale = 1. + if self.filter_concentrated and self.model._scale is None: + d = max(self.loglikelihood_burn, self.nobs_diffuse) + # Compute the scale + nmissing = np.array(kalman_filter.model.nmissing) + nobs_k_endog = np.sum(self.k_endog - nmissing[d:]) + + # In the univariate case, we need to subtract observations + # associated with a singular forecast error covariance matrix + nobs_k_endog -= kalman_filter.nobs_kendog_univariate_singular + + scale_obs = np.array(kalman_filter.scale, copy=True) + self.scale = np.sum(scale_obs[d:]) / nobs_k_endog + + # Need to modify this for diffuse initialization, since for + # diffuse periods we only need to add in the scale value if the + # diffuse forecast error covariance matrix element was singular + nsingular = 0 + if kalman_filter.nobs_diffuse > 0: + d = kalman_filter.nobs_diffuse + Finf = kalman_filter.forecast_error_diffuse_cov + singular = (np.diagonal(Finf).real <= + kalman_filter.tolerance_diffuse) + nsingular = np.sum(~singular, axis=1) + + # Adjust the loglikelihood obs (see `KalmanFilter.loglikeobs` for + # defaults on the adjustment) + self.llf_obs += -0.5 * ( + (self.k_endog - nmissing - nsingular) * np.log(self.scale) + + scale_obs / self.scale) + + # Scale the filter output + self.obs_cov = self.obs_cov * self.scale + self.state_cov = self.state_cov * self.scale + + self.initial_state_cov = self.initial_state_cov * self.scale + self.predicted_state_cov = self.predicted_state_cov * self.scale + self.filtered_state_cov = self.filtered_state_cov * self.scale + self.forecasts_error_cov = self.forecasts_error_cov * self.scale + if self.missing_forecasts_error_cov is not None: + self.missing_forecasts_error_cov = ( + self.missing_forecasts_error_cov * self.scale) + + # Note: do not have to adjust the Kalman gain or tmp4 + self.tmp1 = self.tmp1 * self.scale + self.tmp2 = self.tmp2 / self.scale + self.tmp3 = self.tmp3 / self.scale + if not (self.memory_no_std_forecast or + self.invert_lu or + self.solve_lu or + self.filter_collapsed): + self._standardized_forecasts_error = ( + self._standardized_forecasts_error / self.scale**0.5) + # The self.model._scale value is only not None within a fixed_scale + # context, in which case it is set and indicates that we should + # generally view this results object as using a concentrated scale + # (e.g. for d.o.f. computations), but because the fixed scale was + # actually applied to the model prior to filtering, we do not need to + # make any adjustments to the filter output, etc. + elif self.model._scale is not None: + self.filter_concentrated = True + self.scale = self.model._scale + + @property + def kalman_gain(self): + """ + Kalman gain matrices + """ + if self._kalman_gain is None: + # k x n + self._kalman_gain = np.zeros( + (self.k_states, self.k_endog, self.nobs), dtype=self.dtype) + for t in range(self.nobs): + # In the case of entirely missing observations, let the Kalman + # gain be zeros. + if self.nmissing[t] == self.k_endog: + continue + + design_t = 0 if self.design.shape[2] == 1 else t + transition_t = 0 if self.transition.shape[2] == 1 else t + if self.nmissing[t] == 0: + self._kalman_gain[:, :, t] = np.dot( + np.dot( + self.transition[:, :, transition_t], + self.predicted_state_cov[:, :, t] + ), + np.dot( + np.transpose(self.design[:, :, design_t]), + np.linalg.inv(self.forecasts_error_cov[:, :, t]) + ) + ) + else: + mask = ~self.missing[:, t].astype(bool) + F = self.forecasts_error_cov[np.ix_(mask, mask, [t])] + self._kalman_gain[:, mask, t] = np.dot( + np.dot( + self.transition[:, :, transition_t], + self.predicted_state_cov[:, :, t] + ), + np.dot( + np.transpose(self.design[mask, :, design_t]), + np.linalg.inv(F[:, :, 0]) + ) + ) + return self._kalman_gain + + @property + def standardized_forecasts_error(self): + r""" + Standardized forecast errors + + Notes + ----- + The forecast errors produced by the Kalman filter are + + .. math:: + + v_t \sim N(0, F_t) + + Hypothesis tests are usually applied to the standardized residuals + + .. math:: + + v_t^s = B_t v_t \sim N(0, I) + + where :math:`B_t = L_t^{-1}` and :math:`F_t = L_t L_t'`; then + :math:`F_t^{-1} = (L_t')^{-1} L_t^{-1} = B_t' B_t`; :math:`B_t` + and :math:`L_t` are lower triangular. Finally, + :math:`B_t v_t \sim N(0, B_t F_t B_t')` and + :math:`B_t F_t B_t' = L_t^{-1} L_t L_t' (L_t')^{-1} = I`. + + Thus we can rewrite :math:`v_t^s = L_t^{-1} v_t` or + :math:`L_t v_t^s = v_t`; the latter equation is the form required to + use a linear solver to recover :math:`v_t^s`. Since :math:`L_t` is + lower triangular, we can use a triangular solver (?TRTRS). + """ + if self._standardized_forecasts_error is None: + if self.k_endog == 1: + self._standardized_forecasts_error = ( + self.forecasts_error / + self.forecasts_error_cov[0, 0, :]**0.5) + else: + from scipy import linalg + self._standardized_forecasts_error = np.zeros( + self.forecasts_error.shape, dtype=self.dtype) + for t in range(self.forecasts_error_cov.shape[2]): + if self.nmissing[t] > 0: + self._standardized_forecasts_error[:, t] = np.nan + if self.nmissing[t] < self.k_endog: + mask = ~self.missing[:, t].astype(bool) + F = self.forecasts_error_cov[np.ix_(mask, mask, [t])] + upper, _ = linalg.cho_factor(F[:, :, 0]) + self._standardized_forecasts_error[mask, t] = ( + linalg.solve_triangular( + upper, self.forecasts_error[mask, t], trans=1)) + + return self._standardized_forecasts_error + + def predict(self, start=None, end=None, dynamic=None, **kwargs): + r""" + In-sample and out-of-sample prediction for state space models generally + + Parameters + ---------- + start : int, optional + Zero-indexed observation number at which to start forecasting, + i.e., the first forecast will be at start. + end : int, optional + Zero-indexed observation number at which to end forecasting, i.e., + the last forecast will be at end. + dynamic : int, optional + Offset relative to `start` at which to begin dynamic prediction. + Prior to this observation, true endogenous values will be used for + prediction; starting with this observation and continuing through + the end of prediction, forecasted endogenous values will be used + instead. + **kwargs + If the prediction range is outside of the sample range, any + of the state space representation matrices that are time-varying + must have updated values provided for the out-of-sample range. + For example, of `obs_intercept` is a time-varying component and + the prediction range extends 10 periods beyond the end of the + sample, a (`k_endog` x 10) matrix must be provided with the new + intercept values. + + Returns + ------- + results : kalman_filter.PredictionResults + A PredictionResults object. + + Notes + ----- + All prediction is performed by applying the deterministic part of the + measurement equation using the predicted state variables. + + Out-of-sample prediction first applies the Kalman filter to missing + data for the number of periods desired to obtain the predicted states. + """ + # Cannot predict if we do not have appropriate arrays + if self.memory_no_forecast or self.memory_no_predicted: + raise ValueError('Predict is not possible if memory conservation' + ' has been used to avoid storing forecasts or' + ' predicted values.') + + # Get the start and the end of the entire prediction range + if start is None: + start = 0 + elif start < 0: + raise ValueError('Cannot predict values previous to the sample.') + if end is None: + end = self.nobs + + # Prediction and forecasting is performed by iterating the Kalman + # Kalman filter through the entire range [0, end] + # Then, everything is returned corresponding to the range [start, end]. + # In order to perform the calculations, the range is separately split + # up into the following categories: + # - static: (in-sample) the Kalman filter is run as usual + # - dynamic: (in-sample) the Kalman filter is run, but on missing data + # - forecast: (out-of-sample) the Kalman filter is run, but on missing + # data + + # Short-circuit if end is before start + if end <= start: + raise ValueError('End of prediction must be after start.') + + # Get the number of forecasts to make after the end of the sample + nforecast = max(0, end - self.nobs) + + # Get the number of dynamic prediction periods + + # If `dynamic=True`, then assume that we want to begin dynamic + # prediction at the start of the sample prediction. + if dynamic is True: + dynamic = 0 + # If `dynamic=False`, then assume we want no dynamic prediction + if dynamic is False: + dynamic = None + + ndynamic = 0 + if dynamic is not None: + # Replace the relative dynamic offset with an absolute offset + dynamic = start + dynamic + + # Validate the `dynamic` parameter + if dynamic < 0: + raise ValueError('Dynamic prediction cannot begin prior to the' + ' first observation in the sample.') + elif dynamic > end: + warn('Dynamic prediction specified to begin after the end of' + ' prediction, and so has no effect.', ValueWarning) + dynamic = None + elif dynamic > self.nobs: + warn('Dynamic prediction specified to begin during' + ' out-of-sample forecasting period, and so has no' + ' effect.', ValueWarning) + dynamic = None + + # Get the total size of the desired dynamic forecasting component + # Note: the first `dynamic` periods of prediction are actually + # *not* dynamic, because dynamic prediction begins at observation + # `dynamic`. + if dynamic is not None: + ndynamic = max(0, min(end, self.nobs) - dynamic) + + # Get the number of in-sample static predictions + nstatic = min(end, self.nobs) if dynamic is None else dynamic + + # Construct the design and observation intercept and covariance + # matrices for start-npadded:end. If not time-varying in the original + # model, then they will be copied over if none are provided in + # `kwargs`. Otherwise additional matrices must be provided in `kwargs`. + representation = {} + for name, shape in self.shapes.items(): + if name == 'obs': + continue + representation[name] = getattr(self, name) + + # Update the matrices from kwargs for forecasts + warning = ('Model has time-invariant %s matrix, so the %s' + ' argument to `predict` has been ignored.') + exception = ('Forecasting for models with time-varying %s matrix' + ' requires an updated time-varying matrix for the' + ' period to be forecasted.') + if nforecast > 0: + for name, shape in self.shapes.items(): + if name == 'obs': + continue + if representation[name].shape[-1] == 1: + if name in kwargs: + warn(warning % (name, name), ValueWarning) + elif name not in kwargs: + raise ValueError(exception % name) + else: + mat = np.asarray(kwargs[name]) + if len(shape) == 2: + validate_vector_shape(name, mat.shape, + shape[0], nforecast) + if mat.ndim < 2 or not mat.shape[1] == nforecast: + raise ValueError(exception % name) + representation[name] = np.c_[representation[name], mat] + else: + validate_matrix_shape(name, mat.shape, shape[0], + shape[1], nforecast) + if mat.ndim < 3 or not mat.shape[2] == nforecast: + raise ValueError(exception % name) + representation[name] = np.c_[representation[name], mat] + + # Update the matrices from kwargs for dynamic prediction in the case + # that `end` is less than `nobs` and `dynamic` is less than `end`. In + # this case, any time-varying matrices in the default `representation` + # will be too long, causing an error to be thrown below in the + # KalmanFilter(...) construction call, because the endog has length + # nstatic + ndynamic + nforecast, whereas the time-varying matrices + # from `representation` have length nobs. + if ndynamic > 0 and end < self.nobs: + for name, shape in self.shapes.items(): + if not name == 'obs' and representation[name].shape[-1] > 1: + representation[name] = representation[name][..., :end] + + # Construct the predicted state and covariance matrix for each time + # period depending on whether that time period corresponds to + # one-step-ahead prediction, dynamic prediction, or out-of-sample + # forecasting. + + # If we only have simple prediction, then we can use the already saved + # Kalman filter output + if ndynamic == 0 and nforecast == 0: + results = self + else: + # Construct the new endogenous array. + endog = np.empty((self.k_endog, ndynamic + nforecast)) + endog.fill(np.nan) + endog = np.asfortranarray(np.c_[self.endog[:, :nstatic], endog]) + + # Do not propagate through FILTER_CONCENTRATED, because we want + # to perform prediction based on the estimated values, and one of + # the estimated values is the scale (and in any case, the + # obs_cov and state_cov have been updated to reflect the scale + # estimate already) + filter_method = self.filter_method & ~FILTER_CONCENTRATED + + # Setup the new statespace representation + model_kwargs = { + 'filter_method': filter_method, + 'inversion_method': self.inversion_method, + 'stability_method': self.stability_method, + 'conserve_memory': self.conserve_memory, + 'filter_timing': self.filter_timing, + 'tolerance': self.tolerance, + 'loglikelihood_burn': self.loglikelihood_burn + } + model_kwargs.update(representation) + model = self.model.__class__( + endog, self.k_states, self.k_posdef, **model_kwargs + ) + model.initialization = self.initialization + model._initialize_filter() + model._initialize_state() + + results = self._predict(nstatic, ndynamic, nforecast, model) + + return PredictionResults(results, start, end, nstatic, ndynamic, + nforecast) + + def _predict(self, nstatic, ndynamic, nforecast, model): + # Note: this doesn't use self, and can either be a static method or + # moved outside the class altogether. + + # Get the underlying filter + kfilter = model._kalman_filter + + # Save this (which shares memory with the memoryview on which the + # Kalman filter will be operating) so that we can replace actual data + # with predicted data during dynamic forecasting + endog = model._representations[model.prefix]['obs'] + + for t in range(kfilter.model.nobs): + # Run the Kalman filter for the first `nstatic` periods (for + # which dynamic computation will not be performed) + if t < nstatic: + next(kfilter) + # Perform dynamic prediction + elif t < nstatic + ndynamic: + design_t = 0 if model.design.shape[2] == 1 else t + obs_intercept_t = 0 if model.obs_intercept.shape[1] == 1 else t + + # Unconditional value is the intercept (often zeros) + endog[:, t] = model.obs_intercept[:, obs_intercept_t] + # If t > 0, then we can condition the forecast on the state + if t > 0: + # Predict endog[:, t] given `predicted_state` calculated in + # previous iteration (i.e. t-1) + endog[:, t] += np.dot( + model.design[:, :, design_t], + kfilter.predicted_state[:, t] + ) + + # Advance Kalman filter + next(kfilter) + # Perform any (one-step-ahead) forecasting + else: + next(kfilter) + + # Return the predicted state and predicted state covariance matrices + results = FilterResults(model) + results.update_representation(model) + results.update_filter(kfilter) + return results + + +class PredictionResults(FilterResults): + r""" + Results of in-sample and out-of-sample prediction for state space models + generally + + Parameters + ---------- + results : FilterResults + Output from filtering, corresponding to the prediction desired + start : int + Zero-indexed observation number at which to start forecasting, + i.e., the first forecast will be at start. + end : int + Zero-indexed observation number at which to end forecasting, i.e., + the last forecast will be at end. + nstatic : int + Number of in-sample static predictions (these are always the first + elements of the prediction output). + ndynamic : int + Number of in-sample dynamic predictions (these always follow the static + predictions directly, and are directly followed by the forecasts). + nforecast : int + Number of in-sample forecasts (these always follow the dynamic + predictions directly). + + Attributes + ---------- + npredictions : int + Number of observations in the predicted series; this is not necessarily + the same as the number of observations in the original model from which + prediction was performed. + start : int + Zero-indexed observation number at which to start prediction, + i.e., the first predict will be at `start`; this is relative to the + original model from which prediction was performed. + end : int + Zero-indexed observation number at which to end prediction, + i.e., the last predict will be at `end`; this is relative to the + original model from which prediction was performed. + nstatic : int + Number of in-sample static predictions. + ndynamic : int + Number of in-sample dynamic predictions. + nforecast : int + Number of in-sample forecasts. + endog : array + The observation vector. + design : array + The design matrix, :math:`Z`. + obs_intercept : array + The intercept for the observation equation, :math:`d`. + obs_cov : array + The covariance matrix for the observation equation :math:`H`. + transition : array + The transition matrix, :math:`T`. + state_intercept : array + The intercept for the transition equation, :math:`c`. + selection : array + The selection matrix, :math:`R`. + state_cov : array + The covariance matrix for the state equation :math:`Q`. + filtered_state : array + The filtered state vector at each time period. + filtered_state_cov : array + The filtered state covariance matrix at each time period. + predicted_state : array + The predicted state vector at each time period. + predicted_state_cov : array + The predicted state covariance matrix at each time period. + forecasts : array + The one-step-ahead forecasts of observations at each time period. + forecasts_error : array + The forecast errors at each time period. + forecasts_error_cov : array + The forecast error covariance matrices at each time period. + + Notes + ----- + The provided ranges must be conformable, meaning that it must be that + `end - start == nstatic + ndynamic + nforecast`. + + This class is essentially a view to the FilterResults object, but + returning the appropriate ranges for everything. + + """ + representation_attributes = [ + 'endog', 'design', 'design', 'obs_intercept', + 'obs_cov', 'transition', 'state_intercept', 'selection', + 'state_cov' + ] + filter_attributes = [ + 'filtered_state', 'filtered_state_cov', + 'predicted_state', 'predicted_state_cov', + 'forecasts', 'forecasts_error', 'forecasts_error_cov' + ] + + def __init__(self, results, start, end, nstatic, ndynamic, nforecast): + # Save the filter results object + self.results = results + + # Save prediction ranges + self.npredictions = start - end + self.start = start + self.end = end + self.nstatic = nstatic + self.ndynamic = ndynamic + self.nforecast = nforecast + + def __getattr__(self, attr): + """ + Provide access to the representation and filtered output in the + appropriate range (`start` - `end`). + """ + # Prevent infinite recursive lookups + if attr[0] == '_': + raise AttributeError("'%s' object has no attribute '%s'" % + (self.__class__.__name__, attr)) + + _attr = '_' + attr + + # Cache the attribute + if not hasattr(self, _attr): + if attr == 'endog' or attr in self.filter_attributes: + # Get a copy + value = getattr(self.results, attr).copy() + # Subset to the correct time frame + value = value[..., self.start:self.end] + elif attr in self.representation_attributes: + value = getattr(self.results, attr).copy() + # If a time-invariant matrix, return it. Otherwise, subset to + # the correct period. + if value.shape[-1] == 1: + value = value[..., 0] + else: + value = value[..., self.start:self.end] + else: + raise AttributeError("'%s' object has no attribute '%s'" % + (self.__class__.__name__, attr)) + + setattr(self, _attr, value) + + return getattr(self, _attr) diff --git a/statsmodels/tsa/statespace/kalman_smoother.py b/statsmodels/tsa/statespace/kalman_smoother.py new file mode 100644 index 0000000..8859bce --- /dev/null +++ b/statsmodels/tsa/statespace/kalman_smoother.py @@ -0,0 +1,749 @@ +""" +State Space Representation and Kalman Filter, Smoother + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import numpy as np + +from statsmodels.tsa.statespace.representation import OptionWrapper +from statsmodels.tsa.statespace.kalman_filter import (KalmanFilter, + FilterResults) +from statsmodels.tsa.statespace.tools import ( + reorder_missing_matrix, reorder_missing_vector, copy_index_matrix) +from statsmodels.tsa.statespace import tools + +SMOOTHER_STATE = 0x01 # Durbin and Koopman (2012), Chapter 4.4.2 +SMOOTHER_STATE_COV = 0x02 # ibid., Chapter 4.4.3 +SMOOTHER_DISTURBANCE = 0x04 # ibid., Chapter 4.5 +SMOOTHER_DISTURBANCE_COV = 0x08 # ibid., Chapter 4.5 +SMOOTHER_STATE_AUTOCOV = 0x10 # ibid., Chapter 4.7 +SMOOTHER_ALL = ( + SMOOTHER_STATE | SMOOTHER_STATE_COV | SMOOTHER_DISTURBANCE | + SMOOTHER_DISTURBANCE_COV | SMOOTHER_STATE_AUTOCOV +) + +SMOOTH_CONVENTIONAL = 0x01 +SMOOTH_CLASSICAL = 0x02 +SMOOTH_ALTERNATIVE = 0x04 +SMOOTH_UNIVARIATE = 0x08 + + +class KalmanSmoother(KalmanFilter): + r""" + State space representation of a time series process, with Kalman filter + and smoother. + + Parameters + ---------- + k_endog : array_like or integer + The observed time-series process :math:`y` if array like or the + number of variables in the process if an integer. + k_states : int + The dimension of the unobserved state process. + k_posdef : int, optional + The dimension of a guaranteed positive definite covariance matrix + describing the shocks in the measurement equation. Must be less than + or equal to `k_states`. Default is `k_states`. + results_class : class, optional + Default results class to use to save filtering output. Default is + `SmootherResults`. If specified, class must extend from + `SmootherResults`. + **kwargs + Keyword arguments may be used to provide default values for state space + matrices, for Kalman filtering options, or for Kalman smoothing + options. See `Representation` for more details. + """ + + smoother_outputs = [ + 'smoother_state', 'smoother_state_cov', 'smoother_state_autocov', + 'smoother_disturbance', 'smoother_disturbance_cov', 'smoother_all', + ] + + smoother_state = OptionWrapper('smoother_output', SMOOTHER_STATE) + smoother_state_cov = OptionWrapper('smoother_output', SMOOTHER_STATE_COV) + smoother_disturbance = ( + OptionWrapper('smoother_output', SMOOTHER_DISTURBANCE) + ) + smoother_disturbance_cov = ( + OptionWrapper('smoother_output', SMOOTHER_DISTURBANCE_COV) + ) + smoother_state_autocov = ( + OptionWrapper('smoother_output', SMOOTHER_STATE_AUTOCOV) + ) + smoother_all = OptionWrapper('smoother_output', SMOOTHER_ALL) + + smooth_methods = [ + 'smooth_conventional', 'smooth_alternative', 'smooth_classical' + ] + + smooth_conventional = OptionWrapper('smooth_method', SMOOTH_CONVENTIONAL) + """ + (bool) Flag for conventional (Durbin and Koopman, 2012) Kalman smoothing. + """ + smooth_alternative = OptionWrapper('smooth_method', SMOOTH_ALTERNATIVE) + """ + (bool) Flag for alternative (modified Bryson-Frazier) smoothing. + """ + smooth_classical = OptionWrapper('smooth_method', SMOOTH_CLASSICAL) + """ + (bool) Flag for classical (see e.g. Anderson and Moore, 1979) smoothing. + """ + smooth_univariate = OptionWrapper('smooth_method', SMOOTH_UNIVARIATE) + """ + (bool) Flag for univariate smoothing (uses modified Bryson-Frazier timing). + """ + + # Default smoother options + smoother_output = SMOOTHER_ALL + smooth_method = 0 + + def __init__(self, k_endog, k_states, k_posdef=None, results_class=None, + kalman_smoother_classes=None, **kwargs): + # Set the default results class + if results_class is None: + results_class = SmootherResults + + super(KalmanSmoother, self).__init__( + k_endog, k_states, k_posdef, results_class=results_class, **kwargs + ) + + # Options + self.prefix_kalman_smoother_map = ( + kalman_smoother_classes + if kalman_smoother_classes is not None + else tools.prefix_kalman_smoother_map.copy()) + + # Setup the underlying Kalman smoother storage + self._kalman_smoothers = {} + + # Set the smoother options + self.set_smoother_output(**kwargs) + self.set_smooth_method(**kwargs) + + @property + def _kalman_smoother(self): + prefix = self.prefix + if prefix in self._kalman_smoothers: + return self._kalman_smoothers[prefix] + return None + + def _initialize_smoother(self, smoother_output=None, smooth_method=None, + prefix=None, **kwargs): + if smoother_output is None: + smoother_output = self.smoother_output + if smooth_method is None: + smooth_method = self.smooth_method + + # Make sure we have the required Kalman filter + prefix, dtype, create_filter, create_statespace = ( + self._initialize_filter(prefix, **kwargs) + ) + + # Determine if we need to (re-)create the smoother + # (definitely need to recreate if we recreated the filter) + create_smoother = (create_filter or + prefix not in self._kalman_smoothers) + if not create_smoother: + kalman_smoother = self._kalman_smoothers[prefix] + + create_smoother = (kalman_smoother.kfilter is not + self._kalman_filters[prefix]) + + # If the dtype-specific _kalman_smoother does not exist (or if we + # need to re-create it), create it + if create_smoother: + # Setup the smoother + cls = self.prefix_kalman_smoother_map[prefix] + self._kalman_smoothers[prefix] = cls( + self._statespaces[prefix], self._kalman_filters[prefix], + smoother_output, smooth_method + ) + # Otherwise, update the smoother parameters + else: + self._kalman_smoothers[prefix].set_smoother_output( + smoother_output, False) + self._kalman_smoothers[prefix].set_smooth_method(smooth_method) + + return prefix, dtype, create_smoother, create_filter, create_statespace + + def set_smoother_output(self, smoother_output=None, **kwargs): + """ + Set the smoother output + + The smoother can produce several types of results. The smoother output + variable controls which are calculated and returned. + + Parameters + ---------- + smoother_output : integer, optional + Bitmask value to set the smoother output to. See notes for details. + **kwargs + Keyword arguments may be used to influence the smoother output by + setting individual boolean flags. See notes for details. + + Notes + ----- + The smoother output is defined by a collection of boolean flags, and + is internally stored as a bitmask. The methods available are: + + SMOOTHER_STATE = 0x01 + Calculate and return the smoothed states. + SMOOTHER_STATE_COV = 0x02 + Calculate and return the smoothed state covariance matrices. + SMOOTHER_STATE_AUTOCOV = 0x10 + Calculate and return the smoothed state lag-one autocovariance + matrices. + SMOOTHER_DISTURBANCE = 0x04 + Calculate and return the smoothed state and observation + disturbances. + SMOOTHER_DISTURBANCE_COV = 0x08 + Calculate and return the covariance matrices for the smoothed state + and observation disturbances. + SMOOTHER_ALL + Calculate and return all results. + + If the bitmask is set directly via the `smoother_output` argument, then + the full method must be provided. + + If keyword arguments are used to set individual boolean flags, then + the lowercase of the method must be used as an argument name, and the + value is the desired value of the boolean flag (True or False). + + Note that the smoother output may also be specified by directly + modifying the class attributes which are defined similarly to the + keyword arguments. + + The default smoother output is SMOOTHER_ALL. + + If performance is a concern, only those results which are needed should + be specified as any results that are not specified will not be + calculated. For example, if the smoother output is set to only include + SMOOTHER_STATE, the smoother operates much more quickly than if all + output is required. + + Examples + -------- + >>> import statsmodels.tsa.statespace.kalman_smoother as ks + >>> mod = ks.KalmanSmoother(1,1) + >>> mod.smoother_output + 15 + >>> mod.set_smoother_output(smoother_output=0) + >>> mod.smoother_state = True + >>> mod.smoother_output + 1 + >>> mod.smoother_state + True + """ + if smoother_output is not None: + self.smoother_output = smoother_output + for name in KalmanSmoother.smoother_outputs: + if name in kwargs: + setattr(self, name, kwargs[name]) + + def set_smooth_method(self, smooth_method=None, **kwargs): + r""" + Set the smoothing method + + The smoothing method can be used to override the Kalman smoother + approach used. By default, the Kalman smoother used depends on the + Kalman filter method. + + Parameters + ---------- + smooth_method : integer, optional + Bitmask value to set the filter method to. See notes for details. + **kwargs + Keyword arguments may be used to influence the filter method by + setting individual boolean flags. See notes for details. + + Notes + ----- + The smoothing method is defined by a collection of boolean flags, and + is internally stored as a bitmask. The methods available are: + + SMOOTH_CONVENTIONAL = 0x01 + Default Kalman smoother, as presented in Durbin and Koopman, 2012 + chapter 4. + SMOOTH_CLASSICAL = 0x02 + Classical Kalman smoother, as presented in Anderson and Moore, 1979 + or Durbin and Koopman, 2012 chapter 4.6.1. + SMOOTH_ALTERNATIVE = 0x04 + Modified Bryson-Frazier Kalman smoother method; this is identical + to the conventional method of Durbin and Koopman, 2012, except that + an additional intermediate step is included. + SMOOTH_UNIVARIATE = 0x08 + Univariate Kalman smoother, as presented in Durbin and Koopman, + 2012 chapter 6, except with modified Bryson-Frazier timing. + + Practically speaking, these methods should all produce the same output + but different computational implications, numerical stability + implications, or internal timing assumptions. + + Note that only the first method is available if using a Scipy version + older than 0.16. + + If the bitmask is set directly via the `smooth_method` argument, then + the full method must be provided. + + If keyword arguments are used to set individual boolean flags, then + the lowercase of the method must be used as an argument name, and the + value is the desired value of the boolean flag (True or False). + + Note that the filter method may also be specified by directly modifying + the class attributes which are defined similarly to the keyword + arguments. + + The default filtering method is SMOOTH_CONVENTIONAL. + + Examples + -------- + >>> mod = sm.tsa.statespace.SARIMAX(range(10)) + >>> mod.smooth_method + 1 + >>> mod.filter_conventional + True + >>> mod.filter_univariate = True + >>> mod.smooth_method + 17 + >>> mod.set_smooth_method(filter_univariate=False, + filter_collapsed=True) + >>> mod.smooth_method + 33 + >>> mod.set_smooth_method(smooth_method=1) + >>> mod.filter_conventional + True + >>> mod.filter_univariate + False + >>> mod.filter_collapsed + False + >>> mod.filter_univariate = True + >>> mod.smooth_method + 17 + """ + if smooth_method is not None: + self.smooth_method = smooth_method + for name in KalmanSmoother.smooth_methods: + if name in kwargs: + setattr(self, name, kwargs[name]) + + def _smooth(self, smoother_output=None, smooth_method=None, prefix=None, + complex_step=False, results=None, **kwargs): + # Initialize the smoother + prefix, dtype, create_smoother, create_filter, create_statespace = ( + self._initialize_smoother( + smoother_output, smooth_method, prefix=prefix, **kwargs + )) + + # Check that the filter and statespace weren't just recreated + if create_filter or create_statespace: + raise ValueError('Passed settings forced re-creation of the' + ' Kalman filter. Please run `_filter` before' + ' running `_smooth`.') + + # Get the appropriate smoother + smoother = self._kalman_smoothers[prefix] + + # Run the smoother + smoother() + + return smoother + + def smooth(self, smoother_output=None, smooth_method=None, results=None, + run_filter=True, prefix=None, complex_step=False, + **kwargs): + """ + Apply the Kalman smoother to the statespace model. + + Parameters + ---------- + smoother_output : int, optional + Determines which Kalman smoother output calculate. Default is all + (including state, disturbances, and all covariances). + results : class or object, optional + If a class, then that class is instantiated and returned with the + result of both filtering and smoothing. + If an object, then that object is updated with the smoothing data. + If None, then a SmootherResults object is returned with both + filtering and smoothing results. + run_filter : bool, optional + Whether or not to run the Kalman filter prior to smoothing. Default + is True. + prefix : string + The prefix of the datatype. Usually only used internally. + + Returns + ------- + SmootherResults object + """ + + # Run the filter + kfilter = self._filter(**kwargs) + + # Create the results object + results = self.results_class(self) + results.update_representation(self) + results.update_filter(kfilter) + + # Run the smoother + if smoother_output is None: + smoother_output = self.smoother_output + smoother = self._smooth(smoother_output, results=results, **kwargs) + + # Update the results + results.update_smoother(smoother) + + return results + + +class SmootherResults(FilterResults): + r""" + Results from applying the Kalman smoother and/or filter to a state space + model. + + Parameters + ---------- + model : Representation + A Statespace representation + + Attributes + ---------- + nobs : int + Number of observations. + k_endog : int + The dimension of the observation series. + k_states : int + The dimension of the unobserved state process. + k_posdef : int + The dimension of a guaranteed positive definite covariance matrix + describing the shocks in the measurement equation. + dtype : dtype + Datatype of representation matrices + prefix : str + BLAS prefix of representation matrices + shapes : dictionary of name:tuple + A dictionary recording the shapes of each of the representation + matrices as tuples. + endog : array + The observation vector. + design : array + The design matrix, :math:`Z`. + obs_intercept : array + The intercept for the observation equation, :math:`d`. + obs_cov : array + The covariance matrix for the observation equation :math:`H`. + transition : array + The transition matrix, :math:`T`. + state_intercept : array + The intercept for the transition equation, :math:`c`. + selection : array + The selection matrix, :math:`R`. + state_cov : array + The covariance matrix for the state equation :math:`Q`. + missing : array of bool + An array of the same size as `endog`, filled with boolean values that + are True if the corresponding entry in `endog` is NaN and False + otherwise. + nmissing : array of int + An array of size `nobs`, where the ith entry is the number (between 0 + and k_endog) of NaNs in the ith row of the `endog` array. + time_invariant : bool + Whether or not the representation matrices are time-invariant + initialization : str + Kalman filter initialization method. + initial_state : array_like + The state vector used to initialize the Kalamn filter. + initial_state_cov : array_like + The state covariance matrix used to initialize the Kalamn filter. + filter_method : int + Bitmask representing the Kalman filtering method + inversion_method : int + Bitmask representing the method used to invert the forecast error + covariance matrix. + stability_method : int + Bitmask representing the methods used to promote numerical stability in + the Kalman filter recursions. + conserve_memory : int + Bitmask representing the selected memory conservation method. + tolerance : float + The tolerance at which the Kalman filter determines convergence to + steady-state. + loglikelihood_burn : int + The number of initial periods during which the loglikelihood is not + recorded. + converged : bool + Whether or not the Kalman filter converged. + period_converged : int + The time period in which the Kalman filter converged. + filtered_state : array + The filtered state vector at each time period. + filtered_state_cov : array + The filtered state covariance matrix at each time period. + predicted_state : array + The predicted state vector at each time period. + predicted_state_cov : array + The predicted state covariance matrix at each time period. + kalman_gain : array + The Kalman gain at each time period. + forecasts : array + The one-step-ahead forecasts of observations at each time period. + forecasts_error : array + The forecast errors at each time period. + forecasts_error_cov : array + The forecast error covariance matrices at each time period. + loglikelihood : array + The loglikelihood values at each time period. + collapsed_forecasts : array + If filtering using collapsed observations, stores the one-step-ahead + forecasts of collapsed observations at each time period. + collapsed_forecasts_error : array + If filtering using collapsed observations, stores the one-step-ahead + forecast errors of collapsed observations at each time period. + collapsed_forecasts_error_cov : array + If filtering using collapsed observations, stores the one-step-ahead + forecast error covariance matrices of collapsed observations at each + time period. + standardized_forecast_error : array + The standardized forecast errors + smoother_output : int + Bitmask representing the generated Kalman smoothing output + scaled_smoothed_estimator : array + The scaled smoothed estimator at each time period. + scaled_smoothed_estimator_cov : array + The scaled smoothed estimator covariance matrices at each time period. + smoothing_error : array + The smoothing error covariance matrices at each time period. + smoothed_state : array + The smoothed state at each time period. + smoothed_state_cov : array + The smoothed state covariance matrices at each time period. + smoothed_state_autocov : array + The smoothed state lago-one autocovariance matrices at each time + period: :math:`Cov(\alpha_{t+1}, \alpha_t)`. + smoothed_measurement_disturbance : array + The smoothed measurement at each time period. + smoothed_state_disturbance : array + The smoothed state at each time period. + smoothed_measurement_disturbance_cov : array + The smoothed measurement disturbance covariance matrices at each time + period. + smoothed_state_disturbance_cov : array + The smoothed state disturbance covariance matrices at each time period. + """ + + _smoother_attributes = [ + 'smoother_output', 'scaled_smoothed_estimator', + 'scaled_smoothed_estimator_cov', 'smoothing_error', + 'smoothed_state', 'smoothed_state_cov', 'smoothed_state_autocov', + 'smoothed_measurement_disturbance', 'smoothed_state_disturbance', + 'smoothed_measurement_disturbance_cov', + 'smoothed_state_disturbance_cov' + ] + + _smoother_options = KalmanSmoother.smoother_outputs + + _attributes = FilterResults._model_attributes + _smoother_attributes + + def update_representation(self, model, only_options=False): + """ + Update the results to match a given model + + Parameters + ---------- + model : Representation + The model object from which to take the updated values. + only_options : boolean, optional + If set to true, only the smoother and filter options are updated, + and the state space representation is not updated. Default is + False. + + Notes + ----- + This method is rarely required except for internal usage. + """ + super(SmootherResults, self).update_representation(model, only_options) + + # Save the options as boolean variables + for name in self._smoother_options: + setattr(self, name, getattr(model, name, None)) + + # Initialize holders for smoothed forecasts + self._smoothed_forecasts = None + self._smoothed_forecasts_error = None + self._smoothed_forecasts_error_cov = None + + def update_smoother(self, smoother): + """ + Update the smoother results + + Parameters + ---------- + smoother : KalmanSmoother + The model object from which to take the updated values. + + Notes + ----- + This method is rarely required except for internal usage. + """ + # Copy the appropriate output + attributes = [] + + # Since update_representation will already have been called, we can + # use the boolean options smoother_* and know they match the smoother + # itself + if self.smoother_state or self.smoother_disturbance: + attributes.append('scaled_smoothed_estimator') + if self.smoother_state_cov or self.smoother_disturbance_cov: + attributes.append('scaled_smoothed_estimator_cov') + if self.smoother_state: + attributes.append('smoothed_state') + if self.smoother_state_cov: + attributes.append('smoothed_state_cov') + if self.smoother_state_autocov: + attributes.append('smoothed_state_autocov') + if self.smoother_disturbance: + attributes += [ + 'smoothing_error', + 'smoothed_measurement_disturbance', + 'smoothed_state_disturbance' + ] + if self.smoother_disturbance_cov: + attributes += [ + 'smoothed_measurement_disturbance_cov', + 'smoothed_state_disturbance_cov' + ] + + has_missing = np.sum(self.nmissing) > 0 + for name in self._smoother_attributes: + if name == 'smoother_output': + pass + elif name in attributes: + if name in ['smoothing_error', + 'smoothed_measurement_disturbance']: + vector = getattr(smoother, name, None) + if vector is not None and has_missing: + vector = np.array(reorder_missing_vector( + vector, self.missing, prefix=self.prefix)) + else: + vector = np.array(vector, copy=True) + setattr(self, name, vector) + elif name == 'smoothed_measurement_disturbance_cov': + matrix = getattr(smoother, name, None) + if matrix is not None and has_missing: + matrix = reorder_missing_matrix( + matrix, self.missing, reorder_rows=True, + reorder_cols=True, prefix=self.prefix) + # In the missing data case, we want to set the missing + # components equal to their unconditional distribution + copy_index_matrix( + self.obs_cov, matrix, self.missing, + index_rows=True, index_cols=True, inplace=True, + prefix=self.prefix) + else: + matrix = np.array(matrix, copy=True) + setattr(self, name, matrix) + else: + setattr(self, name, + np.array(getattr(smoother, name, None), copy=True)) + else: + setattr(self, name, None) + + # Diffuse objects + self.scaled_smoothed_diffuse_estimator = None + self.scaled_smoothed_diffuse1_estimator_cov = None + self.scaled_smoothed_diffuse2_estimator_cov = None + if self.nobs_diffuse > 0: + self.scaled_smoothed_diffuse_estimator = np.array( + smoother.scaled_smoothed_diffuse_estimator, copy=True) + self.scaled_smoothed_diffuse1_estimator_cov = np.array( + smoother.scaled_smoothed_diffuse1_estimator_cov, copy=True) + self.scaled_smoothed_diffuse2_estimator_cov = np.array( + smoother.scaled_smoothed_diffuse2_estimator_cov, copy=True) + + # Adjustments + + # For r_t (and similarly for N_t), what was calculated was + # r_T, ..., r_{-1}. We only want r_0, ..., r_T + # so exclude the appropriate element so that the time index is + # consistent with the other returned output + # r_t stored such that scaled_smoothed_estimator[0] == r_{-1} + start = 1 + end = None + if 'scaled_smoothed_estimator' in attributes: + self.scaled_smoothed_estimator = ( + self.scaled_smoothed_estimator[:, start:end] + ) + if 'scaled_smoothed_estimator_cov' in attributes: + self.scaled_smoothed_estimator_cov = ( + self.scaled_smoothed_estimator_cov[:, :, start:end] + ) + + # Clear the smoothed forecasts + self._smoothed_forecasts = None + self._smoothed_forecasts_error = None + self._smoothed_forecasts_error_cov = None + + # Note: if we concentrated out the scale, need to adjust the + # loglikelihood values and all of the covariance matrices and the + # values that depend on the covariance matrices + if self.filter_concentrated and self.model._scale is None: + self.smoothed_state_cov *= self.scale + self.smoothed_state_autocov *= self.scale + self.smoothed_state_disturbance_cov *= self.scale + self.smoothed_measurement_disturbance_cov *= self.scale + self.scaled_smoothed_estimator /= self.scale + self.scaled_smoothed_estimator_cov /= self.scale + self.smoothing_error /= self.scale + + def _get_smoothed_forecasts(self): + if self._smoothed_forecasts is None: + # Initialize empty arrays + self._smoothed_forecasts = np.zeros(self.forecasts.shape, + dtype=self.dtype) + self._smoothed_forecasts_error = ( + np.zeros(self.forecasts_error.shape, dtype=self.dtype) + ) + self._smoothed_forecasts_error_cov = ( + np.zeros(self.forecasts_error_cov.shape, dtype=self.dtype) + ) + + for t in range(self.nobs): + design_t = 0 if self.design.shape[2] == 1 else t + obs_cov_t = 0 if self.obs_cov.shape[2] == 1 else t + obs_intercept_t = 0 if self.obs_intercept.shape[1] == 1 else t + + mask = ~self.missing[:, t].astype(bool) + # We can recover forecasts + self._smoothed_forecasts[:, t] = np.dot( + self.design[:, :, design_t], self.smoothed_state[:, t] + ) + self.obs_intercept[:, obs_intercept_t] + if self.nmissing[t] > 0: + self._smoothed_forecasts_error[:, t] = np.nan + self._smoothed_forecasts_error[mask, t] = ( + self.endog[mask, t] - self._smoothed_forecasts[mask, t] + ) + self._smoothed_forecasts_error_cov[:, :, t] = np.dot( + np.dot(self.design[:, :, design_t], + self.smoothed_state_cov[:, :, t]), + self.design[:, :, design_t].T + ) + self.obs_cov[:, :, obs_cov_t] + + return ( + self._smoothed_forecasts, + self._smoothed_forecasts_error, + self._smoothed_forecasts_error_cov + ) + + @property + def smoothed_forecasts(self): + return self._get_smoothed_forecasts()[0] + + @property + def smoothed_forecasts_error(self): + return self._get_smoothed_forecasts()[1] + + @property + def smoothed_forecasts_error_cov(self): + return self._get_smoothed_forecasts()[2] diff --git a/statsmodels/tsa/statespace/mlemodel.py b/statsmodels/tsa/statespace/mlemodel.py new file mode 100644 index 0000000..9f8ab1f --- /dev/null +++ b/statsmodels/tsa/statespace/mlemodel.py @@ -0,0 +1,2944 @@ +# -*- coding: utf-8 -*- +""" +State Space Model + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function +import warnings + +import numpy as np +import pandas as pd +from scipy.stats import norm + +from statsmodels.compat.python import long + +from statsmodels.tools.tools import pinv_extended, Bunch +from statsmodels.tools.sm_exceptions import PrecisionWarning +from statsmodels.tools.numdiff import (_get_epsilon, approx_hess_cs, + approx_fprime_cs, approx_fprime) +from statsmodels.tools.decorators import cache_readonly +from statsmodels.tools.eval_measures import aic, bic, hqic + +import statsmodels.base.wrapper as wrap + +import statsmodels.genmod._prediction as pred +from statsmodels.genmod.families.links import identity + +import statsmodels.tsa.base.tsa_model as tsbase + +from .simulation_smoother import SimulationSmoother +from .kalman_smoother import SmootherResults +from .kalman_filter import INVERT_UNIVARIATE, SOLVE_LU + +if bytes != str: + # PY3 + unicode = str + + +def _handle_args(names, defaults, *args, **kwargs): + output_args = [] + # We need to handle positional arguments in two ways, in case this was + # called by a Scipy optimization routine + if len(args) > 0: + # the fit() method will pass a dictionary + if isinstance(args[0], dict): + flags = args[0] + # otherwise, a user may have just used positional arguments... + else: + flags = dict(zip(names, args)) + for i in range(len(names)): + output_args.append(flags.get(names[i], defaults[i])) + + for name, value in flags.items(): + if name in kwargs: + raise TypeError("loglike() got multiple values for keyword" + " argument '%s'" % name) + else: + for i in range(len(names)): + output_args.append(kwargs.pop(names[i], defaults[i])) + + return tuple(output_args) + (kwargs,) + + +class MLEModel(tsbase.TimeSeriesModel): + r""" + State space model for maximum likelihood estimation + + Parameters + ---------- + endog : array_like + The observed time-series process :math:`y` + k_states : int + The dimension of the unobserved state process. + exog : array_like, optional + Array of exogenous regressors, shaped nobs x k. Default is no + exogenous regressors. + dates : array-like of datetime, optional + An array-like object of datetime objects. If a Pandas object is given + for endog, it is assumed to have a DateIndex. + freq : str, optional + The frequency of the time-series. A Pandas offset or 'B', 'D', 'W', + 'M', 'A', or 'Q'. This is optional if dates are given. + **kwargs + Keyword arguments may be used to provide default values for state space + matrices or for Kalman filtering options. See `Representation`, and + `KalmanFilter` for more details. + + Attributes + ---------- + ssm : statsmodels.tsa.statespace.kalman_filter.KalmanFilter + Underlying state space representation. + + Notes + ----- + This class wraps the state space model with Kalman filtering to add in + functionality for maximum likelihood estimation. In particular, it adds + the concept of updating the state space representation based on a defined + set of parameters, through the `update` method or `updater` attribute (see + below for more details on which to use when), and it adds a `fit` method + which uses a numerical optimizer to select the parameters that maximize + the likelihood of the model. + + The `start_params` `update` method must be overridden in the + child class (and the `transform` and `untransform` methods, if needed). + + See Also + -------- + MLEResults + statsmodels.tsa.statespace.kalman_filter.KalmanFilter + statsmodels.tsa.statespace.representation.Representation + """ + + def __init__(self, endog, k_states, exog=None, dates=None, freq=None, + **kwargs): + # Initialize the model base + super(MLEModel, self).__init__(endog=endog, exog=exog, + dates=dates, freq=freq, + missing='none') + + # Store kwargs to recreate model + self._init_kwargs = kwargs + + # Prepared the endog array: C-ordered, shape=(nobs x k_endog) + self.endog, self.exog = self.prepare_data() + + # Dimensions + self.nobs = self.endog.shape[0] + self.k_states = k_states + + # Initialize the state-space representation + self.initialize_statespace(**kwargs) + + def prepare_data(self): + """ + Prepare data for use in the state space representation + """ + endog = np.array(self.data.orig_endog, order='C') + exog = self.data.orig_exog + if exog is not None: + exog = np.array(exog) + + # Base class may allow 1-dim data, whereas we need 2-dim + if endog.ndim == 1: + endog.shape = (endog.shape[0], 1) # this will be C-contiguous + + return endog, exog + + def initialize_statespace(self, **kwargs): + """ + Initialize the state space representation + + Parameters + ---------- + **kwargs + Additional keyword arguments to pass to the state space class + constructor. + + """ + # (Now self.endog is C-ordered and in long format (nobs x k_endog). To + # get F-ordered and in wide format just need to transpose) + endog = self.endog.T + + # Instantiate the state space object + self.ssm = SimulationSmoother(endog.shape[0], self.k_states, + nobs=endog.shape[1], **kwargs) + # Bind the data to the model + self.ssm.bind(endog) + + # Other dimensions, now that `ssm` is available + self.k_endog = self.ssm.k_endog + + def __setitem__(self, key, value): + return self.ssm.__setitem__(key, value) + + def __getitem__(self, key): + return self.ssm.__getitem__(key) + + def set_filter_method(self, filter_method=None, **kwargs): + """ + Set the filtering method + + The filtering method controls aspects of which Kalman filtering + approach will be used. + + Parameters + ---------- + filter_method : integer, optional + Bitmask value to set the filter method to. See notes for details. + **kwargs + Keyword arguments may be used to influence the filter method by + setting individual boolean flags. See notes for details. + + Notes + ----- + This method is rarely used. See the corresponding function in the + `KalmanFilter` class for details. + """ + self.ssm.set_filter_method(filter_method, **kwargs) + + def set_inversion_method(self, inversion_method=None, **kwargs): + """ + Set the inversion method + + The Kalman filter may contain one matrix inversion: that of the + forecast error covariance matrix. The inversion method controls how and + if that inverse is performed. + + Parameters + ---------- + inversion_method : integer, optional + Bitmask value to set the inversion method to. See notes for + details. + **kwargs + Keyword arguments may be used to influence the inversion method by + setting individual boolean flags. See notes for details. + + Notes + ----- + This method is rarely used. See the corresponding function in the + `KalmanFilter` class for details. + """ + self.ssm.set_inversion_method(inversion_method, **kwargs) + + def set_stability_method(self, stability_method=None, **kwargs): + """ + Set the numerical stability method + + The Kalman filter is a recursive algorithm that may in some cases + suffer issues with numerical stability. The stability method controls + what, if any, measures are taken to promote stability. + + Parameters + ---------- + stability_method : integer, optional + Bitmask value to set the stability method to. See notes for + details. + **kwargs + Keyword arguments may be used to influence the stability method by + setting individual boolean flags. See notes for details. + + Notes + ----- + This method is rarely used. See the corresponding function in the + `KalmanFilter` class for details. + """ + self.ssm.set_stability_method(stability_method, **kwargs) + + def set_conserve_memory(self, conserve_memory=None, **kwargs): + """ + Set the memory conservation method + + By default, the Kalman filter computes a number of intermediate + matrices at each iteration. The memory conservation options control + which of those matrices are stored. + + Parameters + ---------- + conserve_memory : integer, optional + Bitmask value to set the memory conservation method to. See notes + for details. + **kwargs + Keyword arguments may be used to influence the memory conservation + method by setting individual boolean flags. + + Notes + ----- + This method is rarely used. See the corresponding function in the + `KalmanFilter` class for details. + """ + self.ssm.set_conserve_memory(conserve_memory, **kwargs) + + def set_smoother_output(self, smoother_output=None, **kwargs): + """ + Set the smoother output + + The smoother can produce several types of results. The smoother output + variable controls which are calculated and returned. + + Parameters + ---------- + smoother_output : integer, optional + Bitmask value to set the smoother output to. See notes for details. + **kwargs + Keyword arguments may be used to influence the smoother output by + setting individual boolean flags. + + Notes + ----- + This method is rarely used. See the corresponding function in the + `KalmanSmoother` class for details. + """ + self.ssm.set_smoother_output(smoother_output, **kwargs) + + def initialize_known(self, initial_state, initial_state_cov): + """Initialize known""" + self.ssm.initialize_known(initial_state, initial_state_cov) + + def initialize_approximate_diffuse(self, variance=None): + """Initialize approximate diffuse""" + self.ssm.initialize_approximate_diffuse(variance) + + def initialize_stationary(self): + """Initialize stationary""" + self.ssm.initialize_stationary() + + @property + def initialization(self): + return self.ssm.initialization + + @initialization.setter + def initialization(self, value): + self.ssm.initialization = value + + @property + def initial_variance(self): + return self.ssm.initial_variance + + @initial_variance.setter + def initial_variance(self, value): + self.ssm.initial_variance = value + + @property + def loglikelihood_burn(self): + return self.ssm.loglikelihood_burn + + @loglikelihood_burn.setter + def loglikelihood_burn(self, value): + self.ssm.loglikelihood_burn = value + + @property + def tolerance(self): + return self.ssm.tolerance + + @tolerance.setter + def tolerance(self, value): + self.ssm.tolerance = value + + def fit(self, start_params=None, transformed=True, + cov_type='opg', cov_kwds=None, method='lbfgs', maxiter=50, + full_output=1, disp=5, callback=None, return_params=False, + optim_score=None, optim_complex_step=None, optim_hessian=None, + flags=None, **kwargs): + """ + Fits the model by maximum likelihood via Kalman filter. + + Parameters + ---------- + start_params : array_like, optional + Initial guess of the solution for the loglikelihood maximization. + If None, the default is given by Model.start_params. + transformed : boolean, optional + Whether or not `start_params` is already transformed. Default is + True. + cov_type : str, optional + The `cov_type` keyword governs the method for calculating the + covariance matrix of parameter estimates. Can be one of: + + - 'opg' for the outer product of gradient estimator + - 'oim' for the observed information matrix estimator, calculated + using the method of Harvey (1989) + - 'approx' for the observed information matrix estimator, + calculated using a numerical approximation of the Hessian matrix. + - 'robust' for an approximate (quasi-maximum likelihood) covariance + matrix that may be valid even in the presense of some + misspecifications. Intermediate calculations use the 'oim' + method. + - 'robust_approx' is the same as 'robust' except that the + intermediate calculations use the 'approx' method. + - 'none' for no covariance matrix calculation. + cov_kwds : dict or None, optional + A dictionary of arguments affecting covariance matrix computation. + + **opg, oim, approx, robust, robust_approx** + + - 'approx_complex_step' : boolean, optional - If True, numerical + approximations are computed using complex-step methods. If False, + numerical approximations are computed using finite difference + methods. Default is True. + - 'approx_centered' : boolean, optional - If True, numerical + approximations computed using finite difference methods use a + centered approximation. Default is False. + method : str, optional + The `method` determines which solver from `scipy.optimize` + is used, and it can be chosen from among the following strings: + + - 'newton' for Newton-Raphson, 'nm' for Nelder-Mead + - 'bfgs' for Broyden-Fletcher-Goldfarb-Shanno (BFGS) + - 'lbfgs' for limited-memory BFGS with optional box constraints + - 'powell' for modified Powell's method + - 'cg' for conjugate gradient + - 'ncg' for Newton-conjugate gradient + - 'basinhopping' for global basin-hopping solver + + The explicit arguments in `fit` are passed to the solver, + with the exception of the basin-hopping solver. Each + solver has several optional arguments that are not the same across + solvers. See the notes section below (or scipy.optimize) for the + available arguments and for the list of explicit arguments that the + basin-hopping solver supports. + maxiter : int, optional + The maximum number of iterations to perform. + full_output : boolean, optional + Set to True to have all available output in the Results object's + mle_retvals attribute. The output is dependent on the solver. + See LikelihoodModelResults notes section for more information. + disp : boolean, optional + Set to True to print convergence messages. + callback : callable callback(xk), optional + Called after each iteration, as callback(xk), where xk is the + current parameter vector. + return_params : boolean, optional + Whether or not to return only the array of maximizing parameters. + Default is False. + optim_score : {'harvey', 'approx'} or None, optional + The method by which the score vector is calculated. 'harvey' uses + the method from Harvey (1989), 'approx' uses either finite + difference or complex step differentiation depending upon the + value of `optim_complex_step`, and None uses the built-in gradient + approximation of the optimizer. Default is None. This keyword is + only relevant if the optimization method uses the score. + optim_complex_step : bool, optional + Whether or not to use complex step differentiation when + approximating the score; if False, finite difference approximation + is used. Default is True. This keyword is only relevant if + `optim_score` is set to 'harvey' or 'approx'. + optim_hessian : {'opg','oim','approx'}, optional + The method by which the Hessian is numerically approximated. 'opg' + uses outer product of gradients, 'oim' uses the information + matrix formula from Harvey (1989), and 'approx' uses numerical + approximation. This keyword is only relevant if the + optimization method uses the Hessian matrix. + **kwargs + Additional keyword arguments to pass to the optimizer. + + Returns + ------- + MLEResults + + See Also + -------- + statsmodels.base.model.LikelihoodModel.fit + MLEResults + """ + if start_params is None: + start_params = self.start_params + transformed = True + + # Update the score method + if optim_score is None and method == 'lbfgs': + kwargs.setdefault('approx_grad', True) + kwargs.setdefault('epsilon', 1e-5) + elif optim_score is None: + optim_score = 'approx' + + # Check for complex step differentiation + if optim_complex_step is None: + optim_complex_step = not self.ssm._complex_endog + elif optim_complex_step and self.ssm._complex_endog: + raise ValueError('Cannot use complex step derivatives when data' + ' or parameters are complex.') + + # Unconstrain the starting parameters + if transformed: + start_params = self.untransform_params(np.array(start_params)) + + # Maximum likelihood estimation + if flags is None: + flags = {} + flags.update({ + 'transformed': False, + 'score_method': optim_score, + 'approx_complex_step': optim_complex_step + }) + if optim_hessian is not None: + flags['hessian_method'] = optim_hessian + fargs = (flags,) + mlefit = super(MLEModel, self).fit(start_params, method=method, + fargs=fargs, + maxiter=maxiter, + full_output=full_output, + disp=disp, callback=callback, + skip_hessian=True, **kwargs) + + # Just return the fitted parameters if requested + if return_params: + return self.transform_params(mlefit.params) + # Otherwise construct the results class if desired + else: + res = self.smooth(mlefit.params, transformed=False, + cov_type=cov_type, cov_kwds=cov_kwds) + + res.mlefit = mlefit + res.mle_retvals = mlefit.mle_retvals + res.mle_settings = mlefit.mle_settings + + return res + + @property + def _res_classes(self): + return {'fit': (MLEResults, MLEResultsWrapper)} + + def _wrap_results(self, params, result, return_raw, cov_type=None, + cov_kwds=None, results_class=None, wrapper_class=None): + if not return_raw: + # Wrap in a results object + result_kwargs = {} + if cov_type is not None: + result_kwargs['cov_type'] = cov_type + if cov_kwds is not None: + result_kwargs['cov_kwds'] = cov_kwds + + if results_class is None: + results_class = self._res_classes['fit'][0] + if wrapper_class is None: + wrapper_class = self._res_classes['fit'][1] + + res = results_class(self, params, result, **result_kwargs) + result = wrapper_class(res) + return result + + def filter(self, params, transformed=True, complex_step=False, + cov_type=None, cov_kwds=None, return_ssm=False, + results_class=None, results_wrapper_class=None, **kwargs): + """ + Kalman filtering + + Parameters + ---------- + params : array_like + Array of parameters at which to evaluate the loglikelihood + function. + transformed : boolean, optional + Whether or not `params` is already transformed. Default is True. + return_ssm : boolean,optional + Whether or not to return only the state space output or a full + results object. Default is to return a full results object. + cov_type : str, optional + See `MLEResults.fit` for a description of covariance matrix types + for results object. + cov_kwds : dict or None, optional + See `MLEResults.get_robustcov_results` for a description required + keywords for alternative covariance estimators + **kwargs + Additional keyword arguments to pass to the Kalman filter. See + `KalmanFilter.filter` for more details. + """ + params = np.array(params, ndmin=1) + + if not transformed: + params = self.transform_params(params) + self.update(params, transformed=True, complex_step=complex_step) + + # Save the parameter names + self.data.param_names = self.param_names + + if complex_step: + kwargs['inversion_method'] = INVERT_UNIVARIATE | SOLVE_LU + + # Get the state space output + result = self.ssm.filter(complex_step=complex_step, **kwargs) + + # Wrap in a results object + return self._wrap_results(params, result, return_ssm, cov_type, + cov_kwds, results_class, + results_wrapper_class) + + def smooth(self, params, transformed=True, complex_step=False, + cov_type=None, cov_kwds=None, return_ssm=False, + results_class=None, results_wrapper_class=None, **kwargs): + """ + Kalman smoothing + + Parameters + ---------- + params : array_like + Array of parameters at which to evaluate the loglikelihood + function. + transformed : boolean, optional + Whether or not `params` is already transformed. Default is True. + return_ssm : boolean,optional + Whether or not to return only the state space output or a full + results object. Default is to return a full results object. + cov_type : str, optional + See `MLEResults.fit` for a description of covariance matrix types + for results object. + cov_kwds : dict or None, optional + See `MLEResults.get_robustcov_results` for a description required + keywords for alternative covariance estimators + **kwargs + Additional keyword arguments to pass to the Kalman filter. See + `KalmanFilter.filter` for more details. + """ + params = np.array(params, ndmin=1) + + if not transformed: + params = self.transform_params(params) + self.update(params, transformed=True, complex_step=complex_step) + + # Save the parameter names + self.data.param_names = self.param_names + + if complex_step: + kwargs['inversion_method'] = INVERT_UNIVARIATE | SOLVE_LU + + # Get the state space output + result = self.ssm.smooth(complex_step=complex_step, **kwargs) + + # Wrap in a results object + return self._wrap_results(params, result, return_ssm, cov_type, + cov_kwds, results_class, + results_wrapper_class) + + _loglike_param_names = ['transformed', 'complex_step'] + _loglike_param_defaults = [True, False] + + def loglike(self, params, *args, **kwargs): + """ + Loglikelihood evaluation + + Parameters + ---------- + params : array_like + Array of parameters at which to evaluate the loglikelihood + function. + transformed : boolean, optional + Whether or not `params` is already transformed. Default is True. + kwargs + Additional keyword arguments to pass to the Kalman filter. See + `KalmanFilter.filter` for more details. + + Notes + ----- + [1]_ recommend maximizing the average likelihood to avoid scale issues; + this is done automatically by the base Model fit method. + + References + ---------- + .. [1] Koopman, Siem Jan, Neil Shephard, and Jurgen A. Doornik. 1999. + Statistical Algorithms for Models in State Space Using SsfPack 2.2. + Econometrics Journal 2 (1): 107-60. doi:10.1111/1368-423X.00023. + + See Also + -------- + update : modifies the internal state of the state space model to + reflect new params + """ + transformed, complex_step, kwargs = _handle_args( + MLEModel._loglike_param_names, MLEModel._loglike_param_defaults, + *args, **kwargs) + + if not transformed: + params = self.transform_params(params) + + self.update(params, transformed=True, complex_step=complex_step) + + if complex_step: + kwargs['inversion_method'] = INVERT_UNIVARIATE | SOLVE_LU + + loglike = self.ssm.loglike(complex_step=complex_step, **kwargs) + + # Koopman, Shephard, and Doornik recommend maximizing the average + # likelihood to avoid scale issues, but the averaging is done + # automatically in the base model `fit` method + return loglike + + def loglikeobs(self, params, transformed=True, complex_step=False, + **kwargs): + """ + Loglikelihood evaluation + + Parameters + ---------- + params : array_like + Array of parameters at which to evaluate the loglikelihood + function. + transformed : boolean, optional + Whether or not `params` is already transformed. Default is True. + **kwargs + Additional keyword arguments to pass to the Kalman filter. See + `KalmanFilter.filter` for more details. + + Notes + ----- + [1]_ recommend maximizing the average likelihood to avoid scale issues; + this is done automatically by the base Model fit method. + + References + ---------- + .. [1] Koopman, Siem Jan, Neil Shephard, and Jurgen A. Doornik. 1999. + Statistical Algorithms for Models in State Space Using SsfPack 2.2. + Econometrics Journal 2 (1): 107-60. doi:10.1111/1368-423X.00023. + + See Also + -------- + update : modifies the internal state of the Model to reflect new params + """ + if not transformed: + params = self.transform_params(params) + + # If we're using complex-step differentiation, then we can't use + # Cholesky factorization + if complex_step: + kwargs['inversion_method'] = INVERT_UNIVARIATE | SOLVE_LU + + self.update(params, transformed=True, complex_step=complex_step) + + return self.ssm.loglikeobs(complex_step=complex_step, **kwargs) + + def simulation_smoother(self, simulation_output=None, **kwargs): + r""" + Retrieve a simulation smoother for the state space model. + + Parameters + ---------- + simulation_output : int, optional + Determines which simulation smoother output is calculated. + Default is all (including state and disturbances). + **kwargs + Additional keyword arguments, used to set the simulation output. + See `set_simulation_output` for more details. + + Returns + ------- + SimulationSmoothResults + """ + return self.ssm.simulation_smoother( + simulation_output=simulation_output, **kwargs) + + def _forecasts_error_partial_derivatives(self, params, transformed=True, + approx_complex_step=None, + approx_centered=False, + res=None, **kwargs): + params = np.array(params, ndmin=1) + + # We can't use complex-step differentiation with non-transformed + # parameters + if approx_complex_step is None: + approx_complex_step = transformed + if not transformed and approx_complex_step: + raise ValueError("Cannot use complex-step approximations to" + " calculate the observed_information_matrix" + " with untransformed parameters.") + + # If we're using complex-step differentiation, then we can't use + # Cholesky factorization + if approx_complex_step: + kwargs['inversion_method'] = INVERT_UNIVARIATE | SOLVE_LU + + # Get values at the params themselves + if res is None: + self.update(params, transformed=transformed, + complex_step=approx_complex_step) + res = self.ssm.filter(complex_step=approx_complex_step, **kwargs) + + # Setup + n = len(params) + + # Compute partial derivatives w.r.t. forecast error and forecast + # error covariance + partials_forecasts_error = ( + np.zeros((self.k_endog, self.nobs, n)) + ) + partials_forecasts_error_cov = ( + np.zeros((self.k_endog, self.k_endog, self.nobs, n)) + ) + if approx_complex_step: + epsilon = _get_epsilon(params, 2, None, n) + increments = np.identity(n) * 1j * epsilon + + for i, ih in enumerate(increments): + self.update(params + ih, transformed=transformed, + complex_step=True) + _res = self.ssm.filter(complex_step=True, **kwargs) + + partials_forecasts_error[:, :, i] = ( + _res.forecasts_error.imag / epsilon[i] + ) + + partials_forecasts_error_cov[:, :, :, i] = ( + _res.forecasts_error_cov.imag / epsilon[i] + ) + elif not approx_centered: + epsilon = _get_epsilon(params, 2, None, n) + ei = np.zeros((n,), float) + for i in range(n): + ei[i] = epsilon[i] + self.update(params + ei, transformed=transformed, + complex_step=False) + _res = self.ssm.filter(complex_step=False, **kwargs) + + partials_forecasts_error[:, :, i] = ( + _res.forecasts_error - res.forecasts_error) / epsilon[i] + + partials_forecasts_error_cov[:, :, :, i] = ( + _res.forecasts_error_cov - + res.forecasts_error_cov) / epsilon[i] + ei[i] = 0.0 + else: + epsilon = _get_epsilon(params, 3, None, n) / 2. + ei = np.zeros((n,), float) + for i in range(n): + ei[i] = epsilon[i] + + self.update(params + ei, transformed=transformed, + complex_step=False) + _res1 = self.ssm.filter(complex_step=False, **kwargs) + + self.update(params - ei, transformed=transformed, + complex_step=False) + _res2 = self.ssm.filter(complex_step=False, **kwargs) + + partials_forecasts_error[:, :, i] = ( + (_res1.forecasts_error - _res2.forecasts_error) / + (2 * epsilon[i])) + + partials_forecasts_error_cov[:, :, :, i] = ( + (_res1.forecasts_error_cov - _res2.forecasts_error_cov) / + (2 * epsilon[i])) + + ei[i] = 0.0 + + return partials_forecasts_error, partials_forecasts_error_cov + + def observed_information_matrix(self, params, transformed=True, + approx_complex_step=None, + approx_centered=False, **kwargs): + """ + Observed information matrix + + Parameters + ---------- + params : array_like, optional + Array of parameters at which to evaluate the loglikelihood + function. + **kwargs + Additional keyword arguments to pass to the Kalman filter. See + `KalmanFilter.filter` for more details. + + Notes + ----- + This method is from Harvey (1989), which shows that the information + matrix only depends on terms from the gradient. This implementation is + partially analytic and partially numeric approximation, therefore, + because it uses the analytic formula for the information matrix, with + numerically computed elements of the gradient. + + References + ---------- + Harvey, Andrew C. 1990. + Forecasting, Structural Time Series Models and the Kalman Filter. + Cambridge University Press. + + """ + params = np.array(params, ndmin=1) + + # Setup + n = len(params) + + # We can't use complex-step differentiation with non-transformed + # parameters + if approx_complex_step is None: + approx_complex_step = transformed + if not transformed and approx_complex_step: + raise ValueError("Cannot use complex-step approximations to" + " calculate the observed_information_matrix" + " with untransformed parameters.") + + # Get values at the params themselves + self.update(params, transformed=transformed, + complex_step=approx_complex_step) + # If we're using complex-step differentiation, then we can't use + # Cholesky factorization + if approx_complex_step: + kwargs['inversion_method'] = INVERT_UNIVARIATE | SOLVE_LU + res = self.ssm.filter(complex_step=approx_complex_step, **kwargs) + dtype = self.ssm.dtype + + # Save this for inversion later + inv_forecasts_error_cov = res.forecasts_error_cov.copy() + + partials_forecasts_error, partials_forecasts_error_cov = ( + self._forecasts_error_partial_derivatives( + params, transformed=transformed, + approx_complex_step=approx_complex_step, + approx_centered=approx_centered, res=res, **kwargs)) + + # Compute the information matrix + tmp = np.zeros((self.k_endog, self.k_endog, self.nobs, n), dtype=dtype) + + information_matrix = np.zeros((n, n), dtype=dtype) + for t in range(self.ssm.loglikelihood_burn, self.nobs): + inv_forecasts_error_cov[:, :, t] = ( + np.linalg.inv(res.forecasts_error_cov[:, :, t]) + ) + for i in range(n): + tmp[:, :, t, i] = np.dot( + inv_forecasts_error_cov[:, :, t], + partials_forecasts_error_cov[:, :, t, i] + ) + for i in range(n): + for j in range(n): + information_matrix[i, j] += ( + 0.5 * np.trace(np.dot(tmp[:, :, t, i], + tmp[:, :, t, j])) + ) + information_matrix[i, j] += np.inner( + partials_forecasts_error[:, t, i], + np.dot(inv_forecasts_error_cov[:, :, t], + partials_forecasts_error[:, t, j]) + ) + return information_matrix / (self.nobs - self.ssm.loglikelihood_burn) + + def opg_information_matrix(self, params, transformed=True, + approx_complex_step=None, **kwargs): + """ + Outer product of gradients information matrix + + Parameters + ---------- + params : array_like, optional + Array of parameters at which to evaluate the loglikelihood + function. + **kwargs + Additional arguments to the `loglikeobs` method. + + References + ---------- + Berndt, Ernst R., Bronwyn Hall, Robert Hall, and Jerry Hausman. 1974. + Estimation and Inference in Nonlinear Structural Models. + NBER Chapters. National Bureau of Economic Research, Inc. + + """ + # We can't use complex-step differentiation with non-transformed + # parameters + if approx_complex_step is None: + approx_complex_step = transformed + if not transformed and approx_complex_step: + raise ValueError("Cannot use complex-step approximations to" + " calculate the observed_information_matrix" + " with untransformed parameters.") + + score_obs = self.score_obs(params, transformed=transformed, + approx_complex_step=approx_complex_step, + **kwargs).transpose() + return ( + np.inner(score_obs, score_obs) / + (self.nobs - self.ssm.loglikelihood_burn) + ) + + def _score_complex_step(self, params, **kwargs): + # the default epsilon can be too small + # inversion_method = INVERT_UNIVARIATE | SOLVE_LU + epsilon = _get_epsilon(params, 2., None, len(params)) + kwargs['transformed'] = True + kwargs['complex_step'] = True + return approx_fprime_cs(params, self.loglike, epsilon=epsilon, + kwargs=kwargs) + + def _score_finite_difference(self, params, approx_centered=False, + **kwargs): + kwargs['transformed'] = True + return approx_fprime(params, self.loglike, kwargs=kwargs, + centered=approx_centered) + + def _score_harvey(self, params, approx_complex_step=True, **kwargs): + score_obs = self._score_obs_harvey( + params, approx_complex_step=approx_complex_step, **kwargs) + return np.sum(score_obs, axis=0) + + def _score_obs_harvey(self, params, approx_complex_step=True, + approx_centered=False, **kwargs): + """ + Score + + Parameters + ---------- + params : array_like, optional + Array of parameters at which to evaluate the loglikelihood + function. + **kwargs + Additional keyword arguments to pass to the Kalman filter. See + `KalmanFilter.filter` for more details. + + Notes + ----- + This method is from Harvey (1989), section 3.4.5 + + References + ---------- + Harvey, Andrew C. 1990. + Forecasting, Structural Time Series Models and the Kalman Filter. + Cambridge University Press. + + """ + params = np.array(params, ndmin=1) + n = len(params) + + # Get values at the params themselves + self.update(params, transformed=True, complex_step=approx_complex_step) + if approx_complex_step: + kwargs['inversion_method'] = INVERT_UNIVARIATE | SOLVE_LU + res = self.ssm.filter(complex_step=approx_complex_step, **kwargs) + + # Get forecasts error partials + partials_forecasts_error, partials_forecasts_error_cov = ( + self._forecasts_error_partial_derivatives( + params, transformed=True, + approx_complex_step=approx_complex_step, + approx_centered=approx_centered, res=res, **kwargs)) + + # Compute partial derivatives w.r.t. likelihood function + partials = np.zeros((self.nobs, n)) + k_endog = self.k_endog + for t in range(self.nobs): + inv_forecasts_error_cov = np.linalg.inv( + res.forecasts_error_cov[:, :, t]) + + for i in range(n): + partials[t, i] += np.trace(np.dot( + np.dot(inv_forecasts_error_cov, + partials_forecasts_error_cov[:, :, t, i]), + (np.eye(k_endog) - + np.dot(inv_forecasts_error_cov, + np.outer(res.forecasts_error[:, t], + res.forecasts_error[:, t]))))) + # 2 * dv / di * F^{-1} v_t + # where x = F^{-1} v_t or F x = v + partials[t, i] += 2 * np.dot( + partials_forecasts_error[:, t, i], + np.dot(inv_forecasts_error_cov, res.forecasts_error[:, t])) + + return -partials / 2. + + _score_param_names = ['transformed', 'score_method', + 'approx_complex_step', 'approx_centered'] + _score_param_defaults = [True, 'approx', None, False] + + def score(self, params, *args, **kwargs): + """ + Compute the score function at params. + + Parameters + ---------- + params : array_like + Array of parameters at which to evaluate the score. + args + Additional positional arguments to the `loglike` method. + kwargs + Additional keyword arguments to the `loglike` method. + + Returns + ------- + score : array + Score, evaluated at `params`. + + Notes + ----- + This is a numerical approximation, calculated using first-order complex + step differentiation on the `loglike` method. + + Both args and kwargs are necessary because the optimizer from + `fit` must call this function and only supports passing arguments via + args (for example `scipy.optimize.fmin_l_bfgs`). + """ + params = np.array(params, ndmin=1) + + transformed, method, approx_complex_step, approx_centered, kwargs = ( + _handle_args(MLEModel._score_param_names, + MLEModel._score_param_defaults, *args, **kwargs)) + # For fit() calls, the method is called 'score_method' (to distinguish + # it from the method used for fit) but generally in kwargs the method + # will just be called 'method' + if 'method' in kwargs: + method = kwargs.pop('method') + + if approx_complex_step is None: + approx_complex_step = not self.ssm._complex_endog + if approx_complex_step and self.ssm._complex_endog: + raise ValueError('Cannot use complex step derivatives when data' + ' or parameters are complex.') + + if not transformed: + transform_score = self.transform_jacobian(params) + params = self.transform_params(params) + + if method == 'harvey': + score = self._score_harvey( + params, approx_complex_step=approx_complex_step, **kwargs) + elif method == 'approx' and approx_complex_step: + score = self._score_complex_step(params, **kwargs) + elif method == 'approx': + score = self._score_finite_difference( + params, approx_centered=approx_centered, **kwargs) + else: + raise NotImplementedError('Invalid score method.') + + if not transformed: + score = np.dot(transform_score, score) + + return score + + def score_obs(self, params, method='approx', transformed=True, + approx_complex_step=None, approx_centered=False, **kwargs): + """ + Compute the score per observation, evaluated at params + + Parameters + ---------- + params : array_like + Array of parameters at which to evaluate the score. + kwargs + Additional arguments to the `loglike` method. + + Returns + ------- + score : array + Score per observation, evaluated at `params`. + + Notes + ----- + This is a numerical approximation, calculated using first-order complex + step differentiation on the `loglikeobs` method. + """ + params = np.array(params, ndmin=1) + + if not transformed and approx_complex_step: + raise ValueError("Cannot use complex-step approximations to" + " calculate the score at each observation" + " with untransformed parameters.") + + if approx_complex_step is None: + approx_complex_step = not self.ssm._complex_endog + if approx_complex_step and self.ssm._complex_endog: + raise ValueError('Cannot use complex step derivatives when data' + ' or parameters are complex.') + + if method == 'harvey': + score = self._score_obs_harvey( + params, transformed=transformed, + approx_complex_step=approx_complex_step, **kwargs) + elif method == 'approx' and approx_complex_step: + # the default epsilon can be too small + epsilon = _get_epsilon(params, 2., None, len(params)) + kwargs['complex_step'] = True + kwargs['transformed'] = True + score = approx_fprime_cs(params, self.loglikeobs, epsilon=epsilon, + kwargs=kwargs) + elif method == 'approx': + kwargs['transformed'] = transformed + score = approx_fprime(params, self.loglikeobs, kwargs=kwargs, + centered=approx_centered) + else: + raise NotImplementedError('Invalid scoreobs method.') + + return score + + _hessian_param_names = ['transformed', 'hessian_method', + 'approx_complex_step', 'approx_centered'] + _hessian_param_defaults = [True, 'approx', None, False] + + def hessian(self, params, *args, **kwargs): + r""" + Hessian matrix of the likelihood function, evaluated at the given + parameters + + Parameters + ---------- + params : array_like + Array of parameters at which to evaluate the hessian. + args + Additional positional arguments to the `loglike` method. + kwargs + Additional keyword arguments to the `loglike` method. + + Returns + ------- + hessian : array + Hessian matrix evaluated at `params` + + Notes + ----- + This is a numerical approximation. + + Both args and kwargs are necessary because the optimizer from + `fit` must call this function and only supports passing arguments via + args (for example `scipy.optimize.fmin_l_bfgs`). + """ + transformed, method, approx_complex_step, approx_centered, kwargs = ( + _handle_args(MLEModel._hessian_param_names, + MLEModel._hessian_param_defaults, + *args, **kwargs)) + # For fit() calls, the method is called 'hessian_method' (to + # distinguish it from the method used for fit) but generally in kwargs + # the method will just be called 'method' + if 'method' in kwargs: + method = kwargs.pop('method') + + if not transformed and approx_complex_step: + raise ValueError("Cannot use complex-step approximations to" + " calculate the hessian with untransformed" + " parameters.") + + if approx_complex_step is None: + approx_complex_step = not self.ssm._complex_endog + if approx_complex_step and self.ssm._complex_endog: + raise ValueError('Cannot use complex step derivatives when data' + ' or parameters are complex.') + + if method == 'oim': + hessian = self._hessian_oim( + params, transformed=transformed, + approx_complex_step=approx_complex_step, + approx_centered=approx_centered, **kwargs) + elif method == 'opg': + hessian = self._hessian_opg( + params, transformed=transformed, + approx_complex_step=approx_complex_step, + approx_centered=approx_centered, **kwargs) + elif method == 'approx' and approx_complex_step: + hessian = self._hessian_complex_step( + params, transformed=transformed, **kwargs) + elif method == 'approx': + hessian = self._hessian_finite_difference( + params, transformed=transformed, + approx_centered=approx_centered, **kwargs) + else: + raise NotImplementedError('Invalid Hessian calculation method.') + return hessian + + def _hessian_oim(self, params, **kwargs): + """ + Hessian matrix computed using the Harvey (1989) information matrix + """ + return -self.observed_information_matrix(params, **kwargs) + + def _hessian_opg(self, params, **kwargs): + """ + Hessian matrix computed using the outer product of gradients + information matrix + """ + return -self.opg_information_matrix(params, **kwargs) + + def _hessian_finite_difference(self, params, approx_centered=False, + **kwargs): + params = np.array(params, ndmin=1) + + warnings.warn('Calculation of the Hessian using finite differences' + ' is usually subject to substantial approximation' + ' errors.', PrecisionWarning) + + if not approx_centered: + epsilon = _get_epsilon(params, 3, None, len(params)) + else: + epsilon = _get_epsilon(params, 4, None, len(params)) / 2 + hessian = approx_fprime(params, self._score_finite_difference, + epsilon=epsilon, kwargs=kwargs, + centered=approx_centered) + + return hessian / (self.nobs - self.ssm.loglikelihood_burn) + + def _hessian_complex_step(self, params, **kwargs): + """ + Hessian matrix computed by second-order complex-step differentiation + on the `loglike` function. + """ + # the default epsilon can be too small + epsilon = _get_epsilon(params, 3., None, len(params)) + kwargs['transformed'] = True + kwargs['complex_step'] = True + hessian = approx_hess_cs( + params, self.loglike, epsilon=epsilon, kwargs=kwargs) + + return hessian / (self.nobs - self.ssm.loglikelihood_burn) + + @property + def start_params(self): + """ + (array) Starting parameters for maximum likelihood estimation. + """ + if hasattr(self, '_start_params'): + return self._start_params + else: + raise NotImplementedError + + @property + def param_names(self): + """ + (list of str) List of human readable parameter names (for parameters + actually included in the model). + """ + if hasattr(self, '_param_names'): + return self._param_names + else: + try: + names = ['param.%d' % i for i in range(len(self.start_params))] + except NotImplementedError: + names = [] + return names + + def transform_jacobian(self, unconstrained, approx_centered=False): + """ + Jacobian matrix for the parameter transformation function + + Parameters + ---------- + unconstrained : array_like + Array of unconstrained parameters used by the optimizer. + + Returns + ------- + jacobian : array + Jacobian matrix of the transformation, evaluated at `unconstrained` + + Notes + ----- + This is a numerical approximation using finite differences. Note that + in general complex step methods cannot be used because it is not + guaranteed that the `transform_params` method is a real function (e.g. + if Cholesky decomposition is used). + + See Also + -------- + transform_params + """ + return approx_fprime(unconstrained, self.transform_params, + centered=approx_centered) + + def transform_params(self, unconstrained): + """ + Transform unconstrained parameters used by the optimizer to constrained + parameters used in likelihood evaluation + + Parameters + ---------- + unconstrained : array_like + Array of unconstrained parameters used by the optimizer, to be + transformed. + + Returns + ------- + constrained : array_like + Array of constrained parameters which may be used in likelihood + evalation. + + Notes + ----- + This is a noop in the base class, subclasses should override where + appropriate. + """ + return np.array(unconstrained, ndmin=1) + + def untransform_params(self, constrained): + """ + Transform constrained parameters used in likelihood evaluation + to unconstrained parameters used by the optimizer + + Parameters + ---------- + constrained : array_like + Array of constrained parameters used in likelihood evalution, to be + transformed. + + Returns + ------- + unconstrained : array_like + Array of unconstrained parameters used by the optimizer. + + Notes + ----- + This is a noop in the base class, subclasses should override where + appropriate. + """ + return np.array(constrained, ndmin=1) + + def update(self, params, transformed=True, complex_step=False): + """ + Update the parameters of the model + + Parameters + ---------- + params : array_like + Array of new parameters. + transformed : boolean, optional + Whether or not `params` is already transformed. If set to False, + `transform_params` is called. Default is True. + + Returns + ------- + params : array_like + Array of parameters. + + Notes + ----- + Since Model is a base class, this method should be overridden by + subclasses to perform actual updating steps. + """ + params = np.array(params, ndmin=1) + + if not transformed: + params = self.transform_params(params) + + return params + + def simulate(self, params, nsimulations, measurement_shocks=None, + state_shocks=None, initial_state=None): + r""" + Simulate a new time series following the state space model + + Parameters + ---------- + params : array_like + Array of model parameters. + nsimulations : int + The number of observations to simulate. If the model is + time-invariant this can be any number. If the model is + time-varying, then this number must be less than or equal to the + number + measurement_shocks : array_like, optional + If specified, these are the shocks to the measurement equation, + :math:`\varepsilon_t`. If unspecified, these are automatically + generated using a pseudo-random number generator. If specified, + must be shaped `nsimulations` x `k_endog`, where `k_endog` is the + same as in the state space model. + state_shocks : array_like, optional + If specified, these are the shocks to the state equation, + :math:`\eta_t`. If unspecified, these are automatically + generated using a pseudo-random number generator. If specified, + must be shaped `nsimulations` x `k_posdef` where `k_posdef` is the + same as in the state space model. + initial_state : array_like, optional + If specified, this is the state vector at time zero, which should + be shaped (`k_states` x 1), where `k_states` is the same as in the + state space model. If unspecified, but the model has been + initialized, then that initialization is used. If unspecified and + the model has not been initialized, then a vector of zeros is used. + Note that this is not included in the returned `simulated_states` + array. + + Returns + ------- + simulated_obs : array + An (nsimulations x k_endog) array of simulated observations. + """ + self.update(params) + + simulated_obs, simulated_states = self.ssm.simulate( + nsimulations, measurement_shocks, state_shocks, initial_state) + + # Simulated obs is (nobs x k_endog); don't want to squeeze in + # case of nsimulations = 1 + if simulated_obs.shape[1] == 1: + simulated_obs = simulated_obs[:, 0] + return simulated_obs + + def impulse_responses(self, params, steps=1, impulse=0, + orthogonalized=False, cumulative=False, **kwargs): + """ + Impulse response function + + Parameters + ---------- + params : array_like + Array of model parameters. + steps : int, optional + The number of steps for which impulse responses are calculated. + Default is 1. Note that the initial impulse is not counted as a + step, so if `steps=1`, the output will have 2 entries. + impulse : int or array_like + If an integer, the state innovation to pulse; must be between 0 + and `k_posdef-1`. Alternatively, a custom impulse vector may be + provided; must be shaped `k_posdef x 1`. + orthogonalized : boolean, optional + Whether or not to perform impulse using orthogonalized innovations. + Note that this will also affect custum `impulse` vectors. Default + is False. + cumulative : boolean, optional + Whether or not to return cumulative impulse responses. Default is + False. + **kwargs + If the model is time-varying and `steps` is greater than the number + of observations, any of the state space representation matrices + that are time-varying must have updated values provided for the + out-of-sample steps. + For example, if `design` is a time-varying component, `nobs` is 10, + and `steps` is 15, a (`k_endog` x `k_states` x 5) matrix must be + provided with the new design matrix values. + + Returns + ------- + impulse_responses : array + Responses for each endogenous variable due to the impulse + given by the `impulse` argument. A (steps + 1 x k_endog) array. + + Notes + ----- + Intercepts in the measurement and state equation are ignored when + calculating impulse responses. + + """ + self.update(params) + irfs = self.ssm.impulse_responses( + steps, impulse, orthogonalized, cumulative, **kwargs) + + # IRF is (nobs x k_endog); don't want to squeeze in case of steps = 1 + if irfs.shape[1] == 1: + irfs = irfs[:, 0] + + return irfs + + @classmethod + def from_formula(cls, formula, data, subset=None): + """ + Not implemented for state space models + """ + raise NotImplementedError + + +class MLEResults(tsbase.TimeSeriesModelResults): + r""" + Class to hold results from fitting a state space model. + + Parameters + ---------- + model : MLEModel instance + The fitted model instance + params : array + Fitted parameters + filter_results : KalmanFilter instance + The underlying state space model and Kalman filter output + + Attributes + ---------- + model : Model instance + A reference to the model that was fit. + filter_results : KalmanFilter instance + The underlying state space model and Kalman filter output + nobs : float + The number of observations used to fit the model. + params : array + The parameters of the model. + scale : float + This is currently set to 1.0 unless the model uses concentrated + filtering. + + See Also + -------- + MLEModel + statsmodels.tsa.statespace.kalman_filter.FilterResults + statsmodels.tsa.statespace.representation.FrozenRepresentation + """ + def __init__(self, model, params, results, cov_type='opg', + cov_kwds=None, **kwargs): + self.data = model.data + scale = results.scale + + tsbase.TimeSeriesModelResults.__init__(self, model, params, + normalized_cov_params=None, + scale=scale) + + # Save the state space representation output + self.filter_results = results + if isinstance(results, SmootherResults): + self.smoother_results = results + else: + self.smoother_results = None + + # Dimensions + self.nobs = self.filter_results.nobs + self.nobs_diffuse = self.filter_results.nobs_diffuse + if self.nobs_diffuse > 0 and self.loglikelihood_burn > 0: + warnings.warn('Care should be used when applying a loglikelihood' + ' burn to a model with exact diffuse initialization.' + ' Some results objects, e.g. degrees of freedom,' + ' expect only one of the two to be set.') + # This only excludes explicitly burned (usually approximate diffuse) + # periods but does not exclude approximate diffuse periods. This is + # because the loglikelihood remains valid for the initial periods in + # the exact diffuse case (see DK, 2012, section 7.2) and so also do + # e.g. information criteria (see DK, 2012, section 7.4) and the score + # vector (see DK, 2012, section 7.3.3, equation 7.15). + # However, other objects should be excluded in the diffuse periods + # (e.g. the diffuse forecast errors, so in some cases a different + # nobs_effective will have to be computed and used) + self.nobs_effective = self.nobs - self.loglikelihood_burn + + P = self.filter_results.initial_diffuse_state_cov + self.k_diffuse_states = 0 if P is None else np.sum(np.diagonal(P) == 1) + + # Degrees of freedom (see DK 2012, section 7.4) + self.df_model = (self.params.size + self.k_diffuse_states + + self.filter_results.filter_concentrated) + self.df_resid = self.nobs_effective - self.df_model + + # Setup covariance matrix notes dictionary + if not hasattr(self, 'cov_kwds'): + self.cov_kwds = {} + self.cov_type = cov_type + + # Setup the cache + self._cache = {} + + # Handle covariance matrix calculation + if cov_kwds is None: + cov_kwds = {} + self._cov_approx_complex_step = ( + cov_kwds.pop('approx_complex_step', True)) + self._cov_approx_centered = cov_kwds.pop('approx_centered', False) + try: + self._rank = None + self._get_robustcov_results(cov_type=cov_type, use_self=True, + **cov_kwds) + except np.linalg.LinAlgError: + self._rank = 0 + k_params = len(self.params) + self.cov_params_default = np.zeros((k_params, k_params)) * np.nan + self.cov_kwds['cov_type'] = ( + 'Covariance matrix could not be calculated: singular.' + ' information matrix.') + self.model.update(self.params) + + # References of filter and smoother output + extra_arrays = [ + 'filtered_state', 'filtered_state_cov', 'predicted_state', + 'predicted_state_cov', 'forecasts', 'forecasts_error', + 'forecasts_error_cov', 'standardized_forecasts_error', + 'forecasts_error_diffuse_cov', 'predicted_diffuse_state_cov', + 'scaled_smoothed_estimator', + 'scaled_smoothed_estimator_cov', 'smoothing_error', + 'smoothed_state', + 'smoothed_state_cov', 'smoothed_state_autocov', + 'smoothed_measurement_disturbance', + 'smoothed_state_disturbance', + 'smoothed_measurement_disturbance_cov', + 'smoothed_state_disturbance_cov'] + for name in extra_arrays: + setattr(self, name, getattr(self.filter_results, name, None)) + + # Handle removing data + self._data_attr_model = getattr(self, '_data_attr_model', []) + self._data_attr_model.extend(['ssm']) + self._data_attr.extend(extra_arrays) + self._data_attr.extend(['filter_results', 'smoother_results']) + self.data_in_cache = getattr(self, 'data_in_cache', []) + self.data_in_cache.extend([]) + + def _get_robustcov_results(self, cov_type='opg', **kwargs): + """ + Create new results instance with specified covariance estimator as + default + + Note: creating new results instance currently not supported. + + Parameters + ---------- + cov_type : string + the type of covariance matrix estimator to use. See Notes below + kwargs : depends on cov_type + Required or optional arguments for covariance calculation. + See Notes below. + + Returns + ------- + results : results instance + This method creates a new results instance with the requested + covariance as the default covariance of the parameters. + Inferential statistics like p-values and hypothesis tests will be + based on this covariance matrix. + + Notes + ----- + The following covariance types and required or optional arguments are + currently available: + + - 'opg' for the outer product of gradient estimator + - 'oim' for the observed information matrix estimator, calculated + using the method of Harvey (1989) + - 'approx' for the observed information matrix estimator, + calculated using a numerical approximation of the Hessian matrix. + Uses complex step approximation by default, or uses finite + differences if `approx_complex_step=False` in the `cov_kwds` + dictionary. + - 'robust' for an approximate (quasi-maximum likelihood) covariance + matrix that may be valid even in the presense of some + misspecifications. Intermediate calculations use the 'oim' + method. + - 'robust_approx' is the same as 'robust' except that the + intermediate calculations use the 'approx' method. + - 'none' for no covariance matrix calculation. + """ + from statsmodels.base.covtype import descriptions + + use_self = kwargs.pop('use_self', False) + if use_self: + res = self + else: + raise NotImplementedError + res = self.__class__( + self.model, self.params, + normalized_cov_params=self.normalized_cov_params, + scale=self.scale) + + # Set the new covariance type + res.cov_type = cov_type + res.cov_kwds = {} + + # Calculate the new covariance matrix + approx_complex_step = self._cov_approx_complex_step + if approx_complex_step: + approx_type_str = 'complex-step' + elif self._cov_approx_centered: + approx_type_str = 'centered finite differences' + else: + approx_type_str = 'finite differences' + + k_params = len(self.params) + if k_params == 0: + res.cov_params_default = np.zeros((0, 0)) + res._rank = 0 + res.cov_kwds['description'] = 'No parameters estimated.' + elif cov_type == 'custom': + res.cov_type = kwargs['custom_cov_type'] + res.cov_params_default = kwargs['custom_cov_params'] + res.cov_kwds['description'] = kwargs['custom_description'] + res._rank = np.linalg.matrix_rank(res.cov_params_default) + elif cov_type == 'none': + res.cov_params_default = np.zeros((k_params, k_params)) * np.nan + res._rank = np.nan + res.cov_kwds['description'] = descriptions['none'] + elif self.cov_type == 'approx': + res.cov_params_default = res.cov_params_approx + res.cov_kwds['description'] = descriptions['approx'].format( + approx_type=approx_type_str) + elif self.cov_type == 'oim': + res.cov_params_default = res.cov_params_oim + res.cov_kwds['description'] = descriptions['OIM'].format( + approx_type=approx_type_str) + elif self.cov_type == 'opg': + res.cov_params_default = res.cov_params_opg + res.cov_kwds['description'] = descriptions['OPG'].format( + approx_type=approx_type_str) + elif self.cov_type == 'robust' or self.cov_type == 'robust_oim': + res.cov_params_default = res.cov_params_robust_oim + res.cov_kwds['description'] = descriptions['robust-OIM'].format( + approx_type=approx_type_str) + elif self.cov_type == 'robust_approx': + res.cov_params_default = res.cov_params_robust_approx + res.cov_kwds['description'] = descriptions['robust-approx'].format( + approx_type=approx_type_str) + else: + raise NotImplementedError('Invalid covariance matrix type.') + + return res + + @cache_readonly + def aic(self): + """ + (float) Akaike Information Criterion + """ + # return -2 * self.llf + 2 * self.df_model + return aic(self.llf, self.nobs_effective, self.df_model) + + @cache_readonly + def bic(self): + """ + (float) Bayes Information Criterion + """ + # return (-2 * self.llf + + # self.df_model * np.log(self.nobs_effective)) + return bic(self.llf, self.nobs_effective, self.df_model) + + def _cov_params_approx(self, approx_complex_step=True, + approx_centered=False): + evaluated_hessian = self.nobs_effective * self.model.hessian( + params=self.params, transformed=True, method='approx', + approx_complex_step=approx_complex_step, + approx_centered=approx_centered) + # TODO: Case with "not approx_complex_step" is not hit in + # tests as of 2017-05-19 + + (neg_cov, singular_values) = pinv_extended(evaluated_hessian) + + self.model.update(self.params) + if self._rank is None: + self._rank = np.linalg.matrix_rank(np.diag(singular_values)) + return -neg_cov + + @cache_readonly + def cov_params_approx(self): + """ + (array) The variance / covariance matrix. Computed using the numerical + Hessian approximated by complex step or finite differences methods. + """ + return self._cov_params_approx(self._cov_approx_complex_step, + self._cov_approx_centered) + + def _cov_params_oim(self, approx_complex_step=True, approx_centered=False): + evaluated_hessian = self.nobs_effective * self.model.hessian( + self.params, hessian_method='oim', transformed=True, + approx_complex_step=approx_complex_step, + approx_centered=approx_centered) + + (neg_cov, singular_values) = pinv_extended(evaluated_hessian) + + self.model.update(self.params) + if self._rank is None: + self._rank = np.linalg.matrix_rank(np.diag(singular_values)) + return -neg_cov + + @cache_readonly + def cov_params_oim(self): + """ + (array) The variance / covariance matrix. Computed using the method + from Harvey (1989). + """ + return self._cov_params_oim(self._cov_approx_complex_step, + self._cov_approx_centered) + + def _cov_params_opg(self, approx_complex_step=True, approx_centered=False): + evaluated_hessian = self.nobs_effective * self.model._hessian_opg( + self.params, transformed=True, + approx_complex_step=approx_complex_step, + approx_centered=approx_centered) + + (neg_cov, singular_values) = pinv_extended(evaluated_hessian) + + self.model.update(self.params) + if self._rank is None: + self._rank = np.linalg.matrix_rank(np.diag(singular_values)) + return -neg_cov + + @cache_readonly + def cov_params_opg(self): + """ + (array) The variance / covariance matrix. Computed using the outer + product of gradients method. + """ + return self._cov_params_opg(self._cov_approx_complex_step, + self._cov_approx_centered) + + @cache_readonly + def cov_params_robust(self): + """ + (array) The QMLE variance / covariance matrix. Alias for + `cov_params_robust_oim` + """ + return self.cov_params_robust_oim + + def _cov_params_robust_oim(self, approx_complex_step=True, + approx_centered=False): + cov_opg = self._cov_params_opg(approx_complex_step=approx_complex_step, + approx_centered=approx_centered) + + evaluated_hessian = self.nobs_effective * self.model.hessian( + self.params, hessian_method='oim', transformed=True, + approx_complex_step=approx_complex_step, + approx_centered=approx_centered) + + cov_params, singular_values = pinv_extended( + np.dot(np.dot(evaluated_hessian, cov_opg), evaluated_hessian) + ) + + self.model.update(self.params) + if self._rank is None: + self._rank = np.linalg.matrix_rank(np.diag(singular_values)) + return cov_params + + @cache_readonly + def cov_params_robust_oim(self): + """ + (array) The QMLE variance / covariance matrix. Computed using the + method from Harvey (1989) as the evaluated hessian. + """ + return self._cov_params_robust_oim(self._cov_approx_complex_step, + self._cov_approx_centered) + + def _cov_params_robust_approx(self, approx_complex_step=True, + approx_centered=False): + cov_opg = self._cov_params_opg(approx_complex_step=approx_complex_step, + approx_centered=approx_centered) + + evaluated_hessian = self.nobs_effective * self.model.hessian( + self.params, transformed=True, method='approx', + approx_complex_step=approx_complex_step) + # TODO: Case with "not approx_complex_step" is not + # hit in tests as of 2017-05-19 + + (cov_params, singular_values) = pinv_extended( + np.dot(np.dot(evaluated_hessian, cov_opg), evaluated_hessian) + ) + + self.model.update(self.params) + if self._rank is None: + self._rank = np.linalg.matrix_rank(np.diag(singular_values)) + return cov_params + + @cache_readonly + def cov_params_robust_approx(self): + """ + (array) The QMLE variance / covariance matrix. Computed using the + numerical Hessian as the evaluated hessian. + """ + return self._cov_params_robust_approx(self._cov_approx_complex_step, + self._cov_approx_centered) + + def info_criteria(self, criteria, method='standard'): + r""" + Information criteria + + Parameters + ---------- + criteria : {'aic', 'bic', 'hqic'} + The information criteria to compute. + method : {'standard', 'lutkepohl'} + The method for information criteria computation. Default is + 'standard' method; 'lutkepohl' computes the information criteria + as in Lütkepohl (2007). See Notes for formulas. + + Notes + ----- + The `'standard'` formulas are: + + .. math:: + + AIC & = -2 \log L(Y_n | \hat \psi) + 2 k \\ + BIC & = -2 \log L(Y_n | \hat \psi) + k \log n \\ + HQIC & = -2 \log L(Y_n | \hat \psi) + 2 k \log \log n \\ + + where :math:`\hat \psi` are the maximum likelihood estimates of the + parameters, :math:`n` is the number of observations, and `k` is the + number of estimated parameters. + + Note that the `'standard'` formulas are returned from the `aic`, `bic`, + and `hqic` results attributes. + + The `'lutkepohl'` formuals are (Lütkepohl, 2010): + + .. math:: + + AIC_L & = \log | Q | + \frac{2 k}{n} \\ + BIC_L & = \log | Q | + \frac{k \log n}{n} \\ + HQIC_L & = \log | Q | + \frac{2 k \log \log n}{n} \\ + + where :math:`Q` is the state covariance matrix. Note that the Lütkepohl + definitions do not apply to all state space models, and should be used + with care outside of SARIMAX and VARMAX models. + + References + ---------- + .. [*] Lütkepohl, Helmut. 2007. *New Introduction to Multiple Time* + *Series Analysis.* Berlin: Springer. + """ + criteria = criteria.lower() + method = method.lower() + + if method == 'standard': + out = getattr(self, criteria) + elif method == 'lutkepohl': + if self.filter_results.state_cov.shape[-1] > 1: + raise ValueError('Cannot compute Lütkepohl statistics for' + ' models with time-varying state covariance' + ' matrix.') + + cov = self.filter_results.state_cov[:, :, 0] + if criteria == 'aic': + out = np.squeeze(np.linalg.slogdet(cov)[1] + + 2 * self.df_model / self.nobs_effective) + elif criteria == 'bic': + out = np.squeeze(np.linalg.slogdet(cov)[1] + + self.df_model * np.log(self.nobs_effective) / + self.nobs_effective) + elif criteria == 'hqic': + out = np.squeeze(np.linalg.slogdet(cov)[1] + + 2 * self.df_model * + np.log(np.log(self.nobs_effective)) / + self.nobs_effective) + else: + raise ValueError('Invalid information criteria') + + else: + raise ValueError('Invalid information criteria computation method') + + return out + + @cache_readonly + def fittedvalues(self): + """ + (array) The predicted values of the model. An (nobs x k_endog) array. + """ + # This is a (k_endog x nobs array; don't want to squeeze in case of + # the corner case where nobs = 1 (mostly a concern in the predict or + # forecast functions, but here also to maintain consistency) + fittedvalues = self.forecasts + if fittedvalues.shape[0] == 1: + fittedvalues = fittedvalues[0, :] + else: + fittedvalues = fittedvalues.T + return fittedvalues + + @cache_readonly + def hqic(self): + """ + (float) Hannan-Quinn Information Criterion + """ + # return (-2 * self.llf + + # 2 * np.log(np.log(self.nobs_effective)) * self.df_model) + return hqic(self.llf, self.nobs_effective, self.df_model) + + @cache_readonly + def llf_obs(self): + """ + (float) The value of the log-likelihood function evaluated at `params`. + """ + return self.filter_results.llf_obs + + @cache_readonly + def llf(self): + """ + (float) The value of the log-likelihood function evaluated at `params`. + """ + return self.llf_obs[self.filter_results.loglikelihood_burn:].sum() + + @cache_readonly + def loglikelihood_burn(self): + """ + (float) The number of observations during which the likelihood is not + evaluated. + """ + return self.filter_results.loglikelihood_burn + + @cache_readonly + def pvalues(self): + """ + (array) The p-values associated with the z-statistics of the + coefficients. Note that the coefficients are assumed to have a Normal + distribution. + """ + return norm.sf(np.abs(self.zvalues)) * 2 + + @cache_readonly + def resid(self): + """ + (array) The model residuals. An (nobs x k_endog) array. + """ + # This is a (k_endog x nobs array; don't want to squeeze in case of + # the corner case where nobs = 1 (mostly a concern in the predict or + # forecast functions, but here also to maintain consistency) + resid = self.forecasts_error + if resid.shape[0] == 1: + resid = resid[0, :] + else: + resid = resid.T + return resid + + @cache_readonly + def zvalues(self): + """ + (array) The z-statistics for the coefficients. + """ + return self.params / self.bse + + def test_normality(self, method): + """ + Test for normality of standardized residuals. + + Null hypothesis is normality. + + Parameters + ---------- + method : string {'jarquebera'} or None + The statistical test for normality. Must be 'jarquebera' for + Jarque-Bera normality test. If None, an attempt is made to select + an appropriate test. + + Notes + ----- + Let `d` = max(loglikelihood_burn, nobs_diffuse); this test is + calculated ignoring the first `d` residuals. + + In the case of missing data, the maintained hypothesis is that the + data are missing completely at random. This test is then run on the + standardized residuals excluding those corresponding to missing + observations. + + See Also + -------- + statsmodels.stats.stattools.jarque_bera + + """ + if method is None: + method = 'jarquebera' + + if method == 'jarquebera': + from statsmodels.stats.stattools import jarque_bera + d = np.maximum(self.loglikelihood_burn, self.nobs_diffuse) + output = [] + for i in range(self.model.k_endog): + resid = self.filter_results.standardized_forecasts_error[i, d:] + mask = ~np.isnan(resid) + output.append(jarque_bera(resid[mask])) + else: + raise NotImplementedError('Invalid normality test method.') + + return np.array(output) + + def test_heteroskedasticity(self, method, alternative='two-sided', + use_f=True): + r""" + Test for heteroskedasticity of standardized residuals + + Tests whether the sum-of-squares in the first third of the sample is + significantly different than the sum-of-squares in the last third + of the sample. Analogous to a Goldfeld-Quandt test. The null hypothesis + is of no heteroskedasticity. + + Parameters + ---------- + method : string {'breakvar'} or None + The statistical test for heteroskedasticity. Must be 'breakvar' + for test of a break in the variance. If None, an attempt is + made to select an appropriate test. + alternative : string, 'increasing', 'decreasing' or 'two-sided' + This specifies the alternative for the p-value calculation. Default + is two-sided. + use_f : boolean, optional + Whether or not to compare against the asymptotic distribution + (chi-squared) or the approximate small-sample distribution (F). + Default is True (i.e. default is to compare against an F + distribution). + + Returns + ------- + output : array + An array with `(test_statistic, pvalue)` for each endogenous + variable. The array is then sized `(k_endog, 2)`. If the method is + called as `het = res.test_heteroskedasticity()`, then `het[0]` is + an array of size 2 corresponding to the first endogenous variable, + where `het[0][0]` is the test statistic, and `het[0][1]` is the + p-value. + + Notes + ----- + The null hypothesis is of no heteroskedasticity. That means different + things depending on which alternative is selected: + + - Increasing: Null hypothesis is that the variance is not increasing + throughout the sample; that the sum-of-squares in the later + subsample is *not* greater than the sum-of-squares in the earlier + subsample. + - Decreasing: Null hypothesis is that the variance is not decreasing + throughout the sample; that the sum-of-squares in the earlier + subsample is *not* greater than the sum-of-squares in the later + subsample. + - Two-sided: Null hypothesis is that the variance is not changing + throughout the sample. Both that the sum-of-squares in the earlier + subsample is not greater than the sum-of-squares in the later + subsample *and* that the sum-of-squares in the later subsample is + not greater than the sum-of-squares in the earlier subsample. + + For :math:`h = [T/3]`, the test statistic is: + + .. math:: + + H(h) = \sum_{t=T-h+1}^T \tilde v_t^2 + \Bigg / \sum_{t=d+1}^{d+1+h} \tilde v_t^2 + + where :math:`d` = max(loglikelihood_burn, nobs_diffuse)` (usually + corresponding to diffuse initialization under either the approximate + or exact approach). + + This statistic can be tested against an :math:`F(h,h)` distribution. + Alternatively, :math:`h H(h)` is asymptotically distributed according + to :math:`\chi_h^2`; this second test can be applied by passing + `asymptotic=True` as an argument. + + See section 5.4 of [1]_ for the above formula and discussion, as well + as additional details. + + TODO + + - Allow specification of :math:`h` + + References + ---------- + .. [1] Harvey, Andrew C. 1990. *Forecasting, Structural Time Series* + *Models and the Kalman Filter.* Cambridge University Press. + """ + if method is None: + method = 'breakvar' + + if method == 'breakvar': + # Store some values + squared_resid = self.filter_results.standardized_forecasts_error**2 + d = np.maximum(self.loglikelihood_burn, self.nobs_diffuse) + # This differs from self.nobs_effective because here we want to + # exclude exact diffuse periods, whereas self.nobs_effective only + # excludes explicitly burned (usually approximate diffuse) periods. + nobs_effective = self.nobs - d + + test_statistics = [] + p_values = [] + for i in range(self.model.k_endog): + h = int(np.round(nobs_effective / 3)) + numer_resid = squared_resid[i, -h:] + numer_resid = numer_resid[~np.isnan(numer_resid)] + numer_dof = len(numer_resid) + + denom_resid = squared_resid[i, d:d+h] + denom_resid = denom_resid[~np.isnan(denom_resid)] + denom_dof = len(denom_resid) + + if numer_dof < 2: + warnings.warn('Early subset of data for variable %d' + ' has too few non-missing observations to' + ' calculate test statistic.' % i) + numer_resid = np.nan + if denom_dof < 2: + warnings.warn('Later subset of data for variable %d' + ' has too few non-missing observations to' + ' calculate test statistic.' % i) + denom_resid = np.nan + + test_statistic = np.sum(numer_resid) / np.sum(denom_resid) + + # Setup functions to calculate the p-values + if use_f: + from scipy.stats import f + pval_lower = lambda test_statistics: f.cdf( # noqa:E731 + test_statistics, numer_dof, denom_dof) + pval_upper = lambda test_statistics: f.sf( # noqa:E731 + test_statistics, numer_dof, denom_dof) + else: + from scipy.stats import chi2 + pval_lower = lambda test_statistics: chi2.cdf( # noqa:E731 + numer_dof * test_statistics, denom_dof) + pval_upper = lambda test_statistics: chi2.sf( # noqa:E731 + numer_dof * test_statistics, denom_dof) + + # Calculate the one- or two-sided p-values + alternative = alternative.lower() + if alternative in ['i', 'inc', 'increasing']: + p_value = pval_upper(test_statistic) + elif alternative in ['d', 'dec', 'decreasing']: + test_statistic = 1. / test_statistic + p_value = pval_upper(test_statistic) + elif alternative in ['2', '2-sided', 'two-sided']: + p_value = 2 * np.minimum( + pval_lower(test_statistic), + pval_upper(test_statistic) + ) + else: + raise ValueError('Invalid alternative.') + + test_statistics.append(test_statistic) + p_values.append(p_value) + + output = np.c_[test_statistics, p_values] + else: + raise NotImplementedError('Invalid heteroskedasticity test' + ' method.') + + return output + + def test_serial_correlation(self, method, lags=None): + """ + Ljung-box test for no serial correlation of standardized residuals + + Null hypothesis is no serial correlation. + + Parameters + ---------- + method : string {'ljungbox','boxpierece'} or None + The statistical test for serial correlation. If None, an attempt is + made to select an appropriate test. + lags : None, int or array_like + If lags is an integer then this is taken to be the largest lag + that is included, the test result is reported for all smaller lag + length. + If lags is a list or array, then all lags are included up to the + largest lag in the list, however only the tests for the lags in the + list are reported. + If lags is None, then the default maxlag is 12*(nobs/100)^{1/4} + + Returns + ------- + output : array + An array with `(test_statistic, pvalue)` for each endogenous + variable and each lag. The array is then sized + `(k_endog, 2, lags)`. If the method is called as + `ljungbox = res.test_serial_correlation()`, then `ljungbox[i]` + holds the results of the Ljung-Box test (as would be returned by + `statsmodels.stats.diagnostic.acorr_ljungbox`) for the `i` th + endogenous variable. + + Notes + ----- + Let `d` = max(loglikelihood_burn, nobs_diffuse); this test is + calculated ignoring the first `d` residuals. + + Output is nan for any endogenous variable which has missing values. + + See Also + -------- + statsmodels.stats.diagnostic.acorr_ljungbox + + """ + if method is None: + method = 'ljungbox' + + if method == 'ljungbox' or method == 'boxpierce': + from statsmodels.stats.diagnostic import acorr_ljungbox + d = np.maximum(self.loglikelihood_burn, self.nobs_diffuse) + # This differs from self.nobs_effective because here we want to + # exclude exact diffuse periods, whereas self.nobs_effective only + # excludes explicitly burned (usually approximate diffuse) periods. + nobs_effective = self.nobs - d + output = [] + + # Default lags for acorr_ljungbox is 40, but may not always have + # that many observations + if lags is None: + lags = min(40, nobs_effective - 1) + + for i in range(self.model.k_endog): + results = acorr_ljungbox( + self.filter_results.standardized_forecasts_error[i][d:], + lags=lags, boxpierce=(method == 'boxpierce')) + if method == 'ljungbox': + output.append(results[0:2]) + else: + output.append(results[2:]) + + output = np.c_[output] + else: + raise NotImplementedError('Invalid serial correlation test' + ' method.') + return output + + def get_prediction(self, start=None, end=None, dynamic=False, + index=None, **kwargs): + """ + In-sample prediction and out-of-sample forecasting + + Parameters + ---------- + start : int, str, or datetime, optional + Zero-indexed observation number at which to start forecasting, + i.e., the first forecast is start. Can also be a date string to + parse or a datetime type. Default is the the zeroth observation. + end : int, str, or datetime, optional + Zero-indexed observation number at which to end forecasting, i.e., + the last forecast is end. Can also be a date string to + parse or a datetime type. However, if the dates index does not + have a fixed frequency, end must be an integer index if you + want out of sample prediction. Default is the last observation in + the sample. + dynamic : boolean, int, str, or datetime, optional + Integer offset relative to `start` at which to begin dynamic + prediction. Can also be an absolute date string to parse or a + datetime type (these are not interpreted as offsets). + Prior to this observation, true endogenous values will be used for + prediction; starting with this observation and continuing through + the end of prediction, forecasted endogenous values will be used + instead. + **kwargs + Additional arguments may required for forecasting beyond the end + of the sample. See `FilterResults.predict` for more details. + + Returns + ------- + forecast : array + Array of out of in-sample predictions and / or out-of-sample + forecasts. An (npredict x k_endog) array. + """ + if start is None: + start = self.model._index[0] + + # Handle start, end, dynamic + start, end, out_of_sample, prediction_index = ( + self.model._get_prediction_index(start, end, index)) + + # Handle `dynamic` + if isinstance(dynamic, (bytes, unicode)): + dynamic, _, _ = self.model._get_index_loc(dynamic) + + # Perform the prediction + # This is a (k_endog x npredictions) array; don't want to squeeze in + # case of npredictions = 1 + prediction_results = self.filter_results.predict( + start, end + out_of_sample + 1, dynamic, **kwargs) + + # Return a new mlemodel.PredictionResults object + return PredictionResultsWrapper(PredictionResults( + self, prediction_results, row_labels=prediction_index)) + + def get_forecast(self, steps=1, **kwargs): + """ + Out-of-sample forecasts + + Parameters + ---------- + steps : int, str, or datetime, optional + If an integer, the number of steps to forecast from the end of the + sample. Can also be a date string to parse or a datetime type. + However, if the dates index does not have a fixed frequency, steps + must be an integer. Default + **kwargs + Additional arguments may required for forecasting beyond the end + of the sample. See `FilterResults.predict` for more details. + + Returns + ------- + forecast : array + Array of out of sample forecasts. A (steps x k_endog) array. + """ + if isinstance(steps, (int, long)): + end = self.nobs + steps - 1 + else: + end = steps + return self.get_prediction(start=self.nobs, end=end, **kwargs) + + def predict(self, start=None, end=None, dynamic=False, **kwargs): + """ + In-sample prediction and out-of-sample forecasting + + Parameters + ---------- + start : int, str, or datetime, optional + Zero-indexed observation number at which to start forecasting, + i.e., the first forecast is start. Can also be a date string to + parse or a datetime type. Default is the the zeroth observation. + end : int, str, or datetime, optional + Zero-indexed observation number at which to end forecasting, i.e., + the last forecast is end. Can also be a date string to + parse or a datetime type. However, if the dates index does not + have a fixed frequency, end must be an integer index if you + want out of sample prediction. Default is the last observation in + the sample. + dynamic : boolean, int, str, or datetime, optional + Integer offset relative to `start` at which to begin dynamic + prediction. Can also be an absolute date string to parse or a + datetime type (these are not interpreted as offsets). + Prior to this observation, true endogenous values will be used for + prediction; starting with this observation and continuing through + the end of prediction, forecasted endogenous values will be used + instead. + **kwargs + Additional arguments may required for forecasting beyond the end + of the sample. See `FilterResults.predict` for more details. + + Returns + ------- + forecast : array + Array of out of in-sample predictions and / or out-of-sample + forecasts. An (npredict x k_endog) array. + """ + # Perform the prediction + prediction_results = self.get_prediction(start, end, dynamic, **kwargs) + return prediction_results.predicted_mean + + def forecast(self, steps=1, **kwargs): + """ + Out-of-sample forecasts + + Parameters + ---------- + steps : int, str, or datetime, optional + If an integer, the number of steps to forecast from the end of the + sample. Can also be a date string to parse or a datetime type. + However, if the dates index does not have a fixed frequency, steps + must be an integer. Default + **kwargs + Additional arguments may required for forecasting beyond the end + of the sample. See `FilterResults.predict` for more details. + + Returns + ------- + forecast : array + Array of out of sample forecasts. A (steps x k_endog) array. + """ + if isinstance(steps, (int, long)): + end = self.nobs + steps - 1 + else: + end = steps + return self.predict(start=self.nobs, end=end, **kwargs) + + def simulate(self, nsimulations, measurement_shocks=None, + state_shocks=None, initial_state=None): + r""" + Simulate a new time series following the state space model + + Parameters + ---------- + nsimulations : int + The number of observations to simulate. If the model is + time-invariant this can be any number. If the model is + time-varying, then this number must be less than or equal to the + number + measurement_shocks : array_like, optional + If specified, these are the shocks to the measurement equation, + :math:`\varepsilon_t`. If unspecified, these are automatically + generated using a pseudo-random number generator. If specified, + must be shaped `nsimulations` x `k_endog`, where `k_endog` is the + same as in the state space model. + state_shocks : array_like, optional + If specified, these are the shocks to the state equation, + :math:`\eta_t`. If unspecified, these are automatically + generated using a pseudo-random number generator. If specified, + must be shaped `nsimulations` x `k_posdef` where `k_posdef` is the + same as in the state space model. + initial_state : array_like, optional + If specified, this is the state vector at time zero, which should + be shaped (`k_states` x 1), where `k_states` is the same as in the + state space model. If unspecified, but the model has been + initialized, then that initialization is used. If unspecified and + the model has not been initialized, then a vector of zeros is used. + Note that this is not included in the returned `simulated_states` + array. + + Returns + ------- + simulated_obs : array + An (nsimulations x k_endog) array of simulated observations. + """ + scale = self.scale if self.filter_results.filter_concentrated else None + with self.model.ssm.fixed_scale(scale): + sim = self.model.simulate(self.params, nsimulations, + measurement_shocks, state_shocks, + initial_state) + return sim + + def impulse_responses(self, steps=1, impulse=0, orthogonalized=False, + cumulative=False, **kwargs): + """ + Impulse response function + + Parameters + ---------- + steps : int, optional + The number of steps for which impulse responses are calculated. + Default is 1. Note that the initial impulse is not counted as a + step, so if `steps=1`, the output will have 2 entries. + impulse : int or array_like + If an integer, the state innovation to pulse; must be between 0 + and `k_posdef-1`. Alternatively, a custom impulse vector may be + provided; must be shaped `k_posdef x 1`. + orthogonalized : boolean, optional + Whether or not to perform impulse using orthogonalized innovations. + Note that this will also affect custum `impulse` vectors. Default + is False. + cumulative : boolean, optional + Whether or not to return cumulative impulse responses. Default is + False. + **kwargs + If the model is time-varying and `steps` is greater than the number + of observations, any of the state space representation matrices + that are time-varying must have updated values provided for the + out-of-sample steps. + For example, if `design` is a time-varying component, `nobs` is 10, + and `steps` is 15, a (`k_endog` x `k_states` x 5) matrix must be + provided with the new design matrix values. + + Returns + ------- + impulse_responses : array + Responses for each endogenous variable due to the impulse + given by the `impulse` argument. A (steps + 1 x k_endog) array. + + Notes + ----- + Intercepts in the measurement and state equation are ignored when + calculating impulse responses. + + """ + scale = self.scale if self.filter_results.filter_concentrated else None + with self.model.ssm.fixed_scale(scale): + irfs = self.model.impulse_responses(self.params, steps, impulse, + orthogonalized, cumulative, + **kwargs) + return irfs + + def plot_diagnostics(self, variable=0, lags=10, fig=None, figsize=None): + """ + Diagnostic plots for standardized residuals of one endogenous variable + + Parameters + ---------- + variable : integer, optional + Index of the endogenous variable for which the diagnostic plots + should be created. Default is 0. + lags : integer, optional + Number of lags to include in the correlogram. Default is 10. + fig : Matplotlib Figure instance, optional + If given, subplots are created in this figure instead of in a new + figure. Note that the 2x2 grid will be created in the provided + figure using `fig.add_subplot()`. + figsize : tuple, optional + If a figure is created, this argument allows specifying a size. + The tuple is (width, height). + + Notes + ----- + Produces a 2x2 plot grid with the following plots (ordered clockwise + from top left): + + 1. Standardized residuals over time + 2. Histogram plus estimated density of standardized residulas, along + with a Normal(0,1) density plotted for reference. + 3. Normal Q-Q plot, with Normal reference line. + 4. Correlogram + + See Also + -------- + statsmodels.graphics.gofplots.qqplot + statsmodels.graphics.tsaplots.plot_acf + """ + from statsmodels.graphics.utils import _import_mpl, create_mpl_fig + _import_mpl() + fig = create_mpl_fig(fig, figsize) + # Eliminate residuals associated with burned or diffuse likelihoods + d = np.maximum(self.loglikelihood_burn, self.nobs_diffuse) + resid = self.filter_results.standardized_forecasts_error[variable, d:] + + # Top-left: residuals vs time + ax = fig.add_subplot(221) + if hasattr(self.data, 'dates') and self.data.dates is not None: + x = self.data.dates[d:]._mpl_repr() + else: + x = np.arange(len(resid)) + ax.plot(x, resid) + ax.hlines(0, x[0], x[-1], alpha=0.5) + ax.set_xlim(x[0], x[-1]) + ax.set_title('Standardized residual') + + # Top-right: histogram, Gaussian kernel density, Normal density + # Can only do histogram and Gaussian kernel density on the non-null + # elements + resid_nonmissing = resid[~(np.isnan(resid))] + ax = fig.add_subplot(222) + + # gh5792: Remove except after support for matplotlib>2.1 required + try: + ax.hist(resid_nonmissing, density=True, label='Hist') + except AttributeError: + ax.hist(resid_nonmissing, normed=True, label='Hist') + + from scipy.stats import gaussian_kde, norm + kde = gaussian_kde(resid_nonmissing) + xlim = (-1.96*2, 1.96*2) + x = np.linspace(xlim[0], xlim[1]) + ax.plot(x, kde(x), label='KDE') + ax.plot(x, norm.pdf(x), label='N(0,1)') + ax.set_xlim(xlim) + ax.legend() + ax.set_title('Histogram plus estimated density') + + # Bottom-left: QQ plot + ax = fig.add_subplot(223) + from statsmodels.graphics.gofplots import qqplot + qqplot(resid_nonmissing, line='s', ax=ax) + ax.set_title('Normal Q-Q') + + # Bottom-right: Correlogram + ax = fig.add_subplot(224) + from statsmodels.graphics.tsaplots import plot_acf + plot_acf(resid, ax=ax, lags=lags) + ax.set_title('Correlogram') + + ax.set_ylim(-1, 1) + + return fig + + def summary(self, alpha=.05, start=None, title=None, model_name=None, + display_params=True): + """ + Summarize the Model + + Parameters + ---------- + alpha : float, optional + Significance level for the confidence intervals. Default is 0.05. + start : int, optional + Integer of the start observation. Default is 0. + model_name : string + The name of the model used. Default is to use model class name. + + Returns + ------- + summary : Summary instance + This holds the summary table and text, which can be printed or + converted to various output formats. + + See Also + -------- + statsmodels.iolib.summary.Summary + """ + from statsmodels.iolib.summary import Summary + + # Model specification results + model = self.model + if title is None: + title = 'Statespace Model Results' + + if start is None: + start = 0 + if self.model._index_dates: + ix = self.model._index + d = ix[start] + sample = ['%02d-%02d-%02d' % (d.month, d.day, d.year)] + d = ix[-1] + sample += ['- ' + '%02d-%02d-%02d' % (d.month, d.day, d.year)] + else: + sample = [str(start), ' - ' + str(self.nobs)] + + # Standardize the model name as a list of str + if model_name is None: + model_name = model.__class__.__name__ + + # Diagnostic tests results + try: + het = self.test_heteroskedasticity(method='breakvar') + except Exception: # FIXME: catch something specific + het = np.array([[np.nan]*2]) + try: + lb = self.test_serial_correlation(method='ljungbox') + except Exception: # FIXME: catch something specific + lb = np.array([[np.nan]*2]).reshape(1, 2, 1) + try: + jb = self.test_normality(method='jarquebera') + except Exception: # FIXME: catch something specific + jb = np.array([[np.nan]*4]) + + # Create the tables + if not isinstance(model_name, list): + model_name = [model_name] + + top_left = [('Dep. Variable:', None)] + top_left.append(('Model:', [model_name[0]])) + for i in range(1, len(model_name)): + top_left.append(('', ['+ ' + model_name[i]])) + top_left += [ + ('Date:', None), + ('Time:', None), + ('Sample:', [sample[0]]), + ('', [sample[1]]) + ] + + top_right = [ + ('No. Observations:', [self.nobs]), + ('Log Likelihood', ["%#5.3f" % self.llf]), + ] + if hasattr(self, 'rsquared'): + top_right.append(('R-squared:', ["%#8.3f" % self.rsquared])) + top_right += [ + ('AIC', ["%#5.3f" % self.aic]), + ('BIC', ["%#5.3f" % self.bic]), + ('HQIC', ["%#5.3f" % self.hqic])] + if (self.filter_results is not None and + self.filter_results.filter_concentrated): + top_right.append(('Scale', ["%#5.3f" % self.scale])) + + if hasattr(self, 'cov_type'): + top_left.append(('Covariance Type:', [self.cov_type])) + + format_str = lambda array: [ # noqa:E731 + ', '.join(['{0:.2f}'.format(i) for i in array]) + ] + diagn_left = [('Ljung-Box (Q):', format_str(lb[:, 0, -1])), + ('Prob(Q):', format_str(lb[:, 1, -1])), + ('Heteroskedasticity (H):', format_str(het[:, 0])), + ('Prob(H) (two-sided):', format_str(het[:, 1])) + ] + + diagn_right = [('Jarque-Bera (JB):', format_str(jb[:, 0])), + ('Prob(JB):', format_str(jb[:, 1])), + ('Skew:', format_str(jb[:, 2])), + ('Kurtosis:', format_str(jb[:, 3])) + ] + + summary = Summary() + summary.add_table_2cols(self, gleft=top_left, gright=top_right, + title=title) + if len(self.params) > 0 and display_params: + summary.add_table_params(self, alpha=alpha, + xname=self.data.param_names, use_t=False) + summary.add_table_2cols(self, gleft=diagn_left, gright=diagn_right, + title="") + + # Add warnings/notes, added to text format only + etext = [] + if hasattr(self, 'cov_type') and 'description' in self.cov_kwds: + etext.append(self.cov_kwds['description']) + if self._rank < len(self.params): + etext.append("Covariance matrix is singular or near-singular," + " with condition number %6.3g. Standard errors may be" + " unstable." % np.linalg.cond(self.cov_params())) + + if etext: + etext = ["[{0}] {1}".format(i + 1, text) + for i, text in enumerate(etext)] + etext.insert(0, "Warnings:") + summary.add_extra_txt(etext) + + return summary + + +class MLEResultsWrapper(wrap.ResultsWrapper): + _attrs = { + 'zvalues': 'columns', + 'cov_params_approx': 'cov', + 'cov_params_default': 'cov', + 'cov_params_oim': 'cov', + 'cov_params_opg': 'cov', + 'cov_params_robust': 'cov', + 'cov_params_robust_approx': 'cov', + 'cov_params_robust_oim': 'cov', + } + _wrap_attrs = wrap.union_dicts(tsbase.TimeSeriesResultsWrapper._wrap_attrs, + _attrs) + _methods = { + 'forecast': 'dates', + 'simulate': 'ynames', + 'impulse_responses': 'ynames' + } + _wrap_methods = wrap.union_dicts( + tsbase.TimeSeriesResultsWrapper._wrap_methods, _methods) +wrap.populate_wrapper(MLEResultsWrapper, MLEResults) # noqa:E305 + + +class PredictionResults(pred.PredictionResults): + """ + + Parameters + ---------- + prediction_results : kalman_filter.PredictionResults instance + Results object from prediction after fitting or filtering a state space + model. + row_labels : iterable + Row labels for the predicted data. + + Attributes + ---------- + + """ + def __init__(self, model, prediction_results, row_labels=None): + if model.model.k_endog == 1: + endog = pd.Series(prediction_results.endog[:, 0], + name=model.model.endog_names) + else: + endog = pd.DataFrame(prediction_results.endog.T, + columns=model.model.endog_names) + self.model = Bunch(data=model.data.__class__( + endog=endog, predict_dates=row_labels)) + self.prediction_results = prediction_results + + # Get required values + predicted_mean = self.prediction_results.forecasts + if predicted_mean.shape[0] == 1: + predicted_mean = predicted_mean[0, :] + else: + predicted_mean = predicted_mean.transpose() + + var_pred_mean = self.prediction_results.forecasts_error_cov + if var_pred_mean.shape[0] == 1: + var_pred_mean = var_pred_mean[0, 0, :] + else: + var_pred_mean = var_pred_mean.transpose() + + # Initialize + super(PredictionResults, self).__init__(predicted_mean, var_pred_mean, + dist='norm', + row_labels=row_labels, + link=identity()) + + @property + def se_mean(self): + if self.var_pred_mean.ndim == 1: + se_mean = np.sqrt(self.var_pred_mean) + else: + se_mean = np.sqrt(self.var_pred_mean.T.diagonal()) + return se_mean + + def conf_int(self, method='endpoint', alpha=0.05, **kwds): + # TODO: this performs metadata wrapping, and that should be handled + # by attach_* methods. However, they don't currently support + # this use case. + conf_int = super(PredictionResults, self).conf_int( + method, alpha, **kwds) + + # Create a dataframe + if self.row_labels is not None: + conf_int = pd.DataFrame(conf_int, index=self.row_labels) + + # Attach the endog names + ynames = self.model.data.ynames + if not type(ynames) == list: + ynames = [ynames] + names = (['lower %s' % name for name in ynames] + + ['upper %s' % name for name in ynames]) + conf_int.columns = names + + return conf_int + + def summary_frame(self, endog=0, what='all', alpha=0.05): + # TODO: finish and cleanup + # import pandas as pd + from collections import OrderedDict + # ci_obs = self.conf_int(alpha=alpha, obs=True) # need to split + ci_mean = np.asarray(self.conf_int(alpha=alpha)) + to_include = OrderedDict() + if self.predicted_mean.ndim == 1: + yname = self.model.data.ynames + to_include['mean'] = self.predicted_mean + to_include['mean_se'] = self.se_mean + k_endog = 1 + else: + yname = self.model.data.ynames[endog] + to_include['mean'] = self.predicted_mean[:, endog] + to_include['mean_se'] = self.se_mean[:, endog] + k_endog = self.predicted_mean.shape[1] + to_include['mean_ci_lower'] = ci_mean[:, endog] + to_include['mean_ci_upper'] = ci_mean[:, k_endog + endog] + + # OrderedDict doesn't work to preserve sequence + # pandas dict doesn't handle 2d_array + # data = np.column_stack(list(to_include.values())) + # names = .... + res = pd.DataFrame(to_include, index=self.row_labels, + columns=to_include.keys()) + res.columns.name = yname + return res + + +class PredictionResultsWrapper(wrap.ResultsWrapper): + _attrs = { + 'predicted_mean': 'dates', + 'se_mean': 'dates', + 't_values': 'dates', + } + _wrap_attrs = wrap.union_dicts(_attrs) + + _methods = {} + _wrap_methods = wrap.union_dicts(_methods) +wrap.populate_wrapper(PredictionResultsWrapper, PredictionResults) # noqa:E305 diff --git a/statsmodels/tsa/statespace/representation.py b/statsmodels/tsa/statespace/representation.py new file mode 100644 index 0000000..3f8a60f --- /dev/null +++ b/statsmodels/tsa/statespace/representation.py @@ -0,0 +1,897 @@ +""" +State Space Representation + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import numpy as np +from .tools import ( + find_best_blas_type, validate_matrix_shape, validate_vector_shape +) +from .initialization import Initialization +from . import tools + + +class OptionWrapper(object): + def __init__(self, mask_attribute, mask_value): + # Name of the class-level bitmask attribute + self.mask_attribute = mask_attribute + # Value of this option + self.mask_value = mask_value + + def __get__(self, obj, objtype): + # Return True / False based on whether the bit is set in the bitmask + return bool(getattr(obj, self.mask_attribute, 0) & self.mask_value) + + def __set__(self, obj, value): + mask_attribute_value = getattr(obj, self.mask_attribute, 0) + if bool(value): + value = mask_attribute_value | self.mask_value + else: + value = mask_attribute_value & ~self.mask_value + setattr(obj, self.mask_attribute, value) + + +class MatrixWrapper(object): + def __init__(self, name, attribute): + self.name = name + self.attribute = attribute + self._attribute = '_' + attribute + + def __get__(self, obj, objtype): + matrix = getattr(obj, self._attribute, None) + # # Remove last dimension if the array is not actually time-varying + # if matrix is not None and matrix.shape[-1] == 1: + # return np.squeeze(matrix, -1) + return matrix + + def __set__(self, obj, value): + value = np.asarray(value, order="F") + shape = obj.shapes[self.attribute] + + if len(shape) == 3: + value = self._set_matrix(obj, value, shape) + else: + value = self._set_vector(obj, value, shape) + + setattr(obj, self._attribute, value) + obj.shapes[self.attribute] = value.shape + + def _set_matrix(self, obj, value, shape): + # Expand 1-dimensional array if possible + if (value.ndim == 1 and shape[0] == 1 and + value.shape[0] == shape[1]): + value = value[None, :] + + # Enforce that the matrix is appropriate size + validate_matrix_shape( + self.name, value.shape, shape[0], shape[1], obj.nobs + ) + + # Expand time-invariant matrix + if value.ndim == 2: + value = np.array(value[:, :, None], order="F") + + return value + + def _set_vector(self, obj, value, shape): + # Enforce that the vector has appropriate length + validate_vector_shape( + self.name, value.shape, shape[0], obj.nobs + ) + + # Expand the time-invariant vector + if value.ndim == 1: + value = np.array(value[:, None], order="F") + + return value + + +class Representation(object): + r""" + State space representation of a time series process + + Parameters + ---------- + k_endog : array_like or integer + The observed time-series process :math:`y` if array like or the + number of variables in the process if an integer. + k_states : int + The dimension of the unobserved state process. + k_posdef : int, optional + The dimension of a guaranteed positive definite covariance matrix + describing the shocks in the measurement equation. Must be less than + or equal to `k_states`. Default is `k_states`. + initial_variance : float, optional + Initial variance used when approximate diffuse initialization is + specified. Default is 1e6. + initialization : Initialization object or string, optional + Initialization method for the initial state. If a string, must be one + of {'diffuse', 'approximate_diffuse', 'stationary', 'known'}. + initial_state : array_like, optional + If `initialization='known'` is used, the mean of the initial state's + distribution. + initial_state_cov : array_like, optional + If `initialization='known'` is used, the covariance matrix of the + initial state's distribution. + nobs : integer, optional + If an endogenous vector is not given (i.e. `k_endog` is an integer), + the number of observations can optionally be specified. If not + specified, they will be set to zero until data is bound to the model. + dtype : np.dtype, optional + If an endogenous vector is not given (i.e. `k_endog` is an integer), + the default datatype of the state space matrices can optionally be + specified. Default is `np.float64`. + design : array_like, optional + The design matrix, :math:`Z`. Default is set to zeros. + obs_intercept : array_like, optional + The intercept for the observation equation, :math:`d`. Default is set + to zeros. + obs_cov : array_like, optional + The covariance matrix for the observation equation :math:`H`. Default + is set to zeros. + transition : array_like, optional + The transition matrix, :math:`T`. Default is set to zeros. + state_intercept : array_like, optional + The intercept for the transition equation, :math:`c`. Default is set to + zeros. + selection : array_like, optional + The selection matrix, :math:`R`. Default is set to zeros. + state_cov : array_like, optional + The covariance matrix for the state equation :math:`Q`. Default is set + to zeros. + **kwargs + Additional keyword arguments. Not used directly. It is present to + improve compatibility with subclasses, so that they can use `**kwargs` + to specify any default state space matrices (e.g. `design`) without + having to clean out any other keyword arguments they might have been + passed. + + Attributes + ---------- + nobs : int + The number of observations. + k_endog : int + The dimension of the observation series. + k_states : int + The dimension of the unobserved state process. + k_posdef : int + The dimension of a guaranteed positive + definite covariance matrix describing + the shocks in the measurement equation. + shapes : dictionary of name:tuple + A dictionary recording the initial shapes + of each of the representation matrices as + tuples. + initialization : str + Kalman filter initialization method. Default is unset. + initial_variance : float + Initial variance for approximate diffuse + initialization. Default is 1e6. + + Notes + ----- + A general state space model is of the form + + .. math:: + + y_t & = Z_t \alpha_t + d_t + \varepsilon_t \\ + \alpha_t & = T_t \alpha_{t-1} + c_t + R_t \eta_t \\ + + where :math:`y_t` refers to the observation vector at time :math:`t`, + :math:`\alpha_t` refers to the (unobserved) state vector at time + :math:`t`, and where the irregular components are defined as + + .. math:: + + \varepsilon_t \sim N(0, H_t) \\ + \eta_t \sim N(0, Q_t) \\ + + The remaining variables (:math:`Z_t, d_t, H_t, T_t, c_t, R_t, Q_t`) in the + equations are matrices describing the process. Their variable names and + dimensions are as follows + + Z : `design` :math:`(k\_endog \times k\_states \times nobs)` + + d : `obs_intercept` :math:`(k\_endog \times nobs)` + + H : `obs_cov` :math:`(k\_endog \times k\_endog \times nobs)` + + T : `transition` :math:`(k\_states \times k\_states \times nobs)` + + c : `state_intercept` :math:`(k\_states \times nobs)` + + R : `selection` :math:`(k\_states \times k\_posdef \times nobs)` + + Q : `state_cov` :math:`(k\_posdef \times k\_posdef \times nobs)` + + In the case that one of the matrices is time-invariant (so that, for + example, :math:`Z_t = Z_{t+1} ~ \forall ~ t`), its last dimension may + be of size :math:`1` rather than size `nobs`. + + References + ---------- + .. [*] Durbin, James, and Siem Jan Koopman. 2012. + Time Series Analysis by State Space Methods: Second Edition. + Oxford University Press. + """ + + endog = None + r""" + (array) The observation vector, alias for `obs`. + """ + design = MatrixWrapper('design', 'design') + r""" + (array) Design matrix: :math:`Z~(k\_endog \times k\_states \times nobs)` + """ + obs_intercept = MatrixWrapper('observation intercept', 'obs_intercept') + r""" + (array) Observation intercept: :math:`d~(k\_endog \times nobs)` + """ + obs_cov = MatrixWrapper('observation covariance matrix', 'obs_cov') + r""" + (array) Observation covariance matrix: + :math:`H~(k\_endog \times k\_endog \times nobs)` + """ + transition = MatrixWrapper('transition', 'transition') + r""" + (array) Transition matrix: + :math:`T~(k\_states \times k\_states \times nobs)` + """ + state_intercept = MatrixWrapper('state intercept', 'state_intercept') + r""" + (array) State intercept: :math:`c~(k\_states \times nobs)` + """ + selection = MatrixWrapper('selection', 'selection') + r""" + (array) Selection matrix: + :math:`R~(k\_states \times k\_posdef \times nobs)` + """ + state_cov = MatrixWrapper('state covariance matrix', 'state_cov') + r""" + (array) State covariance matrix: + :math:`Q~(k\_posdef \times k\_posdef \times nobs)` + """ + + def __init__(self, k_endog, k_states, k_posdef=None, + initial_variance=1e6, nobs=0, dtype=np.float64, + design=None, obs_intercept=None, obs_cov=None, + transition=None, state_intercept=None, selection=None, + state_cov=None, statespace_classes=None, **kwargs): + self.shapes = {} + + # Check if k_endog is actually the endog array + endog = None + if isinstance(k_endog, np.ndarray): + endog = k_endog + # If so, assume that it is either column-ordered and in wide format + # or row-ordered and in long format + if (endog.flags['C_CONTIGUOUS'] and + (endog.shape[0] > 1 or nobs == 1)): + endog = endog.T + k_endog = endog.shape[0] + + # Endogenous array, dimensions, dtype + self.k_endog = k_endog + if k_endog < 1: + raise ValueError('Number of endogenous variables in statespace' + ' model must be a positive number.') + self.nobs = nobs + + # Get dimensions from transition equation + if k_states < 1: + raise ValueError('Number of states in statespace model must be a' + ' positive number.') + self.k_states = k_states + self.k_posdef = k_posdef if k_posdef is not None else k_states + + # Make sure k_posdef <= k_states + # TODO: we could technically allow k_posdef > k_states, but the Cython + # code needs to be more thoroughly checked to avoid seg faults. + if self.k_posdef > self.k_states: + raise ValueError('Dimension of state innovation `k_posdef` cannot' + ' be larger than the dimension of the state.') + + # Bind endog, if it was given + if endog is not None: + self.bind(endog) + + # Record the shapes of all of our matrices + # Note: these are time-invariant shapes; in practice the last dimension + # may also be `self.nobs` for any or all of these. + self.shapes = { + 'obs': (self.k_endog, self.nobs), + 'design': (self.k_endog, self.k_states, 1), + 'obs_intercept': (self.k_endog, 1), + 'obs_cov': (self.k_endog, self.k_endog, 1), + 'transition': (self.k_states, self.k_states, 1), + 'state_intercept': (self.k_states, 1), + 'selection': (self.k_states, self.k_posdef, 1), + 'state_cov': (self.k_posdef, self.k_posdef, 1), + } + + # Representation matrices + # These matrices are only used in the Python object as containers, + # which will be copied to the appropriate _statespace object if a + # filter is called. + scope = locals() + for name, shape in self.shapes.items(): + if name == 'obs': + continue + # Create the initial storage array for each matrix + setattr(self, '_' + name, np.zeros(shape, dtype=dtype, order="F")) + + # If we were given an initial value for the matrix, set it + # (notice it is being set via the descriptor) + if scope[name] is not None: + setattr(self, name, scope[name]) + + # Options + self.initial_variance = initial_variance + self.prefix_statespace_map = (statespace_classes + if statespace_classes is not None + else tools.prefix_statespace_map.copy()) + + # State-space initialization data + self.initialization = kwargs.get('initialization', None) + basic_inits = ['diffuse', 'approximate_diffuse', 'stationary'] + + if self.initialization in basic_inits: + self.initialize(self.initialization) + elif self.initialization == 'known': + if 'constant' in kwargs: + constant = kwargs['constant'] + elif 'initial_state' in kwargs: + # TODO deprecation warning + constant = kwargs['initial_state'] + else: + raise ValueError('Initial state must be provided when "known"' + ' is the specified initialization method.') + if 'stationary_cov' in kwargs: + stationary_cov = kwargs['stationary_cov'] + elif 'initial_state_cov' in kwargs: + # TODO deprecation warning + stationary_cov = kwargs['initial_state_cov'] + else: + raise ValueError('Initial state covariance matrix must be' + ' provided when "known" is the specified' + ' initialization method.') + self.initialize('known', constant=constant, + stationary_cov=stationary_cov) + elif (not isinstance(self.initialization, Initialization) and + self.initialization is not None): + raise ValueError("Invalid state space initialization method.") + + # Matrix representations storage + self._representations = {} + + # Setup the underlying statespace object storage + self._statespaces = {} + + # Caches + self._time_invariant = None + + def __getitem__(self, key): + _type = type(key) + # If only a string is given then we must be getting an entire matrix + if _type is str: + if key not in self.shapes: + raise IndexError('"%s" is an invalid state space matrix name' + % key) + matrix = getattr(self, '_' + key) + + # See note on time-varying arrays, below + if matrix.shape[-1] == 1: + return matrix[(slice(None),)*(matrix.ndim-1) + (0,)] + else: + return matrix + # Otherwise if we have a tuple, we want a slice of a matrix + elif _type is tuple: + name, slice_ = key[0], key[1:] + if name not in self.shapes: + raise IndexError('"%s" is an invalid state space matrix name' + % name) + + matrix = getattr(self, '_' + name) + + # Since the model can support time-varying arrays, but often we + # will instead have time-invariant arrays, we want to allow setting + # a matrix slice like mod['transition',0,:] even though technically + # it should be mod['transition',0,:,0]. Thus if the array in + # question is time-invariant but the last slice was excluded, + # add it in as a zero. + if matrix.shape[-1] == 1 and len(slice_) <= matrix.ndim-1: + slice_ = slice_ + (0,) + + return matrix[slice_] + # Otherwise, we have only a single slice index, but it is not a string + else: + raise IndexError('First index must the name of a valid state space' + ' matrix.') + + def __setitem__(self, key, value): + _type = type(key) + # If only a string is given then we must be setting an entire matrix + if _type is str: + if key not in self.shapes: + raise IndexError('"%s" is an invalid state space matrix name' + % key) + setattr(self, key, value) + # If it's a tuple (with a string as the first element) then we must be + # setting a slice of a matrix + elif _type is tuple: + name, slice_ = key[0], key[1:] + if name not in self.shapes: + raise IndexError('"%s" is an invalid state space matrix name' + % key[0]) + + # Change the dtype of the corresponding matrix + dtype = np.array(value).dtype + matrix = getattr(self, '_' + name) + valid_types = ['f', 'd', 'F', 'D'] + if not matrix.dtype == dtype and dtype.char in valid_types: + matrix = getattr(self, '_' + name).real.astype(dtype) + + # Since the model can support time-varying arrays, but often we + # will instead have time-invariant arrays, we want to allow setting + # a matrix slice like mod['transition',0,:] even though technically + # it should be mod['transition',0,:,0]. Thus if the array in + # question is time-invariant but the last slice was excluded, + # add it in as a zero. + if matrix.shape[-1] == 1 and len(slice_) == matrix.ndim-1: + slice_ = slice_ + (0,) + + # Set the new value + matrix[slice_] = value + setattr(self, name, matrix) + # Otherwise we got a single non-string key, (e.g. mod[:]), which is + # invalid + else: + raise IndexError('First index must the name of a valid state space' + ' matrix.') + + @property + def prefix(self): + """ + (str) BLAS prefix of currently active representation matrices + """ + arrays = ( + self._design, self._obs_intercept, self._obs_cov, + self._transition, self._state_intercept, self._selection, + self._state_cov + ) + if self.endog is not None: + arrays = (self.endog,) + arrays + return find_best_blas_type(arrays)[0] + + @property + def dtype(self): + """ + (dtype) Datatype of currently active representation matrices + """ + return tools.prefix_dtype_map[self.prefix] + + @property + def time_invariant(self): + """ + (bool) Whether or not currently active representation matrices are + time-invariant + """ + if self._time_invariant is None: + return ( + self._design.shape[2] == self._obs_intercept.shape[1] == + self._obs_cov.shape[2] == self._transition.shape[2] == + self._state_intercept.shape[1] == self._selection.shape[2] == + self._state_cov.shape[2] + ) + else: + return self._time_invariant + + @property + def _statespace(self): + prefix = self.prefix + if prefix in self._statespaces: + return self._statespaces[prefix] + return None + + @property + def obs(self): + r""" + (array) Observation vector: :math:`y~(k\_endog \times nobs)` + """ + return self.endog + + def bind(self, endog): + """ + Bind data to the statespace representation + + Parameters + ---------- + endog : array + Endogenous data to bind to the model. Must be column-ordered + ndarray with shape (`k_endog`, `nobs`) or row-ordered ndarray with + shape (`nobs`, `k_endog`). + + Notes + ----- + The strict requirements arise because the underlying statespace and + Kalman filtering classes require Fortran-ordered arrays in the wide + format (shaped (`k_endog`, `nobs`)), and this structure is setup to + prevent copying arrays in memory. + + By default, numpy arrays are row (C)-ordered and most time series are + represented in the long format (with time on the 0-th axis). In this + case, no copying or re-ordering needs to be performed, instead the + array can simply be transposed to get it in the right order and shape. + + Although this class (Representation) has stringent `bind` requirements, + it is assumed that it will rarely be used directly. + """ + if not isinstance(endog, np.ndarray): + raise ValueError("Invalid endogenous array; must be an ndarray.") + + # Make sure we have a 2-dimensional array + # Note: reshaping a 1-dim array into a 2-dim array by changing the + # shape tuple always results in a row (C)-ordered array, so it + # must be shaped (nobs, k_endog) + if endog.ndim == 1: + # In the case of nobs x 0 arrays + if self.k_endog == 1: + endog.shape = (endog.shape[0], 1) + # In the case of k_endog x 0 arrays + else: + endog.shape = (1, endog.shape[0]) + if not endog.ndim == 2: + raise ValueError('Invalid endogenous array provided; must be' + ' 2-dimensional.') + + # Check for valid column-ordered arrays + if endog.flags['F_CONTIGUOUS'] and endog.shape[0] == self.k_endog: + pass + # Check for valid row-ordered arrays, and transpose them to be the + # correct column-ordered array + elif endog.flags['C_CONTIGUOUS'] and endog.shape[1] == self.k_endog: + endog = endog.T + # Invalid column-ordered arrays + elif endog.flags['F_CONTIGUOUS']: + raise ValueError('Invalid endogenous array; column-ordered' + ' arrays must have first axis shape of' + ' `k_endog`.') + # Invalid row-ordered arrays + elif endog.flags['C_CONTIGUOUS']: + raise ValueError('Invalid endogenous array; row-ordered' + ' arrays must have last axis shape of' + ' `k_endog`.') + # Non-contiguous arrays + else: + raise ValueError('Invalid endogenous array; must be ordered in' + ' contiguous memory.') + + # In some corner cases (e.g. np.array(1., ndmin=2) with numpy < 1.8) + # we may still have a non-fortran contiguous array, so double-check + # that now + if not endog.flags['F_CONTIGUOUS']: + endog = np.asfortranarray(endog) + + # Set a flag for complex data + self._complex_endog = np.iscomplexobj(endog) + + # Set the data + self.endog = endog + self.nobs = self.endog.shape[1] + + # Reset shapes + if hasattr(self, 'shapes'): + self.shapes['obs'] = self.endog.shape + + def initialize(self, initialization, approximate_diffuse_variance=None, + constant=None, stationary_cov=None): + """Create an Initialization object if necessary""" + if initialization == 'known': + initialization = Initialization(self.k_states, 'known', + constant=constant, + stationary_cov=stationary_cov) + elif initialization == 'approximate_diffuse': + if approximate_diffuse_variance is None: + approximate_diffuse_variance = self.initial_variance + initialization = Initialization( + self.k_states, 'approximate_diffuse', + approximate_diffuse_variance=approximate_diffuse_variance) + elif initialization == 'stationary': + initialization = Initialization(self.k_states, 'stationary') + elif initialization == 'diffuse': + initialization = Initialization(self.k_states, 'diffuse') + + # We must have an initialization object at this point + if not isinstance(initialization, Initialization): + raise ValueError("Invalid state space initialization method.") + + self.initialization = initialization + + def initialize_known(self, constant, stationary_cov): + """ + Initialize the statespace model with known distribution for initial + state. + + These values are assumed to be known with certainty or else + filled with parameters during, for example, maximum likelihood + estimation. + + Parameters + ---------- + constant : array_like + Known mean of the initial state vector. + stationary_cov : array_like + Known covariance matrix of the initial state vector. + """ + constant = np.asarray(constant, order="F") + stationary_cov = np.asarray(stationary_cov, order="F") + + if not constant.shape == (self.k_states,): + raise ValueError('Invalid dimensions for constant state vector.' + ' Requires shape (%d,), got %s' % + (self.k_states, str(constant.shape))) + if not stationary_cov.shape == (self.k_states, self.k_states): + raise ValueError('Invalid dimensions for stationary covariance' + ' matrix. Requires shape (%d,%d), got %s' % + (self.k_states, self.k_states, + str(stationary_cov.shape))) + + self.initialize('known', constant=constant, + stationary_cov=stationary_cov) + + def initialize_approximate_diffuse(self, variance=None): + """ + Initialize the statespace model with approximate diffuse values. + + Rather than following the exact diffuse treatment (which is developed + for the case that the variance becomes infinitely large), this assigns + an arbitrary large number for the variance. + + Parameters + ---------- + variance : float, optional + The variance for approximating diffuse initial conditions. Default + is 1e6. + """ + if variance is None: + variance = self.initial_variance + + self.initialize('approximate_diffuse', + approximate_diffuse_variance=variance) + + def initialize_stationary(self): + """ + Initialize the statespace model as stationary. + """ + self.initialize('stationary') + + def initialize_diffuse(self): + """ + Initialize the statespace model as stationary. + """ + self.initialize('diffuse') + + def _initialize_representation(self, prefix=None): + if prefix is None: + prefix = self.prefix + dtype = tools.prefix_dtype_map[prefix] + + # If the dtype-specific representation matrices do not exist, create + # them + if prefix not in self._representations: + # Copy the statespace representation matrices + self._representations[prefix] = {} + for matrix in self.shapes.keys(): + if matrix == 'obs': + self._representations[prefix][matrix] = ( + self.obs.astype(dtype) + ) + else: + # Note: this always makes a copy + self._representations[prefix][matrix] = ( + getattr(self, '_' + matrix).astype(dtype) + ) + # If they do exist, update them + else: + for matrix in self.shapes.keys(): + existing = self._representations[prefix][matrix] + if matrix == 'obs': + # existing[:] = self.obs.astype(dtype) + pass + else: + new = getattr(self, '_' + matrix).astype(dtype) + if existing.shape == new.shape: + existing[:] = new[:] + else: + self._representations[prefix][matrix] = new + + # Determine if we need to (re-)create the _statespace models + # (if time-varying matrices changed) + if prefix in self._statespaces: + ss = self._statespaces[prefix] + create = ( + not ss.obs.shape[1] == self.endog.shape[1] or + not ss.design.shape[2] == self.design.shape[2] or + not ss.obs_intercept.shape[1] == self.obs_intercept.shape[1] or + not ss.obs_cov.shape[2] == self.obs_cov.shape[2] or + not ss.transition.shape[2] == self.transition.shape[2] or + not (ss.state_intercept.shape[1] == + self.state_intercept.shape[1]) or + not ss.selection.shape[2] == self.selection.shape[2] or + not ss.state_cov.shape[2] == self.state_cov.shape[2] + ) + else: + create = True + + # (re-)create if necessary + if create: + if prefix in self._statespaces: + del self._statespaces[prefix] + + # Setup the base statespace object + cls = self.prefix_statespace_map[prefix] + self._statespaces[prefix] = cls( + self._representations[prefix]['obs'], + self._representations[prefix]['design'], + self._representations[prefix]['obs_intercept'], + self._representations[prefix]['obs_cov'], + self._representations[prefix]['transition'], + self._representations[prefix]['state_intercept'], + self._representations[prefix]['selection'], + self._representations[prefix]['state_cov'] + ) + + return prefix, dtype, create + + def _initialize_state(self, prefix=None, complex_step=False): + # TODO once the transition to using the Initialization objects is + # complete, this should be moved entirely to the _{{prefix}}Statespace + # object. + if prefix is None: + prefix = self.prefix + + # (Re-)initialize the statespace model + if isinstance(self.initialization, Initialization): + if not self.initialization.initialized: + raise RuntimeError('Initialization is incomplete.') + self._statespaces[prefix].initialize(self.initialization, + complex_step=complex_step) + else: + raise RuntimeError('Statespace model not initialized.') + + +class FrozenRepresentation(object): + """ + Frozen Statespace Model + + Takes a snapshot of a Statespace model. + + Parameters + ---------- + model : Representation + A Statespace representation + + Attributes + ---------- + nobs : int + Number of observations. + k_endog : int + The dimension of the observation series. + k_states : int + The dimension of the unobserved state process. + k_posdef : int + The dimension of a guaranteed positive definite + covariance matrix describing the shocks in the + measurement equation. + dtype : dtype + Datatype of representation matrices + prefix : str + BLAS prefix of representation matrices + shapes : dictionary of name:tuple + A dictionary recording the shapes of each of + the representation matrices as tuples. + endog : array + The observation vector. + design : array + The design matrix, :math:`Z`. + obs_intercept : array + The intercept for the observation equation, :math:`d`. + obs_cov : array + The covariance matrix for the observation equation :math:`H`. + transition : array + The transition matrix, :math:`T`. + state_intercept : array + The intercept for the transition equation, :math:`c`. + selection : array + The selection matrix, :math:`R`. + state_cov : array + The covariance matrix for the state equation :math:`Q`. + missing : array of bool + An array of the same size as `endog`, filled + with boolean values that are True if the + corresponding entry in `endog` is NaN and False + otherwise. + nmissing : array of int + An array of size `nobs`, where the ith entry + is the number (between 0 and `k_endog`) of NaNs in + the ith row of the `endog` array. + time_invariant : bool + Whether or not the representation matrices are time-invariant + initialization : Initialization object + Kalman filter initialization method. + initial_state : array_like + The state vector used to initialize the Kalamn filter. + initial_state_cov : array_like + The state covariance matrix used to initialize the Kalamn filter. + """ + _model_attributes = [ + 'model', 'prefix', 'dtype', 'nobs', 'k_endog', 'k_states', + 'k_posdef', 'time_invariant', 'endog', 'design', 'obs_intercept', + 'obs_cov', 'transition', 'state_intercept', 'selection', + 'state_cov', 'missing', 'nmissing', 'shapes', 'initialization', + 'initial_state', 'initial_state_cov', 'initial_variance' + ] + _attributes = _model_attributes + + def __init__(self, model): + # Initialize all attributes to None + for name in self._attributes: + setattr(self, name, None) + + # Update the representation attributes + self.update_representation(model) + + def update_representation(self, model): + """Update model Representation""" + # Model + self.model = model + + # Data type + self.prefix = model.prefix + self.dtype = model.dtype + + # Copy the model dimensions + self.nobs = model.nobs + self.k_endog = model.k_endog + self.k_states = model.k_states + self.k_posdef = model.k_posdef + self.time_invariant = model.time_invariant + + # Save the state space representation at the time + self.endog = model.endog + self.design = model._design.copy() + self.obs_intercept = model._obs_intercept.copy() + self.obs_cov = model._obs_cov.copy() + self.transition = model._transition.copy() + self.state_intercept = model._state_intercept.copy() + self.selection = model._selection.copy() + self.state_cov = model._state_cov.copy() + + self.missing = np.array(model._statespaces[self.prefix].missing, + copy=True) + self.nmissing = np.array(model._statespaces[self.prefix].nmissing, + copy=True) + + # Save the final shapes of the matrices + self.shapes = dict(model.shapes) + for name in self.shapes.keys(): + if name == 'obs': + continue + self.shapes[name] = getattr(self, name).shape + self.shapes['obs'] = self.endog.shape + + # Save the state space initialization + self.initialization = model.initialization + + if model.initialization is not None: + model._initialize_state() + self.initial_state = np.array( + model._statespaces[self.prefix].initial_state, copy=True) + self.initial_state_cov = np.array( + model._statespaces[self.prefix].initial_state_cov, copy=True) + self.initial_diffuse_state_cov = np.array( + model._statespaces[self.prefix].initial_diffuse_state_cov, + copy=True) diff --git a/statsmodels/tsa/statespace/sarimax.py b/statsmodels/tsa/statespace/sarimax.py new file mode 100644 index 0000000..eb9e011 --- /dev/null +++ b/statsmodels/tsa/statespace/sarimax.py @@ -0,0 +1,2010 @@ +""" +SARIMAX Model + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function +from warnings import warn + +import numpy as np + +from statsmodels.compat.python import long +from statsmodels.tools.tools import Bunch +from statsmodels.tools.data import _is_using_pandas +from statsmodels.tools.decorators import cache_readonly +from statsmodels.tools.sm_exceptions import ValueWarning +import statsmodels.base.wrapper as wrap + +from statsmodels.tsa.tsatools import lagmat + +from .initialization import Initialization +from .mlemodel import MLEModel, MLEResults, MLEResultsWrapper +from .tools import ( + companion_matrix, diff, is_invertible, constrain_stationary_univariate, + unconstrain_stationary_univariate, + prepare_exog +) + + +class SARIMAX(MLEModel): + r""" + Seasonal AutoRegressive Integrated Moving Average with eXogenous regressors + model + + Parameters + ---------- + endog : array_like + The observed time-series process :math:`y` + exog : array_like, optional + Array of exogenous regressors, shaped nobs x k. + order : iterable or iterable of iterables, optional + The (p,d,q) order of the model for the number of AR parameters, + differences, and MA parameters. `d` must be an integer + indicating the integration order of the process, while + `p` and `q` may either be an integers indicating the AR and MA + orders (so that all lags up to those orders are included) or else + iterables giving specific AR and / or MA lags to include. Default is + an AR(1) model: (1,0,0). + seasonal_order : iterable, optional + The (P,D,Q,s) order of the seasonal component of the model for the + AR parameters, differences, MA parameters, and periodicity. + `d` must be an integer indicating the integration order of the process, + while `p` and `q` may either be an integers indicating the AR and MA + orders (so that all lags up to those orders are included) or else + iterables giving specific AR and / or MA lags to include. `s` is an + integer giving the periodicity (number of periods in season), often it + is 4 for quarterly data or 12 for monthly data. Default is no seasonal + effect. + trend : str{'n','c','t','ct'} or iterable, optional + Parameter controlling the deterministic trend polynomial :math:`A(t)`. + Can be specified as a string where 'c' indicates a constant (i.e. a + degree zero component of the trend polynomial), 't' indicates a + linear trend with time, and 'ct' is both. Can also be specified as an + iterable defining the polynomial as in `numpy.poly1d`, where + `[1,1,0,1]` would denote :math:`a + bt + ct^3`. Default is to not + include a trend component. + measurement_error : boolean, optional + Whether or not to assume the endogenous observations `endog` were + measured with error. Default is False. + time_varying_regression : boolean, optional + Used when an explanatory variables, `exog`, are provided provided + to select whether or not coefficients on the exogenous regressors are + allowed to vary over time. Default is False. + mle_regression : boolean, optional + Whether or not to use estimate the regression coefficients for the + exogenous variables as part of maximum likelihood estimation or through + the Kalman filter (i.e. recursive least squares). If + `time_varying_regression` is True, this must be set to False. Default + is True. + simple_differencing : boolean, optional + Whether or not to use partially conditional maximum likelihood + estimation. If True, differencing is performed prior to estimation, + which discards the first :math:`s D + d` initial rows but results in a + smaller state-space formulation. If False, the full SARIMAX model is + put in state-space form so that all datapoints can be used in + estimation. Default is False. + enforce_stationarity : boolean, optional + Whether or not to transform the AR parameters to enforce stationarity + in the autoregressive component of the model. Default is True. + enforce_invertibility : boolean, optional + Whether or not to transform the MA parameters to enforce invertibility + in the moving average component of the model. Default is True. + hamilton_representation : boolean, optional + Whether or not to use the Hamilton representation of an ARMA process + (if True) or the Harvey representation (if False). Default is False. + concentrate_scale : boolean, optional + Whether or not to concentrate the scale (variance of the error term) + out of the likelihood. This reduces the number of parameters estimated + by maximum likelihood by one, but standard errors will then not + be available for the scale parameter. + **kwargs + Keyword arguments may be used to provide default values for state space + matrices or for Kalman filtering options. See `Representation`, and + `KalmanFilter` for more details. + + Attributes + ---------- + measurement_error : boolean + Whether or not to assume the endogenous + observations `endog` were measured with error. + state_error : boolean + Whether or not the transition equation has an error component. + mle_regression : boolean + Whether or not the regression coefficients for + the exogenous variables were estimated via maximum + likelihood estimation. + state_regression : boolean + Whether or not the regression coefficients for + the exogenous variables are included as elements + of the state space and estimated via the Kalman + filter. + time_varying_regression : boolean + Whether or not coefficients on the exogenous + regressors are allowed to vary over time. + simple_differencing : boolean + Whether or not to use partially conditional maximum likelihood + estimation. + enforce_stationarity : boolean + Whether or not to transform the AR parameters + to enforce stationarity in the autoregressive + component of the model. + enforce_invertibility : boolean + Whether or not to transform the MA parameters + to enforce invertibility in the moving average + component of the model. + hamilton_representation : boolean + Whether or not to use the Hamilton representation of an ARMA process. + trend : str{'n','c','t','ct'} or iterable + Parameter controlling the deterministic + trend polynomial :math:`A(t)`. See the class + parameter documentation for more information. + polynomial_ar : array + Array containing autoregressive lag polynomial + coefficients, ordered from lowest degree to highest. + Initialized with ones, unless a coefficient is + constrained to be zero (in which case it is zero). + polynomial_ma : array + Array containing moving average lag polynomial + coefficients, ordered from lowest degree to highest. + Initialized with ones, unless a coefficient is + constrained to be zero (in which case it is zero). + polynomial_seasonal_ar : array + Array containing seasonal moving average lag + polynomial coefficients, ordered from lowest degree + to highest. Initialized with ones, unless a + coefficient is constrained to be zero (in which + case it is zero). + polynomial_seasonal_ma : array + Array containing seasonal moving average lag + polynomial coefficients, ordered from lowest degree + to highest. Initialized with ones, unless a + coefficient is constrained to be zero (in which + case it is zero). + polynomial_trend : array + Array containing trend polynomial coefficients, + ordered from lowest degree to highest. Initialized + with ones, unless a coefficient is constrained to be + zero (in which case it is zero). + k_ar : int + Highest autoregressive order in the model, zero-indexed. + k_ar_params : int + Number of autoregressive parameters to be estimated. + k_diff : int + Order of intergration. + k_ma : int + Highest moving average order in the model, zero-indexed. + k_ma_params : int + Number of moving average parameters to be estimated. + seasonal_periods : int + Number of periods in a season. + k_seasonal_ar : int + Highest seasonal autoregressive order in the model, zero-indexed. + k_seasonal_ar_params : int + Number of seasonal autoregressive parameters to be estimated. + k_seasonal_diff : int + Order of seasonal intergration. + k_seasonal_ma : int + Highest seasonal moving average order in the model, zero-indexed. + k_seasonal_ma_params : int + Number of seasonal moving average parameters to be estimated. + k_trend : int + Order of the trend polynomial plus one (i.e. the constant polynomial + would have `k_trend=1`). + k_exog : int + Number of exogenous regressors. + + Notes + ----- + The SARIMA model is specified :math:`(p, d, q) \times (P, D, Q)_s`. + + .. math:: + + \phi_p (L) \tilde \phi_P (L^s) \Delta^d \Delta_s^D y_t = A(t) + + \theta_q (L) \tilde \theta_Q (L^s) \zeta_t + + In terms of a univariate structural model, this can be represented as + + .. math:: + + y_t & = u_t + \eta_t \\ + \phi_p (L) \tilde \phi_P (L^s) \Delta^d \Delta_s^D u_t & = A(t) + + \theta_q (L) \tilde \theta_Q (L^s) \zeta_t + + where :math:`\eta_t` is only applicable in the case of measurement error + (although it is also used in the case of a pure regression model, i.e. if + p=q=0). + + In terms of this model, regression with SARIMA errors can be represented + easily as + + .. math:: + + y_t & = \beta_t x_t + u_t \\ + \phi_p (L) \tilde \phi_P (L^s) \Delta^d \Delta_s^D u_t & = A(t) + + \theta_q (L) \tilde \theta_Q (L^s) \zeta_t + + this model is the one used when exogenous regressors are provided. + + Note that the reduced form lag polynomials will be written as: + + .. math:: + + \Phi (L) \equiv \phi_p (L) \tilde \phi_P (L^s) \\ + \Theta (L) \equiv \theta_q (L) \tilde \theta_Q (L^s) + + If `mle_regression` is True, regression coefficients are treated as + additional parameters to be estimated via maximum likelihood. Otherwise + they are included as part of the state with a diffuse initialization. + In this case, however, with approximate diffuse initialization, results + can be sensitive to the initial variance. + + This class allows two different underlying representations of ARMA models + as state space models: that of Hamilton and that of Harvey. Both are + equivalent in the sense that they are analytical representations of the + ARMA model, but the state vectors of each have different meanings. For + this reason, maximum likelihood does not result in identical parameter + estimates and even the same set of parameters will result in different + loglikelihoods. + + The Harvey representation is convenient because it allows integrating + differencing into the state vector to allow using all observations for + estimation. + + In this implementation of differenced models, the Hamilton representation + is not able to accomodate differencing in the state vector, so + `simple_differencing` (which performs differencing prior to estimation so + that the first d + sD observations are lost) must be used. + + Many other packages use the Hamilton representation, so that tests against + Stata and R require using it along with simple differencing (as Stata + does). + + If `filter_concentrated = True` is used, then the scale of the model is + concentrated out of the likelihood. A benefit of this is that there the + dimension of the parameter vector is reduced so that numerical maximization + of the log-likelihood function may be faster and more stable. If this + option in a model with measurement error, it is important to note that the + estimated measurement error parameter will be relative to the scale, and + is named "snr.measurement_error" instead of "var.measurement_error". To + compute the variance of the measurement error in this case one would + multiply `snr.measurement_error` parameter by the scale. + + + Detailed information about state space models can be found in [1]_. Some + specific references are: + + - Chapter 3.4 describes ARMA and ARIMA models in state space form (using + the Harvey representation), and gives references for basic seasonal + models and models with a multiplicative form (for example the airline + model). It also shows a state space model for a full ARIMA process (this + is what is done here if `simple_differencing=False`). + - Chapter 3.6 describes estimating regression effects via the Kalman filter + (this is performed if `mle_regression` is False), regression with + time-varying coefficients, and regression with ARMA errors (recall from + above that if regression effects are present, the model estimated by this + class is regression with SARIMA errors). + - Chapter 8.4 describes the application of an ARMA model to an example + dataset. A replication of this section is available in an example + IPython notebook in the documentation. + + References + ---------- + .. [1] Durbin, James, and Siem Jan Koopman. 2012. + Time Series Analysis by State Space Methods: Second Edition. + Oxford University Press. + """ + + def __init__(self, endog, exog=None, order=(1, 0, 0), + seasonal_order=(0, 0, 0, 0), trend=None, + measurement_error=False, time_varying_regression=False, + mle_regression=True, simple_differencing=False, + enforce_stationarity=True, enforce_invertibility=True, + hamilton_representation=False, concentrate_scale=False, + **kwargs): + + # Model parameters + self.seasonal_periods = seasonal_order[3] + self.measurement_error = measurement_error + self.time_varying_regression = time_varying_regression + self.mle_regression = mle_regression + self.simple_differencing = simple_differencing + self.enforce_stationarity = enforce_stationarity + self.enforce_invertibility = enforce_invertibility + self.hamilton_representation = hamilton_representation + self.concentrate_scale = concentrate_scale + + # Save given orders + self.order = order + self.seasonal_order = seasonal_order + + # Enforce non-MLE coefficients if time varying coefficients is + # specified + if self.time_varying_regression and self.mle_regression: + raise ValueError('Models with time-varying regression coefficients' + ' must integrate the coefficients as part of the' + ' state vector, so that `mle_regression` must' + ' be set to False.') + + # Lag polynomials + # Assume that they are given from lowest degree to highest, that all + # degrees except for the constant are included, and that they are + # boolean vectors (0 for not included, 1 for included). + if isinstance(order[0], (int, long, np.integer)): + self.polynomial_ar = np.r_[1., np.ones(order[0])] + else: + self.polynomial_ar = np.r_[1., order[0]] + self._polynomial_ar = self.polynomial_ar.copy() + if isinstance(order[2], (int, long, np.integer)): + self.polynomial_ma = np.r_[1., np.ones(order[2])] + else: + self.polynomial_ma = np.r_[1., order[2]] + self._polynomial_ma = self.polynomial_ma.copy() + # Assume that they are given from lowest degree to highest, that the + # degrees correspond to (1*s, 2*s, ..., P*s), and that they are + # boolean vectors (0 for not included, 1 for included). + if isinstance(seasonal_order[0], (int, long, np.integer)): + self.polynomial_seasonal_ar = np.r_[ + 1., # constant + ([0] * (self.seasonal_periods - 1) + [1]) * seasonal_order[0] + ] + else: + self.polynomial_seasonal_ar = np.r_[ + 1., [0] * self.seasonal_periods * len(seasonal_order[0]) + ] + for i in range(len(seasonal_order[0])): + tmp = (i + 1) * self.seasonal_periods + self.polynomial_seasonal_ar[tmp] = seasonal_order[0][i] + self._polynomial_seasonal_ar = self.polynomial_seasonal_ar.copy() + if isinstance(seasonal_order[2], (int, long, np.integer)): + self.polynomial_seasonal_ma = np.r_[ + 1., # constant + ([0] * (self.seasonal_periods - 1) + [1]) * seasonal_order[2] + ] + else: + self.polynomial_seasonal_ma = np.r_[ + 1., [0] * self.seasonal_periods * len(seasonal_order[2]) + ] + for i in range(len(seasonal_order[2])): + tmp = (i + 1) * self.seasonal_periods + self.polynomial_seasonal_ma[tmp] = seasonal_order[2][i] + self._polynomial_seasonal_ma = self.polynomial_seasonal_ma.copy() + + # Deterministic trend polynomial + self.trend = trend + if trend is None or trend == 'n': + self.polynomial_trend = np.ones((0)) + elif trend == 'c': + self.polynomial_trend = np.r_[1] + elif trend == 't': + self.polynomial_trend = np.r_[0, 1] + elif trend == 'ct': + self.polynomial_trend = np.r_[1, 1] + else: + self.polynomial_trend = (np.array(trend) > 0).astype(int) + self._polynomial_trend = self.polynomial_trend.copy() + + # Model orders + # Note: k_ar, k_ma, k_seasonal_ar, k_seasonal_ma do not include the + # constant term, so they may be zero. + # Note: for a typical ARMA(p,q) model, p = k_ar_params = k_ar - 1 and + # q = k_ma_params = k_ma - 1, although this may not be true for models + # with arbitrary log polynomials. + self.k_ar = int(self.polynomial_ar.shape[0] - 1) + self.k_ar_params = int(np.sum(self.polynomial_ar) - 1) + self.k_diff = int(order[1]) + self.k_ma = int(self.polynomial_ma.shape[0] - 1) + self.k_ma_params = int(np.sum(self.polynomial_ma) - 1) + + self.k_seasonal_ar = int(self.polynomial_seasonal_ar.shape[0] - 1) + self.k_seasonal_ar_params = ( + int(np.sum(self.polynomial_seasonal_ar) - 1) + ) + self.k_seasonal_diff = int(seasonal_order[1]) + self.k_seasonal_ma = int(self.polynomial_seasonal_ma.shape[0] - 1) + self.k_seasonal_ma_params = ( + int(np.sum(self.polynomial_seasonal_ma) - 1) + ) + + # Make internal copies of the differencing orders because if we use + # simple differencing, then we will need to internally use zeros after + # the simple differencing has been performed + self._k_diff = self.k_diff + self._k_seasonal_diff = self.k_seasonal_diff + + # We can only use the Hamilton representation if differencing is not + # performed as a part of the state space + if (self.hamilton_representation and not (self.simple_differencing or + self._k_diff == self._k_seasonal_diff == 0)): + raise ValueError('The Hamilton representation is only available' + ' for models in which there is no differencing' + ' integrated into the state vector. Set' + ' `simple_differencing` to True or set' + ' `hamilton_representation` to False') + + # Note: k_trend is not the degree of the trend polynomial, because e.g. + # k_trend = 1 corresponds to the degree zero polynomial (with only a + # constant term). + self.k_trend = int(np.sum(self.polynomial_trend)) + + # Model order + # (this is used internally in a number of locations) + self._k_order = max(self.k_ar + self.k_seasonal_ar, + self.k_ma + self.k_seasonal_ma + 1) + if self._k_order == 1 and self.k_ar + self.k_seasonal_ar == 0: + # Handle time-varying regression + if self.time_varying_regression: + self._k_order = 0 + + # Exogenous data + (self.k_exog, exog) = prepare_exog(exog) + + # Redefine mle_regression to be true only if it was previously set to + # true and there are exogenous regressors + self.mle_regression = ( + self.mle_regression and exog is not None and self.k_exog > 0 + ) + # State regression is regression with coefficients estiamted within + # the state vector + self.state_regression = ( + not self.mle_regression and exog is not None and self.k_exog > 0 + ) + # If all we have is a regression (so k_ar = k_ma = 0), then put the + # error term as measurement error + if self.state_regression and self._k_order == 0: + self.measurement_error = True + + # Number of states + k_states = self._k_order + if not self.simple_differencing: + k_states += (self.seasonal_periods * self._k_seasonal_diff + + self._k_diff) + if self.state_regression: + k_states += self.k_exog + + # Number of diffuse states + k_diffuse_states = k_states + if self.enforce_stationarity: + k_diffuse_states -= self._k_order + + # Number of positive definite elements of the state covariance matrix + k_posdef = int(self._k_order > 0) + # Only have an error component to the states if k_posdef > 0 + self.state_error = k_posdef > 0 + if self.state_regression and self.time_varying_regression: + k_posdef += self.k_exog + + # Diffuse initialization can be more sensistive to the variance value + # in the case of state regression, so set a higher than usual default + # variance + if self.state_regression: + kwargs.setdefault('initial_variance', 1e10) + + # Number of parameters + self.k_params = ( + self.k_ar_params + self.k_ma_params + + self.k_seasonal_ar_params + self.k_seasonal_ma_params + + self.k_trend + + self.measurement_error + + int(not self.concentrate_scale) + ) + if self.mle_regression: + self.k_params += self.k_exog + + # We need to have an array or pandas at this point + self.orig_endog = endog + self.orig_exog = exog + if not _is_using_pandas(endog, None): + endog = np.asanyarray(endog) + + # Update the differencing dimensions if simple differencing is applied + self.orig_k_diff = self._k_diff + self.orig_k_seasonal_diff = self._k_seasonal_diff + if (self.simple_differencing and + (self._k_diff > 0 or self._k_seasonal_diff > 0)): + self._k_diff = 0 + self._k_seasonal_diff = 0 + + # Internally used in several locations + self._k_states_diff = ( + self._k_diff + self.seasonal_periods * self._k_seasonal_diff + ) + + # Set some model variables now so they will be available for the + # initialize() method, below + self.nobs = len(endog) + self.k_states = k_states + self.k_posdef = k_posdef + + # By default, do not calculate likelihood while it is controlled by + # diffuse initial conditions. + kwargs.setdefault('loglikelihood_burn', k_diffuse_states) + + # Initialize the statespace + super(SARIMAX, self).__init__( + endog, exog=exog, k_states=k_states, k_posdef=k_posdef, **kwargs + ) + + # Set the filter to concentrate out the scale if requested + if self.concentrate_scale: + self.ssm.filter_concentrated = True + + # Set as time-varying model if we have time-trend or exog + if self.k_exog > 0 or len(self.polynomial_trend) > 1: + self.ssm._time_invariant = False + + # Initialize the fixed components of the statespace model + self.ssm['design'] = self.initial_design + self.ssm['state_intercept'] = self.initial_state_intercept + self.ssm['transition'] = self.initial_transition + self.ssm['selection'] = self.initial_selection + if self.concentrate_scale: + self.ssm['state_cov', 0, 0] = 1. + + # update _init_keys attached by super + self._init_keys += ['order', 'seasonal_order', 'trend', + 'measurement_error', 'time_varying_regression', + 'mle_regression', 'simple_differencing', + 'enforce_stationarity', 'enforce_invertibility', + 'hamilton_representation', + 'concentrate_scale'] + list(kwargs.keys()) + # TODO: I think the kwargs or not attached, need to recover from ??? + + # Initialize the state + if self.ssm.initialization is None: + self.initialize_default() + + def _get_init_kwds(self): + kwds = super(SARIMAX, self)._get_init_kwds() + + for key, value in kwds.items(): + if value is None and hasattr(self.ssm, key): + kwds[key] = getattr(self.ssm, key) + + return kwds + + def prepare_data(self): + endog, exog = super(SARIMAX, self).prepare_data() + + # Perform simple differencing if requested + if (self.simple_differencing and + (self.orig_k_diff > 0 or self.orig_k_seasonal_diff > 0)): + # Save the original length + orig_length = endog.shape[0] + # Perform simple differencing + endog = diff(endog.copy(), self.orig_k_diff, + self.orig_k_seasonal_diff, self.seasonal_periods) + if exog is not None: + exog = diff(exog.copy(), self.orig_k_diff, + self.orig_k_seasonal_diff, self.seasonal_periods) + + # Reset the ModelData datasets and cache + self.data.endog, self.data.exog = ( + self.data._convert_endog_exog(endog, exog)) + + # Reset indexes, if provided + new_length = self.data.endog.shape[0] + if self.data.row_labels is not None: + self.data._cache['row_labels'] = ( + self.data.row_labels[orig_length - new_length:]) + if self._index is not None: + if self._index_generated: + self._index = self._index[:-(orig_length - new_length)] + else: + self._index = self._index[orig_length - new_length:] + + # Reset the nobs + self.nobs = endog.shape[0] + + # Cache the arrays for calculating the intercept from the trend + # components + time_trend = np.arange(1, self.nobs + 1) + self._trend_data = np.zeros((self.nobs, self.k_trend)) + i = 0 + for k in self.polynomial_trend.nonzero()[0]: + if k == 0: + self._trend_data[:, i] = np.ones(self.nobs,) + else: + self._trend_data[:, i] = time_trend**k + i += 1 + + return endog, exog + + def initialize(self): + """ + Initialize the SARIMAX model. + + Notes + ----- + These initialization steps must occur following the parent class + __init__ function calls. + """ + super(SARIMAX, self).initialize() + + # Cache the indexes of included polynomial orders (for update below) + # (but we do not want the index of the constant term, so exclude the + # first index) + self._polynomial_ar_idx = np.nonzero(self.polynomial_ar)[0][1:] + self._polynomial_ma_idx = np.nonzero(self.polynomial_ma)[0][1:] + self._polynomial_seasonal_ar_idx = np.nonzero( + self.polynomial_seasonal_ar + )[0][1:] + self._polynomial_seasonal_ma_idx = np.nonzero( + self.polynomial_seasonal_ma + )[0][1:] + + # Save the indices corresponding to the reduced form lag polynomial + # parameters in the transition and selection matrices so that they + # don't have to be recalculated for each update() + start_row = self._k_states_diff + end_row = start_row + self.k_ar + self.k_seasonal_ar + col = self._k_states_diff + if not self.hamilton_representation: + self.transition_ar_params_idx = ( + np.s_['transition', start_row:end_row, col] + ) + else: + self.transition_ar_params_idx = ( + np.s_['transition', col, start_row:end_row] + ) + + start_row += 1 + end_row = start_row + self.k_ma + self.k_seasonal_ma + col = 0 + if not self.hamilton_representation: + self.selection_ma_params_idx = ( + np.s_['selection', start_row:end_row, col] + ) + else: + self.design_ma_params_idx = ( + np.s_['design', col, start_row:end_row] + ) + + # Cache indices for exog variances in the state covariance matrix + if self.state_regression and self.time_varying_regression: + idx = np.diag_indices(self.k_posdef) + self._exog_variance_idx = ('state_cov', idx[0][-self.k_exog:], + idx[1][-self.k_exog:]) + + def initialize_default(self, approximate_diffuse_variance=None): + """Initialize default""" + if approximate_diffuse_variance is None: + approximate_diffuse_variance = self.ssm.initial_variance + + init = Initialization( + self.k_states, + approximate_diffuse_variance=approximate_diffuse_variance) + + if self.enforce_stationarity: + # Differencing operators are at the beginning + init.set((0, self._k_states_diff), 'approximate_diffuse') + # Stationary component in the middle + init.set((self._k_states_diff, + self._k_states_diff + self._k_order), + 'stationary') + # Regression components at the end + init.set((self._k_states_diff + self._k_order, + self._k_states_diff + self._k_order + self.k_exog), + 'approximate_diffuse') + # If we're not enforcing a stationarity, then we can't initialize a + # stationary component + else: + init.set(None, 'approximate_diffuse') + + self.ssm.initialization = init + + @property + def initial_design(self): + """Initial design matrix""" + # Basic design matrix + design = np.r_[ + [1] * self._k_diff, + ([0] * (self.seasonal_periods - 1) + [1]) * self._k_seasonal_diff, + [1] * self.state_error, [0] * (self._k_order - 1) + ] + + if len(design) == 0: + design = np.r_[0] + + # If we have exogenous regressors included as part of the state vector + # then the exogenous data is incorporated as a time-varying component + # of the design matrix + if self.state_regression: + if self._k_order > 0: + design = np.c_[ + np.reshape( + np.repeat(design, self.nobs), + (design.shape[0], self.nobs) + ).T, + self.exog + ].T[None, :, :] + else: + design = self.exog.T[None, :, :] + return design + + @property + def initial_state_intercept(self): + """Initial state intercept vector""" + # TODO make this self.k_trend > 1 and adjust the update to take + # into account that if the trend is a constant, it is not time-varying + if self.k_trend > 0: + state_intercept = np.zeros((self.k_states, self.nobs)) + else: + state_intercept = np.zeros((self.k_states,)) + return state_intercept + + @property + def initial_transition(self): + """Initial transition matrix""" + transition = np.zeros((self.k_states, self.k_states)) + + # Exogenous regressors component + if self.state_regression: + start = -self.k_exog + # T_\beta + transition[start:, start:] = np.eye(self.k_exog) + + # Autoregressive component + start = -(self.k_exog + self._k_order) + end = -self.k_exog if self.k_exog > 0 else None + else: + # Autoregressive component + start = -self._k_order + end = None + + # T_c + if self._k_order > 0: + transition[start:end, start:end] = companion_matrix(self._k_order) + if self.hamilton_representation: + transition[start:end, start:end] = np.transpose( + companion_matrix(self._k_order) + ) + + # Seasonal differencing component + # T^* + if self._k_seasonal_diff > 0: + seasonal_companion = companion_matrix(self.seasonal_periods).T + seasonal_companion[0, -1] = 1 + for d in range(self._k_seasonal_diff): + start = self._k_diff + d * self.seasonal_periods + end = self._k_diff + (d + 1) * self.seasonal_periods + + # T_c^* + transition[start:end, start:end] = seasonal_companion + + # i + for i in range(d + 1, self._k_seasonal_diff): + transition[start, end + self.seasonal_periods - 1] = 1 + + # \iota + transition[start, self._k_states_diff] = 1 + + # Differencing component + if self._k_diff > 0: + idx = np.triu_indices(self._k_diff) + # T^** + transition[idx] = 1 + # [0 1] + if self.seasonal_periods > 0: + start = self._k_diff + end = self._k_states_diff + transition[:self._k_diff, start:end] = ( + ([0] * (self.seasonal_periods - 1) + [1]) * + self._k_seasonal_diff) + # [1 0] + column = self._k_states_diff + transition[:self._k_diff, column] = 1 + + return transition + + @property + def initial_selection(self): + """Initial selection matrix""" + if not (self.state_regression and self.time_varying_regression): + if self.k_posdef > 0: + selection = np.r_[ + [0] * (self._k_states_diff), + [1] * (self._k_order > 0), [0] * (self._k_order - 1), + [0] * ((1 - self.mle_regression) * self.k_exog) + ][:, None] + + if len(selection) == 0: + selection = np.zeros((self.k_states, self.k_posdef)) + else: + selection = np.zeros((self.k_states, 0)) + else: + selection = np.zeros((self.k_states, self.k_posdef)) + # Typical state variance + if self._k_order > 0: + selection[0, 0] = 1 + # Time-varying regression coefficient variances + for i in range(self.k_exog, 0, -1): + selection[-i, -i] = 1 + return selection + + @property + def _res_classes(self): + return {'fit': (SARIMAXResults, SARIMAXResultsWrapper)} + + @staticmethod + def _conditional_sum_squares(endog, k_ar, polynomial_ar, k_ma, + polynomial_ma, k_trend=0, trend_data=None): + k = 2 * k_ma + r = max(k + k_ma, k_ar) + + k_params_ar = 0 if k_ar == 0 else len(polynomial_ar.nonzero()[0]) - 1 + k_params_ma = 0 if k_ma == 0 else len(polynomial_ma.nonzero()[0]) - 1 + + residuals = None + if k_ar + k_ma + k_trend > 0: + # If we have MA terms, get residuals from an AR(k) model to use + # as data for conditional sum of squares estimates of the MA + # parameters + if k_ma > 0: + Y = endog[k:] + X = lagmat(endog, k, trim='both') + params_ar = np.linalg.pinv(X).dot(Y) + residuals = Y - np.dot(X, params_ar) + + # Run an ARMA(p,q) model using the just computed residuals as data + Y = endog[r:] + + X = np.empty((Y.shape[0], 0)) + if k_trend > 0: + if trend_data is None: + raise ValueError('Trend data must be provided if' + ' `k_trend` > 0.') + X = np.c_[X, trend_data[:(-r if r > 0 else None), :]] + if k_ar > 0: + cols = polynomial_ar.nonzero()[0][1:] - 1 + X = np.c_[X, lagmat(endog, k_ar)[r:, cols]] + if k_ma > 0: + cols = polynomial_ma.nonzero()[0][1:] - 1 + X = np.c_[X, lagmat(residuals, k_ma)[r-k:, cols]] + + # Get the array of [ar_params, ma_params] + params = np.linalg.pinv(X).dot(Y) + residuals = Y - np.dot(X, params) + + # Default output + params_trend = [] + params_ar = [] + params_ma = [] + params_variance = [] + + # Get the params + offset = 0 + if k_trend > 0: + params_trend = params[offset:k_trend + offset] + offset += k_trend + if k_ar > 0: + params_ar = params[offset:k_params_ar + offset] + offset += k_params_ar + if k_ma > 0: + params_ma = params[offset:k_params_ma + offset] + offset += k_params_ma + if residuals is not None: + params_variance = (residuals[k_params_ma:]**2).mean() + + return (params_trend, params_ar, params_ma, + params_variance) + + @property + def start_params(self): + """ + Starting parameters for maximum likelihood estimation + """ + + # Perform differencing if necessary (i.e. if simple differencing is + # false so that the state-space model will use the entire dataset) + trend_data = self._trend_data + if not self.simple_differencing and ( + self._k_diff > 0 or self._k_seasonal_diff > 0): + endog = diff(self.endog, self._k_diff, + self._k_seasonal_diff, self.seasonal_periods) + if self.exog is not None: + exog = diff(self.exog, self._k_diff, + self._k_seasonal_diff, self.seasonal_periods) + else: + exog = None + trend_data = trend_data[:endog.shape[0], :] + else: + endog = self.endog.copy() + exog = self.exog.copy() if self.exog is not None else None + endog = endog.squeeze() + + # Although the Kalman filter can deal with missing values in endog, + # conditional sum of squares cannot + if np.any(np.isnan(endog)): + mask = ~np.isnan(endog).squeeze() + endog = endog[mask] + if exog is not None: + exog = exog[mask] + if trend_data is not None: + trend_data = trend_data[mask] + + # Regression effects via OLS + params_exog = [] + if self.k_exog > 0: + params_exog = np.linalg.pinv(exog).dot(endog) + endog = endog - np.dot(exog, params_exog) + if self.state_regression: + params_exog = [] + + # Non-seasonal ARMA component and trend + (params_trend, params_ar, params_ma, + params_variance) = self._conditional_sum_squares( + endog, self.k_ar, self.polynomial_ar, self.k_ma, + self.polynomial_ma, self.k_trend, trend_data + ) + + # If we have estimated non-stationary start parameters but enforce + # stationarity is on, raise an error + invalid_ar = ( + self.k_ar > 0 and + self.enforce_stationarity and + not is_invertible(np.r_[1, -params_ar]) + ) + if invalid_ar: + warn('Non-stationary starting autoregressive parameters' + ' found. Using zeros as starting parameters.') + params_ar *= 0 + + # If we have estimated non-invertible start parameters but enforce + # invertibility is on, raise an error + invalid_ma = ( + self.k_ma > 0 and + self.enforce_invertibility and + not is_invertible(np.r_[1, params_ma]) + ) + if invalid_ma: + warn('Non-invertible starting MA parameters found.' + ' Using zeros as starting parameters.') + params_ma *= 0 + + # Seasonal Parameters + _, params_seasonal_ar, params_seasonal_ma, params_seasonal_variance = ( + self._conditional_sum_squares( + endog, self.k_seasonal_ar, self.polynomial_seasonal_ar, + self.k_seasonal_ma, self.polynomial_seasonal_ma + ) + ) + + # If we have estimated non-stationary start parameters but enforce + # stationarity is on, raise an error + invalid_seasonal_ar = ( + self.k_seasonal_ar > 0 and + self.enforce_stationarity and + not is_invertible(np.r_[1, -params_seasonal_ar]) + ) + if invalid_seasonal_ar: + warn('Non-stationary starting seasonal autoregressive' + ' Using zeros as starting parameters.') + params_seasonal_ar *= 0 + + # If we have estimated non-invertible start parameters but enforce + # invertibility is on, raise an error + invalid_seasonal_ma = ( + self.k_seasonal_ma > 0 and + self.enforce_invertibility and + not is_invertible(np.r_[1, params_seasonal_ma]) + ) + if invalid_seasonal_ma: + warn('Non-invertible starting seasonal moving average' + ' Using zeros as starting parameters.') + params_seasonal_ma *= 0 + + # Variances + params_exog_variance = [] + if self.state_regression and self.time_varying_regression: + # TODO how to set the initial variance parameters? + params_exog_variance = [1] * self.k_exog + if (self.state_error and type(params_variance) == list and + len(params_variance) == 0): + if not (type(params_seasonal_variance) == list and + len(params_seasonal_variance) == 0): + params_variance = params_seasonal_variance + elif self.k_exog > 0: + params_variance = np.inner(endog, endog) + else: + params_variance = np.inner(endog, endog) / self.nobs + params_measurement_variance = 1 if self.measurement_error else [] + + # We want to bound the starting variance away from zero + params_variance = np.atleast_1d(max(np.array(params_variance), 1e-10)) + + # Remove state variance as parameter if scale is concentrated out + if self.concentrate_scale: + params_variance = [] + + # Combine all parameters + return np.r_[ + params_trend, + params_exog, + params_ar, + params_ma, + params_seasonal_ar, + params_seasonal_ma, + params_exog_variance, + params_measurement_variance, + params_variance + ] + + @property + def endog_names(self, latex=False): + """Names of endogenous variables""" + diff = '' + if self.k_diff > 0: + if self.k_diff == 1: + diff = r'\Delta' if latex else 'D' + else: + diff = (r'\Delta^%d' if latex else 'D%d') % self.k_diff + + seasonal_diff = '' + if self.k_seasonal_diff > 0: + if self.k_seasonal_diff == 1: + seasonal_diff = ((r'\Delta_%d' if latex else 'DS%d') % + (self.seasonal_periods)) + else: + seasonal_diff = ((r'\Delta_%d^%d' if latex else 'D%dS%d') % + (self.k_seasonal_diff, self.seasonal_periods)) + endog_diff = self.simple_differencing + if endog_diff and self.k_diff > 0 and self.k_seasonal_diff > 0: + return (('%s%s %s' if latex else '%s.%s.%s') % + (diff, seasonal_diff, self.data.ynames)) + elif endog_diff and self.k_diff > 0: + return (('%s %s' if latex else '%s.%s') % + (diff, self.data.ynames)) + elif endog_diff and self.k_seasonal_diff > 0: + return (('%s %s' if latex else '%s.%s') % + (seasonal_diff, self.data.ynames)) + else: + return self.data.ynames + + params_complete = [ + 'trend', 'exog', 'ar', 'ma', 'seasonal_ar', 'seasonal_ma', + 'exog_variance', 'measurement_variance', 'variance' + ] + + @property + def param_terms(self): + """ + List of parameters actually included in the model, in sorted order. + + TODO Make this an OrderedDict with slice or indices as the values. + """ + model_orders = self.model_orders + # Get basic list from model orders + params = [ + order for order in self.params_complete + if model_orders[order] > 0 + ] + # k_exog may be positive without associated parameters if it is in the + # state vector + if 'exog' in params and not self.mle_regression: + params.remove('exog') + + return params + + @property + def param_names(self): + """ + List of human readable parameter names (for parameters actually + included in the model). + """ + params_sort_order = self.param_terms + model_names = self.model_names + return [ + name for param in params_sort_order for name in model_names[param] + ] + + @property + def model_orders(self): + """ + The orders of each of the polynomials in the model. + """ + return { + 'trend': self.k_trend, + 'exog': self.k_exog, + 'ar': self.k_ar, + 'ma': self.k_ma, + 'seasonal_ar': self.k_seasonal_ar, + 'seasonal_ma': self.k_seasonal_ma, + 'reduced_ar': self.k_ar + self.k_seasonal_ar, + 'reduced_ma': self.k_ma + self.k_seasonal_ma, + 'exog_variance': self.k_exog if ( + self.state_regression and self.time_varying_regression) else 0, + 'measurement_variance': int(self.measurement_error), + 'variance': int(self.state_error and not self.concentrate_scale), + } + + @property + def model_names(self): + """ + The plain text names of all possible model parameters. + """ + return self._get_model_names(latex=False) + + @property + def model_latex_names(self): + """ + The latex names of all possible model parameters. + """ + return self._get_model_names(latex=True) + + def _get_model_names(self, latex=False): + names = { + 'trend': None, + 'exog': None, + 'ar': None, + 'ma': None, + 'seasonal_ar': None, + 'seasonal_ma': None, + 'reduced_ar': None, + 'reduced_ma': None, + 'exog_variance': None, + 'measurement_variance': None, + 'variance': None, + } + + # Trend + if self.k_trend > 0: + trend_template = 't_%d' if latex else 'trend.%d' + names['trend'] = [] + for i in self.polynomial_trend.nonzero()[0]: + if i == 0: + names['trend'].append('intercept') + elif i == 1: + names['trend'].append('drift') + else: + names['trend'].append(trend_template % i) + + # Exogenous coefficients + if self.k_exog > 0: + names['exog'] = self.exog_names + + # Autoregressive + if self.k_ar > 0: + ar_template = '$\\phi_%d$' if latex else 'ar.L%d' + names['ar'] = [] + for i in self.polynomial_ar.nonzero()[0][1:]: + names['ar'].append(ar_template % i) + + # Moving Average + if self.k_ma > 0: + ma_template = '$\\theta_%d$' if latex else 'ma.L%d' + names['ma'] = [] + for i in self.polynomial_ma.nonzero()[0][1:]: + names['ma'].append(ma_template % i) + + # Seasonal Autoregressive + if self.k_seasonal_ar > 0: + seasonal_ar_template = ( + '$\\tilde \\phi_%d$' if latex else 'ar.S.L%d' + ) + names['seasonal_ar'] = [] + for i in self.polynomial_seasonal_ar.nonzero()[0][1:]: + names['seasonal_ar'].append(seasonal_ar_template % i) + + # Seasonal Moving Average + if self.k_seasonal_ma > 0: + seasonal_ma_template = ( + '$\\tilde \\theta_%d$' if latex else 'ma.S.L%d' + ) + names['seasonal_ma'] = [] + for i in self.polynomial_seasonal_ma.nonzero()[0][1:]: + names['seasonal_ma'].append(seasonal_ma_template % i) + + # Reduced Form Autoregressive + if self.k_ar > 0 or self.k_seasonal_ar > 0: + reduced_polynomial_ar = reduced_polynomial_ar = -np.polymul( + self.polynomial_ar, self.polynomial_seasonal_ar + ) + ar_template = '$\\Phi_%d$' if latex else 'ar.R.L%d' + names['reduced_ar'] = [] + for i in reduced_polynomial_ar.nonzero()[0][1:]: + names['reduced_ar'].append(ar_template % i) + + # Reduced Form Moving Average + if self.k_ma > 0 or self.k_seasonal_ma > 0: + reduced_polynomial_ma = np.polymul( + self.polynomial_ma, self.polynomial_seasonal_ma + ) + ma_template = '$\\Theta_%d$' if latex else 'ma.R.L%d' + names['reduced_ma'] = [] + for i in reduced_polynomial_ma.nonzero()[0][1:]: + names['reduced_ma'].append(ma_template % i) + + # Exogenous variances + if self.state_regression and self.time_varying_regression: + if not self.concentrate_scale: + exog_var_template = ('$\\sigma_\\text{%s}^2$' if latex + else 'var.%s') + else: + exog_var_template = ( + '$\\sigma_\\text{%s}^2 / \\sigma_\\zeta^2$' if latex + else 'snr.%s') + names['exog_variance'] = [ + exog_var_template % exog_name for exog_name in self.exog_names + ] + + # Measurement error variance + if self.measurement_error: + if not self.concentrate_scale: + meas_var_tpl = ( + '$\\sigma_\\eta^2$' if latex else 'var.measurement_error') + else: + meas_var_tpl = ( + '$\\sigma_\\eta^2 / \\sigma_\\zeta^2$' if latex + else 'snr.measurement_error') + names['measurement_variance'] = [meas_var_tpl] + + # State variance + if self.state_error and not self.concentrate_scale: + var_tpl = '$\\sigma_\\zeta^2$' if latex else 'sigma2' + names['variance'] = [var_tpl] + + return names + + def transform_params(self, unconstrained): + """ + Transform unconstrained parameters used by the optimizer to constrained + parameters used in likelihood evaluation. + + Used primarily to enforce stationarity of the autoregressive lag + polynomial, invertibility of the moving average lag polynomial, and + positive variance parameters. + + Parameters + ---------- + unconstrained : array_like + Unconstrained parameters used by the optimizer. + + Returns + ------- + constrained : array_like + Constrained parameters used in likelihood evaluation. + + Notes + ----- + If the lag polynomial has non-consecutive powers (so that the + coefficient is zero on some element of the polynomial), then the + constraint function is not onto the entire space of invertible + polynomials, although it only excludes a very small portion very close + to the invertibility boundary. + """ + unconstrained = np.array(unconstrained, ndmin=1) + constrained = np.zeros(unconstrained.shape, unconstrained.dtype) + + start = end = 0 + + # Retain the trend parameters + if self.k_trend > 0: + end += self.k_trend + constrained[start:end] = unconstrained[start:end] + start += self.k_trend + + # Retain any MLE regression coefficients + if self.mle_regression: + end += self.k_exog + constrained[start:end] = unconstrained[start:end] + start += self.k_exog + + # Transform the AR parameters (phi) to be stationary + if self.k_ar_params > 0: + end += self.k_ar_params + if self.enforce_stationarity: + constrained[start:end] = ( + constrain_stationary_univariate(unconstrained[start:end]) + ) + else: + constrained[start:end] = unconstrained[start:end] + start += self.k_ar_params + + # Transform the MA parameters (theta) to be invertible + if self.k_ma_params > 0: + end += self.k_ma_params + if self.enforce_invertibility: + constrained[start:end] = ( + -constrain_stationary_univariate(unconstrained[start:end]) + ) + else: + constrained[start:end] = unconstrained[start:end] + start += self.k_ma_params + + # Transform the seasonal AR parameters (\tilde phi) to be stationary + if self.k_seasonal_ar > 0: + end += self.k_seasonal_ar_params + if self.enforce_stationarity: + constrained[start:end] = ( + constrain_stationary_univariate(unconstrained[start:end]) + ) + else: + constrained[start:end] = unconstrained[start:end] + start += self.k_seasonal_ar_params + + # Transform the seasonal MA parameters (\tilde theta) to be invertible + if self.k_seasonal_ma_params > 0: + end += self.k_seasonal_ma_params + if self.enforce_invertibility: + constrained[start:end] = ( + -constrain_stationary_univariate(unconstrained[start:end]) + ) + else: + constrained[start:end] = unconstrained[start:end] + start += self.k_seasonal_ma_params + + # Transform the standard deviation parameters to be positive + if self.state_regression and self.time_varying_regression: + end += self.k_exog + constrained[start:end] = unconstrained[start:end]**2 + start += self.k_exog + if self.measurement_error: + constrained[start] = unconstrained[start]**2 + start += 1 + end += 1 + if self.state_error and not self.concentrate_scale: + constrained[start] = unconstrained[start]**2 + # start += 1 + # end += 1 + + return constrained + + def untransform_params(self, constrained): + """ + Transform constrained parameters used in likelihood evaluation + to unconstrained parameters used by the optimizer + + Used primarily to reverse enforcement of stationarity of the + autoregressive lag polynomial and invertibility of the moving average + lag polynomial. + + Parameters + ---------- + constrained : array_like + Constrained parameters used in likelihood evaluation. + + Returns + ------- + constrained : array_like + Unconstrained parameters used by the optimizer. + + Notes + ----- + If the lag polynomial has non-consecutive powers (so that the + coefficient is zero on some element of the polynomial), then the + constraint function is not onto the entire space of invertible + polynomials, although it only excludes a very small portion very close + to the invertibility boundary. + """ + constrained = np.array(constrained, ndmin=1) + unconstrained = np.zeros(constrained.shape, constrained.dtype) + + start = end = 0 + + # Retain the trend parameters + if self.k_trend > 0: + end += self.k_trend + unconstrained[start:end] = constrained[start:end] + start += self.k_trend + + # Retain any MLE regression coefficients + if self.mle_regression: + end += self.k_exog + unconstrained[start:end] = constrained[start:end] + start += self.k_exog + + # Transform the AR parameters (phi) to be stationary + if self.k_ar_params > 0: + end += self.k_ar_params + if self.enforce_stationarity: + unconstrained[start:end] = ( + unconstrain_stationary_univariate(constrained[start:end]) + ) + else: + unconstrained[start:end] = constrained[start:end] + start += self.k_ar_params + + # Transform the MA parameters (theta) to be invertible + if self.k_ma_params > 0: + end += self.k_ma_params + if self.enforce_invertibility: + unconstrained[start:end] = ( + unconstrain_stationary_univariate(-constrained[start:end]) + ) + else: + unconstrained[start:end] = constrained[start:end] + start += self.k_ma_params + + # Transform the seasonal AR parameters (\tilde phi) to be stationary + if self.k_seasonal_ar > 0: + end += self.k_seasonal_ar_params + if self.enforce_stationarity: + unconstrained[start:end] = ( + unconstrain_stationary_univariate(constrained[start:end]) + ) + else: + unconstrained[start:end] = constrained[start:end] + start += self.k_seasonal_ar_params + + # Transform the seasonal MA parameters (\tilde theta) to be invertible + if self.k_seasonal_ma_params > 0: + end += self.k_seasonal_ma_params + if self.enforce_invertibility: + unconstrained[start:end] = ( + unconstrain_stationary_univariate(-constrained[start:end]) + ) + else: + unconstrained[start:end] = constrained[start:end] + start += self.k_seasonal_ma_params + + # Untransform the standard deviation + if self.state_regression and self.time_varying_regression: + end += self.k_exog + unconstrained[start:end] = constrained[start:end]**0.5 + start += self.k_exog + if self.measurement_error: + unconstrained[start] = constrained[start]**0.5 + start += 1 + end += 1 + if self.state_error and not self.concentrate_scale: + unconstrained[start] = constrained[start]**0.5 + # start += 1 + # end += 1 + + return unconstrained + + def update(self, params, transformed=True, complex_step=False): + """ + Update the parameters of the model + + Updates the representation matrices to fill in the new parameter + values. + + Parameters + ---------- + params : array_like + Array of new parameters. + transformed : boolean, optional + Whether or not `params` is already transformed. If set to False, + `transform_params` is called. Default is True.. + + Returns + ------- + params : array_like + Array of parameters. + """ + params = super(SARIMAX, self).update(params, transformed=transformed, + complex_step=False) + + params_trend = None + params_exog = None + params_ar = None + params_ma = None + params_seasonal_ar = None + params_seasonal_ma = None + params_exog_variance = None + params_measurement_variance = None + params_variance = None + + # Extract the parameters + start = end = 0 + end += self.k_trend + params_trend = params[start:end] + start += self.k_trend + if self.mle_regression: + end += self.k_exog + params_exog = params[start:end] + start += self.k_exog + end += self.k_ar_params + params_ar = params[start:end] + start += self.k_ar_params + end += self.k_ma_params + params_ma = params[start:end] + start += self.k_ma_params + end += self.k_seasonal_ar_params + params_seasonal_ar = params[start:end] + start += self.k_seasonal_ar_params + end += self.k_seasonal_ma_params + params_seasonal_ma = params[start:end] + start += self.k_seasonal_ma_params + if self.state_regression and self.time_varying_regression: + end += self.k_exog + params_exog_variance = params[start:end] + start += self.k_exog + if self.measurement_error: + params_measurement_variance = params[start] + start += 1 + end += 1 + if self.state_error and not self.concentrate_scale: + params_variance = params[start] + # start += 1 + # end += 1 + + # Update lag polynomials + if self.k_ar > 0: + if self._polynomial_ar.dtype == params.dtype: + self._polynomial_ar[self._polynomial_ar_idx] = -params_ar + else: + polynomial_ar = self._polynomial_ar.real.astype(params.dtype) + polynomial_ar[self._polynomial_ar_idx] = -params_ar + self._polynomial_ar = polynomial_ar + + if self.k_ma > 0: + if self._polynomial_ma.dtype == params.dtype: + self._polynomial_ma[self._polynomial_ma_idx] = params_ma + else: + polynomial_ma = self._polynomial_ma.real.astype(params.dtype) + polynomial_ma[self._polynomial_ma_idx] = params_ma + self._polynomial_ma = polynomial_ma + + if self.k_seasonal_ar > 0: + idx = self._polynomial_seasonal_ar_idx + if self._polynomial_seasonal_ar.dtype == params.dtype: + self._polynomial_seasonal_ar[idx] = -params_seasonal_ar + else: + polynomial_seasonal_ar = ( + self._polynomial_seasonal_ar.real.astype(params.dtype) + ) + polynomial_seasonal_ar[idx] = -params_seasonal_ar + self._polynomial_seasonal_ar = polynomial_seasonal_ar + + if self.k_seasonal_ma > 0: + idx = self._polynomial_seasonal_ma_idx + if self._polynomial_seasonal_ma.dtype == params.dtype: + self._polynomial_seasonal_ma[idx] = params_seasonal_ma + else: + polynomial_seasonal_ma = ( + self._polynomial_seasonal_ma.real.astype(params.dtype) + ) + polynomial_seasonal_ma[idx] = params_seasonal_ma + self._polynomial_seasonal_ma = polynomial_seasonal_ma + + # Get the reduced form lag polynomial terms by multiplying the regular + # and seasonal lag polynomials + # Note: that although the numpy np.polymul examples assume that they + # are ordered from highest degree to lowest, whereas our are from + # lowest to highest, it does not matter. + if self.k_seasonal_ar > 0: + reduced_polynomial_ar = -np.polymul( + self._polynomial_ar, self._polynomial_seasonal_ar + ) + else: + reduced_polynomial_ar = -self._polynomial_ar + if self.k_seasonal_ma > 0: + reduced_polynomial_ma = np.polymul( + self._polynomial_ma, self._polynomial_seasonal_ma + ) + else: + reduced_polynomial_ma = self._polynomial_ma + + # Observation intercept + # Exogenous data with MLE estimation of parameters enters through a + # time-varying observation intercept (is equivalent to simply + # subtracting it out of the endogenous variable first) + if self.mle_regression: + self.ssm['obs_intercept'] = np.dot(self.exog, params_exog)[None, :] + + # State intercept (Harvey) or additional observation intercept + # (Hamilton) + # SARIMA trend enters through the a time-varying state intercept, + # associated with the first row of the stationary component of the + # state vector (i.e. the first element of the state vector following + # any differencing elements) + if self.k_trend > 0: + data = np.dot(self._trend_data, params_trend).astype(params.dtype) + if not self.hamilton_representation: + self.ssm['state_intercept', self._k_states_diff, :] = data + else: + # The way the trend enters in the Hamilton representation means + # that the parameter is not an ``intercept'' but instead the + # mean of the process. The trend values in `data` are meant for + # an intercept, and so must be transformed to represent the + # mean instead + if self.hamilton_representation: + data /= np.sum(-reduced_polynomial_ar) + + # If we already set the observation intercept for MLE + # regression, just add to it + if self.mle_regression: + self.ssm.obs_intercept += data[None, :] + # Otherwise set it directly + else: + self.ssm['obs_intercept'] = data[None, :] + + # Observation covariance matrix + if self.measurement_error: + self.ssm['obs_cov', 0, 0] = params_measurement_variance + + # Transition matrix + if self.k_ar > 0 or self.k_seasonal_ar > 0: + self.ssm[self.transition_ar_params_idx] = reduced_polynomial_ar[1:] + elif not self.ssm.transition.dtype == params.dtype: + # This is required if the transition matrix is not really in use + # (e.g. for an MA(q) process) so that it's dtype never changes as + # the parameters' dtype changes. This changes the dtype manually. + self.ssm['transition'] = self.ssm['transition'].real.astype( + params.dtype) + + # Selection matrix (Harvey) or Design matrix (Hamilton) + if self.k_ma > 0 or self.k_seasonal_ma > 0: + if not self.hamilton_representation: + self.ssm[self.selection_ma_params_idx] = ( + reduced_polynomial_ma[1:] + ) + else: + self.ssm[self.design_ma_params_idx] = reduced_polynomial_ma[1:] + + # State covariance matrix + if self.k_posdef > 0: + if not self.concentrate_scale: + self['state_cov', 0, 0] = params_variance + if self.state_regression and self.time_varying_regression: + self.ssm[self._exog_variance_idx] = params_exog_variance + + return params + + +class SARIMAXResults(MLEResults): + """ + Class to hold results from fitting an SARIMAX model. + + Parameters + ---------- + model : SARIMAX instance + The fitted model instance + + Attributes + ---------- + specification : dictionary + Dictionary including all attributes from the SARIMAX model instance. + polynomial_ar : array + Array containing autoregressive lag polynomial coefficients, + ordered from lowest degree to highest. Initialized with ones, unless + a coefficient is constrained to be zero (in which case it is zero). + polynomial_ma : array + Array containing moving average lag polynomial coefficients, + ordered from lowest degree to highest. Initialized with ones, unless + a coefficient is constrained to be zero (in which case it is zero). + polynomial_seasonal_ar : array + Array containing seasonal autoregressive lag polynomial coefficients, + ordered from lowest degree to highest. Initialized with ones, unless + a coefficient is constrained to be zero (in which case it is zero). + polynomial_seasonal_ma : array + Array containing seasonal moving average lag polynomial coefficients, + ordered from lowest degree to highest. Initialized with ones, unless + a coefficient is constrained to be zero (in which case it is zero). + polynomial_trend : array + Array containing trend polynomial coefficients, ordered from lowest + degree to highest. Initialized with ones, unless a coefficient is + constrained to be zero (in which case it is zero). + model_orders : list of int + The orders of each of the polynomials in the model. + param_terms : list of str + List of parameters actually included in the model, in sorted order. + + See Also + -------- + statsmodels.tsa.statespace.kalman_filter.FilterResults + statsmodels.tsa.statespace.mlemodel.MLEResults + """ + def __init__(self, model, params, filter_results, cov_type='opg', + **kwargs): + super(SARIMAXResults, self).__init__(model, params, filter_results, + cov_type, **kwargs) + + self.df_resid = np.inf # attribute required for wald tests + + # Save _init_kwds + self._init_kwds = self.model._get_init_kwds() + + # Save model specification + self.specification = Bunch(**{ + # Set additional model parameters + 'seasonal_periods': self.model.seasonal_periods, + 'measurement_error': self.model.measurement_error, + 'time_varying_regression': self.model.time_varying_regression, + 'simple_differencing': self.model.simple_differencing, + 'enforce_stationarity': self.model.enforce_stationarity, + 'enforce_invertibility': self.model.enforce_invertibility, + 'hamilton_representation': self.model.hamilton_representation, + 'concentrate_scale': self.model.concentrate_scale, + + 'order': self.model.order, + 'seasonal_order': self.model.seasonal_order, + + # Model order + 'k_diff': self.model.k_diff, + 'k_seasonal_diff': self.model.k_seasonal_diff, + 'k_ar': self.model.k_ar, + 'k_ma': self.model.k_ma, + 'k_seasonal_ar': self.model.k_seasonal_ar, + 'k_seasonal_ma': self.model.k_seasonal_ma, + + # Param Numbers + 'k_ar_params': self.model.k_ar_params, + 'k_ma_params': self.model.k_ma_params, + + # Trend / Regression + 'trend': self.model.trend, + 'k_trend': self.model.k_trend, + 'k_exog': self.model.k_exog, + + 'mle_regression': self.model.mle_regression, + 'state_regression': self.model.state_regression, + }) + + # Polynomials + self.polynomial_trend = self.model._polynomial_trend + self.polynomial_ar = self.model._polynomial_ar + self.polynomial_ma = self.model._polynomial_ma + self.polynomial_seasonal_ar = self.model._polynomial_seasonal_ar + self.polynomial_seasonal_ma = self.model._polynomial_seasonal_ma + self.polynomial_reduced_ar = np.polymul( + self.polynomial_ar, self.polynomial_seasonal_ar + ) + self.polynomial_reduced_ma = np.polymul( + self.polynomial_ma, self.polynomial_seasonal_ma + ) + + # Distinguish parameters + self.model_orders = self.model.model_orders + self.param_terms = self.model.param_terms + start = end = 0 + for name in self.param_terms: + if name == 'ar': + k = self.model.k_ar_params + elif name == 'ma': + k = self.model.k_ma_params + elif name == 'seasonal_ar': + k = self.model.k_seasonal_ar_params + elif name == 'seasonal_ma': + k = self.model.k_seasonal_ma_params + else: + k = self.model_orders[name] + end += k + setattr(self, '_params_%s' % name, self.params[start:end]) + start += k + + # Handle removing data + self._data_attr_model.extend(['orig_endog', 'orig_exog']) + + @cache_readonly + def arroots(self): + """ + (array) Roots of the reduced form autoregressive lag polynomial + """ + return np.roots(self.polynomial_reduced_ar)**-1 + + @cache_readonly + def maroots(self): + """ + (array) Roots of the reduced form moving average lag polynomial + """ + return np.roots(self.polynomial_reduced_ma)**-1 + + @cache_readonly + def arfreq(self): + """ + (array) Frequency of the roots of the reduced form autoregressive + lag polynomial + """ + z = self.arroots + if not z.size: + return + return np.arctan2(z.imag, z.real) / (2 * np.pi) + + @cache_readonly + def mafreq(self): + """ + (array) Frequency of the roots of the reduced form moving average + lag polynomial + """ + z = self.maroots + if not z.size: + return + return np.arctan2(z.imag, z.real) / (2 * np.pi) + + @cache_readonly + def arparams(self): + """ + (array) Autoregressive parameters actually estimated in the model. + Does not include seasonal autoregressive parameters (see + `seasonalarparams`) or parameters whose values are constrained to be + zero. + """ + return self._params_ar + + @cache_readonly + def seasonalarparams(self): + """ + (array) Seasonal autoregressive parameters actually estimated in the + model. Does not include nonseasonal autoregressive parameters (see + `arparams`) or parameters whose values are constrained to be zero. + """ + return self._params_seasonal_ar + + @cache_readonly + def maparams(self): + """ + (array) Moving average parameters actually estimated in the model. + Does not include seasonal moving average parameters (see + `seasonalmaparams`) or parameters whose values are constrained to be + zero. + """ + return self._params_ma + + @cache_readonly + def seasonalmaparams(self): + """ + (array) Seasonal moving average parameters actually estimated in the + model. Does not include nonseasonal moving average parameters (see + `maparams`) or parameters whose values are constrained to be zero. + """ + return self._params_seasonal_ma + + def get_prediction(self, start=None, end=None, dynamic=False, index=None, + exog=None, **kwargs): + """ + In-sample prediction and out-of-sample forecasting + + Parameters + ---------- + start : int, str, or datetime, optional + Zero-indexed observation number at which to start forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. Default is the the zeroth observation. + end : int, str, or datetime, optional + Zero-indexed observation number at which to end forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. However, if the dates index does not + have a fixed frequency, end must be an integer index if you + want out of sample prediction. Default is the last observation in + the sample. + exog : array_like, optional + If the model includes exogenous regressors, you must provide + exactly enough out-of-sample values for the exogenous variables if + end is beyond the last observation in the sample. + dynamic : boolean, int, str, or datetime, optional + Integer offset relative to `start` at which to begin dynamic + prediction. Can also be an absolute date string to parse or a + datetime type (these are not interpreted as offsets). + Prior to this observation, true endogenous values will be used for + prediction; starting with this observation and continuing through + the end of prediction, forecasted endogenous values will be used + instead. + full_results : boolean, optional + If True, returns a FilterResults instance; if False returns a + tuple with forecasts, the forecast errors, and the forecast error + covariance matrices. Default is False. + **kwargs + Additional arguments may required for forecasting beyond the end + of the sample. See `FilterResults.predict` for more details. + + Returns + ------- + forecast : array + Array of out of sample forecasts. + """ + if start is None: + start = self.model._index[0] + + # Handle start, end, dynamic + _start, _end, _out_of_sample, prediction_index = ( + self.model._get_prediction_index(start, end, index, silent=True)) + + # Handle exogenous parameters + if _out_of_sample and (self.model.k_exog + self.model.k_trend > 0): + # Create a new faux SARIMAX model for the extended dataset + nobs = self.model.data.orig_endog.shape[0] + _out_of_sample + endog = np.zeros((nobs, self.model.k_endog)) + + if self.model.k_exog > 0: + if exog is None: + raise ValueError('Out-of-sample forecasting in a model' + ' with a regression component requires' + ' additional exogenous values via the' + ' `exog` argument.') + exog = np.array(exog) + required_exog_shape = (_out_of_sample, self.model.k_exog) + if not exog.shape == required_exog_shape: + raise ValueError('Provided exogenous values are not of the' + ' appropriate shape. Required %s, got %s.' + % (str(required_exog_shape), + str(exog.shape))) + exog = np.c_[self.model.data.orig_exog.T, exog.T].T + + model_kwargs = self._init_kwds.copy() + model_kwargs['exog'] = exog + model = SARIMAX(endog, **model_kwargs) + model.update(self.params) + + # Set the kwargs with the update time-varying state space + # representation matrices + for name in self.filter_results.shapes.keys(): + if name == 'obs': + continue + mat = getattr(model.ssm, name) + if mat.shape[-1] > 1: + if len(mat.shape) == 2: + kwargs[name] = mat[:, -_out_of_sample:] + else: + kwargs[name] = mat[:, :, -_out_of_sample:] + elif self.model.k_exog == 0 and exog is not None: + warn('Exogenous array provided to predict, but additional data not' + ' required. `exog` argument ignored.', ValueWarning) + + return super(SARIMAXResults, self).get_prediction( + start=start, end=end, dynamic=dynamic, index=index, exog=exog, + **kwargs) + + def summary(self, alpha=.05, start=None): + # Create the model name + + # See if we have an ARIMA component + order = '' + if self.model.k_ar + self.model.k_diff + self.model.k_ma > 0: + if self.model.k_ar == self.model.k_ar_params: + order_ar = self.model.k_ar + else: + order_ar = tuple(self.polynomial_ar.nonzero()[0][1:]) + if self.model.k_ma == self.model.k_ma_params: + order_ma = self.model.k_ma + else: + order_ma = tuple(self.polynomial_ma.nonzero()[0][1:]) + # If there is simple differencing, then that is reflected in the + # dependent variable name + k_diff = 0 if self.model.simple_differencing else self.model.k_diff + order = '(%s, %d, %s)' % (order_ar, k_diff, order_ma) + # See if we have an SARIMA component + seasonal_order = '' + has_seasonal = ( + self.model.k_seasonal_ar + + self.model.k_seasonal_diff + + self.model.k_seasonal_ma + ) > 0 + if has_seasonal: + if self.model.k_ar == self.model.k_ar_params: + order_seasonal_ar = ( + int(self.model.k_seasonal_ar / self.model.seasonal_periods) + ) + else: + order_seasonal_ar = ( + tuple(self.polynomial_seasonal_ar.nonzero()[0][1:]) + ) + if self.model.k_ma == self.model.k_ma_params: + order_seasonal_ma = ( + int(self.model.k_seasonal_ma / self.model.seasonal_periods) + ) + else: + order_seasonal_ma = ( + tuple(self.polynomial_seasonal_ma.nonzero()[0][1:]) + ) + # If there is simple differencing, then that is reflected in the + # dependent variable name + k_seasonal_diff = self.model.k_seasonal_diff + if self.model.simple_differencing: + k_seasonal_diff = 0 + seasonal_order = ('(%s, %d, %s, %d)' % + (str(order_seasonal_ar), k_seasonal_diff, + str(order_seasonal_ma), + self.model.seasonal_periods)) + if not order == '': + order += 'x' + model_name = ( + '%s%s%s' % (self.model.__class__.__name__, order, seasonal_order) + ) + return super(SARIMAXResults, self).summary( + alpha=alpha, start=start, model_name=model_name + ) + summary.__doc__ = MLEResults.summary.__doc__ + + +class SARIMAXResultsWrapper(MLEResultsWrapper): + _attrs = {} + _wrap_attrs = wrap.union_dicts(MLEResultsWrapper._wrap_attrs, + _attrs) + _methods = {} + _wrap_methods = wrap.union_dicts(MLEResultsWrapper._wrap_methods, + _methods) +wrap.populate_wrapper(SARIMAXResultsWrapper, SARIMAXResults) # noqa:E305 diff --git a/statsmodels/tsa/statespace/simulation_smoother.py b/statsmodels/tsa/statespace/simulation_smoother.py new file mode 100644 index 0000000..f174d37 --- /dev/null +++ b/statsmodels/tsa/statespace/simulation_smoother.py @@ -0,0 +1,587 @@ +""" +State Space Representation, Kalman Filter, Smoother, and Simulation Smoother + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import numpy as np +from .kalman_smoother import KalmanSmoother +from . import tools + +SIMULATION_STATE = 0x01 +SIMULATION_DISTURBANCE = 0x04 +SIMULATION_ALL = ( + SIMULATION_STATE | SIMULATION_DISTURBANCE +) + + +class SimulationSmoother(KalmanSmoother): + r""" + State space representation of a time series process, with Kalman filter + and smoother, and with simulation smoother. + + Parameters + ---------- + k_endog : array_like or integer + The observed time-series process :math:`y` if array like or the + number of variables in the process if an integer. + k_states : int + The dimension of the unobserved state process. + k_posdef : int, optional + The dimension of a guaranteed positive definite covariance matrix + describing the shocks in the measurement equation. Must be less than + or equal to `k_states`. Default is `k_states`. + simulation_smooth_results_class : class, optional + Default results class to use to save output of simulation smoothing. + Default is `SimulationSmoothResults`. If specified, class must extend + from `SimulationSmoothResults`. + simulation_smoother_classes : dict, optional + Dictionary with BLAS prefixes as keys and classes as values. + **kwargs + Keyword arguments may be used to provide default values for state space + matrices, for Kalman filtering options, for Kalman smoothing + options, or for Simulation smoothing options. + See `Representation`, `KalmanFilter`, and `KalmanSmoother` for more + details. + """ + + simulation_outputs = [ + 'simulate_state', 'simulate_disturbance', 'simulate_all' + ] + + def __init__(self, k_endog, k_states, k_posdef=None, + simulation_smooth_results_class=None, + simulation_smoother_classes=None, **kwargs): + super(SimulationSmoother, self).__init__( + k_endog, k_states, k_posdef, **kwargs + ) + + if simulation_smooth_results_class is None: + simulation_smooth_results_class = SimulationSmoothResults + self.simulation_smooth_results_class = simulation_smooth_results_class + + self.prefix_simulation_smoother_map = ( + simulation_smoother_classes + if simulation_smoother_classes is not None + else tools.prefix_simulation_smoother_map.copy()) + + # Holder for an model-level simulation smoother objects, to use in + # simulating new time series. + self._simulators = {} + + def get_simulation_output(self, simulation_output=None, + simulate_state=None, simulate_disturbance=None, + simulate_all=None, **kwargs): + r""" + Get simulation output bitmask + + Helper method to get final simulation output bitmask from a set of + optional arguments including the bitmask itself and possibly boolean + flags. + + Parameters + ---------- + simulation_output : integer, optional + Simulation output bitmask. If this is specified, it is simply + returned and the other arguments are ignored. + simulate_state : boolean, optional + Whether or not to include the state in the simulation output. + simulate_disturbance : boolean, optional + Whether or not to include the state and observation disturbances + in the simulation output. + simulate_all : boolean, optional + Whether or not to include all simulation output. + \*\*kwargs + Additional keyword arguments. Present so that calls to this method + can use \*\*kwargs without clearing out additional arguments. + """ + # If we don't explicitly have simulation_output, try to get it from + # kwargs + if simulation_output is None: + simulation_output = 0 + + if simulate_state: + simulation_output |= SIMULATION_STATE + if simulate_disturbance: + simulation_output |= SIMULATION_DISTURBANCE + if simulate_all: + simulation_output |= SIMULATION_ALL + + # Handle case of no information in kwargs + if simulation_output == 0: + + # If some arguments were passed, but we still don't have any + # simulation output, raise an exception + argument_set = not all([ + simulate_state is None, simulate_disturbance is None, + simulate_all is None + ]) + if argument_set: + raise ValueError("Invalid simulation output options:" + " given options would result in no" + " output.") + + # Otherwise set simulation output to be the same as smoother + # output + simulation_output = self.smoother_output + + return simulation_output + + def _simulate(self, nsimulations, measurement_shocks, state_shocks, + initial_state): + # Initialize the filter and representation + prefix, dtype, create_smoother, create_filter, create_statespace = ( + self._initialize_smoother()) + + # Initialize the state + self._initialize_state(prefix=prefix) + + # Create the simulator if necessary + if (prefix not in self._simulators or + not nsimulations == self._simulators[prefix].nobs): + + simulation_output = 0 + # Kalman smoother parameters + smoother_output = -1 + # Kalman filter parameters + filter_method = self.filter_method + inversion_method = self.inversion_method + stability_method = self.stability_method + conserve_memory = self.conserve_memory + filter_timing = self.filter_timing + loglikelihood_burn = self.loglikelihood_burn + tolerance = self.tolerance + + # Create a new simulation smoother object + cls = self.prefix_simulation_smoother_map[prefix] + self._simulators[prefix] = cls( + self._statespaces[prefix], + filter_method, inversion_method, stability_method, + conserve_memory, filter_timing, tolerance, loglikelihood_burn, + smoother_output, simulation_output, nsimulations + ) + simulator = self._simulators[prefix] + + # Set the disturbance variates + disturbance_variates = np.atleast_1d(np.array( + np.r_[measurement_shocks.ravel(), state_shocks.ravel()], + dtype=self.dtype + ).squeeze()) + simulator.set_disturbance_variates(disturbance_variates, + pretransformed=True) + + # Set the intial state vector + initial_state = np.atleast_1d(np.array( + initial_state, dtype=self.dtype + ).squeeze()) + simulator.set_initial_state(initial_state) + + # Perform simulation smoothing + # Note: simulation_output=-1 corresponds to whatever was setup when + # the simulation smoother was constructed + simulator.simulate(-1) + + simulated_obs = np.array(simulator.generated_obs, copy=True) + simulated_state = np.array(simulator.generated_state, copy=True) + + return ( + simulated_obs[:, :nsimulations].T, + simulated_state[:, :nsimulations].T + ) + + def simulation_smoother(self, simulation_output=None, + results_class=None, prefix=None, **kwargs): + r""" + Retrieve a simulation smoother for the statespace model. + + Parameters + ---------- + simulation_output : int, optional + Determines which simulation smoother output is calculated. + Default is all (including state and disturbances). + simulation_smooth_results_class : class, optional + Default results class to use to save output of simulation + smoothing. Default is `SimulationSmoothResults`. If specified, + class must extend from `SimulationSmoothResults`. + prefix : string + The prefix of the datatype. Usually only used internally. + **kwargs + Additional keyword arguments, used to set the simulation output. + See `set_simulation_output` for more details. + + Returns + ------- + SimulationSmoothResults + """ + + # Set the class to be the default results class, if None provided + if results_class is None: + results_class = self.simulation_smooth_results_class + + # Instantiate a new results object + if not issubclass(results_class, SimulationSmoothResults): + raise ValueError('Invalid results class provided.') + + # Make sure we have the required Statespace representation + prefix, dtype, create_smoother, create_filter, create_statespace = ( + self._initialize_smoother()) + + # Simulation smoother parameters + simulation_output = self.get_simulation_output(simulation_output, + **kwargs) + + # Kalman smoother parameters + smoother_output = kwargs.get('smoother_output', simulation_output) + + # Kalman filter parameters + filter_method = kwargs.get('filter_method', self.filter_method) + inversion_method = kwargs.get('inversion_method', + self.inversion_method) + stability_method = kwargs.get('stability_method', + self.stability_method) + conserve_memory = kwargs.get('conserve_memory', + self.conserve_memory) + filter_timing = kwargs.get('filter_timing', + self.filter_timing) + loglikelihood_burn = kwargs.get('loglikelihood_burn', + self.loglikelihood_burn) + tolerance = kwargs.get('tolerance', self.tolerance) + + # Create a new simulation smoother object + cls = self.prefix_simulation_smoother_map[prefix] + simulation_smoother = cls( + self._statespaces[prefix], + filter_method, inversion_method, stability_method, conserve_memory, + filter_timing, tolerance, loglikelihood_burn, smoother_output, + simulation_output + ) + + # Create results object + results = results_class(self, simulation_smoother) + + return results + + +class SimulationSmoothResults(object): + r""" + Results from applying the Kalman smoother and/or filter to a state space + model. + + Parameters + ---------- + model : Representation + A Statespace representation + simulation_smoother : {{prefix}}SimulationSmoother object + The Cython simulation smoother object with which to simulation smooth. + + Attributes + ---------- + model : Representation + A Statespace representation + dtype : dtype + Datatype of representation matrices + prefix : str + BLAS prefix of representation matrices + simulation_output : integer + Bitmask controlling simulation output. + simulate_state : boolean + Flag for if the state is included in simulation output. + simulate_disturbance : boolean + Flag for if the state and observation disturbances are included in + simulation output. + simulate_all : boolean + Flag for if simulation output should include everything. + generated_measurement_disturbance : array + Measurement disturbance variates used to genereate the observation + vector. + generated_state_disturbance : array + State disturbance variates used to genereate the state and + observation vectors. + generated_obs : array + Generated observation vector produced as a byproduct of simulation + smoothing. + generated_state : array + Generated state vector produced as a byproduct of simulation smoothing. + simulated_state : array + Simulated state. + simulated_measurement_disturbance : array + Simulated measurement disturbance. + simulated_state_disturbance : array + Simulated state disturbance. + """ + + def __init__(self, model, simulation_smoother): + self.model = model + self.prefix = model.prefix + self.dtype = model.dtype + self._simulation_smoother = simulation_smoother + + # Output + self._generated_measurement_disturbance = None + self._generated_state_disturbance = None + self._generated_obs = None + self._generated_state = None + self._simulated_state = None + self._simulated_measurement_disturbance = None + self._simulated_state_disturbance = None + + @property + def simulation_output(self): + return self._simulation_smoother.simulation_output + + @simulation_output.setter + def simulation_output(self, value): + self._simulation_smoother.simulation_output = value + + @property + def simulate_state(self): + return bool(self.simulation_output & SIMULATION_STATE) + + @simulate_state.setter + def simulate_state(self, value): + if bool(value): + self.simulation_output = self.simulation_output | SIMULATION_STATE + else: + self.simulation_output = self.simulation_output & ~SIMULATION_STATE + + @property + def simulate_disturbance(self): + return bool(self.simulation_output & SIMULATION_DISTURBANCE) + + @simulate_disturbance.setter + def simulate_disturbance(self, value): + if bool(value): + self.simulation_output = ( + self.simulation_output | SIMULATION_DISTURBANCE) + else: + self.simulation_output = ( + self.simulation_output & ~SIMULATION_DISTURBANCE) + + @property + def simulate_all(self): + return bool(self.simulation_output & SIMULATION_ALL) + + @simulate_all.setter + def simulate_all(self, value): + if bool(value): + self.simulation_output = self.simulation_output | SIMULATION_ALL + else: + self.simulation_output = self.simulation_output & ~SIMULATION_ALL + + @property + def generated_measurement_disturbance(self): + """ + Randomly drawn measurement disturbance variates, used to construct + `generated_obs`. + + Notes + ----- + + .. math:: + \varepsilon_t^+ ~ N(0, H_t) + + If `disturbance_variates` were provided to the `simulate()` method, + then this returns those variates (which were N(0,1)) transformed to the + distribution above. + + """ + if self._generated_measurement_disturbance is None: + end = self.model.nobs * self.model.k_endog + self._generated_measurement_disturbance = np.array( + self._simulation_smoother.disturbance_variates[:end], + copy=True).reshape(self.model.nobs, self.model.k_endog) + return self._generated_measurement_disturbance + + @property + def generated_state_disturbance(self): + r""" + Randomly drawn state disturbance variates, used to construct + `generated_state` and `generated_obs`. + + Notes + ----- + + .. math:: + + \eta_t^+ ~ N(0, Q_t) + + If `disturbance_variates` were provided to the `simulate()` method, + then this returns those variates (which were N(0,1)) transformed to the + distribution above. + + """ + if self._generated_state_disturbance is None: + start = self.model.nobs * self.model.k_endog + self._generated_state_disturbance = np.array( + self._simulation_smoother.disturbance_variates[start:], + copy=True).reshape(self.model.nobs, self.model.k_posdef) + return self._generated_state_disturbance + + @property + def generated_obs(self): + r""" + Generated vector of observations by iterating on the observation and + transition equations, given a random initial state draw and random + disturbance draws. + + Notes + ----- + + .. math:: + + y_t^+ = d_t + Z_t \alpha_t^+ + \varepsilon_t^+ + + """ + if self._generated_obs is None: + self._generated_obs = np.array( + self._simulation_smoother.generated_obs, copy=True + ) + return self._generated_obs + + @property + def generated_state(self): + r""" + Generated vector of states by iterating on the transition equation, + given a random initial state draw and random disturbance draws. + + Notes + ----- + + .. math:: + + \alpha_{t+1}^+ = c_t + T_t \alpha_t^+ + \eta_t^+ + + """ + if self._generated_state is None: + self._generated_state = np.array( + self._simulation_smoother.generated_state, copy=True + ) + return self._generated_state + + @property + def simulated_state(self): + r""" + Random draw of the state vector from its conditional distribution. + + Notes + ----- + + .. math:: + + \alpha ~ p(\alpha \mid Y_n) + + """ + if self._simulated_state is None: + self._simulated_state = np.array( + self._simulation_smoother.simulated_state, copy=True + ) + return self._simulated_state + + @property + def simulated_measurement_disturbance(self): + r""" + Random draw of the measurement disturbance vector from its conditional + distribution. + + Notes + ----- + + .. math:: + + \varepsilon ~ N(\hat \varepsilon, Var(\hat \varepsilon \mid Y_n)) + + """ + if self._simulated_measurement_disturbance is None: + self._simulated_measurement_disturbance = np.array( + self._simulation_smoother.simulated_measurement_disturbance, + copy=True + ) + return self._simulated_measurement_disturbance + + @property + def simulated_state_disturbance(self): + r""" + Random draw of the state disturbance vector from its conditional + distribution. + + Notes + ----- + + .. math:: + + \eta ~ N(\hat \eta, Var(\hat \eta \mid Y_n)) + + """ + if self._simulated_state_disturbance is None: + self._simulated_state_disturbance = np.array( + self._simulation_smoother.simulated_state_disturbance, + copy=True + ) + return self._simulated_state_disturbance + + def simulate(self, simulation_output=-1, disturbance_variates=None, + initial_state_variates=None, pretransformed_variates=False): + r""" + Perform simulation smoothing + + Does not return anything, but populates the object's `simulated_*` + attributes, as specified by simulation output. + + Parameters + ---------- + simulation_output : integer, optional + Bitmask controlling simulation output. Default is to use the + simulation output defined in object initialization. + disturbance_variates : array_likes, optional + Random values to use as disturbance variates, distributed standard + Normal. Usually only specified if results are to be replicated + (e.g. to enforce a seed) or for testing. If not specified, random + variates are drawn. + initial_state_variates : array_likes, optional + Random values to use as initial state variates. Usually only + specified if results are to be replicated (e.g. to enforce a seed) + or for testing. If not specified, random variates are drawn. + """ + # Clear any previous output + self._generated_measurement_disturbance = None + self._generated_state_disturbance = None + self._generated_state = None + self._generated_obs = None + self._generated_state = None + self._simulated_state = None + self._simulated_measurement_disturbance = None + self._simulated_state_disturbance = None + + # Re-initialize the _statespace representation + prefix, dtype, create_smoother, create_filter, create_statespace = ( + self.model._initialize_smoother()) + + # Initialize the state + self.model._initialize_state(prefix=prefix) + + # Draw the (independent) random variates for disturbances in the + # simulation + if disturbance_variates is not None: + self._simulation_smoother.set_disturbance_variates( + np.array(disturbance_variates, dtype=self.dtype), + pretransformed=pretransformed_variates + ) + else: + self._simulation_smoother.draw_disturbance_variates() + + # Draw the (independent) random variates for the initial states in the + # simulation + if initial_state_variates is not None: + self._simulation_smoother.set_initial_state_variates( + np.array(initial_state_variates, dtype=self.dtype), + pretransformed=pretransformed_variates + ) + else: + self._simulation_smoother.draw_initial_state_variates() + + # Perform simulation smoothing + # Note: simulation_output=-1 corresponds to whatever was setup when + # the simulation smoother was constructed + self._simulation_smoother.simulate(simulation_output) diff --git a/statsmodels/tsa/statespace/structural.py b/statsmodels/tsa/statespace/structural.py new file mode 100644 index 0000000..3121e20 --- /dev/null +++ b/statsmodels/tsa/statespace/structural.py @@ -0,0 +1,1830 @@ +""" +Univariate structural time series models + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +from warnings import warn +from collections import OrderedDict + +import numpy as np + +from statsmodels.tools.tools import Bunch +from statsmodels.tools.sm_exceptions import (ValueWarning, OutputWarning, + SpecificationWarning) +import statsmodels.base.wrapper as wrap + +from statsmodels.tsa.filters.hp_filter import hpfilter +from statsmodels.tsa.tsatools import lagmat + +from .mlemodel import MLEModel, MLEResults, MLEResultsWrapper +from .initialization import Initialization +from .tools import ( + companion_matrix, constrain_stationary_univariate, + unconstrain_stationary_univariate, + prepare_exog +) + +_mask_map = { + 1: 'irregular', + 2: 'fixed intercept', + 3: 'deterministic constant', + 6: 'random walk', + 7: 'local level', + 8: 'fixed slope', + 11: 'deterministic trend', + 14: 'random walk with drift', + 15: 'local linear deterministic trend', + 31: 'local linear trend', + 27: 'smooth trend', + 26: 'random trend' +} + + +class UnobservedComponents(MLEModel): + r""" + Univariate unobserved components time series model + + These are also known as structural time series models, and decompose a + (univariate) time series into trend, seasonal, cyclical, and irregular + components. + + Parameters + ---------- + + level : bool or string, optional + Whether or not to include a level component. Default is False. Can also + be a string specification of the level / trend component; see Notes + for available model specification strings. + trend : bool, optional + Whether or not to include a trend component. Default is False. If True, + `level` must also be True. + seasonal : int or None, optional + The period of the seasonal component, if any. Default is None. + freq_seasonal: list of dicts or None, optional. + Whether (and how) to model seasonal component(s) with trig. functions. + If specified, there is one dictionary for each frequency-domain + seasonal component. Each dictionary must have the key, value pair for + 'period' -- integer and may have a key, value pair for + 'harmonics' -- integer. If 'harmonics' is not specified in any of the + dictionaries, it defaults to the floor of period/2. + cycle : bool, optional + Whether or not to include a cycle component. Default is False. + autoregressive : int or None, optional + The order of the autoregressive component. Default is None. + exog : array_like or None, optional + Exogenous variables. + irregular : bool, optional + Whether or not to include an irregular component. Default is False. + stochastic_level : bool, optional + Whether or not any level component is stochastic. Default is False. + stochastic_trend : bool, optional + Whether or not any trend component is stochastic. Default is False. + stochastic_seasonal : bool, optional + Whether or not any seasonal component is stochastic. Default is True. + stochastic_freq_seasonal: list of bools, optional + Whether or not each seasonal component(s) is (are) stochastic. Default + is True for each component. The list should be of the same length as + freq_seasonal. + stochastic_cycle : bool, optional + Whether or not any cycle component is stochastic. Default is False. + damped_cycle : bool, optional + Whether or not the cycle component is damped. Default is False. + cycle_period_bounds : tuple, optional + A tuple with lower and upper allowed bounds for the period of the + cycle. If not provided, the following default bounds are used: + (1) if no date / time information is provided, the frequency is + constrained to be between zero and :math:`\pi`, so the period is + constrained to be in [0.5, infinity]. + (2) If the date / time information is provided, the default bounds + allow the cyclical component to be between 1.5 and 12 years; depending + on the frequency of the endogenous variable, this will imply different + specific bounds. + + Notes + ----- + + These models take the general form (see [1]_ Chapter 3.2 for all details) + + .. math:: + + y_t = \mu_t + \gamma_t + c_t + \varepsilon_t + + where :math:`y_t` refers to the observation vector at time :math:`t`, + :math:`\mu_t` refers to the trend component, :math:`\gamma_t` refers to the + seasonal component, :math:`c_t` refers to the cycle, and + :math:`\varepsilon_t` is the irregular. The modeling details of these + components are given below. + + **Trend** + + The trend component is a dynamic extension of a regression model that + includes an intercept and linear time-trend. It can be written: + + .. math:: + + \mu_t = \mu_{t-1} + \beta_{t-1} + \eta_{t-1} \\ + \beta_t = \beta_{t-1} + \zeta_{t-1} + + where the level is a generalization of the intercept term that can + dynamically vary across time, and the trend is a generalization of the + time-trend such that the slope can dynamically vary across time. + + Here :math:`\eta_t \sim N(0, \sigma_\eta^2)` and + :math:`\zeta_t \sim N(0, \sigma_\zeta^2)`. + + For both elements (level and trend), we can consider models in which: + + - The element is included vs excluded (if the trend is included, there must + also be a level included). + - The element is deterministic vs stochastic (i.e. whether or not the + variance on the error term is confined to be zero or not) + + The only additional parameters to be estimated via MLE are the variances of + any included stochastic components. + + The level/trend components can be specified using the boolean keyword + arguments `level`, `stochastic_level`, `trend`, etc., or all at once as a + string argument to `level`. The following table shows the available + model specifications: + + +----------------------------------+--------------------------------------+--------------------+--------------------------------------------------+ + | Model name | Full string syntax | Abbreviated syntax | Model | + +==================================+======================================+====================+==================================================+ + | No trend | `'irregular'` | `'ntrend'` | .. math:: y_t &= \varepsilon_t | + +----------------------------------+--------------------------------------+--------------------+--------------------------------------------------+ + | Fixed intercept | `'fixed intercept'` | | .. math:: y_t &= \mu | + +----------------------------------+--------------------------------------+--------------------+--------------------------------------------------+ + | Deterministic constant | `'deterministic constant'` | `'dconstant'` | .. math:: y_t &= \mu + \varepsilon_t | + +----------------------------------+--------------------------------------+--------------------+--------------------------------------------------+ + | Local level | `'local level'` | `'llevel'` | .. math:: y_t &= \mu_t + \varepsilon_t \\ | + | | | | \mu_t &= \mu_{t-1} + \eta_t | + +----------------------------------+--------------------------------------+--------------------+--------------------------------------------------+ + | Random walk | `'random walk'` | `'rwalk'` | .. math:: y_t &= \mu_t \\ | + | | | | \mu_t &= \mu_{t-1} + \eta_t | + +----------------------------------+--------------------------------------+--------------------+--------------------------------------------------+ + | Fixed slope | `'fixed slope'` | | .. math:: y_t &= \mu_t \\ | + | | | | \mu_t &= \mu_{t-1} + \beta | + +----------------------------------+--------------------------------------+--------------------+--------------------------------------------------+ + | Deterministic trend | `'deterministic trend'` | `'dtrend'` | .. math:: y_t &= \mu_t + \varepsilon_t \\ | + | | | | \mu_t &= \mu_{t-1} + \beta | + +----------------------------------+--------------------------------------+--------------------+--------------------------------------------------+ + | Local linear deterministic trend | `'local linear deterministic trend'` | `'lldtrend'` | .. math:: y_t &= \mu_t + \varepsilon_t \\ | + | | | | \mu_t &= \mu_{t-1} + \beta + \eta_t | + +----------------------------------+--------------------------------------+--------------------+--------------------------------------------------+ + | Random walk with drift | `'random walk with drift'` | `'rwdrift'` | .. math:: y_t &= \mu_t \\ | + | | | | \mu_t &= \mu_{t-1} + \beta + \eta_t | + +----------------------------------+--------------------------------------+--------------------+--------------------------------------------------+ + | Local linear trend | `'local linear trend'` | `'lltrend'` | .. math:: y_t &= \mu_t + \varepsilon_t \\ | + | | | | \mu_t &= \mu_{t-1} + \beta_{t-1} + \eta_t \\ | + | | | | \beta_t &= \beta_{t-1} + \zeta_t | + +----------------------------------+--------------------------------------+--------------------+--------------------------------------------------+ + | Smooth trend | `'smooth trend'` | `'strend'` | .. math:: y_t &= \mu_t + \varepsilon_t \\ | + | | | | \mu_t &= \mu_{t-1} + \beta_{t-1} \\ | + | | | | \beta_t &= \beta_{t-1} + \zeta_t | + +----------------------------------+--------------------------------------+--------------------+--------------------------------------------------+ + | Random trend | `'random trend'` | `'rtrend'` | .. math:: y_t &= \mu_t \\ | + | | | | \mu_t &= \mu_{t-1} + \beta_{t-1} \\ | + | | | | \beta_t &= \beta_{t-1} + \zeta_t | + +----------------------------------+--------------------------------------+--------------------+--------------------------------------------------+ + + Following the fitting of the model, the unobserved level and trend + component time series are available in the results class in the + `level` and `trend` attributes, respectively. + + **Seasonal (Time-domain)** + + The seasonal component is modeled as: + + .. math:: + + \gamma_t = - \sum_{j=1}^{s-1} \gamma_{t+1-j} + \omega_t \\ + \omega_t \sim N(0, \sigma_\omega^2) + + The periodicity (number of seasons) is s, and the defining character is + that (without the error term), the seasonal components sum to zero across + one complete cycle. The inclusion of an error term allows the seasonal + effects to vary over time (if this is not desired, :math:`\sigma_\omega^2` + can be set to zero using the `stochastic_seasonal=False` keyword argument). + + This component results in one parameter to be selected via maximum + likelihood: :math:`\sigma_\omega^2`, and one parameter to be chosen, the + number of seasons `s`. + + Following the fitting of the model, the unobserved seasonal component + time series is available in the results class in the `seasonal` + attribute. + + ** Frequency-domain Seasonal** + + Each frequency-domain seasonal component is modeled as: + + .. math:: + + \gamma_t & = \sum_{j=1}^h \gamma_{j, t} \\ + \gamma_{j, t+1} & = \gamma_{j, t}\cos(\lambda_j) + + \gamma^{*}_{j, t}\sin(\lambda_j) + \omega_{j,t} \\ + \gamma^{*}_{j, t+1} & = -\gamma^{(1)}_{j, t}\sin(\lambda_j) + + \gamma^{*}_{j, t}\cos(\lambda_j) + + \omega^{*}_{j, t}, \\ + \omega^{*}_{j, t}, \omega_{j, t} & \sim N(0, \sigma_{\omega^2}) \\ + \lambda_j & = \frac{2 \pi j}{s} + + where j ranges from 1 to h. + + The periodicity (number of "seasons" in a "year") is s and the number of + harmonics is h. Note that h is configurable to be less than s/2, but + s/2 harmonics is sufficient to fully model all seasonal variations of + periodicity s. Like the time domain seasonal term (cf. Seasonal section, + above), the inclusion of the error terms allows for the seasonal effects to + vary over time. The argument stochastic_freq_seasonal can be used to set + one or more of the seasonal components of this type to be non-random, + meaning they will not vary over time. + + This component results in one parameter to be fitted using maximum + likelihood: :math:`\sigma_{\omega^2}`, and up to two parameters to be + chosen, the number of seasons s and optionally the number of harmonics + h, with :math:`1 \leq h \leq \floor(s/2)`. + + After fitting the model, each unobserved seasonal component modeled in the + frequency domain is available in the results class in the `freq_seasonal` + attribute. + + **Cycle** + + The cyclical component is intended to capture cyclical effects at time + frames much longer than captured by the seasonal component. For example, + in economics the cyclical term is often intended to capture the business + cycle, and is then expected to have a period between "1.5 and 12 years" + (see Durbin and Koopman). + + .. math:: + + c_{t+1} & = \rho_c (\tilde c_t \cos \lambda_c t + + \tilde c_t^* \sin \lambda_c) + + \tilde \omega_t \\ + c_{t+1}^* & = \rho_c (- \tilde c_t \sin \lambda_c t + + \tilde c_t^* \cos \lambda_c) + + \tilde \omega_t^* \\ + + where :math:`\omega_t, \tilde \omega_t iid N(0, \sigma_{\tilde \omega}^2)` + + The parameter :math:`\lambda_c` (the frequency of the cycle) is an + additional parameter to be estimated by MLE. + + If the cyclical effect is stochastic (`stochastic_cycle=True`), then there + is another parameter to estimate (the variance of the error term - note + that both of the error terms here share the same variance, but are assumed + to have independent draws). + + If the cycle is damped (`damped_cycle=True`), then there is a third + parameter to estimate, :math:`\rho_c`. + + In order to achieve cycles with the appropriate frequencies, bounds are + imposed on the parameter :math:`\lambda_c` in estimation. These can be + controlled via the keyword argument `cycle_period_bounds`, which, if + specified, must be a tuple of bounds on the **period** `(lower, upper)`. + The bounds on the frequency are then calculated from those bounds. + + The default bounds, if none are provided, are selected in the following + way: + + 1. If no date / time information is provided, the frequency is + constrained to be between zero and :math:`\pi`, so the period is + constrained to be in :math:`[0.5, \infty]`. + 2. If the date / time information is provided, the default bounds + allow the cyclical component to be between 1.5 and 12 years; depending + on the frequency of the endogenous variable, this will imply different + specific bounds. + + Following the fitting of the model, the unobserved cyclical component + time series is available in the results class in the `cycle` + attribute. + + **Irregular** + + The irregular components are independent and identically distributed (iid): + + .. math:: + + \varepsilon_t \sim N(0, \sigma_\varepsilon^2) + + **Autoregressive Irregular** + + An autoregressive component (often used as a replacement for the white + noise irregular term) can be specified as: + + .. math:: + + \varepsilon_t = \rho(L) \varepsilon_{t-1} + \epsilon_t \\ + \epsilon_t \sim N(0, \sigma_\epsilon^2) + + In this case, the AR order is specified via the `autoregressive` keyword, + and the autoregressive coefficients are estimated. + + Following the fitting of the model, the unobserved autoregressive component + time series is available in the results class in the `autoregressive` + attribute. + + **Regression effects** + + Exogenous regressors can be pass to the `exog` argument. The regression + coefficients will be estimated by maximum likelihood unless + `mle_regression=False`, in which case the regression coefficients will be + included in the state vector where they are essentially estimated via + recursive OLS. + + If the regression_coefficients are included in the state vector, the + recursive estimates are available in the results class in the + `regression_coefficients` attribute. + + References + ---------- + .. [1] Durbin, James, and Siem Jan Koopman. 2012. + Time Series Analysis by State Space Methods: Second Edition. + Oxford University Press. + """ # noqa:E501 + + def __init__(self, endog, level=False, trend=False, seasonal=None, + freq_seasonal=None, cycle=False, autoregressive=None, + exog=None, irregular=False, + stochastic_level=False, + stochastic_trend=False, + stochastic_seasonal=True, + stochastic_freq_seasonal=None, + stochastic_cycle=False, + damped_cycle=False, cycle_period_bounds=None, + mle_regression=True, + **kwargs): + + # Model options + self.level = level + self.trend = trend + self.seasonal_periods = seasonal if seasonal is not None else 0 + self.seasonal = self.seasonal_periods > 0 + if freq_seasonal: + self.freq_seasonal_periods = [d['period'] for d in freq_seasonal] + self.freq_seasonal_harmonics = [d.get( + 'harmonics', int(np.floor(d['period'] / 2))) for + d in freq_seasonal] + else: + self.freq_seasonal_periods = [] + self.freq_seasonal_harmonics = [] + self.freq_seasonal = any(x > 0 for x in self.freq_seasonal_periods) + self.cycle = cycle + self.ar_order = autoregressive if autoregressive is not None else 0 + self.autoregressive = self.ar_order > 0 + self.irregular = irregular + + self.stochastic_level = stochastic_level + self.stochastic_trend = stochastic_trend + self.stochastic_seasonal = stochastic_seasonal + if stochastic_freq_seasonal is None: + self.stochastic_freq_seasonal = [True] * len( + self.freq_seasonal_periods) + else: + if len(stochastic_freq_seasonal) != len(freq_seasonal): + raise ValueError( + "Length of stochastic_freq_seasonal must equal length" + " of freq_seasonal: {!r} vs {!r}".format( + len(stochastic_freq_seasonal), len(freq_seasonal))) + self.stochastic_freq_seasonal = stochastic_freq_seasonal + self.stochastic_cycle = stochastic_cycle + + self.damped_cycle = damped_cycle + self.mle_regression = mle_regression + + # Check for string trend/level specification + self.trend_specification = None + if isinstance(self.level, str): + self.trend_specification = level + self.level = False + + # Check if any of the trend/level components have been set, and + # reset everything to False + trend_attributes = ['irregular', 'level', 'trend', + 'stochastic_level', 'stochastic_trend'] + for attribute in trend_attributes: + if not getattr(self, attribute) is False: + warn("Value of `%s` may be overridden when the trend" + " component is specified using a model string." + % attribute, SpecificationWarning) + setattr(self, attribute, False) + + # Now set the correct specification + spec = self.trend_specification + if spec == 'irregular' or spec == 'ntrend': + self.irregular = True + self.trend_specification = 'irregular' + elif spec == 'fixed intercept': + self.level = True + elif spec == 'deterministic constant' or spec == 'dconstant': + self.irregular = True + self.level = True + self.trend_specification = 'deterministic constant' + elif spec == 'local level' or spec == 'llevel': + self.irregular = True + self.level = True + self.stochastic_level = True + self.trend_specification = 'local level' + elif spec == 'random walk' or spec == 'rwalk': + self.level = True + self.stochastic_level = True + self.trend_specification = 'random walk' + elif spec == 'fixed slope': + self.level = True + self.trend = True + elif spec == 'deterministic trend' or spec == 'dtrend': + self.irregular = True + self.level = True + self.trend = True + self.trend_specification = 'deterministic trend' + elif (spec == 'local linear deterministic trend' or + spec == 'lldtrend'): + self.irregular = True + self.level = True + self.stochastic_level = True + self.trend = True + self.trend_specification = 'local linear deterministic trend' + elif spec == 'random walk with drift' or spec == 'rwdrift': + self.level = True + self.stochastic_level = True + self.trend = True + self.trend_specification = 'random walk with drift' + elif spec == 'local linear trend' or spec == 'lltrend': + self.irregular = True + self.level = True + self.stochastic_level = True + self.trend = True + self.stochastic_trend = True + self.trend_specification = 'local linear trend' + elif spec == 'smooth trend' or spec == 'strend': + self.irregular = True + self.level = True + self.trend = True + self.stochastic_trend = True + self.trend_specification = 'smooth trend' + elif spec == 'random trend' or spec == 'rtrend': + self.level = True + self.trend = True + self.stochastic_trend = True + self.trend_specification = 'random trend' + else: + raise ValueError("Invalid level/trend specification: '%s'" + % spec) + + # Check for a model that makes sense + if trend and not level: + warn("Trend component specified without level component;" + " deterministic level component added.", SpecificationWarning) + self.level = True + self.stochastic_level = False + + if not (self.irregular or + (self.level and self.stochastic_level) or + (self.trend and self.stochastic_trend) or + (self.seasonal and self.stochastic_seasonal) or + (self.freq_seasonal and any( + self.stochastic_freq_seasonal)) or + (self.cycle and self.stochastic_cycle) or + self.autoregressive): + warn("Specified model does not contain a stochastic element;" + " irregular component added.", SpecificationWarning) + self.irregular = True + + if self.seasonal and self.seasonal_periods < 2: + raise ValueError('Seasonal component must have a seasonal period' + ' of at least 2.') + + if self.freq_seasonal: + for p in self.freq_seasonal_periods: + if p < 2: + raise ValueError( + 'Frequency Domain seasonal component must have a ' + 'seasonal period of at least 2.') + + # Create a bitmask holding the level/trend specification + self.trend_mask = ( + self.irregular * 0x01 | + self.level * 0x02 | + self.level * self.stochastic_level * 0x04 | + self.trend * 0x08 | + self.trend * self.stochastic_trend * 0x10 + ) + + # Create the trend specification, if it wasn't given + if self.trend_specification is None: + # trend specification may be none, e.g. if the model is only + # a stochastic cycle, etc. + self.trend_specification = _mask_map.get(self.trend_mask, None) + + # Exogenous component + (self.k_exog, exog) = prepare_exog(exog) + + self.regression = self.k_exog > 0 + + # Model parameters + self._k_seasonal_states = (self.seasonal_periods - 1) * self.seasonal + self._k_freq_seas_states = ( + sum(2 * h for h in self.freq_seasonal_harmonics) + * self.freq_seasonal) + self._k_cycle_states = self.cycle * 2 + k_states = ( + self.level + self.trend + + self._k_seasonal_states + + self._k_freq_seas_states + + self._k_cycle_states + + self.ar_order + + (not self.mle_regression) * self.k_exog + ) + k_posdef = ( + self.stochastic_level * self.level + + self.stochastic_trend * self.trend + + self.stochastic_seasonal * self.seasonal + + ((sum(2 * h if self.stochastic_freq_seasonal[ix] else 0 for + ix, h in enumerate(self.freq_seasonal_harmonics))) * + self.freq_seasonal) + + self.stochastic_cycle * (self._k_cycle_states) + + self.autoregressive + ) + + # The ar states are initialized as stationary, so they don't need to be + # burned. + loglikelihood_burn = kwargs.get('loglikelihood_burn', + k_states + - self.ar_order) + + # We can still estimate the model with just the irregular component, + # just need to have one state that does nothing. + if k_states == 0: + if not self.irregular: + raise ValueError('Model has no components specified.') + k_states = 1 + if k_posdef == 0: + k_posdef = 1 + + # Setup the representation + super(UnobservedComponents, self).__init__( + endog, k_states, k_posdef=k_posdef, exog=exog, **kwargs + ) + self.setup() + + # Set as time-varying model if we have exog + if self.k_exog > 0: + self.ssm._time_invariant = False + + # Initialize the model + self.ssm.loglikelihood_burn = loglikelihood_burn + + # Need to reset the MLE names (since when they were first set, `setup` + # had not been run (and could not have been at that point)) + self.data.param_names = self.param_names + + # Get bounds for the frequency of the cycle, if we know the frequency + # of the data. + if cycle_period_bounds is None: + freq = self.data.freq[0] if self.data.freq is not None else '' + if freq == 'A': + cycle_period_bounds = (1.5, 12) + elif freq == 'Q': + cycle_period_bounds = (1.5*4, 12*4) + elif freq == 'M': + cycle_period_bounds = (1.5*12, 12*12) + else: + # If we have no information on data frequency, require the + # cycle frequency to be between 0 and pi + cycle_period_bounds = (2, np.inf) + + self.cycle_frequency_bound = ( + 2*np.pi / cycle_period_bounds[1], 2*np.pi / cycle_period_bounds[0] + ) + + # update _init_keys attached by super + self._init_keys += ['level', 'trend', 'seasonal', 'freq_seasonal', + 'cycle', 'autoregressive', 'exog', 'irregular', + 'stochastic_level', 'stochastic_trend', + 'stochastic_seasonal', 'stochastic_freq_seasonal', + 'stochastic_cycle', + 'damped_cycle', 'cycle_period_bounds', + 'mle_regression'] + list(kwargs.keys()) + # TODO: I think the kwargs or not attached, need to recover from ??? + + # Initialize the state + self.initialize_default() + + def _get_init_kwds(self): + # Get keywords based on model attributes + kwds = super(UnobservedComponents, self)._get_init_kwds() + + # Modifications + kwds['seasonal'] = self.seasonal_periods + kwds['freq_seasonal'] = [ + {'period': p, + 'harmonics': self.freq_seasonal_harmonics[ix]} for + ix, p in enumerate(self.freq_seasonal_periods)] + kwds['autoregressive'] = self.ar_order + + for key, value in kwds.items(): + if value is None and hasattr(self.ssm, key): + kwds[key] = getattr(self.ssm, key) + + return kwds + + def setup(self): + """ + Setup the structural time series representation + """ + # Initialize the ordered sets of parameters + self.parameters = OrderedDict() + self.parameters_obs_intercept = OrderedDict() + self.parameters_obs_cov = OrderedDict() + self.parameters_transition = OrderedDict() + self.parameters_state_cov = OrderedDict() + + # Initialize the fixed components of the state space matrices, + i = 0 # state offset + j = 0 # state covariance offset + + if self.irregular: + self.parameters_obs_cov['irregular_var'] = 1 + if self.level: + self.ssm['design', 0, i] = 1. + self.ssm['transition', i, i] = 1. + if self.trend: + self.ssm['transition', i, i+1] = 1. + if self.stochastic_level: + self.ssm['selection', i, j] = 1. + self.parameters_state_cov['level_var'] = 1 + j += 1 + i += 1 + if self.trend: + self.ssm['transition', i, i] = 1. + if self.stochastic_trend: + self.ssm['selection', i, j] = 1. + self.parameters_state_cov['trend_var'] = 1 + j += 1 + i += 1 + if self.seasonal: + n = self.seasonal_periods - 1 + self.ssm['design', 0, i] = 1. + self.ssm['transition', i:i + n, i:i + n] = ( + companion_matrix(np.r_[1, [1] * n]).transpose() + ) + if self.stochastic_seasonal: + self.ssm['selection', i, j] = 1. + self.parameters_state_cov['seasonal_var'] = 1 + j += 1 + i += n + if self.freq_seasonal: + for ix, h in enumerate(self.freq_seasonal_harmonics): + # These are the \gamma_jt and \gamma^*_jt terms in D&K (3.8) + n = 2 * h + p = self.freq_seasonal_periods[ix] + lambda_p = 2 * np.pi / float(p) + + t = 0 # frequency transition matrix offset + for block in range(1, h + 1): + # ibid. eqn (3.7) + self.ssm['design', 0, i+t] = 1. + + # ibid. eqn (3.8) + cos_lambda_block = np.cos(lambda_p * block) + sin_lambda_block = np.sin(lambda_p * block) + trans = np.array([[cos_lambda_block, sin_lambda_block], + [-sin_lambda_block, cos_lambda_block]]) + trans_s = np.s_[i + t:i + t + 2] + self.ssm['transition', trans_s, trans_s] = trans + t += 2 + + if self.stochastic_freq_seasonal[ix]: + self.ssm['selection', i:i + n, j:j + n] = np.eye(n) + cov_key = 'freq_seasonal_var_{!r}'.format(ix) + self.parameters_state_cov[cov_key] = 1 + j += n + i += n + if self.cycle: + self.ssm['design', 0, i] = 1. + self.parameters_transition['cycle_freq'] = 1 + if self.damped_cycle: + self.parameters_transition['cycle_damp'] = 1 + if self.stochastic_cycle: + self.ssm['selection', i:i+2, j:j+2] = np.eye(2) + self.parameters_state_cov['cycle_var'] = 1 + j += 2 + self._idx_cycle_transition = np.s_['transition', i:i+2, i:i+2] + i += 2 + if self.autoregressive: + self.ssm['design', 0, i] = 1. + self.parameters_transition['ar_coeff'] = self.ar_order + self.parameters_state_cov['ar_var'] = 1 + self.ssm['selection', i, j] = 1 + self.ssm['transition', i:i+self.ar_order, i:i+self.ar_order] = ( + companion_matrix(self.ar_order).T + ) + self._idx_ar_transition = ( + np.s_['transition', i, i:i+self.ar_order] + ) + j += 1 + i += self.ar_order + if self.regression: + if self.mle_regression: + self.parameters_obs_intercept['reg_coeff'] = self.k_exog + else: + design = np.repeat(self.ssm['design', :, :, 0], self.nobs, + axis=0) + self.ssm['design'] = design.transpose()[np.newaxis, :, :] + self.ssm['design', 0, i:i+self.k_exog, :] = ( + self.exog.transpose()) + self.ssm['transition', i:i+self.k_exog, i:i+self.k_exog] = ( + np.eye(self.k_exog) + ) + + i += self.k_exog + + # Update to get the actual parameter set + self.parameters.update(self.parameters_obs_cov) + self.parameters.update(self.parameters_state_cov) + self.parameters.update(self.parameters_transition) # ordered last + self.parameters.update(self.parameters_obs_intercept) + + self.k_obs_intercept = sum(self.parameters_obs_intercept.values()) + self.k_obs_cov = sum(self.parameters_obs_cov.values()) + self.k_transition = sum(self.parameters_transition.values()) + self.k_state_cov = sum(self.parameters_state_cov.values()) + self.k_params = sum(self.parameters.values()) + + # Other indices + idx = np.diag_indices(self.ssm.k_posdef) + self._idx_state_cov = ('state_cov', idx[0], idx[1]) + + # Some of the variances may be tied together (repeated parameter usage) + # Use list() for compatibility with python 3.5 + param_keys = list(self.parameters_state_cov.keys()) + self._var_repetitions = np.ones(self.k_state_cov, dtype=np.int) + if self.freq_seasonal: + for ix, is_stochastic in enumerate(self.stochastic_freq_seasonal): + if is_stochastic: + num_harmonics = self.freq_seasonal_harmonics[ix] + repeat_times = 2 * num_harmonics + cov_key = 'freq_seasonal_var_{!r}'.format(ix) + cov_ix = param_keys.index(cov_key) + self._var_repetitions[cov_ix] = repeat_times + + if self.stochastic_cycle and self.cycle: + cov_ix = param_keys.index('cycle_var') + self._var_repetitions[cov_ix] = 2 + self._repeat_any_var = any(self._var_repetitions > 1) + + def initialize_default(self, approximate_diffuse_variance=None): + if approximate_diffuse_variance is None: + approximate_diffuse_variance = self.ssm.initial_variance + + init = Initialization( + self.k_states, + approximate_diffuse_variance=approximate_diffuse_variance) + + if self.autoregressive: + offset = (self.level + self.trend + + self._k_seasonal_states + + self._k_freq_seas_states + + self._k_cycle_states) + length = self.ar_order + init.set((0, offset), 'approximate_diffuse') + init.set((offset, offset + length), 'stationary') + init.set((offset + length, self.k_states), 'approximate_diffuse') + # If we do not have an autoregressive component, then everything has + # a diffuse initialization + else: + init.set(None, 'approximate_diffuse') + + self.ssm.initialization = init + + @property + def _res_classes(self): + return {'fit': (UnobservedComponentsResults, + UnobservedComponentsResultsWrapper)} + + @property + def start_params(self): + if not hasattr(self, 'parameters'): + return [] + + # Eliminate missing data to estimate starting parameters + endog = self.endog + exog = self.exog + if np.any(np.isnan(endog)): + mask = ~np.isnan(endog).squeeze() + endog = endog[mask] + if exog is not None: + exog = exog[mask] + + # Level / trend variances + # (Use the HP filter to get initial estimates of variances) + _start_params = {} + if self.level: + resid, trend1 = hpfilter(endog) + + if self.stochastic_trend: + cycle2, trend2 = hpfilter(trend1) + _start_params['trend_var'] = np.std(trend2)**2 + if self.stochastic_level: + _start_params['level_var'] = np.std(cycle2)**2 + elif self.stochastic_level: + _start_params['level_var'] = np.std(trend1)**2 + else: + resid = self.ssm.endog[0] + + # Regression + if self.regression and self.mle_regression: + _start_params['reg_coeff'] = ( + np.linalg.pinv(exog).dot(resid).tolist() + ) + resid = np.squeeze( + resid - np.dot(exog, _start_params['reg_coeff']) + ) + + # Autoregressive + if self.autoregressive: + Y = resid[self.ar_order:] + X = lagmat(resid, self.ar_order, trim='both') + _start_params['ar_coeff'] = np.linalg.pinv(X).dot(Y).tolist() + resid = np.squeeze(Y - np.dot(X, _start_params['ar_coeff'])) + _start_params['ar_var'] = np.var(resid) + + # The variance of the residual term can be used for all variances, + # just to get something in the right order of magnitude. + var_resid = np.var(resid) + + # Seasonal + if self.stochastic_seasonal: + _start_params['seasonal_var'] = var_resid + + # Frequency domain seasonal + for ix, is_stochastic in enumerate(self.stochastic_freq_seasonal): + cov_key = 'freq_seasonal_var_{!r}'.format(ix) + _start_params[cov_key] = var_resid + + # Cyclical + if self.cycle: + _start_params['cycle_var'] = var_resid + # Clip this to make sure it is postive and strictly stationary + # (i.e. don't want negative or 1) + _start_params['cycle_damp'] = np.clip( + np.linalg.pinv(resid[:-1, None]).dot(resid[1:])[0], 0, 0.99 + ) + + # Set initial period estimate to 3 year, if we know the frequency + # of the data observations + freq = self.data.freq[0] if self.data.freq is not None else '' + if freq == 'A': + _start_params['cycle_freq'] = 2 * np.pi / 3 + elif freq == 'Q': + _start_params['cycle_freq'] = 2 * np.pi / 12 + elif freq == 'M': + _start_params['cycle_freq'] = 2 * np.pi / 36 + else: + if not np.any(np.isinf(self.cycle_frequency_bound)): + _start_params['cycle_freq'] = ( + np.mean(self.cycle_frequency_bound)) + elif np.isinf(self.cycle_frequency_bound[1]): + _start_params['cycle_freq'] = self.cycle_frequency_bound[0] + else: + _start_params['cycle_freq'] = self.cycle_frequency_bound[1] + + # Irregular + if self.irregular: + _start_params['irregular_var'] = var_resid + + # Create the starting parameter list + start_params = [] + for key in self.parameters.keys(): + if np.isscalar(_start_params[key]): + start_params.append(_start_params[key]) + else: + start_params += _start_params[key] + return start_params + + @property + def param_names(self): + if not hasattr(self, 'parameters'): + return [] + param_names = [] + for key in self.parameters.keys(): + if key == 'irregular_var': + param_names.append('sigma2.irregular') + elif key == 'level_var': + param_names.append('sigma2.level') + elif key == 'trend_var': + param_names.append('sigma2.trend') + elif key == 'seasonal_var': + param_names.append('sigma2.seasonal') + elif key.startswith('freq_seasonal_var_'): + # There are potentially multiple frequency domain + # seasonal terms + idx_fseas_comp = int(key[-1]) + periodicity = self.freq_seasonal_periods[idx_fseas_comp] + harmonics = self.freq_seasonal_harmonics[idx_fseas_comp] + freq_seasonal_name = "{p}({h})".format( + p=repr(periodicity), + h=repr(harmonics)) + param_names.append( + 'sigma2.' + 'freq_seasonal_' + freq_seasonal_name) + elif key == 'cycle_var': + param_names.append('sigma2.cycle') + elif key == 'cycle_freq': + param_names.append('frequency.cycle') + elif key == 'cycle_damp': + param_names.append('damping.cycle') + elif key == 'ar_coeff': + for i in range(self.ar_order): + param_names.append('ar.L%d' % (i+1)) + elif key == 'ar_var': + param_names.append('sigma2.ar') + elif key == 'reg_coeff': + param_names += [ + 'beta.%s' % self.exog_names[i] + for i in range(self.k_exog) + ] + else: + param_names.append(key) + return param_names + + def transform_params(self, unconstrained): + """ + Transform unconstrained parameters used by the optimizer to constrained + parameters used in likelihood evaluation + """ + unconstrained = np.array(unconstrained, ndmin=1) + constrained = np.zeros(unconstrained.shape, dtype=unconstrained.dtype) + + # Positive parameters: obs_cov, state_cov + offset = self.k_obs_cov + self.k_state_cov + constrained[:offset] = unconstrained[:offset]**2 + + # Cycle parameters + if self.cycle: + # Cycle frequency must be between between our bounds + low, high = self.cycle_frequency_bound + constrained[offset] = ( + 1 / (1 + np.exp(-unconstrained[offset])) + ) * (high - low) + low + offset += 1 + + # Cycle damping (if present) must be between 0 and 1 + if self.damped_cycle: + constrained[offset] = ( + 1 / (1 + np.exp(-unconstrained[offset])) + ) + offset += 1 + + # Autoregressive coefficients must be stationary + if self.autoregressive: + constrained[offset:offset + self.ar_order] = ( + constrain_stationary_univariate( + unconstrained[offset:offset + self.ar_order] + ) + ) + offset += self.ar_order + + # Nothing to do with betas + constrained[offset:offset + self.k_exog] = ( + unconstrained[offset:offset + self.k_exog] + ) + + return constrained + + def untransform_params(self, constrained): + """ + Reverse the transformation + """ + constrained = np.array(constrained, ndmin=1) + unconstrained = np.zeros(constrained.shape, dtype=constrained.dtype) + + # Positive parameters: obs_cov, state_cov + offset = self.k_obs_cov + self.k_state_cov + unconstrained[:offset] = constrained[:offset]**0.5 + + # Cycle parameters + if self.cycle: + # Cycle frequency must be between between our bounds + low, high = self.cycle_frequency_bound + x = (constrained[offset] - low) / (high - low) + unconstrained[offset] = np.log( + x / (1 - x) + ) + offset += 1 + + # Cycle damping (if present) must be between 0 and 1 + if self.damped_cycle: + unconstrained[offset] = np.log( + constrained[offset] / (1 - constrained[offset]) + ) + offset += 1 + + # Autoregressive coefficients must be stationary + if self.autoregressive: + unconstrained[offset:offset + self.ar_order] = ( + unconstrain_stationary_univariate( + constrained[offset:offset + self.ar_order] + ) + ) + offset += self.ar_order + + # Nothing to do with betas + unconstrained[offset:offset + self.k_exog] = ( + constrained[offset:offset + self.k_exog] + ) + + return unconstrained + + def update(self, params, **kwargs): + params = super(UnobservedComponents, self).update(params, **kwargs) + + offset = 0 + + # Observation covariance + if self.irregular: + self.ssm['obs_cov', 0, 0] = params[offset] + offset += 1 + + # State covariance + if self.k_state_cov > 0: + variances = params[offset:offset+self.k_state_cov] + if self._repeat_any_var: + variances = np.repeat(variances, self._var_repetitions) + self.ssm[self._idx_state_cov] = variances + offset += self.k_state_cov + + # Cycle transition + if self.cycle: + cos_freq = np.cos(params[offset]) + sin_freq = np.sin(params[offset]) + cycle_transition = np.array( + [[cos_freq, sin_freq], + [-sin_freq, cos_freq]] + ) + if self.damped_cycle: + offset += 1 + cycle_transition *= params[offset] + self.ssm[self._idx_cycle_transition] = cycle_transition + offset += 1 + + # AR transition + if self.autoregressive: + self.ssm[self._idx_ar_transition] = ( + params[offset:offset+self.ar_order] + ) + offset += self.ar_order + + # Beta observation intercept + if self.regression: + if self.mle_regression: + self.ssm['obs_intercept'] = np.dot( + self.exog, + params[offset:offset+self.k_exog] + )[None, :] + offset += self.k_exog + + +class UnobservedComponentsResults(MLEResults): + """ + Class to hold results from fitting an unobserved components model. + + Parameters + ---------- + model : UnobservedComponents instance + The fitted model instance + + Attributes + ---------- + specification : dictionary + Dictionary including all attributes from the unobserved components + model instance. + + See Also + -------- + statsmodels.tsa.statespace.kalman_filter.FilterResults + statsmodels.tsa.statespace.mlemodel.MLEResults + """ + + def __init__(self, model, params, filter_results, cov_type='opg', + **kwargs): + super(UnobservedComponentsResults, self).__init__( + model, params, filter_results, cov_type, **kwargs) + + self.df_resid = np.inf # attribute required for wald tests + + # Save _init_kwds + self._init_kwds = self.model._get_init_kwds() + + # Save number of states by type + self._k_states_by_type = { + 'seasonal': self.model._k_seasonal_states, + 'freq_seasonal': self.model._k_freq_seas_states, + 'cycle': self.model._k_cycle_states} + + # Save the model specification + self.specification = Bunch(**{ + # Model options + 'level': self.model.level, + 'trend': self.model.trend, + 'seasonal_periods': self.model.seasonal_periods, + 'seasonal': self.model.seasonal, + 'freq_seasonal': self.model.freq_seasonal, + 'freq_seasonal_periods': self.model.freq_seasonal_periods, + 'freq_seasonal_harmonics': self.model.freq_seasonal_harmonics, + 'cycle': self.model.cycle, + 'ar_order': self.model.ar_order, + 'autoregressive': self.model.autoregressive, + 'irregular': self.model.irregular, + 'stochastic_level': self.model.stochastic_level, + 'stochastic_trend': self.model.stochastic_trend, + 'stochastic_seasonal': self.model.stochastic_seasonal, + 'stochastic_freq_seasonal': self.model.stochastic_freq_seasonal, + 'stochastic_cycle': self.model.stochastic_cycle, + + 'damped_cycle': self.model.damped_cycle, + 'regression': self.model.regression, + 'mle_regression': self.model.mle_regression, + 'k_exog': self.model.k_exog, + + # Check for string trend/level specification + 'trend_specification': self.model.trend_specification + }) + + @property + def level(self): + """ + Estimates of unobserved level component + + Returns + ------- + out: Bunch + Has the following attributes: + + - `filtered`: a time series array with the filtered estimate of + the component + - `filtered_cov`: a time series array with the filtered estimate of + the variance/covariance of the component + - `smoothed`: a time series array with the smoothed estimate of + the component + - `smoothed_cov`: a time series array with the smoothed estimate of + the variance/covariance of the component + - `offset`: an integer giving the offset in the state vector where + this component begins + """ + # If present, level is always the first component of the state vector + out = None + spec = self.specification + if spec.level: + offset = 0 + out = Bunch(filtered=self.filtered_state[offset], + filtered_cov=self.filtered_state_cov[offset, offset], + smoothed=None, smoothed_cov=None, + offset=offset) + if self.smoothed_state is not None: + out.smoothed = self.smoothed_state[offset] + if self.smoothed_state_cov is not None: + out.smoothed_cov = self.smoothed_state_cov[offset, offset] + return out + + @property + def trend(self): + """ + Estimates of of unobserved trend component + + Returns + ------- + out: Bunch + Has the following attributes: + + - `filtered`: a time series array with the filtered estimate of + the component + - `filtered_cov`: a time series array with the filtered estimate of + the variance/covariance of the component + - `smoothed`: a time series array with the smoothed estimate of + the component + - `smoothed_cov`: a time series array with the smoothed estimate of + the variance/covariance of the component + - `offset`: an integer giving the offset in the state vector where + this component begins + """ + # If present, trend is always the second component of the state vector + # (because level is always present if trend is present) + out = None + spec = self.specification + if spec.trend: + offset = int(spec.level) + out = Bunch(filtered=self.filtered_state[offset], + filtered_cov=self.filtered_state_cov[offset, offset], + smoothed=None, smoothed_cov=None, + offset=offset) + if self.smoothed_state is not None: + out.smoothed = self.smoothed_state[offset] + if self.smoothed_state_cov is not None: + out.smoothed_cov = self.smoothed_state_cov[offset, offset] + return out + + @property + def seasonal(self): + """ + Estimates of unobserved seasonal component + + Returns + ------- + out: Bunch + Has the following attributes: + + - `filtered`: a time series array with the filtered estimate of + the component + - `filtered_cov`: a time series array with the filtered estimate of + the variance/covariance of the component + - `smoothed`: a time series array with the smoothed estimate of + the component + - `smoothed_cov`: a time series array with the smoothed estimate of + the variance/covariance of the component + - `offset`: an integer giving the offset in the state vector where + this component begins + """ + # If present, seasonal always follows level/trend (if they are present) + # Note that we return only the first seasonal state, but there are + # in fact seasonal_periods-1 seasonal states, however latter states + # are just lagged versions of the first seasonal state. + out = None + spec = self.specification + if spec.seasonal: + offset = int(spec.trend + spec.level) + out = Bunch(filtered=self.filtered_state[offset], + filtered_cov=self.filtered_state_cov[offset, offset], + smoothed=None, smoothed_cov=None, + offset=offset) + if self.smoothed_state is not None: + out.smoothed = self.smoothed_state[offset] + if self.smoothed_state_cov is not None: + out.smoothed_cov = self.smoothed_state_cov[offset, offset] + return out + + @property + def freq_seasonal(self): + """ + Estimates of unobserved frequency domain seasonal component(s) + + Returns + ------- + out: list of Bunch instances + Each item has the following attributes: + + - `filtered`: a time series array with the filtered estimate of + the component + - `filtered_cov`: a time series array with the filtered estimate of + the variance/covariance of the component + - `smoothed`: a time series array with the smoothed estimate of + the component + - `smoothed_cov`: a time series array with the smoothed estimate of + the variance/covariance of the component + - `offset`: an integer giving the offset in the state vector where + this component begins + """ + # If present, freq_seasonal components always follows level/trend + # and seasonal. + + # There are 2 * (harmonics) seasonal states per freq_seasonal + # component. + # The sum of every other state enters the measurement equation. + # Additionally, there can be multiple components of this type. + # These facts make this property messier in implementation than the + # others. + # Fortunately, the states are conditionally mutually independent + # (conditional on previous timestep's states), so that the calculations + # of the variances are simple summations of individual variances and + # the calculation of the returned state is likewise a summation. + out = [] + spec = self.specification + if spec.freq_seasonal: + previous_states_offset = int(spec.trend + spec.level + + self._k_states_by_type['seasonal']) + previous_f_seas_offset = 0 + for ix, h in enumerate(spec.freq_seasonal_harmonics): + offset = previous_states_offset + previous_f_seas_offset + + period = spec.freq_seasonal_periods[ix] + + # Only the gamma_jt terms enter the measurement equation (cf. + # D&K 2012 (3.7)) + states_in_sum = np.arange(0, 2 * h, 2) + + filtered_state = np.sum( + [self.filtered_state[offset + j] for j in states_in_sum], + axis=0) + filtered_cov = np.sum( + [self.filtered_state_cov[offset + j, offset + j] for j in + states_in_sum], axis=0) + + item = Bunch( + filtered=filtered_state, + filtered_cov=filtered_cov, + smoothed=None, smoothed_cov=None, + offset=offset, + pretty_name='seasonal {p}({h})'.format(p=repr(period), + h=repr(h))) + if self.smoothed_state is not None: + item.smoothed = np.sum( + [self.smoothed_state[offset+j] for j in states_in_sum], + axis=0) + if self.smoothed_state_cov is not None: + item.smoothed_cov = np.sum( + [self.smoothed_state_cov[offset+j, offset+j] + for j in states_in_sum], axis=0) + out.append(item) + previous_f_seas_offset += 2 * h + return out + + @property + def cycle(self): + """ + Estimates of unobserved cycle component + + Returns + ------- + out: Bunch + Has the following attributes: + + - `filtered`: a time series array with the filtered estimate of + the component + - `filtered_cov`: a time series array with the filtered estimate of + the variance/covariance of the component + - `smoothed`: a time series array with the smoothed estimate of + the component + - `smoothed_cov`: a time series array with the smoothed estimate of + the variance/covariance of the component + - `offset`: an integer giving the offset in the state vector where + this component begins + """ + # If present, cycle always follows level/trend, seasonal, and freq + # seasonal. + # Note that we return only the first cyclical state, but there are + # in fact 2 cyclical states. The second cyclical state is not simply + # a lag of the first cyclical state, but the first cyclical state is + # the one that enters the measurement equation. + out = None + spec = self.specification + if spec.cycle: + offset = int(spec.trend + spec.level + + self._k_states_by_type['seasonal'] + + self._k_states_by_type['freq_seasonal']) + out = Bunch(filtered=self.filtered_state[offset], + filtered_cov=self.filtered_state_cov[offset, offset], + smoothed=None, smoothed_cov=None, + offset=offset) + if self.smoothed_state is not None: + out.smoothed = self.smoothed_state[offset] + if self.smoothed_state_cov is not None: + out.smoothed_cov = self.smoothed_state_cov[offset, offset] + return out + + @property + def autoregressive(self): + """ + Estimates of unobserved autoregressive component + + Returns + ------- + out: Bunch + Has the following attributes: + + - `filtered`: a time series array with the filtered estimate of + the component + - `filtered_cov`: a time series array with the filtered estimate of + the variance/covariance of the component + - `smoothed`: a time series array with the smoothed estimate of + the component + - `smoothed_cov`: a time series array with the smoothed estimate of + the variance/covariance of the component + - `offset`: an integer giving the offset in the state vector where + this component begins + """ + # If present, autoregressive always follows level/trend, seasonal, + # freq seasonal, and cyclical. + # If it is an AR(p) model, then there are p associated + # states, but the second - pth states are just lags of the first state. + out = None + spec = self.specification + if spec.autoregressive: + offset = int(spec.trend + spec.level + + self._k_states_by_type['seasonal'] + + self._k_states_by_type['freq_seasonal'] + + self._k_states_by_type['cycle']) + out = Bunch(filtered=self.filtered_state[offset], + filtered_cov=self.filtered_state_cov[offset, offset], + smoothed=None, smoothed_cov=None, + offset=offset) + if self.smoothed_state is not None: + out.smoothed = self.smoothed_state[offset] + if self.smoothed_state_cov is not None: + out.smoothed_cov = self.smoothed_state_cov[offset, offset] + return out + + @property + def regression_coefficients(self): + """ + Estimates of unobserved regression coefficients + + Returns + ------- + out: Bunch + Has the following attributes: + + - `filtered`: a time series array with the filtered estimate of + the component + - `filtered_cov`: a time series array with the filtered estimate of + the variance/covariance of the component + - `smoothed`: a time series array with the smoothed estimate of + the component + - `smoothed_cov`: a time series array with the smoothed estimate of + the variance/covariance of the component + - `offset`: an integer giving the offset in the state vector where + this component begins + """ + # If present, state-vector regression coefficients always are last + # (i.e. they follow level/trend, seasonal, freq seasonal, cyclical, and + # autoregressive states). There is one state associated with each + # regressor, and all are returned here. + out = None + spec = self.specification + if spec.regression: + if spec.mle_regression: + import warnings + warnings.warn('Regression coefficients estimated via maximum' + ' likelihood. Estimated coefficients are' + ' available in the parameters list, not as part' + ' of the state vector.', OutputWarning) + else: + offset = int(spec.trend + spec.level + + self._k_states_by_type['seasonal'] + + self._k_states_by_type['freq_seasonal'] + + self._k_states_by_type['cycle'] + + spec.ar_order) + start = offset + end = offset + spec.k_exog + out = Bunch( + filtered=self.filtered_state[start:end], + filtered_cov=self.filtered_state_cov[start:end, start:end], + smoothed=None, smoothed_cov=None, + offset=offset + ) + if self.smoothed_state is not None: + out.smoothed = self.smoothed_state[start:end] + if self.smoothed_state_cov is not None: + out.smoothed_cov = ( + self.smoothed_state_cov[start:end, start:end]) + return out + + def plot_components(self, which=None, alpha=0.05, + observed=True, level=True, trend=True, + seasonal=True, freq_seasonal=True, + cycle=True, autoregressive=True, + legend_loc='upper right', fig=None, figsize=None): + """ + Plot the estimated components of the model. + + Parameters + ---------- + which : {'filtered', 'smoothed'}, or None, optional + Type of state estimate to plot. Default is 'smoothed' if smoothed + results are available otherwise 'filtered'. + alpha : float, optional + The confidence intervals for the components are (1 - alpha) % + level : boolean, optional + Whether or not to plot the level component, if applicable. + Default is True. + trend : boolean, optional + Whether or not to plot the trend component, if applicable. + Default is True. + seasonal : boolean, optional + Whether or not to plot the seasonal component, if applicable. + Default is True. + freq_seasonal: boolean, optional + Whether or not to plot the frequency domain seasonal component(s), + if applicable. Default is True. + cycle : boolean, optional + Whether or not to plot the cyclical component, if applicable. + Default is True. + autoregressive : boolean, optional + Whether or not to plot the autoregressive state, if applicable. + Default is True. + fig : Matplotlib Figure instance, optional + If given, subplots are created in this figure instead of in a new + figure. Note that the grid will be created in the provided + figure using `fig.add_subplot()`. + figsize : tuple, optional + If a figure is created, this argument allows specifying a size. + The tuple is (width, height). + + Notes + ----- + If all options are included in the model and selected, this produces + a 6x1 plot grid with the following plots (ordered top-to-bottom): + + 0. Observed series against predicted series + 1. Level + 2. Trend + 3. Seasonal + 4. Freq Seasonal + 5. Cycle + 6. Autoregressive + + Specific subplots will be removed if the component is not present in + the estimated model or if the corresponding keywork argument is set to + False. + + All plots contain (1 - `alpha`) % confidence intervals. + """ + from scipy.stats import norm + from statsmodels.graphics.utils import _import_mpl, create_mpl_fig + plt = _import_mpl() + fig = create_mpl_fig(fig, figsize) + + # Determine which results we have + if which is None: + which = 'filtered' if self.smoothed_state is None else 'smoothed' + + # Determine which plots we have + spec = self.specification + + comp = [ + ('level', level and spec.level), + ('trend', trend and spec.trend), + ('seasonal', seasonal and spec.seasonal), + ] + + if freq_seasonal and spec.freq_seasonal: + for ix, _ in enumerate(spec.freq_seasonal_periods): + key = 'freq_seasonal_{!r}'.format(ix) + comp.append((key, True)) + + comp.extend( + [('cycle', cycle and spec.cycle), + ('autoregressive', autoregressive and spec.autoregressive)]) + + components = OrderedDict(comp) + + llb = self.filter_results.loglikelihood_burn + + # Number of plots + k_plots = observed + np.sum(list(components.values())) + + # Get dates, if applicable + if hasattr(self.data, 'dates') and self.data.dates is not None: + dates = self.data.dates._mpl_repr() + else: + dates = np.arange(len(self.data.endog)) + + # Get the critical value for confidence intervals + critical_value = norm.ppf(1 - alpha / 2.) + + plot_idx = 1 + + # Observed, predicted, confidence intervals + if observed: + ax = fig.add_subplot(k_plots, 1, plot_idx) + plot_idx += 1 + + # Plot the observed dataset + ax.plot(dates[llb:], self.model.endog[llb:], color='k', + label='Observed') + + # Get the predicted values and confidence intervals + predict = self.filter_results.forecasts[0] + std_errors = np.sqrt(self.filter_results.forecasts_error_cov[0, 0]) + ci_lower = predict - critical_value * std_errors + ci_upper = predict + critical_value * std_errors + + # Plot + ax.plot(dates[llb:], predict[llb:], + label='One-step-ahead predictions') + ci_poly = ax.fill_between( + dates[llb:], ci_lower[llb:], ci_upper[llb:], alpha=0.2 + ) + ci_label = '$%.3g \\%%$ confidence interval' % ((1 - alpha) * 100) + + # Proxy artist for fill_between legend entry + # See e.g. http://matplotlib.org/1.3.1/users/legend_guide.html + p = plt.Rectangle((0, 0), 1, 1, fc=ci_poly.get_facecolor()[0]) + + # Legend + handles, labels = ax.get_legend_handles_labels() + handles.append(p) + labels.append(ci_label) + ax.legend(handles, labels, loc=legend_loc) + + ax.set_title('Predicted vs observed') + + # Plot each component + for component, is_plotted in components.items(): + if not is_plotted: + continue + + ax = fig.add_subplot(k_plots, 1, plot_idx) + plot_idx += 1 + + try: + component_bunch = getattr(self, component) + title = component.title() + except AttributeError: + # This might be a freq_seasonal component, of which there are + # possibly multiple bagged up in property freq_seasonal + if component.startswith('freq_seasonal_'): + ix = int(component.replace('freq_seasonal_', '')) + big_bunch = getattr(self, 'freq_seasonal') + component_bunch = big_bunch[ix] + title = component_bunch.pretty_name + else: + raise + + # Check for a valid estimation type + if which not in component_bunch: + raise ValueError('Invalid type of state estimate.') + + which_cov = '%s_cov' % which + + # Get the predicted values + value = component_bunch[which] + + # Plot + state_label = '%s (%s)' % (title, which) + ax.plot(dates[llb:], value[llb:], label=state_label) + + # Get confidence intervals + if which_cov in component_bunch: + std_errors = np.sqrt(component_bunch['%s_cov' % which]) + ci_lower = value - critical_value * std_errors + ci_upper = value + critical_value * std_errors + ci_poly = ax.fill_between( + dates[llb:], ci_lower[llb:], ci_upper[llb:], alpha=0.2 + ) + ci_label = ('$%.3g \\%%$ confidence interval' + % ((1 - alpha) * 100)) + + # Legend + ax.legend(loc=legend_loc) + + ax.set_title('%s component' % title) + + # Add a note if first observations excluded + if llb > 0: + text = ('Note: The first %d observations are not shown, due to' + ' approximate diffuse initialization.') + fig.text(0.1, 0.01, text % llb, fontsize='large') + + return fig + + def get_prediction(self, start=None, end=None, dynamic=False, index=None, + exog=None, **kwargs): + """ + In-sample prediction and out-of-sample forecasting + + Parameters + ---------- + start : int, str, or datetime, optional + Zero-indexed observation number at which to start forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. Default is the the zeroth observation. + end : int, str, or datetime, optional + Zero-indexed observation number at which to end forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. However, if the dates index does not + have a fixed frequency, end must be an integer index if you + want out of sample prediction. Default is the last observation in + the sample. + exog : array_like, optional + If the model includes exogenous regressors, you must provide + exactly enough out-of-sample values for the exogenous variables if + end is beyond the last observation in the sample. + dynamic : boolean, int, str, or datetime, optional + Integer offset relative to `start` at which to begin dynamic + prediction. Can also be an absolute date string to parse or a + datetime type (these are not interpreted as offsets). + Prior to this observation, true endogenous values will be used for + prediction; starting with this observation and continuing through + the end of prediction, forecasted endogenous values will be used + instead. + full_results : boolean, optional + If True, returns a FilterResults instance; if False returns a + tuple with forecasts, the forecast errors, and the forecast error + covariance matrices. Default is False. + **kwargs + Additional arguments may required for forecasting beyond the end + of the sample. See `FilterResults.predict` for more details. + + Returns + ------- + forecast : array + Array of out of sample forecasts. + """ + if start is None: + start = self.model._index[0] + + # Handle end (e.g. date) + _start, _end, _out_of_sample, prediction_index = ( + self.model._get_prediction_index(start, end, index, silent=True)) + + # Handle exogenous parameters + if _out_of_sample and self.model.k_exog > 0: + # Create a new faux model for the extended dataset + nobs = self.model.data.orig_endog.shape[0] + _out_of_sample + endog = np.zeros((nobs, self.model.k_endog)) + + if self.model.k_exog > 0: + if exog is None: + raise ValueError('Out-of-sample forecasting in a model' + ' with a regression component requires' + ' additional exogenous values via the' + ' `exog` argument.') + exog = np.array(exog) + required_exog_shape = (_out_of_sample, self.model.k_exog) + if not exog.shape == required_exog_shape: + raise ValueError('Provided exogenous values are not of the' + ' appropriate shape. Required %s, got %s.' + % (str(required_exog_shape), + str(exog.shape))) + exog = np.c_[self.model.data.orig_exog.T, exog.T].T + + model_kwargs = self._init_kwds.copy() + model_kwargs['exog'] = exog + model = UnobservedComponents(endog, **model_kwargs) + model.update(self.params) + + # Set the kwargs with the update time-varying state space + # representation matrices + for name in self.filter_results.shapes.keys(): + if name == 'obs': + continue + mat = getattr(model.ssm, name) + if mat.shape[-1] > 1: + if len(mat.shape) == 2: + kwargs[name] = mat[:, -_out_of_sample:] + else: + kwargs[name] = mat[:, :, -_out_of_sample:] + elif self.model.k_exog == 0 and exog is not None: + # TODO: UserWarning + warn('Exogenous array provided to predict, but additional data not' + ' required. `exog` argument ignored.', ValueWarning) + + return super(UnobservedComponentsResults, self).get_prediction( + start=start, end=end, dynamic=dynamic, index=index, exog=exog, + **kwargs) + + def summary(self, alpha=.05, start=None): + # Create the model name + + model_name = [self.specification.trend_specification] + + if self.specification.seasonal: + seasonal_name = ('seasonal(%d)' + % self.specification.seasonal_periods) + if self.specification.stochastic_seasonal: + seasonal_name = 'stochastic ' + seasonal_name + model_name.append(seasonal_name) + + if self.specification.freq_seasonal: + for ix, is_stochastic in enumerate( + self.specification.stochastic_freq_seasonal): + periodicity = self.specification.freq_seasonal_periods[ix] + harmonics = self.specification.freq_seasonal_harmonics[ix] + freq_seasonal_name = "freq_seasonal({p}({h}))".format( + p=repr(periodicity), + h=repr(harmonics)) + if is_stochastic: + freq_seasonal_name = 'stochastic ' + freq_seasonal_name + model_name.append(freq_seasonal_name) + + if self.specification.cycle: + cycle_name = 'cycle' + if self.specification.stochastic_cycle: + cycle_name = 'stochastic ' + cycle_name + if self.specification.damped_cycle: + cycle_name = 'damped ' + cycle_name + model_name.append(cycle_name) + + if self.specification.autoregressive: + autoregressive_name = 'AR(%d)' % self.specification.ar_order + model_name.append(autoregressive_name) + + return super(UnobservedComponentsResults, self).summary( + alpha=alpha, start=start, title='Unobserved Components Results', + model_name=model_name + ) + summary.__doc__ = MLEResults.summary.__doc__ + + +class UnobservedComponentsResultsWrapper(MLEResultsWrapper): + _attrs = {} + _wrap_attrs = wrap.union_dicts(MLEResultsWrapper._wrap_attrs, + _attrs) + _methods = {} + _wrap_methods = wrap.union_dicts(MLEResultsWrapper._wrap_methods, + _methods) +wrap.populate_wrapper(UnobservedComponentsResultsWrapper, # noqa:E305 + UnobservedComponentsResults) diff --git a/statsmodels/tsa/statespace/tests/__init__.py b/statsmodels/tsa/statespace/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/statespace/tests/kfas_helpers.py b/statsmodels/tsa/statespace/tests/kfas_helpers.py new file mode 100644 index 0000000..b00adad --- /dev/null +++ b/statsmodels/tsa/statespace/tests/kfas_helpers.py @@ -0,0 +1,96 @@ +# Helper functions for working with KFAS output + +import numpy as np +import pandas as pd +from statsmodels.tools.tools import Bunch + + +def parse(path, ssm): + # Dimensions + n = ssm.nobs + p = ssm.k_endog + m = ssm.k_states + r = ssm.k_posdef + + p2 = p**2 + m2 = m**2 + mp = m * p + r2 = r**2 + + # Extract the different pieces of output from KFAS + kfas = pd.read_csv(path) + components = [('r', m), ('r0', m), ('r1', m), + ('N', m2), ('N0', m2), ('N1', m2), ('N2', m2), + ('m', p), ('v', p), ('F', p), ('Finf', p), + ('K', mp), ('Kinf', mp), ('a', m), ('P', m2), + ('Pinf', m2), ('att', m), ('Ptt', m2), + ('alphahat', m), ('V', m2), ('muhat', p), + ('V_mu', p2), ('etahat', r), ('V_eta', r2), ('epshat', p), + ('V_eps', p), ('llf', 1)] + dta = {} + ix = 0 + for key, length in components: + dta[key] = kfas.iloc[:, ix:ix + length].fillna(0) + dta[key].name = None + ix += length + + # Reformat the KFAS output to compare with statsmodels output + res = Bunch() + d = len(kfas['Pinf_1'].dropna()) + + # forecasts + res['forecasts'] = dta['m'].values[:n].T + res['forecasts_error'] = dta['v'].values[:n].T + res['forecasts_error_cov'] = np.c_[ + [np.diag(x) for y, x in dta['F'].iloc[:n].iterrows()]].T + res['forecasts_error_diffuse_cov'] = np.c_[ + [np.diag(x) for y, x in dta['Finf'].iloc[:n].iterrows()]].T + + res['kalman_gain'] = dta['K'].values[:n].reshape(n, m, p, order='F').T + res['Kinf'] = dta['Kinf'].values[:n].reshape(n, m, p, order='F') + + # filtered + res['filtered_state'] = dta['att'].values[:n].T + res['filtered_state_cov'] = dta['Ptt'].values[:n].reshape( + n, m, m, order='F').T + # predicted + res['predicted_state'] = dta['a'].values.T + res['predicted_state_cov'] = dta['P'].values.reshape( + n + 1, m, m, order='F').T + res['predicted_diffuse_state_cov'] = dta['Pinf'].values.reshape( + n + 1, m, m, order='F').T + # loglike + # Note: KFAS only gives the total loglikelihood + res['llf_obs'] = dta['llf'].values[0, 0] + + # smoothed + res['smoothed_state'] = dta['alphahat'].values[:n].T + res['smoothed_state_cov'] = dta['V'].values[:n].reshape( + n, m, m, order='F').T + + res['smoothed_measurement_disturbance'] = dta['epshat'].values[:n].T + res['smoothed_measurement_disturbance_cov'] = np.c_[ + [np.diag(x) for y, x in dta['V_eps'].iloc[:n].iterrows()]].T + res['smoothed_state_disturbance'] = dta['etahat'].values[:n].T + res['smoothed_state_disturbance_cov'] = dta['V_eta'].values[:n].reshape( + n, r, r, order='F').T + + # scaled smoothed estimator + # Note: we store both r and r0 together as "scaled smoothed estimator" + # while "scaled smoothed diffuse estimator" corresponds to r1 + res['scaled_smoothed_estimator'] = np.c_[dta['r0'][:d].T, + dta['r'][d:].T][..., 1:] + res['scaled_smoothed_diffuse_estimator'] = dta['r1'].values.T + + N0 = dta['N0'].values[:d].reshape(d, m, m, order='F') + N = dta['N'].values[d:].reshape(n + 1 - d, m, m, order='F') + res['scaled_smoothed_estimator_cov'] = np.c_[N0.T, N.T][..., 1:] + # Have to do a more precise transpose for these since they may not be + # symmetric + res['scaled_smoothed_diffuse1_estimator_cov'] = dta['N1'].values.reshape( + n + 1, m, m, order='F').transpose(1, 2, 0) + res['scaled_smoothed_diffuse2_estimator_cov'] = dta['N2'].values.reshape( + n + 1, m, m, order='F').transpose(1, 2, 0) + + # Save the results object for the tests + return res diff --git a/statsmodels/tsa/statespace/tests/results/__init__.py b/statsmodels/tsa/statespace/tests/results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/statespace/tests/results/clark1989.csv b/statsmodels/tsa/statespace/tests/results/clark1989.csv new file mode 100644 index 0000000..2e75f89 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/clark1989.csv @@ -0,0 +1,195 @@ +1239.5, 0 +1247.199951, 0 +1255, 0 +1269.5, 0 +1284, 3.733333349 +1295.699951, 3.666666667 +1303.800049, 3.766666651 +1316.400024, 3.833333333 +1305.300049, 4.666666667 +1302, 5.866666635 +1312.599976, 6.699999968 +1301.900024, 6.966666698 +1350.900024, 6.400000095 +1393.5, 5.566666762 +1445.199951, 4.633333365 +1484.5, 4.23333327 +1504.099976, 3.500000079 +1548.300049, 3.099999984 +1585.400024, 3.166666587 +1596, 3.366666635 +1607.699951, 3.066666683 +1612.099976, 2.966666698 +1621.900024, 3.233333349 +1657.800049, 2.833333333 +1687.300049, 2.699999968 +1695.300049, 2.566666683 +1687.900024, 2.733333349 +1671.199951, 3.699999968 +1660.800049, 5.266666571 +1658.400024, 5.800000032 +1677.699951, 5.966666698 +1698.300049, 5.333333333 +1742.5, 4.73333327 +1758.599976, 4.399999936 +1778.199951, 4.099999905 +1793.900024, 4.23333327 +1787, 4.033333302 +1798.5, 4.200000127 +1802.199951, 4.133333365 +1826.599976, 4.133333365 +1836.400024, 3.933333317 +1834.800049, 4.100000064 +1851.199951, 4.23333327 +1830.5, 4.933333238 +1790.099976, 6.300000032 +1804.400024, 7.366666794 +1840.900024, 7.333333333 +1880.900024, 6.366666476 +1904.900024, 5.833333333 +1937.5, 5.099999905 +1930.800049, 5.266666571 +1941.900024, 5.600000064 +1976.900024, 5.133333365 +1971.699951, 5.23333327 +1973.699951, 5.533333302 +1961.099976, 6.266666571 +1977.400024, 6.800000032 +2006, 7 +2035.199951, 6.766666571 +2076.5, 6.199999968 +2103.800049, 5.633333365 +2125.699951, 5.533333302 +2142.600098, 5.566666603 +2140.199951, 5.533333302 +2170.899902, 5.766666571 +2199.5, 5.73333327 +2237.600098, 5.5 +2254.5, 5.566666603 +2311.100098, 5.466666698 +2329.899902, 5.199999968 +2357.399902, 5 +2364, 4.966666698 +2410.100098, 4.899999936 +2442.800049, 4.666666667 +2485.5, 4.366666794 +2543.800049, 4.099999905 +2596.800049, 3.866666635 +2601.399902, 3.833333333 +2626.100098, 3.766666651 +2640.5, 3.699999968 +2657.199951, 3.833333333 +2669, 3.833333333 +2699.5, 3.799999952 +2715.100098, 3.900000016 +2752.100098, 3.733333349 +2796.899902, 3.566666683 +2816.800049, 3.533333381 +2821.699951, 3.400000095 +2864.600098, 3.400000095 +2867.800049, 3.433333397 +2884.5, 3.566666683 +2875.100098, 3.566666683 +2867.800049, 4.166666667 +2859.5, 4.76666673 +2895, 5.166666667 +2873.300049, 5.833333333 +2939.899902, 5.933333397 +2944.199951, 5.900000095 +2962.300049, 6.033333302 +2977.300049, 5.933333397 +3037.300049, 5.76666673 +3089.699951, 5.699999809 +3125.800049, 5.566666603 +3175.5, 5.366666635 +3253.300049, 4.933333397 +3267.600098, 4.933333397 +3264.300049, 4.800000191 +3289.100098, 4.76666673 +3259.399902, 5.133333206 +3267.600098, 5.199999968 +3239.100098, 5.633333365 +3226.399902, 6.599999905 +3154, 8.266667048 +3190.399902, 8.866666794 +3249.899902, 8.46666654 +3292.5, 8.299999873 +3356.699951, 7.73333327 +3369.199951, 7.566666603 +3381, 7.733333429 +3416.300049, 7.76666673 +3466.399902, 7.5 +3525, 7.133333206 +3574.399902, 6.900000095 +3567.199951, 6.666666826 +3591.800049, 6.333333492 +3707, 6 +3735.600098, 6.033333302 +3779.600098, 5.900000095 +3780.800049, 5.866666794 +3784.300049, 5.699999968 +3807.5, 5.866666635 +3814.600098, 5.966666698 +3830.800049, 6.300000191 +3732.600098, 7.333333333 +3733.5, 7.666666667 +3808.5, 7.399999936 +3860.5, 7.433333397 +3844.399902, 7.399999936 +3864.5, 7.399999936 +3803.100098, 8.233333429 +3756.100098, 8.833333333 +3771.100098, 9.433333397 +3754.399902, 9.900000254 +3759.600098, 10.66666667 +3783.5, 10.36666648 +3886.5, 10.13333352 +3944.399902, 9.366666476 +4012.100098, 8.53333346 +4089.5, 7.866666794 +4144, 7.433333238 +4166.399902, 7.433333397 +4194.200195, 7.300000032 +4221.799805, 7.23333327 +4254.799805, 7.300000032 +4309, 7.199999968 +4333.5, 7.033333302 +4390.5, 7.033333143 +4387.700195, 7.166666508 +4412.600098, 6.966666698 +4427.100098, 6.833333333 +4460, 6.599999905 +4515.299805, 6.26666673 +4559.299805, 6 +4625.5, 5.833333333 +4655.299805, 5.699999809 +4704.799805, 5.466666698 +4734.5, 5.466666698 +4779.700195, 5.333333492 +4817.600098, 5.199999968 +4839, 5.23333327 +4839, 5.23333327 +4856.700195, 5.366666794 +4898.299805, 5.300000032 +4917.100098, 5.333333333 +4906.5, 5.699999968 +4867.200195, 6.133333365 +4842, 6.600000064 +4867.899902, 6.833333333 +4879.899902, 6.866666794 +4880.799805, 7.100000064 +4918.5, 7.366666794 +4947.5, 7.600000064 +4990.5, 7.633333206 +5060.700195, 7.366666794 +5075.299805, 7.133333365 +5105.399902, 7.066666603 +5139.399902, 6.800000032 +5218, 6.633333365 +5261.100098, 6.633333206 +5314.100098, 6.199999968 +5367, 6 +5433.799805, 5.566666603 +5470.100098, 5.533333302 +5487.799805, 5.633333206 +5544.600098, 5.633333206 \ No newline at end of file diff --git a/statsmodels/tsa/statespace/tests/results/example_ssm_wpi1.m b/statsmodels/tsa/statespace/tests/results/example_ssm_wpi1.m new file mode 100644 index 0000000..7e14fcb --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/example_ssm_wpi1.m @@ -0,0 +1,53 @@ +% Load the dataset +data = csvread('results_wpi1_ar3_stata.csv', 1, 0); + +% First differences +dwpi1 = diff(data(:,1)); + +% Parameters +ar = [.5270715, .0952613, .2580355]; +sigma2 = .5307459; + +% Create the state space representation +[nobs, k_endog] = size(dwpi1); +k_states = 3; +k_posdef = 1; + +obs = dwpi1'; +obs_intercept = [0]; +design = [1, 0, 0]; +obs_cov = [0]; + +state_intercept = [0; 0]; +transition = [ar; 1, 0, 0; 0, 1, 0]; +selection = [1; 0; 0]; +state_cov = [sigma2]; +selected_state_cov = selection * state_cov * selection'; + +initial_state = [0; 0]; +initial_state_cov = dlyap(conj(transition), selected_state_cov); + +mod = ssmodel('test', ssmat(obs_cov), ssmat(design), ssmat(transition),ssmat(selection),ssmat(state_cov)); +mod.P1 = initial_state_cov; + +% Optionally add missing values +% obs(10:20) = nan; + +% Estimate +[a, P] = kalman(dwpi1', mod); +[alphahat, V] = statesmo(dwpi1', mod); +[eps, eta, epsvar, etavar] = disturbsmo(dwpi1', mod); +% Note: simsmo seems to always crashes MATLAB +%[alphatilde, epstilde, etatilde] = simsmo(dwpi1', mod); + +% Calculate determinants of variance matrices (so that we can compare +% in unit tests) +detP = zeros(1,nobs); +detV = zeros(1,nobs); +for i = 1:nobs+1; + detP(i) = det(P(:,:,i)); + detV(i) = det(V(:,:,i)); +end; + +% Write output +csvwrite('results_wpi1_ar3_matlab_ssm.csv', [a(:,1:end-1) detP(:,1:end-1) alphahat detV eps epsvar eta etavar]); diff --git a/statsmodels/tsa/statespace/tests/results/kfas_helpers.R b/statsmodels/tsa/statespace/tests/results/kfas_helpers.R new file mode 100644 index 0000000..1532e0d --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/kfas_helpers.R @@ -0,0 +1,92 @@ +# Helper functions for working with KFAS objects + +cbind.fill <- function(...){ + nm <- list(...) + nm <- lapply(nm, as.matrix) + n <- max(sapply(nm, nrow)) + do.call(cbind, lapply(nm, function (x) + rbind(x, matrix(, n-nrow(x), ncol(x))))) +} + +flatten <- function(m) { + f <- t(apply(m, 3, c)) + dm <- dim(m) + df <- dim(f) + if(df[1] == 1 && dm[3] != 1) { + f <- t(f) + } + f +} + +kfas.output <- function(kf) { + # Dimensions + n = nrow(kf$model$y) + p = ncol(kf$model$y) + p2 = p^2 + m = nrow(kf$model$T) + m2 = m^2 + mp = m * p + r = nrow(kf$model$Q) + r2 = r^2 + + # Construct the output dataframe + # r = scaled_smoothed_estimator + # N = scaled_smoothed_estimator_cov + # m = forecasts + # v = forecasts_error + # F = forecasts_error_cov + # a = predicted_state + # P = predicted_state_cov + # mu = filtered_forecasts + # alphahat = smoothed_state + # V = smoothed_state_cov + # muhat = smoothed_forecasts + # etahat = smoothed_state_disturbance + # V_eta = smoothed_state_disturbance_cov + # epshat = smoothed_measurement_disturbance + # V_eps = smoothed_measurement_disturbance_cov + out <- as.data.frame(with(kf, cbind.fill( + t(r), t(r0), t(r1), + flatten(N), flatten(N0), flatten(N1), flatten(N2), + m, v, t(F), t(Finf), + flatten(K), flatten(Kinf), + a, flatten(P), flatten(Pinf), + att, flatten(Ptt), + alphahat, flatten(V), + muhat, flatten(V_mu), + etahat, flatten(V_eta), + epshat, t(V_eps), + logLik + ))) + names(out) <- c( + paste('r', 1:m, sep='_'), paste('r0', 1:m, sep='_'), paste('r1', 1:m, sep='_'), + paste('N', 1:m2, sep='_'), paste('N0', 1:m2, sep='_'), paste('N1', 1:m2, sep='_'), paste('N2', 1:m2, sep='_'), + paste('m', 1:p, sep='_'), paste('v', 1:p, sep='_'), paste('F', 1:p, sep='_'), paste('Finf', 1:p, sep='_'), + paste('K', 1:mp, sep='_'), paste('Kinf', 1:mp, sep='_'), + paste('a', 1:m, sep='_'), paste('P', 1:m2, sep='_'), paste('Pinf', 1:m2, sep='_'), + paste('att', 1:m, sep='_'), paste('Ptt', 1:m2, sep='_'), + paste('alphahat', 1:m, sep='_'), paste('V', 1:m2, sep='_'), + paste('muhat', 1:p, sep='_'), paste('Vmu', 1:p2, sep='_'), + paste('etahat', 1:r, sep='_'), paste('Veta', 1:r2, sep='_'), + paste('epshat', 1:p, sep='_'), paste('Veps', 1:p, sep='_'), + 'llf' + ) + return(out) +} + + +kfas.llf <- function(kf) { + # Dimensions + n = nrow(kf$model$y) + p = ncol(kf$model$y) + m = nrow(kf$model$T) + r = nrow(kf$model$Q) + d = kf$d + F = kf$F + Finf = kf$Finf + v = kf$v + + -((n * p / 2) * log(pi * 2) + + 0.5 * sum(log(Finf[1:d])) + + 0.5 * sum(log(F[(d+1):10]) + (v^2 / t(F))[(d+1):10])) +} diff --git a/statsmodels/tsa/statespace/tests/results/manufac.dta b/statsmodels/tsa/statespace/tests/results/manufac.dta new file mode 100644 index 0000000000000000000000000000000000000000..d7223da2df9976db77f3a983dde660a858b7f77a GIT binary patch literal 19146 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 literal 0 HcmV?d00001 diff --git a/statsmodels/tsa/statespace/tests/results/results_clark1989_R.csv b/statsmodels/tsa/statespace/tests/results/results_clark1989_R.csv new file mode 100644 index 0000000..b48c796 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_clark1989_R.csv @@ -0,0 +1,192 @@ +"V1","V2","V3","V4","V5","V6","V7" +3.05311586143239,5.89006643844833,3.64888781556215,3.23102452528435,1.9313118012054,1.96335547948278,1.37829447872922 +-3.5955999803748,4.91254999866502,2.14875076080577,2.42122408272305,2.57911998291172,0.166967750570698,1.45324116499101 +59.846257705582,7.15634059073761,0.0226689604782068,0.0263715297371735,0.0295115986864592,0.00967372640189428,0.0535654431742735 +26.485659017569,7.17949194878965,0.0114474848334981,0.0128473998896558,0.0135965599577913,0.0096833133785767,0.0460620550936838 +15.3882756335756,7.13501121631195,0.0367890878107785,0.0500558534180361,0.0680745718524389,0.0108788537959797,0.0797790940978318 +11.274281167952,7.13461810536652,0.0361332752840362,0.0501726332526735,0.0696668306714096,0.0131339158506836,0.0933838220437774 +8.71844789943065,7.16147182647851,0.0248955579468675,0.0323888645008597,0.0419392495635247,0.0140955272240702,0.089181233928414 +6.93846048629586,7.15970027916565,0.0165513187253069,0.0230063762073781,0.0319789402917848,0.0111266220350792,0.0855583922312727 +5.68782795321106,7.2170043649546,0.0124281548587174,0.00330602030925753,-0.0148287002947952,0.011784051522291,0.0620951436479374 +4.76095145253026,7.24177501771359,0.017573680346687,0.00987608853578487,-0.00650586727483833,0.0120772593273701,0.0561076729924106 +4.04420559034012,7.27332936898265,0.0233527031514802,0.0156625275107381,-0.00158633841299525,0.0129889311252455,0.0500109326303647 +3.47489296260815,7.29356071470478,0.0249759109483025,0.0234019195058055,0.0167957254917598,0.0141293400067671,0.0529741558023842 +3.01268551868752,7.30357003362293,0.0266229550975249,0.0253472254130622,0.0190212509242677,0.0129672833312086,0.0474659001456482 +2.63043866260206,7.33165856582715,0.029612539211467,0.0269672810634832,0.0177475606243886,0.0137129814202304,0.0437721867406596 +2.30947228972778,7.35505848902487,0.0266736542099829,0.02843162046247,0.0274994262901354,0.0148980739461444,0.0471091148821796 +2.03649577246723,7.36451636531048,0.0199954912366055,0.0255634379668718,0.0324319703666643,0.0148240252675994,0.0498832345954165 +1.80178248873188,7.37306051518617,0.0219475081269743,0.0232126312533336,0.0221226959957459,0.0137133117489171,0.0440996063104422 +1.59805587955087,7.37550763454485,0.0193547312222044,0.0226178134653052,0.0254801145198432,0.0128325070156189,0.0431865276061741 +1.41976631927749,7.38579760022282,0.013773806886505,0.0183521508822431,0.0244062233176091,0.0127961558139564,0.0444879584473296 +1.2626083691305,7.40621432783572,0.0227002346013343,0.0196678527061048,0.0108115651268224,0.0126354498271514,0.0378334930103073 +1.12319145011097,7.42159235671843,0.0218510724686383,0.0221558991178462,0.0193708407536051,0.0128633295915056,0.0383968556039018 +0.998809792274693,7.42633578561684,0.0184850316009947,0.0216493371293716,0.0244682167050612,0.0123700985388656,0.0385200009414589 +0.887278360363255,7.42567852533859,0.0113652613992727,0.0172216792318708,0.025918173365877,0.0116597586567288,0.0394543568066188 +0.78681372331025,7.42847812331328,-0.00586917845166284,0.00440102009164559,0.0235809734439601,0.0115819624828229,0.0447581296726012 +0.695946144915452,7.44203816561855,-0.0256423289454414,-0.0147537578538987,0.00853855530098726,0.0122296852892283,0.0512119270276379 +0.613453753020942,7.44737032115595,-0.0242682134322072,-0.0221290855690234,-0.0146244436474465,0.0116326599935814,0.0487314339932781 +0.538312581693835,7.45876126064717,-0.019833567410687,-0.0220729439629558,-0.0230396108216929,0.0115092591145121,0.0473189055560321 +0.469658196814173,7.4616397569477,-0.00788189027746566,-0.0135333890386993,-0.0223955233717962,0.010723309345898,0.043350712229921 +0.406755890536413,7.4782427093985,0.0023872189634805,-0.00426348160890113,-0.0164686277554038,0.0109030851549162,0.0413392731883956 +0.348977294359936,7.48312342061112,0.00064428911809669,-0.000183662007138751,-0.00175595242410666,0.0106664553063006,0.0426736474094064 +0.295781855811861,7.4913500360067,0.00363352639426478,0.00246874620879177,-0.000158514038402786,0.0104619140844113,0.0416592889979983 +0.246702039859934,7.50206056040116,-0.000772999039515797,0.000667098259600898,0.00334891797171362,0.0105803455770489,0.0431908039991471 +0.201331411089488,7.49668230615359,-0.00040850007855489,0.0012466675697805,0.00425590919289391,0.00963545856394214,0.0419216522686671 +0.159314964381904,7.50542907915846,-0.00246940443837749,-0.00111162154442264,0.00168199078208013,0.00960919447836092,0.0422457991728365 +0.120341225599874,7.50676176056618,-0.0016039986339907,-0.00088627730316243,0.000635907435341688,0.0091120906510758,0.0413665617482811 +0.0841357567167695,7.51974256417051,0.000810198548187624,-0.000249069971667919,-0.00225848858921185,0.00928191308042661,0.0408140078791957 +0.0504557836190642,7.52239214716679,0.00235090639569873,0.00206135579059925,0.00118777975994559,0.00889107751327666,0.0401478425421737 +0.0190857275903788,7.52464888976921,-0.00433200170447251,-0.00132432697012175,0.00469058470679488,0.00863377337016533,0.0416316864054893 +-0.0101665310586732,7.53548210318306,-0.00343881343845744,-0.00317150556756751,-0.00217185027781924,0.00872126764539798,0.0411756424404386 +-0.0374727925642454,7.53450664892668,-0.0205730440615201,-0.0137025157704056,0.00166363906833857,0.00845970059598372,0.0452828183488797 +-0.0629871880258809,7.53268879066276,-0.0453579843995839,-0.034415952035778,-0.00802586089578554,0.00824608883791264,0.0507604691354042 +-0.0868484264672511,7.55295090055158,-0.0469027366696696,-0.0460717769611642,-0.0374492127697782,0.00889570475535495,0.0512404180447016 +-0.109181707843348,7.56746859477766,-0.0328581245805268,-0.0404129567207658,-0.048860231410651,0.00904576356727686,0.0487737404149318 +-0.130100358001978,7.57208612594867,-0.0132736345894711,-0.023960387005654,-0.0409666661248252,0.00862006150640749,0.04525268021638 +-0.149707231181235,7.5770040986864,-0.0118990778506457,-0.0163279952362057,-0.0224015246213312,0.00849129810645438,0.046362150640831 +-0.168095917329879,7.58400531177602,-0.000669229434010696,-0.00654855054406899,-0.0169147731248133,0.00830300000445144,0.0443216683336055 +-0.185351784905471,7.58426249524471,-0.0137190263594344,-0.0104902499327705,-0.00265207203794051,0.00808251614751724,0.0478544647412047 +-0.201552884466669,7.5955281829213,-0.0170776810412131,-0.0158167532832912,-0.0109708284248612,0.00828926305940958,0.0486742443816067 +-0.216770734064811,7.60447623122146,-0.000999666437106748,-0.00706113078284577,-0.0177013359409093,0.00812984809650163,0.045040676835907 +-0.231071003928823,7.60353211680739,-0.0113394443664875,-0.00906779572440281,-0.00329618347010668,0.00781295216241788,0.0478107929272704 +-0.244514115077603,7.61003982057545,-0.016720693614219,-0.014569088764484,-0.00819167890735153,0.00780552387737454,0.0489428797104331 +-0.257155764142161,7.61415711174409,-0.0298170728387057,-0.0251276299675863,-0.0122370852582976,0.0077686747277431,0.0518587166774857 +-0.269047384745076,7.6284271983984,-0.0304409606762036,-0.0307681297394627,-0.0267146575290935,0.00812092705875164,0.0522841099600888 +-0.280236554183521,7.64282595077135,-0.0270687406702416,-0.0304830457402648,-0.0324397964789198,0.00844493650920496,0.0523868387552935 +-0.290767352830989,7.65196410625081,-0.0201884393980875,-0.0251672756570643,-0.0309575107307103,0.00844748152419819,0.0517410802937378 +-0.300680682564407,7.66231518361393,-0.00851823922744579,-0.0154128184768143,-0.026391347459077,0.00846330206630818,0.0501328325478718 +-0.310014549594994,7.66700201035792,-0.00288738278707351,-0.00725347568355476,-0.0145875794553989,0.00824799907800862,0.0496518428107296 +-0.318804316301978,7.67685912351917,-0.00581278330137218,-0.00660989292454924,-0.00714389199716869,0.00839281476677372,0.0509308466199465 +-0.327082926012094,7.68584771764775,-0.00759226641346476,-0.00761913444056465,-0.0065107109819325,0.0084532136399064,0.0515453397095943 +-0.33488110411327,7.68461350986917,-0.00893468053683636,-0.00799529471508684,-0.00496201182357513,0.00796367645623853,0.0515536928610765 +-0.342227538421293,7.7014871201578,-0.0093160798372043,-0.0101507200319795,-0.0102180088205129,0.00843933817367703,0.0520724931557307 +-0.349149041319125,7.71307221526828,-0.006480018357857,-0.00849972221691119,-0.011108936335938,0.00858715226259051,0.0518426122234561 +-0.355670695847903,7.72594217355174,-0.000609559008751368,-0.0040160176359298,-0.00998839124079919,0.00876697023113929,0.0510855011807255 +-0.36181598763981,7.73493044337321,-0.0059856364599198,-0.00539344433447352,-0.00342746431614844,0.00885350117759763,0.0526561345252551 +-0.367606924332841,7.75747989991486,0.00133942354219691,-0.0025025012882949,-0.00954704305406045,0.0094984755731902,0.0516877777209457 +-0.37306414389558,7.76158449018137,0.00229184866310906,0.00122113464959747,-0.0010343101704623,0.00922503970906906,0.0516605336591928 +-0.378207013106668,7.7709862504679,0.00457533785407686,0.00354314362080804,0.00100852001388014,0.0092148398674576,0.0512571811554138 +-0.383053717275459,7.77417188365411,0.00134223234721363,0.00287189382063033,0.00539104416287091,0.00893339894875469,0.0517353891914012 +-0.387621342154746,7.79203258750868,0.00678881918993232,0.00472808490997854,2.50422426504599e-05,0.00933711235665684,0.0507507581540481 +-0.391925948878311,7.80174297410661,0.00992964816670736,0.00848780340094014,0.00440836307169925,0.00933055609961753,0.0502097036233239 +-0.395982642655284,7.81489990116163,0.0147642871392182,0.0128115330296111,0.00708612766479499,0.00948230865651565,0.0493314547227213 +-0.399805635862787,7.83418416651968,0.0196081138457205,0.0171756307792267,0.0098583778752134,0.00994547301900224,0.0486741359344262 +-0.403408306104203,7.85199286076645,0.0215763177098188,0.0203766668905128,0.0149547271610193,0.0103343120272572,0.04851892502575 +-0.406803249731788,7.85550965067692,0.0146633944480095,0.0183305825906793,0.0226268607731493,0.01003523030998,0.0494734667520653 +-0.410002331275037,7.86497324029229,0.0169010705448475,0.0182357078385327,0.0180380884536414,0.0099537759442902,0.0483340942643002 +-0.413016729164984,7.86989446627083,0.0165834412035452,0.0185035576553771,0.0193967583209867,0.00967445177921586,0.0477709050500478 +-0.415856978101298,7.87909419661928,0.012737007782762,0.0155986326242145,0.0187539822841921,0.00966463189287253,0.0480767876628141 +-0.418533008368845,7.88415482210439,0.012567330938021,0.0147064124173643,0.0166011131004477,0.00940208511723209,0.04740525060826 +-0.421054182377984,7.89495652890651,0.0147698982084443,0.0152991219330323,0.0139920283989613,0.00943380118119982,0.0465603961157404 +-0.4234293286715,7.90288331476524,0.0105865927562005,0.0130822791815552,0.015913571618027,0.00938149375009737,0.0470746157924251 +-0.425666773617051,7.91400605625889,0.016102789728023,0.0155128655379664,0.0120101346313482,0.00939935058532955,0.0455469818105297 +-0.427774370978643,7.92751901690853,0.0190512630063106,0.0183244340244389,0.0141289069781824,0.00957654600100184,0.044894478430364 +-0.429759529542155,7.93544033177844,0.0152632815008156,0.0174320100458722,0.018968918370412,0.00951555658783972,0.04538384445102 +-0.431629238951913,7.93659246754525,0.0152146465044574,0.0175605979483976,0.0194204588423087,0.00905826368062897,0.0445772788102649 +-0.433390093898616,7.95163464571889,0.0176320477485079,0.017873760478783,0.0156188628171758,0.0093243686411985,0.0438095370826407 +-0.435048316786227,7.95431659510707,0.0127283008191972,0.0159942376060608,0.0198707914966723,0.0090103513459242,0.044251205834416 +-0.43660977899221,7.96299547466522,0.0105463974954681,0.0130996686778587,0.0160396124120582,0.00898828964613086,0.0441320127839574 +-0.438080020825579,7.96043550801873,0.0086432279783107,0.0117919760657877,0.0160820102441524,0.00838471476350112,0.0436247935560906 +-0.439464270276435,7.96781778576723,-0.00390762494149302,0.00191111287337866,0.0128664975018735,0.0084284172734033,0.0457089918613708 +-0.440767460642761,7.97402075570588,-0.0119459608583046,-0.00725623465868079,0.00291313865046912,0.00836245769183101,0.0467271650351511 +-0.441994247113102,7.99037259611001,-0.0107098307605022,-0.010879371879782,-0.00955018957262654,0.00875283422313737,0.0464773479204238 +-0.443149022375183,7.99274390231154,-0.0260410763661642,-0.0209551293436902,-0.00793367251925568,0.00857228192002571,0.0495926503813462 +-0.444235931316859,8.01474672428534,-0.0148561473474052,-0.0194543135297887,-0.0253788446773941,0.0091615979412069,0.0476854458088896 +-0.445258884878085,8.01445570501153,-0.0175517513622147,-0.0181354314270826,-0.0165016359857206,0.00872787790342549,0.0486066659951319 +-0.446221573109157,8.02279134031007,-0.0200784104518362,-0.0203235074975531,-0.0177020675107874,0.00874654365539427,0.0494614237767354 +-0.447127477485767,8.02555388510661,-0.0166368661609397,-0.0183624719512018,-0.0189012096665725,0.00841926816913121,0.0488701796485755 +-0.447979882526911,8.04130659997515,-0.0091946350069519,-0.0138301810060974,-0.0206834853863367,0.00875216097668585,0.0480748354072207 +-0.448781886759079,8.05674984301233,-0.009027967682225,-0.0117931629382835,-0.0153416867306943,0.00912741813332422,0.0489452062506648 +-0.449536413065924,8.06662475090145,-0.0082389217472002,-0.0100004286664358,-0.0118820509447465,0.00917877715093565,0.04925328099161 +-0.450246218460869,8.07899092876585,-0.00355581574282757,-0.00645486361373738,-0.0110750920557397,0.00931568590908938,0.0487335067585142 +-0.450913903316346,8.09568790900513,0.00662986018454369,0.00135919295047495,-0.00903493297625548,0.00962194210908022,0.0472881251951839 +-0.451541920081621,8.10148464182581,-0.00186963431185949,-0.000151894569652166,0.00319127980692052,0.00952166779701051,0.0493445629982003 +-0.452132581518942,8.10003632269661,-0.00178756123130804,-0.000291802571608071,0.00264363475906411,0.00894388148905711,0.0487496946142196 +-0.45268806848566,8.10669752499024,0.000640891520287884,0.000468844728204895,6.49106898352206e-05,0.00879708981797652,0.0480310417372902 +-0.453210437287869,8.10425482983935,-0.011797435709635,-0.00662888853889537,0.00437040684686561,0.00832756302544841,0.0501635704248348 +-0.453701626630248,8.10746580563564,-0.00803514066941179,-0.007643630443149,-0.00572283628206834,0.00801109573334696,0.04883262701621 +-0.454163464184113,8.10506173580548,-0.0186679812136187,-0.014439544693591,-0.00406777039754607,0.00757136843536483,0.0507055299913916 +-0.454597672795573,8.11571930839324,-0.0340334223056019,-0.0287310237926095,-0.0141069826380901,0.0078660714158834,0.0538371588249519 +-0.455005876353121,8.11812604453887,-0.0645448852219932,-0.0538378055870262,-0.0249439846873157,0.00786147142886324,0.0598866369407322 +-0.455389605333852,8.13382039051427,-0.0537192390461809,-0.057753704371126,-0.0567559216542365,0.00816513709277533,0.0578704759769778 +-0.455750302045653,8.14034311625477,-0.0360429349397598,-0.0459878128407468,-0.0582055388826698,0.00797582794916855,0.0554732647929456 +-0.45608932558202,8.14946357775555,-0.0367438952164571,-0.041946353652441,-0.0456134400579991,0.00811479048567791,0.0573022385631651 +-0.45640795650533,8.15930491846424,-0.0244760944612091,-0.0324479299839992,-0.0429142188785379,0.00814337559612594,0.0559962685156514 +-0.456707401272895,8.16059232486147,-0.0280941017370363,-0.0302861006016453,-0.0299103756921532,0.00787563236213108,0.0577185952122781 +-0.456988796420159,8.16707303462208,-0.0326995659288804,-0.0332703691466912,-0.0293067143845649,0.00787586276750566,0.0592982811507887 +-0.457253212513878,8.17645573766656,-0.0288626660256031,-0.0321970280985474,-0.0337382348283894,0.00794532215863154,0.0591581415863098 +-0.45750165788777,8.18501496410896,-0.0207914863504462,-0.0262031016600592,-0.0326720598136754,0.00794002029460952,0.0583457442279391 +-0.45773508217248,8.19512491763977,-0.0140491306136847,-0.0194575056153342,-0.0269475195250711,0.00803169677806192,0.0579562034748546 +-0.457954379630524,8.2054518118378,-0.0123372858705821,-0.0157282916474075,-0.0198870806275054,0.00817093873269867,0.058494740698794 +-0.458160392307293,8.20097433858598,-0.0137116862426054,-0.0138867189600923,-0.01211014773562,0.00755138004888332,0.0588500102024081 +-0.458353913007734,8.20263322281789,-0.00636255297105795,-0.00903550730098874,-0.0128257245128317,0.00718895329007758,0.0573555028137881 +-0.45853568810792,8.2271222628883,0.00576610132123194,-0.00114998744976967,-0.0143422437190798,0.00799407228779353,0.0559182714040049 +-0.458706420210468,8.23636234245489,-0.0033628591205462,-0.00252806574850952,-0.000529568859943964,0.00817052323674878,0.0584803516289879 +-0.458866770652808,8.2469586732032,-0.000127030342855296,-0.00131969400292862,-0.00342388792256789,0.00826549036313151,0.0578753969810232 +-0.459017361875135,8.24714062432722,-0.00280518452342158,-0.00157391792082128,0.00104556943418787,0.00787578701353398,0.0582429677887127 +-0.459158779656776,8.24599485410763,-0.000284385968303856,1.84888100951842e-06,0.000554801066972059,0.00738048182729339,0.0572940117686395 +-0.459291575227151,8.254507140582,-0.00329126664294644,-0.00231354086491303,-7.14557049562582e-05,0.0074655149477655,0.0579284901092934 +-0.459416267258916,8.25804062541075,-0.00540938121556428,-0.00417115124039777,-0.00114266019957971,0.00727835953726385,0.0581614198518056 +-0.459533343748789,8.26714057132696,-0.0105878468790761,-0.0088934433900085,-0.00426408157823707,0.00741817749842145,0.0592494898716621 +-0.459643263793151,8.25860807615783,-0.0373375822695121,-0.0269146734292049,-0.00267034757290567,0.00683305572444155,0.0641147454379306 +-0.459746459263312,8.26183583782361,-0.029573489136566,-0.0301816194961523,-0.0267605107500289,0.0065528078517011,0.0618815445563813 +-0.459843336386333,8.27294867719161,-0.0138715624192553,-0.0212872564492384,-0.0323783484949401,0.00667073092952578,0.0593788973631355 +-0.459934277236654,8.28608267215544,-0.0178783844593274,-0.0204429531722119,-0.0222863893322863,0.00708773123436302,0.0614594097589753 +-0.460019641142714,8.28270985619835,-0.0223805387898029,-0.0217266609113338,-0.0171539923473483,0.00661039782950743,0.062542252491617 +-0.460099766014729,8.28727862706199,-0.0194740619319192,-0.0212001464112017,-0.0213076465181082,0.00649089410386078,0.0621602106416409 +-0.460174969595674,8.28455769139591,-0.0412353352696633,-0.0347531894560985,-0.0169317926688741,0.00623267355856966,0.0667664795147908 +-0.460245550642047,8.28062963083914,-0.0465237770460769,-0.0437409274993028,-0.0317007331970293,0.0057522132070484,0.0674396614255773 +-0.460311790036747,8.2901144748853,-0.0475083263717855,-0.0490171773929424,-0.0444684226522366,0.00597525643354109,0.0682410260745225 +-0.460373951838385,8.29047467804273,-0.0535177840327702,-0.05401142100354,-0.0467398670404291,0.00577951866169217,0.070185267607139 +-0.460432284270574,8.30143035347698,-0.0628071349395936,-0.0631889744912518,-0.0543036459769348,0.00617350517297957,0.0732049755424862 +-0.46048702065432,8.30747758319052,-0.0578241297241173,-0.0629043621534484,-0.0631434166553186,0.00616843490249139,0.0732336406598952 +-0.460538380286808,8.32187406760861,-0.0382145481093821,-0.0501245414802977,-0.0655104342390278,0.00648523745803855,0.0710128471005661 +-0.460586569269641,8.32640133419603,-0.0318622850332176,-0.0399402923864228,-0.0494707426596565,0.00640893619678227,0.0715135430745333 +-0.460631781289116,8.33425218624849,-0.0232531170989765,-0.0307160322831959,-0.0404624405100773,0.00646605554365936,0.0711784317668877 +-0.460674198351591,8.34381291901472,-0.0137599377888015,-0.0210446844015817,-0.031919624157001,0.006590242438113,0.0705298326973555 +-0.460713991476082,8.35000593595934,-0.00935843664722759,-0.0140149981730184,-0.0208807746156054,0.00657415384699854,0.070604771042063 +-0.460751321346784,8.35278595255341,-0.0102279549633268,-0.0115588224574069,-0.0123707711581786,0.006419521043316,0.0712484316757174 +-0.460786338927534,8.35846475857033,-0.00946701213277446,-0.0106175979965746,-0.0112244424734342,0.00638921658395925,0.0713613116731611 +-0.460819186040696,8.36417197520124,-0.00876087377233182,-0.00979390528906465,-0.0102989851608835,0.00636125972904064,0.0714545527266902 +-0.460849995912033,8.37081359097767,-0.00728934011332185,-0.00863784266570424,-0.00992872612683708,0.00637275776504395,0.0714202217022238 +-0.460878893684035,8.38080895041987,-0.00298925536166001,-0.0058265811423956,-0.0104231974332052,0.0065212316616325,0.0710236787843444 +-0.460905996898914,8.38456184102815,-0.00349377701747447,-0.00402308993392955,-0.00443344884482009,0.00640794251982013,0.0712939131805441 +-0.460931415953486,8.39566241156822,0.000643077651950394,-0.00186445341176694,-0.00642705467994664,0.00659956335639851,0.0708865886666761 +-0.460955254527405,8.3946712639794,-0.00369690390699616,-0.00182035113037069,0.00208387366150195,0.00629041762582336,0.071470466748419 +-0.460977609985949,8.40194640063818,-0.00367601953659493,-0.00339661104947861,-0.0023392853543773,0.00633040350529917,0.0714036175319166 +-0.460998573759246,8.40605625188732,-0.00506341090170161,-0.00431568846455824,-0.00221323649995116,0.00624052014885767,0.0715360148173993 +-0.46101823169938,8.41384659095816,-0.00401001613878128,-0.00463949773960263,-0.00514958669933158,0.00630304820444667,0.0714553268651976 +-0.461036664415871,8.42456499665723,-0.000471070215992232,-0.00285753294787014,-0.00703489298585052,0.0064805980694292,0.0712560017985613 +-0.46105394759179,8.43173177365724,0.00124179462268982,-0.000299334453882988,-0.00323243653121243,0.00650810002025723,0.071229370050528 +-0.461070152280918,8.4435400601179,0.00528682962190714,0.00251954078630015,-0.00321277857329377,0.00671984869282695,0.0710543655466478 +-0.461085345187339,8.44769132085028,0.00470596832503811,0.00468782054672946,0.00393881429744084,0.0066175488188307,0.071125568570599 +-0.46109958892841,8.45762979521595,0.00638021808738867,0.0054581266734534,0.00284466763391798,0.00674942019068897,0.0710495897414578 +-0.461112942281983,8.46321206704083,0.00564744456227871,0.0061225401379927,0.00610837278783925,0.00670320375526984,0.0710711323249659 +-0.461125460419292,8.47269791424426,0.00662570655413803,0.00624828812011948,0.00456723378641566,0.00681309955719665,0.0710309942774019 +-0.46113719512336,8.48011451248718,0.00665780859974765,0.00675354070342043,0.00591004285162104,0.00683687512104681,0.0710245063804024 +-0.461148194994886,8.48497632678908,0.00491758738494183,0.00624628228350071,0.00786310357911314,0.00675924227926265,0.0710391393171194 +-0.461158505645495,8.48707907070606,0.00111022408427825,0.00396089042739999,0.00886742614431246,0.00657659434013737,0.0710595119260961 +-0.461168169879557,8.4935914133918,-0.00048965737435514,0.00109717960476921,0.00399711816535089,0.00657407893028271,0.071059616444466 +-0.461177227865168,8.50321364304557,0.000499758100168594,0.000123007281014663,-0.000623908802485016,0.0066932050102896,0.0710622288001567 +-0.461185717294654,8.50711516658999,-0.000961667127048013,-5.66690643922895e-05,0.00170113856741867,0.00658427278578863,0.0710535878596151 +-0.461193673535717,8.50693706453303,-0.00525943659413535,-0.00230015613456461,0.00376983287206248,0.0063207727519194,0.0710190613883627 +-0.461201129773049,8.50340925216386,-0.0120499964890613,-0.00719761477636012,0.00327721106707266,0.00593749525842245,0.0709510592016643 +-0.461208117142131,8.50392227486672,-0.0167300338100496,-0.0131125137339335,-0.00412361649922148,0.00572662363477801,0.0709049086520994 +-0.461214664854144,8.51243854635076,-0.0156819896374789,-0.0161856909540868,-0.0146942480206439,0.00583496394930853,0.0709326075267825 +-0.461220800313961,8.51491929053106,-0.0161088355608708,-0.0163344966636665,-0.0142829962107777,0.00570480711581588,0.0708951004252309 +-0.461226549230645,8.51565036730586,-0.017571578360365,-0.0170740406082554,-0.0135121151913277,0.00551194681243092,0.0708340280135732 +-0.461231935721513,8.52348286677857,-0.0151163472519459,-0.0171221094079774,-0.0183912330687521,0.00560187241777952,0.0708647326804055 +-0.461236982409717,8.52758748233802,-0.0137438958956907,-0.0154059235845297,-0.0162720444422973,0.00554388127677317,0.0708436949376198 +-0.461241710515943,8.5343854407848,-0.0110840647973943,-0.0135016240542994,-0.0161180485535535,0.00559243260385956,0.0708621887583494 +-0.461246139944754,8.54513998761251,-0.00600963575405356,-0.0100876446476973,-0.0164333116725017,0.00579221179821754,0.0709413215003656 +-0.461250289365199,8.54487660679858,-0.0068862527810081,-0.00717780906434207,-0.00664818570477257,0.00555792069224953,0.070845597289523 +-0.46125417628721,8.55048972758368,-0.00616126876610895,-0.00687560878251645,-0.00720916391532687,0.00556005591296025,0.0708464909550641 +-0.461257817132667,8.55636443879348,-0.00512646589930619,-0.00610061252069629,-0.00705434882503799,0.00557222522311138,0.0708516775590453 +-0.461261227302688,8.56941587045049,5.34429039438554e-05,-0.00368495470619765,-0.0103493180025179,0.00586145004762208,0.0709765553728124 +-0.461264421240309,8.57408682903843,0.00130346616017604,-0.000175984512378184,-0.00300866032033818,0.00581541655541651,0.0709565120061284 +-0.46126741248984,8.58226668943437,0.00331664968835029,0.00175911391526883,-0.00151918977354136,0.00590684054940533,0.0709964915290854 +-0.461270213752308,8.59028873411286,0.00506924994728857,0.00372426493747616,0.000557496543415938,0.00598862687350854,0.0710322809543516 +-0.461272836937436,8.60064111404984,0.00785805028183223,0.00591019291617041,0.00124528957244867,0.00615735884350221,0.0711059249261073 +-0.461275293212722,8.6055446525334,0.0075305402250501,0.00761641783589469,0.0066224616281679,0.00610887566915024,0.0710848824997491 +-0.461277593049231,8.60923379274058,0.00551067702201416,0.00706420007272927,0.00899100391509891,0.00601530275371108,0.0710446079960047 +-0.461279746264881,8.62030544317783,0.00716071702084019,0.00648518486877146,0.00419185921417464,0.00621085024969832,0.0711278636375168 diff --git a/statsmodels/tsa/statespace/tests/results/results_dynamic_factor.py b/statsmodels/tsa/statespace/tests/results/results_dynamic_factor.py new file mode 100644 index 0000000..92d342e --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_dynamic_factor.py @@ -0,0 +1,217 @@ +""" +Results for VARMAX tests + +Results from Stata using script `test_varmax_stata.do`. +See also Stata time series documentation, in particular `dfactor`. + +Data from: + +http://www.jmulti.de/download/datasets/e1.dat + +Author: Chad Fulton +License: Simplified-BSD +""" + +lutkepohl_dfm = { + 'params': [ + .0063728, .00660177, .00636009, # Factor loadings + .00203899, .00009016, .00005348, # Idiosyncratic variances + .33101874, .63927819, # Factor transitions + ], + 'bse_oim': [ + .002006, .0012514, .0012128, # Factor loadings + .0003359, .0000184, .0000141, # Idiosyncratic variances + .1196637, .1218577, # Factor transitions + ], + 'loglike': 594.0902026190786, + 'aic': -1172.18, + 'bic': -1153.641, +} + +lutkepohl_dfm2 = { + 'params': [ + .03411188, .03478764, # Factor loadings: y1 + .03553366, .0344871, # Factor loadings: y2 + .03536757, .03433391, # Factor loadings: y3 + .00224401, .00014678, .00010922, # Idiosyncratic variances + .08845946, .08862982, # Factor transitions: Phi, row 1 + .08754759, .08758589 # Phi, row 2 + ], + 'bse_oim': None, + 'loglike': 496.379832917306, + 'aic': -974.7597, + 'bic': -953.9023, +} + +lutkepohl_dfm_exog1 = { + 'params': [ + -.01254697, -.00734604, -.00671296, # Factor loadings + .01803325, .02066737, .01983089, # Beta.constant + .00198667, .00008426, .00005684, # Idiosyncratic variances + .31140829, # Factor transition + ], + 'var_oim': [ + .00004224, 2.730e-06, 3.625e-06, + .00003087, 2.626e-06, 2.013e-06, + 1.170e-07, 5.133e-10, 3.929e-10, + .07412117 + ], + 'loglike': 596.9781590009525, + 'aic': -1173.956, + 'bic': -1150.781, +} + +lutkepohl_dfm_exog2 = { + 'params': [ + .01249096, .00731147, .00680776, # Factor loadings + .02187812, -.00009851, # Betas, y1 + .02302646, -.00006045, # Betas, y2 + .02009233, -6.683e-06, # Betas, y3 + .0019856, .00008378, .00005581, # Idiosyncratic variances + .2995768, # Factor transition + ], + 'var_oim': [ + .00004278, 2.659e-06, 3.766e-06, + .00013003, 6.536e-08, + .00001079, 5.424e-09, + 8.393e-06, 4.217e-09, + 1.168e-07, 5.140e-10, 4.181e-10, + .07578382, + ], + 'loglike': 597.4550537198315, + 'aic': -1168.91, + 'bic': -1138.783, +} + +lutkepohl_dfm_gen = { + 'params': [ + .00312295, .00332555, .00318837, # Factor loadings + # .00195462, # Covariance, lower triangle + # 3.642e-06, .00010047, + # .00007018, .00002565, .00006118 + # Note: the following are the Cholesky of the covariance + # matrix defined just above + .04421108, # Cholesky, lower triangle + .00008238, .01002313, + .00158738, .00254603, .00722343, + .987374, # Factor transition + -.25613562, .00392166, .44859028, # Error transition parameters + .01635544, -.249141, .08170863, + -.02280001, .02059063, -.41808254 + ], + 'var_oim': [ + 1.418e-06, 1.030e-06, 9.314e-07, # Factor loadings + None, # Cholesky, lower triangle + None, None, + None, None, None, + .00021421, # Factor transition + .01307587, .29167522, .43204063, # Error transition parameters + .00076899, .01742173, .0220161, + .00055435, .01456365, .01707167 + ], + 'loglike': 607.7715711926285, + 'aic': -1177.543, + 'bic': -1133.511, +} + +lutkepohl_dfm_ar2 = { + 'params': [ + .00419132, .0044007, .00422976, # Factor loadings + .00188101, .0000786, .0000418, # Idiosyncratic variance + .97855802, # Factor transition + -.28856258, -.14910552, # Error transition parameters + -.41544832, -.26706536, + -.72661178, -.27278821, + ], + 'var_oim': [ + 1.176e-06, 7.304e-07, 6.726e-07, # Factor loadings + 9.517e-08, 2.300e-10, 1.389e-10, # Idiosyncratic variance + .00041159, # Factor transition + .0131511, .01296008, # Error transition parameters + .01748435, .01616862, + .03262051, .02546648, + ], + 'loglike': 607.4203109232711, + 'aic': -1188.841, + 'bic': -1158.713, +} + +lutkepohl_dfm_scalar = { + 'params': [ + .04424851, .00114077, .00275081, # Factor loadings + .01812298, .02071169, .01987196, # Beta.constant + .00012067, # Idiosyncratic variance + -.19915198, # Factor transition + ], + 'var_oim': [ + .00001479, 1.664e-06, 1.671e-06, + .00001985, 1.621e-06, 1.679e-06, + 1.941e-10, + .01409482 + ], + 'loglike': 588.7677809701966, + 'aic': -1161.536, + 'bic': -1142.996, +} + +lutkepohl_sfm = { + 'params': [ + .02177607, .02089956, .02239669, # Factor loadings + .00201477, .00013623, 7.452e-16 # Idiosyncratic variance + ], + 'var_oim': [ + .00003003, 4.729e-06, 3.344e-06, + 1.083e-07, 4.950e-10, 0 + ], + 'loglike': 532.2215594949788, + 'aic': -1054.443, + 'bic': -1042.856, +} + +lutkepohl_sur = { + 'params': [ + .02169026, -.00009184, # Betas, y1 + .0229165, -.00005654, # Betas, y2 + .01998994, -3.049e-06, # Betas, y3 + # .00215703, # Covariance, lower triangle + # .0000484, .00014252, + # .00012772, .00005642, .00010673, + # Note: the following are the Cholesky of the covariance + # matrix defined just above + .04644384, # Cholesky, lower triangle + .00104212, .0118926, + .00274999, .00450315, .00888196, + ], + 'var_oim': [ + .0001221, 6.137e-08, + 8.067e-06, 4.055e-09, + 6.042e-06, 3.036e-09, + None, + None, None, + None, None, None + ], + 'loglike': 597.6181259116113, + 'aic': -1171.236, + 'bic': -1143.426, +} + + +lutkepohl_sur_auto = { + 'params': [ + .02243063, -.00011112, # Betas, y1 + .02286952, -.0000554, # Betas, y2 + .0020338, .00013843, # Idiosyncratic variance + -.21127833, .50884609, # Error transition parameters + .04292935, .00855789, + ], + 'var_oim': [ + .00008357, 4.209e-08, + 8.402e-06, 4.222e-09, + 1.103e-07, 5.110e-10, + .01259537, .19382105, + .00085936, .01321035, + ], + 'loglike': 352.7250284160132, + 'aic': -685.4501, + 'bic': -662.2752 +} diff --git a/statsmodels/tsa/statespace/tests/results/results_dynamic_factor_stata.csv b/statsmodels/tsa/statespace/tests/results/results_dynamic_factor_stata.csv new file mode 100644 index 0000000..5143500 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_dynamic_factor_stata.csv @@ -0,0 +1,93 @@ +predict_dfm_1,predict_dfm_2,predict_dfm_3,predict_dfm2_1,predict_dfm2_2,predict_dfm2_3,predict_dfm_exog1_1,predict_dfm_exog1_2,predict_dfm_exog1_3,predict_dfm_exog2_1,predict_dfm_exog2_2,predict_dfm_exog2_3,predict_dfm_gen_1,predict_dfm_gen_2,predict_dfm_gen_3,predict_dfm_ar2_1,predict_dfm_ar2_2,predict_dfm_ar2_3,predict_dfm_scalar_1,predict_dfm_scalar_2,predict_dfm_scalar_3,predict_sfm_1,predict_sfm_2,predict_sfm_3,predict_sur_1,predict_sur_2,predict_sur_3,predict_sur_auto_1,predict_sur_auto_2,dyn_predict_dfm_1,dyn_predict_dfm_2,dyn_predict_dfm_3,dyn_predict_dfm2_1,dyn_predict_dfm2_2,dyn_predict_dfm2_3,dyn_predict_dfm_exog1_1,dyn_predict_dfm_exog1_2,dyn_predict_dfm_exog1_3,dyn_predict_dfm_exog2_1,dyn_predict_dfm_exog2_2,dyn_predict_dfm_exog2_3,dyn_predict_dfm_gen_1,dyn_predict_dfm_gen_2,dyn_predict_dfm_gen_3,dyn_predict_dfm_ar2_1,dyn_predict_dfm_ar2_2,dyn_predict_dfm_ar2_3,dyn_predict_dfm_scalar_1,dyn_predict_dfm_scalar_2,dyn_predict_dfm_scalar_3,dyn_predict_sfm_1,dyn_predict_sfm_2,dyn_predict_sfm_3,dyn_predict_sur_1,dyn_predict_sur_2,dyn_predict_sur_3,dyn_predict_sur_auto_1,dyn_predict_sur_auto_2 +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +0,0,0,0,0,0,.0180332,.0206674,.0198309,.0216811,.0229056,.020079,0,0,0,0,0,0,.018123,.0207117,.019872,0,0,0,.0215066,.0228034,.0199838,.0222084,.0227587,0,0,0,0,0,0,.0180332,.0206674,.0198309,.0216811,.0229056,.020079,0,0,0,0,0,0,.018123,.0207117,.019872,0,0,0,.0215066,.0228034,.0199838,.0222084,.0227587 +.0169778,.0175878,.016944,.0034882,.0035454,.0035293,.0181424,.0207313,.0198893,.0212768,.0226661,.0199056,.0218081,.0149934,.0201537,.0242307,.0154454,.0208378,.0225757,.0208265,.0201488,0,0,0,.0214147,.0227469,.0199808,.0319412,.0215776,.0169778,.0175878,.016944,.0034882,.0035454,.0035293,.0181424,.0207313,.0198893,.0212768,.0226661,.0199056,.0218081,.0149934,.0201537,.0242307,.0154454,.0208378,.0225757,.0208265,.0201488,0,0,0,.0214147,.0227469,.0199808,.0319412,.0215776 +.0241789,.0250477,.0241307,.0060078,.0061064,.0060785,.0231217,.0236465,.0225533,.0259392,.0253924,.0224937,.0246422,.0225608,.0228286,.0285884,.0200446,.0263881,.0150727,.0206331,.0196823,0,0,0,.0213229,.0226903,.0199777,.0295647,.0232808,.0241789,.0250477,.0241307,.0060078,.0061064,.0060785,.0231217,.0236465,.0225533,.0259392,.0253924,.0224937,.0246422,.0225608,.0228286,.0285884,.0200446,.0263881,.0150727,.0206331,.0196823,0,0,0,.0213229,.0226903,.0199777,.0295647,.0232808 +.0276292,.0286219,.0275741,.0043475,.0044189,.0043987,.0204694,.0220937,.0211343,.0233326,.0238639,.0211201,.0251868,.0308882,.0236903,.0227159,.0292041,.0227006,.0144884,.020618,.019646,0,0,0,.021231,.0226338,.0199747,.015474,.0231892,.0276292,.0286219,.0275741,.0043475,.0044189,.0043987,.0204694,.0220937,.0211343,.0233326,.0238639,.0211201,.0251868,.0308882,.0236903,.0227159,.0292041,.0227006,.0144884,.020618,.019646,0,0,0,.021231,.0226338,.0199747,.015474,.0231892 +.0253204,.0262301,.0252699,.0049959,.0050779,.0050547,.0214661,.0226772,.0216676,.0241552,.0243426,.0216154,.0070111,.0269893,.0254357,.0066241,.0308553,.0292231,.0038167,.0203429,.0189826,0,0,0,.0211392,.0225772,.0199717,.0112048,.025729,.0252399,.0261467,.0251895,.0007656,.0007782,.0007747,.0187919,.0211115,.0202368,.0218703,.0230052,.0203701,.0244328,.0260137,.0271579,.0254881,.0298339,.0278507,.0188468,.0207304,.019917,0,0,0,.0211392,.0225772,.0199717,.0234199,.0222674 +.0208676,.0216173,.020826,.0011231,.0011416,.0011364,.0138281,.0182053,.017581,.0167051,.019979,.017602,.0246656,.0162025,.0287979,.0218247,.0118644,.0282099,.0300694,.0210197,.0206146,0,0,0,.0210473,.0225207,.0199686,.0348724,.0196662,.0260176,.0269524,.0259657,.0001348,.0001371,.0001364,.0182695,.0208057,.0199573,.0213633,.0227056,.0201408,.0259081,.0271032,.0251578,.0260329,.0251486,.0254403,.0179788,.020708,.019863,0,0,0,.0210473,.0225207,.0199686,.0211657,.0225505 +.0173758,.0180001,.0173412,.0044841,.0045577,.0045369,.0196696,.0216254,.0207064,.0224192,.0233209,.0207633,.030023,.0287653,.0104476,.0262075,.0263581,.0056798,.0166041,.0206725,.0197775,0,0,0,.0209555,.0224642,.0199656,.0104883,.0223705,.0247476,.0256368,.0246983,.0000237,.0000241,.000024,.0181068,.0207104,.0198702,.0211424,.0225735,.0200674,.0243862,.0263015,.0255215,.0246738,.0259547,.0246746,.0181517,.0207124,.0198737,0,0,0,.0209555,.0224642,.0199656,.0216796,.022406 +.0236642,.0245144,.023617,.0042626,.0043325,.0043128,.0198594,.0217365,.0208079,.0223526,.0232792,.020774,.0166716,.0204156,.025431,.0196916,.0249768,.0220287,.0152788,.0206384,.0196951,0,0,0,.0208637,.0224076,.0199625,.0257702,.0229885,.0248244,.0257163,.0247749,4.18e-06,4.25e-06,4.23e-06,.0180562,.0206808,.0198431,.0210072,.0224916,.0200407,.0246882,.02612,.0249322,.0242132,.0259197,.0248002,.0181173,.0207115,.0198716,0,0,0,.0208637,.0224076,.0199625,.0213911,.0223767 +.0201676,.0208922,.0201273,.0033263,.0033809,.0033655,.0181086,.0207115,.0198712,.0206119,.0222575,.0198723,.0054973,.0240132,.0192811,.003153,.0216177,.0233296,.0072843,.0204323,.0191981,0,0,0,.0207718,.0223511,.0199595,.0057966,.0246115,.024038,.0249016,.02399,7.36e-07,7.49e-07,7.45e-07,.0180404,.0206715,.0198347,.0208977,.0224247,.0200281,.0241011,.0257409,.0247183,.0237937,.024788,.0238528,.0181241,.0207117,.019872,0,0,0,.0207718,.0223511,.0199595,.0213307,.0223139 +.0204401,.0211744,.0203993,.0036869,.0037474,.0037303,.0185371,.0209624,.0201005,.0209739,.0224665,.0201166,.0303969,.0231858,.0201242,.020668,.0250062,.0173846,.0232013,.0208426,.0201877,0,0,0,.02068,.0222945,.0199564,.0253964,.0209354,.0238267,.0246828,.0237792,1.30e-07,1.32e-07,1.31e-07,.0180355,.0206687,.0198321,.0207959,.0223624,.0200196,.0239124,.0254319,.0243693,.0232445,.0243565,.0234648,.0181228,.0207117,.0198719,0,0,0,.02068,.0222945,.0199564,.0212051,.0222606 +.0197192,.0204277,.0196798,.0032135,.0032662,.0032514,.0176594,.0204485,.0196308,.0199801,.0218821,.019622,.0149487,.0178207,.0229903,.0223419,.0171047,.0229634,.0174738,.020695,.0198316,0,0,0,.0205881,.022238,.0199534,.0240728,.0222729,.023254,.0240895,.0232077,2.28e-08,2.32e-08,2.31e-08,.0180339,.0206678,.0198313,.0206964,.0223014,.0200124,.0235643,.0251057,.0240747,.0227425,.0239465,.0229853,.018123,.0207117,.019872,0,0,0,.0205881,.022238,.0199534,.0210981,.0222046 +.0176663,.018301,.0176311,.002802,.002848,.002835,.0167584,.019921,.0191488,.0190698,.0213465,.0191729,.0182607,.019092,.0179857,.0169868,.0155282,.0179949,.0191911,.0207392,.0199384,0,0,0,.0204963,.0221814,.0199503,.0193698,.0217336,.0229294,.0237533,.0228837,4.02e-09,4.09e-09,4.07e-09,.0180335,.0206675,.019831,.0205976,.0222407,.0200055,.0232845,.0247903,.0237662,.0222617,.0233597,.0224416,.018123,.0207117,.019872,0,0,0,.0204963,.0221814,.0199503,.0209858,.0221494 +.0143545,.0148703,.0143259,.001044,.0010612,.0010563,.01305,.0177498,.0171647,.015442,.0192202,.0172427,.0508758,.012861,.0214563,.0558045,.0116747,.0142495,.0478621,.0214784,.0217208,0,0,0,.0204044,.0221249,.0199473,.0505911,.0151021,.0224559,.0232627,.0224111,7.08e-10,7.20e-10,7.17e-10,.0180333,.0206674,.0198309,.020499,.0221802,.0199988,.0229839,.0244768,.0234677,.0217829,.0228593,.0219909,.018123,.0207117,.019872,0,0,0,.0204044,.0221249,.0199473,.020875,.0220939 +.0130324,.0135007,.0130064,.003437,.0034934,.0034775,.0176342,.0204337,.0196174,.0197363,.021731,.0196301,-.0317027,.0171761,.0076651,-.015822,.0142627,.0125916,-.0149283,.0198596,.0178173,0,0,0,.0203126,.0220683,.0199442,-.0201266,.0293788,.0220916,.0228853,.0220475,1.25e-10,1.27e-10,1.26e-10,.0180333,.0206674,.0198309,.0204004,.0221198,.0199921,.0226961,.0241679,.0231709,.0213153,.0223885,.0215111,.018123,.0207117,.019872,0,0,0,.0203126,.0220683,.0199442,.0207638,.0220385 +.0158559,.0164255,.0158242,.0028545,.0029014,.0028881,.0168723,.0199876,.0192097,.0189054,.0212419,.0192243,.0090297,.0149999,.0143376,-.0180325,.014702,.0142877,.0153526,.0206403,.0196997,0,0,0,.0202207,.0220118,.0199412,.0156127,.0225772,.0216683,.0224468,.0216251,2.20e-11,2.23e-11,2.22e-11,.0180333,.0206674,.0198309,.0203019,.0220593,.0199854,.0224087,.0238627,.0228785,.0208586,.0219003,.0210476,.018123,.0207117,.019872,0,0,0,.0202207,.0220118,.0199412,.0206527,.0219831 +.0160136,.0165889,.0159816,.003565,.0036235,.003607,.0181552,.0207388,.0198962,.020041,.0219038,.0198902,.016049,.0142579,.0164107,.0148588,.0138369,.0186203,.0186856,.0207262,.0199069,0,0,0,.0201289,.0219553,.0199381,.024468,.0217462,.0212953,.0220604,.0212528,3.87e-12,3.93e-12,3.92e-12,.0180332,.0206674,.0198309,.0202034,.0219989,.0199787,.0221261,.0235614,.0225895,.0204113,.0214289,.0206002,.018123,.0207117,.019872,0,0,0,.0201289,.0219553,.0199381,.0205416,.0219277 +.0207065,.0214505,.0206652,.0048775,.0049575,.0049349,.0208943,.0223425,.0213616,.0226316,.0234174,.0213491,.0305335,.0223299,.0163033,.029066,.0225548,.0166521,.020619,.020776,.0200271,0,0,0,.0200371,.0218987,.0199351,.0248408,.0211681,.0209012,.0216522,.0208595,6.81e-13,6.93e-13,6.90e-13,.0180332,.0206674,.0198309,.0201049,.0219384,.019972,.0218466,.0232639,.0223043,.0199736,.0209724,.0201562,.018123,.0207117,.019872,0,0,0,.0200371,.0218987,.0199351,.0204305,.0218723 +.0185952,.0192633,.0185581,.0014905,.001515,.0015081,.0145824,.018647,.0179846,.0163886,.0197603,.0179936,-.0023948,.0163695,.0221794,.0068538,.016974,.0254079,.0107363,.0205213,.0194128,0,0,0,.0199452,.0218422,.019932,.0097192,.023424,.0205323,.02127,.0204913,1.20e-13,1.22e-13,1.21e-13,.0180332,.0206674,.0198309,.0200064,.021878,.0199654,.0215708,.0229702,.0220227,.0195454,.0205219,.0197246,.018123,.0207117,.019872,0,0,0,.0199452,.0218422,.019932,.0203194,.0218169 +.0135096,.013995,.0134827,.0027441,.0027892,.0027765,.0162898,.0196466,.0188981,.0180448,.020727,.0189433,.0192337,.0174255,.012968,.0093726,.0160603,.0135389,.0203027,.0207679,.0200075,0,0,0,.0198534,.0217856,.019929,.0173219,.0210993,.0201583,.0208825,.020118,2.11e-14,2.15e-14,2.14e-14,.0180332,.0206674,.0198309,.0199079,.0218175,.0199587,.0212985,.0226802,.0217447,.0191263,.0200814,.0193019,.018123,.0207117,.019872,0,0,0,.0198534,.0217856,.019929,.0202083,.0217615 +.0214489,.0222195,.0214061,.0062582,.0063609,.0063319,.0233843,.0238003,.0226938,.0246957,.0246173,.0226151,.0199307,.0160721,.0194353,.0214457,.0159273,.0203706,.0147494,.0206247,.0196622,0,0,0,.0197615,.0217291,.0199259,.0314914,.0225782,.0197986,.02051,.0197591,3.72e-15,3.78e-15,3.77e-15,.0180332,.0206674,.0198309,.0198094,.0217571,.019952,.0210295,.0223938,.0214701,.0187162,.0196512,.0188877,.018123,.0207117,.019872,0,0,0,.0197615,.0217291,.0199259,.0200971,.0217061 +.0246164,.0255009,.0245673,.0037626,.0038244,.0038069,.0192844,.0213999,.0205003,.0206912,.0222705,.0204796,.0342487,.0240777,.0233446,.0359784,.0209906,.0243322,.0253679,.0208985,.0203224,0,0,0,.0196697,.0216725,.0199229,.0284546,.0198939,.0194405,.0201389,.0194017,6.56e-16,6.66e-16,6.63e-16,.0180332,.0206674,.0198309,.0197108,.0216966,.0199453,.020764,.0221111,.021199,.0183149,.0192298,.0184829,.018123,.0207117,.019872,0,0,0,.0196697,.0216725,.0199229,.019986,.0216507 +.0249838,.0258814,.0249339,.0060181,.0061169,.006089,.0233079,.0237556,.022653,.0244759,.024483,.0225893,.0224124,.0270526,.0224996,.0294092,.0314268,.0269118,.0110128,.0205284,.0194299,0,0,0,.0195778,.021616,.0199198,.0192129,.0231855,.019092,.0197779,.0190539,1.15e-16,1.17e-16,1.17e-16,.0180332,.0206674,.0198309,.0196123,.0216362,.0199386,.0205019,.0218319,.0209314,.0179221,.0188174,.0180865,.018123,.0207117,.019872,0,0,0,.0195778,.021616,.0199198,.0198749,.0215953 +.0271066,.0280806,.0270526,.003717,.003778,.0037607,.0192082,.0213553,.0204595,.0204306,.0221124,.0204316,.027937,.0270379,.0276734,.0273628,.0274846,.0275304,.0203258,.0207685,.0200089,0,0,0,.019486,.0215595,.0199168,.0232305,.0209812,.0187477,.0194212,.0187103,2.03e-17,2.07e-17,2.06e-17,.0180332,.0206674,.0198309,.0195138,.0215758,.0199319,.020243,.0215563,.0206671,.0175379,.018414,.0176987,.018123,.0207117,.019872,0,0,0,.019486,.0215595,.0199168,.0197638,.0215399 +.0216137,.0223902,.0215706,.003323,.0033775,.0033621,.017968,.0206292,.019796,.0191911,.0213841,.0198031,.0255884,.0258738,.0234142,.0279285,.0266205,.022483,.0196393,.0207508,.0199662,0,0,0,.0193941,.0215029,.0199137,.0188595,.021009,.0184109,.0190724,.0183742,3.58e-18,3.64e-18,3.62e-18,.0180332,.0206674,.0198309,.0194153,.0215153,.0199253,.0199874,.0212841,.0204062,.0171618,.0180192,.0173192,.018123,.0207117,.019872,0,0,0,.0193941,.0215029,.0199137,.0196527,.0214845 +.0188999,.0195789,.0188622,.0019803,.0020128,.0020036,.0152084,.0190134,.0183195,.0164705,.0197888,.0183673,.0138106,.0237432,.0194941,.0127652,.0233751,.015248,.015625,.0206473,.0197167,0,0,0,.0193023,.0214464,.0199107,.0079858,.0218112,.0180793,.0187289,.0180433,6.31e-19,6.41e-19,6.38e-19,.0180332,.0206674,.0198309,.0193168,.0214549,.0199186,.019735,.0210154,.0201485,.0167938,.0176328,.0169479,.018123,.0207117,.019872,0,0,0,.0193023,.0214464,.0199107,.0195416,.0214291 +.0143991,.0149164,.0143703,.0021199,.0021547,.0021448,.0151029,.0189517,.0182631,.016264,.0196652,.0183018,.0194085,.0156567,.0188887,.0168749,.0154129,.0148563,.0234441,.0208489,.0202028,0,0,0,.0192104,.0213898,.0199076,.0232274,.0200872,.0177543,.0183922,.0177189,1.11e-19,1.13e-19,1.12e-19,.0180332,.0206674,.0198309,.0192183,.0213944,.0199119,.0194859,.02075,.0198941,.0164337,.0172547,.0165845,.018123,.0207117,.019872,0,0,0,.0192104,.0213898,.0199076,.0194304,.0213737 +.0164729,.0170648,.0164401,.00397,.0040352,.0040168,.018696,.0210554,.0201855,.0196003,.0216152,.0201671,.0271108,.0123634,.0189849,.0317349,.0083269,.0177715,.0262387,.0209209,.0203765,0,0,0,.0191186,.0213333,.0199046,.0366001,.0195062,.0174347,.0180611,.0173999,1.96e-20,1.99e-20,1.98e-20,.0180332,.0206674,.0198309,.0191198,.021334,.0199052,.0192398,.020488,.0196429,.0160814,.0168847,.0162289,.018123,.0207117,.019872,0,0,0,.0191186,.0213333,.0199046,.0193193,.0213183 +.0084415,.0087448,.0084246,-.0032768,-.0033306,-.0033154,.0049275,.0129942,.012819,.0063328,.0138465,.0129831,-.0001488,.0124349,.0125503,.0075364,.0052215,.0081562,.0232611,.0208442,.0201914,0,0,0,.0190268,.0212767,.0199015,-.0008669,.0197225,.0171211,.0177363,.017087,3.44e-21,3.50e-21,3.48e-21,.0180332,.0206674,.0198309,.0190213,.0212735,.0198985,.0189969,.0202293,.0193949,.0157366,.0165227,.0158809,.018123,.0207117,.019872,0,0,0,.0190268,.0212767,.0199015,.0192082,.0212629 +.0019079,.0019765,.0019041,.0027742,.0028198,.0028069,.0151784,.0189959,.0183035,.0161848,.0196104,.0183996,.0266932,.0077558,.0026035,.0202117,.0121256,-.0025815,.0289822,.0209917,.020547,0,0,0,.0189349,.0212202,.0198985,.0266455,.0185696,.0168131,.0174171,.0167795,6.07e-22,6.17e-22,6.14e-22,.0180332,.0206674,.0198309,.0189227,.0212131,.0198919,.0187571,.0199739,.01915,.0153991,.0161684,.0155404,.018123,.0207117,.019872,0,0,0,.0189349,.0212202,.0198985,.0190971,.0212075 +.0082657,.0085626,.0082492,-.0004942,-.0005024,-.0005001,.0099021,.0159067,.0154805,.01092,.016526,.0155773,.0163842,.0034037,.0121823,.0273485,-.0005305,.0046977,.0329729,.0210945,.0207951,0,0,0,.0188431,.0211637,.0198954,.0280968,.0176295,.0165106,.0171038,.0164777,1.07e-22,1.09e-22,1.08e-22,.0180332,.0206674,.0198309,.0188242,.0211526,.0198852,.0185202,.0197217,.0189082,.0150689,.0158217,.0152072,.018123,.0207117,.019872,0,0,0,.0188431,.0211637,.0198954,.018986,.0211521 +.0020992,.0021746,.002095,.0013049,.0013263,.0013203,.0129024,.0176633,.0170857,.0137899,.0182031,.0171884,.0125584,.0077644,.0021595,.018514,.0074077,.0020705,.0228673,.020834,.0201669,0,0,0,.0187512,.0211071,.0198924,.0136652,.0197873,.0162135,.0167961,.0161812,1.88e-23,1.91e-23,1.90e-23,.0180332,.0206674,.0198309,.0187257,.0210922,.0198785,.0182864,.0194727,.0186695,.0147458,.0154825,.0148811,.018123,.0207117,.019872,0,0,0,.0187512,.0211071,.0198924,.0188748,.0210967 +.0088823,.0092015,.0088646,.0023893,.0024285,.0024174,.015456,.0191584,.018452,.0160742,.0195374,.0184804,-.01529,.0074154,.0053794,-.0144833,.0086366,.0076454,.0033684,.0203313,.0189547,0,0,0,.0186594,.0210506,.0198893,-.0003998,.0243802,.0159219,.0164939,.0158901,3.31e-24,3.37e-24,3.35e-24,.0180332,.0206674,.0198309,.0186272,.0210317,.0198718,.0180555,.0192269,.0184338,.0144297,.0151505,.014562,.018123,.0207117,.019872,0,0,0,.0186594,.0210506,.0198893,.0187637,.0210413 +.0107841,.0111716,.0107626,.0029968,.003046,.0030321,.016784,.019936,.0191625,.0172527,.0202244,.0191697,.0331874,.006198,.0134589,.0250729,.0059834,.0149128,.0352283,.0211527,.0209354,0,0,0,.0185675,.020994,.0198863,.04262,.0171552,.0156354,.0161972,.0156042,5.83e-25,5.93e-25,5.90e-25,.0180332,.0206674,.0198309,.0185287,.0209713,.0198651,.0178275,.0189841,.018201,.0141203,.0148256,.0142498,.018123,.0207117,.019872,0,0,0,.0185675,.020994,.0198863,.0186526,.0209859 +.0166804,.0172797,.0166471,.0043196,.0043905,.0043705,.0196633,.0216217,.020703,.0199708,.0218126,.0206981,.0182379,.0182423,.0107456,.0293631,.0178758,.0137016,.0152935,.0206387,.0196961,0,0,0,.0184757,.0209375,.0198832,.0147549,.0214704,.0153541,.0159058,.0153235,1.03e-25,1.04e-25,1.04e-25,.0180332,.0206674,.0198309,.0184302,.0209108,.0198584,.0176025,.0187444,.0179712,.0138175,.0145078,.0139442,.018123,.0207117,.019872,0,0,0,.0184757,.0209375,.0198832,.0185415,.0209305 +.0191842,.0198735,.0191459,.0036195,.003679,.0036622,.0186178,.0210096,.0201436,.0188112,.0211311,.0201131,.0093523,.0175751,.0189024,.0121659,.0214188,.0232264,.0127206,.0205724,.0195361,0,0,0,.0183838,.0208809,.0198802,.0152413,.0221585,.0150779,.0156196,.0150478,1.81e-26,1.84e-26,1.83e-26,.0180332,.0206674,.0198309,.0183317,.0208504,.0198518,.0173802,.0185077,.0177443,.0135212,.0141967,.0136452,.018123,.0207117,.019872,0,0,0,.0183838,.0208809,.0198802,.0184304,.0208751 +.0202962,.0210254,.0202557,.0045461,.0046207,.0045996,.0203445,.0220206,.0210675,.0204135,.0220662,.0210334,.0127198,.0221614,.0169775,.0080235,.0231852,.0217451,.0101078,.0205051,.0193737,0,0,0,.018292,.0208244,.0198771,.0107957,.0226635,.0148066,.0153386,.0147771,3.19e-27,3.24e-27,3.22e-27,.0180332,.0206674,.0198309,.0182331,.02079,.0198451,.0171608,.0182741,.0175203,.0132313,.0138923,.0133526,.018123,.0207117,.019872,0,0,0,.018292,.0208244,.0198771,.0183193,.0208197 +.0228339,.0236543,.0227883,.0041318,.0041996,.0041805,.0196487,.0216132,.0206952,.0196521,.0216177,.0206654,.0340847,.0220756,.0232186,.0309806,.0237533,.0225379,.0256251,.0209051,.0203383,0,0,0,.0182002,.0207679,.0198741,.030116,.0190914,.0145402,.0150626,.0145112,5.61e-28,5.70e-28,5.68e-28,.0180332,.0206674,.0198309,.0181346,.0207295,.0198384,.0169441,.0180433,.0172991,.0129476,.0135944,.0130663,.018123,.0207117,.019872,0,0,0,.0182002,.0207679,.0198741,.0182081,.0207643 +.022786,.0236047,.0227405,.0044974,.0045712,.0045504,.0203708,.022036,.0210816,.0202343,.0219557,.0210297,.008876,.0231886,.0218694,.0165014,.0230362,.0257152,.0076373,.0204414,.0192201,0,0,0,.0181083,.0207113,.0198711,.0105515,.0231488,.0142786,.0147916,.0142501,9.88e-29,1.00e-28,1.00e-28,.0180332,.0206674,.0198309,.0180361,.0206691,.0198317,.0167302,.0178155,.0170807,.01267,.0133029,.0127862,.018123,.0207117,.019872,0,0,0,.0181083,.0207113,.0198711,.018097,.0207089 +.0244968,.025377,.024448,.0049408,.0050219,.004999,.0213254,.0225948,.0215923,.0210604,.0224365,.021527,.0117556,.0242376,.0223166,.0043282,.0234206,.0258969,.0082219,.0204564,.0192564,0,0,0,.0180165,.0206548,.019868,.0120754,.0230203,.0140217,.0145255,.0139938,1.74e-29,1.77e-29,1.76e-29,.0180332,.0206674,.0198309,.0179376,.0206086,.019825,.0165189,.0175906,.016865,.0123983,.0130177,.012512,.018123,.0207117,.019872,0,0,0,.0180165,.0206548,.019868,.0179859,.0206535 +.0231144,.0239449,.0230683,.0030933,.003144,.0031297,.0177797,.0205189,.0196952,.01762,.0204199,.0196989,.0238368,.0274123,.0216688,.0157056,.0272497,.0200267,.0180625,.0207101,.0198682,0,0,0,.0179246,.0205982,.019865,.0117973,.0205453,.0137695,.0142642,.013742,3.07e-30,3.12e-30,3.10e-30,.0180332,.0206674,.0198309,.0178391,.0205482,.0198183,.0163104,.0173685,.0166521,.0121325,.0127385,.0122437,.018123,.0207117,.019872,0,0,0,.0179246,.0205982,.019865,.0178748,.0205981 +.0227675,.0235855,.0227221,.0051529,.0052375,.0052136,.0213803,.022627,.0216217,.0209619,.0223733,.0215673,.0282147,.0226927,.0242751,.0296062,.0259312,.0240318,.0193522,.0207434,.0199484,0,0,0,.0178328,.0205417,.0198619,.027501,.0203741,.0135217,.0140076,.0134948,5.40e-31,5.49e-31,5.46e-31,.0180332,.0206674,.0198309,.0177406,.0204877,.0198117,.0161044,.0171492,.0164418,.0118723,.0124654,.0119812,.018123,.0207117,.019872,0,0,0,.0178328,.0205417,.0198619,.0177637,.0205427 +.0273812,.028365,.0273266,.0057787,.0058735,.0058467,.0231493,.0236627,.0225681,.0225244,.0232851,.0224659,-.0040698,.0265505,.0229899,-.0030765,.0234005,.0286407,-.0050971,.0201131,.0184284,0,0,0,.0177409,.0204851,.0198589,-.0004199,.0259349,.0132785,.0137556,.013252,9.51e-32,9.66e-32,9.62e-32,.0180332,.0206674,.0198309,.0176421,.0204273,.019805,.0159011,.0169327,.0162342,.0116177,.0121981,.0117243,.018123,.0207117,.019872,0,0,0,.0177409,.0204851,.0198589,.0176525,.0204873 +.0289403,.02998,.0288825,.0058901,.0059868,.0059595,.0234942,.0238647,.0227526,.022781,.0234325,.0226528,.0241848,.0282601,.0270188,.0086637,.027947,.0309172,.0126898,.0205716,.0195342,0,0,0,.0176491,.0204286,.0198558,.0200746,.0218603,.0130396,.0135081,.0130136,1.67e-32,1.70e-32,1.69e-32,.0180332,.0206674,.0198309,.0175436,.0203668,.0197983,.0157003,.0167189,.0160292,.0113686,.0119366,.0114729,.018123,.0207117,.019872,0,0,0,.0176491,.0204286,.0198558,.0175414,.0204319 +.0300725,.031153,.0300125,.0051751,.00526,.005236,.0221181,.023059,.0220164,.0214195,.0226328,.0219578,.035323,.0331566,.0276769,.0325566,.0341457,.0275366,.0185052,.0207215,.0198957,0,0,0,.0175572,.0203721,.0198528,.0197947,.0203137,.012805,.0132651,.0127794,2.95e-33,3.00e-33,2.98e-33,.0180332,.0206674,.0198309,.017445,.0203064,.0197916,.0155021,.0165078,.0158269,.0111249,.0116806,.0112269,.018123,.0207117,.019872,0,0,0,.0175572,.0203721,.0198528,.0174303,.0203765 +.0241872,.0250562,.024139,.0019947,.0020274,.0020181,.0157211,.0193136,.0185938,.0151878,.0189823,.0186084,.0171845,.0292532,.0269153,.0204838,.03127,.0245386,.0156361,.0206476,.0197174,0,0,0,.0174654,.0203155,.0198497,.0065461,.0208213,.0125746,.0130264,.0125495,5.19e-34,5.28e-34,5.25e-34,.0180332,.0206674,.0198309,.0173465,.0202459,.0197849,.0153064,.0162994,.015627,.0108863,.0114302,.0109862,.018123,.0207117,.019872,0,0,0,.0174654,.0203155,.0198497,.0173192,.0203211 +.0220747,.0228678,.0220306,.0055441,.0056351,.0056094,.0219438,.022957,.0219232,.0210821,.0224297,.0218679,.0217836,.0243044,.0225289,.0167683,.0257142,.0218868,.0132661,.0205865,.01957,0,0,0,.0173736,.020259,.0198467,.0194125,.0215086,.0123484,.012792,.0123237,9.15e-35,9.30e-35,9.25e-35,.0180332,.0206674,.0198309,.017248,.0201855,.0197782,.0151131,.0160936,.0154297,.0106529,.0111851,.0107506,.018123,.0207117,.019872,0,0,0,.0173736,.020259,.0198467,.0172081,.0202657 +.025929,.0268606,.0258773,.0038908,.0039547,.0039366,.0193731,.0214518,.0205477,.0184933,.0209116,.020504,.0292658,.0241922,.0268456,.0278783,.0199592,.0236711,.0222784,.0208188,.0201303,0,0,0,.0172817,.0202024,.0198436,.0253327,.0193612,.0121262,.0125619,.012102,1.61e-35,1.64e-35,1.63e-35,.0180332,.0206674,.0198309,.0171495,.020125,.0197716,.0149223,.0158904,.0152349,.0104245,.0109453,.0105201,.018123,.0207117,.019872,0,0,0,.0172817,.0202024,.0198436,.0170969,.0202103 +.0242,.0250695,.0241517,.005327,.0054144,.0053897,.0219085,.0229363,.0219043,.0208508,.0222888,.0218358,.030861,.0244568,.0252763,.036088,.023875,.0268129,.0197771,.0207543,.0199748,0,0,0,.0171899,.0201459,.0198406,.0271759,.0199064,.0119081,.0123359,.0118843,2.84e-36,2.88e-36,2.87e-36,.0180332,.0206674,.0198309,.017051,.0200646,.0197649,.0147339,.0156897,.0150426,.010201,.0107106,.0102945,.018123,.0207117,.019872,0,0,0,.0171899,.0201459,.0198406,.0169858,.0201549 +.0284554,.0294777,.0283986,.0053854,.0054738,.0054488,.0223761,.02321,.0221544,.0212258,.0225055,.0220872,.0229116,.0304939,.0244885,.0241197,.0297104,.0252502,.0110754,.02053,.0194338,0,0,0,.017098,.0200893,.0198375,.0122418,.0217747,.0116938,.012114,.0116705,5.00e-37,5.08e-37,5.05e-37,.0180332,.0206674,.0198309,.0169525,.0200042,.0197582,.0145478,.0154916,.0148526,.0099822,.0104809,.0100738,.018123,.0207117,.019872,0,0,0,.017098,.0200893,.0198375,.0168747,.0200995 +.0219417,.02273,.0218979,.0013476,.0013697,.0013635,.0144098,.0185459,.0178922,.013433,.0179413,.017887,.0199039,.0201715,.0296934,.0234189,.0198187,.029398,.0243237,.0208716,.0202574,0,0,0,.0170062,.0200328,.0198345,.0223119,.0187303,.0114834,.011896,.0114605,8.80e-38,8.94e-38,8.90e-38,.0180332,.0206674,.0198309,.016854,.0199437,.0197515,.0143642,.015296,.0146651,.0097682,.0102562,.0098578,.018123,.0207117,.019872,0,0,0,.0170062,.0200328,.0198345,.0167636,.0200441 +.0197343,.0204433,.0196949,.0052891,.0053759,.0053514,.0212638,.0225588,.0215593,.0200502,.0218118,.0215405,.0364841,.0246586,.0172109,.0344254,.0228542,.0152188,.0222906,.0208191,.0201311,0,0,0,.0169143,.0199763,.0198314,.0234632,.0190546,.0112768,.011682,.0112543,1.55e-38,1.57e-38,1.57e-38,.0180332,.0206674,.0198309,.0167555,.0198833,.0197448,.0141828,.0151029,.0144799,.0095587,.0100363,.0096464,.018123,.0207117,.019872,0,0,0,.0169143,.0199763,.0198314,.0166525,.0199887 +.0260469,.0269828,.025995,.0044499,.0045229,.0045023,.0204243,.0220673,.0211101,.0190778,.0212399,.0210576,.0227215,.0250928,.0249522,.0277549,.0248881,.0214795,.0160198,.0206575,.0197412,0,0,0,.0168225,.0199197,.0198284,.0183681,.020522,.0110739,.0114718,.0110519,0,0,0,.0180332,.0206674,.0198309,.0166569,.0198228,.0197382,.0140037,.0149122,.0142971,.0093538,.0098211,.0094396,.018123,.0207117,.019872,0,0,0,.0168225,.0199197,.0198284,.0165414,.0199333 +.0248968,.0257913,.0248471,.0053293,.0054167,.005392,.0221196,.0230599,.0220172,.0206496,.0221571,.0219612,.0173481,.0307707,.0215389,.0142107,.03286,.0241754,.0071173,.020428,.0191878,0,0,0,.0167306,.0198632,.0198253,.0049627,.0224546,.0108747,.0112654,.010853,0,0,0,.0180332,.0206674,.0198309,.0165584,.0197624,.0197315,.0138269,.0147239,.0141166,.0091532,.0096105,.0092372,.018123,.0207117,.019872,0,0,0,.0167306,.0198632,.0198253,.0164302,.0198779 +.023106,.0239362,.0230599,.0018356,.0018657,.0018572,.0153287,.0190839,.0183839,.0140106,.0182682,.0183899,.0320488,.0235165,.0283334,.0298057,.025453,.02482,.0290888,.0209944,.0205537,0,0,0,.0166388,.0198066,.0198223,.0250841,.0173864,.0106791,.0110628,.0106578,0,0,0,.0180332,.0206674,.0198309,.0164599,.0197019,.0197248,.0136523,.014538,.0139384,.008957,.0094044,.0090391,.018123,.0207117,.019872,0,0,0,.0166388,.0198066,.0198223,.0163191,.0198225 +.0152302,.0157774,.0151998,.0021568,.0021922,.0021822,.0151773,.0189952,.0183029,.0138013,.0181429,.0183228,.0242602,.0167978,.0210536,.0334588,.0146435,.0188844,.0259652,.0209139,.0203595,0,0,0,.0165469,.0197501,.0198192,.0237445,.0180255,.0104869,.0108637,.010466,0,0,0,.0180332,.0206674,.0198309,.0163614,.0196415,.0197181,.01348,.0143545,.0137624,.0087649,.0092028,.0088453,.018123,.0207117,.019872,0,0,0,.0165469,.0197501,.0198192,.016208,.0197671 +.016846,.0174512,.0168124,.0033186,.0033731,.0033577,.0174574,.0203302,.0195228,.0159224,.0193817,.0195258,.0252499,.0170181,.0168966,.0280643,.0126592,.0126099,.0235118,.0208506,.020207,0,0,0,.0164551,.0196935,.0198162,.0225091,.0185449,.0102983,.0106683,.0102777,0,0,0,.0180332,.0206674,.0198309,.0162629,.019581,.0197114,.0133098,.0141732,.0135886,.008577,.0090054,.0086556,.018123,.0207117,.019872,0,0,0,.0164551,.0196935,.0198162,.0160969,.0197117 +.0177673,.0184056,.0177318,.0033756,.003431,.0034153,.0178972,.0205877,.0197581,.016252,.0195719,.0197525,.0115848,.0204708,.0157055,.0133217,.0192291,.0144273,.0125357,.0205676,.0195246,0,0,0,.0163633,.019637,.0198131,.0070543,.0209758,.010113,.0104763,.0100928,0,0,0,.0180332,.0206674,.0198309,.0161644,.0195206,.0197047,.0131417,.0139943,.013417,.0083931,.0088123,.00847,.018123,.0207117,.019872,0,0,0,.0163633,.019637,.0198131,.0159858,.0196563 +.0180653,.0187144,.0180293,.0031973,.0032498,.0032349,.0174818,.0203445,.0195359,.0157474,.0192737,.0195245,.0383504,.0164183,.0217435,.0380874,.0181256,.0199178,.033324,.0211036,.020817,0,0,0,.0162714,.0195804,.0198101,.0361114,.016276,.009931,.0102879,.0099112,0,0,0,.0180332,.0206674,.0198309,.0160659,.0194601,.0196981,.0129758,.0138176,.0132476,.0082131,.0086234,.0082884,.018123,.0207117,.019872,0,0,0,.0162714,.0195804,.0198101,.0158746,.0196009 +.0211262,.0218853,.0210841,.0051998,.0052851,.005261,.0214308,.0226566,.0216487,.0194503,.0214384,.0215896,.0295296,.0202153,.0202491,.0422758,.0191805,.0217448,.0208079,.0207809,.0200389,0,0,0,.0161796,.0195239,.019807,.0267207,.0190805,.0097524,.0101028,.0097329,0,0,0,.0180332,.0206674,.0198309,.0159674,.0193997,.0196914,.012812,.0136431,.0130804,.008037,.0084385,.0081107,.018123,.0207117,.019872,0,0,0,.0161796,.0195239,.019807,.0157635,.0195455 +.0212747,.0220391,.0212322,.0023344,.0023727,.0023619,.0162493,.0196229,.0188764,.0143624,.0184575,.0188637,.0234998,.0200369,.0236889,.0313104,.0181946,.0237089,.0237336,.0208563,.0202208,0,0,0,.0160877,.0194674,.019804,.020533,.0183052,.0095769,.009921,.0095578,0,0,0,.0180332,.0206674,.0198309,.0158688,.0193392,.0196847,.0126502,.0134709,.0129152,.0078647,.0082576,.0079368,.018123,.0207117,.019872,0,0,0,.0160877,.0194674,.019804,.0156524,.0194901 +.0183605,.0190202,.0183239,.0042146,.0042838,.0042642,.0193637,.0214463,.0205427,.017291,.0201689,.0205068,.0221565,.018923,.0193206,.0268177,.018917,.021363,.0188735,.020731,.0199186,0,0,0,.0159959,.0194108,.0198009,.0207619,.0194177,.0094046,.0097425,.0093859,0,0,0,.0180332,.0206674,.0198309,.0157703,.0192788,.019678,.0124905,.0133008,.0127522,.007696,.0080805,.0077666,.018123,.0207117,.019872,0,0,0,.0159959,.0194108,.0198009,.0155413,.0194347 +.0255004,.0264166,.0254496,.006006,.0061046,.0060767,.0232063,.0236961,.0225986,.0208962,.0222764,.0225187,.043635,.023299,.0233466,.0450076,.0222908,.021926,.0270018,.0209406,.0204239,0,0,0,.015904,.0193543,.0197979,.0357135,.0175622,.0092354,.0095672,.009217,0,0,0,.0180332,.0206674,.0198309,.0156718,.0192184,.0196713,.0123328,.0131329,.0125911,.007531,.0079072,.0076001,.018123,.0207117,.019872,0,0,0,.015904,.0193543,.0197979,.0154302,.0193793 +.0235715,.0244184,.0235245,.002107,.0021416,.0021318,.0160673,.0195163,.018779,.0139811,.0182259,.0187969,.023242,.0300351,.0226003,.03227,.0305798,.0204019,.0182164,.0207141,.0198778,0,0,0,.0158122,.0192977,.0197948,.0041534,.019232,.0090693,.0093951,.0090512,0,0,0,.0180332,.0206674,.0198309,.0155733,.0191579,.0196646,.0121771,.012967,.0124322,.0073695,.0077377,.0074371,.018123,.0207117,.019872,0,0,0,.0158122,.0192977,.0197948,.0153191,.0193239 +.0177382,.0183755,.0177028,.0030822,.0031328,.0031186,.0171524,.0201516,.0193596,.0149378,.0187831,.0193653,.0159395,.0235456,.019906,.0152122,.0297324,.0187284,.0148159,.0206264,.0196664,0,0,0,.0157203,.0192412,.0197918,.0079228,.0201052,.0089061,.0092261,.0088883,0,0,0,.0180332,.0206674,.0198309,.0154748,.0190975,.019658,.0120233,.0128033,.0122752,.0072115,.0075718,.0072777,.018123,.0207117,.019872,0,0,0,.0157203,.0192412,.0197918,.0152079,.0192685 +.0190546,.0197392,.0190166,.0032009,.0032535,.0032386,.0174937,.0203515,.0195422,.0151746,.0189189,.0195413,.0198343,.0221687,.0189588,.0142384,.0215824,.0146631,.0177734,.0207027,.0198502,0,0,0,.0156285,.0191846,.0197887,.0118895,.0193931,.0087459,.0090601,.0087284,0,0,0,.0180332,.0206674,.0198309,.0153763,.019037,.0196513,.0118715,.0126417,.0121202,.0070569,.0074094,.0071216,.018123,.0207117,.019872,0,0,0,.0156285,.0191846,.0197887,.0150968,.0192131 +.0162955,.016881,.016263,.0022079,.0022441,.0022339,.0155903,.019237,.0185238,.0132316,.0177789,.0185294,.0086461,.0185597,.0185226,.0080311,.0175863,.0166669,.0146327,.0206217,.019655,0,0,0,.0155367,.0191281,.0197857,.0071816,.0200696,.0085885,.0088971,.0085714,0,0,0,.0180332,.0206674,.0198309,.0152778,.0189766,.0196446,.0117216,.012482,.0119672,.0069056,.0072506,.0069689,.018123,.0207117,.019872,0,0,0,.0155367,.0191281,.0197857,.0149857,.0191577 +.0149104,.0154461,.0148807,.002776,.0028216,.0028087,.0164247,.0197256,.0189703,.0139489,.0181959,.0189673,.0233003,.0141956,.0178527,.0207477,.0126127,.0164087,.025256,.0208956,.0203154,0,0,0,.0154448,.0190716,.0197826,.0239499,.0176526,.008434,.008737,.0084172,0,0,0,.0180332,.0206674,.0198309,.0151793,.0189161,.0196379,.0115736,.0123244,.0118161,.0067575,.0070951,.0068195,.018123,.0207117,.019872,0,0,0,.0154448,.0190716,.0197826,.0148746,.0191023 +.0170546,.0176673,.0170205,.0036333,.0036929,.0036761,.018287,.0208159,.0199666,.0156893,.0192119,.0199629,.0144304,.0209109,.0130876,.0149992,.0189824,.0117194,.013212,.0205851,.0195667,0,0,0,.015353,.019015,.0197796,.0054209,.0202321,.0082823,.0085798,.0082657,0,0,0,.0180332,.0206674,.0198309,.0150807,.0188557,.0196312,.0114275,.0121688,.0116669,.0066126,.006943,.0066733,.018123,.0207117,.019872,0,0,0,.015353,.019015,.0197796,.0147635,.0190469 +.0159196,.0164915,.0158878,.0017988,.0018283,.0018199,.014892,.0188282,.0181502,.0123091,.0172306,.0181677,.0056969,.0187533,.0164121,.0024588,.0210192,.0154286,.0132849,.020587,.0195712,0,0,0,.0152611,.0189585,.0197765,.002006,.0201934,.0081333,.0084255,.008117,0,0,0,.0180332,.0206674,.0198309,.0149822,.0187952,.0196245,.0112832,.0120152,.0115196,.0064708,.0067941,.0065302,.018123,.0207117,.019872,0,0,0,.0152611,.0189585,.0197765,.0146523,.0189915 +.0142001,.0147103,.0141718,.0030904,.0031411,.0031267,.0169712,.0200455,.0192627,.0142501,.0183639,.0192725,.0281139,.016839,.0154314,.0225986,.0189563,.013515,.0258989,.0209122,.0203554,0,0,0,.0151693,.0189019,.0197735,.021587,.0172961,.0079869,.0082739,.007971,0,0,0,.0180332,.0206674,.0198309,.0148837,.0187348,.0196179,.0111407,.0118635,.0113741,.0063321,.0066484,.0063902,.018123,.0207117,.019872,0,0,0,.0151693,.0189019,.0197735,.0145412,.0189361 +.017362,.0179857,.0173273,.0032974,.0033515,.0033363,.0176504,.0204432,.019626,.0148025,.0186844,.0196206,.0209947,.0191523,.0162971,.0255991,.0192024,.0137356,.0195484,.0207484,.0199606,0,0,0,.0150774,.0188454,.0197704,.0143237,.0186678,.0078432,.008125,.0078276,0,0,0,.0180332,.0206674,.0198309,.0147852,.0186743,.0196112,.0110001,.0117137,.0112305,.0061963,.0065058,.0062531,.018123,.0207117,.019872,0,0,0,.0150774,.0188454,.0197704,.0144301,.0188807 +.017236,.0178553,.0172016,.0032487,.003302,.0032869,.0176413,.0204379,.0196212,.014677,.0186082,.0195992,.0150051,.0182215,.0181246,.0174213,.0193357,.018815,.0166285,.0206732,.0197791,0,0,0,.0149856,.0187888,.0197674,.0129296,.0193485,.0077021,.0079789,.0076868,0,0,0,.0180332,.0206674,.0198309,.0146867,.0186139,.0196045,.0108612,.0115658,.0110887,.0060634,.0063663,.0061191,.018123,.0207117,.019872,0,0,0,.0149856,.0187888,.0197674,.014319,.0188253 +.015856,.0164257,.0158243,.0020742,.0021082,.0020986,.0153373,.0190889,.0183885,.0123841,.0172633,.0183965,.0111921,.0175633,.0166372,.0103869,.0167394,.0168734,.0168917,.0206799,.0197954,0,0,0,.0148937,.0187323,.0197644,.0077795,.0191825,.0075636,.0078353,.0075485,0,0,0,.0180332,.0206674,.0198309,.0145882,.0185534,.0195978,.0107241,.0114198,.0109487,.0059334,.0062298,.0059879,.018123,.0207117,.019872,0,0,0,.0148937,.0187323,.0197644,.0142079,.0187699 +.0144986,.0150195,.0144697,.0029422,.0029905,.0029769,.0167855,.0199368,.0191633,.0137067,.0180347,.0191644,.0112154,.0171462,.0138406,.0072711,.0173434,.0132996,.0149221,.0206292,.019673,0,0,0,.0148019,.0186758,.0197613,.0074589,.0195963,.0074275,.0076944,.0074127,0,0,0,.0180332,.0206674,.0198309,.0144897,.018493,.0195911,.0105887,.0112756,.0108105,.0058062,.0060963,.0058595,.018123,.0207117,.019872,0,0,0,.0148019,.0186758,.0197613,.0140968,.0187145 +.0161838,.0167653,.0161515,.0030924,.0031431,.0031288,.0172245,.0201939,.0193982,.0140019,.0182047,.0193723,.0117111,.0144804,.0168775,.0098295,.0136552,.0170664,.0168402,.0206786,.0197922,0,0,0,.0147101,.0186192,.0197583,.0144368,.0191971,.0072939,.0075559,.0072793,0,0,0,.0180332,.0206674,.0198309,.0143912,.0184326,.0195845,.010455,.0111332,.010674,.0056817,.0059655,.0057338,.018123,.0207117,.019872,0,0,0,.0147101,.0186192,.0197583,.0139856,.0186591 +.0130248,.0134928,.0129988,.0011111,.0011293,.0011242,.0134045,.0179573,.0173544,.0102606,.016012,.0173803,.002699,.014291,.0138751,.0016823,.0112697,.0147331,.0149654,.0206303,.0196757,0,0,0,.0146182,.0185627,.0197552,.0022832,.0194491,.0071626,.00742,.0071483,0,0,0,.0180332,.0206674,.0198309,.0142926,.0183721,.0195778,.010323,.0109927,.0105392,.0055599,.0058376,.0056109,.018123,.0207117,.019872,0,0,0,.0146182,.0185627,.0197552,.0138745,.0186037 +.0106771,.0110608,.0106558,.0001957,.0001989,.000198,.0165918,.0198234,.0190597,.0129862,.0176046,.0189128,.0147783,.0119299,.0113178,.0094027,.0128143,.009256,.0187518,.0207279,.0199111,0,0,0,.0145264,.0185061,.0197522,.0166426,.0180579,.0070338,.0072865,.0070197,0,0,0,.0180332,.0206674,.0198309,.0141941,.0183117,.0195711,.0101926,.0108539,.0104062,.0054407,.0057125,.0054906,.018123,.0207117,.019872,0,0,0,.0145264,.0185061,.0197522,.0137634,.0185483 +.0118608,.012287,.0118372,.0000345,.000035,.0000349,.0175844,.0204046,.0195907,.0137338,.0180394,.0193672,.0104119,.012326,.0118497,.0120183,.0101395,.0103875,.0179977,.0207085,.0198642,0,0,0,.0144345,.0184496,.0197491,.0127945,.0186123,.0069072,.0071554,.0068934,0,0,0,.0180332,.0206674,.0198309,.0140956,.0182512,.0195644,.0100639,.0107168,.0102748,.005324,.00559,.0053728,.018123,.0207117,.019872,0,0,0,.0144345,.0184496,.0197491,.0136523,.0184929 +.0107518,.0111381,.0107304,6.07e-06,6.17e-06,6.14e-06,.0178935,.0205855,.0197561,.0138887,.0181273,.0194986,.0116559,.012021,.0115245,.0097912,.0104422,.0106063,.0181479,.0207123,.0198735,0,0,0,.0143427,.018393,.0197461,.0137832,.0184017,.006783,.0070267,.0067694,0,0,0,.0180332,.0206674,.0198309,.0139971,.0181908,.0195577,.0099369,.0105815,.010145,.0052099,.0054701,.0052576,.018123,.0207117,.019872,0,0,0,.0143427,.018393,.0197461,.0135412,.0184375 +.0111414,.0115417,.0111192,1.07e-06,1.09e-06,1.08e-06,.0179897,.0206419,.0198076,.0138661,.0181113,.0195333,.0110771,.0119146,.011418,.0097295,.0106432,.0096953,.018118,.0207116,.0198717,0,0,0,.0142508,.0183365,.019743,.0133607,.0183922,.0066609,.0069002,.0066476,0,0,0,.0180332,.0206674,.0198309,.0138986,.0181303,.019551,.0098114,.0104479,.010017,.0050981,.0053528,.0051449,.018123,.0207117,.019872,0,0,0,.0142508,.0183365,.019743,.01343,.0183821 +.0105614,.0109409,.0105404,1.88e-07,1.91e-07,1.90e-07,.0180197,.0206594,.0198236,.0137904,.0180642,.0195391,.0110654,.011749,.0112683,.0097717,.0100995,.0098637,.018124,.0207117,.019872,0,0,0,.014159,.01828,.01974,.0133387,.0183238,.0065411,.0067761,.006528,0,0,0,.0180332,.0206674,.0198309,.0138001,.0180699,.0195444,.0096875,.010316,.0098905,.0049888,.0052381,.0050346,.018123,.0207117,.019872,0,0,0,.014159,.01828,.01974,.0133189,.0183267 +.0106185,.011,.0105973,3.31e-08,3.37e-08,3.35e-08,.018029,.0206649,.0198286,.0136987,.0180077,.0195361,.0108903,.011606,.0111251,.0094677,.0099006,.0095653,.0181228,.0207117,.019872,0,0,0,.0140671,.0182234,.0197369,.0132022,.0182721,.0064234,.0066542,.0064106,0,0,0,.0180332,.0206674,.0198309,.0137016,.0180094,.0195377,.0095652,.0101857,.0097656,.0048819,.0051257,.0049266,.018123,.0207117,.019872,0,0,0,.0140671,.0182234,.0197369,.0132078,.0182713 +.0102666,.0106355,.0102461,5.84e-09,5.93e-09,5.91e-09,.0180319,.0206666,.0198302,.0136022,.0179485,.0195305,.0107615,.0114575,.010986,.0092546,.0097652,.0093207,.018123,.0207117,.019872,0,0,0,.0139753,.0181669,.0197339,.0130983,.0182157,.0063078,.0065345,.0062953,0,0,0,.0180332,.0206674,.0198309,.0136031,.017949,.019531,.0094444,.0100571,.0096423,.0047772,.0050158,.004821,.018123,.0207117,.019872,0,0,0,.0139753,.0181669,.0197339,.0130967,.0182159 +.0101866,.0105526,.0101663,1.03e-09,1.04e-09,1.04e-09,.0180328,.0206671,.0198307,.0135043,.0178884,.0195242,.010624,.0113136,.0108465,.0090731,.0095192,.0091732,.018123,.0207117,.019872,0,0,0,.0138834,.0181103,.0197308,.0129851,.0181606,.0061944,.0064169,.006182,0,0,0,.0180332,.0206674,.0198309,.0135045,.0178885,.0195243,.0093252,.0099302,.0095206,.0046747,.0049083,.0047176,.018123,.0207117,.019872,0,0,0,.0138834,.0181103,.0197308,.0129856,.0181605 +.0099352,.0102921,.0099154,1.81e-10,1.84e-10,1.83e-10,.0180331,.0206673,.0198308,.013406,.017828,.0195176,.0104899,.0111705,.0107099,.0088752,.0093097,.0089492,.018123,.0207117,.019872,0,0,0,.0137916,.0180538,.0197278,.0128746,.0181051,.0060829,.0063015,.0060708,0,0,0,.0180332,.0206674,.0198309,.013406,.0178281,.0195176,.0092074,.0098048,.0094003,.0045745,.004803,.0046165,.018123,.0207117,.019872,0,0,0,.0137916,.0180538,.0197278,.0128745,.0181051 +.0098008,.0101529,.0097813,3.19e-11,3.24e-11,3.23e-11,.0180332,.0206673,.0198309,.0133075,.0177676,.0195109,.0103576,.0110295,.0105745,.0086833,.0091221,.0087629,.018123,.0207117,.019872,0,0,0,.0136998,.0179972,.0197247,.0127633,.0180497,.0059735,.0061881,.0059616,0,0,0,.0180332,.0206674,.0198309,.0133075,.0177676,.0195109,.0090912,.009681,.0092817,.0044764,.0047001,.0045175,.018123,.0207117,.019872,0,0,0,.0136998,.0179972,.0197247,.0127633,.0180497 +.0095956,.0099404,.0095765,5.62e-12,5.71e-12,5.68e-12,.0180332,.0206674,.0198309,.013209,.0177072,.0195043,.0102267,.0108902,.0104411,.0084981,.008923,.0085784,.018123,.0207117,.019872,0,0,0,.0136079,.0179407,.0197217,.0126522,.0179943,.005866,.0060768,.0058543,0,0,0,.0180332,.0206674,.0198309,.013209,.0177072,.0195043,.0089764,.0095588,.0091645,.0043804,.0045993,.0044206,.018123,.0207117,.019872,0,0,0,.0136079,.0179407,.0197217,.0126522,.0179943 +.0094418,.009781,.0094229,9.89e-13,1.01e-12,1.00e-12,.0180332,.0206674,.0198309,.0131105,.0176468,.0194976,.0100977,.0107527,.0103092,.0083158,.0087299,.0083905,.018123,.0207117,.019872,0,0,0,.0135161,.0178842,.0197186,.0125411,.0179389,.0057605,.0059674,.005749,0,0,0,.0180332,.0206674,.0198309,.0131105,.0176468,.0194976,.0088631,.0094381,.0090488,.0042865,.0045007,.0043258,.018123,.0207117,.019872,0,0,0,.0135161,.0178842,.0197186,.0125411,.0179389 +.0092597,.0095923,.0092412,1.74e-13,1.77e-13,1.76e-13,.0180332,.0206674,.0198309,.013012,.0175863,.0194909,.0099702,.010617,.010179,.0081374,.0085444,.0082125,.018123,.0207117,.019872,0,0,0,.0134242,.0178276,.0197156,.01243,.0178835,.0056568,.0058601,.0056456,0,0,0,.0180332,.0206674,.0198309,.013012,.0175863,.0194909,.0087512,.0093189,.0089345,.0041946,.0044042,.0042331,.018123,.0207117,.019872,0,0,0,.0134242,.0178276,.0197156,.01243,.0178835 +.009101,.009428,.0090829,3.07e-14,3.12e-14,3.10e-14,.0180332,.0206674,.0198309,.0129135,.0175259,.0194842,.0098443,.0104829,.0100505,.007963,.0083609,.0080361,.018123,.0207117,.019872,0,0,0,.0133324,.0177711,.0197125,.0123189,.0178281,.0055551,.0057547,.005544,0,0,0,.0180332,.0206674,.0198309,.0129135,.0175259,.0194842,.0086407,.0092012,.0088217,.0041047,.0043097,.0041423,.018123,.0207117,.019872,0,0,0,.0133324,.0177711,.0197125,.0123189,.0178281 +.0089321,.009253,.0089143,5.40e-15,5.49e-15,5.47e-15,.0180332,.0206674,.0198309,.012815,.0174654,.0194775,.00972,.0103506,.0099236,.0077922,.0081813,.0078635,.018123,.0207117,.019872,0,0,0,.0132405,.0177145,.0197095,.0122077,.0177727,.0054551,.0056511,.0054442,0,0,0,.0180332,.0206674,.0198309,.012815,.0174654,.0194775,.0085316,.0090851,.0087103,.0040167,.0042173,.0040535,.018123,.0207117,.019872,0,0,0,.0132405,.0177145,.0197095,.0122077,.0177727 diff --git a/statsmodels/tsa/statespace/tests/results/results_exact_initial_common_level_R.csv b/statsmodels/tsa/statespace/tests/results/results_exact_initial_common_level_R.csv new file mode 100644 index 0000000..514557d --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_exact_initial_common_level_R.csv @@ -0,0 +1,12 @@ +"r_1","r_2","r0_1","r0_2","r1_1","r1_2","sumN","sumN0","sumN1","sumN2","m_1","m_2","v_1","v_2","F_1","F_2","Finf_1","Finf_2","a_1","a_2","sumP","sumPinf","att_1","att_2","sumPtt","alphahat_1","alphahat_2","sumV","muhat_1","muhat_2","sumVmu","etahat_1","sumVeta","epshat_1","epshat_2","Veps_1","Veps_2","llf" +0,0,0,0,8.8975374571643,1.509290266,0,0,2,-0.873409178440244,0,0,10.2394,7.09280266,1,1.01234321,1,1,0,0,0,2,10.2394,7.09280266,0.950621605,8.8975374571643,1.509290266,0.873409178440244,8.8975374571643,2.49780667749095,0.902965918988549,-6.39612333370795,1.14829630716515,1.34186254283569,5.73259332250904,0.794394857440244,0.108571061548305,-51.9451615109472 +-1.97875366096645,-5.73259332250904,-1.97875366096645,-5.73259332250904,0,0,1.13467602530297,1.13467602530297,0,0,10.2394,8.2304,-9.2394,-6.59626461245012,5.2324,2.0152504365125,NA,NA,10.2394,7.09280266,5.02254321,NA,2.54115493076548,3.99085133,0.573033620267699,2.50141412345635,1.509290266,0.747919558682564,2.50141412345635,1.787197375116,0.775927354501379,-1.26025428308704,1.06738633936535,-1.50141412345635,-0.787197375116001,0.668905237682563,0.107022116818816,NA +-0.38988190913471,-4.94539594739304,NA,NA,NA,NA,1.83567783535556,NA,NA,NA,2.54115493076548,4.27317364280804,-1.54115493076548,-3.1529210144913,5.0389456355354,1.51300330038787,NA,NA,2.54115493076548,3.99085133,4.4340172405354,NA,1.14324833547383,2.95686755333333,0.521193100208799,1.24115984036932,1.509290266,0.743047746835894,1.24115984036932,1.64718312426503,0.770995408858006,-0.248313044477123,1.06424521815517,-0.241159840369317,-0.64718312426503,0.664033425835894,0.106961983022112,NA +-0.0768200236595481,-4.29821282312801,NA,NA,NA,NA,2.32995171713905,NA,NA,NA,1.14324833547383,3.08388244340447,-0.143248335473828,-2.07218627765634,5.02992179708426,1.34542835708184,NA,NA,1.14324833547383,2.95686755333333,4.29330286708426,NA,0.902725139132483,2.439875665,0.492256089899279,0.992846795892194,1.509290266,0.742858611694977,0.992846795892194,1.61959554502362,0.770803939182326,-0.0489261323607094,1.06412327932435,0.00715320410780637,-0.619595545023622,0.663844290694977,0.106959648487349,NA +-0.01513616271523,-3.67861727810439,NA,NA,NA,NA,2.62630827600895,NA,NA,NA,0.902725139132483,2.54016842795762,0.0972748608675175,-1.54828924073569,5.02863471063189,1.26159372385113,NA,NA,0.902725139132483,2.439875665,4.22617051313189,NA,0.878201212352975,2.129680532,0.47404409783939,0.943920663531484,1.509290266,0.742851280059484,0.943920663531484,1.61415985171835,0.770796517050917,-0.00964011470999326,1.06411872888037,0.0560793364685157,-0.614159851718348,0.663836959059484,0.106959557991433,NA +-0.00298233965783729,-3.06445742638604,NA,NA,NA,NA,2.72508954108284,NA,NA,NA,0.878201212352975,2.22724868669242,0.121798787647025,-1.23755098399537,5.02801455367878,1.21127681402224,NA,NA,0.878201212352975,2.129680532,4.18604319567878,NA,0.889356654708954,1.92288377666667,0.461597461561946,0.934280548821491,1.509290266,0.742851280059484,0.934280548821491,1.61308883497407,0.770796517050916,-0.00189942699549964,1.06412327932435,0.0657194511785091,-0.613088834974067,0.663836959059484,0.106959557991433,NA +-0.00058762127072752,-2.45136859141198,NA,NA,NA,NA,2.62630827600895,NA,NA,NA,0.889356654708954,2.02169130100483,0.110643345291046,-1.03113128251835,5.02760772145723,1.17772543331873,NA,NA,0.889356654708954,1.92288377666667,4.15929825645723,NA,0.90329367817504,1.77517180857143,0.45257488312385,0.932381121825991,1.509290266,0.742858611694976,0.932381121825991,1.61287780863487,0.770803939182326,-0.00037423080422298,1.06424521815517,0.0676188781740088,-0.612877808634868,0.663844290694977,0.106959648487349,NA +-0.000115774905402481,-1.83849078277711,NA,NA,NA,NA,2.32995171713905,NA,NA,NA,0.90329367817504,1.87552773621668,0.0967063218249602,-0.883829364848483,5.02731740291437,1.15375684028083,NA,NA,0.90329367817504,1.77517180857143,4.14019500434294,NA,0.915003715551425,1.6643878325,0.445741823981642,0.932006891021768,1.509290266,0.743047746835894,0.932006891021768,1.61283623159252,0.770995408858006,-7.36293969972967e-05,1.06738633936535,0.0679931089782317,-0.612836231592518,0.664033425835894,0.106961983022112,NA +-2.27785537053882e-05,-1.22565455118459,NA,NA,NA,NA,1.83567783535556,NA,NA,NA,0.915003715551425,1.76604474529776,0.0849962844485747,-0.773374591508431,5.02709967528471,1.13577857884259,NA,NA,0.915003715551425,1.6643878325,4.12586757653471,NA,0.924371691650101,1.57822251777778,0.440390483236062,0.931933261624771,1.509290266,0.747919558682563,0.931933261624771,1.61282805136651,0.775927354501379,-1.39653324443844e-05,1.14829630716515,0.0680667383752291,-0.612828051366512,0.668905237682563,0.107022116818816,NA +-4.3204221149562e-06,-0.612826499818078,NA,NA,NA,NA,1.13467602530297,NA,NA,NA,0.924371691650101,1.6809202127201,0.0756283083498992,-0.687465341749488,5.02693033202768,1.12179440992445,NA,NA,0.924371691650101,1.57822251777778,4.11472402202768,NA,0.931919296292327,1.509290266,0.4360873669979,0.931919296292327,1.509290266,0.873409178440244,0.931919296292327,1.61282649981808,0.902965918988549,0,3.2324,0.0680807037076735,-0.612826499818078,0.794394857440244,0.108571061548305,NA +0,0,NA,NA,NA,NA,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0.931919296292327,1.509290266,4.10580917844024,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA diff --git a/statsmodels/tsa/statespace/tests/results/results_exact_initial_common_level_restricted_R.csv b/statsmodels/tsa/statespace/tests/results/results_exact_initial_common_level_restricted_R.csv new file mode 100644 index 0000000..7d2cccc --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_exact_initial_common_level_restricted_R.csv @@ -0,0 +1,12 @@ +"r_1","r0_1","r1_1","sumN","sumN0","sumN1","sumN2","m_1","m_2","v_1","v_2","F_1","F_2","Finf_1","Finf_2","a_1","sumP","sumPinf","att_1","sumPtt","alphahat_1","sumV","muhat_1","muhat_2","sumVmu","etahat_1","sumVeta","epshat_1","epshat_2","Veps_1","Veps_2","llf" +0,0,9.06317510544033,0,0,1,-0.793175586161682,11.0178023913451,1.22407784567844,10.2394,7.09280266,1,1.01234321,1,0,11.0178023913451,0,1,0,0.493903643607191,20.0809774967855,0.793175586161682,20.0809774967855,2.23099659989286,0.802965918988549,-6.39612333370795,1.14829630716515,1.17622489455967,7.22348124578558,0.793175586161682,0.00979033282686681,-62.9698544759892 +-1.97875366096645,-1.97875366096645,0,0.199466114050532,0.199466114050532,0,0,11.0178023913451,1.22407784567844,-10.0178023913451,0.6756943197573,5.22020728721438,1.00997870427812,NA,NA,11.0178023913451,4.22020728721438,NA,2.97913246484999,0.400224639571295,2.66705177173237,0.667685966404001,2.66705177173237,0.296309451839467,0.675927354501379,-1.26025428308704,1.06738633936535,-1.66705177173238,0.703690548160533,0.667685966404001,0.0082413880973774,NA +-0.38988190913471,NA,NA,0.207209873116103,NA,NA,NA,2.97913246484999,0.330981616844834,-1.97913246484999,0.845210708974322,5.03284927914259,1.0098906807635,NA,NA,2.97913246484999,4.03284927914259,NA,1.46775091713814,0.396728779744529,1.40679748864534,0.662814154557332,1.40679748864534,0.156295200988497,0.670995408858006,-0.248313044477123,1.06424521815517,-0.40679748864534,0.843704799011503,0.662814154557332,0.00818125430067362,NA +-0.0768200236595481,NA,NA,0.207510504626766,NA,NA,NA,1.46775091713814,0.163067126894047,-0.467750917138136,0.87856004780698,5.02585755948906,1.00988726892847,NA,NA,1.46775091713814,4.02585755948906,NA,1.17049024458669,0.396593266217744,1.15848444416822,0.662625019416415,1.15848444416822,0.128707621747089,0.670803939182326,-0.0489261323607094,1.06412327932435,-0.158484444168217,0.871292378252911,0.662625019416415,0.00817891976591079,NA +-0.01513616271523,NA,NA,0.207522175190385,NA,NA,NA,1.17049024458669,0.130041466173581,-0.170490244586689,0.885130993924524,5.02558653243549,1.00988713648095,NA,NA,1.17049024458669,4.02558653243549,NA,1.11192383208112,0.396588005560829,1.10955831180751,0.662617687780922,1.10955831180751,0.123271928441814,0.670796517050917,-0.00964011470999332,1.06411872888037,-0.109558311807507,0.876728071558186,0.662617687780922,0.00817882926999436,NA +-0.00298233965783731,NA,NA,0.207522610705844,NA,NA,NA,1.11192383208112,0.123534737744212,-0.11192383208112,0.886425708950239,5.02557601112166,1.00988713133903,NA,NA,1.11192383208112,4.02557601112166,NA,1.10038428395306,0.396587801329812,1.09991819709751,0.662617687780922,1.09991819709751,0.122200911697534,0.670796517050917,-0.0018994269954996,1.06412327932435,-0.0999181970975138,0.877799088302466,0.662617687780922,0.00817882926999436,NA +-0.00058762127072751,NA,NA,0.207522175190385,NA,NA,NA,1.10038428395306,0.122252693947185,-0.100384283953059,0.886680812621487,5.02557560265962,1.00988713113941,NA,NA,1.10038428395306,4.02557560265962,NA,1.09811059993054,0.396587793401068,1.09801877010201,0.662625019416415,1.09801877010201,0.121989885358334,0.670803939182326,-0.000374230804222879,1.06424521815517,-0.0980187701020142,0.878010114641666,0.662625019416415,0.00817891976591079,NA +-0.00011577490540245,NA,NA,0.207510504626766,NA,NA,NA,1.09811059993054,0.122000087652283,-0.0981105999305436,0.886731076766429,5.02557558680214,1.00988713113166,NA,NA,1.09811059993054,4.02557558680214,NA,1.09766260669048,0.396587793093255,1.09764453929779,0.662814154557332,1.09764453929779,0.121948308315985,0.670995408858006,-7.36293969974425e-05,1.06738633936535,-0.0976445392977911,0.878051691684015,0.662814154557332,0.00818125430067351,NA +-2.27785537054333e-05,NA,NA,0.207209873116103,NA,NA,NA,1.09766260669048,0.121950315603312,-0.0976626066904791,0.88674098051711,5.02557558618651,1.00988713113136,NA,NA,1.09766260669048,4.02557558618651,NA,1.09757433675414,0.396587793081305,1.09757090990079,0.667685966404001,1.09757090990079,0.121940128089978,0.675927354501379,-1.39653324444966e-05,1.14829630716515,-0.0975709099007939,0.878059871910022,0.667685966404002,0.00824138809737751,NA +-4.3204221149909e-06,NA,NA,0.199466114050532,NA,NA,NA,1.09757433675414,0.121940508813385,-0.0975743367541375,0.886742931893566,5.02557558616261,1.00988713113135,NA,NA,1.09757433675414,4.02557558616261,NA,1.09755694456835,0.396587793080841,1.09755694456835,0.793175586161682,1.09755694456835,0.121938576541544,0.802965918988549,0,3.2324,-0.0975569445683495,0.878061423458456,0.793175586161682,0.00979033282686681,NA +0,NA,NA,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1.09755694456835,4.02557558616168,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA diff --git a/statsmodels/tsa/statespace/tests/results/results_exact_initial_dfm_R.csv b/statsmodels/tsa/statespace/tests/results/results_exact_initial_dfm_R.csv new file mode 100644 index 0000000..80b2a03 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_exact_initial_dfm_R.csv @@ -0,0 +1,22 @@ +"r_1","r_2","r0_1","r0_2","r1_1","r1_2","N_1","N_2","N_3","N_4","N0_1","N0_2","N0_3","N0_4","N1_1","N1_2","N1_3","N1_4","N2_1","N2_2","N2_3","N2_4","m_1","m_2","v_1","v_2","F_1","F_2","Finf_1","Finf_2","K_1","K_2","K_3","K_4","Kinf_1","Kinf_2","Kinf_3","Kinf_4","a_1","a_2","P_1","P_2","P_3","P_4","Pinf_1","Pinf_2","Pinf_3","Pinf_4","att_1","att_2","Ptt_1","Ptt_2","Ptt_3","Ptt_4","alphahat_1","alphahat_2","V_1","V_2","V_3","V_4","muhat_1","muhat_2","Vmu_1","Vmu_2","Vmu_3","Vmu_4","etahat_1","Veta_1","epshat_1","epshat_2","Veps_1","Veps_2","llf" +0,0,0,0,9.51694281355549,-60.4597700697919,0,0,0,0,0,0,0,0,1,0,0,1,-1.49300890673145,14.0939614892119,14.0939614892119,-320.338075042585,0,0,9.97685232655492,-13.8392616868558,1.5,8,0.25,0,0,0,6,0,0.5,0,0,0,0,0,0,0,0,0,1,0,0,1,9.57425838796802,0,0.75,0,0,0,9.51694281355549,-60.4597700697919,1.49300890673145,-14.0939614892119,-14.0939614892119,320.338075042585,4.75847140677775,9.51694281355549,0.373252226682863,0,0,1.49300890673145,0,1,5.21838091977717,-3.40249984730142,0.373252226682863,1.49300890673145,-167.135833400379 +0,0,0,-0.0382103829416809,-604.597700697919,0,0,0,0,0,0,0,0,0.0031071525637989,100,0,3.95974326141275,0,-32033.8075042585,0,0,0,1.43860144950518,2.87720289901037,-4.78559711885287,5.1087527833932,2.05375,8,0.0025,0,1.1075,0.675,6,-2.22044604925031e-16,0.005,0,0,0,2.87720289901037,9.57425838796802,2.215,1.35,1.35,1.5,0.01,0,0,0,0,0,0.75,0.675,-2.77555756156289e-17,0.75,-3.2203581249401,9.51694281355549,0.875804896820179,-0.0656881328628842,-0.0656881328628842,1.49300890673145,-1.61017906247005,-3.2203581249401,0.218951224205045,0,0,0.875804896820179,-0.382103829416809,0.68928474362011,-1.73681660687764,1.63511956963792,0.218951224205045,0.875804896820179,NA +-0.382103829416809,0.105272530615384,-0.382103829416809,0.105272530615384,0,0,0.31071525637989,0.0123035264264732,0.0123035264264732,0.003594340622336,0.31071525637989,0.0123035264264732,0.0123035264264732,0.003594340622336,0,0,0,0,0,0,0,0,1.77345422395307,3.54690844790613,-0.375641162204245,-2.90973668380961,2.0575,3.62575941676792,NA,NA,1.115,0.675,1.62575941676792,0.984204131227218,NA,NA,NA,NA,3.54690844790613,2.87720289901037,2.23,1.35,1.35,1.5,NA,NA,NA,NA,2.03864009618128,1.96412564572402,0.448391420911528,0.675,0.271447721179625,0.505697050938338,2.83693482463742,2.51927152522075,0.604213883150445,0.343734708099312,0.343734708099312,0.875804896820179,1.41846741231871,2.83693482463742,0.151053470787611,0,0,0.604213883150445,1.05272530615384,0.6405659377664,-0.0206543505698872,-2.40333044613396,0.151053470787611,0.604213883150445,NA +1.05272530615384,-0.121006598364991,NA,NA,NA,NA,0.3594340622336,0.0148061000624168,0.0148061000624168,0.00372289210642648,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1.01559432556778,2.03118865113555,7.86047748014957,-1.89827776221194,1.95855730563003,3.40478086899536,NA,NA,0.917114611260054,0.430697050938338,1.40478086899536,0.659715776046377,NA,NA,NA,NA,2.03118865113555,2.03864009618128,1.83422922252011,0.861394101876676,0.861394101876676,0.896782841823056,NA,NA,NA,NA,4.92872639179054,3.39938710049301,0.412590684407207,0.430697050938338,0.193761596246585,0.337121356793516,3.85789380084959,2.83693482463742,0.575400908444457,0.255273727933445,0.255273727933445,0.604213883150445,1.92894690042479,3.85789380084959,0.143850227111114,0,0,0.575400908444457,-1.21006598364991,0.627710789357352,6.94712490529255,-0.0442334501649883,0.143850227111114,0.575400908444457,NA +-1.21006598364991,-0.151806885242932,NA,NA,NA,NA,0.372289210642648,0.015431769102056,0.015431769102056,0.00375334385431612,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.38789623133039,4.77579246266078,-4.26171754442381,2.17347456927107,1.93622337763108,3.35177598619263,NA,NA,0.872446755262158,0.390707775591145,1.35177598619263,0.60536575496134,NA,NA,NA,NA,4.77579246266078,4.92872639179054,1.74489351052432,0.78141555118229,0.78141555118229,0.825181368814414,NA,NA,NA,NA,3.7320620120987,4.46131264969539,0.403301411478918,0.390707775591145,0.180610445762216,0.318502810390833,2.54573191957846,3.85789380084959,0.567028052247826,0.239741603308948,0.239741603308948,0.575400908444457,1.27286595978923,2.54573191957846,0.141757013061957,0,0,0.567028052247826,-1.51806885242932,0.624665614568388,-3.14668727288265,2.48323930019076,0.141757013061957,0.567028052247827,NA +-1.51806885242932,-0.0365279089313548,NA,NA,NA,NA,0.375334385431612,0.0155815109240039,0.0155815109240039,0.00376070717703855,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1.90249353792918,3.80498707585837,-1.24934146236125,-4.83426515779222,1.93118452581952,3.33964782770783,NA,NA,0.862369051639031,0.381032314907248,1.33964782770783,0.591914925497168,NA,NA,NA,NA,3.80498707585837,3.7320620120987,1.72473810327806,0.762064629814495,0.762064629814495,0.806602822957836,NA,NA,NA,NA,1.30790420727982,2.62874172930175,0.401134459925165,0.381032314907248,0.177238725768109,0.31325650218474,1.15887925527626,2.54573191957846,0.565079336675193,0.235702257166096,0.235702257166096,0.567028052247827,0.579439627638129,1.15887925527626,0.141269834168798,0,0,0.565079336675193,-0.365279089313548,0.623929282296146,0.0737124479298024,-2.74604986258263,0.141269834168798,0.565079336675193,NA +-0.365279089313548,0.159136443267593,NA,NA,NA,NA,0.376070717703854,0.0156176467731259,0.0156176467731259,0.00376248054903204,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0.719993979741006,1.43998795948201,-5.88253795817235,1.71835195073882,1.92997722409975,3.33673253361934,NA,NA,0.859954448199491,0.378744886509459,1.33673253361934,0.588729569105866,NA,NA,NA,NA,1.43998795948201,1.30790420727982,1.71990889639898,0.757489773018919,0.757489773018919,0.80226891985033,NA,NA,NA,NA,-0.49274757022996,0.456680400732627,0.400611232740729,0.378744886509459,0.176438945337723,0.312033995488119,0.93228543239293,1.15887925527626,0.564606505696588,0.234742353524449,0.234742353524449,0.565079336675193,0.466142716196465,0.93228543239293,0.141151626424147,0,0,0.564606505696588,1.59136443267593,0.623751945096796,-5.62868669462781,-0.395072145151985,0.141151626424147,0.564606505696588,NA +1.59136443267593,0.276257892063382,NA,NA,NA,NA,0.376248054903204,0.0156263527383127,0.0156263527383127,0.00376290790028972,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,-0.198902386566851,-0.397804773133701,2.5679388887454,-0.85767111774528,1.92968722431783,3.33603172235251,NA,NA,0.859374448635662,0.378194004000428,1.33603172235251,0.587961612484829,NA,NA,NA,NA,-0.397804773133701,-0.49274757022996,1.71874889727132,0.756388008000857,0.756388008000857,0.801222465481458,NA,NA,NA,NA,0.402326476073567,-0.140625347671476,0.40048531715111,0.378194004000428,0.176245809818082,0.311737754736198,2.54630924735719,0.932285432392931,0.564492710947767,0.234510388849469,0.234510388849469,0.564606505696588,1.27315462367859,2.54630924735719,0.141123177736942,0,0,0.564492710947767,2.76257892063382,0.623709209971028,1.09588187849995,-2.65816919942734,0.141123177736942,0.564492710947767,NA +2.76257892063382,0.0688340443191719,NA,NA,NA,NA,0.376290790028972,0.0156284493459744,0.0156284493459744,0.00376301056074711,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0.174015646849531,0.348031293699062,7.23979801470782,2.33611263785861,1.92961736510351,3.33586286962274,NA,NA,0.859234730207016,0.378061366417808,1.33586286962274,0.587776685556819,NA,NA,NA,NA,0.348031293699062,0.402326476073567,1.71846946041403,0.756122732835615,0.756122732835615,0.800970634302221,NA,NA,NA,NA,4.50733166345355,2.23240936943219,0.400454971272191,0.378061366417808,0.17619929491385,0.311666455555131,5.14748578649458,2.54630924735719,0.564465307487896,0.234454529254553,0.234454529254553,0.564492710947767,2.57374289324729,5.14748578649458,0.141116326871974,0,0,0.564465307487896,0.688340443191719,0.623698943925289,4.84007076831006,0.760450595535304,0.141116326871974,0.564465307487896,NA +0.688340443191719,0.1494903012236,NA,NA,NA,NA,0.376301056074711,0.01562894794961,0.01562894794961,0.00376303394362958,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.1399197170257,4.27983943405141,4.27273594769885,-4.24692574618589,1.92960053218526,3.33582218190645,NA,NA,0.859201064370519,0.378029403636357,1.33582218190645,0.587732119675943,NA,NA,NA,NA,4.27983943405141,4.50733166345355,1.71840212874104,0.756058807272713,0.756058807272713,0.800909942544381,NA,NA,NA,NA,4.48170644863615,4.59614867067319,0.400447658496897,0.378029403636357,0.176188084264147,0.311649269375914,5.57570857577256,5.14748578649458,0.564458818411217,0.234441122228902,0.234441122228902,0.564465307487896,2.78785428788628,5.57570857577256,0.141114704602804,0,0,0.564458818411217,1.494903012236,0.623696605637042,3.62480137683827,-3.64025640245198,0.141114704602804,0.564458818411217,NA +1.494903012236,-0.0452111922074502,NA,NA,NA,NA,0.376303394362958,0.0156290404477055,0.0156290404477055,0.00376303394362958,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.24657533541993,4.49315067083985,5.81455108333928,0.847024365047812,1.9295964756219,3.33581237647143,NA,NA,0.859192951243792,0.378021701073622,1.33581237647143,0.587721379857602,NA,NA,NA,NA,4.49315067083985,4.48170644863615,1.71838590248758,0.756043402147244,0.756043402147244,0.800895316993794,NA,NA,NA,NA,7.42138786867567,5.77005175578807,0.400445896146123,0.378021701073622,0.176185382608144,0.31164512777978,7.02778930908077,5.57570857577256,0.5644577306643,0.234438124975585,0.234438124975585,0.564458818411217,3.51389465454038,7.02778930908077,0.141114432666075,0,0,0.5644577306643,-0.452111922074502,0.623696605637043,4.54723176421882,0.901435493723545,0.141114432666075,0.5644577306643,NA +-0.452111922074502,-0.064657926164991,NA,NA,NA,NA,0.376303394362958,0.01562894794961,0.01562894794961,0.00376301056074711,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.62812712869346,7.25625425738691,3.48277658604101,-4.57056375040767,1.92959549801281,3.33581001341026,NA,NA,0.859190996025623,0.378019844792325,1.33581001341026,0.58771879160419,NA,NA,NA,NA,7.25625425738691,7.42138786867567,1.71838199205125,0.75603968958465,0.75603968958465,0.800891792292245,NA,NA,NA,NA,6.97676864770353,7.29842207028752,0.400445471426784,0.378019844792325,0.176184731516935,0.311644129662377,6.43046931367545,7.02778930908077,0.564459444125913,0.234438372496603,0.234438372496603,0.5644577306643,3.21523465683772,6.43046931367545,0.141114861031478,0,0,0.564459444125913,-0.64657926164991,0.623698943925289,3.89566905789674,-2.19400286066141,0.141114861031478,0.564459444125913,NA +-0.64657926164991,-0.0717455088911215,NA,NA,NA,NA,0.376301056074711,0.0156284493459744,0.0156284493459744,0.00376290790028972,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.50446699498097,7.00893398996193,0.887739145009441,-2.51772391975864,1.92959526241268,3.33580944392101,NA,NA,0.859190524825368,0.378019397435799,1.33580944392101,0.587718167844909,NA,NA,NA,NA,7.00893398996193,6.97676864770353,1.71838104965074,0.756038794871599,0.756038794871599,0.800890942853569,NA,NA,NA,NA,6.39600655024297,6.70709800453446,0.40044536907086,0.378019397435799,0.176184574606302,0.311643889119908,5.84362205156607,6.43046931367545,0.564468054709563,0.234442456487311,0.234442456487311,0.564459444125913,2.92181102578303,5.84362205156607,0.141117013677391,0,0,0.564468054709563,-0.717455088911215,0.623709209971028,1.47039511420737,-0.957128536815457,0.141117013677391,0.564468054709563,NA +-0.717455088911215,-0.012437117957879,NA,NA,NA,NA,0.376290790028972,0.0156263527383127,0.0156263527383127,0.00376248054903204,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.21355784783606,6.42711569567212,0.468069037522408,-3.41072200585522,1.92959520563386,3.33580930667604,NA,NA,0.85919041126773,0.378019289624404,1.33580930667604,0.587718017521027,NA,NA,NA,NA,6.42711569567212,6.39600655024297,1.71838082253546,0.756038579248809,0.756038579248809,0.800890738141721,NA,NA,NA,NA,5.2697249395362,5.88678760911582,0.400445344403426,0.378019289624404,0.17618453679136,0.311643831149961,5.18485168886579,5.84362205156607,0.564504145341457,0.234460139430372,0.234460139430372,0.564468054709563,2.5924258444329,5.18485168886579,0.141126036335364,0,0,0.564504145341457,-0.12437117957879,0.623751945096796,1.08920104092557,-1.96004100688578,0.141126036335364,0.564504145341457,NA +-0.12437117957879,0.0114324625107261,NA,NA,NA,NA,0.376248054903204,0.0156176467731259,0.0156176467731259,0.00376070717703855,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.66571560324708,5.33143120649416,-1.6949081175497,1.05628098935573,1.92959519195036,3.33580927360046,NA,NA,0.85919038390072,0.37801926364222,1.33580927360046,0.587717981293474,NA,NA,NA,NA,5.33143120649416,5.2697249395362,1.71838076780144,0.75603852728444,0.75603852728444,0.800890688806853,NA,NA,NA,NA,4.99972267767629,5.1237826476331,0.400445338458657,0.37801926364222,0.176184527678085,0.311643817179397,5.12635754555703,5.18485168886579,0.56465399000561,0.234533691546024,0.234533691546024,0.564504145341457,2.56317877277852,5.12635754555703,0.141163497501403,0,0,0.56465399000561,0.114324625107261,0.623929282296146,-1.59237128708114,0.506663323184991,0.141163497501403,0.56465399000561,NA +0.114324625107261,0.0501954252592249,NA,NA,NA,NA,0.376070717703855,0.0155815109240039,0.0155815109240039,0.00375334385431612,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.50606433733599,5.01212867467197,2.68801984406987,-3.52410488971019,1.92959518865268,3.33580926562936,NA,NA,0.859190377305361,0.3780192573806,1.33580926562936,0.587717972562754,NA,NA,NA,NA,5.01212867467197,4.99972267767629,1.71838075461072,0.756038514761199,0.756038514761199,0.800890676917314,NA,NA,NA,NA,4.79781124236509,4.90542912092295,0.400445337025987,0.3780192573806,0.176184525481816,0.311643813812538,5.24653158499517,5.12635754555703,0.565275743436768,0.234838926470331,0.234838926470331,0.56465399000561,2.62326579249758,5.24653158499517,0.141318935859192,0,0,0.565275743436768,0.501954252592248,0.624665614568388,2.57081838890827,-2.56161386206534,0.141318935859192,0.565275743436768,NA +0.501954252592248,0.086433265837486,NA,NA,NA,NA,0.375334385431612,0.015431769102056,0.015431769102056,0.00372289210642648,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.40428651511044,4.80857303022087,2.57684732214097,-2.15425429214524,1.92959518785795,3.33580926370835,NA,NA,0.859190375715902,0.37801925587157,1.33580926370835,0.58771797045868,NA,NA,NA,NA,4.80857303022087,4.79781124236509,1.7183807514318,0.75603851174314,0.75603851174314,0.800890674051975,NA,NA,NA,NA,5.09330411959954,4.9230847993934,0.400445336680719,0.37801925587157,0.176184524952523,0.311643813001136,5.7364684336436,5.24653158499517,0.567856494236809,0.236105651614422,0.236105651614422,0.565275743436768,2.8682342168218,5.7364684336436,0.141964123559202,0,0,0.567856494236809,0.86433265837486,0.627710789357352,2.1128996204296,-1.93475752087532,0.141964123559202,0.567856494236809,NA +0.86433265837486,-0.0128662529840001,NA,NA,NA,NA,0.372289210642648,0.0148061000624168,0.0148061000624168,0.003594340622336,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.53814109378946,5.07628218757893,4.92347520184869,-1.86239013226671,1.92959518766642,3.33580926324539,NA,NA,0.859190375332848,0.378019255507899,1.33580926324539,0.587717969951605,NA,NA,NA,NA,5.07628218757893,5.09330411959954,1.7183807506657,0.756038511015798,0.756038511015798,0.800890673361437,NA,NA,NA,NA,6.52277133818366,5.72971808268662,0.40044533659751,0.378019255507899,0.176184524824965,0.311643812805591,6.55180740715362,5.7364684336436,0.57854755551144,0.24135836204421,0.24135836204421,0.567856494236809,3.27590370357681,6.55180740715362,0.14463688887786,0,0,0.57854755551144,-0.128662529840001,0.6405659377664,4.18571259206134,-1.14564075784525,0.14463688887786,0.57854755551144,NA +-0.128662529840001,0.157711783466369,NA,NA,NA,NA,0.3594340622336,0.0123035264264732,0.0123035264264732,0.0031071525637989,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.22173300631698,6.44346601263396,-0.192188290585531,-3.01824271230274,1.92959518762027,3.33580926313382,NA,NA,0.859190375240533,0.378019255420255,1.33580926313382,0.587717969829402,NA,NA,NA,NA,6.44346601263396,6.52277133818366,1.71838075048107,0.756038510840511,0.756038510840511,0.80089067319502,NA,NA,NA,NA,5.14924916089009,5.95335284288034,0.400445336577457,0.378019255420255,0.176184524794224,0.311643812758465,6.34161097996262,6.55180740715362,0.623287625494215,0.2632288634459,0.2632288634459,0.57854755551144,3.17080548998131,6.34161097996262,0.155821906373554,0,0,0.623287625494215,1.57711783466369,0.68928474362011,-0.141260774249862,-3.00196331257474,0.155821906373554,0.623287625494215,NA +1.57711783466369,0,NA,NA,NA,NA,0.31071525637989,0,0,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.61482976454456,5.22965952908912,6.26351578299339,-0.196943749172839,1.92959518760914,3.33580926310693,NA,NA,0.859190375218285,0.378019255399134,1.33580926310693,0.587717969799951,NA,NA,NA,NA,5.22965952908912,5.14924916089009,1.71838075043657,0.756038510798267,0.756038510798267,0.800890673154914,NA,NA,NA,NA,7.93974845734541,6.34161097996262,0.400445336572624,0.378019255399134,0.176184524786815,0.311643812747108,7.93974845734541,6.34161097996262,0.800890673145249,0.35236904957363,0.35236904957363,0.623287625494215,3.9698742286727,7.93974845734541,0.200222668286312,0,0,0.800890673145249,0,1,4.90847131886524,-0.118078543249447,0.200222668286312,0.800890673145249,NA +0,0,NA,NA,NA,NA,0,0,0,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,7.77993470960713,7.93974845734541,1.71838075042585,0.756038510788087,0.756038510788087,0.800890673145249,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA diff --git a/statsmodels/tsa/statespace/tests/results/results_exact_initial_local_level_R.csv b/statsmodels/tsa/statespace/tests/results/results_exact_initial_local_level_R.csv new file mode 100644 index 0000000..9a96a59 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_exact_initial_local_level_R.csv @@ -0,0 +1,12 @@ +"r_1","r0_1","r1_1","sumN","sumN0","sumN1","sumN2","m_1","v_1","F_1","Finf_1","a_1","sumP","sumPinf","att_1","sumPtt","alphahat_1","sumV","muhat_1","sumVmu","etahat_1","sumVeta","epshat_1","Veps_1","llf" +0,0,8.69269189482201,0,0,1,-1.65936477978876,0,10.2394,1.993,1,0,0,1,10.2394,0.9965,8.69269189482201,1.65936477978876,8.69269189482201,1.65936477978876,-6.40490817462816,2.53188097006232,1.54670810517799,1.65936477978876,-23.0163218509366 +-0.776070298634213,-0.776070298634213,0,0.0839957463292219,0.0839957463292219,0,0,10.2394,-9.2394,12.239,NA,10.2394,10.246,NA,2.50454483209413,0.834229839039137,2.28778372019385,1.42808320855318,2.28778372019385,1.42808320855318,-1.07220418929958,2.37155267750781,-1.28778372019385,1.42808320855318,NA +-0.129916901647835,NA,NA,0.0863496380277403,NA,NA,NA,2.50454483209413,-1.50454483209413,11.9144596780783,NA,2.50454483209413,9.92145967807827,NA,1.25167384265698,0.829809730053966,1.21557953089427,1.4216017878374,1.21557953089427,1.4216017878374,-0.179490758055025,2.36705964724304,-0.215579530894269,1.42160178783739,NA +-0.0217485469592905,NA,NA,0.0864156033447341,NA,NA,NA,1.25167384265698,-0.251673842656979,11.9056194601079,NA,1.25167384265698,9.91261946010793,NA,1.04213018651369,0.829685958390947,1.03608877283924,1.42142015300846,1.03608877283924,1.42142015300846,-0.0300473851286392,2.36693373760447,-0.0360887728392446,1.42142015300846,NA +-0.00364078336709551,NA,NA,0.0864174519121221,NA,NA,NA,1.04213018651369,-0.0421301865136896,11.9053719167819,NA,1.04213018651369,9.91237191678189,NA,1.00705273739524,0.82968248989765,1.00604138771061,1.42141506687939,1.00604138771061,1.42141506687939,-0.00503003802596633,2.36693030792694,-0.00604138771060548,1.42141506687939,NA +-0.000609479949832344,NA,NA,0.0864175022656145,NA,NA,NA,1.00705273739524,-0.0070527373952447,11.9053649797953,NA,1.00705273739524,9.9123649797953,NA,1.00118065306293,0.829682392696864,1.00101134968464,1.42141506687939,1.00101134968464,1.42141506687939,-0.000842045578737446,2.36693373760447,-0.00101134968463918,1.42141506687939,NA +-0.000102029029290857,NA,NA,0.0864174519121221,NA,NA,NA,1.00118065306293,-0.00118065306293236,11.9053647853937,NA,1.00118065306293,9.91236478539373,NA,1.00019764548141,0.829682389972915,1.0001693041059,1.42142015300846,1.0001693041059,1.42142015300846,-0.000140958380540156,2.36705964724304,-0.000169304105901757,1.42142015300846,NA +-1.70796535247978e-05,NA,NA,0.0864156033447341,NA,NA,NA,1.00019764548141,-0.000197645481414543,11.9053647799458,NA,1.00019764548141,9.91236477994583,NA,1.00003308654978,0.82968238989658,1.00002834572536,1.4216017878374,1.00002834572536,1.4216017878374,-2.35789167118667e-05,2.37155267750781,-2.83457253616601e-05,1.42160178783739,NA +-2.85701159722122e-06,NA,NA,0.0863496380277403,NA,NA,NA,1.00003308654978,-3.30865497815136e-05,11.9053647797932,NA,1.00003308654978,9.91236477979316,NA,1.00000553880498,0.82968238989444,1.00000476680865,1.42808320855317,1.00000476680865,1.42808320855317,-3.83959318630342e-06,2.53188097006232,-4.76680864975738e-06,1.42808320855318,NA +-4.65236057955097e-07,NA,NA,0.0839957463292219,NA,NA,NA,1.00000553880498,-5.53880497866643e-06,11.9053647797889,NA,1.00000553880498,9.91236477978888,NA,1.00000092721546,0.82968238989438,1.00000092721546,1.65936477978876,1.00000092721546,1.65936477978876,0,8.253,-9.27215463504509e-07,1.65936477978876,NA +0,NA,NA,0,NA,NA,NA,NA,NA,NA,NA,1.00000092721546,9.91236477978876,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA diff --git a/statsmodels/tsa/statespace/tests/results/results_exact_initial_local_linear_trend_R.csv b/statsmodels/tsa/statespace/tests/results/results_exact_initial_local_linear_trend_R.csv new file mode 100644 index 0000000..d34dcb9 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_exact_initial_local_linear_trend_R.csv @@ -0,0 +1,12 @@ +"r_1","r_2","r0_1","r0_2","r1_1","r1_2","sumN","sumN0","sumN1","sumN2","m_1","v_1","F_1","Finf_1","a_1","a_2","sumP","sumPinf","att_1","att_2","sumPtt","alphahat_1","alphahat_2","sumV","muhat_1","sumVmu","etahat_1","etahat_2","sumVeta","epshat_1","Veps_1","llf" +0,0,0,0,9.72422585109483,-2.4212757752195,0,0,2,-4.1254118726452,0,10.2394,1.993,1,0,0,0,2,10.2394,0,0.9965,9.72422585109483,-2.4212757752195,4.1254118726452,9.72422585109483,1.78897970994046,-2.13333279022294,0.603319851251709,8.78748511553388,0.515174148905165,1.78897970994046,-21.1364983872324 +0,0,-0.258491795737664,0.258491795737664,-2.4212757752195,0,0,0,1,-3.71701622659957,10.2394,-6.0355,12.239,1,10.2394,0,12.58,4,4.2039,-6.0355,9.2795,5.16961728565239,-1.81795592396779,3.93514567728326,5.16961728565239,1.47322425474258,1.86569619045403,0.0756893037514425,8.05444975507323,-0.965717285652394,1.47322425474258,NA +0.226062788132076,0.032429007605588,0.226062788132076,0.032429007605588,0,0,0.051363991244706,0.051363991244706,0,0,-1.8316,7.954723,30.798,NA,-1.8316,-6.0355,78.844,NA,5.60835701068251,-1.75671757198519,13.749163922982,5.21735755213863,-1.74226662021634,3.60076175360198,5.21735755213863,1.47286280067942,-1.88507262098594,0.608799626952847,7.4387710112529,0.905765447861367,1.47286280067943,NA +-0.228410592631279,0.260839600236867,NA,NA,NA,NA,0.080687059729398,NA,NA,NA,3.85163943869732,-2.85163943869732,22.250346743295,NA,3.85163943869732,-1.75671757198519,48.7242243976881,NA,1.25542601501419,-2.91892501722355,9.16473520710951,1.59001831093635,-1.1334669932635,3.44977255623722,1.59001831093635,1.47107882801791,0.558189356012382,0.45094018712092,7.18360558861604,-0.590018310936346,1.47107882801791,NA +0.0676347214361302,0.193204878800737,NA,NA,NA,NA,0.0918518103125956,NA,NA,NA,-1.66349900220936,2.66349900220936,20.3194339439886,NA,-1.66349900220936,-2.91892501722355,42.1882350771407,NA,0.73875485281549,-1.94280306025839,8.10697982907794,1.01474067368523,-0.682526806142577,3.40417641537387,1.01474067368523,1.47005925030176,0.61923038959202,0.275817961347531,7.09409485861663,-0.0147406736852317,1.47005925030176,NA +0.0750309450614346,0.118173933739302,NA,NA,NA,NA,0.0953539315927209,NA,NA,NA,-1.2040482074429,2.2040482074429,19.7436685873651,NA,-1.2040482074429,-1.94280306025839,40.2635281749167,NA,0.777515102727931,-1.16474757404214,7.78903665265676,0.951444257134675,-0.406708844795046,3.41779499251488,0.951444257134675,1.47005925030176,0.41816137510756,0.157559310008498,7.06776435408301,0.0485557428653252,1.47005925030176,NA +0.0506678026302629,0.0675061311090392,NA,NA,NA,NA,0.0953539315927209,NA,NA,NA,-0.387232471314205,1.38723247131421,19.5578741215719,NA,-0.387232471314205,-1.16474757404214,39.6448274460767,NA,0.858637278359423,-0.681255709019103,7.68611246288461,0.962896787447189,-0.249149534786548,3.51108468447222,0.962896787447189,1.47107882801791,0.264517213944311,0.0827521880715023,7.06946955440421,0.0371032125528116,1.47107882801791,NA +0.032051037676519,0.0354550934325202,NA,NA,NA,NA,0.0918518103125956,NA,NA,NA,0.17738156934032,0.82261843065968,19.4963427441272,NA,0.17738156934032,-0.681255709019103,39.4401675462981,NA,0.915908406318996,-0.395782473854191,7.65198356932808,0.978264466604951,-0.166397346715046,3.81786955269073,0.978264466604951,1.47286280067943,0.174510511932601,0.0333995242097925,7.08451748207039,0.0217355333950489,1.47286280067943,NA +0.0211451001978191,0.0143099932347011,NA,NA,NA,NA,0.080687059729398,NA,NA,NA,0.520125932464805,0.479874067535195,19.4757829323051,NA,0.520125932464805,-0.395782473854191,39.3718080383884,NA,0.950893423903834,-0.229493137203491,7.64057446288005,0.986377631822506,-0.132997822505254,4.85378169531128,0.986377631822506,1.47322425474257,0.118100374165989,0,7.08849536606466,0.0136223681774941,1.47322425474258,NA +0.0143099932347011,0,NA,NA,NA,NA,0.051363991244706,NA,NA,NA,0.721400286700344,0.278599713299656,19.4688920344185,NA,0.721400286700344,-0.229493137203491,39.3488989452308,NA,0.971480183483241,-0.132997822505254,7.63674986537858,0.971480183483241,-0.132997822505254,9.22058000043485,0.971480183483241,1.78897970994046,0,0,10.587,0.0285198165167594,1.78897970994046,NA +0,0,NA,NA,NA,NA,0,NA,NA,NA,NA,NA,NA,NA,0.838482360977987,-0.132997822505254,39.3412127441284,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA diff --git a/statsmodels/tsa/statespace/tests/results/results_exact_initial_local_linear_trend_missing_R.csv b/statsmodels/tsa/statespace/tests/results/results_exact_initial_local_linear_trend_missing_R.csv new file mode 100644 index 0000000..5e3939b --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_exact_initial_local_linear_trend_missing_R.csv @@ -0,0 +1,12 @@ +"r_1","r_2","r0_1","r0_2","r1_1","r1_2","sumN","sumN0","sumN1","sumN2","m_1","v_1","F_1","Finf_1","a_1","a_2","sumP","sumPinf","att_1","att_2","sumPtt","alphahat_1","alphahat_2","sumV","muhat_1","sumVmu","etahat_1","etahat_2","sumVeta","epshat_1","Veps_1","llf" +0,0,0,0,10.1958496846685,-2.10871399396641,0,0,2,-4.46814315215799,0,10.2394,1.993,1,0,0,0,2,10.2394,0,0.9965,10.1958496846685,-2.10871399396641,4.46814315215799,10.1958496846685,1.91294710856782,-0.180341571716255,0.0510017240258985,9.88091155343069,0.0435503153314549,1.91294710856782,-18.3036127435546 +0,0,-0.0218516384001279,0.0218516384001279,-1.05435699698321,-1.05435699698321,0,0,1,-3.77146495556118,10.2394,NA,12.239,0,10.2394,0,12.58,4,10.2394,0,6.29,7.90679411898588,-2.05771226994051,7.41130233180799,7.90679411898588,5.64885138733782,-0.180341571716255,0.102003448051797,10.3279755588144,0,1.993,NA +0,0,-0.0218516384001279,0.0437032768002558,-1.05435699698321,0,0,0.0201540543513393,0.34743239940153,-0.942866238890294,10.2394,-4.116277,22.826,4,10.2394,0,30.169,9,6.123123,-2.0581385,6.682,5.66874027732911,-1.95570882188872,3.63231563764979,5.66874027732911,1.58641769780286,-2.0619374624352,0.685132254222128,7.44440383932038,0.454382722670889,1.58641769780286,NA +-0.249840962369465,0.293544239169721,-0.249840962369465,0.293544239169721,0,0,0.0806162174053572,0.0806162174053572,0,0,4.0649845,-3.0649845,22.2725,NA,4.0649845,-2.0581385,48.728,NA,1.27426261571445,-3.30174675800876,9.18403971826243,1.6510939930052,-1.27057656766659,3.45299459266899,1.6510939930052,1.47315781921821,0.634238515623979,0.505765636572017,7.19315170653061,-0.651093993005202,1.47315781921821,NA +0.0768494505784537,0.216694788591267,NA,NA,NA,NA,0.0912556889063722,NA,NA,NA,-2.02748414229431,3.02748414229431,20.3857332023796,NA,-2.02748414229431,-3.30174675800876,42.4673338870805,NA,0.70401967710986,-2.18548390247984,8.15989998984513,1.01475594096259,-0.76481093109457,3.40794854782558,1.01475594096259,1.47005925043166,0.695342770899586,0.309118353489546,7.10076679740901,-0.0147559409625935,1.47005925043167,NA +0.084253334654015,0.132441453937252,NA,NA,NA,NA,0.0950464078174438,NA,NA,NA,-1.48146422536998,2.48146422536998,19.7842203180011,NA,-1.48146422536998,-2.18548390247984,40.4060609662193,NA,0.750025114880946,-1.30684333082922,7.81355455157962,0.945287780767609,-0.455692577605024,3.41948953639084,0.945287780767609,1.47008037450966,0.468779827936753,0.176544487210087,7.07046445365213,0.0547122192323915,1.47008037450966,NA +0.056801142364807,0.075640311572445,NA,NA,NA,NA,0.0952404793744649,NA,NA,NA,-0.556818215948277,1.55681821594828,19.5735671509718,NA,-0.556818215948277,-1.30684333082922,39.6978365127291,NA,0.841483226820469,-0.763634961474225,7.6950370374825,0.958375031099337,-0.279148090394937,3.51174883331945,0.958375031099337,1.47109022343731,0.296411103231699,0.0927175739733502,7.07044611547522,0.0416249689006629,1.47109022343731,NA +0.0359155583704955,0.0397247532019495,NA,NA,NA,NA,0.0918149343295686,NA,NA,NA,0.077848265346244,0.922151734653756,19.5018246702595,NA,0.077848265346244,-0.763634961474225,39.4584789523086,NA,0.905760182021958,-0.443496103205072,7.6550483921108,0.975638043936099,-0.186430516421587,3.81815572010924,0.975638043936099,1.47286664522697,0.195528402079981,0.0374209193683974,7.08486691180396,0.024361956063901,1.47286664522697,NA +0.0236917971743585,0.016032956027591,NA,NA,NA,NA,0.0806768995228129,NA,NA,NA,0.462264078816886,0.537735921183114,19.4776446933883,NA,0.462264078816886,-0.443496103205072,39.3780062359788,NA,0.944977552071184,-0.257131496867396,7.64161011112534,0.984735929594493,-0.14900959705319,4.85395538598545,0.984735929594493,1.47322575686308,0.132319986095709,0,7.08860805764985,0.0152640704055076,1.47322575686308,NA +0.016032956027591,0,NA,NA,NA,NA,0.0513623367407963,NA,NA,NA,0.687846055203787,0.312153944796213,19.4695191740705,NA,0.687846055203787,-0.257131496867396,39.3509847197361,NA,0.968046318637011,-0.14900959705319,7.6370982019169,0.968046318637011,-0.14900959705319,9.22079074697588,0.968046318637011,1.78898628171106,0,0,10.587,0.0319536813629889,1.78898628171106,NA +0,0,NA,NA,NA,NA,0,NA,NA,NA,NA,NA,NA,NA,0.819036721583821,-0.14900959705319,39.3419134408971,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA diff --git a/statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_R.csv b/statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_R.csv new file mode 100644 index 0000000..8bbe1dd --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_R.csv @@ -0,0 +1,22 @@ +"r_1","r_2","r0_1","r0_2","r1_1","r1_2","N_1","N_2","N_3","N_4","N0_1","N0_2","N0_3","N0_4","N1_1","N1_2","N1_3","N1_4","N2_1","N2_2","N2_3","N2_4","m_1","m_2","v_1","v_2","F_1","F_2","Finf_1","Finf_2","K_1","K_2","K_3","K_4","Kinf_1","Kinf_2","Kinf_3","Kinf_4","a_1","a_2","P_1","P_2","P_3","P_4","Pinf_1","Pinf_2","Pinf_3","Pinf_4","att_1","att_2","Ptt_1","Ptt_2","Ptt_3","Ptt_4","alphahat_1","alphahat_2","V_1","V_2","V_3","V_4","muhat_1","muhat_2","Vmu_1","Vmu_2","Vmu_3","Vmu_4","etahat_1","etahat_2","Veta_1","Veta_2","Veta_3","Veta_4","epshat_1","epshat_2","Veps_1","Veps_2","llf" +0,0,0,0,9.97685232655492,6.11444296625407,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,9.97685232655492,6.11444296625407,0,0,1,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,9.97685232655492,6.11444296625407,0,0,0,0,9.97685232655492,6.11444296625407,0,0,0,0,9.97685232655492,6.11444296625407,0,0,0,0,-7.29993989742095,-0.286756556953947,0,0,0,0,0,0,0,0,-167.431497598545 +-3.64996994871047,-0.0955855189846488,-3.64996994871047,-0.0955855189846488,0,0,0.5,0,0,0.333333333333333,0.5,0,0,0.333333333333333,0,0,0,0,0,0,0,0,6.82275905315368,4.44114765181261,-7.29993989742095,-0.286756556953947,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,6.82275905315368,4.44114765181261,2,0,0,3,NA,NA,NA,NA,-0.477180844267266,4.15439109485867,0,0,0,0,-0.477180844267266,4.15439109485867,0,0,0,0,-0.477180844267266,4.15439109485867,0,0,0,0,0.390086155424854,-1.13271589058655,0,0,0,0,0,0,0,0,NA +0.195043077712427,-0.377571963528851,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1.00772690632397,1.56632026909001,0.390086155424854,-1.13271589058655,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,1.00772690632397,1.56632026909001,2,0,0,3,NA,NA,NA,NA,1.39781306174882,0.43360437850346,0,0,0,0,1.39781306174882,0.43360437850346,0,0,0,0,1.39781306174882,0.43360437850346,0,0,0,0,8.0470839612919,3.36065598693345,0,0,0,0,0,0,0,0,NA +4.02354198064595,1.12021866231115,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0.828987844425448,0.453004363751148,8.0470839612919,3.36065598693345,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,0.828987844425448,0.453004363751148,2,0,0,3,NA,NA,NA,NA,8.87607180571734,3.8136603506846,0,0,0,0,8.87607180571734,3.8136603506846,0,0,0,0,8.87607180571734,3.8136603506846,0,0,0,0,-7.45595532115747,1.72829271835191,0,0,0,0,0,0,0,0,NA +-3.72797766057873,0.57609757278397,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,5.58213400806405,3.30067850141731,-7.45595532115747,1.72829271835191,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,5.58213400806405,3.30067850141731,2,0,0,3,NA,NA,NA,NA,-1.87382131309342,5.02897121976922,0,0,0,0,-1.87382131309342,5.02897121976922,0,0,0,0,-1.87382131309342,5.02897121976922,0,0,0,0,0.0813713661838733,-3.22399483259538,0,0,0,0,0,0,0,0,NA +0.0406856830919367,-1.07466494419846,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0.571780709384058,1.636824225289,0.0813713661838733,-3.22399483259538,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,0.571780709384058,1.636824225289,2,0,0,3,NA,NA,NA,NA,0.653152075567931,-1.58717060730638,0,0,0,0,0.653152075567931,-1.58717060730638,0,0,0,0,0.653152075567931,-1.58717060730638,0,0,0,0,-5.0129688340234,1.04145111504991,0,0,0,0,0,0,0,0,NA +-2.5064844170117,0.347150371683303,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,-0.149575144407947,-0.504237827808964,-5.0129688340234,1.04145111504991,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,-0.149575144407947,-0.504237827808964,2,0,0,3,NA,NA,NA,NA,-5.16254397843134,0.537213287240945,0,0,0,0,-5.16254397843134,0.537213287240945,0,0,0,0,-5.16254397843134,0.537213287240945,0,0,0,0,4.78914450522193,0.705763528719743,0,0,0,0,0,0,0,0,NA +2.39457225261097,0.235254509573248,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,-2.42010800304339,-0.817623480789891,4.78914450522193,0.705763528719743,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,-2.42010800304339,-0.817623480789891,2,0,0,3,NA,NA,NA,NA,2.36903650217855,-0.111859952070148,0,0,0,0,2.36903650217855,-0.111859952070148,0,0,0,0,2.36903650217855,-0.111859952070148,0,0,0,0,6.26285339608913,5.47887306242224,0,0,0,0,0,0,0,0,NA +3.13142669804456,1.82629102080741,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1.15096026546823,0.42906331960765,6.26285339608913,5.47887306242224,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,1.15096026546823,0.42906331960765,2,0,0,3,NA,NA,NA,NA,7.41381366155736,5.90793638202989,0,0,0,0,7.41381366155736,5.90793638202989,0,0,0,0,7.41381366155736,5.90793638202989,0,0,0,0,0.933367919336909,-1.91048511180284,0,0,0,0,0,0,0,0,NA +0.466683959668455,-0.636828370600947,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,5.47928774538764,3.84593728512343,0.933367919336909,-1.91048511180284,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,5.47928774538764,3.84593728512343,2,0,0,3,NA,NA,NA,NA,6.41265566472455,1.93545217332058,0,0,0,0,6.41265566472455,1.93545217332058,0,0,0,0,6.41265566472455,1.93545217332058,0,0,0,0,4.27416293440075,5.87251280053117,0,0,0,0,0,0,0,0,NA +2.13708146720037,1.95750426684372,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.78696348435845,2.05671200227314,4.27416293440075,5.87251280053117,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,3.78696348435845,2.05671200227314,2,0,0,3,NA,NA,NA,NA,8.0611264187592,7.92922480280431,0,0,0,0,8.0611264187592,7.92922480280431,0,0,0,0,8.0611264187592,7.92922480280431,0,0,0,0,0.701573064513568,-0.547448751859534,0,0,0,0,0,0,0,0,NA +0.350786532256784,-0.182482917286511,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,6.40933065022089,4.78391520487357,0.701573064513568,-0.547448751859534,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,6.40933065022089,4.78391520487357,2,0,0,3,NA,NA,NA,NA,7.11090371473446,4.23646645301403,0,0,0,0,7.11090371473446,4.23646645301403,0,0,0,0,7.11090371473446,4.23646645301403,0,0,0,0,-0.434185653281034,1.76972619059811,0,0,0,0,0,0,0,0,NA +-0.217092826640517,0.589908730199369,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,4.82639179327144,3.11676732415251,-0.434185653281034,1.76972619059811,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,4.82639179327144,3.11676732415251,2,0,0,3,NA,NA,NA,NA,4.39220613999041,4.88649351475061,0,0,0,0,4.39220613999041,4.88649351475061,0,0,0,0,4.39220613999041,4.88649351475061,0,0,0,0,0.019575760938082,0.391772048081691,0,0,0,0,0,0,0,0,NA +0.009787880469041,0.130590682693897,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.66205112442039,2.83303863389833,0.019575760938082,0.391772048081691,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,3.66205112442039,2.83303863389833,2,0,0,3,NA,NA,NA,NA,3.68162688535847,3.22481068198002,0,0,0,0,3.68162688535847,3.22481068198002,0,0,0,0,3.68162688535847,3.22481068198002,0,0,0,0,-1.83744916157586,3.60677121887832,0,0,0,0,0,0,0,0,NA +-0.918724580787931,1.20225707295944,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.80825664727324,2.0262496498637,-1.83744916157586,3.60677121887832,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,2.80825664727324,2.0262496498637,2,0,0,3,NA,NA,NA,NA,0.970807485697378,5.63302086874202,0,0,0,0,0.970807485697378,5.63302086874202,0,0,0,0,0.970807485697378,5.63302086874202,0,0,0,0,3.01877417793456,0.23754787829354,0,0,0,0,0,0,0,0,NA +1.50938708896728,0.0791826260978468,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.1753100034713,2.44736984463628,3.01877417793456,0.23754787829354,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,2.1753100034713,2.44736984463628,2,0,0,3,NA,NA,NA,NA,5.19408418140586,2.68491772292982,0,0,0,0,5.19408418140586,2.68491772292982,0,0,0,0,5.19408418140586,2.68491772292982,0,0,0,0,1.57861642966953,1.68892698731518,0,0,0,0,0,0,0,0,NA +0.789308214834765,0.562975662438395,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.40251740758188,2.1127839254531,1.57861642966953,1.68892698731518,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,3.40251740758188,2.1127839254531,2,0,0,3,NA,NA,NA,NA,4.98113383725141,3.80171091276829,0,0,0,0,4.98113383725141,3.80171091276829,0,0,0,0,4.98113383725141,3.80171091276829,0,0,0,0,3.83053610318196,2.88925551675078,0,0,0,0,0,0,0,0,NA +1.91526805159098,0.96308517225026,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.63108019245619,2.5169111325576,3.83053610318196,2.88925551675078,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,3.63108019245619,2.5169111325576,2,0,0,3,NA,NA,NA,NA,7.46161629563815,5.40616664930837,0,0,0,0,7.46161629563815,5.40616664930837,0,0,0,0,7.46161629563815,5.40616664930837,0,0,0,0,-2.32311342688014,-0.315142251463101,0,0,0,0,0,0,0,0,NA +-1.16155671344007,-0.105047417154367,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,5.35265814261159,3.65478991885098,-2.32311342688014,-0.315142251463101,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,5.35265814261159,3.65478991885098,2,0,0,3,NA,NA,NA,NA,3.02954471573145,3.33964766738788,0,0,0,0,3.02954471573145,3.33964766738788,0,0,0,0,3.02954471573145,3.33964766738788,0,0,0,0,6.36167888945586,5.87990190399452,0,0,0,0,0,0,0,0,NA +3.18083944472793,1.95996730133151,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.51666665808209,1.94176801010144,6.36167888945586,5.87990190399452,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,2.51666665808209,1.94176801010144,2,0,0,3,NA,NA,NA,NA,8.87834554753795,7.82166991409596,0,0,0,0,8.87834554753795,7.82166991409596,0,0,0,0,8.87834554753795,7.82166991409596,0,0,0,0,0,0,2,0,0,3,0,0,0,0,NA +0,0,NA,NA,NA,NA,0,0,0,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,6.78567374799776,4.90433707514597,2,0,0,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA diff --git a/statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_measurement_error_R.csv b/statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_measurement_error_R.csv new file mode 100644 index 0000000..0ff3075 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_measurement_error_R.csv @@ -0,0 +1,22 @@ +"r_1","r_2","r0_1","r0_2","r1_1","r1_2","N_1","N_2","N_3","N_4","N0_1","N0_2","N0_3","N0_4","N1_1","N1_2","N1_3","N1_4","N2_1","N2_2","N2_3","N2_4","m_1","m_2","v_1","v_2","F_1","F_2","Finf_1","Finf_2","K_1","K_2","K_3","K_4","Kinf_1","Kinf_2","Kinf_3","Kinf_4","a_1","a_2","P_1","P_2","P_3","P_4","Pinf_1","Pinf_2","Pinf_3","Pinf_4","att_1","att_2","Ptt_1","Ptt_2","Ptt_3","Ptt_4","alphahat_1","alphahat_2","V_1","V_2","V_3","V_4","muhat_1","muhat_2","Vmu_1","Vmu_2","Vmu_3","Vmu_4","etahat_1","etahat_2","Veta_1","Veta_2","Veta_3","Veta_4","epshat_1","epshat_2","Veps_1","Veps_2","llf" +0,0,0,0,8.09390874866605,4.82113832107804,0,0,0,0,0,0,0,0,1,0,0,1,-3.35507153488832,0.60085628151496,0.60085628151496,-4.22122746005853,0,0,9.97685232655492,6.11444296625407,4,5,1,1,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,9.97685232655492,6.11444296625407,2,0,0,2.5,8.09390874866605,4.82113832107804,3.35507153488832,-0.60085628151496,-0.60085628151496,4.22122746005853,8.09390874866605,4.82113832107804,3.35507153488832,0,0,4.22122746005853,-1.95088817116922,0.254792224801327,1.41051623206052,0.0431393842068264,0.0431393842068264,1.89676356446474,1.88294357788887,1.29330464517603,3.35507153488832,4.22122746005853,-110.916014299311 +-0.975444085584611,0.0849307416004423,-0.975444085584611,0.0849307416004423,0,0,0.147370941984869,-0.0071898973678044,-0.0071898973678044,0.122581826170585,0.147370941984869,-0.0071898973678044,-0.0071898973678044,0.122581826170585,0,0,0,0,0,0,0,0,6.82275905315368,4.44114765181261,-7.29993989742095,0.693101147397859,7.45,8.82577181208054,NA,NA,3.45,1,0.536912751677852,3.82577181208054,NA,NA,NA,NA,6.82275905315368,4.44114765181261,3.45,1,1,3.96,NA,NA,NA,NA,3.48441453983894,3.7617335674744,0.909843046599343,0.5,0.152086628543618,1.08369327168755,3.54240769948721,3.80202930296575,1.62294582869236,0.111564493723433,0.111564493723433,1.9472938798915,3.54240769948721,3.80202930296575,1.62294582869236,0,0,1.9472938798915,0.12699347853188,-0.0344297891844175,1.34377641105357,-0.0102045488469841,-0.0102045488469841,1.82940870130298,-4.01958854375448,0.352361791892913,1.62294582869236,1.9472938798915,NA +0.06349673926594,-0.0114765963948058,NA,NA,NA,NA,0.164055897236607,0.00170075814116401,0.00170075814116401,0.130065699855224,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.87072734016179,2.20157633495755,-1.47291427841297,-1.65410643575324,6.7412382893296,8.42794961487865,NA,NA,2.7412382893296,0.521140041367563,0.309225112064323,3.42794961487865,NA,NA,NA,NA,2.87072734016179,2.20157633495755,2.7412382893296,0.521140041367563,0.521140041367563,3.46823701180192,NA,NA,NA,NA,2.21109571662062,1.41492635557905,0.807601606487984,0.260570020683781,0.0917260799466631,1.01683973312648,3.03880611916521,2.19486347189933,1.46827528237338,0.0350578242382186,0.0350578242382186,1.853016427392,3.03880611916521,2.19486347189933,1.46827528237338,0,0,1.853016427392,1.73347081415917,0.605659501203693,1.33267578933936,-0.0193365562093426,-0.0193365562093426,1.82151813449738,-1.64099305741639,-1.76125909339587,1.46827528237338,1.853016427392,NA +0.866735407079584,0.201886500401231,NA,NA,NA,NA,0.16683105266516,0.00322275936822376,0.00322275936822376,0.130942429500291,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1.53002576498403,1.00818968555575,7.34604604073332,2.30415616174162,6.64186760317476,8.38841751209826,NA,NA,2.64186760317476,0.453259418820217,0.272971065309138,3.38841751209826,NA,NA,NA,NA,1.53002576498403,1.00818968555575,2.64186760317476,0.453259418820217,0.453259418820217,3.41934918870244,NA,NA,NA,NA,4.52696773461829,2.44024506799366,0.791078067925752,0.226629709410108,0.08135356427939,1.00985004239813,3.91133291531157,2.09136611379647,1.44285665987927,0.020771139643225,0.020771139643225,1.84411294035767,3.91133291531157,2.09136611379647,1.44285665987927,0,0,1.84411294035767,-1.73236081162092,0.879613310750568,1.33087167762922,-0.0207705490125242,-0.0207705490125242,1.82037241206436,4.96473889040577,1.72229423688813,1.44285665987927,1.84411294035767,NA +-0.866180405810461,0.293204436916856,NA,NA,NA,NA,0.167282080592695,0.00346175816875403,0.00346175816875403,0.131069731992849,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.99555738770724,1.88149157412112,-4.86937870080066,3.47294402151996,6.62612418016217,8.38286951330505,NA,NA,2.62612418016217,0.442883477185984,0.267355977729439,3.38286951330505,NA,NA,NA,NA,2.99555738770724,1.88149157412112,2.62612418016217,0.442883477185984,0.442883477185984,3.41247139957087,NA,NA,NA,NA,1.17644519197747,2.95751823102365,0.788394291207052,0.221441738592992,0.0797328341163785,1.00886382280431,0.850715480173805,2.49842633933147,1.43869730487668,0.0185321471418028,0.0185321471418028,1.84289410351113,0.850715480173805,2.49842633933147,1.43869730487668,0,0,1.84289410351113,-0.449108216618907,-1.09153730008393,1.33058505751266,-0.0209949264631002,-0.0209949264631002,1.82019666585543,-2.72453679326722,2.53054488043775,1.43869730487668,1.84289410351113,NA +-0.224554108309454,-0.363845766694643,NA,NA,NA,NA,0.167353735621834,0.00349915441051669,0.00349915441051669,0.131089259349396,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1.47547806529583,1.41829633080496,-0.822325989727902,-2.95068347349024,6.62363233417813,8.38202519183587,NA,NA,2.62363233417813,0.441267249454961,0.266480521376774,3.38202519183587,NA,NA,NA,NA,1.47547806529583,1.41829633080496,2.62363233417813,0.441267249454961,0.441267249454961,3.41142247351118,NA,NA,NA,NA,1.05594546567766,0.172955022215842,0.787967531250703,0.220633624727481,0.0794797543785501,1.00871362064444,0.725777425267436,0.0779763316834193,1.43803444510469,0.018182999752879,0.018182999752879,1.84270998070842,0.725777425267436,0.0779763316834193,1.43803444510469,0,0,1.84270998070842,-1.09136903677849,0.996667324650668,1.33053991525303,-0.021030078121136,-0.021030078121136,1.82016929221206,-0.0726253496995052,-1.6651469389898,1.43803444510469,1.84270998070842,NA +-0.545684518389244,0.332222441550223,NA,NA,NA,NA,0.167365021186741,0.00350501302018933,0.00350501302018934,0.131092300865327,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0.579859239503584,0.28037110202187,-5.74240321793493,0.639205138568258,6.62324006996848,8.38189396214651,NA,NA,2.62324006996848,0.441014247481653,0.266343507300197,3.38189396214651,NA,NA,NA,NA,0.579859239503584,0.28037110202187,2.62324006996848,0.441014247481653,0.441014247481653,3.41125928250741,NA,NA,NA,NA,-1.67419990292636,0.155912150854006,0.787900287555748,0.220507123740826,0.0794401326546936,1.00869027257428,-0.705087424639744,1.17301334237752,1.43792993194198,0.0181283770534133,0.0181283770534133,1.84268142923626,-0.705087424639744,1.17301334237752,1.43792993194198,0,0,1.84268142923626,1.93707653582792,1.26615729152512,1.33053282616206,-0.0210355886165486,-0.0210355886165486,1.82016500877151,-4.4574565537916,-0.635800055136578,1.43792993194198,1.84268142923626,NA +0.968538267913962,0.422052430508374,NA,NA,NA,NA,0.167366793459484,0.00350593143609143,0.00350593143609143,0.131092776803165,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,-0.790326306206977,-0.272475120243669,3.15936280838552,-0.049736814778493,6.62317847243406,8.38187344002437,NA,NA,2.62317847243406,0.440974591909418,0.266322034802337,3.38187344002437,NA,NA,NA,NA,-0.790326306206977,-0.272475120243669,2.62317847243406,0.440974591909417,0.440974591909418,3.41123375267773,NA,NA,NA,NA,0.45939175956871,-0.0821906811521488,0.787889725947466,0.220487295954709,0.0794339227107091,1.00868662126165,1.93643682622131,1.59434514354818,1.4379135134206,0.0181198182981801,0.0181198182981801,1.84267696762753,1.93643682622131,1.59434514354818,1.4379135134206,0,0,1.84267696762753,2.7356664234779,2.64707614582766,1.33053171401905,-0.0210364525727043,-0.0210364525727043,1.82016433764842,0.432599675957236,-1.70620509561833,1.4379135134206,1.84267696762753,NA +1.36783321173895,0.882358715275888,NA,NA,NA,NA,0.167367071495237,0.00350607542878406,0.00350607542878406,0.131092851372398,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0.205038675438711,0.0590020794528826,7.20877498611865,5.36897646414019,6.62316880842725,8.38187022461828,NA,NA,2.62316880842725,0.440968374101857,0.266318668212577,3.38187022461828,NA,NA,NA,NA,0.205038675438711,0.0590020794528826,2.62316880842725,0.440968374101857,0.440968374101857,3.41122975214695,NA,NA,NA,NA,3.23073181692337,2.70520458097489,0.787888068849932,0.220484187050929,0.0794329490542505,1.00868604917237,4.18218837965301,3.6721015684912,1.43791093737031,0.0181184766723004,0.0181184766723004,1.84267626897685,4.18218837965301,3.6721015684912,1.43791093737031,0,0,1.84267626897685,1.95617722845023,1.06323876225462,1.330531539979,-0.0210365874694743,-0.0210365874694743,1.82016423329719,3.23162528190434,2.23583481353869,1.43791093737031,1.84267626897685,NA +0.978088614225113,0.35441292075154,NA,NA,NA,NA,0.16736711500525,0.00350609791157906,0.00350609791157906,0.131092862966978,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.42692728275415,1.72822819577463,3.9857283819704,-0.058143965065131,6.62316729270854,8.38186972052609,NA,NA,2.62316729270854,0.440967399079565,0.266318140304278,3.38186972052609,NA,NA,NA,NA,2.42692728275415,1.72822819577463,2.62316729270854,0.440967399079565,0.440967399079565,3.41122912494051,NA,NA,NA,NA,4.00366483571742,1.97013653790975,0.787887808943963,0.220483699539782,0.0794327963759983,1.00868595948358,5.14890188882409,3.3685170655817,1.43791053423819,0.0181182674447614,0.0181182674447614,1.84267616089081,5.14890188882409,3.3685170655817,1.43791053423819,0,0,1.84267616089081,1.95221268941781,2.61145496843319,1.33053151517094,-0.0210366049100987,-0.0210366049100987,1.82016422248125,1.26375377590046,-1.43306489226112,1.43791053423819,1.84267616089081,NA +0.976106344708903,0.87048498947773,NA,NA,NA,NA,0.167367121207266,0.00350610081834978,0.00350610081834978,0.13109286416875,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.59287337923164,1.58878758230739,5.46825303952757,5.97636358861777,6.62316705500463,8.38186964148237,NA,NA,2.62316705500462,0.440967246180371,0.266318057520331,3.38186964148237,NA,NA,NA,NA,2.59287337923164,1.58878758230739,2.62316705500462,0.440967246180371,0.440967246180371,3.41122902659058,NA,NA,NA,NA,4.9485136235668,4.36417079681,0.78788776818379,0.220483623090185,0.0794327724337024,1.00868594542001,5.53721875350436,4.98864217243069,1.43791047684395,0.0181182419393945,0.0181182419393944,1.84267615309775,5.53721875350436,4.98864217243069,1.43791047684395,0,0,1.84267615309775,1.16540112396395,0.806687211063099,1.33053152713274,-0.021036583965527,-0.021036583965527,1.82016425615697,2.52390766525484,2.94058263037362,1.43791047684395,1.84267615309775,NA +0.582700561981974,0.268895737021033,NA,NA,NA,NA,0.167367118216815,0.00350609732758784,0.00350609732758784,0.131092860427003,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.7835080508264,2.73537104343736,3.32739566390806,1.2795590329223,6.62316701772772,8.38186962908723,NA,NA,2.62316701772772,0.440967222203086,0.26631804453838,3.38186962908723,NA,NA,NA,NA,3.7835080508264,2.73537104343736,2.62316701772772,0.440967222203086,0.440967222203086,3.41122901116789,NA,NA,NA,NA,5.14200967771612,3.47317670410055,0.78788776179174,0.220483611101543,0.0794327686791348,1.00868594321465,5.43060315244533,3.90958783073625,1.43791050500765,0.0181182845183227,0.0181182845183227,1.84267621025335,5.43060315244533,3.90958783073625,1.43791050500765,0,0,1.84267621025335,0.347802372154021,1.1351224255678,1.33053163009932,-0.0210364296827485,-0.0210364296827485,1.82016448698264,1.68030056228913,0.326878622277785,1.43791050500765,1.84267621025335,NA +0.17390118607701,0.378374141855932,NA,NA,NA,NA,0.16736709247517,0.00350607161379141,0.00350607161379141,0.131092834779706,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.61295785008822,2.41767261718344,0.779248289902182,2.41693892776961,6.62316701188199,8.38186962714346,NA,NA,2.62316701188199,0.440967218443014,0.266318042502577,3.38186962714346,NA,NA,NA,NA,3.61295785008822,2.41767261718344,2.62316701188199,0.440967218443014,0.440967218443014,3.41122900874935,NA,NA,NA,NA,3.99838005632843,3.44472751546645,0.787887760789344,0.220483609221507,0.079432768090351,1.00868594286881,4.23598029759756,3.78507818835136,1.43791074642023,0.0181185882142718,0.0181185882142718,1.84267659145964,4.23598029759756,3.78507818835136,1.43791074642023,0,0,1.84267659145964,0.318852498232902,0.826974013808605,1.33053229096486,-0.0210354426360986,-0.0210354426360986,1.82016596114894,0.156225842392845,1.10141532639925,1.43791074642023,1.84267659145964,NA +0.159426249116451,0.275658004602868,NA,NA,NA,NA,0.167366927258784,0.00350590710601643,0.00350590710601643,0.131092670983451,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.03260828280415,2.17756701745227,0.649018602554319,1.00403232363454,6.62316701096527,8.38186962683865,NA,NA,2.62316701096527,0.440967217853366,0.266318042183326,3.38186962683865,NA,NA,NA,NA,3.03260828280415,2.17756701745227,2.62316701096527,0.440967217853366,0.440967217853366,3.41122900837008,NA,NA,NA,NA,3.32155937470845,2.62587967473812,0.78788776063215,0.220483608926683,0.079432767998019,1.00868594281458,3.57236610353709,3.18820134866866,1.43791229567801,0.0181205297940047,0.0181205297940047,1.84267902457936,3.57236610353709,3.18820134866866,1.43791229567801,0,0,1.84267902457936,-0.0117543731953821,2.02574470439929,1.33053650747997,-0.0210291486165603,-0.0210291486165603,1.82017535630606,0.109260781821377,0.0366093333113548,1.43791229567801,1.84267902457936,NA +-0.00587718659769104,0.675248234799762,NA,NA,NA,NA,0.167365873130008,0.00350485810276005,0.00350485810276005,0.131091627077104,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.44854358977566,1.71466374483694,-1.47773610407828,4.01674407041203,6.62316701082151,8.38186962679085,NA,NA,2.62316701082151,0.440967217760899,0.266318042133262,3.38186962679084,NA,NA,NA,NA,2.44854358977566,1.71466374483694,2.62316701082151,0.440967217760899,0.440967217760899,3.4112290083106,NA,NA,NA,NA,1.99089687579004,3.2369301101997,0.787887760607499,0.220483608880449,0.0794327679835396,1.00868594280607,2.73088908317376,4.01549846457417,1.43792217895709,0.0181329101253726,0.0181329101253726,1.84269453287115,2.73088908317376,4.01549846457417,1.43792217895709,0,0,1.84269453287115,1.47583620450463,0.977762424678728,1.33056342826029,-0.0209890268657222,-0.0209890268657222,1.8202351548678,-1.76008159747639,1.61752240416785,1.43792217895709,1.84269453287115,NA +0.737918102252313,0.325920808226243,NA,NA,NA,NA,0.167359142934928,0.00349817114428703,0.00349817114428703,0.131084982792467,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1.96652747095493,1.69295141923789,3.22755671045093,0.777077157697931,6.62316701079897,8.38186962678335,NA,NA,2.62316701079897,0.440967217746398,0.266318042125411,3.38186962678335,NA,NA,NA,NA,1.96652747095493,1.69295141923789,2.62316701079897,0.440967217746398,0.440967217746398,3.41122900830128,NA,NA,NA,NA,3.26952153706269,2.22137128740972,0.787887760603633,0.220483608873199,0.079432767981269,1.00868594280474,4.04593028546376,3.13013962714315,1.43798525147824,0.0182118264404507,0.0182118264404507,1.84279327526373,4.04593028546376,3.13013962714315,1.43798525147824,0,0,1.84279327526373,1.3908401927562,1.54754370116608,1.33073575411114,-0.0207334744980192,-0.0207334744980192,1.82061428644251,1.1481538959421,-0.445221904213323,1.43798525147824,1.84279327526373,NA +0.695420096378101,0.515847900388692,NA,NA,NA,NA,0.167316061472215,0.0034555790830032,0.0034555790830032,0.131042857061943,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.30117215475426,1.54245282237643,2.67996168249714,2.08082755332924,6.62316701079543,8.38186962678217,NA,NA,2.62316701079543,0.440967217744124,0.26631804212418,3.38186962678217,NA,NA,NA,NA,2.30117215475426,1.54245282237643,2.62316701079543,0.440967217744124,0.440967217744124,3.41122900829981,NA,NA,NA,NA,3.4287103084978,2.56044396041646,0.787887760603027,0.220483608872062,0.0794327679809129,1.00868594280453,4.35284722363103,3.60878560911609,1.43838842176804,0.0187144326998404,0.0187144326998403,1.84341998528461,4.35284722363103,3.60878560911609,1.43838842176804,0,0,1.84341998528461,1.71266870367931,1.65271900579767,1.33184812886711,-0.0191108034432469,-0.0191108034432469,1.82299094703844,0.628286613620379,0.192925303652197,1.43838842176804,1.84341998528461,NA +0.856334351839657,0.55090633526589,NA,NA,NA,NA,0.167037967783224,0.00318513390720781,0.00318513390720781,0.130778783662396,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.48248834237384,1.70991964586614,4.97912795326431,3.36473910144269,6.62316701079488,8.38186962678199,NA,NA,2.62316701079488,0.440967217743767,0.266318042123987,3.38186962678199,NA,NA,NA,NA,2.48248834237384,1.70991964586614,2.62316701079488,0.440967217743767,0.440967217743767,3.41122900829958,NA,NA,NA,NA,4.56142658105002,3.39901356099764,0.787887760602932,0.220483608871884,0.0794327679808571,1.0086859428045,4.97172799822965,3.96680269417031,1.44097899995498,0.0219059344894915,0.0219059344894915,1.84736057589078,4.97172799822965,3.96680269417031,1.44097899995498,0,0,1.84736057589078,0.58483145924797,1.31481619013311,1.33923699744463,-0.00896637786622002,-0.00896637786622002,1.83748653698129,2.4898882974085,1.43936395513807,1.44097899995498,1.84736057589078,NA +0.292415729623985,0.438272063377702,NA,NA,NA,NA,0.165190750638844,0.00149439631103667,0.00149439631103667,0.129168162557634,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.3004173588243,2.27189074060906,-0.270872643092856,1.08579149477218,6.62316701079479,8.38186962678196,NA,NA,2.62316701079479,0.440967217743711,0.266318042123956,3.38186962678196,NA,NA,NA,NA,3.3004173588243,2.27189074060906,2.62316701079479,0.440967217743711,0.440967217743711,3.41122900829955,NA,NA,NA,NA,3.2276346940267,2.69194521965305,0.787887760602917,0.220483608871856,0.0794327679808483,1.00868594280449,4.26073626661389,3.89588286744716,1.45791435533023,0.0419232933264428,0.0419232933264427,1.87154828758473,4.26073626661389,3.89588286744716,1.45791435533023,0,0,1.87154828758473,1.85973751799895,2.02918856767287,1.39394388030146,0.0476596607885082,0.0476596607885082,1.92625387881923,-1.23119155088244,-0.556235200059282,1.45791435533023,1.87154828758473,NA +0.929868758999476,0.67639618922429,NA,NA,NA,NA,0.151514029924636,-0.00794327679808469,-0.00794327679808469,0.119305124575641,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.42140091290926,1.72230502666656,6.45694463462868,5.66946467413014,6.62316701079478,8.38186962678196,NA,NA,2.62316701079478,0.440967217743703,0.266318042123952,3.38186962678196,NA,NA,NA,NA,2.42140091290926,1.72230502666656,2.62316701079478,0.440967217743703,0.440967217743703,3.41122900829954,NA,NA,NA,NA,5.15887051154005,4.43968896797451,0.787887760602915,0.220483608871851,0.079432767980847,1.00868594280449,5.15887051154004,4.43968896797451,1.57577552120583,0.158865535961694,0.158865535961694,2.01737188560898,5.15887051154004,4.43968896797451,1.57577552120583,0,0,2.01737188560898,0,0,2,0,0,3,3.7194750359979,3.38198094612145,1.57577552120583,2.01737188560898,NA +0,0,NA,NA,NA,NA,0,0,0,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.91134194616238,2.80764968949781,2.62316701079477,0.440967217743701,0.440967217743701,3.41122900829954,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA diff --git a/statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_missing_R.csv b/statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_missing_R.csv new file mode 100644 index 0000000..6f04a69 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_missing_R.csv @@ -0,0 +1,22 @@ +"r_1","r_2","r0_1","r0_2","r1_1","r1_2","N_1","N_2","N_3","N_4","N0_1","N0_2","N0_3","N0_4","N1_1","N1_2","N1_3","N1_4","N2_1","N2_2","N2_3","N2_4","m_1","m_2","v_1","v_2","F_1","F_2","Finf_1","Finf_2","K_1","K_2","K_3","K_4","Kinf_1","Kinf_2","Kinf_3","Kinf_4","a_1","a_2","P_1","P_2","P_3","P_4","Pinf_1","Pinf_2","Pinf_3","Pinf_4","att_1","att_2","Ptt_1","Ptt_2","Ptt_3","Ptt_4","alphahat_1","alphahat_2","V_1","V_2","V_3","V_4","muhat_1","muhat_2","Vmu_1","Vmu_2","Vmu_3","Vmu_4","etahat_1","etahat_2","Veta_1","Veta_2","Veta_3","Veta_4","epshat_1","epshat_2","Veps_1","Veps_2","llf" +0,0,0,0,5.94141980662958,6.11444296625407,0,0,0,0,6.93889390390723e-19,0,0,0,1,0,0,1,-56.012177346574,0,0,0,0,0,NA,6.11444296625407,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,1,0,6.11444296625407,0,0,0,0,5.94141980662958,6.11444296625407,56.012177346574,0,0,0,5.94141980662958,6.11444296625407,56.012177346574,0,0,0,-0.138754652541632,0.52032994703112,1.94599019334137,0.202536774969877,0.202536774969877,2.24048709386296,0,0,0,0,-85.7656323069402 +0,0,-0.069377326270816,0.17344331567704,0,29.7070990331479,0,0,0,0,0.0135024516646585,-0.0337561291616462,-0.0337561291616462,0.0843903229041154,0,2.53170968712346,0,18.6707257821913,0,0,0,-1400.30443366435,1.83433288987622,2.44577718650163,NA,1.70861390835704,2,3,0,0.04,2,0,0,3,0,0,0.1,0.04,1.83433288987622,2.44577718650163,2,0,0,3,0.25,0.1,0.1,0.04,6.10586766076881,4.15439109485867,10.375,0,0,0,4.66628814064938,4.15439109485867,14.9363506551355,0,-8.88178419700125e-16,0,4.66628814064938,4.15439109485867,14.9363506551355,0,0,0,0.298866611602038,-2.16140968756988,1.92023802093563,0.0648196239785518,0.0648196239785518,0.59745402620542,0,0,0,0,NA +0.149433305801019,-0.720469895856627,0.149433305801019,-0.720469895856627,0,0,0.0199404947660927,-0.010803270663092,-0.010803270663092,0.266949552643842,0.0199404947660927,-0.010803270663092,-0.010803270663092,0.266949552643842,0,0,0,0,0,0,0,0,4.29925115884201,2.88292997009723,NA,-2.44932559159377,7.1875,3.83,NA,NA,7.1875,2.075,2.075,3.83,NA,NA,NA,NA,4.29925115884201,2.88292997009723,7.1875,2.075,2.075,3.83,NA,NA,NA,NA,2.97226666731275,0.43360437850346,3.03165796344648,1.0375,2.22044604925031e-16,2.22044604925031e-16,3.87832801038433,0.433604378503461,5.33022756482674,8.07513778067204e-17,-2.22044604925031e-16,3.82020803879612e-16,3.87832801038433,0.433604378503461,5.33022756482674,0,0,3.82020803879612e-16,-0.166147576050951,2.86455299720635,1.85786059827129,0.0398686549128148,0.0398686549128148,0.21320910259307,0,0,0,0,NA +-0.0830737880254755,0.954850999068783,NA,NA,NA,NA,0.0355348504321783,-0.00664477581880247,-0.00664477581880247,0.309643433045214,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1.61621464720741,0.767895084863934,NA,3.04576526582067,3.51582898172324,3.24253263707572,NA,NA,3.51582898172324,0.606331592689295,0.606331592689295,3.24253263707572,NA,NA,NA,NA,1.61621464720741,0.767895084863934,3.51582898172324,0.606331592689295,0.606331592689295,3.24253263707572,NA,NA,NA,NA,2.18575207713696,3.8136603506846,1.70122454484697,0.303165796344648,0,0,1.90309774269225,3.8136603506846,2.9910742149139,0,0,0,1.90309774269225,3.8136603506846,2.9910742149139,0,0,0,-1.16506516035708,3.12288753095693,1.60169731586305,0.0648196239785518,0.0648196239785518,0.119642968596557,0,0,0,0,NA +-0.582532580178541,1.04096251031898,NA,NA,NA,NA,0.0995756710342366,-0.010803270663092,-0.010803270663092,0.320039670155938,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.23697414377386,1.96261455570123,NA,3.06635666406799,2.85061227242348,3.13609796358776,NA,NA,2.85061227242348,0.340244908969393,0.340244908969393,3.13609796358776,NA,NA,NA,NA,2.23697414377386,1.96261455570123,2.85061227242348,0.340244908969393,0.340244908969393,3.13609796358776,NA,NA,NA,NA,2.56965260476171,5.02897121976922,1.40684902813927,0.170122454484697,2.77555756156289e-17,2.22044604925031e-16,0.930581816194423,5.02897121976922,2.02536774969877,-7.91203844780898e-17,-2.77555756156289e-17,-9.44369329873278e-18,0.930581816194423,5.02897121976922,2.02536774969877,0,0,-9.44369329873278e-18,-1.32083019846005,-3.78487545845295,0.506341937424692,0.202536774969877,0.202536774969877,0.0810147099879508,0,0,0,0,NA +-0.660415099230023,-1.26162515281765,NA,NA,NA,NA,0.373414515643827,-0.0337561291616462,-0.0337561291616462,0.324331698890228,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.79351766831162,2.52551900886003,-2.14036559274369,-3.88992243784551,2.70342451406964,3.08326322533912,NA,NA,2.70342451406964,0.281369805627854,0,3.08326322533912,NA,NA,NA,NA,2.79351766831162,2.52551900886003,2.70342451406964,0.281369805627854,0.281369805627854,3.11254792225114,NA,NA,NA,NA,0.653152075567931,-1.58717060730638,0,0.140684902813927,0,0,0.653152075567931,-1.58717060730638,0,0,0,0,0.653152075567931,-1.58717060730638,0,0,0,0,-5.0129688340234,1.04145111504991,0,0,0,0,0,0,0,0,NA +-2.5064844170117,0.347150371683303,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,-0.149575144407947,-0.504237827808964,-5.0129688340234,1.04145111504991,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,-0.149575144407947,-0.504237827808964,2,0,0,3,NA,NA,NA,NA,-5.16254397843134,0.537213287240945,0,0,0,0,-5.16254397843134,0.537213287240945,0,0,0,0,-5.16254397843134,0.537213287240945,0,0,0,0,4.78914450522193,0.705763528719743,0,0,0,0,0,0,0,0,NA +2.39457225261097,0.235254509573248,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,-2.42010800304339,-0.817623480789891,4.78914450522193,0.705763528719743,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,-2.42010800304339,-0.817623480789891,2,0,0,3,NA,NA,NA,NA,2.36903650217855,-0.111859952070148,0,0,0,0,2.36903650217855,-0.111859952070148,0,0,0,0,2.36903650217855,-0.111859952070148,0,0,0,0,0.444505453542997,0.667083468466627,1.97307157920466,-0.0401742715180949,-0.0401742715180949,2.94004863031709,0,0,0,0,NA +0.222252726771499,0.222361156155542,NA,NA,NA,NA,0.00673210519883383,0.00669571191968248,0.00669571191968248,0.00666126329810096,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1.15096026546823,0.42906331960765,NA,NA,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,1.15096026546823,0.42906331960765,2,0,0,3,NA,NA,NA,NA,1.15096026546823,0.42906331960765,1,0,0,1.5,1.59546571901123,1.09614678807428,1.97307157920466,-0.0401742715180949,-0.0401742715180949,2.94004863031709,1.59546571901123,1.09614678807428,1.97307157920466,0,0,2.94004863031709,0.634697992535585,0.953673429564035,1.94443398845138,-0.0817059628920273,-0.0817059628920273,2.87946808935511,0,0,0,0,NA +0.317348996267793,0.317891143188012,NA,NA,NA,NA,0.0138915028871558,0.0136176604820045,0.0136176604820045,0.013392434516099,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0.704199128616409,0.401817380936706,NA,NA,2.77,3.56,NA,NA,2.77,0.56,0.56,3.56,NA,NA,NA,NA,0.704199128616409,0.401817380936706,2.77,0.56,0.56,3.56,NA,NA,NA,NA,0.704199128616409,0.401817380936706,1.385,0.28,0.28,1.78,1.76127488846348,1.71122528859599,2.61696459015352,0.373195371397849,0.373195371397849,3.33161693073751,1.76127488846348,1.71122528859599,2.61696459015352,0,0,3.33161693073751,0.905162426707353,1.36587584386432,1.88173221112895,-0.163582018546708,-0.163582018546708,2.76441777048945,0,0,0,0,NA +0.452581213353676,0.455291947954772,NA,NA,NA,NA,0.0295669472177637,0.0272636697577846,0.0272636697577846,0.0261758032789499,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0.472644778589216,0.301566778097964,NA,NA,3.1809,3.77,NA,NA,3.1809,0.8498,0.8498,3.77,NA,NA,NA,NA,0.472644778589216,0.301566778097964,3.1809,0.8498,0.8498,3.77,NA,NA,NA,NA,0.472644778589216,0.301566778097964,1.59045,0.4249,0.4249,1.885,2.29916745751789,2.40262093699541,2.71544039573457,0.339381638072028,0.339381638072028,3.20192211192751,2.29916745751789,2.40262093699541,2.71544039573457,0,0,3.20192211192751,1.28534422500737,1.9686773565275,1.71111091331538,-0.282532696835926,-0.282532696835926,2.52893488377513,0,0,0,0,NA +0.642672112503687,0.656225785509165,NA,NA,NA,NA,0.0722222716711559,0.0470887828059877,0.0470887828059877,0.05234056846943,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0.326792422723997,0.215155666957029,NA,NA,3.389465,3.866404,NA,NA,3.389465,0.991438,0.991438,3.866404,NA,NA,NA,NA,0.326792422723997,0.215155666957029,3.389465,0.991438,0.991438,3.866404,NA,NA,NA,NA,0.326792422723997,0.215155666957029,1.6947325,0.495719,0.495719,1.933202,3.15571423486494,3.38955922282924,2.19181478432344,-0.115284339022284,-0.115284339022284,2.65195898041369,3.15571423486494,3.38955922282924,2.19181478432344,0,0,2.65195898041369,1.79748125570917,2.89952697864593,0.752044702611407,0.507442627936194,0.507442627936194,0.493540533995563,0,0,0,0,NA +0.898740627854583,0.966508992881976,NA,NA,NA,NA,0.311988824347148,-0.0845737713226989,-0.0845737713226989,0.278495496222715,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0.227942911449107,0.151420751327611,4.1642632285413,3.47046543298155,3.49277401,3.59072234044421,NA,NA,3.49277401,1.06068886,0,3.59072234044421,NA,NA,NA,NA,0.227942911449107,0.151420751327611,3.49277401,1.06068886,1.06068886,3.91283332,NA,NA,NA,NA,4.39220613999041,4.88649351475061,0,0.53034443,0,2.22044604925031e-16,4.39220613999041,4.88649351475061,-7.75551625142867e-16,-1.93887906285717e-16,-2.35520238867082e-16,-5.88800597167705e-17,4.39220613999041,4.88649351475061,-7.75551625142867e-16,0,0,-5.88800597167705e-17,0.019575760938082,0.391772048081691,0,5.32907051820075e-17,5.32907051820075e-17,0,0,0,0,0,NA +0.009787880469041,0.130590682693897,NA,NA,NA,NA,0.5,-8.88178419700125e-18,-8.88178419700125e-18,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.66205112442039,2.83303863389833,0.019575760938082,0.391772048081691,2,3,NA,NA,2,5.32907051820075e-17,0,3,NA,NA,NA,NA,3.66205112442039,2.83303863389833,2,5.32907051820075e-17,5.32907051820075e-17,3,NA,NA,NA,NA,3.68162688535847,3.22481068198002,0,2.66453525910038e-17,0,0,3.68162688535847,3.22481068198002,0,-6.16297582203915e-33,0,-1.64214663788064e-49,3.68162688535847,3.22481068198002,0,0,0,-1.64214663788064e-49,-1.83744916157586,3.60677121887832,0,0,0,0,0,0,0,0,NA +-0.918724580787931,1.20225707295944,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.80825664727324,2.0262496498637,-1.83744916157586,3.60677121887832,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,2.80825664727324,2.0262496498637,2,0,0,3,NA,NA,NA,NA,0.970807485697378,5.63302086874202,0,0,0,0,0.970807485697378,5.63302086874202,0,0,0,0,0.970807485697378,5.63302086874202,0,0,0,0,3.01877417793456,0.23754787829354,0,0,0,0,0,0,0,0,NA +1.50938708896728,0.0791826260978468,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.1753100034713,2.44736984463628,3.01877417793456,0.23754787829354,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,2.1753100034713,2.44736984463628,2,0,0,3,NA,NA,NA,NA,5.19408418140586,2.68491772292982,0,0,0,0,5.19408418140586,2.68491772292982,0,0,0,0,5.19408418140586,2.68491772292982,0,0,0,0,1.57861642966953,1.68892698731518,0,0,0,0,0,0,0,0,NA +0.789308214834765,0.562975662438395,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.40251740758188,2.1127839254531,1.57861642966953,1.68892698731518,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,3.40251740758188,2.1127839254531,2,0,0,3,NA,NA,NA,NA,4.98113383725141,3.80171091276829,0,0,0,0,4.98113383725141,3.80171091276829,0,0,0,0,4.98113383725141,3.80171091276829,0,0,0,0,3.83053610318196,2.88925551675078,0,0,0,0,0,0,0,0,NA +1.91526805159098,0.96308517225026,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.63108019245619,2.5169111325576,3.83053610318196,2.88925551675078,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,3.63108019245619,2.5169111325576,2,0,0,3,NA,NA,NA,NA,7.46161629563815,5.40616664930837,0,0,0,0,7.46161629563815,5.40616664930837,0,0,0,0,7.46161629563815,5.40616664930837,0,0,0,0,-2.32311342688014,-0.315142251463101,0,0,0,0,0,0,0,0,NA +-1.16155671344007,-0.105047417154367,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,5.35265814261159,3.65478991885098,-2.32311342688014,-0.315142251463101,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,5.35265814261159,3.65478991885098,2,0,0,3,NA,NA,NA,NA,3.02954471573145,3.33964766738788,0,0,0,0,3.02954471573145,3.33964766738788,0,0,0,0,3.02954471573145,3.33964766738788,0,0,0,0,6.36167888945586,5.87990190399452,0,0,0,0,0,0,0,0,NA +3.18083944472793,1.95996730133151,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.51666665808209,1.94176801010144,6.36167888945586,5.87990190399452,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,2.51666665808209,1.94176801010144,2,0,0,3,NA,NA,NA,NA,8.87834554753795,7.82166991409596,0,0,0,0,8.87834554753795,7.82166991409596,0,0,0,0,8.87834554753795,7.82166991409596,0,0,0,0,0,0,2,0,0,3,0,0,0,0,NA +0,0,NA,NA,NA,NA,0,0,0,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,6.78567374799776,4.90433707514597,2,0,0,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA diff --git a/statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_mixed_R.csv b/statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_mixed_R.csv new file mode 100644 index 0000000..0aeca19 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_exact_initial_var1_mixed_R.csv @@ -0,0 +1,22 @@ +"r_1","r_2","r0_1","r0_2","r1_1","r1_2","N_1","N_2","N_3","N_4","N0_1","N0_2","N0_3","N0_4","N1_1","N1_2","N1_3","N1_4","N2_1","N2_2","N2_3","N2_4","m_1","m_2","v_1","v_2","F_1","F_2","Finf_1","Finf_2","K_1","K_2","K_3","K_4","Kinf_1","Kinf_2","Kinf_3","Kinf_4","a_1","a_2","P_1","P_2","P_3","P_4","Pinf_1","Pinf_2","Pinf_3","Pinf_4","att_1","att_2","Ptt_1","Ptt_2","Ptt_3","Ptt_4","alphahat_1","alphahat_2","V_1","V_2","V_3","V_4","muhat_1","muhat_2","Vmu_1","Vmu_2","Vmu_3","Vmu_4","etahat_1","etahat_2","Veta_1","Veta_2","Veta_3","Veta_4","epshat_1","epshat_2","Veps_1","Veps_2","llf" +0,0,0,1.71204403055114,9.97685232655492,0,0,0,0,0,0,0,0,0.28,1,0,0,0,0,0,0,0,9.97685232655492,6.11444296625407,9.97685232655492,6.11444296625407,0,3.57142857142857,1,0,0,0,0,3.57142857142857,1,0,0,0,9.97685232655492,6.11444296625407,0,0,0,3.57142857142857,1,0,0,0,0,0,0,0,0,0,19.9537046531098,12.2288859325081,0,0,0,0,19.9537046531098,12.2288859325081,0,0,0,0,-7.29993989742095,-0.286756556953947,0,0,0,0,0,0,0,0,-174.221016759917 +-3.64996994871047,-0.0955855189846488,-3.64996994871047,-0.0955855189846488,0,0,0.5,0,0,0.333333333333333,0.5,0,0,0.333333333333333,0,0,0,0,0,0,0,0,6.82275905315368,4.44114765181261,-7.29993989742095,-0.286756556953947,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,6.82275905315368,4.44114765181261,2,0,0,3,NA,NA,NA,NA,-0.477180844267266,4.15439109485867,0,0,0,0,-0.477180844267266,4.15439109485867,0,0,0,0,-0.477180844267266,4.15439109485867,0,0,0,0,0.390086155424854,-1.13271589058655,0,0,0,0,0,0,0,0,NA +0.195043077712427,-0.377571963528851,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1.00772690632397,1.56632026909001,0.390086155424854,-1.13271589058655,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,1.00772690632397,1.56632026909001,2,0,0,3,NA,NA,NA,NA,1.39781306174882,0.43360437850346,0,0,0,0,1.39781306174882,0.43360437850346,0,0,0,0,1.39781306174882,0.43360437850346,0,0,0,0,8.0470839612919,3.36065598693345,0,0,0,0,0,0,0,0,NA +4.02354198064595,1.12021866231115,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0.828987844425448,0.453004363751148,8.0470839612919,3.36065598693345,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,0.828987844425448,0.453004363751148,2,0,0,3,NA,NA,NA,NA,8.87607180571734,3.8136603506846,0,0,0,0,8.87607180571734,3.8136603506846,0,0,0,0,8.87607180571734,3.8136603506846,0,0,0,0,-7.45595532115747,1.72829271835191,0,0,0,0,0,0,0,0,NA +-3.72797766057873,0.57609757278397,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,5.58213400806405,3.30067850141731,-7.45595532115747,1.72829271835191,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,5.58213400806405,3.30067850141731,2,0,0,3,NA,NA,NA,NA,-1.87382131309342,5.02897121976922,0,0,0,0,-1.87382131309342,5.02897121976922,0,0,0,0,-1.87382131309342,5.02897121976922,0,0,0,0,0.0813713661838733,-3.22399483259538,0,0,0,0,0,0,0,0,NA +0.0406856830919367,-1.07466494419846,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0.571780709384058,1.636824225289,0.0813713661838733,-3.22399483259538,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,0.571780709384058,1.636824225289,2,0,0,3,NA,NA,NA,NA,0.653152075567931,-1.58717060730638,0,0,0,0,0.653152075567931,-1.58717060730638,0,0,0,0,0.653152075567931,-1.58717060730638,0,0,0,0,-5.0129688340234,1.04145111504991,0,0,0,0,0,0,0,0,NA +-2.5064844170117,0.347150371683303,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,-0.149575144407947,-0.504237827808964,-5.0129688340234,1.04145111504991,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,-0.149575144407947,-0.504237827808964,2,0,0,3,NA,NA,NA,NA,-5.16254397843134,0.537213287240945,0,0,0,0,-5.16254397843134,0.537213287240945,0,0,0,0,-5.16254397843134,0.537213287240945,0,0,0,0,4.78914450522193,0.705763528719743,0,0,0,0,0,0,0,0,NA +2.39457225261097,0.235254509573248,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,-2.42010800304339,-0.817623480789891,4.78914450522193,0.705763528719743,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,-2.42010800304339,-0.817623480789891,2,0,0,3,NA,NA,NA,NA,2.36903650217855,-0.111859952070148,0,0,0,0,2.36903650217855,-0.111859952070148,0,0,0,0,2.36903650217855,-0.111859952070148,0,0,0,0,6.26285339608913,5.47887306242224,0,0,0,0,0,0,0,0,NA +3.13142669804456,1.82629102080741,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,1.15096026546823,0.42906331960765,6.26285339608913,5.47887306242224,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,1.15096026546823,0.42906331960765,2,0,0,3,NA,NA,NA,NA,7.41381366155736,5.90793638202989,0,0,0,0,7.41381366155736,5.90793638202989,0,0,0,0,7.41381366155736,5.90793638202989,0,0,0,0,0.933367919336909,-1.91048511180284,0,0,0,0,0,0,0,0,NA +0.466683959668455,-0.636828370600947,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,5.47928774538764,3.84593728512343,0.933367919336909,-1.91048511180284,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,5.47928774538764,3.84593728512343,2,0,0,3,NA,NA,NA,NA,6.41265566472455,1.93545217332058,0,0,0,0,6.41265566472455,1.93545217332058,0,0,0,0,6.41265566472455,1.93545217332058,0,0,0,0,4.27416293440075,5.87251280053117,0,0,0,0,0,0,0,0,NA +2.13708146720037,1.95750426684372,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.78696348435845,2.05671200227314,4.27416293440075,5.87251280053117,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,3.78696348435845,2.05671200227314,2,0,0,3,NA,NA,NA,NA,8.0611264187592,7.92922480280431,0,0,0,0,8.0611264187592,7.92922480280431,0,0,0,0,8.0611264187592,7.92922480280431,0,0,0,0,0.701573064513568,-0.547448751859534,0,0,0,0,0,0,0,0,NA +0.350786532256784,-0.182482917286511,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,6.40933065022089,4.78391520487357,0.701573064513568,-0.547448751859534,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,6.40933065022089,4.78391520487357,2,0,0,3,NA,NA,NA,NA,7.11090371473446,4.23646645301403,0,0,0,0,7.11090371473446,4.23646645301403,0,0,0,0,7.11090371473446,4.23646645301403,0,0,0,0,-0.434185653281034,1.76972619059811,0,0,0,0,0,0,0,0,NA +-0.217092826640517,0.589908730199369,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,4.82639179327144,3.11676732415251,-0.434185653281034,1.76972619059811,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,4.82639179327144,3.11676732415251,2,0,0,3,NA,NA,NA,NA,4.39220613999041,4.88649351475061,0,0,0,0,4.39220613999041,4.88649351475061,0,0,0,0,4.39220613999041,4.88649351475061,0,0,0,0,0.019575760938082,0.391772048081691,0,0,0,0,0,0,0,0,NA +0.009787880469041,0.130590682693897,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.66205112442039,2.83303863389833,0.019575760938082,0.391772048081691,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,3.66205112442039,2.83303863389833,2,0,0,3,NA,NA,NA,NA,3.68162688535847,3.22481068198002,0,0,0,0,3.68162688535847,3.22481068198002,0,0,0,0,3.68162688535847,3.22481068198002,0,0,0,0,-1.83744916157586,3.60677121887832,0,0,0,0,0,0,0,0,NA +-0.918724580787931,1.20225707295944,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.80825664727324,2.0262496498637,-1.83744916157586,3.60677121887832,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,2.80825664727324,2.0262496498637,2,0,0,3,NA,NA,NA,NA,0.970807485697378,5.63302086874202,0,0,0,0,0.970807485697378,5.63302086874202,0,0,0,0,0.970807485697378,5.63302086874202,0,0,0,0,3.01877417793456,0.23754787829354,0,0,0,0,0,0,0,0,NA +1.50938708896728,0.0791826260978468,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.1753100034713,2.44736984463628,3.01877417793456,0.23754787829354,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,2.1753100034713,2.44736984463628,2,0,0,3,NA,NA,NA,NA,5.19408418140586,2.68491772292982,0,0,0,0,5.19408418140586,2.68491772292982,0,0,0,0,5.19408418140586,2.68491772292982,0,0,0,0,1.57861642966953,1.68892698731518,0,0,0,0,0,0,0,0,NA +0.789308214834765,0.562975662438395,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.40251740758188,2.1127839254531,1.57861642966953,1.68892698731518,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,3.40251740758188,2.1127839254531,2,0,0,3,NA,NA,NA,NA,4.98113383725141,3.80171091276829,0,0,0,0,4.98113383725141,3.80171091276829,0,0,0,0,4.98113383725141,3.80171091276829,0,0,0,0,3.83053610318196,2.88925551675078,0,0,0,0,0,0,0,0,NA +1.91526805159098,0.96308517225026,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,3.63108019245619,2.5169111325576,3.83053610318196,2.88925551675078,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,3.63108019245619,2.5169111325576,2,0,0,3,NA,NA,NA,NA,7.46161629563815,5.40616664930837,0,0,0,0,7.46161629563815,5.40616664930837,0,0,0,0,7.46161629563815,5.40616664930837,0,0,0,0,-2.32311342688014,-0.315142251463101,0,0,0,0,0,0,0,0,NA +-1.16155671344007,-0.105047417154367,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,5.35265814261159,3.65478991885098,-2.32311342688014,-0.315142251463101,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,5.35265814261159,3.65478991885098,2,0,0,3,NA,NA,NA,NA,3.02954471573145,3.33964766738788,0,0,0,0,3.02954471573145,3.33964766738788,0,0,0,0,3.02954471573145,3.33964766738788,0,0,0,0,6.36167888945586,5.87990190399452,0,0,0,0,0,0,0,0,NA +3.18083944472793,1.95996730133151,NA,NA,NA,NA,0.5,0,0,0.333333333333333,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,2.51666665808209,1.94176801010144,6.36167888945586,5.87990190399452,2,3,NA,NA,2,0,0,3,NA,NA,NA,NA,2.51666665808209,1.94176801010144,2,0,0,3,NA,NA,NA,NA,8.87834554753795,7.82166991409596,0,0,0,0,8.87834554753795,7.82166991409596,0,0,0,0,8.87834554753795,7.82166991409596,0,0,0,0,0,0,2,0,0,3,0,0,0,0,NA +0,0,NA,NA,NA,NA,0,0,0,0,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,6.78567374799776,4.90433707514597,2,0,0,3,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA diff --git a/statsmodels/tsa/statespace/tests/results/results_intercepts_R.csv b/statsmodels/tsa/statespace/tests/results/results_intercepts_R.csv new file mode 100644 index 0000000..4753704 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_intercepts_R.csv @@ -0,0 +1,204 @@ +"r1","r2","r3","detN","m1","m2","m3","detPmu","v1","v2","v3","F1","F2","F3","a1","a2","a3","detP","alphahat1","alphahat2","alphahat3","detV","muhat1","muhat2","muhat3","detVmu","etahat1","etahat2","etahat3","detVeta","epshat1","epshat2","epshat3","Veps1","Veps2","Veps3" +-0.000202075188672959,-3.0844141111619,-3.69635197351588,1.45890760503934e-07,1,2,3,999999999999998592,NA,-1.26193493831635,-2.5096617873359,1000001,1000001,1000001,4,3.73806632361732,3.49034072232337,3999999.99996655,-202.075188672959,-4.34634470294496,-6.20600755461822,19.3333660284117,-201.075188672959,-2.34634470294496,-3.20600755461822,19.3333660284117,-0.000202075188672959,-3.0844141111619,-3.69635197351588,0.3819654489623,0,3.0844097648172,3.69634576750833,1,0.618033606782863,0.618033606782863 +-0.000202075188672959,-4.26460680000086,-5.1300015298351,1.91566448186757e-07,5,5.73806632361732,6.49034072232337,3999999.99996655,NA,-4.98863244904725,-5.95905069433242,1000002,2.99999899999239,2.99999899999239,8,5.41231191188272,5.5176409215571,2777782.96295929,-198.075390748148,-2.43075881426889,-3.90235952832827,11.0599216730989,-197.075390748148,-0.430758814268887,-0.902359528328271,11.0599216730989,-0.000202075188672959,-4.26460680000086,-5.1300015298351,0.316187583657143,0,1.18019268883896,1.43364955631922,1,0.472135899271045,0.472135899271044 +-0.000202075188672959,-4.71723045284237,-5.65667959228567,1.98749623423023e-07,9,7.41231191188272,8.5176409215571,2777782.96295929,NA,-6.65505387331097,-8.02332391726991,1000003,2.66666655555467,2.66666655555467,12,6.25290334504942,6.50306359862884,2640632.87109319,-194.075592823337,-1.69536561426975,-3.03236105816338,9.88188668205834,-193.075592823337,0.304634385730249,-0.0323610581633753,9.88188668205834,-0.000202075188672959,-4.71723045284237,-5.65667959228567,0.307109930418793,0,0.452623652841506,0.526678062450563,1,0.450849710616695,0.450849710616688 +-0.000202075188672959,-4.88790587960929,-5.85735045971173,1.9980868600128e-07,13,8.25290334504941,9.50306359862884,2640632.87109319,NA,-7.49482398539461,-8.99143338165182,1000004,2.62499998437488,2.62499998437488,16,6.6132504187051,6.9369381922809,2621325.67066183,-190.075794898525,-1.41259606711212,-2.68904065044904,9.54576019072231,-189.075794898525,0.587403932887881,0.310959349550958,9.54576019072231,-0.000202075188672959,-4.88790587960929,-5.85735045971173,0.305796570643906,0,0.170675426766926,0.200670867426064,1,0.447744097546026,0.447744097545979 +-0.000202075188672959,-4.95374939345669,-5.97068861231044,1.99963436392211e-07,17,8.6132504187051,9.9369381922809,2621325.67066183,NA,-7.84790885157912,-9.36999114984297,1000005,2.61904761678003,2.61904761678003,20,6.7618158585051,7.14458003002097,2618525.48818632,-186.075996973714,-1.30050194672141,-2.54639111016077,9.3263995714509,-185.075996973714,0.699498053278586,0.453608889839226,9.3263995714509,-0.000202075188672959,-4.95374939345669,-5.97068861231044,0.305605189290669,0,0.0658435138473952,0.113338152598709,1,0.447290994705697,0.447290994705373 +-0.000202075188672959,-4.98302524405567,-5.99734079182989,1.99986019175244e-07,21,8.76181585850511,10.144580030021,2618525.48818632,NA,-7.98679134808422,-9.63500757297274,1000006,2.61818181785124,2.61818181785124,24,6.82553509514377,7.18961007218998,2618119.48933082,-182.076199048903,-1.2542513401781,-2.51707972247121,9.12365135493298,-181.076199048903,0.745748659821897,0.482920277528786,9.12365135493298,-0.000202075188672959,-4.98302524405567,-5.99734079182989,0.305577272137918,0,0.029275850598984,0.0266521795194511,1,0.447224887894063,0.447224887891842 +-0.000202075188672959,-4.99225719150525,-6.01829668727106,1.99989314050576e-07,25,8.82553509514377,10.18961007219,2618119.48933082,NA,-8.05357973192797,-9.68307469104992,1000007,2.61805555550733,2.61805555550733,28,6.84812374894257,7.20511032951373,2618062.49742673,-178.076401124091,-1.23727658423378,-2.51442051430111,8.92327441084561,-177.076401124091,0.762723415766222,0.485579485698895,8.92327441084561,-0.000202075188672959,-4.99225719150525,-6.01829668727106,0.305573199205235,0,0.00923194744957889,0.0209558954411665,1,0.447215243052953,0.44721524303773 +-0.000202075188672959,-4.99478378867025,-5.99497730258077,1.99989794666565e-07,29,8.84812374894257,10.2051103295137,2618062.49742673,NA,-8.0751309275166,-9.76114691577618,1000008,2.61803713527148,2.61803713527148,32,6.85741466507535,7.17238528532571,2618056.41861809,-174.07660319928,-1.22953377573903,-2.53271720157216,8.72323568974603,-173.07660319928,0.770466224260968,0.467282798427838,8.72323568974603,-0.000202075188672959,-4.99478378867025,-5.99497730258077,0.305572605100859,0,0.00252659716500174,-0.0233193846902855,1,0.447213835976819,0.447213835872479 +-0.000202075188672959,-4.99187803737839,-5.97798537303525,1.99989864087647e-07,33,8.85741466507535,10.1723852853257,2618056.41861809,NA,-8.0846379807765,-9.71707171902417,1000009,2.61803444782065,2.61803444782065,36,6.86083306472824,7.16690404102314,2618057.76780153,-170.076805274469,-1.22431756440929,-2.52769450415294,8.52324490716159,-169.076805274469,0.775682435590713,0.472305495847064,8.52324490716159,-0.000202075188672959,-4.99187803737839,-5.97798537303525,0.305572519287406,0,-0.00290575129186151,-0.0169919295455274,1,0.447213631284988,0.447213630569836 +-0.000202075188672959,-4.99234881862762,-5.97288912777659,1.99989869418906e-07,37,8.86083306472824,10.1669040410231,2618057.76780153,NA,-8.07655788526669,-9.67768016346998,1000010,2.6180340557274,2.6180340557274,40,6.86924570060424,7.18576867317886,2618060.20071259,-166.077007349657,-1.21619560178768,-2.50567987718818,8.3232606848154,-165.077007349657,0.783804398212319,0.494320122811819,8.3232606848154,-0.000202075188672959,-4.99234881862762,-5.97288912777659,0.305572512697281,0,0.000470781249224984,-0.00509624525865927,1,0.447213605518309,0.447213600616584 +-0.000202075188672959,-4.98897243194174,-5.98166800767999,1.99989837316624e-07,41,8.86924570060424,10.1857686731789,2618060.20071259,NA,-8.08116650770541,-9.65555879824023,1000011,2.61803399852178,2.61803399852178,44,6.87481011857369,7.21830514172739,2618062.79173749,-162.077209424846,-1.2085444204153,-2.47856900496477,8.12327748689645,-161.077209424846,0.791455579584701,0.521430995035233,8.12327748689645,-0.000202075188672959,-4.98897243194174,-5.98166800767999,0.305572552379852,0,-0.0033763866858746,0.00877887990340117,1,0.447213629843381,0.447213596246464 +-0.000202075188672959,-4.99034648747725,-5.98106375820947,1.99989607269397e-07,45,8.87481011857369,10.2183051417274,2618062.79173749,NA,-8.07095291539523,-9.67914640384266,1000012,2.61803399017559,2.61803399017559,48,6.88668689358057,7.23626368005298,2618065.40583089,-158.077411500035,-1.19751685235704,-2.46023701264475,7.92329697959605,-157.077411500035,0.802483147642958,0.539762987355247,7.92329697959605,-0.000202075188672959,-4.99034648747725,-5.98106375820947,0.305572836747972,0,0.00137405553550599,-0.000604249470515908,1,0.447213825885571,0.447213595608872 +-0.000202075188672959,-4.99062606072389,-5.99366807487245,1.99988029041088e-07,49,8.88668689358057,10.236263680053,2618065.40583089,NA,-8.07427066016822,-9.66496013424423,1000013,2.6180339889579,2.6180339889579,52,6.89651319098553,7.26298981688399,2618068.02328996,-154.077613575223,-1.18786333983429,-2.44130077085422,7.72333580055348,-153.077613575223,0.81213666016571,0.558699229145775,7.72333580055348,-0.000202075188672959,-4.99062606072389,-5.99366807487245,0.30557478764224,0,0.000279573246642988,0.0126043166629771,1,0.447215173855825,0.447213595515848 +-0.000202075188672959,-4.99151722996729,-5.99441664573526,1.99977211490153e-07,53,8.89651319098553,10.262989816884,2618068.02328996,NA,-8.07411142230031,-9.69721009174785,1000014,2.61803398878024,2.61803398878024,56,6.90643790301443,7.2697843840924,2618070.64124007,-150.077815650412,-1.17848940055818,-2.43496884572667,7.52350577815102,-149.077815650412,0.821510599441819,0.565031154273329,7.52350577815102,-0.000202075188672959,-4.99151722996729,-5.99441664573526,0.305588159534,0,0.000891169243400537,0.000748570862814968,1,0.447224413605411,0.447213595502276 +-0.000202075188672959,-4.99058265269323,-5.99970487899295,1.99903066861918e-07,57,8.90643790301443,10.2697843840924,2618070.64124007,NA,-8.07737911081397,-9.69388164229664,1000015,2.61803398875432,2.61803398875432,60,6.91434307250778,7.27863604622816,2618073.25926181,-146.078017725601,-1.17000663052547,-2.42938549146193,7.32455285080981,-145.078017725601,0.829993369474526,0.570614508538067,7.32455285080981,-0.000202075188672959,-4.99058265269323,-5.99970487899295,0.305679811882048,0,-0.000934577274063151,0.0052882332576902,1,0.447287743882263,0.447213595500296 +-0.000202075188672959,-4.99198858782763,-5.98536461888946,1.99394872015207e-07,61,8.91434307250778,10.2786360462282,2618073.25926181,NA,-8.07352642059208,-9.72206667678654,1000016,2.61803398875054,2.61803398875054,64,6.92462933551083,7.27006839908042,2618075.87729402,-142.078219800789,-1.1605892832187,-2.42909037045489,7.13144817230428,-141.078219800789,0.839410716781297,0.570909629545113,7.13144817230428,-0.000202075188672959,-4.99198858782763,-5.98536461888946,0.306308006426631,0,0.00140593513440198,-0.0143402601034913,1,0.447721816070641,0.447213595500007 +-0.000202075188672959,-4.99104590352017,-5.98727417673939,1.95911652716462e-07,65,8.92462933551083,10.2700683990804,2618075.87729402,NA,-8.07814989086463,-9.68261383057484,1000017,2.61803398874999,2.61803398874999,68,6.93205813674012,7.28588395184522,2618078.49532775,-138.078421875978,-1.15257787104634,-2.41445498934435,6.97729399207268,-137.078421875978,0.847422128953665,0.585545010655651,6.97729399207268,-0.000202075188672959,-4.99104590352017,-5.98727417673939,0.310613715890657,0,-0.000942684307466175,0.0019095578499331,1,0.450696991112437,0.447213595499965 +-0.000202075188672959,-4.98923265128709,-5.98501880790951,1.72037312471961e-07,69,8.93205813674012,10.2858839518452,2618078.49532775,NA,-8.0774951635397,-9.68986848675885,1000018,2.61803398874991,2.61803398874991,72,6.93989158170968,7.29721588051172,2618081.1133617,-134.078623951167,-1.1436237745665,-2.40172916608374,7.08232425688181,-133.078623951167,0.856376225433499,0.598270833916256,7.08232425688181,-0.000202075188672959,-4.98923265128709,-5.98501880790951,0.340125487594257,0,-0.00181325223307736,-0.00225536882988358,1,0.471089144216628,0.447213595499959 +-0.000202075188672959,-4.98828022778007,-5.98721816551913,8.40015005919993e-09,73,8.93989158170968,10.2972158805117,2618081.1133617,NA,-8.07370043107029,-9.68176449689537,1000019,2.6180339887499,2.6180339887499,76,6.95007030032356,7.31355635035836,2618083.73139568,-130.078826026355,-1.13285642585359,-2.38674797399326,8.91044962716286,-129.078826026355,0.867143574146412,0.613252026006744,8.91044962716286,-0.000202075188672959,-4.98828022778007,-5.98721816551913,0.542402180055435,0,-0.000952423507020153,0.00219935760961446,1,0.610859040904169,0.447213595499958 +-0.000202075188672959,-4.98828022778007,-5.98421043283753,8.40015005919993e-09,77,8.95007030032356,10.3135563503584,2618083.73139568,NA,NA,-9.69053022255233,1000020,2.61803398874989,2.61803398874989,80,11.9500703003236,7.32447930381293,4236152.69885934,-126.079028101544,-1.12113665363366,-2.37396613951238,22.1829478034946,-125.079028101544,0.878863346366344,0.626033860487619,22.1829478034946,-0.000202075188672959,-4.98828022778007,-5.98421043283753,0.542402180055435,0,0,-0.00300773268159199,1,1,0.447213595499958 +-0.000202075188672959,-4.98828022778007,-5.99103087682446,8.40015005919993e-09,81,13.9500703003236,10.3244793038129,4236152.69885934,NA,NA,-9.67583543217592,1000021,3.61803398874989,2.61803398874989,84,16.9500703003236,7.34448413717769,5854224.90239096,-122.079230176733,-1.10941688141372,-2.35817657234991,34.0842376340759,-121.079230176733,0.890583118586276,0.641823427650086,34.0842376340759,-0.000202075188672959,-4.98828022778007,-5.99103087682446,0.542402180055436,0,0,0.00682044398692454,1,1,0.447213595499958 +-0.000202075188672959,-4.98828022778007,-5.98589981302146,8.4001500591999e-09,85,18.9500703003236,10.3444841371777,5854224.90239096,NA,NA,-9.69882265015506,1000022,4.61803398874989,2.61803398874989,88,21.9500703003236,7.35028208852453,7472300.34199059,-118.079432251921,-1.0976971091938,-2.34920744917437,44.6647169640579,-117.079432251921,0.902302890806205,0.650792550825627,44.6647169640579,-0.000202075188672959,-4.98828022778007,-5.98589981302146,0.542402180055438,0,0,-0.00513106380300343,1,1,0.447213595499959 +-0.000202075188672959,-4.98828022778007,-5.9820094701475,8.4001500591996e-09,89,23.9500703003236,10.3502820885245,7472300.34199059,NA,NA,-9.68927969359431,1000023,5.61803398874989,2.61803398874989,92,26.9500703003236,7.36197791137908,9090379.01765818,-114.07963432711,-1.08597733697386,-2.33510726219583,53.9747838399865,-113.07963432711,0.914022663026138,0.664892737804172,53.9747838399865,-0.000202075188672959,-4.98828022778007,-5.9820094701475,0.542402180055453,0,0,-0.00389034287395179,1,1,0.447213595499965 +-0.000202075188672959,-4.98828022778007,-5.96552252627092,8.40015005919763e-09,93,28.9500703003236,10.3619779113791,9090379.01765818,NA,NA,-9.695581587599,1000024,6.61803398874989,2.61803398874989,96,31.9500703003236,7.36977894954523,10708460.9293938,-110.079836402299,-1.07425756475393,-2.31711673234333,62.0648365106031,-109.079836402299,0.925742435246068,0.682883267656666,62.0648365106031,-0.000202075188672959,-4.98828022778007,-5.96552252627092,0.542402180055557,0,0,-0.0164869438765861,1,1,0.447213595500005 +-0.000202075188672959,-4.98828022778007,-5.98161476215839,8.40015005918399e-09,97,33.9500703003236,10.3697789495452,10708460.9293938,NA,NA,-9.63632597227201,1000025,7.61803398874989,2.61803398874989,100,36.9500703003236,7.41420197200775,12326546.0771973,-106.080038477487,-1.062537792534,-2.28263925861425,68.9852734257349,-105.080038477487,0.937462207465998,0.717360741385749,68.9852734257349,-0.000202075188672959,-4.98828022778007,-5.98161476215839,0.542402180056268,0,0,0.0160922358874741,1,1,0.447213595500282 +-0.000202075188672959,-4.98828022778007,-5.97927732352806,8.40015005909073e-09,101,38.9500703003236,10.4142019720078,12326546.0771973,NA,NA,-9.68079343141073,1000026,8.61803398874989,2.61803398874989,104,41.9500703003236,7.4311425933292,13944634.4610688,-102.080240552676,-1.05081802031407,-2.26425402077264,74.7864932371879,-101.080240552676,0.949181979685932,0.735745979227356,74.7864932371879,-0.000202075188672959,-4.98828022778007,-5.97927732352806,0.542402180061141,0,0,-0.00233743863033464,1,1,0.447213595502179 +-0.000202075188672959,-4.98828022778007,-5.98240921084154,8.40015005845134e-09,105,43.9500703003236,10.4311425933292,13944634.4610688,NA,NA,-9.67154205031641,1000027,9.61803398874989,2.61803398874989,108,46.9500703003236,7.45380088260981,15562726.0810083,-98.0804426278648,-1.03909824809413,-2.2435313443007,79.518894799867,-97.0804426278648,0.960901751905865,0.756468655699297,79.518894799867,-0.000202075188672959,-4.98828022778007,-5.98240921084154,0.542402180094541,0,0,0.00313188731348372,1,1,0.447213595515181 +-0.000202075188672959,-4.98828022778007,-5.97145226090195,8.40015005406902e-09,109,48.9500703003236,10.4538008826098,15562726.0810083,NA,NA,-9.69069838769165,1000028,10.6180339887499,2.61803398874989,112,51.9500703003236,7.46461990429256,17180820.9370158,-94.0806447030535,-1.0273784758742,-2.22594055514224,83.232877180908,-93.0806447030535,0.972621524125799,0.774059444857756,83.232877180908,-0.000202075188672959,-4.98828022778007,-5.97145226090195,0.542402180323468,0,0,-0.010956949939597,1,1,0.447213595604297 +-0.000202075188672959,-4.98828022778007,-5.99646791660801,8.4001500240321e-09,113,53.9500703003236,10.4646199042926,17180820.9370158,NA,NA,-9.63699706463069,1000029,11.6180339887499,2.61803398874989,116,56.9500703003236,7.50862816886783,18798919.0290913,-90.0808467782422,-1.01565870365427,-2.19739281604419,85.9788397236703,-89.0808467782422,0.984341296345725,0.802607183955812,85.9788397236703,-0.000202075188672959,-4.98828022778007,-5.99646791660801,0.542402181892556,0,0,0.0250156557060623,1,1,0.44721359621511 +-0.000202075188672959,-4.98828022778007,-6.00284985542481,8.40014981815599e-09,117,58.9500703003236,10.5086281688678,18798919.0290913,NA,NA,-9.69610696270323,1000030,12.6180339887499,2.61803398874989,120,61.9500703003236,7.51610450736273,20417020.3572346,-86.0810488534308,-1.00393893143434,-2.1938607326522,87.8071824916291,-85.0810488534308,0.996061068565659,0.806139267347803,87.8071824916291,-0.000202075188672959,-4.98828022778007,-6.00284985542481,0.542402192647247,0,0,0.00638193881680176,1,1,0.447213600401682 +-0.000202075188672959,-4.98828022778007,-6.00403006575903,8.40014840706026e-09,121,63.9500703003236,10.5161045073627,20417020.3572346,NA,NA,-9.71163488510551,1000031,13.6180339887499,2.61803398874989,124,66.9500703003236,7.51398406203834,22035124.9214461,-82.0812509286195,-0.992219159214407,-2.19671058807701,88.7683093188851,-81.0812509286195,1.00778084078559,0.803289411922994,88.7683093188851,-0.000202075188672959,-4.98828022778007,-6.00403006575903,0.542402266360998,0,0,0.00118021033422509,1,1,0.447213629096876 +-0.000202075188672959,-4.98828022778007,-6.01310291447609,8.40013873526612e-09,125,68.9500703003236,10.5139840620383,22035124.9214461,NA,NA,-9.70565186715733,1000032,14.6180339887499,2.61803398874989,128,71.9500703003236,7.51556132516123,23653232.7217255,-78.0814530038082,-0.980499386994481,-2.20074065383604,88.9126485926108,-77.0814530038082,1.01950061300552,0.79925934616396,88.9126485926108,-0.000202075188672959,-4.98828022778007,-6.01310291447609,0.542402771602562,0,0,0.00907284871705256,1,1,0.447213825776657 +-0.000202075188672959,-4.98828022778007,-6.0131457947143,8.40007244380289e-09,129,73.9500703003236,10.5155613251612,23653232.7217255,NA,NA,-9.72936201323514,1000033,15.6180339887499,2.61803398874989,132,76.9500703003236,7.50248491212981,25271343.7580728,-74.0816550789969,-0.968779614774547,-2.21384356831212,88.2907936731136,-73.0816550789969,1.03122038522545,0.786156431687876,88.2907936731136,-0.000202075188672959,-4.98828022778007,-6.0131457947143,0.542406234579759,0,0,4.28802382190406e-05,1,1,0.447215173839934 +-0.000202075188672959,-4.98828022778007,-5.99281212478051,8.39961807535446e-09,133,78.9500703003236,10.5024849121298,25271343.7580728,NA,NA,-9.74980794509003,1000034,16.6180339887499,2.61803398874989,136,81.9500703003236,7.4767722182804,26889458.0304881,-70.0818571541855,-0.957059842554614,-2.22698936302643,86.9544440782659,-69.0818571541855,1.04294015744539,0.773010636973572,86.9544440782659,-0.000202075188672959,-4.98828022778007,-5.99281212478051,0.542429970178574,0,0,-0.0203336699337907,1,1,0.447224413603093 +-0.000202075188672959,-4.98828022778007,-5.98689364067358,8.39650378767862e-09,137,83.9500703003236,10.4767722182804,26889458.0304881,NA,NA,-9.70249219019428,1000035,17.6180339887499,2.61803398874989,140,86.9500703003236,7.48030226915993,28507575.5389715,-66.0820592293742,-0.945340070334666,-2.21980148780694,84.9626637047663,-65.0820592293742,1.05465992966533,0.780198512193059,84.9626637047663,-0.000202075188672959,-4.98828022778007,-5.98689364067358,0.54259265639308,0,0,-0.00591848410693394,1,1,0.447287743881925 +-0.000202075188672959,-4.98828022778007,-5.9846197150658,8.37515814239612e-09,141,88.9500703003236,10.4803022691599,28507575.5389715,NA,NA,-9.68927132324824,1000036,18.6180339887499,2.61803398874989,144,91.9500703003236,7.49200326517285,30125696.2835228,-62.0822613045629,-0.933620298114747,-2.20669512848052,82.4231587723746,-61.0822613045629,1.06637970188525,0.793304871519477,82.4231587723746,-0.000202075188672959,-4.98828022778007,-5.9846197150658,0.543707724295812,0,0,-0.00227392560778298,1,1,0.447721816070592 +-0.000202075188672959,-4.98828022778007,-5.98418129834658,8.2288529130945e-09,145,93.9500703003236,10.4920032651729,30125696.2835228,NA,NA,-9.68375652543838,1000037,19.6180339887499,2.61803398874989,148,96.9500703003236,7.50711259367335,31743820.2641421,-58.0824633797515,-0.921900525894813,-2.19131484354632,79.7622737317176,-57.0824633797515,1.07809947410519,0.808685156453682,79.7622737317176,-0.000202075188672959,-4.98828022778007,-5.98418129834658,0.551350513400429,0,0,-0.000438416719214132,1,1,0.45069699111243 +-0.000202075188672959,-4.98828022778007,-6.00060051890948,7.22606195326572e-09,149,98.9500703003236,10.5071125936733,31743820.2641421,NA,NA,-9.66618951500335,1000038,20.6180339887499,2.61803398874989,152,101.950070300324,7.53307893170341,33361947.4808294,-54.0826654549402,-0.910180753674879,-2.1754961418929,79.4755276399229,-53.0826654549402,1.08981924632512,0.8245038581071,79.4755276399229,-0.000202075188672959,-4.98828022778007,-6.00060051890948,0.603734969230016,0,0,0.0164192205628945,1,1,0.471089144216627 +-0.000202075188672959,-4.98828022778007,-5.99032075726688,3.5283046376582e-10,153,103.950070300324,10.5330789317034,33361947.4808294,NA,NA,-9.71945535414839,1000039,21.6180339887499,2.61803398874989,156,106.950070300324,7.52612517070256,34980077.9335846,-50.0828675301289,-0.898460981454946,-2.17609666080238,97.3702489498367,-49.0828675301289,1.10153901854505,0.823903339197622,97.3702489498367,-0.000202075188672959,-4.98828022778007,-5.99032075726688,0.962783370932509,0,0,-0.0102797616426012,1,1,0.610859040904169 +-0.000202075188672959,-4.98828022778007,-5.99032075726688,3.5283046376582e-10,157,108.950070300324,10.5261251707026,34980077.9335846,NA,NA,NA,1000040,22.6180339887499,2.61803398874989,160,111.950070300324,13.5261251707026,59217150.3325171,-46.0830696053176,-0.886741209235012,-2.16641741806925,234.021528812389,-45.0830696053176,1.11325879076499,0.833582581930749,234.021528812389,-0.000202075188672959,-4.98828022778007,-5.99032075726688,0.962783370932509,0,0,0,1,1,1 +-0.000202075188672959,-4.98828022778007,-5.99032075726688,3.5283046376582e-10,161,113.950070300324,16.5261251707026,59217150.3325171,NA,NA,NA,1000041,23.6180339887499,3.61803398874989,164,116.950070300324,19.5261251707026,85454353.2035861,-42.0832716805062,-0.875021437015079,-2.15673817533613,343.827227244831,-41.0832716805062,1.12497856298492,0.843261824663873,343.827227244831,-0.000202075188672959,-4.98828022778007,-5.99032075726688,0.962783370932509,0,0,0,1,1,1 +-0.000202075188672959,-4.98828022778007,-5.99032075726688,3.5283046376582e-10,165,118.950070300324,22.5261251707026,85454353.2035861,NA,NA,NA,1000042,24.6180339887499,4.61803398874989,168,121.950070300324,25.5261251707026,113691692.54679,-38.0834737556949,-0.863301664795145,-2.147058932603,426.169489039222,-37.0834737556949,1.13669833520485,0.852941067396998,426.169489039222,-0.000202075188672959,-4.98828022778007,-5.99032075726688,0.962783370932509,0,0,0,1,1,1 +-0.000202075188672959,-4.98828022778007,-5.99032075726688,3.5283046376582e-10,169,123.950070300324,28.5261251707026,113691692.54679,NA,NA,NA,1000043,25.6180339887499,5.61803398874989,172,126.950070300324,31.5261251707026,143929174.362131,-34.0836758308836,-0.851581892575211,-2.13737968986988,480.994597127193,-33.0836758308836,1.14841810742479,0.862620310130122,480.994597127193,-0.000202075188672959,-4.98828022778007,-5.99032075726688,0.962783370932509,0,0,0,1,1,1 +-0.000202075188672959,-4.98828022778007,-5.99032075726688,3.5283046376582e-10,173,128.950070300324,34.5261251707026,143929174.362131,NA,NA,NA,1000044,26.6180339887499,6.61803398874989,176,131.950070300324,37.5261251707026,176166804.649607,-30.0838779060723,-0.839862120355292,-2.12770044713675,508.770633947839,-29.0838779060723,1.16013787964471,0.872299552863247,508.770633947839,-0.000202075188672959,-4.98828022778007,-5.99032075726688,0.962783370932509,0,0,0,1,1,1 +-0.000202075188672959,-4.98828022778007,-5.99032075726688,3.5283046376582e-10,177,133.950070300324,40.5261251707026,176166804.649607,NA,NA,NA,1000045,27.6180339887499,7.61803398874989,180,136.950070300324,43.5261251707026,210404589.409219,-26.0840799812609,-0.828142348135373,-2.11802120440363,510.445142504558,-25.0840799812609,1.17185765186463,0.881978795596375,510.445142504558,-0.000202075188672959,-4.98828022778007,-5.99032075726688,0.962783370932509,0,0,0,1,1,1 +-0.000202075188672959,-4.98828022778007,-5.99032075726688,3.5283046376582e-10,181,138.950070300324,46.5261251707026,210404589.409219,NA,NA,NA,1000046,28.6180339887499,8.61803398874989,184,141.950070300324,49.5261251707026,246642534.640968,-22.0842820564496,-0.816422575915425,-2.1083419616705,487.402787222299,-21.0842820564496,1.18357742408458,0.891658038329496,487.402787222299,-0.000202075188672959,-4.98828022778007,-5.99032075726688,0.962783370932509,0,0,0,1,1,1 +-0.000202075188672959,-4.98828022778007,-5.99032075726688,3.5283046376582e-10,185,143.950070300324,52.5261251707026,246642534.640968,NA,NA,NA,1000047,29.6180339887499,9.61803398874989,188,146.950070300324,55.5261251707026,284880646.344853,-18.0844841316383,-0.804702803695506,-2.09866271893738,441.423014524865,-17.0844841316383,1.19529719630449,0.901337281062624,441.423014524865,-0.000202075188672959,-4.98828022778007,-5.99032075726688,0.962783370932509,0,0,0,1,1,1 +-0.000202075188672959,-4.98828022778007,-5.99032075726688,3.5283046376582e-10,189,148.950070300324,58.5261251707026,284880646.344853,NA,NA,NA,1000048,30.6180339887499,10.6180339887499,192,151.950070300324,61.5261251707026,325118930.520874,-14.0846862068269,-0.792983031475586,-2.08898347620426,374.637713163081,-13.0846862068269,1.20701696852441,0.911016523795745,374.637713163081,-0.000202075188672959,-4.98828022778007,-5.99032075726688,0.962783370932509,0,0,0,1,1,1 +-0.000202075188672959,-4.98828022778007,-5.99032075726688,3.5283046376582e-10,193,153.950070300324,64.5261251707026,325118930.520874,NA,NA,NA,1000049,31.6180339887499,11.6180339887499,196,156.950070300324,67.5261251707026,367357393.16903,-10.0848882820156,-0.781263259255638,-2.07930423347113,289.488874288941,-9.08488828201564,1.21873674074436,0.920695766528873,289.488874288941,-0.000202075188672959,-4.98828022778007,-5.99032075726688,0.962783370932509,0,0,0,1,1,1 +-0.000202075188672959,-4.98828022778007,-5.99032075726688,3.5283046376582e-10,197,158.950070300324,70.5261251707026,367357393.16903,NA,NA,NA,1000050,32.6180339887499,12.6180339887499,200,161.950070300324,73.5261251707026,411596040.289321,-6.08509035720431,-0.769543487035719,-2.06962499073801,188.6862512757,-5.08509035720431,1.23045651296428,0.930375009261994,188.6862512757,-0.000202075188672959,-4.98828022778007,-5.99032075726688,0.962783370932509,0,0,0,1,1,1 +-2.46465582122345,-4.98828022778007,-5.99032075726688,0.000134776118126662,201,163.950070300324,76.5261251707026,411596040.289321,-199.620838686633,NA,NA,1000051,33.6180339887499,13.6180339887499,4.37936092402518,166.950070300324,79.5261251707026,915.622601172475,-2.08529243239298,-0.757823714815771,-2.05994574800489,75.1650192839404,-1.08529243239298,1.24217628518423,0.940054251995107,75.1650192839404,-2.46465582122345,-4.98828022778007,-5.99032075726688,0.595033301573348,2.46445374603477,0,0,0.618033606794666,1,1 +-3.3975977891015,-4.98828022778007,-5.99032075726688,0.000154439637277554,5.37936092402518,168.950070300324,82.5261251707026,915.622601172475,-3.99636720989425,NA,NA,2.99999899999239,34.6180339887499,14.6180339887499,5.71511656147334,171.950070300324,85.5261251707026,843.412606224117,-0.549948253747128,-0.746103942595852,-2.05026650527176,59.2775451997449,0.450051746252872,1.25389605740415,0.949733494728235,59.2775451997449,-3.3975977891015,-4.98828022778007,-5.99032075726688,0.541379289550537,0.932941967878057,0,0,0.472135899271044,1,1 +-3.7528672776584,-4.98828022778007,-5.99032075726688,0.00015730850605828,6.71511656147334,173.950070300324,88.5261251707026,843.412606224117,-5.30739311576508,NA,NA,2.66666655555467,35.6180339887499,15.6180339887499,6.39799594704885,176.950070300324,91.5261251707026,903.960947662208,0.0524539571513669,-0.734384170375904,-2.04058726253864,57.8808899414837,1.05245395715137,1.2656158296241,0.959412737461363,57.8808899414837,-3.7528672776584,-4.98828022778007,-5.99032075726688,0.533551274693594,0.3552694885569,0,0,0.450849710616688,1,1 +-3.89438925926468,-4.98828022778007,-5.99032075726688,0.000157727068372476,7.39799594704885,178.950070300324,94.5261251707026,903.960947662208,-5.95688728594962,NA,NA,2.62499998437488,36.6180339887499,16.6180339887499,6.7103990692545,181.950070300324,97.5261251707026,985.222424167378,0.299586679492962,-0.722664398155985,-2.03090801980551,58.2462236090637,1.29958667949296,1.27733560184402,0.969091980194491,58.2462236090637,-3.89438925926468,-4.98828022778007,-5.99032075726688,0.532409182717797,0.141521981606271,0,0,0.447744097545979,1,1 +-3.94411157543274,-4.98828022778007,-5.99032075726688,0.000157788135791119,7.7103990692545,183.950070300324,100.526125170703,985.222424167378,-6.25547933285815,NA,NA,2.61904761678003,37.6180339887499,17.6180339887499,6.8433754837374,186.950070300324,103.526125170703,1072.45938750696,0.405197420228286,-0.710944625936037,-2.02122877707238,58.4423331231985,1.40519742022829,1.28905537406396,0.97877122292762,58.4423331231985,-3.94411157543274,-4.98828022778007,-5.99032075726688,0.532242553744166,0.0497223161680597,0,0,0.447290994705373,1,1 +-3.96190940275975,-4.98828022778007,-5.99032075726688,0.000157797045407426,7.8433754837374,188.950070300324,106.526125170703,1072.45938750696,-6.36449181161484,NA,NA,2.61818181785124,38.6180339887499,18.6180339887499,6.90976596158794,191.950070300324,109.526125170703,1163.36878861692,0.46108584479555,-0.699224853716117,-2.01154953433925,58.178680559852,1.46108584479555,1.30077514628388,0.988450465660748,58.178680559852,-3.96190940275975,-4.98828022778007,-5.99032075726688,0.532218242904548,0.0177978273270129,0,0,0.447224887891842,1,1 +-3.97944607696242,-4.98828022778007,-5.99032075726688,0.000157798345302926,7.90976596158794,193.950070300324,112.526125170703,1163.36878861692,-6.39305284534946,NA,NA,2.61805555550733,39.6180339887499,19.6180339887499,6.95862189540898,196.950070300324,115.526125170703,1257.5836652169,0.499176442035801,-0.687505081496198,-2.00187029160612,57.4142905116076,1.4991764420358,1.3124949185038,0.998129708393876,57.4142905116076,-3.97944607696242,-4.98828022778007,-5.99032075726688,0.532214696000849,0.0175366742026761,0,0,0.44721524303773,1,1 +-3.99397339148354,-4.98828022778007,-5.99032075726688,0.000157798534955124,7.95862189540898,198.950070300324,118.526125170703,1257.5836652169,-6.42436421581449,NA,NA,2.61803713527148,40.6180339887499,20.6180339887499,6.98814350468929,201.950070300324,121.526125170703,1355.0456094439,0.519730365073377,-0.67578530927625,-1.99219104887301,56.1485335277661,1.51973036507338,1.32421469072375,1.00780895112699,56.1485335277661,-3.99397339148354,-4.98828022778007,-5.99032075726688,0.532214178514573,0.0145273145211121,0,0,0.447213835872479,1,1 +-3.99428767140952,-4.98828022778007,-5.99032075726688,0.000157798562625007,7.98814350468929,203.950070300324,124.526125170703,1355.0456094439,-6.46207225117347,NA,NA,2.61803444782065,41.6180339887499,21.6180339887499,6.99436278289304,206.950070300324,127.526125170703,1455.74535856208,0.525756973589841,-0.664065537056331,-1.98251180613988,54.3899567844765,1.52575697358984,1.33593446294367,1.01748819386012,54.3899567844765,-3.99428767140952,-4.98828022778007,-5.99032075726688,0.532214103014343,0.000314279925988082,0,0,0.447213630569836,1,1 +-4.00344596484121,-4.98828022778007,-5.99032075726688,0.000157798566661988,7.99436278289304,208.950070300324,130.526125170703,1455.74535856208,-6.45373518728104,NA,NA,2.6180340557274,42.6180339887499,22.6180339887499,7.00573501969702,211.950070300324,133.526125170703,1559.68144901313,0.531469302180317,-0.652345764836383,-1.97283256340677,52.1516821863348,1.53146930218032,1.34765423516362,1.02716743659323,52.1516821863348,-4.00344596484121,-4.98828022778007,-5.99032075726688,0.532214091999008,0.00915829343168498,0,0,0.447213600616584,1,1 +-4.00254055162679,-4.98828022778007,-5.99032075726688,0.000157798567250976,8.00573501969702,213.950070300324,136.526125170703,1559.68144901313,-6.47861709557233,NA,NA,2.61803399852178,43.6180339887499,23.6180339887499,7.00172944530064,216.950070300324,139.526125170703,1666.85365033111,0.528023337339106,-0.640625992616464,-1.96315332067363,49.4507328874756,1.52802333733911,1.35937400738354,1.03684667932637,49.4507328874756,-4.00254055162679,-4.98828022778007,-5.99032075726688,0.532214090391892,-0.000905413214414901,0,0,0.447213596246464,1,1 +-4.0080858523643,-4.98828022778007,-5.99032075726688,0.000157798567336908,8.00172944530064,218.950070300324,142.526125170703,1666.85365033111,-6.47070135885082,NA,NA,2.61803399017559,44.6180339887499,24.6180339887499,7.00261607313475,221.950070300324,145.526125170703,1777.26192633711,0.525482785712311,-0.628906220396516,-1.95347407794051,46.307935587268,1.52548278571231,1.37109377960348,1.04652592205949,46.307935587268,-4.0080858523643,-4.98828022778007,-5.99032075726688,0.532214090157417,0.00554530073750104,0,0,0.447213595608872,1,1 +-4.00657900689486,-4.98828022778007,-5.99032075726688,0.000157798567349445,8.00261607313475,223.950070300324,148.526125170703,1777.26192633711,-6.48672598525617,NA,NA,2.6180339889579,45.6180339887499,25.6180339887499,6.99359893834243,226.950070300324,151.526125170703,1890.90627136785,0.517396933348015,-0.617186448176597,-1.94379483520737,42.7479064808657,1.51739693334801,1.3828135518234,1.05620516479263,42.7479064808657,-4.00657900689486,-4.98828022778007,-5.99032075726688,0.532214090123208,-0.00150684546943556,0,0,0.447213595515848,1,1 +-4.00568530137288,-4.98828022778007,-5.99032075726688,0.000157798567351274,7.99359893834243,228.950070300324,154.526125170703,1890.90627136785,-6.48367471741125,NA,NA,2.61803398878024,46.6180339887499,26.6180339887499,6.9864675909552,231.950070300324,157.526125170703,2007.78668453912,0.510817926453154,-0.605466675956677,-1.93411559247426,38.7990492573245,1.51081792645315,1.39453332404332,1.06588440752574,38.7990492573245,-4.00568530137288,-4.98828022778007,-5.99032075726688,0.532214090118217,-0.000893705521978844,0,0,0.447213595502276,1,1 +-3.99211117178533,-4.98828022778007,-5.99032075726688,0.000157798567351541,7.9864675909552,233.950070300324,160.526125170703,2007.78668453912,-6.49490909546247,NA,NA,2.61803398875432,47.6180339887499,27.6180339887499,6.97239301611436,236.950070300324,163.526125170703,2127.90316571322,0.505132625080274,-0.593746903736729,-1.92443634974114,34.4935548170859,1.50513262508027,1.40625309626327,1.07556365025886,34.4935548170859,-3.99211117178533,-4.98828022778007,-5.99032075726688,0.532214090117488,-0.0135741295875464,0,0,0.447213595500296,1,1 +-3.98204712566308,-4.98828022778007,-5.99032075726688,0.00015779856735158,7.97239301611436,238.950070300324,166.526125170703,2127.90316571322,-6.46943560894168,NA,NA,2.61803398875054,48.6180339887499,28.6180339887499,6.97406192175892,241.950070300324,169.526125170703,2251.25571486874,0.51302145329494,-0.58202713151681,-1.914757107008,29.8674012325156,1.51302145329494,1.41797286848319,1.085242892992,29.8674012325156,-3.98204712566308,-4.98828022778007,-5.99032075726688,0.532214090117382,-0.0100640461222594,0,0,0.447213595500007,1,1 +-3.97934501476497,-4.98828022778007,-5.99032075726688,0.000157798567351586,7.97406192175892,243.950070300324,172.526125170703,2251.25571486874,-6.44578970502516,NA,NA,2.61803398874999,49.6180339887499,29.6180339887499,6.99034479971912,246.950070300324,175.526125170703,2377.84433200237,0.530974327631863,-0.570307359296862,-1.90507786427489,24.9603537424539,1.53097432763186,1.42969264070314,1.09492213572511,24.9603537424539,-3.97934501476497,-4.98828022778007,-5.99032075726688,0.532214090117367,-0.00270211089810882,0,0,0.447213595499965,1,1 +-3.97595179966859,-4.98828022778007,-5.99032075726688,0.000157798567351586,7.99034479971912,248.950070300324,178.526125170703,2377.84433200237,-6.4421087019486,NA,NA,2.61803398874991,50.6180339887499,30.6180339887499,7.00890266269341,251.950070300324,181.526125170703,2507.66901711359,0.551629312866898,-0.558587587076943,-1.89539862154177,19.8159647514722,1.5516293128669,1.44141241292306,1.10460137845823,19.8159647514722,-3.97595179966859,-4.98828022778007,-5.99032075726688,0.532214090117365,-0.00339321509637437,0,0,0.447213595499959,1,1 +-3.98370588876806,-4.98828022778007,-5.99032075726688,0.000157798567351587,8.00890266269341,253.950070300324,184.526125170703,2507.66901711359,-6.42547106039564,NA,NA,2.6180339887499,51.6180339887499,31.6180339887499,7.03774315364007,256.950070300324,187.526125170703,2640.72977020233,0.575677513198306,-0.546867814856995,-1.88571937880863,14.4815738297741,1.57567751319831,1.45313218514301,1.11428062119137,14.4815738297741,-3.98370588876806,-4.98828022778007,-5.99032075726688,0.532214090117364,0.00775408909946564,0,0,0.447213595499958,1,1 +-3.98707396101589,-4.98828022778007,-5.99032075726688,0.000157798567351587,8.03774315364007,258.950070300324,190.526125170703,2640.72977020233,-6.44240345696199,NA,NA,2.61803398874989,52.6180339887499,32.6180339887499,7.05611884799774,261.950070300324,193.526125170703,2777.02659126858,0.591971624430249,-0.535148042637047,-1.87604013607552,9.00830771318104,1.59197162443025,1.46485195736295,1.12395986392448,9.00830771318104,-3.98707396101589,-4.98828022778007,-5.99032075726688,0.532214090117364,0.00336807224783607,0,0,0.447213595499958,1,1 +-3.98533103114373,-4.98468301950856,-5.99032075726688,0.00323175672431719,8.05611884799774,263.950070300324,196.526125170703,2777.02659126858,-6.45296411445556,-262.477095779012,NA,2.61803398874989,53.6180339887499,33.6180339887499,7.06796769708084,9.36828821062124,199.526125170703,107.775750230013,0.604897663414357,-0.523428270417128,-1.86636089334237,3.45108030313134,1.60489766341436,1.47657172958287,1.13363910665763,3.45108030313134,-3.98533103114373,-4.98468301950856,-5.99032075726688,0.333736816631528,-0.00174292987216755,-0.00359720827151227,0,0.447213595499958,0.610859040904168,1 +-3.98056066016505,-4.9849185802083,-5.99032075726688,0.00368024117524921,8.06796769708084,11.3682882106212,202.526125170703,107.775750230013,-6.45317143578889,-9.87616393984719,NA,2.61803398874989,2.9813495586166,34.6180339887499,7.07968841453335,7.80477303794173,205.526125170703,93.2384587821971,0.619566632270629,-0.508111289925694,-1.85668165060926,2.60999645771893,1.61956663227063,1.49188871007431,1.14331834939074,2.60999645771893,-3.98056066016505,-4.9849185802083,-5.99032075726688,0.304779372685822,-0.00477037097867532,0.000235560699745982,0,0.447213595499958,0.471089144216627,1 +-3.97509552911427,-4.9871475541587,-5.99032075726688,0.00374567417480778,8.07968841453335,9.80477303794173,208.526125170703,93.2384587821971,-6.44614757347855,-8.29557393412533,NA,2.61803398874989,2.66458143188549,35.6180339887499,7.09575011762595,7.62247379486432,211.526125170703,93.6337703373397,0.639005972105578,-0.493029870133997,-1.84700240787615,2.4402251811809,1.63900597210558,1.506970129866,1.15299759212385,2.4402251811809,-3.97509552911427,-4.9871475541587,-5.99032075726688,0.300554538551708,-0.00546513105078,0.00222897395039477,0,0.447213595499958,0.45069699111243,1 +-3.97718951254969,-4.98486697537455,-5.99032075726688,0.00375522072078576,8.09575011762595,9.62247379486432,214.526125170703,93.6337703373397,-6.42974569119922,-8.10493179794116,NA,2.61803398874989,2.62470653437963,36.6180339887499,7.12194874144664,7.60548028327213,217.526125170703,95.9247907377673,0.663910442991307,-0.480177424292693,-1.837323165143,2.36017752849888,1.66391044299131,1.51982257570731,1.162676834857,2.36017752849888,-3.97718951254969,-4.98486697537455,-5.99032075726688,0.29993814355862,0.00209398343542059,-0.00228057878414223,0,0.447213595499958,0.447721816070592,1 +-3.98626812818505,-4.9819345594819,-5.99032075726688,0.00375661354307306,8.12194874144664,9.60548028327213,220.526125170703,95.9247907377673,-6.42614919536966,-8.07345709883204,NA,2.61803398874989,2.6190050251708,37.6180339887499,7.1503701219304,7.61466602828325,223.526125170703,98.4939115799613,0.686720930441616,-0.465044399667247,-1.82764392240989,2.28649729260917,1.68672093044162,1.53495560033275,1.17235607759011,2.28649729260917,-3.98626812818505,-4.9819345594819,-5.99032075726688,0.299848212741115,0.0090786156353629,-0.00293241589265786,0,0.447213595499958,0.447287743881925,1 +-3.98126401184298,-4.98402014824737,-5.99032075726688,0.00375681675310613,8.1503701219304,9.61466602828325,226.526125170703,98.4939115799613,-6.45492143601592,-8.05955939866692,NA,2.61803398874989,2.61817560852722,38.6180339887499,7.16100927976228,7.63341786757054,229.526125170703,101.104616565445,0.700452802256561,-0.446978959149144,-1.81796467967678,2.20727776433504,1.70045280225656,1.55302104085086,1.18203532032322,2.20727776433504,-3.98126401184298,-4.98402014824737,-5.99032075726688,0.299835092011667,-0.00500411634207832,0.00208558876547473,0,0.447213595499958,0.447224413603093,1 +-3.96331310002506,-4.97920364459919,-5.99032075726688,0.0037568464010504,8.16100927976228,9.63341786757054,232.526125170703,101.104616565445,-6.45977140116662,-8.06923347861524,NA,2.61803398874989,2.61805464967932,39.6180339887499,7.16865099428678,7.64633299101127,235.526125170703,103.721552780829,0.719188790413585,-0.430999107396516,-1.80828543694363,2.12082427278623,1.71918879041359,1.56900089260348,1.19171456305637,2.12082427278623,-3.96331310002506,-4.97920364459919,-5.99032075726688,0.299833177723039,-0.017950911817921,-0.00481650364818366,0,0.447213595499958,0.447215173839934,1 +-3.9756012421358,-4.98704881282811,-5.99032075726688,0.00375685072662718,8.16865099428678,9.64633299101127,238.526125170703,103.721552780829,-6.40048716178751,-8.04869057477805,NA,2.61803398874989,2.61803700311508,40.6180339887499,7.21293238374475,7.67196511113832,241.526125170703,106.339422442306,0.75587569038853,-0.410202751995705,-1.79860619421052,2.02689654487904,1.75587569038853,1.5897972480043,1.20139380578948,2.02689654487904,-3.9756012421358,-4.98704881282811,-5.99032075726688,0.299832898432092,0.0122881421107408,0.00784516822892184,0,0.447213595499958,0.447213825776657,1 +-3.98082554457033,-4.98864304482581,-5.99032075726688,0.00375685135772032,8.21293238374475,9.67196511113832,244.526125170703,106.339422442306,-6.42743363305748,-8.06762244396444,NA,2.61803398874989,2.61803442853934,41.6180339887499,7.24055993808101,7.68589971471261,247.526125170703,108.957431848288,0.780274448252734,-0.397251564823815,-1.78892695147738,1.92546065628251,1.78027444825273,1.60274843517618,1.21107304852262,1.92546065628251,-3.98082554457033,-4.98864304482581,-5.99032075726688,0.299832857684092,0.00522430243453302,0.00159423199770027,0,0.447213595499958,0.447213629096876,1 +-3.99049064446261,-4.991805321851,-5.99032075726688,0.00375685144979557,8.24055993808101,9.68589971471261,250.526125170703,108.957431848288,-6.43144593450632,-8.06863204733705,NA,2.61803398874989,2.6180340529143,42.6180339887499,7.26570775374877,7.69921079120749,253.526125170703,111.575462161788,0.799448903682406,-0.385894609649626,-1.77924770874426,1.81651183904215,1.79944890368241,1.61410539035037,1.22075229125574,1.81651183904215,-3.99049064446261,-4.991805321851,-5.99032075726688,0.299832851739039,0.00966509989228556,0.00316227702518769,0,0.447213595499958,0.447213600401682,1 +-3.99367193562655,-4.99494290413226,-5.99032075726688,0.00375685146322917,8.26570775374877,9.69921079120749,256.526125170703,111.575462161788,-6.45356820336504,-8.07377314042685,NA,2.61803398874989,2.61803399811135,43.6180339887499,7.27718325535358,7.7093445619404,259.526125170703,114.193495601389,0.808958259219793,-0.377699931500624,-1.76956846601115,1.70004942641947,1.80895825921979,1.62230006849938,1.23043153398885,1.70004942641947,-3.99367193562655,-4.99494290413226,-5.99032075726688,0.299832850871668,0.00318129116393864,0.00313758228125722,0,0.447213595499958,0.44721359621511,1 +-3.99222627432191,-4.99207238718645,-5.99032075726688,0.0037568514651891,8.27718325535358,9.7093445619404,262.526125170703,114.193495601389,-6.46334259306499,-8.08485791451909,NA,2.61803398874989,2.61803399011571,44.6180339887499,7.28261785190454,7.71262757494294,265.526125170703,116.811529508131,0.81528632359324,-0.37264283563288,-1.75988922327798,1.5760733257063,1.81528632359324,1.62735716436712,1.24011077672202,1.5760733257063,-3.99222627432191,-4.99207238718645,-5.99032075726688,0.29983285074512,-0.00144566130464085,-0.00287051694580782,0,0.447213595499958,0.447213595604297,1 +-3.99604501272158,-4.99722517740842,-5.99032075726688,0.00375685146547505,8.28261785190454,9.71262757494294,268.526125170703,116.811529508131,-6.45573906423355,-8.0721900075403,NA,2.61803398874989,2.61803398894916,45.6180339887499,7.29275168770777,7.72373978640108,271.526125170703,119.429563484641,0.823060049271329,-0.364715222819325,-1.75020998054487,1.44458352409442,1.82306004927133,1.63528477718067,1.24979001945513,1.44458352409442,-3.99604501272158,-4.99722517740842,-5.99032075726688,0.299832850726657,0.00381873839966438,0.00515279022196999,0,0.447213595499958,0.447213595515181,1 +-4.00093527113531,-5.0039691150066,-5.99032075726688,0.00375685146551678,8.29275168770777,9.72373978640108,274.526125170703,119.429563484641,-6.46084639274428,-8.07893624903065,NA,2.61803398874989,2.61803398877897,46.6180339887499,7.29972902089965,7.73068259152229,277.526125170703,122.047597471565,0.827015036549752,-0.361940400227743,-1.74053073781175,1.30558001982735,1.82701503654975,1.63805959977226,1.25946926218825,1.30558001982735,-4.00093527113531,-5.0039691150066,-5.99032075726688,0.299832850723963,0.00489025841373529,0.00674393759817952,0,0.447213595499958,0.447213595502179,1 +-4.01266197001315,-5.01182915753341,-5.99032075726688,0.00375685146552286,8.29972902089965,9.73068259152229,280.526125170703,122.047597471565,-6.46192255660738,-8.08873206422982,NA,2.61803398874989,2.61803398875414,47.6180339887499,7.30604124824668,7.73157124993216,283.526125170703,124.665631460043,0.826079765414441,-0.36590951523434,-1.73085149507864,1.15906281266627,1.82607976541444,1.63409048476566,1.26914850492136,1.15906281266627,-4.01266197001315,-5.01182915753341,-5.99032075726688,0.29983285072357,0.0117266988778345,0.00786004252681277,0,0.447213595499958,0.447213595500282,1 +-3.99938480511221,-4.99425631687843,-5.99032075726688,0.00375685146552375,8.30604124824668,9.73157124993216,286.526125170703,124.665631460043,-6.50590061774632,-8.12688276335489,NA,2.61803398874989,2.61803398875051,48.6180339887499,7.28517353905052,7.70888147959244,289.526125170703,127.283665448752,0.813417795401294,-0.377738672767749,-1.72117225234547,1.00503190257906,1.81341779540129,1.62226132723225,1.27882774765453,1.00503190257906,-3.99938480511221,-4.99425631687843,-5.99032075726688,0.299832850723513,-0.0132771649009336,-0.0175728406549754,0,0.447213595499958,0.447213595500005,1 +-3.98214683193005,-4.98814430842051,-5.99032075726688,0.00375685146552388,8.28517353905052,9.70888147959244,292.526125170703,127.283665448752,-6.4883785219436,-8.08698847769655,NA,2.61803398874989,2.61803398874999,49.6180339887499,7.27513508061457,7.7108477337471,295.526125170703,129.901699437496,0.814032990289083,-0.371994989646184,-1.71149300961235,0.843487289561435,1.81403299028908,1.62800501035382,1.28850699038765,0.843487289561435,-3.98214683193005,-4.98814430842051,-5.99032075726688,0.299832850723505,-0.0172379731821668,-0.00611200845792251,0,0.447213595499958,0.447213595499965,1 +-3.9802888044559,-4.99179032109493,-5.99032075726688,0.0037568514655239,8.27513508061457,9.7108477337471,298.526125170703,129.901699437496,-6.44510694972968,-8.06734101913937,NA,2.61803398874989,2.61803398874991,50.6180339887499,7.29183992455346,7.72495678508273,301.526125170703,132.519733426245,0.831886158359037,-0.360139298066696,-1.70181376687924,0.674428973612848,1.83188615835904,1.6398607019333,1.29818623312076,0.674428973612848,-3.9802888044559,-4.99179032109493,-5.99032075726688,0.299832850723503,-0.00185802747415003,0.00364601267441912,0,0.447213595499958,0.447213595499959,1 +-3.99674716201057,-4.99621795935241,-5.99032075726688,0.0037568514655239,8.29183992455346,9.72495678508273,304.526125170703,132.519733426245,-6.42378421309565,-8.07245876598688,NA,2.61803398874989,2.6180339887499,51.6180339887499,7.32172294446536,7.7359028949208,307.526125170703,135.137767414995,0.851597353903141,-0.351929619161628,-1.69213452414613,0.497856954733224,1.85159735390314,1.64807038083837,1.30786547585387,0.497856954733224,-3.99674716201057,-4.99621795935241,-5.99032075726688,0.299832850723503,0.0164583575546719,0.00442763825747639,0,0.447213595499958,0.447213595499958,1 +-3.99504672350211,-4.99686355696229,-5.99032075726688,0.0037568514655239,8.32172294446536,9.7359028949208,310.526125170703,135.137767414995,-6.46857319108124,-8.08340487582495,NA,2.61803398874989,2.61803398874989,52.6180339887499,7.32392485366078,7.74008393683436,313.526125170703,137.755801403744,0.854850191892573,-0.348147578514035,-1.68245528141301,0.313771232922553,1.85485019189257,1.65185242148597,1.31754471858699,0.313771232922553,-3.99504672350211,-4.99686355696229,-5.99032075726688,0.299832850723503,-0.001700438508454,0.000645597609883526,0,0.447213595499958,0.447213595499958,1 +-4.01090933500545,-5.00107296247513,-6.03762915528489,0.0769413194919331,8.32392485366078,9.74008393683436,316.526125170703,137.755801403744,-6.44825877376699,-8.08088566679784,-315.151592811364,2.61803398874989,2.61803398874989,53.6180339887499,7.33868176321807,7.74582193555143,10.2522486679497,5.18724048805286,0.859803468390457,-0.345011135476325,-1.67277603867984,0.122171808180833,1.85980346839046,1.65498886452368,1.32722396132016,0.122171808180833,-4.01090933500545,-5.00107296247513,-6.03762915528489,0.188016933373469,0.0158626115033382,0.00420940551284163,0.0473083980180158,0.447213595499958,0.447213595499958,0.610859040904168 +-4.0143148656215,-4.99381937709025,-6.06926149727652,0.0876187894780489,8.33868176321807,9.74582193555143,13.2522486679497,5.18724048805286,-6.48638209921702,-8.09915961888778,-11.9310215199228,2.61803398874989,2.61803398874989,2.9813495586166,7.32987716188306,7.74026601076814,8.32311330238277,4.35793076571819,0.848894133385004,-0.346084097951459,-1.71040519396475,0.0942178288433253,1.848894133385,1.65391590204854,1.28959480603525,0.0942178288433253,-4.0143148656215,-4.99381937709025,-6.06926149727652,0.171703210890112,0.00340553061604528,-0.00725358538488682,0.0316323419916312,0.447213595499958,0.447213595499958,0.471089144216627 +-4.00163702354294,-4.99101911544982,-6.0325058955944,0.0891766113544512,8.32987716188306,9.74026601076814,11.3231133023828,4.35793076571819,-6.50797573619811,-8.08296974745027,-10.1395355953062,2.61803398874989,2.61803398874989,2.66458143188549,7.30772695895301,7.74471597680672,7.98887916042018,4.25353692874991,0.834579267763506,-0.339903475041704,-1.77966669124127,0.090139398222486,1.83457926776351,1.6600965249583,1.22033330875873,0.090139398222486,-4.00163702354294,-4.99101911544982,-6.0325058955944,0.169323070856642,-0.0126778420785602,-0.0028002616404224,-0.0367556016821266,0.447213595499958,0.447213595499958,0.45069699111243 +-4.00046912381741,-4.98520335396769,-6.0272068003071,0.0894038945031515,8.307726958953,9.74471597680672,10.9888791604202,4.25353692874991,-6.47595261445797,-8.08145432878039,-9.80635084254314,2.61803398874989,2.61803398874989,2.62470653437963,7.30536813368424,7.75010252309048,7.91869871029806,4.23861018385404,0.832942244220568,-0.330922590491528,-1.81217258683567,0.0895443632141184,1.83294224422057,1.66907740950847,1.18782741316433,0.0895443632141184,-4.00046912381741,-4.98520335396769,-6.0272068003071,0.168975813105708,-0.0011678997255295,-0.00581576148213475,-0.00529909528729172,0.447213595499958,0.447213595499958,0.447721816070592 +-3.99270835400033,-4.97734303695323,-6.03531349916005,0.0894370546676515,8.30536813368424,9.75010252309048,10.9186987102981,4.23861018385404,-6.48065578309816,-8.07408878456416,-9.74997139858788,2.61803398874989,2.61803398874989,2.6190050251708,7.30010259034101,7.7600412260455,7.89150420785302,4.2364387428903,0.832473120403161,-0.316125944459216,-1.83937938714277,0.089457548776385,1.83247312040316,1.68387405554078,1.16062061285723,0.089457548776385,-3.99270835400033,-4.97734303695323,-6.03531349916005,0.168925148882642,-0.00776076981708223,-0.00786031701446394,0.00810669885294428,0.447213595499958,0.447213595499958,0.447287743881925 +-3.97909639333651,-4.97738754666652,-5.974657874197,0.0894418926704508,8.30010259034101,9.7600412260455,10.891504207853,4.2364387428903,-6.47394978460199,-8.05346569774465,-9.82685271911889,2.61803398874989,2.61803398874989,2.61817560852722,7.29898158199692,7.78272569760792,7.81797219308777,4.23612206851525,0.839764766402834,-0.293468981412442,-1.87469288630282,0.0894448827206186,1.83976476640283,1.70653101858756,1.12530711369718,0.0894448827206186,-3.97909639333651,-4.97738754666652,-5.974657874197,0.168917757072116,-0.0136119606638127,4.45097132936851e-05,-0.0606556249630477,0.447213595499958,0.447213595499958,0.447224413603093 +-3.9672931116522,-4.97154861668529,-5.92656802643791,0.0894425985255465,8.29898158199692,9.78272569760792,10.8179721930878,4.23612206851525,-6.45011649061491,-8.05942115566811,-9.71541280134668,2.61803398874989,2.61803398874989,2.61805464967932,7.31259035940071,7.80172949375507,7.81348758131754,4.23607586921031,0.860668373066321,-0.270856528078963,-1.84935076049982,0.0894430347679868,1.86066837306632,1.72914347192104,1.15064923950018,0.0894430347679868,-3.9672931116522,-4.97154861668529,-5.92656802643791,0.168916678621494,-0.0118032816843135,-0.00583892998122733,-0.0480898477590913,0.447213595499958,0.447213595499958,0.447215173839934 +-3.96433840868506,-4.97145119689948,-5.91145837179929,0.0894427015084171,8.31259035940071,9.80172949375507,10.8134875813175,4.23607586921031,-6.42216980095373,-8.04423205830514,-9.6045160228939,2.61803398874989,2.61803398874989,2.61803700311508,7.34347114088816,7.83012066833097,7.87756600971135,4.23606912888351,0.893375261414121,-0.242405144764256,-1.77591878693773,0.0894427651553315,1.89337526141412,1.75759485523574,1.22408121306227,0.0894427651553315,-3.96433840868506,-4.97145119689948,-5.91145837179929,0.168916521277669,-0.00295470296714005,-9.74197858173e-05,-0.0151096546386244,0.447213595499958,0.447213595499958,0.447213825776657 +-3.96300069562193,-4.97388549289275,-5.88910056986734,0.0894427165334155,8.34347114088816,9.83012066833097,10.8775660097114,4.23606912888351,-6.41577200122223,-8.04154271400142,-9.58730097038032,2.61803398874989,2.61803398874989,2.61803442853934,7.37830598006289,7.86017394909401,7.952287534478,4.23606814548438,0.929036852729062,-0.213856341663733,-1.68737715873702,0.0894427258193751,1.92903685272906,1.78614365833627,1.31262284126298,0.0894427258193751,-3.96300069562193,-4.97388549289275,-5.88910056986734,0.168916498321514,-0.00133771306313448,0.00243429599327523,-0.0223578019319513,0.447213595499958,0.447213595499958,0.447213629096876 +-3.96451056823098,-4.9785624728567,-5.89169992977851,0.0894427187255332,8.37830598006289,9.86017394909401,10.952287534478,4.23606814548438,-6.4107599503467,-8.04323880368655,-9.52616590317119,2.61803398874989,2.61803398874989,2.6180340529143,7.41623843703204,7.88917898878368,8.06479313466905,4.23606800200841,0.966036157107136,-0.187741834556483,-1.57647772860435,0.0894427200803364,1.96603615710714,1.81225816544352,1.42352227139565,0.0894427200803364,-3.96451056823098,-4.9785624728567,-5.89169992977851,0.168916494972256,0.00150987260905611,0.00467697996395194,0.00259935991117156,0.447213595499958,0.447213595499958,0.447213600401682 +-3.96869327266732,-4.97736379882988,-5.93526543303967,0.0894427190453587,8.41623843703204,9.88917898878368,11.064793134669,4.23606800200841,-6.41053014371955,-8.0566819702237,-9.48940528979075,2.61803398874989,2.61803398874989,2.61803399811135,7.45431292230761,7.90987569463697,8.20001811959451,4.23606798107555,1.00152558887616,-0.166304307413188,-1.46817765838286,0.089442719243022,2.00152558887616,1.83369569258681,1.53182234161714,0.089442719243022,-3.96869327266732,-4.97736379882988,-5.93526543303967,0.168916494483606,0.00418270443633383,-0.00119867402682613,0.0435655032611641,0.447213595499958,0.447213595499958,0.44721359621511 +-3.97619802804283,-4.9797679708651,-5.96721187022645,0.0894427190920199,8.45431292230761,9.90987569463697,11.2000181195945,4.23606798107555,-6.41397585072325,-8.05113962884482,-9.57151477383027,2.61803398874989,2.61803398874989,2.61803399011571,7.49025784353962,7.93399775583966,8.28449666363833,4.23606797802149,1.03283231620884,-0.143668106243067,-1.40344309142254,0.0894427191208598,2.03283231620884,1.85633189375693,1.59655690857746,0.0894427191208598,-3.97619802804283,-4.9797679708651,-5.96721187022645,0.168916494412314,0.00750475537551825,0.00240417203521826,0.0319464371867788,0.447213595499959,0.447213595499958,0.447213595604298 +-3.97972969842834,-4.97624839158064,-6.00422338935285,0.0894427190988224,8.49025784353962,9.93399775583966,11.2844966636383,4.23606797802149,-6.43009188498811,-8.06095341223228,-9.61814010616092,2.61803398874989,2.61803398874989,2.61803398894916,7.51624250783209,7.95205456535067,8.34015916919273,4.2360679775759,1.05663428816601,-0.123436077108163,-1.37065496164899,0.0894427191030386,2.05663428816601,1.87656392289184,1.62934503835101,0.0894427191030386,-3.97972969842834,-4.97624839158064,-6.00422338935285,0.168916494401921,0.00353167038550628,-0.00351957928445505,0.0370115191263949,0.447213595499964,0.447213595499958,0.447213595515187 +-3.97976299172972,-4.97366006379374,-6.0181194873497,0.089442719099779,8.51624250783209,9.95205456535067,11.3401591691927,4.2360679775759,-6.43930462479304,-8.05432736182638,-9.7011414221977,2.61803398874989,2.61803398874989,2.61803398877897,7.5365333857956,7.9742064992237,8.3445240405639,4.23606797751089,1.07690458973767,-0.0996844686888041,-1.37487835100183,0.0894427191004522,2.07690458973767,1.9003155313112,1.62512164899817,0.0894427191004522,-3.97976299172972,-4.97366006379374,-6.0181194873497,0.168916494400459,3.32933013833504e-05,-0.00258832778690162,0.0138960979968582,0.447213595499999,0.447213595499958,0.44721359550222 +-3.97915861160039,-4.97693623174121,-5.99609665622765,0.0894427190996725,8.5365333857956,9.9742064992237,11.3445240405639,4.23606797751089,-6.43999616791699,-8.04427486375877,-9.7595447100375,2.61803398874989,2.61803398874989,2.61803398875414,7.55639686660383,8.00257121857435,8.31279369503046,4.23606797750141,1.09714159800795,-0.0733445324825421,-1.39299783835154,0.0894427191001688,2.09714159800795,1.92665546751746,1.60700216164846,0.0894427191001688,-3.97915861160039,-4.97693623174121,-5.99609665622765,0.168916494400622,-0.000604380129330088,0.00327616794746962,-0.0220228311220556,0.447213595500239,0.447213595499958,0.447213595500563 +-3.97546394113305,-4.9746989661519,-5.99752980105079,0.0894427190979703,8.55639686660383,10.0025712185743,11.3127936950305,4.23606797750141,-6.44210855066362,-8.05508924838741,-9.70045504478649,2.61803398874989,2.61803398874989,2.61803398875051,7.57495482307739,8.02425228065708,8.31758277101114,4.23606797750003,1.11798298640755,-0.0502807642237535,-1.38909449457918,0.0894427191007717,2.11798298640755,1.94971923577625,1.61090550542082,0.0894427191007717,-3.97546394113305,-4.9746989661519,-5.99752980105079,0.168916494403223,-0.00369467046734105,-0.00223726558931381,0.00143314482314589,0.447213595501885,0.447213595499958,0.447213595501932 +-3.98025979087115,-4.98416334287713,-5.97867705797322,0.0894427190861617,8.57495482307739,10.0242522806571,11.3175827710111,4.23606797750003,-6.42763992806479,-8.03976763430749,-9.72305980971869,2.61803398874989,2.61803398874989,2.61803398874999,7.60245488008742,8.05540262100372,8.30840133395678,4.23606797749982,1.1425190452745,-0.024979730375648,-1.38662429562998,0.0894427191052753,2.1425190452745,1.97502026962435,1.61337570437002,0.0894427191052753,-3.98025979087115,-4.98416334287713,-5.97867705797322,0.168916494421265,0.00479584973809594,0.00946437672523889,-0.0188527430775724,0.447213595513164,0.447213595499958,0.447213595513171 +-3.98161269940058,-4.9821570324473,-6.00084090227278,0.0894427190052037,8.60245488008742,10.0554026210037,11.3084013339568,4.23606797749982,-6.43884271715463,-8.06655200468634,-9.65153884326041,2.61803398874989,2.61803398874989,2.61803398874991,7.62303123267113,8.06999931008896,8.34342228508198,4.23606797749979,1.16225925440335,-0.0091430732527833,-1.3653013536032,0.0894427191361975,2.16225925440335,1.99085692674722,1.6346986463968,0.0894427191361975,-3.98161269940058,-4.9821570324473,-6.00084090227278,0.168916494544958,0.00135290852943148,-0.00200631042983668,0.0221638442995592,0.447213595590472,0.447213595499958,0.447213595590473 +-3.98536832718969,-4.97890708582744,-6.0204411158068,0.0894427184503062,8.62303123267113,10.069999310089,11.343422285082,4.23606797749979,-6.43862904987925,-8.06454936240889,-9.68996432742393,2.61803398874989,2.61803398874989,2.6180339887499,7.64373963889332,8.08583370016897,8.35469498095997,4.23606797749979,1.18064655500278,0.00869989429992124,-1.36614225587598,0.0894427193481493,2.18064655500278,2.00869989429992,1.63385774412402,0.0894427193481493,-3.98536832718969,-4.97890708582744,-6.0204411158068,0.168916495392766,0.00375562778910916,-0.00324994661985297,0.0196002135340215,0.447213596120352,0.447213595499958,0.447213596120352 +-3.98326751878581,-4.97591857319432,-6.02378800522159,0.089442714646982,8.64373963889332,10.085833700169,11.35469498096,4.23606797749979,-6.45056221948411,-8.05902940432961,-9.73793146322796,2.61803398874989,2.61803398874989,2.61803398874989,7.65707294070618,8.10507961195845,8.3363223565681,4.23606797749979,1.19527822781309,0.029792808472477,-1.38658337168278,0.08944272080089,2.19527822781309,2.02979280847248,1.61341662831722,0.08944272080089,-3.98326751878581,-4.97591857319432,-6.02378800522159,0.168916501203728,-0.00210080840388317,-0.00298851263311943,0.00334688941479039,0.447213599752204,0.447213595499958,0.447213599752204 +-3.98557946383673,-4.98429512260293,-6.00023603423681,0.089442688578612,8.65707294070618,10.1050796119585,11.3363223565681,4.23606797749979,-6.44275028662797,-8.04282882727169,-9.77024570445724,2.61803398874989,2.61803398874989,2.61803398874989,7.67523428254196,8.13433803100709,8.29797843277586,4.23606797749979,1.21201070902728,0.0538742352781547,-1.41037137690437,0.0894427307581225,2.21201070902728,2.05387423527815,1.58962862309563,0.0894427307581225,-3.98557946383673,-4.98429512260293,-6.00023603423681,0.16891654103266,0.00231194505092332,0.00837654940860959,-0.0235519709847778,0.447213624645284,0.447213595499958,0.447213624645284 +-3.98417366291172,-4.98937306571107,-5.97934873275363,0.0894425099034481,8.67523428254196,10.1343380310071,11.2979784327759,4.23606797749979,-6.45020883827642,-8.05968097522374,-9.72947314540022,2.61803398874989,2.61803398874989,2.61803398874989,7.68878598595216,8.15318124983792,8.28483333628918,4.23606797749979,1.22643124519055,0.0695791126752212,-1.41060741114118,0.0894427990060254,2.22643124519055,2.06957911267522,1.58939258885882,0.0894427990060254,-3.98417366291172,-4.98937306571107,-5.97934873275363,0.16891681402435,-0.00140580092500562,0.00507794310813437,-0.0208873014831813,0.447213795264998,0.447213595499958,0.447213795264998 +-3.9792776189096,-4.98066847247434,-5.985733410206,0.0894412852504598,8.68878598595216,10.1531812498379,11.2848333362892,4.23606797749979,-6.45142444767546,-8.0816797961105,-9.66840480273162,2.61803398874989,2.61803398874989,2.61803398874989,7.70158640143671,8.15842844964832,8.30943055120832,4.23606797749979,1.24225758227883,0.0802060469641539,-1.38995614389481,0.0894432667848113,2.24225758227883,2.08020604696415,1.61004385610519,0.0894432667848113,-3.9792776189096,-4.98066847247434,-5.985733410206,0.168918685143163,-0.00489604400212376,-0.00870459323672439,0.00638467745237051,0.447214964709911,0.447213595499958,0.447214964709911 +-3.97745143201696,-4.98038435883396,-5.98011435014486,0.0894328915796739,8.70158640143671,10.1584284496483,11.3094305512083,4.23606797749979,-6.44043262496012,-8.0591749887989,-9.69073916537027,2.61803398874989,2.61803398874989,2.61803398874989,7.72118013695766,8.17758438528755,8.32022437089971,4.23606797749979,1.26297996336923,0.0995375744898102,-1.37568955410081,0.0894464730212324,2.26297996336923,2.09953757448981,1.62431044589919,0.0894464730212324,-3.97745143201696,-4.98038435883396,-5.98011435014486,0.168931510261243,-0.00182618689263533,-0.000284113640389392,-0.00561906006113881,0.447222980204592,0.447213595499958,0.447222980204592 +-3.97268752069186,-4.98387064118172,-5.95624183352758,0.0893753711058825,8.72118013695766,10.1775843852875,11.3202243708997,4.23606797749979,-6.44041551693049,-8.05494488728392,-9.69990079176266,2.61803398874989,2.61803398874989,2.61803398874989,7.74078444582239,8.19935466743889,8.32535599408836,4.23606797749979,1.28552853135227,0.119153215655853,-1.35580390424567,0.0894684504393495,2.28552853135227,2.11915321565585,1.64419609575433,0.0894684504393495,-3.97268752069186,-4.98387064118172,-5.95624183352758,0.169019428032649,-0.00476391132510394,0.0034862823477673,-0.0238725166172835,0.447277919222441,0.447213595499958,0.447277919222441 +-3.97963623593396,-4.97632840091121,-6.01495658460331,0.0889816179650814,8.74078444582239,10.1993546674389,11.3253559940884,4.23606797749979,-6.42099471991988,-8.07161433323527,-9.57868698078589,2.61803398874989,2.61803398874989,2.61803398874989,7.77239146732829,8.21082266541867,8.40540187236657,4.23606797749979,1.31284101066041,0.135282574474131,-1.31204573777326,0.0896191585688449,2.31284101066041,2.13528257447413,1.68795426222674,0.0896191585688449,-3.97963623593396,-4.97632840091121,-6.01495658460331,0.169622641028282,0.00694871524209869,-0.00754224027051429,0.0587147510757279,0.447654476852706,0.447213595499958,0.447654476852706 +-3.97822072908587,-4.98064750525015,-5.99021435531631,0.0863061916173292,8.77239146732829,10.2108226654187,11.4054018723666,4.23606797749979,-6.44060219944993,-8.0475493875168,-9.75714642403013,2.61803398874989,2.61803398874989,2.61803398874989,7.79188040005091,8.23716361778989,8.37515374910646,4.23606797749979,1.33320477472645,0.158954173562922,-1.32700232237656,0.0906555411527689,2.33320477472645,2.15895417356292,1.67299767762344,0.0906555411527689,-3.97822072908587,-4.98064750525015,-5.99021435531631,0.173786045714678,-0.00141550684808671,0.00431910433894499,-0.0247422292869946,0.450235441246711,0.447213595499958,0.450235441246711 +-3.98497379467939,-4.98134889769347,-5.99578203610412,0.069067746529926,8.79188040005091,10.2371636177899,11.3751537491065,4.23606797749979,-6.43014328881681,-8.05815555703381,-9.68680274601153,2.61803398874989,2.61803398874989,2.61803398874989,7.81783329503009,8.25694959690915,8.38838040975552,4.23606797749979,1.35498404564058,0.17830666831277,-1.31721667769288,0.0979193841636164,2.35498404564058,2.17830666831277,1.68278332230712,0.0979193841636164,-3.98497379467939,-4.98134889769347,-5.99578203610412,0.203681131763313,0.00675306559352009,0.000701392443312354,0.00556768078780772,0.467925634374483,0.447213595499958,0.467925634374483 +-3.98889397873777,-4.98060370314886,-6.00797772019543,0.00255268378663754,8.81783329503009,10.2569495969092,11.3883804097555,4.23606797749979,-6.44390286001053,-8.06073702083445,-9.68918343946122,2.61803398874989,2.61803398874989,2.61803398874989,7.83528230734093,8.27514014365889,8.40013572093588,4.23606797749979,1.37001025096119,0.196957770619303,-1.312998713797,0.155240533045174,2.37001025096119,2.1969577706193,1.687001286203,0.155240533045174,-3.98889397873777,-4.98060370314886,-6.00797772019543,0.472414411185376,0.00392018405837475,-0.000745194544602193,0.0121956840913042,0.589176021874882,0.447213595499958,0.589176021874882 +-3.98889397873777,-4.98631221215648,-6.00797772019543,0.00255268378663754,8.83528230734093,10.2751401436589,11.4001357209359,4.23606797749979,NA,-8.05307756718084,NA,2.61803398874989,2.61803398874989,2.61803398874989,11.8352823073409,8.29806449310182,14.4001357209359,11.0901699437495,1.38111627222342,0.216354067470437,-1.32097643399243,0.902064487461155,2.38111627222342,2.21635406747044,1.67902356600757,0.902064487461155,-3.98889397873777,-4.98631221215648,-6.00797772019543,0.472414411185376,0,0.00570850900761385,0,1,0.447213595499958,1 +-3.98889397873777,-4.98650291672564,-6.00797772019543,0.00255268378663754,12.8352823073409,10.2980644931018,17.4001357209359,11.0901699437495,NA,-8.06783193321869,NA,3.61803398874989,2.61803398874989,3.61803398874989,15.8352823073409,8.31187014285089,20.4001357209359,21.1803398874989,1.39222229348565,0.23004185531396,-1.32895415418786,1.97258534994171,2.39222229348565,2.23004185531396,1.67104584581214,1.97258534994171,-3.98889397873777,-4.98650291672564,-6.00797772019543,0.472414411185376,0,0.000190704569163618,0,1,0.447213595499958,1 +-3.98889397873777,-4.98318207329331,-6.00797772019543,0.00255268378663754,16.8352823073409,10.3118701428509,23.4001357209359,21.1803398874989,NA,-8.0716520476949,NA,4.61803398874989,2.61803398874989,4.61803398874989,19.8352823073409,8.32331483201276,26.4001357209359,34.5065778087482,1.40332831474788,0.243538938588317,-1.33693187438329,3.09111327153,2.40332831474788,2.24353893858832,1.66306812561671,3.09111327153,-3.98889397873777,-4.98318207329331,-6.00797772019543,0.472414411185376,0,-0.00332084343232692,0,1,0.447213595499958,1 +-3.98889397873777,-4.98625643060681,-6.00797772019543,0.00255268378663754,20.8352823073409,10.3233148320128,29.4001357209359,34.5065778087482,NA,-8.05988360940426,NA,5.61803398874989,2.61803398874989,5.61803398874989,23.8352823073409,8.34203281603274,32.4001357209359,51.0688837074973,1.41443433601012,0.260356865295003,-1.34490959457871,4.04322281414845,2.41443433601012,2.260356865295,1.65509040542129,4.04322281414845,-3.98889397873777,-4.98625643060681,-6.00797772019543,0.472414411185376,0,0.00307435731349501,0,1,0.447213595499958,1 +-3.98889397873777,-4.98665343943557,-6.00797772019543,0.00255268378663754,24.8352823073409,10.3420328160327,35.4001357209359,51.0688837074973,NA,-8.06753537251579,NA,6.61803398874989,2.61803398874989,6.61803398874989,27.8352823073409,8.35602175037594,38.4001357209359,70.8672575837461,1.42554035727235,0.274100434688194,-1.35288731477414,4.67575295059883,2.42554035727235,2.27410043468819,1.64711268522586,4.67575295059883,-3.98889397873777,-4.98665343943557,-6.00797772019543,0.472414411185376,0,0.00039700882876169,0,1,0.447213595499958,1 +-3.98889397873777,-4.99168649667615,-6.00797772019543,0.00255268378663754,28.8352823073409,10.3560217503759,41.4001357209359,70.8672575837461,NA,-8.06354169788274,NA,7.61803398874989,2.61803398874989,7.61803398874989,31.8352823073409,8.37247891138237,44.4001357209359,93.9016994374948,1.43664637853458,0.287446995252623,-1.36086503496956,4.89680706456217,2.43664637853458,2.28744699525262,1.63913496503044,4.89680706456217,-3.98889397873777,-4.99168649667615,-6.00797772019543,0.472414411185376,0,0.00503305724057792,0,1,0.447213595499958,1 +-3.98889397873777,-4.99597085004202,-6.00797772019543,0.00255268378663754,32.8352823073409,10.3724789113824,47.4001357209359,93.9016994374948,NA,-8.07243405944003,NA,8.61803398874989,2.61803398874989,8.61803398874989,35.8352823073409,8.38344029070614,50.4001357209359,120.172209268743,1.44775239979682,0.295760498576472,-1.36884275516499,4.67575295059883,2.44775239979682,2.29576049857647,1.63115724483501,4.67575295059883,-3.98889397873777,-4.99597085004202,-6.00797772019543,0.472414411185376,0,0.00428435336587014,0,1,0.447213595499958,1 +-3.98889397873777,-5.00495799338549,-6.00797772019543,0.00255268378663754,36.8352823073409,10.3834402907061,53.4001357209359,120.172209268743,NA,-8.07466349882822,NA,9.61803398874989,2.61803398874989,9.61803398874989,39.8352823073409,8.39302380071216,56.4001357209359,149.678787077491,1.45885842105905,0.299789648534453,-1.37682047536042,4.04322281414845,2.45885842105905,2.29978964853445,1.62317952463958,4.04322281414845,-3.98889397873777,-5.00495799338549,-6.00797772019543,0.472414411185376,0,0.00898714334346871,0,1,0.447213595499958,1 +-3.98889397873777,-5.00096374856362,-6.00797772019543,0.00255268378663754,40.8352823073409,10.3930238007122,59.4001357209359,149.678787077491,NA,-8.10218639038506,NA,10.6180339887499,2.61803398874989,10.6180339887499,43.8352823073409,8.38559722826737,62.4001357209359,182.421432863739,1.46996444232128,0.294831655148965,-1.38479819555585,3.09111327153,2.46996444232128,2.29483165514896,1.61520180444415,3.09111327153,-3.98889397873777,-5.00096374856362,-6.00797772019543,0.472414411185376,0,-0.00399424482186522,0,1,0.447213595499958,1 +-3.98889397873777,-4.99140591106641,-6.00797772019543,0.00255268378663754,44.8352823073409,10.3855972282674,65.4001357209359,182.421432863739,NA,-8.10128715917924,NA,11.6180339887499,2.61803398874989,11.6180339887499,47.8352823073409,8.37872641127152,68.4001357209359,218.400146627487,1.48107046358351,0.293867906585344,-1.39277591575127,1.97258534994171,2.48107046358351,2.29386790658534,1.60722408424873,1.97258534994171,-3.98889397873777,-4.99140591106641,-6.00797772019543,0.472414411185376,0,-0.00955783749721564,0,1,0.447213595499958,1 +-3.98889397873777,-4.99067463708134,-6.00797772019543,0.00255268378663754,48.8352823073409,10.3787264112715,71.4001357209359,218.400146627487,NA,-8.07699568973765,NA,12.6180339887499,2.61803398874989,12.6180339887499,51.8352823073409,8.38686854802725,74.4001357209359,257.614928368735,1.49217648484575,0.302461995518936,-1.4007536359467,0.902064487461154,2.49217648484575,2.30246199551894,1.5992463640533,0.902064487461154,-3.98889397873777,-4.99067463708134,-6.00797772019543,0.472414411185376,0,-0.00073127398507086,0,1,0.447213595499958,1 +-3.98565747329202,-4.98939316753861,-5.97866508128206,0.0690677465299261,52.8352823073409,10.3868685480272,77.4001357209359,257.614928368735,-50.3352363066787,-8.07636265913238,-75.8381797159914,13.6180339887499,2.61803398874989,13.6180339887499,9.19626502524842,8.39540191921296,10.1309081590251,6.00559868349362,1.50328250610799,0.311787358437599,-1.40873135614213,0.155240533045174,2.50328250610799,2.3117873584376,1.59126864385787,0.155240533045174,-3.98565747329202,-4.98939316753861,-5.97866508128206,0.203681131763313,-0.00323650544574489,-0.00128146954273108,-0.0293126389133662,0.589176021874882,0.447213595499958,0.589176021874882 +-3.97787888617369,-4.97646740732432,-5.9878139078935,0.0863061916173293,10.1962650252484,10.395401919213,13.1309081590251,6.00559868349362,-7.68641857955079,-8.08593348852825,-11.5091557698378,2.92656796121774,2.61803398874989,2.92656796121774,8.13627394760757,8.39802019253149,8.55439838352422,4.44954212048734,1.51762503281596,0.322394190898992,-1.38739643742418,0.0979193841636164,2.51762503281596,2.32239419089899,1.61260356257582,0.0979193841636164,-3.97787888617369,-4.97646740732432,-5.9878139078935,0.173786045714678,-0.00777858711833276,-0.0129257602142893,0.00914882661144039,0.467925634374483,0.447213595499958,0.467925634374483 +-3.97552855100233,-4.97973505839869,-5.94872311607149,0.0889816179650814,9.13627394760757,10.3980201925315,11.5543983835242,4.44954212048734,-6.59887813613666,-8.04882575788244,-9.96869952066391,2.65830282663796,2.61803398874989,2.65830282663796,8.01976090171252,8.42357230463451,8.33572290856756,4.26641880048683,1.53974614664227,0.345926783574674,-1.37521034531768,0.0906555411527689,2.53974614664227,2.34592678357467,1.62478965468232,0.0906555411527689,-3.97552855100233,-4.97973505839869,-5.94872311607149,0.169622641028282,-0.00235033517136069,0.00326765107437442,-0.0390907918220088,0.450235441246711,0.447213595499958,0.450235441246711 +-3.97566763311417,-4.97665699885818,-5.96280897504474,0.0893753711058825,9.01976090171252,10.4235723046345,11.3357229085676,4.26641880048683,-6.45540422396074,-8.06045863899904,-9.64557051098348,2.62382013441835,2.61803398874989,2.62382013441835,8.02466412767223,8.44193490082038,8.3663077805146,4.24047959984035,1.56421759563994,0.36619172517598,-1.32393346138917,0.0896191585688449,2.56421759563994,2.36619172517598,1.67606653861083,0.0896191585688449,-3.97566763311417,-4.97665699885818,-5.96280897504474,0.169019428032649,0.000139082111836489,-0.00307805954051243,0.0140858589732475,0.447654476852706,0.447213595499958,0.447654476852706 +-3.977934119123,-4.97634530313174,-5.95717596832513,0.0894328915796739,9.02466412767223,10.4419349008204,11.3663077805146,4.24047959984035,-6.43384767913761,-8.05271187022902,-9.65868322366812,2.61887631439276,2.61803398874989,2.61887631439276,8.04753715877917,8.46508526340912,8.3957266526141,4.23671127448659,1.58854996252578,0.3895347263178,-1.28674243643391,0.0894684504393496,2.58854996252578,2.3895347263178,1.71325756356609,0.0894684504393496,-3.977934119123,-4.97634530313174,-5.95717596832513,0.168931510261243,0.00226648600883931,-0.000311695726437908,-0.00563300671960937,0.447277919222441,0.447213595499958,0.447277919222441 +-3.98539948271547,-4.98155742269802,-5.96276589191392,0.0894412852504598,9.04753715877917,10.4650852634091,11.3957266526141,4.23671127448659,-6.42945595178393,-8.04668372065678,-9.63405513378435,2.61815684287791,2.61803398874989,2.61815684287791,8.07379961411579,8.49196122732276,8.44138045605082,4.23616182581815,1.61061584340277,0.413189423186056,-1.24391840475904,0.0894464730212324,2.61061584340277,2.41318942318606,1.75608159524096,0.0894464730212324,-3.98539948271547,-4.98155742269802,-5.96276589191392,0.168918685143163,0.00746536359246202,0.00521211956627875,0.00558992358879089,0.447222980204592,0.447213595499958,0.447222980204592 +-3.98307590336174,-4.97809636310807,-5.97251788950552,0.0894425099034481,9.07379961411579,10.4919612273228,11.4413804560508,4.23616182581815,-6.45090683278222,-8.06379028642468,-9.63831275513219,2.61805191208454,2.61803398874989,2.61805191208454,8.08690306432521,8.50826475216106,8.48455037536186,4.2360816696264,1.6252163606873,0.431632000488035,-1.20668429667296,0.0894432667848113,2.6252163606873,2.43163200048803,1.79331570332704,0.0894432667848113,-3.98307590336174,-4.97809636310807,-5.97251788950552,0.16891681402435,-0.00232357935372922,-0.00346105958995225,0.00975199759159764,0.447214964709911,0.447213595499958,0.447214964709911 +-3.98060917219834,-4.97603124892954,-5.96894598528206,0.089442688578612,9.08690306432521,10.5082647521611,11.4845503753619,4.2360816696264,-6.44722933816304,-8.05679422895962,-9.6673244657638,2.61803660371128,2.61803398874989,2.61803660371128,8.10229374034516,8.52889207830001,8.50981158699447,4.23606997515077,1.64214045732557,0.453535637379966,-1.17920218617848,0.0894427990060254,2.64214045732557,2.45353563737997,1.82079781382152,0.0894427990060254,-3.98060917219834,-4.97603124892954,-5.96894598528206,0.16891654103266,-0.00246673116339848,-0.00206511417852728,-0.00357190422346019,0.447213795264998,0.447213595499958,0.447213795264998 +-3.97264698206234,-4.97662547774153,-5.93303994824543,0.089442714646982,9.10229374034516,10.5288920783,11.5098115869945,4.23606997515077,-6.44872464535393,-8.0507934610376,-9.69386579549164,2.61803437026724,2.61803398874989,2.61803437026724,8.1167623664744,8.55322808297337,8.51867250341461,4.23606826895307,1.66153128512723,0.477504388450424,-1.14814817146054,0.0894427307581226,2.66153128512723,2.47750438845042,1.85185182853946,0.0894427307581226,-3.97264698206234,-4.97662547774153,-5.93303994824543,0.168916501203728,-0.00796219013599741,0.00059422881199168,-0.0359060370366332,0.447213624645284,0.447213595499958,0.447213624645284 +-3.97237455481045,-4.97589117126113,-5.92600155168582,0.0894427184503062,9.1167623664744,10.5532280829734,11.5186725034146,4.23606826895307,-6.4281504906614,-8.05308347874489,-9.60689901968018,2.61803404441252,2.61803398874989,2.61803404441252,8.1439468262429,8.57614877886879,8.58128230474595,4.23606802002225,1.68888430306489,0.50087891070889,-1.08118811970596,0.0894427208008899,2.68888430306489,2.50087891070889,1.91881188029404,0.0894427208008899,-3.97237455481045,-4.97589117126113,-5.92600155168582,0.168916495392765,-0.000272427251890342,-0.000734306480403603,-0.00703839655960185,0.447213599752204,0.447213595499958,0.447213599752204 +-3.9706512237467,-4.9788864980147,-5.92744943246226,0.0894427190052038,9.1439468262429,10.5761487788688,11.5812823047459,4.23606802002225,-6.42916040905222,-8.04816571266747,-9.5870240953613,2.61803399687096,2.61803398874989,2.61803399687096,8.17050716670587,8.60210882134878,8.65617555148929,4.23606798370373,1.71650974825443,0.524987739447759,-1.00718967139179,0.0894427193481493,2.71650974825443,2.52498773944776,1.99281032860821,0.0894427193481493,-3.9706512237467,-4.9788864980147,-5.92744943246226,0.168916494544957,-0.00172333106375334,0.00299532675356523,0.00144788077643495,0.447213596120352,0.447213595499958,0.447213596120352 +-3.97671306114543,-4.97952902541683,-5.97258283603022,0.0894427190861622,9.17050716670587,10.6021088213488,11.6561755514893,4.23606798370373,-6.4185868047994,-8.05536505251358,-9.54568125177538,2.61803398993474,2.61803398874989,2.61803398993474,8.20360236048869,8.6236194271073,8.75662009046933,4.23606797840493,1.74585852450774,0.546101241433062,-0.934639103854046,0.0894427191361973,2.74585852450774,2.54610124143306,2.06536089614595,0.0894427191361973,-3.97671306114543,-4.97952902541683,-5.97258283603022,0.168916494421264,0.00606183739873475,0.000642527402131118,0.0451334035679566,0.447213595590472,0.447213595499958,0.447213595590472 +-3.977213240913,-4.98010392303576,-5.95235699056282,0.0894427190979739,9.20360236048869,10.6236194271073,11.7566200904693,4.23606797840493,-6.43395671735883,-8.05647231347213,-9.68406787582099,2.61803398892276,2.61803398874989,2.61803398892276,8.22719842685297,8.64444570795902,8.77153699360672,4.23606797763185,1.7691454633623,0.566572216016235,-0.907221939884263,0.0894427191052739,2.7691454633623,2.56657221601623,2.09277806011574,0.0894427191052739,-3.977213240913,-4.98010392303576,-5.95235699056282,0.168916494403217,0.000500179767566303,0.00057489761893005,-0.0202258454674002,0.447213595513164,0.447213595499958,0.447213595513164 +-3.98568633564444,-4.98611401498871,-5.98111226985563,0.0894427190996972,9.22719842685297,10.644445707959,11.7715369936067,4.23606797763185,-6.42679310967223,-8.05196732302559,-9.60236064476099,2.61803398877512,2.61803398874989,2.61803398877512,8.25522184638825,8.6680562260257,8.83695174287474,4.23606797751906,1.7919322224493,0.586468292980479,-0.859578930447077,0.0894427191007623,2.7919322224493,2.58646829298048,2.14042106955292,0.0894427191007623,-3.98568633564444,-4.98611401498871,-5.98111226985563,0.168916494400584,0.00847309473143621,0.00601009195295394,0.0287552792928122,0.447213595501885,0.447213595499958,0.447213595501885 +-3.98671584439712,-4.98126404171003,-6.01302724681244,0.0894427190999487,9.25522184638825,10.6680562260257,11.8369517428747,4.23606797751906,-6.4479464508307,-8.07255192131262,-9.64572796622063,2.61803398875357,2.61803398874989,2.61803398875357,8.27017178213217,8.67894476270624,8.87556401350981,4.2360679775026,1.80624588680487,0.600354277991768,-0.840691200302706,0.089442719100104,2.80624588680487,2.60035427799177,2.15930879969729,0.089442719100104,-3.98671584439712,-4.98126404171003,-6.01302724681244,0.1689164944002,0.00102950875268728,-0.00484997327867985,0.0319149769568117,0.447213595500239,0.447213595499958,0.447213595500239 +-3.98049580571411,-4.97894600344983,-5.99903960152489,0.0894427190999853,9.27017178213217,10.6789447627062,11.8755640135098,4.2360679775026,-6.45686177840743,-8.06217256468471,-9.74327010591251,2.61803398875043,2.61803398874989,2.61803398875043,8.27961174241578,8.69624809456418,8.85389192648433,4.2360679775002,1.81953004240774,0.619090236281735,-0.853718447115146,0.089442719100008,2.81953004240774,2.61909023628174,2.14628155288485,0.089442719100008,-3.98049580571411,-4.97894600344983,-5.99903960152489,0.168916494400144,-0.00622003868300814,-0.00231803826020329,-0.0139876452875473,0.447213595499999,0.447213595499958,0.447213595499999 +-3.97841606397952,-4.97896000579366,-5.96356694066528,0.0894427190999906,9.27961174241578,10.6962480945642,11.8538919264843,4.2360679775002,-6.44265724745674,-8.05608985938844,-9.74212263598399,2.61803398874997,2.61803398874989,2.61803398874997,8.2978305856216,8.71731074503876,8.8329290148764,4.23606797749985,1.83903423669363,0.640144232831906,-0.852758048640037,0.089442719099994,2.83903423669363,2.64014423283191,2.14724195135996,0.089442719099994,-3.97841606397952,-4.97896000579366,-5.96356694066528,0.168916494400136,-0.00207974173459599,1.40023438287847e-05,-0.0354726608596148,0.447213595499964,0.447213595499958,0.447213595499964 +-3.97453212788515,-4.97652180686332,-5.95112262053925,0.0894427190999914,9.2978305856216,10.7173107450388,11.8329290148764,4.23606797749985,-6.44109634900185,-8.05856471693085,-9.66169832430775,2.61803398874991,2.61803398874989,2.61803398874991,8.31701411712558,8.73684384943482,8.86167106140629,4.2360679774998,1.86061817271411,0.661184227038246,-0.816324989305315,0.089442719099992,2.86061817271411,2.66118422703825,2.18367501069469,0.089442719099992,-3.97453212788515,-4.97652180686332,-5.95112262053925,0.168916494400135,-0.00388393609437031,-0.00243819893033669,-0.0124443201260303,0.447213595499959,0.447213595499958,0.447213595499959 +-3.96474917198365,-4.97494245530983,-5.9184044676037,0.0894427190999916,9.31701411712558,10.7368438494348,11.8616710614063,4.2360679774998,-6.44071102819813,-8.05376078081339,-9.66183682418641,2.6180339887499,2.61803398874989,2.6180339887499,8.33643578998286,8.75934594963125,8.89032751030375,4.23606797749979,1.88608604482896,0.684662420174925,-0.767447609844563,0.0894427190999916,2.88608604482896,2.68466242017493,2.23255239015544,0.0894427190999916,-3.96474917198365,-4.97494245530983,-5.9184044676037,0.168916494400135,-0.00978295590150309,-0.00157935155349399,-0.0327181529355476,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96944048471228,-4.97865121171358,-5.91803154736494,0.0894427190999916,9.33643578998286,10.7593459496313,11.8903275103038,4.23606797749979,-6.4104076044089,-8.04591722836241,-9.57655250799077,2.61803398874989,2.61803398874989,2.61803398874989,8.37458600871736,8.78669563183493,8.9716925653174,4.23606797749979,1.92133687284532,0.709719964865098,-0.685852077448263,0.0894427190999916,2.92133687284532,2.7097199648651,2.31414792255174,0.0894427190999916,-3.96944048471228,-4.97865121171358,-5.91803154736494,0.168916494400135,0.00469131272863751,0.00370875640374962,-0.000372920238757915,0.447213595499958,0.447213595499958,0.447213595499958 +-3.9690242631076,-4.97722146436478,-5.95236037696483,0.0894427190999916,9.37458600871736,10.7866956318349,11.9716925653174,4.23606797749979,-6.42310584218902,-8.05705662603221,-9.54124736053072,2.61803398874989,2.61803398874989,2.61803398874989,8.40488828490653,8.80716078766448,9.0748774014392,4.23606797749979,1.95189638813303,0.731068753151519,-0.603883624813205,0.0894427190999916,2.95189638813303,2.73106875315152,2.39611637518679,0.0894427190999916,-3.9690242631076,-4.97722146436478,-5.95236037696483,0.168916494400135,-0.000416221604687985,-0.00142974734879694,0.0343288295998901,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96985016345019,-4.97527530547395,-5.93244219159877,0.0894427190999916,9.40488828490653,10.8071607876645,12.0748774014392,4.23606797749979,-6.4211902595385,-8.05525965776857,-9.6510395885833,2.61803398874989,2.61803398874989,2.61803398874989,8.43637445628198,8.82873653095766,9.11020690892392,4.23606797749979,1.98287212502544,0.753847288786737,-0.556244001778033,0.0894427190999916,2.98287212502544,2.75384728878674,2.44375599822197,0.0894427190999916,-3.96985016345019,-4.97527530547395,-5.93244219159877,0.168916494400135,0.000825900342591477,-0.00194615889082879,-0.0199181853660657,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96347428593841,-4.97631323175364,-5.90155630497589,0.0894427190999916,9.43637445628198,10.8287365309577,12.1102069089239,4.23606797749979,-6.42972837221851,-8.04912662136518,-9.6297789889236,2.61803398874989,2.61803398874989,2.61803398874989,8.4625837838214,8.85410269920237,9.15867618961954,4.23606797749979,2.01302196157525,0.778571983312787,-0.4886861933768,0.0894427190999916,3.01302196157525,2.77857198331279,2.5113138066232,0.0894427190999916,-3.96347428593841,-4.97631323175364,-5.90155630497589,0.168916494400135,-0.00637587751177917,0.00103792627968931,-0.0308858866228772,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96515059777662,-4.96490352039712,-5.93061271013957,0.0894427190999916,9.4625837838214,10.8541026992024,12.1586761896195,4.23606797749979,-6.41135979634635,-8.06325365899974,-9.51986228280855,2.61803398874989,2.61803398874989,2.61803398874989,8.50014551557475,8.87073787802857,9.27507773062569,4.23606797749979,2.04954767563684,0.802258751559147,-0.39024249835269,0.0894427190999916,3.04954767563684,2.80225875155915,2.60975750164731,0.0894427190999916,-3.96515059777662,-4.96490352039712,-5.93061271013957,0.168916494400135,0.00167631183820972,-0.0114097113565176,0.0290564051636796,0.447213595499958,0.447213595499958,0.447213595499958 +-3.97027383191863,-4.96586104255291,-5.93719670089552,0.0894427190999916,9.50014551557475,10.8707378780286,12.2750777306257,4.23606797749979,-6.41062520357252,-8.03242512471076,-9.589348948362,2.61803398874989,2.61803398874989,2.61803398874989,8.53816125063022,8.90642613886871,9.34853415055492,4.23606797749979,2.08439707786022,0.837355231162023,-0.320855208492258,0.0894427190999916,3.08439707786022,2.83735523116202,2.67914479150774,0.0894427190999916,-3.97027383191863,-4.96586104255291,-5.93719670089552,0.168916494400135,0.00512323414200814,0.000957522155789705,0.00658399075594889,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96937324381482,-4.96514340375479,-5.92387074880332,0.0894427190999916,9.53816125063022,10.9064261388687,12.3485341505549,4.23606797749979,-6.42493859279243,-8.03564958905773,-9.61991201203488,2.61803398874989,2.61803398874989,2.61803398874989,8.56733082465358,8.94012157114691,9.40310155833397,4.23606797749979,2.1141232459416,0.871494188609107,-0.258051909387776,0.0894427190999916,3.1141232459416,2.87149418860911,2.74194809061222,0.0894427190999916,-3.96937324381482,-4.96514340375479,-5.92387074880332,0.168916494400135,-0.000900588103805392,-0.000717638798124569,-0.013325952092195,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96725563288058,-4.95814249691649,-5.96466457077402,0.0894427190999916,9.56733082465358,10.9401215711469,12.403101558334,4.23606797749979,-6.42469843346105,-8.04077169313088,-9.54423039455438,2.61803398874989,2.61803398874989,2.61803398874989,8.59664882530645,8.97065136901399,9.50444277803954,4.23606797749979,2.14475000212678,0.90635078485432,-0.181922658191098,0.0894427190999916,3.14475000212678,2.90635078485432,2.8180773418089,0.0894427190999916,-3.96725563288058,-4.95814249691649,-5.96466457077402,0.168916494400135,-0.00211761093424012,-0.00700090683829408,0.0407938219706924,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96065282812752,-4.9591685359336,-5.93591355925419,0.0894427190999916,9.59664882530645,10.970651369014,12.5044427780395,4.23606797749979,-6.42575726081331,-8.02141704205905,-9.67978101852448,2.61803398874989,2.61803398874989,2.61803398874989,8.6253124346674,9.01314299908385,9.52200910493534,4.23606797749979,2.17749436924619,0.948208287937828,-0.146587228965114,0.0894427190999916,3.17749436924619,2.94820828793783,2.85341277103489,0.0894427190999916,-3.96065282812752,-4.9591685359336,-5.93591355925419,0.168916494400135,-0.00660280475305737,0.00102603901710918,-0.0287510115198209,0.447213595499958,0.447213595499958,0.447213595499958 +-3.95654168169465,-4.95848393089273,-5.92401067628047,0.0894427190999916,9.6253124346674,11.0131429990838,12.5220091049353,4.23606797749979,-6.4125820399816,-8.02478785212049,-9.61641277612837,2.61803398874989,2.61803398874989,2.61803398874989,8.66211877831163,9.05355135396612,9.57873915943927,4.23606797749979,2.21684154111867,0.989039752004224,-0.0825007882193063,0.0894427190999916,3.21684154111867,2.98903975200422,2.91749921178069,0.0894427190999916,-3.95654168169465,-4.95848393089273,-5.92401067628047,0.168916494400135,-0.00411114643287044,-0.000684605040871327,-0.0119028829737243,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96458355271204,-4.96210432769367,-5.92955854502438,0.0894427190999916,9.66211877831163,11.0535513539661,12.5787391594393,4.23606797749979,-6.39377704787023,-8.01937513605368,-9.57970275519514,2.61803398874989,2.61803398874989,2.61803398874989,8.71054724623887,9.09730495134913,9.65815725460766,4.23606797749979,2.26029985942402,1.03055582111149,-0.0065114644997788,0.0894427190999916,3.26029985942402,3.03055582111149,2.99348853550022,0.0894427190999916,-3.96458355271204,-4.96210432769367,-5.92955854502438,0.168916494400135,0.00804187101738385,0.00362039680094293,0.00554786874391055,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96632414900375,-4.95774243058147,-5.95909289572389,0.0894427190999916,9.71054724623887,11.0973049513491,12.6581572546077,4.23606797749979,-6.41309034323517,-8.03321535504352,-9.56469291343232,2.61803398874989,2.61803398874989,2.61803398874989,8.7470394411958,9.13250482298468,9.74685194215123,4.23606797749979,2.29571630671198,1.06845149341782,0.0639299904758399,0.0894427190999916,3.29571630671198,3.06845149341782,3.06392999047584,0.0894427190999916,-3.96632414900375,-4.95774243058147,-5.95909289572389,0.168916494400135,0.00174059629171544,-0.00436189711220747,0.0295343506995065,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96016529648542,-4.95936477082354,-5.93692032072704,0.0894427190999916,9.7470394411958,11.1325048229847,12.7468519421512,4.23606797749979,-6.4238061360059,-8.02017341990626,-9.66418742239613,2.61803398874989,2.61803398874989,2.61803398874989,8.77690891200402,9.17576505381413,9.77405564146119,4.23606797749979,2.32939215770822,1.11070906283635,0.10483709475195,0.0894427190999916,3.32939215770822,3.11070906283635,3.10483709475195,0.0894427190999916,-3.96016529648542,-4.95936477082354,-5.93692032072704,0.168916494400135,-0.00615885251832922,0.00162234024206854,-0.0221725749968484,0.447213595499958,0.447213595499958,0.447213595499958 +-3.95643203830492,-4.95774360488061,-5.9290477016529,0.0894427190999916,9.77690891200402,11.1757650538141,12.7740556414612,4.23606797749979,-6.41141530896173,-8.02604192774424,-9.61401148651042,2.61803398874989,2.61803398874989,2.61803398874989,8.81443633507427,9.21539834733646,9.83226977456585,4.23606797749979,2.3692268612228,1.15134429201282,0.16791677402491,0.0894427190999916,3.3692268612228,3.15134429201282,3.16791677402491,0.0894427190999916,-3.95643203830492,-4.95774360488061,-5.9290477016529,0.168916494400135,-0.0037332581805054,-0.00162116594292559,-0.00787261907414,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96957954536147,-4.95830383715382,-5.96237070035026,0.0894427190999916,9.81443633507427,11.2153983473365,12.8322697745658,4.23606797749979,-6.38849400509983,-8.02123742793104,-9.56007770349648,2.61803398874989,2.61803398874989,2.61803398874989,8.86612990299763,9.25800098504229,9.92381681871498,4.23606797749979,2.41279482291788,1.19360068713221,0.23886907237201,0.0894427190999916,3.41279482291788,3.19360068713221,3.23886907237201,0.0894427190999916,-3.96957954536147,-4.95830383715382,-5.96237070035026,0.168916494400135,0.0131475070565525,0.000560232273212483,0.033322998697356,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96126161912547,-4.96562585048078,-5.91237836895247,0.0894427190999916,9.86612990299763,11.2580009850423,12.923816818715,4.23606797749979,-6.43123255167722,-8.01538212173695,-9.69731077809101,2.61803398874989,2.61803398874989,2.61803398874989,8.89140959650639,9.30422240099061,9.93054915838405,4.23606797749979,2.44321527755641,1.23529684997839,0.276498372021754,0.0894427190999916,3.44321527755641,3.23529684997839,3.27649837202175,0.0894427190999916,-3.96126161912547,-4.96562585048078,-5.91237836895247,0.168916494400135,-0.00831792623600265,0.00732201332695958,-0.049992331397784,0.447213595499958,0.447213595499958,0.447213595499958 +-3.98120778329441,-4.96904904921221,-5.99813219585288,0.0894427190999916,9.89140959650639,11.3042224009906,12.930549158384,4.23606797749979,-6.38950977390651,-8.03112820276158,-9.48067532841436,2.61803398874989,2.61803398874989,2.61803398874989,8.94247538478251,9.3407122036761,10.0711695691214,4.23606797749979,2.48195365843094,1.26967099949761,0.364120003069281,0.0894427190999916,3.48195365843094,3.26967099949761,3.36412000306928,0.0894427190999916,-3.98120778329441,-4.96904904921221,-5.99813219585288,0.168916494400135,0.019946164168937,0.00342319873142474,0.0857538269004077,0.447213595499958,0.447213595499958,0.447213595499958 +-3.98528960904638,-4.97355281939477,-6.02805671176944,0.0894427190999916,9.94247538478251,11.3407122036761,13.0711695691214,4.23606797749979,-6.437647683894,-8.03558648320813,-9.67525724598844,2.61803398874989,2.61803398874989,2.61803398874989,8.96379030853898,9.37444663751424,10.0915317412018,4.23606797749979,2.50074587513653,1.3006219502854,0.365987807216401,0.0894427190999916,3.50074587513653,3.3006219502854,3.3659878072164,0.0894427190999916,-3.98528960904638,-4.97355281939477,-6.02805671176944,0.168916494400135,0.00408182575197483,0.00450377018256541,0.0299245159165611,0.447213595499958,0.447213595499958,0.447213595499958 +-3.99540067421241,-4.98083114855851,-6.087557331961,0.0894427190999916,9.96379030853898,11.3744466375142,13.0915317412018,4.23606797749979,-6.43822297728279,-8.04009917745987,-9.69410002556333,2.61803398874989,2.61803398874989,2.61803398874989,8.98474968142767,9.40539207292396,10.1002484350625,4.23606797749979,2.51545626609015,1.32706913089063,0.337931095446962,0.0894427190999916,3.51545626609015,3.32706913089063,3.33793109544696,0.0894427190999916,-3.99540067421241,-4.98083114855851,-6.087557331961,0.168916494400135,0.0101110651660323,0.00727832916373538,0.0595006201915541,0.447213595499958,0.447213595499958,0.447213595499958 +-3.98928768233824,-4.98225467331124,-6.05489627451962,0.0894427190999916,9.98474968142767,11.405392072924,13.1002484350625,4.23606797749979,-6.47080708142411,-8.05773056583911,-9.8825357290179,2.61803398874989,2.61803398874989,2.61803398874989,8.98557097046406,9.42544071104647,9.9925054594942,4.23606797749979,2.52005559187774,1.34623798233212,0.250373763485964,0.0894427190999916,3.52005559187774,3.34623798233212,3.25037376348596,0.0894427190999916,-3.98928768233824,-4.98225467331124,-6.05489627451962,0.168916494400135,-0.00611299187417606,0.00142352475273179,-0.0326610574413814,0.447213595499958,0.447213595499958,0.447213595499958 +-3.99550467850948,-4.97855527959892,-6.06680680079239,0.0894427190999916,9.98557097046406,11.4254407110465,12.9925054594942,4.23606797749979,-6.44858606475332,-8.06515679573791,-9.78511744425508,2.61803398874989,2.61803398874989,2.61803398874989,9.00012560306758,9.44089968668325,9.94497029503506,4.23606797749979,2.5307679095395,1.36398330902088,0.19547748896635,0.0894427190999916,3.5307679095395,3.36398330902088,3.19547748896635,0.0894427190999916,-3.99550467850948,-4.97855527959892,-6.06680680079239,0.168916494400135,0.00621699617123956,-0.00369939371231934,0.0119105262727765,0.447213595499958,0.447213595499958,0.447213595499958 +-3.9875291755076,-4.96819494498041,-6.07788467026499,0.0894427190999916,10.0001256030676,11.4408996866832,12.9449702950351,4.23606797749979,-6.47283787503944,-8.06583199187979,-9.80522173738851,2.61803398874989,2.61803398874989,2.61803398874989,8.99969179262556,9.45594136815527,9.88500999409966,4.23606797749979,2.53526323103002,1.38542802942196,0.128670688173957,0.0894427190999916,3.53526323103002,3.38542802942196,3.12867068817396,0.0894427190999916,-3.9875291755076,-4.96819494498041,-6.07788467026499,0.168916494400135,-0.00797550300188143,-0.0103603346185061,0.0110778694725972,0.447213595499958,0.447213595499958,0.447213595499958 +-3.97954118319811,-4.97889669663546,-5.98587884616617,0.0894427190999916,9.99969179262556,11.4559413681553,12.8850099940997,4.23606797749979,-6.45994572941263,-8.02800653205868,-9.92622980028952,2.61803398874989,2.61803398874989,2.61803398874989,9.00722576636882,9.49436046943684,9.75026259737866,4.23606797749979,2.54773405552242,1.41723308444155,0.0507860179089654,0.0894427190999916,3.54773405552242,3.41723308444155,3.05078601790897,0.0894427190999916,-3.97954118319811,-4.97889669663546,-5.98587884616617,0.168916494400135,-0.00798799230948908,0.0107017516550476,-0.0920058240988216,0.447213595499958,0.447213595499958,0.447213595499958 +-3.98149603391151,-4.98029623206663,-5.97911569442911,0.0894427190999916,10.0072257663688,11.4943604694368,12.7502625973787,4.23606797749979,-6.43707804333111,-8.05462454619958,-9.69211857737292,2.61803398874989,2.61803398874989,2.61803398874989,9.02889274735453,9.5163287332663,9.76020389356792,4.23606797749979,2.56819287232431,1.43833638780609,0.0649071717427976,0.0894427190999916,3.56819287232431,3.43833638780609,3.0649071717428,0.0894427190999916,-3.98149603391151,-4.98029623206663,-5.97911569442911,0.168916494400135,0.00195485071339781,0.00139953543117012,-0.00676315173705447,0.447213595499958,0.447213595499958,0.447213595499958 +-3.98389025684876,-4.97949910686102,-5.98813191319445,0.0894427190999916,10.0288927473545,11.5163287332663,12.7602038935679,4.23606797749979,-6.43980168600447,-8.05908570273246,-9.6653961974889,2.61803398874989,2.61803398874989,2.61803398874989,9.04887642459489,9.53553985072931,9.78666052878579,4.23606797749979,2.58669683841281,1.45804015573945,0.0857914773136859,0.0894427190999916,3.58669683841281,3.45804015573945,3.08579147731369,0.0894427190999916,-3.98389025684876,-4.97949910686102,-5.98813191319445,0.168916494400135,0.00239422293724918,-0.000797125205613913,0.00901621876533303,0.447213595499958,0.447213595499958,0.447213595499958 +-3.98810966302617,-4.98163035309605,-5.99169259935089,0.0894427190999916,10.0488764245949,11.5355398507293,12.7866605287858,4.23606797749979,-6.44185043685342,-8.05486755561584,-9.6854402785101,2.61803398874989,2.61803398874989,2.61803398874989,9.06759390417612,9.55735792647993,9.8007292406593,4.23606797749979,2.60280658156405,1.47854104887844,0.0976595641192368,0.0894427190999916,3.60280658156405,3.47854104887844,3.09765956411924,0.0894427190999916,-3.98810966302617,-4.98163035309605,-5.99169259935089,0.168916494400135,0.0042194061774166,0.00213124623503054,0.00356068615644781,0.447213595499958,0.447213595499958,0.447213595499958 +-3.98118337693634,-4.9777549960983,-5.98470354181292,0.0894427190999916,10.0675939041761,11.5573579264799,12.8007292406593,4.23606797749979,-6.45982327172807,-8.0643225876953,-9.70175133342893,2.61803398874989,2.61803398874989,2.61803398874989,9.07520356093062,9.57333247104074,9.80471716620061,4.23606797749979,2.61469691853788,1.49691069578239,0.105966964768344,0.0894427190999916,3.61469691853788,3.49691069578239,3.10596696476834,0.0894427190999916,-3.98118337693634,-4.9777549960983,-5.98470354181292,0.168916494400135,-0.00692628608983645,-0.00387535699775015,-0.00698905753797517,0.447213595499958,0.447213595499958,0.447213595499958 +-3.97005808598895,-4.96966047160052,-5.96228471605926,0.0894427190999916,10.0752035609306,11.5733324710407,12.8047171662006,4.23606797749979,-6.45281531027647,-8.06227129585443,-9.70587256899885,2.61803398874989,2.61803398874989,2.61803398874989,9.08714437605407,9.59057478368004,9.80615802808406,4.23606797749979,2.63351354160154,1.51915569968409,0.121263422955426,0.0894427190999916,3.63351354160154,3.51915569968409,3.12126342295543,0.0894427190999916,-3.97005808598895,-4.96966047160052,-5.96228471605926,0.168916494400135,-0.0111252909473887,-0.00809452449778389,-0.022418825753664,0.447213595499958,0.447213595499958,0.447213595499958 +-3.95788303343632,-4.96386312489812,-5.92019360600616,0.0894427190999916,10.0871443760541,11.59057478368,12.8061580280841,4.23606797749979,-6.4358639729941,-8.04687690229887,-9.68927043124098,2.61803398874989,2.61803398874989,2.61803398874989,9.10956169377278,9.61733135477287,9.81785957538778,4.23606797749979,2.6634554556126,1.54949522808357,0.158978706896169,0.0894427190999916,3.6634554556126,3.54949522808357,3.15897870689617,0.0894427190999916,-3.95788303343632,-4.96386312489812,-5.92019360600616,0.168916494400135,-0.0121750525526303,-0.00579734670240075,-0.0420911100530917,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96479091792983,-4.97133785035308,-5.91141307943964,0.0894427190999916,10.1095616937728,11.6173313547729,12.8178595753878,4.23606797749979,-6.39708138710299,-8.02422452613245,-9.5878550010643,2.61803398874989,2.61803398874989,2.61803398874989,9.15594796774381,9.6580878642625,9.89223930552439,4.23606797749979,2.70557242217628,1.58563210318545,0.238785100890006,0.0894427190999916,3.70557242217628,3.58563210318545,3.23878510089001,0.0894427190999916,-3.96479091792983,-4.97133785035308,-5.91141307943964,0.168916494400135,0.00690788449350927,0.00747472545496476,-0.00878052656652323,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96988240085397,-4.96999181443059,-5.93351192718139,0.0894427190999916,10.1559479677438,11.6580878642625,12.8922393055244,4.23606797749979,-6.41007498057321,-8.04513964735262,-9.54276843633227,2.61803398874989,2.61803398874989,2.61803398874989,9.19430375931424,9.68591811795924,9.99448406510135,4.23606797749979,2.74078150424646,1.61429425283237,0.327372021450364,0.0894427190999916,3.74078150424646,3.61429425283237,3.32737202145036,0.0894427190999916,-3.96988240085397,-4.96999181443059,-5.93351192718139,0.168916494400135,0.00509148292414047,-0.00134603592249413,0.0220988477417485,0.447213595499958,0.447213595499958,0.447213595499958 +-3.9712348723454,-4.97304662357591,-5.90661024329331,0.0894427190999916,10.1943037593142,11.6859181179592,12.9944840651014,4.23606797749979,-6.42205218443032,-8.03856087041212,-9.62752565472046,2.61803398874989,2.61803398874989,2.61803398874989,9.2252572318108,9.71781427940961,10.0443459829225,4.23606797749979,2.77089910339249,1.64430243840179,0.393860094268973,0.0894427190999916,3.77089910339249,3.64430243840179,3.39386009426897,0.0894427190999916,-3.9712348723454,-4.97304662357591,-5.90661024329331,0.168916494400135,0.00135247149142957,0.00305480914532804,-0.0269016838880761,0.447213595499958,0.447213595499958,0.447213595499958 +-3.97063284712755,-4.96885976229035,-5.93255819497944,0.0894427190999916,10.2252572318108,11.7178142794096,13.0443459829225,4.23606797749979,-6.42619502598154,-8.0507453258693,-9.53114818026074,2.61803398874989,2.61803398874989,2.61803398874989,9.25365028741869,9.74218003325303,10.1537724557097,4.23606797749979,2.7996642310471,1.67125581482587,0.487249850975656,0.0894427190999916,3.7996642310471,3.67125581482587,3.48724985097566,0.0894427190999916,-3.97063284712755,-4.96885976229035,-5.93255819497944,0.168916494400135,-0.000602025217842678,-0.00418686128556619,0.0259479516861292,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96856918275918,-4.96491577415271,-5.93661364385595,0.0894427190999916,10.2536502874187,11.742180033253,13.1537724557097,4.23606797749979,-6.42668256786752,-8.04372796885514,-9.59502535083696,2.61803398874989,2.61803398874989,2.61803398874989,9.28174202557011,9.7708827522424,10.2237206659756,4.23606797749979,2.82903138391954,1.70239605253553,0.55469165599621,0.0894427190999916,3.82903138391954,3.70239605253553,3.55469165599621,0.0894427190999916,-3.96856918275918,-4.96491577415271,-5.93661364385595,0.168916494400135,-0.00206366436837545,-0.00394398813763868,0.00405544887650465,0.447213595499958,0.447213595499958,0.447213595499958 +-3.96827857658108,-4.96842334678467,-5.95063914348477,0.0894427190999915,10.2817420255701,11.7708827522424,13.2237206659756,4.23606797749979,-6.42157043058784,-8.02989490122762,-9.59161715420646,2.61803398874989,2.61803398874989,2.61803398874989,9.31299323831552,9.80813477719425,10.2957752575994,4.23606797749979,2.86046220116036,1.73748027838282,0.618078012140263,0.0894427190999916,3.86046220116036,3.73748027838282,3.61807801214026,0.0894427190999916,-3.96827857658108,-4.96842334678467,-5.95063914348477,0.168916494400135,-0.000290606178101675,0.00350757263195632,0.014025499628825,0.447213595499958,0.447213595499958,0.447213595499958 +-3.97478371434401,-4.96836563787582,-5.99246465661889,0.0894427190999914,10.3129932383155,11.8081347771942,13.2957752575994,4.23606797749979,-6.4143044759733,-8.03913555450494,-9.58651087580981,2.61803398874989,2.61803398874989,2.61803398874989,9.34873505797344,9.83967576434246,10.3709857028284,4.23606797749979,2.89218362457929,1.76905693159815,0.66743886865549,0.0894427190999916,3.89218362457929,3.76905693159815,3.66743886865549,0.0894427190999916,-3.97478371434401,-4.96836563787582,-5.99246465661889,0.168916494400135,0.00650513776293059,-5.77089088447065e-05,0.0418255131341156,0.447213595499958,0.447213595499958,0.447213595499958 +-3.97268927886305,-4.97294137677325,-5.96038865046282,0.0894427190999899,10.3487350579734,11.8396757643425,13.3709857028284,4.23606797749979,-6.43342958321911,-8.0344087317227,-9.72808749694789,2.61803398874989,2.61803398874989,2.61803398874989,9.37265691131496,9.8741380886289,10.3586969841817,4.23606797749979,2.91739991023528,1.80069129372233,0.6749742120366,0.0894427190999922,3.91739991023528,3.80069129372233,3.6749742120366,0.0894427190999922,-3.97268927886305,-4.97294137677325,-5.96038865046282,0.168916494400137,-0.00209443548095584,0.00457573889743118,-0.0320760061560645,0.447213595499959,0.447213595499959,0.447213595499959 +-3.97302574194154,-4.97756208818457,-5.92883274068962,0.0894427190999803,10.372656911315,11.8741380886289,13.3586969841817,4.23606797749979,-6.42760981686424,-8.0417674602685,-9.67566733238117,2.61803398874989,2.61803398874989,2.61803398874989,9.40017557807037,9.90405246856005,10.3788057089332,4.23606797749979,2.94471063137223,1.82774991694908,0.714585561573777,0.0894427190999959,3.94471063137223,3.82774991694908,3.71458556157378,0.0894427190999959,-3.97302574194154,-4.97756208818457,-5.92883274068962,0.168916494400152,0.000336463078489246,0.00462071141131894,-0.0315559097732058,0.447213595499965,0.447213595499965,0.447213595499965 +-3.96677578402802,-4.96964396820248,-5.95812751839906,0.0894427190999141,10.4001755780704,11.90405246856,13.3788057089332,4.23606797749979,-6.4347406465532,-8.06178275977763,-9.56375811033956,2.61803398874989,2.61803398874989,2.61803398874989,9.42328714971002,9.92159671309955,10.4680781365608,4.23606797749979,2.97168488943069,1.85018782876451,0.785752820884156,0.0894427191000212,3.97168488943069,3.85018782876451,3.78575282088416,0.0894427191000212,-3.96677578402802,-4.96964396820248,-5.95812751839906,0.168916494400253,-0.00624995791351987,-0.0079181199820915,0.0292947777094395,0.447213595500007,0.447213595500007,0.447213595500007 +-3.9793206728337,-4.97377592076348,-6.00114351464328,0.0894427190994602,10.42328714971,11.9215967130995,13.4680781365608,4.23606797749979,-6.40583315550167,-8.03692089997651,-9.59743683783153,2.61803398874989,2.61803398874989,2.61803398874989,9.464264533349,9.95450643201967,10.5365359659006,4.23606797749979,3.00490910540267,1.88054386056203,0.827625302485096,0.0894427191001945,4.00490910540267,3.88054386056203,3.8276253024851,0.0894427191001945,-3.9793206728337,-4.97377592076348,-6.00114351464328,0.168916494400946,0.012544888805682,0.0041319525610004,0.0430159962442181,0.447213595500296,0.447213595500296,0.447213595500296 +-3.98565734989858,-4.97260586799301,-6.03936560194889,0.0894427190963499,10.464264533349,11.9545064320197,13.5365359659006,4.23606797749979,-6.43233942371515,-8.04890854499158,-9.67183209075321,2.61803398874989,2.61803398874989,2.61803398874989,9.48886014231712,9.98000737887541,10.5590150003332,4.23606797749979,3.02558843256897,1.90676793979856,0.82648178784182,0.0894427191013827,4.02558843256897,3.90676793979856,3.82648178784182,0.0894427191013827,-3.98565734989858,-4.97260586799301,-6.03936560194889,0.168916494405699,0.00633667706487942,-0.00117005277046832,0.0382220873056116,0.447213595502276,0.447213595502276,0.447213595502276 +-3.97872573058657,-4.96811935917653,-6.06292683845529,0.0894427190750307,10.4888601423171,11.9800073788754,13.5590150003332,4.23606797749979,-6.45586067895875,-8.05033181588634,-9.74833757793387,2.61803398874989,2.61803398874989,2.61803398874989,9.49891881608664,10.004628695943,10.5342110433622,4.23606797749979,3.03993108267039,1.93416207180555,0.787116185892929,0.0894427191095258,4.03993108267039,3.93416207180555,3.78711618589293,0.0894427191095258,-3.97872573058657,-4.96811935917653,-6.06292683845529,0.168916494438271,-0.00693161931201529,-0.00448650881647687,0.0235612365064019,0.447213595515848,0.447213595515848,0.447213595515848 +-3.97999551701945,-4.9710459392467,-6.04059632980775,0.0894427189289073,10.4989188160866,12.004628695943,13.5342110433622,4.23606797749979,-6.43644367756994,-8.03565940324381,-9.83235220457215,2.61803398874989,2.61803398874989,2.61803398874989,9.52097785667405,10.0383180627206,10.4574831915767,4.23606797749979,3.06120535208382,1.96604271262901,0.724189347437637,0.0894427191653399,4.06120535208382,3.96604271262901,3.72418934743764,0.0894427191653399,-3.97999551701945,-4.9710459392467,-6.04059632980775,0.168916494661528,0.00126978643288319,0.00292658007017005,-0.0223305086475436,0.447213595608872,0.447213595608872,0.447213595608872 +-3.97346067622836,-4.98111335879234,-6.00185160450253,0.0894427179273626,10.5209778566741,12.0383180627206,13.4574831915767,4.23606797749979,-6.44630286240077,-8.03325386979268,-9.81263489925202,2.61803398874989,2.61803398874989,2.61803398874989,9.53694358593463,10.0734941309321,10.3929413046455,4.23606797749979,3.08120983506437,1.99499677338231,0.683593017629889,0.0894427195478961,4.08120983506437,3.99499677338231,3.68359301762989,0.0894427195478961,-3.97346067622836,-4.98111335879234,-6.00185160450253,0.168916496191752,-0.00653484079109349,0.0100674195456323,-0.0387447253052166,0.447213596246465,0.447213596246465,0.447213596246465 +-3.97275896048825,-4.98370617744215,-6.0155564759686,0.0894427110626729,10.5369435859346,12.0734941309321,13.3929413046455,4.23606797749979,-6.42989614283873,-8.05701789769233,-9.69749502005212,2.61803398874989,2.61803398874989,2.61803398874989,9.56304922552845,10.093983222192,10.3995597765205,4.23606797749979,3.10774915883601,2.01388341458997,0.681741413127357,0.0894427221699743,4.10774915883601,4.01388341458997,3.68174141312736,0.0894427221699743,-3.97275896048825,-4.98370617744215,-6.0155564759686,0.168916506680065,-0.000701715740108564,0.00259281864981717,0.0137048714660676,0.447213600616596,0.447213600616596,0.447213600616596 +-3.98124967381216,-4.98906846814596,-6.05212765663865,0.0894426640113997,10.5630492255285,12.093983222192,13.3995597765205,4.23606797749979,-6.41956831385678,-8.05844369434041,-9.69680365869169,2.61803398874989,2.61803398874989,2.61803398874989,9.59553781446311,10.1135911226624,10.4066055332147,4.23606797749979,3.13499019834776,2.03017723714782,0.666184937158757,0.0894427401419672,4.13499019834776,4.03017723714782,3.66618493715876,0.0894427401419672,-3.98124967381216,-4.98906846814596,-6.05212765663865,0.168916578568045,0.00849071332391219,0.00536229070380588,0.0365711806700478,0.447213630569915,0.447213630569915,0.447213630569915 +-3.99280684445662,-4.99560290611435,-6.06722397622892,0.0894423415176199,10.5955378144631,12.1135911226624,13.4066055332147,4.23606797749979,-6.43024011928305,-8.06594791569215,-9.77745193310431,2.61803398874989,2.61803398874989,2.61803398874989,9.62143086492301,10.1285611592783,10.3638079151879,4.23606797749979,3.1537405245356,2.04110876900186,0.614057280520109,0.0894428633239045,4.1537405245356,4.04110876900186,3.61405728052011,0.0894428633239045,-3.99280684445662,-4.99560290611435,-6.06722397622892,0.168917071296133,0.0115571706444606,0.00653443796838839,0.0150963195902752,0.447213835873017,0.447213835873017,0.447213835873017 +-3.98958630795992,-4.99168841063777,-6.08025723923018,0.0894401311332342,10.621430864923,12.1285611592783,13.3638079151879,4.23606797749979,-6.46371772134073,-8.08696979186734,-9.80394134789543,2.61803398874989,2.61803398874989,2.61803398874989,9.62663361944942,10.1305389619106,10.304638938478,4.23606797749979,3.16093368007898,2.04550586288751,0.546833304291187,0.0894437076285071,4.16093368007898,4.04550586288751,3.54683330429119,0.0894437076285071,-3.98958630795992,-4.99168841063777,-6.08025723923018,0.168920448530483,-0.00322053649670077,-0.00391449547657569,0.0130332630012557,0.447215243041414,0.447215243041414,0.447215243041414 +-3.9910070286474,-4.9800675097549,-6.07720902745367,0.0894249819134705,10.6266336194494,12.1305389619106,13.304638938478,4.23606797749979,-6.45386552664288,-8.08834241054373,-9.84111108519353,2.61803398874989,2.61803398874989,2.61803398874989,9.63792536516288,10.1316684395473,10.2224978007651,4.23606797749979,3.17134737211906,2.05381745224974,0.466576065061009,0.0894494947213581,4.17134737211906,4.05381745224974,3.46657606506101,0.0894494947213581,-3.9910070286474,-4.9800675097549,-6.07720902745367,0.168943597650733,0.00142072068747772,-0.0116209008828709,-0.00304821177650606,0.447224887917093,0.447224887917093,0.447224887917093 +-3.95523345928294,-4.91250567324902,-6.090141230632,0.0893211936581228,10.6379253651629,12.1316684395473,13.2224978007651,4.23606797749979,-6.49335859105568,-8.12548033355836,-9.82019855997941,2.61803398874989,2.61803398874989,2.61803398874989,9.62480905474934,10.1098454184894,10.153281314425,4.23606797749979,3.18034034347166,2.07374994249484,0.389367037607338,0.0894891667648662,4.18034034347166,4.07374994249484,3.38936703760734,0.0894891667648662,-3.95523345928294,-4.91250567324902,-6.090141230632,0.169102321010081,-0.0357735693644601,-0.0675618365058815,0.0129322031783286,0.447290994878444,0.447290994878445,0.447290994878444 +-3.81787142146671,-4.72615285398543,-5.96584928334128,0.0886119791166665,10.6248090547493,12.1098454184894,13.153281314425,4.23606797749979,-6.53706420837685,-8.1349539685072,-9.97834745474041,2.61803398874989,2.61803398874989,2.61803398874989,9.58468118733202,10.0821673690361,9.98632343583945,4.23606797749979,3.22510688418872,2.16124426924582,0.299225806975338,0.089761398771559,4.22510688418872,4.16124426924582,3.29922580697534,0.089761398771559,-3.81787142146671,-4.72615285398543,-5.96584928334128,0.170192903770381,-0.137362037816231,-0.186352819263595,-0.124291947290724,0.447744098732229,0.447744098732229,0.447744098732229 +-3.43103618297003,-4.27196150084115,-5.29609942286875,0.0838517404088302,10.584681187332,12.0821673690361,12.9863234358394,4.23606797749979,-6.56428096310668,-8.10126730692002,-10.3226967726779,2.61803398874989,2.61803398874989,2.61803398874989,9.5277324404282,10.0753088214112,9.60654597476565,4.23606797749979,3.40723546272201,2.43509141526039,0.33337652363406,0.0916421794821756,4.40723546272201,4.43509141526039,3.33337652363406,0.0916421794821756,-3.43103618297003,-4.27196150084115,-5.29609942286875,0.177794334647952,-0.386835238496676,-0.45419135314428,-0.66974986047253,0.450849718747371,0.450849718747371,0.450849718747371 +-2.46780125594993,-3.08099970860243,-3.74843496125432,0.0557280900008412,10.5277324404282,12.0753088214112,12.6065459747656,4.23606797749979,-6.51476808769632,-8.1031406992307,-10.1169333356148,2.61803398874989,2.61803398874989,2.61803398874989,9.50138433340872,10.0672924536641,9.35393731143888,4.23606797749979,3.97619927975198,3.16312991441925,1.03727710076531,0.105244939971399,4.97619927975198,5.16312991441925,4.03727710076531,0.105244939971399,-2.46780125594993,-3.08099970860243,-3.74843496125432,0.23606797749979,-0.963234927020107,-1.19096179223872,-1.54766446161443,0.472135954999579,0.472135954999579,0.472135954999579 +0,0,0,0,10.5013843334087,12.0672924536641,12.3539373114389,4.23606797749979,-6.46078756555658,-8.06616195644968,-9.81353013318219,2.61803398874989,2.61803398874989,2.61803398874989,9.50839802380206,10.0821302058168,9.288842139511,4.23606797749979,5.50839802380206,5.08213020581682,3.288842139511,0.23606797749979,6.50839802380206,7.08213020581682,6.288842139511,0.23606797749979,0,0,0,1,-2.46780125594993,-3.08099970860243,-3.74843496125432,0.618033988749895,0.618033988749895,0.618033988749895 diff --git a/statsmodels/tsa/statespace/tests/results/results_kalman_filter.py b/statsmodels/tsa/statespace/tests/results/results_kalman_filter.py new file mode 100644 index 0000000..2699a58 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_kalman_filter.py @@ -0,0 +1,807 @@ +""" +Results for Kalman Filter + +Author: Chad Fulton +License: Simplified-BSD + +Notes +----- + +There was an error in the loglikelihood computation in the GAUSS code from +Kim and Nelson for the Clark 1989 model, omitting the exponent term on +``2 pi''. Therefore the loglikelihood in the test results for uc_bi is instead +from the FKF R library, which can be replicated using the +``test_clark1989_r.R'' file. + +References +---------- + +Datasets produced using GAUSS code described in Kim and Nelson (1999) and +found at http://econ.korea.ac.kr/~cjkim/SSMARKOV.htm +Accessed 2013-11-18 +Code was run using OxGauss 7. + +Kim, Chang-Jin, and Charles R. Nelson. 1999. +"State-Space Models with Regime Switching: +Classical and Gibbs-Sampling Approaches with Applications". +MIT Press Books. The MIT Press. + +""" + +""" +Clark's (1987) Univariate Unobserved Components model of GDP + +See http://econ.korea.ac.kr/~cjkim/MARKOV/prgmlist.htm#chapter3 + +Gauss Code: UC_UNI.OPT +Dataset: GDP4795.PRN +""" +uc_uni = { + 'data': [ + 1239.5, 1247.19995117, 1255, 1269.5, 1284, 1295.69995117, + 1303.80004883, 1316.40002441, 1305.30004883, 1302, 1312.59997559, + 1301.90002441, 1350.90002441, 1393.5, 1445.19995117, 1484.5, + 1504.09997559, 1548.30004883, 1585.40002441, 1596, 1607.69995117, + 1612.09997559, 1621.90002441, 1657.80004883, 1687.30004883, + 1695.30004883, 1687.90002441, 1671.19995117, 1660.80004883, + 1658.40002441, 1677.69995117, 1698.30004883, 1742.5, 1758.59997559, + 1778.19995117, 1793.90002441, 1787, 1798.5, 1802.19995117, + 1826.59997559, 1836.40002441, 1834.80004883, 1851.19995117, 1830.5, + 1790.09997559, 1804.40002441, 1840.90002441, 1880.90002441, + 1904.90002441, 1937.5, 1930.80004883, 1941.90002441, 1976.90002441, + 1971.69995117, 1973.69995117, 1961.09997559, 1977.40002441, 2006, + 2035.19995117, 2076.5, 2103.80004883, 2125.69995117, 2142.60009766, + 2140.19995117, 2170.89990234, 2199.5, 2237.60009766, 2254.5, + 2311.10009766, 2329.89990234, 2357.39990234, 2364, 2410.10009766, + 2442.80004883, 2485.5, 2543.80004883, 2596.80004883, 2601.39990234, + 2626.10009766, 2640.5, 2657.19995117, 2669, 2699.5, 2715.10009766, + 2752.10009766, 2796.89990234, 2816.80004883, 2821.69995117, + 2864.60009766, 2867.80004883, 2884.5, 2875.10009766, 2867.80004883, + 2859.5, 2895, 2873.30004883, 2939.89990234, 2944.19995117, + 2962.30004883, 2977.30004883, 3037.30004883, 3089.69995117, + 3125.80004883, 3175.5, 3253.30004883, 3267.60009766, 3264.30004883, + 3289.10009766, 3259.39990234, 3267.60009766, 3239.10009766, + 3226.39990234, 3154, 3190.39990234, 3249.89990234, 3292.5, + 3356.69995117, 3369.19995117, 3381, 3416.30004883, 3466.39990234, 3525, + 3574.39990234, 3567.19995117, 3591.80004883, 3707, 3735.60009766, + 3779.60009766, 3780.80004883, 3784.30004883, 3807.5, 3814.60009766, + 3830.80004883, 3732.60009766, 3733.5, 3808.5, 3860.5, 3844.39990234, + 3864.5, 3803.10009766, 3756.10009766, 3771.10009766, 3754.39990234, + 3759.60009766, 3783.5, 3886.5, 3944.39990234, 4012.10009766, 4089.5, + 4144, 4166.39990234, 4194.20019531, 4221.79980469, 4254.79980469, 4309, + 4333.5, 4390.5, 4387.70019531, 4412.60009766, 4427.10009766, 4460, + 4515.29980469, 4559.29980469, 4625.5, 4655.29980469, 4704.79980469, + 4734.5, 4779.70019531, 4817.60009766, 4839, 4839, 4856.70019531, + 4898.29980469, 4917.10009766, 4906.5, 4867.20019531, 4842, + 4867.89990234, 4879.89990234, 4880.79980469, 4918.5, 4947.5, 4990.5, + 5060.70019531, 5075.29980469, 5105.39990234, 5139.39990234, 5218, + 5261.10009766, 5314.10009766, 5367, 5433.79980469, 5470.10009766, + 5487.79980469, 5544.60009766 + ], + 'start': 21-1, + 'parameters': [0.005539, 0.006164, 0.000184, 1.531659, -0.585422], + 'standard_errors': [0.000000, 0.000000, 0.000000, 0.000000, 0.000000], + 'loglike': 578.520887, + 'states': [ + [7.369243, 0.013317, 0.018762], + [7.374220, 0.011073, 0.016581], + [7.385527, 0.005826, 0.015828], + [7.416916, -0.003669, 0.017851], + [7.434130, -0.003245, 0.017775], + [7.433819, 0.001796, 0.015781], + [7.427416, 0.003825, 0.013508], + [7.419109, 0.002189, 0.011420], + [7.419253, -0.004198, 0.010408], + [7.424214, -0.010605, 0.009947], + [7.443116, -0.017937, 0.010663], + [7.455732, -0.018349, 0.010810], + [7.483689, -0.020612, 0.012044], + [7.484287, -0.012014, 0.011259], + [7.493577, -0.010220, 0.011130], + [7.500748, -0.008601, 0.010882], + [7.493715, -0.005422, 0.009805], + [7.504849, -0.010140, 0.009882], + [7.507452, -0.010689, 0.009477], + [7.524476, -0.014264, 0.009882], + [7.527391, -0.011828, 0.009521], + [7.525478, -0.010787, 0.008949], + [7.537758, -0.014169, 0.009110], + [7.523893, -0.011549, 0.008031], + [7.504850, -0.014823, 0.006795], + [7.524920, -0.026937, 0.007384], + [7.547145, -0.029135, 0.008024], + [7.563759, -0.024254, 0.008385], + [7.569019, -0.016834, 0.008257], + [7.582139, -0.012985, 0.008452], + [7.573090, -0.007400, 0.007768], + [7.581280, -0.009858, 0.007784], + [7.600320, -0.011035, 0.008205], + [7.593454, -0.006802, 0.007653], + [7.596716, -0.009050, 0.007495], + [7.592481, -0.011220, 0.007082], + [7.605464, -0.015926, 0.007286], + [7.619716, -0.015818, 0.007523], + [7.630873, -0.012524, 0.007644], + [7.647019, -0.008580, 0.007924], + [7.654471, -0.002971, 0.007909], + [7.661563, 0.000293, 0.007883], + [7.667909, 0.001866, 0.007834], + [7.666825, 0.001830, 0.007557], + [7.683710, -0.000813, 0.007843], + [7.695061, 0.000925, 0.007950], + [7.709743, 0.003416, 0.008151], + [7.714033, 0.006650, 0.008037], + [7.737525, 0.007954, 0.008490], + [7.740667, 0.012914, 0.008335], + [7.751712, 0.013603, 0.008412], + [7.754422, 0.013689, 0.008250], + [7.775189, 0.012235, 0.008603], + [7.785979, 0.014922, 0.008664], + [7.801228, 0.017002, 0.008847], + [7.820961, 0.020453, 0.009147], + [7.836561, 0.025474, 0.009324], + [7.835776, 0.028029, 0.009049], + [7.848074, 0.025181, 0.009137], + [7.855709, 0.023015, 0.009097], + [7.864971, 0.020057, 0.009101], + [7.872361, 0.017098, 0.009056], + [7.886320, 0.014502, 0.009185], + [7.893144, 0.013440, 0.009123], + [7.908033, 0.012086, 0.009274], + [7.923091, 0.013175, 0.009425], + [7.928928, 0.014429, 0.009331], + [7.932574, 0.012521, 0.009184], + [7.950084, 0.010100, 0.009399], + [7.951667, 0.009634, 0.009198], + [7.960694, 0.006413, 0.009194], + [7.960971, 0.002871, 0.008966], + [7.964212, -0.002912, 0.008821], + [7.967149, -0.008747, 0.008671], + [7.983160, -0.012419, 0.008857], + [7.977084, -0.013868, 0.008480], + [8.002177, -0.016046, 0.008899], + [8.000570, -0.012977, 0.008634], + [8.007643, -0.013921, 0.008595], + [8.013407, -0.014635, 0.008524], + [8.032255, -0.013530, 0.008783], + [8.044336, -0.008506, 0.008865], + [8.051776, -0.004330, 0.008829], + [8.064664, -0.001444, 0.008931], + [8.084189, 0.003236, 0.009194], + [8.084259, 0.007552, 0.008967], + [8.085181, 0.005620, 0.008768], + [8.096245, 0.002124, 0.008825], + [8.090934, -0.001635, 0.008474], + [8.099770, -0.007958, 0.008483], + [8.096154, -0.013103, 0.008184], + [8.099051, -0.019929, 0.008054], + [8.084586, -0.028159, 0.007498], + [8.104155, -0.036254, 0.007795], + [8.120386, -0.034007, 0.008003], + [8.127820, -0.028418, 0.007989], + [8.141545, -0.022832, 0.008131], + [8.140564, -0.018133, 0.007906], + [8.143851, -0.017924, 0.007793], + [8.154123, -0.017810, 0.007854], + [8.166200, -0.015328, 0.007958], + [8.178658, -0.011022, 0.008068], + [8.187909, -0.006356, 0.008097], + [8.184427, -0.004891, 0.007813], + [8.193450, -0.007041, 0.007842], + [8.222013, -0.004035, 0.008351], + [8.222792, 0.002872, 0.008165], + [8.232604, 0.004769, 0.008206], + [8.232920, 0.004771, 0.008012], + [8.237120, 0.001496, 0.007919], + [8.246178, -0.001449, 0.007947], + [8.250045, -0.003453, 0.007847], + [8.256698, -0.005869, 0.007817], + [8.236922, -0.012061, 0.007141], + [8.247774, -0.022672, 0.007232], + [8.269118, -0.024127, 0.007578], + [8.277812, -0.019260, 0.007605], + [8.271764, -0.017391, 0.007270], + [8.279040, -0.019452, 0.007271], + [8.266583, -0.023011, 0.006787], + [8.262738, -0.031602, 0.006527], + [8.272654, -0.037532, 0.006610], + [8.270217, -0.039533, 0.006388], + [8.273835, -0.041767, 0.006320], + [8.280077, -0.041673, 0.006319], + [8.301972, -0.036708, 0.006700], + [8.307430, -0.027378, 0.006670], + [8.317328, -0.020258, 0.006749], + [8.329307, -0.013129, 0.006877], + [8.336112, -0.006696, 0.006875], + [8.338223, -0.003415, 0.006758], + [8.344312, -0.002854, 0.006742], + [8.350658, -0.002641, 0.006732], + [8.358162, -0.002359, 0.006751], + [8.369502, -0.001041, 0.006863], + [8.373472, 0.000659, 0.006793], + [8.385533, 0.001666, 0.006922], + [8.384242, 0.002319, 0.006721], + [8.391933, 0.000286, 0.006744], + [8.396505, -0.001005, 0.006691], + [8.404956, -0.002052, 0.006734], + [8.416432, -0.001205, 0.006850], + [8.424022, 0.000903, 0.006868], + [8.436123, 0.003217, 0.006996], + [8.440287, 0.005474, 0.006927], + [8.450172, 0.006167, 0.007000], + [8.455752, 0.006879, 0.006965], + [8.465200, 0.006933, 0.007026], + [8.472627, 0.007404, 0.007035], + [8.477446, 0.007018, 0.006981], + [8.479558, 0.004906, 0.006862], + [8.486204, 0.001911, 0.006857], + [8.496122, 0.000521, 0.006932], + [8.500348, 0.000127, 0.006865], + [8.500417, -0.002101, 0.006699], + [8.497303, -0.007029, 0.006459], + [8.498474, -0.013391, 0.006329], + [8.507865, -0.017447, 0.006404], + [8.511353, -0.018473, 0.006333], + [8.512856, -0.019792, 0.006215], + [8.521315, -0.020556, 0.006270], + [8.526119, -0.019481, 0.006234], + [8.533359, -0.018068, 0.006258], + [8.544398, -0.015138, 0.006375], + [8.544422, -0.012281, 0.006220], + [8.550013, -0.011958, 0.006205], + [8.556038, -0.011346, 0.006200], + [8.569108, -0.009239, 0.006368], + [8.573833, -0.005737, 0.006328], + [8.581719, -0.003600, 0.006366], + [8.589473, -0.001449, 0.006400], + [8.599466, 0.000928, 0.006488], + [8.604040, 0.003012, 0.006441], + [8.607332, 0.002951, 0.006364], + [8.618016, 0.002564, 0.006470] + ] +} + +""" +Clark's (1989) Bivariate Unobserved Components model of GDP + +See http://econ.korea.ac.kr/~cjkim/MARKOV/prgmlist.htm#chapter3 + +Gauss Code: UC_BI.OPT +Datasets: GDP4795.PRN, LHUR.PRN + +""" +uc_bi = { + 'data': [ + [1239.5, 0], [1247.199951, 0], + [1255, 0], [1269.5, 0], + [1284, 3.733333349], [1295.699951, 3.666666667], + [1303.800049, 3.766666651], [1316.400024, 3.833333333], + [1305.300049, 4.666666667], [1302, 5.866666635], + [1312.599976, 6.699999968], [1301.900024, 6.966666698], + [1350.900024, 6.400000095], [1393.5, 5.566666762], + [1445.199951, 4.633333365], [1484.5, 4.23333327], + [1504.099976, 3.500000079], [1548.300049, 3.099999984], + [1585.400024, 3.166666587], [1596, 3.366666635], + [1607.699951, 3.066666683], [1612.099976, 2.966666698], + [1621.900024, 3.233333349], [1657.800049, 2.833333333], + [1687.300049, 2.699999968], [1695.300049, 2.566666683], + [1687.900024, 2.733333349], [1671.199951, 3.699999968], + [1660.800049, 5.266666571], [1658.400024, 5.800000032], + [1677.699951, 5.966666698], [1698.300049, 5.333333333], + [1742.5, 4.73333327], [1758.599976, 4.399999936], + [1778.199951, 4.099999905], [1793.900024, 4.23333327], + [1787, 4.033333302], [1798.5, 4.200000127], + [1802.199951, 4.133333365], [1826.599976, 4.133333365], + [1836.400024, 3.933333317], [1834.800049, 4.100000064], + [1851.199951, 4.23333327], [1830.5, 4.933333238], + [1790.099976, 6.300000032], [1804.400024, 7.366666794], + [1840.900024, 7.333333333], [1880.900024, 6.366666476], + [1904.900024, 5.833333333], [1937.5, 5.099999905], + [1930.800049, 5.266666571], [1941.900024, 5.600000064], + [1976.900024, 5.133333365], [1971.699951, 5.23333327], + [1973.699951, 5.533333302], [1961.099976, 6.266666571], + [1977.400024, 6.800000032], [2006, 7], + [2035.199951, 6.766666571], [2076.5, 6.199999968], + [2103.800049, 5.633333365], [2125.699951, 5.533333302], + [2142.600098, 5.566666603], [2140.199951, 5.533333302], + [2170.899902, 5.766666571], [2199.5, 5.73333327], + [2237.600098, 5.5], [2254.5, 5.566666603], + [2311.100098, 5.466666698], [2329.899902, 5.199999968], + [2357.399902, 5], [2364, 4.966666698], + [2410.100098, 4.899999936], [2442.800049, 4.666666667], + [2485.5, 4.366666794], [2543.800049, 4.099999905], + [2596.800049, 3.866666635], [2601.399902, 3.833333333], + [2626.100098, 3.766666651], [2640.5, 3.699999968], + [2657.199951, 3.833333333], [2669, 3.833333333], + [2699.5, 3.799999952], [2715.100098, 3.900000016], + [2752.100098, 3.733333349], [2796.899902, 3.566666683], + [2816.800049, 3.533333381], [2821.699951, 3.400000095], + [2864.600098, 3.400000095], [2867.800049, 3.433333397], + [2884.5, 3.566666683], [2875.100098, 3.566666683], + [2867.800049, 4.166666667], [2859.5, 4.76666673], + [2895, 5.166666667], [2873.300049, 5.833333333], + [2939.899902, 5.933333397], [2944.199951, 5.900000095], + [2962.300049, 6.033333302], [2977.300049, 5.933333397], + [3037.300049, 5.76666673], [3089.699951, 5.699999809], + [3125.800049, 5.566666603], [3175.5, 5.366666635], + [3253.300049, 4.933333397], [3267.600098, 4.933333397], + [3264.300049, 4.800000191], [3289.100098, 4.76666673], + [3259.399902, 5.133333206], [3267.600098, 5.199999968], + [3239.100098, 5.633333365], [3226.399902, 6.599999905], + [3154, 8.266667048], [3190.399902, 8.866666794], + [3249.899902, 8.46666654], [3292.5, 8.299999873], + [3356.699951, 7.73333327], [3369.199951, 7.566666603], + [3381, 7.733333429], [3416.300049, 7.76666673], + [3466.399902, 7.5], [3525, 7.133333206], + [3574.399902, 6.900000095], [3567.199951, 6.666666826], + [3591.800049, 6.333333492], [3707, 6], + [3735.600098, 6.033333302], [3779.600098, 5.900000095], + [3780.800049, 5.866666794], [3784.300049, 5.699999968], + [3807.5, 5.866666635], [3814.600098, 5.966666698], + [3830.800049, 6.300000191], [3732.600098, 7.333333333], + [3733.5, 7.666666667], [3808.5, 7.399999936], + [3860.5, 7.433333397], [3844.399902, 7.399999936], + [3864.5, 7.399999936], [3803.100098, 8.233333429], + [3756.100098, 8.833333333], [3771.100098, 9.433333397], + [3754.399902, 9.900000254], [3759.600098, 10.66666667], + [3783.5, 10.36666648], [3886.5, 10.13333352], + [3944.399902, 9.366666476], [4012.100098, 8.53333346], + [4089.5, 7.866666794], [4144, 7.433333238], + [4166.399902, 7.433333397], [4194.200195, 7.300000032], + [4221.799805, 7.23333327], [4254.799805, 7.300000032], + [4309, 7.199999968], [4333.5, 7.033333302], + [4390.5, 7.033333143], [4387.700195, 7.166666508], + [4412.600098, 6.966666698], [4427.100098, 6.833333333], + [4460, 6.599999905], [4515.299805, 6.26666673], + [4559.299805, 6], [4625.5, 5.833333333], + [4655.299805, 5.699999809], [4704.799805, 5.466666698], + [4734.5, 5.466666698], [4779.700195, 5.333333492], + [4817.600098, 5.199999968], [4839, 5.23333327], + [4839, 5.23333327], [4856.700195, 5.366666794], + [4898.299805, 5.300000032], [4917.100098, 5.333333333], + [4906.5, 5.699999968], [4867.200195, 6.133333365], + [4842, 6.600000064], [4867.899902, 6.833333333], + [4879.899902, 6.866666794], [4880.799805, 7.100000064], + [4918.5, 7.366666794], [4947.5, 7.600000064], + [4990.5, 7.633333206], [5060.700195, 7.366666794], + [5075.299805, 7.133333365], [5105.399902, 7.066666603], + [5139.399902, 6.800000032], [5218, 6.633333365], + [5261.100098, 6.633333206], [5314.100098, 6.199999968], + [5367, 6], [5433.799805, 5.566666603], + [5470.100098, 5.533333302], [5487.799805, 5.633333206], + [5544.600098, 5.633333206] + ], + 'start': 21-4-1, + 'parameters': [ + 0.004863, 0.00668, 0.000295, 0.001518, 0.000306, 1.43859, -0.517385, + -0.336789, -0.163511, -0.072012 + ], + 'standard_errors': [ + 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, + 0.000000, 0.000000, 0.000000 + ], + # See Notes in the file docstring for more information on the loglikelihood + # 'loglike': 1566.994602, + 'loglike': 1485.41934, + 'states': [ + [7.359396, 0.023164, 0.013713, 0.044071], + [7.362719, 0.022574, 0.012832, 0.043161], + [7.373038, 0.018315, 0.012796, 0.044467], + [7.393634, 0.019613, 0.012635, 0.037801], + [7.408780, 0.022105, 0.012863, 0.038367], + [7.414012, 0.021603, 0.012370, 0.038493], + [7.414058, 0.017182, 0.011659, 0.039431], + [7.416921, 0.004376, 0.011582, 0.044744], + [7.429820, -0.014765, 0.012230, 0.051206], + [7.435752, -0.022143, 0.011632, 0.048723], + [7.447268, -0.022089, 0.011509, 0.047309], + [7.450937, -0.013554, 0.010723, 0.043338], + [7.467363, -0.004287, 0.010903, 0.041325], + [7.472477, -0.000204, 0.010666, 0.042662], + [7.480909, 0.002448, 0.010461, 0.041647], + [7.491498, 0.000649, 0.010580, 0.043180], + [7.487065, 0.001229, 0.009635, 0.041911], + [7.495837, -0.001129, 0.009609, 0.042236], + [7.497666, -0.000903, 0.009111, 0.041357], + [7.510478, -0.000266, 0.009281, 0.040804], + [7.513518, 0.002045, 0.008890, 0.040138], + [7.516030, -0.001339, 0.008633, 0.041623], + [7.526775, -0.003186, 0.008721, 0.041167], + [7.526058, -0.013713, 0.008459, 0.045277], + [7.524449, -0.034422, 0.008246, 0.050757], + [7.544061, -0.046078, 0.008895, 0.051237], + [7.558430, -0.040420, 0.009045, 0.048770], + [7.563474, -0.023969, 0.008620, 0.045247], + [7.568520, -0.016336, 0.008491, 0.046358], + [7.575711, -0.006557, 0.008303, 0.044317], + [7.576186, -0.010497, 0.008082, 0.047851], + [7.587245, -0.015823, 0.008289, 0.048671], + [7.596353, -0.007068, 0.008129, 0.045036], + [7.595725, -0.009074, 0.007813, 0.047808], + [7.602240, -0.014574, 0.007805, 0.048940], + [7.606393, -0.025132, 0.007768, 0.051857], + [7.620310, -0.030772, 0.008121, 0.052282], + [7.634385, -0.030487, 0.008445, 0.052385], + [7.643520, -0.025171, 0.008447, 0.051739], + [7.653856, -0.015416, 0.008463, 0.050131], + [7.658758, -0.007257, 0.008248, 0.049650], + [7.668470, -0.006613, 0.008393, 0.050929], + [7.677398, -0.007622, 0.008453, 0.051544], + [7.676653, -0.007998, 0.007963, 0.051552], + [7.693051, -0.010154, 0.008439, 0.052071], + [7.704488, -0.008503, 0.008587, 0.051841], + [7.717178, -0.004019, 0.008767, 0.051084], + [7.726080, -0.005396, 0.008853, 0.052655], + [7.747984, -0.002505, 0.009499, 0.051686], + [7.752362, 0.001219, 0.009225, 0.051659], + [7.761774, 0.003541, 0.009215, 0.051256], + [7.765241, 0.002870, 0.008933, 0.051734], + [7.782698, 0.004726, 0.009337, 0.050749], + [7.792415, 0.008486, 0.009331, 0.050208], + [7.805420, 0.012809, 0.009482, 0.049330], + [7.824241, 0.017173, 0.009946, 0.048673], + [7.841661, 0.020374, 0.010335, 0.048518], + [7.845477, 0.018328, 0.010035, 0.049472], + [7.855021, 0.018234, 0.009954, 0.048333], + [7.860222, 0.018502, 0.009674, 0.047770], + [7.869432, 0.015597, 0.009665, 0.048076], + [7.874754, 0.014705, 0.009402, 0.047404], + [7.885524, 0.015297, 0.009434, 0.046559], + [7.893504, 0.013081, 0.009381, 0.047074], + [7.904608, 0.015511, 0.009399, 0.045546], + [7.917944, 0.018323, 0.009577, 0.044894], + [7.925926, 0.017430, 0.009516, 0.045383], + [7.927535, 0.017559, 0.009058, 0.044576], + [7.942312, 0.017872, 0.009324, 0.043809], + [7.945307, 0.015993, 0.009010, 0.044250], + [7.954008, 0.013098, 0.008988, 0.044131], + [7.952052, 0.011791, 0.008384, 0.043624], + [7.959391, 0.001910, 0.008428, 0.045708], + [7.965660, -0.007258, 0.008362, 0.046727], + [7.981621, -0.010881, 0.008753, 0.046477], + [7.984173, -0.020957, 0.008572, 0.049592], + [8.005586, -0.019456, 0.009162, 0.047685], + [8.005729, -0.018136, 0.008728, 0.048606], + [8.014046, -0.020325, 0.008746, 0.049461], + [8.017136, -0.018363, 0.008419, 0.048869], + [8.032555, -0.013831, 0.008752, 0.048074], + [8.047624, -0.011794, 0.009127, 0.048945], + [8.057447, -0.010002, 0.009179, 0.049253], + [8.069676, -0.006456, 0.009316, 0.048733], + [8.086067, 0.001358, 0.009622, 0.047288], + [8.091964, -0.000153, 0.009522, 0.049344], + [8.091093, -0.000292, 0.008944, 0.048749], + [8.097901, 0.000468, 0.008797, 0.048031], + [8.095928, -0.006630, 0.008327, 0.050163], + [8.099455, -0.007644, 0.008011, 0.048832], + [8.097491, -0.014440, 0.007571, 0.050705], + [8.107855, -0.028733, 0.007866, 0.053837], + [8.110267, -0.053840, 0.007861, 0.059886], + [8.125657, -0.057755, 0.008165, 0.057870], + [8.132368, -0.045989, 0.007976, 0.055472], + [8.141350, -0.041948, 0.008115, 0.057302], + [8.151163, -0.032449, 0.008143, 0.055996], + [8.152718, -0.030287, 0.007876, 0.057718], + [8.159199, -0.033272, 0.007876, 0.059298], + [8.168512, -0.032198, 0.007945, 0.059157], + [8.177076, -0.026204, 0.007940, 0.058345], + [8.187094, -0.019458, 0.008032, 0.057956], + [8.197282, -0.015729, 0.008171, 0.058494], + [8.193424, -0.013887, 0.007551, 0.058849], + [8.195445, -0.009036, 0.007189, 0.057355], + [8.219129, -0.001151, 0.007994, 0.055918], + [8.228193, -0.002529, 0.008171, 0.058480], + [8.238694, -0.001321, 0.008265, 0.057875], + [8.239265, -0.001575, 0.007876, 0.058242], + [8.238615, 0.000002, 0.007380, 0.057294], + [8.247042, -0.002314, 0.007465, 0.057928], + [8.250763, -0.004172, 0.007278, 0.058161], + [8.259723, -0.008894, 0.007418, 0.059249], + [8.251776, -0.026916, 0.006833, 0.064114], + [8.255284, -0.030182, 0.006553, 0.061881], + [8.266278, -0.021287, 0.006670, 0.059379], + [8.278996, -0.020444, 0.007088, 0.061459], + [8.276100, -0.021727, 0.006610, 0.062542], + [8.280788, -0.021201, 0.006491, 0.062160], + [8.278326, -0.034755, 0.006232, 0.066766], + [8.274878, -0.043742, 0.005752, 0.067439], + [8.284140, -0.049018, 0.005975, 0.068240], + [8.284696, -0.054013, 0.005779, 0.070185], + [8.295259, -0.063191, 0.006173, 0.073204], + [8.294049, -0.055644, 0.005677, 0.070929], + [8.312751, -0.047486, 0.006364, 0.070890], + [8.314987, -0.034935, 0.006106, 0.070042], + [8.319216, -0.022145, 0.005948, 0.068793], + [8.328130, -0.011952, 0.006079, 0.068246], + [8.335603, -0.006186, 0.006168, 0.068566], + [8.342256, -0.007448, 0.006264, 0.070071], + [8.347204, -0.005746, 0.006165, 0.069450], + [8.352469, -0.004453, 0.006117, 0.069428], + [8.361097, -0.005294, 0.006276, 0.069985], + [8.371490, -0.003029, 0.006466, 0.069408], + [8.374839, -0.000708, 0.006297, 0.069321], + [8.387558, -0.000360, 0.006647, 0.069525], + [8.389888, -0.003327, 0.006475, 0.070742], + [8.392638, -0.000419, 0.006204, 0.069151], + [8.393948, 0.001552, 0.005933, 0.068889], + [8.398118, 0.004786, 0.005795, 0.067943], + [8.405206, 0.010021, 0.005807, 0.066720], + [8.411466, 0.013458, 0.005815, 0.066388], + [8.423676, 0.015664, 0.006137, 0.066035], + [8.429154, 0.016608, 0.006101, 0.066025], + [8.436810, 0.019528, 0.006129, 0.064861], + [8.443949, 0.018683, 0.006201, 0.065261], + [8.452078, 0.020055, 0.006258, 0.064296], + [8.458518, 0.021513, 0.006241, 0.063727], + [8.464632, 0.019831, 0.006247, 0.063995], + [8.466064, 0.018399, 0.005975, 0.063618], + [8.472230, 0.015884, 0.005980, 0.063519], + [8.479638, 0.017005, 0.006004, 0.062420], + [8.484587, 0.015887, 0.005959, 0.062648], + [8.489326, 0.008990, 0.005964, 0.064131], + [8.488979, 0.001295, 0.005670, 0.064976], + [8.490673, -0.005590, 0.005482, 0.065457], + [8.497926, -0.007508, 0.005549, 0.064894], + [8.500109, -0.007229, 0.005365, 0.064766], + [8.503909, -0.010844, 0.005337, 0.065932], + [8.514619, -0.013860, 0.005646, 0.066461], + [8.522892, -0.016254, 0.005824, 0.067295], + [8.530933, -0.015642, 0.005937, 0.067215], + [8.539466, -0.010206, 0.006025, 0.066154], + [8.539379, -0.007238, 0.005717, 0.066474], + [8.544783, -0.006729, 0.005709, 0.066661], + [8.547336, -0.002645, 0.005492, 0.065594], + [8.559110, 0.000759, 0.005808, 0.065240], + [8.567654, 0.000441, 0.005997, 0.066197], + [8.571449, 0.006669, 0.005791, 0.064272], + [8.578487, 0.009537, 0.005855, 0.064241], + [8.584874, 0.015520, 0.005811, 0.062693], + [8.592063, 0.014989, 0.005925, 0.063559], + [8.598175, 0.012108, 0.005956, 0.064012], + [8.608197, 0.012383, 0.006133, 0.063200] + ] +} + +""" +Kim and Nelson's (1989) time-varying parameters model of monetary growth + +See http://econ.korea.ac.kr/~cjkim/MARKOV/prgmlist.htm#chapter3 + +Gauss Code: TVP.OPT +Datasets: TVP.PRN + +""" +tvp = { + 'data': [ + [59.300000, 0.751356, 0.226667, 0.191755, 0.103000, 0.828304], + [59.400000, -0.869262, 0.540000, 0.496848, 0.044000, 0.751356], + [60.100000, -0.259896, 0.690000, 0.608136, 0.058000, -0.869262], + [60.200000, -0.165737, -0.356667, 0.113615, 0.188000, -0.259896], + [60.300000, 0.943401, -0.880000, 0.603775, 0.126000, -0.165737], + [60.400000, -0.046962, -0.633333, 0.037615, 0.087000, 0.943401], + [61.100000, 0.538708, -0.053333, 0.637303, 0.096000, -0.046962], + [61.200000, 0.767892, 0.043333, 0.223964, -0.004000, 0.538708], + [61.300000, 0.600882, -0.046667, -0.037292, -0.043000, 0.767892], + [61.400000, 0.940261, 0.000000, 0.409455, -0.034000, 0.600882], + [62.100000, 0.637094, 0.156667, 0.111379, -0.059000, 0.940261], + [62.200000, 0.700645, 0.263333, 0.407333, -0.201000, 0.637094], + [62.300000, -0.112678, -0.010000, 0.368868, -0.169000, 0.700645], + [62.400000, 0.562120, 0.126667, 0.257401, -0.145000, -0.112678], + [63.100000, 1.026110, -0.026667, 0.256739, -0.122000, 0.562120], + [63.200000, 0.949756, 0.093333, 0.329128, -0.070000, 1.026110], + [63.300000, 1.006140, 0.030000, 0.182382, 0.029000, 0.949756], + [63.400000, 0.953003, 0.356667, 0.581397, -0.045000, 1.006140], + [64.100000, 0.687438, 0.203333, 0.289436, -0.076000, 0.953003], + [64.200000, 0.704003, 0.033333, 0.432589, -0.225000, 0.687438], + [64.300000, 1.623650, -0.053333, 0.143781, -0.337000, 0.704003], + [64.400000, 1.288460, 0.020000, 0.179437, -0.220000, 1.623650], + [65.100000, 0.740592, 0.186667, 0.500716, -0.151000, 1.288460], + [65.200000, 0.592627, 0.206667, 0.320570, -0.051000, 0.740592], + [65.300000, 1.154680, -0.016667, 0.638074, -0.105000, 0.592627], + [65.400000, 1.816230, -0.006667, 0.282287, -0.348000, 1.154680], + [66.100000, 1.706090, 0.300000, 0.527149, -0.441000, 1.816230], + [66.200000, 1.063740, 0.443333, 0.941922, -0.397000, 1.706090], + [66.300000, -0.288990, -0.023333, 0.898727, -0.352000, 1.063740], + [66.400000, 0.269746, 0.456667, 0.856609, -0.492000, -0.288990], + [67.100000, 1.014660, 0.166667, 0.815499, -0.547000, 0.269746], + [67.200000, 1.399680, -0.696667, 0.337838, -0.715000, 1.014660], + [67.300000, 2.192170, -0.853333, 0.538179, -0.707000, 1.399680], + [67.400000, 1.586030, 0.640000, 1.034550, -0.749000, 2.192170], + [68.100000, 1.347370, 0.453333, 0.958213, -0.709000, 1.586030], + [68.200000, 1.698550, 0.296667, 1.079320, -0.641000, 1.347370], + [68.300000, 1.928650, 0.470000, 0.971196, -0.763000, 1.698550], + [68.400000, 2.111430, -0.323333, 1.280420, -0.520000, 1.928650], + [69.100000, 1.786810, 0.390000, 1.232830, -0.389000, 2.111430], + [69.200000, 0.807717, 0.506667, 1.217810, -0.147000, 1.786810], + [69.300000, 0.425952, 0.103333, 1.509340, -0.096000, 0.807717], + [69.400000, 0.765415, 0.826667, 1.456780, -0.184000, 0.425952], + [70.100000, 1.048990, 0.330000, 1.435860, -0.136000, 0.765415], + [70.200000, 0.735771, -0.143333, 1.620310, -0.124000, 1.048990], + [70.300000, 1.345490, -0.533333, 1.392940, -0.331000, 0.735771], + [70.400000, 1.776580, -0.346667, 1.117650, -0.380000, 1.345490], + [71.100000, 1.715200, -0.976667, 1.386750, -0.369000, 1.776580], + [71.200000, 2.103440, -1.513330, 0.839635, -0.421000, 1.715200], + [71.300000, 1.709950, 0.410000, 0.943139, -0.474000, 2.103440], + [71.400000, 0.945527, 0.760000, 1.016360, -0.444000, 1.709950], + [72.100000, 1.935680, -0.780000, 0.653775, -0.354000, 0.945527], + [72.200000, 1.633840, -0.793333, 0.892018, -0.213000, 1.935680], + [72.300000, 2.046530, 0.333333, 0.590286, -0.448000, 1.633840], + [72.400000, 2.460580, 0.450000, 0.878951, -0.242000, 2.046530], + [73.100000, 1.996500, 0.643333, 1.002650, -0.614000, 2.460580], + [73.200000, 1.171280, 0.836667, 1.511230, -0.421000, 1.996500], + [73.300000, 1.183290, 0.903333, 2.022340, -0.393000, 1.171280], + [73.400000, 1.245250, 1.720000, 2.031930, -0.234000, 1.183290], + [74.100000, 1.665560, -0.823333, 2.452910, -0.238000, 1.245250], + [74.200000, 0.890214, 0.116667, 2.936820, -0.210000, 1.665560], + [74.300000, 0.894558, 0.536667, 2.601170, -0.253000, 0.890214], + [74.400000, 1.200520, 0.036667, 2.869930, -0.062000, 0.894558], + [75.100000, 0.708670, -0.830000, 3.049490, -0.199000, 1.200520], + [75.200000, 1.543970, -1.610000, 2.053110, -0.328000, 0.708670], + [75.300000, 1.833420, -0.356667, 1.220290, -1.242000, 1.543970], + [75.400000, 0.806734, 0.936667, 1.987640, -0.643000, 1.833420], + [76.100000, 1.334040, -0.703333, 1.848330, -0.680000, 0.806734], + [76.200000, 1.628970, -0.710000, 1.140580, -0.567000, 1.334040], + [76.300000, 1.064080, 0.240000, 0.832182, -0.469000, 1.628970], + [76.400000, 1.943510, -0.006667, 1.546780, -0.528000, 1.064080], + [77.100000, 2.298210, -0.476667, 1.427490, -0.561000, 1.943510], + [77.200000, 1.718220, -0.043333, 1.840840, -0.331000, 2.298210], + [77.300000, 1.689200, 0.210000, 1.770610, -0.441000, 1.718220], + [77.400000, 2.092150, 0.656667, 1.376040, -0.682000, 1.689200], + [78.100000, 1.921800, 0.613333, 1.447210, -0.601000, 2.092150], + [78.200000, 2.193200, 0.283333, 1.691790, -0.572000, 1.921800], + [78.300000, 2.023920, 0.083333, 2.286910, -0.440000, 2.193200], + [78.400000, 1.771440, 0.836667, 2.269530, -0.429000, 2.023920], + [79.100000, 1.221600, 1.256670, 2.318120, -0.417000, 1.771440], + [79.200000, 1.827280, 0.813333, 2.458800, -0.223000, 1.221600], + [79.300000, 3.401510, -0.006667, 3.197490, -0.123000, 1.827280], + [79.400000, 1.120030, 0.296667, 3.143710, -0.306000, 3.401510], + [80.100000, 1.082200, 2.170000, 3.121070, -0.335000, 1.120030], + [80.200000, -1.494280, 1.510000, 3.860710, -0.435000, 1.082200], + [80.300000, 4.787210, -3.736670, 3.323020, -0.454000, -1.494280], + [80.400000, 2.670280, -0.463333, 1.835160, -0.458000, 4.787210], + [81.100000, 0.430245, 4.460000, 2.795170, -0.398000, 2.670280], + [81.200000, 1.647980, 0.776667, 2.693850, -0.226000, 0.430245], + [81.300000, 1.652030, 0.516667, 2.066840, -0.169000, 1.647980], + [81.400000, 1.230860, 0.146666, 2.751290, -0.274000, 1.652030], + [82.100000, 1.807140, -3.303330, 1.615160, -0.440000, 1.230860], + [82.200000, 0.417009, 1.063330, 0.897925, -0.351000, 1.807140], + [82.300000, 2.132120, -0.393333, 1.401560, -0.311000, 0.417009], + [82.400000, 3.936900, -3.103330, 1.736170, -0.630000, 2.132120], + [83.100000, 2.534230, -1.410000, 0.318655, -0.917000, 3.936900], + [83.200000, 2.790380, 0.200000, 0.102209, -0.838000, 2.534230], + [83.300000, 2.733980, 0.290000, 1.151120, -0.803000, 2.790380], + [83.400000, 1.612830, 0.743333, 0.993698, -0.966000, 2.733980], + [84.100000, 1.537230, -0.340000, 0.950915, -1.000000, 1.612830], + [84.200000, 1.581670, 0.370000, 1.290200, -1.044000, 1.537230], + [84.300000, 1.071160, 0.626667, 0.994496, -1.210000, 1.581670], + [84.400000, 1.059810, 0.523333, 0.888801, -1.295000, 1.071160], + [85.100000, 2.663020, -1.516670, 0.817542, -1.419000, 1.059810], + [85.200000, 2.571070, -0.620000, 0.821403, -1.217000, 2.663020], + [85.300000, 3.494150, -0.723333, 1.115930, -1.675000, 2.571070], + [85.400000, 2.674520, -0.353333, 0.579113, -1.619000, 3.494150] + ], + 'start': 11-1, + 'parameters': [ + 0.3712, 0.1112, 0.0171, 0.2720, 0.0378, 0.0224 + ], + 'standard_errors': [ + 0.0632, 0.0627, 0.0342, 0.0607, 0.1642, 0.0374 + ], + 'loglike': -97.092423, + 'states': [ + [0.4965, -0.6580, 0.5813, -3.2549, -0.0724], + [0.5126, -0.6555, 0.5719, -3.3179, -0.0709], + [0.4389, -0.5831, 0.4181, -2.1186, -0.0189], + [0.3019, -0.3959, 0.1196, -0.7239, 0.0207], + [0.3727, -0.4049, 0.0580, -0.9298, -0.0335], + [0.4829, -0.4390, 0.1610, -1.0697, -0.0215], + [0.5108, -0.3993, 0.4471, -0.6918, 0.0572], + [0.6079, -0.3483, 0.4996, -0.1870, 0.0972], + [0.6023, -0.3410, 0.5741, -0.1433, 0.1038], + [0.5729, -0.3442, 0.5667, -0.1220, 0.1003], + [0.5521, -0.3105, 0.4848, 0.1181, 0.1097], + [0.7521, -0.4232, 0.0775, -1.1218, 0.0736], + [0.7626, -0.4281, 0.0718, -1.1584, 0.1052], + [0.7570, -0.4325, -0.1868, -1.2219, 0.0883], + [0.7035, -0.4465, -0.2159, -1.3017, 0.0980], + [0.7138, -0.4792, 0.1306, -1.2976, 0.0794], + [0.7741, -0.5153, 0.1357, -1.7173, 0.0976], + [0.7618, -0.5138, 0.1794, -1.7576, 0.1067], + [0.8309, -0.5206, -0.2358, -1.7412, 0.0927], + [0.7468, -0.3393, -1.2197, -1.5994, 0.1837], + [0.7451, -0.3401, -1.2230, -1.5955, 0.1856], + [0.7666, -0.3655, -1.0822, -1.7327, 0.1726], + [0.7155, -0.2192, -0.9440, -1.2904, 0.1621], + [0.6831, -0.3288, -0.7068, -1.4245, 0.2053], + [0.6554, -0.2914, -0.5176, -1.4186, 0.2319], + [0.6518, -0.2933, -0.5437, -1.4185, 0.2322], + [0.6797, -0.3100, -0.2444, -1.3599, 0.2240], + [0.6891, -0.3016, -0.1704, -1.3899, 0.2279], + [0.6832, -0.3461, 0.0626, -1.2895, 0.2391], + [0.7040, -0.3385, 0.1256, -1.2539, 0.2443], + [0.6050, -0.3543, -0.0651, -1.4003, 0.2434], + [0.5992, -0.3375, -0.2575, -1.4240, 0.2665], + [0.6359, -0.3069, -0.0895, -1.4528, 0.2445], + [0.6479, -0.3149, 0.0208, -1.4431, 0.2468], + [0.6738, -0.2881, -0.1767, -1.4472, 0.2379], + [0.6790, -0.2942, -0.1342, -1.4632, 0.2359], + [0.7273, -0.2934, -0.0569, -1.4789, 0.2475], + [0.7441, -0.2804, -0.1501, -1.4776, 0.2392], + [0.7523, -0.2836, -0.1486, -1.4775, 0.2402], + [0.7538, -0.2824, -0.1460, -1.4781, 0.2406], + [0.6948, -0.3274, -0.3619, -1.4639, 0.2477], + [0.8999, -0.3630, -0.3050, -1.4275, 0.2248], + [0.8989, -0.3619, -0.3151, -1.4319, 0.2236], + [1.0628, -0.3234, -0.3110, -1.4815, 0.2314], + [1.0959, -0.2846, 0.2317, -1.3609, 0.2623], + [1.2113, -0.2943, -0.1348, -1.1898, 0.2490], + [1.3005, -0.2927, -0.5252, -1.1919, 0.2722], + [1.2629, -0.2966, -0.3244, -1.1993, 0.2518], + [1.2894, -0.2782, -0.1285, -1.1538, 0.2469], + [1.2988, -0.2701, -0.1707, -1.1522, 0.2462], + [1.3264, -0.2744, -0.3310, -1.1545, 0.2403], + [1.3314, -0.2734, -0.3105, -1.1558, 0.2387], + [1.3363, -0.2779, -0.1683, -1.1320, 0.2390], + [1.3662, -0.2609, -0.4110, -1.0999, 0.2321], + [1.3796, -0.2636, -0.3915, -1.1038, 0.2307], + [1.3209, -0.2770, -0.5148, -0.7347, 0.2208], + [1.3205, -0.2821, -0.5581, -0.7462, 0.2182], + [1.3302, -0.2880, -0.4981, -0.7492, 0.2119], + [1.3132, -0.2871, -0.5063, -0.7533, 0.2103], + [1.1144, -0.3065, -0.5572, -0.8137, 0.1905], + [1.0196, -0.3003, 0.0227, -0.8400, 0.1677], + [1.0078, -0.3079, 0.1474, -0.8392, 0.1853], + [1.0269, -0.3099, 0.0285, -0.8580, 0.1771], + [1.0267, -0.3100, 0.0262, -0.8578, 0.1772], + [1.0764, -0.2997, 0.1328, -0.8925, 0.1745], + [1.0736, -0.3001, 0.1081, -0.8929, 0.1726], + [1.0678, -0.3024, 0.1891, -0.8931, 0.1719], + [1.0911, -0.3000, 0.0994, -0.8979, 0.1711], + [1.0908, -0.3005, 0.0906, -0.8981, 0.1713], + [1.0801, -0.3069, -0.0355, -0.8981, 0.1765], + [1.1085, -0.3117, 0.1850, -0.8749, 0.1620], + [0.9984, -0.3376, 0.5659, -0.8696, 0.1808], + [1.1165, -0.3357, -0.0249, -0.8350, 0.0692], + [1.1387, -0.3214, 0.0824, -0.8444, 0.0475], + [1.2924, -0.2922, -0.6439, -0.7666, 0.0701], + [1.5698, -0.5257, 0.1098, -0.8641, -0.1011], + [1.6453, -0.5272, 0.2241, -0.8317, -0.0215], + [1.6441, -0.5139, 0.2853, -0.8310, -0.0269], + [1.5947, -0.5017, 0.1260, -0.8471, -0.0137], + [1.5838, -0.5013, 0.1080, -0.8505, -0.0145], + [1.6726, -0.4944, -0.1613, -0.8227, -0.0206], + [1.2829, -0.4045, -0.4496, -0.7630, -0.0195], + [1.1279, -0.4203, -0.4611, -0.7772, -0.0174], + [1.2281, -0.4152, 0.1011, -0.7625, -0.0589], + [1.0691, -0.4452, 0.4701, -0.8390, -0.0221], + [1.0707, -0.4453, 0.4689, -0.8399, -0.0217], + [1.6109, -0.4191, 0.2096, -0.9584, -0.0488], + [1.6012, -0.4095, 0.4301, -0.9771, -0.0446], + [1.5902, -0.4308, 0.0350, -0.8648, -0.0457], + [1.4448, -0.4179, -0.3688, -0.7584, -0.0026], + [1.4450, -0.4180, -0.3791, -0.7575, -0.0023], + [1.4060, -0.4274, -0.5805, -0.6579, 0.0065], + [1.3527, -0.4308, -0.7075, -0.5849, 0.0222], + [1.3832, -0.4496, -0.6074, -0.6392, 0.0158], + [1.4081, -0.4536, -0.3465, -0.6110, 0.0586], + [1.2291, -0.4531, 0.1552, -0.7252, 0.0818] + ] +} + +""" +Real GDP, 1947:1 - 2014:1 + +See http://research.stlouisfed.org/fred2/series/GDPC1 + +Stata Code: test_kalman_filter_gdp.do +R Code: test_kalman_filter_gdp.R + +""" +gdp = { + 'stata_params': [ + 0.40725515, 0.18782621, -0.01514009, -0.01027267, -0.03642297, + 0.11576416, 0.02573029, -.00766572, 0.13506498, 0.08649569, + 0.06942822, -0.10685783, 0.00008 + ], + 'stata_loglike': 883.1262237746861 +} diff --git a/statsmodels/tsa/statespace/tests/results/results_realgdpar_stata.csv b/statsmodels/tsa/statespace/tests/results/results_realgdpar_stata.csv new file mode 100644 index 0000000..a513771 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_realgdpar_stata.csv @@ -0,0 +1,270 @@ +value,u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,est_u1,est_u2,est_u3,est_u4,est_u5,est_u6,est_u7,est_u8,est_u9,est_u10,est_u11,est_u12,rstd +1932.6,,,,,,,,,,,,,,,,,,,,,,,,, +1930.4,-.0011387,-.0007001,-.0005906,-.0004509,-.0003869,-.0003433,-.0003954,-.0004074,-.0004279,-.0004964,-.0004902,-.0004586,0,0,0,0,0,0,0,0,0,0,0,0,-.093052 +1928.4,-.0010366,-.0011387,-.0007762,-.0006323,-.000503,-.000437,-.0004309,-.0004734,-.0004917,-.0005387,-.0005843,-.0005649,-.0007001,-.0011387,-.0007001,-.0005906,-.0004509,-.0003869,-.0003433,-.0003954,-.0004074,-.0004279,-.0004964,-.0004902,-.0348711 +1958.8,.0156412,-.0010366,-.0011387,-.0004939,.0003143,.0008934,.003088,.0030249,.0030535,.0044029,.0032973,.0021753,-.0007507,-.0010366,-.0011387,-.0007762,-.0006323,-.000503,-.000437,-.0004309,-.0004734,-.0004917,-.0005387,-.0005843,1.743676 +1987.6,.014596,.0156412,-.0010366,-.0011387,-.0001236,.0008948,.002462,.0046356,.0046186,.0052618,.0061318,.0045381,.0071355,.0156412,-.0010366,-.0011387,-.0004939,.0003143,.0008934,.003088,.0030249,.0030535,.0044029,.0032973,.7937142 +2019.9,.01612,.014596,.0156412,-.0010366,-.0011387,.0002068,.002042,.0036374,.0058731,.0063881,.006623,.0071015,.0100651,.014596,.0156412,-.0010366,-.0011387,-.0001236,.0008948,.002462,.0046356,.0046186,.0052618,.0061318,.6449665 +2031.2,.005579,.01612,.014596,.0156412,-.0010366,-.0011387,-.0005558,.0012452,.0027547,.0045608,.0053615,.0059134,.0102171,.01612,.014596,.0156412,-.0010366,-.0011387,.0002068,.002042,.0036374,.0058731,.0063881,.006623,-.494795 +2033.3,.0010333,.005579,.01612,.014596,.0156412,-.0010366,-.0011387,-.0009786,.0007049,.0016981,.0037117,.0047354,.0053072,.005579,.01612,.014596,.0156412,-.0010366,-.0011387,-.0005558,.0012452,.0027547,.0045608,.0053615,-.4622235 +2005.6,-.0137167,.0010333,.005579,.01612,.014596,.0156412,-.0010366,-.0011387,-.0021525,-.0022626,-.0008202,.0018233,.000357,.0010333,.005579,.01612,.014596,.0156412,-.0010366,-.0011387,-.0009786,.0007049,.0016981,.0037117,-1.529596 +1998.8,-.0033965,-.0137167,.0010333,.005579,.01612,.014596,.0156412,-.0010366,-.0011387,-.0018497,-.0020054,-.0006163,-.0051193,-.0137167,.0010333,.005579,.01612,.014596,.0156412,-.0010366,-.0011387,-.0021525,-.0022626,-.0008202,.1878934 +2020.8,.0109468,-.0033965,-.0137167,.0010333,.005579,.01612,.014596,.0156412,-.0010366,-.0011387,-.0007712,-.0012061,-.0029068,-.0033965,-.0137167,.0010333,.005579,.01612,.014596,.0156412,-.0010366,-.0011387,-.0018497,-.0020054,1.534838 +2002.7,-.0089974,.0109468,-.0033965,-.0137167,.0010333,.005579,.01612,.014596,.0156412,-.0010366,-.0011387,-.0011583,.0057726,.0109468,-.0033965,-.0137167,.0010333,.005579,.01612,.014596,.0156412,-.0010366,-.0011387,-.0007712,-1.641364 +2082.5,.039073,-.0089974,.0109468,-.0033965,-.0137167,.0010333,.005579,.01612,.014596,.0156412,-.0010366,-.0011387,.0015629,-.0089974,.0109468,-.0033965,-.0137167,.0010333,.005579,.01612,.014596,.0156412,-.0010366,-.0011387,4.169847 +2145.5,.0298033,.039073,-.0089974,.0109468,-.0033965,-.0137167,.0010333,.005579,.01612,.014596,.0156412,-.0010366,.0181051,.039073,-.0089974,.0109468,-.0033965,-.0137167,.0010333,.005579,.01612,.014596,.0156412,-.0010366,1.307929 +2228.2,.0378218,.0298033,.039073,-.0089974,.0109468,-.0033965,-.0137167,.0010333,.005579,.01612,.014596,.0156412,.0226563,.0298033,.039073,-.0089974,.0109468,-.0033965,-.0137167,.0010333,.005579,.01612,.014596,.0156412,1.695591 +2271.2,.019114,.0378218,.0298033,.039073,-.0089974,.0109468,-.0033965,-.0137167,.0010333,.005579,.01612,.014596,.0208389,.0378218,.0298033,.039073,-.0089974,.0109468,-.0033965,-.0137167,.0010333,.005579,.01612,.014596,-.1928484 +2302.3,.0136003,.019114,.0378218,.0298033,.039073,-.0089974,.0109468,-.0033965,-.0137167,.0010333,.005579,.01612,.0158299,.019114,.0378218,.0298033,.039073,-.0089974,.0109468,-.0033965,-.0137167,.0010333,.005579,.01612,-.2492786 +2342.3,.0172248,.0136003,.019114,.0378218,.0298033,.039073,-.0089974,.0109468,-.0033965,-.0137167,.0010333,.005579,.0029946,.0136003,.019114,.0378218,.0298033,.039073,-.0089974,.0109468,-.0033965,-.0137167,.0010333,.005579,1.591019 +2390.5,.0203691,.0172248,.0136003,.019114,.0378218,.0298033,.039073,-.0089974,.0109468,-.0033965,-.0137167,.0010333,.0098442,.0172248,.0136003,.019114,.0378218,.0298033,.039073,-.0089974,.0109468,-.0033965,-.0137167,.0010333,1.176747 +2395.8,.0022149,.0203691,.0172248,.0136003,.019114,.0378218,.0298033,.039073,-.0089974,.0109468,-.0033965,-.0137167,.0143973,.0203691,.0172248,.0136003,.019114,.0378218,.0298033,.039073,-.0089974,.0109468,-.0033965,-.0137167,-1.362067 +2421.1,.0105047,.0022149,.0203691,.0172248,.0136003,.019114,.0378218,.0298033,.039073,-.0089974,.0109468,-.0033965,.0094384,.0022149,.0203691,.0172248,.0136003,.019114,.0378218,.0298033,.039073,-.0089974,.0109468,-.0033965,.119216 +2426.2,.0021043,.0105047,.0022149,.0203691,.0172248,.0136003,.019114,.0378218,.0298033,.039073,-.0089974,.0109468,.012293,.0105047,.0022149,.0203691,.0172248,.0136003,.019114,.0378218,.0298033,.039073,-.0089974,.0109468,-1.139156 +2443.7,.0071869,.0021043,.0105047,.0022149,.0203691,.0172248,.0136003,.019114,.0378218,.0298033,.039073,-.0089974,.0093468,.0021043,.0105047,.0022149,.0203691,.0172248,.0136003,.019114,.0378218,.0298033,.039073,-.0089974,-.241491 +2523.9,.0322919,.0071869,.0021043,.0105047,.0022149,.0203691,.0172248,.0136003,.019114,.0378218,.0298033,.039073,.0159563,.0071869,.0021043,.0105047,.0022149,.0203691,.0172248,.0136003,.019114,.0378218,.0298033,.039073,1.826415 +2570.9,.0184507,.0322919,.0071869,.0021043,.0105047,.0022149,.0203691,.0172248,.0136003,.019114,.0378218,.0298033,.0207244,.0322919,.0071869,.0021043,.0105047,.0022149,.0203691,.0172248,.0136003,.019114,.0378218,.0298033,-.2542113 +2591,.0077882,.0184507,.0322919,.0071869,.0021043,.0105047,.0022149,.0203691,.0172248,.0136003,.019114,.0378218,.0166462,.0184507,.0322919,.0071869,.0021043,.0105047,.0022149,.0203691,.0172248,.0136003,.019114,.0378218,-.9903859 +2576.4,-.005651,.0077882,.0184507,.0322919,.0071869,.0021043,.0105047,.0022149,.0203691,.0172248,.0136003,.019114,.0079032,.0077882,.0184507,.0322919,.0071869,.0021043,.0105047,.0022149,.0203691,.0172248,.0136003,.019114,-1.515441 +2537.3,-.0152926,-.005651,.0077882,.0184507,.0322919,.0071869,.0021043,.0105047,.0022149,.0203691,.0172248,.0136003,.0019283,-.005651,.0077882,.0184507,.0322919,.0071869,.0021043,.0105047,.0022149,.0203691,.0172248,.0136003,-1.925405 +2525.6,-.004622,-.0152926,-.005651,.0077882,.0184507,.0322919,.0071869,.0021043,.0105047,.0022149,.0203691,.0172248,-.0061639,-.0152926,-.005651,.0077882,.0184507,.0322919,.0071869,.0021043,.0105047,.0022149,.0203691,.0172248,.172391 +2528.3,.0010686,-.004622,-.0152926,-.005651,.0077882,.0184507,.0322919,.0071869,.0021043,.0105047,.0022149,.0203691,-.0003301,-.004622,-.0152926,-.005651,.0077882,.0184507,.0322919,.0071869,.0021043,.0105047,.0022149,.0203691,.1563878 +2556.9,.0112486,.0010686,-.004622,-.0152926,-.005651,.0077882,.0184507,.0322919,.0071869,.0021043,.0105047,.0022149,.0016547,.0010686,-.004622,-.0152926,-.005651,.0077882,.0184507,.0322919,.0071869,.0021043,.0105047,.0022149,1.072655 +2606.8,.0193276,.0112486,.0010686,-.004622,-.0152926,-.005651,.0077882,.0184507,.0322919,.0071869,.0021043,.0105047,.0079888,.0112486,.0010686,-.004622,-.0152926,-.005651,.0077882,.0184507,.0322919,.0071869,.0021043,.0105047,1.267752 +2681.2,.028141,.0193276,.0112486,.0010686,-.004622,-.0152926,-.005651,.0077882,.0184507,.0322919,.0071869,.0021043,.0139839,.0193276,.0112486,.0010686,-.004622,-.0152926,-.005651,.0077882,.0184507,.0322919,.0071869,.0021043,1.582858 +2724.8,.0161309,.028141,.0193276,.0112486,.0010686,-.004622,-.0152926,-.005651,.0077882,.0184507,.0322919,.0071869,.0186617,.028141,.0193276,.0112486,.0010686,-.004622,-.0152926,-.005651,.0077882,.0184507,.0322919,.0071869,-.2829569 +2761.5,.0133786,.0161309,.028141,.0193276,.0112486,.0010686,-.004622,-.0152926,-.005651,.0077882,.0184507,.0322919,.0146445,.0161309,.028141,.0193276,.0112486,.0010686,-.004622,-.0152926,-.005651,.0077882,.0184507,.0322919,-.1415347 +2778.1,.0059934,.0133786,.0161309,.028141,.0193276,.0112486,.0010686,-.004622,-.0152926,-.005651,.0077882,.0184507,.0053068,.0133786,.0161309,.028141,.0193276,.0112486,.0010686,-.004622,-.0152926,-.005651,.0077882,.0184507,.0767654 +2767.4,-.003859,.0059934,.0133786,.0161309,.028141,.0193276,.0112486,.0010686,-.004622,-.0152926,-.005651,.0077882,.0010963,.0059934,.0133786,.0161309,.028141,.0193276,.0112486,.0010686,-.004622,-.0152926,-.005651,.0077882,-.5540426 +2790.2,.0082049,-.003859,.0059934,.0133786,.0161309,.028141,.0193276,.0112486,.0010686,-.004622,-.0152926,-.005651,-.002492,-.003859,.0059934,.0133786,.0161309,.028141,.0193276,.0112486,.0010686,-.004622,-.0152926,-.005651,1.195988 +2787.9,-.0008245,.0082049,-.003859,.0059934,.0133786,.0161309,.028141,.0193276,.0112486,.0010686,-.004622,-.0152926,.0047564,.0082049,-.003859,.0059934,.0133786,.0161309,.028141,.0193276,.0112486,.0010686,-.004622,-.0152926,-.6239759 +2833.5,.0162239,-.0008245,.0082049,-.003859,.0059934,.0133786,.0161309,.028141,.0193276,.0112486,.0010686,-.004622,.0060832,-.0008245,.0082049,-.003859,.0059934,.0133786,.0161309,.028141,.0193276,.0112486,.0010686,-.004622,1.133797 +2851.8,.0064378,.0162239,-.0008245,.0082049,-.003859,.0059934,.0133786,.0161309,.028141,.0193276,.0112486,.0010686,.0120492,.0162239,-.0008245,.0082049,-.003859,.0059934,.0133786,.0161309,.028141,.0193276,.0112486,.0010686,-.6273873 +2845.5,-.0022116,.0064378,.0162239,-.0008245,.0082049,-.003859,.0059934,.0133786,.0161309,.028141,.0193276,.0112486,.0127917,.0064378,.0162239,-.0008245,.0082049,-.003859,.0059934,.0133786,.0161309,.028141,.0193276,.0112486,-1.677452 +2873.2,.0096874,-.0022116,.0064378,.0162239,-.0008245,.0082049,-.003859,.0059934,.0133786,.0161309,.028141,.0193276,.0041301,-.0022116,.0064378,.0162239,-.0008245,.0082049,-.003859,.0059934,.0133786,.0161309,.028141,.0193276,.6213431 +2843.7,-.0103202,.0096874,-.0022116,.0064378,.0162239,-.0008245,.0082049,-.003859,.0059934,.0133786,.0161309,.028141,.0071911,.0096874,-.0022116,.0064378,.0162239,-.0008245,.0082049,-.003859,.0059934,.0133786,.0161309,.028141,-1.957866 +2770,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.0162239,-.0008245,.0082049,-.003859,.0059934,.0133786,.0161309,-.0027822,-.0103202,.0096874,-.0022116,.0064378,.0162239,-.0008245,.0082049,-.003859,.0059934,.0133786,.0161309,-2.624847 +2788.3,.0065851,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.0162239,-.0008245,.0082049,-.003859,.0059934,.0133786,-.0119946,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.0162239,-.0008245,.0082049,-.003859,.0059934,.0133786,2.077324 +2852.7,.0228338,.0065851,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.0162239,-.0008245,.0082049,-.003859,.0059934,-.0011831,.0065851,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.0162239,-.0008245,.0082049,-.003859,.0059934,2.685236 +2919.5,.0231462,.0228338,.0065851,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.0162239,-.0008245,.0082049,-.003859,.010162,.0228338,.0065851,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.0162239,-.0008245,.0082049,-.003859,1.451706 +2973.8,.0184283,.0231462,.0228338,.0065851,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.0162239,-.0008245,.0082049,.0183783,.0231462,.0228338,.0065851,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.0162239,-.0008245,.0082049,.0055912 +3046.1,.0240211,.0184283,.0231462,.0228338,.0065851,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.0162239,-.0008245,.0128059,.0184283,.0231462,.0228338,.0065851,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.0162239,-.0008245,1.253936 +3040.2,-.0019388,.0240211,.0184283,.0231462,.0228338,.0065851,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.0162239,.0105122,.0240211,.0184283,.0231462,.0228338,.0065851,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.0162239,-1.3921 +3052.2,.0039396,-.0019388,.0240211,.0184283,.0231462,.0228338,.0065851,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.00237,-.0019388,.0240211,.0184283,.0231462,.0228338,.0065851,-.0262589,-.0103202,.0096874,-.0022116,.0064378,.1754956 +3120.2,.0220346,.0039396,-.0019388,.0240211,.0184283,.0231462,.0228338,.0065851,-.0262589,-.0103202,.0096874,-.0022116,.0014609,.0039396,-.0019388,.0240211,.0184283,.0231462,.0228338,.0065851,-.0262589,-.0103202,.0096874,-.0022116,2.300277 +3108.4,-.0037889,.0220346,.0039396,-.0019388,.0240211,.0184283,.0231462,.0228338,.0065851,-.0262589,-.0103202,.0096874,.0085112,.0220346,.0039396,-.0019388,.0240211,.0184283,.0231462,.0228338,.0065851,-.0262589,-.0103202,.0096874,-1.375231 +3116.1,.0024738,-.0037889,.0220346,.0039396,-.0019388,.0240211,.0184283,.0231462,.0228338,.0065851,-.0262589,-.0103202,.0011013,-.0037889,.0220346,.0039396,-.0019388,.0240211,.0184283,.0231462,.0228338,.0065851,-.0262589,-.0103202,.1534611 +3078.4,-.0121717,.0024738,-.0037889,.0220346,.0039396,-.0019388,.0240211,.0184283,.0231462,.0228338,.0065851,-.0262589,.0060032,.0024738,-.0037889,.0220346,.0039396,-.0019388,.0240211,.0184283,.0231462,.0228338,.0065851,-.0262589,-2.03207 +3099.3,.0067663,-.0121717,.0024738,-.0037889,.0220346,.0039396,-.0019388,.0240211,.0184283,.0231462,.0228338,.0065851,.0038119,-.0121717,.0024738,-.0037889,.0220346,.0039396,-.0019388,.0240211,.0184283,.0231462,.0228338,.0065851,.3303167 +3156.9,.0184135,.0067663,-.0121717,.0024738,-.0037889,.0220346,.0039396,-.0019388,.0240211,.0184283,.0231462,.0228338,.0052631,.0067663,-.0121717,.0024738,-.0037889,.0220346,.0039396,-.0019388,.0240211,.0184283,.0231462,.0228338,1.470301 +3209.6,.0165558,.0184135,.0067663,-.0121717,.0024738,-.0037889,.0220346,.0039396,-.0019388,.0240211,.0184283,.0231462,.0157392,.0184135,.0067663,-.0121717,.0024738,-.0037889,.0220346,.0039396,-.0019388,.0240211,.0184283,.0231462,.0912951 +3274.6,.02005,.0165558,.0184135,.0067663,-.0121717,.0024738,-.0037889,.0220346,.0039396,-.0019388,.0240211,.0184283,.0108536,.0165558,.0184135,.0067663,-.0121717,.0024738,-.0037889,.0220346,.0039396,-.0019388,.0240211,.0184283,1.028224 +3333.6,.0178566,.02005,.0165558,.0184135,.0067663,-.0121717,.0024738,-.0037889,.0220346,.0039396,-.0019388,.0240211,.0114531,.02005,.0165558,.0184135,.0067663,-.0121717,.0024738,-.0037889,.0220346,.0039396,-.0019388,.0240211,.7159553 +3369.5,.0107117,.0178566,.02005,.0165558,.0184135,.0067663,-.0121717,.0024738,-.0037889,.0220346,.0039396,-.0019388,.0096509,.0178566,.02005,.0165558,.0184135,.0067663,-.0121717,.0024738,-.0037889,.0220346,.0039396,-.0019388,.1185992 +3401.6,.0094814,.0107117,.0178566,.02005,.0165558,.0184135,.0067663,-.0121717,.0024738,-.0037889,.0220346,.0039396,.008898,.0107117,.0178566,.02005,.0165558,.0184135,.0067663,-.0121717,.0024738,-.0037889,.0220346,.0039396,.0652299 +3414.8,.0038729,.0094814,.0107117,.0178566,.02005,.0165558,.0184135,.0067663,-.0121717,.0024738,-.0037889,.0220346,.0083082,.0094814,.0107117,.0178566,.02005,.0165558,.0184135,.0067663,-.0121717,.0024738,-.0037889,.0220346,-.4959019 +3452.8,.0110674,.0038729,.0094814,.0107117,.0178566,.02005,.0165558,.0184135,.0067663,-.0121717,.0024738,-.0037889,.0005731,.0038729,.0094814,.0107117,.0178566,.02005,.0165558,.0184135,.0067663,-.0121717,.0024738,-.0037889,1.17333 +3497.8,.012948,.0110674,.0038729,.0094814,.0107117,.0178566,.02005,.0165558,.0184135,.0067663,-.0121717,.0024738,.0073743,.0110674,.0038729,.0094814,.0107117,.0178566,.02005,.0165558,.0184135,.0067663,-.0121717,.0024738,.6231744 +3566.1,.0193386,.012948,.0110674,.0038729,.0094814,.0107117,.0178566,.02005,.0165558,.0184135,.0067663,-.0121717,.0112247,.012948,.0110674,.0038729,.0094814,.0107117,.0178566,.02005,.0165558,.0184135,.0067663,-.0121717,.9071824 +3591.5,.0070972,.0193386,.012948,.0110674,.0038729,.0094814,.0107117,.0178566,.02005,.0165558,.0184135,.0067663,.0169,.0193386,.012948,.0110674,.0038729,.0094814,.0107117,.0178566,.02005,.0165558,.0184135,.0067663,-1.096013 +3669.2,.0214043,.0070972,.0193386,.012948,.0110674,.0038729,.0094814,.0107117,.0178566,.02005,.0165558,.0184135,.0120037,.0070972,.0193386,.012948,.0110674,.0038729,.0094814,.0107117,.0178566,.02005,.0165558,.0184135,1.051042 +3712.9,.0118389,.0214043,.0070972,.0193386,.012948,.0110674,.0038729,.0094814,.0107117,.0178566,.02005,.0165558,.0131592,.0214043,.0070972,.0193386,.012948,.0110674,.0038729,.0094814,.0107117,.0178566,.02005,.0165558,-.1476137 +3763.3,.013483,.0118389,.0214043,.0070972,.0193386,.012948,.0110674,.0038729,.0094814,.0107117,.0178566,.02005,.0119864,.0118389,.0214043,.0070972,.0193386,.012948,.0110674,.0038729,.0094814,.0107117,.0178566,.02005,.1673331 +3776.6,.0035286,.013483,.0118389,.0214043,.0070972,.0193386,.012948,.0110674,.0038729,.0094814,.0107117,.0178566,.0096717,.013483,.0118389,.0214043,.0070972,.0193386,.012948,.0110674,.0038729,.0094814,.0107117,.0178566,-.6868398 +3869.8,.0243778,.0035286,.013483,.0118389,.0214043,.0070972,.0193386,.012948,.0110674,.0038729,.0094814,.0107117,.0059777,.0035286,.013483,.0118389,.0214043,.0070972,.0193386,.012948,.0110674,.0038729,.0094814,.0107117,2.057248 +3922.7,.0135775,.0243778,.0035286,.013483,.0118389,.0214043,.0070972,.0193386,.012948,.0110674,.0038729,.0094814,.0120488,.0243778,.0035286,.013483,.0118389,.0214043,.0070972,.0193386,.012948,.0110674,.0038729,.0094814,.1709145 +4002.4,.0201139,.0135775,.0243778,.0035286,.013483,.0118389,.0214043,.0070972,.0193386,.012948,.0110674,.0038729,.0139592,.0135775,.0243778,.0035286,.013483,.0118389,.0214043,.0070972,.0193386,.012948,.0110674,.0038729,.6881392 +4096.7,.0232878,.0201139,.0135775,.0243778,.0035286,.013483,.0118389,.0214043,.0070972,.0193386,.012948,.0110674,.0157986,.0201139,.0135775,.0243778,.0035286,.013483,.0118389,.0214043,.0070972,.0193386,.012948,.0110674,.8373353 +4197.9,.0244026,.0232878,.0201139,.0135775,.0243778,.0035286,.013483,.0118389,.0214043,.0070972,.0193386,.012948,.0167265,.0232878,.0201139,.0135775,.0243778,.0035286,.013483,.0118389,.0214043,.0070972,.0193386,.012948,.8582383 +4215.1,.0040894,.0244026,.0232878,.0201139,.0135775,.0243778,.0035286,.013483,.0118389,.0214043,.0070972,.0193386,.0171088,.0244026,.0232878,.0201139,.0135775,.0243778,.0035286,.013483,.0118389,.0214043,.0070972,.0193386,-1.455651 +4245.2,.0071154,.0040894,.0244026,.0232878,.0201139,.0135775,.0243778,.0035286,.013483,.0118389,.0214043,.0070972,.0098813,.0040894,.0244026,.0232878,.0201139,.0135775,.0243778,.0035286,.013483,.0118389,.0214043,.0070972,-.3092494 +4281.6,.0085382,.0071154,.0040894,.0244026,.0232878,.0201139,.0135775,.0243778,.0035286,.013483,.0118389,.0214043,.0080693,.0071154,.0040894,.0244026,.0232878,.0201139,.0135775,.0243778,.0035286,.013483,.0118389,.0214043,.0524299 +4320.9,.0091362,.0085382,.0071154,.0040894,.0244026,.0232878,.0201139,.0135775,.0243778,.0035286,.013483,.0118389,.0063214,.0085382,.0071154,.0040894,.0244026,.0232878,.0201139,.0135775,.0243778,.0035286,.013483,.0118389,.3147117 +4324.7,.0008793,.0091362,.0085382,.0071154,.0040894,.0244026,.0232878,.0201139,.0135775,.0243778,.0035286,.013483,.0106641,.0091362,.0085382,.0071154,.0040894,.0244026,.0232878,.0201139,.0135775,.0243778,.0035286,.013483,-1.094001 +4362,.0085878,.0008793,.0091362,.0085382,.0071154,.0040894,.0244026,.0232878,.0201139,.0135775,.0243778,.0035286,.0077394,.0008793,.0091362,.0085382,.0071154,.0040894,.0244026,.0232878,.0201139,.0135775,.0243778,.0035286,.0948611 +4397.1,.0080147,.0085878,.0008793,.0091362,.0085382,.0071154,.0040894,.0244026,.0232878,.0201139,.0135775,.0243778,.0093067,.0085878,.0008793,.0091362,.0085382,.0071154,.0040894,.0244026,.0232878,.0201139,.0135775,.0243778,-.1444559 +4486.4,.0201054,.0080147,.0085878,.0008793,.0091362,.0085382,.0071154,.0040894,.0244026,.0232878,.0201139,.0135775,.0084236,.0080147,.0085878,.0008793,.0091362,.0085382,.0071154,.0040894,.0244026,.0232878,.0201139,.0135775,1.306095 +4562.2,.0167542,.0201054,.0080147,.0085878,.0008793,.0091362,.0085382,.0071154,.0040894,.0244026,.0232878,.0201139,.0156176,.0201054,.0080147,.0085878,.0008793,.0091362,.0085382,.0071154,.0040894,.0244026,.0232878,.0201139,.1270776 +4595,.007164,.0167542,.0201054,.0080147,.0085878,.0008793,.0091362,.0085382,.0071154,.0040894,.0244026,.0232878,.0137113,.0167542,.0201054,.0080147,.0085878,.0008793,.0091362,.0085382,.0071154,.0040894,.0244026,.0232878,-.7320256 +4615.4,.0044298,.007164,.0167542,.0201054,.0080147,.0085878,.0008793,.0091362,.0085382,.0071154,.0040894,.0244026,.0061568,.007164,.0167542,.0201054,.0080147,.0085878,.0008793,.0091362,.0085382,.0071154,.0040894,.0244026,-.1930911 +4687.1,.0154152,.0044298,.007164,.0167542,.0201054,.0080147,.0085878,.0008793,.0091362,.0085382,.0071154,.0040894,.0027893,.0044298,.007164,.0167542,.0201054,.0080147,.0085878,.0008793,.0091362,.0085382,.0071154,.0040894,1.411656 +4702.1,.0031958,.0154152,.0044298,.007164,.0167542,.0201054,.0080147,.0085878,.0008793,.0091362,.0085382,.0071154,.0092687,.0154152,.0044298,.007164,.0167542,.0201054,.0080147,.0085878,.0008793,.0091362,.0085382,.0071154,-.6789862 +4731.5,.0062332,.0031958,.0154152,.0044298,.007164,.0167542,.0201054,.0080147,.0085878,.0008793,.0091362,.0085382,.0066553,.0031958,.0154152,.0044298,.007164,.0167542,.0201054,.0080147,.0085878,.0008793,.0091362,.0085382,-.0471922 +4711,-.0043421,.0062332,.0031958,.0154152,.0044298,.007164,.0167542,.0201054,.0080147,.0085878,.0008793,.0091362,.0059522,.0062332,.0031958,.0154152,.0044298,.007164,.0167542,.0201054,.0080147,.0085878,.0008793,.0091362,-1.150968 +4702.8,-.0017424,-.0043421,.0062332,.0031958,.0154152,.0044298,.007164,.0167542,.0201054,.0080147,.0085878,.0008793,.0010507,-.0043421,.0062332,.0031958,.0154152,.0044298,.007164,.0167542,.0201054,.0080147,.0085878,.0008793,-.3122848 +4711.1,.0017633,-.0017424,-.0043421,.0062332,.0031958,.0154152,.0044298,.007164,.0167542,.0201054,.0080147,.0085878,.0022659,-.0017424,-.0043421,.0062332,.0031958,.0154152,.0044298,.007164,.0167542,.0201054,.0080147,.0085878,-.0561942 +4752.8,.008812,.0017633,-.0017424,-.0043421,.0062332,.0031958,.0154152,.0044298,.007164,.0167542,.0201054,.0080147,.0057605,.0017633,-.0017424,-.0043421,.0062332,.0031958,.0154152,.0044298,.007164,.0167542,.0201054,.0080147,.3411753 +4703.9,-.0103416,.008812,.0017633,-.0017424,-.0043421,.0062332,.0031958,.0154152,.0044298,.007164,.0167542,.0201054,.0074527,.008812,.0017633,-.0017424,-.0043421,.0062332,.0031958,.0154152,.0044298,.007164,.0167542,.0201054,-1.989519 +4829.9,.0264339,-.0103416,.008812,.0017633,-.0017424,-.0043421,.0062332,.0031958,.0154152,.0044298,.007164,.0167542,-.0014888,-.0103416,.008812,.0017633,-.0017424,-.0043421,.0062332,.0031958,.0154152,.0044298,.007164,.0167542,3.121936 +4857.4,.0056772,.0264339,-.0103416,.008812,.0017633,-.0017424,-.0043421,.0062332,.0031958,.0154152,.0044298,.007164,.0095404,.0264339,-.0103416,.008812,.0017633,-.0017424,-.0043421,.0062332,.0031958,.0154152,.0044298,.007164,-.431924 +4895.3,.0077724,.0056772,.0264339,-.0103416,.008812,.0017633,-.0017424,-.0043421,.0062332,.0031958,.0154152,.0044298,.0082247,.0056772,.0264339,-.0103416,.008812,.0017633,-.0017424,-.0043421,.0062332,.0031958,.0154152,.0044298,-.0505638 +4909.5,.0028963,.0077724,.0056772,.0264339,-.0103416,.008812,.0017633,-.0017424,-.0043421,.0062332,.0031958,.0154152,.0055245,.0077724,.0056772,.0264339,-.0103416,.008812,.0017633,-.0017424,-.0043421,.0062332,.0031958,.0154152,-.2938535 +4997,.0176659,.0028963,.0077724,.0056772,.0264339,-.0103416,.008812,.0017633,-.0017424,-.0043421,.0062332,.0031958,.0022647,.0028963,.0077724,.0056772,.0264339,-.0103416,.008812,.0017633,-.0017424,-.0043421,.0062332,.0031958,1.72194 +5112.7,.0228901,.0176659,.0028963,.0077724,.0056772,.0264339,-.0103416,.008812,.0017633,-.0017424,-.0043421,.0062332,.0050961,.0176659,.0028963,.0077724,.0056772,.0264339,-.0103416,.008812,.0017633,-.0017424,-.0043421,.0062332,1.989477 +5159.8,.0091696,.0228901,.0176659,.0028963,.0077724,.0056772,.0264339,-.0103416,.008812,.0017633,-.0017424,-.0043421,.0141561,.0228901,.0176659,.0028963,.0077724,.0056772,.0264339,-.0103416,.008812,.0017633,-.0017424,-.0043421,-.5575274 +5245.5,.0164728,.0091696,.0228901,.0176659,.0028963,.0077724,.0056772,.0264339,-.0103416,.008812,.0017633,-.0017424,.0105558,.0091696,.0228901,.0176659,.0028963,.0077724,.0056772,.0264339,-.0103416,.008812,.0017633,-.0017424,.6615613 +5374.7,.024333,.0164728,.0091696,.0228901,.0176659,.0028963,.0077724,.0056772,.0264339,-.0103416,.008812,.0017633,.0083146,.0164728,.0091696,.0228901,.0176659,.0028963,.0077724,.0056772,.0264339,-.0103416,.008812,.0017633,1.790953 +5435.6,.0112667,.024333,.0164728,.0091696,.0228901,.0176659,.0028963,.0077724,.0056772,.0264339,-.0103416,.008812,.0155773,.024333,.0164728,.0091696,.0228901,.0176659,.0028963,.0077724,.0056772,.0264339,-.0103416,.008812,-.4819475 +5406.1,-.0054417,.0112667,.024333,.0164728,.0091696,.0228901,.0176659,.0028963,.0077724,.0056772,.0264339,-.0103416,.0114351,.0112667,.024333,.0164728,.0091696,.0228901,.0176659,.0028963,.0077724,.0056772,.0264339,-.0103416,-1.886924 +5456.5,.0092793,-.0054417,.0112667,.024333,.0164728,.0091696,.0228901,.0176659,.0028963,.0077724,.0056772,.0264339,.0065918,-.0054417,.0112667,.024333,.0164728,.0091696,.0228901,.0176659,.0028963,.0077724,.0056772,.0264339,.3004719 +5411.2,-.008337,.0092793,-.0054417,.0112667,.024333,.0164728,.0091696,.0228901,.0176659,.0028963,.0077724,.0056772,.0018844,.0092793,-.0054417,.0112667,.024333,.0164728,.0091696,.0228901,.0176659,.0028963,.0077724,.0056772,-1.14282 +5425.4,.0026207,-.008337,.0092793,-.0054417,.0112667,.024333,.0164728,.0091696,.0228901,.0176659,.0028963,.0077724,.0019649,-.008337,.0092793,-.0054417,.0112667,.024333,.0164728,.0091696,.0228901,.0176659,.0028963,.0077724,.0733202 +5372.8,-.0097418,.0026207,-.008337,.0092793,-.0054417,.0112667,.024333,.0164728,.0091696,.0228901,.0176659,.0028963,.0061671,.0026207,-.008337,.0092793,-.0054417,.0112667,.024333,.0164728,.0091696,.0228901,.0176659,.0028963,-1.778709 +5351.4,-.0039911,-.0097418,.0026207,-.008337,.0092793,-.0054417,.0112667,.024333,.0164728,.0091696,.0228901,.0176659,.0026934,-.0097418,.0026207,-.008337,.0092793,-.0054417,.0112667,.024333,.0164728,.0091696,.0228901,.0176659,-.7473763 +5286.7,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.0092793,-.0054417,.0112667,.024333,.0164728,.0091696,.0228901,-.0015543,-.0039911,-.0097418,.0026207,-.008337,.0092793,-.0054417,.0112667,.024333,.0164728,.0091696,.0228901,-1.186248 +5327.4,.0076694,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.0092793,-.0054417,.0112667,.024333,.0164728,.0091696,-.0015295,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.0092793,-.0054417,.0112667,.024333,.0164728,.0091696,1.028497 +5415.5,.0164013,.0076694,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.0092793,-.0054417,.0112667,.024333,.0164728,.0040093,.0076694,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.0092793,-.0054417,.0112667,.024333,.0164728,1.385495 +5488.5,.0133905,.0164013,.0076694,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.0092793,-.0054417,.0112667,.024333,.0088865,.0164013,.0076694,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.0092793,-.0054417,.0112667,.024333,.5035849 +5612.4,.0223227,.0133905,.0164013,.0076694,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.0092793,-.0054417,.0112667,.0066564,.0133905,.0164013,.0076694,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.0092793,-.0054417,.0112667,1.751579 +5654.8,.0075264,.0223227,.0133905,.0164013,.0076694,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.0092793,-.0054417,.0090841,.0223227,.0133905,.0164013,.0076694,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.0092793,-.0054417,-.1741627 +5683.6,.0050802,.0075264,.0223227,.0133905,.0164013,.0076694,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.0092793,.0060298,.0075264,.0223227,.0133905,.0164013,.0076694,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.0092793,-.1061653 +5726.2,.0074673,.0050802,.0075264,.0223227,.0133905,.0164013,.0076694,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.0003557,.0050802,.0075264,.0223227,.0133905,.0164013,.0076694,-.0121641,-.0039911,-.0097418,.0026207,-.008337,.7951205 +5792.9,.0115814,.0074673,.0050802,.0075264,.0223227,.0133905,.0164013,.0076694,-.0121641,-.0039911,-.0097418,.0026207,.0050447,.0074673,.0050802,.0075264,.0223227,.0133905,.0164013,.0076694,-.0121641,-.0039911,-.0097418,.0026207,.7308451 +5906.6,.0194368,.0115814,.0074673,.0050802,.0075264,.0223227,.0133905,.0164013,.0076694,-.0121641,-.0039911,-.0097418,.0041207,.0115814,.0074673,.0050802,.0075264,.0223227,.0133905,.0164013,.0076694,-.0121641,-.0039911,-.0097418,1.712443 +6011.1,.0175371,.0194368,.0115814,.0074673,.0050802,.0075264,.0223227,.0133905,.0164013,.0076694,-.0121641,-.0039911,.0132023,.0194368,.0115814,.0074673,.0050802,.0075264,.0223227,.0133905,.0164013,.0076694,-.0121641,-.0039911,.4846629 +6011.7,.0001001,.0175371,.0194368,.0115814,.0074673,.0050802,.0075264,.0223227,.0133905,.0164013,.0076694,-.0121641,.0141593,.0175371,.0194368,.0115814,.0074673,.0050802,.0075264,.0223227,.0133905,.0164013,.0076694,-.0121641,-1.571902 +6032.6,.0034704,.0001001,.0175371,.0194368,.0115814,.0074673,.0050802,.0075264,.0223227,.0133905,.0164013,.0076694,.0083197,.0001001,.0175371,.0194368,.0115814,.0074673,.0050802,.0075264,.0223227,.0133905,.0164013,.0076694,-.5421758 +6267.2,.0381517,.0034704,.0001001,.0175371,.0194368,.0115814,.0074673,.0050802,.0075264,.0223227,.0133905,.0164013,.005975,.0034704,.0001001,.0175371,.0194368,.0115814,.0074673,.0050802,.0075264,.0223227,.0133905,.0164013,3.597556 +6328.5,.0097332,.0381517,.0034704,.0001001,.0175371,.0194368,.0115814,.0074673,.0050802,.0075264,.0223227,.0133905,.0189181,.0381517,.0034704,.0001001,.0175371,.0194368,.0115814,.0074673,.0050802,.0075264,.0223227,.0133905,-1.026924 +6413.3,.0133114,.0097332,.0381517,.0034704,.0001001,.0175371,.0194368,.0115814,.0074673,.0050802,.0075264,.0223227,.0143844,.0097332,.0381517,.0034704,.0001001,.0175371,.0194368,.0115814,.0074673,.0050802,.0075264,.0223227,-.1199703 +6426.1,.0019932,.0133114,.0097332,.0381517,.0034704,.0001001,.0175371,.0194368,.0115814,.0074673,.0050802,.0075264,.008659,.0133114,.0097332,.0381517,.0034704,.0001001,.0175371,.0194368,.0115814,.0074673,.0050802,.0075264,-.7452847 +6433.9,.0012131,.0019932,.0133114,.0097332,.0381517,.0034704,.0001001,.0175371,.0194368,.0115814,.0074673,.0050802,.0047187,.0019932,.0133114,.0097332,.0381517,.0034704,.0001001,.0175371,.0194368,.0115814,.0074673,.0050802,-.3919497 +6480.1,.0071554,.0012131,.0019932,.0133114,.0097332,.0381517,.0034704,.0001001,.0175371,.0194368,.0115814,.0074673,.0030497,.0012131,.0019932,.0133114,.0097332,.0381517,.0034704,.0001001,.0175371,.0194368,.0115814,.0074673,.4590413 +6496.8,.002574,.0071554,.0012131,.0019932,.0133114,.0097332,.0381517,.0034704,.0001001,.0175371,.0194368,.0115814,.0111816,.0071554,.0012131,.0019932,.0133114,.0097332,.0381517,.0034704,.0001001,.0175371,.0194368,.0115814,-.9623886 +6517.9,.0032425,.002574,.0071554,.0012131,.0019932,.0133114,.0097332,.0381517,.0034704,.0001001,.0175371,.0194368,.0055927,.002574,.0071554,.0012131,.0019932,.0133114,.0097332,.0381517,.0034704,.0001001,.0175371,.0194368,-.2627645 +6385.7,-.0204916,.0032425,.002574,.0071554,.0012131,.0019932,.0133114,.0097332,.0381517,.0034704,.0001001,.0175371,.0027275,.0032425,.002574,.0071554,.0012131,.0019932,.0133114,.0097332,.0381517,.0034704,.0001001,.0175371,-2.596042 +6376,-.0015202,-.0204916,.0032425,.002574,.0071554,.0012131,.0019932,.0133114,.0097332,.0381517,.0034704,.0001001,-.0038082,-.0204916,.0032425,.002574,.0071554,.0012131,.0019932,.0133114,.0097332,.0381517,.0034704,.0001001,.2558169 +6494.1,.0183535,-.0015202,-.0204916,.0032425,.002574,.0071554,.0012131,.0019932,.0133114,.0097332,.0381517,.0034704,.0001304,-.0015202,-.0204916,.0032425,.002574,.0071554,.0012131,.0019932,.0133114,.0097332,.0381517,.0034704,2.037452 +6628.6,.0204992,.0183535,-.0015202,-.0204916,.0032425,.002574,.0071554,.0012131,.0019932,.0133114,.0097332,.0381517,.0131342,.0183535,-.0015202,-.0204916,.0032425,.002574,.0071554,.0012131,.0019932,.0133114,.0097332,.0381517,.823453 +6580.2,-.007328,.0204992,.0183535,-.0015202,-.0204916,.0032425,.002574,.0071554,.0012131,.0019932,.0133114,.0097332,.0104034,.0204992,.0183535,-.0015202,-.0204916,.0032425,.002574,.0071554,.0012131,.0019932,.0133114,.0097332,-1.982485 +6655.7,.0114088,-.007328,.0204992,.0183535,-.0015202,-.0204916,.0032425,.002574,.0071554,.0012131,.0019932,.0133114,.0019571,-.007328,.0204992,.0183535,-.0015202,-.0204916,.0032425,.002574,.0071554,.0012131,.0019932,.0133114,1.056756 +6578,-.0117435,.0114088,-.007328,.0204992,.0183535,-.0015202,-.0204916,.0032425,.002574,.0071554,.0012131,.0019932,.0003052,.0114088,-.007328,.0204992,.0183535,-.0015202,-.0204916,.0032425,.002574,.0071554,.0012131,.0019932,-1.347124 +6468,-.0168638,-.0117435,.0114088,-.007328,.0204992,.0183535,-.0015202,-.0204916,.0032425,.002574,.0071554,.0012131,-.0032982,-.0117435,.0114088,-.007328,.0204992,.0183535,-.0015202,-.0204916,.0032425,.002574,.0071554,.0012131,-1.516725 +6503.3,.0054426,-.0168638,-.0117435,.0114088,-.007328,.0204992,.0183535,-.0015202,-.0204916,.0032425,.002574,.0071554,-.0066473,-.0168638,-.0117435,.0114088,-.007328,.0204992,.0183535,-.0015202,-.0204916,.0032425,.002574,.0071554,1.351731 +6479.8,-.0036201,.0054426,-.0168638,-.0117435,.0114088,-.007328,.0204992,.0183535,-.0015202,-.0204916,.0032425,.002574,-.0008396,.0054426,-.0168638,-.0117435,.0114088,-.007328,.0204992,.0183535,-.0015202,-.0204916,.0032425,.002574,-.3108825 +6486.2,.000988,-.0036201,.0054426,-.0168638,-.0117435,.0114088,-.007328,.0204992,.0183535,-.0015202,-.0204916,.0032425,-.0029809,-.0036201,.0054426,-.0168638,-.0117435,.0114088,-.007328,.0204992,.0183535,-.0015202,-.0204916,.0032425,.4437471 +6571.1,.0130043,.000988,-.0036201,.0054426,-.0168638,-.0117435,.0114088,-.007328,.0204992,.0183535,-.0015202,-.0204916,.0017943,.000988,-.0036201,.0054426,-.0168638,-.0117435,.0114088,-.007328,.0204992,.0183535,-.0015202,-.0204916,1.253352 +6721.1,.0225706,.0130043,.000988,-.0036201,.0054426,-.0168638,-.0117435,.0114088,-.007328,.0204992,.0183535,-.0015202,.0115254,.0130043,.000988,-.0036201,.0054426,-.0168638,-.0117435,.0114088,-.007328,.0204992,.0183535,-.0015202,1.234924 +6852.7,.0193911,.0225706,.0130043,.000988,-.0036201,.0054426,-.0168638,-.0117435,.0114088,-.007328,.0204992,.0183535,.0113367,.0225706,.0130043,.000988,-.0036201,.0054426,-.0168638,-.0117435,.0114088,-.007328,.0204992,.0183535,.9005253 +6994,.0204096,.0193911,.0225706,.0130043,.000988,-.0036201,.0054426,-.0168638,-.0117435,.0114088,-.007328,.0204992,.0127166,.0193911,.0225706,.0130043,.000988,-.0036201,.0054426,-.0168638,-.0117435,.0114088,-.007328,.0204992,.860128 +7132.9,.0196648,.0204096,.0193911,.0225706,.0130043,.000988,-.0036201,.0054426,-.0168638,-.0117435,.0114088,-.007328,.0079944,.0204096,.0193911,.0225706,.0130043,.000988,-.0036201,.0054426,-.0168638,-.0117435,.0114088,-.007328,1.30482 +7258.2,.0174141,.0196648,.0204096,.0193911,.0225706,.0130043,.000988,-.0036201,.0054426,-.0168638,-.0117435,.0114088,.0091041,.0196648,.0204096,.0193911,.0225706,.0130043,.000988,-.0036201,.0054426,-.0168638,-.0117435,.0114088,.9291069 +7329.6,.0097895,.0174141,.0196648,.0204096,.0193911,.0225706,.0130043,.000988,-.0036201,.0054426,-.0168638,-.0117435,.0082559,.0174141,.0196648,.0204096,.0193911,.0225706,.0130043,.000988,-.0036201,.0054426,-.0168638,-.0117435,.1714669 +7388.1,.0079498,.0097895,.0174141,.0196648,.0204096,.0193911,.0225706,.0130043,.000988,-.0036201,.0054426,-.0168638,.0090497,.0097895,.0174141,.0196648,.0204096,.0193911,.0225706,.0130043,.000988,-.0036201,.0054426,-.0168638,-.1229765 +7461.5,.0098858,.0079498,.0097895,.0174141,.0196648,.0204096,.0193911,.0225706,.0130043,.000988,-.0036201,.0054426,.0085934,.0079498,.0097895,.0174141,.0196648,.0204096,.0193911,.0225706,.0130043,.000988,-.0036201,.0054426,.1445013 +7529.9,.0091248,.0098858,.0079498,.0097895,.0174141,.0196648,.0204096,.0193911,.0225706,.0130043,.000988,-.0036201,.0081734,.0098858,.0079498,.0097895,.0174141,.0196648,.0204096,.0193911,.0225706,.0130043,.000988,-.0036201,.1063623 +7647,.0154324,.0091248,.0098858,.0079498,.0097895,.0174141,.0196648,.0204096,.0193911,.0225706,.0130043,.000988,.0119994,.0091248,.0098858,.0079498,.0097895,.0174141,.0196648,.0204096,.0193911,.0225706,.0130043,.000988,.3838213 +7704.4,.0074778,.0154324,.0091248,.0098858,.0079498,.0097895,.0174141,.0196648,.0204096,.0193911,.0225706,.0130043,.0151449,.0154324,.0091248,.0098858,.0079498,.0097895,.0174141,.0196648,.0204096,.0193911,.0225706,.0130043,-.857237 +7775.8,.0092249,.0074778,.0154324,.0091248,.0098858,.0079498,.0097895,.0174141,.0196648,.0204096,.0193911,.0225706,.0114566,.0074778,.0154324,.0091248,.0098858,.0079498,.0097895,.0174141,.0196648,.0204096,.0193911,.0225706,-.2495166 +7811.5,.0045805,.0092249,.0074778,.0154324,.0091248,.0098858,.0079498,.0097895,.0174141,.0196648,.0204096,.0193911,.0088685,.0092249,.0074778,.0154324,.0091248,.0098858,.0079498,.0097895,.0174141,.0196648,.0204096,.0193911,-.4794197 +7890.1,.0100117,.0045805,.0092249,.0074778,.0154324,.0091248,.0098858,.0079498,.0097895,.0174141,.0196648,.0204096,.0076658,.0045805,.0092249,.0074778,.0154324,.0091248,.0098858,.0079498,.0097895,.0174141,.0196648,.0204096,.2622824 +7931,.0051708,.0100117,.0045805,.0092249,.0074778,.0154324,.0091248,.0098858,.0079498,.0097895,.0174141,.0196648,.0074216,.0100117,.0045805,.0092249,.0074778,.0154324,.0091248,.0098858,.0079498,.0097895,.0174141,.0196648,-.2516547 +7986.4,.0069609,.0051708,.0100117,.0045805,.0092249,.0074778,.0154324,.0091248,.0098858,.0079498,.0097895,.0174141,.0065235,.0051708,.0100117,.0045805,.0092249,.0074778,.0154324,.0091248,.0098858,.0079498,.0097895,.0174141,.0488979 +8076.1,.0111685,.0069609,.0051708,.0100117,.0045805,.0092249,.0074778,.0154324,.0091248,.0098858,.0079498,.0097895,.0053059,.0069609,.0051708,.0100117,.0045805,.0092249,.0074778,.0154324,.0091248,.0098858,.0079498,.0097895,.6554717 +8149.4,.0090351,.0111685,.0069609,.0051708,.0100117,.0045805,.0092249,.0074778,.0154324,.0091248,.0098858,.0079498,.0082433,.0111685,.0069609,.0051708,.0100117,.0045805,.0092249,.0074778,.0154324,.0091248,.0098858,.0079498,.0885319 +8283.8,.0163574,.0090351,.0111685,.0069609,.0051708,.0100117,.0045805,.0092249,.0074778,.0154324,.0091248,.0098858,.0086749,.0090351,.0111685,.0069609,.0051708,.0100117,.0045805,.0092249,.0074778,.0154324,.0091248,.0098858,.8589492 +8330.4,.0056105,.0163574,.0090351,.0111685,.0069609,.0051708,.0100117,.0045805,.0092249,.0074778,.0154324,.0091248,.0110578,.0163574,.0090351,.0111685,.0069609,.0051708,.0100117,.0045805,.0092249,.0074778,.0154324,.0091248,-.609049 +8440.5,.0131302,.0056105,.0163574,.0090351,.0111685,.0069609,.0051708,.0100117,.0045805,.0092249,.0074778,.0154324,.0076624,.0056105,.0163574,.0090351,.0111685,.0069609,.0051708,.0100117,.0045805,.0092249,.0074778,.0154324,.6113306 +8489.2,.0057526,.0131302,.0056105,.0163574,.0090351,.0111685,.0069609,.0051708,.0100117,.0045805,.0092249,.0074778,.0068027,.0131302,.0056105,.0163574,.0090351,.0111685,.0069609,.0051708,.0100117,.0045805,.0092249,.0074778,-.1174083 +8601.6,.013154,.0057526,.0131302,.0056105,.0163574,.0090351,.0111685,.0069609,.0051708,.0100117,.0045805,.0092249,.0072491,.0057526,.0131302,.0056105,.0163574,.0090351,.0111685,.0069609,.0051708,.0100117,.0045805,.0092249,.6602076 +8688.4,.0100403,.013154,.0057526,.0131302,.0056105,.0163574,.0090351,.0111685,.0069609,.0051708,.0100117,.0045805,.0077619,.013154,.0057526,.0131302,.0056105,.0163574,.0090351,.0111685,.0069609,.0051708,.0100117,.0045805,.254738 +8756.7,.0078306,.0100403,.013154,.0057526,.0131302,.0056105,.0163574,.0090351,.0111685,.0069609,.0051708,.0100117,.0097668,.0100403,.013154,.0057526,.0131302,.0056105,.0163574,.0090351,.0111685,.0069609,.0051708,.0100117,-.2164792 +8822.1,.0074406,.0078306,.0100403,.013154,.0057526,.0131302,.0056105,.0163574,.0090351,.0111685,.0069609,.0051708,.0067392,.0078306,.0100403,.013154,.0057526,.0131302,.0056105,.0163574,.0090351,.0111685,.0069609,.0051708,.0784123 +8840.7,.0021057,.0074406,.0078306,.0100403,.013154,.0057526,.0131302,.0056105,.0163574,.0090351,.0111685,.0069609,.0076604,.0074406,.0078306,.0100403,.013154,.0057526,.0131302,.0056105,.0163574,.0090351,.0111685,.0069609,-.6210486 +8937.5,.01089,.0021057,.0074406,.0078306,.0100403,.013154,.0057526,.0131302,.0056105,.0163574,.0090351,.0111685,.0055375,.0021057,.0074406,.0078306,.0100403,.013154,.0057526,.0131302,.0056105,.0163574,.0090351,.0111685,.5984473 +8972.1,.0038643,.01089,.0021057,.0074406,.0078306,.0100403,.013154,.0057526,.0131302,.0056105,.0163574,.0090351,.0074483,.01089,.0021057,.0074406,.0078306,.0100403,.013154,.0057526,.0131302,.0056105,.0163574,.0090351,-.4007184 +8974.3,.0002451,.0038643,.01089,.0021057,.0074406,.0078306,.0100403,.013154,.0057526,.0131302,.0056105,.0163574,.0071112,.0038643,.01089,.0021057,.0074406,.0078306,.0100403,.013154,.0057526,.0131302,.0056105,.0163574,-.7676749 +8897.8,-.0085611,.0002451,.0038643,.01089,.0021057,.0074406,.0078306,.0100403,.013154,.0057526,.0131302,.0056105,.0019864,.0002451,.0038643,.01089,.0021057,.0074406,.0078306,.0100403,.013154,.0057526,.0131302,.0056105,-1.17928 +8856.1,-.0046978,-.0085611,.0002451,.0038643,.01089,.0021057,.0074406,.0078306,.0100403,.013154,.0057526,.0131302,-.0001154,-.0085611,.0002451,.0038643,.01089,.0021057,.0074406,.0078306,.0100403,.013154,.0057526,.0131302,-.5123371 +8924.9,.0077391,-.0046978,-.0085611,.0002451,.0038643,.01089,.0021057,.0074406,.0078306,.0100403,.013154,.0057526,-.0020959,-.0046978,-.0085611,.0002451,.0038643,.01089,.0021057,.0074406,.0078306,.0100403,.013154,.0057526,1.099609 +8967.7,.0047836,.0077391,-.0046978,-.0085611,.0002451,.0038643,.01089,.0021057,.0074406,.0078306,.0100403,.013154,.0057382,.0077391,-.0046978,-.0085611,.0002451,.0038643,.01089,.0021057,.0074406,.0078306,.0100403,.013154,-.1067277 +9006.8,.0043507,.0047836,.0077391,-.0046978,-.0085611,.0002451,.0038643,.01089,.0021057,.0074406,.0078306,.0100403,.0052371,.0047836,.0077391,-.0046978,-.0085611,.0002451,.0038643,.01089,.0021057,.0074406,.0078306,.0100403,-.0991038 +9113.2,.0117445,.0043507,.0047836,.0077391,-.0046978,-.0085611,.0002451,.0038643,.01089,.0021057,.0074406,.0078306,.0033563,.0043507,.0047836,.0077391,-.0046978,-.0085611,.0002451,.0038643,.01089,.0021057,.0074406,.0078306,.9378498 +9213.7,.0109673,.0117445,.0043507,.0047836,.0077391,-.0046978,-.0085611,.0002451,.0038643,.01089,.0021057,.0074406,.0059378,.0117445,.0043507,.0047836,.0077391,-.0046978,-.0085611,.0002451,.0038643,.01089,.0021057,.0074406,.5623255 +9303.3,.0096779,.0109673,.0117445,.0043507,.0047836,.0077391,-.0046978,-.0085611,.0002451,.0038643,.01089,.0021057,.0063245,.0109673,.0117445,.0043507,.0047836,.0077391,-.0046978,-.0085611,.0002451,.0038643,.01089,.0021057,.3749302 +9396.5,.0099678,.0096779,.0109673,.0117445,.0043507,.0047836,.0077391,-.0046978,-.0085611,.0002451,.0038643,.01089,.0073436,.0096779,.0109673,.0117445,.0043507,.0047836,.0077391,-.0046978,-.0085611,.0002451,.0038643,.01089,.2933982 +9414,.0018606,.0099678,.0096779,.0109673,.0117445,.0043507,.0047836,.0077391,-.0046978,-.0085611,.0002451,.0038643,.0041905,.0099678,.0096779,.0109673,.0117445,.0043507,.0047836,.0077391,-.0046978,-.0085611,.0002451,.0038643,-.2604901 +9469.9,.0059204,.0018606,.0099678,.0096779,.0109673,.0117445,.0043507,.0047836,.0077391,-.0046978,-.0085611,.0002451,.0007395,.0018606,.0099678,.0096779,.0109673,.0117445,.0043507,.0047836,.0077391,-.0046978,-.0085611,.0002451,.5792586 +9516.1,.0048666,.0059204,.0018606,.0099678,.0096779,.0109673,.0117445,.0043507,.0047836,.0077391,-.0046978,-.0085611,.003564,.0059204,.0018606,.0099678,.0096779,.0109673,.0117445,.0043507,.0047836,.0077391,-.0046978,-.0085611,.1456355 +9643.1,.013258,.0048666,.0059204,.0018606,.0099678,.0096779,.0109673,.0117445,.0043507,.0047836,.0077391,-.0046978,.0060535,.0048666,.0059204,.0018606,.0099678,.0096779,.0109673,.0117445,.0043507,.0047836,.0077391,-.0046978,.8055044 +9737.6,.0097523,.013258,.0048666,.0059204,.0018606,.0099678,.0096779,.0109673,.0117445,.0043507,.0047836,.0077391,.0091949,.013258,.0048666,.0059204,.0018606,.0099678,.0096779,.0109673,.0117445,.0043507,.0047836,.0077391,.0623229 +9870.7,.0135756,.0097523,.013258,.0048666,.0059204,.0018606,.0099678,.0096779,.0109673,.0117445,.0043507,.0047836,.0090462,.0097523,.013258,.0048666,.0059204,.0018606,.0099678,.0096779,.0109673,.0117445,.0043507,.0047836,.5064127 +9928.9,.0058794,.0135756,.0097523,.013258,.0048666,.0059204,.0018606,.0099678,.0096779,.0109673,.0117445,.0043507,.0095798,.0135756,.0097523,.013258,.0048666,.0059204,.0018606,.0099678,.0096779,.0109673,.0117445,.0043507,-.413727 +10041.6,.0112867,.0058794,.0135756,.0097523,.013258,.0048666,.0059204,.0018606,.0099678,.0096779,.0109673,.0117445,.0077463,.0058794,.0135756,.0097523,.013258,.0048666,.0059204,.0018606,.0099678,.0096779,.0109673,.0117445,.3958473 +10075.9,.0034103,.0112867,.0058794,.0135756,.0097523,.013258,.0048666,.0059204,.0018606,.0099678,.0096779,.0109673,.0073036,.0112867,.0058794,.0135756,.0097523,.013258,.0048666,.0059204,.0018606,.0099678,.0096779,.0109673,-.4352866 +10111.1,.0034866,.0034103,.0112867,.0058794,.0135756,.0097523,.013258,.0048666,.0059204,.0018606,.0099678,.0096779,.0051532,.0034103,.0112867,.0058794,.0135756,.0097523,.013258,.0048666,.0059204,.0018606,.0099678,.0096779,-.1863364 +10197.7,.0085287,.0034866,.0034103,.0112867,.0058794,.0135756,.0097523,.013258,.0048666,.0059204,.0018606,.0099678,.003386,.0034866,.0034103,.0112867,.0058794,.0135756,.0097523,.013258,.0048666,.0059204,.0018606,.0099678,.5749851 +10270.1,.0070744,.0085287,.0034866,.0034103,.0112867,.0058794,.0135756,.0097523,.013258,.0048666,.0059204,.0018606,.0057008,.0085287,.0034866,.0034103,.0112867,.0058794,.0135756,.0097523,.013258,.0048666,.0059204,.0018606,.1535701 +10337.4,.0065317,.0070744,.0085287,.0034866,.0034103,.0112867,.0058794,.0135756,.0097523,.013258,.0048666,.0059204,.0073631,.0070744,.0085287,.0034866,.0034103,.0112867,.0058794,.0135756,.0097523,.013258,.0048666,.0059204,-.0929522 +10517.9,.0173101,.0065317,.0070744,.0085287,.0034866,.0034103,.0112867,.0058794,.0135756,.0097523,.013258,.0048666,.0072227,.0065317,.0070744,.0085287,.0034866,.0034103,.0112867,.0058794,.0135756,.0097523,.013258,.0048666,1.127842 +10615.2,.0092087,.0173101,.0065317,.0070744,.0085287,.0034866,.0034103,.0112867,.0058794,.0135756,.0097523,.013258,.0116725,.0173101,.0065317,.0070744,.0085287,.0034866,.0034103,.0112867,.0058794,.0135756,.0097523,.013258,-.2754648 +10727.4,.0105143,.0092087,.0173101,.0065317,.0070744,.0085287,.0034866,.0034103,.0112867,.0058794,.0135756,.0097523,.0081529,.0092087,.0173101,.0065317,.0070744,.0085287,.0034866,.0034103,.0112867,.0058794,.0135756,.0097523,.2640119 +10809.1,.0075865,.0105143,.0092087,.0173101,.0065317,.0070744,.0085287,.0034866,.0034103,.0112867,.0058794,.0135756,.0084091,.0105143,.0092087,.0173101,.0065317,.0070744,.0085287,.0034866,.0034103,.0112867,.0058794,.0135756,-.0919703 +10972.2,.0149765,.0075865,.0105143,.0092087,.0173101,.0065317,.0070744,.0085287,.0034866,.0034103,.0112867,.0058794,.0059154,.0075865,.0105143,.0092087,.0173101,.0065317,.0070744,.0085287,.0034866,.0034103,.0112867,.0058794,1.013084 +11112,.012661,.0149765,.0075865,.0105143,.0092087,.0173101,.0065317,.0070744,.0085287,.0034866,.0034103,.0112867,.008434,.0149765,.0075865,.0105143,.0092087,.0173101,.0065317,.0070744,.0085287,.0034866,.0034103,.0112867,.4726057 +11198.2,.0077276,.012661,.0149765,.0075865,.0105143,.0092087,.0173101,.0065317,.0070744,.0085287,.0034866,.0034103,.0100129,.012661,.0149765,.0075865,.0105143,.0092087,.0173101,.0065317,.0070744,.0085287,.0034866,.0034103,-.2555064 +11309,.0098457,.0077276,.012661,.0149765,.0075865,.0105143,.0092087,.0173101,.0065317,.0070744,.0085287,.0034866,.0078697,.0077276,.012661,.0149765,.0075865,.0105143,.0092087,.0173101,.0065317,.0070744,.0085287,.0034866,.220928 +11418.7,.009654,.0098457,.0077276,.012661,.0149765,.0075865,.0105143,.0092087,.0173101,.0065317,.0070744,.0085287,.0078744,.0098457,.0077276,.012661,.0149765,.0075865,.0105143,.0092087,.0173101,.0065317,.0070744,.0085287,.1989748 +11568.1,.0129986,.009654,.0098457,.0077276,.012661,.0149765,.0075865,.0105143,.0092087,.0173101,.0065317,.0070744,.0085493,.009654,.0098457,.0077276,.012661,.0149765,.0075865,.0105143,.0092087,.0173101,.0065317,.0070744,.497452 +11757.9,.0162745,.0129986,.009654,.0098457,.0077276,.012661,.0149765,.0075865,.0105143,.0092087,.0173101,.0065317,.0107043,.0129986,.009654,.0098457,.0077276,.012661,.0149765,.0075865,.0105143,.0092087,.0173101,.0065317,.6227744 +11867.8,.0093031,.0162745,.0129986,.009654,.0098457,.0077276,.012661,.0149765,.0075865,.0105143,.0092087,.0173101,.0130539,.0162745,.0129986,.009654,.0098457,.0077276,.012661,.0149765,.0075865,.0105143,.0092087,.0173101,-.4193643 +11967.7,.0083828,.0093031,.0162745,.0129986,.009654,.0098457,.0077276,.012661,.0149765,.0075865,.0105143,.0092087,.0080202,.0093031,.0162745,.0129986,.009654,.0098457,.0077276,.012661,.0149765,.0075865,.0105143,.0092087,.0405419 +12120.1,.0126534,.0083828,.0093031,.0162745,.0129986,.009654,.0098457,.0077276,.012661,.0149765,.0075865,.0105143,.0080963,.0083828,.0093031,.0162745,.0129986,.009654,.0098457,.0077276,.012661,.0149765,.0075865,.0105143,.5095093 +12329.8,.0171537,.0126534,.0083828,.0093031,.0162745,.0129986,.009654,.0098457,.0077276,.012661,.0149765,.0075865,.0096665,.0126534,.0083828,.0093031,.0162745,.0129986,.009654,.0098457,.0077276,.012661,.0149765,.0075865,.8371191 +12365.2,.0028677,.0171537,.0126534,.0083828,.0093031,.0162745,.0129986,.009654,.0098457,.0077276,.012661,.0149765,.012593,.0171537,.0126534,.0083828,.0093031,.0162745,.0129986,.009654,.0098457,.0077276,.012661,.0149765,-1.087348 +12598.7,.0187073,.0028677,.0171537,.0126534,.0083828,.0093031,.0162745,.0129986,.009654,.0098457,.0077276,.012661,.0071946,.0028677,.0171537,.0126534,.0083828,.0093031,.0162745,.0129986,.009654,.0098457,.0077276,.012661,1.287186 +12614.8,.001277,.0187073,.0028677,.0171537,.0126534,.0083828,.0093031,.0162745,.0129986,.009654,.0098457,.0077276,.0101974,.0187073,.0028677,.0171537,.0126534,.0083828,.0093031,.0162745,.0129986,.009654,.0098457,.0077276,-.9973632 +12682,.0053129,.001277,.0187073,.0028677,.0171537,.0126534,.0083828,.0093031,.0162745,.0129986,.009654,.0098457,.0068868,.001277,.0187073,.0028677,.0171537,.0126534,.0083828,.0093031,.0162745,.0129986,.009654,.0098457,-.1759705 +12645.7,-.0028667,.0053129,.001277,.0187073,.0028677,.0171537,.0126534,.0083828,.0093031,.0162745,.0129986,.009654,.0060159,.0053129,.001277,.0187073,.0028677,.0171537,.0126534,.0083828,.0093031,.0162745,.0129986,.009654,-.9931303 +12712.8,.0052929,-.0028667,.0053129,.001277,.0187073,.0028677,.0171537,.0126534,.0083828,.0093031,.0162745,.0129986,.0042966,-.0028667,.0053129,.001277,.0187073,.0028677,.0171537,.0126534,.0083828,.0093031,.0162745,.0129986,.1113912 +12674.1,-.0030489,.0052929,-.0028667,.0053129,.001277,.0187073,.0028677,.0171537,.0126534,.0083828,.0093031,.0162745,.0031963,.0052929,-.0028667,.0053129,.001277,.0187073,.0028677,.0171537,.0126534,.0083828,.0093031,.0162745,-.6982551 +12705.2,.0024509,-.0030489,.0052929,-.0028667,.0053129,.001277,.0187073,.0028677,.0171537,.0126534,.0083828,.0093031,.0031436,-.0030489,.0052929,-.0028667,.0053129,.001277,.0187073,.0028677,.0171537,.0126534,.0083828,.0093031,-.0774485 +12824.6,.0093536,.0024509,-.0030489,.0052929,-.0028667,.0053129,.001277,.0187073,.0028677,.0171537,.0126534,.0083828,.0037877,.0024509,-.0030489,.0052929,-.0028667,.0053129,.001277,.0187073,.0028677,.0171537,.0126534,.0083828,.6223049 +12894.7,.0054512,.0093536,.0024509,-.0030489,.0052929,-.0028667,.0053129,.001277,.0187073,.0028677,.0171537,.0126534,.0067242,.0093536,.0024509,-.0030489,.0052929,-.0028667,.0053129,.001277,.0187073,.0028677,.0171537,.0126534,-.1423236 +12956.7,.004796,.0054512,.0093536,.0024509,-.0030489,.0052929,-.0028667,.0053129,.001277,.0187073,.0028677,.0171537,.006187,.0054512,.0093536,.0024509,-.0030489,.0052929,-.0028667,.0053129,.001277,.0187073,.0028677,.0171537,-.1555138 +12962.9,.0004787,.004796,.0054512,.0093536,.0024509,-.0030489,.0052929,-.0028667,.0053129,.001277,.0187073,.0028677,.0035762,.004796,.0054512,.0093536,.0024509,-.0030489,.0052929,-.0028667,.0053129,.001277,.0187073,.0028677,-.3463191 +13028.6,.0050554,.0004787,.004796,.0054512,.0093536,.0024509,-.0030489,.0052929,-.0028667,.0053129,.001277,.0187073,.0024535,.0004787,.004796,.0054512,.0093536,.0024509,-.0030489,.0052929,-.0028667,.0053129,.001277,.0187073,.2909081 +13151.8,.0094118,.0050554,.0004787,.004796,.0054512,.0093536,.0024509,-.0030489,.0052929,-.0028667,.0053129,.001277,6.17e-06,.0050554,.0004787,.004796,.0054512,.0093536,.0024509,-.0030489,.0052929,-.0028667,.0053129,.001277,1.051609 +13374,.0167542,.0094118,.0050554,.0004787,.004796,.0054512,.0093536,.0024509,-.0030489,.0052929,-.0028667,.0053129,.0063961,.0094118,.0050554,.0004787,.004796,.0054512,.0093536,.0024509,-.0030489,.0052929,-.0028667,.0053129,1.158097 +13525.7,.0112791,.0167542,.0094118,.0050554,.0004787,.004796,.0054512,.0093536,.0024509,-.0030489,.0052929,-.0028667,.008467,.0167542,.0094118,.0050554,.0004787,.004796,.0054512,.0093536,.0024509,-.0030489,.0052929,-.0028667,.3144056 +13606.6,.0059633,.0112791,.0167542,.0094118,.0050554,.0004787,.004796,.0054512,.0093536,.0024509,-.0030489,.0052929,.0088934,.0112791,.0167542,.0094118,.0050554,.0004787,.004796,.0054512,.0093536,.0024509,-.0030489,.0052929,-.3275974 +13710.7,.0076218,.0059633,.0112791,.0167542,.0094118,.0050554,.0004787,.004796,.0054512,.0093536,.0024509,-.0030489,.0048477,.0059633,.0112791,.0167542,.0094118,.0050554,.0004787,.004796,.0054512,.0093536,.0024509,-.0030489,.3101525 +13831,.0087357,.0076218,.0059633,.0112791,.0167542,.0094118,.0050554,.0004787,.004796,.0054512,.0093536,.0024509,.0061405,.0076218,.0059633,.0112791,.0167542,.0094118,.0050554,.0004787,.004796,.0054512,.0093536,.0024509,.2901591 +13947.7,.0084019,.0087357,.0076218,.0059633,.0112791,.0167542,.0094118,.0050554,.0004787,.004796,.0054512,.0093536,.0068956,.0087357,.0076218,.0059633,.0112791,.0167542,.0094118,.0050554,.0004787,.004796,.0054512,.0093536,.1684144 +14100.2,.0108747,.0084019,.0087357,.0076218,.0059633,.0112791,.0167542,.0094118,.0050554,.0004787,.004796,.0054512,.0064764,.0084019,.0087357,.0076218,.0059633,.0112791,.0167542,.0094118,.0050554,.0004787,.004796,.0054512,.4917603 +14177.2,.0054455,.0108747,.0084019,.0087357,.0076218,.0059633,.0112791,.0167542,.0094118,.0050554,.0004787,.004796,.0077185,.0108747,.0084019,.0087357,.0076218,.0059633,.0112791,.0167542,.0094118,.0050554,.0004787,.004796,-.254136 +14292.9,.0081282,.0054455,.0108747,.0084019,.0087357,.0076218,.0059633,.0112791,.0167542,.0094118,.0050554,.0004787,.0058471,.0054455,.0108747,.0084019,.0087357,.0076218,.0059633,.0112791,.0167542,.0094118,.0050554,.0004787,.255042 +14372,.0055189,.0081282,.0054455,.0108747,.0084019,.0087357,.0076218,.0059633,.0112791,.0167542,.0094118,.0050554,.00809,.0081282,.0054455,.0108747,.0084019,.0087357,.0076218,.0059633,.0112791,.0167542,.0094118,.0050554,-.2874659 +14546.4,.0120621,.0055189,.0081282,.0054455,.0108747,.0084019,.0087357,.0076218,.0059633,.0112791,.0167542,.0094118,.0075216,.0055189,.0081282,.0054455,.0108747,.0084019,.0087357,.0076218,.0059633,.0112791,.0167542,.0094118,.5076539 +14591.6,.0031023,.0120621,.0055189,.0081282,.0054455,.0108747,.0084019,.0087357,.0076218,.0059633,.0112791,.0167542,.0084513,.0120621,.0055189,.0081282,.0054455,.0108747,.0084019,.0087357,.0076218,.0059633,.0112791,.0167542,-.5980555 +14604.4,.0008764,.0031023,.0120621,.0055189,.0081282,.0054455,.0108747,.0084019,.0087357,.0076218,.0059633,.0112791,.0051097,.0031023,.0120621,.0055189,.0081282,.0054455,.0108747,.0084019,.0087357,.0076218,.0059633,.0112791,-.4733106 +14718.4,.0077753,.0008764,.0031023,.0120621,.0055189,.0081282,.0054455,.0108747,.0084019,.0087357,.0076218,.0059633,.0022979,.0008764,.0031023,.0120621,.0055189,.0081282,.0054455,.0108747,.0084019,.0087357,.0076218,.0059633,.6124027 +14728.1,.000659,.0077753,.0008764,.0031023,.0120621,.0055189,.0081282,.0054455,.0108747,.0084019,.0087357,.0076218,.0057393,.0077753,.0008764,.0031023,.0120621,.0055189,.0081282,.0054455,.0108747,.0084019,.0087357,.0076218,-.5680088 +14841.5,.0076704,.000659,.0077753,.0008764,.0031023,.0120621,.0055189,.0081282,.0054455,.0108747,.0084019,.0087357,.0040382,.000659,.0077753,.0008764,.0031023,.0120621,.0055189,.0081282,.0054455,.0108747,.0084019,.0087357,.4061052 +14941.5,.0067148,.0076704,.000659,.0077753,.0008764,.0031023,.0120621,.0055189,.0081282,.0054455,.0108747,.0084019,.0058099,.0076704,.000659,.0077753,.0008764,.0031023,.0120621,.0055189,.0081282,.0054455,.0108747,.0084019,.1011773 +14996.1,.0036478,.0067148,.0076704,.000659,.0077753,.0008764,.0031023,.0120621,.0055189,.0081282,.0054455,.0108747,.0061068,.0067148,.0076704,.000659,.0077753,.0008764,.0031023,.0120621,.0055189,.0081282,.0054455,.0108747,-.2749325 +14895.4,-.0067377,.0036478,.0067148,.0076704,.000659,.0077753,.0008764,.0031023,.0120621,.0055189,.0081282,.0054455,.003094,.0036478,.0067148,.0076704,.000659,.0077753,.0008764,.0031023,.0120621,.0055189,.0081282,.0054455,-1.099246 +14969.2,.0049429,-.0067377,.0036478,.0067148,.0076704,.000659,.0077753,.0008764,.0031023,.0120621,.0055189,.0081282,.0007246,-.0067377,.0036478,.0067148,.0076704,.000659,.0077753,.0008764,.0031023,.0120621,.0055189,.0081282,.4716363 +14895.1,-.0049629,.0049429,-.0067377,.0036478,.0067148,.0076704,.000659,.0077753,.0008764,.0031023,.0120621,.0055189,.0015905,.0049429,-.0067377,.0036478,.0067148,.0076704,.000659,.0077753,.0008764,.0031023,.0120621,.0055189,-.732711 +14574.6,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.0067148,.0076704,.000659,.0077753,.0008764,.0031023,.0120621,.0002069,-.0049629,.0049429,-.0067377,.0036478,.0067148,.0076704,.000659,.0077753,.0008764,.0031023,.0120621,-2.455183 +14372.1,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.0067148,.0076704,.000659,.0077753,.0008764,.0031023,-.0089073,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.0067148,.0076704,.000659,.0077753,.0008764,.0031023,-.5684257 +14356.9,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.0067148,.0076704,.000659,.0077753,.0008764,-.0084868,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.0067148,.0076704,.000659,.0077753,.0008764,.830628 +14402.5,.003171,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.0067148,.0076704,.000659,.0077753,-.0020568,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.0067148,.0076704,.000659,.0077753,.5844977 +14540.2,.0095158,.003171,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.0067148,.0076704,.000659,.002865,.003171,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.0067148,.0076704,.000659,.7435994 +14597.7,.0039463,.0095158,.003171,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.0067148,.0076704,.0065629,.0095158,.003171,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.0067148,.0076704,-.2925494 +14738,.0095654,.0039463,.0095158,.003171,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.0067148,.0002352,.0039463,.0095158,.003171,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.0067148,1.043164 +14839.3,.0068493,.0095654,.0039463,.0095158,.003171,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.0019778,.0095654,.0039463,.0095158,.003171,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.0036478,.5446571 +14942.4,.0069246,.0068493,.0095654,.0039463,.0095158,.003171,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.002897,.0068493,.0095654,.0039463,.0095158,.003171,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,-.0067377,.4503153 +14894,-.0032444,.0069246,.0068493,.0095654,.0039463,.0095158,.003171,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,.0017176,.0069246,.0068493,.0095654,.0039463,.0095158,.003171,-.0010576,-.0139914,-.0217524,-.0049629,.0049429,-.5547867 +15011.3,.007844,-.0032444,.0069246,.0068493,.0095654,.0039463,.0095158,.003171,-.0010576,-.0139914,-.0217524,-.0049629,-.0038191,-.0032444,.0069246,.0068493,.0095654,.0039463,.0095158,.003171,-.0010576,-.0139914,-.0217524,-.0049629,1.303999 +15062.1,.0033789,.007844,-.0032444,.0069246,.0068493,.0095654,.0039463,.0095158,.003171,-.0010576,-.0139914,-.0217524,.000406,.007844,-.0032444,.0069246,.0068493,.0095654,.0039463,.0095158,.003171,-.0010576,-.0139914,-.0217524,.3323903 +15242.1,.0118799,.0033789,.007844,-.0032444,.0069246,.0068493,.0095654,.0039463,.0095158,.003171,-.0010576,-.0139914,.0054036,.0033789,.007844,-.0032444,.0069246,.0068493,.0095654,.0039463,.0095158,.003171,-.0010576,-.0139914,.7240902 +15381.6,.0091105,.0118799,.0033789,.007844,-.0032444,.0069246,.0068493,.0095654,.0039463,.0095158,.003171,-.0010576,.0091251,.0118799,.0033789,.007844,-.0032444,.0069246,.0068493,.0095654,.0039463,.0095158,.003171,-.0010576,-.0016381 +15427.7,.0029926,.0091105,.0118799,.0033789,.007844,-.0032444,.0069246,.0068493,.0095654,.0039463,.0095158,.003171,.0085219,.0091105,.0118799,.0033789,.007844,-.0032444,.0069246,.0068493,.0095654,.0039463,.0095158,.003171,-.6182016 +15534,.0068665,.0029926,.0091105,.0118799,.0033789,.007844,-.0032444,.0069246,.0068493,.0095654,.0039463,.0095158,.0041349,.0029926,.0091105,.0118799,.0033789,.007844,-.0032444,.0069246,.0068493,.0095654,.0039463,.0095158,.3054095 +15539.6,.0003605,.0068665,.0029926,.0091105,.0118799,.0033789,.007844,-.0032444,.0069246,.0068493,.0095654,.0039463,.0047566,.0068665,.0029926,.0091105,.0118799,.0033789,.007844,-.0032444,.0069246,.0068493,.0095654,.0039463,-.4915072 +15583.9,.0028467,.0003605,.0068665,.0029926,.0091105,.0118799,.0033789,.007844,-.0032444,.0069246,.0068493,.0095654,.0032529,.0003605,.0068665,.0029926,.0091105,.0118799,.0033789,.007844,-.0032444,.0069246,.0068493,.0095654,-.0454117 +15679.7,.0061283,.0028467,.0003605,.0068665,.0029926,.0091105,.0118799,.0033789,.007844,-.0032444,.0069246,.0068493,.0017767,.0028467,.0003605,.0068665,.0029926,.0091105,.0118799,.0033789,.007844,-.0032444,.0069246,.0068493,.4865319 +15839.3,.0101271,.0061283,.0028467,.0003605,.0068665,.0029926,.0091105,.0118799,.0033789,.007844,-.0032444,.0069246,.0047076,.0061283,.0028467,.0003605,.0068665,.0029926,.0091105,.0118799,.0033789,.007844,-.0032444,.0069246,.6059299 +15942.3,.0064821,.0101271,.0061283,.0028467,.0003605,.0068665,.0029926,.0091105,.0118799,.0033789,.007844,-.0032444,.0056379,.0101271,.0061283,.0028467,.0003605,.0068665,.0029926,.0091105,.0118799,.0033789,.007844,-.0032444,.0943921 +15902.9,-.0024748,.0064821,.0101271,.0061283,.0028467,.0003605,.0068665,.0029926,.0091105,.0118799,.0033789,.007844,.007997,.0064821,.0101271,.0061283,.0028467,.0003605,.0068665,.0029926,.0091105,.0118799,.0033789,.007844,-1.17081 diff --git a/statsmodels/tsa/statespace/tests/results/results_sarimax.py b/statsmodels/tsa/statespace/tests/results/results_sarimax.py new file mode 100644 index 0000000..4e9bacd --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_sarimax.py @@ -0,0 +1,314 @@ +""" +Results for SARIMAX tests + +Results from Stata using script `test_sarimax_stata.do`. +See also Stata time series documentation. + +Data from: + +https://www.stata-press.com/data/r12/wpi1 +https://www.stata-press.com/data/r12/air2 +https://www.stata-press.com/data/r12/friedman2 + +Author: Chad Fulton +License: Simplified-BSD +""" + +wpi1_data = [ + 30.70000076, 30.79999924, 30.70000076, 30.70000076, + 30.79999924, 30.5, 30.5, 30.60000038, + 30.70000076, 30.60000038, 30.70000076, 30.70000076, + 30.60000038, 30.5, 30.60000038, 30.70000076, + 30.70000076, 30.60000038, 30.70000076, 30.70000076, + 30.89999962, 31.20000076, 31.39999962, 31.60000038, + 32.09999847, 32.20000076, 32.59999847, 32.40000153, + 32.29999924, 32.29999924, 32.40000153, 32.5, + 32.90000153, 33.09999847, 33.29999924, 33.40000153, + 33.90000153, 34.40000153, 34.70000076, 35., + 35.5, 35.70000076, 35.90000153, 35.90000153, + 36.5, 36.90000153, 37.20000076, 37.20000076, + 37.90000153, 38.29999924, 38.79999924, 39.20000076, + 41.09999847, 43.09999847, 44.90000153, 45.29999924, + 48.29999924, 50., 53.59999847, 55.40000153, + 55.40000153, 56., 57.20000076, 57.79999924, + 58.09999847, 59., 59.70000076, 60.20000076, + 61.59999847, 63., 63.09999847, 63.90000153, + 65.40000153, 67.40000153, 68.40000153, 70., + 72.5, 75.09999847, 77.40000153, 80.19999695, + 83.90000153, 85.59999847, 88.40000153, 90.40000153, + 93.09999847, 95.19999695, 95.90000153, 95.80000305, + 96.59999847, 96.69999695, 97.09999847, 97.19999695, + 97.30000305, 97.59999847, 98.59999847, 99.09999847, + 100.19999695, 100.80000305, 100.59999847, 100.30000305, + 100.09999847, 100.19999695, 99.5, 100.09999847, + 98.59999847, 96.80000305, 96.30000305, 96.69999695, + 97.80000305, 99.40000153, 100.5, 101., + 101.59999847, 103.19999695, 104.69999695, 105.19999695, + 107.5, 109.40000153, 109., 109.40000153, + 111., 110.80000305, 112.80000305, 116.19999695 +] + +wpi1_ar3 = { + 'data': wpi1_data, + 'params_ar': [.52707154, .09526127, .25803547], + 'se_ar': [.09031296, .10143699, .09271067], + 'params_ma': [], + 'se_ma': [], + 'params_mean': [], + 'se_mean': [], + 'params_variance': [.53074593], + 'se_variance': [.067705], + 'loglike': -136.21782, + 'aic': 280.43565, + 'bic': 291.68438, +} + +wpi1_stationary = { + 'data': wpi1_data, + 'params_ar': [.8742288], + 'se_ar_opg': [.0545435], + 'se_ar_oim': [.0637705], + 'se_ar_robust': [.0811246], + 'params_ma': [-.4120458], + 'se_ma_opg': [.1000284], + 'se_ma_oim': [.1220756], + 'se_ma_robust': [.1503862], + 'params_mean': [.7498197], + 'se_mean': [.3340968], + 'se_mean_oim': [.2920992], + 'params_variance': [.7250436**2], + 'se_stddev_opg': [.0368065], + 'se_stddev_oim': [.0462345], + 'loglike': -135.35131, + 'aic': 278.7026, + 'bic': 289.9514, +} + +wpi1_diffuse = { + 'data': wpi1_data, + 'initial_variance': 1e9, + 'params_ar': [.864419], + 'se_ar_opg': [.0563637], + 'se_ar_oim': [.0716638], + 'params_ma': [-.3960891], + 'se_ma_opg': [.1018369], + 'se_ma_oim': [.1384683], + 'params_mean': [.8412064], + 'se_mean_opg': [.3159328], + 'se_mean_oim': [.3052621], + 'params_variance': [.7282775**2], + 'se_stddev_opg': [.0373227], + 'se_stddev_oim': [.0468532], + 'loglike': -154.29177, + 'aic': 316.5835, + 'bic': 327.8323, +} + +wpi1_seasonal = { + 'data': wpi1_data, + 'params_ar': [.7806991], + 'se_ar_opg': [.0944946], + 'se_ar_oim': [.0811792], + 'params_ma': [-.3990039, .3090813], + 'se_ma_opg': [.1258753, .1200945], + 'se_ma_oim': [.1058495, .1054576], + 'params_mean': [.0110493], + 'se_mean_opg': [.0048349], + 'se_mean_oim': [.0037734], + 'params_variance': [.0104394**2], + 'se_stddev_opg': [.0004702], + 'se_stddev_oim': [.0006658], + 'loglike': 386.03357, + 'aic': -762.0671, + 'bic': -748.0062, +} + +air2_data = [ + 112, 118, 132, 129, 121, 135, 148, 148, 136, 119, 104, 118, 115, + 126, 141, 135, 125, 149, 170, 170, 158, 133, 114, 140, 145, 150, + 178, 163, 172, 178, 199, 199, 184, 162, 146, 166, 171, 180, 193, + 181, 183, 218, 230, 242, 209, 191, 172, 194, 196, 196, 236, 235, + 229, 243, 264, 272, 237, 211, 180, 201, 204, 188, 235, 227, 234, + 264, 302, 293, 259, 229, 203, 229, 242, 233, 267, 269, 270, 315, + 364, 347, 312, 274, 237, 278, 284, 277, 317, 313, 318, 374, 413, + 405, 355, 306, 271, 306, 315, 301, 356, 348, 355, 422, 465, 467, + 404, 347, 305, 336, 340, 318, 362, 348, 363, 435, 491, 505, 404, + 359, 310, 337, 360, 342, 406, 396, 420, 472, 548, 559, 463, 407, + 362, 405, 417, 391, 419, 461, 472, 535, 622, 606, 508, 461, 390, 432 +] +air2_stationary = { + 'data': air2_data, + 'params_ma': [-.4018324], + 'se_ma_opg': [.0730307], + 'se_ma_oim': [.0896442], + 'params_seasonal_ma': [-.5569342], + 'se_seasonal_ma_opg': [.0963129], + 'se_seasonal_ma_oim': [.0731055], + 'params_variance': [.0367167**2], + 'se_stddev_opg': [.0020132], + 'se_stddev_oim': [.002277], + 'loglike': 244.69651, + 'aic': -483.393, + 'bic': -474.7674, +} + +friedman2_data = {'consump': [ + 310.3999939, 316.3999939, 321.70001221, 323.79998779, + 327.29998779, 333.20001221, 333.1000061, 335., + 335.70001221, 340.6000061, 343.5, 350.70001221, + 355.29998779, 361.29998779, 365.3999939, 371.70001221, + 375.1000061, 379.3999939, 386.3999939, 391.1000061, + 400.5, 408.29998779, 417.1000061, 419.79998779, + 430.6000061, 437.79998779, 447.20001221, 461.5, + 472., 477.1000061, 486.3999939, 492., + 496.79998779, 506.20001221, 513.70001221, 521.20001221, + 539.5, 553.20001221, 569.09997559, 577.5, + 588.79998779, 599.40002441, 609.20001221, 621.09997559, + 632.40002441, 642.70001221, 655.20001221, 662.09997559, + 681.59997559, 695.79998779, 708.20001221, 724.5, + 741.90002441, 759.90002441, 778.09997559, 802.90002441, + 827.20001221, 842.09997559, 860.79998779, 876.09997559, + 894.40002441, 922.40002441, 950.09997559, 957.79998779, + 982.70001221, 1012.40002441, 1046.30004883, 1075.09997559, + 1110.19995117, 1130.19995117, 1159.80004883, 1195., + 1230.69995117, 1259.09997559, 1290.30004883, 1328.09997559, + 1358.30004883, 1417.40002441, 1450.59997559, 1488.69995117, + 1529.30004883, 1563.90002441, 1617.40002441, 1663.5, + 1713.09997559, 1716.90002441, 1774.90002441, 1836.80004883, + 1890.30004883, 1923.5, 1967.40002441, 1983.90002441 +], 'm2': [ + 289.1499939, 294.04998779, 296.73001099, 297.79998779, + 299.3500061, 302.32998657, 308.45001221, 312.36999512, + 318.29000854, 324.29000854, 329.54000854, 335.5, + 343.1000061, 349.25, 354.86999512, 362.72000122, + 370.66000366, 378.42001343, 386.01998901, 393.23999023, + 399.76000977, 407.07998657, 416.88000488, 424.73999023, + 433.22000122, 440.1000061, 449.48999023, 459.17001343, + 467.22000122, 471.1499939, 475.42999268, 480.16000366, + 489.67001343, 502., 514.65997314, 524.77001953, + 533.16998291, 542.60998535, 553.55999756, 566.84997559, + 574.35998535, 578.4699707, 582.05999756, 587.90002441, + 587.26000977, 595.15997314, 611.20001221, 626.54998779, + 649.90002441, 672.96002197, 692.4699707, 710.26000977, + 733.5, 749.66998291, 778.35998535, 802.2800293, + 815.30999756, 833.22998047, 839.27001953, 855.52001953, + 870.11999512, 877.82000732, 888.15997314, 902.41998291, + 925.55999756, 963.30999756, 991.7199707, 1016.98999023, + 1050.0300293, 1077.70996094, 1111.31005859, 1152.7800293, + 1188.80004883, 1217.67004395, 1246.90002441, 1271.4699707, + 1292.86999512, 1318.09997559, 1346.81005859, 1368.01000977, + 1388.9699707, 1423.2199707, 1456.85998535, 1475.75, + 1501.81994629, 1529.52001953, 1576.0300293, 1601.09997559, + 1638., 1670.55004883, 1708.38000488, 1756.18994141 +]} + +friedman2_mle = { + 'data': friedman2_data, + 'params_exog': [-36.09872, 1.122029], + 'se_exog_opg': [56.56703, .0363563], + 'se_exog_oim': [33.95924, .0324069], + 'params_ar': [.9348486], + 'se_ar_opg': [.0411323], + 'se_ar_oim': [.039903], + 'params_ma': [.3090592], + 'se_ma_opg': [.0885883], + 'se_ma_oim': [.1125186], + 'params_variance': [9.655308**2], + 'se_stddev_opg': [.5635157], + 'se_stddev_oim': [.7122745], + 'loglike': -340.50774, + 'aic': 691.0155, + 'bic': 703.6244, +} + +# 1959q1 - 1981q4 +friedman2_prediction = [ + 300.7722, 314.699, 318.3328, 322.1395, 324.1479, 329.3138, 338.3326, + 334.2127, 340.1221, 340.1285, 345.7686, 348.9585, 358.8476, 360.8798, + 367.4761, 373.4112, 380.132, 383.0179, 388.0034, 395.276, 398.8789, + 410.393, 419.7131, 426.5234, 429.3965, 440.4875, 449.2072, 459.1391, + 472.4367, 477.6227, 482.9371, 493.2135, 502.3943, 509.5284, 520.3149, + 524.9484, 531.8344, 553.2029, 565.8674, 584.5371, 584.7531, 595.1661, + 604.5025, 616.0223, 620.5868, 641.1515, 656.7986, 668.2184, 683.2755, + 704.2855, 714.1062, 726.3972, 749.7296, 758.9711, 792.2435, 802.7343, + 820.1996, 850.1489, 849.0018, 882.2756, 891.0745, 904.4603, 936.7991, + 965.2041, 977.2533, 1020.77, 1038.109, 1072.798, 1107.716, 1137.204, + 1161.788, 1201.592, 1230.821, 1261.099, 1289.544, 1316.565, 1352.555, + 1384.148, 1450.45, 1466.267, 1508.321, 1560.003, 1589.353, 1631.959, + 1683.234, 1731.301, 1745.414, 1792.131, 1866.122, 1907.568, 1944.034, + 1999.784 +] + +# 1959q1 - 1981q4 +# Dynamic after 1978q1 +friedman2_dynamic_prediction = [ + 300.7722, 314.699, 318.3328, 322.1395, 324.1479, 329.3138, 338.3326, + 334.2127, 340.1221, 340.1285, 345.7686, 348.9585, 358.8476, 360.8798, + 367.4761, 373.4112, 380.132, 383.0179, 388.0034, 395.276, 398.8789, + 410.393, 419.7131, 426.5234, 429.3965, 440.4875, 449.2072, 459.1391, + 472.4367, 477.6227, 482.9371, 493.2135, 502.3943, 509.5284, 520.3149, + 524.9484, 531.8344, 553.2029, 565.8674, 584.5371, 584.7531, 595.1661, + 604.5025, 616.0223, 620.5868, 641.1515, 656.7986, 668.2184, 683.2755, + 704.2855, 714.1062, 726.3972, 749.7296, 758.9711, 792.2435, 802.7343, + 820.1996, 850.1489, 849.0018, 882.2756, 891.0745, 904.4603, 936.7991, + 965.2041, 977.2533, 1020.77, 1038.109, 1072.798, 1107.716, 1137.204, + 1161.788, 1201.592, 1230.821, 1261.099, 1289.544, 1316.565, 1352.555, + 1377.515, 1406.237, 1427.295, 1448.221, 1483.042, 1517.318, 1536.364, + 1562.931, 1591.249, 1639.144, 1664.832, 1702.839, 1736.367, 1775.407, + 1824.832 +] + +# 1959q1 - 1981q4 +# Forecasts after 1978q1 +friedman2_forecast = [ + 300.7722, 314.699, 318.3328, 322.1395, 324.1479, 329.3138, 338.3326, + 334.2127, 340.1221, 340.1285, 345.7686, 348.9585, 358.8476, 360.8798, + 367.4761, 373.4112, 380.132, 383.0179, 388.0034, 395.276, 398.8789, + 410.393, 419.7131, 426.5234, 429.3965, 440.4875, 449.2072, 459.1391, + 472.4367, 477.6227, 482.9371, 493.2135, 502.3943, 509.5284, 520.3149, + 524.9484, 531.8344, 553.2029, 565.8674, 584.5371, 584.7531, 595.1661, + 604.5025, 616.0223, 620.5868, 641.1515, 656.7986, 668.2184, 683.2755, + 704.2855, 714.1062, 726.3972, 749.7296, 758.9711, 792.2435, 802.7343, + 820.1996, 850.1489, 849.0018, 882.2756, 891.0745, 904.4603, 936.7991, + 965.2041, 977.2533, 1020.77, 1038.109, 1072.798, 1107.716, 1137.204, + 1161.788, 1201.592, 1230.821, 1261.099, 1289.544, 1316.565, 1352.555, + 1384.148, 1412.057, 1432.403, 1452.703, 1486.975, 1520.77, 1539.393, + 1565.588, 1593.582, 1641.19, 1666.628, 1704.415, 1737.75, 1776.62, + 1825.897 +] + +# 1959q1 - 1981q4 +# Forecasts after 1978q1 (and dynamic) +# This (the dynamic part) is not necessarily a sensible thing to do, but this +# is just a unit test +friedman2_dynamic_forecast = [ + 300.7722, 314.699, 318.3328, 322.1395, 324.1479, 329.3138, 338.3326, + 334.2127, 340.1221, 340.1285, 345.7686, 348.9585, 358.8476, 360.8798, + 367.4761, 373.4112, 380.132, 383.0179, 388.0034, 395.276, 398.8789, + 410.393, 419.7131, 426.5234, 429.3965, 440.4875, 449.2072, 459.1391, + 472.4367, 477.6227, 482.9371, 493.2135, 502.3943, 509.5284, 520.3149, + 524.9484, 531.8344, 553.2029, 565.8674, 584.5371, 584.7531, 595.1661, + 604.5025, 616.0223, 620.5868, 641.1515, 656.7986, 668.2184, 683.2755, + 704.2855, 714.1062, 726.3972, 749.7296, 758.9711, 792.2435, 802.7343, + 820.1996, 850.1489, 849.0018, 882.2756, 891.0745, 904.4603, 936.7991, + 965.2041, 977.2533, 1020.77, 1038.109, 1072.798, 1107.716, 1137.204, + 1161.788, 1201.592, 1230.821, 1261.099, 1289.544, 1316.565, 1352.555, + 1377.515, 1406.237, 1427.295, 1448.221, 1483.042, 1517.318, 1536.364, + 1562.931, 1591.249, 1639.144, 1664.832, 1702.839, 1736.367, 1775.407, + 1824.832 +] + +friedman2_predict = { + 'data': friedman2_data, + 'predict': friedman2_prediction, + 'dynamic_predict': friedman2_dynamic_prediction, + 'forecast': friedman2_forecast, + 'dynamic_forecast': friedman2_dynamic_forecast, + 'params_exog': [.66189, 1.037905], + 'params_ar': [.8775207], + 'params_ma': [.2770867], + 'params_variance': [5.630046**2], + 'loglike': -243.31642, + 'aic': 496.6328, + 'bic': 508.3519, +} diff --git a/statsmodels/tsa/statespace/tests/results/results_sarimax_coverage.csv b/statsmodels/tsa/statespace/tests/results/results_sarimax_coverage.csv new file mode 100644 index 0000000..a627e55 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_sarimax_coverage.csv @@ -0,0 +1,54 @@ +mod,llf,parameters +"arima wpi, arima(3,0,0) noconstant vce(oim)",-145.917,"1.600047,-.3624836,-.2377553,.7515501" +"arima wpi c, arima(3,0,0) noconstant vce(oim)",-145.1327,"78.60683,1.599097,-.3606729,-.2392393,.7511453" +"arima wpi c t, arima(3,0,0) noconstant vce(oim)",-139.5423,"19.46176,.768438,1.528349,-.3448674,-.1935674,.7281097" +"arima wpi c t3, arima(3,0,0) noconstant vce(oim)",-138.9533,"38.71439,.0000445,1.530887,-.3313616,-.2082853,.7239346" +"arima wpi, arima(3,2,0) noconstant vce(oim)",-135.9354,"-.4536069,-.3408174,-.0977653,.7363397" +"arima wpi, arima(3,0,0) sarima(0,2,0,4) noconstant vce(oim)",-194.9269,"1.179762,-.3453264,-.0898734,1.289575" +"arima wpi, arima(3,0,0) noconstant vce(oim) diffuse",-159.3091,"1.641477,-.6359852,-.0014474,.7450104" +"arima wpi x, arima(3,0,0) noconstant vce(oim)",-145.7514,".0806147,1.610143,-.382758,-.2275756,.7505294" +"arima wpi, arima(0,0,3) noconstant vce(oim)",-540.8154,"-505.7114,-970.6211,-507.9258,.0357879" +"arima wpi c, arima(0,0,3) noconstant vce(oim)",-379.8598,"62.99608,2.451664,2.39358,.8955524,4.920951" +"arima wpi c t, arima(0,0,3) noconstant vce(oim)",-254.3036,"13.00193,.7996427,2.084224,2.038812,.8249226,1.800869" +"arima wpi c t3, arima(0,0,3) noconstant vce(oim)",-278.1551,"38.14465,.0000501,2.115914,2.078889,.8569969,2.181463" +"arima wpi, arima(0,2,3) noconstant vce(oim)",-136.14,"-.4584812,-.1298735,.0632101,.7375874" +"arima wpi, arima(0,0,3) sarima(0,2,0,4) noconstant vce(oim)",-171.4663,"1.094744,1.094739,1.000001,-1.008989" +"arima wpi, arima(0,0,3) noconstant vce(oim) diffuse",-587.4832,"-27.57705,-55.33257,-29.37171,.6453013" +"arima wpi x, arima(0,0,3) noconstant vce(oim)",-476.4098,".9280385,2.378931,2.378931,.9999992,10.62952" +"arima wpi, arima(3,0,3) noconstant vce(oim)",-142.1485,".9500802,.9998841,-.9501915,.6116305,-.5273701,-.1392938,.7241816" +"arima wpi c, arima(3,0,2) noconstant vce(oim)",-141.6737,"80.5513,1.678086,-.4215884,-.2572052,-.1579189,-.2332231,.7297933" +"arima wpi c t, arima(3,0,2) noconstant vce(oim)",-136.6645,"16.39083,.7941504,1.635404,-.3962173,-.2480547,-.1668943,-.2374508,.7109324" +"arima wpi c t3, arima(3,0,2) noconstant vce(oim)",-135.8174,"37.6362,.0000484,1.6636,-.4328509,-.2383885,-.1989134,-.2353735,.7052346" +"arima wpi, arima(3,2,2) noconstant vce(oim)",-134.3081,".6015591,.0150202,.2054096,-1.094043,.1107661,.7241633" +"arima wpi, arima(3,0,2) sarima(0,2,0,4) noconstant vce(oim)",-179.129,"1.211058,-.7514844,.1956546,-.1231004,1,1.088146" +"arima wpi, arima(3,2,2) sarima(0,2,0,4) noconstant vce(oim)",-190.8858,"-.3645584,.1081667,.1720293,9.66e-08,-1.000001,1.247552" +"arima wpi, arima(3,0,2) noconstant vce(oim) diffuse",-155.478,"2.261425,-1.605342,.3449455,-.7905483,.1561876,.7256975" +"arima wpi x, arima(3,0,2) noconstant vce(oim)",-142.1656,".1367752,1.632881,-.3357823,-.2972526,-.0898929,-.2674371,.7281773" +"arima wpi, sarima(3,0,0,4) noconstant vce(oim)",-302.9966,"1.950329,-1.151533,.199516,2.442114" +"arima wpi c, sarima(3,0,0,4) noconstant vce(oim)",-299.2088,"71.28411,1.937048,-1.128636,.182796,2.42974" +"arima wpi c t, sarima(3,0,0,4) noconstant vce(oim)",-279.8638,"19.09781,.7348265,1.728363,-1.005377,.1971021,2.181769" +"arima wpi c t3, sarima(3,0,0,4) noconstant vce(oim)",-284.7776,"40.37701,.0000402,1.771423,-.9909791,.1655766,2.250117" +"arima wpi, arima(0,2,0) sarima(3,0,0,4) noconstant vce(oim)",-146.5967,".1093829,-.0753548,-.0933771,.8039928" +"arima wpi, sarima(3,2,0,4) noconstant vce(oim)",-268.6161,".0712682,-.3369143,-.1180569,2.438388" +"arima wpi, sarima(3,0,0,4) noconstant vce(oim) diffuse",-355.6312,"1.625832,-.61329,.0032626,2.456462" +"arima wpi x, sarima(3,0,0,4) noconstant vce(oim)",-302.6354,"-.3005221,1.955475,-1.161604,.2044588,2.434233" +"arima wpi, sarima(0,0,3,4) noconstant vce(oim)",-493.3605,"2.612943,2.61295,1.000004,10.63571" +"arima wpi c, sarima(0,0,3,4) noconstant vce(oim)",-407.9579,"63.18759,2.716964,2.792693,1.128853,4.888196" +"arima wpi c t, sarima(0,0,3,4) noconstant vce(oim)",-302.5591,"15.22961,.7746883,1.741946,1.4764,.6085909,2.620034" +"arima wpi c t3, sarima(0,0,3,4) noconstant vce(oim)",-320.6151,"38.83094,.0000473,1.806445,1.633288,.7156993,2.992223" +"arima wpi, arima(0,2,0) sarima(0,0,3,4) noconstant vce(oim)",-146.6127,".1181947,-.0550111,-.0974394,.8041813" +"arima wpi, sarima(0,2,3,4) noconstant vce(oim)",-265.4803,"-.0022288,-.4547194,-.265093,2.352103" +"arima wpi, sarima(0,0,3,4) noconstant vce(oim) diffuse",-594.3781,"2.523607,2.442817,.9009514,11.65001" +"arima wpi x, sarima(0,0,3,4) noconstant vce(oim)",-493.3495,"-.07391,2.613046,2.613045,.9999989,10.63459" +"arima wpi, sarima(3,0,2,4) noconstant vce(oim)",-298.2331,"2.290215,-1.620824,.3299609,1.239569,-1.690899,1.134022" +"arima wpi c, sarima(3,0,2,4) noconstant vce(oim)",-297.3261,"71.09661,.8739118,.628973,-.5235254,3.822714,3.279209,.7281108" +"arima wpi c t, sarima(3,0,2,4) noconstant vce(oim)",-277.6305,"18.52915,.7413986,.0106101,1.414883,-.6965621,1.775,.5448672,2.144826" +"arima wpi c t3, sarima(3,0,2,4) noconstant vce(oim)",-274.1764,"39.50053,.000046,2.077418,-1.276982,.161876,-.487932,-.5120805,1.979523" +"arima wpi, arima(0,2,0) sarima(3,0,2,4) noconstant vce(oim)",-144.272,"-1.510547,-.6593249,-.0585331,1.688265,.8242572,.780077" +"arima wpi, sarima(3,2,2,4) noconstant vce(oim)",-265.2458,".963946,-.4554486,.1971574,-1.021818,.0216137,2.297261" +"arima wpi, arima(0,2,0) sarima(3,2,2,4) noconstant vce(oim)",-166.3303,"-1.501011,-.7561807,-.2807991,.0000117,-.9999927,.9676953" +"arima wpi, sarima(3,0,2,4) noconstant vce(oim) diffuse",-332.4084,"1.138662,-.1033737,-3.58e-08,.5722654,-.0668218,2.400033" +"arima wpi x, sarima(3,0,2,4) noconstant vce(oim)",-300.3242,"-.3366271,1.468002,-.3188579,-.1517738,20.52264,36.0693,.0660329" +"arima wpi x, arima(3,2,2) sarima(3,2,2,4) noconstant vce(oim)",-153.2699,".0895384,.2855166,.1133933,.1913281,-.7379875,-.2619959,-1.222196,-.6400887,-.3323564,-.2370796,-.7629162,.8210427" +"arima wpi x, arima(3,2,2) sarima(3,2,2,4) noconstant vce(oim) diffuse",-225.3551,".0277889,-.7673,-.0694887,.2007625,.6439733,-.4002686,-.3540113,-.0270317,-2.49e-07,.3540135,.0270364,1.231185" +"arima D.wpi2 t32 x, arima(3,0,2) noconstant vce(oim)",-126.8014,"8.88e-07,.2010488,.1937695,-.447184,.6869978,.4204914,.7453312,.742711" diff --git a/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing0.csv b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing0.csv new file mode 100644 index 0000000..621944c --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing0.csv @@ -0,0 +1,10 @@ +"eta1","eta2","eta3","eps1","eps2","eps3","state1","state2","state3","signal1","signal2","signal3" +-0.00564977633009585,-0.0013792549468135,-0.0318232554583828,-0.00295071914737214,0.00505116384834275,0.0112466127375814,0.0278928534435035,0.0102349452778765,0.0689660685232129,0.0278928534435035,0.0102349452778765,0.0689660685232129 +-0.000683064801251776,-0.00031457651168059,0.00586718498860526,-0.00270600385280586,0.00051039127248819,-0.0241598804868271,0.0015130517360058,0.00987558636564414,-0.0479711624968098,0.0015130517360058,0.00987558636564414,-0.0479711624968098 +0.0109946940188771,0.00263222341868241,0.0543960217416815,-0.00284457516927403,-0.00476381185035619,0.0140655365967951,0.00633910775886552,0.00584782273239555,0.0203595745274864,0.00633910775886552,0.00584782273239555,0.0203595745274864 +-0.00799586481715191,0.000454138616362426,-0.0636735074968473,0.00648273381523205,0.00266543128956361,0.0351942189634102,0.0157074456509361,0.00686871953887214,0.0674695491044662,0.0157074456509361,0.00686871953887214,0.0674695491044662 +-0.00338665188967602,-0.0054573135668269,-0.00886466302141044,-0.00233873094669686,0.00572353044907616,-0.0514425948674538,-0.00234582237331691,0.0068488975649599,-0.0552512503809533,-0.00234582237331691,0.0068488975649599,-0.0552512503809533 +-0.0077357205660971,0.00176766032244469,-0.0652930984962107,0.000294077649200441,-0.00227199135679169,-0.00817006483826807,0.00133880251206785,-0.00169593518754259,0.00219218558044271,0.00133880251206785,-0.00169593518754259,0.00219218558044271 +0.00472809277681815,0.00433523324572419,0.0160690323312978,-0.00364135712431895,0.000108696119813617,-0.0561943914891135,-0.00926500284219486,0.00123433707909837,-0.0756576264388494,-0.00926500284219486,0.00123433707909837,-0.0756576264388494 +0.0107812001912101,0.0073483006158498,0.0401289848308846,0.000921033818298399,-0.00410460846489636,0.00837668492921403,0.00500155742208778,0.00382495857059135,0.0168674957882965,0.00500155742208778,0.00382495857059135,0.0168674957882965 +0,0,0,0.0046818235208892,0.00448707986175477,0.024304101145702,0.0138527106219119,0.0102827610829166,0.0475297725408177,0.0138527106219119,0.0102827610829166,0.0475297725408177 diff --git a/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing1.csv b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing1.csv new file mode 100644 index 0000000..feae558 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing1.csv @@ -0,0 +1,10 @@ +"eta1","eta2","eta3","eps1","eps2","eps3","state1","state2","state3","signal1","signal2","signal3" +-0.00707614116231493,-0.00343719425392803,-0.0347922425061224,-0.00291921001196926,0.00726281652993645,0.0208586475611312,0.0278613442709423,0.00802329308895826,0.0593540336980345,0.0278613442709423,0.00802329308895826,0.0593540336980345 +-0.00387024549425167,-0.00331270982079964,-0.0063778442747854,0.000813337566656511,0.00351540514803166,-0.00776676718578853,-0.00200628969508274,0.00687057248340571,-0.0643642758546388,-0.00200628969508274,0.00687057248340571,-0.0643642758546388 +0.00692863694805055,-0.000985966990294491,0.037786887879322,0.00287660159346168,0.000377560445652924,0.0348630791864489,0.000617930990424314,0.000706450430966828,-0.000437968078185628,0.000617930990424314,0.000706450430966828,-0.000437968078185628 +-0.0128565188856924,-0.00374289540137993,-0.0842099370286948,0.0147448262909886,0.00999707101447812,0.0641295473218112,0.00744535317086104,-0.000462920189973421,0.0385342207346904,0.00744535317086104,-0.000462920189973421,0.0385342207346904 +-0.00901232771372828,-0.0102085148375063,-0.0332415444040201,0.00847665774996061,0.0152557211774593,-0.0139885744115985,-0.0131612110730808,-0.00268329316632621,-0.0927052708443691,-0.0131612110730808,-0.00268329316632621,-0.0927052708443691 +-0.0140741906906816,-0.00345240754935475,-0.0935269932093794,0.0136495752492263,0.00943787713070066,0.0378906175540744,-0.0120166950902412,-0.0134058036771714,-0.0438684968173701,-0.0120166950902412,-0.0134058036771714,-0.0438684968173701 +-0.00210675657910527,-0.00101919157504131,-0.0158040546058577,0.0121862896154432,0.0138945231109119,-0.00152332603225318,-0.0250926495836355,-0.0125514899135732,-0.130328691899703,-0.0250926495836355,-0.0125514899135732,-0.130328691899703 +0.00382300710542964,0.00364210664481087,0.00412259195140235,0.018926244550721,0.0113539077608011,0.071238269394727,-0.0130036533115703,-0.0116335576562645,-0.0459940886801504,-0.0130036533115703,-0.0116335576562645,-0.0459940886801504 +0,0,0,0.0241740968474436,0.0195640031732756,0.0949340947848488,-0.005639562705552,-0.00479416222945712,-0.0231002211004876,-0.005639562705552,-0.00479416222945712,-0.0231002211004876 diff --git a/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing2.csv b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing2.csv new file mode 100644 index 0000000..bd8876b --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing2.csv @@ -0,0 +1,10 @@ +"eta1","eta2","eta3","eps1","eps2","eps3","state1","state2","state3","signal1","signal2","signal3" +-0.0077225846160437,-0.00402781018964626,-0.0323351619639206,-0.00262203497505894,0.00782129904297399,0.0205227917818163,0.0275641688835774,0.00746481076505165,0.0596898894777563,0.0275641688835774,0.00746481076505165,0.0596898894777563 +-0.00444953209196292,-0.00321889333475884,-0.00109802448459965,0.00188994428414966,0.00446902780991799,-0.0090124300931973,-0.00308289642033142,0.00591694982608265,-0.0631186130600579,-0.00308289642033142,0.00591694982608265,-0.0631186130600579 +0.00601652259312033,-0.000505153276483255,0.044499574626596,0.00411061407899048,0.00106487256443086,0.0295160376237058,-0.000616081493077175,1.9138314382011e-05,0.00490907347754363,-0.000616081493077175,1.9138314382011e-05,0.00490907347754363 +-0.0141752336008264,-0.00292804359872047,-0.076347434678868,0.015971313094922,0.0102766688848728,0.0538852462644848,0.00621886636838452,-0.000742518058617875,0.0487785217914335,0.00621886636838452,-0.000742518058617875,0.0487785217914335 +-0.0107166660327099,-0.00901934187295043,-0.024341901220988,0.00964949183567029,0.0150803128687748,-0.0292627558204401,-0.01433404515749,-0.00250788485637395,-0.0774310894332112,-0.01433404515749,-0.00250788485637395,-0.0774310894332112 +-0.0160135521797722,-0.00165758579037998,-0.0837858375225614,0.0147098565735093,0.00873371537182441,0.017591422440934,-0.0130769764135444,-0.0127016419173599,-0.0235693017021049,-0.0130769764135444,-0.0127016419173599,-0.0235693017021049 +-0.00363279399050039,0.002329382791639,-0.00536579399606218,0.0129278739132212,0.0123778597607887,-0.02676641321178,-0.0258342338806829,-0.0110348265627617,-0.105085604718487,-0.0258342338806829,-0.0110348265627617,-0.105085604718487 +0.00452231013451796,0.0131408399096678,0.0127742855948403,0.018486271744215,0.00787925196125635,0.0407173692596782,-0.0125636805045248,-0.00815890185621295,-0.0154731885438321,-0.0125636805045248,-0.00815890185621295,-0.0154731885438321 +0.0192097325332759,0.0261665101124481,0.0669414582739613,0.019862206257705,0.00874148079907721,0.0594881459766367,-0.00132767211541578,0.00602836014511442,0.0123457277086656,-0.00132767211541578,0.00602836014511442,0.0123457277086656 diff --git a/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing3.csv b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing3.csv new file mode 100644 index 0000000..d715513 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing3.csv @@ -0,0 +1,203 @@ +"eta1","eta2","eta3","eps1","eps2","eps3","state1","state2","state3","signal1","signal2","signal3" +0.00446139149365691,0.00499459207817594,-0.0238858468864728,-0.00711881520240865,0.00595664101319575,0.041388210148101,0.032060943020042,0.00932946770859644,0.0388244711304822,0.032060943020042,0.00932946770859644,0.0388244711304822 +0.0024996888935307,-0.00192490532213789,0.0367200222951675,-0.0108664376945501,-0.00702846952972591,-0.00131116868061842,0.00967348552486561,0.0174144473104631,-0.0708198759932329,0.00967348552486561,0.0174144473104631,-0.0708198759932329 +0.0158396170781263,0.0032201806416103,0.0578909129747329,-0.0109321650151872,-0.00946143727548138,-0.0115155894534376,0.0144266976907951,0.0105454482441608,0.0459407005774133,0.0144266976907951,0.0105454482441608,0.0459407005774133 +-0.0110888585876629,0.00387774924243901,-0.0925430953721812,-0.00203280012864836,-0.00195369257674828,0.0266748348531807,0.0242229796583576,0.0114878434710703,0.0759889332975129,0.0242229796583576,0.0114878434710703,0.0759889332975129 +-0.00844142425862857,-0.0112099397207786,0.00789774861564587,-0.0023948455011117,-0.00209975108390199,-0.0181914648193914,-0.00228970776840445,0.0146721791461102,-0.0885023803224097,-0.00228970776840445,0.0146721791461102,-0.0885023803224097 +-0.00811908056565461,-0.00582263587060487,-0.0446633344681285,-0.000455367406462458,-0.00101851519982608,-0.0422358136657567,0.00208824760529465,-0.00294941130899844,0.0362579344935205,0.00208824760529465,-0.00294941130899844,0.0362579344935205 +0.012408133371283,0.0161809599631193,0.00149186107178548,-0.00292913701799861,0.00871768073192334,-0.0845836430724973,-0.00997722292070797,-0.00737464750686947,-0.0472683747902884,-0.00997722292070797,-0.00737464750686947,-0.0472683747902884 +0.00841718720922936,0.0120447696911355,0.0068790371055034,-0.000248923754018034,-0.0109702003452086,0.0436033690079839,0.00617151501490203,0.0106905504701398,-0.0183591882420307,0.00617151501490203,0.0106905504701398,-0.0183591882420307 +0.0115018206143638,0.00388090781810345,0.0289353186248419,0.0022219872459187,-0.00455705840764286,0.0487061386855662,0.016312546911972,0.0193268993664736,0.0231277350367744,0.016312546911972,0.0193268993664736,0.0231277350367744 +0.0063925319057125,0.00186816533338386,0.00752737363934573,-0.0105109048492085,-0.0125883568674115,0.0133143406403854,0.0265425440139584,0.0174269873034774,0.0671383659685612,0.0265425440139584,0.0174269873034774,0.0671383659685612 +0.00956161572955043,0.00514468837318738,0.0448210940474657,0.000418457662719925,0.00342981427114885,-0.00803711101461326,0.0197343583863491,0.0163932477378906,0.0247742243823483,0.0197343583863491,0.0163932477378906,0.0247742243823483 +0.00918539717946409,0.00839245856265787,-0.0012780161991549,-0.00400463179504949,-0.00750496373222292,-0.00265594333634046,0.0217818910834823,0.0180961298662571,0.0605665836376175,0.0217818910834823,0.0180961298662571,0.0605665836376175 +-0.00134049463275584,-0.00713513866032202,0.0216469864957042,-0.0124878524959287,-0.00989762483066822,-0.0408229528685938,0.0234683678470784,0.0221138586186479,0.0311071048474231,0.0234683678470784,0.0221138586186479,0.0311071048474231 +0.000556423366013898,0.00622959960706697,-0.0107065353122605,-0.00623796947859999,-0.0014849316354356,-0.0342578917772042,0.0154420366928638,0.00954695834119704,0.0519918629201767,0.0154420366928638,0.00954695834119704,0.0519918629201767 +0.00759242669141373,0.00549319044301942,0.0246285750915175,-0.0057006057198136,-7.80616944939475e-05,-0.0368542412470043,0.00812762443469398,0.0141606138669476,0.00270726189031629,0.00812762443469398,0.0141606138669476,0.00270726189031629 +0.00401651587269019,0.0024598656691797,0.0329225062393469,-0.00571579155070674,-0.00794674927958738,-0.00449645617476639,0.0187010020046893,0.014659043587352,0.0585035529690744,0.0187010020046893,0.014659043587352,0.0585035529690744 +0.00746274154490717,0.00682797457987896,0.0339399565112597,-0.00324089986675857,-0.00418519558331865,-0.0455504155295839,0.0156937344602317,0.0136894728655627,0.060018117565681,0.0156937344602317,0.0136894728655627,0.060018117565681 +-0.00663867751438773,0.000919721684080358,-0.0395660006762743,-4.03661728939709e-05,-0.00324077726046069,-0.0352838538826327,0.0186944069122438,0.0167561938839699,0.0673731947145335,0.0186944069122438,0.0167561938839699,0.0673731947145335 +0.00701097924964773,0.00424703950286909,0.0190737642824903,0.000552460272459301,-0.00469289710977477,0.0119668370661453,0.00702140151705678,0.0130420162784199,0.00026566384431654,0.00702140151705678,0.0130420162784199,0.00026566384431654 +-0.00294196178007779,-0.0075736154098673,-0.0134952177347492,0.00495501191835218,0.00694883298952168,-0.0104661202571547,0.0172408519506304,0.0126053417958476,0.0507614957551011,0.0172408519506304,0.0126053417958476,0.0507614957551011 +0.00442710754373841,0.00678754223034557,0.017513080214711,0.00443966140059823,0.0150361621308045,-0.010884122315064,0.00698025527778368,0.00237984624161117,0.0062756427586433,0.00698025527778368,0.00237984624161117,0.0062756427586433 +-0.0055580955488831,0.00300585214976244,-0.0374294684819168,0.00769255781487281,0.00849218596787944,0.0157221265056473,0.00580422659140229,0.0097034529713123,0.00775998398964427,0.00580422659140229,0.0097034529713123,0.00775998398964427 +0.0117813298658321,0.00623568818260933,0.0385870302330894,0.000599796212102209,-0.00644016112307695,0.0204343195007486,0.0021686357645582,0.00924626155204052,-0.0123072082372813,0.0021686357645582,0.00924626155204052,-0.0123072082372813 +0.00191151951592157,0.00632447239968319,-0.0211492863306783,0.00521450702262857,0.0103480910568827,0.031423878365974,0.0190502057834899,0.0116389378521606,0.0644550355309718,0.0190502057834899,0.0116389378521606,0.0644550355309718 +0.0115441641954826,0.00734946266478721,0.0377909380797306,0.00233473899661731,-0.00503824847774689,0.004974852073362,0.0111421819886623,0.0160338611005936,-0.0050354394916332,0.0111421819886623,0.0160338611005936,-0.0050354394916332 +0.00206196358253716,0.0117352704436524,-0.0412053168014462,-0.00362139444696252,-0.00135242263028795,-0.0311569239742221,0.0237116643277029,0.0183779234859911,0.0662467169994686,0.0237116643277029,0.0183779234859911,0.0662467169994686 +0.00112167231935273,-0.0002015671840765,0.0247760404528156,0.00733726061057915,0.00172610429840425,0.015897566570368,0.0165023021139446,0.0260065997804954,-0.0112979066335781,0.0165023021139446,0.0260065997804954,-0.0112979066335781 +-0.0174712840710763,-0.0104995748588245,-0.0792351598348337,0.00329120291746285,-0.002658147095089,0.00659318598336344,0.0209582149789077,0.0173277075765335,0.0745720032306805,0.0209582149789077,0.0173277075765335,0.0745720032306805 +0.00467348077045733,0.00474221523673956,0.0194363052017869,0.006733743572149,0.000172597487405276,0.0226520445569297,-0.00341041431421795,0.00237896672916221,-0.0410675737541068,-0.00341041431421795,0.00237896672916221,-0.0410675737541068 +0.00156769070512935,-0.000432123885609519,-0.0284533155646709,0.000472002376903997,0.00565738441243007,-0.0317158674415437,0.0060833152000278,0.00574476614488167,0.0217570596231708,0.0060833152000278,0.00574476614488167,0.0217570596231708 +0.0049074635315971,0.00302150178079763,0.0130531356306075,0.00181378898818308,0.000486985992053975,0.0191434100897455,0.00625545153723184,0.00366144125251539,-0.0143535097216806,0.00625545153723184,0.00366144125251539,-0.0143535097216806 +-0.000145893435752698,0.00559436480675166,-0.012752237880732,0.0018155633708276,-0.000948478368405601,-0.0294065778072038,0.00695518612801598,0.00674414576812839,0.00164380929733145,0.00695518612801598,0.00674414576812839,0.00164380929733145 +-0.00465583387881592,-0.00593114946488169,-0.0013581012019262,-0.00459952355536558,0.00277986845221006,-0.0371861476734385,0.00480773207491179,0.0107645430898617,-0.00638804900424863,0.00480773207491179,0.0107645430898617,-0.00638804900424863 +0.00799839285864863,0.0071290932110081,0.00392541313576425,0.0042057870384146,0.00429160741357418,0.00330496115663807,0.00374050185614936,0.000822237674505055,0.0249924992742876,0.00374050185614936,0.000822237674505055,0.0249924992742876 +0.0110585378532285,0.00998046524529333,0.0478077022138136,-0.00126940776528062,-0.00194817143825634,0.0148218258112491,0.00887024498422869,0.00809102174547572,0.00658166215788457,0.00887024498422869,0.00809102174547572,0.00658166215788457 +0.00780572152026941,0.00466661208220865,0.0214732104802523,0.00334672376491877,0.00736515276598808,-0.0343000914916285,0.0170525846469963,0.0162417387302098,0.0558303848346691,0.0170525846469963,0.0162417387302098,0.0558303848346691 +0.000136140869471766,0.00177715576303493,-0.0703039489484139,-0.00410356807654701,-0.00108701674336203,-0.0196097765532802,0.0209398187000445,0.01629987327046,0.0592425853537114,0.0209398187000445,0.01629987327046,0.0592425853537114 +-0.00163057267047177,-0.00289267321753373,0.0452053547881509,-0.00614724973263191,0.0042267629065544,0.0102642688551091,0.0129654374083217,0.0144025151239414,-0.0432666369087031,0.0129654374083217,0.0144025151239414,-0.0432666369087031 +-0.00179702490608481,-0.00418978511474643,0.0226104016150397,-0.00371937261390935,-0.00387700076738468,-0.0334227474911639,0.0080429076319284,0.00846153601779832,0.0437566670132315,0.0080429076319284,0.00846153601779832,0.0437566670132315 +-0.0003798413763985,0.00563195802967547,-0.0521883454243113,0.0101370733921137,0.0097482031829916,0.0121828046792597,0.00548991983487095,0.00139587394004091,0.0516176552276026,0.00548991983487095,0.00139587394004091,0.0516176552276026 +-0.0024393512250877,-0.00594165828099662,0.0106154151835323,0.00149208937164289,-0.000529640051438153,0.032761872219216,0.00141595638309036,0.00687982202327182,-0.0407616250512743,0.00141595638309036,0.00687982202327182,-0.0407616250512743 +-0.000721483849479707,0.00829588740546896,-0.018551960936739,0.0040672935047535,0.00624661648572852,0.00662523953378945,0.00223682822396452,-0.00142642966582966,0.016231821031808,0.00223682822396452,-0.00142642966582966,0.016231821031808 +-0.00333483762078247,-0.000975668579616581,-0.0257710196821768,-0.00291892733627338,5.49574301597355e-05,-0.031013528122196,-0.00178866289931292,0.00789043225585837,-0.0243500036526677,-0.00178866289931292,0.00789043225585837,-0.0243500036526677 +0.00413947838653598,0.00429331592614879,0.0195859618689634,-0.00451514200201238,0.00320209202200729,-0.033566418742725,0.00294515803900546,0.00291796837207554,0.00176831660581184,0.00294515803900546,0.00291796837207554,0.00176831660581184 +0.00493899150112848,0.001998765759244,0.0469878556113297,-0.00450407955382729,-0.00191124723052142,-0.0198954955089034,0.00631516442037139,0.00649513101551268,0.0230231672541595,0.00631516442037139,0.00649513101551268,0.0230231672541595 +-0.011015825577092,0.00577799815833146,-0.0936588905910461,-0.00139968637921967,0.00219999706562839,-0.0470863882800269,0.010264458666294,0.00650632170315113,0.0640295705303648,0.010264458666294,0.00650632170315113,0.0640295705303648 +0.00306769735384632,0.00150841044420552,0.0563162672663819,-0.00551655195616396,-0.0133440023551047,0.0110977168377741,-0.00514426974079326,0.0106200462153263,-0.070772562334844,-0.00514426974079326,0.0106200462153263,-0.070772562334844 +-0.00423555793578496,0.00147803803597813,-0.0276813209779069,0.0162826050305656,0.0122625050408702,0.0370555716430457,0.0109195633039069,0.00668687136063633,0.0850389257972466,0.0109195633039069,0.00668687136063633,0.0850389257972466 +0.000620900560458354,0.00270650557549355,0.00156046247244408,0.00344019312577266,0.00291052312207797,0.0271894481364853,0.00221659578738626,0.00621904065312606,0.00333042149116985,0.00221659578738626,0.00621904065312606,0.00333042149116985 +0.00173478504785648,0.00983819806632791,-0.0424504614060926,0.0022487035121267,0.00158576745463823,-0.00869147730475356,0.00570218324961037,0.00633918112465339,0.0217596188807051,0.00570218324961037,0.00633918112465339,0.0217596188807051 +0.00536882830557922,0.00377379860630606,0.0126125403051826,-0.0041921488941034,0.00236397458692031,-0.00713029562105257,0.00696708598875823,0.0141285185080752,-0.0246535824366769,0.00696708598875823,0.0141285185080752,-0.0246535824366769 +0.00885058401110028,0.00994605231861318,0.0252743858242001,0.00179620810694531,0.000174692513214238,0.0305904860630173,0.0159271063609484,0.013091875062738,0.0377385323145553,0.0159271063609484,0.013091875062738,0.0377385323145553 +-0.00316920480168043,0.00506775567966185,-0.039193018538784,0.00441913768141824,-0.00109834037654235,0.0139937781586012,0.0190197611806817,0.020022519163287,0.0454163110120321,0.0190197611806817,0.020022519163287,0.0454163110120321 +0.00527789318081439,0.00638626670279354,-0.0129698265734834,-0.00314963700346464,-0.00396746736961929,0.0108854338957062,0.0126876512112223,0.0192875932493677,0.00324610147691728,0.0126876512112223,0.0192875932493677,0.00324610147691728 +-0.000667844295248564,-0.000191299338997429,0.0502835913685373,-0.00387997287480698,0.00388858587116463,-0.022588450481193,0.0202167653359054,0.0193035934969449,0.0277640334691509,0.0202167653359054,0.0193035934969449,0.0277640334691509 +-0.0108724408093651,-0.00979381086494101,-0.014430698062208,0.0112313943635167,0.00384041666690102,-0.0163505865010593,0.0140266479793672,0.0142894708745616,0.0779142322665222,0.0140266479793672,0.0142894708745616,0.0779142322665222 +0.00165484309625691,0.0010450735527623,-0.00813428946824581,0.0100214404016819,-0.000191568692842028,0.0107477414092441,0.00147965739458249,-0.000313768946614343,0.0349404247177117,0.00147965739458249,-0.000313768946614343,0.0349404247177117 +7.63274318742297e-05,-0.00685350874843017,0.0348182292058449,-0.00740841547932574,0.00289069755584138,-0.0414570885774833,0.00205837253673406,0.000672794649494429,0.00157250396364785,0.00205837253673406,0.000672794649494429,0.00157250396364785 +-0.00619292430117585,-0.00454239658211327,-0.0558277345774544,0.00904192753873374,0.00307146242910618,0.0058418232624589,0.000451310716588368,-0.00600332247599879,0.0316962500420463,0.000451310716588368,-0.00600332247599879,0.0316962500420463 +0.0147273225237854,0.00777696417433082,0.0246991489158272,0.00174709328310636,-0.000811966630668915,0.00197202416830896,-0.0105547070396053,-0.00797184149030321,-0.0679071386471288,-0.0105547070396053,-0.00797184149030321,-0.0679071386471288 +-0.00832145456590181,-0.0119757356002679,-0.0366765208192632,-0.00500132350044479,0.00127224521312296,0.000122746224973554,0.00755853590457589,0.0021934117220911,-0.00509046948270163,0.00755853590457589,0.0021934117220911,-0.00509046948270163 +-0.000827485719136439,0.000377974232952878,-0.00890793312625975,-0.00249885787997686,0.0129219793968388,-0.00386473900720243,-0.00743782060126206,-0.00880427062344426,-0.0541967084140091,-0.00743782060126206,-0.00880427062344426,-0.0541967084140091 +-0.00252804564651579,0.00797466346387637,-0.0531399893053729,0.00477743757990041,-0.00970417293271242,0.0554609217761392,-0.0087207560186296,-0.00503920418584014,-0.0459997192569885,-0.0087207560186296,-0.00503920418584014,-0.0459997192569885 +0.00384632274809063,0.0168491696266027,-0.067666392570494,-0.00533437475347167,0.00437814673878708,-0.126400546812315,-0.00690354655916235,0.0039596273767322,-0.0667626800527855,-0.00690354655916235,0.0039596273767322,-0.0667626800527855 +0.00372575104222158,-0.00364386116661727,0.0292037920877782,0.00124491078014892,-0.00163522037739448,0.0237920345745641,0.00636831760690355,0.0181676514404533,-0.0591347267509941,0.00636831760690355,0.0181676514404533,-0.0591347267509941 +0.000513386795994084,0.00842128207951651,0.0120737375188177,-0.000234650214359072,0.00603626411300215,0.0238209030063318,0.0169377055759532,0.00813162340572884,0.0574682192073366,0.0169377055759532,0.00813162340572884,0.0574682192073366 +0.00324738163805957,0.00432301060062649,-0.0139964104024726,0.00612543654903466,-0.00541735149311127,0.00984925314329378,0.00685301773868072,0.0159436029572217,0.0172661179647432,0.00685301773868072,0.0159436029572217,0.0172661179647432 +-0.00729632469369216,-0.00342268258491137,-0.0384628497833882,0.00612668142735864,0.00600570456810307,0.0605752265242822,0.0163514291568014,0.0137927326255184,0.0379600766412229,0.0163514291568014,0.0137927326255184,0.0379600766412229 +0.00238852283674987,0.00425470750114579,-0.00463007888761243,0.00407002360296959,0.00200498346678307,0.0584392038784563,0.00342227386976403,0.00711171903316727,-0.0166758227383391,0.00342227386976403,0.00711171903316727,-0.0166758227383391 +-0.00351885475194857,0.0124178487874581,-0.0716272600003928,-0.00272405894520234,0.00153555954702619,-0.00450987182860723,0.0076107658546284,0.0089965986419606,0.00636396826707935,0.0076107658546284,0.0089965986419606,0.00636396826707935 +0.00594356497024328,0.0060150510929304,-0.00233850824390256,0.00385987928904429,-0.0058872697743375,0.0628145658265694,0.00337551898490963,0.0188042193009519,-0.0558868842030579,0.00337551898490963,0.0188042193009519,-0.0558868842030579 +0.00131654705598515,-0.00486643505749478,0.0506254834727137,-0.00856444117252865,-0.00588717905287781,0.00835389695038544,0.0201056003774084,0.0172655046304912,0.0396706960108776,0.0201056003774084,0.0172655046304912,0.0396706960108776 +-0.00420353173021795,-0.00337181470571552,0.0123303526580138,0.00509103812151092,-0.00284791404879439,-0.00107743037083328,0.0145872086157906,0.00836071739612389,0.0755236980257493,0.0145872086157906,0.00836071739612389,0.0755236980257493 +-0.00459466194309281,0.00165811896633136,-0.0467490041249239,0.0147023766362444,0.00616273726605264,0.0188710310293097,0.00302376091670211,0.0033345487428791,0.0341920329457358,0.00302376091670211,0.0033345487428791,0.0341920329457358 +-0.00156557848816195,-0.00155064771730157,-0.00820523410925053,0.00109515105692717,0.0114271616201577,-0.00143745994652271,-0.00130207201330893,0.00352774911018798,-0.0271972355081394,-0.00130207201330893,0.00352774911018798,-0.0271972355081394 +0.0229475145107865,0.0128463894363079,0.0911258479229273,0.00249968790945936,0.00548013081980186,0.0212774533957951,0.000909044793331826,0.000340284724858094,-0.00163855062736122,0.000909044793331826,0.000340284724858094,-0.00163855062736122 +0.00073331088759731,0.00639920051710789,0.0277638113468857,0.0154916189933561,0.00788073145066607,-0.0224681400741345,0.0230938564104006,0.0132837903616417,0.0888731210778087,0.0230938564104006,0.0132837903616417,0.0888731210778087 +0.00485054451953673,-0.00014193072311197,0.042903898739772,-0.00172643830324673,-0.0133861354791277,-0.0183148984295581,0.0114826012932357,0.0175712022708764,0.0487155026592894,0.0114826012932357,0.0175712022708764,0.0487155026592894 +-0.0100444716911535,-0.00479964338461314,-0.0471765276599979,-0.00642145456215394,-0.00279020701321523,-0.0784145880207144,0.0195608908547762,0.0108141876977867,0.100914505500196,0.0195608908547762,0.0108141876977867,0.100914505500196 +0.00305848845016636,-0.00277381822133281,0.00114933129317849,0.00236785707381413,0.00103791891201881,0.0195109244538449,-0.000696862503588115,0.00400108395185568,-0.0196731942796381,-0.000696862503588115,0.00400108395185568,-0.0196731942796381 +0.00196355312724911,-8.37466635173149e-05,0.0213851635388974,-0.00510624261370382,3.21800253973142e-05,-0.0134465123768616,0.00604453346467346,-0.00061742651067134,0.0111303844528937,0.00604453346467346,-0.00061742651067134,0.0111303844528937 +-0.0105797207552708,-0.00397271297408412,-0.0316782376700686,0.00613131085066104,0.00876667991251549,-0.024046253365607,0.00103110926976907,0.00100447913549191,0.00438651144089698,0.00103110926976907,0.00100447913549191,0.00438651144089698 +-0.0072191085424495,-0.000572471832956667,-0.0574869522343151,0.0124901529255354,0.00593351669889915,0.0100540101440751,-0.00974251308602487,-0.00327558542453206,-0.0288451777059517,-0.00974251308602487,-0.00327558542453206,-0.0288451777059517 +-0.0128917950187664,-0.00969454732929313,-0.0403186529603996,0.0127979921061446,0.00253568041548245,0.0454761955770058,-0.00958184064654936,-0.00427174629591885,-0.0527507824689352,-0.00958184064654936,-0.00427174629591885,-0.0527507824689352 +0.00538102083407787,0.0096260322772876,-0.0115242083949455,-0.00402378010683786,-0.00951952636707534,-0.0435258544578233,-0.0166841514735055,-0.0134357062832766,-0.0510292789776605,-0.0166841514735055,-0.0134357062832766,-0.0510292789776605 +0.0135536255971276,0.00911073925970506,0.0371905303451452,0.00345065669849021,0.0112556683005419,-0.042621202212185,-0.00531091481040847,-0.000591329939424722,-0.0366571113927823,-0.00531091481040847,-0.000591329939424722,-0.0366571113927823 +0.0118817940279789,0.000755590492231785,0.0826071322363229,0.00555269676406967,0.00518511530256186,0.0615427412691368,0.0127741102452342,0.00805309761969872,0.0352830634372198,0.0127741102452342,0.00805309761969872,0.0352830634372198 +-0.00861590164649347,-0.00705295442928892,-0.00410968354151398,0.00247502103507744,-0.00207188080888056,0.00388138304358744,0.0180918036443039,0.00752777515252991,0.0908617269060498,0.0180918036443039,0.00752777515252991,0.0908617269060498 +0.00772155021227735,-0.00205721239015224,0.0365950266088324,-0.00589331195658163,0.000106692513893378,-0.0587106610749626,-0.00211809076743938,-0.000106692513893378,0.00993433170419983,-0.00211809076743938,-0.000106692513893378,0.00993433170419983 +-0.00947669294173151,-0.0161176239079196,0.00448058497229591,0.0039712316259919,0.00688575227146205,0.0127647364609419,0.008105846563905,-0.00283933043931351,0.0474552383112766,0.008105846563905,-0.00283933043931351,0.0474552383112766 +-0.00498707859920641,0.00566278772238803,-0.0325726853192798,-0.000887395204079054,0.00864201965470863,-0.0275681963976486,-0.0116485149936139,-0.0162261346721349,-0.0119844122430408,-0.0116485149936139,-0.0162261346721349,-0.0119844122430408 +0.00223323963883555,0.000578060720044946,-0.0136065430479999,0.0011192616474926,0.0117375128802055,-0.0421386629268107,-0.0176664952828304,-0.00530039624196331,-0.0678804928827887,-0.0176664952828304,-0.00530039624196331,-0.0678804928827887 +0.0012122560852629,0.0100419987943462,-0.00510036805127724,0.00728765284391761,0.00913404854660832,0.00850646085455746,-0.00188326369649004,-0.00554104322320221,-0.0093934788134306,-0.00188326369649004,-0.00554104322320221,-0.0093934788134306 +0.00177531824583251,0.00210044174336593,-0.00224964268612751,-0.000383983182248222,0.000697027361648769,0.0145541618147652,-0.00347874258631683,0.00694064908840887,-0.0262935613848679,-0.00347874258631683,0.00694064908840887,-0.0262935613848679 +0.0105560886427868,0.010888423941047,0.00833340315936913,-0.00660729437385613,0.0129618021820539,-0.119175926808816,0.00739639786905891,0.00510874615142591,0.0259080427982377,0.00739639786905891,0.00510874615142591,0.0259080427982377 +0.0141502580146754,0.0130546415979978,0.045661154384484,-0.00229844792319192,-0.00518267587119851,0.0175484703803672,0.0146589726597707,0.014937621207931,0.0174382215862376,0.0146589726597707,0.014937621207931,0.0174382215862376 +0.00108406351916284,0.00614668609239846,0.00498560328199324,-0.00330764918064367,-0.00442398946656152,0.023748180822538,0.0255349844693249,0.0240711820568101,0.0683876687084825,0.0255349844693249,0.0240711820568101,0.0683876687084825 +-0.00255673525228217,0.00118489797045081,0.0244662362898334,-0.000649661360415589,-0.00617516753552186,0.0114402520132563,0.0201774754659382,0.023705147234146,0.0536373556238297,0.0201774754659382,0.023705147234146,0.0536373556238297 +-0.00280772784925268,-0.00520515584227732,-0.0169144499452584,0.00398441919994413,-0.0016767708462097,0.0179250942875258,0.0164755407426087,0.0174070011999471,0.0821858653977298,0.0164755407426087,0.0174070011999471,0.0821858653977298 +0.0110191284026121,0.00779435780137808,0.0496118056365152,0.00720630469743868,0.00212581420042248,0.0600924120641686,0.0120038611126853,0.00640261804685558,0.0394504668138475,0.0120038611126853,0.00640261804685558,0.0394504668138475 +-0.00173312636006656,-0.00182599429396996,0.00206868710713064,0.0010961868551709,0.000749981194983404,-0.0222119944857301,0.0160215766474172,0.0134672132237434,0.0553719020452736,0.0160215766474172,0.0134672132237434,0.0553719020452736 +0.000300606800022233,-0.00177725315942278,-0.0184960782154437,0.000508237901820426,-0.000489383450418911,-0.00844772678665639,0.00916327868257704,0.00815775959304774,0.0314258674879676,0.00916327868257704,0.00815775959304774,0.0314258674879676 +0.00159645840822514,0.00299346624531745,-0.0193940528114212,0.00119682585725723,0.00892730966733253,-0.0166184917322405,0.00691126957061816,0.00416455344581749,7.60784360438332e-05,0.00691126957061816,0.00416455344581749,7.60784360438332e-05 +0.00585654317493582,0.00820517123148276,-0.0249543162266697,0.00505247697823376,0.00993734568754587,-0.00921493982731227,0.00433992549149141,0.00689027309066606,-0.0243108212497238,0.00433992549149141,0.00689027309066606,-0.0243108212497238 +-0.00300265850771358,0.00516568240480306,-0.0555509150089202,-0.00217558732204957,-0.00415713731612381,0.038395269642563,0.0106068096905499,0.0132097978583941,-0.0212809333923723,0.0106068096905499,0.0132097978583941,-0.0212809333923723 +-0.000662239446247006,0.00118783029427474,0.0019877023298077,0.00904696542812015,0.00389866037560755,0.0333244197429222,0.00645294793645509,0.0149233552573648,-0.0444355148868457,0.00645294793645509,0.0149233552573648,-0.0444355148868457 +0.00130483200186103,0.0018050850423509,0.00574873224472313,-0.00259141416713948,-0.00891251734689866,0.0152111921901538,0.0101523611936747,0.0111101530540947,0.0231399482312936,0.0101523611936747,0.0111101530540947,0.0231399482312936 +0.000441698230308313,0.00220363076041368,-0.0353772214914937,-0.00053621654719521,-0.00131399316583521,-0.0317162108736778,0.0100992844890038,0.0096255494226349,0.0296592896228248,0.0100992844890038,0.0096255494226349,0.0296592896228248 +0.00290499941011217,0.00524745370736369,-0.0107380975006904,-0.00413527092151962,0.00143634074569567,-0.00792333094522526,0.00814444912902696,0.00915552500005299,-0.0145191735361539,0.00814444912902696,0.00915552500005299,-0.0145191735361539 +-0.00826636397807272,-0.00344241825734349,-0.0108733276567453,0.000219953284409253,0.00512279996496684,-0.0263696785257718,0.00937523516657092,0.0122148861584663,-0.00548309975778555,0.00937523516657092,0.0122148861584663,-0.00548309975778555 +-0.00499680031090069,0.00423342233578594,0.00824951796192281,0.00395738081623815,0.000776903314741847,-0.00565650022149054,0.000864413143877021,0.00522096212839823,0.00720607576147312,0.000864413143877021,0.00522096212839823,0.00720607576147312 +-0.00125450802274025,0.00659222525340039,-0.0645688124811688,0.00604306164593961,-0.00846697385588984,-0.00030967918915744,-0.000514125906073601,0.00694479246412998,0.030405666171752,-0.000514125906073601,0.00694479246412998,0.030405666171752 +0.00433174072741702,0.00243260230610919,0.00572846204196144,0.00518630328816056,0.00390703035475012,0.0217404687444578,0.00539161337196108,0.00940107202742938,-0.0203415390565942,0.00539161337196108,0.00940107202742938,-0.0203415390565942 +0.00369309323077999,0.000346309799717002,0.0140319437205198,-0.00254301846531014,0.00217892185045045,-0.0172291252762083,0.0111785612944428,0.00889965194176988,0.0182369584938982,0.0111785612944428,0.00889965194176988,0.0182369584938982 +-0.00515800053877536,0.00269451926067191,-0.0342895565207015,0.00657629590706376,-0.0050167257093777,0.051840702951443,0.0103895038697649,0.00741690585803788,0.0232439806993529,0.0103895038697649,0.00741690585803788,0.0232439806993529 +0.00923288296147645,0.00178295618087865,0.0712320524350123,0.00466475595105599,0.00783181536319903,-0.0315573932423844,0.000494596866469335,0.00873012506591449,-0.0264357353815784,0.000494596866469335,0.00873012506591449,-0.0264357353815784 +0.00102748426253752,0.00483086898011234,-0.0319002435056984,-0.00315472467241147,0.000514673793033792,-0.0699323163994084,0.0159162380286075,0.0067326003915679,0.093967206644958,0.0159162380286075,0.0067326003915679,0.093967206644958 +0.00260466799032154,0.00288489545884007,-0.0242800126783609,-0.00202221982429871,-0.00288947536537645,0.0191569302138501,0.00717180036885987,0.0107540405718142,-0.0127534759481542,0.00717180036885987,0.0107540405718142,-0.0127534759481542 +0.00476645550490715,-0.00345890514120578,0.0343947954690486,0.00268892643698848,0.00133676533344041,0.0216139554381705,0.0105754247315879,0.0103647672652611,-0.00845712650517232,0.0105754247315879,0.0103647672652611,-0.00845712650517232 +-0.00177359502923649,0.00114428621644744,-0.016150341416192,-0.00278509918027767,-0.000977038169150933,-0.00197775898430044,0.0121299837341234,0.00464705209454294,0.0395832568291095,0.0121299837341234,0.00464705209454294,0.0395832568291095 +-0.00664361092943601,0.00466148137603374,-0.0655863646575623,0.00571877909549914,-0.00150344115441714,0.00627464547846781,0.00173587769648973,0.00597079921310384,-0.0180282408547864,0.00173587769648973,0.00597079921310384,-0.0180282408547864 +-0.00369357199185645,-0.00577034125818954,-0.00198897607605997,0.0101275981866191,0.00189540217793778,0.0426909410586692,-0.0022279390042801,0.00841327480092473,-0.054512869310536,-0.0022279390042801,0.00841327480092473,-0.054512869310536 +0.0100597712021606,0.00501833285022977,0.0295718423929928,-0.000176498007296702,0.00608628973786146,-0.0258358157561204,0.00235693005571426,-0.00120906770158719,0.0155195129547617,0.00235693005571426,-0.00120906770158719,0.0155195129547617 +0.00768688418047386,0.000985353104633909,0.0228809693920314,0.00124689620496043,0.00310970896558404,-0.0141749771048815,0.00914563077373088,0.00476539089106188,0.0239684358183781,0.00914563077373088,0.00476539089106188,0.0239684358183781 +-0.00830138828179489,-0.00739789800674574,0.0194827009134946,-0.00729122137070716,-0.00206207961169234,-0.0237688437058955,0.0112577116679519,0.00535647929305625,0.0240528191684067,0.0112577116679519,0.00535647929305625,0.0240528191684067 +-0.00217758072463413,0.000267838323458575,-0.0133666405525925,0.00445095533418268,0.0059667754771449,-0.0401681750690937,-0.00446609268016203,-0.0021775421075854,0.0163485022222296,-0.00446609268016203,-0.0021775421075854,0.0163485022222296 +0.0029334143056867,0.00681004515893156,-0.028097822035942,-0.00567458453041032,-0.00552304847072649,-0.0646752097098968,-0.00312538551996193,-0.00227737640173386,-0.000653541346648197,-0.00312538551996193,-0.00227737640173386,-0.000653541346648197 +-0.00271463239574443,0.00176666902920665,-0.0351432897888076,-0.00620131677022813,-0.00771503202030434,-0.0137763510759493,0.00134530220669355,0.00486163955719344,-0.0277908160193356,0.00134530220669355,0.00486163955719344,-0.0277908160193356 +0.00276489901876924,0.00260848817780104,0.0308055966962012,0.00615123217174283,0.00256682192705301,0.0267861231608488,0.000575388037611724,0.00503046603115768,-0.0318266447298627,0.000575388037611724,0.00503046603115768,-0.0318266447298627 +0.00667865645626885,0.00189706895613753,0.0264806513251008,-0.00198367821164756,-0.00201886255348199,-0.0108887956882087,0.00618731800882853,0.00582403505021694,0.0354800898588815,0.00618731800882853,0.00582403505021694,0.0354800898588815 +0.000288650108384243,0.00804800839855043,-0.0237264021650005,-0.00783684864214308,-0.00626926669668836,-0.00920159412960419,0.0117492909317806,0.00582014808440245,0.0467699952828218,0.0117492909317806,0.00582014808440245,0.0467699952828218 +0.000791411220064429,-0.00238880151884316,0.0236306767912977,0.00591407810617016,0.00381885442730043,-0.00622023303698303,0.00500263164051252,0.0132362397290827,-0.0162618201969259,0.00500263164051252,0.0132362397290827,-0.0162618201969259 +0.00376782775399451,0.011870609539521,-0.00527334680283106,-0.000447419966451726,8.5915726794005e-05,0.00863056707339049,0.0110167752314943,0.0058217079565302,0.0551629007896773,0.0110167752314943,0.0058217079565302,0.0551629007896773 +-0.00623084580588145,0.00271212216326062,-0.0438450902562494,0.00149989678609486,-0.00573367763933153,0.00193982410624485,0.00876552107378559,0.0167217996203624,0.00834473165007741,0.00876552107378559,0.0167217996203624,0.00834473165007741 +-0.00768589140124028,-0.00720194207874757,0.017089520687249,0.00336564457591091,-0.0010893304325119,0.0300003650147735,0.00710298401447364,0.0132279115513043,0.00115946322718927,0.00710298401447364,0.0132279115513043,0.00115946322718927 +0.0139507283859346,0.00691950898942034,0.0474180889308696,-0.000876973924102856,0.00277623939706556,-0.0264638412361854,0.00271311190184137,0.00125523291057045,0.0496902488392498,0.00271311190184137,0.00125523291057045,0.0496902488392498 +0.00904565183814881,0.00863418168933834,0.0261063283084765,-0.0095152670639674,0.00214945545751611,-0.0585081203540758,0.0158927643104253,0.00740032788134236,0.0663297405778191,0.0158927643104253,0.00740032788134236,0.0663297405778191 +-0.00407239709892526,-0.00107321259322317,-0.0406897213297717,-0.00984626431961771,-0.00455949693805361,-0.0363302214167243,0.0150965055110367,0.0153630184206042,0.0356255378765463,0.0150965055110367,0.0153630184206042,0.0356255378765463 +0.00506223982114651,0.00127424411290554,0.0256987042775802,0.00506284647541627,-0.00109925415929149,0.0608192611025708,0.00805662051506523,0.00995624651738916,-0.00939435358130744,0.00805662051506523,0.00995624651738916,-0.00939435358130744 +0.00490394320651868,-0.00279998177927984,0.0342393255733871,-0.00265235696024919,0.00254319583945186,0.00536495920658584,0.0123406104227825,0.00853001003362995,0.0368758603605897,0.0123406104227825,0.00853001003362995,0.0368758603605897 +0.00367204123073279,0.00668775167878329,-0.0043092891277656,0.00198257195397506,0.00332485069774312,0.0100606164382372,0.0116031268476468,0.00406896130903913,0.0465894125532025,0.0116031268476468,0.00406896130903913,0.0465894125532025 +-0.00177057008309635,0.00180903520276098,-0.0163436251714879,-0.000499352746435166,-0.00298603713871861,-0.0144119569955357,0.00691975670280251,0.0109656571708604,-0.00372942657371351,0.00691975670280251,0.0109656571708604,-0.00372942657371351 +-0.00154510048992478,-0.00305417015416072,0.00315792951539942,0.00442229396992136,0.000646876008107944,0.0403233123355867,0.00662248352304115,0.00917223773616141,0.00524341867054983,0.00662248352304115,0.00917223773616141,0.00524341867054983 +0.000818091958326609,0.00738805298514645,-0.0233247878207693,-0.0031312332343841,-0.00201298533433132,-0.0121908396017456,0.00558147324122124,0.00317949659845702,0.0223034967272546,0.00558147324122124,0.00317949659845702,0.0223034967272546 +-0.00962739341442052,-0.00148171081058063,-0.0487827622998327,-0.00126221488803653,-0.00189768087538143,-0.00924397550876878,0.0034095394306914,0.0100584188292432,-0.0180178622247842,0.0034095394306914,0.0100584188292432,-0.0180178622247842 +0.000649265191805753,-0.000541760262535617,0.0130063904398441,0.0103175933028761,0.00414484483486014,0.0164419171659967,-0.0019482048405169,0.00475243532670241,-0.026114146889565,-0.0019482048405169,0.00475243532670241,-0.026114146889565 +0.0108776475571827,0.0129088943486393,0.0334083588455505,0.00269201500682227,0.00524325805683338,0.000539086906950995,0.00425596622800472,0.00177248265122061,0.0272289359693685,0.00425596622800472,0.00177248265122061,0.0272289359693685 +0.00518316461393189,-0.00620954782754678,0.0287130074428226,-0.00572062073691391,-0.00533053305680309,-0.0262738929829548,0.0125473435351727,0.0144424714806669,0.0393617584892832,0.0125473435351727,0.0144424714806669,0.0393617584892832 +0.000280498017910252,0.00112603634098053,-0.00782511599806944,0.000230368453008785,0.00762148267579095,-0.0155794367971237,0.0169097470130079,0.00362503125087903,0.0660778168069315,0.0169097470130079,0.00362503125087903,0.0660778168069315 +-0.00258462769372582,0.00620924682915041,-0.0369210208754744,0.0056364613005091,-0.000283900478095148,0.0665686869723509,0.00302439922970232,0.00624022263760962,-0.0173746253719009,0.00302439922970232,0.00624022263760962,-0.0173746253719009 +0.00258008267636973,0.00207211550570907,0.0177310107808226,0.00892689539066375,-0.00230052695524086,0.0258591415562844,0.00192978801488571,0.0104231515975896,-0.0285814368931357,0.00192978801488571,0.0104231515975896,-0.0285814368931357 +0.00906273968858885,0.0100335704694415,0.01491854419008,-0.0028189918416624,0.00173640008185022,-0.0188305168300583,0.0104807122817972,0.00828220469534752,0.0419094534286773,0.0104807122817972,0.00828220469534752,0.0419094534286773 +-0.00400102694810149,-0.00100930752923266,0.0080215935744814,-0.00116356846124546,-0.0121672999656028,0.0273992910500921,0.0158811862193436,0.016202567422868,0.0344991537501909,0.0158811862193436,0.016202567422868,0.0344991537501909 +-0.00147877123207548,0.000174298292966078,0.00968920887146283,0.00375106462482576,0.00619845016627787,-0.0221469688860669,0.00872195791387931,0.0106654594909879,0.0397695488238245,0.00872195791387931,0.0106654594909879,0.0397695488238245 +0.0140487832529943,0.0117377968004997,0.0151894234135833,0.000145113283966325,0.00426406512354852,-0.0280200729635521,0.00749746075779772,0.00710872821545457,0.0438647251686468,0.00749746075779772,0.00710872821545457,0.0438647251686468 +-0.00139444590507893,-0.00216975960549266,-0.0333714615973811,-0.0108549979854994,-0.00659824543620345,0.00624772334114915,0.0202573737717261,0.0165022092822762,0.0403823549752064,0.0202573737717261,0.0165022092822762,0.0403823549752064 +0.00630433292131977,0.005571654630281,0.0271152080855536,-0.00227983655460253,0.00635546581172779,-0.000227225226359602,0.0112318456763768,0.0107035888003912,-0.0118109974275397,0.0112318456763768,0.0107035888003912,-0.0118109974275397 +0.0010277367925139,-0.00240139306805971,0.00433082865096963,-0.000691943514297505,-0.000900005639504858,-0.00183374082964634,0.0138003103797465,0.0140775371211962,0.0300837604799454,0.0138003103797465,0.0140775371211962,0.0300837604799454 +7.76746568158104e-05,0.00050907142788308,0.0220435283285208,0.00507713713090269,0.00747602420515807,-0.000305415828782216,0.0120844372386055,0.00774081812709088,0.0319578083810407,0.0120844372386055,0.00774081812709088,0.0319578083810407 +0.00357374795446868,0.00223031042989974,0.0181726969785736,0.00284687801135862,0.00280911830690763,0.00128045783649087,0.00602191770615247,0.00700141446609129,0.0297201125822593,0.00602191770615247,0.00700141446609129,0.0297201125822593 +0.00296971064462962,0.00710564285657184,-0.0569409040006026,-0.00173266539034731,0.00882373513487631,-0.0447818800836297,0.0095193255768957,0.00679786443825916,0.0412845979928174,0.0095193255768957,0.00679786443825916,0.0412845979928174 +0.0100454357161013,0.00852689767193196,0.0484298937562959,0.00400859330457827,-0.000348526390982082,0.0655044799718771,0.0086278503037137,0.012290986241596,-0.0407128062004353,0.0086278503037137,0.012290986241596,-0.0407128062004353 +-0.0116694485594712,-0.00750111753842125,-0.0255845969849953,-0.000681206386576722,-0.00363146786674348,-0.0184532523205325,0.0184831333762142,0.0176413456818047,0.0533273701783541,0.0184831333762142,0.0176413456818047,0.0533273701783541 +0.0112333513072578,0.0108988891884422,0.0315825918802849,0.000184262412706401,0.00980592732912286,-0.0263232461354446,0.00242621293647827,0.00525093682364378,0.0122629582736509,0.00242621293647827,0.00525093682364378,0.0122629582736509 +-0.0103075014579687,-0.0085916557926546,-0.033507202022087,0.00363144250170115,-0.0045939114061901,0.0158195207043878,0.0156871431241117,0.0139483924484256,0.0511183080639527,0.0156871431241117,0.0139483924484256,0.0511183080639527 +-0.00352089607567167,-0.00131304137514275,-0.0329489938611478,-9.52834173785553e-05,0.00812054386731686,-0.0127702017841843,0.000931016917571059,0.0016181926900516,-0.00299500713883589,0.000931016917571059,0.0016181926900516,-0.00299500713883589 +-0.00369418740076248,0.0028283316950482,-0.0188533336458911,0.00823061440472781,0.00901034274474214,0.0310242059531391,-0.00233060724007448,-0.000207858729600195,-0.0305768879541632,-0.00233060724007448,-0.000207858729600195,-0.0305768879541632 +-0.00185746664600205,0.00292837027688877,-0.0135314618746977,0.0010358859981394,0.00134432414573769,-0.028331514868976,-0.00433859937817147,0.002640724277741,-0.0260174861504346,-0.00433859937817147,0.002640724277741,-0.0260174861504346 +-0.0032095476383121,-0.00218912750982589,-0.0199305358785612,0.00629941640935257,0.000206164171352809,-0.00287262124058706,0.000236571293652546,0.00355726034296885,-0.000341242678515095,0.000236571293652546,0.00355726034296885,-0.000341242678515095 +0.00513409417264076,0.0107779468669372,-0.0144477320161953,-0.00250421110515046,0.00473347040560635,-0.0152434657611683,-0.000241204955710859,-0.000343557571769628,-0.00607071819634251,-0.000241204955710859,-0.000343557571769628,-0.00607071819634251 +0.00175583610387313,0.000903565742777948,0.0271991356669007,-0.00120039325959622,0.00489471218029542,-0.0415268425908083,0.00472615766333986,0.0106478972249668,-0.0178387902253455,0.00472615766333986,0.0106478972249668,-0.0178387902253455 +0.00930076763847732,-0.00603003176483272,0.047121932206128,-0.0012374957500527,-0.00433863329815357,-0.0151274282632461,0.00978947867063205,0.00777534398782135,0.0481585440892432,0.00978947867063205,0.00777534398782135,0.0481585440892432 +0.000877853992133964,-0.00647194740283843,0.0155155500367056,-0.0106259136023475,0.00548092954250681,-0.0577259970256586,0.0159179238543981,-0.000404172018528293,0.069643564952203,0.0159179238543981,-0.000404172018528293,0.069643564952203 +0.00384582872346214,-5.37626506199207e-05,-0.00474219370448749,0.0045680583104599,0.0104475249889055,0.00803693446021656,0.000416564203044274,-0.00369352107176253,-0.00596704176711968,0.000416564203044274,-0.00369352107176253,-0.00596704176711968 +0.0090286950260948,0.00436538631598553,0.0365171928237409,-0.000332295423329234,0.00523215760663396,0.0233950676700392,0.000538716961847474,-0.00168653818237906,-0.0241183810500685,0.000538716961847474,-0.00168653818237906,-0.0241183810500685 +0.00324049703577252,0.00778271316588877,-0.00839838108184604,-0.00292533022354354,0.00106561579630972,-0.0169327920715818,0.00696884803801863,0.00408162229894669,0.0168897737281121,0.00696884803801863,0.00408162229894669,0.0168897737281121 +0.00339383847217146,0.0111322716750701,-0.0365004907136814,0.00163546323724766,-0.00210984462743686,0.0120602390086003,0.00630889214557435,0.011362304920739,-0.00625463163800954,0.00630889214557435,0.011362304920739,-0.00625463163800954 +-0.0077340215558667,-0.00172108907260569,-0.00185499372612704,0.00449243402458969,-0.00473028338619912,0.0480879998795232,0.0121298640504398,0.0185767423192409,-0.0124393852545029,0.0121298640504398,0.0185767423192409,-0.0124393852545029 +-0.00832928948303374,0.00171309657906456,-0.0520080948498132,0.0026617213576537,-0.00545889986146085,0.00567793106139713,0.00629277632088215,0.0109657793637829,0.0306408993725685,0.00629277632088215,0.0109657793637829,0.0306408993725685 +-0.00229441245881482,-0.00567157277058102,0.0377440763253631,0.00606277070269004,0.00116192546865107,0.0180934806809197,0.000954590008219373,0.00831681848589278,-0.012886076574245,0.000954590008219373,0.00831681848589278,-0.012886076574245 +0.0122245983153375,0.0134846749950894,0.00686699432416188,0.00277020508791608,0.00643176783482798,-0.0208816324316275,0.00431198534413497,-0.00104193870252641,0.0633985220667637,0.00431198534413497,-0.00104193870252641,0.0633985220667637 +0.00688368565099063,0.00248522035554435,0.00132116080806791,-0.00505706712591934,-0.00447919784290972,-0.00439652096946058,0.0123755902757838,0.0130008762682221,0.0172783894470315,0.0123755902757838,0.0130008762682221,0.0172783894470315 +0.00195084082116802,0.000161736167927378,0.0342792215864649,-0.00824647944605046,-0.000501072047441337,-0.0028783862544776,0.0168853451079494,0.0119364087454589,0.0232818004377013,0.0168853451079494,0.0119364087454589,0.0232818004377013 +0.00565581610926202,0.0096860682253823,-0.0209795011094322,-0.000763514186883832,-0.00270313826035249,-0.0189890672350988,0.0106921588582974,0.0101629384701326,0.0400106840839643,0.0106921588582974,0.0101629384701326,0.0400106840839643 +-0.000866273791110099,0.00271721096546955,0.0356491714014179,-0.00973986844858236,-0.00730660447422328,-0.0229290583301869,0.0139929397858991,0.016883264679075,0.00487505646000357,0.0139929397858991,0.016883264679075,0.00487505646000357 +-0.0100954202500738,-0.00427195099610372,-0.0354240425079023,-0.00436807030323493,-0.0076507770324478,-0.0519736312263512,0.0119356091306459,0.014748183512865,0.062929744400029,0.0119356091306459,0.014748183512865,0.062929744400029 +0.00472195665479615,0.000717275674864156,0.0139632691122291,0.00263427424212971,-0.00256706919880166,0.0193980791692876,0.00252037553579164,0.00514675644845696,0.0158193737631544,0.00252037553579164,0.00514675644845696,0.0158193737631544 +-0.000881343507651008,0.000227078389166432,0.00363332868984769,0.00387066912101761,0.00729832528986662,-0.0199015682716868,0.00916215633334053,0.00367794728038539,0.0343686304967641,0.00916215633334053,0.00367794728038539,0.0343686304967641 +-0.000905097258306659,-0.000471137911441733,0.0128364999448648,0.00157767982232697,0.0014921079282314,-0.0064653537041871,0.00201790955900145,0.00387923716510585,0.00493021219092324,0.00201790955900145,0.00387923716510585,0.00493021219092324 +0.00112860479845174,0.0106609732074855,-0.0214236864168884,-0.00199497625361225,0.00423350678586961,-0.0387569537820752,0.00226140248516529,0.00191248209515552,0.0246788662046433,0.00226140248516529,0.00191248209515552,0.0246788662046433 +0.00596888214966982,0.00865159693213044,-0.0215683416105864,0.00420306263988345,-0.00183461764643314,-0.0193528824662302,0.0030789824189319,0.0117841861055376,-0.00961900966497453,0.0030789824189319,0.0117841861055376,-0.00961900966497453 +-0.00188937504546375,-0.00153907019204333,-0.0234470306784463,-0.0123438977371582,-0.0064626541234771,-0.028644466032147,0.0153424573553498,0.0155158257263794,0.0131241275078607,0.0153424573553498,0.0155158257263794,0.0131241275078607 +0.00391934479137589,0.00438872523169373,-0.0463874770346801,-0.00189053094515647,-0.00717538781317101,0.0162533132041666,0.00980393011155091,0.0100207385575155,-0.0024667292556356,0.00980393011155091,0.0100207385575155,-0.0024667292556356 +-0.00202925950462771,-0.00407752119161541,-0.0225304900242516,-0.00239000792374498,-0.00728123498089214,0.0394161691294275,0.011221855735435,0.0120162804142525,-0.0374400578481953,0.011221855735435,0.0120162804142525,-0.0374400578481953 +0.0010728593032608,0.00725785675825873,-0.028857639521178,-0.000712645668251342,-0.00253030934222995,0.00556932182706139,0.00596415968252727,0.00552509210588046,-0.0256473078146673,0.00596415968252727,0.00552509210588046,-0.0256473078146673 +-0.00773878331993544,-0.0107899369769823,-0.0444480995708018,-0.00627940740377326,-0.0135268031602997,0.0174104216421102,0.00445685692434167,0.0120305328685308,-0.0366868116534371,0.00445685692434167,0.0120305328685308,-0.0366868116534371 +0.000307844189221914,-0.00220562383507513,-0.0114952932098317,0.0025721611709476,0.00312171628320528,-0.00204784209464957,0.00104226762061711,-0.00297198846670625,-0.0253875405737324,0.00104226762061711,-0.00297198846670625,-0.0253875405737324 +-0.0112387522195544,-0.0074345166677592,-0.0475784199450318,-0.00385751069347659,-0.00597072208326327,0.0208197278046991,-0.00292385069804649,-0.00297733076706368,-0.0386559578403421,-0.00292385069804649,-0.00297733076706368,-0.0386559578403421 +-0.0128444396212571,0.0106040577909544,-0.0972422472860555,0.000542708871891338,0.00117939622195241,-0.00118138321947605,-0.0143475386078765,-0.00902214887347409,-0.0679832666080986,-0.0143475386078765,-0.00902214887347409,-0.0679832666080986 +-0.0101298576316691,-0.00154199805447757,-0.0274183313775034,0.00386495417972944,-0.00198924576410771,-0.0563794300556337,-0.0204769339219574,0.00349974620072576,-0.119218769075115,-0.0204769339219574,0.00349974620072576,-0.119218769075115 +0.00527329733914624,0.00708633256979916,0.00832891281101847,0.00587700352496003,0.00091874097317655,-0.0667799220925182,-0.00772825116743038,-0.00311460884250712,-0.000781547540206123,-0.00772825116743038,-0.00311460884250712,-0.000781547540206123 +0.00495580057717593,-0.00299118627328053,0.0250459984766925,0.00337135756726419,0.00375332650569723,0.000278926891404645,0.00349083001404444,0.00351154686692959,0.0199183159228072,0.00349083001404444,0.00351154686692959,0.0199183159228072 diff --git a/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing3_variates.csv b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing3_variates.csv new file mode 100644 index 0000000..5458ea8 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing3_variates.csv @@ -0,0 +1,1216 @@ +"x" +-1.20706574938542 +0.27742924211066 +1.08444117668306 +-2.34569770262935 +0.42912468881105 +0.506055892157574 +-0.574739960134649 +-0.546631855784187 +-0.564451999093283 +-0.890037829044104 +-0.477192699753547 +-0.998386444859704 +-0.77625389463799 +0.0644588172762693 +0.959494058970771 +-0.110285494390774 +-0.511009505806642 +-0.911195416629811 +-0.83717168026894 +2.41583517848934 +0.134088220152031 +-0.490685896690943 +-0.440547872353227 +0.459589441005854 +-0.693720246937475 +-1.44820491038647 +0.574755720900728 +-1.02365572296388 +-0.0151383003641817 +-0.935948601168394 +1.10229754620026 +-0.475593078869057 +-0.709440037512506 +-0.501258060594761 +-1.6290934690787 +-1.16761926209419 +-2.18003964894867 +-1.34099319210003 +-0.294293858763713 +-0.46589754040611 +1.44949626528713 +-1.06864272367458 +-0.855364633737507 +-0.280623001957454 +-0.994340076295665 +-0.968514317872049 +-1.10731819264177 +-1.25198588563894 +-0.523828118987356 +-0.4968499572667 +-1.80603125680195 +-0.582075924689333 +-1.10888962442678 +-1.01496200949201 +-0.162309523556819 +0.563055818994517 +1.64781747281506 +-0.773353423943695 +1.6059096288573 +-1.15780854769441 +0.656588464332807 +2.54899107071786 +-0.0347603898038376 +-0.669633579661957 +-0.00760475571097463 +1.77708444814343 +-1.13860773675091 +1.36782717942326 +1.32956479078236 +0.336472797203817 +0.00689283844195796 +-0.455468738161428 +-0.366523932873933 +0.648286567503148 +2.07027086133094 +-0.15339841246697 +-1.39070094670149 +-0.723581777110154 +0.258261762167853 +-0.317059114961199 +-0.177789957664294 +-0.169994076854541 +-1.37230188587669 +-0.173787170414033 +0.850232257121884 +0.697608711668253 +0.549997351091101 +-0.402731975447623 +-0.191593770478477 +-1.19452787960251 +-0.0531588187433239 +0.255196000995833 +1.70596400724007 +1.00151325236345 +-0.49558344300146 +0.355550296999749 +-1.13460804353385 +0.878203626952291 +0.972916753376122 +2.12111710537568 +0.414523534374985 +-0.47471847352936 +0.0659934937044614 +-0.502477782393866 +-0.825998587129336 +0.166989279752984 +-0.896264626244759 +0.168185387655757 +0.354968261014854 +-0.0521051168711336 +-0.195934618716253 +-0.64906975160576 +-1.10976723139873 +0.849274202655058 +0.022362526076024 +0.831140617306835 +-1.24428785134423 +0.169026413766175 +0.673166306947679 +-0.0262763764485261 +-0.191392168556024 +-0.781906646699876 +2.05816198776349 +0.750501453155831 +1.82420830237829 +0.080059641091988 +-0.631409298966366 +-1.51328812003373 +-0.636099831085051 +0.226301532497161 +1.01369034746575 +0.252750135066342 +-1.17194831284112 +0.668714328525034 +-1.65010093484436 +-0.365852248191901 +-0.31611832883308 +-1.94824604732137 +0.920057522390905 +-0.622871594878875 +-0.334036649997458 +1.39514789252962 +0.63667441103895 +-0.108431696990383 +0.513762778404674 +0.399271807273958 +1.6628564474304 +0.275893403585483 +0.506272623207687 +0.347551975023811 +-0.377237647496313 +0.0976194631092374 +1.63874464512173 +-0.875592474189569 +0.121759998641046 +1.36213066084498 +-0.23462108692271 +-1.05338280794309 +-0.869783605635912 +-0.390127029647055 +-0.847350073129572 +-0.260639392099399 +-0.414419706341893 +-0.183050797719434 +0.407056097880578 +0.624633128202147 +1.67820574370471 +-0.0686936535649907 +-0.320839912658177 +1.47100571704891 +1.7043293978271 +0.0432440375575291 +-0.332657319133519 +-1.8222354175631 +1.41126239874678 +-0.837582434076861 +-1.12376279439532 +3.04376588609529 +0.235021308250671 +-0.0332586101133057 +-2.7322195229558 +-0.0997905884418961 +0.976031734922396 +0.413868915451097 +0.912322161610113 +1.98373220068438 +1.16910851401363 +-0.50873701541522 +0.704180178465512 +-0.198416273822079 +-0.538070788884863 +-2.85575865501923 +-0.789646852263761 +0.487814635163685 +2.16803253951933 +0.500694614280786 +0.62021020366732 +-0.965903210133575 +0.162654708118265 +-2.07823754188738 +0.485226820569252 +0.696768778564913 +0.185513915583057 +0.700733515544461 +0.311681028661359 +0.760462361967838 +1.84246362620766 +1.1123628412626 +0.0326639575014441 +-1.11444896479736 +0.418057822385083 +-0.400235237343163 +1.49349310261748 +-1.60708093984972 +-0.415751788401515 +0.42200837321742 +-0.151736536534977 +-0.60615111526422 +-0.304721068966714 +0.629536099884472 +0.895171980275539 +0.660212631820405 +2.27348352044748 +1.17349757263239 +0.287709728313787 +-0.659770093821306 +2.91914013071762 +0.677415500438328 +-0.684320344136007 +0.186492083080971 +-0.324393300483657 +-0.274704218225806 +-0.933503340589868 +0.116845344986082 +0.319160238648117 +-1.07754212275943 +-3.23315213292314 +-0.254874652654534 +0.0295178303214797 +0.594273774110513 +0.0591351681787969 +0.413398894737046 +-1.09777217457042 +0.711175257270441 +0.718888729854143 +0.251651069028968 +1.35727443615177 +0.404468471278607 +0.264364269837939 +0.268043904143697 +0.436930577039483 +1.06012390548736 +0.452190396528715 +0.663198615687065 +-1.13637355399084 +-0.370497517092117 +1.47696958979247 +-1.22390375051376 +0.258068387396106 +0.405002805433516 +0.97580332180945 +-0.348876736539909 +0.158625439491262 +-1.76325506654115 +0.338596047099905 +-0.666565029559273 +-0.238646624327644 +-1.18776528245719 +0.384935321768578 +0.66657951565448 +-0.304613889457735 +1.8250110640863 +0.670559370567588 +0.948632573255153 +2.04940300167091 +-0.651113609237535 +0.808619272846293 +0.986580613954563 +-0.00617079609070003 +0.319052357931912 +-1.01182190274184 +0.470167547726389 +-0.700970331629097 +0.813682862526491 +-0.811430783992772 +0.31939748709946 +-0.846522653163624 +-0.245763179128733 +-1.55285901110546 +0.128434032925753 +0.985443389404868 +0.183247523067191 +-1.76622921343046 +-0.620533696615944 +1.65604303699874 +1.80980538558388 +-1.17503676801214 +-0.366703258827641 +0.353625448927287 +0.319156220867898 +-0.579956989019402 +-0.953278701946907 +-0.179428586945621 +1.0098082149443 +0.0236266149214088 +-0.649028219583901 +-0.504374222048191 +1.61439149545836 +-0.446959811255663 +0.763176761113315 +1.4717186861858 +0.443664903687416 +-0.421721870070189 +-0.0400016262060736 +-0.492279968227887 +1.22771711731275 +-0.149553565244392 +1.54998338398246 +-0.561612535381314 +-0.647117250632361 +0.143132159050427 +0.0241886479910512 +-0.504451524580869 +-1.58139680993034 +0.030066421255418 +-0.716576699070701 +1.08261095547612 +-0.952685454939293 +1.12648272900916 +-0.649043017379116 +0.292470078406726 +0.898702724402737 +-0.518742356791874 +0.554438552345125 +-0.0879736711840128 +-1.13521292940752 +-0.270079610999902 +1.61978987753494 +-0.21413117369664 +-0.817782462924957 +-0.0540229240816071 +0.330141609857869 +0.955324614657399 +1.14395987779244 +0.100522398375063 +1.16457524565738 +-0.764259947799148 +-2.3445134046903 +-0.471683425529536 +-0.51585548950739 +-2.31603615150256 +0.562471756969533 +-0.783775139422381 +-0.226053986228165 +-1.58710298765404 +0.547524201868316 +1.89122701735548 +-0.878077110224044 +-0.112558911044787 +1.94871306497599 +0.933816332207727 +1.91305942169705 +-0.00523405793193957 +-0.152260048921635 +-0.509631657179118 +1.43457370342612 +-1.28583853233299 +0.307314215255018 +-0.046318533277383 +2.25184180012688 +-0.608033728609708 +-1.50928816985104 +0.232631769508576 +-0.0396486960510932 +-0.839125067505345 +0.132291088244156 +-0.275524746705939 +-0.678758641268032 +0.500835931775825 +-0.331662312006789 +-1.83498025077253 +-2.65174124837268 +-0.580582172084415 +1.45418687087119 +0.838129379964693 +1.21505358044614 +0.982505442732795 +0.315764024018431 +-1.50706262771632 +0.205569787166277 +1.59722809034381 +-3.39606353457436 +-0.781352284302082 +1.10246464075191 +0.528745019445293 +0.789394403514854 +0.457099505856081 +0.538833115658123 +0.0146431224111012 +-0.916489135703093 +-1.22681509076766 +0.0361528681302234 +-0.42139311357139 +-0.899364408462905 +0.417441317486562 +0.15344473686401 +1.46328304519325 +-1.12150249732554 +-0.517788083055024 +-0.0749470883385233 +-1.40779008143908 +-0.284705868110477 +-0.708171178213376 +-2.14763900113752 +-0.283837160611358 +-0.534072163976087 +1.1330101941542 +-0.604068922847656 +0.557511595592472 +0.142629293255087 +-1.23686021484532 +0.37414397250319 +-0.106086123466453 +0.166061986509049 +0.658034848342406 +0.113962919971386 +1.58515916403119 +0.115553440443324 +-1.25399903928352 +0.74186477930074 +-1.22290161499985 +-1.91889413176211 +-0.809936389920794 +-0.744677228785278 +-0.607505922693199 +1.60675956606494 +1.63559944628363 +0.726091096698492 +-1.27383492504346 +0.0231465554333402 +0.487121233826478 +-0.137027503269731 +0.171745482456009 +-0.944793914899987 +-1.28762030600621 +1.40776573875103 +0.26737268905316 +-0.408397642146012 +0.325271219916941 +2.06248097311935 +0.362666955663951 +1.4114046447039 +1.36754431457543 +-0.407176147121539 +0.762541730885853 +-0.651200823031723 +-1.47365577946832 +-1.20166579640511 +-0.148720478130092 +1.79706242855231 +0.104808717855571 +-0.802837973351476 +0.230374964163675 +0.697975193218088 +-1.29520173194588 +-1.05468021797766 +-1.94160748967507 +-1.26956059300372 +-0.887438810816108 +-0.291915762703194 +1.41009405297303 +0.88864143026394 +0.272974319690261 +-0.566641466026189 +-0.0402069374365745 +0.547612245301063 +-0.504033321605536 +1.0590701295588 +1.09745356643579 +-1.16650462962559 +-0.74691131008606 +1.20673873333927 +-1.68721988054335 +0.419709894906327 +0.233498761638796 +3.19590119785739 +-2.72968034122695 +-0.840795801424047 +0.674028668650456 +1.67432650967139 +0.839687083840494 +-1.42836843555519 +2.23938816916782 +-1.75726622410175 +-1.11301608790466 +-0.0431403906133336 +2.2255869089066 +0.50631658733822 +0.730396051435768 +1.72807759473682 +0.984779968314556 +-1.22473787596427 +0.709726218065825 +-0.109219992578064 +1.78260789538833 +-0.243444679602975 +-1.52710702225461 +0.491834371466622 +0.354503660926992 +-0.0176263476303775 +-1.05655032211723 +-0.838914666078269 +-0.0126257164904259 +1.03811014600433 +-0.364457713905061 +-0.871449472185395 +-2.7042030254467 +0.494249836540647 +0.427340324999113 +1.30919086010968 +1.4667226423107 +-0.143056066294616 +1.29851372621074 +0.00131354755592194 +-0.676410075685581 +-0.848196596885468 +-0.346941100407436 +0.227479443027071 +-0.0274014036111113 +0.200877790585033 +0.198942671822796 +0.71459935608369 +-0.273181774889849 +1.63534745793173 +0.437693886479643 +-1.19353585074908 +-0.276649804199181 +0.515883050535119 +-0.411055332086343 +0.344995049472574 +0.434395860831138 +1.30347768300503 +-0.651695910733076 +-0.0168808623279884 +-0.567692455293591 +-1.12713286976328 +-1.84897031117903 +0.19552905518189 +0.601565225195587 +0.639158159789933 +-1.38999281746208 +-1.12967785339758 +-1.14115419483757 +-0.688671499600886 +0.170197818152129 +0.59448342725741 +-0.815032650724957 +-2.86434683706673 +0.95382348170826 +0.615284770613444 +-0.700870700550263 +-1.07366134146979 +-0.299991196799737 +0.108106562802571 +0.723200763587674 +1.39009509607427 +-0.848883398378404 +0.290722844643498 +1.33417603370242 +-0.901342155259083 +-0.222763412932851 +-1.7714680282034 +0.287422250114445 +-0.641191762323999 +-0.924937642238947 +-0.779977469185323 +0.444503373594371 +-2.16246900261166 +-0.425510899920945 +-1.01371765920455 +-0.962119028303747 +0.474634627277364 +0.351754269604537 +-0.107020356246981 +0.537517256600346 +-0.60210489844813 +-2.02329764533368 +1.15442128059814 +-0.230692997694109 +-0.365088768214911 +0.157517929375723 +0.765932222984396 +0.426086966202313 +0.927265399965311 +0.0461345928404875 +-0.504285643091111 +-0.300449408355562 +0.822915978645871 +-0.849268796129039 +-0.953610095681196 +0.313478715882576 +0.612473307433314 +-1.69108322753688 +0.784698627442325 +0.0119251352600229 +-0.181255287869961 +1.10695440248067 +1.47939487098826 +-1.14739944099984 +1.011654376514 +-0.632069194974882 +0.13236131951909 +0.480926064725324 +0.133177627584607 +-1.46286446232819 +-0.506401780474741 +1.53966323733755 +0.172793618387291 +-0.835823924079678 +-0.655928703879608 +1.05756608653532 +0.346083489865367 +-0.897186541993694 +0.00626521125563042 +0.59667050907573 +1.72255180794401 +-0.881749483409345 +-0.379945955166868 +0.996110015873762 +-0.459120892943841 +1.46026574621257 +1.04324617695035 +-1.65904097034683 +0.423957776227396 +-1.41916292618524 +-1.46469245667068 +0.0704209721478317 +0.0566982219802716 +-0.0327081772655874 +1.26428122406637 +0.294987885730239 +-0.673086820504489 +0.119588291490956 +-0.514396508991294 +-0.0681115738665369 +-1.14801191183674 +-0.115244480129169 +0.102936391849009 +-0.701743487103139 +0.041230624270294 +-0.648768350598479 +-0.644007859466443 +-0.204438825066372 +0.490840917661593 +-0.20533698727053 +0.190691323925256 +0.970024192661124 +-0.285261077847069 +-0.103619268541766 +0.511254541203706 +-1.25816245001572 +0.543825968956194 +-0.534963586582989 +-1.13804602678007 +-1.76800377087565 +-0.714978202867742 +-1.17020226435962 +-1.17844814841946 +1.62729133795333 +-1.21214666562853 +0.997509917441285 +0.545245641420171 +-0.88478911517512 +-0.611230697881371 +-0.410199512833357 +0.190409369836815 +-0.348324928959338 +0.826847530284988 +-0.292686902302723 +-2.16534620996324 +-0.0962167762033804 +-1.85195684624858 +0.937811135232089 +-0.747686481439497 +-1.11524143570017 +-0.591506415298824 +0.585230683909193 +-1.91855819930986 +0.253816791504093 +-0.972241766246169 +-0.00851344803801686 +0.679041911007479 +0.569631366692422 +1.5029616611284 +0.129085401165474 +-0.701182951676618 +2.15370721597723 +-0.30324613826175 +0.807579776908013 +0.930991466126415 +0.454902098272933 +1.4254206900636 +-0.20899117251275 +-1.23140277909061 +-0.360603577153347 +-0.547213299484056 +0.327996007514467 +-0.933299832093657 +0.680810824800176 +-1.16388240018636 +1.75544950988335 +1.44963736425491 +-0.448794941211084 +0.140067288930464 +-0.373650328177582 +-1.20643411723808 +-2.66134597494101 +-0.0250944932655905 +-0.0343732572490637 +1.64235903904485 +-1.99546214753883 +-0.662170758602409 +0.880037992310033 +0.342387420001643 +0.121753855523786 +-0.620761034511813 +0.200945267574023 +-0.235905348023341 +0.113661114970227 +-0.577929195287818 +1.18856488583833 +1.05993627812147 +1.33675821086468 +-0.367169171130217 +-0.304336704778395 +-0.350279624235713 +1.37414476272803 +-0.299720491875069 +0.0976351442252321 +0.381188028723722 +0.678212556818783 +-0.26767327223427 +2.34596566433491 +-0.927494655524829 +-1.42655717369774 +0.0423026643898127 +1.76744347000481 +0.0527503271453671 +0.109726039969968 +0.863202615558153 +-0.0989732047696172 +0.103696546086221 +1.20848487568464 +0.0937460210527718 +-0.752196518946083 +0.394924219872661 +-1.09152043398742 +-1.45829242499569 +-0.122712284955754 +-1.1009291916684 +0.580923071839757 +-0.146947489359788 +-0.766334615072354 +1.62289757854462 +-0.109940544035991 +1.42170485426206 +-0.113421048996398 +-0.329280941581153 +0.373460983597143 +1.02988813093981 +2.70577504719934 +-1.03494587124924 +-0.183429858640727 +1.07777130745133 +0.341620225298793 +-0.187343624118674 +-1.30285910852947 +-0.278658261975666 +-0.184753908458266 +-0.0817774971735639 +1.61224179372707 +-0.461939839504668 +-1.57605030081864 +0.496433073531127 +-0.111953783818969 +-0.204346400211973 +0.635568162856401 +-2.90667395407155 +-0.553658252760955 +-0.153451828250923 +0.60529051576044 +-0.261006596184361 +-1.00513846241125 +0.372566114312583 +0.0194461765201242 +0.110528815395276 +1.15657043692358 +-0.542220460211763 +-1.24920128341908 +-1.28001259675319 +-1.02393278779038 +-1.38765057998806 +-0.0492211144061267 +1.81096073048314 +-0.0995100657082667 +0.777237124297383 +-1.10259632518001 +-0.221644782701794 +0.5660949625959 +-0.354959345255063 +0.785262601468044 +0.694047378599404 +-0.632729895584955 +-0.771958641961308 +2.3578173876011 +-0.19254933635981 +0.00661933421419712 +-0.0545460246273611 +-0.568206880540376 +-0.926975943696645 +-1.1357351813807 +0.913962339054452 +-0.986062833322873 +0.66748541348963 +1.40659548970662 +1.15777896011788 +-0.138753197573533 +-0.539321850960138 +-1.07889349906152 +-0.0185621399511091 +-0.232615685678704 +0.15629354251416 +-0.604009754754033 +0.629035120121665 +0.714169570852022 +1.07588610128876 +2.24975551737932 +0.197890598879292 +-0.575546318478704 +-0.0773208650045946 +-1.62791988910102 +0.129923153969037 +-0.425673133260061 +0.406011748521125 +-0.268810185638072 +-1.38098453629771 +0.0365833213445593 +-1.35324453117639 +0.897006193942258 +-1.82935971226393 +-0.141876944171991 +0.457981777842779 +-1.51961751308999 +1.39905531466027 +-0.885339190903023 +-0.506330291221321 +0.163332105966331 +-0.337143856258392 +-1.03595153200983 +0.409337928216715 +-0.524223458216886 +0.506500373524185 +-0.504722862774708 +-0.957250328953504 +-0.0946343584532563 +0.649439317610584 +0.242321799327066 +-0.0589340902617142 +-1.94779407157618 +1.4514436318915 +-0.0399396776377224 +-0.863997691069911 +-0.201690239712518 +0.261255562727432 +-1.51835138330586 +0.717308632275803 +0.246832728096417 +1.20276704630509 +0.986039270447351 +-0.537940599062239 +-0.490282741813956 +-0.995516172562447 +-0.361702928254615 +0.944354811296923 +1.79220701161545 +0.928409395864299 +-1.82993766963068 +0.821878106163116 +1.0362687620034 +0.617420144129801 +-0.854930363118786 +1.06451051848471 +0.729481458103667 +0.66265658435809 +-0.381407202704243 +0.845891777793581 +0.111591884445813 +-0.0677702616560359 +1.48709809651828 +0.75722337664623 +-2.87404249339871 +-0.426542449077482 +-1.48740629563197 +0.588791645710936 +-0.44259951077578 +0.901304802320198 +0.467828340367688 +0.0220403186670302 +-0.0851078317956122 +-0.361267142653458 +0.199506501537268 +-1.1082542547003 +0.672794070486354 +-0.39411363337364 +-0.743967585584992 +-0.32611347678341 +1.87466882681447 +-1.75799914534674 +-0.348860909964869 +0.106589229118385 +-0.537658781205147 +-0.411269131911835 +0.382348337976121 +0.222514088542642 +-0.673754508319701 +0.567432913870525 +0.17948365476 +0.686341749488027 +-1.32726366148341 +-0.767916438222332 +-0.192702508672789 +0.95905119808221 +-0.529031361979442 +-1.03288699095086 +0.771745490447405 +0.465356664198533 +-1.22567106691397 +2.04667724022033 +1.49867444889729 +-1.38894908467684 +2.15337646372281 +-1.72911674054936 +0.102042485094495 +-1.14127912749709 +-0.377009088203781 +-0.348782098762047 +0.322885081228563 +-1.12433961794016 +-2.75704972232067 +-0.0958110991197285 +-0.746699804956649 +0.210781418005385 +-0.848509808508819 +0.792264765704344 +0.0291874325756546 +0.603388012483792 +-0.994940104813448 +-0.211332458143761 +0.344021087496185 +-0.0893785289835366 +1.6540374665165 +-1.96290871320897 +0.756125511499489 +0.0144186579430547 +0.945713804060792 +-0.098808492386284 +-2.73975424338714 +0.420305849423153 +-0.218379262260984 +-0.989355329598254 +-0.656468896184539 +0.055663548201307 +2.45206344477497 +0.18817357373771 +-0.979696368377701 +1.90361046750456 +-0.438519782195613 +-0.829726095585463 +-1.247231318762 +-0.673809163087791 +1.93516726396696 +0.906561434864075 +0.736526771427079 +0.146625304045126 +0.283120796739 +0.589276720770128 +0.215849476577042 +0.155053234874317 +0.953826636303852 +-0.165852702479289 +0.25500374557096 +-0.897472359354659 +1.58397010470279 +1.39275862816597 +-1.81225823172892 +-0.216319678589458 +0.549856056710878 +0.482736237517578 +0.760848728950074 +-0.445658016934015 +-1.20533341962352 +0.301466739764715 +-1.53914522359563 +0.635370723493615 +0.702951774755151 +-1.90588286461734 +0.938921449556239 +-0.224492105495794 +-0.673816775387947 +0.445787444805667 +1.28061710689861 +1.56513013425123 +-1.2005460361895 +-0.437694966373986 +0.146381481824469 +0.0660190755538856 +-0.445036015296508 +-2.3421123864415 +-0.278382367507851 +-1.18180363234485 +0.033125272564001 +-0.837717011840538 +-0.117611080246289 +-0.741522571129195 +-0.408346969183165 +-0.377770760958718 +1.32836671199718 +0.716436306841976 +-0.232289188250961 +-1.22622690024267 +1.04753809093163 +-1.43640718682383 +-1.18246892838659 +-0.776204835813156 +-0.972313509475749 +-0.903657561191073 +1.28720394604443 +-0.106187600987314 +-0.715870953657067 +0.671722196477663 +0.19763362591688 +-1.22009672533363 +-0.560965120450964 +0.533732634411715 +1.95031546468388 +1.58194322960051 +0.837787522236108 +-0.0130696626844759 +-1.72579596201099 +-0.730853573681976 +-0.215413865346964 +0.490206668553714 +0.0593934237561532 +0.0583120529245741 +1.83836310657496 +0.387650899413508 +-0.280550724654658 +-0.428517737963575 +0.0953249355319381 +-0.813331408941419 +1.36819007742547 +-0.287536030090232 +-0.528552423477519 +-0.873012923256978 +0.935893072400666 +-1.27726732302221 +-0.46873983893923 +0.312516273339671 +-0.108322301643512 +0.250790417333032 +-1.31619339420622 +-0.430075449167385 +-1.70410969758613 +-0.842137365214459 +1.14825059530873 +0.252831535909216 +0.0852871861245182 +-0.933626130521208 +-0.556819606159632 +-1.01637031942077 +0.0535252498211483 +0.765133606147259 +0.299194815381504 +-0.617615748213199 +0.552787313574323 +0.38790849886898 +0.843210942250361 +-0.440627586336594 +-1.17936537325272 +-0.084569065358819 +0.302777695052609 +1.55909373112435 +-0.0696625273052436 +0.427039414467802 +-0.0832631982761803 +2.15639774076182 +1.33796805938236 +-0.232304447395243 +-0.127404089947392 +-0.0216854042717521 +0.113254084384586 +-0.565095410492474 +0.0807003872444948 +-0.695771406588942 +-1.09620213295198 +0.804440557754521 +0.656644119934708 +-0.568030677344538 +1.27278584148814 +-0.192543915756971 +-0.283665218588817 +-0.953671712939253 +-0.0243506460341634 +-0.136985964857522 +0.0675183911210883 +0.445168359831976 +0.906600388246007 +0.327410566460573 +0.992561626752092 +1.06540057402709 +-2.93048205538058 +-0.362773742987749 +0.569932538092558 +-1.11963547230504 +-0.960650358604092 +0.273736471912206 +-0.441423288640161 +-1.73148781767851 +0.905854843976373 +-0.840839641506773 +0.386347854925968 +0.412430114457017 +1.52126864304235 +0.196564235460822 +0.665610352836782 +1.14059109224811 +-0.40638112804759 +-1.65556135368929 +0.1429300364911 +1.32591430830883 +-1.40627766063955 +1.01213161499515 +-0.0601308429578255 +0.0994814242802729 +-0.349221797505872 +1.03685327959033 +1.42415647914164 +1.57084879138618 +-0.967400733067285 +0.759285844342793 +-0.376189654458143 +-0.983409413915195 +0.389895101103217 +-0.0179507137482475 +0.791724605090037 +1.79239787563701 +1.03671688493632 +-0.695685615560389 +0.139622664969318 +1.41324549389255 +1.17443759629564 +-1.58478158266429 +0.946429920633797 +-0.340514085118673 +-0.625362690703707 +-1.10120222898271 +-0.31179546007352 +0.688656505383638 +1.43527187786736 +0.138907098200222 +-0.0730523864217389 +-0.202335938111801 +0.95379933574217 +-1.08119344744204 +0.250018704551322 +1.02162198057182 +1.06185151113365 +0.417070210072757 +-1.16236615136998 +-0.821084729814662 +-0.720488257715399 +-1.44327196869698 +0.0400203344434218 +1.22294668396681 +-2.44669391662971 +0.758387891981524 +-0.202661654123509 +-0.76913384719501 +0.770008811410607 +0.64838515883954 +0.0962173786188587 +-0.919643353169371 +-0.704861777237915 +-1.61723406227759 +1.88089390836698 +-0.155594360847613 +-0.754513748781243 +-2.16095244416957 +-0.429461680300403 +-0.549127904639596 +-1.40231588288433 +2.38397182312468 +0.872944350978479 +-1.53566588717424 +1.1339752513847 +1.04484016061832 +0.589830688745609 +0.399103734894867 +0.14494918465514 +0.619161217607744 +-1.03261910609812 +-0.649356138275683 +-1.00200725819239 +-0.165880959988503 +0.14665629511642 diff --git a/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing4.csv b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing4.csv new file mode 100644 index 0000000..30a991e --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing4.csv @@ -0,0 +1,203 @@ +"eta1","eta2","eta3","eps1","eps2","eps3","state1","state2","state3","signal1","signal2","signal3" +-0.0117952215732943,-0.0141308307424339,-0.0162335119525545,0,0,-2.12199578997714e-314,-525.179970427008,-864.7886727599,935.676149404649,-525.179970427008,-864.7886727599,935.676149404649 +0.0143837878178073,0.00933109992208581,0.0280295626914306,-2.22809558104713e-312,-2.41907520218459e-312,-2.41907520217965e-312,-648.900371004819,-586.402133168817,-1478.92646686623,-648.900371004819,-586.402133168817,-1478.92646686623 +0.00184393515996255,0.0051713333215343,-0.038152912947517,-8.48798316983928e-313,-1.48539705404624e-312,-1.76125650682232e-312,-457.651802487769,-438.028899309659,-1014.33299317153,-457.651802487769,-438.028899309659,-1014.33299317153 +-0.00844171704271469,-0.0163940830020678,-0.0135573794635588,-2.12199579299094e-313,-2.37663528642952e-312,-2.22809558108665e-312,-342.737082045208,-321.647783124208,-804.055030727719,-342.737082045208,-321.647783124208,-804.055030727719 +-0.00710310698845221,-0.00600255306266519,0.0140708387519955,-2.33419537061021e-312,-8.48798316954284e-313,-2.2280955810076e-312,-252.349806389503,-236.940204873332,-595.63976534081,-252.349806389503,-236.940204873332,-595.63976534081 +0.00711273814954636,0.00589840359758204,0.00517711952130842,-2.22809558102242e-312,-2.44029516018318e-312,-1.03977793787436e-312,-185.986822685459,-174.443933805765,-440.662000459023,-185.986822685459,-174.443933805765,-440.662000459023 +-0.000321814379356986,0.00298484310172676,-0.0244526253757954,-8.70018274532913e-313,-2.12199579145934e-313,-6.7903865328181e-313,-136.946582224401,-128.436746508767,-324.761532578923,-136.946582224401,-128.436746508767,-324.761532578923 +0.00847686146229953,0.0115133858509139,-0.021894754491525,-2.20687562317206e-312,-2.48273507597778e-312,-2.12199579149886e-312,-100.84070021041,-94.5621278204351,-239.245864982884,-100.84070021041,-94.5621278204351,-239.245864982884 +-0.00597831168322951,0.00338224516377968,-0.0844048747985778,-2.41907520185851e-312,-2.33419537063986e-312,-2.46151511767782e-312,-74.2375391035155,-69.6135346617641,-176.169967999986,-74.2375391035155,-69.6135346617641,-176.169967999986 +0.00335939161881777,0.00339310597917091,0.0773088749870252,-2.22809558102736e-312,-6.79038653677063e-313,-2.41907520220436e-312,-54.6643172477834,-51.2520202289287,-129.772957391027,-54.6643172477834,-51.2520202289287,-129.772957391027 +-0.0218484980071767,-0.0181316531764042,-0.0396193128086026,-2.31297541270056e-312,-2.46151511767782e-312,-2.14321574938875e-312,-40.238888182134,-37.7335734222346,-95.4102736099918,-40.238888182134,-37.7335734222346,-95.4102736099918 +0.0134014211062782,0.0130028432889897,-0.00549801498611286,-2.44029515976816e-312,-2.05833591780943e-312,-2.44029516018318e-312,-29.6472296784862,-27.8019185788227,-70.3031980814895,-29.6472296784862,-27.8019185788227,-70.3031980814895 +0.0179242127322421,0.000664969720848032,0.0742766220720739,-2.35541532850998e-312,-2.14321574936899e-312,-2.44029516014365e-312,-21.8146337807156,-20.4577114212742,-51.7796991575682,-21.8146337807156,-20.4577114212742,-51.7796991575682 +-0.000345262535914759,0.0127146658552344,-0.0392191814644526,-2.44029515984227e-312,-2.05833591780943e-312,-2.44029516018318e-312,-16.0452241476772,-15.0613936629925,-38.0477768759345,-16.0452241476772,-15.0613936629925,-38.0477768759345 +0.0058461785894756,0.0135801824448232,0.00323977391172079,-2.35541532850998e-312,-2.14321574936899e-312,-2.44029516014365e-312,-11.8263131734421,-11.0735717858491,-28.1210979734937,-11.8263131734421,-11.0735717858491,-28.1210979734937 +-0.0098028040469917,-0.00182308800457865,-0.0510486428248127,-2.12199579112337e-312,-2.41907520221918e-312,-2.10077583355463e-312,-8.68917027552982,-8.1425602518806,-20.6152054355624,-8.68917027552982,-8.1425602518806,-20.6152054355624 +0.0142681810554683,0.00723873747653999,0.0192229832741499,-2.35541532854457e-312,-2.56761490763121e-312,-2.12199579101468e-312,-6.40265249151332,-5.99842507211348,-15.205997743389,-6.40265249151332,-5.99842507211348,-15.205997743389 +0.00393679037549375,0.00444599250414091,0.0049513138879203,-2.05833591780943e-312,-1.27319747473726e-312,-6.79038653331217e-313,-4.6954742123031,-4.41038613968062,-11.148761142759,-4.6954742123031,-4.41038613968062,-11.148761142759 +-0.00845652291207897,-0.0099996072801873,-0.0100456344984081,-2.14321574943816e-312,-2.12199579144452e-312,-2.10077583328289e-312,-3.45954018288181,-3.24100366367744,-8.23117068442377,-3.45954018288181,-3.24100366367744,-8.23117068442377 +0.00830931396223146,0.00292257978849528,0.0165301404722175,-2.5039550339072e-312,-8.27578358674082e-313,-2.05833591773038e-312,-2.55352240444666,-2.39665285025671,-6.05067074899368,-2.55352240444666,-2.39665285025671,-6.05067074899368 +-0.0216442874390214,-0.0102550088607701,-0.0740319728130358,-2.05833591780943e-312,-2.1432157494431e-312,-2.44029516018318e-312,-1.87338066186179,-1.76133648980222,-4.44932256375664,-1.87338066186179,-1.76133648980222,-4.44932256375664 +0.0104792473425642,0.0148722568031869,-0.000560058744534657,-2.31297541238436e-312,-2.10077583353486e-312,-2.35541532853469e-312,-1.40495169358416,-1.30593852413896,-3.36766095206602,-1.40495169358416,-1.30593852413896,-3.36766095206602 +0.0103939343255031,0.00631096299081328,0.0197579052552806,-2.05833591773038e-312,-2.05833591780943e-312,-2.31297541238436e-312,-1.015026181912,-0.948810721028292,-2.42232751539403,-1.015026181912,-0.948810721028292,-2.42232751539403 +-0.00678825351700255,-0.00613068328245661,-0.0100088065833317,-2.10077583353486e-312,-2.35541532853469e-312,-2.05833591773038e-312,-0.734730460068708,-0.692756803806174,-1.74714573657014,-0.734730460068708,-0.692756803806174,-1.74714573657014 +-0.000218291653640485,0.00103476936798137,-0.000755258726205162,-2.05833591780943e-312,-2.10077583328289e-312,-2.5039550339072e-312,-0.551028253636177,-0.515238244271825,-1.31090184873783,-0.551028253636177,-0.515238244271825,-1.31090184873783 +0.00572109256675426,0.0018838316636454,0.0616844600093864,-8.70018274488447e-313,-2.35541532802086e-312,-2.44029516009425e-312,-0.404758661815785,-0.378618104219852,-0.9587505996907,-0.404758661815785,-0.378618104219852,-0.9587505996907 +0.00350522728581716,-0.00480408732070827,0.0320489541210588,-1.27319747473726e-312,-6.79038653331217e-313,-2.2280955810076e-312,-0.291460838197015,-0.277137480462082,-0.640747121977393,-0.291460838197015,-0.277137480462082,-0.640747121977393 +0.0041317386449178,0.000120135944216564,0.0306528869252321,-2.16443570728852e-312,-2.29175545444012e-312,-2.18565566524264e-312,-0.213105143535427,-0.208830653132194,-0.470046128807186,-0.213105143535427,-0.208830653132194,-0.470046128807186 +0.00348043555546527,0.00968207384300715,-0.0317578099111954,-2.1219957911629e-312,-2.46151511799896e-312,-9.76118064323269e-313,-0.15951514900104,-0.152126519947235,-0.362907407747279,-0.15951514900104,-0.152126519947235,-0.362907407747279 +-0.000130352116134772,-0.00337267110029136,-0.0129805017856745,-2.05833591777485e-312,-2.41907520227353e-312,-2.5463949496771e-312,-0.115741639265961,-0.101994199961575,-0.313944063599388,-0.115741639265961,-0.101994199961575,-0.313944063599388 +-0.0147927911821762,-0.00783101856861637,-0.0405622934751094,-2.1219957911629e-312,-2.05833591780943e-312,-2.10077583350522e-312,-0.0807648714057041,-0.0793368384175013,-0.205750397416511,-0.0807648714057041,-0.0793368384175013,-0.205750397416511 +0.00512464361351232,-0.00495858679694885,0.0228092214528815,-8.27578358674082e-313,-2.14321574943816e-312,-2.29175545472174e-312,-0.077634547149808,-0.0651493344000434,-0.202978286447248,-0.077634547149808,-0.0651493344000434,-0.202978286447248 +-0.00912192774807729,-0.00952330355929026,-0.0115650682643572,-2.12199579147416e-312,-8.2757835902981e-313,-8.27578358693845e-313,-0.0460246366494603,-0.0544126992583509,-0.0895033341262413,-0.0460246366494603,-0.0544126992583509,-0.0895033341262413 +0.00477448584067402,-0.0018274910361222,-0.0297879204849004,-2.14321574943816e-312,-2.29175545472174e-312,-2.35541532846058e-312,-0.0520385981192321,-0.0472646582766867,-0.129814799723905,-0.0520385981192321,-0.0472646582766867,-0.129814799723905 +0.00765646859681075,0.0082296698378446,-0.00363712841096364,-2.44029516015354e-312,-9.33678148217405e-313,-2.4190752018931e-312,-0.0323967494073127,-0.0368809682448041,-0.117185286248127,-0.0323967494073127,-0.0368809682448041,-0.117185286248127 +-0.0085637475473114,-0.00691653047333333,-0.0197408496795063,-2.05833591773532e-312,-2.22809558104713e-312,-2.50395503388249e-312,-0.0226472294629938,-0.0166893648497848,-0.105435092935698,-0.0226472294629938,-0.0166893648497848,-0.105435092935698 +0.00582914425764051,0.0116325040815148,-0.0302913144537222,-8.70018274488447e-313,-8.70018274755243e-313,-8.70018274498329e-313,-0.0226333643124222,-0.0193862074363551,-0.0637524449093213,-0.0226333643124222,-0.0193862074363551,-0.0637524449093213 +0.00238211081203164,0.00922654540677846,-0.0418199208483917,-1.03977793802258e-312,-1.20953760113676e-312,-1.97345608581509e-312,-0.00952358679455391,-0.00290227050422274,-0.0667320298848918,-0.00952358679455391,-0.00290227050422274,-0.0667320298848918 +-0.00170810867074533,-0.0112759914047952,0.0397564516397975,-2.12199579145934e-313,-6.79038653523902e-313,-9.54898106230812e-313,-0.000594447523977295,0.00642690007001963,-0.0533414865731415,-0.000594447523977295,0.00642690007001963,-0.0533414865731415 +-0.00503040431201941,-0.00835810220694617,-0.0140113692541632,-2.46151511767782e-312,-2.31297541234977e-312,-2.46151511799896e-312,0.00251055501522301,-0.00729801930797094,0.0442845395036442,0.00251055501522301,-0.00729801930797094,0.0442845395036442 +0.00369599735406028,-0.010229938892299,0.0504991085040453,-2.22809558107677e-312,-8.48798316978988e-313,-6.79038653158294e-313,-0.0104152518664143,-0.0121108304786802,-0.0324147937612398,-0.0104152518664143,-0.0121108304786802,-0.0324147937612398 +-0.00792619232444284,-0.0102764084689221,0.00483460380144437,-2.10077583321372e-312,-9.54898106131999e-313,-9.76118064081177e-313,-0.00613518383795534,-0.0184590602602803,0.0190914249171045,-0.00613518383795534,-0.0184590602602803,0.0190914249171045 +0.00307035697654131,0.0013995289647757,0.0239848767164339,-1.03977793781508e-312,-1.2095376010923e-312,-1.01855797994495e-312,-0.0223661933601705,-0.0214433604056947,-0.0434677975986367,-0.0223661933601705,-0.0214433604056947,-0.0434677975986367 +-0.00447302167499489,-0.0142457213085176,0.0546778603075997,-1.16709768530758e-312,-1.06099789576425e-312,-6.79038653326276e-313,-0.0135646648801797,-0.0144438701711051,-0.0127032626683992,-0.0135646648801797,-0.0144438701711051,-0.0127032626683992 +-0.00137568419891744,-0.00266119081420287,0.00575655373225862,-9.76118064081177e-313,-1.10343781157862e-312,-1.0397779378299e-312,-0.0154504483652914,-0.0248097425348028,0.032616895703979,-0.0154504483652914,-0.0248097425348028,0.032616895703979 +0.00677042582458419,0.00697907960894527,0.032215172149755,-1.10343781157862e-312,-1.14587772736334e-312,-1.10343781153909e-312,-0.0198107187429518,-0.0196847289800258,-0.0328301057047643,-0.0198107187429518,-0.0196847289800258,-0.0328301057047643 +0.00125404333451163,-0.00164151733507028,0.00626880191325284,-6.79038653326276e-313,-1.01855797982143e-312,-1.0185579798906e-312,-0.00841222846570258,-0.00749771464853191,-0.000592731465933152,-0.00841222846570258,-0.00749771464853191,-0.000592731465933152 +0.0077489945874658,0.000570789838350536,0.0194943717155826,-1.08221785363932e-312,-1.16709768530758e-312,-1.12465776945863e-312,-0.00414746574895302,-0.00758952595957942,0.00193964806857734,-0.00414746574895302,-0.00758952595957942,0.00193964806857734 +0.00474925780578739,0.00669939330750018,-0.0415330149897205,-1.0185579799153e-312,-9.33678148276693e-313,-6.79038653158294e-313,0.00185281963040982,-0.00434555596638168,0.00219780076106134,0.00185281963040982,-0.00434555596638168,0.00219780076106134 +0.00573290328654368,0.0097096440189076,-0.0174447618440502,-6.79038653266988e-313,-1.01855797982143e-312,-1.06099789570991e-312,0.00092577645668944,0.00497718498941962,-0.0645552232562798,0.00092577645668944,0.00497718498941962,-0.0645552232562798 +0.0155480541468296,0.011981917180832,0.0207023195097812,-0.00551485188080144,0.00293551525821719,-0.00288939629639324,0.00828978897545626,0.0135569778367783,-0.0288944817613363,0.00828978897545626,0.0135569778367783,-0.0288944817613363 +0.0111700074863861,0.00442128673632003,0.0533008133397938,-0.00765116048454386,-0.00816900533225684,0.0310472568547566,0.0253744749524375,0.0214355729082091,0.0372817615228161,0.0253744749524375,0.0214355729082091,0.0372817615228161 +0.00509027149455548,0.00329891593369143,-0.00880342954944539,-0.0038749799649246,-0.00223463056869573,-0.0180695349819653,0.0273138788270245,0.0211588093554404,0.0774796241525986,0.0273138788270245,0.0211588093554404,0.0774796241525986 +0.000953372460472585,0.0114217738800693,-0.0383945989746537,-0.0122049183685987,-0.00439244173081655,-0.01199771903762,0.0217429325763564,0.019712567610565,0.0261292544102434,0.0217429325763564,0.019712567610565,0.0261292544102434 +-0.000291260751127252,-0.00340107419497654,0.0380742968394241,0.000553621380960358,-0.00334428549745836,0.0198919202001986,0.0157831710801381,0.0265364648655679,-0.0147163372122408,0.0157831710801381,0.0265364648655679,-0.0147163372122408 +-0.00311606787843072,-0.0148584804445361,0.0319796405926153,0.00526652719332046,0.0038668660522197,-0.0292793069363732,0.0199915151495634,0.0142630214892429,0.0908429527018361,0.0199915151495634,0.0142630214892429,0.0908429527018361 +0.0018567318664439,0.0102485794642317,-0.0444015613441401,0.00264676507125511,0.00354164290193604,-0.0221869311381823,0.00885433272500929,-0.00404698054139241,0.0678750972651383,0.00885433272500929,-0.00404698054139241,0.0678750972651383 +-0.000367213710552049,0.000544727053935322,-0.010584503483484,-0.00441912374801942,-0.00581663963468087,0.0191893284121727,-0.000930919194572249,0.00938013184001667,-0.0590739130260081,-0.000930919194572249,0.00938013184001667,-0.0590739130260081 +-0.000379095860835173,-0.00108477366753071,-0.0343003631824503,0.00324788256365702,-0.00894092018858441,0.0328325897656656,0.00624535569166509,0.0060090601416918,0.00470548353883958,0.00624535569166509,0.0060090601416918,0.00470548353883958 +0.00280125236329287,-0.00379036388012625,0.0059224474107962,-0.0129141802097018,-0.0122622979443158,-0.038612954633871,0.00410656645320282,0.00347848982334366,-0.0273221598449488,0.00410656645320282,0.00347848982334366,-0.0273221598449488 +0.000734049712600894,0.00405950362009984,-0.00754728699066022,-0.0020683788937937,0.00396542124538523,0.000215833520009808,0.00462559129792479,-0.000499764310171171,-0.00518355677773789,0.00462559129792479,-0.000499764310171171,-0.00518355677773789 +0.00719887606419241,-0.000273563005080222,0.0153773859427074,-0.00960706642674729,-0.000997993101345204,-0.0312074096540426,-0.000329612054491626,0.00511570187473977,-0.026854037767169,-0.000329612054491626,0.00511570187473977,-0.026854037767169 +-0.00620176220735878,0.00156012780237799,-0.0631260810856026,-0.0148566287084088,-0.0174039572544328,-0.016102945476978,0.0109133102696797,0.00266058013588028,0.0255641479961287,0.0109133102696797,0.00266058013588028,0.0255641479961287 +0.00666874569860037,0.0124702118403211,0.00103625779933551,-0.0076702683990077,0.00302105992367697,-0.117496233571932,-0.00456765291362632,0.00531671419184231,-0.0756669932931678,-0.00456765291362632,0.00531671419184231,-0.0756669932931678 +0.0110362144486657,0.00837003022216565,0.0382652614756413,-0.00224897609325147,0.00129738630671257,-0.0390078757245002,0.00986220448030394,0.0152350447563462,0.00366518354807029,0.00986220448030394,0.0152350447563462,0.00366518354807029 +0.00303300313478686,0.00213420365474951,0.0335483470762441,-0.00617736280807111,-0.00434436584090168,0.00983770562456011,0.0228804181696652,0.0185122533596327,0.0714514165891084,0.0228804181696652,0.0185122533596327,0.0714514165891084 +0.0106929669171386,0.00765702246759549,0.06019828829463,-0.00482562786680202,-0.00563778543094741,-0.0419239161551674,0.0178040821545174,0.0161640368950579,0.0690392872632044,0.0178040821545174,0.0161640368950579,0.0690392872632044 +-0.00826597288318829,-0.0030201307434067,-0.0315604701892829,-0.00151452791115538,0.000577928926071189,-0.002653368385638,0.0239926384953154,0.0192205082675503,0.101188671551143,0.0239926384953154,0.0192205082675503,0.101188671551143 +-0.00184880330621495,-0.00131836693019727,-0.0101584525229588,-0.000196051226584595,-0.00202481261549707,0.0250470777077249,0.00768834869931821,0.0111415151154474,0.0167163034323924,0.00768834869931821,0.0111415151154474,0.0167163034323924 +-0.00143783602689769,-0.00662791351640973,-0.0029722720083531,-0.00220801589743783,0.00455112053902929,-0.0170606370709126,0.00709472280686388,0.0059810376499575,0.0189147335093847,0.00709472280686388,0.0059810376499575,0.0189147335093847 +0.00610266874078633,0.00746736341605499,0.0330658110188608,0.00396713875000321,0.0150181265922183,-0.000642135711740074,0.0032682595239507,-0.0021011770656039,0.00756981733525162,0.0032682595239507,-0.0021011770656039,0.00756981733525162 +0.00349715396139704,0.00510330488164012,0.00992471639452129,0.00739757542491174,0.00423249758190099,0.0307902360177768,0.00414358377996801,0.00714582799571243,0.0172343569434863,0.00414358377996801,0.00714582799571243,0.0172343569434863 +0.00456188611441842,-0.00117281674715219,0.0185081925384046,0.0102013138512043,-0.00395236828414179,0.0403995554744624,0.00947693288609727,0.00946517163147131,0.0340467121804537,0.00947693288609727,0.00946517163147131,0.0340467121804537 +-0.00101824850661434,0.00673495855960101,-0.0383419623485726,0.00542245234966275,0.00403789529484118,0.0103788229575369,0.0123036852032838,0.00545939071409057,0.0426842410175087,0.0123036852032838,0.00545939071409057,0.0426842410175087 +0.00512531365061743,0.00381550245753154,0.021467292923033,-0.00343848392974471,0.00299551853742483,0.0073703186718969,0.00323156297336296,0.0119593921929209,-0.036005014126559,0.00323156297336296,0.0119593921929209,-0.036005014126559 +0.0113656765311139,0.0126508185822109,0.0112716879073816,-0.0105910740358362,-0.00544351935851361,-0.0248457598093282,0.0139998067386274,0.0112639349031736,0.044484662577762,0.0139998067386274,0.0112639349031736,0.044484662577762 +-0.00512003824004114,-0.00296867303834217,-0.000880605995560637,0.018216852653623,-2.59155264924035e-05,0.0333340122165357,0.0203686227501337,0.0211904373388002,0.0330709687871385,0.0203686227501337,0.0211904373388002,0.0330709687871385 +-0.00938401141929815,-0.00551805514384607,-0.0468411613135074,-0.00152081805787448,-0.00821793936581828,-0.00609351744024418,0.0112769810478634,0.012403006157567,0.0364941216699755,0.0112769810478634,0.012403006157567,0.0364941216699755 +0.00113891252958499,-8.28790488732012e-05,0.0202359625601776,0.0124447383692923,0.00501092581451314,0.0376523605545602,0.000694697923329964,0.0030130548700583,-0.0151524430750786,0.000694697923329964,0.0030130548700583,-0.0151524430750786 +-0.000103573971629875,-0.00144621845075585,-0.0323155316725752,-0.0015719641674373,0.00317151041986407,-0.0238364810020229,0.00324295873766331,0.00186749244401042,0.0236742111762297,0.00324295873766331,0.00186749244401042,0.0236742111762297 +0.00634333759235144,0.0050852414500688,0.0181329409088378,-0.000736624241693675,-0.00051522901393612,0.0219949976321262,0.00167491509266331,-7.00174713379026e-05,-0.0243111255560941,0.00167491509266331,-7.00174713379026e-05,-0.0243111255560941 +-0.00132720711908887,-0.000298490893931051,0.00389380276178414,0.00164613346361107,0.0038598708088809,-0.0211349455920697,0.00551628665681904,0.00591128823912651,0.00147520366735977,0.00551628665681904,0.00591128823912651,0.00147520366735977 +-0.00861276353967026,-0.0120876296802116,-0.00919457309876585,-0.000332811992061317,-0.00142218122520651,-0.0301458431250781,0.00308045183157186,0.0040801124995736,0.0113546755632015,0.00308045183157186,0.0040801124995736,0.0113546755632015 +-0.00738844075288506,-0.0055330336308311,-0.0497035198904023,0.00845846632699716,0.00769935092290145,-0.0102364075006924,-0.00524231486740196,-0.00943541680333784,0.00296182060876289,-0.00524231486740196,-0.00943541680333784,0.00296182060876289 +0.00788387742313084,0.0131095303214297,0.015693381550125,-0.00601205901857791,-0.0112779536673436,-0.0238739713063679,-0.0146958725617654,-0.0116772789830083,-0.0706811621291158,-0.0146958725617654,-0.0116772789830083,-0.0706811621291158 +0.0160014830471216,0.0105522510842318,0.0644809926528558,0.000155172914741628,0.00603072260929846,-0.0618702546182285,-0.00201543102665988,0.00463361575181867,-0.0174080589867388,-0.00201543102665988,0.00463361575181867,-0.0174080589867388 +0.00837073698286025,-0.00280260609001446,0.00629493674183179,-0.00139643653790042,0.000599401432234896,0.0144691205989303,0.0197232435472043,0.0126388114900257,0.0823566841074263,0.0197232435472043,0.0126388114900257,0.0823566841074263 +-0.0069722017583088,-0.00501099949768454,0.0183306395907918,0.00176936417912494,-0.00181772175990019,0.0622664333872646,0.0187974605002564,0.00727361610354954,0.0324766765623726,0.0187974605002564,0.00727361610354954,0.0324766765623726 +-0.00298944364327557,-0.00723678607688505,0.0262737183674216,-0.00584962878628666,-0.00300400545986715,-0.0514664060945476,-0.00216177393773436,0.00300400545986715,0.00269007672378479,-0.00216177393773436,0.00300400545986715,0.00269007672378479 +-0.00571124289999611,-0.000679484715285602,-0.0662646632280558,0.0122242701041811,0.0103971411047706,0.0132951457497795,-0.000147191914284209,-0.0063507192726221,0.046924829022439,-0.000147191914284209,-0.0063507192726221,0.046924829022439 +-0.00894909535613128,-0.000949317306776436,-0.0540439129893793,-0.00260018923515458,-0.0028807439373616,0.0314329271714159,-0.00993572096253838,-0.00470337108006468,-0.0709855358121053,-0.00993572096253838,-0.00470337108006468,-0.0709855358121053 +0.00668732520795848,0.0106650936021106,0.020162541658986,-0.00304573268447683,0.0111208073610157,-0.0363791843064614,-0.013501500950861,-0.00468369072277349,-0.0736399715031379,-0.013501500950861,-0.00468369072277349,-0.0736399715031379 +-0.00105466572840707,-0.000137564357500191,-0.0180369538907534,0.00291688894884015,-0.0024559089570297,-0.0118160231055444,0.00248750019858743,0.00604891428043582,0.0109290051466713,0.00248750019858743,0.00604891428043582,0.0109290051466713 +0.00310069970424161,0.0115236356620466,-0.0271022429329561,-0.00789678333558206,0.00428781563231486,-0.0157531480381496,0.004034057567017,0.00334986081774278,0.00401374846804687,0.004034057567017,0.00334986081774278,0.00401374846804687 +0.0056327346032265,0.00510358388575933,0.0477698447526059,-0.00478353632916826,0.00388183474317384,-0.06890500368784,0.00557263982437104,0.0141887135903059,-0.0243628803227385,0.00557263982437104,0.0141887135903059,-0.0243628803227385 +0.00644399642295945,0.0134412093153959,-0.0125249981139223,-0.0040444087039401,-0.0043251145841186,-0.0427794577759277,0.0164049334405189,0.0140800599208511,0.0777661497425326,0.0164049334405189,0.0140800599208511,0.0777661497425326 +-0.00858440630023953,-0.00418686933875959,0.00746243126210226,0.00387790345623468,-0.00379731800586753,0.0638826491954306,0.0183494318324466,0.0234445105961161,0.0282532003355899,0.0183494318324466,0.0234445105961161,0.0282532003355899 +0.00266053412155311,0.00537068992931381,0.00820612048307624,0.00970122953484378,0.0056664297891449,0.00655259311057027,0.00982658457067885,0.0118635499094792,0.0585250145265158,0.00982658457067885,0.0118635499094792,0.0585250145265158 +0.00412177444787542,0.00131039256465016,0.0401650800090849,0.00748775256431374,0.00286052696428033,0.0478420576086265,0.012972207378239,0.0128697033894571,0.0522689020766291,0.012972207378239,0.0128697033894571,0.0522689020766291 +0.00544495863553972,0.00638499841655001,-0.00604836272213758,0.00442896957270437,-0.00171905928160093,0.0240866067815829,0.0147811962374197,0.010247491528879,0.0754562720964332,0.0147811962374197,0.010247491528879,0.0754562720964332 +-0.00139295896166856,-0.00210598814715483,-0.0129667578394202,0.00287606185484477,0.000130891931885187,0.0101646103598103,0.0142417016477433,0.0140863024868416,0.0229952971997332,0.0142417016477433,0.0140863024868416,0.0229952971997332 +0.00212186686410079,0.00790615392167967,-0.0144971392093636,0.00021902686774792,-0.000610930758759221,0.012902455153899,0.00945248971664955,0.00827930690138805,0.0100756855474122,0.00945248971664955,0.00827930690138805,0.0100756855474122 +-0.00274238069221744,0.00748771108979875,-0.0513997810732427,-0.000184970655994929,-0.00126228272271127,-0.010552969387505,0.00829306608387031,0.0143541458358613,-0.00598944390869164,0.00829306608387031,0.0143541458358613,-0.00598944390869164 +0.00186564797477572,-0.000204262305824447,-0.00763467881292557,0.00108897155442361,-0.000116621571524943,-0.0123461941610588,0.00830343091530156,0.0169442403497369,-0.0211795669159773,0.00830343091530156,0.0169442403497369,-0.0211795669159773 +-0.0019332760402918,0.00344956734750605,0.0210673959319718,-0.00630296653801016,-0.00175935350967467,-0.00933865857681666,0.0147341889065105,0.010812014051945,0.0264529948270073,0.0147341889065105,0.010812014051945,0.0264529948270073 +-0.00959235291887348,-0.00573236652616611,-0.0206977294804444,0.00932445324959841,0.00655355716963043,-0.0415963434414311,0.00617546011497683,0.0122684584633419,0.0304852482975076,0.00617546011497683,0.0122684584633419,0.0304852482975076 +0.00970610914913566,0.00507591671002846,0.0184748669546485,0.00676029683218561,0.000703521645919657,0.0142086381769327,0.000800650194349597,0.00149411406127635,0.0241425022445146,0.000800650194349597,0.00149411406127635,0.0241425022445146 +-0.00217346613837097,-0.00101014783814268,-0.00711033443560917,-0.00189102572884059,0.00269627559911872,-0.0350591029672598,0.0114540936706492,0.00561528065768097,0.0330021817164068,0.0114540936706492,0.00561528065768097,0.0330021817164068 +0.00168431628035411,0.00430398452199452,-0.0444324194592567,0.00193722179608768,0.00635555110175104,-0.0166808108697984,0.00207195641141967,0.00423631464399762,-0.00576169361158074,0.00207195641141967,0.00423631464399762,-0.00576169361158074 +0.00881316153143112,0.00404422033610233,0.00891979265239525,0.00470422887519345,0.0102724543488031,0.00425483824549938,0.00489095957578672,0.00706523177463,-0.0361076165290567,0.00489095957578672,0.00706523177463,-0.0361076165290567 +-0.00177073577663934,-0.0121572918265472,0.00809451951913857,-0.00854600129233867,-0.00348740151992645,-0.00467087882747317,0.0133677952524538,0.00948526696306652,0.00622045436745579,0.0133677952524538,0.00948526696306652,0.00622045436745579 +0.00641070590134391,0.0135658530036647,-0.010382136025957,0.00064093254704022,0.0024883597822105,0.0228293866830051,0.00488800319282579,-0.00401054117397036,0.00726660029958937,0.00488800319282579,-0.00401054117397036,0.00726660029958937 +0.0024245249575171,0.00235393078419486,0.0248821312015385,0.00792678573174256,0.000586706984119713,0.0408944822115227,0.00265113092837908,0.0127213953980598,-0.0394955525236591,0.00265113092837908,0.0127213953980598,-0.0394955525236591 +0.00450772284469252,0.00586650386246568,-0.0182475171575471,-0.00328842136373214,0.000987680336543312,-0.0503495131666555,0.0119239641928648,0.010090893455677,0.0513573463843455,0.0119239641928648,0.010090893455677,0.0513573463843455 +-0.00390040483696051,-0.00245980891976664,-0.0368648283626107,0.00404884993838996,-0.0107550820565684,0.0666200491663447,0.0129169498384387,0.0131552622052286,0.00846463448445121,0.0129169498384387,0.0131552622052286,0.00846463448445121 +-0.000309325518446155,0.00546336780740566,0.0133282377698272,-0.00080119799929634,0.00919857789886439,-0.0380085698493601,0.00596055081682167,0.00736336253024913,-0.0199845587746027,0.00596055081682167,0.00736336253024913,-0.0199845587746027 +-0.00549357459323158,0.000577624913963555,-0.0596044805870126,0.00799941417069397,-0.00380837404893113,0.00833238193101371,0.00476209918550205,0.0110556482335328,0.0157025083145359,0.00476209918550205,0.0110556482335328,0.0157025083145359 +-0.00241126767288413,0.0024009330131526,-0.0351895794357002,0.00146860508518731,0.000782312707016205,0.0283287808669605,0.00368097545937385,0.00708225249942154,-0.0219253266012646,0.00368097545937385,0.00708225249942154,-0.0219253266012646 +0.00356929241924591,0.000942749679443292,0.018192150342002,0.0106325421631305,0.00441458174752371,0.0406774003100654,0.00263180900544585,0.00728695085117784,-0.0275205713770673,0.00263180900544585,0.00728695085117784,-0.0275205713770673 +-0.00450601133890672,0.00940640239330054,-0.0724945386776656,0.000575787926900911,-0.00208198402595525,0.0100424940927109,0.00876909662694483,0.00575199795134726,0.0275630037520982,0.00876909662694483,0.00575199795134726,0.0275630037520982 +0.00404343287116072,0.00543156155121069,-0.0236530221936363,0.00742898276852531,-0.00964195196680996,0.052636242753577,2.56740234635591e-05,0.0141093100254967,-0.0643898381298956,2.56740234635591e-05,0.0141093100254967,-0.0643898381298956 +-0.00639365667936084,-0.00639536806003763,0.0034653684950842,-0.00651460610829057,-0.00329375434453065,-0.0176227105754712,0.0144142652906296,0.0136024313233932,0.00580078232360445,0.0144142652906296,0.0136024313233932,0.00580078232360445 +-0.0070201158434482,-0.00288751047141049,-0.00689494647365656,-0.00143308144722322,0.000786193681572138,-0.0264965267470566,0.00361351349564077,0.00409102835470214,0.0161802239456979,0.00361351349564077,0.00409102835470214,0.0161802239456979 +-0.00333467957525843,-0.00270694241848425,-0.0218487564543557,0.0139774791523261,0.00804827589139282,0.00402428760435712,-0.0035849521736348,-0.000173176034746907,0.00576917110913956,-0.0035849521736348,-0.000173176034746907,0.00576917110913956 +-0.00463122322219288,-0.00679826041589951,-0.017049210187159,0.00690815568007324,0.0071303019770628,0.00870680341812536,-0.00294166538282852,-0.00383590229569889,-0.00842282795561412,-0.00294166538282852,-0.00383590229569889,-0.00842282795561412 +0.000546202281345351,-0.00182784306842459,0.00936742001122396,0.00772592835813144,0.0131319177130925,0.00349481812329096,-0.00774106570411079,-0.00934268434353299,-0.027314490970155,-0.00774106570411079,-0.00934268434353299,-0.027314490970155 +0.00337858037399117,0.0127599180782497,0.0125206359459585,-0.00167408893412421,0.000258485482486705,-0.0484798983840701,-0.00712588111624803,-0.00805891035494706,-0.0168488526724749,-0.00712588111624803,-0.00805891035494706,-0.0168488526724749 +0.00747702634541367,0.00485995736539359,0.0398116857153023,-0.0018271994111353,-0.0100043824542733,-0.0359479786920982,-0.00302881515239927,0.00715098999116243,-0.00561918840318669,-0.00302881515239927,0.00715098999116243,-0.00561918840318669 +-0.00635336311370671,-0.00250281073587399,-0.029286229911623,-0.00699221404421237,-0.000136661974625734,-0.0817683383023322,0.0137188342535669,0.00773394993283642,0.0767278167333183,0.0137188342535669,0.00773394993283642,0.0767278167333183 +0.00666848812915701,-0.00134886235366907,0.0213255723108133,0.00373282206009758,0.00016395771152831,0.0312800992567371,0.000470817737083388,0.00364121478520664,-0.00668880508606434,0.000470817737083388,0.00364121478520664,-0.00668880508606434 +0.00437455565709893,0.00467704230131244,0.0196670027509613,-0.00561749569139847,-0.00115919502533678,0.00565392292794844,0.00952993798103596,0.000710076413050862,0.0319144782252691,0.00952993798103596,0.000710076413050862,0.0319144782252691 +-0.0052755356253843,-0.00215427619510557,0.00162142615554182,0.00624810561378883,0.0100696894423278,-0.0288267090140227,0.00466860413289386,0.0069854047140554,0.00634465578011373,0.00466860413289386,0.0069854047140554,0.00634465578011373 +-0.00227003433116483,0.00806011101172226,-0.0558212579904028,0.0103193009709635,0.00345372880953867,0.0453225694740279,0.000250054294079063,0.00245389487378553,0.01847089838904,0.000250054294079063,0.00245389487378553,0.01847089838904 +0.00124669222834212,0.000993668996979059,0.0154131618145982,0.0100509697260898,0.00195571041927067,0.0483798291037561,0.000214448133790602,0.00903241156176015,-0.0380952733474339,0.000214448133790602,0.00903241156176015,-0.0380952733474339 +-0.0021014571922992,-0.00535037686647048,0.00868583044893261,0.00253036439371009,0.0059161475250775,-0.00388237338057239,0.00793826419667446,0.0062224335937149,0.0350422016225351,0.00793826419667446,0.0062224335937149,0.0350422016225351 +0.00522956792465011,0.00532416048331415,-0.0129350998994457,-0.00126281754222247,0.0047917403877073,-0.00156916617164801,0.003098955519961,-0.000760268080071294,0.0247955737747124,0.003098955519961,-0.000760268080071294,0.0247955737747124 +0.00693706767289615,0.00653070883370125,0.0281981716627809,0.00154485725970108,0.00421970545498768,0.0226971814673468,0.00483263998675679,0.0053300778838708,-0.0148755612436034,0.00483263998675679,0.0053300778838708,-0.0148755612436034 +0.00412565376400917,-0.00098576492577988,0.0530707066935513,-0.00529006491724779,8.14718468573694e-05,-0.0287690762973077,0.0105403061086668,0.0107220496356932,0.0280643927571297,0.0105403061086668,0.0107220496356932,0.0280643927571297 +0.00550151747780587,0.000919253386216381,0.0155355115607238,0.000452878838698568,0.00219941741202995,-0.0249185235081524,0.0126665881517829,0.00665757494606772,0.0763434310294158,0.0126665881517829,0.00665757494606772,0.0763434310294158 +0.00223330850078632,-0.00841111687373996,0.054073498455127,-0.00183745185829201,0.0048177825580381,0.00536481416190054,0.0115257053208253,0.00625542331504371,0.036876005405275,0.0115257053208253,0.00625542331504371,0.036876005405275 +-0.000219065468715411,0.00322908837296353,0.0121496659965434,0.00648211133757774,0.0102868021229701,-0.00294926468441237,0.00710358746404412,-0.00289299011618783,0.0595992936758522,0.00710358746404412,-0.00289299011618783,0.0595992936758522 +0.00209701056740466,-0.00120260513347922,-0.000109231973313521,0.00845443691879929,0.00535950388077147,-0.0223119679632507,-0.00203403296243196,0.00262011615137033,0.00417058439400148,-0.00203403296243196,0.00262011615137033,0.00417058439400148 +-0.00075275230591128,0.00549858911548279,0.00541447928774753,0.00640855083006376,0.0103194994398298,0.0263622471974374,0.00463622666289875,-0.000500385695560447,0.0192044838086991,0.00463622666289875,-0.000500385695560447,0.0192044838086991 +0.00271629096152999,-0.00335243507191931,0.0309338170799597,0.00368616546956077,-0.00496879208601034,0.0130320610100358,-0.00123592546272363,0.00613530335013604,-0.00291940388452678,-0.00123592546272363,0.00613530335013604,-0.00291940388452678 +0.00838573919938277,0.00950939965983458,-0.00726520984773157,-0.0058170111478138,0.00872198999386959,-0.0863400753809228,0.00796433569046867,-0.000561252040007846,0.0590782376473699,0.00796433569046867,-0.000561252040007846,0.0590782376473699 +0.0056401934143194,0.00666699546401133,0.0132535492586321,-6.09647169446271e-05,-0.0014035872570223,-0.00110687522262029,0.00843035317930387,0.0103008674185848,-0.008565354500948,0.00843035317930387,0.0103008674185848,-0.008565354500948 +-0.00184127645945546,0.00522356906836238,-0.0140874566159959,-0.0062394419432713,-0.00716314173383566,0.00273479155087834,0.0131874231780983,0.0141788824418897,0.0250332313254412,0.0131874231780983,0.0141788824418897,0.0250332313254412 +-0.00235086056591321,0.00211441785016299,0.0133438806593231,-0.00242232416912848,-0.00623071781039594,-0.000565634534143811,0.00924904696738728,0.0153426562342598,0.0136535000404723,0.00924904696738728,0.0153426562342598,0.0136535000404723 +-0.00626457115028518,-0.00582844401957282,-0.0394999795405611,0.00724881396872806,-0.000729855902069107,-0.00296163523431744,0.00989130149728862,0.0119763698287391,0.0534600152441252,0.00989130149728862,0.0119763698287391,0.0534600152441252 +0.00913354272202388,0.00750807670351483,0.0371628745236817,0.00464667968934238,0.00412472716022863,0.0466575222793407,0.00401418084086903,0.00183159499928584,0.00253653932110932,0.00401418084086903,0.00183159499928584,0.00253653932110932 +-9.0494037329596e-05,0.00141119180400016,0.00628828671340716,0.000565935226697024,-0.00131222819089826,-0.0357153789425333,0.0102907481788524,0.00943485283324696,0.032993083605682,0.0102907481788524,0.00943485283324696,0.032993083605682 +0.0039890650457526,-0.00412134364247631,0.0241447334604355,0.000152302708040652,0.00175814439308539,-0.00416395422723213,0.00750941773209414,0.00826046038411234,0.0272428908258512,0.00750941773209414,0.00826046038411234,0.0272428908258512 +0.00568265949421084,0.00370538208722196,0.00871850258049062,0.00394583245586374,0.00252597010905207,0.0153191604697296,0.0107717853022344,0.00150929734821317,0.0465792843305535,0.0107717853022344,0.00150929734821317,0.0465792843305535 +0.00522233155560053,0.0085860652119641,-0.0270835930608237,0.00561061445981637,0.0103780274402999,0.0162843291378859,0.00686240807888871,0.00648588221696586,0.0013382507998717,0.00686240807888871,0.00648588221696586,0.0013382507998717 +-0.00345318987852042,0.00127853240528389,-0.0369458374028002,-0.00231845686620411,-0.00223529543082593,0.0374760467779519,0.00996103090796816,0.013608088769829,-0.0216313945728571,0.00996103090796816,0.013608088769829,-0.0216313945728571 +0.00288815236137659,0.0103317437875138,-0.0183992054338869,0.00299977340343386,-0.00116752226277613,0.0688854699178771,0.00640260238279285,0.0110714861088489,-0.0222553916015215,0.00640260238279285,0.0110714861088489,-0.0222553916015215 +0.00184522303066005,0.00284777441822023,0.0114584797344677,-0.00203419086441845,-0.000873335965407315,-0.00896715156605698,0.0109861999861927,0.0179323905775263,-0.00307107108784234,0.0109861999861927,0.0179323905775263,-0.00307107108784234 +0.00471274734152378,0.00312869644564085,-0.00699327839116999,-0.00257142781574621,-0.00157234423338033,-0.0209389098101335,0.0156797946811952,0.0147498757150716,0.0491889294604325,0.0156797946811952,0.0147498757150716,0.0491889294604325 +0.0020325508067718,0.000423381773802996,0.0103667390763709,0.000578945364506077,0.00144636819927389,0.0056517711880319,0.0165826290050021,0.0137704741329751,0.0260006213642266,0.0165826290050021,0.0137704741329751,0.0260006213642266 +-0.00428643513122305,0.00254045175473544,-0.0134450299270017,-0.00355216865313491,-0.00140384560419935,0.00508249595184242,0.012420964370646,0.0112143783771983,0.0259180744669077,0.012420964370646,0.0112143783771983,0.0259180744669077 +-0.00311474800218955,0.00868840084129469,0.000677141077278287,0.00337839942536001,0.00466017837731763,-0.00834670059443395,0.00440826076118838,0.0109614211958178,0.00484941850362161,0.00440826076118838,0.0109614211958178,0.00484941850362161 +-0.00154721630103606,0.00356676466950676,-0.0541431377434694,0.00687565056972254,-0.00329823330000421,-0.00941283301059467,0.00576079303856943,0.0152406931506181,0.0342045067820364,0.00576079303856943,0.0152406931506181,0.0342045067820364 +0.00112573226017853,0.00192771065201637,-0.0115431454840155,0.00631179969213282,0.00190487281231342,0.0288176156077189,0.0114901272975046,0.0121050050027478,0.00605650225010265,0.0114901272975046,0.0121050050027478,0.00605650225010265 +0.00363412124064143,0.00197874867159331,0.00806291816199622,-0.00759190497118645,0.00416426096108091,-0.0185412182578708,0.0102023803203711,0.0108926031916857,0.00448093039607712,0.0102023803203711,0.0108926031916857,0.00448093039607712 +-0.00796387155818218,-0.00313381739375939,-0.0226134602071475,0.0075247037005865,-0.000672024730423045,0.0444523805987308,0.0117938819252264,0.0100265057726585,0.0224854481696096,0.0117938819252264,0.0100265057726585,0.0224854481696096 +0.00752029609892859,0.00149306017206973,0.0580560136690119,0.00111941036418621,0.00515062034685046,-0.00698135541309296,-0.000283676863993707,0.00458811621051799,-0.00878385350992731,-0.000283676863993707,0.00458811621051799,-0.00878385350992731 +-0.0042247643912069,0.00277197678837649,-0.0618346525116704,-0.00531558037760987,0.0049394787437001,-0.0736137665800079,0.0112155875422632,0.00386300527144184,0.0740610845789838,0.0112155875422632,0.00386300527144184,0.0740610845789838 +0.000601679062142061,0.000123210310104856,-0.0294665086244083,-0.00285101882657811,-0.00238470191662768,-0.00588808683704337,-0.000451694553453968,0.00636975034010637,-0.0484609141823672,-0.000451694553453968,0.00636975034010637,-0.0484609141823672 +0.00243629733687265,-0.00139507000182836,0.00566120624954396,0.00166336527005585,-0.000262291225117188,0.0202182142966832,0.00487262243294927,0.00402571573943885,-0.0234320782157854,0.00487262243294927,0.00402571573943885,-0.0234320782157854 +-0.0019149936542448,0.00664506740191822,-0.0400009628146106,-0.00747508659176728,0.00208683460800183,-0.0174323598105864,0.00472967053090596,0.00230307822583489,-0.00388182414692447,0.00472967053090596,0.00230307822583489,-0.00388182414692447 +-0.00731631197069921,0.000996564994643789,-0.0480084976465723,0.0041188848252257,0.00643599921690972,-0.0119524096639507,-0.000593120421482064,0.00910661018835248,-0.0474132231522031,-0.000593120421482064,0.00910661018835248,-0.0474132231522031 +-0.00100128850558573,-0.00521248609443956,0.013466588855023,0.00924608834418252,-0.00277457825890227,0.0627091034331227,-0.000694105423603168,0.00621128894857004,-0.0296779876071257,-0.000694105423603168,0.00621128894857004,-0.0296779876071257 +0.00796570896292772,0.00400409124865785,0.0216708460497595,0.00168058219333328,0.00685464353468418,-0.0161849690066052,0.00361142805871735,-0.00177788601070566,0.0281025369331496,0.00361142805871735,-0.00177788601070566,0.0281025369331496 +0.00784398794127361,0.0026775370167388,0.0195337733128216,-0.00174665490116926,0.00317494161214615,-0.0132768293651804,0.00673127741467343,0.00357906230499684,0.0153467220582773,0.00673127741467343,0.00357906230499684,0.0153467220582773 +-0.00397232435935511,-0.00269383116808924,0.0317061680652726,-0.0102714775212519,-0.00242462708203565,-0.0203816056067664,0.0104778990597702,0.00597024650629056,0.0196582922267371,0.0104778990597702,0.00597024650629056,0.0196582922267371 +0.00849157492505411,0.00979601749969944,0.0212770540910654,0.00367999059057976,0.00244303546379133,-0.0316908783691065,0.000363527223895338,0.00270420263146509,0.0316478600256369,0.000363527223895338,0.00270420263146509,0.0316478600256369 +0.00919477235953374,0.0096682729907611,0.00334512830773971,-0.00354486733420192,-0.00144277332833412,-0.039820394301875,0.0114892227170239,0.0106952336216363,0.0456260016724658,0.0114892227170239,0.0106952336216363,0.0456260016724658 +-0.00709161876533309,-0.00487316517669305,-0.0323718873530537,-0.00140374105365684,-0.00339740113332948,0.0042689561946341,0.0180260391286863,0.0172438600663713,0.0313796584303863,0.0180260391286863,0.0172438600663713,0.0313796584303863 +0.00253471280611717,0.00430009970786824,0.0191395853966414,0.00275876303551633,-0.00243295790417872,0.040930694604312,0.00619573464301951,0.00793983740650082,-0.00461186417034631,0.00619573464301951,0.00793983740650082,-0.00461186417034631 +0.00616780440264548,0.00199513805024216,0.02500901500489,-0.00141607443281943,-0.000497539005368862,-0.024883604355362,0.00843343514372885,0.00997628295991271,0.0300910084620368,0.00843343514372885,0.00997628295991271,0.0300910084620368 +-0.00237051466177594,0.00236151650465968,-0.0142015061892521,-0.00728131471986633,-0.00328697536943041,-0.0103646390873986,0.0143635051519174,0.00867680450173198,0.0528815287225349,0.0143635051519174,0.00867680450173198,0.0528815287225349 +0.000807849116619773,0.00097623327667036,0.00588511588302073,0.00271038256200878,-0.00103708423114326,0.013410173485592,0.00460814058785569,0.00955876265645563,-0.000528305008021097,0.00460814058785569,0.00955876265645563,-0.000528305008021097 +0.00284182916248277,0.00916779793574784,-0.00170474627545173,0.00029034221089912,0.00446207758069357,-0.0101118120940819,0.00834852345099985,0.00697325911732397,0.0305152262773055,0.00834852345099985,0.00697325911732397,0.0305152262773055 +-0.00920176484621287,0.00276189095389167,-0.0669384350471917,0.00140658343310392,-0.00685947153141818,0.00686235885703029,0.00852206123830959,0.0143192717411983,0.0141592579918352,0.00852206123830959,0.0143192717411983,0.0141592579918352 +-0.00515855555634477,-0.00443936674478798,0.019785958274886,0.00198310960638566,-0.00233592569527194,0.0104503737039066,0.00226996173093112,0.0119125859001236,-0.02850437557409,0.00226996173093112,0.0119125859001236,-0.02850437557409 +0.0127196987772423,0.00354596903903087,0.0585404590084157,0.0036043646370394,0.00449434549707916,-0.0381344948946319,0.00396317419037161,0.00260306098333807,0.0490906080683096,0.00396317419037161,0.00260306098333807,0.0490906080683096 +0.0128122162200948,0.00895717571092062,0.0432526789233807,-0.0104905895165639,-0.00245963244215905,-0.043538052972711,0.0156452392944853,0.00503931969181434,0.0787555059051531,0.0156452392944853,0.00503931969181434,0.0787555059051531 +-0.0101840303429879,-0.00481581895103657,-0.070147182662353,-0.00416147372588696,-0.00324993293064625,-0.0349044393213533,0.0171942991802451,0.0142262055008983,0.0493715015464306,0.0171942991802451,0.0142262055008983,0.0493715015464306 +0.00113791366395219,-0.000357460562630621,-0.00121115286545816,0.00251706439366247,-0.000588007356047223,0.0425863882922866,0.00107852498766595,0.00595935244938448,-0.0441215298055504,0.00107852498766595,0.00595935244938448,-0.0441215298055504 +0.0025065462837835,0.000244558673811882,-0.00156907698535349,-0.00472820085763723,0.00247874181989119,-0.0142295587218041,0.00499462708919027,0.00366724706113394,0.000151471144372105,0.00499462708919027,0.00366724706113394,0.000151471144372105 +0.00322585378370671,0.00636682221279359,-0.00510610483767315,0.00223540357326009,0.00656194936100249,-0.0266245948471155,0.00504664148555527,0.00338761909810195,-0.00234729728408924,0.00504664148555527,0.00338761909810195,-0.00234729728408924 +-0.00414799345255804,0.000365369391310814,-0.0289309859574027,-0.00246585480708924,-0.000373899725704098,-0.00717906440065619,0.00546441442528085,0.00942707132860641,-0.00834127412363016,0.00546441442528085,0.00942707132860641,-0.00834127412363016 +0.00191763686414441,9.96976271611504e-05,0.00958129439573495,0.0049143002194393,-0.00381156877974351,0.0249180718622117,0.00299909894695514,0.00665691952408795,-0.0111314879136808,0.00299909894695514,0.00665691952408795,-0.0111314879136808 +-0.000657440577276999,0.00312094860575222,-0.0155388990335394,0.00189615343863375,0.000327904489015936,-0.0205753970632218,0.00693569437305624,0.0044071409443444,0.022551508344454,0.00693569437305624,0.0044071409443444,0.022551508344454 +-0.0147709817488306,-0.00762481105623734,-0.0552154738338879,0.00242688895812447,-0.00376173164295644,-0.0106975627719968,0.00282462505615146,0.00675651440660694,-0.0093804232156091,0.00282462505615146,0.00675651440660694,-0.0093804232156091 +-0.00197800798246692,-0.00300229030237648,-0.000611808597476459,0.0077849555087172,0.00184750544186395,0.0212030224920133,-0.00960750598814878,-0.00334377573363286,-0.0404794125033402,-0.00960750598814878,-0.00334377573363286,-0.0404794125033402 +0.00368182465060661,0.00266400362706516,0.0239471270227288,0.00830559224327452,0.00664856792300662,-0.02558975376828,-0.00469116345170981,-0.0064988401065076,-0.00184562890010201,-0.00469116345170981,-0.0064988401065076,-0.00184562890010201 +-0.00601632890299771,-0.0139766539195554,-0.0265457000219689,-0.00545827585083137,-0.00716323276245246,-0.0290585360882785,-0.00132308554069171,-0.0017848200878745,0.0112223060526356,-0.00132308554069171,-0.0017848200878745,0.0112223060526356 +-0.00856038711237905,0.00490434305853901,-0.100743116025099,-0.00669786233987637,0.00756778285135509,-0.0445310163717035,-0.00710696739610881,-0.0154105355028768,-0.0246336334558711,-0.00710696739610881,-0.0154105355028768,-0.0246336334558711 +-0.00560132200024688,0.0059193818179303,-0.0576303304475678,0.00474988897889994,0.00574881761396019,-0.0226042947759997,-0.0213618687211279,-0.00423831717734214,-0.152993904354749,-0.0213618687211279,-0.00423831717734214,-0.152993904354749 +0.00523593889004157,0.000798859558587846,0.0322247623260742,0.00858801174362995,-0.00302785494707155,0.00797148098225441,-0.0104392593861003,0.000831987077740981,-0.0755329506149787,-0.0104392593861003,0.000831987077740981,-0.0755329506149787 +-0.00650994951111547,0.00399740005130018,-0.0585766517021344,0.0015579591939389,0.00748824151457784,-0.0149912742674508,0.00530422838736974,-0.000223368141951017,0.0351885170816626,0.00530422838736974,-0.000223368141951017,0.0351885170816626 diff --git a/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing5.csv b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing5.csv new file mode 100644 index 0000000..98f369a --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing5.csv @@ -0,0 +1,203 @@ +"eta1","eta2","eta3","eps1","eps2","eps3","state1","state2","state3","signal1","signal2","signal3" +-0.00703786458834794,-0.0208612146300919,0.0614093570082972,0,-0.00880619047240458,0.0115121122050507,0.0510702286360356,0.024092297999573,0.0687005690692786,0.0510702286360356,0.024092297999573,0.0687005690692786 +0.00564879591092549,0.000229292386742686,0.0137234442466862,0,0.0069694901552026,-0.100217111323764,0.00922112838136716,0.00341648726135111,0.0280860711967741,0.00922112838136716,0.00341648726135111,0.0280860711967741 +0.00976100626848208,0.00320623750428585,0.0669360424188462,0,-0.00279100488869675,0.0235168154058978,0.00817074365217404,0.00387501567299118,0.0109082961685859,0.00817074365217404,0.00387501567299118,0.0109082961685859 +0.00393028373933436,0.0050140317492064,-0.0139460869068896,0,0.00243204335912711,0.0410115905735476,0.0123775929864041,0.00710210739731058,0.0616521774797099,0.0123775929864041,0.00710210739731058,0.0616521774797099 +0.00766876658745328,-0.0020677177481528,0.0369718940943759,0,0.0018218998884043,-0.110232818462728,0.0100113862636218,0.0107505280727621,0.00353897311865142,0.0100113862636218,0.0107505280727621,0.00353897311865142 +-0.0129486372840477,0.000211960925869902,-0.0969376080740703,0,-0.00984305407718898,-0.056971799715372,0.0157074923957467,0.0058751274939409,0.0509939203680227,0.0157074923957467,0.0058751274939409,0.0509939203680227 +-0.000726569357679698,-0.000698773348491718,0.0178154273221319,0,-0.00505229580213776,-0.0317718062412725,-0.00853068968765786,0.00639532897240427,-0.100080211757109,-0.00853068968765786,0.00639532897240427,-0.100080211757109 +0.00593371560013376,0.00474805054401815,0.016286135700993,0,-0.00226504831851656,-0.00141721145624531,0.00323845761207236,0.00198539840312137,0.0266613921208775,0.00323845761207236,0.00198539840312137,0.0266613921208775 +-0.00255502398749033,0.0055859316651419,-0.027023424220983,0,0.00863954381242896,0.0456905803586626,0.00788355466015019,0.00613029711671312,0.026143293288678,0.00788355466015019,0.00613029711671312,0.026143293288678 +0.00645742450865553,0.0107201756899871,-0.00748654417732676,0,-0.00543095884777602,0.0955902675025571,0.00236129608054895,0.0102695892619834,-0.0151375609489541,0.00236129608054895,0.0102695892619834,-0.0151375609489541 +-0.00732267859230339,0.0011613717356113,-0.0376475217516781,0,0.00308867979805136,-0.00399689691462467,0.0145010335909017,0.016734382194901,0.0207340102416089,0.0145010335909017,0.016734382194901,0.0207340102416089 +0.000377142545224886,0.00368515106295602,0.0096406852505321,0,-0.00238598444509559,0.0633723289287177,0.00567521157729131,0.0129771505672798,-0.00546168865739529,0.00567521157729131,0.0129771505672798,-0.00546168865739529 +0.00376885064015339,0.00360248961012164,0.010241861536969,0,0.000460055592181673,-0.0525229985958479,0.0105662912390986,0.0117561781870736,0.0428071505526146,0.0105662912390986,0.0117561781870736,0.0428071505526146 +-0.00102641315537914,0.00309666129792007,-0.00311128799364611,0,-0.00345227602643331,-0.0266477616633417,0.013531816805395,0.0115143027257719,0.0443817327900609,0.013531816805395,0.0115143027257719,0.0443817327900609 +-4.35402754213332e-05,-0.00525367486485983,0.0264975560742462,0,0.00244244026369415,-0.0553350048061432,0.00823784302335577,0.0116401119040294,0.0211880254375017,0.00823784302335577,0.0116401119040294,0.0211880254375017 +0.0124082017983398,0.00718422750430925,0.0530574213159536,0,0.00435031986063109,-0.00388437082910616,0.0093661063156005,0.00236197444365149,0.0578914676146049,0.0093661063156005,0.00236197444365149,0.0578914676146049 +0.010781248209593,0.0101761243281535,0.0459305654577803,0,-0.000321180070323705,-0.0443831116818691,0.0147352405447164,0.00982545735000461,0.0588508137114806,0.0147352405447164,0.00982545735000461,0.0588508137114806 +0.0132790659252065,0.00830971664061487,0.0571277940750452,0,-0.00442636296109482,-0.0337835308383963,0.0188304489628333,0.0179417795827167,0.0658728716655196,0.0188304489628333,0.0179417795827167,0.0658728716655196 +3.84798279909424e-05,0.00223738793516512,0.0039102445802984,0,-0.0127370251275515,-0.0885361554864238,0.0278889456480287,0.021086144294807,0.100768656393368,0.0278889456480287,0.021086144294807,0.100768656393368 +0.00151417835357168,-0.00508383617568745,0.0127572545823278,0,0.00119119332610429,-0.00690800721720784,0.017121364105533,0.0183629814582416,0.0472033827125666,0.017121364105533,0.0183629814582416,0.0472033827125666 +0.016435134704355,0.0141837269511628,0.0257552145245627,0,0.00963930634633362,-0.0598299355222807,0.0162253440031244,0.00777670202532863,0.0552214559639524,0.0162253440031244,0.00777670202532863,0.0552214559639524 +-0.00147077186413443,0.00397853471332483,-0.00459423480401416,0,-0.00318463428277936,-0.00727026856706689,0.0225012887147652,0.0213802732214163,0.0307523790609557,0.0225012887147652,0.0213802732214163,0.0307523790609557 +0.00745022631613417,0.00570439046672388,0.0438020704105275,0,-0.0172398381714234,-0.0175296281442913,0.0147923141290396,0.0200459385999785,0.0256567394067257,0.0147923141290396,0.0200459385999785,0.0256567394067257 +0.0107904211286285,0.00487953128154556,0.017159214852128,0,0.00282075502916433,0.00485151479069101,0.0233285771867595,0.0191662738795781,0.0910273991054939,0.0233285771867595,0.0191662738795781,0.0910273991054939 +0.0138030148487895,0.0113404464892794,0.0552098536935603,0,-0.00801967400641049,-0.0628218947467253,0.0265307524253024,0.0190152866290356,0.0627613073278939,0.0265307524253024,0.0190152866290356,0.0627613073278939 +0.011187008985609,0.00707330672691571,0.0340755445499664,0,-0.0097062893831636,-0.0420260656387413,0.0283824875473929,0.0267317902387037,0.0771158586635751,0.0283824875473929,0.0267317902387037,0.0771158586635751 +-0.00891928732204901,-0.012820965188799,0.00185288099772272,0,0.00117381567468742,-0.0839521955409066,0.0324159338224991,0.0265588884040921,0.0885518554773924,0.0324159338224991,0.0265588884040921,0.0885518554773924 +-0.00626147181515008,-0.00719552104357828,0.014970118257678,0,0.00722867428916283,0.0333761393214114,0.0119849735106514,0.00744088619219325,0.0477890498924087,0.0119849735106514,0.00744088619219325,0.0477890498924087 +0.00448021240345331,-0.000816854604465034,0.0274078599129619,0,0.00370467960954409,-0.0472834536435535,-0.000181355731443282,-0.00115311539304172,0.0288679244462115,-0.000181355731443282,-0.00115311539304172,0.0288679244462115 +-0.00529204858346187,0.000526176183303929,-0.066032836802704,0,0.0133423515508739,-0.0461929872522514,0.00421623124238666,-0.00194020099361011,0.0362341794337572,0.00421623124238666,-0.00194020099361011,0.0362341794337572 +0.0053777669154205,0.00405619265904856,-0.00465758025705281,0,0.00411005680986182,0.0760971260758059,-0.00653711342757725,3.83704346722326e-05,-0.0713072257078303,-0.00653711342757725,3.83704346722326e-05,-0.0713072257078303 +-0.0012994457513192,0.00399043453683235,-0.0539244816290805,0,0.00220535535990594,-0.0121182948563856,0.00443997180246385,0.00359031203979085,-0.0156444736535526,0.00443997180246385,0.00359031203979085,-0.0156444736535526 +-0.000950525713651015,0.0043009425145544,-0.025111591895271,0,0.00632189034881988,0.0167933844893725,0.000860729286462536,0.00722252119323273,-0.0603675811671081,0.000860729286462536,0.00722252119323273,-0.0603675811671081 +-0.000120919735165482,0.00255844913121881,-0.0124974755050868,0,-0.00406680338909081,0.0534326747536714,0.00360909153573574,0.00918064847715594,-0.0251352143227813,0.00360909153573574,0.00918064847715594,-0.0251352143227813 +0.00986194700009201,0.0114344677175973,-0.00740164561200647,0,-0.00238676379892083,0.0187337056169018,0.00662501179173203,0.00852961410612983,0.00266978235220559,0.00662501179173203,0.00852961410612983,0.00266978235220559 +0.00682805949189892,0.00405450808880576,-0.00250477469924086,0,0.00621466328247205,0.0136255511940317,0.0163843056876422,0.0173922282137182,0.00790474214898959,0.0163843056876422,0.0173922282137182,0.00790474214898959 +-0.0108905027455308,-0.00805163499698591,-0.0469488946844963,0,-0.0017032914815657,0.0190736364877044,0.0198641164614066,0.016916148008658,0.0205591723127126,0.0198641164614066,0.016916148008658,0.0205591723127126 +0.00100517504688143,0.00794840529604812,-0.0282778513174697,0,0.0133611448594337,-0.00165032667110665,0.00165604105529433,0.00526813317105801,-0.0313520413824979,0.00165604105529433,0.00526813317105801,-0.0313520413824979 +0.0105761226726532,0.00578954072099437,0.025788468125391,0,-0.0069741020067154,0.0362147269041025,0.00451853557312218,0.011558637257126,-0.0258808073820426,0.00451853557312218,0.011558637257126,-0.0258808073820426 +-0.00359111039426947,-0.00213523676561048,-0.00788971529691458,0,-0.00205686756342629,0.0162318178033528,0.0192098660309815,0.0132009446864566,0.0475686421035038,0.0192098660309815,0.0132009446864566,0.0475686421035038 +0.00298591425970891,0.0069285322413293,-0.0106607441932143,0,-0.0023386149851982,-0.014574697860832,0.00653717207617562,0.00868879695703021,0.00657494502876951,0.00653717207617562,0.00868879695703021,0.00657494502876951 +-0.0160313673029833,-0.0085178923526963,-0.102124509613064,0,-0.00805498057484566,0.0155045192825644,0.00974571594989308,0.0128751673947433,0.00735254128302999,0.00974571594989308,0.0128751673947433,0.00735254128302999 +0.00759881952402578,0.00364499102725795,0.0093284838752537,0,0.0075946519349576,0.0213371987109445,-0.00607826245894328,0.000350737751059604,-0.0767007304858105,-0.00607826245894328,0.000350737751059604,-0.0767007304858105 +0.00443437338340606,0.00139942305131631,-0.00580950599776371,0,0.00257090075674672,-0.0275251598231041,0.00674457622215539,0.00354915963733546,-0.00427294231381068,0.00674457622215539,0.00354915963733546,-0.00427294231381068 +0.00185437751074696,-0.00415747160141694,0.0174674844499664,0,-0.000436269871053536,0.0178367351505024,0.00657318076616846,0.00502015365604431,-0.0147090634052475,0.00657318076616846,0.00502015365604431,-0.0147090634052475 +-0.00646122433812534,-0.000164236472590703,-0.0229901873494611,0,0.00837254208469392,0.00642482853329964,0.00500503285498358,0.000333776684085242,0.0105183537170374,0.00500503285498358,0.000333776684085242,0.0105183537170374 +0.0123325144524056,0.00975780726233084,0.0814328802670521,0,-0.00386050361972607,-0.0267070311714492,-0.00648887366034814,0.00113654747994735,-0.0329678143256213,-0.00648887366034814,0.00113654747994735,-0.0329678143256213 +-0.00355406655459465,0.00448241310130798,-0.026635755191798,0,0.00975939886695045,0.0299345503459825,0.0132316393523466,0.00918997753455589,0.0921599470943093,0.0132316393523466,0.00918997753455589,0.0921599470943093 +-0.00358897731978252,0.00581292243678976,-0.0638806280385446,0,-0.00182929853948215,0.0199753949730098,0.00492223511963796,0.010958862314686,0.0105444746546451,0.00492223511963796,0.010958862314686,0.0105444746546451 +-0.00388328583706286,0.00434137904809606,-0.0529790731500981,0,-0.00447559155319247,0.0425156733985795,0.00536279851429314,0.012400540132484,-0.0294475318226282,0.00536279851429314,0.012400540132484,-0.0294475318226282 +0.010987076132212,0.00832470671715116,0.046853761507445,-0.00250654501224584,0.00403533619223945,0.000246128041762348,0.00528148210690059,0.0124571569027559,-0.032030006099492,0.00528148210690059,0.0124571569027559,-0.032030006099492 +0.00355118923166918,0.0105492761346635,0.0106124652640874,-0.00242378108949234,-0.00322550871407933,0.00119507628256579,0.0201470955573859,0.0164920762900315,0.0671339420950068,0.0201470955573859,0.0164920762900315,0.0671339420950068 +-0.00115878880200613,0.00367393814742843,-0.0304450593434318,0.00661899393225428,-0.00400152180397643,0.0148475555779485,0.0168199049298456,0.0229257005907211,0.0445625335926847,0.0168199049298456,0.0229257005907211,0.0445625335926847 +0.00140930977139079,-0.00338527200830571,0.0151987839864043,-0.00783685478727818,-0.00346064148302619,-0.016617618808194,0.0173748689950358,0.0187807673627746,0.0307491541808174,0.0173748689950358,0.0187807673627746,0.0307491541808174 +0.00866370188022259,0.0120026272002669,-0.0191231272866514,0.000284823101753992,0.0131568055726512,-0.0459785640681784,0.0160519693593444,0.0100353737954583,0.0511541470561361,0.0160519693593444,0.0100353737954583,0.0511541470561361 +-0.00919132836310239,-0.00957659063403803,-0.00432209390057217,0.00869913209671828,-0.00222266831157133,0.0675859864991584,0.0165589102461656,0.0203525558530339,-0.00602234073369555,0.0165589102461656,0.0203525558530339,-0.00602234073369555 +-0.008003565653491,-0.0077763945569245,-0.0230976915122339,0.00550933631328327,-0.00555645988815523,0.0214995945600193,0.00599176148298112,0.00505112224869885,0.0241885715669367,0.00599176148298112,0.00505112224869885,0.0241885715669367 +0.000963416680970785,-0.00400928085527913,0.0186140075182445,-0.00151697445490594,0.00765905942589797,-0.0293979875012746,-0.00383306848768574,-0.00409556722056217,-0.0104865971125608,-0.00383306848768574,-0.00409556722056217,-0.0104865971125608 +0.0025163593735476,0.00756727111762091,-0.000245613333693898,0.0118083074471471,0.00395026484358457,0.0283299174179938,-0.00231506919182501,-0.00688212489047718,0.00920815588651141,-0.00231506919182501,-0.00688212489047718,0.00920815588651141 +-0.00289879420878787,-0.00563672960109861,-0.000837403821496684,-0.00599328092222033,-0.0121442404757133,-0.0487135547037809,-0.00281433283427864,0.00336043235474112,-0.0172215597750389,-0.00281433283427864,0.00336043235474112,-0.0172215597750389 +0.00105821159430427,0.00508442183634504,-0.0185717342016735,0.00271512544602142,0.00786528595867679,-0.0193737597383266,-0.000157913041890325,-0.00439962902346273,0.0144060364805985,-0.000157913041890325,-0.00439962902346273,0.0144060364805985 +-0.00195701388922982,-0.00286014366316264,-0.0270413336686022,-0.00764238630508426,0.00152243650591091,-0.0282271923399651,-0.00229429217615465,0.00259527226748366,-0.0298342550812465,-0.00229429217615465,0.00259527226748366,-0.0298342550812465 +-0.000366376930013759,0.00699713418677306,-0.099176840471717,-0.00372191292917873,-0.0130929708781795,0.031805250019153,-0.000221405509550465,-0.00165040624037308,-0.0223440475000023,-0.000221405509550465,-0.00165040624037308,-0.0223440475000023 +-0.000602282767898677,0.0107225254344041,-0.0378966502680211,-0.00996968402297783,0.00183691256631042,-0.0777570607986877,-0.00226823728965619,0.00650086154920886,-0.115406166066413,-0.00226823728965619,0.00650086154920886,-0.115406166066413 +0.000705132924955579,-7.39580113855685e-05,0.0140366994256988,0.00522860211408007,0.00116121099746125,0.0203486877376523,0.0023846262729724,0.0153712200655976,-0.0556913799140822,0.0023846262729724,0.0153712200655976,-0.0556913799140822 +0.00222293350513524,0.00766496726181806,0.00208083551103061,0.00461833247855978,0.00497068787083148,0.036224357413126,0.0120847228830343,0.00919719964789951,0.0450647648005425,0.0120847228830343,0.00919719964789951,0.0450647648005425 +0.00603645905085605,0.00166533991135874,0.0288062080763633,0.00326895929718297,-0.00413206588594149,0.00539266333891028,0.00970949499053241,0.014658317350052,0.0217227077691267,0.00970949499053241,0.014658317350052,0.0217227077691267 +-0.0040450089832651,-0.00634920424477408,-0.0110568905602237,0.00463613108943483,0.00863163847679017,0.0302949773318731,0.0178419794947252,0.0111667987168313,0.0682403258336322,0.0178419794947252,0.0111667987168313,0.0682403258336322 +0.0101604379905966,0.00718638752556682,0.0114832954001254,0.00247954158101205,0.00637561172296565,0.0330691130585534,0.00501275589172157,0.00274109077698469,0.00869426808156389,0.00501275589172157,0.00274109077698469,0.00869426808156389 +0.00804072145578233,0.00614562712822098,0.0461059940757756,-0.00723388773600413,0.000808528058303939,-0.00880227488815155,0.0121205946454302,0.00972363013068285,0.0106563713266237,0.0121205946454302,0.00972363013068285,0.0106563713266237 +-0.00314072051694489,-0.00337111663850465,0.00789551070997087,-0.00791085621635338,-0.00108984750797758,-0.0453580345170123,0.0151462544903073,0.014006797034592,0.0522857161405239,0.0151462544903073,0.014006797034592,0.0522857161405239 +0.00508098449299548,0.00834490101229942,-0.00355349318650334,0.00330561354141903,0.00467282791649991,0.00710603698518367,0.00823554566346072,0.00670549766111352,0.0409185559760794,0.00823554566346072,0.00670549766111352,0.0409185559760794 +-0.00162028705596848,-0.00121621598394676,-0.00176434054592442,0.00888206386336631,-0.00764007097299176,0.0581877715155672,0.0107961828739353,0.0131528743203213,0.0162584961393488,0.0107961828739353,0.0131528743203213,0.0162584961393488 +0.00146795484941205,0.00707867795184432,-0.0507154155561548,0.0090639190143048,0.00158399905106041,0.027611357266691,0.0086622185386417,0.00791328695787132,0.0254517067083546,0.0086622185386417,0.00791328695787132,0.0254517067083546 +-0.00242803727574186,0.00945443908671294,-0.0337984797575498,-0.00799265448194557,0.00208496149563808,0.005607937094433,0.00778573352556381,0.0128699492347076,-0.0342426325490952,0.00778573352556381,0.0128699492347076,-0.0342426325490952 +0.0141067036170124,0.00104478204168019,0.0966654527480354,-0.00333844788473439,-0.0127043921903756,0.0405032686223742,0.00674718058752557,0.0185248077350355,-0.0208643658539404,0.00674718058752557,0.0185248077350355,-0.0208643658539404 +-0.00265892764259377,-0.00346191754340205,0.00796738276731977,0.0100941304145285,0.00872834443598585,-0.0760654267459003,0.0284913449892281,0.0124361773763219,0.142470407749575,0.0284913449892281,0.0124361773763219,0.142470407749575 +-0.0123288284167559,-0.00991954871272158,-0.0374488112200672,0.00170630832464602,-0.00359331854072551,-0.00181787540876164,0.00804985466534291,0.00777838533247418,0.032218479638493,0.00804985466534291,0.00777838533247418,0.032218479638493 +0.00841820220494519,0.00446295456915247,0.0100857453048876,0.0190342486882299,0.0124977573552803,0.039010151175739,-0.00589481239560765,-0.00447377667070884,-0.0165102336962574,-0.00589481239560765,-0.00447377667070884,-0.0165102336962574 +0.00729507149554621,0.00667025446379289,0.0205223608026487,-0.0032365404008689,0.00407575415642762,-0.00318917576302711,0.00490753497109491,0.000963248707446863,0.00302690593723382,0.00490753497109491,0.000963248707446863,0.00302690593723382 +0.000191334335977169,-0.0031106762723835,-0.0231590048994388,-0.0066926006935132,-0.00897479826800186,-0.0124073836961174,0.00763089154448283,0.00838955178272783,0.0100912557721495,0.00763089154448283,0.00838955178272783,0.0100912557721495 +-0.00396546265619584,-0.00398973125085766,-0.0305510219501623,0.000502445500579315,0.00685798804534463,-0.0113375308340932,0.0066599746198508,0.00291317100266277,-0.00832221109061679,0.0066599746198508,0.00291317100266277,-0.00832221109061679 +0.00206414437149182,0.000710434632700265,-0.00633972198221581,0.0051983783282724,0.00329690044895293,0.0248566968645967,-0.00245073848876186,-0.000638969174585842,-0.0436478644264733,-0.00245073848876186,-0.000638969174585842,-0.0436478644264733 +-0.0137861841883482,-0.0171984057061575,-0.0418801954922556,0.00245893935227815,-0.00223805101837282,0.013533952657783,0.000757212107317038,0.000501985137936426,-0.0208085395497125,0.000757212107317038,0.000501985137936426,-0.0208085395497125 +0.00373999984634678,0.00931595506760661,-0.0121352196061883,-0.00676396195365868,-0.00656678840392953,-0.042928575822984,-0.0139439696266847,-0.0163884442464224,-0.0516265576124997,-0.0139439696266847,-0.0163884442464224,-0.0516265576124997 +0.0163284841086765,0.010213367759438,0.0522416649682325,0.00790546623102185,0.01231032212228,-0.0206547614955732,-0.00976572434294011,-0.0016459837611629,-0.0586235521093941,-0.00976572434294011,-0.0016459837611629,-0.0586235521093941 +0.0163791462923981,-0.00224781179057567,0.112292061245827,0.00369365678891114,0.00540072133309955,0.0464476168125187,0.0146331502203928,0.00783749158916102,0.0503781878938379,0.0146331502203928,0.00783749158916102,0.0503781878938379 +-0.00576843527354649,-0.0047571762945949,-0.0319216655326877,-0.00199248332816198,0.000811628315715717,-0.0257378256561476,0.0225593080075433,0.00464426602793363,0.120480935605785,0.0225593080075433,0.00464426602793363,0.120480935605785 +0.00263684926756935,-0.000868669710998242,-0.000312586468597317,-0.00651333131585299,-0.0014104582122697,-0.0179110065178809,-0.00149807140816802,0.00141045821226969,-0.0308653228528819,-0.00149807140816802,0.00141045821226969,-0.0308653228528819 +-0.0143509237287302,-0.00410666228137675,-0.0622993610427137,0.00881860546154296,0.00407017833904216,0.0637852084534721,0.00325847272835394,-2.37565068936228e-05,-0.00356523368125358,0.00325847272835394,-2.37565068936228e-05,-0.00356523368125358 +-0.009223206524674,-0.00174704339085565,-0.0716454008167398,0.00228509877264313,-0.00438403491517365,0.0349447048503625,-0.0148210089703361,-0.00320008010225263,-0.074497313491052,-0.0148210089703361,-0.00320008010225263,-0.074497313491052 +-0.000987214029342773,-0.000214745919974032,0.00845710021587468,-0.00450394862796624,0.0123911314267473,-0.0391633199761715,-0.0120432850073716,-0.0059540147885051,-0.0708558358334278,-0.0120432850073716,-0.0059540147885051,-0.0708558358334278 +0.000686071197996145,0.00661918556944254,-0.00865759787697158,0.0117606581634473,0.00872343208820239,0.00860331813039187,-0.00635626901601974,-0.00513042676479628,-0.00949033608926498,-0.00635626901601974,-0.00513042676479628,-0.00949033608926498 +0.00560311491179222,0.0223356730146848,-0.0642201521416856,-0.000703057775315573,0.0050890998837904,0.00204991519115943,-0.00315966799324948,0.00254857656626724,-0.0137893147612621,-0.00315966799324948,0.00254857656626724,-0.0137893147612621 +0.00587894638311854,0.00926400767689405,-0.029051091180586,-0.00699014754748851,-0.00494637732321417,-0.0435802069195337,0.00777925104269129,0.0230169256566939,-0.0496876770910448,0.00777925104269129,0.0230169256566939,-0.0496876770910448 +0.00574671437614316,0.00100796301661374,0.0406114873388115,-0.010891569966344,-0.0139151201749644,0.0159087694754717,0.0232520947029228,0.0236700655116969,0.0190779224911332,0.0232520947029228,0.0236700655116969,0.0190779224911332 +0.00339834635885748,0.00333114730194229,0.0122065745229904,-0.00135268922177535,0.00102827264973938,0.0194498150137674,0.0235800245104566,0.0186189199405092,0.072686034517253,0.0235800245104566,0.0186189199405092,0.072686034517253 +-0.00229824166594316,0.00165111860464371,-0.0385809975292957,0.00131721856421515,-4.68881970392115e-05,0.0186318875176956,0.0182105955413075,0.0175768678956633,0.0464457201193904,0.0182105955413075,0.0175768678956633,0.0464457201193904 +0.00432462477581058,-0.0014685625081618,0.01075035800187,0.00885073188610483,0.00131186621103251,0.103341491012629,0.011609228056448,0.0144183641427049,-0.00323053132737373,0.011609228056448,0.0144183641427049,-0.00323053132737373 +0.00824523105718423,0.00103737017119334,0.0279951407801737,0.00409103502003536,-0.000315821260316235,0.0677356026325778,0.0151191307900887,0.00884425350759429,0.0318072762454384,0.0151191307900887,0.00884425350759429,0.0318072762454384 +0.00483938829356719,0.00176236455271577,0.000994588242980267,0.00234023830772274,0.00533559460607986,0.00274230361305593,0.0147775251948653,0.00888159981264696,0.0304176039464875,0.0147775251948653,0.00888159981264696,0.0304176039464875 +0.000116029855337823,0.00497398420250782,-0.0161480795718708,-0.00173677472291069,-0.00189110352852078,0.0189336090078835,0.0114082913073082,0.00955947967114961,0.00404453169342778,0.0114082913073082,0.00955947967114961,0.00404453169342778 +-0.00235712023085249,-0.00159562951236905,-0.0184930804205041,0.00110317562076175,0.000411619448162353,-0.00520047803134549,0.00700491980711363,0.0126802436649877,-0.0113419352648512,0.00700491980711363,0.0126802436649877,-0.0113419352648512 +0.0076626443276339,0.0134163662037999,-0.00382292666576615,0.00210030966977757,0.0100492086840062,-0.0400307004937117,0.0072920927999476,0.00677841009420571,0.00650493941667555,0.0072920927999476,0.00677841009420571,0.00650493941667555 +-0.00293150010007577,0.00525442177075118,-0.0276819087970529,-0.00429228987280761,-0.00955548046271412,0.0133208375535858,0.012723512241308,0.0186081410049844,0.0037934986966048,0.012723512241308,0.0186081410049844,0.0037934986966048 +-0.00863438503258818,-0.00953973833802851,-0.00385593172811617,0.00405707248359178,0.000989812357854464,-0.0214725423396624,0.0114428408809835,0.0178322032751179,0.0103614471957389,0.0114428408809835,0.0178322032751179,0.0103614471957389 +-0.00962902732431079,-0.00215198554884972,-0.0472179885010225,0.00217580835791077,-2.31937671814775e-06,0.000298847773704293,0.00538513866862444,0.00219995508391415,0.0380522926477431,0.00538513866862444,0.00219995508391415,0.0380522926477431 +0.00172310787483245,0.0114114926550182,-0.053101816131657,0.0170296099355831,0.0086067393318095,0.0361811168566744,-0.00746654199377446,-0.000295183075009801,-0.0382380381075274,-0.00746654199377446,-0.000295183075009801,-0.0382380381075274 +-0.00387451027689816,-0.000455229557105686,-0.0335458213410608,0.00261191332988431,0.000629474108051763,0.0251109177868696,0.00139726487762303,0.0099623916376969,-0.0475534222682488,0.00139726487762303,0.0099623916376969,-0.0475534222682488 +0.00573592474020143,0.00885779195436429,0.0215748155917505,0.00635130694372094,0.0116248145571037,-0.0137212302130477,0.00324388150725924,0.00571287156632944,-0.0181315480705096,0.00324388150725924,0.00571287156632944,-0.0181315480705096 +-0.0111007465101424,-0.00218130943430901,-0.0302857165788592,-0.00494071539406337,-0.00688113484830754,-0.0251261480765837,0.00976250935417854,0.0128790002914476,0.0266757236165663,0.00976250935417854,0.0128790002914476,0.0266757236165663 +0.00869582079476296,0.00420139565966153,0.0512070161732245,0.00621392918764308,-0.00788149673464714,0.0262728487810967,-0.000684993447777064,0.00635931534288728,0.00382313820149784,-0.000684993447777064,0.00635931534288728,0.00382313820149784 +0.00134000770665671,0.00312107137639504,-0.0169110509258836,-0.00365431841911459,0.00617539371336231,-0.0801532224070783,0.0142322350792362,0.00713270866881718,0.0815521520949419,0.0142322350792362,0.00713270866881718,0.0815521520949419 +0.0103532247268213,0.00423209060597642,0.0289156991535243,0.000921239741100798,0.00206238153976488,-0.00270635231118432,0.0077143030880319,0.00901619225245545,0.00371418552887426,0.0077143030880319,0.00901619225245545,0.00371418552887426 +0.00221178820890326,0.00898093776384241,-0.0784795840700122,-0.000223487057970598,-0.00830114230183123,0.0318767479189525,0.0171892868347993,0.0107013224504914,0.0432079357318434,0.0171892868347993,0.0107013224504914,0.0432079357318434 +-0.00140895989216835,-0.00793531882765481,0.0347087281558589,-0.00519276170892442,-0.00153821006421197,0.0118680981960064,0.0103521145264497,0.0181001504933255,-0.0698612268199692,0.0103521145264497,0.0181001504933255,-0.0698612268199692 +0.00123509512910242,0.00748574296551461,-0.0182286172948564,0.00171771956249383,0.00220776457681411,-0.0209907579309438,0.0110437937937022,0.00503950960778759,0.0450256481764934,0.0110437937937022,0.00503950960778759,0.0450256481764934 +0.00378431384632347,0.00287774795686742,-1.58743906781096e-05,-0.000177860745329427,-0.00426402756539839,0.0189262537803046,0.00532744128989059,0.0121285927718361,-0.0125227995146087,0.00532744128989059,0.0121285927718361,-0.0125227995146087 +-0.00413703958243817,-0.00526058216020721,0.00553785783964707,0.00013684716112147,0.00114602518134701,-0.0144010916584992,0.0131275040074549,0.0105555074173545,0.0275579205914973,0.0131275040074549,0.0105555074173545,0.0275579205914973 +-0.00228265324710396,-0.00483372751593991,-0.00941234483621713,0.00538341539073939,0.000681445231156021,0.0180441096041177,0.00396146916310636,0.00298856869423599,0.0195613882406914,0.00396146916310636,0.00298856869423599,0.0195613882406914 +0.0111679859882057,0.00627737732153635,0.0142900412373681,0.00719107626616549,0.0071046315642333,-0.0108324226178576,0.00026358052582337,-0.0026372735055466,-0.000921172758461009,0.00026358052582337,-0.0026372735055466,-0.000921172758461009 +6.36296457363511e-05,-0.00494973429700541,0.0131922941493047,-0.000990472946426776,0.00526382804450968,-0.0138934023354458,0.00889013212876581,0.00504484893435283,0.00207147408357902,0.00889013212876581,0.00504484893435283,0.00207147408357902 +0.00983095959162995,0.00656818361140816,0.0142590982783705,-0.00119581677383152,0.00500450383900905,-0.016778596220097,0.00337624882224908,-0.000127281802734778,0.00646229341873839,0.00337624882224908,-0.000127281802734778,0.00646229341873839 +0.00349685621634009,0.00598907880482759,0.00927586493015132,0.000892854447392526,0.000594594898836654,0.00401465900123268,0.00949967253129878,0.00728050495780926,0.005778799712264,0.00949967253129878,0.00728050495780926,0.005778799712264 +-0.00935536510197516,-0.0138787760399445,-0.00967086117691583,-0.00475053077652804,-0.00873034997297464,-0.0112592883257533,0.00871702107377275,0.0120247496543386,0.0115432637882646,0.00871702107377275,0.0120247496543386,0.0115432637882646 +-0.00423819505172702,-0.00395893355076196,-0.0391042279389641,-0.000110215495461671,0.00956729802282635,-0.0412437568385657,9.50781494823191e-05,-0.00577806465326685,0.0174240839917017,9.50781494823191e-05,-0.00577806465326685,0.0174240839917017 +-0.000229308102635701,0.00289474353731007,-0.0375748669957407,-8.93334280786424e-05,-0.00067787720953807,-0.00978455062748425,-0.00871063662229361,-0.00712254766292228,-0.0555442004290608,-0.00871063662229361,-0.00712254766292228,-0.0555442004290608 +0.0135040600929886,0.0129471842117303,-0.000375607073664914,0.0017365042118438,-0.0008599143510938,0.0226250894747619,-0.00659251877537838,-0.00199347811201709,-0.0641922565700468,-0.00659251877537838,-0.00199347811201709,-0.0641922565700468 +0.00330749115494479,-0.00497899515330039,0.043668055623923,-0.00430044762116849,-0.003731084589865,0.0113711409437819,0.011027067830523,0.0113283725480757,-0.0164116625127958,0.011027067830523,0.0113283725480757,-0.0164116625127958 +-0.00164376059762745,-0.00293504074631183,-0.0087291539398405,-0.00704036509401111,-5.96606979699613e-05,-0.0232227311024122,0.0112440048911921,0.00386483319470491,0.0478140252730849,0.0112440048911921,0.00386483319470491,0.0478140252730849 +0.00737494502242669,0.00872074909472786,-0.0539060331917963,0.00241135614810395,-0.00157437198342297,0.0448566243735738,0.00150108614153355,0.00112525337113705,-0.00728822322035622,0.00150108614153355,0.00112525337113705,-0.00728822322035622 +0.0124123917901805,0.00782931147927468,0.0555952198705498,0.00293393993831178,0.00725129664798946,0.0348726566286048,0.00798276980837089,0.00980379750839372,-0.0573547098625138,0.00798276980837089,0.00980379750839372,-0.0573547098625138 +-0.00060653303104299,0.00856854893247485,-0.0351116416398123,-0.00785604763516171,-0.00991168725617996,0.0190676851771492,0.0184254029002043,0.0158193109395042,0.0447257826859186,0.0184254029002043,0.0158193109395042,0.0447257826859186 +0.00310325989054199,-0.00511311607161288,0.0381278051459353,-0.00148670136460113,-0.00955571001914193,0.0188138854893493,0.0117521192244816,0.0205438320001728,-0.0085293297330271,0.0117521192244816,0.0205438320001728,-0.0085293297330271 +-0.00477715262185157,-0.00713515863808538,0.0410895331706049,-0.00845766202171864,0.00374890475408445,-0.0506155766804056,0.0189262906121032,0.00838967636470795,0.0817754049223683,0.0189262906121032,0.00838967636470795,0.0817754049223683 +-0.00696154122316821,-0.00129142937003665,-0.0359723039649517,-0.00030175520453849,0.00341307107776418,-0.0286988145659665,0.00213789318227701,0.000618401229871831,0.0519252221690308,0.00213789318227701,0.000618401229871831,0.0519252221690308 +0.00489538312770797,0.00633689588143556,-0.0389677358151078,0.0118168320441509,0.0108685159257217,0.0246667013624492,-0.005439334797693,-0.00131873258686323,-0.0168450811387059,-0.005439334797693,-0.00131873258686323,-0.0168450811387059 +0.0127119036307116,0.000445955109024395,0.057637201905592,0.00126109004897724,0.00626429023672103,0.0338345447523196,0.00398915114244179,0.00453923124582956,-0.0345392282924976,0.00398915114244179,0.00453923124582956,-0.0345392282924976 +-0.00080826691912859,0.00608672995690049,0.00681441057041463,-0.00215309644069715,0.00449641552399817,0.00336788191310496,0.0152725634311786,0.0043605768340995,0.0480570256081584,0.0152725634311786,0.0043605768340995,0.0480570256081584 +0.00678688539777888,0.00604660760674486,0.0442885420649698,0.00737853549444477,-0.000376570989029449,0.0447855408690886,0.00230971796808856,0.0114497768621113,-0.0025447213019131,0.00230971796808856,0.0114497768621113,-0.0025447213019131 +-0.00240118267123726,0.000155745205919887,-0.0427660149815881,-0.0025474905809305,-0.00502526146322655,-0.0266120255610093,0.0161331893825524,0.0124190734700088,0.0832620545524491,0.0161331893825524,0.0124190734700088,0.0832620545524491 +0.000131435076771306,0.00820600084086849,-0.00234159238074858,-0.00184330433951214,-0.00118293537294744,-0.012610357368805,0.00826370829587947,0.00916255540508925,-0.00553102620044418,0.00826370829587947,0.00916255540508925,-0.00553102620044418 +0.00218434017262381,-0.00120877399009296,0.0306747452727693,0.00423595782249553,-0.0052336739292384,0.0389504570939692,0.00680881967046698,0.0150527876735078,0.00661627391216735,0.00680881967046698,0.0150527876735078,0.00661627391216735 +-0.00407170326916106,-0.00300498722033336,-0.0283785903130752,-0.0118368465878578,-0.00682196737025566,-0.0641530229015736,0.0142870865946949,0.00798847863438136,0.0742656800270826,0.0142870865946949,0.00798847863438136,0.0742656800270826 +0.00183922942109869,0.00300082437491882,-0.00356426999792046,-0.000697605624772849,0.00470250482516754,-0.0195970425928223,0.00284493016742772,0.0034582331286942,-0.00766479514073067,0.00284493016742772,0.0034582331286942,-0.00766479514073067 +0.00239733186201417,0.0123800866562113,-0.0150599662342626,0.00411235769599959,0.00328782418712404,-0.00785340323313601,0.00425703076635965,0.00560945597443851,-0.00181882649043229,0.00425703076635965,0.00560945597443851,-0.00181882649043229 +-0.000634146990651004,0.00315658574298911,-0.0171965364868422,0.000335404099540037,-0.00931802449574752,0.0340540147446247,0.00661257713528695,0.0163337652038015,-0.00628599186830519,0.00661257713528695,0.0163337652038015,-0.00628599186830519 +0.00194515546434085,0.00356062186263099,-0.00151275851093028,-0.00543722521733184,-0.00405360862510714,-0.0134343838145971,0.0122639480155906,0.013165547048971,0.0265222493209255,0.0122639480155906,0.013165547048971,0.0265222493209255 +-0.00267088548374025,-0.00357846148172792,-0.0108516808805301,0.00482111084012473,-0.00165828272717626,0.0248340900984533,0.012319004625892,0.0129047966538462,0.0256642899113544,0.012319004625892,0.0129047966538462,0.0256642899113544 +0.00992909345164026,0.00649111737244391,-0.00576361644787143,0.00120466570597747,0.000291577485494061,0.0345163033208594,0.00745619482423395,0.00566474467402041,0.0146777582795907,0.00745619482423395,0.00566474467402041,0.0146777582795907 +0.00608170710716727,0.000996403107635415,0.0182868240654977,-0.00336986718802224,-0.00290553959561831,-0.00311061748360999,0.0142265505935717,0.011028164237967,0.000388322146758683,0.0142265505935717,0.011028164237967,0.000388322146758683 +0.00456147335214466,0.00901209926067915,0.0358902736146556,-0.00614581455827123,-0.000222197424512819,0.00460883181075003,0.013807534998406,0.0102408022017106,0.018470104787869,0.013807534998406,0.0102408022017106,0.018470104787869 +6.02019487630188e-05,0.00630412788755319,-0.020535410565774,0.00261641124534363,-0.0134047775097092,0.0195835667992899,0.0121012065127545,0.0174400449669745,0.0423148780009932,0.0121012065127545,0.0174400449669745,0.0423148780009932 +0.00533772991814666,0.00600661100791462,-0.0355916747308078,-0.0019647275783169,-0.000604199585502443,-0.0144269194626416,0.014437750117022,0.0174681092427682,0.0320494994003992,0.014437750117022,0.0174681092427682,0.0320494994003992 +0.00100799312355725,-0.00684002708794886,0.0398618196654123,-0.0115896633275251,-0.00660379548653026,0.010890917701867,0.0192322373692891,0.0179765888255334,0.00495373450322778,0.0192322373692891,0.0179765888255334,0.00495373450322778 +0.00238742292992708,0.00350027193776771,-0.00825732080903565,-0.00474559188692611,0.00279048289321927,-0.00822252670919074,0.0141479676731528,0.00711348095285345,0.0548526050255463,0.0141479676731528,0.00711348095285345,0.0548526050255463 +0.0012740506257768,0.00234192995160942,0.0190990163129672,0.000834471109244507,0.00723346179017283,-0.0125443627141104,0.00811753801252979,0.00982559282194616,0.000506140060211116,0.00811753801252979,0.00982559282194616,0.000506140060211116 +0.00553880607364005,0.00616198232660001,-0.0319972325427393,0.00443671378788454,0.00380040386668675,-0.00575681960242533,0.00867165307756449,0.00937712761500457,0.0340068392527244,0.00867165307756449,0.00937712761500457,0.0340068392527244 +0.00860528057515837,0.00520323755838825,0.00065901602430507,0.00386606244503776,0.00267769182882209,0.0372648901619228,0.0132955119244704,0.0125391505034269,-0.00561249760966427,0.0132955119244704,0.0125391505034269,-0.00561249760966427 +0.00559726226716452,0.00304606845843231,0.00172057714389414,-0.00869887650843103,-0.00525112689489552,0.0235940004038334,0.0175676722259421,0.0150616596678944,0.00740657001491673,0.0175676722259421,0.0150616596678944,0.00740657001491673 +0.0046310527978008,0.00437447931729622,-0.0130796344371591,-0.00873481111060764,0.000558642920862149,-0.0145671191234897,0.016521471297156,0.0150629566522733,0.0110698370326774,0.016521471297156,0.0150629566522733,0.0110698370326774 +0.00261241972043873,-0.00255038256491421,0.0126905368531502,-0.00312452952788237,-0.00411109006734982,0.0234949548700996,0.0157609731361743,0.0160535499179638,0.00129671890134215,0.0157609731361743,0.0160535499179638,0.00129671890134215 +-0.00567772466952231,0.00191429889664182,0.00261136217950152,0.00337148398756787,0.0044170819093045,0.0056564290673002,0.0144304430020696,0.00959279590575675,0.0292176887905214,0.0144304430020696,0.00959279590575675,0.0292176887905214 +0.0132126040205635,0.0101233235915363,0.0454336980919156,0.00110869149921675,0.00506058412515892,-0.0232512721940272,0.00150178384996794,0.00999628002760771,0.00919098433223355,0.00150178384996794,0.00999628002760771,0.00919098433223355 +-0.0165989293064644,-0.0128770507809735,-0.0465214323178253,-0.00238394561521174,-0.00599954794209505,-0.019331007145267,0.0217025312410246,0.0153540289843305,0.0862688359136074,0.0217025312410246,0.0153540289843305,0.0862688359136074 +-0.000925240118434673,-0.00449568393067268,0.00448837896560379,0.00484406489501706,0.0107301132043682,-0.00209774916302303,-0.00400833139482456,-0.000991376646999746,-0.0136674597599972,-0.00400833139482456,-0.000991376646999746,-0.0136674597599972 +0.00116548356514552,0.00323662131529083,-0.0112074158961476,0.00753953203568885,0.0146109817374827,-0.00665703486588351,-0.00163952487103552,-0.00580849772234077,0.00710435286485942,-0.00163952487103552,-0.00580849772234077,0.00710435286485942 +0.00439318184362839,0.0017412250676145,0.00715725776488152,8.20341169361707e-05,0.00420477981978215,-0.0275005858458915,-0.00338474749696825,-0.00021973139630347,-0.0268484151735191,-0.00338474749696825,-0.00021973139630347,-0.0268484151735191 +0.00566297758141836,0.00722674697477095,-0.0262686211343679,0.00259017838036003,0.00255742069808093,-0.00823435606136346,0.00394580932264509,0.00120600381624072,0.00502049214226132,0.00394580932264509,0.00120600381624072,0.00502049214226132 +-0.00214728805466885,0.00924807893246457,-0.0716845197881428,-0.00910444015692051,-0.00439006455015489,0.0103812307860516,0.0063590240960592,0.00877997738399161,-0.0316954147435624,0.0063590240960592,0.00877997738399161,-0.0316954147435624 +9.1482455081459e-05,0.00187954620836283,0.00385824767946528,-0.00027006292961505,-0.000312990086966949,0.0106300653347545,0.00379582733335868,0.0158555994922291,-0.0699956981509084,0.00379582733335868,0.0158555994922291,-0.0699956981509084 +0.00893302326678736,0.00199837987641449,0.0289609342727891,-0.0028284730141568,-0.0085745758092586,0.00713338524894371,0.0113804559347361,0.0120112864989264,0.0258977305770533,0.0113804559347361,0.0120112864989264,0.0258977305770533 +-0.00992596649142225,-0.00937451194385168,-0.00648152580577919,-0.0131244879152308,-0.00546755048989917,-0.0419883137588885,0.0184164981672814,0.0105443080138777,0.053905881685433,0.0184164981672814,0.0105443080138777,0.053905881685433 +0.00378845441134191,0.00504396399273808,-0.0189867785829091,0.00678486122488743,0.0069501816883166,-0.000293537613696736,-0.00180023871138325,-0.000196177771173613,0.00236343030679363,-0.00180023871138325,-0.000196177771173613,0.00236343030679363 +-0.00265189675604509,-0.000877785442182814,-0.0171484158963715,-0.00367445408344487,-0.000886081852233256,0.0122159727787467,0.00388087562196312,0.00443170127648816,-0.012939286158776,0.00388087562196312,0.00443170127648816,-0.012939286158776 +0.00719667275339762,0.00847538119883755,0.00278532196593182,0.00369775872313966,0.0025663302470412,0.0170326131015523,0.000345759091335429,0.00258090784821522,-0.017075631445022,0.000345759091335429,0.00258090784821522,-0.017075631445022 +0.00299069078283546,0.00917360392120725,0.00657662949760709,-0.00098471850179797,-0.000898888188764079,0.0011218872728096,0.00892907388461998,0.0101513484820663,0.00468372009778119,0.00892907388461998,0.0101513484820663,0.00468372009778119 +-0.00462307533259668,-0.0184441716876197,0.054532455043547,0.00595016228176243,-0.00266621271135634,0.0135377107404175,0.010672135793267,0.0165126716443982,0.0221109038846029,0.010672135793267,0.0165126716443982,0.0221109038846029 +0.00758002761965429,0.01152636351371,-0.0201499942008515,0.00030517581052957,0.0132766287170949,-0.0624262712472872,0.00864932186800628,-0.00776974921477278,0.0987451016812529,0.00864932186800628,-0.00776974921477278,0.0987451016812529 +-0.0024654532124937,0.00502248172692399,-0.00497524491143138,0.00460778203726616,0.0012690182444082,0.0408967833179823,0.00240957867364326,0.00820972571013564,-0.0356893792113076,0.00240957867364326,0.00820972571013564,-0.0356893792113076 +0.00917068231436253,0.00635470168233532,0.014832149125141,0.00373896985959261,-0.00498589281054103,0.0372607384195809,0.00334322057245844,0.0103757219428426,0.00525615121555533,0.00334322057245844,0.0103757219428426,0.00525615121555533 +-0.00867943430352512,-0.00444511322954043,-0.0379279987221953,-0.0103622466992461,-0.0038055846187952,-0.0366571155352784,0.0176807698491105,0.0123272630441076,0.0495389840128493,0.0176807698491105,0.0123272630441076,0.0495389840128493 +0.000432716092635085,-0.00669752253070679,0.0125307317027743,0.00770928382596097,0.00592911438324391,0.041683669195956,0.000929581835937996,0.00550622231477364,-0.0212802550127323,0.000929581835937996,0.00550622231477364,-0.0212802550127323 +0.00315589168022388,0.00906968997738382,-0.0417480643917966,0.00545978113668373,0.0107934011045933,-0.00178051716494517,0.00446886353472979,-0.00333360089481322,0.0228021340138107,0.00446886353472979,-0.00333360089481322,0.0228021340138107 +0.0077624435574586,0.00898174364201136,0.00313199646829253,0.00386748005071934,0.00139218716682658,0.0416330990574839,0.000385591286597439,0.00818447303802513,-0.0596871009276673,0.000385591286597439,0.00818447303802513,-0.0596871009276673 +-0.00388805413039929,-0.00564819983985422,0.00804263420637834,-0.00563604239735646,-0.00710799917777418,0.00201539686286004,0.0132035812247675,0.0142054056581914,0.0089407163108177,0.0132035812247675,0.0142054056581914,0.0089407163108177 +0.00486882933914692,0.00867843133211581,0.00515365176112394,-0.00168403139146447,-0.00218713950639453,0.00664048327356347,0.00683868116938581,0.00476682675604982,0.0285769696588786,0.00683868116938581,0.00476682675604982,0.0285769696588786 +0.00429517954432715,0.00594132958633881,0.0330291160685129,0.00422358181504728,-0.00138768676680286,-0.00137148757507424,0.00880924363931085,0.0123639593370549,0.0158385498001515,0.00880924363931085,0.0123639593370549,0.0158385498001515 +-0.0178796867541788,-0.00748138413464255,-0.0782295978686305,-0.0105286001149289,-0.00879011946750512,-0.0647103137492938,0.0141241894962573,0.0141614645608424,0.0631751722360299,0.0141241894962573,0.0141614645608424,0.0631751722360299 +-0.00442491902576806,0.00312920792521079,-0.0484687493031221,0.00626485810166364,0.00393062510335235,0.0222798547737676,-0.00599843187011061,0.00221536377767278,-0.0363579423511996,-0.00599843187011061,0.00221536377767278,-0.0363579423511996 +0.00239785982269925,0.00104742961730255,0.0271075038333047,0.0100329754954178,0.00666152481984014,0.00739809658536138,-0.00275093043660247,0.0032880436392643,-0.0363699887165661,-0.00275093043660247,0.0032880436392643,-0.0363699887165661 +-0.00105758474865962,-0.00150636937734375,0.00411059345878981,-0.00161485002404479,0.00645682886960362,-0.048722174386606,0.00461340964223641,0.00259634273329868,0.0332018358623197,0.00461340964223641,0.00259634273329868,0.0332018358623197 +0.00415474165337352,0.00327995256013746,0.0118786587888319,0.00650324047393864,0.00241584409078181,-0.00124509519913526,0.00141015869245581,0.000429506653562632,0.0150316791476662,0.00141015869245581,0.000429506653562632,0.0150316791476662 +0.00146543188544039,-0.00416047418737852,-0.0174712071345013,0.0041136041404596,0.00112978381856372,-0.0139327826388405,0.00471824367123039,0.00360526161479662,0.0159088939200727,0.00471824367123039,0.00360526161479662,0.0159088939200727 +0.00267851765471113,0.00305603023508069,-0.0276123564574921,0.000891192084400608,0.00438847985662775,-0.00957433751536042,0.00436032192987532,-0.00139369709297724,-0.0105036484722455,0.00436032192987532,-0.00139369709297724,-0.0105036484722455 +0.00044095468024946,-0.00267425269486356,0.00312016391618528,-0.00258546617091979,-0.00518412718587167,0.0329034851506792,0.000762915691488204,0.00368785689410277,-0.0521798751620061,0.000762915691488204,0.00368785689410277,-0.0521798751620061 +-0.0109847731689002,-0.00496094124664699,-0.0168924775777259,0.0013913489853922,-0.000122168242199464,-0.0198614586567463,0.00222307980617251,0.00027189605869849,-0.00757392401163571,0.00222307980617251,0.00027189605869849,-0.00757392401163571 +0.00386569436782802,-0.00112217134923311,0.0217277538261711,0.00440365482383141,-0.00483854192723908,0.00850267638004609,-0.0111850162153545,-0.00410951092308788,-0.026338906415689,-0.0111850162153545,-0.00410951092308788,-0.026338906415689 +-0.0123757819603349,-0.00204671077349137,-0.0863879343652548,-0.014825183533898,-0.00218196918385602,-0.0979399633291083,0.00102035379791286,-0.00566078346766566,0.0287753135015337,0.00102035379791286,-0.00566078346766566,0.0287753135015337 +0.00576235108088081,0.0101640927786158,0.0207596696092289,-3.01232675695314e-05,0.00661533879885539,-0.0754031256778607,-0.0165818564746584,-0.00510483836223735,-0.100195073452888,-0.0165818564746584,-0.00510483836223735,-0.100195073452888 +0.00587867863505699,0.00283483999990506,0.0140807154959278,-0.00276928179499854,-0.00718287828167869,-0.0752667368680427,0.000918034152528191,0.00498701041234812,0.00770526723531846,0.000918034152528191,0.00498701041234812,0.00770526723531846 +0.0113116949756389,0.0136795012234835,-0.0234143854013614,-0.00330757902526999,0.00183010067724608,-0.0151206136142646,0.0101697666065786,0.00543477269538074,0.0353178564284765,0.0101697666065786,0.00543477269538074,0.0353178564284765 diff --git a/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing6.csv b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing6.csv new file mode 100644 index 0000000..9dbba2b --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_simulation_smoothing6.csv @@ -0,0 +1,203 @@ +"eta1","eta2","eta3","eps1","eps2","eps3","state1","state2","state3","signal1","signal2","signal3" +-0.00830223089361505,-0.0107522725428041,0.00446759637759447,0,-0.00559899035592434,0.0127916471513334,0.0255177663116228,0.0208850989692451,0.0674210341214803,0.0255177663116228,0.0208850989692451,0.0674210341214803 +0.00177627456011897,0.00631409737765736,-0.0237652449829674,0,0.00515958668213483,-0.111635711343783,0.00808039244007158,0.00522639037508414,0.0395046788281071,0.00808039244007158,0.00522639037508414,0.0395046788281071 +0.0104359103754557,0.00343938218570775,0.0327312120757791,0,-0.00928266008675188,0.0446607962015049,0.00622645691950312,0.0103666706169583,-0.0102356826357339,0.00622645691950312,0.0103666706169583,-0.0102356826357339 +-0.000656278528843002,0.000735032642180736,-0.05966190187275,0,-0.000899418199986485,0.0515387389061421,0.0182456314777972,0.0104335687768418,0.0511250292132103,0.0182456314777972,0.0104335687768418,0.0511250292132103 +-0.00180867109182024,-0.00677305814308058,0.0354151579888504,0,0.00271120585759231,-0.0547116110728561,0.00732871446723386,0.00986122197083184,-0.0519822344747902,0.00732871446723386,0.00986122197083184,-0.0519822344747902 +-0.00947908151953391,0.00452125517647667,-0.0799257114907288,0,-0.00494863114781625,-0.0352930169951479,0.00445431965399206,0.000980704467004895,0.0293151374301293,0.00445431965399206,0.000980704467004895,0.0293151374301293 +-0.0058089740338485,-0.00249287116906342,-0.0124507029067874,0,-0.00433222781269319,-0.0548942180054056,-0.00845020301019384,0.0056752609111283,-0.076957800167783,-0.00845020301019384,0.0056752609111283,-0.076957800167783 +0.013278470845791,0.0112654183787691,0.0476604096732281,0,0.000267756044193011,0.0216605676282947,-0.00190884041833337,-0.000547406012472728,0.00358361290412448,-0.00190884041833337,-0.000547406012472728,0.00358361290412448 +0.00955619952577135,0.00848402428820842,-0.0141559840183751,0,0.0043418512573681,0.0186843827480075,0.0131156819850926,0.0104279896328393,0.053149490801189,0.0131156819850926,0.0104279896328393,0.053149490801189 +0.0115134930319632,0.00330163043194639,0.0154666307162536,0,-0.0113849254843947,0.069523755174322,0.0181593192713925,0.016223555869936,0.0109289513068481,0.0181593192713925,0.016223555869936,0.0109289513068481 +-0.00119612086731609,-0.00475570274416131,0.00776949859544469,0,0.00382935735552452,-0.0125903171617081,0.0234363855130708,0.0159937046163214,0.0293274304353147,0.0234363855130708,0.0159937046163214,0.0293274304353147 +0.011560159737234,0.0142987358818643,0.0323869339792718,0,0.0017004572209085,0.045917407969423,0.010380969788708,0.0088907088857353,0.0119932322625895,0.010380969788708,0.0088907088857353,0.0119932322625895 +-0.00822044961453126,-0.00681228930374082,-0.0041068903160998,0,-0.00904694605287422,-0.0510266543481276,0.0181892902202968,0.0212631798206875,0.0413108062759522,0.0181892902202968,0.0212631798206875,0.0413108062759522 +0.0016866343368899,0.00554197647125413,-0.0238892807443929,0,0.000181880123101824,-0.0265715724469894,0.0086787488605751,0.00788014656781206,0.0443055435523969,0.0086787488605751,0.00788014656781206,0.0443055435523969 +-0.00444797408175305,-0.00111499438641139,-0.000863604229530961,0,0.00308773264695533,-0.0350509515239497,0.00842467396672802,0.010994819514565,0.000903972139616991,0.00842467396672802,0.010994819514565,0.000903972139616991 +0.00152306923252325,0.00801892492993946,0.0221310716029478,0,0.000133988068358949,0.0359155216834509,0.00391177185668568,0.00657830623135638,0.0180915750904945,0.00391177185668568,0.00657830623135638,0.0180915750904945 +0.00881685473600607,0.0165395567499984,0.0225889753654929,0,-0.00251715647155755,-0.0305613436421872,0.00707018006035743,0.0120214337478758,0.0450290456632912,0.00707018006035743,0.0120214337478758,0.0450290456632912 +0.00228802193263835,0.00685177427040719,-0.020695990029844,0,-0.0101108008203486,-0.0379991298965906,0.0192483202671761,0.0236262174394945,0.0700884707174498,0.0192483202671761,0.0236262174394945,0.0700884707174498 +-0.00878903420228809,-0.0124917636205598,-0.00389250055157806,0,-0.0141563694974979,-0.0348811230712486,0.0217504532962646,0.0225054886629303,0.0471136239735808,0.0217504532962646,0.0225054886629303,0.0471136239735808 +0.0157585632139805,0.0123534915283249,0.0200744810831591,0,0,-0.000539999690858866,0.00889861187722438,0.00365737033075892,0.040835375182822,0.00889861187722438,0.00365737033075892,0.040835375182822 +0.00443207525906198,0.0102388716448239,-0.0429418960500415,0,0,-0.0296621214890034,0.018824337679498,0.0158141838265547,0.0250536419281744,0.018824337679498,0.0158141838265547,0.0250536419281744 +-0.00291601340786428,-0.010299327296851,0.00658610143788418,0,0,0.0500280065267302,0.0162720984540643,0.0226568605449834,-0.0265458960346828,0.0162720984540643,0.0226568605449834,-0.0265458960346828 +0.00283781260909725,-0.00318306605080908,0.0760710826645701,0,0,-0.028199026081045,0.0137545050688742,0.00575947429757296,0.0363261373421238,0.0137545050688742,0.00575947429757296,0.0363261373421238 +0.00908313576965375,0.010857099611455,-9.62416955010243e-05,0,0,0.0237652769550503,0.007026687282097,0.00268279190148054,0.0721136369401366,0.007026687282097,0.00268279190148054,0.0721136369401366 +0.00682207177626708,0.00651793214460845,0.0167005815575086,0,0,-0.0210418570744869,0.0122825162948441,0.0127974416217731,0.0209812696549206,0.0122825162948441,0.0127974416217731,0.0209812696549206 +0.0119925146841776,0.0156259051741099,-0.00231436491919791,0,0,-0.0046976891800251,0.0167508154839333,0.0157789291270144,0.0397874822043177,0.0167508154839333,0.0157789291270144,0.0397874822043177 +0.00344001690745795,0.00115822506073463,-0.00314004966341942,0,0,-0.0226621145523984,0.024386726042398,0.0272261474330899,0.027261774488486,0.024386726042398,0.0272261474330899,0.027261774488486 +-0.000952789079715273,0.00338194322428009,0.0417811859509007,0,0,0.0374182857356991,0.024343615966398,0.0207027903067321,0.0437469034778276,0.024343615966398,0.0207027903067321,0.0437469034778276 +-0.0223468514973347,-0.0173838487214353,-0.0458281735818956,0,0,-0.0875690276194785,0.0148422648971322,0.0193704043160153,0.0691534984219205,0.0148422648971322,0.0193704043160153,0.0691534984219205 +0.0150894437526292,0.0127776848942571,0.00663636349881291,0,0,-0.0280253449474451,-0.00600599230193154,-0.00499897227436278,0.0180665371287918,-0.00600599230193154,-0.00499897227436278,0.0180665371287918 +0.0166439812872652,0.00185010884996012,0.0600238532228318,0,0,-0.00857334983193127,0.0119733008537183,0.00838806179848106,0.0133632501997898,0.0119733008537183,0.00838806179848106,0.0133632501997898 +0.00153984637860693,0.0132171795849585,-0.0249585206688508,0,0,-0.0901150847836737,0.0227031642997662,0.00895836889624474,0.0623523162736495,0.0227031642997662,0.00895836889624474,0.0623523162736495 +0.006490635672844,0.013718010287252,0.0120685843451126,0,0,-0.0108865179709584,0.00804831973280178,0.0225840352198055,-0.0326876787068406,0.00804831973280178,0.0225840352198055,-0.0326876787068406 +-0.00819210016510654,-0.00393825802397697,-0.0283958682036889,0,0,-0.0369103307226967,0.0238740444799946,0.0276843728846681,0.06520779115354,0.0238740444799946,0.0276843728846681,0.06520779115354 +0.0112656416148586,0.00548363362881838,0.00491667812983476,0,0,-0.0177715977986912,0.014061608653472,0.0150439132456738,0.0391750857677642,0.014061608653472,0.0150439132456738,0.0391750857677642 +0.00296392599937259,0.00130057712360229,0.0049039780456177,0,0,-0.0182902950617605,0.0233259113932156,0.0160201190486961,0.0398205884047564,0.0233259113932156,0.0160201190486961,0.0398205884047564 +-0.0150533718041177,-0.00914952507555709,-0.0652465858108126,0,0,0.0253027302389845,0.014826185626193,0.0147495837268216,0.0143300785614138,0.014826185626193,0.0147495837268216,0.0143300785614138 +0.0099788281041783,0.00299506762968984,0.0294517316198453,0,0,0.0122401682257124,-0.00392030917824234,0.00187080256998009,-0.0452425362793307,-0.00392030917824234,0.00187080256998009,-0.0452425362793307 +-0.0215772319120886,-0.0101724818192412,-0.0739816754911697,0,0,-0.0190845903931832,0.0109171150544211,0.00368187070819793,0.029418509915233,0.0109171150544211,0.00368187070819793,0.029418509915233 +0.0105703203226948,0.0149843426788376,-0.000491748031488608,0,0,0,-0.0189893780235271,-0.00597127432268762,-0.0805527956630216,-0.0189893780235271,-0.00597127432268762,-0.0805527956630216 +0.0105176275216715,0.00646319484254305,0.0198506762883215,0,0,0,0.0057331032071794,0.0084014483483369,-0.000527329971499475,0.0057331032071794,0.0084014483483369,-0.000527329971499475 +-0.00662025546895656,-0.00592392562162821,-0.00988284040338099,0,0,0,0.0169553531723172,0.0121777182318781,0.0360526816876743,0.0169553531723172,0.0121777182318781,0.0360526816876743 +9.88997089686072e-06,0.00131558065953113,-0.000584283386790935,0,0,0,0.00262180519928019,0.00399529378226252,0.00239081340099079,0.00262180519928019,0.00399529378226252,0.00239081340099079 +0.00603101332778889,0.00226524995035646,0.0619159506875896,0,0,0,0.00314611019402577,0.00395991356957126,0.00864967192032662,0.00314611019402577,0.00395991356957126,0.00864967192032662 +0.00392649987480843,-0.00428618746169893,0.0323622234220022,0,0,0,0.009228063548088,0.00492146954018642,0.0721405747340378,0.009228063548088,0.00492146954018642,0.0721405747340378 +0.00470307500880733,0.000824937121832355,0.0310580838014525,0,0,0,0.00876984561265876,-0.000648888992943285,0.0556637215528486,0.00876984561265876,-0.000648888992943285,0.0556637215528486 +0.00427084853416881,0.0106300895141418,-0.0311757031180603,0,0,0,0.00450198435787792,0.00184349081697418,0.025259360732927,0.00450198435787792,0.00184349081697418,0.025259360732927 +0.000865962488423915,-0.00200642169387938,-0.0129771501778253,0,0,0,0.0059259179497733,0.0122979123897618,-0.0266084953512492,0.0059259179497733,0.0122979123897618,-0.0266084953512492 +-0.0126913351921781,-0.00655441205429715,-0.0367882169058808,0,0,0,0.00994880446107543,0.00615701770088892,0.00701447584402742,0.00994880446107543,0.00615701770088892,0.00701447584402742 +0.00282447646277628,0.00139695042498341,-0.0113491257977718,0,0,0,-0.00844040044524483,-0.000983403826105646,-0.0400753689117069,-0.00844040044524483,-0.000983403826105646,-0.0400753689117069 +0.00997400333617397,0.00349091153310054,0.0481480789759622,0.000792087157118858,0,0,0.00198284993753578,-0.000620306267665452,-0.00635368731893682,0.00198284993753578,-0.000620306267665452,-0.00635368731893682 +0.00915457315359112,-0.00137779336623405,-0.00948299396237761,0.00864670355834392,0,0,0.00907661090954961,0.00381225575314347,0.036320014011135,0.00907661090954961,0.00381225575314347,0.036320014011135 +0.000921470334568487,0.00814537199129447,-0.0402669029950736,0.0112155267872508,0,0,0.0122233720748491,0.00228521922254494,-0.00647192690614097,0.0122233720748491,0.00228521922254494,-0.00647192690614097 +0.000731309589509371,0.00111012885589091,0.00482882422658655,0.0082108054590924,0,0,0.00132720874866521,0.012613160660532,-0.0730466137345614,0.00132720874866521,0.012613160660532,-0.0730466137345614 +0.0125535666764328,0.0131319913018996,0.00237808181637304,0.00685009520372316,0,0,0.00948669725737521,0.00902541604948913,0.0199702731052504,0.00948669725737521,0.00902541604948913,0.0199702731052504 +-0.00267898640108096,0.00163671630936747,-0.0451647939359205,0.00567104501320565,0,0,0.0195869973296782,0.0197905878756972,0.0183414880454758,0.0195869973296782,0.0197905878756972,0.0183414880454758 +-0.014436913017021,-0.0147530325258346,-0.0162898538415764,-0.000771109289596552,0,0,0.0122722070858609,0.0163582679885012,-0.0177376937229362,0.0122722070858609,0.0163582679885012,-0.0177376937229362 +0.00655750421499218,-0.00408102094159235,0.0329982707579098,-0.00292470176091886,0,0,-0.00242534118167283,-0.00304557322510863,0.00414128469539141,-0.00242534118167283,-0.00304557322510863,0.00414128469539141 +-0.00396362181290505,-0.0124197435537995,0.016275613287408,0.0051362796806378,0,0,0.0043569585746843,-0.00631216853058155,0.0300254500104274,0.0043569585746843,-0.00631216853058155,0.0300254500104274 +-0.00171564727469292,-0.00637509874848748,0.0241680987778977,0.00025579690397017,0,0,-0.00906341066046915,-0.0149476707737407,-0.0104140828556169,-0.00906341066046915,-0.0149476707737407,-0.0104140828556169 +0.00285650906851789,0.00328479164128637,0.0155810879068708,0.0161250377609907,0,0,-0.0135678253568596,-0.0160469268414098,-0.0134426345724257,-0.0135678253568596,-0.0160469268414098,-0.0134426345724257 +0.00014795533467785,-0.00972687709052871,0.0634419421950642,-0.000445189076545743,0,0,-0.00949148940469318,-0.00806827000516857,-0.0134619436025948,-0.00949148940469318,-0.00806827000516857,-0.0134619436025948 +0.00228218496435269,0.00183575164630041,0.0101598624059466,0.00197824237998745,0,0,-0.00592156081871665,-0.0160210840282856,0.0544076742796461,-0.00592156081871665,-0.0160210840282856,0.0544076742796461 +0.0122506695212235,0.0111175710914274,0.0482932553323392,-0.00295737056298833,0,0,-0.00928055074964569,-0.00866789671637777,-0.012760762931674,-0.00928055074964569,-0.00866789671637777,-0.012760762931674 +0.00380105188947332,-0.00159057544425835,0.0190714977159966,0.00194515463960275,0,0,0.00566807374744972,0.00456707861839477,0.0364058542566385,0.00566807374744972,0.00456707861839477,0.0364058542566385 +0.00302327217314359,0.000568267536668417,-0.00420106786980815,0.00881222074667875,0,0,0.00789083461491536,0.00155189269614903,0.0362294393344772,0.00789083461491536,0.00155189269614903,0.0362294393344772 +0.0117823504742496,0.0104302754389301,-0.0097645861404751,0.00866391199972417,0,0,0.00431454228799121,0.00279162568782202,-0.00680224522248872,0.00431454228799121,0.00279162568782202,-0.00680224522248872 +0.00622049366924403,0.00163463777265222,0.0246787134877702,0.00898469011184499,0,0,0.0134934204723151,0.01307731007579,-0.0151296070191345,0.0134934204723151,0.01307731007579,-0.0151296070191345 +0.00407371199773037,0.00865889173440764,-0.0377157052117151,-0.00789553219903045,0,0,0.0153878296717641,0.0119786682779314,0.0287280700059582,0.0153878296717641,0.0119786682779314,0.0287280700059582 +0.00143857621794596,-0.000663933854910976,0.013834699301938,-0.00826172225897698,0,0,0.013148429168403,0.0181932278985707,-0.0245292038241904,0.013148429168403,0.0181932278985707,-0.0245292038241904 +0.00402107550607764,0.00508634323754679,-0.0250625508709363,-0.00750353445831655,0.000608648077795749,0,0.0147389327322705,0.0123083014488186,0.0360008208321752,0.0147389327322705,0.0123083014488186,0.0360008208321752 +0.00486901830802765,0.00651035710008142,0.00655396874396014,-0.00207919407670329,-0.00311060912997806,0,0.013620353281583,0.0144889347075915,-0.00513473571998773,0.013620353281583,0.0144889347075915,-0.00513473571998773 +-0.00413646081126358,-0.00708205378655898,0.0236581211002901,0.00422583372113237,-0.0119073738196787,0,0.0154524130161692,0.0174201771670083,0.0205700904602811,0.0154524130161692,0.0174201771670083,0.0205700904602811 +0.000678899266336646,0.00180649634817833,-0.00298646142300154,0.00839622994011547,0.00416790160054294,0,0.00932990761283102,0.0053293844083888,0.0555557587627783,0.00932990761283102,0.0053293844083888,0.0555557587627783 +0.00282199564881628,0.0134858847526703,-0.0506885360064565,-0.00566619410295114,0.00899355802696429,0,0.00545927314656939,0.00596135270338142,0.0141944780338978,0.00545927314656939,0.00596135270338142,0.0141944780338978 +0.00711991874964903,0.00452792696126009,0.0126949382703635,-0.00417321178025706,-0.0118340244813967,0,0.00758194448304825,0.0176544400260566,-0.037094212525428,0.00758194448304825,0.0176544400260566,-0.037094212525428 +-0.00560463318705216,-0.00333105494277089,-0.0550468817094191,0.018296599364549,0.00517979512612106,0,0.0202888760392077,0.0159847266861867,0.044870660507882,0.0202888760392077,0.0159847266861867,0.044870660507882 +0.0066977063537918,-0.00357394645328043,0.021585230597666,0.00306773596329437,-0.00502928008560634,0,0.00668842702669458,0.00921434687735503,-0.0337110566537137,0.00668842702669458,0.00921434687735503,-0.0337110566537137 +0.000698033141718012,-0.00476711765253579,0.0214294379264753,0.00021693530113152,0.00465187758648369,0,0.0129225009914907,0.00337210309808775,0.0231078873229904,0.0129225009914907,0.00337210309808775,0.0231078873229904 +-0.000103515341328624,-0.00325855758294162,-0.0047665972040698,-0.000978156086920595,0.00512322099925529,0,0.00264915065714661,-8.42181353808017e-05,0.00426699936414949,0.00264915065714661,-8.42181353808017e-05,0.00426699936414949 +0.0076130576521187,0.00777166362652842,0.012055225661071,0.00130771844782152,0.0020926677365874,0,-0.000369427596851887,-0.00267791422186142,-0.0117183641359284,-0.000369427596851887,-0.00267791422186142,-0.0117183641359284 +-0.00470986611068025,-0.000763526620081286,-0.0193008182529213,0.00204838971884591,0.00323195410318949,0,0.0051140304015842,0.00653920494481791,-0.00316860540856396,0.0051140304015842,0.00653920494481791,-0.00316860540856396 +-0.0016497204531941,-0.00371878844659652,-0.00931717540101431,0.00258558010371978,-0.00124547935800322,0,0.000162059735790754,0.00390341063237031,-0.0100332621829277,0.000162059735790754,0.00390341063237031,-0.0100332621829277 +-0.0093603261428562,-0.0104133408762728,-0.00472416552946885,0.00182834305316924,-0.000183911769503518,0,0.00138780840642595,-0.00155215411093288,0.00184493831787583,0.00138780840642595,-0.00155215411093288,0.00184493831787583 +0.00690176186824522,0.0138214902537921,0.00819991858099411,-0.00992592298483619,-0.0120993054265935,0,-0.0107820085955072,-0.0108559272237584,-0.0148060061525028,-0.0107820085955072,-0.0108559272237584,-0.0148060061525028 +0.00946931982808689,0.0115147627231266,0.0252499326616079,-0.000451647963066681,0.00484603581539252,0,-0.00140861014885158,0.00581830254572461,-0.00886544402510545,-0.00140861014885158,0.00581830254572461,-0.00886544402510545 +0.0016595716407329,-0.000969050029725112,-0.000561154714898107,0.00399965742379364,-0.000966812000209924,0,0.0143271495855103,0.0142050249224705,0.0499493027053232,0.0143271495855103,0.0142050249224705,0.0499493027053232 +-0.0087526210553408,-0.0104195982015009,-0.0233801892166041,0.00732768983722608,-0.00357577305568311,0,0.0132391348421552,0.00903166739933246,0.0348673975824362,0.0132391348421552,0.00903166739933246,0.0348673975824362 +0.00813351760878301,-0.000495092940044331,0.0835302999126589,-0.00623288288364627,0.00302898665312166,0,-0.00177851984037474,-0.00302898665312166,-0.012745676021469,-0.00177851984037474,-0.00302898665312166,-0.012745676021469 +-0.0125537772160059,-0.00444107026007974,-0.047797637253143,0.00660567667216048,0.00630211892059683,0,0.00547140151773641,-0.00225569708844829,0.0709206876160389,0.00547140151773641,-0.00225569708844829,0.0709206876160389 +-0.0092585132256015,-0.00235656490615405,-0.0741364085708931,0.000841781573458161,-0.00222746497632718,0.00321174830676642,-0.0133776917711511,-0.00535665004109911,-0.0427643569474558,-0.0133776917711511,-0.00535665004109911,-0.0427643569474558 +0.00641321788173908,0.00665202576620699,0.0282421483137717,-0.00324400734836412,0.0142477860366564,-0.0373938571802441,-0.0133032262869737,-0.00781066939841422,-0.0726252986293552,-0.0133032262869737,-0.00781066939841422,-0.0726252986293552 +0.00684294030265652,0.00414297608725882,0.0104617885016223,0.00582872428795187,0.00308504497291409,-0.00672717099854627,-0.000424335140524292,0.000507960350492031,0.00584015303967311,-0.000424335140524292,0.000507960350492031,0.00584015303967311 +-0.0046829675894827,0.00898772156893484,-0.070785533469066,-0.0113214190490772,0.00345350760086995,-0.0283135555135059,0.00745869328051213,0.00418416884918769,0.0165741559434032,0.00745869328051213,0.00418416884918769,0.0165741559434032 +0.0034496029170804,0.00941336194998251,0.00540181287624293,0.00237950059597401,0.00531773711555805,-0.0233326279054038,-0.00159039710077123,0.0127528112179217,-0.0699352561051747,-0.00159039710077123,0.0127528112179217,-0.0699352561051747 +0.00483457454834728,0.00982683973863323,-0.0227428001971588,-0.000363377860426019,-0.00682250949000196,0.00306632800675556,0.0127239025970048,0.0165774548267344,0.0319203639598493,0.0127239025970048,0.0165774548267344,0.0319203639598493 +0.000530777838942579,0.00387945724473194,-0.0042899580758014,0.00406127713873343,-0.00125619427053848,0.0725736806355536,0.0181660581499478,0.0209033868607871,0.019562168895467,0.0181660581499478,0.0209033868607871,0.019562168895467 +0.00502430931485238,-0.000194348246674997,0.0202083041581406,0.00291816253411033,-0.00123232859968869,0.0321929390150142,0.0166096515714123,0.0187623082983128,0.0328846686220718,0.0166096515714123,0.0187623082983128,0.0328846686220718 +0.00743199675542431,-0.00387213913037733,0.0737115129198262,0.000671896384325499,0.0027513079171419,0.0405964957060475,0.0197880635582273,0.0129789224365955,0.0595144639792081,0.0197880635582273,0.0129789224365955,0.0595144639792081 +0.0064710201812489,0.0064093033729246,0.0426784656258989,0.00161689010558504,0.00174213824434909,0.00875745569837057,0.017593275704539,0.00678629400292897,0.0907854231796456,0.017593275704539,0.00678629400292897,0.0907854231796456 +-0.00144071911640617,-0.00825536392038127,0.0170124624604081,0.00472087006475395,0.00136188647972736,-0.0220531882626569,0.0123968934378341,0.0128553079389995,0.0552130958222003,0.0123968934378341,0.0128553079389995,0.0552130958222003 +0.00386414970379786,0.00377340726907366,-0.0178561532639461,0.000330251054115399,0.00719604555323717,-0.0324469134385132,0.00934126553028207,0.000472330589391655,0.0554250541398244,0.00934126553028207,0.000472330589391655,0.0554250541398244 +0.00950143459079138,0.00837695877318414,0.04092779354022,0.00356821197728553,0.00758528462739491,0.00440264182207496,0.00453988345058985,0.00550657848575511,-0.0209450551182716,0.00453988345058985,0.00550657848575511,-0.0209450551182716 +0.00824523867428377,0.00462699655373216,0.024973699225157,-0.0037491614546969,0.00414308630653781,-0.0732553420571081,0.0131415639244221,0.0126845324716741,0.039729580980072,0.0131415639244221,0.0126845324716741,0.039729580980072 +0.00210357541729717,-0.00170766803650198,-0.043870864841747,-0.00999880802824422,-0.00468039948504873,-0.036175504718246,0.0184300303967446,0.013733060027319,0.0532898409684366,0.0184300303967446,0.013733060027319,0.0532898409684366 +-0.00279423903119538,-0.00285788333452517,0.0369790725865118,0.00259493816300594,0.00974380287334894,0.010991671809288,0.0129049752015693,0.00907821275962342,-0.0221027669532115,0.0129049752015693,0.00907821275962342,-0.0221027669532115 +-0.00910906029662435,-0.00644230676192816,-0.0188621532320509,0.00466439113399764,-0.00325620433892641,0.0151869773171139,0.00289655589253756,0.00545384004612241,0.0231641631043335,0.00289655589253756,0.00545384004612241,0.0231641631043335 +0.00896933854021801,0.0154615231758745,-0.0447035356890072,0.0138394835136161,0.0116679214627104,-0.00698033544738817,-0.00427641557180749,-0.00335636520591073,0.00492341419653517,-0.00427641557180749,-0.00335636520591073,0.00492341419653517 +-0.00155174467745542,0.00906109242585614,-0.0636651684349884,-0.00272322388366068,-0.00198297135327094,0.0202126284914854,0.00673240209116802,0.0125748370990196,-0.0426551329728646,0.00673240209116802,0.0125748370990196,-0.0426551329728646 +-0.00628657932106183,-0.00568031762127257,0.0256699272704941,0.00230370841349602,-0.000514914128244719,0.0205108531238804,0.00729148003748415,0.0178526002516778,-0.0523636314074378,0.00729148003748415,0.0178526002516778,-0.0523636314074378 +0.00116058741675872,-0.00428214082073762,0.0100619747357528,-0.00189587743578329,-6.54550744575118e-05,-0.0511610319819264,0.00671767139589846,0.00606332051759758,0.052710607521909,0.00671767139589846,0.00606332051759758,0.052710607521909 +-0.00128642479243657,0.0048701066709663,-0.0339940954608201,-0.00125622846667173,-0.00112400414517466,-0.00732040438615116,0.00678516420653775,-0.000398177246585206,0.0374163913687457,0.00678516420653775,-0.000398177246585206,0.0374163913687457 +0.00382548062102456,0.00735894195702531,0.0133873728810687,0.0120671289454966,0.00750028883237513,0.0419987683770586,-0.00148921228537497,0.00580781354980437,-0.040599838689195,-0.00148921228537497,0.00580781354980437,-0.040599838689195 +0.010301626196401,0.0134545082443123,0.00103729655315631,0.00070964068893513,0.000506724811481171,-0.0229687107895733,0.00792590214019757,0.0105718489807392,0.0239765440072632,0.00792590214019757,0.0105718489807392,0.0239765440072632 +-0.0176747269850956,-0.00807351328021733,-0.0522307389020891,-0.00194516589942196,-0.0180059285273825,0.0448275608212244,0.0189109656762506,0.0204061086760426,0.0302571228295715,0.0189109656762506,0.0204061086760426,0.0302571228295715 +0.00310819990147776,0.00686846296727032,0.00222357473475129,0.00700310767396931,0.0099902640986725,-0.0433015943197603,-0.00184375485644399,0.00657167633044102,-0.0146915343042025,-0.00184375485644399,0.00657167633044102,-0.0146915343042025 +0.00184293059170689,0.00298109238673326,0.00615203805319084,0.00424984875971248,-0.00267428091301346,-0.00478798582996645,0.00851166459648353,0.00992155509761515,0.0288228760755161,0.00851166459648353,0.00992155509761515,0.0288228760755161 +0.00119179420221832,-0.000454868478111534,0.00792727793785491,-0.00480381588791851,-0.00181335854909054,-0.0265694575113535,0.00995339643247968,0.00967792375552828,0.0329729117770493,0.00995339643247968,0.00967792375552828,0.0329729117770493 +-0.00698092021145556,-0.0109242362082604,-0.000361444028768009,0.00423014980840491,0.00527402928642788,-0.0178115820511961,0.00903420136017147,0.00642750331227367,0.0309684109841943,0.00903420136017147,0.00642750331227367,0.0309684109841943 +-0.00967699559201108,-0.00345888207400284,-0.0451292203206149,0,0.0095430277227454,0,-0.00182737754794801,-0.00587301379735339,0.0112329325150201,-0.00182737754794801,-0.00587301379735339,0.0112329325150201 +-0.00520180995889583,0.00704992190495911,-0.0588810804979895,0,0.0115356567607238,0,-0.0141620926734998,-0.00706829870203706,-0.0585696540625415,-0.0141620926734998,-0.00706829870203706,-0.0585696540625415 +0.0117334110541513,0.00652708848552081,0.0340372635402882,0,0.00950090000245543,0,-0.0109809363955828,0.000807776976407076,-0.069089417411562,-0.0109809363955828,0.000807776976407076,-0.069089417411562 +0.00381473718408171,0.00919204375150813,0.0469979901950657,0,-0.000361627780522689,0,0.0119957490935837,0.00523884981679696,0.0415531010083134,0.0119957490935837,0.00523884981679696,0.0415531010083134 +-0.00888353242048377,-0.00714716169106327,0.000765022930509645,0,-0.00636978369933466,0,0.00788585439336303,0.0142448835559806,0.0488995789182221,0.00788585439336303,0.0142448835559806,0.0488995789182221 +0.0022748128141211,0.00111714884538728,-0.0192227001438947,0,0.00209640552398623,0,0.00342598555684405,0.00119799415737769,0.0566213022551417,0.00342598555684405,0.00119799415737769,0.0566213022551417 +-0.00652493035465033,-0.00966440870715945,-0.00269598549096703,0,0.00215235033013285,0,0.00425415512510495,0.00163688303942665,0.000285235622935896,0.00425415512510495,0.00163688303942665,0.000285235622935896 +0.0172028582737262,0.011038748218179,0.0201155046422535,0,-6.75505959956239e-05,0,-0.00561271689700146,-0.00773287427646473,-0.00946339049038217,-0.00561271689700146,-0.00773287427646473,-0.00946339049038217 +0.00669730899607837,0.00499330677424891,0.0147124094142339,0,-0.00871620142385712,0,0.0110775463189436,0.00586280896074623,0.0017927482635834,0.0110775463189436,0.00586280896074623,0.0017927482635834 +0.00795002423606136,-0.00873694699739453,0.0716336834107378,0,-0.00320715276122022,0,0.010448812741797,0.0108044407194309,0.00421225786015374,0.010448812741797,0.0108044407194309,0.00421225786015374 +0.00547199629961236,0.00376299171313856,0.0223010609766399,0,0.00446897038424818,0,0.0160013474812336,-0.00066379788751323,0.0847754082069749,0.0160013474812336,-0.00066379788751323,0.0847754082069749 +-0.00511839976149637,0.00193240724855482,-0.0378880769624291,-0.00123098487593703,-0.00662092773978805,0.031265787274233,0.00514342716557453,0.00617180912750214,0.00630261387898458,0.00514342716557453,0.00617180912750214,0.00630261387898458 +-0.00204979294189627,0.00142215505239075,-0.0145746599511306,0.0112505235913082,0.0107954717347662,0.00348345156137978,-0.000333813844625517,0.00625962242161702,-0.0259655047952888,-0.000333813844625517,0.00625962242161702,-0.0259655047952888 +0.000621852004671002,-0.00418601600708998,-0.00698516903892438,0.00791735230255663,0.000996219092000435,0.0630153301104892,0.00265200296248592,0.00491140459132377,0.00077813775257859,0.00265200296248592,0.00491140459132377,0.00077813775257859 +0.0056034972697645,0.00609363313398555,0.0540426833934506,0.00577585992023188,0.0120362072143202,0.00505584574077878,0.00448955793964857,-0.00104808523328938,0.00522871001554349,0.00448955793964857,-0.00104808523328938,0.00522871001554349 +0.000779280146170304,0.00657491575785458,-0.0308179257895762,0.0061278752759167,0.00547865463679857,-0.00643701272700933,0.00434075331446786,0.00665992648199383,0.0375968409689721,0.00434075331446786,0.00665992648199383,0.0375968409689721 +0.00435275567936666,0.00229016902116863,0.0328624353603315,-0.00497675355909797,-0.00636204319431612,0.0233829174840622,0.00681289153683649,0.0103935155019521,-0.00015650988099784,0.00681289153683649,0.0103935155019521,-0.00015650988099784 +0.000415533227180925,0.0060977209720269,-0.029571151205078,-0.00598258159054771,0.000272213218977154,-0.0462083840986224,0.0123600788370056,0.00927757011988132,0.0540300043223657,0.0123600788370056,0.00927757011988132,0.0540300043223657 +4.06222289638936e-05,0.00392326945018349,0.00173317643588858,-0.00290288659732326,-0.00224498955729163,0.00572995534181718,0.0081531277887423,0.0130485110398422,-0.00643463888199526,0.0081531277887423,0.0130485110398422,-0.00643463888199526 +-0.00120709300070914,-0.00086073710709051,-0.0132402174745389,0.00313018548584946,-0.00384132567634781,0.0246450886733528,0.00998928150463204,0.0126983180344455,0.0267798188479105,0.00998928150463204,0.0126983180344455,0.0267798188479105 +-0.00227687932107665,-0.00525531920332514,0.0263088619209854,0.000655033896246712,0.0034257748453345,0.022805705335976,0.00903321956628661,0.00764743102774731,0.0194351142311995,0.00903321956628661,0.00764743102774731,0.0194351142311995 +-0.00545918841462745,0.00395044556656658,-0.0242560282175364,0.00995441082918956,0.00678905050705554,0.0188831022092155,0.00363128797243231,0.000604761499726701,0.0377669267822243,0.00363128797243231,0.000604761499726701,0.0377669267822243 +0.0083715960976703,0.00360958948432173,0.0357935038426718,0.0108741413208203,0.00342565614612492,-0.00175674108791923,-0.00445373736445297,0.00455396388601689,-0.01638464248133,-0.00445373736445297,0.00455396388601689,-0.01638464248133 +-0.00256852485616272,-0.00816119493718625,0.0153818897954666,-0.00127883787339764,0.00482158666117877,-0.0160831168524948,0.0123236153663602,0.00499752708309059,0.0616498478586313,0.0123236153663602,0.00499752708309059,0.0616498478586313 +0.000415447163119765,0.00328539246412558,-0.00975560418253103,0.000708326317090502,0.00465696168368292,-0.0141854170255427,0.00174191368974663,-0.00349045041955721,0.0242980741510517,0.00174191368974663,-0.00349045041955721,0.0242980741510517 +0.00816113327061348,0.0100066238530122,0.0564377243085122,0.00429348227058945,0.00658182890741465,-0.00836972808019337,-0.00214615772793458,0.00157890904644709,-0.0188921096533596,-0.00214615772793458,0.00157890904644709,-0.0188921096533596 +0.00161732305772899,0.00311332183462348,-0.0033944757763314,-0.000913982446699658,-0.00166085811311091,-0.0710484905607967,0.0092833709090589,0.0105581382746735,0.0613762608372284,0.0092833709090589,0.0105581382746735,0.0613762608372284 +-0.00306910928991944,0.000101143520043943,-0.0274450282388272,-0.00400790869418656,-0.00275215418513801,-0.0105140156642862,0.0109558899290135,0.00976789489319201,0.0382820385406057,0.0109558899290135,0.00976789489319201,0.0382820385406057 +0.00670738154336562,-0.000624670187762552,0.0116899794617982,0.00196300055945577,0.00191173693600922,0.0179485792404541,0.00486372223880303,0.0072002014878546,-0.00486071373412567,0.00486372223880303,0.0072002014878546,-0.00486071373412567 +0.00210973253799555,-0.00681193646757287,0.0655105893470192,0.00501516794052138,0.00691050280461501,0.0267534079593356,0.0121249475254953,0.00433601112205496,0.0237449720504722,0.0121249475254953,0.00433601112205496,0.0237449720504722 +-0.00140838563127994,0.00303220405356211,-0.00442146911364764,0.00368176705254538,0.00782444900241895,-0.00601289803424444,0.00497909347766604,-0.00186812684290447,0.0552069596346945,0.00497909347766604,-0.00186812684290447,0.0552069596346945 +0.0006228222982328,0.0122312845375945,-0.0465985239933555,0.0130817953667601,0.00566990321916701,0.000564997090681345,-0.00222511196121064,0.00245272142318169,-0.00328729242753265,-0.00222511196121064,0.00245272142318169,-0.00328729242753265 +0.00518935056205653,0.000492391494621008,0.0316784750335713,0.00479763330980509,-0.00291005410281454,0.0538106758716222,0.00286408713032971,0.0129286588800123,-0.0307317392730031,0.00286408713032971,0.0129286588800123,-0.0307317392730031 +0.0031159265282555,0.00747534001634823,-0.0169307479197843,-0.000331505832882097,-0.00420200963166658,-0.000386896773268912,0.0150491235909802,0.00823727708893181,0.062285341573552,0.0150491235909802,0.00823727708893181,0.062285341573552 +0.00443243792456662,0.00307314235763233,-0.0153328083509798,0.00260177304533039,0.00239337791041358,0.0206676794358543,0.00987124949337469,0.0144705317468522,-0.00304509949809661,0.00987124949337469,0.0144705317468522,-0.00304509949809661 +0.00427699612107725,0.00551697547408006,0.0161219358460106,-0.00782747343646015,-0.00157904831648748,0.00422518310908315,0.0154700474782242,0.0129518416554906,0.0116194690960117,0.0154700474782242,0.0129518416554906,0.0116194690960117 +-0.00598134394365351,-0.008617081960769,0.0228598733050342,-0.00435324181813697,-0.00595125171310751,0.0212676152247865,0.0137556176043637,0.0158552155591802,0.0253624630915691,0.0137556176043637,0.0158552155591802,0.0253624630915691 +0.00941196257906354,0.00665686972922088,0.0160076852367617,0.00248366877145579,0.0145757313564891,-0.0679213498221406,0.00646834035031851,0.00248332325562989,0.0558831271682413,0.00646834035031851,0.00248332325562989,0.0558831271682413 +0.00969243887360754,0.00404374368851461,0.0513914258420113,0.000990345605044192,0.00454597178685677,-0.0024770468601515,0.0121180212604048,0.00863155969483455,0.0307270665104506,0.0121180212604048,0.00863155969483455,0.0307270665104506 +-0.00146938134038399,0.00348353132079456,0.00836534205911713,0.000806084550790418,0.00420555201660505,-0.0304516857606173,0.0163554898187177,0.0110112903156439,0.0621040783128758,0.0163554898187177,0.0110112903156439,0.0621040783128758 +-0.00168288537430323,-0.0034295102269017,-0.0206085926026787,0.00139170438112972,-0.00240091195840896,0.00151476225015371,0.00747709133638137,0.0122114447314079,0.0294858081685965,0.00747709133638137,0.0122114447314079,0.0294858081685965 +-0.000638501042482196,0.00335252075827997,0.0157592109421693,-0.000705697473307705,0.0114935806166298,-0.0228506643718314,0.00849235765985609,0.00412801895650571,0.0193533822810191,0.00849235765985609,0.00412801895650571,0.0193533822810191 +0.0107459960633647,0.00064781811210496,0.0613101486996699,0.0102791888297581,0.00462920674791362,0.0104883721776591,0.00235725477853384,0.00731325310270031,0.0143033015937826,0.00235725477853384,0.00731325310270031,0.0143033015937826 +-0.00170819892548104,0.00706825055185292,-0.0606072073101924,0.000804733530435797,0.00933550926270261,-0.0556808707417743,0.0169971934592017,0.00467436855235864,0.0905549885995958,0.0169971934592017,0.00467436855235864,0.0905549885995958 +0.0101888606013177,0.00840327448865956,0.0427634366722845,0.000114400313161159,0.00275062240744927,0.0409694857118551,0.00249607503602352,0.0123062417453174,-0.0550297735736489,0.00249607503602352,0.0123062417453174,-0.0550297735736489 +-0.00498987553673337,-0.000455889891769175,-0.0177712888826028,0.000334228243917538,-0.00680632416876072,0.00593713510926377,0.0189843573818954,0.0161608052109962,0.0610006936590766,0.0189843573818954,0.0161608052109962,0.0610006936590766 +-0.00344648763839018,0.00949035771073065,-0.0453975287343747,-0.00714725277495875,-0.00181666637086571,-0.0315423686026445,0.00798298627515125,0.0115554029282342,0.0157771596796243,0.00798298627515125,0.0115554029282342,0.0157771596796243 +-0.0164297318792945,-0.0134687077210028,-0.0747236161550665,0.000108987613084409,-0.00828780620074842,0.0164250083752349,0.00579101955156892,0.0170902902158904,-0.015977690376259,0.00579101955156892,0.0170902902158904,-0.015977690376259 +0.00483496789467384,3.83632553101125e-05,0.0448189936475988,-0.000270364528955474,0.00711510767839281,-0.0247560633645345,-0.0030323488510766,-0.00313005925491412,-0.029592937654876,-0.0030323488510766,-0.00313005925491412,-0.029592937654876 +0.00218524480055755,0.00283382590289467,0.00490148383299737,0.00471022913940207,0.00557434689720425,-0.0314343096788777,0.00182575856360305,-0.00181092238288259,0.0282204457597755,0.00182575856360305,-0.00181092238288259,0.0282204457597755 +-0.000349207838546343,0.00270885908607114,-0.0395290611040392,-0.00387113400981047,0.00246917791928193,-0.0255560454903813,0.00112571794894915,0.00192073491455479,0.00424186153287044,0.00112571794894915,0.00192073491455479,0.00424186153287044 +0.00715793302246596,0.00156965951413635,0.0258071693794314,0.00227832442595776,0.0116514168654618,-0.0261055260623426,0.00124743997778588,0.00389119253980044,-0.0332601067538112,0.00124743997778588,0.00389119253980044,-0.0332601067538112 +-0.00292900052166603,0.00202510938295652,-0.0412171959602785,-0.000957128402929731,-0.000980740871455874,0.0100921564020274,0.00950911132350908,0.00441745156112365,0.0229389594239696,0.00950911132350908,0.00441745156112365,0.0229389594239696 +0.0021241107232484,0.00233197454519672,0.0183423581888295,0.00500919087011308,-0.00125900657822998,0.0550429905789828,0.000282819381937536,0.0063357641022085,-0.0431254226524384,0.000282819381937536,0.0063357641022085,-0.0431254226524384 +0.00249189248197052,0.00183408909123059,0.0261482066193152,-0.00142685375865095,0.000435693092082145,-0.0222097994066846,0.00641147627215512,0.00631831082506083,0.0242796920997815,0.00641147627215512,0.00631831082506083,0.0242796920997815 +-0.00214228339070194,0.00335739293406597,-0.0253603136357261,-0.00748087968309061,-0.00271125646742617,-0.0434359863725693,0.00768730122160885,0.00625687589168108,0.04271267299254,0.00768730122160885,0.00625687589168108,0.04271267299254 +0.00598082774364347,0.00280448970098384,-0.0154008431792178,0.000745093726106045,-0.00261876954818434,0.00479384141624241,0.00329842408836905,0.00776600764344075,-0.00483685975971206,0.00329842408836905,0.00776600764344075,-0.00483685975971206 +0.00516261450246022,0.00871451993763493,-0.0178406142613566,-0.00410755150815799,0.00161655592124834,0.00175148974838601,0.01205190689098,0.00763590437205384,0.00405411762220477,0.01205190689098,0.00763590437205384,0.00405411762220477 +-0.00960985407447228,-0.00765013213016535,-0.00854449278225838,0.00626649565433383,-0.00178222711378494,0.0587404759645139,0.0103558024206956,0.0156286860468268,-0.0230918613394935,0.0103558024206956,0.0156286860468268,-0.0230918613394935 +-0.00406358949258523,0.0132832905664989,-0.0397580119988499,0.00708187912183813,0.00222535373067169,0.023710291963861,0.00187261855669772,0.0032815257716504,0.0126085384701047,0.00187261855669772,0.0032815257716504,0.0126085384701047 +-0.00253370566197115,0.00336661907246683,-0.0518226183638579,0.00821945660702752,-0.00571845207048644,0.0316716917646608,-0.0012020958961181,0.0151971960250303,-0.0264642876579861,-0.0012020958961181,0.0151971960250303,-0.0264642876579861 +-0.000993208246816915,-0.00220236033450175,0.0129349128927921,-0.002716190340108,-0.00571222189972622,0.0392935432047881,0.00979838077215906,0.0111020510320278,0.00322334643034815,0.00979838077215906,0.0111020510320278,0.00322334643034815 +0.00608012237812874,0.0084053125851512,-0.00352321277030172,-4.00643904243693e-05,0.00265609286658214,-0.016078386728944,0.00735858754028884,0.00586558555873023,0.0289602552065148,0.00735858754028884,0.00586558555873023,0.0289602552065148 +-0.00558772138957023,-0.00372177092892635,-0.0214304051077624,-0.00226015101798696,-0.00133459245612437,0.0101785933954035,0.0108990166798859,0.0127699291541419,0.0102248207878201,0.0108990166798859,0.0127699291541419,0.0102248207878201 +0.00364931469820641,0.00213738051228183,0.0328004397886486,0.00571269225595356,0.00211197988472732,0.0198814530694088,0.00421595241545997,0.00534782032505279,0.00114016377945674,0.00421595241545997,0.00534782032505279,0.00114016377945674 +0.00692350498599406,0.00791342092151237,-0.0256394039014908,-0.00346585894866368,0.00367833146607206,-0.0600097268130587,0.00771893028598047,0.00589832873877964,0.0419557249428754,0.00771893028598047,0.00589832873877964,0.0419557249428754 +-0.0064736937892743,-0.00675617139611432,-0.0194730208006319,-0.00447238137843972,-0.00506688658059105,0.0180048621717474,0.0120399202058507,0.0121642930610083,-0.00704874899806967,0.0120399202058507,0.0121642930610083,-0.00704874899806967 +0.0133919859241443,0.00787035034037839,0.0507984972301414,0.0028760727660134,-2.99695287364465e-05,0.0461062598133621,0.00227857701190795,0.00260965677839175,-0.01088880688092,0.00227857701190795,0.00260965677839175,-0.01088880688092 +-0.00046147505235769,0.0100425793933334,-0.0309273651130429,-0.00204706817110089,0.00101443135908833,-0.0349200132096591,0.015079893625459,0.0099618412111637,0.0493870754347364,0.015079893625459,0.0099618412111637,0.0493870754347364 +-0.0204102388564909,-0.00823687041586423,-0.0922660320238076,-0.00384274803458474,-0.0127594027363464,0.0142652432564516,0.00743833741591316,0.0181307478296836,-0.0158003847697155,0.00743833741591316,0.0181307478296836,-0.0158003847697155 +-0.0026020784830879,-0.00126201197026255,-0.0189843532505661,0.00658119606517945,0.00309425411169814,0.0339586822568108,-0.00631476983362642,0.00305173476932699,-0.0480367698342428,-0.00631476983362642,0.00305173476932699,-0.0480367698342428 +0.0155432998612789,0.0143994096861372,0.00590472418105405,0.00774746000566409,0.0105159389994618,-0.0213063536234885,-0.000465414946848732,-0.000566370540357327,-0.00766553850771622,-0.000465414946848732,-0.000566370540357327,-0.00766553850771622 +0.0152366033034612,0.00669313904214949,0.0423370183835036,-0.0119357456327996,-0.00507349658013283,-0.017110350632677,0.0149343052509912,0.0141266681830351,0.00159001210839066,0.0149343052509912,0.0141266681830351,0.00159001210839066 +-0.00998290835022628,-0.00996655532069993,0.0245797501224767,0,8.36066341834979e-312,0,0.0255275644597414,0.0176510745803112,0.0536543123469757,0.0255275644597414,0.0176510745803112,0.0536543123469757 +0.00725616778696739,0.00867723443579845,0.011275299893447,0,0,0,0.00333985903405928,0.00463692932017353,0.039937616913129,0.00333985903405928,0.00463692932017353,0.039937616913129 +0.00226611449165174,0.00479613279985532,-0.000654269372078851,0,0,0,0.0117499682921923,0.0111813286744789,0.0378128199125603,0.0117499682921923,0.0111813286744789,0.0378128199125603 +0.00124105465431452,0.00629147266473625,-0.0206808330076605,0,0,0,0.0112920134603495,0.0128183532170453,0.0250327382217563,0.0112920134603495,0.0128183532170453,0.0250327382217563 +0.00204106406141737,-0.00397391277443082,0.0620414744560336,0,0,0,0.0113950976888846,0.0152323810969511,0.00751057593165059,0.0113950976888846,0.0152323810969511,0.00751057593165059 +0.0111477169710336,-0.00376372118783106,0.0727494345688249,0,0,0,0.0138031483513906,0.00650349608443069,0.0920177753379174,0.0138031483513906,0.00650349608443069,0.0920177753379174 +0.00440107824217407,0.00547211422255853,0.0210135410470447,0,0,0,0.0172887357630261,0.00152309838431834,0.0968670828910374,0.0172887357630261,0.00152309838431834,0.0968670828910374 +-0.00356707137775524,-0.0091624960237635,0.0214775230118643,0,0,0,0.00606313542597757,0.00910294711676301,0.0154128250956355,0.00606313542597757,0.00910294711676301,0.0154128250956355 +-0.0123194033646422,-0.00378100347268194,-0.0397420775756489,0,0,0,0.00380641965821521,-0.00328647833806789,0.0467268142493098,0.00380641965821521,-0.00328647833806789,0.0467268142493098 +-0.0152547916954387,-0.00379832917602331,-0.0769850016864234,0,0,0,-0.0144045933162754,-0.00523080685179021,-0.0445523140317765,-0.0144045933162754,-0.00523080685179021,-0.0445523140317765 diff --git a/statsmodels/tsa/statespace/tests/results/results_smoothing2_R.csv b/statsmodels/tsa/statespace/tests/results/results_smoothing2_R.csv new file mode 100644 index 0000000..008f318 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_smoothing2_R.csv @@ -0,0 +1,203 @@ +"r1","r2","r3","detN","m1","m2","m3","detPmu","v1","v2","v3","F1","F2","F3","a1","a2","a3","detP","alphahat1","alphahat2","alphahat3","detV","muhat1","muhat2","muhat3","detVmu","etahat1","etahat2","etahat3","detVeta","epshat1","epshat2","epshat3","Veps1","Veps2","Veps3" +-67.2406538532251,21.8034036045293,-10.1873461537098,20578070323.8237,0,0,0,999999999999998592,0.0249421308163873,0.0152861074156352,0.0802126812744177,1000000.00006406,1000000.00005728,1000000.00170886,0.0120258782555389,0.0128083246063421,0.0194088368944903,3.35924601921679e-12,0.0278928798966771,0.0102349613528649,0.068965985089353,3.11581104038067e-12,0.0278928798966771,0.0102349613528649,0.068965985089353,3.24050037651491e-12,-0.00564973761710304,-0.00137921051005712,-0.0318232920285582,2.91420525209689e-13,-0.00295074560051454,0.00505114777334886,0.0112466961714412,5.31643555190067e-05,3.84664299711166e-05,0.00158455456888656 +-109.931351496593,68.6044407299422,17.1939004915955,33225291135.443,0.0120258782555389,0.0128083246063421,0.0194088368944903,3.35924601921679e-12,-0.0132188303662071,0.00225567191479654,-0.0539515517637907,0.000170727717343958,0.000112420665633011,0.0040879847788131,0.00704558437697281,0.00627774520820362,0.0136577276771805,1.52235749676559e-12,0.00151309907108918,0.00987564733269392,-0.0479712558811099,2.15384813926594e-13,0.00151309907108918,0.00987564733269392,-0.0479712558811099,5.59414801492844e-13,-0.00068291392336957,-0.000314376431938361,0.00586691488615409,1.96268749999352e-13,-0.00270605118175735,0.000510330404452745,-0.0241597878615189,2.46381672932019e-05,2.2920359580971e-05,0.000990613236505811 +220.06899756977,-103.406384752015,4.25318051269546,33500335009.0369,0.00704558437697281,0.00627774520820362,0.0136577276771805,1.52235749676559e-12,-0.00355105172260076,-0.00390866660468763,0.0249427837609813,0.000144461779488417,0.000107974293230208,0.00314124878018704,0.002345033682181,0.00246758478490244,0.00444121233726357,1.49624336428646e-12,0.00633930257374832,0.0058480673374612,0.0203593631178835,1.57599220999831e-13,0.00633930257374832,0.0058480673374612,0.0203593631178835,4.10590466905518e-13,0.0109953118810541,0.0026330678238114,0.0543950307267643,1.94467086808897e-13,-0.00284476991937627,-0.00476405639120255,0.0140657480552864,2.3653980877261e-05,2.23138527177378e-05,0.000777911260581866 +-30.5131062912933,29.5937147079009,-33.4529390113015,33516618723.1895,0.002345033682181,0.00246758478490244,0.00444121233726357,1.49624336428646e-12,0.0198451458321124,-8.0521072545121e-05,0.0618475259644858,0.000144071061049864,0.000107749109617469,0.00313195787655515,0.00738474790439075,0.00744985273044522,0.0168427099954792,1.49493682590654e-12,0.0157082431404629,0.00686974104775034,0.0674688514882678,1.561780545055e-13,0.0157082431404629,0.00686974104775034,0.0674688514882678,4.0786198940376e-13,-0.00799337895496253,0.000457692602874704,-0.0636768826423169,1.943542628106e-13,0.00648193637383046,0.00266440982896116,0.0351949166598761,2.36223328159636e-05,2.22729422222205e-05,0.000775198384097385 +128.323368766661,-181.473754008014,-21.163388358851,33517592381.5344,0.00738474790439075,0.00744985273044522,0.0168427099954792,1.49493682590654e-12,-0.0120693011871243,0.00946766512067329,-0.0958825424373117,0.000144043595254729,0.000107732401109414,0.00313160971923426,0.00608023342404336,0.00488151908372904,0.0152130510296671,1.49486718430951e-12,-0.00234258013492993,0.00685318372880738,-0.0552532648223864,1.56117526018452e-13,-0.00234258013492993,0.00685318372880738,-0.0552532648223864,4.07713816065298e-13,-0.00337668225005648,-0.00544245044599057,-0.00887370009516913,1.94347116202567e-13,-0.00234197314780361,0.00571924432061567,-0.051440580344193,2.36201430513524e-05,2.22698450249019e-05,0.000775096382868405 +-69.4975946992839,79.9133567721174,-29.5547186929415,33517655511.0106,0.00608023342404336,0.00488151908372904,0.0152130510296671,1.49486718430951e-12,-0.00444735323512353,-0.00724839162675683,-0.0173046931640614,0.000144041482575493,0.000107731316824406,0.00313160209562539,-6.28291544769312e-06,0.000327287481347226,-0.00243905206314258,1.49486298645382e-12,0.00135197927237464,-0.00167804303958112,0.00218960460021273,1.56114788292676e-13,0.00135197927237464,-0.00167804303958112,0.00218960460021273,4.07705923763954e-13,-0.00769838084250743,0.00183154171598141,-0.0653139946901999,1.9434663863129e-13,0.000280900916545187,-0.00228988347868482,-0.0081674837941283,2.36199753372632e-05,2.22696359528823e-05,0.000775094159134696 +-21.780243451976,94.5018866116387,12.1617135321152,33517659587.004,-6.28291544769312e-06,0.000327287481347226,-0.00243905206314258,1.49486298645382e-12,-0.0129000770306307,0.00565978415004307,-0.102473646207462,0.000144041330486623,0.000107731247463701,0.00313160190095256,-0.00114380176219314,-0.00166082871525914,-0.00367074514437624,1.49486272618874e-12,-0.00921409614220109,0.00131066796059521,-0.0756477900219918,1.5611464393144e-13,-0.00921409614220109,0.00131066796059521,-0.0756477900219918,4.07705444854603e-13,0.00488928267784999,0.00458584468402254,0.0162495267833953,1.94346607262326e-13,-0.00369226380387727,3.23652575071473e-05,-0.056204227857859,2.36199638426733e-05,2.22696222643505e-05,0.000775094102300903 +17.7752073075408,139.199794922902,20.9149234710116,33517659844.5118,-0.00114380176219314,-0.00166082871525914,-0.00367074514437624,1.49486272618874e-12,0.00706639301763951,-0.00116272817657,0.0152957042481327,0.00014404132003902,0.000107731243183542,0.00313160189574584,0.000195552823973567,0.000628169961525877,-0.00185198771545186,1.49486271009151e-12,0.00522171837829863,0.00412692534962874,0.0172055982094548,1.5611463573558e-13,0.00522171837829863,0.00412692534962874,0.0172055982094548,4.07705415150383e-13,0.0110407571506619,0.00869647449295527,0.0397765818744945,1.9434660526262e-13,0.000700872877147731,-0.00440657522980411,0.00803858254369795,2.3619963081476e-05,2.22696214039443e-05,0.000775094100755109 +48.0240903837953,-8.32885252835418,12.4142327213978,33517659860.4318,0.000195552823973567,0.000628169961525877,-0.00185198771545186,1.49486271009151e-12,0.0183389813299198,0.00753962342864222,0.0445389534690462,0.00014404131935788,0.000107731242924396,0.00313160189551563,0.00826382273282531,0.00795798965198487,0.0195720899085284,1.49486270910768e-12,0.014350598494436,0.0118338572675639,0.0478755016289956,1.5611463525387e-13,0.014350598494436,0.0118338572675639,0.0478755016289956,4.07705413314378e-13,0.00542061780189578,0.00140794249506143,0.0315204834082469,1.9434660513836e-13,0.00418393565945735,0.00293598368751085,0.023958372083821,2.36199630332293e-05,2.22696213511728e-05,0.000775094100684594 +53.4655574203724,106.227773558997,-2.839257022537,33517659861.3975,0.00826382273282531,0.00795798965198487,0.0195720899085284,1.49486270910768e-12,0.00776781642898607,-0.00591577918289046,0.0431867204677061,0.000144041319314992,0.000107731242908951,0.00313160189549982,0.00623779747122178,0.00622163539237662,0.0146982717346242,1.49486270904837e-12,0.0149463458844354,0.0102659013413432,0.0560884669964625,1.56114635225275e-13,0.0149463458844354,0.0102659013413432,0.0560884669964625,4.07705413202282e-13,0.00694208135393204,0.0081574485899025,0.00680180892649882,1.94346605130798e-13,0.00108529327737595,-0.00542727090804177,0.0243642396054285,2.36199630302523e-05,2.22696213479976e-05,0.000775094100679687 +68.8341227825592,-40.1211936773691,1.37867659079935,33517659861.4553,0.00623779747122178,0.00622163539237662,0.0146982717346242,1.49486270904837e-12,0.0139150185756762,0.00859200909017141,-0.0183911721348178,0.000144041319312362,0.000107731242908041,0.00313160189549863,0.0119998854656784,0.0112110263126007,0.0278676026792467,1.49486270904484e-12,0.0152735118699515,0.0162464832748336,0.0266469183800204,1.56114635223581e-13,0.0152735118699515,0.0162464832748336,0.0266469183800204,4.07705413195531e-13,0.00314740461869759,0.00037817198047357,0.0170844376725059,1.94346605130345e-13,0.00487930417694653,0.00357657873217719,-0.00990980501747175,2.36199630300724e-05,2.22696213478092e-05,0.000775094100679316 +31.1367915822071,14.6964126984048,-11.6199178607277,33517659861.4588,0.0119998854656784,0.0112110263126007,0.0278676026792467,1.49486270904484e-12,0.00577737382115771,-0.0026997192551817,0.0178812627727139,0.000144041319312203,0.000107731242907988,0.00313160189549854,0.00941804266460729,0.00912331220820333,0.0213929818772408,1.49486270904463e-12,0.0157880638051568,0.0120509657700914,0.0474262528077,1.5611463522348e-13,0.0157880638051568,0.0120509657700914,0.0474262528077,4.07705413195129e-13,6.88732656350974e-05,0.00203339638462585,-0.0131433652327295,1.94346605130319e-13,0.00198919548167936,-0.00145979963755635,0.010484387489808,2.36199630300617e-05,2.22696213477981e-05,0.000775094100679289 +59.5699179112127,-34.5567454404672,-7.90308624734724,33517659861.4591,0.00941804266460729,0.00912331220820333,0.0213929818772408,1.49486270904463e-12,0.00156247268536873,0.00253043019506501,-0.0324836343328018,0.000144041319312194,0.000107731242907985,0.00313160189549853,0.00860208586187688,0.00795761727989517,0.0197309150246237,1.49486270904462e-12,0.00960617319703094,0.0113855709019958,0.00749605150813434,1.56114635223474e-13,0.00960617319703094,0.0113855709019958,0.00749605150813434,4.07705413195105e-13,0.000775634423063467,0.000322560893589774,-0.0007587925551565,1.94346605130317e-13,0.00137434215294507,0.000830662884880715,-0.0172118995320866,2.3619963030061e-05,2.22696213477975e-05,0.000775094100679288 +-67.5824822821611,120.856559940442,-7.67006140192644,33517659861.4591,0.00860208586187688,0.00795761727989517,0.0197309150246237,1.49486270904462e-12,0.000601981351519293,-0.000112304330323517,-0.00316493693226241,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0063662314607436,0.00604705008427941,0.0143959807288923,1.49486270904462e-12,0.0094902989703148,0.00840770787186072,0.0189918015106253,1.56114635223474e-13,0.0094902989703148,0.00840770787186072,0.0189918015106253,4.07705413195105e-13,-0.00128255497495184,0.00428520857555146,-0.0274410319585922,1.94346605130317e-13,-0.00028623175691863,-0.000345681166910674,-0.00125783036971025,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +31.8757299181408,8.87277666985347,7.13630435964093,33517659861.4591,0.0063662314607436,0.00604705008427941,0.0143959807288923,1.49486270904462e-12,-0.00393921274650016,0.00945362174422935,-0.0357810523270781,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00709306746019547,0.00620800135617634,0.0174540239359582,1.49486270904461e-12,0.00520565426720095,0.0106530306213963,-0.0144966541108941,1.56114635223474e-13,0.00520565426720095,0.0106530306213963,-0.0144966541108941,4.07705413195105e-13,0.00392024623240197,0.00175769073251159,0.0190580895613284,1.94346605130317e-13,-0.00277863555295751,0.00342952155045878,-0.019650325247294,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +34.9217411109435,47.8167221330881,-2.35792361885105,33517659861.4591,0.00709306746019547,0.00620800135617634,0.0174540239359582,1.49486270904461e-12,0.00589214299331917,-0.00161688311532955,0.0248169325260604,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00589509030971315,0.00585699501667706,0.0130222233294799,1.49486270904462e-12,0.0119843083305349,0.00870028357797509,0.0400039738899511,1.56114635223474e-13,0.0119843083305349,0.00870028357797509,0.0400039738899511,4.07705413195105e-13,0.00358825506262461,0.00409198050936411,0.00354887265701466,1.94346605130317e-13,0.00100090212297977,-0.00198798927065052,0.014003122903244,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +88.8396846474381,19.8367389358686,-3.07133197307455,33517659861.4591,0.00589509030971315,0.00585699501667706,0.0130222233294799,1.49486270904462e-12,0.00655774428341536,0.00128648921595171,-0.00980458934997514,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00695497225150407,0.0065890569817565,0.0157525144806386,1.49486270904462e-12,0.0105457595024072,0.0108981966294363,0.0191653782272861,1.56114635223473e-13,0.0105457595024072,0.0108981966294363,0.0191653782272861,4.07705413195105e-13,0.00580219659268743,0.00458286266505532,0.0138719704145541,1.94346605130317e-13,0.00190707509072132,-0.00139391934751563,-0.00469767619200756,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-22.0618332182259,51.8813132060757,-1.37714170898042,33517659861.4591,0.00695497225150407,0.0065890569817565,0.0157525144806386,1.49486270904462e-12,0.0116990684875913,0.0027146858745844,-0.00348704633328878,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00947898388126713,0.009113777932035,0.0209404447021054,1.49486270904462e-12,0.0142787787581178,0.01246962580695,0.0338414310119848,1.56114635223473e-13,0.0142787787581178,0.01246962580695,0.0338414310119848,4.07705413195105e-13,0.000306263185302023,0.0021125371455544,-0.00701324320330968,1.94346605130317e-13,0.0043752619809776,0.00104579081632096,-0.00175209018068917,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +119.588449067804,53.2382330733957,-4.92473437706516,33517659861.4591,0.00947898388126713,0.009113777932035,0.0209404447021054,1.49486270904462e-12,-0.00190512209193851,-7.88133267318712e-05,-0.00526647493755307,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00657537061413259,0.00611158385796216,0.0155602120675675,1.49486270904462e-12,0.0100417113778493,0.0115121098505415,0.01409116346213,1.56114635223473e-13,0.0100417113778493,0.0115121098505415,0.01409116346213,4.07705413195105e-13,0.00867149443402496,0.00768780208703895,0.0173639064634367,1.94346605130317e-13,-0.00246784958852072,-0.00316299068207178,-0.00185866255211344,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +1.45725293971104,58.5146158114194,-10.1434599275263,33517659861.4591,0.00657537061413259,0.00611158385796216,0.0155602120675675,1.49486270904462e-12,0.0156204932547123,0.00781920119012404,0.000729183114216575,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0120449704106088,0.0114565657431339,0.0273555941254601,1.49486270904462e-12,0.0176016468634708,0.0158365843404457,0.0392152761092451,1.56114635223473e-13,0.0176016468634708,0.0158365843404457,0.0392152761092451,4.07705413195105e-13,0.00018703295778353,0.00339256951022056,-0.016929617494775,1.94346605130317e-13,0.00459421700537402,0.00371759044479424,0.00108009938837582,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +11.2377475858253,44.0849813169402,-2.58161879683126,33517659861.4591,0.0120449704106088,0.0114565657431339,0.0273555941254601,1.49486270904462e-12,-0.00062505373232879,0.00618446245962546,-0.0271888137237609,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0110859479183923,0.0101534291584261,0.0262470674108498,1.49486270904462e-12,0.0125209705723592,0.0152552341099511,0.00988865546036707,1.56114635223473e-13,0.0125209705723592,0.0152552341099511,0.00988865546036707,4.07705413195105e-13,0.00187789882143691,0.0029577641282118,-0.0019283367145524,1.94346605130317e-13,-0.00110105389407923,0.00216077426236938,-0.0144971350170301,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-104.583274879275,65.7717605926111,5.06764105794044,33517659861.4591,0.0110859479183923,0.0101534291584261,0.0262470674108498,1.49486270904462e-12,0.00241083648780808,0.00717430676749155,-0.00296640731983339,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0112168425011237,0.0104055376428407,0.0266541774733028,1.49486270904462e-12,0.0135899585445195,0.0137014768065626,0.0255919902458565,1.56114635223473e-13,0.0135899585445195,0.0137014768065626,0.0255919902458565,4.07705413195105e-13,-0.00305599145565161,-0.000287718612807908,-0.0137103733133745,1.94346605130317e-13,-9.31741383190684e-05,0.00449416213255898,-0.00210987975074165,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +97.997273979255,95.0332785943711,13.4149583349086,33517659861.4591,0.0112168425011237,0.0104055376428407,0.0266541774733028,1.49486270904462e-12,-0.00844841052451847,-0.00455800284536257,-0.00573646180480751,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0041407304755805,0.00384540529252445,0.00996344641719751,1.49486270904462e-12,0.00759957239542574,0.00968899511372839,0.0110040182050277,1.56114635223473e-13,0.00759957239542574,0.00968899511372839,0.0110040182050277,4.07705413195105e-13,0.0128527550784678,0.00927154035993654,0.0441293927670816,1.94346605130317e-13,-0.00483114041882048,-0.00688289468481645,-0.00287690694169049,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +30.6051504525795,20.5001714090327,-11.3042724138477,33517659861.4591,0.0041407304755805,0.00384540529252445,0.00996344641719751,1.49486270904462e-12,0.0201239823304973,0.0108969743046645,0.0554718623633409,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0124975371835685,0.0119077728466573,0.0301336516896373,1.49486270904462e-12,0.0204436622475838,0.0159206550661082,0.0648764374017951,1.56114635223473e-13,0.0204436622475838,0.0159206550661082,0.0648764374017951,4.07705413195105e-13,0.000328112349358713,0.00234567362776267,-0.0127091843808942,1.94346605130317e-13,0.00382105055849401,0.00606637384289697,0.0310024764950545,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +87.3603942015624,61.8943136923456,-5.31086592899468,33517659861.4591,0.0124975371835685,0.0119077728466573,0.0301336516896373,1.49486270904462e-12,0.000979383801681208,-0.00126473915520173,-0.0327297561565652,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00929457053661547,0.00869616854291207,0.0212500184225735,1.49486270904462e-12,0.0130273381878149,0.0145536127762576,0.0168935854767856,1.56114635223473e-13,0.0130273381878149,0.0145536127762576,0.0168935854767856,4.07705413195105e-13,0.00686012184056783,0.00693097664121373,0.00979245796147835,1.94346605130317e-13,0.000449582797434745,-0.00355800015343899,-0.0169541728951275,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +25.2237227900754,145.551954988696,-6.4295522100269,33517659861.4591,0.00929457053661547,0.00869616854291207,0.0212500184225735,1.49486270904462e-12,0.0107956993441029,0.00444287214105272,-0.00331564775054593,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0114862118468343,0.0109397601338465,0.025876870535284,1.49486270904462e-12,0.0180904007967606,0.0173360489353798,0.0359307022986713,1.56114635223473e-13,0.0180904007967606,0.0173360489353798,0.0359307022986713,4.07705413195105e-13,0.005889028261424,0.00930717867936221,-0.00534086629570008,1.94346605130317e-13,0.00199986908395777,-0.000310548079697237,-0.000840909273477142,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +89.5620411639795,-87.1738931006817,3.67023870385873,33517659861.4591,0.0114862118468343,0.0109397601338465,0.025876870535284,1.49486270904462e-12,0.0123533508776733,0.0123457280081141,-0.0366444036077945,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0166104663346709,0.0154644007749954,0.0380259025062216,1.49486270904462e-12,0.0193556430656066,0.022104424699889,0.024649391160915,1.56114635223473e-13,0.0193556430656066,0.022104424699889,0.024649391160915,4.07705413195105e-13,0.00313976184850717,-0.00150818133599703,0.0253811769653347,1.94346605130317e-13,0.00448391965890099,0.00562827937899536,-0.0200497312241637,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +4.2281672392325,-76.1889120151757,-14.656945766774,33517659861.4591,0.0166104663346709,0.0154644007749954,0.0380259025062216,1.49486270904462e-12,0.00763895156168766,-0.00354486880509128,0.0270732921073447,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0129375339883414,0.0125582590386369,0.0291993570587278,1.49486270904462e-12,0.0202207549078748,0.0141995569440843,0.0660114472037087,1.56114635223473e-13,0.0202207549078748,0.0141995569440843,0.0660114472037087,4.07705413195105e-13,-0.00583847071469258,-0.00422264506270171,-0.0242565846467265,1.94346605130317e-13,0.00402866298848375,0.000470003537349043,0.0151537420103068,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +15.9909557757889,47.1914298623456,-8.37487011288025,33517659861.4591,0.0129375339883414,0.0125582590386369,0.0291993570587278,1.49486270904462e-12,-0.00961420473041921,-0.00654557363145042,-0.033856965317856,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00486458602795789,0.00445237493005102,0.0111909498045896,1.49486270904462e-12,0.00545989049549796,0.00704706141292951,-0.000572594808797206,1.56114635223473e-13,0.00545989049549796,0.00704706141292951,-0.000572594808797206,4.07705413195105e-13,0.00105826102850216,0.00331135385328269,-0.0108019983002168,1.94346605130317e-13,-0.00213656123757573,-0.00449549719637029,-0.0178429343884009,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +66.4127931352923,-43.7136585452354,-10.0084102361983,33517659861.4591,0.00486458602795789,0.00445237493005102,0.0111909498045896,1.49486270904462e-12,0.0016907315489674,0.00634111095286113,-0.0205220770984502,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00628901660274266,0.00575875700213155,0.0145384558571828,1.49486270904462e-12,0.00638215142681412,0.00827807429391772,0.000633523880064937,1.56114635223473e-13,0.00638215142681412,0.00827807429391772,0.000633523880064937,4.07705413195105e-13,0.000405894636431656,6.06202660687753e-05,-0.00290035653339943,1.94346605130317e-13,0.000173166150111168,0.00312407626338792,-0.0105923316984533,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +119.133706980113,-46.6271674391128,-21.9169782892569,33517659861.4591,0.00628901660274266,0.00575875700213155,0.0145384558571828,1.49486270904462e-12,0.00178022392266747,-0.0022512117561901,-0.0143293532659618,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00424941190855203,0.00415903786553086,0.00858477990208885,1.49486270904462e-12,0.00669449490251759,0.00586406898338021,0.0112238155111261,1.56114635223473e-13,0.00669449490251759,0.00586406898338021,0.0112238155111261,4.07705413195105e-13,0.00111138986800485,0.00192340248510893,-0.011926438247885,1.94346605130317e-13,0.00137474562289255,-0.00171564173881534,-0.00643391514307248,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-52.2725863053686,107.625104483296,-10.9267295948868,33517659861.4591,0.00424941190855203,0.00415903786553086,0.00858477990208885,1.49486270904462e-12,0.00452133759028802,8.94448040436504e-06,-0.0446195903682715,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00466308384728681,0.00447983611683995,0.00873504687642133,1.49486270904462e-12,0.00557996252520546,0.00641952995904023,-0.00405373388233962,1.56114635223473e-13,0.00557996252520546,0.00641952995904023,-0.00405373388233962,4.07705413195105e-13,-0.0015155475377481,0.00411702737637497,-0.0297370490082324,1.94346605130317e-13,0.00319078697363459,-0.000623862559320747,-0.0237090346275411,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +6.99036624904253,16.0153688636401,2.88319214931913,33517659861.4591,0.00466308384728681,0.00447983611683995,0.00873504687642133,1.49486270904462e-12,-0.00445487532774319,0.0106683340127357,-0.0378901327644937,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00611864425674699,0.00529301889268825,0.0147450218105322,1.49486270904462e-12,0.00318204017685183,0.00886199095060388,-0.0228661017447143,1.56114635223473e-13,0.00318204017685183,0.00886199095060388,-0.0228661017447143,4.07705413195105e-13,0.00168955918006319,0.00119341982800407,0.00645393953953912,1.94346605130317e-13,-0.00297383165730821,0.00468242059146543,-0.020708094932979,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +18.7244850479341,58.1682155940764,0.365914834657884,33517659861.4591,0.00611864425674699,0.00529301889268825,0.0147450218105322,1.49486270904462e-12,0.00182764463781507,-0.000837127297619282,0.00971505075042994,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00432941527621488,0.00426284367863101,0.00934387122124926,1.49486270904462e-12,0.00826848038637219,0.00685381302229191,0.0226967635566366,1.56114635223473e-13,0.00826848038637219,0.00685381302229191,0.0226967635566366,4.07705413195105e-13,0.00353802081602632,0.00405989477475793,0.00473920755192644,1.94346605130317e-13,-0.000322191491810129,-0.00173996793421447,0.00560069687428455,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +70.1762341842696,136.739092512698,-3.58135227752713,33517659861.4591,0.00432941527621488,0.00426284367863101,0.00934387122124926,1.49486270904462e-12,0.00327142194273179,0.000702292181374726,0.00648288938338754,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00450276367278336,0.00426561163403297,0.0105994507644039,1.49486270904462e-12,0.00893973599538838,0.00926591625099442,0.0168352072094755,1.56114635223473e-13,0.00893973599538838,0.00926591625099442,0.0168352072094755,4.07705413195105e-13,0.00903854259867015,0.0105531921917195,0.00917185666310053,1.94346605130317e-13,-0.00133889877644171,-0.00312306594377636,0.0045682807596548,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +81.8648882783296,-29.137200671995,-6.96326848665018,33517659861.4591,0.00450276367278336,0.00426561163403297,0.0105994507644039,1.49486270904462e-12,0.0158965447391307,0.0136185113756268,-0.0101756741186897,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0127830667066729,0.0119231078440348,0.0297314947589753,1.49486270904462e-12,0.0162614124296281,0.0172423887553481,0.0264797154586339,1.56114635223473e-13,0.0162614124296281,0.0172423887553481,0.0264797154586339,4.07705413195105e-13,0.00261645174355654,0.00150060559922904,0.00564632452385456,1.94346605130317e-13,0.00413789598228592,0.00636450274084881,-0.00494942211559579,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-20.8049809153715,61.4283061256126,-15.5527675246916,33517659861.4591,0.0127830667066729,0.0119231078440348,0.0297314947589753,1.49486270904462e-12,0.00405318391682383,0.00183059931632992,0.00355584207385007,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0111442255564689,0.0105387868043321,0.025866253932713,1.49486270904462e-12,0.0159832111528742,0.0139336717229756,0.036868967793107,1.56114635223473e-13,0.0159832111528742,0.0139336717229756,0.036868967793107,4.07705413195105e-13,-0.00228833437231398,0.00268617592046561,-0.030952467770722,1.94346605130317e-13,0.000853039470622498,0.0012791848041217,0.00276384100732236,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-76.9810636033918,34.6394579091114,3.50289373132661,33517659861.4591,0.0111442255564689,0.0105387868043321,0.025866253932713,1.49486270904462e-12,-0.00432603788077967,0.00964786823242237,-0.0452845023989327,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0106101990473352,0.00947610200329563,0.0256461900036175,1.49486270904462e-12,0.0085644322737564,0.0132130622457131,-0.00788722261442415,1.56114635223473e-13,0.0085644322737564,0.0132130622457131,-0.00788722261442415,4.07705413195105e-13,-0.00283336411164223,-0.00100108145188864,-0.0105016382213768,1.94346605130317e-13,-0.0017462445980672,0.0054162157847822,-0.0251151454391712,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +69.2966126225637,4.37359413527535,8.04083750204804,33517659861.4591,0.0106101990473352,0.00947610200329563,0.0256461900036175,1.49486270904462e-12,-0.00628666402931654,-0.00262836280618709,-0.00534630197667621,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00470543283881948,0.00445378301837286,0.0106781858243202,1.49486270904462e-12,0.0071734674855355,0.00798946807135423,0.0132486465844708,1.56114635223473e-13,0.0071734674855355,0.00798946807135423,0.0132486465844708,4.07705413195105e-13,0.0063371831765649,0.00295516953084463,0.0286376957522113,1.94346605130317e-13,-0.00284993246751687,-0.00340493282094098,-0.00291472706240421,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-27.118789761475,8.75762638165023,-5.16426595152934,33517659861.4591,0.00470543283881948,0.00445378301837286,0.0106781858243202,1.49486270904462e-12,0.0109215603881649,0.00275852385905696,0.0347475370830604,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00749013362651289,0.00724185376651109,0.0176447019287084,1.49486270904462e-12,0.0125946813588277,0.00860420333101268,0.0447106230864149,1.56114635223473e-13,0.0125946813588277,0.00860420333101268,0.0447106230864149,4.07705413195105e-13,-0.00250681373075353,-0.000559945977605825,-0.0146385831342055,1.94346605130317e-13,0.00303231186815664,0.00253987379201954,0.0190898368204467,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +76.50682547796,-60.4517507264323,-6.47493804663415,33517659861.4591,0.00749013362651289,0.00724185376651109,0.0176447019287084,1.49486270904462e-12,-0.00458208787177987,0.000757883407756847,-0.0168109834639033,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00470754029373612,0.00420003768943809,0.0117982429976468,1.49486270904462e-12,0.00441358469989164,0.00627731384189226,0.000738667800944983,1.56114635223473e-13,0.00441358469989164,0.00627731384189226,0.000738667800944983,4.07705413195105e-13,0.00116156117338856,-0.000500497333534147,0.0052807940972013,1.94346605130317e-13,-0.00150553894515862,7.28681299411932e-05,-0.00873842063300376,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-10.5721964922284,25.1753146179346,-19.7899231571942,33517659861.4591,0.00470754029373612,0.00420003768943809,0.0117982429976468,1.49486270904462e-12,0.00159658143498174,4.53785704273716e-05,0.00816256969924301,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00374832727078615,0.00359731888951282,0.00872711166485344,1.49486270904462e-12,0.00598412272706883,0.00378380384574688,0.0174793504939098,1.56114635223473e-13,0.00598412272706883,0.00378380384574688,0.0174793504939098,4.07705413195105e-13,-0.00395165314753016,0.0010005481210243,-0.0360507515957282,1.94346605130317e-13,0.000319999001649025,0.00103638297415183,0.00537771007168731,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-24.2975141144444,44.0448025460308,-10.2002959533815,33517659861.4591,0.00374832727078615,0.00359731888951282,0.00872711166485344,1.49486270904462e-12,-0.00845591750637257,0.00739220768438539,-0.0442702016019515,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00318166222445003,0.00246457759265009,0.00847044571655705,1.49486270904462e-12,-0.001010316716045,0.00416220880345283,-0.0317078003450962,1.56114635223473e-13,-0.001010316716045,0.00416220880345283,-0.0317078003450962,4.07705413195105e-13,-0.00203730282454335,0.00156308493424913,-0.0225833472851105,1.94346605130317e-13,-0.00369727351954143,0.00378318088256516,-0.0236557314297678,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-19.1487061734549,43.1174657859662,0.0861131576676835,33517659861.4591,0.00318166222445003,0.00246457759265009,0.00847044571655705,1.49486270904462e-12,-0.00475164618745703,0.0053660791295653,-0.0284191429576314,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0025700960748371,0.0021995201041103,0.00585762085695258,1.49486270904462e-12,0.000832568752424648,0.00392579491574291,-0.01635683966521,1.56114635223473e-13,0.000832568752424648,0.00392579491574291,-0.01635683966521,4.07705413195105e-13,0.000466840081035546,0.00172599139431722,-0.0039004117608234,1.94346605130317e-13,-0.00240255271543165,0.00219426547833984,-0.0154412624717033,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +94.8396481690567,-29.6832031584327,-6.98130384118259,33517659861.4591,0.0025700960748371,0.0021995201041103,0.00585762085695258,1.49486270904462e-12,-0.000759011208293074,0.00265760830699488,0.000219896026342446,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00244120815126909,0.00224813395784689,0.00574018043758837,1.49486270904462e-12,0.00329721470878612,0.00418952328928918,0.0023414473320309,1.56114635223473e-13,0.00329721470878612,0.00418952328928918,0.0023414473320309,4.07705413195105e-13,0.00342259107921054,0.00197336665447989,0.00840263180465869,1.94346605130317e-13,-0.00148612984224209,0.000394360495702013,0.000786224413225071,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-182.39023283425,129.980701318868,-1.74057279854417,33517659861.4591,0.00244120815126909,0.00224813395784689,0.00574018043758837,1.49486270904462e-12,0.00642356413580518,0.00414569671928167,0.00187725053784228,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00507095544832797,0.00479703145730826,0.0116595601272391,1.49486270904462e-12,0.00664595857788701,0.00489319337361076,0.0162467504040294,1.56114635223473e-13,0.00664595857788701,0.00489319337361076,0.0162467504040294,4.07705413195105e-13,-0.00700912266072092,0.000356826387465835,-0.041963720452812,1.94346605130317e-13,0.00221881370918726,0.00381312539516871,0.000696431846308477,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +111.797012259129,104.962976432563,25.333453997506,33517659861.4591,0.00507095544832797,0.00479703145730826,0.0116595601272391,1.49486270904462e-12,-0.0157317771452852,-0.00185753557265734,-0.043624539330285,0.000144041319312193,0.000107731242907984,0.00313160189549853,-0.00126763803783896,-0.00155996958820473,-0.0025171789868687,1.49486270904462e-12,-0.00323480202391209,0.00426816429082059,-0.0356998545466249,1.56114635223473e-13,-0.00323480202391209,0.00426816429082059,-0.0356998545466249,4.07705413195105e-13,0.0166836081211711,0.0103949630110809,0.0674771010498535,1.94346605130317e-13,-0.00742601967304517,-0.00699212043059908,-0.0239749909504451,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-31.0141109161353,6.66346723945301,2.80216364080764,33517659861.4591,-0.00126763803783896,-0.00155996958820473,-0.0025171789868687,1.49486270904462e-12,0.0284698063723115,0.0102601935229981,0.0785153617146786,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0103299579936094,0.0102130773923388,0.023886137296045,1.49486270904462e-12,0.0197967472727927,0.0122947932690706,0.0795026862349263,1.56114635223473e-13,0.0197967472727927,0.0122947932690706,0.0795026862349263,4.07705413195105e-13,-0.0011259226411358,-0.000818843702816716,-0.00186535316237287,1.94346605130317e-13,0.00740542106167983,0.00665458313243595,0.0425918112053659,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +61.8025870391035,-12.1139206529261,-9.3957927093166,33517659861.4591,0.0103299579936094,0.0102130773923388,0.023886137296045,1.49486270904462e-12,-0.0046731690804505,0.000598830891356391,0.0155405662164934,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00687016417894694,0.00617624642828269,0.0184501023646694,1.49486270904462e-12,0.00893402224570052,0.00915418977267072,0.0213624428301326,1.56114635223473e-13,0.00893402224570052,0.00915418977267072,0.0213624428301326,4.07705413195105e-13,0.00146981677618299,0.00169250752998763,-0.00279496906722627,1.94346605130317e-13,-0.00327723333254162,-2.46259974666949e-05,0.00915742679752261,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-78.8858670183734,171.24038680088,-6.13396001968159,33517659861.4591,0.00687016417894694,0.00617624642828269,0.0184501023646694,1.49486270904462e-12,0.00108072258279011,0.0013596411795227,-0.00656219925927792,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00569829438558208,0.00531443100352053,0.0136201794494383,1.49486270904462e-12,0.00870708534122328,0.00824604344804771,0.0161109820649911,1.56114635223473e-13,0.00870708534122328,0.00824604344804771,0.0161109820649911,4.07705413195105e-13,0.000280759035360963,0.00673446091688417,-0.027166541475538,1.94346605130317e-13,-0.000756198579486228,-0.000321094868756106,-0.00304284048903958,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +9.43725376179557,92.5053754768797,12.9356603307115,33517659861.4591,0.00569829438558208,0.00531443100352053,0.0136201794494383,1.49486270904462e-12,-0.00292335729092726,0.01223047299296,-0.0328715758765511,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00780469907235515,0.00680636488919919,0.0195811492895347,1.49486270904462e-12,0.00665143406504927,0.0128654145952792,-0.0136728143561718,1.56114635223473e-13,0.00665143406504927,0.0128654145952792,-0.0136728143561718,4.07705413195105e-13,0.0069779681449669,0.00568547489394928,0.0242769068009637,1.94346605130317e-13,-0.00387649697039445,0.00362707849971622,-0.0181110637015578,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +99.9797994418653,35.7794421200765,1.14746001828631,33517659861.4591,0.00780469907235515,0.00680636488919919,0.0195811492895347,1.49486270904462e-12,0.00991861539553851,0.00288949341960363,0.0322861349781461,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00910925751964293,0.00882804127991926,0.0209881236075339,1.49486270904462e-12,0.0167674427393909,0.0140994251474568,0.0501297602723216,1.56114635223473e-13,0.0167674427393909,0.0140994251474568,0.0501297602723216,4.07705413195105e-13,0.00804177551945459,0.00593541311725153,0.0234998332048452,1.94346605130317e-13,0.000955871728502728,-0.000832857571504532,0.0181992581052511,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-4.39837312280484,49.8485168190287,-6.58580849498107,33517659861.4591,0.00910925751964293,0.00882804127991926,0.0209881236075339,1.49486270904462e-12,0.014329641342457,0.00493745546341702,0.0150872676428021,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0127441286187699,0.0121084634461669,0.02975990990894,1.49486270904462e-12,0.0192632104663957,0.0165218809008372,0.0507153495795907,1.56114635223473e-13,0.0192632104663957,0.0165218809008372,0.0507153495795907,4.07705413195105e-13,0.000239675491342161,0.00267421704441591,-0.0121218091640386,1.94346605130317e-13,0.00417568839570422,0.00240229788590753,0.00869473959104254,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-14.5812492175819,149.479736340738,-3.87026781869447,33517659861.4591,0.0127441286187699,0.0121084634461669,0.02975990990894,1.49486270904462e-12,-0.00320611441101226,0.00436586611851236,-0.00719563780157418,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0101708431569113,0.0092708350912744,0.0251281249083086,1.49486270904462e-12,0.0132405854910117,0.0151172098140503,0.0173855159085897,1.56114635223473e-13,0.0132405854910117,0.0151172098140503,0.0173855159085897,4.07705413195105e-13,0.00404145054089284,0.0079897352274833,-0.00951447269924407,1.94346605130317e-13,-0.00370257128325406,0.000202916065698135,-0.00325398053596623,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +46.5896827962326,9.47605345612898,6.59873874643184,33517659861.4591,0.0101708431569113,0.0092708350912744,0.0251281249083086,1.49486270904462e-12,0.00616594930418718,0.0117015977252008,-0.0243705241927144,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0132992015496059,0.0122562240282072,0.0313650998881251,1.49486270904462e-12,0.0157353710604053,0.018723979679435,0.018500312348579,1.56114635223473e-13,0.0157353710604053,0.018723979679435,0.018500312348579,4.07705413195105e-13,0.00477082078146475,0.00236304181668898,0.0213020926704814,1.94346605130317e-13,0.00060142140069315,0.00446819968867459,-0.0133247293606212,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +68.3130226015109,-172.072195999991,-1.80431301578111,33517659861.4591,0.0132992015496059,0.0122562240282072,0.0313650998881251,1.49486270904462e-12,0.011958840793278,0.00156847151396385,0.00922614889650778,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0135530388091149,0.0130470265970811,0.0304377403963228,1.49486270904462e-12,0.0192567390740031,0.0155361649074925,0.0567699228228553,1.56114635223473e-13,0.0192567390740031,0.0155361649074925,0.0567699228228553,4.07705413195105e-13,-0.00269617421151841,-0.00720520190519857,0.0113280026277844,1.94346605130317e-13,0.00600130326888074,0.0025937226339701,0.00479372294260761,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-95.2651274286065,41.2472600105955,-5.4060248794581,33517659861.4591,0.0135530388091149,0.0130470265970811,0.0304377403963228,1.49486270904462e-12,-0.00205194101285053,-0.0128136638738311,0.0114839139295833,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0050250436516554,0.00507690352767037,0.0108073285534123,1.49486270904462e-12,0.00961787268004377,0.0046387965577637,0.0394951518721467,1.56114635223473e-13,0.00961787268004377,0.0046387965577637,0.0394951518721467,4.07705413195105e-13,-0.00566234117711413,-0.00134676716037904,-0.0296442673371209,1.94346605130317e-13,0.00188322511622064,-0.00514413419722008,0.0061930142548092,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +123.747413791797,-132.811328155944,-2.38229880822449,33517659861.4591,0.0050250436516554,0.00507690352767037,0.0108073285534123,1.49486270904462e-12,-0.0103750865942471,0.00222162793185605,-0.0303937160011528,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00190169944725527,0.00135437205722983,0.00565682264338184,1.49486270904462e-12,-0.0018806074074328,0.00281662384985088,-0.0235091502924532,1.56114635223473e-13,-0.0018806074074328,0.00281662384985088,-0.0235091502924532,4.07705413195105e-13,0.00225629773271797,-0.00280362638683908,0.0223129274753418,1.94346605130317e-13,-0.00346943553515887,0.000746868355484921,-0.0163754343213822,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-8.29404553659067,-56.0119265713884,-17.4654207498474,33517659861.4591,0.00190169944725527,0.00135437205722983,0.00565682264338184,1.49486270904462e-12,0.00759153880806685,-0.00701919198742246,0.0138622437588827,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.000683815241397965,0.00117231453128065,-0.000481400093700343,1.49486270904462e-12,0.00428343494687155,-0.00148395275432916,0.0294532630849407,1.56114635223473e-13,0.00428343494687155,-0.00148395275432916,0.0294532630849407,4.07705413195105e-13,-0.00646031360834782,-0.00355775343713879,-0.031715230043633,1.94346605130317e-13,0.00520980330845056,-0.00144790729256345,0.00808481021956452,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +92.529279703757,-18.8978584060822,-8.57656984052537,33517659861.4591,0.000683815241397965,0.00117231453128065,-0.000481400093700343,1.49486270904462e-12,-0.00949142899789693,-0.00653920082095304,-0.0519168196259597,0.000144041319312193,0.000107731242907984,0.00313160189549853,-0.00399383278048917,-0.00386671249185023,-0.0104508645515387,1.49486270904462e-12,-0.00748962474860149,-0.00368258894150147,-0.0383720524016751,1.56114635223473e-13,-0.00748962474860149,-0.00368258894150147,-0.0383720524016751,4.07705413195105e-13,0.00335079807139471,0.00249891582960499,0.00519687433932935,1.94346605130317e-13,-0.00131798900789748,-0.00510121917947066,-0.0275630620771447,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-71.8959151604782,36.7354720603961,-11.640693358829,33517659861.4591,-0.00399383278048917,-0.00386671249185023,-0.0104508645515387,1.49486270904462e-12,0.00655104518462027,0.00497398805855593,-0.00358969325514487,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.000591260851198903,0.000628382329140693,0.000414309642379957,1.49486270904462e-12,0.000164746494556744,-0.000646527013195645,-0.00331086064983061,1.56114635223473e-13,0.000164746494556744,-0.000646527013195645,-0.00331086064983061,4.07705413195105e-13,-0.00568016232260271,-0.000707013637077589,-0.0352839455054211,1.94346605130317e-13,0.00239246590957435,0.0041121839484097,-0.00165686260789749,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +193.32159439428,-246.312620053278,-22.029496538181,33517659861.4591,0.000591260851198903,0.000628382329140693,0.000414309642379957,1.49486270904462e-12,-0.0105279393324378,0.00727939280323699,-0.0349282627218774,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.000171641041490831,-0.000369612177658682,0.00157329350148265,1.49486270904462e-12,-0.00632343891236588,-0.000929461792893804,-0.0399943679793908,1.56114635223473e-13,-0.00632343891236588,-0.000929461792893804,-0.0399943679793908,4.07705413195105e-13,-0.00191764807599679,-0.00663262539271263,0.00351203637232622,1.94346605130317e-13,-0.00361323956887303,0.00504717056628837,-0.0180670794418208,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +48.472422177079,126.08510893652,-56.2618417069569,33517659861.4591,0.000171641041490831,-0.000369612177658682,0.00157329350148265,1.49486270904462e-12,-0.00411495948022002,-0.012892376323227,0.00785198900754008,0.000144041319312193,0.000107731242907984,0.00313160189549853,-0.00609799100593955,-0.00526846340551003,-0.0161474568266849,1.49486270904462e-12,-0.00294888427730874,-0.00806770747638312,0.00195309482530463,1.56114635223473e-13,-0.00294888427730874,-0.00806770747638312,0.00195309482530463,4.07705413195105e-13,-0.00408563320660903,0.00901782730566197,-0.0855318602692894,1.94346605130317e-13,-0.000994434161420456,-0.00667566964216943,0.0075081076938461,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-28.2095260534281,203.051070604286,-5.82400929364096,33517659861.4591,-0.00609799100593955,-0.00526846340551003,-0.0161474568266849,1.49486270904462e-12,-0.00613993030669446,0.0158166172133024,-0.156489187844576,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.000202906046166407,-0.000659881644229935,-0.00121897800387291,1.49486270904462e-12,-0.0105193906106416,0.00417746374822124,-0.108667054657676,1.56114635223473e-13,-0.0105193906106416,0.00417746374822124,-0.108667054657676,4.07705413195105e-13,0.00482976734429923,0.0105258207966107,-0.0156982388795575,1.94346605130317e-13,-0.00171853070199242,0.00416031036729804,-0.0844961722074238,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +13.266324346017,71.4397487234321,17.399369508004,33517659861.4591,0.000202906046166407,-0.000659881644229935,-0.00121897800387291,1.49486270904462e-12,0.00741032234088607,0.0145245908933077,-0.0391623833791085,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00681002758042735,0.0063764912742235,0.0133895340674525,1.49486270904462e-12,0.00694023431939965,0.0117274615173836,-0.0135387324407556,1.56114635223473e-13,0.00694023431939965,0.0117274615173836,-0.0135387324407556,4.07705413195105e-13,0.00736403398643542,0.00463453050872591,0.032694775937525,1.94346605130317e-13,0.00067299406765282,0.00480496954567517,-0.0218039597356743,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-41.9058715266948,93.9676379957689,7.62684422400226,33517659861.4591,0.00681002758042735,0.0063764912742235,0.0133895340674525,1.49486270904462e-12,0.00989302778116676,0.0042298985384599,0.0522716636788566,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00912370680497019,0.00880921989790258,0.0214438424106181,1.49486270904462e-12,0.0161637244974121,0.0125534933521342,0.052951837513805,1.56114635223473e-13,0.0161637244974121,0.0125534933521342,0.052951837513805,4.07705413195105e-13,0.00260474232394639,0.00376631849423008,0.00417471349199114,1.94346605130317e-13,0.000539330864181998,0.00161439416659682,0.0283372846998635,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +32.7348793467866,71.7553123140063,19.3022144846414,33517659861.4591,0.00912370680497019,0.00880921989790258,0.0214438424106181,1.49486270904462e-12,0.00385474748274519,0.000329319470288681,-0.00119207933627936,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00814814622027346,0.00766529967086717,0.0192542315982783,1.49486270904462e-12,0.012656107197382,0.0133727606596001,0.0281865479262945,1.56114635223473e-13,0.012656107197382,0.0133727606596001,0.0281865479262945,4.07705413195105e-13,0.009032421964733,0.00541191055260328,0.0401303021974623,1.94346605130317e-13,0.000322347090333402,-0.00284650919548967,-0.00107117681825758,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-19.3469928961547,-18.8617516142944,3.03058396302504,33517659861.4591,0.00814814622027346,0.00766529967086717,0.0192542315982783,1.49486270904462e-12,0.0143299643638866,0.00697433919137972,0.0571416581418196,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0124348756672703,0.0118225358123239,0.0303538347510373,1.49486270904462e-12,0.0195770103415263,0.0149339401908514,0.0676569078493615,1.56114635223473e-13,0.0195770103415263,0.0149339401908514,0.0676569078493615,4.07705413195105e-13,-0.00132103218354302,-0.00182731528197306,0.000992287283571047,1.94346605130317e-13,0.00290110024263374,0.00486449700277011,0.0308783953161437,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-12.3627525226768,45.5852212783397,-5.43212057849599,33517659861.4591,0.0124348756672703,0.0118225358123239,0.0303538347510373,1.49486270904462e-12,-0.00494257819453666,-0.000926501312991719,0.0199140537663131,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00751287016580797,0.00687465002611424,0.0197369788179712,1.49486270904462e-12,0.0107086585603179,0.00961160868776431,0.0305418030506903,1.56114635223473e-13,0.0107086585603179,0.00961160868776431,0.0305418030506903,4.07705413195105e-13,-0.000188288121848474,0.00212239565396301,-0.0118683103420399,1.94346605130317e-13,-0.00321636108758424,-0.000494906187813974,0.0112215780894269,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-39.6727334460945,102.614150238434,1.14609676893548,33517659861.4591,0.00751287016580797,0.00687465002611424,0.0197369788179712,1.49486270904462e-12,-0.00262616325638192,0.00460292898046249,-0.0103726904665744,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00635857795807371,0.00570255458726946,0.0161670498542586,1.49486270904462e-12,0.00745551771984682,0.00921228019468965,0.00736851386386437,1.56114635223473e-13,0.00745551771984682,0.00921228019468965,0.00736851386386437,4.07705413195105e-13,0.00169115871096124,0.00433827140367585,-0.0064066717683844,1.94346605130317e-13,-0.00256881081042077,0.00131987799429713,-0.00551441742539226,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-55.3029248647362,100.61091059155,14.8352044241773,33517659861.4591,0.00635857795807371,0.00570255458726946,0.0161670498542586,1.49486270904462e-12,0.00087682031588021,0.00689873894274819,-0.006794256640741,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00722303941865853,0.00658746641054998,0.0176427521098936,1.49486270904462e-12,0.00880897481862912,0.0107742108028324,0.0111828300372196,1.56114635223473e-13,0.00880897481862912,0.0107742108028324,0.0111828300372196,4.07705413195105e-13,0.00355346001848417,0.00363758531392067,0.0136243940895955,1.94346605130317e-13,-0.0015735765446752,0.00214273872378197,-0.00425514841370806,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +51.8383276465774,-3.92192109009704,13.1731509686011,33517659861.4591,0.00722303941865853,0.00658746641054998,0.0176427521098936,1.49486270904462e-12,0.00431811978622121,0.00323633268101209,0.0243766669038024,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00749164996195842,0.00707356029715935,0.0182218293972409,1.49486270904462e-12,0.0119293157331602,0.0111438518310331,0.035066363199876,1.56114635223473e-13,0.0119293157331602,0.0111438518310331,0.035066363199876,4.07705413195105e-13,0.00599925805462839,0.00180973411906967,0.033643811563063,1.94346605130317e-13,-0.000388156528280443,0.000234473746580284,0.012958229761387,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +124.690064461269,-52.0022929607288,-1.55752853398159,33517659861.4591,0.00749164996195842,0.00707356029715935,0.0182218293972409,1.49486270904462e-12,0.0121865967753431,-0.00594794128004435,0.0304221193471056,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00683217375586809,0.00691899157511874,0.0148982294486046,1.49486270904462e-12,0.0149078695170199,0.00990790519321091,0.0573579386228933,1.56114635223473e-13,0.0149078695170199,0.00990790519321091,0.0573579386228933,4.07705413195105e-13,0.00563331132705412,0.00186303543017504,0.0240505550723968,1.94346605130317e-13,0.00477037722028162,-0.0043951018458814,0.0170883290320227,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-65.6952426993823,92.9272138060177,-9.32199601094304,33517659861.4591,0.00683217375586809,0.00691899157511874,0.0148982294486046,1.49486270904462e-12,0.0108939637970784,-0.00134354101750567,0.0174322536732009,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00801025111049889,0.00775808173722371,0.0184129405532616,1.49486270904462e-12,0.0136971416674183,0.0097411079280763,0.0431056428884282,1.56114635223473e-13,0.0136971416674183,0.0097411079280763,0.0431056428884282,4.07705413195105e-13,-0.0026016556731772,0.00275615978768051,-0.0299018603987887,1.94346605130317e-13,0.00402899588552821,-0.000243821919144566,0.00995742108661734,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-94.3345332719574,123.071276839126,7.92795251433696,33517659861.4591,0.00801025111049889,0.00775808173722371,0.0184129405532616,1.49486270904462e-12,-0.00821717206688064,0.0101550173368469,-0.0260421951038567,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00745062867459822,0.0063560566655521,0.0197443317698472,1.49486270904462e-12,0.00511671917254553,0.0104791438686129,-0.0140759891580695,1.56114635223473e-13,0.00511671917254553,0.0104791438686129,-0.0140759891580695,4.07705413195105e-13,0.000441271295702603,0.00339701643395804,-0.00653118719521913,1.94346605130317e-13,-0.00532364012892728,0.00447576686173277,-0.0145587062965927,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +218.601298771407,30.2032380239785,0.0683514533395666,33517659861.4591,0.00745062867459822,0.0063560566655521,0.0197443317698472,1.49486270904462e-12,-0.00404189597180704,0.000919444576843157,0.0078339576123198,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00415480183923854,0.00386291528830898,0.0102836479975212,1.49486270904462e-12,0.00837854320770707,0.0102220603525829,0.014168647877017,1.56114635223473e-13,0.00837854320770707,0.0102220603525829,0.014168647877017,4.07705413195105e-13,0.0151927412100008,0.0102227268179207,0.0471361384131277,1.94346605130317e-13,-0.00496981050491589,-0.00440164480792292,0.00547025489141685,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-16.6364708410254,-63.4086288447503,1.98841754075718,33517659861.4591,0.00415480183923854,0.00386291528830898,0.0102836479975212,1.49486270904462e-12,0.0344306735645181,0.00490653722568506,-0.00403083548395126,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0146337562368124,0.0144572763736329,0.0304667070822706,1.49486270904462e-12,0.0232219637018119,0.0172882622582091,0.0690182665816701,1.56114635223473e-13,0.0232219637018119,0.0172882622582091,0.0690182665816701,4.07705413195105e-13,-0.00310194871088669,-0.00427528719026269,-0.000275469483041515,1.94346605130317e-13,0.0153635117019448,0.00387625955409871,-0.0026132855779959,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +65.5508619081096,-31.1168906434598,-3.45234281222944,33517659861.4591,0.0146337562368124,0.0144572763736329,0.0304667070822706,1.49486270904462e-12,-0.00487759324682351,-0.00851627221429034,0.00386340111400809,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00684642486720358,0.00654215114506605,0.0157493223396855,1.49486270904462e-12,0.0105395209768425,0.00927485552512891,0.0279335656430321,1.56114635223473e-13,0.0105395209768425,0.00927485552512891,0.0279335656430321,4.07705413195105e-13,0.00224880193708555,0.00075887465227677,0.00813741387459991,1.94346605130317e-13,-0.000783357986853592,-0.00508978873338023,0.00246703858669925,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-18.5388799017535,-13.7578949020582,-3.50957693249167,33517659861.4591,0.00684642486720358,0.00654215114506605,0.0157493223396855,1.49486270904462e-12,0.00629301142541868,-0.000783659474730117,-0.00523022781730483,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00666335562958096,0.00642425361804316,0.0146930662677685,1.49486270904462e-12,0.00956500273305469,0.00768114955383386,0.0253425358702519,1.56114635223473e-13,0.00956500273305469,0.00768114955383386,0.0253425358702519,4.07705413195105e-13,-0.00247630721237017,-0.00151374043233006,-0.0100023409418261,1.94346605130317e-13,0.00357443355956758,0.000342831130737583,-0.0028426183907704,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +20.4617173166502,-30.3471738776573,-6.5026643057937,33517659861.4591,0.00666335562958096,0.00642425361804316,0.0146930662677685,1.49486270904462e-12,-0.00499236105935494,0.000412003115319299,-0.00547384031273995,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00376590203731128,0.00337514628660913,0.0094642295795131,1.49486270904462e-12,0.00354179496445613,0.00440080059305257,0.00255067543313921,1.56114635223473e-13,0.00354179496445613,0.00440080059305257,0.00255067543313921,4.07705413195105e-13,-0.00126537004032757,-0.000953474299077557,-0.0067625726413038,1.94346605130317e-13,-0.00187080039423012,0.000638202270821919,-0.00271294525893247,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +65.0793087089777,25.7999922426912,-12.2132944694486,33517659861.4591,0.00376590203731128,0.00337514628660913,0.0094642295795131,1.49486270904462e-12,-0.00282761118634165,-0.00294245054261727,-0.00833134293587332,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0008190283903607,0.000815657162250728,0.00152491748649155,1.49486270904462e-12,0.00211395845795384,0.0021326102595314,0.00126619967672394,1.56114635223473e-13,0.00211395845795384,0.0021326102595314,0.00126619967672394,4.07705413195105e-13,0.00254726392875919,0.00398714215438011,-0.00684663296965466,1.94346605130317e-13,-0.0011756676069842,-0.00271785674480543,-0.00358232760069178,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +12.7371967123984,-39.3908576332481,-9.22644263778827,33517659861.4591,0.0008190283903607,0.000815657162250728,0.00152491748649155,1.49486270904462e-12,0.00634339173006941,0.00667187592261003,-0.0288804912583653,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00491170077135417,0.0045320345232061,0.0106894322523682,1.49486270904462e-12,0.00414106305401205,0.00558667243004165,-0.00422233951230293,1.56114635223473e-13,0.00414106305401205,0.00558667243004165,-0.00422233951230293,4.07705413195105e-13,-0.00269686122108427,-0.00177582832430775,-0.0130910083657162,1.94346605130317e-13,0.00302135706641807,0.00418448661796575,-0.0154374024124071,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +114.495131730365,-163.891485060134,-15.0568581713141,33517659861.4591,0.00491170077135417,0.0045320345232061,0.0106894322523682,1.49486270904462e-12,-0.00216406093184363,-0.00109503962797457,-0.0261617241556899,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00259782247002137,0.00246403755624901,0.00491619865623051,1.49486270904462e-12,0.00145475993351448,0.00217756036031823,-0.00512337717725798,1.56114635223473e-13,0.00145475993351448,0.00217756036031823,-0.00512337717725798,4.07705413195105e-13,-0.00226737048079115,-0.00496306038732588,-0.00138253235730056,1.94346605130317e-13,0.00129287990599606,0.000480370914048861,-0.0136677903846186,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +6.73717754735173,-153.951650660253,-29.3166429424016,33517659861.4591,0.00259782247002137,0.00246403755624901,0.00491619865623051,1.49486270904462e-12,0.000618328989573829,-0.0044227023544952,-0.0159193865161454,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.000548733754109249,0.000718025935657757,-0.000375166860986851,1.49486270904462e-12,-0.000714336337177232,-0.0034038414555492,0.000666084891116418,1.56114635223473e-13,-0.000714336337177232,-0.0034038414555492,0.000666084891116418,4.07705413195105e-13,-0.0118488127955074,-0.00860223206708127,-0.0488897254742401,1.94346605130317e-13,0.00393048779677243,0.0016677755751128,-0.00794067178304592,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-45.5006735713504,269.941485228924,-7.94985619066494,33517659861.4591,0.000548733754109249,0.000718025935657757,-0.000375166860986851,1.49486270904462e-12,-0.0212566653344526,-0.0160208425106203,-0.0646710153887649,0.000144041319312193,0.000107731242907984,0.00313160189549853,-0.0110690653164519,-0.0104124851523247,-0.0278687695217132,1.49486270904462e-12,-0.0146263815506043,-0.0105023844774883,-0.0604276170775215,1.56114635223473e-13,-0.0146263815506043,-0.0105023844774883,-0.0604276170775215,4.07705413195105e-13,0.00586388216857252,0.0136822572678558,-0.0229424640005881,1.94346605130317e-13,-0.006081550029739,-0.0124528481728636,-0.0341275163579622,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-23.754844438425,144.210330577527,31.3274779423346,33517659861.4591,-0.0110690653164519,-0.0104124851523247,-0.0278687695217132,1.49486270904462e-12,0.00920880720453364,0.0177616457478626,-0.0578402226567034,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.000927413583236346,0.00054425286844952,0.000820458017041371,1.49486270904462e-12,-0.00280660324402703,0.00563426577695793,-0.0467587283627715,1.56114635223473e-13,-0.00280660324402703,0.00563426577695793,-0.0467587283627715,4.07705413195105e-13,0.0108122132704087,0.00738624460125218,0.048654106696458,1.94346605130317e-13,0.000946345132108778,0.0050300725841592,-0.0325195852421958,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +137.993223229124,-126.907758399257,9.47545010622735,33517659861.4591,0.000927413583236346,0.00054425286844952,0.000820458017041371,1.49486270904462e-12,0.0173993934260675,0.00643016486953727,0.0679271842764156,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00744238483084485,0.00740004995789894,0.0170807111155517,1.49486270904462e-12,0.0147666360000348,0.0102726099425419,0.0599830665468238,1.56114635223473e-13,0.0147666360000348,0.0102726099425419,0.0599830665468238,4.07705413195105e-13,0.00594626174107451,-0.00189358593258378,0.0456464179195237,1.94346605130317e-13,0.00356017100926909,0.00296560297971863,0.0368427381595328,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-127.097699019737,31.9044255097402,-5.91951015131408,33517659861.4591,0.00744238483084485,0.00740004995789894,0.0170807111155517,1.49486270904462e-12,0.0131244398485365,-0.00666896418121892,0.0497198337576678,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00704017018998279,0.00710492911418994,0.016186265071071,1.49486270904462e-12,0.0143964553656917,0.00608416322532174,0.0678560908566529,1.56114635223473e-13,0.0143964553656917,0.00608416322532174,0.0678560908566529,4.07705413195105e-13,-0.00817499319947925,-0.00311940773203945,-0.0373763534187359,1.94346605130317e-13,0.00617036931368965,-0.00062826888167239,0.0268870190929843,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +106.28791294267,-73.8438252863128,5.60433904405927,33517659861.4591,0.00704017018998279,0.00710492911418994,0.016186265071071,1.49486270904462e-12,-0.0150515729140038,-0.00168635114277435,-0.0383974859850748,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.000808354858043987,0.000272499148916572,0.00344208274662973,1.49486270904462e-12,-0.00303121408412684,0.00253193751342345,-0.0278179437049749,1.56114635223473e-13,-0.00303121408412684,0.00253193751342345,-0.0278179437049749,4.07705413195105e-13,0.00514476443937414,-9.183143129399e-05,0.0323010125045932,1.94346605130317e-13,-0.00498018863989418,-0.00253193751342345,-0.0209583856657879,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +35.7601787664249,-143.640191287672,-21.1694395979965,33517659861.4591,0.000808354858043987,0.000272499148916572,0.00344208274662973,1.49486270904462e-12,0.0112687233318529,-0.000282826492473459,0.0359819888608333,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00323275687877519,0.00343871000223265,0.00676012964966619,1.49486270904462e-12,0.00695756960967286,0.000857610118349961,0.040017796881252,1.56114635223473e-13,0.00695756960967286,0.000857610118349961,0.040017796881252,4.07705413195105e-13,-0.00783821525435114,-0.0068713887225669,-0.02871490093795,1.94346605130317e-13,0.00511950858022404,0.00318881171379858,0.0202021778909665,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-86.6303642392638,137.825760748817,-23.9797437997768,33517659861.4591,0.00323275687877519,0.00343871000223265,0.00676012964966619,1.49486270904462e-12,-0.0157686670764681,-0.00534609259127328,-0.0205835054517736,0.000144041319312193,0.000107731242907984,0.00313160189549853,-0.00364933841618962,-0.0037478836747177,-0.00733072507978981,1.49486270904462e-12,-0.00693809264573687,-0.00530587926144403,-0.0294852429598855,1.56114635223473e-13,-0.00693809264573687,-0.00530587926144403,-0.0294852429598855,4.07705413195105e-13,-0.00534818295765503,0.00449184364068604,-0.0593785340757103,1.94346605130317e-13,-0.00559781755195609,-0.00227823575598226,-0.0100673656808039,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +77.533993135968,6.46532609335702,-8.19644614914367,33517659861.4591,-0.00364933841618962,-0.0037478836747177,-0.00733072507978981,1.49486270904462e-12,-0.0128978952191482,0.0148282526369133,-0.0703702008932325,0.000144041319312193,0.000107731242907984,0.00313160189549853,-0.00110890941465681,-0.00188703209677683,-0.00115654433710408,1.49486270904462e-12,-0.00975420644775653,0.000526542788803203,-0.0723924420410357,1.56114635223473e-13,-0.00975420644775653,0.000526542788803203,-0.0723924420410357,4.07705413195105e-13,0.00345715590990803,0.00336975431766589,0.00266375099999682,1.94346605130317e-13,-0.00679302718758131,0.005910573849439,-0.0376267137685636,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +43.8420627918502,12.5705759729861,-14.2138598846208,33517659861.4591,-0.00110890941465681,-0.00188703209677683,-0.00115654433710408,1.49486270904462e-12,0.00651329856208439,0.0031352448651851,-0.00981375022025145,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00151147083502405,0.00166571294680259,0.00154159221747552,1.49486270904462e-12,0.00326584638185548,0.0023206908280304,0.00357120845424308,1.56114635223473e-13,0.00326584638185548,0.0023206908280304,0.00357120845424308,4.07705413195105e-13,0.000242869067832052,0.00240118915636552,-0.0148492814936872,1.94346605130317e-13,0.0021385427655721,0.00127231449537572,-0.00445822641311621,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-26.087616058939,174.772168919,-26.4824508397137,33517659861.4591,0.00151147083502405,0.00166571294680259,0.00154159221747552,1.49486270904462e-12,-0.00537419660358911,0.00790667846604615,0.00119973984358592,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00256167178284786,0.00199483169318322,0.0077433792280467,1.49486270904462e-12,0.00192146828043627,0.00435768736141024,-0.0141114078029748,1.56114635223473e-13,0.00192146828043627,0.00435768736141024,-0.0141114078029748,4.07705413195105e-13,-0.00057193860125882,0.00895631113021499,-0.0505886165627429,1.94346605130317e-13,-0.00578419404900133,0.00327998908864739,0.00237200823287209,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-41.9599997653983,116.827755002236,10.5445760784149,33517659861.4591,0.00256167178284786,0.00199483169318322,0.0077433792280467,1.49486270904462e-12,-0.00177256828764508,0.0167138426043496,-0.0879533181134505,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00730354786208366,0.00623369327796682,0.0168625572063005,1.49486270904462e-12,0.00255469011278584,0.0118831058640825,-0.045044600244867,1.56114635223473e-13,0.00255469011278584,0.0118831058640825,-0.045044600244867,4.07705413195105e-13,0.00411633418130856,0.00507818478099522,0.00918462094593487,1.94346605130317e-13,-0.00176558661758306,0.00618744246939727,-0.0482232837657116,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +12.5115648828299,130.951995395143,21.2294320420918,33517659861.4591,0.00730354786208366,0.00623369327796682,0.0168625572063005,1.49486270904462e-12,0.00505697687449512,0.00170073644550354,0.00986475726755438,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00686957510031888,0.00672000197154523,0.0146367645535466,1.49486270904462e-12,0.0127864333521119,0.0124669315913108,0.0299833296161972,1.56114635223473e-13,0.0127864333521119,0.0124669315913108,0.0299833296161972,4.07705413195105e-13,0.0104506993393305,0.00802003754453033,0.0391701720243118,1.94346605130317e-13,-0.000425908615533164,-0.00271198625457829,0.00500336235040768,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-42.9132748282413,110.713057911337,16.1933698456966,33517659861.4591,0.00686957510031888,0.00672000197154523,0.0146367645535466,1.49486270904462e-12,0.0153577601883624,0.0073983849900558,0.0537270291552346,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0121246187796301,0.0115313431643963,0.0293395501604883,1.49486270904462e-12,0.0202588995493278,0.0170926286716105,0.063325908123809,1.56114635223473e-13,0.0202588995493278,0.0170926286716105,0.063325908123809,4.07705413195105e-13,0.00503150446708524,0.00469968322811579,0.0186232650455739,1.94346605130317e-13,0.00196843573935347,0.00255456391863814,0.0288099414072115,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-51.212799339313,87.6839902430025,26.269107276077,33517659861.4591,0.0121246187796301,0.0115313431643963,0.0293395501604883,1.49486270904462e-12,0.00740319532589257,0.00333348045119509,0.024142017200366,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0123114603317965,0.0115676223943752,0.0299963777726589,1.49486270904462e-12,0.0187037685395646,0.0174714718179135,0.0529887749641955,1.56114635223473e-13,0.0187037685395646,0.0174714718179135,0.0529887749641955,4.07705413195105e-13,0.00577016941620227,0.00307380819051896,0.0340220882986103,1.94346605130317e-13,0.000824045565957982,5.85078807106452e-05,0.0120888326728905,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +26.4455325273915,-13.2408261768903,17.6420130196764,33517659861.4591,0.0123114603317965,0.0115676223943752,0.0299963777726589,1.49486270904462e-12,0.00814849961075627,0.0012291417533252,0.0559186204130257,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0117055007999889,0.0111392831252731,0.0289814443826843,1.49486270904462e-12,0.0196896338365533,0.0158048525090018,0.0703009234155919,1.56114635223473e-13,0.0196896338365533,0.0158048525090018,0.0703009234155919,4.07705413195105e-13,0.00497069066360006,0.000296394519144236,0.0358096484694146,1.94346605130317e-13,0.000770326105999466,-7.46221552643353e-05,0.0298100362696637,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +56.6561644991219,18.9051829262445,-1.73679760172928,33517659861.4591,0.0117055007999889,0.0111392831252731,0.0289814443826843,1.49486270904462e-12,0.0075046650101351,-0.00531253612638108,0.0537034646068998,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00887255634952811,0.00863361355581464,0.021810909040761,1.49486270904462e-12,0.0177860983290326,0.0121543538522733,0.0698076352807193,1.56114635223473e-13,0.0177860983290326,0.0121543538522733,0.0698076352807193,4.07705413195105e-13,0.0039909326230442,0.00328126126710627,0.00923555720841698,1.94346605130317e-13,0.00142406748109144,-0.00362592160499526,0.0297352435972969,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +46.556880870867,-34.790187135224,-6.58468260411563,33517659861.4591,0.00887255634952811,0.00863361355581464,0.021810909040761,1.49486270904462e-12,0.00824520715305998,0.00261529986632864,-0.00221017919846166,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0101097924715512,0.00948592321652524,0.0240837685506231,1.49486270904462e-12,0.0139260497240344,0.0128231985740457,0.0339760652802384,1.56114635223473e-13,0.0139260497240344,0.0128231985740457,0.0339760652802384,4.07705413195105e-13,0.000216180877719118,-0.000194311859511621,-0.00130239134363918,1.94346605130317e-13,0.00319171377855372,0.00139399584468109,-0.000816157720694961,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +65.7157233886139,23.9205706449061,-17.8070210254823,33517659861.4591,0.0101097924715512,0.00948592321652524,0.0240837685506231,1.49486270904462e-12,-0.000438275887153759,-0.00165976741318571,-0.00127773526892528,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00673610008726181,0.00635661333344563,0.0158151515383577,1.49486270904462e-12,0.0102928260950921,0.00928685698610682,0.0224669135051785,1.56114635223473e-13,0.0102928260950921,0.00928685698610682,0.0224669135051785,4.07705413195105e-13,0.00131305837245509,0.00389551472031802,-0.0162716918287185,1.94346605130317e-13,-0.000621309510694663,-0.00161848084347799,0.000511227196132735,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +24.9035185141572,72.5170452141339,-17.4341682247067,33517659861.4591,0.00673610008726181,0.00635661333344563,0.0158151515383577,1.49486270904462e-12,0.00137199534061357,0.00624133038855447,-0.031204950467992,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00770167344416939,0.00702253259188974,0.0179636058321538,1.49486270904462e-12,0.00853651536958433,0.0108535075734114,-0.000690405341132957,1.56114635223473e-13,0.00853651536958433,0.0108535075734114,-0.000690405341132957,4.07705413195105e-13,0.00066649960080516,0.00509417245455281,-0.0243285716984973,1.94346605130317e-13,-0.000428419941708952,0.00223835553973861,-0.0158520079550637,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +18.9700942249814,11.692599798466,-4.84167762933253,33517659861.4591,0.00770167344416939,0.00702253259188974,0.0179636058321538,1.49486270904462e-12,0.00169072902555578,0.00919642242035884,-0.0491852983767899,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00940606041570943,0.00859391945368958,0.0212220577915167,1.49486270904462e-12,0.00885636519509098,0.0127738569144195,-0.00704015248430489,1.56114635223473e-13,0.00885636519509098,0.0127738569144195,-0.00704015248430489,4.07705413195105e-13,0.00062920533485417,0.00139920621886531,-0.00417932493868622,1.94346605130317e-13,0.000536037274634192,0.00405376186379248,-0.0264856085927312,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +40.5087940983069,77.6077966962531,-9.79553718960887,33517659861.4591,0.00940606041570943,0.00859391945368958,0.0212220577915167,1.49486270904462e-12,-0.000974838047209069,0.000809683544793383,-0.00184769442062305,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00672452508603251,0.00636074492705435,0.0152292327131592,1.49486270904462e-12,0.0102527946310104,0.010232400234435,0.0171892737064354,1.56114635223473e-13,0.0102527946310104,0.010232400234435,0.0171892737064354,4.07705413195105e-13,0.00350538903642151,0.00600390850319246,-0.00791410276608407,1.94346605130317e-13,-0.00182157226251002,-0.00117973969216472,-7.49374562447858e-05,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +6.58526397209938,-59.4096072610156,2.18761942011731,33517659861.4591,0.00672452508603251,0.00636074492705435,0.0152292327131592,1.49486270904462e-12,0.00877538827854273,0.00930212409124825,-0.0369442127961734,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0109160109876757,0.010142218711594,0.0245931496117304,1.49486270904462e-12,0.0114055512096128,0.0135151524962729,0.00934093885384074,1.56114635223473e-13,0.0114055512096128,0.0135151524962729,0.00934093885384074,4.07705413195105e-13,-0.0014160863210268,-0.00314375756642367,0.00506097120954806,1.94346605130317e-13,0.00409436215496247,0.00530686313669951,-0.0204520339977642,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +87.3498671503042,-12.0391872105582,-12.7487785833545,33517659861.4591,0.0109160109876757,0.010142218711594,0.0245931496117304,1.49486270904462e-12,-0.00335506396114049,-0.00673675736541696,0.0159449451426014,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00451531633805258,0.00446562177132925,0.0100341209837119,1.49486270904462e-12,0.00893886547981087,0.00644667956565439,0.0286972293989496,1.56114635223473e-13,0.00893886547981087,0.00644667956565439,0.0286972293989496,4.07705413195105e-13,0.00238892487576461,0.00268407599688713,-0.00303511091422656,1.94346605130317e-13,-0.00137791845327567,-0.00424904385845839,0.00965391102249778,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +37.3757301884923,28.158068798423,-16.2041520706562,33517659861.4591,0.00451531633805258,0.00446562177132925,0.0100341209837119,1.49486270904462e-12,0.00504775160375603,0.00202873997685915,-0.0201409565372086,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0057277861669873,0.00538468736785041,0.012726061288696,1.49486270904462e-12,0.00751511372648233,0.00775910985803742,0.00792052746030575,1.56114635223473e-13,0.00751511372648233,0.00775910985803742,0.00792052746030575,4.07705413195105e-13,6.50416247277271e-06,0.00303973452344841,-0.0196156361661122,1.94346605130317e-13,0.00204795421532628,0.000552446398762268,-0.00997744871115874,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +35.6333708632248,68.6073082604823,-16.4340040778218,33517659861.4591,0.0057277861669873,0.00538468736785041,0.012726061288696,1.49486270904462e-12,-0.00171860795947995,0.0058258785817868,-0.0286018449523418,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00588221200736886,0.00528531337495419,0.0137826881169724,1.49486270904462e-12,0.00590408064170284,0.00875568436566725,-0.00800468056868636,1.56114635223473e-13,0.00590408064170284,0.00875568436566725,-0.00800468056868636,4.07705413195105e-13,0.00141692697318214,0.00528862766696901,-0.0203199149254353,1.94346605130317e-13,-0.0018949024341955,0.00183618138008141,-0.0144378239126928,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-37.0930941544785,3.6593080370905,-1.53185478187798,33517659861.4591,0.00588221200736886,0.00528531337495419,0.0137826881169724,1.49486270904462e-12,0.00371297644361132,0.0107156983370612,-0.0461415794117947,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00915477391533932,0.00836439464961122,0.0206413796894923,1.49486270904462e-12,0.00795604186679056,0.0113544843234317,-0.00657253028360305,1.56114635223473e-13,0.00795604186679056,0.0113544843234317,-0.00657253028360305,4.07705413195105e-13,-0.00256336292095962,-0.0012338280086235,-0.0105824819241026,1.94346605130317e-13,0.00163914658418961,0.00598320180000138,-0.0252802479999543,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +25.8287170559036,-33.0940645718266,2.3340501577165,33517659861.4591,0.00915477391533932,0.00836439464961122,0.0206413796894923,1.49486270904462e-12,-0.00433297995522415,-0.00080665304800543,-0.0116329349631865,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00503730214835478,0.0047383978131059,0.0111721984208065,1.49486270904462e-12,0.00597400584243471,0.00664532822777978,0.0080000632003268,1.56114635223473e-13,0.00597400584243471,0.00664532822777978,0.0080000632003268,4.07705413195105e-13,0.000870556466659753,-0.000888569863356862,0.00948709483298067,1.94346605130317e-13,-0.00115221188231953,-0.000647462784639712,-0.00645048766034422,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +58.5566573445015,74.8958956884061,-6.23872757733613,33517659861.4591,0.00503730214835478,0.0047383978131059,0.0111721984208065,1.49486270904462e-12,0.000491633591511231,-0.00643756768070088,0.0142441824976034,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00150127147894403,0.00167737058895709,0.00276268045318045,1.49486270904462e-12,0.00600238488172197,0.00386426765658009,0.0214689407342078,1.56114635223473e-13,0.00600238488172197,0.00386426765658009,0.0214689407342078,4.07705413195105e-13,0.00532054354448355,0.00655525337799923,0.00203783347262892,1.94346605130317e-13,-0.000473449141855952,-0.00538644904833995,0.00862704624838676,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-44.3305487467619,89.3434513593782,1.09836013968458,33517659861.4591,0.00150127147894403,0.00167737058895709,0.00276268045318045,1.49486270904462e-12,0.00907664518117762,0.00836313245898102,-0.0130704439498008,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00693097869199102,0.00639737276742774,0.0161786261720558,1.49486270904462e-12,0.00842300266969995,0.0096928921075168,0.00845726155863396,1.56114635223473e-13,0.00842300266969995,0.0096928921075168,0.00845726155863396,4.07705413195105e-13,0.00086693739742386,0.00339709462598046,-0.00750973976237808,1.94346605130317e-13,0.0021549139904217,0.0036152102746627,-0.00705833187077037,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +144.160349610446,-105.796827615193,1.70196746724334,33517659861.4591,0.00693097869199102,0.00639737276742774,0.0161786261720558,1.49486270904462e-12,0.00170456413714168,0.00406755660788333,-0.0159032636596754,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00699672397762832,0.00649827606895956,0.0160912063564206,1.49486270904462e-12,0.00830812014138559,0.010308729827166,0.00945297177945455,1.56114635223473e-13,0.00830812014138559,0.010308729827166,0.00945297177945455,4.07705413195105e-13,0.00549116744090113,-0.000456844967526265,0.0337206365333894,1.94346605130317e-13,0.000327422687747114,0.000769843965054278,-0.00844513856176462,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-1.15950962134292,102.896238517039,-19.4777369400705,33517659861.4591,0.00699672397762832,0.00649827606895956,0.0160912063564206,1.49486270904462e-12,0.00996907579920035,-0.00768697097206633,0.0362298109601832,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00507988002726494,0.00535037410633632,0.0103830595981114,1.49486270904462e-12,0.0134888665509348,0.00671507228215893,0.0540606287946897,1.56114635223473e-13,0.0134888665509348,0.00671507228215893,0.0540606287946897,4.07705413195105e-13,-0.00026212189274667,0.00581858275557654,-0.0333738445128639,1.94346605130317e-13,0.00347693322589386,-0.00431489213349876,0.0210240548561063,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +50.8320537201206,-20.2763015359647,-3.19622176565463,33517659861.4591,0.00507988002726494,0.00535037410633632,0.0103830595981114,1.49486270904462e-12,7.94727902603959e-05,0.0111829560563889,-0.0619560493789128,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00839409087816268,0.00735164742200821,0.0200700614393417,1.49486270904462e-12,0.0051865697382806,0.0117852324766545,-0.0245009404681344,1.56114635223473e-13,0.0051865697382806,0.0117852324766545,-0.0245009404681344,4.07705413195105e-13,0.00178203000950615,0.000808404222119239,0.00542921374300064,1.94346605130317e-13,-2.72169207552695e-05,0.00477670795245906,-0.0334921881558284,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-13.4801649816221,38.2789662062214,-1.54530975899341,33517659861.4591,0.00839409087816268,0.00735164742200821,0.0200700614393417,1.49486270904462e-12,0.00436742247803334,-0.00167664873090785,-0.00501506750893068,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00640719332752091,0.00632563267244454,0.0131154433711706,1.49486270904462e-12,0.0105651886442033,0.00848480593591123,0.0266229382760873,1.56114635223473e-13,0.0105651886442033,0.00848480593591123,0.0266229382760873,4.07705413195105e-13,0.000291465733441848,0.00166652486594034,-0.00547776798707768,1.94346605130317e-13,0.00219632471199271,-0.00123753175130954,-0.00258804803053766,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +30.420102998635,49.1727963327306,-1.37371438130528,33517659861.4591,0.00640719332752091,0.00632563267244454,0.0131154433711706,1.49486270904462e-12,-0.00125761278295975,0.00199167411530503,-0.00324032213993116,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00529769518691944,0.0048541595255279,0.0127860533049353,1.49486270904462e-12,0.00690655664409875,0.0082234600647545,0.00777150460687392,1.56114635223473e-13,0.00690655664409875,0.0082234600647545,0.00777150460687392,4.07705413195105e-13,0.00356402483726501,0.00399630031609092,0.00426555763125902,1.94346605130317e-13,-0.00175697609953759,-0.000358894858316754,-0.00136805034117804,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +38.7393985632407,-47.0848893555373,1.58171903606339,33517659861.4591,0.00529769518691944,0.0048541595255279,0.0127860533049353,1.49486270904462e-12,0.00796665598165695,0.00397937071523472,-0.0118775931527598,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00754009869353325,0.00716319168972075,0.0167710323003881,1.49486270904462e-12,0.00991819369599968,0.00978684050577488,0.0196970544119621,1.56114635223473e-13,0.00991819369599968,0.00978684050577488,0.0196970544119621,4.07705413195105e-13,0.000992481460647568,-0.00118956216773949,0.0109539188875745,1.94346605130317e-13,0.0033461574725767,0.00191469209292667,-0.00654022547896395,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +65.5810192445488,-20.976863359695,-12.4838759541775,33517659861.4591,0.00754009869353325,0.00716319168972075,0.0167710323003881,1.49486270904462e-12,0.00180478586031249,-0.00414290207963355,0.0150980705089574,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00459393549695506,0.00452400635529839,0.010302444557728,1.49486270904462e-12,0.00861384849216326,0.00596767950407632,0.0285675493488832,1.56114635223473e-13,0.00861384849216326,0.00596767950407632,0.0285675493488832,4.07705413195105e-13,0.000704002124003088,0.00132682500951828,-0.00727395044565714,1.94346605130317e-13,0.000731036061682488,-0.00229766557868431,0.00903794849592586,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +50.5967129877436,19.2972779384465,-10.8798896832761,33517659861.4591,0.00459393549695506,0.00452400635529839,0.010302444557728,1.49486270904462e-12,0.00286072129503381,-0.00108651019079337,-0.0279311149820836,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00405979277282546,0.00386797385603756,0.00837844868371621,1.49486270904462e-12,0.00545912985718305,0.00607930152737719,0.00267987611038188,1.56114635223473e-13,0.00545912985718305,0.00607930152737719,0.00267987611038188,4.07705413195105e-13,0.00165332791940162,0.00305409577220095,-0.00769011986013827,1.94346605130317e-13,0.00199552693480582,-0.00161194346869049,-0.0144334714867005,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-19.0836153146964,17.9954910895942,-5.52629624020729,33517659861.4591,0.00405979277282546,0.00386797385603756,0.00837844868371621,1.49486270904462e-12,0.00383986640951358,0.00505834822485872,-0.0242602794122044,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00598453651652824,0.00555905109548824,0.013212253139266,1.49486270904462e-12,0.0062379806463814,0.00748077852393507,0.00119644951260289,1.56114635223473e-13,0.0062379806463814,0.00748077852393507,0.00119644951260289,4.07705413195105e-13,-0.0017109456807176,0.000280801116526819,-0.0135163034145664,1.94346605130317e-13,0.00166167853595763,0.00282789845492744,-0.0130183777644697,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +57.3768675304245,2.1840445215967,-4.39305166293929,33517659861.4591,0.00598453651652824,0.00555905109548824,0.013212253139266,1.49486270904462e-12,-0.00380410446811068,0.000687651511995324,-0.0161605866190476,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0035448219429548,0.00324632707741788,0.00801746693039716,1.49486270904462e-12,0.00393417439687008,0.00563821615178915,-0.00198553545715805,1.56114635223473e-13,0.00393417439687008,0.00563821615178915,-0.00198553545715805,4.07705413195105e-13,0.00281672721382387,0.00234733966448007,0.0048252559407264,1.94346605130317e-13,-0.00175374234845252,-0.000760994115514878,-0.0083307673442006,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +33.7514125881773,-50.7863384995013,-7.1246618016777,33517659861.4591,0.0035448219429548,0.00324632707741788,0.00801746693039716,1.49486270904462e-12,0.0068477050357365,0.00216359363327503,-0.00948995536597765,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00529009988439466,0.00510132959253318,0.0112478315163352,1.49486270904462e-12,0.00708842857708138,0.00623338315045029,0.0146827810518319,1.56114635223473e-13,0.00708842857708138,0.00623338315045029,0.0146827810518319,4.07705413195105e-13,-0.00134167330534283,-0.00160890159713509,-0.00500161272822047,1.94346605130317e-13,0.00330409840160993,0.00164171670619562,-0.00488932233833523,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +50.0316213858492,-65.8277091235952,-15.2285522123718,33517659861.4591,0.00529009988439466,0.00510132959253318,0.0112478315163352,1.49486270904462e-12,-0.00132360958714994,-0.00133042942894974,-0.00932180948707473,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00315633196061487,0.00297710612525569,0.00696849689822032,1.49486270904462e-12,0.00347712580302594,0.00311549246272608,0.00469841839445585,1.56114635223473e-13,0.00347712580302594,0.00311549246272608,0.00469841839445585,4.07705413195105e-13,-0.00262437343832833,-0.00185059626463991,-0.0153751632731276,1.94346605130317e-13,0.000489364494218782,0.000178907218637833,-0.00441444293194461,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +11.6543426708775,-85.0312802145322,-21.6485536295123,33517659861.4591,0.00315633196061487,0.00297710612525569,0.00696849689822032,1.49486270904462e-12,-0.00317146930659423,0.00195385866466211,-0.0238349733609657,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00218815172221426,0.00190435556190105,0.00497226492711299,1.49486270904462e-12,-0.000271567289735545,0.000539091284191789,-0.0115072924657768,1.56114635223473e-13,-0.000271567289735545,0.000539091284191789,-0.0115072924657768,4.07705413195105e-13,-0.00720857101944034,-0.00445150568681181,-0.0346222894985756,1.94346605130317e-13,0.000256429943756191,0.00325014208536771,-0.0123123803810873,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +7.09993209187189,31.8636387164222,-10.0030542261309,33517659861.4591,0.00218815172221426,0.00190435556190105,0.00497226492711299,1.49486270904462e-12,-0.0109881217725865,-0.00574904803852827,-0.0535601920640143,0.000144041319312193,0.000107731242907984,0.00313160189549853,-0.00355421567482401,-0.00339898881608068,-0.00985056457060891,1.49486270904462e-12,-0.0069977738248367,-0.0040544384583797,-0.0367037071686135,1.56114635223473e-13,-0.0069977738248367,-0.0040544384583797,-0.0367037071686135,4.07705413195105e-13,-0.000456679224492829,0.00208543037087916,-0.0155186448839688,1.94346605130317e-13,-0.00180219622553555,-0.00374598641408065,-0.0286250438879315,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +32.5159911288095,78.5508351863981,-1.20775422468902,33517659861.4591,-0.00355421567482401,-0.00339898881608068,-0.00985056457060891,1.49486270904462e-12,-0.00130179888871056,0.00101424496676466,-0.0287379021988481,0.000144041319312193,0.000107731242907984,0.00313160189549853,-0.00263233536125692,-0.00247628644679941,-0.00756098425800762,1.49486270904462e-12,-0.00397189546879241,-0.00114535675458506,-0.026401125419444,1.56114635223473e-13,-0.00397189546879241,-0.00114535675458506,-0.026401125419444,4.07705413195105e-13,0.00487528376296248,0.00576076274078233,0.00504520085013021,1.94346605130317e-13,-0.00088411909474216,-0.00170803570852583,-0.0151660416758408,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-27.4328708086755,32.0591045894182,8.03623889068694,33517659861.4591,-0.00263233536125692,-0.00247628644679941,-0.00756098425800762,1.49486270904462e-12,0.00935895557061147,0.00670434311070527,-0.0106769538295546,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00312188527274873,0.00299297148662897,0.0061419058515017,1.49486270904462e-12,0.0037229461318454,0.0046009117888836,0.00115584710337434,1.56114635223473e-13,0.0037229461318454,0.0046009117888836,0.00115584710337434,4.07705413195105e-13,0.0012148013650766,0.000783092216409094,0.00788795680654882,1.94346605130317e-13,0.00300367407750914,0.00299637616932708,-0.00619636867238825,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +31.7525608231779,-13.4096784485088,3.86903221628507,33517659861.4591,0.00312188527274873,0.00299297148662897,0.0061419058515017,1.49486270904462e-12,0.00108175452443224,0.000422768538824922,0.0167172128754024,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00273500558654232,0.00261786895410599,0.00658589200311606,1.49486270904462e-12,0.00470947520512763,0.00404093142640353,0.015535064626713,1.56114635223473e-13,0.00470947520512763,0.00404093142640353,0.015535064626713,4.07705413195105e-13,0.00234462963866309,0.000471481568586182,0.0134136683763311,1.94346605130317e-13,-0.00050583540794666,-0.000235758929668577,0.00905622954395979,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +11.5423168741027,145.07233791006,-6.59537259039636,33517659861.4591,0.00273500558654232,0.00261786895410599,0.00658589200311606,1.49486270904462e-12,0.00117743670309517,-0.00349086569651024,0.0267774308213316,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00107191376258374,0.00115078663719159,0.00290838126679322,1.49486270904462e-12,0.00559936297431634,0.00346011318325361,0.0220502934490993,1.56114635223473e-13,0.00559936297431634,0.00346011318325361,0.0220502934490993,4.07705413195105e-13,0.00495826645860901,0.00874793111920986,-0.00856479375759081,1.94346605130317e-13,-0.00168692068467885,-0.00390923179553952,0.0155181077041183,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +4.55132609200525,-2.64858924139451,11.2559343998496,33517659861.4591,0.00107191376258374,0.00115078663719159,0.00290838126679322,1.49486270904462e-12,0.00984479598409895,0.012360173297652,-0.036156690350263,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00825249233110549,0.00749749203824212,0.0192102392336907,1.49486270904462e-12,0.00777855791713683,0.0115675980086051,-0.0022641951730862,1.56114635223473e-13,0.00777855791713683,0.0115675980086051,-0.0022641951730862,4.07705413195105e-13,0.00260732390880226,4.26084546708076e-05,0.0202086554598941,1.94346605130317e-13,0.00313815182954585,0.00548749614777803,-0.0202178580608228,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +15.5039582549946,53.5970465598797,-1.83258239833872,33517659861.4591,0.00825249233110549,0.00749749203824212,0.0192102392336907,1.49486270904462e-12,0.00231686293393705,-0.00242394081554032,0.0389185851977041,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00554597738471377,0.00544985042176075,0.0130952116023152,1.49486270904462e-12,0.0114473273136184,0.00790704065863583,0.0421926989177337,1.56114635223473e-13,0.0114473273136184,0.00790704065863583,0.0421926989177337,4.07705413195105e-13,0.00268170373049351,0.00366952245735304,0.000283161886611744,1.94346605130317e-13,-0.000877972048575869,-0.00199941697531162,0.0216007689453341,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +2.35613984795129,34.7193783693602,3.67603323557745,33517659861.4591,0.00554597738471377,0.00544985042176075,0.0130952116023152,1.49486270904462e-12,0.00471944047516668,0.00383926931264423,-0.0091965442987551,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00703785924045896,0.00651735030011223,0.0167813856100567,1.49486270904462e-12,0.00908195244316274,0.00990031640212981,0.0153215940126178,1.56114635223473e-13,0.00908195244316274,0.00990031640212981,0.0153215940126178,4.07705413195105e-13,0.00228967445160116,0.00208598425919092,0.00684208930075762,1.94346605130317e-13,0.00118346541671771,0.00108780557890102,-0.00503703825629553,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-36.8004564699733,2.28395108614968,3.02634261655004,33517659861.4591,0.00703785924045896,0.00651735030011223,0.0167813856100567,1.49486270904462e-12,0.00343076934992559,0.0043861511807761,0.0106728274844172,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00762995801193328,0.00711987100385024,0.0184467571039635,1.49486270904462e-12,0.0099960341195756,0.00915575539950316,0.025643863522674,1.56114635223473e-13,0.0099960341195756,0.00915575539950316,0.025643863522674,4.07705413195105e-13,-0.00161859585780455,-0.00129415187590227,-0.00273242515671006,1.94346605130317e-13,0.000472594470808957,0.00298282571928924,0.00551596471928872,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +22.1785748710689,47.9010279095447,-3.69350245280427,33517659861.4591,0.00762995801193328,0.00711987100385024,0.0184467571039635,1.49486270904462e-12,-0.00579382003419476,-0.00100261897159654,0.0147978520144522,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00354146849934293,0.0032056716080325,0.00963352082874461,1.49486270904462e-12,0.00560326708634243,0.00546532763631136,0.0146939568047232,1.56114635223473e-13,0.00560326708634243,0.00546532763631136,0.0146939568047232,4.07705413195105e-13,0.00248815559793121,0.00359966582486127,-0.00147152354813291,1.94346605130317e-13,-0.00376712910860391,-0.00143385532867536,0.00853245079834119,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-47.574864491942,100.010294163281,0.763480849061745,33517659861.4591,0.00354146849934293,0.0032056716080325,0.00963352082874461,1.49486270904462e-12,0.00283602874711494,0.00532313917312599,-0.00387859802160403,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00526246347877641,0.004808643933096,0.012952539001115,1.49486270904462e-12,0.00682516574155737,0.00754959020671402,0.00982444186600056,1.56114635223473e-13,0.00682516574155737,0.00754959020671402,0.00982444186600056,4.07705413195105e-13,0.00100153538599173,0.00388153240888569,-0.00876254265401829,1.94346605130317e-13,-0.000447668495099504,0.00200019313214445,-0.00200282164225722,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +9.05283294878116,45.0399213494243,10.4097296870274,33517659861.4591,0.00526246347877641,0.004808643933096,0.012952539001115,1.49486270904462e-12,-1.22222873573776e-05,0.00599927758242213,-0.0101126080265197,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00594887169621427,0.005383863603081,0.0145546680799439,1.49486270904462e-12,0.00684495783005462,0.00927843770848505,0.00505875670773283,1.56114635223473e-13,0.00684495783005462,0.00927843770848505,0.00505875670773283,4.07705413195105e-13,0.00456656221102338,0.00294778177146959,0.0198040368163294,1.94346605130317e-13,-0.00159471663863559,0.00152508377406554,-0.00576344024791088,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-39.1023613912805,76.570590459392,11.4255360445339,33517659861.4591,0.00594887169621427,0.005383863603081,0.0145546680799439,1.49486270904462e-12,0.00717059529426723,0.000891708864521177,0.0242664344153849,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00652122566850983,0.00632556251657741,0.0151282655583943,1.49486270904462e-12,0.0117534648350955,0.00929620497338455,0.0385911556202411,1.56114635223473e-13,0.0117534648350955,0.00929620497338455,0.0385911556202411,4.07705413195105e-13,0.00292473170490267,0.00288463434507463,0.0112414974564845,1.94346605130317e-13,0.00136600215538602,-0.000439212615286879,0.0128337519010223,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +63.4811435830797,-28.591466832275,4.26123106987395,33517659861.4591,0.00652122566850983,0.00632556251657741,0.0151282655583943,1.49486270904462e-12,0.0031670277940235,0.00360751088413066,0.0234326273248196,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00709594297629602,0.00657665847570874,0.0179863506278178,1.49486270904462e-12,0.0103774283665932,0.00995236387270717,0.0294385639752504,1.56114635223473e-13,0.0103774283665932,0.00995236387270717,0.0294385639752504,4.07705413195105e-13,0.00387178618816669,0.000835118311612789,0.0208780125448811,1.94346605130317e-13,-0.000689174904059877,0.00112084200037463,0.0128022555919251,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-12.3334601459309,44.4880128045878,-7.06622926202908,33517659861.4591,0.00709594297629602,0.00657665847570874,0.0179863506278178,1.49486270904462e-12,0.00648975582532584,-0.00151916362035585,0.0258908497068499,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00642107419572092,0.00623551522485953,0.0152286167613927,1.49486270904462e-12,0.0118140098119211,0.00802726529450305,0.0420984629590074,1.56114635223473e-13,0.0118140098119211,0.00802726529450305,0.0420984629590074,4.07705413195105e-13,-0.000580169827164026,0.00205814429126154,-0.0146561827598872,1.94346605130317e-13,0.00177168898970071,-0.000633453287720815,0.0145515660324323,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +20.6499460715496,13.5508813866711,6.84831076247986,33517659861.4591,0.00642107419572092,0.00623551522485953,0.0152286167613927,1.49486270904462e-12,-6.70239353585921e-07,0.00174434609397157,-0.032344649376683,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00562525443404036,0.00513695778644076,0.0129907058341217,1.49486270904462e-12,0.00587825587264195,0.00844705518213684,-0.000341364764245601,1.56114635223473e-13,0.00587825587264195,0.00844705518213684,-0.000341364764245601,4.07705413195105e-13,0.00332092683847715,0.00158908846414173,0.0161610620746832,1.94346605130317e-13,0.000542148083725385,-0.000467435149995034,-0.0178000188050036,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +24.2586162411147,-53.7017429043795,-5.53793318793011,33517659861.4591,0.00562525443404036,0.00513695778644076,0.0129907058341217,1.49486270904462e-12,0.00541952305892215,0.00273112343581673,0.0242578789514799,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00646921883675479,0.00618166680229175,0.0153253315705455,1.49486270904462e-12,0.00978533674124427,0.00736134835567216,0.0321691710763727,1.56114635223473e-13,0.00978533674124427,0.00736134835567216,0.0321691710763727,4.07705413195105e-13,-0.00172213932334213,-0.00214222052249786,-0.00433443415466239,1.94346605130317e-13,0.00125944075171824,0.0024577653885972,0.0133975599297638,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +16.6656678108662,50.1944393221232,-12.3265186587598,33517659861.4591,0.00646921883675479,0.00618166680229175,0.0153253315705455,1.49486270904462e-12,-0.00401897882991766,-0.00356832002935911,4.99435559946533e-05,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00243742628285008,0.00227005143829108,0.00608657668415965,1.49486270904462e-12,0.00416428540402947,0.00355234162313742,0.00926274969736634,1.56114635223473e-13,0.00416428540402947,0.00355234162313742,0.00926274969736634,4.07705413195105e-13,0.00036903411443866,0.00350343431492974,-0.0174051567966556,1.94346605130317e-13,-0.00171404539719234,-0.00238583035901172,0.000849907428142679,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +23.0117209191182,49.1543306589748,-6.69166832719374,33517659861.4591,0.00243742628285008,0.00227005143829108,0.00608657668415965,1.49486270904462e-12,-0.000290101740195205,0.0059951233679762,-0.0292975200162365,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0039331079724754,0.00345141654904579,0.00935377300971847,1.49486270904462e-12,0.0031226279341956,0.00621310767264873,-0.0118744053957348,1.56114635223473e-13,0.0031226279341956,0.00621310767264873,-0.0118744053957348,4.07705413195105e-13,0.00194598473790454,0.00369916049978279,-0.00641399206116583,1.94346605130317e-13,-0.000975303391540729,0.00194763028121301,-0.0153874323378182,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-0.653462593723129,28.8326071422075,4.01329086683238,33517659861.4591,0.0039331079724754,0.00345141654904579,0.00935377300971847,1.49486270904462e-12,0.00443628048988384,0.00384879918112167,-0.02488791006545,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0054101845479386,0.00511418898287391,0.0114339559089271,1.49486270904462e-12,0.00655781387164511,0.00783017780196462,0.00397975352901156,1.56114635223473e-13,0.00655781387164511,0.00783017780196462,0.00397975352901156,4.07705413195105e-13,0.00194063473897455,0.00163239141054389,0.00676256689845984,1.94346605130317e-13,0.00181157459071413,0.00106710235959792,-0.0136519832525799,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-35.2303164099007,89.7150770143044,4.08511259358577,33517659861.4591,0.0054101845479386,0.00511418898287391,0.0114339559089271,1.49486270904462e-12,0.00153779668688839,0.00134794372024283,0.0143101870821825,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00486352027988042,0.00460541957157796,0.011516902818952,1.49486270904462e-12,0.00791133825810114,0.00720032905668999,0.0199714707407677,1.56114635223473e-13,0.00791133825810114,0.00720032905668999,0.0199714707407677,4.07705413195105e-13,0.00210616448846694,0.00377656620407971,-0.000449794852415254,1.94346605130317e-13,-0.000963357023274157,-0.000184588348635998,0.00779655213555184,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +37.3180459097043,44.3444424562252,8.66776918097406,33517659861.4591,0.00486352027988042,0.00460541957157796,0.011516902818952,1.49486270904462e-12,0.00196320251837838,0.00379976441670023,0.000207774473810741,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00553566824196656,0.00509944651157866,0.0134911073656518,1.49486270904462e-12,0.00777534004101371,0.00910898081802725,0.013004919380838,1.56114635223473e-13,0.00777534004101371,0.00910898081802725,0.013004919380838,4.07705413195105e-13,0.00597604410257122,0.00400332807023113,0.0228997326680999,1.94346605130317e-13,-0.000948617242754909,2.95760583657063e-06,8.29461254904115e-05,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +7.27440358940069,-10.8262149051511,6.83371522314466,33517659861.4591,0.00553566824196656,0.00509944651157866,0.0134911073656518,1.49486270904462e-12,0.0116044472240501,0.00196945737672846,0.0169190933070366,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00797398658796519,0.00773790879106422,0.0180430216638947,1.49486270904462e-12,0.0131053945912333,0.0103742211377937,0.0415750732619873,1.56114635223473e-13,0.0131053945912333,0.0103742211377937,0.0415750732619873,4.07705413195105e-13,0.00151384736256757,-0.000326893658151266,0.0132241188741119,1.94346605130317e-13,0.0040347208747834,0.000872292788876253,0.0089233067478205,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +44.3690091427811,22.3967992926063,-7.47989144097593,33517659861.4591,0.00797398658796519,0.00773790879106422,0.0180430216638947,1.49486270904462e-12,0.000686873942246235,-0.00202886178570537,0.0287024014722503,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00545780101897203,0.00517901783981764,0.013718325862407,1.49486270904462e-12,0.00979641805721627,0.00758333080470358,0.032893707787981,1.56114635223473e-13,0.00979641805721627,0.00758333080470358,0.032893707787981,4.07705413195105e-13,0.00210534694245595,0.00299498016924302,-0.0032133739044165,1.94346605130317e-13,-0.00113555752700485,-0.00162700864518911,0.016300353812469,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-51.0633895002953,87.5372531191399,8.04831451717803,33517659861.4591,0.00545780101897203,0.00517901783981764,0.013718325862407,1.49486270904462e-12,0.00539888238657744,0.00100000493863853,-0.025737338046497,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00606125647468763,0.00573198808709801,0.0133410216580878,1.49486270904462e-12,0.00819522125546962,0.00879083818354927,0.0115972468406468,1.56114635223473e-13,0.00819522125546962,0.00879083818354927,0.0115972468406468,4.07705413195105e-13,0.00185881320045608,0.0030428742384585,0.00291720826263734,1.94346605130317e-13,0.00266146215007984,-0.000668213541200575,-0.0143195421774981,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +59.7624341245627,-13.6635581943741,7.92856757830605,33517659861.4591,0.00606125647468763,0.00573198808709801,0.0133410216580878,1.49486270904462e-12,0.00160046396544717,0.00371044841607516,0.00898636030128442,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00623521380848978,0.00579249051228629,0.0150840641381024,1.49486270904462e-12,0.00863896514460924,0.00938955777717142,0.018283936843062,1.56114635223473e-13,0.00863896514460924,0.00938955777717142,0.018283936843062,4.07705413195105e-13,0.00500151661818545,0.00155142423726449,0.0263691198471607,1.94346605130317e-13,-0.000977244704474436,0.000629047000026314,0.00479499975555699,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +32.9397070721395,79.0762456411589,-1.99955819111233,33517659861.4591,0.00623521380848978,0.00579249051228629,0.0150840641381024,1.49486270904462e-12,0.00848240394960832,-0.00481089508309417,0.0284609653930276,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00517123177664931,0.00525906593773358,0.0113018962778889,1.49486270904462e-12,0.0123970311012005,0.00819825147580709,0.0458128005533767,1.56114635223473e-13,0.0123970311012005,0.00819825147580709,0.0458128005533767,4.07705413195105e-13,0.00475270068679085,0.00580608829645732,0.00378398369341448,1.94346605130317e-13,0.00232058665689756,-0.00416298401854186,0.0160856442469063,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-38.0375309293143,56.8473331465489,1.03951693710278,33517659861.4591,0.00517123177664931,0.00525906593773358,0.0113018962778889,1.49486270904462e-12,0.00730179076205577,0.008976193358456,-0.00177681738798672,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00942718405353013,0.00864096923283007,0.0230488477043095,1.49486270904462e-12,0.0113788477824883,0.0123694660407193,0.0186089195652906,1.56114635223473e-13,0.0113788477824883,0.0123694660407193,0.0186089195652906,4.07705413195105e-13,-5.00628448111998e-06,0.00178010019934666,-0.00630860177284024,1.94346605130317e-13,0.00109417475621681,0.00449444361654656,-0.000986339627533022,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +26.3343976795882,19.013993673139,2.92754159757349,33517659861.4591,0.00942718405353013,0.00864096923283007,0.0230488477043095,1.49486270904462e-12,-0.00178461001176608,0.0033742851002879,-0.00195599986061067,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00749111460084788,0.00689073806675191,0.0182871620081974,1.49486270904462e-12,0.00960701584842861,0.0106306911458699,0.0168388125259506,1.56114635223473e-13,0.00960701584842861,0.0106306911458699,0.0168388125259506,4.07705413195105e-13,0.00305485766561467,0.00211675850367329,0.0106909748400359,1.94346605130317e-13,-0.00196444180666456,0.000742102193133149,-0.000994160320855853,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +0.261998697987377,104.820216828161,-9.0968500079684,33517659861.4591,0.00749111460084788,0.00689073806675191,0.0182871620081974,1.49486270904462e-12,0.00191126118537883,0.00232517026406766,0.0262090682857494,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00671512991839119,0.00629847901180637,0.0167681129133143,1.49486270904462e-12,0.0113552056559505,0.0096632833477569,0.031521062139165,1.56114635223473e-13,0.0113552056559505,0.0096632833477569,0.031521062139165,4.07705413195105e-13,0.00213430548659679,0.00600015592681537,-0.0153259365541465,1.94346605130317e-13,-0.00195282986972381,0.000240680498315832,0.0151090161771906,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +7.26876148713778,60.1158759855528,0.596461001987515,33517659861.4591,0.00671512991839119,0.00629847901180637,0.0167681129133143,1.49486270904462e-12,0.00223687920338311,0.00995529734498207,-0.027056570456407,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00923970024945307,0.00833247577824041,0.0224701216466408,1.49486270904462e-12,0.00977270427232894,0.013268917089086,0.00248621007981367,1.56114635223473e-13,0.00977270427232894,0.013268917089086,0.00248621007981367,4.07705413195105e-13,0.00292931590456363,0.00372676537275646,0.00267463657551797,1.94346605130317e-13,-0.00082069515055464,0.00379013752303295,-0.014524432733713,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +46.0549074339076,38.0003130375736,-0.69456850391472,33517659861.4591,0.00923970024945307,0.00833247577824041,0.0224701216466408,1.49486270904462e-12,0.00386866661599596,0.00345233270872103,0.000724361877509839,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00887160521391675,0.00837792295402041,0.0205158603437307,1.49486270904462e-12,0.0130956239186737,0.0128834361504742,0.0274501672979134,1.56114635223473e-13,0.0130956239186737,0.0128834361504742,0.0274501672979134,4.07705413195105e-13,0.00427755327368823,0.00396480020867557,0.0087683069342115,1.94346605130317e-13,1.27429467752866e-05,0.000294095331217147,0.000799852352385615,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +12.1128822230878,-0.0763059331543543,-1.06371491543047,33517659861.4591,0.00887160521391675,0.00837792295402041,0.0205158603437307,1.49486270904462e-12,0.00828996915559141,0.00385452402587242,-0.00177703056958421,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0103174835384687,0.00976483767204849,0.0237033180073193,1.49486270904462e-12,0.014342260517678,0.0133706334985893,0.0325151143316942,1.56114635223473e-13,0.014342260517678,0.0133706334985893,0.0325151143316942,4.07705413195105e-13,0.000544478369841762,0.000464555733408309,0.000784921651626018,1.94346605130317e-13,0.00281931385183019,0.00184620883365963,-0.00086272177943568,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-12.9845000697118,91.8824589272735,-6.14854436160833,33517659861.4591,0.0103174835384687,0.00976483767204849,0.0237033180073193,1.49486270904462e-12,-0.00144868782095766,0.000567223844753403,0.0102824141234887,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00741310862935035,0.00690308221255111,0.0181008008644953,1.49486270904462e-12,0.0110017710708656,0.0103539765421637,0.0248286439410902,1.56114635223473e-13,0.0110017710708656,0.0103539765421637,0.0248286439410902,4.07705413195105e-13,0.00141656592589005,0.00474904200345543,-0.013154184194359,1.94346605130317e-13,-0.00213297535335455,-0.000543443769164813,0.00617192647765992,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +9.69533025874558,55.6908172078649,-0.149329966698542,33517659861.4591,0.00741310862935035,0.00690308221255111,0.0181008008644953,1.49486270904462e-12,0.00037355155719804,0.00858403850906591,-0.0172421711765539,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00865343758310824,0.00781286130790754,0.0212368462183452,1.49486270904462e-12,0.00951785345974606,0.0123857872951994,0.00564340594247527,1.56114635223473e-13,0.00951785345974606,0.0123857872951994,0.00564340594247527,4.07705413195105e-13,0.00275260877537089,0.00356640864215189,0.00191471794833616,1.94346605130317e-13,-0.00173119327319767,0.00323581227793607,-0.00914068803328762,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +99.1069816685756,-5.45466756951968,-5.16357016739619,33517659861.4591,0.00865343758310824,0.00781286130790754,0.0212368462183452,1.49486270904462e-12,0.00398300602518373,0.00269571327161978,-0.00215425099636626,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00823977514036082,0.0077982450314843,0.0189246438224373,1.49486270904462e-12,0.012277303826365,0.0121601683430683,0.0252677813444922,1.56114635223473e-13,0.012277303826365,0.0121601683430683,0.0252677813444922,4.07705413195105e-13,0.00502783526618774,0.00352979279410559,0.0124635082103283,1.94346605130317e-13,0.000359139781926967,-0.000217708492454326,-0.000476107573050461,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-108.57244843217,124.156266594357,-0.96245484245457,33517659861.4591,0.00823977514036082,0.0077982450314843,0.0189246438224373,1.49486270904462e-12,0.00956215184927663,0.00276925067070058,6.97283140696225e-05,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00983085161303149,0.00938065427732397,0.0222636090611112,1.49486270904462e-12,0.0145215165952435,0.0123968250828353,0.0348553028653309,1.56114635223473e-13,0.0145215165952435,0.0123968250828353,0.0348553028653309,4.07705413195105e-13,-0.00233907106981463,0.00289220297188764,-0.0247813472883551,1.94346605130317e-13,0.00328041039439395,0.00161305273222599,1.8814992490722e-05,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +106.413998673278,-51.7293303425884,2.90611535831103,33517659861.4591,0.00983085161303149,0.00938065427732397,0.0222636090611112,1.49486270904462e-12,-0.0072203762638468,0.00827555095375692,-0.0182467623485968,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0082987180386278,0.00728997828509733,0.021234176932468,1.49486270904462e-12,0.00733193916731388,0.0123016810770819,-0.0043030563183665,1.56114635223473e-13,0.00733193916731388,0.0123016810770819,-0.0043030563183665,4.07705413195105e-13,0.00543219545076256,0.00117559390435004,0.0277516109748658,1.94346605130317e-13,-0.0047214638181292,0.00275518307568474,-0.0097572315434272,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-31.6046193919276,21.5025063092134,-8.74272618593251,33517659861.4591,0.0082987180386278,0.00728997828509733,0.021234176932468,1.49486270904462e-12,0.0110198675871851,-0.00190265815667457,0.0244123131169385,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00812635636930402,0.00807283609260399,0.0177877530558315,1.49486270904462e-12,0.0148932446063963,0.00932467219677957,0.0533020962649464,1.56114635223473e-13,0.0148932446063963,0.00932467219677957,0.0533020962649464,4.07705413195105e-13,-0.00306799291215349,-9.7538988547521e-06,-0.0216977481993098,1.94346605130317e-13,0.0044253410194166,2.98088454558966e-05,0.0136357325033941,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +62.8526767296308,-33.2401289897757,-12.4063665627001,33517659861.4591,0.00812635636930402,0.00807283609260399,0.0177877530558315,1.49486270904462e-12,-0.00729062286911152,0.00429053037568305,-0.0176868731783284,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00583301919414938,0.00504656134918903,0.0152967944468064,1.49486270904462e-12,0.00440829600781756,0.00764322362125796,-0.00684905859648331,1.56114635223473e-13,0.00440829600781756,0.00764322362125796,-0.00684905859648331,4.07705413195105e-13,6.9443146958289e-05,0.000518508213310319,-0.0077468250229997,1.94346605130317e-13,-0.00357256250762506,0.00209551293611049,-0.00891615032653694,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-24.170140727594,10.0234456981479,-17.6926050571192,33517659861.4591,0.00583301919414938,0.00504656134918903,0.0152967944468064,1.49486270904462e-12,6.69879705039482e-05,0.00373180694440033,-0.0127811294203313,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00536185985576327,0.0049602347204216,0.0124904527464948,1.49486270904462e-12,0.00586453815785903,0.00561521081578518,0.00671681621011303,1.56114635223473e-13,0.00586453815785903,0.00561521081578518,0.00671681621011303,4.07705413195105e-13,-0.00496078292030257,-0.000392367325795504,-0.0354121769930497,1.94346605130317e-13,3.5469006794304e-05,0.00318727319935677,-0.00626949821113713,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +76.9233740477607,-30.3419193548126,-10.1838816865849,33517659861.4591,0.00536185985576327,0.0049602347204216,0.0124904527464948,1.49486270904462e-12,-0.00866457323579535,0.0021440668160335,-0.0497182608551399,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00232219475572913,0.00187877057668944,0.00518235104200579,1.49486270904462e-12,-0.000716938278215091,0.00383916983304667,-0.0279359336273391,1.56114635223473e-13,-0.000716938278215091,0.00383916983304667,-0.0279359336273391,4.07705413195105e-13,0.00156103590908553,0.00123461516735571,-0.000920938314788344,1.94346605130317e-13,-0.00258577510181698,0.000145878590432013,-0.0264130673920715,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +27.1049264173551,-2.7455868865591,-13.8101683127134,33517659861.4591,0.00232219475572913,0.00187877057668944,0.00518235104200579,1.49486270904462e-12,0.00421379294727599,0.00036768519485234,-0.0158946090091866,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00282988043968964,0.00284548157744272,0.00487005079223781,1.49486270904462e-12,0.00421539139736105,0.00344778897995259,0.00472210270134907,1.56114635223473e-13,0.00421539139736105,0.00344778897995259,0.00472210270134907,4.07705413195105e-13,-0.00133767670738693,0.000874272971637927,-0.0177796703319301,1.94346605130317e-13,0.00232059630564408,0.000315635534369069,-0.00793596662045124,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-13.718830096684,128.952055361539,-16.6059580751483,33517659861.4591,0.00282988043968964,0.00284548157744272,0.00487005079223781,1.49486270904462e-12,-0.00557529650055096,0.00355154233871076,-0.0138922921687764,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00191948221241522,0.00153958584286862,0.00508645856924906,1.49486270904462e-12,0.0012135352889458,0.00362370563536827,-0.0148975316271508,1.56114635223473e-13,0.0012135352889458,0.00362370563536827,-0.0148975316271508,4.07705413195105e-13,0.000562603498994779,0.00682760619498905,-0.0311245718440757,1.94346605130317e-13,-0.00395895134980712,0.000766207198468452,-0.00641665233036007,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +14.1958815337095,-20.4010385209217,4.01970306436782,33517659861.4591,0.00191948221241522,0.00153958584286862,0.00508645856924906,1.49486270904462e-12,0.00160628219132841,0.0134247607225205,-0.059510922646445,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00663438231670501,0.00582541128040092,0.0151254082325759,1.49486270904462e-12,0.00313013173921126,0.00921511250262583,-0.0267051061870348,1.56114635223473e-13,0.00313013173921126,0.00921511250262583,-0.0267051061870348,4.07705413195105e-13,0.000980626878138407,-0.000610820609189003,0.00988774715085171,1.94346605130317e-13,0.00039563266453238,0.00632749690263637,-0.032660526629119,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +15.7587535553033,3.97619577867369,-0.850341663599906,33517659861.4591,0.00663438231670501,0.00582541128040092,0.0151254082325759,1.49486270904462e-12,0.00191760060387434,-0.00307903830158191,0.0125873862064976,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00394639239324629,0.00400433795921248,0.00796785304868006,1.49486270904462e-12,0.00777181422705833,0.00527879267158038,0.0260313312160132,1.56114635223473e-13,0.00777181422705833,0.00527879267158038,0.0260313312160132,4.07705413195105e-13,0.000981337805553121,0.000838656280276798,0.00193926151651655,1.94346605130317e-13,0.000780168693521015,-0.00184208198191261,0.00699978460998388,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +18.9684383883433,10.5220377219862,-4.19460207494817,33517659861.4591,0.00394639239324629,0.00400433795921248,0.00796785304868006,1.49486270904462e-12,0.00134561785880433,0.000587996087610588,0.00183148695380788,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00371753972768828,0.00346906712892302,0.00887434069793576,1.49486270904462e-12,0.00518867239987316,0.00506939784267067,0.0105974885212299,1.56114635223473e-13,0.00518867239987316,0.00506939784267067,0.0105974885212299,4.07705413195105e-13,0.000722664974591022,0.00133309806290815,-0.00307574040250691,1.94346605130317e-13,0.000103337852177457,7.3596813078419e-06,0.00132007940531455,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-17.8913863070909,13.6604560563503,-2.64832061298686,33517659861.4591,0.00371753972768828,0.00346906712892302,0.00887434069793576,1.49486270904462e-12,0.00126708278581589,0.00282878599850455,-0.00746330905007226,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00411819896409111,0.00379672518808162,0.00973377064626896,1.49486270904462e-12,0.00467407521802393,0.00504705456438525,0.00606106729173104,1.56114635223473e-13,0.00467407521802393,0.00504705456438525,0.00606106729173104,4.07705413195105e-13,-0.00118456954454307,8.32823149698052e-05,-0.00834880880743032,1.94346605130317e-13,0.000310547295480251,0.00170694935275773,-0.00399117459863416,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +15.8225501581865,39.1895978126779,-3.86956349752424,33517659861.4591,0.00411819896409111,0.00379672518808162,0.00973377064626896,1.49486270904462e-12,-0.00391177742557287,0.00115713715592616,-0.00261635594285073,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00228084568882529,0.00201421119802254,0.00589523733519187,1.49486270904462e-12,0.00269731319484423,0.00372925967596038,0.000303891452786276,1.56114635223473e-13,0.00269731319484423,0.00372925967596038,0.000303891452786276,4.07705413195105e-13,0.00170469048411145,0.00285347057401659,-0.00315169612134967,1.94346605130317e-13,-0.00249089165632599,-0.000183640251705469,-0.00102720483281556,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +2.91589419189661,86.6628514139388,-0.432987221322956,33517659861.4591,0.00228084568882529,0.00201421119802254,0.00589523733519187,1.49486270904462e-12,0.00176267212564981,0.00249846355920639,-0.00769833674378099,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00300390889298342,0.00279064657086259,0.00690242748840576,1.49486270904462e-12,0.00455805261432182,0.00542083602324228,0.00379206533763043,1.56114635223473e-13,0.00455805261432182,0.00542083602324228,0.00379206533763043,4.07705413195105e-13,0.0034605846302479,0.00507667348942905,2.1405145082308e-05,1.94346605130317e-13,-0.000514534799846728,-0.000273597927985863,-0.00383508368110008,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +43.420866726571,56.7535509919695,3.80716861600987,33517659861.4591,0.00300390889298342,0.00279064657086259,0.00690242748840576,1.49486270904462e-12,0.00494044648983859,0.00468324913840929,-0.00739179879204035,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00528929475020074,0.00494191587503204,0.0121253146745052,1.49486270904462e-12,0.00761683441214916,0.00891817156499046,0.00957583585050045,1.56114635223473e-13,0.00761683441214916,0.00891817156499046,0.00957583585050045,4.07705413195105e-13,0.00580467882935421,0.0049436582027087,0.0159243054597129,1.94346605130317e-13,0.000327520970672849,0.000334288728311718,-0.00377022847990968,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +10.3508265107314,-22.4565842919745,3.29305777008121,33517659861.4591,0.00528929475020074,0.00494191587503204,0.0121253146745052,1.49486270904462e-12,0.0113330033248287,0.0048246530347709,0.00560837319558296,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0088115805053337,0.00842138543171311,0.019955372902681,1.49486270904462e-12,0.0127088414532003,0.0112368637545928,0.0327693490302778,1.56114635223473e-13,0.0127088414532003,0.0112368637545928,0.0327693490302778,4.07705413195105e-13,0.000498297393373832,-0.000879071465117367,0.0078166032858841,1.94346605130317e-13,0.00391345662182913,0.00260959517844902,0.00287926559474257,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-19.4039100257043,56.3591167541574,0.177755568783757,33517659861.4591,0.0088115805053337,0.00842138543171311,0.019955372902681,1.49486270904462e-12,0.000142917173202145,-0.00296595622304967,0.014360472425974,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00553807234252894,0.00529825828909608,0.0131319077793592,1.49486270904462e-12,0.00934329273725321,0.00751028316422675,0.0283706276628907,1.56114635223473e-13,0.00934329273725321,0.00751028316422675,0.0283706276628907,4.07705413195105e-13,0.000984615152424564,0.00247470374647635,-0.00377805449301108,1.94346605130317e-13,-0.000388795058717366,-0.00200340366190466,0.00794820277107496,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-4.09399748017361,12.516562727599,7.49171115585402,33517659861.4591,0.00553807234252894,0.00529825828909608,0.0131319077793592,1.49486270904462e-12,0.00147928836838048,0.00364794070074045,-0.00849091892246339,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00591639742492968,0.00542658283088835,0.0142911908700766,1.49486270904462e-12,0.006955592340028,0.00819317933609936,0.0101459832298682,1.56114635223473e-13,0.006955592340028,0.00819317933609936,0.0101459832298682,4.07705413195105e-13,0.00183377758503988,0.000569550662691015,0.0119420320561199,1.94346605130317e-13,6.17683708814176e-05,0.00128556461844448,-0.00493857912319342,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +10.3081727871808,46.4764176968701,-0.776633539018255,33517659861.4591,0.00591639742492968,0.00542658283088835,0.0142911908700766,1.49486270904462e-12,0.00116579300712137,-0.000456440089086271,0.0258234799414311,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00435441957048645,0.00416779796728001,0.0107873297436751,1.49486270904462e-12,0.00821357719445335,0.00631676960058338,0.0281618268888121,1.56114635223473e-13,0.00821357719445335,0.00631676960058338,0.0281618268888121,4.07705413195105e-13,0.00229910168844951,0.00306143922531994,0.000960102218155977,1.94346605130317e-13,-0.0011313867624023,-0.000926940468281813,0.0143550627463241,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +1.45437420606773,58.4716390215315,1.20528395539616,33517659861.4591,0.00435441957048645,0.00416779796728001,0.0107873297436751,1.49486270904462e-12,0.00296410357937803,0.00328680086097121,-0.00140218319869344,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00531288161450139,0.00490349569140794,0.0129675973480435,1.49486270904462e-12,0.00738406686448086,0.00789012093597904,0.0134693200158173,1.56114635223473e-13,0.00738406686448086,0.00789012093597904,0.0134693200158173,4.07705413195105e-13,0.00262376180536046,0.00340764325018782,0.00246309455161062,1.94346605130317e-13,-6.5543714616384e-05,0.000631557489333333,-0.000587451538246405,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +56.6921162770182,-21.4420596954266,-4.85512485864394,33517659861.4591,0.00531288161450139,0.00490349569140794,0.0129675973480435,1.49486270904462e-12,0.00332598404739759,0.00533448415922387,0.00447881027369698,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00669662950228362,0.00619388931425907,0.0162975300545814,1.49486270904462e-12,0.00877907553312759,0.00905859181943386,0.0175450244053562,1.56114635223473e-13,0.00877907553312759,0.00905859181943386,0.0175450244053562,4.07705413195105e-13,0.00175570513899375,0.000966710853594477,0.00385176241396382,1.94346605130317e-13,-0.000140209871228612,0.0023767448785837,0.00285838977786745,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-8.12360071613907,43.0272977727101,-8.52767435080981,33517659861.4591,0.00669662950228362,0.00619388931425907,0.0162975300545814,1.49486270904462e-12,0.0032320151691299,0.000102382917495919,-0.00113271092434174,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00583026766125773,0.00555785164043881,0.0133252052877415,1.49486270904462e-12,0.00883849260770176,0.00749778852298352,0.0211361203543519,1.56114635223473e-13,0.00883849260770176,0.00749778852298352,0.0211361203543519,4.07705413195105e-13,-0.000681244588680226,0.00213575304988316,-0.0162512554902985,1.94346605130317e-13,0.00109015206371176,-3.79883132034214e-05,-0.000114503505486382,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-7.0900646003037,30.4216658388207,0.842783555329947,33517659861.4591,0.00583026766125773,0.00555785164043881,0.0133252052877415,1.49486270904462e-12,-0.00157719632394095,0.00458660046937406,-0.0257989643548394,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00562061107308855,0.00505139866901457,0.0133629265793962,1.49486270904462e-12,0.00516301183609586,0.00784042974839694,-0.00401997527870417,1.56114635223473e-13,0.00516301183609586,0.00784042974839694,-0.00401997527870417,4.07705413195105e-13,0.00090873998730013,0.0014684234583134,-3.59875695478322e-05,1.94346605130317e-13,-0.000909940498779081,0.00173623045645477,-0.0140340265914792,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-9.404167918267,10.1408106570719,6.82081987257519,33517659861.4591,0.00562061107308855,0.00505139866901457,0.0133629265793962,1.49486270904462e-12,0.00194692775432246,0.00134511230355218,-0.00518135918655998,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00500525733633113,0.00475921836674242,0.011158423776445,1.49486270904462e-12,0.00685332937513528,0.00681315570939049,0.0140943160333706,1.56114635223473e-13,0.00685332937513528,0.00681315570939049,0.0140943160333706,4.07705413195105e-13,0.00125712599011335,0.000226125875543556,0.00965084652743411,1.94346605130317e-13,0.000714209452275729,0.000284250771026744,-0.0031382028596929,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +80.4409605955178,18.986557950898,-5.22607365721194,33517659861.4591,0.00500525733633113,0.00475921836674242,0.011158423776445,1.49486270904462e-12,0.000149392441590216,-0.00223331251240851,0.022474332488168,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00290293425081153,0.00282360114144964,0.00714335454030479,1.49486270904462e-12,0.00657764072671545,0.0051885820184896,0.0222502071916176,1.56114635223473e-13,0.00657764072671545,0.0051885820184896,0.0222502071916176,4.07705413195105e-13,0.00476809977159163,0.00420452643495369,0.00838380795264795,1.94346605130317e-13,-0.0014229909487941,-0.0026088947688343,0.0129672457408244,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +18.1775365774073,-25.9900077003189,-7.91109550492007,33517659861.4591,0.00290293425081153,0.00282360114144964,0.00714335454030479,1.49486270904462e-12,0.0101298912035466,0.00450590270622552,-0.00857580192460665,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00675545462233818,0.00640375217828876,0.0152623731672645,1.49486270904462e-12,0.00894275150385339,0.00814162479423466,0.0188047203704838,1.56114635223473e-13,0.00894275150385339,0.00814162479423466,0.0188047203704838,4.07705413195105e-13,-0.00154507101777753,-0.000794824567568312,-0.00965342455047855,1.94346605130317e-13,0.00409007395050474,0.00283464777601737,-0.00433765814540644,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +10.5326866516643,15.0152659461897,-10.5069785610279,33517659861.4591,0.00675545462233818,0.00640375217828876,0.0152623731672645,1.49486270904462e-12,-0.00315986524100975,0.000105146862758984,-0.0109509602056375,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00418114199144973,0.00383846930554958,0.00987224856992919,1.49486270904462e-12,0.00477536932687902,0.00529931092821174,0.0038639793664336,1.56114635223474e-13,0.00477536932687902,0.00529931092821174,0.0038639793664336,4.07705413195105e-13,-0.000999594388586831,0.00125292974813104,-0.0156683598284029,1.94346605130317e-13,-0.00117977994555059,7.20341651255094e-05,-0.00539912087969744,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +66.0985311042743,23.3641126337571,-17.0697393921884,33517659861.4588,0.00418114199144973,0.00383846930554958,0.00987224856992919,1.49486270904462e-12,-0.00391471575989669,0.00371682029787341,-0.0146014119133254,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00326092859638299,0.0028442821695904,0.00815172265826446,1.49486270904462e-12,0.00303144511312601,0.00508960099576754,-0.0072858253630823,1.56114635223473e-13,0.00303144511312601,0.00508960099576754,-0.0072858253630823,4.07705413195105e-13,0.0014743895311173,0.0038796590937179,-0.0149303905997405,1.94346605130317e-13,-0.00276501888157297,0.00105638788525759,-0.0067922622143497,2.3619963030061e-05,2.22696213477974e-05,0.000775094100679287 +-24.1858745535179,46.8962524405493,-6.04434995822598,33517659861.4554,0.00326092859638299,0.0028442821695904,0.00815172265826446,1.49486270904462e-12,0.00402111646243237,0.00565768123133699,-0.0411634602596511,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00551929917962371,0.00511270815231791,0.0116807997500885,1.49486270904462e-12,0.00525752478429411,0.00734592348350663,-0.00683824738033099,1.56114635223475e-13,0.00525752478429411,0.00734592348350663,-0.00683824738033099,4.07705413195105e-13,-0.00102635616740803,0.00173721620280576,-0.0154530008783929,1.94346605130327e-13,0.00202452027452124,0.00260364497559781,-0.0221336447508738,2.3619963030061e-05,2.22696213477975e-05,0.000775094100679287 +36.3306833541553,-22.0352487782778,-2.45700176539539,33517659861.3976,0.00551929917962371,0.00511270815231791,0.0116807997500885,1.49486270904462e-12,-0.00252073956143209,0.00484793165588696,-0.0197401037526773,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00504690649046615,0.00456300372240518,0.0116850669319064,1.49486270904462e-12,0.00442291499008392,0.00690847101388482,-0.00495321436492873,1.56114635223486e-13,0.00442291499008392,0.00690847101388482,-0.00495321436492873,4.07705413195144e-13,0.000943508072436351,0.000145428421220892,0.00357369145086135,1.94346605130493e-13,-0.0014243553718923,0.00214470058901749,-0.0105671241593576,2.36199630300619e-05,2.22696213477987e-05,0.000775094100679289 +72.6731503772146,-31.4137671812137,-7.88716090489835,33517659860.4319,0.00504690649046615,0.00456300372240518,0.0116850669319064,1.49486270904462e-12,0.00286649267592829,-0.00274959257385926,-0.00476053695693914,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.0034151893918729,0.0034327130861471,0.00666402014122823,1.49486270904462e-12,0.00616195797656493,0.00484603715084716,0.0157942561908623,1.56114635223693e-13,0.00616195797656493,0.00484603715084716,0.0157942561908623,4.07705413195832e-13,0.00174061713707218,0.00101167142079416,0.00208889090511967,1.94346605133348e-13,0.00175144118982951,-0.00200068640650271,-0.00200767224233135,2.36199630300773e-05,2.22696213478208e-05,0.000775094100679323 +55.8868223166284,-50.892640692472,-12.6102167949102,33517659844.5118,0.0034151893918729,0.0034327130861471,0.00666402014122823,1.49486270904462e-12,0.0054166584198171,-0.000647668902489786,-0.0149845352468832,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00403252490361164,0.00393047103143163,0.00813503935136336,1.49486270904462e-12,0.00551853070862066,0.00478001530397206,0.00951072814353193,1.56114635227278e-13,0.00551853070862066,0.00478001530397206,0.00951072814353193,4.07705413207801e-13,-0.00110641934403193,-0.000763568832236934,-0.00961942708285388,1.94346605182349e-13,0.00331331710306934,-4.49698706117145e-05,-0.00753461686229973,2.36199630303434e-05,2.2269621348208e-05,0.000775094100679868 +5.40843622205065,-46.1057762859904,-8.1561936598101,33517659587.0042,0.00403252490361164,0.00393047103143163,0.00813503935136336,1.49486270904462e-12,0.00121898911066429,-0.00137452529698593,-0.031251648697874,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00300797529386852,0.00289920838612575,0.00549302404535793,1.49486270904462e-12,0.00253781390188177,0.0029113260698815,-0.00323709640675944,1.56114635289177e-13,0.00253781390188177,0.0029113260698815,-0.00323709640675944,4.07705413416091e-13,-0.00319727765009781,-0.00244351538410561,-0.0128473273360954,1.94346606018864e-13,0.00271370011239415,8.34566937690012e-05,-0.0168408895808465,2.36199630349478e-05,2.22696213549925e-05,0.000775094100688622 +66.6491067379207,-59.2955699234553,-12.3399047579865,33517655511.0148,0.00300797529386852,0.00289920838612575,0.00549302404535793,1.49486270904462e-12,-0.0048305257733001,-0.002656485637426,-0.017485735034124,0.000144041319312193,0.000107731242907984,0.00313160189549853,-3.56435963831776e-05,-3.55358723602043e-05,-0.000829655318085851,1.49486270904462e-12,-0.00110107198831637,-0.000265518893859405,-0.0103860074021297,1.56114636354273e-13,-0.00110107198831637,-0.000265518893859405,-0.0103860074021297,4.07705417034596e-13,-0.000685301295735452,-0.000826359519102649,-0.0068580023024932,1.94346620212298e-13,-0.000721478491115217,-0.0012307513979095,-0.00889038260919721,2.36199631142688e-05,2.22696214739376e-05,0.00077509410082499 +47.1754709915877,-144.474887918637,-11.6053763499643,33517592381.5973,-3.56435963831776e-05,-3.55358723602043e-05,-0.000829655318085851,1.49486270904462e-12,0.00365007238794788,-0.00112876521352913,-0.0339506898886883,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.000691070399187964,0.000798059710096561,-0.000458454477502361,1.49486270904462e-12,-0.00103407839658781,-0.00106883981366765,-0.00910488834088701,1.56114654607169e-13,-0.00103407839658781,-0.00106883981366765,-0.00910488834088701,4.07705479750568e-13,-0.00508422706756854,-0.00646084865734651,-0.0099196855093366,1.94346859932285e-13,0.00464850718815252,0.00121856763016667,-0.018330494327495,2.36199644738056e-05,2.22696235592739e-05,0.00077509410286153 +124.993021389945,-148.999787091411,-34.5337786609013,33516618724.074,0.000691070399187964,0.000798059710096561,-0.000458454477502361,1.49486270904462e-12,-0.00747243179071104,-0.00705603129613379,-0.007840531597441,0.000144041319312193,0.000107731242907984,0.00313160189549853,-0.00404619110254615,-0.00371233795271608,-0.0103054945610228,1.49486270904462e-12,-0.00608807408227201,-0.00710927719560064,-0.0151405701060496,1.56114966441742e-13,-0.00608807408227201,-0.00710927719560064,-0.0151405701060496,4.07706564046427e-13,-0.00520142801648243,-0.00373250874658033,-0.032386922912822,1.94350887627326e-13,-0.000693287309251067,-0.00183877565472632,-0.00269565992959336,2.36199875588418e-05,2.2269660182931e-05,0.000775094132002468 +29.3661941572731,44.0385632035762,-50.4206596505704,33500335019.7189,-0.00404619110254615,-0.00371233795271608,-0.0103054945610228,1.49486270904462e-12,-0.00975863863343903,-0.000617297190604121,-0.0413562631680547,0.000144041319312193,0.000107731242907984,0.00313160189549853,-0.00581290732999843,-0.00570421415968442,-0.0139477233676214,1.49486270904462e-12,-0.010882602166409,-0.00862361359775051,-0.0491521114654055,1.56120277769733e-13,-0.010882602166409,-0.00862361359775051,-0.0491521114654055,4.07725245554698e-13,-0.00724201218456971,0.00358499847878924,-0.0797831760883898,1.94420226378665e-13,-0.00292222756957618,0.000780860946228836,-0.0200125383621691,2.36203780812808e-05,2.2270300887207e-05,0.000775094532440599 +23.1265825170232,41.2864118832216,-16.9085439175005,33225291266.6111,-0.00581290732999843,-0.00570421415968442,-0.0139477233676214,1.49486270904462e-12,-0.0107990724122295,0.0111023890751728,-0.135362091944363,0.000144041319312193,0.000107731242907984,0.00313160189549853,-0.0032200559458294,-0.00367516823240002,-0.00956517920664029,1.49486270904462e-12,-0.0144765632748677,-0.00273494685179332,-0.102757694370458,1.56212007621002e-13,-0.0144765632748677,-0.00273494685179332,-0.102757694370458,4.08046976156711e-13,-0.000547692717113125,0.00323705962431494,-0.0238607402667135,1.95570339783814e-13,-0.00213541646736029,0.00424544728841137,-0.0728405047602899,2.36267436509142e-05,2.22817034688358e-05,0.000775100298939847 +32.0801206828734,56.3328252868287,5.20868811860811,20578072445.0466,-0.0032200559458294,-0.00367516823240002,-0.00956517920664029,1.49486270904462e-12,0.00136880830335904,0.000986528307813262,-0.0599229910532047,0.000144041319312193,0.000107731242907984,0.00313160189549853,-0.00205333916633194,-0.00168407820293187,-0.00906647290147631,1.49486270904462e-12,-0.00368833465240294,-0.000157960585100638,-0.0350058564012915,1.57770366397138e-13,-0.00368833465240294,-0.000157960585100638,-0.0350058564012915,4.13583524297429e-13,0.00536294420879274,0.0044811548655004,0.0158817853926152,2.25421503476513e-13,0.00183708700993259,-0.00203790728422993,-0.0325556132314327,2.37374985173689e-05,2.24733747769443e-05,0.000775282506598147 +0,0,0,0,-0.00205333916633194,-0.00168407820293187,-0.00906647290147631,1.49486270904462e-12,0.00891552674764057,0.00573935500287192,0.0163115375852939,0.000144041319312193,0.000107731242907984,0.00313160189549853,0.00314024949450281,0.00308620255477868,0.00639752983897014,1.49486270904462e-12,0.00480697785777242,0.00403811787363222,0.0112963318488794,1.92902022535136e-13,0.00480697785777242,0.00403811787363222,0.0112963318488794,5.17085580718972e-13,0,0,0,1.07280851031326e-12,0.00205520972353622,0.0032267554989946,0.00890091096533248,2.516807574708e-05,2.6463438981461e-05,0.000776365331816701 diff --git a/statsmodels/tsa/statespace/tests/results/results_smoothing3_R.csv b/statsmodels/tsa/statespace/tests/results/results_smoothing3_R.csv new file mode 100644 index 0000000..c4b2211 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_smoothing3_R.csv @@ -0,0 +1,124 @@ +"r1","r2","r3","detN","m","detPmu","v","F","a1","a2","a3","detP","alphahat1","alphahat2","alphahat3","detV","muhat","detVmu","etahat","detVeta","epshat","Veps" +-0.298623564903529,0.0464543466183151,0.0155764625711166,0.0242491880845054,0,1.58276997,0.100000000000001,1.58276997,0.0785657999924686,0.100000000000001,0.0785658000574788,-1.98867004970709e-33,0.100000000000001,0.0431810197065789,0.0064820640700806,-1.03860333849967e-16,0.100000000000001,-3.68702782332918e-16,-0.158493232715932,0.0637243089732459,0,0 +0.0603655798179575,-0.14390542078167,0.0407038430096027,0.0276779497711476,0.0785657999924686,0.605791761367426,-0.17856579999247,0.605791761367426,-0.0343241666130994,-0.100000000000001,0.100000000000001,0,-0.100000000000001,0.100000000000001,0.0431810197065789,4.105768418189e-49,-0.100000000000001,-1.33992057656705e-16,0.0320387839895037,0.0353382930189409,0,0 +0.157745128130055,0.0135688392188804,-0.158932426756006,0.0296522664457274,-0.0343241666130994,0.568604935405402,0.0343241666130994,0.568604935405402,0.0162774200000002,0,-0.100000000000001,0,1.49096494423489e-19,-0.100000000000001,0.100000000000001,0,1.49096494423489e-19,-3.52730088834138e-52,0.0837225800000012,0,0,0 +-0.615932407579599,0.0766373147374974,0.0722433610770428,0.0296522664457274,0.0162774200000002,0.5307459,0.0837225800000012,0.5307459,0.0269036000000004,0.100000000000001,0,0,0.100000000000001,0,-0.100000000000001,0,0.100000000000001,0,-0.326903600000001,0,0,0 +0.279974503806813,0.0790743646629044,0.0499665795380055,0.0296522664457274,0.0269036000000004,0.5307459,-0.326903600000001,0.5307459,-0.14859532,-0.300000000000001,0.100000000000001,0,-0.300000000000001,0.100000000000001,0,0,-0.300000000000001,0,0.14859532,0,0,0 +0.19364226836232,-0.0564913040249382,0.0606277504437609,0.0296522664457274,-0.14859532,0.5307459,0.14859532,0.5307459,-0.00277483999999972,-2.77555756156289e-17,-0.300000000000001,0,-2.77555756156289e-17,-0.300000000000001,0.100000000000001,0,-2.77555756156289e-17,0,0.102774840000001,0,0,0 +0.234958951166645,-0.0148906939107358,-0.0788737991597094,0.000789565653211926,-0.00277483999999972,0.5307459,0.102774840000001,0.5307459,-0.0247034999999994,0.100000000000001,-2.77555756156289e-17,0,0.100000000000001,-2.77555756156289e-17,-0.300000000000001,0,0.100000000000001,0,0.124703499999997,0,0,0 +-0.30567034055279,0.020640367761019,0.0142278601017656,9.56087219148259e-10,-0.0247034999999994,0.5307459,0.124703499999997,0.5307459,0.062233279999999,0.0999999999999979,0.100000000000001,0,0.0999999999999979,0.100000000000001,-2.77555756156289e-17,0,0.0999999999999979,0,-0.162233279999997,0,0,0 +0.0551391576033748,0.022181819199585,0.0153877399268166,1.08228869221964e-15,0.062233279999999,0.5307459,-0.162233279999997,0.5307459,-0.0173774699999987,-0.0999999999999979,0.0999999999999979,0,-0.0999999999999979,0.0999999999999979,0.100000000000001,0,-0.0999999999999979,0,0.029264881827445,0.516613464828811,0,0 +0.0596341973364774,0.0237076717619417,0.0165009880368556,1.62548962585055e-14,-0.0173774699999987,0.5307459,NA,0.5307459,0.00711825082089532,-0.0173774699999987,-0.0999999999999979,0,0.0118874118274463,-0.0999999999999979,0.0999999999999979,0,0.0118874118274463,0.516613464828811,0.0316506057361263,0.51429641230965,0,0 +0.0639485188544041,0.0259287555811084,0.0176158527227966,2.44132322804034e-13,0.00711825082089532,0.678189428316176,NA,0.678189428316176,-0.0237071232453648,0.00711825082089532,-0.0173774699999987,0.149506454968222,0.0541935417191358,0.0118874118274463,-0.0999999999999979,0,0.0541935417191358,0.641741673395462,0.0339404141930477,0.511710193385462,0,0 +0.068269105308365,0.0279658191158661,0.0194253518595966,3.66662389529572e-12,-0.0237071232453648,0.752057576532677,NA,0.752057576532677,-0.0163012593428794,-0.0237071232453648,0.00711825082089532,0.202351215947534,0.0378331458215836,0.0541935417191358,0.0118874118274463,0.135529627304514,0.0378331458215836,0.689598709119198,0.036233547739083,0.508897528919332,0,0 +0.0752817029424115,0.0285902652159538,0.0207943862273582,5.50690323802289e-11,-0.0163012593428794,0.887345282058138,NA,0.887345282058138,-0.009013539183659,-0.0163012593428794,-0.0237071232453648,0.243291778123498,0.0644042421473539,0.0378331458215836,0.0541935417191358,0.175104401184564,0.0644042421473539,0.779504508898493,0.0399554551817028,0.504919212999066,0,0 +0.0805873076664188,0.0328064298097106,0.0209134135241508,8.27081918924803e-10,-0.009013539183659,0.989002252814016,NA,0.989002252814016,-0.0124209381746591,-0.009013539183659,-0.0163012593428794,0.290049531923305,0.0914889879849936,0.0644042421473539,0.0378331458215836,0.198694752747467,0.0914889879849936,0.823497135819756,0.0427713831359903,0.500635226716411,0,0 +0.0810485903069569,0.0378689056004456,0.0250856357339025,1.24219451667337e-08,-0.0124209381746591,1.06365089688705,NA,1.06365089688705,-0.0116116675805307,-0.0124209381746591,-0.009013539183659,0.32607397329287,0.10689014779784,0.0914889879849936,0.0644042421473539,0.220428782166723,0.10689014779784,0.829705186492621,0.0430162070061971,0.497911874524264,0,0 +0.0972177693918182,0.0298078747669572,0.0286078145050807,1.86565221889918e-07,-0.0116116675805307,1.13616695378602,NA,1.13616695378602,-0.00962922685693437,-0.0116116675805307,-0.0124209381746591,0.354910588525837,0.124688898296975,0.10689014779784,0.0914889879849936,0.227671907841632,0.124688898296975,0.823497135819756,0.051597932511853,0.489601091763771,0,0 +0.11086774689948,0.038782539731889,0.0192464690692418,2.80202347954704e-06,-0.00962922685693437,1.198783257886,NA,1.198783257886,-0.00938647658458114,-0.00962922685693437,-0.0116116675805307,0.381400966966074,0.151107798366203,0.124688898296975,0.10689014779784,0.220428782166723,0.151107798366203,0.779504508898493,0.0588426021091367,0.477040961387649,0,0 +0.074588454182629,0.0715542984707604,0.0316771466214613,4.2083596826881e-05,-0.00938647658458114,1.2507870324454,NA,1.2507870324454,-0.00886085941151256,-0.00938647658458114,-0.00962922685693437,0.404123464727995,0.177946695335136,0.151107798366203,0.124688898296975,0.198694752747468,0.177946695335136,0.689598709119198,0.0395875162447682,0.478095598311294,0,0 +0.122762746294449,0.0098837093490942,0.059859759667181,0.000632053633673964,-0.00886085941151256,1.2963771856,NA,1.2963771856,-0.00804915678982429,-0.00886085941151256,-0.00938647658458114,0.423347621758337,0.179947035404113,0.177946695335136,0.151107798366203,0.175104401184564,0.179947035404113,0.641741673395462,0.0651558242685191,0.460649757854981,0,0 +0.23198265225979,0.000491301793903431,-0.0122152596826213,0.00949281491988075,-0.00804915678982429,1.33591138779128,NA,1.33591138779128,-0.00750862230834648,-0.00804915678982429,-0.00886085941151256,0.440097195219267,0.215943387973169,0.179947035404113,0.177946695335136,0.135529627304514,0.215943387973169,0.516613464828812,0.123123841558009,0.28338271760758,0,0 +-0.0473394540000167,0.146786145155052,0.00500091972323522,0.024499267243187,-0.00750862230834648,1.36976078771892,0.307508622308347,1.36976078771892,0.227739694261289,0.300000000000001,0.219638056738543,0,0.300000000000001,0.215943387973169,0.179947035404113,-1.07148732853309e-17,0.300000000000001,-4.03634209227924e-17,-0.0251252211187475,0.0600535367423528,0,0 +0.0193807430498332,-0.0603510790594479,0.144939910377159,0.027730520886847,0.227739694261289,0.600746957836109,-0.0277396942612899,0.600746957836109,0.189000905378525,0.199999999999999,0.300000000000001,0,0.199999999999999,0.300000000000001,0.215943387973169,0,0.199999999999999,6.66963104563165e-17,0.0102862499126524,0.0343973226493759,0,0 +0.561705309452223,0.078563567092664,-0.113859857054769,0.0296522664457274,0.189000905378525,0.567526982489609,0.0109990946214783,0.567526982489609,0.201877210000002,0.200000000000003,0.199999999999999,0,0.200000000000003,0.199999999999999,0.300000000000001,0,0.200000000000003,0,0.298122789999998,0,0,0 +-0.44125655987168,-0.222568937914378,0.120598240619568,0.0296522664457274,0.201877210000002,0.5307459,0.298122789999998,0.5307459,0.33419511,0.5,0.200000000000003,0,0.5,0.200000000000003,0.199999999999999,0,0.5,0,-0.234195109999999,0,0,0 +0.46737073239755,-0.127042725752303,-0.267091281464521,0.0296522664457274,0.33419511,0.5307459,-0.234195109999999,0.5307459,0.151944900000001,0.100000000000001,0.5,0,0.100000000000001,0.5,0.200000000000003,0,0.100000000000001,0,0.248055099999997,0,0,0 +-1.03509509918023,-0.0257913344919775,-0.0284382209807651,0.0296522664457274,0.151944900000001,0.5307459,0.248055099999997,0.5307459,0.349372479999999,0.399999999999999,0.100000000000001,0,0.399999999999999,0.100000000000001,0.5,0,0.399999999999999,0,-0.549372480000002,0,0,0 +-0.110210498093344,0.0726932970806533,-0.015292539169958,0.0296522664457274,0.349372479999999,0.5307459,-0.549372480000002,0.5307459,-0.0415062300000012,-0.200000000000003,0.399999999999999,0,-0.200000000000003,0.399999999999999,0.100000000000001,0,-0.200000000000003,0,-0.0584937700000002,0,0,0 +-0.0592652529204627,0.0644587684713146,0.0783389821186854,0.0296522664457274,-0.0415062300000012,0.5307459,-0.0584937700000002,0.5307459,0.0314547899999986,-0.100000000000001,-0.200000000000003,0,-0.100000000000001,-0.200000000000003,0.399999999999999,0,-0.100000000000001,0,-0.0314547899999986,0,0,0 +0.303597691475341,0.177333565022131,0.0355376577043747,0.0296522664457274,0.0314547899999986,0.5307459,-0.0314547899999986,0.5307459,-0.0611332300000008,0,-0.100000000000001,0,0,-0.100000000000001,-0.200000000000003,0,0,0,0.161133230000002,0,0,0 +0.137723908936463,0.0381832850427984,0.164213806415762,0.0296522664457274,-0.0611332300000008,0.5307459,0.161133230000002,0.5307459,0.0269036000000004,0.100000000000001,0,0,0.100000000000001,0,-0.100000000000001,0,0.100000000000001,0,0.073096400000001,0,0,0 +0.636400055092272,0.00662995199265739,-0.0224410115253631,0.0296522664457274,0.0269036000000004,0.5307459,0.073096400000001,0.5307459,0.0622332800000009,0.100000000000001,0.100000000000001,0,0.100000000000001,0.100000000000001,0,0,0.100000000000001,0,0.337766719999998,0,0,0 +-0.0869686982037862,-0.056569024522395,0.0149147032428577,0.0296522664457274,0.0622332800000009,0.5307459,0.337766719999998,0.5307459,0.24615828,0.399999999999999,0.100000000000001,0,0.399999999999999,0.100000000000001,0.100000000000001,0,0.399999999999999,0,-0.0461582799999969,0,0,0 +0.057800974063095,0.160192995793857,-0.0620752204529117,0.0296522664457274,0.24615828,0.5307459,-0.0461582799999969,0.5307459,0.169322370000002,0.200000000000003,0.399999999999999,0,0.200000000000003,0.399999999999999,0.100000000000001,0,0.200000000000003,0,0.030677629999994,0,0,0 +-0.24056852817892,0.152841921703299,0.183109866527268,0.0296522664457274,0.169322370000002,0.5307459,0.030677629999994,0.5307459,0.227680759999998,0.199999999999996,0.200000000000003,0,0.199999999999996,0.200000000000003,0.399999999999999,0,0.199999999999996,0,-0.127680759999996,0,0,0 +0.709630521874967,0.0134955378125429,0.0852415956698116,0.0296522664457274,0.227680759999998,0.5307459,-0.127680759999996,0.5307459,0.123366510000001,0.100000000000001,0.199999999999996,0,0.100000000000001,0.199999999999996,0.200000000000003,0,0.100000000000001,0,0.376633489999999,0,0,0 +0.33034832676051,-0.0235398165630878,-0.0179738732474881,0.0296522664457274,0.123366510000001,0.5307459,0.376633489999999,0.5307459,0.324668979999999,0.5,0.100000000000001,0,0.5,0.100000000000001,0.199999999999996,0,0.5,0,0.175331020000001,0,0,0 +-0.0696565908469497,0.083352848686631,-0.0169042391654393,0.0296522664457274,0.324668979999999,0.5307459,0.175331020000001,0.5307459,0.33696995,0.5,0.5,0,0.5,0.5,0.100000000000001,0,0.5,0,-0.0369699499999961,0,0,0 +-0.0655112926920492,-0.0493426930030197,0.0895935395931561,0.0296522664457274,0.33696995,0.5307459,-0.0369699499999961,0.5307459,0.334769850000002,0.300000000000004,0.5,0,0.300000000000004,0.5,0.5,0,0.300000000000004,0,-0.0347698500000051,0,0,0 +0.347214005798257,-0.0452340335581077,-0.0824187505735691,0.0296522664457274,0.334769850000002,0.5307459,-0.0347698500000051,0.5307459,0.315717589999999,0.299999999999997,0.300000000000004,0,0.299999999999997,0.300000000000004,0.5,0,0.299999999999997,0,0.184282410000001,0,0,0 +-0.319408571973892,-0.128704132657991,-0.0148067577607313,0.0296522664457274,0.315717589999999,0.5307459,0.184282410000001,0.5307459,0.369524790000001,0.5,0.299999999999997,0,0.5,0.299999999999997,0.300000000000004,0,0.5,0,-0.169524789999998,0,0,0 +-0.0573826382832256,0.211855488309034,-0.123237787937701,0.0296522664457274,0.369524790000001,0.5307459,-0.169524789999998,0.5307459,0.230455600000001,0.200000000000003,0.5,0,0.200000000000003,0.5,0.299999999999997,0,0.200000000000003,0,-0.030455600000005,0,0,0 +-0.477600128423033,0.110639608962089,0.257352297422779,0.0296522664457274,0.230455600000001,0.5307459,-0.030455600000005,0.5307459,0.253484309999998,0.199999999999996,0.200000000000003,0,0.199999999999996,0.200000000000003,0.5,0,0.199999999999996,0,-0.253484309999998,0,0,0 +0.997352292311634,0.0213351799307562,0.0156305330385024,0.0296522664457274,0.253484309999998,0.5307459,-0.253484309999998,0.5307459,0.0706593600000003,0,0.199999999999996,0,0,0.199999999999996,0.200000000000003,0,0,0,0.529340640000001,0,0,0 +0.0605751264399761,-0.164924314098101,0.0155647146384197,0.0296522664457274,0.0706593600000003,0.5307459,0.529340640000001,0.5307459,0.36785,0.600000000000001,0,0,0.600000000000001,0,0.199999999999996,0,0.600000000000001,0,0.0321499999999989,0,0,0 +0.0603200514596625,0.213240392137561,-0.170670480616215,0.0296522664457274,0.36785,0.5307459,0.0321499999999989,0.5307459,0.267985379999999,0.399999999999999,0.600000000000001,0,0.399999999999999,0.600000000000001,0,0,0.399999999999999,0,0.0320146200000049,0,0,0 +-0.66142248107805,0.0794456822773055,0.276248357534281,0.0296522664457274,0.267985379999999,0.5307459,0.0320146200000049,0.5307459,0.351047270000002,0.300000000000004,0.399999999999999,0,0.300000000000004,0.399999999999999,0.600000000000001,0,0.300000000000004,0,-0.351047270000002,0,0,0 +1.07058275909432,0.0998473058585762,-0.0225394231116059,0.0296522664457274,0.351047270000002,0.5307459,-0.351047270000002,0.5307459,0.13179259,0,0.300000000000004,0,0,0.300000000000004,0.399999999999999,0,0,0,0.568207409999996,0,0,0 +-0.0873500859827654,-6.17594583794331e-05,0.108168388604406,0.0296522664457274,0.13179259,0.5307459,0.568207409999996,0.5307459,0.446360699999999,0.699999999999996,0,0,0.699999999999996,0,0.300000000000004,0,0.699999999999996,0,-0.0463607000000002,0,0,0 +0.419199639601552,0.733130822521038,-0.0399952620863547,0.0296522664457274,0.446360699999999,0.5307459,-0.0463607000000002,0.5307459,0.277511509999999,0.399999999999999,0.699999999999996,0,0.399999999999999,0.699999999999996,0,0,0.399999999999999,0,0.222488490000001,0,0,0 +-0.154999068292366,0.680334051010577,0.747896235265358,0.0296522664457274,0.277511509999999,0.5307459,0.222488490000001,0.5307459,0.482265119999999,0.5,0.399999999999999,0,0.5,0.399999999999999,0.699999999999996,0,0.5,0,-0.0822651199999931,0,0,0 +2.89842380317963,0.373672930771501,0.404226431568741,0.0296522664457274,0.482265119999999,0.5307459,-0.0822651199999931,0.5307459,0.361673450000003,0.400000000000006,0.5,0,0.400000000000006,0.5,0.399999999999999,0,0.400000000000006,0,1.53832655,0,0,0 +1.56655356169497,-0.514902622666697,0.224441001964808,0.0296522664457274,0.361673450000003,0.5307459,1.53832655,0.5307459,1.16855812,1.9,0.400000000000006,0,1.9,0.400000000000006,0.5,0,1.9,0,0.83144188,0,0,0 +0.869806681502383,0.801079403246931,-0.5977615378953,0.0296522664457274,1.16855812,0.5307459,0.83144188,0.5307459,1.33835367,2,1.9,0,2,1.9,0.400000000000006,0,2,0,0.461646329999996,0,0,0 +-2.31658643053107,0.190626802733698,1.02176043818168,0.0296522664457274,1.33835367,0.5307459,0.461646329999996,0.5307459,1.62951875,1.8,2,0,1.8,2,1.9,0,1.8,0,-1.22951875,0,0,0 +3.95976692424756,1.0566025139816,-0.186585742167126,0.0296522664457274,1.62951875,0.5307459,-1.22951875,0.5307459,0.898369939999999,0.399999999999999,1.8,0,0.399999999999999,1.8,2,0,0.399999999999999,0,2.10163006,0,0,0 +-0.723101054572435,-0.0869601523110229,1.12548606047155,0.0296522664457274,0.898369939999999,0.5307459,2.10163006,0.5307459,2.08378292,3,0.399999999999999,0,3,0.399999999999999,1.8,0,3,0,-0.383782919999996,0,0,0 +4.36174890847014,-1.02674334962278,-0.502466023605469,0.0296522664457274,2.08378292,0.5307459,-0.383782919999996,0.5307459,1.28501965,1.7,3,0,1.7,3,0.399999999999999,0,1.7,0,2.31498035,0,0,0 +-1.94727478818019,-0.553850616203382,-0.841243421843513,0.0296522664457274,1.28501965,0.5307459,2.31498035,0.5307459,2.83350811,3.6,1.7,0,3.6,1.7,3,0,3.6,0,-1.03350811,0,0,0 +-3.26018482667506,0.114035649026434,-0.243281171374041,0.0296522664457274,2.83350811,0.5307459,-1.03350811,0.5307459,1.73032973,1.8,3.6,0,1.8,3.6,1.7,0,1.8,0,-1.73032973,0,0,0 +-0.942820547459714,0.0316751337345581,0.203849960044158,0.0296522664457274,1.73032973,0.5307459,-1.73032973,0.5307459,1.10039814,0,1.8,0,0,1.8,3.6,0,0,0,-0.500398139999999,0,0,0 +0.790007421630582,-0.154833154050993,-0.0435820002596193,0.0296522664457274,1.10039814,0.5307459,-0.500398139999999,0.5307459,0.7807068,0.600000000000001,0,0,0.600000000000001,0,1.8,0,0.600000000000001,0,0.419293200000003,0,0,0 +-0.168899241614504,0.131132967323623,-0.138743592725781,0.0296522664457274,0.7807068,0.5307459,0.419293200000003,0.5307459,0.689642580000002,1.2,0.600000000000001,0,1.2,0.600000000000001,0,0,1.2,0,-0.0896425800000074,0,0,0 +-0.537691878542996,0.0878554245896234,0.18235419467307,0.0296522664457274,0.689642580000002,0.5307459,-0.0896425800000074,0.5307459,0.585377759999998,0.599999999999994,1.2,0,0.599999999999994,1.2,0.600000000000001,0,0.599999999999994,0,-0.285377759999993,0,0,0 +0.706701964160243,-0.00802346547950195,0.0205340767711652,0.0296522664457274,0.585377759999998,0.5307459,-0.285377759999993,0.5307459,0.524920830000002,0.300000000000004,0.599999999999994,0,0.300000000000004,0.599999999999994,1.2,0,0.300000000000004,0,0.375079169999996,0,0,0 +0.0795784950953076,0.401435001801264,-0.0156042163743246,0.0296522664457274,0.524920830000002,0.5307459,0.375079169999996,0.5307459,0.657764039999998,0.899999999999999,0.300000000000004,0,0.899999999999999,0.300000000000004,0.599999999999994,0,0.899999999999999,0,0.0422359600000046,0,0,0 +-0.0604731378989503,0.361252532298048,0.407195751532597,0.0296522664457274,0.657764039999998,0.5307459,0.0422359600000046,0.5307459,0.532095870000002,0.700000000000003,0.899999999999999,0,0.700000000000003,0.899999999999999,0.300000000000004,0,0.700000000000003,0,-0.0320958700000025,0,0,0 +1.57806097041918,-0.359826737029084,0.210924392776656,0.0296522664457274,0.532095870000002,0.5307459,-0.0320958700000025,0.5307459,0.56245061,0.5,0.700000000000003,0,0.5,0.700000000000003,0.899999999999999,0,0.5,0,0.837549389999999,0,0,0 +0.817423931112795,-0.0387425914882368,-0.437695603357999,0.0296522664457274,0.56245061,0.5307459,0.837549389999999,0.5307459,0.9661556,1.4,0.5,0,1.4,0.5,0.700000000000003,0,1.4,0,0.433844399999999,0,0,0 +-1.69626118637939,0.389353488785813,0.122845454265806,0.0296522664457274,0.9661556,0.5307459,0.433844399999999,0.5307459,1.00028367,1.4,1.4,0,1.4,1.4,0.5,0,1.4,0,-0.900283669999998,0,0,0 +0.476079664487275,0.665378936841417,0.344001521043191,0.0296522664457274,1.00028367,0.5307459,-0.900283669999998,0.5307459,0.54732267,0.100000000000001,1.4,0,0.100000000000001,1.4,1.4,0,0.100000000000001,0,0.252677329999997,0,0,0 +1.33315579074659,0.00260502509182386,0.538380783112369,0.0296522664457274,0.54732267,0.5307459,0.252677329999997,0.5307459,0.792433029999998,0.799999999999997,0.100000000000001,0,0.799999999999997,0.100000000000001,1.4,0,0.799999999999997,0,0.707566970000009,0,0,0 +2.0864601309214,0.16841227694028,-0.196153879377919,0.0296522664457274,0.792433029999998,0.5307459,0.707566970000009,0.5307459,0.892619840000004,1.50000000000001,0.799999999999997,0,1.50000000000001,0.799999999999997,0.100000000000001,0,1.50000000000001,0,1.10738016,0,0,0 +-0.760181755525573,0.597133579062212,0.240828179207928,0.0296522664457274,0.892619840000004,0.5307459,1.10738016,0.5307459,1.40346335,2,1.50000000000001,0,2,1.50000000000001,0.799999999999997,0,2,0,-0.40346335,0,0,0 +0.933314133938656,0.611506418569741,0.508224861354842,0.0296522664457274,1.40346335,0.5307459,-0.40346335,0.5307459,1.10464735,1,2,0,1,2,1.50000000000001,0,1,0,0.495352649999992,0,0,0 +1.96959279383977,0.291938162906109,0.423880448557933,0.0296522664457274,1.10464735,0.5307459,0.495352649999993,0.5307459,1.4546467,1.59999999999999,1,0,1.59999999999999,1,2,0,1.59999999999999,0,1.0453533,0,0,0 +1.64272144165409,0.387881375422164,0.135450382836267,0.0296522664457274,1.4546467,0.5307459,1.0453533,0.5307459,1.72813233,2.5,1.59999999999999,0,2.5,1.59999999999999,1,0,2.5,0,0.871867669999995,0,0,0 +0.524929255223669,0.773394846381199,0.337875932161525,0.0296522664457274,1.72813233,0.5307459,0.871867669999995,0.5307459,2.02139595,2.59999999999999,2.5,0,2.59999999999999,2.5,1.59999999999999,0,2.59999999999999,0,0.278604050000016,0,0,0 +1.30941646463965,-0.300367189877982,0.648658131718222,0.0296522664457274,2.02139595,0.5307459,0.278604050000016,0.5307459,2.10503258000001,2.30000000000001,2.59999999999999,0,2.30000000000001,2.59999999999999,2.5,0,2.30000000000001,0,0.694967419999991,0,0,0 +2.51383290949587,0.203748255662326,-0.539838180819341,0.0296522664457274,2.10503258000001,0.5307459,0.694967419999991,0.5307459,2.36579349,2.8,2.30000000000001,0,2.8,2.30000000000001,2.59999999999999,0,2.8,0,1.33420651,0,0,0 +-2.09210818208867,-0.139251184552095,0.403045200828729,0.0296522664457274,2.36579349,0.5307459,1.33420651,0.5307459,2.81037784,3.7,2.8,0,3.7,2.8,2.30000000000001,0,3.7,0,-1.11037784000002,0,0,0 +1.56197577786285,0.350889847612132,-0.288047027719821,0.0296522664457274,2.81037784,0.5307459,-1.11037784000002,0.5307459,1.97098775999999,1.69999999999999,3.7,0,1.69999999999999,3.7,2.8,0,1.69999999999999,0,0.829012240000018,0,0,0 +-1.11630774726664,0.0540067374478824,0.457230774816824,0.0296522664457274,1.97098775999999,0.5307459,0.829012240000018,0.5307459,2.59247576000001,2.80000000000001,1.69999999999999,0,2.80000000000001,1.69999999999999,3.7,0,2.80000000000001,0,-0.592475760000005,0,0,0 +1.77196848812208,-0.616127603414353,-0.114793284289661,0.0296522664457274,2.59247576000001,0.5307459,-0.592475760000005,0.5307459,1.75953499,2,2.80000000000001,0,2,2.80000000000001,1.69999999999999,0,2,0,0.94046500999999,0,0,0 +-0.44487399714249,-0.875782736137246,-0.573748328110363,0.0296522664457274,1.75953499,0.5307459,0.94046500999999,0.5307459,2.33611505,2.69999999999999,2,0,2.69999999999999,2,2.80000000000001,0,2.69999999999999,0,-0.236115049999988,0,0,0 +-2.223524778995,-0.126423131149624,-0.66396687510797,0.0296522664457274,2.33611505,0.5307459,-0.236115049999988,0.5307459,1.88012666,2.10000000000001,2.69999999999999,0,2.10000000000001,2.69999999999999,2,0,2.10000000000001,0,-1.18012666,0,0,0 +-2.57316096082892,-0.195744335153904,0.118699527088188,0.0296522664457274,1.88012666,0.5307459,-1.18012666,0.5307459,1.26569463,0.700000000000003,2.10000000000001,0,0.700000000000003,2.10000000000001,2.69999999999999,0,0.700000000000003,0,-1.36569463000001,0,0,0 +0.460012390109842,0.055896633133449,-0.239565713451875,0.0296522664457274,1.26569463,0.5307459,-1.36569463000001,0.5307459,0.555850309999998,-0.100000000000008,0.700000000000003,0,-0.100000000000008,0.700000000000003,2.10000000000001,0,-0.100000000000008,0,0.244149689999999,0,0,0 +-0.928421529021684,-0.105586821252778,0.144339274936042,0.0296522664457274,0.555850309999998,0.5307459,0.244149689999999,0.5307459,0.592755919999998,0.799999999999997,-0.100000000000008,0,0.799999999999997,-0.100000000000008,0.700000000000003,0,0.799999999999997,0,-0.49275591999999,0,0,0 +0.559377585394422,-0.0667308073075661,-0.158873857228311,0.0296522664457274,0.592755919999998,0.5307459,-0.49275591999999,0.5307459,0.103112640000002,0.100000000000009,0.799999999999997,0,0.100000000000009,0.799999999999997,-0.100000000000008,0,0.100000000000009,0,0.296887359999989,0,0,0 +-0.615705425138446,0.0624339054102411,-0.00807790809182508,0.0296522664457274,0.103112640000002,0.5307459,0.296887359999989,0.5307459,0.426783129999996,0.399999999999991,0.100000000000009,0,0.399999999999991,0.100000000000009,0.799999999999997,0,0.399999999999991,0,-0.326783129999987,0,0,0 +-0.0313054137582816,0.416274320571032,0.0654160998218929,0.0296522664457274,0.426783129999996,0.5307459,-0.326783129999987,0.5307459,0.116615220000006,0.100000000000009,0.399999999999991,0,0.100000000000009,0.399999999999991,0.100000000000009,0,0.100000000000009,0,-0.0166152200000116,0,0,0 +0.253515891502886,0.105163346061856,0.392124067175808,0.0296522664457274,0.116615220000006,0.5307459,-0.0166152200000116,0.5307459,0.165447479999996,0.0999999999999943,0.100000000000009,0,0.0999999999999943,0.100000000000009,0.399999999999991,0,0.0999999999999943,0,0.134552520000002,0,0,0 +1.51965162613597,0.308099633822476,-0.0396006433909703,0.0296522664457274,0.165447479999996,0.5307459,0.134552520000002,0.5307459,0.19345113,0.299999999999997,0.0999999999999943,0,0.299999999999997,0.0999999999999943,0.100000000000009,0,0.299999999999997,0,0.80654887,0,0,0 +-0.153469748894901,-0.0196349595209529,0.322719361612878,0.0296522664457274,0.19345113,0.5307459,0.80654887,0.5307459,0.581453439999998,1,0.299999999999997,0,1,0.299999999999997,0.0999999999999943,0,1,0,-0.0814534399999983,0,0,0 +1.25067814937432,-0.41588804373822,-0.138776185911945,0.0296522664457274,0.581453439999998,0.5307459,-0.0814534399999983,0.5307459,0.436207699999999,0.5,1,0,0.5,1,0.299999999999997,0,0.5,0,0.663792300000009,0,0,0 +-0.537818191341676,-0.395009368979804,-0.364654783667363,0.0296522664457274,0.436207699999999,0.5307459,0.663792300000009,0.5307459,0.885444800000004,1.10000000000001,0.5,0,1.10000000000001,0.5,1,0,1.10000000000001,0,-0.28544480000001,0,0,0 +-1.41319618295685,-0.182497081019815,-0.260386463436297,0.0296522664457274,0.885444800000004,0.5307459,-0.28544480000001,0.5307459,0.550048079999998,0.599999999999994,1.10000000000001,0,0.599999999999994,1.10000000000001,0.5,0,0.599999999999994,0,-0.750048080000001,0,0,0 +-1.00911100773458,0.106966335957151,-0.0863678545787083,0.0296522664457274,0.550048079999998,0.5307459,-0.750048080000001,0.5307459,0.23558153,-0.200000000000003,0.599999999999994,0,-0.200000000000003,0.599999999999994,1.10000000000001,0,-0.200000000000003,0,-0.535581529999997,0,0,0 +-0.334713070793392,-0.267788603388917,0.138851538207922,0.0296522664457274,0.23558153,0.5307459,-0.535581529999997,0.5307459,-0.0223524100000002,-0.299999999999997,-0.200000000000003,0,-0.299999999999997,-0.200000000000003,0.599999999999994,0,-0.299999999999997,0,-0.177647590000003,0,0,0 +0.538110214322919,0.373751762079172,-0.319049681948597,0.0296522664457274,-0.0223524100000002,0.5307459,-0.177647590000003,0.5307459,-0.185599790000002,-0.200000000000003,-0.299999999999997,0,-0.200000000000003,-0.299999999999997,-0.200000000000003,0,-0.200000000000003,0,0.28559979000001,0,0,0 +-1.23645654163321,-0.681672132408642,0.491538219628656,0.0296522664457274,-0.185599790000002,0.5307459,0.28559979000001,0.5307459,-0.043755759999995,0.100000000000009,-0.200000000000003,0,0.100000000000009,-0.200000000000003,-0.299999999999997,0,0.100000000000009,0,-0.656244240000008,0,0,0 +1.90492478604167,-0.749366988155991,-0.863137743929194,0.0296522664457274,-0.043755759999995,0.5307459,-0.656244240000008,0.5307459,-0.411031020000001,-0.700000000000003,0.100000000000009,0,-0.700000000000003,0.100000000000009,-0.200000000000003,0,-0.700000000000003,0,1.01103102,0,0,0 +-3.34503486508327,0.0533502038509226,-0.430714618362834,0.0296522664457274,-0.411031020000001,0.5307459,1.01103102,0.5307459,0.275363539999999,0.599999999999994,-0.700000000000003,0,0.599999999999994,-0.700000000000003,0.100000000000009,0,0.599999999999994,0,-1.77536354,0,0,0 +-1.66920682759866,0.672534195265053,0.212361016216847,0.0296522664457274,0.275363539999999,0.5307459,-1.77536354,0.5307459,-0.914075320000001,-1.5,0.599999999999994,0,-1.5,0.599999999999994,-0.700000000000003,0,-1.5,0,-0.885924679999996,0,0,0 +0.822991472944021,0.90060294662053,0.594134957663491,0.0296522664457274,-0.914075320000001,0.5307459,-0.885924679999996,0.5307459,-0.93679935,-1.8,-1.5,0,-1.8,-1.5,0.599999999999994,0,-1.8,0,0.43679935,0,0,0 +2.30253185187112,0.791713290597868,0.681260769119879,0.0296522664457274,-0.93679935,0.5307459,0.43679935,0.5307459,-0.82205934,-0.5,-1.8,0,-0.5,-1.8,-1.5,0,-0.5,0,1.22205934000001,0,0,0 +2.64018233584092,0.223101708570311,0.540206089048625,0.0296522664457274,-0.82205934,0.5307459,1.22205934000001,0.5307459,-0.301265949999996,0.400000000000006,-0.5,0,0.400000000000006,-0.5,-1.8,0,0.400000000000006,0,1.40126594999999,0,0,0 +2.09353398679106,-0.242145727812177,0.023668939394411,0.0296522664457274,-0.301265949999996,0.5307459,1.40126594999999,0.5307459,0.488865419999998,1.09999999999999,0.400000000000006,0,1.09999999999999,0.400000000000006,-0.5,0,1.09999999999999,0,1.11113458000001,0,0,0 +0.0917274537589246,-0.18070625883046,-0.250883804302942,0.0296522664457274,0.488865419999998,0.5307459,1.11113458000001,0.5307459,1.05131603000001,1.60000000000001,1.09999999999999,0,1.60000000000001,1.09999999999999,0.400000000000006,0,1.60000000000001,0,0.0486839699999888,0,0,0 +-0.97228406286322,0.430459312024697,-0.0880852150328281,0.0296522664457274,1.05131603000001,0.5307459,0.0486839699999888,0.5307459,1.01603578,1.09999999999999,1.60000000000001,0,1.09999999999999,1.60000000000001,1.09999999999999,0,1.09999999999999,0,-0.516035779999996,0,0,0 +-0.341368590883146,0.399672790502207,0.462978527771394,0.0296522664457274,1.01603578,0.5307459,-0.516035779999996,0.5307459,0.781179980000002,0.5,1.09999999999999,0,0.5,1.09999999999999,1.60000000000001,0,0.5,0,-0.181179980000007,0,0,0 +1.79424353537166,-0.206208202273017,0.228750818806107,0.0296522664457274,0.781179980000002,0.5307459,-0.181179980000007,0.5307459,0.647712599999996,0.599999999999994,0.5,0,0.599999999999994,0.5,1.09999999999999,0,0.599999999999994,0,0.952287400000013,0,0,0 +0.886509099740565,0.612582249294492,-0.290658211576132,0.0296522664457274,0.647712599999996,0.5307459,0.952287400000013,0.5307459,1.02948893,1.60000000000001,0.599999999999994,0,1.60000000000001,0.599999999999994,0.5,0,1.60000000000001,0,0.470511069999996,0,0,0 +-1.12642722251835,0.388794699108794,0.719887170866979,0.0296522664457274,1.02948893,0.5307459,0.470511069999996,0.5307459,1.09784663,1.5,1.60000000000001,0,1.5,1.60000000000001,0.599999999999994,0,1.5,0,-0.597846629999999,0,0,0 +2.78987647384557,-0.805170919383082,0.123027439370849,0.0296522664457274,1.09784663,0.5307459,-0.597846629999999,0.5307459,0.819284500000002,0.5,1.5,0,0.5,1.5,1.60000000000001,0,0.5,0,1.48071549999999,0,0,0 +0.47678493606829,-0.393582372246918,-0.850590072213365,0.0296522664457274,0.819284500000002,0.5307459,1.48071549999999,0.5307459,1.64694835,2.3,0.5,0,2.3,0.5,1.5,0,2.3,0,0.253051650000007,0,0,0 +-3.29640716960792,0.426177541910559,-0.0795623399407469,0.0296522664457274,1.64694835,0.5307459,0.253051650000007,0.5307459,1.34955459,1.90000000000001,2.3,0,1.90000000000001,2.3,0.5,0,1.90000000000001,0,-1.74955459000001,0,0,0 +-0.308338736107035,-0.307399264062802,0.455550290752472,0.0296522664457274,1.34955459,0.5307459,-1.74955459000001,0.5307459,0.563649519999997,-0.400000000000006,1.90000000000001,0,-0.400000000000006,1.90000000000001,2.3,0,-0.400000000000006,0,-0.163649519999991,0,0,0 +1.76545588011135,0.723744404108207,-0.475578886294854,0.0296522664457274,0.563649519999997,0.5307459,-0.163649519999991,0.5307459,0.662991530000004,0.400000000000006,-0.400000000000006,0,0.400000000000006,-0.400000000000006,1.90000000000001,0,0.400000000000006,0,0.93700846999999,0,0,0 +-1.84307541518455,1.28104893977355,0.899318164156728,0.0296522664457274,0.662991530000004,0.5307459,0.93700846999999,0.5307459,0.778204719999996,1.59999999999999,0.400000000000006,0,1.59999999999999,0.400000000000006,-0.400000000000006,0,1.59999999999999,0,-0.978204719999999,0,0,0 +3.48524975887708,0.350365504486796,0.949039516918231,0,0.778204719999996,0.5307459,-0.978204719999999,0.5307459,0.150217979999999,-0.200000000000003,1.59999999999999,0,-0.200000000000003,1.59999999999999,0.400000000000006,0,-0.200000000000003,0,1.84978202,0,0,0 +3.67794166662429,0,0,0,0.150217979999999,0.5307459,1.84978202,0.5307459,1.44794754,2,-0.200000000000003,0,2,-0.200000000000003,1.59999999999999,0,2,0,1.95205246000001,0,0,0 +0,0,0,0,1.44794754,0.5307459,1.95205246000001,0.5307459,1.9309586,3.40000000000001,2,0,3.40000000000001,2,-0.200000000000003,0,3.40000000000001,0,0,0.5307459,0,0 diff --git a/statsmodels/tsa/statespace/tests/results/results_smoothing_R.csv b/statsmodels/tsa/statespace/tests/results/results_smoothing_R.csv new file mode 100644 index 0000000..38a5ad6 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_smoothing_R.csv @@ -0,0 +1,203 @@ +"r1","r2","r3","detN","m1","m2","m3","detPmu","v1","v2","v3","F1","F2","F3","a1","a2","a3","detP","alphahat1","alphahat2","alphahat3","detV","muhat1","muhat2","muhat3","detVmu","etahat1","etahat2","etahat3","detVeta","epshat1","epshat2","epshat3","Veps1","Veps2","Veps3" +3.93104930508059e-05,-4.74927774802766,-12.7383199661869,1.45890760503934e-07,0,0,0,999999999999998592,NA,26.3,23.961,1000001,1000001,1000001,0,26.2999737000263,23.9609760390239,3999999.99996655,39.3104930508059,21.550700701562,11.2226688119232,19.3333660284117,39.3104930508059,21.550700701562,11.2226688119232,19.3333660284117,3.93104930508059e-05,-4.74927774802766,-12.7383199661869,0.3819654489623,0,4.74929929872836,12.7383311888557,1,0.618033606782863,0.618033606782863 +3.93104930508059e-05,-6.04785479474273,7.37902887888031,1.91566448186757e-07,0,26.2999737000263,23.9609760390239,3999999.99996655,NA,-8.19997370002635,-45.5939760390239,1000002,2.99999899999239,2.99999899999239,0,20.8333254777908,-6.43500292095441,2777782.96295929,39.310532361299,16.8014229532848,-1.51565115493282,11.0599216730989,39.310532361299,16.8014229532848,-1.51565115493282,11.0599216730989,3.93104930508059e-05,-6.04785479474273,7.37902887888031,0.316187583657143,0,1.29857704671507,-20.1173488450672,1,0.472135899271045,0.472135899271044 +3.93104930508059e-05,2.80571336379929,3.1124066028278,1.98749623423023e-07,0,20.8333254777908,-6.43500292095441,2777782.96295929,NA,-18.9333254777907,16.5650029209544,1000003,2.66666655555467,2.66666655555467,0,8.99999735000718,3.91812364581185,2640632.87109319,39.310571671792,10.7535681585421,5.86337772394749,9.88188668205834,39.310571671792,10.7535681585421,5.86337772394749,9.88188668205834,3.93104930508059e-05,2.80571336379929,3.1124066028278,0.307109930418793,0,-8.85356815854202,4.26662227605251,1,0.450849710616695,0.450849710616688 +3.93104930508059e-05,-0.435005113859261,-20.2778090703969,1.9980868600128e-07,0,8.99999735000718,3.91812364581185,2640632.87109319,NA,7.80000264999278,28.4478763541881,1000004,2.62499998437488,2.62499998437488,0,13.8285704013631,21.5287137053249,2621325.67066183,39.3106109822851,13.5592815223414,8.97578432677528,9.54576019072231,39.3106109822851,13.5592815223414,8.97578432677528,9.54576019072231,3.93104930508059e-05,-0.435005113859261,-20.2778090703969,0.305796570643906,0,3.24071847765855,23.3902156732247,1,0.447744097546026,0.447744097545979 +3.93104930508059e-05,-9.71072870537721,1.99016618598146,1.99963436392211e-07,0,13.8285704013631,21.5287137053249,2621325.67066183,NA,8.57142959863699,-55.0987137053249,1000005,2.61904761678003,2.61904761678003,0,19.1272723322324,-12.5323092942977,2618525.48818632,39.3106502927781,13.1242764084821,-11.3020247436216,9.3263995714509,39.3106502927781,13.1242764084821,-11.3020247436216,9.3263995714509,3.93104930508059e-05,-9.71072870537721,1.99016618598146,0.305605189290669,0,9.27572359151795,-22.2679752563784,1,0.447290994705697,0.447290994705373 +3.93104930508059e-05,0.802818997727851,-5.54469237165873,1.99986019175244e-07,0,19.1272723322324,-12.5323092942977,2618525.48818632,NA,-26.2272723322326,10.7553092942977,1000006,2.61818181785124,2.61818181785124,0,2.9173609614924,-5.88493063375738,2618119.48933082,39.3106896032712,3.41354770310493,-9.31185855764017,9.12365135493298,39.3106896032712,3.41354770310493,-9.31185855764017,9.12365135493298,3.93104930508059e-05,0.802818997727851,-5.54469237165873,0.305577272137918,0,-10.5135477031051,7.53485855764018,1,0.447224887894063,0.447224887891842 +3.93104930508059e-05,2.61918569856054,16.2097566990424,1.99989314050576e-07,0,2.9173609614924,-5.88493063375738,2618119.48933082,NA,-0.517360961492312,-30.7260693662426,1000007,2.61805555550733,2.61805555550733,0,2.5976126749504,-24.8747825230227,2618062.49742673,39.3107289137642,4.21636670083278,-14.8565509292989,8.92327441084561,39.3107289137642,4.21636670083278,-14.8565509292989,8.92327441084561,3.93104930508059e-05,2.61918569856054,16.2097566990424,0.305573199205235,0,-1.81636670083269,-21.7544490707011,1,0.447215243052953,0.44721524303773 +3.93104930508059e-05,9.95473809795386,10.9219624687859,1.99989794666565e-07,0,2.5976126749504,-24.8747825230227,2618062.49742673,NA,-3.0976126749504,31.5157825230227,1000008,2.61803713527148,2.61803713527148,0,0.683181335825165,-5.39694327377052,2618056.41861809,39.3107682242573,6.83555239939332,1.35320576974347,8.72323568974603,39.3107682242573,6.83555239939332,1.35320576974347,8.72323568974603,3.93104930508059e-05,9.95473809795386,10.9219624687859,0.305572605100859,0,-7.33555239939332,5.2877942302565,1,0.447213835976819,0.447213835872479 +3.93104930508059e-05,0.145028595301123,3.3561307073152,1.99989864087647e-07,0,0.683181335825165,-5.39694327377052,2618056.41861809,NA,25.9168186641747,25.2379432737705,1000009,2.61803444782065,2.61803444782065,0,16.7006578863968,10.200965165936,2618057.76780153,39.3108075347503,16.7902904973472,12.2751682385293,8.52324490716159,39.3108075347503,16.7902904973472,12.2751682385293,8.52324490716159,3.93104930508059e-05,0.145028595301123,3.3561307073152,0.305572519287406,0,9.80970950265274,7.56583176147067,1,0.447213631284988,0.447213630569836 +3.93104930508059e-05,8.28034768794947,-4.99357034684026,1.99989869418906e-07,0,16.7006578863968,10.200965165936,2618057.76780153,NA,-7.90065788639682,13.780034834064,1000010,2.6180340557274,2.6180340557274,0,11.8177827019143,18.717495194202,2618060.20071259,39.3108468452434,16.9353190926483,15.6312989458445,8.3232606848154,39.3108468452434,16.9353190926483,15.6312989458445,8.3232606848154,3.93104930508059e-05,8.28034768794947,-4.99357034684026,0.305572512697281,0,-8.13531909264834,8.34970105415546,1,0.447213605518309,0.447213600616584 +3.93104930508059e-05,-3.00398553145278,0.408158252163961,1.99989837316624e-07,0,11.8177827019143,18.717495194202,2618060.20071259,NA,24.6822172980857,-13.481495194202,1000011,2.61803399852178,2.61803399852178,0,27.0722319450313,10.3854729257963,2618062.79173749,39.3108861557364,25.2156667805978,10.6377285990043,8.12327748689645,39.3108861557364,25.2156667805978,10.6377285990043,8.12327748689645,3.93104930508059e-05,-3.00398553145278,0.408158252163961,0.305572552379852,0,11.2843332194022,-5.40172859900423,1,0.447213629843381,0.447213596246464 +3.93104930508059e-05,-0.592304282307975,-7.3539548966678,1.99989607269397e-07,0,27.0722319450313,10.3854729257963,2618062.79173749,NA,-7.27223194503109,8.42252707420371,1000012,2.61803399017559,2.61803399017559,0,22.5777454274166,15.5908809305723,2618065.40583089,39.3109254662295,22.211681249145,11.0458868511682,7.92329697959605,39.3109254662295,22.211681249145,11.0458868511682,7.92329697959605,3.93104930508059e-05,-0.592304282307975,-7.3539548966678,0.305572836747972,0,-2.4116812491448,7.76211314883176,1,0.447213825885571,0.447213595608872 +3.93104930508059e-05,-2.07292731547087,-0.430022942167345,1.99988029041088e-07,0,22.5777454274166,15.5908809305723,2618065.40583089,NA,0.522254572583279,-18.8228809305724,1000013,2.6180339889579,2.6180339889579,0,22.900516504069,3.95770074871513,2618068.02328996,39.3109647767225,21.619376966837,3.69193195450043,7.72333580055348,39.3109647767225,21.619376966837,3.69193195450043,7.72333580055348,3.93104930508059e-05,-2.07292731547087,-0.430022942167345,0.30557478764224,0,1.4806230331629,-6.92393195450046,1,0.447215173855825,0.447213595515848 +3.93104930508059e-05,2.07352233589517,-3.09111392983426,1.99977211490153e-07,0,22.900516504069,3.95770074871513,2618068.02328996,NA,-7.50051650406891,1.96529925128487,1000014,2.61803398878024,2.61803398878024,0,18.2649423713417,5.1723224840826,2618070.64124007,39.3110040872156,19.5464496513661,3.26190901233308,7.52350577815102,39.3110040872156,19.5464496513661,3.26190901233308,7.52350577815102,3.93104930508059e-05,2.07352233589517,-3.09111392983426,0.305588159534,0,-4.14644965136605,2.66109098766692,1,0.447224413605411,0.447213595502276 +3.93104930508059e-05,-3.50650567684333,8.39168115266457,1.99903066861918e-07,0,18.2649423713417,5.1723224840826,2618070.64124007,NA,8.93505762865815,-16.4843224840826,1000015,2.61803398875432,2.61803398875432,0,23.7871116772972,-5.0155490926052,2618073.25926181,39.3110433977086,21.6199719872613,0.170795082498824,7.32455285080981,39.3110433977086,21.6199719872613,0.170795082498824,7.32455285080981,3.93104930508059e-05,-3.50650567684333,8.39168115266457,0.305679811882048,0,5.5800280127385,-11.4827950824988,1,0.447287743882263,0.447213595500296 +3.93104930508059e-05,1.50696063357452,-1.11684261217206,1.99394872015207e-07,0,23.7871116772972,-5.0155490926052,2618073.25926181,NA,-10.6871116772971,23.0865490926052,1000016,2.61803398875054,2.61803398875054,0,17.1821134191607,9.25272292957005,2618075.87729402,39.3110827082017,18.113466310418,8.5624762351634,7.13144817230428,39.3110827082017,18.113466310418,8.5624762351634,7.13144817230428,3.93104930508059e-05,1.50696063357452,-1.11684261217206,0.306308006426631,0,-5.01346631041785,9.50852376483663,1,0.447721816070641,0.447213595500007 +3.93104930508059e-05,2.42738757756697,1.31979101081927,1.95911652716462e-07,0,17.1821134191607,9.25272292957005,2618075.87729402,NA,1.51788658083933,-4.24372292957004,1000017,2.61803398874999,2.61803398874999,0,18.1202189171868,6.62995792025843,2618078.49532775,39.3111220186947,19.6204269439925,7.44563362299134,6.97729399207268,39.3111220186947,19.6204269439925,7.44563362299134,6.97729399207268,3.93104930508059e-05,2.42738757756697,1.31979101081927,0.310613715890657,0,-0.920426943992456,-2.43663362299133,1,0.450696991112437,0.447213595499965 +3.93104930508059e-05,-2.42479790087341,-1.28678435537008,1.72037312471961e-07,0,18.1202189171868,6.62995792025843,2618078.49532775,NA,8.77978108281306,4.74204207974152,1000018,2.61803398874991,2.61803398874991,0,23.5464220401486,9.56070110162094,2618081.1133617,39.3111613291878,22.0478145215595,8.76542463381061,7.08232425688181,39.3111613291878,22.0478145215595,8.76542463381061,7.08232425688181,3.93104930508059e-05,-2.42479790087341,-1.28678435537008,0.340125487594257,0,4.85218547844039,2.60657536618935,1,0.471089144216628,0.447213595499959 +3.93104930508059e-05,0.398218719812695,1.75985592307045,8.40015005919993e-09,0,23.5464220401486,9.56070110162094,2618081.1133617,NA,-6.74642204014869,-5.12870110162093,1000019,2.6180339887499,2.6180339887499,0,19.3769039168853,6.39098950268018,2618083.73139568,39.3112006396808,19.6230166206861,7.47864027844054,8.91044962716286,39.3112006396808,19.6230166206861,7.47864027844054,8.91044962716286,3.93104930508059e-05,0.398218719812695,1.75985592307045,0.542402180055435,0,-2.82301662068611,-3.04664027844052,1,0.610859040904169,0.447213595499958 +3.93104930508059e-05,0.398218719812695,-3.9906478754186,8.40015005919993e-09,0,19.3769039168853,6.39098950268018,2618083.73139568,NA,NA,8.59801049731985,1000020,2.61803398874989,2.61803398874989,0,19.3769039168853,11.7048522256522,4236152.69885934,39.3112399501739,20.0212353404988,9.23849620151098,22.1829478034946,39.3112399501739,20.0212353404988,9.23849620151098,22.1829478034946,3.93104930508059e-05,0.398218719812695,-3.9906478754186,0.542402180055435,0,0,5.75050379848905,1,1,0.447213595499958 +3.93104930508059e-05,0.398218719812695,3.00220045067378,8.40015005919993e-09,0,19.3769039168853,11.7048522256522,4236152.69885934,NA,NA,-13.4498522256522,1000021,3.61803398874989,2.61803398874989,0,19.3769039168853,3.39238640653573,5854224.90239096,39.3112792606669,20.4194540603115,5.24784832609238,34.0842376340759,39.3112792606669,20.4194540603115,5.24784832609238,34.0842376340759,3.93104930508059e-05,0.398218719812695,3.00220045067378,0.542402180055436,0,0,-6.99284832609238,1,1,0.447213595499958 +3.93104930508059e-05,0.398218719812695,2.27624922743993,8.4001500591999e-09,0,19.3769039168853,3.39238640653573,5854224.90239096,NA,NA,5.58361359346427,1000022,4.61803398874989,2.61803398874989,0,19.3769039168853,6.84324938734259,7472300.34199059,39.31131857116,20.8176727801241,8.25004877676615,44.6647169640579,39.31131857116,20.8176727801241,8.25004877676615,44.6647169640579,3.93104930508059e-05,0.398218719812695,2.27624922743993,0.542402180055438,0,0,0.725951223233845,1,1,0.447213595499959 +3.93104930508059e-05,0.398218719812695,9.64654723164601,8.4001500591996e-09,0,19.3769039168853,6.84324938734259,7472300.34199059,NA,NA,-3.68724938734258,1000023,5.61803398874989,2.61803398874989,0,19.3769039168853,4.56440394096765,9090379.01765818,39.311357881653,21.2158914999368,10.5262980042061,53.9747838399865,39.311357881653,21.2158914999368,10.5262980042061,53.9747838399865,3.93104930508059e-05,0.398218719812695,9.64654723164601,0.542402180055453,0,0,-7.37029800420608,1,1,0.447213595499965 +3.93104930508059e-05,0.398218719812695,-9.41560753250186,8.40015005919763e-09,0,19.3769039168853,4.56440394096765,9090379.01765818,NA,NA,34.6705960590323,1000024,6.61803398874989,2.61803398874989,0,19.3769039168853,25.9920107156678,10708460.9293938,39.3113971921461,21.6141102197495,20.1728452358521,62.0648365106031,39.3113971921461,21.6141102197495,20.1728452358521,62.0648365106031,3.93104930508059e-05,0.398218719812695,-9.41560753250186,0.542402180055557,0,0,19.0621547641479,1,1,0.447213595500005 +3.93104930508059e-05,0.398218719812695,1.36763017084832,8.40015005918399e-09,0,19.3769039168853,25.9920107156678,10708460.9293938,NA,NA,-26.0180107156677,1000025,7.61803398874989,2.61803398874989,0,19.3769039168853,9.91199577372614,12326546.0771973,39.3114365026391,22.0123289395622,10.7572377033502,68.9852734257349,39.3114365026391,22.0123289395622,10.7572377033502,68.9852734257349,3.93104930508059e-05,0.398218719812695,1.36763017084832,0.542402180056268,0,0,-10.7832377033502,1,1,0.447213595500282 +3.93104930508059e-05,0.398218719812695,-1.83250195495311,8.40015005909073e-09,0,19.3769039168853,9.91199577372614,12326546.0771973,NA,NA,5.41300422627384,1000026,8.61803398874989,2.61803398874989,0,19.3769039168853,13.2574163668102,13944634.4610688,39.3114758131322,22.4105476593749,12.1248678741986,74.7864932371879,39.3114758131322,22.4105476593749,12.1248678741986,74.7864932371879,3.93104930508059e-05,0.398218719812695,-1.83250195495311,0.542402180061141,0,0,3.20013212580143,1,1,0.447213595502179 +3.93104930508059e-05,0.398218719812695,6.41086396429236,8.40015005845134e-09,0,19.3769039168853,13.2574163668102,13944634.4610688,NA,NA,-11.2084163668102,1000027,9.61803398874989,2.61803398874989,0,19.3769039168853,6.33023409206088,15562726.0810083,39.3115151236252,22.8087663791876,10.2923659192454,79.518894799867,39.3115151236252,22.8087663791876,10.2923659192454,79.518894799867,3.93104930508059e-05,0.398218719812695,6.41086396429236,0.542402180094541,0,0,-8.24336591924547,1,1,0.447213595515181 +3.93104930508059e-05,0.398218719812695,-14.6369061521699,8.40015005406902e-09,0,19.3769039168853,6.33023409206088,15562726.0810083,NA,NA,31.4207659079392,1000028,10.6180339887499,2.61803398874989,0,19.3769039168853,25.7493353757212,17180820.9370158,39.3115544341183,23.2069850990003,16.7032298835378,83.232877180908,39.3115544341183,23.2069850990003,16.7032298835378,83.232877180908,3.93104930508059e-05,0.398218719812695,-14.6369061521699,0.542402180323468,0,0,21.0477701164622,1,1,0.447213595604297 +3.93104930508059e-05,0.398218719812695,-3.73458242080194,8.4001500240321e-09,0,19.3769039168853,25.7493353757212,17180820.9370158,NA,NA,-34.5853353757212,1000029,11.6180339887499,2.61803398874989,0,19.3769039168853,4.37442260121139,18798919.0290913,39.3115937446113,23.605203818813,2.06632373136792,85.9788397236703,39.3115937446113,23.605203818813,2.06632373136792,85.9788397236703,3.93104930508059e-05,0.398218719812695,-3.73458242080194,0.542402181892556,0,0,-10.9023237313679,1,1,0.44721359621511 +3.93104930508059e-05,0.398218719812695,-0.691841110235955,8.40014981815599e-09,0,19.3769039168853,4.37442260121139,18798919.0290913,NA,NA,-9.0854226012114,1000030,12.6180339887499,2.61803398874989,0,19.3769039168853,-1.24067736849374,20417020.3572346,39.3116330551044,24.0034225386257,-1.66825868943402,87.8071824916291,39.3116330551044,24.0034225386257,-1.66825868943402,87.8071824916291,3.93104930508059e-05,0.398218719812695,-0.691841110235955,0.542402192647247,0,0,-3.04274131056599,1,1,0.447213600401682 +3.93104930508059e-05,0.398218719812695,-5.31194090990592,8.40014840706026e-09,0,19.3769039168853,-1.24067736849374,20417020.3572346,NA,NA,3.50067736849373,1000031,13.6180339887499,2.61803398874989,0,19.3769039168853,0.922860228882926,22035124.9214461,39.3116723655974,24.4016412584384,-2.36009979966998,88.7683093188851,39.3116723655974,24.4016412584384,-2.36009979966998,88.7683093188851,3.93104930508059e-05,0.398218719812695,-5.31194090990592,0.542402266360998,0,0,4.62009979966997,1,1,0.447213629096876 +3.93104930508059e-05,0.398218719812695,-0.0339816194818372,8.40013873526612e-09,0,19.3769039168853,0.922860228882926,22035124.9214461,NA,NA,-13.8728602288829,1000032,14.6180339887499,2.61803398874989,0,19.3769039168853,-7.65103891374336,23653232.7217255,39.3117116760905,24.7998599782511,-7.6720407095759,88.9126485926108,39.3117116760905,24.7998599782511,-7.6720407095759,88.9126485926108,3.93104930508059e-05,0.398218719812695,-0.0339816194818372,0.542402771602562,0,0,-5.27795929042409,1,1,0.447213825776657 +3.93104930508059e-05,0.398218719812695,11.8739960514605,8.40007244380289e-09,0,19.3769039168853,-7.65103891374336,23653232.7217255,NA,NA,-11.9629610862567,1000033,15.6180339887499,2.61803398874989,0,19.3769039168853,-15.0445554711423,25271343.7580728,39.3117509865835,25.1980786980638,-7.70602232905774,88.2907936731136,39.3117509865835,25.1980786980638,-7.70602232905774,88.2907936731136,3.93104930508059e-05,0.398218719812695,11.8739960514605,0.542406234579759,0,0,-11.9079776709423,1,1,0.447215173839934 +3.93104930508059e-05,0.398218719812695,3.40196977386313,8.39961807535446e-09,0,19.3769039168853,-15.0445554711423,25271343.7580728,NA,NA,27.6845554711424,1000034,16.6180339887499,2.61803398874989,0,19.3769039168853,2.06544077345551,26889458.0304881,39.3117902970766,25.5962974178765,4.16797372240271,86.9544440782659,39.3117902970766,25.5962974178765,4.16797372240271,86.9544440782659,3.93104930508059e-05,0.398218719812695,3.40196977386313,0.542429970178574,0,0,8.47202627759733,1,1,0.447224413603093 +3.93104930508059e-05,0.398218719812695,1.17091327012898,8.39650378767862e-09,0,19.3769039168853,2.06544077345551,26889458.0304881,NA,NA,7.73555922654448,1000035,17.6180339887499,2.61803398874989,0,19.3769039168853,6.84627929744785,28507575.5389715,39.3118296075696,25.9945161376892,7.56994349626584,84.9626637047663,39.3118296075696,25.9945161376892,7.56994349626584,84.9626637047663,3.93104930508059e-05,0.398218719812695,1.17091327012898,0.54259265639308,0,0,2.23105650373415,1,1,0.447287743881925 +3.93104930508059e-05,0.398218719812695,-0.161229963476183,8.37515814239612e-09,0,19.3769039168853,6.84627929744785,28507575.5389715,NA,NA,3.22672070255213,1000036,18.6180339887499,2.61803398874989,0,19.3769039168853,8.840502363828,30125696.2835228,39.3118689180627,26.3927348575019,8.74085676639482,82.4231587723746,39.3118689180627,26.3927348575019,8.74085676639482,82.4231587723746,3.93104930508059e-05,0.398218719812695,-0.161229963476183,0.543707724295812,0,0,1.33214323360516,1,1,0.447721816070592 +3.93104930508059e-05,0.398218719812695,-10.7006031605576,8.2288529130945e-09,0,19.3769039168853,8.840502363828,30125696.2835228,NA,NA,10.278497636172,1000037,19.6180339887499,2.61803398874989,0,19.3769039168853,15.1929632562678,31743820.2641421,39.3119082285557,26.7909535773146,8.57962680291863,79.7622737317176,39.3119082285557,26.7909535773146,8.57962680291863,79.7622737317176,3.93104930508059e-05,0.398218719812695,-10.7006031605576,0.551350513400429,0,0,10.5393731970814,1,1,0.45069699111243 +3.93104930508059e-05,0.398218719812695,3.1514204818035,7.22606195326572e-09,0,19.3769039168853,15.1929632562678,31743820.2641421,NA,NA,-31.1659632562678,1000038,20.6180339887499,2.61803398874989,0,19.3769039168853,-4.06866132823607,33361947.4808294,39.3119475390488,27.1891722971273,-2.12097635763894,79.4755276399229,39.3119475390488,27.1891722971273,-2.12097635763894,79.4755276399229,3.93104930508059e-05,0.398218719812695,3.1514204818035,0.603734969230016,0,0,-13.8520236423611,1,1,0.471089144216627 +3.93104930508059e-05,0.398218719812695,-0.763135394031943,3.5283046376582e-10,0,19.3769039168853,-4.06866132823607,33361947.4808294,NA,NA,9.01366132823606,1000039,21.6180339887499,2.61803398874989,0,19.3769039168853,1.50208773569434,34980077.9335846,39.3119868495418,27.58739101694,1.03044412416455,97.3702489498367,39.3119868495418,27.58739101694,1.03044412416455,97.3702489498367,3.93104930508059e-05,0.398218719812695,-0.763135394031943,0.962783370932509,0,0,3.91455587583544,1,1,0.610859040904169 +3.93104930508059e-05,0.398218719812695,-0.763135394031943,3.5283046376582e-10,0,19.3769039168853,1.50208773569434,34980077.9335846,NA,NA,NA,1000040,22.6180339887499,2.61803398874989,0,19.3769039168853,1.50208773569434,59217150.3325171,39.3120261600349,27.9856097367527,0.267308730132611,234.021528812389,39.3120261600349,27.9856097367527,0.267308730132611,234.021528812389,3.93104930508059e-05,0.398218719812695,-0.763135394031943,0.962783370932509,0,0,0,1,1,1 +3.93104930508059e-05,0.398218719812695,-0.763135394031943,3.5283046376582e-10,0,19.3769039168853,1.50208773569434,59217150.3325171,NA,NA,NA,1000041,23.6180339887499,3.61803398874989,0,19.3769039168853,1.50208773569434,85454353.2035861,39.3120654705279,28.3838284565654,-0.495826663899332,343.827227244831,39.3120654705279,28.3838284565654,-0.495826663899332,343.827227244831,3.93104930508059e-05,0.398218719812695,-0.763135394031943,0.962783370932509,0,0,0,1,1,1 +3.93104930508059e-05,0.398218719812695,-0.763135394031943,3.5283046376582e-10,0,19.3769039168853,1.50208773569434,85454353.2035861,NA,NA,NA,1000042,24.6180339887499,4.61803398874989,0,19.3769039168853,1.50208773569434,113691692.54679,39.312104781021,28.782047176378,-1.25896205793127,426.169489039222,39.312104781021,28.782047176378,-1.25896205793127,426.169489039222,3.93104930508059e-05,0.398218719812695,-0.763135394031943,0.962783370932509,0,0,0,1,1,1 +3.93104930508059e-05,0.398218719812695,-0.763135394031943,3.5283046376582e-10,0,19.3769039168853,1.50208773569434,113691692.54679,NA,NA,NA,1000043,25.6180339887499,5.61803398874989,0,19.3769039168853,1.50208773569434,143929174.362131,39.312144091514,29.1802658961907,-2.02209745196322,480.994597127193,39.312144091514,29.1802658961907,-2.02209745196322,480.994597127193,3.93104930508059e-05,0.398218719812695,-0.763135394031943,0.962783370932509,0,0,0,1,1,1 +3.93104930508059e-05,0.398218719812695,-0.763135394031943,3.5283046376582e-10,0,19.3769039168853,1.50208773569434,143929174.362131,NA,NA,NA,1000044,26.6180339887499,6.61803398874989,0,19.3769039168853,1.50208773569434,176166804.649607,39.3121834020071,29.5784846160034,-2.78523284599516,508.770633947839,39.3121834020071,29.5784846160034,-2.78523284599516,508.770633947839,3.93104930508059e-05,0.398218719812695,-0.763135394031943,0.962783370932509,0,0,0,1,1,1 +3.93104930508059e-05,0.398218719812695,-0.763135394031943,3.5283046376582e-10,0,19.3769039168853,1.50208773569434,176166804.649607,NA,NA,NA,1000045,27.6180339887499,7.61803398874989,0,19.3769039168853,1.50208773569434,210404589.409219,39.3122227125001,29.9767033358161,-3.5483682400271,510.445142504558,39.3122227125001,29.9767033358161,-3.5483682400271,510.445142504558,3.93104930508059e-05,0.398218719812695,-0.763135394031943,0.962783370932509,0,0,0,1,1,1 +3.93104930508059e-05,0.398218719812695,-0.763135394031943,3.5283046376582e-10,0,19.3769039168853,1.50208773569434,210404589.409219,NA,NA,NA,1000046,28.6180339887499,8.61803398874989,0,19.3769039168853,1.50208773569434,246642534.640968,39.3122620229932,30.3749220556288,-4.31150363405905,487.402787222299,39.3122620229932,30.3749220556288,-4.31150363405905,487.402787222299,3.93104930508059e-05,0.398218719812695,-0.763135394031943,0.962783370932509,0,0,0,1,1,1 +3.93104930508059e-05,0.398218719812695,-0.763135394031943,3.5283046376582e-10,0,19.3769039168853,1.50208773569434,246642534.640968,NA,NA,NA,1000047,29.6180339887499,9.61803398874989,0,19.3769039168853,1.50208773569434,284880646.344853,39.3123013334862,30.7731407754415,-5.07463902809099,441.423014524865,39.3123013334862,30.7731407754415,-5.07463902809099,441.423014524865,3.93104930508059e-05,0.398218719812695,-0.763135394031943,0.962783370932509,0,0,0,1,1,1 +3.93104930508059e-05,0.398218719812695,-0.763135394031943,3.5283046376582e-10,0,19.3769039168853,1.50208773569434,284880646.344853,NA,NA,NA,1000048,30.6180339887499,10.6180339887499,0,19.3769039168853,1.50208773569434,325118930.520874,39.3123406439793,31.1713594952542,-5.83777442212293,374.637713163081,39.3123406439793,31.1713594952542,-5.83777442212293,374.637713163081,3.93104930508059e-05,0.398218719812695,-0.763135394031943,0.962783370932509,0,0,0,1,1,1 +3.93104930508059e-05,0.398218719812695,-0.763135394031943,3.5283046376582e-10,0,19.3769039168853,1.50208773569434,325118930.520874,NA,NA,NA,1000049,31.6180339887499,11.6180339887499,0,19.3769039168853,1.50208773569434,367357393.16903,39.3123799544723,31.5695782150669,-6.60090981615487,289.488874288941,39.3123799544723,31.5695782150669,-6.60090981615487,289.488874288941,3.93104930508059e-05,0.398218719812695,-0.763135394031943,0.962783370932509,0,0,0,1,1,1 +3.93104930508059e-05,0.398218719812695,-0.763135394031943,3.5283046376582e-10,0,19.3769039168853,1.50208773569434,367357393.16903,NA,NA,NA,1000050,32.6180339887499,12.6180339887499,0,19.3769039168853,1.50208773569434,411596040.289321,39.3124192649654,31.9677969348796,-7.36404521018682,188.6862512757,39.3124192649654,31.9677969348796,-7.36404521018682,188.6862512757,3.93104930508059e-05,0.398218719812695,-0.763135394031943,0.962783370932509,0,0,0,1,1,1 +26.991497888965,0.398218719812695,-0.763135394031943,0.000134776118126662,0,19.3769039168853,1.50208773569434,411596040.289321,12.3209999999999,NA,NA,1000051,33.6180339887499,13.6180339887499,12.3209876796283,19.3769039168853,1.50208773569434,915.622601172475,39.3124585754584,32.3660156546923,-8.12718060421876,75.1650192839404,39.3124585754584,32.3660156546923,-8.12718060421876,75.1650192839404,26.991497888965,0.398218719812695,-0.763135394031943,0.595033301573348,-26.9914585784719,0,0,0.618033606794666,1,1 +13.7904543548196,0.398218719812695,-0.763135394031943,0.000154439637277554,12.3209876796283,19.3769039168853,1.50208773569434,915.622601172475,67.1840123203719,NA,NA,2.99999899999239,34.6180339887499,14.6180339887499,57.1103217615932,19.3769039168853,1.50208773569434,843.412606224117,66.3039564658548,32.764234374505,-8.8903159982507,59.2775451997449,66.3039564658548,32.764234374505,-8.8903159982507,59.2775451997449,13.7904543548196,0.398218719812695,-0.763135394031943,0.541379289550537,13.2010435341454,0,0,0.472135899271044,1,1 +-13.4471348245054,0.398218719812695,-0.763135394031943,0.00015730850605828,57.1103217615932,19.3769039168853,1.50208773569434,843.412606224117,50.2216782384062,NA,NA,2.66666655555467,35.6180339887499,15.6180339887499,88.4988698758771,19.3769039168853,1.50208773569434,903.960947662208,80.0944108206744,33.1624530943177,-9.65345139228264,57.8808899414837,80.0944108206744,33.1624530943177,-9.65345139228264,57.8808899414837,-13.4471348245054,0.398218719812695,-0.763135394031943,0.533551274693594,27.237589179325,0,0,0.450849710616688,1,1 +8.79814117166351,0.398218719812695,-0.763135394031943,0.000157727068372476,88.4988698758771,19.3769039168853,1.50208773569434,903.960947662208,-44.0968698758771,NA,NA,2.62499998437488,36.6180339887499,16.6180339887499,61.2008076717564,19.3769039168853,1.50208773569434,985.222424167378,66.647275996169,33.5606718141304,-10.4165867863146,58.2462236090637,66.647275996169,33.5606718141304,-10.4165867863146,58.2462236090637,8.79814117166351,0.398218719812695,-0.763135394031943,0.532409182717797,-22.2452759961689,0,0,0.447744097545979,1,1 +7.20055833949541,0.398218719812695,-0.763135394031943,0.000157788135791119,61.2008076717564,19.3769039168853,1.50208773569434,985.222424167378,15.8421923282441,NA,NA,2.61904761678003,37.6180339887499,17.6180339887499,70.9941629239793,19.3769039168853,1.50208773569434,1072.45938750696,75.4454171678325,33.9588905339431,-11.1797221803465,58.4423331231985,75.4454171678325,33.9588905339431,-11.1797221803465,58.4423331231985,7.20055833949541,0.398218719812695,-0.763135394031943,0.532242553744166,1.5975828321681,0,0,0.447290994705373,1,1 +-31.7734661531766,0.398218719812695,-0.763135394031943,0.000157797045407426,70.9941629239793,19.3769039168853,1.50208773569434,1072.45938750696,50.6258370760206,NA,NA,2.61818181785124,38.6180339887499,18.6180339887499,102.283742781023,19.3769039168853,1.50208773569434,1163.36878861692,82.6459755073279,34.3571092537558,-11.9428575743785,58.178680559852,82.6459755073279,34.3571092537558,-11.9428575743785,58.178680559852,-31.7734661531766,0.398218719812695,-0.763135394031943,0.532218242904548,38.974024492672,0,0,0.447224887891842,1,1 +-37.3059567990251,0.398218719812695,-0.763135394031943,0.000157798345302926,102.283742781023,19.3769039168853,1.50208773569434,1163.36878861692,-45.878742781023,NA,NA,2.61805555550733,39.6180339887499,19.6180339887499,73.9289760227823,19.3769039168853,1.50208773569434,1257.5836652169,50.8725093541513,34.7553279735685,-12.7059929684104,57.4142905116076,50.8725093541513,34.7553279735685,-12.7059929684104,57.4142905116076,-37.3059567990251,0.398218719812695,-0.763135394031943,0.532214696000849,5.53249064584847,0,0,0.44721524303773,1,1 +2.57959575610067,0.398218719812695,-0.763135394031943,0.000157798534955124,73.9289760227823,19.3769039168853,1.50208773569434,1257.5836652169,-100.247976022782,NA,NA,2.61803713527148,40.6180339887499,20.6180339887499,11.972273516404,19.3769039168853,1.50208773569434,1355.0456094439,13.5665525551262,35.1535466933812,-13.4691283624424,56.1485335277661,13.5665525551262,35.1535466933812,-13.4691283624424,56.1485335277661,2.57959575610067,0.398218719812695,-0.763135394031943,0.532214178514573,-39.8855525551257,0,0,0.447213835872479,1,1 +-28.0722559326722,0.398218719812695,-0.763135394031943,0.000157798562625007,11.972273516404,19.3769039168853,1.50208773569434,1355.0456094439,34.8257264835957,NA,NA,2.61803444782065,41.6180339887499,21.6180339887499,33.495758498714,19.3769039168853,1.50208773569434,1455.74535856208,16.1461483112269,35.5517654131939,-14.2322637564743,54.3899567844765,16.1461483112269,35.5517654131939,-14.2322637564743,54.3899567844765,-28.0722559326722,0.398218719812695,-0.763135394031943,0.532214103014343,30.6518516887729,0,0,0.447213630569836,1,1 +3.43463644588246,0.398218719812695,-0.763135394031943,0.000157798566661988,33.495758498714,19.3769039168853,1.50208773569434,1455.74535856208,-76.928758498714,NA,NA,2.6180340557274,42.6180339887499,22.6180339887499,-14.0488297175627,19.3769039168853,1.50208773569434,1559.68144901313,-11.9261076214453,35.9499841330066,-14.9953991505062,52.1516821863348,-11.9261076214453,35.9499841330066,-14.9953991505062,52.1516821863348,3.43463644588246,0.398218719812695,-0.763135394031943,0.532214091999008,-31.5068923785547,0,0,0.447213600616584,1,1 +-17.6278347296803,0.398218719812695,-0.763135394031943,0.000157798567250976,-14.0488297175627,19.3769039168853,1.50208773569434,1559.68144901313,26.6198297175626,NA,NA,2.61803399852178,43.6180339887499,23.6180339887499,2.40312986057738,19.3769039168853,1.50208773569434,1666.85365033111,-8.49147117556287,36.3482028528193,-15.7585345445382,49.4507328874756,-8.49147117556287,36.3482028528193,-15.7585345445382,49.4507328874756,-17.6278347296803,0.398218719812695,-0.763135394031943,0.532214090391892,21.0624711755628,0,0,0.447213596246464,1,1 +4.92085936507614,0.398218719812695,-0.763135394031943,0.000157798567336908,2.40312986057738,19.3769039168853,1.50208773569434,1666.85365033111,-51.071129860577,NA,NA,2.61803399017559,44.6180339887499,24.6180339887499,-29.1605642477421,19.3769039168853,1.50208773569434,1777.26192633711,-26.1193059052432,36.7464215726319,-16.5216699385701,46.307935587268,-26.1193059052432,36.7464215726319,-16.5216699385701,46.307935587268,4.92085936507614,0.398218719812695,-0.763135394031943,0.532214090157417,-22.5486940947565,0,0,0.447213595608872,1,1 +2.90241282490937,0.398218719812695,-0.763135394031943,0.000157798567349445,-29.1605642477421,19.3769039168853,1.50208773569434,1777.26192633711,9.98056424774176,NA,NA,2.6180339889579,45.6180339887499,25.6180339887499,-22.9922363154327,19.3769039168853,1.50208773569434,1890.90627136785,-21.1984465401671,37.1446402924446,-17.2848053326021,42.7479064808657,-21.1984465401671,37.1446402924446,-17.2848053326021,42.7479064808657,2.90241282490937,0.398218719812695,-0.763135394031943,0.532214090123208,2.01844654016677,0,0,0.447213595515848,1,1 +43.6513791096517,0.398218719812695,-0.763135394031943,0.000157798567351274,-22.9922363154327,19.3769039168853,1.50208773569434,1890.90627136785,-36.0527636845673,NA,NA,2.61803398878024,46.6180339887499,26.6180339887499,-45.2740696610229,19.3769039168853,1.50208773569434,2007.78668453912,-18.2960337152577,37.5428590122573,-18.047940726634,38.7990492573245,-18.2960337152577,37.5428590122573,-18.047940726634,38.7990492573245,43.6513791096517,0.398218719812695,-0.763135394031943,0.532214090118217,-40.7489662847424,0,0,0.447213595502276,1,1 +32.3597245040459,0.398218719812695,-0.763135394031943,0.000157798567351541,-45.2740696610229,19.3769039168853,1.50208773569434,2007.78668453912,81.9210696610228,NA,NA,2.61803398875432,47.6180339887499,27.6180339887499,5.35593578428997,19.3769039168853,1.50208773569434,2127.90316571322,25.355345394394,37.94107773207,-18.811076120666,34.4935548170859,25.355345394394,37.94107773207,-18.811076120666,34.4935548170859,32.3597245040459,0.398218719812695,-0.763135394031943,0.532214090117488,11.2916546056059,0,0,0.447213595500296,1,1 +8.68879440248531,0.398218719812695,-0.763135394031943,0.00015779856735158,5.35593578428997,19.3769039168853,1.50208773569434,2127.90316571322,76.0300642157105,NA,NA,2.61803398875054,48.6180339887499,28.6180339887499,52.3450996364433,19.3769039168853,1.50208773569434,2251.25571486874,57.7150698984399,38.3392964518827,-19.5742115146979,29.8674012325156,57.7150698984399,38.3392964518827,-19.5742115146979,29.8674012325156,8.68879440248531,0.398218719812695,-0.763135394031943,0.532214090117382,23.6709301015605,0,0,0.447213595500007,1,1 +10.9096587034105,0.398218719812695,-0.763135394031943,0.000157798567351586,52.3450996364433,19.3769039168853,1.50208773569434,2251.25571486874,11.8379003635567,NA,NA,2.61803398874999,49.6180339887499,29.6180339887499,59.6613244165562,19.3769039168853,1.50208773569434,2377.84433200237,66.4038643009252,38.7375151716954,-20.3373469087298,24.9603537424539,66.4038643009252,38.7375151716954,-20.3373469087298,24.9603537424539,10.9096587034105,0.398218719812695,-0.763135394031943,0.532214090117367,-2.2208643009252,0,0,0.447213595499965,1,1 +-24.9288182922529,0.398218719812695,-0.763135394031943,0.000157798567351586,59.6613244165562,19.3769039168853,1.50208773569434,2377.84433200237,53.4906755834429,NA,NA,2.61803398874991,50.6180339887499,30.6180339887499,92.7203800083182,19.3769039168853,1.50208773569434,2507.66901711359,77.3135230043357,39.1357338915081,-21.1004823027618,19.8159647514722,77.3135230043357,39.1357338915081,-21.1004823027618,19.8159647514722,-24.9288182922529,0.398218719812695,-0.763135394031943,0.532214090117365,35.8384769956634,0,0,0.447213595499959,1,1 +-10.8281135801707,0.398218719812695,-0.763135394031943,0.000157798567351587,92.7203800083182,19.3769039168853,1.50208773569434,2507.66901711359,-54.4363800083176,NA,NA,2.6180339887499,51.6180339887499,31.6180339887499,59.0768469386726,19.3769039168853,1.50208773569434,2640.72977020233,52.3847047120828,39.5339526113208,-21.8636176967937,14.4815738297741,52.3847047120828,39.5339526113208,-21.8636176967937,14.4815738297741,-10.8281135801707,0.398218719812695,-0.763135394031943,0.532214090117364,-14.1007047120822,0,0,0.447213595499958,1,1 +5.60347755174136,0.398218719812695,-0.763135394031943,0.000157798567351587,59.0768469386726,19.3769039168853,1.50208773569434,2640.72977020233,-33.9518469386726,NA,NA,2.61803398874989,52.6180339887499,32.6180339887499,38.0934515497389,19.3769039168853,1.50208773569434,2777.02659126858,41.5565911319121,39.9321713311335,-22.6267530908257,9.00830771318104,41.5565911319121,39.9321713311335,-22.6267530908257,9.00830771318104,5.60347755174136,0.398218719812695,-0.763135394031943,0.532214090117364,-16.4315911319121,0,0,0.447213595499958,1,1 +15.3365462353951,-3.5713912292413,-0.763135394031943,0.00323175672431719,38.0934515497389,19.3769039168853,1.50208773569434,2777.02659126858,-0.666451549739179,24.9230960831148,NA,2.61803398874989,53.6180339887499,33.6180339887499,37.681561840145,43.8351732574094,1.50208773569434,107.775750230013,47.1600686836534,40.3303900509462,-23.3898884848576,3.45108030313134,47.1600686836534,40.3303900509462,-23.3898884848576,3.45108030313134,15.3365462353951,-3.5713912292413,-0.763135394031943,0.333736816631528,-9.73306868365374,3.969609949054,0,0.447213595499958,0.610859040904168,1 +17.5701611544437,-6.31239240753641,-0.763135394031943,0.00368024117524921,37.681561840145,43.8351732574094,1.50208773569434,107.775750230013,22.5814381598549,-4.33517325740935,NA,2.61803398874989,2.9813495586166,34.6180339887499,51.6376581377892,40.9540976065285,1.50208773569434,93.2384587821971,62.4966149190485,36.7589988217049,-24.1530238788896,2.60999645771893,62.4966149190485,36.7589988217049,-24.1530238788896,2.60999645771893,17.5701611544437,-6.31239240753641,-0.763135394031943,0.304779372685822,-2.23361491904861,2.7410011782951,0,0.447213595499958,0.471089144216627,1 +-6.73206277206464,4.83421400663235,-0.763135394031943,0.00374567417480778,51.6376581377892,40.9540976065285,1.50208773569434,93.2384587821971,52.7313418622114,-21.6540976065288,NA,2.61803398874989,2.66458143188549,35.6180339887499,84.227419681026,27.4266413356357,1.50208773569434,93.6337703373397,80.0667760734922,30.4466064141685,-24.9161592729215,2.4402251811809,80.0667760734922,30.4466064141685,-24.9161592729215,2.4402251811809,-6.73206277206464,4.83421400663235,-0.763135394031943,0.300554538551708,24.3022239265084,-11.1466064141688,0,0.447213595499958,0.45069699111243,1 +-29.187349470637,6.61503442743319,-0.763135394031943,0.00375522072078576,84.227419681026,27.4266413356357,1.50208773569434,93.6337703373397,11.5625803189739,6.07335866436427,NA,2.61803398874989,2.62470653437963,36.6180339887499,91.3734873158025,31.1860808685418,1.50208773569434,95.9247907377673,73.3347133014276,35.2808204208008,-25.6792946669534,2.36017752849888,73.3347133014276,35.2808204208008,-25.6792946669534,2.36017752849888,-29.187349470637,6.61503442743319,-0.763135394031943,0.29993814355862,22.4552866985724,-1.78082042080084,0,0.447213595499958,0.447721816070592,1 +16.0880143601542,-4.88911072433286,-0.763135394031943,0.00375661354307306,91.3734873158025,31.1860808685418,1.50208773569434,95.9247907377673,-92.5014873158031,22.2139191314583,NA,2.61803398874989,2.6190050251708,37.6180339887499,34.2044241447189,44.9181838454055,1.50208773569434,98.4939115799613,44.1473638307906,41.895854848234,-26.4424300609854,2.28649729260917,44.1473638307906,41.895854848234,-26.4424300609854,2.28649729260917,16.0880143601542,-4.88911072433286,-0.763135394031943,0.299848212741115,-45.2753638307912,11.5041451517661,0,0.447213595499958,0.447287743881925,1 +57.7113925510989,11.1176333995683,-0.763135394031943,0.00375681675310613,34.2044241447189,44.9181838454055,1.50208773569434,98.4939115799613,-15.5924241447188,-23.9181838454055,NA,2.61803398874989,2.61817560852722,38.6180339887499,24.5677760562782,30.1354391078679,1.50208773569434,101.104616565445,60.2353781909448,37.0067441239012,-27.2055654550173,2.20727776433504,60.2353781909448,37.0067441239012,-27.2055654550173,2.20727776433504,57.7113925510989,11.1176333995683,-0.763135394031943,0.299835092011667,-41.6233781909447,-16.0067441239012,0,0.447213595499958,0.447224413603093,1 +-39.5058367068581,-18.1579890769623,-0.763135394031943,0.0037568464010504,24.5677760562782,30.1354391078679,1.50208773569434,101.104616565445,190.596223943723,47.2645608921322,NA,2.61803398874989,2.61805464967932,39.6180339887499,142.362720580885,59.3466866751917,1.50208773569434,103.721552780829,117.946770742044,48.1243775234695,-27.9687008490493,2.12082427278623,117.946770742044,48.1243775234695,-27.9687008490493,2.12082427278623,-39.5058367068581,-18.1579890769623,-0.763135394031943,0.299833177723039,97.217229257957,29.2756224765306,0,0.447213595499958,0.447215173839934,1 +-16.7959026716724,-3.69160063045511,-0.763135394031943,0.00375685072662718,142.362720580885,59.3466866751917,1.50208773569434,103.721552780829,-86.6317205808854,-43.8466866751917,NA,2.61803398874989,2.61803700311508,40.6180339887499,88.8213727580142,32.247924732546,1.50208773569434,106.339422442306,78.4409340351855,29.9663884465072,-28.7318362430812,2.02689654487904,78.4409340351855,29.9663884465072,-28.7318362430812,2.02689654487904,-16.7959026716724,-3.69160063045511,-0.763135394031943,0.299832898432092,-22.7099340351857,-14.4663884465072,0,0.447213595499958,0.447213825776657,1 +-31.0728713081588,-7.31681281440313,-0.763135394031943,0.00375685135772032,88.8213727580142,32.247924732546,1.50208773569434,106.339422442306,-12.8993727580146,-2.34792473254589,NA,2.61803398874989,2.61803442853934,41.6180339887499,80.8491219600067,30.7968272941529,1.50208773569434,108.957431848288,61.6450313635131,26.2747878160521,-29.4949716371132,1.92546065628251,61.6450313635131,26.2747878160521,-29.4949716371132,1.92546065628251,-31.0728713081588,-7.31681281440313,-0.763135394031943,0.299832857684092,14.2769686364864,3.62521218394802,0,0.447213595499958,0.447213629096876,1 +-10.2277112528044,-7.25883781275381,-0.763135394031943,0.00375685144979557,80.8491219600067,30.7968272941529,1.50208773569434,108.957431848288,-71.1221219600068,-11.8968272941533,NA,2.61803398874989,2.6180340529143,42.6180339887499,36.8932332367072,23.4441835567071,1.50208773569434,111.575462161788,30.5721600553543,18.9579750016489,-30.2581070311451,1.81651183904215,30.5721600553543,18.9579750016489,-30.2581070311451,1.81651183904215,-10.2277112528044,-7.25883781275381,-0.763135394031943,0.299832851739039,-20.8451600553544,-0.0579750016493122,0,0.447213595499958,0.447213600401682,1 +4.64773754974549,6.64029937614114,-0.763135394031943,0.00375685146322917,36.8932332367072,23.4441835567071,1.50208773569434,111.575462161788,-31.4242332367071,-25.6441835567069,NA,2.61803398874989,2.61803399811135,43.6180339887499,17.4719890260181,7.59520646989574,1.50208773569434,114.193495601389,20.3444488025499,11.6991371888951,-31.021242425177,1.70004942641947,20.3444488025499,11.6991371888951,-31.021242425177,1.70004942641947,4.64773754974549,6.64029937614114,-0.763135394031943,0.299832850871668,-14.8754488025499,-13.899137188895,0,0.447213595499958,0.44721359621511,1 +-12.2770760979595,-11.9202640588227,-0.763135394031943,0.0037568514651891,17.4719890260181,7.59520646989574,1.50208773569434,114.193495601389,24.4450109739823,29.3047935301043,NA,2.61803398874989,2.61803399011571,44.6180339887499,32.5798366633033,25.7065649106378,1.50208773569434,116.811529508131,24.9921863522954,18.3394365650363,-31.784377819209,1.5760733257063,24.9921863522954,18.3394365650363,-31.784377819209,1.5760733257063,-12.2770760979595,-11.9202640588227,-0.763135394031943,0.29983285074512,16.924813647705,18.5605634349638,0,0.447213595499958,0.447213595604297,1 +-15.7219658436233,-15.601091552609,-0.763135394031943,0.00375685146547505,32.5798366633033,25.7065649106378,1.50208773569434,116.811529508131,-16.4198366633034,-15.6065649106379,NA,2.61803398874989,2.61803398894916,45.6180339887499,22.4318195156601,16.0611773477784,1.50208773569434,119.429563484641,12.715110254336,6.41917250621361,-32.5475132132409,1.44458352409442,12.715110254336,6.41917250621361,-32.5475132132409,1.44458352409442,-15.7219658436233,-15.601091552609,-0.763135394031943,0.299832850726657,3.44488974566389,3.6808274937863,0,0.447213595499958,0.447213595515181,1 +-37.7008214329105,-18.1830105990044,-0.763135394031943,0.00375685146551678,22.4318195156601,16.0611773477784,1.50208773569434,119.429563484641,-3.45981951566036,-22.6611773477783,NA,2.61803398874989,2.61803398877897,46.6180339887499,20.2935334600418,2.05579952166608,1.50208773569434,122.047597471565,-3.00685558928739,-9.18191904639536,-33.3106486072729,1.30558001982735,-3.00685558928739,-9.18191904639536,-33.3106486072729,1.30558001982735,-37.7008214329105,-18.1830105990044,-0.763135394031943,0.299832850723963,21.9788555892871,2.58191904639546,0,0.447213595499958,0.447213595502179,1 +42.6855015448917,40.6520597555961,-0.763135394031943,0.00375685146552286,20.2935334600418,2.05579952166608,1.50208773569434,122.047597471565,-141.387533460042,-88.2557995216664,NA,2.61803398874989,2.61803398875414,47.6180339887499,-67.0887678037771,-52.4892842870751,1.50208773569434,124.665631460043,-40.7076770221979,-27.3649296453998,-34.0737840013048,1.15906281266627,-40.7076770221979,-27.3649296453998,-34.0737840013048,1.15906281266627,42.6855015448917,40.6520597555961,-0.763135394031943,0.29983285072357,-80.3863229778022,-58.8350703546005,0,0.447213595499958,0.447213595500282,1 +55.4193260675848,14.1391898657921,-0.763135394031943,0.00375685146552375,-67.0887678037771,-52.4892842870751,1.50208773569434,124.665631460043,56.3327678037777,92.2892842870752,NA,2.61803398874989,2.61803398875051,48.6180339887499,-32.2732026206867,4.54863019974739,1.50208773569434,127.283665448752,1.97782452269378,13.2871301101963,-34.8369193953367,1.00503190257906,1.97782452269378,13.2871301101963,-34.8369193953367,1.00503190257906,55.4193260675848,14.1391898657921,-0.763135394031943,0.299832850723513,-12.7338245226932,26.5128698898039,0,0.447213595499958,0.447213595500005,1 +5.97347665786362,-8.43449015821947,-0.763135394031943,0.00375685146552388,-32.2732026206867,4.54863019974739,1.50208773569434,127.283665448752,139.116202620687,45.4513698002526,NA,2.61803398874989,2.61803398874999,49.6180339887499,53.7053389847148,32.6391215715446,1.50208773569434,129.901699437496,57.3971505902786,27.4263199759884,-35.6000547893687,0.843487289561435,57.3971505902786,27.4263199759884,-35.6000547893687,0.843487289561435,5.97347665786362,-8.43449015821947,-0.763135394031943,0.299832850723505,49.4458494097212,22.5736800240116,0,0.447213595499958,0.447213595499965,1 +-52.9128960939938,-10.2426603404507,-0.763135394031943,0.0037568514655239,53.7053389847148,32.6391215715446,1.50208773569434,129.901699437496,68.5516610152848,-11.8391215715444,NA,2.61803398874989,2.61803398874991,50.6180339887499,96.0725954774219,25.3221420433881,1.50208773569434,132.519733426245,63.3706272481422,18.9918298177689,-36.3631901834006,0.674428973612848,63.3706272481422,18.9918298177689,-36.3631901834006,0.674428973612848,-52.9128960939938,-10.2426603404507,-0.763135394031943,0.299832850723503,58.8863727518574,1.80817018223125,0,0.447213595499958,0.447213595499959,1 +5.46683506015432,-1.49349086313249,-0.763135394031943,0.0037568514655239,96.0725954774219,25.3221420433881,1.50208773569434,132.519733426245,-143.994595477422,-25.3221420433881,NA,2.61803398874989,2.6180339887499,51.6180339887499,7.07904127608354,9.67219759262152,1.50208773569434,135.137767414995,10.4577311541485,8.74916947731822,-37.1263255774326,0.497856954733224,10.4577311541485,8.74916947731822,-37.1263255774326,0.497856954733224,5.46683506015432,-1.49349086313249,-0.763135394031943,0.299832850723503,-58.3797311541481,-8.74916947731822,0,0.447213595499958,0.447213595499958,1 +-50.997598725543,-9.73781224894675,-0.763135394031943,0.0037568514655239,7.07904127608354,9.67219759262152,1.50208773569434,135.137767414995,65.3099587239166,5.82780240737848,NA,2.61803398874989,2.61803398874989,52.6180339887499,47.4428155713167,13.2739775600999,1.50208773569434,137.755801403744,15.9245662143028,7.25567861418573,-37.8894609714645,0.313771232922553,15.9245662143028,7.25567861418573,-37.8894609714645,0.313771232922553,-50.997598725543,-9.73781224894675,-0.763135394031943,0.299832850723503,56.4644337856973,8.24432138581427,0,0.447213595499958,0.447213595499958,1 +-10.9486312367829,16.7800541162922,-8.22673175952849,0.0769413194919331,47.4428155713167,13.2739775600999,1.50208773569434,137.755801403744,-122.564815571317,-42.2739775600999,-32.6910877356943,2.61803398874989,2.61803398874989,53.6180339887499,-28.3064062766196,-12.8527774116922,-30.579296784426,5.18724048805286,-35.0730325112402,-2.48213363476102,-38.6525963654965,0.122171808180833,-35.0730325112402,-2.48213363476102,-38.6525963654965,0.122171808180833,-10.9486312367829,16.7800541162922,-8.22673175952849,0.188016933373469,-40.0489674887601,-26.517866365239,7.46359636549654,0.447213595499958,0.447213595499958,0.610859040904168 +40.7587050151943,6.47797459782351,25.4329401154466,0.0876187894780489,-28.3064062766196,-12.8527774116922,-30.579296784426,5.18724048805286,-69.4225937233807,37.4527774116921,-49.959703215574,2.61803398874989,2.61803398874989,2.9813495586166,-71.211928784844,10.2943120018178,-63.7815878840064,4.35793076571819,-46.0216637480231,14.2979204815312,-46.8793281250249,0.0942178288433253,-46.0216637480231,14.2979204815312,-46.8793281250249,0.0942178288433253,40.7587050151943,6.47797459782351,25.4329401154466,0.171703210890112,-51.7073362519772,10.3020795184687,-33.659671874975,0.447213595499958,0.447213595499958,0.471089144216627 +3.75474628236551,13.4538696771785,4.60055210586819,0.0891766113544512,-71.211928784844,10.2943120018178,-63.7815878840064,4.35793076571819,102.952928784844,3.50568799818189,63.1675878840064,2.61803398874989,2.61803398874989,2.66458143188549,-7.583519554463,12.4609463386468,-24.3203829718682,4.25353692874991,-5.26295873282881,20.7758950793547,-21.4463880095784,0.090139398222486,-5.26295873282881,20.7758950793547,-21.4463880095784,0.090139398222486,3.75474628236551,13.4538696771785,4.60055210586819,0.169323070856642,37.0039587328288,-6.97589507935497,20.8323880095784,0.447213595499958,0.447213595499958,0.45069699111243 +24.950533831902,18.1836344337117,-4.17028379784207,0.0894038945031515,-7.583519554463,12.4609463386468,-24.3203829718682,4.25353692874991,-15.1204804455367,17.0390536613532,16.2453829718683,2.61803398874989,2.61803398874989,2.62470653437963,-16.9284903960328,22.9916606374964,-14.2644092764576,4.23861018385404,-1.50821245046328,34.2297647565332,-16.8458359037102,0.0895443632141184,-1.50821245046328,34.2297647565332,-16.8458359037102,0.0895443632141184,24.950533831902,18.1836344337117,-4.17028379784207,0.168975813105708,-21.1957875495364,-4.72976475653318,8.77083590371026,0.447213595499958,0.447213595499958,0.447721816070592 +43.7618552133403,-0.102966376043776,35.7085965006058,0.0894370546676515,-16.9284903960328,22.9916606374964,-14.2644092764576,4.23861018385404,21.5594903960332,47.7083393625038,-46.6305907235425,2.61803398874989,2.61803398874989,2.6190050251708,-3.60399255115743,52.4770359103383,-43.0903030729671,4.2364387428903,23.4423213814387,52.4133991902448,-21.0161197015523,0.089457548776385,23.4423213814387,52.4133991902448,-21.0161197015523,0.089457548776385,43.7618552133403,-0.102966376043776,35.7085965006058,0.168925148882642,-18.8113213814384,18.2866008097554,-39.8788802984478,0.447213595499958,0.447213595499958,0.447287743881925 +37.9470318081191,13.5074664381575,28.2210732996592,0.0894418926704508,-3.60399255115743,52.4770359103383,-43.0903030729671,4.2364387428903,76.6229925511577,-13.7770359103385,65.2703030729672,2.61803398874989,2.61803398874989,2.61817560852722,43.751621165188,43.9623594535213,-2.74968877274165,4.23612206851525,67.204176594779,52.3104328142011,14.6924767990535,0.0894448827206186,67.204176594779,52.3104328142011,14.6924767990535,0.0894448827206186,37.9470318081191,13.5074664381575,28.2210732996592,0.168917757072116,5.81482340522125,-13.6104328142012,7.48752320094655,0.447213595499958,0.447213595499958,0.447224413603093 +9.49924021101785,0.225365690516086,8.872623398372,0.0894425985255465,43.751621165188,43.9623594535213,-2.74968877274165,4.23612206851525,89.8473788348112,35.1376405464786,65.0116887727416,2.61803398874989,2.61803398874989,2.61805464967932,99.2803550851893,65.6786155957215,37.4299405238141,4.23607586921031,105.151208402898,65.8178992523585,42.9135500987127,0.0894430347679868,105.151208402898,65.8178992523585,42.9135500987127,0.0894430347679868,9.49924021101785,0.225365690516086,8.872623398372,0.168916678621494,28.4477915971012,13.2821007476414,19.3484499012872,0.447213595499958,0.447213595499958,0.447215173839934 +4.30068882493358,-5.63136936660985,13.0937968954567,0.0894427015084171,99.2803550851893,65.6786155957215,37.4299405238141,4.23607586921031,20.5686449148109,6.22138440427905,10.1350594761859,2.61803398874989,2.61803398874989,2.61803700311508,111.99247674507,69.5236426146445,43.6937562153909,4.23606912888351,114.650448613916,66.0432649428746,51.7861734970847,0.0894427651553315,114.650448613916,66.0432649428746,51.7861734970847,0.0894427651553315,4.30068882493358,-5.63136936660985,13.0937968954567,0.168916521277669,5.19855138608427,5.85673505712593,-4.22117349708467,0.447213595499958,0.447213595499958,0.447213825776657 +-4.8541737362167,-10.8194737903445,-1.51623271200194,0.0894427165334155,111.99247674507,69.5236426146445,43.6937562153909,4.23606912888351,16.1135232549297,-3.92364261464502,35.7962437846091,2.61803398874989,2.61803398874989,2.61803442853934,121.951181795128,67.0986981190864,65.8170538407012,4.23606814548438,118.951137438849,60.4118955762648,64.8799703925414,0.0894427258193751,118.951137438849,60.4118955762648,64.8799703925414,0.0894427258193751,-4.8541737362167,-10.8194737903445,-1.51623271200194,0.168916498321514,9.15486256115029,5.18810442373468,14.6100296074586,0.447213595499958,0.447213595499958,0.447213629096876 +-13.4472100335844,2.77294799557572,-25.4884950314625,0.0894427187255332,121.951181795128,67.0986981190864,65.8170538407012,4.23606814548438,0.738818204872047,-31.0986981190864,21.5189461592988,2.61803398874989,2.61803398874989,2.6180340529143,122.407796557247,47.8786456756186,79.1164941706756,4.23606800200841,114.096963702633,49.5924217859203,63.3637376805395,0.0894427200803364,114.096963702633,49.5924217859203,63.3637376805395,0.0894427200803364,-13.4472100335844,2.77294799557572,-25.4884950314625,0.168916494972256,8.59303629736774,-13.5924217859202,23.9722623194606,0.447213595499958,0.447213595499958,0.447213600401682 +-24.127456364536,-5.56168222292813,-18.6912523823855,0.0894427190453587,122.407796557247,47.8786456756186,79.1164941706756,4.23606800200841,-11.0777965572466,12.8213543243813,-48.0384941706757,2.61803398874989,2.61803398874989,2.61803399811135,115.561341764412,55.8026784298916,49.4270719392225,4.23606798107555,100.649753669048,52.365369781496,37.8752426490769,0.089442719243022,100.649753669048,52.365369781496,37.8752426490769,0.089442719243022,-24.127456364536,-5.56168222292813,-18.6912523823855,0.168916494483606,10.6802463309516,8.33463021850385,-6.79724264907696,0.447213595499958,0.447213595499958,0.44721359621511 +-11.3541590600235,8.14200533563934,-21.6552621156942,0.0894427190920199,115.561341764412,55.8026784298916,49.4270719392225,4.23606798107555,-51.8123417644118,-22.7026784298913,-27.2790719392225,2.61803398874989,2.61803398874989,2.61803399011571,83.5395535172794,41.7716515245597,32.5676782937936,4.23606797802149,76.5222973045123,46.8036875585678,19.1839902666914,0.0894427191208598,76.5222973045123,46.8036875585678,19.1839902666914,0.0894427191208598,-11.3541590600235,8.14200533563934,-21.6552621156942,0.168916494412314,-12.7732973045125,-13.7036875585675,2.96400973330863,0.447213595499959,0.447213595499958,0.447213595604298 +-0.107020815535067,5.98769822984614,-8.13053396469699,0.0894427190988224,83.5395535172794,41.7716515245597,32.5676782937936,4.23606797802149,-29.6185535172791,15.3283484754406,-48.5636782937936,2.61803398874989,2.61803398874989,2.61803398894916,65.2342807459932,51.2450918737847,2.55367448810176,4.2360679775759,65.1681382444887,54.9456928942072,-2.47127184900279,0.0894427191030386,65.1681382444887,54.9456928942072,-2.47127184900279,0.0894427191030386,-0.107020815535067,5.98769822984614,-8.13053396469699,0.168916494401921,-11.2471382444885,2.15430710579319,-13.5247281509972,0.447213595499964,0.447213595499958,0.447213595515187 +1.94309661341911,-7.57891064610054,12.8856602216033,0.089442719099779,65.2342807459932,51.2450918737847,2.55367448810176,4.2360679775759,-2.22328074599365,23.2549081262153,-34.1716744881018,2.61803398874989,2.61803398874989,2.61803398877897,63.8602176784359,65.6174155010419,-18.5655817981878,4.23606797751089,65.0611174289537,60.9333911240533,-10.6018058136998,0.0894427191004522,65.0611174289537,60.9333911240533,-10.6018058136998,0.0894427191004522,1.94309661341911,-7.57891064610054,12.8856602216033,0.168916494400459,-2.05011742895418,13.5666088759467,-21.0161941863003,0.447213595499999,0.447213595499958,0.44721359550222 +11.8783106557915,5.17556983185277,-0.838485370493283,0.0894427190996725,63.8602176784359,65.6174155010419,-18.5655817981878,4.23606797751089,-6.79121767843545,-25.0174155010424,34.5735817981878,2.61803398874989,2.61803398874989,2.61803398875414,59.6630143281636,50.1558024107192,2.8020668659384,4.23606797750141,67.0042140423728,53.3544804779528,2.28385440790348,0.0894427191001688,67.0042140423728,53.3544804779528,2.28385440790348,0.0894427191001688,11.8783106557915,5.17556983185277,-0.838485370493283,0.168916494400622,-9.93521404237238,-12.7544804779533,13.7241455920966,0.447213595500239,0.447213595499958,0.447213595500563 +-15.4181646460443,-21.8943798583421,11.030883666917,0.0894427190979703,59.6630143281636,50.1558024107192,2.8020668659384,4.23606797750141,46.5159856718365,35.4441975892812,-13.2260668659385,2.61803398874989,2.61803398874989,2.61803398875051,88.4114744935617,72.061521224862,-5.37209199469158,4.23606797750003,78.8825246981643,58.5300503098055,1.4453690374102,0.0894427191007717,78.8825246981643,58.5300503098055,1.4453690374102,0.0894427191007717,-15.4181646460443,-21.8943798583421,11.030883666917,0.168916494403223,27.2964753018358,27.0699496901948,-11.8693690374103,0.447213595501885,0.447213595499958,0.447213595501932 +-4.34880459392384,4.64129059312198,-12.9678636287558,0.0894427190861617,88.4114744935617,72.061521224862,-5.37209199469158,4.23606797750003,-36.0164744935621,-61.9615212248626,41.8470919946916,2.61803398874989,2.61803398874989,2.61803398874999,66.1520691015966,33.767195113249,20.490833188372,4.23606797749982,63.46436005212,36.6356704514635,12.4762527043272,0.0894427191052753,63.46436005212,36.6356704514635,12.4762527043272,0.0894427191052753,-4.34880459392384,4.64129059312198,-12.9678636287558,0.168916494421265,-11.0693600521205,-26.535670451464,23.9987472956728,0.447213595513164,0.447213595499958,0.447213595513171 +-12.0722491357276,7.51825163770692,-11.4674745531844,0.0894427190052037,66.1520691015966,33.767195113249,20.490833188372,4.23606797749982,0.686930898403332,4.63280488675159,-22.482833188372,2.61803398874989,2.61803398874989,2.61803398874991,66.5766157447324,36.630425996508,6.59567811456392,4.23606797749979,59.1155554581961,41.2769610445855,-0.491610924428599,0.0894427191361975,59.1155554581961,41.2769610445855,-0.491610924428599,0.0894427191361975,-12.0722491357276,7.51825163770692,-11.4674745531844,0.168916494544958,7.72344454180379,-2.87696104458493,-1.50038907557136,0.447213595590472,0.447213595499958,0.447213595590473 +6.75905718674044,6.91346431999968,-1.95656003079747,0.0894427184503062,66.5766157447324,36.630425996508,6.59567811456392,4.23606797749979,-38.3646157447319,12.7695740034916,-28.065678114564,2.61803398874989,2.61803398874989,2.6180339887499,42.8659792491587,44.5224567525229,-10.7498648775507,4.23606797749979,47.0433063224685,48.7952126822924,-11.959085477613,0.0894427193481493,47.0433063224685,48.7952126822924,-11.959085477613,0.0894427193481493,6.75905718674044,6.91346431999968,-1.95656003079747,0.168916495392766,-18.8313063224681,0.60478731770724,-9.51091452238698,0.447213596120352,0.447213595499958,0.447213596120352 +-7.41957930405038,-19.3778586777083,13.7847944607919,0.089442714646982,42.8659792491587,44.5224567525229,-10.7498648775507,4.23606797749979,25.1150207508411,37.4775432474771,-18.9071351224493,2.61803398874989,2.61803398874989,2.61803398874989,58.3879157013374,67.6848522943079,-22.4351170131112,4.23606797749979,53.802363509209,55.7086770022921,-13.9156455084105,0.08944272080089,53.802363509209,55.7086770022921,-13.9156455084105,0.08944272080089,-7.41957930405038,-19.3778586777083,13.7847944607919,0.168916501203728,14.1786364907908,26.2913229977079,-15.7413544915894,0.447213599752204,0.447213595499958,0.447213599752204 +4.55420490110763,-11.7470403531243,12.2329434131734,0.089442688578612,58.3879157013374,67.6848522943079,-22.4351170131112,4.23606797749979,-23.9789157013368,-38.984852294308,23.8561170131112,2.61803398874989,2.61803398874989,2.61803398874989,43.5681307845427,43.5908885300312,-7.6912258594139,4.23606797749979,46.3827842051586,36.3308183245838,-0.13085104761857,0.0894427307581225,46.3827842051586,36.3308183245838,-0.13085104761857,0.0894427307581225,4.55420490110763,-11.7470403531243,12.2329434131734,0.16891654103266,-11.973784205158,-7.63081832458399,1.55185104761851,0.447213624645284,0.447213595499958,0.447213624645284 +15.831194007374,20.1367376183346,-3.70496422127166,0.0894425099034481,43.5681307845427,43.5908885300312,-7.6912258594139,4.23606797749979,-3.90813078454285,-50.8908885300304,35.7312258594139,2.61803398874989,2.61803398874989,2.61803398874989,41.1527731272154,12.1385897007902,14.391886181403,4.23606797749979,50.9369891062662,24.5837779714596,12.1020923655549,0.0894427990060254,50.9369891062662,24.5837779714596,12.1020923655549,0.0894427990060254,15.831194007374,20.1367376183346,-3.70496422127166,0.16891681402435,-11.2769891062664,-31.8837779714588,15.9379076344451,0.447213795264998,0.447213595499958,0.447213795264998 +6.10837712101421,0.657253208128863,3.36816392301147,0.0894412852504598,41.1527731272154,12.1385897007902,14.391886181403,4.23606797749979,35.3382268727846,52.0614102992096,-13.067886181403,2.61803398874989,2.61803398874989,2.61803398874989,62.9929984367512,44.3143107679556,6.31548836018093,4.23606797749979,66.7681831136402,44.7205155897941,8.39712814428321,0.0894432667848113,66.7681831136402,44.7205155897941,8.39712814428321,0.0894432667848113,6.10837712101421,0.657253208128863,3.36816392301147,0.168918685143163,9.72281688635979,19.4794844102057,-7.07312814428314,0.447214964709911,0.447213595499958,0.447214964709911 +15.9369373556688,-8.06497799394761,14.1784559903062,0.0894328915796739,62.9929984367512,44.3143107679556,6.31548836018093,4.23606797749979,0.055001563248581,9.78568923204388,-5.360488360181,2.61803398874989,2.61803398874989,2.61803398874989,63.0269912722732,50.3621993167026,3.00252435729088,4.23606797749979,72.8765602346544,45.377768797923,11.7652920672947,0.0894464730212324,72.8765602346544,45.377768797923,11.7652920672947,0.0894464730212324,15.9369373556688,-8.06497799394761,14.1784559903062,0.168931510261243,-9.82856023465463,8.72223120207647,-10.8102920672948,0.447222980204592,0.447213595499958,0.447222980204592 +-20.7135650540078,17.4478128100276,-33.8027959520929,0.0893753711058825,63.0269912722732,50.3621993167026,3.00252435729088,4.23606797749979,62.4370087277267,-38.5621993167024,70.9224756427092,2.61803398874989,2.61803398874989,2.61803398874989,101.615184821882,26.5294494580325,46.8350248707717,4.23606797749979,88.8134975903233,37.3127908039754,25.9437480576009,0.0894684504393495,88.8134975903233,37.3127908039754,25.9437480576009,0.0894684504393495,-20.7135650540078,17.4478128100276,-33.8027959520929,0.169019428032649,36.6505024096767,-25.5127908039752,47.9812519423991,0.447277919222441,0.447213595499958,0.447277919222441 +8.80836748230714,-9.99158357596927,15.920156153415,0.0889816179650814,101.615184821882,26.5294494580325,46.8350248707717,4.23606797749979,-63.0371848218817,55.6705505419673,-104.417024870772,2.61803398874989,2.61803398874989,2.61803398874989,62.6560620468503,60.9357418653872,-17.6982455035083,4.23606797749979,68.0999325363154,54.760603614003,-7.85904789449202,0.0896191585688449,68.0999325363154,54.760603614003,-7.85904789449202,0.0896191585688449,8.80836748230714,-9.99158357596927,15.920156153415,0.169622641028282,-29.521932536315,27.4393963859969,-49.722952105508,0.447654476852706,0.447213595499958,0.447654476852706 +-10.5643324990703,-1.62256353793613,0.52126441233816,0.0863061916173292,62.6560620468503,60.9357418653872,-17.6982455035083,4.23606797749979,33.6249379531497,-24.5357418653866,41.1582455035082,2.61803398874989,2.61803398874989,2.61803398874989,83.4374165715031,45.7718194533845,7.73894913497231,4.23606797749979,76.9083000186225,44.7690200380337,8.06110825892303,0.0906555411527689,76.9083000186225,44.7690200380337,8.06110825892303,0.0906555411527689,-10.5643324990703,-1.62256353793613,0.52126441233816,0.173786045714678,19.3726999813774,-8.36902003803314,15.3988917410769,0.450235441246711,0.447213595499958,0.450235441246711 +16.578635020482,1.72389296216124,2.75763708359935,0.069067746529926,83.4374165715031,45.7718194533845,7.73894913497231,4.23606797749979,-44.2364165715031,-5.97181945338431,-1.39294913497231,2.61803398874989,2.61803398874989,2.61803398874989,56.0978075898151,42.0810320565152,6.87805922495966,4.23606797749979,66.3439675195523,43.1464565000976,8.58237267126119,0.0979193841636164,66.3439675195523,43.1464565000976,8.58237267126119,0.0979193841636164,16.578635020482,1.72389296216124,2.75763708359935,0.203681131763313,-27.1429675195523,-3.34645650009737,-2.23637267126119,0.467925634374483,0.447213595499958,0.467925634374483 +-2.40776243948335,-13.2057575755792,0.930646838459861,0.00255268378663754,56.0978075898151,42.0810320565152,6.87805922495966,4.23606797749979,45.8111924101845,17.7189679434841,6.28894077504037,2.61803398874989,2.61803398874989,2.61803398874989,84.4106815644704,53.0319564911582,10.7648383771697,4.23606797749979,82.9226025400343,44.8703494622588,11.3400097548605,0.155240533045174,82.9226025400343,44.8703494622588,11.3400097548605,0.155240533045174,-2.40776243948335,-13.2057575755792,0.930646838459861,0.472414411185376,18.9863974599654,14.9296505377405,1.82699024513949,0.589176021874882,0.447213595499958,0.589176021874882 +-2.40776243948335,-0.441165688900204,0.930646838459861,0.00255268378663754,84.4106815644704,53.0319564911582,10.7648383771697,4.23606797749979,NA,-34.1319564911576,NA,2.61803398874989,2.61803398874989,2.61803398874989,84.4106815644704,31.9372472770902,10.7648383771697,11.0901699437495,80.514840100551,31.6645918866796,12.2706565933204,0.902064487461155,80.514840100551,31.6645918866796,12.2706565933204,0.902064487461155,-2.40776243948335,-0.441165688900204,0.930646838459861,0.472414411185376,0,-12.764591886679,0,1,0.447213595499958,1 +-2.40776243948335,7.68226050887971,0.930646838459861,0.00255268378663754,84.4106815644704,31.9372472770902,10.7648383771697,11.0901699437495,NA,-8.8372472770907,NA,3.61803398874989,2.61803398874989,3.61803398874989,84.4106815644704,26.4755280928606,10.7648383771697,21.1803398874989,78.1070776610676,31.2234261977794,13.2013034317803,1.97258534994171,78.1070776610676,31.2234261977794,13.2013034317803,1.97258534994171,-2.40776243948335,7.68226050887971,0.930646838459861,0.472414411185376,0,-8.12342619777991,0,1,0.447213595499958,1 +-2.40776243948335,-7.11205278446195,0.930646838459861,0.00255268378663754,84.4106815644704,26.4755280928606,10.7648383771697,21.1803398874989,NA,27.2244719071401,NA,4.61803398874989,2.61803398874989,4.61803398874989,84.4106815644704,43.3011770572399,10.7648383771697,34.5065778087482,75.6993152215843,38.9056867066591,14.1319502702401,3.09111327153,75.6993152215843,38.9056867066591,14.1319502702401,3.09111327153,-2.40776243948335,-7.11205278446195,0.930646838459861,0.472414411185376,0,14.7943132933417,0,1,0.447213595499958,1 +-2.40776243948335,-0.918418862264285,0.930646838459861,0.00255268378663754,84.4106815644704,43.3011770572399,10.7648383771697,34.5065778087482,NA,-17.7011770572404,NA,5.61803398874989,2.61803398874989,5.61803398874989,84.4106815644704,32.3612479949855,10.7648383771697,51.0688837074973,73.2915527821009,31.7936339221971,15.0625971087,4.04322281414845,73.2915527821009,31.7936339221971,15.0625971087,4.04322281414845,-2.40776243948335,-0.918418862264285,0.930646838459861,0.472414411185376,0,-6.19363392219767,0,1,0.447213595499958,1 +-2.40776243948335,-11.6432038023318,0.930646838459861,0.00255268378663754,84.4106815644704,32.3612479949855,10.7648383771697,51.0688837074973,NA,9.23875200501491,NA,6.61803398874989,2.61803398874989,6.61803398874989,84.4106815644704,38.0711107477159,10.7648383771697,70.8672575837461,70.8837903426176,30.8752150599328,15.9932439471598,4.67575295059883,70.8837903426176,30.8752150599328,15.9932439471598,4.67575295059883,-2.40776243948335,-11.6432038023318,0.930646838459861,0.472414411185376,0,10.7247849400675,0,1,0.447213595499958,1 +-2.40776243948335,-9.91119254473081,0.930646838459861,0.00255268378663754,84.4106815644704,38.0711107477159,10.7648383771697,70.8672575837461,NA,-20.5711107477159,NA,7.61803398874989,2.61803398874989,7.61803398874989,84.4106815644704,25.3574651192892,10.7648383771697,93.9016994374948,68.4760279031342,19.232011257601,16.9238907856197,4.89680706456217,68.4760279031342,19.232011257601,16.9238907856197,4.89680706456217,-2.40776243948335,-9.91119254473081,0.930646838459861,0.472414411185376,0,-1.73201125760101,0,1,0.447213595499958,1 +-2.40776243948335,-20.7903738318604,0.930646838459861,0.00255268378663754,84.4106815644704,25.3574651192892,10.7648383771697,93.9016994374948,NA,-5.1574651192894,NA,8.61803398874989,2.61803398874989,8.61803398874989,84.4106815644704,22.1699763797763,10.7648383771697,120.172209268743,66.0682654636509,9.32081871287021,17.8545376240796,4.67575295059883,66.0682654636509,9.32081871287021,17.8545376240796,4.67575295059883,-2.40776243948335,-20.7903738318604,0.930646838459861,0.472414411185376,0,10.8791812871296,0,1,0.447213595499958,1 +-2.40776243948335,9.24007104914937,0.930646838459861,0.00255268378663754,84.4106815644704,22.1699763797763,10.7648383771697,120.172209268743,NA,-63.6699763797763,NA,9.61803398874989,2.61803398874989,9.61803398874989,84.4106815644704,-17.1802330858284,10.7648383771697,149.678787077491,63.6605030241675,-11.4695551189902,18.7851844625394,4.04322281414845,63.6605030241675,-11.4695551189902,18.7851844625394,4.04322281414845,-2.40776243948335,9.24007104914937,0.930646838459861,0.472414411185376,0,-30.0304448810098,0,1,0.447213595499958,1 +-2.40776243948335,22.1105869793089,0.930646838459861,0.00255268378663754,84.4106815644704,-17.1802330858284,10.7648383771697,149.678787077491,NA,2.08023308582806,NA,10.6180339887499,2.61803398874989,10.6180339887499,84.4106815644704,-15.8945783342646,10.7648383771697,182.421432863739,61.2527405846842,-2.22948406984085,19.7158313009993,3.09111327153,61.2527405846842,-2.22948406984085,19.7158313009993,3.09111327153,-2.40776243948335,22.1105869793089,0.930646838459861,0.472414411185376,0,-12.8705159301595,0,1,0.447213595499958,1 +-2.40776243948335,1.69168988877674,0.930646838459861,0.00255268378663754,84.4106815644704,-15.8945783342646,10.7648383771697,182.421432863739,NA,56.1945783342648,NA,11.6180339887499,2.61803398874989,11.6180339887499,84.4106815644704,18.8355810597795,10.7648383771697,218.400146627487,58.8449781452008,19.881102909468,20.6464781394592,1.97258534994171,58.8449781452008,19.881102909468,20.6464781394592,1.97258534994171,-2.40776243948335,1.69168988877674,0.930646838459861,0.472414411185376,0,20.4188970905321,0,1,0.447213595499958,1 +-2.40776243948335,2.96448268702133,0.930646838459861,0.00255268378663754,84.4106815644704,18.8355810597795,10.7648383771697,218.400146627487,NA,1.4644189402207,NA,12.6180339887499,2.61803398874989,12.6180339887499,84.4106815644704,19.740641738605,10.7648383771697,257.614928368735,56.4372157057175,21.5727927982448,21.577124977919,0.902064487461154,56.4372157057175,21.5727927982448,21.577124977919,0.902064487461154,-2.40776243948335,2.96448268702133,0.930646838459861,0.472414411185376,0,-1.27279279824459,0,1,0.447213595499958,1 +20.1136908267501,29.9017581722871,-11.5485813451612,0.0690677465299261,84.4106815644704,19.740641738605,10.7648383771697,257.614928368735,-52.9026815644696,-22.1406417386046,24.2221616228303,13.6180339887499,2.61803398874989,13.6180339887499,35.3927517643283,6.05697261141276,33.2083172883222,6.00559868349362,54.0294532662341,24.5372754852661,22.5077718163789,0.155240533045174,54.0294532662341,24.5372754852661,22.5077718163789,0.155240533045174,20.1136908267501,29.9017581722871,-11.5485813451612,0.203681131763313,-22.5214532662335,-26.9372754852657,12.4792281836211,0.589176021874882,0.447213595499958,0.589176021874882 +5.68683491973465,-7.5592081701594,20.5056091260563,0.0863061916173293,35.3927517643283,6.05697261141276,33.2083172883222,6.00559868349362,53.1772482356714,85.8430273885869,-54.3033172883221,2.92656796121774,2.61803398874989,2.92656796121774,70.3994845906995,59.1108812347476,-2.53970997839846,4.44954212048734,74.1431440929843,54.4390336575532,10.9591904712176,0.0979193841636164,74.1431440929843,54.4390336575532,10.9591904712176,0.0979193841636164,5.68683491973465,-7.5592081701594,20.5056091260563,0.173786045714678,14.4268559070155,37.4609663424465,-32.0541904712176,0.467925634374483,0.447213595499958,0.467925634374483 +-1.16118606754633,7.12061731723455,-9.14559127666971,0.0889816179650814,70.3994845906995,59.1108812347476,-2.53970997839846,4.44954212048734,16.2785154093004,-26.9108812347478,63.6557099783984,2.65830282663796,2.61803398874989,2.65830282663796,80.5543502614604,42.4790419644617,37.1700035768213,4.26641880048683,79.8299790127189,46.8798254873938,31.464799597274,0.0906555411527689,79.8299790127189,46.8798254873938,31.464799597274,0.0906555411527689,-1.16118606754633,7.12061731723455,-9.14559127666971,0.169622641028282,6.84802098728098,-14.679825487394,29.651200402726,0.450235441246711,0.447213595499958,0.450235441246711 +-7.55939312237467,0.721060121862322,2.95061704393457,0.0893753711058825,80.5543502614604,42.4790419644617,37.1700035768213,4.26641880048683,4.51264973854055,17.9209580355388,-26.9470035768213,2.62382013441835,2.61803398874989,2.62382013441835,83.3471222997938,53.5548031413853,20.4931413192695,4.24047959984035,78.6687929451726,54.0004428046283,22.3192083206042,0.0896191585688449,78.6687929451726,54.0004428046283,22.3192083206042,0.0896191585688449,-7.55939312237467,0.721060121862322,2.95061704393457,0.169019428032649,6.39820705482834,6.39955719537223,-12.0962083206043,0.447654476852706,0.447213595499958,0.447654476852706 +-24.1049932995756,-12.057436951647,-3.40255759152666,0.0894328915796739,83.3471222997938,53.5548031413853,20.4931413192695,4.24047959984035,4.30787770020504,13.9451968586147,11.1298586807305,2.61887631439276,2.61803398874989,2.61887631439276,86.0100663784567,62.1734087798174,27.3731396230272,4.23671127448659,71.1093998227979,54.7215029264906,25.2698253645388,0.0894684504393496,71.1093998227979,54.7215029264906,25.2698253645388,0.0894684504393496,-24.1049932995756,-12.057436951647,-3.40255759152666,0.168931510261243,16.5456001772009,12.7784970735094,6.35317463546123,0.447277919222441,0.447213595499958,0.447277919222441 +7.43041322364576,8.00662902319712,-5.7562898185145,0.0894412852504598,86.0100663784567,62.1734087798174,27.3731396230272,4.23671127448659,-70.5410663784557,-39.573408779818,-3.15213962302719,2.61815684287791,2.61803398874989,2.61815684287791,42.4120254227698,37.7156971031964,25.4249537018578,4.23616182581815,47.0044065232223,42.6640659748436,21.8672677730122,0.0894464730212324,47.0044065232223,42.6640659748436,21.8672677730122,0.0894464730212324,7.43041322364576,8.00662902319712,-5.7562898185145,0.168918685143163,-31.5354065232214,-20.0640659748442,2.35373222698784,0.447222980204592,0.447213595499958,0.447222980204592 +7.91523297051493,4.77732402123731,2.07068813598328,0.0894425099034481,42.4120254227698,37.7156971031964,25.4249537018578,4.23616182581815,11.5379745772291,16.1843028968041,-17.1409537018579,2.61805191208454,2.61803398874989,2.61805191208454,49.5429160441875,47.7181463776448,14.8312168915893,4.2360816696264,54.4348197468681,50.6706949980407,16.1109779544977,0.0894432667848113,54.4348197468681,50.6706949980407,16.1109779544977,0.0894432667848113,7.91523297051493,4.77732402123731,2.07068813598328,0.16891681402435,-0.484819746869168,3.22930500195981,-7.82697795449778,0.447214964709911,0.447213595499958,0.447214964709911 +25.5922856878973,-1.3746569594841,21.0013542264642,0.089442688578612,49.5429160441875,47.7181463776448,14.8312168915893,4.2360816696264,-4.86991604418684,13.8818536223547,-15.5802168915893,2.61803660371128,2.61803398874989,2.61803660371128,46.5331405485642,56.2976037431108,5.20210735636892,4.23606997515077,62.350052717383,55.448019019278,18.1816660904809,0.0894427990060254,62.350052717383,55.448019019278,18.1816660904809,0.0894427990060254,25.5922856878973,-1.3746569594841,21.0013542264642,0.16891654103266,-17.6770527173823,6.15198098072141,-18.930666090481,0.447213795264998,0.447213595499958,0.447213795264998 +0.873624093177445,1.69870510030983,4.11537454340922,0.089442714646982,46.5331405485642,56.2976037431108,5.20210735636892,4.23606997515077,66.1278594514359,-5.29760374311081,50.8668926436313,2.61803437026724,2.61803398874989,2.61803437026724,87.4024089736776,53.0235045709397,36.6395787436097,4.23606826895307,87.9423384052803,54.0733620597939,39.1830203169452,0.0894427307581226,87.9423384052803,54.0733620597939,39.1830203169452,0.0894427307581226,0.873624093177445,1.69870510030983,4.11537454340922,0.168916501203728,24.7186615947198,-3.07336205979394,16.885979683055,0.447213624645284,0.447213595499958,0.447213624645284 +5.53958659163551,-6.92922773958694,-0.848230596236336,0.0894427184503062,87.4024089736776,53.0235045709397,36.6395787436097,4.23606826895307,-3.25240897367794,11.3764954290609,11.6224212563903,2.61803404441252,2.61803398874989,2.61803404441252,85.3923096562164,60.0545654189571,43.8226302060146,4.23606802002225,88.8159624984577,55.7720671601038,43.2983948603544,0.0894427208008899,88.8159624984577,55.7720671601038,43.2983948603544,0.0894427208008899,5.53958659163551,-6.92922773958694,-0.848230596236336,0.168916495392765,-4.66596249845806,8.62793283989677,4.96360513964555,0.447213599752204,0.447213595499958,0.447213599752204 +-19.4888643182713,-1.48638831906973,-26.4080663321183,0.0894427190052038,85.3923096562164,60.0545654189571,43.8226302060146,4.23606802002225,33.9916903437836,-16.6545654189575,24.1873697939854,2.61803399687096,2.61803398874989,2.61803399687096,106.400329664011,49.7614779221828,58.7712468658185,4.23606798370373,94.3555490900932,48.8428394205168,42.4501642641181,0.0894427193481493,94.3555490900932,48.8428394205168,42.4501642641181,0.0894427193481493,-19.4888643182713,-1.48638831906973,-26.4080663321183,0.168916494544957,25.0284509099068,-5.44283942051721,25.5598357358819,0.447213596120352,0.447213595499958,0.447213596120352 +-1.60817954645019,-1.32993721762243,11.8340315998816,0.0894427190861622,106.400329664011,49.7614779221828,58.7712468658185,4.23606798370373,-49.4143296640105,-2.56147792218295,-80.9712468658185,2.61803398993474,2.61803398874989,2.61803398993474,75.8605943918185,48.1783975048412,8.72826417728697,4.23606797840493,74.8666847718219,47.3564511014471,16.0420979319998,0.0894427191361973,74.8666847718219,47.3564511014471,16.0420979319998,0.0894427191361973,-1.60817954645019,-1.32993721762243,11.8340315998816,0.168916494421264,-17.8806847718211,-0.156451101447299,-38.2420979319998,0.447213595590472,0.447213595499958,0.447213595590472 +-27.2406743210781,-13.9034233337981,-16.8248388682372,0.0894427190979739,75.8605943918185,48.1783975048412,8.72826417728697,4.23606797840493,23.0304056081811,10.4216024951591,47.8067358227131,2.61803398892276,2.61803398874989,2.61803398892276,90.0941678329515,54.6193020640903,38.2744518081166,4.23606797763185,73.2585052253717,46.0265138838247,27.8761295318813,0.0894427191052739,73.2585052253717,46.0265138838247,27.8761295318813,0.0894427191052739,-27.2406743210781,-13.9034233337981,-16.8248388682372,0.168916494403217,25.6324947746279,12.5734861161757,28.6588704681187,0.447213595513164,0.447213595499958,0.447213595513164 +-3.30984341678402,11.2196672162285,-18.6735482045929,0.0894427190996972,90.0941678329515,54.6193020640903,38.2744518081166,4.23606797763185,-68.007167832952,-47.6193020640903,-25.3744518081167,2.61803398877512,2.61803398874989,2.61803398877512,48.0634266333184,25.1889548679345,22.5921781447109,4.23606797751906,46.0178309042936,32.1230905500266,11.0512906636442,0.0894427191007623,46.0178309042936,32.1230905500266,11.0512906636442,0.0894427191007623,-3.30984341678402,11.2196672162285,-18.6735482045929,0.168916494400584,-23.9308309042941,-25.1230905500266,1.8487093363557,0.447213595501885,0.447213595499958,0.447213595501885 +19.9971440707257,5.36242498248372,8.18419425445843,0.0894427190999487,48.0634266333184,25.1889548679345,22.5921781447109,4.23606797751906,-28.6624266333186,24.0110451320653,-57.0721781447109,2.61803398875357,2.61803398874989,2.61803398875357,30.3490727738619,40.0285968649586,-12.68036776074,4.2360679775026,42.7079874875096,43.3427577662551,-7.62225754094871,0.089442719100104,42.7079874875096,43.3427577662551,-7.62225754094871,0.089442719100104,19.9971440707257,5.36242498248372,8.18419425445843,0.1689164944002,-23.3069874875098,5.85724223374476,-26.8577424590513,0.447213595500239,0.447213595499958,0.447213595500239 +6.68627562896143,-0.0323922687778753,20.7551309679679,0.0894427190999853,30.3490727738619,40.0285968649586,-12.68036776074,4.2360679775026,45.6669272261377,14.0714031350418,0.671367760740232,2.61803398875043,2.61803398874989,2.61803398875043,58.5727859613866,48.7252022718162,-12.2654396656516,4.2360679775002,62.7051315582353,48.7051827487388,0.56193671350972,0.089442719100008,62.7051315582353,48.7051827487388,0.56193671350972,0.089442719100008,6.68627562896143,-0.0323922687778753,20.7551309679679,0.168916494400144,13.3108684417643,5.39481725126159,-12.5709367135095,0.447213595499999,0.447213595499958,0.447213595499999 +12.4866828161578,5.64039821118302,7.28119864944566,0.0894427190999906,58.5727859613866,48.7252022718162,-12.2654396656516,4.2360679775002,5.01821403861379,-5.72520227181622,47.0564396656515,2.61803398874997,2.61803398874989,2.61803398874997,61.6742128000718,45.1868326753657,16.8170394372803,4.23606797749985,69.3914071871968,48.6727904799609,21.3170676814777,0.089442719099994,69.3914071871968,48.6727904799609,21.3170676814777,0.089442719099994,12.4866828161578,5.64039821118302,7.28119864944566,0.168916494400136,-5.80040718719641,-5.6727904799609,13.4739323185223,0.447213595499964,0.447213595499958,0.447213595499964 +31.451772819512,3.65358690232767,19.1434649803691,0.0894427190999914,61.6742128000718,45.1868326753657,16.8170394372803,4.23606797749985,1.23878719992865,11.1131673246336,-0.0810394372804524,2.61803398874991,2.61803398874989,2.61803398874991,62.439825394456,52.055147804654,16.7669543106118,4.2360679774998,81.8780900033546,54.3131886911439,28.5982663309233,0.089442719099992,81.8780900033546,54.3131886911439,28.5982663309233,0.089442719099992,31.451772819512,3.65358690232767,19.1434649803691,0.168916494400135,-18.9650900033541,1.98681130885535,-11.8622663309234,0.447213595499959,0.447213595499958,0.447213595499959 +-15.0823643576211,-8.57963750420146,0.21819629166137,0.0894427190999916,62.439825394456,52.055147804654,16.7669543106118,4.2360679774998,97.4241746055435,18.1448521953468,49.9000456893883,2.6180339887499,2.61803398874989,2.6180339887499,122.651276626586,63.2692831822214,47.6068785868265,4.23606797749979,113.329862822867,57.9667755934716,47.7417313112924,0.0894427190999916,113.329862822867,57.9667755934716,47.7417313112924,0.0894427190999916,-15.0823643576211,-8.57963750420146,0.21819629166137,0.168916494400135,46.534137177133,12.2332244065291,18.9252686887077,0.447213595499958,0.447213595499958,0.447213595499958 +1.33813410762329,3.30750058506868,-20.0858761053847,0.0894427190999916,122.651276626586,63.2692831822214,47.6068785868265,4.23606797749979,-40.8242766265852,-25.7692831822214,20.6571214131734,2.61803398874989,2.61803398874989,2.61803398874989,97.4204861052288,47.3429903098875,60.3736817299009,4.23606797749979,98.2474984652455,49.3871380892701,47.9599276029538,0.0894427190999916,98.2474984652455,49.3871380892701,47.9599276029538,0.0894427190999916,1.33813410762329,3.30750058506868,-20.0858761053847,0.168916494400135,-16.4204984652444,-11.8871380892701,20.3040723970461,0.447213595499958,0.447213595499958,0.447213595499958 +-2.65523331950765,4.5021392594075,11.6541753921843,0.0894427190999916,97.4204861052288,47.3429903098875,60.3736817299009,4.23606797749979,6.15851389477095,4.15700969011247,-64.2396817299009,2.61803398874989,2.61803398874989,2.61803398874989,101.226657012386,49.9121635899397,20.6713749943465,4.23606797749979,99.5856325728688,52.6946386743388,27.8740514975691,0.0894427190999916,99.5856325728688,52.6946386743388,27.8740514975691,0.0894427190999916,-2.65523331950765,4.5021392594075,11.6541753921843,0.168916494400135,3.99336742713095,-1.19463867433881,-31.740051497569,0.447213595499958,0.447213595499958,0.447213595499958 +20.4981659338534,-2.40108280684565,18.0714022819376,0.0894427190999916,101.226657012386,49.9121635899397,20.6713749943465,4.23606797749979,-27.4496570123857,14.1878364100598,12.4396250056536,2.61803398874989,2.61803398874989,2.61803398874989,84.2618359992045,58.6807287181799,28.3594860551435,4.23606797749979,96.9303992533611,57.1967779337463,39.5282268897534,0.0894427190999916,96.9303992533611,57.1967779337463,39.5282268897534,0.0894427190999916,20.4981659338534,-2.40108280684565,18.0714022819376,0.168916494400135,-23.1533992533611,6.90322206625314,-6.41722688975326,0.447213595499958,0.447213595499958,0.447213595499958 +-5.38926887893093,26.394612320055,-17.0009685463715,0.0894427190999916,84.2618359992045,58.6807287181799,28.3594860551435,4.23606797749979,59.0541640007944,-32.6807287181799,64.3125139448565,2.61803398874989,2.61803398874989,2.61803398874989,120.759316528906,38.4829275932299,68.1068055750164,4.23606797749979,117.428565187215,54.7956951269007,57.5996291716909,0.0894427190999916,117.428565187215,54.7956951269007,57.5996291716909,0.0894427190999916,-5.38926887893093,26.394612320055,-17.0009685463715,0.168916494400135,25.8874348127844,-28.7956951269007,35.0723708283091,0.447213595499958,0.447213595499958,0.447213595499958 +-16.4709725706483,-2.21508023298949,-3.85230792105195,0.0894427190999916,120.759316528906,38.4829275932299,68.1068055750164,4.23606797749979,2.36168347109509,71.3170724067702,-40.6568055750166,2.61803398874989,2.61803398874989,2.61803398874989,122.218917184712,82.5593023187512,42.97951785566,4.23606797749979,112.039296308284,81.1903074469557,40.5986606253194,0.0894427190999916,112.039296308284,81.1903074469557,40.5986606253194,0.0894427190999916,-16.4709725706483,-2.21508023298949,-3.85230792105195,0.168916494400135,11.0817036917174,28.6096925530445,-13.1486606253196,0.447213595499958,0.447213595499958,0.447213595499958 +2.89535116698772,1.66014698097634,7.79704478321552,0.0894427190999916,122.218917184712,82.5593023187512,42.97951785566,4.23606797749979,-46.0169171847122,-7.45930231875086,-17.88251785566,2.61803398874989,2.61803398874989,2.61803398874989,93.7788983070702,77.9491999534023,31.9275140164352,4.23606797749979,95.5683237376353,78.9752272139662,36.7463527042675,0.0894427190999916,95.5683237376353,78.9752272139662,36.7463527042675,0.0894427190999916,2.89535116698772,1.66014698097634,7.79704478321552,0.168916494400135,-19.366323737636,-3.87522721396583,-11.6493527042675,0.447213595499958,0.447213595499958,0.447213595499958 +6.80802607161129,16.1955211759194,-23.8685577293016,0.0894427190999916,93.7788983070702,77.9491999534023,31.9275140164352,4.23606797749979,0.772101692929226,-11.8491999534028,44.2814859835649,2.61803398874989,2.61803398874989,2.61803398874989,94.2560833960718,70.6259916427057,59.2949774266303,4.23606797749979,98.463674904623,80.6353741949425,44.543397487483,0.0894427190999916,98.463674904623,80.6353741949425,44.543397487483,0.0894427190999916,6.80802607161129,16.1955211759194,-23.8685577293016,0.168916494400135,-3.91267490462357,-14.5353741949431,31.6656025125171,0.447213595499958,0.447213595499958,0.447213595499958 +21.2277270478449,-2.3735834532192,16.8222820288799,0.0894427190999916,94.2560833960718,70.6259916427057,59.2949774266303,4.23606797749979,-3.40408339607107,44.7740083572949,-79.3109774266304,2.61803398874989,2.61803398874989,2.61803398874989,92.1522441567607,98.2978506200857,10.2780976959971,4.23606797749979,105.271700976234,96.8308953708619,20.6748397581814,0.0894427190999916,105.271700976234,96.8308953708619,20.6748397581814,0.0894427190999916,21.2277270478449,-2.3735834532192,16.8222820288799,0.168916494400135,-14.4197009762336,18.5691046291386,-40.6908397581815,0.447213595499958,0.447213595499958,0.447213595499958 +13.2171550719238,1.58372846442354,6.96440381594128,0.0894427190999916,92.1522441567607,98.2978506200857,10.2780976959971,4.23606797749979,42.3577558432395,-7.79785062008574,37.0769023040029,2.61803398874989,2.61803398874989,2.61803398874989,118.330776955052,93.4785138976783,33.1928835174302,4.23606797749979,126.499428024079,94.4573119176427,37.4971217870614,0.0894427190999916,126.499428024079,94.4573119176427,37.4971217870614,0.0894427190999916,13.2171550719238,1.58372846442354,6.96440381594128,0.168916494400135,8.01057197592103,-3.95731191764274,9.85787821293866,0.447213595499958,0.447213595499958,0.447213595499958 +-25.8542618320736,-8.37523115351018,-3.24607058105612,0.0894427190999916,118.330776955052,93.4785138976783,33.1928835174302,4.23606797749979,60.4572230449483,12.5214861023217,21.4791164825699,2.61803398874989,2.61803398874989,2.61803398874989,155.695395662264,101.217217898573,46.4677075519764,4.23606797749979,139.716583096003,96.0410403820663,44.4615256030026,0.0894427190999916,139.716583096003,96.0410403820663,44.4615256030026,0.0894427190999916,-25.8542618320736,-8.37523115351018,-3.24607058105612,0.168916494400135,39.0714169039975,9.95895961793372,10.2104743969974,0.447213595499958,0.447213595499958,0.447213595499958 +-5.59594056814363,10.0905780750461,-17.2806155591096,0.0894427190999916,155.695395662264,101.217217898573,46.4677075519764,4.23606797749979,-62.0913956622643,-32.0172178985727,8.78229244802357,2.61803398874989,2.61803398874989,2.61803398874989,117.320802734067,81.4294890120431,51.8954627839965,4.23606797749979,113.862321263929,87.6658092285561,41.2154550219465,0.0894427190999916,113.862321263929,87.6658092285561,41.2154550219465,0.0894427190999916,-5.59594056814363,10.0905780750461,-17.2806155591096,0.168916494400135,-20.25832126393,-18.4658092285563,14.0345449780535,0.447213595499958,0.447213595499958,0.447213595499958 +19.8004401276413,-3.75303462135115,12.9732239037272,0.0894427190999916,117.320802734067,81.4294890120431,51.8954627839965,4.23606797749979,-34.4508027340657,30.1705109879563,-58.2144627839965,2.61803398874989,2.61803398874989,2.61803398874989,96.0290357046961,100.075890260552,15.9169461466709,4.23606797749979,108.266380695786,97.7563873036022,23.9348394628369,0.0894427190999916,108.266380695786,97.7563873036022,23.9348394628369,0.0894427190999916,19.8004401276413,-3.75303462135115,12.9732239037272,0.168916494400135,-25.3963806957849,13.8436126963972,-30.2538394628369,0.447213595499958,0.447213595499958,0.447213595499958 +12.0022609510686,3.75031806089991,4.60628727029129,0.0894427190999916,96.0290357046961,100.075890260552,15.9169461466709,4.23606797749979,39.8359642953037,-13.5758902605523,29.3580538533292,2.61803398874989,2.61803398874989,2.61803398874989,120.649015613821,91.6855286519923,34.0612212715781,4.23606797749979,128.066820823427,94.003352682251,36.9080633665641,0.0894427190999916,128.066820823427,94.003352682251,36.9080633665641,0.0894427190999916,12.0022609510686,3.75031806089991,4.60628727029129,0.168916494400135,7.79817917657273,-7.50335268225105,8.36693663343595,0.447213595499958,0.447213595499958,0.447213595499958 +-42.2686572744359,-1.29601119594932,-19.4973620928532,0.0894427190999916,120.649015613821,91.6855286519923,34.0612212715781,4.23606797749979,73.6909843861791,11.1144713480079,31.5567787284218,2.61803398874989,2.61803398874989,2.61803398874989,166.192548628918,98.554649712048,53.5643831012025,4.23606797749979,140.069081774496,97.753670743151,41.5143506368554,0.0894427190999916,140.069081774496,97.753670743151,41.5143506368554,0.0894427190999916,-42.2686572744359,-1.29601119594932,-19.4973620928532,0.168916494400135,54.2709182255045,5.04632925684922,24.1036493631445,0.447213595499958,0.447213595499958,0.447213595499958 +26.7417672256247,-16.938351648748,29.250626451149,0.0894427190999916,166.192548628918,98.554649712048,53.5643831012025,4.23606797749979,-137.402548628918,13.5453502879523,-80.2953831012025,2.61803398874989,2.61803398874989,2.61803398874989,81.2731034353857,106.926136579526,3.93910720496542,4.23606797749979,97.8004245000597,96.4576595472016,22.0169885440022,0.0894427190999916,97.8004245000597,96.4576595472016,22.0169885440022,0.0894427190999916,26.7417672256247,-16.938351648748,29.250626451149,0.168916494400135,-69.0104245000607,15.6423404527987,-48.7479885440022,0.447213595499958,0.447213595499958,0.447213595499958 +-64.1260410486907,-7.91904375029446,-50.1747585536998,0.0894427190999916,81.2731034353857,106.926136579526,3.93910720496542,4.23606797749979,134.136896564614,-36.4261365795257,126.753892795035,2.61803398874989,2.61803398874989,2.61803398874989,164.174264657746,84.413546094533,82.2773211586572,4.23606797749979,124.542191725684,79.5193078984536,51.2676149951512,0.0894427190999916,124.542191725684,79.5193078984536,51.2676149951512,0.0894427190999916,-64.1260410486907,-7.91904375029446,-50.1747585536998,0.168916494400135,90.8678082743154,-9.01930789845358,79.4253850048488,0.447213595499958,0.447213595499958,0.447213595499958 +-13.1228903716973,-10.4187796021348,-17.5089021122482,0.0894427190999916,164.174264657746,84.413546094533,82.2773211586572,4.23606797749979,-154.761264657746,-10.3135460945335,-113.850321158657,2.61803398874989,2.61803398874989,2.61803398874989,68.5265429573415,78.0394240635725,11.9139530525157,4.23606797749979,60.4161506769938,71.6002641481591,1.09285644145149,0.0894427190999916,60.4161506769938,71.6002641481591,1.09285644145149,0.0894427190999916,-13.1228903716973,-10.4187796021348,-17.5089021122482,0.168916494400135,-51.0031506769933,2.49973585184033,-32.6658564414516,0.447213595499958,0.447213595499958,0.447213595499958 +-32.5066300664006,-16.8372950561108,-34.813947783045,0.0894427190999916,68.5265429573415,78.0394240635725,11.9139530525157,4.23606797749979,-1.84954295734181,-10.4394240635722,-11.0249530525156,2.61803398874989,2.61803398874989,2.61803398874989,67.3834625460512,71.5875051693114,5.10015734168916,4.23606797749979,47.2932603052964,61.1814845460243,-16.4160456707967,0.0894427190999916,47.2932603052964,61.1814845460243,-16.4160456707967,0.0894427190999916,-32.5066300664006,-16.8372950561108,-34.813947783045,0.168916494400135,19.3837396947032,6.41851545397602,17.3050456707968,0.447213595499958,0.447213595499958,0.447213595499958 +19.6530001724948,-3.29310556619747,19.1100587631133,0.0894427190999916,67.3834625460512,71.5875051693114,5.10015734168916,4.23606797749979,-104.756462546051,-40.7875051693112,-110.254157341689,2.61803398874989,2.61803398874989,2.61803398874989,2.6404081513865,46.379440658365,-63.0406592964535,4.23606797749979,14.7866302388958,44.3441894899135,-51.2299934538417,0.0894427190999916,14.7866302388958,44.3441894899135,-51.2299934538417,0.0894427190999916,19.6530001724948,-3.29310556619747,19.1100587631133,0.168916494400135,-52.1596302388954,-13.5441894899133,-53.9240065461583,0.447213595499958,0.447213595499958,0.447213595499958 +-19.9873694161144,8.55797835751877,-6.96887592761521,0.0894427190999916,2.6404081513865,46.379440658365,-63.0406592964535,4.23606797749979,71.4395918486134,-17.1794406583652,56.9996592964536,2.61803398874989,2.61803398874989,2.61803398874989,46.7925040562495,35.7619624237835,-27.8129325040813,4.23606797749979,34.4396304113907,41.0510839237161,-32.1199346907284,0.0894427190999916,34.4396304113907,41.0510839237161,-32.1199346907284,0.0894427190999916,-19.9873694161144,8.55797835751877,-6.96887592761521,0.168916494400135,39.6403695886092,-11.8510839237162,26.0789346907285,0.447213595499958,0.447213595499958,0.447213595499958 +25.6408915791614,23.9670406387538,-6.48168654595882,0.0894427190999916,46.7925040562495,35.7619624237835,-27.8129325040813,4.23606797749979,-77.968504056249,-1.56196242378364,-11.7630674959187,2.61803398874989,2.61803398874989,2.61803398874989,-1.39468150249639,34.796616556735,-35.0829080285182,4.23606797749979,14.4522609952763,49.6090622812348,-39.0888106183436,0.0894427190999916,14.4522609952763,49.6090622812348,-39.0888106183436,0.0894427190999916,25.6408915791614,23.9670406387538,-6.48168654595882,0.168916494400135,-45.6282609952758,-15.409062281235,-0.487189381656387,0.447213595499958,0.447213595499958,0.447213595499958 +25.6810441535992,-24.7568564412578,53.8328162897387,0.0894427190999916,-1.39468150249639,34.796616556735,-35.0829080285182,4.23606797749979,41.4476815024963,87.5033834432652,-70.8020919714818,2.61803398874989,2.61803398874989,2.61803398874989,24.2213944209266,88.8766816552877,-78.84100734149,4.23606797749979,40.0931525744377,73.5761029199886,-45.5704971643025,0.0894427190999916,40.0931525744377,73.5761029199886,-45.5704971643025,0.0894427190999916,25.6810441535992,-24.7568564412578,53.8328162897387,0.168916494400135,-0.0401525744378288,48.7238970800116,-60.3145028356975,0.447213595499958,0.447213595499958,0.447213595499958 +-6.28475911836362,-3.23760996252713,3.95713541517506,0.0894427190999916,24.2213944209266,88.8766816552877,-78.84100734149,4.23606797749979,73.5186055790732,-61.5766816552875,136.97900734149,2.61803398874989,2.61803398874989,2.61803398874989,69.6583914742915,50.8201994778879,5.81667494077215,4.23606797749979,65.7741967280369,48.8192464787308,8.26231912543625,0.0894427190999916,65.7741967280369,48.8192464787308,8.26231912543625,0.0894427190999916,-6.28475911836362,-3.23760996252713,3.95713541517506,0.168916494400135,31.9658032719628,-21.5192464787307,49.8756808745636,0.447213595499958,0.447213595499958,0.447213595499958 +-7.69732150869036,1.84402655367658,-5.27541004421361,0.0894427190999916,69.6583914742915,50.8201994778879,5.81667494077215,4.23606797749979,-8.75639147429143,-10.3201994778879,15.6353250592279,2.61803398874989,2.61803398874989,2.61803398874989,64.2466439243796,44.4419654298742,15.4798372525279,4.23606797749979,59.4894376096733,45.5816365162037,12.2194545406113,0.0894427190999916,59.4894376096733,45.5816365162037,12.2194545406113,0.0894427190999916,-7.69732150869036,1.84402655367658,-5.27541004421361,0.168916494400135,1.41256239032673,-5.08163651620371,9.23254545938867,0.447213595499958,0.447213595499958,0.447213595499958 +-13.5652054077073,-4.93031037644295,-2.08336554781585,0.0894427190999916,64.2466439243796,44.4419654298742,15.4798372525279,4.23606797749979,-6.58664392437971,9.75803457012557,-11.727837252528,2.61803398874989,2.61803398874989,2.61803398874989,60.1758741073199,50.4727624576083,8.23163521593845,4.23606797749979,51.792116100983,47.4256630698803,6.94404449639772,0.0894427190999916,51.792116100983,47.4256630698803,6.94404449639772,0.0894427190999916,-13.5652054077073,-4.93031037644295,-2.08336554781585,0.168916494400135,5.8678838990169,6.77433693011953,-3.19204449639776,0.447213595499958,0.447213595499958,0.447213595499958 +22.2677052855682,8.96504231699402,4.08931340076592,0.0894427190999916,60.1758741073199,50.4727624576083,8.23163521593845,4.23606797749979,-57.7818741073197,-21.872762457608,-9.54363521593835,2.61803398874989,2.61803398874989,2.61803398874989,24.4647119753289,36.9546518309539,2.33334427625811,4.23606797749979,38.2269106932757,42.4953526934373,4.86067894858187,0.0894427190999916,38.2269106932757,42.4953526934373,4.86067894858187,0.0894427190999916,22.2677052855682,8.96504231699402,4.08931340076592,0.168916494400135,-35.8329106932755,-13.895352693437,-6.17267894858177,0.447213595499958,0.447213595499958,0.447213595499958 +35.7673212644131,18.7254373274256,13.1173057501137,0.0894427190999916,24.4647119753289,36.9546518309539,2.33334427625811,4.23606797749979,22.5302880246701,4.7453481690459,-2.41134427625808,2.61803398874989,2.61803398874989,2.61803398874989,38.3891957508997,39.8874382878764,0.843051554953098,4.23606797749979,60.4946159788439,51.4603950104314,8.94999234934779,0.0894427190999916,60.4946159788439,51.4603950104314,8.94999234934779,0.0894427190999916,35.7673212644131,18.7254373274256,13.1173057501137,0.168916494400135,-13.4996159788449,-9.76039501043154,-9.02799234934776,0.447213595499958,0.447213595499958,0.447213595499958 +39.1422585076695,13.4112696652834,24.6276038495751,0.0894427190999916,38.3891957508997,39.8874382878764,0.843051554953098,4.23606797749979,54.4978042491009,35.6125617121227,9.71394844504692,2.61803398874989,2.61803398874989,2.61803398874989,72.0706910890825,61.8972118524213,6.84660185895628,4.23606797749979,96.261937243257,70.1858323378569,22.0672980994615,0.0894427190999916,96.261937243257,70.1858323378569,22.0672980994615,0.0894427190999916,39.1422585076695,13.4112696652834,24.6276038495751,0.168916494400135,-3.37493724325638,5.31416766214218,-11.5102980994615,0.447213595499958,0.447213595499958,0.447213595499958 +-22.2085457414032,-17.2916283315774,5.13750579861184,0.0894427190999916,72.0706910890825,61.8972118524213,6.84660185895628,4.23606797749979,124.684308910917,52.4027881475797,59.3383981410437,2.61803398874989,2.61803398874989,2.61803398874989,149.12983185982,94.2839160328858,43.5197487480948,4.23606797749979,135.404195750926,83.5971020031403,46.6949019490366,0.0894427190999916,135.404195750926,83.5971020031403,46.6949019490366,0.0894427190999916,-22.2085457414032,-17.2916283315774,5.13750579861184,0.168916494400135,61.3508042490727,30.7028979968608,19.4900980509633,0.447213595499958,0.447213595499958,0.447213595499958 +-16.3688957318797,3.11384533998575,-12.9300864537396,0.0894427190999916,149.12983185982,94.2839160328858,43.5197487480948,4.23606797749979,-41.7738318598206,-48.3839160328861,26.380251251905,2.61803398874989,2.61803398874989,2.61803398874989,123.312183930128,64.3810114157412,59.8236406535341,4.23606797749979,113.195650009523,66.3054736715628,51.8324077476485,0.0894427190999916,113.195650009523,66.3054736715628,51.8324077476485,0.0894427190999916,-16.3688957318797,3.11384533998575,-12.9300864537396,0.168916494400135,-5.83965000952353,-20.4054736715632,18.0675922523514,0.447213595499958,0.447213595499958,0.447213595499958 +-4.34814145423654,-7.06683564846604,15.7402348401691,0.0894427190999916,123.312183930128,64.3810114157412,59.8236406535341,4.23606797749979,-38.5061839301275,15.2189885842592,-49.5916406535339,2.61803398874989,2.61803398874989,2.61803398874989,99.5140534842542,73.78686363521,29.1743211717791,4.23606797749979,96.8267542776436,69.4193190115486,38.9023212939089,0.0894427190999916,96.8267542776436,69.4193190115486,38.9023212939089,0.0894427190999916,-4.34814145423654,-7.06683564846604,15.7402348401691,0.168916494400135,-12.0207542776431,10.1806809884518,-28.6703212939087,0.447213595499958,0.447213595499958,0.447213595499958 +1.93547136917085,9.68564771461614,-15.1822090257526,0.0894427190999916,99.5140534842542,73.78686363521,29.1743211717791,4.23606797749979,-13.3190534842545,-28.1868636352096,56.3906788282207,2.61803398874989,2.61803398874989,2.61803398874989,91.2824257330072,56.366423872392,64.0256773362986,4.23606797749979,92.4786128234071,62.3524833630825,54.642556134078,0.0894427190999916,92.4786128234071,62.3524833630825,54.642556134078,0.0894427190999916,1.93547136917085,9.68564771461614,-15.1822090257526,0.168916494400135,-6.28361282340738,-16.7524833630822,30.9224438659218,0.447213595499958,0.447213595499958,0.447213595499958 +6.63455556174864,9.12377879231628,-2.37286191742756,0.0894427190999916,91.2824257330072,56.366423872392,64.0256773362986,4.23606797749979,-1.56742573300707,16.2335761276065,-37.3746773362983,2.61803398874989,2.61803398874989,2.61803398874989,90.3137033551676,66.3993256782118,40.9268564239059,4.23606797749979,94.4140841925779,72.0381310776987,39.4603471083254,0.0894427190999916,94.4140841925779,72.0381310776987,39.4603471083254,0.0894427190999916,6.63455556174864,9.12377879231628,-2.37286191742756,0.168916494400135,-4.6990841925778,0.56186892229986,-12.8093471083251,0.447213595499958,0.447213595499958,0.447213595499958 +0.934195316075438,-8.11431133767021,-8.20637672652955,0.0894427190999915,90.3137033551676,66.3993256782118,40.9268564239059,4.23606797749979,16.4352966448322,32.0006743217897,1.99414357609395,2.61803398874989,2.61803398874989,2.61803398874989,100.471275296861,86.1768300719938,42.1593049323792,4.23606797749979,101.048639754327,81.161909870015,37.0874851908978,0.0894427190999916,101.048639754327,81.161909870015,37.0874851908978,0.0894427190999916,0.934195316075438,-8.11431133767021,-8.20637672652955,0.168916494400135,5.70036024567321,17.2380901299865,5.83351480910199,0.447213595499958,0.447213595499958,0.447213595499958 +-20.9139696135227,0.133287194675265,-24.4722682621612,0.0894427190999914,100.471275296861,86.1768300719938,42.1593049323792,4.23606797749979,23.3597247031391,-21.3768300719945,2.98769506762074,2.61803398874989,2.61803398874989,2.61803398874989,114.908379131242,72.9652225157703,44.0058020321892,4.23606797749979,101.982835070402,73.0475985323448,28.8811084643683,0.0894427190999917,101.982835070402,73.0475985323448,28.8811084643683,0.0894427190999917,-20.9139696135227,0.133287194675265,-24.4722682621612,0.168916494400135,21.8481649295981,-8.24759853234548,16.2658915356317,0.447213595499958,0.447213595499958,0.447213595499958 +6.73289584335623,-10.5858270783044,18.767571940046,0.0894427190999899,114.908379131242,72.9652225157703,44.0058020321892,4.23606797749979,-61.4863791312411,10.9347774842293,-82.8368020321894,2.61803398874989,2.61803398874989,2.61803398874989,76.9077069829723,79.7232866604411,-7.19015714305016,4.23606797749979,81.0688654568794,73.18088572702,4.40884020220707,0.0894427190999922,81.0688654568794,73.18088572702,4.40884020220707,0.0894427190999922,6.73289584335623,-10.5858270783044,18.767571940046,0.168916494400137,-27.6468654568789,10.7191142729796,-43.2398402022072,0.447213595499959,0.447213595499959,0.447213595499959 +-1.08334285640858,-10.6907684295894,18.4629840822989,0.0894427190999803,76.9077069829723,79.7232866604411,-7.19015714305016,4.23606797749979,18.7102930170281,-17.0232866604404,30.6711571430504,2.61803398874989,2.61803398874989,2.61803398874989,88.4713040069655,69.2023169040563,11.7656604456441,4.23606797749979,87.8017613002356,62.5950586487156,23.1764121422531,0.0894427190999959,87.8017613002356,62.5950586487156,23.1764121422531,0.0894427190999959,-1.08334285640858,-10.6907684295894,18.4629840822989,0.168916494400152,7.8162386997648,0.104941351285074,0.30458785774713,0.447213595499965,0.447213595499965,0.447213595499965 +20.0890755874182,18.3135217895371,-17.1416196931493,0.0894427190999141,88.4713040069655,69.2023169040563,11.7656604456441,4.23606797749979,-22.9253040069652,-46.3023169040566,65.478339554356,2.61803398874989,2.61803398874989,2.61803398874989,74.3026869282368,40.5859112994805,52.2334998171428,4.23606797749979,86.718418443827,51.9042902191262,41.639396224552,0.0894427191000212,86.718418443827,51.9042902191262,41.639396224552,0.0894427191000212,20.0890755874182,18.3135217895371,-17.1416196931493,0.168916494400253,-21.1724184438267,-29.0042902191266,35.6046037754482,0.447213595500007,0.447213595500007,0.447213595500007 +-40.3424303813362,-9.56866620179987,-25.1718431617463,0.0894427190994602,74.3026869282368,40.5859112994805,52.2334998171428,4.23606797749979,92.9363130717628,57.5140887005199,-19.705499817143,2.61803398874989,2.61803398874989,2.61803398874989,131.740487195687,76.1315729483781,40.0548311648436,4.23606797749979,106.807494031245,70.2178120086634,24.4977765314027,0.0894427191001945,106.807494031245,70.2178120086634,24.4977765314027,0.0894427191001945,-40.3424303813362,-9.56866620179987,-25.1718431617463,0.168916494400946,60.4315059687544,27.882187991337,8.03022346859707,0.447213595500296,0.447213595500296,0.447213595500296 +-20.4013667314268,2.680479605064,-22.3719097920898,0.0894427190963499,131.740487195687,76.1315729483781,40.0548311648436,4.23606797749979,-85.2164871956879,-27.7315729483784,-43.5288311648437,2.61803398874989,2.61803398874989,2.61803398874989,79.073801706882,58.9925183047831,13.1525340144145,4.23606797749979,66.4650636499089,60.6491458068635,-0.674066630343603,0.0894427191013827,66.4650636499089,60.6491458068635,-0.674066630343603,0.0894427191013827,-20.4013667314268,2.680479605064,-22.3719097920898,0.168916494405699,-19.9410636499095,-12.2491458068639,-2.79993336965655,0.447213595502276,0.447213595502276,0.447213595502276 +22.2083301870556,10.3101050169908,-13.8068862145233,0.0894427190750307,79.073801706882,58.9925183047831,13.1525340144145,4.23606797749979,-75.6198017068823,-3.29251830478233,-44.7635340144143,2.61803398874989,2.61803398874989,2.61803398874989,32.3381940295014,56.9576300838464,-14.5128514630556,4.23606797749979,46.0636969184821,63.3296254119275,-23.0459764224334,0.0894427191095258,46.0636969184821,63.3296254119275,-23.0459764224334,0.0894427191095258,22.2083301870556,10.3101050169908,-13.8068862145233,0.168916494438271,-42.6096969184824,-7.62962541192679,-8.56502357756649,0.447213595515848,0.447213595515848,0.447213595515848 +-4.28264270740754,-6.95016455409055,13.0102511485201,0.0894427189289074,32.3381940295014,56.9576300838464,-14.5128514630556,4.23606797749979,62.4248059704994,33.9423699161532,-49.1571485369445,2.61803398874989,2.61803398874989,2.61803398874989,70.9188458603874,77.935168350751,-44.8936400489145,4.23606797749979,68.2720271055377,73.6397304289183,-36.8528626369567,0.0894427191653399,68.2720271055377,73.6397304289183,-36.8528626369567,0.0894427191653399,-4.28264270740754,-6.95016455409055,13.0102511485201,0.168916494661528,26.4909728944631,17.2602695710813,-26.8171373630434,0.447213595608872,0.447213595608872,0.447213595608872 +20.4847416907229,-23.7605986792628,22.5246396600835,0.0894427179273626,70.9188458603874,77.935168350751,-44.8936400489145,4.23606797749979,-31.6968458603877,5.56483164924899,11.5366400489145,2.61803398874989,2.61803398874989,2.61803398874989,51.3291177825014,81.374423451658,-37.7636043827121,4.23606797749979,63.9893843981302,66.6895658748277,-23.8426114884366,0.089442719547896,63.9893843981302,66.6895658748277,-23.8426114884366,0.089442719547896,20.4847416907229,-23.7605986792628,22.5246396600835,0.168916496191752,-24.7673843981304,16.8104341251723,-9.51438851156338,0.447213596246465,0.447213596246465,0.447213596246465 +0.882867779574944,-7.2316314836975,-8.39833216826967,0.0894427110626729,51.3291177825014,81.374423451658,-37.7636043827121,4.23606797749979,52.7468822174995,-54.9744234516584,67.3686043827121,2.61803398874989,2.61803398874989,2.61803398874989,83.9284837935035,47.3983612466038,3.87248290044914,4.23606797749979,84.474126088853,42.9289671955649,-1.31797182835312,0.0894427221699743,84.474126088853,42.9289671955649,-1.31797182835312,0.0894427221699743,0.882867779574944,-7.2316314836975,-8.39833216826967,0.168916506680065,19.6018739111479,-16.5289671955653,30.9229718283531,0.447213600616596,0.447213600616596,0.447213600616596 +-30.8921383519967,-15.6342957718304,-22.3916361648925,0.0894426640113997,83.9284837935035,47.3983612466038,3.87248290044914,4.23606797749979,33.2035162064961,-3.29836124660346,0.404517099550908,2.61803398874989,2.61803398874989,2.61803398874989,104.449385355126,45.3598618890274,4.12248821700212,4.23606797749979,85.3569938684279,35.6973357118674,-9.71630399662279,0.0894427401419672,85.3569938684279,35.6973357118674,-9.71630399662279,0.0894427401419672,-30.8921383519967,-15.6342957718304,-22.3916361648925,0.168916578568045,31.7750061315716,8.40266428813293,13.9933039966228,0.447213630569915,0.447213630569915,0.447213630569915 +-46.5672828355649,-23.5712558317934,-11.4345763264077,0.0894423415176199,104.449385355126,45.3598618890274,4.12248821700212,4.23606797749979,-34.3093853551267,-17.3598618890274,-47.1874882170022,2.61803398874989,2.61803398874989,2.61803398874989,83.2450190725399,34.6308772016045,-25.0409833448404,4.23606797749979,54.4648555164312,20.063039940037,-32.1079401615153,0.0894428633239045,54.4648555164312,20.063039940037,-32.1079401615153,0.0894428633239045,-46.5672828355649,-23.5712558317934,-11.4345763264077,0.168917071296133,15.6751444835682,7.93696005996298,-10.9570598384848,0.447213835873017,0.447213835873017,0.447213835873017 +-14.2857101546985,-13.0794717235498,-14.4370928143308,0.0894401311332342,83.2450190725399,34.6308772016045,-25.0409833448404,4.23606797749979,-107.62901907254,-48.6308772016045,-15.4990166551596,2.61803398874989,2.61803398874989,2.61803398874989,16.7266271098996,4.57534218829055,-34.6199024299297,4.23606797749979,7.89757268086638,-3.50821589175639,-43.542516487923,0.0894437076285072,7.89757268086638,-3.50821589175639,-43.542516487923,0.0894437076285072,-14.2857101546985,-13.0794717235498,-14.4370928143308,0.168920448530483,-32.2815726808664,-10.4917841082436,3.00251648792307,0.447215243041414,0.447215243041414,0.447215243041414 +-69.0748476285305,-31.0671593388556,-16.0487021165847,0.0894249819134705,16.7266271098996,4.57534218829055,-34.6199024299297,4.23606797749979,31.6743728901003,-3.17534218829092,-21.7480975700702,2.61803398874989,2.61803398874989,2.61803398874989,36.3024661283198,2.6128727900153,-48.0609659188821,4.23606797749979,-6.38813747383213,-16.5876876153062,-57.9796093022538,0.0894494947213581,-6.38813747383213,-16.5876876153062,-57.9796093022538,0.0894494947213581,-69.0748476285305,-31.0671593388556,-16.0487021165847,0.168943597650733,54.789137473832,17.9876876153058,1.6116093022539,0.447224887917093,0.447224887917093,0.447224887917093 +-53.8718327308938,4.5779937069819,-54.2520135354232,0.0893211936581228,36.3024661283198,2.6128727900153,-48.0609659188821,4.23606797749979,-126.968466128319,-85.9128727900146,12.2359659188821,2.61803398874989,2.61803398874989,2.61803398874989,-42.1683614384211,-50.4842026653597,-40.4987230958277,4.23606797749979,-75.4629851023626,-47.6548469541618,-74.0283114188386,0.0894891667648662,-75.4629851023626,-47.6548469541618,-74.0283114188386,0.0894891667648662,-53.8718327308938,4.5779937069819,-54.2520135354232,0.169102321010081,-15.2030148976367,-35.6451530458375,38.2033114188385,0.447290994878445,0.447290994878444,0.447290994878445 +-0.526650564149875,33.9011404598035,-49.5003384896851,0.0886119791166665,-42.1683614384211,-50.4842026653597,-40.4987230958277,4.23606797749979,-140.511638561579,-21.9157973346417,-92.5332769041723,2.61803398874989,2.61803398874989,2.61803398874989,-129.009329884417,-64.0289103087227,-97.6874333130118,4.23606797749979,-129.334817833256,-43.0768532471799,-128.280324954262,0.089761398771559,-129.334817833256,-43.0768532471799,-128.280324954262,0.089761398771559,-0.526650564149875,33.9011404598035,-49.5003384896851,0.170192903770381,-53.3451821667439,-29.3231467528216,-4.75167504573814,0.447744098732229,0.447744098732229,0.447744098732229 +86.121881038444,10.8254276724256,71.8859980663682,0.0838517404088302,-129.009329884417,-64.0289103087227,-97.6874333130118,4.23606797749979,-87.5006701155827,77.9289103087241,-201.479566686988,2.61803398874989,2.61803398874989,2.61803398874989,-183.08771805424,-15.8661950316891,-222.208653564172,4.23606797749979,-129.861468397406,-9.17571278737644,-177.780663443947,0.0916421794821756,-129.861468397406,-9.17571278737644,-177.780663443947,0.0916421794821756,86.121881038444,10.8254276724256,71.8859980663682,0.177794334647952,-86.6485316025939,23.0757127873779,-121.386336556053,0.450849718747371,0.450849718747371,0.450849718747371 +66.2882936794809,32.6751425574754,67.8073326887892,0.0557280900008412,-183.08771805424,-15.8661950316891,-222.208653564172,4.23606797749979,159.181718054241,-4.33380496831163,120.392653564172,2.61803398874989,2.61803398874989,2.61803398874989,-84.7080059091162,-18.5446338027188,-147.801901665722,4.23606797749979,-43.7395873589622,1.64971488504914,-105.894665377579,0.105244939971399,-43.7395873589622,1.64971488504914,-105.894665377579,0.105244939971399,66.2882936794809,32.6751425574754,67.8073326887892,0.23606797749979,19.8335873589632,-21.8497148850499,4.07866537757892,0.472135954999579,0.472135954999579,0.472135954999579 +0,0,0,0,-84.7080059091162,-18.5446338027188,-147.801901665722,4.23606797749979,173.545005909116,85.5446338027188,177.521901665722,2.61803398874989,2.61803398874989,2.61803398874989,22.5487063205186,34.3248574425246,-38.0873326887895,4.23606797749979,22.5487063205186,34.3248574425246,-38.0873326887895,0.23606797749979,22.5487063205186,34.3248574425246,-38.0873326887895,0.23606797749979,0,0,0,1,66.2882936794809,32.6751425574754,67.8073326887892,0.618033988749895,0.618033988749895,0.618033988749895 diff --git a/statsmodels/tsa/statespace/tests/results/results_smoothing_generalobscov_R.csv b/statsmodels/tsa/statespace/tests/results/results_smoothing_generalobscov_R.csv new file mode 100644 index 0000000..c3c58cf --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_smoothing_generalobscov_R.csv @@ -0,0 +1,203 @@ +"r1","r2","r3","detN","m1","m2","m3","detPmu","v1","v2","v3","F1","F2","F3","a1","a2","a3","detP","alphahat1","alphahat2","alphahat3","detV","muhat1","muhat2","muhat3","detVmu","etahat1","etahat2","etahat3","detVeta","epshat1","epshat2","epshat3","Veps1","Veps2","Veps3" +-60.4130641041253,17.371792162621,-5.80235156992385,0.191876003622778,0,0,0,1000000000000005632,68.4519999999998,26.299978095363,23.9609336880604,1000000.14,1000000.7699999,1000001.93999826,68.4519700203032,26.2999286121422,23.9608872039809,3.88239184935845,62.6519538712082,13.2651957761592,3.69143767840748,1.52759890500394e-12,62.6519538712082,13.2651957761592,3.69143767840748,0.0196604970316213,-60.4130641041253,17.371792162621,-5.80235156992385,3.63170265012576e-13,5.80004612935578,-0.222444065881369,0,0.0669216741371289,0.0367896942075952,0 +8.5609321698145,-27.0925802404195,14.4459073493465,0.251440589577715,68.4519700203032,-130.161717148551,39.8129999999998,3.88239184935845,-71.7649700203033,27.6825162934052,-13.7185836910704,1.27999962794083,2.21999862436255,2.40343397182292,2.40154735303449,30.9287823946748,-1.68998256368471,2.6615555378697,2.23888976901368,30.6369879388293,-2.11091389135504,-9.9037357871028e-19,2.23888976901368,30.6369879388293,-2.11091389135504,0.00876276369330984,8.5609321698145,-27.0925802404195,14.4459073493465,-1.93448031939051e-18,-5.55188976901379,0.153045818916419,0,0.0525030980009965,0.0361252003709357,0 +43.6156995073633,-4.59861192197593,-7.59792335131537,0.269914345966658,2.40154735303449,25.4395313020246,-61.1459999999999,2.6615555378697,7.31445264696586,-32.0461432531737,32.6503646198948,1.22420281435611,2.00462686512955,2.27973141597836,10.1895457267978,2.93417124329864,11.7247967597997,2.39235643207445,10.7998219388282,3.54440769840975,12.3349934579915,-1.58171199137481e-18,10.7998219388282,3.54440769840975,12.3349934579915,0.00647741225621887,43.6156995073633,-4.59861192197593,-7.59792335131537,-1.66348867393099e-18,-1.08382193882783,0.832899590339665,0,0.0480598417698749,0.0360411989685346,0 +-62.4834851413326,35.4031418451916,-19.6502311682846,0.275646216934977,10.1895457267978,-20.356218989382,16.0460000000002,2.39235643207446,52.3054542732021,-6.64506088374594,-6.07745123874716,1.21191658000763,1.95445361156385,2.24702547842253,57.9191673198549,6.59978011341703,16.5413929069792,2.31616639465096,54.4155214461915,-1.05420422356617,4.73707010667613,4.23941409916021e-20,54.4155214461915,-1.05420422356617,4.73707010667613,0.00585890477079599,-62.4834851413326,35.4031418451916,-19.6502311682846,4.03338588112015e-19,8.07947855380842,-0.61317532799598,0,0.0466812316888443,0.036015150981544,0 +13.5710975146023,-39.0031565934485,17.1565892985015,0.277424650678342,57.9191673198549,-125.786888046251,61.261,2.31616639465096,-71.2281673198551,43.3151186915999,-40.7199302532061,1.20843927332733,1.94006809564407,2.23733609375735,-7.14972852167646,36.4806379505362,-11.5679955772515,2.2931667889,-8.0679636951411,34.3489376216254,-14.9131610616084,-1.68710325920516e-18,-8.0679636951411,34.3489376216254,-14.9131610616084,0.00567529935466633,13.5710975146023,-39.0031565934485,17.1565892985015,1.06065439157054e-18,-5.2410363048591,0.0305739323383342,0,0.0462534888631389,0.0360070690466217,0 +-33.6993900385922,25.8883269673938,-9.39595602662078,0.277976447220398,-7.14972852167646,52.822874571511,-91.6790000000004,2.2931667889,11.7817285216765,-48.1109662586634,39.7100386262499,1.20738957332198,1.93570923532016,2.23437174734936,6.11485584302362,-3.59638971486799,3.74736472724076,2.28609049743526,5.5031338194612,-4.65421897182304,2.24342823689306,-2.61044589171206e-19,5.5031338194612,-4.65421897182304,2.24342823689306,0.00561911835986421,-33.6993900385922,25.8883269673938,-9.39595602662078,1.46181916565292e-18,-0.871133819461143,-0.45461801226591,0,0.046120772638543,0.0360045614560187,0 +45.1875291724017,-20.9904346259196,14.9376015757594,0.278147653724413,6.11485584302362,-17.5732030703505,17.0550000000003,2.28609049743526,-42.5208558430236,22.3233810018457,-32.1333396260373,1.20706661199521,1.93436661916829,2.23345597810753,-31.4946696297614,13.8646910814885,-18.5929482072618,2.2839006359552,-28.196256219131,21.2341079955707,-7.15252778972772,2.08605334382892e-19,-28.196256219131,21.2341079955707,-7.15252778972772,0.00560176235869326,45.1875291724017,-20.9904346259196,14.9376015757594,2.11911932942646e-18,-8.20974378086897,-0.0689793535843869,0,0.0460795946334135,0.036003783423197,0 +31.0636752236054,15.9528877465835,-4.06489973043844,0.278200774149757,-31.4946696297614,85.8525073780859,-77.8170000000001,2.28390063595519,48.1426696297615,-32.84219501801,21.7370604963373,1.2069666669078,1.93395098145769,2.23317222293359,13.5199063725174,-7.45768659909631,-4.14627957070991,2.28322173316308,16.9912729532707,0.243673369651153,7.78507378603169,8.34135469957961e-19,16.9912729532707,0.243673369651153,7.78507378603169,0.00559638453492584,31.0636752236054,15.9528877465835,-4.06489973043844,1.02294546636802e-18,-0.343272953270572,0.0409505235387174,0,0.046066818289665,0.0360035420221202,0 +-2.97209717322442,-11.3947864094638,13.5955243542965,0.278217255881014,13.5199063725174,-38.3603297362789,24.2890000000001,2.28322173316308,39.2210936274826,19.0064013415503,-13.9748980048558,1.20693568184343,1.93382211110866,2.23308421858808,46.902611561207,13.1735623827113,-1.17348679578409,2.28301114196394,48.0549481768762,16.1965611162346,3.72017405559326,-1.0321328822307e-18,48.0549481768762,16.1965611162346,3.72017405559326,0.00559471664855928,-2.97209717322442,-11.3947864094638,13.5955243542965,-1.3151846202178e-18,4.68605182312382,-0.307536711946304,0,0.0460628541598082,0.0360034671223496,0 +12.2760419868165,27.5739113945259,-18.2762191977644,0.278222369685422,46.902611561207,-94.0324069000474,19.3820000000002,2.28301114196393,-0.4886115612072,-4.18606325739492,28.6577544414832,1.20692607047943,1.93378213502592,2.23305691691473,44.323357994912,3.49470367713645,15.4610493593608,2.28294580667876,45.0828510036517,4.80177470677083,17.3156984098898,-2.08504813395222e-19,45.0828510036517,4.80177470677083,17.3156984098898,0.00559419921873726,12.2760419868165,27.5739113945259,-18.2762191977644,2.26502362524494e-18,1.33114899634801,0.955599015862237,0,0.0460616242049923,0.0360034438831176,0 +-5.98695660296599,-17.643351106878,11.6722543892096,0.278223956350991,44.323357994912,-97.8158288826623,52.7949999999998,2.28294580667875,15.0876420050881,27.2156614512552,-40.1005113300854,1.2069230885827,1.93376973243726,2.233048446335,57.7246522436548,32.9564689241936,-0.16471439526736,2.28292553551806,57.3588929904682,32.3756861012968,-0.960520787874575,1.16761500091598e-18,57.3588929904682,32.3756861012968,-0.960520787874575,0.00559403868168838,-5.98695660296599,-17.643351106878,11.6722543892096,-7.30651125487663e-20,2.05210700953185,-0.566216408798121,0,0.0460612425855945,0.0360034366726561,0 +-16.4707031693409,11.8750486079756,-8.36219961470747,0.278224448647417,57.7246522436548,-98.9855933470172,-8.35299999999989,2.28292553551806,-4.3136522436547,-11.5011824520887,30.3687115731232,1.20692216340869,1.93376588435301,2.23304581819186,52.6086795119313,17.5489120599992,15.1081446080668,2.28291924601032,51.3719363875022,14.7323349944188,10.711733601335,3.00242903632835e-18,51.3719363875022,14.7323349944188,10.711733601335,0.00559398887230786,-16.4707031693409,11.8750486079756,-8.36219961470747,-2.15541930367486e-18,2.03906361249783,0.406948177014958,0,0.0460611241801352,0.0360034344354586,0 +-6.03318850460306,-9.95317980303403,5.55182889853502,0.278224601392756,52.6086795119313,-102.699498252987,32.6189999999997,2.28291924601032,-19.1406795119315,12.8959701938364,-16.8271848801058,1.2069218763561,1.93376469041151,2.23304500275822,35.5118510433467,27.8727217476812,4.26959245201572,2.28291729456254,34.9012332181613,26.6073836023944,2.3495339866275,-1.03208396401399e-18,34.9012332181613,26.6073836023944,2.3495339866275,0.00559397341795779,-6.03318850460306,-9.95317980303403,5.55182889853502,1.27863829084846e-18,-1.43323321816145,-0.231421960882619,0,0.0460610874423465,0.0360034337413209,0 +-18.1303577834388,17.8620200251303,-7.8026021663001,0.278224648785216,35.5118510433467,-53.2972234942541,-15.964,2.28291729456255,-7.17385104334652,-9.71988998318068,13.3873153497471,1.20692178729219,1.93376431996675,2.23304474975305,29.2361699200385,17.3617891836443,8.94840844725022,2.28291668908519,28.8680447135582,16.6542037993604,7.90136288516252,3.12752620726935e-20,28.8680447135582,16.6542037993604,7.90136288516252,0.00559396862292586,-18.1303577834388,17.8620200251303,-7.8026021663001,-2.00928860666767e-18,-0.530044713558036,-0.0426730255133449,0,0.0460610760436736,0.03600343352595,0 +28.361580406535,-24.6873855214526,12.854648550559,0.278224663489725,29.2361699200385,-49.4637420621579,3.46100000000001,2.28291668908519,-21.7201699200384,18.1729205906444,-21.2590905406846,1.20692175965826,1.93376420502852,2.2330446712529,9.55366593555359,31.9476941671146,-3.85427760132395,2.28291650122312,10.7376869301194,34.5162238244907,0.0987607188624189,-5.52529577525762e-19,10.7376869301194,34.5162238244907,0.0987607188624189,0.00559396713516671,28.361580406535,-24.6873855214526,12.854648550559,2.04582108379505e-18,-3.22168693011935,0.0476320157819225,0,0.0460610725069951,0.0360034334591267,0 +1.14089493279609,10.7552815740837,-5.0563317846283,0.278224668052109,9.55366593555359,10.1107434572778,-58.1959999999996,2.28291650122312,30.9703340644463,-30.7319813179175,27.0474026966045,1.20692175108425,1.93376416936653,2.23304464689657,38.5925578162708,8.72236334625894,11.2471688762468,2.28291644293496,39.0992673366544,9.82883830303811,12.9534092694215,-1.08420895039645e-18,39.0992673366544,9.82883830303811,12.9534092694215,0.00559396667355808,1.14089493279609,10.7552815740837,-5.0563317846283,7.30650382305466e-20,1.4247326633455,0.0146298950294805,0,0.0460610714096659,0.0360034334383933,0 +17.5673840418995,2.29823486857446,-2.4829143047506,0.278224669467685,38.5925578162708,-79.4891973766456,32.3949999999996,2.28291644293496,0.767442183729365,9.68314505551498,-14.1255534432991,1.20692174842398,1.93376415830164,2.23304463933951,39.2801837395761,18.6251851761374,4.93918661269869,2.28291642484983,40.2401622694505,20.5841198771218,7.89707748479316,1.45951203527929e-18,40.2401622694505,20.5841198771218,7.89707748479316,0.00559396653033434,17.5673840418995,2.29823486857446,-2.4829143047506,1.97275602823365e-18,-0.880162269450366,0.127679595907648,0,0.0460610710691966,0.0360034334319604,0 +-29.985572898998,0.0576907872312105,8.11095447346079,0.278224669906897,39.2801837395761,-71.1580919428937,6.96900000000005,2.28291642484983,20.6048162604237,0.368101616953126,-6.13045053330148,1.20692174759858,1.93376415486853,2.23304463699477,58.0268736866308,22.776043131095,4.98221257555911,2.28291641923854,57.80754631135,22.8823547456963,5.41416318004256,-4.6912886715308e-19,57.80754631135,22.8823547456963,5.41416318004256,0.00559396648589612,-29.985572898998,0.0576907872312105,8.11095447346079,5.84520304294909e-19,2.0774536886498,-0.730820319753068,0,0.0460610709635587,0.0360034334299644,0 +41.4426971684286,8.69833520891734,-11.0450267505944,0.278224670043172,58.0268736866308,-109.856811009775,17.457,2.28291641923854,-33.3918736866306,6.83746440262155,14.1054474004862,1.20692174734248,1.93376415380333,2.23304463626727,26.2262089593261,20.0003298747728,9.24145079021985,2.28291641749752,27.8219734123519,22.9400455329275,13.5251176535033,-1.74098934990388e-18,27.8219734123519,22.9400455329275,13.5251176535033,0.00559396647210824,41.4426971684286,8.69833520891734,-11.0450267505944,-1.16904060836214e-18,-3.1869734123517,1.14446512387636,0,0.0460610709307824,0.0360034334293451,0 +-29.2342847738409,8.07595421010146,1.11419319404427,0.278224670085454,26.2262089593261,-39.9452906036869,-4.53299999999967,2.28291641749752,47.0527910406739,1.84404084460698,-23.7116541049436,1.20692174726302,1.93376415347283,2.23304463604154,69.8207457011277,32.4635120816315,3.57427846213509,2.28291641695733,69.2646705807805,31.6383807418448,2.48009090290894,-8.34006873977915e-19,69.2646705807805,31.6383807418448,2.48009090290894,0.00559396646783027,-29.2342847738409,8.07595421010146,1.11419319404427,-1.09597557027326e-18,4.01432941921948,-0.913990842917801,0,0.0460610709206129,0.036003433429153,0 +4.61910731588447,-3.35616172986736,2.33056922438061,0.278224670098573,69.8207457011277,-127.12676380666,8.46799999999985,2.28291641695733,-31.4797457011278,15.8162520640218,1.30720566769385,1.20692174723837,1.93376415337029,2.23304463597151,39.6904467367272,38.9411406826028,2.38783462847862,2.28291641678972,40.0303858069396,39.7143349519463,3.59428409695322,-9.27832647221885e-19,40.0303858069396,39.7143349519463,3.59428409695322,0.00559396646650294,4.61910731588447,-3.35616172986736,2.33056922438061,3.65325190084239e-19,-1.6893858069397,0.347118321058566,0,0.0460610709174576,0.0360034334290934,0 +-28.7100941927307,-16.8357218967442,17.824650399242,0.278224670102643,39.6904467367272,-51.7798804299166,-35.8039999999997,2.28291641678972,6.19155326327282,-2.81703354473566,5.05943449720126,1.20692174723072,1.93376415333847,2.23304463594978,45.0708230089028,36.5943436599445,5.97586431098628,2.28291641673772,44.6494931228241,36.3581732220789,5.92485332133383,7.92306530191142e-19,44.6494931228241,36.3581732220789,5.92485332133383,0.00559396646609111,-28.7100941927307,-16.8357218967442,17.824650399242,2.55727633057482e-19,1.23250687717601,-0.675331798481203,0,0.0460610709164785,0.0360034334290749,0 +60.3580976640088,10.487344768801,-11.698408126407,0.278224670103906,45.0708230089028,-66.4246803604047,-22.1419999999999,2.28291641673772,-35.5828230089029,-16.9401002729114,31.3864064982511,1.20692174722835,1.9337641533286,2.23304463594304,12.9650316499879,13.6171050624144,14.9131784748409,2.28291641672159,15.9393989300933,19.5224513253347,23.7495037205759,5.42104468021118e-19,15.9393989300933,19.5224513253347,23.7495037205759,0.00559396646596336,60.3580976640088,10.487344768801,-11.698408126407,3.03219907767609e-18,-6.4513989300935,1.22360337202189,0,0.0460610709161749,0.0360034334290691,0 +-24.7053028666052,2.71929355901336,1.09788998463266,0.278224670104298,12.9650316499879,-16.0172529947007,0.643999999999837,2.28291641672158,71.3289683500125,6.6117362706581,-23.2646916754764,1.20692174722761,1.93376415332554,2.23304463594095,77.3207788483746,32.0246874292135,15.057596010052,2.28291641671658,76.2974965941021,30.0097960941357,12.0510955941689,1.66801374775304e-18,76.2974965941021,30.0097960941357,12.0510955941689,0.00559396646592371,-24.7053028666052,2.71929355901336,1.09788998463266,-2.55727633056875e-19,7.99650340589819,-0.68751816475982,0,0.0460610709160806,0.0360034334290673,0 +19.4392564885936,2.01378984338396,-3.0446768018261,0.27822467010442,77.3207788483746,-144.708521367071,28.3289999999996,2.28291641671658,-29.6117788483748,3.53827934314791,-0.149437503089255,1.20692174722738,1.93376415332459,2.2330446359403,50.6708800113515,30.9026177588145,10.4173555062777,2.28291641671503,51.5921937274969,32.7290896531491,13.1489855788015,-4.58703780631717e-19,51.5921937274969,32.7290896531491,13.1489855788015,0.00559396646591137,19.4392564885936,2.01378984338396,-3.0446768018261,0,-3.88319372749705,0.34678172398681,0,0.0460610709160513,0.0360034334290668,0 +13.8396780388182,22.5517458844228,-17.2081862699726,0.278224670104457,50.6708800113515,-84.9165365528462,-0.716999999999754,2.28291641671503,21.6541199886483,-1.2119816499733,-7.06860797550205,1.20692174722731,1.93376415332429,2.23304463594009,70.6519004041071,34.3504536567035,9.69900690929975,2.28291641671454,71.0314502160904,34.742879496533,10.1043087769754,-1.6680137477513e-19,71.0314502160904,34.742879496533,10.1043087769754,0.00559396646590756,13.8396780388182,22.5517458844228,-17.2081862699726,-6.94117861154227e-19,1.29354978390938,0.300435283102661,0,0.0460610709160423,0.0360034334290666,0 +-0.295575189749479,-38.7918623787409,20.2938504322678,0.278224670104469,70.6519004041071,-127.139604409827,11.6499999999998,2.28291641671455,17.0770995958931,22.3965284962444,-35.0133295912242,1.20692174722729,1.9337641533242,2.23304463594003,85.9919636449693,59.6284169708086,-3.55712970335236,2.2829164167144,84.8711282549086,57.2946253809558,-7.10387749299715,6.67205499100483e-19,84.8711282549086,57.2946253809558,-7.10387749299715,0.0055939664659064,-0.295575189749479,-38.7918623787409,20.2938504322678,-2.33808121651944e-18,2.85787174509165,-0.526903655450804,0,0.0460610709160394,0.0360034334290666,0 +-65.5421067873396,1.29624496218875,-0.760403288282961,0.278224670104473,85.9919636449693,-136.924642789121,-36.8220000000001,2.28291641671439,5.41703635503031,-27.5071034429062,59.185966798257,1.20692174722728,1.93376415332417,2.23304463594001,88.9430001789036,27.8518897316757,27.5207792844479,2.28291641671435,84.5755530651591,18.5027630022149,13.1899729392707,-4.17003436937796e-20,84.5755530651591,18.5027630022149,13.1899729392707,0.00559396646590604,-65.5421067873396,1.29624496218875,-0.760403288282961,2.70340640660058e-18,6.83344693484051,0.0779297181494876,0,0.0460610709160385,0.0360034334290665,0 +6.90667218759731,9.37655307491356,-13.5525660377701,0.278224670104474,88.9430001789036,-175.446396391533,60.7600000000001,2.28291641671435,-76.2420001789036,7.40455308882818,3.40314117182167,1.20692174722728,1.93376415332416,2.23304463594001,20.2018348235981,22.9246112913715,17.5123877591449,2.28291641671433,19.0334462778196,19.7990079644036,12.4295696509877,1.66801374775112e-19,19.0334462778196,19.7990079644036,12.4295696509877,0.0055939664659059,6.90667218759731,9.37655307491356,-13.5525660377701,5.47987785121746e-19,-6.33244627781955,0.675154956326764,0,0.0460610709160383,0.0360034334290665,0 +5.97995928911207,-17.8026122114787,5.62781628793033,0.278224670104474,20.2018348235981,-23.251011162567,-8.13499999999999,2.28291641671433,4.97516517640205,2.16626204400245,-26.8508645745261,1.20692174722728,1.93376415332416,2.23304463594,26.8536456404593,31.3608400501049,2.33403445975066,2.28291641671433,25.9401184654169,29.1755610393172,-1.12299638678237,2.91902405856447e-19,25.9401184654169,29.1755610393172,-1.12299638678237,0.00559396646590587,5.97995928911207,-17.8026122114787,5.62781628793033,1.46130076032464e-18,-0.763118465416753,-0.43129026122176,0,0.0460610709160381,0.0360034334290665,0 +4.19256235365117,7.77967177167509,-8.84221881030122,0.278224670104474,26.8536456404593,-30.018921413802,-33.5339999999999,2.28291641671433,4.36535435954076,-23.1359632094062,15.0766021626046,1.20692174722728,1.93376415332416,2.23304463594,32.4654728764084,12.889542391603,6.99261190679731,2.28291641671433,31.920077754529,11.3729488278385,4.50481990114796,1.00080824865064e-18,31.920077754529,11.3729488278385,4.50481990114796,0.00559396646590583,4.19256235365117,7.77967177167509,-8.84221881030122,-1.68049587437334e-18,-0.701077754528906,0.129514611084788,0,0.0460610709160381,0.0360034334290665,0 +-31.9013587605154,21.2102236709779,-3.54619389752769,0.278224670104474,32.4654728764084,-61.3172527544735,13.6789999999999,2.28291641671432,1.75452712359135,0.337190611887024,-21.2470692750927,1.20692174722728,1.93376415332416,2.23304463594,35.9894796713131,18.3901977532653,-5.73908416478288,2.28291641671433,36.1126401081801,19.1526205995136,-4.33739890915326,-2.50202062162664e-18,36.1126401081801,19.1526205995136,-4.33739890915326,0.00559396646590583,-31.9013587605154,21.2102236709779,-3.54619389752769,-1.8266259504058e-19,-1.89264010818033,-0.926586066529923,0,0.0460610709160382,0.0360034334290665,0 +26.5631192936113,-28.900008566029,18.9448635743301,0.278224670104474,35.9894796713131,-63.871470066879,-6.53000000000036,2.28291641671433,-35.1734796713129,27.9069677773767,-14.3242340720086,1.20692174722728,1.93376415332416,2.23304463594,2.41472298228472,36.2025789377722,-14.4075651067396,2.28291641671433,4.2112813476647,40.3628442704915,-7.88359280668095,-1.41781168558843e-18,4.2112813476647,40.3628442704915,-7.88359280668095,0.00559396646590583,26.5631192936113,-28.900008566029,18.9448635743301,3.65325190081159e-20,-3.39528134766443,0.197798809884094,0,0.0460610709160382,0.0360034334290665,0 +0.971413386367604,6.34839030871946,2.56036723107124,0.278224670104474,2.41472298228472,30.6832121211214,-84.3979999999992,2.28291641671433,28.8552770177153,-34.7752522695007,36.5327428698933,1.20692174722728,1.93376415332416,2.23304463594,29.2391183284623,7.77375686469603,5.21839540092977,2.28291641671433,30.7744006412759,11.4628357044625,11.0612707676491,-3.3360274955022e-19,30.7744006412759,11.4628357044625,11.0612707676491,0.00559396646590583,0.971413386367604,6.34839030871946,2.56036723107124,3.65325190081159e-20,0.495599358724032,-0.0956342386889007,0,0.0460610709160382,0.0360034334290665,0 +44.8349655881013,29.4731575968012,-21.3176503944989,0.278224670104474,29.2391183284623,-59.0585136003607,18.91,2.28291641671433,0.904881671537463,6.97901170354007,-1.31178703122816,1.20692174722728,1.93376415332416,2.23304463594,29.2027111969491,12.8372082491264,6.21670530130357,2.28291641671433,31.7458140276436,17.811226013182,13.6216379987204,-3.3360274955022e-19,31.7458140276436,17.811226013182,13.6216379987204,0.00559396646590583,44.8349655881013,29.4731575968012,-21.3176503944989,3.65325190081159e-20,-1.60181402764377,0.950063192860834,0,0.0460610709160382,0.0360034334290665,0 +-11.131145480946,-17.1317820767685,13.2555813274083,0.278224670104474,29.2027111969491,-53.9118459153287,9.74499999999995,2.28291641671433,52.840288803051,25.7863183588085,-47.4235084354923,1.20692174722728,1.93376415332416,2.23304463594,76.8702768509806,47.5720458097206,-7.41018523153948,2.28291641671433,76.5807796157448,47.2843836099832,-7.69601239577857,-3.3360274955022e-19,76.5807796157448,47.2843836099832,-7.69601239577857,0.00559396646590583,-11.131145480946,-17.1317820767685,13.2555813274083,3.65325190081159e-20,5.46222038425528,-0.869458773995159,0,0.0460610709160382,0.0360034334290665,0 +-35.0329001456919,23.3667046319357,-13.0416905904352,0.278224670104474,76.8702768509806,-128.131444135378,-25.6840000000001,2.28291641671433,-7.8852768509809,-5.84621817176181,35.7148053081632,1.20692174722728,1.93376415332416,2.23304463594,67.3101721771079,34.2279829636288,11.8497937501488,2.28291641671433,65.4496341347988,30.1526015332147,5.55956893162973,-3.3360274955022e-19,65.4496341347988,30.1526015332147,5.55956893162973,0.00559396646590583,-35.0329001456919,23.3667046319357,-13.0416905904352,3.65325190081159e-20,3.53536586520085,0.46656220346934,0,0.0460610709160382,0.0360034334290665,0 +-9.31345054588598,-35.3717530612174,21.6449444234505,0.278224670104474,67.3101721771079,-119.623839155475,10.7039999999992,2.28291641671433,-39.0411721771077,28.9533372898374,-26.7697924608361,1.20692174722728,1.93376415332416,2.23304463594,31.3551720647052,55.2465856425457,-4.96600077961318,2.28291641671433,30.4167339891069,53.5193061651504,-7.48212165880549,-3.3360274955022e-19,30.4167339891069,53.5193061651504,-7.48212165880549,0.00559396646590583,-9.31345054588598,-35.3717530612174,21.6449444234505,3.65325190081159e-20,-2.1477339891067,-0.410199904335279,0,0.0460610709160382,0.0360034334290665,0 +37.8845233907852,-3.74746968210978,-5.65546275500405,0.278224670104474,31.3551720647052,-16.4223790767804,-84.1039999999994,2.28291641671433,-13.3291720647053,-38.1317649473823,47.1143035584496,1.20692174722728,1.93376415332416,2.23304463594,20.3448748120267,17.0577018619407,12.7415289118545,2.28291641671433,21.103283443221,18.1475531039331,14.162822764645,-3.3360274955022e-19,21.103283443221,18.1475531039331,14.162822764645,0.00559396646590583,37.8845233907852,-3.74746968210978,-5.65546275500405,3.65325190081159e-20,-3.07728344322112,0.886237623429488,0,0.0460610709160382,0.0360034334290665,0 +-43.9370130181363,8.14423768667405,-3.99451160851674,0.278224670104474,20.3448748120267,-29.4448691369774,-1.02900000000016,2.28291641671433,45.462125187974,-5.10294284380792,-4.23417715118167,1.20692174722728,1.93376415332416,2.23304463594,61.6386124008275,20.0641969895952,17.1847815783635,2.28291641671433,58.9878068340062,14.4000834218233,8.50736000964095,-3.3360274955022e-19,58.9878068340062,14.4000834218233,8.50736000964095,0.00559396646590583,-43.9370130181363,8.14423768667405,-3.99451160851674,3.65325190081159e-20,6.81919316599453,-0.586810658382112,0,0.0460610709160382,0.0360034334290665,0 +9.80073654134174,-14.0335019669007,0.534259524857727,0.278224670104474,61.6386124008275,-120.824059926582,38.6950000000006,2.28291641671433,-49.2786124008278,15.7455496408129,-3.98062394728189,1.20692174722728,1.93376415332416,2.23304463594,16.2863905247449,25.6452980987945,9.47920567284363,2.28291641671433,15.0507938158699,22.5443211084973,4.51284840112421,-3.3360274955022e-19,15.0507938158699,22.5443211084973,4.51284840112421,0.00559396646590583,9.80073654134174,-14.0335019669007,0.534259524857727,3.65325190081159e-20,-2.69079381587022,0.506064756348998,0,0.0460610709160382,0.0360034334290665,0 +-39.8180171703107,24.7405730490216,-14.5208367316459,0.278224670104474,16.2863905247449,-11.5807373863366,-25.5250000000005,2.28291641671433,10.6316094752548,-16.8249795601003,8.85315565734902,1.20692174722728,1.93376415332416,2.23304463594,27.1600941445069,13.6004501892421,12.9178062339776,2.28291641671433,24.8515303572116,8.51081914159658,5.04710792598194,-3.3360274955022e-19,24.8515303572116,8.51081914159658,5.04710792598194,0.00559396646590583,-39.8180171703107,24.7405730490216,-14.5208367316459,3.65325190081159e-20,2.06646964278802,-0.334178325112437,0,0.0460610709160382,0.0360034334290665,0 +10.8741445066582,-10.3604183217289,4.05101884988355,0.278224670104474,27.1600941445069,-48.4797649982024,12.8770000000004,2.28291641671433,-47.2770941445062,25.941251213039,-32.6708530181755,1.20692174722728,1.93376415332416,2.23304463594,-15.0998520047558,33.0459718856311,-9.75120422398146,2.28291641671433,-14.9664868130991,33.2513921906182,-9.473728805664,-3.3360274955022e-19,-14.9664868130991,33.2513921906182,-9.473728805664,0.00559396646590583,10.8741445066582,-10.3604183217289,4.05101884988355,3.65325190081159e-20,-5.15051318690022,-0.0787906205604691,0,0.0460610709160382,0.0360034334290665,0 +12.3810917100888,-9.44552537718772,8.23485753553508,0.278224670104474,-15.0998520047558,67.559919325073,-90.9429999999995,2.28291641671433,8.41185200475572,-19.6738628986449,4.42455549848894,1.20692174722728,1.93376415332416,2.23304463594,-5.37521356711606,19.8988664965572,-10.1240534397695,2.28291641671433,-4.09234230644087,22.8909738688893,-5.42270995578046,-3.3360274955022e-19,-4.09234230644087,22.8909738688893,-5.42270995578046,0.00559396646590583,12.3810917100888,-9.44552537718772,8.23485753553508,3.65325190081159e-20,-2.59565769355923,-0.35804199789685,0,0.0460610709160382,0.0360034334290665,0 +26.378770002237,4.41653037191922,-3.41070925839786,0.278224670104474,-5.37521356711606,32.1850689356796,-55.2969999999999,2.28291641671433,13.0912135671155,-12.4223750650443,13.3472861010464,1.20692174722728,1.93376415332416,2.23304463594,6.63940586031065,10.0027996233026,-2.42380661370611,2.28291641671433,8.28874940364793,13.4454484917016,2.81214757975462,-3.3360274955022e-19,8.28874940364793,13.4454484917016,2.81214757975462,0.00559396646590583,26.378770002237,4.41653037191922,-3.41070925839786,3.65325190081159e-20,-0.572749403648495,0.363693002352131,0,0.0460610709160382,0.0360034334290665,0 +-66.6996499696644,3.53341538404095,16.6114807377459,0.278224670104474,6.63940586031065,-5.17298520026463,-15.7900000000006,2.28291641671433,31.3305941396896,1.8746703561135,-9.51320622236006,1.20692174722728,1.93376415332416,2.23304463594,34.9817708479736,17.2349270379615,-2.16691677205055,2.28291641671433,34.6675194058849,17.8619788636208,-0.598561678643236,-3.3360274955022e-19,34.6675194058849,17.8619788636208,-0.598561678643236,0.00559396646590583,-66.6996499696644,3.53341538404095,16.6114807377459,3.65325190081159e-20,3.30248059411535,-1.51050593588436,0,0.0460610709160382,0.0360034334290665,0 +133.763148899323,-2.58781413940143,-8.42077717812596,0.278224670104474,34.9817708479736,-62.7234063288354,-1.65499999999992,2.28291641671433,-80.6037708479739,6.1952637675947,17.2664256902077,1.20692174722728,1.93376415332416,2.23304463594,-38.7663305733353,7.67888746750815,-4.68589449164871,2.28291641671433,-32.0321305637795,21.3953942476617,16.0129190591027,-3.3360274955022e-19,-32.0321305637795,21.3953942476617,16.0129190591027,0.00559396646590583,133.763148899323,-2.58781413940143,-8.42077717812596,3.65325190081159e-20,-13.5898694362208,2.16716446370004,0,0.0460610709160382,0.0360034334290665,0 +-75.2782611564628,9.13802731170567,11.3103157798737,0.278224670104474,-38.7663305733353,96.2876430637031,-58.8100000000003,2.28291641671433,156.145330573335,-14.9967401587798,-17.3431871116234,1.20692174722728,1.93376415332416,2.23304463594,102.979943905642,20.3562771257957,9.44061034594965,2.28291641671433,101.731018335544,18.8075801082603,7.59214188097674,-3.3360274955022e-19,101.731018335544,18.8075801082603,7.59214188097674,0.00559396646590583,-75.2782611564628,9.13802731170567,11.3103157798737,3.65325190081159e-20,15.647981664456,-1.97439534130268,0,0.0460610709160382,0.0360034334290665,0 +10.6777866983317,-0.237022380107688,-3.47783145854618,0.278224670104474,102.979943905642,-215.026451801386,71.708,2.28291641671433,-78.1669439056418,35.3388268780699,26.0833551201421,1.20692174722728,1.93376415332416,2.23304463594,26.5349538977386,28.3756419551613,19.6803300125836,2.28291641671433,26.4527571790811,27.945607419966,18.9024576608504,-3.3360274955022e-19,26.4527571790811,27.945607419966,18.9024576608504,0.00559396646590583,10.6777866983317,-0.237022380107688,-3.47783145854618,3.65325190081159e-20,-1.63975717908102,1.50240898936234,0,0.0460610709160382,0.0360034334290665,0 +-19.1059418855991,32.6435848829211,-12.1488883485593,0.278224670104474,26.5349538977386,-32.2756812396698,-10.5360000000004,2.28291641671433,8.57904610226185,-9.1676905787065,-10.7351225938528,1.20692174722728,1.93376415332416,2.23304463594,36.4015559298598,25.8544216436842,12.445287357509,2.28291641671433,37.1305438774128,27.7085850398583,15.4246262023043,-3.3360274955022e-19,37.1305438774128,27.7085850398583,15.4246262023043,0.00559396646590583,-19.1059418855991,32.6435848829211,-12.1488883485593,3.65325190081159e-20,-2.01654387741234,-0.599341891487241,0,0.0460610709160382,0.0360034334290665,0 +57.4776474864233,-31.207025597578,18.6793013184214,0.278224670104474,36.4015559298598,-57.349134767424,-2.86199999999951,2.28291641671433,-24.0805559298599,30.7860416966629,-38.6403168655823,1.20692174722728,1.93376415332416,2.23304463594,14.5476511001392,52.69816113258,-8.55532883497935,2.28291641671433,18.0246019918137,60.3521699227794,3.27573785374493,-3.3360274955022e-19,18.0246019918137,60.3521699227794,3.27573785374493,0.00559396646590583,57.4776474864233,-31.207025597578,18.6793013184214,3.65325190081159e-20,-5.70360199181378,0.0846346299378823,0,0.0460610709160382,0.0360034334290665,0 +25.4710769887172,13.1898562956519,-8.77836439741423,0.278224670104474,14.5476511001392,19.4463871894048,-99.4040000000002,2.28291641671433,64.9573488998609,-38.9243299030861,36.7686964539868,1.20692174722728,1.93376415332416,2.23304463594,73.8352634912031,25.7341091131894,16.7999547351763,2.28291641671433,75.502249478237,29.1451443252014,21.9550391721663,-3.3360274955022e-19,75.502249478237,29.1451443252014,21.9550391721663,0.00559396646590583,25.4710769887172,13.1898562956519,-8.77836439741423,3.65325190081159e-20,4.0027505217631,0.405711625054165,0,0.0460610709160382,0.0360034334290665,0 +-53.5983446347978,9.27647347935564,3.14829159350904,0.278224670104474,73.8352634912031,-143.032207438132,39.1670000000005,2.28291641671433,33.4967365087963,17.5121442111789,-15.8538181924026,1.20692174722728,1.93376415332416,2.23304463594,102.541881812857,45.1394199453168,17.2169580777762,2.28291641671433,100.973326466954,42.3350006208534,13.1766747747521,-3.3360274955022e-19,100.973326466954,42.3350006208534,13.1766747747521,0.00559396646590583,-53.5983446347978,9.27647347935564,3.14829159350904,3.65325190081159e-20,6.35867353304527,-0.769111553528367,0,0.0460610709160382,0.0360034334290665,0 +28.1634476166308,16.3641454813782,-18.3351566538728,0.278224670104474,102.541881812857,-189.242024198356,29.4799999999996,2.28291641671433,-58.1398818128569,23.3706732298014,7.97782936942239,1.20692174722728,1.93376415332416,2.23304463594,47.1697102449435,51.8901703672846,17.0876304896253,2.28291641671433,47.3749818321564,51.611474100209,16.3249663682611,-3.3360274955022e-19,47.3749818321564,51.611474100209,16.3249663682611,0.00559396646590583,28.1634476166308,16.3641454813782,-18.3351566538728,3.65325190081159e-20,-2.97298183215631,1.38391294472001,0,0.0460610709160382,0.0360034334290665,0 +36.4860674595168,-32.3895874032982,7.52775773388527,0.278224670104474,47.1697102449435,-55.9263101925862,-39.5230000000005,2.28291641671433,29.8732897550571,7.94651293682119,-37.8560523458612,1.20692174722728,1.93376415332416,2.23304463594,76.0815780372581,69.750002169455,0.995426301653012,2.28291641671433,75.5384294487872,67.9756195815872,-2.01019028561165,-3.3360274955022e-19,75.5384294487872,67.9756195815872,-2.01019028561165,0.00559396646590583,36.4860674595168,-32.3895874032982,7.52775773388527,3.65325190081159e-20,1.5045705512134,-0.114637984360959,0,0.0460610709160382,0.0360034334290665,0 +-56.7285127776834,-40.3178085980624,19.5108955815585,0.278224670104474,76.0815780372581,-104.150747629992,-62.4229999999989,2.28291641671433,45.5384219627418,-30.3245206128677,33.6812256361949,1.20692174722728,1.93376415332416,2.23304463594,117.312075050631,46.9410262086817,22.9399773667319,2.28291641671433,112.024496908304,35.5860321782889,5.51756744827362,-3.3360274955022e-19,112.024496908304,35.5860321782889,5.51756744827362,0.00559396646590583,-56.7285127776834,-40.3178085980624,19.5108955815585,3.65325190081159e-20,9.59550309169594,-0.618610673593889,0,0.0460610709160382,0.0360034334290665,0 +-73.7706753272539,33.1903774722214,-24.9805697283017,0.278224670104474,117.312075050631,-221.200859621333,46.3699999999997,2.28291641671433,-60.9070750506315,-25.169074339612,62.8571479039691,1.20692174722728,1.93376415332416,2.23304463594,60.9615638980634,7.97866112416502,44.7837583502662,2.28291641671433,55.2959841306206,-4.73177641977344,25.0284630298321,-3.3360274955022e-19,55.2959841306206,-4.73177641977344,25.0284630298321,0.00559396646590583,-73.7706753272539,33.1903774722214,-24.9805697283017,3.65325190081159e-20,1.10901586937917,0.596883004049701,0,0.0460610709160382,0.0360034334290665,0 +59.462005832434,-49.8016119059183,6.51777035572755,0.278224670104474,60.9615638980634,-131.362056357123,89.7879999999996,2.28291641671433,-87.2805638980629,36.8136242439141,-47.4355497391229,1.20692174722728,1.93376415332416,2.23304463594,-16.7553493663124,33.4354883846602,8.28232613563384,2.28291641671433,-18.4746911966333,28.458601052448,0.0478933015303689,-3.3360274955022e-19,-18.4746911966333,28.458601052448,0.0478933015303689,0.00559396646590583,59.462005832434,-49.8016119059183,6.51777035572755,3.65325190081159e-20,-7.84430880336623,0.771247640960273,0,0.0460610709160382,0.0360034334290665,0 +-73.3980834421882,18.2276930160024,-11.4415305258056,0.278224670104474,-16.7553493663124,71.7334297933743,-75.3439999999989,2.28291641671433,63.5533493663122,-67.1228985709616,30.1838986009747,1.20692174722728,1.93376415332416,2.23304463594,45.7998953051362,-10.8852130248931,22.6686786450768,2.28291641671433,40.9873146358007,-21.3430108534703,6.56566365725791,-3.3360274955022e-19,40.9873146358007,-21.3430108534703,6.56566365725791,0.00559396646590583,-73.3980834421882,18.2276930160024,-11.4415305258056,3.65325190081159e-20,5.81068536419905,-1.2385556932701,0,0.0460610709160382,0.0360034334290665,0 +40.3534374514335,4.57297992154591,-12.5084776083425,0.278224670104474,45.7998953051362,-115.570688008062,90.2389999999992,2.28291641671433,-89.2328953051362,17.4266690868639,-25.8790390142019,1.20692174722728,1.93376415332416,2.23304463594,-33.0221593814879,-3.70036666113158,-5.43457394077477,2.28291641671433,-32.4107688063875,-3.11531783746785,-4.87586686854769,-3.3360274955022e-19,-32.4107688063875,-3.11531783746785,-4.87586686854769,0.00559396646590583,40.3534374514335,4.57297992154591,-12.5084776083425,3.65325190081159e-20,-11.0222311936125,0.608989137153313,0,0.0460610709160382,0.0360034334290665,0 +-52.9130316962495,19.7364191275152,-5.3551300487194,0.278224670104474,-33.0221593814879,71.7788547822693,-31.0559999999995,2.28291641671433,45.5931593814878,-2.89515624383673,-22.646230090711,1.20692174722728,1.93376415332416,2.23304463594,9.83337928108738,5.18251866551976,-11.8253419500482,2.28291641671433,7.94266864504601,1.45766208407806,-17.3843444768902,-3.3360274955022e-19,7.94266864504601,1.45766208407806,-17.3843444768902,0.00559396646590583,-52.9130316962495,19.7364191275152,-5.3551300487194,3.65325190081159e-20,4.6283313549539,-1.13670518111546,0,0.0460610709160382,0.0360034334290665,0 +27.4094870177171,-64.2277902014052,33.2869325794713,0.278224670104474,9.83337928108738,-17.2937768341085,-12.3570000000003,2.28291641671433,-58.501379281087,30.2662924076624,-11.9604911078796,1.20692174722728,1.93376415332416,2.23304463594,-44.9128364356086,21.2341967286308,-22.7167701071294,2.28291641671433,-44.9703630512035,21.1940812115933,-22.7394745256096,-3.3360274955022e-19,-44.9703630512035,21.1940812115933,-22.7394745256096,0.00559396646590583,27.4094870177171,-64.2277902014052,33.2869325794713,3.65325190081159e-20,-3.69763694879613,0.257660385655078,0,0.0460610709160382,0.0360034334290665,0 +-26.0059204186551,105.97075319967,-57.4455731820048,0.278224670104474,-44.9128364356086,123.89210858145,-110.098,2.28291641671433,25.7328364356083,-77.4086918365916,72.4100485837433,1.20692174722728,1.93376415332416,2.23304463594,-18.3880639481111,-44.4876187600857,8.46682642793896,2.28291641671433,-17.5608760334865,-43.033708989812,10.5474580538617,-3.3360274955022e-19,-17.5608760334865,-43.033708989812,10.5474580538617,0.00559396646590583,-26.0059204186551,105.97075319967,-57.4455731820048,3.65325190081159e-20,-1.61912396651383,0.434563770415265,0,0.0460610709160382,0.0360034334290665,0 +77.7896299397906,-15.5303061360125,22.208757788184,0.278224670104474,-18.3880639481111,-2.45775830726022,79.0539999999992,2.28291641671433,-40.6569360518889,86.1889582064253,-155.462279550209,1.20692174722728,1.93376415332416,2.23304463594,-51.4210977320145,45.1170580007277,-74.6837862665301,2.28291641671433,-43.5667964521416,62.9370442098577,-46.8981151281431,-3.3360274955022e-19,-43.5667964521416,62.9370442098577,-46.8981151281431,0.00559396646590583,77.7896299397906,-15.5303061360125,22.208757788184,3.65325190081159e-20,-15.4782035478585,-1.45829324332397,0,0.0460610709160382,0.0360034334290665,0 +38.5007669113366,-22.295576744039,32.6910796005862,0.278224670104474,-51.4210977320145,162.650995673904,-216.339,2.28291641671433,88.0680977320144,-26.5115447607976,25.4093034406949,1.20692174722728,1.93376415332416,2.23304463594,27.6668985365532,31.8618389294259,-49.2232206777016,2.28291641671433,34.222833487649,47.4067380738451,-24.6893573399591,-3.3360274955022e-19,34.222833487649,47.4067380738451,-24.6893573399591,0.00559396646590583,38.5007669113366,-22.295576744039,32.6910796005862,3.65325190081159e-20,2.42416651235094,-0.547690102075718,0,0.0460610709160382,0.0360034334290665,0 +-7.73948847759862,10.2389751188163,7.49143871523113,0.278224670104474,27.6668985365532,-31.3767862969814,-85.2800000000003,2.28291641671433,53.7191014634472,-6.87554025738586,62.7984083229881,1.20692174722728,1.93376415332416,2.23304463594,70.1327844265174,18.6783848201144,-2.27301478628794,2.28291641671433,72.7236003989856,25.1111613298061,8.00172226062717,-3.3360274955022e-19,72.7236003989856,25.1111613298061,8.00172226062717,0.00559396646590583,-7.73948847759862,10.2389751188163,7.49143871523113,3.65325190081159e-20,8.66239960101477,0.689068153588686,0,0.0460610709160382,0.0360034334290665,0 +36.8542632344529,4.80856795042708,0.0828726663999477,0.278224670104474,70.1327844265174,-141.625122440497,30.5030000000007,2.28291641671433,-5.94978442651744,17.9047337688556,6.27470083612756,1.20692174722728,1.93376415332416,2.23304463594,61.81131451789,28.388268855393,4.74222319289662,2.28291641671433,64.9841119213871,35.3501364486224,15.4931609758583,-3.3360274955022e-19,64.9841119213871,35.3501364486224,15.4931609758583,0.00559396646590583,36.8542632344529,4.80856795042708,0.0828726663999477,3.65325190081159e-20,-0.801111921387057,0.780976514547706,0,0.0460610709160382,0.0360034334290665,0 +-62.0029885092608,-7.10183771010102,12.7583130890594,0.278224670104474,61.81131451789,-112.894735756927,9.7770000000005,2.28291641671433,51.3406854821092,17.4107025035927,6.24345800798388,1.20692174722728,1.93376415332416,2.23304463594,104.205755891949,44.5712256057048,22.0336953194596,2.28291641671433,101.83837515584,40.1587043990495,15.5760336422583,-3.3360274955022e-19,101.83837515584,40.1587043990495,15.5760336422583,0.00559396646590583,-62.0029885092608,-7.10183771010102,12.7583130890594,3.65325190081159e-20,11.3136248441592,-0.518418328556216,0,0.0460610709160382,0.0360034334290665,0 +-10.4215284442689,12.7460503732139,-11.2843708093027,0.278224670104474,104.205755891949,-193.613359290179,37.0969999999992,2.28291641671433,-65.9217558919487,11.3250163259659,33.5389751038766,1.20692174722728,1.93376415332416,2.23304463594,41.1836015410925,36.2876473964191,33.4476932517456,2.28291641671433,39.8353866465792,33.0568666889485,28.3343467313176,-3.3360274955022e-19,39.8353866465792,33.0568666889485,28.3343467313176,0.00559396646590583,-10.4215284442689,12.7460503732139,-11.2843708093027,3.65325190081159e-20,-1.55138664657859,1.08915993180293,0,0.0460610709160382,0.0360034334290665,0 +10.4626353631757,4.48669974669196,-3.2682358697927,0.278224670104474,41.1836015410925,-57.8462989832209,2.05599999999981,2.28291641671433,-16.0586015410925,5.57454085496167,-27.0208997959658,1.20692174722728,1.93376415332416,2.23304463594,28.7883556893444,44.5375294958951,15.1447033024461,2.28291641671433,29.4138582023102,45.8029170621624,17.0499759220149,-3.3360274955022e-19,29.4138582023102,45.8029170621624,17.0499759220149,0.00559396646590583,10.4626353631757,4.48669974669196,-3.2682358697927,3.65325190081159e-20,-4.28885820231023,-0.299812599739212,0,0.0460610709160382,0.0360034334290665,0 +19.1663501015522,-14.1107768659587,11.0960961665309,0.278224670104474,28.7883556893444,-21.2644263654634,-45.1419999999997,2.28291641671433,8.63864431065533,-3.55244781818845,-13.3156505606751,1.20692174722728,1.93376415332416,2.23304463594,38.1796954450129,46.3748254262822,7.64895540755086,2.28291641671433,39.8764935654859,50.2896168088544,13.7817400522222,-3.3360274955022e-19,39.8764935654859,50.2896168088544,13.7817400522222,0.00559396646590583,19.1663501015522,-14.1107768659587,11.0960961665309,3.65325190081159e-20,-2.44949356548627,-0.390774373457006,0,0.0460610709160382,0.0360034334290665,0 +41.1978453660711,-26.3238965915158,10.3033614508985,0.278224670104474,38.1796954450129,-40.8930498766044,-46.9210000000006,2.28291641671433,22.083304554987,-15.3488808745221,21.2663781540516,1.20692174722728,1.93376415332416,2.23304463594,57.7936508561586,33.7091170545333,21.1875832529078,2.28291641671433,59.0428436670381,36.1788399428957,24.8778362187531,-3.3360274955022e-19,59.0428436670381,36.1788399428957,24.8778362187531,0.00559396646590583,41.1978453660711,-26.3238965915158,10.3033614508985,3.65325190081159e-20,1.22015633296178,0.532231296048839,0,0.0460610709160382,0.0360034334290665,0 +-8.53447029883739,14.9905393128348,-10.4694510754942,0.278224670104474,57.7936508561586,-98.3906563309721,11.5629999999999,2.28291641671433,46.575349143842,-32.2815369264463,25.7656813231105,1.20692174722728,1.93376415332416,2.23304463594,100.962607721571,11.6092475021344,37.9678872826991,2.28291641671433,100.240689033109,9.85494335137985,35.1811976696516,-3.3360274955022e-19,100.240689033109,9.85494335137985,35.1811976696516,0.00559396646590583,-8.53447029883739,14.9905393128348,-10.4694510754942,3.65325190081159e-20,4.12831096689137,0.00891729572534583,0,0.0460610709160382,0.0360034334290665,0 +-84.938537575091,46.5108078846684,-17.416846655573,0.278224670104474,100.962607721571,-219.162427290028,115.712000000001,2.28291641671433,-5.1726077215709,23.8756440495554,-15.2679520406943,1.20692174722728,1.93376415332416,2.23304463594,94.5535000429254,30.522573235681,33.2186464284366,2.28291641671433,91.7062187342718,24.8454826642146,24.7117465941574,-3.3360274955022e-19,91.7062187342718,24.8454826642146,24.7117465941574,0.00559396646590583,-84.938537575091,46.5108078846684,-17.416846655573,3.65325190081159e-20,4.08378126572814,-0.679839843021792,0,0.0460610709160382,0.0360034334290665,0 +18.2306845374662,-38.6080549034368,23.9632056556611,0.278224670104474,94.5535000429254,-185.59971257672,66.727,2.28291641671433,-95.6815000429261,59.5934143881652,-42.639504838784,1.20692174722728,1.93376415332416,2.23304463594,5.81754096971648,68.9947466112841,3.521952252851,2.28291641671433,6.76768115918078,71.356290548883,7.29489993858445,-3.3360274955022e-19,6.76768115918078,71.356290548883,7.29489993858445,0.00559396646590583,18.2306845374662,-38.6080549034368,23.9632056556611,3.65325190081159e-20,-7.89568115918139,0.0909806721031447,0,0.0460610709160382,0.0360034334290665,0 +172.346130038936,8.20704060957571,-36.3780488197847,0.278224670104474,5.81754096971648,55.697510109075,-128.650000000001,2.28291641671433,12.7944590302836,-52.9043811717681,43.5944080113989,1.20692174722728,1.93376415332416,2.23304463594,20.2693221627189,24.9151870613591,20.3210519599994,2.28291641671433,24.998365696647,32.7482356454462,31.2581055942455,-3.3360274955022e-19,24.998365696647,32.7482356454462,31.2581055942455,0.00559396646590583,172.346130038936,8.20704060957571,-36.3780488197847,3.65325190081159e-20,-6.38636569664694,2.84917166117534,0,0.0460610709160382,0.0360034334290665,0 +-138.509547288472,-21.4581473466999,34.0082525950718,0.278224670104474,20.2693221627189,-21.4146921677127,-9.23999999999989,2.28291641671433,194.894677837282,-22.3023776490567,-69.4187035641735,1.20692174722728,1.93376415332416,2.23304463594,202.225619865762,49.7494917719349,7.58736367810813,2.28291641671433,197.344495735584,40.9552762550219,-5.1199432255392,-3.3360274955022e-19,197.344495735584,40.9552762550219,-5.1199432255392,0.00559396646590583,-138.509547288472,-21.4581473466999,34.0082525950718,3.65325190081159e-20,17.8195042644172,-4.28557171654687,0,0.0460610709160382,0.0360034334290665,0 +14.034445188153,4.61176609170647,-19.1809130047406,0.278224670104474,202.225619865762,-412.480496492664,110.314,2.28291641671433,-146.494619865762,21.9650810298951,86.8698534735506,1.20692174722728,1.93376415332416,2.23304463594,61.4428884637635,26.2679660736565,39.8220436835494,2.28291641671433,58.8349484471112,19.497128908322,28.8883093695325,-3.3360274955022e-19,58.8349484471112,19.497128908322,28.8883093695325,0.00559396646590583,14.034445188153,4.61176609170647,-19.1809130047406,3.65325190081159e-20,-3.10394844711142,3.09761039936128,0,0.0460610709160382,0.0360034334290665,0 +-60.4982965043707,0.227755959854388,-1.61119157591922,0.278224670104474,61.4428884637635,-114.172921843517,48.7289999999998,2.28291641671433,14.4791115362361,-1.92405455189129,-28.7384900693932,1.20692174722728,1.93376415332416,2.23304463594,77.2388535561169,33.5602366466291,24.2406197371407,2.28291641671433,72.8693936352643,24.1088950000284,9.707396364792,-3.3360274955022e-19,72.8693936352643,24.1088950000284,9.707396364792,0.00559396646590583,-60.4982965043707,0.227755959854388,-1.61119157591922,3.65325190081159e-20,3.05260636473532,-1.18628097656621,0,0.0460610709160382,0.0360034334290665,0 +-3.57267542032956,-19.6470010695777,0.457673281173173,0.278224670104474,77.2388535561169,-142.985714338781,34.3589999999993,2.28291641671433,-67.511853556117,11.2461755492207,7.23527087302265,1.20692174722728,1.93376415332416,2.23304463594,15.3219454977611,31.3100719320913,19.0921983664221,2.28291641671433,12.3710971308936,24.3366509598828,8.09620478887278,-3.3360274955022e-19,12.3710971308936,24.3366509598828,8.09620478887278,0.00559396646590583,-3.57267542032956,-19.6470010695777,0.457673281173173,3.65325190081159e-20,-2.6440971308937,0.60699962501668,0,0.0460610709160382,0.0360034334290665,0 +30.2717577805257,26.9362698871428,-32.1732180062395,0.278224670104474,15.3219454977611,-3.71151777707702,-28.2059999999993,2.28291641671433,-9.85294549776108,-29.7291882211132,7.69583214844383,1.20692174722728,1.93376415332416,2.23304463594,9.9741490684335,8.52660892427109,15.0520687801083,2.28291641671433,8.79842171056401,4.68964989030517,8.55387807004596,-3.3360274955022e-19,8.79842171056401,4.68964989030517,8.55387807004596,0.00559396646590583,30.2717577805257,26.9362698871428,-32.1732180062395,3.65325190081159e-20,-3.32942171056395,0.72045687669833,0,0.0460610709160382,0.0360034334290665,0 +-22.8027465353552,-21.7445195542416,8.1497074268718,0.278224670104474,9.9741490684335,-14.2714460892912,7.97299999999962,2.28291641671433,31.9428509315669,16.1159189526163,-62.3744524873469,1.20692174722728,1.93376415332416,2.23304463594,41.9209495916459,37.9156689248478,-13.8906117419502,2.28291641671433,39.0701794910897,31.625919777448,-23.6193399361935,-3.3360274955022e-19,39.0701794910897,31.625919777448,-23.6193399361935,0.00559396646590583,-22.8027465353552,-21.7445195542416,8.1497074268718,3.65325190081159e-20,2.84682050891069,-1.23293808352947,0,0.0460610709160382,0.0360034334290665,0 +-0.486675755240422,-21.8640510416839,2.19257367187205,0.278224670104474,41.9209495916459,-57.9036444274856,-47.8009999999998,2.28291641671433,-25.760949591646,-17.930385918613,28.0777377029855,1.20692174722728,1.93376415332416,2.23304463594,18.9485525818977,16.233640243704,-5.4462720944896,2.28291641671433,16.2674329557345,9.88140022320634,-15.4696325093217,-3.3360274955022e-19,16.2674329557345,9.88140022320634,-15.4696325093217,0.00559396646590583,-0.486675755240422,-21.8640510416839,2.19257367187205,3.65325190081159e-20,-0.10743295573465,0.464160818472756,0,0.0460610709160382,0.0360034334290665,0 +-112.541419768285,-20.3454530448676,26.2135136785507,0.278224670104474,18.9485525818977,-27.077337086348,-18.9649999999999,2.28291641671433,0.023447418102009,-22.8426377522344,17.2566863911868,1.20692174722728,1.93376415332416,2.23304463594,20.474526423737,-3.07746207139861,-0.160450566534621,2.28291641671433,15.7807572004941,-11.9826508184776,-13.2770588374497,-3.3360274955022e-19,15.7807572004941,-11.9826508184776,-13.2770588374497,0.00559396646590583,-112.541419768285,-20.3454530448676,26.2135136785507,3.65325190081159e-20,3.19124279950567,-1.91161843753527,0,0.0460610709160382,0.0360034334290665,0 +90.1948350776015,83.5752963314421,-48.3952424147174,0.278224670104474,20.474526423737,-49.8763796113689,26.4689999999996,2.28291641671433,-141.568526423737,-28.798261430343,36.1608648436573,1.20692174722728,1.93376415332416,2.23304463594,-104.143814318313,-47.6522470150961,-10.3286797118782,2.28291641671433,-96.7606625677909,-32.3281038633452,12.936454841101,-3.3360274955022e-19,-96.7606625677909,-32.3281038633452,12.936454841101,0.00559396646590583,90.1948350776015,83.5752963314421,-48.3952424147174,3.65325190081159e-20,-24.3333374322092,1.74716085125159,0,0.0460610709160382,0.0360034334290665,0 +96.2078628122416,-41.7073835971332,38.4823699934916,0.278224670104474,-104.143814318313,190.390757141049,-19.1679999999996,2.28291641671433,93.3878143183141,51.6164184255469,-139.100827797963,1.20692174722728,1.93376415332416,2.23304463594,-15.4754330214751,30.9449416736618,-67.1536836312011,2.28291641671433,-6.5658274901894,51.247192468097,-35.4587875736164,-3.3360274955022e-19,-6.5658274901894,51.247192468097,-35.4587875736164,0.00559396646590583,96.2078628122416,-41.7073835971332,38.4823699934916,3.65325190081159e-20,-4.19017250981,-1.86965530281679,0,0.0460610709160382,0.0360034334290665,0 +17.2225379392704,-23.5666121063886,14.5862378479516,0.278224670104474,-15.4754330214751,66.317360008462,-144.519,2.28291641671433,122.318433021475,-27.8823545588056,82.387263401898,1.20692174722728,1.93376415332416,2.23304463594,88.6632217040811,7.24815821454538,-0.580905274990407,2.28291641671433,89.6420353220522,9.53980887096376,3.02358241987523,-3.3360274955022e-19,89.6420353220522,9.53980887096376,3.02358241987523,0.00559396646590583,17.2225379392704,-23.5666121063886,14.5862378479516,3.65325190081159e-20,17.2009646779477,1.14370043658437,0,0.0460610709160382,0.0360034334290665,0 +-141.771960838266,41.5781255461939,-13.3727880693451,0.278224670104474,88.6632217040811,-195.410634251926,73.5859999999999,2.28291641671433,33.5937782959185,0.660857137452751,51.9223680427307,1.20692174722728,1.93376415332416,2.23304463594,113.334233064845,-0.713622967331107,37.766521000492,2.28291641671433,106.864573261323,-14.0268032354249,17.6098202678269,-3.3360274955022e-19,106.864573261323,-14.0268032354249,17.6098202678269,0.00559396646590583,-141.771960838266,41.5781255461939,-13.3727880693451,3.65325190081159e-20,15.3924267386771,-0.355886452979576,0,0.0460610709160382,0.0360034334290665,0 +93.9216017480064,-40.5189994885675,-0.795600725141727,0.278224670104474,113.334233064845,-259.76329854412,152.527999999999,2.28291641671433,-161.256233064845,62.5926889813531,-27.5341137300781,1.20692174722728,1.93376415332416,2.23304463594,-35.2186408001557,28.3740214031959,6.19368360654789,2.28291641671433,-34.9073875769434,27.551322310769,4.23703219848178,-3.3360274955022e-19,-34.9073875769434,27.551322310769,4.23703219848178,0.00559396646590583,93.9216017480064,-40.5189994885675,-0.795600725141727,3.65325190081159e-20,-13.0146124230562,2.19636322764511,0,0.0460610709160382,0.0360034334290665,0 +-123.189664801199,7.88869612760578,2.26505705641066,0.278224670104474,-35.2186408001557,108.873771803552,-85.7729999999996,2.28291641671433,107.607640800156,-54.1664426766634,18.2348242187267,1.20692174722728,1.93376415332416,2.23304463594,65.6323135120108,0.748304031682611,24.2552945513545,2.28291641671433,59.0142141710629,-12.9676771777985,3.44143147334006,-3.3360274955022e-19,59.0142141710629,-12.9676771777985,3.44143147334006,0.00559396646590583,-123.189664801199,7.88869612760578,2.26505705641066,3.65325190081159e-20,13.3747858289372,-2.10326185977216,0,0.0460610709160382,0.0360034334290665,0 +-20.3062862975803,60.3220791815197,-38.20655533938,0.278224670104474,65.6323135120108,-149.268412567199,88.3910000000001,2.28291641671433,-140.754313512011,24.2635334770462,9.82997777464531,1.20692174722728,1.93376415332416,2.23304463594,-63.0701995737726,-2.14629778626754,10.4666040012373,2.28291641671433,-64.1754506301365,-5.07898105019275,5.70648852975072,-3.3360274955022e-19,-64.1754506301365,-5.07898105019275,5.70648852975072,0.00559396646590583,-20.3062862975803,60.3220791815197,-38.20655533938,3.65325190081159e-20,-10.9465493698638,1.09966532416717,0,0.0460610709160382,0.0360034334290665,0 +112.090186809776,-48.8945924920168,21.1156282061906,0.278224670104474,-63.0701995737726,142.014158382356,-48.3110000000003,2.28291641671433,-34.6588004262276,40.0459647745131,-101.076056123433,1.20692174722728,1.93376415332416,2.23304463594,-89.6161656182869,44.496992279568,-48.8578498225772,2.28291641671433,-84.4817369277168,55.243098131327,-32.5000668096293,-3.3360274955022e-19,-84.4817369277168,55.243098131327,-32.5000668096293,0.00559396646590583,112.090186809776,-48.8945924920168,21.1156282061906,3.65325190081159e-20,-13.2472630722835,-0.36363968039332,0,0.0460610709160382,0.0360034334290665,0 +-47.8091564765987,27.2070637950778,8.91728406675418,0.278224670104474,-89.6161656182869,249.333942264224,-227.468,2.28291641671433,121.357165618287,-77.2655367621178,35.199581370023,1.20692174722728,1.93376415332416,2.23304463594,24.9577084726886,-0.912984477750499,-23.2566774281891,2.28291641671433,27.6084498820596,6.34850563931017,-11.3844386034387,-3.3360274955022e-19,27.6084498820596,6.34850563931017,-11.3844386034387,0.00559396646590583,-47.8091564765987,27.2070637950778,8.91728406675418,3.65325190081159e-20,4.13255011794041,-1.99433448031713,0,0.0460610709160382,0.0360034334290665,0 +32.5455835893361,56.540775786894,-27.3490320155488,0.278224670104474,24.9577084726886,-57.9591752724672,3.5270000000005,2.28291641671433,-47.6617084726883,48.7022744411133,6.21910153612217,1.20692174722728,1.93376415332416,2.23304463594,-24.4727130102927,24.3533786792492,-16.5995296312085,2.28291641671433,-20.2007065945392,33.555569434388,-2.46715453668455,-3.3360274955022e-19,-20.2007065945392,33.555569434388,-2.46715453668455,0.00559396646590583,32.5455835893361,56.540775786894,-27.3490320155488,3.65325190081159e-20,-2.50329340546056,1.66624406380761,0,0.0460610709160382,0.0360034334290665,0 +60.460665725309,-52.4824768163287,50.0373806420346,0.278224670104474,-24.4727130102927,80.2910084170611,-89.7789999999997,2.28291641671433,29.103713010293,35.1786153194395,-88.6346820020324,1.20692174722728,1.93376415332416,2.23304463594,4.83527437068186,72.3524640774774,-57.7943462157274,2.28291641671433,12.344876994797,90.096345221282,-29.8161865522334,-3.3360274955022e-19,12.344876994797,90.096345221282,-29.8161865522334,0.00559396646590583,60.460665725309,-52.4824768163287,50.0373806420346,3.65325190081159e-20,-7.71387699479668,-1.76462637603214,0,0.0460610709160382,0.0360034334290665,0 +50.9622224228696,18.8566164649053,6.61301050693958,0.278224670104474,4.83527437068186,61.3004083730617,-197.664,2.28291641671433,68.1837256293184,-59.816694626023,85.2336641670582,1.20692174722728,1.93376415332416,2.23304463594,65.2455104361887,20.3103264157302,-6.82585760472759,2.28291641671433,72.805542720106,37.6138684049533,20.2211940898013,-3.3360274955022e-19,72.805542720106,37.6138684049533,20.2211940898013,0.00559396646590583,50.9622224228696,18.8566164649053,6.61301050693958,3.65325190081159e-20,0.213457279894192,0.598229241002596,0,0.0460610709160382,0.0360034334290665,0 +-6.7665590357457,8.50881632693129,9.73719168960803,0.278224670104474,65.2455104361887,-128.822268866987,17.7990000000007,2.28291641671433,68.3534895638105,32.5602992982725,3.36418207049264,1.20692174722728,1.93376415332416,2.23304463594,120.866887002086,49.2769390287865,15.3479910554863,2.28291641671433,123.767765142976,56.4704848698586,26.8342045967409,-3.3360274955022e-19,123.767765142976,56.4704848698586,26.8342045967409,0.00559396646590583,-6.7665590357457,8.50881632693129,9.73719168960803,3.65325190081159e-20,9.83123485702359,0.158121171230287,0,0.0460610709160382,0.0360034334290665,0 +4.18346023727122,-15.9762495476786,16.6460406673732,0.278224670104474,120.866887002086,-226.990231261696,37.6609999999994,2.28291641671433,-1.01788700208584,23.0136560868246,15.1650731882013,1.20692174722728,1.93376415332416,2.23304463594,115.356745271841,60.8500530941405,29.9573609164389,2.28291641671433,117.00120610723,64.9793011967898,36.5713962863489,-3.3360274955022e-19,117.00120610723,64.9793011967898,36.5713962863489,0.00559396646590583,4.18346023727122,-15.9762495476786,16.6460406673732,3.65325190081159e-20,2.84779389277021,0.411455619735925,0,0.0460610709160382,0.0360034334290665,0 +-3.89462652131149,-26.7743138572145,11.9759988068821,0.278224670104474,115.356745271841,-202.822507527211,23.6139999999991,2.28291641671433,12.7492547281586,-0.142341348425589,42.0430895963224,1.20692174722728,1.93376415332416,2.23304463594,122.650724793091,52.2384455821539,58.2221663712178,2.28291641671433,121.184666344501,49.0030516491112,53.2174369537221,-3.3360274955022e-19,121.184666344501,49.0030516491112,53.2174369537221,0.00559396646590583,-3.89462652131149,-26.7743138572145,11.9759988068821,3.65325190081159e-20,6.9213336554986,0.776757138319983,0,0.0460610709160382,0.0360034334290665,0 +-7.61392444929056,35.7901502102981,-37.8237751301135,0.278224670104474,122.650724793091,-228.106068230625,76.3960000000009,2.28291641671433,0.0392752069097355,-16.2535167088625,41.5619143946443,1.20692174722728,1.93376415332416,2.23304463594,120.973279639727,31.5153173613629,80.0833550829994,2.28291641671433,117.29003982319,22.2287377918967,65.1934357606042,-3.3360274955022e-19,117.29003982319,22.2287377918967,65.1934357606042,0.00559396646590583,-7.61392444929056,35.7901502102981,-37.8237751301135,3.65325190081159e-20,5.39996017681085,1.42849608967846,0,0.0460610709160382,0.0360034334290665,0 +-42.9560236061122,-18.9299560946687,3.78511141677368,0.278224670104474,120.973279639727,-244.99503610087,138.026000000001,2.28291641671433,-9.64327963972686,32.8851109946582,-68.4908805070482,1.20692174722728,1.93376415332416,2.23304463594,114.430074069505,68.5882743197437,43.7544745699829,2.28291641671433,109.676115373899,58.0188880021948,27.3696606304908,-3.3360274955022e-19,109.676115373899,58.0188880021948,27.3696606304908,0.00559396646590583,-42.9560236061122,-18.9299560946687,3.78511141677368,3.65325190081159e-20,1.65388462610081,-1.09919571899686,0,0.0460610709160382,0.0360034334290665,0 +-8.36821321529153,28.6103495935751,-30.3830875975579,0.278224670104474,114.430074069505,-192.966180696267,21.0080000000003,2.28291641671433,-50.681074069505,-16.0403592320373,20.9082263797827,1.20692174722728,1.93376415332416,2.23304463594,69.8493991278438,46.9185314017368,43.684663675629,2.28291641671433,66.7200917677869,39.0889319075261,31.1547720472645,-3.3360274955022e-19,66.7200917677869,39.0889319075261,31.1547720472645,0.00559396646590583,-8.36821321529153,28.6103495935751,-30.3830875975579,3.65325190081159e-20,-2.97109176778711,0.80213499027332,0,0.0460610709160382,0.0360034334290665,0 +7.90106370002237,15.7071815950966,-17.8187005098293,0.278224670104474,69.8493991278438,-112.737238033335,19.6969999999991,2.28291641671433,-15.9283991278435,16.2936941066764,-62.689388857103,1.20692174722728,1.93376415332416,2.23304463594,59.4833523743203,70.823749328005,5.88914628168916,2.28291641671433,58.3518785524954,67.6992815011012,0.771684449706568,-3.3360274955022e-19,58.3518785524954,67.6992815011012,0.771684449706568,0.00559396646590583,7.90106370002237,15.7071815950966,-17.8187005098293,3.65325190081159e-20,-4.4308785524951,-0.471559095397746,0,0.0460610709160382,0.0360034334290665,0 +-8.62641334928181,-43.4715680149279,31.167277319428,0.278224670104474,59.4833523743203,-65.1381989561558,-76.2750000000004,2.28291641671433,3.5276476256792,2.32258181743467,-41.3918241400789,1.20692174722728,1.93376415332416,2.23304463594,66.2160771234656,82.6608898704053,-18.5012973826555,2.28291641671433,66.2529422525177,83.4064630961977,-17.0470160601228,-3.3360274955022e-19,66.2529422525177,83.4064630961977,-17.0470160601228,0.00559396646590583,-8.62641334928181,-43.4715680149279,31.167277319428,3.65325190081159e-20,-3.24194225251823,-1.49630937615605,0,0.0460610709160382,0.0360034334290665,0 +44.2394469010002,38.340733949723,-34.8799790015565,0.278224670104474,66.2160771234656,-68.6901435546589,-117.607000000001,2.28291641671433,-9.14707712346521,-38.5508699573731,69.5415850533309,1.20692174722728,1.93376415332416,2.23304463594,56.828867420565,39.3393738024417,13.72688018432,2.28291641671433,57.6265289032359,39.9348950812698,14.1202612593052,-3.3360274955022e-19,57.6265289032359,39.9348950812698,14.1202612593052,0.00559396646590583,44.2394469010002,38.340733949723,-34.8799790015565,3.65325190081159e-20,-0.557528903235527,1.9394566975537,0,0.0460610709160382,0.0360034334290665,0 +-49.4296330160465,-70.5625940547487,52.4194449065505,0.278224670104474,56.828867420565,-90.5551803017069,-8.12299999999847,2.28291641671433,49.3501325794351,27.3234350351207,-74.529937056213,1.20692174722728,1.93376415332416,2.23304463594,103.77580216528,81.1488872020124,-16.9230277612564,2.28291641671433,101.865975804236,78.2756290309928,-20.7597177422513,-3.3360274955022e-19,101.865975804236,78.2756290309928,-20.7597177422513,0.00559396646590583,-49.4296330160465,-70.5625940547487,52.4194449065505,3.65325190081159e-20,4.31302419576398,-2.53397004988149,0,0.0460610709160382,0.0360034334290665,0 +14.4567553002249,32.0203169922584,-31.0391213157099,0.278224670104474,103.77580216528,-156.052946318629,-75.4450000000008,2.28291641671433,-51.380802165281,-51.3324645334993,123.409771390087,1.20692174722728,1.93376415332416,2.23304463594,53.6939803384894,11.4653152634405,37.9066501883923,2.28291641671433,52.4363427881896,7.71303497624407,31.6597271642992,-3.3360274955022e-19,52.4363427881896,7.71303497624407,31.6597271642992,0.00559396646590583,14.4567553002249,32.0203169922584,-31.0391213157099,3.65325190081159e-20,-0.0413427881900705,2.48146282533267,0,0.0460610709160382,0.0360034334290665,0 +-34.4189402124874,18.5353531315281,-8.61535352445408,0.278224670104474,53.6939803384894,-111.263782653107,68.6700000000006,2.28291641671433,13.1450196615106,21.8905290848331,-64.5301288206095,1.20692174722728,1.93376415332416,2.23304463594,68.4331804169764,42.9811994262507,5.57621843552396,2.28291641671433,66.8930980884144,39.7333519685024,0.620605848589292,-3.3360274955022e-19,66.8930980884144,39.7333519685024,0.620605848589292,0.00559396646590583,-34.4189402124874,18.5353531315281,-8.61535352445408,3.65325190081159e-20,-0.0540980884145073,-1.209699194983,0,0.0460610709160382,0.0360034334290665,0 +34.2806230493508,22.8917930180358,-22.1150370132805,0.278224670104474,68.4331804169764,-113.437498669695,-11.9530000000011,2.28291641671433,-40.2211804169759,21.8529269382357,-19.8416950477733,1.20692174722728,1.93376415332416,2.23304463594,31.7542881667372,57.4832486340711,-8.84579089859388,2.28291641671433,32.474157875927,58.2687051000306,-7.99474767586478,-3.3360274955022e-19,32.474157875927,58.2687051000306,-7.99474767586478,0.00559396646590583,34.2806230493508,22.8917930180358,-22.1150370132805,3.65325190081159e-20,-4.26215787592659,0.873370044944171,0,0.0460610709160382,0.0360034334290665,0 +-30.0499678674715,-47.750049258312,38.6558693508484,0.278224670104474,31.7542881667372,-15.0979814613283,-92.0579999999988,2.28291641671433,36.2267118332625,10.6154276750798,-50.5482625304159,1.20692174722728,1.93376415332416,2.23304463594,67.1214225977332,80.8998008382251,-30.9978209212833,2.28291641671433,66.7547809252778,81.1604981180663,-30.1097846891453,-3.3360274955022e-19,66.7547809252778,81.1604981180663,-30.1097846891453,0.00559396646590583,-30.0499678674715,-47.750049258312,38.6558693508484,3.65325190081159e-20,1.22621907472196,-1.96328457457367,0,0.0460610709160382,0.0360034334290665,0 +5.45907598069219,-36.2371183165344,25.9366873862364,0.278224670104474,67.1214225977332,-72.5205936708794,-125.676,2.28291641671433,-32.7124225977327,-39.6470199693474,82.3375364856184,1.20692174722728,1.93376415332416,2.23304463594,35.8371358747358,31.0019680233315,4.59680017192797,2.28291641671433,36.7048130578063,33.4104488597543,8.54608466170315,-3.3360274955022e-19,36.7048130578063,33.4104488597543,8.54608466170315,0.00559396646590583,5.45907598069219,-36.2371183165344,25.9366873862364,3.65325190081159e-20,-2.29581305780575,0.537123843801505,0,0.0460610709160382,0.0360034334290665,0 +31.8235974785742,62.5300156059912,-39.6485662665897,0.278224670104474,35.8371358747358,-50.9114854046361,-21.5699999999991,2.28291641671433,3.82286412526403,-39.7689206928423,51.6798079513424,1.20692174722728,1.93376415332416,2.23304463594,39.7807858855147,-7.33105619472875,27.8571017250262,2.28291641671433,42.1638890384985,-2.82666945678014,34.4827720479396,-3.3360274955022e-19,42.1638890384985,-2.82666945678014,34.4827720479396,0.00559396646590583,31.8235974785742,62.5300156059912,-39.6485662665897,3.65325190081159e-20,-2.50388903849864,1.2498444019206,0,0.0460610709160382,0.0360034334290665,0 +-9.80050737190391,-3.47353835544707,9.24143066101013,0.278224670104474,39.7807858855147,-98.2585667901909,82.2999999999984,2.28291641671433,36.7102141144853,57.4441975387554,-92.4905242232419,1.20692174722728,1.93376415332416,2.23304463594,73.1134668524626,57.3034592748493,-9.09154830276353,2.28291641671433,73.9874865170727,59.7033461492111,-5.16579421865006,-3.3360274955022e-19,73.9874865170727,59.7033461492111,-5.16579421865006,0.00559396646590583,-9.80050737190391,-3.47353835544707,9.24143066101013,3.65325190081159e-20,2.50351348292729,-1.22566268161651,0,0.0460610709160382,0.0360034334290665,0 +51.8725163386904,-66.6990931425806,34.7152973761472,0.278224670104474,73.1134668524626,-109.813036387922,-50.5849999999996,2.28291641671433,-10.0654668524628,0.658975534569493,15.5400965536905,1.20692174722728,1.93376415332416,2.23304463594,62.6478182340984,52.8412706539951,-1.16227692610742,2.28291641671433,64.1869791451688,56.229807793764,4.07563644236006,-3.3360274955022e-19,64.1869791451688,56.229807793764,4.07563644236006,0.00559396646590583,51.8725163386904,-66.6990931425806,34.7152973761472,3.65325190081159e-20,-1.13897914516901,0.473573109478862,0,0.0460610709160382,0.0360034334290665,0 +-69.1327131790183,112.560840840361,-64.9386051402585,0.278224670104474,62.6478182340984,-90.3537424525156,-44.1969999999992,2.28291641671433,62.8161817659015,-65.1458065492244,87.6348229953569,1.20692174722728,1.93376415332416,2.23304463594,118.818727970862,-3.95572075392755,49.0588305212821,2.28291641671433,116.059495483859,-10.4692853488166,38.7909338185073,-3.3360274955022e-19,116.059495483859,-10.4692853488166,38.7909338185073,0.00559396646590583,-69.1327131790183,112.560840840361,-64.9386051402585,3.65325190081159e-20,9.40450451614077,0.773275026209267,0,0.0460610709160382,0.0360034334290665,0 +45.8747914413226,-73.0584894867869,38.3532295851016,0.278224670104474,118.818727970862,-275.541384687328,175.789,2.28291641671433,-80.2407279708621,116.94660063964,-148.550333668064,1.20692174722728,1.93376415332416,2.23304463594,45.9012789673601,99.7692469760503,-29.7667850152587,2.28291641671433,46.9267823048409,102.091555491544,-26.1476713217512,-3.3360274955022e-19,46.9267823048409,102.091555491544,-26.1476713217512,0.00559396646590583,45.8747914413226,-73.0584894867869,38.3532295851016,3.65325190081159e-20,-8.34878230484046,-0.808624509052078,0,0.0460610709160382,0.0360034334290665,0 +-50.6016283455362,15.9252700760108,1.45816849755864,0.278224670104474,45.9012789673601,-5.14796209220145,-183.403999999999,2.28291641671433,50.3797210326398,-82.7015234672979,86.6573510539292,1.20692174722728,1.93376415332416,2.23304463594,93.5886380077576,30.050486284526,13.4533345612932,2.28291641671433,92.8015737461635,29.0330660047575,12.2055582633503,-3.3360274955022e-19,92.8015737461635,29.0330660047575,12.2055582633503,0.00559396646590583,-50.6016283455362,15.9252700760108,1.45816849755864,3.65325190081159e-20,3.47942625383645,-0.586040299240311,0,0.0460610709160382,0.0360034334290665,0 +54.7821775001355,5.07346364045687,-15.1062502192203,0.278224670104474,93.5886380077576,-183.866400590348,46.9409999999988,2.28291641671433,-54.3876380077576,30.619753449249,1.81375937873248,1.20692174722728,1.93376415332416,2.23304463594,41.1211322166552,43.5395039618555,11.9048757070555,2.28291641671433,42.1999454006273,44.9583360807683,13.663726760909,-3.3360274955022e-19,42.1999454006273,44.9583360807683,13.663726760909,0.00559396646590583,54.7821775001355,5.07346364045687,-15.1062502192203,3.65325190081159e-20,-2.99894540062732,1.69639626352288,0,0.0460610709160382,0.0360034334290665,0 +-27.3113941223467,-39.3856749075193,26.4800443073059,0.278224670104474,41.1211322166552,-50.4516553904992,-34.0530000000003,2.28291641671433,60.7878677833445,-7.06571226975242,-29.546870312093,1.20692174722728,1.93376415332416,2.23304463594,98.6389843414274,53.0957334294311,3.02848251743594,2.28291641671433,96.9821229007628,50.0317997212252,-1.44252345831129,-3.3360274955022e-19,96.9821229007628,50.0317997212252,-1.44252345831129,0.00559396646590583,-27.3113941223467,-39.3856749075193,26.4800443073059,3.65325190081159e-20,4.92687709923681,-1.49323309091008,0,0.0460610709160382,0.0360034334290665,0 +-7.67362793023322,21.0770710073102,-23.5972300551446,0.278224670104474,98.6389843414274,-172.364802208117,-4.52399999999887,2.28291641671433,-26.0269843414273,-24.208364559407,69.6633617711974,1.20692174722728,1.93376415332416,2.23304463594,72.3433711646134,17.2855667683018,35.6437623719892,2.28291641671433,69.6707287784161,10.6461248137059,25.0375208489946,-3.3360274955022e-19,69.6707287784161,10.6461248137059,25.0375208489946,0.00559396646590583,-7.67362793023322,21.0770710073102,-23.5972300551446,3.65325190081159e-20,2.94127122158393,1.5309695369599,0,0.0460610709160382,0.0360034334290665,0 +-1.18720697570794,19.4014743344421,-17.1728443554094,0.278224670104474,72.3433711646134,-148.070710179386,73.4159999999989,2.28291641671433,-13.9303711646138,11.1599528467338,-48.1261735759247,1.20692174722728,1.93376415332416,2.23304463594,63.0663342613204,34.5383087343776,6.00128320743553,2.28291641671433,61.9971008481829,31.7231958210161,1.44029079384996,-3.3360274955022e-19,61.9971008481829,31.7231958210161,1.44029079384996,0.00559396646590583,-1.18720697570794,19.4014743344421,-17.1728443554094,3.65325190081159e-20,-3.58410084818337,-0.430965310883234,0,0.0460610709160382,0.0360034334290665,0 +-39.866950017698,-18.8324753796819,14.9929992583363,0.278224670104474,63.0663342613204,-109.613312434355,-0.00899999999933243,2.28291641671433,-0.689334261319956,19.4262104066897,-32.6453581763456,1.20692174722728,1.93376415332416,2.23304463594,62.8847728694818,55.1682368179502,-9.72029923358223,2.28291641671433,60.809893872475,51.1246701554582,-15.7325535615595,-3.3360274955022e-19,60.809893872475,51.1246701554582,-15.7325535615595,0.00559396646590583,-39.866950017698,-18.8324753796819,14.9929992583363,3.65325190081159e-20,1.56710612752542,-1.00662701837275,0,0.0460610709160382,0.0360034334290665,0 +54.9025706554013,-5.8874213667314,-12.5494133888659,0.278224670104474,62.8847728694818,-88.5683868837223,-57.1720000000009,2.28291641671433,-45.5807728694817,-12.0774670054957,35.6693675041459,1.20692174722728,1.93376415332416,2.23304463594,20.8641145375709,33.218823298163,1.19253205875637,2.28291641671433,20.942943854777,32.2921947757764,-0.739554303223159,-3.3360274955022e-19,20.942943854777,32.2921947757764,-0.739554303223159,0.00559396646590583,54.9025706554013,-5.8874213667314,-12.5494133888659,3.65325190081159e-20,-3.63894385477694,1.62539117799894,0,0.0460610709160382,0.0360034334290665,0 +-45.5737047231978,-13.4495006289424,6.1227034653134,0.278224670104474,20.8641145375709,-14.4705813591418,-44.3809999999988,2.28291641671433,62.1318854624292,-15.4607732745044,-16.4099676336089,1.20692174722728,1.93376415332416,2.23304463594,79.4774748174159,34.2154474399833,-1.29957993744988,2.28291641671433,75.8455145101784,26.4047734090449,-13.2889676920891,-3.3360274955022e-19,75.8455145101784,26.4047734090449,-13.2889676920891,0.00559396646590583,-45.5737047231978,-13.4495006289424,6.1227034653134,3.65325190081159e-20,7.15048548982172,-1.14874024292284,0,0.0460610709160382,0.0360034334290665,0 +-30.4259594616842,8.08307367494075,-15.1658931884339,0.278224670104474,79.4774748174159,-147.447352142682,9.74699999999939,2.28291641671433,-47.5724748174161,1.53960077569438,28.7622206979228,1.20692174722728,1.93376415332416,2.23304463594,34.477579909431,22.7370601378823,8.19154036633333,2.28291641671433,30.2718097869806,12.9552727801026,-7.1662642267757,-3.3360274955022e-19,30.2718097869806,12.9552727801026,-7.1662642267757,0.00559396646590583,-30.4259594616842,8.08307367494075,-15.1658931884339,3.65325190081159e-20,1.63319021301918,0.811721018710733,0,0.0460610709160382,0.0360034334290665,0 +-55.1596809572164,-27.3376001228583,14.3644807114998,0.278224670104474,34.477579909431,-56.06883679796,-2.80500000000029,2.28291641671433,-34.5995799094313,10.7398820837071,-19.8514322139867,1.20692174722728,1.93376415332416,2.23304463594,4.29937805431883,30.5144683362871,-7.83344138174469,2.28291641671433,-0.154149674703661,21.0383464550433,-22.3321574152096,-3.3360274955022e-19,-0.154149674703661,21.0383464550433,-22.3321574152096,0.00559396646590583,-55.1596809572164,-27.3376001228583,14.3644807114998,3.65325190081159e-20,0.0321496747033662,-0.911831425794064,0,0.0460610709160382,0.0360034334290665,0 +24.7653040135421,9.73714529953002,-1.14601341448121,0.278224670104474,4.29937805431883,20.687318497844,-64.563,2.28291641671433,-74.9113780543189,-43.2686268905145,22.6113375254261,1.20692174722728,1.93376415332416,2.23304463594,-58.1135083716203,-12.5504172482169,-17.6703261248134,2.28291641671433,-55.3138306319201,-6.29925366781499,-7.96767670370989,-3.3360274955022e-19,-55.3138306319201,-6.29925366781499,-7.96767670370989,0.00559396646590583,24.7653040135421,9.73714529953002,-1.14601341448121,3.65325190081159e-20,-15.29816936808,-0.233502062287877,0,0.0460610709160382,0.0360034334290665,0 +78.9417114561925,26.5420544366338,-10.767602582926,0.278224670104474,-58.1135083716203,120.280459029772,-50.683,2.28291641671433,19.4135083716205,-9.99915380562429,-24.2659972931747,1.20692174722728,1.93376415332416,2.23304463594,-37.2686793503356,-11.1122855345538,-31.4938917187711,2.28291641671433,-30.548526618378,3.43789163171502,-9.1136901181911,-3.3360274955022e-19,-30.548526618378,3.43789163171502,-9.1136901181911,0.00559396646590583,78.9417114561925,26.5420544366338,-10.767602582926,3.65325190081159e-20,-8.15147338162186,0.0940475262774528,0,0.0460610709160382,0.0360034334290665,0 +-16.9393342486398,-15.5935452724007,32.5162437038375,0.278224670104474,-37.2686793503356,74.0732672662133,-46.5379999999991,2.28291641671433,90.926679350336,16.5208714972886,-39.8825663483012,1.20692174722728,1.93376415332416,2.23304463594,44.6264614672515,20.1761438585654,-35.7221737501208,2.28291641671433,48.3931848378146,29.9799460683488,-19.8812927011171,-3.3360274955022e-19,48.3931848378146,29.9799460683488,-19.8812927011171,0.00559396646590583,-16.9393342486398,-15.5935452724007,32.5162437038375,3.65325190081159e-20,5.2648151621858,-1.71380929620186,0,0.0460610709160382,0.0360034334290665,0 +1.40055280696535,-15.7960377502853,22.9863716924649,0.278224670104474,44.6264614672515,-81.8271966380095,-31.4480000000001,2.28291641671433,-10.9104614672521,4.31054184371119,61.1174688108092,1.20692174722728,1.93376415332416,2.23304463594,28.5791087829851,7.17122492447833,1.07934106597073,2.28291641671433,31.4538505891748,14.386400795948,12.6349510027204,-3.3360274955022e-19,31.4538505891748,14.386400795948,12.6349510027204,0.00559396646590583,1.40055280696535,-15.7960377502853,22.9863716924649,3.65325190081159e-20,2.26214941082468,0.742971979310012,0,0.0460610709160382,0.0360034334290665,0 +53.8462651937899,91.7996894128938,-57.8668863680019,0.278224670104474,28.5791087829851,-58.1524522937732,15.3159999999991,2.28291641671433,2.92889121701566,-10.6951321962839,40.3684749048802,1.20692174722728,1.93376415332416,2.23304463594,28.8041372064748,-9.22646632800523,24.0379301375147,2.28291641671433,32.8544033961401,-1.40963695433727,35.6213226951853,-3.3360274955022e-19,32.8544033961401,-1.40963695433727,35.6213226951853,0.00559396646590583,53.8462651937899,91.7996894128938,-57.8668863680019,3.65325190081159e-20,-1.3464033961394,2.08713043122767,0,0.0460610709160382,0.0360034334290665,0 +-5.28313207838783,-72.4619881841163,60.078155710155,0.278224670104474,28.8041372064748,-75.064494228519,71.295,2.28291641671433,59.7658627935249,78.1924333365585,-140.752238924674,1.20692174722728,1.93376415332416,2.23304463594,84.2480968122128,83.45865058727,-33.6557956376722,2.28291641671433,86.7006685899301,90.3900524585565,-22.2455636728166,-3.3360274955022e-19,86.7006685899301,90.3900524585565,-22.2455636728166,0.00559396646590583,-5.28313207838783,-72.4619881841163,60.078155710155,3.65325190081159e-20,1.86933141006965,-2.76280996728743,0,0.0460610709160382,0.0360034334290665,0 +3.55338519906747,42.8654229760552,-26.7265392469575,0.278224670104474,84.2480968122128,-109.108427840645,-116.324999999999,2.28291641671433,2.4299031877871,-52.1910805275399,133.370281991039,1.20692174722728,1.93376415332416,2.23304463594,80.9066010159517,17.2094924926863,36.9063839694212,2.28291641671433,81.4175365115422,17.9280642744402,37.8325920373384,-3.3360274955022e-19,81.4175365115422,17.9280642744402,37.8325920373384,0.00559396646590583,3.55338519906747,42.8654229760552,-26.7265392469575,3.65325190081159e-20,5.26046348845766,2.2480191805135,0,0.0460610709160382,0.0360034334290665,0 +-2.21444441818889,-3.73949895697759,4.5234465042328,0.278224670104474,80.9066010159517,-167.71988125806,83.3940000000002,2.28291641671433,4.16039898404924,41.5940321433193,-61.0785773467868,1.20692174722728,1.93376415332416,2.23304463594,84.6621663734462,59.9455212107892,9.71887604813204,2.28291641671433,84.9709217106097,60.7934872504954,11.1060527903809,-3.3360274955022e-19,84.9709217106097,60.7934872504954,11.1060527903809,0.00559396646590583,-2.21444441818889,-3.73949895697759,4.5234465042328,3.65325190081159e-20,0.0960782893912347,-0.613094769103416,0,0.0460610709160382,0.0360034334290665,0 +-61.8821246271085,-23.8841107621224,24.3259031028669,0.278224670104474,84.6621663734462,-133.568001928516,-25.5100000000002,2.28291641671433,2.99283362655267,6.40603481264856,15.2049289913891,1.20692174722728,1.93376415332416,2.23304463594,84.9805780727401,60.9355113740381,21.1684446753349,2.28291641671433,82.7564772924208,57.0539882935178,15.6294992946137,-3.3360274955022e-19,82.7564772924208,57.0539882935178,15.6294992946137,0.00559396646590583,-61.8821246271085,-23.8841107621224,24.3259031028669,3.65325190081159e-20,4.89852270757803,-0.750611625124759,0,0.0460610709160382,0.0360034334290665,0 +34.6455455644592,25.5774907032409,-23.5465641579818,0.278224670104474,84.9805780727401,-133.305809935082,-15.7220000000011,2.28291641671433,-69.5115780727392,-11.6617422641511,53.430794665018,1.20692174722728,1.93376415332416,2.23304463594,20.0596471071247,32.1878529118192,38.8060587165158,2.28291641671433,20.8743526653123,33.1698775313954,39.9554023974806,-3.3360274955022e-19,20.8743526653123,33.1698775313954,39.9554023974806,0.00559396646590583,34.6455455644592,25.5774907032409,-23.5465641579818,3.65325190081159e-20,-5.40535266531139,1.78521427503003,0,0.0460610709160382,0.0360034334290665,0 +-6.24594678582318,13.210794478746,-1.0424642566808,0.278224670104474,20.0596471071247,-13.6627690473229,-5.50999999999794,2.28291641671433,33.8903528928742,8.707357480741,-57.4025213099285,1.20692174722728,1.93376415332416,2.23304463594,54.275638383321,55.6928671997552,11.5440960161871,2.28291641671433,55.5198982297715,58.7473682346363,16.4088382394989,-3.3360274955022e-19,55.5198982297715,58.7473682346363,16.4088382394989,0.00559396646590583,-6.24594678582318,13.210794478746,-1.0424642566808,3.65325190081159e-20,-1.56989822977259,-1.25902942372699,0,0.0460610709160382,0.0360034334290665,0 +57.5425023933903,-33.9810288936273,20.5014398193536,0.278224670104474,54.275638383321,-68.3657348192642,-45.5660000000023,2.28291641671433,-9.60263838332028,9.59196583359012,-13.9297760212546,1.20692174722728,1.93376415332416,2.23304463594,45.7900355743562,64.2584966536512,3.45095773294799,2.28291641671433,49.2739514439483,71.9581627133823,15.3663739828181,-3.3360274955022e-19,49.2739514439483,71.9581627133823,15.3663739828181,0.00559396646590583,57.5425023933903,-33.9810288936273,20.5014398193536,3.65325190081159e-20,-4.60095144394764,0.158297729926031,0,0.0460610709160382,0.0360034334290665,0 +-25.7932823047505,18.0769797018333,-1.17075829158458,0.278224670104474,45.7900355743562,-40.4044418020201,-79.2759999999982,2.28291641671433,66.8709644256439,-38.9189796220944,42.6247576408035,1.20692174722728,1.93376415332416,2.23304463594,106.211961634694,36.1280521292226,32.7741426237512,2.28291641671433,106.816453837339,37.977133819755,35.8678138021716,-3.3360274955022e-19,106.816453837339,37.977133819755,35.8678138021716,0.00559396646590583,-25.7932823047505,18.0769797018333,-1.17075829158458,3.65325190081159e-20,5.8445461626614,-0.336096477266823,0,0.0460610709160382,0.0360034334290665,0 +31.1200130999785,-29.4139612994629,7.03406430109797,0.278224670104474,106.211961634694,-206.642145892936,66.7300000000002,2.28291641671433,-22.0619616346946,36.7378133721947,0.447856621332903,1.20692174722728,1.93376415332416,2.23304463594,81.6078030552845,57.8469450078925,37.698086960499,2.28291641671433,81.0231715325882,56.0541135215884,34.697055510587,-3.3360274955022e-19,81.0231715325882,56.0541135215884,34.697055510587,0.00559396646590583,31.1200130999785,-29.4139612994629,7.03406430109797,3.65325190081159e-20,3.12682846741147,1.19884998147163,0,0.0460610709160382,0.0360034334290665,0 +-46.3134517971591,41.4028093593235,-31.0889294841935,0.278224670104474,81.6078030552845,-128.685176261329,3.61199999999849,2.28291641671433,37.7761969447156,-28.9428546547514,30.0048147529782,1.20692174722728,1.93376415332416,2.23304463594,116.135645289377,35.913621084955,56.2855968805336,2.28291641671433,112.143184632567,26.6401522221255,41.731119811685,-3.3360274955022e-19,112.143184632567,26.6401522221255,41.731119811685,0.00559396646590583,-46.3134517971591,41.4028093593235,-31.0889294841935,3.65325190081159e-20,7.24081536743338,0.209412652312157,0,0.0460610709160382,0.0360034334290665,0 +23.7214961702091,-30.5424072288125,13.0336893721638,0.278224670104474,116.135645289377,-229.539282433622,100.594000000001,2.28291641671433,-59.1496452893765,33.983949954643,-69.3076491568785,1.20692174722728,1.93376415332416,2.23304463594,65.7550133652735,68.0413229525159,10.7136325397593,2.28291641671433,65.8297328354075,68.0429615814489,10.6421903274915,-3.3360274955022e-19,65.8297328354075,68.0429615814489,10.6421903274915,0.00559396646590583,23.7214961702091,-30.5424072288125,13.0336893721638,3.65325190081159e-20,-8.84373283540672,-0.628715100519467,0,0.0460610709160382,0.0360034334290665,0 +-61.1804556029114,-17.1825387687425,9.57637806542673,0.278224670104474,65.7550133652735,-82.2558504538236,-59.6139999999989,2.28291641671433,33.1359866347261,-22.1566386053712,43.0727793593823,1.20692174722728,1.93376415332416,2.23304463594,94.004395508068,46.9554435672053,38.1324916263416,2.28291641671433,89.5512290056166,37.5005543526365,23.6758796996553,-3.3360274955022e-19,89.5512290056166,37.5005543526365,23.6758796996553,0.00559396646590583,-61.1804556029114,-17.1825387687425,9.57637806542673,3.65325190081159e-20,9.33977099438302,-0.248602339797266,0,0.0460610709160382,0.0360034334290665,0 +-0.745077456450834,48.4644381520388,-36.7920462394708,0.278224670104474,94.004395508068,-167.911746165522,38.225999999999,2.28291641671433,-71.9173955080685,-12.358486974459,27.1142745554304,1.20692174722728,1.93376415332416,2.23304463594,29.5539154953206,23.7364167781165,38.9059180609119,2.28291641671433,28.3707734027052,20.3180155838939,33.252257765082,-3.3360274955022e-19,28.3707734027052,20.3180155838939,33.252257765082,0.00559396646590583,-0.745077456450834,48.4644381520388,-36.7920462394708,3.65325190081159e-20,-6.2837734027057,1.04489505086196,0,0.0460610709160382,0.0360034334290665,0 +50.2640539029866,-8.57193818458777,1.87806972783677,0.278224670104474,29.5539154953206,-43.8153900683306,20.9869999999994,2.28291641671433,-10.1529154953208,29.3595748138307,-89.8625120399341,1.20692174722728,1.93376415332416,2.23304463594,25.0769242732909,63.5013040175439,-11.5533162382028,2.28291641671433,27.6256959462544,68.7824537359327,-3.53978847438883,-3.3360274955022e-19,27.6256959462544,68.7824537359327,-3.53978847438883,0.00559396646590583,50.2640539029866,-8.57193818458777,1.87806972783677,3.65325190081159e-20,-8.22469594625456,-0.783148715922422,0,0.0460610709160382,0.0360034334290665,0 +-15.1613446065772,-20.1809484983777,31.374447609823,0.278224670104474,25.0769242732909,6.18261996430765,-113.479,2.28291641671433,50.9390757267088,-28.9482224198776,-8.60395963282303,1.20692174722728,1.93376415332416,2.23304463594,74.9111000820206,52.3351221274061,-14.4338558272093,2.28291641671433,77.889749849241,60.2105155513449,-1.66171874655207,-3.3360274955022e-19,77.889749849241,60.2105155513449,-1.66171874655207,0.00559396646590583,-15.1613446065772,-20.1809484983777,31.374447609823,3.65325190081159e-20,-1.87374984924142,-1.82765875307847,0,0.0460610709160382,0.0360034334290665,0 +3.41085042530423,22.8322298759713,-3.07939067336016,0.278224670104474,74.9111000820206,-118.890249488641,-44.1930000000009,2.28291641671433,-11.3201000820203,-4.99124526170388,59.8016586572488,1.20692174722728,1.93376415332416,2.23304463594,59.9075351466932,33.406895103557,19.2882550604212,2.28291641671433,62.7284052426638,40.0295670529672,29.712728863271,-3.3360274955022e-19,62.7284052426638,40.0295670529672,29.712728863271,0.00559396646590583,3.41085042530423,22.8322298759713,-3.07939067336016,3.65325190081159e-20,0.862594757336529,0.998787787406387,0,0.0460610709160382,0.0360034334290665,0 +83.1191759801222,-15.2634118909192,5.43600023803585,0.278224670104474,59.9075351466932,-103.52461380317,12.3820000000003,2.28291641671433,3.00546485330727,21.7398139226549,-21.024743833649,1.20692174722728,1.93376415332416,2.23304463594,61.5691206342009,53.2423116909884,11.9645027477777,2.28291641671433,66.139255667968,62.8617969289385,26.6333381899108,-3.3360274955022e-19,66.139255667968,62.8617969289385,26.6333381899108,0.00559396646590583,83.1191759801222,-15.2634118909192,5.43600023803585,3.65325190081159e-20,-3.22625566796758,0.81250174070094,0,0.0460610709160382,0.0360034334290665,0 +-68.498153026462,-15.3594776441637,26.7391977381373,0.278224670104474,61.5691206342009,-87.4871069014708,-32.9509999999982,2.28291641671433,98.2948793657987,-20.7611347932905,12.0473328765028,1.20692174722728,1.93376415332416,2.23304463594,150.175781089018,48.2130921792206,32.3814032694215,2.28291641671433,149.25843164809,47.5983850380193,32.0693384279466,-3.3360274955022e-19,149.25843164809,47.5983850380193,32.0693384279466,0.00559396646590583,-68.498153026462,-15.3594776441637,26.7391977381373,3.65325190081159e-20,10.6055683519093,-1.63968412809697,0,0.0460610709160382,0.0360034334290665,0 +28.9352239961835,35.9119574693072,-35.4893090575705,0.278224670104474,150.175781089018,-295.045836024249,86.1309999999983,2.28291641671433,-68.348781089017,15.5144753175626,64.7152001495587,1.20692174722728,1.93376415332416,2.23304463594,81.4680960166358,34.9922577552088,63.6074194937829,2.28291641671433,80.7602786216283,32.2389073938556,58.808536166084,-3.3360274955022e-19,80.7602786216283,32.2389073938556,58.808536166084,0.00559396646590583,28.9352239961835,35.9119574693072,-35.4893090575705,3.65325190081159e-20,1.06672137837285,2.82287231272073,0,0.0460610709160382,0.0360034334290665,0 +-33.3876777383239,0.68753170672233,16.7377411517701,0.278224670104474,81.4680960166358,-151.220533139959,75.091000000001,2.28291641671433,22.1109039833639,8.02309603166714,-86.8080923463328,1.20692174722728,1.93376415332416,2.23304463594,108.160105775368,63.659409866493,15.8717139576175,2.28291641671433,109.695502617812,68.1508648631628,23.3192271085135,-3.3360274955022e-19,109.695502617812,68.1508648631628,23.3192271085135,0.00559396646590583,-33.3876777383239,0.68753170672233,16.7377411517701,3.65325190081159e-20,-6.11650261781209,-2.67028745102086,0,0.0460610709160382,0.0360034334290665,0 +61.5265009933711,-56.1022946395656,31.5689097274954,0.278224670104474,108.160105775368,-183.563689048635,-3.28700000000026,2.28291641671433,-34.3831057753683,13.6344644514409,27.2703293560729,1.20692174722728,1.93376415332416,2.23304463594,73.2959900664472,62.1479442671099,29.6878984677737,2.28291641671433,76.3078248794879,68.8383965698851,40.0569682602836,-3.3360274955022e-19,76.3078248794879,68.8383965698851,40.0569682602836,0.00559396646590583,61.5265009933711,-56.1022946395656,31.5689097274954,3.65325190081159e-20,-2.53082487948785,1.04634601180086,0,0.0460610709160382,0.0360034334290665,0 +-17.5704217270284,91.7779581585514,-51.8906619558674,0.278224670104474,73.2959900664472,-105.385747313341,-21.3119999999987,2.28291641671433,70.0200099335516,-63.0168146024253,69.6044480238239,1.20692174722728,1.93376415332416,2.23304463594,137.255641182461,11.9226659760621,70.577690769662,2.28291641671433,137.834325872859,12.7361019303195,71.625877987779,-3.3360274955022e-19,137.834325872859,12.7361019303195,71.625877987779,0.00559396646590583,-17.5704217270284,91.7779581585514,-51.8906619558674,3.65325190081159e-20,5.48167412713993,0.734357207646339,0,0.0460610709160382,0.0360034334290665,0 +-39.7572738627156,-19.9014832225214,20.0823074176708,0.278224670104474,137.255641182461,-301.804513869563,183.987999999999,2.28291641671433,-14.1346411824601,103.301238441092,-113.967303545849,1.20692174722728,1.93376415332416,2.23304463594,121.368137155302,106.159602913506,21.9220686717108,2.28291641671433,120.263904145831,104.514060088871,19.7352160319116,-3.3360274955022e-19,120.263904145831,104.514060088871,19.7352160319116,0.00559396646590583,-39.7572738627156,-19.9014832225214,20.0823074176708,3.65325190081159e-20,2.85709585417039,-1.244564898403,0,0.0460610709160382,0.0360034334290665,0 +10.3927244465657,-28.4680516509646,20.1321722515072,0.278224670104474,121.368137155302,-171.253282012899,-69.0289999999995,2.28291641671433,-45.1661371553031,-13.7279418079938,40.6282959454399,1.20692174722728,1.93376415332416,2.23304463594,79.4699644998533,81.978385759158,35.5858070184613,2.28291641671433,80.506630283115,84.6125768663494,39.8175234495824,-3.3360274955022e-19,80.506630283115,84.6125768663494,39.8175234495824,0.00559396646590583,10.3927244465657,-28.4680516509646,20.1321722515072,3.65325190081159e-20,-4.30463028311573,0.326578066486861,0,0.0460610709160382,0.0360034334290665,0 +6.53860092705934,76.0420773358994,-52.9784462552616,0.278224670104474,79.4699644998533,-99.6672473833638,-48.9010000000014,2.28291641671433,15.0810355001462,-21.6654513102811,48.2587652748014,1.20692174722728,1.93376415332416,2.23304463594,91.1981871219979,57.841034153403,63.0438811848087,2.28291641671433,90.8993547296807,56.1445252153848,59.9496957010896,-3.3360274955022e-19,90.8993547296807,56.1445252153848,59.9496957010896,0.00559396646590583,6.53860092705934,76.0420773358994,-52.9784462552616,3.65325190081159e-20,3.65164527031878,1.60885702388598,0,0.0460610709160382,0.0360034334290665,0 +35.0296037183756,-47.3168494356065,31.1656974104122,0.278224670104474,91.1981871219979,-150.611964982592,38.5600000000006,2.28291641671433,-0.346187121997133,57.6918086854021,-127.121062151742,1.20692174722728,1.93376415332416,2.23304463594,95.0302893631936,126.506334823993,-1.98161971520742,2.28291641671433,97.43795565674,132.186602551284,6.971249445828,-3.3360274955022e-19,97.43795565674,132.186602551284,6.971249445828,0.00559396646590583,35.0296037183756,-47.3168494356065,31.1656974104122,3.65325190081159e-20,-6.58595565673927,-1.73298962159389,0,0.0460610709160382,0.0360034334290665,0 +38.6847852438609,5.25165414340134,-7.58647695705795,0.278224670104474,95.0302893631936,-90.7057551490206,-159.964,2.28291641671433,39.4797106368066,-51.155936016321,65.0585230217792,1.20692174722728,1.93376415332416,2.23304463594,130.791077675163,81.6347333399328,33.3433890047032,2.28291641671433,132.467559375116,84.8697531156778,38.1369468562401,-3.3360274955022e-19,132.467559375116,84.8697531156778,38.1369468562401,0.00559396646590583,38.6847852438609,5.25165414340134,-7.58647695705795,3.65325190081159e-20,2.04244062488461,0.96181117030025,0,0.0460610709160382,0.0360034334290665,0 +-76.1719047274779,-19.8874093192543,25.3910860889686,0.278224670104474,130.791077675163,-217.316301346153,0.865000000000258,2.28291641671433,47.9969223248379,5.94734464514437,-11.8418173142789,1.20692174722728,1.93376415332416,2.23304463594,173.527036733446,94.1084528788827,36.1498690243201,2.28291641671433,171.152344618977,90.1214072590791,30.5504698991822,-3.3360274955022e-19,171.152344618977,90.1214072590791,30.5504698991822,0.00559396646590583,-76.1719047274779,-19.8874093192543,25.3910860889686,3.65325190081159e-20,7.63565538102398,-1.57433384427676,0,0.0460610709160382,0.0360034334290665,0 +-6.27773895144256,55.5571661132233,-39.7109288221085,0.278224670104474,173.527036733446,-302.524773940422,21.4600000000005,2.28291641671433,-79.9230367334465,5.76051893122582,62.3154951095798,1.20692174722728,1.93376415332416,2.23304463594,96.158873209455,73.5979703786358,61.4910675478164,2.28291641671433,94.9804398914986,70.2339979398248,55.9415559881507,-3.3360274955022e-19,94.9804398914986,70.2339979398248,55.9415559881507,0.00559396646590583,-6.27773895144256,55.5571661132233,-39.7109288221085,3.65325190081159e-20,-1.37643989149924,2.11215038360181,0,0.0460610709160382,0.0360034334290665,0 +45.4151705409341,-44.0669639191153,21.2399016208332,0.278224670104474,96.158873209455,-146.193739814404,10.4539999999997,2.28291641671433,-13.2888732094542,43.1013863838965,-92.9618106097072,1.20692174722728,1.93376415332416,2.23304463594,87.312025831372,122.872857631291,11.7846894312129,2.28291641671433,88.702700940056,125.791164053048,16.2306271660422,-3.3360274955022e-19,88.702700940056,125.791164053048,16.2306271660422,0.00559396646590583,45.4151705409341,-44.0669639191153,21.2399016208332,3.65325190081159e-20,-5.83270094005524,-0.859276190065301,0,0.0460610709160382,0.0360034334290665,0 +48.7944877380894,-3.34353537974763,-9.26355849758477,0.278224670104474,87.312025831372,-76.6974871261303,-146.648999999998,2.28291641671433,48.5529741686278,-55.0041541502266,46.7571738637618,1.20692174722728,1.93376415332416,2.23304463594,133.362952250162,80.882596034138,36.5422398181138,2.28291641671433,134.11787148099,81.7242001339329,37.4705287868754,-3.3360274955022e-19,134.11787148099,81.7242001339329,37.4705287868754,0.00559396646590583,48.7944877380894,-3.34353537974763,-9.26355849758477,3.65325190081159e-20,1.74712851900958,0.78236325118806,0,0.0460610709160382,0.0360034334290665,0 +-142.312801838432,58.1202789926254,-17.9456401763187,0.278224670104474,133.362952250162,-223.94700910909,8.13999999999987,2.28291641671433,60.977047749838,-1.48139861893543,-6.13088977744761,1.20692174722728,1.93376415332416,2.23304463594,188.053508896533,88.5909664963366,43.4864240961404,2.28291641671433,182.91235921908,78.3806647541852,28.2069702892906,-3.3360274955022e-19,182.91235921908,78.3806647541852,28.2069702892906,0.00559396646590583,-142.312801838432,58.1202789926254,-17.9456401763187,3.65325190081159e-20,11.4276407809206,-1.70098653914635,0,0.0460610709160382,0.0360034334290665,0 +150.886137855788,-119.539057620582,37.2797469030498,0.278224670104474,188.053508896533,-341.245625267166,54.3579999999997,2.28291641671433,-159.263508896533,84.6234288564961,-40.2261256361086,1.20692174722728,1.93376415332416,2.23304463594,39.4349090896754,135.599802801137,9.6236965125969,2.28291641671433,40.5995573806478,136.500943746811,10.2613301129719,-3.3360274955022e-19,40.5995573806478,136.500943746811,10.2613301129719,0.00559396646590583,150.886137855788,-119.539057620582,37.2797469030498,3.65325190081159e-20,-11.8095573806487,2.592330266101,0,0.0460610709160382,0.0360034334290665,0 +-171.994287380723,78.3338531000939,-46.8010064190879,0.278224670104474,39.4349090896754,45.4628677390219,-222.141000000002,2.28291641671433,175.975090910324,-132.626955459383,117.951218566809,1.20692174722728,1.93376415332416,2.23304463594,202.049236024009,40.0950771067292,83.2439181894489,2.28291641671433,191.485695236436,16.9618861262288,47.5410770160218,-3.3360274955022e-19,191.485695236436,16.9618861262288,47.5410770160218,0.00559396646590583,-171.994287380723,78.3338531000939,-46.8010064190879,3.65325190081159e-20,23.9243047635641,-1.14601130008973,0,0.0460610709160382,0.0360034334290665,0 +42.6826891035478,-36.6149200892608,-13.1865292820717,0.278224670104474,202.049236024009,-421.731748091007,205.103,2.28291641671433,-192.636236024009,107.925478639038,-82.8148160277259,1.20692174722728,1.93376415332416,2.23304463594,24.7682424772164,108.808299787631,22.4883570980476,2.28291641671433,19.491407855713,95.2957392263227,0.740070596933926,-3.3360274955022e-19,19.491407855713,95.2957392263227,0.740070596933926,0.00559396646590583,42.6826891035478,-36.6149200892608,-13.1865292820717,3.65325190081159e-20,-10.0784078557125,1.84062158673386,0,0.0460610709160382,0.0360034334290665,0 +-79.9340584795804,17.1461161450826,-22.2667092302534,0.278224670104474,24.7682424772164,52.1951741254224,-170.359999999999,2.28291641671433,41.9087575227833,-57.2900023304104,-2.61847467925887,1.20692174722728,1.93376415332416,2.23304463594,69.9533417258141,76.2872576137957,14.9871735017763,2.28291641671433,62.1740969592607,58.6808191370619,-12.4464586851377,-3.3360274955022e-19,62.1740969592607,58.6808191370619,-12.4464586851377,0.00559396646590583,-79.9340584795804,17.1461161450826,-22.2667092302534,3.65325190081159e-20,4.50290304073896,-1.37316894446494,0,0.0460610709160382,0.0360034334290665,0 +87.1553719939334,-55.0995403320802,16.4115473419066,0.278224670104474,69.9533417258141,-83.6060949023509,-67.6340000000009,2.28291641671433,-107.326341725814,-4.30277960341976,-52.8713086016574,1.20692174722728,1.93376415332416,2.23304463594,-19.3057525286396,73.3081407266971,-38.204966017966,2.28291641671433,-17.7599615203197,75.8269352821445,-34.7131679153912,-3.3360274955022e-19,-17.7599615203197,75.8269352821445,-34.7131679153912,0.00559396646590583,87.1553719939334,-55.0995403320802,16.4115473419066,3.65325190081159e-20,-19.6130384796799,-0.197133042876066,0,0.0460610709160382,0.0360034334290665,0 +-92.2119586784459,29.7653622675843,2.95168321361497,0.278224670104474,-19.3057525286396,117.435575077873,-204.127,2.28291641671433,93.3857525286396,-79.9431781429881,37.8457100775379,1.20692174722728,1.93376415332416,2.23304463594,70.6585317429228,22.1682499130847,-16.6830319167532,2.28291641671433,69.3954104736136,20.7273949500643,-18.3016205734846,-3.3360274955022e-19,69.3954104736136,20.7273949500643,-18.3016205734846,0.00559396646590583,-92.2119586784459,29.7653622675843,2.95168321361497,3.65325190081159e-20,4.68458952638627,-2.23502815323314,0,0.0460610709160382,0.0360034334290665,0 +68.4658232718748,88.4380541594658,-62.8697149529445,0.278224670104474,70.6585317429228,-139.33696549931,9.63900000000035,2.28291641671433,-101.834531742922,51.1088486428102,-1.41422250277756,1.20692174722728,1.93376415332416,2.23304463594,-26.2666692186044,44.4320073907534,-24.0213159998879,2.28291641671433,-22.8165482048322,50.4927572176486,-15.3499373598697,-3.3360274955022e-19,-22.8165482048322,50.4927572176486,-15.3499373598697,0.00559396646590583,68.4658232718748,88.4380541594658,-62.8697149529445,3.28792671073046e-19,-8.35945179516724,2.81456117130488,0,0.0460610709160382,0.0360034334290665,0 +42.5250191797839,-135.226653723951,98.7316733723133,0.278224670104474,-26.2666692186044,104.470108461849,-139.151999999999,2.28291641671433,66.3196692186043,52.4190588743511,-161.612997665006,1.20692174722728,1.93376415332416,2.23304463594,40.5025565065398,125.723100544239,-99.4883554180621,2.28291641671433,45.6492750670426,138.930811377114,-78.2196523128142,-8.34006873875546e-20,45.6492750670426,138.930811377114,-78.2196523128142,0.00559396646590584,42.5250191797839,-135.226653723951,98.7316733723133,-4.38390228097391e-19,-5.59627506704268,-3.83932550958809,0,0.0460610709160382,0.0360034334290665,0 +-29.148658902359,31.7799903194235,-7.21536045879321,0.278224670104474,40.5025565065398,33.1458285292911,-310.432,2.28291641671433,57.23744349346,-120.386899878318,215.885978339772,1.20692174722728,1.93376415332416,2.23304463594,87.1588443599935,0.919069766021508,15.9572951720488,2.28291641671433,88.1742942468265,3.7041576531631,20.5120210594991,-8.65282131645879e-19,88.1742942468265,3.7041576531631,20.5120210594991,0.00559396646590584,-29.148658902359,31.7799903194235,-7.21536045879321,-2.92260152064928e-19,9.5657057531733,1.73137205386947,0,0.0460610709160382,0.0360034334290665,0 +-2.10122273180331,18.1964390814446,-9.84789910530745,0.278224670104474,87.1588443599935,-198.301145913964,101.277999999999,2.28291641671433,-26.2568443599935,49.6565035906908,-16.9577185350625,1.20692174722728,1.93376415332416,2.23304463594,58.7218229959544,34.887343498079,12.4068640002035,2.28291641671433,59.0256353444675,35.4841479725867,13.2966606007059,-8.65282131645879e-19,59.0256353444675,35.4841479725867,13.2966606007059,0.00559396646590585,-2.10122273180331,18.1964390814446,-9.84789910530745,1.8266259504058e-19,1.87636465553259,0.727018529053145,0,0.0460610709160382,0.0360034334290665,0 +-47.2822605302306,-9.53595561156242,19.0803493071052,0.278224670104473,58.7218229959544,-99.3339662069597,1.35400000000004,2.28291641671433,-1.06182299595458,19.7201112341386,-23.1534425493938,1.20692174722728,1.93376415332416,2.23304463594,57.2683499940399,53.4044463695231,2.55254274500637,2.28291641671433,56.9244126126641,53.6805870540312,3.44876149539843,8.3400687387554e-20,56.9244126126641,53.6805870540312,3.44876149539843,0.00559396646590588,-47.2822605302306,-9.53595561156242,19.0803493071052,-8.40247937186671e-19,0.735587387335714,-1.16192965365585,0,0.0460610709160383,0.0360034334290665,0 +42.3160629436133,9.49514176193526,-3.69077941974301,0.278224670104469,57.2683499940399,-77.4946393311396,-46.9879999999998,2.28291641671433,-54.8743499940397,-3.74744000628773,31.716938393273,1.20692174722728,1.93376415332416,2.23304463594,6.26076893385853,36.8377506810512,11.2967324282434,2.28291641671433,9.64215208243352,44.1446314424688,22.5291108025037,-1.15718453750235e-18,9.64215208243352,44.1446314424688,22.5291108025037,0.005593966465906,42.3160629436133,9.49514176193526,-3.69077941974301,-1.42476824131652e-18,-7.24815208243328,1.0225733173791,0,0.0460610709160386,0.0360034334290665,0 +42.4887914559583,24.9340791032158,-3.69363324952351,0.278224670104457,6.26076893385853,22.5274216893745,-56.1180000000004,2.28291641671433,40.7342310661405,-10.7687506446841,-27.3900443270394,1.20692174722728,1.93376415332416,2.23304463594,46.3560668495819,41.0375744605768,-0.763917928428885,2.28291641671433,51.9582150260468,53.639773204404,18.8383313827606,4.17003436937808e-20,51.9582150260468,53.639773204404,18.8383313827606,0.00559396646590641,42.4887914559583,24.9340791032158,-3.69363324952351,6.57585342146107e-19,-4.96321502604783,-0.595281716294898,0,0.0460610709160394,0.0360034334290666,0 +87.3088026033305,3.1240112964452,0.835219989554381,0.27822467010442,46.3560668495819,-64.9191497670389,-36.4830000000006,2.28291641671433,46.5309331504188,16.607049474976,-29.1550567030859,1.20692174722728,1.93376415332416,2.23304463594,87.9737958544105,64.559347557951,-6.41110073850601,2.28291641671433,94.4470064820051,78.5738523076199,15.1446981332371,1.11548419380873e-18,94.4470064820051,78.5738523076199,15.1446981332371,0.00559396646590761,87.3088026033305,3.1240112964452,0.835219989554381,-7.67182899170498e-19,-1.56000648200446,0.491876794103716,0,0.0460610709160423,0.0360034334290666,0 +-75.616962626128,-41.0142208227011,44.7045209807293,0.278224670104298,87.9737958544105,-136.523614394987,-47.5559999999975,2.28291641671433,108.781204145589,7.9978981653648,1.62381122806272,1.20692174722728,1.93376415332416,2.23304463594,182.881004806541,82.3939079180448,16.2468110295452,2.28291641671433,181.755809085336,81.6978636040651,15.9799181227915,-1.29271065450756e-18,181.755809085336,81.6978636040651,15.9799181227915,0.00559396646591137,-75.616962626128,-41.0142208227011,44.7045209807293,-8.76780456195001e-19,14.9991909146635,-1.68172855186642,0,0.0460610709160513,0.0360034334290668,0 +-17.142732297232,50.046816584581,-32.3816345336064,0.278224670103906,182.881004806541,-335.61981735405,34.339999999997,2.28291641671433,-75.5250048065417,-7.51259867306212,104.431851138724,1.20692174722728,1.93376415332416,2.23304463594,107.225452297905,43.5278618091188,65.2862713203334,2.28291641671433,106.138846459208,40.683642781364,60.6844391035208,-1.67843883367645e-18,106.138846459208,40.683642781364,60.6844391035208,0.00559396646592365,-17.142732297232,50.046816584581,-32.3816345336064,6.57585342146621e-19,1.21715354079213,2.4342919825393,0,0.0460610709160805,0.0360034334290673,0 +-6.41754412151908,-55.3462274266068,40.4470892683044,0.278224670102643,107.225452297905,-201.558886300377,85.4560000000004,2.28291641671433,-22.4194522979041,44.6751840538118,-75.9716272766421,1.20692174722728,1.93376415332416,2.23304463594,88.4756053968374,88.7141740813237,24.79074276581,2.28291641671433,88.9961141619756,90.7304593659451,28.3028045699145,8.34006873878622e-20,88.9961141619756,90.7304593659451,28.3028045699145,0.00559396646596333,-6.41754412151908,-55.3462274266068,40.4470892683044,-3.65325190082116e-20,-4.19011416197511,-1.55305556714445,0,0.0460610709161748,0.0360034334290691,0 +9.13329754330591,42.4112521489925,-33.7047932453164,0.278224670098573,88.4756053968374,-113.515781111448,-64.162,2.28291641671433,-2.28060539683773,-42.2390343783755,94.5439789392375,1.20692174722728,1.93376415332416,2.23304463594,83.2898734085092,37.7891662232664,72.8484590380225,2.28291641671433,82.5785700404565,35.3842319393383,68.7498938382189,-7.92306530191136e-19,82.5785700404565,35.3842319393383,68.7498938382189,0.0055939664660911,9.13329754330591,42.4112521489925,-33.7047932453164,-1.31517068430327e-18,3.61642995954318,1.94964243884907,0,0.0460610709164786,0.0360034334290749,0 +10.4862341876997,9.78619516092402,-9.20984386585834,0.278224670085454,83.2898734085092,-152.587687281897,80.5599999999988,2.28291641671433,6.42512659149099,32.3453115147589,-74.8458301789705,1.20692174722728,1.93376415332416,2.23304463594,91.6295150735265,77.924503536682,35.3854919998408,2.28291641671433,91.7118675837624,77.7954840883308,35.0451005929025,-1.37611134194708e-18,91.7118675837624,77.7954840883308,35.0451005929025,0.00559396646650294,10.4862341876997,9.78619516092402,-9.20984386585834,-1.09597557027328e-19,-1.99686758376229,-0.631215325446986,0,0.0460610709174576,0.0360034334290934,0 +17.82394027967,-31.3587472901624,5.96656514001,0.278224670043172,91.6295150735265,-131.51438805995,-28.8339999999966,2.28291641671433,15.1194849264733,14.6736766633553,-12.7352204122687,1.20692174722728,1.93376415332416,2.23304463594,104.185045296892,92.5180084825877,33.7209716682803,2.28291641671433,102.198101771462,87.5816792492548,25.8352567270441,2.50202062193382e-19,102.198101771462,87.5816792492548,25.8352567270441,0.00559396646783031,17.82394027967,-31.3587472901624,5.96656514001,-1.3151706844074e-18,4.55089822853765,0.416267656946348,0,0.0460610709206129,0.036003433429153,0 +-56.6247696545633,51.1692879180275,-33.6236545093822,0.278224669906896,104.185045296892,-145.619237910308,-47.1300000000033,2.28291641671433,19.6459547031082,-35.2567764723707,26.7695949567882,1.20692174722728,1.93376415332416,2.23304463594,123.862622975548,65.0055374781367,45.5264519807267,2.28291641671433,120.022042051132,56.2229319590924,31.8018218670541,2.08501718551367e-19,120.022042051132,56.2229319590924,31.8018218670541,0.0055939664721083,-56.6247696545633,51.1692879180275,-33.6236545093822,-1.16904060858982e-18,3.80895794886799,-0.129121556505641,0,0.0460610709307825,0.0360034334293451,0 +31.1581672338888,-45.9294774786302,23.8908778088489,0.278224669467683,123.862622975548,-218.109029323117,39.3780000000015,2.28291641671433,-70.4406229755478,45.9247352519719,-77.6121789204967,1.20692174722728,1.93376415332416,2.23304463594,62.6458093291573,105.719504520198,-4.41580028876032,2.28291641671433,63.3972723965689,107.39221987712,-1.82183264232805,-8.34006874938824e-19,63.3972723965689,107.39221987712,-1.82183264232805,0.0055939664858962,31.1581672338888,-45.9294774786302,23.8908778088489,1.82662595206821e-19,-9.97527239656837,-0.691597256392461,0,0.046061070963559,0.0360034334299644,0 +-30.9767263536933,-47.1587366158077,39.9502531220799,0.278224668052102,62.6458093291573,-37.4709168035902,-153.208999999999,2.28291641671433,32.972190670843,-55.6719665327979,50.9624909016898,1.20692174722728,1.93376415332416,2.23304463594,94.6155474868825,60.4340218946876,19.9514963024918,2.28291641671433,94.5554396304576,61.4627423984897,22.0690451665209,-3.23177664954707e-19,94.5554396304576,61.4627423984897,22.0690451665209,0.00559396653033458,-30.9767263536933,-47.1587366158077,39.9502531220799,-1.6804958793026e-18,1.06256036954277,-1.19145181458669,0,0.0460610710691972,0.0360034334319604,0 +91.5376682534599,59.2767901533904,-66.4070879466817,0.278224663489702,94.6155474868825,-155.830086646758,-6.30100000000085,2.28291641671433,-29.0695474868822,-26.3791262745279,94.8594142499305,1.20692174722728,1.93376415332416,2.23304463594,63.5344498745935,16.8085639891862,67.0726781037801,2.28291641671433,63.5787132767643,14.304005782682,62.0192982886008,-1.37611136011868e-18,63.5787132767643,14.304005782682,62.0192982886008,0.00559396667355885,91.5376682534599,59.2767901533904,-66.4070879466817,-7.67182906423171e-19,1.96728672323598,4.09933884992112,0,0.0460610714096678,0.0360034334383934,0 +-104.551329388329,-17.0623444078379,13.1096405726545,0.278224648785141,63.5344498745935,-128.41303572417,96.9900000000011,2.28291641671433,103.704550125406,41.4967528460152,-128.195210232275,1.20692174722728,1.93376415332416,2.23304463594,161.679793291035,87.2951033508482,16.4774134106601,2.28291641671433,155.116381530224,73.5807959360723,-4.38778965808086,-2.0850172736824e-19,155.116381530224,73.5807959360723,-4.38778965808086,0.00559396713516906,-104.551329388329,-17.0623444078379,13.1096405726545,-1.1690406438795e-18,12.1226184697754,-3.18963815270142,0,0.0460610725070007,0.0360034334591268,0 +-39.6878924063672,14.4807536644375,-17.1576002647594,0.278224601392514,161.679793291035,-282.258709885803,3.56699999999867,2.28291641671433,-115.155793291036,5.29378038729293,44.6213972836615,1.20692174722728,1.93376415332416,2.23304463594,54.9117957609828,66.516422126025,24.3710484910672,2.28291641671433,50.5650521418953,56.5184515282345,8.72185091457368,-9.59108036896397e-19,50.5650521418953,56.5184515282345,8.72185091457368,0.00559396862293343,-39.6878924063672,14.4807536644375,-17.1576002647594,-6.57585406722288e-19,-4.04105214189581,1.11823908181274,0,0.0460610760436916,0.0360034335259504,0 +84.8966661343739,25.8027997327654,-44.44106666884,0.278224448646638,54.9117957609828,-58.9962538990786,-53.75,2.28291641671433,-51.4577957609831,8.92954539604678,-32.1640713583996,1.20692174722728,1.93376415332416,2.23304463594,11.2504289751792,74.0271440775949,-2.753140819991,2.28291641671433,10.8771597355281,70.999205192672,-8.43574935018571,-4.58703984006947e-19,10.8771597355281,70.999205192672,-8.43574935018571,0.00559397341798227,84.8966661343739,25.8027997327654,-44.44106666884,-9.49845794840831e-19,-7.42315973552837,1.668017059965,0,0.0460610874424047,0.036003433741322,0 +-55.2884159395498,-11.9372030526201,20.9860098343077,0.278223956348482,11.2504289751792,48.3118778486138,-139.557000000002,2.28291641671433,83.5125710248216,-15.1735325937378,-99.048944337334,1.20692174722728,1.93376415332416,2.23304463594,96.5792502855868,97.4630625693011,-52.3601251469831,2.28291641671433,95.773825869902,96.8020049254374,-52.8768160190257,-1.53248982063357e-18,95.773825869902,96.8020049254374,-52.8768160190257,0.00559398887238657,-55.2884159395498,-11.9372030526201,20.9860098343077,-1.46130225098055e-19,-1.01082586990117,-3.5915457942351,0,0.0460611241803225,0.0360034344354621,0 +56.3537138231881,-76.1549480185775,33.3523901396588,0.278222369677335,96.5792502855868,-123.28950951204,-150.706999999999,2.28291641671433,-57.357250285587,8.04671038240497,47.0146843606452,1.20692174722728,1.93376415332416,2.23304463594,40.2987583187715,84.7996101171903,-31.8345380843913,2.28291641671433,40.4854099303522,84.8648018728173,-31.890806184718,2.81478616296806e-19,40.4854099303522,84.8648018728173,-31.890806184718,0.00559403868194226,56.3537138231881,-76.1549480185775,33.3523901396588,-4.74924308524589e-19,-1.26340993035249,1.5229922537027,0,0.0460612425861979,0.0360034366726675,0 +11.7952249733316,15.940557865963,-27.5861092414084,0.278217255854951,40.2987583187715,-7.31183746857324,-161.135,2.28291641671433,63.7772416812294,-82.8729347954253,87.016482976659,1.20692174722728,1.93376415332416,2.23304463594,99.819027487972,16.4700059521078,14.0019844162454,2.28291641671433,96.8391237535404,8.70985385423975,1.4615839549408,0,96.8391237535404,8.70985385423975,1.4615839549408,0.00559419921955546,11.7952249733316,15.940557865963,-27.5861092414084,7.30658122370444e-20,7.23687624646056,1.14871472527862,0,0.0460616242069373,0.0360034438831543,0 +-40.1214064281152,0.821892276834132,-20.3688090182161,0.278200774065757,99.819027487972,-211.687771163257,80.8810000000017,2.28291641671433,17.3129725120277,20.9864643770741,-36.1469347022112,1.20692174722728,1.93376415332416,2.23304463594,115.66951123807,41.1082169146352,-0.244077408801015,2.28291641671433,108.634348726872,24.6504117202027,-26.1245252864676,1.77234939402757e-19,108.634348726872,24.6504117202027,-26.1245252864676,0.0055947166511965,-40.1214064281152,0.821892276834132,-20.3688090182161,-8.7681039984927e-19,8.49765127312765,0.0263853697915678,0,0.0460628541660767,0.036003467122468,0 +-89.3179341156912,-34.3336438358705,12.6516464439509,0.278147653453682,115.66951123807,-223.279237343811,33.2089999999989,2.28291641671433,-45.529511238071,4.36288220470144,-19.0322550465775,1.20692174722728,1.93376415332416,2.23304463594,76.6294720350928,43.1512956600619,-19.2518807149696,2.28291641671433,68.5129422987568,25.4723039970369,-46.4933343046837,-1.08437611153301e-18,68.5129422987568,25.4723039970369,-46.4933343046837,0.00559638454342716,-89.3179341156912,-34.3336438358705,12.6516464439509,-9.49950044593173e-19,1.62705770124263,-1.19129302844856,0,0.0460668183098684,0.0360035420225019,0 +61.6088330108795,-3.3983072081197,-42.2484474271183,0.277976446347835,76.6294720350928,-132.001783277293,-28.9250000000006,2.28291641671433,-101.013472035093,-18.3892634237541,53.0278724635838,1.20692174722728,1.93376415332416,2.23304463594,-15.174539944376,6.28790789832553,-9.17364425897292,2.28291641671433,-20.8049918169344,-8.86133983883364,-33.8416878607328,-1.14732934110922e-19,-20.8049918169344,-8.86133983883364,-33.8416878607328,0.00560176238611035,61.6088330108795,-3.3983072081197,-42.2484474271183,-2.55818354308168e-19,-3.57900818306557,3.04192997155495,0,0.0460795946985288,0.0360037834244273,0 +-130.448669009423,-70.8963068546065,39.5320553002084,0.277424647866082,-15.174539944376,40.9725706283278,-36.924,2.28291641671433,63.5755399443758,-29.2838333042802,-62.6166583752371,1.20692174722728,1.93376415332416,2.23304463594,51.0101605620534,9.28115078390457,-43.2148589942437,2.28291641671433,40.8038411939451,-12.2596470469534,-76.0901352878512,-3.75904210519597e-19,40.8038411939451,-12.2596470469534,-76.0901352878512,0.00561911844841079,-130.448669009423,-70.8963068546065,39.5320553002084,-1.24352584338536e-18,7.59715880605475,-3.70528736688643,0,0.0461207728484088,0.036004561459984,0 +-78.7950251089892,43.1680749549959,-45.8898249810156,0.275646207871097,51.0101605620534,-107.31350192936,-10.7669999999994,2.28291641671433,-141.676160562053,-38.2155716964453,121.154423413636,1.20692174722728,1.93376415332416,2.23304463594,-80.4848013634057,-61.8460833914943,-3.0983654195837,2.28291641671433,-89.6448278154778,-83.1559539015599,-36.5580799876428,-8.48791096041503e-19,-89.6448278154778,-83.1559539015599,-36.5580799876428,0.00567529964194153,-78.7950251089892,43.1680749549959,-45.8898249810156,-7.33342896941196e-20,-1.0211721845215,2.19006175189547,0,0.046253489539534,0.0360070690594017,0 +-15.3834596174852,132.441037570511,-92.2994652414994,0.26991431675388,-80.4848013634057,122.119176867719,40.1089999999992,2.28291641671433,-102.195198636595,28.6615811279868,-91.0159077598105,1.20692174722728,1.93376415332416,2.23304463594,-166.121655959429,-33.1861128482466,-71.1625697370612,2.28291641671433,-168.439852924467,-39.987878946564,-82.4479049686583,-1.271824302914e-19,-168.439852924467,-39.987878946564,-82.4479049686583,0.00585890571645535,-15.3834596174852,132.441037570511,-92.2994652414994,-4.43596998017915e-19,-14.2401470755334,0.136786547781755,0,0.0466812338688579,0.036015151022734,0 +161.15929830618,-109.314962194215,78.365777305395,0.251440495425273,-166.121655959429,346.520529344734,-170.911999999997,2.28291641671433,-50.388344040571,66.4216982576501,-248.938180615598,1.20692174722728,1.93376415332416,2.23304463594,-196.150910353453,64.4106561217909,-218.504777402968,2.28291641671433,-183.823312541952,92.4531586239467,-174.747370210158,-8.01840250191455e-19,-183.823312541952,92.4531586239467,-174.747370210158,0.00647741551404198,161.15929830618,-109.314962194215,78.365777305395,-4.55171898847158e-19,-32.6866874580481,-3.84073014840672,0,0.0480598487960337,0.0360411991012893,0 +83.4946259581301,17.5189042595225,21.4221825609116,0.191875700193877,-196.150910353453,512.755594072542,-543.477000000003,2.28291641671433,172.244910353454,-150.706421697903,129.666501779988,1.20692174722728,1.93376415332416,2.23304463594,-35.4580266729815,-46.3594929096956,-142.582959146407,2.28291641671433,-22.6640142357717,-16.8618035702686,-96.3815929047628,-2.93444175326502e-19,-22.6640142357717,-16.8618035702686,-96.3815929047628,0.008762776527057,83.4946259581301,17.5189042595225,21.4221825609116,-4.53927726261809e-19,-1.24198576422731,-0.499371825784018,0,0.0525031206463513,0.0361252007988076,0 +0,0,0,0,-35.4580266729815,34.6874251999763,-85.3219999999974,2.28291641671433,124.295026672981,65.6635991477521,47.8366898577711,1.20692174722728,1.93376415332416,2.23304463594,60.8306117223583,0.657100689253895,-74.9594103438512,2.28291641671433,60.8306117223583,0.657100689253905,-74.9594103438512,-2.10089315196376e-18,60.8306117223583,0.657100689253905,-74.9594103438512,0.0196605678274483,0,0,0,1,28.0063882776412,2.32829753328047,0,0.0669217472272777,0.0367896959894586,0 diff --git a/statsmodels/tsa/statespace/tests/results/results_structural.py b/statsmodels/tsa/statespace/tests/results/results_structural.py new file mode 100644 index 0000000..ad3b6f0 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_structural.py @@ -0,0 +1,256 @@ +""" +Results for SARIMAX tests + +Results from R, KFAS library using script `test_ucm.R`. +See also Stata time series documentation. + +Author: Chad Fulton +License: Simplified-BSD +""" +from numpy import pi + +irregular = { + 'models': [ + {'irregular': True}, + {'level': 'irregular'}, + {'level': 'ntrend'}, + ], + 'params': [36.74687342], + 'llf': -653.8562525, + 'kwargs': {} +} + +# this model will issue a warning that there is no stochastic component, and +# will then add an irregular component. Thus it's output will be just like +# the "deterministic constant" model. +fixed_intercept = { + 'models': [ + {'level': True}, + {'level': 'fixed intercept'}, + ], + 'params': [2.127438969], + 'llf': -365.5289923, + 'kwargs': {} +} + +deterministic_constant = { + 'models': [ + {'irregular': True, 'level': True}, + {'level': 'deterministic constant'}, + {'level': 'dconstant'}, + ], + 'params': [2.127438969], + 'llf': -365.5289923, + 'kwargs': {} +} + +local_level = { + 'models': [ + {'irregular': True, 'level': True, 'stochastic_level': True}, + {'level': 'local level'}, + {'level': 'llevel'} + ], + 'params': [4.256647886e-06, 1.182078808e-01], + 'llf': -70.97242557, + 'kwargs': {} +} + +random_walk = { + 'models': [ + {'level': True, 'stochastic_level': True}, + {'level': 'random walk'}, + {'level': 'rwalk'}, + ], + 'params': [0.1182174646], + 'llf': -70.96771641, + 'kwargs': {} +} + + +# this model will issue a warning that there is no stochastic component, and +# will then add an irregular component. Thus it's output will be just like +# the "deterministic trend" model. +fixed_slope = { + 'models': [ + {'level': True, 'trend': True}, + {'level': 'fixed slope'}, + ], + 'params': [2.134137554], + 'llf': -370.7758666, + 'kwargs': {} +} + +deterministic_trend = { + 'models': [ + {'irregular': True, 'level': True, 'trend': True}, + {'level': 'deterministic trend'}, + {'level': 'dtrend'}, + ], + 'params': [2.134137554], + 'llf': -370.7758666, + 'kwargs': {} +} + +local_linear_deterministic_trend = { + 'models': [ + {'irregular': True, 'level': True, 'stochastic_level': True, + 'trend': True}, + {'level': 'local linear deterministic trend'}, + {'level': 'lldtrend'}, + ], + 'params': [4.457592057e-06, 1.184455029e-01], + 'llf': -73.47291031, + 'kwargs': {} +} + +random_walk_with_drift = { + 'models': [ + {'level': True, 'stochastic_level': True, 'trend': True}, + {'level': 'random walk with drift'}, + {'level': 'rwdrift'}, + ], + 'params': [0.1184499547], + 'llf': -73.46798576, + 'kwargs': {} +} + +local_linear_trend = { + 'models': [ + {'irregular': True, 'level': True, 'stochastic_level': True, + 'trend': True, 'stochastic_trend': True}, + {'level': 'local linear trend'}, + {'level': 'lltrend'} + ], + 'params': [1.339852549e-06, 1.008704925e-02, 6.091760810e-02], + 'llf': -31.15640107, + 'kwargs': {} +} + +smooth_trend = { + 'models': [ + {'irregular': True, 'level': True, 'trend': True, + 'stochastic_trend': True}, + {'level': 'smooth trend'}, + {'level': 'strend'}, + ], + 'params': [0.0008824099119, 0.0753064234342], + 'llf': -31.92261408, + 'kwargs': {} +} + +random_trend = { + 'models': [ + {'level': True, 'trend': True, 'stochastic_trend': True}, + {'level': 'random trend'}, + {'level': 'rtrend'}, + ], + 'params': [0.08054724989], + 'llf': -32.05607557, + 'kwargs': {} +} + +cycle = { + 'models': [{'irregular': True, 'cycle': True, 'stochastic_cycle': True, + 'damped_cycle': True}], + 'params': [37.57197224, 0.1, 2*pi/10, 1], + 'llf': -672.3102588, + 'kwargs': { + # Required due to the way KFAS estimated loglikelihood which P1inf is + # set in the R code + 'loglikelihood_burn': 0 + } +} + +seasonal = { + 'models': [{'irregular': True, 'seasonal': 4}], + 'params': [38.1704278, 0.1], + 'llf': -678.8138005, + 'kwargs': {'loglikelihood_burn': 0}, + 'rtol': 1e-6 +} + +freq_seasonal = { + 'models': [{'irregular': True, + 'freq_seasonal': [{'period': 5}]}], + 'params': [38.95352534, 0.05], + 'llf': -688.9697249, + 'rtol': 1e-6, + 'kwargs': { + 'loglikelihood_burn': 0 # No idea why KFAS includes all data in this + } +} +reg = { + # Note: The test needs to fill in exog=np.log(dta['realgdp']) + 'models': [ + {'irregular': True, 'exog': True, 'mle_regression': False}, + {'level': 'irregular', 'exog': True, 'mle_regression': False}, + {'level': 'ntrend', 'exog': True, 'mle_regression': False}, + {'level': 'ntrend', 'exog': 'numpy', 'mle_regression': False}, + ], + 'params': [2.215447924], + 'llf': -379.6233483, + 'kwargs': { + # Required due to the way KFAS estimated loglikelihood which P1inf is + # set in the R code + 'loglikelihood_burn': 0 + } +} + +rtrend_ar1 = { + 'models': [ + {'level': True, 'trend': True, 'stochastic_trend': True, + 'autoregressive': 1}, + {'level': 'random trend', 'autoregressive': 1}, + {'level': 'rtrend', 'autoregressive': 1} + ], + 'params': [0.0609, 0.0097, 0.9592], + 'llf': -31.15629379, + 'kwargs': {} +} + +lltrend_cycle_seasonal_reg_ar1 = { + # Note: The test needs to fill in exog=np.log(dta['realgdp']) + 'models': [ + # Complete specification + {'irregular': True, 'level': True, 'stochastic_level': True, + 'trend': True, 'stochastic_trend': True, 'cycle': True, + 'stochastic_cycle': True, 'seasonal': 4, 'autoregressive': 1, + 'exog': True, 'mle_regression': False}, + # Verbose string specification + {'level': 'local linear trend', 'autoregressive': 1, 'cycle': True, + 'stochastic_cycle': True, 'seasonal': 4, 'autoregressive': 1, + 'exog': True, 'mle_regression': False}, + # Abbreviated string specification + {'level': 'lltrend', 'autoregressive': 1, 'cycle': True, + 'stochastic_cycle': True, 'seasonal': 4, 'autoregressive': 1, + 'exog': True, 'mle_regression': False}, + # Numpy exog dataset + {'level': 'lltrend', 'autoregressive': 1, 'cycle': True, + 'stochastic_cycle': True, 'seasonal': 4, 'autoregressive': 1, + 'exog': 'numpy', 'mle_regression': False}, + # Annual frequency dataset + {'level': 'lltrend', 'autoregressive': 1, 'cycle': True, + 'stochastic_cycle': True, 'seasonal': 4, 'autoregressive': 1, + 'exog': True, 'mle_regression': False, 'freq': 'AS'}, + # Quarterly frequency dataset + {'level': 'lltrend', 'autoregressive': 1, 'cycle': True, + 'stochastic_cycle': True, 'seasonal': 4, 'autoregressive': 1, + 'exog': True, 'mle_regression': False, 'freq': 'QS'}, + # Monthly frequency dataset + {'level': 'lltrend', 'autoregressive': 1, 'cycle': True, + 'stochastic_cycle': True, 'seasonal': 4, 'autoregressive': 1, + 'exog': True, 'mle_regression': False, 'freq': 'MS'}, + # Minutely frequency dataset + {'level': 'lltrend', 'autoregressive': 1, 'cycle': True, + 'stochastic_cycle': True, 'seasonal': 4, 'autoregressive': 1, + 'exog': True, 'mle_regression': False, 'freq': 'T', + 'cycle_period_bounds': (1.5*12, 12*12)}, + ], + 'params': [0.0001, 0.01, 0.06, 0.0001, 0.0001, 0.1, 2*pi / 10, 0.2], + 'llf': -168.5258709, + 'kwargs': { + # Required due to the way KFAS estimated loglikelihood which P1inf is + # set in the R code + 'loglikelihood_burn': 0 + } +} diff --git a/statsmodels/tsa/statespace/tests/results/results_var_R.py b/statsmodels/tsa/statespace/tests/results/results_var_R.py new file mode 100644 index 0000000..2afc8f0 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_var_R.py @@ -0,0 +1,118 @@ +""" +Results for VARMAX tests + +Results from R using script `test_var.R`. +See also the packages "vars" and "MTS" + +Data from: + +https://www.stata-press.com/data/r14/lutkepohl2.dta + +Author: Chad Fulton +License: Simplified-BSD +""" + +res_basic = { + 'llf': 596.164145004717, + 'params': [-0.29883655890699, 0.0628044611244012, 0.659886869389918, + -0.148082523252922, 0.0344024216201084, 0.626435414218001, + 0.0243232147401712, -0.0743006500599362, 0.572632299564782, + 0.0382739144340661, 0.0947818948355414, 0.280177703027101, + -0.0184971989547667, 0.289109890254681, -0.0310399835571299, + 0.0242429009692667, 0.416904807490799, 0.215822310109252, + 0.0441917021237108, 0.000878653005437675, 0.0121587857077158, + 0.00204049993421116, 0.0060703628735368, 0.00748745583771755] +} + +res_c = { + 'llf': 606.307040676657, + 'params': [-0.016722145613102, 0.0157671932107926, 0.0129257858993457, + -0.319631834481441, 0.145985129742841, 0.961228756482211, + -0.160550841116343, 0.114600859415788, 0.934400111915348, + 0.0439309334767638, -0.152731116093091, 0.288499158625839, + 0.0500302034483248, 0.0191633532210331, -0.0102000393418508, + -0.0024229889812185, 0.224813385583416, -0.263969465525517, + 0.0338805880793048, 0.35491349008493, -0.0222264331018897, + 0.0438795670052806, 0.00147561682483683, 0.0110449368419315, + 0.00253927594913203, 0.00469160198527878, 0.00722432245241668] +} + +res_ct = { + 'llf': 607.438331754865, + 'params': [ + -0.0091687448890928, -0.000202696805258128, 0.0164700664012876, + -0.0000188617227419232, 0.0116594765736253, 0.0000339816281660043, + -0.33053195210291, 0.0991441034301294, 1.02497527768337, + -0.168768113189076, 0.052065599978203, 1.01832964242176, + 0.0429166353176552, -0.157089854999372, 0.294431019303797, + 0.0492655544577624, 0.0133442051412007, -0.00239007148243754, + -0.00059561067840422, 0.232666170125558, -0.274656415315255, + 0.0352581938277472, 0.365397374775498, -0.0362970154881497, + 0.043680752565187, 0.00144524803260901, 0.0110421281684084, + 0.00261764677471134, 0.00471411575165134, 0.00714742282804776] +} + +res_ct_as_exog0 = { + 'llf': 607.438331754865, + 'params': [ + -0.33053195210291, 0.0991441034301291, 1.02497527768337, + -0.168768113189076, 0.0520655999782025, 1.01832964242176, + 0.0429166353176552, -0.157089854999372, 0.294431019303796, + 0.0492655544577624, 0.0133442051412007, -0.00239007148243758, + -0.000595610678404244, 0.232666170125558, -0.274656415315255, + 0.0352581938277472, 0.365397374775498, -0.0362970154881497, + -0.00937144169435092, -0.000202696805258128, 0.0164512046785456, + -0.0000188617227419232, 0.0116934582017913, 0.0000339816281660044, + 0.043680752565187, 0.00144524803260901, 0.0110421281684084, + 0.00261764677471134, 0.00471411575165134, 0.00714742282804776] + +} + +res_ctt_as_exog1 = { + 'llf': 609.490393107865, + 'params': [ + -0.337732421246314, 0.131516202959048, 1.02963148737009, + -0.17420176313584, 0.0790611026384549, 1.0252507470967, + 0.0465815476938576, -0.173566685306448, 0.29206109032178, + 0.0520311868827124, -0.000396031756002358, -0.00591279224896053, + 0.00084626300027174, 0.226183748313225, -0.275588808199104, + 0.0363462669353941, 0.359991601352511, -0.0376829472183479, + 0.00135916831998363, -0.00105584065752325, 0.0000109426769125814, + 0.0111115434152017, 0.00041537351951475, -0.00000556963042921238, + 0.00955129158661523, 0.000204821283222681, -0.00000219124025119403, + 0.0434681194741622, 0.00166930018759676, 0.0107902800396133, + 0.00271581816352387, 0.00457956681075423, 0.00714628937734587] +} + +res_ct_exog = { + 'llf': 608.068437908288, + 'params': [ + -0.00891774296871338, -0.000177588386858893, 0.0197390895235663, + 0.000308147728766951, 0.0126534322433763, 0.000133409771140667, + -0.330531447689365, 0.0984883875114303, 1.02556206489488, + -0.168762569285516, 0.0515915213025295, 1.01893167456814, + 0.0429232047476493, -0.165629831492911, 0.302073275424366, + 0.0493377576859194, 0.00716985336647014, 0.00545073309741857, + -0.000593613224747432, 0.230069566266306, -0.272332765858951, + 0.035280147422236, 0.363520045761914, -0.0339129968146675, + -0.00000107342140085188, -0.0000139801296102807, + -0.00000425069770699759, 0.0436806162945145, 0.00144170298545239, + 0.0109507769345455, 0.00261657568854817, 0.0046983621886579, + 0.00714512825214436] +} + +res_c_2exog = { + 'llf': 609.051601848607, + 'params': [ + -0.0183154996756286, 0.0153812380370316, 0.0103369264061738, + -0.337960592073415, 0.0503833175581312, 0.869221695835652, + -0.177121478778926, -0.00828627855953333, 0.833693547676962, + 0.0408338136200346, -0.168937622492442, 0.271586426539891, + 0.0472115548647617, -0.00167581111974649, -0.0288652616238083, + -0.00180977814169972, 0.226832537597882, -0.291808329427557, + 0.0340137235903244, 0.357345372917494, -0.0561689416451492, + -0.0000711052323565154, 0.000226083635596117, -0.0000123876692635146, + 0.0000396928767974614, -0.00000605563782898125, 0.0000261698003981677, + 0.0430020095866888, 0.00119895869898935, 0.0109748059062083, + 0.00248803192377248, 0.00471772840157074, 0.00714511199868448] +} diff --git a/statsmodels/tsa/statespace/tests/results/results_var_R_output.csv b/statsmodels/tsa/statespace/tests/results/results_var_R_output.csv new file mode 100644 index 0000000..95eb0af --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_var_R_output.csv @@ -0,0 +1,12 @@ +"","basic.fcast.dln_inv.fcst","basic.fcast.dln_inv.CI","basic.fcast.dln_inc.fcst","basic.fcast.dln_inc.CI","basic.fcast.dln_consump.fcst","basic.fcast.dln_consump.CI","c.fcast.dln_inv.fcst","c.fcast.dln_inv.CI","c.fcast.dln_inc.fcst","c.fcast.dln_inc.CI","c.fcast.dln_consump.fcst","c.fcast.dln_consump.CI","ct.fcast.dln_inv.fcst","ct.fcast.dln_inv.CI","ct.fcast.dln_inc.fcst","ct.fcast.dln_inc.CI","ct.fcast.dln_consump.fcst","ct.fcast.dln_consump.CI","ct_as_exog0.fcast.dln_inv.fcst","ct_as_exog0.fcast.dln_inv.CI","ct_as_exog0.fcast.dln_inc.fcst","ct_as_exog0.fcast.dln_inc.CI","ct_as_exog0.fcast.dln_consump.fcst","ct_as_exog0.fcast.dln_consump.CI","ctt_as_exog1.fcast.dln_inv.fcst","ctt_as_exog1.fcast.dln_inv.CI","ctt_as_exog1.fcast.dln_inc.fcst","ctt_as_exog1.fcast.dln_inc.CI","ctt_as_exog1.fcast.dln_consump.fcst","ctt_as_exog1.fcast.dln_consump.CI","ct_exog.fcast.dln_inv.fcst","ct_exog.fcast.dln_inv.CI","ct_exog.fcast.dln_inc.fcst","ct_exog.fcast.dln_inc.CI","ct_exog.fcast.dln_consump.fcst","ct_exog.fcast.dln_consump.CI","c_2exog.fcast.dln_inv.fcst","c_2exog.fcast.dln_inv.CI","c_2exog.fcast.dln_inc.fcst","c_2exog.fcast.dln_inc.CI","c_2exog.fcast.dln_consump.fcst","c_2exog.fcast.dln_consump.CI","basic.irf.dln_inv.dln_inv","basic.irf.dln_inv.dln_inc","basic.irf.dln_inv.dln_consump","basic.irf.dln_inc.dln_inv","basic.irf.dln_inc.dln_inc","basic.irf.dln_inc.dln_consump","basic.irf.dln_consump.dln_inv","basic.irf.dln_consump.dln_inc","basic.irf.dln_consump.dln_consump","c.irf.dln_inv.dln_inv","c.irf.dln_inv.dln_inc","c.irf.dln_inv.dln_consump","c.irf.dln_inc.dln_inv","c.irf.dln_inc.dln_inc","c.irf.dln_inc.dln_consump","c.irf.dln_consump.dln_inv","c.irf.dln_consump.dln_inc","c.irf.dln_consump.dln_consump","ct.irf.dln_inv.dln_inv","ct.irf.dln_inv.dln_inc","ct.irf.dln_inv.dln_consump","ct.irf.dln_inc.dln_inv","ct.irf.dln_inc.dln_inc","ct.irf.dln_inc.dln_consump","ct.irf.dln_consump.dln_inv","ct.irf.dln_consump.dln_inc","ct.irf.dln_consump.dln_consump","ct_as_exog0.irf.dln_inv.dln_inv","ct_as_exog0.irf.dln_inv.dln_inc","ct_as_exog0.irf.dln_inv.dln_consump","ct_as_exog0.irf.dln_inc.dln_inv","ct_as_exog0.irf.dln_inc.dln_inc","ct_as_exog0.irf.dln_inc.dln_consump","ct_as_exog0.irf.dln_consump.dln_inv","ct_as_exog0.irf.dln_consump.dln_inc","ct_as_exog0.irf.dln_consump.dln_consump","ctt_as_exog1.irf.dln_inv.dln_inv","ctt_as_exog1.irf.dln_inv.dln_inc","ctt_as_exog1.irf.dln_inv.dln_consump","ctt_as_exog1.irf.dln_inc.dln_inv","ctt_as_exog1.irf.dln_inc.dln_inc","ctt_as_exog1.irf.dln_inc.dln_consump","ctt_as_exog1.irf.dln_consump.dln_inv","ctt_as_exog1.irf.dln_consump.dln_inc","ctt_as_exog1.irf.dln_consump.dln_consump","ct_exog.irf.dln_inv.dln_inv","ct_exog.irf.dln_inv.dln_inc","ct_exog.irf.dln_inv.dln_consump","ct_exog.irf.dln_inc.dln_inv","ct_exog.irf.dln_inc.dln_inc","ct_exog.irf.dln_inc.dln_consump","ct_exog.irf.dln_consump.dln_inv","ct_exog.irf.dln_consump.dln_inc","ct_exog.irf.dln_consump.dln_consump","c_2exog.irf.dln_inv.dln_inv","c_2exog.irf.dln_inv.dln_inc","c_2exog.irf.dln_inv.dln_consump","c_2exog.irf.dln_inc.dln_inv","c_2exog.irf.dln_inc.dln_inc","c_2exog.irf.dln_inc.dln_consump","c_2exog.irf.dln_consump.dln_inv","c_2exog.irf.dln_consump.dln_inc","c_2exog.irf.dln_consump.dln_consump","basic.irf.ortho.dln_inv.dln_inv","basic.irf.ortho.dln_inv.dln_inc","basic.irf.ortho.dln_inv.dln_consump","basic.irf.ortho.dln_inc.dln_inv","basic.irf.ortho.dln_inc.dln_inc","basic.irf.ortho.dln_inc.dln_consump","basic.irf.ortho.dln_consump.dln_inv","basic.irf.ortho.dln_consump.dln_inc","basic.irf.ortho.dln_consump.dln_consump","c.irf.ortho.dln_inv.dln_inv","c.irf.ortho.dln_inv.dln_inc","c.irf.ortho.dln_inv.dln_consump","c.irf.ortho.dln_inc.dln_inv","c.irf.ortho.dln_inc.dln_inc","c.irf.ortho.dln_inc.dln_consump","c.irf.ortho.dln_consump.dln_inv","c.irf.ortho.dln_consump.dln_inc","c.irf.ortho.dln_consump.dln_consump","ct.irf.ortho.dln_inv.dln_inv","ct.irf.ortho.dln_inv.dln_inc","ct.irf.ortho.dln_inv.dln_consump","ct.irf.ortho.dln_inc.dln_inv","ct.irf.ortho.dln_inc.dln_inc","ct.irf.ortho.dln_inc.dln_consump","ct.irf.ortho.dln_consump.dln_inv","ct.irf.ortho.dln_consump.dln_inc","ct.irf.ortho.dln_consump.dln_consump","ct_as_exog0.irf.ortho.dln_inv.dln_inv","ct_as_exog0.irf.ortho.dln_inv.dln_inc","ct_as_exog0.irf.ortho.dln_inv.dln_consump","ct_as_exog0.irf.ortho.dln_inc.dln_inv","ct_as_exog0.irf.ortho.dln_inc.dln_inc","ct_as_exog0.irf.ortho.dln_inc.dln_consump","ct_as_exog0.irf.ortho.dln_consump.dln_inv","ct_as_exog0.irf.ortho.dln_consump.dln_inc","ct_as_exog0.irf.ortho.dln_consump.dln_consump","ctt_as_exog1.irf.ortho.dln_inv.dln_inv","ctt_as_exog1.irf.ortho.dln_inv.dln_inc","ctt_as_exog1.irf.ortho.dln_inv.dln_consump","ctt_as_exog1.irf.ortho.dln_inc.dln_inv","ctt_as_exog1.irf.ortho.dln_inc.dln_inc","ctt_as_exog1.irf.ortho.dln_inc.dln_consump","ctt_as_exog1.irf.ortho.dln_consump.dln_inv","ctt_as_exog1.irf.ortho.dln_consump.dln_inc","ctt_as_exog1.irf.ortho.dln_consump.dln_consump","ct_exog.irf.ortho.dln_inv.dln_inv","ct_exog.irf.ortho.dln_inv.dln_inc","ct_exog.irf.ortho.dln_inv.dln_consump","ct_exog.irf.ortho.dln_inc.dln_inv","ct_exog.irf.ortho.dln_inc.dln_inc","ct_exog.irf.ortho.dln_inc.dln_consump","ct_exog.irf.ortho.dln_consump.dln_inv","ct_exog.irf.ortho.dln_consump.dln_inc","ct_exog.irf.ortho.dln_consump.dln_consump","c_2exog.irf.ortho.dln_inv.dln_inv","c_2exog.irf.ortho.dln_inv.dln_inc","c_2exog.irf.ortho.dln_inv.dln_consump","c_2exog.irf.ortho.dln_inc.dln_inv","c_2exog.irf.ortho.dln_inc.dln_inc","c_2exog.irf.ortho.dln_inc.dln_consump","c_2exog.irf.ortho.dln_consump.dln_inv","c_2exog.irf.ortho.dln_consump.dln_inc","c_2exog.irf.ortho.dln_consump.dln_consump","basic.irf.cumu.dln_inv.dln_inv","basic.irf.cumu.dln_inv.dln_inc","basic.irf.cumu.dln_inv.dln_consump","basic.irf.cumu.dln_inc.dln_inv","basic.irf.cumu.dln_inc.dln_inc","basic.irf.cumu.dln_inc.dln_consump","basic.irf.cumu.dln_consump.dln_inv","basic.irf.cumu.dln_consump.dln_inc","basic.irf.cumu.dln_consump.dln_consump","c.irf.cumu.dln_inv.dln_inv","c.irf.cumu.dln_inv.dln_inc","c.irf.cumu.dln_inv.dln_consump","c.irf.cumu.dln_inc.dln_inv","c.irf.cumu.dln_inc.dln_inc","c.irf.cumu.dln_inc.dln_consump","c.irf.cumu.dln_consump.dln_inv","c.irf.cumu.dln_consump.dln_inc","c.irf.cumu.dln_consump.dln_consump","ct.irf.cumu.dln_inv.dln_inv","ct.irf.cumu.dln_inv.dln_inc","ct.irf.cumu.dln_inv.dln_consump","ct.irf.cumu.dln_inc.dln_inv","ct.irf.cumu.dln_inc.dln_inc","ct.irf.cumu.dln_inc.dln_consump","ct.irf.cumu.dln_consump.dln_inv","ct.irf.cumu.dln_consump.dln_inc","ct.irf.cumu.dln_consump.dln_consump","ct_as_exog0.irf.cumu.dln_inv.dln_inv","ct_as_exog0.irf.cumu.dln_inv.dln_inc","ct_as_exog0.irf.cumu.dln_inv.dln_consump","ct_as_exog0.irf.cumu.dln_inc.dln_inv","ct_as_exog0.irf.cumu.dln_inc.dln_inc","ct_as_exog0.irf.cumu.dln_inc.dln_consump","ct_as_exog0.irf.cumu.dln_consump.dln_inv","ct_as_exog0.irf.cumu.dln_consump.dln_inc","ct_as_exog0.irf.cumu.dln_consump.dln_consump","ctt_as_exog1.irf.cumu.dln_inv.dln_inv","ctt_as_exog1.irf.cumu.dln_inv.dln_inc","ctt_as_exog1.irf.cumu.dln_inv.dln_consump","ctt_as_exog1.irf.cumu.dln_inc.dln_inv","ctt_as_exog1.irf.cumu.dln_inc.dln_inc","ctt_as_exog1.irf.cumu.dln_inc.dln_consump","ctt_as_exog1.irf.cumu.dln_consump.dln_inv","ctt_as_exog1.irf.cumu.dln_consump.dln_inc","ctt_as_exog1.irf.cumu.dln_consump.dln_consump","ct_exog.irf.cumu.dln_inv.dln_inv","ct_exog.irf.cumu.dln_inv.dln_inc","ct_exog.irf.cumu.dln_inv.dln_consump","ct_exog.irf.cumu.dln_inc.dln_inv","ct_exog.irf.cumu.dln_inc.dln_inc","ct_exog.irf.cumu.dln_inc.dln_consump","ct_exog.irf.cumu.dln_consump.dln_inv","ct_exog.irf.cumu.dln_consump.dln_inc","ct_exog.irf.cumu.dln_consump.dln_consump","c_2exog.irf.cumu.dln_inv.dln_inv","c_2exog.irf.cumu.dln_inv.dln_inc","c_2exog.irf.cumu.dln_inv.dln_consump","c_2exog.irf.cumu.dln_inc.dln_inv","c_2exog.irf.cumu.dln_inc.dln_inc","c_2exog.irf.cumu.dln_inc.dln_consump","c_2exog.irf.cumu.dln_consump.dln_inv","c_2exog.irf.cumu.dln_consump.dln_inc","c_2exog.irf.cumu.dln_consump.dln_consump","basic.fevd.dln_inv","basic.fevd.dln_inc","basic.fevd.dln_consump","basic.fevd.dln_inv","basic.fevd.dln_inc","basic.fevd.dln_consump","basic.fevd.dln_inv","basic.fevd.dln_inc","basic.fevd.dln_consump","c.fevd.dln_inv","c.fevd.dln_inc","c.fevd.dln_consump","c.fevd.dln_inv","c.fevd.dln_inc","c.fevd.dln_consump","c.fevd.dln_inv","c.fevd.dln_inc","c.fevd.dln_consump","ct.fevd.dln_inv","ct.fevd.dln_inc","ct.fevd.dln_consump","ct.fevd.dln_inv","ct.fevd.dln_inc","ct.fevd.dln_consump","ct.fevd.dln_inv","ct.fevd.dln_inc","ct.fevd.dln_consump","ct_as_exog0.fevd.dln_inv","ct_as_exog0.fevd.dln_inc","ct_as_exog0.fevd.dln_consump","ct_as_exog0.fevd.dln_inv","ct_as_exog0.fevd.dln_inc","ct_as_exog0.fevd.dln_consump","ct_as_exog0.fevd.dln_inv","ct_as_exog0.fevd.dln_inc","ct_as_exog0.fevd.dln_consump","ctt_as_exog1.fevd.dln_inv","ctt_as_exog1.fevd.dln_inc","ctt_as_exog1.fevd.dln_consump","ctt_as_exog1.fevd.dln_inv","ctt_as_exog1.fevd.dln_inc","ctt_as_exog1.fevd.dln_consump","ctt_as_exog1.fevd.dln_inv","ctt_as_exog1.fevd.dln_inc","ctt_as_exog1.fevd.dln_consump","ct_exog.fevd.dln_inv","ct_exog.fevd.dln_inc","ct_exog.fevd.dln_consump","ct_exog.fevd.dln_inv","ct_exog.fevd.dln_inc","ct_exog.fevd.dln_consump","ct_exog.fevd.dln_inv","ct_exog.fevd.dln_inc","ct_exog.fevd.dln_consump","c_2exog.fevd.dln_inv","c_2exog.fevd.dln_inc","c_2exog.fevd.dln_consump","c_2exog.fevd.dln_inv","c_2exog.fevd.dln_inc","c_2exog.fevd.dln_consump","c_2exog.fevd.dln_inv","c_2exog.fevd.dln_inc","c_2exog.fevd.dln_consump" +"1",-0.00126532587755135,0.0904092464059529,0.0109099378034462,0.0249398227163928,0.0142499693107916,0.0201569902546483,-0.0108113311301399,0.0904481913089682,0.0199107988586732,0.0229690232399761,0.0216287843829623,0.0185114071653899,-0.019544070019806,0.0907283378986466,0.0190981836844738,0.0231309804975278,0.0230928068940302,0.0185965920059797,-0.0195440700198061,0.0907283378986466,0.0190981836844738,0.0231309804975278,0.0230928068940302,0.0185965920059797,-0.0101069440685275,0.0909893130386399,0.0142948522617835,0.0228553614488331,0.0212030489851355,0.0186542495814555,-0.0197485948851254,0.0914341204041447,0.0164344729335795,0.0231204312530985,0.0222828981523683,0.0187194792127505,-0.0187697762302991,0.0900136320343826,0.0186286869514764,0.0231096115644967,0.0233138280669053,0.0186639171039238,1,0,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,1,1,0,0,0,1,0,0,0,1,0.0461280141467341,0.000917152232594208,0.00212990686731663,0,0.0126915373742008,0.00633634304744454,0,0,0.00781552762639505,0.0461478843603311,0.0015518975969962,0.00267054168618877,0,0.0116158955736112,0.00493413040870001,0,0,0.00759777773275994,0.0462908189202966,0.00153160628065137,0.00277405964250795,0,0.0117019310685109,0.00499579942683791,0,0,0.00757450447737121,0.0462908189202966,0.00153160628065137,0.00277405964250795,0,0.0117019310685109,0.00499579942683792,0,0,0.00757450447737121,0.0464239719486439,0.00178281338186074,0.00290049507009367,0,0.0115240241339351,0.004890979497877,0,0,0.00763224040064575,0.0466509186522637,0.00153973946341758,0.00279450406035779,0,0.0116954348928617,0.00501785301709392,0,0,0.00763100031838694,0.0459261663706061,0.00128048845183075,0.00265721925939771,0,0.0117210978458471,0.00503853614155141,0,0,0.00763098295968418,0.0461280141467341,0.000917152232594208,0.00212990686731663,0,0.0126915373742008,0.00633634304744454,0,0,0.00781552762639505,0.0461478843603311,0.0015518975969962,0.00267054168618877,0,0.0116158955736112,0.00493413040870001,0,0,0.00759777773275994,0.0462908189202966,0.00153160628065137,0.00277405964250795,0,0.0117019310685109,0.00499579942683791,0,0,0.00757450447737121,0.0462908189202966,0.00153160628065137,0.00277405964250795,0,0.0117019310685109,0.00499579942683792,0,0,0.00757450447737121,0.0464239719486439,0.00178281338186074,0.00290049507009367,0,0.0115240241339351,0.004890979497877,0,0,0.00763224040064575,0.0466509186522637,0.00153973946341758,0.00279450406035779,0,0.0116954348928617,0.00501785301709392,0,0,0.00763100031838694,0.0459261663706061,0.00128048845183075,0.00265721925939771,0,0.0117210978458471,0.00503853614155141,0,0,0.00763098295968418,1,0,0,0.00519508087931217,0.994804919120688,0,0.0428909867758197,0.379596477680613,0.577512535543568,1,0,0,0.0175362710283362,0.982463728971664,0,0.0799495527050565,0.272922010959203,0.647128436335741,1,0,0,0.0168423378296169,0.983157662170383,0,0.085479317165114,0.277229501156796,0.63729118167809,1,0,0,0.0168423378296169,0.983157662170383,0,0.0854793171651139,0.277229501156796,0.63729118167809,1,0,0,0.0233739313834248,0.976626068616575,0,0.0928720173356334,0.264078047701147,0.64304993496322,1,0,0,0.0170372227982749,0.982962777201725,0,0.0856087483619205,0.276022528051924,0.638368723586155,1,0,0,0.0117940298539948,0.988205970146005,0,0.0778655528325691,0.279962165776681,0.64217228139075 +"2",0.00901132887465977,0.0946278827632288,0.0108789437105618,0.0273220570565208,0.00706612341022357,0.0213189468401234,0.0107810076497461,0.0953635534642891,0.0203486313281714,0.023910148565142,0.0146537516476697,0.0191192722203092,0.0074775680814247,0.0958978426155029,0.0198244272305392,0.0240810608165537,0.0153435646398578,0.019240222618121,0.00747756808142469,0.0958978426155028,0.0198244272305392,0.0240810608165537,0.0153435646398578,0.019240222618121,0.0122778291900758,0.096319074609761,0.015168420285707,0.0238897196502514,0.012670309120894,0.0192756533323063,0.00622051840580425,0.0966369579128904,0.0169946106290103,0.0241132227429065,0.0140339095194839,0.0193512519007054,0.0191379333790402,0.0950280580555166,0.0215523080851124,0.0239533575644906,0.0167618605497164,0.0193405060323518,-0.29883655890699,0.0243232147401712,-0.0184971989547667,0.0628044611244012,-0.0743006500599362,0.289109890254681,0.659886869389918,0.572632299564782,-0.0310399835571299,-0.319631834481441,0.0439309334767638,-0.0024229889812185,0.145985129742841,-0.152731116093091,0.224813385583416,0.961228756482211,0.288499158625839,-0.263969465525517,-0.33053195210291,0.0429166353176552,-0.00059561067840422,0.0991441034301294,-0.157089854999372,0.232666170125558,1.02497527768337,0.294431019303797,-0.274656415315255,-0.33053195210291,0.0429166353176552,-0.000595610678404244,0.0991441034301291,-0.157089854999372,0.232666170125558,1.02497527768337,0.294431019303796,-0.274656415315255,-0.337732421246314,0.0465815476938576,0.00084626300027174,0.131516202959048,-0.173566685306448,0.226183748313225,1.02963148737009,0.29206109032178,-0.275588808199104,-0.330531447689365,0.0429232047476493,-0.000593613224747432,0.0984883875114303,-0.165629831492911,0.230069566266306,1.02556206489488,0.302073275424366,-0.272332765858951,-0.337960592073415,0.0408338136200346,-0.00180977814169972,0.0503833175581312,-0.168937622492442,0.226832537597882,0.869221695835652,0.271586426539891,-0.291808329427557,-0.0123216381903202,0.00227349005383334,-0.000654193547888015,0.00497835474258563,0.00268540521292639,0.00347256899341335,0.00515736405801224,0.00447542355701468,-0.000242593849013597,-0.0119567774993358,0.00256074561541637,-0.000467869924019006,0.00643857605946871,-0.00035061622391832,0.00130894904366921,0.00730320244208907,0.00219195248332738,-0.00200558132729832,-0.012305402458275,0.00256281559376747,-0.000433131615883552,0.00628074836896228,-0.000367336337283814,0.0013505151225744,0.00776367983000745,0.00223016907399357,-0.00208038624754413,-0.012305402458275,0.00256281559376747,-0.000433131615883553,0.00628074836896227,-0.000367336337283814,0.0013505151225744,0.00776367983000745,0.00223016907399357,-0.00208038624754413,-0.0124579705503894,0.00270018520689902,-0.00035681367651646,0.00655150239199928,-0.0005717218654272,0.00125864776351934,0.00785839503568296,0.00222908045301054,-0.00210336003590301,-0.0124020118667341,0.00259152513980718,-0.000434480431708309,0.00629798422539271,-0.0004213536140694,0.00132423784227765,0.00782606444373838,0.00230512126093952,-0.00207817142297685,-0.0131470064911133,0.00238068252637152,-0.000568058440143611,0.00497015272438578,-0.000611736377402649,0.00118843955358007,0.00663301594910964,0.00207247139300743,-0.0022267843893556,0.0338063759564139,0.00319064228642755,0.00147571331942862,0.00497835474258563,0.0153769425871272,0.0098089120408579,0.00515736405801224,0.00447542355701468,0.00757293377738145,0.0341911068609953,0.00411264321241257,0.00220267176216976,0.00643857605946871,0.0112652793496929,0.00624307945236922,0.00730320244208907,0.00219195248332738,0.00559219640546163,0.0339854164620216,0.00409442187441884,0.0023409280266244,0.00628074836896228,0.0113345947312271,0.00634631454941231,0.00776367983000745,0.00223016907399357,0.00549411822982708,0.0339854164620216,0.00409442187441884,0.0023409280266244,0.00628074836896227,0.0113345947312271,0.00634631454941231,0.00776367983000745,0.00223016907399357,0.00549411822982708,0.0339660013982545,0.00448299858875977,0.00254368139357721,0.00655150239199928,0.0109523022685079,0.00614962726139634,0.00785839503568296,0.00222908045301054,0.00552888036474273,0.0342489067855296,0.00413126460322476,0.00236002362864948,0.00629798422539271,0.0112740812787923,0.00634209085937157,0.00782606444373838,0.00230512126093952,0.00555282889541009,0.0327791598794929,0.00366117097820227,0.00208916081925409,0.00497015272438578,0.0111093614684444,0.00622697569513148,0.00663301594910964,0.00207247139300743,0.00540419857032858,0.977956909168148,0.0106323585952194,0.0114107322366321,0.0309270476892242,0.866001669513566,0.10307128279721,0.0419602236835867,0.441267119176897,0.516772657139516,0.959959163310668,0.0175110017677281,0.022529834921604,0.0602449829693855,0.907470529011022,0.0322844880195922,0.077247046131115,0.27384893478311,0.648904019085775,0.958344555566678,0.0164778785031496,0.025177565930173,0.0590486351462837,0.908004011681913,0.0329473531718038,0.0818027810084268,0.277918482348328,0.640278736643245,0.958344555566678,0.0164778785031496,0.025177565930173,0.0590486351462837,0.908004011681913,0.0329473531718038,0.0818027810084268,0.277918482348328,0.640278736643245,0.956656796686179,0.0177726990542254,0.0255705042595954,0.0704687960869569,0.896086638071668,0.0334445658413748,0.0882968847822269,0.26370489342866,0.647998221789113,0.958490067993908,0.0163159670233194,0.0251939649827721,0.0600339118908716,0.904860745245706,0.0351053428634221,0.0820466533952735,0.276282888918363,0.641670457686364,0.970775647112172,0.0105082873842943,0.0187160655035331,0.0489238158370431,0.922319389511364,0.0287567946515927,0.0758268587480264,0.275221852371865,0.648951288880109 +"3",0.0121425600978051,0.0955429323947474,0.00843532166794152,0.0293471304650685,0.0103523851701199,0.0268195113349942,0.0211156077082953,0.0961031496740945,0.0169805889118433,0.0241357724720976,0.0198257514746383,0.0211429848785997,0.0180504426172325,0.0966205408254239,0.015959976243223,0.0242956948167651,0.0201549925505451,0.0213040731395182,0.0180504426172325,0.0966205408254239,0.015959976243223,0.0242956948167651,0.0201549925505451,0.0213040731395182,0.0211021207270118,0.097030838069152,0.0106078318234763,0.0240944141795163,0.0161249747223835,0.0212986008379419,0.015683049618156,0.0973572945252174,0.0129122359828223,0.0243233723878845,0.0179910102901529,0.0214079861438516,0.0284409329200229,0.0954402664347425,0.0183291771476542,0.0241152069485903,0.0216908894710738,0.0211302902009971,-0.0694576866297246,0.0186059243998401,0.037376774949908,0.201747560675301,0.2673837491129,0.385288081853745,0.444718078322775,0.235906823789739,0.370133393261195,-0.0543021151644289,0.0285798278073059,0.0451709094853976,0.261739983855357,0.113761882656046,0.260879901195884,0.415542347130952,-0.0881901299807446,0.109982871531192,-0.0558722967177971,0.028163100930267,0.0456038996558616,0.242197845432036,0.11078049664331,0.264885572308696,0.427217626907477,-0.0855210757298364,0.107032782392766,-0.0558722967177972,0.028163100930267,0.0456038996558616,0.242197845432036,0.11078049664331,0.264885572308696,0.427217626907478,-0.0855210757298364,0.107032782392766,-0.0531410074626146,0.0284612436595564,0.0463632249312612,0.24470289476297,0.101915062918345,0.25851122555245,0.432166663018362,-0.0891318071701819,0.105197055163358,-0.0558928813559909,0.0278616108205883,0.0455133386911767,0.2386760164198,0.108328399126785,0.262699716938996,0.430407716677142,-0.082825652705116,0.109141218798724,-0.062419872411,0.0260214564685169,0.0444159031820101,0.16334227072788,0.0905260904815643,0.252742016828706,0.299968162918135,-0.118503971526238,0.0890146993619221,-0.00207170383672204,0.00160594551042381,0.00286583388424298,0.00537837301011784,0.00488829740788513,0.00723519024369857,0.00347570642708897,0.00184373629858382,0.00289278776048421,-0.000990010918756566,0.00125992996258943,0.0027831146423444,0.00509068445098392,0.000886304547104842,0.00357302352040361,0.00315719839205035,-0.000670049005816906,0.000835625412304691,-0.00103029545142864,0.00123612454506359,0.0028136575892919,0.00496847606782697,0.000869099594341734,0.00363438702113006,0.00323596182782259,-0.000647779771025248,0.000810720289459506,-0.00103029545142865,0.00123612454506359,0.0028136575892919,0.00496847606782697,0.000869099594341734,0.00363438702113006,0.00323596182782259,-0.000647779771025248,0.000810720289459506,-0.000777259768860025,0.00124445314797312,0.00291836586582336,0.00493368035338098,0.000738529803204437,0.0034936062422006,0.003298399865301,-0.000680275379666829,0.000802889214446744,-0.00103717926806249,0.00123511062827043,0.00283272376116004,0.00495114247023428,0.000851340787716118,0.00362004202987172,0.00328444142299947,-0.000632042582163346,0.000832856675402201,-0.00186046637410452,0.000996092316974986,0.0026000169663933,0.00342595116774213,0.000463978620684091,0.00341091768887037,0.00228905193967606,-0.000904301787371621,0.000679269653992238,0.0317346721196919,0.00479658779685136,0.0043415472036716,0.0103567277527035,0.0202652399950123,0.0170441022845565,0.00863307048510121,0.00631915985559849,0.0104657215378657,0.0332010959422388,0.005372573175002,0.00498578640451417,0.0115292605104526,0.0121515838967978,0.00981610297277283,0.0104604008341394,0.00152190347751047,0.00642782181776632,0.0329551210105929,0.00533054641948243,0.0051545856159163,0.0112492244367892,0.0122036943255688,0.00998070157054237,0.01099964165783,0.00158238930296833,0.00630483851928659,0.0329551210105929,0.00533054641948243,0.0051545856159163,0.0112492244367892,0.0122036943255688,0.00998070157054238,0.01099964165783,0.00158238930296833,0.00630483851928659,0.0331887416293945,0.00572745173673289,0.00546204725940057,0.0114851827453803,0.0116908320717124,0.00964323350359694,0.011156794900984,0.00154880507334371,0.00633176957918948,0.0332117275174671,0.00536637523149518,0.00519274738980953,0.011249126695627,0.0121254220665085,0.00996213288924329,0.0111105058667378,0.00167307867877617,0.00638568557081229,0.0309186935053884,0.00465726329517726,0.00468917778564739,0.00839610389212791,0.0115733400891285,0.00963789338400184,0.0089220678887857,0.00116816960563581,0.00608346822432082,0.961120263085259,0.0226027653896218,0.0162769715251194,0.0383095281372105,0.85719088762777,0.104499584235019,0.0703763445572836,0.558397210849376,0.371226444593341,0.945648261567343,0.0280213860168415,0.0263303524158152,0.0695919630782511,0.895763676763104,0.0346443601586449,0.129729163887908,0.333641835626207,0.536629000485885,0.944498600373723,0.0263901928930827,0.0291112067331947,0.0679539640212138,0.896947426009277,0.0350986099695095,0.133727016279102,0.338477337054918,0.52779564666598,0.944498600373723,0.0263901928930827,0.0291112067331947,0.0679539640212138,0.896947426009277,0.0350986099695095,0.133727016279102,0.338477337054918,0.52779564666598,0.942919780004804,0.0274445010168038,0.0296357189783918,0.0795241059010282,0.884534976533045,0.0359409175659264,0.144443458613507,0.319347790538742,0.53620875084775,0.94479498061361,0.0260104693989539,0.029194549987436,0.0689061616520748,0.893998654283294,0.0370951840646306,0.134298378502189,0.335589068375237,0.530112553122574,0.963867901328745,0.0153675988157365,0.0207644998555183,0.0548234192175968,0.911402662901041,0.033773917881362,0.121687229472967,0.330671117070376,0.547641653456658 +"4",0.00719884963253526,0.096382394163059,0.00895250229467242,0.0315009259088329,0.00817176547105097,0.027921233784924,0.0123581678420597,0.0968690255954433,0.0206009250639707,0.024361376036132,0.0187202636883116,0.0212300374377769,0.00648766841734022,0.0975173852397865,0.0197780147596912,0.024523971816975,0.0194614363133997,0.0214121806935415,0.0064876684173402,0.0975173852397865,0.0197780147596912,0.024523971816975,0.0194614363133997,0.0214121806935415,0.00916267256358864,0.0979787065714169,0.0135751748256001,0.0243307942501346,0.0154592596707579,0.0214139783597119,0.00323002760688446,0.0982506997072359,0.0161511887369814,0.0245575600583532,0.0173229586633245,0.0215197390866302,0.0219185078207664,0.0961884004876323,0.0233954019594307,0.0242805655550022,0.0228421887877743,0.0212663589719265,0.0800914228100196,0.00401653486536315,0.00440744677625046,0.380002200115446,0.282032324318807,0.0945548143799528,0.0287018270350328,0.276074195762544,0.296519632403447,0.119036133140236,-0.0088434693559827,-0.000550818754383579,0.352836875134943,0.0714708545478587,-0.0981803982773277,-0.407893243417656,0.119766086550255,0.0909610424498719,0.125413860670169,-0.00910451371277295,-0.00189023949923918,0.414449786409741,0.0732144147042363,-0.109471569689088,-0.477326215922518,0.118364379447682,0.104142749807025,0.125413860670169,-0.00910451371277295,-0.00189023949923918,0.414449786409742,0.0732144147042362,-0.109471569689088,-0.477326215922519,0.118364379447682,0.104142749807025,0.132811595606458,-0.0114704903467067,-0.0019229228704489,0.392193007613746,0.0747849548445243,-0.114209882824915,-0.488185350089267,0.121412053222876,0.104162228354727,0.125286112178391,-0.00926861521863767,-0.00198910758338021,0.410452944388856,0.0765825913692454,-0.111297781503715,-0.473470107318986,0.116441863415076,0.106193404276049,0.119026690150965,-0.0108539230732413,-0.00374732186879586,0.350631318201008,0.0561321282916032,-0.124909873195294,-0.429461527577205,0.105449111373276,0.0896075212828013,0.00410411036914569,0.00103195367844661,0.000921587127707267,0.00500467674722609,0.0053287245957237,0.00307889607182418,0.000224319922120311,0.00215766550391696,0.00231745737881764,0.00495153649544855,0.0000226483729682142,0.000065130211342059,0.00208591784023647,0.0014211394725633,-0.000691639608206033,-0.0030990822021819,0.00090995610553133,0.000691101782874269,0.00511615281835618,0.0000190301098962054,0.000033730121235627,0.00246523679600542,0.0014480747330931,-0.000760752472668135,-0.00361550955967177,0.000896551522087735,0.000788829724699063,0.00511615281835618,0.0000190301098962055,0.0000337301212356269,0.00246523679600542,0.0014480747330931,-0.000760752472668135,-0.00361550955967177,0.000896551522087735,0.000788829724699063,0.00544886952990898,-0.0000470230420111311,0.0000092374049947259,0.0021319371464509,0.00145564748759178,-0.000806702122672066,-0.0037259479519547,0.000926645977732986,0.000794991167470236,0.00515358868648304,0.0000109250836672666,0.0000325946169976667,0.00242462228116891,0.00147995486693902,-0.000768813063254602,-0.00361305053969788,0.00088856789679401,0.000810361901841121,0.00477424548597389,-0.000146401125153918,-0.0000939389463971968,0.00194592656034872,0.00118923932675025,-0.00101259011109616,-0.00327721359878159,0.000804680372003311,0.000683793467968594,0.0358387824888375,0.00582854147529797,0.00526313433137886,0.0153614044999296,0.025593964590736,0.0201229983563806,0.00885739040722152,0.00847682535951545,0.0127831789166833,0.0381526324376873,0.00539522154797021,0.00505091661585622,0.0136151783506891,0.0135727233693611,0.0091244633645668,0.00736131863195752,0.0024318595830418,0.00711892360064058,0.0380712738289491,0.00534957652937864,0.00518831573715193,0.0137144612327947,0.0136517690586619,0.00921994909787424,0.00738413209815826,0.00247894082505606,0.00709366824398565,0.0380712738289491,0.00534957652937864,0.00518831573715193,0.0137144612327947,0.0136517690586619,0.00921994909787424,0.00738413209815827,0.00247894082505606,0.00709366824398565,0.0386376111593035,0.00568042869472176,0.0054712846643953,0.0136171198918312,0.0131464795593042,0.00883653138092488,0.00743084694902927,0.00247545105107669,0.00712676074665971,0.0383653162039501,0.00537730031516245,0.00522534200680719,0.0136737489767959,0.0136053769334475,0.00919331982598869,0.00749745532703997,0.00256164657557018,0.00719604747265341,0.0356929389913622,0.00451086217002334,0.00459523883925019,0.0103420304524766,0.0127625794158788,0.00862530327290569,0.00564485429000411,0.00197284997763912,0.00676726169228942,0.951416317619173,0.0325682028978369,0.0160154794829902,0.0373725728505131,0.853906500113239,0.108720927036247,0.0691171067642531,0.56191064836616,0.368972244869587,0.940791263913717,0.0293612793909192,0.0298474566953636,0.0683123100006113,0.892322408176885,0.0393652818225035,0.128703605286389,0.334988414937597,0.536307979776015,0.937779332467785,0.0283620041900705,0.0338586633421447,0.0666970903846221,0.893720567962002,0.0395823416533761,0.132389614110052,0.33991720146222,0.527693184427728,0.937779332467785,0.0283620041900705,0.0338586633421447,0.0666970903846221,0.893720567962002,0.0395823416533761,0.132389614110052,0.33991720146222,0.527693184427729,0.936644781241589,0.0287348466295779,0.0346203721288333,0.0780007650992183,0.881181273491826,0.0408179614089551,0.142891857335912,0.321367447765325,0.535740694898762,0.938260092010261,0.0278790337444461,0.0338608742452926,0.0675989719495445,0.890980676758387,0.0414203512920688,0.132915978358409,0.337015681383161,0.53006834025843,0.958396352781651,0.0167016613444926,0.0249019858738563,0.0542188895787714,0.908246494746248,0.0375346156749806,0.120209980874546,0.335162361118946,0.544627658006508 +"5",0.00878061361081354,0.0970600697561594,0.00835410585377385,0.032978288674976,0.00824681965678156,0.0300407189705386,0.0174107209342739,0.0970297007538706,0.019744076833695,0.0243648310158945,0.0188870214466805,0.0213149175435395,0.0126885465671116,0.0977080237098242,0.0189167489294178,0.0245279861396874,0.0193672026628753,0.021496121935296,0.0126885465671116,0.0977080237098242,0.0189167489294178,0.0245279861396874,0.0193672026628753,0.021496121935296,0.0152279949697234,0.0981682690869869,0.0122798755598717,0.0243363449153264,0.0147089727518165,0.0214919103971366,0.00897215926701957,0.0984434540168409,0.0149327176447446,0.0245624507831411,0.0168897092646681,0.0216040414420835,0.030571039306616,0.0962849959041186,0.0233678299015885,0.0242894578082703,0.0229789361021287,0.0213141666088783,0.0135661212216321,0.0137507222740183,0.0136827313220859,0.187231278511588,0.183446767914876,0.271092658617259,0.378556404173425,0.293066268839749,0.259095901791913,0.0143330105183679,0.0037913250560529,0.00516843644657635,0.01806280598816,-0.0111263538625018,0.0845744138965918,0.261239772500818,0.00800886514377076,-0.015763172195683,0.0130421978804609,0.00377026045819037,0.00499163765995739,-0.0073023622237495,-0.0131690839332173,0.0862585411665308,0.308691676207821,0.0112338641223609,-0.0208510121301795,0.013042197880461,0.00377026045819037,0.00499163765995737,-0.00730236222374955,-0.0131690839332173,0.0862585411665308,0.308691676207821,0.0112338641223609,-0.0208510121301795,0.0106981264741455,0.00456545634947126,0.0046151195409645,-0.00974628361485827,-0.0169041850610602,0.0845631438947482,0.313614688421865,0.00850765228256987,-0.0220008364595821,0.0128812272768154,0.0040021996680281,0.00494775262981465,-0.00928558095636828,-0.0147021470962667,0.0865768409443783,0.311170489646234,0.0137054923839137,-0.0204743995451568,0.00383909016834528,0.00140360494201056,0.00309678542357159,-0.0432179771433057,-0.0288245669948596,0.0722564764463278,0.250404882628612,0.000776433421950835,-0.0385953746559995,0.00160378770164179,0.00142674598291969,0.00143164060160205,0.00477491600849911,0.00418518992617125,0.00508230312465296,0.00295861803496617,0.00229046752048158,0.00202497117834043,0.00138712143969899,0.000179082676662113,0.000327667028698666,0.00149880677358303,-0.0000897257795368096,0.000904630012753891,0.00198484172641799,0.0000608495772540187,-0.000119765078706021,0.00144887879750786,0.000185522001581164,0.000305339167187529,0.00145670995968905,-0.0000979815804782776,0.00090522402835211,0.00233818648356337,0.0000850909540930026,-0.000157936084737766,0.00144887879750786,0.000185522001581164,0.000305339167187528,0.00145670995968905,-0.0000979815804782774,0.00090522402835211,0.00233818648356337,0.0000850909540930024,-0.000157936084737766,0.00138891157616338,0.000206486013667969,0.000301199166968192,0.00142156660371062,-0.000153193483719048,0.000866902071024547,0.00239358269520928,0.0000649324474656758,-0.000167915672874823,0.00145619090717268,0.000202368869178254,0.000306907191402765,0.00145280887278435,-0.000103175857840284,0.000909816278963772,0.00237454210556303,0.000104586616745296,-0.000156240149447873,0.000786355249907666,0.0000296158227618903,0.000132190693376928,0.000755111912348934,-0.000333943482252916,0.000652461040322582,0.00191083539236066,0.0000059249502122361,-0.000294520646322559,0.0374425701904793,0.00725528745821766,0.00669477493298091,0.0201363205084287,0.0297791545169073,0.0252053014810336,0.0118160084421877,0.010767292879997,0.0148081500950237,0.0395397538773863,0.00557430422463232,0.00537858364455489,0.0151139851242721,0.0134829975898242,0.0100290933773207,0.00934616035837551,0.00249270916029582,0.00699915852193456,0.039520152626457,0.0055350985309598,0.00549365490433946,0.0151711711924837,0.0135537874781836,0.0101251731262263,0.00972231858172163,0.00256403177914906,0.00693573215924788,0.039520152626457,0.0055350985309598,0.00549365490433945,0.0151711711924837,0.0135537874781836,0.0101251731262264,0.00972231858172163,0.00256403177914906,0.00693573215924788,0.0400265227354669,0.00588691470838973,0.00577248383136349,0.0150386864955418,0.0129932860755851,0.00970343345194942,0.00982442964423855,0.00254038349854237,0.00695884507378489,0.0398215071111228,0.0055796691843407,0.00553224919820996,0.0151265578495802,0.0135022010756072,0.0101031361049525,0.009871997432603,0.00266623319231548,0.00703980732320554,0.0364792942412699,0.00454047799278523,0.00472742953262712,0.0110971423648256,0.0124286359336259,0.00927776431322827,0.00755568968236476,0.00197877492785135,0.00647274104596686,0.939225916344684,0.0414120843287409,0.0193619993265751,0.0412892108360578,0.840982096824547,0.117728692339395,0.0684327790874477,0.595368307237462,0.336198913675091,0.93846314322502,0.0301807152772361,0.0313561414977442,0.06850046565889,0.892121455999309,0.0393780783418003,0.128588409903003,0.339245188879759,0.532166401217237,0.934968188111485,0.0291052883751046,0.0359265235134106,0.066895027870084,0.893489354114647,0.0396156180152693,0.132132753806338,0.344079877689077,0.523787368504584,0.934968188111485,0.0291052883751046,0.0359265235134106,0.066895027870084,0.893489354114647,0.0396156180152693,0.132132753806338,0.344079877689077,0.523787368504585,0.933799918337258,0.0294295223170753,0.0367705593456667,0.0782417337284061,0.880931575408658,0.0408266908629355,0.14261194322653,0.325291134974651,0.532096921798819,0.935429965433846,0.0286066067996466,0.0359634277665073,0.0678328143772471,0.890693680004741,0.041473505618012,0.132655931673365,0.341203561691851,0.526140506634784,0.956730567034262,0.0169044333377936,0.0263649996279447,0.0541849092451399,0.908307723956902,0.0375073667979585,0.119819085598201,0.337260229513478,0.542920684888321 +"6",0.00770372199365418,0.097402893045169,0.00772886232418342,0.0343239829818743,0.00766736826920005,0.0313369769789714,0.0166189094329316,0.0970523951951315,0.0197875343681733,0.0243948446222981,0.0196508992349054,0.0213313228024883,0.0116982319876617,0.0977413884589007,0.0187545187036528,0.0245588368046994,0.0202355781745297,0.021515165572967,0.0116982319876617,0.0977413884589006,0.0187545187036528,0.0245588368046994,0.0202355781745297,0.021515165572967,0.0145745468723932,0.0982064642644674,0.0114682992837254,0.0243674764549764,0.0151392825414631,0.0215101286545168,0.00786232916024627,0.0984769629846317,0.0142085284269963,0.0245928641256143,0.0173885630793783,0.021623438027562,0.0228325579984126,0.0963253751062239,0.022188651594289,0.0243103224603876,0.0237476098122809,0.0213262829000767,-0.00312237225207194,0.0118244333399344,0.00786720928045805,0.14712360483265,0.213928145483889,0.188358335117573,0.267251140078213,0.246142932646308,0.249471818212737,-0.0196992652199783,0.00733324859527463,0.000359892844821661,-0.0662997821896677,0.0469160694249857,0.0146323092124724,0.0667235210942841,-0.0133340261050411,0.0319937124228172,-0.0223855383510853,0.00749875923713834,0.000662169533939332,-0.0880912012462462,0.0488092584366847,0.0185874844252642,0.0704813435441898,-0.0168410734879662,0.0307970466040755,-0.0223855383510854,0.00749875923713834,0.000662169533939336,-0.0880912012462464,0.0488092584366847,0.0185874844252642,0.0704813435441899,-0.0168410734879662,0.0307970466040754,-0.0242751621193813,0.00798007848126957,0.000540197083350868,-0.0913645627620654,0.0482295601669254,0.0183441164807573,0.0739824140618872,-0.0193584115535699,0.0302913421507195,-0.0224378059717427,0.00748864287956637,0.000683944394731467,-0.0883118064284677,0.04838235653447,0.0191398737009794,0.0716156998639619,-0.0170446231251268,0.0305678713779246,-0.022651312642017,0.00650647956107515,-0.000211807557922647,-0.0907454265382192,0.0427940162671664,0.0114557120264589,0.0317624923397555,-0.0234269662035272,0.0290264015841308,0.000560125949775415,0.00126590382721172,0.00106700374737837,0.00356061963271694,0.00427472311375329,0.00397129587075254,0.00208870866846685,0.00192373689013912,0.00194975388724865,-0.000833781941484989,0.000375613771003195,0.000124756681611351,-0.000440908792061506,0.000479180339489646,0.000327828525165495,0.00050695048282149,-0.000101308966628921,0.000243081115834406,-0.000975646488666646,0.000375162130449357,0.000144553921970169,-0.000678726509045063,0.000487027952452701,0.000371365329254402,0.000533861252246604,-0.000127562786538338,0.000233272367392379,-0.000975646488666648,0.000375162130449357,0.000144553921970169,-0.000678726509045065,0.0004870279524527,0.000371365329254402,0.000533861252246605,-0.000127562786538338,0.000233272367392379,-0.00107524978313888,0.000400302267553314,0.000145642119159209,-0.000691040955876335,0.00046111702131275,0.000359552374462311,0.000564651569540437,-0.000147748050751483,0.000231190805352505,-0.000982591070511443,0.000376217024949332,0.000146799093865621,-0.000673487926721479,0.000480325287238472,0.000377234232347259,0.000546499428463396,-0.000130067524494628,0.000233263436217353,-0.00107208651727686,0.000291364320661178,0.0000820709111340363,-0.000903599557917986,0.000383555235980853,0.0002805240949968,0.000242379037801774,-0.000178770779896213,0.000221499975869452,0.0380026961402548,0.00852119128542938,0.00776177868035928,0.0236969401411456,0.0340538776306605,0.0291765973517861,0.0139047171106545,0.0126910297701361,0.0167579039822724,0.0387059719359013,0.00594991799563552,0.00550334032616624,0.0146730763322106,0.0139621779293139,0.0103569219024862,0.009853110841197,0.0023914001936669,0.00724223963776897,0.0385445061377903,0.00591026066140916,0.00563820882630963,0.0144924446834387,0.0140408154306363,0.0104965384554808,0.0102561798339682,0.00243646899261073,0.00716900452664026,0.0385445061377903,0.00591026066140916,0.00563820882630962,0.0144924446834387,0.0140408154306363,0.0104965384554808,0.0102561798339682,0.00243646899261073,0.00716900452664026,0.038951272952328,0.00628721697594304,0.0059181259505227,0.0143476455396655,0.0134544030968979,0.0100629858264117,0.010389081213779,0.00239263544779089,0.0071900358791374,0.0388389160406114,0.00595588620929004,0.00567904829207558,0.0144530699228588,0.0139825263628457,0.0104803703372997,0.0104184968610664,0.00253616566782085,0.00727307075942289,0.035407207723993,0.00483184231344641,0.00480950044376116,0.0101935428069076,0.0128121911696067,0.00955828840822507,0.00779806872016654,0.00180000414795514,0.00669424102183631,0.932753108999326,0.0462544685263802,0.0209924224742932,0.0433403265022399,0.835914482196894,0.120745191300866,0.0673420388627365,0.608826559385134,0.323831401752129,0.938307822943501,0.0302458853939464,0.0314462916625521,0.0692427298115106,0.891409776451427,0.0393474937370623,0.128522097083767,0.33963089025413,0.531847012662103,0.93471273826922,0.029270658605318,0.0360166031254617,0.0676235016998021,0.892756707295782,0.0396197910044157,0.132072355961867,0.344615522425108,0.523312121613025,0.93471273826922,0.029270658605318,0.0360166031254618,0.0676235016998021,0.892756707295782,0.0396197910044157,0.132072355961867,0.344615522425108,0.523312121613025,0.933534204411891,0.0295968406123403,0.0368689549757692,0.0790786357968862,0.880057698616311,0.0408636655868029,0.142546581842753,0.325813683002696,0.531639735154551,0.93517592032069,0.0287668165791371,0.0360572631001726,0.0685641340145371,0.889957423008523,0.0414784429769394,0.132595098220171,0.341760851998941,0.525644049780888,0.95640447487411,0.0172283027510334,0.0263672223748565,0.0546437466941981,0.907705507145809,0.0376507461599926,0.119739867607163,0.337541787226729,0.542718345166109 +"7",0.00739609484595676,0.0978825311395948,0.00744216393825377,0.0354981286333442,0.00732958038324962,0.0326177645034721,0.0168590343217223,0.0970857771716452,0.0202011493693815,0.024398656075348,0.0193243172534443,0.0213335776398096,0.011509531307165,0.097787465591483,0.0192685394383458,0.0245633368461212,0.019901247144762,0.0215173962771391,0.011509531307165,0.097787465591483,0.0192685394383458,0.0245633368461212,0.019901247144762,0.0215173962771391,0.0139311483686713,0.098253449193817,0.0115324589639707,0.0243725098154923,0.0144666527412152,0.0215126244058008,0.00698198831289482,0.09852345922651,0.0145365581425267,0.0245976205765084,0.0168499771697228,0.0216258659041015,0.0274206270438759,0.0963527227572357,0.0231769826515943,0.0243135658447567,0.0239426181857198,0.0213281933892047,0.0139026743937506,0.00920665323517933,0.0122467807576426,0.242172296971659,0.196051209935148,0.192807441090907,0.216549090681808,0.245926554228773,0.245752075475045,0.0106756966889138,-0.00114457389114299,0.00331767015077874,0.116956819278825,-0.00602894081007909,0.00162881906055661,-0.0482738068173462,0.0275820470260737,0.000439069417148028,0.0118996271914554,-0.00126281586811362,0.00323247761255666,0.141394197908142,-0.00671693526409081,-0.00189678495949142,-0.0661454354072428,0.0301455987147511,0.00332663098921201,0.0118996271914554,-0.00126281586811362,0.00323247761255666,0.141394197908142,-0.00671693526409082,-0.00189678495949141,-0.0661454354072429,0.0301455987147511,0.00332663098921201,0.0130331951026058,-0.00183053993424097,0.00349400021742725,0.143147206292389,-0.00826976538128271,-0.0038502031129329,-0.0728592662555312,0.0320975746283885,0.00262655851930694,0.0119294047094947,-0.00130564894068059,0.00329150601347389,0.142608495787221,-0.00611417769857988,-0.00263688588559985,-0.0666695474414387,0.0304699305349945,0.00436611617843528,0.00968911536981061,-0.00199214500638745,0.00203689265331718,0.11091547463074,-0.0119015707722653,-0.00930046757519632,-0.0632196526547045,0.026072624632267,-0.00287910831115149,0.00132464101930675,0.00112829409227862,0.0012651824843094,0.00444566808318397,0.00404646627021869,0.00400419229946062,0.0016924454006944,0.00192204577863912,0.00192068213511913,0.000545248609600345,0.0000114830440476337,0.000156803772031504,0.00112036894120338,0.0000660618700961819,0.0000210866178784134,-0.000366773654512388,0.00020956226271864,0.00000333595184074317,0.000583912346203125,0.0000148812078760958,0.00015595718084246,0.00132413582911302,0.0000720002513287986,-0.00000557686565855013,-0.000501018896649828,0.000228337972437918,0.0000251975813223482,0.000583912346203125,0.0000148812078760957,0.00015595718084246,0.00132413582911302,0.0000720002513287984,-0.00000557686565855001,-0.000501018896649829,0.000228337972437918,0.0000251975813223482,0.000648929496213815,-0.00000662552597307057,0.000162959494486342,0.00129327868253272,0.000061687603603142,-0.0000315233897260865,-0.000556079435476871,0.000244976405841529,0.0000200465260457147,0.000589789296427454,0.0000148243813899065,0.000161692791408052,0.00133333038787108,0.0000813856656685362,-0.00000893099795599505,-0.000508755337752331,0.000232516049613771,0.000033317833947754,0.000419021430245395,-0.0000374507266143477,0.0000739871074943613,0.000981516626008423,-0.00000813161402621421,-0.000123518181742182,-0.000482428092125203,0.000198959754283071,-0.0000219704264614821,0.0393273371595615,0.009649485377708,0.00902696116466869,0.0281426082243296,0.0381003439008792,0.0331807896512468,0.0155971625113489,0.0146130755487753,0.0186785861173915,0.0392512205455016,0.00596140103968315,0.00566014409819775,0.015793445273414,0.0140282397994101,0.0103780085203646,0.00948633718668461,0.00260096245638554,0.00724557558960971,0.0391284184839934,0.00592514186928525,0.00579416600715209,0.0158165805125517,0.0141128156819651,0.0104909615898222,0.0097551609373184,0.00266480696504864,0.00719420210796261,0.0391284184839934,0.00592514186928525,0.00579416600715208,0.0158165805125517,0.0141128156819651,0.0104909615898222,0.00975516093731841,0.00266480696504864,0.00719420210796261,0.0396002024485418,0.00628059144996997,0.00608108544500904,0.0156409242221982,0.013516090700501,0.0100314624366856,0.00983300177830212,0.00263761185363242,0.00721008240518311,0.0394287053370388,0.00597071059067994,0.00584074108348363,0.0157864003107299,0.0140639120285142,0.0104714393393437,0.00990974152331406,0.00276868171743462,0.00730638859337064,0.0358262291542384,0.00479439158683206,0.00488348755125552,0.011175059432916,0.0128040595555805,0.00943477022648289,0.00731564062804134,0.00199896390223821,0.00667227059537483,0.924337793579175,0.0537265534599008,0.0219356529609239,0.0444015470669755,0.831446835179536,0.124151617753488,0.0679368416556726,0.619844112281957,0.312219046062371,0.937783842433086,0.0307366618481295,0.0314794957187848,0.0692219487985717,0.891159455975709,0.0396185952257193,0.128702460856769,0.339562852992609,0.531734686150622,0.933969048549303,0.0299474409368021,0.0360835105138946,0.0676001364394449,0.892462634171678,0.039937229388877,0.132246776495903,0.344544331730139,0.523208891773958,0.933969048549303,0.0299474409368021,0.0360835105138947,0.0676001364394449,0.892462634171678,0.039937229388877,0.132246776495903,0.344544331730139,0.523208891773958,0.932809153048953,0.0302340972004841,0.0369567497505634,0.0790462607367077,0.879718849603465,0.0412348896598267,0.142733938152578,0.325746338428972,0.53151972341845,0.934431113124034,0.0294432169942332,0.0361256698817323,0.0685390153206192,0.889655327356883,0.0418056573224975,0.132780076389229,0.341684774365691,0.52553514924508,0.955934293026066,0.0176171484423885,0.0264485585315456,0.0546382831356371,0.907463780539832,0.0378979363245305,0.119764644460264,0.337610158545747,0.542625196993989 +"8",0.00702208742240966,0.098240351841674,0.00699972709676259,0.03649066616371,0.0068510356681058,0.0336438343255178,0.0173746181748515,0.0970890586591034,0.020007734490342,0.0243988551979097,0.0194745476406917,0.0213361194160645,0.0121204666242751,0.0977918351322589,0.0190093657389524,0.0245634592825907,0.0200210479215466,0.0215199324824884,0.0121204666242751,0.0977918351322589,0.0190093657389524,0.0245634592825907,0.0200210479215466,0.0215199324824884,0.014704866280786,0.0982581247682322,0.0107550653862229,0.0243726420984962,0.0141771296372863,0.0215149248663468,0.00721961333229115,0.0985280087665683,0.0143509234792037,0.0245977314444403,0.0168314648022595,0.0216283816059036,0.0269601503283027,0.0963551531223911,0.022664036136401,0.0243139528427541,0.0232689382155576,0.0213296711038084,0.0103025377411718,0.00987245305634692,0.00857632112382441,0.170741596704161,0.180412761734694,0.179622401134507,0.238071738912552,0.23117532511153,0.222404806094899,0.00394907077465589,0.000752250881176624,0.000768300784533658,-0.0070040516488534,0.0039615695236743,0.0120109161124959,0.0375327804773864,-0.00345034950734014,0.00301897963860505,0.00409750122033252,0.000656455590889897,0.00073799572108999,-0.0130089469495357,0.0028318867539764,0.0129281126999566,0.0468513542622715,-0.00342087932088899,0.0013530973376253,0.00409750122033253,0.000656455590889895,0.000737995721089987,-0.0130089469495357,0.0028318867539764,0.0129281126999566,0.0468513542622715,-0.00342087932088899,0.00135309733762531,0.00436858174940621,0.000675868726606019,0.000604177262179336,-0.0148610818213516,0.00209750763684325,0.0126619419772073,0.0481705317341355,-0.00451989853097464,0.00105309345572154,0.00417391390727156,0.000672968133138083,0.000703611621311972,-0.0135409879114826,0.00243148536754446,0.0130499823619368,0.0476962043059334,-0.0030117451743315,0.00115464527830082,0.0021771381397876,0.000211190729369947,0.000502701185671567,-0.0208999540918381,-0.000672775361841538,0.0113757566307295,0.038944219627383,-0.00706711232450345,-0.00205285865689582,0.00113890227490981,0.0011132445339688,0.0010340512721769,0.00367547756355316,0.00375452147234983,0.00368891756405995,0.00186065625253496,0.00180675713995002,0.00173821090627772,0.000271604545379923,0.0000316484347073468,0.0000621574785859661,0.000103833300931274,0.0000289927034697914,0.000154413586544244,0.000285165723759653,-0.0000262149886571082,0.0000229375362738491,0.000299720553219348,0.0000252354791596161,0.000057716777613844,0.0000818301682926546,0.000016048516638282,0.000158043686564597,0.00035487579263048,-0.0000259114657326203,0.0000102490418421619,0.000299720553219348,0.0000252354791596159,0.0000577167776138439,0.0000818301682926548,0.000016048516638282,0.000158043686564597,0.00035487579263048,-0.0000259114657326202,0.0000102490418421619,0.000316030770868409,0.0000220060320820272,0.0000536766802453997,0.0000643416175478498,0.00000206499758061349,0.000151067183429106,0.000367649078421857,-0.000034496952174924,0.00000803746241841359,0.000307154561285293,0.0000267221014912887,0.0000561443622666743,0.0000809648001766829,0.0000133247841993248,0.000158419059360421,0.000363969750244426,-0.000022982628384224,0.00000881109848633752,0.000176708788997382,-0.00000994116748553797,0.0000321987677244147,-0.0000487485487870614,-0.0000434935667078339,0.000122992954003058,0.000297182676354758,-0.0000539290137224599,-0.0000156653294294122,0.0404662394344713,0.0107627299116768,0.0100610124368456,0.0318180857878827,0.0418548653732291,0.0368697072153067,0.0174578187638839,0.0164198326887253,0.0204167970236692,0.0395228250908816,0.0059930494743905,0.00572230157678371,0.0158972785743453,0.0140572325028799,0.0105324221069088,0.00977150291044426,0.00257474746772843,0.00726851312588356,0.0394281390372128,0.00595037734844487,0.00585188278476593,0.0158984106808443,0.0141288641986034,0.0106490052763868,0.0101100367299489,0.00263889549931602,0.00720445114980477,0.0394281390372128,0.00595037734844487,0.00585188278476593,0.0158984106808443,0.0141288641986034,0.0106490052763868,0.0101100367299489,0.00263889549931602,0.00720445114980477,0.0399162332194102,0.006302597482052,0.00613476212525444,0.015705265839746,0.0135181556980816,0.0101825296201148,0.010200650856724,0.00260311490145749,0.00721811986760152,0.0397358598983241,0.00599743269217123,0.0058968854457503,0.0158673651109065,0.0140772368127135,0.0106298583987041,0.0102737112735585,0.0027456990890504,0.00731519969185698,0.0360029379432358,0.00478445041934652,0.00491568631897994,0.0111263108841289,0.0127605659888727,0.00955776318048595,0.00761282330439609,0.00194503488851575,0.00665660526594541,0.918132912275482,0.0587129379352702,0.0231541497892478,0.0455942835915105,0.827498612741514,0.126907103666975,0.0674850082274892,0.628795732536125,0.303719259236386,0.937750514504104,0.0307389778476599,0.0315105076482359,0.0692272823533553,0.891150334462134,0.0396223831845105,0.128704400571838,0.339683157300807,0.531612442127355,0.933921671867596,0.029947454556734,0.0361308735756706,0.0676035170632381,0.89245537702567,0.0399411059110925,0.132243239163015,0.344670314758792,0.523086446078193,0.933921671867595,0.029947454556734,0.0361308735756707,0.0676035170632381,0.89245537702567,0.0399411059110925,0.132243239163015,0.344670314758792,0.523086446078193,0.932760119539791,0.0302328671016482,0.037007013358561,0.0790485343475375,0.879709327821895,0.041242137830567,0.142727326887552,0.325866071873187,0.531406601239261,0.934382153039993,0.0294430919661812,0.0361747549938255,0.0685429311208242,0.889648434857061,0.0418086340221145,0.132775075329702,0.341811385850322,0.525413538819977,0.9558989905925,0.0176172430021913,0.0264837664053087,0.0546371860111948,0.907447185459302,0.0379156285295029,0.119756804498688,0.337691109713303,0.542552085788009 +"9",0.00661437092376576,0.098567217099352,0.00661588467275187,0.0373701656707409,0.00654500903948723,0.0345805911739312,0.0170296813758662,0.0970891121037916,0.0201265372774252,0.0243998810133662,0.0195523517665284,0.0213364080688552,0.0115310837242006,0.097792004409845,0.0190910717576363,0.0245647028582879,0.0201547644666094,0.0215203196886389,0.0115310837242006,0.097792004409845,0.0190910717576363,0.0245647028582879,0.0201547644666094,0.0215203196886389,0.014242340571756,0.0982584056622178,0.0102971977181566,0.0243739490196437,0.0139456825867614,0.0215152994919265,0.00648817936434041,0.0985281953773199,0.0139374209652459,0.0245990152990517,0.0168167324553115,0.0216288074513613,0.0179241382541019,0.0963557273602456,0.0213723156030138,0.0243146751417194,0.0230422197349939,0.0213299032786176,0.00913046610374905,0.00926414835604401,0.00921591453036192,0.170501919826203,0.175477120567151,0.17264319437569,0.220477450165506,0.216422186832363,0.216344492579373,0.000840951639696963,0.000758581416216047,-0.000161526241073184,-0.00358418271798437,0.00827161445329374,-0.000476319955130599,0.00172315194076725,0.00115573650725756,0.0064803919535273,0.000684856869793741,0.00085168188927126,-0.000211600297571672,-0.00831247220309765,0.00968404133487686,-0.000284355420986063,0.00168225768242861,0.000082108367141372,0.00736674235118354,0.000684856869793737,0.000851681889271259,-0.000211600297571672,-0.0083124722030977,0.00968404133487686,-0.00028435542098606,0.00168225768242863,0.0000821083671413677,0.00736674235118353,0.000402652191556652,0.000920841939078562,-0.000326872240396337,-0.0112056765747924,0.010115910523045,-0.000656736254031228,0.00214387134215863,-0.000483266702133112,0.00753593506051005,0.00068148945741709,0.000877386318035015,-0.000204647941719693,-0.0089704601624539,0.00993587449836383,-0.0000884415967513199,0.00239453127014685,-0.000152166238709182,0.0075405792502491,-0.000289686339582447,0.000591730833235917,-0.00059945861392014,-0.010383114288708,0.0078746305628796,-0.00339224913030518,-0.00672084605708965,-0.000718671066460737,0.00625382228373707,0.00104714292122618,0.00104923510129634,0.00104424554744643,0.00356095224632175,0.00359839965284313,0.00356194047522871,0.00172314760276565,0.00169145358015317,0.00169084635857251,0.0000378476035635871,0.0000509300685876615,0.00000911286276676414,-0.0000331312357790984,0.000101784764359538,0.0000264422161397697,0.0000130921254457235,0.00000878102909977927,0.0000492365776840664,0.0000236378338570631,0.0000544849641521359,0.0000102051110460817,-0.000088867754763891,0.000113732181098843,0.000033475259680369,0.0000127422683476476,0.000000621930194541961,0.0000557994229226798,0.0000236378338570629,0.0000544849641521359,0.0000102051110460817,-0.0000888677547638914,0.000113732181098843,0.000033475259680369,0.0000127422683476478,0.000000621930194541928,0.0000557994229226797,0.00000493337215438884,0.0000593822083120312,0.00000551239659056552,-0.000118648856504396,0.00011421234947216,0.0000292898594372011,0.0000163625414714097,-0.00000368840764830717,0.0000575160680254676,0.0000246714650802735,0.0000558043066460336,0.0000113889878340266,-0.0000928980268305575,0.000115440825479253,0.0000368031554048725,0.0000182726688848781,-0.00000116118061603751,0.0000575421626594728,-0.0000444584025500306,0.0000353496355930396,-0.0000152567948550813,-0.000155564724283009,0.0000886782651851599,-0.00000825077437434784,-0.0000512866617363118,-0.00000548416666177994,0.0000477228112800907,0.0415133823556975,0.0118119650129731,0.011105257984292,0.0353790380342045,0.0454532650260722,0.0404316476905354,0.0191809663666495,0.0181112862688784,0.0221076433822417,0.0395606726944452,0.00604397954297816,0.00573141443955048,0.0158641473385662,0.0141590172672394,0.0105588643230486,0.00978459503588999,0.00258352849682821,0.00731774970356763,0.0394517768710698,0.00600486231259701,0.00586208789581201,0.0158095429260804,0.0142425963797022,0.0106824805360672,0.0101227789982965,0.00263951742951057,0.00726025057272745,0.0394517768710698,0.00600486231259701,0.00586208789581201,0.0158095429260804,0.0142425963797022,0.0106824805360672,0.0101227789982965,0.00263951742951057,0.00726025057272745,0.0399211665915646,0.00636197969036403,0.006140274521845,0.0155866169832416,0.0136323680475538,0.010211819479552,0.0102170133981954,0.00259942649380919,0.00727563593562699,0.0397605313634044,0.00605323699881727,0.00590827443358433,0.015774467084076,0.0141926776381928,0.010666661554109,0.0102919839424434,0.00274453790843436,0.00737274185451645,0.0359584795406858,0.00481980005493956,0.00490042952412485,0.0109707461598459,0.0128492442540578,0.0095495124061116,0.00756153664265978,0.00193955072185397,0.0067043280772255,0.91248720049912,0.0633379393209219,0.024174860179958,0.0465016828817299,0.824624541514197,0.128873775604073,0.0673812863095717,0.635947373611737,0.296671340078692,0.937750065853199,0.0307393913383104,0.0315105428084904,0.0692381982725565,0.891142252546061,0.0396195491813822,0.128701618952083,0.339679866416786,0.531618514631131,0.933918663083068,0.0299505232056337,0.0361308137112989,0.0676155709118224,0.892447364609034,0.0399370644791443,0.132239344252561,0.344667206792848,0.523093448954591,0.933918663083068,0.0299505232056337,0.036130813711299,0.0676155709118224,0.892447364609034,0.0399370644791443,0.132239344252561,0.344667206792848,0.523093448954591,0.93275479621757,0.0302382954828328,0.0370069082995972,0.0790628586417364,0.879699338214653,0.04123780314361,0.142722608742217,0.325861843254221,0.531415548003562,0.934378854495233,0.029446395416368,0.0361747500883986,0.0685555461400817,0.889640175258189,0.0418042786017288,0.132770912141738,0.341809048732152,0.52542003912611,0.955888414952602,0.0176270460010246,0.0264845390463734,0.0546420594193608,0.907444369258351,0.0379135713222883,0.119756162793753,0.337684333043655,0.542559504162592 +"10",0.00625054725610435,0.0988598626173705,0.00626891941696003,0.0381363115313713,0.00615427537604687,0.0353719256598244,0.0172674975191288,0.0970897814863743,0.0201362413559919,0.0243999483840106,0.0195048417366016,0.0213365525242287,0.0116737498695922,0.0977929866387968,0.0190998040836456,0.0245648066461904,0.0200938719328397,0.021520438329643,0.0116737498695922,0.0977929866387968,0.0190998040836456,0.0245648066461904,0.0200938719328397,0.021520438329643,0.0144004216555114,0.0982594356724172,0.00980390965107506,0.0243740794542474,0.0134991915232344,0.0215154193024331,0.00640221443912185,0.0985292159413265,0.0139529802031491,0.0245991307736693,0.0166989667613844,0.0216289229928149,0.0246377051314304,0.0963562475702897,0.0219329566435251,0.024314799718445,0.0232318546090468,0.0213299682623354,0.00812129554513968,0.00854402258093799,0.00844000501125399,0.16743813873522,0.163931164514717,0.160340262101849,0.20248942023268,0.206504295912064,0.201925822963777,-0.000143234674652678,0.000078636384955011,0.000594843875268333,0.0146968061834712,-0.0019552162959295,0.00289574126228656,0.00224668764532645,0.00354962903860927,-0.00147501980130601,-0.000264638791306313,0.0000421611617903257,0.000613417634173083,0.0189242156803328,-0.0025957338637624,0.00244303995215499,0.000295603766251398,0.00448757093743306,-0.00165242076667434,-0.000264638791306316,0.0000421611617903263,0.000613417634173082,0.0189242156803328,-0.0025957338637624,0.002443039952155,0.000295603766251392,0.00448757093743306,-0.00165242076667434,-0.000439587542237867,-0.0000130755304137485,0.000678024085907461,0.0201750534904977,-0.00331850776009667,0.00219736176677474,-0.000697431104540523,0.00488663049457736,-0.00210030232751664,-0.000301469316585755,0.000036703524385405,0.000625219814338335,0.0195605814160839,-0.00263695057602253,0.00227895447680732,-0.000101332320558579,0.00474371535972056,-0.00154123515521506,-0.000361615680788213,-0.000186677861215181,0.000430959502457308,0.0141485174053362,-0.00398954841435259,0.00120463748376464,-0.000879622634456173,0.00345514266154295,-0.00306122724366765,0.000959469105270986,0.000984303546003454,0.000966460296938193,0.00340808982569708,0.00338902056090463,0.00331443571349081,0.00158256165788123,0.00161394002966999,0.00157815684785595,0.0000221978340100761,0.0000100740396462697,0.000028005578407458,0.000181802015722461,-0.00000519725573833342,0.0000263586880558592,0.0000170698333641282,0.0000269692924691036,-0.0000112068726017428,0.0000175541237028836,0.000010424821847692,0.0000275534661993524,0.000222926644542897,-0.00000795609442882444,0.0000203331223986891,0.000002239052050999,0.0000339911261581076,-0.000012516268495676,0.0000175541237028834,0.000010424821847692,0.0000275534661993524,0.000222926644542897,-0.00000795609442882445,0.0000203331223986891,0.00000223905205099896,0.0000339911261581076,-0.000012516268495676,0.0000135380601323418,0.00000765034955924043,0.0000293021405605998,0.000229086682094439,-0.0000143421539533267,0.0000150499144080712,-0.00000532296185274117,0.0000372959386837408,-0.0000160300122776428,0.000015771204988295,0.000010908368099292,0.0000283690869425388,0.000228261035727887,-0.00000703701734755715,0.0000189196722336487,-0.000000773266970445405,0.0000361992934203646,-0.0000117611659601552,-0.000000827958975319172,-0.00000450089756025692,0.0000132004902061844,0.000161404146446982,-0.0000293530261509704,-0.00000130443028874089,-0.00000671238533448756,0.0000263661347735121,-0.0000233601729321488,0.0424728514609685,0.0127962685589766,0.0120717182812302,0.0387871278599016,0.0488422855869768,0.0437460834040262,0.0207635280245308,0.0197252262985484,0.0236858002300977,0.0395828705284552,0.00605405358262443,0.00575942001795793,0.0160459493542886,0.0141538200115011,0.0105852230111045,0.00980166486925411,0.00261049778929731,0.00730654283096589,0.0394693309947727,0.0060152871344447,0.00588964136201136,0.0160324695706233,0.0142346402852734,0.0107028136584659,0.0101250180503475,0.00267350855566867,0.00724773430423178,0.0394693309947727,0.0060152871344447,0.00588964136201136,0.0160324695706233,0.0142346402852734,0.0107028136584659,0.0101250180503475,0.00267350855566867,0.00724773430423178,0.0399347046516969,0.00636963003992327,0.0061695766624056,0.0158157036653361,0.0136180258936004,0.01022686939396,0.0102116904363426,0.00263672243249293,0.00725960592334935,0.0397763025683927,0.00606414536691656,0.00593664352052687,0.0160027281198039,0.0141856406208452,0.0106855812263427,0.0102912106754729,0.00278073720185473,0.0073609806885563,0.0359576515817105,0.0048152991573793,0.00491363001433104,0.0111321503062929,0.0128198912279068,0.00954820797582286,0.00755482425732529,0.00196591685662748,0.00668096790429336,0.907454738359478,0.0675289014713633,0.0250163601691584,0.0472110829412943,0.822161109861006,0.1306278071977,0.0672679124815839,0.641539632796738,0.291192454721678,0.937737336121502,0.030752436822579,0.0315102270559188,0.0692384707518501,0.891137505778604,0.0396240234695455,0.128706494407269,0.339681129614365,0.531612375978366,0.933900026468621,0.0299698835956419,0.036130089935737,0.0676156913944264,0.892440226295747,0.0399440823098268,0.132244183384761,0.344666835813621,0.523088980801618,0.933900026468621,0.0299698835956419,0.036130089935737,0.0676156913944264,0.892440226295747,0.0399440823098268,0.132244183384761,0.344666835813621,0.523088980801618,0.932735313930539,0.0302585423465118,0.0370061437229496,0.0790623909001045,0.879691253106389,0.0412463559935069,0.142728144390105,0.325860093680039,0.531411761929856,0.934359596456543,0.0294664026095105,0.0361740009339462,0.0685556579057149,0.889632137245096,0.0418122048491888,0.132776102340523,0.341808336227646,0.525415561431831,0.955878093924959,0.0176376343565171,0.0264842717185235,0.0546416311337337,0.90744066906749,0.0379176997987763,0.119756904380315,0.337682289840505,0.542560805779181 +"11",NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,0.00841893311876833,0.00820535503958736,0.00813057953067946,0.155003699194723,0.155237058237181,0.15387099467949,0.196028790632992,0.194777381577906,0.191953604307719,0.000430031594613633,0.000211566820988999,0.000162317814377887,-0.00112122559762671,0.00176373866079706,0.00158530396182085,0.00429332258292154,-0.000826724514715182,0.00150645249119983,0.000433671988273645,0.000208239293095837,0.00018451761125994,-0.00239083598635716,0.00165962077456448,0.00196955426055922,0.00587565494382217,-0.00111242349192812,0.00131970263080454,0.000433671988273646,0.000208239293095837,0.00018451761125994,-0.00239083598635715,0.00165962077456448,0.00196955426055922,0.00587565494382216,-0.00111242349192812,0.00131970263080454,0.000512392317611753,0.00020233577862962,0.000168262448741816,-0.0029092300184916,0.00157436375312726,0.00192001864077224,0.00603022805887246,-0.00142687912429786,0.00130347953001422,0.000466195197573115,0.000208641381069661,0.000188286266803406,-0.00245151820299636,0.00159294606587556,0.002059482243903,0.00619143939247279,-0.0010974647563067,0.00128461381823058,0.0000340473969898119,0.000136448876088517,0.0000678221788099838,-0.0049898260047363,0.00117340473142998,0.00136924513916475,0.00422060678738466,-0.00194762515302504,0.000841936948227295,0.000948033722140739,0.000935730430509383,0.000925013913935305,0.00320934090609552,0.00320437323403878,0.00316914336586733,0.00153206842876096,0.00152228800671902,0.00150021869745308,0.0000295705179188188,0.0000102927006993624,0.0000139738973124028,0.00000815977405425992,0.0000164082375352856,0.0000258477583190341,0.0000326197107200767,-0.00000628126910902978,0.0000114456911930988,0.0000327126293202278,0.00000909552389627686,0.0000152189868142222,0.00000137619569217744,0.0000138633232604467,0.0000296405578393257,0.0000445051746794693,-0.00000842605672034244,0.00000999609348582756,0.0000327126293202278,0.00000909552389627683,0.0000152189868142222,0.00000137619569217748,0.0000138633232604467,0.0000296405578393257,0.0000445051746794692,-0.00000842605672034243,0.00000999609348582756,0.0000360913191279309,0.00000806137141265479,0.0000150151820773653,-0.00000403231514079787,0.0000111641693437418,0.0000285016328110665,0.000046024150216034,-0.0000108902844993041,0.00000994846913038924,0.0000352757374373437,0.00000911916429890245,0.0000155446519321664,0.00000239616130386432,0.0000131232801627001,0.0000305325438201811,0.0000472468759752332,-0.00000837475390479488,0.00000980288845592178,0.00000638932948471378,0.00000259383792553755,0.00000710532633009826,-0.0000372205589977515,0.00000394041194615936,0.0000202911859936512,0.0000322073784740597,-0.0000148622943545864,0.00000642480650505099,0.0434208851831092,0.013731998989486,0.0129967321951655,0.0419964687659971,0.0520466588210156,0.0469152267698936,0.0222955964532917,0.0212475143052675,0.0251860189275508,0.039612441046374,0.00606434628332379,0.00577339391527034,0.0160541091283429,0.0141702282490364,0.0106110707694235,0.00983428457997419,0.00260421652018828,0.00731798852215898,0.039502043624093,0.00602438265834097,0.00590486034882559,0.0160338457663155,0.0142485036085339,0.0107324542163052,0.010169523225027,0.00266508249894833,0.0072577303977176,0.039502043624093,0.00602438265834097,0.00590486034882558,0.0160338457663155,0.0142485036085339,0.0107324542163052,0.010169523225027,0.00266508249894833,0.0072577303977176,0.0399707959708249,0.00637769141133592,0.00618459184448297,0.0158116713501953,0.0136291900629442,0.0102553710267711,0.0102577145865587,0.00262583214799362,0.00726955439247974,0.03981157830583,0.00607326453121546,0.00595218817245904,0.0160051242811077,0.0141987639010079,0.0107161137701628,0.0103384575514482,0.00277236244794993,0.00737078357701222,0.0359640409111952,0.00481789299530484,0.00492073534066114,0.0110949297472952,0.012823831639853,0.00956849916181651,0.00758703163579935,0.0019510545622729,0.00668739271079841,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA,NA diff --git a/statsmodels/tsa/statespace/tests/results/results_var_misc.py b/statsmodels/tsa/statespace/tests/results/results_var_misc.py new file mode 100644 index 0000000..ab9a98a --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_var_misc.py @@ -0,0 +1,146 @@ +""" +Results for VAR miscellaneous tests + +Results from Stata using script `test_var_misc_stata.do`. + +Data from: + +http://www.jmulti.de/download/datasets/e1.dat + +Author: Chad Fulton +License: Simplified-BSD +""" + +# See http://www.jmulti.de/download/datasets/e1.dat +# 1960:Q1 - 1982Q4 +lutkepohl_data = [ + [180, 451, 415], [179, 465, 421], [185, 485, 434], [192, 493, 448], + [211, 509, 459], [202, 520, 458], [207, 521, 479], [214, 540, 487], + [231, 548, 497], [229, 558, 510], [234, 574, 516], [237, 583, 525], + [206, 591, 529], [250, 599, 538], [259, 610, 546], [263, 627, 555], + [264, 642, 574], [280, 653, 574], [282, 660, 586], [292, 694, 602], + [286, 709, 617], [302, 734, 639], [304, 751, 653], [307, 763, 668], + [317, 766, 679], [314, 779, 686], [306, 808, 697], [304, 785, 688], + [292, 794, 704], [275, 799, 699], [273, 799, 709], [301, 812, 715], + [280, 837, 724], [289, 853, 746], [303, 876, 758], [322, 897, 779], + [315, 922, 798], [339, 949, 816], [364, 979, 837], [371, 988, 858], + [375, 1025, 881], [432, 1063, 905], [453, 1104, 934], [460, 1131, 968], + [475, 1137, 983], [496, 1178, 1013], [494, 1211, 1034], [498, 1256, 1064], + [526, 1290, 1101], [519, 1314, 1102], [516, 1346, 1145], [531, 1385, 1173], + [573, 1416, 1216], [551, 1436, 1229], [538, 1462, 1242], [532, 1493, 1267], + [558, 1516, 1295], [524, 1557, 1317], [525, 1613, 1355], [519, 1642, 1371], + [526, 1690, 1402], [510, 1759, 1452], [519, 1756, 1485], [538, 1780, 1516], + [549, 1807, 1549], [570, 1831, 1567], [559, 1873, 1588], [584, 1897, 1631], + [611, 1910, 1650], [597, 1943, 1685], [603, 1976, 1722], [619, 2018, 1752], + [635, 2040, 1774], [658, 2070, 1807], [675, 2121, 1831], [700, 2132, 1842], + [692, 2199, 1890], [759, 2253, 1958], [782, 2276, 1948], [816, 2318, 1994], + [844, 2369, 2061], [830, 2423, 2056], [853, 2457, 2102], [852, 2470, 2121], + [833, 2521, 2145], [860, 2545, 2164], [870, 2580, 2206], [830, 2620, 2225], + [801, 2639, 2235], [824, 2618, 2237], [831, 2628, 2250], [830, 2651, 2271], +] + +lutkepohl_ar1 = { + # intercept, AR, sigma^2 + 'params': [.02193629, -.19639897, .0020982049304637], + 'loglike': 123.1654530510318, + 'aic': -3.274741974352211, + 'bic': -3.212469944806153, + 'hqic': -3.249900896155949, + 'fpe': .0022147718710451, + 'estat_aic': -242.33091, + 'estat_bic': -237.72278 +} + +lutkepohl_ar1_lustats = { + # intercept, AR, sigma^2 + 'params': [.02193629, -.19639897, .0020982049304637], + 'loglike': 123.1654530510318, + 'aic': -6.139646067788584, + 'bic': -6.108510053015554, + 'hqic': -6.127225528690452, + 'fpe': .0022147718710451, + 'estat_aic': -242.33091, + 'estat_bic': -237.72278 +} + +lutkepohl_ar1_lustats_dfk = { + 'params': [.02193629, -.19639897, .00215649], # intercept, AR, sigma^2 + 'loglike': 123.1654530510318, + 'loglike_dfk': 122.1516910060716, + 'aic': -6.139646067788584, + 'bic': -6.108510053015554, + 'hqic': -6.127225528690452, + 'fpe': .0022147718710451, + 'estat_aic': -242.33091, + 'estat_bic': -237.72278 +} + +lutkepohl_var1 = { + 'params': [ + -.25155231, .27806257, .8357748, # Phi, row 1 + .0226746, .1936755, .66011984, # Phi, row 2 + -.01493575, .54067685, .2807106, # Phi, row 3 + # 0.002010307675, # Covariance, lower triangle + # 0.000063517318, 0.000184048720, + # 0.000129337591, 0.000117178971, 0.000162533784 + # Note: the following are the Cholesky of the covariance + # matrix defined just above + 0.0448364548, # Cholesky, lower triangle + 0.0014166445, 0.0134922881, + 0.0028846525, 0.0083820063, 0.0091626707 + ], + 'loglike': 580.6167823218026, + 'aic': -15.44910222491358, + 'bic': -15.16887809195632, + 'hqic': -15.33731737303041, + 'fpe': 3.91899792595e-11, + 'estat_aic': -1143.2336, + 'estat_bic': -1122.497 +} + +lutkepohl_var1_lustats = { + 'params': [ + -.25155231, .27806257, .8357748, # Phi, row 1 + .0226746, .1936755, .66011984, # Phi, row 2 + -.01493575, .54067685, .2807106, # Phi, row 3 + # 0.002010307675, # Covariance, lower triangle + # 0.000063517318, 0.000184048720, + # 0.000129337591, 0.000117178971, 0.000162533784 + # Note: the following are the Cholesky of the covariance + # matrix defined just above + 0.0448364548, # Cholesky, lower triangle + 0.0014166445, 0.0134922881, + 0.0028846525, 0.0083820063, 0.0091626707 + ], + 'loglike': 580.6167823218026, + 'aic': -23.96273342414162, + 'bic': -23.68250929118436, + 'hqic': -23.85094857225844, + 'fpe': 3.91899792595e-11, + 'estat_aic': -1143.2336, + 'estat_bic': -1122.497 +} + +lutkepohl_var1_lustats_dfk = { + 'params': [ + -.25155231, .27806257, .8357748, # Phi, row 1 + .0226746, .1936755, .66011984, # Phi, row 2 + -.01493575, .54067685, .2807106, # Phi, row 3 + # .00209525, # Covariance, lower triangle + # .0000662, .00019183, + # .0001348, .00012213, .0001694 + # Note: the following are the Cholesky of the covariance + # matrix defined just above + 0.0457739, # Cholesky, lower triangle + 0.0014462, 0.0137746, + 0.0029449, 0.0085572, 0.0093543 + ], + 'loglike': 580.6167823218026, + 'loglike_dfk': 576.0230233277257, + 'aic': -23.96273342414162, + 'bic': -23.68250929118436, + 'hqic': -23.85094857225844, + 'fpe': 3.91899792595e-11, + 'estat_aic': -1143.2336, + 'estat_bic': -1122.497 +} diff --git a/statsmodels/tsa/statespace/tests/results/results_var_stata.csv b/statsmodels/tsa/statespace/tests/results/results_var_stata.csv new file mode 100644 index 0000000..0b07600 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_var_stata.csv @@ -0,0 +1,93 @@ +predict_1,predict_2,predict_3,predict_diag1,predict_diag2,predict_diag3,predict_int1,predict_int2,predict_int3,predict_exog1_1,predict_exog1_2,predict_exog1_3,predict_exog2_1,predict_exog2_2,predict_exog2_3,predict_var2_1,predict_var2_2,dyn_predict_1,dyn_predict_2,dyn_predict_3,dyn_predict_diag1,dyn_predict_diag2,dyn_predict_diag3,dyn_predict_int1,dyn_predict_int2,dyn_predict_int3,dyn_predict_var2_1,dyn_predict_var2_2,fcast_exog1_dln_inv,fcast_exog1_dln_inc,fcast_exog1_dln_consump,fcast_exog2_dln_inv,fcast_exog2_dln_inc,fcast_exog2_dln_consump +,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, +0,0,0,0,0,0,.017993,.0206546,.0198753,,,,,,,0,0,0,0,0,0,0,0,.017993,.0206546,.0198753,0,0,,,,,, +.0219036,.015239,.0205644,.0219323,.015408,.0205827,.0222069,.0178744,.023416,.0240228,.0116697,.0155036,.0274188,.0195343,.0234162,.0291779,.0214276,.0219036,.015239,.0205644,.0219323,.015408,.0205827,.0222069,.0178744,.023416,.0291779,.0214276,,,,,, +.0286807,.0290166,.0307121,.0287198,.0292086,.0308044,.0278614,.0220684,.0228171,.0325758,.0226331,.0217584,.0330271,.0236782,.0228099,.0365168,.0299893,.0286807,.0290166,.0307121,.0287198,.0292086,.0308044,.0278614,.0220684,.0228171,.0365168,.0299893,,,,,, +.0213229,.0250984,.0171728,.021225,.0251252,.0173499,.0211601,.0243908,.0164511,.0246534,.020032,.0101589,.0273071,.0261775,.0163418,.0210618,.0275606,.0213229,.0250984,.0171728,.021225,.0251252,.0173499,.0211601,.0243908,.0164511,.0210618,.0275606,,,,,, +.0053626,.0244219,.022593,.0055324,.0245271,.0226514,.0053418,.0233062,.0212843,.0078678,.0201839,.0167408,.0098265,.0247198,.0213045,.0008339,.025076,.0158976,.0166997,.0180117,.0161077,.0169354,.0181261,.0155766,.0196724,.0214068,.016601,.0195765,,,,,, +.0152812,.001603,.0115397,.0153171,.0017642,.0114732,.0166697,.0134123,.024661,.0152486,.00144,.0112098,.0210356,.0148418,.0246933,.0306755,.0229331,.0155252,.0155309,.0138104,.0156066,.0157223,.0140464,.0195002,.0210119,.0193583,.0213424,.0207717,,,,,, +.0310255,.0307515,.0132727,.0307157,.0306726,.0135935,.0304952,.0281367,.0105641,.0352956,.0246831,.0049285,.0376171,.0300593,.0103376,.0131385,.0096833,.0118529,.0125056,.012006,.0120795,.0127661,.0122276,.0173198,.0205541,.0200522,.0168285,.0177828,,,,,, +.0154957,.0186156,.0234295,.0156176,.0187921,.0234372,.0156334,.0192535,.0240207,.0173325,.0154124,.0189349,.0195353,.0205137,.0240673,.0119374,.0163648,.0104293,.0106435,.009926,.0106197,.0108977,.0101749,.0182681,.0206824,.0198207,.0161775,.0171797,,,,,, +.0016842,.018106,.0124847,.0017576,.0181204,.01257,.0023183,.0230567,.0180721,.0031342,.015819,.0094044,.0068423,.0244065,.0180443,.0064078,.0263343,.0085524,.0088723,.0083608,.0087764,.0091352,.0086051,.0178907,.0206484,.019891,.0148133,.0154455,,,,,, +.0284541,.0204126,.0171175,.0283153,.0204857,.0172589,.0284523,.0214,.0182537,.0309551,.0166898,.0119326,.0336321,.0228894,.0181701,.0121113,.0153868,.0072352,.0074501,.0069959,.0074494,.0077052,.0072372,.0180287,.0206555,.0198713,.0138072,.0144635,,,,,, +.01227,.0136681,.0181741,.0123676,.0138123,.0181713,.0128614,.0182774,.0232453,.0132226,.0119566,.0157784,.0164452,.0194196,.0232869,.0238754,.0188439,.0060418,.0062407,.0058667,.0062548,.0064862,.0060975,.0179814,.0206547,.019876,.0126159,.0132462,,,,,, +.0153997,.0147606,.0130408,.015365,.0148208,.0131198,.0160075,.0202455,.0192012,.0166369,.0129135,.0105026,.0203546,.0215229,.0191646,.0201475,.0194606,.005071,.0052315,.0049165,.0052735,.0054632,.0051347,.0179965,.0206544,.0198752,.0117151,.0122784,,,,,, +.0452093,.0043659,.0115588,.0449143,.0045154,.0116165,.0460012,.0132133,.0214426,.0460411,.0033797,.0100354,.0509036,.0146405,.0213649,.0513044,.0046492,.0042482,.0043847,.0041209,.0044396,.0046009,.0043244,.017992,.0206547,.0198752,.0107843,.0113051,,,,,, +-.0308253,.0183067,.0090861,-.0304762,.0182545,.0091148,-.0296423,.0260625,.0178247,-.0307674,.0179755,.0088939,-.026909,.0269109,.0178838,-.0142943,.0157543,.0035612,.003675,.0034539,.0037394,.0038748,.0036419,.0179932,.0206545,.0198753,.0099649,.0104487,,,,,, +.0084279,.0141093,.0134112,.008477,.0141778,.0134569,.009166,.0201749,.0201967,.009106,.0130421,.0119872,.0126318,.0212072,.0202022,-.0149168,.0217644,.0029847,.0030802,.0028949,.0031491,.0032633,.0030672,.017993,.0206546,.0198752,.0091911,.0096364,,,,,, +.0174139,.016467,.0191551,.0174551,.0166018,.0191911,.0177479,.0192371,.0221892,.0185175,.014658,.0166459,.0209078,.0201936,.0222153,.0193026,.0199788,.0025017,.0025817,.0024264,.0026522,.0027483,.0025831,.017993,.0206546,.0198753,.008487,.0088979,,,,,, +.0333252,.0269773,.0221253,.0331774,.0270646,.0223049,.0327602,.0232518,.0179766,.0362335,.0226783,.016172,.0369761,.0243982,.0179024,.027821,.0212826,.0020968,.0021639,.0020337,.0022336,.0023146,.0021755,.017993,.0206546,.0198752,.0078311,.0082105,,,,,, +-.0098444,.0046119,.0082608,-.0096281,.0046854,.0081933,-.008177,.0175129,.0226559,-.0111728,.0064814,.0109563,-.0061125,.0182001,.0227466,.0090279,.0197315,.0017574,.0018137,.0017045,.0018811,.0019493,.0018321,.017993,.0206546,.0198753,.0072289,.0075791,,,,,, +.0181736,.0159572,.0114471,.0180728,.0159841,.0115675,.0187115,.0212278,.0174139,.0191709,.0146914,.0097642,.0224297,.0222383,.0173572,.0070974,.0139059,.001473,.0015201,.0014287,.0015842,.0016417,.001543,.017993,.0206546,.0198753,.0066716,.0069948,,,,,, +.0277111,.0282975,.0340761,.0278257,.0285451,.0341181,.0268654,.0207146,.0254008,.0301263,.0242147,.0283695,.0288889,.0213492,.0254865,.027889,.0247586,.0012346,.0012741,.0011974,.0013342,.0013826,.0012995,.017993,.0206546,.0198753,.0061579,.0064562,,,,,, +.0314369,.0199549,.0187331,.0312993,.0200574,.0188593,.031378,.0204889,.0193325,.0331166,.0175808,.0154465,.0347659,.0214003,.0192893,.0432999,.0298763,.0010348,.0010679,.0010036,.0011236,.0011644,.0010944,.017993,.0206546,.0198753,.0056834,.0059588,,,,,, +.0249369,.0311732,.0276795,.0249449,.0312988,.027822,.0241242,.0243906,.0200423,.0276228,.0270076,.0219563,.0268023,.0251074,.0200445,.0230672,.0238666,.0008673,.000895,.0008412,.0009463,.0009806,.0009217,.017993,.0206546,.0198753,.0052457,.0054998,,,,,, +.0226227,.0189283,.0183121,.0225767,.0190301,.0184039,.0227616,.0205543,.0201161,.0237223,.0173598,.0161806,.0254098,.0212679,.0201125,.0257267,.0258167,.0007269,.0007502,.0007051,.000797,.0008259,.0007762,.017993,.0206546,.0198753,.0048416,.0050761,,,,,, +.0206391,.0183528,.0147666,.0205545,.018407,.014886,.0209253,.0214154,.0182328,.0215931,.0171426,.0131695,.0237526,.0221437,.0182011,.0198942,.0164757,.0006093,.0006288,.0005909,.0006712,.0006955,.0006537,.017993,.0206546,.0198753,.0044687,.0046851,,,,,, +.0064361,.0123588,.0062243,.0063902,.0123374,.0063249,.007476,.0214799,.0165364,.0062105,.0130622,.0073601,.0101345,.0221494,.0165028,.0023057,.0104471,.0005107,.000527,.0004953,.0005653,.0005858,.0005506,.017993,.0206546,.0198753,.0041244,.0043242,,,,,, +.0155921,.009804,.0120788,.0155744,.0098965,.0121083,.0165001,.0177769,.0209871,.0151424,.0106634,.0133319,.018439,.0182976,.0210128,.0110352,.0084571,.000428,.0004417,.0004151,.0004761,.0004933,.0004637,.017993,.0206546,.0198753,.0038067,.0039911,,,,,, +.0299575,.0169379,.0245207,.0299609,.0171528,.0245389,.0299509,.0171625,.0246345,.0306122,.0158736,.0230132,.031338,.0175545,.0247044,.0403971,.0186751,.0003587,.0003702,.0003479,.0004009,.0004155,.0003905,.017993,.0206546,.0198753,.0035135,.0036837,,,,,, +-.0172722,-.0142972,-.0190914,-.0173296,-.0144513,-.019101,-.0137672,.0156842,.0146928,-.0215492,-.0070201,-.0087462,-.011505,.0162406,.0146565,.0082196,.0043511,.0003007,.0003103,.0002916,.0003377,.0003499,.0003289,.017993,.0206546,.0198753,.0032429,.0034,,,,,, +.0321264,.0165184,.0131974,.0319078,.0165722,.0133468,.0323852,.0202088,.0173925,.0328862,.0158415,.0123208,.0350353,.0208184,.0173281,.0013488,-.0109963,.000252,.0002601,.0002444,.0002844,.0002947,.000277,.017993,.0206546,.0198753,.0029931,.0031381,,,,,, +.0110035,-.0049469,.0022687,.0109659,-.0048623,.0022148,.0130487,.012816,.0221412,.0083397,-.0005477,.0084275,.0142469,.0131323,.022191,.0309398,.0024609,.0002112,.000218,.0002049,.0002395,.0002482,.0002333,.017993,.0206546,.0198753,.0027625,.0028963,,,,,, +.0134224,.0092759,.0041027,.0132885,.0092555,.0042106,.0145848,.0200068,.0162319,.0126186,.0110589,.0067327,.0166764,.0204561,.0161873,.0132994,.0000422,.000177,.0001827,.0001717,.0002017,.000209,.0001964,.017993,.0206546,.0198753,.0025497,.0026732,,,,,, +-.0129232,.0109613,.0095938,-.0126974,.0109935,.0095801,-.0116011,.020808,.0206114,-.0145954,.0135551,.0134188,-.0114635,.020808,.0207159,-.0136073,.010725,.0001484,.0001531,.0001439,.0001699,.000176,.0001654,.017993,.0206546,.0198753,.0023533,.0024673,,,,,, +.0370364,.0124037,.0209094,.0369347,.0126113,.0209344,.0372688,.0153276,.0240707,.0369543,.0127017,.0212882,.0381709,.0155191,.0241228,.0339027,.0177888,.0001244,.0001284,.0001206,.0001431,.0001482,.0001393,.017993,.0206546,.0198753,.002172,.0022773,,,,,, +.02196,.0242538,.0181303,.0218787,.0243028,.0182879,.0218124,.0235982,.0174414,.02292,.0231369,.0167299,.0232184,.0238279,.0174251,.0309038,.0189547,.0001042,.0001076,.0001011,.0001205,.0001248,.0001173,.017993,.0206546,.0198753,.0020047,.0021018,,,,,, +.0088349,.0167866,.0180935,.0089439,.0168989,.0181198,.0093028,.0202276,.0218874,.0082781,.0177047,.0195069,.0093387,.0201608,.021978,.0115932,.0215607,.0000874,.0000902,.0000847,.0001015,.0001051,.0000988,.017993,.0206546,.0198753,.0018503,.0019399,,,,,, +.0138939,.024108,.0195192,.0139224,.0241751,.0196347,.0138397,.0235647,.0189165,.0143786,.0235815,.0189646,.0143731,.0235688,.0189519,.0087818,.0252103,.0000732,.0000756,.000071,.0000855,.0000885,.0000832,.017993,.0206546,.0198753,.0017078,.0017905,,,,,, +.0330778,.0207476,.0218912,.0329739,.0208897,.0219959,.0328737,.0198843,.0208813,.0336476,.0201649,.021145,.0335446,.0199263,.020905,.0286047,.0213656,.0000614,.0000633,.0000595,.000072,.0000746,.0000701,.017993,.0206546,.0198753,.0015762,.0016526,,,,,, +.0081263,.0220489,.0207024,.008251,.0221499,.0207616,.0082445,.0224003,.0210481,.0079643,.0223754,.0213353,.0078801,.0221805,.0211392,.0183623,.0254464,.0000514,.0000531,.0000499,.0000606,.0000628,.000059,.017993,.0206546,.0198753,.0014548,.0015253,,,,,, +.011879,.0244902,.0228246,.0119847,.0246012,.0229009,.0117529,.022899,.0209907,.0120502,.0243161,.0227571,.0113293,.0226466,.0210774,.0087348,.0304176,.0000431,.0000445,.0000418,.000051,.0000529,.0000497,.017993,.0206546,.0198753,.0013427,.0014078,,,,,, +.01809,.0186676,.0116053,.0179731,.0186714,.0117571,.0184724,.022687,.0161985,.0178595,.0195854,.0130797,.0191889,.022664,.016177,.0097604,.0206746,.0000361,.0000373,.0000351,.000043,.0000445,.0000419,.017993,.0206546,.0198753,.0012393,.0012993,,,,,, +.0294821,.0248464,.0270555,.0294779,.0250242,.0271408,.0289747,.0208104,.0224412,.0300641,.0240988,.0261054,.0285244,.0205329,.0225178,.0231262,.0184518,.0000303,.0000313,.0000294,.0000362,.0000375,.0000353,.017993,.0206546,.0198753,.0011438,.0011993,,,,,, +-.0030156,.0281165,.025027,-.0027422,.028219,.0250779,-.0031805,.0251046,.0215796,-.0031445,.02823,.0254405,-.004739,.0245374,.0217254,.0070327,.0371209,.0000254,.0000262,.0000246,.0000305,.0000316,.0000297,.017993,.0206546,.0198753,.0010557,.0011069,,,,,, +.0247474,.0292947,.0285182,.0247861,.0294501,.0286273,.0240233,.0231085,.0215124,.0255774,.0281547,.0270765,.0232244,.0227055,.021594,.0144461,.0374782,.0000213,.000022,.0000206,.0000257,.0000266,.000025,.017993,.0206546,.0198753,.0009744,.0010216,,,,,, +.032296,.0287394,.022822,.0321585,.02882,.0230124,.0316298,.0240781,.0176312,.0333547,.0275965,.0213966,.0317359,.0238476,.0176249,.0270765,.0278669,.0000178,.0000184,.0000173,.0000216,.0000224,.0000211,.017993,.0206546,.0198753,.0008994,.0009429,,,,,, +.0060403,.0119842,.0066905,.0060096,.011973,.0067799,.0070959,.021155,.0170451,.0042349,.0153211,.0115753,.0065944,.0207852,.0170728,.0072685,.0147909,.0000149,.0000154,.0000145,.0000182,.0000189,.0000177,.017993,.0206546,.0198753,.0008301,.0008703,,,,,, +.0238965,.0277514,.0268631,.0239257,.0278966,.0269696,.0233119,.0227999,.0212506,.0243008,.0273343,.0264434,.0221084,.0222571,.0213352,.0101319,.0185324,.0000125,.0000129,.0000122,.0000153,.0000159,.0000149,.017993,.0206546,.0198753,.0007661,.0008032,,,,,, +.0257059,.0188137,.0206921,.0256713,.0189529,.0207645,.0257484,.0195978,.0215147,.0250379,.0201773,.0227175,.0245545,.0190577,.0215911,.0332744,.0268419,.0000105,.0000108,.0000102,.0000129,.0000134,.0000126,.017993,.0206546,.0198753,.0007071,.0007414,,,,,, +.0318195,.0261582,.0275483,.0317902,.0263321,.0276512,.0311918,.0212546,.0219722,.0321183,.0259622,.0273972,.0298251,.0206516,.0220541,.0373762,.0254131,8.80e-06,9.08e-06,8.54e-06,.0000109,.0000113,.0000106,.017993,.0206546,.0198753,.0006526,.0006843,,,,,, +.0218903,.0290997,.0231629,.0218643,.0291771,.0233223,.0213486,.0247748,.0183299,.0222567,.0289444,.0231714,.0201981,.024177,.0183749,.0230677,.0287736,7.38e-06,7.61e-06,7.16e-06,9.16e-06,9.49e-06,8.92e-06,.017993,.0206546,.0198753,.0006024,.0006316,,,,,, +.0093965,.0038019,.0103721,.0094565,.0039227,.0103284,.0107756,.0153209,.0232041,.0061644,.0091049,.0178977,.0085001,.0145141,.02334,.0233293,.0196793,6.18e-06,6.38e-06,6.00e-06,7.72e-06,8.00e-06,7.52e-06,.017993,.0206546,.0198753,.000556,.0005829,,,,,, +.0396162,.0299035,.0237923,.0394114,.0299908,.024008,.0387532,.0240098,.0172291,.0405326,.0291324,.022893,.0380966,.0234911,.0172172,.0289755,.0158416,5.18e-06,5.35e-06,5.03e-06,6.50e-06,6.73e-06,6.33e-06,.017993,.0206546,.0198753,.0005131,.000538,,,,,, +.0207615,.0221776,.0217302,.0207723,.0222983,.0218173,.0206618,.0214347,.0208541,.019973,.0237457,.0241025,.0186189,.0206098,.0209475,.0253772,.022058,4.34e-06,4.48e-06,4.21e-06,5.47e-06,5.67e-06,5.33e-06,.017993,.0206546,.0198753,.0004736,.0004966,,,,,, +.0166964,.0299388,.0208938,.0166778,.0299727,.021074,.0162386,.0262211,.0167821,.0167428,.0303776,.0217919,.0146099,.0254383,.0168224,.0075113,.025614,3.64e-06,3.76e-06,3.53e-06,4.61e-06,4.78e-06,4.49e-06,.017993,.0206546,.0198753,.0004371,.0004583,,,,,, +.0225149,.0088279,.0111192,.0224152,.0089187,.0111686,.0233993,.0171256,.0204085,.0200832,.0131761,.0173285,.0214349,.0163064,.0204778,.0216259,.0155451,3.05e-06,3.15e-06,2.96e-06,3.88e-06,4.02e-06,3.78e-06,.017993,.0206546,.0198753,.0004035,.000423,,,,,, +.0197268,.0098573,.0129679,.0196816,.0099643,.0130003,.0205494,.017301,.021275,.0172224,.0142327,.0192232,.0181442,.0163672,.0213708,.0305007,.0097599,2.56e-06,2.64e-06,2.48e-06,3.27e-06,3.39e-06,3.18e-06,.017993,.0206546,.0198753,.0003724,.0003904,,,,,, +.0251093,.0169877,.017058,.0250292,.0170904,.0171478,.0253514,.0197126,.0200972,.0235762,.0199072,.0213047,.0230891,.0187792,.0201699,.0294964,.0138316,2.14e-06,2.21e-06,2.08e-06,2.75e-06,2.85e-06,2.68e-06,.017993,.0206546,.0198753,.0003437,.0003604,,,,,, +.0102939,.0185643,.0136574,.0102954,.0185956,.0137609,.0107471,.0224621,.0180641,.008459,.0219611,.0186675,.0082324,.0214363,.0181395,.0111789,.016782,1.80e-06,1.85e-06,1.74e-06,2.32e-06,2.40e-06,2.26e-06,.017993,.0206546,.0198753,.0003172,.0003326,,,,,, +.0371635,.0148159,.0200306,.0370272,.0149881,.0200958,.0372791,.0169212,.022318,.0355415,.0178678,.0243836,.0346923,.0159012,.022405,.0352418,.0146963,1.51e-06,1.55e-06,1.46e-06,1.95e-06,2.02e-06,1.90e-06,.017993,.0206546,.0198753,.0002928,.000307,,,,,, +.0329035,.0256919,.0269775,.0328562,.0258623,.0270844,.0323,.0211053,.021763,.0323608,.0269502,.0288964,.0293435,.0199627,.0218662,.0453169,.0219867,1.26e-06,1.30e-06,1.22e-06,1.64e-06,1.70e-06,1.60e-06,.017993,.0206546,.0198753,.0002702,.0002833,,,,,, +.0175841,.0109321,.0130581,.017555,.0110294,.0130963,.0183755,.0179929,.0209435,.0147708,.0158331,.0200841,.0151864,.0167956,.0210526,.0343512,.0213019,1.06e-06,1.09e-06,1.03e-06,1.39e-06,1.44e-06,1.35e-06,.017993,.0206546,.0198753,.0002494,.0002615,,,,,, +.0231837,.0206712,.0215867,.0231778,.020805,.0216642,.0231369,.0205035,.0213443,.0216029,.0235707,.0258312,.0197278,.0192282,.0214622,.0264961,.0183737,8.87e-07,9.15e-07,8.60e-07,1.17e-06,1.21e-06,1.14e-06,.017993,.0206546,.0198753,.0002302,.0002414,,,,,, +.0478456,.0302042,.0318409,.047697,.0304105,.0319928,.0466501,.021283,.0217609,.0480865,.0303495,.0321734,.0436522,.0200803,.0218415,.0478389,.0257753,7.43e-07,7.67e-07,7.21e-07,9.82e-07,1.02e-06,9.57e-07,.017993,.0206546,.0198753,.0002125,.0002228,,,,,, +.0134735,.0150288,.0051387,.0133156,.0149697,.0053058,.0142854,.0228803,.0140899,.011004,.0198226,.0121471,.0118401,.021759,.0140954,.0218153,.0166693,6.23e-07,6.43e-07,6.04e-07,8.27e-07,8.57e-07,8.06e-07,.017993,.0206546,.0198753,.0001961,.0002056,,,,,, +.0117675,.0171662,.0125747,.0117446,.0171953,.0126778,.0123041,.0219279,.0179548,.0092925,.0216689,.0191465,.008818,.0205701,.0180409,-.0038577,.0067066,5.22e-07,5.39e-07,5.06e-07,6.97e-07,7.22e-07,6.79e-07,.017993,.0206546,.0198753,.000181,.0001898,,,,,, +.0168405,.0176618,.013851,.0167841,.0177074,.0139609,.0172437,.0215266,.0182178,.0145031,.0219802,.0201469,.0137103,.0201443,.0182998,.0075227,.0137997,4.38e-07,4.52e-07,4.24e-07,5.87e-07,6.08e-07,5.72e-07,.017993,.0206546,.0198753,.0001671,.0001752,,,,,, +.0038277,.0110742,.0097856,.0038819,.0111158,.0098216,.0048924,.0198479,.0196266,.0001787,.0173113,.0187748,.0006016,.0182908,.0197603,.0048979,.0141053,3.67e-07,3.79e-07,3.56e-07,4.94e-07,5.12e-07,4.81e-07,.017993,.0206546,.0198753,.0001542,.0001617,,,,,, +.0222672,.0127174,.0162343,.0222331,.0128467,.0162722,.0228121,.0177577,.0218282,.0192577,.0179543,.023733,.0184978,.0161946,.0219626,.0218916,.0142841,3.07e-07,3.17e-07,2.98e-07,4.16e-07,4.31e-07,4.05e-07,.017993,.0206546,.0198753,.0001423,.0001492,,,,,, +.0145178,.0212164,.0137079,.014457,.0212256,.0138563,.014758,.0236732,.0165367,.0123504,.0253578,.0198131,.0109737,.0221696,.0166055,.012645,.0160804,2.58e-07,2.66e-07,2.50e-07,3.51e-07,3.63e-07,3.41e-07,.017993,.0206546,.0198753,.0001314,.0001377,,,,,, +.0001037,.01006,.0062556,.0001409,.0100576,.0063083,.0013657,.0205615,.0180768,-.0039597,.0170619,.0163556,-.0031693,.0188924,.0181973,-.0054252,.0121337,2.16e-07,2.23e-07,2.09e-07,2.95e-07,3.06e-07,2.88e-07,.017993,.0206546,.0198753,.0001212,.0001271,,,,,, +.0278626,.0166797,.0154625,.0277276,.0167632,.0155751,.0281202,.0198629,.0190443,.0253616,.0213529,.0222137,.0240366,.0182845,.0191266,.0146551,.0096111,1.81e-07,1.87e-07,1.76e-07,2.49e-07,2.58e-07,2.42e-07,.017993,.0206546,.0198753,.0001119,.0001173,,,,,, +.0200701,.0178867,.0150175,.0199993,.0179488,.0151265,.0203849,.0211145,.018658,.0173967,.022785,.0221285,.0159493,.019433,.0187561,.0209873,.013162,1.52e-07,1.57e-07,1.47e-07,2.09e-07,2.17e-07,2.04e-07,.017993,.0206546,.0198753,.0001033,.0001083,,,,,, +.0135912,.0161049,.0157796,.0136144,.0161919,.0158383,.0140835,.0202714,.020427,.0103678,.0217114,.0238805,.0089485,.0184247,.0205737,.015036,.0166829,1.27e-07,1.31e-07,1.23e-07,1.76e-07,1.83e-07,1.72e-07,.017993,.0206546,.0198753,.0000953,.0000999,,,,,, +.0069156,.0109608,.0089604,.0069239,.0109928,.0090137,.0079612,.0198552,.018955,.0028472,.0179986,.0190904,.0028456,.0179949,.0190867,.0091651,.0154689,1.07e-07,1.10e-07,1.03e-07,1.49e-07,1.54e-07,1.45e-07,.017993,.0206546,.0198753,.000088,.0000922,,,,,, +.0103361,.0158699,.0125043,.0103363,.0159096,.0125879,.0109687,.0213132,.0186319,.0068879,.0219476,.0213064,.0057943,.0194148,.0187582,.0031334,.0128605,8.93e-08,9.22e-08,8.66e-08,1.25e-07,1.30e-07,1.22e-07,.017993,.0206546,.0198753,.0000812,.0000851,,,,,, +.0113839,.014007,.0164222,.0114569,.014122,.016441,.0120115,.0190428,.0220046,.0075665,.0204645,.025704,.0060587,.0169726,.0221908,.0126426,.0178327,7.49e-08,7.73e-08,7.26e-08,1.05e-07,1.09e-07,1.03e-07,.017993,.0206546,.0198753,.0000749,.0000786,.03636742,.00517273,.00598955,.03636742,.00517273,.00598955 +-.0027276,.0058189,.0039237,-.0026716,.0058207,.0039423,-.0011282,.0190754,.0188192,-.0079303,.0146405,.0165778,-.0069024,.0170211,.018973,.0048935,.0154488,6.28e-08,6.48e-08,6.09e-08,8.87e-08,9.19e-08,8.64e-08,.017993,.0206546,.0198753,.0000692,.0000725,-.00793034,.01464049,.01657784,-.00690238,.01702106,.01897295 +.0055591,.003654,.0042742,.0055527,.003699,.0042925,.0215153,.0199098,.0198089,.0305392,.0268776,.0300643,.0268477,.0183287,.0214632,.0067016,.0094511,5.26e-08,5.43e-08,5.10e-08,7.47e-08,7.74e-08,7.28e-08,.017993,.0206546,.0198753,.0000638,.0000669,.0160739,.02012147,.02199483,.0171472,.01792572,.01944241 +.003148,.0036684,.0030844,.0031732,.0037017,.0031332,.016877,.0208053,.0196935,.0107513,.0340083,.0271967,.0065679,.0243204,.0174497,.0125682,.0106929,4.41e-08,4.55e-08,4.28e-08,6.29e-08,6.52e-08,6.13e-08,.017993,.0206546,.0198753,.0000589,.0000618,.01659306,.02444523,.02489617,.01143598,.01863869,.01945406 +.0027846,.0028236,.0027936,.0028279,.0028789,.0028363,.0181704,.020565,.0199521,-.0152357,.0098945,.0187777,-.013672,.0135156,.0224209,.0081393,.0088935,3.69e-08,3.81e-08,3.58e-08,5.30e-08,5.49e-08,5.16e-08,.017993,.0206546,.0198753,.0000544,.000057,.0204207,.02664834,.02723967,.01290555,.0183615,.01965279 +.0023953,.0024608,.0022628,.0024328,.0025122,.0023157,.0179842,.020685,.0198382,.0103497,.025907,.0243547,.0079006,.0202352,.0186483,.0080913,.0087836,3.10e-08,3.20e-08,3.00e-08,4.46e-08,4.62e-08,4.35e-08,.017993,.0206546,.0198753,.0000502,.0000526,.02222549,.02837583,.02855637,.01247984,.01842648,.01954222 +.0019551,.0020296,.0019242,.0020029,.0020858,.0019753,.0179749,.0206433,.0198897,.0226094,.031164,.0267729,.0186704,.0220421,.0175953,.0075642,.0077824,2.60e-08,2.68e-08,2.52e-08,3.76e-08,3.89e-08,3.66e-08,.017993,.0206546,.0198753,.0000463,.0000486,.0234474,.02945931,.02960303,.01236002,.01833018,.01958445 +.0016649,.001712,.0016036,.0017097,.0017663,.0016555,.0180055,.0206582,.0198699,.0027905,.0119682,.0254323,.002643,.0116265,.0250884,.0070135,.0073465,2.18e-08,2.25e-08,2.11e-08,3.17e-08,3.28e-08,3.08e-08,.017993,.0206546,.0198753,.0000428,.0000448,.02436736,.03030084,.03034035,.01225167,.01829402,.01955606 +.0013845,.0014315,.001347,.0014305,.0014846,.0013967,.0179868,.0206534,.0198771,.0115349,.0246337,.0229099,.0093956,.0196794,.0179253,.0063661,.0067022,1.82e-08,1.88e-08,1.77e-08,2.67e-08,2.76e-08,2.60e-08,.017993,.0206546,.0198753,.0000395,.0000414,.02500241,.03094387,.03094928,.01209588,.01823582,.01955612 +.0011646,.0012008,.0011281,.0012082,.0012511,.0011756,.0179957,.0206549,.0198747,.0038793,.0160966,.018469,.0039349,.0162255,.0185986,.0059448,.0062251,1.53e-08,1.58e-08,1.48e-08,2.24e-08,2.33e-08,2.19e-08,.017993,.0206546,.0198753,.0000364,.0000382,.02552945,.03148638,.03146069,.0119706,.01818504,.01954545 +.0009746,.0010062,.0009458,.0010163,.0010534,.0009902,.017992,.0206545,.0198754,.0160767,.0188134,.025874,.0143691,.014859,.0218955,.0054623,.0057248,1.28e-08,1.32e-08,1.24e-08,1.89e-08,1.96e-08,1.84e-08,.017993,.0206546,.0198753,.0000336,.0000353,.02596239,.03196261,.03192055,.0118304,.01813191,.01953856 +.0008174,.0008434,.0007926,.0008563,.0008873,.0008339,.0179934,.0206546,.0198752,-.0035794,.0178074,.0205743,-.0040448,.0167296,.01949,.0050485,.0052949,1.07e-08,1.11e-08,1.04e-08,1.59e-08,1.65e-08,1.55e-08,.017993,.0206546,.0198753,.000031,.0000325,.02635096,.03240093,.03234732,.01169658,.01807946,.01953042 +.0006849,.0007069,.0006644,.000721,.0007472,.0007023,.0179929,.0206546,.0198753,.0124855,.0231741,.0234209,.0103833,.0183059,.0185229,.0046559,.0048813,9.00e-09,9.29e-09,8.73e-09,1.34e-08,1.39e-08,1.31e-08,.017993,.0206546,.0198753,.0000286,.00003,.02670838,.032816,.03275489,.01156026,.01802684,.01952266 +.0005741,.0005925,.0005568,.0006073,.0006293,.0005915,.0179931,.0206546,.0198753,.0180613,.0164314,.0240679,.0168902,.0137195,.0213394,.0043002,.0045082,7.54e-09,7.78e-09,7.32e-09,1.13e-08,1.17e-08,1.10e-08,.017993,.0206546,.0198753,.0000264,.0000277,.02704873,.03321726,.03315077,.01142485,.01797425,.01951479 +.0004812,.0004966,.0004667,.0005114,.00053,.0004981,.017993,.0206546,.0198753,.0087128,.0137087,.020188,.0086932,.0136633,.0201423,.0039671,.0041595,6.32e-09,6.52e-09,6.13e-09,9.51e-09,9.86e-09,9.26e-09,.017993,.0206546,.0198753,.0000244,.0000256,.02737831,.03361022,.03353969,.01128913,.01792166,.01950695 +.0004033,.0004162,.0003912,.0004307,.0004463,.0004195,.017993,.0206546,.0198753,-.0157479,.0118112,.0128117,-.0139929,.0158755,.0169009,.0036624,.0038398,5.30e-09,5.47e-09,5.14e-09,8.01e-09,8.30e-09,7.80e-09,.017993,.0206546,.0198753,.0000225,.0000236,.0277016,.0339982,.03392442,.01115351,.01786907,.0194991 +.000338,.0003489,.0003279,.0003627,.0003759,.0003533,.017993,.0206546,.0198753,-.0025344,.0154519,.018825,-.0025207,.0154837,.018857,.0033799,.0035436,4.44e-09,4.58e-09,4.31e-09,6.75e-09,6.99e-09,6.57e-09,.017993,.0206546,.0198753,.0000208,.0000218,.02802107,.03438319,.03430664,.01101786,.01781647,.01949126 diff --git a/statsmodels/tsa/statespace/tests/results/results_varmax.py b/statsmodels/tsa/statespace/tests/results/results_varmax.py new file mode 100644 index 0000000..c40e38b --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_varmax.py @@ -0,0 +1,234 @@ +""" +Results for VARMAX tests + +Results from Stata using script `test_varmax_stata.do`. +See also Stata time series documentation, in particular `dfactor`. + +Data from: + +http://www.jmulti.de/download/datasets/e1.dat + +Author: Chad Fulton +License: Simplified-BSD +""" + +# See http://www.jmulti.de/download/datasets/e1.dat +# 1960:Q1 - 1982Q4 +lutkepohl_data = [ + [180, 451, 415], [179, 465, 421], [185, 485, 434], [192, 493, 448], + [211, 509, 459], [202, 520, 458], [207, 521, 479], [214, 540, 487], + [231, 548, 497], [229, 558, 510], [234, 574, 516], [237, 583, 525], + [206, 591, 529], [250, 599, 538], [259, 610, 546], [263, 627, 555], + [264, 642, 574], [280, 653, 574], [282, 660, 586], [292, 694, 602], + [286, 709, 617], [302, 734, 639], [304, 751, 653], [307, 763, 668], + [317, 766, 679], [314, 779, 686], [306, 808, 697], [304, 785, 688], + [292, 794, 704], [275, 799, 699], [273, 799, 709], [301, 812, 715], + [280, 837, 724], [289, 853, 746], [303, 876, 758], [322, 897, 779], + [315, 922, 798], [339, 949, 816], [364, 979, 837], [371, 988, 858], + [375, 1025, 881], [432, 1063, 905], [453, 1104, 934], [460, 1131, 968], + [475, 1137, 983], [496, 1178, 1013], [494, 1211, 1034], [498, 1256, 1064], + [526, 1290, 1101], [519, 1314, 1102], [516, 1346, 1145], [531, 1385, 1173], + [573, 1416, 1216], [551, 1436, 1229], [538, 1462, 1242], [532, 1493, 1267], + [558, 1516, 1295], [524, 1557, 1317], [525, 1613, 1355], [519, 1642, 1371], + [526, 1690, 1402], [510, 1759, 1452], [519, 1756, 1485], [538, 1780, 1516], + [549, 1807, 1549], [570, 1831, 1567], [559, 1873, 1588], [584, 1897, 1631], + [611, 1910, 1650], [597, 1943, 1685], [603, 1976, 1722], [619, 2018, 1752], + [635, 2040, 1774], [658, 2070, 1807], [675, 2121, 1831], [700, 2132, 1842], + [692, 2199, 1890], [759, 2253, 1958], [782, 2276, 1948], [816, 2318, 1994], + [844, 2369, 2061], [830, 2423, 2056], [853, 2457, 2102], [852, 2470, 2121], + [833, 2521, 2145], [860, 2545, 2164], [870, 2580, 2206], [830, 2620, 2225], + [801, 2639, 2235], [824, 2618, 2237], [831, 2628, 2250], [830, 2651, 2271], +] + +lutkepohl_var1 = { + 'params': [ + -0.25034303, 0.28759168, 0.81626475, # Phi, row 1 + 0.023383, 0.19048278, 0.66502259, # Phi, row 2 + -0.01492992, 0.53796097, 0.28114733, # Phi, row 3 + # .00199294, # Covariance, lower triangle + # .00006096, .00012986, + # .00018523, .00011695, .00016188, + # Note: the following are the Cholesky of the covariance + # matrix defined just above + 0.04464236, # Cholesky, lower triangle + 0.00136552, 0.01354125, + 0.0029089, 0.00834324, 0.00915471 + ], + 'var_oim': [ + .01319669, .19413864, .2386643, + .0012437, .01829378, .02234399, + .00107749, .01584584, .01938099, + 1.061e-07, + 4.981e-09, 4.549e-09, + 9.211e-10, 5.825e-10, 7.016e-10], + 'loglike': 587.8481018831948, + 'aic': -1145.696, + 'bic': -1110.934, +} + +lutkepohl_var1_diag = { + 'params': [ + -0.24817904, 0.29283012, 0.80794938, # Phi, row 1 + 0.02282985, 0.19672157, 0.66329776, # Phi, row 2 + -0.01522531, 0.53500874, 0.28859213, # Phi, row 3 + 0.00199106, 0.00018529, 0.00016179 # Variances, diagonal + ], + 'var_oim': [ + .01314245, .1902972, .23400828, + .00124336, .01840132, .02229946, + .00107322, .01558391, .01909303, + 1.057e-07, 9.233e-10, 7.011e-10 + ], + 'loglike': 562.8168476509002, + 'aic': -1101.634, + 'bic': -1073.824 +} + +lutkepohl_var1_diag_meas = { + 'params': [ + -0.24817904, 0.29283012, 0.80794938, # Phi, row 1 + 0.02282985, 0.19672157, 0.66329776, # Phi, row 2 + -0.01522531, 0.53500874, 0.28859213, # Phi, row 3 + 0.00199106, 0.00018529, 0.00016179, # Variances, diagonal + 0, 0, 0 # Measurement error variances + ], + 'var_oim': [ + .01314245, .1902972, .23400828, + .00124336, .01840132, .02229946, + .00107322, .01558391, .01909303, + 1.057e-07, 9.233e-10, 7.011e-10, + None, None, None + ], + 'loglike': 562.8168476509002, + 'aic': None, + 'bic': None +} + +lutkepohl_var1_obs_intercept = { + 'params': [ + -.24762, .25961003, .75992623, # Phi, row 1 + .03186854, -.07271862, .23697765, # Phi, row 2 + -.0053055, .2362571, -.19438311, # Phi, row 3 + .00199116, .00013515, .00009937 # Variances, diagonal + ], + 'obs_intercept': [.01799302, .02065458, .01987525], # Intercepts + 'var_oim': [ + .01317874, .2311403, .33481866, + .00090084, .0157839, .0229119, + .00065737, .01149729, .01661236, + # .00001802, 1.818e-06, 1.086e-06, # Intercept parameters + 1.057e-07, 4.869e-10, 2.630e-10], + 'loglike': 593.5252693885262, + 'aic': -1101.634, + 'bic': -1073.824 +} + +lutkepohl_var1_exog = { + 'params': [ + -.25549409, .31149462, .92674046, # Phi, row 1 + .02935715, .13699757, .5059042, # Phi, row 2 + -.00540021, .4598014, .06065565, # Phi, row 3 + -.00007533, .00012771, .00018224, # exog + # .00200617, # Covariance, lower triangle + # .00007053, .00017216, + # .00013934, .00010021, .00013833 + # Note: the following are the Cholesky of the covariance + # matrix defined just above + .04479029, # Cholesky, lower triangle + .00157467, .01302614, + .00311094, .00731692, .00866687 + ], + 'var_oim': [ + .01350243, .20429977, .29684366, # Phi, row 1 + .00115871, .01753203, .02547371, # Phi, row 2 + .000931, .01408662, .02046759, # Phi, row 3 + 3.720e-08, 3.192e-09, 2.565e-09 # exog + ], + 'loglike': 587.4157014188437, + 'aic': None, + 'bic': None +} + +lutkepohl_var1_exog2 = { + 'params': [ + -.2552236, .21722691, .81525457, # Phi, row 1 + .02998355, -.08130972, .24772266, # Phi, row 2 + -.00476998, .24016112, -.19910237, # Phi, row 3 + .00811096, -.00015244, # exog, y1 + .01878355, -.00005086, # exog, y2 + .01889825, 2.577e-06, # exog, y3 + # .00199918, # Covariance, lower triangle + # .00005435, .00013469, + # .00012306, .00006251, .00010039 + # Note: the following are the Cholesky of the covariance + # matrix defined just above + .04471219, # Cholesky, lower triangle + .00121555, .01102644, + .00275227, .00536569, .00800152 + ], + 'var_oim': None, + # 'loglike': 600.9801664685759, # From Stata + 'loglike': 600.65449034396283, # From VARMAX (regression test) + 'aic': None, + 'bic': None +} + +lutkepohl_var2 = { + 'params': [ + -.25244981, .62528114, # Phi_1, row 1 + -.13011679, .58173748, # Phi_1, row 2 + .05369178, .35716349, # Phi_2, row 1 + .03861472, .43812606, # Phi_2, row 2 + # .00197786, # Covariance, lower triangle + # .00008091, .00018269 + 0.04447314, # Covariance cholesky, lower triangle + 0.0018193, 0.01339329 + ], + 'var_oim': [ + .01315844, .11805816, # Phi_1, row 1 + .01321036, .11300702, # Phi_1, row 2 + .00122666, .01064478, # Phi_2, row 1 + .0012571, .0106738, # Phi_2, row 2 + 1.048e-07, # Covariance, lower triangle + 4.994e-09, 8.940e-10 + ], + 'loglike': 343.3149718445623, + 'aic': -664.6299, + 'bic': -639.1376 +} + +fred_varma11 = { + 'params': [ + .80580312, 0, # Phi_1, row 1 + .17348681, -.48093755, # Phi_1, row 2 + -.51890703, 0, # Theta_1, row 1 + 0, 0, # Theta_1, row 2 + .0000582, .00003815, # Variances + ], + 'var_oim': [ + .00272999, 0, # Phi_1, row 1 + .00164152, .00248576, # Phi_1, row 2 + .0049259, 0, # Theta_1, row 1 + 0, 0, # Theta_1, row 2 + 1.529e-11, 6.572e-12, # Variances + ], + 'loglike': 3156.056423235071, + 'aic': -6300.113, + 'bic': -6275.551 +} + +fred_vma1 = { + 'params': [ + .24803941, 0, # Theta_1, row 1 + 0, 0, # Theta_1, row 2 + .00006514, .00004621, # Variances + ], + 'var_oim': [ + .00154773, 0, # Theta_1, row 1 + 0, 0, # Theta_1, row 2 + 1.916e-11, 9.639e-12, # Variances + ], + 'loglike': 3088.909619417645, + 'aic': -6171.819, + 'bic': -6159.539 +} diff --git a/statsmodels/tsa/statespace/tests/results/results_varmax_stata.csv b/statsmodels/tsa/statespace/tests/results/results_varmax_stata.csv new file mode 100644 index 0000000..8594465 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_varmax_stata.csv @@ -0,0 +1,450 @@ +predict_varma11_1,predict_varma11_2,predict_vma1_1,predict_vma1_2,dyn_predict_varma11_1,dyn_predict_varma11_2,dyn_predict_vma1_1,dyn_predict_vma1_2 +,,,,,,, +0,0,0,0,0,0,0,0 +.001557,-.001747,.0008617,0,.001557,-.001747,.0008617,0 +.0022958,.0008494,.0009971,0,.0022958,.0008494,.0009971,0 +.0040293,.0004974,.0021633,0,.0040293,.0004974,.0021633,0 +.0017344,-.0002099,-.0008367,0,.0017344,-.0002099,-.0008367,0 +.0012469,-.0009761,.0005076,0,.0012469,-.0009761,.0005076,0 +.0002996,.0009761,-.000426,0,.0002996,.0009761,-.000426,0 +.0029211,.0004861,.0024964,0,.0029211,.0004861,.0024964,0 +.0028885,.0008301,.0005676,0,.0028885,.0008301,.0005676,0 +.0049022,.0008749,.0028016,0,.0049022,.0008749,.0028016,0 +.0052377,.001629,.0016341,0,.0052377,.001629,.0016341,0 +.00605,.0031981,.0024755,0,.00605,.0031981,.0024755,0 +.0041315,.002975,.0002437,0,.0041315,.002975,.0002437,0 +.0060785,-.0035364,.0033413,0,.0060785,-.0035364,.0033413,0 +.0025022,-.0003943,-.0013925,0,.0025022,-.0003943,-.0013925,0 +-.0000102,.0003861,-.0007859,0,-.0000102,.0003861,-.0007859,0 +.0009767,.001774,.0010439,0,.0009767,.001774,.0010439,0 +-.0004751,-.0005938,-.0011079,0,-.0004751,-.0005938,-.0011079,0 +.0004085,.0003961,.0008411,0,.0004085,.0003961,.0008411,0 +-.0017576,-7.87e-06,-.0019114,0,-.0017576,-7.87e-06,-.0019114,0 +.0007302,-.0001901,.0018939,0,.0007302,-.0001901,.0018939,0 +.0020118,.0021705,.000942,0,.0020118,.0021705,.000942,0 +.0020192,.0005898,.0006096,0,.0020192,.0005898,.0006096,0 +.000398,-.0003929,-.000713,0,.000398,-.0003929,-.000713,0 +-.0030649,-.0007922,-.0026514,0,-.0030649,-.0007922,-.0026514,0 +-.0035713,-8.87e-06,-.0010549,0,-.0035713,-8.87e-06,-.0010549,0 +-.0028487,-.000602,-.0005991,0,-.0028487,-.000602,-.0005991,0 +-.0034798,.0096247,-.0015819,0,-.0034798,.0096247,-.0015819,0 +-.0008032,-.0090369,.0012591,0,-.0008032,-.0090369,.0012591,0 +-.0007506,.000993,-.0006009,0,-.0007506,.000993,-.0006009,0 +-.0020643,.0001851,-.0012989,0,-.0020643,.0001851,-.0012989,0 +-.0041107,-.0030359,-.0023057,0,-.0041107,-.0030359,-.0023057,0 +-.0021331,.0023987,.0005719,0,-.0021331,.0023987,.0005719,0 +-.003836,-.0016503,-.0025013,0,-.003836,-.0016503,-.0025013,0 +-.0117522,.0001467,-.0078191,0,-.0117522,.0001467,-.0078191,0 +-.0202734,-.0061304,-.0103158,0,-.0202734,-.0061304,-.0103158,0 +-.016925,-.0026478,-.0029788,0,-.016925,-.0026478,-.0029788,0 +-.0180755,-.0019247,-.0072955,0,-.0180755,-.0019247,-.0072955,0 +-.0137415,-.0013998,-.0019617,0,-.0137415,-.0013998,-.0019617,0 +-.0083318,-.0031991,-.000552,0,-.0083318,-.0031991,-.000552,0 +-.0051271,-.000486,-.0005579,0,-.0051271,-.000486,-.0005579,0 +-.0002563,-.0010062,.0022169,0,-.0002563,-.0010062,.0022169,0 +.0038297,-.0000513,.0028761,0,.0038297,-.0000513,.0028761,0 +.0039483,-.0024623,.000982,0,.0039483,-.0024623,.000982,0 +.0063164,.0013707,.0034461,0,.0063164,.0013707,.0034461,0 +.0044306,-.0005097,.0001421,0,.0044306,-.0005097,.0001421,0 +.0026824,.0002318,.0002961,0,.0026824,.0002318,.0002961,0 +.0040607,-.0019887,.0022339,0,.0040607,-.0019887,.0022339,0 +.0055024,.0008582,.0023813,0,.0055024,.0008582,.0023813,0 +.0065812,.0010612,.0026307,0,.0065812,.0010612,.0026307,0 +.003415,.0023868,-.0006525,0,.003415,.0023868,-.0006525,0 +.0028805,.0079025,.0011201,0,.0028805,.0079025,.0011201,0 +.0022313,-.0079817,.000359,0,.0022313,-.0079817,.000359,0 +.0007898,.0009723,-.0004072,0,.0007898,.0009723,-.0004072,0 +.0018792,-.0003063,.0013714,0,.0018792,-.0003063,.0013714,0 +.0020723,.0018583,.0006084,0,.0020723,.0018583,.0006084,0 +.0010753,1.08e-19,-.0001509,0,.0010753,1.08e-19,-.0001509,0 +-.000173,.0019567,-.0005945,0,-.000173,.0019567,-.0005945,0 +.0028229,.0005605,.0026657,0,.0028229,.0005605,.0026657,0 +.0039894,.0039313,.0015214,0,.0039894,.0039313,.0015214,0 +.0006302,.0051942,-.0016222,0,.0006302,.0051942,-.0016222,0 +.0042695,-.0072834,.0038108,0,.0042695,-.0072834,.0038108,0 +.0057531,.0009443,.0021132,0,.0057531,.0009443,.0021132,0 +.0050871,.0000791,.001293,0,.0050871,.0000791,.001293,0 +.0040324,-.0003468,.0008834,0,.0040324,-.0003468,.0008834,0 +.0034784,.0008381,.0009792,0,.0034784,.0008381,.0009792,0 +.0014591,.0009798,-.0005419,0,.0014591,.0009798,-.0005419,0 +.0014485,.000418,.0007321,0,.0014485,.000418,.0007321,0 +.0004062,-.0002089,-.0004803,0,.0004062,-.0002089,-.0004803,0 +.0002108,-.002375,.0001191,0,.0002108,-.002375,.0001191,0 +-.0005828,.0007675,-.000628,0,-.0005828,.0007675,-.000628,0 +.0021128,.0026495,.0022439,0,.0021128,.0026495,.0022439,0 +-.0041043,.0076902,-.0050529,0,-.0041043,.0076902,-.0050529,0 +-.0021298,-.0048458,.0012533,0,-.0021298,-.0048458,.0012533,0 +.0027179,-.0048665,.0029944,0,.0027179,-.0048665,.0029944,0 +.0055236,.0036763,.0028135,0,.0055236,.0036763,.0028135,0 +.0028662,1.08e-19,-.0006978,0,.0028662,1.08e-19,-.0006978,0 +.0031839,-.0013491,.0016399,0,.0031839,-.0013491,.0016399,0 +.0002957,-.0008203,-.0015795,0,.0002957,-.0008203,-.0015795,0 +.0008325,.0015967,.0009789,0,.0008325,.0015967,.0009789,0 +.0011094,.0004097,.0003429,0,.0011094,.0004097,.0003429,0 +.0019258,.0008164,.0010822,0,.0019258,.0008164,.0010822,0 +.0030126,.0000314,.0014722,0,.0030126,.0000314,.0014722,0 +.0028977,.001993,.0007885,0,.0028977,.001993,.0007885,0 +-.0018441,-.0008354,-.0030899,0,-.0018441,-.0008354,-.0030899,0 +-.0002842,-.0007822,.001348,0,-.0002842,-.0007822,.001348,0 +.0001883,-.000983,-.0000441,0,.0001883,-.000983,-.0000441,0 +-.0049803,.0125808,-.0043793,0,-.0049803,.0125808,-.0043793,0 +.0001351,-.0092452,.0034373,0,.0001351,-.0092452,.0034373,0 +-.0002684,-.0002047,-.0011453,0,-.0002684,-.0002047,-.0011453,0 +-.0008175,-.0004101,-.0003023,0,-.0008175,-.0004101,-.0003023,0 +-.0052173,-.0017006,-.004069,0,-.0052173,-.0017006,-.004069,0 +-.0027073,0,.0010093,0,-.0027073,0,.0010093,0 +-.0010598,-.0009892,.000048,0,-.0010598,-.0009892,.000048,0 +-.0022793,.0001521,-.001507,0,-.0022793,.0001521,-.001507,0 +-.000836,.0002097,.0006735,0,-.000836,.0002097,.0006735,0 +.0002583,.0016194,.0004313,0,.0002583,.0016194,.0004313,0 +-.0009048,-.001829,-.0010051,0,-.0009048,-.001829,-.0010051,0 +-.0032583,.0007183,-.0021618,0,-.0032583,.0007183,-.0021618,0 +-.0087837,-.0030823,-.0055961,0,-.0087837,-.0030823,-.0055961,0 +-.0144204,.0001164,-.0071386,0,-.0144204,.0001164,-.0071386,0 +-.0127334,-.0019497,-.0027687,0,-.0127334,-.0019497,-.0027687,0 +-.0104175,-.0010755,-.0026073,0,-.0104175,-.0010755,-.0026073,0 +-.0042574,-.0042007,.0016395,0,-.0042574,-.0042007,.0016395,0 +.0015858,.0010788,.0028743,0,.0015858,.0010788,.0028743,0 +.0056825,.0005157,.0034885,0,.0056825,.0005157,.0034885,0 +.0073625,.0014622,.0029508,0,.0073625,.0014622,.0029508,0 +.0038205,-.0024047,-.0007319,0,.0038205,-.0024047,-.0007319,0 +.0001516,-.0011071,-.0014014,0,.0001516,-.0011071,-.0014014,0 +-.0025043,.0020496,-.0018856,0,-.0025043,.0020496,-.0018856,0 +-.0009291,-.0021867,.000788,0,-.0009291,-.0021867,.000788,0 +-.0001122,-.0009771,.0001244,0,-.0001122,-.0009771,.0001244,0 +.0010488,-.0005284,.0009262,0,.0010488,-.0005284,.0009262,0 +-.0016741,.0010573,-.0021476,0,-.0016741,.0010573,-.0021476,0 +-.0008687,.0012038,.0005327,0,-.0008687,.0012038,.0005327,0 +-.001194,-.0016533,-.0007747,0,-.001194,-.0016533,-.0007747,0 +-.002861,.0034782,-.0017457,0,-.002861,.0034782,-.0017457,0 +-.0048798,-.0020531,-.0025024,0,-.0048798,-.0020531,-.0025024,0 +-.0071226,-.0003407,-.003348,0,-.0071226,-.0003407,-.003348,0 +-.009146,-.0008481,-.0038814,0,-.009146,-.0008481,-.0038814,0 +-.012312,.0193194,-.0055786,0,-.012312,.0193194,-.0055786,0 +.0003902,-.024678,.0072445,0,.0003902,-.024678,.0072445,0 +-.0025695,.0044349,-.0041935,0,-.0025695,.0044349,-.0041935,0 +-.0037308,-.0014498,-.0010326,0,-.0037308,-.0014498,-.0010326,0 +-.0031422,-.0007294,-.0007868,0,-.0031422,-.0007294,-.0007868,0 +-.0028419,-.001961,-.0008522,0,-.0028419,-.001961,-.0008522,0 +-.0022851,-.0004901,-.0004893,0,-.0022851,-.0004901,-.0004893,0 +-.0040405,.0007338,-.0023467,0,-.0040405,.0007338,-.0023467,0 +-.0037407,-.0009942,-.0008394,0,-.0037407,-.0009942,-.0008394,0 +-.0056752,-.0010232,-.0030201,0,-.0056752,-.0010232,-.0030201,0 +-.0050405,-.002502,-.0010627,0,-.0050405,-.002502,-.0010627,0 +-.0043032,-.0010205,-.0011955,0,-.0043032,-.0010205,-.0011955,0 +.0044588,.0003612,.006082,0,.0044588,.0003612,.006082,0 +.0019,-.0002502,-.0018662,0,.0019,-.0002502,-.0018662,0 +.0038693,-.0019137,.0029558,0,.0038693,-.0019137,.0029558,0 +.005268,.0007585,.0020855,0,.005268,.0007585,.0020855,0 +.0067575,-.0011874,.0029616,0,.0067575,-.0011874,.0029616,0 +.0054975,3.09e-06,.0009867,0,.0054975,3.09e-06,.0009867,0 +.0071847,.0002269,.0035006,0,.0071847,.0002269,.0035006,0 +.0060639,.0014124,.001151,0,.0060639,.0014124,.001151,0 +.0085236,-.0003154,.0043633,0,.0085236,-.0003154,.0043633,0 +.0074509,.001831,.0015356,0,.0074509,.001831,.0015356,0 +.0046184,.0004547,.0002693,0,.0046184,.0004547,.0002693,0 +.0031466,.0016396,.0005817,0,.0031466,.0016396,.0005817,0 +.0064609,.0017336,.0040299,0,.0064609,.0017336,.0040299,0 +.0059191,-.0043347,.0012193,0,.0059191,-.0043347,.0012193,0 +.0041644,.0053645,.0006425,0,.0041644,.0053645,.0006425,0 +.0032497,-.0005218,.000782,0,.0032497,-.0005218,.000782,0 +.0016863,.0011802,-.000194,0,.0016863,.0011802,-.000194,0 +.0015986,.0016207,.0006737,0,.0015986,.0016207,.0006737,0 +.0015513,.0004364,.0004569,0,.0015513,.0004364,.0004569,0 +.0004443,.000968,-.0004251,0,.0004443,.000968,-.0004251,0 +-.0012166,-.0008751,-.0011457,0,-.0012166,-.0008751,-.0011457,0 +-.0002688,.0002192,.0005976,0,-.0002688,.0002192,.0005976,0 +-.0001395,.001189,-.0001482,0,-.0001395,.001189,-.0001482,0 +-.0000724,-.001189,.0000368,0,-.0000724,-.001189,.0000368,0 +-.0018545,.0012822,-.00158,0,-.0018545,.0012822,-.00158,0 +-.0027909,.001287,-.001189,0,-.0027909,.001287,-.001189,0 +-.0003497,-.0029204,.0012447,0,-.0003497,-.0029204,.0012447,0 +-.0020147,-.0022975,-.0018936,0,-.0020147,-.0022975,-.0018936,0 +-.0014135,.0009664,.0001515,0,-.0014135,.0009664,.0001515,0 +-.001102,-.0014118,-.0003562,0,-.001102,-.0014118,-.0003562,0 +-.002793,-.0001542,-.001832,0,-.002793,-.0001542,-.001832,0 +-.000707,-.0019261,.0010962,0,-.000707,-.0019261,.0010962,0 +-.0003669,0,-.0002719,0,-.0003669,0,-.0002719,0 +-.0013045,-.0018569,-.0008958,0,-.0013045,-.0018569,-.0008958,0 +.0004372,.0006737,.0011855,0,.0004372,.0006737,.0011855,0 +.0013367,-.0016864,.0006655,0,.0013367,-.0016864,.0006655,0 +.0032667,.0039135,.0020595,0,.0032667,.0039135,.0020595,0 +-.0001404,-.00111,-.0020978,0,-.0001404,-.00111,-.0020978,0 +-.0011799,-.0006694,-.0004367,0,-.0011799,-.0006694,-.0004367,0 +-.0002428,.0025926,.0004278,0,-.0002428,.0025926,.0004278,0 +-.000126,-.0023692,-.0001061,0,-.000126,-.0023692,-.0001061,0 +-.0011752,-.0006711,-.0009332,0,-.0011752,-.0006711,-.0009332,0 +.0005,.0018542,.001191,0,.0005,.0018542,.001191,0 +.0006285,-.00096,.0000236,0,.0006285,-.00096,.0000236,0 +.0006946,.0002228,.0003128,0,.0006946,.0002228,.0003128,0 +.0010961,.001628,.0005584,0,.0010961,.001628,.0005584,0 +.0013025,-.0007394,.0004959,0,.0013025,-.0007394,.0004959,0 +.0028659,.0001441,.0017704,0,.0028659,.0001441,.0017704,0 +.000029,-.0008818,-.0016998,0,.000029,-.0008818,-.0016998,0 +.0032856,-.0027144,.0032492,0,.0032856,-.0027144,.0032492,0 +.0013434,.0021217,-.0011185,0,.0013434,.0021217,-.0011185,0 +.0014197,.0027888,.0009022,0,.0014197,.0027888,.0009022,0 +.0021766,-.0014811,.0010211,0,.0021766,-.0014811,.0010211,0 +.0014883,.0013914,.000057,0,.0014883,.0013914,.000057,0 +.0022032,-.0003092,.001223,0,.0022032,-.0003092,.001223,0 +.001856,.0016055,.0003129,0,.001856,.0016055,.0003129,0 +.002029,.0018219,.0008439,0,.002029,.0018219,.0008439,0 +.0056264,-.0007577,.0037448,0,.0056264,-.0007577,.0037448,0 +.0039647,.0018036,-.0000253,0,.0039647,.0018036,-.0000253,0 +.003445,.0008391,.001206,0,.003445,.0008391,.001206,0 +.0007475,-.0018005,-.0011984,0,.0007475,-.0018005,-.0011984,0 +.000735,.0002099,.0005974,0,.000735,.0002099,.0005974,0 +.0014203,.0029742,.00075,0,.0014203,.0029742,.00075,0 +.0031464,.0002826,.0018971,0,.0031464,.0002826,.0018971,0 +.0009464,-.000415,-.001064,0,.0009464,-.000415,-.001064,0 +.0008345,-.0009639,.0005608,0,.0008345,-.0009639,.0005608,0 +.000776,.0002074,.0001574,0,.000776,.0002074,.0001574,0 +.0004027,.002346,-.000039,0,.0004027,.002346,-.000039,0 +.0012354,-.0005537,.0008971,0,.0012354,-.0005537,.0008971,0 +.002004,-.0003474,.0009558,0,.002004,-.0003474,.0009558,0 +.0013796,.0002054,.0000566,0,.0013796,.0002054,.0000566,0 +.0017327,.0029609,.000865,0,.0017327,.0029609,.000865,0 +.0025857,-.0013261,.0012436,0,.0025857,-.0013261,.0012436,0 +-.0020415,-.0032146,-.0032335,0,-.0020415,-.0032146,-.0032335,0 +-.0020822,.0005503,-.0000822,0,-.0020822,.0005503,-.0000822,0 +-.0010804,1.08e-19,.0000204,0,-.0010804,1.08e-19,.0000204,0 +-.0036511,-.0006972,-.002677,0,-.0036511,-.0006972,-.002677,0 +-.0018946,.0011745,.000664,0,-.0018946,.0011745,.000664,0 +-.0051562,-.0025235,-.0037726,0,-.0051562,-.0025235,-.0037726,0 +-.0002339,.0014765,.0030467,0,-.0002339,.0014765,.0030467,0 +-.0015141,.0003352,-.0019598,0,-.0015141,.0003352,-.0019598,0 +-.0021852,-.0008463,-.0007238,0,-.0021852,-.0008463,-.0007238,0 +-.0014848,.000968,-.0001239,0,-.0014848,.000968,-.0001239,0 +-.0004196,.0025814,.0003341,0,-.0004196,.0025814,.0003341,0 +-.0016241,-.0008504,-.0012988,0,-.0016241,-.0008504,-.0012988,0 +.0026603,.0009323,.0033507,0,.0026603,.0009323,.0033507,0 +.002076,-.0007625,-.0002298,0,.002076,-.0007625,-.0002298,0 +-.0003155,.0003409,-.0011471,0,-.0003155,.0003409,-.0011471,0 +-.0005129,-.0002112,-.0000174,0,-.0005129,-.0002112,-.0000174,0 +-.0002662,-.0011831,4.32e-06,0,-.0002662,-.0011831,4.32e-06,0 +-.0011884,.000548,-.0009091,0,-.0011884,.000548,-.0009091,0 +-.0006167,.001186,.0002255,0,-.0006167,.001186,.0002255,0 +-.0006709,-.0002122,-.0003593,0,-.0006709,-.0002122,-.0003593,0 +-.0031713,-.0005182,-.0023516,0,-.0031713,-.0005182,-.0023516,0 +-.0055733,.0000117,-.0028124,0,-.0055733,.0000117,-.0028124,0 +-.0057827,-.0029429,-.0018016,0,-.0057827,-.0029429,-.0018016,0 +-.0059208,-.0005709,-.0020777,0,-.0059208,-.0005709,-.0020777,0 +-.0052821,-.0001384,-.0013951,0,-.0052821,-.0001384,-.0013951,0 +-.0049678,-.0001458,-.0015792,0,-.0049678,-.0001458,-.0015792,0 +-.0022055,-.0009757,.0007136,0,-.0022055,-.0009757,.0007136,0 +.0007101,.0011214,.0014264,0,.0007101,.0011214,.0014264,0 +.0029449,-.0032157,.0018736,0,.0029449,-.0032157,.0018736,0 +.0018943,.0002214,-.0001482,0,.0018943,.0002214,-.0001482,0 +.0013487,-.0009649,.0003529,0,.0013487,-.0009649,.0003529,0 +.0032468,.0015402,.0021145,0,.0032468,.0015402,.0021145,0 +.000596,-.0006584,-.0014658,0,.000596,-.0006584,-.0014658,0 +-.0007837,-.0006609,-.0005813,0,-.0007837,-.0006609,-.0005813,0 +-.0011376,-.0016251,-.0004878,0,-.0011376,-.0016251,-.0004878,0 +-.0024259,.0000732,-.001466,0,-.0024259,.0000732,-.001466,0 +.0009425,.000148,.0022667,0,.0009425,.000148,.0022667,0 +.0026735,.001321,.0013264,0,.0026735,.001321,.0013264,0 +.0021118,-.0030939,.0002974,0,.0021118,-.0030939,.0002974,0 +.0021791,.0018295,.0008628,0,.0021791,.0018295,.0008628,0 +.001491,.0013951,.0000974,0,.001491,.0013951,.0000974,0 +.0025679,.001085,.0015271,0,.0025679,.001085,.0015271,0 +-.0008219,-.0013028,-.0022414,0,-.0008219,-.0013028,-.0022414,0 +-.0007871,-.0002181,.0002442,0,-.0007871,-.0002181,.0002442,0 +.0006721,.0006534,.0008737,0,.0006721,.0006534,.0008737,0 +.0007081,-.0009601,.0000939,0,.0007081,-.0009601,.0000939,0 +-.0007118,-.0006526,-.0009564,0,-.0007118,-.0006526,-.0009564,0 +.0017851,-.0010433,.0020998,0,.0017851,-.0010433,.0020998,0 +.0009263,-2.17e-19,-.0005208,0,.0009263,-2.17e-19,-.0005208,0 +-.0005945,.0028732,-.0008004,0,-.0005945,.0028732,-.0008004,0 +.0011242,-.007315,.0014372,0,.0011242,-.007315,.0014372,0 +-.0001321,.0042254,-.000975,0,-.0001321,.0042254,-.000975,0 +-.0007858,.0019123,-.0003783,0,-.0007858,.0019123,-.0003783,0 +-.0000489,-.002129,.0004041,0,-.0000489,-.002129,.0004041,0 +-.0003842,-.0013857,-.0004105,0,-.0003842,-.0013857,-.0004105,0 +.0008758,-.0005157,.0010314,0,.0008758,-.0005157,.0010314,0 +.0025928,.0012931,.0015929,0,.0025928,.0012931,.0015929,0 +.0017003,.0002146,-.0000883,0,.0017003,.0002146,-.0000883,0 +.0019442,-.0005209,.00094,0,.0019442,-.0005209,.00094,0 +.0010089,-1.08e-19,-.0002332,0,.0010089,-1.08e-19,-.0002332,0 +.00017,.00563,-.0002478,0,.00017,.00563,-.0002478,0 +.0032545,-.0074016,.0027989,0,.0032545,-.0074016,.0027989,0 +.0034328,.0010546,.0008136,0,.0034328,.0010546,.0008136,0 +.0028227,-.0005222,.0006985,0,.0028227,-.0005222,.0006985,0 +.0014647,-1.08e-19,-.0001733,0,.0014647,-1.08e-19,-.0001733,0 +.0011063,.0002094,.0003424,0,.0011063,.0002094,.0003424,0 +.0016104,.0017786,.0008111,0,.0016104,.0017786,.0008111,0 +.0004906,.0009461,-.0004995,0,.0004906,.0009461,-.0004995,0 +.0023186,-.0010585,.0019084,0,.0023186,-.0010585,.0019084,0 +.0022296,.0006207,.0004141,0,.0022296,.0006207,.0004141,0 +.0035378,.0014397,.0019557,0,.0035378,.0014397,.0019557,0 +.0018358,0,-.0004851,0,.0018358,0,-.0004851,0 +-.000746,.0001248,-.0013482,0,-.000746,.0001248,-.0013482,0 +-.0010694,.0018996,-.0002555,0,-.0010694,.0018996,-.0002555,0 +-.0022677,.0024535,-.0014175,0,-.0022677,.0024535,-.0014175,0 +-.0022094,-.0006244,-.0005412,0,-.0022094,-.0006244,-.0005412,0 +-.0011465,5.42e-20,.0001342,0,-.0011465,5.42e-20,.0001342,0 +-.0037153,-.0007181,-.002731,0,-.0037153,-.0007181,-.002731,0 +.000502,.0003006,.0027782,0,.000502,.0003006,.0027782,0 +.0012956,.0006259,.0002058,0,.0012956,.0006259,.0002058,0 +-.0014017,-.0012541,-.0018441,0,-.0014017,-.0012541,-.0018441,0 +-.00177,-.0017964,-.000444,0,-.00177,-.0017964,-.000444,0 +-.0005705,.0048911,.000411,0,-.0005705,.0048911,.000411,0 +-.0037948,.0122061,-.0031268,0,-.0037948,.0122061,-.0031268,0 +.0011817,-.0170972,.0034997,0,.0011817,-.0170972,.0034997,0 +-.0018345,.0008546,-.0029842,0,-.0018345,.0008546,-.0029842,0 +.0004493,-.0003214,.0019516,0,.0004493,-.0003214,.0019516,0 +.0002331,-.002329,-.0004841,0,.0002331,-.002329,-.0004841,0 +.0018629,-.0001069,.0016261,0,.0018629,-.0001069,.0016261,0 +.0002712,.0007397,-.0010046,0,.0002712,.0007397,-.0010046,0 +.0001407,-.0011603,.0002492,0,.0001407,-.0011603,.0002492,0 +.000421,-.0009471,.000239,0,.000421,-.0009471,.000239,0 +-.0015256,.0012631,-.0015671,0,-.0015256,.0012631,-.0015671,0 +-.0000928,-.0007377,.0009929,0,-.0000928,-.0007377,.0009929,0 +.0006491,-.0018906,.0003565,0,.0006491,-.0018906,.0003565,0 +-.0010593,.0026283,-.0012954,0,-.0010593,.0026283,-.0012954,0 +.001889,-.0008431,.0024297,0,.001889,-.0008431,.0024297,0 +.0027096,-.0012609,.0008924,0,.0027096,-.0012609,.0008924,0 +-.001018,-.0014658,-.0023171,0,-.001018,-.0014658,-.0023171,0 +.0001664,.001572,.0011753,0,.0001664,.001572,.0011753,0 +-.0002608,.0009448,-.0005916,0,-.0002608,.0009448,-.0005916,0 +-.0004829,-.0002102,-.0001537,0,-.0004829,-.0002102,-.0001537,0 +.0025181,.0016742,.0024318,0,.0025181,.0016742,.0024318,0 +.0016508,.0002081,-.0003056,0,.0016508,.0002081,-.0003056,0 +.0008566,-.0023067,.0000758,0,.0008566,-.0023067,.0000758,0 +.0018172,.0008301,.001168,0,.0018172,.0008301,.001168,0 +.0002574,-.0027102,-.0008824,0,.0002574,-.0027102,-.0008824,0 +.0001336,.0011465,.0002189,0,.0001336,.0011465,.0002189,0 +-.0019972,.0010515,-.0018409,0,-.0019972,.0010515,-.0018409,0 +-.003815,-.0005256,-.0019457,0,-.003815,-.0005256,-.0019457,0 +-.0023289,.0032697,.0001807,0,-.0023289,.0032697,.0001807,0 +-.0015581,-.0025348,-.0003471,0,-.0015581,-.0025348,-.0003471,0 +-.005038,-.0013973,-.0035706,0,-.005038,-.0013973,-.0035706,0 +-.0058278,-.0019432,-.0018927,0,-.0058278,-.0019432,-.0018927,0 +.0026642,.0034398,.0053874,0,.0026642,.0034398,.0053874,0 +-.0010923,-.0003334,-.0034759,0,-.0010923,-.0003334,-.0034759,0 +.0004964,-.0005201,.0017814,0,.0004964,-.0005201,.0017814,0 +-.0008056,-.0006429,-.0013611,0,-.0008056,-.0006429,-.0013611,0 +-.000418,-.0011603,.0003376,0,-.000418,-.0011603,.0003376,0 +-.0005722,.0021085,-.0003909,0,-.0005722,.0021085,-.0003909,0 +.0004132,-.0007337,.0007109,0,.0004132,-.0007337,.0007109,0 +-.0015642,.0000875,-.0017141,0,-.0015642,.0000875,-.0017141,0 +-.0008117,5.42e-20,.0004252,0,-.0008117,5.42e-20,.0004252,0 +.0010026,-.0003021,.0011255,0,.0010026,-.0003021,.0011255,0 +-.0019761,-.0003464,-.0024374,0,-.0019761,-.0003464,-.0024374,0 +-.0006674,-.0009466,.000914,0,-.0006674,-.0009466,.000914,0 +.0000112,-.0009441,.0000824,0,.0000112,-.0009441,.0000824,0 +-.0025061,-.001519,-.0021921,0,-.0025061,-.001519,-.0021921,0 +.0019251,.0031108,.0033325,0,.0019251,.0031108,.0033325,0 +.0017109,.0004305,-.0002111,0,.0017109,.0004305,-.0002111,0 +.0015979,.0004294,.0006663,0,.0015979,.0004294,.0006663,0 +.000119,-.0015897,-.0007792,0,.0012876,.0000707,0,0 +-.000294,-.0013726,-.0001143,0,.0010376,.0001894,0,0 +.0005585,.0027477,.0006431,0,.0008361,.0000889,0,0 +.0006446,-.0009457,.0001473,0,.0006737,.0001023,0,0 +-.0010875,.0014635,-.001266,0,.0005429,.0000677,0,0 +-.001278,-.0004316,-.000303,0,.0004375,.0000616,0,0 +-.001737,-.0029727,-.0008533,0,.0003525,.0000463,0,0 +-.0037847,.004086,-.0022812,0,.000284,.0000389,0,0 +-.0016019,.0002189,.0008788,0,.0002289,.0000306,0,0 +-.003375,-.0027098,-.0024172,0,.0001844,.000025,0,0 +-.0035822,-.0011071,-.0009833,0,.0001486,.00002,0,0 +-.0048127,.0064755,-.0023099,0,.0001198,.0000162,0,0 +-.0051072,-.0051363,-.0016834,0,.0000965,.000013,0,0 +-.005284,.0007765,-.0018595,0,.0000778,.0000105,0,0 +-.0042579,-.0009167,-.0008494,0,.0000627,8.44e-06,0,0 +-.0041157,-.0011527,-.0014374,0,.0000505,6.81e-06,0,0 +-.0052123,-.0006715,-.0023034,0,.0000407,5.48e-06,0,0 +-.0054241,-.0004525,-.0017798,0,.0000328,4.42e-06,0,0 +-.004773,-.0047511,-.0012517,0,.0000264,3.56e-06,0,0 +-.0052411,.0018953,-.0020795,0,.0000213,2.87e-06,0,0 +-.0043113,.0002324,-.0008603,0,.0000172,2.31e-06,0,0 +-.0046413,-.000256,-.0018652,0,.0000138,1.86e-06,0,0 +-.0036181,-.0007315,-.0005832,0,.0000111,1.50e-06,0,0 +-.0018775,-.0023927,.0001447,0,8.98e-06,1.21e-06,0,0 +-.0001672,.0016829,.0006618,0,7.23e-06,9.75e-07,0,0 +-.0000868,-.0011949,-.0001642,0,5.83e-06,7.86e-07,0,0 +.0019627,-.0011668,.0017765,0,4.70e-06,6.33e-07,0,0 +.0014183,.0002418,-.0000949,0,3.78e-06,5.10e-07,0,0 +.0027269,.0000179,.0017449,0,3.05e-06,4.11e-07,0,0 +.0045721,.000726,.0022967,0,2.46e-06,3.31e-07,0,0 +.0007983,.0026062,-.0019307,0,1.98e-06,2.67e-07,0,0 +.0015957,-.0004745,.0015003,0,1.60e-06,2.15e-07,0,0 +.0004347,-.0002378,-.0007122,0,1.29e-06,1.73e-07,0,0 +-.0009575,.0016655,-.0008462,0,1.04e-06,1.40e-07,0,0 +.0010795,-.0002387,.0015727,0,8.35e-07,1.13e-07,0,0 +-.0010162,-.0021422,-.001753,0,6.73e-07,9.07e-08,0,0 +.001049,.0033341,.0017977,0,5.42e-07,7.31e-08,0,0 +.0009371,.0014324,-.0001063,0,4.37e-07,5.89e-08,0,0 +.0012701,-.0019128,.0007041,0,3.52e-07,4.75e-08,0,0 +-.001699,.0033596,-.0022133,0,2.84e-07,3.82e-08,0,0 +-.0004873,-.0021602,.0008899,0,2.29e-07,3.08e-08,0,0 +.0013192,-.0002443,.0011384,0,1.84e-07,2.48e-08,0,0 +.0018579,.0043031,.0007321,0,1.48e-07,2.00e-08,0,0 +.0001824,-.0028714,-.0008575,0,1.20e-07,1.61e-08,0,0 +.0024335,-.0021615,.0022348,0,9.64e-08,1.30e-08,0,0 +.0012627,-.001186,-.0005543,0,7.76e-08,1.05e-08,0,0 +.0037443,-.0016727,.0028082,0,6.26e-08,8.44e-09,0,0 +.0015586,.0021251,-.0010288,0,5.04e-08,6.80e-09,0,0 +.0008088,-.0023575,.0002552,0,4.06e-08,5.48e-09,0,0 +.0019539,-.0002467,.0012631,0,3.27e-08,4.41e-09,0,0 +.0006311,.000943,-.0006442,0,2.64e-08,3.56e-09,0,0 +.0018556,.0021014,.0014809,0,2.13e-08,2.87e-09,0,0 +.0028616,-.0023752,.0012742,0,1.71e-08,2.31e-09,0,0 +-.0007951,.0033249,-.0022872,0,1.38e-08,1.86e-09,0,0 +.0018674,-.0009788,.0025385,0,1.11e-08,1.50e-09,0,0 +.0028553,.0023179,.0010011,0,8.96e-09,1.21e-09,0,0 +.0011054,-.0002275,-.0005736,0,7.22e-09,9.74e-10,0,0 +.0035699,.0041752,.0027328,0,5.82e-09,7.85e-10,0,0 +.0018524,.001186,-.0006778,0,4.69e-09,6.32e-10,0,0 +.0017055,-.000736,.0008116,0,3.78e-09,5.09e-10,0,0 +.0027371,-.0000631,.0014,0,3.04e-09,4.10e-10,0,0 +.0032606,.0022959,.0012438,0,2.45e-09,3.31e-10,0,0 +.0005892,.0017082,-.0012619,0,1.98e-09,2.67e-10,0,0 +.0003057,-.001189,.000313,0,1.59e-09,2.15e-10,0,0 +.0012614,.0018558,.0008758,0,1.28e-09,1.73e-10,0,0 +.0010212,.0002217,.0000998,0,1.03e-09,1.39e-10,0,0 +.0001633,-.0002217,-.0003417,0,8.33e-10,1.12e-10,0,0 +.0008175,-.0007458,.0007183,0,6.72e-10,9.06e-11,0,0 +-.0032587,-.0045962,-.0033623,0,5.41e-10,7.30e-11,0,0 +.0027229,-.0008629,.00465,0,4.36e-10,5.88e-11,0,0 +.0032322,.0022746,.0004195,0,3.51e-10,4.74e-11,0,0 +.0013143,.0009579,-.0004178,0,2.83e-10,3.82e-11,0,0 +.0024921,-.0012572,.0016686,0,2.28e-10,3.08e-11,0,0 +-.000154,-.0020467,-.001665,0,1.84e-10,2.48e-11,0,0 +-.0004428,-.0002195,.0000992,0,1.48e-10,2.00e-11,0,0 +.0008576,-.0005112,.0009155,0,1.19e-10,1.61e-11,0,0 +-.0002795,.0007306,-.0008534,0,9.62e-11,1.30e-11,0,0 +.000941,-.000512,.0011506,0,7.75e-11,1.05e-11,0,0 +.0004883,-.002329,-.0002854,0,6.25e-11,8.42e-12,0,0 +.0009751,.0027654,.0006948,0,5.03e-11,6.79e-12,0,0 +-.0002157,.0007323,-.0007963,0,4.06e-11,5.47e-12,0,0 +-.0022882,-.0024847,-.0016839,0,3.27e-11,4.41e-12,0,0 +-.0019164,.0018995,-.0002127,0,2.63e-11,3.55e-12,0,0 +.0019109,.0005853,.0025646,0,2.12e-11,2.86e-12,0,0 +-.001549,.0008098,-.0028326,0,1.71e-11,2.31e-12,0,0 +-.0008038,0,.0007026,0,1.38e-11,1.86e-12,0,0 +.0010374,-.0026353,.0010832,0,1.11e-11,1.50e-12,0,0 +.0012628,.0016068,.0003577,0,8.95e-12,1.21e-12,0,0 +.0006553,1.08e-19,-.0000887,0,7.21e-12,9.72e-13,0,0 +.0014233,-.0028427,.0009586,0,5.81e-12,7.83e-13,0,0 +.0025351,.0010863,.0013154,0,4.68e-12,6.31e-13,0,0 +-.000481,.0000768,-.0018794,0,3.77e-12,5.09e-13,0,0 +.0001106,-.0009453,.0007776,0,3.04e-12,4.10e-13,0,0 +-.0013861,.0014561,-.0014409,0,2.45e-12,3.30e-13,0,0 +-.0007193,-.0011659,.0003574,0,1.97e-12,2.66e-13,0,0 +-.0007352,.0021157,-.0004016,0,1.59e-12,2.14e-13,0,0 +-.000744,-.0002192,-.0002138,0,1.28e-12,1.73e-13,0,0 +-.0025706,-.001321,-.0018356,0,1.03e-12,1.39e-13,0,0 +-.0013339,-.0011687,.0004553,0,8.32e-13,1.12e-13,0,0 +-.0036309,.0005632,-.0026537,0,6.71e-13,9.04e-14,0,0 +-.0022536,-.0002234,.0003388,0,5.40e-13,7.29e-14,0,0 +-.0019098,-.0004477,-.0007241,0,4.35e-13,5.87e-14,0,0 +-.0017333,-.0004489,-.0004621,0,3.51e-13,4.73e-14,0,0 +-.0042637,-.0008599,-.002794,0,2.83e-13,3.81e-14,0,0 +-.0145044,-.0027063,-.0099341,0,2.28e-13,3.07e-14,0,0 +-.0055708,.0023716,.0041549,0,1.84e-13,2.48e-14,0,0 +-.0099944,-.0031037,-.0071722,0,1.48e-13,1.99e-14,0,0 +-.0120607,.0006404,-.0041645,0,1.19e-13,1.61e-14,0,0 +-.0097185,-.0024004,0,0,9.61e-14,1.30e-14,0,0 +-.0078312,-.0005316,0,0,7.74e-14,1.04e-14,0,0 +-.0063104,-.0011029,0,0,6.24e-14,8.41e-15,0,0 +-.005085,-.0005643,0,0,5.03e-14,6.78e-15,0,0 diff --git a/statsmodels/tsa/statespace/tests/results/results_wpi1_ar3_matlab_ssm.csv b/statsmodels/tsa/statespace/tests/results/results_wpi1_ar3_matlab_ssm.csv new file mode 100644 index 0000000..bcc9733 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_wpi1_ar3_matlab_ssm.csv @@ -0,0 +1,123 @@ +0,0,0,0.54519,0.1,0.043181,0.0064821,-0,0,0,-0.15849,0.063724 +0.078566,0.1,0.078566,0,-0.1,0.1,0.043181,-0,0,0,0.032039,0.035338 +-0.034324,-0.1,0.1,-0,8.2743e-18,-0.1,0.1,-0,0,0,0.083723,0 +0.016277,0,-0.1,-0,0.1,1.0158e-17,-0.1,0,0,0,-0.3269,0 +0.026904,0.1,1.3354e-18,-0,-0.3,0.1,1.0158e-17,-0,0,0,0.1486,0 +-0.1486,-0.3,0.1,-0,-2.7979e-17,-0.3,0.1,-0,0,0,0.10277,0 +-0.0027748,0,-0.3,-0,0.1,-1.9752e-18,-0.3,-0,0,0,0.1247,0 +-0.024703,0.1,1.6393e-18,-0,0.1,0.1,-1.7263e-18,-0,0,0,-0.16223,0 +0.062233,0.1,0.1,-0,-0.1,0.1,0.1,-0,0,0,0.11738,0 +-0.017377,-0.1,0.1,-0,0.1,-0.1,0.1,-0,0,0,-0.068985,0 +0.068985,0.1,-0.1,-0,1.8162e-19,0.1,-0.1,-0,0,0,-0.083723,0 +-0.016277,0,0.1,-0,-0.1,1.4918e-18,0.1,-0,0,0,-0.073096,0 +-0.026904,-0.1,-1.3354e-18,-0,-0.1,-0.1,6.3736e-19,-0,0,0,0.16223,0 +-0.062233,-0.1,-0.1,-0,0.1,-0.1,-0.1,-0,0,0,0.082623,0 +0.017377,0.1,-0.1,-0,0.1,0.1,-0.1,-0,0,0,-0.03643,0 +0.03643,0.1,0.1,-0,2.9357e-19,0.1,0.1,-0,0,0,-0.13533,0 +0.03533,0,0.1,-0,-0.1,1.4027e-18,0.1,-0,0,0,0.1269,0 +-0.026904,-0.1,-2.1585e-18,-0,0.1,-0.1,-5.5834e-18,-0,0,0,-0.043181,0 +0.043181,0.1,-0.1,-0,-4.6916e-19,0.1,-0.1,-0,0,0,0.21628,0 +-0.016277,0,0.1,-0,0.2,-3.7711e-18,0.1,-0,0,0,0.16878,0 +0.13122,0.2,3.4496e-18,-0,0.3,0.2,-1.1055e-18,-0,0,0,0.022826,0 +0.17717,0.3,0.2,-0,0.2,0.3,0.2,-0,0,0,0.0144,0 +0.1856,0.2,0.3,-0,0.2,0.2,0.3,-0,0,0,0.29812,0 +0.20188,0.2,0.2,-0,0.5,0.2,0.2,-0,0,0,-0.2342,0 +0.3342,0.5,0.2,-0,0.1,0.5,0.2,-0,0,0,0.24806,0 +0.15194,0.1,0.5,-0,0.4,0.1,0.5,-0,0,0,-0.54937,0 +0.34937,0.4,0.1,-0,-0.2,0.4,0.1,-0,0,0,-0.058494,0 +-0.041506,-0.2,0.4,-0,-0.1,-0.2,0.4,-0,0,0,-0.031455,0 +0.031455,-0.1,-0.2,-0,-3.4954e-19,-0.1,-0.2,-0,0,0,0.16113,0 +-0.061133,0,-0.1,-0,0.1,-2.5929e-18,-0.1,-0,0,0,0.073096,0 +0.026904,0.1,2.5701e-18,-0,0.1,0.1,5.9735e-19,-0,0,0,0.33777,0 +0.062233,0.1,0.1,-0,0.4,0.1,0.1,-0,0,0,-0.046158,0 +0.24616,0.4,0.1,-0,0.2,0.4,0.1,-0,0,0,0.030678,0 +0.16932,0.2,0.4,-0,0.2,0.2,0.4,-0,0,0,-0.12768,0 +0.22768,0.2,0.2,-0,0.1,0.2,0.2,-0,0,0,0.37663,0 +0.12337,0.1,0.2,-0,0.5,0.1,0.2,-0,0,0,0.17533,0 +0.32467,0.5,0.1,-0,0.5,0.5,0.1,-0,0,0,-0.03697,0 +0.33697,0.5,0.5,-0,0.3,0.5,0.5,-0,0,0,-0.03477,0 +0.33477,0.3,0.5,-0,0.3,0.3,0.5,-0,0,0,0.18428,0 +0.31572,0.3,0.3,-0,0.5,0.3,0.3,-0,0,0,-0.16952,0 +0.36952,0.5,0.3,-0,0.2,0.5,0.3,-0,0,0,-0.030456,0 +0.23046,0.2,0.5,-0,0.2,0.2,0.5,-0,0,0,-0.25348,0 +0.25348,0.2,0.2,-0,-1.1483e-18,0.2,0.2,-0,0,0,0.52934,0 +0.070659,0,0.2,-0,0.6,-7.662e-18,0.2,-0,0,0,0.03215,0 +0.36785,0.6,8.443e-18,-0,0.4,0.6,7.5753e-18,-0,0,0,0.032015,0 +0.26799,0.4,0.6,-0,0.3,0.4,0.6,-0,0,0,-0.35105,0 +0.35105,0.3,0.4,-0,-1.2326e-18,0.3,0.4,-0,0,0,0.56821,0 +0.13179,0,0.3,-0,0.7,-7.8918e-18,0.3,-0,0,0,-0.046361,0 +0.44636,0.7,9.0629e-18,-0,0.4,0.7,1.0314e-17,-0,0,0,0.22249,0 +0.27751,0.4,0.7,-0,0.5,0.4,0.7,-0,0,0,-0.082265,0 +0.48227,0.5,0.4,-0,0.4,0.5,0.4,-0,0,0,1.5383,0 +0.36167,0.4,0.5,-0,1.9,0.4,0.5,-0,0,0,0.83144,0 +1.1686,1.9,0.4,-0,2,1.9,0.4,-0,0,0,0.46165,0 +1.3384,2,1.9,-0,1.8,2,1.9,-0,0,0,-1.2295,0 +1.6295,1.8,2,-0,0.4,1.8,2,-0,0,0,2.1016,0 +0.89837,0.4,1.8,-0,3,0.4,1.8,-0,0,0,-0.38378,0 +2.0838,3,0.4,-0,1.7,3,0.4,-0,0,0,2.315,0 +1.285,1.7,3,-0,3.6,1.7,3,-0,0,0,-1.0335,0 +2.8335,3.6,1.7,-0,1.8,3.6,1.7,-0,0,0,-1.7303,0 +1.7303,1.8,3.6,-0,1.0855e-18,1.8,3.6,-0,0,0,-0.5004,0 +1.1004,0,1.8,-0,0.6,5.3923e-18,1.8,-0,0,0,0.41929,0 +0.78071,0.6,-7.9814e-18,-0,1.2,0.6,-1.9297e-17,-0,0,0,-0.089643,0 +0.68964,1.2,0.6,-0,0.6,1.2,0.6,-0,0,0,-0.28538,0 +0.58538,0.6,1.2,-0,0.3,0.6,1.2,-0,0,0,0.37508,0 +0.52492,0.3,0.6,-0,0.9,0.3,0.6,-0,0,0,0.042236,0 +0.65776,0.9,0.3,-0,0.7,0.9,0.3,-0,0,0,-0.032096,0 +0.5321,0.7,0.9,-0,0.5,0.7,0.9,-0,0,0,0.83755,0 +0.56245,0.5,0.7,-0,1.4,0.5,0.7,-0,0,0,0.43384,0 +0.96616,1.4,0.5,-0,1.4,1.4,0.5,-0,0,0,-0.90028,0 +1.0003,1.4,1.4,-0,0.1,1.4,1.4,-0,0,0,0.25268,0 +0.54732,0.1,1.4,-0,0.8,0.1,1.4,-0,0,0,0.70757,0 +0.79243,0.8,0.1,-0,1.5,0.8,0.1,-0,0,0,1.1074,0 +0.89262,1.5,0.8,-0,2,1.5,0.8,-0,0,0,-0.40346,0 +1.4035,2,1.5,-0,1,2,1.5,-0,0,0,0.49535,0 +1.1046,1,2,-0,1.6,1,2,-0,0,0,1.0454,0 +1.4546,1.6,1,-0,2.5,1.6,1,-0,0,0,0.87187,0 +1.7281,2.5,1.6,-0,2.6,2.5,1.6,-0,0,0,0.2786,0 +2.0214,2.6,2.5,-0,2.3,2.6,2.5,-0,0,0,0.69497,0 +2.105,2.3,2.6,-0,2.8,2.3,2.6,-0,0,0,1.3342,0 +2.3658,2.8,2.3,-0,3.7,2.8,2.3,-0,0,0,-1.1104,0 +2.8104,3.7,2.8,-0,1.7,3.7,2.8,-0,0,0,0.82901,0 +1.971,1.7,3.7,-0,2.8,1.7,3.7,-0,0,0,-0.59248,0 +2.5925,2.8,1.7,-0,2,2.8,1.7,-0,0,0,0.94047,0 +1.7595,2,2.8,-0,2.7,2,2.8,-0,0,0,-0.23612,0 +2.3361,2.7,2,-0,2.1,2.7,2,-0,0,0,-1.1801,0 +1.8801,2.1,2.7,-0,0.7,2.1,2.7,-0,0,0,-1.3657,0 +1.2657,0.7,2.1,-0,-0.1,0.7,2.1,-0,0,0,0.24415,0 +0.55585,-0.1,0.7,-0,0.8,-0.1,0.7,-0,0,0,-0.49276,0 +0.59276,0.8,-0.1,-0,0.1,0.8,-0.1,-0,0,0,0.29689,0 +0.10311,0.1,0.8,-0,0.4,0.1,0.8,-0,0,0,-0.32678,0 +0.42678,0.4,0.1,-0,0.1,0.4,0.1,-0,0,0,-0.016615,0 +0.11662,0.1,0.4,-0,0.1,0.1,0.4,-0,0,0,0.13455,0 +0.16545,0.1,0.1,-0,0.3,0.1,0.1,-0,0,0,0.80655,0 +0.19345,0.3,0.1,-0,1,0.3,0.1,-0,0,0,-0.081453,0 +0.58145,1,0.3,-0,0.5,1,0.3,-0,0,0,0.66379,0 +0.43621,0.5,1,-0,1.1,0.5,1,-0,0,0,-0.28544,0 +0.88544,1.1,0.5,-0,0.6,1.1,0.5,-0,0,0,-0.75005,0 +0.55005,0.6,1.1,-0,-0.2,0.6,1.1,-0,0,0,-0.53558,0 +0.23558,-0.2,0.6,-0,-0.3,-0.2,0.6,-0,0,0,-0.17765,0 +-0.022352,-0.3,-0.2,-0,-0.2,-0.3,-0.2,-0,0,0,0.2856,0 +-0.1856,-0.2,-0.3,-0,0.1,-0.2,-0.3,-0,0,0,-0.65624,0 +-0.043756,0.1,-0.2,-0,-0.7,0.1,-0.2,-0,0,0,1.011,0 +-0.41103,-0.7,0.1,-0,0.6,-0.7,0.1,-0,0,0,-1.7754,0 +0.27536,0.6,-0.7,-0,-1.5,0.6,-0.7,-0,0,0,-0.88592,0 +-0.91408,-1.5,0.6,-0,-1.8,-1.5,0.6,-0,0,0,0.4368,0 +-0.9368,-1.8,-1.5,-0,-0.5,-1.8,-1.5,-0,0,0,1.2221,0 +-0.82206,-0.5,-1.8,-0,0.4,-0.5,-1.8,-0,0,0,1.4013,0 +-0.30127,0.4,-0.5,-0,1.1,0.4,-0.5,-0,0,0,1.1111,0 +0.48887,1.1,0.4,-0,1.6,1.1,0.4,-0,0,0,0.048684,0 +1.0513,1.6,1.1,-0,1.1,1.6,1.1,-0,0,0,-0.51604,0 +1.016,1.1,1.6,-0,0.5,1.1,1.6,-0,0,0,-0.18118,0 +0.78118,0.5,1.1,-0,0.6,0.5,1.1,-0,0,0,0.95229,0 +0.64771,0.6,0.5,-0,1.6,0.6,0.5,-0,0,0,0.47051,0 +1.0295,1.6,0.6,-0,1.5,1.6,0.6,-0,0,0,-0.59785,0 +1.0978,1.5,1.6,-0,0.5,1.5,1.6,-0,0,0,1.4807,0 +0.81928,0.5,1.5,-0,2.3,0.5,1.5,-0,0,0,0.25305,0 +1.6469,2.3,0.5,-0,1.9,2.3,0.5,-0,0,0,-1.7496,0 +1.3496,1.9,2.3,-0,-0.4,1.9,2.3,-0,0,0,-0.16365,0 +0.56365,-0.4,1.9,-0,0.4,-0.4,1.9,-0,0,0,0.93701,0 +0.66299,0.4,-0.4,-0,1.6,0.4,-0.4,-0,0,0,-0.9782,0 +0.7782,1.6,0.4,-0,-0.2,1.6,0.4,-0,0,0,1.8498,0 +0.15022,-0.2,1.6,-0,2,-0.2,1.6,-0,0,0,1.9521,0 +1.4479,2,-0.2,-0,3.4,2,-0.2,-0,0,0,0,0.53075 diff --git a/statsmodels/tsa/statespace/tests/results/results_wpi1_ar3_stata.csv b/statsmodels/tsa/statespace/tests/results/results_wpi1_ar3_stata.csv new file mode 100644 index 0000000..6126bd1 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_wpi1_ar3_stata.csv @@ -0,0 +1 @@ +wpi,t,ln_wpi,dep1,sr1,sp1,sp2,sp3,sf1,sf2,sf3,sm1,sm2,sm3 30.7,1960q1,3.424263,,,,,,,,,,, 30.8,1960q2,3.427515,0,0.0794849,0,0,0,0.0999985,0.0785646,0.0712076,0.0999985,0.0431804,0.006482 30.7,1960q3,3.424263,0.0785646,-0.2294193,0.0785646,0.0999985,0.0785646,-0.0999985,0.0999985,0.0343236,-0.0999985,0.0999985,0.0431804 30.7,1960q4,3.424263,-0.0343236,0.0455185,-0.0343236,-0.0999985,0.0999985,-6.94E-18,-0.0999985,0.0999985,-6.94E-18,-0.0999985,0.0999985 30.8,1961q1,3.427515,0.0162772,0.1149192,0.0162772,0,-0.0999985,0.0999985,0,-0.0999985,0.0999985,0,-0.0999985 30.5,1961q2,3.417727,0.0269032,-0.4487194,0.0269032,0.0999985,0,-0.2999992,0.0999985,0,-0.2999992,0.0999985,0 30.5,1961q3,3.417727,-0.1485951,0.2039676,-0.1485951,-0.2999992,0.0999985,-2.78E-17,-0.2999992,0.0999985,-2.78E-17,-0.2999992,0.0999985 30.6,1961q4,3.421,-0.0027752,0.1410738,-0.0027752,0,-0.2999992,0.1000004,0,-0.2999992,0.1000004,0,-0.2999992 30.7,1962q1,3.424263,-0.0247031,0.171173,-0.0247031,0.1000004,0,0.1000004,0.1000004,0,0.1000004,0.1000004,0 30.6,1962q2,3.421,0.0622335,-0.2226887,0.0622335,0.1000004,0.1000004,-0.1000004,0.1000004,0.1000004,-0.1000004,0.1000004,0.1000004 30.7,1962q3,3.424263,-0.0173775,0.1611176,-0.0173775,-0.1000004,0.1000004,0.1000004,-0.1000004,0.1000004,0.1000004,-0.1000004,0.1000004 30.7,1962q4,3.424263,0.0689848,-0.0946914,0.0689848,0.1000004,-0.1000004,0,0.1000004,-0.1000004,0,0.1000004,-0.1000004 30.6,1963q1,3.421,-0.0162775,-0.1149214,-0.0162775,0,0.1000004,-0.1000004,0,0.1000004,-0.1000004,0,0.1000004 30.5,1963q2,3.417727,-0.0269037,-0.1003354,-0.0269037,-0.1000004,0,-0.1000004,-0.1000004,0,-0.1000004,-0.1000004,0 30.6,1963q3,3.421,-0.0622335,0.2226887,-0.0622335,-0.1000004,-0.1000004,0.1000004,-0.1000004,-0.1000004,0.1000004,-0.1000004,-0.1000004 30.7,1963q4,3.424263,0.0173775,0.1134114,0.0173775,0.1000004,-0.1000004,0.1000004,0.1000004,-0.1000004,0.1000004,0.1000004,-0.1000004 30.7,1964q1,3.424263,0.0364299,-0.0500051,0.0364299,0.1000004,0.1000004,0,0.1000004,0.1000004,0,0.1000004,0.1000004 30.6,1964q2,3.421,0.0353298,-0.1857596,0.0353298,0,0.1000004,-0.1000004,0,0.1000004,-0.1000004,0,0.1000004 30.7,1964q3,3.424263,-0.0269037,0.1741936,-0.0269037,-0.1000004,0,0.1000004,-0.1000004,0,0.1000004,-0.1000004,0 30.7,1964q4,3.424263,0.0431812,-0.0592722,0.0431812,0.1000004,-0.1000004,0,0.1000004,-0.1000004,0,0.1000004,-0.1000004 30.9,1965q1,3.430756,-0.0162775,0.2968695,-0.0162775,0,0.1000004,0.1999989,0,0.1000004,0.1999989,0,0.1000004 31.2,1965q2,3.440418,0.1312173,0.2316794,0.1312173,0.1999989,0,0.3000011,0.1999989,0,0.3000011,0.1999989,0 31.4,1965q3,3.446808,0.1771742,0.03133,0.1771742,0.3000011,0.1999989,0.1999989,0.3000011,0.1999989,0.1999989,0.3000011,0.1999989 31.6,1965q4,3.453157,0.185599,0.0197684,0.185599,0.1999989,0.3000011,0.2000008,0.1999989,0.3000011,0.2000008,0.1999989,0.3000011 32.1,1966q1,3.468856,0.2018778,0.4092119,0.2018778,0.2000008,0.1999989,0.4999981,0.2000008,0.1999989,0.4999981,0.2000008,0.1999989 32.2,1966q2,3.471967,0.3341939,-0.3214608,0.3341939,0.4999981,0.2000008,0.1000023,0.4999981,0.2000008,0.1000023,0.4999981,0.2000008 32.6,1966q3,3.484312,0.1519461,0.3404856,0.1519461,0.1000023,0.4999981,0.3999977,0.1000023,0.4999981,0.3999977,0.1000023,0.4999981 32.4,1966q4,3.478158,0.349371,-0.7540844,0.349371,0.3999977,0.1000023,-0.1999969,0.3999977,0.1000023,-0.1999969,0.3999977,0.1000023 32.3,1967q1,3.475067,-0.0415043,-0.0802967,-0.0415043,-0.1999969,0.3999977,-0.1000023,-0.1999969,0.3999977,-0.1000023,-0.1999969,0.3999977 32.3,1967q2,3.475067,0.0314533,-0.043174,0.0314533,-0.1000023,-0.1999969,0,-0.1000023,-0.1999969,0,-0.1000023,-0.1999969 32.4,1967q3,3.478158,-0.0611327,0.2211803,-0.0611327,0,-0.1000023,0.1000023,0,-0.1000023,0.1000023,0,-0.1000023 32.5,1967q4,3.48124,0.0269042,0.1003321,0.0269042,0.1000023,0,0.0999985,0.1000023,0,0.0999985,0.1000023,0 32.9,1968q1,3.493473,0.0622327,0.463635,0.0622327,0.0999985,0.1000023,0.4000015,0.0999985,0.1000023,0.4000015,0.0999985,0.1000023 33.1,1968q2,3.499533,0.2461595,-0.0633646,0.2461595,0.4000015,0.0999985,0.1999969,0.4000015,0.0999985,0.1999969,0.4000015,0.0999985 33.3,1968q3,3.505557,0.1693205,0.0421129,0.1693205,0.1999969,0.4000015,0.2000008,0.1999969,0.4000015,0.2000008,0.1999969,0.4000015 33.4,1968q4,3.508556,0.2276812,-0.1752573,0.2276812,0.2000008,0.1999969,0.1000023,0.2000008,0.1999969,0.1000023,0.2000008,0.1999969 33.9,1969q1,3.523415,0.123367,0.5169815,0.123367,0.1000023,0.2000008,0.5,0.1000023,0.2000008,0.5,0.1000023,0.2000008 34.4,1969q2,3.538057,0.3246694,0.2406658,0.3246694,0.5,0.1000023,0.5,0.5,0.1000023,0.5,0.5,0.1000023 34.7,1969q3,3.54674,0.3369705,-0.0507483,0.3369705,0.5,0.5,0.2999992,0.5,0.5,0.2999992,0.5,0.5 35,1969q4,3.555348,0.3347694,-0.047727,0.3347694,0.2999992,0.5,0.2999992,0.2999992,0.5,0.2999992,0.2999992,0.5 35.5,1970q1,3.569533,0.3157171,0.2529541,0.3157171,0.2999992,0.2999992,0.5,0.2999992,0.2999992,0.5,0.2999992,0.2999992 35.7,1970q2,3.575151,0.3695245,-0.2326951,0.3695245,0.5,0.2999992,0.2000008,0.5,0.2999992,0.2000008,0.5,0.2999992 35.9,1970q3,3.580737,0.2304558,-0.0418038,0.2304558,0.2000008,0.5,0.2000008,0.2000008,0.5,0.2000008,0.2000008,0.5 35.9,1970q4,3.580737,0.2534848,-0.3479433,0.2534848,0.2000008,0.2000008,0,0.2000008,0.2000008,0,0.2000008,0.2000008 36.5,1971q1,3.597312,0.0706596,0.7265917,0.0706596,0,0.2000008,0.5999985,0,0.2000008,0.5999985,0,0.2000008 36.9,1971q2,3.608212,0.3678494,0.0441333,0.3678494,0.5999985,0,0.4000015,0.5999985,0,0.4000015,0.5999985,0 37.2,1971q3,3.616309,0.267986,0.0439426,0.267986,0.4000015,0.5999985,0.2999992,0.4000015,0.5999985,0.2999992,0.4000015,0.5999985 37.2,1971q4,3.616309,0.3510466,-0.4818606,0.3510466,0.2999992,0.4000015,0,0.2999992,0.4000015,0,0.2999992,0.4000015 37.9,1972q1,3.634951,0.1317929,0.7799449,0.1317929,0,0.2999992,0.7000008,0,0.2999992,0.7000008,0,0.2999992 38.3,1972q2,3.64545,0.4463609,-0.06364,0.4463609,0.7000008,0,0.3999977,0.7000008,0,0.3999977,0.7000008,0 38.8,1972q3,3.65842,0.2775104,0.3053982,0.2775104,0.3999977,0.7000008,0.5,0.3999977,0.7000008,0.5,0.3999977,0.7000008 39.2,1972q4,3.668677,0.4822651,-0.1129183,0.4822651,0.5,0.3999977,0.4000015,0.5,0.3999977,0.4000015,0.5,0.3999977 41.1,1973q1,3.716008,0.3616737,2.111565,0.3616737,0.4000015,0.5,1.899998,0.4000015,0.5,1.899998,0.4000015,0.5 43.1,1973q2,3.763523,1.168557,1.141272,1.168557,1.899998,0.4000015,2,1.899998,0.4000015,2,1.899998,0.4000015 44.9,1973q3,3.804438,1.338354,0.6336781,1.338354,2,1.899998,1.800003,2,1.899998,1.800003,2,1.899998 45.3,1973q4,3.813307,1.62952,-1.687691,1.62952,1.800003,2,0.3999977,1.800003,2,0.3999977,1.800003,2 48.3,1974q1,3.877432,0.898369,2.884783,0.898369,0.3999977,1.800003,3,0.3999977,1.800003,3,0.3999977,1.800003 50,1974q2,3.912023,2.083784,-0.5267956,2.083784,3,0.3999977,1.700001,3,0.3999977,1.700001,3,0.3999977 53.6,1974q3,3.981549,1.285019,3.177633,1.285019,1.700001,3,3.599998,1.700001,3,3.599998,1.700001,3 55.4,1974q4,4.01458,2.833507,-1.418629,2.833507,3.599998,1.700001,1.800003,3.599998,1.700001,1.800003,3.599998,1.700001 55.4,1975q1,4.01458,1.730331,-2.375122,1.730331,1.800003,3.599998,2.22E-16,1.800003,3.599998,2.22E-16,1.800003,3.599998 56,1975q2,4.025352,1.100398,-0.6868683,1.100398,0,1.800003,0.5999985,0,1.800003,0.5999985,0,1.800003 57.2,1975q3,4.046554,0.7807068,0.5755398,0.7807068,0.5999985,0,1.200001,0.5999985,0,1.200001,0.5999985,0 57.8,1975q4,4.056989,0.6896428,-0.1230495,0.6896428,1.200001,0.5999985,0.5999985,1.200001,0.5999985,0.5999985,1.200001,0.5999985 58.1,1976q1,4.062166,0.5853766,-0.3917204,0.5853766,0.5999985,1.200001,0.2999992,0.5999985,1.200001,0.2999992,0.5999985,1.200001 59,1976q2,4.077538,0.5249205,0.5148513,0.5249205,0.2999992,0.5999985,0.9000015,0.2999992,0.5999985,0.9000015,0.2999992,0.5999985 59.7,1976q3,4.089332,0.6577644,0.0579753,0.6577644,0.9000015,0.2999992,0.7000008,0.9000015,0.2999992,0.7000008,0.9000015,0.2999992 60.2,1976q4,4.097672,0.5320962,-0.0440566,0.5320962,0.7000008,0.9000015,0.5,0.7000008,0.9000015,0.5,0.7000008,0.9000015 61.6,1977q1,4.120662,0.5624511,1.14965,0.5624511,0.5,0.7000008,1.399998,0.5,0.7000008,1.399998,0.5,0.7000008 63,1977q2,4.143135,0.9661546,0.5955157,0.9661546,1.399998,0.5,1.400002,1.399998,0.5,1.400002,1.399998,0.5 63.1,1977q3,4.144721,1.000284,-1.235768,1.000284,1.400002,1.399998,0.0999985,1.400002,1.399998,0.0999985,1.400002,1.399998 63.9,1977q4,4.15732,0.5473213,0.346841,0.5473213,0.0999985,1.400002,0.8000031,0.0999985,1.400002,0.8000031,0.0999985,1.400002 65.4,1978q1,4.180522,0.7924349,0.9712322,0.7924349,0.8000031,0.0999985,1.5,0.8000031,0.0999985,1.5,0.8000031,0.0999985 67.4,1978q2,4.210645,0.8926198,1.520034,0.8926198,1.5,0.8000031,2,1.5,0.8000031,2,1.5,0.8000031 68.4,1978q3,4.225373,1.403464,-0.5538111,1.403464,2,1.5,1,2,1.5,1,2,1.5 70,1978q4,4.248495,1.104647,0.6799389,1.104647,1,2,1.599998,1,2,1.599998,1,2 72.5,1979q1,4.283587,1.454646,1.434895,1.454646,1.599998,1,2.5,1.599998,1,2.5,1.599998,1 75.1,1979q2,4.31882,1.728132,1.196759,1.728132,2.5,1.599998,2.599998,2.5,1.599998,2.599998,2.5,1.599998 77.4,1979q3,4.348987,2.021395,0.3824289,2.021395,2.599998,2.5,2.300003,2.599998,2.5,2.300003,2.599998,2.5 80.2,1979q4,4.384523,2.105034,0.9539319,2.105034,2.300003,2.599998,2.799995,2.300003,2.599998,2.799995,2.300003,2.599998 83.9,1980q1,4.429626,2.365791,1.831395,2.365791,2.799995,2.300003,3.700005,2.799995,2.300003,3.700005,2.799995,2.300003 85.6,1980q2,4.449685,2.810381,-1.524157,2.810381,3.700005,2.799995,1.699997,3.700005,2.799995,1.699997,3.700005,2.799995 88.4,1980q3,4.481872,1.970985,1.137943,1.970985,1.699997,3.700005,2.800003,1.699997,3.700005,2.800003,1.699997,3.700005 90.4,1980q4,4.504244,2.592478,-0.8132593,2.592478,2.800003,1.699997,2,2.800003,1.699997,2,2.800003,1.699997 93.1,1981q1,4.533674,1.759534,1.290916,1.759534,2,2.800003,2.699997,2,2.800003,2.699997,2,2.800003 95.2,1981q2,4.55598,2.336114,-0.3241019,2.336114,2.699997,2,2.099998,2.699997,2,2.099998,2.699997,2 95.9,1981q3,4.563306,1.880126,-1.619881,1.880126,2.099998,2.699997,0.7000046,2.099998,2.699997,0.7000046,2.099998,2.699997 95.8,1981q4,4.562263,1.265696,-1.874607,1.265696,0.7000046,2.099998,-0.0999985,0.7000046,2.099998,-0.0999985,0.7000046,2.099998 96.6,1982q1,4.570579,0.555851,0.3351223,0.555851,-0.0999985,0.7000046,0.7999954,-0.0999985,0.7000046,0.7999954,-0.0999985,0.7000046 96.7,1982q2,4.571613,0.5927548,-0.6763771,0.5927548,0.7999954,-0.0999985,0.0999985,0.7999954,-0.0999985,0.0999985,0.7999954,-0.0999985 97.1,1982q3,4.575741,0.1031118,0.4075227,0.1031118,0.0999985,0.7999954,0.4000015,0.0999985,0.7999954,0.4000015,0.0999985,0.7999954 97.2,1982q4,4.576771,0.4267826,-0.448557,0.4267826,0.4000015,0.0999985,0.0999985,0.4000015,0.0999985,0.0999985,0.4000015,0.0999985 97.3,1983q1,4.577799,0.1166142,-0.0227969,0.1166142,0.0999985,0.4000015,0.1000061,0.0999985,0.4000015,0.1000061,0.0999985,0.4000015 97.6,1983q2,4.580877,0.1654509,0.1846811,0.1654509,0.1000061,0.0999985,0.2999954,0.1000061,0.0999985,0.2999954,0.1000061,0.0999985 98.6,1983q3,4.591071,0.1934489,1.107104,0.1934489,0.2999954,0.1000061,1,0.2999954,0.1000061,1,0.2999954,0.1000061 99.1,1983q4,4.596129,0.5814546,-0.1118079,0.5814546,1,0.2999954,0.5,1,0.2999954,0.5,1,0.2999954 100.2,1984q1,4.607168,0.4362065,0.9111474,0.4362065,0.5,1,1.099998,0.5,1,1.099998,0.5,1 100.8,1984q2,4.613138,0.885444,-0.3918035,0.885444,1.099998,0.5,0.6000061,1.099998,0.5,0.6000061,1.099998,0.5 100.6,1984q3,4.611152,0.5500512,-1.029557,0.5500512,0.6000061,1.099998,-0.2000046,0.6000061,1.099998,-0.2000046,0.6000061,1.099998 100.3,1984q4,4.608166,0.2355793,-0.7351512,0.2355793,-0.2000046,0.6000061,-0.2999954,-0.2000046,0.6000061,-0.2999954,-0.2000046,0.6000061 100.1,1985q1,4.60617,-0.0223489,-0.2438573,-0.0223489,-0.2999954,-0.2000046,-0.2000046,-0.2999954,-0.2000046,-0.2000046,-0.2999954,-0.2000046 100.2,1985q2,4.607168,-0.1856029,0.3920279,-0.1856029,-0.2000046,-0.2999954,0.0999985,-0.2000046,-0.2999954,0.0999985,-0.2000046,-0.2999954 99.5,1985q3,4.600158,-0.0437558,-0.9007829,-0.0437558,0.0999985,-0.2000046,-0.6999969,0.0999985,-0.2000046,-0.6999969,0.0999985,-0.2000046 100.1,1985q4,4.60617,-0.4110308,1.387779,-0.4110308,-0.6999969,0.0999985,0.5999985,-0.6999969,0.0999985,0.5999985,-0.6999969,0.0999985 98.6,1986q1,4.591071,0.2753627,-2.436934,0.2753627,0.5999985,-0.6999969,-1.5,0.5999985,-0.6999969,-1.5,0.5999985,-0.6999969 96.8,1986q2,4.572647,-0.9140747,-1.21605,-0.9140747,-1.5,0.5999985,-1.799995,-1.5,0.5999985,-1.799995,-1.5,0.5999985 96.3,1986q3,4.567468,-0.9367974,0.5995656,-0.9367974,-1.799995,-1.5,-0.5,-1.799995,-1.5,-0.5,-1.799995,-1.5 96.7,1986q4,4.571613,-0.8220589,1.677438,-0.8220589,-0.5,-1.799995,0.3999939,-0.5,-1.799995,0.3999939,-0.5,-1.799995 97.8,1987q1,4.582925,-0.3012679,1.923445,-0.3012679,0.3999939,-0.5,1.100006,0.3999939,-0.5,1.100006,0.3999939,-0.5 99.4,1987q2,4.599152,0.4888681,1.525182,0.4888681,1.100006,0.3999939,1.599998,1.100006,0.3999939,1.599998,1.100006,0.3999939 100.5,1987q3,4.610157,1.051314,0.0668259,1.051314,1.599998,1.100006,1.099998,1.599998,1.100006,1.099998,1.599998,1.100006 101,1987q4,4.61512,1.016036,-0.7083322,1.016036,1.099998,1.599998,0.5,1.099998,1.599998,0.5,1.099998,1.599998 101.6,1988q1,4.621044,0.7811794,-0.2486962,0.7811794,0.5,1.099998,0.5999985,0.5,1.099998,0.5999985,0.5,1.099998 103.2,1988q2,4.636669,0.6477114,1.307147,0.6477114,0.5999985,0.5,1.599998,0.5999985,0.5,1.599998,0.5999985,0.5 104.7,1988q3,4.651099,1.029488,0.6458436,1.029488,1.599998,0.5999985,1.5,1.599998,0.5999985,1.5,1.599998,0.5999985 105.2,1988q4,4.655863,1.097846,-0.8206275,1.097846,1.5,1.599998,0.5,1.5,1.599998,0.5,1.5,1.599998 107.5,1989q1,4.677491,0.819284,2.032494,0.819284,0.5,1.5,2.300003,0.5,1.5,2.300003,0.5,1.5 109.4,1989q2,4.695011,1.64695,0.3473487,1.64695,2.300003,0.5,1.900002,2.300003,0.5,1.900002,2.300003,0.5 109,1989q3,4.691348,1.349556,-2.401512,1.349556,1.900002,2.300003,-0.4000015,1.900002,2.300003,-0.4000015,1.900002,2.300003 109.4,1989q4,4.695011,0.5636495,-0.2246298,0.5636495,-0.4000015,1.900002,0.4000015,-0.4000015,1.900002,0.4000015,-0.4000015,1.900002 111,1990q1,4.70953,0.6629925,1.286172,0.6629925,0.4000015,-0.4000015,1.599998,0.4000015,-0.4000015,1.599998,0.4000015,-0.4000015 110.8,1990q2,4.707727,0.7782037,-1.342717,0.7782037,1.599998,0.4000015,-0.1999969,1.599998,0.4000015,-0.1999969,1.599998,0.4000015 112.8,1990q3,4.725616,0.1502198,2.539082,0.1502198,-0.1999969,1.599998,2,-0.1999969,1.599998,2,-0.1999969,1.599998 116.2,1990q4,4.755313,1.447948,2.679457,1.447948,2,-0.1999969,3.399994,2,-0.1999969,3.399994,2,-0.1999969 \ No newline at end of file diff --git a/statsmodels/tsa/statespace/tests/results/results_wpi1_missing_ar3_matlab_ssm.csv b/statsmodels/tsa/statespace/tests/results/results_wpi1_missing_ar3_matlab_ssm.csv new file mode 100644 index 0000000..c64a7aa --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/results_wpi1_missing_ar3_matlab_ssm.csv @@ -0,0 +1,123 @@ +0,0,0,0.54519,0.1,0.043181,0.0064821,-0,0,0,-0.15849,0.063724 +0.078566,0.1,0.078566,0,-0.1,0.1,0.043181,-0,0,0,0.032039,0.035338 +-0.034324,-0.1,0.1,-0,8.2743e-18,-0.1,0.1,-0,0,0,0.083723,0 +0.016277,0,-0.1,-0,0.1,1.0158e-17,-0.1,0,0,0,-0.3269,0 +0.026904,0.1,1.3354e-18,-0,-0.3,0.1,1.0158e-17,-0,0,0,0.1486,0 +-0.1486,-0.3,0.1,-0,-2.7979e-17,-0.3,0.1,-0,0,0,0.10277,0 +-0.0027748,0,-0.3,-0,0.1,-1.9752e-18,-0.3,-0,0,0,0.1247,0 +-0.024703,0.1,1.6393e-18,-0,0.1,0.1,-1.7263e-18,-0,0,0,-0.16223,0 +0.062233,0.1,0.1,-0,-0.1,0.1,0.1,-0,0,0,0.08702,0.48878 +-0.017377,-0.1,0.1,-0,0.011887,-0.1,0.1,-0,0,0,0.093959,0.48191 +0.0071183,-0.017377,-0.1,0,0.054194,0.011887,-0.1,0,0,0,0.10095,0.47425 +-0.023707,0.0071183,-0.017377,0.14951,0.037833,0.054194,0.011887,0.13553,0,0,0.10805,0.46586 +-0.016301,-0.023707,0.0071183,0.20235,0.064404,0.037833,0.054194,0.1751,0,0,0.11805,0.45406 +-0.0090135,-0.016301,-0.023707,0.24329,0.091489,0.064404,0.037833,0.19869,0,0,0.12693,0.44153 +-0.012421,-0.0090135,-0.016301,0.29005,0.10689,0.091489,0.064404,0.22043,0,0,0.13074,0.43363 +-0.011612,-0.012421,-0.0090135,0.32607,0.12469,0.10689,0.091489,0.22767,0,0,0.14994,0.40902 +-0.0096292,-0.011612,-0.012421,0.35491,0.15111,0.12469,0.10689,0.22043,0,0,0.16952,0.37492 +-0.0093865,-0.0096292,-0.011612,0.3814,0.17795,0.15111,0.12469,0.19869,0,0,0.13783,0.39663 +-0.0088609,-0.0093865,-0.0096292,0.40412,0.17995,0.17795,0.15111,0.1751,0,0,0.18393,0.34315 +-0.0080492,-0.0088609,-0.0093865,0.42335,0.21594,0.17995,0.17795,0.13553,0,0,0.30751,0 +-0.0075086,-0.0080492,-0.0088609,0.4401,0.3,0.21594,0.17995,-0,0,0,0.044932,0 +0.22774,0.3,0.21964,0,0.2,0.3,0.21594,0,0,0,0.068084,0 +0.189,0.2,0.3,-0,0.2,0.2,0.3,-0,0,0,0.29812,0 +0.20188,0.2,0.2,-0,0.5,0.2,0.2,-0,0,0,-0.2342,0 +0.3342,0.5,0.2,-0,0.1,0.5,0.2,-0,0,0,0.24806,0 +0.15194,0.1,0.5,-0,0.4,0.1,0.5,-0,0,0,-0.54937,0 +0.34937,0.4,0.1,-0,-0.2,0.4,0.1,-0,0,0,-0.058494,0 +-0.041506,-0.2,0.4,-0,-0.1,-0.2,0.4,-0,0,0,-0.031455,0 +0.031455,-0.1,-0.2,-0,-5.2088e-19,-0.1,-0.2,-0,0,0,0.16113,0 +-0.061133,0,-0.1,-0,0.1,1.2471e-19,-0.1,-0,0,0,0.073096,0 +0.026904,0.1,3.8299e-18,-0,0.1,0.1,4.3231e-18,-0,0,0,0.33777,0 +0.062233,0.1,0.1,-0,0.4,0.1,0.1,-0,0,0,-0.046158,0 +0.24616,0.4,0.1,-0,0.2,0.4,0.1,-0,0,0,0.030678,0 +0.16932,0.2,0.4,-0,0.2,0.2,0.4,-0,0,0,-0.12768,0 +0.22768,0.2,0.2,-0,0.1,0.2,0.2,-0,0,0,0.37663,0 +0.12337,0.1,0.2,-0,0.5,0.1,0.2,-0,0,0,0.17533,0 +0.32467,0.5,0.1,-0,0.5,0.5,0.1,-0,0,0,-0.03697,0 +0.33697,0.5,0.5,-0,0.3,0.5,0.5,-0,0,0,-0.03477,0 +0.33477,0.3,0.5,-0,0.3,0.3,0.5,-0,0,0,0.18428,0 +0.31572,0.3,0.3,-0,0.5,0.3,0.3,-0,0,0,-0.16952,0 +0.36952,0.5,0.3,-0,0.2,0.5,0.3,-0,0,0,-0.030456,0 +0.23046,0.2,0.5,-0,0.2,0.2,0.5,-0,0,0,-0.25348,0 +0.25348,0.2,0.2,-0,-1.7111e-18,0.2,0.2,-0,0,0,0.52934,0 +0.070659,0,0.2,-0,0.6,1.6852e-18,0.2,-0,0,0,0.03215,0 +0.36785,0.6,1.2582e-17,-0,0.4,0.6,1.2799e-17,-0,0,0,0.032015,0 +0.26799,0.4,0.6,-0,0.3,0.4,0.6,-0,0,0,-0.35105,0 +0.35105,0.3,0.4,-0,-1.8368e-18,0.3,0.4,-0,0,0,0.56821,0 +0.13179,0,0.3,-0,0.7,2.305e-18,0.3,-0,0,0,-0.046361,0 +0.44636,0.7,1.3506e-17,-0,0.4,0.7,1.3193e-17,-0,0,0,0.22249,0 +0.27751,0.4,0.7,-0,0.5,0.4,0.7,-0,0,0,-0.082265,0 +0.48227,0.5,0.4,-0,0.4,0.5,0.4,-0,0,0,1.5383,0 +0.36167,0.4,0.5,-0,1.9,0.4,0.5,-0,0,0,0.83144,0 +1.1686,1.9,0.4,-0,2,1.9,0.4,-0,0,0,0.46165,0 +1.3384,2,1.9,-0,1.8,2,1.9,-0,0,0,-1.2295,0 +1.6295,1.8,2,-0,0.4,1.8,2,-0,0,0,2.1016,0 +0.89837,0.4,1.8,-0,3,0.4,1.8,-0,0,0,-0.38378,0 +2.0838,3,0.4,-0,1.7,3,0.4,-0,0,0,2.315,0 +1.285,1.7,3,-0,3.6,1.7,3,-0,0,0,-1.0335,0 +2.8335,3.6,1.7,-0,1.8,3.6,1.7,-0,0,0,-1.7303,0 +1.7303,1.8,3.6,-0,1.6176e-18,1.8,3.6,-0,0,0,-0.5004,0 +1.1004,0,1.8,-0,0.6,-4.3511e-18,1.8,-0,0,0,0.41929,0 +0.78071,0.6,-1.1894e-17,-0,1.2,0.6,-9.0648e-18,-0,0,0,-0.089643,0 +0.68964,1.2,0.6,-0,0.6,1.2,0.6,-0,0,0,-0.28538,0 +0.58538,0.6,1.2,-0,0.3,0.6,1.2,-0,0,0,0.37508,0 +0.52492,0.3,0.6,-0,0.9,0.3,0.6,-0,0,0,0.042236,0 +0.65776,0.9,0.3,-0,0.7,0.9,0.3,-0,0,0,-0.032096,0 +0.5321,0.7,0.9,-0,0.5,0.7,0.9,-0,0,0,0.83755,0 +0.56245,0.5,0.7,-0,1.4,0.5,0.7,-0,0,0,0.43384,0 +0.96616,1.4,0.5,-0,1.4,1.4,0.5,-0,0,0,-0.90028,0 +1.0003,1.4,1.4,-0,0.1,1.4,1.4,-0,0,0,0.25268,0 +0.54732,0.1,1.4,-0,0.8,0.1,1.4,-0,0,0,0.70757,0 +0.79243,0.8,0.1,-0,1.5,0.8,0.1,-0,0,0,1.1074,0 +0.89262,1.5,0.8,-0,2,1.5,0.8,-0,0,0,-0.40346,0 +1.4035,2,1.5,-0,1,2,1.5,-0,0,0,0.49535,0 +1.1046,1,2,-0,1.6,1,2,-0,0,0,1.0454,0 +1.4546,1.6,1,-0,2.5,1.6,1,-0,0,0,0.87187,0 +1.7281,2.5,1.6,-0,2.6,2.5,1.6,-0,0,0,0.2786,0 +2.0214,2.6,2.5,-0,2.3,2.6,2.5,-0,0,0,0.69497,0 +2.105,2.3,2.6,-0,2.8,2.3,2.6,-0,0,0,1.3342,0 +2.3658,2.8,2.3,-0,3.7,2.8,2.3,-0,0,0,-1.1104,0 +2.8104,3.7,2.8,-0,1.7,3.7,2.8,-0,0,0,0.82901,0 +1.971,1.7,3.7,-0,2.8,1.7,3.7,-0,0,0,-0.59248,0 +2.5925,2.8,1.7,-0,2,2.8,1.7,-0,0,0,0.94047,0 +1.7595,2,2.8,-0,2.7,2,2.8,-0,0,0,-0.23612,0 +2.3361,2.7,2,-0,2.1,2.7,2,-0,0,0,-1.1801,0 +1.8801,2.1,2.7,-0,0.7,2.1,2.7,-0,0,0,-1.3657,0 +1.2657,0.7,2.1,-0,-0.1,0.7,2.1,-0,0,0,0.24415,0 +0.55585,-0.1,0.7,-0,0.8,-0.1,0.7,-0,0,0,-0.49276,0 +0.59276,0.8,-0.1,-0,0.1,0.8,-0.1,-0,0,0,0.29689,0 +0.10311,0.1,0.8,-0,0.4,0.1,0.8,-0,0,0,-0.32678,0 +0.42678,0.4,0.1,-0,0.1,0.4,0.1,-0,0,0,-0.016615,0 +0.11662,0.1,0.4,-0,0.1,0.1,0.4,-0,0,0,0.13455,0 +0.16545,0.1,0.1,-0,0.3,0.1,0.1,-0,0,0,0.80655,0 +0.19345,0.3,0.1,-0,1,0.3,0.1,-0,0,0,-0.081453,0 +0.58145,1,0.3,-0,0.5,1,0.3,-0,0,0,0.66379,0 +0.43621,0.5,1,-0,1.1,0.5,1,-0,0,0,-0.28544,0 +0.88544,1.1,0.5,-0,0.6,1.1,0.5,-0,0,0,-0.75005,0 +0.55005,0.6,1.1,-0,-0.2,0.6,1.1,-0,0,0,-0.53558,0 +0.23558,-0.2,0.6,-0,-0.3,-0.2,0.6,-0,0,0,-0.17765,0 +-0.022352,-0.3,-0.2,-0,-0.2,-0.3,-0.2,-0,0,0,0.2856,0 +-0.1856,-0.2,-0.3,-0,0.1,-0.2,-0.3,-0,0,0,-0.65624,0 +-0.043756,0.1,-0.2,-0,-0.7,0.1,-0.2,-0,0,0,1.011,0 +-0.41103,-0.7,0.1,-0,0.6,-0.7,0.1,-0,0,0,-1.7754,0 +0.27536,0.6,-0.7,-0,-1.5,0.6,-0.7,-0,0,0,-0.88592,0 +-0.91408,-1.5,0.6,-0,-1.8,-1.5,0.6,-0,0,0,0.4368,0 +-0.9368,-1.8,-1.5,-0,-0.5,-1.8,-1.5,-0,0,0,1.2221,0 +-0.82206,-0.5,-1.8,-0,0.4,-0.5,-1.8,-0,0,0,1.4013,0 +-0.30127,0.4,-0.5,-0,1.1,0.4,-0.5,-0,0,0,1.1111,0 +0.48887,1.1,0.4,-0,1.6,1.1,0.4,-0,0,0,0.048684,0 +1.0513,1.6,1.1,-0,1.1,1.6,1.1,-0,0,0,-0.51604,0 +1.016,1.1,1.6,-0,0.5,1.1,1.6,-0,0,0,-0.18118,0 +0.78118,0.5,1.1,-0,0.6,0.5,1.1,-0,0,0,0.95229,0 +0.64771,0.6,0.5,-0,1.6,0.6,0.5,-0,0,0,0.47051,0 +1.0295,1.6,0.6,-0,1.5,1.6,0.6,-0,0,0,-0.59785,0 +1.0978,1.5,1.6,-0,0.5,1.5,1.6,-0,0,0,1.4807,0 +0.81928,0.5,1.5,-0,2.3,0.5,1.5,-0,0,0,0.25305,0 +1.6469,2.3,0.5,-0,1.9,2.3,0.5,-0,0,0,-1.7496,0 +1.3496,1.9,2.3,-0,-0.4,1.9,2.3,-0,0,0,-0.16365,0 +0.56365,-0.4,1.9,-0,0.4,-0.4,1.9,-0,0,0,0.93701,0 +0.66299,0.4,-0.4,-0,1.6,0.4,-0.4,-0,0,0,-0.9782,0 +0.7782,1.6,0.4,-0,-0.2,1.6,0.4,-0,0,0,1.8498,0 +0.15022,-0.2,1.6,-0,2,-0.2,1.6,-0,0,0,1.9521,0 +1.4479,2,-0.2,-0,3.4,2,-0.2,-0,0,0,0,0.53075 diff --git a/statsmodels/tsa/statespace/tests/results/test_clark1989_r.R b/statsmodels/tsa/statespace/tests/results/test_clark1989_r.R new file mode 100644 index 0000000..655fd58 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_clark1989_r.R @@ -0,0 +1,98 @@ +library(FKF) +library(KFAS) +options(digits=10) + +# Observations +df <- read.csv("clark1989.csv", header=FALSE) +lgdp = log(df$V1[5:nrow(df)]) +unemp = (df$V2 / 100)[5:nrow(df)] + +# True parameters +params <- c( + 0.004863, 0.00668, 0.000295, 0.001518, 0.000306, 1.43859, -0.517385, + -0.336789, -0.163511, -0.072012 +) + +# Dimensions +n = 2 +k = 6 + +# Measurement equation +H = matrix(rep(0, n*k), nrow=n) +H[1,1] = 1 +H[1,2] = 1 +H[2,6] = 1 +obs_intercept = matrix(rep(0,n), nrow=n) +R = matrix(rep(0, n^2), nrow=n) + +# Transition equation + +mu = matrix(rep(0, k), nrow=k) +F = matrix(rep(0, k^2), nrow=k) +F[1,1] = 1 +F[1,5] = 1 +F[3,2] = 1 +F[4,3] = 1 +F[5,5] = 1 +F[6,6] = 1 + +# Q = G Q_star G' +Q = matrix(rep(0, k^2), nrow=k) + +# Update matrices with given parameters +H[2,2] = params[8] +H[2,3] = params[9] +H[2,4] = params[10] +F[2,2] = params[6] +F[2,3] = params[7] +R[2,2] = params[5]^2 +Q[1,1] = params[1]^2 +Q[2,2] = params[2]^2 +Q[5,5] = params[3]^2 +Q[6,6] = params[4]^2 + +# Initialization: Diffuse priors +initial_state = c(mu) +initial_state_cov = diag(k) * 100 + +initial_state_cov = (F %*% initial_state_cov) %*% (t(F)) + +# - FKF --------------------------------------------------------------------- # + +# Filter, complete dataset +dta <- rbind(lgdp,unemp) +ans <- fkf(a0=initial_state, P0=initial_state_cov, + dt=mu, ct=obs_intercept, Tt=F, Zt=H, + HHt=Q, GGt=R, yt=dta) + +# Filter, partially missing dataset (using KFAS) +unemp2 = unemp +n = length(unemp2) +unemp2[(n-50):n] <- NaN +dta2 <- rbind(lgdp,unemp2) +ans2 <- fkf(a0=initial_state, P0=initial_state_cov, + dt=mu, ct=obs_intercept, Tt=F, Zt=H, + HHt=Q, GGt=R, yt=dta2) + +mod <- SSModel(t(dta2) ~ -1+SSMcustom(H, F, diag(6), Q, P1=initial_state_cov), H=R) +fit <- KFS(mod, filtering="state", smoothing="state") + +# Recalculate Kalman gain +# FKF defines the Kalman gain as P Z' F^{-1}, whereas Durbin and Koopman (2012) +# use T P Z' F^{-1}, so premultiply the ans$Kt by the transition matrix +Kt = ans$Kt +for (i in 1:n) { + Kt[,,i] = F %*% Kt[,,i] +} + +# Create output columns +# 1: sum of complete dataset Kalman gain +sum_complete_Kt = colSums(Kt, dims=2) +# 2-7: filtered states from incomplete dataset +# t(ans2$att) + +# Print likelihood from partial missing model +print(fit$logLik) + +out <- matrix(cbind(sum_complete_Kt, t(ans2$att))) +write.csv(out, 'results_clark1989_R.csv', row.names=FALSE) diff --git a/statsmodels/tsa/statespace/tests/results/test_dynamic_factor_stata.do b/statsmodels/tsa/statespace/tests/results/test_dynamic_factor_stata.do new file mode 100644 index 0000000..dfd93a1 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_dynamic_factor_stata.do @@ -0,0 +1,149 @@ +// Helpful commands: +// matrix list e(b) +// matrix d = vecdiag(e(V)) +// matrix list d + +webuse lutkepohl2, clear +tsset +// use lutkepohl2_s12, clear +// tsset qtr + +// Dynamic factors +dfactor (dln_inv dln_inc dln_consump = , noconstant ) (f = , ar(1/2)) if qtr<=tq(1978q4) + +// These are predict in-sample + forecast out-of-sample (1979q1 is first out-of sample obs) +predict predict_dfm_1, dynamic(tq(1979q1)) equation(dln_inv) +predict predict_dfm_2, dynamic(tq(1979q1)) equation(dln_inc) +predict predict_dfm_3, dynamic(tq(1979q1)) equation(dln_consump) + +// These are predict in-sample for first 3-observations (1960q2-1960q4), then +// dynamic predict for the rest of in-sample observations (1961q1-1978q4), then +// forecast for the remaining periods 1979q1 - 1982q4 +predict dyn_predict_dfm_1, dynamic(tq(1961q1)) equation(dln_inv) +predict dyn_predict_dfm_2, dynamic(tq(1961q1)) equation(dln_inc) +predict dyn_predict_dfm_3, dynamic(tq(1961q1)) equation(dln_consump) + +// Dynamic factors, with 2 factors +// Note: this does not converge even if we do not enforce iter(#), but this is +// good enough for testing +dfactor (dln_inv dln_inc dln_consump = , noconstant ) (f1 f2 = , ar(1) arstructure(general)) if qtr<=tq(1978q4), iter(1) + +// predict + forecast, see above +predict predict_dfm2_1, dynamic(tq(1979q1)) equation(dln_inv) +predict predict_dfm2_2, dynamic(tq(1979q1)) equation(dln_inc) +predict predict_dfm2_3, dynamic(tq(1979q1)) equation(dln_consump) + +// predict + dynamic predict + forecast, see above +predict dyn_predict_dfm2_1, dynamic(tq(1961q1)) equation(dln_inv) +predict dyn_predict_dfm2_2, dynamic(tq(1961q1)) equation(dln_inc) +predict dyn_predict_dfm2_3, dynamic(tq(1961q1)) equation(dln_consump) + +// Dynamic factors, with 1 exog +gen c = 1 +dfactor (dln_inv dln_inc dln_consump = c, noconstant ) (f = , ar(1)) if qtr<=tq(1978q4) + +// predict + forecast, see above +predict predict_dfm_exog1_1, dynamic(tq(1979q1)) equation(dln_inv) +predict predict_dfm_exog1_2, dynamic(tq(1979q1)) equation(dln_inc) +predict predict_dfm_exog1_3, dynamic(tq(1979q1)) equation(dln_consump) + +// predict + dynamic predict + forecast, see above +predict dyn_predict_dfm_exog1_1, dynamic(tq(1961q1)) equation(dln_inv) +predict dyn_predict_dfm_exog1_2, dynamic(tq(1961q1)) equation(dln_inc) +predict dyn_predict_dfm_exog1_3, dynamic(tq(1961q1)) equation(dln_consump) + +// Dynamic factors, with 2 exog +gen t = _n +dfactor (dln_inv dln_inc dln_consump = c t, noconstant ) (f = , ar(1)) if qtr<=tq(1978q4) + +// predict + forecast, see above +predict predict_dfm_exog2_1, dynamic(tq(1979q1)) equation(dln_inv) +predict predict_dfm_exog2_2, dynamic(tq(1979q1)) equation(dln_inc) +predict predict_dfm_exog2_3, dynamic(tq(1979q1)) equation(dln_consump) + +// predict + dynamic predict + forecast, see above +predict dyn_predict_dfm_exog2_1, dynamic(tq(1961q1)) equation(dln_inv) +predict dyn_predict_dfm_exog2_2, dynamic(tq(1961q1)) equation(dln_inc) +predict dyn_predict_dfm_exog2_3, dynamic(tq(1961q1)) equation(dln_consump) + +// Dynamic factors, with general errors (VAR + unstructured), on de-meaned data +// (have to demean, otherwise get non-stationarity start params for the error +// VAR) +dfactor (dln_inv dln_inc dln_consump = , noconstant ar(1) arstructure(general) covstructure(unstructured)) (f = , ar(1)) if qtr<=tq(1978q4) + +// predict + forecast, see above +predict predict_dfm_gen_1, dynamic(tq(1979q1)) equation(dln_inv) +predict predict_dfm_gen_2, dynamic(tq(1979q1)) equation(dln_inc) +predict predict_dfm_gen_3, dynamic(tq(1979q1)) equation(dln_consump) + +// predict + dynamic predict + forecast, see above +predict dyn_predict_dfm_gen_1, dynamic(tq(1961q1)) equation(dln_inv) +predict dyn_predict_dfm_gen_2, dynamic(tq(1961q1)) equation(dln_inc) +predict dyn_predict_dfm_gen_3, dynamic(tq(1961q1)) equation(dln_consump) + +// Dynamic factors, with AR(2) errors +dfactor (dln_inv dln_inc dln_consump = , noconstant ar(1/2)) (f = , ar(1)) if qtr<=tq(1978q4) + +// predict + forecast, see above +predict predict_dfm_ar2_1, dynamic(tq(1979q1)) equation(dln_inv) +predict predict_dfm_ar2_2, dynamic(tq(1979q1)) equation(dln_inc) +predict predict_dfm_ar2_3, dynamic(tq(1979q1)) equation(dln_consump) + +// predict + dynamic predict + forecast, see above +predict dyn_predict_dfm_ar2_1, dynamic(tq(1961q1)) equation(dln_inv) +predict dyn_predict_dfm_ar2_2, dynamic(tq(1961q1)) equation(dln_inc) +predict dyn_predict_dfm_ar2_3, dynamic(tq(1961q1)) equation(dln_consump) + +// Dynamic factors, with scalar error covariance + constant (1 exog) +// Note: estimation does not converge w/o constant term +dfactor (dln_inv dln_inc dln_consump = c, noconstant covstructure(dscalar)) (f = , ar(1)) if qtr<=tq(1978q4) + +// predict + forecast, see above +predict predict_dfm_scalar_1, dynamic(tq(1979q1)) equation(dln_inv) +predict predict_dfm_scalar_2, dynamic(tq(1979q1)) equation(dln_inc) +predict predict_dfm_scalar_3, dynamic(tq(1979q1)) equation(dln_consump) + +// predict + dynamic predict + forecast, see above +predict dyn_predict_dfm_scalar_1, dynamic(tq(1961q1)) equation(dln_inv) +predict dyn_predict_dfm_scalar_2, dynamic(tq(1961q1)) equation(dln_inc) +predict dyn_predict_dfm_scalar_3, dynamic(tq(1961q1)) equation(dln_consump) + +// Static factor (factor with no autocorrelation) +// Note: estimation does not converge w/o constant term +dfactor (dln_inv dln_inc dln_consump = , noconstant) (f = , ) if qtr<=tq(1978q4) + +// predict + forecast, see above +predict predict_sfm_1, dynamic(tq(1979q1)) equation(dln_inv) +predict predict_sfm_2, dynamic(tq(1979q1)) equation(dln_inc) +predict predict_sfm_3, dynamic(tq(1979q1)) equation(dln_consump) + +// predict + dynamic predict + forecast, see above +predict dyn_predict_sfm_1, dynamic(tq(1961q1)) equation(dln_inv) +predict dyn_predict_sfm_2, dynamic(tq(1961q1)) equation(dln_inc) +predict dyn_predict_sfm_3, dynamic(tq(1961q1)) equation(dln_consump) + +// SUR (exog, no autocorrelation, correlated innovations) +dfactor (dln_inv dln_inc dln_consump = c t, noconstant covstructure(unstructured)) if qtr<=tq(1978q4) + +// predict + forecast, see above +predict predict_sur_1, dynamic(tq(1979q1)) equation(dln_inv) +predict predict_sur_2, dynamic(tq(1979q1)) equation(dln_inc) +predict predict_sur_3, dynamic(tq(1979q1)) equation(dln_consump) + +// predict + dynamic predict + forecast, see above +predict dyn_predict_sur_1, dynamic(tq(1961q1)) equation(dln_inv) +predict dyn_predict_sur_2, dynamic(tq(1961q1)) equation(dln_inc) +predict dyn_predict_sur_3, dynamic(tq(1961q1)) equation(dln_consump) + +// SUR (exog, vector error autocorrelation, uncorrelated innovations) +dfactor (dln_inv dln_inc = c t, noconstant ar(1)) if qtr<=tq(1978q4) + +// predict + forecast, see above +predict predict_sur_auto_1, dynamic(tq(1979q1)) equation(dln_inv) +predict predict_sur_auto_2, dynamic(tq(1979q1)) equation(dln_inc) + +// predict + dynamic predict + forecast, see above +predict dyn_predict_sur_auto_1, dynamic(tq(1961q1)) equation(dln_inv) +predict dyn_predict_sur_auto_2, dynamic(tq(1961q1)) equation(dln_inc) + +outsheet pred* dyn* using results_dynamic_factor_stata.csv, comma replace diff --git a/statsmodels/tsa/statespace/tests/results/test_exact_diffuse_filtering.R b/statsmodels/tsa/statespace/tests/results/test_exact_diffuse_filtering.R new file mode 100644 index 0000000..f8f5719 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_exact_diffuse_filtering.R @@ -0,0 +1,147 @@ +library(KFAS) +library(plyr) +options(digits=10) + +# should run this from the statsmodels/statsmodels directory +setwd('~/projects/statsmodels-0.9/statsmodels/') +dta <- read.csv('datasets/macrodata/macrodata.csv') + +cbind.fill <- function(...){ + nm <- list(...) + nm <- lapply(nm, as.matrix) + n <- max(sapply(nm, nrow)) + do.call(cbind, lapply(nm, function (x) + rbind(x, matrix(, n-nrow(x), ncol(x))))) +} + +output <- function(kf) { + # Dimensions + n = nrow(kf$model$y) + p = ncol(kf$model$y) + m = nrow(kf$model$T) + r = nrow(kf$model$Q) + + # Construct the output dataframe + # r = scaled_smoothed_estimator + # N = scaled_smoothed_estimator_cov + # m = forecasts + # v = forecasts_error + # F = forecasts_error_cov + # a = predicted_state + # P = predicted_state_cov + # mu = filtered_forecasts + # alphahat = smoothed_state + # V = smoothed_state_cov + # muhat = smoothed_forecasts + # etahat = smoothed_state_disturbance + # V_eta = smoothed_state_disturbance_cov + # epshat = smoothed_measurement_disturbance + # V_eps = smoothed_measurement_disturbance_cov + out <- as.data.frame(with(kf, cbind.fill( + t(r), t(r0), t(r1), + apply(N, 3, sum), apply(N0, 3, sum), apply(N1, 3, sum), apply(N2, 3, sum), + m, v, t(F), t(Finf), + a, apply(P, 3, sum), apply(Pinf, 3, sum), + att, apply(Ptt, 3, sum), + alphahat, apply(V, 3, sum), + muhat, apply(V_mu, 3, sum), + etahat, apply(V_eta, 3, sum), + epshat, t(V_eps), + logLik + ))) + names(out) <- c( + paste('r', 1:m, sep='_'), paste('r0', 1:m, sep='_'), paste('r1', 1:m, sep='_'), + 'sumN', 'sumN0', 'sumN1', 'sumN2', + paste('m', 1:p, sep='_'), paste('v', 1:p, sep='_'), paste('F', 1:p, sep='_'), paste('Finf', 1:p, sep='_'), + paste('a', 1:m, sep='_'), 'sumP', 'sumPinf', + paste('att', 1:m, sep='_'), 'sumPtt', + paste('alphahat', 1:m, sep='_'), 'sumV', + paste('muhat', 1:p, sep='_'), 'sumVmu', + paste('etahat', 1:r, sep='_'), 'sumVeta', + paste('epshat', 1:p, sep='_'), paste('Veps', 1:p, sep='_'), + 'llf' + ) + return(out) +} + +llf <- function(kf) { + # Dimensions + n = nrow(kf$model$y) + p = ncol(kf$model$y) + m = nrow(kf$model$T) + r = nrow(kf$model$Q) + d = kf$d + F = kf$F + Finf = kf$Finf + v = kf$v + + -((n * p / 2) * log(pi * 2) + + 0.5 * sum(log(Finf[1:d])) + + 0.5 * sum(log(F[(d+1):10]) + (v^2 / t(F))[(d+1):10])) +} + +# Local level +y1 <- 10.2394 +sigma2_y <- 1.993 +sigma2_mu <- 8.253 +obs <- c(c(y1), rep(1, 9)) +mod <- SSModel(obs ~ -1 + SSMcustom(Z=diag(1), T=diag(1), R=diag(1), Q=diag(1) * sigma2_mu, P1=diag(1) * 1e6), H=diag(1) * sigma2_y) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +write.csv(output(kf), 'tsa/statespace/tests/results/results_exact_initial_local_level_R.csv', row.names=FALSE) +# Note: Apparent loglikelihood discrepancy +print(llf(kf)) # -22.97437545 +print(kf$logLik) # -21.13649839 +print(-22.97437545 - -21.13649839) / kf$d # -0.9189385332 +print(-0.5 * log(pi * 2)) # -0.9189385332 + +# Local linear trend +y1 <- 10.2394 +y2 <- 4.2039 +y3 <- 6.123123 +sigma2_y <- 1.993 +sigma2_mu <- 8.253 +sigma2_beta <- 2.334 +obs <- c(c(y1, y2, y3), rep(1, 7)) +mod <- SSModel(obs ~ -1 + SSMcustom(Z=t(as.matrix(c(1, 0))), T=as.matrix(cbind(c(1., 0), c(1, 1))), R=diag(2), Q=diag(c(sigma2_mu, sigma2_beta)), P1inf=diag(2)), H=diag(1) * sigma2_y) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +write.csv(output(kf), 'tsa/statespace/tests/results/results_exact_initial_local_linear_trend_R.csv', row.names=FALSE) + +# Local linear trend - missing +obs[2] <- NA +mod <- SSModel(obs ~ -1 + SSMcustom(Z=t(as.matrix(c(1, 0))), T=as.matrix(cbind(c(1., 0), c(1, 1))), R=diag(2), Q=diag(c(sigma2_mu, sigma2_beta)), P1inf=diag(2)), H=diag(1) * sigma2_y) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +write.csv(output(kf), 'tsa/statespace/tests/results/results_exact_initial_local_linear_trend_missing_R.csv', row.names=FALSE) + + +# Common level +y11 <- 10.2394 +y21 <- 8.2304 +theta <- 0.1111 +sigma2_1 <- 1 +sigma_12 <- 0 +sigma2_2 <- 1 +sigma2_mu <- 3.2324 +obs <- cbind( + c(c(y11), rep(1, 9)), + c(c(y21), rep(1, 9)) +) +mod <- SSModel(obs ~ -1 + SSMcustom( + Z=as.matrix(cbind(c(1., theta), c(0, 1))), + T=diag(2), + R=as.matrix(c(1, 0)), + Q=diag(1) * sigma2_mu, + P1inf=diag(2)), + H=diag(2)) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +write.csv(output(kf), 'tsa/statespace/tests/results/results_exact_initial_common_level_R.csv', row.names=FALSE) + +# Common level - restricted +mod <- SSModel(obs ~ -1 + SSMcustom( + Z=as.matrix(c(1, theta)), + T=diag(1), + R=diag(1), + Q=diag(1) * sigma2_mu, + P1inf=diag(1)), + H=diag(2)) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +write.csv(output(kf), 'tsa/statespace/tests/results/results_exact_initial_common_level_restricted_R.csv', row.names=FALSE) diff --git a/statsmodels/tsa/statespace/tests/results/test_exact_diffuse_filtering_multivariate.R b/statsmodels/tsa/statespace/tests/results/test_exact_diffuse_filtering_multivariate.R new file mode 100644 index 0000000..b0be7e2 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_exact_diffuse_filtering_multivariate.R @@ -0,0 +1,50 @@ +library(KFAS) +options(digits=10) + +# should run this from the statsmodels/statsmodels directory +setwd('~/projects/statsmodels-0.9/statsmodels/') +dta <- read.csv('datasets/macrodata/macrodata.csv') +source('tsa/statespace/tests/results/kfas_helpers.R') + +# We use the following two observation datasets +obs <- (diff(log(data.matrix(dta[c('realgdp', 'realcons')]))) * 400)[1:20,] +obs_missing <- obs +obs_missing[1:5,1] <- NA +obs_missing[9:12,] <- NA + +# VAR(1) +Z <- diag(2) +T <- as.matrix(cbind(c(0.5, 0.2), c(0.3, 0.4))) +R <- diag(2) +Q <- diag(c(2, 3)) +H <- diag(2) * 0 +mod <- SSModel(obs ~ -1 + SSMcustom(Z=Z, T=T, R=R, Q=Q, P1inf=diag(2)), H=H) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +write.csv(kfas.output(kf), 'tsa/statespace/tests/results/results_exact_initial_var1_R.csv', row.names=FALSE) + +# VAR(1) + missing +mod <- SSModel(obs_missing ~ -1 + SSMcustom(Z=Z, T=T, R=R, Q=Q, P1inf=diag(2)), H=H) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +write.csv(kfas.output(kf), 'tsa/statespace/tests/results/results_exact_initial_var1_missing_R.csv', row.names=FALSE) + +# VAR(1) + mixed initialization +stationary_init <- 3.5714285714285716 +mod <- SSModel(obs ~ -1 + SSMcustom(Z=Z, T=T, R=R, Q=Q, P1inf=diag(c(1, 0)), P1=diag(c(0, stationary_init))), H=H) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +write.csv(kfas.output(kf), 'tsa/statespace/tests/results/results_exact_initial_var1_mixed_R.csv', row.names=FALSE) + +# VAR(1) + measurement error +H <- diag(c(4, 5)) +mod <- SSModel(obs ~ -1 + SSMcustom(Z=Z, T=T, R=R, Q=Q, P1inf=diag(2)), H=H) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +write.csv(kfas.output(kf), 'tsa/statespace/tests/results/results_exact_initial_var1_measurement_error_R.csv', row.names=FALSE) + +# DFM +Z <- matrix(c(0.5, 1, 0, 0), nrow=2) +T <- matrix(c(0.9, 1, 0.1, 0), nrow=2) +R <- matrix(c(1, 0), nrow=2) +Q <- diag(1) +H <- diag(c(1.5, 2)) +mod <- SSModel(obs ~ -1 + SSMcustom(Z=Z, T=T, R=R, Q=Q, P1inf=diag(2)), H=H) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +write.csv(kfas.output(kf), 'tsa/statespace/tests/results/results_exact_initial_dfm_R.csv', row.names=FALSE) diff --git a/statsmodels/tsa/statespace/tests/results/test_exact_diffuse_filtering_stata.do b/statsmodels/tsa/statespace/tests/results/test_exact_diffuse_filtering_stata.do new file mode 100644 index 0000000..05696c3 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_exact_diffuse_filtering_stata.do @@ -0,0 +1,143 @@ +// Local level +clear +input x t +10.2394 1 +1 2 +1 3 +1 4 +1 5 +1 6 +1 7 +1 8 +1 9 +1 10 +end +tsset t + +matrix define b0 = (8.253, 1.993) +ucm x, model(llevel) from(b0) iterate(0) + +// e(ll) = -23.9352603142740605 +disp %20.19g e(ll) + +// Local linear trend +clear +input x t +10.2394 1 +4.2039 2 +6.123123 3 +1 4 +1 5 +1 6 +1 7 +1 8 +1 9 +1 10 +end +tsset t + +matrix define b0 = (8.253, 2.334, 1.993) +ucm x, model(lltrend) from(b0) iterate(0) + +// e(ll) = -22.9743755748041529 +disp %20.19g e(ll) + + +// Local linear trend + missing +// Have to skip this since Stata doesn't allow missing values, even using sspace +// clear +// input x t +// 10.2394 1 +// . 2 +// 6.123123 3 +// 1 4 +// 1 5 +// 1 6 +// 1 7 +// 1 8 +// 1 9 +// 1 10 +// end +// tsset t +// +// constraint 1 [x]u1 = 1 +// constraint 2 [u1]L.u1 = 1 +// constraint 3 [u1]L.u2 = 1 +// constraint 4 [u2]L.u2 = 1 +// +// matrix define b0 = (1, 1, 1, 1, 8.253, 2.334, 1.993) +// sspace (u1 L.u1 L.u2, state noconstant) /// +// (u2 L.u2, state noconstant) /// +// (x u1, noconstant), /// +// constraints(1/4) covstate(diagonal) /// +// from(b0) iterate(0) +// +// disp %20.19g e(ll) + +// Common trend +clear +input y1 y2 t +10.2394 8.2304 1 +1 1 2 +1 1 3 +1 1 4 +1 1 5 +1 1 6 +1 1 7 +1 1 8 +1 1 9 +1 1 10 +end +tsset t + +constraint 1 [y1]u1 = 1 +constraint 2 [y2]u2 = 1 +constraint 3 [u1]L.u1 = 1 +constraint 4 [u2]L.u2 = 1 + +matrix define b0 = (1, 1, 1, 0.1111, 1, 3.2324, 1, 1) +sspace (u1 L.u1, state noconstant) /// + (u2 L.u2, state noconstant noerror) /// + (y1 u1, noconstant) /// + (y2 u1 u2, noconstant), /// + constraints(1/4) covstate(diagonal) /// + from(b0) iterate(0) + +// -53.7830389463984773 +disp %20.19g e(ll) + +// Dynamic Factor Model +clear +input y1 y2 t +9.9768523266 6.1144429663 1 +-0.4771808443 4.1543910949 2 +1.3978130617 0.4336043785 3 +8.8760718057 3.8136603507 4 +-1.8738213131 5.0289712198 5 +0.6531520756 -1.5871706073 6 +-5.1625439784 0.5372132872 7 +2.3690365022 -0.1118599521 8 +7.4138136616 5.9079363820 9 +6.4126556647 1.9354521733 10 +8.0611264188 7.9292248028 11 +7.1109037147 4.2364664530 12 +4.3922061400 4.8864935148 13 +3.6816268854 3.2248106820 14 +0.9708074857 5.6330208687 15 +5.1940841814 2.6849177229 16 +4.9811338373 3.8017109128 17 +7.4616162956 5.4061666493 18 +3.0295447157 3.3396476674 19 +8.8783455475 7.8216699141 20 +end +tsset t + +constraint 1 [u2]L.u1 = 1 + +matrix define b0 = (0.9, 0.1, 1, 0.5, 1, 1, 1.5, 2.) +sspace (u1 L.u1 L.u2, state noconstant) /// + (u2 L.u1, state noconstant noerror) /// + (y1 u1, noconstant) /// + (y2 u1, noconstant), /// + constraints(1) covstate(diagonal) /// + from(b0) iterate(0) diff --git a/statsmodels/tsa/statespace/tests/results/test_intercepts.R b/statsmodels/tsa/statespace/tests/results/test_intercepts.R new file mode 100644 index 0000000..e3b18e9 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_intercepts.R @@ -0,0 +1,70 @@ +library(KFAS) +library(MARSS) +options(digits=20) + +# should run this from the statsmodels/statsmodels directory +dta <- read.csv('datasets/macrodata/macrodata.csv') + +obs <- data.matrix(dta[c('realgdp','realcons','realinv')]) +obs[,1] <- obs[,1] / sd(obs[,1], na.rm=TRUE) +obs[,2] <- obs[,2] / sd(obs[,2], na.rm=TRUE) +obs[,3] <- obs[,3] / sd(obs[,3], na.rm=TRUE) + +obs[1:50,1] <- NA +obs[20:70,2] <- NA +obs[40:90,3] <- NA +obs[120:130,1] <- NA +obs[120:130,3] <- NA + +Z <- diag(3) +H <- diag(3) +T <- diag(3) +R <- diag(3) +Q <- diag(3) +P0 <- diag(3) * 1e6 + +d <- matrix(c(1,2,3),3,1) +c <- matrix(c(4,5,6),3,1) + +ss <- list(Z=Z, R=H, B=T, Q=Q, V0=P0, A=d, U=c, x0="zero", tinitx=1) +marssmod <- MARSS(t(obs), model=ss) +marssout <- MARSSkfas(marssmod, return.kfas.model=TRUE) +kf <- KFS(marssout$kfas.model, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) + +# kf$logLik # -7924.03893566 + +# r = scaled_smoothed_estimator +# N = scaled_smoothed_estimator_cov +# m = forecasts +# v = forecasts_error +# F = forecasts_error_cov +# a = predicted_state +# P = predicted_state_cov +# mu = filtered_forecasts +# alphahat = smoothed_state +# V = smoothed_state_cov +# muhat = smoothed_forecasts +# etahat = smoothed_state_disturbance +# V_eta = smoothed_state_disturbance_cov +# epshat = smoothed_measurement_disturbance +# V_eps = smoothed_measurement_disturbance_cov + +out <- as.data.frame(with(kf, cbind( + t(r)[2:204,1:3], apply(N[1:3,1:3,], 3, det)[2:204], + m, apply(P_mu, 3, det), v, t(F), + a[2:204,1:3], apply(P[1:3,1:3,], 3, det)[2:204], + alphahat[,1:3], apply(V[1:3,1:3,], 3, det), + muhat, apply(V_mu, 3, det), + etahat[,1:3], apply(V_eta[1:3,1:3,], 3, det), epshat, t(V_eps) +))) +names(out) <- c( + "r1", "r2", "r3", "detN", + "m1", "m2", "m3", "detPmu", + "v1", "v2", "v3", "F1", "F2", "F3", + "a1", "a2", "a3", "detP", + "alphahat1", "alphahat2", "alphahat3", "detV", + "muhat1", "muhat2", "muhat3", "detVmu", + "etahat1", "etahat2", "etahat3", "detVeta", + "epshat1", "epshat2", "epshat3", "Veps1", "Veps2", "Veps3" +) +write.csv(out, 'tsa/statespace/tests/results/results_intercepts_R.csv', row.names=FALSE) diff --git a/statsmodels/tsa/statespace/tests/results/test_realgdpar_r.R b/statsmodels/tsa/statespace/tests/results/test_realgdpar_r.R new file mode 100644 index 0000000..6725f08 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_realgdpar_r.R @@ -0,0 +1,51 @@ +library(FKF) + +# Observations +df <- read.csv("results_kalman_filter_stata.csv") +gdp = df$value +lgdp = log(gdp) +dlgdp = diff(lgdp) + +# Stata parameters +params <- c( + 0.40725515, 0.18782621, -0.01514009, -0.01027267, -0.03642297, 0.11576416, + 0.02573029, -.00766572, 0.13506498, 0.08649569, 0.06942822, -0.10685783, + 0.00008 +) + +# Measurement equation +n = 1 +H = matrix(rep(0, 12), nrow=1) +H[1,1] = 1 +R = matrix(c(0), nrow=1) + +# Transition equation +k = 12 +mu = matrix(rep(0,k), nrow=k) +F = matrix(rep(0,k*k), nrow=k) +for (i in 1:11) { + F[i+1,i] = 1 +} + +# Q = G Q_star G' +Q = matrix(rep(0,k*k), nrow=k) + +# Update matrices with given parameters +F[1,1:12] = params[1:12] +Q[1,1] = params[13] + +# Initialization: Unconditional mean priors +initial_state = c(solve(diag(k) - F) %*% mu) +initial_state_cov = solve(diag(k^2) - F %x% F) %*% matrix(c(Q)) +dim(initial_state_cov) <- c(k,k) + +# Filter +ans <- fkf(a0=initial_state, P0=initial_state_cov, + dt=mu, ct=matrix(0), Tt=F, Zt=H, + HHt=Q, GGt=R, yt=rbind(dlgdp)) + +write.csv(t(ans$att), 'results_states_gdp_R.csv', row.names=FALSE) +unlink('results_states_cov_gdp_R.csv') +for (t in 1:length(dlgdp)) { + write.table(t(ans$Ptt[,,t]), 'results_states_cov_gdp_R.csv', sep=",", append=TRUE, row.names=FALSE) +} \ No newline at end of file diff --git a/statsmodels/tsa/statespace/tests/results/test_realgdpar_stata.do b/statsmodels/tsa/statespace/tests/results/test_realgdpar_stata.do new file mode 100644 index 0000000..214dddd --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_realgdpar_stata.do @@ -0,0 +1,70 @@ +clear +insheet using results_realgdpar_stata.csv +keep value + +gen lgdp = log(value) +gen dlgdp = lgdp - lgdp[_n-1] +gen quarter = _n +tsset quarter + +// Estimate an ARMA(3,0) +arima dlgdp if ~missing(dlgdp), arima(3,0,0) noconstant +matrix b = e(b) +matrix b = (b[1,1..3],1,1,1,b[1,4]^2) + +// Estimate via a state-space model +constraint 1 [dlgdp]u1 = 1 +constraint 2 [u2]L.u1 = 1 +constraint 3 [u3]L.u2 = 1 + +sspace (u1 L.u1 L.u2 L.u3, state noconstant) /// + (u2 L.u1, state noconstant noerror) /// + (u3 L.u2, state noconstant noerror) /// + (dlgdp u1, noconstant noerror) if ~missing(dlgdp), /// + constraints(1/3) covstate(diagonal) from(b) + +// Estimate an ARMA(12,0) +arima dlgdp if ~missing(dlgdp), arima(12,0,0) noconstant +matrix b = e(b) +matrix b = (b[1,1..12],1,1,1, 1,1,1, 1,1,1, 1,1,1,b[1,13]^2) + +// Estimate via a state-space model +constraint 1 [dlgdp]u1 = 1 +constraint 2 [u2]L.u1 = 1 +constraint 3 [u3]L.u2 = 1 +constraint 4 [u4]L.u3 = 1 +constraint 5 [u5]L.u4 = 1 +constraint 6 [u6]L.u5 = 1 +constraint 7 [u7]L.u6 = 1 +constraint 8 [u8]L.u7 = 1 +constraint 9 [u9]L.u8 = 1 +constraint 10 [u10]L.u9 = 1 +constraint 11 [u11]L.u10 = 1 +constraint 12 [u12]L.u11 = 1 + +sspace (u1 L.u1 L.u2 L.u3 L.u4 L.u5 L.u6 L.u7 L.u8 L.u9 L.u10 L.u11 L.u12, state noconstant) /// + (u2 L.u1, state noconstant noerror) /// + (u3 L.u2, state noconstant noerror) /// + (u4 L.u3, state noconstant noerror) /// + (u5 L.u4, state noconstant noerror) /// + (u6 L.u5, state noconstant noerror) /// + (u7 L.u6, state noconstant noerror) /// + (u8 L.u7, state noconstant noerror) /// + (u9 L.u8, state noconstant noerror) /// + (u10 L.u9, state noconstant noerror) /// + (u11 L.u10, state noconstant noerror) /// + (u12 L.u11, state noconstant noerror) /// + (dlgdp u1, noconstant noerror) if ~missing(dlgdp), /// + constraints(1/12) covstate(diagonal) from (b) + +// Save the estimated states +predict est_u1-est_u12, states equation(u1 u2 u3 u4 u5 u6 u7 u8 u9 u10 u11 u12) + +// Save the filtered states +predict u1-u12, states equation(u1 u2 u3 u4 u5 u6 u7 u8 u9 u10 u11 u12) smethod(filter) + +// Save the standardized residuals +predict rstd, rstandard + +// Output +outsheet value u1-u12 est_u1-est_u12 rstd using results_realgdpar_stata.csv, comma replace diff --git a/statsmodels/tsa/statespace/tests/results/test_sarimax_coverage.do b/statsmodels/tsa/statespace/tests/results/test_sarimax_coverage.do new file mode 100644 index 0000000..90a5ae9 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_sarimax_coverage.do @@ -0,0 +1,273 @@ +// Dataset +use https://www.stata-press.com/data/r12/wpi1, clear +rename t time + +set more off +set maxiter 100 + +// 25, 43, 48, 52 + +// Create data for exog test +gen x = (wpi - floor(wpi))^2 + +// Create data for deterministic trend tests +gen c = 1 +gen t = _n +gen t2 = t^2 +gen t3 = t^3 + +// Dummy column for saving LLFs +gen mod = "" +gen llf = . +gen parameters = "" + +// Program to save the results +program drop save_results +program save_results + args i + replace mod = e(cmdline) in `i' + replace llf = e(ll) in `i' + + matrix b = e(b) + local params = "" + local params = string(b[1,1]) + local nparams = e(k) + if `nparams' > 1 { + foreach j of numlist 2/`nparams' { + local params = "`params'," + string(b[1,`j']) + } + } + replace parameters = "`params'" in `i' +end + +// AR: (p,0,0) x (0,0,0,0) +capture arima wpi, arima(3,0,0) noconstant vce(oim) +save_results 1 + +// AR and deterministic trends ('nc', 'c', 'ct', polynomial) + +// 'c' +capture arima wpi c, arima(3,0,0) noconstant vce(oim) +save_results 2 + +// 'ct' +capture arima wpi c t, arima(3,0,0) noconstant vce(oim) +save_results 3 + +// polynomial [1,0,0,1] +capture arima wpi c t3, arima(3,0,0) noconstant vce(oim) +save_results 4 + +// AR and I(d): (p,d,0) x (0,0,0,0) +capture arima wpi, arima(3,2,0) noconstant vce(oim) +save_results 5 + +// AR and I(D): (p,0,0) x (0,D,0,s) +capture arima wpi, arima(3,0,0) sarima(0,2,0,4) noconstant vce(oim) +save_results 6 + +// AR and diffuse initialization +capture arima wpi, arima(3,0,0) noconstant vce(oim) diffuse +save_results 7 + +// ARX +capture arima wpi x, arima(3,0,0) noconstant vce(oim) +save_results 8 + +// MA: (0,0,q) x (0,0,0,0) +capture arima wpi, arima(0,0,3) noconstant vce(oim) +save_results 9 + +// MA and deterministic trends ('nc', 'c', 'ct', polynomial) + +// 'c' +capture arima wpi c, arima(0,0,3) noconstant vce(oim) +save_results 10 + +// 'ct' +capture arima wpi c t, arima(0,0,3) noconstant vce(oim) +save_results 11 + +// polynomial [1,0,0,1] +capture arima wpi c t3, arima(0,0,3) noconstant vce(oim) +save_results 12 + +// MA and I(d): (0,d,q) x (0,0,0,0) +capture arima wpi, arima(0,2,3) noconstant vce(oim) +save_results 13 + +// MA and I(D): (p,0,0) x (0,D,0,s) +capture arima wpi, arima(0,0,3) sarima(0,2,0,4) noconstant vce(oim) +save_results 14 + +// MA and diffuse initialization +capture arima wpi, arima(0,0,3) noconstant vce(oim) diffuse +save_results 15 + +// MAX +capture arima wpi x, arima(0,0,3) noconstant vce(oim) +save_results 16 + + +// ARMA: (p,0,q) x (0,0,0,0) +capture arima wpi, arima(3,0,3) noconstant vce(oim) +save_results 17 + +// ARMA and deterministic trends ('nc', 'c', 'ct', polynomial) + +// 'c' +capture arima wpi c, arima(3,0,2) noconstant vce(oim) +save_results 18 + +// 'ct' +capture arima wpi c t, arima(3,0,2) noconstant vce(oim) +save_results 19 + +// polynomial [1,0,0,1] +capture arima wpi c t3, arima(3,0,2) noconstant vce(oim) +save_results 20 + +// ARMA and I(d): (p,d,q) x (0,0,0,0) +capture arima wpi, arima(3,2,2) noconstant vce(oim) +save_results 21 + +// ARMA and I(D): (p,0,q) x (0,D,0,s) +capture arima wpi, arima(3,0,2) sarima(0,2,0,4) noconstant vce(oim) +save_results 22 + +// ARMA and I(d) and I(D): (p,d,q) x (0,D,0,s) +capture arima wpi, arima(3,2,2) sarima(0,2,0,4) noconstant vce(oim) +save_results 23 + +// ARMA and diffuse initialization +capture arima wpi, arima(3,0,2) noconstant vce(oim) diffuse +save_results 24 + +// ARMAX +capture arima wpi x, arima(3,0,2) noconstant vce(oim) +save_results 25 + +// SAR: (0,0,0) x (P,0,0,s) +capture arima wpi, sarima(3,0,0,4) noconstant vce(oim) +save_results 26 + +// SAR and deterministic trends ('nc', 'c', 'ct', polynomial) + +// 'c' +capture arima wpi c, sarima(3,0,0,4) noconstant vce(oim) +save_results 27 + +// 'ct' +capture arima wpi c t, sarima(3,0,0,4) noconstant vce(oim) +save_results 28 + +// polynomial [1,0,0,1] +capture arima wpi c t3, sarima(3,0,0,4) noconstant vce(oim) +save_results 29 + +// SAR and I(d): (0,d,0) x (P,0,0,s) +capture arima wpi, arima(0,2,0) sarima(3,0,0,4) noconstant vce(oim) +save_results 30 + +// SAR and I(D): (0,0,0) x (P,D,0,s) +capture arima wpi, sarima(3,2,0,4) noconstant vce(oim) +save_results 31 + +// SAR and diffuse initialization +capture arima wpi, sarima(3,0,0,4) noconstant vce(oim) diffuse +save_results 32 + +// SARX +capture arima wpi x, sarima(3,0,0,4) noconstant vce(oim) +save_results 33 + +// SMA +capture arima wpi, sarima(0,0,3,4) noconstant vce(oim) +save_results 34 + +// SMA and deterministic trends ('nc', 'c', 'ct', polynomial) + +// 'c' +capture arima wpi c, sarima(0,0,3,4) noconstant vce(oim) +save_results 35 + +// 'ct' +capture arima wpi c t, sarima(0,0,3,4) noconstant vce(oim) +save_results 36 + +// polynomial [1,0,0,1] +capture arima wpi c t3, sarima(0,0,3,4) noconstant vce(oim) +save_results 37 + +// SMA and I(d): (0,d,0) x (0,0,Q,s) +capture arima wpi, arima(0,2,0) sarima(0,0,3,4) noconstant vce(oim) +save_results 38 + +// SAR and I(D): (0,0,0) x (0,D,Q,s) + +capture arima wpi, sarima(0,2,3,4) noconstant vce(oim) +save_results 39 + +// SMA and diffuse initialization +capture arima wpi, sarima(0,0,3,4) noconstant vce(oim) diffuse +save_results 40 + +// SMAX +capture arima wpi x, sarima(0,0,3,4) noconstant vce(oim) +save_results 41 + +// SARMA: (0,0,0) x (P,0,Q,s) +capture arima wpi, sarima(3,0,2,4) noconstant vce(oim) +save_results 42 + +// SARMA and deterministic trends ('nc', 'c', 'ct', polynomial) + +// 'c' +capture arima wpi c, sarima(3,0,2,4) noconstant vce(oim) +save_results 43 + +// 'ct' +capture arima wpi c t, sarima(3,0,2,4) noconstant vce(oim) +save_results 44 + +// polynomial [1,0,0,1] +capture arima wpi c t3, sarima(3,0,2,4) noconstant vce(oim) +save_results 45 + +// SARMA and I(d): (0,d,0) x (P,0,Q,s) +capture arima wpi, arima(0,2,0) sarima(3,0,2,4) noconstant vce(oim) +save_results 46 + +// SARMA and I(D): (0,0,0) x (P,D,Q,s) +capture arima wpi, sarima(3,2,2,4) noconstant vce(oim) +save_results 47 + +// SARMA and I(d) and I(D): (0,d,0) x (P,D,Q,s) +capture arima wpi, arima(0,2,0) sarima(3,2,2,4) noconstant vce(oim) +save_results 48 + +// SARMA and diffuse initialization +capture arima wpi, sarima(3,0,2,4) noconstant vce(oim) diffuse +save_results 49 + +// SARMAX +capture arima wpi x, sarima(3,0,2,4) noconstant vce(oim) +save_results 50 + +// SARIMAX and exogenous +capture arima wpi x, arima(3,2,2) sarima(3,2,2,4) noconstant vce(oim) +save_results 51 + +// SARIMAX and exogenous and diffuse +capture arima wpi x, arima(3,2,2) sarima(3,2,2,4) noconstant vce(oim) diffuse +save_results 52 + +// ARMA and exogenous and trend polynomial and missing +gen wpi2 = wpi +gen t32 = (t-1)^3 +replace wpi2 = . in 10/19 +capture arima D.wpi2 t32 x, arima(3,0,2) noconstant vce(oim) +save_results 53 + +// Write results +outsheet mod llf parameters using "results_sarimax_coverage.csv" in 1/53, comma replace diff --git a/statsmodels/tsa/statespace/tests/results/test_sarimax_stata.do b/statsmodels/tsa/statespace/tests/results/test_sarimax_stata.do new file mode 100644 index 0000000..c6a69aa --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_sarimax_stata.do @@ -0,0 +1,56 @@ +// Example 1: ARIMA model +use https://www.stata-press.com/data/r12/wpi1, clear +arima wpi, arima(1,1,1) vce(opg) +arima wpi, arima(1,1,1) vce(oim) +arima wpi, arima(1,1,1) vce(robust) +arima wpi, arima(1,1,1) diffuse vce(opg) +arima wpi, arima(1,1,1) diffuse vce(oim) + +// Estimate via a state-space model +constraint 1 [D.wpi]u1 = 1 +constraint 2 [u2]L.u1 = 1 +constraint 3 [u3]L.u2 = 1 + +sspace (u1 L.u1 L.u2 L.u3, state noconstant) /// + (u2 L.u1, state noconstant noerror) /// + (u3 L.u2, state noconstant noerror) /// + (D.wpi u1, noconstant noerror), /// + constraints(1/3) covstate(diagonal) + +predict dep + + +// Example 2: ARIMA model with additive seasonal effects +arima D.ln_wpi, ar(1) ma(1 4) vce(opg) +arima D.ln_wpi, ar(1) ma(1 4) vce(oim) + +// Example 3: Multiplicative SARIMA model +use https://www.stata-press.com/data/r12/air2, clear +generate lnair = ln(air) +arima lnair, arima(0,1,1) sarima(0,1,1,12) noconstant vce(opg) +arima lnair, arima(0,1,1) sarima(0,1,1,12) noconstant vce(oim) + +// Example 4: ARMAX model +use https://www.stata-press.com/data/r12/friedman2, clear +arima consump m2 if tin(, 1981q4), ar(1) ma(1) vce(opg) +arima consump m2 if tin(, 1981q4), ar(1) ma(1) vce(oim) + +// Predict - Example 1: Predict, dynamic forecasts +use https://www.stata-press.com/data/r12/friedman2, clear +keep if time<=tq(1981q4) +arima consump m2 if tin(, 1978q1), ar(1) ma(1) +predict chat, y +predict chatdy, dynamic(tq(1978q1)) y + +// Predict - Example 1, part 2: Forecasts +// Note: in the previous example, because `consump` +// was still non-missing for the "out-of-sample" component, it simply +// amounts to in-sample prediction with fixed parameter (that happen +// to have been defined by MLE on a subset of the observations) +// Here make those observations missing so that we get true forecasts. +use https://www.stata-press.com/data/r12/friedman2, clear +keep if time<=tq(1981q4) & time>=tq(1959q1) +arima consump m2 if tin(, 1978q1), ar(1) ma(1) +replace consump = . if time>tq(1978q1) +predict chat, y +predict chatdy, dynamic(tq(1978q1)) y diff --git a/statsmodels/tsa/statespace/tests/results/test_simulation_smoothing.R b/statsmodels/tsa/statespace/tests/results/test_simulation_smoothing.R new file mode 100644 index 0000000..d1dab5b --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_simulation_smoothing.R @@ -0,0 +1,238 @@ +library(KFAS) +options(digits=10) + +# should run this from the statsmodels/statsmodels directory +dta <- read.csv('datasets/macrodata/macrodata.csv') +obs <- diff(log(data.matrix(dta[c('realgdp','realcons','realinv')])))[1:9,] + +T <- t(matrix( + c(-0.1119908792, 0.8441841604, 0.0238725303, + 0.2629347724, 0.4996718412, -0.0173023305, + -3.2192369082, 4.1536028244, 0.4514379215), nrow=3, ncol=3)) +Q <- t(matrix( + c(0.0000640649, 0.0000388496, 0.0002148769, + 0.0000388496, 0.0000572802, 0.000001555, + 0.0002148769, 0.000001555, 0.0017088585), nrow=3, ncol=3)) +H <- t(matrix( + c(0.0000640649, 0., 0., + 0., 0.0000572802, 0., + 0., 0., 0.0017088585), nrow=3, ncol=3)) + +mod <- SSModel(obs ~ -1 + SSMcustom(Z=diag(3), T=T, R=diag(3), Q=Q, P1=diag(3)*1e6), H=H) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +kf$logLik # 39.01246166 + +# - Test 0 ------------------------------------------------------------------ # + +# use fixInNamespace(simHelper, 'KFAS') to set u to zeros +# u <- rep(0, dfu * nsim) +set.seed(1234) +sim_eta <- simulateSSM(mod, type=c("eta")) +sim_eps <- simulateSSM(mod, type=c("epsilon")) +sim_state <- simulateSSM(mod, type=c("states")) +sim_signal <- simulateSSM(mod, type=c("signals")) + +out <- as.data.frame(list(sim_eta, sim_eps, sim_state, sim_signal)) +names(out) <- c( + 'eta1', 'eta2', 'eta3', + 'eps1', 'eps2', 'eps3', + 'state1', 'state2', 'state3', + 'signal1', 'signal2', 'signal3' +) + +write.csv(out, 'tsa/statespace/tests/results/results_simulation_smoothing0.csv', row.names=FALSE) + +# - Test 1 ------------------------------------------------------------------ # + +# use fixInNamespace(simHelper, 'KFAS') to set u to zeros, except set eps +# variates to arange / 10 +# u[1:(dfeps * nsim)] = (0:(dfeps * nsim - 1))/10 +set.seed(1234) +sim_eta <- simulateSSM(mod, type=c("eta")) +sim_eps <- simulateSSM(mod, type=c("epsilon")) +sim_state <- simulateSSM(mod, type=c("states")) +sim_signal <- simulateSSM(mod, type=c("signals")) + +out <- as.data.frame(list(sim_eta, sim_eps, sim_state, sim_signal)) +names(out) <- c( + 'eta1', 'eta2', 'eta3', + 'eps1', 'eps2', 'eps3', + 'state1', 'state2', 'state3', + 'signal1', 'signal2', 'signal3' +) + +write.csv(out, 'tsa/statespace/tests/results/results_simulation_smoothing1.csv', row.names=FALSE) + +# - Test 2 ------------------------------------------------------------------ # + +# use fixInNamespace(simHelper, 'KFAS') to set a1plus to zeros, set eps and eta +# variates to arange / 10 +# u[1:(dfeps * nsim)] = (0:(dfeps * nsim - 1))/10 +# u[(dfeps * nsim + 1):(dfeps * nsim + dfeta * nsim)] = (0:(dfeps * nsim - 1))/10 +set.seed(1234) +sim_eta <- simulateSSM(mod, type=c("eta")) +sim_eps <- simulateSSM(mod, type=c("epsilon")) +sim_state <- simulateSSM(mod, type=c("states")) +sim_signal <- simulateSSM(mod, type=c("signals")) + +out <- as.data.frame(list(sim_eta, sim_eps, sim_state, sim_signal)) +names(out) <- c( + 'eta1', 'eta2', 'eta3', + 'eps1', 'eps2', 'eps3', + 'state1', 'state2', 'state3', + 'signal1', 'signal2', 'signal3' +) + +write.csv(out, 'tsa/statespace/tests/results/results_simulation_smoothing2.csv', row.names=FALSE) + +# - Test 3 ------------------------------------------------------------------ # + +# Reset obs to full dataset +obs <- diff(log(data.matrix(dta[c('realgdp','realcons','realinv')]))) + +T <- t(matrix( + c(-0.1119908792, 0.8441841604, 0.0238725303, + 0.2629347724, 0.4996718412, -0.0173023305, + -3.2192369082, 4.1536028244, 0.4514379215), nrow=3, ncol=3)) +Q <- t(matrix( + c(0.0000640649, 0.0000388496, 0.0002148769, + 0.0000388496, 0.0000572802, 0.000001555, + 0.0002148769, 0.000001555, 0.0017088585), nrow=3, ncol=3)) +H <- t(matrix( + c(0.0000640649, 0., 0., + 0., 0.0000572802, 0., + 0., 0., 0.0017088585), nrow=3, ncol=3)) + +mod <- SSModel(obs ~ -1 + SSMcustom(Z=diag(3), T=T, R=diag(3), Q=Q, P1=diag(3)*1e6), H=H) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +kf$logLik # 1695.34872 + +# if run sequentially, use fixInNamespace(simHelper, 'KFAS') to remove the +# modifications to u +# Instead, capture the actual variates drawn here +set.seed(1234) +variates <- rnorm(6 * nrow(obs) + 3, mean = 0, sd = 1) +# Note: need to reset the seed before each call to make sure we always use +# the same variates. +set.seed(1234) +sim_eta <- simulateSSM(mod, type=c("eta")) +set.seed(1234) +sim_eps <- simulateSSM(mod, type=c("epsilon")) +set.seed(1234) +sim_state <- simulateSSM(mod, type=c("states")) +set.seed(1234) +sim_signal <- simulateSSM(mod, type=c("signals")) + +out <- as.data.frame(list(sim_eta, sim_eps, sim_state, sim_signal)) +names(out) <- c( + 'eta1', 'eta2', 'eta3', + 'eps1', 'eps2', 'eps3', + 'state1', 'state2', 'state3', + 'signal1', 'signal2', 'signal3' +) + +write.csv(variates, 'tsa/statespace/tests/results/results_simulation_smoothing3_variates.csv', row.names=FALSE) +write.csv(out, 'tsa/statespace/tests/results/results_simulation_smoothing3.csv', row.names=FALSE) + +# - Test 4 ------------------------------------------------------------------ # + +# Now with some fully missing observations +obs <- diff(log(data.matrix(dta[c('realgdp','realcons','realinv')]))) +obs[1:50,] <- NaN + +mod <- SSModel(obs ~ -1 + SSMcustom(Z=diag(3), T=T, R=diag(3), Q=Q, P1=diag(3)*1e6), H=H) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +kf$logLik # 1305.739288 + +# The actual variates will be the same as in the Test 3 +# Note: need to reset the seed before each call to make sure we always use +# the same variates. +set.seed(1234) +sim_eta <- simulateSSM(mod, type=c("eta")) +set.seed(1234) +sim_eps <- simulateSSM(mod, type=c("epsilon")) +set.seed(1234) +sim_state <- simulateSSM(mod, type=c("states")) +set.seed(1234) +sim_signal <- simulateSSM(mod, type=c("signals")) + +out <- as.data.frame(list(sim_eta, sim_eps, sim_state, sim_signal)) +names(out) <- c( + 'eta1', 'eta2', 'eta3', + 'eps1', 'eps2', 'eps3', + 'state1', 'state2', 'state3', + 'signal1', 'signal2', 'signal3' +) + +write.csv(out, 'tsa/statespace/tests/results/results_simulation_smoothing4.csv', row.names=FALSE) + +# - Test 5 ------------------------------------------------------------------ # + +# Now with some partially missing observations +obs <- diff(log(data.matrix(dta[c('realgdp','realcons','realinv')]))) +obs[1:50,1] <- NaN + +# The actual variates will be the same as in the Test 3 +mod <- SSModel(obs ~ -1 + SSMcustom(Z=diag(3), T=T, R=diag(3), Q=Q, P1=diag(3)*1e6), H=H) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +kf$logLik # 1518.449598 + +# The actual variates will be the same as in the Test 3 +# Note: need to reset the seed before each call to make sure we always use +# the same variates. +set.seed(1234) +sim_eta <- simulateSSM(mod, type=c("eta")) +set.seed(1234) +sim_eps <- simulateSSM(mod, type=c("epsilon")) +set.seed(1234) +sim_state <- simulateSSM(mod, type=c("states")) +set.seed(1234) +sim_signal <- simulateSSM(mod, type=c("signals")) + +out <- as.data.frame(list(sim_eta, sim_eps, sim_state, sim_signal)) +names(out) <- c( + 'eta1', 'eta2', 'eta3', + 'eps1', 'eps2', 'eps3', + 'state1', 'state2', 'state3', + 'signal1', 'signal2', 'signal3' +) + +write.csv(out, 'tsa/statespace/tests/results/results_simulation_smoothing5.csv', row.names=FALSE) + +# - Test 6 ------------------------------------------------------------------ # + +# Now with both fully and partially missing observations +obs <- diff(log(data.matrix(dta[c('realgdp','realcons','realinv')]))) + +obs[1:50,1] <- NaN +obs[20:70,2] <- NaN +obs[40:90,3] <- NaN +obs[120:130,1] <- NaN +obs[120:130,3] <- NaN +obs[193:202,] <- NaN + +mod <- SSModel(obs ~ -1 + SSMcustom(Z=diag(3), T=T, R=diag(3), Q=Q, P1=diag(3)*1e6), H=H) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) +kf$logLik # 1108.341725 + +# The actual variates will be the same as in the Test 3 +# Note: need to reset the seed before each call to make sure we always use +# the same variates. +set.seed(1234) +sim_eta <- simulateSSM(mod, type=c("eta")) +set.seed(1234) +sim_eps <- simulateSSM(mod, type=c("epsilon")) +set.seed(1234) +sim_state <- simulateSSM(mod, type=c("states")) +set.seed(1234) +sim_signal <- simulateSSM(mod, type=c("signals")) + +out <- as.data.frame(list(sim_eta, sim_eps, sim_state, sim_signal)) +names(out) <- c( + 'eta1', 'eta2', 'eta3', + 'eps1', 'eps2', 'eps3', + 'state1', 'state2', 'state3', + 'signal1', 'signal2', 'signal3' +) + +write.csv(out, 'tsa/statespace/tests/results/results_simulation_smoothing6.csv', row.names=FALSE) diff --git a/statsmodels/tsa/statespace/tests/results/test_smoothing.R b/statsmodels/tsa/statespace/tests/results/test_smoothing.R new file mode 100644 index 0000000..e93fae9 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_smoothing.R @@ -0,0 +1,53 @@ +library(KFAS) +options(digits=10) + +# should run this from the statsmodels/statsmodels directory +dta <- read.csv('datasets/macrodata/macrodata.csv') + +obs <- diff(data.matrix(dta[c('realgdp','realcons','realinv')])) +obs[1:50,1] <- NaN +obs[20:70,2] <- NaN +obs[40:90,3] <- NaN +obs[120:130,1] <- NaN +obs[120:130,3] <- NaN + +mod <- SSModel(obs ~ -1 + SSMcustom(Z=diag(3), T=diag(3), R=diag(3), Q=diag(3), P1=diag(3)*1e6), H=diag(3)) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) + +# kf$logLik = -205310.9767 + +# r = scaled_smoothed_estimator +# N = scaled_smoothed_estimator_cov +# m = forecasts +# v = forecasts_error +# F = forecasts_error_cov +# a = predicted_state +# P = predicted_state_cov +# mu = filtered_forecasts +# alphahat = smoothed_state +# V = smoothed_state_cov +# muhat = smoothed_forecasts +# etahat = smoothed_state_disturbance +# V_eta = smoothed_state_disturbance_cov +# epshat = smoothed_measurement_disturbance +# V_eps = smoothed_measurement_disturbance_cov + +out <- as.data.frame(with(kf, cbind( + t(r)[2:203,], apply(N, 3, det)[2:203], + m, apply(P_mu, 3, det), v, t(F), + a[2:203,], apply(P, 3, det)[2:203], + alphahat, apply(V, 3, det), + muhat, apply(V_mu, 3, det), + etahat, apply(V_eta, 3, det), epshat, t(V_eps) +))) +names(out) <- c( + "r1", "r2", "r3", "detN", + "m1", "m2", "m3", "detPmu", + "v1", "v2", "v3", "F1", "F2", "F3", + "a1", "a2", "a3", "detP", + "alphahat1", "alphahat2", "alphahat3", "detV", + "muhat1", "muhat2", "muhat3", "detVmu", + "etahat1", "etahat2", "etahat3", "detVeta", + "epshat1", "epshat2", "epshat3", "Veps1", "Veps2", "Veps3" +) +write.csv(out, 'tsa/statespace/tests/results/results_smoothing_R.csv', row.names=FALSE) diff --git a/statsmodels/tsa/statespace/tests/results/test_smoothing2.R b/statsmodels/tsa/statespace/tests/results/test_smoothing2.R new file mode 100644 index 0000000..695037a --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_smoothing2.R @@ -0,0 +1,70 @@ +library(KFAS) +options(digits=10) + +# should run this from the statsmodels/statsmodels directory +dta <- read.csv('datasets/macrodata/macrodata.csv') + +obs <- diff(log(data.matrix(dta[c('realgdp','realcons','realinv')]))) + +#T <- t(matrix( +# c(-0.1119908792, 0.8441841604, 0.0238725303, +# 0.2629347724, 0.4996718412, -0.0173023305, +# -3.2192369082, 4.1536028244, 0.4514379215), nrow=3, ncol=3)) +#Q <- t(matrix( +# c(0.0000640649, 0.0000388496, 0.0002148769, +# 0.0000388496, 0.0000572802, 0.000001555, +# 0.0002148769, 0.000001555, 0.0017088585), nrow=3, ncol=3)) +#H <- matrix(0, 3, 3) +T <- t(matrix( + c(-0.1119908792, 0.8441841604, 0.0238725303, + 0.2629347724, 0.4996718412, -0.0173023305, + -3.2192369082, 4.1536028244, 0.4514379215), nrow=3, ncol=3)) +Q <- t(matrix( + c(0.0000640649, 0.0000388496, 0.0002148769, + 0.0000388496, 0.0000572802, 0.000001555, + 0.0002148769, 0.000001555, 0.0017088585), nrow=3, ncol=3)) +H <- t(matrix( + c(0.0000640649, 0., 0., + 0., 0.0000572802, 0., + 0., 0., 0.0017088585), nrow=3, ncol=3)) + +mod <- SSModel(obs ~ -1 + SSMcustom(Z=diag(3), T=T, R=diag(3), Q=Q, P1=diag(3)*1e6), H=H) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) + +# kf$logLik # 1695.34872 + +# r = scaled_smoothed_estimator +# N = scaled_smoothed_estimator_cov +# m = forecasts +# v = forecasts_error +# F = forecasts_error_cov +# a = predicted_state +# P = predicted_state_cov +# mu = filtered_forecasts +# alphahat = smoothed_state +# V = smoothed_state_cov +# muhat = smoothed_forecasts +# etahat = smoothed_state_disturbance +# V_eta = smoothed_state_disturbance_cov +# epshat = smoothed_measurement_disturbance +# V_eps = smoothed_measurement_disturbance_cov + +out <- as.data.frame(with(kf, cbind( + t(r)[2:203,], apply(N, 3, det)[2:203], + m, apply(P_mu, 3, det), v, t(F), + a[2:203,], apply(P, 3, det)[2:203], + alphahat, apply(V, 3, det), + muhat, apply(V_mu, 3, det), + etahat, apply(V_eta, 3, det), epshat, t(V_eps) +))) +names(out) <- c( + "r1", "r2", "r3", "detN", + "m1", "m2", "m3", "detPmu", + "v1", "v2", "v3", "F1", "F2", "F3", + "a1", "a2", "a3", "detP", + "alphahat1", "alphahat2", "alphahat3", "detV", + "muhat1", "muhat2", "muhat3", "detVmu", + "etahat1", "etahat2", "etahat3", "detVeta", + "epshat1", "epshat2", "epshat3", "Veps1", "Veps2", "Veps3" +) +write.csv(out, 'tsa/statespace/tests/results/results_smoothing2_R.csv', row.names=FALSE) diff --git a/statsmodels/tsa/statespace/tests/results/test_smoothing3.R b/statsmodels/tsa/statespace/tests/results/test_smoothing3.R new file mode 100644 index 0000000..a15374a --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_smoothing3.R @@ -0,0 +1,66 @@ +library(KFAS) +options(digits=10) + +# should run this from the statsmodels/statsmodels directory +dta <- read.csv('tsa/statespace/tests/results/results_wpi1_ar3_stata.csv') +matlab <- read.csv('tsa/statespace/tests/results/results_wpi1_missing_ar3_matlab_ssm.csv') +names(matlab) <- c( + 'a1','a2','a3','detP','alphahat1','alphahat2','alphahat3', + 'detV','eps','epsvar','eta','etavar') + +endog <- diff(dta$wpi) + +Z <- matrix(c(1, 0, 0), nrow=1, ncol=3) +H <- matrix(0, nrow=1, ncol=1) +T <- t(matrix( + c(.5270715, .0952613, .2580355, + 1, 0, 0, + 0, 1, 0), nrow=3, ncol=3)) +Q <- matrix(.5307459, nrow=1, ncol=1) +R <- matrix(0, nrow=3, ncol=1) +R[1,1] <- 1 +P <- t(matrix( + c(1.58276997, 1.24351589, 1.12706975, + 1.24351589, 1.58276997, 1.24351589, + 1.12706975, 1.24351589, 1.58276997), nrow=3, ncol=3)) + +mod <- SSModel(endog ~ -1 + SSMcustom(Z=Z, T=T, R=R, Q=Q, P1=P), H=H) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) + +# kf$logLik # -130.0310409 + +# r = scaled_smoothed_estimator +# N = scaled_smoothed_estimator_cov +# m = forecasts +# v = forecasts_error +# F = forecasts_error_cov +# a = predicted_state +# P = predicted_state_cov +# mu = filtered_forecasts +# alphahat = smoothed_state +# V = smoothed_state_cov +# muhat = smoothed_forecasts +# etahat = smoothed_state_disturbance +# V_eta = smoothed_state_disturbance_cov +# epshat = smoothed_measurement_disturbance +# V_eps = smoothed_measurement_disturbance_cov + +out <- as.data.frame(with(kf, cbind( + t(r)[2:124,], apply(N, 3, det)[2:124], + m, apply(P_mu, 3, det), v, t(F), + a[2:124,], apply(P, 3, det)[2:124], + alphahat, apply(V, 3, det), + muhat, apply(V_mu, 3, det), + etahat, apply(V_eta, 3, det), epshat, t(V_eps) +))) +names(out) <- c( + "r1", "r2", "r3", "detN", + "m", "detPmu", + "v", "F", + "a1", "a2", "a3", "detP", + "alphahat1", "alphahat2", "alphahat3", "detV", + "muhat", "detVmu", + "etahat", "detVeta", + "epshat", "Veps" +) +write.csv(out, 'tsa/statespace/tests/results/results_smoothing3_R.csv', row.names=FALSE) diff --git a/statsmodels/tsa/statespace/tests/results/test_smoothing_generalobscov.R b/statsmodels/tsa/statespace/tests/results/test_smoothing_generalobscov.R new file mode 100644 index 0000000..2c21824 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_smoothing_generalobscov.R @@ -0,0 +1,68 @@ +library(KFAS) +options(digits=20) + +# should run this from the statsmodels/statsmodels directory +dta <- read.csv('datasets/macrodata/macrodata.csv') + +obs <- diff(data.matrix(dta[c('realgdp','realcons','realinv')])) +obs[1:50,1] <- NaN +#obs[20:70,2] <- NaN +#obs[40:90,3] <- NaN +#obs[120:130,1] <- NaN +#obs[120:130,3] <- NaN + +H <- diag(c(0.0000640649, 0.0000572802, 0.0017088585)) +T <- t(matrix(c(-0.1119908792, 0.8441841604, 0.0238725303, + 0.2629347724, 0.4996718412, -0.0173023305, + -3.2192369082, 4.1536028244, 0.4514379215), 3, 3)) +Q <- t(matrix(c(0.0000640649, 0.0000388496, 0.0002148769, + 0.0000388496, 0.0000572802, 0.000001555, + 0.0002148769, 0.000001555 , 0.0017088585), 3, 3)) + +mod <- list(Z=diag(3), H=H, T=T, R=diag(3), Q=Q, P0=diag(3)*1e6, a0=c(0,0,0)) +testmod <- list(Z=ss$Z, H=ss$H, T=ss$T, R=ss$R, Q=ss$Q, P0=ss$P0, a0=ss$a0) + +ss <- list(Z=diag(3), R=H, B=T, Q=Q, V0=diag(3)*1e6, U="zero", x0="zero", tinitx=1) +marssmod <- MARSS(t(obs), model=ss) +marssout <- MARSSkfss(marssmod) + +mod <- SSModel(obs ~ -1 + SSMcustom(Z=diag(3), T=T, R=diag(3), Q=Q, P1=diag(3)*1e6), H=H) +kf <- KFS(mod, c("state", "signal", "mean"), c("state", "signal", "mean", "disturbance"), simplify=FALSE) + +kf$logLik + +# r = scaled_smoothed_estimator +# N = scaled_smoothed_estimator_cov +# m = forecasts +# v = forecasts_error +# F = forecasts_error_cov +# a = predicted_state +# P = predicted_state_cov +# mu = filtered_forecasts +# alphahat = smoothed_state +# V = smoothed_state_cov +# muhat = smoothed_forecasts +# etahat = smoothed_state_disturbance +# V_eta = smoothed_state_disturbance_cov +# epshat = smoothed_measurement_disturbance +# V_eps = smoothed_measurement_disturbance_cov + +out <- as.data.frame(with(kf, cbind( + t(r)[2:203,], apply(N, 3, det)[2:203], + m, apply(P_mu, 3, det), v, t(F), + a[2:203,], apply(P, 3, det)[2:203], + alphahat, apply(V, 3, det), + muhat, apply(V_mu, 3, det), + etahat, apply(V_eta, 3, det), epshat, t(V_eps) +))) +names(out) <- c( + "r1", "r2", "r3", "detN", + "m1", "m2", "m3", "detPmu", + "v1", "v2", "v3", "F1", "F2", "F3", + "a1", "a2", "a3", "detP", + "alphahat1", "alphahat2", "alphahat3", "detV", + "muhat1", "muhat2", "muhat3", "detVmu", + "etahat1", "etahat2", "etahat3", "detVeta", + "epshat1", "epshat2", "epshat3", "Veps1", "Veps2", "Veps3" +) +write.csv(out, 'tsa/statespace/tests/results/results_smoothing_generalobscov_R.csv', row.names=FALSE) diff --git a/statsmodels/tsa/statespace/tests/results/test_ucm.R b/statsmodels/tsa/statespace/tests/results/test_ucm.R new file mode 100644 index 0000000..8973667 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_ucm.R @@ -0,0 +1,145 @@ +library(KFAS) +library(rucm) +options(digits=10) + +dta <- read.csv('datasets/macrodata/macrodata.csv') + +# Irregular (ntrend) +mod_ntrend <- SSModel(dta$unemp ~ -1 + SSMcustom(Z=matrix(0), matrix(0), matrix(0), matrix(0)), H=matrix(NA)) +res_ntrend <- fitSSM(inits=c(log(var(dta$unemp))), model=mod_ntrend, + method="BFGS", control=list(REPORT=1, trace=1)) + +print(exp(res_ntrend$optim.out$par)) # 36.74687342 +print(res_ntrend$optim.out$value) # 653.8562525 + +# Irregular + Deterministic trend (dconstant) +mod_dconstant <- SSModel(dta$unemp ~ SSMtrend(Q=matrix(0)), H=matrix(NA)) +res_dconstant <- fitSSM(inits=c(log(var(dta$unemp))), model=mod_dconstant, + method="BFGS", control=list(REPORT=1, trace=1)) + +print(exp(res_dconstant$optim.out$par)) # 2.127438969 +print(res_dconstant$optim.out$value) # 365.5289923 + +# Local level (llevel) +mod_llevel <- SSModel(dta$unemp ~ SSMtrend(Q=matrix(NA)), H=matrix(NA)) +res_llevel <- fitSSM(inits=c(log(var(dta$unemp)), log(var(dta$unemp))), model=mod_llevel, + method="BFGS", control=list(REPORT=1, trace=1)) + +print(exp(res_llevel$optim.out$par)) # [1.182078808e-01, 4.256647886e-06] +print(res_llevel$optim.out$value) # 70.97242557 + +# Random walk (rwalk) +mod_rwalk <- SSModel(dta$unemp ~ SSMtrend(Q=matrix(NA)), H=matrix(0)) +res_rwalk <- fitSSM(inits=c(log(var(dta$unemp))), model=mod_rwalk, + method="BFGS", control=list(REPORT=1, trace=1)) + +print(exp(res_rwalk$optim.out$par)) # 0.1182174646 +print(res_rwalk$optim.out$value) # 70.96771641 + +# Deterministic trend (dtrend) +mod_dtrend <- SSModel(dta$unemp ~ SSMtrend(2, Q=list(matrix(0), matrix(0))), H=matrix(NA)) +res_dtrend <- fitSSM(inits=c(log(var(dta$unemp))), model=mod_dtrend, + method="BFGS", control=list(REPORT=1, trace=1)) + +print(exp(res_dtrend$optim.out$par)) # 2.134137554 +print(res_dtrend$optim.out$value) # 370.7758666 + +# Local level with deterministic trend (lldtrend) +mod_lldtrend <- SSModel(dta$unemp ~ SSMtrend(2, Q=list(matrix(NA), matrix(0))), H=matrix(NA)) +res_lldtrend <- fitSSM(inits=c(log(var(dta$unemp)), log(var(dta$unemp))), model=mod_lldtrend, + method="BFGS", control=list(REPORT=1, trace=1)) + +print(exp(res_lldtrend$optim.out$par)) # [1.184455029e-01, 4.457592057e-06] +print(res_lldtrend$optim.out$value) # 73.47291031 + +# Random walk with drift (rwdrift) +mod_rwdrift <- SSModel(dta$unemp ~ SSMtrend(2, Q=list(matrix(NA), matrix(0))), H=matrix(0)) +res_rwdrift <- fitSSM(inits=c(log(var(dta$unemp))), model=mod_rwdrift, + method="BFGS", control=list(REPORT=1, trace=1)) + +print(exp(res_rwdrift$optim.out$par)) # [0.1184499547] +print(res_rwdrift$optim.out$value) # 73.46798576 + +# Local linear trend (lltrend) +mod_lltrend <- SSModel(dta$unemp ~ SSMtrend(2, Q=list(matrix(NA), matrix(NA))), H=matrix(NA)) +res_lltrend <- fitSSM(inits=c(log(var(dta$unemp)), log(var(dta$unemp)), log(var(dta$unemp))), model=mod_lltrend, + method="BFGS", control=list(REPORT=1, trace=1)) + +print(exp(res_lltrend$optim.out$par)) # [1.008704925e-02, 6.091760810e-02, 1.339852549e-06] +print(res_lltrend$optim.out$value) # 31.15640107 + +# Smooth trend (strend) +mod_strend <- SSModel(dta$unemp ~ SSMtrend(2, Q=list(matrix(0), matrix(NA))), H=matrix(NA)) +res_strend <- fitSSM(inits=c(log(var(dta$unemp)), log(var(dta$unemp))), model=mod_strend, + method="BFGS", control=list(REPORT=1, trace=1)) + +print(exp(res_strend$optim.out$par)) # [0.0753064234342, 0.0008824099119] +print(res_strend$optim.out$value) # 31.92261408 + +# Random trend (rtrend) +mod_rtrend <- SSModel(dta$unemp ~ SSMtrend(2, Q=list(matrix(0), matrix(NA))), H=matrix(0)) +res_rtrend <- fitSSM(inits=c(log(var(dta$unemp))), model=mod_rtrend, + method="BFGS", control=list(REPORT=1, trace=1)) + +print(exp(res_rtrend$optim.out$par)) # [0.08054724989] +print(res_rtrend$optim.out$value) # 32.05607557 + +# Cycle (with fixed period=10, cycle variance=0.1) +# Note: matching this requires setting loglikelihood_burn = 0 +mod_cycle <- SSModel(dta$unemp ~ -1 + SSMcycle(10, Q=matrix(0.1), P1=diag(2)*1e6), H=matrix(NA)) +res_cycle <- fitSSM(inits=c(log(var(dta$unemp))), model=mod_cycle, + method="BFGS", control=list(REPORT=1, trace=1)) + +print(exp(res_cycle$optim.out$par)) # [37.57197224] +print(res_cycle$optim.out$value) # 672.3102588 + +# Seasonal (with fixed period=4, seasonal variance=0.1) +# Note: matching this requires setting loglikelihood_burn=0 +mod_seasonal <- SSModel(dta$unemp ~ -1 + SSMseasonal(4, Q=matrix(0.1), sea.type='dummy', P1=diag(rep(1e6, 3))), H=matrix(NA)) +res_seasonal <- fitSSM(inits=c(log(var(dta$unemp))), model=mod_seasonal, + method="BFGS", control=list(REPORT=1, trace=1)) + +print(exp(res_seasonal$optim.out$par)) # [38.17043009] +print(res_seasonal$optim.out$value) # 678.8138005 + +# Trig Seasonal (with fixed period=5, full number of harmonics, seasonal variance=.05) +# Note: matching this requires setting loglikelihood_burn=0 +mod_trig_seasonal <- SSModel(dta$unemp ~ -1 + SSMseasonal(5, Q=0.05, sea.type='trigonometric', P1=diag(rep(1e6, 4))), H=matrix(NA)) +res_trig_seasonal <- fitSSM(inits=c(log(var(dta$unemp))), model=mod_trig_seasonal, + method="BFGS", control=list(REPORT=1, trace=1)) + +print(exp(res_trig_seasonal$optim.out$par)) # [38.95352534] +print(res_trig_seasonal$optim.out$value) # 688.9697249 + + +# Regression +# Note: matching this requires setting loglikelihood_burn = 0 +mod_reg <- SSModel(dta$unemp ~ -1 + SSMregression(~-1+log(realgdp), data=dta, P1=diag(1)*1e6), H=matrix(NA)) +res_reg <- fitSSM(inits=c(log(var(dta$unemp))), model=mod_reg, + method="BFGS", control=list(REPORT=1, trace=1)) + +print(exp(res_reg$optim.out$par)) # [2.215447924] +print(res_reg$optim.out$value) # 379.6233483 + +# Random trend + AR(1) +# Note: KFAS doesn't want to estimate these parameters, so just fix them +# to the MLE estimates from Statsmodels and compare the loglikelihood +# mod.update([]) +mod_rtrend_ar1 <- SSModel(dta$unemp ~ SSMtrend(2, Q=list(matrix(0), matrix(0.0609))) + SSMarima(ar=c(0.9592), Q=matrix(0.0097)), H=matrix(0)) +out_rtrend_ar1 <- KFS(mod_rtrend_ar1) + +print(out_rtrend_ar1$logLik) # -31.15629379 + +# Local linear trend + Cycle + Seasonal + Regression + AR(1) +# Note: matching this requires setting loglikelihood_burn = 0, and +# mod.update([0.0001, 0.01, 0.06, 0.0001, 0.0001, 0.1, 2*np.pi / 10, 0.2]) +mod_lltrend_cycle_seasonal_reg_ar1 <- SSModel( + dta$unemp ~ SSMtrend(2, Q=list(matrix(0.01), matrix(0.06)), P1=diag(2)*1e6) + + SSMcycle(10, Q=matrix(0.0001), P1=diag(2)*1e6) + + SSMseasonal(4, Q=matrix(0.0001), P1=diag(3)*1e6) + + SSMregression(~-1+log(realgdp), data=dta, P1=diag(1)*1e6) + + SSMarima(ar=c(0.2), Q=matrix(0.1)), +H=matrix(0.0001)) +out_lltrend_cycle_seasonal_reg_ar1 <- KFS(mod_lltrend_cycle_seasonal_reg_ar1) + +print(out_lltrend_cycle_seasonal_reg_ar1$logLik) # -168.5258709 diff --git a/statsmodels/tsa/statespace/tests/results/test_var.R b/statsmodels/tsa/statespace/tests/results/test_var.R new file mode 100644 index 0000000..3a70b4d --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_var.R @@ -0,0 +1,211 @@ +library(plyr) +library(vars) +# library(MTS) +library(readstata13) +options(digits=15, scipen=999) + +dta <- read.dta13('~/projects/statsmodels/statsmodels/tsa/tests/results/lutkepohl2.dta') + +# TODO +# predict(res, dumvar=exog_fcast) +# vars::fevd(res) +# vars::irf(res) + +extract_var_output <- function(res, k_trend=0, k_exog=0) { + s <- summary(res) + + # Coefficient vectors + coeffs <- vector("list", res$K) + for(i in 1:res$K) { + coeffs[[i]] <- t(res$varresult[[i]]$coefficients) + } + coeffs <- rbind.fill.matrix(coeffs) + + # Reorder + k <- res$K * res$p + k1 <- k + k_trend + k2 <- ncol(coeffs) + + trend <- c() + if (k_trend > 0) { + trend <- t(coeffs[,(k + 1):k1]) + } + + var <- t(coeffs[,1:k]) + + exog <- c() + if (k_exog > 0) { + exog <- t(coeffs[,(k1 + 1):k2]) + } + + # Error variance + # Have to compute this by hand since the definition used + # in the log-likelihood computation is not the same as that + # given by summary + resids <- resid(res) + Sigma <- (t(resids) %*% resids) / res$obs + U <- chol(Sigma) + params <- c(trend, var, exog, U[upper.tri(U, diag=TRUE)]) + + return(list(coeffs=coeffs, params=params, s=s)) +} + +# "res_basic" +endog <- dta[2:76,c('dln_inv', 'dln_inc', 'dln_consump')] +res <- vars::VAR(endog, p=2, type="none") +out <- extract_var_output(res, k_trend=0) +cat(out$s$logLik) +cat(out$params, sep=', ') +fcasts_basic <- as.data.frame(predict(res)$fcst)[c(1,4,5,8,9,12)] +names(fcasts_basic) <- paste0('basic.fcast.', names(fcasts_basic)) +irfs_basic <- as.data.frame(vars::irf(res, ortho=FALSE, boot=FALSE)$irf) +names(irfs_basic) <- paste0('basic.irf.', names(irfs_basic)) +irfs_basic_ortho <- as.data.frame(vars::irf(res, ortho=TRUE, boot=FALSE)$irf) +names(irfs_basic_ortho) <- paste0('basic.irf.ortho.', names(irfs_basic_ortho)) +irfs_basic_cumu <- as.data.frame(vars::irf(res, cumulative=TRUE, boot=FALSE)$irf) +names(irfs_basic_cumu) <- paste0('basic.irf.cumu.', names(irfs_basic_cumu)) +fevd_basic <- vars::fevd(res) +fevd_basic <- as.data.frame(cbind(fevd_basic[[1]], fevd_basic[[2]], fevd_basic[[3]])) +names(fevd_basic) <- paste0('basic.fevd.', names(fevd_basic)) + +# "res_c" +endog <- dta[2:76,c('dln_inv', 'dln_inc', 'dln_consump')] +res <- vars::VAR(endog, p=2, type="const") +out <- extract_var_output(res, k_trend=1) +cat(out$s$logLik) +cat(out$params, sep=', ') +fcasts_c <- as.data.frame(predict(res)$fcst)[c(1,4,5,8,9,12)] +names(fcasts_c) <- paste0('c.fcast.', names(fcasts_c)) +irfs_c <- as.data.frame(vars::irf(res, ortho=FALSE, boot=FALSE)$irf) +names(irfs_c) <- paste0('c.irf.', names(irfs_c)) +irfs_c_ortho <- as.data.frame(vars::irf(res, ortho=TRUE, boot=FALSE)$irf) +names(irfs_c_ortho) <- paste0('c.irf.ortho.', names(irfs_c_ortho)) +irfs_c_cumu <- as.data.frame(vars::irf(res, cumulative=TRUE, boot=FALSE)$irf) +names(irfs_c_cumu) <- paste0('c.irf.cumu.', names(irfs_c_cumu)) +fevd_c <- vars::fevd(res) +fevd_c <- as.data.frame(cbind(fevd_c[[1]], fevd_c[[2]], fevd_c[[3]])) +names(fevd_c) <- paste0('c.fevd.', names(fevd_c)) + +# "res_ct" +endog <- dta[2:76,c('dln_inv', 'dln_inc', 'dln_consump')] +res <- vars::VAR(endog, p=2, type="both") +out <- extract_var_output(res, k_trend=2) +cat(out$s$logLik) +cat(out$params, sep=', ') +fcasts_ct <- as.data.frame(predict(res)$fcst)[c(1,4,5,8,9,12)] +names(fcasts_ct) <- paste0('ct.fcast.', names(fcasts_ct)) +irfs_ct <- as.data.frame(vars::irf(res, ortho=FALSE, boot=FALSE)$irf) +names(irfs_ct) <- paste0('ct.irf.', names(irfs_ct)) +irfs_ct_ortho <- as.data.frame(vars::irf(res, ortho=TRUE, boot=FALSE)$irf) +names(irfs_ct_ortho) <- paste0('ct.irf.ortho.', names(irfs_ct_ortho)) +irfs_ct_cumu <- as.data.frame(vars::irf(res, cumulative=TRUE, boot=FALSE)$irf) +names(irfs_ct_cumu) <- paste0('ct.irf.cumu.', names(irfs_ct_cumu)) +fevd_ct <- vars::fevd(res) +fevd_ct <- as.data.frame(cbind(fevd_ct[[1]], fevd_ct[[2]], fevd_ct[[3]])) +names(fevd_ct) <- paste0('ct.fevd.', names(fevd_ct)) + +# "res_ct_as_exog0" +# here we start the trend at zero +endog <- dta[2:76,c('dln_inv', 'dln_inc', 'dln_consump')] +exog <- cbind(rep(1, 75), 0:74) +exog_fcast <- cbind(rep(1, 10), 75:84) +# exog <- cbind(rep(1, 75), 1:75, (1:75)^2) +res <- vars::VAR(endog, p=2, type="none", exogen=exog) +out <- extract_var_output(res, k_trend=0, k_exog=2) +cat(out$s$logLik) +cat(out$params, sep=', ') +fcasts_ct_as_exog0 <- as.data.frame(predict(res, dumvar=exog_fcast)$fcst)[c(1,4,5,8,9,12)] +names(fcasts_ct_as_exog0) <- paste0('ct_as_exog0.fcast.', names(fcasts_ct_as_exog0)) +irfs_ct_as_exog0 <- as.data.frame(vars::irf(res, ortho=FALSE, boot=FALSE)$irf) +names(irfs_ct_as_exog0) <- paste0('ct_as_exog0.irf.', names(irfs_ct_as_exog0)) +irfs_ct_as_exog0_ortho <- as.data.frame(vars::irf(res, ortho=TRUE, boot=FALSE)$irf) +names(irfs_ct_as_exog0_ortho) <- paste0('ct_as_exog0.irf.ortho.', names(irfs_ct_as_exog0_ortho)) +irfs_ct_as_exog0_cumu <- as.data.frame(vars::irf(res, cumulative=TRUE, boot=FALSE)$irf) +names(irfs_ct_as_exog0_cumu) <- paste0('ct_as_exog0.irf.cumu.', names(irfs_ct_as_exog0_cumu)) +fevd_ct_as_exog0 <- vars::fevd(res) +fevd_ct_as_exog0 <- as.data.frame(cbind(fevd_ct_as_exog0[[1]], fevd_ct_as_exog0[[2]], fevd_ct_as_exog0[[3]])) +names(fevd_ct_as_exog0) <- paste0('ct_as_exog0.fevd.', names(fevd_ct_as_exog0)) + +# "res_ctt_as_exog1" +endog <- dta[2:76,c('dln_inv', 'dln_inc', 'dln_consump')] +exog <- cbind(rep(1, 75), 1:75, (1:75)^2) +exog_fcast <- cbind(rep(1, 10), 76:85, (76:85)^2) +res <- vars::VAR(endog, p=2, type='none', exogen=exog) +out <- extract_var_output(res, k_trend=0, k_exog=3) +cat(out$s$logLik) +cat(out$params, sep=', ') +fcasts_ctt_as_exog1 <- as.data.frame(predict(res, dumvar=exog_fcast)$fcst)[c(1,4,5,8,9,12)] +names(fcasts_ctt_as_exog1) <- paste0('ctt_as_exog1.fcast.', names(fcasts_ctt_as_exog1)) +irfs_ctt_as_exog1 <- as.data.frame(vars::irf(res, ortho=FALSE, boot=FALSE)$irf) +names(irfs_ctt_as_exog1) <- paste0('ctt_as_exog1.irf.', names(irfs_ctt_as_exog1)) +irfs_ctt_as_exog1_ortho <- as.data.frame(vars::irf(res, ortho=TRUE, boot=FALSE)$irf) +names(irfs_ctt_as_exog1_ortho) <- paste0('ctt_as_exog1.irf.ortho.', names(irfs_ctt_as_exog1_ortho)) +irfs_ctt_as_exog1_cumu <- as.data.frame(vars::irf(res, cumulative=TRUE, boot=FALSE)$irf) +names(irfs_ctt_as_exog1_cumu) <- paste0('ctt_as_exog1.irf.cumu.', names(irfs_ctt_as_exog1_cumu)) +fevd_ctt_as_exog1 <- vars::fevd(res) +fevd_ctt_as_exog1 <- as.data.frame(cbind(fevd_ctt_as_exog1[[1]], fevd_ctt_as_exog1[[2]], fevd_ctt_as_exog1[[3]])) +names(fevd_ctt_as_exog1) <- paste0('ctt_as_exog1.fevd.', names(fevd_ctt_as_exog1)) + +# "res_ct_exog" +endog <- dta[2:76,c('dln_inv', 'dln_inc', 'dln_consump')] +exog <- dta[2:76,c('inc')] +exog_fcast <- matrix(dta[77:86,'inc'], nrow=10, ncol=1) +names(exog_fcast) <- c('inc') +res <- vars::VAR(endog, p=2, type='both', exogen=exog) +out <- extract_var_output(res, k_trend=2, k_exog=1) +cat(out$s$logLik) +cat(out$params, sep=', ') +fcasts_ct_exog <- as.data.frame(predict(res, dumvar=exog_fcast)$fcst)[c(1,4,5,8,9,12)] +names(fcasts_ct_exog) <- paste0('ct_exog.fcast.', names(fcasts_ct_exog)) +irfs_ct_exog <- as.data.frame(vars::irf(res, ortho=FALSE, boot=FALSE)$irf) +names(irfs_ct_exog) <- paste0('ct_exog.irf.', names(irfs_ct_exog)) +irfs_ct_exog_ortho <- as.data.frame(vars::irf(res, ortho=TRUE, boot=FALSE)$irf) +names(irfs_ct_exog_ortho) <- paste0('ct_exog.irf.ortho.', names(irfs_ct_exog_ortho)) +irfs_ct_exog_cumu <- as.data.frame(vars::irf(res, cumulative=TRUE, boot=FALSE)$irf) +names(irfs_ct_exog_cumu) <- paste0('ct_exog.irf.cumu.', names(irfs_ct_exog_cumu)) +fevd_ct_exog <- vars::fevd(res) +fevd_ct_exog <- as.data.frame(cbind(fevd_ct_exog[[1]], fevd_ct_exog[[2]], fevd_ct_exog[[3]])) +names(fevd_ct_exog) <- paste0('ct_exog.fevd.', names(fevd_ct_exog)) + + +# "res_c_2exog" +endog <- dta[2:76,c('dln_inv', 'dln_inc', 'dln_consump')] +exog <- dta[2:76,c('inc', 'inv')] +exog_fcast <- dta[77:86,c('inc', 'inv')] +res <- vars::VAR(endog, p=2, type='const', exogen=exog) +out <- extract_var_output(res, k_trend=1, k_exog=2) +cat(out$s$logLik) +cat(out$params, sep=', ') +fcasts_c_2exog <- as.data.frame(predict(res, dumvar=exog_fcast)$fcst)[c(1,4,5,8,9,12)] +names(fcasts_c_2exog) <- paste0('c_2exog.fcast.', names(fcasts_c_2exog)) +irfs_c_2exog <- as.data.frame(vars::irf(res, ortho=FALSE, boot=FALSE)$irf) +names(irfs_c_2exog) <- paste0('c_2exog.irf.', names(irfs_c_2exog)) +irfs_c_2exog_ortho <- as.data.frame(vars::irf(res, ortho=TRUE, boot=FALSE)$irf) +names(irfs_c_2exog_ortho) <- paste0('c_2exog.irf.ortho.', names(irfs_c_2exog_ortho)) +irfs_c_2exog_cumu <- as.data.frame(vars::irf(res, cumulative=TRUE, boot=FALSE)$irf) +names(irfs_c_2exog_cumu) <- paste0('c_2exog.irf.cumu.', names(irfs_c_2exog_cumu)) +fevd_c_2exog <- vars::fevd(res) +fevd_c_2exog <- as.data.frame(cbind(fevd_c_2exog[[1]], fevd_c_2exog[[2]], fevd_c_2exog[[3]])) +names(fevd_c_2exog) <- paste0('c_2exog.fevd.', names(fevd_c_2exog)) + +cbind.fill <- function(...){ + nm <- list(...) + nm <- lapply(nm, as.matrix) + n <- max(sapply(nm, nrow)) + do.call(cbind, lapply(nm, function (x) + rbind(x, matrix(, n-nrow(x), ncol(x))))) +} + +# Combine forecasts, irfs, etc +output <- cbind.fill( + fcasts_basic, fcasts_c, fcasts_ct, fcasts_ct_as_exog0, + fcasts_ctt_as_exog1, fcasts_ct_exog, fcasts_c_2exog, + irfs_basic, irfs_c, irfs_ct, irfs_ct_as_exog0, + irfs_ctt_as_exog1, irfs_ct_exog, irfs_c_2exog, + irfs_basic_ortho, irfs_c_ortho, irfs_ct_ortho, irfs_ct_as_exog0_ortho, + irfs_ctt_as_exog1_ortho, irfs_ct_exog_ortho, irfs_c_2exog_ortho, + irfs_basic_cumu, irfs_c_cumu, irfs_ct_cumu, irfs_ct_as_exog0_cumu, + irfs_ctt_as_exog1_cumu, irfs_ct_exog_cumu, irfs_c_2exog_cumu, + fevd_basic, fevd_c, fevd_ct, fevd_ct_as_exog0, + fevd_ctt_as_exog1, fevd_ct_exog, fevd_c_2exog) +write.csv(output, '~/projects/statsmodels/statsmodels/tsa/statespace/tests/results/results_var_R_output.csv') diff --git a/statsmodels/tsa/statespace/tests/results/test_var_misc_stata.do b/statsmodels/tsa/statespace/tests/results/test_var_misc_stata.do new file mode 100644 index 0000000..3b7d359 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_var_misc_stata.do @@ -0,0 +1,31 @@ +webuse lutkepohl2, clear +tsset + +// AR(1) +// For results output, do: +// matrix list e(b) +// matrix list e(Sigma) +// for loglike, aic, sbic, hqic, fpe: +// ereturn list +// for non-Lutkepohl IC, do: +// estat ic +// matrix list r(S) +var dln_inv if qtr<=tq(1978q4), lags(1) +estat ic +var dln_inv if qtr<=tq(1978q4), lags(1) lutstats +estat ic +var dln_inv if qtr<=tq(1978q4), lags(1) lutstats dfk +estat ic + +// VAR(1) +// For results output, do: +// matrix list e(b) +// matrix list e(Sigma), format(%13.12f) +// for loglike, aic, sbic, hqic, fpe: +// ereturn list +// for non-Lutkepohl IC, do: +// estat ic +// matrix list r(S) +var dln_inv dln_inc dln_consump if qtr<=tq(1978q4), noconstant lags(1) +var dln_inv dln_inc dln_consump if qtr<=tq(1978q4), noconstant lags(1) lutstats +var dln_inv dln_inc dln_consump if qtr<=tq(1978q4), noconstant lags(1) lutstats dfk diff --git a/statsmodels/tsa/statespace/tests/results/test_varmax_stata.do b/statsmodels/tsa/statespace/tests/results/test_varmax_stata.do new file mode 100644 index 0000000..859926a --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_varmax_stata.do @@ -0,0 +1,148 @@ +webuse lutkepohl2, clear +tsset + +// VAR(1) +dfactor (dln_inv dln_inc dln_consump = , ar(1) arstructure(general) noconstant covstructure(unstructured)) if qtr<=tq(1978q4) +estat ic + +// These are predict in-sample + forecast out-of-sample (1979q1 is first out-of sample obs) +predict predict_1, dynamic(tq(1979q1)) equation(dln_inv) +predict predict_2, dynamic(tq(1979q1)) equation(dln_inc) +predict predict_3, dynamic(tq(1979q1)) equation(dln_consump) + +// These are predict in-sample for first 3-observations (1960q2-1960q4), then +// dynamic predict for the rest of in-sample observations (1961q1-1978q4), then +// forecast for the remaining periods 1979q1 - 1982q4 +predict dyn_predict_1, dynamic(tq(1961q1)) equation(dln_inv) +predict dyn_predict_2, dynamic(tq(1961q1)) equation(dln_inc) +predict dyn_predict_3, dynamic(tq(1961q1)) equation(dln_consump) + +// VAR(1), diagonal covariance +dfactor (dln_inv dln_inc dln_consump = , ar(1) arstructure(general) noconstant covstructure(diagonal)) if qtr<=tq(1978q4) +estat ic + +// predict + forecast, see above +predict predict_diag1, dynamic(tq(1979q1)) equation(dln_inv) +predict predict_diag2, dynamic(tq(1979q1)) equation(dln_inc) +predict predict_diag3, dynamic(tq(1979q1)) equation(dln_consump) + +// predict + dynamic predict + forecast, see above +predict dyn_predict_diag1, dynamic(tq(1961q1)) equation(dln_inv) +predict dyn_predict_diag2, dynamic(tq(1961q1)) equation(dln_inc) +predict dyn_predict_diag3, dynamic(tq(1961q1)) equation(dln_consump) + +// VAR(1), diagonal covariance + observation intercept +dfactor (dln_inv dln_inc dln_consump = , ar(1) arstructure(general) covstructure(diagonal)) if qtr<=tq(1978q4) +estat ic + +// predict + forecast, see above +predict predict_int1, dynamic(tq(1979q1)) equation(dln_inv) +predict predict_int2, dynamic(tq(1979q1)) equation(dln_inc) +predict predict_int3, dynamic(tq(1979q1)) equation(dln_consump) + +// predict + dynamic predict + forecast, see above +predict dyn_predict_int1, dynamic(tq(1961q1)) equation(dln_inv) +predict dyn_predict_int2, dynamic(tq(1961q1)) equation(dln_inc) +predict dyn_predict_int3, dynamic(tq(1961q1)) equation(dln_consump) + +// VAR(1), diagonal covariance + 1 exog +gen t = _n +//dfactor (dln_inv dln_inc dln_consump = t, ar(1) arstructure(general) noconstant covstructure(diagonal)) if qtr<=tq(1978q4) +var dln_inv dln_inc dln_consump if qtr<=tq(1978q4), lags(1) noconstant exog(t) + +// predict, see above (Note: uses actual data for forecasting, so we will want +// to ignore the predictions after 1978q4, see below +predict predict_exog1_1, equation(dln_inv) +predict predict_exog1_2, equation(dln_inc) +predict predict_exog1_3, equation(dln_consump) + +// We will want to use these values to compare for forecasting, but note that +// this also includes in the columns the value for 1978q4 (i.e. a VAR(1) needs +// 1 sample from which to compute forecasts. +fcast compute fcast_exog1_ , dynamic(tq(1979q1)) step(16) replace + +// VAR(1), diagonal covariance + 2 exog +gen c = 1 +//dfactor (dln_inv dln_inc dln_consump = t, ar(1) arstructure(general) noconstant covstructure(diagonal)) if qtr<=tq(1978q4) +var dln_inv dln_inc dln_consump if qtr<=tq(1978q4), lags(1) noconstant exog(c t) + +// predict, see above (Note: uses actual data for forecasting, so we will want +// to ignore the predictions after 1978q4, see below +predict predict_exog2_1, equation(dln_inv) +predict predict_exog2_2, equation(dln_inc) +predict predict_exog2_3, equation(dln_consump) + +// We will want to use these values to compare for forecasting, but note that +// this also includes in the columns the value for 1978q4 (i.e. a VAR(1) needs +// 1 sample from which to compute forecasts. +fcast compute fcast_exog2_ , dynamic(tq(1979q1)) step(16) replace + +// VAR(2) +dfactor (dln_inv dln_inc = , ar(1/2) arstructure(general) noconstant covstructure(unstructured)) if qtr<=tq(1978q4) +estat ic + +// predict + forecast, see above +predict predict_var2_1, dynamic(tq(1979q1)) equation(dln_inv) +predict predict_var2_2, dynamic(tq(1979q1)) equation(dln_inc) + +// predict + dynamic predict + forecast, see above +predict dyn_predict_var2_1, dynamic(tq(1961q1)) equation(dln_inv) +predict dyn_predict_var2_2, dynamic(tq(1961q1)) equation(dln_inc) + +outsheet pred* dyn* fcas* using results_var_stata.csv, comma replace + +// VARMA(1,1) +// Note: Stata does not have this built-in, so we need to create the state space form ourselves +// This replicates example 4 from the Stata documentation +use https://www.stata-press.com/data/r12/manufac, clear + +gen dlncaputil = D.lncaputil +gen dlnhours = D.lnhours + +constraint 1 [u1]L.u2 = 1 +constraint 2 [u1]e.u1 = 1 +constraint 3 [u3]e.u3 = 1 +constraint 4 [dlncaputil]u1 = 1 +constraint 5 [dlnhours]u3 = 1 + +sspace (u1 L.u1 L.u2 e.u1, state noconstant) /// + (u2 e.u1, state noconstant) /// + (u3 L.u1 L.u3 e.u3, state noconstant) /// + (dlncaputil u1, noconstant) /// + (dlnhours u3, noconstant), /// + constraints(1/5) technique(nr) covstate(diagonal) + +// in-sample predict + forecast 5 new observations (sample ends at 1999m12) +tsappend, add(5) +predict predict_varma11_1, dynamic(tm(2009m1)) equation(dlncaputil) +predict predict_varma11_2, dynamic(tm(2009m1)) equation(dlnhours) + +// predict + dynamic predict + forecast +predict dyn_predict_varma11_1, dynamic(tm(2000m1)) equation(dlncaputil) +predict dyn_predict_varma11_2, dynamic(tm(2000m1)) equation(dlnhours) + +// VMA(1) +// Note: Stata does not have this built-in, so we need to create the state space form ourselves +constraint 1 [u1]L.u2 = 1 +constraint 2 [u1]e.u1 = 1 +constraint 3 [u3]e.u3 = 1 +constraint 4 [dlncaputil]u1 = 1 +constraint 5 [dlnhours]u3 = 1 + +sspace (u1 L.u2 e.u1, state noconstant) /// + (u2 e.u1, state noconstant) /// + (u3 e.u3, state noconstant) /// + (dlncaputil u1, noconstant) /// + (dlnhours u3, noconstant), /// + constraints(1/5) technique(nr) covstate(diagonal) + +// in-sample predict + forecast 5 new observations (sample ends at 1999m12) +predict predict_vma1_1, dynamic(tm(2009m1)) equation(dlncaputil) +predict predict_vma1_2, dynamic(tm(2009m1)) equation(dlnhours) + +// predict + dynamic predict + forecast +predict dyn_predict_vma1_1, dynamic(tm(2000m1)) equation(dlncaputil) +predict dyn_predict_vma1_2, dynamic(tm(2000m1)) equation(dlnhours) + + +outsheet pred* dyn* using results_varmax_stata.csv, comma replace diff --git a/statsmodels/tsa/statespace/tests/results/test_wpi1_stata.do b/statsmodels/tsa/statespace/tests/results/test_wpi1_stata.do new file mode 100644 index 0000000..3924ce5 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/results/test_wpi1_stata.do @@ -0,0 +1,22 @@ +use https://www.stata-press.com/data/r12/wpi1, clear +gen dwpi = D.wpi + +// Estimate an AR(3) via a state-space model +// (to test prediction, standardized residuals, predicted states) +constraint 1 [dwpi]u1 = 1 +constraint 2 [u2]L.u1 = 1 +constraint 3 [u3]L.u2 = 1 + +sspace (u1 L.u1 L.u2 L.u3, state noconstant) /// + (u2 L.u1, state noconstant noerror) /// + (u3 L.u2, state noconstant noerror) /// + (dwpi u1, noconstant noerror), /// + constraints(1/3) covstate(diagonal) + +predict dep* +predict sr*, rstandard +predict sp*, states smethod(onestep) // predicted states +predict sf*, states smethod(filter) // filtered states +predict sm*, states smethod(smooth) // smoothed states + +outsheet using results_wpi1_ar3_stata.csv, comma diff --git a/statsmodels/tsa/statespace/tests/test_collapsed.py b/statsmodels/tsa/statespace/tests/test_collapsed.py new file mode 100644 index 0000000..0fb87ed --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_collapsed.py @@ -0,0 +1,739 @@ +""" +Tests for collapsed observation vector + +These tests cannot be run for the Clark 1989 model since the dimension of +observations (2) is smaller than the number of states (6). + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import numpy as np +import pandas as pd +import pytest +import os + +from statsmodels import datasets +from statsmodels.tsa.statespace.mlemodel import MLEModel +from statsmodels.tsa.statespace.kalman_filter import ( + FILTER_UNIVARIATE) +from statsmodels.tsa.statespace.kalman_smoother import ( + SMOOTH_CLASSICAL, SMOOTH_ALTERNATIVE, + SMOOTH_UNIVARIATE) +from statsmodels.tsa.statespace.tests.results import results_kalman_filter +from numpy.testing import assert_equal, assert_allclose + +current_path = os.path.dirname(os.path.abspath(__file__)) + + +class Trivariate(object): + """ + Tests collapsing three-dimensional observation data to two-dimensional + """ + @classmethod + def setup_class(cls, dtype=float, alternate_timing=False, **kwargs): + cls.results = results_kalman_filter.uc_bi + + # GDP and Unemployment, Quarterly, 1948.1 - 1995.3 + data = pd.DataFrame( + cls.results['data'], + index=pd.date_range('1947-01-01', '1995-07-01', freq='QS'), + columns=['GDP', 'UNEMP'] + )[4:] + data['GDP'] = np.log(data['GDP']) + data['UNEMP'] = (data['UNEMP']/100) + data['X'] = np.exp(data['GDP']) * data['UNEMP'] + + k_states = 2 + cls.mlemodel = MLEModel(data, k_states=k_states, **kwargs) + cls.model = cls.mlemodel.ssm + if alternate_timing: + cls.model.timing_init_filtered = True + + # Statespace representation + cls.model['selection'] = np.eye(cls.model.k_states) + + # Update matrices with test parameters + cls.model['design'] = np.array([[0.5, 0.2], + [0, 0.8], + [1, -0.5]]) + cls.model['transition'] = np.array([[0.4, 0.5], + [1, 0]]) + cls.model['obs_cov'] = np.diag([0.2, 1.1, 0.5]) + cls.model['state_cov'] = np.diag([2., 1]) + + # Initialization + cls.model.initialize_approximate_diffuse() + + def test_using_collapsed(self): + # Test to make sure the results_b actually used a collapsed Kalman + # filtering approach (i.e. that the flag being set actually caused the + # filter to not use the conventional filter) + + assert not self.results_a.filter_collapsed + assert self.results_b.filter_collapsed + + assert self.results_a.collapsed_forecasts is None + assert self.results_b.collapsed_forecasts is not None + + assert_equal(self.results_a.forecasts.shape[0], 3) + assert_equal(self.results_b.collapsed_forecasts.shape[0], 2) + + def test_forecasts(self): + assert_allclose( + self.results_a.forecasts[0, :], + self.results_b.forecasts[0, :], + ) + + def test_forecasts_error(self): + assert_allclose( + self.results_a.forecasts_error[0, :], + self.results_b.forecasts_error[0, :] + ) + + def test_forecasts_error_cov(self): + assert_allclose( + self.results_a.forecasts_error_cov[0, 0, :], + self.results_b.forecasts_error_cov[0, 0, :] + ) + + def test_filtered_state(self): + assert_allclose( + self.results_a.filtered_state, + self.results_b.filtered_state + ) + + def test_filtered_state_cov(self): + assert_allclose( + self.results_a.filtered_state_cov, + self.results_b.filtered_state_cov + ) + + def test_predicted_state(self): + assert_allclose( + self.results_a.predicted_state, + self.results_b.predicted_state + ) + + def test_predicted_state_cov(self): + assert_allclose( + self.results_a.predicted_state_cov, + self.results_b.predicted_state_cov + ) + + def test_loglike(self): + assert_allclose( + self.results_a.llf_obs, + self.results_b.llf_obs + ) + + def test_smoothed_states(self): + assert_allclose( + self.results_a.smoothed_state, + self.results_b.smoothed_state + ) + + def test_smoothed_states_cov(self): + assert_allclose( + self.results_a.smoothed_state_cov, + self.results_b.smoothed_state_cov, + atol=1e-4 + ) + + def test_smoothed_states_autocov(self): + assert_allclose( + self.results_a.smoothed_state_autocov, + self.results_b.smoothed_state_autocov + ) + + # Skipped because "measurement" refers to different things; even different + # dimensions + @pytest.mark.skip + def test_smoothed_measurement_disturbance(self): + assert_allclose( + self.results_a.smoothed_measurement_disturbance, + self.results_b.smoothed_measurement_disturbance + ) + + # Skipped because "measurement" refers to different things; even different + # dimensions + @pytest.mark.skip + def test_smoothed_measurement_disturbance_cov(self): + assert_allclose( + self.results_a.smoothed_measurement_disturbance_cov, + self.results_b.smoothed_measurement_disturbance_cov + ) + + def test_smoothed_state_disturbance(self): + assert_allclose( + self.results_a.smoothed_state_disturbance, + self.results_b.smoothed_state_disturbance + ) + + def test_smoothed_state_disturbance_cov(self): + assert_allclose( + self.results_a.smoothed_state_disturbance_cov, + self.results_b.smoothed_state_disturbance_cov + ) + + def test_simulation_smoothed_state(self): + assert_allclose( + self.sim_a.simulated_state, + self.sim_a.simulated_state + ) + + def test_simulation_smoothed_measurement_disturbance(self): + assert_allclose( + self.sim_a.simulated_measurement_disturbance, + self.sim_a.simulated_measurement_disturbance + ) + + def test_simulation_smoothed_state_disturbance(self): + assert_allclose( + self.sim_a.simulated_state_disturbance, + self.sim_a.simulated_state_disturbance + ) + + +class TestTrivariateConventional(Trivariate): + + @classmethod + def setup_class(cls, dtype=float, **kwargs): + super(TestTrivariateConventional, cls).setup_class(dtype, **kwargs) + n_disturbance_variates = ( + (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs + ) + + # Collapsed filtering, smoothing, and simulation smoothing + cls.model.filter_conventional = True + cls.model.filter_collapsed = True + cls.results_b = cls.model.smooth() + cls.sim_b = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + # Conventional filtering, smoothing, and simulation smoothing + cls.model.filter_collapsed = False + cls.results_a = cls.model.smooth() + cls.sim_a = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + +class TestTrivariateConventionalAlternate(TestTrivariateConventional): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestTrivariateConventionalAlternate, cls).setup_class( + alternate_timing=True, *args, **kwargs) + + def test_using_alterate(self): + assert(self.model._kalman_filter.filter_timing == 1) + + +class TestTrivariateConventionalPartialMissing(Trivariate): + @classmethod + def setup_class(cls, dtype=float, **kwargs): + super(TestTrivariateConventionalPartialMissing, cls).setup_class( + dtype, **kwargs) + n_disturbance_variates = ( + (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs + ) + + # Set partially missing data + cls.model.endog[:2, 10:180] = np.nan + + # Collapsed filtering, smoothing, and simulation smoothing + cls.model.filter_conventional = True + cls.model.filter_collapsed = True + cls.results_b = cls.model.smooth() + cls.sim_b = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + # Conventional filtering, smoothing, and simulation smoothing + cls.model.filter_collapsed = False + cls.results_a = cls.model.smooth() + cls.sim_a = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + +class TestTrivariateConventionalPartialMissingAlternate( + TestTrivariateConventionalPartialMissing): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestTrivariateConventionalPartialMissingAlternate, + cls).setup_class(alternate_timing=True, *args, **kwargs) + + def test_using_alterate(self): + assert(self.model._kalman_filter.filter_timing == 1) + + +class TestTrivariateConventionalAllMissing(Trivariate): + @classmethod + def setup_class(cls, dtype=float, **kwargs): + super(TestTrivariateConventionalAllMissing, cls).setup_class( + dtype, **kwargs) + n_disturbance_variates = ( + (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs + ) + + # Set partially missing data + cls.model.endog[:, 10:180] = np.nan + + # Collapsed filtering, smoothing, and simulation smoothing + cls.model.filter_conventional = True + cls.model.filter_collapsed = True + cls.results_b = cls.model.smooth() + cls.sim_b = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + # Conventional filtering, smoothing, and simulation smoothing + cls.model.filter_collapsed = False + cls.results_a = cls.model.smooth() + cls.sim_a = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + +class TestTrivariateConventionalAllMissingAlternate( + TestTrivariateConventionalAllMissing): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestTrivariateConventionalAllMissingAlternate, cls).setup_class( + alternate_timing=True, *args, **kwargs) + + def test_using_alterate(self): + assert(self.model._kalman_filter.filter_timing == 1) + + +class TestTrivariateUnivariate(Trivariate): + @classmethod + def setup_class(cls, dtype=float, **kwargs): + super(TestTrivariateUnivariate, cls).setup_class(dtype, **kwargs) + n_disturbance_variates = ( + (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs + ) + + # Collapsed filtering, smoothing, and simulation smoothing + cls.model.filter_univariate = True + cls.model.filter_collapsed = True + cls.results_b = cls.model.smooth() + cls.sim_b = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + # Univariate filtering, smoothing, and simulation smoothing + cls.model.filter_collapsed = False + cls.results_a = cls.model.smooth() + cls.sim_a = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + +class TestTrivariateUnivariateAlternate(TestTrivariateUnivariate): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestTrivariateUnivariateAlternate, cls).setup_class( + alternate_timing=True, *args, **kwargs) + + def test_using_alterate(self): + assert(self.model._kalman_filter.filter_timing == 1) + + +class TestTrivariateUnivariatePartialMissing(Trivariate): + @classmethod + def setup_class(cls, dtype=float, **kwargs): + super(TestTrivariateUnivariatePartialMissing, cls).setup_class( + dtype, **kwargs) + n_disturbance_variates = ( + (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs + ) + + # Set partially missing data + cls.model.endog[:2, 10:180] = np.nan + + # Collapsed filtering, smoothing, and simulation smoothing + cls.model.filter_univariate = True + cls.model.filter_collapsed = True + cls.results_b = cls.model.smooth() + cls.sim_b = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + # Univariate filtering, smoothing, and simulation smoothing + cls.model.filter_collapsed = False + cls.results_a = cls.model.smooth() + cls.sim_a = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + +class TestTrivariateUnivariatePartialMissingAlternate( + TestTrivariateUnivariatePartialMissing): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestTrivariateUnivariatePartialMissingAlternate, + cls).setup_class(alternate_timing=True, *args, **kwargs) + + def test_using_alterate(self): + assert(self.model._kalman_filter.filter_timing == 1) + + +class TestTrivariateUnivariateAllMissing(Trivariate): + @classmethod + def setup_class(cls, dtype=float, **kwargs): + super(TestTrivariateUnivariateAllMissing, cls).setup_class( + dtype, **kwargs) + n_disturbance_variates = ( + (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs + ) + + # Set partially missing data + cls.model.endog[:, 10:180] = np.nan + + # Univariate filtering, smoothing, and simulation smoothing + cls.model.filter_univariate = True + cls.model.filter_collapsed = True + cls.results_b = cls.model.smooth() + cls.sim_b = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + # Conventional filtering, smoothing, and simulation smoothing + cls.model.filter_collapsed = False + cls.results_a = cls.model.smooth() + cls.sim_a = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + +class TestTrivariateUnivariateAllMissingAlternate( + TestTrivariateUnivariateAllMissing): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestTrivariateUnivariateAllMissingAlternate, cls).setup_class( + alternate_timing=True, *args, **kwargs) + + def test_using_alterate(self): + assert(self.model._kalman_filter.filter_timing == 1) + + +class TestDFM(object): + @classmethod + def create_model(cls, obs, **kwargs): + # Create the model with typical state space + mod = MLEModel(obs, k_states=2, k_posdef=2, **kwargs) + mod['design'] = np.array([[-32.47143586, 17.33779024], + [-7.40264169, 1.69279859], + [-209.04702853, 125.2879374]]) + mod['obs_cov'] = np.diag( + np.array([0.0622668, 1.95666886, 58.37473642])) + mod['transition'] = np.array([[0.29935707, 0.33289005], + [-0.7639868, 1.2844237]]) + mod['selection'] = np.eye(2) + mod['state_cov'] = np.array([[1.2, -0.25], + [-0.25, 1.1]]) + mod.initialize_approximate_diffuse(1e6) + return mod + + @classmethod + def collapse(cls, obs, **kwargs): + mod = cls.create_model(obs, **kwargs) + mod.smooth([], return_ssm=True) + + _ss = mod.ssm._statespace + out = np.zeros((mod.nobs, mod.k_states)) + for t in range(mod.nobs): + _ss.seek(t, mod.ssm.filter_univariate, 1) + out[t] = np.array(_ss.collapse_obs) + return out + + @classmethod + def setup_class(cls, which='mixed', *args, **kwargs): + # Data + dta = datasets.macrodata.load_pandas().data + dta.index = pd.date_range(start='1959-01-01', + end='2009-7-01', freq='QS') + levels = dta[['realgdp', 'realcons', 'realinv']] + obs = np.log(levels).diff().iloc[1:] * 400 + + if which == 'all': + obs.iloc[:50, :] = np.nan + obs.iloc[119:130, :] = np.nan + elif which == 'partial': + obs.iloc[0:50, 0] = np.nan + obs.iloc[119:130, 0] = np.nan + elif which == 'mixed': + obs.iloc[0:50, 0] = np.nan + obs.iloc[19:70, 1] = np.nan + obs.iloc[39:90, 2] = np.nan + obs.iloc[119:130, 0] = np.nan + obs.iloc[119:130, 2] = np.nan + + mod = cls.create_model(obs, **kwargs) + cls.model = mod.ssm + + n_disturbance_variates = ( + (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs + ) + np.random.seed(1234) + dv = np.random.normal(size=n_disturbance_variates) + isv = np.random.normal(size=cls.model.k_states) + + # Collapsed filtering, smoothing, and simulation smoothing + cls.model.filter_collapsed = True + cls.results_b = cls.model.smooth() + cls.sim_b = cls.model.simulation_smoother() + cls.sim_b.simulate(disturbance_variates=dv, initial_state_variates=isv) + + # Conventional filtering, smoothing, and simulation smoothing + cls.model.filter_collapsed = False + cls.results_a = cls.model.smooth() + cls.sim_a = cls.model.simulation_smoother() + cls.sim_a.simulate(disturbance_variates=dv, initial_state_variates=isv) + + # Create the model with augmented state space + kwargs.pop('filter_collapsed', None) + mod = MLEModel(obs, k_states=4, k_posdef=2, **kwargs) + mod['design', :3, :2] = np.array([[-32.47143586, 17.33779024], + [-7.40264169, 1.69279859], + [-209.04702853, 125.2879374]]) + mod['obs_cov'] = np.diag( + np.array([0.0622668, 1.95666886, 58.37473642])) + mod['transition', :2, :2] = np.array([[0.29935707, 0.33289005], + [-0.7639868, 1.2844237]]) + mod['transition', 2:, :2] = np.eye(2) + mod['selection', :2, :2] = np.eye(2) + mod['state_cov'] = np.array([[1.2, -0.25], + [-0.25, 1.1]]) + + mod.initialize_approximate_diffuse(1e6) + cls.augmented_model = mod.ssm + cls.augmented_results = mod.ssm.smooth() + + def test_using_collapsed(self): + # Test to make sure the results_b actually used a collapsed Kalman + # filtering approach (i.e. that the flag being set actually caused the + # filter to not use the conventional filter) + + assert not self.results_a.filter_collapsed + assert self.results_b.filter_collapsed + + assert self.results_a.collapsed_forecasts is None + assert self.results_b.collapsed_forecasts is not None + + assert_equal(self.results_a.forecasts.shape[0], 3) + assert_equal(self.results_b.collapsed_forecasts.shape[0], 2) + + def test_forecasts(self): + assert_allclose( + self.results_a.forecasts[0, :], + self.results_b.forecasts[0, :], + ) + + def test_forecasts_error(self): + assert_allclose( + self.results_a.forecasts_error[0, :], + self.results_b.forecasts_error[0, :] + ) + + def test_forecasts_error_cov(self): + assert_allclose( + self.results_a.forecasts_error_cov[0, 0, :], + self.results_b.forecasts_error_cov[0, 0, :] + ) + + def test_filtered_state(self): + assert_allclose( + self.results_a.filtered_state, + self.results_b.filtered_state + ) + + def test_filtered_state_cov(self): + assert_allclose( + self.results_a.filtered_state_cov, + self.results_b.filtered_state_cov + ) + + def test_predicted_state(self): + assert_allclose( + self.results_a.predicted_state, + self.results_b.predicted_state + ) + + def test_predicted_state_cov(self): + assert_allclose( + self.results_a.predicted_state_cov, + self.results_b.predicted_state_cov + ) + + def test_loglike(self): + assert_allclose( + self.results_a.llf_obs, + self.results_b.llf_obs + ) + + def test_smoothed_states(self): + assert_allclose( + self.results_a.smoothed_state, + self.results_b.smoothed_state + ) + + def test_smoothed_states_cov(self): + assert_allclose( + self.results_a.smoothed_state_cov, + self.results_b.smoothed_state_cov, + atol=1e-4 + ) + + def test_smoothed_states_autocov(self): + # Cov(\alpha_{t+1}, \alpha_t) + # Test collapsed against non-collapsed + assert_allclose( + self.results_a.smoothed_state_autocov, + self.results_b.smoothed_state_autocov + ) + + # Directly test using the augmented model + # Initialization makes these two methods slightly different for the + # first few observations + assert_allclose(self.results_a.smoothed_state_autocov[:, :, 0:5], + self.augmented_results.smoothed_state_cov[:2, 2:, 1:6], + atol=1e-4) + assert_allclose(self.results_a.smoothed_state_autocov[:, :, 5:-1], + self.augmented_results.smoothed_state_cov[:2, 2:, 6:], + atol=1e-7) + + # Skipped because "measurement" refers to different things; even different + # dimensions + @pytest.mark.skip + def test_smoothed_measurement_disturbance(self): + assert_allclose( + self.results_a.smoothed_measurement_disturbance, + self.results_b.smoothed_measurement_disturbance + ) + + # Skipped because "measurement" refers to different things; even different + # dimensions + @pytest.mark.skip + def test_smoothed_measurement_disturbance_cov(self): + assert_allclose( + self.results_a.smoothed_measurement_disturbance_cov, + self.results_b.smoothed_measurement_disturbance_cov + ) + + def test_smoothed_state_disturbance(self): + assert_allclose( + self.results_a.smoothed_state_disturbance, + self.results_b.smoothed_state_disturbance + ) + + def test_smoothed_state_disturbance_cov(self): + assert_allclose( + self.results_a.smoothed_state_disturbance_cov, + self.results_b.smoothed_state_disturbance_cov + ) + + def test_simulation_smoothed_state(self): + assert_allclose( + self.sim_a.simulated_state, + self.sim_b.simulated_state + ) + + # Skipped because "measurement" refers to different things; even different + # dimensions + @pytest.mark.skip + def test_simulation_smoothed_measurement_disturbance(self): + assert_allclose( + self.sim_a.simulated_measurement_disturbance, + self.sim_b.simulated_measurement_disturbance + ) + + def test_simulation_smoothed_state_disturbance(self): + assert_allclose( + self.sim_a.simulated_state_disturbance, + self.sim_b.simulated_state_disturbance + ) + + +class TestDFMClassicalSmoothing(TestDFM): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestDFMClassicalSmoothing, cls).setup_class( + smooth_method=SMOOTH_CLASSICAL, *args, **kwargs) + + def test_smooth_method(self): + assert_equal(self.model.smooth_method, SMOOTH_CLASSICAL) + assert_equal(self.model._kalman_smoother.smooth_method, + SMOOTH_CLASSICAL) + assert_equal(self.model._kalman_smoother._smooth_method, + SMOOTH_CLASSICAL) + + +class TestDFMUnivariateSmoothing(TestDFM): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestDFMUnivariateSmoothing, cls).setup_class( + filter_method=FILTER_UNIVARIATE, *args, **kwargs) + + def test_smooth_method(self): + assert_equal(self.model.smooth_method, 0) + assert_equal(self.model._kalman_smoother.smooth_method, 0) + assert_equal(self.model._kalman_smoother._smooth_method, + SMOOTH_UNIVARIATE) + + +class TestDFMAlternativeSmoothing(TestDFM): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestDFMAlternativeSmoothing, cls).setup_class( + smooth_method=SMOOTH_ALTERNATIVE, **kwargs) + + def test_smooth_method(self): + assert_equal(self.model.smooth_method, SMOOTH_ALTERNATIVE) + assert_equal(self.model._kalman_smoother.smooth_method, + SMOOTH_ALTERNATIVE) + assert_equal(self.model._kalman_smoother._smooth_method, + SMOOTH_ALTERNATIVE) + + +class TestDFMMeasurementDisturbance(TestDFM): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestDFMMeasurementDisturbance, cls).setup_class( + smooth_method=SMOOTH_CLASSICAL, which='none', **kwargs) + + def test_smoothed_state_disturbance(self): + assert_allclose( + self.results_a.smoothed_state_disturbance, + self.results_b.smoothed_state_disturbance, atol=1e-7) + + def test_smoothed_measurement_disturbance(self): + assert_allclose( + self.collapse(self.results_a.smoothed_measurement_disturbance.T).T, + self.results_b.smoothed_measurement_disturbance, atol=1e-7) + + def test_simulation_smoothed_measurement_disturbance(self): + assert_allclose( + self.collapse(self.sim_a.simulated_measurement_disturbance.T), + self.sim_b.simulated_measurement_disturbance.T, atol=1e-7) + + def test_simulation_smoothed_state_disturbance(self): + assert_allclose( + self.sim_a.simulated_state_disturbance, + self.sim_b.simulated_state_disturbance, atol=1e-7) diff --git a/statsmodels/tsa/statespace/tests/test_concentrated.py b/statsmodels/tsa/statespace/tests/test_concentrated.py new file mode 100644 index 0000000..80fcc6e --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_concentrated.py @@ -0,0 +1,290 @@ +""" +Tests for concentrating the scale out of the loglikelihood function + +Note: the univariate cases is well tested in test_sarimax.py + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import numpy as np +import pandas as pd +from statsmodels.tools.tools import Bunch +from .results import results_varmax +from statsmodels.tsa.statespace import sarimax, varmax +from numpy.testing import assert_raises, assert_allclose + + +def get_sarimax_models(endog, filter_univariate=False, **kwargs): + kwargs.setdefault('tolerance', 0) + # Construct a concentrated version of the given SARIMAX model, and get + # the estimate of the scale + mod_conc = sarimax.SARIMAX(endog, **kwargs) + mod_conc.ssm.filter_concentrated = True + mod_conc.ssm.filter_univariate = filter_univariate + params_conc = mod_conc.start_params + params_conc[-1] = 1 + res_conc = mod_conc.smooth(params_conc) + scale = res_conc.scale + + # Construct the non-concentrated version + mod_orig = sarimax.SARIMAX(endog, **kwargs) + mod_orig.ssm.filter_univariate = filter_univariate + params_orig = params_conc.copy() + k_vars = 1 + kwargs.get('measurement_error', False) + params_orig[-k_vars:] = scale * params_conc[-k_vars:] + res_orig = mod_orig.smooth(params_orig) + + return Bunch(**{'mod_conc': mod_conc, 'params_conc': params_conc, + 'mod_orig': mod_orig, 'params_orig': params_orig, + 'res_conc': res_conc, 'res_orig': res_orig, + 'scale': scale}) + + +def test_concentrated_loglike_sarimax(): + # Note: we won't use the "concentrate_scale" option to SARIMAX for this + # test, which is a lower-level test of the Kalman filter using the SARIMAX + # model as an example + nobs = 30 + np.random.seed(28953) + endog = np.random.normal(size=nobs) + kwargs = {} + + # Typical model + out = get_sarimax_models(endog) + assert_allclose(out.res_conc.llf, out.res_orig.llf) + assert_allclose(out.res_conc.llf_obs, out.res_orig.llf_obs) + assert_allclose(out.mod_conc.loglike(out.params_conc), + out.mod_orig.loglike(out.params_orig)) + assert_allclose(out.mod_conc.loglikeobs(out.params_conc), + out.mod_orig.loglikeobs(out.params_orig)) + + # Add missing entries + endog[2:10] = np.nan + out = get_sarimax_models(endog) + assert_allclose(out.res_conc.llf, out.res_orig.llf) + assert_allclose(out.res_conc.llf_obs, out.res_orig.llf_obs) + assert_allclose(out.mod_conc.loglike(out.params_conc), + out.mod_orig.loglike(out.params_orig)) + assert_allclose(out.mod_conc.loglikeobs(out.params_conc), + out.mod_orig.loglikeobs(out.params_orig)) + + # Add seasonal differencing + # Note: now, due to differences in approximate diffuse initialization, + # we may have differences in the first 2 observations (but notice that + # this does not affect the computed joint log-likelihood because those + # observations are not included there) + kwargs['seasonal_order'] = (1, 1, 1, 2) + out = get_sarimax_models(endog, **kwargs) + assert_allclose(out.res_conc.llf, out.res_orig.llf) + assert_allclose(out.res_conc.llf_obs[2:], out.res_orig.llf_obs[2:]) + assert_allclose(out.mod_conc.loglike(out.params_conc), + out.mod_orig.loglike(out.params_orig)) + assert_allclose(out.mod_conc.loglikeobs(out.params_conc)[2:], + out.mod_orig.loglikeobs(out.params_orig)[2:]) + + # Add loglikelihood burn, trend, and exog + kwargs['loglikelihood_burn'] = 5 + kwargs['trend'] = 'c' + kwargs['exog'] = np.ones(nobs) + out = get_sarimax_models(endog, **kwargs) + assert_allclose(out.res_conc.llf, out.res_orig.llf) + assert_allclose(out.res_conc.llf_obs[2:], out.res_orig.llf_obs[2:]) + assert_allclose(out.mod_conc.loglike(out.params_conc), + out.mod_orig.loglike(out.params_orig)) + assert_allclose(out.mod_conc.loglikeobs(out.params_conc)[2:], + out.mod_orig.loglikeobs(out.params_orig)[2:]) + + +def test_concentrated_predict_sarimax(): + # Note: we won't use the "concentrate_scale" option to SARIMAX for this + # test, which is a lower-level test of the Kalman filter using the SARIMAX + # model as an example + nobs = 30 + np.random.seed(28953) + endog = np.random.normal(size=nobs) + + # Typical model + out = get_sarimax_models(endog) + assert_allclose(out.res_conc.predict(), out.res_orig.predict()) + assert_allclose(out.res_conc.forecast(5), out.res_orig.forecast(5)) + assert_allclose(out.res_conc.predict(start=0, end=45, dynamic=10), + out.res_orig.predict(start=0, end=45, dynamic=10)) + + +def test_fixed_scale_sarimax(): + # Test that the fixed_scale context manager works + nobs = 30 + np.random.seed(28953) + endog = np.random.normal(size=nobs) + kwargs = { + 'seasonal_order': (1, 1, 1, 2), + 'trend': 'ct', + 'exog': np.ones(nobs) + } + + # Construct a concentrated version of the given SARIMAX model + mod_conc = sarimax.SARIMAX(endog, concentrate_scale=True, **kwargs) + + # Construct the non-concentrated version + mod_orig = sarimax.SARIMAX(endog, **kwargs) + + # Modify the scale parameter + params = mod_orig.start_params + params[-1] *= 1.2 + + # Test that these are not equal in the default computation + assert_raises(AssertionError, assert_allclose, + mod_conc.loglike(params[:-1]), mod_orig.loglike(params)) + + # Now test that the llf is equal when we use the fixed_scale decorator + with mod_conc.ssm.fixed_scale(params[-1]): + res1 = mod_conc.smooth(params[:-1]) + llf1 = mod_conc.loglike(params[:-1]) + llf_obs1 = mod_conc.loglikeobs(params[:-1]) + + res2 = mod_orig.smooth(params) + llf2 = mod_orig.loglike(params) + llf_obs2 = mod_orig.loglikeobs(params) + + assert_allclose(res1.llf, res2.llf) + assert_allclose(res1.llf_obs[2:], res2.llf_obs[2:]) + assert_allclose(llf1, llf2) + assert_allclose(llf_obs1, llf_obs2) + + +def check_concentrated_scale(filter_univariate=False, missing=False, **kwargs): + # Test that concentrating the scale out of the likelihood function works + index = pd.date_range('1960-01-01', '1982-10-01', freq='QS') + dta = pd.DataFrame(results_varmax.lutkepohl_data, + columns=['inv', 'inc', 'consump'], index=index) + dta['dln_inv'] = np.log(dta['inv']).diff() + dta['dln_inc'] = np.log(dta['inc']).diff() + dta['dln_consump'] = np.log(dta['consump']).diff() + + endog = dta.loc['1960-04-01':'1978-10-01', ['dln_inv', 'dln_inc']] + + # Optionally add some missing observations + if missing: + endog.iloc[0, 0] = np.nan + endog.iloc[3:5, :] = np.nan + endog.iloc[8, 1] = np.nan + + # Sometimes we can have slight differences if the Kalman filters + # converge at different observations, so disable convergence. + kwargs.update({'tolerance': 0}) + + mod_orig = varmax.VARMAX(endog, **kwargs) + mod_conc = varmax.VARMAX(endog, **kwargs) + mod_conc.ssm.filter_concentrated = True + + mod_orig.ssm.filter_univariate = filter_univariate + mod_conc.ssm.filter_univariate = filter_univariate + + # Since VARMAX doesn't explicitly allow concentrating out the scale, for + # now we will simulate it by setting the first variance to be 1. + # Note that start_scale will not be the scale used for the non-concentrated + # model, because we need to use the MLE scale estimated by the + # concentrated model. + conc_params = mod_conc.start_params + start_scale = conc_params[mod_conc._params_state_cov][0] + if kwargs.get('error_cov_type', 'unstructured') == 'diagonal': + conc_params[mod_conc._params_state_cov] /= start_scale + else: + conc_params[mod_conc._params_state_cov] /= start_scale**0.5 + + # Concentrated model smoothing + res_conc = mod_conc.smooth(conc_params) + scale = res_conc.scale + + # Map the concentrated parameters to the non-concentrated model + orig_params = conc_params.copy() + if kwargs.get('error_cov_type', 'unstructured') == 'diagonal': + orig_params[mod_orig._params_state_cov] *= scale + else: + orig_params[mod_orig._params_state_cov] *= scale**0.5 + + # Measurement error variances also get rescaled + orig_params[mod_orig._params_obs_cov] *= scale + + # Non-oncentrated model smoothing + res_orig = mod_orig.smooth(orig_params) + + # Test loglike + # Need to reduce the tolerance when we have measurement error. + assert_allclose(res_conc.llf, res_orig.llf) + + # Test state space representation matrices + for name in mod_conc.ssm.shapes: + if name == 'obs': + continue + assert_allclose(getattr(res_conc.filter_results, name), + getattr(res_orig.filter_results, name)) + + # Test filter / smoother output + scale = res_conc.scale + d = res_conc.loglikelihood_burn + + filter_attr = ['predicted_state', 'filtered_state', 'forecasts', + 'forecasts_error', 'kalman_gain'] + + for name in filter_attr: + actual = getattr(res_conc.filter_results, name) + desired = getattr(res_orig.filter_results, name) + assert_allclose(actual, desired, atol=1e-7) + + # Note: don't want to compare the elements from any diffuse + # initialization for things like covariances, so only compare for + # periods past the loglikelihood_burn period + filter_attr_burn = ['standardized_forecasts_error', + 'predicted_state_cov', 'filtered_state_cov', + 'tmp1', 'tmp2', 'tmp3', 'tmp4'] + + for name in filter_attr_burn: + actual = getattr(res_conc.filter_results, name)[..., d:] + desired = getattr(res_orig.filter_results, name)[..., d:] + assert_allclose(actual, desired, atol=1e-7) + + smoothed_attr = ['smoothed_state', 'smoothed_state_cov', + 'smoothed_state_autocov', + 'smoothed_state_disturbance', + 'smoothed_state_disturbance_cov', + 'smoothed_measurement_disturbance', + 'smoothed_measurement_disturbance_cov', + 'scaled_smoothed_estimator', + 'scaled_smoothed_estimator_cov', 'smoothing_error', + 'smoothed_forecasts', 'smoothed_forecasts_error', + 'smoothed_forecasts_error_cov'] + + for name in smoothed_attr: + actual = getattr(res_conc.filter_results, name) + desired = getattr(res_orig.filter_results, name) + assert_allclose(actual, desired, atol=1e-7) + + # Test prediction output + nobs = mod_conc.nobs + pred_conc = res_conc.get_prediction(start=10, end=nobs + 50, dynamic=40) + pred_orig = res_conc.get_prediction(start=10, end=nobs + 50, dynamic=40) + + assert_allclose(pred_conc.predicted_mean, pred_orig.predicted_mean) + assert_allclose(pred_conc.se_mean, pred_orig.se_mean) + + +def test_concentrated_scale_conventional(): + check_concentrated_scale(filter_univariate=False) + check_concentrated_scale(filter_univariate=False, measurement_error=True) + check_concentrated_scale(filter_univariate=False, + error_cov_type='diagonal') + check_concentrated_scale(filter_univariate=False, missing=True) + check_concentrated_scale(filter_univariate=False, missing=True, + loglikelihood_burn=10) + + +def test_concentrated_scale_univariate(): + check_concentrated_scale(filter_univariate=True) + check_concentrated_scale(filter_univariate=True, measurement_error=True) + check_concentrated_scale(filter_univariate=True, error_cov_type='diagonal') + check_concentrated_scale(filter_univariate=True, missing=True) + check_concentrated_scale(filter_univariate=True, missing=True, + loglikelihood_burn=10) diff --git a/statsmodels/tsa/statespace/tests/test_dynamic_factor.py b/statsmodels/tsa/statespace/tests/test_dynamic_factor.py new file mode 100644 index 0000000..c789f5d --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_dynamic_factor.py @@ -0,0 +1,783 @@ +""" +Tests for VARMAX models + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function +import os +import re +import warnings + +import numpy as np +from numpy.testing import assert_equal, assert_raises, assert_allclose +import pandas as pd +import pytest + +from statsmodels.tsa.statespace import dynamic_factor +from .results import results_varmax, results_dynamic_factor +from statsmodels.iolib.summary import forg + +current_path = os.path.dirname(os.path.abspath(__file__)) + +output_path = os.path.join('results', 'results_dynamic_factor_stata.csv') +output_results = pd.read_csv(os.path.join(current_path, output_path)) + + +class CheckDynamicFactor(object): + @classmethod + def setup_class(cls, true, k_factors, factor_order, cov_type='approx', + included_vars=['dln_inv', 'dln_inc', 'dln_consump'], + demean=False, filter=True, **kwargs): + cls.true = true + # 1960:Q1 - 1982:Q4 + dta = pd.DataFrame( + results_varmax.lutkepohl_data, columns=['inv', 'inc', 'consump'], + index=pd.date_range('1960-01-01', '1982-10-01', freq='QS')) + + dta['dln_inv'] = np.log(dta['inv']).diff() + dta['dln_inc'] = np.log(dta['inc']).diff() + dta['dln_consump'] = np.log(dta['consump']).diff() + + endog = dta.loc['1960-04-01':'1978-10-01', included_vars] + + if demean: + endog -= dta.iloc[1:][included_vars].mean() + + cls.model = dynamic_factor.DynamicFactor(endog, k_factors=k_factors, + factor_order=factor_order, + **kwargs) + + if filter: + cls.results = cls.model.smooth(true['params'], cov_type=cov_type) + + def test_params(self): + # Smoke test to make sure the start_params are well-defined and + # lead to a well-defined model + self.model.filter(self.model.start_params) + # Similarly a smoke test for param_names + assert_equal(len(self.model.start_params), len(self.model.param_names)) + # Finally make sure the transform and untransform do their job + actual = self.model.transform_params( + self.model.untransform_params(self.model.start_params)) + assert_allclose(actual, self.model.start_params) + # Also in the case of enforce stationarity = False + self.model.enforce_stationarity = False + actual = self.model.transform_params( + self.model.untransform_params(self.model.start_params)) + self.model.enforce_stationarity = True + assert_allclose(actual, self.model.start_params) + + def test_results(self, close_figures): + # Smoke test for creating the summary + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + self.results.summary() + + # Test cofficient matrix creation + # (via a different, more direct, method) + if self.model.factor_order > 0: + model = self.model + k_factors = model.k_factors + pft_params = self.results.params[model._params_factor_transition] + coefficients = np.array(pft_params).reshape( + k_factors, k_factors * model.factor_order) + coefficient_matrices = np.array([ + coefficients[:self.model.k_factors, + i*self.model.k_factors:(i+1)*self.model.k_factors] + for i in range(self.model.factor_order) + ]) + assert_equal( + self.results.coefficient_matrices_var, + coefficient_matrices) + else: + assert_equal(self.results.coefficient_matrices_var, None) + + @pytest.mark.matplotlib + def test_plot_coefficients_of_determination(self, close_figures): + # Smoke test for plot_coefficients_of_determination + self.results.plot_coefficients_of_determination() + + def test_no_enforce(self): + return + # Test that nothing goes wrong when we don't enforce stationarity + params = self.model.untransform_params(self.true['params']) + params[self.model._params_transition] = ( + self.true['params'][self.model._params_transition]) + self.model.enforce_stationarity = False + results = self.model.filter(params, transformed=False) + self.model.enforce_stationarity = True + assert_allclose(results.llf, self.results.llf, rtol=1e-5) + + def test_mle(self, init_powell=True): + with warnings.catch_warnings(record=True): + warnings.simplefilter('always') + start_params = self.model.start_params + if init_powell: + results = self.model.fit(method='powell', + maxiter=100, disp=False) + start_params = results.params + results = self.model.fit(start_params, maxiter=1000, disp=False) + results = self.model.fit(results.params, method='nm', maxiter=1000, + disp=False) + if not results.llf > self.results.llf: + assert_allclose(results.llf, self.results.llf, rtol=1e-5) + + def test_loglike(self): + assert_allclose(self.results.llf, self.true['loglike'], rtol=1e-6) + + def test_aic(self): + # We only get 3 digits from Stata + assert_allclose(self.results.aic, self.true['aic'], atol=3) + + def test_bic(self): + # We only get 3 digits from Stata + assert_allclose(self.results.bic, self.true['bic'], atol=3) + + def test_predict(self, **kwargs): + # Tests predict + forecast + assert_allclose( + self.results.predict(end='1982-10-01', **kwargs), + self.true['predict'], + atol=1e-6) + + def test_dynamic_predict(self, **kwargs): + # Tests predict + dynamic predict + forecast + assert_allclose( + self.results.predict(end='1982-10-01', dynamic='1961-01-01', + **kwargs), + self.true['dynamic_predict'], + atol=1e-6) + + +class TestDynamicFactor(CheckDynamicFactor): + """ + Test for a dynamic factor model with 1 AR(2) factor + """ + @classmethod + def setup_class(cls): + true = results_dynamic_factor.lutkepohl_dfm.copy() + true['predict'] = output_results.iloc[1:][[ + 'predict_dfm_1', 'predict_dfm_2', 'predict_dfm_3']] + true['dynamic_predict'] = output_results.iloc[1:][[ + 'dyn_predict_dfm_1', 'dyn_predict_dfm_2', 'dyn_predict_dfm_3']] + super(TestDynamicFactor, cls).setup_class( + true, k_factors=1, factor_order=2) + + def test_bse_approx(self): + bse = self.results._cov_params_approx().diagonal()**0.5 + assert_allclose(bse, self.true['bse_oim'], atol=1e-5) + + +class TestDynamicFactor2(CheckDynamicFactor): + """ + Test for a dynamic factor model with two VAR(1) factors + """ + @classmethod + def setup_class(cls): + true = results_dynamic_factor.lutkepohl_dfm2.copy() + true['predict'] = output_results.iloc[1:][[ + 'predict_dfm2_1', 'predict_dfm2_2', 'predict_dfm2_3']] + true['dynamic_predict'] = output_results.iloc[1:][[ + 'dyn_predict_dfm2_1', 'dyn_predict_dfm2_2', 'dyn_predict_dfm2_3']] + super(TestDynamicFactor2, cls).setup_class( + true, k_factors=2, factor_order=1) + + def test_mle(self): + # Stata's MLE on this model doesn't converge, so no reason to check + pass + + def test_bse(self): + # Stata's MLE on this model doesn't converge, and four of their + # params don't even have bse (possibly they are still at starting + # values?), so no reason to check this + pass + + def test_aic(self): + # Stata uses 9 df (i.e. 9 params) here instead of 13, because since the + # model didn't coverge, 4 of the parameters aren't fully estimated + # (possibly they are still at starting values?) so the AIC is off + pass + + def test_bic(self): + # Stata uses 9 df (i.e. 9 params) here instead of 13, because since the + # model didn't coverge, 4 of the parameters aren't fully estimated + # (possibly they are still at starting values?) so the BIC is off + pass + + def test_summary(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + summary = self.results.summary() + tables = [str(table) for table in summary.tables] + params = self.true['params'] + + # Make sure we have the right number of tables + assert_equal( + len(tables), + 2 + self.model.k_endog + self.model.k_factors + 1) + + # Check the model overview table + assert re.search( + r'Model:.*DynamicFactor\(factors=2, order=1\)', + tables[0]) + + # For each endogenous variable, check the output + for i in range(self.model.k_endog): + offset_loading = self.model.k_factors * i + table = tables[i + 2] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Results for equation %s' % name, table) + + # -> Make sure it's the right size + assert_equal(len(table.split('\n')), 7) + + # -> Check that we have the right coefficients + assert re.search( + 'loading.f1 +' + forg(params[offset_loading + 0], prec=4), + table) + assert re.search( + 'loading.f2 +' + forg(params[offset_loading + 1], prec=4), + table) + + # For each factor, check the output + for i in range(self.model.k_factors): + offset = (self.model.k_endog * (self.model.k_factors + 1) + + i * self.model.k_factors) + table = tables[self.model.k_endog + i + 2] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Results for factor equation f%d' % (i+1), table) + + # -> Make sure it's the right size + assert_equal(len(table.split('\n')), 7) + + # -> Check that we have the right coefficients + assert re.search('L1.f1 +' + forg(params[offset + 0], prec=4), + table) + assert re.search('L1.f2 +' + forg(params[offset + 1], prec=4), + table) + + # Check the Error covariance matrix output + table = tables[2 + self.model.k_endog + self.model.k_factors] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Error covariance matrix', table) + + # -> Make sure it's the right size + assert_equal(len(table.split('\n')), 8) + + # -> Check that we have the right coefficients + offset = self.model.k_endog * self.model.k_factors + for i in range(self.model.k_endog): + iname = self.model.endog_names[i] + iparam = forg(params[offset + i], prec=4) + assert re.search('sigma2.%s +%s' % (iname, iparam), table) + + +class TestDynamicFactor_exog1(CheckDynamicFactor): + """ + Test for a dynamic factor model with 1 exogenous regressor: a constant + """ + @classmethod + def setup_class(cls): + true = results_dynamic_factor.lutkepohl_dfm_exog1.copy() + true['predict'] = output_results.iloc[1:][[ + 'predict_dfm_exog1_1', + 'predict_dfm_exog1_2', + 'predict_dfm_exog1_3']] + true['dynamic_predict'] = output_results.iloc[1:][[ + 'dyn_predict_dfm_exog1_1', + 'dyn_predict_dfm_exog1_2', + 'dyn_predict_dfm_exog1_3']] + exog = np.ones((75, 1)) + super(TestDynamicFactor_exog1, cls).setup_class( + true, k_factors=1, factor_order=1, exog=exog) + + def test_predict(self): + exog = np.ones((16, 1)) + super(TestDynamicFactor_exog1, self).test_predict(exog=exog) + + def test_dynamic_predict(self): + exog = np.ones((16, 1)) + super(TestDynamicFactor_exog1, self).test_dynamic_predict(exog=exog) + + def test_bse_approx(self): + bse = self.results._cov_params_approx().diagonal()**0.5 + assert_allclose(bse**2, self.true['var_oim'], atol=1e-5) + + +class TestDynamicFactor_exog2(CheckDynamicFactor): + """ + Test for a dynamic factor model with 2 exogenous regressors: a constant + and a time-trend + """ + @classmethod + def setup_class(cls): + true = results_dynamic_factor.lutkepohl_dfm_exog2.copy() + true['predict'] = output_results.iloc[1:][[ + 'predict_dfm_exog2_1', + 'predict_dfm_exog2_2', + 'predict_dfm_exog2_3']] + true['dynamic_predict'] = output_results.iloc[1:][[ + 'dyn_predict_dfm_exog2_1', + 'dyn_predict_dfm_exog2_2', + 'dyn_predict_dfm_exog2_3']] + exog = np.c_[np.ones((75, 1)), (np.arange(75) + 2)[:, np.newaxis]] + super(TestDynamicFactor_exog2, cls).setup_class( + true, k_factors=1, factor_order=1, exog=exog) + + def test_bse_approx(self): + bse = self.results._cov_params_approx().diagonal()**0.5 + assert_allclose(bse**2, self.true['var_oim'], atol=1e-5) + + def test_predict(self): + exog = np.c_[np.ones((16, 1)), + (np.arange(75, 75+16) + 2)[:, np.newaxis]] + super(TestDynamicFactor_exog2, self).test_predict(exog=exog) + + def test_dynamic_predict(self): + exog = np.c_[np.ones((16, 1)), + (np.arange(75, 75+16) + 2)[:, np.newaxis]] + super(TestDynamicFactor_exog2, self).test_dynamic_predict(exog=exog) + + def test_summary(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + summary = self.results.summary() + tables = [str(table) for table in summary.tables] + params = self.true['params'] + + # Make sure we have the right number of tables + assert_equal( + len(tables), + 2 + self.model.k_endog + self.model.k_factors + 1) + + # Check the model overview table + assert re.search(r'Model:.*DynamicFactor\(factors=1, order=1\)', + tables[0]) + assert_equal(re.search(r'.*2 regressors', tables[0]) is None, False) + + # For each endogenous variable, check the output + for i in range(self.model.k_endog): + offset_loading = self.model.k_factors * i + offset_exog = self.model.k_factors * self.model.k_endog + table = tables[i + 2] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Results for equation %s' % name, table) + + # -> Make sure it's the right size + assert_equal(len(table.split('\n')), 8) + + # -> Check that we have the right coefficients + assert re.search( + 'loading.f1 +' + forg(params[offset_loading + 0], prec=4), + table) + assert re.search( + 'beta.const +' + forg(params[offset_exog + i*2 + 0], prec=4), + table) + assert re.search( + 'beta.x1 +' + forg(params[offset_exog + i*2 + 1], prec=4), + table) + + # For each factor, check the output + for i in range(self.model.k_factors): + offset = (self.model.k_endog * (self.model.k_factors + 3) + + i * self.model.k_factors) + table = tables[self.model.k_endog + i + 2] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Results for factor equation f%d' % (i+1), table) + + # -> Make sure it's the right size + assert_equal(len(table.split('\n')), 6) + + # -> Check that we have the right coefficients + assert re.search('L1.f1 +' + forg(params[offset + 0], prec=4), + table) + + # Check the Error covariance matrix output + table = tables[2 + self.model.k_endog + self.model.k_factors] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Error covariance matrix', table) + + # -> Make sure it's the right size + assert_equal(len(table.split('\n')), 8) + + # -> Check that we have the right coefficients + offset = self.model.k_endog * (self.model.k_factors + 2) + for i in range(self.model.k_endog): + iname = self.model.endog_names[i] + iparam = forg(params[offset + i], prec=4) + assert re.search('sigma2.%s +%s' % (iname, iparam), table) + + +class TestDynamicFactor_general_errors(CheckDynamicFactor): + """ + Test for a dynamic factor model where errors are as general as possible, + meaning: + + - Errors are vector autocorrelated, VAR(1) + - Innovations are correlated + """ + @classmethod + def setup_class(cls): + true = results_dynamic_factor.lutkepohl_dfm_gen.copy() + true['predict'] = output_results.iloc[1:][[ + 'predict_dfm_gen_1', 'predict_dfm_gen_2', 'predict_dfm_gen_3']] + true['dynamic_predict'] = output_results.iloc[1:][[ + 'dyn_predict_dfm_gen_1', + 'dyn_predict_dfm_gen_2', + 'dyn_predict_dfm_gen_3']] + super(TestDynamicFactor_general_errors, cls).setup_class( + true, k_factors=1, factor_order=1, error_var=True, + error_order=1, error_cov_type='unstructured') + + def test_bse_approx(self): + bse = self.results._cov_params_approx().diagonal() + assert_allclose(bse[:3], self.true['var_oim'][:3], atol=1e-5) + assert_allclose(bse[-10:], self.true['var_oim'][-10:], atol=3e-4) + + @pytest.mark.skip("Known failure, no sequence of optimizers has been " + "found which can achieve the maximum.") + def test_mle(self): + # The following gets us to llf=546.53, which is still not good enough + # llf = 300.842477412 + # res = mod.fit(method='lbfgs', maxiter=10000) + # llf = 460.26576722 + # res = mod.fit(res.params, method='nm', maxiter=10000, maxfev=10000) + # llf = 542.245718508 + # res = mod.fit(res.params, method='lbfgs', maxiter=10000) + # llf = 544.035160955 + # res = mod.fit(res.params, method='nm', maxiter=10000, maxfev=10000) + # llf = 557.442240083 + # res = mod.fit(res.params, method='lbfgs', maxiter=10000) + # llf = 558.199513262 + # res = mod.fit(res.params, method='nm', maxiter=10000, maxfev=10000) + # llf = 559.049076604 + # res = mod.fit(res.params, method='nm', maxiter=10000, maxfev=10000) + # llf = 559.049076604 + # ... + pass + + def test_summary(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + summary = self.results.summary() + tables = [str(table) for table in summary.tables] + params = self.true['params'] + + # Make sure we have the right number of tables + assert_equal( + len(tables), + 2 + self.model.k_endog + self.model.k_factors + + self.model.k_endog + 1) + + # Check the model overview table + assert re.search(r'Model:.*DynamicFactor\(factors=1, order=1\)', + tables[0]) + assert re.search(r'.*VAR\(1\) errors', tables[0]) + + # For each endogenous variable, check the output + for i in range(self.model.k_endog): + offset_loading = self.model.k_factors * i + table = tables[i + 2] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Results for equation %s' % name, table) + + # -> Make sure it's the right size + assert_equal(len(table.split('\n')), 6) + + # -> Check that we have the right coefficients + pattern = 'loading.f1 +' + forg(params[offset_loading + 0], prec=4) + assert re.search(pattern, table) + + # For each factor, check the output + for i in range(self.model.k_factors): + offset = (self.model.k_endog * self.model.k_factors + + 6 + i * self.model.k_factors) + table = tables[2 + self.model.k_endog + i] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Results for factor equation f%d' % (i+1), table) + + # -> Make sure it's the right size + assert_equal(len(table.split('\n')), 6) + + # -> Check that we have the right coefficients + assert re.search('L1.f1 +' + forg(params[offset + 0], prec=4), + table) + + # For each error equation, check the output + for i in range(self.model.k_endog): + offset = (self.model.k_endog * (self.model.k_factors + i) + + 6 + self.model.k_factors) + table = tables[2 + self.model.k_endog + self.model.k_factors + i] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search(r'Results for error equation e\(%s\)' % name, + table) + + # -> Make sure it's the right size + assert_equal(len(table.split('\n')), 8) + + # -> Check that we have the right coefficients + for j in range(self.model.k_endog): + name = self.model.endog_names[j] + pattern = r'L1.e\(%s\) +%s' % (name, forg(params[offset + j], + prec=4)) + assert re.search(pattern, table) + + # Check the Error covariance matrix output + table = tables[2 + self.model.k_endog + + self.model.k_factors + self.model.k_endog] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Error covariance matrix', table) + + # -> Make sure it's the right size + assert_equal(len(table.split('\n')), 11) + + # -> Check that we have the right coefficients + offset = self.model.k_endog * self.model.k_factors + assert re.search( + 'sqrt.var.dln_inv +' + forg(params[offset + 0], prec=4), + table) + assert re.search( + 'sqrt.cov.dln_inv.dln_inc +' + forg(params[offset + 1], prec=4), + table) + assert re.search( + 'sqrt.var.dln_inc +' + forg(params[offset + 2], prec=4), + table) + assert re.search( + 'sqrt.cov.dln_inv.dln_consump +' + forg(params[offset+3], prec=4), + table) + assert re.search( + 'sqrt.cov.dln_inc.dln_consump +' + forg(params[offset+4], prec=4), + table) + assert re.search( + 'sqrt.var.dln_consump +' + forg(params[offset + 5], prec=4), + table) + + +class TestDynamicFactor_ar2_errors(CheckDynamicFactor): + """ + Test for a dynamic factor model where errors are as general as possible, + meaning: + + - Errors are vector autocorrelated, VAR(1) + - Innovations are correlated + """ + @classmethod + def setup_class(cls): + true = results_dynamic_factor.lutkepohl_dfm_ar2.copy() + true['predict'] = output_results.iloc[1:][[ + 'predict_dfm_ar2_1', 'predict_dfm_ar2_2', 'predict_dfm_ar2_3']] + true['dynamic_predict'] = output_results.iloc[1:][[ + 'dyn_predict_dfm_ar2_1', + 'dyn_predict_dfm_ar2_2', + 'dyn_predict_dfm_ar2_3']] + super(TestDynamicFactor_ar2_errors, cls).setup_class( + true, k_factors=1, factor_order=1, error_order=2) + + def test_bse_approx(self): + bse = self.results._cov_params_approx().diagonal() + assert_allclose(bse, self.true['var_oim'], atol=1e-5) + + def test_mle(self): + with warnings.catch_warnings(record=True): + # Depending on the system, this test can reach a greater precision, + # but for cross-platform results keep it at 1e-2 + mod = self.model + res1 = mod.fit(maxiter=100, optim_score='approx', disp=False) + res = mod.fit( + res1.params, method='nm', maxiter=10000, + optim_score='approx', disp=False) + assert_allclose(res.llf, self.results.llf, atol=1e-2) + + +class TestDynamicFactor_scalar_error(CheckDynamicFactor): + """ + Test for a dynamic factor model where innovations are uncorrelated and + are forced to have the same variance. + """ + @classmethod + def setup_class(cls): + true = results_dynamic_factor.lutkepohl_dfm_scalar.copy() + true['predict'] = output_results.iloc[1:][[ + 'predict_dfm_scalar_1', 'predict_dfm_scalar_2', + 'predict_dfm_scalar_3']] + true['dynamic_predict'] = output_results.iloc[1:][[ + 'dyn_predict_dfm_scalar_1', 'dyn_predict_dfm_scalar_2', + 'dyn_predict_dfm_scalar_3']] + exog = np.ones((75, 1)) + super(TestDynamicFactor_scalar_error, cls).setup_class( + true, k_factors=1, factor_order=1, + exog=exog, error_cov_type='scalar') + + def test_bse_approx(self): + bse = self.results._cov_params_approx().diagonal() + assert_allclose(bse, self.true['var_oim'], atol=1e-5) + + def test_predict(self): + exog = np.ones((16, 1)) + super(TestDynamicFactor_scalar_error, self).test_predict(exog=exog) + + def test_dynamic_predict(self): + exog = np.ones((16, 1)) + super(TestDynamicFactor_scalar_error, + self).test_dynamic_predict(exog=exog) + + +class TestStaticFactor(CheckDynamicFactor): + """ + Test for a static factor model (i.e. factors are not autocorrelated). + """ + @classmethod + def setup_class(cls): + true = results_dynamic_factor.lutkepohl_sfm.copy() + true['predict'] = output_results.iloc[1:][[ + 'predict_sfm_1', 'predict_sfm_2', 'predict_sfm_3']] + true['dynamic_predict'] = output_results.iloc[1:][[ + 'dyn_predict_sfm_1', 'dyn_predict_sfm_2', 'dyn_predict_sfm_3']] + super(TestStaticFactor, cls).setup_class( + true, k_factors=1, factor_order=0) + + def test_bse_approx(self): + bse = self.results._cov_params_approx().diagonal() + assert_allclose(bse, self.true['var_oim'], atol=1e-5) + + def test_bic(self): + # Stata uses 5 df (i.e. 5 params) here instead of 6, because one param + # is basically zero. + pass + + +class TestSUR(CheckDynamicFactor): + """ + Test for a seemingly unrelated regression model (i.e. no factors) with + errors cross-sectionally, but not auto-, correlated + """ + @classmethod + def setup_class(cls): + true = results_dynamic_factor.lutkepohl_sur.copy() + true['predict'] = output_results.iloc[1:][[ + 'predict_sur_1', 'predict_sur_2', 'predict_sur_3']] + true['dynamic_predict'] = output_results.iloc[1:][[ + 'dyn_predict_sur_1', 'dyn_predict_sur_2', 'dyn_predict_sur_3']] + exog = np.c_[np.ones((75, 1)), (np.arange(75) + 2)[:, np.newaxis]] + super(TestSUR, cls).setup_class( + true, k_factors=0, factor_order=0, + exog=exog, error_cov_type='unstructured') + + def test_bse_approx(self): + bse = self.results._cov_params_approx().diagonal() + assert_allclose(bse[:6], self.true['var_oim'][:6], atol=1e-5) + + def test_predict(self): + exog = np.c_[np.ones((16, 1)), + (np.arange(75, 75+16) + 2)[:, np.newaxis]] + super(TestSUR, self).test_predict(exog=exog) + + def test_dynamic_predict(self): + exog = np.c_[np.ones((16, 1)), + (np.arange(75, 75+16) + 2)[:, np.newaxis]] + super(TestSUR, self).test_dynamic_predict(exog=exog) + + +class TestSUR_autocorrelated_errors(CheckDynamicFactor): + """ + Test for a seemingly unrelated regression model (i.e. no factors) where + the errors are vector autocorrelated, but innovations are uncorrelated. + + """ + @classmethod + def setup_class(cls): + true = results_dynamic_factor.lutkepohl_sur_auto.copy() + true['predict'] = output_results.iloc[1:][[ + 'predict_sur_auto_1', 'predict_sur_auto_2']] + true['dynamic_predict'] = output_results.iloc[1:][[ + 'dyn_predict_sur_auto_1', 'dyn_predict_sur_auto_2']] + exog = np.c_[np.ones((75, 1)), (np.arange(75) + 2)[:, np.newaxis]] + super(TestSUR_autocorrelated_errors, cls).setup_class( + true, k_factors=0, factor_order=0, exog=exog, + error_order=1, error_var=True, + error_cov_type='diagonal', + included_vars=['dln_inv', 'dln_inc']) + + def test_bse_approx(self): + bse = self.results._cov_params_approx().diagonal() + assert_allclose(bse, self.true['var_oim'], atol=1e-5) + + def test_predict(self): + exog = np.c_[np.ones((16, 1)), + (np.arange(75, 75+16) + 2)[:, np.newaxis]] + super(TestSUR_autocorrelated_errors, self).test_predict(exog=exog) + + def test_dynamic_predict(self): + exog = np.c_[np.ones((16, 1)), + (np.arange(75, 75+16) + 2)[:, np.newaxis]] + super(TestSUR_autocorrelated_errors, + self).test_dynamic_predict(exog=exog) + + def test_mle(self): + super(TestSUR_autocorrelated_errors, self).test_mle(init_powell=False) + + +def test_misspecification(): + # Tests for model specification and misspecification exceptions + endog = np.arange(20).reshape(10, 2) + + # Too few endog + assert_raises( + ValueError, + dynamic_factor.DynamicFactor, endog[:, 0], k_factors=0, factor_order=0) + + # Too many factors + assert_raises( + ValueError, + dynamic_factor.DynamicFactor, endog, k_factors=2, factor_order=1) + + # Bad error_cov_type specification + assert_raises( + ValueError, + dynamic_factor.DynamicFactor, + endog, + k_factors=1, factor_order=1, order=(1, 0), error_cov_type='') + + +def test_miscellaneous(): + # Initialization with 1-dimensional exog array + exog = np.arange(75) + mod = CheckDynamicFactor() + mod.setup_class(true=None, k_factors=1, factor_order=1, + exog=exog, filter=False) + exog = pd.Series(np.arange(75), + index=pd.date_range(start='1960-04-01', + end='1978-10-01', freq='QS')) + mod = CheckDynamicFactor() + mod.setup_class( + true=None, k_factors=1, factor_order=1, exog=exog, filter=False) + + +def test_predict_custom_index(): + np.random.seed(328423) + endog = pd.DataFrame(np.random.normal(size=(50, 2))) + mod = dynamic_factor.DynamicFactor(endog, k_factors=1, factor_order=1) + res = mod.smooth(mod.start_params) + out = res.predict(start=1, end=1, index=['a']) + assert_equal(out.index.equals(pd.Index(['a'])), True) diff --git a/statsmodels/tsa/statespace/tests/test_exact_diffuse_filtering.py b/statsmodels/tsa/statespace/tests/test_exact_diffuse_filtering.py new file mode 100644 index 0000000..9cc786b --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_exact_diffuse_filtering.py @@ -0,0 +1,988 @@ +""" +Tests for exact diffuse initialization + +Notes +----- + +These tests are against four sources: + +- Koopman (1997) +- The R package KFAS (v1.3.1): test_exact_diffuse_filtering.R +- Stata: test_exact_diffuse_filtering_stata.do +- Statsmodels state space models using approximate diffuse filtering + +Koopman (1997) provides analytic results for a few cases that we can test +against. More comprehensive tests are available against the R package KFAS, +which also uses the Durbin and Koopman (2012) univariate diffuse filtering +method. However, there are apparently some bugs in the KFAS output (see notes +below), so some tests are run against Stata. + +KFAS v1.3.1 appears to have the following bugs: + +- Incorrect filtered covariance matrix (in their syntax, kf$Ptt). These + matrices are not even symmetric, so they are clearly wrong. +- Loglikelihood computation appears to be incorrect for the diffuse part of + the state. See the section with "Note: Apparent loglikelihood discrepancy" + in the R file. It appears that KFAS does not include the constant term + (-0.5 * log(2 pi)) for the diffuse observations, whereas the loglikelihood + function as given in e.g. section 7.2.5 of Durbin and Koopman (2012) shows + that it should be included. To confirm this, we also check against the + loglikelihood value computed by Stata. + +Stata uses the DeJong diffuse filtering method, which gives almost identical +results but does imply some numerical differences for output at the 6th or 7th +decimal place. + +Finally, we have tests against the same model using approximate (rather than +exact) diffuse filtering. These will by definition have some discrepancies in +the diffuse observations. + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import numpy as np +import pandas as pd +import pytest +import os + +from statsmodels import datasets +from statsmodels.tsa.statespace.initialization import Initialization +from statsmodels.tsa.statespace.kalman_smoother import KalmanSmoother +from statsmodels.tsa.statespace.varmax import VARMAX +from statsmodels.tsa.statespace.dynamic_factor import DynamicFactor +from statsmodels.tsa.statespace.structural import UnobservedComponents +from numpy.testing import assert_equal, assert_allclose + +from . import kfas_helpers + +current_path = os.path.dirname(os.path.abspath(__file__)) +macrodata = datasets.macrodata.load_pandas().data +macrodata.index = pd.period_range(start='1959Q1', end='2009Q3', freq='Q') + + +# - Model definitions -------------------------------------------------------- + +def model_local_level(endog=None, params=None, direct=False): + if endog is None: + y1 = 10.2394 + endog = np.r_[y1, [1] * 9] + if params is None: + params = [1.993, 8.253] + sigma2_y, sigma2_mu = params + + if direct: + mod = None + # Construct the basic representation + ssm = KalmanSmoother(k_endog=1, k_states=1, k_posdef=1) + ssm.bind(endog) + init = Initialization(ssm.k_states, initialization_type='diffuse') + ssm.initialize(init) + # ssm.filter_univariate = True # should not be required + + # Fill in the system matrices for a local level model + ssm['design', :] = 1 + ssm['obs_cov', :] = sigma2_y + ssm['transition', :] = 1 + ssm['selection', :] = 1 + ssm['state_cov', :] = sigma2_mu + else: + mod = UnobservedComponents(endog, 'llevel') + mod.update(params) + ssm = mod.ssm + ssm.initialize(Initialization(ssm.k_states, 'diffuse')) + + return mod, ssm + + +def model_local_linear_trend(endog=None, params=None, direct=False): + if endog is None: + y1 = 10.2394 + y2 = 4.2039 + y3 = 6.123123 + endog = np.r_[y1, y2, y3, [1] * 7] + if params is None: + params = [1.993, 8.253, 2.334] + sigma2_y, sigma2_mu, sigma2_beta = params + + if direct: + mod = None + # Construct the basic representation + ssm = KalmanSmoother(k_endog=1, k_states=2, k_posdef=2) + ssm.bind(endog) + init = Initialization(ssm.k_states, initialization_type='diffuse') + ssm.initialize(init) + # ssm.filter_univariate = True # should not be required + + # Fill in the system matrices for a local level model + ssm['design', 0, 0] = 1 + ssm['obs_cov', 0, 0] = sigma2_y + ssm['transition'] = np.array([[1, 1], + [0, 1]]) + ssm['selection'] = np.eye(2) + ssm['state_cov'] = np.diag([sigma2_mu, sigma2_beta]) + else: + mod = UnobservedComponents(endog, 'lltrend') + mod.update(params) + ssm = mod.ssm + ssm.initialize(Initialization(ssm.k_states, 'diffuse')) + + return mod, ssm + + +def model_common_level(endog=None, params=None, restricted=False): + if endog is None: + y11 = 10.2394 + y21 = 8.2304 + endog = np.column_stack([np.r_[y11, [1] * 9], np.r_[y21, [1] * 9]]) + if params is None: + params = [0.1111, 3.2324] + theta, sigma2_mu = params + # sigma2_1 = 1 + # sigma_12 = 0 + # sigma2_2 = 1 + + if not restricted: + # Construct the basic representation + ssm = KalmanSmoother(k_endog=2, k_states=2, k_posdef=1) + ssm.bind(endog.T) + init = Initialization(ssm.k_states, initialization_type='diffuse') + ssm.initialize(init) + # ssm.filter_univariate = True # should not be required + + # Fill in the system matrices for a common trend model + ssm['design'] = np.array([[1, 0], + [theta, 1]]) + ssm['obs_cov'] = np.eye(2) + ssm['transition'] = np.eye(2) + ssm['selection', 0, 0] = 1 + ssm['state_cov', 0, 0] = sigma2_mu + else: + # Construct the basic representation + ssm = KalmanSmoother(k_endog=2, k_states=1, k_posdef=1) + ssm.bind(endog.T) + init = Initialization(ssm.k_states, initialization_type='diffuse') + ssm.initialize(init) + # ssm.filter_univariate = True # should not be required + + # Fill in the system matrices for a local level model + ssm['design'] = np.array([[1, theta]]).T + ssm['obs_cov'] = np.eye(2) + ssm['transition', :] = 1 + ssm['selection', :] = 1 + ssm['state_cov', :] = sigma2_mu + + return ssm + + +def model_var1(endog=None, params=None, measurement_error=False, init=None): + if endog is None: + levels = macrodata[['realgdp', 'realcons']] + endog = np.log(levels).iloc[:21].diff().iloc[1:] * 400 + if params is None: + params = np.r_[0.5, 0.3, 0.2, 0.4, 2**0.5, 0, 3**0.5] + if measurement_error: + params = np.r_[params, 4, 5] + + # Model + mod = VARMAX(endog, order=(1, 0), trend='n', + measurement_error=measurement_error) + mod.update(params) + ssm = mod.ssm + if init is None: + init = Initialization(ssm.k_states, 'diffuse') + ssm.initialize(init) + + return mod, ssm + + +def model_dfm(endog=None, params=None, factor_order=2): + if endog is None: + levels = macrodata[['realgdp', 'realcons']] + endog = np.log(levels).iloc[:21].diff().iloc[1:] * 400 + if params is None: + params = np.r_[0.5, 1., 1.5, 2., 0.9, 0.1] + + # Model + mod = DynamicFactor(endog, k_factors=1, factor_order=factor_order) + mod.update(params) + ssm = mod.ssm + ssm.filter_univariate = True + init = Initialization(ssm.k_states, 'diffuse') + ssm.initialize(init) + + return mod, ssm + + +# - Analytic tests (Koopman, 1997) ------------------------------------------- + + +class TestLocalLevelAnalytic(object): + @classmethod + def setup_class(cls, **kwargs): + cls.mod, cls.ssm = model_local_level(**kwargs) + cls.res = cls.ssm.smooth() + + def test_results(self): + ssm = self.ssm + res = self.res + + y1 = ssm.endog[0, 0] + sigma2_y = ssm['obs_cov', 0, 0] + sigma2_mu = ssm['state_cov', 0, 0] + + # Basic initialization variables + assert_allclose(res.predicted_state_cov[0, 0, 0], 0) + assert_allclose(res.predicted_diffuse_state_cov[0, 0, 0], 1) + + # Output of the exact diffuse initialization, see Koopman (1997) + assert_allclose(res.forecasts_error[0, 0], y1) + assert_allclose(res.forecasts_error_cov[0, 0, 0], sigma2_y) + assert_allclose(res.forecasts_error_diffuse_cov[0, 0, 0], 1) + assert_allclose(res.kalman_gain[0, 0, 0], 1) + assert_allclose(res.predicted_state[0, 1], y1) + assert_allclose(res.predicted_state_cov[0, 0, 1], sigma2_y + sigma2_mu) + assert_allclose(res.predicted_diffuse_state_cov[0, 0, 1], 0) + + # Miscellaneous + assert_equal(res.nobs_diffuse, 1) + + +class TestLocalLevelAnalyticDirect(TestLocalLevelAnalytic): + @classmethod + def setup_class(cls): + super(TestLocalLevelAnalyticDirect, cls).setup_class(direct=True) + + +class TestLocalLinearTrendAnalytic(object): + @classmethod + def setup_class(cls, **kwargs): + cls.mod, cls.ssm = model_local_linear_trend(**kwargs) + cls.res = cls.ssm.smooth() + + def test_results(self): + ssm = self.ssm + res = self.res + + y1, y2, y3 = ssm.endog[0, :3] + sigma2_y = ssm['obs_cov', 0, 0] + sigma2_mu, sigma2_beta = np.diagonal(ssm['state_cov']) + + # Basic initialization variables + assert_allclose(res.predicted_state_cov[..., 0], np.zeros((2, 2))) + assert_allclose(res.predicted_diffuse_state_cov[..., 0], np.eye(2)) + + # Output of the exact diffuse initialization, see Koopman (1997) + q_mu = sigma2_mu / sigma2_y + q_beta = sigma2_beta / sigma2_y + assert_allclose(res.forecasts_error[0, 0], y1) + assert_allclose(res.kalman_gain[:, 0, 0], [1, 0]) + assert_allclose(res.predicted_state[:, 1], [y1, 0]) + P2 = sigma2_y * np.array([[1 + q_mu, 0], + [0, q_beta]]) + assert_allclose(res.predicted_state_cov[:, :, 1], P2) + assert_allclose(res.predicted_diffuse_state_cov[0, 0, 1], + np.ones((2, 2))) + + # assert_allclose(res.kalman_gain[:, 0, 1], [2, 1]) + assert_allclose(res.predicted_state[:, 2], [2 * y2 - y1, y2 - y1]) + P3 = sigma2_y * np.array([[5 + 2 * q_mu + q_beta, 3 + q_mu + q_beta], + [3 + q_mu + q_beta, 2 + q_mu + 2 * q_beta]]) + assert_allclose(res.predicted_state_cov[:, :, 2], P3) + assert_allclose(res.predicted_diffuse_state_cov[:, :, 2], + np.zeros((2, 2))) + + # Miscellaneous + assert_equal(res.nobs_diffuse, 2) + + +class TestLocalLinearTrendAnalyticDirect(TestLocalLinearTrendAnalytic): + @classmethod + def setup_class(cls): + super(TestLocalLinearTrendAnalyticDirect, cls).setup_class(direct=True) + + +class TestLocalLinearTrendAnalyticMissing(TestLocalLinearTrendAnalytic): + @classmethod + def setup_class(cls): + y1 = 10.2394 + y2 = np.nan + y3 = 6.123123 + endog = np.r_[y1, y2, y3, [1] * 7] + super(TestLocalLinearTrendAnalyticMissing, cls).setup_class( + endog=endog) + + def test_results(self): + ssm = self.ssm + res = self.res + + y1, y2, y3 = ssm.endog[0, :3] + sigma2_y = ssm['obs_cov', 0, 0] + sigma2_mu, sigma2_beta = np.diagonal(ssm['state_cov']) + + # Test output + q_mu = sigma2_mu / sigma2_y + q_beta = sigma2_beta / sigma2_y + a4 = [1.5 * y3 - 0.5 * y1, 0.5 * y3 - 0.5 * y1] + assert_allclose(res.predicted_state[:, 3], a4) + P4 = sigma2_y * np.array([ + [2.5 + 1.5 * q_mu + 1.25 * q_beta, + 1 + 0.5 * q_mu + 1.25 * q_beta], + [1 + 0.5 * q_mu + 1.25 * q_beta, + 0.5 + 0.5 * q_mu + 2.25 * q_beta]]) + assert_allclose(res.predicted_state_cov[:, :, 3], P4) + + # Miscellaneous + assert_equal(res.nobs_diffuse, 3) + + +def test_common_level_analytic(): + # Analytic test using results from Koopman (1997), section 5.3 + mod = model_common_level() + y11, y21 = mod.endog[:, 0] + theta = mod['design', 1, 0] + sigma2_mu = mod['state_cov', 0, 0] + + # Perform filtering + res = mod.smooth() + + # Basic initialization variables + assert_allclose(res.predicted_state_cov[..., 0], np.zeros((2, 2))) + assert_allclose(res.predicted_diffuse_state_cov[..., 0], np.eye(2)) + + # Output of the exact diffuse initialization, see Koopman (1997) + + # Note: since Koopman (1997) did not apply the univariate method, + # forecast errors and covariances, and the Kalman gain won't match + # assert_allclose(res.forecasts_error[:, 0], [y11, y21]) + # assert_allclose(res.forecasts_error_cov[:, :, 0], np.eye(2)) + # F_inf1 = np.array([[1, theta], + # [theta, 1 + theta**2]]) + # assert_allclose(res.forecasts_error_diffuse_cov[:, :, 0], F_inf1) + # K0 = np.array([[1, 0], + # [-theta, 1]]) + # assert_allclose(res.kalman_gain[..., 0], K0) + assert_allclose(res.predicted_state[:, 1], [y11, y21 - theta * y11]) + P2 = np.array([[1 + sigma2_mu, -theta], + [-theta, 1 + theta**2]]) + assert_allclose(res.predicted_state_cov[..., 1], P2) + assert_allclose(res.predicted_diffuse_state_cov[..., 1], np.zeros((2, 2))) + + # Miscellaneous + assert_equal(res.nobs_diffuse, 1) + + +def test_common_level_restricted_analytic(): + # Analytic test using results from Koopman (1997), section 5.3, + # with the restriction mu_bar = 0 + mod = model_common_level(restricted=True) + y11, y21 = mod.endog[:, 0] + theta = mod['design', 1, 0] + sigma2_mu = mod['state_cov', 0, 0] + + # Perform filtering + res = mod.smooth() + + # Basic initialization variables + assert_allclose(res.predicted_state_cov[..., 0], 0) + assert_allclose(res.predicted_diffuse_state_cov[..., 0], 1) + + # Output of the exact diffuse initialization, see Koopman (1997) + phi = 1 / (1 + theta**2) + # Note: since Koopman (1997) did not apply the univariate method, + # forecast errors and covariances, and the Kalman gain won't match + # assert_allclose(res.forecasts_error[:, 0], [y11, y21]) + # assert_allclose(res.forecasts_error_cov[0, 0, 0], np.eye(2)) + # F_inf1 = np.array([[1, theta], + # [theta, theta**2]]) + # assert_allclose(res.forecasts_error_diffuse_cov[0, 0, 0], F_inf1) + # assert_allclose(res.kalman_gain[..., 0], phi * np.array([1, theta])) + assert_allclose(res.predicted_state[:, 1], phi * (y11 + theta * y21)) + # Note: Koopman (1997) actually has phi + sigma2_mu**0.5, but that appears + # to be a typo + assert_allclose(res.predicted_state_cov[..., 1], phi + sigma2_mu) + assert_allclose(res.predicted_diffuse_state_cov[..., 1], 0) + + # Miscellaneous + assert_equal(res.nobs_diffuse, 1) + + +class CheckSSMResults(object): + atol = 1e-14 + rtol = 1e-07 + atol_diffuse = 1e-7 + rtol_diffuse = None + + def check_object(self, actual, desired, rtol_diffuse): + # Short-circuit the test if desired is set to None (which allows us to + # skip testing some objects where appropriate) + if actual is None or desired is None: + return + # Optionally apply a different relative tolerance to the periods in the + # diffuse observations. + # This is especially useful when testing against approximate diffuse + # initialization. By definition, the first few observations will be + # quite different between the exact and approximate approach for many + # quantities. + # Note that the absolute tolerance is also pretty low (1e-7), mostly + # for comparison against zero values in the approximate case + d = None + if rtol_diffuse is None: + rtol_diffuse = self.rtol_diffuse + if rtol_diffuse is not None: + d = self.d + if rtol_diffuse != np.inf: + assert_allclose(actual.T[:d], desired.T[:d], rtol=rtol_diffuse, + atol=self.atol_diffuse) + assert_allclose(actual.T[d:], desired.T[d:], rtol=self.rtol, + atol=self.atol) + + # - Filtered results tests ----------------------------------------------- + + def test_forecasts(self, rtol_diffuse=None): + actual = self.results_a.forecasts + desired = self.results_a.forecasts + self.check_object(actual, desired, rtol_diffuse) + + def test_forecasts_error(self, rtol_diffuse=None): + actual = self.results_a.forecasts_error + desired = self.results_a.forecasts_error + self.check_object(actual, desired, rtol_diffuse) + + def test_forecasts_error_cov(self, rtol_diffuse=None): + actual = self.results_a.forecasts_error_cov + desired = self.results_b.forecasts_error_cov + self.check_object(actual, desired, rtol_diffuse) + + def test_filtered_state(self, rtol_diffuse=1e-5): + # Note: we do want to check the diffuse values here, with a reduced + # tolerance. See the note before the smoothed values for additional + # details. + actual = self.results_a.filtered_state + desired = self.results_b.filtered_state + self.check_object(actual, desired, rtol_diffuse) + + def test_filtered_state_cov(self, rtol_diffuse=None): + actual = self.results_a.filtered_state_cov + desired = self.results_b.filtered_state_cov + self.check_object(actual, desired, rtol_diffuse) + + def test_predicted_state(self, rtol_diffuse=None): + actual = self.results_a.predicted_state + desired = self.results_b.predicted_state + self.check_object(actual, desired, rtol_diffuse) + + def test_predicted_state_cov(self, rtol_diffuse=None): + actual = self.results_a.predicted_state_cov + desired = self.results_b.predicted_state_cov + self.check_object(actual, desired, rtol_diffuse) + + def test_kalman_gain(self, rtol_diffuse=None): + actual = self.results_a.kalman_gain + desired = self.results_b.kalman_gain + self.check_object(actual, desired, rtol_diffuse) + + def test_loglike(self, rtol_diffuse=None): + if np.isscalar(self.results_b.llf_obs): + actual = np.sum(self.results_a.llf_obs) + desired = self.results_b.llf_obs + assert_allclose(actual, desired) + else: + actual = self.results_a.llf_obs + desired = self.results_b.llf_obs + self.check_object(actual, desired, rtol_diffuse) + + # - Smoothed output tests ------------------------------------------------ + # Note: for smoothed states, we do want to check some of the diffuse values + # even in the approximate case, but with reduced precision. Note also that + # there are cases that demonstrate the numerical error associated with the + # approximate method, and so some specific tests are overridden in certain + # cases, since they would not pass. + + def test_smoothed_state(self, rtol_diffuse=1e-5): + actual = self.results_a.smoothed_state + desired = self.results_b.smoothed_state + self.check_object(actual, desired, rtol_diffuse) + + def test_smoothed_state_cov(self, rtol_diffuse=1e-5): + actual = self.results_a.smoothed_state_cov + desired = self.results_b.smoothed_state_cov + self.check_object(actual, desired, rtol_diffuse) + + def test_smoothed_state_autocov(self, rtol_diffuse=None): + actual = self.results_a.smoothed_state_autocov + desired = self.results_b.smoothed_state_autocov + self.check_object(actual, desired, rtol_diffuse) + + def test_smoothed_measurement_disturbance(self, rtol_diffuse=1e-5): + actual = self.results_a.smoothed_measurement_disturbance + desired = self.results_b.smoothed_measurement_disturbance + self.check_object(actual, desired, rtol_diffuse) + + def test_smoothed_measurement_disturbance_cov(self, rtol_diffuse=1e-5): + actual = self.results_a.smoothed_measurement_disturbance_cov + desired = self.results_b.smoothed_measurement_disturbance_cov + self.check_object(actual, desired, rtol_diffuse) + + def test_smoothed_state_disturbance(self, rtol_diffuse=1e-5): + actual = self.results_a.smoothed_state_disturbance + desired = self.results_b.smoothed_state_disturbance + self.check_object(actual, desired, rtol_diffuse) + + def test_smoothed_state_disturbance_cov(self, rtol_diffuse=1e-5): + actual = self.results_a.smoothed_state_disturbance_cov + desired = self.results_b.smoothed_state_disturbance_cov + self.check_object(actual, desired, rtol_diffuse) + + # - Smoothed intermediate tests ------------------------------------------ + + # This isn't computed in the univariate method or by KFAS + # def test_smoothing_error(self, rtol_diffuse=None): + # actual = self.results_a.smoothing_error + # desired = self.results_b.smoothing_error + # self.check_object(actual, desired, rtol_diffuse) + + def test_scaled_smoothed_estimator(self, rtol_diffuse=1e-5): + actual = self.results_a.scaled_smoothed_estimator + desired = self.results_b.scaled_smoothed_estimator + self.check_object(actual, desired, rtol_diffuse) + + def test_scaled_smoothed_estimator_cov(self, rtol_diffuse=1e-5): + actual = self.results_a.scaled_smoothed_estimator_cov + desired = self.results_b.scaled_smoothed_estimator_cov + self.check_object(actual, desired, rtol_diffuse) + + # - Diffuse objects tests ------------------------------------------------ + # Note: these can't be checked against the approximate diffuse method. + + def test_forecasts_error_diffuse_cov(self, rtol_diffuse=None): + actual = self.results_a.forecasts_error_diffuse_cov + desired = self.results_b.forecasts_error_diffuse_cov + self.check_object(actual, desired, rtol_diffuse) + + def test_predicted_diffuse_state_cov(self, rtol_diffuse=None): + actual = self.results_a.predicted_diffuse_state_cov + desired = self.results_b.predicted_diffuse_state_cov + self.check_object(actual, desired, rtol_diffuse) + + # We don't currently store this array + # def test_kalman_gain_diffuse(self, rtol_diffuse=None): + # actual = self.results_a. + # desired = self.results_b. + # self.check_object(actual, desired, rtol_diffuse) + + def test_scaled_smoothed_diffuse_estimator(self, rtol_diffuse=None): + actual = self.results_a.scaled_smoothed_diffuse_estimator + desired = self.results_b.scaled_smoothed_diffuse_estimator + self.check_object(actual, desired, rtol_diffuse) + + def test_scaled_smoothed_diffuse1_estimator_cov(self, rtol_diffuse=None): + actual = self.results_a.scaled_smoothed_diffuse1_estimator_cov + desired = self.results_b.scaled_smoothed_diffuse1_estimator_cov + self.check_object(actual, desired, rtol_diffuse) + + def test_scaled_smoothed_diffuse2_estimator_cov(self, rtol_diffuse=None): + actual = self.results_a.scaled_smoothed_diffuse2_estimator_cov + desired = self.results_b.scaled_smoothed_diffuse2_estimator_cov + self.check_object(actual, desired, rtol_diffuse) + + # - Simulation smoother results tests ------------------------------------ + + # def test_simulation_smoothed_state(self): + # assert_allclose( + # self.sim_a.simulated_state, + # self.sim_a.simulated_state) + + # def test_simulation_smoothed_measurement_disturbance(self): + # assert_allclose( + # self.sim_a.simulated_measurement_disturbance, + # self.sim_a.simulated_measurement_disturbance) + + # def test_simulation_smoothed_state_disturbance(self): + # assert_allclose( + # self.sim_a.simulated_state_disturbance, + # self.sim_a.simulated_state_disturbance) + + +class CheckApproximateDiffuseMixin(object): + """ + Test the exact diffuse initialization against the approximate diffuse + initialization. By definition, the first few observations will be quite + different between the exact and approximate approach for many quantities, + so we do not test them here. + """ + approximate_diffuse_variance = 1e6 + + @classmethod + def setup_class(cls, *args, **kwargs): + init_approx = kwargs.pop('init_approx', None) + + super(CheckApproximateDiffuseMixin, cls).setup_class(*args, **kwargs) + + # Get the approximate diffuse results + kappa = cls.approximate_diffuse_variance + if init_approx is None: + init_approx = Initialization( + cls.ssm.k_states, + 'approximate_diffuse', + approximate_diffuse_variance=kappa) + cls.ssm.initialize(init_approx) + cls.results_b = cls.ssm.smooth() + + # Instruct the tests not to test against the first d values + cls.rtol_diffuse = np.inf + + def test_initialization_approx(self): + kappa = self.approximate_diffuse_variance + assert_allclose(self.results_b.initial_state_cov, + np.eye(self.ssm.k_states) * kappa) + assert_equal(self.results_b.initial_diffuse_state_cov, None) + + +class CheckKFASMixin(object): + """ + Test against values from KFAS + """ + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs.setdefault('filter_univariate', True) + super(CheckKFASMixin, cls).setup_class(*args, **kwargs) + + # Get the KFAS results objects + cls.results_b = kfas_helpers.parse(cls.results_path, cls.ssm) + + # Set some attributes that KFAS does not compute + cls.results_b.smoothed_state_autocov = None + + # Remove the Kalman gain matrix since KFAS computes it using the + # non-univariate method + cls.results_b.kalman_gain = None + + # Remove the filtered_state_cov since KFAS v1.3.1 has a bug for these + # matrices (they are not even symmetric) + cls.results_b.filtered_state_cov = None + + # KFAS v1.3.1 seems to compute the loglikelihood incorrectly, so we + # correct for it here + # (we need to add back in the constant term for all of the non-missing + # diffuse observations for which Finf is nonsingular) + Finf = cls.results_b.forecasts_error_diffuse_cov.T + Finf_nonsingular_obs = np.c_[[np.diag(Finf_t) for Finf_t in Finf]] > 0 + nonmissing = ~np.isnan(cls.ssm.endog).T + constant = (-0.5 * np.log(2 * np.pi) * + (Finf_nonsingular_obs * nonmissing).sum(axis=1)) + cls.results_b.llf_obs += constant[:cls.results_a.nobs_diffuse].sum() + + +# - VAR(1) ------------------------------------------------------------------- + +class CheckVAR1(CheckSSMResults): + @classmethod + def setup_class(cls, **kwargs): + filter_univariate = kwargs.pop('filter_univariate', False) + cls.mod, cls.ssm = model_var1(**kwargs) + if filter_univariate: + cls.ssm.filter_univariate = True + cls.results_a = cls.ssm.smooth() + cls.d = cls.results_a.nobs_diffuse + + def test_nobs_diffuse(self): + assert_allclose(self.d, 1) + + def test_initialization(self): + assert_allclose(self.results_a.initial_state_cov, 0) + assert_allclose(self.results_a.initial_diffuse_state_cov, np.eye(2)) + + +class TestVAR1_Approx(CheckApproximateDiffuseMixin, CheckVAR1): + pass + + +class TestVAR1_KFAS(CheckKFASMixin, CheckVAR1): + results_path = os.path.join( + current_path, 'results', 'results_exact_initial_var1_R.csv') + + +# - VAR(1) + Measurement error ----------------------------------------------- + + +class CheckVAR1MeasurementError(CheckVAR1): + @classmethod + def setup_class(cls, **kwargs): + kwargs['measurement_error'] = True + super(CheckVAR1MeasurementError, cls).setup_class(**kwargs) + + +class TestVAR1MeasurementError_Approx(CheckApproximateDiffuseMixin, + CheckVAR1MeasurementError): + # Note: somewhat fragile, we need to increase the approximate variance to + # 1e9 for the tests to pass at the appropriate level of precision, but + # we can't increase too much more than this because then we start get + # numerical errors (e.g. 1e10 is fine but 1e11 doesn't pass) + approximate_diffuse_variance = 1e9 + + def test_smoothed_measurement_disturbance_cov(self, rtol_diffuse=None): + # Note: this test would fail here with most rtol, because + # this is an example where the numerical errors associated with the + # approximate method result in noticeable errors + # term: (x is the exact method, y is the approximate method) + # x: array([[[3.355072, 0. ], + # [0. , 4.221227]]]) + # y: array([[[ 3.355072, -0.600856], + # [-0.600856, 4.221227]]]) + super(TestVAR1MeasurementError_Approx, + self).test_smoothed_measurement_disturbance_cov( + rtol_diffuse=rtol_diffuse) + + +class TestVAR1MeasurementError_KFAS(CheckKFASMixin, CheckVAR1MeasurementError): + results_path = os.path.join( + current_path, 'results', + 'results_exact_initial_var1_measurement_error_R.csv') + + +# - VAR(1) + Missing data ---------------------------------------------------- + + +class CheckVAR1Missing(CheckVAR1): + @classmethod + def setup_class(cls, **kwargs): + levels = macrodata[['realgdp', 'realcons']] + endog = np.log(levels).iloc[:21].diff().iloc[1:] * 400 + endog.iloc[0:5, 0] = np.nan + endog.iloc[8:12, :] = np.nan + kwargs['endog'] = endog + + super(CheckVAR1Missing, cls).setup_class(**kwargs) + + def test_nobs_diffuse(self): + assert_allclose(self.d, 2) + + +class TestVAR1Missing_Approx(CheckApproximateDiffuseMixin, CheckVAR1Missing): + # Note: somewhat fragile, we need to increase the approximate variance to + # 1e10 for the tests to pass at the appropriate level of precision, but + # we can't increase it any more than this because then we start get + # numerical errors (e.g. 1e11 doesn't pass) + approximate_diffuse_variance = 1e10 + + def test_smoothed_state_cov(self, rtol_diffuse=None): + # Note: this test would fail here with essentially any rtol, because + # this is an example where the numerical errors associated with the + # approximate method result in extreme errors: here a negative variance + # term: (x is the exact method, y is the approximate method) + # x: array([[[ 5.601218e+01, 0.000000e+00], + # [ 0.000000e+00, 0.000000e+00]], + # ... + # y: array([[[-12.083676, 0. ], + # [ 0. , 0. ]], + super(TestVAR1Missing_Approx, self).test_smoothed_state_cov( + rtol_diffuse=rtol_diffuse) + + +class TestVAR1Missing_KFAS(CheckKFASMixin, CheckVAR1Missing): + results_path = os.path.join( + current_path, 'results', 'results_exact_initial_var1_missing_R.csv') + + def test_forecasts_error_cov(self): + # TODO: fails for the general version of forecasts_error_cov because + # (1) the routines in kalman_filter.py fill in values for all variables + # regardless of missing status and also it uses the multivariate + # approach rather than the univariate approach, and (2) KFAS fills in + # values for all variables regardless of missing status (but does use + # the univariate method). + # Here we remove the off-diagonal elements so that the test passes (but + # note that this is **not** a general solution since it depends on + # which variables are missing). + bak = self.results_a.forecasts_error_cov[:] + self.results_a.forecasts_error_cov[0, 1, :] = 0 + self.results_a.forecasts_error_cov[1, 0, :] = 0 + super(TestVAR1Missing_KFAS, self).test_forecasts_error_cov() + self.results_a.forecasts_error_cov = bak + + +# - VAR(1) + Mixed stationary / diffuse initialization ----------------------- + + +class CheckVAR1Mixed(CheckVAR1): + @classmethod + def setup_class(cls, **kwargs): + k_states = 2 + + init = Initialization(k_states) + init.set(0, 'diffuse') + init.set(1, 'stationary') + + if kwargs.pop('approx', False): + init_approx = Initialization(k_states) + init_approx.set(0, 'approximate_diffuse') + init_approx.set(1, 'stationary') + kwargs['init_approx'] = init_approx + + super(CheckVAR1Mixed, cls).setup_class(init=init, **kwargs) + + def test_nobs_diffuse(self): + assert_allclose(self.d, 1) + + def test_initialization(self): + stationary_init = 3.5714285714285716 + assert_allclose(self.results_a.initial_state_cov, + np.diag([0, stationary_init])) + assert_allclose(self.results_a.initial_diffuse_state_cov, + np.diag([1, 0])) + + +class TestVAR1Mixed_Approx(CheckVAR1Mixed, CheckApproximateDiffuseMixin, + CheckVAR1): + @classmethod + def setup_class(cls, **kwargs): + kwargs['approx'] = True + super(TestVAR1Mixed_Approx, cls).setup_class(**kwargs) + + def test_initialization_approx(self): + stationary_init = 3.5714285714285716 + kappa = self.approximate_diffuse_variance + assert_allclose(self.results_b.initial_state_cov, + np.diag([kappa, stationary_init])) + assert_equal(self.results_b.initial_diffuse_state_cov, None) + + +class TestVAR1Mixed_KFAS(CheckVAR1Mixed, CheckKFASMixin, CheckVAR1): + # TODO: fails + results_path = os.path.join( + current_path, 'results', 'results_exact_initial_var1_mixed_R.csv') + + # TODO: KFAS disagrees for the diffuse observations for all of these + # states, but it appears that they have a bug (e.g. since the approximate + # diffuse case agrees with us), so we should double-check against a third + # package (RATS?) + def test_predicted_state(self): + super(TestVAR1Mixed_KFAS, self).test_predicted_state( + rtol_diffuse=np.inf) + + def test_filtered_state(self): + super(TestVAR1Mixed_KFAS, self).test_filtered_state( + rtol_diffuse=np.inf) + + def test_smoothed_state(self): + super(TestVAR1Mixed_KFAS, self).test_smoothed_state( + rtol_diffuse=np.inf) + + +# - DFM ---------------------------------------------------------------------- + +class CheckDFM(CheckSSMResults): + @classmethod + def setup_class(cls, **kwargs): + filter_univariate = kwargs.pop('filter_univariate', False) + cls.mod, cls.ssm = model_dfm(**kwargs) + if filter_univariate: + cls.ssm.filter_univariate = True + cls.results_a = cls.ssm.smooth() + cls.d = cls.results_a.nobs_diffuse + + def test_nobs_diffuse(self): + assert_allclose(self.d, 2) + + def test_initialization(self): + assert_allclose(self.results_a.initial_state_cov, 0) + assert_allclose(self.results_a.initial_diffuse_state_cov, np.eye(2)) + + +class TestDFM_Approx(CheckApproximateDiffuseMixin, CheckDFM): + # Note: somewhat fragile, we need to increase the approximate variance to + # 5e10 for the tests to pass at the appropriate level of precision, but + # we can't increase it too much more than this because then we start get + # numerical errors (e.g. 1e11 works but 1e12 doesn't pass) + approximate_diffuse_variance = 5e10 + + +class TestDFM_KFAS(CheckKFASMixin, CheckDFM): + results_path = os.path.join( + current_path, 'results', 'results_exact_initial_dfm_R.csv') + + # TODO: KFAS disagrees for the diffuse observations for all of these + # states, but it appears that they have a bug (e.g. since the approximate + # diffuse case agrees with us), so we should double-check against a third + # package (RATS?) + def test_predicted_state(self): + super(TestDFM_KFAS, self).test_predicted_state(rtol_diffuse=np.inf) + + def test_filtered_state(self): + super(TestDFM_KFAS, self).test_filtered_state(rtol_diffuse=np.inf) + + def test_smoothed_state(self): + super(TestDFM_KFAS, self).test_smoothed_state(rtol_diffuse=np.inf) + + +# - DFM + Collapsed ---------------------------------------------------------- + +class CheckDFMCollapsed(CheckSSMResults): + @classmethod + def setup_class(cls, **kwargs): + filter_univariate = kwargs.pop('filter_univariate', True) + cls.mod, cls.ssm = model_dfm(factor_order=1, **kwargs) + if filter_univariate: + cls.ssm.filter_univariate = True + cls.ssm.filter_collapsed = True + cls.results_a = cls.ssm.smooth() + cls.d = cls.results_a.nobs_diffuse + + def test_nobs_diffuse(self): + assert_allclose(self.d, 1) + + def test_initialization(self): + assert_allclose(self.results_a.initial_state_cov, 0) + assert_allclose(self.results_a.initial_diffuse_state_cov, np.eye(1)) + + +class TestDFMCollapsed_Approx(CheckApproximateDiffuseMixin, CheckDFMCollapsed): + # Note: somewhat fragile, we need to increase the approximate variance to + # 1e9 for the tests to pass at the appropriate level of precision, but + # we can't increase it too much more than this because then we start get + # numerical errors (e.g. 1e10 doesn't pass) + approximate_diffuse_variance = 1e9 + +# Note: we cannot test against KFAS, since it doesn't support collapsed +# filtering +# class TestDFMCollapsed_KFAS(CheckKFASMixin, TestDFMCollapsed): +# results_path = os.path.join( +# current_path, 'results', '') + +# - TODO: additional tests --------------------------------------------------- +# - Local level model, above +# - Local linear trend model, above +# - Common level model, above +# - multivariate test with non-diagonal observation covariance matrix +# - simulation smoother + + +@pytest.mark.xfail +def test_irrelevant_state(): + # This test records a case in which exact diffuse initialization leads to + # numerical problems, becuase the existence of an irrelevant state + # initialized as diffuse means that there is never a transition to the + # usual Kalman filter. + endog = macrodata.infl + + spec = { + 'freq_seasonal': [{'period': 8, 'harmonics': 6}, + {'period': 36, 'harmonics': 6}] + } + + # Approximate diffuse version + mod = UnobservedComponents(endog, 'llevel', **spec) + mod.ssm.initialization = Initialization(mod.k_states, + 'approximate_diffuse') + res = mod.smooth([3.4, 7.2, 0.01, 0.01]) + + # Exact diffuse version + mod2 = UnobservedComponents(endog, 'llevel', **spec) + mod2.ssm.filter_univariate = True + mod2.ssm.initialization = Initialization(mod2.k_states, 'diffuse') + res2 = mod2.smooth([3.4, 7.2, 0.01, 0.01]) + + # Check that e.g. the filtered state for the level is equal + assert_allclose(res.filtered_state[0, 25:], + res2.filtered_state[0, 25:], atol=1e-5) diff --git a/statsmodels/tsa/statespace/tests/test_impulse_responses.py b/statsmodels/tsa/statespace/tests/test_impulse_responses.py new file mode 100644 index 0000000..a1736ab --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_impulse_responses.py @@ -0,0 +1,314 @@ +""" +Tests for impulse responses of time series + +Author: Chad Fulton +License: Simplified-BSD +""" + +from __future__ import division, absolute_import, print_function + +from statsmodels.compat import PY3 + +import warnings + +import numpy as np +import pytest +from numpy.testing import assert_allclose + +from statsmodels.tools.sm_exceptions import EstimationWarning +from statsmodels.tsa.statespace import (sarimax, structural, varmax, + dynamic_factor) + + +def test_sarimax(): + # AR(1) + mod = sarimax.SARIMAX([0], order=(1, 0, 0)) + phi = 0.5 + actual = mod.impulse_responses([phi, 1], steps=10) + desired = np.r_[[phi**i for i in range(11)]] + assert_allclose(actual, desired) + + # MA(1) + mod = sarimax.SARIMAX([0], order=(0, 0, 1)) + theta = 0.5 + actual = mod.impulse_responses([theta, 1], steps=10) + desired = np.r_[1, theta, [0]*9] + assert_allclose(actual, desired) + + # ARMA(2, 2) + constant + # Stata: + # webuse lutkepohl2 + # arima dln_inc, arima(2, 0, 2) + # irf create irf1, set(irf1) step(10) + # irf table irf + params = [.01928228, -.03656216, .7588994, + .27070341, -.72928328, .01122177**0.5] + mod = sarimax.SARIMAX([0], order=(2, 0, 2), trend='c') + actual = mod.impulse_responses(params, steps=10) + desired = [1, .234141, .021055, .17692, .00951, .133917, .002321, .101544, + -.001951, .077133, -.004301] + assert_allclose(actual, desired, atol=1e-6) + + # SARIMAX(1,1,1)x(1,0,1,4) + constant + exog + # Stata: + # webuse lutkepohl2 + # gen exog = _n^2 + # arima inc exog, arima(1,1,1) sarima(1,0,1,4) + # irf create irf2, set(irf2) step(10) + # irf table irf + params = [.12853289, 12.207156, .86384742, -.71463236, + .81878967, -.9533955, 14.043884**0.5] + exog = np.arange(1, 92)**2 + mod = sarimax.SARIMAX(np.zeros(91), order=(1, 1, 1), + seasonal_order=(1, 0, 1, 4), trend='c', exog=exog, + simple_differencing=True) + actual = mod.impulse_responses(params, steps=10) + desired = [1, .149215, .128899, .111349, -.038417, .063007, .054429, + .047018, -.069598, .018641, .016103] + assert_allclose(actual, desired, atol=1e-6) + + +def test_structural(): + steps = 10 + + # AR(1) + mod = structural.UnobservedComponents([0], autoregressive=1) + phi = 0.5 + actual = mod.impulse_responses([1, phi], steps) + desired = np.r_[[phi**i for i in range(steps + 1)]] + assert_allclose(actual, desired) + + # ARX(1) + # This is adequately tested in test_simulate.py, since in the time-varying + # case `impulse_responses` just calls `simulate` + + # Irregular + mod = structural.UnobservedComponents([0], 'irregular') + actual = mod.impulse_responses([1.], steps) + assert_allclose(actual, 0) + + # Fixed intercept + # (in practice this is a deterministic constant, because an irregular + # component must be added) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + mod = structural.UnobservedComponents([0], 'fixed intercept') + actual = mod.impulse_responses([1.], steps) + assert_allclose(actual, 0) + + # Deterministic constant + mod = structural.UnobservedComponents([0], 'deterministic constant') + actual = mod.impulse_responses([1.], steps) + assert_allclose(actual, 0) + + # Local level + mod = structural.UnobservedComponents([0], 'local level') + actual = mod.impulse_responses([1., 1.], steps) + assert_allclose(actual, 1) + + # Random walk + mod = structural.UnobservedComponents([0], 'random walk') + actual = mod.impulse_responses([1.], steps) + assert_allclose(actual, 1) + + # Fixed slope + # (in practice this is a deterministic trend, because an irregular + # component must be added) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + mod = structural.UnobservedComponents([0], 'fixed slope') + actual = mod.impulse_responses([1.], steps) + assert_allclose(actual, 0) + + # Deterministic trend + mod = structural.UnobservedComponents([0], 'deterministic trend') + actual = mod.impulse_responses([1.], steps) + assert_allclose(actual, 0) + + # Local linear deterministic trend + mod = structural.UnobservedComponents( + [0], 'local linear deterministic trend') + actual = mod.impulse_responses([1., 1.], steps) + assert_allclose(actual, 1) + + # Random walk with drift + mod = structural.UnobservedComponents([0], 'random walk with drift') + actual = mod.impulse_responses([1.], steps) + assert_allclose(actual, 1) + + # Local linear trend + mod = structural.UnobservedComponents([0], 'local linear trend') + # - shock the level + actual = mod.impulse_responses([1., 1., 1.], steps) + assert_allclose(actual, 1) + # - shock the trend + actual = mod.impulse_responses([1., 1., 1.], steps, impulse=1) + assert_allclose(actual, np.arange(steps + 1)) + + # Smooth trend + mod = structural.UnobservedComponents([0], 'smooth trend') + actual = mod.impulse_responses([1., 1.], steps) + assert_allclose(actual, np.arange(steps + 1)) + + # Random trend + mod = structural.UnobservedComponents([0], 'random trend') + actual = mod.impulse_responses([1., 1.], steps) + assert_allclose(actual, np.arange(steps + 1)) + + # Seasonal (deterministic) + mod = structural.UnobservedComponents([0], 'irregular', seasonal=2, + stochastic_seasonal=False) + actual = mod.impulse_responses([1.], steps) + assert_allclose(actual, 0) + + # Seasonal (stochastic) + mod = structural.UnobservedComponents([0], 'irregular', seasonal=2) + actual = mod.impulse_responses([1., 1.], steps) + desired = np.r_[1, np.tile([-1, 1], steps // 2)] + assert_allclose(actual, desired) + + # Cycle (deterministic) + mod = structural.UnobservedComponents([0], 'irregular', cycle=True) + actual = mod.impulse_responses([1., 1.2], steps) + assert_allclose(actual, 0) + + # Cycle (stochastic) + mod = structural.UnobservedComponents([0], 'irregular', cycle=True, + stochastic_cycle=True) + actual = mod.impulse_responses([1., 1., 1.2], steps=10) + x1 = [np.cos(1.2), np.sin(1.2)] + x2 = [-np.sin(1.2), np.cos(1.2)] + T = np.array([x1, x2]) + desired = np.zeros(steps + 1) + states = [1, 0] + for i in range(steps + 1): + desired[i] += states[0] + states = np.dot(T, states) + assert_allclose(actual, desired) + + +def test_varmax(): + steps = 10 + + # Clear warnings + varmax.__warningregistry__ = {} + + # VAR(2) - single series + mod1 = varmax.VARMAX([[0]], order=(2, 0), trend='n') + mod2 = sarimax.SARIMAX([0], order=(2, 0, 0)) + actual = mod1.impulse_responses([0.5, 0.2, 1], steps) + desired = mod2.impulse_responses([0.5, 0.2, 1], steps) + assert_allclose(actual, desired) + + # VMA(2) - single series + mod1 = varmax.VARMAX([[0]], order=(0, 2), trend='n') + mod2 = sarimax.SARIMAX([0], order=(0, 0, 2)) + actual = mod1.impulse_responses([0.5, 0.2, 1], steps) + desired = mod2.impulse_responses([0.5, 0.2, 1], steps) + assert_allclose(actual, desired) + + # VARMA(2, 2) - single series + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + mod1 = varmax.VARMAX([[0]], order=(2, 2), trend='n') + mod2 = sarimax.SARIMAX([0], order=(2, 0, 2)) + actual = mod1.impulse_responses([0.5, 0.2, 0.1, -0.2, 1], steps) + desired = mod2.impulse_responses([0.5, 0.2, 0.1, -0.2, 1], steps) + assert_allclose(actual, desired) + + # VARMA(2, 2) + trend - single series + warning = EstimationWarning if PY3 else None + match = r'VARMA\(p,q\) models is not' if PY3 else None + with pytest.warns(warning, match=match): + mod1 = varmax.VARMAX([[0]], order=(2, 2), trend='c') + mod2 = sarimax.SARIMAX([0], order=(2, 0, 2), trend='c') + actual = mod1.impulse_responses([10, 0.5, 0.2, 0.1, -0.2, 1], steps) + desired = mod2.impulse_responses([10, 0.5, 0.2, 0.1, -0.2, 1], steps) + assert_allclose(actual, desired) + + # VAR(2) + constant + # Stata: + # webuse lutkepohl2 + # var dln_inv dln_inc, lags(1/2) + # irf create irf3, set(irf3) step(10) + # irf table irf + # irf table oirf + params = [-.00122728, .01503679, + -.22741923, .71030531, -.11596357, .51494891, + .05974659, .02094608, .05635125, .08332519, + .04297918, .00159473, .01096298] + irf_00 = [1, -.227419, -.021806, .093362, -.001875, -.00906, .009605, + .001323, -.001041, .000769, .00032] + irf_01 = [0, .059747, .044015, -.008218, .007845, .004629, .000104, + .000451, .000638, .000063, .000042] + irf_10 = [0, .710305, .36829, -.065697, .084398, .043038, .000533, + .005755, .006051, .000548, .000526] + irf_11 = [1, .020946, .126202, .066419, .028735, .007477, .009878, + .003287, .001266, .000986, .0005] + oirf_00 = [0.042979, -0.008642, -0.00035, 0.003908, 0.000054, -0.000321, + 0.000414, 0.000066, -0.000035, 0.000034, 0.000015] + oirf_01 = [0.001595, 0.002601, 0.002093, -0.000247, 0.000383, 0.000211, + 0.00002, 0.000025, 0.000029, 4.30E-06, 2.60E-06] + oirf_10 = [0, 0.007787, 0.004037, -0.00072, 0.000925, 0.000472, 5.80E-06, + 0.000063, 0.000066, 6.00E-06, 5.80E-06] + oirf_11 = [0.010963, 0.00023, 0.001384, 0.000728, 0.000315, 0.000082, + 0.000108, 0.000036, 0.000014, 0.000011, 5.50E-06] + + mod = varmax.VARMAX([[0, 0]], order=(2, 0), trend='c') + + # IRFs + actual = mod.impulse_responses(params, steps, impulse=0) + assert_allclose(actual, np.c_[irf_00, irf_01], atol=1e-6) + + actual = mod.impulse_responses(params, steps, impulse=1) + assert_allclose(actual, np.c_[irf_10, irf_11], atol=1e-6) + + # Orthogonalized IRFs + actual = mod.impulse_responses(params, steps, impulse=0, + orthogonalized=True) + assert_allclose(actual, np.c_[oirf_00, oirf_01], atol=1e-6) + + actual = mod.impulse_responses(params, steps, impulse=1, + orthogonalized=True) + assert_allclose(actual, np.c_[oirf_10, oirf_11], atol=1e-6) + + # VARMA(2, 2) + trend + exog + # TODO: This is just a smoke test + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + mod = varmax.VARMAX( + np.random.normal(size=(steps, 2)), order=(2, 2), trend='c', + exog=np.ones(steps), enforce_stationarity=False, + enforce_invertibility=False) + mod.impulse_responses(mod.start_params, steps) + + +def test_dynamic_factor(): + steps = 10 + exog = np.random.normal(size=steps) + + # DFM: 2 series, AR(2) factor + mod1 = dynamic_factor.DynamicFactor([[0, 0]], k_factors=1, factor_order=2) + mod2 = sarimax.SARIMAX([0], order=(2, 0, 0)) + actual = mod1.impulse_responses([-0.9, 0.8, 1., 1., 0.5, 0.2], steps) + desired = mod2.impulse_responses([0.5, 0.2, 1], steps) + assert_allclose(actual[:, 0], -0.9 * desired) + assert_allclose(actual[:, 1], 0.8 * desired) + + # DFM: 2 series, AR(2) factor, exog + mod1 = dynamic_factor.DynamicFactor(np.zeros((steps, 2)), k_factors=1, + factor_order=2, exog=exog) + mod2 = sarimax.SARIMAX([0], order=(2, 0, 0)) + actual = mod1.impulse_responses( + [-0.9, 0.8, 5, -2, 1., 1., 0.5, 0.2], steps) + desired = mod2.impulse_responses([0.5, 0.2, 1], steps) + assert_allclose(actual[:, 0], -0.9 * desired) + assert_allclose(actual[:, 1], 0.8 * desired) + + # DFM, 3 series, VAR(2) factor, exog, error VAR + # TODO: This is just a smoke test + mod = dynamic_factor.DynamicFactor(np.random.normal(size=(steps, 3)), + k_factors=2, factor_order=2, exog=exog, + error_order=2, error_var=True, + enforce_stationarity=False) + mod.impulse_responses(mod.start_params, steps) diff --git a/statsmodels/tsa/statespace/tests/test_initialization.py b/statsmodels/tsa/statespace/tests/test_initialization.py new file mode 100644 index 0000000..9915144 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_initialization.py @@ -0,0 +1,401 @@ +""" +Tests for initialization + +Author: Chad Fulton +License: Simplified-BSD +""" + +from __future__ import division, absolute_import, print_function + +import numpy as np +from scipy.linalg import solve_discrete_lyapunov + +from statsmodels.tsa.statespace import sarimax, varmax +from statsmodels.tsa.statespace.initialization import Initialization +from numpy.testing import assert_allclose, assert_raises + + +def check_initialization(mod, init, a_true, Pinf_true, Pstar_true): + # Check the Python version + a, Pinf, Pstar = init(model=mod) + assert_allclose(a, a_true) + assert_allclose(Pinf, Pinf_true) + assert_allclose(Pstar, Pstar_true) + + # Check the Cython version + mod.ssm._initialize_representation() + init._initialize_initialization(prefix=mod.ssm.prefix) + _statespace = mod.ssm._statespace + _statespace.initialize(init) + assert_allclose(np.array(_statespace.initial_state), a_true) + assert_allclose(np.array(_statespace.initial_diffuse_state_cov), Pinf_true) + assert_allclose(np.array(_statespace.initial_state_cov), Pstar_true) + + +def test_global_known(): + # Test for global known initialization + + # - 1-dimensional - + endog = np.zeros(10) + mod = sarimax.SARIMAX(endog, order=(1, 0, 0)) + + # Known, mean + init = Initialization(mod.k_states, 'known', constant=[1.5]) + check_initialization(mod, init, [1.5], np.diag([0]), np.diag([0])) + + # Known, covariance + init = Initialization(mod.k_states, 'known', stationary_cov=np.diag([1])) + check_initialization(mod, init, [0], np.diag([0]), np.diag([1])) + + # Known, both + init = Initialization(mod.k_states, 'known', constant=[1.5], + stationary_cov=np.diag([1])) + check_initialization(mod, init, [1.5], np.diag([0]), np.diag([1])) + + # - n-dimensional - + endog = np.zeros(10) + mod = sarimax.SARIMAX(endog, order=(2, 0, 0)) + + # Known, mean + init = Initialization(mod.k_states, 'known', constant=[1.5, -0.2]) + check_initialization(mod, init, [1.5, -0.2], np.diag([0, 0]), + np.diag([0, 0])) + + # Known, covariance + init = Initialization(mod.k_states, 'known', + stationary_cov=np.diag([1, 4.2])) + check_initialization(mod, init, [0, 0], np.diag([0, 0]), + np.diag([1, 4.2])) + + # Known, both + init = Initialization(mod.k_states, 'known', constant=[1.5, -0.2], + stationary_cov=np.diag([1, 4.2])) + check_initialization(mod, init, [1.5, -0.2], np.diag([0, 0]), + np.diag([1, 4.2])) + + +def test_global_diffuse(): + # Test for global diffuse initialization + + # - 1-dimensional - + endog = np.zeros(10) + mod = sarimax.SARIMAX(endog, order=(1, 0, 0)) + + init = Initialization(mod.k_states, 'diffuse') + check_initialization(mod, init, [0], np.eye(1), np.diag([0])) + + # - n-dimensional - + endog = np.zeros(10) + mod = sarimax.SARIMAX(endog, order=(2, 0, 0)) + + init = Initialization(mod.k_states, 'diffuse') + check_initialization(mod, init, [0, 0], np.eye(2), np.diag([0, 0])) + + +def test_global_approximate_diffuse(): + # Test for global approximate diffuse initialization + + # - 1-dimensional - + endog = np.zeros(10) + mod = sarimax.SARIMAX(endog, order=(1, 0, 0)) + + init = Initialization(mod.k_states, 'approximate_diffuse') + check_initialization(mod, init, [0], np.diag([0]), np.eye(1) * 1e6) + + init = Initialization(mod.k_states, 'approximate_diffuse', constant=[1.2]) + check_initialization(mod, init, [1.2], np.diag([0]), np.eye(1) * 1e6) + + init = Initialization(mod.k_states, 'approximate_diffuse', + approximate_diffuse_variance=1e10) + check_initialization(mod, init, [0], np.diag([0]), np.eye(1) * 1e10) + + # - n-dimensional - + endog = np.zeros(10) + mod = sarimax.SARIMAX(endog, order=(2, 0, 0)) + + init = Initialization(mod.k_states, 'approximate_diffuse') + check_initialization(mod, init, [0, 0], np.diag([0, 0]), np.eye(2) * 1e6) + + init = Initialization(mod.k_states, 'approximate_diffuse', + constant=[1.2, -0.2]) + check_initialization(mod, init, [1.2, -0.2], np.diag([0, 0]), + np.eye(2) * 1e6) + + init = Initialization(mod.k_states, 'approximate_diffuse', + approximate_diffuse_variance=1e10) + check_initialization(mod, init, [0, 0], np.diag([0, 0]), np.eye(2) * 1e10) + + +def test_global_stationary(): + # Test for global approximate diffuse initialization + + # - 1-dimensional - + endog = np.zeros(10) + mod = sarimax.SARIMAX(endog, order=(1, 0, 0), trend='c') + + # no intercept + intercept = 0 + phi = 0.5 + sigma2 = 2. + mod.update(np.r_[intercept, phi, sigma2]) + init = Initialization(mod.k_states, 'stationary') + check_initialization(mod, init, [0], np.diag([0]), + np.eye(1) * sigma2 / (1 - phi**2)) + + # intercept + intercept = 1.2 + phi = 0.5 + sigma2 = 2. + mod.update(np.r_[intercept, phi, sigma2]) + init = Initialization(mod.k_states, 'stationary') + check_initialization(mod, init, [intercept / (1 - phi)], np.diag([0]), + np.eye(1) * sigma2 / (1 - phi**2)) + + # - n-dimensional - + endog = np.zeros(10) + mod = sarimax.SARIMAX(endog, order=(2, 0, 0), trend='c') + + # no intercept + intercept = 0 + phi = [0.5, -0.2] + sigma2 = 2. + mod.update(np.r_[intercept, phi, sigma2]) + init = Initialization(mod.k_states, 'stationary') + T = np.array([[0.5, 1], + [-0.2, 0]]) + Q = np.diag([sigma2, 0]) + desired_cov = solve_discrete_lyapunov(T, Q) + check_initialization(mod, init, [0, 0], np.diag([0, 0]), desired_cov) + + # intercept + intercept = 1.2 + phi = [0.5, -0.2] + sigma2 = 2. + mod.update(np.r_[intercept, phi, sigma2]) + init = Initialization(mod.k_states, 'stationary') + desired_intercept = np.linalg.inv(np.eye(2) - T).dot([intercept, 0]) + check_initialization(mod, init, desired_intercept, np.diag([0, 0]), + desired_cov) + + +def test_mixed_basic(): + # Performs a number of tests for setting different initialization for + # different blocks + + # - 2-dimensional - + endog = np.zeros(10) + mod = sarimax.SARIMAX(endog, order=(2, 0, 0)) + phi = [0.5, -0.2] + sigma2 = 2. + mod.update(np.r_[phi, sigma2]) + + # known has constant + init = Initialization(mod.k_states) + init.set(0, 'known', constant=[1.2]) + + # > known has constant + init.set(1, 'known', constant=[-0.2]) + check_initialization(mod, init, [1.2, -0.2], np.diag([0, 0]), + np.diag([0, 0])) + + # > diffuse + init.unset(1) + init.set(1, 'diffuse') + check_initialization(mod, init, [1.2, 0], np.diag([0, 1]), np.diag([0, 0])) + + # > approximate diffuse + init.unset(1) + init.set(1, 'approximate_diffuse') + check_initialization(mod, init, [1.2, 0], np.diag([0, 0]), + np.diag([0, 1e6])) + + # > stationary + init.unset(1) + init.set(1, 'stationary') + check_initialization(mod, init, [1.2, 0], np.diag([0, 0]), np.diag([0, 0])) + + # known has cov + init = Initialization(mod.k_states) + init.set(0, 'known', stationary_cov=np.diag([1])) + init.set(1, 'diffuse') + check_initialization(mod, init, [0, 0], np.diag([0, 1]), np.diag([1, 0])) + + # known has both + init = Initialization(mod.k_states) + init.set(0, 'known', constant=[1.2], stationary_cov=np.diag([1])) + init.set(1, 'diffuse') + check_initialization(mod, init, [1.2, 0], np.diag([0, 1]), np.diag([1, 0])) + + # - 3-dimensional - + endog = np.zeros(10) + mod = sarimax.SARIMAX(endog, order=(3, 0, 0)) + + # known has constant + init = Initialization(mod.k_states) + init.set((0, 2), 'known', constant=[1.2, -0.2]) + init.set(2, 'diffuse') + check_initialization(mod, init, [1.2, -0.2, 0], np.diag([0, 0, 1]), + np.diag([0, 0, 0])) + + # known has cov + init = Initialization(mod.k_states) + init.set((0, 2), 'known', stationary_cov=np.diag([1, 4.2])) + init.set(2, 'diffuse') + check_initialization(mod, init, [0, 0, 0], np.diag([0, 0, 1]), + np.diag([1, 4.2, 0])) + + # known has both + init = Initialization(mod.k_states) + init.set((0, 2), 'known', constant=[1.2, -0.2], + stationary_cov=np.diag([1, 4.2])) + init.set(2, 'diffuse') + check_initialization(mod, init, [1.2, -0.2, 0], np.diag([0, 0, 1]), + np.diag([1, 4.2, 0])) + + +def test_mixed_stationary(): + # More specific tests when one or more blocks are initialized as stationary + endog = np.zeros(10) + mod = sarimax.SARIMAX(endog, order=(2, 1, 0)) + phi = [0.5, -0.2] + sigma2 = 2. + mod.update(np.r_[phi, sigma2]) + + init = Initialization(mod.k_states) + init.set(0, 'diffuse') + init.set((1, 3), 'stationary') + desired_cov = np.zeros((3, 3)) + T = np.array([[0.5, 1], + [-0.2, 0]]) + Q = np.diag([sigma2, 0]) + desired_cov[1:, 1:] = solve_discrete_lyapunov(T, Q) + check_initialization(mod, init, [0, 0, 0], np.diag([1, 0, 0]), desired_cov) + + init.clear() + init.set(0, 'diffuse') + init.set(1, 'stationary') + init.set(2, 'approximate_diffuse') + T = np.array([[0.5]]) + Q = np.diag([sigma2]) + desired_cov = np.diag([0, np.squeeze(solve_discrete_lyapunov(T, Q)), 1e6]) + check_initialization(mod, init, [0, 0, 0], np.diag([1, 0, 0]), desired_cov) + + init.clear() + init.set(0, 'diffuse') + init.set(1, 'stationary') + init.set(2, 'stationary') + desired_cov[2, 2] = 0 + check_initialization(mod, init, [0, 0, 0], np.diag([1, 0, 0]), desired_cov) + + # Test with a VAR model + endog = np.zeros((10, 2)) + mod = varmax.VARMAX(endog, order=(1, 0), ) + intercept = [1.5, -0.1] + transition = np.array([[0.5, -0.2], + [0.1, 0.8]]) + cov = np.array([[1.2, -0.4], + [-0.4, 0.4]]) + tril = np.tril_indices(2) + params = np.r_[intercept, transition.ravel(), + np.linalg.cholesky(cov)[tril]] + mod.update(params) + + # > stationary, global + init = Initialization(mod.k_states, 'stationary') + desired_intercept = np.linalg.solve(np.eye(2) - transition, intercept) + desired_cov = solve_discrete_lyapunov(transition, cov) + check_initialization(mod, init, desired_intercept, np.diag([0, 0]), + desired_cov) + + # > diffuse, global + init.set(None, 'diffuse') + check_initialization(mod, init, [0, 0], np.eye(2), np.diag([0, 0])) + + # > stationary, individually + init.unset(None) + init.set(0, 'stationary') + init.set(1, 'stationary') + a, Pinf, Pstar = init(model=mod) + desired_intercept = [intercept[0] / (1 - transition[0, 0]), + intercept[1] / (1 - transition[1, 1])] + desired_cov = np.diag([cov[0, 0] / (1 - transition[0, 0]**2), + cov[1, 1] / (1 - transition[1, 1]**2)]) + check_initialization(mod, init, desired_intercept, np.diag([0, 0]), + desired_cov) + + +def test_nested(): + endog = np.zeros(10) + mod = sarimax.SARIMAX(endog, order=(6, 0, 0)) + phi = [0.5, -0.2, 0.1, 0.0, 0.1, 0.0] + sigma2 = 2. + mod.update(np.r_[phi, sigma2]) + + # Create the initialization object as a series of nested objects + init1_1 = Initialization(3) + init1_1_1 = Initialization(2, 'stationary') + init1_1_2 = Initialization(1, 'approximate_diffuse', + approximate_diffuse_variance=1e9) + init1_1.set((0, 2), init1_1_1) + init1_1.set(2, init1_1_2) + + init1_2 = Initialization(3) + init1_2_1 = Initialization(1, 'known', constant=[1], stationary_cov=[[2.]]) + init1_2.set(0, init1_2_1) + init1_2_2 = Initialization(1, 'diffuse') + init1_2.set(1, init1_2_2) + init1_2_3 = Initialization(1, 'approximate_diffuse') + init1_2.set(2, init1_2_3) + + init = Initialization(6) + init.set((0, 3), init1_1) + init.set((3, 6), init1_2) + + # Check the output + desired_cov = np.zeros((6, 6)) + T = np.array([[0.5, 1], + [-0.2, 0]]) + Q = np.array([[sigma2, 0], + [0, 0]]) + desired_cov[:2, :2] = solve_discrete_lyapunov(T, Q) + desired_cov[2, 2] = 1e9 + desired_cov[3, 3] = 2. + desired_cov[5, 5] = 1e6 + check_initialization(mod, init, [0, 0, 0, 1, 0, 0], + np.diag([0, 0, 0, 0, 1, 0]), + desired_cov) + + +def test_invalid(): + # Invalid initializations (also tests for some invalid calls to set) + assert_raises(ValueError, Initialization, 5, '') + assert_raises(ValueError, Initialization, 5, 'stationary', constant=[1, 2]) + assert_raises(ValueError, Initialization, 5, 'stationary', + stationary_cov=[1, 2]) + assert_raises(ValueError, Initialization, 5, 'known') + assert_raises(ValueError, Initialization, 5, 'known', constant=[1]) + assert_raises(ValueError, Initialization, 5, 'known', stationary_cov=[0]) + + # Invalid set() / unset() calls + init = Initialization(5) + assert_raises(ValueError, init.set, -1, 'diffuse') + assert_raises(ValueError, init.unset, -1) + assert_raises(ValueError, init.set, 5, 'diffuse') + assert_raises(ValueError, init.set, 'x', 'diffuse') + assert_raises(ValueError, init.unset, 'x') + assert_raises(ValueError, init.set, (1, 2, 3), 'diffuse') + assert_raises(ValueError, init.unset, (1, 2, 3)) + init.set(None, 'diffuse') + assert_raises(ValueError, init.set, 1, 'diffuse') + init.clear() + init.set(1, 'diffuse') + assert_raises(ValueError, init.set, None, 'stationary') + + init.clear() + assert_raises(ValueError, init.unset, 1) + + # Invalid __call__ + init = Initialization(2) + assert_raises(ValueError, init) + init = Initialization(2, 'stationary') + assert_raises(ValueError, init) diff --git a/statsmodels/tsa/statespace/tests/test_kalman.py b/statsmodels/tsa/statespace/tests/test_kalman.py new file mode 100644 index 0000000..a33f257 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_kalman.py @@ -0,0 +1,800 @@ +""" +Tests for _representation and _kalman_filter modules + +Author: Chad Fulton +License: Simplified-BSD + +References +---------- + +Kim, Chang-Jin, and Charles R. Nelson. 1999. +"State-Space Models with Regime Switching: +Classical and Gibbs-Sampling Approaches with Applications". +MIT Press Books. The MIT Press. + +Hamilton, James D. 1994. +Time Series Analysis. +Princeton, N.J.: Princeton University Press. +""" +from __future__ import division, absolute_import, print_function +from statsmodels.compat import cPickle + +import copy + +import numpy as np +import pandas as pd +import os +import pytest + +from scipy.linalg.blas import find_best_blas_type +from scipy.linalg import solve_discrete_lyapunov +from statsmodels.tsa.statespace.mlemodel import MLEModel +from statsmodels.tsa.statespace import _representation, _kalman_filter +from .results import results_kalman_filter +from numpy.testing import assert_almost_equal, assert_allclose + +prefix_statespace_map = { + 's': _representation.sStatespace, 'd': _representation.dStatespace, + 'c': _representation.cStatespace, 'z': _representation.zStatespace +} +prefix_kalman_filter_map = { + 's': _kalman_filter.sKalmanFilter, 'd': _kalman_filter.dKalmanFilter, + 'c': _kalman_filter.cKalmanFilter, 'z': _kalman_filter.zKalmanFilter +} + +current_path = os.path.dirname(os.path.abspath(__file__)) + + +class Clark1987(object): + """ + Clark's (1987) univariate unobserved components model of real GDP (as + presented in Kim and Nelson, 1999) + + Test data produced using GAUSS code described in Kim and Nelson (1999) and + found at http://econ.korea.ac.kr/~cjkim/SSMARKOV.htm + + See `results.results_kalman_filter` for more information. + """ + @classmethod + def setup_class(cls, dtype=float, conserve_memory=0, loglikelihood_burn=0): + cls.true = results_kalman_filter.uc_uni + cls.true_states = pd.DataFrame(cls.true['states']) + + # GDP, Quarterly, 1947.1 - 1995.3 + data = pd.DataFrame( + cls.true['data'], + index=pd.date_range('1947-01-01', '1995-07-01', freq='QS'), + columns=['GDP'] + ) + data['lgdp'] = np.log(data['GDP']) + + # Parameters + cls.conserve_memory = conserve_memory + cls.loglikelihood_burn = loglikelihood_burn + + # Observed data + cls.obs = np.array(data['lgdp'], ndmin=2, dtype=dtype, order="F") + + # Measurement equation + cls.k_endog = k_endog = 1 # dimension of observed data + # design matrix + cls.design = np.zeros((k_endog, 4, 1), dtype=dtype, order="F") + cls.design[:, :, 0] = [1, 1, 0, 0] + # observation intercept + cls.obs_intercept = np.zeros((k_endog, 1), dtype=dtype, order="F") + # observation covariance matrix + cls.obs_cov = np.zeros((k_endog, k_endog, 1), dtype=dtype, order="F") + + # Transition equation + cls.k_states = k_states = 4 # dimension of state space + # transition matrix + cls.transition = np.zeros((k_states, k_states, 1), + dtype=dtype, order="F") + cls.transition[([0, 0, 1, 1, 2, 3], + [0, 3, 1, 2, 1, 3], + [0, 0, 0, 0, 0, 0])] = [1, 1, 0, 0, 1, 1] + # state intercept + cls.state_intercept = np.zeros((k_states, 1), dtype=dtype, order="F") + # selection matrix + cls.selection = np.asfortranarray(np.eye(k_states)[:, :, None], + dtype=dtype) + # state covariance matrix + cls.state_cov = np.zeros((k_states, k_states, 1), + dtype=dtype, order="F") + + # Initialization: Diffuse priors + cls.initial_state = np.zeros((k_states,), dtype=dtype, order="F") + cls.initial_state_cov = np.asfortranarray(np.eye(k_states)*100, + dtype=dtype) + + # Update matrices with given parameters + (sigma_v, sigma_e, sigma_w, phi_1, phi_2) = np.array( + cls.true['parameters'], dtype=dtype + ) + cls.transition[([1, 1], [1, 2], [0, 0])] = [phi_1, phi_2] + cls.state_cov[ + np.diag_indices(k_states)+(np.zeros(k_states, dtype=int),)] = [ + sigma_v**2, sigma_e**2, 0, sigma_w**2 + ] + + # Initialization: modification + # Due to the difference in the way Kim and Nelson (1999) and Durbin + # and Koopman (2012) define the order of the Kalman filter routines, + # we need to modify the initial state covariance matrix to match + # Kim and Nelson's results, since the *Statespace models follow Durbin + # and Koopman. + cls.initial_state_cov = np.asfortranarray( + np.dot( + np.dot(cls.transition[:, :, 0], cls.initial_state_cov), + cls.transition[:, :, 0].T + ) + ) + + @classmethod + def init_filter(cls): + # Use the appropriate Statespace model + prefix = find_best_blas_type((cls.obs,)) + klass = prefix_statespace_map[prefix[0]] + + # Instantiate the statespace model + model = klass( + cls.obs, cls.design, cls.obs_intercept, cls.obs_cov, + cls.transition, cls.state_intercept, cls.selection, + cls.state_cov + ) + model.initialize_known(cls.initial_state, cls.initial_state_cov) + + # Initialize the appropriate Kalman filter + klass = prefix_kalman_filter_map[prefix[0]] + kfilter = klass(model, conserve_memory=cls.conserve_memory, + loglikelihood_burn=cls.loglikelihood_burn) + + return model, kfilter + + @classmethod + def run_filter(cls): + # Filter the data + cls.filter() + + # Get results + return { + 'loglike': lambda burn: np.sum(cls.filter.loglikelihood[burn:]), + 'state': np.array(cls.filter.filtered_state), + } + + def test_loglike(self): + assert_almost_equal( + self.result['loglike'](self.true['start']), self.true['loglike'], 5 + ) + + def test_filtered_state(self): + assert_almost_equal( + self.result['state'][0][self.true['start']:], + self.true_states.iloc[:, 0], 4 + ) + assert_almost_equal( + self.result['state'][1][self.true['start']:], + self.true_states.iloc[:, 1], 4 + ) + assert_almost_equal( + self.result['state'][3][self.true['start']:], + self.true_states.iloc[:, 2], 4 + ) + + def test_pickled_filter(self): + pickled = cPickle.loads(cPickle.dumps(self.filter)) + # Run the filters + self.filter() + pickled() + + assert id(filter) != id(pickled) + assert_allclose(np.array(self.filter.filtered_state), + np.array(pickled.filtered_state)) + assert_allclose(np.array(self.filter.loglikelihood), + np.array(pickled.loglikelihood)) + + def test_copied_filter(self): + copied = copy.deepcopy(self.filter) + # Run the filters + self.filter() + copied() + + assert id(filter) != id(copied) + assert_allclose(np.array(self.filter.filtered_state), + np.array(copied.filtered_state)) + + assert_allclose(np.array(self.filter.loglikelihood), + np.array(copied.loglikelihood)) + + +class TestClark1987Single(Clark1987): + """ + Basic single precision test for the loglikelihood and filtered states. + """ + @classmethod + def setup_class(cls): + pytest.skip('Not implemented') + super(TestClark1987Single, cls).setup_class( + dtype=np.float32, conserve_memory=0 + ) + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + def test_loglike(self): + assert_allclose( + self.result['loglike'](self.true['start']), self.true['loglike'], + rtol=1e-3 + ) + + def test_filtered_state(self): + assert_allclose( + self.result['state'][0][self.true['start']:], + self.true_states.iloc[:, 0], + atol=1e-2 + ) + assert_allclose( + self.result['state'][1][self.true['start']:], + self.true_states.iloc[:, 1], + atol=1e-2 + ) + assert_allclose( + self.result['state'][3][self.true['start']:], + self.true_states.iloc[:, 2], + atol=1e-2 + ) + + +class TestClark1987Double(Clark1987): + """ + Basic double precision test for the loglikelihood and filtered states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987Double, cls).setup_class( + dtype=float, conserve_memory=0 + ) + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + +class TestClark1987SingleComplex(Clark1987): + """ + Basic single precision complex test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + pytest.skip('Not implemented') + super(TestClark1987SingleComplex, cls).setup_class( + dtype=np.complex64, conserve_memory=0 + ) + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + def test_loglike(self): + assert_allclose( + self.result['loglike'](self.true['start']), self.true['loglike'], + rtol=1e-3 + ) + + def test_filtered_state(self): + assert_allclose( + self.result['state'][0][self.true['start']:], + self.true_states.iloc[:, 0], + atol=1e-2 + ) + assert_allclose( + self.result['state'][1][self.true['start']:], + self.true_states.iloc[:, 1], + atol=1e-2 + ) + assert_allclose( + self.result['state'][3][self.true['start']:], + self.true_states.iloc[:, 2], + atol=1e-2 + ) + + +class TestClark1987DoubleComplex(Clark1987): + """ + Basic double precision complex test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987DoubleComplex, cls).setup_class( + dtype=complex, conserve_memory=0 + ) + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + +class TestClark1987Conserve(Clark1987): + """ + Memory conservation test for the loglikelihood and filtered states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987Conserve, cls).setup_class( + dtype=float, conserve_memory=0x01 | 0x02 + ) + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + +class Clark1987Forecast(Clark1987): + """ + Forecasting test for the loglikelihood and filtered states. + """ + @classmethod + def setup_class(cls, dtype=float, nforecast=100, conserve_memory=0): + super(Clark1987Forecast, cls).setup_class( + dtype, conserve_memory + ) + cls.nforecast = nforecast + + # Add missing observations to the end (to forecast) + cls._obs = cls.obs + cls.obs = np.array(np.r_[cls.obs[0, :], [np.nan]*nforecast], + ndmin=2, dtype=dtype, order="F") + + def test_filtered_state(self): + assert_almost_equal( + self.result['state'][0][self.true['start']:-self.nforecast], + self.true_states.iloc[:, 0], 4 + ) + assert_almost_equal( + self.result['state'][1][self.true['start']:-self.nforecast], + self.true_states.iloc[:, 1], 4 + ) + assert_almost_equal( + self.result['state'][3][self.true['start']:-self.nforecast], + self.true_states.iloc[:, 2], 4 + ) + + +class TestClark1987ForecastDouble(Clark1987Forecast): + """ + Basic double forecasting test for the loglikelihood and filtered states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987ForecastDouble, cls).setup_class() + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + +class TestClark1987ForecastDoubleComplex(Clark1987Forecast): + """ + Basic double complex forecasting test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987ForecastDoubleComplex, cls).setup_class( + dtype=complex + ) + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + +class TestClark1987ForecastConserve(Clark1987Forecast): + """ + Memory conservation forecasting test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987ForecastConserve, cls).setup_class( + dtype=float, conserve_memory=0x01 | 0x02 + ) + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + +class TestClark1987ConserveAll(Clark1987): + """ + Memory conservation forecasting test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987ConserveAll, cls).setup_class( + dtype=float, conserve_memory=0x01 | 0x02 | 0x04 | 0x08 + ) + cls.loglikelihood_burn = cls.true['start'] + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + def test_loglike(self): + assert_almost_equal( + self.result['loglike'](0), self.true['loglike'], 5 + ) + + def test_filtered_state(self): + end = self.true_states.shape[0] + assert_almost_equal( + self.result['state'][0][-1], + self.true_states.iloc[end-1, 0], 4 + ) + assert_almost_equal( + self.result['state'][1][-1], + self.true_states.iloc[end-1, 1], 4 + ) + + +class Clark1989(object): + """ + Clark's (1989) bivariate unobserved components model of real GDP (as + presented in Kim and Nelson, 1999) + + Tests two-dimensional observation data. + + Test data produced using GAUSS code described in Kim and Nelson (1999) and + found at http://econ.korea.ac.kr/~cjkim/SSMARKOV.htm + + See `results.results_kalman_filter` for more information. + """ + @classmethod + def setup_class(cls, dtype=float, conserve_memory=0, loglikelihood_burn=0): + cls.true = results_kalman_filter.uc_bi + cls.true_states = pd.DataFrame(cls.true['states']) + + # GDP and Unemployment, Quarterly, 1948.1 - 1995.3 + data = pd.DataFrame( + cls.true['data'], + index=pd.date_range('1947-01-01', '1995-07-01', freq='QS'), + columns=['GDP', 'UNEMP'] + )[4:] + data['GDP'] = np.log(data['GDP']) + data['UNEMP'] = (data['UNEMP']/100) + + # Observed data + cls.obs = np.array(data, ndmin=2, dtype=dtype, order="C").T + + # Parameters + cls.k_endog = k_endog = 2 # dimension of observed data + cls.k_states = k_states = 6 # dimension of state space + cls.conserve_memory = conserve_memory + cls.loglikelihood_burn = loglikelihood_burn + + # Measurement equation + + # design matrix + cls.design = np.zeros((k_endog, k_states, 1), dtype=dtype, order="F") + cls.design[:, :, 0] = [[1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1]] + # observation intercept + cls.obs_intercept = np.zeros((k_endog, 1), dtype=dtype, order="F") + # observation covariance matrix + cls.obs_cov = np.zeros((k_endog, k_endog, 1), dtype=dtype, order="F") + + # Transition equation + + # transition matrix + cls.transition = np.zeros((k_states, k_states, 1), + dtype=dtype, order="F") + cls.transition[([0, 0, 1, 1, 2, 3, 4, 5], + [0, 4, 1, 2, 1, 2, 4, 5], + [0, 0, 0, 0, 0, 0, 0, 0])] = [1, 1, 0, 0, 1, 1, 1, 1] + # state intercept + cls.state_intercept = np.zeros((k_states, 1), dtype=dtype, order="F") + # selection matrix + cls.selection = np.asfortranarray(np.eye(k_states)[:, :, None], + dtype=dtype) + # state covariance matrix + cls.state_cov = np.zeros((k_states, k_states, 1), + dtype=dtype, order="F") + + # Initialization: Diffuse priors + cls.initial_state = np.zeros((k_states,), dtype=dtype) + cls.initial_state_cov = np.asfortranarray(np.eye(k_states)*100, + dtype=dtype) + + # Update matrices with given parameters + (sigma_v, sigma_e, sigma_w, sigma_vl, sigma_ec, + phi_1, phi_2, alpha_1, alpha_2, alpha_3) = np.array( + cls.true['parameters'], dtype=dtype + ) + cls.design[([1, 1, 1], [1, 2, 3], [0, 0, 0])] = [ + alpha_1, alpha_2, alpha_3 + ] + cls.transition[([1, 1], [1, 2], [0, 0])] = [phi_1, phi_2] + cls.obs_cov[1, 1, 0] = sigma_ec**2 + cls.state_cov[ + np.diag_indices(k_states)+(np.zeros(k_states, dtype=int),)] = [ + sigma_v**2, sigma_e**2, 0, 0, sigma_w**2, sigma_vl**2 + ] + + # Initialization: modification + # Due to the difference in the way Kim and Nelson (1999) and Drubin + # and Koopman (2012) define the order of the Kalman filter routines, + # we need to modify the initial state covariance matrix to match + # Kim and Nelson's results, since the *Statespace models follow Durbin + # and Koopman. + cls.initial_state_cov = np.asfortranarray( + np.dot( + np.dot(cls.transition[:, :, 0], cls.initial_state_cov), + cls.transition[:, :, 0].T + ) + ) + + @classmethod + def init_filter(cls): + # Use the appropriate Statespace model + prefix = find_best_blas_type((cls.obs,)) + klass = prefix_statespace_map[prefix[0]] + + # Instantiate the statespace model + model = klass( + cls.obs, cls.design, cls.obs_intercept, cls.obs_cov, + cls.transition, cls.state_intercept, cls.selection, + cls.state_cov + ) + model.initialize_known(cls.initial_state, cls.initial_state_cov) + + # Initialize the appropriate Kalman filter + klass = prefix_kalman_filter_map[prefix[0]] + kfilter = klass(model, conserve_memory=cls.conserve_memory, + loglikelihood_burn=cls.loglikelihood_burn) + + return model, kfilter + + @classmethod + def run_filter(cls): + # Filter the data + cls.filter() + + # Get results + return { + 'loglike': lambda burn: np.sum(cls.filter.loglikelihood[burn:]), + 'state': np.array(cls.filter.filtered_state), + } + + def test_loglike(self): + assert_almost_equal( + # self.result['loglike'](self.true['start']), + self.result['loglike'](0), + self.true['loglike'], 2 + ) + + def test_filtered_state(self): + assert_almost_equal( + self.result['state'][0][self.true['start']:], + self.true_states.iloc[:, 0], 4 + ) + assert_almost_equal( + self.result['state'][1][self.true['start']:], + self.true_states.iloc[:, 1], 4 + ) + assert_almost_equal( + self.result['state'][4][self.true['start']:], + self.true_states.iloc[:, 2], 4 + ) + assert_almost_equal( + self.result['state'][5][self.true['start']:], + self.true_states.iloc[:, 3], 4 + ) + + +class TestClark1989(Clark1989): + """ + Basic double precision test for the loglikelihood and filtered + states with two-dimensional observation vector. + """ + @classmethod + def setup_class(cls): + super(TestClark1989, cls).setup_class(dtype=float, conserve_memory=0) + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + +class TestClark1989Conserve(Clark1989): + """ + Memory conservation test for the loglikelihood and filtered states with + two-dimensional observation vector. + """ + @classmethod + def setup_class(cls): + super(TestClark1989Conserve, cls).setup_class( + dtype=float, conserve_memory=0x01 | 0x02 + ) + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + +class Clark1989Forecast(Clark1989): + """ + Memory conservation test for the loglikelihood and filtered states with + two-dimensional observation vector. + """ + @classmethod + def setup_class(cls, dtype=float, nforecast=100, conserve_memory=0): + super(Clark1989Forecast, cls).setup_class(dtype, conserve_memory) + cls.nforecast = nforecast + + # Add missing observations to the end (to forecast) + cls._obs = cls.obs + cls.obs = np.array( + np.c_[ + cls._obs, + np.r_[[np.nan, np.nan]*nforecast].reshape(2, nforecast) + ], + ndmin=2, dtype=dtype, order="F" + ) + + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + def test_filtered_state(self): + assert_almost_equal( + self.result['state'][0][self.true['start']:-self.nforecast], + self.true_states.iloc[:, 0], 4 + ) + assert_almost_equal( + self.result['state'][1][self.true['start']:-self.nforecast], + self.true_states.iloc[:, 1], 4 + ) + assert_almost_equal( + self.result['state'][4][self.true['start']:-self.nforecast], + self.true_states.iloc[:, 2], 4 + ) + assert_almost_equal( + self.result['state'][5][self.true['start']:-self.nforecast], + self.true_states.iloc[:, 3], 4 + ) + + +class TestClark1989ForecastDouble(Clark1989Forecast): + """ + Basic double forecasting test for the loglikelihood and filtered states. + """ + @classmethod + def setup_class(cls): + super(TestClark1989ForecastDouble, cls).setup_class() + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + +class TestClark1989ForecastDoubleComplex(Clark1989Forecast): + """ + Basic double complex forecasting test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1989ForecastDoubleComplex, cls).setup_class( + dtype=complex + ) + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + +class TestClark1989ForecastConserve(Clark1989Forecast): + """ + Memory conservation forecasting test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1989ForecastConserve, cls).setup_class( + dtype=float, conserve_memory=0x01 | 0x02 + ) + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + +class TestClark1989ConserveAll(Clark1989): + """ + Memory conservation forecasting test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1989ConserveAll, cls).setup_class( + dtype=float, conserve_memory=0x01 | 0x02 | 0x04 | 0x08, + ) + # cls.loglikelihood_burn = cls.true['start'] + cls.loglikelihood_burn = 0 + cls.model, cls.filter = cls.init_filter() + cls.result = cls.run_filter() + + def test_loglike(self): + assert_almost_equal( + self.result['loglike'](0), self.true['loglike'], 2 + ) + + def test_filtered_state(self): + end = self.true_states.shape[0] + assert_almost_equal( + self.result['state'][0][-1], + self.true_states.iloc[end-1, 0], 4 + ) + assert_almost_equal( + self.result['state'][1][-1], + self.true_states.iloc[end-1, 1], 4 + ) + assert_almost_equal( + self.result['state'][4][-1], + self.true_states.iloc[end-1, 2], 4 + ) + assert_almost_equal( + self.result['state'][5][-1], + self.true_states.iloc[end-1, 3], 4 + ) + + +def check_stationary_initialization_1dim(dtype=float): + endog = np.zeros(10, dtype=dtype) + + # 1-dimensional example + mod = MLEModel(endog, k_states=1, k_posdef=1) + mod.ssm.initialize_stationary() + intercept = np.array([2.3], dtype=dtype) + phi = np.diag([0.9]).astype(dtype) + sigma2 = np.diag([1.3]).astype(dtype) + + mod['state_intercept'] = intercept + mod['transition'] = phi + mod['selection'] = np.eye(1).astype(dtype) + mod['state_cov'] = sigma2 + + mod.ssm._initialize_filter() + mod.ssm._initialize_state() + + _statespace = mod.ssm._statespace + initial_state = np.array(_statespace.initial_state) + initial_state_cov = np.array(_statespace.initial_state_cov) + # precision reductions only required for float complex case + + # mean = intercept + phi * mean + # intercept = (1 - phi) * mean + # mean = intercept / (1 - phi) + assert_allclose(initial_state, intercept / (1 - phi[0, 0])) + desired = np.linalg.inv(np.eye(1) - phi).dot(intercept) + assert_allclose(initial_state, desired) + # var = phi**2 var + sigma2 + # var = sigma2 / (1 - phi**2) + assert_allclose(initial_state_cov, sigma2 / (1 - phi**2)) + assert_allclose(initial_state_cov, solve_discrete_lyapunov(phi, sigma2)) + + +def check_stationary_initialization_2dim(dtype=float): + endog = np.zeros(10, dtype=dtype) + # 2-dimensional example + mod = MLEModel(endog, k_states=2, k_posdef=2) + mod.ssm.initialize_stationary() + intercept = np.array([2.3, -10.2], dtype=dtype) + phi = np.array([[0.8, 0.1], + [-0.2, 0.7]], dtype=dtype) + sigma2 = np.array([[1.4, -0.2], + [-0.2, 4.5]], dtype=dtype) + + mod['state_intercept'] = intercept + mod['transition'] = phi + mod['selection'] = np.eye(2).astype(dtype) + mod['state_cov'] = sigma2 + + mod.ssm._initialize_filter() + mod.ssm._initialize_state() + + _statespace = mod.ssm._statespace + initial_state = np.array(_statespace.initial_state) + initial_state_cov = np.array(_statespace.initial_state_cov) + + desired = np.linalg.solve(np.eye(2).astype(dtype) - phi, intercept) + assert_allclose(initial_state, desired) + desired = solve_discrete_lyapunov(phi, sigma2) + # precision reductions only required for single precision float / complex + assert_allclose(initial_state_cov, desired, atol=1e-5) + + +def test_stationary_initialization(): + check_stationary_initialization_1dim(np.float32) + check_stationary_initialization_1dim(np.float64) + check_stationary_initialization_1dim(np.complex64) + check_stationary_initialization_1dim(np.complex128) + + check_stationary_initialization_2dim(np.float32) + check_stationary_initialization_2dim(np.float64) + check_stationary_initialization_2dim(np.complex64) + check_stationary_initialization_2dim(np.complex128) diff --git a/statsmodels/tsa/statespace/tests/test_mlemodel.py b/statsmodels/tsa/statespace/tests/test_mlemodel.py new file mode 100644 index 0000000..414e9ed --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_mlemodel.py @@ -0,0 +1,1019 @@ +""" +Tests for the generic MLEModel + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import os +import re +import warnings + +import numpy as np +import pandas as pd +import pytest + +from statsmodels.tsa.statespace import (sarimax, varmax, kalman_filter, + kalman_smoother) +from statsmodels.tsa.statespace.mlemodel import MLEModel, MLEResultsWrapper +from statsmodels.datasets import nile +from numpy.testing import ( + assert_almost_equal, assert_equal, assert_allclose, assert_raises) +from statsmodels.tsa.statespace.tests.results import ( + results_sarimax, results_var_misc) + +current_path = os.path.dirname(os.path.abspath(__file__)) + +# Basic kwargs +kwargs = { + 'k_states': 1, 'design': [[1]], 'transition': [[1]], + 'selection': [[1]], 'state_cov': [[1]], + 'initialization': 'approximate_diffuse' +} + + +def get_dummy_mod(fit=True, pandas=False): + # This tests time-varying parameters regression when in fact the parameters + # are not time-varying, and in fact the regression fit is perfect + endog = np.arange(100)*1.0 + exog = 2*endog + + if pandas: + index = pd.date_range('1960-01-01', periods=100, freq='MS') + endog = pd.Series(endog, index=index) + exog = pd.Series(exog, index=index) + + mod = sarimax.SARIMAX( + endog, exog=exog, order=(0, 0, 0), + time_varying_regression=True, mle_regression=False) + + if fit: + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + res = mod.fit(disp=-1) + else: + res = None + + return mod, res + + +def test_init_matrices_time_invariant(): + # Test setting state space system matrices in __init__, with time-invariant + # matrices + k_endog = 2 + k_states = 3 + k_posdef = 1 + + endog = np.zeros((10, 2)) + obs_intercept = np.arange(k_endog) * 1.0 + design = np.reshape( + np.arange(k_endog * k_states) * 1.0, (k_endog, k_states)) + obs_cov = np.reshape(np.arange(k_endog**2) * 1.0, (k_endog, k_endog)) + state_intercept = np.arange(k_states) * 1.0 + transition = np.reshape(np.arange(k_states**2) * 1.0, (k_states, k_states)) + selection = np.reshape( + np.arange(k_states * k_posdef) * 1.0, (k_states, k_posdef)) + state_cov = np.reshape(np.arange(k_posdef**2) * 1.0, (k_posdef, k_posdef)) + + mod = MLEModel(endog, k_states=k_states, k_posdef=k_posdef, + obs_intercept=obs_intercept, design=design, + obs_cov=obs_cov, state_intercept=state_intercept, + transition=transition, selection=selection, + state_cov=state_cov) + + assert_allclose(mod['obs_intercept'], obs_intercept) + assert_allclose(mod['design'], design) + assert_allclose(mod['obs_cov'], obs_cov) + assert_allclose(mod['state_intercept'], state_intercept) + assert_allclose(mod['transition'], transition) + assert_allclose(mod['selection'], selection) + assert_allclose(mod['state_cov'], state_cov) + + +def test_init_matrices_time_varying(): + # Test setting state space system matrices in __init__, with time-varying + # matrices + nobs = 10 + k_endog = 2 + k_states = 3 + k_posdef = 1 + + endog = np.zeros((10, 2)) + obs_intercept = np.reshape(np.arange(k_endog * nobs) * 1.0, + (k_endog, nobs)) + design = np.reshape( + np.arange(k_endog * k_states * nobs) * 1.0, (k_endog, k_states, nobs)) + obs_cov = np.reshape( + np.arange(k_endog**2 * nobs) * 1.0, (k_endog, k_endog, nobs)) + state_intercept = np.reshape( + np.arange(k_states * nobs) * 1.0, (k_states, nobs)) + transition = np.reshape( + np.arange(k_states**2 * nobs) * 1.0, (k_states, k_states, nobs)) + selection = np.reshape( + np.arange(k_states * k_posdef * nobs) * 1.0, + (k_states, k_posdef, nobs)) + state_cov = np.reshape( + np.arange(k_posdef**2 * nobs) * 1.0, (k_posdef, k_posdef, nobs)) + + mod = MLEModel(endog, k_states=k_states, k_posdef=k_posdef, + obs_intercept=obs_intercept, design=design, + obs_cov=obs_cov, state_intercept=state_intercept, + transition=transition, selection=selection, + state_cov=state_cov) + + assert_allclose(mod['obs_intercept'], obs_intercept) + assert_allclose(mod['design'], design) + assert_allclose(mod['obs_cov'], obs_cov) + assert_allclose(mod['state_intercept'], state_intercept) + assert_allclose(mod['transition'], transition) + assert_allclose(mod['selection'], selection) + assert_allclose(mod['state_cov'], state_cov) + + +def test_wrapping(): + # Test the wrapping of various Representation / KalmanFilter / + # KalmanSmoother methods / attributes + mod, _ = get_dummy_mod(fit=False) + + # Test that we can get the design matrix + assert_equal(mod['design', 0, 0], 2.0 * np.arange(100)) + + # Test that we can set individual elements of the design matrix + mod['design', 0, 0, :] = 2 + assert_equal(mod.ssm['design', 0, 0, :], 2) + assert_equal(mod.ssm['design'].shape, (1, 1, 100)) + + # Test that we can set the entire design matrix + mod['design'] = [[3.]] + assert_equal(mod.ssm['design', 0, 0], 3.) + # (Now it's no longer time-varying, so only 2-dim) + assert_equal(mod.ssm['design'].shape, (1, 1)) + + # Test that we can change the following properties: loglikelihood_burn, + # initial_variance, tolerance + assert_equal(mod.loglikelihood_burn, 1) + mod.loglikelihood_burn = 0 + assert_equal(mod.ssm.loglikelihood_burn, 0) + + assert_equal(mod.tolerance, mod.ssm.tolerance) + mod.tolerance = 0.123 + assert_equal(mod.ssm.tolerance, 0.123) + + assert_equal(mod.initial_variance, 1e10) + mod.initial_variance = 1e12 + assert_equal(mod.ssm.initial_variance, 1e12) + + # Test that we can use the following wrappers: initialization, + # initialize_known, initialize_stationary, initialize_approximate_diffuse + + # Initialization starts off as none + assert_equal(isinstance(mod.initialization, object), True) + + # Since the SARIMAX model may be fully stationary or may have diffuse + # elements, it uses a custom initialization by default, but it can be + # overridden by users + mod.initialize_default() # no-op here + + mod.initialize_approximate_diffuse(1e5) + assert_equal(mod.initialization.initialization_type, 'approximate_diffuse') + assert_equal(mod.initialization.approximate_diffuse_variance, 1e5) + + mod.initialize_known([5.], [[40]]) + assert_equal(mod.initialization.initialization_type, 'known') + assert_equal(mod.initialization.constant, [5.]) + assert_equal(mod.initialization.stationary_cov, [[40]]) + + mod.initialize_stationary() + assert_equal(mod.initialization.initialization_type, 'stationary') + + # Test that we can use the following wrapper methods: set_filter_method, + # set_stability_method, set_conserve_memory, set_smoother_output + + # The defaults are as follows: + assert_equal(mod.ssm.filter_method, kalman_filter.FILTER_CONVENTIONAL) + assert_equal( + mod.ssm.stability_method, + kalman_filter.STABILITY_FORCE_SYMMETRY) + assert_equal(mod.ssm.conserve_memory, kalman_filter.MEMORY_STORE_ALL) + assert_equal(mod.ssm.smoother_output, kalman_smoother.SMOOTHER_ALL) + + # Now, create the Cython filter object and assert that they have + # transferred correctly + mod.ssm._initialize_filter() + kf = mod.ssm._kalman_filter + assert_equal(kf.filter_method, kalman_filter.FILTER_CONVENTIONAL) + assert_equal(kf.stability_method, kalman_filter.STABILITY_FORCE_SYMMETRY) + assert_equal(kf.conserve_memory, kalman_filter.MEMORY_STORE_ALL) + # (the smoother object is so far not in Cython, so there is no + # transferring) + + # Change the attributes in the model class + mod.set_filter_method(100) + mod.set_stability_method(101) + mod.set_conserve_memory(102) + mod.set_smoother_output(103) + + # Assert that the changes have occurred in the ssm class + assert_equal(mod.ssm.filter_method, 100) + assert_equal(mod.ssm.stability_method, 101) + assert_equal(mod.ssm.conserve_memory, 102) + assert_equal(mod.ssm.smoother_output, 103) + + # Assert that the changes have *not yet* occurred in the filter object + assert_equal(kf.filter_method, kalman_filter.FILTER_CONVENTIONAL) + assert_equal(kf.stability_method, kalman_filter.STABILITY_FORCE_SYMMETRY) + assert_equal(kf.conserve_memory, kalman_filter.MEMORY_STORE_ALL) + + # Now, test the setting of the other two methods by resetting the + # filter method to a valid value + mod.set_filter_method(1) + mod.ssm._initialize_filter() + # Retrieve the new kalman filter object (a new object had to be created + # due to the changing filter method) + kf = mod.ssm._kalman_filter + + assert_equal(kf.filter_method, 1) + assert_equal(kf.stability_method, 101) + assert_equal(kf.conserve_memory, 102) + + +def test_fit_misc(): + true = results_sarimax.wpi1_stationary + endog = np.diff(true['data'])[1:] + + mod = sarimax.SARIMAX(endog, order=(1, 0, 1), trend='c') + + # Test optim_hessian={'opg','oim','approx'} + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + res1 = mod.fit(method='ncg', disp=0, optim_hessian='opg', + optim_complex_step=False) + res2 = mod.fit(method='ncg', disp=0, optim_hessian='oim', + optim_complex_step=False) + # Check that the Hessians broadly result in the same optimum + assert_allclose(res1.llf, res2.llf, rtol=1e-2) + + # Test return_params=True + mod, _ = get_dummy_mod(fit=False) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + res_params = mod.fit(disp=-1, return_params=True) + + # 5 digits necessary to accommodate 32-bit numpy/scipy with OpenBLAS 0.2.18 + assert_almost_equal(res_params, [0, 0], 5) + + +@pytest.mark.smoke +def test_score_misc(): + mod, res = get_dummy_mod() + + # Test that the score function works + mod.score(res.params) + + +def test_from_formula(): + assert_raises(NotImplementedError, lambda: MLEModel.from_formula(1, 2, 3)) + + +def test_score_analytic_ar1(): + # Test the score against the analytic score for an AR(1) model with 2 + # observations + # Let endog = [1, 0.5], params=[0, 1] + mod = sarimax.SARIMAX([1, 0.5], order=(1, 0, 0)) + + def partial_phi(phi, sigma2): + return -0.5 * (phi**2 + 2*phi*sigma2 - 1) / (sigma2 * (1 - phi**2)) + + def partial_sigma2(phi, sigma2): + return -0.5 * (2*sigma2 + phi - 1.25) / (sigma2**2) + + params = np.r_[0., 2] + + # Compute the analytic score + analytic_score = np.r_[ + partial_phi(params[0], params[1]), + partial_sigma2(params[0], params[1])] + + # Check each of the approximations, transformed parameters + approx_cs = mod.score(params, transformed=True, approx_complex_step=True) + assert_allclose(approx_cs, analytic_score) + + approx_fd = mod.score(params, transformed=True, approx_complex_step=False) + assert_allclose(approx_fd, analytic_score, atol=1e-5) + + approx_fd_centered = ( + mod.score(params, transformed=True, approx_complex_step=False, + approx_centered=True)) + assert_allclose(approx_fd, analytic_score, atol=1e-5) + + harvey_cs = mod.score(params, transformed=True, method='harvey', + approx_complex_step=True) + assert_allclose(harvey_cs, analytic_score) + harvey_fd = mod.score(params, transformed=True, method='harvey', + approx_complex_step=False) + assert_allclose(harvey_fd, analytic_score, atol=1e-5) + harvey_fd_centered = mod.score(params, transformed=True, method='harvey', + approx_complex_step=False, + approx_centered=True) + assert_allclose(harvey_fd_centered, analytic_score, atol=1e-5) + + # Check the approximations for untransformed parameters. The analytic + # check now comes from chain rule with the analytic derivative of the + # transformation + # if L* is the likelihood evaluated at untransformed parameters and + # L is the likelihood evaluated at transformed parameters, then we have: + # L*(u) = L(t(u)) + # and then + # L'*(u) = L'(t(u)) * t'(u) + def partial_transform_phi(phi): + return -1. / (1 + phi**2)**(3./2) + + def partial_transform_sigma2(sigma2): + return 2. * sigma2 + + uparams = mod.untransform_params(params) + + analytic_score = np.dot( + np.diag(np.r_[partial_transform_phi(uparams[0]), + partial_transform_sigma2(uparams[1])]), + np.r_[partial_phi(params[0], params[1]), + partial_sigma2(params[0], params[1])]) + + approx_cs = mod.score(uparams, transformed=False, approx_complex_step=True) + assert_allclose(approx_cs, analytic_score) + + approx_fd = mod.score(uparams, transformed=False, + approx_complex_step=False) + assert_allclose(approx_fd, analytic_score, atol=1e-5) + + approx_fd_centered = ( + mod.score(uparams, transformed=False, approx_complex_step=False, + approx_centered=True)) + assert_allclose(approx_fd_centered, analytic_score, atol=1e-5) + + harvey_cs = mod.score(uparams, transformed=False, method='harvey', + approx_complex_step=True) + assert_allclose(harvey_cs, analytic_score) + harvey_fd = mod.score(uparams, transformed=False, method='harvey', + approx_complex_step=False) + assert_allclose(harvey_fd, analytic_score, atol=1e-5) + harvey_fd_centered = mod.score(uparams, transformed=False, method='harvey', + approx_complex_step=False, + approx_centered=True) + assert_allclose(harvey_fd_centered, analytic_score, atol=1e-5) + + # Check the Hessian: these approximations are not very good, particularly + # when phi is close to 0 + params = np.r_[0.5, 1.] + + def hessian(phi, sigma2): + hessian = np.zeros((2, 2)) + hessian[0, 0] = (-phi**2 - 1) / (phi**2 - 1)**2 + hessian[1, 0] = hessian[0, 1] = -1 / (2 * sigma2**2) + hessian[1, 1] = (sigma2 + phi - 1.25) / sigma2**3 + return hessian + + analytic_hessian = hessian(params[0], params[1]) + + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + assert_allclose(mod._hessian_complex_step(params) * 2, + analytic_hessian, atol=1e-1) + assert_allclose(mod._hessian_finite_difference(params) * 2, + analytic_hessian, atol=1e-1) + + +def test_cov_params(): + mod, res = get_dummy_mod() + + # Smoke test for each of the covariance types + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + res = mod.fit(res.params, disp=-1, cov_type='none') + assert_equal( + res.cov_kwds['description'], + 'Covariance matrix not calculated.') + + res = mod.fit(res.params, disp=-1, cov_type='approx') + assert_equal(res.cov_type, 'approx') + assert_equal( + res.cov_kwds['description'], + 'Covariance matrix calculated using numerical (complex-step) ' + 'differentiation.') + + res = mod.fit(res.params, disp=-1, cov_type='oim') + assert_equal(res.cov_type, 'oim') + assert_equal( + res.cov_kwds['description'], + 'Covariance matrix calculated using the observed information ' + 'matrix (complex-step) described in Harvey (1989).') + + res = mod.fit(res.params, disp=-1, cov_type='opg') + assert_equal(res.cov_type, 'opg') + assert_equal( + res.cov_kwds['description'], + 'Covariance matrix calculated using the outer product of ' + 'gradients (complex-step).') + + res = mod.fit(res.params, disp=-1, cov_type='robust') + assert_equal(res.cov_type, 'robust') + assert_equal( + res.cov_kwds['description'], + 'Quasi-maximum likelihood covariance matrix used for robustness ' + 'to some misspecifications; calculated using the observed ' + 'information matrix (complex-step) described in Harvey (1989).') + + res = mod.fit(res.params, disp=-1, cov_type='robust_oim') + assert_equal(res.cov_type, 'robust_oim') + assert_equal( + res.cov_kwds['description'], + 'Quasi-maximum likelihood covariance matrix used for robustness ' + 'to some misspecifications; calculated using the observed ' + 'information matrix (complex-step) described in Harvey (1989).') + + res = mod.fit(res.params, disp=-1, cov_type='robust_approx') + assert_equal(res.cov_type, 'robust_approx') + assert_equal( + res.cov_kwds['description'], + 'Quasi-maximum likelihood covariance matrix used for robustness ' + 'to some misspecifications; calculated using numerical ' + '(complex-step) differentiation.') + + with pytest.raises(NotImplementedError): + mod.fit(res.params, disp=-1, cov_type='invalid_cov_type') + + +def test_transform(): + # The transforms in MLEModel are noops + mod = MLEModel([1, 2], **kwargs) + + # Test direct transform, untransform + assert_allclose(mod.transform_params([2, 3]), [2, 3]) + assert_allclose(mod.untransform_params([2, 3]), [2, 3]) + + # Smoke test for transformation in `filter`, `update`, `loglike`, + # `loglikeobs` + mod.filter([], transformed=False) + mod.update([], transformed=False) + mod.loglike([], transformed=False) + mod.loglikeobs([], transformed=False) + + # Note that mod is an SARIMAX instance, and the two parameters are + # variances + mod, _ = get_dummy_mod(fit=False) + + # Test direct transform, untransform + assert_allclose(mod.transform_params([2, 3]), [4, 9]) + assert_allclose(mod.untransform_params([4, 9]), [2, 3]) + + # Test transformation in `filter` + res = mod.filter([2, 3], transformed=True) + assert_allclose(res.params, [2, 3]) + + res = mod.filter([2, 3], transformed=False) + assert_allclose(res.params, [4, 9]) + + +def test_filter(): + endog = np.array([1., 2.]) + mod = MLEModel(endog, **kwargs) + + # Test return of ssm object + res = mod.filter([], return_ssm=True) + assert_equal(isinstance(res, kalman_filter.FilterResults), True) + + # Test return of full results object + res = mod.filter([]) + assert_equal(isinstance(res, MLEResultsWrapper), True) + assert_equal(res.cov_type, 'opg') + + # Test return of full results object, specific covariance type + res = mod.filter([], cov_type='oim') + assert_equal(isinstance(res, MLEResultsWrapper), True) + assert_equal(res.cov_type, 'oim') + + +def test_params(): + mod = MLEModel([1, 2], **kwargs) + + # By default start_params raises NotImplementedError + assert_raises(NotImplementedError, lambda: mod.start_params) + # But param names are by default an empty array + assert_equal(mod.param_names, []) + + # We can set them in the object if we want + mod._start_params = [1] + mod._param_names = ['a'] + + assert_equal(mod.start_params, [1]) + assert_equal(mod.param_names, ['a']) + + +def check_results(pandas): + mod, res = get_dummy_mod(pandas=pandas) + + # Test fitted values + assert_almost_equal(res.fittedvalues[2:], mod.endog[2:].squeeze()) + + # Test residuals + assert_almost_equal(res.resid[2:], np.zeros(mod.nobs-2)) + + # Test loglikelihood_burn + assert_equal(res.loglikelihood_burn, 1) + + +def test_results(pandas=False): + check_results(pandas=False) + check_results(pandas=True) + + +def test_predict(): + dates = pd.date_range(start='1980-01-01', end='1981-01-01', freq='AS') + endog = pd.Series([1, 2], index=dates) + mod = MLEModel(endog, **kwargs) + res = mod.filter([]) + + # Test that predict with start=None, end=None does prediction with full + # dataset + predict = res.predict() + assert_equal(predict.shape, (mod.nobs,)) + assert_allclose(res.get_prediction().predicted_mean, predict) + + # Test a string value to the dynamic option + assert_allclose(res.predict(dynamic='1981-01-01'), res.predict()) + + # Test an invalid date string value to the dynamic option + # assert_raises(ValueError, res.predict, dynamic='1982-01-01') + + # Test for passing a string to predict when dates are not set + mod = MLEModel([1, 2], **kwargs) + res = mod.filter([]) + assert_raises(KeyError, res.predict, dynamic='string') + + +def test_forecast(): + # Numpy + mod = MLEModel([1, 2], **kwargs) + res = mod.filter([]) + forecast = res.forecast(steps=10) + assert_allclose(forecast, np.ones((10,)) * 2) + assert_allclose(res.get_forecast(steps=10).predicted_mean, forecast) + + # Pandas + index = pd.date_range('1960-01-01', periods=2, freq='MS') + mod = MLEModel(pd.Series([1, 2], index=index), **kwargs) + res = mod.filter([]) + assert_allclose(res.forecast(steps=10), np.ones((10,)) * 2) + assert_allclose(res.forecast(steps='1960-12-01'), np.ones((10,)) * 2) + assert_allclose(res.get_forecast(steps=10).predicted_mean, + np.ones((10,)) * 2) + + +def test_summary(): + dates = pd.date_range(start='1980-01-01', end='1984-01-01', freq='AS') + endog = pd.Series([1, 2, 3, 4, 5], index=dates) + mod = MLEModel(endog, **kwargs) + res = mod.filter([]) + + # Get the summary + txt = str(res.summary()) + + # Test res.summary when the model has dates + assert_equal(re.search(r'Sample:\s+01-01-1980', txt) is not None, True) + assert_equal(re.search(r'\s+- 01-01-1984', txt) is not None, True) + + # Test res.summary when `model_name` was not provided + assert_equal(re.search(r'Model:\s+MLEModel', txt) is not None, True) + + # Smoke test that summary still works when diagnostic tests fail + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + res.filter_results._standardized_forecasts_error[:] = np.nan + res.summary() + res.filter_results._standardized_forecasts_error = 1 + res.summary() + res.filter_results._standardized_forecasts_error = 'a' + res.summary() + + +def check_endog(endog, nobs=2, k_endog=1, **kwargs): + # create the model + mod = MLEModel(endog, **kwargs) + # the data directly available in the model is the Statsmodels version of + # the data; it should be 2-dim, C-contiguous, long-shaped: + # (nobs, k_endog) == (2, 1) + assert_equal(mod.endog.ndim, 2) + assert_equal(mod.endog.flags['C_CONTIGUOUS'], True) + assert_equal(mod.endog.shape, (nobs, k_endog)) + # the data in the `ssm` object is the state space version of the data; it + # should be 2-dim, F-contiguous, wide-shaped (k_endog, nobs) == (1, 2) + # and it should share data with mod.endog + assert_equal(mod.ssm.endog.ndim, 2) + assert_equal(mod.ssm.endog.flags['F_CONTIGUOUS'], True) + assert_equal(mod.ssm.endog.shape, (k_endog, nobs)) + assert_equal(mod.ssm.endog.base is mod.endog, True) + + return mod + + +def test_basic_endog(): + # Test various types of basic python endog inputs (e.g. lists, scalars...) + + # Check cannot call with non-array-like + # fails due to checks in Statsmodels base classes + assert_raises(ValueError, MLEModel, endog=1, k_states=1) + assert_raises(ValueError, MLEModel, endog='a', k_states=1) + assert_raises(ValueError, MLEModel, endog=True, k_states=1) + + # Check behavior with different types + mod = MLEModel([1], **kwargs) + res = mod.filter([]) + assert_equal(res.filter_results.endog, [[1]]) + + mod = MLEModel([1.], **kwargs) + res = mod.filter([]) + assert_equal(res.filter_results.endog, [[1]]) + + mod = MLEModel([True], **kwargs) + res = mod.filter([]) + assert_equal(res.filter_results.endog, [[1]]) + + mod = MLEModel(['a'], **kwargs) + # raises error due to inability coerce string to numeric + assert_raises(ValueError, mod.filter, []) + + # Check that a different iterable tpyes give the expected result + endog = [1., 2.] + mod = check_endog(endog, **kwargs) + mod.filter([]) + + endog = [[1.], [2.]] + mod = check_endog(endog, **kwargs) + mod.filter([]) + + endog = (1., 2.) + mod = check_endog(endog, **kwargs) + mod.filter([]) + + +def test_numpy_endog(): + # Test various types of numpy endog inputs + + # Check behavior of the link maintained between passed `endog` and + # `mod.endog` arrays + endog = np.array([1., 2.]) + mod = MLEModel(endog, **kwargs) + assert_equal(mod.endog.base is not mod.data.orig_endog, True) + assert_equal(mod.endog.base is not endog, True) + assert_equal(mod.data.orig_endog.base is not endog, True) + endog[0] = 2 + # there is no link to mod.endog + assert_equal(mod.endog, np.r_[1, 2].reshape(2, 1)) + # there remains a link to mod.data.orig_endog + assert_equal(mod.data.orig_endog, endog) + + # Check behavior with different memory layouts / shapes + + # Example (failure): 0-dim array + endog = np.array(1.) + # raises error due to len(endog) failing in Statsmodels base classes + assert_raises(TypeError, check_endog, endog, **kwargs) + + # Example : 1-dim array, both C- and F-contiguous, length 2 + endog = np.array([1., 2.]) + assert_equal(endog.ndim, 1) + assert_equal(endog.flags['C_CONTIGUOUS'], True) + assert_equal(endog.flags['F_CONTIGUOUS'], True) + assert_equal(endog.shape, (2,)) + mod = check_endog(endog, **kwargs) + mod.filter([]) + + # Example : 2-dim array, C-contiguous, long-shaped: (nobs, k_endog) + endog = np.array([1., 2.]).reshape(2, 1) + assert_equal(endog.ndim, 2) + assert_equal(endog.flags['C_CONTIGUOUS'], True) + # On newer numpy (>= 0.10), this array is (rightly) both C and F contiguous + # assert_equal(endog.flags['F_CONTIGUOUS'], False) + assert_equal(endog.shape, (2, 1)) + mod = check_endog(endog, **kwargs) + mod.filter([]) + + # Example : 2-dim array, C-contiguous, wide-shaped: (k_endog, nobs) + endog = np.array([1., 2.]).reshape(1, 2) + assert_equal(endog.ndim, 2) + assert_equal(endog.flags['C_CONTIGUOUS'], True) + # On newer numpy (>= 0.10), this array is (rightly) both C and F contiguous + # assert_equal(endog.flags['F_CONTIGUOUS'], False) + assert_equal(endog.shape, (1, 2)) + # raises error because arrays are always interpreted as + # (nobs, k_endog), which means that k_endog=2 is incompatibile with shape + # of design matrix (1, 1) + assert_raises(ValueError, check_endog, endog, **kwargs) + + # Example : 2-dim array, F-contiguous, long-shaped (nobs, k_endog) + endog = np.array([1., 2.]).reshape(1, 2).transpose() + assert_equal(endog.ndim, 2) + # On newer numpy (>= 0.10), this array is (rightly) both C and F contiguous + # assert_equal(endog.flags['C_CONTIGUOUS'], False) + assert_equal(endog.flags['F_CONTIGUOUS'], True) + assert_equal(endog.shape, (2, 1)) + mod = check_endog(endog, **kwargs) + mod.filter([]) + + # Example : 2-dim array, F-contiguous, wide-shaped (k_endog, nobs) + endog = np.array([1., 2.]).reshape(2, 1).transpose() + assert_equal(endog.ndim, 2) + # On newer numpy (>= 0.10), this array is (rightly) both C and F contiguous + # assert_equal(endog.flags['C_CONTIGUOUS'], False) + assert_equal(endog.flags['F_CONTIGUOUS'], True) + assert_equal(endog.shape, (1, 2)) + # raises error because arrays are always interpreted as + # (nobs, k_endog), which means that k_endog=2 is incompatibile with shape + # of design matrix (1, 1) + assert_raises(ValueError, check_endog, endog, **kwargs) + + # Example (failure): 3-dim array + endog = np.array([1., 2.]).reshape(2, 1, 1) + # raises error due to direct ndim check in Statsmodels base classes + assert_raises(ValueError, check_endog, endog, **kwargs) + + # Example : np.array with 2 columns + # Update kwargs for k_endog=2 + kwargs2 = { + 'k_states': 1, 'design': [[1], [0.]], 'obs_cov': [[1, 0], [0, 1]], + 'transition': [[1]], 'selection': [[1]], 'state_cov': [[1]], + 'initialization': 'approximate_diffuse' + } + endog = np.array([[1., 2.], [3., 4.]]) + mod = check_endog(endog, k_endog=2, **kwargs2) + mod.filter([]) + + +def test_pandas_endog(): + # Test various types of pandas endog inputs (e.g. TimeSeries, etc.) + + # Example (failure): pandas.Series, no dates + endog = pd.Series([1., 2.]) + # raises error due to no dates + warnings.simplefilter('always') + # assert_raises(ValueError, check_endog, endog, **kwargs) + + # Example : pandas.Series + dates = pd.date_range(start='1980-01-01', end='1981-01-01', freq='AS') + endog = pd.Series([1., 2.], index=dates) + mod = check_endog(endog, **kwargs) + mod.filter([]) + + # Example : pandas.Series, string datatype + endog = pd.Series(['a', 'b'], index=dates) + # raises error due to direct type casting check in Statsmodels base classes + assert_raises(ValueError, check_endog, endog, **kwargs) + + # Example : pandas.Series + endog = pd.Series([1., 2.], index=dates) + mod = check_endog(endog, **kwargs) + mod.filter([]) + + # Example : pandas.DataFrame with 1 column + endog = pd.DataFrame({'a': [1., 2.]}, index=dates) + mod = check_endog(endog, **kwargs) + mod.filter([]) + + # Example (failure): pandas.DataFrame with 2 columns + endog = pd.DataFrame({'a': [1., 2.], 'b': [3., 4.]}, index=dates) + # raises error because 2-columns means k_endog=2, but the design matrix + # set in **kwargs is shaped (1, 1) + assert_raises(ValueError, check_endog, endog, **kwargs) + + # Check behavior of the link maintained between passed `endog` and + # `mod.endog` arrays + endog = pd.DataFrame({'a': [1., 2.]}, index=dates) + mod = check_endog(endog, **kwargs) + assert_equal(mod.endog.base is not mod.data.orig_endog, True) + assert_equal(mod.endog.base is not endog, True) + assert_equal(mod.data.orig_endog.values.base is not endog, True) + endog.iloc[0, 0] = 2 + # there is no link to mod.endog + assert_equal(mod.endog, np.r_[1, 2].reshape(2, 1)) + # there remains a link to mod.data.orig_endog + assert_allclose(mod.data.orig_endog, endog) + + # Example : pandas.DataFrame with 2 columns + # Update kwargs for k_endog=2 + kwargs2 = { + 'k_states': 1, 'design': [[1], [0.]], 'obs_cov': [[1, 0], [0, 1]], + 'transition': [[1]], 'selection': [[1]], 'state_cov': [[1]], + 'initialization': 'approximate_diffuse' + } + endog = pd.DataFrame({'a': [1., 2.], 'b': [3., 4.]}, index=dates) + mod = check_endog(endog, k_endog=2, **kwargs2) + mod.filter([]) + + +def test_diagnostics(): + mod, res = get_dummy_mod() + + # Override the standardized forecasts errors to get more reasonable values + # for the tests to run (not necessary, but prevents some annoying warnings) + shape = res.filter_results._standardized_forecasts_error.shape + res.filter_results._standardized_forecasts_error = ( + np.random.normal(size=shape)) + + # Make sure method=None selects the appropriate test + actual = res.test_normality(method=None) + desired = res.test_normality(method='jarquebera') + assert_allclose(actual, desired) + + assert_raises(NotImplementedError, res.test_normality, method='invalid') + + actual = res.test_heteroskedasticity(method=None) + desired = res.test_heteroskedasticity(method='breakvar') + assert_allclose(actual, desired) + + with pytest.raises(ValueError): + res.test_heteroskedasticity(method=None, alternative='invalid') + with pytest.raises(NotImplementedError): + res.test_heteroskedasticity(method='invalid') + + actual = res.test_serial_correlation(method=None) + desired = res.test_serial_correlation(method='ljungbox') + assert_allclose(actual, desired) + + with pytest.raises(NotImplementedError): + res.test_serial_correlation(method='invalid') + + # Smoke tests for other options + actual = res.test_heteroskedasticity(method=None, alternative='d', + use_f=False) + desired = res.test_serial_correlation(method='boxpierce') + + +def test_diagnostics_nile_eviews(): + # Test the diagnostic tests using the Nile dataset. Results are from + # "Fitting State Space Models with EViews" (Van den Bossche 2011, + # Journal of Statistical Software). + # For parameter values, see Figure 2 + # For Ljung-Box and Jarque-Bera statistics and p-values, see Figure 5 + # The Heteroskedasticity statistic is not provided in this paper. + niledata = nile.data.load_pandas().data + niledata.index = pd.date_range('1871-01-01', '1970-01-01', freq='AS') + + mod = MLEModel( + niledata['volume'], k_states=1, + initialization='approximate_diffuse', initial_variance=1e15, + loglikelihood_burn=1) + mod.ssm['design', 0, 0] = 1 + mod.ssm['obs_cov', 0, 0] = np.exp(9.600350) + mod.ssm['transition', 0, 0] = 1 + mod.ssm['selection', 0, 0] = 1 + mod.ssm['state_cov', 0, 0] = np.exp(7.348705) + res = mod.filter([]) + + # Test Ljung-Box + # Note: only 3 digits provided in the reference paper + actual = res.test_serial_correlation(method='ljungbox', lags=10)[0, :, -1] + assert_allclose(actual, [13.117, 0.217], atol=1e-3) + + # Test Jarque-Bera + actual = res.test_normality(method='jarquebera')[0, :2] + assert_allclose(actual, [0.041686, 0.979373], atol=1e-5) + + +def test_diagnostics_nile_durbinkoopman(): + # Test the diagnostic tests using the Nile dataset. Results are from + # Durbin and Koopman (2012); parameter values reported on page 37; test + # statistics on page 40 + niledata = nile.data.load_pandas().data + niledata.index = pd.date_range('1871-01-01', '1970-01-01', freq='AS') + + mod = MLEModel( + niledata['volume'], k_states=1, + initialization='approximate_diffuse', initial_variance=1e15, + loglikelihood_burn=1) + mod.ssm['design', 0, 0] = 1 + mod.ssm['obs_cov', 0, 0] = 15099. + mod.ssm['transition', 0, 0] = 1 + mod.ssm['selection', 0, 0] = 1 + mod.ssm['state_cov', 0, 0] = 1469.1 + res = mod.filter([]) + + # Test Ljung-Box + # Note: only 3 digits provided in the reference paper + actual = res.test_serial_correlation(method='ljungbox', lags=9)[0, 0, -1] + assert_allclose(actual, [8.84], atol=1e-2) + + # Test Jarque-Bera + # Note: The book reports 0.09 for Kurtosis, because it is reporting the + # statistic less the mean of the Kurtosis distribution (which is 3). + norm = res.test_normality(method='jarquebera')[0] + actual = [norm[0], norm[2], norm[3]] + assert_allclose(actual, [0.05, -0.03, 3.09], atol=1e-2) + + # Test Heteroskedasticity + # Note: only 2 digits provided in the book + actual = res.test_heteroskedasticity(method='breakvar')[0, 0] + assert_allclose(actual, [0.61], atol=1e-2) + + +@pytest.mark.smoke +def test_prediction_results(): + # Just smoke tests for the PredictionResults class, which is copied from + # elsewhere in Statsmodels + + mod, res = get_dummy_mod() + predict = res.get_prediction() + predict.summary_frame() + + +def test_lutkepohl_information_criteria(): + # Setup dataset, use Lutkepohl data + dta = pd.DataFrame( + results_var_misc.lutkepohl_data, columns=['inv', 'inc', 'consump'], + index=pd.date_range('1960-01-01', '1982-10-01', freq='QS')) + + dta['dln_inv'] = np.log(dta['inv']).diff() + dta['dln_inc'] = np.log(dta['inc']).diff() + dta['dln_consump'] = np.log(dta['consump']).diff() + + endog = dta.loc['1960-04-01':'1978-10-01', + ['dln_inv', 'dln_inc', 'dln_consump']] + + # AR model - SARIMAX + # (use loglikelihood_burn=1 to mimic conditional MLE used by Stata's var + # command). + true = results_var_misc.lutkepohl_ar1_lustats + mod = sarimax.SARIMAX(endog['dln_inv'], order=(1, 0, 0), trend='c', + loglikelihood_burn=1) + res = mod.filter(true['params']) + assert_allclose(res.llf, true['loglike']) + # Test the Lutkepohl ICs + # Note: for the Lutkepohl ICs, Stata only counts the AR coefficients as + # estimated parameters for the purposes of information criteria, whereas we + # count all parameters including scale and constant, so we need to adjust + # for that + aic = (res.info_criteria('aic', method='lutkepohl') - + 2 * 2 / res.nobs_effective) + bic = (res.info_criteria('bic', method='lutkepohl') - + 2 * np.log(res.nobs_effective) / res.nobs_effective) + hqic = (res.info_criteria('hqic', method='lutkepohl') - + 2 * 2 * np.log(np.log(res.nobs_effective)) / res.nobs_effective) + assert_allclose(aic, true['aic']) + assert_allclose(bic, true['bic']) + assert_allclose(hqic, true['hqic']) + + # Test the non-Lutkepohl ICs + # Note: for the non-Lutkepohl ICs, Stata does not count the scale as an + # estimated parameter, but does count the constant term, for the + # purposes of information criteria, whereas we count both, so we need to + # adjust for that + true = results_var_misc.lutkepohl_ar1 + aic = res.aic - 2 + bic = res.bic - np.log(res.nobs_effective) + assert_allclose(aic, true['estat_aic']) + assert_allclose(bic, true['estat_bic']) + aic = res.info_criteria('aic') - 2 + bic = res.info_criteria('bic') - np.log(res.nobs_effective) + assert_allclose(aic, true['estat_aic']) + assert_allclose(bic, true['estat_bic']) + + # Note: could also test the "dfk" (degree of freedom corrections), but not + # really necessary since they just rescale things a bit + + # VAR model - VARMAX + # (use loglikelihood_burn=1 to mimic conditional MLE used by Stata's var + # command). + true = results_var_misc.lutkepohl_var1_lustats + mod = varmax.VARMAX(endog, order=(1, 0), trend='n', + error_cov_type='unstructured', loglikelihood_burn=1,) + res = mod.filter(true['params']) + assert_allclose(res.llf, true['loglike']) + + # Test the Lutkepohl ICs + # Note: for the Lutkepohl ICs, Stata only counts the AR coefficients as + # estimated parameters for the purposes of information criteria, whereas we + # count all parameters including the elements of the covariance matrix, so + # we need to adjust for that + aic = (res.info_criteria('aic', method='lutkepohl') - + 2 * 6 / res.nobs_effective) + bic = (res.info_criteria('bic', method='lutkepohl') - + 6 * np.log(res.nobs_effective) / res.nobs_effective) + hqic = (res.info_criteria('hqic', method='lutkepohl') - + 2 * 6 * np.log(np.log(res.nobs_effective)) / res.nobs_effective) + assert_allclose(aic, true['aic']) + assert_allclose(bic, true['bic']) + assert_allclose(hqic, true['hqic']) + + # Test the non-Lutkepohl ICs + # Note: for the non-Lutkepohl ICs, Stata does not count the elements of the + # covariance matrix as estimated parameters for the purposes of information + # criteria, whereas we count both, so we need to adjust for that + true = results_var_misc.lutkepohl_var1 + aic = res.aic - 2 * 6 + bic = res.bic - 6 * np.log(res.nobs_effective) + assert_allclose(aic, true['estat_aic']) + assert_allclose(bic, true['estat_bic']) + aic = res.info_criteria('aic') - 2 * 6 + bic = res.info_criteria('bic') - 6 * np.log(res.nobs_effective) + assert_allclose(aic, true['estat_aic']) + assert_allclose(bic, true['estat_bic']) diff --git a/statsmodels/tsa/statespace/tests/test_models.py b/statsmodels/tsa/statespace/tests/test_models.py new file mode 100644 index 0000000..6342a98 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_models.py @@ -0,0 +1,319 @@ +""" +Tests for miscellaneous models + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import numpy as np +import pandas as pd +import os +import pytest + +from statsmodels.tsa.statespace import mlemodel, sarimax +from statsmodels import datasets + +from numpy.testing import assert_equal, assert_allclose, assert_raises + +current_path = os.path.dirname(os.path.abspath(__file__)) + + +class Intercepts(mlemodel.MLEModel): + """ + Test class for observation and state intercepts (which usually don't + get tested in other models). + """ + def __init__(self, endog, **kwargs): + k_states = 3 + k_posdef = 3 + super(Intercepts, self).__init__( + endog, k_states=k_states, k_posdef=k_posdef, **kwargs) + self['design'] = np.eye(3) + self['obs_cov'] = np.eye(3) + self['transition'] = np.eye(3) + self['selection'] = np.eye(3) + self['state_cov'] = np.eye(3) + self.initialize_approximate_diffuse() + + @property + def param_names(self): + return ['d.1', 'd.2', 'd.3', 'c.1', 'c.2', 'c.3'] + + @property + def start_params(self): + return np.arange(6) + + def update(self, params, **kwargs): + params = super(Intercepts, self).update(params, **kwargs) + + self['obs_intercept'] = params[:3] + self['state_intercept'] = params[3:] + + +class TestIntercepts(object): + @classmethod + def setup_class(cls, which='mixed', **kwargs): + # Results + path = current_path + os.sep + 'results/results_intercepts_R.csv' + cls.desired = pd.read_csv(path) + + # Data + dta = datasets.macrodata.load_pandas().data + dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', + freq='QS') + obs = dta[['realgdp', 'realcons', 'realinv']].copy() + obs = obs / obs.std() + + if which == 'all': + obs.iloc[:50, :] = np.nan + obs.iloc[119:130, :] = np.nan + elif which == 'partial': + obs.iloc[0:50, 0] = np.nan + obs.iloc[119:130, 0] = np.nan + elif which == 'mixed': + obs.iloc[0:50, 0] = np.nan + obs.iloc[19:70, 1] = np.nan + obs.iloc[39:90, 2] = np.nan + obs.iloc[119:130, 0] = np.nan + obs.iloc[119:130, 2] = np.nan + + mod = Intercepts(obs, **kwargs) + + cls.params = np.arange(6) + 1 + cls.model = mod + + cls.results = mod.smooth(cls.params, return_ssm=True) + + # Calculate the determinant of the covariance matrices (for easy + # comparison to other languages without having to store 2-dim arrays) + cls.results.det_scaled_smoothed_estimator_cov = ( + np.zeros((1, cls.model.nobs))) + cls.results.det_predicted_state_cov = np.zeros((1, cls.model.nobs)) + cls.results.det_smoothed_state_cov = np.zeros((1, cls.model.nobs)) + cls.results.det_smoothed_state_disturbance_cov = ( + np.zeros((1, cls.model.nobs))) + + for i in range(cls.model.nobs): + cls.results.det_scaled_smoothed_estimator_cov[0, i] = ( + np.linalg.det( + cls.results.scaled_smoothed_estimator_cov[:, :, i])) + cls.results.det_predicted_state_cov[0, i] = np.linalg.det( + cls.results.predicted_state_cov[:, :, i+1]) + cls.results.det_smoothed_state_cov[0, i] = np.linalg.det( + cls.results.smoothed_state_cov[:, :, i]) + cls.results.det_smoothed_state_disturbance_cov[0, i] = ( + np.linalg.det( + cls.results.smoothed_state_disturbance_cov[:, :, i])) + + def test_loglike(self): + assert_allclose(np.sum(self.results.llf_obs), -7924.03893566) + + def test_scaled_smoothed_estimator(self): + assert_allclose( + self.results.scaled_smoothed_estimator.T, + self.desired[['r1', 'r2', 'r3']] + ) + + def test_scaled_smoothed_estimator_cov(self): + assert_allclose( + self.results.det_scaled_smoothed_estimator_cov.T, + self.desired[['detN']] + ) + + def test_forecasts(self): + assert_allclose( + self.results.forecasts.T, + self.desired[['m1', 'm2', 'm3']] + ) + + def test_forecasts_error(self): + assert_allclose( + self.results.forecasts_error.T, + self.desired[['v1', 'v2', 'v3']] + ) + + def test_forecasts_error_cov(self): + assert_allclose( + self.results.forecasts_error_cov.diagonal(), + self.desired[['F1', 'F2', 'F3']] + ) + + def test_predicted_states(self): + assert_allclose( + self.results.predicted_state[:, 1:].T, + self.desired[['a1', 'a2', 'a3']] + ) + + def test_predicted_states_cov(self): + assert_allclose( + self.results.det_predicted_state_cov.T, + self.desired[['detP']] + ) + + def test_smoothed_states(self): + assert_allclose( + self.results.smoothed_state.T, + self.desired[['alphahat1', 'alphahat2', 'alphahat3']] + ) + + def test_smoothed_states_cov(self): + assert_allclose( + self.results.det_smoothed_state_cov.T, + self.desired[['detV']] + ) + + def test_smoothed_forecasts(self): + assert_allclose( + self.results.smoothed_forecasts.T, + self.desired[['muhat1', 'muhat2', 'muhat3']] + ) + + def test_smoothed_state_disturbance(self): + assert_allclose( + self.results.smoothed_state_disturbance.T, + self.desired[['etahat1', 'etahat2', 'etahat3']] + ) + + def test_smoothed_state_disturbance_cov(self): + assert_allclose( + self.results.det_smoothed_state_disturbance_cov.T, + self.desired[['detVeta']] + ) + + def test_smoothed_measurement_disturbance(self): + assert_allclose( + self.results.smoothed_measurement_disturbance.T, + self.desired[['epshat1', 'epshat2', 'epshat3']], atol=1e-9 + ) + + def test_smoothed_measurement_disturbance_cov(self): + assert_allclose( + self.results.smoothed_measurement_disturbance_cov.diagonal(), + self.desired[['Veps1', 'Veps2', 'Veps3']] + ) + + +class LargeStateCovAR1(mlemodel.MLEModel): + """ + Test class for k_posdef > k_states (which usually don't get tested in + other models). + + This is just an AR(1) model with an extra unused state innovation + """ + def __init__(self, endog, **kwargs): + k_states = 1 + k_posdef = 2 + super(LargeStateCovAR1, self).__init__( + endog, k_states=k_states, k_posdef=k_posdef, **kwargs) + self['design', 0, 0] = 1 + self['selection', 0, 0] = 1 + self['state_cov', 1, 1] = 1 + self.initialize_stationary() + + @property + def param_names(self): + return ['phi', 'sigma2'] + + @property + def start_params(self): + return [0.5, 1] + + def update(self, params, **kwargs): + params = super(LargeStateCovAR1, self).update(params, **kwargs) + + self['transition', 0, 0] = params[0] + self['state_cov', 0, 0] = params[1] + + +def test_large_kposdef(): + assert_raises(ValueError, LargeStateCovAR1, np.arange(10)) + + +class TestLargeStateCovAR1(object): + @classmethod + def setup_class(cls): + # TODO This test is skipped since an exception is currently raised if + # k_posdef > k_states. However, this test could be used if models of + # those types were allowed. + pytest.skip('Not implemented') + + # Data: just some sample data + endog = [0.2, -1.5, -.3, -.1, 1.5, 0.2, -0.3, 0.2, 0.5, 0.8] + + # Params + params = [0.5, 1] + + # Desired model: AR(1) + mod_desired = sarimax.SARIMAX(endog) + cls.res_desired = mod_desired.smooth(params) + + # Test class + mod = LargeStateCovAR1(endog) + cls.res = mod.smooth(params) + + def test_dimensions(self): + assert_equal(self.res.filter_results.k_states, 1) + assert_equal(self.res.filter_results.k_posdef, 2) + assert_equal(self.res.smoothed_state_disturbance.shape, (2, 10)) + + assert_equal(self.res_desired.filter_results.k_states, 1) + assert_equal(self.res_desired.filter_results.k_posdef, 1) + assert_equal(self.res_desired.smoothed_state_disturbance.shape, + (1, 10)) + + def test_loglike(self): + assert_allclose(self.res.llf_obs, self.res_desired.llf_obs) + + def test_scaled_smoothed_estimator(self): + assert_allclose(self.res.scaled_smoothed_estimator[0], + self.res_desired.scaled_smoothed_estimator[0]) + + def test_scaled_smoothed_estimator_cov(self): + assert_allclose(self.res.scaled_smoothed_estimator_cov[0], + self.res_desired.scaled_smoothed_estimator_cov[0]) + + def test_forecasts(self): + assert_allclose(self.res.forecasts, self.res_desired.forecasts) + + def test_forecasts_error(self): + assert_allclose(self.res.forecasts_error, + self.res_desired.forecasts_error) + + def test_forecasts_error_cov(self): + assert_allclose(self.res.forecasts_error_cov, + self.res_desired.forecasts_error_cov) + + def test_predicted_states(self): + assert_allclose(self.res.predicted_state[0], + self.res_desired.predicted_state[0]) + + def test_predicted_states_cov(self): + assert_allclose(self.res.predicted_state_cov[0, 0], + self.res_desired.predicted_state_cov[0, 0]) + + def test_smoothed_states(self): + assert_allclose(self.res.smoothed_state[0], + self.res_desired.smoothed_state[0]) + + def test_smoothed_states_cov(self): + assert_allclose(self.res.smoothed_state_cov[0, 0], + self.res_desired.smoothed_state_cov[0, 0]) + + def test_smoothed_state_disturbance(self): + assert_allclose(self.res.smoothed_state_disturbance[0], + self.res_desired.smoothed_state_disturbance[0]) + assert_allclose(self.res.smoothed_state_disturbance[1], 0) + + def test_smoothed_state_disturbance_cov(self): + assert_allclose(self.res.smoothed_state_disturbance_cov[0, 0], + self.res_desired.smoothed_state_disturbance_cov[0, 0]) + assert_allclose(self.res.smoothed_state_disturbance[1, 1], 0) + + def test_smoothed_measurement_disturbance(self): + assert_allclose(self.res.smoothed_measurement_disturbance, + self.res_desired.smoothed_measurement_disturbance) + + def test_smoothed_measurement_disturbance_cov(self): + assert_allclose(self.res.smoothed_measurement_disturbance_cov, + self.res_desired.smoothed_measurement_disturbance_cov) diff --git a/statsmodels/tsa/statespace/tests/test_options.py b/statsmodels/tsa/statespace/tests/test_options.py new file mode 100644 index 0000000..3a0bf9a --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_options.py @@ -0,0 +1,274 @@ +""" +Tests for setting options in KalmanFilter, KalmanSmoother, SimulationSmoother + +(does not test the filtering, smoothing, or simulation smoothing for each +option) + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import numpy as np +from statsmodels.tsa.statespace.kalman_filter import ( + FILTER_CONVENTIONAL, + FILTER_EXACT_INITIAL, + FILTER_AUGMENTED, + FILTER_SQUARE_ROOT, + FILTER_UNIVARIATE, + FILTER_COLLAPSED, + FILTER_EXTENDED, + FILTER_UNSCENTED, + FILTER_CONCENTRATED, + + INVERT_UNIVARIATE, + SOLVE_LU, + INVERT_LU, + SOLVE_CHOLESKY, + INVERT_CHOLESKY, + + STABILITY_FORCE_SYMMETRY, + + MEMORY_STORE_ALL, + MEMORY_NO_FORECAST, + MEMORY_NO_PREDICTED, + MEMORY_NO_FILTERED, + MEMORY_NO_LIKELIHOOD, + MEMORY_NO_GAIN, + MEMORY_NO_SMOOTHING, + MEMORY_NO_STD_FORECAST, + MEMORY_CONSERVE +) +from statsmodels.tsa.statespace.kalman_smoother import ( + SMOOTHER_STATE, + SMOOTHER_STATE_COV, + SMOOTHER_STATE_AUTOCOV, + SMOOTHER_DISTURBANCE, + SMOOTHER_DISTURBANCE_COV, + SMOOTHER_ALL +) +from statsmodels.tsa.statespace.simulation_smoother import ( + SimulationSmoother, + SIMULATION_STATE, + SIMULATION_ALL +) +from numpy.testing import assert_equal + + +class Options(object): + @classmethod + def setup_class(cls, *args, **kwargs): + + # Dummy data + endog = np.arange(10) + k_states = 1 + + cls.model = SimulationSmoother(k_endog=1, k_states=k_states, *args, + **kwargs) + cls.model.bind(endog) + + +class TestOptions(Options): + def test_filter_methods(self): + model = self.model + + # TODO test FilterResults for accurante boolean versions of options + # Clear the filter method + model.filter_method = 0 + + # Try setting via boolean + model.filter_conventional = True + assert_equal(model.filter_method, FILTER_CONVENTIONAL) + + model.filter_collapsed = True + assert_equal(model.filter_method, + FILTER_CONVENTIONAL | FILTER_COLLAPSED) + model.filter_conventional = False + assert_equal(model.filter_method, FILTER_COLLAPSED) + + # Try setting directly via method + model.set_filter_method(FILTER_AUGMENTED) + assert_equal(model.filter_method, FILTER_AUGMENTED) + + # Try setting via boolean via method + model.set_filter_method(filter_conventional=True, + filter_augmented=False) + assert_equal(model.filter_method, FILTER_CONVENTIONAL) + + # Try setting and unsetting all + model.filter_method = 0 + for name in model.filter_methods: + setattr(model, name, True) + assert_equal( + model.filter_method, + FILTER_CONVENTIONAL | FILTER_EXACT_INITIAL | FILTER_AUGMENTED | + FILTER_SQUARE_ROOT | FILTER_UNIVARIATE | FILTER_COLLAPSED | + FILTER_EXTENDED | FILTER_UNSCENTED | FILTER_CONCENTRATED + ) + for name in model.filter_methods: + setattr(model, name, False) + assert_equal(model.filter_method, 0) + + def test_inversion_methods(self): + model = self.model + + # Clear the inversion method + model.inversion_method = 0 + + # Try setting via boolean + model.invert_univariate = True + assert_equal(model.inversion_method, INVERT_UNIVARIATE) + model.invert_cholesky = True + assert_equal(model.inversion_method, + INVERT_UNIVARIATE | INVERT_CHOLESKY) + model.invert_univariate = False + assert_equal(model.inversion_method, INVERT_CHOLESKY) + + # Try setting directly via method + model.set_inversion_method(INVERT_LU) + assert_equal(model.inversion_method, INVERT_LU) + + # Try setting via boolean via method + model.set_inversion_method(invert_cholesky=True, + invert_univariate=True, invert_lu=False) + assert_equal(model.inversion_method, + INVERT_UNIVARIATE | INVERT_CHOLESKY) + + # Try setting and unsetting all + model.inversion_method = 0 + for name in model.inversion_methods: + setattr(model, name, True) + assert_equal( + model.inversion_method, + INVERT_UNIVARIATE | SOLVE_LU | INVERT_LU | SOLVE_CHOLESKY | + INVERT_CHOLESKY + ) + for name in model.inversion_methods: + setattr(model, name, False) + assert_equal(model.inversion_method, 0) + + def test_stability_methods(self): + model = self.model + + # Clear the stability method + model.stability_method = 0 + + # Try setting via boolean + model.stability_force_symmetry = True + assert_equal(model.stability_method, STABILITY_FORCE_SYMMETRY) + model.stability_force_symmetry = False + assert_equal(model.stability_method, 0) + + # Try setting directly via method + model.stability_method = 0 + model.set_stability_method(STABILITY_FORCE_SYMMETRY) + assert_equal(model.stability_method, STABILITY_FORCE_SYMMETRY) + + # Try setting via boolean via method + model.stability_method = 0 + model.set_stability_method(stability_method=True) + assert_equal(model.stability_method, STABILITY_FORCE_SYMMETRY) + + # Try setting via keyword via method + model.stability_method = 0 + model.set_stability_method(stability_force_symmetry=True) + assert_equal(model.stability_method, STABILITY_FORCE_SYMMETRY) + + def test_conserve_memory(self): + model = self.model + + # Clear the filter method + model.conserve_memory = MEMORY_STORE_ALL + + # Try setting via boolean + model.memory_no_forecast = True + assert_equal(model.conserve_memory, MEMORY_NO_FORECAST) + model.memory_no_filtered = True + assert_equal(model.conserve_memory, + MEMORY_NO_FORECAST | MEMORY_NO_FILTERED) + model.memory_no_forecast = False + assert_equal(model.conserve_memory, MEMORY_NO_FILTERED) + + # Try setting directly via method + model.set_conserve_memory(MEMORY_NO_PREDICTED) + assert_equal(model.conserve_memory, MEMORY_NO_PREDICTED) + + # Try setting via boolean via method + model.set_conserve_memory(memory_no_filtered=True, + memory_no_predicted=False) + assert_equal(model.conserve_memory, MEMORY_NO_FILTERED) + + # Try setting and unsetting all + model.conserve_memory = 0 + for name in model.memory_options: + if name == 'memory_conserve': + continue + setattr(model, name, True) + assert_equal( + model.conserve_memory, + MEMORY_NO_FORECAST | MEMORY_NO_PREDICTED | MEMORY_NO_FILTERED | + MEMORY_NO_LIKELIHOOD | MEMORY_NO_GAIN | MEMORY_NO_SMOOTHING | + MEMORY_NO_STD_FORECAST + ) + assert_equal(model.conserve_memory, MEMORY_CONSERVE) + for name in model.memory_options: + if name == 'memory_conserve': + continue + setattr(model, name, False) + assert_equal(model.conserve_memory, 0) + + def test_smoother_outputs(self): + model = self.model + + # TODO test SmootherResults for accurante boolean versions of options + + # Clear the smoother output + model.smoother_output = 0 + + # Try setting via boolean + model.smoother_state = True + assert_equal(model.smoother_output, SMOOTHER_STATE) + model.smoother_disturbance = True + assert_equal(model.smoother_output, + SMOOTHER_STATE | SMOOTHER_DISTURBANCE) + model.smoother_state = False + assert_equal(model.smoother_output, SMOOTHER_DISTURBANCE) + + # Try setting directly via method + model.set_smoother_output(SMOOTHER_DISTURBANCE_COV) + assert_equal(model.smoother_output, SMOOTHER_DISTURBANCE_COV) + + # Try setting via boolean via method + model.set_smoother_output(smoother_disturbance=True, + smoother_disturbance_cov=False) + assert_equal(model.smoother_output, SMOOTHER_DISTURBANCE) + + # Try setting and unsetting all + model.smoother_output = 0 + for name in model.smoother_outputs: + if name == 'smoother_all': + continue + setattr(model, name, True) + assert_equal( + model.smoother_output, + SMOOTHER_STATE | SMOOTHER_STATE_COV | SMOOTHER_STATE_AUTOCOV | + SMOOTHER_DISTURBANCE | SMOOTHER_DISTURBANCE_COV + ) + assert_equal(model.smoother_output, SMOOTHER_ALL) + for name in model.smoother_outputs: + if name == 'smoother_all': + continue + setattr(model, name, False) + assert_equal(model.smoother_output, 0) + + def test_simulation_outputs(self): + # TODO test changing simulation options in SimulationSmoothResults + # instance + + assert_equal( + self.model.get_simulation_output(SIMULATION_STATE), + SIMULATION_STATE) + assert_equal( + self.model.get_simulation_output(simulate_state=True, + simulate_disturbance=True), + SIMULATION_ALL) diff --git a/statsmodels/tsa/statespace/tests/test_pickle.py b/statsmodels/tsa/statespace/tests/test_pickle.py new file mode 100644 index 0000000..1615aa7 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_pickle.py @@ -0,0 +1,152 @@ +""" +Tests for python wrapper of state space representation and filtering + +Author: Chad Fulton +License: Simplified-BSD + +References +---------- + +Kim, Chang-Jin, and Charles R. Nelson. 1999. +"State-Space Models with Regime Switching: +Classical and Gibbs-Sampling Approaches with Applications". +MIT Press Books. The MIT Press. +""" +from __future__ import division, absolute_import, print_function + +import numpy as np +import pandas as pd +from numpy.testing import assert_equal, assert_allclose +import pytest + +from statsmodels.compat import cPickle +from statsmodels.tsa.statespace import sarimax +from statsmodels.tsa.statespace.kalman_filter import KalmanFilter +from statsmodels.tsa.statespace.representation import Representation +from statsmodels.tsa.statespace.structural import UnobservedComponents +from .results import results_kalman_filter + + +@pytest.fixture +def data(): + true = results_kalman_filter.uc_uni + data_ = pd.DataFrame( + true['data'], + index=pd.date_range('1947-01-01', '1995-07-01', freq='QS'), + columns=['GDP'] + ) + data_['lgdp'] = np.log(data_['GDP']) + return data_ + + +def test_pickle_fit_sarimax(data): + # Fit an ARIMA(1,1,0) to log GDP + mod = sarimax.SARIMAX(data['lgdp'], order=(1, 1, 0)) + pkl_mod = cPickle.loads(cPickle.dumps(mod)) + + res = mod.fit(disp=-1, full_output=True, method='newton') + pkl_res = pkl_mod.fit(disp=-1, full_output=True, method='newton') + + assert_allclose(res.llf_obs, pkl_res.llf_obs) + assert_allclose(res.tvalues, pkl_res.tvalues) + assert_allclose(res.smoothed_state, pkl_res.smoothed_state) + assert_allclose(res.resid.values, pkl_res.resid.values) + assert_allclose(res.impulse_responses(10), res.impulse_responses(10)) + + +def test_unobserved_components_pickle(): + # Tests for missing data + nobs = 20 + k_endog = 1 + np.random.seed(1208) + endog = np.random.normal(size=(nobs, k_endog)) + endog[:4, 0] = np.nan + exog2 = np.random.normal(size=(nobs, 2)) + + index = pd.date_range('1970-01-01', freq='QS', periods=nobs) + endog_pd = pd.DataFrame(endog, index=index) + exog2_pd = pd.DataFrame(exog2, index=index) + + models = [ + UnobservedComponents(endog, 'llevel', exog=exog2), + UnobservedComponents(endog_pd, 'llevel', exog=exog2_pd), + ] + + for mod in models: + # Smoke tests + pkl_mod = cPickle.loads(cPickle.dumps(mod)) + assert_equal(mod.start_params, pkl_mod.start_params) + res = mod.fit(disp=False) + pkl_res = pkl_mod.fit(disp=False) + + assert_allclose(res.llf_obs, pkl_res.llf_obs) + assert_allclose(res.tvalues, pkl_res.tvalues) + assert_allclose(res.smoothed_state, pkl_res.smoothed_state) + assert_allclose(res.resid, pkl_res.resid) + assert_allclose(res.impulse_responses(10), res.impulse_responses(10)) + + +def test_kalman_filter_pickle(data): + # Construct the statespace representation + true = results_kalman_filter.uc_uni + k_states = 4 + model = KalmanFilter(k_endog=1, k_states=k_states) + model.bind(data['lgdp'].values) + + model.design[:, :, 0] = [1, 1, 0, 0] + model.transition[([0, 0, 1, 1, 2, 3], + [0, 3, 1, 2, 1, 3], + [0, 0, 0, 0, 0, 0])] = [1, 1, 0, 0, 1, 1] + model.selection = np.eye(model.k_states) + + # Update matrices with given parameters + (sigma_v, sigma_e, sigma_w, phi_1, phi_2) = np.array( + true['parameters'] + ) + model.transition[([1, 1], [1, 2], [0, 0])] = [phi_1, phi_2] + model.state_cov[ + np.diag_indices(k_states) + (np.zeros(k_states, dtype=int),)] = [ + sigma_v ** 2, sigma_e ** 2, 0, sigma_w ** 2 + ] + + # Initialization + initial_state = np.zeros((k_states,)) + initial_state_cov = np.eye(k_states) * 100 + + # Initialization: modification + initial_state_cov = np.dot( + np.dot(model.transition[:, :, 0], initial_state_cov), + model.transition[:, :, 0].T + ) + model.initialize_known(initial_state, initial_state_cov) + pkl_mod = cPickle.loads(cPickle.dumps(model)) + + results = model.filter() + pkl_results = pkl_mod.filter() + + assert_allclose(results.llf_obs[true['start']:].sum(), + pkl_results.llf_obs[true['start']:].sum()) + assert_allclose(results.filtered_state[0][true['start']:], + pkl_results.filtered_state[0][true['start']:]) + assert_allclose(results.filtered_state[1][true['start']:], + pkl_results.filtered_state[1][true['start']:]) + assert_allclose(results.filtered_state[3][true['start']:], + pkl_results.filtered_state[3][true['start']:]) + + +def test_representation_pickle(): + nobs = 10 + k_endog = 2 + arr = np.arange(nobs * k_endog).reshape(k_endog, nobs) * 1. + endog = np.asfortranarray(arr) + mod = Representation(endog, k_states=2) + pkl_mod = cPickle.loads(cPickle.dumps(mod)) + + assert_equal(mod.nobs, pkl_mod.nobs) + assert_equal(mod.k_endog, pkl_mod.k_endog) + + mod._initialize_representation() + pkl_mod._initialize_representation() + assert_equal(mod.design, pkl_mod.design) + assert_equal(mod.obs_intercept, pkl_mod.obs_intercept) + assert_equal(mod.initial_variance, pkl_mod.initial_variance) diff --git a/statsmodels/tsa/statespace/tests/test_prediction.py b/statsmodels/tsa/statespace/tests/test_prediction.py new file mode 100644 index 0000000..adb625c --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_prediction.py @@ -0,0 +1,59 @@ +""" +Tests for prediction of state space models + +Author: Chad Fulton +License: Simplified-BSD +""" + +from __future__ import division, absolute_import, print_function + +import numpy as np +import pandas as pd + +from statsmodels.tsa.statespace import sarimax +from numpy.testing import assert_equal + + +def test_predict_dates(): + index = pd.date_range(start='1950-01-01', periods=11, freq='D') + np.random.seed(324328) + endog = pd.Series(np.random.normal(size=10), index=index[:-1]) + + # Basic test + mod = sarimax.SARIMAX(endog, order=(1, 0, 0)) + res = mod.filter(mod.start_params) + + # In-sample prediction should have the same index + pred = res.predict() + assert_equal(len(pred), mod.nobs) + assert_equal(pred.index.values, index[:-1].values) + # Out-of-sample forecasting should extend the index appropriately + fcast = res.forecast() + assert_equal(fcast.index[0], index[-1]) + + # Simple differencing in the SARIMAX model should eliminate dates of + # series eliminated due to differencing + mod = sarimax.SARIMAX(endog, order=(1, 1, 0), simple_differencing=True) + res = mod.filter(mod.start_params) + pred = res.predict() + # In-sample prediction should lose the first index value + assert_equal(mod.nobs, endog.shape[0] - 1) + assert_equal(len(pred), mod.nobs) + assert_equal(pred.index.values, index[1:-1].values) + # Out-of-sample forecasting should still extend the index appropriately + fcast = res.forecast() + assert_equal(fcast.index[0], index[-1]) + + # Simple differencing again, this time with a more complex differencing + # structure + mod = sarimax.SARIMAX(endog, order=(1, 2, 0), seasonal_order=(0, 1, 0, 4), + simple_differencing=True) + res = mod.filter(mod.start_params) + pred = res.predict() + # In-sample prediction should lose the first 6 index values + assert_equal(mod.nobs, endog.shape[0] - (4 + 2)) + assert_equal(len(pred), mod.nobs) + assert_equal(pred.index.values, index[4 + 2:-1].values) + # Out-of-sample forecasting should still extend the index appropriately + fcast = res.forecast() + assert_equal(fcast.index[0], index[-1]) diff --git a/statsmodels/tsa/statespace/tests/test_representation.py b/statsmodels/tsa/statespace/tests/test_representation.py new file mode 100644 index 0000000..829babe --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_representation.py @@ -0,0 +1,1378 @@ +""" +Tests for python wrapper of state space representation and filtering + +Author: Chad Fulton +License: Simplified-BSD + +References +---------- + +Kim, Chang-Jin, and Charles R. Nelson. 1999. +"State-Space Models with Regime Switching: +Classical and Gibbs-Sampling Approaches with Applications". +MIT Press Books. The MIT Press. +""" +from __future__ import division, absolute_import, print_function + +import os +import warnings + +import numpy as np +import pandas as pd +import pytest + +from statsmodels.tsa.statespace.representation import Representation +from statsmodels.tsa.statespace.kalman_filter import ( + KalmanFilter, FilterResults, PredictionResults) +from statsmodels.tsa.statespace import tools, sarimax +from .results import results_kalman_filter +from numpy.testing import ( + assert_equal, assert_almost_equal, assert_raises, assert_allclose) + +current_path = os.path.dirname(os.path.abspath(__file__)) + +clark1989_path = os.path.join('results', 'results_clark1989_R.csv') +clark1989_results = pd.read_csv(os.path.join(current_path, clark1989_path)) + + +class Clark1987(object): + """ + Clark's (1987) univariate unobserved components model of real GDP (as + presented in Kim and Nelson, 1999) + + Test data produced using GAUSS code described in Kim and Nelson (1999) and + found at http://econ.korea.ac.kr/~cjkim/SSMARKOV.htm + + See `results.results_kalman_filter` for more information. + """ + @classmethod + def setup_class(cls, dtype=float, **kwargs): + cls.true = results_kalman_filter.uc_uni + cls.true_states = pd.DataFrame(cls.true['states']) + + # GDP, Quarterly, 1947.1 - 1995.3 + data = pd.DataFrame( + cls.true['data'], + index=pd.date_range('1947-01-01', '1995-07-01', freq='QS'), + columns=['GDP'] + ) + data['lgdp'] = np.log(data['GDP']) + + # Construct the statespace representation + k_states = 4 + cls.model = KalmanFilter(k_endog=1, k_states=k_states, **kwargs) + cls.model.bind(data['lgdp'].values) + + cls.model.design[:, :, 0] = [1, 1, 0, 0] + cls.model.transition[([0, 0, 1, 1, 2, 3], + [0, 3, 1, 2, 1, 3], + [0, 0, 0, 0, 0, 0])] = [1, 1, 0, 0, 1, 1] + cls.model.selection = np.eye(cls.model.k_states) + + # Update matrices with given parameters + (sigma_v, sigma_e, sigma_w, phi_1, phi_2) = np.array( + cls.true['parameters'] + ) + cls.model.transition[([1, 1], [1, 2], [0, 0])] = [phi_1, phi_2] + cls.model.state_cov[ + np.diag_indices(k_states)+(np.zeros(k_states, dtype=int),)] = [ + sigma_v**2, sigma_e**2, 0, sigma_w**2 + ] + + # Initialization + initial_state = np.zeros((k_states,)) + initial_state_cov = np.eye(k_states)*100 + + # Initialization: modification + initial_state_cov = np.dot( + np.dot(cls.model.transition[:, :, 0], initial_state_cov), + cls.model.transition[:, :, 0].T + ) + cls.model.initialize_known(initial_state, initial_state_cov) + + @classmethod + def run_filter(cls): + # Filter the data + return cls.model.filter() + + def test_loglike(self): + assert_almost_equal( + self.results.llf_obs[self.true['start']:].sum(), + self.true['loglike'], 5 + ) + + def test_filtered_state(self): + assert_almost_equal( + self.results.filtered_state[0][self.true['start']:], + self.true_states.iloc[:, 0], 4 + ) + assert_almost_equal( + self.results.filtered_state[1][self.true['start']:], + self.true_states.iloc[:, 1], 4 + ) + assert_almost_equal( + self.results.filtered_state[3][self.true['start']:], + self.true_states.iloc[:, 2], 4 + ) + + +class TestClark1987Single(Clark1987): + """ + Basic single precision test for the loglikelihood and filtered states. + """ + @classmethod + def setup_class(cls): + pytest.skip('Not implemented') + super(TestClark1987Single, cls).setup_class( + dtype=np.float32, conserve_memory=0 + ) + cls.results = cls.run_filter() + + +class TestClark1987Double(Clark1987): + """ + Basic double precision test for the loglikelihood and filtered states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987Double, cls).setup_class( + dtype=float, conserve_memory=0 + ) + cls.results = cls.run_filter() + + +@pytest.mark.skip('Not implemented') +class TestClark1987SingleComplex(Clark1987): + """ + Basic single precision complex test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987SingleComplex, cls).setup_class( + dtype=np.complex64, conserve_memory=0 + ) + cls.results = cls.run_filter() + + +class TestClark1987DoubleComplex(Clark1987): + """ + Basic double precision complex test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987DoubleComplex, cls).setup_class( + dtype=complex, conserve_memory=0 + ) + cls.results = cls.run_filter() + + +class TestClark1987Conserve(Clark1987): + """ + Memory conservation test for the loglikelihood and filtered states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987Conserve, cls).setup_class( + dtype=float, conserve_memory=0x01 | 0x02 + ) + cls.results = cls.run_filter() + + +class Clark1987Forecast(Clark1987): + """ + Forecasting test for the loglikelihood and filtered states. + """ + @classmethod + def setup_class(cls, dtype=float, nforecast=100, conserve_memory=0): + super(Clark1987Forecast, cls).setup_class( + dtype=dtype, conserve_memory=conserve_memory + ) + cls.nforecast = nforecast + + # Add missing observations to the end (to forecast) + cls.model.endog = np.array( + np.r_[cls.model.endog[0, :], [np.nan]*nforecast], + ndmin=2, dtype=dtype, order="F" + ) + cls.model.nobs = cls.model.endog.shape[1] + + def test_filtered_state(self): + assert_almost_equal( + self.results.filtered_state[0][self.true['start']:-self.nforecast], + self.true_states.iloc[:, 0], 4 + ) + assert_almost_equal( + self.results.filtered_state[1][self.true['start']:-self.nforecast], + self.true_states.iloc[:, 1], 4 + ) + assert_almost_equal( + self.results.filtered_state[3][self.true['start']:-self.nforecast], + self.true_states.iloc[:, 2], 4 + ) + + +class TestClark1987ForecastDouble(Clark1987Forecast): + """ + Basic double forecasting test for the loglikelihood and filtered states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987ForecastDouble, cls).setup_class() + cls.results = cls.run_filter() + + +class TestClark1987ForecastDoubleComplex(Clark1987Forecast): + """ + Basic double complex forecasting test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987ForecastDoubleComplex, cls).setup_class( + dtype=complex + ) + cls.results = cls.run_filter() + + +class TestClark1987ForecastConserve(Clark1987Forecast): + """ + Memory conservation forecasting test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987ForecastConserve, cls).setup_class( + dtype=float, conserve_memory=0x01 | 0x02 + ) + cls.results = cls.run_filter() + + +class TestClark1987ConserveAll(Clark1987): + """ + Memory conservation forecasting test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1987ConserveAll, cls).setup_class( + dtype=float, conserve_memory=0x01 | 0x02 | 0x04 | 0x08 + ) + cls.model.loglikelihood_burn = cls.true['start'] + cls.results = cls.run_filter() + + def test_loglike(self): + assert_almost_equal( + self.results.llf_obs[0], self.true['loglike'], 5 + ) + + def test_filtered_state(self): + end = self.true_states.shape[0] + assert_almost_equal( + self.results.filtered_state[0][-1], + self.true_states.iloc[end-1, 0], 4 + ) + assert_almost_equal( + self.results.filtered_state[1][-1], + self.true_states.iloc[end-1, 1], 4 + ) + + +class Clark1989(object): + """ + Clark's (1989) bivariate unobserved components model of real GDP (as + presented in Kim and Nelson, 1999) + + Tests two-dimensional observation data. + + Test data produced using GAUSS code described in Kim and Nelson (1999) and + found at http://econ.korea.ac.kr/~cjkim/SSMARKOV.htm + + See `results.results_kalman_filter` for more information. + """ + @classmethod + def setup_class(cls, dtype=float, **kwargs): + cls.true = results_kalman_filter.uc_bi + cls.true_states = pd.DataFrame(cls.true['states']) + + # GDP and Unemployment, Quarterly, 1948.1 - 1995.3 + data = pd.DataFrame( + cls.true['data'], + index=pd.date_range('1947-01-01', '1995-07-01', freq='QS'), + columns=['GDP', 'UNEMP'] + )[4:] + data['GDP'] = np.log(data['GDP']) + data['UNEMP'] = (data['UNEMP']/100) + + k_states = 6 + cls.model = KalmanFilter(k_endog=2, k_states=k_states, **kwargs) + cls.model.bind(np.ascontiguousarray(data.values)) + + # Statespace representation + cls.model.design[:, :, 0] = [[1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1]] + cls.model.transition[ + ([0, 0, 1, 1, 2, 3, 4, 5], + [0, 4, 1, 2, 1, 2, 4, 5], + [0, 0, 0, 0, 0, 0, 0, 0]) + ] = [1, 1, 0, 0, 1, 1, 1, 1] + cls.model.selection = np.eye(cls.model.k_states) + + # Update matrices with given parameters + (sigma_v, sigma_e, sigma_w, sigma_vl, sigma_ec, + phi_1, phi_2, alpha_1, alpha_2, alpha_3) = np.array( + cls.true['parameters'], + ) + cls.model.design[([1, 1, 1], [1, 2, 3], [0, 0, 0])] = [ + alpha_1, alpha_2, alpha_3 + ] + cls.model.transition[([1, 1], [1, 2], [0, 0])] = [phi_1, phi_2] + cls.model.obs_cov[1, 1, 0] = sigma_ec**2 + cls.model.state_cov[ + np.diag_indices(k_states)+(np.zeros(k_states, dtype=int),)] = [ + sigma_v**2, sigma_e**2, 0, 0, sigma_w**2, sigma_vl**2 + ] + + # Initialization + initial_state = np.zeros((k_states,)) + initial_state_cov = np.eye(k_states)*100 + + # Initialization: cls.modelification + initial_state_cov = np.dot( + np.dot(cls.model.transition[:, :, 0], initial_state_cov), + cls.model.transition[:, :, 0].T + ) + cls.model.initialize_known(initial_state, initial_state_cov) + + @classmethod + def run_filter(cls): + # Filter the data + return cls.model.filter() + + def test_loglike(self): + assert_almost_equal( + # self.results.llf_obs[self.true['start']:].sum(), + self.results.llf_obs[0:].sum(), + self.true['loglike'], 2 + ) + + def test_filtered_state(self): + assert_almost_equal( + self.results.filtered_state[0][self.true['start']:], + self.true_states.iloc[:, 0], 4 + ) + assert_almost_equal( + self.results.filtered_state[1][self.true['start']:], + self.true_states.iloc[:, 1], 4 + ) + assert_almost_equal( + self.results.filtered_state[4][self.true['start']:], + self.true_states.iloc[:, 2], 4 + ) + assert_almost_equal( + self.results.filtered_state[5][self.true['start']:], + self.true_states.iloc[:, 3], 4 + ) + + +class TestClark1989(Clark1989): + """ + Basic double precision test for the loglikelihood and filtered + states with two-dimensional observation vector. + """ + @classmethod + def setup_class(cls): + super(TestClark1989, cls).setup_class(dtype=float, conserve_memory=0) + cls.results = cls.run_filter() + + def test_kalman_gain(self): + assert_allclose(self.results.kalman_gain.sum(axis=1).sum(axis=0), + clark1989_results['V1'], atol=1e-4) + + +class TestClark1989Conserve(Clark1989): + """ + Memory conservation test for the loglikelihood and filtered states with + two-dimensional observation vector. + """ + @classmethod + def setup_class(cls): + super(TestClark1989Conserve, cls).setup_class( + dtype=float, conserve_memory=0x01 | 0x02 + ) + cls.results = cls.run_filter() + + +class Clark1989Forecast(Clark1989): + """ + Memory conservation test for the loglikelihood and filtered states with + two-dimensional observation vector. + """ + @classmethod + def setup_class(cls, dtype=float, nforecast=100, conserve_memory=0): + super(Clark1989Forecast, cls).setup_class( + dtype=dtype, conserve_memory=conserve_memory + ) + cls.nforecast = nforecast + + # Add missing observations to the end (to forecast) + cls.model.endog = np.array( + np.c_[ + cls.model.endog, + np.r_[[np.nan, np.nan]*nforecast].reshape(2, nforecast) + ], + ndmin=2, dtype=dtype, order="F" + ) + cls.model.nobs = cls.model.endog.shape[1] + + cls.results = cls.run_filter() + + def test_filtered_state(self): + assert_almost_equal( + self.results.filtered_state[0][self.true['start']:-self.nforecast], + self.true_states.iloc[:, 0], 4 + ) + assert_almost_equal( + self.results.filtered_state[1][self.true['start']:-self.nforecast], + self.true_states.iloc[:, 1], 4 + ) + assert_almost_equal( + self.results.filtered_state[4][self.true['start']:-self.nforecast], + self.true_states.iloc[:, 2], 4 + ) + assert_almost_equal( + self.results.filtered_state[5][self.true['start']:-self.nforecast], + self.true_states.iloc[:, 3], 4 + ) + + +class TestClark1989ForecastDouble(Clark1989Forecast): + """ + Basic double forecasting test for the loglikelihood and filtered states. + """ + @classmethod + def setup_class(cls): + super(TestClark1989ForecastDouble, cls).setup_class() + cls.results = cls.run_filter() + + +class TestClark1989ForecastDoubleComplex(Clark1989Forecast): + """ + Basic double complex forecasting test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1989ForecastDoubleComplex, cls).setup_class( + dtype=complex + ) + cls.results = cls.run_filter() + + +class TestClark1989ForecastConserve(Clark1989Forecast): + """ + Memory conservation forecasting test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1989ForecastConserve, cls).setup_class( + dtype=float, conserve_memory=0x01 | 0x02 + ) + cls.results = cls.run_filter() + + +class TestClark1989ConserveAll(Clark1989): + """ + Memory conservation forecasting test for the loglikelihood and filtered + states. + """ + @classmethod + def setup_class(cls): + super(TestClark1989ConserveAll, cls).setup_class( + dtype=float, conserve_memory=0x01 | 0x02 | 0x04 | 0x08 + ) + # cls.model.loglikelihood_burn = cls.true['start'] + cls.model.loglikelihood_burn = 0 + cls.results = cls.run_filter() + + def test_loglike(self): + assert_almost_equal( + self.results.llf_obs[0], self.true['loglike'], 2 + ) + + def test_filtered_state(self): + end = self.true_states.shape[0] + assert_almost_equal( + self.results.filtered_state[0][-1], + self.true_states.iloc[end-1, 0], 4 + ) + assert_almost_equal( + self.results.filtered_state[1][-1], + self.true_states.iloc[end-1, 1], 4 + ) + assert_almost_equal( + self.results.filtered_state[4][-1], + self.true_states.iloc[end-1, 2], 4 + ) + assert_almost_equal( + self.results.filtered_state[5][-1], + self.true_states.iloc[end-1, 3], 4 + ) + + +class TestClark1989PartialMissing(Clark1989): + @classmethod + def setup_class(cls): + super(TestClark1989PartialMissing, cls).setup_class() + endog = cls.model.endog + endog[1, -51:] = np.NaN + cls.model.bind(endog) + + cls.results = cls.run_filter() + + def test_loglike(self): + assert_allclose(self.results.llf_obs[0:].sum(), 1232.113456) + + def test_filtered_state(self): + # Could do this, but no need really. + pass + + def test_predicted_state(self): + assert_allclose( + self.results.predicted_state.T[1:], clark1989_results.iloc[:, 1:], + atol=1e-8 + ) + + +# Miscellaneous coverage-related tests +def test_slice_notation(): + # Test setting and getting state space representation matrices using the + # slice notation. + + endog = np.arange(10)*1.0 + mod = KalmanFilter(k_endog=1, k_states=2) + mod.bind(endog) + + # Test invalid __setitem__ + def set_designs(): + mod['designs'] = 1 + + def set_designs2(): + mod['designs', 0, 0] = 1 + + def set_designs3(): + mod[0] = 1 + + assert_raises(IndexError, set_designs) + assert_raises(IndexError, set_designs2) + assert_raises(IndexError, set_designs3) + + # Test invalid __getitem__ + assert_raises(IndexError, lambda: mod['designs']) + assert_raises(IndexError, lambda: mod['designs', 0, 0, 0]) + assert_raises(IndexError, lambda: mod[0]) + + # Test valid __setitem__, __getitem__ + assert_equal(mod.design[0, 0, 0], 0) + mod['design', 0, 0, 0] = 1 + assert_equal(mod['design'].sum(), 1) + assert_equal(mod.design[0, 0, 0], 1) + assert_equal(mod['design', 0, 0, 0], 1) + + # Test valid __setitem__, __getitem__ with unspecified time index + mod['design'] = np.zeros(mod['design'].shape) + assert_equal(mod.design[0, 0], 0) + mod['design', 0, 0] = 1 + assert_equal(mod.design[0, 0], 1) + assert_equal(mod['design', 0, 0], 1) + + +def test_representation(): + # Test Representation construction + + # Test an invalid number of states + def zero_kstates(): + Representation(1, 0) + assert_raises(ValueError, zero_kstates) + + # Test an invalid endogenous array + def empty_endog(): + endog = np.zeros((0, 0)) + Representation(endog, k_states=2) + assert_raises(ValueError, empty_endog) + + # Test a Fortran-ordered endogenous array (which will be assumed to be in + # wide format: k_endog x nobs) + nobs = 10 + k_endog = 2 + arr = np.arange(nobs*k_endog).reshape(k_endog, nobs)*1. + endog = np.asfortranarray(arr) + mod = Representation(endog, k_states=2) + assert_equal(mod.nobs, nobs) + assert_equal(mod.k_endog, k_endog) + + # Test a C-ordered endogenous array (which will be assumed to be in + # tall format: nobs x k_endog) + nobs = 10 + k_endog = 2 + endog = np.arange(nobs*k_endog).reshape(nobs, k_endog)*1. + mod = Representation(endog, k_states=2) + assert_equal(mod.nobs, nobs) + assert_equal(mod.k_endog, k_endog) + + # Test getting the statespace representation + assert_equal(mod._statespace, None) + mod._initialize_representation() + assert_equal(mod._statespace is not None, True) + + +def test_bind(): + # Test binding endogenous data to Kalman filter + + mod = Representation(2, k_states=2) + + # Test invalid endogenous array (it must be ndarray) + assert_raises(ValueError, lambda: mod.bind([1, 2, 3, 4])) + + # Test valid (nobs x 1) endogenous array + mod.bind(np.arange(10).reshape((5, 2))*1.) + assert_equal(mod.nobs, 5) + + # Test valid (k_endog x 0) endogenous array + mod.bind(np.zeros((0, 2), dtype=np.float64)) + + # Test invalid (3-dim) endogenous array + with pytest.raises(ValueError): + mod.bind(np.arange(12).reshape(2, 2, 3)*1.) + + # Test valid F-contiguous + mod.bind(np.asfortranarray(np.arange(10).reshape(2, 5))) + assert_equal(mod.nobs, 5) + + # Test valid C-contiguous + mod.bind(np.arange(10).reshape(5, 2)) + assert_equal(mod.nobs, 5) + + # Test invalid F-contiguous + with pytest.raises(ValueError): + mod.bind(np.asfortranarray(np.arange(10).reshape(5, 2))) + + # Test invalid C-contiguous + assert_raises(ValueError, lambda: mod.bind(np.arange(10).reshape(2, 5))) + + +def test_initialization(): + # Test Kalman filter initialization + + mod = Representation(1, k_states=2) + + # Test invalid state initialization + assert_raises(RuntimeError, lambda: mod._initialize_state()) + + # Test valid initialization + initial_state = np.zeros(2,) + 1.5 + initial_state_cov = np.eye(2) * 3. + mod.initialize_known(initial_state, initial_state_cov) + assert_equal(mod.initialization.constant.sum(), 3) + assert_equal(mod.initialization.stationary_cov.diagonal().sum(), 6) + + # Test invalid initial_state + initial_state = np.zeros(10,) + with pytest.raises(ValueError): + mod.initialize_known(initial_state, initial_state_cov) + initial_state = np.zeros((10, 10)) + with pytest.raises(ValueError): + mod.initialize_known(initial_state, initial_state_cov) + + # Test invalid initial_state_cov + initial_state = np.zeros(2,) + 1.5 + initial_state_cov = np.eye(3) + with pytest.raises(ValueError): + mod.initialize_known(initial_state, initial_state_cov) + + +def test_init_matrices_time_invariant(): + # Test setting state space system matrices in __init__, with time-invariant + # matrices + k_endog = 2 + k_states = 3 + k_posdef = 1 + + endog = np.zeros((10, 2)) + obs_intercept = np.arange(k_endog) * 1.0 + design = np.reshape( + np.arange(k_endog * k_states) * 1.0, (k_endog, k_states)) + obs_cov = np.reshape(np.arange(k_endog**2) * 1.0, (k_endog, k_endog)) + state_intercept = np.arange(k_states) * 1.0 + transition = np.reshape(np.arange(k_states**2) * 1.0, (k_states, k_states)) + selection = np.reshape( + np.arange(k_states * k_posdef) * 1.0, (k_states, k_posdef)) + state_cov = np.reshape(np.arange(k_posdef**2) * 1.0, (k_posdef, k_posdef)) + + mod = Representation(endog, k_states=k_states, k_posdef=k_posdef, + obs_intercept=obs_intercept, design=design, + obs_cov=obs_cov, state_intercept=state_intercept, + transition=transition, selection=selection, + state_cov=state_cov) + + assert_allclose(mod['obs_intercept'], obs_intercept) + assert_allclose(mod['design'], design) + assert_allclose(mod['obs_cov'], obs_cov) + assert_allclose(mod['state_intercept'], state_intercept) + assert_allclose(mod['transition'], transition) + assert_allclose(mod['selection'], selection) + assert_allclose(mod['state_cov'], state_cov) + + +def test_init_matrices_time_varying(): + # Test setting state space system matrices in __init__, with time-varying + # matrices + nobs = 10 + k_endog = 2 + k_states = 3 + k_posdef = 1 + + endog = np.zeros((10, 2)) + obs_intercept = np.reshape(np.arange(k_endog * nobs) * 1.0, + (k_endog, nobs)) + design = np.reshape( + np.arange(k_endog * k_states * nobs) * 1.0, (k_endog, k_states, nobs)) + obs_cov = np.reshape( + np.arange(k_endog**2 * nobs) * 1.0, (k_endog, k_endog, nobs)) + state_intercept = np.reshape( + np.arange(k_states * nobs) * 1.0, (k_states, nobs)) + transition = np.reshape( + np.arange(k_states**2 * nobs) * 1.0, (k_states, k_states, nobs)) + selection = np.reshape( + np.arange(k_states * k_posdef * nobs) * 1.0, + (k_states, k_posdef, nobs)) + state_cov = np.reshape( + np.arange(k_posdef**2 * nobs) * 1.0, (k_posdef, k_posdef, nobs)) + + mod = Representation(endog, k_states=k_states, k_posdef=k_posdef, + obs_intercept=obs_intercept, design=design, + obs_cov=obs_cov, state_intercept=state_intercept, + transition=transition, selection=selection, + state_cov=state_cov) + + assert_allclose(mod['obs_intercept'], obs_intercept) + assert_allclose(mod['design'], design) + assert_allclose(mod['obs_cov'], obs_cov) + assert_allclose(mod['state_intercept'], state_intercept) + assert_allclose(mod['transition'], transition) + assert_allclose(mod['selection'], selection) + assert_allclose(mod['state_cov'], state_cov) + + +def test_no_endog(): + # Test for RuntimeError when no endog is provided by the time filtering + # is initialized. + + mod = KalmanFilter(k_endog=1, k_states=1) + + # directly call the _initialize_filter function + assert_raises(RuntimeError, mod._initialize_filter) + # indirectly call it through filtering + mod.initialize_approximate_diffuse() + assert_raises(RuntimeError, mod.filter) + + +def test_cython(): + # Test the cython _kalman_filter creation, re-creation, calling, etc. + + # Check that datatypes are correct: + for prefix, dtype in tools.prefix_dtype_map.items(): + endog = np.array(1., ndmin=2, dtype=dtype) + mod = KalmanFilter(k_endog=1, k_states=1, dtype=dtype) + + # Bind data and initialize the ?KalmanFilter object + mod.bind(endog) + mod._initialize_filter() + + # Check that the dtype and prefix are correct + assert_equal(mod.prefix, prefix) + assert_equal(mod.dtype, dtype) + + # Test that a dKalmanFilter instance was created + assert_equal(prefix in mod._kalman_filters, True) + kf = mod._kalman_filters[prefix] + assert isinstance(kf, tools.prefix_kalman_filter_map[prefix]) + + # Test that the default returned _kalman_filter is the above instance + assert_equal(mod._kalman_filter, kf) + + # Check that upcasting datatypes / ?KalmanFilter works (e.g. d -> z) + mod = KalmanFilter(k_endog=1, k_states=1) + + # Default dtype is float + assert_equal(mod.prefix, 'd') + assert_equal(mod.dtype, np.float64) + + # Prior to initialization, no ?KalmanFilter exists + assert_equal(mod._kalman_filter, None) + + # Bind data and initialize the ?KalmanFilter object + endog = np.ascontiguousarray(np.array([1., 2.], dtype=np.float64)) + mod.bind(endog) + mod._initialize_filter() + kf = mod._kalman_filters['d'] + + # Rebind data, still float, check that we haven't changed + mod.bind(endog) + mod._initialize_filter() + assert_equal(mod._kalman_filter, kf) + + # Force creating new ?Statespace and ?KalmanFilter, by changing the + # time-varying character of an array + mod.design = np.zeros((1, 1, 2)) + mod._initialize_filter() + assert_equal(mod._kalman_filter == kf, False) + kf = mod._kalman_filters['d'] + + # Rebind data, now complex, check that the ?KalmanFilter instance has + # changed + endog = np.ascontiguousarray(np.array([1., 2.], dtype=np.complex128)) + mod.bind(endog) + assert_equal(mod._kalman_filter == kf, False) + + +def test_filter(): + # Tests of invalid calls to the filter function + + endog = np.ones((10, 1)) + mod = KalmanFilter(endog, k_states=1, initialization='approximate_diffuse') + mod['design', :] = 1 + mod['selection', :] = 1 + mod['state_cov', :] = 1 + + # Test default filter results + res = mod.filter() + assert_equal(isinstance(res, FilterResults), True) + + +def test_loglike(): + # Tests of invalid calls to the loglike function + + endog = np.ones((10, 1)) + mod = KalmanFilter(endog, k_states=1, initialization='approximate_diffuse') + mod['design', :] = 1 + mod['selection', :] = 1 + mod['state_cov', :] = 1 + + # Test that self.memory_no_likelihood = True raises an error + mod.memory_no_likelihood = True + assert_raises(RuntimeError, mod.loglike) + assert_raises(RuntimeError, mod.loglikeobs) + + +def test_predict(): + # Tests of invalid calls to the predict function + + warnings.simplefilter("always") + + endog = np.ones((10, 1)) + mod = KalmanFilter(endog, k_states=1, initialization='approximate_diffuse') + mod['design', :] = 1 + mod['obs_intercept'] = np.zeros((1, 10)) + mod['selection', :] = 1 + mod['state_cov', :] = 1 + + # Check that we need both forecasts and predicted output for prediction + mod.memory_no_forecast = True + res = mod.filter() + assert_raises(ValueError, res.predict) + mod.memory_no_forecast = False + + mod.memory_no_predicted = True + res = mod.filter() + assert_raises(ValueError, res.predict) + mod.memory_no_predicted = False + + # Now get a clean filter object + res = mod.filter() + + # Check that start < 0 is an error + assert_raises(ValueError, res.predict, start=-1) + + # Check that end < start is an error + assert_raises(ValueError, res.predict, start=2, end=1) + + # Check that dynamic < 0 is an error + assert_raises(ValueError, res.predict, dynamic=-1) + + # Check that dynamic > end is an warning + with warnings.catch_warnings(record=True) as w: + res.predict(end=1, dynamic=2) + message = ('Dynamic prediction specified to begin after the end of' + ' prediction, and so has no effect.') + assert_equal(str(w[0].message), message) + + # Check that dynamic > nobs is an warning + with warnings.catch_warnings(record=True) as w: + res.predict(end=11, dynamic=11, obs_intercept=np.zeros((1, 1))) + message = ('Dynamic prediction specified to begin during' + ' out-of-sample forecasting period, and so has no' + ' effect.') + assert_equal(str(w[0].message), message) + + # Check for a warning when providing a non-used statespace matrix + with warnings.catch_warnings(record=True) as w: + res.predict(end=res.nobs+1, design=True, + obs_intercept=np.zeros((1, 1))) + message = ('Model has time-invariant design matrix, so the design' + ' argument to `predict` has been ignored.') + assert_equal(str(w[0].message), message) + + # Check that an error is raised when a new time-varying matrix is not + # provided + assert_raises(ValueError, res.predict, end=res.nobs+1) + + # Check that an error is raised when a non-two-dimensional obs_intercept + # is given + assert_raises(ValueError, res.predict, end=res.nobs+1, + obs_intercept=np.zeros(1)) + + # Check that an error is raised when an obs_intercept with incorrect length + # is given + assert_raises(ValueError, res.predict, end=res.nobs+1, + obs_intercept=np.zeros(2)) + + # Check that start=None gives start=0 and end=None gives end=nobs + assert_equal(res.predict().forecasts.shape, (1, res.nobs)) + + # Check that dynamic=True begins dynamic prediction immediately + # TODO just a smoke test + res.predict(dynamic=True) + + # Check that on success, PredictionResults object is returned + prediction_results = res.predict(start=3, end=5) + assert_equal(isinstance(prediction_results, PredictionResults), True) + + # Check for correctly subset representation arrays + # (k_endog, npredictions) = (1, 2) + assert_equal(prediction_results.endog.shape, (1, 2)) + # (k_endog, npredictions) = (1, 2) + assert_equal(prediction_results.obs_intercept.shape, (1, 2)) + # (k_endog, k_states) = (1, 1) + assert_equal(prediction_results.design.shape, (1, 1)) + # (k_endog, k_endog) = (1, 1) + assert_equal(prediction_results.obs_cov.shape, (1, 1)) + # (k_state,) = (1,) + assert_equal(prediction_results.state_intercept.shape, (1,)) + # (k_state, npredictions) = (1, 2) + assert_equal(prediction_results.obs_intercept.shape, (1, 2)) + # (k_state, k_state) = (1, 1) + assert_equal(prediction_results.transition.shape, (1, 1)) + # (k_state, k_posdef) = (1, 1) + assert_equal(prediction_results.selection.shape, (1, 1)) + # (k_posdef, k_posdef) = (1, 1) + assert_equal(prediction_results.state_cov.shape, (1, 1)) + + # Check for correctly subset filter output arrays + # (k_endog, npredictions) = (1, 2) + assert_equal(prediction_results.forecasts.shape, (1, 2)) + assert_equal(prediction_results.forecasts_error.shape, (1, 2)) + # (k_states, npredictions) = (1, 2) + assert_equal(prediction_results.filtered_state.shape, (1, 2)) + assert_equal(prediction_results.predicted_state.shape, (1, 2)) + # (k_endog, k_endog, npredictions) = (1, 1, 2) + assert_equal(prediction_results.forecasts_error_cov.shape, (1, 1, 2)) + # (k_states, k_states, npredictions) = (1, 1, 2) + assert_equal(prediction_results.filtered_state_cov.shape, (1, 1, 2)) + assert_equal(prediction_results.predicted_state_cov.shape, (1, 1, 2)) + + # Check for invalid attribute + assert_raises(AttributeError, getattr, prediction_results, 'test') + + # Check that an error is raised when a non-two-dimensional obs_cov + # is given + # ...and... + # Check that an error is raised when an obs_cov with incorrect length + # is given + mod = KalmanFilter(endog, k_states=1, initialization='approximate_diffuse') + mod['design', :] = 1 + mod['obs_cov'] = np.zeros((1, 1, 10)) + mod['selection', :] = 1 + mod['state_cov', :] = 1 + res = mod.filter() + + assert_raises(ValueError, res.predict, end=res.nobs+1, + obs_cov=np.zeros((1, 1))) + assert_raises(ValueError, res.predict, end=res.nobs+1, + obs_cov=np.zeros((1, 1, 2))) + + +def test_standardized_forecasts_error(): + # Simple test that standardized forecasts errors are calculated correctly. + + # Just uses a different calculation method on a univariate series. + + # Get the dataset + true = results_kalman_filter.uc_uni + data = pd.DataFrame( + true['data'], + index=pd.date_range('1947-01-01', '1995-07-01', freq='QS'), + columns=['GDP'] + ) + data['lgdp'] = np.log(data['GDP']) + + # Fit an ARIMA(1, 1, 0) to log GDP + mod = sarimax.SARIMAX(data['lgdp'], order=(1, 1, 0)) + res = mod.fit(disp=-1) + + standardized_forecasts_error = ( + res.filter_results.forecasts_error[0] / + np.sqrt(res.filter_results.forecasts_error_cov[0, 0]) + ) + + assert_allclose( + res.filter_results.standardized_forecasts_error[0], + standardized_forecasts_error, + ) + + +def test_simulate(): + # Test for simulation of new time-series + from scipy.signal import lfilter + + # Common parameters + nsimulations = 10 + sigma2 = 2 + measurement_shocks = np.zeros(nsimulations) + state_shocks = np.random.normal(scale=sigma2**0.5, size=nsimulations) + + # Random walk model, so simulated series is just the cumulative sum of + # the shocks + mod = KalmanFilter(k_endog=1, k_states=1) + mod['design', 0, 0] = 1. + mod['transition', 0, 0] = 1. + mod['selection', 0, 0] = 1. + + actual = mod.simulate( + nsimulations, measurement_shocks=measurement_shocks, + state_shocks=state_shocks)[0].squeeze() + desired = np.r_[0, np.cumsum(state_shocks)[:-1]] + + assert_allclose(actual, desired) + + # Local level model, so simulated series is just the cumulative sum of + # the shocks plus the measurement shock + mod = KalmanFilter(k_endog=1, k_states=1) + mod['design', 0, 0] = 1. + mod['transition', 0, 0] = 1. + mod['selection', 0, 0] = 1. + + actual = mod.simulate( + nsimulations, measurement_shocks=np.ones(nsimulations), + state_shocks=state_shocks)[0].squeeze() + desired = np.r_[1, np.cumsum(state_shocks)[:-1] + 1] + + assert_allclose(actual, desired) + + # Local level-like model with observation and state intercepts, so + # simulated series is just the cumulative sum of the shocks minus the state + # intercept, plus the observation intercept and the measurement shock + mod = KalmanFilter(k_endog=1, k_states=1) + mod['obs_intercept', 0, 0] = 5. + mod['design', 0, 0] = 1. + mod['state_intercept', 0, 0] = -2. + mod['transition', 0, 0] = 1. + mod['selection', 0, 0] = 1. + + actual = mod.simulate( + nsimulations, measurement_shocks=np.ones(nsimulations), + state_shocks=state_shocks)[0].squeeze() + desired = np.r_[1 + 5, np.cumsum(state_shocks - 2)[:-1] + 1 + 5] + + assert_allclose(actual, desired) + + # Model with time-varying observation intercept + mod = KalmanFilter(k_endog=1, k_states=1, nobs=10) + mod['obs_intercept'] = (np.arange(10)*1.).reshape(1, 10) + mod['design', 0, 0] = 1. + mod['transition', 0, 0] = 1. + mod['selection', 0, 0] = 1. + + actual = mod.simulate( + nsimulations, measurement_shocks=measurement_shocks, + state_shocks=state_shocks)[0].squeeze() + desired = np.r_[0, np.cumsum(state_shocks)[:-1] + np.arange(1, 10)] + + assert_allclose(actual, desired) + + # Model with time-varying observation intercept, check that error is raised + # if more simulations are requested than are nobs. + mod = KalmanFilter(k_endog=1, k_states=1, nobs=10) + mod['obs_intercept'] = (np.arange(10)*1.).reshape(1, 10) + mod['design', 0, 0] = 1. + mod['transition', 0, 0] = 1. + mod['selection', 0, 0] = 1. + assert_raises(ValueError, mod.simulate, nsimulations+1, measurement_shocks, + state_shocks) + + # ARMA(1, 1): phi = [0.1], theta = [0.5], sigma^2 = 2 + phi = 0.1 + theta = 0.5 + mod = sarimax.SARIMAX([0], order=(1, 0, 1)) + mod.update(np.r_[phi, theta, sigma2]) + + actual = mod.ssm.simulate( + nsimulations, measurement_shocks=measurement_shocks, + state_shocks=state_shocks, + initial_state=np.zeros(mod.k_states))[0].squeeze() + desired = lfilter([1, theta], [1, -phi], np.r_[0, state_shocks[:-1]]) + + assert_allclose(actual, desired) + + # SARIMAX(1, 0, 1)x(1, 0, 1, 4), this time using the results object call + mod = sarimax.SARIMAX([0.1, 0.5, -0.2], order=(1, 0, 1), + seasonal_order=(1, 0, 1, 4)) + res = mod.filter([0.1, 0.5, 0.2, -0.3, 1]) + + actual = res.simulate( + nsimulations, measurement_shocks=measurement_shocks, + state_shocks=state_shocks, initial_state=np.zeros(mod.k_states)) + desired = lfilter( + res.polynomial_reduced_ma, res.polynomial_reduced_ar, + np.r_[0, state_shocks[:-1]]) + + assert_allclose(actual, desired) + + +def test_impulse_responses(): + # Test for impulse response functions + + # Random walk: 1-unit impulse response (i.e. non-orthogonalized irf) is 1 + # for all periods + mod = KalmanFilter(k_endog=1, k_states=1) + mod['design', 0, 0] = 1. + mod['transition', 0, 0] = 1. + mod['selection', 0, 0] = 1. + mod['state_cov', 0, 0] = 2. + + actual = mod.impulse_responses(steps=10) + desired = np.ones((11, 1)) + + assert_allclose(actual, desired) + + # Random walk: 2-unit impulse response (i.e. non-orthogonalized irf) is 2 + # for all periods + mod = KalmanFilter(k_endog=1, k_states=1) + mod['design', 0, 0] = 1. + mod['transition', 0, 0] = 1. + mod['selection', 0, 0] = 1. + mod['state_cov', 0, 0] = 2. + + actual = mod.impulse_responses(steps=10, impulse=[2]) + desired = np.ones((11, 1)) * 2 + + assert_allclose(actual, desired) + + # Random walk: 1-standard-deviation response (i.e. orthogonalized irf) is + # sigma for all periods (here sigma^2 = 2) + mod = KalmanFilter(k_endog=1, k_states=1) + mod['design', 0, 0] = 1. + mod['transition', 0, 0] = 1. + mod['selection', 0, 0] = 1. + mod['state_cov', 0, 0] = 2. + + actual = mod.impulse_responses(steps=10, orthogonalized=True) + desired = np.ones((11, 1)) * 2**0.5 + + assert_allclose(actual, desired) + + # Random walk: 1-standard-deviation cumulative response (i.e. cumulative + # orthogonalized irf) + mod = KalmanFilter(k_endog=1, k_states=1) + mod['design', 0, 0] = 1. + mod['transition', 0, 0] = 1. + mod['selection', 0, 0] = 1. + mod['state_cov', 0, 0] = 2. + + actual = mod.impulse_responses(steps=10, orthogonalized=True, + cumulative=True) + desired = np.cumsum(np.ones((11, 1)) * 2**0.5)[:, np.newaxis] + + actual = mod.impulse_responses(steps=10, impulse=[1], orthogonalized=True, + cumulative=True) + desired = np.cumsum(np.ones((11, 1)) * 2**0.5)[:, np.newaxis] + + assert_allclose(actual, desired) + + # Random walk: 1-unit impulse response (i.e. non-orthogonalized irf) is 1 + # for all periods, even when intercepts are present + mod = KalmanFilter(k_endog=1, k_states=1) + mod['state_intercept', 0] = 100. + mod['design', 0, 0] = 1. + mod['obs_intercept', 0] = -1000. + mod['transition', 0, 0] = 1. + mod['selection', 0, 0] = 1. + mod['state_cov', 0, 0] = 2. + + actual = mod.impulse_responses(steps=10) + desired = np.ones((11, 1)) + + assert_allclose(actual, desired) + + # Univariate model (random walk): test that an error is thrown when + # a multivariate or empty "impulse" is sent + mod = KalmanFilter(k_endog=1, k_states=1) + assert_raises(ValueError, mod.impulse_responses, impulse=1) + assert_raises(ValueError, mod.impulse_responses, impulse=[1, 1]) + assert_raises(ValueError, mod.impulse_responses, impulse=[]) + + # Univariate model with two uncorrelated shocks + mod = KalmanFilter(k_endog=1, k_states=2) + mod['design', 0, 0:2] = 1. + mod['transition', :, :] = np.eye(2) + mod['selection', :, :] = np.eye(2) + mod['state_cov', :, :] = np.eye(2) + + desired = np.ones((11, 1)) + + actual = mod.impulse_responses(steps=10, impulse=0) + assert_allclose(actual, desired) + + actual = mod.impulse_responses(steps=10, impulse=[1, 0]) + assert_allclose(actual, desired) + + actual = mod.impulse_responses(steps=10, impulse=1) + assert_allclose(actual, desired) + + actual = mod.impulse_responses(steps=10, impulse=[0, 1]) + assert_allclose(actual, desired) + + # In this case (with sigma=sigma^2=1), orthogonalized is the same as not + actual = mod.impulse_responses(steps=10, impulse=0, orthogonalized=True) + assert_allclose(actual, desired) + + actual = mod.impulse_responses( + steps=10, impulse=[1, 0], orthogonalized=True) + assert_allclose(actual, desired) + + actual = mod.impulse_responses( + steps=10, impulse=[0, 1], orthogonalized=True) + assert_allclose(actual, desired) + + # Univariate model with two correlated shocks + mod = KalmanFilter(k_endog=1, k_states=2) + mod['design', 0, 0:2] = 1. + mod['transition', :, :] = np.eye(2) + mod['selection', :, :] = np.eye(2) + mod['state_cov', :, :] = np.array([[1, 0.5], [0.5, 1.25]]) + + desired = np.ones((11, 1)) + + # Non-orthogonalized (i.e. 1-unit) impulses still just generate 1's + actual = mod.impulse_responses(steps=10, impulse=0) + assert_allclose(actual, desired) + + actual = mod.impulse_responses(steps=10, impulse=1) + assert_allclose(actual, desired) + + # Orthogonalized (i.e. 1-std-dev) impulses now generate different responses + actual = mod.impulse_responses(steps=10, impulse=0, orthogonalized=True) + assert_allclose(actual, desired + desired * 0.5) + + actual = mod.impulse_responses(steps=10, impulse=1, orthogonalized=True) + assert_allclose(actual, desired) + + # Multivariate model with two correlated shocks + mod = KalmanFilter(k_endog=2, k_states=2) + mod['design', :, :] = np.eye(2) + mod['transition', :, :] = np.eye(2) + mod['selection', :, :] = np.eye(2) + mod['state_cov', :, :] = np.array([[1, 0.5], [0.5, 1.25]]) + + ones = np.ones((11, 1)) + zeros = np.zeros((11, 1)) + + # Non-orthogonalized (i.e. 1-unit) impulses still just generate 1's, but + # only for the appropriate series + actual = mod.impulse_responses(steps=10, impulse=0) + assert_allclose(actual, np.c_[ones, zeros]) + + actual = mod.impulse_responses(steps=10, impulse=1) + assert_allclose(actual, np.c_[zeros, ones]) + + # Orthogonalized (i.e. 1-std-dev) impulses now generate different + # responses, and only for the appropriate series + actual = mod.impulse_responses(steps=10, impulse=0, orthogonalized=True) + assert_allclose(actual, np.c_[ones, ones * 0.5]) + + actual = mod.impulse_responses(steps=10, impulse=1, orthogonalized=True) + assert_allclose(actual, np.c_[zeros, ones]) + + # AR(1) model generates a geometrically declining series + mod = sarimax.SARIMAX([0.1, 0.5, -0.2], order=(1, 0, 0)) + phi = 0.5 + mod.update([phi, 1]) + + desired = np.cumprod(np.r_[1, [phi]*10]) + + # Test going through the model directly + actual = mod.ssm.impulse_responses(steps=10) + assert_allclose(actual[:, 0], desired) + + # Test going through the results object + res = mod.filter([phi, 1.]) + actual = res.impulse_responses(steps=10) + assert_allclose(actual, desired) + + +def test_missing(): + # Datasets + endog = np.arange(10).reshape(10, 1) + endog_pre_na = np.ascontiguousarray(np.c_[ + endog.copy() * np.nan, endog.copy() * np.nan, endog, endog]) + endog_post_na = np.ascontiguousarray(np.c_[ + endog, endog, endog.copy() * np.nan, endog.copy() * np.nan]) + endog_inject_na = np.ascontiguousarray(np.c_[ + endog, endog.copy() * np.nan, endog, endog.copy() * np.nan]) + + # Base model + mod = KalmanFilter(np.ascontiguousarray(np.c_[endog, endog]), k_states=1, + initialization='approximate_diffuse') + mod['design', :, :] = 1 + mod['obs_cov', :, :] = np.eye(mod.k_endog)*0.5 + mod['transition', :, :] = 0.5 + mod['selection', :, :] = 1 + mod['state_cov', :, :] = 0.5 + llf = mod.loglikeobs() + + # Model with prepended nans + mod = KalmanFilter(endog_pre_na, k_states=1, + initialization='approximate_diffuse') + mod['design', :, :] = 1 + mod['obs_cov', :, :] = np.eye(mod.k_endog)*0.5 + mod['transition', :, :] = 0.5 + mod['selection', :, :] = 1 + mod['state_cov', :, :] = 0.5 + llf_pre_na = mod.loglikeobs() + + assert_allclose(llf_pre_na, llf) + + # Model with appended nans + mod = KalmanFilter(endog_post_na, k_states=1, + initialization='approximate_diffuse') + mod['design', :, :] = 1 + mod['obs_cov', :, :] = np.eye(mod.k_endog)*0.5 + mod['transition', :, :] = 0.5 + mod['selection', :, :] = 1 + mod['state_cov', :, :] = 0.5 + llf_post_na = mod.loglikeobs() + + assert_allclose(llf_post_na, llf) + + # Model with injected nans + mod = KalmanFilter(endog_inject_na, k_states=1, + initialization='approximate_diffuse') + mod['design', :, :] = 1 + mod['obs_cov', :, :] = np.eye(mod.k_endog)*0.5 + mod['transition', :, :] = 0.5 + mod['selection', :, :] = 1 + mod['state_cov', :, :] = 0.5 + llf_inject_na = mod.loglikeobs() + + assert_allclose(llf_inject_na, llf) diff --git a/statsmodels/tsa/statespace/tests/test_sarimax.py b/statsmodels/tsa/statespace/tests/test_sarimax.py new file mode 100644 index 0000000..a932e02 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_sarimax.py @@ -0,0 +1,2416 @@ +""" +Tests for SARIMAX models + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import os +import warnings + +from statsmodels.compat.platform import PLATFORM_WIN + +import numpy as np +import pandas as pd +import pytest + +from statsmodels.tsa.statespace import sarimax, tools +from statsmodels.tsa import arima_model as arima +from .results import results_sarimax +from statsmodels.tools import add_constant +from numpy.testing import ( + assert_equal, assert_almost_equal, assert_raises, assert_allclose +) + + +current_path = os.path.dirname(os.path.abspath(__file__)) + +realgdp_path = os.path.join('results', 'results_realgdpar_stata.csv') +realgdp_results = pd.read_csv(current_path + os.sep + realgdp_path) + +coverage_path = os.path.join('results', 'results_sarimax_coverage.csv') +coverage_results = pd.read_csv(os.path.join(current_path, coverage_path)) + + +class TestSARIMAXStatsmodels(object): + """ + Test ARIMA model using SARIMAX class against statsmodels ARIMA class + + Notes + ----- + + Standard errors are quite good for the OPG case. + """ + @classmethod + def setup_class(cls): + cls.true = results_sarimax.wpi1_stationary + endog = cls.true['data'] + + cls.model_a = arima.ARIMA(endog, order=(1, 1, 1)) + cls.result_a = cls.model_a.fit(disp=-1) + + cls.model_b = sarimax.SARIMAX(endog, order=(1, 1, 1), trend='c', + simple_differencing=True, + hamilton_representation=True) + cls.result_b = cls.model_b.fit(disp=-1) + + def test_loglike(self): + assert_allclose(self.result_b.llf, self.result_a.llf) + + def test_aic(self): + assert_allclose(self.result_b.aic, self.result_a.aic) + + def test_bic(self): + assert_allclose(self.result_b.bic, self.result_a.bic) + + def test_hqic(self): + assert_allclose(self.result_b.hqic, self.result_a.hqic) + + def test_mle(self): + # ARIMA estimates the mean of the process, whereas SARIMAX estimates + # the intercept. Convert the mean to intercept to compare + params_a = self.result_a.params.copy() + params_a[0] = (1 - params_a[1]) * params_a[0] + assert_allclose(self.result_b.params[:-1], params_a, atol=5e-5) + + def test_bse(self): + # Test the complex step approximated BSE values + cpa = self.result_b._cov_params_approx(approx_complex_step=True) + bse = cpa.diagonal()**0.5 + assert_allclose(bse[1:-1], self.result_a.bse[1:], atol=1e-5) + + def test_t_test(self): + import statsmodels.tools._testing as smt + # to trigger failure, un-comment the following: + # self.result_b._cache['pvalues'] += 1 + smt.check_ttest_tvalues(self.result_b) + smt.check_ftest_pvalues(self.result_b) + + +class TestRealGDPARStata(object): + """ + Includes tests of filtered states and standardized forecast errors. + + Notes + ----- + Could also test the usual things like standard errors, etc. but those are + well-tested elsewhere. + """ + @classmethod + def setup_class(cls): + dlgdp = np.log(realgdp_results['value']).diff()[1:].values + cls.model = sarimax.SARIMAX(dlgdp, order=(12, 0, 0), trend='n', + hamilton_representation=True) + # Estimated by Stata + params = [ + .40725515, .18782621, -.01514009, -.01027267, -.03642297, + .11576416, .02573029, -.00766572, .13506498, .08649569, .06942822, + -.10685783, .00007999607 + ] + cls.results = cls.model.filter(params) + + def test_filtered_state(self): + for i in range(12): + assert_allclose( + realgdp_results.iloc[1:]['u%d' % (i+1)], + self.results.filter_results.filtered_state[i], + atol=1e-6 + ) + + def test_standardized_forecasts_error(self): + assert_allclose( + realgdp_results.iloc[1:]['rstd'], + self.results.filter_results.standardized_forecasts_error[0], + atol=1e-3 + ) + + +class SARIMAXStataTests(object): + def test_loglike(self): + assert_almost_equal( + self.result.llf, + self.true['loglike'], 4 + ) + + def test_aic(self): + assert_almost_equal( + self.result.aic, + self.true['aic'], 3 + ) + + def test_bic(self): + assert_almost_equal( + self.result.bic, + self.true['bic'], 3 + ) + + def test_hqic(self): + hqic = ( + -2*self.result.llf + + 2*np.log(np.log(self.result.nobs_effective)) * + self.result.params.shape[0] + ) + assert_almost_equal( + self.result.hqic, + hqic, 3 + ) + + def test_standardized_forecasts_error(self): + cython_sfe = self.result.standardized_forecasts_error + self.result._standardized_forecasts_error = None + python_sfe = self.result.standardized_forecasts_error + assert_allclose(cython_sfe, python_sfe) + + +class ARIMA(SARIMAXStataTests): + """ + ARIMA model + + Stata arima documentation, Example 1 + """ + @classmethod + def setup_class(cls, true, *args, **kwargs): + cls.true = true + endog = true['data'] + + kwargs.setdefault('simple_differencing', True) + kwargs.setdefault('hamilton_representation', True) + + cls.model = sarimax.SARIMAX(endog, order=(1, 1, 1), trend='c', + *args, **kwargs) + + # Stata estimates the mean of the process, whereas SARIMAX estimates + # the intercept of the process. Get the intercept. + intercept = (1 - true['params_ar'][0]) * true['params_mean'][0] + params = np.r_[intercept, true['params_ar'], true['params_ma'], + true['params_variance']] + + cls.result = cls.model.filter(params) + + def test_mle(self): + result = self.model.fit(disp=-1) + assert_allclose( + result.params, self.result.params, + atol=1e-3 + ) + + +class TestARIMAStationary(ARIMA): + """ + Notes + ----- + + Standard errors are very good for the OPG and complex step approximation + cases. + """ + @classmethod + def setup_class(cls): + super(TestARIMAStationary, cls).setup_class( + results_sarimax.wpi1_stationary + ) + + def test_bse(self): + # test defaults + assert_equal(self.result.cov_type, 'opg') + assert_equal(self.result._cov_approx_complex_step, True) + assert_equal(self.result._cov_approx_centered, False) + # default covariance type (opg) + assert_allclose(self.result.bse[1], self.true['se_ar_opg'], atol=1e-7) + assert_allclose(self.result.bse[2], self.true['se_ma_opg'], atol=1e-7) + + def test_bse_approx(self): + # complex step + bse = self.result._cov_params_approx( + approx_complex_step=True).diagonal()**0.5 + assert_allclose(bse[1], self.true['se_ar_oim'], atol=1e-7) + assert_allclose(bse[2], self.true['se_ma_oim'], atol=1e-7) + + # The below tests pass irregularly; they give a sense of the precision + # available with finite differencing + # finite difference, non-centered + # with warnings.catch_warnings(): + # warnings.simplefilter("ignore") + # bse = self.result._cov_params_approx( + # approx_complex_step=False).diagonal()**0.5 + # assert_allclose(bse[1], self.true['se_ar_oim'], atol=1e-2) + # assert_allclose(bse[2], self.true['se_ma_oim'], atol=1e-1) + + # # finite difference, centered + # cpa = self.result._cov_params_approx( + # approx_complex_step=False, approx_centered=True) + # bse = cpa.diagonal()**0.5 + # assert_allclose(bse[1], self.true['se_ar_oim'], atol=1e-3) + # assert_allclose(bse[2], self.true['se_ma_oim'], atol=1e-3) + + def test_bse_oim(self): + # OIM covariance type + oim_bse = self.result.cov_params_oim.diagonal()**0.5 + assert_allclose(oim_bse[1], self.true['se_ar_oim'], atol=1e-3) + assert_allclose(oim_bse[2], self.true['se_ma_oim'], atol=1e-2) + + def test_bse_robust(self): + robust_oim_bse = self.result.cov_params_robust_oim.diagonal()**0.5 + cpra = self.result.cov_params_robust_approx + robust_approx_bse = cpra.diagonal()**0.5 + true_robust_bse = np.r_[ + self.true['se_ar_robust'], self.true['se_ma_robust'] + ] + + assert_allclose(robust_oim_bse[1:3], true_robust_bse, atol=1e-2) + assert_allclose(robust_approx_bse[1:3], true_robust_bse, atol=1e-3) + + +class TestARIMADiffuse(ARIMA): + """ + Notes + ----- + + Standard errors are very good for the OPG and quite good for the complex + step approximation cases. + """ + @classmethod + def setup_class(cls, **kwargs): + kwargs['initialization'] = 'approximate_diffuse' + kwargs['initial_variance'] = ( + results_sarimax.wpi1_diffuse['initial_variance'] + ) + super(TestARIMADiffuse, cls).setup_class(results_sarimax.wpi1_diffuse, + **kwargs) + + def test_bse(self): + # test defaults + assert_equal(self.result.cov_type, 'opg') + assert_equal(self.result._cov_approx_complex_step, True) + assert_equal(self.result._cov_approx_centered, False) + # default covariance type (opg) + assert_allclose(self.result.bse[1], self.true['se_ar_opg'], atol=1e-7) + assert_allclose(self.result.bse[2], self.true['se_ma_opg'], atol=1e-7) + + def test_bse_approx(self): + # complex step + bse = self.result._cov_params_approx( + approx_complex_step=True).diagonal()**0.5 + assert_allclose(bse[1], self.true['se_ar_oim'], atol=1e-4) + assert_allclose(bse[2], self.true['se_ma_oim'], atol=1e-4) + + # The below tests do not pass + # with warnings.catch_warnings(): + # warnings.simplefilter("ignore") + + # # finite difference, non-centered : failure + # bse = self.result._cov_params_approx( + # approx_complex_step=False).diagonal()**0.5 + # assert_allclose(bse[1], self.true['se_ar_oim'], atol=1e-4) + # assert_allclose(bse[2], self.true['se_ma_oim'], atol=1e-4) + + # # finite difference, centered : failure + # cpa = self.result._cov_params_approx( + # approx_complex_step=False, approx_centered=True) + # bse = cpa.diagonal()**0.5 + # assert_allclose(bse[1], self.true['se_ar_oim'], atol=1e-4) + # assert_allclose(bse[2], self.true['se_ma_oim'], atol=1e-4) + + def test_bse_oim(self): + # OIM covariance type + bse = self.result._cov_params_oim().diagonal()**0.5 + assert_allclose(bse[1], self.true['se_ar_oim'], atol=1e-2) + assert_allclose(bse[2], self.true['se_ma_oim'], atol=1e-1) + + +class AdditiveSeasonal(SARIMAXStataTests): + """ + ARIMA model with additive seasonal effects + + Stata arima documentation, Example 2 + """ + @classmethod + def setup_class(cls, true, *args, **kwargs): + cls.true = true + endog = np.log(true['data']) + + kwargs.setdefault('simple_differencing', True) + kwargs.setdefault('hamilton_representation', True) + + cls.model = sarimax.SARIMAX( + endog, order=(1, 1, (1, 0, 0, 1)), trend='c', *args, **kwargs + ) + + # Stata estimates the mean of the process, whereas SARIMAX estimates + # the intercept of the process. Get the intercept. + intercept = (1 - true['params_ar'][0]) * true['params_mean'][0] + params = np.r_[intercept, true['params_ar'], true['params_ma'], + true['params_variance']] + + cls.result = cls.model.filter(params) + + def test_mle(self): + result = self.model.fit(disp=-1) + assert_allclose( + result.params, self.result.params, + atol=1e-3 + ) + + +class TestAdditiveSeasonal(AdditiveSeasonal): + """ + Notes + ----- + + Standard errors are very good for the OPG and quite good for the complex + step approximation cases. + """ + @classmethod + def setup_class(cls): + super(TestAdditiveSeasonal, cls).setup_class( + results_sarimax.wpi1_seasonal + ) + + def test_bse(self): + # test defaults + assert_equal(self.result.cov_type, 'opg') + assert_equal(self.result._cov_approx_complex_step, True) + assert_equal(self.result._cov_approx_centered, False) + # default covariance type (opg) + assert_allclose(self.result.bse[1], self.true['se_ar_opg'], atol=1e-6) + assert_allclose(self.result.bse[2:4], self.true['se_ma_opg'], + atol=1e-5) + + def test_bse_approx(self): + # complex step + bse = self.result._cov_params_approx( + approx_complex_step=True).diagonal()**0.5 + assert_allclose(bse[1], self.true['se_ar_oim'], atol=1e-4) + assert_allclose(bse[2:4], self.true['se_ma_oim'], atol=1e-4) + + # The below tests pass irregularly; they give a sense of the precision + # available with finite differencing + # with warnings.catch_warnings(): + # warnings.simplefilter("ignore") + + # # finite difference, non-centered + # bse = self.result._cov_params_approx( + # approx_complex_step=False).diagonal()**0.5 + # assert_allclose(bse[1], self.true['se_ar_oim'], atol=1e-2) + # assert_allclose(bse[2:4], self.true['se_ma_oim'], atol=1e-2) + + # # finite difference, centered + # cpa = self.result._cov_params_approx( + # approx_complex_step=False, approx_centered=True) + # bse = cpa.diagonal()**0.5 + # assert_allclose(bse[1], self.true['se_ar_oim'], atol=1e-3) + # assert_allclose(bse[2:4], self.true['se_ma_oim'], atol=1e-3) + + def test_bse_oim(self): + # OIM covariance type + bse = self.result._cov_params_oim().diagonal()**0.5 + assert_allclose(bse[1], self.true['se_ar_oim'], atol=1e-2) + assert_allclose(bse[2:4], self.true['se_ma_oim'], atol=1e-1) + + +class Airline(SARIMAXStataTests): + """ + Multiplicative SARIMA model: "Airline" model + + Stata arima documentation, Example 3 + """ + @classmethod + def setup_class(cls, true, *args, **kwargs): + cls.true = true + endog = np.log(true['data']) + + kwargs.setdefault('simple_differencing', True) + kwargs.setdefault('hamilton_representation', True) + + cls.model = sarimax.SARIMAX( + endog, order=(0, 1, 1), seasonal_order=(0, 1, 1, 12), + trend='n', *args, **kwargs + ) + + params = np.r_[true['params_ma'], true['params_seasonal_ma'], + true['params_variance']] + + cls.result = cls.model.filter(params) + + def test_mle(self): + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + + result = self.model.fit(disp=-1) + assert_allclose( + result.params, self.result.params, + atol=1e-4 + ) + + +class TestAirlineHamilton(Airline): + """ + Notes + ----- + + Standard errors are very good for the OPG and complex step approximation + cases. + """ + @classmethod + def setup_class(cls): + super(TestAirlineHamilton, cls).setup_class( + results_sarimax.air2_stationary + ) + + def test_bse(self): + # test defaults + assert_equal(self.result.cov_type, 'opg') + assert_equal(self.result._cov_approx_complex_step, True) + assert_equal(self.result._cov_approx_centered, False) + # default covariance type (opg) + assert_allclose(self.result.bse[0], self.true['se_ma_opg'], atol=1e-6) + assert_allclose(self.result.bse[1], self.true['se_seasonal_ma_opg'], + atol=1e-6) + + def test_bse_approx(self): + # complex step + bse = self.result._cov_params_approx( + approx_complex_step=True).diagonal()**0.5 + assert_allclose(bse[0], self.true['se_ma_oim'], atol=1e-6) + assert_allclose(bse[1], self.true['se_seasonal_ma_oim'], atol=1e-6) + + # The below tests pass irregularly; they give a sense of the precision + # available with finite differencing + # with warnings.catch_warnings(): + # warnings.simplefilter("ignore") + + # # finite difference, non-centered + # bse = self.result._cov_params_approx( + # approx_complex_step=False).diagonal()**0.5 + # assert_allclose(bse[0], self.true['se_ma_oim'], atol=1e-2) + # assert_allclose(bse[1], self.true['se_seasonal_ma_oim'], + # atol=1e-2) + + # # finite difference, centered + # cpa = self.result._cov_params_approx( + # approx_complex_step=False, approx_centered=True) + # bse = cpa.diagonal()**0.5 + # assert_allclose(bse[0], self.true['se_ma_oim'], atol=1e-4) + # assert_allclose(bse[1], self.true['se_seasonal_ma_oim'], + # atol=1e-4) + + def test_bse_oim(self): + # OIM covariance type + oim_bse = self.result.cov_params_oim.diagonal()**0.5 + assert_allclose(oim_bse[0], self.true['se_ma_oim'], atol=1e-1) + assert_allclose(oim_bse[1], self.true['se_seasonal_ma_oim'], atol=1e-1) + + +class TestAirlineHarvey(Airline): + """ + Notes + ----- + + Standard errors are very good for the OPG and complex step approximation + cases. + """ + @classmethod + def setup_class(cls): + super(TestAirlineHarvey, cls).setup_class( + results_sarimax.air2_stationary, hamilton_representation=False + ) + + def test_bse(self): + # test defaults + assert_equal(self.result.cov_type, 'opg') + assert_equal(self.result._cov_approx_complex_step, True) + assert_equal(self.result._cov_approx_centered, False) + # default covariance type (opg) + assert_allclose(self.result.bse[0], self.true['se_ma_opg'], atol=1e-6) + assert_allclose(self.result.bse[1], self.true['se_seasonal_ma_opg'], + atol=1e-6) + + def test_bse_approx(self): + # complex step + bse = self.result._cov_params_approx( + approx_complex_step=True).diagonal()**0.5 + assert_allclose(bse[0], self.true['se_ma_oim'], atol=1e-6) + assert_allclose(bse[1], self.true['se_seasonal_ma_oim'], atol=1e-6) + + # The below tests pass irregularly; they give a sense of the precision + # available with finite differencing + # with warnings.catch_warnings(): + # warnings.simplefilter("ignore") + + # # finite difference, non-centered + # bse = self.result._cov_params_approx( + # approx_complex_step=False).diagonal()**0.5 + # assert_allclose(bse[0], self.true['se_ma_oim'], atol=1e-2) + # assert_allclose(bse[1], self.true['se_seasonal_ma_oim'], + # atol=1e-2) + + # # finite difference, centered + # cpa = self.result._cov_params_approx( + # approx_complex_step=False, approx_centered=True) + # bse = cpa.diagonal()**0.5 + # assert_allclose(bse[0], self.true['se_ma_oim'], atol=1e-4) + # assert_allclose(bse[1], self.true['se_seasonal_ma_oim'], + # atol=1e-4) + + def test_bse_oim(self): + # OIM covariance type + oim_bse = self.result.cov_params_oim.diagonal()**0.5 + assert_allclose(oim_bse[0], self.true['se_ma_oim'], atol=1e-1) + assert_allclose(oim_bse[1], self.true['se_seasonal_ma_oim'], atol=1e-1) + + +class TestAirlineStateDifferencing(Airline): + """ + Notes + ----- + + Standard errors are very good for the OPG and quite good for the complex + step approximation cases. + """ + @classmethod + def setup_class(cls): + super(TestAirlineStateDifferencing, cls).setup_class( + results_sarimax.air2_stationary, simple_differencing=False, + hamilton_representation=False + ) + + def test_bic(self): + # Due to diffuse component of the state (which technically changes the + # BIC calculation - see Durbin and Koopman section 7.4), this is the + # best we can do for BIC + assert_almost_equal( + self.result.bic, + self.true['bic'], 0 + ) + + def test_mle(self): + result = self.model.fit(method='nm', maxiter=1000, disp=0) + assert_allclose( + result.params, self.result.params, + atol=1e-3) + + def test_bse(self): + # test defaults + assert_equal(self.result.cov_type, 'opg') + assert_equal(self.result._cov_approx_complex_step, True) + assert_equal(self.result._cov_approx_centered, False) + # default covariance type (opg) + assert_allclose(self.result.bse[0], self.true['se_ma_opg'], atol=1e-6) + assert_allclose(self.result.bse[1], self.true['se_seasonal_ma_opg'], + atol=1e-6) + + def test_bse_approx(self): + # complex step + bse = self.result._cov_params_approx( + approx_complex_step=True).diagonal()**0.5 + assert_allclose(bse[0], self.true['se_ma_oim'], atol=1e-4) + assert_allclose(bse[1], self.true['se_seasonal_ma_oim'], atol=1e-4) + + # The below tests do not pass + # with warnings.catch_warnings(): + # warnings.simplefilter("ignore") + + # # finite difference, non-centered : failure with NaNs + # bse = self.result._cov_params_approx( + # approx_complex_step=False).diagonal()**0.5 + # assert_allclose(bse[0], self.true['se_ma_oim'], atol=1e-2) + # assert_allclose(bse[1], self.true['se_seasonal_ma_oim'], + # atol=1e-2) + + # # finite difference, centered : failure with NaNs + # cpa = self.result._cov_params_approx( + # approx_complex_step=False, approx_centered=True) + # bse = cpa.diagonal()**0.5 + # assert_allclose(bse[0], self.true['se_ma_oim'], atol=1e-4) + # assert_allclose(bse[1], self.true['se_seasonal_ma_oim'], + # atol=1e-4) + + def test_bse_oim(self): + # OIM covariance type + oim_bse = self.result.cov_params_oim.diagonal()**0.5 + assert_allclose(oim_bse[0], self.true['se_ma_oim'], atol=1e-1) + assert_allclose(oim_bse[1], self.true['se_seasonal_ma_oim'], atol=1e-1) + + +class Friedman(SARIMAXStataTests): + """ + ARMAX model: Friedman quantity theory of money + + Stata arima documentation, Example 4 + """ + @classmethod + def setup_class(cls, true, exog=None, *args, **kwargs): + cls.true = true + endog = np.r_[true['data']['consump']] + if exog is None: + exog = add_constant(true['data']['m2']) + + kwargs.setdefault('simple_differencing', True) + kwargs.setdefault('hamilton_representation', True) + + cls.model = sarimax.SARIMAX( + endog, exog=exog, order=(1, 0, 1), *args, **kwargs + ) + + params = np.r_[true['params_exog'], true['params_ar'], + true['params_ma'], true['params_variance']] + + cls.result = cls.model.filter(params) + + +class TestFriedmanMLERegression(Friedman): + """ + Notes + ----- + + Standard errors are very good for the OPG and complex step approximation + cases. + """ + @classmethod + def setup_class(cls): + super(TestFriedmanMLERegression, cls).setup_class( + results_sarimax.friedman2_mle + ) + + def test_mle(self): + result = self.model.fit(disp=-1) + # Use ratio to make atol more meaningful parameter scale differs + ratio = result.params / self.result.params + assert_allclose(ratio, np.ones(5), atol=1e-2, rtol=1e-3) + + def test_bse(self): + # test defaults + assert_equal(self.result.cov_type, 'opg') + assert_equal(self.result._cov_approx_complex_step, True) + assert_equal(self.result._cov_approx_centered, False) + # default covariance type (opg) + assert_allclose(self.result.bse[0:2], self.true['se_exog_opg'], + atol=1e-4) + assert_allclose(self.result.bse[2], self.true['se_ar_opg'], atol=1e-6) + assert_allclose(self.result.bse[3], self.true['se_ma_opg'], atol=1e-6) + + def test_bse_approx(self): + # complex step + bse = self.result._cov_params_approx( + approx_complex_step=True).diagonal()**0.5 + assert_allclose(bse[0:2], self.true['se_exog_oim'], atol=1e-4) + assert_allclose(bse[2], self.true['se_ar_oim'], atol=1e-6) + assert_allclose(bse[3], self.true['se_ma_oim'], atol=1e-6) + + # The below tests pass irregularly; they give a sense of the precision + # available with finite differencing + # with warnings.catch_warnings(): + # warnings.simplefilter("ignore") + + # # finite difference, non-centered + # bse = self.result._cov_params_approx( + # approx_complex_step=False).diagonal()**0.5 + # assert_allclose(bse[0], self.true['se_exog_oim'][0], rtol=1) + # assert_allclose(bse[1], self.true['se_exog_oim'][1], atol=1e-2) + # assert_allclose(bse[2], self.true['se_ar_oim'], atol=1e-2) + # assert_allclose(bse[3], self.true['se_ma_oim'], atol=1e-2) + + # # finite difference, centered + # cpa = self.result._cov_params_approx( + # approx_complex_step=False, approx_centered=True) + # bse = cpa.diagonal()**0.5 + # assert_allclose(bse[0], self.true['se_exog_oim'][0], rtol=1) + # assert_allclose(bse[1], self.true['se_exog_oim'][1], atol=1e-2) + # assert_allclose(bse[2], self.true['se_ar_oim'], atol=1e-2) + # assert_allclose(bse[3], self.true['se_ma_oim'], atol=1e-2) + + def test_bse_oim(self): + # OIM covariance type + bse = self.result.cov_params_oim.diagonal()**0.5 + assert_allclose(bse[0], self.true['se_exog_oim'][0], rtol=1) + assert_allclose(bse[1], self.true['se_exog_oim'][1], atol=1e-2) + assert_allclose(bse[2], self.true['se_ar_oim'], atol=1e-2) + assert_allclose(bse[3], self.true['se_ma_oim'], atol=1e-2) + + +class TestFriedmanStateRegression(Friedman): + """ + Notes + ----- + + MLE is not very close and standard errors are not very close for any set of + parameters. + + This is likely because we're comparing against the model where the + regression coefficients are also estimated by MLE. So this test should be + considered just a very basic "sanity" test. + """ + @classmethod + def setup_class(cls): + # Remove the regression coefficients from the parameters, since they + # will be estimated as part of the state vector + true = dict(results_sarimax.friedman2_mle) + exog = add_constant(true['data']['m2']) / 10. + + true['mle_params_exog'] = true['params_exog'][:] + true['mle_se_exog'] = true['se_exog_opg'][:] + + true['params_exog'] = [] + true['se_exog'] = [] + + super(TestFriedmanStateRegression, cls).setup_class( + true, exog=exog, mle_regression=False + ) + + cls.true_params = np.r_[true['params_exog'], true['params_ar'], + true['params_ma'], true['params_variance']] + + cls.result = cls.model.filter(cls.true_params) + + def test_mle(self): + result = self.model.fit(disp=-1) + assert_allclose( + result.params, self.result.params, + atol=1e-1, rtol=2e-1 + ) + + def test_regression_parameters(self): + # The regression effects are integrated into the state vector as + # the last two states (thus the index [-2:]). The filtered + # estimates of the state vector produced by the Kalman filter and + # stored in `filtered_state` for these state elements give the + # recursive least squares estimates of the regression coefficients + # at each time period. To get the estimates conditional on the + # entire dataset, use the filtered states from the last time + # period (thus the index [-1]). + assert_almost_equal( + self.result.filter_results.filtered_state[-2:, -1] / 10., + self.true['mle_params_exog'], 1 + ) + + # Loglikelihood (and so aic, bic) is slightly different when states are + # integrated into the state vector + def test_loglike(self): + pass + + def test_aic(self): + pass + + def test_bic(self): + pass + + def test_bse(self): + # test defaults + assert_equal(self.result.cov_type, 'opg') + assert_equal(self.result._cov_approx_complex_step, True) + assert_equal(self.result._cov_approx_centered, False) + # default covariance type (opg) + assert_allclose(self.result.bse[0], self.true['se_ar_opg'], atol=1e-2) + assert_allclose(self.result.bse[1], self.true['se_ma_opg'], atol=1e-2) + + def test_bse_approx(self): + # complex step + bse = self.result._cov_params_approx( + approx_complex_step=True).diagonal()**0.5 + assert_allclose(bse[0], self.true['se_ar_oim'], atol=1e-1) + assert_allclose(bse[1], self.true['se_ma_oim'], atol=1e-1) + + # The below tests do not pass + # with warnings.catch_warnings(): + # warnings.simplefilter("ignore") + + # # finite difference, non-centered : + # # failure (catastrophic cancellation) + # bse = self.result._cov_params_approx( + # approx_complex_step=False).diagonal()**0.5 + # assert_allclose(bse[0], self.true['se_ar_oim'], atol=1e-3) + # assert_allclose(bse[1], self.true['se_ma_oim'], atol=1e-2) + + # # finite difference, centered : failure (nan) + # cpa = self.result._cov_params_approx( + # approx_complex_step=False, approx_centered=True) + # bse = cpa.diagonal()**0.5 + # assert_allclose(bse[0], self.true['se_ar_oim'], atol=1e-3) + # assert_allclose(bse[1], self.true['se_ma_oim'], atol=1e-3) + + def test_bse_oim(self): + # OIM covariance type + bse = self.result._cov_params_oim().diagonal()**0.5 + assert_allclose(bse[0], self.true['se_ar_oim'], atol=1e-1) + assert_allclose(bse[1], self.true['se_ma_oim'], atol=1e-1) + + +class TestFriedmanPredict(Friedman): + """ + ARMAX model: Friedman quantity theory of money, prediction + + Stata arima postestimation documentation, Example 1 - Dynamic forecasts + + This follows the given Stata example, although it is not truly forecasting + because it compares using the actual data (which is available in the + example but just not used in the parameter MLE estimation) against dynamic + prediction of that data. Here `test_predict` matches the first case, and + `test_dynamic_predict` matches the second. + """ + @classmethod + def setup_class(cls): + super(TestFriedmanPredict, cls).setup_class( + results_sarimax.friedman2_predict + ) + + # loglike, aic, bic are not the point of this test (they could pass, but we + # would have to modify the data so that they were calculated to + # exclude the last 15 observations) + def test_loglike(self): + pass + + def test_aic(self): + pass + + def test_bic(self): + pass + + def test_predict(self): + assert_almost_equal( + self.result.predict(), + self.true['predict'], 3 + ) + + def test_dynamic_predict(self): + dynamic = len(self.true['data']['consump'])-15-1 + assert_almost_equal( + self.result.predict(dynamic=dynamic), + self.true['dynamic_predict'], 3 + ) + + +class TestFriedmanForecast(Friedman): + """ + ARMAX model: Friedman quantity theory of money, forecasts + + Variation on: + Stata arima postestimation documentation, Example 1 - Dynamic forecasts + + This is a variation of the Stata example, in which the endogenous data is + actually made to be missing so that the predict command must forecast. + + As another unit test, we also compare against the case in State when + predict is used against missing data (so forecasting) with the dynamic + option also included. Note, however, that forecasting in State space models + amounts to running the Kalman filter against missing datapoints, so it is + not clear whether "dynamic" forecasting (where instead of missing + datapoints for lags, we plug in previous forecasted endog values) is + meaningful. + """ + @classmethod + def setup_class(cls): + true = dict(results_sarimax.friedman2_predict) + + true['forecast_data'] = { + 'consump': true['data']['consump'][-15:], + 'm2': true['data']['m2'][-15:] + } + true['data'] = { + 'consump': true['data']['consump'][:-15], + 'm2': true['data']['m2'][:-15] + } + + super(TestFriedmanForecast, cls).setup_class(true) + + cls.result = cls.model.filter(cls.result.params) + + # loglike, aic, bic are not the point of this test (they could pass, but we + # would have to modify the data so that they were calculated to + # exclude the last 15 observations) + def test_loglike(self): + pass + + def test_aic(self): + pass + + def test_bic(self): + pass + + def test_forecast(self): + end = len(self.true['data']['consump'])+15-1 + exog = add_constant(self.true['forecast_data']['m2']) + assert_almost_equal( + self.result.predict(end=end, exog=exog), + self.true['forecast'], 3 + ) + + def test_dynamic_forecast(self): + end = len(self.true['data']['consump'])+15-1 + dynamic = len(self.true['data']['consump'])-1 + exog = add_constant(self.true['forecast_data']['m2']) + assert_almost_equal( + self.result.predict(end=end, dynamic=dynamic, exog=exog), + self.true['dynamic_forecast'], 3 + ) + + +class SARIMAXCoverageTest(object): + @classmethod + def setup_class(cls, i, decimal=4, endog=None, *args, **kwargs): + # Dataset + if endog is None: + endog = results_sarimax.wpi1_data + + # Loglikelihood, parameters + cls.true_loglike = coverage_results.loc[i]['llf'] + cls.true_params = np.array([ + float(x) for x in coverage_results.loc[i]['parameters'].split(',')] + ) + # Stata reports the standard deviation; make it the variance + cls.true_params[-1] = cls.true_params[-1]**2 + + # Test parameters + cls.decimal = decimal + + # Compare using the Hamilton representation and simple differencing + kwargs.setdefault('simple_differencing', True) + kwargs.setdefault('hamilton_representation', True) + + cls.model = sarimax.SARIMAX(endog, *args, **kwargs) + + def test_loglike(self): + self.result = self.model.filter(self.true_params) + + assert_allclose( + self.result.llf, + self.true_loglike, + atol=0.7 * 10**(-self.decimal) + ) + + def test_start_params(self): + # just a quick test that start_params isn't throwing an exception + # (other than related to invertibility) + stat = self.model.enforce_stationarity + inv = self.model.enforce_invertibility + self.model.enforce_stationarity = False + self.model.enforce_invertibility = False + self.model.start_params + self.model.enforce_stationarity = stat + self.model.enforce_invertibility = inv + + def test_transform_untransform(self): + model = self.model + stat, inv = model.enforce_stationarity, model.enforce_invertibility + true_constrained = self.true_params + + # Sometimes the parameters given by Stata are not stationary and / or + # invertible, so we need to skip those transformations for those + # parameter sets + model.update(self.true_params) + + par = model.polynomial_ar + psar = model.polynomial_seasonal_ar + contracted_psar = psar[psar.nonzero()] + model.enforce_stationarity = ( + (model.k_ar == 0 or tools.is_invertible(np.r_[1, -par[1:]])) and + (len(contracted_psar) <= 1 or + tools.is_invertible(np.r_[1, -contracted_psar[1:]])) + ) + + pma = model.polynomial_ma + psma = model.polynomial_seasonal_ma + contracted_psma = psma[psma.nonzero()] + model.enforce_invertibility = ( + (model.k_ma == 0 or tools.is_invertible(np.r_[1, pma[1:]])) and + (len(contracted_psma) <= 1 or + tools.is_invertible(np.r_[1, contracted_psma[1:]])) + ) + + unconstrained = model.untransform_params(true_constrained) + constrained = model.transform_params(unconstrained) + + assert_almost_equal(constrained, true_constrained, 4) + model.enforce_stationarity = stat + model.enforce_invertibility = inv + + def test_results(self): + self.result = self.model.filter(self.true_params) + + # Just make sure that no exceptions are thrown during summary + self.result.summary() + + # Make sure no expections are thrown calculating any of the + # covariance matrix types + self.result.cov_params_default + self.result.cov_params_approx + self.result.cov_params_oim + self.result.cov_params_opg + self.result.cov_params_robust_oim + self.result.cov_params_robust_approx + + @pytest.mark.matplotlib + def test_plot_diagnostics(self, close_figures): + # Make sure that no exceptions are thrown during plot_diagnostics + self.result = self.model.filter(self.true_params) + self.result.plot_diagnostics() + + def test_predict(self): + result = self.model.filter(self.true_params) + # Test predict does not throw exceptions, and produces the right shaped + # output + predict = result.predict() + assert_equal(predict.shape, (self.model.nobs,)) + + predict = result.predict(start=10, end=20) + assert_equal(predict.shape, (11,)) + + predict = result.predict(start=10, end=20, dynamic=10) + assert_equal(predict.shape, (11,)) + + # Test forecasts + if self.model.k_exog == 0: + predict = result.predict(start=self.model.nobs, + end=self.model.nobs+10, dynamic=-10) + assert_equal(predict.shape, (11,)) + + predict = result.predict(start=self.model.nobs, + end=self.model.nobs+10, dynamic=-10) + + forecast = result.forecast() + assert_equal(forecast.shape, (1,)) + + forecast = result.forecast(10) + assert_equal(forecast.shape, (10,)) + else: + k_exog = self.model.k_exog + exog = np.r_[[0]*k_exog*11].reshape(11, k_exog) + + predict = result.predict(start=self.model.nobs, + end=self.model.nobs+10, dynamic=-10, + exog=exog) + assert_equal(predict.shape, (11,)) + + predict = result.predict(start=self.model.nobs, + end=self.model.nobs+10, dynamic=-10, + exog=exog) + + exog = np.r_[[0]*k_exog].reshape(1, k_exog) + forecast = result.forecast(exog=exog) + assert_equal(forecast.shape, (1,)) + + def test_init_keys_replicate(self): + mod1 = self.model + + kwargs = self.model._get_init_kwds() + endog = mod1.data.orig_endog + exog = mod1.data.orig_exog + + model2 = sarimax.SARIMAX(endog, exog, **kwargs) + res1 = self.model.filter(self.true_params) + res2 = model2.filter(self.true_params) + rtol = 1e-6 if PLATFORM_WIN else 1e-13 + assert_allclose(res2.llf, res1.llf, rtol=rtol) + + +class Test_ar(SARIMAXCoverageTest): + # // AR: (p, 0, 0) x (0, 0, 0, 0) + # arima wpi, arima(3, 0, 0) noconstant vce(oim) + # save_results 1 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 0) + super(Test_ar, cls).setup_class(0, *args, **kwargs) + + +class Test_ar_as_polynomial(SARIMAXCoverageTest): + # // AR: (p, 0, 0) x (0, 0, 0, 0) + # arima wpi, arima(3, 0, 0) noconstant vce(oim) + # save_results 1 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = ([1, 1, 1], 0, 0) + super(Test_ar_as_polynomial, cls).setup_class(0, *args, **kwargs) + + +class Test_ar_trend_c(SARIMAXCoverageTest): + # // 'c' + # arima wpi c, arima(3, 0, 0) noconstant vce(oim) + # save_results 2 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 0) + kwargs['trend'] = 'c' + super(Test_ar_trend_c, cls).setup_class(1, *args, **kwargs) + + # Modify true params to convert from mean to intercept form + tps = cls.true_params + cls.true_params[0] = (1 - tps[1:4].sum()) * tps[0] + + +class Test_ar_trend_ct(SARIMAXCoverageTest): + # // 'ct' + # arima wpi c t, arima(3, 0, 0) noconstant vce(oim) + # save_results 3 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 0) + kwargs['trend'] = 'ct' + super(Test_ar_trend_ct, cls).setup_class(2, *args, **kwargs) + + # Modify true params to convert from mean to intercept form + tps = cls.true_params + cls.true_params[:2] = (1 - tps[2:5].sum()) * tps[:2] + + +class Test_ar_trend_polynomial(SARIMAXCoverageTest): + # // polynomial [1, 0, 0, 1] + # arima wpi c t3, arima(3, 0, 0) noconstant vce(oim) + # save_results 4 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 0) + kwargs['trend'] = [1, 0, 0, 1] + super(Test_ar_trend_polynomial, cls).setup_class(3, *args, **kwargs) + + # Modify true params to convert from mean to intercept form + tps = cls.true_params + cls.true_params[:2] = (1 - tps[2:5].sum()) * tps[:2] + + +class Test_ar_diff(SARIMAXCoverageTest): + # // AR and I(d): (p, d, 0) x (0, 0, 0, 0) + # arima wpi, arima(3, 2, 0) noconstant vce(oim) + # save_results 5 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 2, 0) + super(Test_ar_diff, cls).setup_class(4, *args, **kwargs) + + +class Test_ar_seasonal_diff(SARIMAXCoverageTest): + # // AR and I(D): (p, 0, 0) x (0, D, 0, s) + # arima wpi, arima(3, 0, 0) sarima(0, 2, 0, 4) noconstant vce(oim) + # save_results 6 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 0) + kwargs['seasonal_order'] = (0, 2, 0, 4) + super(Test_ar_seasonal_diff, cls).setup_class(5, *args, **kwargs) + + +class Test_ar_diffuse(SARIMAXCoverageTest): + # // AR and diffuse initialization + # arima wpi, arima(3, 0, 0) noconstant vce(oim) diffuse + # save_results 7 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 0) + kwargs['initialization'] = 'approximate_diffuse' + kwargs['initial_variance'] = 1e9 + super(Test_ar_diffuse, cls).setup_class(6, *args, **kwargs) + + +class Test_ar_no_enforce(SARIMAXCoverageTest): + # // AR: (p, 0, 0) x (0, 0, 0, 0) + # arima wpi, arima(3, 0, 0) noconstant vce(oim) + # save_results 1 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 0) + kwargs['enforce_stationarity'] = False + kwargs['enforce_invertibility'] = False + kwargs['initial_variance'] = 1e9 + kwargs['loglikelihood_burn'] = 0 + super(Test_ar_no_enforce, cls).setup_class(6, *args, **kwargs) + # Reset loglikelihood burn, which gets automatically set to the number + # of states if enforce_stationarity = False + cls.model.ssm.loglikelihood_burn = 0 + + def test_init_keys_replicate(self): + mod1 = self.model + + kwargs = self.model._get_init_kwds() + endog = mod1.data.orig_endog + exog = mod1.data.orig_exog + + model2 = sarimax.SARIMAX(endog, exog, **kwargs) + # Fixes needed for edge case model + model2.ssm.initialization = mod1.ssm.initialization + + res1 = self.model.filter(self.true_params) + res2 = model2.filter(self.true_params) + rtol = 1e-6 if PLATFORM_WIN else 1e-13 + assert_allclose(res2.llf, res1.llf, rtol=rtol) + + +class Test_ar_exogenous(SARIMAXCoverageTest): + # // ARX + # arima wpi x, arima(3, 0, 0) noconstant vce(oim) + # save_results 8 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 0) + endog = results_sarimax.wpi1_data + kwargs['exog'] = (endog - np.floor(endog))**2 + super(Test_ar_exogenous, cls).setup_class(7, *args, **kwargs) + + +class Test_ar_exogenous_in_state(SARIMAXCoverageTest): + # // ARX + # arima wpi x, arima(3, 0, 0) noconstant vce(oim) + # save_results 8 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 0) + endog = results_sarimax.wpi1_data + kwargs['exog'] = (endog - np.floor(endog))**2 + kwargs['mle_regression'] = False + super(Test_ar_exogenous_in_state, cls).setup_class(7, *args, **kwargs) + cls.true_regression_coefficient = cls.true_params[0] + cls.true_params = cls.true_params[1:] + + def test_loglike(self): + # Regression in the state vector gives a different loglikelihood, so + # just check that it's approximately the same + self.result = self.model.filter(self.true_params) + + assert_allclose( + self.result.llf, + self.true_loglike, + atol=2 + ) + + def test_regression_coefficient(self): + # Test that the regression coefficient (estimated as the last filtered + # state estimate for the regression state) is the same as the Stata + # MLE state + self.result = self.model.filter(self.true_params) + + assert_allclose( + self.result.filter_results.filtered_state[3][-1], + self.true_regression_coefficient, + self.decimal + ) + + +class Test_ma(SARIMAXCoverageTest): + # // MA: (0, 0, q) x (0, 0, 0, 0) + # arima wpi, arima(0, 0, 3) noconstant vce(oim) + # save_results 9 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 3) + super(Test_ma, cls).setup_class(8, *args, **kwargs) + + +class Test_ma_as_polynomial(SARIMAXCoverageTest): + # // MA: (0, 0, q) x (0, 0, 0, 0) + # arima wpi, arima(0, 0, 3) noconstant vce(oim) + # save_results 9 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, [1, 1, 1]) + super(Test_ma_as_polynomial, cls).setup_class(8, *args, **kwargs) + + +class Test_ma_trend_c(SARIMAXCoverageTest): + # // 'c' + # arima wpi c, arima(0, 0, 3) noconstant vce(oim) + # save_results 10 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 3) + kwargs['trend'] = 'c' + super(Test_ma_trend_c, cls).setup_class(9, *args, **kwargs) + + +class Test_ma_trend_ct(SARIMAXCoverageTest): + # // 'ct' + # arima wpi c t, arima(0, 0, 3) noconstant vce(oim) + # save_results 11 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 3) + kwargs['trend'] = 'ct' + super(Test_ma_trend_ct, cls).setup_class(10, *args, **kwargs) + + +class Test_ma_trend_polynomial(SARIMAXCoverageTest): + # // polynomial [1, 0, 0, 1] + # arima wpi c t3, arima(0, 0, 3) noconstant vce(oim) + # save_results 12 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 3) + kwargs['trend'] = [1, 0, 0, 1] + super(Test_ma_trend_polynomial, cls).setup_class(11, *args, **kwargs) + + +class Test_ma_diff(SARIMAXCoverageTest): + # // MA and I(d): (0, d, q) x (0, 0, 0, 0) + # arima wpi, arima(0, 2, 3) noconstant vce(oim) + # save_results 13 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 2, 3) + super(Test_ma_diff, cls).setup_class(12, *args, **kwargs) + + +class Test_ma_seasonal_diff(SARIMAXCoverageTest): + # // MA and I(D): (p, 0, 0) x (0, D, 0, s) + # arima wpi, arima(0, 0, 3) sarima(0, 2, 0, 4) noconstant vce(oim) + # save_results 14 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 3) + kwargs['seasonal_order'] = (0, 2, 0, 4) + super(Test_ma_seasonal_diff, cls).setup_class(13, *args, **kwargs) + + +class Test_ma_diffuse(SARIMAXCoverageTest): + # // MA and diffuse initialization + # arima wpi, arima(0, 0, 3) noconstant vce(oim) diffuse + # save_results 15 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 3) + kwargs['initialization'] = 'approximate_diffuse' + kwargs['initial_variance'] = 1e9 + super(Test_ma_diffuse, cls).setup_class(14, *args, **kwargs) + + +class Test_ma_exogenous(SARIMAXCoverageTest): + # // MAX + # arima wpi x, arima(0, 0, 3) noconstant vce(oim) + # save_results 16 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 3) + endog = results_sarimax.wpi1_data + kwargs['exog'] = (endog - np.floor(endog))**2 + super(Test_ma_exogenous, cls).setup_class(15, *args, **kwargs) + + +class Test_arma(SARIMAXCoverageTest): + # // ARMA: (p, 0, q) x (0, 0, 0, 0) + # arima wpi, arima(3, 0, 3) noconstant vce(oim) + # save_results 17 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 3) + super(Test_arma, cls).setup_class(16, *args, **kwargs) + + +class Test_arma_trend_c(SARIMAXCoverageTest): + # // 'c' + # arima wpi c, arima(3, 0, 2) noconstant vce(oim) + # save_results 18 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 2) + kwargs['trend'] = 'c' + super(Test_arma_trend_c, cls).setup_class(17, *args, **kwargs) + + # Modify true params to convert from mean to intercept form + tps = cls.true_params + cls.true_params[:1] = (1 - tps[1:4].sum()) * tps[:1] + + +class Test_arma_trend_ct(SARIMAXCoverageTest): + # // 'ct' + # arima wpi c t, arima(3, 0, 2) noconstant vce(oim) + # save_results 19 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 2) + kwargs['trend'] = 'ct' + super(Test_arma_trend_ct, cls).setup_class(18, *args, **kwargs) + + # Modify true params to convert from mean to intercept form + tps = cls.true_params + cls.true_params[:2] = (1 - tps[2:5].sum()) * tps[:2] + + +class Test_arma_trend_polynomial(SARIMAXCoverageTest): + # // polynomial [1, 0, 0, 1] + # arima wpi c t3, arima(3, 0, 2) noconstant vce(oim) + # save_results 20 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 2) + kwargs['trend'] = [1, 0, 0, 1] + super(Test_arma_trend_polynomial, cls).setup_class(19, *args, **kwargs) + + # Modify true params to convert from mean to intercept form + tps = cls.true_params + cls.true_params[:2] = (1 - tps[2:5].sum()) * tps[:2] + + +class Test_arma_diff(SARIMAXCoverageTest): + # // ARMA and I(d): (p, d, q) x (0, 0, 0, 0) + # arima wpi, arima(3, 2, 2) noconstant vce(oim) + # save_results 21 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 2, 2) + super(Test_arma_diff, cls).setup_class(20, *args, **kwargs) + + +class Test_arma_seasonal_diff(SARIMAXCoverageTest): + # // ARMA and I(D): (p, 0, q) x (0, D, 0, s) + # arima wpi, arima(3, 0, 2) sarima(0, 2, 0, 4) noconstant vce(oim) + # save_results 22 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 2) + kwargs['seasonal_order'] = (0, 2, 0, 4) + super(Test_arma_seasonal_diff, cls).setup_class(21, *args, **kwargs) + + +class Test_arma_diff_seasonal_diff(SARIMAXCoverageTest): + # // ARMA and I(d) and I(D): (p, d, q) x (0, D, 0, s) + # arima wpi, arima(3, 2, 2) sarima(0, 2, 0, 4) noconstant vce(oim) + # save_results 23 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 2, 2) + kwargs['seasonal_order'] = (0, 2, 0, 4) + super(Test_arma_diff_seasonal_diff, cls).setup_class( + 22, *args, **kwargs) + + +class Test_arma_diffuse(SARIMAXCoverageTest): + # // ARMA and diffuse initialization + # arima wpi, arima(3, 0, 2) noconstant vce(oim) diffuse + # save_results 24 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 2) + kwargs['initialization'] = 'approximate_diffuse' + kwargs['initial_variance'] = 1e9 + super(Test_arma_diffuse, cls).setup_class(23, *args, **kwargs) + + +class Test_arma_exogenous(SARIMAXCoverageTest): + # // ARMAX + # arima wpi x, arima(3, 0, 2) noconstant vce(oim) + # save_results 25 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 0, 2) + endog = results_sarimax.wpi1_data + kwargs['exog'] = (endog - np.floor(endog))**2 + super(Test_arma_exogenous, cls).setup_class(24, *args, **kwargs) + + +class Test_seasonal_ar(SARIMAXCoverageTest): + # // SAR: (0, 0, 0) x (P, 0, 0, s) + # arima wpi, sarima(3, 0, 0, 4) noconstant vce(oim) + # save_results 26 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (3, 0, 0, 4) + super(Test_seasonal_ar, cls).setup_class(25, *args, **kwargs) + + +class Test_seasonal_ar_as_polynomial(SARIMAXCoverageTest): + # // SAR: (0, 0, 0) x (P, 0, 0, s) + # arima wpi, sarima(3, 0, 0, 4) noconstant vce(oim) + # save_results 26 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = ([1, 1, 1], 0, 0, 4) + super(Test_seasonal_ar_as_polynomial, cls).setup_class( + 25, *args, **kwargs) + + +class Test_seasonal_ar_trend_c(SARIMAXCoverageTest): + # // 'c' + # arima wpi c, sarima(3, 0, 0, 4) noconstant vce(oim) + # save_results 27 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (3, 0, 0, 4) + kwargs['trend'] = 'c' + super(Test_seasonal_ar_trend_c, cls).setup_class(26, *args, **kwargs) + + # Modify true params to convert from mean to intercept form + tps = cls.true_params + cls.true_params[:1] = (1 - tps[1:4].sum()) * tps[:1] + + +class Test_seasonal_ar_trend_ct(SARIMAXCoverageTest): + # // 'ct' + # arima wpi c t, sarima(3, 0, 0, 4) noconstant vce(oim) + # save_results 28 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (3, 0, 0, 4) + kwargs['trend'] = 'ct' + super(Test_seasonal_ar_trend_ct, cls).setup_class(27, *args, **kwargs) + # Modify true params to convert from mean to intercept form + tps = cls.true_params + cls.true_params[:2] = (1 - tps[2:5].sum()) * tps[:2] + + +class Test_seasonal_ar_trend_polynomial(SARIMAXCoverageTest): + # // polynomial [1, 0, 0, 1] + # arima wpi c t3, sarima(3, 0, 0, 4) noconstant vce(oim) + # save_results 29 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (3, 0, 0, 4) + kwargs['trend'] = [1, 0, 0, 1] + super(Test_seasonal_ar_trend_polynomial, cls).setup_class( + 28, *args, **kwargs) + + # Modify true params to convert from mean to intercept form + tps = cls.true_params + cls.true_params[:2] = (1 - tps[2:5].sum()) * tps[:2] + + +class Test_seasonal_ar_diff(SARIMAXCoverageTest): + # // SAR and I(d): (0, d, 0) x (P, 0, 0, s) + # arima wpi, arima(0, 2, 0) sarima(3, 0, 0, 4) noconstant vce(oim) + # save_results 30 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 2, 0) + kwargs['seasonal_order'] = (3, 0, 0, 4) + super(Test_seasonal_ar_diff, cls).setup_class(29, *args, **kwargs) + + +class Test_seasonal_ar_seasonal_diff(SARIMAXCoverageTest): + # // SAR and I(D): (0, 0, 0) x (P, D, 0, s) + # arima wpi, sarima(3, 2, 0, 4) noconstant vce(oim) + # save_results 31 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (3, 2, 0, 4) + super(Test_seasonal_ar_seasonal_diff, cls).setup_class( + 30, *args, **kwargs) + + +class Test_seasonal_ar_diffuse(SARIMAXCoverageTest): + # // SAR and diffuse initialization + # arima wpi, sarima(3, 0, 0, 4) noconstant vce(oim) diffuse + # save_results 32 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (3, 0, 0, 4) + kwargs['initialization'] = 'approximate_diffuse' + kwargs['initial_variance'] = 1e9 + super(Test_seasonal_ar_diffuse, cls).setup_class(31, *args, **kwargs) + + +class Test_seasonal_ar_exogenous(SARIMAXCoverageTest): + # // SARX + # arima wpi x, sarima(3, 0, 0, 4) noconstant vce(oim) + # save_results 33 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (3, 0, 0, 4) + endog = results_sarimax.wpi1_data + kwargs['exog'] = (endog - np.floor(endog))**2 + super(Test_seasonal_ar_exogenous, cls).setup_class(32, *args, **kwargs) + + +class Test_seasonal_ma(SARIMAXCoverageTest): + # // SMA + # arima wpi, sarima(0, 0, 3, 4) noconstant vce(oim) + # save_results 34 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (0, 0, 3, 4) + super(Test_seasonal_ma, cls).setup_class(33, *args, **kwargs) + + +class Test_seasonal_ma_as_polynomial(SARIMAXCoverageTest): + # // SMA + # arima wpi, sarima(0, 0, 3, 4) noconstant vce(oim) + # save_results 34 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (0, 0, [1, 1, 1], 4) + super(Test_seasonal_ma_as_polynomial, cls).setup_class( + 33, *args, **kwargs) + + +class Test_seasonal_ma_trend_c(SARIMAXCoverageTest): + # // 'c' + # arima wpi c, sarima(0, 0, 3, 4) noconstant vce(oim) + # save_results 35 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (0, 0, 3, 4) + kwargs['trend'] = 'c' + kwargs['decimal'] = 3 + super(Test_seasonal_ma_trend_c, cls).setup_class(34, *args, **kwargs) + + +class Test_seasonal_ma_trend_ct(SARIMAXCoverageTest): + # // 'ct' + # arima wpi c t, sarima(0, 0, 3, 4) noconstant vce(oim) + # save_results 36 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (0, 0, 3, 4) + kwargs['trend'] = 'ct' + super(Test_seasonal_ma_trend_ct, cls).setup_class(35, *args, **kwargs) + + +class Test_seasonal_ma_trend_polynomial(SARIMAXCoverageTest): + # // polynomial [1, 0, 0, 1] + # arima wpi c t3, sarima(0, 0, 3, 4) noconstant vce(oim) + # save_results 37 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (0, 0, 3, 4) + kwargs['trend'] = [1, 0, 0, 1] + kwargs['decimal'] = 3 + super(Test_seasonal_ma_trend_polynomial, cls).setup_class( + 36, *args, **kwargs) + + +class Test_seasonal_ma_diff(SARIMAXCoverageTest): + # // SMA and I(d): (0, d, 0) x (0, 0, Q, s) + # arima wpi, arima(0, 2, 0) sarima(0, 0, 3, 4) noconstant vce(oim) + # save_results 38 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 2, 0) + kwargs['seasonal_order'] = (0, 0, 3, 4) + super(Test_seasonal_ma_diff, cls).setup_class(37, *args, **kwargs) + + +class Test_seasonal_ma_seasonal_diff(SARIMAXCoverageTest): + # // SMA and I(D): (0, 0, 0) x (0, D, Q, s) + # arima wpi, sarima(0, 2, 3, 4) noconstant vce(oim) + # save_results 39 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (0, 2, 3, 4) + super(Test_seasonal_ma_seasonal_diff, cls).setup_class( + 38, *args, **kwargs) + + +class Test_seasonal_ma_diffuse(SARIMAXCoverageTest): + # // SMA and diffuse initialization + # arima wpi, sarima(0, 0, 3, 4) noconstant vce(oim) diffuse + # save_results 40 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (0, 0, 3, 4) + kwargs['initialization'] = 'approximate_diffuse' + kwargs['initial_variance'] = 1e9 + super(Test_seasonal_ma_diffuse, cls).setup_class(39, *args, **kwargs) + + +class Test_seasonal_ma_exogenous(SARIMAXCoverageTest): + # // SMAX + # arima wpi x, sarima(0, 0, 3, 4) noconstant vce(oim) + # save_results 41 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (0, 0, 3, 4) + endog = results_sarimax.wpi1_data + kwargs['exog'] = (endog - np.floor(endog))**2 + super(Test_seasonal_ma_exogenous, cls).setup_class(40, *args, **kwargs) + + +class Test_seasonal_arma(SARIMAXCoverageTest): + # // SARMA: (0, 0, 0) x (P, 0, Q, s) + # arima wpi, sarima(3, 0, 2, 4) noconstant vce(oim) + # save_results 42 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (3, 0, 2, 4) + super(Test_seasonal_arma, cls).setup_class(41, *args, **kwargs) + + +class Test_seasonal_arma_trend_c(SARIMAXCoverageTest): + # // 'c' + # arima wpi c, sarima(3, 0, 2, 4) noconstant vce(oim) + # save_results 43 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (3, 0, 2, 4) + kwargs['trend'] = 'c' + super(Test_seasonal_arma_trend_c, cls).setup_class(42, *args, **kwargs) + + # Modify true params to convert from mean to intercept form + tps = cls.true_params + cls.true_params[:1] = (1 - tps[1:4].sum()) * tps[:1] + + +class Test_seasonal_arma_trend_ct(SARIMAXCoverageTest): + # // 'ct' + # arima wpi c t, sarima(3, 0, 2, 4) noconstant vce(oim) + # save_results 44 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (3, 0, 2, 4) + kwargs['trend'] = 'ct' + super(Test_seasonal_arma_trend_ct, cls).setup_class( + 43, *args, **kwargs) + + # Modify true params to convert from mean to intercept form + tps = cls.true_params + cls.true_params[:2] = (1 - tps[2:5].sum()) * tps[:2] + + +class Test_seasonal_arma_trend_polynomial(SARIMAXCoverageTest): + # // polynomial [1, 0, 0, 1] + # arima wpi c t3, sarima(3, 0, 2, 4) noconstant vce(oim) + # save_results 45 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (3, 0, 2, 4) + kwargs['trend'] = [1, 0, 0, 1] + kwargs['decimal'] = 3 + super(Test_seasonal_arma_trend_polynomial, cls).setup_class( + 44, *args, **kwargs) + + # Modify true params to convert from mean to intercept form + tps = cls.true_params + cls.true_params[:2] = (1 - tps[2:5].sum()) * tps[:2] + + def test_results(self): + self.result = self.model.filter(self.true_params) + + # Just make sure that no exceptions are thrown during summary + self.result.summary() + + # Make sure no expections are thrown calculating any of the + # covariance matrix types + self.result.cov_params_default + # Known failure due to the complex step inducing non-stationary + # parameters, causing a failure in the solve_discrete_lyapunov call + # self.result.cov_params_approx + self.result.cov_params_oim + self.result.cov_params_opg + + +class Test_seasonal_arma_diff(SARIMAXCoverageTest): + # // SARMA and I(d): (0, d, 0) x (P, 0, Q, s) + # arima wpi, arima(0, 2, 0) sarima(3, 0, 2, 4) noconstant vce(oim) + # save_results 46 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 2, 0) + kwargs['seasonal_order'] = (3, 0, 2, 4) + super(Test_seasonal_arma_diff, cls).setup_class(45, *args, **kwargs) + + +class Test_seasonal_arma_seasonal_diff(SARIMAXCoverageTest): + # // SARMA and I(D): (0, 0, 0) x (P, D, Q, s) + # arima wpi, sarima(3, 2, 2, 4) noconstant vce(oim) + # save_results 47 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (3, 2, 2, 4) + super(Test_seasonal_arma_seasonal_diff, cls).setup_class( + 46, *args, **kwargs) + + +class Test_seasonal_arma_diff_seasonal_diff(SARIMAXCoverageTest): + # // SARMA and I(d) and I(D): (0, d, 0) x (P, D, Q, s) + # arima wpi, arima(0, 2, 0) sarima(3, 2, 2, 4) noconstant vce(oim) + # save_results 48 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 2, 0) + kwargs['seasonal_order'] = (3, 2, 2, 4) + super(Test_seasonal_arma_diff_seasonal_diff, cls).setup_class( + 47, *args, **kwargs) + + def test_results(self): + self.result = self.model.filter(self.true_params) + + # Just make sure that no exceptions are thrown during summary + self.result.summary() + + # Make sure no expections are thrown calculating any of the + # covariance matrix types + self.result.cov_params_default + # Known failure due to the complex step inducing non-stationary + # parameters, causing a failure in the solve_discrete_lyapunov call + # self.result.cov_params_approx + self.result.cov_params_oim + self.result.cov_params_opg + + +class Test_seasonal_arma_diffuse(SARIMAXCoverageTest): + # // SARMA and diffuse initialization + # arima wpi, sarima(3, 0, 2, 4) noconstant vce(oim) diffuse + # save_results 49 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (3, 0, 2, 4) + kwargs['decimal'] = 3 + kwargs['initialization'] = 'approximate_diffuse' + kwargs['initial_variance'] = 1e9 + super(Test_seasonal_arma_diffuse, cls).setup_class(48, *args, **kwargs) + + +class Test_seasonal_arma_exogenous(SARIMAXCoverageTest): + # // SARMAX + # arima wpi x, sarima(3, 0, 2, 4) noconstant vce(oim) + # save_results 50 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (0, 0, 0) + kwargs['seasonal_order'] = (3, 0, 2, 4) + endog = results_sarimax.wpi1_data + kwargs['exog'] = (endog - np.floor(endog))**2 + super(Test_seasonal_arma_exogenous, cls).setup_class( + 49, *args, **kwargs) + + +class Test_sarimax_exogenous(SARIMAXCoverageTest): + # // SARIMAX and exogenous + # arima wpi x, arima(3, 2, 2) sarima(3, 2, 2, 4) noconstant vce(oim) + # save_results 51 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 2, 2) + kwargs['seasonal_order'] = (3, 2, 2, 4) + endog = results_sarimax.wpi1_data + kwargs['exog'] = (endog - np.floor(endog))**2 + super(Test_sarimax_exogenous, cls).setup_class(50, *args, **kwargs) + + def test_results_params(self): + result = self.model.filter(self.true_params) + assert_allclose(self.true_params[1:4], result.arparams) + assert_allclose(self.true_params[4:6], result.maparams) + assert_allclose(self.true_params[6:9], result.seasonalarparams) + assert_allclose(self.true_params[9:11], result.seasonalmaparams) + + +class Test_sarimax_exogenous_not_hamilton(SARIMAXCoverageTest): + # // SARIMAX and exogenous + # arima wpi x, arima(3, 2, 2) sarima(3, 2, 2, 4) noconstant vce(oim) + # save_results 51 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 2, 2) + kwargs['seasonal_order'] = (3, 2, 2, 4) + endog = results_sarimax.wpi1_data + kwargs['exog'] = (endog - np.floor(endog))**2 + kwargs['hamilton_representation'] = False + kwargs['simple_differencing'] = False + super(Test_sarimax_exogenous_not_hamilton, cls).setup_class( + 50, *args, **kwargs) + + +class Test_sarimax_exogenous_diffuse(SARIMAXCoverageTest): + # // SARIMAX and exogenous diffuse + # arima wpi x, arima(3, 2, 2) sarima(3, 2, 2, 4) noconstant vce(oim) + # diffuse + # save_results 52 + @classmethod + def setup_class(cls, *args, **kwargs): + kwargs['order'] = (3, 2, 2) + kwargs['seasonal_order'] = (3, 2, 2, 4) + endog = results_sarimax.wpi1_data + kwargs['exog'] = (endog - np.floor(endog))**2 + kwargs['decimal'] = 2 + kwargs['initialization'] = 'approximate_diffuse' + kwargs['initial_variance'] = 1e9 + super(Test_sarimax_exogenous_diffuse, cls).setup_class( + 51, *args, **kwargs) + + +class Test_arma_exog_trend_polynomial_missing(SARIMAXCoverageTest): + # // ARMA and exogenous and trend polynomial and missing + # gen wpi2 = wpi + # replace wpi2 = . in 10/19 + # arima wpi2 x c t3, arima(3, 0, 2) noconstant vce(oim) + # save_results 53 + @classmethod + def setup_class(cls, *args, **kwargs): + endog = np.r_[results_sarimax.wpi1_data] + # Note we're using the non-missing exog data + kwargs['exog'] = ((endog - np.floor(endog))**2)[1:] + endog[9:19] = np.nan + endog = endog[1:] - endog[:-1] + endog[9] = np.nan + kwargs['order'] = (3, 0, 2) + kwargs['trend'] = [0, 0, 0, 1] + kwargs['decimal'] = 1 + super(Test_arma_exog_trend_polynomial_missing, cls).setup_class( + 52, endog=endog, *args, **kwargs) + + # Modify true params to convert from mean to intercept form + tps = cls.true_params + cls.true_params[0] = (1 - tps[2:5].sum()) * tps[0] + + +# Miscellaneous coverage tests +def test_simple_time_varying(): + # This tests time-varying parameters regression when in fact the parameters + # are not time-varying, and in fact the regression fit is perfect + endog = np.arange(100)*1.0 + exog = 2*endog + mod = sarimax.SARIMAX( + endog, + exog=exog, + order=(0, 0, 0), + time_varying_regression=True, + mle_regression=False) + + # Ignore the warning that MLE doesn't converge + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + res = mod.fit(disp=-1) + + # Test that the estimated variances of the errors are essentially zero + # 5 digits necessary to accommodate 32-bit numpy/scipy with OpenBLAS 0.2.18 + assert_almost_equal(res.params, [0, 0], 5) + + # Test that the time-varying coefficients are all 0.5 (except the first + # one) + assert_almost_equal(res.filter_results.filtered_state[0][1:], [0.5]*99, 9) + + +def test_invalid_time_varying(): + assert_raises( + ValueError, + sarimax.SARIMAX, + endog=[1, 2, 3], + mle_regression=True, + time_varying_regression=True) + + +def test_manual_stationary_initialization(): + endog = results_sarimax.wpi1_data + + # Create the first model to compare against + mod1 = sarimax.SARIMAX(endog, order=(3, 0, 0)) + res1 = mod1.filter([0.5, 0.2, 0.1, 1]) + + # Create a second model with "known" initialization + mod2 = sarimax.SARIMAX(endog, order=(3, 0, 0)) + mod2.ssm.initialize_known(res1.filter_results.initial_state, + res1.filter_results.initial_state_cov) + res2 = mod2.filter([0.5, 0.2, 0.1, 1]) + + # Create a third model with "known" initialization, but specified in kwargs + mod3 = sarimax.SARIMAX( + endog, order=(3, 0, 0), + initialization='known', + initial_state=res1.filter_results.initial_state, + initial_state_cov=res1.filter_results.initial_state_cov) + res3 = mod3.filter([0.5, 0.2, 0.1, 1]) + + # Create the forth model with stationary initialization specified in kwargs + mod4 = sarimax.SARIMAX(endog, order=(3, 0, 0), initialization='stationary') + res4 = mod4.filter([0.5, 0.2, 0.1, 1]) + + # Just test a couple of things to make sure the results are the same + assert_almost_equal(res1.llf, res2.llf) + assert_almost_equal(res1.filter_results.filtered_state, + res2.filter_results.filtered_state) + + assert_almost_equal(res1.llf, res3.llf) + assert_almost_equal(res1.filter_results.filtered_state, + res3.filter_results.filtered_state) + + assert_almost_equal(res1.llf, res4.llf) + assert_almost_equal(res1.filter_results.filtered_state, + res4.filter_results.filtered_state) + + +def test_manual_approximate_diffuse_initialization(): + endog = results_sarimax.wpi1_data + + # Create the first model to compare against + mod1 = sarimax.SARIMAX(endog, order=(3, 0, 0)) + mod1.ssm.initialize_approximate_diffuse(1e9) + res1 = mod1.filter([0.5, 0.2, 0.1, 1]) + + # Create a second model with "known" initialization + mod2 = sarimax.SARIMAX(endog, order=(3, 0, 0)) + mod2.ssm.initialize_known(res1.filter_results.initial_state, + res1.filter_results.initial_state_cov) + res2 = mod2.filter([0.5, 0.2, 0.1, 1]) + + # Create a third model with "known" initialization, but specified in kwargs + mod3 = sarimax.SARIMAX( + endog, order=(3, 0, 0), + initialization='known', + initial_state=res1.filter_results.initial_state, + initial_state_cov=res1.filter_results.initial_state_cov) + res3 = mod3.filter([0.5, 0.2, 0.1, 1]) + + # Create the forth model with approximate diffuse initialization specified + # in kwargs + mod4 = sarimax.SARIMAX(endog, order=(3, 0, 0), + initialization='approximate_diffuse', + initial_variance=1e9) + res4 = mod4.filter([0.5, 0.2, 0.1, 1]) + + # Just test a couple of things to make sure the results are the same + assert_almost_equal(res1.llf, res2.llf) + assert_almost_equal(res1.filter_results.filtered_state, + res2.filter_results.filtered_state) + + assert_almost_equal(res1.llf, res3.llf) + assert_almost_equal(res1.filter_results.filtered_state, + res3.filter_results.filtered_state) + + assert_almost_equal(res1.llf, res4.llf) + assert_almost_equal(res1.filter_results.filtered_state, + res4.filter_results.filtered_state) + + +def test_results(): + endog = results_sarimax.wpi1_data + + mod = sarimax.SARIMAX(endog, order=(1, 0, 1)) + res = mod.filter([0.5, -0.5, 1], cov_type='oim') + + assert_almost_equal(res.arroots, 2.) + assert_almost_equal(res.maroots, 2.) + + assert_almost_equal(res.arfreq, np.arctan2(0, 2) / (2*np.pi)) + assert_almost_equal(res.mafreq, np.arctan2(0, 2) / (2*np.pi)) + + assert_almost_equal(res.arparams, [0.5]) + assert_almost_equal(res.maparams, [-0.5]) + + +def test_misc_exog(): + # Tests for missing data + nobs = 20 + k_endog = 1 + np.random.seed(1208) + endog = np.random.normal(size=(nobs, k_endog)) + endog[:4, 0] = np.nan + exog1 = np.random.normal(size=(nobs, 1)) + exog2 = np.random.normal(size=(nobs, 2)) + + index = pd.date_range('1970-01-01', freq='QS', periods=nobs) + endog_pd = pd.DataFrame(endog, index=index) + exog1_pd = pd.Series(exog1.squeeze(), index=index) + exog2_pd = pd.DataFrame(exog2, index=index) + + models = [ + sarimax.SARIMAX(endog, exog=exog1, order=(1, 1, 0)), + sarimax.SARIMAX(endog, exog=exog2, order=(1, 1, 0)), + sarimax.SARIMAX(endog, exog=exog2, order=(1, 1, 0), + simple_differencing=False), + sarimax.SARIMAX(endog_pd, exog=exog1_pd, order=(1, 1, 0)), + sarimax.SARIMAX(endog_pd, exog=exog2_pd, order=(1, 1, 0)), + sarimax.SARIMAX(endog_pd, exog=exog2_pd, order=(1, 1, 0), + simple_differencing=False), + ] + + for mod in models: + # Smoke tests + mod.start_params + res = mod.fit(disp=False) + res.summary() + res.predict() + res.predict(dynamic=True) + res.get_prediction() + + oos_exog = np.random.normal(size=(1, mod.k_exog)) + res.forecast(steps=1, exog=oos_exog) + res.get_forecast(steps=1, exog=oos_exog) + + # Smoke tests for invalid exog + oos_exog = np.random.normal(size=(1)) + assert_raises(ValueError, res.forecast, steps=1, exog=oos_exog) + + oos_exog = np.random.normal(size=(2, mod.k_exog)) + assert_raises(ValueError, res.forecast, steps=1, exog=oos_exog) + + oos_exog = np.random.normal(size=(1, mod.k_exog + 1)) + assert_raises(ValueError, res.forecast, steps=1, exog=oos_exog) + + # Test invalid model specifications + assert_raises(ValueError, sarimax.SARIMAX, endog, exog=np.zeros((10, 4)), + order=(1, 1, 0)) + + +@pytest.mark.smoke +def test_datasets(): + # Test that some unusual types of datasets work + + np.random.seed(232849) + endog = np.random.binomial(1, 0.5, size=100) + exog = np.random.binomial(1, 0.5, size=100) + mod = sarimax.SARIMAX(endog, exog=exog, order=(1, 0, 0)) + mod.fit(disp=-1) + + +def test_predict_custom_index(): + np.random.seed(328423) + endog = pd.DataFrame(np.random.normal(size=50)) + mod = sarimax.SARIMAX(endog, order=(1, 0, 0)) + res = mod.smooth(mod.start_params) + out = res.predict(start=1, end=1, index=['a']) + assert_equal(out.index.equals(pd.Index(['a'])), True) + + +def test_arima000(): + # Test an ARIMA(0, 0, 0) with measurement error model (i.e. just estimating + # a variance term) + np.random.seed(328423) + nobs = 50 + endog = pd.DataFrame(np.random.normal(size=nobs)) + mod = sarimax.SARIMAX(endog, order=(0, 0, 0), measurement_error=False) + res = mod.smooth(mod.start_params) + assert_allclose(res.smoothed_state, endog.T) + + # ARIMA(0, 1, 0) + mod = sarimax.SARIMAX(endog, order=(0, 1, 0), measurement_error=False) + res = mod.smooth(mod.start_params) + assert_allclose(res.smoothed_state[1:, 1:], endog.diff()[1:].T) + + # SARIMA(0, 1, 0)x(0, 1, 0, 1) + mod = sarimax.SARIMAX(endog, order=(0, 1, 0), measurement_error=True, + seasonal_order=(0, 1, 0, 1)) + res = mod.smooth(mod.start_params) + + # Exogenous variables + error = np.random.normal(size=nobs) + endog = np.ones(nobs) * 10 + error + exog = np.ones(nobs) + + # OLS + mod = sarimax.SARIMAX(endog, order=(0, 0, 0), exog=exog) + mod.ssm.filter_univariate = True + res = mod.smooth([10., 1.]) + assert_allclose(res.smoothed_state[0], error, atol=1e-10) + + # RLS + mod = sarimax.SARIMAX(endog, order=(0, 0, 0), exog=exog, + mle_regression=False) + mod.ssm.filter_univariate = True + mod.initialize_known([0., 10.], np.diag([1., 0.])) + res = mod.smooth([1.]) + assert_allclose(res.smoothed_state[0], error, atol=1e-10) + assert_allclose(res.smoothed_state[1], 10, atol=1e-10) + + # RLS + TVP + mod = sarimax.SARIMAX(endog, order=(0, 0, 0), exog=exog, + mle_regression=False, time_varying_regression=True) + mod.ssm.filter_univariate = True + mod.initialize_known([10.], np.diag([0.])) + res = mod.smooth([0., 1.]) + assert_allclose(res.smoothed_state[0], 10, atol=1e-10) + + +def check_concentrated_scale(filter_univariate=False): + # Test that concentrating the scale out of the likelihood function works + endog = np.diff(results_sarimax.wpi1_data) + + orders = [(1, 0, 0), (2, 2, 2)] + seasonal_orders = [(0, 0, 0, 0), (1, 1, 1, 4)] + + simple_differencings = [True, False] + exogs = [None, np.ones_like(endog)] + trends = [None, 't'] + # Disabled, see discussion below in setting k_snr for details + time_varying_regressions = [True, False] + measurement_errors = [True, False] + + import itertools + names = ['exog', 'order', 'seasonal_order', 'trend', 'measurement_error', + 'time_varying_regression', 'simple_differencing'] + for element in itertools.product(exogs, orders, seasonal_orders, trends, + measurement_errors, + time_varying_regressions, + simple_differencings): + kwargs = dict(zip(names, element)) + if kwargs.get('time_varying_regression', False): + kwargs['mle_regression'] = False + + # Sometimes we can have slight differences if the Kalman filters + # converge at different observations, so disable convergence. + kwargs['tolerance'] = 0 + + mod_orig = sarimax.SARIMAX(endog, **kwargs) + mod_conc = sarimax.SARIMAX(endog, concentrate_scale=True, **kwargs) + + mod_orig.ssm.filter_univariate = filter_univariate + mod_conc.ssm.filter_univariate = filter_univariate + + # The base parameters are the starting parameters from the concentrated + # model + conc_params = mod_conc.start_params + res_conc = mod_conc.smooth(conc_params) + + # We need to map the concentrated parameters to the non-concentrated + # model + # The first thing is to add an additional parameter for the scale + # (here set to 1 because we will multiply by res_conc.scale below, but + # because the scale is factored out of the entire obs_cov and state_cov + # matrices we may need to multiply more parameters by res_conc.scale + # also) + orig_params = np.r_[conc_params, 1] + k_snr = 1 + + # If we have time-varying regressions, then in the concentrated model + # we actually are computing signal-to-noise ratios, and we + # need to multiply it by the scale to get the variances + # the non-concentrated model will expect as parameters + if kwargs['time_varying_regression'] and kwargs['exog'] is not None: + k_snr += 1 + # Note: the log-likelihood isn't exactly the same between concentrated + # and non-concentrated models with time-varying regression, so this + # combinations raises NotImplementedError. + + # If we have measurement error, then in the concentrated model + # we actually are computing the signal-to-noise ratio, and we + # need to multiply it by the scale to get the measurement error + # variance that the non-concentrated model will expect as a + # parameter + if kwargs['measurement_error']: + k_snr += 1 + + atol = 1e-5 + if kwargs['measurement_error'] or kwargs['time_varying_regression']: + atol = 1e-3 + + orig_params = np.r_[orig_params[:-k_snr], + res_conc.scale * orig_params[-k_snr:]] + res_orig = mod_orig.smooth(orig_params) + + # Test loglike + # Need to reduce the tolerance when we have measurement error. + assert_allclose(res_conc.llf, res_orig.llf, atol=atol) + + # Test state space representation matrices + for name in mod_conc.ssm.shapes: + if name == 'obs': + continue + assert_allclose(getattr(res_conc.filter_results, name), + getattr(res_orig.filter_results, name)) + + # Test filter / smoother output + d = res_conc.loglikelihood_burn + + filter_attr = ['predicted_state', 'filtered_state', 'forecasts', + 'forecasts_error', 'kalman_gain'] + + for name in filter_attr: + actual = getattr(res_conc.filter_results, name) + desired = getattr(res_orig.filter_results, name) + assert_allclose(actual, desired, atol=atol) + + # Note: don't want to compare the elements from any diffuse + # initialization for things like covariances, so only compare for + # periods past the loglikelihood_burn period + filter_attr_burn = ['llf_obs', 'standardized_forecasts_error', + 'predicted_state_cov', 'filtered_state_cov', + 'tmp1', 'tmp2', 'tmp3', 'tmp4'] + # Also need to ignore covariances of states with diffuse initialization + # when time_varying_regression is True + diffuse_mask = (res_orig.filter_results.initial_state_cov.diagonal() == + mod_orig.ssm.initial_variance) + ix = np.s_[~diffuse_mask, ~diffuse_mask, :] + + for name in filter_attr_burn: + actual = getattr(res_conc.filter_results, name)[..., d:] + desired = getattr(res_orig.filter_results, name)[..., d:] + # Note: Cannot compare predicted or filtered cov for the time + # varying regression state due to effects of approximate diffuse + # initialization + if (name in ['predicted_state_cov', 'filtered_state_cov'] and + kwargs['time_varying_regression']): + assert_allclose(actual[ix], desired[ix], atol=atol) + else: + assert_allclose(actual, desired, atol=atol) + + smoothed_attr = ['smoothed_state', 'smoothed_state_cov', + 'smoothed_state_autocov', + 'smoothed_state_disturbance', + 'smoothed_state_disturbance_cov', + 'smoothed_measurement_disturbance', + 'smoothed_measurement_disturbance_cov', + 'scaled_smoothed_estimator', + 'scaled_smoothed_estimator_cov', 'smoothing_error', + 'smoothed_forecasts', 'smoothed_forecasts_error', + 'smoothed_forecasts_error_cov'] + + for name in smoothed_attr: + actual = getattr(res_conc.filter_results, name)[..., d:] + desired = getattr(res_orig.filter_results, name)[..., d:] + if (name in ['smoothed_state_cov', 'smoothed_state_autocov'] and + kwargs['time_varying_regression']): + assert_allclose(actual[ix], desired[ix], atol=atol) + else: + assert_allclose(actual, desired, atol=atol) + + # Test non-covariance-matrix MLEResults output + output = ['aic', 'bic', 'hqic', 'loglikelihood_burn'] + for name in output: + actual = getattr(res_conc, name) + desired = getattr(res_orig, name) + assert_allclose(actual, desired, atol=atol) + + # Test diagnostic output + actual = res_conc.test_normality(method='jarquebera') + desired = res_orig.test_normality(method='jarquebera') + assert_allclose(actual, desired, rtol=1e-5, atol=atol) + + actual = res_conc.test_heteroskedasticity(method='breakvar') + desired = res_orig.test_heteroskedasticity(method='breakvar') + assert_allclose(actual, desired, rtol=1e-5, atol=atol) + + actual = res_conc.test_serial_correlation(method='ljungbox') + desired = res_orig.test_serial_correlation(method='ljungbox') + assert_allclose(actual, desired, rtol=1e-5, atol=atol) + + # Test predict + exog = None + if kwargs['exog'] is not None: + exog = np.ones((130 - mod_conc.nobs + 1, 1)) + actual = res_conc.get_prediction(start=100, end=130, dynamic=10, + exog=exog) + desired = res_orig.get_prediction(start=100, end=130, dynamic=10, + exog=exog) + assert_allclose(actual.predicted_mean, desired.predicted_mean, + atol=atol) + assert_allclose(actual.se_mean, desired.se_mean, atol=atol) + + # Test simulate + # Simulate is currently broken for time-varying models, so don't try + # to test it here + np.random.seed(13847) + if mod_conc.ssm.time_invariant: + measurement_shocks = np.random.normal(size=10) + state_shocks = np.random.normal(size=10) + initial_state = np.random.normal(size=(mod_conc.k_states, 1)) + actual = res_conc.simulate(10, measurement_shocks, state_shocks, + initial_state) + desired = res_orig.simulate(10, measurement_shocks, state_shocks, + initial_state) + assert_allclose(actual, desired, atol=atol) + + # Test impulse responses + if mod_conc.ssm.time_invariant: + actual = res_conc.impulse_responses(10) + desired = res_orig.impulse_responses(10) + assert_allclose(actual, desired, atol=atol) + + +@pytest.mark.slow +def test_concentrated_scale(): + check_concentrated_scale(filter_univariate=False) + check_concentrated_scale(filter_univariate=True) diff --git a/statsmodels/tsa/statespace/tests/test_save.py b/statsmodels/tsa/statespace/tests/test_save.py new file mode 100644 index 0000000..5dcd6dc --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_save.py @@ -0,0 +1,138 @@ +""" +Tests of save / load / remove_data state space functionality. +""" + +from __future__ import division, absolute_import, print_function +from statsmodels.compat import cPickle + +import tempfile +import os + +import pytest + +from statsmodels import datasets +from statsmodels.tsa.statespace import (sarimax, structural, varmax, + dynamic_factor) +from numpy.testing import assert_allclose +macrodata = datasets.macrodata.load_pandas().data + + +@pytest.fixture() +def temp_filename(): + fd, filename = tempfile.mkstemp() + yield filename + try: + os.close(fd) + os.unlink(filename) + except Exception: + print("Couldn't close or delete file " + "{filename}.".format(filename=filename)) + + +def test_sarimax(temp_filename): + mod = sarimax.SARIMAX(macrodata['realgdp'].values, order=(4, 1, 0)) + res = mod.smooth(mod.start_params) + res.summary() + res.save(temp_filename) + res2 = sarimax.SARIMAXResults.load(temp_filename) + assert_allclose(res.params, res2.params) + assert_allclose(res.bse, res2.bse) + assert_allclose(res.llf, res2.llf) + + +def test_sarimax_pickle(): + mod = sarimax.SARIMAX(macrodata['realgdp'].values, order=(4, 1, 0)) + pkl_mod = cPickle.loads(cPickle.dumps(mod)) + + res = mod.smooth(mod.start_params) + pkl_res = pkl_mod.smooth(mod.start_params) + + assert_allclose(res.params, pkl_res.params) + assert_allclose(res.bse, pkl_res.bse) + assert_allclose(res.llf, pkl_res.llf) + + +def test_structural(temp_filename): + mod = structural.UnobservedComponents( + macrodata['realgdp'].values, 'llevel') + res = mod.smooth(mod.start_params) + res.summary() + res.save(temp_filename) + res2 = structural.UnobservedComponentsResults.load(temp_filename) + assert_allclose(res.params, res2.params) + assert_allclose(res.bse, res2.bse) + assert_allclose(res.llf, res2.llf) + + +def test_structural_pickle(): + mod = structural.UnobservedComponents( + macrodata['realgdp'].values, 'llevel') + pkl_mod = cPickle.loads(cPickle.dumps(mod)) + + res = mod.smooth(mod.start_params) + pkl_res = pkl_mod.smooth(pkl_mod.start_params) + + assert_allclose(res.params, pkl_res.params) + assert_allclose(res.bse, pkl_res.bse) + assert_allclose(res.llf, pkl_res.llf) + + +def test_dynamic_factor(temp_filename): + mod = dynamic_factor.DynamicFactor( + macrodata[['realgdp', 'realcons']].diff().iloc[1:].values, k_factors=1, + factor_order=1) + res = mod.smooth(mod.start_params) + res.summary() + res.save(temp_filename) + res2 = dynamic_factor.DynamicFactorResults.load(temp_filename) + assert_allclose(res.params, res2.params) + assert_allclose(res.bse, res2.bse) + assert_allclose(res.llf, res2.llf) + + +def test_dynamic_factor_pickle(temp_filename): + mod = varmax.VARMAX( + macrodata[['realgdp', 'realcons']].diff().iloc[1:].values, + order=(1, 0)) + pkl_mod = cPickle.loads(cPickle.dumps(mod)) + + res = mod.smooth(mod.start_params) + pkl_res = pkl_mod.smooth(mod.start_params) + + assert_allclose(res.params, pkl_res.params) + assert_allclose(res.bse, pkl_res.bse) + assert_allclose(res.llf, pkl_res.llf) + + res.summary() + res.save(temp_filename) + res2 = varmax.VARMAXResults.load(temp_filename) + assert_allclose(res.params, res2.params) + assert_allclose(res.bse, res2.bse) + assert_allclose(res.llf, res2.llf) + + +def test_varmax(temp_filename): + mod = varmax.VARMAX( + macrodata[['realgdp', 'realcons']].diff().iloc[1:].values, + order=(1, 0)) + res = mod.smooth(mod.start_params) + res.summary() + res.save(temp_filename) + res2 = varmax.VARMAXResults.load(temp_filename) + assert_allclose(res.params, res2.params) + assert_allclose(res.bse, res2.bse) + assert_allclose(res.llf, res2.llf) + + +def test_varmax_pickle(temp_filename): + mod = varmax.VARMAX( + macrodata[['realgdp', 'realcons']].diff().iloc[1:].values, + order=(1, 0)) + res = mod.smooth(mod.start_params) + + res.summary() + res.save(temp_filename) + res2 = varmax.VARMAXResults.load(temp_filename) + assert_allclose(res.params, res2.params) + assert_allclose(res.bse, res2.bse) + assert_allclose(res.llf, res2.llf) diff --git a/statsmodels/tsa/statespace/tests/test_simulate.py b/statsmodels/tsa/statespace/tests/test_simulate.py new file mode 100644 index 0000000..8145bbc --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_simulate.py @@ -0,0 +1,558 @@ +""" +Tests for simulation of time series + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +from statsmodels.compat import PY3 + +import numpy as np +from numpy.testing import assert_allclose +import pytest +from scipy.signal import lfilter + +from statsmodels.tools.sm_exceptions import SpecificationWarning, \ + EstimationWarning +from statsmodels.tsa.statespace import (sarimax, structural, varmax, + dynamic_factor) + + +def test_arma_lfilter(): + # Tests of an ARMA model simulation against scipy.signal.lfilter + # Note: the first elements of the generated SARIMAX datasets are based on + # the initial state, so we don't include them in the comparisons + np.random.seed(10239) + nobs = 100 + eps = np.random.normal(size=nobs) + + # AR(1) + mod = sarimax.SARIMAX([0], order=(1, 0, 0)) + actual = mod.simulate([0.5, 1.], nobs + 1, state_shocks=np.r_[eps, 0], + initial_state=np.zeros(mod.k_states)) + desired = lfilter([1], [1, -0.5], eps) + assert_allclose(actual[1:], desired) + + # MA(1) + mod = sarimax.SARIMAX([0], order=(0, 0, 1)) + actual = mod.simulate([0.5, 1.], nobs + 1, state_shocks=np.r_[eps, 0], + initial_state=np.zeros(mod.k_states)) + desired = lfilter([1, 0.5], [1], eps) + assert_allclose(actual[1:], desired) + + # ARMA(1, 1) + mod = sarimax.SARIMAX([0], order=(1, 0, 1)) + actual = mod.simulate([0.5, 0.2, 1.], nobs + 1, state_shocks=np.r_[eps, 0], + initial_state=np.zeros(mod.k_states)) + desired = lfilter([1, 0.2], [1, -0.5], eps) + assert_allclose(actual[1:], desired) + + +def test_arma_direct(): + # Tests of an ARMA model simulation against direct construction + # This is useful for e.g. trend components + # Note: the first elements of the generated SARIMAX datasets are based on + # the initial state, so we don't include them in the comparisons + np.random.seed(10239) + nobs = 100 + eps = np.random.normal(size=nobs) + exog = np.random.normal(size=nobs) + + # AR(1) + mod = sarimax.SARIMAX([0], order=(1, 0, 0)) + actual = mod.simulate([0.5, 1.], nobs + 1, state_shocks=np.r_[eps, 0], + initial_state=np.zeros(mod.k_states)) + desired = np.zeros(nobs) + for i in range(nobs): + if i == 0: + desired[i] = eps[i] + else: + desired[i] = 0.5 * desired[i - 1] + eps[i] + assert_allclose(actual[1:], desired) + + # MA(1) + mod = sarimax.SARIMAX([0], order=(0, 0, 1)) + actual = mod.simulate([0.5, 1.], nobs + 1, state_shocks=np.r_[eps, 0], + initial_state=np.zeros(mod.k_states)) + desired = np.zeros(nobs) + for i in range(nobs): + if i == 0: + desired[i] = eps[i] + else: + desired[i] = 0.5 * eps[i - 1] + eps[i] + assert_allclose(actual[1:], desired) + + # ARMA(1, 1) + mod = sarimax.SARIMAX([0], order=(1, 0, 1)) + actual = mod.simulate([0.5, 0.2, 1.], nobs + 1, state_shocks=np.r_[eps, 0], + initial_state=np.zeros(mod.k_states)) + desired = np.zeros(nobs) + for i in range(nobs): + if i == 0: + desired[i] = eps[i] + else: + desired[i] = 0.5 * desired[i - 1] + 0.2 * eps[i - 1] + eps[i] + assert_allclose(actual[1:], desired) + + # ARMA(1, 1) + intercept + mod = sarimax.SARIMAX([0], order=(1, 0, 1), trend='c') + actual = mod.simulate([1.3, 0.5, 0.2, 1.], nobs + 1, + state_shocks=np.r_[eps, 0], + initial_state=np.zeros(mod.k_states)) + desired = np.zeros(nobs) + for i in range(nobs): + trend = 1.3 + if i == 0: + desired[i] = trend + eps[i] + else: + desired[i] = (trend + 0.5 * desired[i - 1] + + 0.2 * eps[i - 1] + eps[i]) + assert_allclose(actual[1:], desired) + + # ARMA(1, 1) + intercept + time trend + # Note: to allow time-varying SARIMAX to simulate 101 observations, need to + # give it 101 observations up front + mod = sarimax.SARIMAX(np.zeros(nobs + 1), order=(1, 0, 1), trend='ct') + actual = mod.simulate([1.3, 0.2, 0.5, 0.2, 1.], nobs + 1, + state_shocks=np.r_[eps, 0], + initial_state=np.zeros(mod.k_states)) + desired = np.zeros(nobs) + for i in range(nobs): + trend = 1.3 + 0.2 * (i + 1) + if i == 0: + desired[i] = trend + eps[i] + else: + desired[i] = (trend + 0.5 * desired[i - 1] + + 0.2 * eps[i - 1] + eps[i]) + assert_allclose(actual[1:], desired) + + # ARMA(1, 1) + intercept + time trend + exog + # Note: to allow time-varying SARIMAX to simulate 101 observations, need to + # give it 101 observations up front + # Note: the model is regression with SARIMAX errors, so the exog is + # introduced into the observation equation rather than the ARMA part + mod = sarimax.SARIMAX(np.zeros(nobs + 1), exog=np.r_[0, exog], + order=(1, 0, 1), trend='ct') + actual = mod.simulate([1.3, 0.2, -0.5, 0.5, 0.2, 1.], nobs + 1, + state_shocks=np.r_[eps, 0], + initial_state=np.zeros(mod.k_states)) + desired = np.zeros(nobs) + for i in range(nobs): + trend = 1.3 + 0.2 * (i + 1) + if i == 0: + desired[i] = trend + eps[i] + else: + desired[i] = (trend + 0.5 * desired[i - 1] + + 0.2 * eps[i - 1] + eps[i]) + desired = desired - 0.5 * exog + assert_allclose(actual[1:], desired) + + +def test_structural(): + np.random.seed(38947) + nobs = 100 + eps = np.random.normal(size=nobs) + exog = np.random.normal(size=nobs) + + eps1 = np.zeros(nobs) + eps2 = np.zeros(nobs) + eps2[49] = 1 + eps3 = np.zeros(nobs) + eps3[50:] = 1 + + # AR(1) + mod1 = structural.UnobservedComponents([0], autoregressive=1) + mod2 = sarimax.SARIMAX([0], order=(1, 0, 0)) + actual = mod1.simulate([1, 0.5], nobs, state_shocks=eps, + initial_state=np.zeros(mod1.k_states)) + desired = mod2.simulate([0.5, 1], nobs, state_shocks=eps, + initial_state=np.zeros(mod2.k_states)) + assert_allclose(actual, desired) + + # ARX(1) + mod1 = structural.UnobservedComponents(np.zeros(nobs), exog=exog, + autoregressive=1) + mod2 = sarimax.SARIMAX(np.zeros(nobs), exog=exog, order=(1, 0, 0)) + actual = mod1.simulate([1, 0.5, 0.2], nobs, state_shocks=eps, + initial_state=np.zeros(mod2.k_states)) + desired = mod2.simulate([0.2, 0.5, 1], nobs, state_shocks=eps, + initial_state=np.zeros(mod2.k_states)) + assert_allclose(actual, desired) + + # Irregular + mod = structural.UnobservedComponents([0], 'irregular') + actual = mod.simulate([1.], nobs, measurement_shocks=eps, + initial_state=np.zeros(mod.k_states)) + assert_allclose(actual, eps) + + # Fixed intercept + # (in practice this is a deterministic constant, because an irregular + # component must be added) + warning = SpecificationWarning if PY3 else None + match = 'irregular component added' if PY3 else None + with pytest.warns(warning, match=match): + mod = structural.UnobservedComponents([0], 'fixed intercept') + actual = mod.simulate([1.], nobs, measurement_shocks=eps, + initial_state=[10]) + assert_allclose(actual, 10 + eps) + + # Deterministic constant + mod = structural.UnobservedComponents([0], 'deterministic constant') + actual = mod.simulate([1.], nobs, measurement_shocks=eps, + initial_state=[10]) + assert_allclose(actual, 10 + eps) + + # Local level + mod = structural.UnobservedComponents([0], 'local level') + actual = mod.simulate([1., 1.], nobs, measurement_shocks=eps, + state_shocks=eps2, + initial_state=np.zeros(mod.k_states)) + assert_allclose(actual, eps + eps3) + + # Random walk + mod = structural.UnobservedComponents([0], 'random walk') + actual = mod.simulate([1.], nobs, measurement_shocks=eps, + state_shocks=eps2, + initial_state=np.zeros(mod.k_states)) + assert_allclose(actual, eps + eps3) + + # Fixed slope + # (in practice this is a deterministic trend, because an irregular + # component must be added) + warning = SpecificationWarning if PY3 else None + match = 'irregular component added' if PY3 else None + with pytest.warns(warning, match=match): + mod = structural.UnobservedComponents([0], 'fixed slope') + actual = mod.simulate([1., 1.], nobs, measurement_shocks=eps, + state_shocks=eps2, initial_state=[0, 1]) + assert_allclose(actual, eps + np.arange(100)) + + # Deterministic trend + mod = structural.UnobservedComponents([0], 'deterministic trend') + actual = mod.simulate([1.], nobs, measurement_shocks=eps, + state_shocks=eps2, initial_state=[0, 1]) + assert_allclose(actual, eps + np.arange(100)) + + # Local linear deterministic trend + mod = structural.UnobservedComponents( + [0], 'local linear deterministic trend') + actual = mod.simulate([1., 1.], nobs, measurement_shocks=eps, + state_shocks=eps2, initial_state=[0, 1]) + desired = eps + np.r_[np.arange(50), 1 + np.arange(50, 100)] + assert_allclose(actual, desired) + + # Random walk with drift + mod = structural.UnobservedComponents([0], 'random walk with drift') + actual = mod.simulate([1.], nobs, state_shocks=eps2, + initial_state=[0, 1]) + desired = np.r_[np.arange(50), 1 + np.arange(50, 100)] + assert_allclose(actual, desired) + + # Local linear trend + mod = structural.UnobservedComponents([0], 'local linear trend') + actual = mod.simulate([1., 1., 1.], nobs, measurement_shocks=eps, + state_shocks=np.c_[eps2, eps1], initial_state=[0, 1]) + desired = eps + np.r_[np.arange(50), 1 + np.arange(50, 100)] + assert_allclose(actual, desired) + + actual = mod.simulate([1., 1., 1.], nobs, measurement_shocks=eps, + state_shocks=np.c_[eps1, eps2], initial_state=[0, 1]) + desired = eps + np.r_[np.arange(50), np.arange(50, 150, 2)] + assert_allclose(actual, desired) + + # Smooth trend + mod = structural.UnobservedComponents([0], 'smooth trend') + actual = mod.simulate([1., 1.], nobs, measurement_shocks=eps, + state_shocks=eps1, initial_state=[0, 1]) + desired = eps + np.r_[np.arange(100)] + assert_allclose(actual, desired) + + actual = mod.simulate([1., 1.], nobs, measurement_shocks=eps, + state_shocks=eps2, initial_state=[0, 1]) + desired = eps + np.r_[np.arange(50), np.arange(50, 150, 2)] + assert_allclose(actual, desired) + + # Random trend + mod = structural.UnobservedComponents([0], 'random trend') + actual = mod.simulate([1., 1.], nobs, + state_shocks=eps1, initial_state=[0, 1]) + desired = np.r_[np.arange(100)] + assert_allclose(actual, desired) + + actual = mod.simulate([1., 1.], nobs, + state_shocks=eps2, initial_state=[0, 1]) + desired = np.r_[np.arange(50), np.arange(50, 150, 2)] + assert_allclose(actual, desired) + + # Seasonal (deterministic) + mod = structural.UnobservedComponents([0], 'irregular', seasonal=2, + stochastic_seasonal=False) + actual = mod.simulate([1.], nobs, measurement_shocks=eps, + initial_state=[10]) + desired = eps + np.tile([10, -10], 50) + assert_allclose(actual, desired) + + # Seasonal (stochastic) + mod = structural.UnobservedComponents([0], 'irregular', seasonal=2) + actual = mod.simulate([1., 1.], nobs, measurement_shocks=eps, + state_shocks=eps2, initial_state=[10]) + desired = eps + np.r_[np.tile([10, -10], 25), np.tile([11, -11], 25)] + assert_allclose(actual, desired) + + # Cycle (deterministic) + mod = structural.UnobservedComponents([0], 'irregular', cycle=True) + actual = mod.simulate([1., 1.2], nobs, measurement_shocks=eps, + initial_state=[1, 0]) + x1 = [np.cos(1.2), np.sin(1.2)] + x2 = [-np.sin(1.2), np.cos(1.2)] + T = np.array([x1, x2]) + desired = eps + states = [1, 0] + for i in range(nobs): + desired[i] += states[0] + states = np.dot(T, states) + assert_allclose(actual, desired) + + # Cycle (stochastic) + mod = structural.UnobservedComponents([0], 'irregular', cycle=True, + stochastic_cycle=True) + actual = mod.simulate([1., 1., 1.2], nobs, measurement_shocks=eps, + state_shocks=np.c_[eps2, eps2], initial_state=[1, 0]) + x1 = [np.cos(1.2), np.sin(1.2)] + x2 = [-np.sin(1.2), np.cos(1.2)] + T = np.array([x1, x2]) + desired = eps + states = [1, 0] + for i in range(nobs): + desired[i] += states[0] + states = np.dot(T, states) + eps2[i] + assert_allclose(actual, desired) + + +def test_varmax(): + np.random.seed(371934) + nobs = 100 + eps = np.random.normal(size=nobs) + exog = np.random.normal(size=(nobs, 1)) + + eps1 = np.zeros(nobs) + eps2 = np.zeros(nobs) + eps2[49] = 1 + eps3 = np.zeros(nobs) + eps3[50:] = 1 + + # VAR(2) - single series + mod1 = varmax.VARMAX([[0]], order=(2, 0), trend='n') + mod2 = sarimax.SARIMAX([0], order=(2, 0, 0)) + actual = mod1.simulate([0.5, 0.2, 1], nobs, state_shocks=eps, + initial_state=np.zeros(mod1.k_states)) + desired = mod2.simulate([0.5, 0.2, 1], nobs, state_shocks=eps, + initial_state=np.zeros(mod2.k_states)) + assert_allclose(actual, desired) + + # VMA(2) - single series + mod1 = varmax.VARMAX([[0]], order=(0, 2), trend='n') + mod2 = sarimax.SARIMAX([0], order=(0, 0, 2)) + actual = mod1.simulate([0.5, 0.2, 1], nobs, state_shocks=eps, + initial_state=np.zeros(mod1.k_states)) + desired = mod2.simulate([0.5, 0.2, 1], nobs, state_shocks=eps, + initial_state=np.zeros(mod2.k_states)) + assert_allclose(actual, desired) + + # VARMA(2, 2) - single series + warning = EstimationWarning if PY3 else None + match = r'VARMA\(p,q\) models is not' if PY3 else None + with pytest.warns(warning, match=match): + mod1 = varmax.VARMAX([[0]], order=(2, 2), trend='n') + mod2 = sarimax.SARIMAX([0], order=(2, 0, 2)) + actual = mod1.simulate([0.5, 0.2, 0.1, -0.2, 1], nobs, state_shocks=eps, + initial_state=np.zeros(mod1.k_states)) + desired = mod2.simulate([0.5, 0.2, 0.1, -0.2, 1], nobs, state_shocks=eps, + initial_state=np.zeros(mod2.k_states)) + assert_allclose(actual, desired) + + # VARMA(2, 2) + trend - single series + warning = EstimationWarning if PY3 else None + match = r'VARMA\(p,q\) models is not' if PY3 else None + with pytest.warns(warning, match=match): + mod1 = varmax.VARMAX([[0]], order=(2, 2), trend='c') + mod2 = sarimax.SARIMAX([0], order=(2, 0, 2), trend='c') + actual = mod1.simulate([10, 0.5, 0.2, 0.1, -0.2, 1], nobs, + state_shocks=eps, + initial_state=np.zeros(mod1.k_states)) + desired = mod2.simulate([10, 0.5, 0.2, 0.1, -0.2, 1], nobs, + state_shocks=eps, + initial_state=np.zeros(mod2.k_states)) + assert_allclose(actual, desired) + + # VAR(1) + transition = np.array([[0.5, 0.1], + [-0.1, 0.2]]) + + mod = varmax.VARMAX([[0, 0]], order=(1, 0), trend='n') + actual = mod.simulate(np.r_[transition.ravel(), 1., 0, 1.], nobs, + state_shocks=np.c_[eps1, eps1], + initial_state=np.zeros(mod.k_states)) + assert_allclose(actual, 0) + + actual = mod.simulate(np.r_[transition.ravel(), 1., 0, 1.], nobs, + state_shocks=np.c_[eps1, eps1], initial_state=[1, 1]) + desired = np.zeros((nobs, 2)) + state = np.r_[1, 1] + for i in range(nobs): + desired[i] = state + state = np.dot(transition, state) + assert_allclose(actual, desired) + + # VAR(1) + measurement error + mod = varmax.VARMAX([[0, 0]], order=(1, 0), trend='n', + measurement_error=True) + actual = mod.simulate(np.r_[transition.ravel(), 1., 0, 1., 1., 1.], nobs, + measurement_shocks=np.c_[eps, eps], + state_shocks=np.c_[eps1, eps1], + initial_state=np.zeros(mod.k_states)) + assert_allclose(actual, np.c_[eps, eps]) + + # VARX(1) + mod = varmax.VARMAX(np.zeros((nobs, 2)), order=(1, 0), trend='n', + exog=exog) + actual = mod.simulate(np.r_[transition.ravel(), 5, -2, 1., 0, 1.], nobs, + state_shocks=np.c_[eps1, eps1], initial_state=[1, 1]) + desired = np.zeros((nobs, 2)) + state = np.r_[1, 1] + for i in range(nobs): + desired[i] = state + if i < nobs - 1: + state = exog[i + 1] * [5, -2] + np.dot(transition, state) + assert_allclose(actual, desired) + + # VMA(1) + # TODO: This is just a smoke test + mod = varmax.VARMAX( + np.random.normal(size=(nobs, 2)), order=(0, 1), trend='n') + mod.simulate(mod.start_params, nobs) + + # VARMA(2, 2) + trend + exog + # TODO: This is just a smoke test + warning = EstimationWarning if PY3 else None + match = r"VARMA\(p,q\) models is not" if PY3 else None + with pytest.warns(warning, match=match): + mod = varmax.VARMAX( + np.random.normal(size=(nobs, 2)), order=(2, 2), trend='c', + exog=exog) + mod.simulate(mod.start_params, nobs) + + +def test_dynamic_factor(): + np.random.seed(93739) + nobs = 100 + eps = np.random.normal(size=nobs) + exog = np.random.normal(size=(nobs, 1)) + + eps1 = np.zeros(nobs) + eps2 = np.zeros(nobs) + eps2[49] = 1 + eps3 = np.zeros(nobs) + eps3[50:] = 1 + + # DFM: 2 series, AR(2) factor + mod1 = dynamic_factor.DynamicFactor([[0, 0]], k_factors=1, factor_order=2) + mod2 = sarimax.SARIMAX([0], order=(2, 0, 0)) + actual = mod1.simulate([-0.9, 0.8, 1., 1., 0.5, 0.2], nobs, + measurement_shocks=np.c_[eps1, eps1], + state_shocks=eps, + initial_state=np.zeros(mod1.k_states)) + desired = mod2.simulate([0.5, 0.2, 1], nobs, state_shocks=eps, + initial_state=np.zeros(mod2.k_states)) + assert_allclose(actual[:, 0], -0.9 * desired) + assert_allclose(actual[:, 1], 0.8 * desired) + + # DFM: 2 series, AR(2) factor, exog + mod1 = dynamic_factor.DynamicFactor(np.zeros((nobs, 2)), k_factors=1, + factor_order=2, exog=exog) + mod2 = sarimax.SARIMAX([0], order=(2, 0, 0)) + actual = mod1.simulate([-0.9, 0.8, 5, -2, 1., 1., 0.5, 0.2], nobs, + measurement_shocks=np.c_[eps1, eps1], + state_shocks=eps, + initial_state=np.zeros(mod1.k_states)) + desired = mod2.simulate([0.5, 0.2, 1], nobs, state_shocks=eps, + initial_state=np.zeros(mod2.k_states)) + assert_allclose(actual[:, 0], -0.9 * desired + 5 * exog[:, 0]) + assert_allclose(actual[:, 1], 0.8 * desired - 2 * exog[:, 0]) + + # DFM, 3 series, VAR(2) factor, exog, error VAR + # TODO: This is just a smoke test + mod = dynamic_factor.DynamicFactor(np.random.normal(size=(nobs, 3)), + k_factors=2, factor_order=2, exog=exog, + error_order=2, error_var=True) + mod.simulate(mod.start_params, nobs) + + +def test_known_initialization(): + # Need to test that "known" initialization is taken into account in + # time series simulation + np.random.seed(38947) + nobs = 100 + eps = np.random.normal(size=nobs) + + eps1 = np.zeros(nobs) + eps2 = np.zeros(nobs) + eps2[49] = 1 + eps3 = np.zeros(nobs) + eps3[50:] = 1 + + # SARIMAX + # (test that when state shocks are shut down, the initial state + # geometrically declines according to the AR parameter) + mod = sarimax.SARIMAX([0], order=(1, 0, 0)) + mod.ssm.initialize_known([100], [[0]]) + actual = mod.simulate([0.5, 1.], nobs, state_shocks=eps1) + assert_allclose(actual, 100 * 0.5**np.arange(nobs)) + + # Unobserved components + # (test that the initial level shifts the entire path) + mod = structural.UnobservedComponents([0], 'local level') + mod.ssm.initialize_known([100], [[0]]) + actual = mod.simulate([1., 1.], nobs, measurement_shocks=eps, + state_shocks=eps2) + assert_allclose(actual, 100 + eps + eps3) + + # VARMAX + # (here just test that with an independent VAR we have each initial state + # geometrically declining at the appropriate rate) + transition = np.diag([0.5, 0.2]) + mod = varmax.VARMAX([[0, 0]], order=(1, 0), trend='n') + mod.initialize_known([100, 50], np.diag([0, 0])) + actual = mod.simulate(np.r_[transition.ravel(), 1., 0, 1.], nobs, + measurement_shocks=np.c_[eps1, eps1], + state_shocks=np.c_[eps1, eps1]) + + assert_allclose(actual, np.c_[100 * 0.5**np.arange(nobs), + 50 * 0.2**np.arange(nobs)]) + + # Dynamic factor + # (test that the initial state declines geometrically and then loads + # correctly onto the series) + mod = dynamic_factor.DynamicFactor([[0, 0]], k_factors=1, factor_order=1) + mod.initialize_known([100], [[0]]) + + actual = mod.simulate([0.8, 0.2, 1.0, 1.0, 0.5], nobs, + measurement_shocks=np.c_[eps1, eps1], + state_shocks=eps1) + tmp = 100 * 0.5**np.arange(nobs) + assert_allclose(actual, np.c_[0.8 * tmp, 0.2 * tmp]) + + +def test_sequential_simulate(): + # Test that we can perform simulation, change the system matrices, and then + # perform simulation again (i.e. check that everything updates correctly + # in the simulation smoother). + n_simulations = 100 + mod = sarimax.SARIMAX([1], order=(0, 0, 0), trend='c') + + actual = mod.simulate([1, 0], n_simulations) + assert_allclose(actual, np.ones(n_simulations)) + + actual = mod.simulate([10, 0], n_simulations) + assert_allclose(actual, np.ones(n_simulations) * 10) diff --git a/statsmodels/tsa/statespace/tests/test_simulation_smoothing.py b/statsmodels/tsa/statespace/tests/test_simulation_smoothing.py new file mode 100644 index 0000000..e248706 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_simulation_smoothing.py @@ -0,0 +1,668 @@ +""" +Tests for simulation smoothing + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function +import os + +import numpy as np +from numpy.testing import assert_allclose, assert_equal +import pandas as pd + +from statsmodels import datasets +from statsmodels.tsa.statespace import mlemodel, sarimax, structural +from statsmodels.tsa.statespace.simulation_smoother import ( + SIMULATION_STATE, SIMULATION_DISTURBANCE, SIMULATION_ALL) + +current_path = os.path.dirname(os.path.abspath(__file__)) + + +class MultivariateVARKnown(object): + """ + Tests for simulation smoothing values in a couple of special cases of + variates. Both computed values and KFAS values are used for comparison + against the simulation smoother output. + """ + @classmethod + def setup_class(cls, missing=None, test_against_KFAS=True, + *args, **kwargs): + cls.test_against_KFAS = test_against_KFAS + # Data + dta = datasets.macrodata.load_pandas().data + dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', + freq='QS') + obs = np.log(dta[['realgdp', 'realcons', 'realinv']]).diff().iloc[1:] + + if missing == 'all': + obs.iloc[0:50, :] = np.nan + elif missing == 'partial': + obs.iloc[0:50, 0] = np.nan + elif missing == 'mixed': + obs.iloc[0:50, 0] = np.nan + obs.iloc[19:70, 1] = np.nan + obs.iloc[39:90, 2] = np.nan + obs.iloc[119:130, 0] = np.nan + obs.iloc[119:130, 2] = np.nan + obs.iloc[-10:, :] = np.nan + + if test_against_KFAS: + obs = obs.iloc[:9] + + # Create the model + mod = mlemodel.MLEModel(obs, k_states=3, k_posdef=3, **kwargs) + mod['design'] = np.eye(3) + mod['obs_cov'] = np.array([ + [0.0000640649, 0., 0.], + [0., 0.0000572802, 0.], + [0., 0., 0.0017088585]]) + mod['transition'] = np.array([ + [-0.1119908792, 0.8441841604, 0.0238725303], + [0.2629347724, 0.4996718412, -0.0173023305], + [-3.2192369082, 4.1536028244, 0.4514379215]]) + mod['selection'] = np.eye(3) + mod['state_cov'] = np.array([ + [0.0000640649, 0.0000388496, 0.0002148769], + [0.0000388496, 0.0000572802, 0.000001555], + [0.0002148769, 0.000001555, 0.0017088585]]) + mod.initialize_approximate_diffuse(1e6) + mod.ssm.filter_univariate = True + cls.model = mod + cls.results = mod.smooth([], return_ssm=True) + + cls.sim = cls.model.simulation_smoother() + + def test_loglike(self): + assert_allclose(np.sum(self.results.llf_obs), self.true_llf) + + def test_simulate_0(self): + n = 10 + + # Test with all inputs as zeros + measurement_shocks = np.zeros((n, self.model.k_endog)) + state_shocks = np.zeros((n, self.model.ssm.k_posdef)) + initial_state = np.zeros(self.model.k_states) + obs, states = self.model.ssm.simulate( + nsimulations=n, measurement_shocks=measurement_shocks, + state_shocks=state_shocks, initial_state=initial_state) + + assert_allclose(obs, np.zeros((n, self.model.k_endog))) + assert_allclose(states, np.zeros((n, self.model.k_states))) + + def test_simulate_1(self): + n = 10 + + # Test with np.arange / 10 measurement shocks only + measurement_shocks = np.reshape( + np.arange(n * self.model.k_endog) / 10., + (n, self.model.k_endog)) + state_shocks = np.zeros((n, self.model.ssm.k_posdef)) + initial_state = np.zeros(self.model.k_states) + obs, states = self.model.ssm.simulate( + nsimulations=n, measurement_shocks=measurement_shocks, + state_shocks=state_shocks, initial_state=initial_state) + + assert_allclose(obs, np.reshape( + np.arange(n * self.model.k_endog) / 10., + (n, self.model.k_endog))) + assert_allclose(states, np.zeros((n, self.model.k_states))) + + def test_simulate_2(self): + n = 10 + Z = self.model['design'] + T = self.model['transition'] + + # Test with non-zero state shocks and initial state + measurement_shocks = np.zeros((n, self.model.k_endog)) + state_shocks = np.ones((n, self.model.ssm.k_posdef)) + initial_state = np.ones(self.model.k_states) * 2.5 + obs, states = self.model.ssm.simulate( + nsimulations=n, measurement_shocks=measurement_shocks, + state_shocks=state_shocks, initial_state=initial_state) + + desired_obs = np.zeros((n, self.model.k_endog)) + desired_state = np.zeros((n, self.model.k_states)) + desired_state[0] = initial_state + desired_obs[0] = np.dot(Z, initial_state) + for i in range(1, n): + desired_state[i] = np.dot(T, desired_state[i-1]) + state_shocks[i] + desired_obs[i] = np.dot(Z, desired_state[i]) + + assert_allclose(obs, desired_obs) + assert_allclose(states, desired_state) + + def test_simulation_smoothing_0(self): + # Simulation smoothing when setting all variates to zeros + # In this case: + # - unconditional disturbances are zero, because they are simply + # transformed to have the appropriate variance matrix, but keep the + # same mean - of zero + # - generated states are zeros, because initial state is + # zeros and all state disturbances are zeros + # - generated observations are zeros, because states are zeros and all + # measurement disturbances are zeros + # - The simulated state is equal to the smoothed state from the + # original model, because + # simulated state = (generated state - smoothed generated state + + # smoothed state) + # and here generated state = smoothed generated state = 0 + # - The simulated measurement disturbance is equal to the smoothed + # measurement disturbance for very similar reasons, because + # simulated measurement disturbance = ( + # generated measurement disturbance - + # smoothed generated measurement disturbance + + # smoothed measurement disturbance) + # and here generated measurement disturbance and + # smoothed generated measurement disturbance are zero. + # - The simulated state disturbance is equal to the smoothed + # state disturbance for exactly the same reason as above. + sim = self.sim + Z = self.model['design'] + + n_disturbance_variates = ( + (self.model.k_endog + self.model.ssm.k_posdef) * self.model.nobs) + + # Test against known quantities (see above for description) + sim.simulate(disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(self.model.k_states)) + assert_allclose(sim.generated_measurement_disturbance, 0) + assert_allclose(sim.generated_state_disturbance, 0) + assert_allclose(sim.generated_state, 0) + assert_allclose(sim.generated_obs, 0) + assert_allclose(sim.simulated_state, self.results.smoothed_state) + if not self.model.ssm.filter_collapsed: + assert_allclose(sim.simulated_measurement_disturbance, + self.results.smoothed_measurement_disturbance) + assert_allclose(sim.simulated_state_disturbance, + self.results.smoothed_state_disturbance) + + # Test against R package KFAS values + if self.test_against_KFAS: + path = os.path.join(current_path, 'results', + 'results_simulation_smoothing0.csv') + true = pd.read_csv(path) + + assert_allclose(sim.simulated_state, + true[['state1', 'state2', 'state3']].T, + atol=1e-7) + assert_allclose(sim.simulated_measurement_disturbance, + true[['eps1', 'eps2', 'eps3']].T, + atol=1e-7) + assert_allclose(sim.simulated_state_disturbance, + true[['eta1', 'eta2', 'eta3']].T, + atol=1e-7) + signals = np.zeros((3, self.model.nobs)) + for t in range(self.model.nobs): + signals[:, t] = np.dot(Z, sim.simulated_state[:, t]) + assert_allclose(signals, true[['signal1', 'signal2', 'signal3']].T, + atol=1e-7) + + def test_simulation_smoothing_1(self): + # Test with measurement disturbance as np.arange / 10., all other + # disturbances are zeros + sim = self.sim + + Z = self.model['design'] + + # Construct the variates + measurement_disturbance_variates = np.reshape( + np.arange(self.model.nobs * self.model.k_endog) / 10., + (self.model.nobs, self.model.k_endog)) + disturbance_variates = np.r_[ + measurement_disturbance_variates.ravel(), + np.zeros(self.model.nobs * self.model.ssm.k_posdef)] + + # Compute some additional known quantities + generated_measurement_disturbance = np.zeros( + measurement_disturbance_variates.shape) + chol = np.linalg.cholesky(self.model['obs_cov']) + for t in range(self.model.nobs): + generated_measurement_disturbance[t] = np.dot( + chol, measurement_disturbance_variates[t]) + + generated_model = mlemodel.MLEModel( + generated_measurement_disturbance, k_states=self.model.k_states, + k_posdef=self.model.ssm.k_posdef) + for name in ['design', 'obs_cov', 'transition', + 'selection', 'state_cov']: + generated_model[name] = self.model[name] + + generated_model.initialize_approximate_diffuse(1e6) + generated_model.ssm.filter_univariate = True + generated_res = generated_model.ssm.smooth() + simulated_state = ( + 0 - generated_res.smoothed_state + self.results.smoothed_state) + if not self.model.ssm.filter_collapsed: + simulated_measurement_disturbance = ( + generated_measurement_disturbance.T - + generated_res.smoothed_measurement_disturbance + + self.results.smoothed_measurement_disturbance) + simulated_state_disturbance = ( + 0 - generated_res.smoothed_state_disturbance + + self.results.smoothed_state_disturbance) + + # Test against known values + sim.simulate(disturbance_variates=disturbance_variates, + initial_state_variates=np.zeros(self.model.k_states)) + assert_allclose(sim.generated_measurement_disturbance, + generated_measurement_disturbance) + assert_allclose(sim.generated_state_disturbance, 0) + assert_allclose(sim.generated_state, 0) + assert_allclose(sim.generated_obs, + generated_measurement_disturbance.T) + assert_allclose(sim.simulated_state, simulated_state) + if not self.model.ssm.filter_collapsed: + assert_allclose(sim.simulated_measurement_disturbance, + simulated_measurement_disturbance) + assert_allclose(sim.simulated_state_disturbance, + simulated_state_disturbance) + + # Test against R package KFAS values + if self.test_against_KFAS: + path = os.path.join(current_path, 'results', + 'results_simulation_smoothing1.csv') + true = pd.read_csv(path) + assert_allclose(sim.simulated_state, + true[['state1', 'state2', 'state3']].T, + atol=1e-7) + assert_allclose(sim.simulated_measurement_disturbance, + true[['eps1', 'eps2', 'eps3']].T, + atol=1e-7) + assert_allclose(sim.simulated_state_disturbance, + true[['eta1', 'eta2', 'eta3']].T, + atol=1e-7) + signals = np.zeros((3, self.model.nobs)) + for t in range(self.model.nobs): + signals[:, t] = np.dot(Z, sim.simulated_state[:, t]) + assert_allclose(signals, true[['signal1', 'signal2', 'signal3']].T, + atol=1e-7) + + def test_simulation_smoothing_2(self): + # Test with measurement and state disturbances as np.arange / 10., + # initial state variates are zeros. + sim = self.sim + + Z = self.model['design'] + T = self.model['transition'] + + # Construct the variates + measurement_disturbance_variates = np.reshape( + np.arange(self.model.nobs * self.model.k_endog) / 10., + (self.model.nobs, self.model.k_endog)) + state_disturbance_variates = np.reshape( + np.arange(self.model.nobs * self.model.ssm.k_posdef) / 10., + (self.model.nobs, self.model.ssm.k_posdef)) + disturbance_variates = np.r_[ + measurement_disturbance_variates.ravel(), + state_disturbance_variates.ravel()] + initial_state_variates = np.zeros(self.model.k_states) + + # Compute some additional known quantities + generated_measurement_disturbance = np.zeros( + measurement_disturbance_variates.shape) + chol = np.linalg.cholesky(self.model['obs_cov']) + for t in range(self.model.nobs): + generated_measurement_disturbance[t] = np.dot( + chol, measurement_disturbance_variates[t]) + + generated_state_disturbance = np.zeros( + state_disturbance_variates.shape) + chol = np.linalg.cholesky(self.model['state_cov']) + for t in range(self.model.nobs): + generated_state_disturbance[t] = np.dot( + chol, state_disturbance_variates[t]) + + generated_obs = np.zeros((self.model.k_endog, self.model.nobs)) + generated_state = np.zeros((self.model.k_states, self.model.nobs+1)) + chol = np.linalg.cholesky(self.results.initial_state_cov) + generated_state[:, 0] = ( + self.results.initial_state + np.dot(chol, initial_state_variates)) + for t in range(self.model.nobs): + generated_state[:, t+1] = (np.dot(T, generated_state[:, t]) + + generated_state_disturbance.T[:, t]) + generated_obs[:, t] = (np.dot(Z, generated_state[:, t]) + + generated_measurement_disturbance.T[:, t]) + + generated_model = mlemodel.MLEModel( + generated_obs.T, k_states=self.model.k_states, + k_posdef=self.model.ssm.k_posdef) + for name in ['design', 'obs_cov', 'transition', + 'selection', 'state_cov']: + generated_model[name] = self.model[name] + + generated_model.initialize_approximate_diffuse(1e6) + generated_model.ssm.filter_univariate = True + generated_res = generated_model.ssm.smooth() + simulated_state = ( + generated_state[:, :-1] - generated_res.smoothed_state + + self.results.smoothed_state) + if not self.model.ssm.filter_collapsed: + simulated_measurement_disturbance = ( + generated_measurement_disturbance.T - + generated_res.smoothed_measurement_disturbance + + self.results.smoothed_measurement_disturbance) + simulated_state_disturbance = ( + generated_state_disturbance.T - + generated_res.smoothed_state_disturbance + + self.results.smoothed_state_disturbance) + + # Test against known values + sim.simulate(disturbance_variates=disturbance_variates, + initial_state_variates=np.zeros(self.model.k_states)) + + assert_allclose(sim.generated_measurement_disturbance, + generated_measurement_disturbance) + assert_allclose(sim.generated_state_disturbance, + generated_state_disturbance) + assert_allclose(sim.generated_state, generated_state) + assert_allclose(sim.generated_obs, generated_obs) + assert_allclose(sim.simulated_state, simulated_state) + if not self.model.ssm.filter_collapsed: + assert_allclose(sim.simulated_measurement_disturbance.T, + simulated_measurement_disturbance.T) + assert_allclose(sim.simulated_state_disturbance, + simulated_state_disturbance) + + # Test against R package KFAS values + if self.test_against_KFAS: + path = os.path.join(current_path, 'results', + 'results_simulation_smoothing2.csv') + true = pd.read_csv(path) + assert_allclose(sim.simulated_state.T, + true[['state1', 'state2', 'state3']], + atol=1e-7) + assert_allclose(sim.simulated_measurement_disturbance, + true[['eps1', 'eps2', 'eps3']].T, + atol=1e-7) + assert_allclose(sim.simulated_state_disturbance, + true[['eta1', 'eta2', 'eta3']].T, + atol=1e-7) + signals = np.zeros((3, self.model.nobs)) + for t in range(self.model.nobs): + signals[:, t] = np.dot(Z, sim.simulated_state[:, t]) + assert_allclose(signals, true[['signal1', 'signal2', 'signal3']].T, + atol=1e-7) + + +class TestMultivariateVARKnown(MultivariateVARKnown): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestMultivariateVARKnown, cls).setup_class() + cls.true_llf = 39.01246166 + + +class TestMultivariateVARKnownMissingAll(MultivariateVARKnown): + """ + Notes + ----- + Can't test against KFAS because they have a different behavior for + missing entries. When an entry is missing, KFAS does not draw a simulation + smoothed value for that entry, whereas we draw from the unconditional + distribution. It appears there is nothing to definitively recommend one + approach over the other, but it makes it difficult to line up the variates + correctly in order to replicate results. + """ + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestMultivariateVARKnownMissingAll, cls).setup_class( + missing='all', test_against_KFAS=False) + cls.true_llf = 1305.739288 + + +class TestMultivariateVARKnownMissingPartial(MultivariateVARKnown): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestMultivariateVARKnownMissingPartial, cls).setup_class( + missing='partial', test_against_KFAS=False) + cls.true_llf = 1518.449598 + + +class TestMultivariateVARKnownMissingMixed(MultivariateVARKnown): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestMultivariateVARKnownMissingMixed, cls).setup_class( + missing='mixed', test_against_KFAS=False) + cls.true_llf = 1117.265303 + + +class TestDFM(TestMultivariateVARKnown): + test_against_KFAS = False + + @classmethod + def setup_class(cls, which='none', *args, **kwargs): + # Data + dta = datasets.macrodata.load_pandas().data + dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', + freq='QS') + levels = dta[['realgdp', 'realcons', 'realinv']] + obs = np.log(levels).diff().iloc[1:] * 400 + + if which == 'all': + obs.iloc[:50, :] = np.nan + obs.iloc[119:130, :] = np.nan + elif which == 'partial': + obs.iloc[0:50, 0] = np.nan + obs.iloc[119:130, 0] = np.nan + elif which == 'mixed': + obs.iloc[0:50, 0] = np.nan + obs.iloc[19:70, 1] = np.nan + obs.iloc[39:90, 2] = np.nan + obs.iloc[119:130, 0] = np.nan + obs.iloc[119:130, 2] = np.nan + + # Create the model with typical state space + mod = mlemodel.MLEModel(obs, k_states=2, k_posdef=2, **kwargs) + mod['design'] = np.array([[-32.47143586, 17.33779024], + [-7.40264169, 1.69279859], + [-209.04702853, 125.2879374]]) + mod['obs_cov'] = np.diag( + np.array([0.0622668, 1.95666886, 58.37473642])) + mod['transition'] = np.array([[0.29935707, 0.33289005], + [-0.7639868, 1.2844237]]) + mod['selection'] = np.eye(2) + mod['state_cov'] = np.array([[1.2, -0.25], + [-0.25, 1.1]]) + mod.initialize_approximate_diffuse(1e6) + mod.ssm.filter_univariate = True + mod.ssm.filter_collapsed = True + cls.model = mod + cls.results = mod.smooth([], return_ssm=True) + + cls.sim = cls.model.simulation_smoother() + + def test_loglike(self): + pass + + +class MultivariateVAR(object): + """ + More generic tests for simulation smoothing; use actual N(0,1) variates + """ + @classmethod + def setup_class(cls, missing='none', *args, **kwargs): + # Data + dta = datasets.macrodata.load_pandas().data + dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', + freq='QS') + obs = np.log(dta[['realgdp', 'realcons', 'realinv']]).diff().iloc[1:] + + if missing == 'all': + obs.iloc[0:50, :] = np.nan + elif missing == 'partial': + obs.iloc[0:50, 0] = np.nan + elif missing == 'mixed': + obs.iloc[0:50, 0] = np.nan + obs.iloc[19:70, 1] = np.nan + obs.iloc[39:90, 2] = np.nan + obs.iloc[119:130, 0] = np.nan + obs.iloc[119:130, 2] = np.nan + obs.iloc[-10:, :] = np.nan + + # Create the model + mod = mlemodel.MLEModel(obs, k_states=3, k_posdef=3, **kwargs) + mod['design'] = np.eye(3) + mod['obs_cov'] = np.array([ + [0.0000640649, 0., 0.], + [0., 0.0000572802, 0.], + [0., 0., 0.0017088585]]) + mod['transition'] = np.array([ + [-0.1119908792, 0.8441841604, 0.0238725303], + [0.2629347724, 0.4996718412, -0.0173023305], + [-3.2192369082, 4.1536028244, 0.4514379215]]) + mod['selection'] = np.eye(3) + mod['state_cov'] = np.array([ + [0.0000640649, 0.0000388496, 0.0002148769], + [0.0000388496, 0.0000572802, 0.000001555], + [0.0002148769, 0.000001555, 0.0017088585]]) + mod.initialize_approximate_diffuse(1e6) + mod.ssm.filter_univariate = True + cls.model = mod + cls.results = mod.smooth([], return_ssm=True) + + cls.sim = cls.model.simulation_smoother() + + def test_loglike(self): + assert_allclose(np.sum(self.results.llf_obs), self.true_llf) + + def test_simulation_smoothing(self): + sim = self.sim + + Z = self.model['design'] + + # Simulate with known variates + sim.simulate(disturbance_variates=self.variates[:-3], + initial_state_variates=self.variates[-3:]) + + # Test against R package KFAS values + assert_allclose(sim.simulated_state.T, + self.true[['state1', 'state2', 'state3']], + atol=1e-7) + assert_allclose(sim.simulated_measurement_disturbance, + self.true[['eps1', 'eps2', 'eps3']].T, + atol=1e-7) + assert_allclose(sim.simulated_state_disturbance, + self.true[['eta1', 'eta2', 'eta3']].T, + atol=1e-7) + signals = np.zeros((3, self.model.nobs)) + for t in range(self.model.nobs): + signals[:, t] = np.dot(Z, sim.simulated_state[:, t]) + assert_allclose(signals, + self.true[['signal1', 'signal2', 'signal3']].T, + atol=1e-7) + + +class TestMultivariateVAR(MultivariateVAR): + @classmethod + def setup_class(cls): + super(TestMultivariateVAR, cls).setup_class() + path = os.path.join(current_path, 'results', + 'results_simulation_smoothing3_variates.csv') + cls.variates = pd.read_csv(path).values.squeeze() + path = os.path.join(current_path, 'results', + 'results_simulation_smoothing3.csv') + cls.true = pd.read_csv(path) + cls.true_llf = 1695.34872 + + +def test_misc(): + + # Create the model and simulation smoother + dta = datasets.macrodata.load_pandas().data + dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', + freq='QS') + obs = np.log(dta[['realgdp', 'realcons', 'realinv']]).diff().iloc[1:] + + mod = sarimax.SARIMAX(obs['realgdp'], order=(1, 0, 0)) + mod['design', 0, 0] = 0. + mod['obs_cov', 0, 0] = 1. + mod.update(np.r_[1., 1.]) + sim = mod.simulation_smoother() + + # Test that the simulation smoother is drawing variates correctly + np.random.seed(1234) + n_disturbance_variates = mod.nobs * (mod.k_endog + mod.k_states) + variates = np.random.normal(size=n_disturbance_variates) + np.random.seed(1234) + sim.simulate() + assert_allclose(sim.generated_measurement_disturbance[:, 0], + variates[:mod.nobs]) + assert_allclose(sim.generated_state_disturbance[:, 0], + variates[mod.nobs:]) + + # Test that we can change the options of the simulations smoother + assert_equal(sim.simulation_output, mod.ssm.smoother_output) + sim.simulation_output = 0 + assert_equal(sim.simulation_output, 0) + + sim.simulate_state = True + assert_equal(sim.simulation_output, SIMULATION_STATE) + sim.simulate_state = False + assert_equal(sim.simulation_output, 0) + + sim.simulate_disturbance = True + assert_equal(sim.simulation_output, SIMULATION_DISTURBANCE) + sim.simulate_disturbance = False + assert_equal(sim.simulation_output, 0) + + sim.simulate_all = True + assert_equal(sim.simulation_output, SIMULATION_ALL) + sim.simulate_all = False + assert_equal(sim.simulation_output, 0) + + +def test_simulation_smoothing_obs_intercept(): + nobs = 10 + intercept = 100 + endog = np.ones(nobs) * intercept + mod = structural.UnobservedComponents(endog, 'rwalk', exog=np.ones(nobs)) + mod.update([1, intercept]) + sim = mod.simulation_smoother() + sim.simulate(disturbance_variates=np.zeros(mod.nobs * 2), + initial_state_variates=np.zeros(1)) + assert_equal(sim.simulated_state[0], 0) + + +def test_simulation_smoothing_state_intercept(): + nobs = 10 + intercept = 100 + endog = np.ones(nobs) * intercept + + mod = sarimax.SARIMAX(endog, order=(0, 0, 0), trend='c', + measurement_error=True) + mod.initialize_known([100], [[0]]) + mod.update([intercept, 1., 1.]) + + sim = mod.simulation_smoother() + sim.simulate(disturbance_variates=np.zeros(mod.nobs * 2), + initial_state_variates=np.zeros(1)) + assert_equal(sim.simulated_state[0], intercept) + + +def test_simulation_smoothing_state_intercept_diffuse(): + nobs = 10 + intercept = 100 + endog = np.ones(nobs) * intercept + + # Test without missing values + mod = sarimax.SARIMAX(endog, order=(0, 0, 0), trend='c', + measurement_error=True, + initialization='diffuse') + mod.update([intercept, 1., 1.]) + + sim = mod.simulation_smoother() + sim.simulate(disturbance_variates=np.zeros(mod.nobs * 2), + initial_state_variates=np.zeros(1)) + assert_equal(sim.simulated_state[0], intercept) + + # Test with missing values + endog[5] = np.nan + mod = sarimax.SARIMAX(endog, order=(0, 0, 0), trend='c', + measurement_error=True, + initialization='diffuse') + mod.update([intercept, 1., 1.]) + + sim = mod.simulation_smoother() + sim.simulate(disturbance_variates=np.zeros(mod.nobs * 2), + initial_state_variates=np.zeros(1)) + assert_equal(sim.simulated_state[0], intercept) diff --git a/statsmodels/tsa/statespace/tests/test_smoothing.py b/statsmodels/tsa/statespace/tests/test_smoothing.py new file mode 100644 index 0000000..d13a6b1 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_smoothing.py @@ -0,0 +1,1031 @@ +r""" +Tests for smoothing and estimation of unobserved states and disturbances + +- Predicted states: :math:`E(\alpha_t | Y_{t-1})` +- Filtered states: :math:`E(\alpha_t | Y_t)` +- Smoothed states: :math:`E(\alpha_t | Y_n)` +- Smoothed disturbances :math:`E(\varepsilon_t | Y_n), E(\eta_t | Y_n)` + +Tested against R (FKF, KalmanRun / KalmanSmooth), Stata (sspace), and +MATLAB (ssm toolbox) + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function +import os + +import numpy as np +from numpy.testing import assert_allclose, assert_almost_equal, assert_equal +import pandas as pd + +from statsmodels import datasets +from statsmodels.tsa.statespace import mlemodel, sarimax +from statsmodels.tsa.statespace.kalman_filter import FILTER_UNIVARIATE +from statsmodels.tsa.statespace.kalman_smoother import ( + SMOOTH_CLASSICAL, SMOOTH_ALTERNATIVE, + SMOOTH_UNIVARIATE) + +current_path = os.path.dirname(os.path.abspath(__file__)) + + +class TestStatesAR3(object): + @classmethod + def setup_class(cls, alternate_timing=False, *args, **kwargs): + # Dataset / Stata comparison + path = os.path.join(current_path, 'results', + 'results_wpi1_ar3_stata.csv') + cls.stata = pd.read_csv(path) + cls.stata.index = pd.date_range(start='1960-01-01', periods=124, + freq='QS') + # Matlab comparison + path = os.path.join(current_path, 'results', + 'results_wpi1_ar3_matlab_ssm.csv') + matlab_names = [ + 'a1', 'a2', 'a3', 'detP', 'alphahat1', 'alphahat2', 'alphahat3', + 'detV', 'eps', 'epsvar', 'eta', 'etavar' + ] + cls.matlab_ssm = pd.read_csv(path, header=None, names=matlab_names) + + cls.model = sarimax.SARIMAX( + cls.stata['wpi'], order=(3, 1, 0), simple_differencing=True, + hamilton_representation=True, *args, **kwargs + ) + + if alternate_timing: + cls.model.ssm.timing_init_filtered = True + + # Parameters from from Stata's sspace MLE estimation + params = np.r_[.5270715, .0952613, .2580355, .5307459] + cls.results = cls.model.smooth(params, cov_type='none') + + # Calculate the determinant of the covariance matrices (for easy + # comparison to other languages without having to store 2-dim arrays) + cls.results.det_predicted_state_cov = np.zeros((1, cls.model.nobs)) + cls.results.det_smoothed_state_cov = np.zeros((1, cls.model.nobs)) + for i in range(cls.model.nobs): + cls.results.det_predicted_state_cov[0, i] = np.linalg.det( + cls.results.filter_results.predicted_state_cov[:, :, i]) + cls.results.det_smoothed_state_cov[0, i] = np.linalg.det( + cls.results.smoother_results.smoothed_state_cov[:, :, i]) + + # Perform simulation smoothing + n_disturbance_variates = ( + (cls.model.k_endog + cls.model.ssm.k_posdef) * cls.model.nobs + ) + cls.sim = cls.model.simulation_smoother(filter_timing=0) + cls.sim.simulate( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + def test_predict_obs(self): + assert_almost_equal( + self.results.filter_results.predict().forecasts[0], + self.stata.iloc[1:]['dep1'], 4 + ) + + def test_standardized_residuals(self): + assert_almost_equal( + self.results.filter_results.standardized_forecasts_error[0], + self.stata.iloc[1:]['sr1'], 4 + ) + + def test_predicted_states(self): + assert_almost_equal( + self.results.filter_results.predicted_state[:, :-1].T, + self.stata.iloc[1:][['sp1', 'sp2', 'sp3']], 4 + ) + assert_almost_equal( + self.results.filter_results.predicted_state[:, :-1].T, + self.matlab_ssm[['a1', 'a2', 'a3']], 4 + ) + + def test_predicted_states_cov(self): + assert_almost_equal( + self.results.det_predicted_state_cov.T, + self.matlab_ssm[['detP']], 4 + ) + + def test_filtered_states(self): + assert_almost_equal( + self.results.filter_results.filtered_state.T, + self.stata.iloc[1:][['sf1', 'sf2', 'sf3']], 4 + ) + + def test_smoothed_states(self): + assert_almost_equal( + self.results.smoother_results.smoothed_state.T, + self.stata.iloc[1:][['sm1', 'sm2', 'sm3']], 4 + ) + assert_almost_equal( + self.results.smoother_results.smoothed_state.T, + self.matlab_ssm[['alphahat1', 'alphahat2', 'alphahat3']], 4 + ) + + def test_smoothed_states_cov(self): + assert_almost_equal( + self.results.det_smoothed_state_cov.T, + self.matlab_ssm[['detV']], 4 + ) + + def test_smoothed_measurement_disturbance(self): + assert_almost_equal( + self.results.smoother_results.smoothed_measurement_disturbance.T, + self.matlab_ssm[['eps']], 4 + ) + + def test_smoothed_measurement_disturbance_cov(self): + res = self.results.smoother_results + assert_almost_equal( + res.smoothed_measurement_disturbance_cov[0].T, + self.matlab_ssm[['epsvar']], 4 + ) + + def test_smoothed_state_disturbance(self): + assert_almost_equal( + self.results.smoother_results.smoothed_state_disturbance.T, + self.matlab_ssm[['eta']], 4 + ) + + def test_smoothed_state_disturbance_cov(self): + assert_almost_equal( + self.results.smoother_results.smoothed_state_disturbance_cov[0].T, + self.matlab_ssm[['etavar']], 4 + ) + + +class TestStatesAR3AlternateTiming(TestStatesAR3): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestStatesAR3AlternateTiming, cls).setup_class( + alternate_timing=True, *args, **kwargs) + + +class TestStatesAR3AlternativeSmoothing(TestStatesAR3): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestStatesAR3AlternativeSmoothing, cls).setup_class( + smooth_method=SMOOTH_ALTERNATIVE, *args, **kwargs) + + def test_smoothed_states(self): + # Initialization issues can change the first few smoothed states + assert_almost_equal( + self.results.smoother_results.smoothed_state.T[2:], + self.stata.iloc[3:][['sm1', 'sm2', 'sm3']], 4 + ) + assert_almost_equal( + self.results.smoother_results.smoothed_state.T[2:], + self.matlab_ssm.iloc[2:][['alphahat1', 'alphahat2', 'alphahat3']], + 4 + ) + + def test_smoothed_states_cov(self): + assert_almost_equal( + self.results.det_smoothed_state_cov.T[1:], + self.matlab_ssm.iloc[1:][['detV']], 4 + ) + + def test_smooth_method(self): + assert_equal(self.model.ssm.smooth_method, SMOOTH_ALTERNATIVE) + assert_equal(self.model.ssm._kalman_smoother.smooth_method, + SMOOTH_ALTERNATIVE) + assert_equal(self.model.ssm._kalman_smoother._smooth_method, + SMOOTH_ALTERNATIVE) + + +class TestStatesAR3UnivariateSmoothing(TestStatesAR3): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestStatesAR3UnivariateSmoothing, cls).setup_class( + filter_method=FILTER_UNIVARIATE, *args, **kwargs) + + def test_smooth_method(self): + assert_equal(self.model.ssm.smooth_method, 0) + assert_equal(self.model.ssm._kalman_smoother.smooth_method, 0) + assert_equal(self.model.ssm._kalman_smoother._smooth_method, + SMOOTH_UNIVARIATE) + + +class TestStatesMissingAR3(object): + @classmethod + def setup_class(cls, alternate_timing=False, *args, **kwargs): + # Dataset + path = os.path.join(current_path, 'results', + 'results_wpi1_ar3_stata.csv') + cls.stata = pd.read_csv(path) + cls.stata.index = pd.date_range(start='1960-01-01', periods=124, + freq='QS') + # Matlab comparison + path = os.path.join(current_path, 'results', + 'results_wpi1_missing_ar3_matlab_ssm.csv') + matlab_names = [ + 'a1', 'a2', 'a3', 'detP', 'alphahat1', 'alphahat2', 'alphahat3', + 'detV', 'eps', 'epsvar', 'eta', 'etavar' + ] + cls.matlab_ssm = pd.read_csv(path, header=None, names=matlab_names) + # KFAS comparison + path = os.path.join(current_path, 'results', + 'results_smoothing3_R.csv') + cls.R_ssm = pd.read_csv(path) + + # Create missing observations + cls.stata['dwpi'] = cls.stata['wpi'].diff() + cls.stata.loc[cls.stata.index[10:21], 'dwpi'] = np.nan + + cls.model = sarimax.SARIMAX( + cls.stata.loc[cls.stata.index[1:], 'dwpi'], order=(3, 0, 0), + hamilton_representation=True, *args, **kwargs + ) + if alternate_timing: + cls.model.ssm.timing_init_filtered = True + + # Parameters from from Stata's sspace MLE estimation + params = np.r_[.5270715, .0952613, .2580355, .5307459] + cls.results = cls.model.smooth(params, return_ssm=True) + + # Calculate the determinant of the covariance matrices (for easy + # comparison to other languages without having to store 2-dim arrays) + cls.results.det_predicted_state_cov = np.zeros((1, cls.model.nobs)) + cls.results.det_smoothed_state_cov = np.zeros((1, cls.model.nobs)) + for i in range(cls.model.nobs): + cls.results.det_predicted_state_cov[0, i] = np.linalg.det( + cls.results.predicted_state_cov[:, :, i]) + cls.results.det_smoothed_state_cov[0, i] = np.linalg.det( + cls.results.smoothed_state_cov[:, :, i]) + + # Perform simulation smoothing + n_disturbance_variates = ( + (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs + ) + cls.sim = cls.model.simulation_smoother() + cls.sim.simulate( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + def test_predicted_states(self): + assert_almost_equal( + self.results.predicted_state[:, :-1].T, + self.matlab_ssm[['a1', 'a2', 'a3']], 4 + ) + + def test_predicted_states_cov(self): + assert_almost_equal( + self.results.det_predicted_state_cov.T, + self.matlab_ssm[['detP']], 4 + ) + + def test_smoothed_states(self): + assert_almost_equal( + self.results.smoothed_state.T, + self.matlab_ssm[['alphahat1', 'alphahat2', 'alphahat3']], 4 + ) + + def test_smoothed_states_cov(self): + assert_almost_equal( + self.results.det_smoothed_state_cov.T, + self.matlab_ssm[['detV']], 4 + ) + + def test_smoothed_measurement_disturbance(self): + assert_almost_equal( + self.results.smoothed_measurement_disturbance.T, + self.matlab_ssm[['eps']], 4 + ) + + def test_smoothed_measurement_disturbance_cov(self): + assert_almost_equal( + self.results.smoothed_measurement_disturbance_cov[0].T, + self.matlab_ssm[['epsvar']], 4 + ) + + # There is a discrepancy between MATLAB ssm toolbox and + # statsmodels.tsa.statespace on the following variables in the case of + # missing data. Tests against the R package KFAS confirm our results + + def test_smoothed_state_disturbance(self): + # See note above about why this assertion is invalid + # assert_almost_equal( + # self.results.smoothed_state_disturbance.T, + # self.matlab_ssm[['eta']], 4 + # ) + assert_almost_equal( + self.results.smoothed_state_disturbance.T, + self.R_ssm[['etahat']], 9 + ) + + def test_smoothed_state_disturbance_cov(self): + # See note above about why this assertion is invalid + # assert_almost_equal( + # self.results.smoothed_state_disturbance_cov[0].T, + # self.matlab_ssm[['etavar']], 4 + # ) + assert_almost_equal( + self.results.smoothed_state_disturbance_cov[0, 0, :], + self.R_ssm['detVeta'], 9 + ) + + +class TestStatesMissingAR3AlternateTiming(TestStatesMissingAR3): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestStatesMissingAR3AlternateTiming, + cls).setup_class(alternate_timing=True, *args, **kwargs) + + +class TestStatesMissingAR3AlternativeSmoothing(TestStatesMissingAR3): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestStatesMissingAR3AlternativeSmoothing, cls).setup_class( + smooth_method=SMOOTH_ALTERNATIVE, *args, **kwargs) + + def test_smooth_method(self): + assert_equal(self.model.ssm.smooth_method, SMOOTH_ALTERNATIVE) + assert_equal(self.model.ssm._kalman_smoother.smooth_method, + SMOOTH_ALTERNATIVE) + assert_equal(self.model.ssm._kalman_smoother._smooth_method, + SMOOTH_ALTERNATIVE) + + +class TestStatesMissingAR3UnivariateSmoothing(TestStatesMissingAR3): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestStatesMissingAR3UnivariateSmoothing, cls).setup_class( + filter_method=FILTER_UNIVARIATE, *args, **kwargs) + + def test_smooth_method(self): + assert_equal(self.model.ssm.smooth_method, 0) + assert_equal(self.model.ssm._kalman_smoother.smooth_method, 0) + assert_equal(self.model.ssm._kalman_smoother._smooth_method, + SMOOTH_UNIVARIATE) + + +class TestMultivariateMissing(object): + """ + Tests for most filtering and smoothing variables against output from the + R library KFAS. + + Note that KFAS uses the univariate approach which generally will result in + different predicted values and covariance matrices associated with the + measurement equation (e.g. forecasts, etc.). In this case, although the + model is multivariate, each of the series is truly independent so the + values will be the same regardless of whether the univariate approach + is used or not. + """ + @classmethod + def setup_class(cls, **kwargs): + # Results + path = os.path.join(current_path, 'results', 'results_smoothing_R.csv') + cls.desired = pd.read_csv(path) + + # Data + dta = datasets.macrodata.load_pandas().data + dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', + freq='QS') + obs = dta[['realgdp', 'realcons', 'realinv']].diff().iloc[1:] + obs.iloc[0:50, 0] = np.nan + obs.iloc[19:70, 1] = np.nan + obs.iloc[39:90, 2] = np.nan + obs.iloc[119:130, 0] = np.nan + obs.iloc[119:130, 2] = np.nan + + # Create the model + mod = mlemodel.MLEModel(obs, k_states=3, k_posdef=3, **kwargs) + mod['design'] = np.eye(3) + mod['obs_cov'] = np.eye(3) + mod['transition'] = np.eye(3) + mod['selection'] = np.eye(3) + mod['state_cov'] = np.eye(3) + mod.initialize_approximate_diffuse(1e6) + cls.model = mod + cls.results = mod.smooth([], return_ssm=True) + + # Calculate the determinant of the covariance matrices (for easy + # comparison to other languages without having to store 2-dim arrays) + cls.results.det_scaled_smoothed_estimator_cov = ( + np.zeros((1, cls.model.nobs))) + cls.results.det_predicted_state_cov = np.zeros((1, cls.model.nobs)) + cls.results.det_smoothed_state_cov = np.zeros((1, cls.model.nobs)) + cls.results.det_smoothed_state_disturbance_cov = ( + np.zeros((1, cls.model.nobs))) + + for i in range(cls.model.nobs): + cls.results.det_scaled_smoothed_estimator_cov[0, i] = ( + np.linalg.det( + cls.results.scaled_smoothed_estimator_cov[:, :, i])) + cls.results.det_predicted_state_cov[0, i] = np.linalg.det( + cls.results.predicted_state_cov[:, :, i+1]) + cls.results.det_smoothed_state_cov[0, i] = np.linalg.det( + cls.results.smoothed_state_cov[:, :, i]) + cls.results.det_smoothed_state_disturbance_cov[0, i] = ( + np.linalg.det( + cls.results.smoothed_state_disturbance_cov[:, :, i])) + + def test_loglike(self): + assert_allclose(np.sum(self.results.llf_obs), -205310.9767) + + def test_scaled_smoothed_estimator(self): + assert_allclose( + self.results.scaled_smoothed_estimator.T, + self.desired[['r1', 'r2', 'r3']] + ) + + def test_scaled_smoothed_estimator_cov(self): + assert_allclose( + self.results.det_scaled_smoothed_estimator_cov.T, + self.desired[['detN']] + ) + + def test_forecasts(self): + assert_allclose( + self.results.forecasts.T, + self.desired[['m1', 'm2', 'm3']] + ) + + def test_forecasts_error(self): + assert_allclose( + self.results.forecasts_error.T, + self.desired[['v1', 'v2', 'v3']] + ) + + def test_forecasts_error_cov(self): + assert_allclose( + self.results.forecasts_error_cov.diagonal(), + self.desired[['F1', 'F2', 'F3']] + ) + + def test_predicted_states(self): + assert_allclose( + self.results.predicted_state[:, 1:].T, + self.desired[['a1', 'a2', 'a3']] + ) + + def test_predicted_states_cov(self): + assert_allclose( + self.results.det_predicted_state_cov.T, + self.desired[['detP']] + ) + + def test_smoothed_states(self): + assert_allclose( + self.results.smoothed_state.T, + self.desired[['alphahat1', 'alphahat2', 'alphahat3']] + ) + + def test_smoothed_states_cov(self): + assert_allclose( + self.results.det_smoothed_state_cov.T, + self.desired[['detV']] + ) + + def test_smoothed_forecasts(self): + assert_allclose( + self.results.smoothed_forecasts.T, + self.desired[['muhat1', 'muhat2', 'muhat3']] + ) + + def test_smoothed_state_disturbance(self): + assert_allclose( + self.results.smoothed_state_disturbance.T, + self.desired[['etahat1', 'etahat2', 'etahat3']] + ) + + def test_smoothed_state_disturbance_cov(self): + assert_allclose( + self.results.det_smoothed_state_disturbance_cov.T, + self.desired[['detVeta']] + ) + + def test_smoothed_measurement_disturbance(self): + assert_allclose( + self.results.smoothed_measurement_disturbance.T, + self.desired[['epshat1', 'epshat2', 'epshat3']] + ) + + def test_smoothed_measurement_disturbance_cov(self): + assert_allclose( + self.results.smoothed_measurement_disturbance_cov.diagonal(), + self.desired[['Veps1', 'Veps2', 'Veps3']] + ) + + +class TestMultivariateMissingClassicalSmoothing(TestMultivariateMissing): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestMultivariateMissingClassicalSmoothing, cls).setup_class( + smooth_method=SMOOTH_CLASSICAL, *args, **kwargs) + + def test_smooth_method(self): + assert_equal(self.model.ssm.smooth_method, SMOOTH_CLASSICAL) + assert_equal(self.model.ssm._kalman_smoother.smooth_method, + SMOOTH_CLASSICAL) + assert_equal(self.model.ssm._kalman_smoother._smooth_method, + SMOOTH_CLASSICAL) + + +class TestMultivariateMissingAlternativeSmoothing(TestMultivariateMissing): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestMultivariateMissingAlternativeSmoothing, cls).setup_class( + smooth_method=SMOOTH_ALTERNATIVE, *args, **kwargs) + + def test_smooth_method(self): + assert_equal(self.model.ssm.smooth_method, SMOOTH_ALTERNATIVE) + assert_equal(self.model.ssm._kalman_smoother.smooth_method, + SMOOTH_ALTERNATIVE) + assert_equal(self.model.ssm._kalman_smoother._smooth_method, + SMOOTH_ALTERNATIVE) + + +class TestMultivariateMissingUnivariateSmoothing(TestMultivariateMissing): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestMultivariateMissingUnivariateSmoothing, cls).setup_class( + filter_method=FILTER_UNIVARIATE, *args, **kwargs) + + def test_smooth_method(self): + assert_equal(self.model.ssm.smooth_method, 0) + assert_equal(self.model.ssm._kalman_smoother.smooth_method, 0) + assert_equal(self.model.ssm._kalman_smoother._smooth_method, + SMOOTH_UNIVARIATE) + + +class TestMultivariateVAR(object): + """ + Tests for most filtering and smoothing variables against output from the + R library KFAS. + + Note that KFAS uses the univariate approach which generally will result in + different predicted values and covariance matrices associated with the + measurement equation (e.g. forecasts, etc.). In this case, although the + model is multivariate, each of the series is truly independent so the + values will be the same regardless of whether the univariate approach is + used or not. + """ + @classmethod + def setup_class(cls, *args, **kwargs): + # Results + path = os.path.join(current_path, 'results', + 'results_smoothing2_R.csv') + cls.desired = pd.read_csv(path) + + # Data + dta = datasets.macrodata.load_pandas().data + dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', + freq='QS') + obs = np.log(dta[['realgdp', 'realcons', 'realinv']]).diff().iloc[1:] + + # Create the model + mod = mlemodel.MLEModel(obs, k_states=3, k_posdef=3, **kwargs) + mod['design'] = np.eye(3) + mod['obs_cov'] = np.array([ + [0.0000640649, 0., 0.], + [0., 0.0000572802, 0.], + [0., 0., 0.0017088585]]) + mod['transition'] = np.array([ + [-0.1119908792, 0.8441841604, 0.0238725303], + [0.2629347724, 0.4996718412, -0.0173023305], + [-3.2192369082, 4.1536028244, 0.4514379215]]) + mod['selection'] = np.eye(3) + mod['state_cov'] = np.array([ + [0.0000640649, 0.0000388496, 0.0002148769], + [0.0000388496, 0.0000572802, 0.000001555], + [0.0002148769, 0.000001555, 0.0017088585]]) + mod.initialize_approximate_diffuse(1e6) + cls.model = mod + cls.results = mod.smooth([], return_ssm=True) + + # Calculate the determinant of the covariance matrices (for easy + # comparison to other languages without having to store 2-dim arrays) + cls.results.det_scaled_smoothed_estimator_cov = ( + np.zeros((1, cls.model.nobs))) + cls.results.det_predicted_state_cov = np.zeros((1, cls.model.nobs)) + cls.results.det_smoothed_state_cov = np.zeros((1, cls.model.nobs)) + cls.results.det_smoothed_state_disturbance_cov = ( + np.zeros((1, cls.model.nobs))) + + for i in range(cls.model.nobs): + cls.results.det_scaled_smoothed_estimator_cov[0, i] = ( + np.linalg.det( + cls.results.scaled_smoothed_estimator_cov[:, :, i])) + cls.results.det_predicted_state_cov[0, i] = np.linalg.det( + cls.results.predicted_state_cov[:, :, i+1]) + cls.results.det_smoothed_state_cov[0, i] = np.linalg.det( + cls.results.smoothed_state_cov[:, :, i]) + cls.results.det_smoothed_state_disturbance_cov[0, i] = ( + np.linalg.det( + cls.results.smoothed_state_disturbance_cov[:, :, i])) + + def test_loglike(self): + assert_allclose(np.sum(self.results.llf_obs), 1695.34872) + + def test_scaled_smoothed_estimator(self): + assert_allclose( + self.results.scaled_smoothed_estimator.T, + self.desired[['r1', 'r2', 'r3']], atol=1e-4 + ) + + def test_scaled_smoothed_estimator_cov(self): + # Last obs is zero, so exclude it + assert_allclose( + np.log(self.results.det_scaled_smoothed_estimator_cov.T[:-1]), + np.log(self.desired[['detN']][:-1]), atol=1e-6 + ) + + def test_forecasts(self): + assert_allclose( + self.results.forecasts.T, + self.desired[['m1', 'm2', 'm3']], atol=1e-6 + ) + + def test_forecasts_error(self): + assert_allclose( + self.results.forecasts_error.T[:, 0], + self.desired['v1'], atol=1e-6 + ) + + def test_forecasts_error_cov(self): + assert_allclose( + self.results.forecasts_error_cov.diagonal()[:, 0], + self.desired['F1'], atol=1e-6 + ) + + def test_predicted_states(self): + assert_allclose( + self.results.predicted_state[:, 1:].T, + self.desired[['a1', 'a2', 'a3']], atol=1e-6 + ) + + def test_predicted_states_cov(self): + assert_allclose( + self.results.det_predicted_state_cov.T, + self.desired[['detP']], atol=1e-16 + ) + + def test_smoothed_states(self): + assert_allclose( + self.results.smoothed_state.T, + self.desired[['alphahat1', 'alphahat2', 'alphahat3']], atol=1e-6 + ) + + def test_smoothed_states_cov(self): + assert_allclose( + self.results.det_smoothed_state_cov.T, + self.desired[['detV']], atol=1e-16 + ) + + def test_smoothed_forecasts(self): + assert_allclose( + self.results.smoothed_forecasts.T, + self.desired[['muhat1', 'muhat2', 'muhat3']], atol=1e-6 + ) + + def test_smoothed_state_disturbance(self): + assert_allclose( + self.results.smoothed_state_disturbance.T, + self.desired[['etahat1', 'etahat2', 'etahat3']], atol=1e-6 + ) + + def test_smoothed_state_disturbance_cov(self): + assert_allclose( + self.results.det_smoothed_state_disturbance_cov.T, + self.desired[['detVeta']], atol=1e-18 + ) + + def test_smoothed_measurement_disturbance(self): + assert_allclose( + self.results.smoothed_measurement_disturbance.T, + self.desired[['epshat1', 'epshat2', 'epshat3']], atol=1e-6 + ) + + def test_smoothed_measurement_disturbance_cov(self): + assert_allclose( + self.results.smoothed_measurement_disturbance_cov.diagonal(), + self.desired[['Veps1', 'Veps2', 'Veps3']], atol=1e-6 + ) + + +class TestMultivariateVARAlternativeSmoothing(TestMultivariateVAR): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestMultivariateVARAlternativeSmoothing, cls).setup_class( + smooth_method=SMOOTH_ALTERNATIVE, *args, **kwargs) + + def test_smooth_method(self): + assert_equal(self.model.ssm.smooth_method, SMOOTH_ALTERNATIVE) + assert_equal(self.model.ssm._kalman_smoother.smooth_method, + SMOOTH_ALTERNATIVE) + assert_equal(self.model.ssm._kalman_smoother._smooth_method, + SMOOTH_ALTERNATIVE) + + +class TestMultivariateVARClassicalSmoothing(TestMultivariateVAR): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestMultivariateVARClassicalSmoothing, cls).setup_class( + smooth_method=SMOOTH_CLASSICAL, *args, **kwargs) + + def test_smooth_method(self): + assert_equal(self.model.ssm.smooth_method, SMOOTH_CLASSICAL) + assert_equal(self.model.ssm._kalman_smoother.smooth_method, + SMOOTH_CLASSICAL) + assert_equal(self.model.ssm._kalman_smoother._smooth_method, + SMOOTH_CLASSICAL) + + +class TestMultivariateVARUnivariate(object): + """ + Tests for most filtering and smoothing variables against output from the + R library KFAS. + + Note that KFAS uses the univariate approach which generally will result in + different predicted values and covariance matrices associated with the + measurement equation (e.g. forecasts, etc.). In this case, although the + model is multivariate, each of the series is truly independent so the + values will be the same regardless of whether the univariate approach is + used or not. + """ + @classmethod + def setup_class(cls, *args, **kwargs): + # Results + path = os.path.join(current_path, 'results', + 'results_smoothing2_R.csv') + cls.desired = pd.read_csv(path) + + # Data + dta = datasets.macrodata.load_pandas().data + dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', + freq='QS') + obs = np.log(dta[['realgdp', 'realcons', 'realinv']]).diff().iloc[1:] + + # Create the model + mod = mlemodel.MLEModel(obs, k_states=3, k_posdef=3, **kwargs) + mod.ssm.filter_univariate = True + mod['design'] = np.eye(3) + mod['obs_cov'] = np.array([ + [0.0000640649, 0., 0.], + [0., 0.0000572802, 0.], + [0., 0., 0.0017088585]]) + mod['transition'] = np.array([ + [-0.1119908792, 0.8441841604, 0.0238725303], + [0.2629347724, 0.4996718412, -0.0173023305], + [-3.2192369082, 4.1536028244, 0.4514379215]]) + mod['selection'] = np.eye(3) + mod['state_cov'] = np.array([ + [0.0000640649, 0.0000388496, 0.0002148769], + [0.0000388496, 0.0000572802, 0.000001555], + [0.0002148769, 0.000001555, 0.0017088585]]) + mod.initialize_approximate_diffuse(1e6) + cls.model = mod + cls.results = mod.smooth([], return_ssm=True) + + # Calculate the determinant of the covariance matrices (for easy + # comparison to other languages without having to store 2-dim arrays) + cls.results.det_scaled_smoothed_estimator_cov = ( + np.zeros((1, cls.model.nobs))) + cls.results.det_predicted_state_cov = np.zeros((1, cls.model.nobs)) + cls.results.det_smoothed_state_cov = np.zeros((1, cls.model.nobs)) + cls.results.det_smoothed_state_disturbance_cov = ( + np.zeros((1, cls.model.nobs))) + + for i in range(cls.model.nobs): + cls.results.det_scaled_smoothed_estimator_cov[0, i] = ( + np.linalg.det( + cls.results.scaled_smoothed_estimator_cov[:, :, i])) + cls.results.det_predicted_state_cov[0, i] = np.linalg.det( + cls.results.predicted_state_cov[:, :, i+1]) + cls.results.det_smoothed_state_cov[0, i] = np.linalg.det( + cls.results.smoothed_state_cov[:, :, i]) + cls.results.det_smoothed_state_disturbance_cov[0, i] = ( + np.linalg.det( + cls.results.smoothed_state_disturbance_cov[:, :, i])) + + def test_loglike(self): + assert_allclose(np.sum(self.results.llf_obs), 1695.34872) + + def test_scaled_smoothed_estimator(self): + assert_allclose( + self.results.scaled_smoothed_estimator.T, + self.desired[['r1', 'r2', 'r3']], atol=1e-4 + ) + + def test_scaled_smoothed_estimator_cov(self): + # Last obs is zero, so exclude it + assert_allclose( + np.log(self.results.det_scaled_smoothed_estimator_cov.T[:-1]), + np.log(self.desired[['detN']][:-1]) + ) + + def test_forecasts(self): + assert_allclose( + self.results.forecasts.T[:, 0], + self.desired['m1'], atol=1e-6 + ) + + def test_forecasts_error(self): + assert_allclose( + self.results.forecasts_error.T, + self.desired[['v1', 'v2', 'v3']], atol=1e-6 + ) + + def test_forecasts_error_cov(self): + assert_allclose( + self.results.forecasts_error_cov.diagonal(), + self.desired[['F1', 'F2', 'F3']] + ) + + def test_predicted_states(self): + assert_allclose( + self.results.predicted_state[:, 1:].T, + self.desired[['a1', 'a2', 'a3']], atol=1e-8 + ) + + def test_predicted_states_cov(self): + assert_allclose( + self.results.det_predicted_state_cov.T, + self.desired[['detP']], atol=1e-18 + ) + + def test_smoothed_states(self): + assert_allclose( + self.results.smoothed_state.T, + self.desired[['alphahat1', 'alphahat2', 'alphahat3']], atol=1e-6 + ) + + def test_smoothed_states_cov(self): + assert_allclose( + self.results.det_smoothed_state_cov.T, + self.desired[['detV']], atol=1e-18 + ) + + def test_smoothed_forecasts(self): + assert_allclose( + self.results.smoothed_forecasts.T, + self.desired[['muhat1', 'muhat2', 'muhat3']], atol=1e-6 + ) + + def test_smoothed_state_disturbance(self): + assert_allclose( + self.results.smoothed_state_disturbance.T, + self.desired[['etahat1', 'etahat2', 'etahat3']], atol=1e-6 + ) + + def test_smoothed_state_disturbance_cov(self): + assert_allclose( + self.results.det_smoothed_state_disturbance_cov.T, + self.desired[['detVeta']], atol=1e-18 + ) + + def test_smoothed_measurement_disturbance(self): + assert_allclose( + self.results.smoothed_measurement_disturbance.T, + self.desired[['epshat1', 'epshat2', 'epshat3']], atol=1e-6 + ) + + def test_smoothed_measurement_disturbance_cov(self): + assert_allclose( + self.results.smoothed_measurement_disturbance_cov.diagonal(), + self.desired[['Veps1', 'Veps2', 'Veps3']] + ) + + +class TestMultivariateVARUnivariateSmoothing(TestMultivariateVARUnivariate): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestMultivariateVARUnivariateSmoothing, cls).setup_class( + filter_method=FILTER_UNIVARIATE, *args, **kwargs) + + def test_filter_method(self): + assert_equal(self.model.ssm.filter_method, FILTER_UNIVARIATE) + assert_equal(self.model.ssm._kalman_smoother.filter_method, + FILTER_UNIVARIATE) + + def test_smooth_method(self): + assert_equal(self.model.ssm.smooth_method, 0) + assert_equal(self.model.ssm._kalman_smoother.smooth_method, 0) + assert_equal(self.model.ssm._kalman_smoother._smooth_method, + SMOOTH_UNIVARIATE) + + +class TestVARAutocovariances(object): + @classmethod + def setup_class(cls, which='mixed', *args, **kwargs): + # Data + dta = datasets.macrodata.load_pandas().data + dta.index = pd.date_range(start='1959-01-01', end='2009-7-01', + freq='QS') + obs = np.log(dta[['realgdp', 'realcons', 'realinv']]).diff().iloc[1:] + + if which == 'all': + obs.iloc[:50, :] = np.nan + obs.iloc[119:130, :] = np.nan + elif which == 'partial': + obs.iloc[0:50, 0] = np.nan + obs.iloc[119:130, 0] = np.nan + elif which == 'mixed': + obs.iloc[0:50, 0] = np.nan + obs.iloc[19:70, 1] = np.nan + obs.iloc[39:90, 2] = np.nan + obs.iloc[119:130, 0] = np.nan + obs.iloc[119:130, 2] = np.nan + + # Create the model with typical state space + mod = mlemodel.MLEModel(obs, k_states=3, k_posdef=3, **kwargs) + mod['design'] = np.eye(3) + mod['obs_cov'] = np.array([ + [609.0746647855, 0., 0.], + [0., 1.8774916622, 0.], + [0., 0., 124.6768281675]]) + mod['transition'] = np.array([ + [-0.8110473405, 1.8005304445, 1.0215975772], + [-1.9846632699, 2.4091302213, 1.9264449765], + [0.9181658823, -0.2442384581, -0.6393462272]]) + mod['selection'] = np.eye(3) + mod['state_cov'] = np.array([ + [1552.9758843938, 612.7185121905, 877.6157204992], + [612.7185121905, 467.8739411204, 70.608037339], + [877.6157204992, 70.608037339, 900.5440385836]]) + mod.initialize_approximate_diffuse(1e6) + cls.model = mod + cls.results = mod.smooth([], return_ssm=True) + + # Create the model with augmented state space + kwargs.pop('filter_collapsed', None) + mod = mlemodel.MLEModel(obs, k_states=6, k_posdef=3, **kwargs) + mod['design', :3, :3] = np.eye(3) + mod['obs_cov'] = np.array([ + [609.0746647855, 0., 0.], + [0., 1.8774916622, 0.], + [0., 0., 124.6768281675]]) + mod['transition', :3, :3] = np.array([ + [-0.8110473405, 1.8005304445, 1.0215975772], + [-1.9846632699, 2.4091302213, 1.9264449765], + [0.9181658823, -0.2442384581, -0.6393462272]]) + mod['transition', 3:, :3] = np.eye(3) + mod['selection', :3, :3] = np.eye(3) + mod['state_cov'] = np.array([ + [1552.9758843938, 612.7185121905, 877.6157204992], + [612.7185121905, 467.8739411204, 70.608037339], + [877.6157204992, 70.608037339, 900.5440385836]]) + + mod.initialize_approximate_diffuse(1e6) + cls.augmented_model = mod + cls.augmented_results = mod.smooth([], return_ssm=True) + + def test_smoothed_state_autocov(self): + # Cov(\alpha_{t+1}, \alpha_t) + # Initialization makes these two methods slightly different for the + # first few observations + assert_allclose(self.results.smoothed_state_autocov[:, :, 0:5], + self.augmented_results.smoothed_state_cov[:3, 3:, 1:6], + atol=1e-4) + assert_allclose(self.results.smoothed_state_autocov[:, :, 5:-1], + self.augmented_results.smoothed_state_cov[:3, 3:, 6:], + atol=1e-7) + + +class TestVARAutocovariancesAlternativeSmoothing(TestVARAutocovariances): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestVARAutocovariancesAlternativeSmoothing, cls).setup_class( + smooth_method=SMOOTH_ALTERNATIVE, *args, **kwargs) + + def test_smooth_method(self): + assert_equal(self.model.ssm.smooth_method, SMOOTH_ALTERNATIVE) + assert_equal(self.model.ssm._kalman_smoother.smooth_method, + SMOOTH_ALTERNATIVE) + assert_equal(self.model.ssm._kalman_smoother._smooth_method, + SMOOTH_ALTERNATIVE) + + +class TestVARAutocovariancesClassicalSmoothing(TestVARAutocovariances): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestVARAutocovariancesClassicalSmoothing, cls).setup_class( + smooth_method=SMOOTH_CLASSICAL, *args, **kwargs) + + def test_smooth_method(self): + assert_equal(self.model.ssm.smooth_method, SMOOTH_CLASSICAL) + assert_equal(self.model.ssm._kalman_smoother.smooth_method, + SMOOTH_CLASSICAL) + assert_equal(self.model.ssm._kalman_smoother._smooth_method, + SMOOTH_CLASSICAL) + + +class TestVARAutocovariancesUnivariateSmoothing(TestVARAutocovariances): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestVARAutocovariancesUnivariateSmoothing, cls).setup_class( + filter_method=FILTER_UNIVARIATE, *args, **kwargs) + + def test_filter_method(self): + assert_equal(self.model.ssm.filter_method, FILTER_UNIVARIATE) + assert_equal(self.model.ssm._kalman_smoother.filter_method, + FILTER_UNIVARIATE) + + def test_smooth_method(self): + assert_equal(self.model.ssm.smooth_method, 0) + assert_equal(self.model.ssm._kalman_smoother.smooth_method, 0) + assert_equal(self.model.ssm._kalman_smoother._smooth_method, + SMOOTH_UNIVARIATE) diff --git a/statsmodels/tsa/statespace/tests/test_structural.py b/statsmodels/tsa/statespace/tests/test_structural.py new file mode 100644 index 0000000..10fa4b6 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_structural.py @@ -0,0 +1,458 @@ +""" +Tests for structural time series models + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +from statsmodels.compat import PY3 + +import warnings + +import numpy as np +from numpy.testing import assert_equal, assert_allclose +import pandas as pd +import pytest + +from statsmodels.datasets import macrodata +from statsmodels.tools.sm_exceptions import SpecificationWarning +from statsmodels.tsa.statespace import structural +from statsmodels.tsa.statespace.structural import UnobservedComponents +from statsmodels.tsa.statespace.tests.results import results_structural + +dta = macrodata.load_pandas().data +dta.index = pd.date_range(start='1959-01-01', end='2009-07-01', freq='QS') + + +def run_ucm(name): + true = getattr(results_structural, name) + + for model in true['models']: + kwargs = model.copy() + kwargs.update(true['kwargs']) + + # Make a copy of the data + values = dta.copy() + + freq = kwargs.pop('freq', None) + if freq is not None: + values.index = pd.date_range(start='1959-01-01', periods=len(dta), + freq=freq) + + # Test pandas exog + if 'exog' in kwargs: + # Default value here is pd.Series object + exog = np.log(values['realgdp']) + + # Also allow a check with a 1-dim numpy array + if kwargs['exog'] == 'numpy': + exog = exog.values.squeeze() + + kwargs['exog'] = exog + + # Create the model + mod = UnobservedComponents(values['unemp'], **kwargs) + + # Smoke test for starting parameters, untransform, transform + # Also test that transform and untransform are inverses + mod.start_params + roundtrip = mod.transform_params( + mod.untransform_params(mod.start_params)) + assert_allclose(mod.start_params, roundtrip) + + # Fit the model at the true parameters + res_true = mod.filter(true['params']) + + # Check that the cycle bounds were computed correctly + freqstr = freq[0] if freq is not None else values.index.freqstr[0] + if 'cycle_period_bounds' in kwargs: + cycle_period_bounds = kwargs['cycle_period_bounds'] + elif freqstr == 'A': + cycle_period_bounds = (1.5, 12) + elif freqstr == 'Q': + cycle_period_bounds = (1.5*4, 12*4) + elif freqstr == 'M': + cycle_period_bounds = (1.5*12, 12*12) + else: + # If we have no information on data frequency, require the + # cycle frequency to be between 0 and pi + cycle_period_bounds = (2, np.inf) + + # Test that the cycle frequency bound is correct + assert_equal(mod.cycle_frequency_bound, + (2*np.pi / cycle_period_bounds[1], + 2*np.pi / cycle_period_bounds[0])) + + # Test that the likelihood is correct + rtol = true.get('rtol', 1e-7) + atol = true.get('atol', 0) + assert_allclose(res_true.llf, true['llf'], rtol=rtol, atol=atol) + + # Optional smoke test for plot_components + try: + import matplotlib.pyplot as plt + try: + from pandas.plotting import register_matplotlib_converters + register_matplotlib_converters() + except ImportError: + pass + fig = plt.figure() + res_true.plot_components(fig=fig) + except ImportError: + pass + + # Now fit the model via MLE + with warnings.catch_warnings(record=True): + res = mod.fit(disp=-1) + # If we found a higher likelihood, no problem; otherwise check + # that we're very close to that found by R + if res.llf <= true['llf']: + assert_allclose(res.llf, true['llf'], rtol=1e-4) + + # Smoke test for summary + res.summary() + + +def test_irregular(close_figures): + run_ucm('irregular') + + +def test_fixed_intercept(close_figures): + # Clear warnings + structural.__warningregistry__ = {} + warning = SpecificationWarning if PY3 else None + match = 'Specified model does not contain' if PY3 else None + with pytest.warns(warning, match=match): + run_ucm('fixed_intercept') + + +def test_deterministic_constant(close_figures): + run_ucm('deterministic_constant') + + +def test_random_walk(close_figures): + run_ucm('random_walk') + + +def test_local_level(close_figures): + run_ucm('local_level') + + +def test_fixed_slope(close_figures): + warning = SpecificationWarning if PY3 else None + match = 'irregular component added' if PY3 else None + with pytest.warns(warning, match=match): + run_ucm('fixed_slope') + + +def test_fixed_slope_warn(close_figures): + # Clear warnings + structural.__warningregistry__ = {} + + warning = SpecificationWarning if PY3 else None + match = 'irregular component added' if PY3 else None + with pytest.warns(warning, match=match): + run_ucm('fixed_slope') + + +def test_deterministic_trend(close_figures): + run_ucm('deterministic_trend') + + +def test_random_walk_with_drift(close_figures): + run_ucm('random_walk_with_drift') + + +def test_local_linear_deterministic_trend(close_figures): + run_ucm('local_linear_deterministic_trend') + + +def test_local_linear_trend(close_figures): + run_ucm('local_linear_trend') + + +def test_smooth_trend(close_figures): + run_ucm('smooth_trend') + + +def test_random_trend(close_figures): + run_ucm('random_trend') + + +def test_cycle(close_figures): + run_ucm('cycle') + + +def test_seasonal(close_figures): + run_ucm('seasonal') + + +def test_freq_seasonal(close_figures): + run_ucm('freq_seasonal') + + +def test_reg(close_figures): + run_ucm('reg') + + +def test_rtrend_ar1(close_figures): + run_ucm('rtrend_ar1') + + +@pytest.mark.slow +def test_lltrend_cycle_seasonal_reg_ar1(close_figures): + run_ucm('lltrend_cycle_seasonal_reg_ar1') + + +def test_mle_reg(): + endog = np.arange(100)*1.0 + exog = endog*2 + # Make the fit not-quite-perfect + endog[::2] += 0.01 + endog[1::2] -= 0.01 + + with warnings.catch_warnings(record=True): + mod1 = UnobservedComponents(endog, irregular=True, + exog=exog, mle_regression=False) + res1 = mod1.fit(disp=-1) + + mod2 = UnobservedComponents(endog, irregular=True, + exog=exog, mle_regression=True) + res2 = mod2.fit(disp=-1) + + assert_allclose(res1.regression_coefficients.filtered[0, -1], + 0.5, + atol=1e-5) + assert_allclose(res2.params[1], 0.5, atol=1e-5) + + +def test_specifications(): + # Clear warnings + structural.__warningregistry__ = {} + + endog = [1, 2] + + # Test that when nothing specified, a warning is issued and the model that + # is fit is one with irregular=True and nothing else. + warning = SpecificationWarning if PY3 else None + match = 'irregular component added' if PY3 else None + with pytest.warns(warning, match=match): + mod = UnobservedComponents(endog) + assert_equal(mod.trend_specification, 'irregular') + + # Test an invalid string trend specification + with pytest.raises(ValueError): + UnobservedComponents(endog, 'invalid spec') + + # Test that if a trend component is specified without a level component, + # a warning is issued and a deterministic level component is added + warning = SpecificationWarning if PY3 else None + match = 'Trend component specified without' if PY3 else None + with pytest.warns(warning, match=match): + mod = UnobservedComponents(endog, trend=True, irregular=True) + assert_equal(mod.trend_specification, 'deterministic trend') + + # Test that if a string specification is provided, a warning is issued if + # the boolean attributes are also specified + trend_attributes = ['irregular', 'trend', 'stochastic_level', + 'stochastic_trend'] + for attribute in trend_attributes: + kwargs = {attribute: True} + + warning = SpecificationWarning if PY3 else None + match = 'may be overridden when the trend' if PY3 else None + with pytest.warns(warning, match=match): + UnobservedComponents(endog, 'deterministic trend', **kwargs) + + # Test that a seasonal with period less than two is invalid + with pytest.raises(ValueError): + UnobservedComponents(endog, seasonal=1) + + +def test_start_params(): + # Test that the behavior is correct for multiple exogenous and / or + # autoregressive components + + # Parameters + nobs = int(1e4) + beta = np.r_[10, -2] + phi = np.r_[0.5, 0.1] + + # Generate data + np.random.seed(1234) + exog = np.c_[np.ones(nobs), np.arange(nobs)*1.0] + eps = np.random.normal(size=nobs) + endog = np.zeros(nobs+2) + for t in range(1, nobs): + endog[t+1] = phi[0] * endog[t] + phi[1] * endog[t-1] + eps[t] + endog = endog[2:] + endog += np.dot(exog, beta) + + # Now just test that the starting parameters are approximately what they + # ought to be (could make this arbitrarily precise by increasing nobs, + # but that would slow down the test for no real gain) + mod = UnobservedComponents(endog, exog=exog, autoregressive=2) + assert_allclose(mod.start_params, [1., 0.5, 0.1, 10, -2], atol=1e-1) + + +def test_forecast(): + endog = np.arange(50) + 10 + exog = np.arange(50) + + mod = UnobservedComponents(endog, exog=exog, level='dconstant', seasonal=4) + res = mod.smooth([1e-15, 0, 1]) + + actual = res.forecast(10, exog=np.arange(50, 60)[:, np.newaxis]) + desired = np.arange(50, 60) + 10 + assert_allclose(actual, desired) + + +def test_misc_exog(): + # Tests for missing data + nobs = 20 + k_endog = 1 + np.random.seed(1208) + endog = np.random.normal(size=(nobs, k_endog)) + endog[:4, 0] = np.nan + exog1 = np.random.normal(size=(nobs, 1)) + exog2 = np.random.normal(size=(nobs, 2)) + + index = pd.date_range('1970-01-01', freq='QS', periods=nobs) + endog_pd = pd.DataFrame(endog, index=index) + exog1_pd = pd.Series(exog1.squeeze(), index=index) + exog2_pd = pd.DataFrame(exog2, index=index) + + models = [ + UnobservedComponents(endog, 'llevel', exog=exog1), + UnobservedComponents(endog, 'llevel', exog=exog2), + UnobservedComponents(endog, 'llevel', exog=exog2), + UnobservedComponents(endog_pd, 'llevel', exog=exog1_pd), + UnobservedComponents(endog_pd, 'llevel', exog=exog2_pd), + UnobservedComponents(endog_pd, 'llevel', exog=exog2_pd), + ] + + for mod in models: + # Smoke tests + mod.start_params + res = mod.fit(disp=False) + res.summary() + res.predict() + res.predict(dynamic=True) + res.get_prediction() + + oos_exog = np.random.normal(size=(1, mod.k_exog)) + res.forecast(steps=1, exog=oos_exog) + res.get_forecast(steps=1, exog=oos_exog) + + # Smoke tests for invalid exog + oos_exog = np.random.normal(size=(1)) + with pytest.raises(ValueError): + res.forecast(steps=1, exog=oos_exog) + + oos_exog = np.random.normal(size=(2, mod.k_exog)) + with pytest.raises(ValueError): + res.forecast(steps=1, exog=oos_exog) + + oos_exog = np.random.normal(size=(1, mod.k_exog + 1)) + with pytest.raises(ValueError): + res.forecast(steps=1, exog=oos_exog) + + # Test invalid model specifications + with pytest.raises(ValueError): + UnobservedComponents(endog, 'llevel', exog=np.zeros((10, 4))) + + +def test_predict_custom_index(): + np.random.seed(328423) + endog = pd.DataFrame(np.random.normal(size=50)) + mod = structural.UnobservedComponents(endog, 'llevel') + res = mod.smooth(mod.start_params) + out = res.predict(start=1, end=1, index=['a']) + assert_equal(out.index.equals(pd.Index(['a'])), True) + + +def test_matrices_somewhat_complicated_model(): + values = dta.copy() + + model = UnobservedComponents(values['unemp'], + level='lltrend', + freq_seasonal=[{'period': 4}, + {'period': 9, 'harmonics': 3}], + cycle=True, + cycle_period_bounds=[2, 30], + damped_cycle=True, + stochastic_freq_seasonal=[True, False], + stochastic_cycle=True + ) + # Selected parameters + params = [1, # irregular_var + 3, 4, # lltrend parameters: level_var, trend_var + 5, # freq_seasonal parameters: freq_seasonal_var_0 + # cycle parameters: cycle_var, cycle_freq, cycle_damp + 6, 2*np.pi/30., .9 + ] + model.update(params) + + # Check scalar properties + assert_equal(model.k_states, 2 + 4 + 6 + 2) + assert_equal(model.k_state_cov, 2 + 1 + 0 + 1) + assert_equal(model.loglikelihood_burn, 2 + 4 + 6 + 2) + assert_allclose(model.ssm.k_posdef, 2 + 4 + 0 + 2) + assert_equal(model.k_params, len(params)) + + # Check the statespace model matrices against hand-constructed answers + # We group the terms by the component + expected_design = np.r_[[1, 0], + [1, 0, 1, 0], + [1, 0, 1, 0, 1, 0], + [1, 0]].reshape(1, 14) + assert_allclose(model.ssm.design[:, :, 0], expected_design) + + expected_transition = __direct_sum([ + np.array([[1, 1], + [0, 1]]), + np.array([[0, 1, 0, 0], + [-1, 0, 0, 0], + [0, 0, -1, 0], + [0, 0, 0, -1]]), + np.array([[np.cos(2*np.pi*1/9.), np.sin(2*np.pi*1/9.), 0, 0, 0, 0], + [-np.sin(2*np.pi*1/9.), np.cos(2*np.pi*1/9.), 0, 0, 0, 0], + [0, 0, np.cos(2*np.pi*2/9.), np.sin(2*np.pi*2/9.), 0, 0], + [0, 0, -np.sin(2*np.pi*2/9.), np.cos(2*np.pi*2/9.), 0, 0], + [0, 0, 0, 0, np.cos(2*np.pi/3.), np.sin(2*np.pi/3.)], + [0, 0, 0, 0, -np.sin(2*np.pi/3.), np.cos(2*np.pi/3.)]]), + np.array([[.9*np.cos(2*np.pi/30.), .9*np.sin(2*np.pi/30.)], + [-.9*np.sin(2*np.pi/30.), .9*np.cos(2*np.pi/30.)]]) + ]) + assert_allclose( + model.ssm.transition[:, :, 0], expected_transition, atol=1e-7) + + # Since the second seasonal term is not stochastic, + # the dimensionality of the state disturbance is 14 - 6 = 8 + expected_selection = np.zeros((14, 14 - 6)) + expected_selection[0:2, 0:2] = np.eye(2) + expected_selection[2:6, 2:6] = np.eye(4) + expected_selection[-2:, -2:] = np.eye(2) + assert_allclose(model.ssm.selection[:, :, 0], expected_selection) + + expected_state_cov = __direct_sum([ + np.diag(params[1:3]), + np.eye(4)*params[3], + np.eye(2)*params[4] + ]) + assert_allclose(model.ssm.state_cov[:, :, 0], expected_state_cov) + + +def __direct_sum(square_matrices): + """Compute the matrix direct sum of an iterable of square numpy 2-d arrays + """ + new_shape = np.sum([m.shape for m in square_matrices], axis=0) + new_array = np.zeros(new_shape) + offset = 0 + for m in square_matrices: + rows, cols = m.shape + assert rows == cols + new_array[offset:offset + rows, offset:offset + rows] = m + offset += rows + return new_array diff --git a/statsmodels/tsa/statespace/tests/test_tools.py b/statsmodels/tsa/statespace/tests/test_tools.py new file mode 100644 index 0000000..ec442d0 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_tools.py @@ -0,0 +1,972 @@ +""" +Tests for tools + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +import pytest +import numpy as np +from numpy.testing import (assert_allclose, assert_equal, assert_array_less, + assert_array_equal, assert_almost_equal) +import pandas as pd +from scipy.linalg import solve_discrete_lyapunov + +from statsmodels.tsa.statespace import tools +from statsmodels.tsa.api import acovf + + +class TestCompanionMatrix(object): + + cases = [ + (2, np.array([[0, 1], [0, 0]])), + ([1, -1, -2], np.array([[1, 1], + [2, 0]])), + ([1, -1, -2, -3], np.array([[1, 1, 0], + [2, 0, 1], + [3, 0, 0]])), + ([1, -np.array([[1, 2], [3, 4]]), -np.array([[5, 6], [7, 8]])], + np.array([[1, 2, 5, 6], + [3, 4, 7, 8], + [1, 0, 0, 0], + [0, 1, 0, 0]]).T), + # GH 5570 + (np.int64(2), np.array([[0, 1], [0, 0]])) + ] + + def test_cases(self): + for polynomial, result in self.cases: + assert_equal(tools.companion_matrix(polynomial), result) + + +class TestDiff(object): + + x = np.arange(10) + cases = [ + # diff = 1 + ([1, 2, 3], 1, None, 1, [1, 1]), + # diff = 2 + (x, 2, None, 1, [0]*8), + # diff = 1, seasonal_diff=1, seasonal_periods=4 + (x, 1, 1, 4, [0]*5), + (x**2, 1, 1, 4, [8]*5), + (x**3, 1, 1, 4, [60, 84, 108, 132, 156]), + # diff = 1, seasonal_diff=2, seasonal_periods=2 + (x, 1, 2, 2, [0]*5), + (x**2, 1, 2, 2, [0]*5), + (x**3, 1, 2, 2, [24]*5), + (x**4, 1, 2, 2, [240, 336, 432, 528, 624]), + ] + + # TODO: use pytest.mark.parametrize? + def test_cases(self): + # Basic cases + for series, diff, seas_diff, seasonal_periods, result in self.cases: + seasonal_diff = seas_diff + + # Test numpy array + x = tools.diff(series, diff, seasonal_diff, seasonal_periods) + assert_almost_equal(x, result) + + # Test as Pandas Series + series = pd.Series(series) + + # Rewrite to test as n-dimensional array + series = np.c_[series, series] + result = np.c_[result, result] + + # Test Numpy array + x = tools.diff(series, diff, seasonal_diff, seasonal_periods) + assert_almost_equal(x, result) + + # Test as Pandas Dataframe + series = pd.DataFrame(series) + x = tools.diff(series, diff, seasonal_diff, seasonal_periods) + assert_almost_equal(x, result) + + +class TestSolveDiscreteLyapunov(object): + + def solve_dicrete_lyapunov_direct(self, a, q, complex_step=False): + # This is the discrete Lyapunov solver as "real function of real + # variables": the difference between this and the usual, complex, + # version is that in the Kronecker product the second argument is + # *not* conjugated here. + if not complex_step: + lhs = np.kron(a, a.conj()) + lhs = np.eye(lhs.shape[0]) - lhs + x = np.linalg.solve(lhs, q.flatten()) + else: + lhs = np.kron(a, a) + lhs = np.eye(lhs.shape[0]) - lhs + x = np.linalg.solve(lhs, q.flatten()) + + return np.reshape(x, q.shape) + + def test_univariate(self): + # Real case + a = np.array([[0.5]]) + q = np.array([[10.]]) + actual = tools.solve_discrete_lyapunov(a, q) + desired = solve_discrete_lyapunov(a, q) + assert_allclose(actual, desired) + + # Complex case (where the Lyapunov equation is taken as a complex + # function) + a = np.array([[0.5+1j]]) + q = np.array([[10.]]) + actual = tools.solve_discrete_lyapunov(a, q) + desired = solve_discrete_lyapunov(a, q) + assert_allclose(actual, desired) + + # Complex case (where the Lyapunov equation is taken as a real + # function) + a = np.array([[0.5+1j]]) + q = np.array([[10.]]) + actual = tools.solve_discrete_lyapunov(a, q, complex_step=True) + desired = self.solve_dicrete_lyapunov_direct(a, q, complex_step=True) + assert_allclose(actual, desired) + + def test_multivariate(self): + # Real case + a = tools.companion_matrix([1, -0.4, 0.5]) + q = np.diag([10., 5.]) + actual = tools.solve_discrete_lyapunov(a, q) + desired = solve_discrete_lyapunov(a, q) + assert_allclose(actual, desired) + + # Complex case (where the Lyapunov equation is taken as a complex + # function) + a = tools.companion_matrix([1, -0.4+0.1j, 0.5]) + q = np.diag([10., 5.]) + actual = tools.solve_discrete_lyapunov(a, q, complex_step=False) + desired = self.solve_dicrete_lyapunov_direct(a, q, complex_step=False) + assert_allclose(actual, desired) + + # Complex case (where the Lyapunov equation is taken as a real + # function) + a = tools.companion_matrix([1, -0.4+0.1j, 0.5]) + q = np.diag([10., 5.]) + actual = tools.solve_discrete_lyapunov(a, q, complex_step=True) + desired = self.solve_dicrete_lyapunov_direct(a, q, complex_step=True) + assert_allclose(actual, desired) + + +class TestConcat(object): + + x = np.arange(10) + + valid = [ + (((1, 2, 3), (4,)), (1, 2, 3, 4)), + (((1, 2, 3), [4]), (1, 2, 3, 4)), + (([1, 2, 3], np.r_[4]), (1, 2, 3, 4)), + ((np.r_[1, 2, 3], pd.Series([4])), 0, True, (1, 2, 3, 4)), + ((pd.Series([1, 2, 3]), pd.Series([4])), 0, True, (1, 2, 3, 4)), + ((np.c_[x[:2], x[:2]], np.c_[x[2:3], x[2:3]]), np.c_[x[:3], x[:3]]), + ((np.c_[x[:2], x[:2]].T, np.c_[x[2:3], x[2:3]].T), + 1, np.c_[x[:3], x[:3]].T), + ((pd.DataFrame(np.c_[x[:2], x[:2]]), np.c_[x[2:3], x[2:3]]), + 0, True, np.c_[x[:3], x[:3]]), + ] + + invalid = [ + (((1, 2, 3), pd.Series([4])), ValueError), + (((1, 2, 3), np.array([[1, 2]])), ValueError) + ] + + def test_valid(self): + for args in self.valid: + assert_array_equal(tools.concat(*args[:-1]), args[-1]) + + def test_invalid(self): + for args in self.invalid: + with pytest.raises(args[-1]): + tools.concat(*args[:-1]) + + +class TestIsInvertible(object): + + cases = [ + ([1, -0.5], True), + ([1, 1-1e-9], True), + ([1, 1], False), + ([1, 0.9, 0.1], True), + (np.array([1, 0.9, 0.1]), True), + (pd.Series([1, 0.9, 0.1]), True) + ] + + def test_cases(self): + for polynomial, invertible in self.cases: + assert_equal(tools.is_invertible(polynomial), invertible) + + +class TestConstrainStationaryUnivariate(object): + + cases = [ + (np.array([2.]), -2./((1+2.**2)**0.5)) + ] + + def test_cases(self): + for unconstrained, constrained in self.cases: + result = tools.constrain_stationary_univariate(unconstrained) + assert_equal(result, constrained) + + +class TestUnconstrainStationaryUnivariate(object): + + cases = [ + (np.array([-2./((1+2.**2)**0.5)]), np.array([2.])) + ] + + def test_cases(self): + for constrained, unconstrained in self.cases: + result = tools.unconstrain_stationary_univariate(constrained) + assert_allclose(result, unconstrained) + + +class TestStationaryUnivariate(object): + # Test that the constraint and unconstraint functions are inverses + + constrained_cases = [ + np.array([0]), np.array([0.1]), np.array([-0.5]), np.array([0.999])] + unconstrained_cases = [ + np.array([10.]), np.array([-40.42]), np.array([0.123])] + + def test_cases(self): + for constrained in self.constrained_cases: + unconstrained = tools.unconstrain_stationary_univariate(constrained) # noqa:E501 + reconstrained = tools.constrain_stationary_univariate(unconstrained) # noqa:E501 + assert_allclose(reconstrained, constrained) + + for unconstrained in self.unconstrained_cases: + constrained = tools.constrain_stationary_univariate(unconstrained) + reunconstrained = tools.unconstrain_stationary_univariate(constrained) # noqa:E501 + assert_allclose(reunconstrained, unconstrained) + + +class TestValidateMatrixShape(object): + # name, shape, nrows, ncols, nobs + valid = [ + ('TEST', (5, 2), 5, 2, None), + ('TEST', (5, 2), 5, 2, 10), + ('TEST', (5, 2, 10), 5, 2, 10), + ] + invalid = [ + ('TEST', (5,), 5, None, None), + ('TEST', (5, 1, 1, 1), 5, 1, None), + ('TEST', (5, 2), 10, 2, None), + ('TEST', (5, 2), 5, 1, None), + ('TEST', (5, 2, 10), 5, 2, None), + ('TEST', (5, 2, 10), 5, 2, 5), + ] + + def test_valid_cases(self): + for args in self.valid: + # Just testing that no exception is raised + tools.validate_matrix_shape(*args) + + def test_invalid_cases(self): + for args in self.invalid: + with pytest.raises(ValueError): + tools.validate_matrix_shape(*args) + + +class TestValidateVectorShape(object): + # name, shape, nrows, ncols, nobs + valid = [ + ('TEST', (5,), 5, None), + ('TEST', (5,), 5, 10), + ('TEST', (5, 10), 5, 10), + ] + invalid = [ + ('TEST', (5, 2, 10), 5, 10), + ('TEST', (5,), 10, None), + ('TEST', (5, 10), 5, None), + ('TEST', (5, 10), 5, 5), + ] + + def test_valid_cases(self): + for args in self.valid: + # Just testing that no exception is raised + tools.validate_vector_shape(*args) + + def test_invalid_cases(self): + for args in self.invalid: + with pytest.raises(ValueError): + tools.validate_vector_shape(*args) + + +def test_multivariate_acovf(): + _acovf = tools._compute_multivariate_acovf_from_coefficients + + # Test for a VAR(1) process. From Lutkepohl (2007), pages 27-28. + # See (2.1.14) for Phi_1, (2.1.33) for Sigma_u, and (2.1.34) for Gamma_0 + Sigma_u = np.array([[2.25, 0, 0], + [0, 1.0, 0.5], + [0, 0.5, 0.74]]) + Phi_1 = np.array([[0.5, 0, 0], + [0.1, 0.1, 0.3], + [0, 0.2, 0.3]]) + Gamma_0 = np.array([[3.0, 0.161, 0.019], + [0.161, 1.172, 0.674], + [0.019, 0.674, 0.954]]) + assert_allclose(_acovf([Phi_1], Sigma_u)[0], Gamma_0, atol=1e-3) + + # Test for a VAR(2) process. From Lutkepohl (2007), pages 28-29 + # See (2.1.40) for Phi_1, Phi_2, (2.1.14) for Sigma_u, and (2.1.42) for + # Gamma_0, Gamma_1 + Sigma_u = np.diag([0.09, 0.04]) + Phi_1 = np.array([[0.5, 0.1], + [0.4, 0.5]]) + Phi_2 = np.array([[0, 0], + [0.25, 0]]) + Gamma_0 = np.array([[0.131, 0.066], + [0.066, 0.181]]) + Gamma_1 = np.array([[0.072, 0.051], + [0.104, 0.143]]) + Gamma_2 = np.array([[0.046, 0.040], + [0.113, 0.108]]) + Gamma_3 = np.array([[0.035, 0.031], + [0.093, 0.083]]) + + assert_allclose( + _acovf([Phi_1, Phi_2], Sigma_u, maxlag=0), + [Gamma_0], atol=1e-3) + + assert_allclose( + _acovf([Phi_1, Phi_2], Sigma_u, maxlag=1), + [Gamma_0, Gamma_1], atol=1e-3) + + assert_allclose( + _acovf([Phi_1, Phi_2], Sigma_u), + [Gamma_0, Gamma_1], atol=1e-3) + + assert_allclose( + _acovf([Phi_1, Phi_2], Sigma_u, maxlag=2), + [Gamma_0, Gamma_1, Gamma_2], atol=1e-3) + + assert_allclose( + _acovf([Phi_1, Phi_2], Sigma_u, maxlag=3), + [Gamma_0, Gamma_1, Gamma_2, Gamma_3], atol=1e-3) + + # Test sample acovf in the univariate case against sm.tsa.acovf + x = np.arange(20)*1.0 + assert_allclose( + np.squeeze(tools._compute_multivariate_sample_acovf(x, maxlag=4)), + acovf(x, fft=False)[:5]) + + +def test_multivariate_pacf(): + # Test sample acovf in the univariate case against sm.tsa.acovf + np.random.seed(1234) + x = np.arange(10000) + y = np.random.normal(size=10000) + # Note: could make this test more precise with higher nobs, but no need to + assert_allclose( + tools._compute_multivariate_sample_pacf(np.c_[x, y], maxlag=1)[0], + np.diag([1, 0]), atol=1e-2) + + +class TestConstrainStationaryMultivariate(object): + + cases = [ + # This is the same test as the univariate case above, except notice + # the sign difference; this is an array input / output + (np.array([[2.]]), np.eye(1), np.array([[2./((1+2.**2)**0.5)]])), + # Same as above, but now a list input / output + ([np.array([[2.]])], np.eye(1), [np.array([[2./((1+2.**2)**0.5)]])]) + ] + + eigval_cases = [ + [np.array([[0]])], + [np.array([[100]]), np.array([[50]])], + [np.array([[30, 1], [-23, 15]]), np.array([[10, .3], [.5, -30]])], + ] + + def test_cases(self): + # Test against known results + for unconstrained, error_variance, constrained in self.cases: + result = tools.constrain_stationary_multivariate( + unconstrained, error_variance) + assert_allclose(result[0], constrained) + + # Test that the constrained results correspond to companion matrices + # with eigenvalues less than 1 in modulus + for unconstrained in self.eigval_cases: + if type(unconstrained) == list: + cov = np.eye(unconstrained[0].shape[0]) + else: + cov = np.eye(unconstrained.shape[0]) + constrained, _ = tools.constrain_stationary_multivariate(unconstrained, cov) # noqa:E501 + companion = tools.companion_matrix( + [1] + [-np.squeeze(constrained[i]) + for i in range(len(constrained))] + ).T + assert_array_less(np.abs(np.linalg.eigvals(companion)), 1) + + +class TestUnconstrainStationaryMultivariate(object): + + cases = [ + # This is the same test as the univariate case above, except notice + # the sign difference; this is an array input / output + (np.array([[2./((1+2.**2)**0.5)]]), np.eye(1), np.array([[2.]])), + # Same as above, but now a list input / output + ([np.array([[2./((1+2.**2)**0.5)]])], np.eye(1), [np.array([[2.]])]) + ] + + def test_cases(self): + for constrained, error_variance, unconstrained in self.cases: + result = tools.unconstrain_stationary_multivariate( + constrained, error_variance) + assert_allclose(result[0], unconstrained) + + +class TestStationaryMultivariate(object): + # Test that the constraint and unconstraint functions are inverses + + constrained_cases = [ + np.array([[0]]), np.array([[0.1]]), + np.array([[-0.5]]), np.array([[0.999]]), + [np.array([[0]])], + np.array([[0.8, -0.2]]), + [np.array([[0.8]]), np.array([[-0.2]])], + [np.array([[0.3, 0.01], [-0.23, 0.15]]), + np.array([[0.1, 0.03], [0.05, -0.3]])], + np.array([[0.3, 0.01, 0.1, 0.03], [-0.23, 0.15, 0.05, -0.3]]) + ] + unconstrained_cases = [ + np.array([[0]]), np.array([[-40.42]]), np.array([[0.123]]), + [np.array([[0]])], + np.array([[100, 50]]), + [np.array([[100]]), np.array([[50]])], + [np.array([[30, 1], [-23, 15]]), np.array([[10, .3], [.5, -30]])], + np.array([[30, 1, 10, .3], [-23, 15, .5, -30]]) + ] + + def test_cases(self): + for constrained in self.constrained_cases: + if type(constrained) == list: + cov = np.eye(constrained[0].shape[0]) + else: + cov = np.eye(constrained.shape[0]) + unconstrained, _ = tools.unconstrain_stationary_multivariate(constrained, cov) # noqa:E501 + reconstrained, _ = tools.constrain_stationary_multivariate(unconstrained, cov) # noqa:E501 + assert_allclose(reconstrained, constrained) + + for unconstrained in self.unconstrained_cases: + if type(unconstrained) == list: + cov = np.eye(unconstrained[0].shape[0]) + else: + cov = np.eye(unconstrained.shape[0]) + constrained, _ = tools.constrain_stationary_multivariate(unconstrained, cov) # noqa:E501 + reunconstrained, _ = tools.unconstrain_stationary_multivariate(constrained, cov) # noqa:E501 + # Note: low tolerance comes from last example in + # unconstrained_cases, but is not a real problem + assert_allclose(reunconstrained, unconstrained, atol=1e-4) + + +def test_reorder_matrix_rows(): + nobs = 5 + k_endog = 3 + k_states = 3 + + missing = np.zeros((k_endog, nobs)) + given = np.zeros((k_endog, k_states, nobs)) + given[:, :, :] = np.array([[11, 12, 13], + [21, 22, 23], + [31, 32, 33]])[:, :, np.newaxis] + desired = given.copy() + + missing[0, 0] = 1 + given[:, :, 0] = np.array([[21, 22, 23], + [31, 32, 33], + [0, 0, 0]]) + desired[0, :, 0] = 0 + + missing[:2, 1] = 1 + given[:, :, 1] = np.array([[31, 32, 33], + [0, 0, 0], + [0, 0, 0]]) + desired[:2, :, 1] = 0 + + missing[0, 2] = 1 + missing[2, 2] = 1 + given[:, :, 2] = np.array([[21, 22, 23], + [0, 0, 0], + [0, 0, 0]]) + desired[0, :, 2] = 0 + desired[2, :, 2] = 0 + + missing[1, 3] = 1 + given[:, :, 3] = np.array([[11, 12, 13], + [31, 32, 33], + [0, 0, 0]]) + desired[1, :, 3] = 0 + + missing[2, 4] = 1 + given[:, :, 4] = np.array([[11, 12, 13], + [21, 22, 23], + [0, 0, 0]]) + desired[2, :, 4] = 0 + + actual = np.asfortranarray(given) + missing = np.asfortranarray(missing.astype(np.int32)) + tools.reorder_missing_matrix(actual, missing, + True, False, False, inplace=True) + + assert_equal(actual, desired) + + +def test_reorder_matrix_cols(): + nobs = 5 + k_endog = 3 + k_states = 3 + + missing = np.zeros((k_endog, nobs)) + given = np.zeros((k_endog, k_states, nobs)) + given[:, :, :] = np.array([[11, 12, 13], + [21, 22, 23], + [31, 32, 33]])[:, :, np.newaxis] + desired = given.copy() + + missing[0, 0] = 1 + given[:, :, :] = np.array([[12, 13, 0], + [22, 23, 0], + [32, 33, 0]])[:, :, np.newaxis] + desired[:, 0, 0] = 0 + + missing[:2, 1] = 1 + given[:, :, 1] = np.array([[13, 0, 0], + [23, 0, 0], + [33, 0, 0]]) + desired[:, :2, 1] = 0 + + missing[0, 2] = 1 + missing[2, 2] = 1 + given[:, :, 2] = np.array([[12, 0, 0], + [22, 0, 0], + [32, 0, 0]]) + desired[:, 0, 2] = 0 + desired[:, 2, 2] = 0 + + missing[1, 3] = 1 + given[:, :, 3] = np.array([[11, 13, 0], + [21, 23, 0], + [31, 33, 0]]) + desired[:, 1, 3] = 0 + + missing[2, 4] = 1 + given[:, :, 4] = np.array([[11, 12, 0], + [21, 22, 0], + [31, 32, 0]]) + desired[:, 2, 4] = 0 + + actual = np.asfortranarray(given) + missing = np.asfortranarray(missing.astype(np.int32)) + tools.reorder_missing_matrix(actual, missing, + False, True, False, inplace=True) + + assert_equal(actual[:, :, 4], desired[:, :, 4]) + + +def test_reorder_submatrix(): + nobs = 5 + k_endog = 3 + + missing = np.zeros((k_endog, nobs)) + missing[0, 0] = 1 + missing[:2, 1] = 1 + missing[0, 2] = 1 + missing[2, 2] = 1 + missing[1, 3] = 1 + missing[2, 4] = 1 + + given = np.zeros((k_endog, k_endog, nobs)) + given[:, :, :] = np.array([[11, 12, 13], + [21, 22, 23], + [31, 32, 33]])[:, :, np.newaxis] + desired = given.copy() + + given[:, :, 0] = np.array([[22, 23, 0], + [32, 33, 0], + [0, 0, 0]]) + desired[0, :, 0] = 0 + desired[:, 0, 0] = 0 + + given[:, :, 1] = np.array([[33, 0, 0], + [0, 0, 0], + [0, 0, 0]]) + desired[:2, :, 1] = 0 + desired[:, :2, 1] = 0 + + given[:, :, 2] = np.array([[22, 0, 0], + [0, 0, 0], + [0, 0, 0]]) + desired[0, :, 2] = 0 + desired[:, 0, 2] = 0 + desired[2, :, 2] = 0 + desired[:, 2, 2] = 0 + + given[:, :, 3] = np.array([[11, 13, 0], + [31, 33, 0], + [0, 0, 0]]) + desired[1, :, 3] = 0 + desired[:, 1, 3] = 0 + + given[:, :, 4] = np.array([[11, 12, 0], + [21, 22, 0], + [0, 0, 0]]) + desired[2, :, 4] = 0 + desired[:, 2, 4] = 0 + + actual = np.asfortranarray(given) + missing = np.asfortranarray(missing.astype(np.int32)) + tools.reorder_missing_matrix(actual, missing, + True, True, False, inplace=True) + + assert_equal(actual, desired) + + +def test_reorder_diagonal_submatrix(): + nobs = 5 + k_endog = 3 + + missing = np.zeros((k_endog, nobs)) + missing[0, 0] = 1 + missing[:2, 1] = 1 + missing[0, 2] = 1 + missing[2, 2] = 1 + missing[1, 3] = 1 + missing[2, 4] = 1 + + given = np.zeros((k_endog, k_endog, nobs)) + given[:, :, :] = np.array([[11, 00, 00], + [00, 22, 00], + [00, 00, 33]])[:, :, np.newaxis] + desired = given.copy() + + given[:, :, 0] = np.array([[22, 00, 0], + [00, 33, 0], + [0, 0, 0]]) + desired[0, :, 0] = 0 + desired[:, 0, 0] = 0 + + given[:, :, 1] = np.array([[33, 0, 0], + [0, 0, 0], + [0, 0, 0]]) + desired[:2, :, 1] = 0 + desired[:, :2, 1] = 0 + + given[:, :, 2] = np.array([[22, 0, 0], + [0, 0, 0], + [0, 0, 0]]) + desired[0, :, 2] = 0 + desired[:, 0, 2] = 0 + desired[2, :, 2] = 0 + desired[:, 2, 2] = 0 + + given[:, :, 3] = np.array([[11, 00, 0], + [00, 33, 0], + [0, 0, 0]]) + desired[1, :, 3] = 0 + desired[:, 1, 3] = 0 + + given[:, :, 4] = np.array([[11, 00, 0], + [00, 22, 0], + [0, 0, 0]]) + desired[2, :, 4] = 0 + desired[:, 2, 4] = 0 + + actual = np.asfortranarray(given.copy()) + missing = np.asfortranarray(missing.astype(np.int32)) + tools.reorder_missing_matrix(actual, missing, + True, True, False, inplace=True) + assert_equal(actual, desired) + + actual = np.asfortranarray(given.copy()) + tools.reorder_missing_matrix(actual, missing, + True, True, True, inplace=True) + assert_equal(actual, desired) + + +def test_reorder_vector(): + nobs = 5 + k_endog = 3 + + missing = np.zeros((k_endog, nobs)) + missing[0, 0] = 1 + missing[:2, 1] = 1 + missing[0, 2] = 1 + missing[2, 2] = 1 + missing[1, 3] = 1 + missing[2, 4] = 1 + + given = np.zeros((k_endog, nobs)) + given[:, :] = np.array([1, 2, 3])[:, np.newaxis] + desired = given.copy() + + given[:, 0] = [2, 3, 0] + desired[:, 0] = [0, 2, 3] + given[:, 1] = [3, 0, 0] + desired[:, 1] = [0, 0, 3] + given[:, 2] = [2, 0, 0] + desired[:, 2] = [0, 2, 0] + given[:, 3] = [1, 3, 0] + desired[:, 3] = [1, 0, 3] + given[:, 4] = [1, 2, 0] + desired[:, 4] = [1, 2, 0] + + actual = np.asfortranarray(given.copy()) + missing = np.asfortranarray(missing.astype(np.int32)) + tools.reorder_missing_vector(actual, missing, inplace=True) + assert_equal(actual, desired) + + +def test_copy_missing_matrix_rows(): + nobs = 5 + k_endog = 3 + k_states = 2 + + missing = np.zeros((k_endog, nobs)) + missing[0, 0] = 1 + missing[:2, 1] = 1 + missing[0, 2] = 1 + missing[2, 2] = 1 + missing[1, 3] = 1 + missing[2, 4] = 1 + + A = np.zeros((k_endog, k_states, nobs)) + for t in range(nobs): + n = int(k_endog - np.sum(missing[:, t])) + A[:n, :, t] = 1. + B = np.zeros((k_endog, k_states, nobs), order='F') + + missing = np.asfortranarray(missing.astype(np.int32)) + tools.copy_missing_matrix(A, B, missing, True, False, False, inplace=True) + assert_equal(B, A) + + +def test_copy_missing_matrix_cols(): + nobs = 5 + k_endog = 3 + k_states = 2 + + missing = np.zeros((k_endog, nobs)) + missing[0, 0] = 1 + missing[:2, 1] = 1 + missing[0, 2] = 1 + missing[2, 2] = 1 + missing[1, 3] = 1 + missing[2, 4] = 1 + + A = np.zeros((k_states, k_endog, nobs)) + for t in range(nobs): + n = int(k_endog - np.sum(missing[:, t])) + A[:, :n, t] = 1. + B = np.zeros((k_states, k_endog, nobs), order='F') + + missing = np.asfortranarray(missing.astype(np.int32)) + tools.copy_missing_matrix(A, B, missing, False, True, False, inplace=True) + assert_equal(B, A) + + +def test_copy_missing_submatrix(): + nobs = 5 + k_endog = 3 + + missing = np.zeros((k_endog, nobs)) + missing[0, 0] = 1 + missing[:2, 1] = 1 + missing[0, 2] = 1 + missing[2, 2] = 1 + missing[1, 3] = 1 + missing[2, 4] = 1 + + A = np.zeros((k_endog, k_endog, nobs)) + for t in range(nobs): + n = int(k_endog - np.sum(missing[:, t])) + A[:n, :n, t] = 1. + B = np.zeros((k_endog, k_endog, nobs), order='F') + + missing = np.asfortranarray(missing.astype(np.int32)) + tools.copy_missing_matrix(A, B, missing, True, True, False, inplace=True) + assert_equal(B, A) + + +def test_copy_missing_diagonal_submatrix(): + nobs = 5 + k_endog = 3 + + missing = np.zeros((k_endog, nobs)) + missing[0, 0] = 1 + missing[:2, 1] = 1 + missing[0, 2] = 1 + missing[2, 2] = 1 + missing[1, 3] = 1 + missing[2, 4] = 1 + + A = np.zeros((k_endog, k_endog, nobs)) + for t in range(nobs): + n = int(k_endog - np.sum(missing[:, t])) + A[:n, :n, t] = np.eye(n) + B = np.zeros((k_endog, k_endog, nobs), order='F') + + missing = np.asfortranarray(missing.astype(np.int32)) + tools.copy_missing_matrix(A, B, missing, True, True, False, inplace=True) + assert_equal(B, A) + + B = np.zeros((k_endog, k_endog, nobs), order='F') + tools.copy_missing_matrix(A, B, missing, True, True, True, inplace=True) + assert_equal(B, A) + + +def test_copy_missing_vector(): + nobs = 5 + k_endog = 3 + + missing = np.zeros((k_endog, nobs)) + missing[0, 0] = 1 + missing[:2, 1] = 1 + missing[0, 2] = 1 + missing[2, 2] = 1 + missing[1, 3] = 1 + missing[2, 4] = 1 + + A = np.zeros((k_endog, nobs)) + for t in range(nobs): + n = int(k_endog - np.sum(missing[:, t])) + A[:n, t] = 1. + B = np.zeros((k_endog, nobs), order='F') + + missing = np.asfortranarray(missing.astype(np.int32)) + tools.copy_missing_vector(A, B, missing, inplace=True) + assert_equal(B, A) + + +def test_copy_index_matrix_rows(): + nobs = 5 + k_endog = 3 + k_states = 2 + + index = np.zeros((k_endog, nobs)) + index[0, 0] = 1 + index[:2, 1] = 1 + index[0, 2] = 1 + index[2, 2] = 1 + index[1, 3] = 1 + index[2, 4] = 1 + + A = np.zeros((k_endog, k_states, nobs)) + for t in range(nobs): + for i in range(k_endog): + if index[i, t]: + A[i, :, t] = 1. + B = np.zeros((k_endog, k_states, nobs), order='F') + + index = np.asfortranarray(index.astype(np.int32)) + tools.copy_index_matrix(A, B, index, True, False, False, inplace=True) + assert_equal(B, A) + + +def test_copy_index_matrix_cols(): + nobs = 5 + k_endog = 3 + k_states = 2 + + index = np.zeros((k_endog, nobs)) + index[0, 0] = 1 + index[:2, 1] = 1 + index[0, 2] = 1 + index[2, 2] = 1 + index[1, 3] = 1 + index[2, 4] = 1 + + A = np.zeros((k_states, k_endog, nobs)) + for t in range(nobs): + for i in range(k_endog): + if index[i, t]: + A[:, i, t] = 1. + B = np.zeros((k_states, k_endog, nobs), order='F') + + index = np.asfortranarray(index.astype(np.int32)) + tools.copy_index_matrix(A, B, index, False, True, False, inplace=True) + assert_equal(B, A) + + +def test_copy_index_submatrix(): + nobs = 5 + k_endog = 3 + + index = np.zeros((k_endog, nobs)) + index[0, 0] = 1 + index[:2, 1] = 1 + index[0, 2] = 1 + index[2, 2] = 1 + index[1, 3] = 1 + index[2, 4] = 1 + + A = np.zeros((k_endog, k_endog, nobs)) + for t in range(nobs): + for i in range(k_endog): + if index[i, t]: + A[i, :, t] = 1. + A[:, i, t] = 1. + B = np.zeros((k_endog, k_endog, nobs), order='F') + + index = np.asfortranarray(index.astype(np.int32)) + tools.copy_index_matrix(A, B, index, True, True, False, inplace=True) + assert_equal(B, A) + + +def test_copy_index_diagonal_submatrix(): + nobs = 5 + k_endog = 3 + + index = np.zeros((k_endog, nobs)) + index[0, 0] = 1 + index[:2, 1] = 1 + index[0, 2] = 1 + index[2, 2] = 1 + index[1, 3] = 1 + index[2, 4] = 1 + + A = np.zeros((k_endog, k_endog, nobs)) + for t in range(nobs): + for i in range(k_endog): + if index[i, t]: + A[i, i, t] = 1. + B = np.zeros((k_endog, k_endog, nobs), order='F') + + index = np.asfortranarray(index.astype(np.int32)) + tools.copy_index_matrix(A, B, index, True, True, False, inplace=True) + assert_equal(B, A) + + B = np.zeros((k_endog, k_endog, nobs), order='F') + tools.copy_index_matrix(A, B, index, True, True, True, inplace=True) + assert_equal(B, A) + + +def test_copy_index_vector(): + nobs = 5 + k_endog = 3 + + index = np.zeros((k_endog, nobs)) + index[0, 0] = 1 + index[:2, 1] = 1 + index[0, 2] = 1 + index[2, 2] = 1 + index[1, 3] = 1 + index[2, 4] = 1 + + A = np.zeros((k_endog, nobs)) + for t in range(nobs): + for i in range(k_endog): + if index[i, t]: + A[i, t] = 1. + B = np.zeros((k_endog, nobs), order='F') + + index = np.asfortranarray(index.astype(np.int32)) + tools.copy_index_vector(A, B, index, inplace=True) + assert_equal(B, A) diff --git a/statsmodels/tsa/statespace/tests/test_univariate.py b/statsmodels/tsa/statespace/tests/test_univariate.py new file mode 100644 index 0000000..edafef9 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_univariate.py @@ -0,0 +1,743 @@ +""" +Tests for univariate treatment of multivariate models + +TODO skips the tests for measurement disturbance and measurement disturbance +covariance, which do not pass. The univariate smoother *appears* to be +correctly implemented against Durbin and Koopman (2012) chapter 6, yet still +gives a different answer from the conventional smoother. It's not clear if +this is intended (i.e. it has to be at least slightly different, since the +conventional smoother can return a non-diagonal covariance matrix whereas the +univariate smoother must return a diagonal covariance matrix). + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function +import os + +import numpy as np +from numpy.testing import assert_almost_equal, assert_allclose +import pandas as pd +import pytest + +from statsmodels import datasets +from statsmodels.tsa.statespace.mlemodel import MLEModel +from statsmodels.tsa.statespace.tests.results import results_kalman_filter +from statsmodels.tsa.statespace.sarimax import SARIMAX + +current_path = os.path.dirname(os.path.abspath(__file__)) + + +class TestClark1989(object): + """ + Clark's (1989) bivariate unobserved components model of real GDP (as + presented in Kim and Nelson, 1999) + + Tests two-dimensional observation data. + + Test data produced using GAUSS code described in Kim and Nelson (1999) and + found at http://econ.korea.ac.kr/~cjkim/SSMARKOV.htm + + See `results.results_kalman_filter` for more information. + """ + @classmethod + def setup_class(cls, dtype=float, alternate_timing=False, **kwargs): + + cls.true = results_kalman_filter.uc_bi + cls.true_states = pd.DataFrame(cls.true['states']) + + # GDP and Unemployment, Quarterly, 1948.1 - 1995.3 + data = pd.DataFrame( + cls.true['data'], + index=pd.date_range('1947-01-01', '1995-07-01', freq='QS'), + columns=['GDP', 'UNEMP'] + )[4:] + data['GDP'] = np.log(data['GDP']) + data['UNEMP'] = (data['UNEMP']/100) + + k_states = 6 + cls.mlemodel = MLEModel(data, k_states=k_states, **kwargs) + cls.model = cls.mlemodel.ssm + + # Statespace representation + cls.model.design[:, :, 0] = [[1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1]] + cls.model.transition[ + ([0, 0, 1, 1, 2, 3, 4, 5], + [0, 4, 1, 2, 1, 2, 4, 5], + [0, 0, 0, 0, 0, 0, 0, 0]) + ] = [1, 1, 0, 0, 1, 1, 1, 1] + cls.model.selection = np.eye(cls.model.k_states) + + # Update matrices with given parameters + (sigma_v, sigma_e, sigma_w, sigma_vl, sigma_ec, + phi_1, phi_2, alpha_1, alpha_2, alpha_3) = np.array( + cls.true['parameters'], + ) + cls.model.design[([1, 1, 1], [1, 2, 3], [0, 0, 0])] = [ + alpha_1, alpha_2, alpha_3 + ] + cls.model.transition[([1, 1], [1, 2], [0, 0])] = [phi_1, phi_2] + cls.model.obs_cov[1, 1, 0] = sigma_ec**2 + cls.model.state_cov[ + np.diag_indices(k_states)+(np.zeros(k_states, dtype=int),)] = [ + sigma_v**2, sigma_e**2, 0, 0, sigma_w**2, sigma_vl**2 + ] + + # Initialization + initial_state = np.zeros((k_states,)) + initial_state_cov = np.eye(k_states)*100 + + # Initialization: cls.modification + if not alternate_timing: + initial_state_cov = np.dot( + np.dot(cls.model.transition[:, :, 0], initial_state_cov), + cls.model.transition[:, :, 0].T + ) + else: + cls.model.timing_init_filtered = True + cls.model.initialize_known(initial_state, initial_state_cov) + + # Conventional filtering, smoothing, and simulation smoothing + cls.model.filter_conventional = True + cls.conventional_results = cls.model.smooth() + n_disturbance_variates = ( + (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs + ) + cls.conventional_sim = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + # Univariate filtering, smoothing, and simulation smoothing + cls.model.filter_univariate = True + cls.univariate_results = cls.model.smooth() + cls.univariate_sim = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + def test_using_univariate(self): + # Regression test to make sure the univariate_results actually + # used the univariate Kalman filtering approach (i.e. that the flag + # being set actually caused the filter to not use the conventional + # filter) + assert not self.conventional_results.filter_univariate + assert self.univariate_results.filter_univariate + + assert_allclose( + self.conventional_results.forecasts_error_cov[1, 1, 0], + 143.03724478030821 + ) + assert_allclose( + self.univariate_results.forecasts_error_cov[1, 1, 0], + 120.66208525029386 + ) + + def test_forecasts(self): + assert_almost_equal( + self.conventional_results.forecasts[0, :], + self.univariate_results.forecasts[0, :], 9 + ) + + def test_forecasts_error(self): + assert_almost_equal( + self.conventional_results.forecasts_error[0, :], + self.univariate_results.forecasts_error[0, :], 9 + ) + + def test_forecasts_error_cov(self): + assert_almost_equal( + self.conventional_results.forecasts_error_cov[0, 0, :], + self.univariate_results.forecasts_error_cov[0, 0, :], 9 + ) + + def test_filtered_state(self): + assert_almost_equal( + self.conventional_results.filtered_state, + self.univariate_results.filtered_state, 8 + ) + + def test_filtered_state_cov(self): + assert_almost_equal( + self.conventional_results.filtered_state_cov, + self.univariate_results.filtered_state_cov, 9 + ) + + def test_predicted_state(self): + assert_almost_equal( + self.conventional_results.predicted_state, + self.univariate_results.predicted_state, 8 + ) + + def test_predicted_state_cov(self): + assert_almost_equal( + self.conventional_results.predicted_state_cov, + self.univariate_results.predicted_state_cov, 9 + ) + + def test_loglike(self): + assert_allclose( + self.conventional_results.llf_obs, + self.univariate_results.llf_obs + ) + + def test_smoothed_states(self): + assert_almost_equal( + self.conventional_results.smoothed_state, + self.univariate_results.smoothed_state, 7 + ) + + def test_smoothed_states_cov(self): + assert_almost_equal( + self.conventional_results.smoothed_state_cov, + self.univariate_results.smoothed_state_cov, 6 + ) + + def test_smoothed_measurement_disturbance(self): + assert_almost_equal( + self.conventional_results.smoothed_measurement_disturbance, + self.univariate_results.smoothed_measurement_disturbance, 9 + ) + + def test_smoothed_measurement_disturbance_cov(self): + conv = self.conventional_results + univ = self.univariate_results + assert_almost_equal( + conv.smoothed_measurement_disturbance_cov.diagonal(), + univ.smoothed_measurement_disturbance_cov.diagonal(), 9 + ) + + def test_smoothed_state_disturbance(self): + assert_allclose( + self.conventional_results.smoothed_state_disturbance, + self.univariate_results.smoothed_state_disturbance, + atol=1e-7 + ) + + def test_smoothed_state_disturbance_cov(self): + assert_almost_equal( + self.conventional_results.smoothed_state_disturbance_cov, + self.univariate_results.smoothed_state_disturbance_cov, 9 + ) + + def test_simulation_smoothed_state(self): + assert_almost_equal( + self.conventional_sim.simulated_state, + self.univariate_sim.simulated_state, 9 + ) + + def test_simulation_smoothed_measurement_disturbance(self): + assert_almost_equal( + self.conventional_sim.simulated_measurement_disturbance, + self.univariate_sim.simulated_measurement_disturbance, 9 + ) + + def test_simulation_smoothed_state_disturbance(self): + assert_almost_equal( + self.conventional_sim.simulated_state_disturbance, + self.univariate_sim.simulated_state_disturbance, 9 + ) + + +class TestClark1989Alternate(TestClark1989): + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestClark1989Alternate, cls).setup_class(alternate_timing=True, + *args, **kwargs) + + def test_using_alterate(self): + assert(self.model._kalman_filter.filter_timing == 1) + + +class MultivariateMissingGeneralObsCov(object): + @classmethod + def setup_class(cls, which, dtype=float, alternate_timing=False, **kwargs): + # Results + path = os.path.join(current_path, 'results', + 'results_smoothing_generalobscov_R.csv') + cls.desired = pd.read_csv(path) + + # Data + dta = datasets.macrodata.load_pandas().data + dta.index = pd.date_range(start='1959-01-01', + end='2009-7-01', freq='QS') + obs = dta[['realgdp', 'realcons', 'realinv']].diff().iloc[1:] + + if which == 'all': + obs.iloc[:50, :] = np.nan + obs.iloc[119:130, :] = np.nan + elif which == 'partial': + obs.iloc[0:50, 0] = np.nan + obs.iloc[119:130, 0] = np.nan + elif which == 'mixed': + obs.iloc[0:50, 0] = np.nan + obs.iloc[19:70, 1] = np.nan + obs.iloc[39:90, 2] = np.nan + obs.iloc[119:130, 0] = np.nan + obs.iloc[119:130, 2] = np.nan + + # Create the model + mod = MLEModel(obs, k_states=3, k_posdef=3, **kwargs) + mod['design'] = np.eye(3) + X = (np.arange(9) + 1).reshape((3, 3)) / 10. + mod['obs_cov'] = np.dot(X, X.T) + mod['transition'] = np.eye(3) + mod['selection'] = np.eye(3) + mod['state_cov'] = np.eye(3) + mod.initialize_approximate_diffuse(1e6) + cls.model = mod.ssm + + # Conventional filtering, smoothing, and simulation smoothing + cls.model.filter_conventional = True + cls.conventional_results = cls.model.smooth() + n_disturbance_variates = ( + (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs + ) + cls.conventional_sim = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + # Univariate filtering, smoothing, and simulation smoothing + cls.model.filter_univariate = True + cls.univariate_results = cls.model.smooth() + cls.univariate_sim = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + def test_using_univariate(self): + # Regression test to make sure the univariate_results actually + # used the univariate Kalman filtering approach (i.e. that the flag + # being set actually caused the filter to not use the conventional + # filter) + assert not self.conventional_results.filter_univariate + assert self.univariate_results.filter_univariate + + assert_allclose( + self.conventional_results.forecasts_error_cov[1, 1, 0], + 1000000.77 + ) + assert_allclose( + self.univariate_results.forecasts_error_cov[1, 1, 0], + 1000000.77 + ) + + def test_forecasts(self): + assert_almost_equal( + self.conventional_results.forecasts[0, :], + self.univariate_results.forecasts[0, :], 9 + ) + + def test_forecasts_error(self): + assert_almost_equal( + self.conventional_results.forecasts_error[0, :], + self.univariate_results.forecasts_error[0, :], 9 + ) + + def test_forecasts_error_cov(self): + assert_almost_equal( + self.conventional_results.forecasts_error_cov[0, 0, :], + self.univariate_results.forecasts_error_cov[0, 0, :], 9 + ) + + def test_filtered_state(self): + assert_almost_equal( + self.conventional_results.filtered_state, + self.univariate_results.filtered_state, 8 + ) + + def test_filtered_state_cov(self): + assert_almost_equal( + self.conventional_results.filtered_state_cov, + self.univariate_results.filtered_state_cov, 9 + ) + + def test_predicted_state(self): + assert_almost_equal( + self.conventional_results.predicted_state, + self.univariate_results.predicted_state, 8 + ) + + def test_predicted_state_cov(self): + assert_almost_equal( + self.conventional_results.predicted_state_cov, + self.univariate_results.predicted_state_cov, 9 + ) + + def test_loglike(self): + assert_allclose( + self.conventional_results.llf_obs, + self.univariate_results.llf_obs + ) + + def test_smoothed_states(self): + assert_almost_equal( + self.conventional_results.smoothed_state, + self.univariate_results.smoothed_state, 7 + ) + + def test_smoothed_states_cov(self): + assert_almost_equal( + self.conventional_results.smoothed_state_cov, + self.univariate_results.smoothed_state_cov, 6 + ) + + @pytest.mark.skip + def test_smoothed_measurement_disturbance(self): + assert_almost_equal( + self.conventional_results.smoothed_measurement_disturbance, + self.univariate_results.smoothed_measurement_disturbance, 9 + ) + + @pytest.mark.skip + def test_smoothed_measurement_disturbance_cov(self): + conv = self.conventional_results + univ = self.univariate_results + assert_almost_equal( + conv.smoothed_measurement_disturbance_cov.diagonal(), + univ.smoothed_measurement_disturbance_cov.diagonal(), 9 + ) + + def test_smoothed_state_disturbance(self): + assert_allclose( + self.conventional_results.smoothed_state_disturbance, + self.univariate_results.smoothed_state_disturbance, + atol=1e-7 + ) + + def test_smoothed_state_disturbance_cov(self): + assert_almost_equal( + self.conventional_results.smoothed_state_disturbance_cov, + self.univariate_results.smoothed_state_disturbance_cov, 9 + ) + + def test_simulation_smoothed_state(self): + assert_almost_equal( + self.conventional_sim.simulated_state, + self.univariate_sim.simulated_state, 9 + ) + + @pytest.mark.skip + def test_simulation_smoothed_measurement_disturbance(self): + assert_almost_equal( + self.conventional_sim.simulated_measurement_disturbance, + self.univariate_sim.simulated_measurement_disturbance, 9 + ) + + def test_simulation_smoothed_state_disturbance(self): + assert_almost_equal( + self.conventional_sim.simulated_state_disturbance, + self.univariate_sim.simulated_state_disturbance, 9 + ) + + +class TestMultivariateGeneralObsCov(MultivariateMissingGeneralObsCov): + """ + This class tests the univariate method when the observation covariance + matrix is not diagonal and all data is available. + + Tests are against the conventional smoother. + """ + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestMultivariateGeneralObsCov, cls).setup_class('none') + + +class TestMultivariateAllMissingGeneralObsCov( + MultivariateMissingGeneralObsCov): + """ + This class tests the univariate method when the observation covariance + matrix is not diagonal and there are cases of fully missing data only. + + Tests are against the conventional smoother. + """ + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestMultivariateAllMissingGeneralObsCov, cls).setup_class('all') + + +class TestMultivariatePartialMissingGeneralObsCov( + MultivariateMissingGeneralObsCov): + """ + This class tests the univariate method when the observation covariance + matrix is not diagonal and there are cases of partially missing data only. + + Tests are against the conventional smoother. + """ + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestMultivariatePartialMissingGeneralObsCov, + cls).setup_class('partial') + + def test_forecasts(self): + assert_almost_equal( + self.conventional_results.forecasts[0, :], + self.univariate_results.forecasts[0, :], 8 + ) + + def test_forecasts_error(self): + assert_almost_equal( + self.conventional_results.forecasts_error[0, :], + self.univariate_results.forecasts_error[0, :], 8 + ) + + +class TestMultivariateMixedMissingGeneralObsCov( + MultivariateMissingGeneralObsCov): + """ + This class tests the univariate method when the observation covariance + matrix is not diagonal and there are cases of both partially missing and + fully missing data. + + Tests are against the conventional smoother. + """ + @classmethod + def setup_class(cls, *args, **kwargs): + super(TestMultivariateMixedMissingGeneralObsCov, + cls).setup_class('mixed') + + def test_forecasts(self): + assert_almost_equal( + self.conventional_results.forecasts[0, :], + self.univariate_results.forecasts[0, :], 8 + ) + + def test_forecasts_error(self): + assert_almost_equal( + self.conventional_results.forecasts_error[0, :], + self.univariate_results.forecasts_error[0, :], 8 + ) + + +class TestMultivariateVAR(object): + @classmethod + def setup_class(cls, which='none', **kwargs): + # Results + path = os.path.join(current_path, 'results', + 'results_smoothing_generalobscov_R.csv') + cls.desired = pd.read_csv(path) + + # Data + dta = datasets.macrodata.load_pandas().data + dta.index = pd.date_range(start='1959-01-01', + end='2009-7-01', freq='QS') + obs = dta[['realgdp', 'realcons', 'realinv']].diff().iloc[1:] + + if which == 'all': + obs.iloc[:50, :] = np.nan + obs.iloc[119:130, :] = np.nan + elif which == 'partial': + obs.iloc[0:50, 0] = np.nan + obs.iloc[119:130, 0] = np.nan + elif which == 'mixed': + obs.iloc[0:50, 0] = np.nan + obs.iloc[19:70, 1] = np.nan + obs.iloc[39:90, 2] = np.nan + obs.iloc[119:130, 0] = np.nan + obs.iloc[119:130, 2] = np.nan + + # Create the model + mod = MLEModel(obs, k_states=3, k_posdef=3, **kwargs) + mod['design'] = np.eye(3) + mod['obs_cov'] = np.array([ + [609.0746647855, 0., 0.], + [0., 1.8774916622, 0.], + [0., 0., 124.6768281675]]) + mod['transition'] = np.array([ + [-0.8110473405, 1.8005304445, 1.0215975772], + [-1.9846632699, 2.4091302213, 1.9264449765], + [0.9181658823, -0.2442384581, -0.6393462272]]) + mod['selection'] = np.eye(3) + mod['state_cov'] = np.array([ + [1552.9758843938, 612.7185121905, 877.6157204992], + [612.7185121905, 467.8739411204, 70.608037339], + [877.6157204992, 70.608037339, 900.5440385836]]) + mod.initialize_approximate_diffuse(1e6) + cls.model = mod.ssm + + # Conventional filtering, smoothing, and simulation smoothing + cls.model.filter_conventional = True + cls.conventional_results = cls.model.smooth() + n_disturbance_variates = ( + (cls.model.k_endog + cls.model.k_posdef) * cls.model.nobs + ) + cls.conventional_sim = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + # Univariate filtering, smoothing, and simulation smoothing + cls.model.filter_univariate = True + cls.univariate_results = cls.model.smooth() + cls.univariate_sim = cls.model.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(cls.model.k_states) + ) + + def test_forecasts(self): + assert_almost_equal( + self.conventional_results.forecasts[0, :], + self.univariate_results.forecasts[0, :], 9 + ) + + def test_forecasts_error(self): + assert_almost_equal( + self.conventional_results.forecasts_error[0, :], + self.univariate_results.forecasts_error[0, :], 9 + ) + + def test_forecasts_error_cov(self): + assert_almost_equal( + self.conventional_results.forecasts_error_cov[0, 0, :], + self.univariate_results.forecasts_error_cov[0, 0, :], 9 + ) + + def test_filtered_state(self): + assert_almost_equal( + self.conventional_results.filtered_state, + self.univariate_results.filtered_state, 8 + ) + + def test_filtered_state_cov(self): + assert_almost_equal( + self.conventional_results.filtered_state_cov, + self.univariate_results.filtered_state_cov, 9 + ) + + def test_predicted_state(self): + assert_almost_equal( + self.conventional_results.predicted_state, + self.univariate_results.predicted_state, 8 + ) + + def test_predicted_state_cov(self): + assert_almost_equal( + self.conventional_results.predicted_state_cov, + self.univariate_results.predicted_state_cov, 9 + ) + + def test_loglike(self): + assert_allclose( + self.conventional_results.llf_obs, + self.univariate_results.llf_obs + ) + + def test_smoothed_states(self): + assert_allclose( + self.conventional_results.smoothed_state, + self.univariate_results.smoothed_state + ) + + def test_smoothed_states_cov(self): + assert_allclose( + self.conventional_results.smoothed_state_cov, + self.univariate_results.smoothed_state_cov, atol=1e-9 + ) + + @pytest.mark.skip + def test_smoothed_measurement_disturbance(self): + assert_almost_equal( + self.conventional_results.smoothed_measurement_disturbance, + self.univariate_results.smoothed_measurement_disturbance, 9 + ) + + @pytest.mark.skip + def test_smoothed_measurement_disturbance_cov(self): + conv = self.self.conventional_results + univ = self.univariate_results + assert_almost_equal( + conv.smoothed_measurement_disturbance_cov.diagonal(), + univ.smoothed_measurement_disturbance_cov.diagonal(), + 9 + ) + + def test_smoothed_state_disturbance(self): + assert_allclose( + self.conventional_results.smoothed_state_disturbance, + self.univariate_results.smoothed_state_disturbance, + atol=1e-7 + ) + + def test_smoothed_state_disturbance_cov(self): + assert_almost_equal( + self.conventional_results.smoothed_state_disturbance_cov, + self.univariate_results.smoothed_state_disturbance_cov, 9 + ) + + def test_simulation_smoothed_state(self): + assert_almost_equal( + self.conventional_sim.simulated_state, + self.univariate_sim.simulated_state, 9 + ) + + @pytest.mark.skip + def test_simulation_smoothed_measurement_disturbance(self): + assert_almost_equal( + self.conventional_sim.simulated_measurement_disturbance, + self.univariate_sim.simulated_measurement_disturbance, 9 + ) + + def test_simulation_smoothed_state_disturbance(self): + assert_almost_equal( + self.conventional_sim.simulated_state_disturbance, + self.univariate_sim.simulated_state_disturbance, 9 + ) + + +def test_time_varying_transition(): + # Test for correct univariate filtering/smoothing when we have a + # time-varying transition matrix + endog = np.array([10, 5, 2.5, 1.25, 2.5, 5, 10]) + transition = np.ones((1, 1, 7)) + transition[..., :5] = 0.5 + transition[..., 5:] = 2 + + # Conventional filter / smoother + mod1 = SARIMAX(endog, order=(1, 0, 0), measurement_error=True) + mod1.update([2., 1., 1.]) + mod1.ssm['transition'] = transition + res1 = mod1.ssm.smooth() + + # Univariate filter / smoother + mod2 = SARIMAX(endog, order=(1, 0, 0), measurement_error=True) + mod2.ssm.filter_univariate = True + mod2.update([2., 1., 1.]) + mod2.ssm['transition'] = transition + res2 = mod2.ssm.smooth() + + # Simulation smoothers + n_disturbance_variates = (mod1.k_endog + mod1.k_posdef) * mod1.nobs + sim1 = mod1.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(mod1.k_states)) + sim2 = mod2.simulation_smoother( + disturbance_variates=np.zeros(n_disturbance_variates), + initial_state_variates=np.zeros(mod2.k_states)) + + # Test for correctness + assert_allclose(res1.forecasts[0, :], res2.forecasts[0, :]) + assert_allclose(res1.forecasts_error[0, :], res2.forecasts_error[0, :]) + assert_allclose(res1.forecasts_error_cov[0, 0, :], + res2.forecasts_error_cov[0, 0, :]) + assert_allclose(res1.filtered_state, res2.filtered_state) + assert_allclose(res1.filtered_state_cov, res2.filtered_state_cov) + assert_allclose(res1.predicted_state, res2.predicted_state) + assert_allclose(res1.predicted_state_cov, res2.predicted_state_cov) + assert_allclose(res1.llf_obs, res2.llf_obs) + assert_allclose(res1.smoothed_state, res2.smoothed_state) + assert_allclose(res1.smoothed_state_cov, res2.smoothed_state_cov) + assert_allclose(res1.smoothed_measurement_disturbance, + res2.smoothed_measurement_disturbance) + assert_allclose(res1.smoothed_measurement_disturbance_cov.diagonal(), + res2.smoothed_measurement_disturbance_cov.diagonal()) + assert_allclose(res1.smoothed_state_disturbance, + res2.smoothed_state_disturbance) + assert_allclose(res1.smoothed_state_disturbance_cov, + res2.smoothed_state_disturbance_cov) + + assert_allclose(sim1.simulated_state, sim2.simulated_state) + assert_allclose(sim1.simulated_measurement_disturbance, + sim2.simulated_measurement_disturbance) + assert_allclose(sim1.simulated_state_disturbance, + sim2.simulated_state_disturbance) diff --git a/statsmodels/tsa/statespace/tests/test_var.py b/statsmodels/tsa/statespace/tests/test_var.py new file mode 100644 index 0000000..3029aa2 --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_var.py @@ -0,0 +1,265 @@ +""" +Tests for VAR models (via VARMAX) + +These are primarily tests of VAR results from the VARMAX state space approach +compared to the output of estimation via CSS + +loglikelihood_burn = k_ar is required, since the loglikelihood reported by the +CSS approach is the conditional loglikelihood. + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function +import os + +import numpy as np +from numpy.testing import assert_allclose +import pandas as pd + +from statsmodels.tsa.statespace import varmax +from .results import results_var_R + +current_path = os.path.dirname(os.path.abspath(__file__)) +results_var_R_output = pd.read_csv( + os.path.join(current_path, 'results', 'results_var_R_output.csv')) + +up2 = os.path.split(os.path.split(current_path)[0])[0] +dta = pd.read_stata(os.path.join(up2, 'tests', 'results', 'lutkepohl2.dta')) +dta.index = pd.PeriodIndex(dta.qtr, freq='Q') +endog = dta[['dln_inv', 'dln_inc', 'dln_consump']].loc['1960Q2':'1978'] + +# Note that we start the time-trend at 0 here, to match +time_trend0 = np.arange(len(endog)) +exog0 = np.c_[np.ones(len(endog)), time_trend0, time_trend0**2] +time_trend0_fcast = np.arange(len(endog), len(endog) + 10) +exog0_fcast = np.c_[np.ones(10), time_trend0_fcast, time_trend0_fcast**2] +# And here we start the time-trend at 1 +time_trend1 = np.arange(1, len(endog) + 1) +time_trend1_fcast = np.arange(len(endog) + 1, len(endog) + 1 + 10) +exog1 = np.c_[np.ones(len(endog)), time_trend1, time_trend1**2] +exog1_fcast = np.c_[np.ones(10), time_trend1_fcast, time_trend1_fcast**2] + + +def check_irf(test, mod, results, params=None): + # Note that 'vars' uses an estimator of Sigma_u with k_params fewer degrees + # of freedom to compute impulse responses, so we need to reset the + # state_cov matrix for this part of the test + Sigma_u_mle = mod['state_cov'] + nobs_effective = mod.nobs - mod.k_ar + df_resid = (nobs_effective - + (mod.k_ar * mod.k_endog + mod.k_trend + mod.k_exog)) + Sigma_u = Sigma_u_mle * nobs_effective / df_resid + + L = np.linalg.cholesky(Sigma_u) + if params is None: + params = np.copy(results['params']) + params[-6:] = L[np.tril_indices_from(L)] + res = mod.smooth(params) + + for i in range(3): + impulse_to = endog.columns[i] + + # Non-orthogonalized + columns = ['%s.irf.%s.%s' % (test, impulse_to, name) + for name in endog.columns] + assert_allclose(res.impulse_responses(10, i), + results_var_R_output[columns]) + + # Orthogonalized + columns = ['%s.irf.ortho.%s.%s' % (test, impulse_to, name) + for name in endog.columns] + assert_allclose(res.impulse_responses(10, i, orthogonalized=True), + results_var_R_output[columns]) + + # Orthogonalized, cumulated + columns = ['%s.irf.cumu.%s.%s' % (test, impulse_to, name) + for name in endog.columns] + result = res.impulse_responses(10, i, + orthogonalized=True, cumulative=True) + assert_allclose(result, + results_var_R_output[columns]) + + +def test_var_basic(): + test = 'basic' + + # VAR(2), no trend or exog + results = results_var_R.res_basic + mod = varmax.VARMAX(endog, order=(2, 0), trend='n', loglikelihood_burn=2) + res = mod.smooth(results['params']) + + assert_allclose(res.llf, results['llf']) + + # Forecast + columns = ['%s.fcast.%s.fcst' % (test, name) for name in endog.columns] + assert_allclose(res.forecast(10), results_var_R_output[columns].iloc[:10]) + + # IRF + check_irf(test, mod, results) + + # FEVD: TODO + + +def test_var_c(): + test = 'c' + + # VAR(2), constant trend, no exog + results = results_var_R.res_c + mod = varmax.VARMAX(endog, order=(2, 0), trend='c', loglikelihood_burn=2) + res = mod.smooth(results['params']) + + assert_allclose(res.llf, results['llf']) + + # Forecast + columns = ['%s.fcast.%s.fcst' % (test, name) for name in endog.columns] + assert_allclose(res.forecast(10), results_var_R_output[columns].iloc[:10]) + + # IRF + check_irf(test, mod, results) + + # FEVD: TODO + + +def test_var_ct(): + test = 'ct' + + # VAR(2), constant and time trend, no exog + results = results_var_R.res_ct + mod = varmax.VARMAX(endog, order=(2, 0), trend='ct', loglikelihood_burn=2) + res = mod.smooth(results['params']) + + assert_allclose(res.llf, results['llf']) + + # Forecast + columns = ['%s.fcast.%s.fcst' % (test, name) for name in endog.columns] + assert_allclose(res.forecast(10), results_var_R_output[columns].iloc[:10]) + + # IRF + check_irf(test, mod, results) + + # FEVD: TODO + + +def test_var_ct_as_exog0(): + test = 'ct_as_exog0' + + # VAR(2), no built-in trend, constant and time trend as exog + # Here we start the time-trend at 0 + results = results_var_R.res_ct_as_exog0 + mod = varmax.VARMAX(endog, order=(2, 0), exog=exog0[:, :2], trend='n', + loglikelihood_burn=2) + res = mod.smooth(results['params']) + + assert_allclose(res.llf, results['llf']) + + # Forecast + columns = ['%s.fcast.%s.fcst' % (test, name) for name in endog.columns] + assert_allclose(res.forecast(10, exog=exog0_fcast[:, :2]), + results_var_R_output[columns].iloc[:10]) + + # IRF + check_irf(test, mod, results) + + # FEVD: TODO + + +def test_var_ct_as_exog1(): + test = 'ct' + + # VAR(2), no built-in trend, constant and time trend as exog + # Here we start the time-trend at 1 and so we can compare to the built-in + # trend results "res_ct" + results = results_var_R.res_ct + mod = varmax.VARMAX(endog, order=(2, 0), exog=exog1[:, :2], trend='n', + loglikelihood_burn=2) + # Since the params were given for the built-in trend case, we need to + # re-order them + params = results['params'] + params = np.r_[params[6:-6], params[:6], params[-6:]] + res = mod.smooth(params) + + assert_allclose(res.llf, results['llf']) + + # Forecast + columns = ['%s.fcast.%s.fcst' % (test, name) for name in endog.columns] + assert_allclose(res.forecast(10, exog=exog1_fcast[:, :2]), + results_var_R_output[columns].iloc[:10]) + + # IRF + check_irf(test, mod, results, params) + + # FEVD: TODO + + +def test_var_ctt(): + test = 'ctt_as_exog1' + + # VAR(2), constant, trend, and trend**2, no exog + # Note that this is comparing against trend as exog in the R package, + # since it doesn't have a built-in option for trend**2 + results = results_var_R.res_ctt_as_exog1 + mod = varmax.VARMAX(endog, order=(2, 0), trend='ctt', + loglikelihood_burn=2) + params = results['params'] + params = np.r_[params[-(6+9):-6], params[:-(6+9)], params[-6:]] + res = mod.smooth(params) + + assert_allclose(res.llf, results['llf']) + + # Forecast + columns = ['%s.fcast.%s.fcst' % (test, name) for name in endog.columns] + assert_allclose(res.forecast(10), results_var_R_output[columns].iloc[:10]) + + # IRF + check_irf(test, mod, results, params) + + # FEVD: TODO + + +def test_var_ct_exog(): + test = 'ct_exog' + + # VAR(2), constant and trend, 'inc' variable as exog + results = results_var_R.res_ct_exog + exog = dta['inc'].loc['1960Q2':'1978'] + exog_fcast = dta[['inc']].loc['1979Q1':'1981Q2'] + mod = varmax.VARMAX(endog, order=(2, 0), exog=exog, trend='ct', + loglikelihood_burn=2) + res = mod.smooth(results['params']) + + assert_allclose(res.llf, results['llf']) + + # Forecast + columns = ['%s.fcast.%s.fcst' % (test, name) for name in endog.columns] + assert_allclose(res.forecast(10, exog=exog_fcast), + results_var_R_output[columns].iloc[:10]) + + # IRF + check_irf(test, mod, results) + + # FEVD: TODO + + +def test_var_c_2exog(): + test = 'c_2exog' + + # VAR(2), constant, 'inc', 'inv' variables as exog + results = results_var_R.res_c_2exog + exog = dta[['inc', 'inv']].loc['1960Q2':'1978'] + exog_fcast = dta[['inc', 'inv']].loc['1979Q1':'1981Q2'] + mod = varmax.VARMAX(endog, order=(2, 0), exog=exog, trend='c', + loglikelihood_burn=2) + res = mod.smooth(results['params']) + + assert_allclose(res.llf, results['llf']) + + # Forecast + columns = ['%s.fcast.%s.fcst' % (test, name) for name in endog.columns] + assert_allclose(res.forecast(10, exog=exog_fcast), + results_var_R_output[columns].iloc[:10]) + + # IRF + check_irf(test, mod, results) + + # FEVD: TODO diff --git a/statsmodels/tsa/statespace/tests/test_varmax.py b/statsmodels/tsa/statespace/tests/test_varmax.py new file mode 100644 index 0000000..7fc797e --- /dev/null +++ b/statsmodels/tsa/statespace/tests/test_varmax.py @@ -0,0 +1,938 @@ +""" +Tests for VARMAX models + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function +import os +import re +import warnings + +import numpy as np +from numpy.testing import assert_equal, assert_allclose +import pandas as pd +import pytest + +from statsmodels.tsa.statespace import varmax +from statsmodels.iolib.summary import forg + +from .results import results_varmax + +current_path = os.path.dirname(os.path.abspath(__file__)) + +var_path = os.path.join('results', 'results_var_stata.csv') +var_results = pd.read_csv(os.path.join(current_path, var_path)) + +varmax_path = os.path.join('results', 'results_varmax_stata.csv') +varmax_results = pd.read_csv(os.path.join(current_path, varmax_path)) + + +class CheckVARMAX(object): + """ + Test Vector Autoregression against Stata's `dfactor` code (Stata's + `var` function uses OLS and not state space / MLE, so we can't get + equivalent log-likelihoods) + """ + + def test_mle(self): + with warnings.catch_warnings(record=True): + warnings.simplefilter('always') + # Fit with all transformations + # results = self.model.fit(method='powell', disp=-1) + results = self.model.fit(maxiter=100, disp=False) + # Fit now without transformations + self.model.enforce_stationarity = False + self.model.enforce_invertibility = False + results = self.model.fit(results.params, method='nm', maxiter=1000, + disp=False) + self.model.enforce_stationarity = True + self.model.enforce_invertibility = True + assert_allclose(results.llf, self.results.llf, rtol=1e-5) + + @pytest.mark.smoke + def test_params(self): + # Smoke test to make sure the start_params are well-defined and + # lead to a well-defined model + model = self.model + + model.filter(model.start_params) + # Similarly a smoke test for param_names + assert len(model.start_params) == len(model.param_names) + + # Finally make sure the transform and untransform do their job + actual = model.transform_params( + model.untransform_params(model.start_params)) + assert_allclose(actual, model.start_params) + + # Also in the case of enforce invertibility and stationarity = False + model.enforce_stationarity = False + model.enforce_invertibility = False + actual = model.transform_params( + model.untransform_params(model.start_params)) + + model.enforce_stationarity = True + model.enforce_invertibility = True + assert_allclose(actual, model.start_params) + + @pytest.mark.smoke + def test_results(self): + # Smoke test for creating the summary + self.results.summary() + + model = self.model + # Test cofficient matrix creation + # (via a different, more direct, method) + if model.k_ar > 0: + params_ar = np.array(self.results.params[model._params_ar]) + coefficients = params_ar.reshape(model.k_endog, + model.k_endog * model.k_ar) + coefficient_matrices = np.array([ + coefficients[:model.k_endog, + i*model.k_endog:(i+1)*model.k_endog] + for i in range(model.k_ar) + ]) + assert_equal(self.results.coefficient_matrices_var, + coefficient_matrices) + else: + assert_equal(self.results.coefficient_matrices_var, None) + if model.k_ma > 0: + params_ma = np.array(self.results.params[model._params_ma]) + coefficients = params_ma.reshape(model.k_endog, + model.k_endog * model.k_ma) + + coefficient_matrices = np.array([ + coefficients[:model.k_endog, + i*model.k_endog:(i+1)*model.k_endog] + for i in range(model.k_ma) + ]) + assert_equal(self.results.coefficient_matrices_vma, + coefficient_matrices) + else: + assert_equal(self.results.coefficient_matrices_vma, None) + + def test_loglike(self): + assert_allclose(self.results.llf, self.true['loglike'], rtol=1e-6) + + def test_aic(self): + # We only get 3 digits from Stata + assert_allclose(self.results.aic, self.true['aic'], atol=3) + + def test_bic(self): + # We only get 3 digits from Stata + assert_allclose(self.results.bic, self.true['bic'], atol=3) + + def test_predict(self, end, atol=1e-6, **kwargs): + # Tests predict + forecast + assert_allclose( + self.results.predict(end=end, **kwargs), + self.true['predict'], + atol=atol) + + def test_dynamic_predict(self, end, dynamic, atol=1e-6, **kwargs): + # Tests predict + dynamic predict + forecast + assert_allclose( + self.results.predict(end=end, dynamic=dynamic, **kwargs), + self.true['dynamic_predict'], + atol=atol) + + def test_standardized_forecasts_error(self): + cython_sfe = self.results.standardized_forecasts_error + self.results._standardized_forecasts_error = None + python_sfe = self.results.standardized_forecasts_error + assert_allclose(cython_sfe, python_sfe) + + +class CheckLutkepohl(CheckVARMAX): + @classmethod + def setup_class(cls, true, order, trend, error_cov_type, cov_type='approx', + included_vars=['dln_inv', 'dln_inc', 'dln_consump'], + **kwargs): + cls.true = true + # 1960:Q1 - 1982:Q4 + dta = pd.DataFrame( + results_varmax.lutkepohl_data, columns=['inv', 'inc', 'consump'], + index=pd.date_range('1960-01-01', '1982-10-01', freq='QS')) + + dta['dln_inv'] = np.log(dta['inv']).diff() + dta['dln_inc'] = np.log(dta['inc']).diff() + dta['dln_consump'] = np.log(dta['consump']).diff() + + endog = dta.loc['1960-04-01':'1978-10-01', included_vars] + + cls.model = varmax.VARMAX(endog, order=order, trend=trend, + error_cov_type=error_cov_type, **kwargs) + + cls.results = cls.model.smooth(true['params'], cov_type=cov_type) + + def test_predict(self, **kwargs): + super(CheckLutkepohl, self).test_predict(end='1982-10-01', **kwargs) + + def test_dynamic_predict(self, **kwargs): + super(CheckLutkepohl, self).test_dynamic_predict(end='1982-10-01', + dynamic='1961-01-01', + **kwargs) + + +class TestVAR(CheckLutkepohl): + @classmethod + def setup_class(cls): + true = results_varmax.lutkepohl_var1.copy() + true['predict'] = var_results.iloc[1:][['predict_1', + 'predict_2', + 'predict_3']] + true['dynamic_predict'] = var_results.iloc[1:][['dyn_predict_1', + 'dyn_predict_2', + 'dyn_predict_3']] + super(TestVAR, cls).setup_class( + true, order=(1, 0), trend='n', + error_cov_type="unstructured") + + def test_bse_approx(self): + bse = self.results._cov_params_approx().diagonal()**0.5 + assert_allclose(bse**2, self.true['var_oim'], atol=1e-4) + + def test_bse_oim(self): + bse = self.results._cov_params_oim().diagonal()**0.5 + assert_allclose(bse**2, self.true['var_oim'], atol=1e-2) + + def test_summary(self): + summary = self.results.summary() + tables = [str(table) for table in summary.tables] + params = self.true['params'] + + # Check the model overview table + assert re.search(r'Model:.*VAR\(1\)', tables[0]) + + # For each endogenous variable, check the output + for i in range(self.model.k_endog): + offset = i * self.model.k_endog + table = tables[i+2] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Results for equation %s' % name, table) + + # -> Make sure it's the right size + assert len(table.split('\n')) == 8 + + # -> Check that we have the right coefficients + assert re.search('L1.dln_inv +%.4f' % params[offset + 0], table) + assert re.search('L1.dln_inc +%.4f' % params[offset + 1], table) + assert re.search('L1.dln_consump +%.4f' % params[offset + 2], + table) + + # Test the error covariance matrix table + table = tables[-1] + assert re.search('Error covariance matrix', table) + assert len(table.split('\n')) == 11 + + params = params[self.model._params_state_cov] + names = self.model.param_names[self.model._params_state_cov] + for i in range(len(names)): + assert re.search('%s +%.4f' % (names[i], params[i]), table) + + +class TestVAR_diagonal(CheckLutkepohl): + @classmethod + def setup_class(cls): + true = results_varmax.lutkepohl_var1_diag.copy() + true['predict'] = var_results.iloc[1:][['predict_diag1', + 'predict_diag2', + 'predict_diag3']] + true['dynamic_predict'] = var_results.iloc[1:][['dyn_predict_diag1', + 'dyn_predict_diag2', + 'dyn_predict_diag3']] + super(TestVAR_diagonal, cls).setup_class( + true, order=(1, 0), trend='n', + error_cov_type="diagonal") + + def test_bse_approx(self): + bse = self.results._cov_params_approx().diagonal()**0.5 + assert_allclose(bse**2, self.true['var_oim'], atol=1e-5) + + def test_bse_oim(self): + bse = self.results._cov_params_oim().diagonal()**0.5 + assert_allclose(bse**2, self.true['var_oim'], atol=1e-2) + + def test_summary(self): + summary = self.results.summary() + tables = [str(table) for table in summary.tables] + params = self.true['params'] + + # Check the model overview table + assert re.search(r'Model:.*VAR\(1\)', tables[0]) + + # For each endogenous variable, check the output + for i in range(self.model.k_endog): + offset = i * self.model.k_endog + table = tables[i+2] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Results for equation %s' % name, table) + + # -> Make sure it's the right size + assert len(table.split('\n')) == 8 + + # -> Check that we have the right coefficients + assert re.search('L1.dln_inv +%.4f' % params[offset + 0], table) + assert re.search('L1.dln_inc +%.4f' % params[offset + 1], table) + assert re.search('L1.dln_consump +%.4f' % params[offset + 2], + table) + + # Test the error covariance matrix table + table = tables[-1] + assert re.search('Error covariance matrix', table) + assert len(table.split('\n')) == 8 + + params = params[self.model._params_state_cov] + names = self.model.param_names[self.model._params_state_cov] + for i in range(len(names)): + assert re.search('%s +%.4f' % (names[i], params[i]), table) + + +class TestVAR_measurement_error(CheckLutkepohl): + """ + Notes + ----- + There does not appear to be a way to get Stata to estimate a VAR with + measurement errors. Thus this test is mostly a smoke test that measurement + errors are setup correctly: it uses the same params from TestVAR_diagonal + and sets the measurement errors variance params to zero to check that the + loglike and predict are the same. + + It also checks that the state-space representation with positive + measurement errors is correct. + """ + @classmethod + def setup_class(cls): + true = results_varmax.lutkepohl_var1_diag_meas.copy() + true['predict'] = var_results.iloc[1:][['predict_diag1', + 'predict_diag2', + 'predict_diag3']] + true['dynamic_predict'] = var_results.iloc[1:][['dyn_predict_diag1', + 'dyn_predict_diag2', + 'dyn_predict_diag3']] + super(TestVAR_measurement_error, cls).setup_class( + true, order=(1, 0), trend='n', + error_cov_type="diagonal", measurement_error=True) + + # Create another filter results with positive measurement errors + cls.true_measurement_error_variances = [1., 2., 3.] + params = np.r_[true['params'][:-3], + cls.true_measurement_error_variances] + cls.results2 = cls.model.smooth(params) + + def test_mle(self): + # With the additional measurment error parameters, this wouldn't be + # a meaningful test + pass + + def test_bse_approx(self): + # This would just test the same thing + # as TestVAR_diagonal.test_bse_approx + pass + + def test_bse_oim(self): + # This would just test the same thing as TestVAR_diagonal.test_bse_oim + pass + + def test_aic(self): + # Since the measurement error is added, the number + # of parameters, and hence the aic and bic, will be off + pass + + def test_bic(self): + # Since the measurement error is added, the number + # of parameters, and hence the aic and bic, will be off + pass + + def test_representation(self): + # Test that the state space representation in the measurement error + # case is correct + for name in self.model.ssm.shapes.keys(): + if name == 'obs': + pass + elif name == 'obs_cov': + actual = self.results2.filter_results.obs_cov + desired = np.diag( + self.true_measurement_error_variances)[:, :, np.newaxis] + assert_equal(actual, desired) + else: + assert_equal(getattr(self.results2.filter_results, name), + getattr(self.results.filter_results, name)) + + def test_summary(self): + summary = self.results.summary() + tables = [str(table) for table in summary.tables] + params = self.true['params'] + + # Check the model overview table + assert re.search(r'Model:.*VAR\(1\)', tables[0]) + + # For each endogenous variable, check the output + for i in range(self.model.k_endog): + offset = i * self.model.k_endog + table = tables[i+2] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Results for equation %s' % name, table) + + # -> Make sure it's the right size + assert len(table.split('\n')) == 9 + + # -> Check that we have the right coefficients + assert re.search('L1.dln_inv +%.4f' % params[offset + 0], table) + assert re.search('L1.dln_inc +%.4f' % params[offset + 1], table) + assert re.search('L1.dln_consump +%.4f' % params[offset + 2], + table) + assert re.search('measurement_variance +%.4g' % params[-(i+1)], + table) + + # Test the error covariance matrix table + table = tables[-1] + assert re.search('Error covariance matrix', table) + assert len(table.split('\n')) == 8 + + params = params[self.model._params_state_cov] + names = self.model.param_names[self.model._params_state_cov] + for i in range(len(names)): + assert re.search('%s +%.4f' % (names[i], params[i]), table) + + +class TestVAR_obs_intercept(CheckLutkepohl): + @classmethod + def setup_class(cls): + true = results_varmax.lutkepohl_var1_obs_intercept.copy() + true['predict'] = var_results.iloc[1:][['predict_int1', + 'predict_int2', + 'predict_int3']] + true['dynamic_predict'] = var_results.iloc[1:][['dyn_predict_int1', + 'dyn_predict_int2', + 'dyn_predict_int3']] + super(TestVAR_obs_intercept, cls).setup_class( + true, order=(1, 0), trend='n', + error_cov_type="diagonal", obs_intercept=true['obs_intercept']) + + def test_bse_approx(self): + bse = self.results._cov_params_approx().diagonal()**0.5 + assert_allclose(bse**2, self.true['var_oim'], atol=1e-4) + + def test_bse_oim(self): + bse = self.results._cov_params_oim().diagonal()**0.5 + assert_allclose(bse**2, self.true['var_oim'], atol=1e-2) + + def test_aic(self): + # Since the obs_intercept is added in in an ad-hoc way here, the number + # of parameters, and hence the aic and bic, will be off + pass + + def test_bic(self): + # Since the obs_intercept is added in in an ad-hoc way here, the number + # of parameters, and hence the aic and bic, will be off + pass + + +class TestVAR_exog(CheckLutkepohl): + # Note: unlike the other tests in this file, this is against the Stata + # var function rather than the Stata dfactor function + @classmethod + def setup_class(cls): + true = results_varmax.lutkepohl_var1_exog.copy() + true['predict'] = var_results.iloc[1:76][['predict_exog1_1', + 'predict_exog1_2', + 'predict_exog1_3']] + true['predict'].iloc[0, :] = 0 + true['fcast'] = var_results.iloc[76:][['fcast_exog1_dln_inv', + 'fcast_exog1_dln_inc', + 'fcast_exog1_dln_consump']] + exog = np.arange(75) + 2 + super(TestVAR_exog, cls).setup_class( + true, order=(1, 0), trend='n', error_cov_type='unstructured', + exog=exog, initialization='approximate_diffuse', + loglikelihood_burn=1) + + def test_mle(self): + pass + + def test_aic(self): + # Stata's var calculates AIC differently + pass + + def test_bic(self): + # Stata's var calculates BIC differently + pass + + def test_bse_approx(self): + # Exclude the covariance cholesky terms + bse = self.results._cov_params_approx().diagonal()**0.5 + assert_allclose(bse[:-6]**2, self.true['var_oim'], atol=1e-5) + + def test_bse_oim(self): + # Exclude the covariance cholesky terms + bse = self.results._cov_params_oim().diagonal()**0.5 + assert_allclose(bse[:-6]**2, self.true['var_oim'], atol=1e-5) + + def test_predict(self): + super(CheckLutkepohl, self).test_predict(end='1978-10-01', atol=1e-3) + + def test_dynamic_predict(self): + # Stata's var cannot subsequently use dynamic + pass + + def test_forecast(self): + # Tests forecast + exog = (np.arange(75, 75+16) + 2)[:, np.newaxis] + + # Test it through the results class wrapper + desired = self.results.forecast(steps=16, exog=exog) + assert_allclose(desired, self.true['fcast'], atol=1e-6) + + # Test it directly (i.e. without the wrapping done in + # VARMAXResults.get_prediction which converts exog to state_intercept) + # beta = self.results.params[-9:-6] + # state_intercept = np.concatenate([ + # exog*beta[0], exog*beta[1], exog*beta[2]], axis=1).T + # desired = mlemodel.MLEResults.get_prediction( + # self.results._results, start=75, end=75+15, + # state_intercept=state_intercept).predicted_mean + # assert_allclose(desired, self.true['fcast'], atol=1e-6) + + def test_summary(self): + summary = self.results.summary() + tables = [str(table) for table in summary.tables] + params = self.true['params'] + + # Check the model overview table + assert re.search(r'Model:.*VARX\(1\)', tables[0]) + + # For each endogenous variable, check the output + for i in range(self.model.k_endog): + offset = i * self.model.k_endog + table = tables[i+2] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Results for equation %s' % name, table) + + # -> Make sure it's the right size + assert len(table.split('\n')) == 9 + + # -> Check that we have the right coefficients + assert re.search('L1.dln_inv +%.4f' % params[offset + 0], table) + assert re.search('L1.dln_inc +%.4f' % params[offset + 1], table) + assert re.search( + 'L1.dln_consump +%.4f' % params[offset + 2], table) + assert re.search( + 'beta.x1 +' + forg(params[self.model._params_regression][i], + prec=4), + table) + + # Test the error covariance matrix table + table = tables[-1] + assert re.search('Error covariance matrix', table) + assert len(table.split('\n')) == 11 + + params = params[self.model._params_state_cov] + names = self.model.param_names[self.model._params_state_cov] + for i in range(len(names)): + assert re.search('%s +%.4f' % (names[i], params[i]), table) + + +class TestVAR_exog2(CheckLutkepohl): + # This is a regression test, to make sure that the setup with multiple exog + # works correctly. The params are from Stata, but the loglike is from + # this model. Likely the small discrepancy (see the results file) is from + # the approximate diffuse initialization. + @classmethod + def setup_class(cls): + true = results_varmax.lutkepohl_var1_exog2.copy() + true['predict'] = var_results.iloc[1:76][['predict_exog2_1', + 'predict_exog2_2', + 'predict_exog2_3']] + true['predict'].iloc[0, :] = 0 + true['fcast'] = var_results.iloc[76:][['fcast_exog2_dln_inv', + 'fcast_exog2_dln_inc', + 'fcast_exog2_dln_consump']] + exog = np.c_[np.ones((75, 1)), (np.arange(75) + 2)[:, np.newaxis]] + super(TestVAR_exog2, cls).setup_class( + true, order=(1, 0), trend='n', error_cov_type='unstructured', + exog=exog, initialization='approximate_diffuse', + loglikelihood_burn=1) + + def test_mle(self): + pass + + def test_aic(self): + pass + + def test_bic(self): + pass + + def test_bse_approx(self): + pass + + def test_bse_oim(self): + pass + + def test_predict(self): + super(CheckLutkepohl, self).test_predict(end='1978-10-01', atol=1e-3) + + def test_dynamic_predict(self): + # Stata's var cannot subsequently use dynamic + pass + + def test_forecast(self): + # Tests forecast + exog = np.c_[np.ones((16, 1)), + (np.arange(75, 75+16) + 2)[:, np.newaxis]] + + desired = self.results.forecast(steps=16, exog=exog) + assert_allclose(desired, self.true['fcast'], atol=1e-6) + + +class TestVAR2(CheckLutkepohl): + @classmethod + def setup_class(cls): + true = results_varmax.lutkepohl_var2.copy() + true['predict'] = var_results.iloc[1:][['predict_var2_1', + 'predict_var2_2']] + true['dynamic_predict'] = var_results.iloc[1:][['dyn_predict_var2_1', + 'dyn_predict_var2_2']] + super(TestVAR2, cls).setup_class( + true, order=(2, 0), trend='n', error_cov_type='unstructured', + included_vars=['dln_inv', 'dln_inc']) + + def test_bse_approx(self): + # Exclude the covariance cholesky terms + bse = self.results._cov_params_approx().diagonal()**0.5 + assert_allclose(bse[:-3]**2, self.true['var_oim'][:-3], atol=1e-5) + + def test_bse_oim(self): + # Exclude the covariance cholesky terms + bse = self.results._cov_params_oim().diagonal()**0.5 + assert_allclose(bse[:-3]**2, self.true['var_oim'][:-3], atol=1e-2) + + def test_summary(self): + summary = self.results.summary() + tables = [str(table) for table in summary.tables] + params = self.true['params'] + + # Check the model overview table + assert re.search(r'Model:.*VAR\(2\)', tables[0]) + + # For each endogenous variable, check the output + for i in range(self.model.k_endog): + offset = i * self.model.k_endog * self.model.k_ar + table = tables[i+2] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Results for equation %s' % name, table) + + # -> Make sure it's the right size + assert len(table.split('\n')) == 9 + + # -> Check that we have the right coefficients + assert re.search('L1.dln_inv +%.4f' % params[offset + 0], table) + assert re.search('L1.dln_inc +%.4f' % params[offset + 1], table) + assert re.search('L2.dln_inv +%.4f' % params[offset + 2], table) + assert re.search('L2.dln_inc +%.4f' % params[offset + 3], table) + + # Test the error covariance matrix table + table = tables[-1] + assert re.search('Error covariance matrix', table) + assert len(table.split('\n')) == 8 + + params = params[self.model._params_state_cov] + names = self.model.param_names[self.model._params_state_cov] + for i in range(len(names)): + assert re.search('%s +%.4f' % (names[i], params[i]), table) + + +class CheckFREDManufacturing(CheckVARMAX): + @classmethod + def setup_class(cls, true, order, trend, error_cov_type, cov_type='approx', + **kwargs): + cls.true = true + # 1960:Q1 - 1982:Q4 + path = os.path.join(current_path, 'results', 'manufac.dta') + with open(path, 'rb') as test_data: + dta = pd.read_stata(test_data) + dta.index = pd.DatetimeIndex(dta.month, freq='MS') + dta['dlncaputil'] = dta['lncaputil'].diff() + dta['dlnhours'] = dta['lnhours'].diff() + + endog = dta.loc['1972-02-01':, ['dlncaputil', 'dlnhours']] + + with warnings.catch_warnings(record=True): + warnings.simplefilter('always') + cls.model = varmax.VARMAX(endog, order=order, trend=trend, + error_cov_type=error_cov_type, **kwargs) + + cls.results = cls.model.smooth(true['params'], cov_type=cov_type) + + +class TestVARMA(CheckFREDManufacturing): + """ + Test against the sspace VARMA example with some params set to zeros. + """ + + @classmethod + def setup_class(cls): + true = results_varmax.fred_varma11.copy() + true['predict'] = varmax_results.iloc[1:][['predict_varma11_1', + 'predict_varma11_2']] + true['dynamic_predict'] = varmax_results.iloc[1:][[ + 'dyn_predict_varma11_1', 'dyn_predict_varma11_2']] + + super(TestVARMA, cls).setup_class( + true, order=(1, 1), trend='n', error_cov_type='diagonal') + + def test_mle(self): + # Since the VARMA model here is generic (we're just forcing zeros + # in some params) whereas Stata's is restricted, the MLE test isn't + # meaninful + pass + + @pytest.mark.skip('Known failure: standard errors do not match.') + def test_bse_approx(self): + # Standard errors do not match Stata's + pass + + @pytest.mark.skip('Known failure: standard errors do not match.') + def test_bse_oim(self): + # Standard errors do not match Stata's + pass + + def test_aic(self): + # Since the VARMA model here is generic (we're just putting in zeros + # for some params), Stata assumes a different estimated number of + # parameters; hence the aic and bic, will be off + pass + + def test_bic(self): + # Since the VARMA model here is generic (we're just putting in zeros + # for some params), Stata assumes a different estimated number of + # parameters; hence the aic and bic, will be off + pass + + def test_predict(self): + super(TestVARMA, self).test_predict(end='2009-05-01', atol=1e-4) + + def test_dynamic_predict(self): + super(TestVARMA, self).test_dynamic_predict(end='2009-05-01', + dynamic='2000-01-01') + + def test_summary(self): + summary = self.results.summary() + tables = [str(table) for table in summary.tables] + params = self.true['params'] + + # Check the model overview table + assert re.search(r'Model:.*VARMA\(1,1\)', tables[0]) + + # For each endogenous variable, check the output + for i in range(self.model.k_endog): + offset_ar = i * self.model.k_endog + offset_ma = (self.model.k_endog**2 * self.model.k_ar + + i * self.model.k_endog) + table = tables[i+2] + + # -> Make sure we have the right table / table name + name = self.model.endog_names[i] + assert re.search('Results for equation %s' % name, table) + + # -> Make sure it's the right size + assert len(table.split('\n')) == 9 + + # -> Check that we have the right coefficients + assert re.search( + 'L1.dlncaputil +' + forg(params[offset_ar + 0], prec=4), + table) + assert re.search( + 'L1.dlnhours +' + forg(params[offset_ar + 1], prec=4), + table) + assert re.search( + r'L1.e\(dlncaputil\) +' + forg(params[offset_ma + 0], prec=4), + table) + assert re.search( + r'L1.e\(dlnhours\) +' + forg(params[offset_ma + 1], prec=4), + table) + + # Test the error covariance matrix table + table = tables[-1] + assert re.search('Error covariance matrix', table) + assert len(table.split('\n')) == 7 + + params = params[self.model._params_state_cov] + names = self.model.param_names[self.model._params_state_cov] + for i in range(len(names)): + assert re.search('%s +%s' % (names[i], forg(params[i], prec=4)), + table) + + +class TestVMA1(CheckFREDManufacturing): + """ + Test against the sspace VARMA example with some params set to zeros. + """ + + @classmethod + def setup_class(cls): + true = results_varmax.fred_vma1.copy() + true['predict'] = varmax_results.iloc[1:][['predict_vma1_1', + 'predict_vma1_2']] + true['dynamic_predict'] = varmax_results.iloc[1:][[ + 'dyn_predict_vma1_1', 'dyn_predict_vma1_2']] + + super(TestVMA1, cls).setup_class( + true, order=(0, 1), trend='n', error_cov_type='diagonal') + + def test_mle(self): + # Since the VARMA model here is generic (we're just forcing zeros + # in some params) whereas Stata's is restricted, the MLE test isn't + # meaninful + pass + + @pytest.mark.skip('Known failure: standard errors do not match.') + def test_bse_approx(self): + # Standard errors do not match Stata's + pass + + @pytest.mark.skip('Known failure: standard errors do not match.') + def test_bse_oim(self): + # Standard errors do not match Stata's + pass + + def test_aic(self): + # Since the VARMA model here is generic (we're just putting in zeros + # for some params), Stata assumes a different estimated number of + # parameters; hence the aic and bic, will be off + pass + + def test_bic(self): + # Since the VARMA model here is generic (we're just putting in zeros + # for some params), Stata assumes a different estimated number of + # parameters; hence the aic and bic, will be off + pass + + def test_predict(self): + super(TestVMA1, self).test_predict(end='2009-05-01', atol=1e-4) + + def test_dynamic_predict(self): + super(TestVMA1, self).test_dynamic_predict(end='2009-05-01', + dynamic='2000-01-01') + + +def test_specifications(): + # Tests for model specification and state space creation + endog = np.arange(20).reshape(10, 2) + exog = np.arange(10) + exog2 = pd.Series(exog, index=pd.date_range('2000-01-01', '2009-01-01', + freq='AS')) + + # Test successful model creation + varmax.VARMAX(endog, exog=exog, order=(1, 0)) + + # Test successful model creation with pandas exog + varmax.VARMAX(endog, exog=exog2, order=(1, 0)) + + +def test_misspecifications(): + varmax.__warningregistry__ = {} + + # Tests for model specification and misspecification exceptions + endog = np.arange(20).reshape(10, 2) + + # Bad trend specification + with pytest.raises(ValueError): + varmax.VARMAX(endog, order=(1, 0), trend='') + + # Bad error_cov_type specification + with pytest.raises(ValueError): + varmax.VARMAX(endog, order=(1, 0), error_cov_type='') + + # Bad order specification + with pytest.raises(ValueError): + varmax.VARMAX(endog, order=(0, 0)) + + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('always') + varmax.VARMAX(endog, order=(1, 1)) + + # Warning with VARMA specification + with warnings.catch_warnings(record=True) as w: + warnings.simplefilter('always') + + varmax.VARMAX(endog, order=(1, 1)) + + message = ('Estimation of VARMA(p,q) models is not generically robust,' + ' due especially to identification issues.') + assert str(w[0].message) == message + + warnings.resetwarnings() + + +def test_misc_exog(): + # Tests for missing data + nobs = 20 + k_endog = 2 + np.random.seed(1208) + endog = np.random.normal(size=(nobs, k_endog)) + endog[:4, 0] = np.nan + endog[2:6, 1] = np.nan + exog1 = np.random.normal(size=(nobs, 1)) + exog2 = np.random.normal(size=(nobs, 2)) + + index = pd.date_range('1970-01-01', freq='QS', periods=nobs) + endog_pd = pd.DataFrame(endog, index=index) + exog1_pd = pd.Series(exog1.squeeze(), index=index) + exog2_pd = pd.DataFrame(exog2, index=index) + + models = [ + varmax.VARMAX(endog, exog=exog1, order=(1, 0)), + varmax.VARMAX(endog, exog=exog2, order=(1, 0)), + varmax.VARMAX(endog_pd, exog=exog1_pd, order=(1, 0)), + varmax.VARMAX(endog_pd, exog=exog2_pd, order=(1, 0)), + ] + + for mod in models: + # Smoke tests + mod.start_params + res = mod.fit(disp=False) + res.summary() + res.predict() + res.predict(dynamic=True) + res.get_prediction() + + oos_exog = np.random.normal(size=(1, mod.k_exog)) + res.forecast(steps=1, exog=oos_exog) + res.get_forecast(steps=1, exog=oos_exog) + + # Smoke tests for invalid exog + oos_exog = np.random.normal(size=(1)) + with pytest.raises(ValueError): + res.forecast(steps=1, exog=oos_exog) + + oos_exog = np.random.normal(size=(2, mod.k_exog)) + with pytest.raises(ValueError): + res.forecast(steps=1, exog=oos_exog) + + oos_exog = np.random.normal(size=(1, mod.k_exog + 1)) + with pytest.raises(ValueError): + res.forecast(steps=1, exog=oos_exog) + + # Test invalid model specifications + with pytest.raises(ValueError): + varmax.VARMAX(endog, exog=np.zeros((10, 4)), order=(1, 0)) + + +def test_predict_custom_index(): + np.random.seed(328423) + endog = pd.DataFrame(np.random.normal(size=(50, 2))) + mod = varmax.VARMAX(endog, order=(1, 0)) + res = mod.smooth(mod.start_params) + out = res.predict(start=1, end=1, index=['a']) + assert out.index.equals(pd.Index(['a'])) diff --git a/statsmodels/tsa/statespace/tools.py b/statsmodels/tsa/statespace/tools.py new file mode 100644 index 0000000..34a1717 --- /dev/null +++ b/statsmodels/tsa/statespace/tools.py @@ -0,0 +1,1842 @@ +""" +Statespace Tools + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function +import warnings + +import numpy as np +from scipy.linalg import solve_sylvester +import pandas as pd + +from statsmodels.tools.data import _is_using_pandas +from scipy.linalg.blas import find_best_blas_type +from . import (_initialization, _representation, _kalman_filter, + _kalman_smoother, _simulation_smoother, _tools) + + +compatibility_mode = False +has_trmm = True +prefix_dtype_map = { + 's': np.float32, 'd': np.float64, 'c': np.complex64, 'z': np.complex128 +} +prefix_initialization_map = { + 's': _initialization.sInitialization, + 'd': _initialization.dInitialization, + 'c': _initialization.cInitialization, + 'z': _initialization.zInitialization +} +prefix_statespace_map = { + 's': _representation.sStatespace, 'd': _representation.dStatespace, + 'c': _representation.cStatespace, 'z': _representation.zStatespace +} +prefix_kalman_filter_map = { + 's': _kalman_filter.sKalmanFilter, + 'd': _kalman_filter.dKalmanFilter, + 'c': _kalman_filter.cKalmanFilter, + 'z': _kalman_filter.zKalmanFilter +} +prefix_kalman_smoother_map = { + 's': _kalman_smoother.sKalmanSmoother, + 'd': _kalman_smoother.dKalmanSmoother, + 'c': _kalman_smoother.cKalmanSmoother, + 'z': _kalman_smoother.zKalmanSmoother +} +prefix_simulation_smoother_map = { + 's': _simulation_smoother.sSimulationSmoother, + 'd': _simulation_smoother.dSimulationSmoother, + 'c': _simulation_smoother.cSimulationSmoother, + 'z': _simulation_smoother.zSimulationSmoother +} +prefix_pacf_map = { + 's': _tools._scompute_coefficients_from_multivariate_pacf, + 'd': _tools._dcompute_coefficients_from_multivariate_pacf, + 'c': _tools._ccompute_coefficients_from_multivariate_pacf, + 'z': _tools._zcompute_coefficients_from_multivariate_pacf +} +prefix_sv_map = { + 's': _tools._sconstrain_sv_less_than_one, + 'd': _tools._dconstrain_sv_less_than_one, + 'c': _tools._cconstrain_sv_less_than_one, + 'z': _tools._zconstrain_sv_less_than_one +} +prefix_reorder_missing_matrix_map = { + 's': _tools.sreorder_missing_matrix, + 'd': _tools.dreorder_missing_matrix, + 'c': _tools.creorder_missing_matrix, + 'z': _tools.zreorder_missing_matrix +} +prefix_reorder_missing_vector_map = { + 's': _tools.sreorder_missing_vector, + 'd': _tools.dreorder_missing_vector, + 'c': _tools.creorder_missing_vector, + 'z': _tools.zreorder_missing_vector +} +prefix_copy_missing_matrix_map = { + 's': _tools.scopy_missing_matrix, + 'd': _tools.dcopy_missing_matrix, + 'c': _tools.ccopy_missing_matrix, + 'z': _tools.zcopy_missing_matrix +} +prefix_copy_missing_vector_map = { + 's': _tools.scopy_missing_vector, + 'd': _tools.dcopy_missing_vector, + 'c': _tools.ccopy_missing_vector, + 'z': _tools.zcopy_missing_vector +} +prefix_copy_index_matrix_map = { + 's': _tools.scopy_index_matrix, + 'd': _tools.dcopy_index_matrix, + 'c': _tools.ccopy_index_matrix, + 'z': _tools.zcopy_index_matrix +} +prefix_copy_index_vector_map = { + 's': _tools.scopy_index_vector, + 'd': _tools.dcopy_index_vector, + 'c': _tools.ccopy_index_vector, + 'z': _tools.zcopy_index_vector +} + + +def set_mode(compatibility=None): + if compatibility: + raise NotImplementedError('Compatibility mode is only available in' + ' statsmodels <= 0.9') + + +def companion_matrix(polynomial): + r""" + Create a companion matrix + + Parameters + ---------- + polynomial : array_like or list + If an iterable, interpreted as the coefficients of the polynomial from + which to form the companion matrix. Polynomial coefficients are in + order of increasing degree, and may be either scalars (as in an AR(p) + model) or coefficient matrices (as in a VAR(p) model). If an integer, + it is interpereted as the size of a companion matrix of a scalar + polynomial, where the polynomial coefficients are initialized to zeros. + If a matrix polynomial is passed, :math:`C_0` may be set to the scalar + value 1 to indicate an identity matrix (doing so will improve the speed + of the companion matrix creation). + + Returns + ------- + companion_matrix : array + + Notes + ----- + Given coefficients of a lag polynomial of the form: + + .. math:: + + c(L) = c_0 + c_1 L + \dots + c_p L^p + + returns a matrix of the form + + .. math:: + \begin{bmatrix} + \phi_1 & 1 & 0 & \cdots & 0 \\ + \phi_2 & 0 & 1 & & 0 \\ + \vdots & & & \ddots & 0 \\ + & & & & 1 \\ + \phi_n & 0 & 0 & \cdots & 0 \\ + \end{bmatrix} + + where some or all of the :math:`\phi_i` may be non-zero (if `polynomial` is + None, then all are equal to zero). + + If the coefficients provided are scalars :math:`(c_0, c_1, \dots, c_p)`, + then the companion matrix is an :math:`n \times n` matrix formed with the + elements in the first column defined as + :math:`\phi_i = -\frac{c_i}{c_0}, i \in 1, \dots, p`. + + If the coefficients provided are matrices :math:`(C_0, C_1, \dots, C_p)`, + each of shape :math:`(m, m)`, then the companion matrix is an + :math:`nm \times nm` matrix formed with the elements in the first column + defined as :math:`\phi_i = -C_0^{-1} C_i', i \in 1, \dots, p`. + + It is important to understand the expected signs of the coefficients. A + typical AR(p) model is written as: + + .. math:: + y_t = a_1 y_{t-1} + \dots + a_p y_{t-p} + \varepsilon_t + + This can be rewritten as: + + .. math:: + (1 - a_1 L - \dots - a_p L^p )y_t = \varepsilon_t \\ + (1 + c_1 L + \dots + c_p L^p )y_t = \varepsilon_t \\ + c(L) y_t = \varepsilon_t + + The coefficients from this form are defined to be :math:`c_i = - a_i`, and + it is the :math:`c_i` coefficients that this function expects to be + provided. + + """ + identity_matrix = False + if isinstance(polynomial, (int, np.integer)): + # GH 5570, allow numpy integer types, but coerce to python int + n = int(polynomial) + m = 1 + polynomial = None + else: + n = len(polynomial) - 1 + + if n < 1: + raise ValueError("Companion matrix polynomials must include at" + " least two terms.") + + if isinstance(polynomial, list) or isinstance(polynomial, tuple): + try: + # Note: can't use polynomial[0] because of the special behavior + # associated with matrix polynomials and the constant 1, see + # below. + m = len(polynomial[1]) + except TypeError: + m = 1 + + # Check if we just have a scalar polynomial + if m == 1: + polynomial = np.asanyarray(polynomial) + # Check if 1 was passed as the first argument (indicating an + # identity matrix) + elif polynomial[0] == 1: + polynomial[0] = np.eye(m) + identity_matrix = True + else: + m = 1 + polynomial = np.asanyarray(polynomial) + + matrix = np.zeros((n * m, n * m), dtype=np.asanyarray(polynomial).dtype) + idx = np.diag_indices((n - 1) * m) + idx = (idx[0], idx[1] + m) + matrix[idx] = 1 + if polynomial is not None and n > 0: + if m == 1: + matrix[:, 0] = -polynomial[1:] / polynomial[0] + elif identity_matrix: + for i in range(n): + matrix[i * m:(i + 1) * m, :m] = -polynomial[i+1].T + else: + inv = np.linalg.inv(polynomial[0]) + for i in range(n): + matrix[i * m:(i + 1) * m, :m] = -np.dot(inv, polynomial[i+1]).T + return matrix + + +def diff(series, k_diff=1, k_seasonal_diff=None, seasonal_periods=1): + r""" + Difference a series simply and/or seasonally along the zero-th axis. + + Given a series (denoted :math:`y_t`), performs the differencing operation + + .. math:: + + \Delta^d \Delta_s^D y_t + + where :math:`d =` `diff`, :math:`s =` `seasonal_periods`, + :math:`D =` `seasonal\_diff`, and :math:`\Delta` is the difference + operator. + + Parameters + ---------- + series : array_like + The series to be differenced. + diff : int, optional + The number of simple differences to perform. Default is 1. + seasonal_diff : int or None, optional + The number of seasonal differences to perform. Default is no seasonal + differencing. + seasonal_periods : int, optional + The seasonal lag. Default is 1. Unused if there is no seasonal + differencing. + + Returns + ------- + differenced : array + The differenced array. + """ + pandas = _is_using_pandas(series, None) + differenced = np.asanyarray(series) if not pandas else series + + # Seasonal differencing + if k_seasonal_diff is not None: + while k_seasonal_diff > 0: + if not pandas: + differenced = (differenced[seasonal_periods:] - + differenced[:-seasonal_periods]) + else: + sdiffed = differenced.diff(seasonal_periods) + differenced = sdiffed[seasonal_periods:] + k_seasonal_diff -= 1 + + # Simple differencing + if not pandas: + differenced = np.diff(differenced, k_diff, axis=0) + else: + while k_diff > 0: + differenced = differenced.diff()[1:] + k_diff -= 1 + return differenced + + +def concat(series, axis=0, allow_mix=False): + """ + Concatenate a set of series. + + Parameters + ---------- + series : iterable + An iterable of series to be concatenated + axis : int, optional + The axis along which to concatenate. Default is 1 (columns). + allow_mix : bool + Whether or not to allow a mix of pandas and non-pandas objects. Default + is False. If true, the returned object is an ndarray, and additional + pandas metadata (e.g. column names, indices, etc) is lost. + + Returns + ------- + concatenated : array or pd.DataFrame + The concatenated array. Will be a DataFrame if series are pandas + objects. + """ + is_pandas = np.r_[[_is_using_pandas(s, None) for s in series]] + + if np.all(is_pandas): + concatenated = pd.concat(series, axis=axis) + elif np.all(~is_pandas) or allow_mix: + concatenated = np.concatenate(series, axis=axis) + else: + raise ValueError('Attempted to concatenate Pandas objects with' + ' non-Pandas objects with `allow_mix=False`.') + + return concatenated + + +def is_invertible(polynomial, threshold=1 - 1e-10): + r""" + Determine if a polynomial is invertible. + + Requires all roots of the polynomial lie inside the unit circle. + + Parameters + ---------- + polynomial : array_like or tuple, list + Coefficients of a polynomial, in order of increasing degree. + For example, `polynomial=[1, -0.5]` corresponds to the polynomial + :math:`1 - 0.5x` which has root :math:`2`. If it is a matrix + polynomial (in which case the coefficients are coefficient matrices), + a tuple or list of matrices should be passed. + threshold : number + Allowed threshold for `is_invertible` to return True. Default is 1. + + Notes + ----- + + If the coefficients provided are scalars :math:`(c_0, c_1, \dots, c_n)`, + then the corresponding polynomial is :math:`c_0 + c_1 L + \dots + c_n L^n`. + + + If the coefficients provided are matrices :math:`(C_0, C_1, \dots, C_n)`, + then the corresponding polynomial is :math:`C_0 + C_1 L + \dots + C_n L^n`. + + There are three equivalent methods of determining if the polynomial + represented by the coefficients is invertible: + + The first method factorizes the polynomial into: + + .. math:: + + C(L) & = c_0 + c_1 L + \dots + c_n L^n \\ + & = constant (1 - \lambda_1 L) + (1 - \lambda_2 L) \dots (1 - \lambda_n L) + + In order for :math:`C(L)` to be invertible, it must be that each factor + :math:`(1 - \lambda_i L)` is invertible; the condition is then that + :math:`|\lambda_i| < 1`, where :math:`\lambda_i` is a root of the + polynomial. + + The second method factorizes the polynomial into: + + .. math:: + + C(L) & = c_0 + c_1 L + \dots + c_n L^n \\ + & = constant (L - \zeta_1) (L - \zeta_2) \dots (L - \zeta_3) + + The condition is now :math:`|\zeta_i| > 1`, where :math:`\zeta_i` is a root + of the polynomial with reversed coefficients and + :math:`\lambda_i = \frac{1}{\zeta_i}`. + + Finally, a companion matrix can be formed using the coefficients of the + polynomial. Then the eigenvalues of that matrix give the roots of the + polynomial. This last method is the one actually used. + + See Also + -------- + companion_matrix + """ + # First method: + # np.all(np.abs(np.roots(np.r_[1, params])) < 1) + # Second method: + # np.all(np.abs(np.roots(np.r_[1, params][::-1])) > 1) + # Final method: + eigvals = np.linalg.eigvals(companion_matrix(polynomial)) + return np.all(np.abs(eigvals) < threshold) + + +def solve_discrete_lyapunov(a, q, complex_step=False): + r""" + Solves the discrete Lyapunov equation using a bilinear transformation. + + Notes + ----- + This is a modification of the version in Scipy (see + https://github.com/scipy/scipy/blob/master/scipy/linalg/_solvers.py) + which allows passing through the complex numbers in the matrix a + (usually the transition matrix) in order to allow complex step + differentiation. + """ + eye = np.eye(a.shape[0], dtype=a.dtype) + if not complex_step: + aH = a.conj().transpose() + aHI_inv = np.linalg.inv(aH + eye) + b = np.dot(aH - eye, aHI_inv) + c = 2*np.dot(np.dot(np.linalg.inv(a + eye), q), aHI_inv) + return solve_sylvester(b.conj().transpose(), b, -c) + else: + aH = a.transpose() + aHI_inv = np.linalg.inv(aH + eye) + b = np.dot(aH - eye, aHI_inv) + c = 2*np.dot(np.dot(np.linalg.inv(a + eye), q), aHI_inv) + return solve_sylvester(b.transpose(), b, -c) + + +def constrain_stationary_univariate(unconstrained): + """ + Transform unconstrained parameters used by the optimizer to constrained + parameters used in likelihood evaluation + + Parameters + ---------- + unconstrained : array + Unconstrained parameters used by the optimizer, to be transformed to + stationary coefficients of, e.g., an autoregressive or moving average + component. + + Returns + ------- + constrained : array + Constrained parameters of, e.g., an autoregressive or moving average + component, to be transformed to arbitrary parameters used by the + optimizer. + + References + ---------- + .. [*] Monahan, John F. 1984. + "A Note on Enforcing Stationarity in + Autoregressive-moving Average Models." + Biometrika 71 (2) (August 1): 403-404. + """ + + n = unconstrained.shape[0] + y = np.zeros((n, n), dtype=unconstrained.dtype) + r = unconstrained/((1 + unconstrained**2)**0.5) + for k in range(n): + for i in range(k): + y[k, i] = y[k - 1, i] + r[k] * y[k - 1, k - i - 1] + y[k, k] = r[k] + return -y[n - 1, :] + + +def unconstrain_stationary_univariate(constrained): + """ + Transform constrained parameters used in likelihood evaluation + to unconstrained parameters used by the optimizer + + Parameters + ---------- + constrained : array + Constrained parameters of, e.g., an autoregressive or moving average + component, to be transformed to arbitrary parameters used by the + optimizer. + + Returns + ------- + unconstrained : array + Unconstrained parameters used by the optimizer, to be transformed to + stationary coefficients of, e.g., an autoregressive or moving average + component. + + References + ---------- + .. [*] Monahan, John F. 1984. + "A Note on Enforcing Stationarity in + Autoregressive-moving Average Models." + Biometrika 71 (2) (August 1): 403-404. + """ + n = constrained.shape[0] + y = np.zeros((n, n), dtype=constrained.dtype) + y[n-1:] = -constrained + for k in range(n-1, 0, -1): + for i in range(k): + y[k-1, i] = (y[k, i] - y[k, k]*y[k, k-i-1]) / (1 - y[k, k]**2) + r = y.diagonal() + x = r / ((1 - r**2)**0.5) + return x + + +def _constrain_sv_less_than_one_python(unconstrained, order=None, + k_endog=None): + """ + Transform arbitrary matrices to matrices with singular values less than + one. + + Parameters + ---------- + unconstrained : list + Arbitrary matrices. Should be a list of length `order`, where each + element is an array sized `k_endog` x `k_endog`. + order : integer, optional + The order of the autoregression. + k_endog : integer, optional + The dimension of the data vector. + + Returns + ------- + constrained : list + Partial autocorrelation matrices. Should be a list of length + `order`, where each element is an array sized `k_endog` x `k_endog`. + + Notes + ----- + Corresponds to Lemma 2.2 in Ansley and Kohn (1986). See + `constrain_stationary_multivariate` for more details. + + There is a Cython implementation of this function that can be much faster, + but which requires SciPy 0.14.0 or greater. See + `constrain_stationary_multivariate` for details. + + """ + + from scipy import linalg + + constrained = [] # P_s, s = 1, ..., p + if order is None: + order = len(unconstrained) + if k_endog is None: + k_endog = unconstrained[0].shape[0] + + eye = np.eye(k_endog) + for i in range(order): + A = unconstrained[i] + B, lower = linalg.cho_factor(eye + np.dot(A, A.T), lower=True) + constrained.append(linalg.solve_triangular(B, A, lower=lower)) + return constrained + + +def _compute_coefficients_from_multivariate_pacf_python( + partial_autocorrelations, error_variance, transform_variance=False, + order=None, k_endog=None): + """ + Transform matrices with singular values less than one to matrices + corresponding to a stationary (or invertible) process. + + Parameters + ---------- + partial_autocorrelations : list + Partial autocorrelation matrices. Should be a list of length `order`, + where each element is an array sized `k_endog` x `k_endog`. + error_variance : array + The variance / covariance matrix of the error term. Should be sized + `k_endog` x `k_endog`. This is used as input in the algorithm even if + is not transformed by it (when `transform_variance` is False). The + error term variance is required input when transformation is used + either to force an autoregressive component to be stationary or to + force a moving average component to be invertible. + transform_variance : boolean, optional + Whether or not to transform the error variance term. This option is + not typically used, and the default is False. + order : integer, optional + The order of the autoregression. + k_endog : integer, optional + The dimension of the data vector. + + Returns + ------- + coefficient_matrices : list + Transformed coefficient matrices leading to a stationary VAR + representation. + + Notes + ----- + Corresponds to Lemma 2.1 in Ansley and Kohn (1986). See + `constrain_stationary_multivariate` for more details. + + There is a Cython implementation of this function that can be much faster, + but which requires SciPy 0.14.0 or greater. See + `constrain_stationary_multivariate` for details. + """ + from scipy import linalg + + if order is None: + order = len(partial_autocorrelations) + if k_endog is None: + k_endog = partial_autocorrelations[0].shape[0] + + # If we want to keep the provided variance but with the constrained + # coefficient matrices, we need to make a copy here, and then after the + # main loop we will transform the coefficients to match the passed variance + if not transform_variance: + initial_variance = error_variance + # Need to make the input variance large enough that the recursions + # don't lead to zero-matrices due to roundoff error, which would case + # exceptions from the Cholesky decompositions. + # Note that this will still not always ensure positive definiteness, + # and for k_endog, order large enough an exception may still be raised + error_variance = np.eye(k_endog) * (order + k_endog)**10 + + forward_variances = [error_variance] # \Sigma_s + backward_variances = [error_variance] # \Sigma_s^*, s = 0, ..., p + autocovariances = [error_variance] # \Gamma_s + # \phi_{s,k}, s = 1, ..., p + # k = 1, ..., s+1 + forwards = [] + # \phi_{s,k}^* + backwards = [] + + error_variance_factor = linalg.cholesky(error_variance, lower=True) + + forward_factors = [error_variance_factor] + backward_factors = [error_variance_factor] + + # We fill in the entries as follows: + # [1,1] + # [2,2], [2,1] + # [3,3], [3,1], [3,2] + # ... + # [p,p], [p,1], ..., [p,p-1] + # the last row, correctly ordered, is then used as the coefficients + for s in range(order): # s = 0, ..., p-1 + prev_forwards = forwards + prev_backwards = backwards + forwards = [] + backwards = [] + + # Create the "last" (k = s+1) matrix + # Note: this is for k = s+1. However, below we then have to fill + # in for k = 1, ..., s in order. + # P L*^{-1} = x + # x L* = P + # L*' x' = P' + forwards.append( + linalg.solve_triangular( + backward_factors[s], partial_autocorrelations[s].T, + lower=True, trans='T')) + forwards[0] = np.dot(forward_factors[s], forwards[0].T) + + # P' L^{-1} = x + # x L = P' + # L' x' = P + backwards.append( + linalg.solve_triangular( + forward_factors[s], partial_autocorrelations[s], + lower=True, trans='T')) + backwards[0] = np.dot(backward_factors[s], backwards[0].T) + + # Update the variance + # Note: if s >= 1, this will be further updated in the for loop + # below + # Also, this calculation will be re-used in the forward variance + tmp = np.dot(forwards[0], backward_variances[s]) + autocovariances.append(tmp.copy().T) + + # Create the remaining k = 1, ..., s matrices, + # only has an effect if s >= 1 + for k in range(s): + forwards.insert(k, prev_forwards[k] - np.dot( + forwards[-1], prev_backwards[s-(k+1)])) + + backwards.insert(k, prev_backwards[k] - np.dot( + backwards[-1], prev_forwards[s-(k+1)])) + + autocovariances[s+1] += np.dot(autocovariances[k+1], + prev_forwards[s-(k+1)].T) + + # Create forward and backwards variances + forward_variances.append( + forward_variances[s] - np.dot(tmp, forwards[s].T) + ) + backward_variances.append( + backward_variances[s] - + np.dot( + np.dot(backwards[s], forward_variances[s]), + backwards[s].T + ) + ) + + # Cholesky factors + forward_factors.append( + linalg.cholesky(forward_variances[s+1], lower=True) + ) + backward_factors.append( + linalg.cholesky(backward_variances[s+1], lower=True) + ) + + # If we do not want to use the transformed variance, we need to + # adjust the constrained matrices, as presented in Lemma 2.3, see above + variance = forward_variances[-1] + if not transform_variance: + # Here, we need to construct T such that: + # variance = T * initial_variance * T' + # To do that, consider the Cholesky of variance (L) and + # input_variance (M) to get: + # L L' = T M M' T' = (TM) (TM)' + # => L = T M + # => L M^{-1} = T + initial_variance_factor = np.linalg.cholesky(initial_variance) + transformed_variance_factor = np.linalg.cholesky(variance) + transform = np.dot(initial_variance_factor, + np.linalg.inv(transformed_variance_factor)) + inv_transform = np.linalg.inv(transform) + + for i in range(order): + forwards[i] = ( + np.dot(np.dot(transform, forwards[i]), inv_transform) + ) + + return forwards, variance + + +def constrain_stationary_multivariate_python(unconstrained, error_variance, + transform_variance=False, + prefix=None): + r""" + Transform unconstrained parameters used by the optimizer to constrained + parameters used in likelihood evaluation for a vector autoregression. + + Parameters + ---------- + unconstrained : array or list + Arbitrary matrices to be transformed to stationary coefficient matrices + of the VAR. If a list, should be a list of length `order`, where each + element is an array sized `k_endog` x `k_endog`. If an array, should be + the matrices horizontally concatenated and sized + `k_endog` x `k_endog * order`. + error_variance : array + The variance / covariance matrix of the error term. Should be sized + `k_endog` x `k_endog`. This is used as input in the algorithm even if + is not transformed by it (when `transform_variance` is False). The + error term variance is required input when transformation is used + either to force an autoregressive component to be stationary or to + force a moving average component to be invertible. + transform_variance : boolean, optional + Whether or not to transform the error variance term. This option is + not typically used, and the default is False. + prefix : {'s','d','c','z'}, optional + The appropriate BLAS prefix to use for the passed datatypes. Only + use if absolutely sure that the prefix is correct or an error will + result. + + Returns + ------- + constrained : array or list + Transformed coefficient matrices leading to a stationary VAR + representation. Will match the type of the passed `unconstrained` + variable (so if a list was passed, a list will be returned). + + Notes + ----- + In the notation of [1]_, the arguments `(variance, unconstrained)` are + written as :math:`(\Sigma, A_1, \dots, A_p)`, where :math:`p` is the order + of the vector autoregression, and is here determined by the length of + the `unconstrained` argument. + + There are two steps in the constraining algorithm. + + First, :math:`(A_1, \dots, A_p)` are transformed into + :math:`(P_1, \dots, P_p)` via Lemma 2.2 of [1]_. + + Second, :math:`(\Sigma, P_1, \dots, P_p)` are transformed into + :math:`(\Sigma, \phi_1, \dots, \phi_p)` via Lemmas 2.1 and 2.3 of [1]_. + + If `transform_variance=True`, then only Lemma 2.1 is applied in the second + step. + + While this function can be used even in the univariate case, it is much + slower, so in that case `constrain_stationary_univariate` is preferred. + + References + ---------- + .. [1] Ansley, Craig F., and Robert Kohn. 1986. + "A Note on Reparameterizing a Vector Autoregressive Moving Average Model + to Enforce Stationarity." + Journal of Statistical Computation and Simulation 24 (2): 99-106. + .. [*] Ansley, Craig F, and Paul Newbold. 1979. + "Multivariate Partial Autocorrelations." + In Proceedings of the Business and Economic Statistics Section, 349-53. + American Statistical Association + + """ + + use_list = type(unconstrained) == list + if not use_list: + k_endog, order = unconstrained.shape + order //= k_endog + + unconstrained = [ + unconstrained[:k_endog, i*k_endog:(i+1)*k_endog] + for i in range(order) + ] + + order = len(unconstrained) + k_endog = unconstrained[0].shape[0] + + # Step 1: convert from arbitrary matrices to those with singular values + # less than one. + sv_constrained = _constrain_sv_less_than_one_python( + unconstrained, order, k_endog) + + # Step 2: convert matrices from our "partial autocorrelation matrix" space + # (matrices with singular values less than one) to the space of stationary + # coefficient matrices + constrained, var = _compute_coefficients_from_multivariate_pacf_python( + sv_constrained, error_variance, transform_variance, order, k_endog) + + if not use_list: + constrained = np.concatenate(constrained, axis=1).reshape( + k_endog, k_endog * order) + + return constrained, var + + +def constrain_stationary_multivariate(unconstrained, variance, + transform_variance=False, + prefix=None): + + use_list = type(unconstrained) == list + if use_list: + unconstrained = np.concatenate(unconstrained, axis=1) + + k_endog, order = unconstrained.shape + order //= k_endog + + if order < 1: + raise ValueError('Must have order at least 1') + if k_endog < 1: + raise ValueError('Must have at least 1 endogenous variable') + + if prefix is None: + prefix, dtype, _ = find_best_blas_type( + [unconstrained, variance]) + dtype = prefix_dtype_map[prefix] + + unconstrained = np.asfortranarray(unconstrained, dtype=dtype) + variance = np.asfortranarray(variance, dtype=dtype) + + # Step 1: convert from arbitrary matrices to those with singular values + # less than one. + # sv_constrained = _constrain_sv_less_than_one(unconstrained, order, + # k_endog, prefix) + sv_constrained = prefix_sv_map[prefix](unconstrained, order, k_endog) + + # Step 2: convert matrices from our "partial autocorrelation matrix" + # space (matrices with singular values less than one) to the space of + # stationary coefficient matrices + constrained, variance = prefix_pacf_map[prefix]( + sv_constrained, variance, transform_variance, order, k_endog) + + constrained = np.array(constrained, dtype=dtype) + variance = np.array(variance, dtype=dtype) + + if use_list: + constrained = [ + constrained[:k_endog, i*k_endog:(i+1)*k_endog] + for i in range(order) + ] + + return constrained, variance + + +constrain_stationary_multivariate.__doc__ = ( + constrain_stationary_multivariate_python.__doc__) + + +def _unconstrain_sv_less_than_one(constrained, order=None, k_endog=None): + """ + Transform matrices with singular values less than one to arbitrary + matrices. + + Parameters + ---------- + constrained : list + The partial autocorrelation matrices. Should be a list of length + `order`, where each element is an array sized `k_endog` x `k_endog`. + order : integer, optional + The order of the autoregression. + k_endog : integer, optional + The dimension of the data vector. + + Returns + ------- + unconstrained : list + Unconstrained matrices. A list of length `order`, where each element is + an array sized `k_endog` x `k_endog`. + + Notes + ----- + Corresponds to the inverse of Lemma 2.2 in Ansley and Kohn (1986). See + `unconstrain_stationary_multivariate` for more details. + + """ + from scipy import linalg + + unconstrained = [] # A_s, s = 1, ..., p + if order is None: + order = len(constrained) + if k_endog is None: + k_endog = constrained[0].shape[0] + + eye = np.eye(k_endog) + for i in range(order): + P = constrained[i] + # B^{-1} B^{-1}' = I - P P' + B_inv, lower = linalg.cho_factor(eye - np.dot(P, P.T), lower=True) + # A = BP + # B^{-1} A = P + unconstrained.append(linalg.solve_triangular(B_inv, P, lower=lower)) + return unconstrained + + +def _compute_multivariate_sample_acovf(endog, maxlag): + r""" + Computer multivariate sample autocovariances + + Parameters + ---------- + endog : array_like + Sample data on which to compute sample autocovariances. Shaped + `nobs` x `k_endog`. + + Returns + ------- + sample_autocovariances : list + A list of the first `maxlag` sample autocovariance matrices. Each + matrix is shaped `k_endog` x `k_endog`. + + Notes + ----- + This function computes the forward sample autocovariances: + + .. math:: + + \hat \Gamma(s) = \frac{1}{n} \sum_{t=1}^{n-s} + (Z_t - \bar Z) (Z_{t+s} - \bar Z)' + + See page 353 of Wei (1990). This function is primarily implemented for + checking the partial autocorrelation functions below, and so is quite slow. + + References + ---------- + .. [*] Wei, William. 1990. + Time Series Analysis : Univariate and Multivariate Methods. + Boston: Pearson. + """ + # Get the (demeaned) data as an array + endog = np.array(endog) + if endog.ndim == 1: + endog = endog[:, np.newaxis] + endog -= np.mean(endog, axis=0) + + # Dimensions + nobs, k_endog = endog.shape + + sample_autocovariances = [] + for s in range(maxlag + 1): + sample_autocovariances.append(np.zeros((k_endog, k_endog))) + for t in range(nobs - s): + sample_autocovariances[s] += np.outer(endog[t], endog[t+s]) + sample_autocovariances[s] /= nobs + + return sample_autocovariances + + +def _compute_multivariate_acovf_from_coefficients( + coefficients, error_variance, maxlag=None, + forward_autocovariances=False): + r""" + Compute multivariate autocovariances from vector autoregression coefficient + matrices + + Parameters + ---------- + coefficients : array or list + The coefficients matrices. If a list, should be a list of length + `order`, where each element is an array sized `k_endog` x `k_endog`. If + an array, should be the coefficient matrices horizontally concatenated + and sized `k_endog` x `k_endog * order`. + error_variance : array + The variance / covariance matrix of the error term. Should be sized + `k_endog` x `k_endog`. + maxlag : integer, optional + The maximum autocovariance to compute. Default is `order`-1. Can be + zero, in which case it returns the variance. + forward_autocovariances : boolean, optional + Whether or not to compute forward autocovariances + :math:`E(y_t y_{t+j}')`. Default is False, so that backward + autocovariances :math:`E(y_t y_{t-j}')` are returned. + + Returns + ------- + autocovariances : list + A list of the first `maxlag` autocovariance matrices. Each matrix is + shaped `k_endog` x `k_endog`. + + Notes + ----- + Computes + + .. math:: + + \Gamma(j) = E(y_t y_{t-j}') + + for j = 1, ..., `maxlag`, unless `forward_autocovariances` is specified, + in which case it computes: + + .. math:: + + E(y_t y_{t+j}') = \Gamma(j)' + + Coefficients are assumed to be provided from the VAR model: + + .. math:: + y_t = A_1 y_{t-1} + \dots + A_p y_{t-p} + \varepsilon_t + + Autocovariances are calculated by solving the associated discrete Lyapunov + equation of the state space representation of the VAR process. + + """ + from scipy import linalg + + # Convert coefficients to a list of matrices, for use in + # `companion_matrix`; get dimensions + if type(coefficients) == list: + order = len(coefficients) + k_endog = coefficients[0].shape[0] + else: + k_endog, order = coefficients.shape + order //= k_endog + + coefficients = [ + coefficients[:k_endog, i*k_endog:(i+1)*k_endog] + for i in range(order) + ] + + if maxlag is None: + maxlag = order-1 + + # Start with VAR(p): w_{t+1} = phi_1 w_t + ... + phi_p w_{t-p+1} + u_{t+1} + # Then stack the VAR(p) into a VAR(1) in companion matrix form: + # z_{t+1} = F z_t + v_t + companion = companion_matrix( + [1] + [-np.squeeze(coefficients[i]) for i in range(order)] + ).T + + # Compute the error variance matrix for the stacked form: E v_t v_t' + selected_variance = np.zeros(companion.shape) + selected_variance[:k_endog, :k_endog] = error_variance + + # Compute the unconditional variance of z_t: E z_t z_t' + stacked_cov = linalg.solve_discrete_lyapunov(companion, selected_variance) + + # The first (block) row of the variance of z_t gives the first p-1 + # autocovariances of w_t: \Gamma_i = E w_t w_t+i with \Gamma_0 = Var(w_t) + # Note: these are okay, checked against ArmaProcess + autocovariances = [ + stacked_cov[:k_endog, i*k_endog:(i+1)*k_endog] + for i in range(min(order, maxlag+1)) + ] + + for i in range(maxlag - (order-1)): + stacked_cov = np.dot(companion, stacked_cov) + autocovariances += [ + stacked_cov[:k_endog, -k_endog:] + ] + + if forward_autocovariances: + for i in range(len(autocovariances)): + autocovariances[i] = autocovariances[i].T + + return autocovariances + + +def _compute_multivariate_sample_pacf(endog, maxlag): + """ + Computer multivariate sample partial autocorrelations + + Parameters + ---------- + endog : array_like + Sample data on which to compute sample autocovariances. Shaped + `nobs` x `k_endog`. + maxlag : integer + Maximum lag for which to calculate sample partial autocorrelations. + + Returns + ------- + sample_pacf : list + A list of the first `maxlag` sample partial autocorrelation matrices. + Each matrix is shaped `k_endog` x `k_endog`. + + """ + sample_autocovariances = _compute_multivariate_sample_acovf(endog, maxlag) + + return _compute_multivariate_pacf_from_autocovariances( + sample_autocovariances) + + +def _compute_multivariate_pacf_from_autocovariances(autocovariances, + order=None, k_endog=None): + """ + Compute multivariate partial autocorrelations from autocovariances. + + Parameters + ---------- + autocovariances : list + Autocorrelations matrices. Should be a list of length `order` + 1, + where each element is an array sized `k_endog` x `k_endog`. + order : integer, optional + The order of the autoregression. + k_endog : integer, optional + The dimension of the data vector. + + Returns + ------- + pacf : list + List of first `order` multivariate partial autocorrelations. + + Notes + ----- + Note that this computes multivariate partial autocorrelations. + + Corresponds to the inverse of Lemma 2.1 in Ansley and Kohn (1986). See + `unconstrain_stationary_multivariate` for more details. + + Notes + ----- + Computes sample partial autocorrelations if sample autocovariances are + given. + + """ + from scipy import linalg + + if order is None: + order = len(autocovariances)-1 + if k_endog is None: + k_endog = autocovariances[0].shape[0] + + # Now apply the Ansley and Kohn (1986) algorithm, except that instead of + # calculating phi_{s+1, s+1} = L_s P_{s+1} {L_s^*}^{-1} (which requires + # the partial autocorrelation P_{s+1} which is what we're trying to + # calculate here), we calculate it as in Ansley and Newbold (1979), using + # the autocovariances \Gamma_s and the forwards and backwards residual + # variances \Sigma_s, \Sigma_s^*: + # phi_{s+1, s+1} = [ \Gamma_{s+1}' - \phi_{s,1} \Gamma_s' - ... - + # \phi_{s,s} \Gamma_1' ] {\Sigma_s^*}^{-1} + + # Forward and backward variances + forward_variances = [] # \Sigma_s + backward_variances = [] # \Sigma_s^*, s = 0, ..., p + # \phi_{s,k}, s = 1, ..., p + # k = 1, ..., s+1 + forwards = [] + # \phi_{s,k}^* + backwards = [] + + forward_factors = [] # L_s + backward_factors = [] # L_s^*, s = 0, ..., p + + # Ultimately we want to construct the partial autocorrelation matrices + # Note that this is "1-indexed" in the sense that it stores P_1, ... P_p + # rather than starting with P_0. + partial_autocorrelations = [] + + # We fill in the entries of phi_{s,k} as follows: + # [1,1] + # [2,2], [2,1] + # [3,3], [3,1], [3,2] + # ... + # [p,p], [p,1], ..., [p,p-1] + # the last row, correctly ordered, should be the same as the coefficient + # matrices provided in the argument `constrained` + for s in range(order): # s = 0, ..., p-1 + prev_forwards = list(forwards) + prev_backwards = list(backwards) + forwards = [] + backwards = [] + + # Create forward and backwards variances Sigma_s, Sigma*_s + forward_variance = autocovariances[0].copy() + backward_variance = autocovariances[0].T.copy() + + for k in range(s): + forward_variance -= np.dot(prev_forwards[k], + autocovariances[k+1]) + backward_variance -= np.dot(prev_backwards[k], + autocovariances[k+1].T) + + forward_variances.append(forward_variance) + backward_variances.append(backward_variance) + + # Cholesky factors + forward_factors.append( + linalg.cholesky(forward_variances[s], lower=True) + ) + backward_factors.append( + linalg.cholesky(backward_variances[s], lower=True) + ) + + # Create the intermediate sum term + if s == 0: + # phi_11 = \Gamma_1' \Gamma_0^{-1} + # phi_11 \Gamma_0 = \Gamma_1' + # \Gamma_0 phi_11' = \Gamma_1 + forwards.append(linalg.cho_solve( + (forward_factors[0], True), autocovariances[1]).T) + # backwards.append(forwards[-1]) + # phi_11_star = \Gamma_1 \Gamma_0^{-1} + # phi_11_star \Gamma_0 = \Gamma_1 + # \Gamma_0 phi_11_star' = \Gamma_1' + backwards.append(linalg.cho_solve( + (backward_factors[0], True), autocovariances[1].T).T) + else: + # G := \Gamma_{s+1}' - + # \phi_{s,1} \Gamma_s' - .. - \phi_{s,s} \Gamma_1' + tmp_sum = autocovariances[s+1].T.copy() + + for k in range(s): + tmp_sum -= np.dot(prev_forwards[k], autocovariances[s-k].T) + + # Create the "last" (k = s+1) matrix + # Note: this is for k = s+1. However, below we then have to + # fill in for k = 1, ..., s in order. + # phi = G Sigma*^{-1} + # phi Sigma* = G + # Sigma*' phi' = G' + # Sigma* phi' = G' + # (because Sigma* is symmetric) + forwards.append(linalg.cho_solve( + (backward_factors[s], True), tmp_sum.T).T) + + # phi = G' Sigma^{-1} + # phi Sigma = G' + # Sigma' phi' = G + # Sigma phi' = G + # (because Sigma is symmetric) + backwards.append(linalg.cho_solve( + (forward_factors[s], True), tmp_sum).T) + + # Create the remaining k = 1, ..., s matrices, + # only has an effect if s >= 1 + for k in range(s): + forwards.insert(k, prev_forwards[k] - np.dot( + forwards[-1], prev_backwards[s-(k+1)])) + backwards.insert(k, prev_backwards[k] - np.dot( + backwards[-1], prev_forwards[s-(k+1)])) + + # Partial autocorrelation matrix: P_{s+1} + # P = L^{-1} phi L* + # L P = (phi L*) + partial_autocorrelations.append(linalg.solve_triangular( + forward_factors[s], np.dot(forwards[s], backward_factors[s]), + lower=True)) + + return partial_autocorrelations + + +def _compute_multivariate_pacf_from_coefficients(constrained, error_variance, + order=None, k_endog=None): + r""" + Transform matrices corresponding to a stationary (or invertible) process + to matrices with singular values less than one. + + Parameters + ---------- + constrained : array or list + The coefficients matrices. If a list, should be a list of length + `order`, where each element is an array sized `k_endog` x `k_endog`. If + an array, should be the coefficient matrices horizontally concatenated + and sized `k_endog` x `k_endog * order`. + error_variance : array + The variance / covariance matrix of the error term. Should be sized + `k_endog` x `k_endog`. + order : integer, optional + The order of the autoregression. + k_endog : integer, optional + The dimension of the data vector. + + Returns + ------- + pacf : list + List of first `order` multivariate partial autocorrelations. + + Notes + ----- + Note that this computes multivariate partial autocorrelations. + + Corresponds to the inverse of Lemma 2.1 in Ansley and Kohn (1986). See + `unconstrain_stationary_multivariate` for more details. + + Notes + ----- + + Coefficients are assumed to be provided from the VAR model: + + .. math:: + y_t = A_1 y_{t-1} + \dots + A_p y_{t-p} + \varepsilon_t + """ + + if type(constrained) == list: + order = len(constrained) + k_endog = constrained[0].shape[0] + else: + k_endog, order = constrained.shape + order //= k_endog + + # Get autocovariances for the process; these are defined to be + # E z_t z_{t-j}' + # However, we want E z_t z_{t+j}' = (E z_t z_{t-j}')' + _acovf = _compute_multivariate_acovf_from_coefficients + + autocovariances = [ + autocovariance.T for autocovariance in + _acovf(constrained, error_variance, maxlag=order)] + + return _compute_multivariate_pacf_from_autocovariances(autocovariances) + + +def unconstrain_stationary_multivariate(constrained, error_variance): + """ + Transform constrained parameters used in likelihood evaluation + to unconstrained parameters used by the optimizer + + Parameters + ---------- + constrained : array or list + Constrained parameters of, e.g., an autoregressive or moving average + component, to be transformed to arbitrary parameters used by the + optimizer. If a list, should be a list of length `order`, where each + element is an array sized `k_endog` x `k_endog`. If an array, should be + the coefficient matrices horizontally concatenated and sized + `k_endog` x `k_endog * order`. + error_variance : array + The variance / covariance matrix of the error term. Should be sized + `k_endog` x `k_endog`. This is used as input in the algorithm even if + is not transformed by it (when `transform_variance` is False). + + Returns + ------- + unconstrained : array + Unconstrained parameters used by the optimizer, to be transformed to + stationary coefficients of, e.g., an autoregressive or moving average + component. Will match the type of the passed `constrained` + variable (so if a list was passed, a list will be returned). + + Notes + ----- + Uses the list representation internally, even if an array is passed. + + References + ---------- + .. [*] Ansley, Craig F., and Robert Kohn. 1986. + "A Note on Reparameterizing a Vector Autoregressive Moving Average Model + to Enforce Stationarity." + Journal of Statistical Computation and Simulation 24 (2): 99-106. + + """ + use_list = type(constrained) == list + if not use_list: + k_endog, order = constrained.shape + order //= k_endog + + constrained = [ + constrained[:k_endog, i*k_endog:(i+1)*k_endog] + for i in range(order) + ] + else: + order = len(constrained) + k_endog = constrained[0].shape[0] + + # Step 1: convert matrices from the space of stationary + # coefficient matrices to our "partial autocorrelation matrix" space + # (matrices with singular values less than one) + partial_autocorrelations = _compute_multivariate_pacf_from_coefficients( + constrained, error_variance, order, k_endog) + + # Step 2: convert from arbitrary matrices to those with singular values + # less than one. + unconstrained = _unconstrain_sv_less_than_one( + partial_autocorrelations, order, k_endog) + + if not use_list: + unconstrained = np.concatenate(unconstrained, axis=1) + + return unconstrained, error_variance + + +def validate_matrix_shape(name, shape, nrows, ncols, nobs): + """ + Validate the shape of a possibly time-varying matrix, or raise an exception + + Parameters + ---------- + name : str + The name of the matrix being validated (used in exception messages) + shape : array_like + The shape of the matrix to be validated. May be of size 2 or (if + the matrix is time-varying) 3. + nrows : int + The expected number of rows. + ncols : int + The expected number of columns. + nobs : int + The number of observations (used to validate the last dimension of a + time-varying matrix) + + Raises + ------ + ValueError + If the matrix is not of the desired shape. + """ + ndim = len(shape) + + # Enforce dimension + if ndim not in [2, 3]: + raise ValueError('Invalid value for %s matrix. Requires a' + ' 2- or 3-dimensional array, got %d dimensions' % + (name, ndim)) + # Enforce the shape of the matrix + if not shape[0] == nrows: + raise ValueError('Invalid dimensions for %s matrix: requires %d' + ' rows, got %d' % (name, nrows, shape[0])) + if not shape[1] == ncols: + raise ValueError('Invalid dimensions for %s matrix: requires %d' + ' columns, got %d' % (name, ncols, shape[1])) + + # If we don't yet know `nobs`, don't allow time-varying arrays + if nobs is None and not (ndim == 2 or shape[-1] == 1): + raise ValueError('Invalid dimensions for %s matrix: time-varying' + ' matrices cannot be given unless `nobs` is specified' + ' (implicitly when a dataset is bound or else set' + ' explicity)' % name) + + # Enforce time-varying array size + if ndim == 3 and nobs is not None and not shape[-1] in [1, nobs]: + raise ValueError('Invalid dimensions for time-varying %s' + ' matrix. Requires shape (*,*,%d), got %s' % + (name, nobs, str(shape))) + + +def validate_vector_shape(name, shape, nrows, nobs): + """ + Validate the shape of a possibly time-varying vector, or raise an exception + + Parameters + ---------- + name : str + The name of the vector being validated (used in exception messages) + shape : array_like + The shape of the vector to be validated. May be of size 1 or (if + the vector is time-varying) 2. + nrows : int + The expected number of rows (elements of the vector). + nobs : int + The number of observations (used to validate the last dimension of a + time-varying vector) + + Raises + ------ + ValueError + If the vector is not of the desired shape. + """ + ndim = len(shape) + # Enforce dimension + if ndim not in [1, 2]: + raise ValueError('Invalid value for %s vector. Requires a' + ' 1- or 2-dimensional array, got %d dimensions' % + (name, ndim)) + # Enforce the shape of the vector + if not shape[0] == nrows: + raise ValueError('Invalid dimensions for %s vector: requires %d' + ' rows, got %d' % (name, nrows, shape[0])) + + # If we don't yet know `nobs`, don't allow time-varying arrays + if nobs is None and not (ndim == 1 or shape[-1] == 1): + raise ValueError('Invalid dimensions for %s vector: time-varying' + ' vectors cannot be given unless `nobs` is specified' + ' (implicitly when a dataset is bound or else set' + ' explicity)' % name) + + # Enforce time-varying array size + if ndim == 2 and not shape[1] in [1, nobs]: + raise ValueError('Invalid dimensions for time-varying %s' + ' vector. Requires shape (*,%d), got %s' % + (name, nobs, str(shape))) + + +def reorder_missing_matrix(matrix, missing, reorder_rows=False, + reorder_cols=False, is_diagonal=False, + inplace=False, prefix=None): + """ + Reorder the rows or columns of a time-varying matrix where all non-missing + values are in the upper left corner of the matrix. + + Parameters + ---------- + matrix : array_like + The matrix to be reordered. Must have shape (n, m, nobs). + missing : array_like of bool + The vector of missing indices. Must have shape (k, nobs) where `k = n` + if `reorder_rows is True` and `k = m` if `reorder_cols is True`. + reorder_rows : bool, optional + Whether or not the rows of the matrix should be re-ordered. Default + is False. + reorder_cols : bool, optional + Whether or not the columns of the matrix should be re-ordered. Default + is False. + is_diagonal : bool, optional + Whether or not the matrix is diagonal. If this is True, must also have + `n = m`. Default is False. + inplace : bool, optional + Whether or not to reorder the matrix in-place. + prefix : {'s', 'd', 'c', 'z'}, optional + The Fortran prefix of the vector. Default is to automatically detect + the dtype. This parameter should only be used with caution. + + Returns + ------- + reordered_matrix : array_like + The reordered matrix. + + """ + if prefix is None: + prefix = find_best_blas_type((matrix,))[0] + reorder = prefix_reorder_missing_matrix_map[prefix] + + if not inplace: + matrix = np.copy(matrix, order='F') + + reorder(matrix, np.asfortranarray(missing), reorder_rows, reorder_cols, + is_diagonal) + + return matrix + + +def reorder_missing_vector(vector, missing, inplace=False, prefix=None): + """ + Reorder the elements of a time-varying vector where all non-missing + values are in the first elements of the vector. + + Parameters + ---------- + vector : array_like + The vector to be reordered. Must have shape (n, nobs). + missing : array_like of bool + The vector of missing indices. Must have shape (n, nobs). + inplace : bool, optional + Whether or not to reorder the matrix in-place. Default is False. + prefix : {'s', 'd', 'c', 'z'}, optional + The Fortran prefix of the vector. Default is to automatically detect + the dtype. This parameter should only be used with caution. + + Returns + ------- + reordered_vector : array_like + The reordered vector. + + """ + if prefix is None: + prefix = find_best_blas_type((vector,))[0] + reorder = prefix_reorder_missing_vector_map[prefix] + + if not inplace: + vector = np.copy(vector, order='F') + + reorder(vector, np.asfortranarray(missing)) + + return vector + + +def copy_missing_matrix(A, B, missing, missing_rows=False, missing_cols=False, + is_diagonal=False, inplace=False, prefix=None): + """ + Copy the rows or columns of a time-varying matrix where all non-missing + values are in the upper left corner of the matrix. + + Parameters + ---------- + A : array_like + The matrix from which to copy. Must have shape (n, m, nobs) or + (n, m, 1). + B : array_like + The matrix to copy to. Must have shape (n, m, nobs). + missing : array_like of bool + The vector of missing indices. Must have shape (k, nobs) where `k = n` + if `reorder_rows is True` and `k = m` if `reorder_cols is True`. + missing_rows : bool, optional + Whether or not the rows of the matrix are a missing dimension. Default + is False. + missing_cols : bool, optional + Whether or not the columns of the matrix are a missing dimension. + Default is False. + is_diagonal : bool, optional + Whether or not the matrix is diagonal. If this is True, must also have + `n = m`. Default is False. + inplace : bool, optional + Whether or not to copy to B in-place. Default is False. + prefix : {'s', 'd', 'c', 'z'}, optional + The Fortran prefix of the vector. Default is to automatically detect + the dtype. This parameter should only be used with caution. + + Returns + ------- + copied_matrix : array_like + The matrix B with the non-missing submatrix of A copied onto it. + + """ + if prefix is None: + prefix = find_best_blas_type((A, B))[0] + copy = prefix_copy_missing_matrix_map[prefix] + + if not inplace: + B = np.copy(B, order='F') + + # We may have been given an F-contiguous memoryview; in that case, we don't + # want to alter it or convert it to a numpy array + try: + if not A.is_f_contig(): + raise ValueError() + except (AttributeError, ValueError): + A = np.asfortranarray(A) + + copy(A, B, np.asfortranarray(missing), missing_rows, missing_cols, + is_diagonal) + + return B + + +def copy_missing_vector(a, b, missing, inplace=False, prefix=None): + """ + Reorder the elements of a time-varying vector where all non-missing + values are in the first elements of the vector. + + Parameters + ---------- + a : array_like + The vector from which to copy. Must have shape (n, nobs) or (n, 1). + b : array_like + The vector to copy to. Must have shape (n, nobs). + missing : array_like of bool + The vector of missing indices. Must have shape (n, nobs). + inplace : bool, optional + Whether or not to copy to b in-place. Default is False. + prefix : {'s', 'd', 'c', 'z'}, optional + The Fortran prefix of the vector. Default is to automatically detect + the dtype. This parameter should only be used with caution. + + Returns + ------- + copied_vector : array_like + The vector b with the non-missing subvector of b copied onto it. + + """ + if prefix is None: + prefix = find_best_blas_type((a, b))[0] + copy = prefix_copy_missing_vector_map[prefix] + + if not inplace: + b = np.copy(b, order='F') + + # We may have been given an F-contiguous memoryview; in that case, we don't + # want to alter it or convert it to a numpy array + try: + if not a.is_f_contig(): + raise ValueError() + except (AttributeError, ValueError): + a = np.asfortranarray(a) + + copy(a, b, np.asfortranarray(missing)) + + return b + + +def copy_index_matrix(A, B, index, index_rows=False, index_cols=False, + is_diagonal=False, inplace=False, prefix=None): + """ + Copy the rows or columns of a time-varying matrix where all non-index + values are in the upper left corner of the matrix. + + Parameters + ---------- + A : array_like + The matrix from which to copy. Must have shape (n, m, nobs) or + (n, m, 1). + B : array_like + The matrix to copy to. Must have shape (n, m, nobs). + index : array_like of bool + The vector of index indices. Must have shape (k, nobs) where `k = n` + if `reorder_rows is True` and `k = m` if `reorder_cols is True`. + index_rows : bool, optional + Whether or not the rows of the matrix are a index dimension. Default + is False. + index_cols : bool, optional + Whether or not the columns of the matrix are a index dimension. + Default is False. + is_diagonal : bool, optional + Whether or not the matrix is diagonal. If this is True, must also have + `n = m`. Default is False. + inplace : bool, optional + Whether or not to copy to B in-place. Default is False. + prefix : {'s', 'd', 'c', 'z'}, optional + The Fortran prefix of the vector. Default is to automatically detect + the dtype. This parameter should only be used with caution. + + Returns + ------- + copied_matrix : array_like + The matrix B with the non-index submatrix of A copied onto it. + + """ + if prefix is None: + prefix = find_best_blas_type((A, B))[0] + copy = prefix_copy_index_matrix_map[prefix] + + if not inplace: + B = np.copy(B, order='F') + + # We may have been given an F-contiguous memoryview; in that case, we don't + # want to alter it or convert it to a numpy array + try: + if not A.is_f_contig(): + raise ValueError() + except (AttributeError, ValueError): + A = np.asfortranarray(A) + + copy(A, B, np.asfortranarray(index), index_rows, index_cols, + is_diagonal) + + return B + + +def copy_index_vector(a, b, index, inplace=False, prefix=None): + """ + Reorder the elements of a time-varying vector where all non-index + values are in the first elements of the vector. + + Parameters + ---------- + a : array_like + The vector from which to copy. Must have shape (n, nobs) or (n, 1). + b : array_like + The vector to copy to. Must have shape (n, nobs). + index : array_like of bool + The vector of index indices. Must have shape (n, nobs). + inplace : bool, optional + Whether or not to copy to b in-place. Default is False. + prefix : {'s', 'd', 'c', 'z'}, optional + The Fortran prefix of the vector. Default is to automatically detect + the dtype. This parameter should only be used with caution. + + Returns + ------- + copied_vector : array_like + The vector b with the non-index subvector of b copied onto it. + + """ + if prefix is None: + prefix = find_best_blas_type((a, b))[0] + copy = prefix_copy_index_vector_map[prefix] + + if not inplace: + b = np.copy(b, order='F') + + # We may have been given an F-contiguous memoryview; in that case, we don't + # want to alter it or convert it to a numpy array + try: + if not a.is_f_contig(): + raise ValueError() + except (AttributeError, ValueError): + a = np.asfortranarray(a) + + copy(a, b, np.asfortranarray(index)) + + return b + + +def prepare_exog(exog): + k_exog = 0 + if exog is not None: + exog_is_using_pandas = _is_using_pandas(exog, None) + if not exog_is_using_pandas: + exog = np.asarray(exog) + + # Make sure we have 2-dimensional array + if exog.ndim == 1: + if not exog_is_using_pandas: + exog = exog[:, None] + else: + exog = pd.DataFrame(exog) + + k_exog = exog.shape[1] + return (k_exog, exog) + + +def prepare_trend_spec(trend): + # Trend + if trend is None or trend in ['n', 'nc']: + polynomial_trend = np.ones((0)) + if trend == 'nc': + warnings.warn("Argument option trend='nc' is deprecated. Please" + " use option trend='n'.", DeprecationWarning) + elif trend == 'c': + polynomial_trend = np.r_[1] + elif trend == 't': + polynomial_trend = np.r_[0, 1] + elif trend == 'ct': + polynomial_trend = np.r_[1, 1] + elif trend == 'ctt': + # TODO deprecate ctt? + polynomial_trend = np.r_[1, 1, 1] + else: + trend = np.array(trend) + if trend.ndim > 0: + polynomial_trend = (trend > 0).astype(int) + else: + raise ValueError('Invalid trend method.') + + # Note: k_trend is not the degree of the trend polynomial, because e.g. + # k_trend = 1 corresponds to the degree zero polynomial (with only a + # constant term). + k_trend = int(np.sum(polynomial_trend)) + + return polynomial_trend, k_trend + + +def prepare_trend_data(polynomial_trend, k_trend, nobs, offset=1): + # Cache the arrays for calculating the intercept from the trend + # components + time_trend = np.arange(offset, nobs + offset) + trend_data = np.zeros((nobs, k_trend)) + i = 0 + for k in polynomial_trend.nonzero()[0]: + if k == 0: + trend_data[:, i] = np.ones(nobs,) + else: + trend_data[:, i] = time_trend**k + i += 1 + + return trend_data diff --git a/statsmodels/tsa/statespace/varmax.py b/statsmodels/tsa/statespace/varmax.py new file mode 100644 index 0000000..043597d --- /dev/null +++ b/statsmodels/tsa/statespace/varmax.py @@ -0,0 +1,1022 @@ +# -*- coding: utf-8 -*- +""" +Vector Autoregressive Moving Average with eXogenous regressors model + +Author: Chad Fulton +License: Simplified-BSD +""" +from __future__ import division, absolute_import, print_function + +from warnings import warn +from collections import OrderedDict + +import pandas as pd +import numpy as np + +from statsmodels.tools.tools import Bunch +from statsmodels.tools.data import _is_using_pandas +from statsmodels.tsa.vector_ar import var_model +import statsmodels.base.wrapper as wrap +from statsmodels.tools.sm_exceptions import EstimationWarning, ValueWarning + +from .kalman_filter import INVERT_UNIVARIATE, SOLVE_LU +from .mlemodel import MLEModel, MLEResults, MLEResultsWrapper +from .tools import ( + is_invertible, prepare_exog, + constrain_stationary_multivariate, unconstrain_stationary_multivariate, + prepare_trend_spec, prepare_trend_data +) + + +class VARMAX(MLEModel): + r""" + Vector Autoregressive Moving Average with eXogenous regressors model + + Parameters + ---------- + endog : array_like + The observed time-series process :math:`y`, , shaped nobs x k_endog. + exog : array_like, optional + Array of exogenous regressors, shaped nobs x k. + order : iterable + The (p,q) order of the model for the number of AR and MA parameters to + use. + trend : str{'n','c','t','ct'} or iterable, optional + Parameter controlling the deterministic trend polynomial :math:`A(t)`. + Can be specified as a string where 'c' indicates a constant (i.e. a + degree zero component of the trend polynomial), 't' indicates a + linear trend with time, and 'ct' is both. Can also be specified as an + iterable defining the polynomial as in `numpy.poly1d`, where + `[1,1,0,1]` would denote :math:`a + bt + ct^3`. Default is a constant + trend component. + error_cov_type : {'diagonal', 'unstructured'}, optional + The structure of the covariance matrix of the error term, where + "unstructured" puts no restrictions on the matrix and "diagonal" + requires it to be a diagonal matrix (uncorrelated errors). Default is + "unstructured". + measurement_error : boolean, optional + Whether or not to assume the endogenous observations `endog` were + measured with error. Default is False. + enforce_stationarity : boolean, optional + Whether or not to transform the AR parameters to enforce stationarity + in the autoregressive component of the model. Default is True. + enforce_invertibility : boolean, optional + Whether or not to transform the MA parameters to enforce invertibility + in the moving average component of the model. Default is True. + kwargs + Keyword arguments may be used to provide default values for state space + matrices or for Kalman filtering options. See `Representation`, and + `KalmanFilter` for more details. + + Attributes + ---------- + order : iterable + The (p,q) order of the model for the number of AR and MA parameters to + use. + trend : str{'n','c','t','ct'} or iterable + Parameter controlling the deterministic trend polynomial :math:`A(t)`. + Can be specified as a string where 'c' indicates a constant (i.e. a + degree zero component of the trend polynomial), 't' indicates a + linear trend with time, and 'ct' is both. Can also be specified as an + iterable defining the polynomial as in `numpy.poly1d`, where + `[1,1,0,1]` would denote :math:`a + bt + ct^3`. + error_cov_type : {'diagonal', 'unstructured'}, optional + The structure of the covariance matrix of the error term, where + "unstructured" puts no restrictions on the matrix and "diagonal" + requires it to be a diagonal matrix (uncorrelated errors). Default is + "unstructured". + measurement_error : boolean, optional + Whether or not to assume the endogenous observations `endog` were + measured with error. Default is False. + enforce_stationarity : boolean, optional + Whether or not to transform the AR parameters to enforce stationarity + in the autoregressive component of the model. Default is True. + enforce_invertibility : boolean, optional + Whether or not to transform the MA parameters to enforce invertibility + in the moving average component of the model. Default is True. + + Notes + ----- + Generically, the VARMAX model is specified (see for example chapter 18 of + [1]_): + + .. math:: + + y_t = A(t) + A_1 y_{t-1} + \dots + A_p y_{t-p} + B x_t + \epsilon_t + + M_1 \epsilon_{t-1} + \dots M_q \epsilon_{t-q} + + where :math:`\epsilon_t \sim N(0, \Omega)`, and where :math:`y_t` is a + `k_endog x 1` vector. Additionally, this model allows considering the case + where the variables are measured with error. + + Note that in the full VARMA(p,q) case there is a fundamental identification + problem in that the coefficient matrices :math:`\{A_i, M_j\}` are not + generally unique, meaning that for a given time series process there may + be multiple sets of matrices that equivalently represent it. See Chapter 12 + of [1]_ for more information. Although this class can be used to estimate + VARMA(p,q) models, a warning is issued to remind users that no steps have + been taken to ensure identification in this case. + + References + ---------- + .. [1] Lütkepohl, Helmut. 2007. + New Introduction to Multiple Time Series Analysis. + Berlin: Springer. + + """ + + def __init__(self, endog, exog=None, order=(1, 0), trend='c', + error_cov_type='unstructured', measurement_error=False, + enforce_stationarity=True, enforce_invertibility=True, + **kwargs): + + # Model parameters + self.error_cov_type = error_cov_type + self.measurement_error = measurement_error + self.enforce_stationarity = enforce_stationarity + self.enforce_invertibility = enforce_invertibility + + # Save the given orders + self.order = order + self.trend = trend + + # Model orders + self.k_ar = int(order[0]) + self.k_ma = int(order[1]) + + # Check for valid model + if error_cov_type not in ['diagonal', 'unstructured']: + raise ValueError('Invalid error covariance matrix type' + ' specification.') + if self.k_ar == 0 and self.k_ma == 0: + raise ValueError('Invalid VARMAX(p,q) specification; at least one' + ' p,q must be greater than zero.') + + # Warn for VARMA model + if self.k_ar > 0 and self.k_ma > 0: + warn('Estimation of VARMA(p,q) models is not generically robust,' + ' due especially to identification issues.', + EstimationWarning) + + # Trend + self.trend = trend + self.polynomial_trend, self.k_trend = prepare_trend_spec(self.trend) + self._trend_is_const = (self.polynomial_trend.size == 1 and + self.polynomial_trend[0] == 1) + + # Exogenous data + (self.k_exog, exog) = prepare_exog(exog) + + # Note: at some point in the future might add state regression, as in + # SARIMAX. + self.mle_regression = self.k_exog > 0 + + # We need to have an array or pandas at this point + if not _is_using_pandas(endog, None): + endog = np.asanyarray(endog) + + # Model order + # Used internally in various places + _min_k_ar = max(self.k_ar, 1) + self._k_order = _min_k_ar + self.k_ma + + # Number of states + k_endog = endog.shape[1] + k_posdef = k_endog + k_states = k_endog * self._k_order + + # By default, initialize as stationary + kwargs.setdefault('initialization', 'stationary') + + # By default, use LU decomposition + kwargs.setdefault('inversion_method', INVERT_UNIVARIATE | SOLVE_LU) + + # Initialize the state space model + super(VARMAX, self).__init__( + endog, exog=exog, k_states=k_states, k_posdef=k_posdef, **kwargs + ) + + # Set as time-varying model if we have time-trend or exog + if self.k_exog > 0 or (self.k_trend > 0 and not self._trend_is_const): + self.ssm._time_invariant = False + + # Initialize the parameters + self.parameters = OrderedDict() + self.parameters['trend'] = self.k_endog * self.k_trend + self.parameters['ar'] = self.k_endog**2 * self.k_ar + self.parameters['ma'] = self.k_endog**2 * self.k_ma + self.parameters['regression'] = self.k_endog * self.k_exog + if self.error_cov_type == 'diagonal': + self.parameters['state_cov'] = self.k_endog + # These parameters fill in a lower-triangular matrix which is then + # dotted with itself to get a positive definite matrix. + elif self.error_cov_type == 'unstructured': + self.parameters['state_cov'] = ( + int(self.k_endog * (self.k_endog + 1) / 2) + ) + self.parameters['obs_cov'] = self.k_endog * self.measurement_error + self.k_params = sum(self.parameters.values()) + + # Initialize trend data + self._trend_data = prepare_trend_data( + self.polynomial_trend, self.k_trend, self.nobs, offset=1) + + # Initialize known elements of the state space matrices + + # If we have exog effects, then the state intercept needs to be + # time-varying + if (self.k_trend > 0 and not self._trend_is_const) or self.k_exog > 0: + self.ssm['state_intercept'] = np.zeros((self.k_states, self.nobs)) + # self.ssm['obs_intercept'] = np.zeros((self.k_endog, self.nobs)) + + # The design matrix is just an identity for the first k_endog states + idx = np.diag_indices(self.k_endog) + self.ssm[('design',) + idx] = 1 + + # The transition matrix is described in four blocks, where the upper + # left block is in companion form with the autoregressive coefficient + # matrices (so it is shaped k_endog * k_ar x k_endog * k_ar) ... + if self.k_ar > 0: + idx = np.diag_indices((self.k_ar - 1) * self.k_endog) + idx = idx[0] + self.k_endog, idx[1] + self.ssm[('transition',) + idx] = 1 + # ... and the lower right block is in companion form with zeros as the + # coefficient matrices (it is shaped k_endog * k_ma x k_endog * k_ma). + idx = np.diag_indices((self.k_ma - 1) * self.k_endog) + idx = (idx[0] + (_min_k_ar + 1) * self.k_endog, + idx[1] + _min_k_ar * self.k_endog) + self.ssm[('transition',) + idx] = 1 + + # The selection matrix is described in two blocks, where the upper + # block selects the all k_posdef errors in the first k_endog rows + # (the upper block is shaped k_endog * k_ar x k) and the lower block + # also selects all k_posdef errors in the first k_endog rows (the lower + # block is shaped k_endog * k_ma x k). + idx = np.diag_indices(self.k_endog) + self.ssm[('selection',) + idx] = 1 + idx = idx[0] + _min_k_ar * self.k_endog, idx[1] + if self.k_ma > 0: + self.ssm[('selection',) + idx] = 1 + + # Cache some indices + if self._trend_is_const and self.k_exog == 0: + self._idx_state_intercept = np.s_['state_intercept', :k_endog, :] + elif self.k_trend > 0 or self.k_exog > 0: + self._idx_state_intercept = np.s_['state_intercept', :k_endog, :-1] + if self.k_ar > 0: + self._idx_transition = np.s_['transition', :k_endog, :] + else: + self._idx_transition = np.s_['transition', :k_endog, k_endog:] + if self.error_cov_type == 'diagonal': + self._idx_state_cov = ( + ('state_cov',) + np.diag_indices(self.k_endog)) + elif self.error_cov_type == 'unstructured': + self._idx_lower_state_cov = np.tril_indices(self.k_endog) + if self.measurement_error: + self._idx_obs_cov = ('obs_cov',) + np.diag_indices(self.k_endog) + + # Cache some slices + def _slice(key, offset): + length = self.parameters[key] + param_slice = np.s_[offset:offset + length] + offset += length + return param_slice, offset + + offset = 0 + self._params_trend, offset = _slice('trend', offset) + self._params_ar, offset = _slice('ar', offset) + self._params_ma, offset = _slice('ma', offset) + self._params_regression, offset = _slice('regression', offset) + self._params_state_cov, offset = _slice('state_cov', offset) + self._params_obs_cov, offset = _slice('obs_cov', offset) + + @property + def _res_classes(self): + return {'fit': (VARMAXResults, VARMAXResultsWrapper)} + + @property + def start_params(self): + params = np.zeros(self.k_params, dtype=np.float64) + + # A. Run a multivariate regression to get beta estimates + endog = pd.DataFrame(self.endog.copy()) + # Pandas < 0.13 didn't support the same type of DataFrame interpolation + # TODO remove this now that we have dropped support for Pandas < 0.13 + try: + endog = endog.interpolate() + except TypeError: + pass + endog = endog.fillna(method='backfill').values + exog = None + if self.k_trend > 0 and self.k_exog > 0: + exog = np.c_[self._trend_data, self.exog] + elif self.k_trend > 0: + exog = self._trend_data + elif self.k_exog > 0: + exog = self.exog + + # Although the Kalman filter can deal with missing values in endog, + # conditional sum of squares cannot + if np.any(np.isnan(endog)): + mask = ~np.any(np.isnan(endog), axis=1) + endog = endog[mask] + if exog is not None: + exog = exog[mask] + + # Regression and trend effects via OLS + trend_params = np.zeros(0) + exog_params = np.zeros(0) + if self.k_trend > 0 or self.k_exog > 0: + trendexog_params = np.linalg.pinv(exog).dot(endog) + endog -= np.dot(exog, trendexog_params) + if self.k_trend > 0: + trend_params = trendexog_params[:self.k_trend].T + if self.k_endog > 0: + exog_params = trendexog_params[self.k_trend:].T + + # B. Run a VAR model on endog to get trend, AR parameters + ar_params = [] + k_ar = self.k_ar if self.k_ar > 0 else 1 + mod_ar = var_model.VAR(endog) + res_ar = mod_ar.fit(maxlags=k_ar, ic=None, trend='nc') + if self.k_ar > 0: + ar_params = np.array(res_ar.params).T.ravel() + endog = res_ar.resid + + # Test for stationarity + if self.k_ar > 0 and self.enforce_stationarity: + coefficient_matrices = ( + ar_params.reshape( + self.k_endog * self.k_ar, self.k_endog + ).T + ).reshape(self.k_endog, self.k_endog, self.k_ar).T + + stationary = is_invertible([1] + list(-coefficient_matrices)) + + if not stationary: + warn('Non-stationary starting autoregressive parameters' + ' found. Using zeros as starting parameters.') + ar_params *= 0 + + # C. Run a VAR model on the residuals to get MA parameters + ma_params = [] + if self.k_ma > 0: + mod_ma = var_model.VAR(endog) + res_ma = mod_ma.fit(maxlags=self.k_ma, ic=None, trend='nc') + ma_params = np.array(res_ma.params.T).ravel() + + # Test for invertibility + if self.enforce_invertibility: + coefficient_matrices = ( + ma_params.reshape( + self.k_endog * self.k_ma, self.k_endog + ).T + ).reshape(self.k_endog, self.k_endog, self.k_ma).T + + invertible = is_invertible([1] + list(-coefficient_matrices)) + + if not invertible: + warn('Non-stationary starting moving-average parameters' + ' found. Using zeros as starting parameters.') + ma_params *= 0 + + # Transform trend / exog params from mean form to intercept form + if self.k_ar > 0 and self.k_trend > 0 or self.mle_regression: + coefficient_matrices = ( + ar_params.reshape( + self.k_endog * self.k_ar, self.k_endog + ).T + ).reshape(self.k_endog, self.k_endog, self.k_ar).T + + tmp = np.eye(self.k_endog) - np.sum(coefficient_matrices, axis=0) + + if self.k_trend > 0: + trend_params = np.dot(tmp, trend_params) + if self.mle_regression > 0: + exog_params = np.dot(tmp, exog_params) + + # 1. Intercept terms + if self.k_trend > 0: + params[self._params_trend] = trend_params.ravel() + + # 2. AR terms + if self.k_ar > 0: + params[self._params_ar] = ar_params + + # 3. MA terms + if self.k_ma > 0: + params[self._params_ma] = ma_params + + # 4. Regression terms + if self.mle_regression: + params[self._params_regression] = exog_params.ravel() + + # 5. State covariance terms + if self.error_cov_type == 'diagonal': + params[self._params_state_cov] = res_ar.sigma_u.diagonal() + elif self.error_cov_type == 'unstructured': + cov_factor = np.linalg.cholesky(res_ar.sigma_u) + params[self._params_state_cov] = ( + cov_factor[self._idx_lower_state_cov].ravel()) + + # 5. Measurement error variance terms + if self.measurement_error: + if self.k_ma > 0: + params[self._params_obs_cov] = res_ma.sigma_u.diagonal() + else: + params[self._params_obs_cov] = res_ar.sigma_u.diagonal() + + return params + + @property + def param_names(self): + param_names = [] + + # 1. Intercept terms + if self.k_trend > 0: + for i in self.polynomial_trend.nonzero()[0]: + if i == 0: + param_names += ['intercept.%s' % self.endog_names[j] + for j in range(self.k_endog)] + elif i == 1: + param_names += ['drift.%s' % self.endog_names[j] + for j in range(self.k_endog)] + else: + param_names += ['trend.%d.%s' % (i, self.endog_names[j]) + for j in range(self.k_endog)] + + # 2. AR terms + param_names += [ + 'L%d.%s.%s' % (i+1, self.endog_names[k], self.endog_names[j]) + for j in range(self.k_endog) + for i in range(self.k_ar) + for k in range(self.k_endog) + ] + + # 3. MA terms + param_names += [ + 'L%d.e(%s).%s' % (i+1, self.endog_names[k], self.endog_names[j]) + for j in range(self.k_endog) + for i in range(self.k_ma) + for k in range(self.k_endog) + ] + + # 4. Regression terms + param_names += [ + 'beta.%s.%s' % (self.exog_names[j], self.endog_names[i]) + for i in range(self.k_endog) + for j in range(self.k_exog) + ] + + # 5. State covariance terms + if self.error_cov_type == 'diagonal': + param_names += [ + 'sigma2.%s' % self.endog_names[i] + for i in range(self.k_endog) + ] + elif self.error_cov_type == 'unstructured': + param_names += [ + ('sqrt.var.%s' % self.endog_names[i] if i == j else + 'sqrt.cov.%s.%s' % (self.endog_names[j], self.endog_names[i])) + for i in range(self.k_endog) + for j in range(i+1) + ] + + # 5. Measurement error variance terms + if self.measurement_error: + param_names += [ + 'measurement_variance.%s' % self.endog_names[i] + for i in range(self.k_endog) + ] + + return param_names + + def transform_params(self, unconstrained): + """ + Transform unconstrained parameters used by the optimizer to constrained + parameters used in likelihood evaluation + + Parameters + ---------- + unconstrained : array_like + Array of unconstrained parameters used by the optimizer, to be + transformed. + + Returns + ------- + constrained : array_like + Array of constrained parameters which may be used in likelihood + evalation. + + Notes + ----- + Constrains the factor transition to be stationary and variances to be + positive. + """ + unconstrained = np.array(unconstrained, ndmin=1) + constrained = np.zeros(unconstrained.shape, dtype=unconstrained.dtype) + + # 1. Intercept terms: nothing to do + constrained[self._params_trend] = unconstrained[self._params_trend] + + # 2. AR terms: optionally force to be stationary + if self.k_ar > 0 and self.enforce_stationarity: + # Create the state covariance matrix + if self.error_cov_type == 'diagonal': + state_cov = np.diag(unconstrained[self._params_state_cov]**2) + elif self.error_cov_type == 'unstructured': + state_cov_lower = np.zeros(self.ssm['state_cov'].shape, + dtype=unconstrained.dtype) + state_cov_lower[self._idx_lower_state_cov] = ( + unconstrained[self._params_state_cov]) + state_cov = np.dot(state_cov_lower, state_cov_lower.T) + + # Transform the parameters + coefficients = unconstrained[self._params_ar].reshape( + self.k_endog, self.k_endog * self.k_ar) + coefficient_matrices, variance = ( + constrain_stationary_multivariate(coefficients, state_cov)) + constrained[self._params_ar] = coefficient_matrices.ravel() + else: + constrained[self._params_ar] = unconstrained[self._params_ar] + + # 3. MA terms: optionally force to be invertible + if self.k_ma > 0 and self.enforce_invertibility: + # Transform the parameters, using an identity variance matrix + state_cov = np.eye(self.k_endog, dtype=unconstrained.dtype) + coefficients = unconstrained[self._params_ma].reshape( + self.k_endog, self.k_endog * self.k_ma) + coefficient_matrices, variance = ( + constrain_stationary_multivariate(coefficients, state_cov)) + constrained[self._params_ma] = coefficient_matrices.ravel() + else: + constrained[self._params_ma] = unconstrained[self._params_ma] + + # 4. Regression terms: nothing to do + constrained[self._params_regression] = ( + unconstrained[self._params_regression]) + + # 5. State covariance terms + # If we have variances, force them to be positive + if self.error_cov_type == 'diagonal': + constrained[self._params_state_cov] = ( + unconstrained[self._params_state_cov]**2) + # Otherwise, nothing needs to be done + elif self.error_cov_type == 'unstructured': + constrained[self._params_state_cov] = ( + unconstrained[self._params_state_cov]) + + # 5. Measurement error variance terms + if self.measurement_error: + # Force these to be positive + constrained[self._params_obs_cov] = ( + unconstrained[self._params_obs_cov]**2) + + return constrained + + def untransform_params(self, constrained): + """ + Transform constrained parameters used in likelihood evaluation + to unconstrained parameters used by the optimizer. + + Parameters + ---------- + constrained : array_like + Array of constrained parameters used in likelihood evalution, to be + transformed. + + Returns + ------- + unconstrained : array_like + Array of unconstrained parameters used by the optimizer. + """ + constrained = np.array(constrained, ndmin=1) + unconstrained = np.zeros(constrained.shape, dtype=constrained.dtype) + + # 1. Intercept terms: nothing to do + unconstrained[self._params_trend] = constrained[self._params_trend] + + # 2. AR terms: optionally were forced to be stationary + if self.k_ar > 0 and self.enforce_stationarity: + # Create the state covariance matrix + if self.error_cov_type == 'diagonal': + state_cov = np.diag(constrained[self._params_state_cov]) + elif self.error_cov_type == 'unstructured': + state_cov_lower = np.zeros(self.ssm['state_cov'].shape, + dtype=constrained.dtype) + state_cov_lower[self._idx_lower_state_cov] = ( + constrained[self._params_state_cov]) + state_cov = np.dot(state_cov_lower, state_cov_lower.T) + + # Transform the parameters + coefficients = constrained[self._params_ar].reshape( + self.k_endog, self.k_endog * self.k_ar) + unconstrained_matrices, variance = ( + unconstrain_stationary_multivariate(coefficients, state_cov)) + unconstrained[self._params_ar] = unconstrained_matrices.ravel() + else: + unconstrained[self._params_ar] = constrained[self._params_ar] + + # 3. MA terms: optionally were forced to be invertible + if self.k_ma > 0 and self.enforce_invertibility: + # Transform the parameters, using an identity variance matrix + state_cov = np.eye(self.k_endog, dtype=constrained.dtype) + coefficients = constrained[self._params_ma].reshape( + self.k_endog, self.k_endog * self.k_ma) + unconstrained_matrices, variance = ( + unconstrain_stationary_multivariate(coefficients, state_cov)) + unconstrained[self._params_ma] = unconstrained_matrices.ravel() + else: + unconstrained[self._params_ma] = constrained[self._params_ma] + + # 4. Regression terms: nothing to do + unconstrained[self._params_regression] = ( + constrained[self._params_regression]) + + # 5. State covariance terms + # If we have variances, then these were forced to be positive + if self.error_cov_type == 'diagonal': + unconstrained[self._params_state_cov] = ( + constrained[self._params_state_cov]**0.5) + # Otherwise, nothing needs to be done + elif self.error_cov_type == 'unstructured': + unconstrained[self._params_state_cov] = ( + constrained[self._params_state_cov]) + + # 5. Measurement error variance terms + if self.measurement_error: + # These were forced to be positive + unconstrained[self._params_obs_cov] = ( + constrained[self._params_obs_cov]**0.5) + + return unconstrained + + def update(self, params, **kwargs): + params = super(VARMAX, self).update(params, **kwargs) + + # 1. State intercept + # - Exog + if self.mle_regression: + exog_params = params[self._params_regression].reshape( + self.k_endog, self.k_exog).T + intercept = np.dot(self.exog[1:], exog_params) + self.ssm[self._idx_state_intercept] = intercept.T + + # - Trend + if self.k_trend > 0: + # If we didn't set the intercept above, zero it out so we can + # just += later + if not self.mle_regression: + zero = np.array(0, dtype=params.dtype) + self.ssm[self._idx_state_intercept] = zero + + trend_params = params[self._params_trend].reshape( + self.k_endog, self.k_trend).T + if self._trend_is_const: + intercept = trend_params + else: + intercept = np.dot(self._trend_data[1:], trend_params) + self.ssm[self._idx_state_intercept] += intercept.T + + # Need to set the last state intercept to np.nan (with appropriate + # dtype) + if self.mle_regression: + nan = np.array(np.nan, dtype=params.dtype) + self.ssm['state_intercept', :self.k_endog, -1] = nan + + # 2. Transition + ar = params[self._params_ar].reshape( + self.k_endog, self.k_endog * self.k_ar) + ma = params[self._params_ma].reshape( + self.k_endog, self.k_endog * self.k_ma) + self.ssm[self._idx_transition] = np.c_[ar, ma] + + # 3. State covariance + if self.error_cov_type == 'diagonal': + self.ssm[self._idx_state_cov] = ( + params[self._params_state_cov] + ) + elif self.error_cov_type == 'unstructured': + state_cov_lower = np.zeros(self.ssm['state_cov'].shape, + dtype=params.dtype) + state_cov_lower[self._idx_lower_state_cov] = ( + params[self._params_state_cov]) + self.ssm['state_cov'] = np.dot(state_cov_lower, state_cov_lower.T) + + # 4. Observation covariance + if self.measurement_error: + self.ssm[self._idx_obs_cov] = params[self._params_obs_cov] + + +class VARMAXResults(MLEResults): + """ + Class to hold results from fitting an VARMAX model. + + Parameters + ---------- + model : VARMAX instance + The fitted model instance + + Attributes + ---------- + specification : dictionary + Dictionary including all attributes from the VARMAX model instance. + coefficient_matrices_var : array + Array containing autoregressive lag polynomial coefficient matrices, + ordered from lowest degree to highest. + coefficient_matrices_vma : array + Array containing moving average lag polynomial coefficients, + ordered from lowest degree to highest. + + See Also + -------- + statsmodels.tsa.statespace.kalman_filter.FilterResults + statsmodels.tsa.statespace.mlemodel.MLEResults + """ + def __init__(self, model, params, filter_results, cov_type='opg', + cov_kwds=None, **kwargs): + super(VARMAXResults, self).__init__(model, params, filter_results, + cov_type, cov_kwds, **kwargs) + + self.specification = Bunch(**{ + # Set additional model parameters + 'error_cov_type': self.model.error_cov_type, + 'measurement_error': self.model.measurement_error, + 'enforce_stationarity': self.model.enforce_stationarity, + 'enforce_invertibility': self.model.enforce_invertibility, + + 'order': self.model.order, + + # Model order + 'k_ar': self.model.k_ar, + 'k_ma': self.model.k_ma, + + # Trend / Regression + 'trend': self.model.trend, + 'k_trend': self.model.k_trend, + 'k_exog': self.model.k_exog, + }) + + # Polynomials / coefficient matrices + self.coefficient_matrices_var = None + self.coefficient_matrices_vma = None + if self.model.k_ar > 0: + ar_params = np.array(self.params[self.model._params_ar]) + k_endog = self.model.k_endog + k_ar = self.model.k_ar + self.coefficient_matrices_var = ( + ar_params.reshape(k_endog * k_ar, k_endog).T + ).reshape(k_endog, k_endog, k_ar).T + if self.model.k_ma > 0: + ma_params = np.array(self.params[self.model._params_ma]) + k_endog = self.model.k_endog + k_ma = self.model.k_ma + self.coefficient_matrices_vma = ( + ma_params.reshape(k_endog * k_ma, k_endog).T + ).reshape(k_endog, k_endog, k_ma).T + + def get_prediction(self, start=None, end=None, dynamic=False, index=None, + exog=None, **kwargs): + """ + In-sample prediction and out-of-sample forecasting + + Parameters + ---------- + start : int, str, or datetime, optional + Zero-indexed observation number at which to start forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. Default is the the zeroth observation. + end : int, str, or datetime, optional + Zero-indexed observation number at which to end forecasting, ie., + the first forecast is start. Can also be a date string to + parse or a datetime type. However, if the dates index does not + have a fixed frequency, end must be an integer index if you + want out of sample prediction. Default is the last observation in + the sample. + exog : array_like, optional + If the model includes exogenous regressors, you must provide + exactly enough out-of-sample values for the exogenous variables if + end is beyond the last observation in the sample. + dynamic : boolean, int, str, or datetime, optional + Integer offset relative to `start` at which to begin dynamic + prediction. Can also be an absolute date string to parse or a + datetime type (these are not interpreted as offsets). + Prior to this observation, true endogenous values will be used for + prediction; starting with this observation and continuing through + the end of prediction, forecasted endogenous values will be used + instead. + kwargs + Additional arguments may required for forecasting beyond the end + of the sample. See `FilterResults.predict` for more details. + + Returns + ------- + forecast : array + Array of out of sample forecasts. + """ + if start is None: + start = self.model._index[0] + + # Handle end (e.g. date) + _start, _end, _out_of_sample, prediction_index = ( + self.model._get_prediction_index(start, end, index, silent=True)) + + # Handle exogenous parameters + last_intercept = None + if _out_of_sample and (self.model.k_exog + self.model.k_trend > 0): + # Create a new faux VARMAX model for the extended dataset + nobs = self.model.data.orig_endog.shape[0] + _out_of_sample + endog = np.zeros((nobs, self.model.k_endog)) + + if self.model.k_exog > 0: + if exog is None: + raise ValueError('Out-of-sample forecasting in a model' + ' with a regression component requires' + ' additional exogenous values via the' + ' `exog` argument.') + exog = np.array(exog) + required_exog_shape = (_out_of_sample, self.model.k_exog) + if not exog.shape == required_exog_shape: + raise ValueError('Provided exogenous values are not of the' + ' appropriate shape. Required %s, got %s.' + % (str(required_exog_shape), + str(exog.shape))) + exog = np.c_[self.model.data.orig_exog.T, exog.T].T + + # TODO replace with init_kwds or specification or similar + model = VARMAX( + endog, + exog=exog, + order=self.model.order, + trend=self.model.trend, + error_cov_type=self.model.error_cov_type, + measurement_error=self.model.measurement_error, + enforce_stationarity=self.model.enforce_stationarity, + enforce_invertibility=self.model.enforce_invertibility + ) + model.update(self.params) + if model['state_intercept'].ndim > 1: + last_intercept = model['state_intercept', :, self.nobs - 1] + else: + last_intercept = model['state_intercept', :, 0] + + # Set the kwargs with the update time-varying state space + # representation matrices + for name in self.filter_results.shapes.keys(): + if name == 'obs': + continue + mat = getattr(model.ssm, name) + if mat.shape[-1] > 1: + if len(mat.shape) == 2: + kwargs[name] = mat[:, -_out_of_sample:] + else: + kwargs[name] = mat[:, :, -_out_of_sample:] + elif self.model.k_exog == 0 and exog is not None: + warn('Exogenous array provided to predict, but additional data not' + ' required. `exog` argument ignored.', ValueWarning) + + # If we had exog, then the last predicted_state has been set to NaN + # since we didn't have the appropriate exog to create it. Then, if + # we are forecasting, we now have new exog that we need to put into + # the existing state_intercept array (and we will take it out, below) + if last_intercept is not None: + self.filter_results.state_intercept[:, -1] = last_intercept + + res = super(VARMAXResults, self).get_prediction( + start=start, end=end, dynamic=dynamic, index=index, exog=exog, + **kwargs) + + if last_intercept is not None: + self.filter_results.state_intercept[:, -1] = np.nan + + return res + + def summary(self, alpha=.05, start=None, separate_params=True): + from statsmodels.iolib.summary import summary_params + + # Create the model name + spec = self.specification + if spec.k_ar > 0 and spec.k_ma > 0: + model_name = 'VARMA' + order = '(%s,%s)' % (spec.k_ar, spec.k_ma) + elif spec.k_ar > 0: + model_name = 'VAR' + order = '(%s)' % (spec.k_ar) + else: + model_name = 'VMA' + order = '(%s)' % (spec.k_ma) + if spec.k_exog > 0: + model_name += 'X' + model_name = [model_name + order] + + if spec.k_trend > 0: + model_name.append('intercept') + + if spec.measurement_error: + model_name.append('measurement error') + + summary = super(VARMAXResults, self).summary( + alpha=alpha, start=start, model_name=model_name, + display_params=not separate_params + ) + + if separate_params: + indices = np.arange(len(self.params)) + + def make_table(self, mask, title, strip_end=True): + res = (self, self.params[mask], self.bse[mask], + self.zvalues[mask], self.pvalues[mask], + self.conf_int(alpha)[mask]) + + param_names = [ + '.'.join(name.split('.')[:-1]) if strip_end else name + for name in + np.array(self.data.param_names)[mask].tolist() + ] + + return summary_params(res, yname=None, xname=param_names, + alpha=alpha, use_t=False, title=title) + + # Add parameter tables for each endogenous variable + k_endog = self.model.k_endog + k_ar = self.model.k_ar + k_ma = self.model.k_ma + k_trend = self.model.k_trend + k_exog = self.model.k_exog + endog_masks = [] + for i in range(k_endog): + masks = [] + offset = 0 + + # 1. Intercept terms + if k_trend > 0: + masks.append(np.arange(i, i + k_endog * k_trend, k_endog)) + offset += k_endog * k_trend + + # 2. AR terms + if k_ar > 0: + start = i * k_endog * k_ar + end = (i + 1) * k_endog * k_ar + masks.append( + offset + np.arange(start, end)) + offset += k_ar * k_endog**2 + + # 3. MA terms + if k_ma > 0: + start = i * k_endog * k_ma + end = (i + 1) * k_endog * k_ma + masks.append( + offset + np.arange(start, end)) + offset += k_ma * k_endog**2 + + # 4. Regression terms + if k_exog > 0: + masks.append( + offset + np.arange(i * k_exog, (i + 1) * k_exog)) + offset += k_endog * k_exog + + # 5. Measurement error variance terms + if self.model.measurement_error: + masks.append( + np.array(self.model.k_params - i - 1, ndmin=1)) + + # Create the table + mask = np.concatenate(masks) + endog_masks.append(mask) + + title = "Results for equation %s" % self.model.endog_names[i] + table = make_table(self, mask, title) + summary.tables.append(table) + + # State covariance terms + state_cov_mask = ( + np.arange(len(self.params))[self.model._params_state_cov]) + table = make_table(self, state_cov_mask, "Error covariance matrix", + strip_end=False) + summary.tables.append(table) + + # Add a table for all other parameters + masks = [] + for m in (endog_masks, [state_cov_mask]): + m = np.array(m).flatten() + if len(m) > 0: + masks.append(m) + masks = np.concatenate(masks) + inverse_mask = np.array(list(set(indices).difference(set(masks)))) + if len(inverse_mask) > 0: + table = make_table(self, inverse_mask, "Other parameters", + strip_end=False) + summary.tables.append(table) + + return summary + summary.__doc__ = MLEResults.summary.__doc__ + + +class VARMAXResultsWrapper(MLEResultsWrapper): + _attrs = {} + _wrap_attrs = wrap.union_dicts(MLEResultsWrapper._wrap_attrs, + _attrs) + _methods = {} + _wrap_methods = wrap.union_dicts(MLEResultsWrapper._wrap_methods, + _methods) +wrap.populate_wrapper(VARMAXResultsWrapper, VARMAXResults) # noqa:E305 diff --git a/statsmodels/tsa/stattools.py b/statsmodels/tsa/stattools.py new file mode 100644 index 0000000..9cffdcd --- /dev/null +++ b/statsmodels/tsa/stattools.py @@ -0,0 +1,1759 @@ +""" +Statistical tools for time series analysis +""" +from __future__ import division +from statsmodels.compat.python import (iteritems, range, lrange, string_types, + lzip, zip, long) +from statsmodels.compat.numpy import lstsq +from statsmodels.compat.scipy import _next_regular + +import numpy as np +import pandas as pd +from numpy.linalg import LinAlgError +from scipy import stats + +from statsmodels.regression.linear_model import OLS, yule_walker +from statsmodels.tools.sm_exceptions import (InterpolationWarning, + MissingDataError, + CollinearityWarning) +from statsmodels.tools.tools import add_constant, Bunch +from statsmodels.tsa._bds import bds +from statsmodels.tsa.adfvalues import mackinnonp, mackinnoncrit +from statsmodels.tsa.arima_model import ARMA +from statsmodels.tsa.tsatools import lagmat, lagmat2ds, add_trend + +__all__ = ['acovf', 'acf', 'pacf', 'pacf_yw', 'pacf_ols', 'ccovf', 'ccf', + 'periodogram', 'q_stat', 'coint', 'arma_order_select_ic', + 'adfuller', 'kpss', 'bds', 'pacf_burg', 'innovations_algo', + 'innovations_filter', 'levinson_durbin_pacf', 'levinson_durbin'] + +SQRTEPS = np.sqrt(np.finfo(np.double).eps) + + +#NOTE: now in two places to avoid circular import +#TODO: I like the bunch pattern for this too. +class ResultsStore(object): + def __str__(self): + return self._str # pylint: disable=E1101 + + +def _autolag(mod, endog, exog, startlag, maxlag, method, modargs=(), + fitargs=(), regresults=False): + """ + Returns the results for the lag length that maximizes the info criterion. + + Parameters + ---------- + mod : Model class + Model estimator class + endog : array-like + nobs array containing endogenous variable + exog : array-like + nobs by (startlag + maxlag) array containing lags and possibly other + variables + startlag : int + The first zero-indexed column to hold a lag. See Notes. + maxlag : int + The highest lag order for lag length selection. + method : {'aic', 'bic', 't-stat'} + aic - Akaike Information Criterion + bic - Bayes Information Criterion + t-stat - Based on last lag + modargs : tuple, optional + args to pass to model. See notes. + fitargs : tuple, optional + args to pass to fit. See notes. + regresults : bool, optional + Flag indicating to return optional return results + + Returns + ------- + icbest : float + Best information criteria. + bestlag : int + The lag length that maximizes the information criterion. + results : dict, optional + Dictionary containing all estimation results + + Notes + ----- + Does estimation like mod(endog, exog[:,:i], *modargs).fit(*fitargs) + where i goes from lagstart to lagstart+maxlag+1. Therefore, lags are + assumed to be in contiguous columns from low to high lag length with + the highest lag in the last column. + """ + #TODO: can tcol be replaced by maxlag + 2? + #TODO: This could be changed to laggedRHS and exog keyword arguments if + # this will be more general. + + results = {} + method = method.lower() + for lag in range(startlag, startlag + maxlag + 1): + mod_instance = mod(endog, exog[:, :lag], *modargs) + results[lag] = mod_instance.fit() + + if method == "aic": + icbest, bestlag = min((v.aic, k) for k, v in iteritems(results)) + elif method == "bic": + icbest, bestlag = min((v.bic, k) for k, v in iteritems(results)) + elif method == "t-stat": + #stop = stats.norm.ppf(.95) + stop = 1.6448536269514722 + for lag in range(startlag + maxlag, startlag - 1, -1): + icbest = np.abs(results[lag].tvalues[-1]) + if np.abs(icbest) >= stop: + bestlag = lag + icbest = icbest + break + else: + raise ValueError("Information Criterion %s not understood.") % method + + if not regresults: + return icbest, bestlag + else: + return icbest, bestlag, results + + +#this needs to be converted to a class like HetGoldfeldQuandt, +# 3 different returns are a mess +# See: +#Ng and Perron(2001), Lag length selection and the construction of unit root +#tests with good size and power, Econometrica, Vol 69 (6) pp 1519-1554 +#TODO: include drift keyword, only valid with regression == "c" +# just changes the distribution of the test statistic to a t distribution +#TODO: autolag is untested +def adfuller(x, maxlag=None, regression="c", autolag='AIC', + store=False, regresults=False): + """ + Augmented Dickey-Fuller unit root test + + The Augmented Dickey-Fuller test can be used to test for a unit root in a + univariate process in the presence of serial correlation. + + Parameters + ---------- + x : array_like, 1d + data series + maxlag : int + Maximum lag which is included in test, default 12*(nobs/100)^{1/4} + regression : {'c','ct','ctt','nc'} + Constant and trend order to include in regression + + * 'c' : constant only (default) + * 'ct' : constant and trend + * 'ctt' : constant, and linear and quadratic trend + * 'nc' : no constant, no trend + autolag : {'AIC', 'BIC', 't-stat', None} + * if None, then maxlag lags are used + * if 'AIC' (default) or 'BIC', then the number of lags is chosen + to minimize the corresponding information criterion + * 't-stat' based choice of maxlag. Starts with maxlag and drops a + lag until the t-statistic on the last lag length is significant + using a 5%-sized test + store : bool + If True, then a result instance is returned additionally to + the adf statistic. Default is False + regresults : bool, optional + If True, the full regression results are returned. Default is False + + Returns + ------- + adf : float + Test statistic + pvalue : float + MacKinnon's approximate p-value based on MacKinnon (1994, 2010) + usedlag : int + Number of lags used + nobs : int + Number of observations used for the ADF regression and calculation of + the critical values + critical values : dict + Critical values for the test statistic at the 1 %, 5 %, and 10 % + levels. Based on MacKinnon (2010) + icbest : float + The maximized information criterion if autolag is not None. + resstore : ResultStore, optional + A dummy class with results attached as attributes + + Notes + ----- + The null hypothesis of the Augmented Dickey-Fuller is that there is a unit + root, with the alternative that there is no unit root. If the pvalue is + above a critical size, then we cannot reject that there is a unit root. + + The p-values are obtained through regression surface approximation from + MacKinnon 1994, but using the updated 2010 tables. If the p-value is close + to significant, then the critical values should be used to judge whether + to reject the null. + + The autolag option and maxlag for it are described in Greene. + + Examples + -------- + See example notebook + + References + ---------- + .. [*] W. Green. "Econometric Analysis," 5th ed., Pearson, 2003. + + .. [*] Hamilton, J.D. "Time Series Analysis". Princeton, 1994. + + .. [*] MacKinnon, J.G. 1994. "Approximate asymptotic distribution functions for + unit-root and cointegration tests. `Journal of Business and Economic + Statistics` 12, 167-76. + + .. [*] MacKinnon, J.G. 2010. "Critical Values for Cointegration Tests." Queen's + University, Dept of Economics, Working Papers. Available at + http://ideas.repec.org/p/qed/wpaper/1227.html + """ + + if regresults: + store = True + + trenddict = {None: 'nc', 0: 'c', 1: 'ct', 2: 'ctt'} + if regression is None or isinstance(regression, (int, long)): + regression = trenddict[regression] + regression = regression.lower() + if regression not in ['c', 'nc', 'ct', 'ctt']: + raise ValueError("regression option %s not understood") % regression + x = np.asarray(x) + nobs = x.shape[0] + + ntrend = len(regression) if regression != 'nc' else 0 + if maxlag is None: + # from Greene referencing Schwert 1989 + maxlag = int(np.ceil(12. * np.power(nobs / 100., 1 / 4.))) + # -1 for the diff + maxlag = min(nobs // 2 - ntrend - 1, maxlag) + if maxlag < 0: + raise ValueError('sample size is too short to use selected ' + 'regression component') + elif maxlag > nobs // 2 - ntrend - 1: + raise ValueError('maxlag must be less than (nobs/2 - 1 - ntrend) ' + 'where n trend is the number of included ' + 'deterministic regressors') + xdiff = np.diff(x) + xdall = lagmat(xdiff[:, None], maxlag, trim='both', original='in') + nobs = xdall.shape[0] + + xdall[:, 0] = x[-nobs - 1:-1] # replace 0 xdiff with level of x + xdshort = xdiff[-nobs:] + + if store: + resstore = ResultsStore() + if autolag: + if regression != 'nc': + fullRHS = add_trend(xdall, regression, prepend=True) + else: + fullRHS = xdall + startlag = fullRHS.shape[1] - xdall.shape[1] + 1 + # 1 for level + # search for lag length with smallest information criteria + # Note: use the same number of observations to have comparable IC + # aic and bic: smaller is better + + if not regresults: + icbest, bestlag = _autolag(OLS, xdshort, fullRHS, startlag, + maxlag, autolag) + else: + icbest, bestlag, alres = _autolag(OLS, xdshort, fullRHS, startlag, + maxlag, autolag, + regresults=regresults) + resstore.autolag_results = alres + + bestlag -= startlag # convert to lag not column index + + # rerun ols with best autolag + xdall = lagmat(xdiff[:, None], bestlag, trim='both', original='in') + nobs = xdall.shape[0] + xdall[:, 0] = x[-nobs - 1:-1] # replace 0 xdiff with level of x + xdshort = xdiff[-nobs:] + usedlag = bestlag + else: + usedlag = maxlag + icbest = None + if regression != 'nc': + resols = OLS(xdshort, add_trend(xdall[:, :usedlag + 1], + regression)).fit() + else: + resols = OLS(xdshort, xdall[:, :usedlag + 1]).fit() + + adfstat = resols.tvalues[0] +# adfstat = (resols.params[0]-1.0)/resols.bse[0] + # the "asymptotically correct" z statistic is obtained as + # nobs/(1-np.sum(resols.params[1:-(trendorder+1)])) (resols.params[0] - 1) + # I think this is the statistic that is used for series that are integrated + # for orders higher than I(1), ie., not ADF but cointegration tests. + + # Get approx p-value and critical values + pvalue = mackinnonp(adfstat, regression=regression, N=1) + critvalues = mackinnoncrit(N=1, regression=regression, nobs=nobs) + critvalues = {"1%" : critvalues[0], "5%" : critvalues[1], + "10%" : critvalues[2]} + if store: + resstore.resols = resols + resstore.maxlag = maxlag + resstore.usedlag = usedlag + resstore.adfstat = adfstat + resstore.critvalues = critvalues + resstore.nobs = nobs + resstore.H0 = ("The coefficient on the lagged level equals 1 - " + "unit root") + resstore.HA = "The coefficient on the lagged level < 1 - stationary" + resstore.icbest = icbest + resstore._str = 'Augmented Dickey-Fuller Test Results' + return adfstat, pvalue, critvalues, resstore + else: + if not autolag: + return adfstat, pvalue, usedlag, nobs, critvalues + else: + return adfstat, pvalue, usedlag, nobs, critvalues, icbest + + +def acovf(x, unbiased=False, demean=True, fft=None, missing='none', nlag=None): + """ + Autocovariance for 1D + + Parameters + ---------- + x : array + Time series data. Must be 1d. + unbiased : bool + If True, then denominators is n-k, otherwise n + demean : bool + If True, then subtract the mean x from each element of x + fft : bool + If True, use FFT convolution. This method should be preferred + for long time series. + missing : str + A string in ['none', 'raise', 'conservative', 'drop'] specifying how + the NaNs are to be treated. + nlag : {int, None} + Limit the number of autocovariances returned. Size of returned + array is nlag + 1. Setting nlag when fft is False uses a simple, + direct estimator of the autocovariances that only computes the first + nlag + 1 values. This can be much faster when the time series is long + and only a small number of autocovariances are needed. + + Returns + ------- + acovf : array + autocovariance function + + References + ----------- + .. [*] Parzen, E., 1963. On spectral analysis with missing observations + and amplitude modulation. Sankhya: The Indian Journal of + Statistics, Series A, pp.383-392. + """ + if fft is None: + import warnings + msg = 'fft=True will become the default in a future version of ' \ + 'statsmodels. To suppress this warning, explicitly set ' \ + 'fft=False.' + warnings.warn(msg, FutureWarning) + fft = False + + x = np.squeeze(np.asarray(x)) + if x.ndim > 1: + raise ValueError("x must be 1d. Got %d dims." % x.ndim) + + missing = missing.lower() + if missing not in ['none', 'raise', 'conservative', 'drop']: + raise ValueError("missing option %s not understood" % missing) + if missing == 'none': + deal_with_masked = False + else: + deal_with_masked = has_missing(x) + if deal_with_masked: + if missing == 'raise': + raise MissingDataError("NaNs were encountered in the data") + notmask_bool = ~np.isnan(x) # bool + if missing == 'conservative': + # Must copy for thread safety + x = x.copy() + x[~notmask_bool] = 0 + else: # 'drop' + x = x[notmask_bool] # copies non-missing + notmask_int = notmask_bool.astype(int) # int + + if demean and deal_with_masked: + # whether 'drop' or 'conservative': + xo = x - x.sum() / notmask_int.sum() + if missing == 'conservative': + xo[~notmask_bool] = 0 + elif demean: + xo = x - x.mean() + else: + xo = x + + n = len(x) + lag_len = nlag + if nlag is None: + lag_len = n - 1 + elif nlag > n - 1: + raise ValueError('nlag must be smaller than nobs - 1') + + if not fft and nlag is not None: + acov = np.empty(lag_len + 1) + acov[0] = xo.dot(xo) + for i in range(lag_len): + acov[i + 1] = xo[i + 1:].dot(xo[:-(i + 1)]) + if not deal_with_masked or missing == 'drop': + if unbiased: + acov /= (n - np.arange(lag_len + 1)) + else: + acov /= n + else: + if unbiased: + divisor = np.empty(lag_len + 1, dtype=np.int64) + divisor[0] = notmask_int.sum() + for i in range(lag_len): + divisor[i + 1] = notmask_int[i + 1:].dot(notmask_int[:-(i + 1)]) + divisor[divisor == 0] = 1 + acov /= divisor + else: # biased, missing data but npt 'drop' + acov /= notmask_int.sum() + return acov + + if unbiased and deal_with_masked and missing == 'conservative': + d = np.correlate(notmask_int, notmask_int, 'full') + d[d == 0] = 1 + elif unbiased: + xi = np.arange(1, n + 1) + d = np.hstack((xi, xi[:-1][::-1])) + elif deal_with_masked: # biased and NaNs given and ('drop' or 'conservative') + d = notmask_int.sum() * np.ones(2 * n - 1) + else: # biased and no NaNs or missing=='none' + d = n * np.ones(2 * n - 1) + + if fft: + nobs = len(xo) + n = _next_regular(2 * nobs + 1) + Frf = np.fft.fft(xo, n=n) + acov = np.fft.ifft(Frf * np.conjugate(Frf))[:nobs] / d[nobs - 1:] + acov = acov.real + else: + acov = np.correlate(xo, xo, 'full')[n - 1:] / d[n - 1:] + + if nlag is not None: + # Copy to allow gc of full array rather than view + return acov[:lag_len + 1].copy() + return acov + + +def q_stat(x, nobs, type="ljungbox"): + """ + Return's Ljung-Box Q Statistic + + x : array-like + Array of autocorrelation coefficients. Can be obtained from acf. + nobs : int + Number of observations in the entire sample (ie., not just the length + of the autocorrelation function results. + + Returns + ------- + q-stat : array + Ljung-Box Q-statistic for autocorrelation parameters + p-value : array + P-value of the Q statistic + + Notes + ----- + Written to be used with acf. + """ + x = np.asarray(x) + if type == "ljungbox": + ret = (nobs * (nobs + 2) * + np.cumsum((1. / (nobs - np.arange(1, len(x) + 1))) * x**2)) + chi2 = stats.chi2.sf(ret, np.arange(1, len(x) + 1)) + return ret, chi2 + + +#NOTE: Changed unbiased to False +#see for example +# http://www.itl.nist.gov/div898/handbook/eda/section3/autocopl.htm +def acf(x, unbiased=False, nlags=40, qstat=False, fft=None, alpha=None, + missing='none'): + """ + Autocorrelation function for 1d arrays. + + Parameters + ---------- + x : array + Time series data + unbiased : bool + If True, then denominators for autocovariance are n-k, otherwise n + nlags: int, optional + Number of lags to return autocorrelation for. + qstat : bool, optional + If True, returns the Ljung-Box q statistic for each autocorrelation + coefficient. See q_stat for more information. + fft : bool, optional + If True, computes the ACF via FFT. + alpha : scalar, optional + If a number is given, the confidence intervals for the given level are + returned. For instance if alpha=.05, 95 % confidence intervals are + returned where the standard deviation is computed according to + Bartlett\'s formula. + missing : str, optional + A string in ['none', 'raise', 'conservative', 'drop'] specifying how the NaNs + are to be treated. + + Returns + ------- + acf : array + autocorrelation function + confint : array, optional + Confidence intervals for the ACF. Returned if alpha is not None. + qstat : array, optional + The Ljung-Box Q-Statistic. Returned if q_stat is True. + pvalues : array, optional + The p-values associated with the Q-statistics. Returned if q_stat is + True. + + Notes + ----- + The acf at lag 0 (ie., 1) is returned. + + For very long time series it is recommended to use fft convolution instead. + When fft is False uses a simple, direct estimator of the autocovariances + that only computes the first nlag + 1 values. This can be much faster when + the time series is long and only a small number of autocovariances are + needed. + + If unbiased is true, the denominator for the autocovariance is adjusted + but the autocorrelation is not an unbiased estimator. + + References + ---------- + .. [*] Parzen, E., 1963. On spectral analysis with missing observations + and amplitude modulation. Sankhya: The Indian Journal of + Statistics, Series A, pp.383-392. + + """ + if fft is None: + import warnings + msg = 'fft=True will become the default in a future version of ' \ + 'statsmodels. To suppress this warning, explicitly set ' \ + 'fft=False.' + warnings.warn(msg, FutureWarning) + fft = False + + nobs = len(x) # should this shrink for missing='drop' and NaNs in x? + avf = acovf(x, unbiased=unbiased, demean=True, fft=fft, missing=missing) + acf = avf[:nlags + 1] / avf[0] + if not (qstat or alpha): + return acf + if alpha is not None: + varacf = np.ones(nlags + 1) / nobs + varacf[0] = 0 + varacf[1] = 1. / nobs + varacf[2:] *= 1 + 2 * np.cumsum(acf[1:-1]**2) + interval = stats.norm.ppf(1 - alpha / 2.) * np.sqrt(varacf) + confint = np.array(lzip(acf - interval, acf + interval)) + if not qstat: + return acf, confint + if qstat: + qstat, pvalue = q_stat(acf[1:], nobs=nobs) # drop lag 0 + if alpha is not None: + return acf, confint, qstat, pvalue + else: + return acf, qstat, pvalue + + +def pacf_yw(x, nlags=40, method='unbiased'): + '''Partial autocorrelation estimated with non-recursive yule_walker + + Parameters + ---------- + x : 1d array + observations of time series for which pacf is calculated + nlags : int + largest lag for which pacf is returned + method : 'unbiased' (default) or 'mle' + method for the autocovariance calculations in yule walker + + Returns + ------- + pacf : 1d array + partial autocorrelations, maxlag+1 elements + + See Also + -------- + statsmodels.tsa.stattools.pacf + statsmodels.tsa.stattools.pacf_burg + statsmodels.tsa.stattools.pacf_ols + + Notes + ----- + This solves yule_walker for each desired lag and contains + currently duplicate calculations. + ''' + pacf = [1.] + for k in range(1, nlags + 1): + pacf.append(yule_walker(x, k, method=method)[0][-1]) + return np.array(pacf) + + +def pacf_burg(x, nlags=None, demean=True): + """ + Burg's partial autocorrelation estimator + + Parameters + ---------- + x : array-like + Observations of time series for which pacf is calculated + nlags : int, optional + Number of lags to compute the partial autocorrelations. If omitted, + uses the smaller of 10(log10(nobs)) or nobs - 1 + demean : bool, optional + + Returns + ------- + pacf : ndarray + Partial autocorrelations for lags 0, 1, ..., nlag + sigma2 : ndarray + Residual variance estimates where the value in position m is the + residual variance in an AR model that includes m lags + + See Also + -------- + statsmodels.tsa.stattools.pacf + statsmodels.tsa.stattools.pacf_yw + statsmodels.tsa.stattools.pacf_ols + + References + ---------- + .. [*] Brockwell, P.J. and Davis, R.A., 2016. Introduction to time series + and forecasting. Springer. + """ + x = np.squeeze(np.asarray(x)) + if x.ndim != 1: + raise ValueError('x must be 1-d or squeezable to 1-d.') + if demean: + x = x - x.mean() + nobs = x.shape[0] + p = nlags if nlags is not None else min(int(10 * np.log10(nobs)), nobs - 1) + if p > nobs - 1: + raise ValueError('nlags must be smaller than nobs - 1') + d = np.zeros(p + 1) + d[0] = 2 * x.dot(x) + pacf = np.zeros(p + 1) + u = x[::-1].copy() + v = x[::-1].copy() + d[1] = u[:-1].dot(u[:-1]) + v[1:].dot(v[1:]) + pacf[1] = 2 / d[1] * v[1:].dot(u[:-1]) + last_u = np.empty_like(u) + last_v = np.empty_like(v) + for i in range(1, p): + last_u[:] = u + last_v[:] = v + u[1:] = last_u[:-1] - pacf[i] * last_v[1:] + v[1:] = last_v[1:] - pacf[i] * last_u[:-1] + d[i + 1] = (1 - pacf[i] ** 2) * d[i] - v[i] ** 2 - u[-1] ** 2 + pacf[i + 1] = 2 / d[i + 1] * v[i + 1:].dot(u[i:-1]) + sigma2 = (1 - pacf ** 2) * d / (2. * (nobs - np.arange(0, p + 1))) + pacf[0] = 1 # Insert the 0 lag partial autocorrel + + return pacf, sigma2 + + +def pacf_ols(x, nlags=40, efficient=True, unbiased=False): + """ + Calculate partial autocorrelations via OLS + + Parameters + ---------- + x : 1d array + observations of time series for which pacf is calculated + nlags : int + Number of lags for which pacf is returned. Lag 0 is not returned. + efficient : bool, optional + If true, uses the maximum number of available observations to compute + each partial autocorrelation. If not, uses the same number of + observations to compute all pacf values. + unbiased : bool, optional + Adjust each partial autocorrelation by n / (n - lag) + + Returns + ------- + pacf : 1d array + partial autocorrelations, (maxlag,) array corresponding to lags + 0, 1, ..., maxlag + + Notes + ----- + This solves a separate OLS estimation for each desired lag using method in + [1]_. Setting efficient to True has two effects. First, it uses + `nobs - lag` observations of estimate each pacf. Second, it re-estimates + the mean in each regression. If efficient is False, then the data are first + demeaned, and then `nobs - maxlag` observations are used to estimate each + partial autocorrelation. + + The inefficient estimator appears to have better finite sample properties. + This option should only be used in time series that are covariance + stationary. + + OLS estimation of the pacf does not guarantee that all pacf values are + between -1 and 1. + + See Also + -------- + statsmodels.tsa.stattools.pacf + statsmodels.tsa.stattools.pacf_yw + statsmodels.tsa.stattools.pacf_burg + + References + ---------- + .. [1] Box, G. E., Jenkins, G. M., Reinsel, G. C., & Ljung, G. M. (2015). + Time series analysis: forecasting and control. John Wiley & Sons, p. 66 + """ + pacf = np.empty(nlags + 1) + pacf[0] = 1.0 + x = np.squeeze(np.asarray(x)) + if x.ndim != 1: + raise ValueError('x must be squeezable to a 1-d array') + if efficient: + xlags, x0 = lagmat(x, nlags, original='sep') + xlags = add_constant(xlags) + for k in range(1, nlags + 1): + params = lstsq(xlags[k:, :k + 1], x0[k:], rcond=None)[0] + pacf[k] = params[-1] + else: + x = x - np.mean(x) + # Create a single set of lags for multivariate OLS + xlags, x0 = lagmat(x, nlags, original='sep', trim='both') + for k in range(1, nlags + 1): + params = lstsq(xlags[:, :k], x0, rcond=None)[0] + # Last coefficient corresponds to PACF value (see [1]) + pacf[k] = params[-1] + + if unbiased: + n = len(x) + pacf *= n / (n - np.arange(nlags + 1)) + + return pacf + + +def pacf(x, nlags=40, method='ywunbiased', alpha=None): + """ + Partial autocorrelation estimated + + Parameters + ---------- + x : 1d array + observations of time series for which pacf is calculated + nlags : int + largest lag for which the pacf is returned + method : str + specifies which method for the calculations to use: + + - 'yw' or 'ywunbiased' : Yule-Walker with bias correction in + denominator for acovf. Default. + - 'ywm' or 'ywmle' : Yule-Walker without bias correction + - 'ols' : regression of time series on lags of it and on constant + - 'ols-inefficient' : regression of time series on lags using a single + common sample to estimate all pacf coefficients + - 'ols-unbiased' : regression of time series on lags with a bias + adjustment + - 'ld' or 'ldunbiased' : Levinson-Durbin recursion with bias correction + - 'ldb' or 'ldbiased' : Levinson-Durbin recursion without bias + correction + + alpha : float, optional + If a number is given, the confidence intervals for the given level are + returned. For instance if alpha=.05, 95 % confidence intervals are + returned where the standard deviation is computed according to + 1/sqrt(len(x)) + + Returns + ------- + pacf : 1d array + partial autocorrelations, nlags elements, including lag zero + confint : array, optional + Confidence intervals for the PACF. Returned if confint is not None. + + See Also + -------- + statsmodels.tsa.stattools.acf + statsmodels.tsa.stattools.pacf_yw + statsmodels.tsa.stattools.pacf_burg + statsmodels.tsa.stattools.pacf_ols + + Notes + ----- + Based on simulation evidence across a range of low-order ARMA models, + the best methods based on root MSE are Yule-Walker (MLW), Levinson-Durbin + (MLE) and Burg, respectively. The estimators with the lowest bias included + included these three in addition to OLS and OLS-unbiased. + + Yule-Walker (unbiased) and Levinson-Durbin (unbiased) performed + consistently worse than the other options. + """ + + if method in ('ols', 'ols-inefficient', 'ols-unbiased'): + efficient = 'inefficient' not in method + unbiased = 'unbiased' in method + ret = pacf_ols(x, nlags=nlags, efficient=efficient, unbiased=unbiased) + elif method in ('yw', 'ywu', 'ywunbiased', 'yw_unbiased'): + ret = pacf_yw(x, nlags=nlags, method='unbiased') + elif method in ('ywm', 'ywmle', 'yw_mle'): + ret = pacf_yw(x, nlags=nlags, method='mle') + elif method in ('ld', 'ldu', 'ldunbiased', 'ld_unbiased'): + acv = acovf(x, unbiased=True, fft=False) + ld_ = levinson_durbin(acv, nlags=nlags, isacov=True) + ret = ld_[2] + # inconsistent naming with ywmle + elif method in ('ldb', 'ldbiased', 'ld_biased'): + acv = acovf(x, unbiased=False, fft=False) + ld_ = levinson_durbin(acv, nlags=nlags, isacov=True) + ret = ld_[2] + else: + raise ValueError('method not available') + if alpha is not None: + varacf = 1. / len(x) # for all lags >=1 + interval = stats.norm.ppf(1. - alpha / 2.) * np.sqrt(varacf) + confint = np.array(lzip(ret - interval, ret + interval)) + confint[0] = ret[0] # fix confidence interval for lag 0 to varpacf=0 + return ret, confint + else: + return ret + + +def ccovf(x, y, unbiased=True, demean=True): + ''' crosscovariance for 1D + + Parameters + ---------- + x, y : arrays + time series data + unbiased : boolean + if True, then denominators is n-k, otherwise n + + Returns + ------- + ccovf : array + autocovariance function + + Notes + ----- + This uses np.correlate which does full convolution. For very long time + series it is recommended to use fft convolution instead. + ''' + n = len(x) + if demean: + xo = x - x.mean() + yo = y - y.mean() + else: + xo = x + yo = y + if unbiased: + xi = np.ones(n) + d = np.correlate(xi, xi, 'full') + else: + d = n + return (np.correlate(xo, yo, 'full') / d)[n - 1:] + + +def ccf(x, y, unbiased=True): + '''cross-correlation function for 1d + + Parameters + ---------- + x, y : arrays + time series data + unbiased : boolean + if True, then denominators for autocovariance is n-k, otherwise n + + Returns + ------- + ccf : array + cross-correlation function of x and y + + Notes + ----- + This is based np.correlate which does full convolution. For very long time + series it is recommended to use fft convolution instead. + + If unbiased is true, the denominator for the autocovariance is adjusted + but the autocorrelation is not an unbiased estimtor. + + ''' + cvf = ccovf(x, y, unbiased=unbiased, demean=True) + return cvf / (np.std(x) * np.std(y)) + + +def periodogram(X): + """ + Returns the periodogram for the natural frequency of X + + Parameters + ---------- + X : array-like + Array for which the periodogram is desired. + + Returns + ------- + pgram : array + 1./len(X) * np.abs(np.fft.fft(X))**2 + + + References + ---------- + .. [*] Brockwell, P.J. and Davis, R.A., 2016. Introduction to time series + and forecasting. Springer. + """ + X = np.asarray(X) + # if kernel == "bartlett": + # w = 1 - np.arange(M+1.)/M #JP removed integer division + + pergr = 1. / len(X) * np.abs(np.fft.fft(X))**2 + pergr[0] = 0. # what are the implications of this? + return pergr + + +# moved from sandbox.tsa.examples.try_ld_nitime, via nitime +# TODO: check what to return, for testing and trying out returns everything +def levinson_durbin(s, nlags=10, isacov=False): + """ + Levinson-Durbin recursion for autoregressive processes + + Parameters + ---------- + s : array_like + If isacov is False, then this is the time series. If iasacov is true + then this is interpreted as autocovariance starting with lag 0 + nlags : integer + largest lag to include in recursion or order of the autoregressive + process + isacov : boolean + flag to indicate whether the first argument, s, contains the + autocovariances or the data series. + + Returns + ------- + sigma_v : float + estimate of the error variance ? + arcoefs : ndarray + estimate of the autoregressive coefficients for a model including nlags + pacf : ndarray + partial autocorrelation function + sigma : ndarray + entire sigma array from intermediate result, last value is sigma_v + phi : ndarray + entire phi array from intermediate result, last column contains + autoregressive coefficients for AR(nlags) + + Notes + ----- + This function returns currently all results, but maybe we drop sigma and + phi from the returns. + + If this function is called with the time series (isacov=False), then the + sample autocovariance function is calculated with the default options + (biased, no fft). + """ + s = np.asarray(s) + order = nlags + + if isacov: + sxx_m = s + else: + sxx_m = acovf(s, fft=False)[:order + 1] # not tested + + phi = np.zeros((order + 1, order + 1), 'd') + sig = np.zeros(order + 1) + # initial points for the recursion + phi[1, 1] = sxx_m[1] / sxx_m[0] + sig[1] = sxx_m[0] - phi[1, 1] * sxx_m[1] + for k in range(2, order + 1): + phi[k, k] = (sxx_m[k] - np.dot(phi[1:k, k-1], + sxx_m[1:k][::-1])) / sig[k-1] + for j in range(1, k): + phi[j, k] = phi[j, k-1] - phi[k, k] * phi[k-j, k-1] + sig[k] = sig[k-1] * (1 - phi[k, k]**2) + + sigma_v = sig[-1] + arcoefs = phi[1:, -1] + pacf_ = np.diag(phi).copy() + pacf_[0] = 1. + return sigma_v, arcoefs, pacf_, sig, phi # return everything + + +def levinson_durbin_pacf(pacf, nlags=None): + """ + Levinson-Durbin algorithm that returns the acf and ar coefficients + + Parameters + ---------- + pacf : array-like + Partial autocorrelation array for lags 0, 1, ... p + nlags : int, optional + Number of lags in the AR model. If omitted, returns coefficients from + an AR(p) and the first p autocorrelations + + Returns + ------- + arcoefs : ndarray + AR coefficients computed from the partial autocorrelations + acf : ndarray + acf computed from the partial autocorrelations. Array returned contains + the autocorelations corresponding to lags 0, 1, ..., p + + References + ---------- + .. [*] Brockwell, P.J. and Davis, R.A., 2016. Introduction to time series + and forecasting. Springer. + """ + pacf = np.squeeze(np.asarray(pacf)) + if pacf.ndim != 1: + raise ValueError('pacf must be 1-d or squeezable to 1-d.') + if pacf[0] != 1: + raise ValueError('The first entry of the pacf corresponds to lags 0 ' + 'and so must be 1.') + pacf = pacf[1:] + n = pacf.shape[0] + if nlags is not None: + if nlags > n: + raise ValueError('Must provide at least as many values from the ' + 'pacf as the number of lags.') + pacf = pacf[:nlags] + n = pacf.shape[0] + + acf = np.zeros(n + 1) + acf[1] = pacf[0] + nu = np.cumprod(1 - pacf ** 2) + arcoefs = pacf.copy() + for i in range(1, n): + prev = arcoefs[:-(n - i)].copy() + arcoefs[:-(n - i)] = prev - arcoefs[i] * prev[::-1] + acf[i + 1] = arcoefs[i] * nu[i-1] + prev.dot(acf[1:-(n - i)][::-1]) + acf[0] = 1 + return arcoefs, acf + + +def innovations_algo(acov, nobs=None, rtol=None): + """ + Innovations algorithm to convert autocovariances to MA parameters + + Parameters + ---------- + acov : array-like + Array containing autocovariances including lag 0 + nobs : int, optional + Number of periods to run the algorithm. If not provided, nobs is + equal to the length of acovf + rtol : float, optional + Tolerance used to check for convergence. Default value is 0 which will + never prematurely end the algorithm. Checks after 10 iterations and + stops if sigma2[i] - sigma2[i - 10] < rtol * sigma2[0]. When the + stopping condition is met, the remaining values in theta and sigma2 + are forward filled using the value of the final iteration. + + Returns + ------- + theta : ndarray + Innovation coefficients of MA representation. Array is (nobs, q) where + q is the largest index of a non-zero autocovariance. theta + corresponds to the first q columns of the coefficient matrix in the + common description of the innovation algorithm. + sigma2 : ndarray + The prediction error variance (nobs,). + + Examples + -------- + >>> import statsmodels.api as sm + >>> data = sm.datasets.macrodata.load_pandas() + >>> rgdpg = data.data['realgdp'].pct_change().dropna() + >>> acov = sm.tsa.acovf(rgdpg) + >>> nobs = activity.shape[0] + >>> theta, sigma2 = innovations_algo(acov[:4], nobs=nobs) + + See Also + -------- + innovations_filter + + References + ---------- + .. [*] Brockwell, P.J. and Davis, R.A., 2016. Introduction to time series + and forecasting. Springer. + """ + acov = np.squeeze(np.asarray(acov)) + if acov.ndim != 1: + raise ValueError('acov must be 1-d or squeezable to 1-d.') + rtol = 0.0 if rtol is None else rtol + if not isinstance(rtol, float): + raise ValueError('rtol must be a non-negative float or None.') + if nobs is not None and (nobs != int(nobs) or nobs < 1): + raise ValueError('nobs must be a positive integer') + n = acov.shape[0] if nobs is None else int(nobs) + max_lag = int(np.max(np.argwhere(acov != 0))) + + v = np.zeros(n + 1) + v[0] = acov[0] + # Retain only the relevant columns of theta + theta = np.zeros((n + 1, max_lag + 1)) + for i in range(1, n): + for k in range(max(i - max_lag, 0), i): + sub = 0 + for j in range(max(i - max_lag, 0), k): + sub += theta[k, k - j] * theta[i, i - j] * v[j] + theta[i, i - k] = 1. / v[k] * (acov[i - k] - sub) + v[i] = acov[0] + for j in range(max(i - max_lag, 0), i): + v[i] -= theta[i, i - j] ** 2 * v[j] + # Break if v has converged + if i >= 10: + if v[i - 10] - v[i] < v[0] * rtol: + # Forward fill all remaining values + v[i + 1:] = v[i] + theta[i + 1:] = theta[i] + break + + theta = theta[:-1, 1:] + v = v[:-1] + return theta, v + + +def innovations_filter(endog, theta): + """ + Filter observations using the innovations algorithm + + Parameters + ---------- + endog : array-like + The time series to filter (nobs,). Should be demeaned if not mean 0. + theta : ndarray + Innovation coefficients of MA representation. Array must be (nobs, q) + where q order of the MA. + + Returns + ------- + resid : ndarray + Array of filtered innovations + + Examples + -------- + >>> import statsmodels.api as sm + >>> data = sm.datasets.macrodata.load_pandas() + >>> rgdpg = data.data['realgdp'].pct_change().dropna() + >>> acov = sm.tsa.acovf(rgdpg) + >>> nobs = activity.shape[0] + >>> theta, sigma2 = innovations_algo(acov[:4], nobs=nobs) + >>> resid = innovations_filter(rgdpg, theta) + + See Also + -------- + innovations_algo + + References + ---------- + .. [*] Brockwell, P.J. and Davis, R.A., 2016. Introduction to time series + and forecasting. Springer. + """ + orig_endog = endog + endog = np.squeeze(np.asarray(endog)) + if endog.ndim != 1: + raise ValueError('endog must be 1-d or squeezable to 1-d.') + nobs = endog.shape[0] + n_theta, k = theta.shape + if nobs != n_theta: + raise ValueError('theta must be (nobs, q) where q is the moder order') + is_pandas = isinstance(orig_endog, (pd.DataFrame, pd.Series)) + if is_pandas: + if len(orig_endog.index) != nobs: + msg = 'If endog is a Series or DataFrame, the index must ' \ + 'correspond to the number of time series observations.' + raise ValueError(msg) + u = np.empty(nobs) + u[0] = endog[0] + for i in range(1, nobs): + if i < k: + hat = (theta[i, :i] * u[:i][::-1]).sum() + else: + hat = (theta[i] * u[i - k:i][::-1]).sum() + u[i] = endog[i] - hat + if is_pandas: + u = pd.Series(u, index=orig_endog.index.copy()) + return u + + +def grangercausalitytests(x, maxlag, addconst=True, verbose=True): + """four tests for granger non causality of 2 timeseries + + all four tests give similar results + `params_ftest` and `ssr_ftest` are equivalent based on F test which is + identical to lmtest:grangertest in R + + Parameters + ---------- + x : array, 2d + data for test whether the time series in the second column Granger + causes the time series in the first column + maxlag : integer + the Granger causality test results are calculated for all lags up to + maxlag + verbose : bool + print results if true + + Returns + ------- + results : dictionary + all test results, dictionary keys are the number of lags. For each + lag the values are a tuple, with the first element a dictionary with + teststatistic, pvalues, degrees of freedom, the second element are + the OLS estimation results for the restricted model, the unrestricted + model and the restriction (contrast) matrix for the parameter f_test. + + Notes + ----- + TODO: convert to class and attach results properly + + The Null hypothesis for grangercausalitytests is that the time series in + the second column, x2, does NOT Granger cause the time series in the first + column, x1. Grange causality means that past values of x2 have a + statistically significant effect on the current value of x1, taking past + values of x1 into account as regressors. We reject the null hypothesis + that x2 does not Granger cause x1 if the pvalues are below a desired size + of the test. + + The null hypothesis for all four test is that the coefficients + corresponding to past values of the second time series are zero. + + 'params_ftest', 'ssr_ftest' are based on F distribution + + 'ssr_chi2test', 'lrtest' are based on chi-square distribution + + References + ---------- + http://en.wikipedia.org/wiki/Granger_causality + Greene: Econometric Analysis + + """ + from scipy import stats + + x = np.asarray(x) + + if x.shape[0] <= 3 * maxlag + int(addconst): + raise ValueError("Insufficient observations. Maximum allowable " + "lag is {0}".format(int((x.shape[0] - int(addconst)) / + 3) - 1)) + + resli = {} + + for mlg in range(1, maxlag + 1): + result = {} + if verbose: + print('\nGranger Causality') + print('number of lags (no zero)', mlg) + mxlg = mlg + + # create lagmat of both time series + dta = lagmat2ds(x, mxlg, trim='both', dropex=1) + + #add constant + if addconst: + dtaown = add_constant(dta[:, 1:(mxlg + 1)], prepend=False) + dtajoint = add_constant(dta[:, 1:], prepend=False) + else: + raise NotImplementedError('Not Implemented') + #dtaown = dta[:, 1:mxlg] + #dtajoint = dta[:, 1:] + + # Run ols on both models without and with lags of second variable + res2down = OLS(dta[:, 0], dtaown).fit() + res2djoint = OLS(dta[:, 0], dtajoint).fit() + + #print results + #for ssr based tests see: + #http://support.sas.com/rnd/app/examples/ets/granger/index.htm + #the other tests are made-up + + # Granger Causality test using ssr (F statistic) + fgc1 = ((res2down.ssr - res2djoint.ssr) / + res2djoint.ssr / mxlg * res2djoint.df_resid) + if verbose: + print('ssr based F test: F=%-8.4f, p=%-8.4f, df_denom=%d,' + ' df_num=%d' % (fgc1, + stats.f.sf(fgc1, mxlg, + res2djoint.df_resid), + res2djoint.df_resid, mxlg)) + result['ssr_ftest'] = (fgc1, + stats.f.sf(fgc1, mxlg, res2djoint.df_resid), + res2djoint.df_resid, mxlg) + + # Granger Causality test using ssr (ch2 statistic) + fgc2 = res2down.nobs * (res2down.ssr - res2djoint.ssr) / res2djoint.ssr + if verbose: + print('ssr based chi2 test: chi2=%-8.4f, p=%-8.4f, ' + 'df=%d' % (fgc2, stats.chi2.sf(fgc2, mxlg), mxlg)) + result['ssr_chi2test'] = (fgc2, stats.chi2.sf(fgc2, mxlg), mxlg) + + #likelihood ratio test pvalue: + lr = -2 * (res2down.llf - res2djoint.llf) + if verbose: + print('likelihood ratio test: chi2=%-8.4f, p=%-8.4f, df=%d' % + (lr, stats.chi2.sf(lr, mxlg), mxlg)) + result['lrtest'] = (lr, stats.chi2.sf(lr, mxlg), mxlg) + + # F test that all lag coefficients of exog are zero + rconstr = np.column_stack((np.zeros((mxlg, mxlg)), + np.eye(mxlg, mxlg), + np.zeros((mxlg, 1)))) + ftres = res2djoint.f_test(rconstr) + if verbose: + print('parameter F test: F=%-8.4f, p=%-8.4f, df_denom=%d,' + ' df_num=%d' % (ftres.fvalue, ftres.pvalue, ftres.df_denom, + ftres.df_num)) + result['params_ftest'] = (np.squeeze(ftres.fvalue)[()], + np.squeeze(ftres.pvalue)[()], + ftres.df_denom, ftres.df_num) + + resli[mxlg] = (result, [res2down, res2djoint, rconstr]) + + return resli + + +def coint(y0, y1, trend='c', method='aeg', maxlag=None, autolag='aic', + return_results=None): + """Test for no-cointegration of a univariate equation + + The null hypothesis is no cointegration. Variables in y0 and y1 are + assumed to be integrated of order 1, I(1). + + This uses the augmented Engle-Granger two-step cointegration test. + Constant or trend is included in 1st stage regression, i.e. in + cointegrating equation. + + **Warning:** The autolag default has changed compared to statsmodels 0.8. + In 0.8 autolag was always None, no the keyword is used and defaults to + 'aic'. Use `autolag=None` to avoid the lag search. + + Parameters + ---------- + y1 : array_like, 1d + first element in cointegrating vector + y2 : array_like + remaining elements in cointegrating vector + trend : str {'c', 'ct'} + trend term included in regression for cointegrating equation + + * 'c' : constant + * 'ct' : constant and linear trend + * also available quadratic trend 'ctt', and no constant 'nc' + + method : string + currently only 'aeg' for augmented Engle-Granger test is available. + default might change. + maxlag : None or int + keyword for `adfuller`, largest or given number of lags + autolag : string + keyword for `adfuller`, lag selection criterion. + + * if None, then maxlag lags are used without lag search + * if 'AIC' (default) or 'BIC', then the number of lags is chosen + to minimize the corresponding information criterion + * 't-stat' based choice of maxlag. Starts with maxlag and drops a + lag until the t-statistic on the last lag length is significant + using a 5%-sized test + + return_results : bool + for future compatibility, currently only tuple available. + If True, then a results instance is returned. Otherwise, a tuple + with the test outcome is returned. + Set `return_results=False` to avoid future changes in return. + + Returns + ------- + coint_t : float + t-statistic of unit-root test on residuals + pvalue : float + MacKinnon's approximate, asymptotic p-value based on MacKinnon (1994) + crit_value : dict + Critical values for the test statistic at the 1 %, 5 %, and 10 % + levels based on regression curve. This depends on the number of + observations. + + Notes + ----- + The Null hypothesis is that there is no cointegration, the alternative + hypothesis is that there is cointegrating relationship. If the pvalue is + small, below a critical size, then we can reject the hypothesis that there + is no cointegrating relationship. + + P-values and critical values are obtained through regression surface + approximation from MacKinnon 1994 and 2010. + + If the two series are almost perfectly collinear, then computing the + test is numerically unstable. However, the two series will be cointegrated + under the maintained assumption that they are integrated. In this case + the t-statistic will be set to -inf and the pvalue to zero. + + TODO: We could handle gaps in data by dropping rows with nans in the + auxiliary regressions. Not implemented yet, currently assumes no nans + and no gaps in time series. + + References + ---------- + MacKinnon, J.G. 1994 "Approximate Asymptotic Distribution Functions for + Unit-Root and Cointegration Tests." Journal of Business & Economics + Statistics, 12.2, 167-76. + MacKinnon, J.G. 2010. "Critical Values for Cointegration Tests." + Queen's University, Dept of Economics Working Papers 1227. + http://ideas.repec.org/p/qed/wpaper/1227.html + """ + + trend = trend.lower() + if trend not in ['c', 'nc', 'ct', 'ctt']: + raise ValueError("trend option %s not understood" % trend) + y0 = np.asarray(y0) + y1 = np.asarray(y1) + if y1.ndim < 2: + y1 = y1[:, None] + nobs, k_vars = y1.shape + k_vars += 1 # add 1 for y0 + + if trend == 'nc': + xx = y1 + else: + xx = add_trend(y1, trend=trend, prepend=False) + + res_co = OLS(y0, xx).fit() + + if res_co.rsquared < 1 - 100 * SQRTEPS: + res_adf = adfuller(res_co.resid, maxlag=maxlag, autolag=autolag, + regression='nc') + else: + import warnings + warnings.warn("y0 and y1 are (almost) perfectly colinear." + "Cointegration test is not reliable in this case.", + CollinearityWarning) + # Edge case where series are too similar + res_adf = (-np.inf,) + + # no constant or trend, see egranger in Stata and MacKinnon + if trend == 'nc': + crit = [np.nan] * 3 # 2010 critical values not available + else: + crit = mackinnoncrit(N=k_vars, regression=trend, nobs=nobs - 1) + # nobs - 1, the -1 is to match egranger in Stata, I don't know why. + # TODO: check nobs or df = nobs - k + + pval_asy = mackinnonp(res_adf[0], regression=trend, N=k_vars) + return res_adf[0], pval_asy, crit + + +def _safe_arma_fit(y, order, model_kw, trend, fit_kw, start_params=None): + try: + return ARMA(y, order=order, **model_kw).fit(disp=0, trend=trend, + start_params=start_params, + **fit_kw) + except LinAlgError: + # SVD convergence failure on badly misspecified models + return + + except ValueError as error: + if start_params is not None: # don't recurse again + # user supplied start_params only get one chance + return + # try a little harder, should be handled in fit really + elif ('initial' not in error.args[0] or 'initial' in str(error)): + start_params = [.1] * sum(order) + if trend == 'c': + start_params = [.1] + start_params + return _safe_arma_fit(y, order, model_kw, trend, fit_kw, + start_params) + else: + return + except: # no idea what happened + return + + +def arma_order_select_ic(y, max_ar=4, max_ma=2, ic='bic', trend='c', + model_kw=None, fit_kw=None): + """ + Returns information criteria for many ARMA models + + Parameters + ---------- + y : array-like + Time-series data + max_ar : int + Maximum number of AR lags to use. Default 4. + max_ma : int + Maximum number of MA lags to use. Default 2. + ic : str, list + Information criteria to report. Either a single string or a list + of different criteria is possible. + trend : str + The trend to use when fitting the ARMA models. + model_kw : dict + Keyword arguments to be passed to the ``ARMA`` model + fit_kw : dict + Keyword arguments to be passed to ``ARMA.fit``. + + Returns + ------- + obj : Results object + Each ic is an attribute with a DataFrame for the results. The AR order + used is the row index. The ma order used is the column index. The + minimum orders are available as ``ic_min_order``. + + Examples + -------- + + >>> from statsmodels.tsa.arima_process import arma_generate_sample + >>> import statsmodels.api as sm + >>> import numpy as np + + >>> arparams = np.array([.75, -.25]) + >>> maparams = np.array([.65, .35]) + >>> arparams = np.r_[1, -arparams] + >>> maparam = np.r_[1, maparams] + >>> nobs = 250 + >>> np.random.seed(2014) + >>> y = arma_generate_sample(arparams, maparams, nobs) + >>> res = sm.tsa.arma_order_select_ic(y, ic=['aic', 'bic'], trend='nc') + >>> res.aic_min_order + >>> res.bic_min_order + + Notes + ----- + This method can be used to tentatively identify the order of an ARMA + process, provided that the time series is stationary and invertible. This + function computes the full exact MLE estimate of each model and can be, + therefore a little slow. An implementation using approximate estimates + will be provided in the future. In the meantime, consider passing + {method : 'css'} to fit_kw. + """ + from pandas import DataFrame + + ar_range = lrange(0, max_ar + 1) + ma_range = lrange(0, max_ma + 1) + if isinstance(ic, string_types): + ic = [ic] + elif not isinstance(ic, (list, tuple)): + raise ValueError("Need a list or a tuple for ic if not a string.") + + results = np.zeros((len(ic), max_ar + 1, max_ma + 1)) + model_kw = {} if model_kw is None else model_kw + fit_kw = {} if fit_kw is None else fit_kw + y_arr = np.asarray(y) + for ar in ar_range: + for ma in ma_range: + if ar == 0 and ma == 0 and trend == 'nc': + results[:, ar, ma] = np.nan + continue + + mod = _safe_arma_fit(y_arr, (ar, ma), model_kw, trend, fit_kw) + if mod is None: + results[:, ar, ma] = np.nan + continue + + for i, criteria in enumerate(ic): + results[i, ar, ma] = getattr(mod, criteria) + + dfs = [DataFrame(res, columns=ma_range, index=ar_range) for res in results] + + res = dict(zip(ic, dfs)) + + # add the minimums to the results dict + min_res = {} + for i, result in iteritems(res): + mins = np.where(result.min().min() == result) + min_res.update({i + '_min_order': (mins[0][0], mins[1][0])}) + res.update(min_res) + + return Bunch(**res) + + +def has_missing(data): + """ + Returns True if 'data' contains missing entries, otherwise False + """ + return np.isnan(np.sum(data)) + + +def kpss(x, regression='c', lags=None, store=False): + """ + Kwiatkowski-Phillips-Schmidt-Shin test for stationarity. + + Computes the Kwiatkowski-Phillips-Schmidt-Shin (KPSS) test for the null + hypothesis that x is level or trend stationary. + + Parameters + ---------- + x : array_like, 1d + Data series + regression : str{'c', 'ct'} + Indicates the null hypothesis for the KPSS test + * 'c' : The data is stationary around a constant (default) + * 'ct' : The data is stationary around a trend + lags : {None, str, int}, optional + Indicates the number of lags to be used. If None (default), lags is + calculated using the legacy method. If 'auto', lags is calculated + using the data-dependent method of Hobijn et al. (1998). See also + Andrews (1991), Newey & West (1994), and Schwert (1989). If set to + 'legacy', uses int(12 * (n / 100)**(1 / 4)) , as outlined in + Schwert (1989). + store : bool + If True, then a result instance is returned additionally to + the KPSS statistic (default is False). + + Returns + ------- + kpss_stat : float + The KPSS test statistic + p_value : float + The p-value of the test. The p-value is interpolated from + Table 1 in Kwiatkowski et al. (1992), and a boundary point + is returned if the test statistic is outside the table of + critical values, that is, if the p-value is outside the + interval (0.01, 0.1). + lags : int + The truncation lag parameter + crit : dict + The critical values at 10%, 5%, 2.5% and 1%. Based on + Kwiatkowski et al. (1992). + resstore : (optional) instance of ResultStore + An instance of a dummy class with results attached as attributes + + Notes + ----- + To estimate sigma^2 the Newey-West estimator is used. If lags is None, + the truncation lag parameter is set to int(12 * (n / 100) ** (1 / 4)), + as outlined in Schwert (1989). The p-values are interpolated from + Table 1 of Kwiatkowski et al. (1992). If the computed statistic is + outside the table of critical values, then a warning message is + generated. + + Missing values are not handled. + + References + ---------- + Andrews, D.W.K. (1991). Heteroskedasticity and autocorrelation consistent + covariance matrix estimation. Econometrica, 59: 817-858. + + Hobijn, B., Frances, B.H., & Ooms, M. (2004). Generalizations of the + KPSS-test for stationarity. Statistica Neerlandica, 52: 483-502. + + Kwiatkowski, D., Phillips, P.C.B., Schmidt, P., & Shin, Y. (1992). Testing + the null hypothesis of stationarity against the alternative of a unit root. + Journal of Econometrics, 54: 159-178. + + Newey, W.K., & West, K.D. (1994). Automatic lag selection in covariance + matrix estimation. Review of Economic Studies, 61: 631-653. + + Schwert, G. W. (1989). Tests for unit roots: A Monte Carlo investigation. + Journal of Business and Economic Statistics, 7 (2): 147-159. + """ + from warnings import warn + + nobs = len(x) + x = np.asarray(x) + hypo = regression.lower() + + # if m is not one, n != m * n + if nobs != x.size: + raise ValueError("x of shape {0} not understood".format(x.shape)) + + if hypo == 'ct': + # p. 162 Kwiatkowski et al. (1992): y_t = beta * t + r_t + e_t, + # where beta is the trend, r_t a random walk and e_t a stationary + # error term. + resids = OLS(x, add_constant(np.arange(1, nobs + 1))).fit().resid + crit = [0.119, 0.146, 0.176, 0.216] + elif hypo == 'c': + # special case of the model above, where beta = 0 (so the null + # hypothesis is that the data is stationary around r_0). + resids = x - x.mean() + crit = [0.347, 0.463, 0.574, 0.739] + else: + raise ValueError("hypothesis '{0}' not understood".format(hypo)) + + if lags is None: + lags = 'legacy' + msg = 'The behavior of using lags=None will change in the next ' \ + 'release. Currently lags=None is the same as ' \ + 'lags=\'legacy\', and so a sample-size lag length is used. ' \ + 'After the next release, the default will change to be the ' \ + 'same as lags=\'auto\' which uses an automatic lag length ' \ + 'selection method. To silence this warning, either use ' \ + '\'auto\' or \'legacy\'' + warn(msg, FutureWarning) + if lags == 'legacy': + lags = int(np.ceil(12. * np.power(nobs / 100., 1 / 4.))) + lags = min(lags, nobs - 1) + elif lags == 'auto': + # autolag method of Hobijn et al. (1998) + lags = _kpss_autolag(resids, nobs) + lags = min(lags, nobs - 1) + else: + lags = int(lags) + + if lags >= nobs: + raise ValueError("lags ({}) must be < number of observations ({})" + .format(lags, nobs)) + + pvals = [0.10, 0.05, 0.025, 0.01] + + eta = np.sum(resids.cumsum()**2) / (nobs**2) # eq. 11, p. 165 + s_hat = _sigma_est_kpss(resids, nobs, lags) + + kpss_stat = eta / s_hat + p_value = np.interp(kpss_stat, crit, pvals) + + if p_value == pvals[-1]: + warn("p-value is smaller than the indicated p-value", InterpolationWarning) + elif p_value == pvals[0]: + warn("p-value is greater than the indicated p-value", InterpolationWarning) + + crit_dict = {'10%': crit[0], '5%': crit[1], '2.5%': crit[2], '1%': crit[3]} + + if store: + rstore = ResultsStore() + rstore.lags = lags + rstore.nobs = nobs + + stationary_type = "level" if hypo == 'c' else "trend" + rstore.H0 = "The series is {0} stationary".format(stationary_type) + rstore.HA = "The series is not {0} stationary".format(stationary_type) + + return kpss_stat, p_value, crit_dict, rstore + else: + return kpss_stat, p_value, lags, crit_dict + + +def _sigma_est_kpss(resids, nobs, lags): + """ + Computes equation 10, p. 164 of Kwiatkowski et al. (1992). This is the + consistent estimator for the variance. + """ + s_hat = np.sum(resids**2) + for i in range(1, lags + 1): + resids_prod = np.dot(resids[i:], resids[:nobs - i]) + s_hat += 2 * resids_prod * (1. - (i / (lags + 1.))) + return s_hat / nobs + + +def _kpss_autolag(resids, nobs): + """ + Computes the number of lags for covariance matrix estimation in KPSS test + using method of Hobijn et al (1998). See also Andrews (1991), Newey & West + (1994), and Schwert (1989). Assumes Bartlett / Newey-West kernel. + """ + covlags = int(np.power(nobs, 2. / 9.)) + s0 = np.sum(resids**2) / nobs + s1 = 0 + for i in range(1, covlags + 1): + resids_prod = np.dot(resids[i:], resids[:nobs - i]) + resids_prod /= (nobs / 2.) + s0 += resids_prod + s1 += i * resids_prod + s_hat = s1 / s0 + pwr = 1. / 3. + gamma_hat = 1.1447 * np.power(s_hat * s_hat, pwr) + autolags = int(gamma_hat * np.power(nobs, pwr)) + return autolags diff --git a/statsmodels/tsa/tests/__init__.py b/statsmodels/tsa/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/tests/arima.do b/statsmodels/tsa/tests/arima.do new file mode 100644 index 0000000..7a9c303 --- /dev/null +++ b/statsmodels/tsa/tests/arima.do @@ -0,0 +1,190 @@ +insheet using "/home/skipper/statsmodels/statsmodels-skipper/statsmodels/datasets/macrodata/macrodata.csv" + +gen qtrdate=yq(year,quarter) +format qtrdate %tq +tsset qtrdate + +/* here for safe keeping +arima cpi, arima(4,1,1) from(0.92687596 -0.5558627 0.32086541 0.25225289 0.11362493 0.93914412 0.78437817334640536, copy) +predict xb, xb dynamic(.) +predict y, y dynamic(.) +*/ + +arima cpi, arima(1,1,1) + +mat llf=e(ll) +mat nobs=e(N) +// number of parameters +mat k=e(k) +// number of dependent variables +mat k_exog=e(k_dv) +mat sigma=e(sigma) +mat chi2=e(chi2) +mat df_model=e(df_m) +mat k_ar=e(ar_max) +mat k_ma=e(ma_max) +mat params=e(b) +mat cov_params=e(V) + +// don't append because you'll rewrite the bunch class +// mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima_results.py") format("%16.0g") replace + +predict xb +predict y, y +predict resid, resid +predict yr, yr +predict mse, mse +predict stdp, stdp +estat ic + +mat icstats=r(S) +mkmat xb xb +mkmat y y +mkmat yr yr +mkmat mse mse +mkmat stdp stdp +mkmat resid resid + +mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params xb y resid yr mse stdp icstats, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima111_results.py") format("%16.0g") replace + +clear + +/* do it with no constant */ + +insheet using "/home/skipper/statsmodels/statsmodels-skipper/statsmodels/datasets/macrodata/macrodata.csv" + +gen qtrdate=yq(year,quarter) +format qtrdate %tq +tsset qtrdate + +arima cpi, arima(1,1,1) noconstant + +mat llf=e(ll) +mat nobs=e(N) +// number of parameters +mat k=e(k) +// number of dependent variables +mat k_exog=e(k_dv) +mat sigma=e(sigma) +mat chi2=e(chi2) +mat df_model=e(df_m) +mat k_ar=e(ar_max) +mat k_ma=e(ma_max) +mat params=e(b) +mat cov_params=e(V) + +// don't append because you'll rewrite the bunch class +// mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima_results.py") format("%16.0g") replace + +predict xb +predict y, y +predict resid, resid +predict yr, yr +predict mse, mse +/*predict stdp, stdp*/ +estat ic + +mat icstats=r(S) +mkmat xb xb +mkmat y y +mkmat yr yr +mkmat mse mse +/*mkmat stdp stdp*/ +mkmat resid resid + +mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params xb y resid yr mse stdp icstats, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima111nc_results.py") format("%16.0g") replace + +clear + +/* Now do conditional */ + +insheet using "/home/skipper/statsmodels/statsmodels-skipper/statsmodels/datasets/macrodata/macrodata.csv" + +gen qtrdate=yq(year,quarter) +format qtrdate %tq +tsset qtrdate + +arima cpi, arima(1,1,1) condition + +mat llf=e(ll) +mat nobs=e(N) +// number of parameters +mat k=e(k) +// number of dependent variables +mat k_exog=e(k_dv) +mat sigma=e(sigma) +mat chi2=e(chi2) +mat df_model=e(df_m) +mat k_ar=e(ar_max) +mat k_ma=e(ma_max) +mat params=e(b) +mat cov_params=e(V) + +// don't append because you'll rewrite the bunch class +// mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima_results.py") format("%16.0g") replace + +predict xb +predict y, y +predict resid, resid +predict yr, yr +predict mse, mse +predict stdp, stdp +estat ic + +mat icstats=r(S) +mkmat xb xb +mkmat y y +mkmat yr yr +mkmat mse mse +mkmat stdp stdp +mkmat resid resid + +mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params xb y resid yr mse stdp icstats, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima111_css_results.py") format("%16.0g") replace + +clear + +/* do it with no constant */ + +insheet using "/home/skipper/statsmodels/statsmodels-skipper/statsmodels/datasets/macrodata/macrodata.csv" + +gen qtrdate=yq(year,quarter) +format qtrdate %tq +tsset qtrdate + +arima cpi, arima(1,1,1) noconstant condition + +mat llf=e(ll) +mat nobs=e(N) +// number of parameters +mat k=e(k) +// number of dependent variables +mat k_exog=e(k_dv) +mat sigma=e(sigma) +mat chi2=e(chi2) +mat df_model=e(df_m) +mat k_ar=e(ar_max) +mat k_ma=e(ma_max) +mat params=e(b) +mat cov_params=e(V) + +// don't append because you'll rewrite the bunch class +// mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima_results.py") format("%16.0g") replace + +predict xb +predict y, y +predict resid, resid +predict yr, yr +predict mse, mse +predict stdp, stdp +estat ic + +mat icstats=r(S) +mkmat xb xb +mkmat y y +mkmat yr yr +mkmat mse mse +mkmat stdp stdp +mkmat resid resid + +mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params xb y resid yr mse stdp icstats, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima111nc_css_results.py") format("%16.0g") replace + diff --git a/statsmodels/tsa/tests/arima112.do b/statsmodels/tsa/tests/arima112.do new file mode 100644 index 0000000..ec88ab7 --- /dev/null +++ b/statsmodels/tsa/tests/arima112.do @@ -0,0 +1,185 @@ +insheet using "/home/skipper/statsmodels/statsmodels-skipper/statsmodels/datasets/macrodata/macrodata.csv" + +gen qtrdate=yq(year,quarter) +format qtrdate %tq +tsset qtrdate + +arima cpi, arima(1,1,2) + +mat llf=e(ll) +mat nobs=e(N) +// number of parameters +mat k=e(k) +// number of dependent variables +mat k_exog=e(k_dv) +mat sigma=e(sigma) +mat chi2=e(chi2) +mat df_model=e(df_m) +mat k_ar=e(ar_max) +mat k_ma=e(ma_max) +mat params=e(b) +mat cov_params=e(V) + +// don't append because you'll rewrite the bunch class +// mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima_results.py") format("%16.0g") replace + +predict xb +predict y, y +predict resid, resid +predict yr, yr +predict mse, mse +predict stdp, stdp +estat ic + +mat icstats=r(S) +mkmat xb xb +mkmat y y +mkmat yr yr +mkmat mse mse +mkmat stdp stdp +mkmat resid resid + +mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params xb y resid yr mse stdp icstats, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima112_results.py") format("%16.0g") replace + +/* Do it with no constant */ + +clear + +insheet using "/home/skipper/statsmodels/statsmodels-skipper/statsmodels/datasets/macrodata/macrodata.csv" + +gen qtrdate=yq(year,quarter) +format qtrdate %tq +tsset qtrdate + + +arima cpi, arima(1,1,2) noconstant + +mat llf=e(ll) +mat nobs=e(N) +// number of parameters +mat k=e(k) +// number of dependent variables +mat k_exog=e(k_dv) +mat sigma=e(sigma) +mat chi2=e(chi2) +mat df_model=e(df_m) +mat k_ar=e(ar_max) +mat k_ma=e(ma_max) +mat params=e(b) +mat cov_params=e(V) + +// don't append because you'll rewrite the bunch class +// mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima_results.py") format("%16.0g") replace + +predict xb +predict y, y +predict resid, resid +predict yr, yr +predict mse, mse +/*predict stdp, stdp*/ +estat ic + +mat icstats=r(S) +mkmat xb xb +mkmat y y +mkmat yr yr +mkmat mse mse +/*mkmat stdp stdp*/ +mkmat resid resid + +mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params xb y resid yr mse icstats, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima112nc_results.py") format("%16.0g") replace + +clear + +/* now do conditional */ +insheet using "/home/skipper/statsmodels/statsmodels-skipper/statsmodels/datasets/macrodata/macrodata.csv" + +gen qtrdate=yq(year,quarter) +format qtrdate %tq +tsset qtrdate + +/* still converges to different than x-12-arima */ +arima cpi, arima(1,1,2) condition from(.905322 -.692425 1.07366 0.172024 0.682072819129, copy) gtolerance(.0001) vce(oim) + +mat llf=e(ll) +mat nobs=e(N) +// number of parameters +mat k=e(k) +// number of dependent variables +mat k_exog=e(k_dv) +mat sigma=e(sigma) +mat chi2=e(chi2) +mat df_model=e(df_m) +mat k_ar=e(ar_max) +mat k_ma=e(ma_max) +mat params=e(b) +mat cov_params=e(V) + +// don't append because you'll rewrite the bunch class +// mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima_results.py") format("%16.0g") replace + +predict xb +predict y, y +predict resid, resid +predict yr, yr +predict mse, mse +predict stdp, stdp +estat ic + +mat icstats=r(S) +mkmat xb xb +mkmat y y +mkmat yr yr +mkmat mse mse +mkmat stdp stdp +mkmat resid resid + +mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params xb y resid yr mse stdp icstats, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima112_css_results.py") format("%16.0g") replace + +/* Do it with no constant */ + +clear + +insheet using "/home/skipper/statsmodels/statsmodels-skipper/statsmodels/datasets/macrodata/macrodata.csv" + +gen qtrdate=yq(year,quarter) +format qtrdate %tq +tsset qtrdate + + +arima cpi, arima(1,1,2) noconstant condition + +mat llf=e(ll) +mat nobs=e(N) +// number of parameters +mat k=e(k) +// number of dependent variables +mat k_exog=e(k_dv) +mat sigma=e(sigma) +mat chi2=e(chi2) +mat df_model=e(df_m) +mat k_ar=e(ar_max) +mat k_ma=e(ma_max) +mat params=e(b) +mat cov_params=e(V) + +// don't append because you'll rewrite the bunch class +// mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima_results.py") format("%16.0g") replace + +predict xb +predict y, y +predict resid, resid +predict yr, yr +predict mse, mse +predict stdp, stdp +estat ic + +mat icstats=r(S) +mkmat xb xb +mkmat y y +mkmat yr yr +mkmat mse mse +mkmat stdp stdp +mkmat resid resid + +mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params xb y resid yr mse stdp icstats, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima112nc_css_results.py") format("%16.0g") replace diff --git a/statsmodels/tsa/tests/arima211.do b/statsmodels/tsa/tests/arima211.do new file mode 100644 index 0000000..0d2759e --- /dev/null +++ b/statsmodels/tsa/tests/arima211.do @@ -0,0 +1,184 @@ +insheet using "/home/skipper/statsmodels/statsmodels-skipper/statsmodels/datasets/macrodata/macrodata.csv" + +gen qtrdate=yq(year,quarter) +format qtrdate %tq +tsset qtrdate + +arima cpi, arima(2,1,1) + +mat llf=e(ll) +mat nobs=e(N) +// number of parameters +mat k=e(k) +// number of dependent variables +mat k_exog=e(k_dv) +mat sigma=e(sigma) +mat chi2=e(chi2) +mat df_model=e(df_m) +mat k_ar=e(ar_max) +mat k_ma=e(ma_max) +mat params=e(b) +mat cov_params=e(V) + +// don't append because you'll rewrite the bunch class +// mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima_results.py") format("%16.0g") replace + +predict xb +predict y, y +predict resid, resid +predict yr, yr +predict mse, mse +predict stdp, stdp +estat ic + +mat icstats=r(S) +mkmat xb xb +mkmat y y +mkmat yr yr +mkmat mse mse +mkmat stdp stdp +mkmat resid resid + +mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params xb y resid yr mse stdp icstats, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima211_results.py") format("%16.0g") replace + +clear + +/* do it with no constant */ +insheet using "/home/skipper/statsmodels/statsmodels-skipper/statsmodels/datasets/macrodata/macrodata.csv" + +gen qtrdate=yq(year,quarter) +format qtrdate %tq +tsset qtrdate + +arima cpi, arima(2,1,1) noconstant + +mat llf=e(ll) +mat nobs=e(N) +// number of parameters +mat k=e(k) +// number of dependent variables +mat k_exog=e(k_dv) +mat sigma=e(sigma) +mat chi2=e(chi2) +mat df_model=e(df_m) +mat k_ar=e(ar_max) +mat k_ma=e(ma_max) +mat params=e(b) +mat cov_params=e(V) + +// don't append because you'll rewrite the bunch class +// mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima_results.py") format("%16.0g") replace + +predict xb +predict y, y +predict resid, resid +predict yr, yr +predict mse, mse +/* can't do stdp without a constant +predict stdp, stdp */ +estat ic + +mat icstats=r(S) +mkmat xb xb +mkmat y y +mkmat yr yr +mkmat mse mse +/*mkmat stdp stdp*/ +mkmat resid resid + +mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params xb y resid yr mse icstats, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima211nc_results.py") format("%16.0g") replace + + +/* now do conditional */ + +clear + + +insheet using "/home/skipper/statsmodels/statsmodels-skipper/statsmodels/datasets/macrodata/macrodata.csv" + +gen qtrdate=yq(year,quarter) +format qtrdate %tq +tsset qtrdate + +arima cpi, arima(2,1,1) condition + +mat llf=e(ll) +mat nobs=e(N) +// number of parameters +mat k=e(k) +// number of dependent variables +mat k_exog=e(k_dv) +mat sigma=e(sigma) +mat chi2=e(chi2) +mat df_model=e(df_m) +mat k_ar=e(ar_max) +mat k_ma=e(ma_max) +mat params=e(b) +mat cov_params=e(V) + +// don't append because you'll rewrite the bunch class +// mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima_results.py") format("%16.0g") replace + +predict xb +predict y, y +predict resid, resid +predict yr, yr +predict mse, mse +predict stdp, stdp +estat ic + +mat icstats=r(S) +mkmat xb xb +mkmat y y +mkmat yr yr +mkmat mse mse +mkmat stdp stdp +mkmat resid resid + +mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params xb y resid yr mse stdp icstats, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima211_css_results.py") format("%16.0g") replace + +/* do it with no constant */ +clear + +insheet using "/home/skipper/statsmodels/statsmodels-skipper/statsmodels/datasets/macrodata/macrodata.csv" + +gen qtrdate=yq(year,quarter) +format qtrdate %tq +tsset qtrdate + +arima cpi, arima(2,1,1) condition noconstant + +mat llf=e(ll) +mat nobs=e(N) +// number of parameters +mat k=e(k) +// number of dependent variables +mat k_exog=e(k_dv) +mat sigma=e(sigma) +mat chi2=e(chi2) +mat df_model=e(df_m) +mat k_ar=e(ar_max) +mat k_ma=e(ma_max) +mat params=e(b) +mat cov_params=e(V) + +// don't append because you'll rewrite the bunch class +// mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima_results.py") format("%16.0g") replace + +predict xb +predict y, y +predict resid, resid +predict yr, yr +predict mse, mse +predict stdp, stdp +estat ic + +mat icstats=r(S) +mkmat xb xb +mkmat y y +mkmat yr yr +mkmat mse mse +mkmat stdp stdp +mkmat resid resid + +mat2nparray llf nobs k k_exog sigma chi2 df_model k_ar k_ma params cov_params xb y resid yr mse stdp icstats, saving("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/arima211nc_css_results.py") format("%16.0g") replace diff --git a/statsmodels/tsa/tests/results/ARMLEConstantPredict.csv b/statsmodels/tsa/tests/results/ARMLEConstantPredict.csv new file mode 100644 index 0000000..c48fad4 --- /dev/null +++ b/statsmodels/tsa/tests/results/ARMLEConstantPredict.csv @@ -0,0 +1,334 @@ +1700, 48.3243 +1701, 12.6633 +1702, 26.1958 +1703, 30.7430 +1704, 35.6854 +1705, 48.6206 +1706, 67.6159 +1707, 16.0018 +1708, 13.3760 +1709, 11.2305 +1710, 9.4877 +1711, 9.0588 +1712, 8.7644 +1713, 11.2268 +1714, 20.9667 +1715, 23.5576 +1716, 36.9585 +1717, 50.0107 +1718, 58.9465 +1719, 46.3827 +1720, 21.4597 +1721, 18.4550 +1722, 22.7606 +1723, 19.9462 +1724, 12.5469 +1725, 33.2339 +1726, 55.8533 +1727, 89.9622 +1728, 120.8949 +1729, 74.1257 +1730, 42.7777 +1731, 31.2814 +1732, 23.3099 +1733, 5.0720 +1734, 12.1647 +1735, 36.4987 +1736, 62.5014 +1737, 93.0209 +1738, 84.6001 +1739, 103.9179 +1740, 81.1555 +1741, 41.0694 +1742, 17.7797 +1743, 11.1391 +1744, 18.9217 +1745, 18.3533 +1746, 29.8649 +1747, 50.0499 +1748, 62.2988 +1749, 73.1959 +1750, 80.7216 +1751, 68.4801 +1752, 24.2343 +1753, 36.7505 +1754, 22.8928 +1755, 5.0187 +1756, 19.4815 +1757, 24.7614 +1758, 52.7583 +1759, 66.4247 +1760, 54.4097 +1761, 63.4711 +1762, 82.9175 +1763, 38.9882 +1764, 27.5613 +1765, 29.6525 +1766, 16.6044 +1767, 17.0212 +1768, 56.0339 +1769, 81.6483 +1770, 113.7808 +1771, 87.3770 +1772, 59.2614 +1773, 51.5278 +1774, 18.2411 +1775, 23.3538 +1776, 8.1929 +1777, 34.2464 +1778, 128.3357 +1779, 165.3934 +1780, 94.6616 +1781, 56.1351 +1782, 51.4397 +1783, 22.6825 +1784, 12.7374 +1785, 10.5643 +1786, 42.5939 +1787, 123.6546 +1788, 149.8687 +1789, 112.0556 +1790, 94.3949 +1791, 62.0904 +1792, 41.9001 +1793, 45.4531 +1794, 34.7052 +1795, 43.7433 +1796, 38.1605 +1797, 38.5734 +1798, 31.0695 +1799, 25.0907 +1800, 25.7435 +1801, 32.0251 +1802, 47.8522 +1803, 52.0917 +1804, 38.1594 +1805, 43.7860 +1806, 34.0097 +1807, 17.4484 +1808, 4.9886 +1809, 11.7416 +1810, 11.3238 +1811, 12.7122 +1812, 16.3944 +1813, 20.4500 +1814, 26.2209 +1815, 23.0268 +1816, 41.8362 +1817, 45.7260 +1818, 31.0652 +1819, 21.0013 +1820, 18.9056 +1821, 12.4379 +1822, 7.9779 +1823, 9.0869 +1824, 12.5842 +1825, 23.4923 +1826, 30.4295 +1827, 46.1351 +1828, 52.3075 +1829, 59.8270 +1830, 55.1892 +1831, 56.2765 +1832, 27.8672 +1833, 13.9741 +1834, 5.2897 +1835, 22.4063 +1836, 75.8426 +1837, 135.2604 +1838, 123.4356 +1839, 73.1759 +1840, 64.5067 +1841, 46.3514 +1842, 16.0159 +1843, 17.6781 +1844, 16.1095 +1845, 39.1884 +1846, 75.7718 +1847, 80.4127 +1848, 108.4728 +1849, 120.3614 +1850, 65.1015 +1851, 39.5009 +1852, 51.7036 +1853, 39.0369 +1854, 30.8453 +1855, 23.0074 +1856, 20.6358 +1857, 32.6021 +1858, 51.0554 +1859, 73.0901 +1860, 102.9663 +1861, 85.1107 +1862, 56.3590 +1863, 41.8000 +1864, 29.0897 +1865, 38.4049 +1866, 23.5480 +1867, 17.2169 +1868, 25.5456 +1869, 64.8925 +1870, 92.1810 +1871, 144.9161 +1872, 81.2455 +1873, 74.2512 +1874, 44.7857 +1875, 24.2016 +1876, 5.2302 +1877, 16.3772 +1878, 26.6953 +1879, 32.5956 +1880, 32.5162 +1881, 63.4612 +1882, 68.1254 +1883, 59.2254 +1884, 55.2588 +1885, 51.3962 +1886, 37.8536 +1887, 10.4133 +1888, 7.7974 +1889, 13.1916 +1890, 19.4783 +1891, 23.2385 +1892, 56.4945 +1893, 88.4361 +1894, 81.8715 +1895, 60.7967 +1896, 45.6953 +1897, 23.6868 +1898, 16.1033 +1899, 24.9201 +1900, 12.9006 +1901, 23.2250 +1902, 23.0700 +1903, 24.7299 +1904, 46.0211 +1905, 53.2488 +1906, 64.2425 +1907, 45.4394 +1908, 52.2379 +1909, 36.7360 +1910, 31.1373 +1911, 8.0110 +1912, 5.4179 +1913, 15.0374 +1914, 18.6514 +1915, 25.9393 +1916, 70.5995 +1917, 60.9699 +1918, 106.9299 +1919, 59.2734 +1920, 35.7445 +1921, 22.7168 +1922, 15.3497 +1923, 9.8045 +1924, 15.2983 +1925, 31.0386 +1926, 72.1485 +1927, 76.1533 +1928, 69.4000 +1929, 71.1905 +1930, 50.0137 +1931, 17.2099 +1932, 13.4715 +1933, 11.0154 +1934, 13.6062 +1935, 26.3285 +1936, 57.2889 +1937, 98.3814 +1938, 116.2272 +1939, 86.8228 +1940, 59.7324 +1941, 43.8037 +1942, 28.2076 +1943, 18.4238 +1944, 15.6238 +1945, 22.8275 +1946, 62.5187 +1947, 121.9892 +1948, 158.7448 +1949, 107.3938 +1950, 104.0028 +1951, 48.3130 +1952, 42.6960 +1953, 14.0014 +1954, 7.2680 +1955, 21.2344 +1956, 78.2456 +1957, 181.3364 +1958, 194.1315 +1959, 143.6808 +1960, 118.8232 +1961, 64.9805 +1962, 13.6226 +1963, 22.7451 +1964, 25.1087 +1965, 28.2275 +1966, 56.5253 +1967, 92.5299 +1968, 125.9856 +1969, 110.9182 +1970, 88.2160 +1971, 85.0722 +1972, 38.5614 +1973, 52.3767 +1974, 22.8371 +1975, 29.6618 +1976, 28.7989 +1977, 31.3542 +1978, 53.3789 +1979, 123.7290 +1980, 158.5133 +1981, 127.2971 +1982, 100.5273 +1983, 81.8967 +1984, 27.4831 +1985, 26.9057 +1986, 9.8930 +1987, 24.9149 +1988, 66.4453 +1989, 140.0824 +1990, 173.7841 +1991, 121.4507 +1992, 118.4088 +1993, 59.0602 +1994, 19.9059 +1995, 19.0615 +1996, 13.8253 +1997, 23.5746 +1998, 59.6311 +1999, 99.0682 +2000, 116.3966 +2001, 120.1556 +2002, 91.5468 +2003, 77.2543 +2004, 34.5889 +2005, 20.0033 +2006, 24.7040 +2007, 20.0261 +2008, 23.4736 +2009, 30.8586 +2010, 61.3354 +2011, 87.0247 +2012, 91.3212 +2013, 79.9216 +2014, 60.7995 +2015, 40.3749 +2016, 24.5290 +2017, 13.5305 +2018, 14.4426 +2019, 26.8251 +2020, 47.5587 +2021, 67.3004 +2022, 78.6904 +2023, 78.4359 +2024, 67.9448 +2025, 52.0910 +2026, 35.7081 +2027, 24.0176 +2028, 20.4849 +2029, 26.4658 +2030, 39.6776 +2031, 55.2300 +2032, 67.4980 +2033, 72.3783 diff --git a/statsmodels/tsa/tests/results/AROLSConstantPredict.csv b/statsmodels/tsa/tests/results/AROLSConstantPredict.csv new file mode 100644 index 0000000..3ffe0df --- /dev/null +++ b/statsmodels/tsa/tests/results/AROLSConstantPredict.csv @@ -0,0 +1,416 @@ +11.9759400 0.0000000 0.0000000 0.0000000 0.0000000 +10.2786500 0.0000000 0.0000000 0.0000000 0.0000000 +9.7529560 0.0000000 0.0000000 0.0000000 0.0000000 +9.5912670 0.0000000 0.0000000 0.0000000 0.0000000 +12.1745500 0.0000000 0.0000000 0.0000000 0.0000000 +22.0220200 0.0000000 0.0000000 0.0000000 0.0000000 +24.6309500 0.0000000 0.0000000 0.0000000 0.0000000 +38.0292300 0.0000000 0.0000000 0.0000000 0.0000000 +51.0138500 0.0000000 0.0000000 0.0000000 0.0000000 +59.8135400 0.0000000 0.0000000 0.0000000 0.0000000 +47.0489200 0.0000000 0.0000000 0.0000000 0.0000000 +22.0033600 0.0000000 0.0000000 0.0000000 0.0000000 +19.0655900 0.0000000 0.0000000 0.0000000 0.0000000 +23.3640300 0.0000000 0.0000000 0.0000000 0.0000000 +20.4725000 0.0000000 0.0000000 0.0000000 0.0000000 +13.0734100 0.0000000 0.0000000 0.0000000 0.0000000 +34.0228200 0.0000000 0.0000000 0.0000000 0.0000000 +56.7262200 0.0000000 0.0000000 0.0000000 0.0000000 +90.8454600 0.0000000 0.0000000 0.0000000 0.0000000 +121.5800000 0.0000000 0.0000000 0.0000000 0.0000000 +74.3104000 0.0000000 0.0000000 0.0000000 0.0000000 +42.9633800 0.0000000 0.0000000 0.0000000 0.0000000 +31.5294900 0.0000000 0.0000000 0.0000000 0.0000000 +23.5693800 0.0000000 0.0000000 0.0000000 0.0000000 +5.1367160 0.0000000 0.0000000 0.0000000 0.0000000 +12.4800100 0.0000000 0.0000000 0.0000000 0.0000000 +37.1129600 0.0000000 0.0000000 0.0000000 0.0000000 +63.3150300 0.0000000 0.0000000 0.0000000 0.0000000 +93.8999400 0.0000000 0.0000000 0.0000000 0.0000000 +85.2563600 0.0000000 0.0000000 0.0000000 0.0000000 +104.6107000 0.0000000 0.0000000 0.0000000 0.0000000 +81.4402600 0.0000000 0.0000000 0.0000000 0.0000000 +41.1985200 0.0000000 0.0000000 0.0000000 0.0000000 +17.8384800 0.0000000 0.0000000 0.0000000 0.0000000 +11.3475900 0.0000000 0.0000000 0.0000000 0.0000000 +19.1989800 0.0000000 0.0000000 0.0000000 0.0000000 +18.6833900 0.0000000 0.0000000 0.0000000 0.0000000 +30.4802500 0.0000000 0.0000000 0.0000000 0.0000000 +50.8808300 0.0000000 0.0000000 0.0000000 0.0000000 +63.2416400 0.0000000 0.0000000 0.0000000 0.0000000 +74.0747700 0.0000000 0.0000000 0.0000000 0.0000000 +81.5033200 0.0000000 0.0000000 0.0000000 0.0000000 +69.0184900 0.0000000 0.0000000 0.0000000 0.0000000 +24.5216100 0.0000000 0.0000000 0.0000000 0.0000000 +37.2684700 0.0000000 0.0000000 0.0000000 0.0000000 +23.2274100 0.0000000 0.0000000 0.0000000 0.0000000 +5.3522780 0.0000000 0.0000000 0.0000000 0.0000000 +19.9662200 0.0000000 0.0000000 0.0000000 0.0000000 +25.4448600 0.0000000 0.0000000 0.0000000 0.0000000 +53.6239300 0.0000000 0.0000000 0.0000000 0.0000000 +67.2308800 0.0000000 0.0000000 0.0000000 0.0000000 +55.1517300 0.0000000 0.0000000 0.0000000 0.0000000 +64.2185500 0.0000000 0.0000000 0.0000000 0.0000000 +83.6496600 0.0000000 0.0000000 0.0000000 0.0000000 +39.2648600 0.0000000 0.0000000 0.0000000 0.0000000 +27.9030000 0.0000000 0.0000000 0.0000000 0.0000000 +30.0447300 0.0000000 0.0000000 0.0000000 0.0000000 +17.0010600 0.0000000 0.0000000 0.0000000 0.0000000 +17.4538600 0.0000000 0.0000000 0.0000000 0.0000000 +56.7539700 0.0000000 0.0000000 0.0000000 0.0000000 +82.3584100 0.0000000 0.0000000 0.0000000 0.0000000 +114.4292000 0.0000000 0.0000000 0.0000000 0.0000000 +87.6790300 0.0000000 0.0000000 0.0000000 0.0000000 +59.5520700 0.0000000 0.0000000 0.0000000 0.0000000 +51.8202600 0.0000000 0.0000000 0.0000000 0.0000000 +18.3619000 0.0000000 0.0000000 0.0000000 0.0000000 +23.5642100 0.0000000 0.0000000 0.0000000 0.0000000 +8.3428510 0.0000000 0.0000000 0.0000000 0.0000000 +34.8153100 0.0000000 0.0000000 0.0000000 0.0000000 +129.2351000 0.0000000 0.0000000 0.0000000 0.0000000 +166.0026000 0.0000000 0.0000000 0.0000000 0.0000000 +94.5698400 0.0000000 0.0000000 0.0000000 0.0000000 +56.1962000 0.0000000 0.0000000 0.0000000 0.0000000 +51.7409200 0.0000000 0.0000000 0.0000000 0.0000000 +22.7223600 0.0000000 0.0000000 0.0000000 0.0000000 +12.6374400 0.0000000 0.0000000 0.0000000 0.0000000 +10.5908700 0.0000000 0.0000000 0.0000000 0.0000000 +43.0951100 0.0000000 0.0000000 0.0000000 0.0000000 +124.5025000 0.0000000 0.0000000 0.0000000 0.0000000 +150.4858000 0.0000000 0.0000000 0.0000000 0.0000000 +112.2361000 0.0000000 0.0000000 0.0000000 0.0000000 +94.5556000 0.0000000 0.0000000 0.0000000 0.0000000 +62.1523700 0.0000000 0.0000000 0.0000000 0.0000000 +41.8596000 0.0000000 0.0000000 0.0000000 0.0000000 +45.3130000 0.0000000 0.0000000 0.0000000 0.0000000 +34.5130900 0.0000000 0.0000000 0.0000000 0.0000000 +43.7741400 0.0000000 0.0000000 0.0000000 0.0000000 +38.3710400 0.0000000 0.0000000 0.0000000 0.0000000 +39.1159500 0.0000000 0.0000000 0.0000000 0.0000000 +31.6996500 0.0000000 0.0000000 0.0000000 0.0000000 +25.8676600 0.0000000 0.0000000 0.0000000 0.0000000 +26.5877400 0.0000000 0.0000000 0.0000000 0.0000000 +32.9734400 0.0000000 0.0000000 0.0000000 0.0000000 +48.8512800 0.0000000 0.0000000 0.0000000 0.0000000 +52.9919000 0.0000000 0.0000000 0.0000000 0.0000000 +38.9382100 0.0000000 0.0000000 0.0000000 0.0000000 +44.5774900 0.0000000 0.0000000 0.0000000 0.0000000 +34.6780100 0.0000000 0.0000000 0.0000000 0.0000000 +18.0106100 0.0000000 0.0000000 0.0000000 0.0000000 +5.5363910 0.0000000 0.0000000 0.0000000 0.0000000 +12.4546200 0.0000000 0.0000000 0.0000000 0.0000000 +12.0475100 0.0000000 0.0000000 0.0000000 0.0000000 +13.5244200 0.0000000 0.0000000 0.0000000 0.0000000 +17.3066800 0.0000000 0.0000000 0.0000000 0.0000000 +21.4727300 0.0000000 0.0000000 0.0000000 0.0000000 +27.2791200 0.0000000 0.0000000 0.0000000 0.0000000 +24.0394000 0.0000000 0.0000000 0.0000000 0.0000000 +42.9192800 0.0000000 0.0000000 0.0000000 0.0000000 +46.6316400 0.0000000 0.0000000 0.0000000 0.0000000 +31.8181400 0.0000000 0.0000000 0.0000000 0.0000000 +21.6993300 0.0000000 0.0000000 0.0000000 0.0000000 +19.6576400 0.0000000 0.0000000 0.0000000 0.0000000 +13.1277700 0.0000000 0.0000000 0.0000000 0.0000000 +8.6515950 0.0000000 0.0000000 0.0000000 0.0000000 +9.8414150 0.0000000 0.0000000 0.0000000 0.0000000 +13.4353800 0.0000000 0.0000000 0.0000000 0.0000000 +24.4590000 0.0000000 0.0000000 0.0000000 0.0000000 +31.4124800 0.0000000 0.0000000 0.0000000 0.0000000 +47.1630100 0.0000000 0.0000000 0.0000000 0.0000000 +53.2122300 0.0000000 0.0000000 0.0000000 0.0000000 +60.6589500 0.0000000 0.0000000 0.0000000 0.0000000 +55.8372900 0.0000000 0.0000000 0.0000000 0.0000000 +56.8512200 0.0000000 0.0000000 0.0000000 0.0000000 +28.1917800 0.0000000 0.0000000 0.0000000 0.0000000 +14.3540700 0.0000000 0.0000000 0.0000000 0.0000000 +5.7102850 0.0000000 0.0000000 0.0000000 0.0000000 +23.0343200 0.0000000 0.0000000 0.0000000 0.0000000 +76.6172400 0.0000000 0.0000000 0.0000000 0.0000000 +135.9928000 0.0000000 0.0000000 0.0000000 0.0000000 +123.7094000 0.0000000 0.0000000 0.0000000 0.0000000 +73.2189500 0.0000000 0.0000000 0.0000000 0.0000000 +64.7666000 0.0000000 0.0000000 0.0000000 0.0000000 +46.4762400 0.0000000 0.0000000 0.0000000 0.0000000 +15.8943300 0.0000000 0.0000000 0.0000000 0.0000000 +17.6160900 0.0000000 0.0000000 0.0000000 0.0000000 +16.2724200 0.0000000 0.0000000 0.0000000 0.0000000 +39.7201900 0.0000000 0.0000000 0.0000000 0.0000000 +76.5358100 0.0000000 0.0000000 0.0000000 0.0000000 +81.1472200 0.0000000 0.0000000 0.0000000 0.0000000 +109.2335000 0.0000000 0.0000000 0.0000000 0.0000000 +120.9095000 0.0000000 0.0000000 0.0000000 0.0000000 +65.2204600 0.0000000 0.0000000 0.0000000 0.0000000 +39.6257500 0.0000000 0.0000000 0.0000000 0.0000000 +51.9503700 0.0000000 0.0000000 0.0000000 0.0000000 +39.0829800 0.0000000 0.0000000 0.0000000 0.0000000 +30.8064600 0.0000000 0.0000000 0.0000000 0.0000000 +23.1325800 0.0000000 0.0000000 0.0000000 0.0000000 +21.0915600 0.0000000 0.0000000 0.0000000 0.0000000 +33.3012400 0.0000000 0.0000000 0.0000000 0.0000000 +51.9048300 0.0000000 0.0000000 0.0000000 0.0000000 +73.9530300 0.0000000 0.0000000 0.0000000 0.0000000 +103.7786000 0.0000000 0.0000000 0.0000000 0.0000000 +85.6079400 0.0000000 0.0000000 0.0000000 0.0000000 +56.7498800 0.0000000 0.0000000 0.0000000 0.0000000 +42.1813100 0.0000000 0.0000000 0.0000000 0.0000000 +29.4044800 0.0000000 0.0000000 0.0000000 0.0000000 +38.6731000 0.0000000 0.0000000 0.0000000 0.0000000 +23.6690500 0.0000000 0.0000000 0.0000000 0.0000000 +17.5451500 0.0000000 0.0000000 0.0000000 0.0000000 +26.1287800 0.0000000 0.0000000 0.0000000 0.0000000 +65.8095000 0.0000000 0.0000000 0.0000000 0.0000000 +92.9647200 0.0000000 0.0000000 0.0000000 0.0000000 +145.6664000 0.0000000 0.0000000 0.0000000 0.0000000 +81.2722500 0.0000000 0.0000000 0.0000000 0.0000000 +74.5430100 0.0000000 0.0000000 0.0000000 0.0000000 +44.8565600 0.0000000 0.0000000 0.0000000 0.0000000 +24.3290200 0.0000000 0.0000000 0.0000000 0.0000000 +5.1214140 0.0000000 0.0000000 0.0000000 0.0000000 +16.5768300 0.0000000 0.0000000 0.0000000 0.0000000 +27.0747900 0.0000000 0.0000000 0.0000000 0.0000000 +33.1977300 0.0000000 0.0000000 0.0000000 0.0000000 +33.3486600 0.0000000 0.0000000 0.0000000 0.0000000 +64.5380700 0.0000000 0.0000000 0.0000000 0.0000000 +69.0776600 0.0000000 0.0000000 0.0000000 0.0000000 +59.9712900 0.0000000 0.0000000 0.0000000 0.0000000 +55.9539800 0.0000000 0.0000000 0.0000000 0.0000000 +52.0260500 0.0000000 0.0000000 0.0000000 0.0000000 +38.3207100 0.0000000 0.0000000 0.0000000 0.0000000 +10.7317100 0.0000000 0.0000000 0.0000000 0.0000000 +8.2646960 0.0000000 0.0000000 0.0000000 0.0000000 +13.7600200 0.0000000 0.0000000 0.0000000 0.0000000 +20.1455600 0.0000000 0.0000000 0.0000000 0.0000000 +23.9805600 0.0000000 0.0000000 0.0000000 0.0000000 +57.4898700 0.0000000 0.0000000 0.0000000 0.0000000 +89.4062200 0.0000000 0.0000000 0.0000000 0.0000000 +82.5605900 0.0000000 0.0000000 0.0000000 0.0000000 +61.2980800 0.0000000 0.0000000 0.0000000 0.0000000 +46.1625400 0.0000000 0.0000000 0.0000000 0.0000000 +24.0584700 0.0000000 0.0000000 0.0000000 0.0000000 +16.4333800 0.0000000 0.0000000 0.0000000 0.0000000 +25.2997200 0.0000000 0.0000000 0.0000000 0.0000000 +13.2566000 0.0000000 0.0000000 0.0000000 0.0000000 +23.8350100 0.0000000 0.0000000 0.0000000 0.0000000 +23.8146600 0.0000000 0.0000000 0.0000000 0.0000000 +25.6611900 0.0000000 0.0000000 0.0000000 0.0000000 +47.0365800 0.0000000 0.0000000 0.0000000 0.0000000 +54.1930900 0.0000000 0.0000000 0.0000000 0.0000000 +65.1149700 0.0000000 0.0000000 0.0000000 0.0000000 +46.0802700 0.0000000 0.0000000 0.0000000 0.0000000 +52.9767200 0.0000000 0.0000000 0.0000000 0.0000000 +37.2364000 0.0000000 0.0000000 0.0000000 0.0000000 +31.6399500 0.0000000 0.0000000 0.0000000 0.0000000 +8.3276520 0.0000000 0.0000000 0.0000000 0.0000000 +5.9585280 0.0000000 0.0000000 0.0000000 0.0000000 +15.6986000 0.0000000 0.0000000 0.0000000 0.0000000 +19.4157400 0.0000000 0.0000000 0.0000000 0.0000000 +26.8004200 0.0000000 0.0000000 0.0000000 0.0000000 +71.6717800 0.0000000 0.0000000 0.0000000 0.0000000 +61.7876800 0.0000000 0.0000000 0.0000000 0.0000000 +107.8738000 0.0000000 0.0000000 0.0000000 0.0000000 +59.6150600 0.0000000 0.0000000 0.0000000 0.0000000 +36.1787000 0.0000000 0.0000000 0.0000000 0.0000000 +23.0118000 0.0000000 0.0000000 0.0000000 0.0000000 +15.7560100 0.0000000 0.0000000 0.0000000 0.0000000 +10.0766500 0.0000000 0.0000000 0.0000000 0.0000000 +15.7355000 0.0000000 0.0000000 0.0000000 0.0000000 +31.7158300 0.0000000 0.0000000 0.0000000 0.0000000 +73.0440800 0.0000000 0.0000000 0.0000000 0.0000000 +76.9345200 0.0000000 0.0000000 0.0000000 0.0000000 +70.0590100 0.0000000 0.0000000 0.0000000 0.0000000 +71.8427700 0.0000000 0.0000000 0.0000000 0.0000000 +50.4651500 0.0000000 0.0000000 0.0000000 0.0000000 +17.5162100 0.0000000 0.0000000 0.0000000 0.0000000 +13.8635900 0.0000000 0.0000000 0.0000000 0.0000000 +11.4670000 0.0000000 0.0000000 0.0000000 0.0000000 +14.1359600 0.0000000 0.0000000 0.0000000 0.0000000 +27.0013800 0.0000000 0.0000000 0.0000000 0.0000000 +58.2015500 0.0000000 0.0000000 0.0000000 0.0000000 +99.3332300 0.0000000 0.0000000 0.0000000 0.0000000 +116.9505000 0.0000000 0.0000000 0.0000000 0.0000000 +87.1665200 0.0000000 0.0000000 0.0000000 0.0000000 +59.9801400 0.0000000 0.0000000 0.0000000 0.0000000 +44.0118200 0.0000000 0.0000000 0.0000000 0.0000000 +28.3064400 0.0000000 0.0000000 0.0000000 0.0000000 +18.4483300 0.0000000 0.0000000 0.0000000 0.0000000 +15.7514600 0.0000000 0.0000000 0.0000000 0.0000000 +23.2148900 0.0000000 0.0000000 0.0000000 0.0000000 +63.2519000 0.0000000 0.0000000 0.0000000 0.0000000 +122.8757000 0.0000000 0.0000000 0.0000000 0.0000000 +159.3815000 0.0000000 0.0000000 0.0000000 0.0000000 +107.4253000 0.0000000 0.0000000 0.0000000 0.0000000 +104.1619000 0.0000000 0.0000000 0.0000000 0.0000000 +48.1259400 0.0000000 0.0000000 0.0000000 0.0000000 +42.6543500 0.0000000 0.0000000 0.0000000 0.0000000 +13.6000500 0.0000000 0.0000000 0.0000000 0.0000000 +7.1715720 0.0000000 0.0000000 0.0000000 0.0000000 +21.3679900 0.0000000 0.0000000 0.0000000 0.0000000 +78.9334300 0.0000000 0.0000000 0.0000000 0.0000000 +182.2746000 0.0000000 0.0000000 0.0000000 0.0000000 +194.4485000 0.0000000 0.0000000 0.0000000 0.0000000 +143.5360000 0.0000000 0.0000000 0.0000000 0.0000000 +118.6101000 0.0000000 0.0000000 0.0000000 0.0000000 +64.6159600 0.0000000 0.0000000 0.0000000 0.0000000 +12.9757800 0.0000000 0.0000000 0.0000000 0.0000000 +22.2453300 0.0000000 0.0000000 0.0000000 0.0000000 +24.7075200 0.0000000 0.0000000 0.0000000 0.0000000 +28.1045400 0.0000000 0.0000000 0.0000000 0.0000000 +56.9165100 0.0000000 0.0000000 0.0000000 0.0000000 +93.3444500 0.0000000 0.0000000 0.0000000 0.0000000 +126.8484000 0.0000000 0.0000000 0.0000000 0.0000000 +111.4046000 0.0000000 0.0000000 0.0000000 0.0000000 +88.5821600 0.0000000 0.0000000 0.0000000 0.0000000 +85.3931800 0.0000000 0.0000000 0.0000000 0.0000000 +38.5716000 0.0000000 0.0000000 0.0000000 0.0000000 +52.5054300 0.0000000 0.0000000 0.0000000 0.0000000 +22.6849600 0.0000000 0.0000000 0.0000000 0.0000000 +29.8208300 0.0000000 0.0000000 0.0000000 0.0000000 +28.9759600 0.0000000 0.0000000 0.0000000 0.0000000 +31.9008800 0.0000000 0.0000000 0.0000000 0.0000000 +54.0814400 0.0000000 0.0000000 0.0000000 0.0000000 +124.7143000 0.0000000 0.0000000 0.0000000 0.0000000 +159.1404000 0.0000000 0.0000000 0.0000000 0.0000000 +127.3744000 0.0000000 0.0000000 0.0000000 0.0000000 +100.5049000 0.0000000 0.0000000 0.0000000 0.0000000 +81.8057200 0.0000000 0.0000000 0.0000000 0.0000000 +27.1036800 0.0000000 0.0000000 0.0000000 0.0000000 +26.5695300 0.0000000 0.0000000 0.0000000 0.0000000 +9.5603100 0.0000000 0.0000000 0.0000000 0.0000000 +24.9834700 0.0000000 0.0000000 0.0000000 0.0000000 +66.8504900 0.0000000 0.0000000 0.0000000 0.0000000 +140.9012000 0.0000000 0.0000000 0.0000000 0.0000000 +174.3067000 0.0000000 0.0000000 0.0000000 0.0000000 +121.4614000 0.0000000 0.0000000 0.0000000 0.0000000 +118.5412000 0.0000000 0.0000000 0.0000000 0.0000000 +58.8262600 0.0000000 0.0000000 0.0000000 0.0000000 +19.6645700 0.0000000 0.0000000 0.0000000 0.0000000 +18.7595800 0.0000000 0.0000000 0.0000000 0.0000000 +13.7100200 0.0000000 0.0000000 0.0000000 0.0000000 +23.6470600 0.0000000 0.0000000 0.0000000 0.0000000 +60.1537000 0.0000000 0.0000000 0.0000000 0.0000000 +99.8869600 0.0000000 0.0000000 0.0000000 0.0000000 +117.1123000 0.0000000 0.0000000 0.0000000 0.0000000 +120.7331000 0.0000000 0.0000000 0.0000000 0.0000000 +91.8149300 0.0000000 0.0000000 0.0000000 0.0000000 +77.4846300 0.0000000 0.0000000 0.0000000 0.0000000 +34.4894300 0.0000000 0.0000000 0.0000000 0.0000000 +20.0033400 0.0000000 0.0000000 0.0000000 0.0000000 +24.7432000 0.0000000 0.0000000 0.0000000 0.0000000 +20.1675900 0.0000000 0.0000000 0.0000000 0.0000000 +23.8157000 0.0000000 0.0000000 0.0000000 0.0000000 +0.0000000 31.4848020 1.8510816 61.1185220 15.1195230 +0.0000000 63.0235290 17.3997540 108.6473000 23.2778640 +0.0000000 89.6490390 35.8613520 143.4367200 27.4432010 +0.0000000 94.3504790 40.4874460 148.2135100 27.4816440 +0.0000000 82.7339400 28.7053700 136.7625100 27.5661030 +0.0000000 63.0438490 8.7092070 117.3784900 27.7222650 +0.0000000 41.9084070 -13.3325960 97.1494110 28.1847030 +0.0000000 25.4306420 -29.9790530 80.8403370 28.2707720 +0.0000000 13.9844080 -41.3907610 69.3595760 28.2531560 +0.0000000 14.8882740 -40.4364050 70.2129520 28.2273950 +0.0000000 27.8979810 -27.3766250 83.1725870 28.2018480 +0.0000000 49.7852650 -5.4406619 105.0111900 28.1770110 +0.0000000 70.8004860 15.6194050 125.9815700 28.1541300 +0.0000000 83.0697780 27.9220460 138.2175100 28.1371150 +0.0000000 83.0085130 27.8770030 138.1400200 28.1288380 +0.0000000 72.0037060 16.8884570 127.1189500 28.1205410 +0.0000000 55.1633520 0.0639279 110.2627800 28.1124680 +0.0000000 37.6503180 -17.4333340 92.7339700 28.1044210 +0.0000000 25.0510430 -30.0174780 80.1195630 28.0967000 +0.0000000 21.1630520 -33.8908540 76.2169590 28.0892440 +0.0000000 27.5284980 -27.5107620 82.5677570 28.0817710 +0.0000000 41.7986650 -13.2259040 96.8232330 28.0742750 +0.0000000 58.7368970 3.7266508 113.7471400 28.0669680 +0.0000000 72.2330030 17.2341670 127.2318400 28.0611460 +0.0000000 77.7530030 22.7623210 132.7436900 28.0569860 +0.0000000 74.0157920 19.0318910 128.9996900 28.0535260 +0.0000000 62.8477370 7.8705108 117.8249600 28.0501210 +0.0000000 48.3854910 -6.5850171 103.3560000 28.0466930 +0.0000000 35.5052140 -19.4585680 90.4689960 28.0432610 +0.0000000 28.4429380 -26.5141250 83.4000000 28.0398330 +0.0000000 29.3889180 -25.5614090 84.3392450 28.0363960 +0.0000000 37.7774620 -17.1660830 92.7210060 28.0329360 +0.0000000 50.4822790 -4.4546141 105.4191700 28.0295420 +0.0000000 62.9729370 8.0419878 117.9038900 28.0265090 +0.0000000 71.0107400 16.0845720 125.9369100 28.0240700 +0.0000000 72.0955920 17.1733080 127.0178800 28.0220880 +0.0000000 66.2249580 11.3062430 121.1436700 28.0202670 +0.0000000 55.7103870 0.7952491 110.6255300 28.0184430 +0.0000000 44.2965600 -10.6149740 99.2080950 28.0166040 +0.0000000 35.8598250 -19.0481480 90.7677980 28.0147870 +0.0000000 33.1263160 -21.7781480 88.0307800 28.0129960 +0.0000000 36.7959480 -18.1049950 91.6968900 28.0112000 +0.0000000 45.3671240 -9.5302849 100.2645300 28.0093970 +0.0000000 55.7318540 0.8377923 110.6259200 28.0076890 +0.0000000 64.3047330 9.4135662 119.1959000 28.0062120 +0.0000000 68.2735480 13.3847730 123.1623200 28.0049920 +0.0000000 66.5136330 11.6269550 121.4003100 28.0039220 +0.0000000 59.8838900 4.9992620 114.7685200 28.0028760 +0.0000000 50.8412620 -4.0412819 105.7238000 28.0018120 +0.0000000 42.5446270 -12.3358520 97.4251060 28.0007590 +0.0000000 37.7651790 -17.1133090 92.6436660 27.9997430 +0.0000000 37.9696230 -16.9069130 92.8461590 27.9987470 +0.0000000 42.8783010 -11.9962670 97.7528690 27.9977430 +0.0000000 50.6315400 -4.2410809 105.5041600 27.9967500 +0.0000000 58.4879240 3.6170904 113.3587600 27.9958380 +0.0000000 63.7920060 8.9226977 118.6613100 27.9950590 +0.0000000 64.8692090 10.0012080 119.7372100 27.9943930 +0.0000000 61.5466670 6.6798941 116.4134400 27.9937660 +0.0000000 55.1434170 0.2778918 110.0089400 27.9931300 +0.0000000 47.9591940 -6.9050753 102.8234600 27.9924890 +0.0000000 42.4562040 -12.4068580 97.3192650 27.9918720 +0.0000000 40.4217560 -14.4401560 95.2836670 27.9912860 +0.0000000 42.3939400 -12.4668360 97.2547170 27.9907070 +0.0000000 47.5337700 -7.3258617 102.3934000 27.9901220 +0.0000000 53.9685690 -0.8899571 108.8271000 27.9895580 +0.0000000 59.4703160 4.6127767 114.3278500 27.9890550 +0.0000000 62.2242340 7.3675403 117.0809300 27.9886230 +0.0000000 61.4234410 6.5675102 116.2793700 27.9882340 +0.0000000 57.4966850 2.6415116 112.3518600 27.9878480 +0.0000000 51.9090100 -2.9453876 106.7634100 27.9874520 +0.0000000 46.6217160 -8.2319210 101.4753500 27.9870640 +0.0000000 43.4085840 -11.4443400 98.2615070 27.9867000 +0.0000000 43.2652130 -11.5870300 98.1174550 27.9863520 +0.0000000 46.1068180 -8.7447447 100.9583800 27.9860050 +0.0000000 50.8441520 -4.0067320 105.6950400 27.9856590 +0.0000000 55.7954810 0.9452331 110.6457300 27.9853340 +0.0000000 59.2806460 4.4309549 114.1303400 27.9850510 +0.0000000 60.1884180 5.3392149 115.0376200 27.9848020 +0.0000000 58.3266800 3.4779434 113.1754200 27.9845640 +0.0000000 54.4468480 -0.4014103 109.2951100 27.9843200 +0.0000000 49.9486890 -4.8990877 104.7964700 27.9840740 +0.0000000 46.3792360 -8.4680827 101.2265600 27.9838400 +0.0000000 44.9039650 -9.9429285 99.7508580 27.9836230 +0.0000000 45.9299740 -8.9165071 100.7764600 27.9834130 +0.0000000 49.0017880 -5.8442793 103.8478600 27.9832020 +0.0000000 52.9930360 -1.8526281 107.8387000 27.9829960 +0.0000000 56.5162980 1.6710007 111.3615900 27.9828090 +0.0000000 58.4031040 3.5581266 113.2480800 27.9826460 +0.0000000 58.0888840 3.2441985 112.9335700 27.9824960 +0.0000000 55.7770660 0.9326740 110.6214600 27.9823470 +0.0000000 52.3366470 -2.5074431 107.1807400 27.9821930 +0.0000000 48.9795230 -5.8642710 103.8233200 27.9820420 +0.0000000 46.8362120 -8.0073067 101.6797300 27.9819010 +0.0000000 46.5776780 -8.2655840 101.4209400 27.9817700 +0.0000000 48.2089350 -6.6340737 103.0519400 27.9816410 +0.0000000 51.0966030 -3.7461536 105.9393600 27.9815120 +0.0000000 54.2108270 -0.6316910 109.0533400 27.9813910 +0.0000000 56.4904620 1.6481558 111.3327700 27.9812830 +0.0000000 57.2027790 2.3606596 112.0449000 27.9811870 +0.0000000 56.1764620 1.3345231 111.0184000 27.9810950 +0.0000000 53.8348010 -1.0069512 108.6765500 27.9810000 +0.0000000 51.0266380 -3.8149243 105.8682000 27.9809030 +0.0000000 48.7210450 -6.1203380 103.5624300 27.9808120 +0.0000000 47.6748050 -7.1664125 102.5160200 27.9807270 +0.0000000 48.1861910 -6.6548697 103.0272500 27.9806470 +0.0000000 50.0143780 -4.8265260 104.8552800 27.9805670 +0.0000000 52.4844480 -2.3563031 107.3252000 27.9804890 +0.0000000 54.7343620 -0.1062499 109.5749700 27.9804180 +0.0000000 56.0142720 1.1737832 110.8547600 27.9803550 +0.0000000 55.9348080 1.0944315 110.7751800 27.9802980 +0.0000000 54.5827200 -0.2575423 109.4229800 27.9802400 +0.0000000 52.4706790 -2.3694654 107.3108200 27.9801790 +0.0000000 50.3454460 -4.4945815 105.1854700 27.9801200 +0.0000000 48.9254290 -5.9144895 103.7653500 27.9800640 +0.0000000 48.6593370 -6.1804815 103.4991600 27.9800130 +0.0000000 49.5865020 -5.2532189 104.4262200 27.9799640 diff --git a/statsmodels/tsa/tests/results/AROLSNoConstantPredict.csv b/statsmodels/tsa/tests/results/AROLSNoConstantPredict.csv new file mode 100644 index 0000000..b4cf1fd --- /dev/null +++ b/statsmodels/tsa/tests/results/AROLSNoConstantPredict.csv @@ -0,0 +1,416 @@ + 7.689620 0.000000 0.000000 0.000000 0.000000 + 6.004791 0.000000 0.000000 0.000000 0.000000 + 5.425601 0.000000 0.000000 0.000000 0.000000 + 4.957486 0.000000 0.000000 0.000000 0.000000 + 7.321750 0.000000 0.000000 0.000000 0.000000 +17.401620 0.000000 0.000000 0.000000 0.000000 +19.274520 0.000000 0.000000 0.000000 0.000000 +32.805440 0.000000 0.000000 0.000000 0.000000 +46.143310 0.000000 0.000000 0.000000 0.000000 +55.631590 0.000000 0.000000 0.000000 0.000000 +43.166180 0.000000 0.000000 0.000000 0.000000 +18.145830 0.000000 0.000000 0.000000 0.000000 +15.618330 0.000000 0.000000 0.000000 0.000000 +20.297310 0.000000 0.000000 0.000000 0.000000 +17.524220 0.000000 0.000000 0.000000 0.000000 + 9.993097 0.000000 0.000000 0.000000 0.000000 +31.326560 0.000000 0.000000 0.000000 0.000000 +54.473470 0.000000 0.000000 0.000000 0.000000 +89.360760 0.000000 0.000000 0.000000 0.000000 +121.006400 0.000000 0.000000 0.000000 0.000000 +73.355040 0.000000 0.000000 0.000000 0.000000 +42.213860 0.000000 0.000000 0.000000 0.000000 +31.141240 0.000000 0.000000 0.000000 0.000000 +23.112790 0.000000 0.000000 0.000000 0.000000 + 4.384809 0.000000 0.000000 0.000000 0.000000 +11.543890 0.000000 0.000000 0.000000 0.000000 +36.350050 0.000000 0.000000 0.000000 0.000000 +62.996840 0.000000 0.000000 0.000000 0.000000 +93.460470 0.000000 0.000000 0.000000 0.000000 +84.112950 0.000000 0.000000 0.000000 0.000000 +104.031300 0.000000 0.000000 0.000000 0.000000 +81.106540 0.000000 0.000000 0.000000 0.000000 +40.482380 0.000000 0.000000 0.000000 0.000000 +17.179010 0.000000 0.000000 0.000000 0.000000 +10.822290 0.000000 0.000000 0.000000 0.000000 +18.809490 0.000000 0.000000 0.000000 0.000000 +18.155790 0.000000 0.000000 0.000000 0.000000 +29.335160 0.000000 0.000000 0.000000 0.000000 +49.751500 0.000000 0.000000 0.000000 0.000000 +61.548490 0.000000 0.000000 0.000000 0.000000 +72.011430 0.000000 0.000000 0.000000 0.000000 +79.355620 0.000000 0.000000 0.000000 0.000000 +66.925320 0.000000 0.000000 0.000000 0.000000 +22.081080 0.000000 0.000000 0.000000 0.000000 +35.481060 0.000000 0.000000 0.000000 0.000000 +21.489370 0.000000 0.000000 0.000000 0.000000 + 3.318968 0.000000 0.000000 0.000000 0.000000 +18.174590 0.000000 0.000000 0.000000 0.000000 +23.336400 0.000000 0.000000 0.000000 0.000000 +51.894910 0.000000 0.000000 0.000000 0.000000 +65.524450 0.000000 0.000000 0.000000 0.000000 +52.421560 0.000000 0.000000 0.000000 0.000000 +61.993100 0.000000 0.000000 0.000000 0.000000 +82.126050 0.000000 0.000000 0.000000 0.000000 +37.100900 0.000000 0.000000 0.000000 0.000000 +26.035300 0.000000 0.000000 0.000000 0.000000 +28.474180 0.000000 0.000000 0.000000 0.000000 +15.428200 0.000000 0.000000 0.000000 0.000000 +15.867260 0.000000 0.000000 0.000000 0.000000 +55.663350 0.000000 0.000000 0.000000 0.000000 +81.614450 0.000000 0.000000 0.000000 0.000000 +114.986800 0.000000 0.000000 0.000000 0.000000 +87.678880 0.000000 0.000000 0.000000 0.000000 +59.286430 0.000000 0.000000 0.000000 0.000000 +51.940800 0.000000 0.000000 0.000000 0.000000 +17.890350 0.000000 0.000000 0.000000 0.000000 +23.135940 0.000000 0.000000 0.000000 0.000000 + 7.577013 0.000000 0.000000 0.000000 0.000000 +34.354690 0.000000 0.000000 0.000000 0.000000 +130.996500 0.000000 0.000000 0.000000 0.000000 +168.541600 0.000000 0.000000 0.000000 0.000000 +95.868110 0.000000 0.000000 0.000000 0.000000 +57.240250 0.000000 0.000000 0.000000 0.000000 +52.791830 0.000000 0.000000 0.000000 0.000000 +23.601930 0.000000 0.000000 0.000000 0.000000 +13.023410 0.000000 0.000000 0.000000 0.000000 +10.448340 0.000000 0.000000 0.000000 0.000000 +43.775790 0.000000 0.000000 0.000000 0.000000 +127.275600 0.000000 0.000000 0.000000 0.000000 +153.095800 0.000000 0.000000 0.000000 0.000000 +113.739300 0.000000 0.000000 0.000000 0.000000 +96.326570 0.000000 0.000000 0.000000 0.000000 +63.625530 0.000000 0.000000 0.000000 0.000000 +43.469390 0.000000 0.000000 0.000000 0.000000 +47.283540 0.000000 0.000000 0.000000 0.000000 +36.297290 0.000000 0.000000 0.000000 0.000000 +46.146390 0.000000 0.000000 0.000000 0.000000 +40.480000 0.000000 0.000000 0.000000 0.000000 +40.069370 0.000000 0.000000 0.000000 0.000000 +31.248850 0.000000 0.000000 0.000000 0.000000 +23.891420 0.000000 0.000000 0.000000 0.000000 +23.501190 0.000000 0.000000 0.000000 0.000000 +29.364930 0.000000 0.000000 0.000000 0.000000 +45.096210 0.000000 0.000000 0.000000 0.000000 +49.273240 0.000000 0.000000 0.000000 0.000000 +34.802510 0.000000 0.000000 0.000000 0.000000 +40.915100 0.000000 0.000000 0.000000 0.000000 +31.065760 0.000000 0.000000 0.000000 0.000000 +14.367250 0.000000 0.000000 0.000000 0.000000 + 1.804234 0.000000 0.000000 0.000000 0.000000 + 8.835206 0.000000 0.000000 0.000000 0.000000 + 8.402061 0.000000 0.000000 0.000000 0.000000 + 9.629216 0.000000 0.000000 0.000000 0.000000 +12.920300 0.000000 0.000000 0.000000 0.000000 +16.771150 0.000000 0.000000 0.000000 0.000000 +22.331190 0.000000 0.000000 0.000000 0.000000 +18.667200 0.000000 0.000000 0.000000 0.000000 +37.767020 0.000000 0.000000 0.000000 0.000000 +41.882580 0.000000 0.000000 0.000000 0.000000 +27.103370 0.000000 0.000000 0.000000 0.000000 +17.177550 0.000000 0.000000 0.000000 0.000000 +15.418280 0.000000 0.000000 0.000000 0.000000 + 8.982916 0.000000 0.000000 0.000000 0.000000 + 4.529599 0.000000 0.000000 0.000000 0.000000 + 5.504591 0.000000 0.000000 0.000000 0.000000 + 9.148726 0.000000 0.000000 0.000000 0.000000 +20.198970 0.000000 0.000000 0.000000 0.000000 +26.931780 0.000000 0.000000 0.000000 0.000000 +42.766720 0.000000 0.000000 0.000000 0.000000 +49.061860 0.000000 0.000000 0.000000 0.000000 +57.016170 0.000000 0.000000 0.000000 0.000000 +52.606090 0.000000 0.000000 0.000000 0.000000 +54.367550 0.000000 0.000000 0.000000 0.000000 +25.688210 0.000000 0.000000 0.000000 0.000000 +12.034550 0.000000 0.000000 0.000000 0.000000 + 3.305187 0.000000 0.000000 0.000000 0.000000 +21.011930 0.000000 0.000000 0.000000 0.000000 +75.704860 0.000000 0.000000 0.000000 0.000000 +136.711200 0.000000 0.000000 0.000000 0.000000 +124.734400 0.000000 0.000000 0.000000 0.000000 +74.031550 0.000000 0.000000 0.000000 0.000000 +65.861300 0.000000 0.000000 0.000000 0.000000 +47.572200 0.000000 0.000000 0.000000 0.000000 +16.441790 0.000000 0.000000 0.000000 0.000000 +18.148870 0.000000 0.000000 0.000000 0.000000 +16.623240 0.000000 0.000000 0.000000 0.000000 +40.576450 0.000000 0.000000 0.000000 0.000000 +77.499090 0.000000 0.000000 0.000000 0.000000 +80.886280 0.000000 0.000000 0.000000 0.000000 +109.288900 0.000000 0.000000 0.000000 0.000000 +121.453700 0.000000 0.000000 0.000000 0.000000 +64.911840 0.000000 0.000000 0.000000 0.000000 +39.473610 0.000000 0.000000 0.000000 0.000000 +52.489780 0.000000 0.000000 0.000000 0.000000 +39.722890 0.000000 0.000000 0.000000 0.000000 +31.693130 0.000000 0.000000 0.000000 0.000000 +23.593740 0.000000 0.000000 0.000000 0.000000 +21.123080 0.000000 0.000000 0.000000 0.000000 +33.064480 0.000000 0.000000 0.000000 0.000000 +50.714550 0.000000 0.000000 0.000000 0.000000 +72.220150 0.000000 0.000000 0.000000 0.000000 +102.731100 0.000000 0.000000 0.000000 0.000000 +84.456970 0.000000 0.000000 0.000000 0.000000 +55.426090 0.000000 0.000000 0.000000 0.000000 +40.969440 0.000000 0.000000 0.000000 0.000000 +28.233020 0.000000 0.000000 0.000000 0.000000 +38.020170 0.000000 0.000000 0.000000 0.000000 +22.908290 0.000000 0.000000 0.000000 0.000000 +16.652440 0.000000 0.000000 0.000000 0.000000 +25.325070 0.000000 0.000000 0.000000 0.000000 +65.198790 0.000000 0.000000 0.000000 0.000000 +92.359810 0.000000 0.000000 0.000000 0.000000 +146.327400 0.000000 0.000000 0.000000 0.000000 +80.990780 0.000000 0.000000 0.000000 0.000000 +75.166020 0.000000 0.000000 0.000000 0.000000 +45.409550 0.000000 0.000000 0.000000 0.000000 +24.722610 0.000000 0.000000 0.000000 0.000000 + 5.078195 0.000000 0.000000 0.000000 0.000000 +16.710680 0.000000 0.000000 0.000000 0.000000 +26.986680 0.000000 0.000000 0.000000 0.000000 +33.214370 0.000000 0.000000 0.000000 0.000000 +31.685590 0.000000 0.000000 0.000000 0.000000 +62.645050 0.000000 0.000000 0.000000 0.000000 +66.380240 0.000000 0.000000 0.000000 0.000000 +56.948010 0.000000 0.000000 0.000000 0.000000 +52.834800 0.000000 0.000000 0.000000 0.000000 +49.328740 0.000000 0.000000 0.000000 0.000000 +35.998940 0.000000 0.000000 0.000000 0.000000 + 8.056849 0.000000 0.000000 0.000000 0.000000 + 5.590196 0.000000 0.000000 0.000000 0.000000 +11.333730 0.000000 0.000000 0.000000 0.000000 +17.695900 0.000000 0.000000 0.000000 0.000000 +21.053320 0.000000 0.000000 0.000000 0.000000 +54.836870 0.000000 0.000000 0.000000 0.000000 +87.348810 0.000000 0.000000 0.000000 0.000000 +80.537830 0.000000 0.000000 0.000000 0.000000 +59.032170 0.000000 0.000000 0.000000 0.000000 +44.106630 0.000000 0.000000 0.000000 0.000000 +22.033150 0.000000 0.000000 0.000000 0.000000 +14.627780 0.000000 0.000000 0.000000 0.000000 +23.682510 0.000000 0.000000 0.000000 0.000000 +11.420180 0.000000 0.000000 0.000000 0.000000 +22.216620 0.000000 0.000000 0.000000 0.000000 +21.582670 0.000000 0.000000 0.000000 0.000000 +22.578440 0.000000 0.000000 0.000000 0.000000 +43.750480 0.000000 0.000000 0.000000 0.000000 +50.512910 0.000000 0.000000 0.000000 0.000000 +61.622790 0.000000 0.000000 0.000000 0.000000 +42.628390 0.000000 0.000000 0.000000 0.000000 +49.993120 0.000000 0.000000 0.000000 0.000000 +34.472370 0.000000 0.000000 0.000000 0.000000 +29.121220 0.000000 0.000000 0.000000 0.000000 + 5.547792 0.000000 0.000000 0.000000 0.000000 + 3.250177 0.000000 0.000000 0.000000 0.000000 +13.035770 0.000000 0.000000 0.000000 0.000000 +16.575800 0.000000 0.000000 0.000000 0.000000 +23.307680 0.000000 0.000000 0.000000 0.000000 +68.966940 0.000000 0.000000 0.000000 0.000000 +58.557240 0.000000 0.000000 0.000000 0.000000 +106.181000 0.000000 0.000000 0.000000 0.000000 +57.205740 0.000000 0.000000 0.000000 0.000000 +33.891700 0.000000 0.000000 0.000000 0.000000 +21.142570 0.000000 0.000000 0.000000 0.000000 +13.938960 0.000000 0.000000 0.000000 0.000000 + 8.229635 0.000000 0.000000 0.000000 0.000000 +14.162580 0.000000 0.000000 0.000000 0.000000 +29.813780 0.000000 0.000000 0.000000 0.000000 +72.273410 0.000000 0.000000 0.000000 0.000000 +75.514260 0.000000 0.000000 0.000000 0.000000 +68.336410 0.000000 0.000000 0.000000 0.000000 +70.150220 0.000000 0.000000 0.000000 0.000000 +48.714730 0.000000 0.000000 0.000000 0.000000 +15.374670 0.000000 0.000000 0.000000 0.000000 +11.739300 0.000000 0.000000 0.000000 0.000000 + 9.280053 0.000000 0.000000 0.000000 0.000000 +12.013810 0.000000 0.000000 0.000000 0.000000 +24.835940 0.000000 0.000000 0.000000 0.000000 +56.146220 0.000000 0.000000 0.000000 0.000000 +98.148690 0.000000 0.000000 0.000000 0.000000 +116.355200 0.000000 0.000000 0.000000 0.000000 +86.263710 0.000000 0.000000 0.000000 0.000000 +59.270300 0.000000 0.000000 0.000000 0.000000 +43.718150 0.000000 0.000000 0.000000 0.000000 +28.217010 0.000000 0.000000 0.000000 0.000000 +18.368270 0.000000 0.000000 0.000000 0.000000 +15.649150 0.000000 0.000000 0.000000 0.000000 +23.125350 0.000000 0.000000 0.000000 0.000000 +63.710110 0.000000 0.000000 0.000000 0.000000 +124.041600 0.000000 0.000000 0.000000 0.000000 +161.256000 0.000000 0.000000 0.000000 0.000000 +108.648300 0.000000 0.000000 0.000000 0.000000 +106.209800 0.000000 0.000000 0.000000 0.000000 +49.756980 0.000000 0.000000 0.000000 0.000000 +44.816780 0.000000 0.000000 0.000000 0.000000 +15.335370 0.000000 0.000000 0.000000 0.000000 + 8.570750 0.000000 0.000000 0.000000 0.000000 +22.960610 0.000000 0.000000 0.000000 0.000000 +81.483880 0.000000 0.000000 0.000000 0.000000 +186.143200 0.000000 0.000000 0.000000 0.000000 +198.913500 0.000000 0.000000 0.000000 0.000000 +147.120400 0.000000 0.000000 0.000000 0.000000 +123.036300 0.000000 0.000000 0.000000 0.000000 +68.618580 0.000000 0.000000 0.000000 0.000000 +16.646950 0.000000 0.000000 0.000000 0.000000 +26.184930 0.000000 0.000000 0.000000 0.000000 +28.390300 0.000000 0.000000 0.000000 0.000000 +32.147380 0.000000 0.000000 0.000000 0.000000 +60.598240 0.000000 0.000000 0.000000 0.000000 +96.052630 0.000000 0.000000 0.000000 0.000000 +129.026000 0.000000 0.000000 0.000000 0.000000 +112.471800 0.000000 0.000000 0.000000 0.000000 +88.666210 0.000000 0.000000 0.000000 0.000000 +86.028050 0.000000 0.000000 0.000000 0.000000 +38.856760 0.000000 0.000000 0.000000 0.000000 +53.510020 0.000000 0.000000 0.000000 0.000000 +23.255470 0.000000 0.000000 0.000000 0.000000 +30.740630 0.000000 0.000000 0.000000 0.000000 +29.992090 0.000000 0.000000 0.000000 0.000000 +32.106240 0.000000 0.000000 0.000000 0.000000 +53.864730 0.000000 0.000000 0.000000 0.000000 +125.634000 0.000000 0.000000 0.000000 0.000000 +160.492100 0.000000 0.000000 0.000000 0.000000 +129.136600 0.000000 0.000000 0.000000 0.000000 +102.486400 0.000000 0.000000 0.000000 0.000000 +84.692280 0.000000 0.000000 0.000000 0.000000 +29.464410 0.000000 0.000000 0.000000 0.000000 +29.397720 0.000000 0.000000 0.000000 0.000000 +11.770590 0.000000 0.000000 0.000000 0.000000 +27.493590 0.000000 0.000000 0.000000 0.000000 +70.012430 0.000000 0.000000 0.000000 0.000000 +144.564800 0.000000 0.000000 0.000000 0.000000 +178.274800 0.000000 0.000000 0.000000 0.000000 +124.404800 0.000000 0.000000 0.000000 0.000000 +121.668400 0.000000 0.000000 0.000000 0.000000 +61.387560 0.000000 0.000000 0.000000 0.000000 +21.726410 0.000000 0.000000 0.000000 0.000000 +21.037120 0.000000 0.000000 0.000000 0.000000 +15.430530 0.000000 0.000000 0.000000 0.000000 +25.636250 0.000000 0.000000 0.000000 0.000000 +62.497190 0.000000 0.000000 0.000000 0.000000 +101.548100 0.000000 0.000000 0.000000 0.000000 +118.717200 0.000000 0.000000 0.000000 0.000000 +121.757000 0.000000 0.000000 0.000000 0.000000 +92.267960 0.000000 0.000000 0.000000 0.000000 +78.211730 0.000000 0.000000 0.000000 0.000000 +34.982700 0.000000 0.000000 0.000000 0.000000 +20.486940 0.000000 0.000000 0.000000 0.000000 +25.476760 0.000000 0.000000 0.000000 0.000000 +20.886050 0.000000 0.000000 0.000000 0.000000 +24.096840 2.900000 0.000000 0.000000 0.000000 + 0.000000 31.170699 1.202378 61.139021 15.290241 + 0.000000 61.821348 15.044909 108.597790 23.865969 + 0.000000 87.520577 31.517249 143.523910 28.573652 + 0.000000 91.001156 34.509773 147.492540 28.822663 + 0.000000 78.311920 21.856670 134.767170 28.804228 + 0.000000 58.041846 1.624501 114.459190 28.784889 + 0.000000 36.859904 -22.344434 96.064243 30.206850 + 0.000000 20.682433 -39.923716 81.288582 30.922073 + 0.000000 9.414619 -51.607721 70.436958 31.134419 + 0.000000 10.536909 -50.551192 71.625010 31.167971 + 0.000000 23.609196 -37.460546 84.678937 31.158604 + 0.000000 45.436093 -15.608040 106.480230 31.145538 + 0.000000 65.975242 4.957875 126.992610 31.131881 + 0.000000 77.322243 16.326538 138.317950 31.120830 + 0.000000 76.093381 15.109016 137.077750 31.115043 + 0.000000 64.046504 3.073681 125.019330 31.109155 + 0.000000 46.626604 -14.336095 107.589300 31.103989 + 0.000000 28.966982 -31.985799 89.919764 31.098930 + 0.000000 16.580093 -44.362994 77.523181 31.093983 + 0.000000 13.078490 -47.855234 74.012214 31.089206 + 0.000000 19.894224 -41.030085 80.818534 31.084403 + 0.000000 34.471178 -26.443709 95.386066 31.079595 + 0.000000 51.359743 -9.545609 112.265090 31.074730 + 0.000000 64.316329 3.419463 125.213200 31.070401 + 0.000000 68.868920 7.978960 129.758880 31.066877 + 0.000000 64.014070 3.130481 124.897660 31.063627 + 0.000000 51.886756 -8.990393 112.763900 31.060341 + 0.000000 36.861263 -24.009398 97.731924 31.057030 + 0.000000 23.883580 -36.980563 84.747722 31.053705 + 0.000000 17.137469 -43.720129 77.995066 31.050365 + 0.000000 18.646278 -42.204727 79.497282 31.047001 + 0.000000 27.602904 -33.241431 88.447240 31.043599 + 0.000000 40.615462 -20.222167 101.453090 31.040177 + 0.000000 52.952878 -7.878302 113.784060 31.036886 + 0.000000 60.339198 -0.486117 121.164510 31.033894 + 0.000000 60.419661 -0.400270 121.239590 31.031147 + 0.000000 53.468188 -7.346521 114.282900 31.028483 + 0.000000 42.088274 -18.721200 102.897750 31.025812 + 0.000000 30.236143 -30.568057 91.040344 31.023121 + 0.000000 21.855750 -38.943150 82.654650 31.020417 + 0.000000 19.583887 -41.209679 80.377453 31.017696 + 0.000000 23.900820 -36.887359 84.689000 31.014947 + 0.000000 33.019388 -27.763374 93.802149 31.012183 + 0.000000 43.574795 -17.202652 104.352240 31.009471 + 0.000000 51.844501 -8.927918 112.616920 31.006906 + 0.000000 55.052211 -5.715525 115.819950 31.004517 + 0.000000 52.268265 -8.495018 113.031550 31.002245 + 0.000000 44.634994 -16.123911 105.393900 31.000011 + 0.000000 34.881416 -25.873096 95.635928 30.997770 + 0.000000 26.336729 -34.413360 87.086819 30.995513 + 0.000000 21.786647 -38.958992 82.532286 30.993243 + 0.000000 22.553079 -38.188072 83.294230 30.990952 + 0.000000 28.100589 -32.636040 88.837218 30.988645 + 0.000000 36.288440 -24.443699 97.020578 30.986354 + 0.000000 44.165322 -16.562476 104.893120 30.984140 + 0.000000 49.009433 -11.714260 109.733130 30.982045 + 0.000000 49.245451 -11.474354 109.965260 30.980062 + 0.000000 44.929072 -15.786966 105.645110 30.978140 + 0.000000 37.657015 -23.055283 98.369313 30.976232 + 0.000000 29.960771 -30.747769 90.669312 30.974314 + 0.000000 24.410826 -36.293932 85.115583 30.972384 + 0.000000 22.744463 -37.956483 83.445408 30.970439 + 0.000000 25.310054 -35.387049 86.007157 30.968479 + 0.000000 31.004958 -29.688302 91.698218 30.966518 + 0.000000 37.709426 -22.980063 98.398914 30.964594 + 0.000000 43.049204 -17.636662 103.735070 30.962745 + 0.000000 45.212829 -15.469590 105.895250 30.960987 + 0.000000 43.542931 -17.136176 104.222040 30.959297 + 0.000000 38.710600 -21.965256 99.386455 30.957638 + 0.000000 32.431979 -28.240629 93.104588 30.955981 + 0.000000 26.842745 -33.826599 87.512089 30.954316 + 0.000000 23.756374 -36.909683 84.422430 30.952638 + 0.000000 24.062184 -36.600561 84.724929 30.950949 + 0.000000 27.461590 -33.197831 88.121011 30.949253 + 0.000000 32.618538 -28.037588 93.274663 30.947571 + 0.000000 37.656119 -22.996798 98.309035 30.945934 + 0.000000 40.816274 -19.833563 101.466110 30.944363 + 0.000000 41.051592 -19.595288 101.698470 30.942854 + 0.000000 38.351113 -22.292889 98.995115 30.941386 + 0.000000 33.700816 -26.940336 94.341968 30.939932 + 0.000000 28.707573 -31.930725 89.345871 30.938476 + 0.000000 25.028123 -35.607306 85.663551 30.937012 + 0.000000 23.804815 -36.827725 84.437355 30.935538 + 0.000000 25.299261 -35.330376 85.928899 30.934057 + 0.000000 28.840073 -31.786670 89.466816 30.932580 + 0.000000 33.089470 -27.534424 93.713364 30.931126 + 0.000000 36.525031 -24.096100 97.146163 30.929717 + 0.000000 37.964081 -22.654389 98.582551 30.928359 + 0.000000 36.950931 -23.664960 97.566821 30.927043 + 0.000000 33.881273 -26.732082 94.494628 30.925749 + 0.000000 29.832497 -30.778334 90.443328 30.924462 + 0.000000 26.169729 -34.438571 86.778029 30.923170 + 0.000000 24.070613 -36.535144 84.676370 30.921873 + 0.000000 24.133438 -36.469764 84.736639 30.920569 + 0.000000 26.198151 -34.402493 86.798796 30.919264 + 0.000000 29.432186 -31.165925 90.030296 30.917971 + 0.000000 32.640961 -27.954669 93.236591 30.916706 + 0.000000 34.688352 -25.904873 95.281576 30.915479 + 0.000000 34.879833 -25.711062 95.470727 30.914290 + 0.000000 33.179822 -27.408793 93.768438 30.913127 + 0.000000 30.196365 -30.389996 90.782726 30.911977 + 0.000000 26.948026 -33.636084 87.532136 30.910828 + 0.000000 24.501160 -36.080693 85.083013 30.909677 + 0.000000 23.606034 -36.973553 84.185621 30.908521 + 0.000000 24.455337 -36.121981 85.032655 30.907363 + 0.000000 26.641956 -33.933101 87.217014 30.906210 + 0.000000 29.322066 -31.250764 89.894895 30.905073 + 0.000000 31.519650 -29.051004 92.090305 30.903963 + 0.000000 32.463237 -28.105303 93.031777 30.902884 + 0.000000 31.839208 -28.727270 92.405686 30.901832 + 0.000000 29.879206 -30.685242 90.443654 30.900796 + 0.000000 27.258857 -33.303574 87.821288 30.899767 + 0.000000 24.850028 -35.710387 85.410443 30.898739 + 0.000000 23.416781 -37.141614 83.975175 30.897708 + 0.000000 23.360550 -37.195821 83.916920 30.896675 + 0.000000 24.598973 -35.955377 85.153324 30.895644 diff --git a/statsmodels/tsa/tests/results/__init__.py b/statsmodels/tsa/tests/results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/tests/results/arima.R b/statsmodels/tsa/tests/results/arima.R new file mode 100644 index 0000000..1452ff0 --- /dev/null +++ b/statsmodels/tsa/tests/results/arima.R @@ -0,0 +1,21 @@ +dta <- read.csv("/home/skipper/statsmodels/statsmodels-skipper/statsmodels/datasets/macrodata/macrodata.csv") + +cpi <- dta$cpi + +/* this automatically suppresses the constant */ +mod111 <- arima(cpi, order=c(1,1,1), method="CSS") +/*you can use xreg=1:length(cpi)*/ + +dcpi <- diff(cpi) + +mod111 <- arima(dcpi, order=c(1,0,1), method="CSS") +bse <- sqrt(diag(mod111$var.coef)) +tvalues <- mod111$coef / bse +pvalues <- (1 - pt(abs(tvalues), 198)) * 2 + +/* use starting values from X-ARIMA */ +mod112 <- arima(dcpi, order=c(1,0,2), method="CSS", init=c(-0.692425, 1.07366, 0.172024, 0.905322)) +bse <- sqrt(diag(mod112$var.coef)) +tvalues <- mod112$coef / bse +pvalues <- (1 - pt(abs(tvalues), 198)) * 2 + diff --git a/statsmodels/tsa/tests/results/arima111_css_results.py b/statsmodels/tsa/tests/results/arima111_css_results.py new file mode 100644 index 0000000..14e9910 --- /dev/null +++ b/statsmodels/tsa/tests/results/arima111_css_results.py @@ -0,0 +1,1305 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + +llf = np.array([-242.06033399744]) + +nobs = np.array([202]) + +k = np.array([4]) + +k_exog = np.array([1]) + +sigma = np.array([.80201496146073]) + +chi2 = np.array([348.43324197088]) + +df_model = np.array([2]) + +k_ar = np.array([1]) + +k_ma = np.array([1]) + +params = np.array([ + .82960638524364, + .93479332833705, + -.75728342544279, + .64322799840686]) + +cov_params = np.array([ + .14317811930738, + -.01646077810033, + .01510986837498, + -.00280799533479, + -.01646077810033, + .00321032468661, + -.00353027620719, + .00097645385252, + .01510986837498, + -.00353027620719, + .00484312817753, + -.00112050648944, + -.00280799533479, + .00097645385252, + -.00112050648944, + .0007715609499]).reshape(4, 4) + +xb = np.array([ + .82960641384125, + .82960641384125, + .697261095047, + .61113905906677, + .51607495546341, + .47362637519836, + .41342103481293, + .40238001942635, + .37454023957253, + .33222004771233, + .32514902949333, + .31093680858612, + .30019253492355, + .31159669160843, + .29182952642441, + .30349296331406, + .29457464814186, + .28427124023438, + .30664679408073, + .29696446657181, + .31270903348923, + .29268020391464, + .28816330432892, + .29006817936897, + .30216124653816, + .30066826939583, + .31728908419609, + .30679926276207, + .3272570669651, + .37292611598969, + .36668366193771, + .40278288722038, + .36799272894859, + .36827209591866, + .38623574376106, + .39983862638474, + .42789059877396, + .43138384819031, + .46953064203262, + .48066720366478, + .48910140991211, + .53098994493484, + .54496067762375, + .55554050207138, + .58130383491516, + .60081332921982, + .58008605241776, + .58214038610458, + .58369606733322, + .53162068128586, + .54543834924698, + .52040082216263, + .50143963098526, + .48708060383797, + .47620677947998, + .48572361469269, + .51068127155304, + .61833620071411, + .61110657453537, + .76539021730423, + .84672522544861, + .92606955766678, + .96840506792068, + 1.0892199277878, + 1.1097067594528, + 1.0187155008316, + 1.0030621290207, + .97345739603043, + .95103752613068, + .82755368947983, + .84054774045944, + .85038793087006, + .84008830785751, + .92104357481003, + .89359468221664, + .87280809879303, + .91032028198242, + .95647835731506, + 1.0624366998672, + 1.1426770687103, + 1.1679404973984, + 1.311328291893, + 1.473167181015, + 1.5602221488953, + 1.7326545715332, + 1.8809853792191, + 1.7803012132645, + 1.7750589847565, + 1.8420933485031, + 1.7863517999649, + 1.8328944444656, + 1.7793855667114, + 1.5791050195694, + 1.3564316034317, + 1.5250737667084, + 1.3155146837234, + 1.014811873436, + .98235523700714, + .97552710771561, + .97035628557205, + 1.0196926593781, + 1.0393049716949, + .98315137624741, + .97613000869751, + .89980864524841, + .96626943349838, + .91009211540222, + .88530200719833, + .97303456068039, + .57794612646103, + .63377332687378, + .65829831361771, + .76562696695328, + .86465454101563, + .90414637327194, + .95180231332779, + .95238989591599, + .98833626508713, + 1.0333099365234, + 1.0851185321808, + 1.1066001653671, + 1.2293750047684, + 1.233595252037, + 1.1480363607407, + 1.2962552309036, + 1.2842413187027, + 1.3106474876404, + 1.5614050626755, + 1.4672855138779, + 1.2362524271011, + 1.1855486631393, + 1.1294020414352, + 1.1046353578568, + 1.0858771800995, + 1.0716745853424, + 1.0786685943604, + 1.0662157535553, + 1.0390332937241, + .96519494056702, + .9802839756012, + .92070508003235, + .91108840703964, + .95705932378769, + .95637094974518, + .97360169887543, + 1.0221517086029, + .9701629281044, + .94854199886322, + .98542231321335, + 1.048855304718, + 1.0081344842911, + 1.0305507183075, + 1.0475262403488, + .93612504005432, + .85176283121109, + .89438372850418, + .820152759552, + .71068543195724, + .76979607343674, + .76130604743958, + .77262878417969, + .85220617055893, + .84146595001221, + .93983960151672, + .97883212566376, + 1.0793634653091, + 1.1909983158112, + 1.1690304279327, + 1.2411522865295, + 1.1360056400299, + 1.0918840169907, + .9164656996727, + .76586949825287, + .918093085289, + .87360894680023, + .92867678403854, + 1.00588285923, + .92233866453171, + .84132260084152, + .90422683954239, + .9873673915863, + .99707210063934, + 1.1109310388565, + 1.1971517801285, + 1.138188958168, + 1.2710473537445, + 1.1763968467712, + 1.7437561750412, + 1.4101150035858, + 1.3527159690857, + 1.4335050582886, + .99765706062317, + 1.1067585945129, + 1.3086627721786, + 1.2968333959579, + 1.3547962903976, + 1.6768488883972, + 1.5905654430389, + 2.0774590969086, + 1.3218278884888, + .21813294291496, + .30750840902328, + .60612773895264]) + +y = np.array([ + np.nan, + 29.809606552124, + 29.847261428833, + 29.961139678955, + 29.886075973511, + 30.013628005981, + 29.96342086792, + 30.152379989624, + 30.214540481567, + 30.142219543457, + 30.245149612427, + 30.290935516357, + 30.3401927948, + 30.521595001221, + 30.511829376221, + 30.683492660522, + 30.734575271606, + 30.764270782471, + 30.996646881104, + 31.046964645386, + 31.252710342407, + 31.242681503296, + 31.308164596558, + 31.410068511963, + 31.582162857056, + 31.680667877197, + 31.897289276123, + 31.956798553467, + 32.207256317139, + 32.652923583984, + 32.8166847229, + 33.252780914307, + 33.267993927002, + 33.468269348145, + 33.786235809326, + 34.099838256836, + 34.527889251709, + 34.831386566162, + 35.369533538818, + 35.780666351318, + 36.189102172852, + 36.830989837646, + 37.344959259033, + 37.855541229248, + 38.481304168701, + 39.100814819336, + 39.480087280273, + 39.9821434021, + 40.483695983887, + 40.631618499756, + 41.145435333252, + 41.420402526855, + 41.701438903809, + 41.987079620361, + 42.276206970215, + 42.685726165771, + 43.210681915283, + 44.318336486816, + 44.811107635498, + 46.365386962891, + 47.646724700928, + 49.026069641113, + 50.268405914307, + 52.089218139648, + 53.409706115723, + 54.018714904785, + 55.003063201904, + 55.873458862305, + 56.751037597656, + 56.927551269531, + 57.840549468994, + 58.750389099121, + 59.540088653564, + 60.921043395996, + 61.693592071533, + 62.472805023193, + 63.610321044922, + 64.856483459473, + 66.562438964844, + 68.24267578125, + 69.667938232422, + 71.911323547363, + 74.473167419434, + 76.760215759277, + 79.732650756836, + 82.780990600586, + 84.380302429199, + 86.475059509277, + 89.042091369629, + 90.886352539063, + 93.332893371582, + 95.179389953613, + 95.979103088379, + 96.356430053711, + 99.02507019043, + 99.415512084961, + 98.914810180664, + 99.782356262207, + 100.7755279541, + 101.770362854, + 103.11968994141, + 104.33930969238, + 105.083152771, + 106.07612609863, + 106.59980773926, + 107.96627044678, + 108.61009216309, + 109.38529968262, + 110.87303924561, + 109.27794647217, + 110.13377380371, + 110.85829162598, + 112.16562652588, + 113.56465148926, + 114.70414733887, + 115.95180511475, + 116.95239257813, + 118.188331604, + 119.53330993652, + 120.98512268066, + 122.30659484863, + 124.3293762207, + 125.73359680176, + 126.54803466797, + 128.79624938965, + 130.18423461914, + 131.81065368652, + 134.96139526367, + 136.16728210449, + 136.33625793457, + 137.38554382324, + 138.32939147949, + 139.40463256836, + 140.48587036133, + 141.57167053223, + 142.77867126465, + 143.86622619629, + 144.83903503418, + 145.46519470215, + 146.58029174805, + 147.220703125, + 148.11108398438, + 149.35705566406, + 150.35636901855, + 151.47360229492, + 152.82215881348, + 153.5701751709, + 154.44854736328, + 155.68542480469, + 157.14886474609, + 158.00813293457, + 159.23054504395, + 160.44752502441, + 160.83612060547, + 161.25175476074, + 162.39437866211, + 162.82015991211, + 162.91067504883, + 163.96978759766, + 164.66130065918, + 165.47262573242, + 166.75219726563, + 167.54145812988, + 169.03984069824, + 170.27883911133, + 171.9793548584, + 173.89099121094, + 175.06903076172, + 176.84115600586, + 177.5359954834, + 178.49188232422, + 178.5164642334, + 178.46586608887, + 180.21809387207, + 180.8736114502, + 182.12867736816, + 183.60589599609, + 184.12232971191, + 184.54132080078, + 185.80421447754, + 187.28736877441, + 188.39706420898, + 190.2109375, + 191.99716186523, + 192.93818664551, + 195.07104492188, + 195.8763885498, + 200.94375610352, + 200.81010437012, + 202.05271911621, + 204.13349914551, + 202.89764404297, + 204.68077087402, + 207.22866821289, + 208.63482666016, + 210.48779296875, + 214.17184448242, + 215.58755493164, + 220.68745422363, + 218.21083068848, + 212.39213562012, + 212.978515625, + 215.07511901855]) + +resid = np.array([ + np.nan, + -.6596063375473, + -.49726036190987, + -.5911386013031, + -.34607490897179, + -.46362805366516, + -.21342028677464, + -.31237986683846, + -.40454092621803, + -.22221945226192, + -.26514956355095, + -.2509354352951, + -.13019436597824, + -.30159646272659, + -.1318296790123, + -.24349159002304, + -.25457563996315, + -.07427024841309, + -.24664734303951, + -.10696394741535, + -.30270880460739, + -.22268049418926, + -.18816292285919, + -.13006833195686, + -.20216277241707, + -.10066751390696, + -.24728938937187, + -.07679972797632, + .07274255156517, + -.20292413234711, + .03331403434277, + -.35277983546257, + -.16799576580524, + -.06826904416084, + -.08623649924994, + .00015908146452, + -.12788754701614, + .06861615926027, + -.06953293830156, + -.08066567778587, + .11089706420898, + -.03098993562162, + -.04496069997549, + .04446176066995, + .01869462057948, + -.20081178843975, + -.08008606731892, + -.08214038610458, + -.38369914889336, + -.03162068501115, + -.24543529748917, + -.22040157020092, + -.20144037902355, + -.18708138167858, + -.07620526105165, + .01427639275789, + .48931872844696, + -.11833623051643, + .78889113664627, + .43461054563522, + .45327401161194, + .27393117547035, + .73159569501877, + .21077930927277, + -.40970605611801, + -.01871551014483, + -.10306061804295, + -.0734596773982, + -.65103828907013, + .0724478662014, + .05945380032063, + -.05038867890835, + .45991089940071, + -.12104434520006, + -.09359546005726, + .22719417512417, + .28968048095703, + .64352011680603, + .53756183385849, + .25732442736626, + .93205803632736, + 1.0886732339859, + .72682982683182, + 1.2397809028625, + 1.1673469543457, + -.18098846077919, + .31969723105431, + .72494095563889, + .05790812522173, + .61364978551865, + .06710703670979, + -.77938556671143, + -.97910648584366, + 1.1435683965683, + -.92507529258728, + -1.5155116319656, + -.11481033265591, + .01764474436641, + .02447287365794, + .32963913679123, + .18031190335751, + -.23930950462818, + .01684862375259, + -.37613153457642, + .40019443631172, + -.2662724852562, + -.11008904129267, + .51469951868057, + -2.1730391979218, + .22205695509911, + .06622361391783, + .54170626401901, + .53436845541, + .2353515625, + .29585054516792, + .04819770529866, + .24760706722736, + .31166675686836, + .36669155955315, + .21487690508366, + .79340130090714, + .17062658071518, + -.33359375596046, + .95196217298508, + .10373862832785, + .31576481461525, + 1.589346408844, + -.26140204071999, + -1.0672763586044, + -.13626158237457, + -.18554861843586, + -.02939598634839, + -.00464448658749, + .01412893645465, + .1283223181963, + .02133745700121, + -.06621573865414, + -.33903631567955, + .13481116294861, + -.28028702735901, + -.02071117423475, + .28890857100487, + .04294065013528, + .14363515377045, + .32640132308006, + -.22214868664742, + -.0701690018177, + .25145494937897, + .41458681225777, + -.14886146783829, + .19186246395111, + .16944620013237, + -.54752624034882, + -.43612506985664, + .2482432872057, + -.39438369870186, + -.62015581130981, + .28931456804276, + -.06979911774397, + .03869699314237, + .4273681640625, + -.05220314115286, + .55854320526123, + .26015737652779, + .62115871906281, + .72063958644867, + .00899865385145, + .53098171949387, + -.44116449356079, + -.13600566983223, + -.89187180995941, + -.81647485494614, + .83413660526276, + -.21809615194798, + .32638800144196, + .47133237123489, + -.4058920443058, + -.42233863472939, + .35867437720299, + .49578228592873, + .11262346804142, + .70294010639191, + .58906590938568, + -.19715182483196, + .86181098222733, + -.37105345726013, + 3.3236031532288, + -1.543759226799, + -.11011194437742, + .64728397130966, + -2.2335081100464, + .67635416984558, + 1.2392344474792, + .10933646559715, + .49816474318504, + 2.0072033405304, + -.17484994232655, + 3.0224411487579, + -3.7984521389008, + -6.0368394851685, + .27887633442879, + 1.4904805421829, + 1.3098726272583]) + +yr = np.array([ + np.nan, + -.6596063375473, + -.49726036190987, + -.5911386013031, + -.34607490897179, + -.46362805366516, + -.21342028677464, + -.31237986683846, + -.40454092621803, + -.22221945226192, + -.26514956355095, + -.2509354352951, + -.13019436597824, + -.30159646272659, + -.1318296790123, + -.24349159002304, + -.25457563996315, + -.07427024841309, + -.24664734303951, + -.10696394741535, + -.30270880460739, + -.22268049418926, + -.18816292285919, + -.13006833195686, + -.20216277241707, + -.10066751390696, + -.24728938937187, + -.07679972797632, + .07274255156517, + -.20292413234711, + .03331403434277, + -.35277983546257, + -.16799576580524, + -.06826904416084, + -.08623649924994, + .00015908146452, + -.12788754701614, + .06861615926027, + -.06953293830156, + -.08066567778587, + .11089706420898, + -.03098993562162, + -.04496069997549, + .04446176066995, + .01869462057948, + -.20081178843975, + -.08008606731892, + -.08214038610458, + -.38369914889336, + -.03162068501115, + -.24543529748917, + -.22040157020092, + -.20144037902355, + -.18708138167858, + -.07620526105165, + .01427639275789, + .48931872844696, + -.11833623051643, + .78889113664627, + .43461054563522, + .45327401161194, + .27393117547035, + .73159569501877, + .21077930927277, + -.40970605611801, + -.01871551014483, + -.10306061804295, + -.0734596773982, + -.65103828907013, + .0724478662014, + .05945380032063, + -.05038867890835, + .45991089940071, + -.12104434520006, + -.09359546005726, + .22719417512417, + .28968048095703, + .64352011680603, + .53756183385849, + .25732442736626, + .93205803632736, + 1.0886732339859, + .72682982683182, + 1.2397809028625, + 1.1673469543457, + -.18098846077919, + .31969723105431, + .72494095563889, + .05790812522173, + .61364978551865, + .06710703670979, + -.77938556671143, + -.97910648584366, + 1.1435683965683, + -.92507529258728, + -1.5155116319656, + -.11481033265591, + .01764474436641, + .02447287365794, + .32963913679123, + .18031190335751, + -.23930950462818, + .01684862375259, + -.37613153457642, + .40019443631172, + -.2662724852562, + -.11008904129267, + .51469951868057, + -2.1730391979218, + .22205695509911, + .06622361391783, + .54170626401901, + .53436845541, + .2353515625, + .29585054516792, + .04819770529866, + .24760706722736, + .31166675686836, + .36669155955315, + .21487690508366, + .79340130090714, + .17062658071518, + -.33359375596046, + .95196217298508, + .10373862832785, + .31576481461525, + 1.589346408844, + -.26140204071999, + -1.0672763586044, + -.13626158237457, + -.18554861843586, + -.02939598634839, + -.00464448658749, + .01412893645465, + .1283223181963, + .02133745700121, + -.06621573865414, + -.33903631567955, + .13481116294861, + -.28028702735901, + -.02071117423475, + .28890857100487, + .04294065013528, + .14363515377045, + .32640132308006, + -.22214868664742, + -.0701690018177, + .25145494937897, + .41458681225777, + -.14886146783829, + .19186246395111, + .16944620013237, + -.54752624034882, + -.43612506985664, + .2482432872057, + -.39438369870186, + -.62015581130981, + .28931456804276, + -.06979911774397, + .03869699314237, + .4273681640625, + -.05220314115286, + .55854320526123, + .26015737652779, + .62115871906281, + .72063958644867, + .00899865385145, + .53098171949387, + -.44116449356079, + -.13600566983223, + -.89187180995941, + -.81647485494614, + .83413660526276, + -.21809615194798, + .32638800144196, + .47133237123489, + -.4058920443058, + -.42233863472939, + .35867437720299, + .49578228592873, + .11262346804142, + .70294010639191, + .58906590938568, + -.19715182483196, + .86181098222733, + -.37105345726013, + 3.3236031532288, + -1.543759226799, + -.11011194437742, + .64728397130966, + -2.2335081100464, + .67635416984558, + 1.2392344474792, + .10933646559715, + .49816474318504, + 2.0072033405304, + -.17484994232655, + 3.0224411487579, + -3.7984521389008, + -6.0368394851685, + .27887633442879, + 1.4904805421829, + 1.3098726272583]) + +mse = np.array([ + 1.0121052265167, + .66349595785141, + .65449619293213, + .64957880973816, + .64683443307877, + .64528465270996, + .64440369606018, + .64390099048615, + .64361357688904, + .64344894886017, + .64335465431213, + .64330065250397, + .64326965808868, + .64325189590454, + .64324170351028, + .6432358622551, + .64323252439499, + .64323055744171, + .64322948455811, + .64322882890701, + .64322847127914, + .64322829246521, + .64322817325592, + .64322811365128, + .64322805404663, + .64322805404663, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199, + .64322799444199]) + +stdp = np.array([ + .82960641384125, + .82960641384125, + .697261095047, + .61113905906677, + .51607495546341, + .47362637519836, + .41342103481293, + .40238001942635, + .37454023957253, + .33222004771233, + .32514902949333, + .31093680858612, + .30019253492355, + .31159669160843, + .29182952642441, + .30349296331406, + .29457464814186, + .28427124023438, + .30664679408073, + .29696446657181, + .31270903348923, + .29268020391464, + .28816330432892, + .29006817936897, + .30216124653816, + .30066826939583, + .31728908419609, + .30679926276207, + .3272570669651, + .37292611598969, + .36668366193771, + .40278288722038, + .36799272894859, + .36827209591866, + .38623574376106, + .39983862638474, + .42789059877396, + .43138384819031, + .46953064203262, + .48066720366478, + .48910140991211, + .53098994493484, + .54496067762375, + .55554050207138, + .58130383491516, + .60081332921982, + .58008605241776, + .58214038610458, + .58369606733322, + .53162068128586, + .54543834924698, + .52040082216263, + .50143963098526, + .48708060383797, + .47620677947998, + .48572361469269, + .51068127155304, + .61833620071411, + .61110657453537, + .76539021730423, + .84672522544861, + .92606955766678, + .96840506792068, + 1.0892199277878, + 1.1097067594528, + 1.0187155008316, + 1.0030621290207, + .97345739603043, + .95103752613068, + .82755368947983, + .84054774045944, + .85038793087006, + .84008830785751, + .92104357481003, + .89359468221664, + .87280809879303, + .91032028198242, + .95647835731506, + 1.0624366998672, + 1.1426770687103, + 1.1679404973984, + 1.311328291893, + 1.473167181015, + 1.5602221488953, + 1.7326545715332, + 1.8809853792191, + 1.7803012132645, + 1.7750589847565, + 1.8420933485031, + 1.7863517999649, + 1.8328944444656, + 1.7793855667114, + 1.5791050195694, + 1.3564316034317, + 1.5250737667084, + 1.3155146837234, + 1.014811873436, + .98235523700714, + .97552710771561, + .97035628557205, + 1.0196926593781, + 1.0393049716949, + .98315137624741, + .97613000869751, + .89980864524841, + .96626943349838, + .91009211540222, + .88530200719833, + .97303456068039, + .57794612646103, + .63377332687378, + .65829831361771, + .76562696695328, + .86465454101563, + .90414637327194, + .95180231332779, + .95238989591599, + .98833626508713, + 1.0333099365234, + 1.0851185321808, + 1.1066001653671, + 1.2293750047684, + 1.233595252037, + 1.1480363607407, + 1.2962552309036, + 1.2842413187027, + 1.3106474876404, + 1.5614050626755, + 1.4672855138779, + 1.2362524271011, + 1.1855486631393, + 1.1294020414352, + 1.1046353578568, + 1.0858771800995, + 1.0716745853424, + 1.0786685943604, + 1.0662157535553, + 1.0390332937241, + .96519494056702, + .9802839756012, + .92070508003235, + .91108840703964, + .95705932378769, + .95637094974518, + .97360169887543, + 1.0221517086029, + .9701629281044, + .94854199886322, + .98542231321335, + 1.048855304718, + 1.0081344842911, + 1.0305507183075, + 1.0475262403488, + .93612504005432, + .85176283121109, + .89438372850418, + .820152759552, + .71068543195724, + .76979607343674, + .76130604743958, + .77262878417969, + .85220617055893, + .84146595001221, + .93983960151672, + .97883212566376, + 1.0793634653091, + 1.1909983158112, + 1.1690304279327, + 1.2411522865295, + 1.1360056400299, + 1.0918840169907, + .9164656996727, + .76586949825287, + .918093085289, + .87360894680023, + .92867678403854, + 1.00588285923, + .92233866453171, + .84132260084152, + .90422683954239, + .9873673915863, + .99707210063934, + 1.1109310388565, + 1.1971517801285, + 1.138188958168, + 1.2710473537445, + 1.1763968467712, + 1.7437561750412, + 1.4101150035858, + 1.3527159690857, + 1.4335050582886, + .99765706062317, + 1.1067585945129, + 1.3086627721786, + 1.2968333959579, + 1.3547962903976, + 1.6768488883972, + 1.5905654430389, + 2.0774590969086, + 1.3218278884888, + .21813294291496, + .30750840902328, + .60612773895264]) + +icstats = np.array([ + 202, + np.nan, + -242.06033399744, + 4, + 492.12066799488, + 505.35373878448]) + + +results = Bunch( + llf=llf, + nobs=nobs, + k=k, + k_exog=k_exog, + sigma=sigma, + chi2=chi2, + df_model=df_model, + k_ar=k_ar, + k_ma=k_ma, + params=params, + cov_params=cov_params, + xb=xb, + y=y, + resid=resid, + yr=yr, + mse=mse, + stdp=stdp, + icstats=icstats +) diff --git a/statsmodels/tsa/tests/results/arima111_forecasts.csv b/statsmodels/tsa/tests/results/arima111_forecasts.csv new file mode 100644 index 0000000..d6b12be --- /dev/null +++ b/statsmodels/tsa/tests/results/arima111_forecasts.csv @@ -0,0 +1,224 @@ +dates, cpi, predict, stderr, conf1, conf2 +1950:1, 28.980,,,, +1950:2, 29.150, 29.861 ,,, +1950:3, 29.350, 29.803 ,,, +1950:4, 29.370, 29.904 ,,, +1951:1, 29.540, 29.829 ,,, +1951:2, 29.550, 29.968 ,,, +1951:3, 29.750, 29.928 ,,, +1951:4, 29.840, 30.127 ,,, +1952:1, 29.810, 30.197 ,,, +1952:2, 29.920, 30.132 ,,, +1952:3, 29.980, 30.239 ,,, +1952:4, 30.040, 30.289 ,,, +1953:1, 30.210, 30.341 ,,, +1953:2, 30.220, 30.524 ,,, +1953:3, 30.380, 30.517 ,,, +1953:4, 30.440, 30.689 ,,, +1954:1, 30.480, 30.741 ,,, +1954:2, 30.690, 30.772 ,,, +1954:3, 30.750, 31.003 ,,, +1954:4, 30.940, 31.055 ,,, +1955:1, 30.950, 31.260 ,,, +1955:2, 31.020, 31.251 ,,, +1955:3, 31.120, 31.317 ,,, +1955:4, 31.280, 31.419 ,,, +1956:1, 31.380, 31.590 ,,, +1956:2, 31.580, 31.689 ,,, +1956:3, 31.650, 31.905 ,,, +1956:4, 31.880, 31.965 ,,, +1957:1, 32.280, 32.215 ,,, +1957:2, 32.450, 32.659 ,,, +1957:3, 32.850, 32.824 ,,, +1957:4, 32.900, 33.259 ,,, +1958:1, 33.100, 33.276 ,,, +1958:2, 33.400, 33.477 ,,, +1958:3, 33.700, 33.794 ,,, +1958:4, 34.100, 34.108 ,,, +1959:1, 34.400, 34.535 ,,, +1959:2, 34.900, 34.839 ,,, +1959:3, 35.300, 35.376 ,,, +1959:4, 35.700, 35.787 ,,, +1960:1, 36.300, 36.196 ,,, +1960:2, 36.800, 36.837 ,,, +1960:3, 37.300, 37.351 ,,, +1960:4, 37.900, 37.862 ,,, +1961:1, 38.500, 38.488 ,,, +1961:2, 38.900, 39.108 ,,, +1961:3, 39.400, 39.489 ,,, +1961:4, 39.900, 39.991 ,,, +1962:1, 40.100, 40.493 ,,, +1962:2, 40.600, 40.644 ,,, +1962:3, 40.900, 41.157 ,,, +1962:4, 41.200, 41.433 ,,, +1963:1, 41.500, 41.715 ,,, +1963:2, 41.800, 42.000 ,,, +1963:3, 42.200, 42.289 ,,, +1963:4, 42.700, 42.698 ,,, +1964:1, 43.700, 43.221 ,,, +1964:2, 44.200, 44.324 ,,, +1964:3, 45.600, 44.818 ,,, +1964:4, 46.800, 46.366 ,,, +1965:1, 48.100, 47.646 ,,, +1965:2, 49.300, 49.025 ,,, +1965:3, 51.000, 50.269 ,,, +1965:4, 52.300, 52.087 ,,, +1966:1, 53.000, 53.411 ,,, +1966:2, 54.000, 54.027 ,,, +1966:3, 54.900, 55.014 ,,, +1966:4, 55.800, 55.887 ,,, +1967:1, 56.100, 56.766 ,,, +1967:2, 57.000, 56.948 ,,, +1967:3, 57.900, 57.859 ,,, +1967:4, 58.700, 58.767 ,,, +1968:1, 60.000, 59.557 ,,, +1968:2, 60.800, 60.933 ,,, +1968:3, 61.600, 61.707 ,,, +1968:4, 62.700, 62.488 ,,, +1969:1, 63.900, 63.623 ,,, +1969:2, 65.500, 64.867 ,,, +1969:3, 67.100, 66.569 ,,, +1969:4, 68.500, 68.247 ,,, +1970:1, 70.600, 69.674 ,,, +1970:2, 73.000, 71.913 ,,, +1970:3, 75.200, 74.471 ,,, +1970:4, 78.000, 76.758 ,,, +1971:1, 80.900, 79.727 ,,, +1971:2, 82.600, 82.775 ,,, +1971:3, 84.700, 84.385 ,,, +1971:4, 87.200, 86.484 ,,, +1972:1, 89.100, 89.051 ,,, +1972:2, 91.500, 90.901 ,,, +1972:3, 93.400, 93.347 ,,, +1972:4, 94.400, 95.198 ,,, +1973:1, 95.000, 96.008 ,,, +1973:2, 97.500, 96.394 ,,, +1973:3, 98.100, 99.050 ,,, +1973:4, 97.900, 99.449 ,,, +1974:1, 98.800, 98.959 ,,, +1974:2, 99.800, 99.822 ,,, +1974:3, 100.800, 100.810 ,,, +1974:4, 102.100, 101.800 ,,, +1975:1, 103.300, 103.144 ,,, +1975:2, 104.100, 104.360 ,,, +1975:3, 105.100, 105.106 ,,, +1975:4, 105.700, 106.097 ,,, +1976:1, 107.000, 106.623 ,,, +1976:2, 107.700, 107.984 ,,, +1976:3, 108.500, 108.630 ,,, +1976:4, 109.900, 109.405 ,,, +1977:1, 108.700, 110.887 ,,, +1977:2, 109.500, 109.311 ,,, +1977:3, 110.200, 110.159 ,,, +1977:4, 111.400, 110.880 ,,, +1978:1, 112.700, 112.180 ,,, +1978:2, 113.800, 113.574 ,,, +1978:3, 115.000, 114.712 ,,, +1978:4, 116.000, 115.959 ,,, +1979:1, 117.200, 116.961 ,,, +1979:2, 118.500, 118.197 ,,, +1979:3, 119.900, 119.541 ,,, +1979:4, 121.200, 120.992 ,,, +1980:1, 123.100, 122.314 ,,, +1980:2, 124.500, 124.333 ,,, +1980:3, 125.400, 125.740 ,,, +1980:4, 127.500, 126.561 ,,, +1981:1, 128.900, 128.803 ,,, +1981:2, 130.500, 130.194 ,,, +1981:3, 133.400, 131.821 ,,, +1981:4, 134.700, 134.961 ,,, +1982:1, 135.100, 136.176 ,,, +1982:2, 136.200, 136.359 ,,, +1982:3, 137.200, 137.409 ,,, +1982:4, 138.300, 138.354 ,,, +1983:1, 139.400, 139.428 ,,, +1983:2, 140.500, 140.509 ,,, +1983:3, 141.700, 141.594 ,,, +1983:4, 142.800, 142.799 ,,, +1984:1, 143.800, 143.886 ,,, +1984:2, 144.500, 144.859 ,,, +1984:3, 145.600, 145.488 ,,, +1984:4, 146.300, 146.600 ,,, +1985:1, 147.200, 147.242 ,,, +1985:2, 148.400, 148.131 ,,, +1985:3, 149.400, 149.374 ,,, +1985:4, 150.500, 150.373 ,,, +1986:1, 151.800, 151.489 ,,, +1986:2, 152.600, 152.835 ,,, +1986:3, 153.500, 153.586 ,,, +1986:4, 154.700, 154.465 ,,, +1987:1, 156.100, 155.700 ,,, +1987:2, 157.000, 157.160 ,,, +1987:3, 158.200, 158.022 ,,, +1987:4, 159.400, 159.244 ,,, +1988:1, 159.900, 160.460 ,,, +1988:2, 160.400, 160.855 ,,, +1988:3, 161.500, 161.274 ,,, +1988:4, 162.000, 162.412 ,,, +1989:1, 162.200, 162.841 ,,, +1989:2, 163.200, 162.935 ,,, +1989:3, 163.900, 163.988 ,,, +1989:4, 164.700, 164.679 ,,, +1990:1, 165.900, 165.489 ,,, +1990:2, 166.700, 166.764 ,,, +1990:3, 168.100, 167.554 ,,, +1990:4, 169.300, 169.048 ,,, +1991:1, 170.900, 170.286 ,,, +1991:2, 172.700, 171.984 ,,, +1991:3, 173.900, 173.893 ,,, +1991:4, 175.600, 175.075 ,,, +1992:1, 176.400, 176.846 ,,, +1992:2, 177.400, 177.549 ,,, +1992:3, 177.600, 178.508 ,,, +1992:4, 177.700, 178.541 ,,, +1993:1, 179.300, 178.495 ,,, +1993:2, 180.000, 180.236 ,,, +1993:3, 181.200, 180.893 ,,, +1993:4, 182.600, 182.144 ,,, +1994:1, 183.200, 183.617 ,,, +1994:2, 183.700, 184.139 ,,, +1994:3, 184.900, 184.561 ,,, +1994:4, 186.300, 185.819 ,,, +1995:1, 187.400, 187.298 ,,, +1995:2, 189.100, 188.408 ,,, +1995:3, 190.800, 190.218 ,,, +1995:4, 191.800, 192.002 ,,, +1996:1, 193.800, 192.948 ,,, +1996:2, 194.700, 195.076 ,,, +1996:3, 199.200, 195.889 ,,, +1996:4, 199.400, 200.930 ,,, +1997:1, 200.700, 200.820 ,,, +1997:2, 202.700, 202.068 ,,, +1997:3, 201.900, 204.145 ,,, +1997:4, 203.574, 202.932 ,,, +1998:1, 205.920, 204.705 ,,, +1998:2, 207.338, 207.241 ,,, +1998:3, 209.133, 208.649 ,,, +1998:4, 212.495, 210.500 ,,, +1999:1, 213.997, 214.170 ,,, +1999:2, 218.610, 215.595 ,,, +1999:3, 216.889, 220.674 ,,, +1999:4, 212.174, 218.243 ,,, +2000:1, 212.671, 212.474 ,,, +2000:2, 214.469, 213.039 ,,, +2000:3, 216.385, 215.110 ,,, +2000:4,, 217.255, 0.7999, 215.688, 218.823 +2001:1,, 218.127, 1.2305, 215.715, 220.538 +2001:2,, 218.998, 1.6254, 215.813, 222.184 +2001:3,, 219.870, 2.0093, 215.932, 223.809 +2001:4,, 220.743, 2.3897, 216.060, 225.427 +2002:1,, 221.616, 2.7691, 216.189, 227.044 +2002:2,, 222.490, 3.1483, 216.320, 228.661 +2002:3,, 223.364, 3.5276, 216.450, 230.278 +2002:4,, 224.239, 3.9067, 216.582, 231.896 +2003:1,, 225.114, 4.2853, 216.715, 233.513 +2003:2,, 225.989, 4.6630, 216.850, 235.128 +2003:3,, 226.865, 5.0394, 216.988, 236.742 +2003:4,, 227.741, 5.4142, 217.129, 238.352 +2004:1,, 228.617, 5.7870, 217.274, 239.959 +2004:2,, 229.493, 6.1576, 217.425, 241.562 +2004:3,, 230.370, 6.5257, 217.580, 243.160 +2004:4,, 231.247, 6.8911, 217.741, 244.753 +2005:1,, 232.124, 7.2535, 217.908, 246.341 +2005:2,, 233.002, 7.6128, 218.081, 247.923 +2005:3,, 233.879, 7.9689, 218.261, 249.498 diff --git a/statsmodels/tsa/tests/results/arima111_results.py b/statsmodels/tsa/tests/results/arima111_results.py new file mode 100644 index 0000000..063cd00 --- /dev/null +++ b/statsmodels/tsa/tests/results/arima111_results.py @@ -0,0 +1,1305 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + +llf = np.array([-241.75576160303]) + +nobs = np.array([202]) + +k = np.array([4]) + +k_exog = np.array([1]) + +sigma = np.array([.79987660416529]) + +chi2 = np.array([342.91413339514]) + +df_model = np.array([2]) + +k_ar = np.array([1]) + +k_ma = np.array([1]) + +params = np.array([ + .88084748605315, + .93989719451385, + -.7709851377434, + .79987660416529]) + +cov_params = np.array([ + .15020189867396, + -.01642122563089, + .01456018801049, + -.00156750041014, + -.01642122563089, + .0032067778715, + -.00350387326241, + .00059634328354, + .01456018801049, + -.00350387326241, + .00480028434835, + -.00068065418463, + -.00156750041014, + .00059634328354, + -.00068065418463, + .00029322997097]).reshape(4, 4) + +xb = np.array([ + .88084751367569, + .88084751367569, + .65303039550781, + .55365419387817, + .45908725261688, + .42810925841331, + .37837743759155, + .37686342000961, + .35719576478004, + .3220648765564, + .31943875551224, + .30907514691353, + .30120712518692, + .31383177638054, + .29652059078217, + .30856171250343, + .30095273256302, + .29171526432037, + .31331890821457, + .30463594198227, + .31990340352058, + .30126947164536, + .29703867435455, + .29884466528893, + .31037190556526, + .30912432074547, + .32505416870117, + .31537705659866, + .33494210243225, + .37874156236649, + .37366089224815, + .40859284996986, + .37640652060509, + .37692713737488, + .39422073960304, + .40755322575569, + .43472331762314, + .43878075480461, + .47569087147713, + .48725643754005, + .49617394804955, + .53683114051819, + .55128628015518, + .56243091821671, + .58791494369507, + .60756206512451, + .58892780542374, + .59145200252533, + .59339815378189, + .54422444105148, + .55698639154434, + .53304374217987, + .51458370685577, + .50035130977631, + .48937830328941, + .49780988693237, + .52120143175125, + .62369203567505, + .6182547211647, + .76608312129974, + .84627467393875, + .92499214410782, + .96879118680954, + 1.0870156288147, + 1.1105998754501, + 1.0274360179901, + 1.013991355896, + .98673474788666, + .96571969985962, + .84817039966583, + .85888928174973, + .86715340614319, + .85663330554962, + .93297851085663, + .90738350152969, + .88765007257462, + .92311006784439, + .96734017133713, + 1.0690053701401, + 1.1473876237869, + 1.1740373373032, + 1.3128218650818, + 1.4704967737198, + 1.5582785606384, + 1.7273052930832, + 1.8745132684708, + 1.7853132486343, + 1.7841064929962, + 1.850741147995, + 1.800768494606, + 1.8466963768005, + 1.7976499795914, + 1.6078149080276, + 1.3938897848129, + 1.5498898029327, + 1.3492304086685, + 1.059396147728, + 1.0217411518097, + 1.0096007585526, + 1.0002405643463, + 1.0436969995499, + 1.0603114366531, + 1.0055546760559, + .99712115526199, + .92305397987366, + .9841884970665, + .92997401952744, + .90506774187088, + .9872123003006, + .61137217283249, + .65943044424057, + .67959040403366, + .77959072589874, + .87357920408249, + .91226226091385, + .95897603034973, + .96120971441269, + .99671375751495, + 1.0409790277481, + 1.0919979810715, + 1.1144404411316, + 1.2330915927887, + 1.2401138544083, + 1.161071896553, + 1.3028255701065, + 1.2938764095306, + 1.3207612037659, + 1.5610725879669, + 1.4760913848877, + 1.258552312851, + 1.2090681791306, + 1.1540271043777, + 1.12848341465, + 1.1087870597839, + 1.0936040878296, + 1.0987877845764, + 1.0858948230743, + 1.0590622425079, + .98770052194595, + 1.0002481937408, + .94235575199127, + .93150353431702, + .97381073236465, + .9726470708847, + .98864215612411, + 1.0347559452057, + .98585307598114, + .96503925323486, + .9996662735939, + 1.0601476430893, + 1.022319316864, + 1.043828368187, + 1.0604115724564, + .95495897531509, + .87365657091141, + .91232192516327, + .84078407287598, + .73495537042618, + .78849309682846, + .77909576892853, + .78874284029007, + .8637443780899, + .8540056347847, + .94784545898438, + .98641014099121, + 1.0837067365646, + 1.1925053596497, + 1.1750392913818, + 1.2460317611694, + 1.1487410068512, + 1.1075156927109, + .94060403108597, + .7950227856636, + .93615245819092, + .89293897151947, + .94407802820206, + 1.0172899961472, + .93860250711441, + .86104601621628, + .91948908567429, + .99833220243454, + 1.008442401886, + 1.1175880432129, + 1.2017351388931, + 1.1483734846115, + 1.2761443853378, + 1.188849568367, + 1.7296310663223, + 1.4202431440353, + 1.3675138950348, + 1.445098400116, + 1.031960606575, + 1.1313284635544, + 1.3214453458786, + 1.3112732172012, + 1.367110490799, + 1.674845457077, + 1.5979281663895, + 2.064112663269, + 1.3536450862885, + .30015936493874, + .36831066012383, + .64060544967651]) + +y = np.array([ + np.nan, + 29.860847473145, + 29.803030014038, + 29.903654098511, + 29.82908821106, + 29.968111038208, + 29.928377151489, + 30.126863479614, + 30.197195053101, + 30.132064819336, + 30.23943901062, + 30.289073944092, + 30.341207504272, + 30.523830413818, + 30.516519546509, + 30.68856048584, + 30.740953445435, + 30.771715164185, + 31.003318786621, + 31.054636001587, + 31.25990486145, + 31.251270294189, + 31.317039489746, + 31.418846130371, + 31.590372085571, + 31.689123153687, + 31.905054092407, + 31.965375900269, + 32.214942932129, + 32.658740997314, + 32.823661804199, + 33.258590698242, + 33.27640914917, + 33.47692489624, + 33.7942237854, + 34.107555389404, + 34.534721374512, + 34.83878326416, + 35.375694274902, + 35.787254333496, + 36.196174621582, + 36.83683013916, + 37.3512840271, + 37.86243057251, + 38.487915039063, + 39.107563018799, + 39.488929748535, + 39.991455078125, + 40.49340057373, + 40.644222259521, + 41.156986236572, + 41.433044433594, + 41.714584350586, + 42.000350952148, + 42.289379119873, + 42.697811126709, + 43.221202850342, + 44.323692321777, + 44.818256378174, + 46.366081237793, + 47.64627456665, + 49.024990081787, + 50.26879119873, + 52.087017059326, + 53.410598754883, + 54.027435302734, + 55.01399230957, + 55.886737823486, + 56.765720367432, + 56.948169708252, + 57.858890533447, + 58.767154693604, + 59.556632995605, + 60.93297958374, + 61.707382202148, + 62.487648010254, + 63.623111724854, + 64.867340087891, + 66.569007873535, + 68.247383117676, + 69.674034118652, + 71.912818908691, + 74.470497131348, + 76.758277893066, + 79.72730255127, + 82.774513244629, + 84.385314941406, + 86.484100341797, + 89.050735473633, + 90.900764465332, + 93.346694946289, + 95.197654724121, + 96.007820129395, + 96.393890380859, + 99.04988861084, + 99.449226379395, + 98.959396362305, + 99.821746826172, + 100.80960083008, + 101.80024719238, + 103.1436920166, + 104.36031341553, + 105.10555267334, + 106.09712219238, + 106.62305450439, + 107.98419189453, + 108.62997436523, + 109.40506744385, + 110.88721466064, + 109.31137084961, + 110.15943145752, + 110.87958526611, + 112.17959594727, + 113.57357788086, + 114.71226501465, + 115.95897674561, + 116.9612121582, + 118.1967086792, + 119.54097747803, + 120.99199676514, + 122.31443786621, + 124.33309173584, + 125.74011230469, + 126.56107330322, + 128.80282592773, + 130.19386291504, + 131.82075500488, + 134.96105957031, + 136.17608642578, + 136.35855102539, + 137.40905761719, + 138.35401916504, + 139.42848205566, + 140.50877380371, + 141.59359741211, + 142.79878234863, + 143.88589477539, + 144.85906982422, + 145.48770141602, + 146.60025024414, + 147.24235534668, + 148.13150024414, + 149.37380981445, + 150.3726348877, + 151.48864746094, + 152.83476257324, + 153.58586120605, + 154.46504211426, + 155.69966125488, + 157.16015625, + 158.0223236084, + 159.24382019043, + 160.46040344238, + 160.85494995117, + 161.27365112305, + 162.41232299805, + 162.84078979492, + 162.93495178223, + 163.98849487305, + 164.67909240723, + 165.48873901367, + 166.76373291016, + 167.55400085449, + 169.0478515625, + 170.2864074707, + 171.98370361328, + 173.89250183105, + 175.07502746582, + 176.84603881836, + 177.54873657227, + 178.50750732422, + 178.5406036377, + 178.49502563477, + 180.23616027832, + 180.89294433594, + 182.14407348633, + 183.61729431152, + 184.13859558105, + 184.56105041504, + 185.81948852539, + 187.29833984375, + 188.40843200684, + 190.21759033203, + 192.00173950195, + 192.9483795166, + 195.07614135742, + 195.88883972168, + 200.92962646484, + 200.82023620605, + 202.06750488281, + 204.1450958252, + 202.93196105957, + 204.70533752441, + 207.24143981934, + 208.6492767334, + 210.50010681152, + 214.16984558105, + 215.59492492676, + 220.67411804199, + 218.24264526367, + 212.47415161133, + 213.03932189941, + 215.10960388184]) + +resid = np.array([ + np.nan, + -.71084743738174, + -.45302960276604, + -.5336537361145, + -.28908717632294, + -.41811093688011, + -.17837668955326, + -.28686326742172, + -.38719645142555, + -.21206425130367, + -.25943928956985, + -.24907378852367, + -.13120894134045, + -.3038315474987, + -.13652075827122, + -.24856032431126, + -.26095372438431, + -.0817142650485, + -.25331944227219, + -.11463540792465, + -.30990317463875, + -.2312697917223, + -.19703827798367, + -.13884480297565, + -.21037344634533, + -.10912357270718, + -.25505447387695, + -.08537751436234, + .06505750864744, + -.20873957872391, + .02633681893349, + -.35858979821205, + -.1764095723629, + -.07692407816648, + -.09422151744366, + -.00755552388728, + -.13472028076649, + .06121923774481, + -.07569316774607, + -.08725491166115, + .10382451862097, + -.03683112934232, + -.05128625407815, + .03757134452462, + .0120835499838, + -.20756052434444, + -.08892779797316, + -.09145200997591, + -.3934012055397, + -.04422445222735, + -.25698333978653, + -.23304453492165, + -.21458448469639, + -.2003520578146, + -.08937677741051, + .00219011562876, + .47879853844643, + -.12369203567505, + .78174299001694, + .43391767144203, + .4537245631218, + .27500861883163, + .73120957612991, + .21298357844353, + -.41059911251068, + -.02743596211076, + -.11398979276419, + -.08673703670502, + -.66572046279907, + .05183110013604, + .04111221805215, + -.06715416908264, + .44336593151093, + -.13297925889492, + -.1073842421174, + .21235218644142, + .27689066529274, + .63265830278397, + .53099316358566, + .25261387228966, + .92596107721329, + 1.0871796607971, + .72950023412704, + 1.2417244911194, + 1.1726962327957, + -.17451636493206, + .31468516588211, + .71589350700378, + .04926039651036, + .59923303127289, + .05330519750714, + -.79764997959137, + -1.0078164339066, + 1.1061102151871, + -.94989138841629, + -1.5492273569107, + -.15939457714558, + -.02174116671085, + -.00960071571171, + .29975482821465, + .15630762279034, + -.2603160738945, + -.00555467186496, + -.3971226811409, + .37694907188416, + -.28419154882431, + -.12997098267078, + .49493381381035, + -2.1872169971466, + .18863087892532, + .04056651890278, + .52041417360306, + .52040469646454, + .22642692923546, + .28773468732834, + .0410239957273, + .2387872338295, + .30328929424286, + .35902243852615, + .20799747109413, + .78556102514267, + .16690990328789, + -.34011232852936, + .93892657756805, + .0971682742238, + .30612966418266, + 1.5792326927185, + -.26106956601143, + -1.0760822296143, + -.15856145322323, + -.2090682387352, + -.05402099713683, + -.02849259786308, + -.00878097955137, + .10639289021492, + .00121826829854, + -.08589478582144, + -.35906526446342, + .11230555176735, + -.30025118589401, + -.04236188530922, + .26849341392517, + .02618926763535, + .12735903263092, + .31136092543602, + -.23475293815136, + -.08585914969444, + .23495768010616, + .40034285187721, + -.1601537913084, + .17767761647701, + .15616858005524, + -.56041151285172, + -.45495894551277, + .2263495028019, + -.41232195496559, + -.64078712463379, + .26504465937614, + -.08849616348743, + .02090725488961, + .41125410795212, + -.06374131888151, + .54600352048874, + .25215145945549, + .61358070373535, + .71629631519318, + .00749156065285, + .52497291564941, + -.44604399800301, + -.14874097704887, + -.90750348567963, + -.84061318635941, + .80498331785202, + -.23615552484989, + .30705797672272, + .45593112707138, + -.41729912161827, + -.43860253691673, + .33895090222359, + .48052009940147, + .10165861994028, + .69156980514526, + .58240884542465, + -.20173519849777, + .85162657499313, + -.37615045905113, + 3.3111503124237, + -1.5296341180801, + -.12024004757404, + .63248610496521, + -2.2451014518738, + .64205056428909, + 1.2146645784378, + .09655395895243, + .48372489213943, + 1.9948890209198, + -.17284658551216, + 3.0150785446167, + -3.7851057052612, + -6.0686569213867, + .19684991240501, + 1.4296782016754, + 1.2753949165344]) + +yr = np.array([ + np.nan, + -.71084743738174, + -.45302960276604, + -.5336537361145, + -.28908717632294, + -.41811093688011, + -.17837668955326, + -.28686326742172, + -.38719645142555, + -.21206425130367, + -.25943928956985, + -.24907378852367, + -.13120894134045, + -.3038315474987, + -.13652075827122, + -.24856032431126, + -.26095372438431, + -.0817142650485, + -.25331944227219, + -.11463540792465, + -.30990317463875, + -.2312697917223, + -.19703827798367, + -.13884480297565, + -.21037344634533, + -.10912357270718, + -.25505447387695, + -.08537751436234, + .06505750864744, + -.20873957872391, + .02633681893349, + -.35858979821205, + -.1764095723629, + -.07692407816648, + -.09422151744366, + -.00755552388728, + -.13472028076649, + .06121923774481, + -.07569316774607, + -.08725491166115, + .10382451862097, + -.03683112934232, + -.05128625407815, + .03757134452462, + .0120835499838, + -.20756052434444, + -.08892779797316, + -.09145200997591, + -.3934012055397, + -.04422445222735, + -.25698333978653, + -.23304453492165, + -.21458448469639, + -.2003520578146, + -.08937677741051, + .00219011562876, + .47879853844643, + -.12369203567505, + .78174299001694, + .43391767144203, + .4537245631218, + .27500861883163, + .73120957612991, + .21298357844353, + -.41059911251068, + -.02743596211076, + -.11398979276419, + -.08673703670502, + -.66572046279907, + .05183110013604, + .04111221805215, + -.06715416908264, + .44336593151093, + -.13297925889492, + -.1073842421174, + .21235218644142, + .27689066529274, + .63265830278397, + .53099316358566, + .25261387228966, + .92596107721329, + 1.0871796607971, + .72950023412704, + 1.2417244911194, + 1.1726962327957, + -.17451636493206, + .31468516588211, + .71589350700378, + .04926039651036, + .59923303127289, + .05330519750714, + -.79764997959137, + -1.0078164339066, + 1.1061102151871, + -.94989138841629, + -1.5492273569107, + -.15939457714558, + -.02174116671085, + -.00960071571171, + .29975482821465, + .15630762279034, + -.2603160738945, + -.00555467186496, + -.3971226811409, + .37694907188416, + -.28419154882431, + -.12997098267078, + .49493381381035, + -2.1872169971466, + .18863087892532, + .04056651890278, + .52041417360306, + .52040469646454, + .22642692923546, + .28773468732834, + .0410239957273, + .2387872338295, + .30328929424286, + .35902243852615, + .20799747109413, + .78556102514267, + .16690990328789, + -.34011232852936, + .93892657756805, + .0971682742238, + .30612966418266, + 1.5792326927185, + -.26106956601143, + -1.0760822296143, + -.15856145322323, + -.2090682387352, + -.05402099713683, + -.02849259786308, + -.00878097955137, + .10639289021492, + .00121826829854, + -.08589478582144, + -.35906526446342, + .11230555176735, + -.30025118589401, + -.04236188530922, + .26849341392517, + .02618926763535, + .12735903263092, + .31136092543602, + -.23475293815136, + -.08585914969444, + .23495768010616, + .40034285187721, + -.1601537913084, + .17767761647701, + .15616858005524, + -.56041151285172, + -.45495894551277, + .2263495028019, + -.41232195496559, + -.64078712463379, + .26504465937614, + -.08849616348743, + .02090725488961, + .41125410795212, + -.06374131888151, + .54600352048874, + .25215145945549, + .61358070373535, + .71629631519318, + .00749156065285, + .52497291564941, + -.44604399800301, + -.14874097704887, + -.90750348567963, + -.84061318635941, + .80498331785202, + -.23615552484989, + .30705797672272, + .45593112707138, + -.41729912161827, + -.43860253691673, + .33895090222359, + .48052009940147, + .10165861994028, + .69156980514526, + .58240884542465, + -.20173519849777, + .85162657499313, + -.37615045905113, + 3.3111503124237, + -1.5296341180801, + -.12024004757404, + .63248610496521, + -2.2451014518738, + .64205056428909, + 1.2146645784378, + .09655395895243, + .48372489213943, + 1.9948890209198, + -.17284658551216, + 3.0150785446167, + -3.7851057052612, + -6.0686569213867, + .19684991240501, + 1.4296782016754, + 1.2753949165344]) + +mse = np.array([ + .7963672876358, + .7963672876358, + .71457105875015, + .67959600687027, + .66207146644592, + .65259438753128, + .64725720882416, + .644182741642, + .64238852262497, + .64133352041245, + .64071041345596, + .6403414607048, + .64012265205383, + .63999271392822, + .63991558551788, + .63986974954605, + .63984251022339, + .63982629776001, + .6398167014122, + .6398109793663, + .63980758190155, + .63980555534363, + .63980436325073, + .639803647995, + .63980323076248, + .63980293273926, + .63980281352997, + .63980269432068, + .63980263471603, + .63980263471603, + .63980263471603, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139, + .63980257511139]) + +stdp = np.array([ + .88084751367569, + .88084751367569, + .65303039550781, + .55365419387817, + .45908725261688, + .42810925841331, + .37837743759155, + .37686342000961, + .35719576478004, + .3220648765564, + .31943875551224, + .30907514691353, + .30120712518692, + .31383177638054, + .29652059078217, + .30856171250343, + .30095273256302, + .29171526432037, + .31331890821457, + .30463594198227, + .31990340352058, + .30126947164536, + .29703867435455, + .29884466528893, + .31037190556526, + .30912432074547, + .32505416870117, + .31537705659866, + .33494210243225, + .37874156236649, + .37366089224815, + .40859284996986, + .37640652060509, + .37692713737488, + .39422073960304, + .40755322575569, + .43472331762314, + .43878075480461, + .47569087147713, + .48725643754005, + .49617394804955, + .53683114051819, + .55128628015518, + .56243091821671, + .58791494369507, + .60756206512451, + .58892780542374, + .59145200252533, + .59339815378189, + .54422444105148, + .55698639154434, + .53304374217987, + .51458370685577, + .50035130977631, + .48937830328941, + .49780988693237, + .52120143175125, + .62369203567505, + .6182547211647, + .76608312129974, + .84627467393875, + .92499214410782, + .96879118680954, + 1.0870156288147, + 1.1105998754501, + 1.0274360179901, + 1.013991355896, + .98673474788666, + .96571969985962, + .84817039966583, + .85888928174973, + .86715340614319, + .85663330554962, + .93297851085663, + .90738350152969, + .88765007257462, + .92311006784439, + .96734017133713, + 1.0690053701401, + 1.1473876237869, + 1.1740373373032, + 1.3128218650818, + 1.4704967737198, + 1.5582785606384, + 1.7273052930832, + 1.8745132684708, + 1.7853132486343, + 1.7841064929962, + 1.850741147995, + 1.800768494606, + 1.8466963768005, + 1.7976499795914, + 1.6078149080276, + 1.3938897848129, + 1.5498898029327, + 1.3492304086685, + 1.059396147728, + 1.0217411518097, + 1.0096007585526, + 1.0002405643463, + 1.0436969995499, + 1.0603114366531, + 1.0055546760559, + .99712115526199, + .92305397987366, + .9841884970665, + .92997401952744, + .90506774187088, + .9872123003006, + .61137217283249, + .65943044424057, + .67959040403366, + .77959072589874, + .87357920408249, + .91226226091385, + .95897603034973, + .96120971441269, + .99671375751495, + 1.0409790277481, + 1.0919979810715, + 1.1144404411316, + 1.2330915927887, + 1.2401138544083, + 1.161071896553, + 1.3028255701065, + 1.2938764095306, + 1.3207612037659, + 1.5610725879669, + 1.4760913848877, + 1.258552312851, + 1.2090681791306, + 1.1540271043777, + 1.12848341465, + 1.1087870597839, + 1.0936040878296, + 1.0987877845764, + 1.0858948230743, + 1.0590622425079, + .98770052194595, + 1.0002481937408, + .94235575199127, + .93150353431702, + .97381073236465, + .9726470708847, + .98864215612411, + 1.0347559452057, + .98585307598114, + .96503925323486, + .9996662735939, + 1.0601476430893, + 1.022319316864, + 1.043828368187, + 1.0604115724564, + .95495897531509, + .87365657091141, + .91232192516327, + .84078407287598, + .73495537042618, + .78849309682846, + .77909576892853, + .78874284029007, + .8637443780899, + .8540056347847, + .94784545898438, + .98641014099121, + 1.0837067365646, + 1.1925053596497, + 1.1750392913818, + 1.2460317611694, + 1.1487410068512, + 1.1075156927109, + .94060403108597, + .7950227856636, + .93615245819092, + .89293897151947, + .94407802820206, + 1.0172899961472, + .93860250711441, + .86104601621628, + .91948908567429, + .99833220243454, + 1.008442401886, + 1.1175880432129, + 1.2017351388931, + 1.1483734846115, + 1.2761443853378, + 1.188849568367, + 1.7296310663223, + 1.4202431440353, + 1.3675138950348, + 1.445098400116, + 1.031960606575, + 1.1313284635544, + 1.3214453458786, + 1.3112732172012, + 1.367110490799, + 1.674845457077, + 1.5979281663895, + 2.064112663269, + 1.3536450862885, + .30015936493874, + .36831066012383, + .64060544967651]) + +icstats = np.array([ + 202, + np.nan, + -241.75576160303, + 4, + 491.51152320605, + 504.74459399566]) + + +results = Bunch( + llf=llf, + nobs=nobs, + k=k, + k_exog=k_exog, + sigma=sigma, + chi2=chi2, + df_model=df_model, + k_ar=k_ar, + k_ma=k_ma, + params=params, + cov_params=cov_params, + xb=xb, + y=y, + resid=resid, + yr=yr, + mse=mse, + stdp=stdp, + icstats=icstats +) diff --git a/statsmodels/tsa/tests/results/arima111nc_css_results.py b/statsmodels/tsa/tests/results/arima111nc_css_results.py new file mode 100644 index 0000000..664d00b --- /dev/null +++ b/statsmodels/tsa/tests/results/arima111nc_css_results.py @@ -0,0 +1,1297 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + +llf = np.array([-242.89663276735]) + +nobs = np.array([202]) + +k = np.array([3]) + +k_exog = np.array([1]) + +sigma = np.array([.8053519404535]) + +chi2 = np.array([15723.381396967]) + +df_model = np.array([2]) + +k_ar = np.array([1]) + +k_ma = np.array([1]) + +params = np.array([ + .99479180506163, + -.84461527652809, + .64859174799221]) + +cov_params = np.array([ + .00008904968254, + -.00023560410507, + .00012795903324, + -.00023560410507, + .00131628534915, + -.00022462340695, + .00012795903324, + -.00022462340695, + .0005651128627]).reshape(3, 3) + +xb = np.array([ + 0, + 0, + .02869686298072, + .05651443824172, + .0503994859755, + .06887971609831, + .05940540507436, + .08067328482866, + .08167565613985, + .06429278105497, + .07087650150061, + .06886467337608, + .06716959923506, + .08230647444725, + .07099691033363, + .08401278406382, + .07996553182602, + .07354256510735, + .09366323798895, + .08811800926924, + .10296355187893, + .08846370875835, + .0852297320962, + .08700425922871, + .09751411527395, + .09737934917212, + .11228405684233, + .1053489819169, + .12352022528648, + .16439816355705, + .1643835157156, + .19891132414341, + .17551273107529, + .17827558517456, + .19562774896622, + .21028305590153, + .23767858743668, + .24580039083958, + .28269505500793, + .29883882403374, + .31247469782829, + .35402658581734, + .37410452961922, + .39106267690659, + .42040377855301, + .44518512487411, + .43608102202415, + .44340893626213, + .44959822297096, + .40977239608765, + .42118826508522, + .40079545974731, + .38357082009315, + .36902260780334, + .35673499107361, + .36137464642525, + .38031083345413, + .47139286994934, + .47323387861252, + .60994738340378, + .69538277387619, + .7825602889061, + .84117436408997, + .9657689332962, + 1.0109325647354, + .95897275209427, + .96013957262039, + .9461076259613, + .9342554807663, + .83413934707642, + .83968591690063, + .84437066316605, + .83330947160721, + .8990553021431, + .87949693202972, + .86297762393951, + .89407861232758, + .93536442518234, + 1.0303052663803, + 1.1104937791824, + 1.1481873989105, + 1.2851470708847, + 1.4458787441254, + 1.5515991449356, + 1.7309991121292, + 1.8975404500961, + 1.8579913377762, + 1.8846583366394, + 1.9672524929047, + 1.9469071626663, + 2.0048115253448, + 1.9786299467087, + 1.8213576078415, + 1.6284521818161, + 1.7508568763733, + 1.5689061880112, + 1.2950873374939, + 1.2290096282959, + 1.1882168054581, + 1.1537625789642, + 1.1697143316269, + 1.1681711673737, + 1.106795668602, + 1.0849931240082, + 1.006507396698, + 1.0453414916992, + .98803448677063, + .95465070009232, + 1.0165599584579, + .67838954925537, + .69311982393265, + .69054269790649, + .76345545053482, + .84005492925644, + .87471830844879, + .91901183128357, + .92638796567917, + .96265280246735, + 1.0083012580872, + 1.0618740320206, + 1.0921038389206, + 1.2077431678772, + 1.2303256988525, + 1.174311041832, + 1.3072115182877, + 1.314337015152, + 1.3503924608231, + 1.5760731697083, + 1.5264053344727, + 1.34929728508, + 1.304829955101, + 1.2522557973862, + 1.222869515419, + 1.198047041893, + 1.1770839691162, + 1.1743944883347, + 1.1571066379547, + 1.1274864673615, + 1.0574153661728, + 1.058304309845, + .99898308515549, + .9789143204689, + 1.0070173740387, + 1.000718832016, + 1.0104174613953, + 1.0486439466476, + 1.0058424472809, + .98470783233643, + 1.0119106769562, + 1.0649236440659, + 1.0346088409424, + 1.0540577173233, + 1.0704846382141, + .97923594713211, + .90216588973999, + .9271782040596, + .85819715261459, + .75488126277924, + .78776079416275, + .77047789096832, + .77089905738831, + .8313245177269, + .82229107618332, + .90476810932159, + .94439232349396, + 1.0379292964935, + 1.1469690799713, + 1.1489590406418, + 1.2257302999496, + 1.1554099321365, + 1.1260533332825, + .9811190366745, + .8436843752861, + .95287209749222, + .90993344783783, + .94875508546829, + 1.0115815401077, + .94450175762177, + .87282890081406, + .91741597652435, + .98511207103729, + .9972335100174, + 1.0975805521011, + 1.1823329925537, + 1.1487929821014, + 1.270641207695, + 1.2083609104156, + 1.696394443512, + 1.4628355503082, + 1.4307631254196, + 1.5087975263596, + 1.1542117595673, + 1.2262620925903, + 1.3880327939987, + 1.3853038549423, + 1.4396153688431, + 1.7208145856857, + 1.678991317749, + 2.110867023468, + 1.524417757988, + .57946246862411, + .56406193971634, + .74643105268478]) + +y = np.array([ + np.nan, + 28.979999542236, + 29.178695678711, + 29.40651512146, + 29.420400619507, + 29.608880996704, + 29.609405517578, + 29.830673217773, + 29.921676635742, + 29.874292373657, + 29.990877151489, + 30.048864364624, + 30.10717010498, + 30.292304992676, + 30.290996551514, + 30.464012145996, + 30.519966125488, + 30.553541183472, + 30.783664703369, + 30.838117599487, + 31.042964935303, + 31.038463592529, + 31.105230331421, + 31.207004547119, + 31.377513885498, + 31.477378845215, + 31.692283630371, + 31.755348205566, + 32.003520965576, + 32.444396972656, + 32.61438369751, + 33.048908233643, + 33.07551574707, + 33.278274536133, + 33.595630645752, + 33.91028213501, + 34.337677001953, + 34.645801544189, + 35.182697296143, + 35.598838806152, + 36.012474060059, + 36.654026031494, + 37.174102783203, + 37.691062927246, + 38.320404052734, + 38.94518661499, + 39.336082458496, + 39.843410491943, + 40.349597930908, + 40.509769439697, + 41.021186828613, + 41.300796508789, + 41.583572387695, + 41.869022369385, + 42.156734466553, + 42.561374664307, + 43.080310821533, + 44.171394348145, + 44.673233032227, + 46.209945678711, + 47.495380401611, + 48.882556915283, + 50.141174316406, + 51.965770721436, + 53.310932159424, + 53.958972930908, + 54.960140228271, + 55.84610748291, + 56.734252929688, + 56.934139251709, + 57.839687347412, + 58.744373321533, + 59.533309936523, + 60.899055480957, + 61.679496765137, + 62.46297454834, + 63.594078063965, + 64.83536529541, + 66.530303955078, + 68.210494995117, + 69.64818572998, + 71.885147094727, + 74.445877075195, + 76.751594543457, + 79.731002807617, + 82.797538757324, + 84.457992553711, + 86.584655761719, + 89.167251586914, + 91.046905517578, + 93.504814147949, + 95.378631591797, + 96.22135925293, + 96.628448486328, + 99.250854492188, + 99.668907165527, + 99.195091247559, + 100.0290145874, + 100.98822021484, + 101.95376586914, + 103.26971435547, + 104.46817779541, + 105.20679473877, + 106.1849899292, + 106.70650482178, + 108.0453414917, + 108.68803405762, + 109.45465087891, + 110.91656494141, + 109.37838745117, + 110.19312286377, + 110.89054107666, + 112.16345977783, + 113.54005432129, + 114.67472076416, + 115.91901397705, + 116.92639160156, + 118.16265106201, + 119.50830078125, + 120.96187591553, + 122.29209899902, + 124.30773925781, + 125.7303237915, + 126.57431030273, + 128.8072052002, + 130.21432495117, + 131.85038757324, + 134.97607421875, + 136.22640991211, + 136.44931030273, + 137.50482177734, + 138.45225524902, + 139.5228729248, + 140.59803771973, + 141.67707824707, + 142.87438964844, + 143.95710754395, + 144.92749023438, + 145.55741882324, + 146.65830993652, + 147.29898071289, + 148.17890930176, + 149.40701293945, + 150.40071105957, + 151.51042175293, + 152.84864807129, + 153.60585021973, + 154.48471069336, + 155.7119140625, + 157.16493225098, + 158.03460693359, + 159.25405883789, + 160.47047424316, + 160.87922668457, + 161.30215454102, + 162.42718505859, + 162.85820007324, + 162.95487976074, + 163.98776245117, + 164.67047119141, + 165.47090148926, + 166.73132324219, + 167.52229309082, + 169.00477600098, + 170.24440002441, + 171.93792724609, + 173.84696960449, + 175.04895019531, + 176.82572937012, + 177.55540466309, + 178.52604675293, + 178.58113098145, + 178.54368591309, + 180.25286865234, + 180.90992736816, + 182.14875793457, + 183.61158752441, + 184.14450073242, + 184.5728302002, + 185.81741333008, + 187.28511047363, + 188.39723205566, + 190.19758605957, + 191.98233032227, + 192.94879150391, + 195.07064819336, + 195.90835571289, + 200.89639282227, + 200.86282348633, + 202.13075256348, + 204.20880126953, + 203.05419921875, + 204.80026245117, + 207.3080291748, + 208.72329711914, + 210.57261657715, + 214.21580505371, + 215.67597961426, + 220.72087097168, + 218.41342163086, + 212.75346374512, + 213.23506164551, + 215.21542358398]) + +resid = np.array([ + np.nan, + .17000007629395, + .17130389809608, + -.03651398047805, + .11960058659315, + -.05888139456511, + .14059536159039, + .00932686589658, + -.11167634278536, + .04570783302188, + -.0108770346269, + -.00886330008507, + .10282856971025, + -.07230624556541, + .08900293707848, + -.0240114107728, + -.03996651992202, + .13645842671394, + -.03366377204657, + .10188252478838, + -.09296332299709, + -.01846401393414, + .01477065030485, + .0729955881834, + .00248436117545, + .10262141376734, + -.04228436201811, + .12465056031942, + .27647939324379, + .00560382334515, + .23561419546604, + -.1489082723856, + .02448422275484, + .12172746658325, + .10437148809433, + .18971465528011, + .06232447177172, + .25419962406158, + .11730266362429, + .10116269439459, + .2875237762928, + .14597341418266, + .12589547038078, + .20893961191177, + .17959471046925, + -.04518361017108, + .06391899287701, + .05659105628729, + -.24960128962994, + .09022761881351, + -.12118522822857, + -.10079623758793, + -.08357158303261, + -.06902338564396, + .04326653853059, + .13862533867359, + .61968916654587, + .02860714122653, + .92676383256912, + .59005337953568, + .60461646318436, + .41744044423103, + .85882639884949, + .33423033356667, + -.31093180179596, + .04102724045515, + -.06013804674149, + -.04610994458199, + -.63425624370575, + .06586220860481, + .06031560897827, + -.04437142238021, + .46668976545334, + -.09905604273081, + -.07949769496918, + .23702463507652, + .30592212080956, + .66463404893875, + .56969320774078, + .28950771689415, + .95181107521057, + 1.1148544549942, + .75411820411682, + 1.2484039068222, + 1.1690024137497, + -.1975435167551, + .24200716614723, + .6153416633606, + -.06725100427866, + .45309436321259, + -.10480991750956, + -.97863000631332, + -1.2213591337204, + .8715478181839, + -1.1508584022522, + -1.7689031362534, + -.39508575201035, + -.22900961339474, + -.18821682035923, + .14623281359673, + .03029025532305, + -.36817568540573, + -.10679569840431, + -.48499462008476, + .29349562525749, + -.34534454345703, + -.18803144991398, + .44535079598427, + -2.2165644168854, + .12161350995302, + .00687709869817, + .50946187973022, + .53653997182846, + .25995117425919, + .32527860999107, + .08098815381527, + .27360898256302, + .33735024929047, + .39170032739639, + .23812144994736, + .80789774656296, + .19225835800171, + -.33032417297363, + .92568749189377, + .09278241544962, + .28566908836365, + 1.5496014356613, + -.27607008814812, + -1.1263961791992, + -.24930645525455, + -.30482992529869, + -.15224970877171, + -.12287864089012, + -.09804095327854, + .02291300706565, + -.07438835501671, + -.15710659325123, + -.42748948931694, + .04259072244167, + -.35830733180046, + -.09898918122053, + .22108262777328, + -.00701736938208, + .0992873236537, + .28958559036255, + -.24864092469215, + -.10584850609303, + .21528913080692, + .38809850811958, + -.16492980718613, + .16538816690445, + .1459391862154, + -.57048463821411, + -.47923597693443, + .19784018397331, + -.4271782040596, + -.65820020437241, + .24511873722076, + -.0877638310194, + .02952514961362, + .42909786105156, + -.03132146969438, + .57771807909012, + .29522883892059, + .6555985212326, + .76207375526428, + .05302781611681, + .55105316638947, + -.42574247717857, + -.15540990233421, + -.92604118585587, + -.88112819194794, + .75632172822952, + -.25287514925003, + .29006350040436, + .45125409960747, + -.41159069538116, + -.44450175762177, + .32716807723045, + .48259317874908, + .11487878113985, + .70277869701385, + .60241633653641, + -.18233296275139, + .85120695829391, + -.37064728140831, + 3.2916390895844, + -1.4963974952698, + -.16283248364925, + .56923681497574, + -2.3088004589081, + .51979947090149, + 1.1197309494019, + .02996650896966, + .40969428420067, + 1.9223841428757, + -.21881568431854, + 2.9340152740479, + -3.8318600654602, + -6.239429473877, + -.08245316892862, + 1.2339268922806, + 1.1695692539215]) + +yr = np.array([ + np.nan, + .17000007629395, + .17130389809608, + -.03651398047805, + .11960058659315, + -.05888139456511, + .14059536159039, + .00932686589658, + -.11167634278536, + .04570783302188, + -.0108770346269, + -.00886330008507, + .10282856971025, + -.07230624556541, + .08900293707848, + -.0240114107728, + -.03996651992202, + .13645842671394, + -.03366377204657, + .10188252478838, + -.09296332299709, + -.01846401393414, + .01477065030485, + .0729955881834, + .00248436117545, + .10262141376734, + -.04228436201811, + .12465056031942, + .27647939324379, + .00560382334515, + .23561419546604, + -.1489082723856, + .02448422275484, + .12172746658325, + .10437148809433, + .18971465528011, + .06232447177172, + .25419962406158, + .11730266362429, + .10116269439459, + .2875237762928, + .14597341418266, + .12589547038078, + .20893961191177, + .17959471046925, + -.04518361017108, + .06391899287701, + .05659105628729, + -.24960128962994, + .09022761881351, + -.12118522822857, + -.10079623758793, + -.08357158303261, + -.06902338564396, + .04326653853059, + .13862533867359, + .61968916654587, + .02860714122653, + .92676383256912, + .59005337953568, + .60461646318436, + .41744044423103, + .85882639884949, + .33423033356667, + -.31093180179596, + .04102724045515, + -.06013804674149, + -.04610994458199, + -.63425624370575, + .06586220860481, + .06031560897827, + -.04437142238021, + .46668976545334, + -.09905604273081, + -.07949769496918, + .23702463507652, + .30592212080956, + .66463404893875, + .56969320774078, + .28950771689415, + .95181107521057, + 1.1148544549942, + .75411820411682, + 1.2484039068222, + 1.1690024137497, + -.1975435167551, + .24200716614723, + .6153416633606, + -.06725100427866, + .45309436321259, + -.10480991750956, + -.97863000631332, + -1.2213591337204, + .8715478181839, + -1.1508584022522, + -1.7689031362534, + -.39508575201035, + -.22900961339474, + -.18821682035923, + .14623281359673, + .03029025532305, + -.36817568540573, + -.10679569840431, + -.48499462008476, + .29349562525749, + -.34534454345703, + -.18803144991398, + .44535079598427, + -2.2165644168854, + .12161350995302, + .00687709869817, + .50946187973022, + .53653997182846, + .25995117425919, + .32527860999107, + .08098815381527, + .27360898256302, + .33735024929047, + .39170032739639, + .23812144994736, + .80789774656296, + .19225835800171, + -.33032417297363, + .92568749189377, + .09278241544962, + .28566908836365, + 1.5496014356613, + -.27607008814812, + -1.1263961791992, + -.24930645525455, + -.30482992529869, + -.15224970877171, + -.12287864089012, + -.09804095327854, + .02291300706565, + -.07438835501671, + -.15710659325123, + -.42748948931694, + .04259072244167, + -.35830733180046, + -.09898918122053, + .22108262777328, + -.00701736938208, + .0992873236537, + .28958559036255, + -.24864092469215, + -.10584850609303, + .21528913080692, + .38809850811958, + -.16492980718613, + .16538816690445, + .1459391862154, + -.57048463821411, + -.47923597693443, + .19784018397331, + -.4271782040596, + -.65820020437241, + .24511873722076, + -.0877638310194, + .02952514961362, + .42909786105156, + -.03132146969438, + .57771807909012, + .29522883892059, + .6555985212326, + .76207375526428, + .05302781611681, + .55105316638947, + -.42574247717857, + -.15540990233421, + -.92604118585587, + -.88112819194794, + .75632172822952, + -.25287514925003, + .29006350040436, + .45125409960747, + -.41159069538116, + -.44450175762177, + .32716807723045, + .48259317874908, + .11487878113985, + .70277869701385, + .60241633653641, + -.18233296275139, + .85120695829391, + -.37064728140831, + 3.2916390895844, + -1.4963974952698, + -.16283248364925, + .56923681497574, + -2.3088004589081, + .51979947090149, + 1.1197309494019, + .02996650896966, + .40969428420067, + 1.9223841428757, + -.21881568431854, + 2.9340152740479, + -3.8318600654602, + -6.239429473877, + -.08245316892862, + 1.2339268922806, + 1.1695692539215]) + +mse = np.array([ + 1.1112809181213, + .6632194519043, + .65879660844803, + .65575885772705, + .65364873409271, + .65217137336731, + .65113133192062, + .6503963470459, + .64987552165985, + .64950579404831, + .64924287796021, + .64905577898026, + .64892256259918, + .64882761240005, + .64875996112823, + .64871168136597, + .64867728948593, + .64865279197693, + .64863526821136, + .64862281084061, + .64861387014389, + .64860755205154, + .64860302209854, + .64859980344772, + .64859747886658, + .64859586954117, + .64859467744827, + .64859384298325, + .6485932469368, + .64859282970428, + .64859253168106, + .64859229326248, + .64859211444855, + .64859199523926, + .64859193563461, + .64859187602997, + .64859187602997, + .64859181642532, + .64859181642532, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068, + .64859175682068]) + +stdp = np.array([ + 0, + 0, + .02869686298072, + .05651443824172, + .0503994859755, + .06887971609831, + .05940540507436, + .08067328482866, + .08167565613985, + .06429278105497, + .07087650150061, + .06886467337608, + .06716959923506, + .08230647444725, + .07099691033363, + .08401278406382, + .07996553182602, + .07354256510735, + .09366323798895, + .08811800926924, + .10296355187893, + .08846370875835, + .0852297320962, + .08700425922871, + .09751411527395, + .09737934917212, + .11228405684233, + .1053489819169, + .12352022528648, + .16439816355705, + .1643835157156, + .19891132414341, + .17551273107529, + .17827558517456, + .19562774896622, + .21028305590153, + .23767858743668, + .24580039083958, + .28269505500793, + .29883882403374, + .31247469782829, + .35402658581734, + .37410452961922, + .39106267690659, + .42040377855301, + .44518512487411, + .43608102202415, + .44340893626213, + .44959822297096, + .40977239608765, + .42118826508522, + .40079545974731, + .38357082009315, + .36902260780334, + .35673499107361, + .36137464642525, + .38031083345413, + .47139286994934, + .47323387861252, + .60994738340378, + .69538277387619, + .7825602889061, + .84117436408997, + .9657689332962, + 1.0109325647354, + .95897275209427, + .96013957262039, + .9461076259613, + .9342554807663, + .83413934707642, + .83968591690063, + .84437066316605, + .83330947160721, + .8990553021431, + .87949693202972, + .86297762393951, + .89407861232758, + .93536442518234, + 1.0303052663803, + 1.1104937791824, + 1.1481873989105, + 1.2851470708847, + 1.4458787441254, + 1.5515991449356, + 1.7309991121292, + 1.8975404500961, + 1.8579913377762, + 1.8846583366394, + 1.9672524929047, + 1.9469071626663, + 2.0048115253448, + 1.9786299467087, + 1.8213576078415, + 1.6284521818161, + 1.7508568763733, + 1.5689061880112, + 1.2950873374939, + 1.2290096282959, + 1.1882168054581, + 1.1537625789642, + 1.1697143316269, + 1.1681711673737, + 1.106795668602, + 1.0849931240082, + 1.006507396698, + 1.0453414916992, + .98803448677063, + .95465070009232, + 1.0165599584579, + .67838954925537, + .69311982393265, + .69054269790649, + .76345545053482, + .84005492925644, + .87471830844879, + .91901183128357, + .92638796567917, + .96265280246735, + 1.0083012580872, + 1.0618740320206, + 1.0921038389206, + 1.2077431678772, + 1.2303256988525, + 1.174311041832, + 1.3072115182877, + 1.314337015152, + 1.3503924608231, + 1.5760731697083, + 1.5264053344727, + 1.34929728508, + 1.304829955101, + 1.2522557973862, + 1.222869515419, + 1.198047041893, + 1.1770839691162, + 1.1743944883347, + 1.1571066379547, + 1.1274864673615, + 1.0574153661728, + 1.058304309845, + .99898308515549, + .9789143204689, + 1.0070173740387, + 1.000718832016, + 1.0104174613953, + 1.0486439466476, + 1.0058424472809, + .98470783233643, + 1.0119106769562, + 1.0649236440659, + 1.0346088409424, + 1.0540577173233, + 1.0704846382141, + .97923594713211, + .90216588973999, + .9271782040596, + .85819715261459, + .75488126277924, + .78776079416275, + .77047789096832, + .77089905738831, + .8313245177269, + .82229107618332, + .90476810932159, + .94439232349396, + 1.0379292964935, + 1.1469690799713, + 1.1489590406418, + 1.2257302999496, + 1.1554099321365, + 1.1260533332825, + .9811190366745, + .8436843752861, + .95287209749222, + .90993344783783, + .94875508546829, + 1.0115815401077, + .94450175762177, + .87282890081406, + .91741597652435, + .98511207103729, + .9972335100174, + 1.0975805521011, + 1.1823329925537, + 1.1487929821014, + 1.270641207695, + 1.2083609104156, + 1.696394443512, + 1.4628355503082, + 1.4307631254196, + 1.5087975263596, + 1.1542117595673, + 1.2262620925903, + 1.3880327939987, + 1.3853038549423, + 1.4396153688431, + 1.7208145856857, + 1.678991317749, + 2.110867023468, + 1.524417757988, + .57946246862411, + .56406193971634, + .74643105268478]) + +icstats = np.array([ + 202, + np.nan, + -242.89663276735, + 3, + 491.79326553469, + 501.7180686269]) + + +results = Bunch( + llf=llf, + nobs=nobs, + k=k, + k_exog=k_exog, + sigma=sigma, + chi2=chi2, + df_model=df_model, + k_ar=k_ar, + k_ma=k_ma, + params=params, + cov_params=cov_params, + xb=xb, + y=y, + resid=resid, + yr=yr, + mse=mse, + stdp=stdp, + icstats=icstats +) diff --git a/statsmodels/tsa/tests/results/arima111nc_results.py b/statsmodels/tsa/tests/results/arima111nc_results.py new file mode 100644 index 0000000..c658109 --- /dev/null +++ b/statsmodels/tsa/tests/results/arima111nc_results.py @@ -0,0 +1,1297 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + +llf = np.array([-243.77512585356]) + +nobs = np.array([202]) + +k = np.array([3]) + +k_exog = np.array([1]) + +sigma = np.array([.80556855709271]) + +chi2 = np.array([14938.241729056]) + +df_model = np.array([2]) + +k_ar = np.array([1]) + +k_ma = np.array([1]) + +params = np.array([ + .99034248845249, + -.83659509233745, + .80556855709271]) + +cov_params = np.array([ + .00009906057555, + -.00026616895902, + .00007867120825, + -.00026616895902, + .00137590666911, + -.0001403880509, + .00007867120825, + -.0001403880509, + .0002129852258]).reshape(3, 3) + +xb = np.array([ + 0, + 0, + .10457526892424, + .14047028124332, + .10415132343769, + .11891452968121, + .09492295235395, + .11409470438957, + .1086763292551, + .08389142900705, + .08740901201963, + .08212262392044, + .07780049741268, + .09159570932388, + .07793674618006, + .08996207267046, + .08444581180811, + .07675409317017, + .09658851474524, + .09001308679581, + .10454939305782, + .08898131549358, + .08520055562258, + .08665482699871, + .09710033237934, + .09660832583904, + .11157563328743, + .10410477221012, + .12245775014162, + .16395011544228, + .16329728066921, + .19811384379864, + .1734282374382, + .17583830654621, + .19323042035103, + .20777989923954, + .23532645404339, + .24299769103527, + .28016451001167, + .29588291049004, + .30903342366219, + .35078409314156, + .37033796310425, + .38669663667679, + .41575729846954, + .44006872177124, + .42965853214264, + .43632391095161, + .44190016388893, + .40044051408768, + .41188025474548, + .3907016813755, + .37298321723938, + .3581600189209, + .3457590341568, + .35075950622559, + .37031736969948, + .46355310082436, + .46467992663383, + .60399496555328, + .68979620933533, + .77695161104202, + .8344908952713, + .95950168371201, + 1.0025858879089, + .94638174772263, + .94548571109772, + .92936158180237, + .91587167978287, + .81233781576157, + .81797075271606, + .8226832151413, + .81125050783157, + .87855970859528, + .85799652338028, + .84079349040985, + .87252616882324, + .9144481420517, + 1.0110183954239, + 1.0918086767197, + 1.1286484003067, + 1.2670909166336, + 1.4290360212326, + 1.533768415451, + 1.7136362791061, + 1.8794873952866, + 1.8337399959564, + 1.8569672107697, + 1.9378981590271, + 1.9133563041687, + 1.969698548317, + 1.939960360527, + 1.7767087221146, + 1.5786340236664, + 1.7050459384918, + 1.5186812877655, + 1.2397723197937, + 1.1755603551865, + 1.1372153759003, + 1.1051361560822, + 1.1244224309921, + 1.1251838207245, + 1.06432056427, + 1.0441527366638, + .96578127145767, + 1.0078399181366, + .95077663660049, + .91841346025467, + .98358678817749, + .63836628198624, + .65705251693726, + .65730959177017, + .73439955711365, + .81426596641541, + .85033398866653, + .89588165283203, + .90323758125305, + .94014054536819, + .98638904094696, + 1.040454864502, + 1.0703103542328, + 1.1875365972519, + 1.2087339162827, + 1.1495937108994, + 1.2846138477325, + 1.2899470329285, + 1.3251601457596, + 1.5544888973236, + 1.5003498792648, + 1.316685795784, + 1.2706536054611, + 1.2167699337006, + 1.1870667934418, + 1.1622149944305, + 1.1414264440536, + 1.1394081115723, + 1.1223464012146, + 1.0926969051361, + 1.0217674970627, + 1.0239287614822, + .96423649787903, + .94504725933075, + .97511827945709, + .96952658891678, + .98022425174713, + 1.0199228525162, + .97626084089279, + .95510673522949, + .98353403806686, + 1.0380674600601, + 1.0068138837814, + 1.0267919301987, + 1.0435055494308, + .94986528158188, + .87152636051178, + .89823776483536, + .82833498716354, + .72372996807098, + .75921636819839, + .74277937412262, + .74440395832062, + .80726110935211, + .79834908246994, + .88314270973206, + .92332923412323, + 1.0184471607208, + 1.12877368927, + 1.1288229227066, + 1.2057402133942, + 1.1317123174667, + 1.100532412529, + .95145136117935, + .81135284900665, + .92477059364319, + .88128125667572, + .92177194356918, + .98639768362045, + .91746246814728, + .84441828727722, + .89093261957169, + .96059763431549, + .97275197505951, + 1.0751719474792, + 1.1608537435532, + 1.124911904335, + 1.2485905885696, + 1.1829364299774, + 1.6815021038055, + 1.4374854564667, + 1.4024653434753, + 1.4807903766632, + 1.1158236265182, + 1.1908674240112, + 1.3569641113281, + 1.3532432317734, + 1.4080929756165, + 1.6949023008347, + 1.6488753557205, + 2.0886788368225, + 1.4827802181244, + .51556593179703, + .5077338218689, + .70120370388031]) + +y = np.array([ + np.nan, + 28.979999542236, + 29.25457572937, + 29.49047088623, + 29.474151611328, + 29.65891456604, + 29.64492225647, + 29.864093780518, + 29.948677062988, + 29.893890380859, + 30.00740814209, + 30.062122344971, + 30.11780166626, + 30.301595687866, + 30.29793548584, + 30.469961166382, + 30.524446487427, + 30.556753158569, + 30.786588668823, + 30.840013504028, + 31.044549942017, + 31.038982391357, + 31.105201721191, + 31.206655502319, + 31.377101898193, + 31.476608276367, + 31.691576004028, + 31.754104614258, + 32.002456665039, + 32.443950653076, + 32.613296508789, + 33.048110961914, + 33.073429107666, + 33.27583694458, + 33.593231201172, + 33.907779693604, + 34.33532333374, + 34.642997741699, + 35.180164337158, + 35.595882415771, + 36.009033203125, + 36.650783538818, + 37.170337677002, + 37.686695098877, + 38.315757751465, + 38.94006729126, + 39.329658508301, + 39.836326599121, + 40.341899871826, + 40.500438690186, + 41.011878967285, + 41.290702819824, + 41.572982788086, + 41.85816192627, + 42.14575958252, + 42.550758361816, + 43.070316314697, + 44.163555145264, + 44.664680480957, + 46.203994750977, + 47.489795684814, + 48.876949310303, + 50.134490966797, + 51.959503173828, + 53.302585601807, + 53.946380615234, + 54.945484161377, + 55.829364776611, + 56.715869903564, + 56.912334442139, + 57.817970275879, + 58.722682952881, + 59.511249542236, + 60.878559112549, + 61.657997131348, + 62.44079208374, + 63.572528839111, + 64.814453125, + 66.511016845703, + 68.19181060791, + 69.628646850586, + 71.867088317871, + 74.429039001465, + 76.733764648438, + 79.713638305664, + 82.779487609863, + 84.433738708496, + 86.55696105957, + 89.137893676758, + 91.01335144043, + 93.469696044922, + 95.339958190918, + 96.176712036133, + 96.578636169434, + 99.205047607422, + 99.618682861328, + 99.139770507813, + 99.975563049316, + 100.9372177124, + 101.9051361084, + 103.22441864014, + 104.42518615723, + 105.16432189941, + 106.14414978027, + 106.66577911377, + 108.00784301758, + 108.65077209473, + 109.41841125488, + 110.88359069824, + 109.33836364746, + 110.15705108643, + 110.85730743408, + 112.13439941406, + 113.51425933838, + 114.65033721924, + 115.89588165283, + 116.90323638916, + 118.14013671875, + 119.48638916016, + 120.94045257568, + 122.27030944824, + 124.28753662109, + 125.70873260498, + 126.54959869385, + 128.78460693359, + 130.18994140625, + 131.82516479492, + 134.95448303223, + 136.20034790039, + 136.41668701172, + 137.47065734863, + 138.41676330566, + 139.48707580566, + 140.56221008301, + 141.64143371582, + 142.83940124512, + 143.92234802246, + 144.89270019531, + 145.52177429199, + 146.62393188477, + 147.2642364502, + 148.14505004883, + 149.37510681152, + 150.36952209473, + 151.48022460938, + 152.81993103027, + 153.57626342773, + 154.45510864258, + 155.68353271484, + 157.13807678223, + 158.00682067871, + 159.22679138184, + 160.4434967041, + 160.84985351563, + 161.27151489258, + 162.39823913574, + 162.82833862305, + 162.92372131348, + 163.95921325684, + 164.64277648926, + 165.44439697266, + 166.70726013184, + 167.49835205078, + 168.98315429688, + 170.22332763672, + 171.91844177246, + 173.82876586914, + 175.02882385254, + 176.80574035645, + 177.53170776367, + 178.50051879883, + 178.55145263672, + 178.51135253906, + 180.22477722168, + 180.88128662109, + 182.12176513672, + 183.58641052246, + 184.1174621582, + 184.54441833496, + 185.79092407227, + 187.2606048584, + 188.37274169922, + 190.17517089844, + 191.96086120605, + 192.92491149902, + 195.04859924316, + 195.88293457031, + 200.88150024414, + 200.8374786377, + 202.10246276855, + 204.18078613281, + 203.01582336426, + 204.76487731934, + 207.27696228027, + 208.69123840332, + 210.54109191895, + 214.18989562988, + 215.64587402344, + 220.69868469238, + 218.37178039551, + 212.68955993652, + 213.17874145508, + 215.1701965332]) + +resid = np.array([ + np.nan, + .17000007629395, + .09542549401522, + -.12046983093023, + .06584875285625, + -.108916208148, + .1050778105855, + -.02409455552697, + -.13867701590061, + .02610917761922, + -.02740954607725, + -.02212125435472, + .09219767153263, + -.08159548044205, + .08206310123205, + -.02996070124209, + -.04444679990411, + .13324689865112, + -.03658904880285, + .09998744726181, + -.09454916417599, + -.01898162066936, + .01479982770979, + .0733450204134, + .00289814220741, + .10339243710041, + -.04157593473792, + .12589477002621, + .27754187583923, + .00605186540633, + .23670043051243, + -.14811079204082, + .02656871080399, + .1241647452116, + .10676880925894, + .1922178119421, + .06467659771442, + .25700229406357, + .11983319371939, + .10411861538887, + .29096505045891, + .14921590685844, + .12966203689575, + .21330565214157, + .18424116075039, + -.0400672107935, + .07034146040678, + .06367607414722, + -.24190320074558, + .0995594933629, + -.11187721043825, + -.09070245176554, + -.07298398017883, + -.05816079676151, + .05424249917269, + .14924050867558, + .6296826004982, + .03644690662622, + .93531775474548, + .59600579738617, + .61020302772522, + .42304915189743, + .86550986766815, + .34049755334854, + -.30258512496948, + .05361825972795, + -.0454841889441, + -.02936388924718, + -.61587244272232, + .0876636877656, + .082030788064, + -.0226839594543, + .48874869942665, + -.07856046408415, + -.05799730122089, + .25920879840851, + .32747456431389, + .6855503320694, + .5889800786972, + .30819287896156, + .97135013341904, + 1.1329106092453, + .77096086740494, + 1.2662346363068, + 1.1863652467728, + -.17949041724205, + .26625844836235, + .64303278923035, + -.03789660334587, + .48664516210556, + -.06969699263573, + -.93996042013168, + -1.1767102479935, + .92136597633362, + -1.1050474643707, + -1.7186782360077, + -.33977076411247, + -.17556031048298, + -.13721539080143, + .19485920667648, + .07558213919401, + -.32518845796585, + -.06432051956654, + -.4441542327404, + .33422181010246, + -.30784299969673, + -.15077359974384, + .48158806562424, + -2.1835913658142, + .16163675487041, + .04294444993138, + .54269498586655, + .56559586524963, + .2857401072979, + .34966295957565, + .10411833971739, + .29675936698914, + .35986250638962, + .41361248493195, + .25954058766365, + .82969123125076, + .21246488392353, + -.30873239040375, + .9504047036171, + .11538010835648, + .31005910038948, + 1.5748337507248, + -.25448590517044, + -1.1003407239914, + -.21669489145279, + -.27065354585648, + -.11676382273436, + -.08707597851753, + -.06220890209079, + .05857050418854, + -.039402063936, + -.12234635651112, + -.39269989728928, + .07823857665062, + -.32393181324005, + -.06424260139465, + .25494971871376, + .02488171122968, + .13047952950001, + .31977880001068, + -.21991983056068, + -.07626695930958, + .24489018321037, + .41647511720657, + -.13807360827923, + .19318304955959, + .17320497334003, + -.54350554943085, + -.4498653113842, + .22847975790501, + -.39823773503304, + -.62833803892136, + .27627000212669, + -.05921940878034, + .05722366645932, + .45559296011925, + -.00725806690753, + .6016600728035, + .31685426831245, + .67666161060333, + .78155589103699, + .07122328877449, + .57118928432465, + -.40575236082077, + -.1317123323679, + -.90052020549774, + -.85146051645279, + .78865325450897, + -.224773645401, + .31871569156647, + .47823718190193, + -.38640683889389, + -.41746246814728, + .35557863116264, + .50907653570175, + .13939322531223, + .72726023197174, + .62482494115829, + -.16085371375084, + .87508809566498, + -.34859669208527, + 3.3170635700226, + -1.4815051555634, + -.1374823898077, + .59753465652466, + -2.280793428421, + .5581876039505, + 1.155125617981, + .06103510409594, + .44175490736961, + 1.9539065361023, + -.19290342926979, + 2.9641311168671, + -3.8096718788147, + -6.1977920532227, + -.01855664327741, + 1.2902550697327, + 1.2147966623306]) + +yr = np.array([ + np.nan, + .17000007629395, + .09542549401522, + -.12046983093023, + .06584875285625, + -.108916208148, + .1050778105855, + -.02409455552697, + -.13867701590061, + .02610917761922, + -.02740954607725, + -.02212125435472, + .09219767153263, + -.08159548044205, + .08206310123205, + -.02996070124209, + -.04444679990411, + .13324689865112, + -.03658904880285, + .09998744726181, + -.09454916417599, + -.01898162066936, + .01479982770979, + .0733450204134, + .00289814220741, + .10339243710041, + -.04157593473792, + .12589477002621, + .27754187583923, + .00605186540633, + .23670043051243, + -.14811079204082, + .02656871080399, + .1241647452116, + .10676880925894, + .1922178119421, + .06467659771442, + .25700229406357, + .11983319371939, + .10411861538887, + .29096505045891, + .14921590685844, + .12966203689575, + .21330565214157, + .18424116075039, + -.0400672107935, + .07034146040678, + .06367607414722, + -.24190320074558, + .0995594933629, + -.11187721043825, + -.09070245176554, + -.07298398017883, + -.05816079676151, + .05424249917269, + .14924050867558, + .6296826004982, + .03644690662622, + .93531775474548, + .59600579738617, + .61020302772522, + .42304915189743, + .86550986766815, + .34049755334854, + -.30258512496948, + .05361825972795, + -.0454841889441, + -.02936388924718, + -.61587244272232, + .0876636877656, + .082030788064, + -.0226839594543, + .48874869942665, + -.07856046408415, + -.05799730122089, + .25920879840851, + .32747456431389, + .6855503320694, + .5889800786972, + .30819287896156, + .97135013341904, + 1.1329106092453, + .77096086740494, + 1.2662346363068, + 1.1863652467728, + -.17949041724205, + .26625844836235, + .64303278923035, + -.03789660334587, + .48664516210556, + -.06969699263573, + -.93996042013168, + -1.1767102479935, + .92136597633362, + -1.1050474643707, + -1.7186782360077, + -.33977076411247, + -.17556031048298, + -.13721539080143, + .19485920667648, + .07558213919401, + -.32518845796585, + -.06432051956654, + -.4441542327404, + .33422181010246, + -.30784299969673, + -.15077359974384, + .48158806562424, + -2.1835913658142, + .16163675487041, + .04294444993138, + .54269498586655, + .56559586524963, + .2857401072979, + .34966295957565, + .10411833971739, + .29675936698914, + .35986250638962, + .41361248493195, + .25954058766365, + .82969123125076, + .21246488392353, + -.30873239040375, + .9504047036171, + .11538010835648, + .31005910038948, + 1.5748337507248, + -.25448590517044, + -1.1003407239914, + -.21669489145279, + -.27065354585648, + -.11676382273436, + -.08707597851753, + -.06220890209079, + .05857050418854, + -.039402063936, + -.12234635651112, + -.39269989728928, + .07823857665062, + -.32393181324005, + -.06424260139465, + .25494971871376, + .02488171122968, + .13047952950001, + .31977880001068, + -.21991983056068, + -.07626695930958, + .24489018321037, + .41647511720657, + -.13807360827923, + .19318304955959, + .17320497334003, + -.54350554943085, + -.4498653113842, + .22847975790501, + -.39823773503304, + -.62833803892136, + .27627000212669, + -.05921940878034, + .05722366645932, + .45559296011925, + -.00725806690753, + .6016600728035, + .31685426831245, + .67666161060333, + .78155589103699, + .07122328877449, + .57118928432465, + -.40575236082077, + -.1317123323679, + -.90052020549774, + -.85146051645279, + .78865325450897, + -.224773645401, + .31871569156647, + .47823718190193, + -.38640683889389, + -.41746246814728, + .35557863116264, + .50907653570175, + .13939322531223, + .72726023197174, + .62482494115829, + -.16085371375084, + .87508809566498, + -.34859669208527, + 3.3170635700226, + -1.4815051555634, + -.1374823898077, + .59753465652466, + -2.280793428421, + .5581876039505, + 1.155125617981, + .06103510409594, + .44175490736961, + 1.9539065361023, + -.19290342926979, + 2.9641311168671, + -3.8096718788147, + -6.1977920532227, + -.01855664327741, + 1.2902550697327, + 1.2147966623306]) + +mse = np.array([ + 1.4469859600067, + 1.4469859600067, + .89943557977676, + .77543312311172, + .72303003072739, + .69548159837723, + .67933452129364, + .6692613363266, + .66273111104965, + .65839165449142, + .65546035766602, + .6534583568573, + .65208071470261, + .65112781524658, + .65046626329422, + .65000593662262, + .64968502521515, + .64946103096008, + .64930462837219, + .64919525384903, + .64911878108978, + .64906531572342, + .6490278840065, + .64900171756744, + .6489834189415, + .64897060394287, + .64896160364151, + .64895534515381, + .6489509344101, + .64894789457321, + .64894568920135, + .64894419908524, + .64894318580627, + .64894241094589, + .64894187450409, + .64894151687622, + .64894127845764, + .64894109964371, + .64894098043442, + .64894092082977, + .64894086122513, + .64894080162048, + .64894074201584, + .64894074201584, + .64894074201584, + .64894074201584, + .64894074201584, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119, + .64894068241119]) + +stdp = np.array([ + .88084751367569, + .88084751367569, + .65303039550781, + .55365419387817, + .45908725261688, + .42810925841331, + .37837743759155, + .37686342000961, + .35719576478004, + .3220648765564, + .31943875551224, + .30907514691353, + .30120712518692, + .31383177638054, + .29652059078217, + .30856171250343, + .30095273256302, + .29171526432037, + .31331890821457, + .30463594198227, + .31990340352058, + .30126947164536, + .29703867435455, + .29884466528893, + .31037190556526, + .30912432074547, + .32505416870117, + .31537705659866, + .33494210243225, + .37874156236649, + .37366089224815, + .40859284996986, + .37640652060509, + .37692713737488, + .39422073960304, + .40755322575569, + .43472331762314, + .43878075480461, + .47569087147713, + .48725643754005, + .49617394804955, + .53683114051819, + .55128628015518, + .56243091821671, + .58791494369507, + .60756206512451, + .58892780542374, + .59145200252533, + .59339815378189, + .54422444105148, + .55698639154434, + .53304374217987, + .51458370685577, + .50035130977631, + .48937830328941, + .49780988693237, + .52120143175125, + .62369203567505, + .6182547211647, + .76608312129974, + .84627467393875, + .92499214410782, + .96879118680954, + 1.0870156288147, + 1.1105998754501, + 1.0274360179901, + 1.013991355896, + .98673474788666, + .96571969985962, + .84817039966583, + .85888928174973, + .86715340614319, + .85663330554962, + .93297851085663, + .90738350152969, + .88765007257462, + .92311006784439, + .96734017133713, + 1.0690053701401, + 1.1473876237869, + 1.1740373373032, + 1.3128218650818, + 1.4704967737198, + 1.5582785606384, + 1.7273052930832, + 1.8745132684708, + 1.7853132486343, + 1.7841064929962, + 1.850741147995, + 1.800768494606, + 1.8466963768005, + 1.7976499795914, + 1.6078149080276, + 1.3938897848129, + 1.5498898029327, + 1.3492304086685, + 1.059396147728, + 1.0217411518097, + 1.0096007585526, + 1.0002405643463, + 1.0436969995499, + 1.0603114366531, + 1.0055546760559, + .99712115526199, + .92305397987366, + .9841884970665, + .92997401952744, + .90506774187088, + .9872123003006, + .61137217283249, + .65943044424057, + .67959040403366, + .77959072589874, + .87357920408249, + .91226226091385, + .95897603034973, + .96120971441269, + .99671375751495, + 1.0409790277481, + 1.0919979810715, + 1.1144404411316, + 1.2330915927887, + 1.2401138544083, + 1.161071896553, + 1.3028255701065, + 1.2938764095306, + 1.3207612037659, + 1.5610725879669, + 1.4760913848877, + 1.258552312851, + 1.2090681791306, + 1.1540271043777, + 1.12848341465, + 1.1087870597839, + 1.0936040878296, + 1.0987877845764, + 1.0858948230743, + 1.0590622425079, + .98770052194595, + 1.0002481937408, + .94235575199127, + .93150353431702, + .97381073236465, + .9726470708847, + .98864215612411, + 1.0347559452057, + .98585307598114, + .96503925323486, + .9996662735939, + 1.0601476430893, + 1.022319316864, + 1.043828368187, + 1.0604115724564, + .95495897531509, + .87365657091141, + .91232192516327, + .84078407287598, + .73495537042618, + .78849309682846, + .77909576892853, + .78874284029007, + .8637443780899, + .8540056347847, + .94784545898438, + .98641014099121, + 1.0837067365646, + 1.1925053596497, + 1.1750392913818, + 1.2460317611694, + 1.1487410068512, + 1.1075156927109, + .94060403108597, + .7950227856636, + .93615245819092, + .89293897151947, + .94407802820206, + 1.0172899961472, + .93860250711441, + .86104601621628, + .91948908567429, + .99833220243454, + 1.008442401886, + 1.1175880432129, + 1.2017351388931, + 1.1483734846115, + 1.2761443853378, + 1.188849568367, + 1.7296310663223, + 1.4202431440353, + 1.3675138950348, + 1.445098400116, + 1.031960606575, + 1.1313284635544, + 1.3214453458786, + 1.3112732172012, + 1.367110490799, + 1.674845457077, + 1.5979281663895, + 2.064112663269, + 1.3536450862885, + .30015936493874, + .36831066012383, + .64060544967651]) + +icstats = np.array([ + 202, + np.nan, + -243.77512585356, + 3, + 493.55025170713, + 503.47505479933]) + + +results = Bunch( + llf=llf, + nobs=nobs, + k=k, + k_exog=k_exog, + sigma=sigma, + chi2=chi2, + df_model=df_model, + k_ar=k_ar, + k_ma=k_ma, + params=params, + cov_params=cov_params, + xb=xb, + y=y, + resid=resid, + yr=yr, + mse=mse, + stdp=stdp, + icstats=icstats +) diff --git a/statsmodels/tsa/tests/results/arima112_css_results.py b/statsmodels/tsa/tests/results/arima112_css_results.py new file mode 100644 index 0000000..0dc7e07 --- /dev/null +++ b/statsmodels/tsa/tests/results/arima112_css_results.py @@ -0,0 +1,1315 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + +llf = np.array([-244.3852892951]) + +nobs = np.array([202]) + +k = np.array([5]) + +k_exog = np.array([1]) + +sigma = np.array([.81130812929037]) + +chi2 = np.array([73901.783883385]) + +df_model = np.array([3]) + +k_ar = np.array([1]) + +k_ma = np.array([2]) + +params = np.array([ + .91963917600489, + -.89804855498306, + 1.3032353997768, + .30230174935463, + .65822088065264]) + +cov_params = np.array([ + .00622027554245, + .00026933156699, + -.00014478009121, + -.00010527901395, + .00006880952561, + .00026933156699, + .0023661521973, + -.00263264462948, + -.00241927046074, + -.00069258998629, + -.00014478009121, + -.00263264462948, + .003637275855, + .0033625395431, + .00072507981262, + -.00010527901395, + -.00241927046074, + .0033625395431, + .00312013997649, + .00067166747844, + .00006880952561, + -.00069258998629, + .00072507981262, + .00067166747844, + .00108477120916]).reshape(5, 5) + +xb = np.array([ + .91963917016983, + .91963917016983, + .69261693954468, + .76115423440933, + .63710719347, + .77478265762329, + .61527073383331, + .80501782894135, + .62182641029358, + .72158020734787, + .66619211435318, + .72980058193207, + .64935982227325, + .77660953998566, + .6069877743721, + .79818457365036, + .60795724391937, + .7583304643631, + .68147450685501, + .72765469551086, + .69699174165726, + .69102382659912, + .67753201723099, + .72617518901825, + .69977235794067, + .713603079319, + .72478419542313, + .68503832817078, + .75677126646042, + .79034942388535, + .68609654903412, + .83208250999451, + .60605573654175, + .80849212408066, + .69862711429596, + .80978256464005, + .7383074760437, + .78789436817169, + .79390448331833, + .79169547557831, + .76283228397369, + .87939429283142, + .75783687829971, + .85010063648224, + .80657452344894, + .86508285999298, + .72368890047073, + .86846202611923, + .75351697206497, + .74047154188156, + .82022970914841, + .73184186220169, + .7623735666275, + .74929028749466, + .75702118873596, + .79036456346512, + .81429827213287, + 1.0007030963898, + .70464313030243, + 1.2375881671906, + .82733017206192, + 1.1780800819397, + .83767229318619, + 1.3407131433487, + .7835128903389, + .99667322635651, + .82677388191223, + 1.0330017805099, + .78713357448578, + .80603551864624, + .91298097372055, + .94862020015717, + .83088356256485, + 1.1405943632126, + .72683191299438, + 1.0197489261627, + .88344657421112, + 1.1016070842743, + 1.0485582351685, + 1.1717364788055, + .94894939661026, + 1.418029665947, + 1.2063212394714, + 1.3504880666733, + 1.4053744077682, + 1.5106836557388, + .91192328929901, + 1.4546687602997, + 1.2100585699081, + 1.2459771633148, + 1.2914154529572, + 1.1733019351959, + .80550068616867, + .88859277963638, + 1.5257360935211, + .49089628458023, + .75268715620041, + .92090040445328, + .99410575628281, + .87882828712463, + 1.1253950595856, + .89082646369934, + .9317963719368, + .90858340263367, + .82737028598785, + 1.0978132486343, + .74325948953629, + .98125350475311, + 1.0478370189667, + .03625157848001, + 1.3422871828079, + .51377469301224, + 1.3643686771393, + .70055514574051, + 1.2559896707535, + .71517109870911, + 1.1997950077057, + .75360465049744, + 1.2862613201141, + .79965251684189, + 1.2606881856918, + 1.018030166626, + 1.1752370595932, + .69517260789871, + 1.597958445549, + .65335071086884, + 1.4763361215591, + 1.2708671092987, + 1.0432199239731, + .561203956604, + 1.2630445957184, + .66821777820587, + 1.2384748458862, + .70777904987335, + 1.2246036529541, + .75373476743698, + 1.199233174324, + .69312900304794, + 1.0659650564194, + .80386221408844, + .99243313074112, + .78622406721115, + 1.1766475439072, + .74267518520355, + 1.1679803133011, + .85658311843872, + .99335825443268, + .79920876026154, + 1.1595865488052, + .92043119668961, + .98299539089203, + .94316083192825, + 1.0661553144455, + .6393609046936, + .9456650018692, + .91597771644592, + .80332309007645, + .65838772058487, + 1.1093089580536, + .68860310316086, + 1.0485997200012, + .89771980047226, + .94581252336502, + 1.0480616092682, + 1.0014315843582, + 1.1307729482651, + 1.1770483255386, + .89873492717743, + 1.2652103900909, + .66434383392334, + 1.1431220769882, + .44322970509529, + .9269899725914, + 1.0786435604095, + .82789659500122, + 1.0368362665176, + 1.0712716579437, + .70438456535339, + .88966482877731, + 1.009087562561, + 1.0887442827225, + .88976800441742, + 1.2735350131989, + 1.0157470703125, + .95522791147232, + 1.3003809452057, + .73179203271866, + 2.4736785888672, + -.25176140666008, + 1.9082181453705, + .53501582145691, + .7591078877449, + 1.0281100273132, + 1.6240043640137, + .60095232725143, + 1.6211705207825, + 1.344465970993, + 1.124480009079, + 2.1775946617126, + -.71973150968552, + -.37754261493683, + 1.2329530715942, + 1.127131819725]) + +y = np.array([ + np.nan, + 29.899639129639, + 29.842617034912, + 30.111154556274, + 30.007108688354, + 30.314783096313, + 30.165269851685, + 30.555017471313, + 30.461826324463, + 30.531579971313, + 30.586193084717, + 30.709800720215, + 30.689361572266, + 30.986608505249, + 30.826986312866, + 31.178184509277, + 31.047958374023, + 31.238330841064, + 31.371475219727, + 31.477655410767, + 31.636991500854, + 31.641023635864, + 31.697532653809, + 31.846176147461, + 31.979772567749, + 32.093601226807, + 32.304782867432, + 32.335037231445, + 32.636772155762, + 33.070346832275, + 33.136096954346, + 33.682079315186, + 33.506057739258, + 33.908489227295, + 34.098628997803, + 34.509784698486, + 34.838306427002, + 35.187896728516, + 35.693904876709, + 36.091693878174, + 36.462833404541, + 37.179393768311, + 37.557834625244, + 38.150100708008, + 38.706577301025, + 39.365081787109, + 39.623691558838, + 40.268463134766, + 40.653518676758, + 40.840469360352, + 41.420227050781, + 41.631843566895, + 41.962375640869, + 42.249290466309, + 42.557022094727, + 42.990364074707, + 43.514297485352, + 44.700702667236, + 44.904644012451, + 46.837585449219, + 47.627330780029, + 49.278079986572, + 50.137672424316, + 52.340713500977, + 53.083511352539, + 53.996673583984, + 54.826774597168, + 55.933002471924, + 56.587131500244, + 56.906032562256, + 57.912979125977, + 58.848621368408, + 59.530883789063, + 61.140594482422, + 61.526832580566, + 62.619747161865, + 63.583446502686, + 65.001609802246, + 66.548561096191, + 68.27173614502, + 69.448951721191, + 72.018028259277, + 74.206321716309, + 76.550483703613, + 79.405372619629, + 82.410682678223, + 83.511924743652, + 86.154663085938, + 88.410057067871, + 90.345977783203, + 92.791412353516, + 94.573303222656, + 95.205505371094, + 95.888595581055, + 99.025733947754, + 98.590896606445, + 98.652687072754, + 99.720901489258, + 100.79410552979, + 101.67883300781, + 103.22539520264, + 104.19082641602, + 105.03179168701, + 106.00858306885, + 106.52736663818, + 108.09781646729, + 108.44326019287, + 109.48125457764, + 110.94783782959, + 108.73625183105, + 110.84228515625, + 110.71376800537, + 112.7643737793, + 113.40055084229, + 115.05599212646, + 115.71517181396, + 117.19979858398, + 117.95359802246, + 119.78626251221, + 120.69965362549, + 122.46068572998, + 124.1180267334, + 125.67523956299, + 126.09517669678, + 129.09796142578, + 129.55334472656, + 131.97633361816, + 134.67086791992, + 135.74320983887, + 135.66120910645, + 137.46304321289, + 137.86820983887, + 139.53848266602, + 140.10777282715, + 141.724609375, + 142.45373535156, + 143.99923706055, + 144.49313354492, + 145.56596374512, + 146.40386962891, + 147.29243469238, + 147.98622131348, + 149.57664489746, + 150.14266967773, + 151.66798400879, + 152.65658569336, + 153.59336853027, + 154.29920959473, + 155.85958862305, + 157.02043151855, + 157.98300170898, + 159.14315795898, + 160.46615600586, + 160.53935241699, + 161.34565734863, + 162.41598510742, + 162.80332946777, + 162.85838317871, + 164.30931091309, + 164.5885925293, + 165.74859619141, + 166.7977142334, + 167.64581298828, + 169.14807128906, + 170.30143737793, + 172.03076171875, + 173.87704467773, + 174.79872131348, + 176.86521911621, + 177.06433105469, + 178.54312133789, + 178.0432434082, + 178.62698364258, + 180.37864685059, + 180.82789611816, + 182.23683166504, + 183.67127990723, + 183.90438842773, + 184.58966064453, + 185.90908813477, + 187.38874816895, + 188.2897644043, + 190.37353515625, + 191.81575012207, + 192.75523376465, + 195.10038757324, + 195.43179321289, + 201.67367553711, + 199.14823913574, + 202.60821533203, + 203.23501586914, + 202.65910339355, + 204.60211181641, + 207.54400634766, + 207.93894958496, + 210.75416564941, + 213.83946228027, + 215.12147521973, + 220.78759765625, + 216.16928100586, + 211.79644775391, + 213.90396118164, + 215.59613037109]) + +resid = np.array([ + np.nan, + -.74963909387589, + -.49261617660522, + -.74115377664566, + -.46710711717606, + -.76478433609009, + -.41527000069618, + -.71501767635345, + -.65182709693909, + -.61157959699631, + -.6061926484108, + -.66979920864105, + -.47936165332794, + -.76660931110382, + -.44698792695999, + -.73818320035934, + -.56795823574066, + -.54832947254181, + -.62147504091263, + -.53765416145325, + -.68699151277542, + -.6210241317749, + -.57753163576126, + -.56617534160614, + -.59977388381958, + -.51360231637955, + -.65478450059891, + -.45503878593445, + -.35677161812782, + -.62034744024277, + -.2860988676548, + -.78207945823669, + -.40605875849724, + -.50848907232285, + -.39862787723541, + -.40978488326073, + -.43830442428589, + -.28789436817169, + -.39390674233437, + -.3916939496994, + -.16283383965492, + -.37939432263374, + -.25783684849739, + -.25009834766388, + -.20657606422901, + -.46508130431175, + -.22368888556957, + -.36846202611923, + -.55352002382278, + -.24047155678272, + -.52022665739059, + -.43184259533882, + -.46237435936928, + -.44929105043411, + -.35701966285706, + -.29036456346512, + .1857016980648, + -.50070303678513, + .69535458087921, + -.03758737072349, + .47266906499863, + .02192067168653, + .86232846975327, + -.04071394726634, + -.08351214230061, + .0033267585095, + .07322765141726, + -.13300403952599, + -.48713436722755, + .09396601468325, + -.01297946088016, + -.14862097799778, + .4691156744957, + -.34059509634972, + .073167309165, + .08025334775448, + .31655418872833, + .49839133024216, + .55144023895264, + .22826506197453, + 1.1510490179062, + .9819718003273, + .9936757683754, + 1.4495149850845, + 1.4946271181107, + .18931329250336, + 1.1880751848221, + 1.0453312397003, + .68994289636612, + 1.1540243625641, + .60858601331711, + -.17330189049244, + -.20550219714642, + 1.611407160759, + -.92573761940002, + -.69089323282242, + .14731439948082, + .07909959554672, + .00589422974735, + .42116710543633, + .07460948079824, + -.09083105623722, + .06820363551378, + -.30858492851257, + .47263273596764, + -.39781630039215, + .05674355849624, + .41874802112579, + -2.2478415966034, + .76375144720078, + -.64229023456573, + .68622988462448, + -.06437320262194, + .39945095777512, + -.0559926815331, + .28482890129089, + .00020190737268, + .54639840126038, + .11374024301767, + .50034290552139, + .63931334018707, + .38197138905525, + -.27523550391197, + 1.404825925827, + -.1979645639658, + .94665539264679, + 1.4236577749252, + .02913599461317, + -.643210709095, + .53878688812256, + -.26304465532303, + .43178829550743, + -.13848400115967, + .39222705364227, + -.02460673451424, + .34627133607864, + -.19923311471939, + .00686796056107, + .03404098749161, + -.10386525094509, + -.09243924915791, + .41377285122871, + -.17664749920368, + .35733091831207, + .13202276825905, + -.05658006668091, + -.09336434304714, + .40078815817833, + .24042254686356, + -.02043732441962, + .217001542449, + .25683608651161, + -.56615537405014, + -.13936093449593, + .15434110164642, + -.41597774624825, + -.60332614183426, + .34161224961281, + -.40931203961372, + .11139994114637, + .15139718353748, + -.09771674126387, + .45419663190842, + .15193535387516, + .5985592007637, + .66923010349274, + .02294866926968, + .80127727985382, + -.46522265672684, + .33565619587898, + -.94310986995697, + -.34323886036873, + .67301613092422, + -.37864658236504, + .37210035324097, + .3631728887558, + -.47128081321716, + -.20438456535339, + .3103321492672, + .3909215927124, + .01124659087509, + .81024420261383, + .42646199464798, + -.01574708521366, + 1.044772028923, + -.40038701891899, + 3.768208026886, + -2.273681640625, + 1.5517644882202, + .09178187698126, + -1.3350188732147, + .91490334272385, + 1.317883014679, + -.20600511133671, + 1.1940457820892, + 1.7408289909363, + .15753293037415, + 3.4885265827179, + -3.8985877037048, + -3.9952800273895, + .87455189228058, + .56503582000732, + .78886848688126]) + +yr = np.array([ + np.nan, + -.74963909387589, + -.49261617660522, + -.74115377664566, + -.46710711717606, + -.76478433609009, + -.41527000069618, + -.71501767635345, + -.65182709693909, + -.61157959699631, + -.6061926484108, + -.66979920864105, + -.47936165332794, + -.76660931110382, + -.44698792695999, + -.73818320035934, + -.56795823574066, + -.54832947254181, + -.62147504091263, + -.53765416145325, + -.68699151277542, + -.6210241317749, + -.57753163576126, + -.56617534160614, + -.59977388381958, + -.51360231637955, + -.65478450059891, + -.45503878593445, + -.35677161812782, + -.62034744024277, + -.2860988676548, + -.78207945823669, + -.40605875849724, + -.50848907232285, + -.39862787723541, + -.40978488326073, + -.43830442428589, + -.28789436817169, + -.39390674233437, + -.3916939496994, + -.16283383965492, + -.37939432263374, + -.25783684849739, + -.25009834766388, + -.20657606422901, + -.46508130431175, + -.22368888556957, + -.36846202611923, + -.55352002382278, + -.24047155678272, + -.52022665739059, + -.43184259533882, + -.46237435936928, + -.44929105043411, + -.35701966285706, + -.29036456346512, + .1857016980648, + -.50070303678513, + .69535458087921, + -.03758737072349, + .47266906499863, + .02192067168653, + .86232846975327, + -.04071394726634, + -.08351214230061, + .0033267585095, + .07322765141726, + -.13300403952599, + -.48713436722755, + .09396601468325, + -.01297946088016, + -.14862097799778, + .4691156744957, + -.34059509634972, + .073167309165, + .08025334775448, + .31655418872833, + .49839133024216, + .55144023895264, + .22826506197453, + 1.1510490179062, + .9819718003273, + .9936757683754, + 1.4495149850845, + 1.4946271181107, + .18931329250336, + 1.1880751848221, + 1.0453312397003, + .68994289636612, + 1.1540243625641, + .60858601331711, + -.17330189049244, + -.20550219714642, + 1.611407160759, + -.92573761940002, + -.69089323282242, + .14731439948082, + .07909959554672, + .00589422974735, + .42116710543633, + .07460948079824, + -.09083105623722, + .06820363551378, + -.30858492851257, + .47263273596764, + -.39781630039215, + .05674355849624, + .41874802112579, + -2.2478415966034, + .76375144720078, + -.64229023456573, + .68622988462448, + -.06437320262194, + .39945095777512, + -.0559926815331, + .28482890129089, + .00020190737268, + .54639840126038, + .11374024301767, + .50034290552139, + .63931334018707, + .38197138905525, + -.27523550391197, + 1.404825925827, + -.1979645639658, + .94665539264679, + 1.4236577749252, + .02913599461317, + -.643210709095, + .53878688812256, + -.26304465532303, + .43178829550743, + -.13848400115967, + .39222705364227, + -.02460673451424, + .34627133607864, + -.19923311471939, + .00686796056107, + .03404098749161, + -.10386525094509, + -.09243924915791, + .41377285122871, + -.17664749920368, + .35733091831207, + .13202276825905, + -.05658006668091, + -.09336434304714, + .40078815817833, + .24042254686356, + -.02043732441962, + .217001542449, + .25683608651161, + -.56615537405014, + -.13936093449593, + .15434110164642, + -.41597774624825, + -.60332614183426, + .34161224961281, + -.40931203961372, + .11139994114637, + .15139718353748, + -.09771674126387, + .45419663190842, + .15193535387516, + .5985592007637, + .66923010349274, + .02294866926968, + .80127727985382, + -.46522265672684, + .33565619587898, + -.94310986995697, + -.34323886036873, + .67301613092422, + -.37864658236504, + .37210035324097, + .3631728887558, + -.47128081321716, + -.20438456535339, + .3103321492672, + .3909215927124, + .01124659087509, + .81024420261383, + .42646199464798, + -.01574708521366, + 1.044772028923, + -.40038701891899, + 3.768208026886, + -2.273681640625, + 1.5517644882202, + .09178187698126, + -1.3350188732147, + .91490334272385, + 1.317883014679, + -.20600511133671, + 1.1940457820892, + 1.7408289909363, + .15753293037415, + 3.4885265827179, + -3.8985877037048, + -3.9952800273895, + .87455189228058, + .56503582000732, + .78886848688126]) + +mse = np.array([ + 1.8363103866577, + .82643759250641, + .69298559427261, + .67553198337555, + .67162227630615, + .67045229673386, + .66999220848083, + .66973727941513, + .66954612731934, + .66937738656998, + .66921871900558, + .66906636953354, + .66891890764236, + .66877597570419, + .66863715648651, + .66850233078003, + .66837131977081, + .66824388504028, + .6681199669838, + .66799944639206, + .6678820848465, + .66776782274246, + .66765648126602, + .66754806041718, + .66744232177734, + .66733926534653, + .66723877191544, + .66714072227478, + .66704499721527, + .66695153713226, + .66686034202576, + .66677123308182, + .66668421030045, + .66659909486771, + .66651594638824, + .66643464565277, + .66635513305664, + .66627734899521, + .66620123386383, + .66612672805786, + .6660538315773, + .66598242521286, + .66591250896454, + .66584402322769, + .66577690839767, + .66571110486984, + .66564667224884, + .66558349132538, + .66552156209946, + .66546076536179, + .66540116071701, + .66534268856049, + .66528534889221, + .6652290225029, + .66517376899719, + .6651194691658, + .66506624221802, + .6650139093399, + .66496247053146, + .66491198539734, + .66486239433289, + .66481363773346, + .6647657752037, + .66471868753433, + .66467237472534, + .66462683677673, + .66458207368851, + .66453808546066, + .66449475288391, + .6644521355629, + .66441023349762, + .66436898708344, + .66432839632034, + .66428846120834, + .66424912214279, + .66421037912369, + .66417229175568, + .66413474082947, + .66409778594971, + .66406136751175, + .66402548551559, + .66399013996124, + .66395533084869, + .6639209985733, + .66388720273972, + .66385388374329, + .66382104158401, + .66378861665726, + .6637567281723, + .66372525691986, + .66369420289993, + .66366362571716, + .66363340616226, + .66360366344452, + .66357427835464, + .66354531049728, + .66351670026779, + .66348850727081, + .6634606719017, + .66343319416046, + .66340607404709, + .66337931156158, + .66335290670395, + .66332685947418, + .66330111026764, + .66327565908432, + .66325056552887, + .66322582960129, + .66320133209229, + .66317713260651, + .6631532907486, + .66312968730927, + .66310638189316, + .66308337450027, + .66306066513062, + .66303819417953, + .66301596164703, + .66299402713776, + .6629723906517, + .66295093297958, + .66292977333069, + .66290885210037, + .66288816928864, + .66286766529083, + .66284745931625, + .66282749176025, + .66280770301819, + .6627881526947, + .66276878118515, + .66274970769882, + .66273081302643, + .66271209716797, + .66269356012344, + .6626752614975, + .66265720129013, + .66263926029205, + .66262155771255, + .66260403394699, + .66258668899536, + .66256952285767, + .66255259513855, + .66253578662872, + .66251915693283, + .66250270605087, + .6624863743782, + .66247028112411, + .66245430707932, + .66243851184845, + .66242289543152, + .66240739822388, + .66239207983017, + .6623769402504, + .66236186027527, + .66234701871872, + .66233229637146, + .66231769323349, + .66230326890945, + .66228896379471, + .66227477788925, + .66226077079773, + .6622468829155, + .66223311424255, + .6622194647789, + .66220593452454, + .66219258308411, + .66217935085297, + .66216617822647, + .66215318441391, + .66214030981064, + .66212749481201, + .66211485862732, + .66210234165192, + .66208988428116, + .66207760572433, + .66206538677216, + .66205328702927, + .66204130649567, + .66202944517136, + .66201764345169, + .66200596094131, + .66199439764023, + .66198295354843, + .66197156906128, + .66196030378342, + .66194915771484, + .66193807125092, + .66192710399628, + .66191619634628, + .66190540790558, + .66189467906952, + .66188406944275, + .66187357902527, + .66186314821243, + .66185277700424, + .66184252500534, + .66183233261108, + .66182225942612, + .66181224584579, + .66180229187012, + .66179245710373, + .66178268194199, + .66177302598953, + .66176337003708]) + +stdp = np.array([ + .91963917016983, + .91963917016983, + .69261693954468, + .76115423440933, + .63710719347, + .77478265762329, + .61527073383331, + .80501782894135, + .62182641029358, + .72158020734787, + .66619211435318, + .72980058193207, + .64935982227325, + .77660953998566, + .6069877743721, + .79818457365036, + .60795724391937, + .7583304643631, + .68147450685501, + .72765469551086, + .69699174165726, + .69102382659912, + .67753201723099, + .72617518901825, + .69977235794067, + .713603079319, + .72478419542313, + .68503832817078, + .75677126646042, + .79034942388535, + .68609654903412, + .83208250999451, + .60605573654175, + .80849212408066, + .69862711429596, + .80978256464005, + .7383074760437, + .78789436817169, + .79390448331833, + .79169547557831, + .76283228397369, + .87939429283142, + .75783687829971, + .85010063648224, + .80657452344894, + .86508285999298, + .72368890047073, + .86846202611923, + .75351697206497, + .74047154188156, + .82022970914841, + .73184186220169, + .7623735666275, + .74929028749466, + .75702118873596, + .79036456346512, + .81429827213287, + 1.0007030963898, + .70464313030243, + 1.2375881671906, + .82733017206192, + 1.1780800819397, + .83767229318619, + 1.3407131433487, + .7835128903389, + .99667322635651, + .82677388191223, + 1.0330017805099, + .78713357448578, + .80603551864624, + .91298097372055, + .94862020015717, + .83088356256485, + 1.1405943632126, + .72683191299438, + 1.0197489261627, + .88344657421112, + 1.1016070842743, + 1.0485582351685, + 1.1717364788055, + .94894939661026, + 1.418029665947, + 1.2063212394714, + 1.3504880666733, + 1.4053744077682, + 1.5106836557388, + .91192328929901, + 1.4546687602997, + 1.2100585699081, + 1.2459771633148, + 1.2914154529572, + 1.1733019351959, + .80550068616867, + .88859277963638, + 1.5257360935211, + .49089628458023, + .75268715620041, + .92090040445328, + .99410575628281, + .87882828712463, + 1.1253950595856, + .89082646369934, + .9317963719368, + .90858340263367, + .82737028598785, + 1.0978132486343, + .74325948953629, + .98125350475311, + 1.0478370189667, + .03625157848001, + 1.3422871828079, + .51377469301224, + 1.3643686771393, + .70055514574051, + 1.2559896707535, + .71517109870911, + 1.1997950077057, + .75360465049744, + 1.2862613201141, + .79965251684189, + 1.2606881856918, + 1.018030166626, + 1.1752370595932, + .69517260789871, + 1.597958445549, + .65335071086884, + 1.4763361215591, + 1.2708671092987, + 1.0432199239731, + .561203956604, + 1.2630445957184, + .66821777820587, + 1.2384748458862, + .70777904987335, + 1.2246036529541, + .75373476743698, + 1.199233174324, + .69312900304794, + 1.0659650564194, + .80386221408844, + .99243313074112, + .78622406721115, + 1.1766475439072, + .74267518520355, + 1.1679803133011, + .85658311843872, + .99335825443268, + .79920876026154, + 1.1595865488052, + .92043119668961, + .98299539089203, + .94316083192825, + 1.0661553144455, + .6393609046936, + .9456650018692, + .91597771644592, + .80332309007645, + .65838772058487, + 1.1093089580536, + .68860310316086, + 1.0485997200012, + .89771980047226, + .94581252336502, + 1.0480616092682, + 1.0014315843582, + 1.1307729482651, + 1.1770483255386, + .89873492717743, + 1.2652103900909, + .66434383392334, + 1.1431220769882, + .44322970509529, + .9269899725914, + 1.0786435604095, + .82789659500122, + 1.0368362665176, + 1.0712716579437, + .70438456535339, + .88966482877731, + 1.009087562561, + 1.0887442827225, + .88976800441742, + 1.2735350131989, + 1.0157470703125, + .95522791147232, + 1.3003809452057, + .73179203271866, + 2.4736785888672, + -.25176140666008, + 1.9082181453705, + .53501582145691, + .7591078877449, + 1.0281100273132, + 1.6240043640137, + .60095232725143, + 1.6211705207825, + 1.344465970993, + 1.124480009079, + 2.1775946617126, + -.71973150968552, + -.37754261493683, + 1.2329530715942, + 1.127131819725]) + +icstats = np.array([ + 202, + np.nan, + -244.3852892951, + 5, + 498.7705785902, + 515.31191707721]) + + +results = Bunch( + llf=llf, + nobs=nobs, + k=k, + k_exog=k_exog, + sigma=sigma, + chi2=chi2, + df_model=df_model, + k_ar=k_ar, + k_ma=k_ma, + params=params, + cov_params=cov_params, + xb=xb, + y=y, + resid=resid, + yr=yr, + mse=mse, + stdp=stdp, + icstats=icstats +) diff --git a/statsmodels/tsa/tests/results/arima112_results.py b/statsmodels/tsa/tests/results/arima112_results.py new file mode 100644 index 0000000..4cbecbc --- /dev/null +++ b/statsmodels/tsa/tests/results/arima112_results.py @@ -0,0 +1,1315 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + +llf = np.array([-245.40783909604]) + +nobs = np.array([202]) + +k = np.array([5]) + +k_exog = np.array([1]) + +sigma = np.array([.8100467417583]) + +chi2 = np.array([2153.20304012]) + +df_model = np.array([3]) + +k_ar = np.array([1]) + +k_ma = np.array([2]) + +params = np.array([ + .92817025087557, + -.89593490671979, + 1.3025011610587, + .30250063082791, + .8100467417583]) + +cov_params = np.array([ + .00638581549851, + .0001858475428, + 2.8222806545671, + .8538806860364, + -1.1429127085819, + .0001858475428, + .00132037832566, + -.14420925344502, + -.04447007102804, + .0576156187095, + 2.8222806545671, + -.14420925344502, + 40397.568324803, + 12222.977216556, + -16359.547340433, + .8538806860364, + -.04447007102804, + 12222.977216556, + 3698.2722243412, + -4949.8609964351, + -1.1429127085819, + .0576156187095, + -16359.547340433, + -4949.8609964351, + 6625.0231409853]).reshape(5, 5) + +xb = np.array([ + .92817026376724, + .92817026376724, + .69511789083481, + .77192437648773, + .66135895252228, + .77525061368942, + .64687132835388, + .79659670591354, + .65842008590698, + .71215486526489, + .69971066713333, + .72092038393021, + .68201982975006, + .76510280370712, + .64253836870193, + .78239262104034, + .64609551429749, + .74087703227997, + .71774411201477, + .7119727730751, + .73067259788513, + .67785596847534, + .70898467302322, + .71334755420685, + .72984194755554, + .7017787694931, + .75292426347733, + .67507487535477, + .78219056129456, + .78040039539337, + .71250075101852, + .82028061151505, + .63505899906158, + .79452306032181, + .72773635387421, + .79555094242096, + .76685506105423, + .77427339553833, + .82101213932037, + .77917188405991, + .78917801380157, + .86641925573349, + .78457218408585, + .83697980642319, + .83281791210175, + .85224026441574, + .75030690431595, + .8551008105278, + .78025943040848, + .72790426015854, + .84552866220474, + .72061747312546, + .78669738769531, + .73868823051453, + .78071022033691, + .78002023696899, + .83737623691559, + .98988044261932, + .72882527112961, + 1.2245427370071, + .85331875085831, + 1.1637357473373, + .86477434635162, + 1.3248475790024, + .81245219707489, + .98008638620377, + .85591268539429, + 1.0162551403046, + .8165408372879, + .78947591781616, + .94166398048401, + .93266606330872, + .85924750566483, + 1.1245046854019, + .75576168298721, + 1.0030617713928, + .91267073154449, + 1.0848042964935, + 1.0778224468231, + 1.1551086902618, + .97817331552505, + 1.4012540578842, + 1.2360861301422, + 1.3335381746292, + 1.4352362155914, + 1.4941285848618, + .9415163397789, + 1.437669634819, + 1.2404690980911, + 1.2285294532776, + 1.3219480514526, + 1.1560415029526, + .83524394035339, + .87116771936417, + 1.5561962127686, + .47358739376068, + .78093349933624, + .90549737215042, + 1.0217791795731, + .86397403478622, + 1.1526786088943, + .87662625312805, + .95803648233414, + .89513635635376, + .85281348228455, + 1.0852742195129, + .76808404922485, + .96872144937515, + 1.0732915401459, + .02145584858954, + 1.3687089681625, + .50049883127213, + 1.3895837068558, + .6889950633049, + 1.2795144319534, + .7050421833992, + 1.2218985557556, + .74481928348541, + 1.3074514865875, + .7919961810112, + 1.2807723283768, + 1.0120536088943, + 1.1938916444778, + .68923074007034, + 1.6174983978271, + .64740318059921, + 1.4949930906296, + 1.2678960561752, + 1.0586776733398, + .55762887001038, + 1.2790743112564, + .66515874862671, + 1.2538269758224, + .70554333925247, + 1.2391568422318, + .75241559743881, + 1.2129040956497, + .69235223531723, + 1.0785228013992, + .8043577671051, + 1.0037930011749, + .78750842809677, + 1.1880930662155, + .74399447441101, + 1.1791603565216, + .85870295763016, + 1.0032330751419, + .8019300699234, + 1.1696527004242, + .92376220226288, + .99186056852341, + .94733852148056, + 1.0748032331467, + .64247089624405, + .95419937372208, + .92043441534042, + .8104555606842, + .66252142190933, + 1.1178470849991, + .69223344326019, + 1.0570795536041, + .90239083766937, + .95320242643356, + 1.0541093349457, + 1.0082466602325, + 1.1376332044601, + 1.1841852664948, + .90440809726715, + 1.2733660936356, + .66835701465607, + 1.1515763998032, + .44600257277489, + .93500959873199, + 1.0847823619843, + .83353632688522, + 1.0442448854446, + 1.077241897583, + .71010553836823, + .89557945728302, + 1.0163468122482, + 1.094814658165, + .89641278982162, + 1.2808450460434, + 1.0223702192307, + .96094745397568, + 1.309353351593, + .73499941825867, + 2.4902238845825, + -.2579345703125, + 1.9272556304932, + .53125941753387, + .7708500623703, + 1.0312130451202, + 1.6360099315643, + .6022145152092, + 1.6338716745377, + 1.3494771718979, + 1.1322995424271, + 2.1901025772095, + -.72639065980911, + -.37026473879814, + 1.2391144037247, + 1.1353877782822]) + +y = np.array([ + np.nan, + 29.908170700073, + 29.84511756897, + 30.121925354004, + 30.031360626221, + 30.315252304077, + 30.196870803833, + 30.5465965271, + 30.498420715332, + 30.52215385437, + 30.619710922241, + 30.70092010498, + 30.722021102905, + 30.975101470947, + 30.862537384033, + 31.162391662598, + 31.086095809937, + 31.220876693726, + 31.407745361328, + 31.461973190308, + 31.670673370361, + 31.627857208252, + 31.728984832764, + 31.833349227905, + 32.009841918945, + 32.08177947998, + 32.33292388916, + 32.325073242188, + 32.662189483643, + 33.060398101807, + 33.162502288818, + 33.670280456543, + 33.535060882568, + 33.894519805908, + 34.127738952637, + 34.495552062988, + 34.866851806641, + 35.17427444458, + 35.721012115479, + 36.079170227051, + 36.489177703857, + 37.16641998291, + 37.584571838379, + 38.136978149414, + 38.732818603516, + 39.352241516113, + 39.65030670166, + 40.255104064941, + 40.68025970459, + 40.827903747559, + 41.445526123047, + 41.620620727539, + 41.986698150635, + 42.238689422607, + 42.580707550049, + 42.98002243042, + 43.537376403809, + 44.689880371094, + 44.928825378418, + 46.824542999268, + 47.653316497803, + 49.263732910156, + 50.164772033691, + 52.324848175049, + 53.112449645996, + 53.980087280273, + 54.855911254883, + 55.916255950928, + 56.616539001465, + 56.889472961426, + 57.941665649414, + 58.832668304443, + 59.55924987793, + 61.124504089355, + 61.555759429932, + 62.603061676025, + 63.612670898438, + 64.984802246094, + 66.577819824219, + 68.255104064941, + 69.478172302246, + 72.001251220703, + 74.236083984375, + 76.533538818359, + 79.435234069824, + 82.39412689209, + 83.541511535645, + 86.137664794922, + 88.440467834473, + 90.32852935791, + 92.82194519043, + 94.556045532227, + 95.235244750977, + 95.871170043945, + 99.056198120117, + 98.573585510254, + 98.680938720703, + 99.705497741699, + 100.82178497314, + 101.66397857666, + 103.25267791748, + 104.17662811279, + 105.0580368042, + 105.99513244629, + 106.55281066895, + 108.08527374268, + 108.46807861328, + 109.46871948242, + 110.97328948975, + 108.72145080566, + 110.86870574951, + 110.70049285889, + 112.78958892822, + 113.38899230957, + 115.0795211792, + 115.70503997803, + 117.22190093994, + 117.94481658936, + 119.80744934082, + 120.69200134277, + 122.48076629639, + 124.11205291748, + 125.69389343262, + 126.08923339844, + 129.11749267578, + 129.54739379883, + 131.99499511719, + 134.66789245605, + 135.75866699219, + 135.6576385498, + 137.47906494141, + 137.86515808105, + 139.55383300781, + 140.10552978516, + 141.73915100098, + 142.45240783691, + 144.01290893555, + 144.49235534668, + 145.57852172852, + 146.40435791016, + 147.30380249023, + 147.98750305176, + 149.58808898926, + 150.14398193359, + 151.67915344238, + 152.65870666504, + 153.6032409668, + 154.30192565918, + 155.86964416504, + 157.02377319336, + 157.99186706543, + 159.14733886719, + 160.47479248047, + 160.54246520996, + 161.35418701172, + 162.42044067383, + 162.81045532227, + 162.86251831055, + 164.31784057617, + 164.59222412109, + 165.75708007813, + 166.80238342285, + 167.65319824219, + 169.15411376953, + 170.30824279785, + 172.03762817383, + 173.88418579102, + 174.80439758301, + 176.87336730957, + 177.06834411621, + 178.55157470703, + 178.04600524902, + 178.63500976563, + 180.38478088379, + 180.83354187012, + 182.24424743652, + 183.67724609375, + 183.91009521484, + 184.59558105469, + 185.91633605957, + 187.39482116699, + 188.29640197754, + 190.38084411621, + 191.82237243652, + 192.76095581055, + 195.10935974121, + 195.43499755859, + 201.69021606445, + 199.14205932617, + 202.62725830078, + 203.23126220703, + 202.67083740234, + 204.60522460938, + 207.55601501465, + 207.94021606445, + 210.76686096191, + 213.84446716309, + 215.12928771973, + 220.80010986328, + 216.16261291504, + 211.80372619629, + 213.91012573242, + 215.60438537598]) + +resid = np.array([ + np.nan, + -.7581701874733, + -.49511715769768, + -.75192391872406, + -.49135887622833, + -.76525229215622, + -.44687059521675, + -.70659655332565, + -.68842077255249, + -.60215425491333, + -.63971120119095, + -.66091901063919, + -.51202166080475, + -.75510257482529, + -.48253855109215, + -.72239124774933, + -.60609650611877, + -.53087604045868, + -.65774464607239, + -.52197223901749, + -.7206723690033, + -.60785627365112, + -.6089842915535, + -.55334770679474, + -.62984347343445, + -.50177800655365, + -.68292456865311, + -.44507533311844, + -.38219094276428, + -.61039841175079, + -.31250306963921, + -.77027755975723, + -.4350620508194, + -.494520008564, + -.42773708701134, + -.39555323123932, + -.46685197949409, + -.27427339553833, + -.42101442813873, + -.37917038798332, + -.18917952477932, + -.36641922593117, + -.28457221388817, + -.23697751760483, + -.23281940817833, + -.45223876833916, + -.25030693411827, + -.35510078072548, + -.58026248216629, + -.22790426015854, + -.54552561044693, + -.42061823606491, + -.48669815063477, + -.43868899345398, + -.38070866465569, + -.28002023696899, + .16262374818325, + -.48988044261932, + .67117244005203, + -.02454199641943, + .44668045639992, + .0362650193274, + .83522641658783, + -.02484837733209, + -.11245145648718, + .01991361007094, + .0440888479352, + -.1162573993206, + -.51654160022736, + .11052562296391, + -.04166246205568, + -.13266679644585, + .4407517015934, + -.32450538873672, + .04423752427101, + .0969405695796, + .28733000159264, + .51519411802292, + .52217602729797, + .24489280581474, + 1.1218250989914, + .99874752759933, + .96391087770462, + 1.4664648771286, + 1.4647653102875, + .20586840808392, + 1.1584821939468, + 1.062330365181, + .65953236818314, + 1.1714720726013, + .57805341482162, + -.15604154765606, + -.23524549603462, + 1.6288322210312, + -.95619779825211, + -.67358434200287, + .1190680116415, + .09450265020132, + -.02177914790809, + .43602138757706, + .04732597246766, + -.07663082331419, + .0419635027647, + -.29513788223267, + .44718953967094, + -.38527730107307, + .0319189876318, + .43128004670143, + -2.2732961177826, + .77854722738266, + -.66871201992035, + .69950574636459, + -.08958829939365, + .41101104021072, + -.07951752096415, + .2949578166008, + -.02190163731575, + .5551837682724, + .0925500690937, + .50799924135208, + .61922925710678, + .38794788718224, + -.29389011859894, + 1.4107677936554, + -.21750450134277, + .95260292291641, + 1.4050008058548, + .03210696578026, + -.65866851806641, + .54236197471619, + -.27907428145409, + .43484738469124, + -.15383619070053, + .39446276426315, + -.03915995359421, + .34759050607681, + -.21290412545204, + .00764474179596, + .02148328535259, + -.10436081886292, + -.10379911959171, + .41248852014542, + -.18809306621552, + .35601159930229, + .12084264308214, + -.05869990959764, + -.10323911905289, + .39806687831879, + .2303563952446, + -.02376830019057, + .20813637971878, + .25265842676163, + -.57480323314667, + -.14247089624405, + .14580672979355, + -.4204343855381, + -.61045861244202, + .33747857809067, + -.41785016655922, + .10776958614588, + .14291742444038, + -.1023878082633, + .44680669903755, + .14588765799999, + .59174418449402, + .66236984729767, + .01581169478595, + .7956041097641, + -.47337827086449, + .33164295554161, + -.95156413316727, + -.34601172804832, + .66499650478363, + -.38478538393974, + .36646059155464, + .35576421022415, + -.47725108265877, + -.21010553836823, + .30441749095917, + .38366231322289, + .00517613813281, + .80359941720963, + .41915187239647, + -.02237024717033, + 1.039052605629, + -.409359395504, + 3.7650005817413, + -2.2902269363403, + 1.5579376220703, + .072744384408, + -1.3312624692917, + .90316116809845, + 1.3147799968719, + -.21801064908504, + 1.1927837133408, + 1.7281278371811, + .15252174437046, + 3.4807071685791, + -3.9110956192017, + -3.9886209964752, + .86727404594421, + .55887448787689, + .78061258792877]) + +yr = np.array([ + np.nan, + -.7581701874733, + -.49511715769768, + -.75192391872406, + -.49135887622833, + -.76525229215622, + -.44687059521675, + -.70659655332565, + -.68842077255249, + -.60215425491333, + -.63971120119095, + -.66091901063919, + -.51202166080475, + -.75510257482529, + -.48253855109215, + -.72239124774933, + -.60609650611877, + -.53087604045868, + -.65774464607239, + -.52197223901749, + -.7206723690033, + -.60785627365112, + -.6089842915535, + -.55334770679474, + -.62984347343445, + -.50177800655365, + -.68292456865311, + -.44507533311844, + -.38219094276428, + -.61039841175079, + -.31250306963921, + -.77027755975723, + -.4350620508194, + -.494520008564, + -.42773708701134, + -.39555323123932, + -.46685197949409, + -.27427339553833, + -.42101442813873, + -.37917038798332, + -.18917952477932, + -.36641922593117, + -.28457221388817, + -.23697751760483, + -.23281940817833, + -.45223876833916, + -.25030693411827, + -.35510078072548, + -.58026248216629, + -.22790426015854, + -.54552561044693, + -.42061823606491, + -.48669815063477, + -.43868899345398, + -.38070866465569, + -.28002023696899, + .16262374818325, + -.48988044261932, + .67117244005203, + -.02454199641943, + .44668045639992, + .0362650193274, + .83522641658783, + -.02484837733209, + -.11245145648718, + .01991361007094, + .0440888479352, + -.1162573993206, + -.51654160022736, + .11052562296391, + -.04166246205568, + -.13266679644585, + .4407517015934, + -.32450538873672, + .04423752427101, + .0969405695796, + .28733000159264, + .51519411802292, + .52217602729797, + .24489280581474, + 1.1218250989914, + .99874752759933, + .96391087770462, + 1.4664648771286, + 1.4647653102875, + .20586840808392, + 1.1584821939468, + 1.062330365181, + .65953236818314, + 1.1714720726013, + .57805341482162, + -.15604154765606, + -.23524549603462, + 1.6288322210312, + -.95619779825211, + -.67358434200287, + .1190680116415, + .09450265020132, + -.02177914790809, + .43602138757706, + .04732597246766, + -.07663082331419, + .0419635027647, + -.29513788223267, + .44718953967094, + -.38527730107307, + .0319189876318, + .43128004670143, + -2.2732961177826, + .77854722738266, + -.66871201992035, + .69950574636459, + -.08958829939365, + .41101104021072, + -.07951752096415, + .2949578166008, + -.02190163731575, + .5551837682724, + .0925500690937, + .50799924135208, + .61922925710678, + .38794788718224, + -.29389011859894, + 1.4107677936554, + -.21750450134277, + .95260292291641, + 1.4050008058548, + .03210696578026, + -.65866851806641, + .54236197471619, + -.27907428145409, + .43484738469124, + -.15383619070053, + .39446276426315, + -.03915995359421, + .34759050607681, + -.21290412545204, + .00764474179596, + .02148328535259, + -.10436081886292, + -.10379911959171, + .41248852014542, + -.18809306621552, + .35601159930229, + .12084264308214, + -.05869990959764, + -.10323911905289, + .39806687831879, + .2303563952446, + -.02376830019057, + .20813637971878, + .25265842676163, + -.57480323314667, + -.14247089624405, + .14580672979355, + -.4204343855381, + -.61045861244202, + .33747857809067, + -.41785016655922, + .10776958614588, + .14291742444038, + -.1023878082633, + .44680669903755, + .14588765799999, + .59174418449402, + .66236984729767, + .01581169478595, + .7956041097641, + -.47337827086449, + .33164295554161, + -.95156413316727, + -.34601172804832, + .66499650478363, + -.38478538393974, + .36646059155464, + .35576421022415, + -.47725108265877, + -.21010553836823, + .30441749095917, + .38366231322289, + .00517613813281, + .80359941720963, + .41915187239647, + -.02237024717033, + 1.039052605629, + -.409359395504, + 3.7650005817413, + -2.2902269363403, + 1.5579376220703, + .072744384408, + -1.3312624692917, + .90316116809845, + 1.3147799968719, + -.21801064908504, + 1.1927837133408, + 1.7281278371811, + .15252174437046, + 3.4807071685791, + -3.9110956192017, + -3.9886209964752, + .86727404594421, + .55887448787689, + .78061258792877]) + +mse = np.array([ + .77732294797897, + .77732294797897, + .70387578010559, + .69261533021927, + .68906670808792, + .68708789348602, + .68558460474014, + .68429106473923, + .6831266283989, + .68206071853638, + .68107759952545, + .68016695976257, + .67932069301605, + .67853212356567, + .67779558897018, + .67710596323013, + .67645901441574, + .6758508682251, + .67527812719345, + .67473775148392, + .67422717809677, + .67374390363693, + .67328584194183, + .6728510260582, + .67243778705597, + .67204451560974, + .67166984081268, + .67131245136261, + .67097115516663, + .67064493894577, + .67033278942108, + .67003381252289, + .66974723339081, + .66947221755981, + .66920816898346, + .66895437240601, + .66871029138565, + .66847538948059, + .66824907064438, + .66803097724915, + .66782057285309, + .66761755943298, + .66742146015167, + .66723203659058, + .66704881191254, + .66687160730362, + .66670006513596, + .66653394699097, + .66637301445007, + .66621696949005, + .66606563329697, + .66591882705688, + .66577625274658, + .66563785076141, + .66550332307816, + .66537261009216, + .6652455329895, + .66512185335159, + .66500157117844, + .66488444805145, + .66477036476135, + .66465926170349, + .66455101966858, + .66444545984268, + .6643425822258, + .66424214839935, + .66414421796799, + .66404861211777, + .66395533084869, + .66386413574219, + .66377514600754, + .66368812322617, + .66360312700272, + .66351997852325, + .66343873739243, + .6633592247963, + .66328144073486, + .66320532560349, + .66313081979752, + .66305786371231, + .66298645734787, + .6629164814949, + .66284799575806, + .66278082132339, + .66271501779556, + .66265046596527, + .66258722543716, + .6625252366066, + .66246438026428, + .66240465641022, + .66234612464905, + .66228866577148, + .66223222017288, + .66217684745789, + .66212248802185, + .66206908226013, + .66201663017273, + .661965072155, + .66191446781158, + .6618646979332, + .66181582212448, + .66176778078079, + .66172051429749, + .66167408227921, + .66162836551666, + .66158348321915, + .66153925657272, + .66149580478668, + .66145300865173, + .66141092777252, + .6613695025444, + .66132873296738, + .6612885594368, + .66124904155731, + .66121011972427, + .66117179393768, + .66113406419754, + .6610968708992, + .66106027364731, + .66102415323257, + .66098862886429, + .66095358133316, + .66091907024384, + .66088503599167, + .66085147857666, + .66081839799881, + .66078579425812, + .66075360774994, + .66072189807892, + .66069066524506, + .66065979003906, + .66062939167023, + .66059935092926, + .66056972742081, + .66054052114487, + .6605116724968, + .66048324108124, + .6604551076889, + .66042739152908, + .66040003299713, + .66037303209305, + .66034632921219, + .66032004356384, + .66029399633408, + .66026836633682, + .66024297475815, + .66021794080734, + .66019320487976, + .6601687669754, + .66014462709427, + .66012072563171, + .66009718179703, + .66007387638092, + .66005086898804, + .66002810001373, + .66000562906265, + .65998339653015, + .65996146202087, + .65993976593018, + .65991830825806, + .65989708900452, + .65987610816956, + .65985536575317, + .65983480215073, + .6598145365715, + .65979450941086, + .65977466106415, + .65975499153137, + .65973562002182, + .6597164273262, + .65969741344452, + .65967857837677, + .6596599817276, + .65964162349701, + .65962338447571, + .65960538387299, + .6595875620842, + .65956991910934, + .65955245494843, + .65953516960144, + .65951806306839, + .65950113534927, + .65948438644409, + .6594677567482, + .65945136547089, + .65943509340286, + .65941900014877, + .65940302610397, + .65938723087311, + .65937161445618, + .65935611724854, + .65934079885483, + .65932559967041, + .65931057929993, + .65929567813873, + .65928089618683, + .65926629304886, + .65925180912018, + .65923744440079, + .65922319889069, + .65920913219452, + .65919518470764, + .65918135643005]) + +stdp = np.array([ + .92817026376724, + .92817026376724, + .69511789083481, + .77192437648773, + .66135895252228, + .77525061368942, + .64687132835388, + .79659670591354, + .65842008590698, + .71215486526489, + .69971066713333, + .72092038393021, + .68201982975006, + .76510280370712, + .64253836870193, + .78239262104034, + .64609551429749, + .74087703227997, + .71774411201477, + .7119727730751, + .73067259788513, + .67785596847534, + .70898467302322, + .71334755420685, + .72984194755554, + .7017787694931, + .75292426347733, + .67507487535477, + .78219056129456, + .78040039539337, + .71250075101852, + .82028061151505, + .63505899906158, + .79452306032181, + .72773635387421, + .79555094242096, + .76685506105423, + .77427339553833, + .82101213932037, + .77917188405991, + .78917801380157, + .86641925573349, + .78457218408585, + .83697980642319, + .83281791210175, + .85224026441574, + .75030690431595, + .8551008105278, + .78025943040848, + .72790426015854, + .84552866220474, + .72061747312546, + .78669738769531, + .73868823051453, + .78071022033691, + .78002023696899, + .83737623691559, + .98988044261932, + .72882527112961, + 1.2245427370071, + .85331875085831, + 1.1637357473373, + .86477434635162, + 1.3248475790024, + .81245219707489, + .98008638620377, + .85591268539429, + 1.0162551403046, + .8165408372879, + .78947591781616, + .94166398048401, + .93266606330872, + .85924750566483, + 1.1245046854019, + .75576168298721, + 1.0030617713928, + .91267073154449, + 1.0848042964935, + 1.0778224468231, + 1.1551086902618, + .97817331552505, + 1.4012540578842, + 1.2360861301422, + 1.3335381746292, + 1.4352362155914, + 1.4941285848618, + .9415163397789, + 1.437669634819, + 1.2404690980911, + 1.2285294532776, + 1.3219480514526, + 1.1560415029526, + .83524394035339, + .87116771936417, + 1.5561962127686, + .47358739376068, + .78093349933624, + .90549737215042, + 1.0217791795731, + .86397403478622, + 1.1526786088943, + .87662625312805, + .95803648233414, + .89513635635376, + .85281348228455, + 1.0852742195129, + .76808404922485, + .96872144937515, + 1.0732915401459, + .02145584858954, + 1.3687089681625, + .50049883127213, + 1.3895837068558, + .6889950633049, + 1.2795144319534, + .7050421833992, + 1.2218985557556, + .74481928348541, + 1.3074514865875, + .7919961810112, + 1.2807723283768, + 1.0120536088943, + 1.1938916444778, + .68923074007034, + 1.6174983978271, + .64740318059921, + 1.4949930906296, + 1.2678960561752, + 1.0586776733398, + .55762887001038, + 1.2790743112564, + .66515874862671, + 1.2538269758224, + .70554333925247, + 1.2391568422318, + .75241559743881, + 1.2129040956497, + .69235223531723, + 1.0785228013992, + .8043577671051, + 1.0037930011749, + .78750842809677, + 1.1880930662155, + .74399447441101, + 1.1791603565216, + .85870295763016, + 1.0032330751419, + .8019300699234, + 1.1696527004242, + .92376220226288, + .99186056852341, + .94733852148056, + 1.0748032331467, + .64247089624405, + .95419937372208, + .92043441534042, + .8104555606842, + .66252142190933, + 1.1178470849991, + .69223344326019, + 1.0570795536041, + .90239083766937, + .95320242643356, + 1.0541093349457, + 1.0082466602325, + 1.1376332044601, + 1.1841852664948, + .90440809726715, + 1.2733660936356, + .66835701465607, + 1.1515763998032, + .44600257277489, + .93500959873199, + 1.0847823619843, + .83353632688522, + 1.0442448854446, + 1.077241897583, + .71010553836823, + .89557945728302, + 1.0163468122482, + 1.094814658165, + .89641278982162, + 1.2808450460434, + 1.0223702192307, + .96094745397568, + 1.309353351593, + .73499941825867, + 2.4902238845825, + -.2579345703125, + 1.9272556304932, + .53125941753387, + .7708500623703, + 1.0312130451202, + 1.6360099315643, + .6022145152092, + 1.6338716745377, + 1.3494771718979, + 1.1322995424271, + 2.1901025772095, + -.72639065980911, + -.37026473879814, + 1.2391144037247, + 1.1353877782822]) + +icstats = np.array([ + 202, + np.nan, + -245.40783909604, + 5, + 500.81567819208, + 517.35701667909]) + + +results = Bunch( + llf=llf, + nobs=nobs, + k=k, + k_exog=k_exog, + sigma=sigma, + chi2=chi2, + df_model=df_model, + k_ar=k_ar, + k_ma=k_ma, + params=params, + cov_params=cov_params, + xb=xb, + y=y, + resid=resid, + yr=yr, + mse=mse, + stdp=stdp, + icstats=icstats +) diff --git a/statsmodels/tsa/tests/results/arima112nc_css_results.py b/statsmodels/tsa/tests/results/arima112nc_css_results.py new file mode 100644 index 0000000..e9498b0 --- /dev/null +++ b/statsmodels/tsa/tests/results/arima112nc_css_results.py @@ -0,0 +1,1305 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + +llf = np.array([-239.75290561974]) + +nobs = np.array([202]) + +k = np.array([4]) + +k_exog = np.array([1]) + +sigma = np.array([.79291203639424]) + +chi2 = np.array([35036.682546665]) + +df_model = np.array([3]) + +k_ar = np.array([1]) + +k_ma = np.array([2]) + +params = np.array([ + .99954097483478, + -.69022779461512, + -.20477682541104, + .62870949745886]) + +cov_params = np.array([ + .00007344276568, + -.00016074342677, + -.00018478942445, + 8.040251506e-06, + -.00016074342677, + .00094099304774, + .00017233777676, + -.0000145011098, + -.00018478942445, + .00017233777676, + .00103352686916, + .00030686101903, + 8.040251506e-06, + -.0000145011098, + .00030686101903, + .00067796985496]).reshape(4, 4) + +xb = np.array([ + 0, + 0, + .05104803293943, + .06663129478693, + .02164618112147, + .0773858949542, + .02606418170035, + .09391833096743, + .05710592120886, + .03083370067179, + .07319989800453, + .05287836492062, + .05776296555996, + .09105986356735, + .04293738678098, + .09576436132193, + .06068528071046, + .06157376244664, + .11172580718994, + .06527806818485, + .11443704366684, + .05653077363968, + .08205550909042, + .08481238037348, + .10436166077852, + .0875685736537, + .12320486456156, + .08366665989161, + .13979130983353, + .1902572363615, + .1306214183569, + .21803694963455, + .11079790443182, + .17274764180183, + .1937662512064, + .20047917962074, + .24034893512726, + .21783453226089, + .29279819130898, + .26804205775261, + .28678458929062, + .35651323199272, + .33659368753433, + .35760068893433, + .39895334839821, + .41131839156151, + .36645981669426, + .40991494059563, + .41024547815323, + .32657703757286, + .42312324047089, + .34933325648308, + .35912537574768, + .35077446699142, + .34701564908028, + .37364318966866, + .40170526504517, + .56070649623871, + .41915491223335, + .73478156328201, + .67748892307281, + .7744625210762, + .77825599908829, + .97586625814438, + .88692498207092, + .76232481002808, + .87376874685287, + .83281141519547, + .84783887863159, + .66423743963242, + .84904235601425, + .81613594293594, + .80033475160599, + .95782464742661, + .80624777078629, + .83626395463943, + .91873735189438, + .95130664110184, + 1.0939226150513, + 1.1171194314957, + 1.1004731655121, + 1.3512066602707, + 1.4703129529953, + 1.4805699586868, + 1.7385860681534, + 1.8268398046494, + 1.5489361286163, + 1.7446503639221, + 1.864644408226, + 1.7200467586517, + 1.9223358631134, + 1.775306224823, + 1.5392524003983, + 1.4067870378494, + 1.9366238117218, + 1.2984343767166, + 1.1080636978149, + 1.3500427007675, + 1.2837564945221, + 1.2670782804489, + 1.3347851037979, + 1.2857422828674, + 1.1625040769577, + 1.2111755609512, + 1.0548515319824, + 1.2553508281708, + 1.0327949523926, + 1.0740388631821, + 1.222040772438, + .40555971860886, + 1.0233588218689, + .84209614992142, + 1.0186324119568, + 1.0319027900696, + .99487775564194, + 1.0439211130142, + .98785293102264, + 1.0620124340057, + 1.0916963815689, + 1.1378232240677, + 1.1243290901184, + 1.3305295705795, + 1.1925677061081, + 1.0872994661331, + 1.4599523544312, + 1.2333589792252, + 1.3584797382355, + 1.7595859766006, + 1.3009568452835, + 1.1157965660095, + 1.2948887348175, + 1.2063180208206, + 1.2332669496536, + 1.2132470607758, + 1.2049551010132, + 1.2260574102402, + 1.1875206232071, + 1.1547852754593, + 1.0519831180573, + 1.1594845056534, + 1.0069926977158, + 1.0675266981125, + 1.1299223899841, + 1.0620901584625, + 1.0999356508255, + 1.1535499095917, + 1.0026944875717, + 1.0428657531738, + 1.1120204925537, + 1.1684119701385, + 1.0258769989014, + 1.1342295408249, + 1.1183958053589, + .91313683986664, + .91156214475632, + 1.0540328025818, + .84359037876129, + .75758427381516, + .96401190757751, + .83226495981216, + .8759680390358, + .98239886760712, + .85917687416077, + 1.0634194612503, + .99442666769028, + 1.153311252594, + 1.2288066148758, + 1.0869039297104, + 1.281947016716, + 1.0067318677902, + 1.1028815507889, + .82448446750641, + .78489726781845, + 1.1850204467773, + .86753690242767, + 1.0692945718765, + 1.1030179262161, + .8791960477829, + .86451041698456, + 1.0455346107483, + 1.085998415947, + 1.0172398090363, + 1.2250980138779, + 1.2316122055054, + 1.062157869339, + 1.3991860151291, + 1.0520887374878, + 2.2203133106232, + .88833123445511, + 1.4289729595184, + 1.5206423997879, + .68520504236221, + 1.4659557342529, + 1.5350053310394, + 1.3178979158401, + 1.4888265132904, + 1.9698411226273, + 1.4406447410583, + 2.517040014267, + .55537897348404, + -.20722626149654, + 1.0899519920349, + 1.164245724678]) + +y = np.array([ + np.nan, + 28.979999542236, + 29.201047897339, + 29.416631698608, + 29.391647338867, + 29.617385864258, + 29.576063156128, + 29.84391784668, + 29.897106170654, + 29.84083366394, + 29.993200302124, + 30.032876968384, + 30.097763061523, + 30.3010597229, + 30.262937545776, + 30.475763320923, + 30.500686645508, + 30.541572570801, + 30.801725387573, + 30.815279006958, + 31.054437637329, + 31.006530761719, + 31.102056503296, + 31.20481300354, + 31.384363174438, + 31.467567443848, + 31.703205108643, + 31.733665466309, + 32.019790649414, + 32.47025680542, + 32.580623626709, + 33.068035125732, + 33.010799407959, + 33.272747039795, + 33.593769073486, + 33.900478363037, + 34.340347290039, + 34.617835998535, + 35.192798614502, + 35.568042755127, + 35.986785888672, + 36.656513214111, + 37.13659286499, + 37.657600402832, + 38.29895401001, + 38.911319732666, + 39.266460418701, + 39.809917449951, + 40.310245513916, + 40.426574707031, + 41.023120880127, + 41.249336242676, + 41.559127807617, + 41.850772857666, + 42.14701461792, + 42.573642730713, + 43.101707458496, + 44.260707855225, + 44.619155883789, + 46.334781646729, + 47.477489471436, + 48.874462127686, + 50.078254699707, + 51.9758644104, + 53.186923980713, + 53.762325286865, + 54.873767852783, + 55.732814788818, + 56.647838592529, + 56.764236450195, + 57.849040985107, + 58.716136932373, + 59.500335693359, + 60.957824707031, + 61.606246948242, + 62.436264038086, + 63.61873626709, + 64.85131072998, + 66.593925476074, + 68.21711730957, + 69.600471496582, + 71.951202392578, + 74.470314025879, + 76.680564880371, + 79.738586425781, + 82.726844787598, + 84.148933410645, + 86.444648742676, + 89.064643859863, + 90.820045471191, + 93.422332763672, + 95.175308227539, + 95.939254760742, + 96.406784057617, + 99.436622619629, + 99.398429870605, + 99.00806427002, + 100.15004730225, + 101.08376312256, + 102.06707763672, + 103.43478393555, + 104.58574676514, + 105.26250457764, + 106.31117248535, + 106.75485229492, + 108.25534820557, + 108.73279571533, + 109.57403564453, + 111.12203979492, + 109.10556030273, + 110.52336120605, + 111.04209136963, + 112.41863250732, + 113.73190307617, + 114.79488372803, + 116.04392242432, + 116.98785400391, + 118.26200866699, + 119.59169769287, + 121.03782653809, + 122.32432556152, + 124.4305267334, + 125.69256591797, + 126.4873046875, + 128.95994567871, + 130.13334655762, + 131.85847473145, + 135.15957641602, + 136.00096130371, + 136.21580505371, + 137.49488830566, + 138.40631103516, + 139.53326416016, + 140.61323547363, + 141.70495605469, + 142.9260559082, + 143.98751831055, + 144.95478820801, + 145.55198669434, + 146.7594909668, + 147.30699157715, + 148.26751708984, + 149.52992248535, + 150.46208190918, + 151.59992980957, + 152.95355224609, + 153.60270690918, + 154.54286193848, + 155.81201171875, + 157.2684173584, + 158.02587890625, + 159.33422851563, + 160.51838684082, + 160.81312561035, + 161.31155395508, + 162.55403137207, + 162.84359741211, + 162.95758056641, + 164.16400146484, + 164.73225402832, + 165.57595825195, + 166.88238525391, + 167.55917358398, + 169.16342163086, + 170.29443359375, + 172.0532989502, + 173.92880249023, + 174.9868927002, + 176.88195800781, + 177.40672302246, + 178.50286865234, + 178.42448425293, + 178.48489379883, + 180.48501586914, + 180.86753845215, + 182.26928710938, + 183.70301818848, + 184.07919311523, + 184.56451416016, + 185.94552612305, + 187.38600158691, + 188.41723632813, + 190.32510375977, + 192.03161621094, + 192.8621673584, + 195.19918823242, + 195.7520904541, + 201.42030334473, + 200.28833007813, + 202.12896728516, + 204.22064208984, + 202.58520507813, + 205.03996276855, + 207.45500183105, + 208.65589904785, + 210.62182617188, + 214.46484375, + 215.4376373291, + 221.12704467773, + 217.44438171387, + 211.96676635742, + 213.76095581055, + 215.63323974609]) + +resid = np.array([ + np.nan, + .17000007629395, + .14895272254944, + -.04663083329797, + .14835388958454, + -.067387573421, + .17393657565117, + -.00391817837954, + -.08710660785437, + .07916691154242, + -.01320043392479, + .00712300790474, + .11223520338535, + -.08105963468552, + .11706246435642, + -.03576298803091, + -.0206862706691, + .14842723309994, + -.05172633752227, + .12472246587276, + -.104436814785, + .01346892025322, + .01794487424195, + .07518746703863, + -.00436318712309, + .11243218928576, + -.05320516973734, + .14633287489414, + .26020830869675, + -.02025525644422, + .26937630772591, + -.16803389787674, + .08919904381037, + .12725540995598, + .10623299330473, + .1995185315609, + .05965411290526, + .28216546773911, + .10719951242208, + .13195945322514, + .31321388483047, + .14348678290844, + .16340629756451, + .24240159988403, + .20104511082172, + -.01131687406451, + .13354018330574, + .09008505195379, + -.21024852991104, + .1734229773283, + -.12312019616365, + -.04933403432369, + -.05912613496184, + -.05077522993088, + .05298588424921, + .12635681033134, + .59829473495483, + -.06070650368929, + .98084276914597, + .46521919965744, + .62251031398773, + .42553821206093, + .92174476385117, + .32413294911385, + -.18692423403263, + .23767517507076, + .02623280882835, + .06718628853559, + -.54783964157104, + .23576405644417, + .05095916613936, + -.01613672077656, + .49966445565224, + -.1578253954649, + -.00624855514616, + .26373836398125, + .28126338124275, + .64869183301926, + .50607579946518, + .28288212418556, + .99952530860901, + 1.0487948656082, + .72968405485153, + 1.319433093071, + 1.1614154577255, + -.126842841506, + .55106240510941, + .75534957647324, + .03535716608167, + .67995470762253, + -.02233435213566, + -.775306224823, + -.93925392627716, + 1.0932129621506, + -1.3366253376007, + -1.4984313249588, + -.20806217193604, + -.35004270076752, + -.28375649452209, + .03291719779372, + -.13478049635887, + -.48574689030647, + -.16250413656235, + -.61117708683014, + .24515150487423, + -.55535387992859, + -.23279193043709, + .32596263289452, + -2.4220454692841, + .39444333314896, + -.32336190342903, + .3579084277153, + .28136301040649, + .06810333579779, + .20511920750141, + -.04392115399241, + .2121440321207, + .23799060285091, + .30830511450768, + .16217225790024, + .77567237615585, + .06947190314531, + -.29256621003151, + 1.012699007988, + -.05995841696858, + .36664715409279, + 1.5415141582489, + -.45958289504051, + -.90094763040543, + -.01580573618412, + -.29488867521286, + -.10631188750267, + -.13327611982822, + -.11324090510607, + -.00495810527354, + -.12605135142803, + -.18752062320709, + -.45478835701942, + .04802301898599, + -.45948752760887, + -.1069987937808, + .13247023522854, + -.12992236018181, + .0379159450531, + .20006743073463, + -.35354685783386, + -.10270062834024, + .15713113546371, + .28798860311508, + -.26841807365417, + .17411996424198, + .06576746702194, + -.61839586496353, + -.41313683986664, + .18844394385815, + -.55403280258179, + -.6435934305191, + .24241572618484, + -.26401495933533, + -.03226193040609, + .32402887940407, + -.1823958158493, + .54083228111267, + .13657745718956, + .60556417703629, + .64669179916382, + -.02880969829857, + .61310833692551, + -.48195922374725, + -.00673185009509, + -.90286934375763, + -.72449362277985, + .81510883569717, + -.48502343893051, + .33246004581451, + .33071464300156, + -.50302714109421, + -.3791960477829, + .33548650145531, + .35447460412979, + .01399240642786, + .682772397995, + .474898904562, + -.23161220550537, + .93784213066101, + -.49919214844704, + 3.4479112625122, + -2.020316362381, + .41167178750038, + .57102704048157, + -2.3206453323364, + .98880618810654, + .8800373673439, + -.11700607091188, + .47710022330284, + 1.8731729984283, + -.46784225106239, + 3.1723618507385, + -4.2380332946777, + -5.2703905105591, + .70423555374146, + .70803683996201, + .7517546415329]) + +yr = np.array([ + np.nan, + .17000007629395, + .14895272254944, + -.04663083329797, + .14835388958454, + -.067387573421, + .17393657565117, + -.00391817837954, + -.08710660785437, + .07916691154242, + -.01320043392479, + .00712300790474, + .11223520338535, + -.08105963468552, + .11706246435642, + -.03576298803091, + -.0206862706691, + .14842723309994, + -.05172633752227, + .12472246587276, + -.104436814785, + .01346892025322, + .01794487424195, + .07518746703863, + -.00436318712309, + .11243218928576, + -.05320516973734, + .14633287489414, + .26020830869675, + -.02025525644422, + .26937630772591, + -.16803389787674, + .08919904381037, + .12725540995598, + .10623299330473, + .1995185315609, + .05965411290526, + .28216546773911, + .10719951242208, + .13195945322514, + .31321388483047, + .14348678290844, + .16340629756451, + .24240159988403, + .20104511082172, + -.01131687406451, + .13354018330574, + .09008505195379, + -.21024852991104, + .1734229773283, + -.12312019616365, + -.04933403432369, + -.05912613496184, + -.05077522993088, + .05298588424921, + .12635681033134, + .59829473495483, + -.06070650368929, + .98084276914597, + .46521919965744, + .62251031398773, + .42553821206093, + .92174476385117, + .32413294911385, + -.18692423403263, + .23767517507076, + .02623280882835, + .06718628853559, + -.54783964157104, + .23576405644417, + .05095916613936, + -.01613672077656, + .49966445565224, + -.1578253954649, + -.00624855514616, + .26373836398125, + .28126338124275, + .64869183301926, + .50607579946518, + .28288212418556, + .99952530860901, + 1.0487948656082, + .72968405485153, + 1.319433093071, + 1.1614154577255, + -.126842841506, + .55106240510941, + .75534957647324, + .03535716608167, + .67995470762253, + -.02233435213566, + -.775306224823, + -.93925392627716, + 1.0932129621506, + -1.3366253376007, + -1.4984313249588, + -.20806217193604, + -.35004270076752, + -.28375649452209, + .03291719779372, + -.13478049635887, + -.48574689030647, + -.16250413656235, + -.61117708683014, + .24515150487423, + -.55535387992859, + -.23279193043709, + .32596263289452, + -2.4220454692841, + .39444333314896, + -.32336190342903, + .3579084277153, + .28136301040649, + .06810333579779, + .20511920750141, + -.04392115399241, + .2121440321207, + .23799060285091, + .30830511450768, + .16217225790024, + .77567237615585, + .06947190314531, + -.29256621003151, + 1.012699007988, + -.05995841696858, + .36664715409279, + 1.5415141582489, + -.45958289504051, + -.90094763040543, + -.01580573618412, + -.29488867521286, + -.10631188750267, + -.13327611982822, + -.11324090510607, + -.00495810527354, + -.12605135142803, + -.18752062320709, + -.45478835701942, + .04802301898599, + -.45948752760887, + -.1069987937808, + .13247023522854, + -.12992236018181, + .0379159450531, + .20006743073463, + -.35354685783386, + -.10270062834024, + .15713113546371, + .28798860311508, + -.26841807365417, + .17411996424198, + .06576746702194, + -.61839586496353, + -.41313683986664, + .18844394385815, + -.55403280258179, + -.6435934305191, + .24241572618484, + -.26401495933533, + -.03226193040609, + .32402887940407, + -.1823958158493, + .54083228111267, + .13657745718956, + .60556417703629, + .64669179916382, + -.02880969829857, + .61310833692551, + -.48195922374725, + -.00673185009509, + -.90286934375763, + -.72449362277985, + .81510883569717, + -.48502343893051, + .33246004581451, + .33071464300156, + -.50302714109421, + -.3791960477829, + .33548650145531, + .35447460412979, + .01399240642786, + .682772397995, + .474898904562, + -.23161220550537, + .93784213066101, + -.49919214844704, + 3.4479112625122, + -2.020316362381, + .41167178750038, + .57102704048157, + -2.3206453323364, + .98880618810654, + .8800373673439, + -.11700607091188, + .47710022330284, + 1.8731729984283, + -.46784225106239, + 3.1723618507385, + -4.2380332946777, + -5.2703905105591, + .70423555374146, + .70803683996201, + .7517546415329]) + +mse = np.array([ + .95459979772568, + .71522510051727, + .63122135400772, + .6314896941185, + .63029319047928, + .63014930486679, + .62988424301147, + .62969470024109, + .62953060865402, + .6293950676918, + .62928181886673, + .62918740510941, + .62910866737366, + .62904292345047, + .62898802757263, + .6289421916008, + .62890386581421, + .62887191772461, + .62884521484375, + .6288229227066, + .62880426645279, + .6287887096405, + .6287756562233, + .62876480817795, + .62875574827194, + .62874811887741, + .62874180078506, + .62873649597168, + .62873202562332, + .62872833013535, + .62872523069382, + .62872266769409, + .62872052192688, + .62871867418289, + .62871718406677, + .62871593236923, + .62871485948563, + .62871396541595, + .62871325016022, + .62871265411377, + .62871211767197, + .62871170043945, + .62871134281158, + .62871104478836, + .62871074676514, + .6287105679512, + .62871038913727, + .62871026992798, + .62871015071869, + .6287100315094, + .62870991230011, + .62870985269547, + .62870979309082, + .62870973348618, + .62870973348618, + .62870967388153, + .62870967388153, + .62870961427689, + .62870961427689, + .62870955467224, + .62870955467224, + .62870955467224, + .62870955467224, + .62870955467224, + .62870955467224, + .62870955467224, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676, + .6287094950676]) + +stdp = np.array([ + 0, + 0, + .05104803293943, + .06663129478693, + .02164618112147, + .0773858949542, + .02606418170035, + .09391833096743, + .05710592120886, + .03083370067179, + .07319989800453, + .05287836492062, + .05776296555996, + .09105986356735, + .04293738678098, + .09576436132193, + .06068528071046, + .06157376244664, + .11172580718994, + .06527806818485, + .11443704366684, + .05653077363968, + .08205550909042, + .08481238037348, + .10436166077852, + .0875685736537, + .12320486456156, + .08366665989161, + .13979130983353, + .1902572363615, + .1306214183569, + .21803694963455, + .11079790443182, + .17274764180183, + .1937662512064, + .20047917962074, + .24034893512726, + .21783453226089, + .29279819130898, + .26804205775261, + .28678458929062, + .35651323199272, + .33659368753433, + .35760068893433, + .39895334839821, + .41131839156151, + .36645981669426, + .40991494059563, + .41024547815323, + .32657703757286, + .42312324047089, + .34933325648308, + .35912537574768, + .35077446699142, + .34701564908028, + .37364318966866, + .40170526504517, + .56070649623871, + .41915491223335, + .73478156328201, + .67748892307281, + .7744625210762, + .77825599908829, + .97586625814438, + .88692498207092, + .76232481002808, + .87376874685287, + .83281141519547, + .84783887863159, + .66423743963242, + .84904235601425, + .81613594293594, + .80033475160599, + .95782464742661, + .80624777078629, + .83626395463943, + .91873735189438, + .95130664110184, + 1.0939226150513, + 1.1171194314957, + 1.1004731655121, + 1.3512066602707, + 1.4703129529953, + 1.4805699586868, + 1.7385860681534, + 1.8268398046494, + 1.5489361286163, + 1.7446503639221, + 1.864644408226, + 1.7200467586517, + 1.9223358631134, + 1.775306224823, + 1.5392524003983, + 1.4067870378494, + 1.9366238117218, + 1.2984343767166, + 1.1080636978149, + 1.3500427007675, + 1.2837564945221, + 1.2670782804489, + 1.3347851037979, + 1.2857422828674, + 1.1625040769577, + 1.2111755609512, + 1.0548515319824, + 1.2553508281708, + 1.0327949523926, + 1.0740388631821, + 1.222040772438, + .40555971860886, + 1.0233588218689, + .84209614992142, + 1.0186324119568, + 1.0319027900696, + .99487775564194, + 1.0439211130142, + .98785293102264, + 1.0620124340057, + 1.0916963815689, + 1.1378232240677, + 1.1243290901184, + 1.3305295705795, + 1.1925677061081, + 1.0872994661331, + 1.4599523544312, + 1.2333589792252, + 1.3584797382355, + 1.7595859766006, + 1.3009568452835, + 1.1157965660095, + 1.2948887348175, + 1.2063180208206, + 1.2332669496536, + 1.2132470607758, + 1.2049551010132, + 1.2260574102402, + 1.1875206232071, + 1.1547852754593, + 1.0519831180573, + 1.1594845056534, + 1.0069926977158, + 1.0675266981125, + 1.1299223899841, + 1.0620901584625, + 1.0999356508255, + 1.1535499095917, + 1.0026944875717, + 1.0428657531738, + 1.1120204925537, + 1.1684119701385, + 1.0258769989014, + 1.1342295408249, + 1.1183958053589, + .91313683986664, + .91156214475632, + 1.0540328025818, + .84359037876129, + .75758427381516, + .96401190757751, + .83226495981216, + .8759680390358, + .98239886760712, + .85917687416077, + 1.0634194612503, + .99442666769028, + 1.153311252594, + 1.2288066148758, + 1.0869039297104, + 1.281947016716, + 1.0067318677902, + 1.1028815507889, + .82448446750641, + .78489726781845, + 1.1850204467773, + .86753690242767, + 1.0692945718765, + 1.1030179262161, + .8791960477829, + .86451041698456, + 1.0455346107483, + 1.085998415947, + 1.0172398090363, + 1.2250980138779, + 1.2316122055054, + 1.062157869339, + 1.3991860151291, + 1.0520887374878, + 2.2203133106232, + .88833123445511, + 1.4289729595184, + 1.5206423997879, + .68520504236221, + 1.4659557342529, + 1.5350053310394, + 1.3178979158401, + 1.4888265132904, + 1.9698411226273, + 1.4406447410583, + 2.517040014267, + .55537897348404, + -.20722626149654, + 1.0899519920349, + 1.164245724678]) + +icstats = np.array([ + 202, + np.nan, + -239.75290561974, + 4, + 487.50581123949, + 500.73888202909]) + + +results = Bunch( + llf=llf, + nobs=nobs, + k=k, + k_exog=k_exog, + sigma=sigma, + chi2=chi2, + df_model=df_model, + k_ar=k_ar, + k_ma=k_ma, + params=params, + cov_params=cov_params, + xb=xb, + y=y, + resid=resid, + yr=yr, + mse=mse, + stdp=stdp, + icstats=icstats +) diff --git a/statsmodels/tsa/tests/results/arima112nc_results.py b/statsmodels/tsa/tests/results/arima112nc_results.py new file mode 100644 index 0000000..70d5d4d --- /dev/null +++ b/statsmodels/tsa/tests/results/arima112nc_results.py @@ -0,0 +1,1099 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + +llf = np.array([-240.79351748413]) + +nobs = np.array([202]) + +k = np.array([4]) + +k_exog = np.array([1]) + +sigma = np.array([.79349479007541]) + +chi2 = np.array([31643.977146904]) + +df_model = np.array([3]) + +k_ar = np.array([1]) + +k_ma = np.array([2]) + +params = np.array([ + .99502750401315, + -.68630179255403, + -.19840894739396, + .79349479007541]) + +cov_params = np.array([ + .00010016992219, + -.00021444523598, + -.00023305572854, + -6.768123591e-06, + -.00021444523598, + .00104186449549, + .00023669747281, + 3.902897504e-06, + -.00023305572854, + .00023669747281, + .0010810935718, + .00020764808165, + -6.768123591e-06, + 3.902897504e-06, + .00020764808165, + .0002668504612]).reshape(4, 4) + +xb = np.array([ + 0, + 0, + .11361486464739, + .14230862259865, + .07256115227938, + .13274206221104, + .06747215241194, + .13822889328003, + .09585004299879, + .06099047139287, + .10120190680027, + .07761032879353, + .07942545413971, + .11177492141724, + .06088993698359, + .11208334565163, + .0755797252059, + .07422959059477, + .12350624799728, + .07623053342104, + .12391770631075, + .06531815230846, + .08897981792688, + .09103457629681, + .10980048775673, + .09255626052618, + .12732291221619, + .08764986693859, + .14262486994267, + .19330270588398, + .13410428166389, + .2202503234148, + .1138079687953, + .17364008724689, + .19471970200539, + .20120698213577, + .24072274565697, + .21839858591557, + .29251739382744, + .26838713884354, + .28637075424194, + .3556769490242, + .33624804019928, + .35650280117989, + .3974232673645, + .40968126058578, + .36446389555931, + .40641778707504, + .40639826655388, + .32208651304245, + .41636437177658, + .34307014942169, + .3511538207531, + .34216031432152, + .33759200572968, + .36354607343674, + .39148297905922, + .55032896995544, + .4113195836544, + .7244918346405, + .67152947187424, + .76787060499191, + .77276849746704, + .96944856643677, + .88270664215088, + .7563271522522, + .86404490470886, + .82250237464905, + .83520317077637, + .65044301748276, + .83044308423996, + .79827356338501, + .78103590011597, + .93702721595764, + .78709679841995, + .81435388326645, + .89593154191971, + .92867535352707, + 1.0709822177887, + 1.0957812070847, + 1.0792914628983, + 1.3286831378937, + 1.4503024816513, + 1.4619816541672, + 1.7190475463867, + 1.8096150159836, + 1.5324629545212, + 1.721804857254, + 1.8408879041672, + 1.6955831050873, + 1.8928952217102, + 1.7459137439728, + 1.5055395364761, + 1.3664853572845, + 1.8893030881882, + 1.256967663765, + 1.0567245483398, + 1.2921603918076, + 1.2266329526901, + 1.2085332870483, + 1.275726556778, + 1.2278587818146, + 1.1046848297119, + 1.1517647504807, + .99646359682083, + 1.194694519043, + .97580307722092, + 1.0148292779922, + 1.1635760068893, + .35167038440704, + .95728904008865, + .78414303064346, + .95968008041382, + .97746151685715, + .94291216135025, + .99327826499939, + .93940645456314, + 1.013852596283, + 1.0454497337341, + 1.0929356813431, + 1.0810794830322, + 1.2874436378479, + 1.1533098220825, + 1.0470397472382, + 1.4171674251556, + 1.1959022283554, + 1.3181202411652, + 1.7197531461716, + 1.2677561044693, + 1.0768386125565, + 1.2508004903793, + 1.1625586748123, + 1.1872273683548, + 1.1668027639389, + 1.1576874256134, + 1.1782459020615, + 1.1398378610611, + 1.1065219640732, + 1.0032601356506, + 1.1087976694107, + .95788156986237, + 1.0163568258286, + 1.079482793808, + 1.0131409168243, + 1.0506906509399, + 1.1052004098892, + .95601671934128, + .99452114105225, + 1.0641269683838, + 1.1217628717422, + .98107707500458, + 1.0877858400345, + 1.0735836029053, + .86890149116516, + .86449563503265, + 1.0060983896255, + .79812264442444, + .70991164445877, + .91461282968521, + .78625136613846, + .8291689157486, + .93680161237717, + .81633454561234, + 1.0196126699448, + .95442569255829, + 1.1131925582886, + 1.1916073560715, + 1.05200278759, + 1.2451642751694, + .97296446561813, + 1.0647999048233, + .78715896606445, + .74267995357513, + 1.1400059461594, + .82839399576187, + 1.0262999534607, + 1.0628409385681, + .84051495790482, + .82304340600967, + 1.0028872489929, + 1.0457111597061, + .97847640514374, + 1.1855980157852, + 1.195351600647, + 1.0270363092422, + 1.3610677719116, + 1.0189098119736, + 2.1800265312195, + .86722087860107, + 1.3893752098083, + 1.4851142168045, + .65110164880753, + 1.417050242424, + 1.4938380718231, + 1.2786860466003, + 1.446773648262, + 1.9284181594849, + 1.4071846008301, + 2.4745123386383, + .53088372945786, + -.25887301564217, + 1.0166070461273, + 1.1028108596802]) + +y = np.array([ + np.nan, + 28.979999542236, + 29.263614654541, + 29.492309570313, + 29.442562103271, + 29.672742843628, + 29.617471694946, + 29.888229370117, + 29.935850143433, + 29.870990753174, + 30.021202087402, + 30.057609558105, + 30.119426727295, + 30.321773529053, + 30.280889511108, + 30.492082595825, + 30.515581130981, + 30.554229736328, + 30.813507080078, + 30.826231002808, + 31.063919067383, + 31.015319824219, + 31.108980178833, + 31.21103477478, + 31.389801025391, + 31.472555160522, + 31.707323074341, + 31.737649917603, + 32.022624969482, + 32.473300933838, + 32.584106445313, + 33.070247650146, + 33.013809204102, + 33.273639678955, + 33.594722747803, + 33.901206970215, + 34.340721130371, + 34.61840057373, + 35.192520141602, + 35.568386077881, + 35.98637008667, + 36.65567779541, + 37.136245727539, + 37.65650177002, + 38.297424316406, + 38.909679412842, + 39.264465332031, + 39.806419372559, + 40.306400299072, + 40.42208480835, + 41.016361236572, + 41.243072509766, + 41.551155090332, + 41.84215927124, + 42.137592315674, + 42.563545227051, + 43.091484069824, + 44.250328063965, + 44.611320495605, + 46.324489593506, + 47.471527099609, + 48.867870330811, + 50.072769165039, + 51.9694480896, + 53.182704925537, + 53.756328582764, + 54.864044189453, + 55.722503662109, + 56.635204315186, + 56.750442504883, + 57.830444335938, + 58.698276519775, + 59.481037139893, + 60.937026977539, + 61.587097167969, + 62.414352416992, + 63.595932006836, + 64.828674316406, + 66.570983886719, + 68.195777893066, + 69.579292297363, + 71.928680419922, + 74.450302124023, + 76.661979675293, + 79.719047546387, + 82.709617614746, + 84.132461547852, + 86.421798706055, + 89.040885925293, + 90.79557800293, + 93.39289855957, + 95.14591217041, + 95.905540466309, + 96.366485595703, + 99.389305114746, + 99.356964111328, + 98.956726074219, + 100.09216308594, + 101.02663421631, + 102.00853729248, + 103.37572479248, + 104.52786254883, + 105.20468139648, + 106.25176239014, + 106.69645690918, + 108.19469451904, + 108.67579650879, + 109.51483154297, + 111.06357574463, + 109.05166625977, + 110.45729064941, + 110.98413848877, + 112.35968017578, + 113.6774597168, + 114.74291229248, + 115.99327850342, + 116.93940734863, + 118.21385192871, + 119.54544830322, + 120.99293518066, + 122.28107452393, + 124.38744354248, + 125.65331268311, + 126.44704437256, + 128.91716003418, + 130.09590148926, + 131.81811523438, + 135.11975097656, + 135.96775817871, + 136.17684936523, + 137.45079040527, + 138.36254882813, + 139.48722839355, + 140.56680297852, + 141.65768432617, + 142.87825012207, + 143.93983459473, + 144.9065246582, + 145.50326538086, + 146.70880126953, + 147.25788879395, + 148.21635437012, + 149.47947692871, + 150.41313171387, + 151.55068969727, + 152.90519714355, + 153.55603027344, + 154.49452209473, + 155.76412963867, + 157.22177124023, + 157.98107910156, + 159.28778076172, + 160.47357177734, + 160.76889038086, + 161.26449584961, + 162.50610351563, + 162.7981262207, + 162.90991210938, + 164.11460876465, + 164.6862487793, + 165.5291595459, + 166.83679199219, + 167.5163269043, + 169.11961364746, + 170.25442504883, + 172.01318359375, + 173.8916015625, + 174.95199584961, + 176.84516906738, + 177.37295532227, + 178.46479797363, + 178.38716125488, + 178.44267272949, + 180.44000244141, + 180.8283996582, + 182.22630310059, + 183.66284179688, + 184.04051208496, + 184.52304077148, + 185.90287780762, + 187.34571838379, + 188.37846374512, + 190.28559875488, + 191.99536132813, + 192.82704162598, + 195.16107177734, + 195.71890258789, + 201.3800201416, + 200.26721191406, + 202.08937072754, + 204.18510437012, + 202.55110168457, + 204.99105834961, + 207.41383361816, + 208.61668395996, + 210.57977294922, + 214.4234161377, + 215.40417480469, + 221.08451843262, + 217.41989135742, + 211.91511535645, + 213.68760681152, + 215.57180786133]) + +resid = np.array([ + np.nan, + .17000007629395, + .08638589829206, + -.12230817228556, + .09743892401457, + -.12274374067783, + .13252860307693, + -.04822873324156, + -.12585072219372, + .04901013895869, + -.04120244085789, + -.01760895550251, + .0905727148056, + -.1017746925354, + .09910991042852, + -.05208196863532, + -.03558072075248, + .13577139377594, + -.0635067820549, + .11377000063658, + -.11391747742891, + .00468154205009, + .01102056354284, + .0689652711153, + -.00980201456696, + .10744450241327, + -.05732321739197, + .14234967529774, + .25737473368645, + -.02330071851611, + .26589342951775, + -.17024727165699, + .08618897944689, + .12636296451092, + .10527954250574, + .19879072904587, + .05928030610085, + .28160139918327, + .10748030990362, + .13161440193653, + .31362771987915, + .14432306587696, + .16375194489956, + .24349948763847, + .20257519185543, + -.00967973750085, + .13553610444069, + .09358221292496, + -.20640131831169, + .17791347205639, + -.11636133491993, + -.04307091236115, + -.05115458369255, + -.04216108098626, + .06240950897336, + .13645392656326, + .60851699113846, + -.05032894387841, + .98867815732956, + .47550892829895, + .62846976518631, + .43213015794754, + .92723226547241, + .33055067062378, + -.18270587921143, + .24367287755013, + .0359565988183, + .07749536633492, + -.53520393371582, + .24955849349499, + .0695584192872, + .00172565307003, + .51896333694458, + -.13702796399593, + .01290242280811, + .28564843535423, + .30406919121742, + .67132312059402, + .5290162563324, + .30422034859657, + 1.0207070112228, + 1.0713183879852, + .74969446659088, + 1.3380213975906, + 1.1809539794922, + -.10961806029081, + .56753551959991, + .77819520235062, + .05911364778876, + .70441842079163, + .0071063125506, + -.74591380357742, + -.90554106235504, + 1.1335146427155, + -1.2893046140671, + -1.4569646120071, + -.15672297775745, + -.29216033220291, + -.22663290798664, + .09146212786436, + -.0757219940424, + -.42786338925362, + -.10468477010727, + -.55176627635956, + .3035394847393, + -.49469754099846, + -.1758000254631, + .38517218828201, + -2.3635804653168, + .44833266735077, + -.25729209184647, + .41586154699326, + .34031534194946, + .1225445792079, + .25708478689194, + .00672172475606, + .26059049367905, + .28615045547485, + .35455179214478, + .2070597410202, + .81892204284668, + .11255792528391, + -.25330832600594, + 1.0529587268829, + -.0171735137701, + .40410390496254, + 1.5818736553192, + -.41975006461143, + -.86774694919586, + .02315225638449, + -.25080046057701, + -.06255260109901, + -.08723650127649, + -.06679660826921, + .04230948910117, + -.07823982834816, + -.13983787596226, + -.40652501583099, + .09674594551325, + -.40880066156387, + -.05788768827915, + .1836401373148, + -.07948285341263, + .08686522394419, + .24931237101555, + -.30519738793373, + -.05602284148335, + .20547580718994, + .33588215708733, + -.22176894545555, + .21891987323761, + .11221113055944, + -.57358360290527, + -.36890152096748, + .23551045358181, + -.50609844923019, + -.59812569618225, + .29008835554123, + -.21461589634418, + .013751687482, + .37082800269127, + -.13679853081703, + .5836746096611, + .18038421869278, + .64556515216827, + .68681055307388, + .00838960427791, + .64800941944122, + -.44517654180527, + .02703555487096, + -.8647877573967, + -.68716812133789, + .85732614994049, + -.44000896811485, + .37160298228264, + .37370926141739, + -.46285009384155, + -.34051498770714, + .37695357203484, + .3971218764782, + .05427964404225, + .72153580188751, + .51439893245697, + -.19535164535046, + .97296363115311, + -.46107393503189, + 3.4810900688171, + -1.9800295829773, + .43278217315674, + .61062479019165, + -2.2851173877716, + 1.0229095220566, + .92894279956818, + -.07583882659674, + .51631212234497, + 1.9152258634567, + -.42641922831535, + 3.2058219909668, + -4.1955056190491, + -5.2458953857422, + .75588232278824, + .7813817858696, + .81318950653076]) + +yr = np.array([ + np.nan, + .17000007629395, + .08638589829206, + -.12230817228556, + .09743892401457, + -.12274374067783, + .13252860307693, + -.04822873324156, + -.12585072219372, + .04901013895869, + -.04120244085789, + -.01760895550251, + .0905727148056, + -.1017746925354, + .09910991042852, + -.05208196863532, + -.03558072075248, + .13577139377594, + -.0635067820549, + .11377000063658, + -.11391747742891, + .00468154205009, + .01102056354284, + .0689652711153, + -.00980201456696, + .10744450241327, + -.05732321739197, + .14234967529774, + .25737473368645, + -.02330071851611, + .26589342951775, + -.17024727165699, + .08618897944689, + .12636296451092, + .10527954250574, + .19879072904587, + .05928030610085, + .28160139918327, + .10748030990362, + .13161440193653, + .31362771987915, + .14432306587696, + .16375194489956, + .24349948763847, + .20257519185543, + -.00967973750085, + .13553610444069, + .09358221292496, + -.20640131831169, + .17791347205639, + -.11636133491993, + -.04307091236115, + -.05115458369255, + -.04216108098626, + .06240950897336, + .13645392656326, + .60851699113846, + -.05032894387841, + .98867815732956, + .47550892829895, + .62846976518631, + .43213015794754, + .92723226547241, + .33055067062378, + -.18270587921143, + .24367287755013, + .0359565988183, + .07749536633492, + -.53520393371582, + .24955849349499, + .0695584192872, + .00172565307003, + .51896333694458, + -.13702796399593, + .01290242280811, + .28564843535423, + .30406919121742, + .67132312059402, + .5290162563324, + .30422034859657, + 1.0207070112228, + 1.0713183879852, + .74969446659088, + 1.3380213975906, + 1.1809539794922, + -.10961806029081, + .56753551959991, + .77819520235062, + .05911364778876, + .70441842079163, + .0071063125506, + -.74591380357742, + -.90554106235504, + 1.1335146427155, + -1.2893046140671, + -1.4569646120071, + -.15672297775745, + -.29216033220291, + -.22663290798664, + .09146212786436, + -.0757219940424, + -.42786338925362, + -.10468477010727, + -.55176627635956, + .3035394847393, + -.49469754099846, + -.1758000254631, + .38517218828201, + -2.3635804653168, + .44833266735077, + -.25729209184647, + .41586154699326, + .34031534194946, + .1225445792079, + .25708478689194, + .00672172475606, + .26059049367905, + .28615045547485, + .35455179214478, + .2070597410202, + .81892204284668, + .11255792528391, + -.25330832600594, + 1.0529587268829, + -.0171735137701, + .40410390496254, + 1.5818736553192, + -.41975006461143, + -.86774694919586, + .02315225638449, + -.25080046057701, + -.06255260109901, + -.08723650127649, + -.06679660826921, + .04230948910117, + -.07823982834816, + -.13983787596226, + -.40652501583099, + .09674594551325, + -.40880066156387, + -.05788768827915, + .1836401373148, + -.07948285341263, + .08686522394419, + .24931237101555, + -.30519738793373, + -.05602284148335, + .20547580718994, + .33588215708733, + -.22176894545555, + .21891987323761, + .11221113055944, + -.57358360290527, + -.36890152096748, + .23551045358181, + -.50609844923019, + -.59812569618225, + .29008835554123, + -.21461589634418, + .013751687482, + .37082800269127, + -.13679853081703, + .5836746096611, + .18038421869278, + .64556515216827, + .68681055307388, + .00838960427791, + .64800941944122, + -.44517654180527, + .02703555487096, + -.8647877573967, + -.68716812133789, + .85732614994049, + -.44000896811485, + .37160298228264, + .37370926141739, + -.46285009384155, + -.34051498770714, + .37695357203484, + .3971218764782, + .05427964404225, + .72153580188751, + .51439893245697, + -.19535164535046, + .97296363115311, + -.46107393503189, + 3.4810900688171, + -1.9800295829773, + .43278217315674, + .61062479019165, + -2.2851173877716, + 1.0229095220566, + .92894279956818, + -.07583882659674, + .51631212234497, + 1.9152258634567, + -.42641922831535, + 3.2058219909668, + -4.1955056190491, + -5.2458953857422, + .75588232278824, + .7813817858696, + .81318950653076]) + +mse = np.array([ + 1.4407075643539, + 1.4407075643539, + .79720854759216, + .75209444761276, + .71109557151794, + .68920749425888, + .67417079210281, + .66374856233597, + .65616118907928, + .65050256252289, + .64619332551956, + .64286160469055, + .64025497436523, + .63819670677185, + .63655960559845, + .6352499127388, + .63419729471207, + .63334810733795, + .63266098499298, + .63210368156433, + .63165074586868, + .63128209114075, + .63098156452179, + .63073641061783, + .63053613901138, + .63037252426147, + .6302387714386, + .63012927770615, + .63003975152969, + .62996637821198, + .62990635633469, + .62985718250275, + .62981688976288, + .62978386878967, + .62975686788559, + .62973469495773, + .62971651554108, + .62970167398453, + .62968945503235, + .62967944145203, + .62967127561569, + .62966454029083, + .62965905666351, + .62965452671051, + .62965083122253, + .62964779138565, + .62964528799057, + .62964326143265, + .62964159250259, + .62964022159576, + .62963908910751, + .62963819503784, + .62963742017746, + .62963682413101, + .62963628768921, + .6296358704567, + .62963551282883, + .62963527441025, + .62963503599167, + .62963485717773, + .6296346783638, + .62963455915451, + .62963443994522, + .62963438034058, + .62963432073593, + .62963426113129, + .62963420152664, + .629634141922, + .629634141922, + .62963408231735, + .62963408231735, + .62963408231735, + .62963402271271, + .62963402271271, + .62963402271271, + .62963402271271, + .62963402271271, + .62963402271271, + .62963402271271, + .62963402271271, + .62963402271271, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806, + .62963396310806]) + +icstats = np.array([ + 202, + np.nan, + -240.79351748413, + 4, + 489.58703496826, + 502.82010575786]) + + +results = Bunch( + llf=llf, + nobs=nobs, + k=k, + k_exog=k_exog, + sigma=sigma, + chi2=chi2, + df_model=df_model, + k_ar=k_ar, + k_ma=k_ma, + params=params, + cov_params=cov_params, + xb=xb, + y=y, + resid=resid, + yr=yr, + mse=mse, + icstats=icstats +) diff --git a/statsmodels/tsa/tests/results/arima211_css_results.py b/statsmodels/tsa/tests/results/arima211_css_results.py new file mode 100644 index 0000000..4f3552b --- /dev/null +++ b/statsmodels/tsa/tests/results/arima211_css_results.py @@ -0,0 +1,1315 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + +llf = np.array([-240.29558272688]) + +nobs = np.array([202]) + +k = np.array([5]) + +k_exog = np.array([1]) + +sigma = np.array([.79494581155191]) + +chi2 = np.array([1213.6019521322]) + +df_model = np.array([3]) + +k_ar = np.array([2]) + +k_ma = np.array([1]) + +params = np.array([ + .72428568600554, + 1.1464248419014, + -.17024528879204, + -.87113675466923, + .63193884330392]) + +cov_params = np.array([ + .31218565961764, + -.01618380799341, + .00226345462929, + .01386291798401, + -.0036338799176, + -.01618380799341, + .00705713030623, + -.00395404914463, + -.00685704952799, + -.00018629958479, + .00226345462929, + -.00395404914463, + .00255884492061, + .00363586332269, + .00039879711931, + .01386291798401, + -.00685704952799, + .00363586332269, + .00751765532203, + .00008982556101, + -.0036338799176, + -.00018629958479, + .00039879711931, + .00008982556101, + .00077550533053]).reshape(5, 5) + +xb = np.array([ + .72428566217422, + .72428566217422, + .56208884716034, + .53160965442657, + .45030161738396, + .45229381322861, + .38432359695435, + .40517011284828, + .36063131690025, + .30754271149635, + .32044330239296, + .29408219456673, + .27966624498367, + .29743707180023, + .25011941790581, + .27747189998627, + .24822402000427, + .23426930606365, + .27233305573463, + .23524768650532, + .26427435874939, + .21787133812904, + .22461311519146, + .22853142023087, + .24335558712482, + .22953669726849, + .25524401664734, + .22482520341873, + .26450532674789, + .31863233447075, + .27352628111839, + .33670437335968, + .25623551011086, + .28701293468475, + .315819054842, + .3238864839077, + .35844340920448, + .34399557113647, + .40348997712135, + .39373970031738, + .4022718667984, + .46476069092751, + .45762005448341, + .46842387318611, + .50536489486694, + .52051961421967, + .47866532206535, + .50378143787384, + .50863671302795, + .4302790760994, + .49568024277687, + .44652271270752, + .43774726986885, + .43010330200195, + .42344436049461, + .44517293572426, + .47460499405861, + .62086409330368, + .52550911903381, + .77532315254211, + .78466820716858, + .85438597202301, + .87056696414948, + 1.0393311977386, + .99110960960388, + .85202795267105, + .91560190916061, + .89238166809082, + .88917690515518, + .72121334075928, + .84221452474594, + .8454754948616, + .82078683376312, + .95394861698151, + .84718400239944, + .839300096035, + .91501939296722, + .95743554830551, + 1.0874761343002, + 1.1326615810394, + 1.1169674396515, + 1.3300451040268, + 1.4790810346603, + 1.5027786493301, + 1.7226468324661, + 1.8395622968674, + 1.5940405130386, + 1.694568157196, + 1.8241587877274, + 1.7037791013718, + 1.838702917099, + 1.7334734201431, + 1.4791669845581, + 1.3007366657257, + 1.7364456653595, + 1.2694935798645, + .96595168113708, + 1.1405370235443, + 1.1328836679459, + 1.1091921329498, + 1.171138882637, + 1.1465038061142, + 1.0319484472275, + 1.055313706398, + .93150246143341, + 1.0844472646713, + .93333613872528, + .93137633800507, + 1.0778160095215, + .38748729228973, + .77933365106583, + .75266307592392, + .88410103321075, + .94100385904312, + .91849637031555, + .96046274900436, + .92494148015976, + .98310285806656, + 1.0272513628006, + 1.0762135982513, + 1.0743116140366, + 1.254854798317, + 1.1723403930664, + 1.0479376316071, + 1.3550333976746, + 1.2255589962006, + 1.2870025634766, + 1.6643482446671, + 1.3312928676605, + 1.0657893419266, + 1.1804157495499, + 1.1335761547089, + 1.137326002121, + 1.1235628128052, + 1.1115798950195, + 1.1286649703979, + 1.0989991426468, + 1.0626485347748, + .96542054414749, + 1.0419135093689, + .93033194541931, + .95628559589386, + 1.027433514595, + .98328214883804, + 1.0063992738724, + 1.0645687580109, + .94354963302612, + .95077443122864, + 1.0226324796677, + 1.089217543602, + .97552293539047, + 1.0441918373108, + 1.052937746048, + .86785578727722, + .82579529285431, + .95432937145233, + .79897737503052, + .68320548534393, + .85365778207779, + .78336101770401, + .80072748661041, + .9089440703392, + .82500487565994, + .98515397310257, + .96745657920837, + 1.0962044000626, + 1.195325255394, + 1.0824474096298, + 1.2239117622375, + 1.0142554044724, + 1.0399018526077, + .80796521902084, + .7145761847496, + 1.0631860494614, + .86374056339264, + .98086261749268, + 1.0528303384781, + .86123734712601, + .80300676822662, + .96200370788574, + 1.0364016294479, + .98456978797913, + 1.1556725502014, + 1.2025715112686, + 1.0507286787033, + 1.312912106514, + 1.0682457685471, + 2.0334177017212, + 1.0775905847549, + 1.2798084020615, + 1.461397767067, + .72960823774338, + 1.2498733997345, + 1.466894865036, + 1.286082983017, + 1.3903408050537, + 1.8483582735062, + 1.4685434103012, + 2.3107523918152, + .7711226940155, + -.31598940491676, + .68151205778122, + 1.0212944746017]) + +y = np.array([ + np.nan, + 29.704284667969, + 29.712087631226, + 29.881610870361, + 29.820302963257, + 29.992294311523, + 29.934322357178, + 30.155170440674, + 30.200632095337, + 30.117542266846, + 30.24044418335, + 30.274082183838, + 30.319667816162, + 30.507436752319, + 30.470119476318, + 30.657470703125, + 30.68822479248, + 30.714269638062, + 30.962333679199, + 30.985248565674, + 31.204275131226, + 31.16787147522, + 31.244613647461, + 31.348531723022, + 31.523355484009, + 31.609535217285, + 31.835243225098, + 31.874824523926, + 32.144504547119, + 32.5986328125, + 32.723526000977, + 33.186702728271, + 33.156238555908, + 33.387012481689, + 33.7158203125, + 34.023887634277, + 34.458442687988, + 34.743995666504, + 35.303489685059, + 35.693740844727, + 36.102272033691, + 36.764759063721, + 37.257617950439, + 37.768424987793, + 38.405364990234, + 39.020519256592, + 39.378665924072, + 39.903781890869, + 40.408638000488, + 40.530277252197, + 41.095680236816, + 41.346523284912, + 41.637748718262, + 41.930103302002, + 42.223442077637, + 42.645172119141, + 43.174606323242, + 44.320865631104, + 44.725509643555, + 46.37532043457, + 47.584667205811, + 48.954383850098, + 50.170566558838, + 52.039329528809, + 53.291107177734, + 53.852027893066, + 54.915603637695, + 55.792385101318, + 56.6891746521, + 56.821212768555, + 57.842212677002, + 58.745475769043, + 59.5207862854, + 60.953948974609, + 61.6471824646, + 62.439296722412, + 63.615020751953, + 64.857437133789, + 66.587478637695, + 68.23265838623, + 69.616966247559, + 71.930046081543, + 74.479080200195, + 76.702774047852, + 79.722648620605, + 82.739562988281, + 84.194038391113, + 86.394561767578, + 89.024154663086, + 90.803779602051, + 93.33869934082, + 95.133476257324, + 95.879165649414, + 96.300735473633, + 99.236442565918, + 99.369491577148, + 98.865951538086, + 99.940536499023, + 100.93288421631, + 101.90919494629, + 103.27114105225, + 104.44651031494, + 105.13195037842, + 106.15531158447, + 106.63150024414, + 108.08444976807, + 108.63333129883, + 109.43137359619, + 110.9778137207, + 109.08748626709, + 110.27933502197, + 110.95265960693, + 112.28410339355, + 113.64099884033, + 114.71849822998, + 115.96046447754, + 116.9249420166, + 118.18309783936, + 119.52725219727, + 120.97621154785, + 122.27430725098, + 124.35485076904, + 125.67234039307, + 126.44793701172, + 128.85502624512, + 130.12554931641, + 131.78700256348, + 135.06434631348, + 136.03129577637, + 136.16580200195, + 137.38041687012, + 138.3335723877, + 139.43733215332, + 140.52355957031, + 141.61158752441, + 142.82865905762, + 143.8990020752, + 144.86265563965, + 145.46542358398, + 146.64192199707, + 147.2303314209, + 148.15628051758, + 149.42742919922, + 150.38327026367, + 151.50639343262, + 152.86457824707, + 153.54354858398, + 154.45077514648, + 155.72262573242, + 157.18922424316, + 157.97552490234, + 159.24418640137, + 160.45292663574, + 160.7678527832, + 161.22578430176, + 162.45433044434, + 162.79898071289, + 162.88320922852, + 164.05364990234, + 164.68334960938, + 165.50071716309, + 166.80894470215, + 167.52500915527, + 169.08515930176, + 170.26745605469, + 171.99620056152, + 173.89532470703, + 174.98243713379, + 176.82391357422, + 177.41424560547, + 178.43989562988, + 178.40797424316, + 178.41456604004, + 180.36318969727, + 180.86373901367, + 182.18086242676, + 183.65283203125, + 184.06123352051, + 184.50300598145, + 185.86199951172, + 187.33641052246, + 188.38456726074, + 190.25567626953, + 192.00257873535, + 192.85073852539, + 195.11291503906, + 195.76824951172, + 201.23341369629, + 200.47758483887, + 201.97981262207, + 204.16139221191, + 202.6296081543, + 204.82388305664, + 207.38688659668, + 208.62408447266, + 210.52333068848, + 214.34335327148, + 215.46553039551, + 220.92074584961, + 217.66012573242, + 211.85800170898, + 213.35252380371, + 215.49029541016]) + +resid = np.array([ + np.nan, + -.55428558588028, + -.36208805441856, + -.5116091966629, + -.28030154109001, + -.4422954916954, + -.18432281911373, + -.31516996026039, + -.39063200354576, + -.19754208624363, + -.26044383645058, + -.23408082127571, + -.10966806858778, + -.2874368429184, + -.09011957794428, + -.21747054159641, + -.20822501182556, + -.02426831051707, + -.21233357489109, + -.0452471524477, + -.25427412986755, + -.14787164330482, + -.12461274117231, + -.06853157281876, + -.14335711300373, + -.02953593060374, + -.18524432182312, + .00517434487119, + .13549427688122, + -.14863033592701, + .12647144496441, + -.28670132160187, + -.05623856931925, + .01299012638628, + -.01581981778145, + .07611121237278, + -.05844036862254, + .15600442886353, + -.00349225639366, + .0062618162483, + .19772660732269, + .03523930162191, + .04237993061543, + .13157841563225, + .09463357180357, + -.12051809579134, + .021334676072, + -.00378143391572, + -.30863979458809, + .06972090899944, + -.19567719101906, + -.14652347564697, + -.13774801790714, + -.13010406494141, + -.02344283089042, + .05482704937458, + .52539497613907, + -.12086410820484, + .87448859214783, + .42467761039734, + .51533102989197, + .34561482071877, + .82943379878998, + .2606680393219, + -.29110881686211, + .14797207713127, + -.01560037955642, + .00761602073908, + -.58917766809464, + .17878817021847, + .05778701230884, + -.04547626897693, + .47921240329742, + -.15394935011864, + -.0471847653389, + .26070219278336, + .28498136997223, + .64256292581558, + .51252233982086, + .2673399746418, + .9830310344696, + 1.0699564218521, + .72091597318649, + 1.2972244024277, + 1.1773546934128, + -.13956540822983, + .50595796108246, + .80543184280396, + .07584273815155, + .6962223649025, + .06129856407642, + -.73347336053848, + -.87916851043701, + 1.1992633342743, + -1.1364471912384, + -1.4694905281067, + -.0659501478076, + -.14053705334663, + -.13288362324238, + .19080325961113, + .02886573970318, + -.34650835394859, + -.03194846212864, + -.45531520247459, + .36850056052208, + -.38445034623146, + -.13333308696747, + .46862518787384, + -2.2778205871582, + .41251575946808, + -.07933671027422, + .4473415017128, + .4158943593502, + .1590022444725, + .28150060772896, + .03953726217151, + .27505549788475, + .31690016388893, + .37275013327599, + .22378182411194, + .82568991184235, + .14514668285847, + -.27233889698982, + 1.052060842514, + .04496052488685, + .37444713711739, + 1.6129913330078, + -.36434525251389, + -.93128365278244, + .03420155867934, + -.1804157346487, + -.03357006236911, + -.03733511269093, + -.02355666831136, + .08841699361801, + -.02865886501968, + -.09899909794331, + -.36265158653259, + .13458555936813, + -.34191656112671, + -.03033804148436, + .24371138215065, + -.02743346057832, + .1167239844799, + .29360374808311, + -.26456567645073, + -.04355576634407, + .24922250211239, + .37737664580345, + -.18922370672226, + .22447402775288, + .15580512583256, + -.55293774604797, + -.36785578727722, + .27421084046364, + -.45432937145233, + -.59898042678833, + .31679451465607, + -.1536608338356, + .01664204336703, + .39926943182945, + -.10894102603197, + .57500427961349, + .21484296023846, + .63253426551819, + .7037987112999, + .00467173522338, + .61756485700607, + -.4239239692688, + -.014255377464, + -.83988964557648, + -.70797437429428, + .88542991876602, + -.36318910121918, + .33625638484955, + .41914650797844, + -.4528394639492, + -.36123737692833, + .39699018001556, + .43800541758537, + .06358920782804, + .71544241905212, + .54432433843613, + -.20257151126862, + .94927132129669, + -.41291815042496, + 3.4317541122437, + -1.8334206342697, + .22241242229939, + .72019159793854, + -2.2614006996155, + .94440299272537, + 1.0961196422577, + -.04889564588666, + .50891524553299, + 1.971658706665, + -.34635934233665, + 3.1444630622864, + -4.0317454338074, + -5.4861345291138, + .81299871206284, + 1.1164767742157, + .89470589160919]) + +yr = np.array([ + np.nan, + -.55428558588028, + -.36208805441856, + -.5116091966629, + -.28030154109001, + -.4422954916954, + -.18432281911373, + -.31516996026039, + -.39063200354576, + -.19754208624363, + -.26044383645058, + -.23408082127571, + -.10966806858778, + -.2874368429184, + -.09011957794428, + -.21747054159641, + -.20822501182556, + -.02426831051707, + -.21233357489109, + -.0452471524477, + -.25427412986755, + -.14787164330482, + -.12461274117231, + -.06853157281876, + -.14335711300373, + -.02953593060374, + -.18524432182312, + .00517434487119, + .13549427688122, + -.14863033592701, + .12647144496441, + -.28670132160187, + -.05623856931925, + .01299012638628, + -.01581981778145, + .07611121237278, + -.05844036862254, + .15600442886353, + -.00349225639366, + .0062618162483, + .19772660732269, + .03523930162191, + .04237993061543, + .13157841563225, + .09463357180357, + -.12051809579134, + .021334676072, + -.00378143391572, + -.30863979458809, + .06972090899944, + -.19567719101906, + -.14652347564697, + -.13774801790714, + -.13010406494141, + -.02344283089042, + .05482704937458, + .52539497613907, + -.12086410820484, + .87448859214783, + .42467761039734, + .51533102989197, + .34561482071877, + .82943379878998, + .2606680393219, + -.29110881686211, + .14797207713127, + -.01560037955642, + .00761602073908, + -.58917766809464, + .17878817021847, + .05778701230884, + -.04547626897693, + .47921240329742, + -.15394935011864, + -.0471847653389, + .26070219278336, + .28498136997223, + .64256292581558, + .51252233982086, + .2673399746418, + .9830310344696, + 1.0699564218521, + .72091597318649, + 1.2972244024277, + 1.1773546934128, + -.13956540822983, + .50595796108246, + .80543184280396, + .07584273815155, + .6962223649025, + .06129856407642, + -.73347336053848, + -.87916851043701, + 1.1992633342743, + -1.1364471912384, + -1.4694905281067, + -.0659501478076, + -.14053705334663, + -.13288362324238, + .19080325961113, + .02886573970318, + -.34650835394859, + -.03194846212864, + -.45531520247459, + .36850056052208, + -.38445034623146, + -.13333308696747, + .46862518787384, + -2.2778205871582, + .41251575946808, + -.07933671027422, + .4473415017128, + .4158943593502, + .1590022444725, + .28150060772896, + .03953726217151, + .27505549788475, + .31690016388893, + .37275013327599, + .22378182411194, + .82568991184235, + .14514668285847, + -.27233889698982, + 1.052060842514, + .04496052488685, + .37444713711739, + 1.6129913330078, + -.36434525251389, + -.93128365278244, + .03420155867934, + -.1804157346487, + -.03357006236911, + -.03733511269093, + -.02355666831136, + .08841699361801, + -.02865886501968, + -.09899909794331, + -.36265158653259, + .13458555936813, + -.34191656112671, + -.03033804148436, + .24371138215065, + -.02743346057832, + .1167239844799, + .29360374808311, + -.26456567645073, + -.04355576634407, + .24922250211239, + .37737664580345, + -.18922370672226, + .22447402775288, + .15580512583256, + -.55293774604797, + -.36785578727722, + .27421084046364, + -.45432937145233, + -.59898042678833, + .31679451465607, + -.1536608338356, + .01664204336703, + .39926943182945, + -.10894102603197, + .57500427961349, + .21484296023846, + .63253426551819, + .7037987112999, + .00467173522338, + .61756485700607, + -.4239239692688, + -.014255377464, + -.83988964557648, + -.70797437429428, + .88542991876602, + -.36318910121918, + .33625638484955, + .41914650797844, + -.4528394639492, + -.36123737692833, + .39699018001556, + .43800541758537, + .06358920782804, + .71544241905212, + .54432433843613, + -.20257151126862, + .94927132129669, + -.41291815042496, + 3.4317541122437, + -1.8334206342697, + .22241242229939, + .72019159793854, + -2.2614006996155, + .94440299272537, + 1.0961196422577, + -.04889564588666, + .50891524553299, + 1.971658706665, + -.34635934233665, + 3.1444630622864, + -4.0317454338074, + -5.4861345291138, + .81299871206284, + 1.1164767742157, + .89470589160919]) + +mse = np.array([ + 1.1115040779114, + .69814515113831, + .63478744029999, + .63409090042114, + .63356643915176, + .63317084312439, + .63287192583084, + .63264590501785, + .63247483968735, + .63234525918961, + .63224703073502, + .63217264413834, + .63211619853973, + .63207340240479, + .63204091787338, + .63201630115509, + .63199764490128, + .63198345899582, + .63197267055511, + .63196450471878, + .63195830583572, + .63195365667343, + .63195008039474, + .63194733858109, + .63194531202316, + .6319437623024, + .6319425702095, + .63194167613983, + .63194096088409, + .63194048404694, + .63194006681442, + .6319397687912, + .63193953037262, + .63193941116333, + .6319392323494, + .63193917274475, + .63193905353546, + .63193899393082, + .63193899393082, + .63193893432617, + .63193893432617, + .63193887472153, + .63193887472153, + .63193887472153, + .63193887472153, + .63193887472153, + .63193887472153, + .63193887472153, + .63193887472153, + .63193887472153, + .63193887472153, + .63193887472153, + .63193887472153, + .63193887472153, + .63193887472153, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688, + .63193881511688]) + +stdp = np.array([ + .72428566217422, + .72428566217422, + .56208884716034, + .53160965442657, + .45030161738396, + .45229381322861, + .38432359695435, + .40517011284828, + .36063131690025, + .30754271149635, + .32044330239296, + .29408219456673, + .27966624498367, + .29743707180023, + .25011941790581, + .27747189998627, + .24822402000427, + .23426930606365, + .27233305573463, + .23524768650532, + .26427435874939, + .21787133812904, + .22461311519146, + .22853142023087, + .24335558712482, + .22953669726849, + .25524401664734, + .22482520341873, + .26450532674789, + .31863233447075, + .27352628111839, + .33670437335968, + .25623551011086, + .28701293468475, + .315819054842, + .3238864839077, + .35844340920448, + .34399557113647, + .40348997712135, + .39373970031738, + .4022718667984, + .46476069092751, + .45762005448341, + .46842387318611, + .50536489486694, + .52051961421967, + .47866532206535, + .50378143787384, + .50863671302795, + .4302790760994, + .49568024277687, + .44652271270752, + .43774726986885, + .43010330200195, + .42344436049461, + .44517293572426, + .47460499405861, + .62086409330368, + .52550911903381, + .77532315254211, + .78466820716858, + .85438597202301, + .87056696414948, + 1.0393311977386, + .99110960960388, + .85202795267105, + .91560190916061, + .89238166809082, + .88917690515518, + .72121334075928, + .84221452474594, + .8454754948616, + .82078683376312, + .95394861698151, + .84718400239944, + .839300096035, + .91501939296722, + .95743554830551, + 1.0874761343002, + 1.1326615810394, + 1.1169674396515, + 1.3300451040268, + 1.4790810346603, + 1.5027786493301, + 1.7226468324661, + 1.8395622968674, + 1.5940405130386, + 1.694568157196, + 1.8241587877274, + 1.7037791013718, + 1.838702917099, + 1.7334734201431, + 1.4791669845581, + 1.3007366657257, + 1.7364456653595, + 1.2694935798645, + .96595168113708, + 1.1405370235443, + 1.1328836679459, + 1.1091921329498, + 1.171138882637, + 1.1465038061142, + 1.0319484472275, + 1.055313706398, + .93150246143341, + 1.0844472646713, + .93333613872528, + .93137633800507, + 1.0778160095215, + .38748729228973, + .77933365106583, + .75266307592392, + .88410103321075, + .94100385904312, + .91849637031555, + .96046274900436, + .92494148015976, + .98310285806656, + 1.0272513628006, + 1.0762135982513, + 1.0743116140366, + 1.254854798317, + 1.1723403930664, + 1.0479376316071, + 1.3550333976746, + 1.2255589962006, + 1.2870025634766, + 1.6643482446671, + 1.3312928676605, + 1.0657893419266, + 1.1804157495499, + 1.1335761547089, + 1.137326002121, + 1.1235628128052, + 1.1115798950195, + 1.1286649703979, + 1.0989991426468, + 1.0626485347748, + .96542054414749, + 1.0419135093689, + .93033194541931, + .95628559589386, + 1.027433514595, + .98328214883804, + 1.0063992738724, + 1.0645687580109, + .94354963302612, + .95077443122864, + 1.0226324796677, + 1.089217543602, + .97552293539047, + 1.0441918373108, + 1.052937746048, + .86785578727722, + .82579529285431, + .95432937145233, + .79897737503052, + .68320548534393, + .85365778207779, + .78336101770401, + .80072748661041, + .9089440703392, + .82500487565994, + .98515397310257, + .96745657920837, + 1.0962044000626, + 1.195325255394, + 1.0824474096298, + 1.2239117622375, + 1.0142554044724, + 1.0399018526077, + .80796521902084, + .7145761847496, + 1.0631860494614, + .86374056339264, + .98086261749268, + 1.0528303384781, + .86123734712601, + .80300676822662, + .96200370788574, + 1.0364016294479, + .98456978797913, + 1.1556725502014, + 1.2025715112686, + 1.0507286787033, + 1.312912106514, + 1.0682457685471, + 2.0334177017212, + 1.0775905847549, + 1.2798084020615, + 1.461397767067, + .72960823774338, + 1.2498733997345, + 1.466894865036, + 1.286082983017, + 1.3903408050537, + 1.8483582735062, + 1.4685434103012, + 2.3107523918152, + .7711226940155, + -.31598940491676, + .68151205778122, + 1.0212944746017]) + +icstats = np.array([ + 202, + np.nan, + -240.29558272688, + 5, + 490.59116545376, + 507.13250394077]) + + +results = Bunch( + llf=llf, + nobs=nobs, + k=k, + k_exog=k_exog, + sigma=sigma, + chi2=chi2, + df_model=df_model, + k_ar=k_ar, + k_ma=k_ma, + params=params, + cov_params=cov_params, + xb=xb, + y=y, + resid=resid, + yr=yr, + mse=mse, + stdp=stdp, + icstats=icstats +) diff --git a/statsmodels/tsa/tests/results/arima211_results.py b/statsmodels/tsa/tests/results/arima211_results.py new file mode 100644 index 0000000..6645cfb --- /dev/null +++ b/statsmodels/tsa/tests/results/arima211_results.py @@ -0,0 +1,1315 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + +llf = np.array([-239.91961140777]) + +nobs = np.array([202]) + +k = np.array([5]) + +k_exog = np.array([1]) + +sigma = np.array([.79249918716869]) + +chi2 = np.array([907.36856676748]) + +df_model = np.array([3]) + +k_ar = np.array([2]) + +k_ma = np.array([1]) + +params = np.array([ + .86132870569126, + 1.1429974468925, + -.16912378249242, + -.87400688606796, + .79249918716869]) + +cov_params = np.array([ + .22693223682292, + -.00989623843683, + -.00092349277863, + .00706357033712, + -.00195332705416, + -.00989623843683, + .00771565502349, + -.00405286187622, + -.00748374882497, + -.00006513770699, + -.00092349277863, + -.00405286187622, + .00252946620109, + .00372566422545, + .00024079697522, + .00706357033712, + -.00748374882497, + .00372566422545, + .00812286034649, + 8.202907726e-06, + -.00195332705416, + -.00006513770699, + .00024079697522, + 8.202907726e-06, + .00031052148013]).reshape(5, 5) + +xb = np.array([ + .86132872104645, + .86132872104645, + .58931648731232, + .53695642948151, + .43875110149384, + .43893754482269, + .36897498369217, + .39383068680763, + .35268598794937, + .30327013134956, + .3206245303154, + .29862868785858, + .2883597612381, + .30968201160431, + .26627779006958, + .29635512828827, + .27021989226341, + .25900682806969, + .29855474829674, + .26389503479004, + .2940701842308, + .24996083974838, + .25805163383484, + .26306444406509, + .27853038907051, + .26575443148613, + .29165366292, + .262396723032, + .30186694860458, + .35503962635994, + .31088310480118, + .37306407094002, + .29435822367668, + .32511350512505, + .35352823138237, + .36144828796387, + .39527052640915, + .38102087378502, + .43927636742592, + .42946752905846, + .43780836462975, + .49889534711838, + .49156260490417, + .50206583738327, + .53814554214478, + .55276554822922, + .51174682378769, + .53661912679672, + .54144555330276, + .4649658203125, + .52955776453018, + .48147654533386, + .47327646613121, + .46611019968987, + .45984682440758, + .48127228021622, + .50998419523239, + .65266174077988, + .5583056807518, + .80249065160751, + .80990171432495, + .87710189819336, + .89202457666397, + 1.0564744472504, + 1.0080462694168, + .87197554111481, + .93521976470947, + .9128600358963, + .91022855043411, + .7465353012085, + .866335272789, + .86956661939621, + .84549117088318, + .97585707902908, + .87074065208435, + .86343002319336, + .93773847818375, + .97884559631348, + 1.1054569482803, + 1.1484670639038, + 1.1322609186172, + 1.3402134180069, + 1.4842771291733, + 1.5056529045105, + 1.719556927681, + 1.8319338560104, + 1.5904501676559, + 1.6899375915527, + 1.8168371915817, + 1.6987046003342, + 1.8314251899719, + 1.7283667325974, + 1.4807628393173, + 1.308970451355, + 1.7375549077988, + 1.2797228097916, + .98571860790253, + 1.1599444150925, + 1.1530816555023, + 1.13017141819, + 1.1908437013626, + 1.1662386655807, + 1.0540459156036, + 1.0774390697479, + .95646268129349, + 1.1066728830338, + .95817422866821, + .95676136016846, + 1.1000070571899, + .42435362935066, + .81153392791748, + .78478264808655, + .91281259059906, + .9670450091362, + .94373846054077, + .98408794403076, + .9486455321312, + 1.0052901506424, + 1.0478744506836, + 1.095078587532, + 1.0925225019455, + 1.2685979604721, + 1.1865184307098, + 1.0648469924927, + 1.3658550977707, + 1.2376955747604, + 1.2978720664978, + 1.6663243770599, + 1.338112950325, + 1.0797605514526, + 1.1944576501846, + 1.1494234800339, + 1.153874874115, + 1.1408479213715, + 1.1294689178467, + 1.1464176177979, + 1.1174235343933, + 1.0820926427841, + .98742854595184, + 1.0630278587341, + .95385235548019, + .97988063097, + 1.049503326416, + 1.0058189630508, + 1.0283635854721, + 1.0849515199661, + .96609032154083, + .97366327047348, + 1.0440692901611, + 1.1086683273315, + .99680209159851, + 1.0642927885056, + 1.0725424289703, + .8914600610733, + .85157895088196, + .97811859846115, + .8258438706398, + .71353197097778, + .88130152225494, + .81193578243256, + .82894796133041, + .9344978928566, + .85150623321533, + 1.0080153942108, + .9895287156105, + 1.1147927045822, + 1.2104271650314, + 1.0987895727158, + 1.23719227314, + 1.0314946174622, + 1.0577303171158, + .8316445350647, + .74243623018265, + 1.0848734378815, + .88838368654251, + 1.0033586025238, + 1.0730868577957, + .88500571250916, + .82902699708939, + .98530465364456, + 1.057307600975, + 1.0057097673416, + 1.1727533340454, + 1.2172684669495, + 1.0678850412369, + 1.3246995210648, + 1.0841422080994, + 2.0282983779907, + 1.0879902839661, + 1.289278626442, + 1.4674614667892, + .75163400173187, + 1.2650294303894, + 1.4760826826096, + 1.2972749471664, + 1.3993507623672, + 1.8463147878647, + 1.4716247320175, + 2.2955448627472, + .7857254743576, + -.26799991726875, + .71938097476959, + 1.0508332252502]) + +y = np.array([ + np.nan, + 29.841327667236, + 29.739316940308, + 29.886957168579, + 29.808752059937, + 29.978939056396, + 29.918973922729, + 30.143831253052, + 30.192686080933, + 30.113269805908, + 30.24062538147, + 30.27862739563, + 30.32836151123, + 30.519681930542, + 30.486276626587, + 30.67635345459, + 30.710220336914, + 30.73900604248, + 30.988555908203, + 31.01389503479, + 31.234069824219, + 31.199960708618, + 31.278051376343, + 31.383066177368, + 31.558530807495, + 31.645753860474, + 31.871654510498, + 31.912395477295, + 32.181865692139, + 32.635040283203, + 32.760883331299, + 33.223064422607, + 33.194358825684, + 33.425113677979, + 33.753528594971, + 34.061447143555, + 34.495269775391, + 34.781021118164, + 35.339279174805, + 35.729465484619, + 36.137809753418, + 36.798892974854, + 37.291561126709, + 37.802066802979, + 38.438148498535, + 39.052764892578, + 39.41174697876, + 39.936618804932, + 40.44144821167, + 40.564964294434, + 41.129554748535, + 41.381477355957, + 41.673278808594, + 41.966110229492, + 42.259845733643, + 42.681274414063, + 43.209983825684, + 44.352661132813, + 44.758304595947, + 46.402488708496, + 47.609901428223, + 48.977100372314, + 50.192024230957, + 52.05647277832, + 53.308044433594, + 53.871974945068, + 54.935218811035, + 55.81286239624, + 56.710227966309, + 56.846534729004, + 57.86633682251, + 58.769569396973, + 59.545490264893, + 60.975856781006, + 61.670738220215, + 62.463428497314, + 63.637741088867, + 64.878845214844, + 66.605453491211, + 68.248466491699, + 69.632263183594, + 71.940208435059, + 74.484275817871, + 76.70565032959, + 79.71955871582, + 82.73193359375, + 84.190444946289, + 86.389930725098, + 89.016830444336, + 90.798706054688, + 93.331428527832, + 95.128364562988, + 95.880767822266, + 96.308967590332, + 99.23755645752, + 99.379722595215, + 98.885719299316, + 99.959945678711, + 100.95308685303, + 101.93017578125, + 103.29084014893, + 104.4662399292, + 105.15404510498, + 106.17743682861, + 106.65645599365, + 108.10667419434, + 108.65817260742, + 109.45676422119, + 111.00000762939, + 109.12435150146, + 110.31153106689, + 110.98477935791, + 112.31281280518, + 113.66704559326, + 114.74374389648, + 115.98408508301, + 116.94864654541, + 118.20528411865, + 119.54787445068, + 120.99507904053, + 122.29251861572, + 124.36859893799, + 125.68651580811, + 126.46485137939, + 128.86585998535, + 130.1376953125, + 131.79786682129, + 135.06631469727, + 136.03811645508, + 136.17976379395, + 137.39445495605, + 138.34942626953, + 139.45387268066, + 140.54084777832, + 141.6294708252, + 142.84642028809, + 143.91741943359, + 144.88209533691, + 145.48742675781, + 146.66304016113, + 147.25386047363, + 148.17987060547, + 149.4494934082, + 150.40580749512, + 151.52836608887, + 152.88494873047, + 153.56610107422, + 154.47366333008, + 155.74406433105, + 157.20867919922, + 157.9967956543, + 159.26428222656, + 160.47253417969, + 160.79145812988, + 161.25157165527, + 162.47811889648, + 162.82585144043, + 162.91352844238, + 164.08129882813, + 164.71192932129, + 165.52894592285, + 166.83448791504, + 167.55149841309, + 169.10801696777, + 170.28953552246, + 172.0147857666, + 173.9104309082, + 174.99877929688, + 176.83720397949, + 177.43148803711, + 178.45771789551, + 178.43165588379, + 178.44242858887, + 180.38487243652, + 180.88838195801, + 182.20335388184, + 183.67309570313, + 184.08500671387, + 184.5290222168, + 185.88529968262, + 187.35731506348, + 188.40570068359, + 190.27276611328, + 192.01727294922, + 192.8678894043, + 195.12471008301, + 195.78413391113, + 201.22830200195, + 200.48799133301, + 201.98927307129, + 204.16746520996, + 202.65162658691, + 204.83903503418, + 207.39608764648, + 208.63526916504, + 210.53234863281, + 214.34130859375, + 215.4686126709, + 220.9055480957, + 217.67472839355, + 211.90599060059, + 213.39038085938, + 215.51982116699]) + +resid = np.array([ + np.nan, + -.6913286447525, + -.38931575417519, + -.51695597171783, + -.26875102519989, + -.42893922328949, + -.16897420585155, + -.30383053421974, + -.38268667459488, + -.19326950609684, + -.26062506437302, + -.2386272996664, + -.11836158484221, + -.29968178272247, + -.10627794265747, + -.23635374009609, + -.2302208840847, + -.04900583252311, + -.23855529725552, + -.07389451563358, + -.28406995534897, + -.17996114492416, + -.15805125236511, + -.10306460410357, + -.17853192985058, + -.06575367599726, + -.22165396809578, + -.03239719197154, + .09813265502453, + -.18503764271736, + .08911459892988, + -.32306101918221, + -.09436126798391, + -.02511045895517, + -.05352900549769, + .03854943066835, + -.09526748210192, + .11897913366556, + -.0392786487937, + -.02946598827839, + .16219010949135, + .00110464950558, + .00843739509583, + .09793642908335, + .06185294687748, + -.15276403725147, + -.01174682471901, + -.03661911562085, + -.34144860506058, + .0350341796875, + -.22955468297005, + -.18147730827332, + -.17327722907066, + -.16611096262932, + -.05984530970454, + .01872771047056, + .49001583456993, + -.15266172587872, + .84169203042984, + .39751008152962, + .4900975227356, + .32289886474609, + .80797618627548, + .24352477490902, + -.30804550647736, + .12802444398403, + -.03521826863289, + -.01286232378334, + -.61022931337357, + .15346619486809, + .03366623818874, + -.06956738233566, + .45450806617737, + -.17585784196854, + -.07074139267206, + .236572265625, + .26226228475571, + .62115287780762, + .49454152584076, + .2515344619751, + .96773761510849, + 1.059788107872, + .71571981906891, + 1.2943501472473, + 1.1804445981979, + -.13193695247173, + .50954836606979, + .81006240844727, + .08316437155008, + .70129698514938, + .0685763657093, + -.72836673259735, + -.88076442480087, + 1.191029548645, + -1.1375564336777, + -1.4797197580338, + -.08571709692478, + -.15994438529015, + -.15308164060116, + .16982398927212, + .00916088558733, + -.36624330282211, + -.0540459305048, + -.47744059562683, + .34354037046432, + -.40667590498924, + -.15817116200924, + .44324016571045, + -2.3000116348267, + .37564942240715, + -.11153698712587, + .41522192955017, + .38718286156654, + .13296109437943, + .25625845789909, + .01591204665601, + .25135138630867, + .2947128713131, + .35212710499763, + .20491683483124, + .80747896432877, + .13140361011028, + -.28651690483093, + 1.0351514816284, + .03413881734014, + .36231052875519, + 1.6021218299866, + -.36632135510445, + -.93810379505157, + .02023027092218, + -.19445763528347, + -.04941740259528, + -.05388405546546, + -.04084182903171, + .0705279931426, + -.04641156643629, + -.11742353439331, + -.38209563493729, + .11257757246494, + -.36303088068962, + -.05385848507285, + .22011630237103, + -.04950327426195, + .09418711811304, + .27163949608803, + -.28494849801064, + -.06609643250704, + .22633366286755, + .35593989491463, + -.20867441594601, + .20319482684135, + .13570418953896, + -.57254236936569, + -.3914600610733, + .24842712283134, + -.47811862826347, + -.62584692239761, + .28646802902222, + -.18130460381508, + -.01193272508681, + .37104898691177, + -.13449484109879, + .54850292205811, + .19198158383369, + .61046212911606, + .6852103471756, + -.01043024007231, + .60122263431549, + -.43720445036888, + -.03149457275867, + -.85771811008453, + -.73165369033813, + .85756987333298, + -.38487648963928, + .31161326169968, + .39665061235428, + -.47309604287148, + -.38500571250916, + .3709699511528, + .4147045314312, + .04268322139978, + .69430238008499, + .52724367380142, + -.2172684520483, + .93211495876312, + -.42470565438271, + 3.4158577919006, + -1.8283013105392, + .21201276779175, + .7107213139534, + -2.2674646377563, + .92237722873688, + 1.0809636116028, + -.05808337032795, + .49772322177887, + 1.9626487493515, + -.34431591629982, + 3.1413819789886, + -4.016538143158, + -5.5007371902466, + .76500922441483, + 1.078607916832, + .86516714096069]) + +yr = np.array([ + np.nan, + -.6913286447525, + -.38931575417519, + -.51695597171783, + -.26875102519989, + -.42893922328949, + -.16897420585155, + -.30383053421974, + -.38268667459488, + -.19326950609684, + -.26062506437302, + -.2386272996664, + -.11836158484221, + -.29968178272247, + -.10627794265747, + -.23635374009609, + -.2302208840847, + -.04900583252311, + -.23855529725552, + -.07389451563358, + -.28406995534897, + -.17996114492416, + -.15805125236511, + -.10306460410357, + -.17853192985058, + -.06575367599726, + -.22165396809578, + -.03239719197154, + .09813265502453, + -.18503764271736, + .08911459892988, + -.32306101918221, + -.09436126798391, + -.02511045895517, + -.05352900549769, + .03854943066835, + -.09526748210192, + .11897913366556, + -.0392786487937, + -.02946598827839, + .16219010949135, + .00110464950558, + .00843739509583, + .09793642908335, + .06185294687748, + -.15276403725147, + -.01174682471901, + -.03661911562085, + -.34144860506058, + .0350341796875, + -.22955468297005, + -.18147730827332, + -.17327722907066, + -.16611096262932, + -.05984530970454, + .01872771047056, + .49001583456993, + -.15266172587872, + .84169203042984, + .39751008152962, + .4900975227356, + .32289886474609, + .80797618627548, + .24352477490902, + -.30804550647736, + .12802444398403, + -.03521826863289, + -.01286232378334, + -.61022931337357, + .15346619486809, + .03366623818874, + -.06956738233566, + .45450806617737, + -.17585784196854, + -.07074139267206, + .236572265625, + .26226228475571, + .62115287780762, + .49454152584076, + .2515344619751, + .96773761510849, + 1.059788107872, + .71571981906891, + 1.2943501472473, + 1.1804445981979, + -.13193695247173, + .50954836606979, + .81006240844727, + .08316437155008, + .70129698514938, + .0685763657093, + -.72836673259735, + -.88076442480087, + 1.191029548645, + -1.1375564336777, + -1.4797197580338, + -.08571709692478, + -.15994438529015, + -.15308164060116, + .16982398927212, + .00916088558733, + -.36624330282211, + -.0540459305048, + -.47744059562683, + .34354037046432, + -.40667590498924, + -.15817116200924, + .44324016571045, + -2.3000116348267, + .37564942240715, + -.11153698712587, + .41522192955017, + .38718286156654, + .13296109437943, + .25625845789909, + .01591204665601, + .25135138630867, + .2947128713131, + .35212710499763, + .20491683483124, + .80747896432877, + .13140361011028, + -.28651690483093, + 1.0351514816284, + .03413881734014, + .36231052875519, + 1.6021218299866, + -.36632135510445, + -.93810379505157, + .02023027092218, + -.19445763528347, + -.04941740259528, + -.05388405546546, + -.04084182903171, + .0705279931426, + -.04641156643629, + -.11742353439331, + -.38209563493729, + .11257757246494, + -.36303088068962, + -.05385848507285, + .22011630237103, + -.04950327426195, + .09418711811304, + .27163949608803, + -.28494849801064, + -.06609643250704, + .22633366286755, + .35593989491463, + -.20867441594601, + .20319482684135, + .13570418953896, + -.57254236936569, + -.3914600610733, + .24842712283134, + -.47811862826347, + -.62584692239761, + .28646802902222, + -.18130460381508, + -.01193272508681, + .37104898691177, + -.13449484109879, + .54850292205811, + .19198158383369, + .61046212911606, + .6852103471756, + -.01043024007231, + .60122263431549, + -.43720445036888, + -.03149457275867, + -.85771811008453, + -.73165369033813, + .85756987333298, + -.38487648963928, + .31161326169968, + .39665061235428, + -.47309604287148, + -.38500571250916, + .3709699511528, + .4147045314312, + .04268322139978, + .69430238008499, + .52724367380142, + -.2172684520483, + .93211495876312, + -.42470565438271, + 3.4158577919006, + -1.8283013105392, + .21201276779175, + .7107213139534, + -2.2674646377563, + .92237722873688, + 1.0809636116028, + -.05808337032795, + .49772322177887, + 1.9626487493515, + -.34431591629982, + 3.1413819789886, + -4.016538143158, + -5.5007371902466, + .76500922441483, + 1.078607916832, + .86516714096069]) + +mse = np.array([ + .80370712280273, + .80370712280273, + .67928272485733, + .66423606872559, + .65418779850006, + .64722007513046, + .64226144552231, + .63866710662842, + .63602674007416, + .63406819105148, + .6326048374176, + .63150554895401, + .63067644834518, + .63004916906357, + .62957346439362, + .62921214103699, + .62893730401993, + .62872803211212, + .6285685300827, + .62844693660736, + .62835419178009, + .62828344106674, + .62822943925858, + .62818819284439, + .62815672159195, + .6281327009201, + .62811434268951, + .62810027599335, + .62808960676193, + .6280814409256, + .6280751824379, + .62807041406631, + .62806677818298, + .62806397676468, + .62806183099747, + .62806022167206, + .62805896997452, + .6280580163002, + .62805730104446, + .62805676460266, + .62805634737015, + .62805598974228, + .6280557513237, + .62805557250977, + .62805545330048, + .62805533409119, + .6280552148819, + .62805515527725, + .62805509567261, + .62805509567261, + .62805503606796, + .62805503606796, + .62805503606796, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332, + .62805497646332]) + +stdp = np.array([ + .86132872104645, + .86132872104645, + .58931648731232, + .53695642948151, + .43875110149384, + .43893754482269, + .36897498369217, + .39383068680763, + .35268598794937, + .30327013134956, + .3206245303154, + .29862868785858, + .2883597612381, + .30968201160431, + .26627779006958, + .29635512828827, + .27021989226341, + .25900682806969, + .29855474829674, + .26389503479004, + .2940701842308, + .24996083974838, + .25805163383484, + .26306444406509, + .27853038907051, + .26575443148613, + .29165366292, + .262396723032, + .30186694860458, + .35503962635994, + .31088310480118, + .37306407094002, + .29435822367668, + .32511350512505, + .35352823138237, + .36144828796387, + .39527052640915, + .38102087378502, + .43927636742592, + .42946752905846, + .43780836462975, + .49889534711838, + .49156260490417, + .50206583738327, + .53814554214478, + .55276554822922, + .51174682378769, + .53661912679672, + .54144555330276, + .4649658203125, + .52955776453018, + .48147654533386, + .47327646613121, + .46611019968987, + .45984682440758, + .48127228021622, + .50998419523239, + .65266174077988, + .5583056807518, + .80249065160751, + .80990171432495, + .87710189819336, + .89202457666397, + 1.0564744472504, + 1.0080462694168, + .87197554111481, + .93521976470947, + .9128600358963, + .91022855043411, + .7465353012085, + .866335272789, + .86956661939621, + .84549117088318, + .97585707902908, + .87074065208435, + .86343002319336, + .93773847818375, + .97884559631348, + 1.1054569482803, + 1.1484670639038, + 1.1322609186172, + 1.3402134180069, + 1.4842771291733, + 1.5056529045105, + 1.719556927681, + 1.8319338560104, + 1.5904501676559, + 1.6899375915527, + 1.8168371915817, + 1.6987046003342, + 1.8314251899719, + 1.7283667325974, + 1.4807628393173, + 1.308970451355, + 1.7375549077988, + 1.2797228097916, + .98571860790253, + 1.1599444150925, + 1.1530816555023, + 1.13017141819, + 1.1908437013626, + 1.1662386655807, + 1.0540459156036, + 1.0774390697479, + .95646268129349, + 1.1066728830338, + .95817422866821, + .95676136016846, + 1.1000070571899, + .42435362935066, + .81153392791748, + .78478264808655, + .91281259059906, + .9670450091362, + .94373846054077, + .98408794403076, + .9486455321312, + 1.0052901506424, + 1.0478744506836, + 1.095078587532, + 1.0925225019455, + 1.2685979604721, + 1.1865184307098, + 1.0648469924927, + 1.3658550977707, + 1.2376955747604, + 1.2978720664978, + 1.6663243770599, + 1.338112950325, + 1.0797605514526, + 1.1944576501846, + 1.1494234800339, + 1.153874874115, + 1.1408479213715, + 1.1294689178467, + 1.1464176177979, + 1.1174235343933, + 1.0820926427841, + .98742854595184, + 1.0630278587341, + .95385235548019, + .97988063097, + 1.049503326416, + 1.0058189630508, + 1.0283635854721, + 1.0849515199661, + .96609032154083, + .97366327047348, + 1.0440692901611, + 1.1086683273315, + .99680209159851, + 1.0642927885056, + 1.0725424289703, + .8914600610733, + .85157895088196, + .97811859846115, + .8258438706398, + .71353197097778, + .88130152225494, + .81193578243256, + .82894796133041, + .9344978928566, + .85150623321533, + 1.0080153942108, + .9895287156105, + 1.1147927045822, + 1.2104271650314, + 1.0987895727158, + 1.23719227314, + 1.0314946174622, + 1.0577303171158, + .8316445350647, + .74243623018265, + 1.0848734378815, + .88838368654251, + 1.0033586025238, + 1.0730868577957, + .88500571250916, + .82902699708939, + .98530465364456, + 1.057307600975, + 1.0057097673416, + 1.1727533340454, + 1.2172684669495, + 1.0678850412369, + 1.3246995210648, + 1.0841422080994, + 2.0282983779907, + 1.0879902839661, + 1.289278626442, + 1.4674614667892, + .75163400173187, + 1.2650294303894, + 1.4760826826096, + 1.2972749471664, + 1.3993507623672, + 1.8463147878647, + 1.4716247320175, + 2.2955448627472, + .7857254743576, + -.26799991726875, + .71938097476959, + 1.0508332252502]) + +icstats = np.array([ + 202, + np.nan, + -239.91961140777, + 5, + 489.83922281554, + 506.38056130255]) + + +results = Bunch( + llf=llf, + nobs=nobs, + k=k, + k_exog=k_exog, + sigma=sigma, + chi2=chi2, + df_model=df_model, + k_ar=k_ar, + k_ma=k_ma, + params=params, + cov_params=cov_params, + xb=xb, + y=y, + resid=resid, + yr=yr, + mse=mse, + stdp=stdp, + icstats=icstats +) diff --git a/statsmodels/tsa/tests/results/arima211nc_css_results.py b/statsmodels/tsa/tests/results/arima211nc_css_results.py new file mode 100644 index 0000000..5771c30 --- /dev/null +++ b/statsmodels/tsa/tests/results/arima211nc_css_results.py @@ -0,0 +1,1305 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + +llf = np.array([-240.21658671417]) + +nobs = np.array([202]) + +k = np.array([4]) + +k_exog = np.array([1]) + +sigma = np.array([.79473430527544]) + +chi2 = np.array([54633.096432541]) + +df_model = np.array([3]) + +k_ar = np.array([2]) + +k_ma = np.array([1]) + +params = np.array([ + 1.1970355174119, + -.19724105359909, + -.91770441432171, + .63160261598163]) + +cov_params = np.array([ + .00182362158934, + -.00163271308366, + -.00140915922719, + -.00044400541718, + -.00163271308366, + .00148731108625, + .00117094734518, + .00044939207189, + -.00140915922719, + .00117094734518, + .00181742086472, + .00032737864417, + -.00044400541718, + .00044939207189, + .00032737864417, + .00071193796554]).reshape(4, 4) + +xb = np.array([ + 0, + 0, + .04999904707074, + .06866559386253, + .02903163060546, + .07047952711582, + .03383458778262, + .08519082516432, + .06387747824192, + .0323903337121, + .0664371997118, + .056028008461, + .05634552612901, + .08741936087608, + .04945361241698, + .0881454795599, + .06608437746763, + .05997726693749, + .1058451384306, + .07246486097574, + .10775856673717, + .06419499218464, + .07649331539869, + .08432687073946, + .10236189514399, + .09031195193529, + .11902847886086, + .08933536708355, + .13242828845978, + .18790599703789, + .1410321444273, + .2076324224472, + .12561346590519, + .16128000617027, + .19236192107201, + .20115886628628, + .23716603219509, + .22255305945873, + .28473255038261, + .27441227436066, + .28466689586639, + .34994292259216, + .3424659371376, + .35532799363136, + .39506548643112, + .41180691123009, + .37130555510521, + .40151777863503, + .40951976180077, + .33306270837784, + .40587121248245, + .35764938592911, + .35284259915352, + .34843212366104, + .34438464045525, + .36860400438309, + .3990384042263, + .54691004753113, + .44432625174522, + .70020270347595, + .70163971185684, + .77033877372742, + .78572767972946, + .95923948287964, + .90811860561371, + .77250319719315, + .85019183158875, + .83438217639923, + .83959633111954, + .67678385972977, + .81331378221512, + .8202628493309, + .79870623350143, + .93831378221512, + .8281461596489, + .8256653547287, + .9071888923645, + .95076316595078, + 1.0827594995499, + 1.1249971389771, + 1.1078934669495, + 1.3271758556366, + 1.4741442203522, + 1.4939774274826, + 1.7192279100418, + 1.8355281352997, + 1.5873348712921, + 1.7079899311066, + 1.8515517711639, + 1.7368041276932, + 1.8895095586777, + 1.7913619279861, + 1.5485136508942, + 1.3914349079132, + 1.8569093942642, + 1.378589630127, + 1.0909280776978, + 1.2919955253601, + 1.2874838113785, + 1.2636196613312, + 1.3255174160004, + 1.2952193021774, + 1.1754019260406, + 1.2002106904984, + 1.0717958211899, + 1.2283787727356, + 1.0664055347443, + 1.0640426874161, + 1.2097471952438, + .49885395169258, + .91795635223389, + .88015007972717, + 1.0048481225967, + 1.0485925674438, + 1.0131514072418, + 1.0480036735535, + 1.0044000148773, + 1.0596977472305, + 1.0989319086075, + 1.1431447267532, + 1.1360602378845, + 1.316884636879, + 1.2248164415359, + 1.0992801189423, + 1.4178918600082, + 1.2780615091324, + 1.3436778783798, + 1.727570772171, + 1.376532793045, + 1.1185711622238, + 1.2548811435699, + 1.2139776945114, + 1.22409760952, + 1.2136551141739, + 1.2040791511536, + 1.2232189178467, + 1.1931306123734, + 1.1573059558868, + 1.0603547096252, + 1.1422899961472, + 1.0268490314484, + 1.0556720495224, + 1.1264756917953, + 1.0764141082764, + 1.0978548526764, + 1.1536711454391, + 1.025780916214, + 1.034966468811, + 1.1074740886688, + 1.1707112789154, + 1.0496238470078, + 1.1209251880646, + 1.1271858215332, + .93740028142929, + .90130144357681, + 1.0357736349106, + .87323325872421, + .75861483812332, + .93606770038605, + .85732334852219, + .87216699123383, + .97779452800751, + .88410341739655, + 1.0446182489395, + 1.0177079439163, + 1.144193649292, + 1.2372444868088, + 1.1155867576599, + 1.2619564533234, + 1.0462523698807, + 1.0816910266876, + .85130125284195, + .76972281932831, + 1.1335872411728, + .92024201154709, + 1.0416384935379, + 1.1102936267853, + .91037821769714, + .85678082704544, + 1.022847533226, + 1.0930491685867, + 1.0342184305191, + 1.2070096731186, + 1.2472279071808, + 1.0886085033417, + 1.3604420423508, + 1.1053978204727, + 2.0939025878906, + 1.0898643732071, + 1.3238569498062, + 1.5171576738358, + .77435439825058, + 1.3360253572464, + 1.5512014627457, + 1.3569095134735, + 1.4669530391693, + 1.9312930107117, + 1.52878677845, + 2.3952746391296, + .80755305290222, + -.2365039139986, + .85178333520889, + 1.1858888864517]) + +y = np.array([ + np.nan, + 28.979999542236, + 29.199998855591, + 29.4186668396, + 29.399032592773, + 29.610481262207, + 29.583833694458, + 29.835191726685, + 29.903877258301, + 29.842390060425, + 29.986436843872, + 30.036027908325, + 30.096345901489, + 30.29741859436, + 30.269453048706, + 30.468145370483, + 30.506084442139, + 30.539976119995, + 30.795845031738, + 30.822463989258, + 31.047760009766, + 31.014196395874, + 31.096494674683, + 31.204328536987, + 31.382362365723, + 31.470310211182, + 31.699028015137, + 31.739334106445, + 32.012428283691, + 32.467903137207, + 32.591033935547, + 33.057632446289, + 33.025615692139, + 33.261280059814, + 33.592365264893, + 33.901161193848, + 34.33716583252, + 34.622554779053, + 35.184734344482, + 35.574413299561, + 35.984668731689, + 36.649940490723, + 37.142463684082, + 37.655326843262, + 38.295066833496, + 38.911808013916, + 39.271308898926, + 39.801517486572, + 40.309520721436, + 40.433059692383, + 41.005870819092, + 41.257652282715, + 41.552845001221, + 41.848430633545, + 42.144382476807, + 42.568603515625, + 43.099040985107, + 44.246910095215, + 44.644325256348, + 46.300201416016, + 47.501640319824, + 48.870338439941, + 50.08572769165, + 51.959239959717, + 53.208118438721, + 53.77250289917, + 54.850193023682, + 55.734382629395, + 56.639595031738, + 56.776782989502, + 57.813312530518, + 58.720264434814, + 59.498706817627, + 60.938312530518, + 61.628147125244, + 62.425662994385, + 63.607189178467, + 64.850761413574, + 66.58275604248, + 68.224998474121, + 69.607894897461, + 71.927177429199, + 74.474143981934, + 76.693977355957, + 79.719230651855, + 82.735527038574, + 84.18733215332, + 86.407989501953, + 89.051551818848, + 90.836799621582, + 93.389511108398, + 95.191360473633, + 95.948516845703, + 96.39143371582, + 99.356910705566, + 99.478584289551, + 98.990928649902, + 100.09199523926, + 101.08748626709, + 102.063621521, + 103.42551422119, + 104.59522247314, + 105.27539825439, + 106.30020904541, + 106.77178955078, + 108.2283782959, + 108.76640319824, + 109.5640411377, + 111.10974884033, + 109.19885253906, + 110.41795349121, + 111.08014678955, + 112.40484619141, + 113.74858856201, + 114.81315612793, + 116.04800415039, + 117.00440216064, + 118.25969696045, + 119.59893035889, + 121.04314422607, + 122.33605957031, + 124.41688537598, + 125.72481536865, + 126.49928283691, + 128.91789245605, + 130.17805480957, + 131.84367370605, + 135.12756347656, + 136.07652282715, + 136.21858215332, + 137.45487976074, + 138.41397094727, + 139.52409362793, + 140.61364746094, + 141.70408630371, + 142.92321777344, + 143.99313354492, + 144.9573059082, + 145.56034851074, + 146.74229431152, + 147.32685852051, + 148.25567626953, + 149.52647399902, + 150.47640991211, + 151.59785461426, + 152.95367431641, + 153.62579345703, + 154.53497314453, + 155.80746459961, + 157.27072143555, + 158.04962158203, + 159.32092285156, + 160.52717590332, + 160.83738708496, + 161.30130004883, + 162.53576660156, + 162.87322998047, + 162.95861816406, + 164.13606262207, + 164.75732421875, + 165.57215881348, + 166.8777923584, + 167.58410644531, + 169.14462280273, + 170.31771850586, + 172.04418945313, + 173.93724060059, + 175.01557922363, + 176.86196899414, + 177.44624328613, + 178.48168945313, + 178.4513092041, + 178.4697265625, + 180.43359375, + 180.92024230957, + 182.24163818359, + 183.71029663086, + 184.11038208008, + 184.5567779541, + 185.92283630371, + 187.39305114746, + 188.43421936035, + 190.30702209473, + 192.04722595215, + 192.88861083984, + 195.16044616699, + 195.8053894043, + 201.29389953613, + 200.48985290527, + 202.0238494873, + 204.21714782715, + 202.67434692383, + 204.91003417969, + 207.47120666504, + 208.6949005127, + 210.59994506836, + 214.42628479004, + 215.52578735352, + 221.00527954102, + 217.6965637207, + 211.93748474121, + 213.52278137207, + 215.65487670898]) + +resid = np.array([ + np.nan, + .17000007629395, + .150001719594, + -.04866513609886, + .1409684419632, + -.06048120185733, + .16616617143154, + .00480932369828, + -.09387816488743, + .07761027663946, + -.00643773004413, + .00397336483002, + .1136526465416, + -.07741913199425, + .11054623872042, + -.02814410813153, + -.02608536928892, + .15002372860909, + -.04584567248821, + .11753567308187, + -.09775833785534, + .00580469891429, + .02350706420839, + .07567297667265, + -.00236342288554, + .10968881100416, + -.04902878031135, + .14066417515278, + .2675713300705, + -.01790400780737, + .25896555185318, + -.15762937068939, + .074383482337, + .13872304558754, + .10763731598854, + .19883884489536, + .06283701956272, + .27744692564011, + .11526516824961, + .12558923661709, + .3153315782547, + .15005706250668, + .1575340628624, + .24467428028584, + .20493300259113, + -.01180539745837, + .12869445979595, + .09848223626614, + -.20952282845974, + .166937276721, + -.1058681756258, + -.05765015259385, + -.05284334719181, + -.04843288660049, + .05561690032482, + .13139598071575, + .60096162557602, + -.04691004380584, + .95567148923874, + .49979802966118, + .5983595252037, + .42966198921204, + .91427308320999, + .34075975418091, + -.20811785757542, + .22749677300453, + .049809679389, + .06561553478241, + -.53959709405899, + .2232176810503, + .08668774366379, + -.02026358619332, + .50129300355911, + -.13831453025341, + -.02814690209925, + .27433693408966, + .29281187057495, + .64923530817032, + .51723897457123, + .27500438690186, + .99210506677628, + 1.0728256702423, + .72585266828537, + 1.3060256242752, + 1.1807736158371, + -.13553117215633, + .51266354322433, + .79201000928879, + .0484497398138, + .66319739818573, + .0104919327423, + -.79136198759079, + -.94851511716843, + 1.1085650920868, + -1.2569109201431, + -1.5785865783691, + -.19092650711536, + -.29199549555779, + -.2874838411808, + .03637577593327, + -.12551285326481, + -.49522390961647, + -.17540194094181, + -.60021221637726, + .22820720076561, + -.52838176488876, + -.26640248298645, + .33595886826515, + -2.4097516536713, + .30114910006523, + -.21795941889286, + .31985449790955, + .29514732956886, + .05141358822584, + .18684551119804, + -.04800364747643, + .19559693336487, + .24030530452728, + .30106961727142, + .15685074031353, + .76394122838974, + .08311692625284, + -.32481494545937, + 1.0007183551788, + -.01789797656238, + .32194453477859, + 1.5563160181046, + -.42756772041321, + -.97652357816696, + -.01858037337661, + -.25488117337227, + -.11397163569927, + -.12410674989223, + -.1136489585042, + -.00408222479746, + -.12321277707815, + -.19313062727451, + -.45730903744698, + .03965143114328, + -.44229298830032, + -.12685517966747, + .1443248540163, + -.12647566199303, + .02359197475016, + .20214818418026, + -.35366812348366, + -.12578700482845, + .16503044962883, + .29253509640694, + -.27071738243103, + .15037304162979, + .07907173037529, + -.6271858215332, + -.43740031123161, + .19870468974113, + -.53577369451523, + -.67323631048203, + .24138513207436, + -.23607075214386, + -.05732027813792, + .32782995700836, + -.17779149115086, + .51590573787689, + .15537866950035, + .5822828412056, + .65580940246582, + -.03724759072065, + .58442544937134, + -.46196871995926, + -.04625232890248, + -.88167881965637, + -.75131040811539, + .83028328418732, + -.43359026312828, + .2797549366951, + .35837066173553, + -.51030284166336, + -.41037824749947, + .34321609139442, + .37716165184975, + .00694172456861, + .66579383611679, + .49298724532127, + -.24722795188427, + .91139149665833, + -.46044808626175, + 3.3946022987366, + -1.8939057588577, + .21013870835304, + .67614299058914, + -2.3171606063843, + .89965683221817, + 1.0099676847458, + -.13320215046406, + .43808862566948, + 1.8950464725494, + -.42929407954216, + 3.0842199325562, + -4.1162676811218, + -5.5225644111633, + .73351317644119, + .94620555639267, + .73011147975922]) + +yr = np.array([ + np.nan, + .17000007629395, + .150001719594, + -.04866513609886, + .1409684419632, + -.06048120185733, + .16616617143154, + .00480932369828, + -.09387816488743, + .07761027663946, + -.00643773004413, + .00397336483002, + .1136526465416, + -.07741913199425, + .11054623872042, + -.02814410813153, + -.02608536928892, + .15002372860909, + -.04584567248821, + .11753567308187, + -.09775833785534, + .00580469891429, + .02350706420839, + .07567297667265, + -.00236342288554, + .10968881100416, + -.04902878031135, + .14066417515278, + .2675713300705, + -.01790400780737, + .25896555185318, + -.15762937068939, + .074383482337, + .13872304558754, + .10763731598854, + .19883884489536, + .06283701956272, + .27744692564011, + .11526516824961, + .12558923661709, + .3153315782547, + .15005706250668, + .1575340628624, + .24467428028584, + .20493300259113, + -.01180539745837, + .12869445979595, + .09848223626614, + -.20952282845974, + .166937276721, + -.1058681756258, + -.05765015259385, + -.05284334719181, + -.04843288660049, + .05561690032482, + .13139598071575, + .60096162557602, + -.04691004380584, + .95567148923874, + .49979802966118, + .5983595252037, + .42966198921204, + .91427308320999, + .34075975418091, + -.20811785757542, + .22749677300453, + .049809679389, + .06561553478241, + -.53959709405899, + .2232176810503, + .08668774366379, + -.02026358619332, + .50129300355911, + -.13831453025341, + -.02814690209925, + .27433693408966, + .29281187057495, + .64923530817032, + .51723897457123, + .27500438690186, + .99210506677628, + 1.0728256702423, + .72585266828537, + 1.3060256242752, + 1.1807736158371, + -.13553117215633, + .51266354322433, + .79201000928879, + .0484497398138, + .66319739818573, + .0104919327423, + -.79136198759079, + -.94851511716843, + 1.1085650920868, + -1.2569109201431, + -1.5785865783691, + -.19092650711536, + -.29199549555779, + -.2874838411808, + .03637577593327, + -.12551285326481, + -.49522390961647, + -.17540194094181, + -.60021221637726, + .22820720076561, + -.52838176488876, + -.26640248298645, + .33595886826515, + -2.4097516536713, + .30114910006523, + -.21795941889286, + .31985449790955, + .29514732956886, + .05141358822584, + .18684551119804, + -.04800364747643, + .19559693336487, + .24030530452728, + .30106961727142, + .15685074031353, + .76394122838974, + .08311692625284, + -.32481494545937, + 1.0007183551788, + -.01789797656238, + .32194453477859, + 1.5563160181046, + -.42756772041321, + -.97652357816696, + -.01858037337661, + -.25488117337227, + -.11397163569927, + -.12410674989223, + -.1136489585042, + -.00408222479746, + -.12321277707815, + -.19313062727451, + -.45730903744698, + .03965143114328, + -.44229298830032, + -.12685517966747, + .1443248540163, + -.12647566199303, + .02359197475016, + .20214818418026, + -.35366812348366, + -.12578700482845, + .16503044962883, + .29253509640694, + -.27071738243103, + .15037304162979, + .07907173037529, + -.6271858215332, + -.43740031123161, + .19870468974113, + -.53577369451523, + -.67323631048203, + .24138513207436, + -.23607075214386, + -.05732027813792, + .32782995700836, + -.17779149115086, + .51590573787689, + .15537866950035, + .5822828412056, + .65580940246582, + -.03724759072065, + .58442544937134, + -.46196871995926, + -.04625232890248, + -.88167881965637, + -.75131040811539, + .83028328418732, + -.43359026312828, + .2797549366951, + .35837066173553, + -.51030284166336, + -.41037824749947, + .34321609139442, + .37716165184975, + .00694172456861, + .66579383611679, + .49298724532127, + -.24722795188427, + .91139149665833, + -.46044808626175, + 3.3946022987366, + -1.8939057588577, + .21013870835304, + .67614299058914, + -2.3171606063843, + .89965683221817, + 1.0099676847458, + -.13320215046406, + .43808862566948, + 1.8950464725494, + -.42929407954216, + 3.0842199325562, + -4.1162676811218, + -5.5225644111633, + .73351317644119, + .94620555639267, + .73011147975922]) + +mse = np.array([ + 1.1635265350342, + .70545583963394, + .63365471363068, + .633325278759, + .63304948806763, + .63281834125519, + .63262450695038, + .63246184587479, + .63232523202896, + .63221049308777, + .63211411237717, + .63203299045563, + .63196486234665, + .63190752267838, + .63185924291611, + .63181865215302, + .63178449869156, + .63175576925278, + .631731569767, + .63171118497849, + .63169401884079, + .63167959451675, + .63166743516922, + .63165718317032, + .63164860010147, + .63164132833481, + .6316351890564, + .63163006305695, + .63162571191788, + .63162207603455, + .63161903619766, + .63161641359329, + .63161426782608, + .63161242008209, + .63161087036133, + .63160955905914, + .63160848617554, + .63160753250122, + .63160675764084, + .63160610198975, + .63160556554794, + .63160508871078, + .63160473108292, + .63160437345505, + .63160407543182, + .63160383701324, + .63160365819931, + .63160347938538, + .63160336017609, + .6316032409668, + .63160312175751, + .63160306215286, + .63160300254822, + .63160294294357, + .63160288333893, + .63160282373428, + .63160282373428, + .63160276412964, + .63160276412964, + .63160270452499, + .63160270452499, + .63160270452499, + .63160270452499, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035, + .63160264492035]) + +stdp = np.array([ + 0, + 0, + .04999904707074, + .06866559386253, + .02903163060546, + .07047952711582, + .03383458778262, + .08519082516432, + .06387747824192, + .0323903337121, + .0664371997118, + .056028008461, + .05634552612901, + .08741936087608, + .04945361241698, + .0881454795599, + .06608437746763, + .05997726693749, + .1058451384306, + .07246486097574, + .10775856673717, + .06419499218464, + .07649331539869, + .08432687073946, + .10236189514399, + .09031195193529, + .11902847886086, + .08933536708355, + .13242828845978, + .18790599703789, + .1410321444273, + .2076324224472, + .12561346590519, + .16128000617027, + .19236192107201, + .20115886628628, + .23716603219509, + .22255305945873, + .28473255038261, + .27441227436066, + .28466689586639, + .34994292259216, + .3424659371376, + .35532799363136, + .39506548643112, + .41180691123009, + .37130555510521, + .40151777863503, + .40951976180077, + .33306270837784, + .40587121248245, + .35764938592911, + .35284259915352, + .34843212366104, + .34438464045525, + .36860400438309, + .3990384042263, + .54691004753113, + .44432625174522, + .70020270347595, + .70163971185684, + .77033877372742, + .78572767972946, + .95923948287964, + .90811860561371, + .77250319719315, + .85019183158875, + .83438217639923, + .83959633111954, + .67678385972977, + .81331378221512, + .8202628493309, + .79870623350143, + .93831378221512, + .8281461596489, + .8256653547287, + .9071888923645, + .95076316595078, + 1.0827594995499, + 1.1249971389771, + 1.1078934669495, + 1.3271758556366, + 1.4741442203522, + 1.4939774274826, + 1.7192279100418, + 1.8355281352997, + 1.5873348712921, + 1.7079899311066, + 1.8515517711639, + 1.7368041276932, + 1.8895095586777, + 1.7913619279861, + 1.5485136508942, + 1.3914349079132, + 1.8569093942642, + 1.378589630127, + 1.0909280776978, + 1.2919955253601, + 1.2874838113785, + 1.2636196613312, + 1.3255174160004, + 1.2952193021774, + 1.1754019260406, + 1.2002106904984, + 1.0717958211899, + 1.2283787727356, + 1.0664055347443, + 1.0640426874161, + 1.2097471952438, + .49885395169258, + .91795635223389, + .88015007972717, + 1.0048481225967, + 1.0485925674438, + 1.0131514072418, + 1.0480036735535, + 1.0044000148773, + 1.0596977472305, + 1.0989319086075, + 1.1431447267532, + 1.1360602378845, + 1.316884636879, + 1.2248164415359, + 1.0992801189423, + 1.4178918600082, + 1.2780615091324, + 1.3436778783798, + 1.727570772171, + 1.376532793045, + 1.1185711622238, + 1.2548811435699, + 1.2139776945114, + 1.22409760952, + 1.2136551141739, + 1.2040791511536, + 1.2232189178467, + 1.1931306123734, + 1.1573059558868, + 1.0603547096252, + 1.1422899961472, + 1.0268490314484, + 1.0556720495224, + 1.1264756917953, + 1.0764141082764, + 1.0978548526764, + 1.1536711454391, + 1.025780916214, + 1.034966468811, + 1.1074740886688, + 1.1707112789154, + 1.0496238470078, + 1.1209251880646, + 1.1271858215332, + .93740028142929, + .90130144357681, + 1.0357736349106, + .87323325872421, + .75861483812332, + .93606770038605, + .85732334852219, + .87216699123383, + .97779452800751, + .88410341739655, + 1.0446182489395, + 1.0177079439163, + 1.144193649292, + 1.2372444868088, + 1.1155867576599, + 1.2619564533234, + 1.0462523698807, + 1.0816910266876, + .85130125284195, + .76972281932831, + 1.1335872411728, + .92024201154709, + 1.0416384935379, + 1.1102936267853, + .91037821769714, + .85678082704544, + 1.022847533226, + 1.0930491685867, + 1.0342184305191, + 1.2070096731186, + 1.2472279071808, + 1.0886085033417, + 1.3604420423508, + 1.1053978204727, + 2.0939025878906, + 1.0898643732071, + 1.3238569498062, + 1.5171576738358, + .77435439825058, + 1.3360253572464, + 1.5512014627457, + 1.3569095134735, + 1.4669530391693, + 1.9312930107117, + 1.52878677845, + 2.3952746391296, + .80755305290222, + -.2365039139986, + .85178333520889, + 1.1858888864517]) + +icstats = np.array([ + 202, + np.nan, + -240.21658671417, + 4, + 488.43317342834, + 501.66624421795]) + + +results = Bunch( + llf=llf, + nobs=nobs, + k=k, + k_exog=k_exog, + sigma=sigma, + chi2=chi2, + df_model=df_model, + k_ar=k_ar, + k_ma=k_ma, + params=params, + cov_params=cov_params, + xb=xb, + y=y, + resid=resid, + yr=yr, + mse=mse, + stdp=stdp, + icstats=icstats +) diff --git a/statsmodels/tsa/tests/results/arima211nc_results.py b/statsmodels/tsa/tests/results/arima211nc_results.py new file mode 100644 index 0000000..200e887 --- /dev/null +++ b/statsmodels/tsa/tests/results/arima211nc_results.py @@ -0,0 +1,1099 @@ +import numpy as np + +from statsmodels.tools.tools import Bunch + +llf = np.array([-241.25977940638]) + +nobs = np.array([202]) + +k = np.array([4]) + +k_exog = np.array([1]) + +sigma = np.array([.79533686587485]) + +chi2 = np.array([48655.961417345]) + +df_model = np.array([3]) + +k_ar = np.array([2]) + +k_ma = np.array([1]) + +params = np.array([ + 1.1870704073154, + -.19095698898571, + -.90853757573555, + .79533686587485]) + +cov_params = np.array([ + .00204336743511, + -.00177522179187, + -.00165894353702, + -.00031352141782, + -.00177522179187, + .00157376214003, + .00132907629148, + .00030367391511, + -.00165894353702, + .00132907629148, + .00210988984438, + .00024199988464, + -.00031352141782, + .00030367391511, + .00024199988464, + .00027937875185]).reshape(4, 4) + +xb = np.array([ + 0, + 0, + .11248598247766, + .14283391833305, + .0800810828805, + .12544548511505, + .07541109621525, + .1297073662281, + .10287435352802, + .06303016841412, + .09501431882381, + .08120259642601, + .07862555980682, + .10874316096306, + .06787430495024, + .10527064651251, + .08142036944628, + .07337106764317, + .11828763782978, + .08380854874849, + .11801292747259, + .07338324189186, + .0842502862215, + .09106454998255, + .10832596570253, + .09570593386889, + .1236881390214, + .09362822026014, + .13587079942226, + .19111332297325, + .14459040760994, + .21043147146702, + .12866979837418, + .16308072209358, + .19356986880302, + .20215991139412, + .23782986402512, + .22326464951038, + .28485587239265, + .27474755048752, + .28465977311134, + .34938132762909, + .3421268761158, + .35463020205498, + .39384591579437, + .41037485003471, + .36968034505844, + .39875456690788, + .40607318282127, + .32915702462196, + .40012913942337, + .35161358118057, + .34572568535805, + .34037715196609, + .3355179131031, + .35895752906799, + .38901025056839, + .53648668527603, + .43572762608528, + .69034379720688, + .69410443305969, + .76356476545334, + .77972346544266, + .95276647806168, + .9030898809433, + .76722019910812, + .84191131591797, + .82463103532791, + .82802563905716, + .66399103403091, + .79665386676788, + .80260843038559, + .78016436100006, + .91813576221466, + .80874294042587, + .80483394861221, + .8848432302475, + .92809981107712, + 1.0597171783447, + 1.1029140949249, + 1.0864543914795, + 1.3046631813049, + 1.4528053998947, + 1.4744025468826, + 1.6993381977081, + 1.816978096962, + 1.5705223083496, + 1.6871707439423, + 1.8281806707382, + 1.7127912044525, + 1.8617957830429, + 1.7624272108078, + 1.5169456005096, + 1.3543643951416, + 1.8122490644455, + 1.3362231254578, + 1.0437293052673, + 1.2371381521225, + 1.2306576967239, + 1.2056746482849, + 1.2665351629257, + 1.2366921901703, + 1.1172571182251, + 1.1408381462097, + 1.0126565694809, + 1.1675561666489, + 1.0074961185455, + 1.0045058727264, + 1.1498116254807, + .44306626915932, + .85451871156693, + .81856834888458, + .94427144527435, + .99084824323654, + .95836746692657, + .994897544384, + .95328682661057, + 1.0093784332275, + 1.0500040054321, + 1.0956697463989, + 1.090208530426, + 1.2714649438858, + 1.1823015213013, + 1.0575052499771, + 1.373840212822, + 1.2371203899384, + 1.3022859096527, + 1.6853868961334, + 1.3395566940308, + 1.0802086591721, + 1.2114092111588, + 1.1690926551819, + 1.1775953769684, + 1.1662193536758, + 1.1558910608292, + 1.1743551492691, + 1.1441857814789, + 1.1080147027969, + 1.0106881856918, + 1.0909667015076, + .97610247135162, + 1.0038343667984, + 1.0743995904922, + 1.0255174636841, + 1.0471519231796, + 1.1034165620804, + .97707790136337, + .9856236577034, + 1.0578545331955, + 1.1219012737274, + 1.0026258230209, + 1.0733016729355, + 1.0802255868912, + .89154416322708, + .85378932952881, + .98660898208618, + .82558387517929, + .71030122041702, + .88567733764648, + .80868631601334, + .82387971878052, + .92999804019928, + .83861750364304, + .99909782409668, + .97461491823196, + 1.1019765138626, + 1.1970175504684, + 1.0780508518219, + 1.2238110303879, + 1.0100719928741, + 1.0434579849243, + .81277370452881, + .72809249162674, + 1.0880596637726, + .87798285484314, + .99824965000153, + 1.0677480697632, + .86986482143402, + .81499886512756, + .97921711206436, + 1.0504562854767, + .99342101812363, + 1.1660186052322, + 1.208247423172, + 1.0516448020935, + 1.3215674161911, + 1.0694575309753, + 2.0531799793243, + 1.0617904663086, + 1.2885792255402, + 1.4795436859131, + .73947989940643, + 1.290878534317, + 1.506583571434, + 1.3157633543015, + 1.424609541893, + 1.8879710435867, + 1.4916514158249, + 2.3532779216766, + .77780252695084, + -.27798706293106, + .7862361073494, + 1.1202166080475]) + +y = np.array([ + np.nan, + 28.979999542236, + 29.26248550415, + 29.492834091187, + 29.450082778931, + 29.665447235107, + 29.625410079956, + 29.879707336426, + 29.942874908447, + 29.873029708862, + 30.015014648438, + 30.06120300293, + 30.118625640869, + 30.318742752075, + 30.287874221802, + 30.485269546509, + 30.521421432495, + 30.553371429443, + 30.808288574219, + 30.833808898926, + 31.058013916016, + 31.023384094238, + 31.104249954224, + 31.211065292358, + 31.388326644897, + 31.475704193115, + 31.703687667847, + 31.743627548218, + 32.015869140625, + 32.471111297607, + 32.594593048096, + 33.060428619385, + 33.028671264648, + 33.263080596924, + 33.593570709229, + 33.902160644531, + 34.337829589844, + 34.623264312744, + 35.184856414795, + 35.574745178223, + 35.984661102295, + 36.649379730225, + 37.142127990723, + 37.654628753662, + 38.293846130371, + 38.910373687744, + 39.269680023193, + 39.798755645752, + 40.306076049805, + 40.42915725708, + 41.00012588501, + 41.251613616943, + 41.545726776123, + 41.840377807617, + 42.135517120361, + 42.558959960938, + 43.089012145996, + 44.236488342285, + 44.635726928711, + 46.290340423584, + 47.494102478027, + 48.863563537598, + 50.079723358154, + 51.952766418457, + 53.203090667725, + 53.767219543457, + 54.841911315918, + 55.724632263184, + 56.628025054932, + 56.763988494873, + 57.796653747559, + 58.702610015869, + 59.480163574219, + 60.91813659668, + 61.608741760254, + 62.404830932617, + 63.584842681885, + 64.828102111816, + 66.559715270996, + 68.202911376953, + 69.586456298828, + 71.904663085938, + 74.45280456543, + 76.67440032959, + 79.699340820313, + 82.716979980469, + 84.170516967773, + 86.387168884277, + 89.028175354004, + 90.812789916992, + 93.361793518066, + 95.16242980957, + 95.916946411133, + 96.354362487793, + 99.31224822998, + 99.436218261719, + 98.943733215332, + 100.03713989258, + 101.03066253662, + 102.00567626953, + 103.36653137207, + 104.5366973877, + 105.21725463867, + 106.24083709717, + 106.71265411377, + 108.1675567627, + 108.70749664307, + 109.50450897217, + 111.04981231689, + 109.14306640625, + 110.35451507568, + 111.01856231689, + 112.34427642822, + 113.6908416748, + 114.7583694458, + 115.99489593506, + 116.95328521729, + 118.20937347412, + 119.55000305176, + 120.9956741333, + 122.29020690918, + 124.37145996094, + 125.68230438232, + 126.45750427246, + 128.87384033203, + 130.13711547852, + 131.80229187012, + 135.08538818359, + 136.03955078125, + 136.18022155762, + 137.4114074707, + 138.36909484863, + 139.47760009766, + 140.56620788574, + 141.65588378906, + 142.87435913086, + 143.94418334961, + 144.90802001953, + 145.51068115234, + 146.69097900391, + 147.27610778809, + 148.2038269043, + 149.47439575195, + 150.4255065918, + 151.5471496582, + 152.90342712402, + 153.57708740234, + 154.4856262207, + 155.75785827637, + 157.22190856934, + 158.00262451172, + 159.2733001709, + 160.48022460938, + 160.79153442383, + 161.25378417969, + 162.4866027832, + 162.82557678223, + 162.9102935791, + 164.08567810059, + 164.70867919922, + 165.52388000488, + 166.82998657227, + 167.53861999512, + 169.09910583496, + 170.27461242676, + 172.00196838379, + 173.89701843262, + 174.97804260254, + 176.82382202148, + 177.41006469727, + 178.44345092773, + 178.41278076172, + 178.42808532715, + 180.38806152344, + 180.87797546387, + 182.1982421875, + 183.66775512695, + 184.06985473633, + 184.51499938965, + 185.87921142578, + 187.35046386719, + 188.3934173584, + 190.26602172852, + 192.00825500488, + 192.85165405273, + 195.12156677246, + 195.76945495605, + 201.25317382813, + 200.4617767334, + 201.98857116699, + 204.17953491211, + 202.63948059082, + 204.86488342285, + 207.42657470703, + 208.65376281738, + 210.55760192871, + 214.38296508789, + 215.48864746094, + 220.96327209473, + 217.66680908203, + 211.89601135254, + 213.45724487305, + 215.58921813965]) + +resid = np.array([ + np.nan, + .17000007629395, + .08751478046179, + -.12283346056938, + .08991899341345, + -.11544716358185, + .12458966672421, + -.03970721364021, + -.13287504017353, + .04697044193745, + -.03501485288143, + -.02120122499764, + .09137260913849, + -.09874293208122, + .09212554246187, + -.04526927694678, + -.04142136126757, + .13662992417812, + -.0582881718874, + .10619198530912, + -.10801269859076, + -.00338354869746, + .01575009897351, + .06893529742956, + -.00832748971879, + .10429482907057, + -.05368844047189, + .13637132942677, + .26412883400917, + -.02111134678125, + .2554073035717, + -.16042841970921, + .07132714986801, + .13692232966423, + .1064293757081, + .19783779978752, + .0621731877327, + .27673536539078, + .11514183133841, + .12525399029255, + .31533870100975, + .15061867237091, + .15787313878536, + .24537208676338, + .20615255832672, + -.01037331111729, + .13031965494156, + .10124543309212, + -.20607624948025, + .1708429902792, + -.10012608766556, + -.05161434784532, + -.04572645947337, + -.04037792980671, + .06448362022638, + .14104247093201, + .61098974943161, + -.03648666664958, + .96427005529404, + .50965696573257, + .60589480400085, + .43643599748611, + .9202772974968, + .34723278880119, + -.20308908820152, + .23277981579304, + .05809023976326, + .07536666095257, + -.52802640199661, + .23601049184799, + .1033476293087, + -.00260917330161, + .51983487606049, + -.11813650280237, + -.00874368380755, + .29516834020615, + .31515756249428, + .67189866304398, + .54028129577637, + .29708743095398, + 1.0135440826416, + 1.095338344574, + .74719160795212, + 1.3256005048752, + 1.2006633281708, + -.11698111891747, + .52947622537613, + .81282931566238, + .07182084023952, + .68721032142639, + .03820572793484, + -.7624272108078, + -.91694712638855, + 1.1456356048584, + -1.2122505903244, + -1.5362200737, + -.14372782409191, + -.23713812232018, + -.2306577116251, + .09432080388069, + -.06653053313494, + -.43669676780701, + -.11725706607103, + -.54083967208862, + .28734645247459, + -.467559248209, + -.20749309659004, + .39549562335014, + -2.3498160839081, + .3569367825985, + -.15452179312706, + .38143622875214, + .35572397708893, + .1091578528285, + .24162948131561, + .00510244909674, + .24671010673046, + .29062458872795, + .34999752044678, + .20432561635971, + .80979299545288, + .12853652238846, + -.28230002522469, + 1.042493224144, + .02615367434919, + .36288577318192, + 1.5977079868317, + -.38538381457329, + -.93954759836197, + .01978221163154, + -.21140915155411, + -.06908652186394, + -.07760456204414, + -.06621328741312, + .0441059358418, + -.07434900850058, + -.14418575167656, + -.40801778435707, + .08931794017553, + -.39096972346306, + -.07610860466957, + .19616261124611, + -.07439963519573, + .07448863238096, + .25285106897354, + -.30341354012489, + -.07708399742842, + .21437329053879, + .34215462207794, + -.22190742194653, + .19737112522125, + .12669529020786, + -.58022564649582, + -.3915441930294, + .24621678888798, + -.48660898208618, + -.6255869269371, + .28969877958298, + -.18568041920662, + -.00868325773627, + .37611722946167, + -.12999498844147, + .5613916516304, + .20089910924435, + .6253759264946, + .69802659749985, + .00297940592282, + .621961414814, + -.42382326722145, + -.01007199659944, + -.84344571828842, + -.71278285980225, + .87191361188889, + -.38806268572807, + .32201409339905, + .40175950527191, + -.4677571952343, + -.36986482143402, + .38499811291695, + .42079201340675, + .04953457415104, + .70659118890762, + .53397834300995, + -.20824746787548, + .94835525751114, + -.42157354950905, + 3.4305424690247, + -1.8531830310822, + .23821261525154, + .71142077445984, + -2.2795467376709, + .93453133106232, + 1.0551145076752, + -.08858433365822, + .47923478484154, + 1.9373899698257, + -.38597220182419, + 3.1213552951813, + -4.0742712020874, + -5.4928140640259, + .77499634027481, + 1.0117527246475, + .79578375816345]) + +yr = np.array([ + np.nan, + .17000007629395, + .08751478046179, + -.12283346056938, + .08991899341345, + -.11544716358185, + .12458966672421, + -.03970721364021, + -.13287504017353, + .04697044193745, + -.03501485288143, + -.02120122499764, + .09137260913849, + -.09874293208122, + .09212554246187, + -.04526927694678, + -.04142136126757, + .13662992417812, + -.0582881718874, + .10619198530912, + -.10801269859076, + -.00338354869746, + .01575009897351, + .06893529742956, + -.00832748971879, + .10429482907057, + -.05368844047189, + .13637132942677, + .26412883400917, + -.02111134678125, + .2554073035717, + -.16042841970921, + .07132714986801, + .13692232966423, + .1064293757081, + .19783779978752, + .0621731877327, + .27673536539078, + .11514183133841, + .12525399029255, + .31533870100975, + .15061867237091, + .15787313878536, + .24537208676338, + .20615255832672, + -.01037331111729, + .13031965494156, + .10124543309212, + -.20607624948025, + .1708429902792, + -.10012608766556, + -.05161434784532, + -.04572645947337, + -.04037792980671, + .06448362022638, + .14104247093201, + .61098974943161, + -.03648666664958, + .96427005529404, + .50965696573257, + .60589480400085, + .43643599748611, + .9202772974968, + .34723278880119, + -.20308908820152, + .23277981579304, + .05809023976326, + .07536666095257, + -.52802640199661, + .23601049184799, + .1033476293087, + -.00260917330161, + .51983487606049, + -.11813650280237, + -.00874368380755, + .29516834020615, + .31515756249428, + .67189866304398, + .54028129577637, + .29708743095398, + 1.0135440826416, + 1.095338344574, + .74719160795212, + 1.3256005048752, + 1.2006633281708, + -.11698111891747, + .52947622537613, + .81282931566238, + .07182084023952, + .68721032142639, + .03820572793484, + -.7624272108078, + -.91694712638855, + 1.1456356048584, + -1.2122505903244, + -1.5362200737, + -.14372782409191, + -.23713812232018, + -.2306577116251, + .09432080388069, + -.06653053313494, + -.43669676780701, + -.11725706607103, + -.54083967208862, + .28734645247459, + -.467559248209, + -.20749309659004, + .39549562335014, + -2.3498160839081, + .3569367825985, + -.15452179312706, + .38143622875214, + .35572397708893, + .1091578528285, + .24162948131561, + .00510244909674, + .24671010673046, + .29062458872795, + .34999752044678, + .20432561635971, + .80979299545288, + .12853652238846, + -.28230002522469, + 1.042493224144, + .02615367434919, + .36288577318192, + 1.5977079868317, + -.38538381457329, + -.93954759836197, + .01978221163154, + -.21140915155411, + -.06908652186394, + -.07760456204414, + -.06621328741312, + .0441059358418, + -.07434900850058, + -.14418575167656, + -.40801778435707, + .08931794017553, + -.39096972346306, + -.07610860466957, + .19616261124611, + -.07439963519573, + .07448863238096, + .25285106897354, + -.30341354012489, + -.07708399742842, + .21437329053879, + .34215462207794, + -.22190742194653, + .19737112522125, + .12669529020786, + -.58022564649582, + -.3915441930294, + .24621678888798, + -.48660898208618, + -.6255869269371, + .28969877958298, + -.18568041920662, + -.00868325773627, + .37611722946167, + -.12999498844147, + .5613916516304, + .20089910924435, + .6253759264946, + .69802659749985, + .00297940592282, + .621961414814, + -.42382326722145, + -.01007199659944, + -.84344571828842, + -.71278285980225, + .87191361188889, + -.38806268572807, + .32201409339905, + .40175950527191, + -.4677571952343, + -.36986482143402, + .38499811291695, + .42079201340675, + .04953457415104, + .70659118890762, + .53397834300995, + -.20824746787548, + .94835525751114, + -.42157354950905, + 3.4305424690247, + -1.8531830310822, + .23821261525154, + .71142077445984, + -2.2795467376709, + .93453133106232, + 1.0551145076752, + -.08858433365822, + .47923478484154, + 1.9373899698257, + -.38597220182419, + 3.1213552951813, + -4.0742712020874, + -5.4928140640259, + .77499634027481, + 1.0117527246475, + .79578375816345]) + +mse = np.array([ + 1.4402351379395, + 1.4402351379395, + .80966705083847, + .74677377939224, + .71241801977158, + .69108927249908, + .67678099870682, + .66667699813843, + .6592805981636, + .6537224650383, + .64946305751801, + .64614951610565, + .64354157447815, + .64147007465363, + .639812707901, + .63847899436951, + .63740062713623, + .63652545213699, + .63581293821335, + .63523155450821, + .63475602865219, + .63436657190323, + .63404709100723, + .63378477096558, + .63356912136078, + .63339179754257, + .63324582576752, + .63312560319901, + .63302659988403, + .63294500112534, + .63287770748138, + .63282227516174, + .63277649879456, + .63273876905441, + .63270765542984, + .63268196582794, + .63266080617905, + .63264334201813, + .63262891769409, + .63261699676514, + .63260716199875, + .63259905576706, + .63259238004684, + .63258683681488, + .63258230686188, + .63257849216461, + .63257539272308, + .63257282972336, + .63257074356079, + .63256901502609, + .63256752490997, + .63256633281708, + .63256537914276, + .63256454467773, + .63256388902664, + .63256335258484, + .63256287574768, + .63256251811981, + .63256222009659, + .63256192207336, + .63256174325943, + .6325615644455, + .63256138563156, + .63256126642227, + .63256120681763, + .63256108760834, + .63256102800369, + .63256096839905, + .63256096839905, + .6325609087944, + .63256084918976, + .63256084918976, + .63256084918976, + .63256078958511, + .63256078958511, + .63256078958511, + .63256078958511, + .63256078958511, + .63256078958511, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047, + .63256072998047]) + +icstats = np.array([ + 202, + np.nan, + -241.25977940638, + 4, + 490.51955881276, + 503.75262960236]) + + +results = Bunch( + llf=llf, + nobs=nobs, + k=k, + k_exog=k_exog, + sigma=sigma, + chi2=chi2, + df_model=df_model, + k_ar=k_ar, + k_ma=k_ma, + params=params, + cov_params=cov_params, + xb=xb, + y=y, + resid=resid, + yr=yr, + mse=mse, + icstats=icstats +) diff --git a/statsmodels/tsa/tests/results/arima212_forecast.csv b/statsmodels/tsa/tests/results/arima212_forecast.csv new file mode 100644 index 0000000..a73ec00 --- /dev/null +++ b/statsmodels/tsa/tests/results/arima212_forecast.csv @@ -0,0 +1,224 @@ +dates, cpi, predict, stderr, conf1, conf2 +1950:1, 28.980,,,, +1950:2, 29.150, 29.848,, +1950:3, 29.350, 29.751,, +1950:4, 29.370, 29.925,, +1951:1, 29.540, 29.788,, +1951:2, 29.550, 30.005,, +1951:3, 29.750, 29.872,, +1951:4, 29.840, 30.181,, +1952:1, 29.810, 30.125,, +1952:2, 29.920, 30.154,, +1952:3, 29.980, 30.203,, +1952:4, 30.040, 30.290,, +1953:1, 30.210, 30.306,, +1953:2, 30.220, 30.535,, +1953:3, 30.380, 30.450,, +1953:4, 30.440, 30.721,, +1954:1, 30.480, 30.657,, +1954:2, 30.690, 30.793,, +1954:3, 30.750, 30.955,, +1954:4, 30.940, 31.034,, +1955:1, 30.950, 31.237,, +1955:2, 31.020, 31.194,, +1955:3, 31.120, 31.310,, +1955:4, 31.280, 31.371,, +1956:1, 31.380, 31.588,, +1956:2, 31.580, 31.629,, +1956:3, 31.650, 31.915,, +1956:4, 31.880, 31.882,, +1957:1, 32.280, 32.248,, +1957:2, 32.450, 32.601,, +1957:3, 32.850, 32.794,, +1957:4, 32.900, 33.245,, +1958:1, 33.100, 33.179,, +1958:2, 33.400, 33.502,, +1958:3, 33.700, 33.723,, +1958:4, 34.100, 34.119,, +1959:1, 34.400, 34.481,, +1959:2, 34.900, 34.819,, +1959:3, 35.300, 35.358,, +1959:4, 35.700, 35.737,, +1960:1, 36.300, 36.176,, +1960:2, 36.800, 36.821,, +1960:3, 37.300, 37.301,, +1960:4, 37.900, 37.844,, +1961:1, 38.500, 38.456,, +1961:2, 38.900, 39.082,, +1961:3, 39.400, 39.423,, +1961:4, 39.900, 39.995,, +1962:1, 40.100, 40.436,, +1962:2, 40.600, 40.599,, +1962:3, 40.900, 41.175,, +1962:4, 41.200, 41.354,, +1963:1, 41.500, 41.738,, +1963:2, 41.800, 41.936,, +1963:3, 42.200, 42.311,, +1963:4, 42.700, 42.658,, +1964:1, 43.700, 43.247,, +1964:2, 44.200, 44.354,, +1964:3, 45.600, 44.715,, +1964:4, 46.800, 46.538,, +1965:1, 48.100, 47.464,, +1965:2, 49.300, 49.162,, +1965:3, 51.000, 50.071,, +1965:4, 52.300, 52.276,, +1966:1, 53.000, 53.138,, +1966:2, 54.000, 54.101,, +1966:3, 54.900, 54.875,, +1966:4, 55.800, 55.948,, +1967:1, 56.100, 56.663,, +1967:2, 57.000, 56.919,, +1967:3, 57.900, 57.917,, +1967:4, 58.700, 58.733,, +1968:1, 60.000, 59.585,, +1968:2, 60.800, 60.985,, +1968:3, 61.600, 61.618,, +1968:4, 62.700, 62.545,, +1969:1, 63.900, 63.602,, +1969:2, 65.500, 64.917,, +1969:3, 67.100, 66.596,, +1969:4, 68.500, 68.249,, +1970:1, 70.600, 69.639,, +1970:2, 73.000, 72.023,, +1970:3, 75.200, 74.438,, +1970:4, 78.000, 76.768,, +1971:1, 80.900, 79.775,, +1971:2, 82.600, 82.748,, +1971:3, 84.700, 84.201,, +1971:4, 87.200, 86.591,, +1972:1, 89.100, 88.976,, +1972:2, 91.500, 90.888,, +1972:3, 93.400, 93.401,, +1972:4, 94.400, 95.103,, +1973:1, 95.000, 95.950,, +1973:2, 97.500, 96.342,, +1973:3, 98.100, 99.392,, +1973:4, 97.900, 99.031,, +1974:1, 98.800, 99.216,, +1974:2, 99.800, 99.751,, +1974:3, 100.800, 101.044,, +1974:4, 102.100, 101.727 ,, +1975:1, 103.300, 103.382 ,, +1975:2, 104.100, 104.251 ,, +1975:3, 105.100, 105.233 ,, +1975:4, 105.700, 106.052 ,, +1976:1, 107.000, 106.667 ,, +1976:2, 107.700, 108.081 ,, +1976:3, 108.500, 108.538 ,, +1976:4, 109.900, 109.523 ,, +1977:1, 108.700, 110.907 ,, +1977:2, 109.500, 108.963 ,, +1977:3, 110.200, 110.651 ,, +1977:4, 111.400, 110.524 ,, +1978:1, 112.700, 112.660 ,, +1978:2, 113.800, 113.230 ,, +1978:3, 115.000, 115.051 ,, +1978:4, 116.000, 115.662 ,, +1979:1, 117.200, 117.204 ,, +1979:2, 118.500, 117.975 ,, +1979:3, 119.900, 119.754 ,, +1979:4, 121.200, 120.802 ,, +1980:1, 123.100, 122.467 ,, +1980:2, 124.500, 124.261 ,, +1980:3, 125.400, 125.749 ,, +1980:4, 127.500, 126.429 ,, +1981:1, 128.900, 129.043 ,, +1981:2, 130.500, 129.915 ,, +1981:3, 133.400, 132.075 ,, +1981:4, 134.700, 134.922 ,, +1982:1, 135.100, 136.050 ,, +1982:2, 136.200, 136.239 ,, +1982:3, 137.200, 137.516 ,, +1982:4, 138.300, 138.258 ,, +1983:1, 139.400, 139.559 ,, +1983:2, 140.500, 140.434 ,, +1983:3, 141.700, 141.711 ,, +1983:4, 142.800, 142.753 ,, +1984:1, 143.800, 143.966 ,, +1984:2, 144.500, 144.807 ,, +1984:3, 145.600, 145.519 ,, +1984:4, 146.300, 146.646 ,, +1985:1, 147.200, 147.195 ,, +1985:2, 148.400, 148.223 ,, +1985:3, 149.400, 149.379 ,, +1985:4, 150.500, 150.396 ,, +1986:1, 151.800, 151.507 ,, +1986:2, 152.600, 152.878 ,, +1986:3, 153.500, 153.502 ,, +1986:4, 154.700, 154.540 ,, +1987:1, 156.100, 155.683 ,, +1987:2, 157.000, 157.240 ,, +1987:3, 158.200, 157.903 ,, +1987:4, 159.400, 159.379 ,, +1988:1, 159.900, 160.350 ,, +1988:2, 160.400, 160.856 ,, +1988:3, 161.500, 161.226 ,, +1988:4, 162.000, 162.540 ,, +1989:1, 162.200, 162.682 ,, +1989:2, 163.200, 163.025 ,, +1989:3, 163.900, 164.017 ,, +1989:4, 164.700, 164.677 ,, +1990:1, 165.900, 165.527 ,, +1990:2, 166.700, 166.815 ,, +1990:3, 168.100, 167.488 ,, +1990:4, 169.300, 169.190 ,, +1991:1, 170.900, 170.157 ,, +1991:2, 172.700, 172.157 ,, +1991:3, 173.900, 173.775 ,, +1991:4, 175.600, 175.092 ,, +1992:1, 176.400, 176.843 ,, +1992:2, 177.400, 177.401 ,, +1992:3, 177.600, 178.590 ,, +1992:4, 177.700, 178.310 ,, +1993:1, 179.300, 178.624 ,, +1993:2, 180.000, 180.330 ,, +1993:3, 181.200, 180.791 ,, +1993:4, 182.600, 182.320 ,, +1994:1, 183.200, 183.535 ,, +1994:2, 183.700, 184.132 ,, +1994:3, 184.900, 184.510 ,, +1994:4, 186.300, 185.955 ,, +1995:1, 187.400, 187.256 ,, +1995:2, 189.100, 188.443 ,, +1995:3, 190.800, 190.274 ,, +1995:4, 191.800, 191.988 ,, +1996:1, 193.800, 192.858 ,, +1996:2, 194.700, 195.254 ,, +1996:3, 199.200, 195.589 ,, +1996:4, 199.400, 201.698 ,, +1997:1, 200.700, 199.660 ,, +1997:2, 202.700, 203.065 ,, +1997:3, 201.900, 203.288 ,, +1997:4, 203.574, 203.327 ,, +1998:1, 205.920, 204.543 ,, +1998:2, 207.338, 207.635 ,, +1998:3, 209.133, 208.278 ,, +1998:4, 212.495, 210.909 ,, +1999:1, 213.997, 214.077 ,, +1999:2, 218.610, 215.531 ,, +1999:3, 216.889, 221.137 ,, +1999:4, 212.174, 217.006 ,, +2000:1, 212.671, 212.741 ,, +2000:2, 214.469, 213.240 ,, +2000:3, 216.385, 215.464,,, +2000:4,, 217.291, 0.7691, 215.784, 218.799 +2001:1,, 218.197, 1.2775, 215.693, 220.701 +2001:2,, 219.100, 1.6382, 215.889, 222.311 +2001:3,, 220.002, 2.0322, 216.019, 223.985 +2001:4,, 220.902, 2.3838, 216.230, 225.574 +2002:1,, 221.801, 2.7544, 216.403, 227.200 +2002:2,, 222.699, 3.1082, 216.607, 228.791 +2002:3,, 223.595, 3.4721, 216.790, 230.400 +2002:4,, 224.490, 3.8288, 216.986, 231.994 +2003:1,, 225.384, 4.1908, 217.170, 233.598 +2003:2,, 226.276, 4.5494, 217.360, 235.193 +2003:3,, 227.168, 4.9105, 217.544, 236.793 +2003:4,, 228.059, 5.2698, 217.730, 238.387 +2004:1,, 228.948, 5.6300, 217.914, 239.983 +2004:2,, 229.837, 5.9888, 218.099, 241.574 +2004:3,, 230.724, 6.3475, 218.283, 243.165 +2004:4,, 231.611, 6.7049, 218.470, 244.752 +2005:1,, 232.497, 7.0614, 218.657, 246.337 +2005:2,, 233.382, 7.4165, 218.846, 247.918 +2005:3,, 234.266, 7.7704, 219.037, 249.496 diff --git a/statsmodels/tsa/tests/results/arima_forecast.inp b/statsmodels/tsa/tests/results/arima_forecast.inp new file mode 100644 index 0000000..c24bf30 --- /dev/null +++ b/statsmodels/tsa/tests/results/arima_forecast.inp @@ -0,0 +1,26 @@ +open /home/skipper/statsmodels/statsmodels/statsmodels/datasets/macrodata/macrodata.csv +setobs 4 1959:1 --time-series +dataset addobs 25 + +# (1,1,1) +arima 1 1 1 ; cpi --nc +fcast 2000:1 2015:04 fc111nc +fcast 2000:1 2015:04 fc111ncdyn --dynamic + +arima 1 1 1 ; cpi +fcast 2000:1 2015:04 fc111c +fcast 2000:1 2015:04 fc111cdyn --dynamic + + +# (2,1,1) +arima 2 1 1 ; cpi --nc +fcast 2000:1 2015:04 fc211nc +fcast 2000:1 2015:04 fc211ncdyn --dynamic + +arima 2 1 1 ; cpi +fcast 2000:1 2015:04 fc211c +fcast 2000:1 2015:04 fc211cdyn --dynamic + +smpl 2000:1 2015:04 + +store '/home/skipper/statsmodels/statsmodels-skipper/statsmodels/tsa/tests/results/results_arima_forecasts.csv' fc111nc fc111ncdyn fc111c fc111cdyn fc211nc fc211ncdyn fc211c fc211cdyn --omit-obs diff --git a/statsmodels/tsa/tests/results/arma_forecast.inp b/statsmodels/tsa/tests/results/arma_forecast.inp new file mode 100644 index 0000000..27dc74c --- /dev/null +++ b/statsmodels/tsa/tests/results/arma_forecast.inp @@ -0,0 +1,32 @@ +open \ + /home/skipper/statsmodels/statsmodels/statsmodels/tsa/tests/results/y_arma_data.csv +setobs 12 1980:01 --time-series +dataset addobs 10 + +# (0,0) +arima 1 0 1 ; 1 --nc +fcast 2000:11 2001:08 + +# (4,1) +arima 4 0 1 ; 3 --nc +fcast 2000:11 2001:08 + +# (5,0) +arima 5 0 0 ; 5 --nc +fcast 2000:11 2001:08 + +# (1,1) c +arima 1 0 1 ; 7 +fcast 2000:11 2001:08 + +# (4,1) c +arima 4 0 1 ; 9 +fcast 2000:11 2001:08 + +# (5,0) c +arima 5 0 0 ; 11 +fcast 2000:11 2001:08 + +smpl 2000:11 2001:08 +#store '/home/skipper/statsmodels/statsmodels-git/scikits/statsmodels/tsa/tests/results/results_arma_forecasts.csv' fc11 fe11 fc41 fe41 fc50 fe50 fc11c fe11c fc41c fe41c fc50c fe50c --omit-obs +# no way to capture errors as far as I can tell diff --git a/statsmodels/tsa/tests/results/bds_data.csv b/statsmodels/tsa/tests/results/bds_data.csv new file mode 100644 index 0000000..048831f --- /dev/null +++ b/statsmodels/tsa/tests/results/bds_data.csv @@ -0,0 +1,265 @@ +1,0.585528817843856,1.80509751881082,1770.7 +2,0.709466017509524,-0.481647363694637,1768 +3,-0.109303314681054,0.620379801298422,1766.5 +4,-0.453497173462763,0.612123492650849,1793.3 +5,0.605887455840394,-0.162310976918126,1821.8 +6,-1.81795596770373,0.81187317855386,1855.3 +7,0.630098551068391,2.19683354634753,1865.3 +8,-0.276184105225216,2.04919033740619,1868.2 +9,-0.284159743943371,1.63244563948047,1842.2 +10,-0.919322002474128,0.254271192814055,1835.5 +11,-0.116247806352002,0.491188279272559,1856.1 +12,1.81731204370422,-0.324086578737118,1838.7 +13,0.370627864257954,-1.66205024385863,1913 +14,0.520216457554957,1.76773385087297,1971.2 +15,-0.750531994502331,0.0258010486478081,2048.4 +16,0.816899839520583,1.12851083359018,2084.4 +17,-0.886357521243213,-2.38035806139704,2110.7 +18,-0.331577589942552,-1.06026555215253,2145.7 +19,1.12071265166956,0.937140540182908,2188.5 +20,0.298723699267293,0.854451720330554,2192.2 +21,0.779621924555324,1.46072940310409,2214.3 +22,1.45578508247686,-1.41309877788919,2216.7 +23,-0.644328429231302,0.567403253424482,2231.6 +24,-1.55313740522969,0.583187653435685,2305.3 +25,-1.59770951669631,-1.30679883346442,2348.4 +,,0.294465403072536,2366.2 +,,0.617253665579483,2351.8 +,,0.974274127278477,2314.6 +,,0.618212037952617,2303.5 +,,0.521369193447754,2306.4 +,,0.902503795921803,2332.4 +,,0.637454432668164,2379.1 +,,0.864301132969558,2447.7 +,,0.251117740990594,2488.1 +,,0.21506908070296,2521.4 +,,0.609476044774055,2535.5 +,,0.383444635430351,2523.9 +,,0.755271044559777,2543.8 +,,0.379736242815852,2540.6 +,,0.794972063507885,2582.1 +,,0.905691135907546,2597.9 +,,0.984026173362508,2591.7 +,,0.587947973515838,2616.6 +,,0.00946405157446861,2589.1 +,,0.320792069192976,2519 +,,0.559456733288243,2534.5 +,,0.514917560154572,2593.9 +,,0.0897118621505797,2654.3 +,,0.683250573696569,2708 +,,0.709972049575299,2776.4 +,,,2773.1 +,,,2782.8 +,,,2845.3 +,,,2832 +,,,2836.6 +,,,2800.2 +,,,2816.9 +,,,2869.6 +,,,2915.9 +,,,2975.3 +,,,3028.7 +,,,3062.1 +,,,3090.4 +,,,3097.9 +,,,3138.4 +,,,3177.7 +,,,3237.6 +,,,3262.2 +,,,3335.4 +,,,3373.7 +,,,3419.5 +,,,3429 +,,,3513.3 +,,,3560.9 +,,,3633.2 +,,,3720.8 +,,,3812.2 +,,,3824.9 +,,,3850 +,,,3881.2 +,,,3915.4 +,,,3916.2 +,,,3947.5 +,,,3977.6 +,,,4059.5 +,,,4128.5 +,,,4156.7 +,,,4174.7 +,,,4240.5 +,,,4252.8 +,,,4279.7 +,,,4259.6 +,,,4252.9 +,,,4260.7 +,,,4298.6 +,,,4253 +,,,4370.3 +,,,4395.1 +,,,4430.2 +,,,4442.5 +,,,4521.9 +,,,4629.1 +,,,4673.5 +,,,4750.5 +,,,4872 +,,,4928.4 +,,,4902.1 +,,,4948.8 +,,,4905.4 +,,,4918 +,,,4869.4 +,,,4850.2 +,,,4791.2 +,,,4827.8 +,,,4909.1 +,,,4973.3 +,,,5086.3 +,,,5124.6 +,,,5149.7 +,,,5187.1 +,,,5247.3 +,,,5351.6 +,,,5447.3 +,,,5446.1 +,,,5464.7 +,,,5679.7 +,,,5735.4 +,,,5811.3 +,,,5821 +,,,5826.4 +,,,5868.3 +,,,5884.5 +,,,5903.4 +,,,5782.4 +,,,5771.7 +,,,5878.4 +,,,6000.6 +,,,5952.7 +,,,6025 +,,,5950 +,,,5852.3 +,,,5884 +,,,5861.4 +,,,5866 +,,,5938.9 +,,,6072.4 +,,,6192.2 +,,,6320.2 +,,,6442.8 +,,,6554 +,,,6617.7 +,,,6671.6 +,,,6734.5 +,,,6791.5 +,,,6897.6 +,,,6950 +,,,7016.8 +,,,7045 +,,,7112.9 +,,,7147.3 +,,,7186.9 +,,,7263.3 +,,,7326.3 +,,,7451.7 +,,,7490.2 +,,,7586.4 +,,,7625.6 +,,,7727.4 +,,,7799.9 +,,,7858.3 +,,,7920.6 +,,,7937.9 +,,,8020.8 +,,,8052.7 +,,,8052.6 +,,,7982 +,,,7943.4 +,,,7997 +,,,8030.7 +,,,8062.2 +,,,8150.7 +,,,8237.3 +,,,8322.3 +,,,8409.8 +,,,8425.3 +,,,8479.2 +,,,8523.8 +,,,8636.4 +,,,8720.5 +,,,8839.8 +,,,8896.7 +,,,8995.5 +,,,9017.6 +,,,9037 +,,,9112.9 +,,,9176.4 +,,,9239.3 +,,,9399 +,,,9480.8 +,,,9584.3 +,,,9658 +,,,9801.2 +,,,9924.2 +,,,10000.3 +,,,10094.8 +,,,10185.6 +,,,10320 +,,,10498.6 +,,,10592.1 +,,,10674.9 +,,,10810.7 +,,,11004.8 +,,,11033.6 +,,,11248.8 +,,,11258.3 +,,,11325 +,,,11287.8 +,,,11361.7 +,,,11330.4 +,,,11370 +,,,11467.1 +,,,11528.1 +,,,11586.6 +,,,11590.6 +,,,11638.9 +,,,11737.5 +,,,11930.7 +,,,12038.6 +,,,12117.9 +,,,12195.9 +,,,12286.7 +,,,12387.2 +,,,12515 +,,,12570.7 +,,,12670.5 +,,,12735.6 +,,,12896.4 +,,,12948.7 +,,,12950.4 +,,,13038.4 +,,,13056.1 +,,,13173.6 +,,,13269.8 +,,,13326 +,,,13266.8 +,,,13310.5 +,,,13186.9 +,,,12883.5 +,,,12711 +,,,12701 +,,,12746.7 +,,,12873.1 +,,,12947.6 +,,,13019.6 +,,,13103.5 +,,,13181.2 +,,,13183.8 +,,,13264.7 +,,,13306.9 +,,,13441 +,,,13506.4 +,,,13548.5 +,,,13652.5 +,,,13665.4 +,,,13725.7 diff --git a/statsmodels/tsa/tests/results/bds_results.csv b/statsmodels/tsa/tests/results/bds_results.csv new file mode 100644 index 0000000..370dd42 --- /dev/null +++ b/statsmodels/tsa/tests/results/bds_results.csv @@ -0,0 +1,20 @@ +1.00000000,1.00000000,NaN,NaN,NaN,0.69666667,0.49898551 +1.00000000,2.00000000,36.40567147,0.00000000,0.71739130,0.71739130,0.49898551 +1.00000000,3.00000000,37.73419833,0.00000000,0.73913043,0.73913043,0.49898551 +1.00000000,4.00000000,39.98711582,0.00000000,0.76190476,0.76190476,0.49898551 +1.00000000,5.00000000,43.69162614,0.00000000,0.78571429,0.78571429,0.49898551 +2.00000000,1.00000000,NaN,NaN,NaN,0.69666667,0.50681159 +2.00000000,2.00000000,2.15098566,0.03147733,0.49275362,0.68840580,0.50681159 +2.00000000,3.00000000,2.28830079,0.02212001,0.35177866,0.68379447,0.50681159 +2.00000000,4.00000000,1.53581933,0.12458270,0.23376623,0.67532468,0.50681159 +2.00000000,5.00000000,1.15344705,0.24872694,0.14285714,0.65714286,0.50681159 +3.00000000,1.00000000,NaN,NaN,NaN,0.73877551,0.59656463 +3.00000000,2.00000000,0.67088078,0.50229648,0.56207483,0.74319728,0.59656463 +3.00000000,3.00000000,0.04274706,0.96590317,0.41400709,0.74468085,0.59656463 +3.00000000,4.00000000,0.26226100,0.79312022,0.30804810,0.74005550,0.59656463 +3.00000000,5.00000000,0.97965854,0.32725470,0.24830918,0.73526570,0.59656463 +4.00000000,1.00000000,NaN,NaN,NaN,0.68170383,0.48895534 +4.00000000,2.00000000,72.16152400,0.00000000,0.68069478,0.68222145,0.48895534 +4.00000000,3.00000000,79.04282276,0.00000000,0.68026006,0.68275622,0.48895534 +4.00000000,4.00000000,87.73840060,0.00000000,0.67997426,0.68330847,0.48895534 +4.00000000,5.00000000,100.08086806,0.00000000,0.67975243,0.68387857,0.48895534 diff --git a/statsmodels/tsa/tests/results/corrgram.do b/statsmodels/tsa/tests/results/corrgram.do new file mode 100644 index 0000000..be21354 --- /dev/null +++ b/statsmodels/tsa/tests/results/corrgram.do @@ -0,0 +1,16 @@ +* Stata do file for getting test results +insheet using "/home/skipper/statsmodels/statsmodels-skipper/statsmodels/datasets/macrodata/macrodata.csv", double clear +gen qtrdate=yq(year,quarter) +format qtrdate %tq +tsset qtrdate +ac realgdp, gen(acvar) +ac realgdp, gen(acvarfft) fft +corrgram realgdp +matrix Q = r(Q)' +svmat Q, names(Q) +matrix PAC = r(PAC)' +svmat PAC, names(PAC) +rename PAC1 PACOLS +pac realgdp, yw gen(PACYW) +outsheet acvar acvarfft Q1 PACOLS PACYW using "/home/skipper/statsmodels/statsmodels-skipper/scikits/statsmodels/sandbox/tsa/tests/results/results_corrgram.csv", comma replace + diff --git a/statsmodels/tsa/tests/results/datamlw_tls.py b/statsmodels/tsa/tests/results/datamlw_tls.py new file mode 100644 index 0000000..e0eedf5 --- /dev/null +++ b/statsmodels/tsa/tests/results/datamlw_tls.py @@ -0,0 +1,392 @@ +from numpy import array + +from statsmodels.tools.testing import Holder + + +mlpacf = Holder() +mlpacf.comment = 'mlab.parcorr(x, [], 2, nout=3)' +mlpacf.name = 'mlpacf' +mlpacf.lags1000 = array([ + [0.], + [1.], + [2.], + [3.], + [4.], + [5.], + [6.], + [7.], + [8.], + [9.], + [10.], + [11.], + [12.], + [13.], + [14.], + [15.], + [16.], + [17.], + [18.], + [19.], + [20.]]) +mlpacf.bounds1000 = array([ + [0.06334064], + [-0.06334064]]) +mlpacf.lags100 = array([ + [0.], + [1.], + [2.], + [3.], + [4.], + [5.], + [6.], + [7.], + [8.], + [9.], + [10.], + [11.], + [12.], + [13.], + [14.], + [15.], + [16.], + [17.], + [18.], + [19.], + [20.]]) +mlpacf.pacf100 = array([ + [1.], + [0.47253777], + [-0.49466966], + [-0.02689319], + [-0.00122204], + [0.08419183], + [0.03220774], + [0.10404012], + [0.05304617], + [-0.04129564], + [-0.04049451], + [0.11727754], + [0.11804158], + [-0.05864957], + [-0.15681802], + [0.11828684], + [0.05156002], + [0.00694629], + [0.01668964], + [0.02236851], + [-0.0909443]]) +mlpacf.pacf1000 = array([ + [1.00000000e+00], + [5.29288262e-01], + [-5.31849027e-01], + [1.17440051e-02], + [-5.37941905e-02], + [-4.11119348e-02], + [-2.40367432e-02], + [2.24289891e-02], + [3.33007235e-02], + [4.59658302e-02], + [6.65850553e-03], + [-3.76714278e-02], + [5.27229738e-02], + [2.50796558e-02], + [-4.42597301e-02], + [-1.95819186e-02], + [4.70451394e-02], + [-1.70963705e-03], + [3.04262524e-04], + [-6.22001614e-03], + [-1.16694989e-02]]) +mlpacf.bounds100 = array([ + [0.20306923], + [-0.20306923]]) + +mlacf = Holder() +mlacf.comment = 'mlab.autocorr(x, [], 2, nout=3)' +mlacf.name = 'mlacf' +mlacf.acf1000 = array([ + [1.], + [0.5291635], + [-0.10186759], + [-0.35798372], + [-0.25894203], + [-0.06398397], + [0.0513664], + [0.08222289], + [0.08115406], + [0.07674254], + [0.04540619], + [-0.03024699], + [-0.05886634], + [-0.01422948], + [0.01277825], + [-0.01013384], + [-0.00765693], + [0.02183677], + [0.03618889], + [0.01622553], + [-0.02073507]]) +mlacf.lags1000 = array([ + [0.], + [1.], + [2.], + [3.], + [4.], + [5.], + [6.], + [7.], + [8.], + [9.], + [10.], + [11.], + [12.], + [13.], + [14.], + [15.], + [16.], + [17.], + [18.], + [19.], + [20.]]) +mlacf.bounds1000 = array([ + [0.0795181], + [-0.0795181]]) +mlacf.lags100 = array([ + [0.], + [1.], + [2.], + [3.], + [4.], + [5.], + [6.], + [7.], + [8.], + [9.], + [10.], + [11.], + [12.], + [13.], + [14.], + [15.], + [16.], + [17.], + [18.], + [19.], + [20.]]) +mlacf.bounds100 = array([ + [0.24319646], + [-0.24319646]]) +mlacf.acf100 = array([ + [1.], + [0.47024791], + [-0.1348087], + [-0.32905777], + [-0.18632437], + [0.06223404], + [0.16645194], + [0.12589966], + [0.04805397], + [-0.03785273], + [-0.0956997], + [0.00644021], + [0.17157144], + [0.12370327], + [-0.07597526], + [-0.13865131], + [0.02730275], + [0.13624193], + [0.10417949], + [0.01114516], + [-0.09727938]]) + +mlccf = Holder() +mlccf.comment = 'mlab.crosscorr(x[4:], x[:-4], [], 2, nout=3)' +mlccf.name = 'mlccf' +mlccf.ccf100 = array([ + [0.20745123], + [0.12351939], + [-0.03436893], + [-0.14550879], + [-0.10570855], + [0.0108839], + [0.1108941], + [0.14562415], + [0.02872607], + [-0.14976649], + [-0.08274954], + [0.13158485], + [0.18350343], + [0.00633845], + [-0.10359988], + [-0.0416147], + [0.05056298], + [0.13438945], + [0.17832125], + [0.06665153], + [-0.19999538], + [-0.31700548], + [-0.09727956], + [0.46547234], + [0.92934645], + [0.44480271], + [-0.09228691], + [-0.21627289], + [-0.05447732], + [0.13786254], + [0.15409039], + [0.07466298], + [-0.01000896], + [-0.06744264], + [-0.0607185], + [0.04338471], + [0.12336618], + [0.07712367], + [-0.08739259], + [-0.09319212], + [0.04426167]]) +mlccf.lags1000 = array([ + [-20.], + [-19.], + [-18.], + [-17.], + [-16.], + [-15.], + [-14.], + [-13.], + [-12.], + [-11.], + [-10.], + [-9.], + [-8.], + [-7.], + [-6.], + [-5.], + [-4.], + [-3.], + [-2.], + [-1.], + [0.], + [1.], + [2.], + [3.], + [4.], + [5.], + [6.], + [7.], + [8.], + [9.], + [10.], + [11.], + [12.], + [13.], + [14.], + [15.], + [16.], + [17.], + [18.], + [19.], + [20.]]) +mlccf.bounds1000 = array([ + [0.06337243], + [-0.06337243]]) +mlccf.ccf1000 = array([ + [0.02733339], + [0.04372407], + [0.01082335], + [-0.02755073], + [-0.02076039], + [0.01624263], + [0.03622844], + [0.02186092], + [-0.00766506], + [-0.0101448], + [0.01279167], + [-0.01424596], + [-0.05893064], + [-0.03028013], + [0.04545462], + [0.076825], + [0.08124118], + [0.08231121], + [0.05142144], + [-0.06405412], + [-0.25922346], + [-0.35806674], + [-0.1017256], + [0.5293535], + [0.99891094], + [0.52941977], + [-0.10127572], + [-0.35691466], + [-0.25943369], + [-0.06458511], + [0.05026194], + [0.08196501], + [0.08242852], + [0.07775845], + [0.04590431], + [-0.03195209], + [-0.06162966], + [-0.01395345], + [0.01448736], + [-0.00952503], + [-0.00927344]]) +mlccf.lags100 = array([ + [-20.], + [-19.], + [-18.], + [-17.], + [-16.], + [-15.], + [-14.], + [-13.], + [-12.], + [-11.], + [-10.], + [-9.], + [-8.], + [-7.], + [-6.], + [-5.], + [-4.], + [-3.], + [-2.], + [-1.], + [0.], + [1.], + [2.], + [3.], + [4.], + [5.], + [6.], + [7.], + [8.], + [9.], + [10.], + [11.], + [12.], + [13.], + [14.], + [15.], + [16.], + [17.], + [18.], + [19.], + [20.]]) +mlccf.bounds100 = array([ + [0.20412415], + [-0.20412415]]) + +mlywar = Holder() +mlywar.comment = "mlab.ar(x100-x100.mean(), 10, 'yw').a.ravel()" +mlywar.arcoef100 = array([ + 1., -0.66685531, 0.43519425, -0.00399862, 0.05521524, + -0.09366752, 0.01093454, -0.00688404, -0.04739089, 0.00127931, + 0.03946846]) +mlywar.arcoef1000 = array([ + 1., -0.81230253, 0.55766432, -0.02370962, 0.02688963, + 0.01110911, 0.02239171, -0.01891209, -0.00240527, -0.01752532, + -0.06348611, 0.0609686, -0.00717163, -0.0467326, -0.00122755, + 0.06004768, -0.04893984, 0.00575949, 0.00249315, -0.00560358, + 0.01248498]) +mlywar.name = 'mlywar' diff --git a/statsmodels/tsa/tests/results/housing-data.csv b/statsmodels/tsa/tests/results/housing-data.csv new file mode 100644 index 0000000..7ffef38 --- /dev/null +++ b/statsmodels/tsa/tests/results/housing-data.csv @@ -0,0 +1,715 @@ +DATE,HOUSTNSA +1959-01-01,96.2 +1959-02-01,99.0 +1959-03-01,127.7 +1959-04-01,150.8 +1959-05-01,152.5 +1959-06-01,147.8 +1959-07-01,148.1 +1959-08-01,138.2 +1959-09-01,136.4 +1959-10-01,120.0 +1959-11-01,104.7 +1959-12-01,95.6 +1960-01-01,86.0 +1960-02-01,90.7 +1960-03-01,90.5 +1960-04-01,123.0 +1960-05-01,130.2 +1960-06-01,122.8 +1960-07-01,114.3 +1960-08-01,130.3 +1960-09-01,96.9 +1960-10-01,110.4 +1960-11-01,92.8 +1960-12-01,64.2 +1961-01-01,70.4 +1961-02-01,74.1 +1961-03-01,104.2 +1961-04-01,112.8 +1961-05-01,127.6 +1961-06-01,134.8 +1961-07-01,126.6 +1961-08-01,127.1 +1961-09-01,125.4 +1961-10-01,124.8 +1961-11-01,103.0 +1961-12-01,82.2 +1962-01-01,81.2 +1962-02-01,77.1 +1962-03-01,116.2 +1962-04-01,147.8 +1962-05-01,155.2 +1962-06-01,136.8 +1962-07-01,136.5 +1962-08-01,147.7 +1962-09-01,114.3 +1962-10-01,135.2 +1962-11-01,120.9 +1962-12-01,93.9 +1963-01-01,79.0 +1963-02-01,89.6 +1963-03-01,124.8 +1963-04-01,164.2 +1963-05-01,172.7 +1963-06-01,154.2 +1963-07-01,151.3 +1963-08-01,144.0 +1963-09-01,143.7 +1963-10-01,165.3 +1963-11-01,119.3 +1963-12-01,95.0 +1964-01-01,97.9 +1964-02-01,101.3 +1964-03-01,129.1 +1964-04-01,147.1 +1964-05-01,152.8 +1964-06-01,157.2 +1964-07-01,140.6 +1964-08-01,138.3 +1964-09-01,119.8 +1964-10-01,141.2 +1964-11-01,110.6 +1964-12-01,93.0 +1965-01-01,81.7 +1965-02-01,80.9 +1965-03-01,119.9 +1965-04-01,148.6 +1965-05-01,153.3 +1965-06-01,151.8 +1965-07-01,139.1 +1965-08-01,128.3 +1965-09-01,124.6 +1965-10-01,133.1 +1965-11-01,110.5 +1965-12-01,101.1 +1966-01-01,79.4 +1966-02-01,76.2 +1966-03-01,118.1 +1966-04-01,140.9 +1966-05-01,130.0 +1966-06-01,120.6 +1966-07-01,99.2 +1966-08-01,101.8 +1966-09-01,89.1 +1966-10-01,76.6 +1966-11-01,72.8 +1966-12-01,60.2 +1967-01-01,59.1 +1967-02-01,61.4 +1967-03-01,91.5 +1967-04-01,113.7 +1967-05-01,132.0 +1967-06-01,125.4 +1967-07-01,125.3 +1967-08-01,127.4 +1967-09-01,121.9 +1967-10-01,135.4 +1967-11-01,118.4 +1967-12-01,80.1 +1968-01-01,80.5 +1968-02-01,84.6 +1968-03-01,126.6 +1968-04-01,162.0 +1968-05-01,140.9 +1968-06-01,137.9 +1968-07-01,139.8 +1968-08-01,136.6 +1968-09-01,134.2 +1968-10-01,140.8 +1968-11-01,127.1 +1968-12-01,96.4 +1969-01-01,101.5 +1969-02-01,90.1 +1969-03-01,131.9 +1969-04-01,159.0 +1969-05-01,155.5 +1969-06-01,147.3 +1969-07-01,125.2 +1969-08-01,124.9 +1969-09-01,129.3 +1969-10-01,123.4 +1969-11-01,94.6 +1969-12-01,84.1 +1970-01-01,66.4 +1970-02-01,74.3 +1970-03-01,114.7 +1970-04-01,128.4 +1970-05-01,125.0 +1970-06-01,135.2 +1970-07-01,140.8 +1970-08-01,128.7 +1970-09-01,130.9 +1970-10-01,140.9 +1970-11-01,126.9 +1970-12-01,121.4 +1971-01-01,110.6 +1971-02-01,102.2 +1971-03-01,167.9 +1971-04-01,201.1 +1971-05-01,198.5 +1971-06-01,193.8 +1971-07-01,194.3 +1971-08-01,204.5 +1971-09-01,173.8 +1971-10-01,179.7 +1971-11-01,173.7 +1971-12-01,152.1 +1972-01-01,149.1 +1972-02-01,152.2 +1972-03-01,203.9 +1972-04-01,211.6 +1972-05-01,225.8 +1972-06-01,223.1 +1972-07-01,206.5 +1972-08-01,228.6 +1972-09-01,203.0 +1972-10-01,216.5 +1972-11-01,185.7 +1972-12-01,150.5 +1973-01-01,146.6 +1973-02-01,138.0 +1973-03-01,200.0 +1973-04-01,205.0 +1973-05-01,234.0 +1973-06-01,202.6 +1973-07-01,202.6 +1973-08-01,197.2 +1973-09-01,148.4 +1973-10-01,147.1 +1973-11-01,133.3 +1973-12-01,90.4 +1974-01-01,84.5 +1974-02-01,109.4 +1974-03-01,124.8 +1974-04-01,159.5 +1974-05-01,149.0 +1974-06-01,147.6 +1974-07-01,126.6 +1974-08-01,111.1 +1974-09-01,98.3 +1974-10-01,96.7 +1974-11-01,75.1 +1974-12-01,55.1 +1975-01-01,56.1 +1975-02-01,54.7 +1975-03-01,80.2 +1975-04-01,97.9 +1975-05-01,116.1 +1975-06-01,110.3 +1975-07-01,119.3 +1975-08-01,117.3 +1975-09-01,111.9 +1975-10-01,123.6 +1975-11-01,96.9 +1975-12-01,76.1 +1976-01-01,72.5 +1976-02-01,89.9 +1976-03-01,118.4 +1976-04-01,137.2 +1976-05-01,147.9 +1976-06-01,154.2 +1976-07-01,136.6 +1976-08-01,145.9 +1976-09-01,151.8 +1976-10-01,148.4 +1976-11-01,127.1 +1976-12-01,107.4 +1977-01-01,81.3 +1977-02-01,112.5 +1977-03-01,173.6 +1977-04-01,182.2 +1977-05-01,201.3 +1977-06-01,197.6 +1977-07-01,189.8 +1977-08-01,194.0 +1977-09-01,177.7 +1977-10-01,193.1 +1977-11-01,154.8 +1977-12-01,129.2 +1978-01-01,88.6 +1978-02-01,101.3 +1978-03-01,172.1 +1978-04-01,197.5 +1978-05-01,211.0 +1978-06-01,216.0 +1978-07-01,192.2 +1978-08-01,190.9 +1978-09-01,180.5 +1978-10-01,192.1 +1978-11-01,158.6 +1978-12-01,119.5 +1979-01-01,88.2 +1979-02-01,84.5 +1979-03-01,152.9 +1979-04-01,161.0 +1979-05-01,189.1 +1979-06-01,191.8 +1979-07-01,164.2 +1979-08-01,170.3 +1979-09-01,163.7 +1979-10-01,169.0 +1979-11-01,118.7 +1979-12-01,91.6 +1980-01-01,73.1 +1980-02-01,79.9 +1980-03-01,85.1 +1980-04-01,96.2 +1980-05-01,91.7 +1980-06-01,116.4 +1980-07-01,120.1 +1980-08-01,129.9 +1980-09-01,138.3 +1980-10-01,152.7 +1980-11-01,112.9 +1980-12-01,95.9 +1981-01-01,84.5 +1981-02-01,71.9 +1981-03-01,107.8 +1981-04-01,123.0 +1981-05-01,109.9 +1981-06-01,105.8 +1981-07-01,99.9 +1981-08-01,86.3 +1981-09-01,84.1 +1981-10-01,87.2 +1981-11-01,64.6 +1981-12-01,59.1 +1982-01-01,47.2 +1982-02-01,51.3 +1982-03-01,78.2 +1982-04-01,84.1 +1982-05-01,98.8 +1982-06-01,91.1 +1982-07-01,106.8 +1982-08-01,96.0 +1982-09-01,106.4 +1982-10-01,110.5 +1982-11-01,108.9 +1982-12-01,82.9 +1983-01-01,91.3 +1983-02-01,96.3 +1983-03-01,134.6 +1983-04-01,135.8 +1983-05-01,174.9 +1983-06-01,173.2 +1983-07-01,161.6 +1983-08-01,176.8 +1983-09-01,154.9 +1983-10-01,159.3 +1983-11-01,136.0 +1983-12-01,108.3 +1984-01-01,109.1 +1984-02-01,130.0 +1984-03-01,137.5 +1984-04-01,172.7 +1984-05-01,180.7 +1984-06-01,184.0 +1984-07-01,162.1 +1984-08-01,147.4 +1984-09-01,148.5 +1984-10-01,152.3 +1984-11-01,126.2 +1984-12-01,98.9 +1985-01-01,105.4 +1985-02-01,95.4 +1985-03-01,145.0 +1985-04-01,175.8 +1985-05-01,170.2 +1985-06-01,163.2 +1985-07-01,160.7 +1985-08-01,160.7 +1985-09-01,147.7 +1985-10-01,173.0 +1985-11-01,124.1 +1985-12-01,120.5 +1986-01-01,115.6 +1986-02-01,107.2 +1986-03-01,151.0 +1986-04-01,188.2 +1986-05-01,186.6 +1986-06-01,183.6 +1986-07-01,172.0 +1986-08-01,163.8 +1986-09-01,154.0 +1986-10-01,154.8 +1986-11-01,115.6 +1986-12-01,113.0 +1987-01-01,105.1 +1987-02-01,102.8 +1987-03-01,141.2 +1987-04-01,159.3 +1987-05-01,158.0 +1987-06-01,162.9 +1987-07-01,152.4 +1987-08-01,143.6 +1987-09-01,152.0 +1987-10-01,139.1 +1987-11-01,118.8 +1987-12-01,85.4 +1988-01-01,78.2 +1988-02-01,90.2 +1988-03-01,128.8 +1988-04-01,153.2 +1988-05-01,140.2 +1988-06-01,150.2 +1988-07-01,137.0 +1988-08-01,136.8 +1988-09-01,131.1 +1988-10-01,135.1 +1988-11-01,113.0 +1988-12-01,94.2 +1989-01-01,100.1 +1989-02-01,85.8 +1989-03-01,117.8 +1989-04-01,129.4 +1989-05-01,131.7 +1989-06-01,143.2 +1989-07-01,134.7 +1989-08-01,122.4 +1989-09-01,109.3 +1989-10-01,130.1 +1989-11-01,96.6 +1989-12-01,75.0 +1990-01-01,99.2 +1990-02-01,86.9 +1990-03-01,108.5 +1990-04-01,119.0 +1990-05-01,121.1 +1990-06-01,117.8 +1990-07-01,111.2 +1990-08-01,102.8 +1990-09-01,93.1 +1990-10-01,94.2 +1990-11-01,81.4 +1990-12-01,57.4 +1991-01-01,52.5 +1991-02-01,59.1 +1991-03-01,73.8 +1991-04-01,99.7 +1991-05-01,97.7 +1991-06-01,103.4 +1991-07-01,103.5 +1991-08-01,94.7 +1991-09-01,86.6 +1991-10-01,101.8 +1991-11-01,75.6 +1991-12-01,65.6 +1992-01-01,71.6 +1992-02-01,78.8 +1992-03-01,111.6 +1992-04-01,107.6 +1992-05-01,115.2 +1992-06-01,117.8 +1992-07-01,106.2 +1992-08-01,109.9 +1992-09-01,106.0 +1992-10-01,111.8 +1992-11-01,84.5 +1992-12-01,78.6 +1993-01-01,70.5 +1993-02-01,74.6 +1993-03-01,95.5 +1993-04-01,117.8 +1993-05-01,120.9 +1993-06-01,128.5 +1993-07-01,115.3 +1993-08-01,121.8 +1993-09-01,118.5 +1993-10-01,123.3 +1993-11-01,102.3 +1993-12-01,98.7 +1994-01-01,76.2 +1994-02-01,83.5 +1994-03-01,134.3 +1994-04-01,137.6 +1994-05-01,148.8 +1994-06-01,136.4 +1994-07-01,127.8 +1994-08-01,139.8 +1994-09-01,130.1 +1994-10-01,130.6 +1994-11-01,113.4 +1994-12-01,98.5 +1995-01-01,84.5 +1995-02-01,81.6 +1995-03-01,103.8 +1995-04-01,116.9 +1995-05-01,130.5 +1995-06-01,123.4 +1995-07-01,129.1 +1995-08-01,135.8 +1995-09-01,122.4 +1995-10-01,126.2 +1995-11-01,107.2 +1995-12-01,92.8 +1996-01-01,90.7 +1996-02-01,95.9 +1996-03-01,116.0 +1996-04-01,146.6 +1996-05-01,143.9 +1996-06-01,138.0 +1996-07-01,137.5 +1996-08-01,144.2 +1996-09-01,128.7 +1996-10-01,130.8 +1996-11-01,111.5 +1996-12-01,93.1 +1997-01-01,82.2 +1997-02-01,94.7 +1997-03-01,120.4 +1997-04-01,142.3 +1997-05-01,136.3 +1997-06-01,140.4 +1997-07-01,134.6 +1997-08-01,126.5 +1997-09-01,139.2 +1997-10-01,139.0 +1997-11-01,112.4 +1997-12-01,106.0 +1998-01-01,91.2 +1998-02-01,101.1 +1998-03-01,132.6 +1998-04-01,144.9 +1998-05-01,143.3 +1998-06-01,159.6 +1998-07-01,156.0 +1998-08-01,147.5 +1998-09-01,141.5 +1998-10-01,155.5 +1998-11-01,124.2 +1998-12-01,119.6 +1999-01-01,106.8 +1999-02-01,110.2 +1999-03-01,147.3 +1999-04-01,144.6 +1999-05-01,153.2 +1999-06-01,149.4 +1999-07-01,152.6 +1999-08-01,152.9 +1999-09-01,140.3 +1999-10-01,142.9 +1999-11-01,127.4 +1999-12-01,113.6 +2000-01-01,104.0 +2000-02-01,119.7 +2000-03-01,133.4 +2000-04-01,149.5 +2000-05-01,152.9 +2000-06-01,146.3 +2000-07-01,135.0 +2000-08-01,141.4 +2000-09-01,128.9 +2000-10-01,139.7 +2000-11-01,117.1 +2000-12-01,100.7 +2001-01-01,106.4 +2001-02-01,108.2 +2001-03-01,133.2 +2001-04-01,151.3 +2001-05-01,154.0 +2001-06-01,155.2 +2001-07-01,154.6 +2001-08-01,141.5 +2001-09-01,133.1 +2001-10-01,139.8 +2001-11-01,121.0 +2001-12-01,104.6 +2002-01-01,110.4 +2002-02-01,120.4 +2002-03-01,138.2 +2002-04-01,148.8 +2002-05-01,165.5 +2002-06-01,160.3 +2002-07-01,155.9 +2002-08-01,147.0 +2002-09-01,155.6 +2002-10-01,146.8 +2002-11-01,133.0 +2002-12-01,123.1 +2003-01-01,117.8 +2003-02-01,109.7 +2003-03-01,147.2 +2003-04-01,151.2 +2003-05-01,165.0 +2003-06-01,174.5 +2003-07-01,175.8 +2003-08-01,163.8 +2003-09-01,171.3 +2003-10-01,173.5 +2003-11-01,153.7 +2003-12-01,144.2 +2004-01-01,124.5 +2004-02-01,126.4 +2004-03-01,173.8 +2004-04-01,179.5 +2004-05-01,187.6 +2004-06-01,172.3 +2004-07-01,182.0 +2004-08-01,185.9 +2004-09-01,164.0 +2004-10-01,181.3 +2004-11-01,138.1 +2004-12-01,140.2 +2005-01-01,142.9 +2005-02-01,149.1 +2005-03-01,156.2 +2005-04-01,184.6 +2005-05-01,197.9 +2005-06-01,192.8 +2005-07-01,187.6 +2005-08-01,192.0 +2005-09-01,187.9 +2005-10-01,180.4 +2005-11-01,160.7 +2005-12-01,136.0 +2006-01-01,153.0 +2006-02-01,145.1 +2006-03-01,165.9 +2006-04-01,160.5 +2006-05-01,190.2 +2006-06-01,170.2 +2006-07-01,160.9 +2006-08-01,146.8 +2006-09-01,150.1 +2006-10-01,130.6 +2006-11-01,115.2 +2006-12-01,112.4 +2007-01-01,95.0 +2007-02-01,103.1 +2007-03-01,123.8 +2007-04-01,135.6 +2007-05-01,136.5 +2007-06-01,137.8 +2007-07-01,127.9 +2007-08-01,121.2 +2007-09-01,101.5 +2007-10-01,115.0 +2007-11-01,88.8 +2007-12-01,68.9 +2008-01-01,70.8 +2008-02-01,78.4 +2008-03-01,82.2 +2008-04-01,89.5 +2008-05-01,91.7 +2008-06-01,102.5 +2008-07-01,86.7 +2008-08-01,76.4 +2008-09-01,73.9 +2008-10-01,68.2 +2008-11-01,47.5 +2008-12-01,37.7 +2009-01-01,31.9 +2009-02-01,39.8 +2009-03-01,42.7 +2009-04-01,42.5 +2009-05-01,52.2 +2009-06-01,59.1 +2009-07-01,56.8 +2009-08-01,52.9 +2009-09-01,52.6 +2009-10-01,44.5 +2009-11-01,42.3 +2009-12-01,36.6 +2010-01-01,38.9 +2010-02-01,40.7 +2010-03-01,54.7 +2010-04-01,62.0 +2010-05-01,56.2 +2010-06-01,53.8 +2010-07-01,51.5 +2010-08-01,56.3 +2010-09-01,53.0 +2010-10-01,45.4 +2010-11-01,40.6 +2010-12-01,33.8 +2011-01-01,40.2 +2011-02-01,35.4 +2011-03-01,49.9 +2011-04-01,49.0 +2011-05-01,54.0 +2011-06-01,60.5 +2011-07-01,57.6 +2011-08-01,54.5 +2011-09-01,58.8 +2011-10-01,53.2 +2011-11-01,53.0 +2011-12-01,42.7 +2012-01-01,47.2 +2012-02-01,49.7 +2012-03-01,58.0 +2012-04-01,66.8 +2012-05-01,67.8 +2012-06-01,74.7 +2012-07-01,69.2 +2012-08-01,69.0 +2012-09-01,75.8 +2012-10-01,77.0 +2012-11-01,62.2 +2012-12-01,63.2 +2013-01-01,58.7 +2013-02-01,66.1 +2013-03-01,83.3 +2013-04-01,76.3 +2013-05-01,87.2 +2013-06-01,80.7 +2013-07-01,84.0 +2013-08-01,80.4 +2013-09-01,78.4 +2013-10-01,78.4 +2013-11-01,83.8 +2013-12-01,67.6 +2014-01-01,60.7 +2014-02-01,65.1 +2014-03-01,80.2 +2014-04-01,94.9 +2014-05-01,92.5 +2014-06-01,87.3 +2014-07-01,101.0 +2014-08-01,86.2 +2014-09-01,94.2 +2014-10-01,92.0 +2014-11-01,75.8 +2014-12-01,73.4 +2015-01-01,73.0 +2015-02-01,61.9 +2015-03-01,79.7 +2015-04-01,108.5 +2015-05-01,99.6 +2015-06-01,112.3 +2015-07-01,107.2 +2015-08-01,99.2 +2015-09-01,111.6 +2015-10-01,90.9 +2015-11-01,89.9 +2015-12-01,78.1 +2016-01-01,74.3 +2016-02-01,84.1 +2016-03-01,90.7 +2016-04-01,106.2 +2016-05-01,105.0 +2016-06-01,111.6 +2016-07-01,115.2 +2016-08-01,102.8 +2016-09-01,95.0 +2016-10-01,114.5 +2016-11-01,87.8 +2016-12-01,86.5 +2017-01-01,82.3 +2017-02-01,87.8 +2017-03-01,97.1 +2017-04-01,105.2 +2017-05-01,106.0 +2017-06-01,116.3 +2017-07-01,112.3 +2017-08-01,102.6 +2017-09-01,104.4 +2017-10-01,109.6 +2017-11-01,97.9 +2017-12-01,81.4 +2018-01-01,91.6 +2018-02-01,89.7 +2018-03-01,107.2 +2018-04-01,117.5 +2018-05-01,123.8 +2018-06-01,111.5 diff --git a/statsmodels/tsa/tests/results/lutkepohl2.dta b/statsmodels/tsa/tests/results/lutkepohl2.dta new file mode 100644 index 0000000000000000000000000000000000000000..31fe5e2996e6f269569d41a41c2fd52494f13e12 GIT binary patch literal 6000 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 literal 0 HcmV?d00001 diff --git a/statsmodels/tsa/tests/results/make_arma.py b/statsmodels/tsa/tests/results/make_arma.py new file mode 100644 index 0000000..881854f --- /dev/null +++ b/statsmodels/tsa/tests/results/make_arma.py @@ -0,0 +1,46 @@ +import numpy as np +from statsmodels.tsa.arima_process import arma_generate_sample +from statsmodels.iolib import savetxt + +np.random.seed(12345) + +# no constant +y_arma11 = arma_generate_sample([1., -.75], [1., .35], nsample=250) +y_arma14 = arma_generate_sample([1., -.75], [1., .35, -.75, .1, .35], + nsample=250) +y_arma41 = arma_generate_sample([1., -.75, .25, .25, -.75], [1., .35], + nsample=250) +y_arma22 = arma_generate_sample([1., -.75, .45], [1., .35, -.9], nsample=250) + +y_arma50 = arma_generate_sample([1., -.75, .35, -.3, -.2, .1], [1.], + nsample=250) + +y_arma02 = arma_generate_sample([1.], [1., .35, -.75], nsample=250) + + +# constant +constant = 4.5 +y_arma11c = arma_generate_sample([1., -.75], [1., .35], nsample=250) + constant +y_arma14c = arma_generate_sample([1., -.75], [1., .35, -.75, .1, .35], + nsample=250) + constant +y_arma41c = arma_generate_sample([1., -.75, .25, .25, -.75], [1., .35], + nsample=250) + constant +y_arma22c = arma_generate_sample([1., -.75, .45], [1., .35, -.9], + nsample=250) + constant + +y_arma50c = arma_generate_sample([1., -.75, .35, -.3, -.2, .1], [1.], + nsample=250) + constant + +y_arma02c = arma_generate_sample([1.], [1., .35, -.75], nsample=250) + constant + +savetxt( + 'y_arma_data.csv', + np.column_stack((y_arma11, y_arma14, y_arma41, + y_arma22, y_arma50, y_arma02, + y_arma11c, y_arma14c, y_arma41c, + y_arma22c, y_arma50c, y_arma02c)), + names=['y_arma11', 'y_arma14', 'y_arma41', + 'y_arma22', 'y_arma50', 'y_arma02', + 'y_arma11c', 'y_arma14c', 'y_arma41c', + 'y_arma22c', 'y_arma50c', 'y_arma02c'], + delimiter=",") diff --git a/statsmodels/tsa/tests/results/resids_css_c.csv b/statsmodels/tsa/tests/results/resids_css_c.csv new file mode 100644 index 0000000..0b2b971 --- /dev/null +++ b/statsmodels/tsa/tests/results/resids_css_c.csv @@ -0,0 +1,251 @@ +uhat1,uhat2,uhat3,uhat4,uhat5,uhat6 +NA,NA,NA,NA,NA,0.5003943106 +-0.0654604069,1.2630851631,NA,NA,NA,-0.3492146815 +-0.6354860870,-0.3745540861,NA,-0.0568351332,NA,-0.4057551504 +0.2946689399,1.9320851419,NA,0.4708046227,NA,1.1354217062 +0.3069409327,-2.9442407231,1.6018525285,-0.1746956878,NA,0.1874478049 +1.1046618847,-0.4539618378,1.6539689425,-0.2014228655,0.6393283864,1.6055802746 +-0.3828416754,0.1344632210,-1.3129222016,-0.8717798107,-0.7314782509,1.0374903213 +1.4702204261,0.7281252447,-0.5567108484,-2.4315672313,0.4423561929,1.2018542806 +2.0170637341,-1.8582439824,0.6931923024,0.8150557324,0.3026666954,0.7287917939 +-1.6277579917,-0.5102464069,1.5277277726,1.7373173964,1.9681770810,-1.2197099602 +-0.2761238205,0.3649873042,-0.7775647134,0.3466448635,0.3055073018,-1.2953001238 +-0.3025647947,-0.6468237174,0.3357278371,-0.2376379568,-1.2295923846,-1.1459649338 +-1.2846849045,-0.5316460028,2.0697089917,-0.7639490470,1.9033793640,0.2259331476 +-0.1937165378,0.2289905496,-0.2433095548,0.5100208566,0.8134690690,-1.3873492495 +0.0437732898,1.5823375139,-0.0499872936,-0.4584357209,-1.0403646437,0.2258502046 +-0.7085965149,-1.4132676403,-1.6807513582,3.4008022670,-0.8489945586,0.3993469203 +0.6869217259,-0.8486358552,-0.5557220610,-1.6785999705,-0.6749476366,2.1521772635 +-0.9110442088,1.8023461442,0.0422997113,-0.3896198162,-0.7624594802,-1.1114694077 +-1.4100657105,-0.1330189711,-1.9596491770,-1.4344442835,1.8246740205,-1.3731040469 +-0.4980648446,-0.3659419910,0.3192900090,-0.7646484888,-0.6212539753,-0.5343918278 +-0.1963182905,0.3120634472,2.3004050792,-1.0411878963,1.0091729618,-0.3550571047 +0.9418004197,0.7849270531,1.7775243710,2.7319295571,-0.5710783910,0.1157782614 +-0.5088996273,-0.1913695163,-0.7966402442,-0.5348961666,1.8482032661,1.0534313649 +-0.0715461735,-0.5835327992,0.7947619524,0.1219312550,-0.5767933872,0.2132220913 +0.1520909081,0.1397022507,0.9603641674,1.5019044258,-1.1616291842,-1.4513944228 +-0.6864736829,0.1319559890,-0.6002966471,-1.7473751920,0.0078164587,1.3180340915 +0.4828560247,-1.1836012446,1.0716925599,0.1608575427,-1.4868931749,0.3316003442 +-0.3129862942,0.0715293754,0.7365955341,3.2417094068,-0.4098987226,-0.3929225342 +0.1403851586,0.1897035123,-0.0596476798,-1.5798681153,-1.3985600700,1.1626778095 +-0.6032097207,-1.5082408448,0.7000377494,-1.8776160639,1.6758350985,1.2323721377 +2.8737695679,0.7407781954,-0.5782723408,-0.5920917220,0.2527059509,0.1034785314 +-2.6850104137,-1.1661391527,0.7303536686,0.7237072817,-0.0080868097,-0.5095558943 +-0.2719886602,-3.3895763252,-1.6277304594,-1.3923154766,-0.4279533651,-0.8344555187 +-0.7011477493,-0.0298714445,-0.1198199634,0.3133301638,0.3116693135,-0.1733047241 +0.0416515294,0.9737200196,-0.3917202686,-1.0825585473,-0.7950165162,0.5819410626 +1.5149337326,0.2416624934,-1.1947318956,-0.4628348494,1.9146927090,-0.0084117176 +0.7481441984,-0.4375977941,-0.1342210487,0.1968247746,-0.6319537359,-1.0020328996 +-0.6319203993,2.0267610475,0.3996607915,0.5544329061,-1.1313993936,1.3364436916 +0.4715056582,-1.5235522088,-1.7283193075,-0.0819206410,-1.3303897737,0.5075005597 +0.9091893668,-1.0134393903,-1.3735762171,0.9860332103,0.6522772947,2.5312190410 +0.5287709867,-0.6950810352,0.4319451587,-0.3790023987,-0.2159343530,-2.6736528549 +-0.0807173107,-0.6688791267,1.5511740149,0.7564309588,0.3980649655,-2.6144539804 +0.0536032633,-0.8824599745,-0.3967729837,-0.4797359756,-0.4979607052,-0.7626375288 +-0.2460397963,-0.3461595374,-0.2351990573,-2.4095477741,1.1221816621,-0.9082062341 +0.0709363800,-1.0466628618,0.3294003679,0.1844875977,-0.7110086691,-1.1623096473 +0.2399373116,0.6941539535,0.3145399145,-0.2363560438,0.0210786490,-0.1754088571 +-0.2438563526,1.5030015748,-0.4042708849,-0.6632463501,-0.0946388559,-0.8122142899 +0.7157352693,0.0543236131,-0.1575747665,-0.7529692090,0.8677700083,0.5276833203 +-0.5084592767,0.6610466284,0.6077484386,-0.5243826928,0.0024699075,-0.2810590594 +1.0176896459,-0.3607767040,-1.9293078296,-0.7515491068,0.9555308508,0.1584558649 +1.5089485007,1.5219576739,-0.6992680036,1.2154852847,-1.1463576156,-0.4597511790 +1.3383277508,2.2028700891,0.8097337365,1.0794697807,-2.1389688647,-1.5859320795 +0.3962442881,-0.4305160737,-1.3210614991,0.7161741695,0.4642007939,0.0246124486 +-0.7652338955,-0.5166895756,0.2962352092,0.3247205142,-0.8670442336,-0.4772492318 +0.5643576383,0.3956401450,1.4860288420,-0.2779957266,0.3116651464,-1.1239150443 +-0.0374705391,1.0901994506,0.9060165422,0.7509412729,-0.1020081479,0.3405360107 +-1.6275106422,1.1118352132,-0.0734528602,1.5776415179,-1.2972874027,0.8119571278 +1.3248479401,-0.3348267959,0.1975626501,0.5934869165,-1.0050772391,-0.0761280584 +1.6176183007,1.2976915734,-0.6419622802,0.5957844486,-1.4706520720,-1.5533444578 +0.6723751875,0.5086092958,-0.5091309911,-0.9939298251,-1.8872368640,0.5298484455 +-0.3382029836,-2.0506220303,0.2674136308,-0.6903485064,0.4214283863,0.8624606065 +0.8374334442,-0.1375622562,0.9276882431,-0.6083805360,0.2344020489,0.7971587010 +0.9367567624,0.0509525973,-2.0189241276,-0.0578032026,-1.2671869073,0.2221199506 +-2.1890137857,0.5172743480,-0.4207972910,-1.3312228275,-0.9893612183,-0.7007866945 +-1.7673535236,0.5468202195,-0.1092700241,0.5994251816,-0.6039924264,-1.5787524848 +-1.1150896719,-1.6594138211,0.2844613717,1.0520409822,0.9630107978,-0.3000528315 +0.4208490095,1.8080909225,0.9202916640,0.7772313848,0.7211254678,0.7037872606 +-0.1989320555,-0.3298732880,1.2297305855,0.6461123409,0.6427656563,0.3165638628 +-0.0519355019,0.7657112511,-1.2619116037,-0.2808796329,0.7789272390,0.6909305105 +-0.1925658016,1.5984022911,1.6236000333,-0.9923169322,-0.2860970877,0.9115270207 +0.8091183807,0.3246702273,0.7048713981,2.2152386269,-0.2811969367,-0.7492420302 +0.3851042457,-0.3386875670,0.2304304233,-0.3979151000,0.3160027414,0.0304899261 +-0.8874014278,1.1943808482,-0.5023952244,-0.5514781203,-1.0536831017,-0.2179694459 +0.4407832279,0.0523743421,-1.4662354110,0.1411648842,-1.4636188905,-0.8327519395 +-0.2629532039,1.0475402671,0.8756413946,-0.4510054148,-0.7295765080,0.6424046832 +1.3460795119,0.0884779627,-0.5682036973,0.4253867348,-0.2645342719,1.2328297716 +1.4477374179,-1.4880389199,-1.3159218241,-0.5333782667,0.6446414445,-0.6831638605 +-1.1068354262,-0.2210533536,0.6107236387,-0.5849566916,1.0150747633,-1.3747400756 +0.5015683891,-0.6886112105,-0.2150892146,0.2976803070,-1.4526679511,0.9676734086 +1.3303310164,-0.7866728621,-0.0604242534,0.3166514200,1.0591768704,1.9287588832 +-0.4986333991,-2.1896107532,-0.4594879074,0.0076093532,-1.5864349617,-0.2443816202 +0.8371757402,1.0122881194,0.9747158848,2.0868453261,0.8553441826,0.4177749515 +0.2241215687,-1.7957236597,-1.8297964730,-0.3358237607,-0.6192435325,-0.4930144584 +0.7832548194,-0.6043240087,0.1031166441,-0.2043217762,0.6811283663,-0.5666896262 +1.2790309147,-0.8330944969,0.4691860996,1.7424509046,-0.7443373341,-0.7566423659 +1.3729576844,0.2668869648,-0.9865774811,-1.6793688171,0.7530405621,0.7053387848 +-0.1506368009,0.4545469482,-0.2636504852,-0.5801568263,-1.2985993625,-0.0966889466 +0.0701519818,0.0006587644,0.5464727713,-1.1967004895,-1.4686272056,1.6624993654 +-0.4413901802,-0.1794993701,1.2716732496,-0.9997354861,0.3795552275,-1.6629825610 +-1.0406023856,-1.4710415052,0.8852373182,-1.7821439728,0.0616569205,0.5607366268 +0.3438836253,0.3019562062,0.3113134230,-1.1049500709,-0.0472231498,0.6794404966 +0.1872210447,-0.2181383487,0.4269897736,-1.2584207049,0.6435582496,1.8568318491 +-1.1758410195,0.7338825612,-3.2192240590,-0.9539135555,-1.2833358213,0.6347810269 +1.1403879504,0.3664986261,-0.4578789352,-0.0892428031,-0.0676864665,1.1622940267 +-2.0272931103,-0.4575022623,-0.3082829339,0.3606002438,0.0595655194,-1.0267142580 +-1.7216043582,0.8278561949,-1.1425141481,1.1321203795,-0.8611531373,0.7095997481 +-0.2781180874,-0.2103503117,-0.3093247345,-3.0544011602,-0.2876661294,-0.2268230452 +0.8369744273,-0.2404263132,1.1564831203,-0.0204020379,-0.9819839107,1.6852656521 +0.8345610422,0.6952275350,-0.9586613496,0.4466599706,-1.2264246294,-0.9723111255 +2.2012414392,0.5503974375,-0.0033846456,-1.4676175521,0.3063842593,1.0976378745 +0.1668948003,1.1488857035,0.0560980353,-0.5435875677,0.5057279675,-0.3895431008 +0.6347841284,0.0938644735,0.5673224629,-1.7699237338,0.3263993448,0.9743186850 +-0.1553431061,1.3592644799,0.7198606550,1.9037264893,-1.9048706490,-1.4754925348 +-3.6906716246,-0.0173961930,0.9820098802,-2.1575453441,-1.8474039236,1.6980093185 +-1.6246441930,-0.2034884257,-0.6856603162,-0.0524264832,0.2962762330,1.1438618632 +-0.7101009285,-0.3798257888,-1.5237184924,-1.0660490256,-0.8312812097,-2.0446815930 +-1.0044535394,-0.9868949244,1.4125136525,-0.2300446183,-1.4878644354,-0.5410528581 +1.0175707931,-0.2276451208,-1.3301590091,-0.8503675641,-0.3930718284,-0.2417342172 +-0.9277975098,-0.3605600386,-1.4308176138,-0.2850780766,0.8941345586,0.1257221936 +0.9749441738,-0.6689985336,-1.5172439837,-1.1002819723,0.8468866650,-1.4438006595 +-0.5485514540,-1.6122356618,0.3708045184,0.2031677006,0.1980891877,2.7186226492 +1.1328001994,-0.7563402849,0.7085118554,-0.6834515929,1.3106114910,-0.6703471634 +1.6915186471,-0.0293767965,0.0724622141,-0.6891689152,0.6448055491,-0.1027222370 +1.3461835508,1.3628752311,0.0054879873,1.6731019129,1.7467605358,-0.3669118960 +0.9356320892,-0.1014139773,-1.6104735239,0.2973422359,-0.5141566716,-1.1264365217 +-0.1947487268,-1.4536928002,0.0937448813,-0.6403606739,1.8000610462,0.7810284504 +-1.4600276800,0.1380387687,-1.8061353374,1.6649005367,1.1112660846,0.7174777506 +1.4083043461,2.0328868017,0.9597472085,1.2076275681,1.1637810337,-0.5750451086 +0.7555856746,0.3936792347,-0.1533108942,2.0388822750,0.0995127861,2.3014747244 +-1.4173315178,-0.2466246965,0.7282808133,0.5961877815,-1.3592278754,-0.7304096992 +0.8334998949,0.8578275484,0.1959441967,-0.8039929081,0.3348472051,1.1997789442 +-0.4433274388,0.5608159863,0.3833817279,0.5317121769,1.7059099873,0.8695640197 +0.8830003293,-0.0287544451,-1.1798348578,0.0283990325,-0.0075607086,-1.1080249303 +0.2288748073,0.3025092041,-0.0790254304,-0.3743985815,0.4439976621,1.1846266000 +-1.4376024339,-0.0528851411,0.3922379103,-0.6310919354,1.1381526167,-0.9312452941 +0.4263198719,-0.5093831586,-1.8331149527,-1.7010601475,-0.1439891226,-1.1648722060 +0.4095303549,0.2623855068,1.1397336548,0.1345112002,-1.5436360159,0.6243403941 +0.6026472890,1.9744450068,0.2496865676,2.2346628441,0.1908724773,-0.2745090893 +-1.7818182491,-0.4120434810,-0.2632536437,-2.3177995648,-1.6257680004,-0.8080546491 +0.7838696230,-1.5494786851,0.2273804696,1.6270819525,1.0276553113,-0.5285699168 +-0.6802372762,0.2845480423,0.0218113495,-2.1326401865,0.5376776939,-1.5610155178 +-0.2171863926,2.0258778118,-1.2960151431,-2.2676025399,0.8583011420,-2.3088488812 +1.0207864367,1.3306582178,0.2938591851,-1.5721565438,-0.8357929085,0.4556781999 +-0.7537789514,1.6352212305,-0.0151489874,0.6774464253,-1.0391462020,-2.1399472985 +1.4265268043,-0.7758918334,-0.2241536881,-1.0647999645,0.8538391522,-1.4091344475 +2.2954869649,1.4166329867,-0.4534667558,2.3606061022,1.6965210132,-1.6893625294 +-0.8547395145,-1.5696538424,0.4724321463,0.4203755037,1.3122125061,-0.0111738785 +-0.1367933840,-0.1437980542,2.6690983696,-0.5117225562,0.0932130899,2.4842538924 +-0.6437664574,-1.0827215584,-0.8820582782,1.0030601055,0.8981908845,-0.6605924663 +-0.3061163905,-0.8027612404,-0.8063910385,-0.8769579218,1.2042560809,0.4215805113 +0.0898401154,1.0913334529,-0.2899997592,1.9281192377,-1.5271857033,0.3893754154 +0.7661303152,1.3296704729,0.1318332281,2.1268395595,0.6773196461,-0.7394571904 +-0.3234495650,-0.1236231664,1.0164713042,0.6573325551,-1.3279555489,1.9150854662 +1.1182164690,0.4383504719,-1.0796268540,-0.0693358055,-0.3636827717,-0.9618402341 +-0.1513082848,0.4762530971,0.1453786217,1.8459833668,0.8801830575,-1.3358260664 +-0.0497375924,-0.0839629046,0.6457138991,-0.1724376838,-0.6898710128,1.1842964072 +0.0744097740,-0.6911241866,-0.9541048800,-0.1929226937,-0.2993801569,-1.0245419517 +1.0352650335,1.3563860484,0.9459148918,-0.5944905866,0.9041552321,0.8422034007 +0.4096924544,-0.0193972911,-0.7736506866,2.0775471935,-1.4162727891,-1.6497863991 +0.0943655963,0.7782222971,0.6406129989,1.6974461277,-0.8155135681,-0.4469365773 +-0.3711037957,-0.7343844893,0.5458146747,0.1547696934,-0.1926832462,1.5957685199 +0.0261208823,-0.4144498838,-0.9485555425,1.8328896061,1.7245510545,-1.3262079835 +0.2787288490,0.8999609407,-0.1776797926,0.3362813903,0.9277695949,-0.2225264142 +1.5205548430,-1.1618375994,-1.6120446862,1.1679127561,-1.4281646449,2.1441838498 +-0.0510788534,0.8073317833,1.0622504320,-0.4387705333,1.0814239193,0.4906556109 +-0.7538796863,0.8484047828,-0.2981417016,0.2898703199,-0.3453311846,1.7531928586 +-0.2116339647,-0.7586766732,0.0915136072,-1.1960087361,-0.2911666849,0.3717487687 +-0.2529102806,0.3520178510,-0.0858901827,-0.7485222907,1.1877326047,1.0031234877 +0.2456163867,-1.2331999073,-0.4936481908,-1.0632268281,-0.8856496098,1.9105127386 +-0.6362641616,0.2723267435,-0.5629413518,-0.5390147091,-0.1324894073,-0.5131208903 +-0.7312974423,-0.1926411998,0.1681884875,1.9451770347,-0.7387367989,-1.1006053414 +-2.4526678075,0.0513672029,0.1822806980,0.6833954150,0.8251340581,0.8228679401 +1.4051374740,1.0446826442,-0.2343841721,-0.5818054063,1.6449567394,0.4710870876 +-1.0836177088,0.4992480100,0.3298423085,-1.6869269931,0.0116119423,-0.3902740912 +0.4686052927,-0.6594991408,-1.3061028174,0.3413835964,-0.1731830236,-2.0176219748 +0.3875135737,-0.8648295543,0.2051480936,-0.3899822309,0.8137999120,-0.0941055758 +-1.2746838020,-0.2171508047,-0.0934703122,1.0085311455,0.6930428563,0.9398196585 +-0.0732828643,0.0096089247,1.4103248996,-2.4407270503,-1.4791166112,0.3878380761 +0.3280445563,1.3564670299,0.6229334320,0.7072729048,-0.1066012409,-0.8036829693 +1.4361077011,0.4566854308,1.0582892665,1.0822395896,-0.5189104901,0.6797001295 +0.8407963506,-0.1186809136,-0.7886762650,2.8261774623,-1.8358786915,-1.3298562472 +-1.9879799605,-0.2476081815,0.0929762393,1.2413076648,0.2795249959,0.7343187697 +-0.8193344766,0.5881408298,-0.6017948595,0.9095424639,-1.5971009727,1.0674294135 +-0.6236560689,-0.1757291483,-0.1717646416,0.7228680478,0.7349997314,-0.3428481578 +2.0163357996,0.3859701321,0.4797367005,-0.3933024202,0.7150443195,-1.0087617215 +-1.2041036981,-0.7997791706,-0.4380503808,1.4002704867,1.4330761465,0.4402664946 +2.2231380577,-0.1069122017,-0.3061325445,-0.3665506679,0.3548754899,0.5785003847 +0.3545537254,-1.0268623015,-0.6444060136,0.3495957995,0.4699941479,-0.0067370226 +0.0153298725,-0.0019101897,-0.6683476722,0.9242195907,-1.0527221996,-0.0475782924 +-0.5637642729,0.7930434873,-0.3750645923,0.5612822995,-0.4182684221,-0.9368562228 +1.7143352150,0.6172668521,-1.6983834875,1.2822210611,-0.4389647946,0.2394125068 +-0.3849048729,0.7189072487,-0.1193580560,-1.2379096204,-0.0121740577,-0.9745265765 +0.6865256314,0.5271347883,-0.5011161131,0.1015727708,0.2201019568,-0.9346709968 +-0.2185375628,0.0623869353,-0.3592402594,-2.2471186648,-0.8258440844,0.7590790118 +-0.9578096837,-1.3913099180,-0.2973806343,0.0668261193,1.1452412220,-0.2668327880 +-1.8011619760,0.1013152150,0.3188201337,-0.0875343518,1.1524747435,-0.3980427036 +0.0215642213,0.2089892016,1.4141705489,0.4501225865,0.7361446011,-0.7309605209 +-0.6159836505,-0.3177102339,0.1678750570,-0.8061177067,-0.0548224654,-1.0096396327 +-1.3615542033,0.3003290595,-0.8704822622,-1.0720425982,-1.7793666047,-1.1183970178 +-2.1327575451,1.0676916960,-0.2409317675,0.3507073637,-1.6832214282,-1.8839357120 +-0.2660102650,-0.3255397539,1.0651413953,-0.2443446728,1.2697583939,1.0715113773 +-1.6852921588,-0.5377157475,-0.6277614222,0.0273446362,0.4240717497,-0.8115531844 +0.1468537864,0.4572329231,0.8253765423,0.9983826272,0.2546886228,-2.5861107320 +1.2789495728,-0.2613763277,-1.3265492969,0.2360406776,1.0221022437,-0.7281644082 +1.7588458136,-0.4606637459,0.7637610888,0.5932506079,0.5240683251,0.8856090722 +1.7403226649,-1.2725596905,-0.7232641418,0.0722711195,0.0017105943,1.3992283795 +-0.1707061145,-1.0966955901,0.0078381641,-1.1925246733,0.2416447698,-1.0102024683 +1.4119679434,-1.0265466945,-0.6309443484,-0.1982717907,0.1344589218,0.1773641652 +-0.1797045059,-0.4415532095,0.0804869513,-0.0038552510,1.0558303731,1.2832350509 +0.5427117643,0.5693680070,-1.8709898073,0.1610728561,-0.3157664508,1.0618101522 +-0.7059583103,0.6405858962,-0.5007106010,-0.4467612137,-0.2620082547,1.2401043587 +0.4147176075,0.4467494785,0.8512633516,-1.4272053776,1.0126535175,-1.1318362493 +1.5980478335,0.7423948627,1.0389932867,1.6118869843,-1.4641160743,-0.8936642947 +0.8981412825,-0.9305497719,-0.6123093640,-0.5272377006,-0.2440362414,-1.8215769182 +-1.0782329366,1.3536855397,-0.1069587517,2.3963940878,0.2994018406,-0.1564801406 +-0.1616361225,2.5782180361,-1.2840332009,0.7221887541,-2.0211529966,-0.8863623682 +-0.6255630087,-0.6677447735,0.3934055106,0.2604219299,-0.5008685213,0.0373925974 +-1.3239428478,0.6670161896,1.3216434591,-1.2743184119,2.3178510969,-0.2730434154 +-1.4261324736,-1.1271361575,1.2242692550,-1.6065459332,-0.2116766988,0.4732656829 +1.6540626572,0.6450305367,0.5288357410,1.8783805371,0.8678333165,2.1505020661 +0.9049648556,0.5619457083,0.9317900076,1.0307770838,0.6036072437,-0.2931417859 +-1.7562740941,1.0077397180,0.5572208923,-0.7450342693,0.1342637226,-0.9215272221 +-1.0291638066,0.3140716710,-0.5899114804,-0.8691474315,0.7962944337,0.3521567527 +0.7046067471,1.0321860618,0.2477562594,0.9809344431,-0.0250012989,1.1074512127 +-0.6768199736,-1.2747742125,0.0702791394,-0.7424183896,0.3512420108,-1.4669965816 +-1.1193259631,0.1163775893,-0.2649532490,-0.1593216828,0.6020811962,0.0166198364 +-0.5897555426,-0.2642248997,0.3122903511,0.2500378842,0.4154695343,0.1766798048 +-1.2795458214,-2.1263289933,-1.1084389251,0.4863877182,1.2666850897,0.0388239570 +-0.8136131755,0.2395440102,-0.7007470239,0.4879033573,0.2067022807,0.4404893336 +-0.0383409132,-0.1937701299,-0.6008381517,-1.1762107313,0.5602320688,2.1835274973 +0.7253457303,1.2566728107,0.2776813927,-0.0693420804,-0.0852937498,0.3946150533 +0.5561471080,1.2049092997,-0.2609609025,-2.9393301859,1.4466879591,0.1990217008 +-1.4220929761,-0.4796023936,1.8609072882,0.4238918393,0.1673453300,0.8485272457 +1.0697474658,0.5753437966,0.4204402637,3.6302207300,-0.8358716426,0.9278824003 +-0.3118632307,-1.8069977265,0.4128007572,-0.2111010990,-0.0967003696,0.4497190487 +-0.6527555972,-0.4761800670,-0.7078466691,-3.0018017049,2.0046344326,-1.2567268926 +0.5047860564,1.1915399615,1.2194542667,-0.4251351724,-1.1944683161,2.0860574488 +-1.5577543599,-0.0316626042,0.2805415642,0.5266392264,-0.6476576263,0.3398337961 +0.9190848738,-0.3551749010,1.2823032027,-1.8394312099,0.9796230447,-1.1835378154 +-0.7782842766,-2.0497930182,1.1415529071,1.1973102176,-0.7121047526,0.8664399743 +0.8029587753,-2.2914889648,1.3454029705,-0.8112348706,-0.3665337856,-1.7836847897 +1.5320676166,0.0769229836,0.3966975408,0.5868781129,-0.7529574842,1.8896157767 +-0.8404819720,-1.7176799415,0.6591061328,-1.6235239418,-0.9436094661,1.8712553671 +0.2427053048,1.1740067811,-0.2468064529,-2.9586336045,-0.0519853295,1.1167315137 +-0.2010842298,0.4758586357,-0.7467708616,0.2852232976,0.4075181463,-1.3119547353 +0.2462702723,1.8997551045,0.9010785346,-1.0067839544,1.7476702894,0.0069475102 +0.6510138128,-0.2559507584,1.0942588957,1.9007609071,-0.0657134857,-0.8223423084 +-0.5578904074,0.7925319614,1.0371590315,1.4380492818,0.3574715739,-0.2837037645 +-0.9007578168,-0.5965810887,-0.3189386320,1.5790522192,1.7548857902,-0.4445433584 +-0.4834894883,1.2449488088,-0.7235127959,0.6435496262,-2.2060223619,0.3443714891 +-1.3054655211,-1.4375008361,-0.0215691319,0.5327443300,-0.6442383611,1.0888978669 +-0.2954992841,-0.7276140637,1.4175328783,0.7519479231,-0.6154464369,-0.7637871219 +-1.6250918561,-0.1283502017,0.4798477130,0.0476190104,1.3202647421,0.0608765468 +2.2224850491,0.2972667070,-1.0202362204,-0.5128809376,1.2262508621,-0.6891269634 +-2.1695647843,1.2949904167,-0.0271718883,0.1143977269,-0.4436678999,-1.4214801423 +-0.9311508951,-1.2138091101,-0.4685996489,0.1566856410,0.0994080222,0.5991675552 +0.7152955803,-0.5545528668,-0.2558170386,-1.1619941881,0.4434246441,0.7315839124 +0.9191579829,-0.2698486423,0.8089940968,-0.4599040078,-0.6154554160,0.1761666501 +0.3782062673,-3.3114976390,0.2446530955,1.3051330784,-1.0901333002,0.9564792848 +-1.0377224436,1.1560092370,1.1880239505,1.6850164101,-0.2085718088,1.8716570648 diff --git a/statsmodels/tsa/tests/results/resids_css_nc.csv b/statsmodels/tsa/tests/results/resids_css_nc.csv new file mode 100644 index 0000000..546a5e3 --- /dev/null +++ b/statsmodels/tsa/tests/results/resids_css_nc.csv @@ -0,0 +1,251 @@ +uhat1,uhat2,uhat3,uhat4,uhat5,uhat6 +NA,NA,NA,NA,NA,0.6143504692 +0.4157942138,-0.6195877298,NA,NA,NA,0.5351037528 +-0.5216253830,-1.4490222073,NA,0.4543486899,NA,-0.2539693936 +-0.5310064793,-0.0692668747,NA,0.7313844554,NA,0.7355751135 +2.0103391427,-0.4308022634,0.2395313804,1.2285867572,NA,-0.3495442772 +1.2645121536,-0.2447600015,-1.2361455315,-0.7044357534,0.4055978842,1.1511468868 +-0.0253187182,-0.7878130240,-0.8799097019,2.1939759323,0.6278271493,0.8445474524 +0.2087251811,0.1303879633,-0.0141094894,-0.3012801705,-0.0529147298,0.3869796588 +0.6882005063,-1.6834900862,1.6110952249,-0.6027865943,2.1732810594,0.5728797365 +1.1413314243,0.8768146120,-0.7405577296,0.1795173867,0.1558140991,0.2464764059 +0.8603317648,-1.4085517297,-0.7927594239,-0.8555922440,0.8898454599,1.6407965009 +-1.4426224067,1.1233860935,-0.9476274074,-0.9731251937,-0.6363588731,0.5722289416 +0.2861221702,-0.3454575869,1.0870118537,-0.0726147893,-0.1788253738,0.7045477318 +0.1570992704,2.2971488587,0.5001821798,0.5052604801,0.4731307016,-0.7749604074 +1.3155156901,-0.8939871308,-1.2956895347,-0.3161253858,0.2963180845,-1.2093904969 +0.7535071809,-0.7992689415,-0.1627551445,0.5862161004,-1.7250120434,-0.7164589324 +-2.1133716190,-0.4822938588,0.6561719141,-0.5612764185,0.4069028257,1.8876953474 +-0.2926097774,0.3892803055,0.5855102713,3.2532235289,1.8389113887,-0.6930901555 +1.6731594024,-0.4547401237,0.1904184139,-0.8309528381,-0.4898013799,-0.3998662500 +-0.5426090918,0.4522366476,0.0900916861,-0.7140912682,-0.3355850526,0.3977104258 +-0.5268591042,0.4592368221,-1.1959142179,-1.6565224102,-0.1275482235,0.7329020712 +0.4875740446,-0.0807612913,-3.1647350558,-1.2117724685,-0.3538307198,-0.7343233853 +3.2154029184,-2.4784397712,-0.1328122448,3.0213060693,0.0692774349,-0.6014944010 +-1.2679401714,0.0087974496,-0.0956003141,1.3145051551,0.5104114423,2.3273722799 +-0.5676781908,-0.0240708846,1.2305243836,0.6114237075,0.5531441543,-0.3212501750 +0.0892418042,-0.2651283193,-1.5611202854,-0.2366295554,-1.7826025243,0.1943275388 +0.2773288242,-1.1998937638,0.9195354063,0.6210411382,1.0387225515,0.1393420028 +0.4831760574,-0.8718151800,1.9553635427,2.1075071830,1.5819834792,-0.2045096604 +-0.0571795827,-0.1631261522,0.1384356318,-1.0009927582,-0.3064255195,-0.7804604475 +1.3161339989,-0.4656285123,-1.2059144190,0.3320299818,-0.0774840282,2.4246929913 +-0.8406271653,-0.0040910916,0.5970898003,1.5100848420,-0.0514862871,0.6476585082 +-0.8186970009,-0.2947348700,-0.5634325824,1.1868024728,-0.1185819614,-0.2264012754 +-2.3475082672,0.1556172006,-0.8288155833,-0.2136267078,-1.7396707899,0.3127889039 +-1.6805826890,-0.8611425572,0.0471578622,-0.1045372043,-0.4547230696,0.2851109915 +-0.6736780239,0.9312160822,0.4005308901,2.5571575147,1.1030849448,0.0641439758 +0.7256374819,-1.1446932742,0.2570001601,-1.5646383687,2.2585901718,-0.9867862852 +-1.2020924892,-2.5648720017,0.9506695505,0.0567893472,-1.0953282935,-0.3822991006 +0.2909873539,0.9617755778,-0.0247771556,-0.9889880386,0.2327830284,2.4577087649 +-1.0043173816,-0.8921606420,-0.8419210731,-0.5968042239,-1.1202527679,1.6100799411 +0.4843413326,0.5191072345,-0.3612931035,0.6773849018,-0.2417953391,1.1960287410 +-2.3225998778,-0.3545972820,-1.1309574468,-0.2312251876,-0.9973435759,1.2713502671 +0.0369010936,0.5154048391,-0.7706022337,-0.6328224077,-1.5535761341,0.9269641532 +-1.4540263113,-1.1628549131,-0.7174874552,0.1588377569,-1.0920451480,1.4221901743 +-0.7575535521,0.6025957960,-0.7476491922,1.7575299394,-1.0270507496,-1.3023774228 +-1.1469727084,0.0247266427,-0.1197079648,-0.3212578512,0.5449189085,2.0437325273 +0.4938463089,-0.1777957650,0.1414292075,-1.1172004706,-0.0238223989,-0.7595875866 +0.4653114083,1.3437866191,0.3848296626,0.2686400822,-1.2749111020,0.0472791487 +-0.6874807780,1.3950683185,0.0290685352,-1.5792589142,-1.3037309983,2.0508963291 +0.4408613491,-0.2398587783,0.1106466959,-0.9583542893,-0.9761505140,3.5781009407 +1.3765665694,0.8506361157,-0.9881610058,0.8596824341,0.4297714772,1.4244983751 +0.0139239751,1.6952752728,0.8062255633,-1.5571730736,-0.1769185746,1.3061661282 +0.2425111146,-1.4228515277,-0.5031101420,-0.4849495553,0.5768200492,-1.4027688362 +-0.0471469074,-0.4747861914,-1.0762528648,1.2397938111,-0.0212676954,2.0031995217 +0.9940887123,-0.6053235226,1.3736678477,-0.1481125712,-0.2513441425,1.7550806977 +1.2380479220,0.2769191768,-0.6082866490,1.2619270554,-1.0835304315,-1.1890095217 +-1.0437249341,0.1292259583,0.5206296911,1.0316346364,1.3104057417,-2.4658050069 +-1.5381753017,1.4118678566,-0.9492130633,-2.0683610161,-0.3959986113,-2.1653441459 +0.0965413060,-2.1377176586,2.0854283830,-0.5739261536,-0.6381490195,-1.2185073460 +0.7712101752,-0.8847044894,-0.6685720410,0.4166991981,0.9008435423,1.7316468225 +-0.6907882006,-0.6446452654,0.5249226679,1.1142537082,-0.4485779015,0.6200811364 +0.9122321000,1.0027764723,0.4787421578,-0.0903198584,0.4470625528,-2.3510943190 +-0.0716404683,0.9860838940,1.7707933014,1.1877535341,0.9719198675,0.6875588049 +0.0512832622,0.0653292617,1.9577185289,0.2481909653,-0.9155610686,-1.2543860658 +0.6491488628,0.5321889709,1.0469731140,-1.6772296290,0.4757697162,1.4915607850 +0.7961213744,0.2968081952,0.6232777685,0.3527983615,-2.1368293713,-1.1210162648 +-1.0395159143,-0.4185801987,1.9543000415,0.5424269915,0.7729490960,1.9392865848 +0.0095516514,0.2402152236,-0.8568935692,0.0283939308,0.6881152063,-0.9207673336 +-2.3242135235,-0.4635276495,-0.0547833919,0.4325860657,0.4784927247,-0.4970964661 +-0.4786659971,2.0434580744,-0.6522255420,0.3026920742,-0.5934427056,-0.1298033631 +-1.1352833247,1.4598550503,-1.3233228849,0.8671510388,-0.7981516793,-0.4858807852 +-1.1680418631,0.0535361606,-0.1510985420,-1.0553886364,-0.3042178543,-2.0903747983 +1.2457405937,0.7252034022,-0.4013221743,0.3585980598,2.4924374591,-0.6841405366 +0.7398534717,2.0070958748,-0.7003296673,0.0192982834,-1.1914865625,0.5418412291 +0.7021800345,-0.1398060981,-0.2322597214,0.9736402062,-0.6744690208,-1.1973945881 +0.9666376285,-1.0167503113,0.3294955694,1.8082091733,0.7593258832,0.4549699458 +-0.5800130680,0.0971966655,0.6953199463,1.5922986207,-0.3287105231,-0.0008918183 +-0.6127076114,1.0982542550,-1.4143888478,-1.3220668513,-0.1175894156,1.3122947467 +-0.8985128937,-1.4240587646,-0.4360067827,0.3112539428,1.3654879932,1.1850975414 +-0.6528345212,-0.1889142190,0.1095509006,0.1112939852,-0.3666711292,-0.5246544546 +0.3010321297,-0.7926768373,-0.4633518394,0.2850055244,0.3281977015,0.6120110095 +0.0769778566,0.0992458041,-0.4341722868,-0.5689767373,-0.7289513676,-1.0815313859 +-1.1273912108,-1.4775473244,0.1353846794,-1.5574049268,0.0977693100,-0.6788213497 +0.9220938134,-1.1592971620,0.0840834801,-1.5854129909,-0.7175730519,0.7539322781 +0.4081716467,2.5707138630,1.0588659200,1.6267786932,1.9261789318,-1.8907594121 +1.0077314227,-0.5338729734,-0.0913980559,0.7117109820,-0.2367312802,2.1647607203 +1.7455260132,-0.5129501252,-0.5249116074,-0.5845899294,-1.8920416117,1.3816985457 +-1.1532323495,0.5868615366,-0.5047622935,1.1139874489,-0.5228791416,0.3518951335 +0.8638232192,-1.1229705602,-0.2472085616,0.5260240271,-0.0220303434,-1.1998282747 +-0.2451617014,0.5423810558,-1.2152722772,0.0745001739,-1.6350285922,-0.3357604080 +0.8930966584,0.9603142232,0.4770856241,-0.3820829458,0.0562404256,0.3468167569 +0.0790763322,0.7468377100,1.5405700393,0.1170898366,0.9180660926,-2.5051450455 +2.1192061264,-0.7331086584,0.6253647376,1.4143309787,-0.3404500982,0.0657873320 +-0.3246167772,-0.9194914951,-0.6598997505,1.0273002467,1.9393289707,-1.5157229234 +1.9431900774,1.3804629177,-1.0516154954,1.3336454390,1.7818353451,0.5613193313 +-0.2034809263,0.0713772473,0.1693137853,0.5338065620,0.5148412507,1.3189550515 +0.7107281188,1.2554269303,-0.1330393484,-0.6750731146,-0.2362306917,1.1530885411 +-0.0388898821,0.6664360533,0.3046965852,-0.7402870956,-1.0886815140,1.1609143529 +-0.8310594768,-0.4543478187,0.1491373183,0.8185342235,-0.4204032228,-0.6676708069 +0.5666307245,-0.1287171280,-0.1661858769,1.2881687319,-0.6365129989,-1.6446687927 +0.0709081140,-1.2610826529,-0.5334431683,0.2984631805,-0.0458527287,-1.1691359414 +-1.6063052192,-0.3162105944,0.6129340037,-0.0160538847,-0.0342874857,0.0268354771 +-0.4825902901,-1.2936069066,-0.4981277884,0.4985880974,1.2040809017,0.9552718462 +0.0108626857,1.0742780674,-0.6656186768,-2.8443530111,-1.0477419070,-1.7851569526 +-0.8934102686,0.6852966951,0.7194576366,-1.7259883995,-0.6701781794,1.1020176596 +-0.3880438644,1.4889147056,-0.7788506077,1.0360036543,0.7736130415,-0.2183442777 +0.0350962910,1.1391632506,1.5796360596,0.5445093906,-0.0174664553,1.0047395756 +1.1464777133,-0.2834902354,0.3567673669,-1.6427470580,-0.1177955114,-0.2592197216 +0.9380941874,-0.9233563055,-0.0999640650,0.3800754077,0.9219001297,0.4377293142 +-0.6524391093,-0.9177900805,-1.8955303544,-1.3706263794,1.9716795402,-0.3163755052 +1.6003492787,0.9969811775,0.7282055030,-1.5732492358,0.4177304846,0.0116805841 +-0.6640220782,0.3563577308,-0.9517422419,0.4150735300,0.2043118061,0.1768480054 +0.4684171889,0.2047487516,-1.1400420396,0.0243611707,-1.2630795440,-0.4676636143 +0.8557642915,1.0555263456,-0.8369330201,-0.2899885540,0.3530703009,-0.4211398737 +-1.6578907767,-1.0305540541,1.5032866219,-0.9485639945,0.5217356799,-1.2892784438 +-0.9497073409,-0.2706902148,-0.8980093413,1.1631212252,1.0935500306,1.0796816407 +-0.3414418972,1.1900152532,-1.0799740976,0.2900146275,-0.0100502953,1.0155777753 +0.2834596984,-1.6045318586,0.2906201163,-0.9871322391,0.4116869363,-0.4082149648 +-0.1732457581,-1.0662429634,-0.2879301854,1.0817076546,0.0355317584,-1.5120648523 +0.7113390855,1.0805921551,-0.7136948651,0.9553529924,0.0354211219,0.6505845400 +-1.6796197190,-0.1159781223,-0.8934635597,-1.5237477934,-0.8404612305,-1.0101477423 +-2.1220375343,-2.3373441844,0.0403150200,-0.0629744659,-0.4618150240,1.1688349421 +-0.9765593594,-1.0852132916,-0.0154850265,-1.0077406826,0.2096016056,0.7947237220 +0.5248745716,1.4967017985,-0.9828819567,1.2688124028,2.4111180967,0.3357900578 +0.7812493354,0.5912553041,0.5732001327,-1.0404988811,-0.8665555715,0.1770518579 +-0.2450632449,0.3806333998,0.0355312652,0.2831699849,0.7042672076,0.0134086563 +-0.0778809795,-0.4167556345,0.7588097664,0.3876852801,0.0747135795,-0.5778188549 +0.1461696917,-0.4424558259,1.8299467374,-1.4725559309,0.1776614966,-2.1793607198 +-0.5842738457,0.0181184516,0.4249395866,0.7181140222,-0.3318166331,2.0060460272 +-0.3514767097,-1.3793302010,-1.3442318006,-0.8181991154,1.7631750974,-0.2638613543 +0.0383334818,2.0818878381,0.5748390913,-1.6845929985,1.4138134468,-0.7509882353 +-1.1880137366,0.5855819252,0.0198947388,-0.0265453275,0.0240049549,0.1598262980 +-1.6805440069,0.0098068036,-0.1126843004,-0.1543973774,-0.7083382099,-0.4686580079 +1.8110056315,-0.8982515421,-0.1853972236,1.5106556940,-0.8663122916,-2.0338828590 +0.9477973544,-1.0308524046,1.2995939498,-1.0319990716,-0.1633851528,-0.7973186070 +0.4364908981,2.0582724473,-0.2742005014,-1.1473424784,0.8833269716,0.1575596825 +0.5114496521,0.0782996082,1.3136905169,1.6977256629,0.8522886858,1.8775914011 +1.2478167043,1.9547759761,0.9090843157,1.8305582023,-0.2812475860,0.0474545420 +-0.5664901767,-1.5288813900,0.0863410688,0.9917855771,-0.7660657230,-0.7139377067 +-0.3181894497,-0.7490957536,0.2366186446,-0.2434442236,-0.6332979192,-1.5808515696 +0.4743809290,0.3090081408,0.6886522333,1.3989375372,-1.3744032261,-0.3083817737 +-0.8780898229,0.0354019614,-0.9186367636,-0.8308500242,-1.1765088609,0.7943750245 +1.3602935594,3.9091719578,-1.4383323461,-0.4468332095,-0.6574955062,-1.0337447280 +0.4000238548,-0.0729730066,0.6294363465,1.3428537604,0.1323605426,-1.9735270223 +-0.7059475026,1.0818150288,-0.5035482180,0.2487615457,0.0107659603,0.1497439377 +0.1906633534,-0.4661489561,-1.7328381663,0.7965634574,-0.3866043758,0.1034394085 +-0.4261236625,0.0433801867,-0.8349311766,1.5213841840,0.3216975916,0.9601090917 +-0.2527141073,-0.9595669180,-1.1232099478,-1.4789572297,-1.7682026685,1.0866085091 +-0.0035553426,1.1516783933,0.5399332972,-0.3658825978,-1.0455942883,-1.5173270534 +0.6894109505,-0.2508048560,-1.5771593856,-1.9468902089,0.0888163612,-1.5104338236 +0.5918273737,0.4821456099,0.2201814435,-0.7465971372,-0.4669483524,0.1959555041 +-0.8110065663,0.9637677446,0.7719070726,-1.0886754152,-0.9291300286,2.3124247802 +0.7487957344,0.6138606303,-1.2452857726,1.4624990981,0.7211034192,0.4935045932 +-0.3698177375,0.4385171954,-0.8437128666,-1.2729561152,0.5292748517,-0.0976334253 +-1.6629394180,-0.0437726347,1.2517512785,-0.4294600813,-1.0786734936,0.0364557098 +0.5356287635,1.3679128091,-0.7516775842,-0.4308557890,-0.5596133833,0.8426201681 +-1.5687046174,0.4794245973,1.6094031731,1.5625523318,-0.3937905161,0.7153266490 +-0.2170615964,0.4716828373,1.4168838985,-0.5108551177,-1.3284610870,0.0806771238 +1.1110206543,0.0924512981,-1.0893506585,-0.3718661341,0.8314847232,0.8006576763 +1.2052671300,-0.7108565002,-0.4171419497,-0.5969024311,-1.5940543699,0.1411367216 +-0.3146329109,-0.7171853602,1.3051670737,-0.4226940352,0.9931175526,-0.6614542596 +-0.4139957991,3.0434708370,0.1229641514,2.4646627038,0.6341361831,0.0034336747 +-0.1066547025,1.0281641032,-0.6940296917,0.2303098735,-0.7813154721,2.2811849044 +-1.8360115000,-0.7537845730,-3.0369360609,0.9112043628,1.0097369011,-0.4067802497 +2.2112370809,-1.1690586851,-0.3323696085,0.3264913722,-0.4011340791,-0.7060736524 +-0.8954222488,-1.2932270541,1.0246058757,0.4792545779,0.4479802514,-0.6773016545 +1.5168722719,-1.1259537255,-0.4253811418,0.0182270513,-0.8879502546,-0.1543365109 +-0.2318585551,-1.5386327521,0.2097610318,1.9582472825,-0.2734936667,-0.2537046964 +1.2279660829,0.3933073897,0.5357865458,0.5497835001,-0.2250092357,-1.2008815294 +1.7934542977,-1.5127904855,0.6913155972,1.0361197011,-0.2890339382,0.8219999521 +0.5692161743,-0.5508791317,-1.3107824809,-0.6968130860,-2.3050605605,-0.2533684720 +2.0871146897,-0.4419027595,1.6237104970,-0.3835497949,0.6015451805,0.5526474024 +-0.9390581079,-0.4510519585,-0.2760571025,-0.8522843099,-0.3099257898,-0.0501580747 +0.6661210482,0.0589151485,-0.0418956235,1.0105445026,-0.2633349404,0.4760980491 +-1.0270457659,0.3354361904,-1.6881961071,-0.5200056551,-0.6173305806,-0.2071324379 +-1.2172594170,0.3792451695,-0.2622421795,1.4269857459,-1.4729028599,-0.9413573286 +-0.4357501932,1.3080840448,0.0326341486,2.0472364582,0.0497724523,0.4675907916 +-0.8847924817,1.3866771680,2.1546044040,-0.1777226977,-0.3011736281,1.4630989001 +-0.7524325904,0.9429777060,-0.0726247892,0.7570155395,2.2558068470,-1.3697571676 +0.5298758302,-1.4996129001,-1.5317451652,-0.0493324102,-0.2626672671,0.3993090225 +-0.5393092676,-1.7231103886,-0.4039733706,-0.9422666423,-0.5109841086,1.0495947415 +-0.4873732221,-0.0148185486,-0.2730098758,-1.3488812858,-0.3989219886,0.2174888441 +-0.3013485844,0.1648887811,-0.0835155048,-0.0924944500,0.0353216577,-0.2853887069 +-0.8554254700,-0.3608894475,-0.3982400078,-1.0686349042,1.3610645664,1.0093117319 +1.8669763501,0.5080495207,-0.4628156103,-0.5848663073,1.2237354832,0.4098022296 +1.1308503167,-0.1502441442,-0.9965141374,-1.6752095201,-1.9704164757,-0.4451217708 +1.2009883583,-2.1137146408,-0.6081299571,-0.9916185954,0.1409012712,0.1059298182 +-1.1046960974,0.0143665030,0.9343677272,-1.5574874379,-1.6304995697,0.9607652157 +-0.6166246837,0.3997186542,-0.2669064090,-0.1352999455,0.5548602250,-0.8139741895 +-0.3891760695,1.9556991972,0.8084467688,0.3113161852,-1.2380683388,-0.5121763960 +-0.2588528410,2.2292719384,-0.2945029992,0.4260854112,0.2452519790,0.9853431029 +-0.7036778521,0.0140679716,0.0303354921,0.1926679331,-1.1268260613,0.5026842569 +-0.6566840023,0.8263794572,-1.2103455490,0.1201769155,-0.1651787089,-0.0149380965 +0.9207194575,0.0098124926,0.5769556562,-0.7767375653,-0.2064010701,-0.4633051979 +0.2475401817,0.4823959950,-0.2984889052,0.9524258294,1.4111699385,-0.2124780439 +0.7263490806,-1.2627538693,0.3086477669,0.6210454749,-2.0309502823,-0.6085754356 +0.8562603848,-1.6741377120,-1.1096722966,0.6902146135,-0.4959993412,-1.0023591514 +-1.1000414136,0.2998048494,-1.4688724382,-0.3223796228,1.4990587919,-0.0278355482 +-1.3726599753,0.3429401132,-0.2823553613,0.5740467195,1.3858754499,-1.1749160462 +1.3837637914,-1.8110344149,0.9379230306,-0.8624551103,0.8025219859,-0.4062595659 +0.1847182957,0.5617484798,-0.8183807412,1.4402353767,0.3383604543,-2.3895371818 +1.1222421669,-0.8523897345,-0.2418453713,-0.9247643804,0.3484521461,-0.0743660697 +-0.6712054111,-0.1096530994,0.8784250424,1.1683452007,0.4843942125,0.3360951589 +0.3241066514,0.4272393476,-0.4278315132,1.5036928685,-0.0798338699,1.8649406306 +-0.6304409125,-0.5156758925,-0.2747636546,0.3966439953,-0.5451060379,0.1567533124 +-1.1376161294,-0.3147388101,0.5087759028,0.5769315869,-0.7955668645,-0.7132800834 +-0.7476438468,0.5315244182,0.5249617007,0.1322526076,-0.2125942858,-0.5120288512 +-2.5575768613,-1.0123091655,0.1923470503,-0.7847991054,-0.3907136014,1.7816434987 +0.0898822985,1.3741687927,0.1878121229,-2.2190634906,-0.6916917375,-0.8521812012 +-0.6536273246,-1.7285347619,-0.2993094887,0.1239795390,0.1397485235,1.3018111826 +0.0277510539,-0.8950408543,-0.1561100062,-1.9302387320,-0.0532106252,0.7086807088 +1.5465435269,0.5283679843,1.0856205584,-0.2576313274,-1.2806487168,0.1392187027 +0.5782619967,-1.5528318849,-0.6580653208,-1.1916940025,-0.7980019330,-0.2255822838 +-0.5100924442,0.4949377012,-0.4196800943,-0.4170766815,0.4298596698,1.6781968714 +1.2681132747,-0.1804061879,0.3353395215,0.0404778728,-0.3998009067,0.7115186970 +-0.2276560125,-0.5252432045,0.1871399463,-0.5400162811,1.1071643736,-0.7255151667 +1.4272608482,0.1205159168,-0.2475287532,-1.0192519931,-0.1152195912,1.2352514108 +-0.9823532119,-0.2470689970,1.4134906192,-0.1824448066,0.5848243732,-1.9636683432 +0.6306328357,0.4598773607,-1.2411852112,0.4744866483,0.8020047672,-1.3564678055 +1.1809722719,0.6153736267,-1.8954103898,0.4259002242,0.4495935376,0.6588809731 +-0.3659940694,0.6359575290,0.3380617326,-0.8774603377,1.0273616360,1.7343439429 +-0.4779211456,0.1348482607,-0.7083477070,0.4141085507,-2.3148838577,-0.2673177167 +0.4554107296,-0.2999776917,1.7745186276,-1.7924360071,0.3458158950,-1.7574423261 +-1.0151364946,-0.7995908833,-0.5655949165,-0.1132134925,-0.0210212032,-0.8465992867 +-1.7713257213,0.0584883929,0.4729365663,0.6859696077,-3.3620324060,-1.3132843297 +0.7557732373,-0.6027626416,-0.2154031827,0.3534526605,-1.0236978261,0.6837098885 +1.0205722008,0.3803199144,-1.3914981227,-1.1550369092,-0.6165506449,0.3357563981 +1.0741583074,-0.8951352415,1.0278102307,-2.1299612260,-0.4606170217,-0.0425820431 +0.0059764441,-0.0327579331,0.2722290502,-0.9612212717,0.2018840175,-0.4793487548 +-0.3862413896,-1.9331521977,0.9124592725,-0.0836291026,-0.7922112851,-0.0958635656 +0.2073397413,1.3896824649,-0.3759653373,-0.0402504995,0.0528930762,1.5322116195 +-0.9289467390,1.5345958332,-0.9494600337,0.6556296402,-0.2168766994,-0.4801553850 +-1.6880812136,0.7668381423,0.7741792821,-1.3834994151,1.4353042104,2.6287167128 +-0.9217569182,-0.1118683942,0.2294691125,0.4398016950,-0.3973522704,1.2496424756 +1.5604239503,0.8603119339,-0.4467562761,2.2298954779,-0.2382584447,-0.8442079514 +-0.6112578600,0.0335143013,-0.0558707063,-0.3647449453,0.0644332353,-1.2007723410 +-2.3398334022,-1.9725170684,-1.4386335948,0.8643591896,0.0314728944,0.4686878268 +-0.8682607679,-1.1628222070,1.0908999630,-0.0787503937,0.5335001908,-1.5866257298 +0.3860645470,-0.1797634980,-0.0836703934,-0.2459992024,-0.0047370323,1.4335846310 +0.0826482930,0.1076744423,-0.2267897408,-0.0748827365,-0.4451879009,-1.9925088182 +0.1403162572,-0.4001875987,-1.4680779629,-1.2529072583,0.3675557744,-0.2214985633 +-1.3213689468,-0.4787110108,0.2464726802,0.3705237830,-0.7942362089,-1.1602801385 +0.1109008220,0.8275470802,-1.0202822110,0.3422310022,-0.1121557357,-1.5868768585 +0.9937556156,-0.4901796746,-0.6929295049,0.4300532123,0.7235777403,0.8571382920 +-0.6527954444,1.0118288883,0.1505882074,0.8933374202,-1.1431276810,1.2548484058 +1.1092704014,0.7810317999,1.7701827253,1.3569615419,0.1683841628,-2.7035158650 +-1.1447411088,0.0194366680,0.7560886272,-1.7586315990,0.9518227065,0.0868489036 +0.5178515366,2.2795173831,-1.5703332639,1.7826643506,1.1952193469,-1.0432256695 +-0.2646085193,0.5840618191,-0.6546172516,-2.8005946043,-0.2990116754,1.1892415468 +0.6789015094,1.5431321952,-0.9600943991,1.8472248968,1.4795291495,0.7943775576 +-0.3765123975,1.1897454144,1.0208032385,0.3514972300,0.5714942110,1.1640652152 diff --git a/statsmodels/tsa/tests/results/resids_exact_c.csv b/statsmodels/tsa/tests/results/resids_exact_c.csv new file mode 100644 index 0000000..9985d4f --- /dev/null +++ b/statsmodels/tsa/tests/results/resids_exact_c.csv @@ -0,0 +1,251 @@ +uhat1,uhat2,uhat3,uhat4,uhat5,uhat6 +-0.5970431276,1.9644571186,2.8581920718,0.3336822851,-0.9942852808,0.5009863795 +0.0182019932,1.7543008581,2.2466917128,-0.0864473659,1.7501015883,-0.2719219510 +-0.6646218029,0.7882000432,1.3123982015,0.0291953651,-0.0183595554,-0.5588249004 +0.3041627028,1.4260297117,0.4013891725,0.4387285760,-0.6767949950,1.2156408981 +0.3080415611,-2.3612568438,1.3562373892,-0.0887524571,-1.0478225880,0.2279833245 +1.1102135466,-1.3355179523,1.5175137957,-0.2914457219,0.6309651010,1.5542159924 +-0.3750674840,0.6209127991,-1.4835375273,-0.8144600730,-0.7455396506,1.1478549803 +1.4734230995,0.2255282580,-0.7050370159,-2.4979692592,0.4537075911,1.1200774711 +2.0278429631,-1.4427300171,0.5403961356,0.8407341818,0.3140312594,0.8195137122 +-1.6149655785,-0.8089418562,1.3815810688,1.7898138934,1.9679042023,-1.3005530082 +-0.2755977630,0.5980026905,-0.9373441467,0.3815041911,0.3111338100,-1.2695995777 +-0.2975061740,-0.8749236050,0.1779066520,-0.2361575413,-1.1993712521,-1.2018225425 +-1.2825402275,-0.3577104145,1.8995942610,-0.7619536359,1.9261527400,0.2549977510 +-0.1950117688,0.0276080679,-0.4127830466,0.5021540396,0.8049308784,-1.4079837702 +0.0456334419,1.6337230347,-0.2030765577,-0.4451751953,-1.0269237400,0.2297868253 +-0.7064283511,-1.5944080013,-1.8457576875,3.3972990909,-0.8113905379,0.4031928346 +0.6869022133,-0.7487949244,-0.7002970827,-1.6540012043,-0.6685116236,2.1558559783 +-0.9056012206,1.6537578452,-0.0935723229,-0.4177424962,-0.7827922088,-1.0965771746 +-1.4108673168,-0.1526657909,-2.0860459175,-1.4300339212,1.8205676286,-1.3963866243 +-0.5002273043,-0.3399087504,0.2027621991,-0.7811584356,-0.6081202834,-0.5198160208 +-0.1966401225,0.2754314830,2.1606703618,-1.0252276657,1.0305200452,-0.3663237829 +0.9423540691,0.7666956830,1.6216312394,2.7315920650,-0.5669633942,0.1294828415 +-0.5032111555,-0.2136098372,-0.9624645465,-0.5073518362,1.8529743435,1.0464812565 +-0.0706422357,-0.5624932357,0.6417029559,0.1106822327,-0.5648899797,0.2273004765 +0.1555984072,0.1319017330,0.8041912071,1.5043778592,-1.1362093293,-1.4625115106 +-0.6829072554,0.1231105864,-0.7463346850,-1.7556051868,0.0182871309,1.3242897728 +0.4836822472,-1.1677156970,0.9267983681,0.1541236776,-1.4995756981,0.3342838502 +-0.3077717297,0.1065021989,0.5663413950,3.2375541811,-0.4121988713,-0.3936978961 +0.1422450005,0.1446017784,-0.2280636153,-1.5670003785,-1.3965176381,1.1626849759 +-0.5988298111,-1.4965152782,0.5431332398,-1.8950082750,1.6699521931,1.2370800417 +2.8746976404,0.7580957785,-0.7339595217,-0.6008727472,0.2385596845,0.1014095588 +-2.6700228960,-1.2704087440,0.5840693867,0.7222886974,0.0040762785,-0.5102429766 +-0.2782115122,-3.3234438676,-1.7934650536,-1.3785523950,-0.4061594951,-0.8366553692 +-0.6967148976,-0.0363622973,-0.2611968674,0.3129215170,0.3129386265,-0.1726092824 +0.0402046937,0.8792427681,-0.5331476333,-1.0733083099,-0.8044108072,0.5838434960 +1.5180370949,0.2334318433,-1.3171921124,-0.4643530942,1.9215806538,-0.0058033158 +0.7563656945,-0.5134812446,-0.2559645287,0.2040444357,-0.6218164834,-1.0029930496 +-0.6249147390,1.9404407009,0.2665262803,0.5597759687,-1.1149901482,1.3367894108 +0.4744339282,-1.7097702633,-1.8645512156,-0.0736846579,-1.3252181044,0.5140586604 +0.9158104137,-0.9644630048,-1.4817564666,0.9846826489,0.6392910454,2.5267241117 +0.5364609746,-0.8141007853,0.3372000793,-0.3762203642,-0.2293680809,-2.6645523947 +-0.0734802478,-0.6220087695,1.4526685262,0.7493570727,0.4078787234,-2.6336935317 +0.0587578744,-0.8699847497,-0.5242355555,-0.4794854495,-0.4858072680,-0.7477007545 +-0.2407166951,-0.3203468407,-0.3689658970,-2.4165529703,1.1224721133,-0.9147506030 +0.0744741105,-1.0663502156,0.2018525004,0.1787101865,-0.7149062503,-1.1498034333 +0.2444709563,0.6730306720,0.2144755307,-0.2282144195,0.0350468684,-0.1805236338 +-0.2390260915,1.3909419529,-0.5007056884,-0.6534495825,-0.0847841237,-0.7985575032 +0.7188959090,-0.0421098279,-0.2721075638,-0.7473534301,0.8649118003,0.5212385523 +-0.5015783857,0.6049928771,0.4752398468,-0.5198150247,0.0035904764,-0.2662702383 +1.0197207272,-0.4937799065,-2.0519793793,-0.7458038747,0.9733469781,0.1493912332 +1.5174292591,1.5356995338,-0.7742674121,1.2218531030,-1.1312514329,-0.4464500577 +1.3483923243,2.1025617736,0.7357470171,1.0915233924,-2.1303056403,-1.5953693831 +0.4075515335,-0.4022549382,-1.4197719512,0.7209796745,0.4593709476,0.0341408612 +-0.7568619442,-0.4619157424,0.1930412082,0.3217207379,-0.8859414115,-0.4786778739 +0.5681134676,0.4010450399,1.3768139995,-0.2865830408,0.3113651021,-1.1179661508 +-0.0298286223,1.1353451283,0.8122675983,0.7421053835,-0.0951124157,0.3385079057 +-1.6231637691,1.1500085978,-0.1695253546,1.5749876901,-1.2967601255,0.8216667446 +1.3233252145,-0.2943328747,0.0824832495,0.5927644624,-1.0091359254,-0.0784046669 +1.6262580824,1.3479676090,-0.7688615769,0.5870165097,-1.4815829042,-1.5492257821 +0.6818028263,0.4563877043,-0.6063830759,-1.0050973742,-1.9011574220,0.5252749698 +-0.3297340633,-1.9878290183,0.1930280850,-0.7056995477,0.4035505567,0.8734846677 +0.8422795969,-0.0686086486,0.8450008200,-0.6150070433,0.2107718492,0.7923768106 +0.9455943990,0.0316159426,-2.1369601254,-0.0585718305,-1.2734388108,0.2291744885 +-2.1802948840,0.6068394707,-0.5245701971,-1.3260769199,-0.9834878791,-0.7072045861 +-1.7701348833,0.5367533137,-0.1957437854,0.5995379852,-0.6187486557,-1.5745844609 +-1.1176897355,-1.6526597428,0.2334153137,1.0604557797,0.9357929297,-0.3050253953 +0.4175794484,1.8303196766,0.8490840727,0.7817106891,0.7110343481,0.7133295932 +-0.1964943002,-0.4818922767,1.1130594091,0.6450738934,0.6575107120,0.3145902913 +-0.0514206178,0.8556366912,-1.3999812724,-0.2886114710,0.7920136166,0.6960829080 +-0.1901124543,1.4712387562,1.5363387733,-1.0025951076,-0.2843685223,0.9100409074 +0.8109179338,0.3238904846,0.6256522145,2.2061012187,-0.2739236756,-0.7457566458 +0.3913362496,-0.3413491593,0.1478906149,-0.3916413989,0.3251831385,0.0245097168 +-0.8823778411,1.1926748571,-0.6341592270,-0.5589796229,-1.0518769862,-0.2110828624 +0.4418106002,0.0396072932,-1.5983280145,0.1346865785,-1.4612221719,-0.8379460255 +-0.2573625300,1.1205792460,0.7964352244,-0.4552514273,-0.7330815587,0.6475908135 +1.3483117455,0.0788662442,-0.6250567532,0.4237556024,-0.2799573282,1.2334454851 +1.4571156134,-1.4172699378,-1.3825567026,-0.5324836065,0.6324662014,-0.6792444896 +-1.0968867604,-0.1579061348,0.5027972539,-0.5868140914,1.0160881336,-1.3805164027 +0.5033360438,-0.6949098258,-0.3353555331,0.2961763584,-1.4418738692,0.9716975289 +1.3377995909,-0.6933694389,-0.1297336949,0.3198599819,1.0700205073,1.9319119128 +-0.4893687646,-2.1916423650,-0.5084693605,0.0094820413,-1.5954583614,-0.2415163462 +0.8407375180,1.0851282562,0.9076087022,2.0858882110,0.8550737023,0.4121428611 +0.2329189800,-1.9308292403,-1.9471066316,-0.3333486039,-0.6179148116,-0.4876903850 +0.7887634684,-0.5066737936,0.0140685340,-0.2154659055,0.6856316133,-0.5733476235 +1.2876420408,-1.0017008922,0.4047785308,1.7332830849,-0.7434175661,-0.7506038467 +1.3831933237,0.2610588894,-1.0252886762,-1.6814656007,0.7577395814,0.7010080753 +-0.1390007449,0.3206198470,-0.3233859492,-0.5927685850,-1.2963773187,-0.0870908365 +0.0764508525,-0.0681337595,0.4492050165,-1.2001505903,-1.4631666187,1.6555568808 +-0.4344763776,-0.2568228099,1.1778776146,-1.0003945433,0.3741289770,-1.6510829465 +-1.0371316821,-1.5592859356,0.8159671789,-1.7755574720,0.0434710248,0.5449048695 +0.3444787655,0.3090727676,0.2452982560,-1.0989779141,-0.0480727359,0.6981980650 +0.1919641040,-0.3204360708,0.3328934650,-1.2451886319,0.6561994334,1.8427653499 +-1.1720978846,0.7904723055,-3.3362351111,-0.9411742116,-1.2802287987,0.6515088935 +1.1396206811,0.2748270617,-0.5175966998,-0.0735431223,-0.0684056295,1.1448528646 +-2.0195769715,-0.4475420741,-0.3429326238,0.3761768981,0.0537397325,-1.0118614556 +-1.7267046951,0.7766764222,-1.1638093304,1.1458643850,-0.8626962230,0.6895731392 +-0.2814854762,-0.2783129171,-0.3682718240,-3.0456779822,-0.2828212693,-0.2073910030 +0.8362030629,-0.2196532998,1.0696347425,-0.0284164744,-0.9862793221,1.6659680149 +0.8386993754,0.6600397414,-1.0336573298,0.4562314613,-1.2356041607,-0.9510741752 +2.2068096979,0.5415287036,-0.0255683679,-1.4552977819,0.2970715588,1.0732996894 +0.1796356212,1.1528413269,0.0237541456,-0.5372340392,0.4941692266,-0.3645515480 +0.6409734352,0.0604139515,0.5078790903,-1.7618529635,0.3250273463,0.9493556626 +-0.1460513305,1.3828333196,0.6312418683,1.9103277546,-1.8952113459,-1.4503796502 +-3.6857422734,-0.0841685337,0.9063497823,-2.1378477070,-1.8427389423,1.6708728777 +-1.6337658056,-0.1361837568,-0.7428804647,-0.0522557625,0.2745812822,1.1750029750 +-0.7140781271,-0.3864649626,-1.5664856393,-1.0558627049,-0.8611850252,-2.0717990875 +-1.0082497842,-0.9240520934,1.3600650590,-0.2255766020,-1.4888105086,-0.5233934788 +1.0136010064,-0.1609410773,-1.4104734602,-0.8377364876,-0.3904790472,-0.2556220507 +-0.9235316724,-0.3380407315,-1.4787867585,-0.2785107309,0.8689524762,0.1419894719 +0.9725390021,-0.6154797240,-1.5491420218,-1.0885464758,0.8246587658,-1.4542529829 +-0.5418985311,-1.6203629923,0.3603642343,0.2084435025,0.2110502977,2.7283800276 +1.1329756393,-0.7382376568,0.6765107641,-0.6703906994,1.3323909189,-0.6675389623 +1.6999369960,-0.0977837869,0.0180434354,-0.6838520359,0.6449245873,-0.1078982923 +1.3564030901,1.3275009700,-0.0577451096,1.6811608990,1.7515181438,-0.3611869398 +0.9469061220,-0.2135540585,-1.6567969585,0.3088311232,-0.4902417764,-1.1306865884 +-0.1841890502,-1.4853870850,0.0856503011,-0.6379423853,1.8309828227,0.7852357487 +-1.4536915741,0.0632123465,-1.8234177941,1.6595057084,1.1199326538,0.7202726057 +1.4088346446,1.9391106968,0.9451277496,1.2107037403,1.1795972052,-0.5737558057 +0.7655504535,0.3327495520,-0.2048871911,2.0356170778,0.1359660412,2.2997673250 +-1.4104923594,-0.2348042172,0.6975444611,0.5913615874,-1.3257257753,-0.7218283404 +0.8337126103,0.8161613886,0.1639138278,-0.8210989482,0.3452162615,1.1874970675 +-0.4356284910,0.5187057069,0.3577519398,0.5130210011,1.6999147781,0.8832991404 +0.8846465060,-0.0051902623,-1.2255699057,0.0192750213,0.0062405495,-1.1207934975 +0.2369079064,0.3152940534,-0.1138471334,-0.3799238761,0.4837601417,1.1911298640 +-1.4328148841,-0.0354154803,0.3611111888,-0.6364231138,1.1598812716,-0.9336430149 +0.4256491501,-0.4701956609,-1.8513455515,-1.7049516090,-0.1402054173,-1.1659169047 +0.4148241328,0.3010553687,1.1324110281,0.1307862565,-1.5218769161,0.6247000156 +0.6070389717,1.9750231781,0.2070679107,2.2424672508,0.2162197184,-0.2690549140 +-1.7752595172,-0.4413987581,-0.3017539787,-2.3063680339,-1.6303755410,-0.8112068999 +0.7811115012,-1.4894385174,0.1936515932,1.6168949288,1.0209677009,-0.5244542530 +-0.6734067364,0.2657777140,-0.0038243417,-2.1283693967,0.5399643755,-1.5613418114 +-0.2174957932,1.9957083397,-1.3199720918,-2.2776071044,0.8752264806,-2.3067446324 +1.0237897515,1.3155917492,0.2739655446,-1.5709450773,-0.8176618305,0.4567617557 +-0.7471269751,1.6420611482,-0.0489931433,0.6869780486,-1.0269445719,-2.1286931543 +1.4273277054,-0.8369015853,-0.2473552077,-1.0403942178,0.8533151937,-1.4161444193 +2.3053408143,1.4644570088,-0.4750353592,2.3704727317,1.6905771157,-1.6750137235 +-0.8417034145,-1.6563925000,0.4536428058,0.4382360847,1.3272058716,-0.0161537412 +-0.1334965047,0.0348737044,2.6390318650,-0.5154150238,0.1286760028,2.5013499985 +-0.6377388045,-1.1059372897,-0.9406951711,0.9965841407,0.9261273877,-0.6615435409 +-0.3044004944,-0.6419936851,-0.8493417956,-0.8810166806,1.2122951406,0.4227747943 +0.0927762800,1.1187914870,-0.3282395877,1.9232104950,-1.5108539569,0.3924326075 +0.7696331260,1.3128863032,0.1169529873,2.1307136518,0.7106151747,-0.7394879661 +-0.3169533695,-0.1346665759,0.9996726166,0.6566449417,-1.3199045902,1.9146994135 +1.1209568623,0.3780268564,-1.1278817755,-0.0834756235,-0.3652882095,-0.9545461033 +-0.1424351862,0.3947473673,0.0960760957,1.8278147469,0.8827012037,-1.3460305046 +-0.0460696301,-0.1348995761,0.6021925582,-0.1817705347,-0.6821234444,1.1924973402 +0.0794128789,-0.6782448784,-0.9737902055,-0.2084556001,-0.2846151577,-1.0247814478 +1.0396479644,1.3722297706,0.9341845449,-0.6062307263,0.9081820658,0.8416308138 +0.4180619954,-0.0338592385,-0.8266233510,2.0678630552,-1.4185931428,-1.6437071063 +0.1006336771,0.8545344223,0.5923130449,1.7003825860,-0.8028027195,-0.4544195127 +-0.3652576943,-0.7747206319,0.4987438114,0.1485055174,-0.1898679822,1.6070099733 +0.0295764170,-0.3530289029,-0.9733870283,1.8166544249,1.7111368028,-1.3277793325 +0.2832641023,0.8738000118,-0.1992883675,0.3223353066,0.9258268620,-0.2230200504 +1.5255399509,-1.1741505018,-1.6548952594,1.1492836774,-1.3994035634,2.1483503956 +-0.0408371910,0.8899494695,1.0347682699,-0.4528970387,1.1073613208,0.4952797226 +-0.7490403558,0.7502145281,-0.3304993290,0.2717700198,-0.3568045607,1.7485517770 +-0.2088213611,-0.7140297829,0.0793484784,-1.2062147663,-0.2922395886,0.3779819558 +-0.2495819968,0.3352199964,-0.1203674115,-0.7606579127,1.2082274335,0.9937045976 +0.2481018030,-1.2799372351,-0.5358000415,-1.0659413994,-0.8745863760,1.9176582287 +-0.6318424808,0.3281309586,-0.5961626378,-0.5396088147,-0.1263077738,-0.5198788140 +-0.7303715198,-0.2569322658,0.1568709631,1.9514817200,-0.7364148890,-1.1022168783 +-2.4520769710,0.1069101303,0.1698165254,0.6942051151,0.8281460028,0.8191075683 +1.3978509400,1.0023270488,-0.2630521366,-0.5830565394,1.6463523933,0.4771658979 +-1.0767718403,0.4595819916,0.2872482286,-1.6981461284,0.0236185317,-0.3954284632 +0.4651573703,-0.6799042741,-1.3452905761,0.3304140080,-0.1454021729,-2.0146310976 +0.3926464230,-0.8897315892,0.2017895760,-0.3857399256,0.8294236188,-0.1000763585 +-1.2711964311,-0.2252652677,-0.1010781965,1.0126028625,0.6927958655,0.9508566267 +-0.0745022617,-0.0001941124,1.3921424253,-2.4328326521,-1.4652483486,0.3846345342 +0.3307660153,1.3827349811,0.5659697128,0.6993403677,-0.0803432645,-0.7980560932 +1.4395988116,0.4074995902,1.0042474786,1.0907817954,-0.5195176924,0.6740252299 +0.8497971310,-0.1023099568,-0.8369796404,2.8315243105,-1.8466679869,-1.3201306883 +-1.9802586837,-0.3026898409,0.0735763039,1.2480455448,0.2823876789,0.7240756880 +-0.8214792991,0.5728084888,-0.6355821370,0.8955002571,-1.6009133913,1.0827795062 +-0.6226660988,-0.2113479451,-0.2077281285,0.7056288442,0.7282736337,-0.3524923630 +2.0156785834,0.4261317390,0.4354259404,-0.4135615335,0.7043689458,-1.0010273054 +-1.1938678024,-0.8207651393,-0.4750570852,1.3841687075,1.4371266232,0.4323277221 +2.2215920189,-0.0467132122,-0.3308847291,-0.3737980634,0.3733913374,0.5903136898 +0.3681771160,-1.0535392127,-0.6731617493,0.3385852544,0.4905619093,-0.0140872327 +0.0205557877,0.0550704484,-0.6981519338,0.9164293869,-1.0422603599,-0.0400766508 +-0.5570507782,0.7516698280,-0.4000586000,0.5552754565,-0.4110633488,-0.9425706790 +1.7169994409,0.5989763398,-1.7150610826,1.2734600165,-0.4379423364,0.2442528429 +-0.3734919114,0.6851968175,-0.1161592764,-1.2465332445,-0.0133770906,-0.9746076476 +0.6896090510,0.4537162423,-0.5098606858,0.0838134122,0.2215448640,-0.9338181008 +-0.2099379540,0.0266792409,-0.3662486539,-2.2541100586,-0.8204512381,0.7611786034 +-0.9541807107,-1.4262513478,-0.3105062140,0.0570837481,1.1517387198,-0.2610892939 +-1.7998439732,0.1541591827,0.3129387559,-0.0795165036,1.1508103114,-0.4006190215 +0.0179155277,0.1791117886,1.4076575419,0.4558639749,0.7469106230,-0.7259696501 +-0.6138474833,-0.2423150155,0.1448101820,-0.7990435746,-0.0279480236,-1.0117087121 +-1.3626968813,0.3134593972,-0.9013476352,-1.0759731343,-1.7589526155,-1.1135062224 +-2.1358541760,1.0517529184,-0.2649633538,0.3500761332,-1.6815056661,-1.8841675164 +-0.2732300363,-0.3692284382,1.0570174341,-0.2393173079,1.2547959517,1.0756363615 +-1.6862703385,-0.5369078921,-0.6369242805,0.0323463577,0.4108922020,-0.8027437652 +0.1397952975,0.4125397300,0.8116024820,1.0015275666,0.2714761759,-2.5902677539 +1.2800250774,-0.2924960257,-1.3739783929,0.2405021506,1.0444337048,-0.7232994999 +1.7640236604,-0.4289971973,0.7450214645,0.5901412879,0.5279407487,0.8907023481 +1.7501469387,-1.2793636115,-0.7388995388,0.0690156553,0.0097405802,1.4064427134 +-0.1588699363,-1.0513261766,0.0158276195,-1.1994590635,0.2634631013,-1.0082328908 +1.4179499206,-1.0327145289,-0.6527251747,-0.2057569002,0.1497138195,0.1749424460 +-0.1674403107,-0.4211908380,0.0545002618,-0.0034162811,1.0609715609,1.2897029422 +0.5478829553,0.5344159002,-1.8956191514,0.1652145444,-0.3060729049,1.0614935376 +-0.6972611849,0.5745465349,-0.4806010650,-0.4431365401,-0.2385344545,1.2423015750 +0.4170578841,0.3684011031,0.8689572007,-1.4277039840,1.0263180218,-1.1333234801 +1.6047844579,0.6387872114,1.0336837445,1.6093993672,-1.4639886159,-0.8982776163 +0.9084848368,-1.0316255096,-0.6523623006,-0.5171643169,-0.2307658021,-1.8186180420 +-1.0691311273,1.3411372194,-0.1362275714,2.3951997078,0.3063366590,-0.1598231567 +-0.1594467413,2.4700088685,-1.2902530098,0.7283323535,-2.0246034009,-0.8767294071 +-0.6208824069,-0.6707878277,0.4250705465,0.2505395447,-0.4972287407,0.0326843988 +-1.3227916249,0.7401988506,1.3245850449,-1.2859072015,2.3109403148,-0.2619295607 +-1.4277892392,-1.1971949997,1.1866510792,-1.6231891964,-0.2206031215,0.4679058263 +1.6506475833,0.7822523697,0.4685356907,1.8734497391,0.8920071168,2.1613011439 +0.9127046346,0.5193312047,0.8944519172,1.0416669732,0.6268382310,-0.2955578938 +-1.7506028990,1.1154420981,0.5385802794,-0.7407154146,0.1399457702,-0.9221036559 +-1.0312855817,0.2960087960,-0.6126117053,-0.8785785087,0.8049976920,0.3505285777 +0.7040949864,1.0669821155,0.2027328834,0.9724814437,-0.0064729835,1.1121459185 +-0.6724445359,-1.3200321023,0.0108409239,-0.7409356830,0.3716778126,-1.4674551200 +-1.1196089902,0.1887134767,-0.2999337558,-0.1625181957,0.6120763629,0.0132213140 +-0.5910231363,-0.3080587139,0.2990054750,0.2504683844,0.4246433649,0.1831549931 +-1.2800018569,-2.0494955036,-1.1357830616,0.4875943248,1.2861469708,0.0362277151 +-0.8171409789,0.3226359088,-0.7380576527,0.4892498489,0.2283417157,0.4451909641 +-0.0402475420,-0.2484413130,-0.6408356539,-1.1785325637,0.5823003986,2.1822563629 +0.7259021694,1.3331227416,0.2669347700,-0.0772869213,-0.0679861755,0.4012839360 +0.5604639195,1.0802546328,-0.2652451656,-2.9399114367,1.4630189441,0.1901286936 +-1.4171781222,-0.5044145917,1.8442119141,0.4190027434,0.1832869663,0.8541291226 +1.0680050772,0.5036902866,0.3547553156,3.6456233962,-0.8100558715,0.9226095939 +-0.3042454694,-1.8976955112,0.3532691641,-0.1916636207,-0.0753872894,0.4536988019 +-0.6512490544,-0.4032090178,-0.7525208960,-3.0083376522,2.0060822340,-1.2628688071 +0.5065533937,1.1439543588,1.2073612510,-0.4448538043,-1.1900590126,2.0862142834 +-1.5527840959,0.0043282083,0.2409690372,0.5274113259,-0.6138046722,0.3453588486 +0.9161463795,-0.3131544045,1.2232032816,-1.8285927811,0.9955628148,-1.1910306337 +-0.7714986061,-2.0777237007,1.0536951282,1.2016643362,-0.7239032911,0.8684202376 +0.8021314723,-2.2515879086,1.2745807907,-0.7980714505,-0.3571583443,-1.7821450445 +1.5390533021,0.0565577067,0.3332554058,0.5881620129,-0.7325098313,1.8843236245 +-0.8313849011,-1.7561074662,0.5939412040,-1.6180884601,-0.9420944551,1.8843809082 +0.2446278553,1.2329048784,-0.3398292738,-2.9634602546,-0.0645858479,1.1080505945 +-0.1949706130,0.3044473230,-0.8345102768,0.2856082181,0.4019392759,-1.3058739290 +0.2492237720,1.8779287520,0.8369059500,-0.9887666597,1.7562504632,-0.0060916447 +0.6562907872,-0.4703283927,1.0359201419,1.9163817545,-0.0528805817,-0.8103226172 +-0.5514660716,0.7624900677,0.9595106362,1.4577229401,0.3766069911,-0.2956107877 +-0.8984367964,-0.7552247488,-0.4322982493,1.5841627751,1.7671311098,-0.4313412521 +-0.4827093377,1.2875925935,-0.8314207724,0.6394334802,-2.1969883903,0.3348063324 +-1.3043642650,-1.4976414067,-0.0924965644,0.5180522013,-0.6203046507,1.1022608092 +-0.2982226737,-0.5813375780,1.3702563403,0.7390508352,-0.6151849706,-0.7711008212 +-1.6242819707,-0.1316135027,0.3998850173,0.0370333587,1.3034335052,0.0659296197 +2.2173655546,0.3528905441,-1.1387912477,-0.5222782244,1.2257439440,-0.6912874520 +-2.1592264237,1.3140633923,-0.1401834447,0.1051707742,-0.4159006088,-1.4188288959 +-0.9378440991,-1.2792693278,-0.5417741431,0.1537519405,0.1262690351,0.5975162642 +0.7154589499,-0.4995606327,-0.2898683286,-1.1643167185,0.4422724959,0.7407248814 +0.9224622886,-0.3948156070,0.7481846099,-0.4650743378,-0.6175096000,0.1731187469 +0.3842094796,-3.2824482082,0.1299513635,1.3052091945,-1.0710189251,0.9611999243 +-1.0324299367,1.2118891286,1.0702407218,1.6918980125,-0.1971999343,1.8706281041 diff --git a/statsmodels/tsa/tests/results/resids_exact_nc.csv b/statsmodels/tsa/tests/results/resids_exact_nc.csv new file mode 100644 index 0000000..9b35657 --- /dev/null +++ b/statsmodels/tsa/tests/results/resids_exact_nc.csv @@ -0,0 +1,251 @@ +uhat1,uhat2,uhat3,uhat4,uhat5,uhat6 +-0.2047076595,1.3940722262,-0.7618372134,-0.4064523618,-0.9835047174,0.6143504692 +0.4320838837,-0.3455406434,-0.6670905817,-0.1189901168,0.9254493610,0.6210238496 +-0.5096195108,-1.3111654830,-1.7778579702,0.3584445303,-0.5091036181,-0.3345605429 +-0.5396230974,-0.4178846116,1.1813562109,0.7589005653,-1.6248554981,0.6320604181 +2.0098643595,-0.1789029452,0.2211447696,1.1684847509,-0.2758914231,-0.2959574480 +1.2709887256,-0.7759513773,-1.2424911223,-0.7253916916,0.3918998569,0.9818126124 +-0.0171440436,-0.7308450419,-0.8974420734,2.0089387498,0.6212542485,0.9884987186 +0.2141023632,-0.2530641419,-0.0268375715,-0.1436132264,-0.0490454461,0.2362946064 +0.6937806696,-1.5291444672,1.6164250675,-0.8456182900,2.1770966325,0.6699376936 +1.1482776291,0.6494431187,-0.7328696164,0.2935466599,0.1474127099,0.1410878504 +0.8699510318,-1.1875417504,-0.8202661728,-1.0014779666,0.8989275326,1.7124755784 +-1.4326497468,0.9919496849,-0.9742229629,-0.9026181683,-0.6312073760,0.5291111671 +0.2869569982,-0.2079331898,1.0802967062,-0.1784951874,-0.1732826616,0.7402262292 +0.1614765783,2.2269947281,0.5261902275,0.5815151196,0.4686171734,-0.8053661441 +1.3182917243,-0.8841228774,-1.3015784923,-0.3874651459,0.2959072014,-1.2049955699 +0.7617307875,-0.7936263471,-0.2027282619,0.6303738871,-1.7185410217,-0.7465358760 +-2.1056696340,-0.5214487220,0.6287097462,-0.6087998795,0.4139707602,1.8993566764 +-0.2960698771,0.4606380223,0.5981362751,3.2763384093,1.8268337735,-0.6829172285 +1.6724608152,-0.5329217537,0.2095470930,-0.8292457663,-0.4925324988,-0.4200628420 +-0.5366879935,0.5373928201,0.0724274707,-0.7368641806,-0.3178502146,0.4096613289 +-0.5267484576,0.3567899695,-1.2362395784,-1.6598227620,-0.1248158141,0.7245523292 +0.4870251302,-0.0003425296,-3.1862457425,-1.2276826148,-0.3622850442,-0.7207050594 +3.2172556724,-2.5672091918,-0.1179121622,3.0356075234,0.0684246861,-0.6214041116 +-1.2532436593,0.1223403754,-0.0603538258,1.3417688171,0.5154230149,2.3396539632 +-0.5661229629,-0.1212960141,1.2126233609,0.5984719988,0.5544025413,-0.3135168367 +0.0916446522,-0.1749277659,-1.6111675093,-0.2429335180,-1.7828699426,0.1845640907 +0.2790834614,-1.3129124820,0.8629622717,0.5988984163,1.0449345530,0.1496707615 +0.4858449194,-0.7907470022,1.9762941531,2.1195720705,1.5726060391,-0.2129576149 +-0.0534045071,-0.2640903741,0.1672041788,-0.9955798925,-0.3045947162,-0.7742785866 +1.3183137022,-0.4106498101,-1.2256416271,0.3184505630,-0.0632474578,2.4133027759 +-0.8328608363,-0.0903151434,0.5296982250,1.5177710751,-0.0495809494,0.6752910022 +-0.8183166463,-0.2668017401,-0.5833018328,1.1863042942,-0.1234213284,-0.2468830422 +-2.3487089624,0.0969209405,-0.8019065445,-0.2116797666,-1.7384107242,0.3302297281 +-1.6913289208,-0.8501108390,0.0768708971,-0.1200069498,-0.4471985418,0.2714728080 +-0.6861438378,0.9131357710,0.3732470167,2.5596941091,1.0942952117,0.0787483645 +0.7140797305,-1.1641924859,0.2028127773,-1.5521158386,2.2497674269,-0.9995511492 +-1.2075353967,-2.5363528958,0.9254627508,0.0302964310,-1.0894299296,-0.3771235690 +0.2801346114,0.9513538897,0.0001161312,-0.9712862129,0.2530552378,2.4503680429 +-1.0093282435,-0.8966740866,-0.8273010412,-0.6179529516,-1.1275407315,1.6331053331 +0.4746731597,0.5066534705,-0.3880930642,0.6988719655,-0.2464931700,1.1859349404 +-2.3261202921,-0.4111637784,-1.1715211412,-0.2363823482,-0.9990048275,1.2889631913 +0.0224811287,0.5266203431,-0.7813533997,-0.6262688538,-1.5484434888,0.9197430469 +-1.4612021847,-1.2360266585,-0.6930432328,0.1456047888,-1.0974491651,1.4354745520 +-0.7711884631,0.6630386647,-0.7408141640,1.7684289450,-1.0399209284,-1.3046326756 +-1.1582608493,-0.0592082701,-0.1532362927,-0.3177632829,0.5370736674,2.0378671235 +0.4799784338,-0.0970648616,0.0972408868,-1.1262192850,-0.0304610092,-0.7405410286 +0.4581923811,1.2612190605,0.3707443171,0.2612773015,-1.2757458071,0.0253646962 +-0.6924809857,1.4544120307,0.0405914968,-1.5712198376,-1.3072989235,2.0715367664 +0.4337353682,-0.3143978483,0.1045872422,-0.9694692257,-0.9883616982,3.5728136791 +1.3739510630,0.9226771587,-1.0234355368,0.8731322791,0.4165022701,1.4531675298 +0.0167732128,1.6442966450,0.7650708727,-1.5508904664,-0.1871395343,1.2900691387 +0.2431650695,-1.3577222975,-0.5015929718,-0.4953136202,0.5753213374,-1.3786600125 +-0.0449578442,-0.4683393783,-1.0707534116,1.2467469702,-0.0288522649,1.9727894398 +0.9950156649,-0.5556685071,1.3630125090,-0.1417279054,-0.2566037949,1.7964011177 +1.2434183888,0.3022603212,-0.6377742980,1.2564053519,-1.0883649686,-1.2148085601 +-1.0356874807,0.1195753940,0.4831256009,1.0407742865,1.3062949986,-2.4492332709 +-1.5376178829,1.4219420047,-0.9523166355,-2.0771478992,-0.4094520039,-2.1962411117 +0.0923245819,-2.1963076088,2.0823457055,-0.5905922915,-0.6356547923,-1.2044212343 +0.7698304941,-0.8211642489,-0.6625787536,0.4264337417,0.8988141155,1.7104232486 +-0.6892483068,-0.7081522281,0.4809908468,1.1207900043,-0.4596496759,0.6503333204 +0.9095537700,1.0843342250,0.4561338270,-0.0775173820,0.4462375541,-2.3748533120 +-0.0684015261,0.8790417743,1.7613512404,1.1737133872,0.9694611456,0.6940192709 +0.0516317191,0.1260881457,1.9795831186,0.2576829775,-0.9177071744,-1.2561505453 +0.6504828812,0.4384814654,1.0370771069,-1.6954610321,0.4787391040,1.4848624517 +0.7996131227,0.3604824232,0.5907829203,0.3499053805,-2.1438609357,-1.1054579759 +-1.0341072182,-0.4698506672,1.9307251878,0.5513125683,0.7743797928,1.9177389460 +0.0084132213,0.3134080753,-0.8316118187,0.0350316880,0.6740901823,-0.8885692816 +-2.3231670929,-0.4959108335,-0.0336031977,0.4309164058,0.4779216890,-0.5324174051 +-0.4887187899,2.1095101203,-0.6419890733,0.3026549026,-0.5892372759,-0.1007103927 +-1.1415391224,1.3908293675,-1.3436733894,0.8617850916,-0.7957710585,-0.5134496732 +-1.1786705738,0.1044206414,-0.1529017769,-1.0510615863,-0.3121727050,-2.0683736203 +1.2342215798,0.6785464670,-0.3774094130,0.3428728966,2.4847161086,-0.7180292295 +0.7371728224,2.0693865625,-0.6788282588,0.0354305731,-1.1957758288,0.5680192225 +0.7010238874,-0.1717954656,-0.2411502351,0.9635491986,-0.6574118607,-1.2182359456 +0.9685331988,-0.9293953313,0.3067092744,1.8256473994,0.7535271323,0.4660398645 +-0.5752586974,0.0986205067,0.6913787793,1.5847767637,-0.3424126119,-0.0084028498 +-0.6125651990,1.1722364988,-1.3966944706,-1.3184434723,-0.1135291286,1.3189816196 +-0.8997817437,-1.4500809895,-0.4343183589,0.2794996078,1.3708248535,1.1873802150 +-0.6573272152,-0.1234025563,0.1025908745,0.1312776411,-0.3725040314,-0.5189419193 +0.2958189169,-0.8436987523,-0.4760245726,0.2722666858,0.3313235411,0.6036000287 +0.0746948866,0.1605263845,-0.4350690686,-0.5488079310,-0.7280734333,-1.0697440364 +-1.1295189141,-1.5560814995,0.1394089135,-1.5773035703,0.1008449486,-0.6964936341 +0.9156261629,-1.0888119201,0.0849878787,-1.5798205744,-0.7231216659,0.7656609174 +0.4087241368,2.4887512439,1.0464983388,1.6155900101,1.9266007969,-1.8967147247 +1.0079287209,-0.5235547792,-0.1017747896,0.7463459045,-0.2416501059,2.1579199636 +1.7502339842,-0.5570435758,-0.5358552973,-0.6016886501,-1.8805252571,1.4017961850 +-1.1434708973,0.5877246516,-0.5024454871,1.1184488472,-0.5197454171,0.3426057366 +0.8644887958,-1.1257241625,-0.2435653767,0.5189657414,-0.0360723095,-1.1887422750 +-0.2383519863,0.5607917395,-1.2147260621,0.0772990723,-1.6421889584,-0.3534579686 +0.8951540955,0.9494193010,0.4625655195,-0.3890588736,0.0627138243,0.3608617519 +0.0858346521,0.7542339988,1.5369991428,0.1183106517,0.9090053794,-2.5157781480 +2.1230821498,-0.7566950950,0.6239566412,1.4153741169,-0.3503612550,0.0592412758 +-0.3117292325,-0.8869537788,-0.6681180044,1.0384456533,1.9433026338,-1.5096420380 +1.9485584820,1.3749574347,-1.0698346235,1.3268318171,1.7799326619,0.5456364152 +-0.1889609536,0.0797928912,0.1639824917,0.5362350191,0.5191880517,1.3365681247 +0.7177171509,1.2572091702,-0.1175803597,-0.6898367816,-0.2267238827,1.1453279819 +-0.0285699873,0.6421265135,0.3104335993,-0.7446018840,-1.0831585589,1.1755556130 +-0.8247771435,-0.4283842816,0.1354406933,0.8153267041,-0.4211019505,-0.6733323776 +0.5686918775,-0.1354946952,-0.1916629567,1.3050788641,-0.6415285918,-1.6435237891 +0.0759924136,-1.2148974856,-0.5395082480,0.2990961749,-0.0448564446,-1.1807596925 +-1.6032008676,-0.2999637818,0.6243441933,-0.0204987299,-0.0350585973,0.0297287275 +-0.4867780400,-1.2743179250,-0.4848982873,0.4885669596,1.2028836377,0.9525243590 +0.0077274677,1.0889307590,-0.6846444127,-2.8418904592,-1.0505767640,-1.7766210762 +-0.8959887593,0.6340669928,0.6960159576,-1.7493995409,-0.6613410813,1.0825672011 +-0.3939434351,1.4928744499,-0.7801352546,1.0560136400,0.7699553044,-0.1936244093 +0.0300667898,1.0580810805,1.5884705685,0.5572907649,-0.0263766174,0.9806419143 +1.1427263499,-0.2476022253,0.3685830369,-1.6348313201,-0.1137024416,-0.2306722159 +0.9400441213,-0.9508320697,-0.1263607213,0.3582768802,0.9266215006,0.4099997810 +-0.6485014571,-0.8323473636,-1.9182426298,-1.3563428701,1.9677345408,-0.2880958854 +1.5998530580,1.0001373749,0.7201152654,-1.5949515722,0.4174011325,-0.0161846123 +-0.6561566580,0.3950176813,-0.9144062469,0.4320048867,0.2192726082,0.2024630018 +0.4688445493,0.1896013104,-1.1378786680,0.0283903591,-1.2558235957,-0.4899501761 +0.8602553712,1.0536194932,-0.8605194200,-0.2804814163,0.3538760456,-0.4037372865 +-1.6521148140,-1.0519404994,1.4688084374,-0.9574221773,0.5146054472,-1.3079948376 +-0.9530814990,-0.2472938409,-0.8857075420,1.1605731239,1.0994753835,1.0883365845 +-0.3454822524,1.1778780900,-1.0753721895,0.3002754009,-0.0017948467,1.0144284271 +0.2791459751,-1.5874019799,0.2841152397,-0.9922789421,0.4197186378,-0.4005831314 +-0.1750512429,-1.0481981127,-0.3146563013,1.0775085506,0.0351146053,-1.5215890107 +0.7085845178,1.0864987435,-0.7315324345,0.9657933069,0.0401242523,0.6494933054 +-1.6782180440,-0.1222982109,-0.8963594645,-1.5264087824,-0.8343581975,-1.0051073503 +-2.1295110019,-2.3486535644,0.0419580722,-0.0761919510,-0.4567108182,1.1575910496 +-0.9887187052,-1.0723629572,-0.0236253973,-0.9990067273,0.2064741572,0.8124457348 +0.5130407881,1.4793144937,-1.0090349143,1.2598677207,2.4093441792,0.3247674588 +0.7748625778,0.5632838302,0.5455543004,-1.0148155184,-0.8643213136,0.1894703393 +-0.2477656332,0.3483516057,0.0324790519,0.2574023819,0.7238108588,0.0033415794 +-0.0818646011,-0.4474142433,0.7560258095,0.4104085039,0.0723371117,-0.5683737562 +0.1433426253,-0.4314436272,1.8191493724,-1.4915734987,0.1781795621,-2.1916661349 +-0.5860105771,0.0135147968,0.3970936068,0.7233173353,-0.3263377022,2.0031200305 +-0.3555684589,-1.3534492352,-1.3725575478,-0.8150196545,1.7721820606,-0.2484396242 +0.0345071345,2.0950104241,0.5648792334,-1.6871973486,1.4113571824,-0.7667759903 +-1.1907059622,0.5506521627,0.0403095956,-0.0313424853,0.0334228077,0.1693946823 +-1.6879798789,0.0302161277,-0.1109697214,-0.1419402587,-0.6920313426,-0.4764874721 +1.7996276993,-0.9460593240,-0.2080453221,1.5088038825,-0.8596583317,-2.0298222222 +0.9485247521,-0.9662917461,1.2672522652,-1.0153502636,-0.1664029617,-0.8143903697 +0.4377696499,2.0265054432,-0.2711937558,-1.1740645731,0.8824457068,0.1676242068 +0.5142463798,0.1012676827,1.3211104572,1.7063392486,0.8579123675,1.8690039197 +1.2516486968,1.9374328790,0.9162049622,1.8376374341,-0.2718957832,0.0672695794 +-0.5585512299,-1.5538074792,0.0598403187,1.0024804961,-0.7585867445,-0.7317063095 +-0.3160539099,-0.6864002529,0.2159411424,-0.2549113306,-0.6324224899,-1.5691715978 +0.4761779829,0.2761462303,0.6924825801,1.3890565868,-1.3757609059,-0.3294308318 +-0.8746887383,0.1149046679,-0.8922782472,-0.8261329646,-1.1745767793,0.8113681846 +1.3584741012,3.8504692251,-1.4368729853,-0.4619500215,-0.6609797478,-1.0443828951 +0.4061023189,-0.0695104133,0.6119724928,1.3539721812,0.1250768281,-1.9705871987 +-0.7020481437,1.0744288774,-0.5083653430,0.2543048090,0.0056012105,0.1339995813 +0.1910811254,-0.4766183114,-1.7261117406,0.7946842131,-0.3854364472,0.1183947821 +-0.4240532656,0.1270164462,-0.8279395301,1.5207954383,0.3212643107,0.9467829521 +-0.2535685177,-0.9756686126,-1.1264318853,-1.4792899021,-1.7748346691,1.1048502979 +-0.0044491087,1.2683645668,0.5254865348,-0.3879853357,-1.0448986627,-1.5269762817 +0.6887313564,-0.3237867304,-1.5816708169,-1.9344967481,0.0795943643,-1.5113344324 +0.5942857264,0.5880316791,0.2040995229,-0.7626425410,-0.4782593571,0.1868326807 +-0.8075146550,0.8538531976,0.7722615174,-1.0633114154,-0.9316107633,2.3217514692 +0.7475244148,0.7022959183,-1.2575225000,1.4500410878,0.7185195884,0.4998220500 +-0.3661442678,0.3412826366,-0.8654280309,-1.2407978147,0.5166289412,-0.1000183409 +-1.6633141560,0.0470586188,1.2345464975,-0.4670289697,-1.0823314821,0.0382149588 +0.5292729226,1.3167040722,-0.7488196439,-0.4065933570,-0.5558272744,0.8413899605 +-1.5693465854,0.5467665701,1.5972688893,1.5391658761,-0.4026456089,0.7220517943 +-0.2260044202,0.4557250324,1.4063009254,-0.4726582104,-1.3402874848,0.0793820794 +1.1059692814,0.1380403115,-1.1181738457,-0.4068989386,0.8273775201,0.8026261203 +1.2053075634,-0.6979116883,-0.4375892365,-0.5729634201,-1.6040462844,0.1447509717 +-0.3107105525,-0.6781353335,1.3083651168,-0.4498885541,0.9929445646,-0.6635769434 +-0.4135597352,3.0624978839,0.1404871591,2.4899477939,0.6188653588,0.0012913192 +-0.1071461357,0.9908440516,-0.7060856499,0.2318549372,-0.7838517085,2.2832379825 +-1.8366113609,-0.7274125742,-3.0695252737,0.9088803916,1.0127199496,-0.3937556588 +2.2028167310,-1.1930313569,-0.3588650181,0.3205985514,-0.4103883394,-0.7202800787 +-0.8896957326,-1.2155822882,1.0540548537,0.4724530593,0.4458659027,-0.6686730855 +1.5131151514,-1.1304226086,-0.4034496329,0.0191490959,-0.8915687100,-0.1665882363 +-0.2251909477,-1.4775099775,0.1789472072,1.9552989429,-0.2717998482,-0.2435439879 +1.2287893857,0.3666459241,0.4785148582,0.5656995024,-0.2333829398,-1.2119001422 +1.8011269210,-1.5270093001,0.6707415558,1.0200358175,-0.2952917628,0.8241877775 +0.5806251644,-0.5786243696,-1.2834001416,-0.6888134731,-2.3077434605,-0.2502559354 +2.0968726406,-0.4980632422,1.6333355685,-0.4088078515,0.6011325240,0.5480902817 +-0.9224182034,-0.4613038777,-0.2927491129,-0.8382262528,-0.3296429701,-0.0424661608 +0.6721189210,-0.0024376022,-0.0955176064,0.9974935842,-0.2673820114,0.4687485251 +-1.0168014631,0.3378814095,-1.6984072013,-0.4913705481,-0.6181791265,-0.1972942537 +-1.2156252575,0.3272678969,-0.2491161953,1.4029018535,-1.4779598768,-0.9516399619 +-0.4374562909,1.3205837480,0.0614241463,2.0746687198,0.0385898279,0.4709037474 +-0.8870897488,1.3413922191,2.1320542789,-0.1972578350,-0.3157645138,1.4629927882 +-0.7578176147,0.9647753774,-0.1090432943,0.7566195918,2.2523864111,-1.3601533653 +0.5235539003,-1.5167073208,-1.5716612128,-0.0588003768,-0.2702216489,0.3817933903 +-0.5413335104,-1.6460242703,-0.3952413304,-0.9403680333,-0.5044707241,1.0681830468 +-0.4923824798,-0.0006585227,-0.2446740184,-1.3566134923,-0.4033944681,0.2073206655 +-0.3062235086,0.2131195396,-0.0811290337,-0.0886128365,0.0260441967,-0.2744947683 +-0.8603277417,-0.3874583780,-0.4378337945,-1.0612974910,1.3543742559,0.9976336569 +1.8597156093,0.5106315521,-0.5033387008,-0.5881415388,1.2223240186,0.4271427822 +1.1344040194,-0.2023831861,-0.9960413627,-1.6698707908,-1.9657150346,-0.4581305339 +1.2054766346,-2.1099277759,-0.5871088691,-1.0023099421,0.1479530235,0.1151543453 +-1.0963665061,0.0050940706,0.9336504700,-1.5459688479,-1.6457755115,0.9531003685 +-0.6164859565,0.3931490192,-0.3019719104,-0.1424940676,0.5519718959,-0.8006153746 +-0.3894655157,1.9501736871,0.7618926039,0.3320435075,-1.2452011831,-0.5295069881 +-0.2607240737,2.1755925178,-0.2992326285,0.4212581678,0.2481583245,0.9979114484 +-0.7057223395,0.0101075895,0.0398620600,0.2015170363,-1.1384714888,0.4975412160 +-0.6611974924,0.8163837496,-1.2079613544,0.1076369078,-0.1687593401,-0.0068498186 +0.9152771387,0.0406784390,0.5390712449,-0.7718294615,-0.2146633321,-0.4706573744 +0.2478597412,0.5269950639,-0.3212922909,0.9400694677,1.4066791951,-0.2086509410 +0.7260598424,-1.2347390078,0.2983001868,0.6421031847,-2.0385121696,-0.6134475499 +0.8594459054,-1.6026660038,-1.0977870248,0.6797276766,-0.4891342119,-1.0018789489 +-1.0949742509,0.3085621982,-1.4878132019,-0.3119177847,1.4852662291,-0.0349038019 +-1.3742854684,0.3638338922,-0.3101988354,0.5536490305,1.3720348453,-1.1688461344 +1.3784682626,-1.8503939657,0.9192019167,-0.8473801754,0.8075828141,-0.4196370898 +0.1878782427,0.5729213870,-0.8152076887,1.4193717610,0.3490196747,-2.3802287332 +1.1229597403,-0.9215273194,-0.2581855888,-0.8938408694,0.3478147191,-0.0987283939 +-0.6650318751,-0.0752278015,0.8525386034,1.1358908017,0.4796154135,0.3573649845 +0.3241011776,0.3484730782,-0.4540775884,1.5379469531,-0.0767723568,1.8472264331 +-0.6272691107,-0.4719130495,-0.2900577415,0.3723860853,-0.5373928391,0.1848483127 +-1.1390175112,-0.3736632683,0.5035798458,0.5904410773,-0.7950030432,-0.7379174540 +-0.7523212209,0.5772497044,0.5153041443,0.1113531032,-0.2173541316,-0.4940375855 +-2.5633569348,-1.0639164830,0.1697575104,-0.7740171188,-0.3946527750,1.7617869802 +0.0748261362,1.4274338462,0.1605186790,-2.2367262581,-0.6900973161,-0.8225076787 +-0.6615524969,-1.8041462445,-0.3134584881,0.1287480846,0.1388121759,1.2692659231 +0.0171168180,-0.8060236450,-0.1591849540,-1.9199432227,-0.0604592679,0.7469672042 +1.5398098820,0.4431391932,1.0824736729,-0.2642508700,-1.2823894501,0.1089675146 +0.5790403761,-1.4797901619,-0.6711213972,-1.1760608366,-0.7958432350,-0.1967263662 +-0.5090429118,0.4230056471,-0.4503479640,-0.4305478897,0.4214785988,1.6505092355 +1.2666441337,-0.1572940453,0.3218238953,0.0557420447,-0.4110241293,0.7479200698 +-0.2224889623,-0.5727118457,0.1904017811,-0.5469761494,1.1084168093,-0.7538831567 +1.4281400071,0.1207598964,-0.2454713771,-1.0127139304,-0.1180548062,1.2568563957 +-0.9742411068,-0.2725701634,1.3918954662,-0.1924930780,0.5861735858,-1.9752523965 +0.6301610447,0.4588064895,-1.2625596429,0.4877331585,0.7974561743,-1.3583489950 +1.1858271379,0.5947624887,-1.9184186379,0.4248671605,0.4500017705,0.6517087464 +-0.3588966249,0.6342025526,0.3428952826,-0.8707702232,1.0318055939,1.7449582743 +-0.4749571525,0.1214717608,-0.6945244317,0.3987171142,-2.3130564251,-0.2658316070 +0.4566276110,-0.2849459829,1.7604387171,-1.7786650157,0.3533394767,-1.7603570799 +-1.0118306105,-0.7911931294,-0.5917496694,-0.1357077557,-0.0343918560,-0.8552721784 +-1.7739603332,0.0896123405,0.4314768943,0.7128330698,-3.3630712361,-1.3110338116 +0.7478062187,-0.6066083661,-0.2123965255,0.3456176660,-1.0155754808,0.6728418955 +1.0195304985,0.4043492277,-1.3850079359,-1.1419040614,-0.6350471249,0.3497785159 +1.0758947068,-0.9325105091,1.0242572878,-2.1547353095,-0.4770609766,-0.0534222279 +0.0112192283,-0.0028171132,0.2520340049,-0.9568011937,0.1982380834,-0.4697895972 +-0.3833737874,-1.9899074014,0.8840275846,-0.0830147911,-0.7945681044,-0.1078116305 +0.2084150221,1.4497385034,-0.3826427673,-0.0206462472,0.0461333377,1.5424042979 +-0.9267957736,1.4297365276,-0.9539904465,0.6531625487,-0.2304533872,-0.4796195595 +-1.6908947871,0.8191997934,0.7719313466,-1.3744265114,1.4305845127,2.6252419419 +-0.9297695920,-0.2147646615,0.2226420326,0.4155209017,-0.4025136167,1.2699764920 +1.5520045711,0.9490810942,-0.4636747808,2.2503671983,-0.2346598245,-0.8542840206 +-0.6104665251,-0.0369750570,-0.0718750263,-0.3645384358,0.0577303028,-1.1965566103 +-2.3444748918,-1.8625407115,-1.4432198913,0.8588460949,0.0235767637,0.4572494498 +-0.8802265307,-1.1860625649,1.0873505807,-0.0776431517,0.5309276800,-1.5730941995 +0.3756041114,-0.0946943315,-0.0781043471,-0.2557330565,-0.0055637314,1.4109350393 +0.0762942030,0.0623884486,-0.2492628234,-0.0719879835,-0.4455953506,-1.9626100016 +0.1349729302,-0.3853985614,-1.4885562589,-1.2542048528,0.3643667912,-0.2617745557 +-1.3248533169,-0.5362571292,0.2285475719,0.3678037275,-0.8001339176,-1.1250722261 +0.1021162434,0.8216924054,-1.0050056147,0.3538765236,-0.1108005750,-1.6268770378 +0.9893796578,-0.5445479923,-0.6985699887,0.4275870899,0.7186676814,0.8831142972 +-0.6528904987,1.0281908499,0.1322170128,0.8972593946,-1.1487894432,1.2361729916 +1.1052174274,0.7304291994,1.7398796530,1.3531171804,0.1718537295,-2.6784704740 +-1.1416939473,0.0578815886,0.7495743571,-1.7551145060,0.9450348217,0.0463244383 +0.5130557203,2.2522998596,-1.5798575447,1.7569742951,1.1897796354,-1.0059329497 +-0.2635734004,0.6064424763,-0.6732565922,-2.7690659217,-0.2960408405,1.1480267708 +0.6768033834,1.5538048490,-0.9729001401,1.8032642048,1.4887937090,0.8395074269 +-0.3741392058,1.1962552335,1.0153800771,0.4098058451,0.5662269008,1.1278183643 diff --git a/statsmodels/tsa/tests/results/results_ar.py b/statsmodels/tsa/tests/results/results_ar.py new file mode 100644 index 0000000..8c202d9 --- /dev/null +++ b/statsmodels/tsa/tests/results/results_ar.py @@ -0,0 +1,218 @@ +import numpy as np +import os + +cur_dir = os.path.dirname(os.path.abspath(__file__)) + + +class ARLagResults(object): + """ + Results are from R vars::VARselect for sunspot data. + + Comands run were + + var_select <- VARselect(SUNACTIVITY, lag.max=16, type=c("const")) + """ + def __init__(self, type="const"): + # order of results is AIC, HQ, SC, FPE + if type == "const": + ic = [ + 6.311751824815273, 6.321813007357017, 6.336872456958734, + 551.009492543133547, 5.647615009344886, 5.662706783157502, + 5.685295957560077, 283.614444209634655, 5.634199640773091, + 5.654322005856580, 5.684440905060013, 279.835333966272003, + 5.639415797766900, 5.664568754121261, 5.702217378125553, + 281.299267441683185, 5.646102475432464, 5.676286023057697, + 5.721464371862848, 283.187210932784524, 5.628416873122441, + 5.663631012018546, 5.716339085624555, 278.223839284844701, + 5.584204185137150, 5.624448915304128, 5.684686713710994, + 266.191975554941564, 5.541163244029505, 5.586438565467356, + 5.654206088675081, 254.979353737235556, 5.483155367013447, + 5.533461279722170, 5.608758527730753, 240.611088468544949, + 5.489939895595428, 5.545276399575022, 5.628103372384465, + 242.251199397394288, 5.496713895370946, 5.557080990621412, + 5.647437688231713, 243.900349905069504, 5.503539311586831, + 5.568936998108170, 5.666823420519329, 245.573823561989144, + 5.510365149977393, 5.580793427769605, 5.686209574981622, + 247.259396991133599, 5.513740912139918, 5.589199781203001, + 5.702145653215877, 248.099655693709479, 5.515627471325321, + 5.596116931659277, 5.716592528473011, 248.572915484827206, + 5.515935627515806, 5.601455679120634, 5.729461000735226, + 248.654927915301300] + self.ic = np.asarray(ic).reshape(4, -1, order='F') + + +class ARResultsOLS(object): + """ + Results of fitting an AR(9) model to the sunspot data. + + Results were taken from Stata using the var command. + """ + def __init__(self, constant=True): + self.avobs = 300. + if constant: + self.params = [ + 6.7430535917332, 1.1649421971129, -.40535742259304, + -.16653934246587, .14980629416032, -.09462417064796, + .00491001240749, .0504665930841, -.08635349190816, + .25349103194757] + # These are returned by stata VAR, using the (V)AR scale/sigma + # we return the true OLS bse by default + # the stata residuals can be achieved + # by np.sqrt(np.diag(res1.cov_params())) + self.bse_stata = [ + 2.413485601, .0560359041, .0874490762, + .0900894414, .0899348339, .0900100797, + .0898385666, .0896997939, .0869773089, + .0559505756] + # The below are grom gretl's ARIMA command with conditional + # maximum likelihood + self.bse_gretl = [ + 2.45474, 0.0569939, 0.0889440, 0.0916295, + 0.0914723, 0.0915488, 0.0913744, 0.0912332, + 0.0884642, 0.0569071] + self.rmse = 15.1279294937327 + self.fpe = 236.4827257929261 + self.llf = -1235.559128419549 + # NOTE: we use a different definition of these ic than Stata + # but our order selection results agree with R VARselect + # close to Stata for Lutkepohl but we penalize the ic for + # the trend terms + # self.bic = 8.427186938618863 + # self.aic = 8.30372752279699 + # self.hqic = 8.353136159250697 + + # NOTE: predictions were taken from gretl, but agree with Stata + # test predict + # TODO: remove one of the files + filename = os.path.join(cur_dir, "AROLSConstantPredict.csv") + predictresults = np.loadtxt(filename) + fv = predictresults[:300, 0] + pv = predictresults[300:, 1] + del predictresults + + # cases - in sample predict + # n = -1, start = 0 (fitted values) + self.FVOLSnneg1start0 = fv + # n=-1, start=9 + self.FVOLSnneg1start9 = fv + # n=-1, start=100 + self.FVOLSnneg1start100 = fv[100-9:] + # n = 200, start = 0 + self.FVOLSn200start0 = fv[:192] + # n = 200, start = 200 + self.FVOLSn200start200 = np.hstack((fv[200-9:], pv[:101-9])) + # n = 200, start = -109 use above + self.FVOLSn200startneg109 = self.FVOLSn200start200 + # n = 100, start = 325, post-sample forecasting + self.FVOLSn100start325 = np.hstack((fv[-1], pv)) + # n = 301, start = 9 + self.FVOLSn301start9 = np.hstack((fv, pv[:2])) + # n = 301, start = 0 + self.FVOLSdefault = fv + # n = 4, start = 312 + self.FVOLSn4start312 = np.hstack((fv[-1], pv[:8])) + # n = 15, start = 312 + self.FVOLSn15start312 = np.hstack((fv[-1], pv[:19])) + + elif not constant: + self.params = [ + 1.19582389902985, -0.40591818219637, + -0.15813796884843, 0.16620079925202, + -0.08570200254617, 0.01876298948686, + 0.06130211910707, -0.08461507700047, + 0.27995084653313] + self.bse_stata = [ + .055645055, .088579237, .0912031179, .0909032462, + .0911161784, .0908611473, .0907743174, .0880993504, + .0558560278] + self.bse_gretl = [ + 0.0564990, 0.0899386, 0.0926027, 0.0922983, + 0.0925145, 0.0922555, 0.0921674, 0.0894513, + 0.0567132] + self.rmse = 15.29712618677774 + self.sigma = 226.9820074869752 + self.llf = -1239.41217278661 + # See note above; TODO: be more specific about "above" + # self.bic = 8.433861292817106 + # self.hqic = 8.367215591385756 + # self.aic = 8.322747818577421 + self.fpe = 241.0221316614273 + + filename = os.path.join(cur_dir, "AROLSNoConstantPredict.csv") + predictresults = np.loadtxt(filename) + fv = predictresults[:300, 0] + pv = predictresults[300:, 1] + del predictresults + + # cases - in sample predict + # n = -1, start = 0 (fitted values) + self.FVOLSnneg1start0 = fv + # n=-1, start=9 + self.FVOLSnneg1start9 = fv + # n=-1, start=100 + self.FVOLSnneg1start100 = fv[100-9:] + # n = 200, start = 0 + self.FVOLSn200start0 = fv[:192] + # n = 200, start = 200 + self.FVOLSn200start200 = np.hstack((fv[200-9:], pv[:101-9])) + # n = 200, start = -109 use above + self.FVOLSn200startneg109 = self.FVOLSn200start200 + # n = 100, start = 325, post-sample forecasting + self.FVOLSn100start325 = np.hstack((fv[-1], pv)) + # n = 301, start = 9 + self.FVOLSn301start9 = np.hstack((fv, pv[:2])) + # n = 301, start = 0 + self.FVOLSdefault = fv + # n = 4, start = 312 + self.FVOLSn4start312 = np.hstack((fv[-1], pv[:8])) + # n = 15, start = 312 + self.FVOLSn15start312 = np.hstack((fv[-1], pv[:19])) + + +class ARResultsMLE(object): + """ + Results of fitting an AR(9) model to the sunspot data using exact MLE. + + Results were taken from gretl. + """ + def __init__(self, constant=True): + self.avobs = 300 + if constant: + + # NOTE: Stata's estimated parameters differ from gretl + filename = os.path.join(cur_dir, "ARMLEConstantPredict.csv") + filename2 = os.path.join(cur_dir, + 'results_ar_forecast_mle_dynamic.csv') + predictresults = np.loadtxt(filename, delimiter=",") + pv = predictresults[:, 1] + dynamicpv = np.genfromtxt(filename2, delimiter=",", skip_header=1) + + # cases - in sample predict + # start = 0 (fitted values) + self.FVMLEdefault = pv[:309] + # start=9 + self.FVMLEstart9end308 = pv[9:309] + # start=100, end=309 + self.FVMLEstart100end308 = pv[100:309] + # start = 0, end + self.FVMLEstart0end200 = pv[:201] + # n = 200, start = 200 + self.FVMLEstart200end334 = pv[200:] + # start = 309, end=334 post-sample forecasting + self.FVMLEstart308end334 = pv[308:] + # end = 310, start = 9 + self.FVMLEstart9end309 = pv[9:310] + # end = 301, start = 0 + self.FVMLEstart0end301 = pv[:302] + # end = 312, start = 4 + self.FVMLEstart4end312 = pv[4:313] + # end = 7, start = 2 + self.FVMLEstart2end7 = pv[2:8] + + self.fcdyn = dynamicpv[:, 0] + self.fcdyn2 = dynamicpv[:, 1] + self.fcdyn3 = dynamicpv[:, 2] + self.fcdyn4 = dynamicpv[:, 3] + + else: + pass diff --git a/statsmodels/tsa/tests/results/results_ar_forecast_mle_dynamic.csv b/statsmodels/tsa/tests/results/results_ar_forecast_mle_dynamic.csv new file mode 100644 index 0000000..80bae85 --- /dev/null +++ b/statsmodels/tsa/tests/results/results_ar_forecast_mle_dynamic.csv @@ -0,0 +1,335 @@ +fcdyn,fcdyn2,fcdyn3,fcdyn4,year,index +NA,NA,NA,NA,1700,0 +NA,NA,NA,NA,1701,1 +NA,NA,NA,NA,1702,2 +NA,NA,NA,NA,1703,3 +NA,NA,NA,NA,1704,4 +NA,NA,NA,NA,1705,5 +NA,NA,NA,NA,1706,6 +NA,NA,NA,NA,1707,7 +NA,NA,NA,NA,1708,8 +11.23047,NA,NA,NA,1709,9 +13.23731,NA,NA,NA,1710,10 +19.66407,NA,NA,NA,1711,11 +27.00373,NA,NA,NA,1712,12 +33.57858,NA,NA,NA,1713,13 +44.90784,NA,NA,NA,1714,14 +47.95866,NA,NA,NA,1715,15 +45.09347,NA,NA,NA,1716,16 +36.50656,NA,NA,NA,1717,17 +28.78818,NA,NA,NA,1718,18 +23.48711,NA,NA,NA,1719,19 +22.53206,NA,NA,NA,1720,20 +25.68737,NA,NA,NA,1721,21 +31.07822,NA,NA,NA,1722,22 +38.54836,NA,NA,NA,1723,23 +45.41845,NA,NA,NA,1724,24 +49.67139,NA,NA,NA,1725,25 +49.37283,NA,NA,NA,1726,26 +45.30287,NA,NA,NA,1727,27 +39.27502,NA,NA,NA,1728,28 +33.76503,NA,NA,NA,1729,29 +30.76819,NA,NA,NA,1730,30 +31.00231,NA,NA,NA,1731,31 +34.36712,NA,NA,NA,1732,32 +39.73509,NA,NA,NA,1733,33 +45.49821,NA,NA,NA,1734,34 +49.73386,NA,NA,NA,1735,35 +51.13904,NA,NA,NA,1736,36 +49.42444,NA,NA,NA,1737,37 +45.44374,NA,NA,NA,1738,38 +40.80805,NA,NA,NA,1739,39 +37.19994,NA,NA,NA,1740,40 +35.84322,NA,NA,NA,1741,41 +37.12242,NA,NA,NA,1742,42 +40.5707,NA,NA,NA,1743,43 +45.0109,NA,NA,NA,1744,44 +48.97761,NA,NA,NA,1745,45 +51.20812,NA,NA,NA,1746,46 +51.08132,NA,NA,NA,1747,47 +48.81563,NA,NA,NA,1748,48 +45.34622,NA,NA,NA,1749,49 +41.96479,NA,NA,NA,1750,50 +39.85285,NA,NA,NA,1751,51 +39.70252,NA,NA,NA,1752,52 +41.51253,NA,NA,NA,1753,53 +44.62548,NA,NA,NA,1754,54 +47.97401,NA,NA,NA,1755,55 +50.45678,NA,NA,NA,1756,56 +51.31412,NA,NA,NA,1757,57 +50.37143,NA,NA,NA,1758,58 +48.07163,NA,NA,NA,1759,59 +45.29209,NA,NA,NA,1760,60 +43.02564,NA,NA,NA,1761,61 +42.04014,NA,NA,NA,1762,62 +42.63295,NA,NA,NA,1763,63 +44.55469,NA,NA,NA,1764,64 +47.11933,NA,NA,NA,1765,65 +49.45578,NA,NA,NA,1766,66 +50.81053,NA,NA,NA,1767,67 +50.79702,NA,NA,NA,1768,68 +49.50859,NA,NA,NA,1769,69 +47.46335,NA,NA,NA,1770,70 +45.40802,NA,NA,NA,1771,71 +44.05476,NA,NA,NA,1772,72 +43.84306,NA,NA,NA,1773,73 +44.80533,NA,NA,NA,1774,74 +46.57591,NA,NA,NA,1775,75 +48.53369,NA,NA,NA,1776,76 +50.02399,NA,NA,NA,1777,77 +50.58108,NA,NA,NA,1778,78 +50.07622,NA,NA,NA,1779,79 +48.74461,NA,NA,NA,1780,80 +47.0881,NA,NA,NA,1781,81 +45.69285,NA,NA,NA,1782,82 +45.02758,NA,NA,NA,1783,83 +45.29136,NA,NA,NA,1784,84 +46.35975,NA,NA,NA,1785,85 +47.84262,NA,NA,NA,1786,86 +49.22875,NA,NA,NA,1787,87 +50.06412,NA,NA,NA,1788,88 +50.10232,NA,NA,NA,1789,89 +49.37749,NA,NA,NA,1790,90 +48.17905,NA,NA,NA,1791,91 +46.94158,NA,NA,NA,1792,92 +46.09115,NA,NA,NA,1793,93 +45.9021,NA,NA,NA,1794,94 +46.41197,NA,NA,NA,1795,95 +47.4205,NA,NA,NA,1796,96 +48.5688,NA,NA,NA,1797,97 +49.46817,NA,NA,NA,1798,98 +49.83268,NA,NA,NA,1799,99 +49.57053,25.74347,NA,NA,1800,100 +48.80555,45.07553,NA,NA,1801,101 +47.82483,56.26223,NA,NA,1802,102 +46.97392,58.91456,NA,NA,1803,103 +46.53746,51.91183,NA,NA,1804,104 +46.64617,41.38568,NA,NA,1805,105 +47.24034,29.44033,NA,NA,1806,106 +48.09929,20.594,NA,NA,1807,107 +48.92374,15.65894,NA,NA,1808,108 +49.44053,18.22081,NA,NA,1809,109 +49.49352,27.80714,NA,NA,1810,110 +49.09048,40.67458,NA,NA,1811,111 +48.39246,52.10051,NA,NA,1812,112 +47.65195,57.96601,NA,NA,1813,113 +47.12326,57.18009,NA,NA,1814,114 +46.97669,50.58997,NA,NA,1815,115 +47.24521,41.19133,NA,NA,1816,116 +47.82008,31.97262,NA,NA,1817,117 +48.49449,26.00973,NA,NA,1818,118 +49.0381,25.3424,NA,NA,1819,119 +49.2759,30.23195,NA,NA,1820,120 +49.14449,38.94292,NA,NA,1821,121 +48.708,48.32435,NA,NA,1822,122 +48.13022,55.21302,NA,NA,1823,123 +47.61448,57.45876,NA,NA,1824,124 +47.33314,54.73303,NA,NA,1825,125 +47.371,48.31932,NA,NA,1826,126 +47.70098,40.61562,NA,NA,1827,127 +48.19876,34.30102,NA,NA,1828,128 +48.68947,31.49938,NA,NA,1829,129 +49.00915,33.09014,NA,NA,1830,130 +49.05949,38.4097,NA,NA,1831,131 +48.83779,45.54427,NA,NA,1832,132 +48.43316,52.02924,NA,NA,1833,133 +47.99199,55.75885,NA,NA,1834,134 +47.66576,55.67565,NA,NA,1835,135 +47.55974,52.06329,NA,NA,1836,136 +47.6997,46.36284,NA,NA,1837,137 +48.02718,40.63523,NA,NA,1838,138 +48.42331,36.8523,NA,NA,1839,139 +48.75186,36.24014,NA,NA,1840,140 +48.90604,38.89879,NA,NA,1841,141 +48.84306,43.81192,NA,NA,1842,142 +48.59544,49.24557,NA,NA,1843,143 +48.25633,53.37311,NA,NA,1844,144 +47.94516,54.90133,NA,NA,1845,145 +47.76602,53.47803,NA,NA,1846,146 +47.77337,49.76026,NA,NA,1847,147 +47.95608,45.14231,NA,NA,1848,148 +48.2444,41.25146,NA,NA,1849,149 +48.53638,39.3907,NA,NA,1850,150 +48.73379,40.11474,NA,NA,1851,151 +48.77512,43.07797,NA,NA,1852,152 +48.65446,47.194,NA,NA,1853,153 +48.42082,51.03932,NA,NA,1854,154 +48.15889,53.35115,NA,NA,1855,155 +47.95871,53.44565,NA,NA,1856,156 +47.88509,51.41935,NA,NA,1857,157 +47.95695,48.07774,NA,NA,1858,158 +48.14322,44.62913,NA,NA,1859,159 +48.37574,42.25802,NA,NA,1860,160 +48.5741,41.72712,NA,NA,1861,161 +48.67334,43.14053,NA,NA,1862,162 +48.64509,45.94062,NA,NA,1863,163 +48.50536,49.1286,NA,NA,1864,164 +48.30696,51.62327,NA,NA,1865,165 +48.11988,52.62979,NA,NA,1866,166 +48.00684,51.8937,NA,NA,1867,167 +48.00254,49.76002,NA,NA,1868,168 +48.10326,47.0275,NA,NA,1869,169 +48.27007,44.65717,NA,NA,1870,170 +48.44363,43.44038,NA,NA,1871,171 +48.56524,43.74025,NA,NA,1872,172 +48.59658,45.3902,NA,NA,1873,173 +48.53167,47.77605,NA,NA,1874,174 +48.39723,50.06516,NA,NA,1875,175 +48.24216,51.49802,NA,NA,1876,176 +48.11987,51.64078,NA,NA,1877,177 +48.07012,50.51556,NA,NA,1878,178 +48.10623,48.57068,NA,NA,1879,179 +48.21193,46.50852,NA,NA,1880,180 +48.34826,45.03631,NA,NA,1881,181 +48.46784,44.62735,NA,NA,1882,182 +48.53126,45.37293,NA,NA,1883,183 +48.51997,46.97024,NA,NA,1884,184 +48.44153,48.84385,NA,NA,1885,185 +48.32577,50.35313,NA,NA,1886,186 +48.21362,51.01153,NA,NA,1887,187 +48.14281,50.64309,NA,NA,1888,188 +48.13525,49.42654,NA,NA,1889,189 +48.19046,47.81766,NA,NA,1890,190 +48.28681,46.382,NA,NA,1891,191 +48.38984,45.59878,NA,NA,1892,192 +48.46454,45.70354,NA,NA,1893,193 +48.48717,46.62066,NA,NA,1894,194 +48.45269,48.00411,NA,NA,1895,195 +48.37559,49.36743,NA,NA,1896,196 +48.284,50.25469,NA,NA,1897,197 +48.20957,50.39271,NA,NA,1898,198 +48.1766,49.77424,NA,NA,1899,199 +48.19421,48.64739,NA,NA,1900,200 +48.25402,47.41943,NA,NA,1901,201 +48.33384,46.51162,NA,NA,1902,202 +48.40579,46.21651,NA,NA,1903,203 +48.44604,46.6056,NA,NA,1904,204 +48.4426,47.51603,NA,NA,1905,205 +48.3988,48.61704,NA,NA,1906,206 +48.33142,49.52975,NA,NA,1907,207 +48.26437,49.95725,NA,NA,1908,208 +48.22027,49.78077,NA,NA,1909,209 +48.21289,49.09095,NA,NA,1910,210 +48.24294,48.14704,NA,NA,1911,211 +48.29848,47.28117,NA,NA,1912,212 +48.35955,46.78283,NA,NA,1913,213 +48.4053,46.8033,NA,NA,1914,214 +48.42108,47.31141,NA,NA,1915,215 +48.40305,48.11303,NA,NA,1916,216 +48.35898,48.92453,NA,NA,1917,217 +48.30501,49.4728,NA,NA,1918,218 +48.25985,49.58682,NA,NA,1919,219 +48.23831,49.25039,NA,NA,1920,220 +48.24652,48.59994,NA,NA,1921,221 +48.28025,47.87108,NA,NA,1922,222 +48.3269,47.31424,NA,NA,1923,223 +48.37012,47.10955,NA,NA,1924,224 +48.3955,47.30951,NA,NA,1925,225 +48.39538,47.82753,NA,NA,1926,226 +48.37106,48.474,NA,NA,1927,227 +48.33194,49.02525,NA,NA,1928,228 +48.29195,49.30067,NA,NA,1929,229 +48.26462,49.22147,NA,NA,1930,230 +48.25856,48.83232,NA,NA,1931,231 +48.27478,48.28018,NA,NA,1932,232 +48.30673,47.75973,NA,NA,1933,233 +48.34286,47.44541,NA,NA,1934,234 +48.3708,47.43357,NA,NA,1935,235 +48.38153,47.7138,NA,NA,1936,236 +48.37229,48.17769,NA,NA,1937,237 +48.34718,48.66019,NA,NA,1938,238 +48.31544,48.99806,NA,NA,1939,239 +48.28812,49.0848,NA,NA,1940,240 +48.27422,48.90384,NA,NA,1941,241 +48.27777,48.52964,NA,NA,1942,242 +48.29672,48.09819,NA,NA,1943,243 +48.32394,47.75808,NA,NA,1944,244 +48.34984,47.61982,NA,NA,1945,245 +48.36576,47.7204,NA,NA,1946,246 +48.36682,48.01445,NA,NA,1947,247 +48.3534,48.39355,NA,NA,1948,248 +48.33074,48.72594,NA,NA,1949,249 +48.30694,48.90203,NA,NA,1950,250 +48.29008,48.87032,NA,NA,1951,251 +48.28551,48.6519,NA,NA,1952,252 +48.29417,48.32977,NA,NA,1953,253 +48.3125,48.01783,NA,NA,1954,254 +48.33385,47.82096,NA,NA,1955,255 +48.35086,47.80007,NA,NA,1956,256 +48.35802,47.95373,NA,NA,1957,257 +48.3534,48.22171,NA,NA,1958,258 +48.33914,48.50819,NA,NA,1959,259 +48.32052,48.71578,NA,NA,1960,260 +48.30403,48.77848,NA,NA,1961,261 +48.29514,48.68238,NA,NA,1962,262 +48.29647,48.46779,NA,NA,1963,263 +48.30708,48.21301,NA,NA,1964,264 +48.32293,48.00602,NA,NA,1965,265 +48.33842,47.9144,NA,NA,1966,266 +48.34835,47.96348,NA,NA,1967,267 +48.34964,48.12991,NA,NA,1968,268 +48.34229,48.35188,NA,NA,1969,269 +48.3292,48.55192,NA,NA,1970,270 +48.31506,48.66372,NA,NA,1971,271 +48.3047,48.65398,NA,NA,1972,272 +48.30142,48.53202,NA,NA,1973,273 +48.30599,48.34455,NA,NA,1974,274 +48.31648,48.15806,NA,NA,1975,275 +48.32907,48.03546,NA,NA,1976,276 +48.3394,48.01503,NA,NA,1977,277 +48.34411,48.09869,NA,NA,1978,278 +48.34188,48.25319,NA,NA,1979,279 +48.33381,48.42301,NA,NA,1980,280 +48.3229,48.55017,NA,NA,1981,281 +48.31298,48.59394,NA,NA,1982,282 +48.30734,48.54369,NA,NA,1983,283 +48.30768,48.42102,NA,NA,1984,284 +48.31358,48.27089,NA,NA,1985,285 +48.32279,48.14532,NA,NA,1986,286 +48.33204,48.08548,NA,NA,1987,287 +48.3382,48.10837,NA,NA,1988,288 +48.33936,48.20225,NA,NA,1989,289 +48.33537,48.332,NA,NA,1990,290 +48.32782,48.45215,NA,NA,1991,291 +48.31944,48.52268,NA,NA,1992,292 +48.31309,48.52226,NA,NA,1993,293 +48.31082,48.45455,NA,NA,1994,294 +48.31319,48.3457,NA,NA,1995,295 +48.31918,48.23446,NA,NA,1996,296 +48.32658,48.15849,NA,NA,1997,297 +48.33284,48.1417,NA,NA,1998,298 +48.3359,48.18687,NA,NA,1999,299 +48.33488,48.27574,NA,NA,2000,300 +48.33033,48.37623,NA,NA,2001,301 +48.32396,48.4539,NA,NA,2002,302 +48.318,48.48368,NA,NA,2003,303 +48.31445,48.45791,NA,NA,2004,304 +48.31438,48.38801,NA,NA,2005,305 +48.31765,48.29974,NA,NA,2006,306 +48.32299,48.22377,NA,NA,2007,307 +48.3285,48.18514,23.47364,NA,2008,308 +48.33231,48.19506,54.73861,30.85857,2009,309 +48.33322,48.24781,80.91882,61.33544,2010,310 +48.33107,48.32352,96.89133,87.02467,2011,311 +48.32673,48.39553,94.15365,91.32123,2012,312 +48.32178,48.43977,77.70128,79.9216,2013,313 +48.3179,48.44268,56.33983,60.7995,2014,314 +48.31637,48.40531,36.52842,40.37485,2015,315 +48.31757,48.34226,21.34622,24.52903,2016,316 +48.32098,48.27606,15.74889,13.53051,2017,317 +48.32533,48.22919,23.33969,14.44262,2018,318 +48.32911,48.21651,40.86964,26.82511,2019,319 +48.33107,48.24065,61.94895,47.5587,2020,320 +48.33065,48.29165,78.24312,67.30043,2021,321 +48.3281,48.35101,84.08843,78.69045,2022,322 +48.32438,48.3983,78.31338,78.43595,2023,323 +48.32081,48.41819,64.1858,67.94477,2024,324 +48.31858,48.4053,46.7631,52.09101,2025,325 +48.31839,48.36561,31.46734,35.70807,2026,326 +48.32018,48.31381,23.18735,24.0176,2027,327 +48.32327,48.26797,24.45816,20.48491,2028,328 +48.32655,48.24327,34.63706,26.46583,2029,329 +48.3289,48.247,49.85213,39.67762,2030,330 +48.32957,48.27651,64.55238,55.23003,2031,331 +48.32843,48.3206,73.5886,67.49796,2032,332 +48.32594,48.36368,74.20407,72.37827,2033,333 diff --git a/statsmodels/tsa/tests/results/results_arima.py b/statsmodels/tsa/tests/results/results_arima.py new file mode 100644 index 0000000..a4b4b37 --- /dev/null +++ b/statsmodels/tsa/tests/results/results_arima.py @@ -0,0 +1,448 @@ +import os + +import numpy as np +from numpy import genfromtxt +cur_dir = os.path.dirname(os.path.abspath(__file__)) + +path = os.path.join(cur_dir, "results_arima_forecasts.csv") +with open(path, "rb") as fd: + forecast_results = genfromtxt(fd, names=True, delimiter=",", dtype=float) + +# NOTE: +# stata gives no indication of no convergence for 112 CSS but gives a +# different answer than x12arima, gretl simply fails to converge +# redid stata with starting parameters from x12arima + +# it looks like stata uses a different formula for the CSS likelihood +# they appear to be using a larger sample than R, gretl, or us. +# CSS results are therefore taken from R and gretl + + +class ARIMA111(object): + def __init__(self, method="mle"): + self.k_ar = 1 + self.k_diff = 1 + self.k_ma = 1 + if method == "mle": + # from stata + from .arima111_results import results + + # unpack stata results + self.__dict__.update(results) + self.resid = self.resid[1:] + self.params = self.params[:-1] + self.sigma2 = self.sigma**2 + self.aic = self.icstats[4] + self.bic = self.icstats[5] + self.fittedvalues = self.xb[1:] # no idea why this initial value + self.linear = self.y[1:] + # stata bse are OPG + # self.bse = np.diag(self.cov_params) ** .5 + + # from gretl + self.arroots = [1.0640 + 0j] + self.maroots = [1.2971 + 0j] + self.hqic = 496.8653 + self.aic_gretl = 491.5112 + self.bic_gretl = 504.7442 + self.tvalues = [4.280, 20.57, -8.590] + self.pvalues = [1.87e-5, 5.53e-94, 8.73e-18] + self.cov_params = [[0.0423583, -0.00167449, 0.00262911], + [-0.00167449, 0.00208858, -0.0035068], + [0.00262911, -0.0035068, 0.00805622]] + self.bse = np.diag(np.sqrt(self.cov_params)) + # these bse are approx [.205811, .0457010, .0897565] + + # from stata + # forecast = genfromtxt(open(cur_dir+"/arima111_forecasts.csv"), + # delimiter=",", skip_header=1, usecols=[1,2,3,4,5]) + # self.forecast = forecast[203:,1] + # self.fcerr = forecast[203:,2] + # self.fc_conf_int = forecast[203:,3:] + + # from gretl + self.forecast = forecast_results['fc111c'][-25:] + self.forecasterr = forecast_results['fc111cse'][-25:] + self.forecast_dyn = forecast_results['fc111cdyn'] + self.forecasterr_dyn = forecast_results['fc111cdynse'] + else: + # coefs, bse, tvalues, and pvalues taken from R because gretl + # uses mean not constant + self.bse = [0.21583833, 0.03844939, 0.08566390] + self.params = [1.0087257, 0.9455393, -0.8021834] + self.sigma2 = 0.6355913 + self.tvalues = [4.673524, 24.591788, -9.364311] + self.pvalues = [5.464467e-06, 0, 0] + self.cov_params = np.array([ + [0.046586183, 0.002331183, -0.004647432], + [0.002331183, 0.001478356, -0.002726201], + [-0.004647432, -0.002726201, 0.007338304]]) + + # from gretl + self.llf = -239.6601 + self.aic = 487.3202 + self.bic = 500.5334 + self.hqic = 492.6669 + self.arroots = [1.0578 + 0j] + self.maroots = [1.2473 + 0j] + # cov_params = np.array([[0.00369569, -0.00271777, 0.00269806], + # [0, 0.00209573, -0.00224559], + # [0, 0, 0.00342769]]) + # self.cov_params = cov_params + cov_params.T - \ + # np.diag(np.diag(cov_params)) + # self.bse = np.diag(np.sqrt(self.cov_params)) + + self.resid = [-0.015830, -0.236884, -0.093946, -0.281152, + -0.089983, -0.226336, -0.351666, -0.198703, + -0.258418, -0.259026, -0.149513, -0.325703, + -0.165703, -0.279229, -0.295711, -0.120018, + -0.289870, -0.154243, -0.348403, -0.273902, + -0.240894, -0.182791, -0.252930, -0.152441, + -0.296412, -0.128941, 0.024068, -0.243972, + -0.011436, -0.392437, -0.217022, -0.118190, + -0.133489, -0.045755, -0.169953, 0.025010, + -0.107754, -0.119661, 0.070794, -0.065586, + -0.080390, 0.007741, -0.016138, -0.235283, + -0.121907, -0.125546, -0.428463, -0.087713, + -0.298131, -0.277757, -0.261422, -0.248326, + -0.137826, -0.043771, 0.437100, -0.150051, + 0.751890, 0.424180, 0.450514, 0.277089, + 0.732583, 0.225086, -0.403648, -0.040509, + -0.132975, -0.112572, -0.696214, 0.003079, + -0.003491, -0.108758, 0.401383, -0.162302, + -0.141547, 0.175094, 0.245346, 0.607134, 0.519045, + 0.248419, 0.920521, 1.097613, 0.755983, 1.271156, + 1.216969, -0.121014, 0.340712, 0.732750, 0.068915, + 0.603912, 0.060157, -0.803110, -1.044392, 1.040311, + -0.984497, -1.611668, -0.258198, -0.112970, + -0.091071, 0.226487, 0.097475, -0.311423, -0.061105, + -0.449488, 0.317277, -0.329734, -0.181248, 0.443263, + -2.223262, 0.096836, -0.033782, 0.456032, 0.476052, + 0.197564, 0.263362, 0.021578, 0.216803, 0.284249, + 0.343786, 0.196981, 0.773819, 0.169070, -0.343097, + 0.918962, 0.096363, 0.298610, 1.571685, -0.236620, + -1.073822, -0.194208, -0.250742, -0.101530, + -0.076437, -0.056319, 0.059811, -0.041620, + -0.128404, -0.403446, 0.059654, -0.347208, + -0.095257, 0.217668, -0.015057, 0.087431, 0.275062, + -0.263580, -0.122746, 0.195629, 0.367272, + -0.184188, 0.146368, 0.127777, -0.587128, + -0.498538, 0.172490, -0.456741, -0.694000, + 0.199392, -0.140634, -0.029636, 0.364818, + -0.097080, 0.510745, 0.230842, 0.595504, 0.709721, + 0.012218, 0.520223, -0.445174, -0.168341, + -0.935465, -0.894203, 0.733417, -0.279707, + 0.258861, 0.417969, -0.443542, -0.477955, 0.288992, + 0.442126, 0.075826, 0.665759, 0.571509, -0.204055, + 0.835901, -0.375693, 3.292828, -1.469299, + -0.122206, 0.617909, -2.250468, 0.570871, 1.166013, + 0.079873, 0.463372, 1.981434, -0.142869, 3.023376, + -3.713161, -6.120150, -0.007487, 1.267027, 1.176930] + + self.linear = [ + 29.3658, 29.6069, 29.6339, 29.8312, 29.8400, + 30.0663, 30.1617, 30.1187, 30.2384, 30.2990, + 30.3595, 30.5457, 30.5457, 30.7192, 30.7757, + 30.8100, 31.0399, 31.0942, 31.2984, 31.2939, + 31.3609, 31.4628, 31.6329, 31.7324, 31.9464, + 32.0089, 32.2559, 32.6940, 32.8614, 33.2924, + 33.3170, 33.5182, 33.8335, 34.1458, 34.5700, + 34.8750, 35.4078, 35.8197, 36.2292, 36.8656, + 37.3804, 37.8923, 38.5161, 39.1353, 39.5219, + 40.0255, 40.5285, 40.6877, 41.1981, 41.4778, + 41.7614, 42.0483, 42.3378, 42.7438, 43.2629, + 44.3501, 44.8481, 46.3758, 47.6495, 49.0229, + 50.2674, 52.0749, 53.4036, 54.0405, 55.0330, + 55.9126, 56.7962, 56.9969, 57.9035, 58.8088, + 59.5986, 60.9623, 61.7415, 62.5249, 63.6547, + 64.8929, 66.5810, 68.2516, 69.6795, 71.9024, + 74.4440, 76.7288, 79.6830, 82.7210, 84.3593, + 86.4672, 89.0311, 90.8961, 93.3398, 95.2031, + 96.0444, 96.4597, 99.0845, 99.5117, 99.0582, + 99.9130, 100.8911, 101.8735, 103.2025, 104.4114, + 105.1611, 106.1495, 106.6827, 108.0297, 108.6812, + 109.4567, 110.9233, 109.4032, 110.2338, 110.9440, + 112.2239, 113.6024, 114.7366, 115.9784, 116.9832, + 118.2158, 119.5562, 121.0030, 122.3262, 124.3309, + 125.7431, 126.5810, 128.8036, 130.2014, 131.8283, + 134.9366, 136.1738, 136.3942, 137.4507, 138.4015, + 139.4764, 140.5563, 141.6402, 142.8416, 143.9284, + 144.9034, 145.5403, 146.6472, 147.2953, 148.1823, + 149.4151, 150.4126, 151.5249, 152.8636, 153.6227, + 154.5044, 155.7327, 157.1842, 158.0536, 159.2722, + 160.4871, 160.8985, 161.3275, 162.4567, 162.8940, + 163.0006, 164.0406, 164.7296, 165.5352, 166.7971, + 167.5893, 169.0692, 170.3045, 171.9903, 173.8878, + 175.0798, 176.8452, 177.5683, 178.5355, 178.5942, + 178.5666, 180.2797, 180.9411, 182.1820, 183.6435, + 184.1780, 184.6110, 185.8579, 187.3242, 188.4342, + 190.2285, 192.0041, 192.9641, 195.0757, 195.9072, + 200.8693, 200.8222, 202.0821, 204.1505, 203.0031, + 204.7540, 207.2581, 208.6696, 210.5136, 214.1399, + 215.5866, 220.6022, 218.2942, 212.6785, 213.2020, + 215.2081] + # forecasting isn't any different for css + # except you lose the first p+1 observations for in-sample + # these results are from x-12 arima + self.forecast = forecast_results['fc111c_css'][-25:] + self.forecasterr = forecast_results['fc111cse_css'][-25:] + self.forecast_dyn = forecast_results['fc111cdyn_css'] + self.forecasterr_dyn = forecast_results['fc111cdynse_css'] + + +class ARIMA211(object): + def __init__(self, method="mle"): + if method == 'mle': + # from stata + from .arima111_results import results + + self.__dict__.update(results) + self.resid = self.resid[1:] + self.params = self.params[:-1] + self.sigma2 = self.sigma**2 + self.aic = self.icstats[4] + self.bic = self.icstats[5] + self.fittedvalues = self.xb[1:] # no idea why this initial value + self.linear = self.y[1:] + self.k_diff = 1 + + # stata bse are OPG + # self.bse = np.diag(self.cov_params) ** .5 + + # from gretl + self.arroots = [1.027 + 0j, 5.7255 + 0j] + self.maroots = [1.1442+0j] + self.hqic = 496.5314 + self.aic_gretl = 489.8388 + self.bic_gretl = 506.3801 + self.tvalues = [3.468, 11.14, -1.941, 12.55] + self.pvalues = [.0005, 8.14e-29, .0522, 3.91e-36] + cov_params = np.array([ + [0.0616906, -0.00250187, 0.0010129, 0.00260485], + [0, 0.0105302, -0.00867819, -0.00525614], + [0, 0, 0.00759185, 0.00361962], + [0, 0, 0, 0.00484898]]) + self.cov_params = ( + cov_params + cov_params.T - np.diag(np.diag(cov_params))) + self.bse = np.diag(np.sqrt(self.cov_params)) + # these bse are approx [0.248376, 0.102617, 0.0871312, 0.0696346] + + self.forecast = forecast_results['fc211c'][-25:] + self.forecasterr = forecast_results['fc211cse'][-25:] + self.forecast_dyn = forecast_results['fc211cdyn'][-25:] + self.forecasterr_dyn = forecast_results['fc211cdynse'][-25:] + else: + from .arima211_css_results import results + + self.__dict__.update(results) + self.resid = self.resid[1:] + self.params = self.params[:-1] + self.sigma2 = self.sigma**2 + self.aic = self.icstats[4] + self.bic = self.icstats[5] + self.fittedvalues = self.xb[1:] # no idea why this initial value + self.linear = self.y[1:] + self.k_diff = 1 + + # from gretl + self.arroots = [1.0229 + 0j, 4.4501 + 0j] + self.maroots = [1.0604 + 0j] + self.hqic = 489.3225 + self.aic_gretl = 482.6486 + self.bic_gretl = 499.1402 + self.tvalues = [.7206, 22.54, -19.04] + self.pvalues = [.4712, 1.52e-112, 2.19e-10, 8.00e-81] + cov_params = np.array([ + [8.20496e-04, -0.0011992, 4.57078e-04, 0.00109907], + [0, 0.00284432, -0.0016752, -0.00220223], + [0, 0, 0.00119783, 0.00108868], + [0, 0, 0, 0.00245324]]) + self.cov_params = ( + cov_params + cov_params.T - np.diag(np.diag(cov_params))) + self.bse = np.diag(np.sqrt(self.cov_params)) + # forecasting isn't any different for css + # except you lose the first p+1 observations for in-sample + self.forecast = forecast_results['fc111c_css'][-25:] + self.forecasterr = forecast_results['fc111cse_css'][-25:] + self.forecast_dyn = forecast_results['fc111cdyn_css'] + self.forecasterr_dyn = forecast_results['fc111cdynse_css'] + + +class ARIMA112(object): + def __init__(self, method="mle"): + self.df_model = 3 + self.k = 5 + self.k_ar = 1 + self.k_ma = 2 + self.k_exog = 1 + self.k_diff = 1 + if method == "mle": + from .arima112_results import results + # from gretl + self.arroots = [1.0324 + 0j] + self.maroots = [1.1447 + 0j, -4.8613+0j] + self.hqic = 495.5852 + self.aic_gretl = 488.8925 + self.bic_gretl = 505.4338 + self.tvalues = [3.454, 31.10, -7.994, -2.127] + self.pvalues = [0.0006, 2.1e-212, 1.31e-15, .0334] + cov_params = np.array([ + [0.0620096, -0.00172172, 0.00181301, 0.00103271], + [0, 9.69682e-04, -9.70767e-04, -8.99814e-04], + [0, 0, 0.00698068, -0.00443871], + [0, 0, 0, 0.00713662]]) + self.cov_params = ( + cov_params + cov_params.T - np.diag(np.diag(cov_params))) + self.bse = np.diag(np.sqrt(self.cov_params)) + + # from gretl + self.forecast = forecast_results['fc112c'][-25:] + self.forecasterr = forecast_results['fc112cse'][-25:] + self.forecast_dyn = forecast_results['fc112cdyn'] + self.forecasterr_dyn = forecast_results['fc112cdynse'] + + # unpack stata results + self.__dict__ = results + self.resid = self.resid[1:] + self.params = self.params[:-1] + self.sigma2 = self.sigma**2 + self.aic = self.icstats[4] + self.bic = self.icstats[5] + self.fittedvalues = self.xb[1:] # no idea why this initial value + self.linear = self.y[1:] + # stata bse are OPG + # self.bse = np.diag(self.cov_params) ** .5 + else: + # NOTE: this looks like a "hard" problem + # unable to replicate stata's results even with their starting + # values + # unable to replicate x12 results in stata using their starting + # values. x-12 has better likelihood and we can replicate so + # use their results + + # taken from R using X12-arima values as init params + self.bse = [0.07727588, 0.09356658, 0.10503567, 0.07727970] + self.params = [0.9053219, -0.692412, 1.0736728, 0.1720008] + self.sigma2 = 0.6820727 + self.tvalues = [11.715452, -7.400215, 10.221983, 2.225692] + self.pvalues = [0, 3.791634e-12, 0, 2.716275e-02] + self.cov_params = np.array([ + [0.0059715623, 0.001327824, -0.001592129, -0.0008061933], + [0.0013278238, 0.008754705, -0.008024634, -0.0045933413], + [-0.0015921293, -0.008024634, 0.011032492, 0.0072509641], + [-0.0008061933, -0.004593341, 0.007250964, 0.0059721516]]) + + # from x12arima via gretl + # gretl did not converge for this model... + self.llf = -246.7534 + self.nobs = 202 + # self.params = [.905322, -.692425, 1.07366, 0.172024] + # self.sigma2 = 0.682072819129 + # self.bse = [0.0756430, 0.118440, 0.140691, 0.105266] + + self.resid = [ + -1.214477, -0.069772, -1.064510, -0.249555, + -0.874206, -0.322177, -1.003579, -0.310040, -0.890506, + -0.421211, -0.715219, -0.564119, -0.636560, -0.580912, + -0.717440, -0.424277, -0.747835, -0.424739, -0.805958, + -0.516877, -0.690127, -0.473072, -0.694766, -0.435627, + -0.736474, -0.388060, -0.429596, -0.557224, -0.342308, + -0.741842, -0.442199, -0.491319, -0.420884, -0.388057, + -0.466176, -0.257193, -0.429646, -0.349683, -0.205870, + -0.335547, -0.290300, -0.216572, -0.234272, -0.427951, + -0.255446, -0.338097, -0.579033, -0.213860, -0.556756, + -0.389907, -0.510060, -0.409759, -0.396778, -0.258727, + 0.160063, -0.467109, 0.688004, -0.021120, 0.503044, + 0.031500, 0.878365, -0.003548, -0.079327, 0.038289, + 0.032773, -0.050780, -0.560124, 0.185655, -0.111981, + -0.020714, 0.363254, -0.218484, -0.006161, 0.165950, + 0.252365, 0.599220, 0.488921, 0.347677, 1.079814, + 1.102745, 0.959907, 1.570836, 1.454934, 0.343521, + 1.125826, 1.154059, 0.666141, 1.269685, 0.551831, + -0.027476, -0.305192, 1.715665, -0.990662, -0.548239, + -0.011636, 0.197796, -0.050128, 0.480031, 0.061198, + -0.049562, 0.064436, -0.300420, 0.494730, -0.411527, + 0.109242, 0.375255, -2.184482, 0.717733, -0.673064, + 0.751681, -0.092543, 0.438016, -0.024881, 0.250085, + 0.096010, 0.452618, 0.265491, 0.374299, 0.820424, + 0.238176, -0.059646, 1.214061, 0.028679, 0.797567, + 1.614444, -0.094717, -0.408067, 0.299198, -0.021561, + 0.231915, 0.084190, 0.199192, 0.201132, 0.148509, + 0.035431, -0.203352, 0.264744, -0.319785, 0.150305, + 0.184628, 0.074637, 0.148340, 0.357372, -0.241250, + 0.119294, 0.204413, 0.458730, -0.190477, 0.416587, + 0.084216, -0.363361, -0.310339, 0.309728, -0.549677, + -0.449092, 0.183025, -0.259015, -0.000883, 0.267255, + -0.188068, 0.577697, 0.049310, 0.746401, 0.565829, + 0.178270, 0.709983, -0.348012, 0.273262, -0.873288, + -0.403100, 0.720072, -0.428076, 0.488246, 0.248152, + -0.313214, -0.323137, 0.414843, 0.308909, 0.134180, + 0.732275, 0.535639, -0.056128, 1.128355, -0.449151, + 3.879123, -2.303860, 1.712549, -0.074407, -1.162052, + 0.848316, 1.262031, 0.009320, 1.017563, 1.978597, + -0.001637, 3.782223, -4.119563, -3.666488, 0.345244, + 0.869998, 0.635321] + + self.linear = [ + 30.5645, 29.4398, 30.6045, 29.7996, 30.6242, + 30.1622, 30.8136, 30.2300, 30.8705, 30.4612, 30.9252, + 30.7841, 31.0166, 31.0209, 31.1974, 31.1143, 31.4978, + 31.3647, 31.7560, 31.5369, 31.8101, 31.7531, 32.0748, + 32.0156, 32.3865, 32.2681, 32.7096, 33.0072, 33.1923, + 33.6418, 33.5422, 33.8913, 34.1209, 34.4881, 34.8662, + 35.1572, 35.7296, 36.0497, 36.5059, 37.1355, 37.5903, + 38.1166, 38.7343, 39.3280, 39.6554, 40.2381, 40.6790, + 40.8139, 41.4568, 41.5899, 42.0101, 42.2098, 42.5968, + 42.9587, 43.5399, 44.6671, 44.9120, 46.8211, 47.5970, + 49.2685, 50.1216, 52.3035, 53.0793, 53.9617, 54.8672, + 55.8508, 56.6601, 56.8143, 58.0120, 58.7207, 59.6367, + 61.0185, 61.6062, 62.5340, 63.6476, 64.9008, 66.6111, + 68.1523, 69.5202, 71.8973, 74.2401, 76.4292, 79.4451, + 82.2565, 83.5742, 86.0459, 88.4339, 90.2303, 92.8482, + 94.4275, 95.3052, 95.7843, 99.0907, 98.4482, 98.8116, + 99.6022, 100.8501, 101.6200, 103.2388, 104.1496, + 105.0356, 106.0004, 106.5053, 108.1115, 108.3908, + 109.5247, 110.8845, 108.7823, 110.8731, 110.6483, + 112.7925, 113.3620, 115.0249, 115.7499, 117.1040, + 118.0474, 119.6345, 120.8257, 122.2796, 124.2618, + 125.4596, 126.2859, 128.8713, 129.7024, 131.7856, + 134.7947, 135.5081, 135.9008, 137.2216, 138.0681, + 139.3158, 140.3008, 141.4989, 142.6515, 143.7646, + 144.7034, 145.3353, 146.6198, 147.0497, 148.2154, + 149.3254, 150.3517, 151.4426, 152.8413, 153.3807, + 154.4956, 155.6413, 157.1905, 157.7834, 159.3158, + 160.2634, 160.7103, 161.1903, 162.5497, 162.6491, + 163.0170, 164.1590, 164.7009, 165.6327, 166.8881, + 167.5223, 169.2507, 170.1536, 172.1342, 173.7217, + 174.8900, 176.7480, 177.1267, 178.4733, 178.1031, + 178.5799, 180.4281, 180.7118, 182.3518, 183.5132, + 184.0231, 184.4852, 185.9911, 187.2658, 188.3677, + 190.2644, 191.8561, 192.6716, 195.1492, 195.3209, + 201.7039, 198.9875, 202.7744, 203.0621, 202.7257, + 204.6580, 207.3287, 208.1154, 210.5164, 213.9986, + 214.8278, 221.0086, 215.8405, 212.3258, 213.5990, + 215.7497] + + self.yr = [] + + self.arroots = [-1.4442 + 0j] + self.maroots = [-1.1394 + 0j, -5.1019+0j] + self.hqic = 510.1902 + self.aic = 503.5069 + self.bic = 520.0234 + # TODO: Document source for these non-used results + # (and why they are not used) + # self.tvalues = [11.97, -5.846, 7.631, 1.634] + # self.pvalues = [5.21e-33, 5.03e-9, 2.32e-14, .1022] + # cov_params = np.array([ + # [0.0620096, -0.00172172, 0.00181301, 0.00103271], + # [0, 9.69682e-04, -9.70767e-04, -8.99814e-04], + # [0, 0, 0.00698068, -0.00443871], + # [0, 0, 0, 0.00713662]]) + # self.cov_params = cov_params + cov_params.T - \ + # np.diag(np.diag(cov_params)) + # self.bse = np.diag(np.sqrt(self.cov_params)) + self.forecast = forecast_results['fc112c_css'][-25:] + self.forecasterr = forecast_results['fc112cse_css'][-25:] + self.forecast_dyn = forecast_results['fc112cdyn_css'] + self.forecasterr_dyn = forecast_results['fc112cdynse_css'] diff --git a/statsmodels/tsa/tests/results/results_arima_exog_forecasts_css.csv b/statsmodels/tsa/tests/results/results_arima_exog_forecasts_css.csv new file mode 100644 index 0000000..642c533 --- /dev/null +++ b/statsmodels/tsa/tests/results/results_arima_exog_forecasts_css.csv @@ -0,0 +1,127 @@ +orig_index,year,quarter,y,predict,std_err,lower,upper +0,1950,1,3.198371,,,, +1,1950,2,0.951462,,,, +2,1950,3,2.044147,1.637865,,, +3,1950,4,5.387144,3.026386,,, +4,1951,1,4.278298,4.758931,,, +5,1951,2,2.608896,2.744609,,, +6,1951,3,2.2891,2.190297,,, +7,1951,4,0.542828,2.572409,,, +8,1952,1,1.818848,1.464508,,, +9,1952,2,1.141287,2.995619,,, +10,1952,3,1.390376,1.964605,,, +11,1952,4,3.519065,2.452368,,, +12,1953,1,2.687199,3.739905,,, +13,1953,2,2.72044,2.352415,,, +14,1953,3,3.640325,2.782552,,, +15,1953,4,3.388688,3.337867,,, +16,1954,1,1.285691,2.807582,,, +17,1954,2,1.193271,1.532043,,, +18,1954,3,4.125089,2.281349,,, +19,1954,4,1.826838,4.190755,,, +20,1955,1,1.211262,1.496953,,, +21,1955,2,1.494882,2.104899,,, +22,1955,3,2.407813,2.42813,,, +23,1955,4,3.476123,2.908037,,, +24,1956,1,4.683225,3.270582,,, +25,1956,2,3.209492,3.687261,,, +26,1956,3,3.045272,2.260033,,, +27,1956,4,3.189591,2.771537,,, +28,1957,1,3.223306,2.86421,,, +29,1957,2,2.160318,2.825037,,, +30,1957,3,1.084407,2.10187,,, +31,1957,4,0.698262,1.797678,,, +32,1958,1,1.121673,1.916263,,, +33,1958,2,2.538408,2.308136,,, +34,1958,3,3.671068,3.072406,,, +35,1958,4,3.45499,3.284601,,, +36,1959,1,2.136544,2.743738,,, +37,1959,2,3.821324,1.982434,,, +38,1959,3,4.975221,3.611985,,, +39,1959,4,3.157348,3.662564,,, +40,1960,1,1.30047,2.059906,,, +41,1960,2,1.802575,1.56944,,, +42,1960,3,3.772872,2.555923,,, +43,1960,4,3.770009,3.604042,,, +44,1961,1,3.359749,2.847162,,, +45,1961,2,2.440787,2.64582,,, +46,1961,3,2.682876,2.180379,,, +47,1961,4,4.210082,2.684437,,, +48,1962,1,3.215831,3.570286,,, +49,1962,2,2.501961,2.311421,,, +50,1962,3,2.597237,2.281679,,, +51,1962,4,2.865064,2.576134,,, +52,1963,1,1.27064,2.688936,,, +53,1963,2,-0.23313,1.51842,,, +54,1963,3,0.276246,1.147103,,, +55,1963,4,2.197587,2.011094,,, +56,1964,1,3.4989,3.036608,,, +57,1964,2,2.577512,3.170317,,, +58,1964,3,3.582812,2.110702,,, +59,1964,4,3.0313,3.186722,,, +60,1965,1,2.467222,2.374814,,, +61,1965,2,2.161508,2.255183,,, +62,1965,3,2.460806,2.24175,,, +63,1965,4,3.291564,2.537855,,, +64,1966,1,3.637327,2.960457,,, +65,1966,2,2.015331,2.872379,,, +66,1966,3,3.386468,1.678517,,, +67,1966,4,2.153601,3.241487,,, +68,1967,1,2.037476,1.80477,,, +69,1967,2,2.115952,2.270841,,, +70,1967,3,1.352658,2.308425,,, +71,1967,4,1.847239,1.76327,,, +72,1968,1,1.741011,2.393571,,, +73,1968,2,2.28343,2.091623,,, +74,1968,3,3.006313,2.514739,,, +75,1968,4,4.314375,2.772906,,, +76,1969,1,3.718064,3.380456,,, +77,1969,2,2.029417,2.48767,,, +78,1969,3,1.500418,1.638736,,, +79,1969,4,2.249069,1.917292,,, +80,1970,1,2.751434,2.556965,,, +81,1970,2,4.149486,2.578243,,, +82,1970,3,4.793702,3.342115,,, +83,1970,4,2.970161,3.233744,,, +84,1971,1,1.535665,1.809793,,, +85,1971,2,-0.690842,1.585436,,, +86,1971,3,0.372726,0.581896,,, +87,1971,4,1.280042,2.116903,,, +88,1972,1,1.981304,2.214855,,, +89,1972,2,2.909937,2.372742,,, +90,1972,3,3.050076,2.743802,,, +91,1972,4,2.641661,2.491526,,, +92,1973,1,2.621315,2.193228,,, +93,1973,2,2.422996,2.338137,,, +94,1973,3,2.613121,2.192145,,, +95,1973,4,-0.631347,2.393736,,, +96,1974,1,0.308662,0.135852,,, +97,1974,2,2.14549,2.048404,,, +98,1974,3,2.530416,2.769812,,, +99,1974,4,2.333179,2.349218,,, +100,1975,1,,2.129509,0.943872,0.279554,3.979465 +101,1975,2,,2.074884,1.135543,-0.150738,4.300507 +102,1975,3,,2.105186,1.136638,-0.122583,4.332955 +103,1975,4,,2.134998,1.15044,-0.119824,4.389819 +104,1976,1,,2.136828,1.156371,-0.129617,4.403272 +105,1976,2,,2.12296,1.156401,-0.143544,4.389463 +106,1976,3,,2.109324,1.156884,-0.158127,4.376774 +107,1976,4,,2.100939,1.157087,-0.166909,4.368787 +108,1977,1,,2.095456,1.157087,-0.172394,4.363306 +109,1977,2,,2.089903,1.157105,-0.17798,4.357787 +110,1977,3,,2.083365,1.157111,-0.184532,4.351262 +111,1977,4,,2.076291,1.157111,-0.191606,4.344188 +112,1978,1,,2.069235,1.157112,-0.198663,4.337133 +113,1978,2,,2.062363,1.157112,-0.205535,4.330262 +114,1978,3,,2.055591,1.157112,-0.212308,4.323489 +115,1978,4,,2.048814,1.157112,-0.219084,4.316713 +116,1979,1,,2.042003,1.157112,-0.225896,4.309901 +117,1979,2,,2.035173,1.157112,-0.232725,4.303072 +118,1979,3,,2.028345,1.157112,-0.239554,4.296243 +119,1979,4,,2.021522,1.157112,-0.246376,4.289421 +120,1980,1,,2.014704,1.157112,-0.253195,4.282602 +121,1980,2,,2.007885,1.157112,-0.260014,4.275783 +122,1980,3,,2.001064,1.157112,-0.266834,4.268963 +123,1980,4,,1.994244,1.157112,-0.273655,4.262142 +124,1981,1,,1.987423,1.157112,-0.280476,4.255321 +,,,,1.980602,1.157112,-0.287296,4.248501 diff --git a/statsmodels/tsa/tests/results/results_arima_exog_forecasts_mle.csv b/statsmodels/tsa/tests/results/results_arima_exog_forecasts_mle.csv new file mode 100644 index 0000000..063df68 --- /dev/null +++ b/statsmodels/tsa/tests/results/results_arima_exog_forecasts_mle.csv @@ -0,0 +1,126 @@ +orig_index,year,quarter,y,predict,std_err,lower,upper +0,1950,1,3.198371,2.786912,0,0,0 +1,1950,2,0.951462,2.974749,0,0,0 +2,1950,3,2.044147,1.436963,0,0,0 +3,1950,4,5.387144,3.04366,0,0,0 +4,1951,1,4.278298,4.703375,0,0,0 +5,1951,2,2.608896,2.671842,0,0,0 +6,1951,3,2.2891,2.179081,0,0,0 +7,1951,4,0.542828,2.559835,0,0,0 +8,1952,1,1.818848,1.44334,0,0,0 +9,1952,2,1.141287,2.994511,0,0,0 +10,1952,3,1.390376,1.924747,0,0,0 +11,1952,4,3.519065,2.444375,0,0,0 +12,1953,1,2.687199,3.708894,0,0,0 +13,1953,2,2.72044,2.302143,0,0,0 +14,1953,3,3.640325,2.772049,0,0,0 +15,1953,4,3.388688,3.306912,0,0,0 +16,1954,1,1.285691,2.76964,0,0,0 +17,1954,2,1.193271,1.515752,0,0,0 +18,1954,3,4.125089,2.28757,0,0,0 +19,1954,4,1.826838,4.162606,0,0,0 +20,1955,1,1.211262,1.441483,0,0,0 +21,1955,2,1.494882,2.122148,0,0,0 +22,1955,3,2.407813,2.41238,0,0,0 +23,1955,4,3.476123,2.886529,0,0,0 +24,1956,1,4.683225,3.238772,0,0,0 +25,1956,2,3.209492,3.650045,0,0,0 +26,1956,3,3.045272,2.223427,0,0,0 +27,1956,4,3.189591,2.769419,0,0,0 +28,1957,1,3.223306,2.84062,0,0,0 +29,1957,2,2.160318,2.802709,0,0,0 +30,1957,3,1.084407,2.084095,0,0,0 +31,1957,4,0.698262,1.797552,0,0,0 +32,1958,1,1.121673,1.917181,0,0,0 +33,1958,2,2.538408,2.301813,0,0,0 +34,1958,3,3.671068,3.054365,0,0,0 +35,1958,4,3.45499,3.251589,0,0,0 +36,1959,1,2.136544,2.71492,0,0,0 +37,1959,2,3.821324,1.972191,0,0,0 +38,1959,3,4.975221,3.609349,0,0,0 +39,1959,4,3.157348,3.617571,0,0,0 +40,1960,1,1.30047,2.032269,0,0,0 +41,1960,2,1.802575,1.581756,0,0,0 +42,1960,3,3.772872,2.56424,0,0,0 +43,1960,4,3.770009,3.580948,0,0,0 +44,1961,1,3.359749,2.809913,0,0,0 +45,1961,2,2.440787,2.635187,0,0,0 +46,1961,3,2.682876,2.172471,0,0,0 +47,1961,4,4.210082,2.68386,0,0,0 +48,1962,1,3.215831,3.551058,0,0,0 +49,1962,2,2.501961,2.281018,0,0,0 +50,1962,3,2.597237,2.286959,0,0,0 +51,1962,4,2.865064,2.572783,0,0,0 +52,1963,1,1.27064,2.677956,0,0,0 +53,1963,2,-0.23313,1.511573,0,0,0 +54,1963,3,0.276246,1.169244,0,0,0 +55,1963,4,2.197587,2.029432,0,0,0 +56,1964,1,3.4989,3.027459,0,0,0 +57,1964,2,2.577512,3.143262,0,0,0 +58,1964,3,3.582812,2.093742,0,0,0 +59,1964,4,3.0313,3.192262,0,0,0 +60,1965,1,2.467222,2.353064,0,0,0 +61,1965,2,2.161508,2.260144,0,0,0 +62,1965,3,2.460806,2.244168,0,0,0 +63,1965,4,3.291564,2.538462,0,0,0 +64,1966,1,3.637327,2.952329,0,0,0 +65,1966,2,2.015331,2.85753,0,0,0 +66,1966,3,3.386468,1.674466,0,0,0 +67,1966,4,2.153601,3.258153,0,0,0 +68,1967,1,2.037476,1.783801,0,0,0 +69,1967,2,2.115952,2.291254,0,0,0 +70,1967,3,1.352658,2.308358,0,0,0 +71,1967,4,1.847239,1.767768,0,0,0 +72,1968,1,1.741011,2.40798,0,0,0 +73,1968,2,2.28343,2.089385,0,0,0 +74,1968,3,3.006313,2.522133,0,0,0 +75,1968,4,4.314375,2.768106,0,0,0 +76,1969,1,3.718064,3.37106,0,0,0 +77,1969,2,2.029417,2.471187,0,0,0 +78,1969,3,1.500418,1.651553,0,0,0 +79,1969,4,2.249069,1.942538,0,0,0 +80,1970,1,2.751434,2.566664,0,0,0 +81,1970,2,4.149486,2.574459,0,0,0 +82,1970,3,4.793702,3.339428,0,0,0 +83,1970,4,2.970161,3.215612,0,0,0 +84,1971,1,1.535665,1.806844,0,0,0 +85,1971,2,-0.690842,1.616034,0,0,0 +86,1971,3,0.372726,0.611575,0,0,0 +87,1971,4,1.280042,2.159702,0,0,0 +88,1972,1,1.981304,2.213886,0,0,0 +89,1972,2,2.909937,2.379235,0,0,0 +90,1972,3,3.050076,2.747067,0,0,0 +91,1972,4,2.641661,2.490161,0,0,0 +92,1973,1,2.621315,2.202678,0,0,0 +93,1973,2,2.422996,2.352931,0,0,0 +94,1973,3,2.613121,2.20254,0,0,0 +95,1973,4,-0.631347,2.407679,0,0,0 +96,1974,1,0.308662,0.15372,0,0,0 +97,1974,2,2.14549,2.110661,0,0,0 +98,1974,3,2.530416,2.769133,0,0,0 +99,1974,4,2.333179,2.346634,0,0,0 +100,1975,1,,2.143652,0.954284,0.273289,4.014014 +101,1975,2,,2.102544,1.146611,-0.144772,4.34986 +102,1975,3,,2.136329,1.147121,-0.111987,4.384644 +103,1975,4,,2.16265,1.161904,-0.11464,4.43994 +104,1976,1,,2.161075,1.167047,-0.126294,4.448444 +105,1976,2,,2.147009,1.167047,-0.140361,4.434379 +106,1976,3,,2.135191,1.16758,-0.153225,4.423606 +107,1976,4,,2.12856,1.167729,-0.160146,4.417266 +108,1977,1,,2.123977,1.167729,-0.16473,4.412685 +109,1977,2,,2.11883,1.167748,-0.169914,4.407575 +110,1977,3,,2.112729,1.167753,-0.176024,4.401481 +111,1977,4,,2.106298,1.167753,-0.182456,4.395051 +112,1978,1,,2.099996,1.167753,-0.188758,4.388751 +113,1978,2,,2.093869,1.167753,-0.194886,4.382623 +114,1978,3,,2.087793,1.167753,-0.200962,4.376548 +115,1978,4,,2.081689,1.167753,-0.207066,4.370444 +116,1979,1,,2.075554,1.167753,-0.213201,4.364308 +117,1979,2,,2.069411,1.167753,-0.219344,4.358165 +118,1979,3,,2.063273,1.167753,-0.225481,4.352028 +119,1979,4,,2.057142,1.167753,-0.231613,4.345896 +120,1980,1,,2.051011,1.167753,-0.237744,4.339766 +121,1980,2,,2.044879,1.167753,-0.243875,4.333634 +122,1980,3,,2.038747,1.167753,-0.250008,4.327501 +123,1980,4,,2.032614,1.167753,-0.256141,4.321369 +124,1981,1,,2.026481,1.167753,-0.262273,4.315236 diff --git a/statsmodels/tsa/tests/results/results_arima_forecasts.csv b/statsmodels/tsa/tests/results/results_arima_forecasts.csv new file mode 100644 index 0000000..1bacdf9 --- /dev/null +++ b/statsmodels/tsa/tests/results/results_arima_forecasts.csv @@ -0,0 +1,65 @@ +year,quarter,fc111nc,fc111ncse,fc111ncconf1,fc111ncconf2,fc111ncdyn,fc111ncdynse,fc111ncdynconf1,fc111ncdynconf2,fc111c,fc111cse,fc111cconf1,fc111cconf2,fc111cdyn,fc111cdynse,fc111cdynconf1,fc111cdynconf2,fc211nc,fc211ncse,fc211ncconf1,fc211ncconf2,fc211ncdyn,fc211ncdynse,fc211ncdynconf1,fc211ncdynconf2,fc211c,fc211cse,fc211cconf1,fc211cconf2,fc211cdyn,fc211cdynse,fc211cdynconf1,fc211ncdynconf2,fc111c_css,fc111cse_css,fc111cconf1_css,fc111cconf2_css,fc111cdyn_css,fc111cdynse_css,fc111cdynconf1_css,fc111cdynconf2_css,fc112c_css,fc112cse_css,fc112cconf1_css,fc112cconf2_css,fc112cdyn_css,fc112cdynse_css,fc112cdynconf1_css,fc112cdynconf2_css +2000,1,170.2233243826,,,,170.2233243826,0.8056,168.644,171.802,170.2864191564,,,,170.2864191564,0.7999,168.719,171.854,170.2746065512,,,,170.2746065512,0.7953,168.716,171.833,170.2895305662,,,,170.2895305662,0.7925,168.736,171.843,170.304,,,,170.304,0.7972,168.742,171.867,170.154,,,,170.154,0.8259,168.535,171.772 +2000,2,171.9184524902,,,,171.1377283933,1.23,168.727,173.549,171.9837202702,,,,171.2664932271,1.2305,168.855,173.678,172.0019713519,,,,171.2023842717,1.291,168.672,173.733,172.0147981675,,,,171.2401153995,1.2804,168.731,173.75,171.99,,,,171.309,1.211,168.935,173.682,172.134,,,,171.103,1.4083,168.343,173.863 +2000,3,173.828787093,,,,172.0432982132,1.6186,168.871,175.216,173.892520498,,,,172.2406036174,1.6254,169.055,175.426,173.897011282,,,,172.1176130768,1.7143,168.758,175.478,173.9104306451,,,,172.1817815353,1.698,168.854,175.51,173.888,,,,172.313,1.5831,169.21,175.416,173.722,,,,171.978,1.8547,168.343,175.613 +2000,4,175.0288317109,,,,172.9401191906,1.9993,169.021,176.859,175.0750500309,,,,173.2091088061,2.0093,169.271,177.147,174.9780464837,,,,173.0268876834,2.1027,168.906,177.148,174.9987913625,,,,173.1198404087,2.0819,169.039,177.2,175.08,,,,173.318,1.9403,169.515,177.121,174.89,,,,172.904,2.1881,168.616,177.193 +2001,1,176.8057511331,,,,173.8282758494,2.3815,169.161,178.496,176.8460409347,,,,174.1723457236,2.3897,169.489,178.856,176.823803435,,,,173.9314905347,2.4735,169.084,178.779,176.837192481,,,,174.0552845768,2.4481,169.257,178.854,176.845,,,,174.323,2.2912,169.833,178.814,176.748,,,,173.795,2.4921,168.911,178.679 +2001,2,177.5317122,,,,174.7078518968,2.7692,169.28,180.135,177.5487445729,,,,175.1306310477,2.7691,169.703,180.558,177.4100697987,,,,174.8316846814,2.8356,169.274,180.389,177.4314962031,,,,174.9883502198,2.8046,169.491,180.485,177.568,,,,175.328,2.6392,170.156,180.501,177.127,,,,174.711,2.7534,169.314,180.107 +2001,3,178.5005259429,,,,175.5789302315,3.1643,169.377,181.781,178.5075160891,,,,176.0842624201,3.1483,169.914,182.255,178.4434523593,,,,175.7275374931,3.194,169.467,181.988,178.4577307847,,,,175.9191394228,3.1554,169.735,182.104,178.535,,,,176.334,2.9858,170.482,182.186,178.473,,,,175.609,2.998,169.733,181.485 +2001,4,178.551424957,,,,176.4415929509,3.5677,169.449,183.434,178.5405940261,,,,177.0335195914,3.5276,170.12,183.947,178.4127628861,,,,176.6190787111,3.5515,169.658,183.58,178.431638159,,,,176.8477289245,3.503,169.982,183.713,178.594,,,,177.34,3.3315,170.81,183.869,178.103,,,,176.519,3.2202,170.207,182.831 +2002,1,178.5113144309,,,,177.2959213597,3.9799,169.495,185.096,178.4950101925,,,,177.9786654965,3.9067,170.322,185.636,178.4280846262,,,,177.5063307758,3.91,169.843,185.17,178.4424347618,,,,177.7741891719,3.8486,170.231,185.317,178.567,,,,178.345,3.6766,171.139,185.551,178.58,,,,177.421,3.4306,170.697,184.145 +2002,2,180.2247478027,,,,178.1419959768,4.4009,169.516,186.768,180.2361498037,,,,178.9199472648,4.2853,170.521,187.319,180.3880488337,,,,178.3893146464,4.2706,170.019,186.76,180.384875915,,,,178.6985877074,4.1932,170.48,186.917,180.28,,,,179.351,4.021,171.47,187.232,180.428,,,,178.329,3.6271,171.22,185.438 +2002,3,180.8812555147,,,,178.9798965432,4.8306,169.512,188.448,180.8929359533,,,,179.8575971709,4.663,170.718,188.997,180.8779742943,,,,179.2680509174,4.6342,170.185,188.351,180.8883836647,,,,179.6209898179,4.5371,170.728,188.514,180.941,,,,180.357,4.3645,171.803,188.912,180.712,,,,179.232,3.8146,171.756,186.709 +2002,4,182.1217530645,,,,179.8097020298,5.2691,169.483,190.137,182.1440794946,,,,180.7918335272,5.0394,170.915,190.669,182.1982416071,,,,180.1425600339,5.0013,170.34,189.945,182.2033611924,,,,180.5414587027,4.8808,170.975,190.108,182.182,,,,181.364,4.707,172.138,190.589,182.352,,,,180.139,3.9926,172.313,187.964 +2003,1,183.5863851269,,,,180.6314906442,5.7159,169.428,191.835,183.6172936436,,,,181.7228615235,5.4142,171.111,192.334,183.6677376966,,,,181.0128623329,5.3723,170.483,191.542,183.6730872079,,,,181.4600555571,5.2243,171.221,191.699,183.644,,,,182.37,5.0481,172.476,192.264,183.513,,,,181.043,4.1635,172.883,189.204 +2003,2,184.1174433192,,,,181.4453398387,6.171,169.35,193.54,184.138603356,,,,182.6508740151,5.787,171.308,193.993,184.0698585717,,,,181.8789780516,5.7474,170.614,193.144,184.0850064378,,,,182.376839639,5.5676,171.464,193.289,184.178,,,,183.376,5.3878,172.817,193.936,184.023,,,,181.949,4.3273,173.468,190.43 +2003,3,184.5443919305,,,,182.251326317,6.6341,169.249,195.254,184.561043527,,,,183.5760522653,6.1576,171.507,195.645,184.5149896099,,,,182.7409273298,6.1268,170.733,194.749,184.5290257015,,,,183.2918683299,5.9109,171.707,194.877,184.611,,,,184.383,5.7256,173.161,195.605,184.485,,,,182.854,4.4853,174.063,191.645 +2003,4,185.790913924,,,,183.0495260422,7.1048,169.124,196.975,185.8194914079,,,,184.4985666411,6.5257,171.708,197.289,185.879208987,,,,183.5987302099,6.5106,170.838,196.359,185.885307579,,,,184.2051971955,6.2541,171.947,196.463,185.858,,,,185.39,6.0616,173.509,197.27,185.991,,,,183.76,4.6378,174.67,192.85 +2004,1,187.2605858834,,,,183.840014243,7.583,168.978,198.702,187.2983369795,,,,185.4185772689,6.8911,171.912,198.925,187.3504459251,,,,184.4524066383,6.8989,170.931,197.974,187.3573082078,,,,185.1168800421,6.5971,172.187,198.047,187.324,,,,186.397,6.3954,173.862,198.931,187.266,,,,184.665,4.7856,175.285,194.044 +2004,2,188.3727424216,,,,184.6228654218,8.0684,168.809,200.437,188.4084484474,,,,186.3362346499,7.2535,172.12,200.553,188.3934156532,,,,185.3019764651,7.2916,171.011,199.593,188.4057130567,,,,186.026968973,6.9399,172.425,199.629,188.434,,,,187.403,6.727,174.219,200.588,188.368,,,,185.57,4.9288,175.91,195.231 +2004,3,190.1751707887,,,,185.3981533608,8.5607,168.619,202.177,190.217596201,,,,187.2516802385,7.6128,172.331,202.173,190.2660090321,,,,186.1474594451,7.6889,171.078,201.217,190.2727541662,,,,186.9355144424,7.2823,172.662,201.209,190.228,,,,188.41,7.0562,174.581,202.24,190.264,,,,186.476,5.0681,176.542,196.409 +2004,4,191.9608597652,,,,186.1659511297,9.0598,168.409,203.923,192.0017457862,,,,188.1650469862,7.9689,172.546,203.784,192.0082426728,,,,186.9888752382,8.0906,171.132,202.846,192.0172722694,,,,187.8425653072,7.6243,172.899,202.786,192.004,,,,189.418,7.3829,174.947,203.888,191.856,,,,187.381,5.2036,177.182,197.58 +2005,1,192.9249100574,,,,186.9263310921,9.5653,168.179,205.674,192.9483784061,,,,189.076459853,8.3216,172.766,205.387,192.8516392196,,,,187.8262434093,8.4968,171.173,204.48,192.867884817,,,,188.7481688778,7.9659,173.135,204.361,192.964,,,,190.425,7.7069,175.32,205.53,192.672,,,,188.286,5.3357,177.828,198.744 +2005,2,195.0485996347,,,,187.6793649125,10.077,167.929,207.43,195.0761539867,,,,189.9860362873,8.6709,172.991,206.981,195.1215629644,,,,188.6595834296,8.9073,171.202,206.118,195.1247041843,,,,189.6523709671,8.3068,173.371,205.933,195.076,,,,191.432,8.0282,175.697,207.167,195.149,,,,189.192,5.4645,178.481,199.902 +2005,3,195.8829345899,,,,188.425123563,10.5947,167.66,209.19,195.8888528366,,,,190.8938866775,9.0167,173.222,208.566,195.769454439,,,,189.4889146764,9.3223,171.218,207.76,195.7841430678,,,,190.5552159377,8.6471,173.607,207.503,195.907,,,,192.439,8.3467,176.08,208.798,195.321,,,,190.097,5.5904,179.14,201.054 +2005,4,200.881551968,,,,189.1636773301,11.1182,167.372,210.955,200.9296590393,,,,191.8001147769,9.3588,173.457,210.143,201.2531803919,,,,190.3142564339,9.7415,171.221,209.407,201.2283148262,,,,191.4567467481,8.9866,173.843,209.07,200.869,,,,193.447,8.6623,176.469,210.424,201.704,,,,191.002,5.7136,179.804,202.201 +2006,1,200.8374966075,,,,189.8950958213,11.6472,167.067,212.723,200.8202472437,,,,192.7048181018,9.6974,173.698,211.711,200.4617908111,,,,191.1356278936,10.165,171.212,211.059,200.4879862602,,,,192.3570049969,9.3252,174.08,210.634,200.822,,,,194.454,8.975,176.863,212.045,198.987,,,,191.907,5.8341,180.473,203.342 +2006,2,202.1024666878,,,,190.6194479714,12.1817,166.744,214.495,202.0675124183,,,,193.6080883069,10.0323,173.945,213.271,201.9885761817,,,,191.9530481544,10.5927,171.192,212.714,201.9892792336,,,,193.256030966,9.663,174.317,212.195,202.082,,,,195.462,9.2848,177.264,213.66,202.774,,,,192.813,5.9522,181.147,204.479 +2006,3,204.1807964789,,,,191.3368020496,12.7213,166.404,216.27,204.1450996188,,,,194.5100115376,10.3635,174.198,214.822,204.179541508,,,,192.7665362236,11.0246,171.159,214.374,204.1674660761,,,,194.1538636621,9.9997,174.555,213.753,204.15,,,,196.469,9.5916,177.67,215.268,203.062,,,,193.718,6.068,181.825,205.611 +2006,4,203.0157854602,,,,192.0472256651,13.2659,166.046,218.048,202.9319404185,,,,195.410668761,10.6911,174.457,216.365,202.6394746314,,,,193.5761110169,11.4604,171.114,216.038,202.6516262814,,,,195.0505408572,10.3355,174.793,215.308,203.003,,,,197.477,9.8954,178.082,216.872,202.726,,,,194.623,6.1816,182.508,206.739 +2007,1,204.7648391013,,,,192.7507857741,13.8154,165.673,219.828,204.7053158681,,,,196.3101360771,11.015,174.721,217.899,204.864868405,,,,194.3817913592,11.9003,171.058,217.706,204.8390307301,,,,195.9460991278,10.67,175.033,216.859,204.754,,,,198.485,10.1962,178.5,218.469,204.658,,,,195.529,6.2932,183.194,207.863 +2007,2,207.2769566127,,,,193.447548686,14.3694,165.284,221.611,207.2414456805,,,,197.2084850116,11.3352,174.992,219.425,207.4265796922,,,,195.1835959846,12.3441,170.99,219.378,207.3960909405,,,,196.8405738924,11.0034,175.274,218.407,207.258,,,,199.492,10.494,178.924,220.06,207.329,,,,196.434,6.4029,183.885,208.983 +2007,3,208.6912331435,,,,194.1375800696,14.928,164.879,223.396,208.6492720137,,,,198.105782791,11.6518,175.269,220.943,208.6537586221,,,,195.9815435372,12.7917,170.91,221.053,208.6352773018,,,,197.7339994486,11.3356,175.517,219.951,208.67,,,,200.5,10.7888,179.355,221.646,208.115,,,,197.339,6.5107,184.579,210.1 +2007,4,210.5410872839,,,,194.8209449591,15.4908,164.459,225.182,210.500111343,,,,199.0020926004,11.9647,175.552,222.453,210.5576053658,,,,196.7756525715,13.2432,170.819,222.732,210.532355268,,,,198.626409008,11.6665,175.761,221.492,210.514,,,,201.508,11.0805,179.791,223.225,210.516,,,,198.245,6.6167,185.276,211.213 +2008,1,214.1899253565,,,,195.4977077604,16.0578,164.025,226.971,214.1698597159,,,,199.8974738271,12.2741,175.841,223.954,214.3829696128,,,,197.5659415525,13.6983,170.718,224.414,214.3413261881,,,,199.5178347313,11.996,176.006,223.03,214.14,,,,202.516,11.3693,180.232,224.799,213.999,,,,199.15,6.721,185.977,212.323 +2008,2,215.6458854232,,,,196.1679322573,16.6289,163.576,228.76,215.5949327403,,,,200.7919822885,12.58,176.136,225.448,215.4886503677,,,,198.3524288567,14.1572,170.605,226.1,215.4686267913,,,,200.4083077608,12.3242,176.253,224.563,215.587,,,,203.524,11.6551,180.68,226.367,214.828,,,,200.055,6.8238,186.681,213.43 +2008,3,220.6987299825,,,,196.8316816174,17.2038,163.113,230.55,220.6741351366,,,,201.6856704468,12.8823,176.437,226.935,220.9632787766,,,,199.1351327719,14.6196,170.481,227.789,220.9055597068,,,,201.2978582533,12.6509,176.503,226.093,220.602,,,,204.532,11.9379,181.134,227.93,221.009,,,,200.961,6.925,187.388,214.534 +2008,4,218.3717504048,,,,197.4890183978,17.7824,162.636,232.342,218.2426223953,,,,202.5785876106,13.1812,176.744,228.413,217.6667975573,,,,199.9140714981,15.0855,170.347,229.481,217.6747091231,,,,202.186515411,12.9761,176.754,227.619,218.294,,,,205.54,12.2178,181.593,229.486,215.84,,,,201.866,7.0248,188.098,215.634 +2009,1,212.6894332539,,,,198.1400045515,18.3646,162.146,234.134,212.4740916853,,,,203.4707801248,13.4766,177.057,229.884,211.8959992321,,,,200.6892631477,15.5549,170.202,231.176,211.9059766187,,,,203.0743075115,13.2999,177.007,229.142,212.678,,,,206.548,12.4947,182.059,231.037,212.326,,,,202.771,7.1232,188.81,216.733 +2009,2,213.1786192035,,,,198.7847014328,18.9502,161.643,235.926,213.0392637652,,,,204.3622915483,13.7687,177.376,231.348,213.4572131423,,,,201.460725746,16.0277,170.047,232.874,213.3903799208,,,,203.9612619376,13.6221,177.262,230.66,213.202,,,,207.556,12.7688,182.529,232.582,213.599,,,,203.677,7.2203,189.525,217.828 +2009,3,215.1701293805,,,,199.4231698032,19.5392,161.127,237.719,215.1095875387,,,,205.2531628216,14.0574,177.701,232.805,215.5892010821,,,,202.2284772315,16.5038,169.882,234.575,215.5198428062,,,,204.847405205,13.9428,177.52,232.175,215.208,,,,208.564,13.04,183.006,234.122,215.75,,,,204.582,7.316,190.243,218.921 +2009,4,217.2661592661,0.8056,215.687,218.845,200.0554698373,20.1314,160.599,239.512,217.2554734364,0.7999,215.688,218.823,206.1434324244,14.3429,178.032,234.255,217.5930744392,0.7953,216.034,219.152,202.9925354565,16.9832,169.706,236.279,217.5372491403,0.7925,215.984,219.091,205.7327629904,14.2619,177.78,233.686,217.308,0.7972,215.745,218.871,209.572,13.3085,183.488,235.656,217.422,0.8259,215.804,219.041,205.487,7.4105,190.963,220.012 +2010,1,218.1388055236,1.23,215.728,220.55,200.6816611283,20.7267,160.058,241.305,218.1265713231,1.2305,215.715,220.538,207.0331365232,14.6251,178.368,235.698,218.6612703593,1.291,216.131,221.192,203.7529181874,17.4658,169.521,237.985,218.5527257447,1.2804,216.043,221.062,206.6173601574,14.5794,178.042,235.192,218.236,1.211,215.862,220.609,210.58,13.5741,183.975,237.185,218.346,1.4083,215.585,221.106,206.393,7.5039,191.685,221.1 +2010,2,219.003021018,1.6186,215.831,222.175,201.3018026937,21.3249,159.506,243.098,218.9982561241,1.6254,215.813,222.184,207.9223091109,14.9042,178.711,237.134,219.6986031575,1.7143,216.339,223.059,204.5096431051,17.9516,169.325,239.694,219.5410430132,1.698,216.213,222.869,207.5012207828,14.8952,178.307,236.695,219.168,1.5831,216.065,222.271,211.588,13.837,184.468,238.708,219.238,1.8547,215.603,222.874,207.298,7.596,192.41,222.186 +2010,3,219.8588872002,1.9993,215.94,223.778,201.9159529807,21.9261,158.942,244.89,219.8704925599,2.0093,215.932,223.809,208.8109821365,15.1802,179.058,238.564,220.7260098869,2.1027,216.605,224.847,205.2627278056,18.4404,169.12,241.405,220.5214492212,2.0819,216.441,224.602,208.3843681813,15.2095,178.574,238.194,220.104,1.9403,216.301,223.907,212.597,14.0972,184.967,240.226,220.152,2.1881,215.864,224.441,208.203,7.6871,193.137,223.27 +2010,4,220.706484734,2.3815,216.039,225.374,202.524169872,22.5299,158.366,246.682,220.7432474715,2.3897,216.06,225.427,209.6991856291,15.4531,179.412,239.987,221.7475271771,2.4735,216.9,226.595,206.0121897999,18.9323,168.905,243.119,221.4974064825,2.4481,216.699,226.296,209.2668249293,15.522,178.844,239.689,221.044,2.2912,216.553,225.535,213.605,14.3547,185.47,241.739,221.052,2.4921,216.167,225.936,209.109,7.7771,193.866,224.351 +2011,1,221.545893504,2.7692,216.118,226.973,203.126510691,23.1365,157.78,248.473,221.6164896931,2.7691,216.189,227.044,210.5869478123,15.723,179.771,241.403,222.7639487392,2.8356,217.206,228.322,206.7580465151,19.4272,168.681,244.835,222.4696165704,2.8046,216.973,227.967,210.1486128889,15.8329,179.117,241.18,221.988,2.6392,216.815,227.161,214.613,14.6096,185.979,243.247,221.961,2.7534,216.565,227.358,210.014,7.8661,194.597,225.431 +2011,2,222.3771926233,3.1643,216.175,228.579,203.7230322072,23.7456,157.183,250.264,222.4901899324,3.1483,216.32,228.661,211.4742952135,15.9899,180.135,242.814,223.775445946,3.194,217.515,230.036,207.5003152945,19.9251,168.448,246.553,223.4382960718,3.1554,217.254,229.623,211.0297532299,16.1421,179.392,242.668,222.935,2.9858,217.083,228.787,215.621,14.8619,186.493,244.75,222.864,2.998,216.988,228.74,210.919,7.9541,195.33,226.509 +2011,3,223.2004604401,3.5677,216.208,230.193,204.3137906419,24.3571,156.575,252.053,223.3643206578,3.5276,216.45,230.278,212.3612527653,16.2539,180.504,244.218,224.7820706652,3.5515,217.821,231.743,208.2390133976,20.4258,168.205,248.273,224.4035738561,3.503,217.538,231.269,211.9102664522,16.4495,179.67,244.151,223.886,3.3315,217.357,230.416,216.63,15.1116,187.011,246.248,223.771,3.2202,217.459,230.082,211.825,8.0411,196.064,227.585 +2011,4,224.0157745462,3.9799,216.215,231.816,204.8988416729,24.9711,155.956,253.841,224.2388559925,3.9067,216.582,231.896,213.2478439017,16.5152,180.879,245.617,225.7838517429,3.91,218.12,233.447,208.9741580012,20.9293,167.954,249.995,225.3655605905,3.8486,217.822,232.909,212.7901724066,16.7553,179.95,245.63,224.84,3.6766,217.634,232.046,217.638,15.3588,187.535,247.741,224.675,3.4306,217.951,231.399,212.73,8.1272,196.801,228.659 +2012,1,224.8232117835,4.4009,216.198,233.449,205.4782404403,25.5873,155.328,255.628,225.1137716155,4.2853,216.715,233.513,214.134090648,16.7736,181.258,247.01,226.7808135168,4.2706,218.411,235.151,209.7057661993,21.4356,167.693,251.719,226.3243609722,4.1932,218.106,234.543,213.6694903158,17.0594,180.234,247.105,225.797,4.021,217.916,233.678,218.646,15.6036,188.064,249.229,225.581,3.6271,218.472,232.69,213.635,8.2124,197.539,229.731 +2012,2,225.6228482515,4.8306,216.155,235.091,206.0520415515,26.2056,154.69,257.414,225.9890446675,4.663,216.85,235.128,215.0200137057,17.0293,181.643,248.397,227.7729793693,4.6342,218.69,236.856,210.4338550039,21.9446,167.423,253.444,227.2800759537,4.5371,218.387,236.173,214.5482387938,17.3618,180.52,248.577,226.757,4.3645,218.202,235.311,219.654,15.8459,188.597,250.712,226.486,3.8146,219.009,233.962,214.541,8.2967,198.279,230.802 +2012,3,226.4147593147,5.2691,216.088,236.742,206.6202990863,26.8261,154.042,259.198,226.8646536632,5.0394,216.988,236.742,215.9056325317,17.2823,182.033,249.778,228.7603724093,5.0013,218.958,238.563,211.1584413449,22.4563,167.145,255.172,228.2328032167,4.8808,218.667,237.799,215.4264358655,17.6624,180.809,250.044,227.719,4.707,218.494,236.945,220.663,16.0859,189.135,252.191,227.392,3.9926,219.566,235.217,215.446,8.3802,199.021,231.871 +2012,4,227.1990196094,5.7159,215.996,238.402,207.183066602,27.4486,153.385,260.981,227.740578409,5.4142,217.129,238.352,216.7909654136,17.5327,182.428,251.154,229.7430156036,5.3723,219.213,240.273,211.8795420709,22.9706,166.858,256.901,229.1826373376,5.2243,218.943,239.422,216.304098985,17.9613,181.101,251.508,228.684,5.0481,218.79,238.578,221.671,16.3234,189.678,253.665,228.297,4.1635,220.136,236.457,216.351,8.4628,199.764,232.938 +2013,1,227.9757030506,6.171,215.881,240.071,207.7403971383,28.073,152.718,262.762,228.6167999251,5.787,217.274,239.959,217.6760295396,17.7805,182.827,252.525,230.7209318028,5.7474,219.456,241.986,212.5971739494,23.4874,166.563,258.632,230.1296698969,5.5676,219.217,241.042,217.1812450544,18.2585,181.395,252.967,229.651,5.3878,219.091,240.211,222.68,16.5587,190.225,255.134,229.202,4.3273,220.721,237.683,217.257,8.5447,200.509,234.004 +2013,2,228.7448828395,6.6341,215.742,241.747,208.2923432229,28.6993,152.043,264.542,229.4933003724,6.1576,217.425,241.562,218.5608410646,18.0257,183.231,253.891,231.6941437462,6.1268,219.686,243.702,213.3113536672,24.0068,166.259,260.364,231.0739895756,5.9109,219.489,242.659,218.0578904402,18.5539,181.693,254.423,230.621,5.7256,219.399,241.843,223.688,16.7917,190.777,256.599,230.107,4.4853,221.316,238.898,218.162,8.6257,201.256,235.068 +2013,3,229.50663147,7.1048,215.581,243.432,208.8389568756,29.3273,151.358,266.319,230.3700629844,6.5257,217.58,243.16,219.4454151726,18.2686,183.64,255.251,232.6626740638,6.5106,219.902,245.423,214.0220978309,24.5287,165.947,262.097,232.0156822477,6.2541,219.758,244.274,218.9340509913,18.8477,181.993,255.875,231.592,6.0616,219.712,243.473,224.696,17.0225,191.333,258.06,231.013,4.6378,221.923,240.103,219.067,8.706,202.004,236.131 +2013,4,230.2610207356,7.583,215.399,245.123,209.3802896139,29.957,150.666,268.095,231.2470720022,6.8911,217.741,244.753,220.3297661348,18.5089,184.053,256.607,233.6265452764,6.8989,220.105,247.148,214.7294229673,25.053,165.626,263.832,232.9548310688,6.5971,220.025,245.885,219.8097420547,19.1397,182.297,257.323,232.566,6.3954,220.031,245.101,225.705,17.2511,191.893,259.516,231.918,4.7856,222.538,241.298,219.972,8.7856,202.753,237.192 +2014,1,231.0081217362,8.0684,215.194,246.822,209.9163924575,30.5884,149.964,269.869,232.1243126143,7.2535,217.908,246.341,221.2139073645,18.747,184.471,257.957,234.5857797965,7.2916,220.294,248.877,215.4333455235,25.5797,165.298,265.569,233.8915165624,6.9399,220.29,247.493,220.6849784915,19.43,182.603,258.767,233.542,6.727,220.357,246.726,226.713,17.4776,192.458,260.969,232.823,4.9288,223.163,242.484,220.878,8.8645,203.504,238.252 +2014,2,231.7480048848,8.5607,214.969,248.527,210.4473159331,31.2213,149.255,271.64,233.0017708995,7.6128,218.081,247.923,222.0978514689,18.9827,184.893,259.303,235.5403999291,7.6889,220.471,250.61,216.1338818676,26.1088,164.962,267.306,234.8258167029,7.2823,220.553,249.099,221.5597746927,19.7186,182.912,260.208,234.519,7.0562,220.689,248.349,227.722,17.7019,193.027,262.417,233.729,5.0681,223.795,243.662,221.783,8.9426,204.256,239.31 +2014,3,232.480739914,9.0598,214.724,250.238,210.9731100793,31.8558,148.537,273.409,233.8794337734,7.9689,218.261,249.498,222.9816102973,19.2161,185.319,260.644,236.4904278715,8.0906,220.633,252.348,216.8310482889,26.6402,164.617,269.045,235.7578069968,7.6243,220.814,250.701,222.4341445934,20.0055,183.224,261.644,235.498,7.3829,221.028,249.968,228.73,17.9242,193.599,263.861,234.634,5.2036,224.435,244.833,222.688,9.0201,205.009,240.368 +2014,4,233.206395883,9.5653,214.459,251.954,211.4938244514,32.4916,147.811,275.176,234.7572889381,8.3216,218.447,251.067,223.8651949865,19.4472,185.749,261.981,237.4358857144,8.4968,220.783,254.089,217.5248609985,27.1738,164.265,270.785,236.6875605602,7.9659,221.075,252.3,223.3081016879,20.2907,183.539,263.077,236.479,7.7069,221.374,251.584,229.739,18.1444,194.176,265.301,235.539,5.3357,225.082,245.997,223.594,9.097,205.764,241.423 +2015,1,233.9250411836,10.077,214.175,253.676,212.0095081258,33.1288,147.078,276.941,235.6353248348,8.6709,218.641,252.63,224.7486160043,19.6762,186.184,263.313,238.3767954422,8.9073,220.919,255.835,218.2153361293,27.7096,163.905,272.525,237.6151481949,8.3068,221.334,253.896,224.1816590432,20.5741,183.857,264.506,237.461,8.0282,221.726,253.196,230.747,18.3627,194.757,266.737,236.445,5.4645,225.734,247.155,224.499,9.1731,206.52,242.478 +2015,2,234.6367435468,10.5947,213.872,255.402,212.5202097049,33.7673,146.338,278.703,236.5135305999,9.0167,218.841,254.186,225.6318831888,19.9031,186.623,264.641,239.3131789336,9.3223,221.042,257.585,218.9024897366,28.2477,163.538,274.267,238.5406384615,8.6471,221.593,255.489,225.0548293128,20.8559,184.178,265.932,238.445,8.3467,222.086,254.804,231.755,18.5789,195.341,268.17,237.35,5.5904,226.393,248.307,225.404,9.2487,207.277,243.532 +2015,3,235.3415700494,11.1182,213.55,257.133,213.0259773212,34.407,145.589,280.463,237.3918960223,9.3588,219.049,255.735,226.5150057872,20.1278,187.065,265.965,240.245057962,9.7415,221.152,259.338,219.5863377988,28.7878,163.163,276.009,239.4640977504,8.9866,221.851,257.077,225.9276247493,21.136,184.502,267.354,239.43,8.6623,222.452,256.408,232.764,18.7933,195.93,269.598,238.255,5.7136,227.057,249.454,226.31,9.3237,208.036,244.584 +2015,4,236.0395871201,11.6472,213.211,258.868,213.5268586427,35.0479,144.834,282.22,238.2704115052,9.6974,219.264,257.277,227.3979924905,20.3505,187.512,267.284,241.1724541961,10.165,221.249,261.096,220.2668962169,29.3301,162.781,277.753,240.3855903505,9.3252,222.108,258.663,226.800057218,21.4145,184.828,268.772,240.416,8.975,222.825,258.007,233.772,19.0058,196.522,271.023,239.161,5.8341,227.726,250.595,227.215,9.398,208.795,245.635 diff --git a/statsmodels/tsa/tests/results/results_arima_forecasts_all_css.csv b/statsmodels/tsa/tests/results/results_arima_forecasts_all_css.csv new file mode 100644 index 0000000..6e36d98 --- /dev/null +++ b/statsmodels/tsa/tests/results/results_arima_forecasts_all_css.csv @@ -0,0 +1,231 @@ +fc,fcdyn,fcdyn2,fcdyn3,fcdyn4,orig_index,year,quarter,,,,,, +NA,NA,NA,NA,NA,0,1959,1,,,,,, +NA,NA,NA,NA,NA,1,1959,2,,,,,, +NA,NA,NA,NA,NA,2,1959,3,,,,,, +NA,NA,NA,NA,NA,3,1959,4,,,,,, +NA,NA,NA,NA,NA,4,1960,1,,,,,, +29.7575819218,29.7575819218,NA,NA,NA,5,1960,2,,,,,, +29.6889197051,29.9572171332,NA,NA,NA,6,1960,3,,,,,, +29.9626330839,30.1680969792,NA,NA,NA,7,1960,4,,,,,, +29.9910430709,30.3882531469,NA,NA,NA,8,1961,1,,,,,, +29.9504240714,30.6079779559,NA,NA,NA,9,1961,2,,,,,, +30.0841410663,30.8285844839,NA,NA,NA,10,1961,3,,,,,, +30.1048255382,31.0506468204,NA,NA,NA,11,1961,4,,,,,, +30.1800344216,31.2730827044,NA,NA,NA,12,1962,1,,,,,, +30.3714349362,31.4957681649,NA,NA,NA,13,1962,2,,,,,, +30.3295604942,31.7187987306,NA,NA,NA,14,1962,3,,,,,, +30.5486434278,31.9420751464,NA,NA,NA,15,1962,4,,,,,, +30.5522722863,32.1655550591,NA,NA,NA,16,1963,1,,,,,, +30.6061743416,32.3892452608,NA,NA,NA,17,1963,2,,,,,, +30.8498630373,32.6131379091,NA,NA,NA,18,1963,3,,,,,, +30.8580075917,32.837225959,NA,NA,NA,19,1963,4,,,,,, +31.1110006502,33.0615091134,NA,NA,NA,20,1964,1,,,,,, +31.045159744,33.28598686,NA,NA,NA,21,1964,2,,,,,, +31.1522012578,33.5106583813,NA,NA,NA,22,1964,3,,,,,, +31.2328229409,33.7355235973,NA,NA,NA,23,1964,4,,,,,, +31.4151846198,33.9605825887,31.4151846198,NA,NA,24,1965,1,,,,,, +31.4996864174,34.1858353991,31.5451621646,NA,NA,25,1965,2,,,,,, +31.7379939232,34.411282142,31.6823961791,NA,NA,26,1965,3,,,,,, +31.7603857461,34.6369229685,31.8187238201,NA,NA,27,1965,4,,,,,, +32.0533148842,34.8627580301,31.9539331921,NA,NA,28,1966,1,,,,,, +32.4829850845,35.088787485,32.0898712134,NA,NA,29,1966,2,,,,,, +32.6081136012,35.3150114973,32.2260104566,NA,NA,30,1966,3,,,,,, +33.1082366398,35.5414302325,32.3621085756,NA,NA,31,1966,4,,,,,, +33.0256737089,35.7680438567,32.4983553035,NA,NA,32,1967,1,,,,,, +33.3102788967,35.9948525371,32.634744717,NA,NA,33,1967,2,,,,,, +33.5898710208,36.2218564413,32.7712370524,NA,NA,34,1967,3,,,,,, +33.9093400596,36.4490557371,32.9078459341,NA,NA,35,1967,4,,,,,, +34.3561409186,36.6764505927,33.044575937,NA,NA,36,1968,1,,,,,, +34.6307558557,36.9040411762,33.1814227831,NA,NA,37,1968,2,,,,,, +35.2106795469,37.1318276561,33.3183869295,NA,NA,38,1968,3,,,,,, +35.5711327549,37.3598102011,33.4554693153,NA,NA,39,1968,4,,,,,, +36.0080894273,37.5879889798,33.5926696993,NA,NA,40,1969,1,,,,,, +36.6606355815,37.8163641612,33.7299881027,NA,NA,41,1969,2,,,,,, +37.1360332408,38.0449359144,33.8674247253,NA,NA,42,1969,3,,,,,, +37.6751991393,38.2737044085,34.0049796551,NA,NA,43,1969,4,,,,,, +38.3005703403,38.5026698128,34.1426529764,NA,NA,44,1970,1,,,,,, +38.9079571589,38.7318322969,34.280444799,NA,NA,45,1970,2,,,,,, +39.2733991806,38.9611920304,34.4183552264,NA,NA,46,1970,3,,,,,, +39.8148885174,39.190749183,34.5563843583,NA,NA,47,1970,4,,,,,, +40.2915758461,39.4205039248,34.6945322972,NA,NA,48,1971,1,,,,,, +40.4225895126,39.6504564257,34.8327991459,NA,NA,49,1971,2,,,,,, +41.0185075749,39.880606856,34.9711850064,NA,NA,50,1971,3,,,,,, +41.2142853032,40.110955386,35.1096899812,NA,NA,51,1971,4,,,,,, +41.5594233571,40.3415021864,35.2483141727,NA,NA,52,1972,1,,,,,, +41.8323265312,40.5722474276,35.3870576838,NA,NA,53,1972,2,,,,,, +42.1305292337,40.8031912806,35.5259206169,NA,NA,54,1972,3,,,,,, +42.5580908985,41.0343339163,35.664903075,NA,NA,55,1972,4,,,,,, +43.0849626521,41.2656755057,35.8040051609,NA,NA,56,1973,1,,,,,, +44.2451877539,41.4972162202,35.9432269775,NA,NA,57,1973,2,,,,,, +44.6132865443,41.7289562311,36.082568628,NA,NA,58,1973,3,,,,,, +46.3671644035,41.96089571,36.2220302155,NA,NA,59,1973,4,,,,,, +47.4424883646,42.1930348285,36.3616118431,NA,NA,60,1974,1,,,,,, +48.9233461033,42.4253737585,36.5013136143,NA,NA,61,1974,2,,,,,, +50.0952378443,42.6579126721,36.6411356325,NA,NA,62,1974,3,,,,,, +51.9839926027,42.8906517412,36.7810780011,NA,NA,63,1974,4,,,,,, +53.1741129397,43.1235911382,36.9211408237,NA,NA,64,1975,1,,,,,, +53.8053193308,43.3567310356,37.0613242041,NA,NA,65,1975,2,,,,,, +54.8708705552,43.5900716059,37.2016282459,NA,NA,66,1975,3,,,,,, +55.6636550103,43.8236130218,37.3420530531,NA,NA,67,1975,4,,,,,, +56.6131925387,44.0573554562,37.4825987296,NA,NA,68,1976,1,,,,,, +56.7317375164,44.2912990822,37.6232653794,NA,NA,69,1976,2,,,,,, +57.8182142576,44.5254440728,37.7640531066,NA,NA,70,1976,3,,,,,, +58.6217341651,44.7597906015,37.9049620156,NA,NA,71,1976,4,,,,,, +59.4748652346,44.9943388417,38.0459922105,NA,NA,72,1977,1,,,,,, +60.9283178461,45.2290889671,38.1871437958,NA,NA,73,1977,2,,,,,, +61.5678685585,45.4640411513,38.3284168759,NA,NA,74,1977,3,,,,,, +62.4553462729,45.6991955683,38.4698115555,NA,NA,75,1977,4,,,,,, +63.5810874458,45.9345523923,38.6113279392,NA,NA,76,1978,1,,,,,, +64.8088487972,46.1701117973,38.7529661318,NA,NA,77,1978,2,,,,,, +66.574670652,46.4058739578,38.894726238,NA,NA,78,1978,3,,,,,, +68.1988791307,46.6418390483,39.0366083629,NA,NA,79,1978,4,,,,,, +69.6193084969,46.8780072435,39.1786126114,NA,NA,80,1979,1,,,,,, +71.9524515311,47.1143787182,39.3207390888,NA,NA,81,1979,2,,,,,, +74.4272972721,47.3509536473,39.4629879001,NA,NA,82,1979,3,,,,,, +76.6969861622,47.587732206,39.6053591507,NA,NA,83,1979,4,,,,,, +79.7626789774,47.8247145695,39.747852946,NA,NA,84,1980,1,,,,,, +82.7023745204,48.0619009134,39.8904693914,NA,NA,85,1980,2,,,,,, +84.1860735675,48.299291413,40.0332085926,NA,NA,86,1980,3,,,,,, +86.4851119863,48.5368862443,40.1760706551,NA,NA,87,1980,4,,,,,, +88.9600715276,48.774685583,40.3190556848,NA,NA,88,1981,1,,,,,, +90.7579294804,49.0126896051,40.4621637874,NA,NA,89,1981,2,,,,,, +93.3985342056,49.250898487,40.605395069,NA,NA,90,1981,3,,,,,, +95.0875939832,49.4893124048,40.7487496355,NA,NA,91,1981,4,,,,,, +95.9235330874,49.7279315351,40.8922275931,NA,NA,92,1982,1,,,,,, +96.3626559817,49.9667560544,41.0358290479,NA,NA,93,1982,2,,,,,, +99.2864179014,50.2057861397,41.1795541063,NA,NA,94,1982,3,,,,,, +99.2300903022,50.4450219678,41.3234028746,NA,NA,95,1982,4,,,,,, +99.0871118353,50.6844637159,41.4673754594,NA,NA,96,1983,1,,,,,, +100.0407065582,50.9241115611,41.6114719672,NA,NA,97,1983,2,,,,,, +100.8980464895,51.1639656808,41.7556925046,NA,NA,98,1983,3,,,,,, +102.0174890274,51.4040262527,41.9000371785,NA,NA,99,1983,4,,,,,, +103.4043476538,51.6442934544,42.0445060957,NA,NA,100,1984,1,,,,,, +104.5600649279,51.8847674638,42.1890993631,NA,NA,101,1984,2,,,,,, +105.2807647387,52.1254484588,42.3338170877,NA,NA,102,1984,3,,,,,, +106.3253569782,52.3663366176,42.4786593767,NA,NA,103,1984,4,,,,,, +106.737519722,52.6074321186,42.6236263374,NA,NA,104,1985,1,,,,,, +108.2602223172,52.8487351403,42.7687180769,NA,NA,105,1985,2,,,,,, +108.7043750169,53.0902458611,42.9139347027,NA,NA,106,1985,3,,,,,, +109.6292669028,53.33196446,43.0592763224,NA,NA,107,1985,4,,,,,, +111.10898105,53.5738911158,43.2047430434,NA,NA,108,1986,1,,,,,, +109.1417608292,53.8160260077,43.3503349735,NA,NA,109,1986,2,,,,,, +110.6312393076,54.0583693148,43.4960522204,NA,NA,110,1986,3,,,,,, +110.8711695399,54.3009212166,43.6418948921,NA,NA,111,1986,4,,,,,, +112.4611953035,54.5436818925,43.7878630964,NA,NA,112,1987,1,,,,,, +113.7619230684,54.7866515224,43.9339569414,NA,NA,113,1987,2,,,,,, +114.872703548,55.029830286,44.0801765353,NA,NA,114,1987,3,,,,,, +116.1264796487,55.2732183634,44.2265219863,NA,NA,115,1987,4,,,,,, +117.0443833366,55.5168159347,44.3729934028,NA,NA,116,1988,1,,,,,, +118.3229598189,55.7606231803,44.5195908931,NA,NA,117,1988,2,,,,,, +119.6236408891,56.0046402806,44.6663145657,NA,NA,118,1988,3,,,,,, +121.0829288907,56.2488674162,44.8131645293,NA,NA,119,1988,4,,,,,, +122.3744514495,56.493304768,44.9601408926,NA,NA,120,1989,1,,,,,, +124.4754231074,56.7379525169,45.1072437644,NA,NA,121,1989,2,,,,,, +125.7195119165,56.9828108439,45.2544732536,NA,NA,122,1989,3,,,,,, +126.5820105082,57.2278799304,45.4018294691,NA,NA,123,1989,4,,,,,, +128.983101501,57.4731599577,45.5493125201,NA,NA,124,1990,1,,,,,, +130.0960742545,57.7186511075,45.6969225157,NA,NA,125,1990,2,,,,,, +131.9460422306,57.9643535613,45.8446595651,NA,NA,126,1990,3,,,,,, +135.1435595139,58.2102675012,45.9925237778,NA,NA,127,1990,4,,,,,, +136.0043629578,58.4563931091,46.1405152632,NA,NA,128,1991,1,,,,,, +136.3782657949,58.7027305673,46.2886341308,NA,NA,129,1991,2,,,,,, +137.4870240118,58.949280058,46.4368804902,NA,NA,130,1991,3,,,,,, +138.3043143577,59.1960417638,46.5852544513,NA,NA,131,1991,4,,,,,, +139.5157104478,59.4430158674,46.7337561239,NA,NA,132,1992,1,,,,,, +140.5922877231,59.6902025515,46.8823856178,NA,NA,133,1992,2,,,,,, +141.6991245126,59.9376019992,47.0311430431,NA,NA,134,1992,3,,,,,, +142.9229713399,60.1852143935,47.18002851,NA,NA,135,1992,4,,,,,, +143.9878577919,60.4330399178,47.3290421285,NA,NA,136,1993,1,,,,,, +144.9709017333,60.6810787556,47.4781840091,NA,NA,137,1993,2,,,,,, +145.5666628207,60.9293310903,47.6274542622,NA,NA,138,1993,3,,,,,, +146.7653707636,61.1777971059,47.7768529981,NA,NA,139,1993,4,,,,,, +147.2888384732,61.4264769862,47.9263803276,NA,NA,140,1994,1,,,,,, +148.298099471,61.6753709153,48.0760363612,NA,NA,141,1994,2,,,,,, +149.5166128518,61.9244790774,48.2258212099,NA,NA,142,1994,3,,,,,, +150.47203224,62.1738016569,48.3757349844,NA,NA,143,1994,4,,,,,, +151.6433079514,62.4233388385,48.5257777957,NA,NA,144,1995,1,,,,,, +152.9709949825,62.6730908067,48.6759497549,NA,NA,145,1995,2,,,,,, +153.6348852152,62.9230577466,48.8262509732,NA,NA,146,1995,3,,,,,, +154.5998048257,63.173239843,48.9766815618,NA,NA,147,1995,4,,,,,, +155.81157834,63.4236372813,49.1272416321,NA,NA,148,1996,1,,,,,, +157.2724813018,63.6742502468,49.2779312955,NA,NA,149,1996,2,,,,,, +158.0661035227,63.9250789249,49.4287506635,NA,NA,150,1996,3,,,,,, +159.3937921514,64.1761235014,49.5796998479,NA,NA,151,1996,4,,,,,, +160.5202421296,64.4273841621,49.7307789603,NA,NA,152,1997,1,,,,,, +160.8565697389,64.6788610929,49.8819881126,NA,NA,153,1997,2,,,,,, +161.3652170088,64.9305544801,50.0333274167,NA,NA,154,1997,3,,,,,, +162.5297916151,65.18246451,50.1847969847,NA,NA,155,1997,4,,,,,, +162.8281524936,65.4345913689,50.3363969286,NA,NA,156,1998,1,,,,,, +163.0226515869,65.6869352436,50.4881273607,NA,NA,157,1998,2,,,,,, +164.1632798663,65.9394963209,50.6399883933,NA,NA,158,1998,3,,,,,, +164.7014460432,66.1922747876,50.7919801388,NA,NA,159,1998,4,,,,,, +165.6350262694,66.445270831,50.9441027098,NA,NA,160,1999,1,,,,,, +166.9035944631,66.6984846383,51.0963562188,NA,NA,161,1999,2,,,,,, +167.5904293324,66.9519163969,51.2487407785,NA,NA,162,1999,3,,,,,, +169.2288926091,67.2055662944,51.4012565017,NA,NA,163,1999,4,,,,,, +170.3094477844,67.4594345186,51.5539035014,NA,NA,164,2000,1,,,,,, +172.1201271114,67.7135212574,51.7066818905,NA,NA,165,2000,2,,,,,, +173.9584679578,67.967826699,51.8595917821,NA,NA,166,2000,3,,,,,, +175.0541267019,68.2223510314,52.0126332894,NA,NA,167,2000,4,,,,,, +176.9586562959,68.4770944433,52.1658065257,NA,NA,168,2001,1,,,,,, +177.420494345,68.732057123,52.3191116044,NA,NA,169,2001,2,,,,,, +178.5717445863,68.9872392595,52.472548639,NA,NA,170,2001,3,,,,,, +178.411091699,69.2426410414,52.626117743,NA,NA,171,2001,4,,,,,, +178.5096746985,69.498262658,52.7798190301,NA,NA,172,2002,1,,,,,, +180.4156471624,69.7541042984,52.9336526141,NA,NA,173,2002,2,,,,,, +180.7934320755,70.010166152,53.0876186089,NA,NA,174,2002,3,,,,,, +182.3583506675,70.2664484084,53.2417171284,NA,NA,175,2002,4,,,,,, +183.6878168401,70.5229512573,53.3959482867,NA,NA,176,2003,1,,,,,, +184.1225158875,70.7796748884,53.550312198,NA,NA,177,2003,2,,,,,, +184.6390067688,71.036619492,53.7048089765,NA,NA,178,2003,3,,,,,, +185.9277993512,71.2937852582,53.8594387367,NA,NA,179,2003,4,,,,,, +187.3494506435,71.5511723773,54.0142015929,NA,NA,180,2004,1,,,,,, +188.4563837818,71.8087810398,54.1690976598,NA,NA,181,2004,2,,,,,, +190.3744088899,72.0666114365,54.3241270519,NA,NA,182,2004,3,,,,,, +192.0349209532,72.3246637583,54.4792898841,NA,NA,183,2004,4,,,,,, +192.9306005546,72.5829381961,54.6345862712,NA,NA,184,2005,1,,,,,, +195.2519947289,72.8414349411,54.7900163281,NA,NA,185,2005,2,,,,,, +195.7304228214,73.1001541846,54.94558017,NA,NA,186,2005,3,,,,,, +201.4511830433,73.3590961183,55.1012779119,NA,NA,187,2005,4,,,,,, +200.2171881322,73.6182609337,55.2571096692,NA,NA,188,2006,1,,,,,, +202.4497494481,73.8776488227,55.4130755571,NA,NA,189,2006,2,,,,,, +204.0624368652,74.1372599773,55.5691756912,NA,NA,190,2006,3,,,,,, +202.5774368935,74.3970945897,55.7254101869,NA,NA,191,2006,4,,,,,, +205.1120470848,74.6571528523,55.88177916,NA,NA,192,2007,1,,,,,, +207.2046911252,74.9174349575,56.0382827261,NA,NA,193,2007,2,,,,,, +208.6752448242,75.1779410979,56.1949210012,NA,NA,194,2007,3,,,,,, +210.7138642108,75.4386714665,56.3516941011,NA,NA,195,2007,4,,,,,, +214.4191503991,75.6996262563,56.508602142,NA,NA,196,2008,1,,,,,, +215.4304916717,75.9608056603,56.66564524,NA,NA,197,2008,2,,,,,, +221.2401937797,76.222209872,56.8228235113,NA,NA,198,2008,3,,,,,, +217.4095788942,76.4838390849,56.9801370722,NA,NA,199,2008,4,,,,,, +212.3767448553,76.7456934925,57.1375860393,NA,NA,200,2009,1,,,,,, +213.5008294782,77.0077732888,57.2951705291,NA,NA,201,2009,2,,,,,, +215.0351451855,77.2700786678,57.4528906581,215.035145186,NA,202,2009,3,,,,,, +217.6107800478,77.5326098235,57.6107465433,215.866107044,217.610780048,203,2009,4,,,,,, +218.8257560807,77.7953669504,57.7687383014,216.976310009,218.825756081,204,2010,1,,,,,, +220.0887108488,78.058350243,57.9268660493,217.992256543,220.088710849,205,2010,2,,,,,, +221.2824709779,78.3215598959,58.0851299042,219.003900252,221.282470978,206,2010,3,,,,,, +222.4572282044,78.5849961039,58.2435299831,220.053058373,222.457228204,207,2010,4,,,,,, +223.6375722698,78.8486590621,58.4020664034,221.10058667,223.63757227,208,2011,1,,,,,, +224.8127258778,79.1125489657,58.5607392824,222.145919537,224.812725878,209,2011,2,,,,,, +225.9848578147,79.3766660099,58.7195487375,223.195897724,225.984857815,210,2011,3,,,,,, +227.1579319102,79.6410103903,58.8784948864,224.247504309,227.15793191,211,2011,4,,,,,, +228.3314766936,79.9055823026,59.0375778465,225.299622831,228.331476694,212,2012,1,,,,,, +229.5054345349,80.1703819426,59.1967977358,226.352961097,229.505434535,213,2012,2,,,,,, +230.6802853758,80.4354095063,59.3561546721,227.407384387,230.680285376,214,2012,3,,,,,, +231.8560877219,80.7006651899,59.5156487733,228.462693614,231.856087722,215,2012,4,,,,,, +233.0328239483,80.9661491898,59.6752801576,229.518934044,233.032823948,216,2013,1,,,,,, +234.2105442521,81.2318617024,59.8350489429,230.576111078,234.210544252,217,2013,2,,,,,, +235.3892686376,81.4978029246,59.9949552478,231.63420065,235.389268638,218,2013,3,,,,,, +236.5689976407,81.763973053,60.1549991904,232.693202832,236.568997641,219,2013,4,,,,,, +237.7497368898,82.0303722848,60.3151808893,233.753120079,237.74973689,220,2014,1,,,,,, +238.9314906316,82.2970008172,60.475500463,234.813950663,238.931490632,221,2014,2,,,,,, +240.1142602312,82.5638588475,60.6359580303,235.875694619,240.114260231,222,2014,3,,,,,, +241.2980470639,82.8309465733,60.7965537099,236.93835289,241.298047064,223,2014,4,,,,,, +242.4828524939,83.0982641922,60.9572876206,238.001926038,242.482852494,224,2015,1,,,,,, +243.6686775425,83.3658119022,61.1181598815,239.066414704,243.668677543,225,2015,2,,,,,, +244.8555231546,83.6335899013,61.2791706116,240.131819671,244.855523155,226,2015,3,,,,,, +246.0433902743,83.9015983877,61.4403199302,241.198141708,246.043390274,227,2015,4,,,,,, +,,,,,,,,,,,,227,61.2791706116 +,,,,,,,,,,,,228,61.4403199302 diff --git a/statsmodels/tsa/tests/results/results_arima_forecasts_all_css_diff.csv b/statsmodels/tsa/tests/results/results_arima_forecasts_all_css_diff.csv new file mode 100644 index 0000000..fbf9f39 --- /dev/null +++ b/statsmodels/tsa/tests/results/results_arima_forecasts_all_css_diff.csv @@ -0,0 +1,229 @@ +fc,fcdyn,fcdyn2,fcdyn3,fcdyn4,orig_index,year,quarter +NA,NA,NA,NA,NA,0,1959,1 +NA,NA,NA,NA,NA,1,1959,2 +NA,NA,NA,NA,NA,2,1959,3 +NA,NA,NA,NA,NA,3,1959,4 +NA,NA,NA,NA,NA,4,1960,1 +0.770379010745,0.770379010745,NA,NA,NA,5,1960,2 +0.159960553047,0.453990324197,NA,NA,NA,6,1960,3 +0.763902636357,0.835731904216,NA,NA,NA,7,1960,4 +0.200611089248,0.705191313109,NA,NA,NA,8,1961,1 +0.670090201275,0.878649341133,NA,NA,NA,9,1961,2 +0.245168528115,0.810852023674,NA,NA,NA,10,1961,3 +0.618223678922,0.909437206879,NA,NA,NA,11,1961,4 +0.282923463794,0.866788837448,NA,NA,NA,12,1962,1 +0.635883564254,0.922010172534,NA,NA,NA,13,1962,2 +0.279170332796,0.897571310587,NA,NA,NA,14,1962,3 +0.643061831375,0.927716334514,NA,NA,NA,15,1962,4 +0.287355845649,0.913766102843,NA,NA,NA,16,1963,1 +0.597148109291,0.93039301962,NA,NA,NA,17,1963,2 +0.361195118636,0.922366013779,NA,NA,NA,18,1963,3 +0.558818431023,0.931556196153,NA,NA,NA,19,1963,4 +0.421807086713,0.926960893399,NA,NA,NA,20,1964,1 +0.498754378826,0.93203785154,NA,NA,NA,21,1964,2 +0.411493694656,0.929414312482,NA,NA,NA,22,1964,3 +0.489155194512,0.932222349489,NA,NA,NA,23,1964,4 +0.446951599675,0.930726591642,0.446951599675,NA,NA,24,1965,1 +0.496243085307,0.932281263054,0.630405257081,NA,NA,25,1965,2 +0.489368402982,0.931429947097,0.643761598303,NA,NA,26,1965,3 +0.4681674419,0.932291342811,0.777776477505,NA,NA,27,1965,4 +0.52772975703,0.93180755357,0.789968560438,NA,NA,28,1966,1 +0.566505362972,0.932285198199,0.849816173977,NA,NA,29,1966,2 +0.524692473871,0.932010627185,0.858628330853,NA,NA,30,1966,3 +0.640394605109,0.93227567702,0.890822320917,NA,NA,31,1966,4 +0.430064342168,0.932120030939,0.893594141216,NA,NA,32,1967,1 +0.60512160276,0.932267209981,0.911236513022,NA,NA,33,1967,2 +0.463290054836,0.932179073129,0.912165678359,NA,NA,34,1967,3 +0.627745226416,0.932260852206,0.921540199879,NA,NA,35,1967,4 +0.557677999745,0.932210991288,0.921794627945,NA,NA,36,1968,1 +0.626379486361,0.932256458527,0.926817814232,NA,NA,37,1968,2 +0.63479357732,0.932228275536,0.926795159452,NA,NA,38,1968,3 +0.636990972422,0.932253568383,0.929498781138,NA,NA,39,1968,4 +0.644872375458,0.932237650911,0.929402909137,NA,NA,40,1969,1 +0.710134532495,0.932251728339,0.930858156063,NA,NA,41,1969,2 +0.664847766932,0.932242744672,0.93076242395,NA,NA,42,1969,3 +0.727209717161,0.932250583661,0.93154715447,NA,NA,43,1969,4 +0.703673706075,0.932245516618,0.931471664527,NA,NA,44,1970,1 +0.74665149928,0.932249883719,0.931895643642,NA,NA,45,1970,2 +0.656169792059,0.932247027427,0.931842084649,NA,NA,46,1970,3 +0.724661886465,0.932249461364,0.93207152956,NA,NA,47,1970,4 +0.640947957999,0.932247852124,0.932035726827,NA,NA,48,1971,1 +0.606792931728,0.932249209172,0.932160103317,NA,NA,49,1971,2 +0.668684332178,0.932248302959,0.932137056951,NA,NA,50,1971,3 +0.551525721652,0.93224905986,0.932204590693,NA,NA,51,1971,4 +0.641943695427,0.932248549766,0.932190139193,NA,NA,52,1972,1 +0.53831115973,0.932248972074,0.932226867829,NA,NA,53,1972,2 +0.612089176946,0.932248685065,0.932217978042,NA,NA,54,1972,3 +0.582872466048,0.932248920763,0.932237984669,NA,NA,55,1972,4 +0.680534925403,0.932248759333,0.932232595379,NA,NA,56,1973,1 +0.842528352287,0.932248890919,0.932243510039,NA,NA,57,1973,2 +0.697870627846,0.932248800152,0.932240280052,NA,NA,58,1973,3 +1.16123771239,0.932248873633,0.932246243448,NA,NA,59,1973,4 +0.868472110564,0.932248822613,0.932244325314,NA,NA,60,1974,1 +1.295970462021,0.932248863657,0.932247588207,NA,NA,61,1974,2 +0.940353780865,0.932248834987,0.932246457649,NA,NA,62,1974,3 +1.433625706241,0.932248857918,0.932248245434,NA,NA,63,1974,4 +0.970014205625,0.932248841811,0.932247583225,NA,NA,64,1975,1 +1.157361101681,0.932248854626,0.932248564087,NA,NA,65,1975,2 +0.856660585072,0.932248845579,0.932248178238,NA,NA,66,1975,3 +0.989444399201,0.932248852741,0.932248717075,NA,NA,67,1975,4 +0.849626106286,0.932248847661,0.932248493253,NA,NA,68,1976,1 +0.752229636283,0.932248851665,0.932248789627,NA,NA,69,1976,2 +0.870409319371,0.932248848813,0.932248660289,NA,NA,70,1976,3 +0.795923084138,0.932248851051,0.932248823493,NA,NA,71,1976,4 +0.919465973242,0.93224884945,0.932248749,NA,NA,72,1977,1 +1.031756943989,0.932248850702,0.932248838972,NA,NA,73,1977,2 +0.869240748572,0.932248849803,0.932248796191,NA,NA,74,1977,3 +0.979442748794,0.932248850504,0.932248845843,NA,NA,75,1977,4 +0.915986730044,0.932248849999,0.932248821336,NA,NA,76,1978,1 +1.055430500674,0.932248850391,0.932248848765,NA,NA,77,1978,2 +1.193113232312,0.932248850108,0.932248834757,NA,NA,78,1978,3 +1.253636070397,0.932248850327,0.932248849924,NA,NA,79,1978,4 +1.237003161064,0.932248850168,0.932248841933,NA,NA,80,1979,1 +1.50192411252,0.932248850291,0.932248850326,NA,NA,81,1979,2 +1.546138346398,0.932248850202,0.932248845776,NA,NA,82,1979,3 +1.687679883907,0.932248850271,0.932248850425,NA,NA,83,1979,4 +1.879960751704,0.932248850221,0.932248847838,NA,NA,84,1980,1 +1.913931910998,0.932248850259,0.932248850415,NA,NA,85,1980,2 +1.587588013175,0.932248850231,0.932248848946,NA,NA,86,1980,3 +1.74835279899,0.932248850252,0.932248850376,NA,NA,87,1980,4 +1.577518609117,0.932248850237,0.932248849543,NA,NA,88,1981,1 +1.607276198134,0.932248850249,0.932248850336,NA,NA,89,1981,2 +1.729337563595,0.93224885024,0.932248849864,NA,NA,90,1981,3 +1.468980381219,0.932248850247,0.932248850305,NA,NA,91,1981,4 +1.267245335864,0.932248850242,0.932248850038,NA,NA,92,1982,1 +0.931137515728,0.932248850246,0.932248850283,NA,NA,93,1982,2 +1.555112467159,0.932248850243,0.932248850132,NA,NA,94,1982,3 +0.653657375856,0.932248850245,0.932248850269,NA,NA,95,1982,4 +1.022136154907,0.932248850243,0.932248850183,NA,NA,96,1983,1 +0.554925174321,0.932248850245,0.932248850259,NA,NA,97,1983,2 +0.960506447796,0.932248850244,0.932248850211,NA,NA,98,1983,3 +0.823531392412,0.932248850244,0.932248850253,NA,NA,99,1983,4 +1.210651458454,0.932248850244,0.932248850226,NA,NA,100,1984,1 +0.922900777171,0.932248850244,0.932248850249,NA,NA,101,1984,2 +1.080087538278,0.932248850244,0.932248850234,NA,NA,102,1984,3 +0.890316325546,0.932248850244,0.932248850247,NA,NA,103,1984,4 +0.858082546678,0.932248850244,0.932248850239,NA,NA,104,1985,1 +1.039629514659,0.932248850244,0.932248850246,NA,NA,105,1985,2 +0.781314429462,0.932248850244,0.932248850241,NA,NA,106,1985,3 +1.006658595835,0.932248850244,0.932248850245,NA,NA,107,1985,4 +0.980549828263,0.932248850244,0.932248850242,NA,NA,108,1986,1 +0.153513926076,0.932248850244,0.932248850245,NA,NA,109,1986,2 +1.022200152993,0.932248850244,0.932248850243,NA,NA,110,1986,3 +0.204732775526,0.932248850244,0.932248850244,NA,NA,111,1986,4 +1.365660419996,0.932248850244,0.932248850244,NA,NA,112,1987,1 +0.686049071399,0.932248850244,0.932248850244,NA,NA,113,1987,2 +1.387371677459,0.932248850244,0.932248850244,NA,NA,114,1987,3 +0.796855404679,0.932248850244,0.932248850244,NA,NA,115,1987,4 +1.252967659219,0.932248850244,0.932248850244,NA,NA,116,1988,1 +0.851224474584,0.932248850244,0.932248850244,NA,NA,117,1988,2 +1.281757367744,0.932248850244,0.932248850244,NA,NA,118,1988,3 +0.987614096066,0.932248850244,0.932248850244,NA,NA,119,1988,4 +1.299685315792,0.932248850244,0.932248850244,NA,NA,120,1989,1 +1.249631195825,0.932248850244,0.932248850244,NA,NA,121,1989,2 +1.279393196417,0.932248850244,0.932248850244,NA,NA,122,1989,3 +1.045730799045,0.932248850244,0.932248850244,NA,NA,123,1989,4 +1.496932175978,0.932248850244,0.932248850244,NA,NA,124,1990,1 +1.01045926974,0.932248850244,0.932248850244,NA,NA,125,1990,2 +1.573514752605,0.932248850244,0.932248850244,NA,NA,126,1990,3 +1.567001969786,0.932248850244,0.932248850244,NA,NA,127,1990,4 +1.349008606055,0.932248850244,0.932248850244,NA,NA,128,1991,1 +1.052599747774,0.932248850244,0.932248850244,NA,NA,129,1991,2 +1.02485856054,0.932248850244,0.932248850244,NA,NA,130,1991,3 +0.826255442224,0.932248850244,0.932248850244,NA,NA,131,1991,4 +1.103264402043,0.932248850244,0.932248850244,NA,NA,132,1992,1 +0.929610346126,0.932248850244,0.932248850244,NA,NA,133,1992,2 +1.105007514812,0.932248850244,0.932248850244,NA,NA,134,1992,3 +0.993076541355,0.932248850244,0.932248850244,NA,NA,135,1992,4 +1.089509398065,0.932248850244,0.932248850244,NA,NA,136,1993,1 +0.956400421858,0.932248850244,0.932248850244,NA,NA,137,1993,2 +0.915149001744,0.932248850244,0.932248850244,NA,NA,138,1993,3 +0.974259971098,0.932248850244,0.932248850244,NA,NA,139,1993,4 +0.803643581793,0.932248850244,0.932248850244,NA,NA,140,1994,1 +0.982767992868,0.932248850244,0.932248850244,NA,NA,141,1994,2 +0.935727379917,0.932248850244,0.932248850244,NA,NA,142,1994,3 +1.007651588714,0.932248850244,0.932248850244,NA,NA,143,1994,4 +1.016701279278,0.932248850244,0.932248850244,NA,NA,144,1995,1 +1.09738640548,0.932248850244,0.932248850244,NA,NA,145,1995,2 +0.898845509928,0.932248850244,0.932248850244,NA,NA,146,1995,3 +1.023237765215,0.932248850244,0.932248850244,NA,NA,147,1995,4 +0.946468723079,0.932248850244,0.932248850244,NA,NA,148,1996,1 +1.163232329785,0.932248850244,0.932248850244,NA,NA,149,1996,2 +0.924650165645,0.932248850244,0.932248850244,NA,NA,150,1996,3 +1.184801033993,0.932248850244,0.932248850244,NA,NA,151,1996,4 +0.931330281248,0.932248850244,0.932248850244,NA,NA,152,1997,1 +0.919134674162,0.932248850244,0.932248850244,NA,NA,153,1997,2 +0.737950142031,0.932248850244,0.932248850244,NA,NA,154,1997,3 +0.951868264252,0.932248850244,0.932248850244,NA,NA,155,1997,4 +0.640162611467,0.932248850244,0.932248850244,NA,NA,156,1998,1 +0.776711858234,0.932248850244,0.932248850244,NA,NA,157,1998,2 +0.770413570866,0.932248850244,0.932248850244,NA,NA,158,1998,3 +0.773148559181,0.932248850244,0.932248850244,NA,NA,159,1998,4 +0.891813237097,0.932248850244,0.932248850244,NA,NA,160,1999,1 +0.976518615776,0.932248850244,0.932248850244,NA,NA,161,1999,2 +0.866379311426,0.932248850244,0.932248850244,NA,NA,162,1999,3 +1.187687466079,0.932248850244,0.932248850244,NA,NA,163,1999,4 +0.944916221783,0.932248850244,0.932248850244,NA,NA,164,2000,1 +1.374004755733,0.932248850244,0.932248850244,NA,NA,165,2000,2 +1.196896057424,0.932248850244,0.932248850244,NA,NA,166,2000,3 +1.276094544431,0.932248850244,0.932248850244,NA,NA,167,2000,4 +1.299861238063,0.932248850244,0.932248850244,NA,NA,168,2001,1 +0.953695155871,0.932248850244,0.932248850244,NA,NA,169,2001,2 +1.127831475679,0.932248850244,0.932248850244,NA,NA,170,2001,3 +0.538805881288,0.932248850244,0.932248850244,NA,NA,171,2001,4 +0.740938763678,0.932248850244,0.932248850244,NA,NA,172,2002,1 +0.913239687679,0.932248850244,0.932248850244,NA,NA,173,2002,2 +0.775624092729,0.932248850244,0.932248850244,NA,NA,174,2002,3 +1.191829445117,0.932248850244,0.932248850244,NA,NA,175,2002,4 +0.970976057583,0.932248850244,0.932248850244,NA,NA,176,2003,1 +0.963967235811,0.932248850244,0.932248850244,NA,NA,177,2003,2 +0.781611104879,0.932248850244,0.932248850244,NA,NA,178,2003,3 +0.998342132877,0.932248850244,0.932248850244,NA,NA,179,2003,4 +0.988319280658,0.932248850244,0.932248850244,NA,NA,180,2004,1 +1.119775738948,0.932248850244,0.932248850244,NA,NA,181,2004,2 +1.262824600847,0.932248850244,0.932248850244,NA,NA,182,2004,3 +1.266236815215,0.932248850244,0.932248850244,NA,NA,183,2004,4 +1.118456220708,0.932248850244,0.932248850244,NA,NA,184,2005,1 +1.481082761854,0.932248850244,0.932248850244,NA,NA,185,2005,2 +0.858355967219,0.932248850244,0.932248850244,NA,NA,186,2005,3 +2.658702151815,0.932248850244,0.932248850244,NA,NA,187,2005,4 +0.312832597414,0.932248850244,0.932248850244,NA,NA,188,2006,1 +2.347722707187,0.932248850244,0.932248850244,NA,NA,189,2006,2 +0.352394195822,0.932248850244,0.932248850244,NA,NA,190,2006,3 +1.156900058414,0.932248850244,0.932248850244,NA,NA,191,2006,4 +0.777710696447,0.932248850244,0.932248850244,NA,NA,192,2007,1 +1.517167214051,0.932248850244,0.932248850244,NA,NA,193,2007,2 +1.044783734001,0.932248850244,0.932248850244,NA,NA,194,2007,3 +1.771568384475,0.932248850244,0.932248850244,NA,NA,195,2007,4 +1.657324391142,0.932248850244,0.932248850244,NA,NA,196,2008,1 +1.54578539557,0.932248850244,0.932248850244,NA,NA,197,2008,2 +2.708532318705,0.932248850244,0.932248850244,NA,NA,198,2008,3 +-0.133682222205,0.932248850244,0.932248850244,NA,NA,199,2008,4 +-0.089413477292,0.932248850244,0.932248850244,NA,NA,200,2009,1 +-0.412725484186,0.932248850244,0.932248850244,NA,NA,201,2009,2 +0.58762097819,0.932248850244,0.932248850244,0.58762097819,NA,202,2009,3 +1.183570299308,0.932248850244,0.932248850244,0.6699014917,1.183570299308,203,2009,4 +1.295679884183,0.932248850244,0.932248850244,1.14314607419,1.295679884183,204,2010,1 +1.172205899038,0.932248850244,0.932248850244,0.73792459293,1.172205899038,205,2010,2 +1.093431415153,0.932248850244,0.932248850244,0.99718558439,1.093431415153,206,2010,3 +1.046383010753,0.932248850244,0.932248850244,0.8625857921,1.046383010753,207,2010,4 +1.02568256393,0.932248850244,0.932248850244,0.96171093112,1.02568256393,208,2011,1 +0.987498840379,0.932248850244,0.932248850244,0.89034221344,0.987498840379,209,2011,2 +0.980300525866,0.932248850244,0.932248850244,0.95267807706,0.980300525866,210,2011,3 +0.961338343426,0.932248850244,0.932248850244,0.90815715445,0.961338343426,211,2011,4 +0.956827888488,0.932248850244,0.932248850244,0.94377506166,0.956827888488,212,2012,1 +0.947125117184,0.932248850244,0.932248850244,0.91923666474,0.947125117184,213,2012,2 +0.945069813517,0.932248850244,0.932248850244,0.93873479867,0.945069813517,214,2012,3 +0.93981399433,0.932248850244,0.932248850244,0.92505455088,0.93981399433,215,2012,4 +0.938909436829,0.932248850244,0.932248850244,0.93597743253,0.938909436829,216,2013,1 +0.936114863886,0.932248850244,0.932248850244,0.92825825312,0.936114863886,217,2013,2 +0.935705810698,0.932248850244,0.932248850244,0.93437524527,0.935705810698,218,2013,3 +0.934220814397,0.932248850244,0.932248850244,0.93004135366,0.934220814397,219,2013,4 +0.934046235214,0.932248850244,0.932248850244,0.93345792245,0.934046235214,220,2014,1 +0.933253028912,0.932248850244,0.932248850244,0.93102589872,0.933253028912,221,2014,2 +0.933183912552,0.932248850244,0.932248850244,0.93293607052,0.933183912552,222,2014,3 +0.932759776053,0.932248850244,0.932248850244,0.93157060956,0.932759776053,223,2014,4 +0.932735584257,0.932248850244,0.932248850244,0.93263889295,0.932735584257,224,2015,1 +0.932508472206,0.932248850244,0.932248850244,0.93187249128,0.932508472206,225,2015,2 +0.932502421551,0.932248850244,0.932248850244,0.93246993987,0.932502421551,226,2015,3 +0.932380576436,0.932248850244,0.932248850244,0.93203986296,0.932380576436,227,2015,4 diff --git a/statsmodels/tsa/tests/results/results_arima_forecasts_all_mle.csv b/statsmodels/tsa/tests/results/results_arima_forecasts_all_mle.csv new file mode 100644 index 0000000..83e581d --- /dev/null +++ b/statsmodels/tsa/tests/results/results_arima_forecasts_all_mle.csv @@ -0,0 +1,229 @@ +fc,fcdyn,fcdyn2,fcdyn3,fcdyn4,orig_index,year,quarter +NA,NA,NA,NA,NA,0,1959,1 +29.9068758949,NA,NA,NA,NA,1,1959,2 +29.7836062197,NA,NA,NA,NA,2,1959,3 +29.9509765347,NA,NA,NA,NA,3,1959,4 +29.8231512077,NA,NA,NA,NA,4,1960,1 +30.0713968735,30.3272531516,NA,NA,NA,5,1960,2 +29.958473718,30.7775313774,NA,NA,NA,6,1960,3 +30.3023935599,31.6305620659,NA,NA,NA,7,1960,4 +30.2576517655,32.3243418038,NA,NA,NA,8,1961,1 +30.3009573493,33.221004981,NA,NA,NA,9,1961,2 +30.3488332178,34.0171014659,NA,NA,NA,10,1961,3 +30.4491475914,34.9397887093,NA,NA,NA,11,1961,4 +30.4767369763,35.7929235781,NA,NA,NA,12,1962,1 +30.7203942278,36.7230229888,NA,NA,NA,13,1962,2 +30.6313854794,37.6085297454,NA,NA,NA,14,1962,3 +30.9155665305,38.5403582304,NA,NA,NA,15,1962,4 +30.8422701329,39.4436416064,NA,NA,NA,16,1963,1 +30.9861943136,40.375151647,NA,NA,NA,17,1963,2 +31.1484912231,41.2884303568,NA,NA,NA,18,1963,3 +31.2342409169,42.2189628591,NA,NA,NA,19,1963,4 +31.4416695887,43.1379316426,NA,NA,NA,20,1964,1 +31.3901016046,44.0674727571,NA,NA,NA,21,1964,2 +31.4982759525,44.9897074968,NA,NA,NA,22,1964,3 +31.5624145889,45.9184393518,NA,NA,NA,23,1964,4 +31.7830149053,46.842568315,31.7822801057,NA,NA,24,1965,1 +31.8369304018,47.7706987794,32.3931644836,NA,NA,25,1965,2 +32.1174255896,48.6959367801,33.0720496053,NA,NA,26,1965,3 +32.0860826882,49.6236436781,33.8411417068,NA,NA,27,1965,4 +32.4487713904,50.5495365039,34.6481975356,NA,NA,28,1966,1 +32.8191337921,51.4769549262,35.492588604,NA,NA,29,1966,2 +33.0091645008,52.4032373841,36.3588892238,NA,NA,30,1966,3 +33.4654941183,53.3304637166,37.2448169633,NA,NA,31,1966,4 +33.3639030502,54.2569796051,38.1405962938,NA,NA,32,1967,1 +33.6830295278,55.184080055,39.0469661245,NA,NA,33,1967,2 +33.8954437652,56.1107366334,39.9580505999,NA,NA,34,1967,3 +34.3077742693,57.0377555451,40.8746277311,NA,NA,35,1967,4 +34.6828690181,57.9644973595,41.7934553394,NA,NA,36,1968,1 +35.0114031363,58.8914639149,42.7151870239,NA,NA,37,1968,2 +35.5543081572,59.818257599,43.6379477819,NA,NA,38,1968,3 +35.9260460559,60.745190759,44.5622601267,NA,NA,39,1968,4 +36.3595684128,61.6720161275,45.4870284689,NA,NA,40,1969,1 +37.002182586,62.5989280951,46.4126307524,NA,NA,41,1969,2 +37.4766800724,63.5257728797,47.3384241138,NA,NA,42,1969,3 +38.0189823007,64.4526714527,48.2646701708,NA,NA,43,1969,4 +38.6150653862,65.3795281671,49.1909880785,NA,NA,44,1970,1 +39.239464354,66.3064183006,50.117554258,NA,NA,45,1970,2 +39.5651529036,67.2332823614,51.0441413919,NA,NA,46,1970,3 +40.1204283713,68.1601671908,51.970866102,NA,NA,47,1970,4 +40.5501568429,69.0870357838,52.8975918536,NA,NA,48,1971,1 +40.7036899407,70.0139172862,53.8243946654,NA,NA,49,1971,2 +41.2773766889,70.9407886795,54.7511920613,NA,NA,50,1971,3 +41.4521240046,71.8676680984,55.6780330885,NA,NA,51,1971,4 +41.8471563104,72.7945412241,56.604867682,NA,NA,52,1972,1 +42.0415482723,73.7214193399,57.5317272414,NA,NA,53,1972,2 +42.4179954695,74.6482935384,58.4585812495,NA,NA,54,1972,3 +42.7845257743,75.57517084,59.3854496887,NA,NA,55,1972,4 +43.3863658678,76.5020457035,60.3123138917,NA,NA,56,1973,1 +44.5396593399,77.4289224967,61.2391865163,NA,NA,57,1973,2 +44.9010993318,78.3557977727,62.1660561099,NA,NA,58,1973,3 +46.7532025618,79.2826742488,63.0929306617,NA,NA,59,1973,4 +47.6714418281,80.2095497806,64.0198031279,NA,NA,60,1974,1 +49.3804168279,81.136426059,64.9466785366,NA,NA,61,1974,2 +50.241912904,82.0633017498,65.8735525468,NA,NA,62,1974,3 +52.4218551349,82.9901779049,66.8004283158,NA,NA,63,1974,4 +53.2643941056,83.9170536944,67.7273031638,NA,NA,64,1975,1 +54.1504667554,84.8439297727,68.6541790696,NA,NA,65,1975,2 +54.8540921978,85.7708056235,69.5810543766,NA,NA,66,1975,3 +55.8935577987,86.6976816539,70.5079303234,NA,NA,67,1975,4 +56.6379953641,87.6245575428,71.4348058846,NA,NA,68,1976,1 +56.8629881193,88.5514335435,72.3616818346,NA,NA,69,1976,2 +57.8595118751,89.4783094561,73.2885575382,NA,NA,70,1976,3 +58.7100304388,90.4051854383,74.2154334789,NA,NA,71,1976,4 +59.6013496668,91.3320613656,75.1423092629,NA,NA,72,1977,1 +61.0433146727,92.2589373362,76.0691851921,NA,NA,73,1977,2 +61.6535591485,93.1858132727,76.9960610222,NA,NA,74,1977,3 +62.5860972541,94.112689236,77.9229369414,NA,NA,75,1977,4 +63.6072946291,95.0395651782,78.8498127981,NA,NA,76,1978,1 +64.9590764016,95.9664411371,79.7766887096,NA,NA,77,1978,2 +66.6776058647,96.8933170829,80.7035645818,NA,NA,78,1978,3 +68.3539491015,97.820193039,81.6304404877,NA,NA,79,1978,4 +69.7178599841,98.7470689869,82.5573163691,NA,NA,80,1979,1 +72.1013253134,99.6739449413,83.4841922712,NA,NA,81,1979,2 +74.524250368,100.6008208906,84.411068158,NA,NA,82,1979,3 +76.876176456,101.527696844,85.3379440576,NA,NA,83,1979,4 +79.854504624,102.4545727941,86.2648199475,NA,NA,84,1980,1 +82.8015133793,103.3814487468,87.1916958455,NA,NA,85,1980,2 +84.1581425487,104.3083246974,88.1185717374,NA,NA,86,1980,3 +86.4422907681,105.2352006497,89.0454476342,NA,NA,87,1980,4 +88.7596665668,106.1620766007,89.9723235273,NA,NA,88,1981,1 +90.6941059629,107.0889525527,90.8991994235,NA,NA,89,1981,2 +93.2072347522,108.0158285039,91.8260753173,NA,NA,90,1981,3 +94.8638811502,108.9427044557,92.7529512129,NA,NA,91,1981,4 +95.6449911033,109.869580407,93.6798271072,NA,NA,92,1982,1 +95.939154924,110.7964563587,94.6067030026,NA,NA,93,1982,2 +99.0424265069,111.7233323102,95.5335788971,NA,NA,94,1982,3 +98.7541145954,112.6502082618,96.4604547923,NA,NA,95,1982,4 +98.90592859,113.5770842133,97.3873306869,NA,NA,96,1983,1 +99.3770482109,114.5039601649,98.3142065821,NA,NA,97,1983,2 +100.7534188199,115.4308361164,99.2410824768,NA,NA,98,1983,3 +101.6186175914,116.357712068,100.1679583719,NA,NA,99,1983,4 +103.3104124792,117.2845880195,101.0948342667,NA,NA,100,1984,1 +104.2117547402,118.2114639711,102.0217101617,NA,NA,101,1984,2 +105.1825141885,119.1383399226,102.9485860565,NA,NA,102,1984,3 +105.979318745,120.0652158742,103.8754619515,NA,NA,103,1984,4 +106.568745383,120.9920918257,104.8023378464,NA,NA,104,1985,1 +108.0236266196,121.9189677773,105.7292137413,NA,NA,105,1985,2 +108.4946316835,122.8458437288,106.6560896362,NA,NA,106,1985,3 +109.4866268614,123.7727196804,107.5829655311,NA,NA,107,1985,4 +110.896556764,124.6995956319,108.509841426,NA,NA,108,1986,1 +108.8402692853,125.6264715835,109.436717321,NA,NA,109,1986,2 +110.5394732567,126.553347535,110.3635932159,NA,NA,110,1986,3 +110.4107112037,127.4802234866,111.2904691108,NA,NA,111,1986,4 +112.757673341,128.4070994381,112.2173450057,NA,NA,112,1987,1 +113.3812962699,129.3339753897,113.1442209006,NA,NA,113,1987,2 +115.1867060272,130.2608513412,114.0710967956,NA,NA,114,1987,3 +115.7804175177,131.1877272927,114.9979726905,NA,NA,115,1987,4 +117.2661519035,132.1146032443,115.9248485854,NA,NA,116,1988,1 +118.0249608515,133.0414791958,116.8517244803,NA,NA,117,1988,2 +119.8027159123,133.9683551474,117.7786003752,NA,NA,118,1988,3 +120.8521754028,134.8952310989,118.7054762702,NA,NA,119,1988,4 +122.5230921328,135.8221070505,119.6323521651,NA,NA,120,1989,1 +124.3092179875,136.748983002,120.55922806,NA,NA,121,1989,2 +125.8031780011,137.6758589536,121.4861039549,NA,NA,122,1989,3 +126.4028519011,138.6027349051,122.4129798498,NA,NA,123,1989,4 +129.0264547619,139.5296108567,123.3398557447,NA,NA,124,1990,1 +129.8685188669,140.4564868082,124.2667316397,NA,NA,125,1990,2 +132.0904426122,141.3833627598,125.1936075346,NA,NA,126,1990,3 +134.9285784021,142.3102387113,126.1204834295,NA,NA,127,1990,4 +136.0614658238,143.2371146629,127.0473593244,NA,NA,128,1991,1 +136.1107245131,144.1639906144,127.9742352193,NA,NA,129,1991,2 +137.2637467947,145.090866566,128.9011111142,NA,NA,130,1991,3 +137.9914012445,146.0177425175,129.8279870092,NA,NA,131,1991,4 +139.4277291702,146.9446184691,130.7548629041,NA,NA,132,1992,1 +140.2982675372,147.8714944206,131.681738799,NA,NA,133,1992,2 +141.6276278643,148.7983703722,132.6086146939,NA,NA,134,1992,3 +142.6619161198,149.7252463237,133.5354905888,NA,NA,135,1992,4 +143.9113017237,150.6521222753,134.4623664838,NA,NA,136,1993,1 +144.7258177409,151.5789982268,135.3892423787,NA,NA,137,1993,2 +145.439080145,152.5058741784,136.3161182736,NA,NA,138,1993,3 +146.5470899515,153.4327501299,137.2429941685,NA,NA,139,1993,4 +147.1275628178,154.3596260815,138.1698700634,NA,NA,140,1994,1 +148.1549398159,155.286502033,139.0967459583,NA,NA,141,1994,2 +149.3590207641,156.2133779846,140.0236218533,NA,NA,142,1994,3 +150.3797921444,157.1402539361,140.9504977482,NA,NA,143,1994,4 +151.5328407734,158.0671298877,141.8773736431,NA,NA,144,1995,1 +152.8754001855,158.9940058392,142.804249538,NA,NA,145,1995,2 +153.5104634725,159.9208817908,143.7311254329,NA,NA,146,1995,3 +154.5050713049,160.8477577423,144.6580013279,NA,NA,147,1995,4 +155.6598903736,161.7746336939,145.5848772228,NA,NA,148,1996,1 +157.2436505119,162.7015096454,146.5117531177,NA,NA,149,1996,2 +157.9306440779,163.628385597,147.4386290126,NA,NA,150,1996,3 +159.3697775767,164.5552615485,148.3655049075,NA,NA,151,1996,4 +160.3380549055,165.4821375001,149.2923808024,NA,NA,152,1997,1 +160.8062423104,166.4090134516,150.2192566974,NA,NA,153,1997,2 +161.1456005775,167.3358894032,151.1461325923,NA,NA,154,1997,3 +162.4498580223,168.2627653547,152.0730084872,NA,NA,155,1997,4 +162.6410438272,169.1896413063,152.9998843821,NA,NA,156,1998,1 +162.9749129442,170.1165172578,153.926760277,NA,NA,157,1998,2 +163.9763792071,171.0433932094,154.853636172,NA,NA,158,1998,3 +164.6728592449,171.9702691609,155.7805120669,NA,NA,159,1998,4 +165.5859484189,172.8971451125,156.7073879618,NA,NA,160,1999,1 +166.8803645773,173.824021064,157.6342638567,NA,NA,161,1999,2 +167.5578656479,174.7508970156,158.5611397516,NA,NA,162,1999,3 +169.2867961402,175.6777729671,159.4880156465,NA,NA,163,1999,4 +170.2382948208,176.6046489187,160.4148915415,NA,NA,164,2000,1 +172.2667146382,177.5315248702,161.3417674364,NA,NA,165,2000,2 +173.8870935762,178.4584008218,162.2686433313,NA,NA,166,2000,3 +175.1681640969,179.3852767733,163.1955192262,NA,NA,167,2000,4 +176.8870492083,180.3121527249,164.1223951211,NA,NA,168,2001,1 +177.3561660321,181.2390286764,165.0492710161,NA,NA,169,2001,2 +178.5127418663,182.165904628,165.976146911,NA,NA,170,2001,3 +178.1530273515,183.0927805795,166.9030228059,NA,NA,171,2001,4 +178.4318474996,184.0196565311,167.8298987008,NA,NA,172,2002,1 +180.227667747,184.9465324826,168.7567745957,NA,NA,173,2002,2 +180.7639840071,185.8734084342,169.6836504906,NA,NA,174,2002,3 +182.3875854212,186.8002843857,170.6105263856,NA,NA,175,2002,4 +183.5702614445,187.7271603373,171.5374022805,NA,NA,176,2003,1 +184.1557719712,188.6540362888,172.4642781754,NA,NA,177,2003,2 +184.4816222449,189.5809122404,173.3911540703,NA,NA,178,2003,3 +185.9023069261,190.5077881919,174.3180299652,NA,NA,179,2003,4 +187.2801890545,191.4346641435,175.2449058602,NA,NA,180,2004,1 +188.515364218,192.361540095,176.1717817551,NA,NA,181,2004,2 +190.3521125536,193.2884160466,177.09865765,NA,NA,182,2004,3 +192.0632545458,194.2152919981,178.0255335449,NA,NA,183,2004,4 +192.9017579545,195.1421679496,178.9524094398,NA,NA,184,2005,1 +195.2802770621,196.0690439012,179.8792853347,NA,NA,185,2005,2 +195.5474719269,196.9959198527,180.8061612297,NA,NA,186,2005,3 +201.8413436328,197.9227958043,181.7330371246,NA,NA,187,2005,4 +199.6997920973,198.8496717558,182.6599130195,NA,NA,188,2006,1 +203.0238576373,199.7765477074,183.5867889144,NA,NA,189,2006,2 +203.0685794838,200.7034236589,184.5136648093,NA,NA,190,2006,3 +203.0451761394,201.6302996105,185.4405407042,NA,NA,191,2006,4 +204.3412194526,202.557175562,186.3674165992,NA,NA,192,2007,1 +207.4667905264,203.4840515136,187.2942924941,NA,NA,193,2007,2 +208.3185215168,204.4109274651,188.221168389,NA,NA,194,2007,3 +210.9426858274,205.3378034167,189.1480442839,NA,NA,195,2007,4 +214.0898145255,206.2646793682,190.0749201788,NA,NA,196,2008,1 +215.5731578452,207.1915553198,191.0017960738,NA,NA,197,2008,2 +221.2373748951,208.1184312713,191.9286719687,NA,NA,198,2008,3 +216.8084985317,209.0453072229,192.8555478636,NA,NA,199,2008,4 +212.0300947154,209.9721831744,193.7824237585,NA,NA,200,2009,1 +212.3793480718,210.899059126,194.7092996534,NA,NA,201,2009,2 +215.0121572553,211.8259350775,195.6361755483,215.0121572553,NA,202,2009,3 +217.5813739675,212.7528110291,196.5630514433,215.6823461389,217.5813739675,203,2009,4 +218.8467207845,213.6796869806,197.4899273382,216.7996817388,218.8467207845,204,2010,1 +220.0204169734,214.6065629322,198.4168032331,217.5405134691,220.0204169734,205,2010,2 +221.0990692323,215.5334388837,199.343679128,218.5235662111,221.0990692323,206,2010,3 +222.1367764558,216.4603148353,200.2705550229,219.3783983266,222.1367764558,207,2010,4 +223.1514650688,217.3871907868,201.1974309179,220.338056654,223.1514650688,208,2011,1 +224.1314220995,218.3140667384,202.1243068128,221.2166251733,224.1314220995,209,2011,2 +225.1021713681,219.2409426899,203.0511827077,222.1690819159,225.1021713681,210,2011,3 +226.0564358289,220.1678186415,203.9780586026,223.0663216992,226.0564358289,211,2011,4 +227.0055324897,221.094694593,204.9049344975,224.0094184337,227.0055324897,212,2012,1 +227.9459432706,222.0215705446,205.8318103924,224.9187324865,227.9459432706,213,2012,2 +228.8843194645,222.9484464961,206.7586862874,225.8560058852,228.8843194645,214,2012,3 +229.8178629311,223.8753224477,207.6855621823,226.7721915607,229.8178629311,215,2012,4 +230.750661671,224.8021983992,208.6124380772,227.7057590139,230.750661671,216,2013,1 +231.6808235576,225.7290743508,209.5393139721,228.6261125371,231.6808235576,217,2013,2 +232.6107619653,226.6559503023,210.466189867,229.5572458408,232.6107619653,218,2013,3 +233.5392415434,227.5828262539,211.393065762,230.4801356872,233.5392415434,219,2013,4 +234.4677105499,228.5097022054,212.3199416569,231.4097083732,234.4677105499,220,2014,1 +235.395361359,229.436578157,213.2468175518,232.3341390773,235.395361359,221,2014,2 +236.3230701944,230.3634541085,214.1736934467,233.2627177248,236.3230701944,222,2014,3 +237.2503158177,231.2903300601,215.1005693416,234.1880899048,237.2503158177,223,2014,4 +238.177629948,232.2172060116,216.0274452365,235.1160376292,238.177629948,224,2015,1 +239.1046790387,233.1440819632,216.9543211315,236.0419869337,239.1046790387,225,2015,2 +240.0317871832,234.0709579147,217.8811970264,236.9695359573,240.0317871832,226,2015,3 +240.9587421084,234.9978338663,218.8080729213,237.8958398869,240.9587421084,227,2015,4 diff --git a/statsmodels/tsa/tests/results/results_arima_forecasts_all_mle_diff.csv b/statsmodels/tsa/tests/results/results_arima_forecasts_all_mle_diff.csv new file mode 100644 index 0000000..31c33b3 --- /dev/null +++ b/statsmodels/tsa/tests/results/results_arima_forecasts_all_mle_diff.csv @@ -0,0 +1,229 @@ +fc,fcdyn,fcdyn2,fcdyn3,fcdyn4,orig_index,year,quarter +NA,NA,NA,NA,NA,0,1959,1 +0.926875951549,NA,NA,NA,NA,1,1959,2 +0.633606246971,NA,NA,NA,NA,2,1959,3 +0.600976557475,NA,NA,NA,NA,3,1959,4 +0.453151231155,NA,NA,NA,NA,4,1960,1 +0.531396899407,0.787253151569,NA,NA,NA,5,1960,2 +0.408473743096,0.450278225814,NA,NA,NA,6,1960,3 +0.552393586774,0.853030688488,NA,NA,NA,7,1960,4 +0.417651790939,0.693779737886,NA,NA,NA,8,1961,1 +0.49095737465,0.896663177231,NA,NA,NA,9,1961,2 +0.428833239858,0.79609648489,NA,NA,NA,10,1961,3 +0.469147620504,0.922687243459,NA,NA,NA,11,1961,4 +0.436736999814,0.853134868764,NA,NA,NA,12,1962,1 +0.510394254885,0.930099410742,NA,NA,NA,13,1962,2 +0.411385504482,0.885506756535,NA,NA,NA,14,1962,3 +0.535566555581,0.931828485019,NA,NA,NA,15,1962,4 +0.402270158287,0.903283376045,NA,NA,NA,16,1963,1 +0.506194338861,0.931510040586,NA,NA,NA,17,1963,2 +0.458491247855,0.913278709777,NA,NA,NA,18,1963,3 +0.484240944987,0.930532502277,NA,NA,NA,19,1963,4 +0.501669612343,0.918968783543,NA,NA,NA,20,1964,1 +0.440101630027,0.929541114521,NA,NA,NA,21,1964,2 +0.478275976186,0.922234739649,NA,NA,NA,22,1964,3 +0.442414613977,0.928731855015,NA,NA,NA,23,1964,4 +0.503014933228,0.924128963213,0.502280133605,NA,NA,24,1965,1 +0.456930426173,0.928130464384,0.610884416699,NA,NA,25,1965,2 +0.537425616205,0.925238000735,0.678885168808,NA,NA,26,1965,3 +0.436082712435,0.927706897914,0.769092153842,NA,NA,27,1965,4 +0.568771416789,0.925892825845,0.807055881607,NA,NA,28,1966,1 +0.539133819579,0.927418422325,0.8443911252,NA,NA,29,1966,2 +0.559164529019,0.926282457845,0.866300675959,NA,NA,30,1966,3 +0.615494140728,0.927226332487,0.885927796804,NA,NA,31,1966,4 +0.463903076148,0.926515888507,0.895779387647,NA,NA,32,1967,1 +0.5830295495,0.927100449929,0.906369888149,NA,NA,33,1967,2 +0.495443791961,0.926656578438,0.911084532602,NA,NA,34,1967,3 +0.60777429841,0.927018911675,0.916577188454,NA,NA,35,1967,4 +0.582869042841,0.926741814344,0.918827665409,NA,NA,36,1968,1 +0.61140316355,0.926966555469,0.921731741588,NA,NA,37,1968,2 +0.654308182057,0.926793684079,0.922760814887,NA,NA,38,1968,3 +0.626046083673,0.926933159955,0.924312401736,NA,NA,39,1968,4 +0.659568437175,0.92682536852,0.924768399047,NA,NA,40,1969,1 +0.702182612167,0.926911967617,0.925602340246,NA,NA,41,1969,2 +0.676680100948,0.92684478457,0.925793418185,NA,NA,42,1969,3 +0.718982324355,0.926898573002,0.926246113743,NA,NA,43,1969,4 +0.715065412134,0.926856714388,0.926317964381,NA,NA,44,1970,1 +0.739464381186,0.926890133571,0.926566236201,NA,NA,45,1970,2 +0.665152927376,0.926864060735,0.926587190611,NA,NA,46,1970,3 +0.720428394041,0.926884829459,0.926724766752,NA,NA,47,1970,4 +0.650156869346,0.926868592935,0.926725808206,NA,NA,48,1971,1 +0.603689964031,0.926881502481,0.926802868425,NA,NA,49,1971,2 +0.677376711493,0.926871393255,0.926797452637,NA,NA,50,1971,3 +0.552124032301,0.926879418957,0.92684108383,NA,NA,51,1971,4 +0.647156334215,0.926873125665,0.926834650149,NA,NA,52,1972,1 +0.54154829535,0.926878115805,0.926859615951,NA,NA,53,1972,2 +0.617995496756,0.92687419852,0.926854064781,NA,NA,54,1972,3 +0.584525798927,0.926877301574,0.92686849581,NA,NA,55,1972,4 +0.686365897037,0.926874863483,0.926864259633,NA,NA,56,1973,1 +0.839659370651,0.926876793247,0.926872681224,NA,NA,57,1973,2 +0.701099361701,0.926875275918,0.926869650253,NA,NA,58,1973,3 +1.15320258826,0.926876476108,0.926874608391,NA,NA,59,1973,4 +0.871441863591,0.926875531869,0.926872522849,NA,NA,60,1974,1 +1.280416856594,0.926876278354,0.926875465351,NA,NA,61,1974,2 +0.941912924665,0.926875690783,0.926874066857,NA,NA,62,1974,3 +1.421855168187,0.926876155098,0.926875825659,NA,NA,63,1974,4 +0.964394131175,0.926875789485,0.926874904564,NA,NA,64,1975,1 +1.150466774181,0.926876078301,0.926875962472,NA,NA,65,1975,2 +0.85409221038,0.926875850808,0.926875363632,NA,NA,66,1975,3 +0.993557830512,0.926876030465,0.926876003446,NA,NA,67,1975,4 +0.837995387265,0.926875888918,0.926875617851,NA,NA,68,1976,1 +0.762988138921,0.926876000675,0.926876006629,NA,NA,69,1976,2 +0.859511896751,0.926875912606,0.92687576015,NA,NA,70,1976,3 +0.810030470887,0.926875982127,0.926875997335,NA,NA,71,1976,4 +0.901349696384,0.926875927332,0.926875840663,NA,NA,72,1977,1 +1.043314696339,0.92687597058,0.926875985855,NA,NA,73,1977,2 +0.853559181381,0.926875936489,0.926875886702,NA,NA,74,1977,3 +0.986097269534,0.926875963393,0.926875975834,NA,NA,75,1977,4 +0.907294657184,0.926875942182,0.926875913297,NA,NA,76,1978,1 +1.059076432587,0.926875958919,0.926875968144,NA,NA,77,1978,2 +1.177605897025,0.926875945723,0.926875928809,NA,NA,78,1978,3 +1.253949132154,0.926875956136,0.926875962625,NA,NA,79,1978,4 +1.217860010541,0.926875947925,0.926875937936,NA,NA,80,1979,1 +1.501325339319,0.926875954403,0.926875958819,NA,NA,81,1979,2 +1.524250409429,0.926875949295,0.92687594335,NA,NA,82,1979,3 +1.676176485287,0.926875953325,0.926875956264,NA,NA,83,1979,4 +1.854504652437,0.926875950147,0.926875946585,NA,NA,84,1980,1 +1.901513413987,0.926875952654,0.92687595458,NA,NA,85,1980,2 +1.558142568666,0.926875950677,0.92687594853,NA,NA,86,1980,3 +1.742290774667,0.926875952237,0.926875953484,NA,NA,87,1980,4 +1.559666600933,0.926875951007,0.926875949706,NA,NA,88,1981,1 +1.594105991891,0.926875951977,0.926875952777,NA,NA,89,1981,2 +1.707234772129,0.926875951212,0.92687595042,NA,NA,90,1981,3 +1.463881177096,0.926875951815,0.926875952326,NA,NA,91,1981,4 +1.244991116204,0.926875951339,0.926875950856,NA,NA,92,1982,1 +0.939154925645,0.926875951715,0.926875952039,NA,NA,93,1982,2 +1.542426544743,0.926875951419,0.926875951122,NA,NA,94,1982,3 +0.654114631403,0.926875951652,0.926875951857,NA,NA,95,1982,4 +1.005928586612,0.926875951468,0.926875951286,NA,NA,96,1983,1 +0.5770482181,0.926875951613,0.926875951742,NA,NA,97,1983,2 +0.95341887399,0.926875951499,0.926875951387,NA,NA,98,1983,3 +0.818617614112,0.926875951589,0.92687595167,NA,NA,99,1983,4 +1.210412511227,0.926875951518,0.926875951449,NA,NA,100,1984,1 +0.911754766523,0.926875951574,0.926875951625,NA,NA,101,1984,2 +1.082514212047,0.92687595153,0.926875951487,1.082514212047,NA,102,1984,3 +0.879318762679,0.926875951565,0.926875951597,0.879318762679,NA,103,1984,4 +0.868745408741,0.926875951537,0.926875951511,0.868745408741,NA,104,1985,1 +1.023626645298,0.926875951559,0.926875951579,1.023626645298,NA,105,1985,2 +0.79463171264,0.926875951542,0.926875951525,0.79463171264,NA,106,1985,3 +0.986626882635,0.926875951555,0.926875951568,0.986626882635,NA,107,1985,4 +0.996556789984,0.926875951545,0.926875951534,0.996556789984,NA,108,1986,1 +0.140269302742,0.926875951553,0.926875951561,0.140269302742,NA,109,1986,2 +1.03947325468,0.926875951546,0.92687595154,1.03947325468,NA,110,1986,3 +0.210711254325,0.926875951552,0.926875951556,0.210711254325,NA,111,1986,4 +1.357673381792,0.926875951547,0.926875951544,1.357673381792,NA,112,1987,1 +0.681296293846,0.926875951551,0.926875951554,0.681296293846,NA,113,1987,2 +1.386706062635,0.926875951548,0.926875951546,1.386706062635,NA,114,1987,3 +0.780417533018,0.92687595155,0.926875951552,0.780417533018,NA,115,1987,4 +1.266151933823,0.926875951549,0.926875951547,1.266151933823,NA,116,1988,1 +0.82496087227,0.92687595155,0.926875951551,0.82496087227,NA,117,1988,2 +1.302715943063,0.926875951549,0.926875951548,1.302715943063,NA,118,1988,3 +0.952175431435,0.92687595155,0.92687595155,0.952175431435,NA,119,1988,4 +1.323092157858,0.926875951549,0.926875951548,1.323092157858,NA,120,1989,1 +1.209218019042,0.92687595155,0.92687595155,1.209218019042,NA,121,1989,2 +1.303178028525,0.926875951549,0.926875951549,1.303178028525,NA,122,1989,3 +1.002851919708,0.926875951549,0.92687595155,1.002851919708,NA,123,1989,4 +1.526454782381,0.926875951549,0.926875951549,1.526454782381,NA,124,1990,1 +0.968518911231,0.926875951549,0.92687595155,0.968518911231,NA,125,1990,2 +1.590442626657,0.926875951549,0.926875951549,1.590442626657,NA,126,1990,3 +1.528578442319,0.926875951549,0.926875951549,1.528578442319,NA,127,1990,4 +1.361465855954,0.926875951549,0.926875951549,1.361465855954,NA,128,1991,1 +1.010724509749,0.926875951549,0.926875951549,1.010724509749,NA,129,1991,2 +1.063746800264,0.926875951549,0.926875951549,1.063746800264,NA,130,1991,3 +0.791401287815,0.926875951549,0.926875951549,0.791401287815,NA,131,1991,4 +1.127729190237,0.926875951549,0.926875951549,1.127729190237,NA,132,1992,1 +0.898267568671,0.926875951549,0.926875951549,0.898267568671,NA,133,1992,2 +1.127627885484,0.926875951549,0.926875951549,1.127627885484,NA,134,1992,3 +0.961916150629,0.926875951549,0.926875951549,0.961916150629,NA,135,1992,4 +1.111301745236,0.926875951549,0.926875951549,1.111301745236,NA,136,1993,1 +0.925817768912,0.926875951549,0.926875951549,0.925817768912,NA,137,1993,2 +0.939080160518,0.926875951549,0.926875951549,0.939080160518,NA,138,1993,3 +0.947089980712,0.926875951549,0.926875951549,0.947089980712,NA,139,1993,4 +0.82756283985,0.926875951549,0.926875951549,0.82756283985,NA,140,1994,1 +0.954939844073,0.926875951549,0.926875951549,0.954939844073,NA,141,1994,2 +0.959020786992,0.926875951549,0.926875951549,0.959020786992,NA,142,1994,3 +0.979792181372,0.926875951549,0.926875951549,0.979792181372,NA,143,1994,4 +1.032840789674,0.926875951549,0.926875951549,1.032840789674,NA,144,1995,1 +1.075400219918,0.926875951549,0.926875951549,1.075400219918,NA,145,1995,2 +0.910463491692,0.926875951549,0.926875951549,0.910463491692,NA,146,1995,3 +1.005071328455,0.926875951549,0.926875951549,1.005071328455,NA,147,1995,4 +0.959890396531,0.926875951549,0.926875951549,0.959890396531,NA,148,1996,1 +1.143650550597,0.926875951549,0.926875951549,1.143650550597,NA,149,1996,2 +0.930644097148,0.926875951549,0.926875951549,0.930644097148,NA,150,1996,3 +1.169777601905,0.926875951549,0.926875951549,1.169777601905,NA,151,1996,4 +0.93805492924,0.926875951549,0.926875951549,0.93805492924,NA,152,1997,1 +0.906242336212,0.926875951549,0.926875951549,0.906242336212,NA,153,1997,2 +0.745600585391,0.926875951549,0.926875951549,0.745600585391,NA,154,1997,3 +0.94985805589,0.926875951549,0.926875951549,0.94985805589,NA,155,1997,4 +0.641043854442,0.926875951549,0.926875951549,0.641043854442,NA,156,1998,1 +0.774912961323,0.926875951549,0.926875951549,0.774912961323,NA,157,1998,2 +0.776379228982,0.926875951549,0.926875951549,0.776379228982,NA,158,1998,3 +0.772859284549,0.926875951549,0.926875951549,0.772859284549,NA,159,1998,4 +0.885948439896,0.926875951549,0.926875951549,0.885948439896,NA,160,1999,1 +0.980364607258,0.926875951549,0.926875951549,0.980364607258,NA,161,1999,2 +0.857865677115,0.926875951549,0.926875951549,0.857865677115,NA,162,1999,3 +1.186796165191,0.926875951549,0.926875951549,1.186796165191,NA,163,1999,4 +0.938294852229,0.926875951549,0.926875951549,0.938294852229,NA,164,2000,1 +1.366714667797,0.926875951549,0.926875951549,1.366714667797,NA,165,2000,2 +1.187093606191,0.926875951549,0.926875951549,1.187093606191,NA,166,2000,3 +1.268164124663,0.926875951549,0.926875951549,1.268164124663,NA,167,2000,4 +1.28704922554,0.926875951549,0.926875951549,1.28704922554,NA,168,2001,1 +0.956166057554,0.926875951549,0.926875951549,0.956166057554,NA,169,2001,2 +1.112741880681,0.926875951549,0.926875951549,1.112741880681,NA,170,2001,3 +0.553027367719,0.926875951549,0.926875951549,0.553027367719,NA,171,2001,4 +0.731847516179,0.926875951549,0.926875951549,0.731847516179,NA,172,2002,1 +0.927667777009,0.926875951549,0.926875951549,0.927667777009,NA,173,2002,2 +0.763984054662,0.926875951549,0.926875951549,0.763984054662,NA,174,2002,3 +1.187585436838,0.926875951549,0.926875951549,1.187585436838,NA,175,2002,4 +0.970261476307,0.926875951549,0.926875951549,0.970261476307,NA,176,2003,1 +0.955771997295,0.926875951549,0.926875951549,0.955771997295,NA,177,2003,2 +0.781622253043,0.926875951549,0.926875951549,0.781622253043,NA,178,2003,3 +1.002306955991,0.926875951549,0.926875951549,1.002306955991,NA,179,2003,4 +0.980189093065,0.926875951549,0.926875951549,0.980189093065,NA,180,2004,1 +1.115364246408,0.926875951549,0.926875951549,1.115364246408,NA,181,2004,2 +1.252112578409,0.926875951549,0.926875951549,1.252112578409,NA,182,2004,3 +1.263254580758,0.926875951549,0.926875951549,1.263254580758,NA,183,2004,4 +1.101757976061,0.926875951549,0.926875951549,1.101757976061,NA,184,2005,1 +1.480277083021,0.926875951549,0.926875951549,1.480277083021,NA,185,2005,2 +0.8474719581,0.926875951549,0.926875951549,0.8474719581,NA,186,2005,3 +2.641343677264,0.926875951549,0.926875951549,2.641343677264,NA,187,2005,4 +0.299792134874,0.926875951549,0.926875951549,0.299792134874,NA,188,2006,1 +2.323857621587,0.926875951549,0.926875951549,2.323857621587,NA,189,2006,2 +0.368579502305,0.926875951549,0.926875951549,0.368579502305,NA,190,2006,3 +1.145176180268,0.926875951549,0.926875951549,1.145176180268,NA,191,2006,4 +0.767219433255,0.926875951549,0.926875951549,0.767219433255,NA,192,2007,1 +1.546790605375,0.926875951549,0.926875951549,1.546790605375,NA,193,2007,2 +0.98052154915,0.926875951549,0.926875951549,0.98052154915,NA,194,2007,3 +1.809685838489,0.926875951549,0.926875951549,1.809685838489,NA,195,2007,4 +1.594814571946,0.926875951549,0.926875951549,1.594814571946,NA,196,2008,1 +1.576157878722,0.926875951549,0.926875951549,1.576157878722,NA,197,2008,2 +2.627374926492,0.926875951549,0.926875951549,2.627374926492,NA,198,2008,3 +-0.080501465061,0.926875951549,0.926875951549,-0.080501465061,NA,199,2008,4 +-0.143905364796,0.926875951549,0.926875951549,-0.143905364796,NA,200,2009,1 +-0.291651949853,0.926875951549,0.926875951549,-0.291651949853,NA,201,2009,2 +0.543157406421,0.926875951549,0.926875951549,0.543157406423,NA,202,2009,3 +1.196374008885,0.926875951549,0.926875951549,0.670188970211,1.196374008885,203,2009,4 +1.265346864378,0.926875951549,0.926875951549,1.117335644106,1.265346864378,204,2010,1 +1.173696210516,0.926875951549,0.926875951549,0.740831804756,1.173696210516,205,2010,2 +1.078652308679,0.926875951549,0.926875951549,0.983052812221,1.078652308679,206,2010,3 +1.037707266894,0.926875951549,0.926875951549,0.85483217265,1.037707266894,207,2010,4 +1.014688660435,0.926875951549,0.926875951549,0.959658388297,1.014688660435,208,2011,1 +0.979957079474,0.926875951549,0.926875951549,0.878568582037,0.979957079474,209,2011,2 +0.970749320849,0.926875951549,0.926875951549,0.952456798029,0.970749320849,210,2011,3 +0.954264512229,0.926875951549,0.926875951549,0.89723984453,0.954264512229,211,2011,4 +0.949096714807,0.926875951549,0.926875951549,0.943096789796,0.949096714807,212,2012,1 +0.940410834647,0.926875951549,0.926875951549,0.909314112718,0.940410834647,213,2012,2 +0.938376248966,0.926875951549,0.926875951549,0.937273453716,0.938376248966,214,2012,3 +0.933543521689,0.926875951549,0.926875951549,0.91618573467,0.933543521689,215,2012,4 +0.932798795546,0.926875951549,0.926875951549,0.933567508384,0.932798795546,216,2013,1 +0.930161942404,0.926875951549,0.926875951549,0.920353581631,0.930161942404,217,2013,2 +0.929938463825,0.926875951549,0.926875951549,0.931133359137,0.929938463825,218,2013,3 +0.928479634179,0.926875951549,0.926875951549,0.922889904339,0.928479634179,219,2013,4 +0.928469062843,0.926875951549,0.926875951549,0.929572741746,0.928469062843,220,2014,1 +0.927650865487,0.926875951549,0.926875951549,0.924430761588,0.927650865487,221,2014,2 +0.927708891911,0.926875951549,0.926875951549,0.928578703482,0.927708891911,222,2014,3 +0.927245679784,0.926875951549,0.926875951549,0.925372237336,0.927245679784,223,2014,4 +0.927314186847,0.926875951549,0.926875951549,0.927947780535,0.927314186847,224,2015,1 +0.927049147244,0.926875951549,0.926875951549,0.925949361587,0.927049147244,225,2015,2 +0.927108200998,0.926875951549,0.926875951549,0.927549079877,0.927108200998,226,2015,3 +0.926954981816,0.926875951549,0.926875951549,0.92630398656,0.926954981816,227,2015,4 diff --git a/statsmodels/tsa/tests/results/results_arma.py b/statsmodels/tsa/tests/results/results_arma.py new file mode 100644 index 0000000..2ad4715 --- /dev/null +++ b/statsmodels/tsa/tests/results/results_arma.py @@ -0,0 +1,818 @@ +""" +Results for ARMA models. Produced by gretl. +""" +import os +from numpy import genfromtxt + +current_path = os.path.dirname(os.path.abspath(__file__)) +with open(current_path+"/yhat_exact_nc.csv", "rb") as fd: + yhat_mle = genfromtxt(fd, delimiter=",", skip_header=1, dtype=float) + +with open(current_path+"/yhat_css_nc.csv", "rb") as fd: + yhat_css = genfromtxt(fd, delimiter=",", skip_header=1, dtype=float) + +with open(current_path+"/yhat_exact_c.csv", "rb") as fd: + yhatc_mle = genfromtxt(fd, delimiter=",", skip_header=1, dtype=float) + +with open(current_path+"/yhat_css_c.csv", "rb") as fd: + yhatc_css = genfromtxt(fd, delimiter=",", skip_header=1, dtype=float) + +with open(current_path+"/resids_exact_nc.csv", "rb") as fd: + resids_mle = genfromtxt(fd, delimiter=",", skip_header=1, dtype=float) + +with open(current_path+"/resids_css_nc.csv", "rb") as fd: + resids_css = genfromtxt(fd, delimiter=",", skip_header=1, dtype=float) + +with open(current_path+"/resids_exact_c.csv", "rb") as fd: + residsc_mle = genfromtxt(fd, delimiter=",", skip_header=1, dtype=float) + +with open(current_path+"/resids_css_c.csv", "rb") as fd: + residsc_css = genfromtxt(fd, delimiter=",", skip_header=1, dtype=float) + +with open(current_path+"/results_arma_forecasts.csv", "rb") as fd: + forecast_results = genfromtxt(fd, names=True, delimiter=",", dtype=float) + + +class Y_arma11(object): + def __init__(self, method="mle"): + if method == "mle": + self.params = [0.788452102751, 0.381793815167] + self.aic = 714.489820273473 + self.bic = 725.054203027060 + self.arroots = 1.2683 + 0j + self.maroots = -2.6192 + 0j + self.bse = [0.042075906061, 0.060925105865] + self.hqic = 718.741675179309 + self.llf = -354.244910136737 + self.resid = resids_mle[:, 0] + self.fittedvalues = yhat_mle[:, 0] + self.pvalues = [2.39e-78, 3.69e-10] + self.tvalues = [18.74, 6.267] + self.sigma2 = 0.994743350844 ** 2 + self.cov_params = [[0.0017704, -0.0010612], + [-0.0010612, 0.0037119]] + self.forecast = forecast_results['fc11'] + self.forecasterr = forecast_results['fe11'] + elif method == "css": + self.params = [0.791515576984, 0.383078056824] + self.aic = 710.994047176570 + self.bic = 721.546405865964 + self.arroots = [1.2634 + 0.0000j] + self.maroots = [-2.6104 + 0.0000j] + # NOTE: bse, cov_params, tvalues taken from R; commented-out + # versions below are from [TODO: finish this sentence] + # self.bse = [0.042369318062, 0.065703859674] + self.bse = [0.0424015620491, 0.0608752234378] + # self.cov_params = [ + # [0.0017952, -0.0010996], + # [-0.0010996, 0.0043170]] + self.cov_params = [ + [0.00179789246421, -0.00106195321540], + [-0.00106195321540, 0.00370579282860]] + self.hqic = 715.241545108550 + self.llf = -352.497023588285 + self.resid = resids_css[1:, 0] + self.fittedvalues = yhat_css[1:, 0] + self.pvalues = [7.02e-78, 5.53e-09] + # self.tvalues = [18.68, 5.830] + self.tvalues = [18.6671317239, 6.2928857557] + self.sigma2 = 0.996717562780**2 + + +class Y_arma14(object): + def __init__(self, method="mle"): + if method == "mle": + self.params = [0.763798613302, 0.306453049063, -0.835653786888, + 0.151382611965, 0.421169903784] + self.aic = 736.001094752429 + self.bic = 757.129860259603 + self.arroots = 1.3092 + 0j + self.maroots = [1.0392 - 0.7070j, 1.0392 + 0.7070j, + -1.2189 - 0.1310j, -1.2189 + 0.1310j] + self.bse = [0.064888368113, 0.078031359430, 0.076246826219, + 0.069267771804, 0.071567389557] + self.cov_params = [ + [0.0042105, -0.0031074, -0.0027947, -0.00027766, -0.00037373], + [-0.0031074, 0.0060889, 0.0033958, -0.0026825, -0.00062289], + [-0.0027947, 0.0033958, 0.0058136, -0.00063747, -0.0028984], + [-0.00027766, -0.0026825, -0.00063747, 0.0047980, 0.0026998], + [-0.00037373, -0.00062289, -0.0028984, 0.0026998, 0.0051219]] + self.hqic = 744.504804564101 + self.llf = -362.000547376215 + self.resid = resids_mle[:, 1] + self.fittedvalues = yhat_mle[:, 1] + self.pvalues = [5.51e-32, 8.59e-05, 5.96e-28, 0.0289, 3.98e-09] + self.tvalues = [11.77, 3.927, -10.96, 2.185, 5.885] + self.sigma2 = 1.022607088673 ** 2 + self.bse = [0.064888368113, 0.078031359430, 0.076246826219, + 0.069267771804, 0.071567389557] + elif method == "css": + self.params = [0.772072791055, 0.283961556581, -0.834797380642, + 0.157773469382, 0.431616426021] + self.aic = 734.294057687460 + self.bic = 755.398775066249 + self.arroots = [1.2952 + 0.0000j] + self.maroots = [1.0280 - 0.6987j, 1.0280 + 0.6987j, + -1.2108 - 0.1835j, -1.2108 + 0.1835j] + # NOTE: bse, cov_params, tvalues taken from R; commented-out + # versions below are from [TODO: finish this sentence] + # self.bse = [0.083423762397, 0.086852297123, 0.093883465705, + # 0.068170451942, 0.065938183073] + self.bse = [0.06106330, 0.07381130, 0.07257705, 0.06857992, + 0.07046048] + # self.cov_params = [ + # [0.0069595, -0.0053083, -0.0054522, -0.0016324, -0.00099984], + # [-0.0053083, 0.0075433, 0.0052442, -0.00071680, 0.0010335], + # [-0.0054522, 0.0052442, 0.0088141, 0.0019754, -0.0018231], + # [-0.0016324, -0.00071680, 0.0019754, 0.0046472, 0.0011853], + # [-0.00099984, 0.0010335, -0.0018231, 0.0011853, 0.0043478]] + self.cov_params = [ + [0.0037287270, -0.0025337305, -0.0023475489, + -0.0001894180, -0.0002716368], + [-0.0025337305, 0.0054481087, 0.0029356374, + -0.0027307668, -0.0008073432], + [-0.0023475489, 0.0029356374, 0.0052674275, + -0.0007578638, -0.0028534882], + [-0.0001894180, -0.0027307668, -0.0007578638, + 0.0047032056, 0.0026710177], + [-0.0002716368, -0.0008073432, -0.0028534882, + 0.0026710177, 0.0049646795] + ] + self.hqic = 742.789053551421 + self.llf = -361.147028843730 + self.resid = resids_css[1:, 1] + self.fittedvalues = yhat_css[1:, 1] + self.pvalues = [2.15e-20, 0.0011, 6.01e-19, 0.0206, 5.92e-11] + # self.tvalues = [9.255, 3.269, -8.892, 2.314, 6.546] + self.tvalues = [12.643194, 3.847252, -11.501785, 2.301399, + 6.126120] + self.sigma2 = 1.031950951582**2 + + +class Y_arma41(object): + def __init__(self, method="mle"): + if method == "mle": + self.params = [0.859167822255, -0.445990454620, -0.094364739597, + 0.633504596270, 0.039251240870] + self.aic = 680.801215465509 + self.bic = 701.929980972682 + self.arroots = [1.0209-0j, 0.2966-0.9835j, 0.2966+0.9835j, + -1.4652 + 0.0000j] + self.maroots = [-25.4769 + 0.0000] + self.bse = [0.097363938243, 0.136020728785, 0.128467873077, + 0.081059611396, 0.138536155409] + self.cov_params = [ + [0.0094797, -0.012908, 0.011870, -0.0073247, -0.011669], + [-0.012908, 0.018502, -0.017103, 0.010456, 0.015892], + [0.011870, -0.017103, 0.016504, -0.010091, -0.014626], + [-0.0073247, 0.010456, -0.010091, 0.0065707, 0.0089767], + [-0.011669, 0.015892, -0.014626, 0.0089767, 0.019192]] + self.hqic = 689.304925277181 + self.llf = -334.400607732754 + self.resid = resids_mle[:, 2] + self.fittedvalues = yhat_mle[:, 2] + self.pvalues = [1.10e-18, 0.0010, 0.4626, 5.48e-15, 0.7769] + self.tvalues = [8.824, -3.279, -.7345, 7.815, .2833] + self.sigma2 = 0.911409665692 ** 2 + self.forecast = forecast_results['fc41'] + self.forecasterr = forecast_results['fe41'] + elif method == "css": + self.params = [0.868370308475, -0.459433478113, -0.086098063077, + 0.635050245511, 0.033645204508] + self.aic = 666.171731561927 + self.bic = 687.203720777521 + self.arroots = [1.0184+0.0000j, 0.2960-0.9803j, 0.2960+0.9803j, + -1.4747+0.0000j] + self.maroots = [-29.7219 + 0.0000j] + # NOTE: bse, cov_params, tvalues taken from R; commented-out + # versions below are from [TODO: finish this sentence] + # self.bse = [0.077822066628, 0.112199961491, 0.104986211369, + # 0.068394652456, 0.113996438269] + self.bse = [0.09554032, 0.13387533, 0.12691479, 0.08045129, + 0.13456419] + # self.cov_params = [ + # [0.0060563, -0.0083712, 0.0076270, -0.0047067, -0.0070610], + # [-0.0083712, 0.012589, -0.011391, 0.0069576, 0.0098601], + # [0.0076270, -0.011391, 0.011022, -0.0067771, -0.0089971], + # [-0.0047067, 0.0069576, -0.0067771, 0.0046778, 0.0054205], + # [-0.0070610, 0.0098601, -0.0089971, 0.0054205, 0.012995] + # ] + self.cov_params = [ + [.009127952, -.01243259, .011488329, -.007070855, -.011031907], + [-.012432590, .01792260, -.016597806, .010136298, .015053122], + [.011488329, -.01659781, .016107364, -.009851695, -.013923062], + [-.007070855, .01013630, -.009851695, .006472410, .008562476], + [-.011031907, .01505312, -.013923062, .008562476, .018107521] + ] + self.hqic = 674.640335476392 + self.llf = -327.085865780964 + self.resid = resids_css[4:, 2] + self.fittedvalues = yhat_css[4:, 2] + self.pvalues = [6.51e-29, 4.23e-05, 0.4122, 1.62e-20, 0.7679] + # self.tvalues = [11.16, -4.095, -0.8201, 9.285, 0.2951] + self.tvalues = [9.0887381, -3.4315100, -0.6786792, 7.8938778, + 0.2503143] + self.sigma2 = 0.914551777765**2 + + +class Y_arma22(object): + def __init__(self, method="mle"): + if method == "mle": + self.params = [0.810898877154, -0.535753742985, 0.101765385197, + -0.691891368356] + self.aic = 756.286535543453 + self.bic = 773.893840132765 + self.arroots = [0.7568 - 1.1375j, 0.7568 + 1.1375j] + self.maroots = [-1.1309, 1.2780] + self.bse = [0.065073834100, 0.060522519771, 0.065569474599, + 0.071275323591] + self.cov_params = [ + [0.0042346, -0.0012416, -0.0024319, -0.0012756], + [-0.0012416, 0.0036630, -0.00022460, -0.0019999], + [-0.0024319, -0.00022460, 0.0042994, 0.0017842], + [-0.0012756, -0.0019999, 0.0017842, 0.0050802]] + self.hqic = 763.372960386513 + self.llf = -373.143267771727 + self.resid = resids_mle[:, 3] + self.fittedvalues = yhat_mle[:, 3] + self.pvalues = [1.22e-35, 8.59e-19, 0.1207, 2.81e-22] + self.tvalues = [12.46, -8.852, 1.552, -9.707] + self.sigma2 = 1.069529754715**2 + elif method == "css": + self.params = [0.811172493623, -0.538952207139, 0.108020549805, + -0.697398037845] + self.aic = 749.652327535412 + self.bic = 767.219471266237 + self.arroots = [0.7525 - 1.1354j, 0.7525 + 1.1354j] + self.maroots = [-1.1225 + 0.0000j, 1.2774 + 0.0000j] + # NOTE: bse, cov_params, tvalues taken from R; commented-out + # versions below are from [TODO: finish this sentence] + # self.bse = [0.063356402845, 0.064719801680, 0.058293106832, + # 0.061453528114] + self.bse = [0.06549657, 0.06127495, 0.06514116, 0.07148213] + # self.cov_params = [ + # [0.0040140, -0.0016670, -0.0019069, -0.0011369], + # [-0.0016670, 0.0041887, -0.00019356, -0.0014322], + # [-0.0019069, -0.00019356, 0.0033981, 0.0020063], + # [-0.0011369, -0.0014322, 0.0020063, 0.0037765]] + self.cov_params = [ + [0.004289801, -0.0012980774, -0.0024461381, -0.001244467], + [-0.001298077, 0.0037546193, -0.0001725373, -0.002039177], + [-0.002446138, -0.0001725373, 0.0042433713, 0.001720042], + [-0.001244467, -0.0020391767, 0.0017200417, 0.005109695] + ] + self.hqic = 756.724194601530 + self.llf = -369.826163767706 + self.resid = resids_css[2:, 3] + self.fittedvalues = yhat_css[2:, 3] + self.pvalues = [1.57e-37, 8.26e-17, 0.0639, 7.55e-30] + # self.tvalues = [12.80, -8.327, 1.853, -11.35] + self.tvalues = [12.385077, -8.795883, 1.657944, -9.755738] + self.sigma2 = 1.074973483083**2 + + +class Y_arma50(object): + def __init__(self, method="mle"): + if method == "mle": + self.params = [0.726892679311, -0.312619864536, 0.323740181610, + 0.226499145083, -0.089562902305] + self.aic = 691.422630427314 + self.bic = 712.551395934487 + self.arroots = [1.0772 + 0.0000j, 0.0087 - 1.2400j, + 0.0087 + 1.2400j, -1.9764 + 0.0000j, + 3.4107 + 0.0000j] + self.maroots = None # TODO: empty array? + self.bse = [0.062942787895, 0.076539691571, 0.076608230545, + 0.077330717503, 0.063499540628] + self.cov_params = [ + [0.0039618, -0.0028252, 0.0013351, -0.0013901, -0.00066624], + [-0.0028252, 0.0058583, -0.0040200, 0.0026059, -0.0014275], + [0.0013351, -0.0040200, 0.0058688, -0.0041018, 0.0013917], + [-0.0013901, 0.0026059, -0.0041018, 0.0059800, -0.0028959], + [-0.00066624, -0.0014275, 0.0013917, -0.0028959, 0.0040322]] + self.hqic = 699.926340238986 + self.llf = -339.711315213657 + self.resid = resids_mle[:, 4] + self.fittedvalues = yhat_mle[:, 4] + self.pvalues = [7.51e-31, 4.42e-05, 2.38e-05, 0.0034, 0.1584] + self.tvalues = [11.55, -4.084, 4.226, 2.929, -1.410] + self.sigma2 = 0.938374940397 ** 2 + self.forecast = forecast_results['fc50'] + self.forecasterr = forecast_results['fe50'] + elif method == "css": + # NOTE: some results use x-12 arima because gretl uses + # LS estimates for AR CSS + self.params = [0.725706505843, -0.305501865989, 0.320719417706, + 0.226552951649, -0.089852608091] + # self.aic = 674.817286564674 + self.aic = 676.8173 + # self.bic = 692.323577617397 + self.bic = 697.8248 + self.arroots = [1.0755 + 0.0000j, 0.0075-1.2434j, 0.0075 + 1.2434j, + -1.9686 + 0.0000j, 3.3994 + 0.0000j] + self.maroots = None + self.bse = [0.064344956583, 0.078060866211, 0.077980166982, + 0.078390791831, 0.064384559496] + self.cov_params = [ + [0.0041403, -0.0029335, 0.0013775, -0.0014298, -0.00068813], + [-0.0029335, 0.0060935, -0.0041786, 0.0026980, -0.0014765], + [0.0013775, -0.0041786, 0.0060809, -0.0042177, 0.0014572], + [-0.0014298, 0.0026980, -0.0042177, 0.0061451, -0.0029853], + [-0.00068813, -0.0014765, 0.0014572, -0.0029853, 0.0041454]] + # self.hqic = 681.867054880965 + self.hqic = 685.2770 + self.llf = -332.408643282337 + self.resid = resids_css[5:, 4] + self.fittedvalues = yhat_css[5:, 4] + self.pvalues = [1.68e-29, 9.09e-05, 3.91e-05, 0.0039, 0.1628] + self.tvalues = [11.28, -3.914, 4.113, 2.890, -1.396] + # self.sigma2 = 0.949462810435**2 + self.sigma2 = .939724 ** 2 + + +class Y_arma02(object): + def __init__(self, method="mle"): + if method == "mle": + self.params = [0.169096401142, -0.683713393265] + self.aic = 775.017701544762 + self.bic = 785.582084298349 + self.arroots = None + self.maroots = [-1.0920 + 0j, 1.3393 + 0j] + self.bse = [0.049254112414, 0.050541821979] + self.cov_params = [[0.0024260, 0.00078704], + [0.00078704, 0.0025545]] + self.hqic = 779.269556450598 + self.llf = -384.508850772381 + self.resid = resids_mle[:, 5] + self.fittedvalues = yhat_mle[:, 5] + self.pvalues = [.0006, 1.07e-41] + self.tvalues = [3.433, -13.53] + self.sigma2 = 1.122887152869 ** 2 + elif method == "css": + # NOTE: bse, cov_params, tvalues taken from R; commented-out + # versions below are from [TODO: finish this sentence] + self.params = [0.175605240783, -0.688421349504] + self.aic = 773.725350463014 + self.bic = 784.289733216601 + self.arroots = None + self.maroots = [-1.0844 + 0.j, 1.3395 + 0.j] + # self.bse = [0.044465497496, 0.045000813836] + self.bse = [0.04850046, 0.05023068] + # self.cov_params = [ + # [0.0019772, 0.00090016], + # [0.00090016, 0.0020251]] + self.cov_params = [ + [0.0023522942, 0.0007545702], + [0.0007545702, 0.0025231209] + ] + self.hqic = 777.977205368850 + self.llf = -383.862675231507 + self.resid = resids_css[:, 5] + self.fittedvalues = yhat_css[:, 5] + self.pvalues = [7.84e-05, 7.89e-53] + # self.tvalues = [3.949, -15.30] + self.tvalues = [3.620967, -13.705514] + self.sigma2 = 1.123571177436**2 + + +class Y_arma11c(object): + def __init__(self, method="mle"): + if method == "mle": + self.params = [4.856475759430, 0.664363281011, 0.407547531124] + self.aic = 737.922644877973 + self.bic = 752.008488549422 + self.arroots = [1.5052 + 0j] + self.maroots = [-2.4537 + 0j] + self.bse = [0.273164176960, 0.055495689209, 0.068249092654] + self.cov_params = [ + [0.074619, -0.00012834, 1.5413e-05], + [-0.00012834, 0.0030798, -0.0020242], + [1.5413e-05, -0.0020242, 0.0046579]] + self.hqic = 743.591784752421 + self.llf = -364.961322438987 + self.resid = residsc_mle[:, 0] + self.fittedvalues = yhatc_mle[:, 0] + self.pvalues = [1.04e-70, 5.02e-33, 2.35e-9] + self.tvalues = [17.78, 11.97, 5.971] + self.sigma2 = 1.039168068701 ** 2 + self.forecast = forecast_results['fc11c'] + self.forecasterr = forecast_results['fe11c'] + elif method == "css": + # NOTE: params, bse, cov_params, tvalues taken from R; + # commented-out versions below are from gretl + # NOTE: gretl gives the intercept not the mean, x-12-arima + # and R agree with us + # self.params = [1.625462134333, 0.666386002049, 0.409512270580] + self.params = [4.872477127267, 0.666395534262, 0.409517026658] + self.aic = 734.613526514951 + self.bic = 748.683338100810 + self.arroots = [1.5006 + 0.0000j] + self.maroots = [-2.4419 + 0.0000] + # self.bse = [0.294788633992, 0.057503298669, 0.063059352497] + self.bse = [0.2777238133284, 0.0557583459688, 0.0681432545482] + # self.cov_params = [ + # [0.086900, -0.016074, 0.010536], + # [-0.016074, 0.0033066, -0.0021977], + # [0.010536, -0.0021977, 0.0039765] + # ] + self.cov_params = [ + [7.71305164897e-02, 5.65375305967e-06, 1.29481824075e-06], + [5.65375305967e-06, 3.10899314518e-03, -2.02754322743e-03], + [1.29481824075e-06, -2.02754322743e-03, 4.64350314042e-03] + ] + self.hqic = 740.276857090925 + self.llf = -363.306763257476 + self.resid = residsc_css[1:, 0] + self.fittedvalues = yhatc_css[1:, 0] + self.pvalues = [3.51e-08, 4.70e-31, 8.35e-11] + # self.tvalues = [5.514, 11.59, 6.494] + self.tvalues = [17.544326, 11.951494, 6.009649] + self.sigma2 = 1.040940645447**2 + + +class Y_arma14c(object): + def __init__(self, method="mle"): + if method == "mle": + self.params = [4.773779823083, 0.591149657917, 0.322267595204, + -0.702933089342, 0.116129490967, 0.323009574097] + self.aic = 720.814886758937 + self.bic = 745.465113183973 + self.arroots = [1.6916 + 0.0000j] + # TODO: had to change order in maroots? + self.maroots = [1.1071 - 0.7821j, 1.1071 + 0.7821j, + -1.2868 - 0.1705j, -1.2868 + 0.1705j] + self.bse = [0.160891073193, 0.151756542096, 0.152996852330, + 0.140231020145, 0.064663675882, 0.065045468010] + self.cov_params = [ + [0.025886, 0.00026606, -0.00020969, + -0.00021435, 4.2558e-05, 5.2904e-05], + [0.00026606, 0.023030, -0.021269, + -0.018787, 0.0015423, 0.0011363], + [-0.00020969, -0.021269, 0.023408, + 0.018469, -0.0035048, -0.0010750], + [-0.00021435, -0.018787, 0.018469, + 0.019665, -0.00085717, -0.0033840], + [4.2558e-05, 0.0015423, -0.0035048, + -0.00085717, 0.0041814, 0.0014543], + [5.2904e-05, 0.0011363, -0.0010750, + -0.0033840, 0.0014543, 0.0042309]] + self.hqic = 730.735881539221 + self.llf = -353.407443379469 + self.resid = residsc_mle[:, 1] + self.fittedvalues = yhatc_mle[:, 1] + self.pvalues = [1.82e-193, 9.80e-05, 0.0352, + 5.37e-07, 0.0725, 6.84e-07] + self.tvalues = [29.67, 3.895, 2.106, -5.013, 1.796, 4.966] + self.sigma2 = 0.990262659233 ** 2 + elif method == "css": + # NOTE: params, bse, cov_params, tvalues taken from R; + # commented-out versions below are from + # [TODO: Finish this sentence] + # self.params = [1.502401748545, 0.683090744792, 0.197636417391, + # -0.763847295045, 0.137000823589, 0.304781097398] + self.params = [4.740785760452, 0.683056278882, 0.197681128402, + -0.763804443884, 0.136991271488, 0.304776424257] + self.aic = 719.977407193363 + self.bic = 744.599577468616 + self.arroots = [1.4639 + 0.0000j] + self.maroots = [1.1306-0.7071j, 1.1306+0.7071j, -1.3554 - 0.0896j, + -1.3554 + 0.0896j] + # self.bse = [0.534723749868, 0.111273280223, 0.119840296133, + # 0.111263606843, 0.070759105676, 0.061783181500] + self.bse = [0.1750455599911, 0.0942341854820, 0.0999988749541, + 0.0929630759694, 0.0628352649371, 0.0645444272345] + # self.cov_params = [ + # [0.28593, -0.059175, 0.053968, + # 0.046974, 0.00085168, 0.0028000], + # [-0.059175, 0.012382, -0.011333, + # -0.0098375, -0.00012631, -0.00058518], + # [0.053968, -0.011333, 0.014362, + # 0.010298, -0.0028117, -0.00011132], + # [0.046974, -0.0098375, 0.010298, + # 0.012380, 0.00031018, -0.0021617], + # [0.00085168, -0.00012631, -0.0028117, + # 0.00031018, 0.0050069, 0.00079958], + # [.0028000, -0.00058518, -0.00011132, + # -0.0021617, 0.00079958, 0.0038172]] + self.cov_params = [ + [0.030640948072601, -1.61599091345e-03, 0.001707084515950, + 0.001163372764659, -1.78587340563e-04, 0.000116062673743], + [-0.001615990913449, 8.88008171345e-03, -0.007454252059003, + -0.006468410832237, 5.66645379098e-05, -0.000381880917361], + [0.001707084515950, -7.45425205900e-03, 0.009999774992092, + 0.005860013051220, -2.27726197200e-03, 0.000757683049669], + [0.001163372764659, -6.46841083224e-03, 0.005860013051220, + 0.008642133493695, 4.40550745987e-04, -0.002170706208320], + [-0.000178587340563, 5.66645379098e-05, -0.002277261972002, + 0.000440550745987, 3.94827051971e-03, 0.000884171120090], + [0.000116062673743, -3.81880917361e-04, 0.000757683049669, + -0.002170706208320, 8.84171120090e-04, 0.004165983087027] + ] + self.hqic = 729.888235701317 + self.llf = -352.988703596681 + self.resid = residsc_css[1:, 1] + self.fittedvalues = yhatc_css[1:, 1] + self.pvalues = [.0050, 8.31e-10, .0991, 6.64e-12, .0528, 8.09e-7] + # self.tvalues = [2.810, 6.139, 1.649, -6.865, 1.936, 4.933] + self.tvalues = [27.08315344127, 7.24849772286, 1.97683352430, + -8.21621311385, 2.18016541548, 4.72196341831] + self.sigma2 = 0.998687642867**2 + + +class Y_arma41c(object): + def __init__(self, method="mle"): + if method == "mle": + self.params = [1.062980233899, 0.768972932892, -0.264824839032, + -0.279936544064, 0.756963578430, 0.231557444097] + self.aic = 686.468309958027 + self.bic = 711.118536383063 + self.arroots = [1.0077 + 0j, .3044-.9793j, .3044+.9793j, + -1.2466 + 0j] + self.maroots = [-4.3186 + 0.j] + self.bse = [2.781653916478, 0.063404432598, 0.091047664068, + 0.084679571389, 0.054747989396, 0.098952817806] + self.cov_params = [ + [7.7376, 0.0080220, -0.0039840, + 0.0064925, 0.0022936, -0.0098015], + [0.0080220, 0.0040201, -0.0054843, + 0.0046548, -0.0029922, -0.0047964], + [-0.0039840, -0.0054843, 0.0082897, + -0.0072913, 0.0043566, 0.0067289], + [0.0064925, 0.0046548, -0.0072913, + 0.0071706, -0.0043610, -0.0057962], + [0.0022936, -0.0029922, 0.0043566, + -0.0043610, 0.0029973, 0.0036193], + [-0.0098015, -0.0047964, 0.0067289, + -0.0057962, 0.0036193, 0.0097917]] + self.hqic = 696.389304738311 + self.llf = -336.234154979014 + self.resid = residsc_mle[:, 2] + self.fittedvalues = yhatc_mle[:, 2] + self.pvalues = [0.7024, 7.50e-34, 0.0036, 0.0009, 1.77e-43, 0.0193] + self.tvalues = [0.3821, 12.13, -2.909, -3.306, 13.83, 2.340] + self.sigma2 = 0.915487643192 ** 2 + self.forecast = forecast_results['fc41c'] + self.forecasterr = forecast_results['fe41c'] + elif method == "css": + # NOTE: params, bse, cov_params, tvalues taken from R; + # commented-out versions below are from + # [TODO: Finish this sentence] + # self.params = [-0.077068926631, 0.763816531155, -0.270949972390, + # -0.284496499726, 0.757135838677, 0.225247299659] + self.params = [-2.234160612756, 0.763815335585, -0.270946894536, + -0.284497190744, 0.757136686518, 0.225260672575] + self.aic = 668.907200379791 + self.bic = 693.444521131318 + self.arroots = [1.0141+0.0000j, 0.3036-0.9765j, 0.3036+0.9765j, + -1.2455+0.0000j] + self.maroots = [-4.4396+0.0000j] + # self.bse = [0.076048453921, 0.067854052128, 0.098041415680, + # 0.090698349822, 0.057331126067, 0.099985455449] + self.bse = [2.1842857865614, 0.0644148863289, 0.0923502391706, + 0.0860004491012, 0.0558014467639, 0.1003832271008] + # self.cov_params = [ + # [0.0057834, 0.00052477, -0.00079965, + # 0.00061291, -0.00013618, -0.0018963], + # [0.00052477, 0.0046042, -0.0062505, + # 0.0053416, -0.0032941, -0.0047957], + # [-0.00079965, -0.0062505, 0.0096121, + # -0.0084500, 0.0047967, 0.0064755], + # [0.00061291, 0.0053416, -0.0084500, + # 0.0082262, -0.0048029, -0.0057908], + # [-0.00013618, -0.0032941, 0.0047967, + # -0.0048029, 0.0032869, 0.0035716], + # [-0.0018963, -0.0047957, 0.0064755, + # -0.0057908, 0.0035716, 0.0099971] + # ] + self.cov_params = [ + [4.77110439737413, -0.00908682223670, 0.00330914414276, + -0.00684678121434, -0.00232348925409, 0.00950558295301], + [-0.00908682223670, -0.00562941039954, 0.00852856667488, + -0.00749429397372, -0.00304322809665, -0.00494984519949], + [0.00330914414276, -0.00562941039954, 0.00852856667488, + -0.00749429397372, 0.00443590637587, 0.00693146988144], + [-0.00684678121434, 0.00482359594764, -0.00749429397372, + 0.00739607724561, -0.00448059420947, -0.00600908311031], + [-0.00232348925409, -0.00304322809665, 0.00443590637587, + -0.00448059420947, 0.00311380146095, 0.00373734623817], + [0.00950558295301, -0.00494984519949, 0.00693146988144, + -0.00600908311031, 0.00373734623817, 0.01007679228317]] + self.hqic = 678.787238280001 + self.llf = -327.453600189896 + self.resid = residsc_css[4:, 2] + self.fittedvalues = yhatc_css[4:, 2] + self.pvalues = [0.3109, 2.15e-29, 0.0057, 0.0017, 8.06e-40, 0.0243] + # self.tvalues = [-1.013, 11.26, -2.764, -3.137, 13.21, 2.253] + self.tvalues = [-1.02283347101, 11.85774561000, -2.93390571556, + -3.30808959392, 13.56840602577, 2.24400708246] + self.sigma2 = 0.915919923456**2 + + +class Y_arma22c(object): + def __init__(self, method="mle"): + if method == "mle": + self.params = [4.507728587708, 0.788365037622, -0.358656861792, + 0.035886565643, -0.699600200796] + self.aic = 813.417242529788 + self.bic = 834.546008036962 + self.arroots = [1.0991 - 1.2571j, 1.0991 + 1.2571j] + self.maroots = [-1.1702 + 0.0000j, 1.2215 + 0.0000j] + self.bse = [0.045346684035, 0.078382496509, 0.07004802526, + 0.069227816205, 0.070668181454] + self.cov_params = [ + [0.0020563, -2.3845e-05, -6.3775e-06, 4.6698e-05, 5.8515e-05], + [-2.3845e-05, 0.0061438, -0.0014403, -0.0035405, -0.0019265], + [-6.3775e-06, -0.0014403, 0.0049067, -0.00059888, -0.0025716], + [4.6698e-05, -0.0035405, -0.00059888, 0.0047925, 0.0022931], + [5.8515e-05, -0.0019265, -0.0025716, 0.0022931, 0.0049940]] + self.hqic = 821.920952341460 + self.llf = -400.708621264894 + self.resid = residsc_mle[:, 3] + self.fittedvalues = yhatc_mle[:, 3] + self.pvalues = [0.0000, 8.48e-24, 3.05e-07, 0.6042, 4.17e-23] + self.tvalues = [99.41, 10.06, -5.120, 0.5184, -9.900] + self.sigma2 = 1.196309833136 ** 2 + elif method == "css": + # NOTE: params, bse, cov_params, tvalues taken from R; + # commented-out versions below are from + # [TODO: Finish this sentence] + # self.params = [2.571274348147, 0.793030965872, -0.363511071688, + # 0.033543918525, -0.702593972949] + self.params = [4.507207454494, 0.793055048760, -0.363521072479, + 0.033519062805, -0.702595834943] + self.aic = 806.807171655455 + self.bic = 827.887744132445 + # self.bse = [0.369201481343, 0.076041378729, 0.070029488852, + # 0.062547355221, 0.068166970089] + self.bse = [0.0446913896589, 0.0783060902603, 0.0697866176073, + 0.0681463870772, 0.068958002297] + # self.cov_params = [ + # [0.13631, -0.017255, -0.012852, 0.014091, 0.017241], + # [-0.017255, 0.0057823, -0.0020013, -0.0026493, -0.0014131], + # [-0.012852, -0.0020013, 0.0049041, -0.00042960, -0.0023845], + # [0.014091, -0.0026493, -0.00042960, 0.0039122, 0.0022028], + # [0.017241, -0.0014131, -0.0023845, 0.0022028, 0.0046467] + # ] + self.cov_params = [ + [1.99732030964e-03, -2.22972353619e-05, -0.000009957435095, + 4.64825632252e-05, 5.98134427402e-05], + [-2.22972353619e-05, 6.13184377186e-03, -0.001435210779968, + -3.47284237940e-03, -1.95077811843e-03], + [-9.95743509501e-06, -1.43521077997e-03, 0.004870171997068, + -6.54767224831e-04, -2.44459075151e-03], + [4.64825632252e-05, -3.47284237940e-03, -0.000654767224831, + 4.64393007167e-03, 2.34032945541e-03], + [5.98134427402e-05, -1.95077811843e-03, -0.002444590751509, + 2.34032945541e-03, 4.75520608091e-03]] + self.arroots = [1.0908 - 1.2494j, 1.0908 + 1.2494j] + self.maroots = [-1.1694 + 0.0000j, 1.2171 + 0.0000j] + self.hqic = 815.293412134796 + self.llf = -397.403585827727 + self.resid = residsc_css[2:, 3] + self.fittedvalues = yhatc_css[2:, 3] + self.pvalues = [3.30e-12, 1.83e-25, 2.09e-07, 0.5918, 6.55e-25] + # self.tvalues = [6.964, 10.43, -5.191, 0.5363, -10.31] + self.tvalues = [100.851808120009, 10.127629231947, -5.209036989363, + 0.491868523669, -10.188749840927] + self.sigma2 = 1.201409294941**2 + + +class Y_arma50c(object): + def __init__(self, method="mle"): + if method == "mle": + self.params = [4.562207236168, 0.754284447885, -0.305849188005, + 0.253824706641, 0.281161230244, -0.172263847479] + self.aic = 711.817562780112 + self.bic = 736.467789205148 + self.arroots = [-1.6535 + 0.j, .0129 - 1.2018j, .0129 + 1.2018j, + 1.1546 + 0.j, 2.1052 + 0j] + self.maroots = None + self.bse = [0.318447388812, 0.062272737541, 0.076600312879, + 0.077310728819, 0.076837326995, 0.062642955733] + self.cov_params = [ + [0.10141, -6.6930e-05, -7.3157e-05, + -4.4815e-05, 7.7676e-05, -0.00013170], + [-6.6930e-05, 0.0038779, -0.0028465, + 0.0013770, -0.0012194, -0.00058978], + [-7.3157e-05, -0.0028465, 0.0058676, + -0.0040145, 0.0024694, -0.0012307], + [-4.4815e-05, 0.0013770, -0.0040145, + 0.0059769, -0.0040413, 0.0013481], + [7.7676e-05, -0.0012194, 0.0024694, + -0.0040413, 0.0059040, -0.0028575], + [-0.00013170, -0.00058978, -0.0012307, + 0.0013481, -0.0028575, 0.0039241]] + self.hqic = 721.738557560396 + self.llf = -348.908781390056 + self.resid = residsc_mle[:, 4] + self.fittedvalues = yhatc_mle[:, 4] + self.pvalues = [1.50e-46, 9.06e-34, 6.53e-05, .0010, .0003, .0060] + self.tvalues = [14.33, 12.11, -3.993, 3.283, 3.659, -2.750] + self.sigma2 = 0.973930886014 ** 2 + self.forecast = forecast_results['fc50c'] + self.forecasterr = forecast_results['fe50c'] + elif method == "css": + # NOTE: params, bse, cov_params, tvalues taken from R; + # commented-out versions below are from + # [TODO: Finish this sentence] + # likelihood based results from x-12 arima + # self.params = [0.843173779572, 0.755433266689, -0.296886816205, + # 0.253572751789, 0.276975022313, -0.172637420881] + self.params = [4.593494860193, 0.755427402630, -0.296867127441, + 0.253556723526, 0.276987447724, -0.172647993470] + # self.aic = 694.843378847617 + self.aic = 696.8434 + # self.bic = 715.850928110886 + self.bic = 721.3522 + self.arroots = [-1.6539+0.0000j, 0.0091-1.2069j, 0.0091+1.2069j, + 1.1508+0.0000j, 2.0892+0.0000j] + self.maroots = None + # self.bse = [0.236922950898, 0.063573574389, 0.078206936773, + # 0.078927252266, 0.078183651496, 0.063596048046] + self.bse = [0.3359627893565, 0.0621593755265, 0.0764672280408, + 0.0771715117870, 0.0764444608104, 0.0621813373935] + # self.cov_params = [ + # [0.056132, -0.0028895, -0.0012291, + # -0.0031424, -0.0012502, -0.0028739], + # [-0.0028895, 0.0040416, -0.0029508, + # 0.0014229, -0.0012546, -0.00062818], + # [-0.0012291, -0.0029508, 0.0061163, + # -0.0041939, 0.0025537, -0.0012585], + # [-0.0031424, 0.0014229, -0.0041939, + # 0.0062295, -0.0041928, 0.0014204], + # [-0.0012502, -0.0012546, 0.0025537, + # -0.0041928, 0.0061127, -0.0029479], + # [-0.0028739, -0.00062818, -0.0012585, + # 0.0014204, -0.0029479, 0.0040445] + # ] + self.cov_params = [ + [1.12870995832e-01, 4.32810158586e-05, -1.89697385245e-05, + 0.0000465331836881, -0.000024151327384, 0.000109807500875], + [4.32810158586e-05, 3.86378796585e-03, -2.82098637123e-03, + 0.001360256141301, -0.001199382243647, -0.000600542191229], + [-1.89697385245e-05, -2.82098637123e-03, 5.84723696424e-03, + -0.004009391809667, 0.002441359768335, -0.001203154760767], + [4.65331836880e-05, 1.36025614130e-03, -4.00939180967e-03, + 0.005955442231484, -0.004008307295820, 0.001357917028471], + [-2.41513273840e-05, -1.19938224365e-03, 2.44135976834e-03, + -0.004008307295820, 0.005843755588588, -0.002818181279545], + [1.09807500875e-04, -6.00542191229e-04, -1.20315476077e-03, + 0.001357917028471, -0.002818181279545, 0.003866518720043]] + # self.hqic = 703.303100827167 + self.hqic = 706.7131 + self.llf = -341.421689423809 + self.resid = residsc_css[5:, 4] + self.fittedvalues = yhatc_css[5:, 4] + self.pvalues = [0.0004, 1.45e-32, 0.0001, 0.0013, 0.0004, 0.0066] + # self.tvalues = [3.559, 11.88, -3.796, 3.213, 3.543, -2.715] + self.tvalues = [13.67262984389, 12.15307258528, -3.88227918086, + 3.28562597329, 3.62338153462, -2.77652428699] + # self.sigma2 = 0.987100631424**2 + self.sigma2 = 0.974939 ** 2 + + +class Y_arma02c(object): + def __init__(self, method="mle"): + if method == "mle": + self.params = [4.519277801954, 0.200385403960, -0.643766305844] + self.aic = 758.051194540770 + self.bic = 772.137038212219 + self.arroots = None + self.maroots = [-1.1004 + 0.j, 1.4117 + 0.j] + self.bse = [0.038397713362, 0.049314652466, 0.048961366071] + self.cov_params = [ + [0.0014744, 6.2363e-05, 6.4093e-05], + [6.2363e-05, 0.0024319, 0.0014083], + [6.4093e-05, 0.0014083, 0.0023972]] + self.hqic = 763.720334415218 + self.llf = -375.025597270385 + self.resid = residsc_mle[:, 5] + self.fittedvalues = yhatc_mle[:, 5] + self.pvalues = [0.0000, 4.84e-5, 1.74e-39] + self.tvalues = [117.7, 4.063, -13.15] + self.sigma2 = 1.081406299967 ** 2 + elif method == "css": + # NOTE: cov_params, tvalues taken from R; commented-out + # versions below are from [TODO: Finish this sentence] + self.params = [4.519869870853, 0.202414429306, -0.647482560461] + self.aic = 756.679105324347 + self.bic = 770.764948995796 + self.arroots = None + self.maroots = [-1.0962 + 0.0000j, 1.4089 + 0.0000j] + self.bse = [0.038411589816, 0.047983057239, 0.043400749866] + # self.cov_params = [ + # [0.0014755, 9.0191e-05, 7.3561e-06], + # [9.0191e-05, 0.0023024, 0.0012479], + # [7.3561e-06, 0.0012479, 0.0018836]] + self.cov_params = [ + [1.46121526606e-03, 5.30770136338e-05, 5.34796521051e-05], + [5.30770136338e-05, 2.37105883909e-03, 1.41090983316e-03], + [5.34796521051e-05, 1.41090983316e-03, 2.35584355080e-03]] + self.hqic = 762.348245198795 + self.llf = -374.339552662174 + self.resid = residsc_css[:, 5] + self.fittedvalues = yhatc_css[:, 5] + self.pvalues = [0.0000, 2.46e-05, 2.49e-50] + # self.tvalues = [117.7, 4.218, -14.92] + self.tvalues = [118.24120637494, 4.15691796413, -13.33981086206] + self.sigma2 = 1.081576475937**2 diff --git a/statsmodels/tsa/tests/results/results_arma_acf.py b/statsmodels/tsa/tests/results/results_arma_acf.py new file mode 100644 index 0000000..9c1cd2c --- /dev/null +++ b/statsmodels/tsa/tests/results/results_arma_acf.py @@ -0,0 +1,49 @@ +""" +ARMA autocorrelation results (from R's ARMAacf function) + +These numbers are printed out when running the R script results/test_arma_acf.R +""" + +bd_example_3_3_2 = [ + 1.00000000000, 0.87500000000, 0.62500000000, 0.40625000000, 0.25000000000, + 0.14843750000, 0.08593750000, 0.04882812500, 0.02734375000, 0.01513671875] + +custom_example_1 = [ + 1.00000000000000000, 0.89043062200956924, 0.65657894736842093, + 0.43397129186602867, 0.26982655502392344, 0.16133373205741627, + 0.09387709330143541, 0.05354366028708134, 0.03007438696172249, + 0.01668847188995216] + +custom_example_2 = [ + 1.0000000000000000, 0.9092437831227068, 0.7142784345699144, + 0.5076054830819404, 0.3290358744394619, 0.2021345036689768, + 0.1198755350591113, 0.0693419091418671, 0.0393730253770893, + 0.0220375480916225] + +custom_example_3 = [ + 1.00000000000000000, 0.88441824705279337, 0.64345207585853414, + 0.39159405433111233, 0.20382175807278322, 0.10592324449000515, + 0.05496780497180934, 0.02848699384930806, 0.01474504260635572, + 0.00762329414402871] + +custom_example_4 = [ + 1.000000000000000000, 0.879686150302332326, 0.625215951626835631, + 0.359037575583069424, 0.159975165562913885, 0.062441513101065334, + 0.022447721710336863, 0.006837343435070529, 0.001225413007486314, + -0.000483922851281319] + +custom_example_5 = [ + 1.000000000000000, 0.929315745090953, 0.784137453318877, 0.651808517046139, + 0.548705728225515, 0.464167344295868, 0.392171763944103, 0.331000500692688, + 0.279374294136249, 0.235841345357487] + +custom_example_6 = [ + 1.0000000000000000, 0.9136917896587146, 0.7322751541352182, + 0.5581676172376039, 0.4164680076696708, 0.3044690292908558, + 0.2195550313904376, 0.1571761939728106, 0.1119109386708032, + 0.0793489418521015] + +custom_example_7 = [ + 1.000000000000000, 0.918273770449316, 0.747774138591147, 0.587247490228175, + 0.460496808034306, 0.362548660813911, 0.287125976307581, 0.228131600167948, + 0.181325081575292, 0.144087282284054] diff --git a/statsmodels/tsa/tests/results/results_arma_forecasts.csv b/statsmodels/tsa/tests/results/results_arma_forecasts.csv new file mode 100644 index 0000000..6c64a1a --- /dev/null +++ b/statsmodels/tsa/tests/results/results_arma_forecasts.csv @@ -0,0 +1,11 @@ +"fc11","fe11","fc41","fe41","fc50","fe50","fc11c","fe11c","fc41c","fe41c","fc50c","fe50c" +-0.0931139795,0.994743,-0.4298095393,0.91141,1.24361,0.938375,4.2276592922,1.03917,-1.3985445949,0.915488,4.779739852,0.973931 +-0.073415913,1.53122,-1.4961938371,1.22521,0.484195,1.16009,4.4387131881,1.52336,3.0228581596,1.29504,4.692859693,1.21992 +-0.057884931,1.78523,-3.770193621,1.2607,0.722602,1.17762,4.5789296469,1.6936,4.071345984,1.37495,3.8280155603,1.24654 +-0.0456394955,1.92633,-3.6148341892,1.27585,1.09664,1.20138,4.6720843135,1.76352,0.8457602276,1.38243,3.9467079457,1.26508 +-0.0359845562,2.00905,-1.5553772244,1.29131,0.854109,1.31833,4.7339728534,1.79351,-2.3126724383,1.39737,4.5998286564,1.37737 +-0.028372099,2.05881,-0.3162209074,1.49296,0.510239,1.39506,4.7750893268,1.80659,-0.833875753,1.5901,4.59173986,1.4486 +-0.0223700411,2.08914,-1.6253254747,1.67599,0.579206,1.41288,4.802405602,1.81234,2.8363368346,1.83677,4.1878148976,1.45879 +-0.017637706,2.10777,-3.3986372227,1.68533,0.721688,1.43171,4.8205535323,1.81487,3.7095186811,1.86802,4.2337457799,1.46621 +-0.0139064864,2.11928,-3.150618693,1.69048,0.60394,1.47332,4.8326103507,1.81598,0.6042207231,1.86845,4.553063531,1.49431 +-0.0109645984,2.1264,-1.2381045022,1.70353,0.43997,1.50507,4.8406204582,1.81647,-1.9229410947,1.87871,4.562562544,1.51482 diff --git a/statsmodels/tsa/tests/results/results_corrgram.csv b/statsmodels/tsa/tests/results/results_corrgram.csv new file mode 100644 index 0000000..dadc099 --- /dev/null +++ b/statsmodels/tsa/tests/results/results_corrgram.csv @@ -0,0 +1,41 @@ +acvar,acvarfft,Q1,PACOLS,PACYW,acvar_lb,acvar_ub +0.98685781,0.98685781,200.6355,1.002988,0.98685781,-0.1375625,0.1375625 +0.97371846,0.97371846,396.9356,-0.3956237,-0.00650592,-0.23618231,0.23618231 +0.96014366,0.96014366,588.7549,-0.1769759,-0.0233345,-0.30276354,0.30276354 +0.94568545,0.94568545,775.7759,0.0742275,-0.04078457,-0.35574695,0.35574695 +0.93054425,0.93054425,957.7706,-0.0580367,-0.0334311,-0.40050362,0.40050362 +0.91484806,0.91484806,1134.57,0.0935246,-0.02818214,-0.43951706,0.43951706 +0.89901438,0.89901438,1306.174,0.0034315,-0.01168091,-0.47418465,0.47418465 +0.8827679,0.8827679,1472.48,0.0385079,-0.02192074,-0.50541068,0.50541068 +0.86649857,0.86649857,1633.539,0.1050301,-0.00748351,-0.53379138,0.53379138 +0.8503736,0.8503736,1789.463,-0.1834061,-0.00143193,-0.55977623,0.55977623 +0.83435254,0.83435254,1940.348,-0.0210358,-0.00310717,-0.58371041,0.58371041 +0.81829961,0.81829961,2086.244,0.0992143,-0.00921395,-0.60585868,0.60585868 +0.80240987,0.80240987,2227.266,0.2540452,-0.0025009,-0.62642442,0.62642442 +0.78635609,0.78635609,2363.419,-0.0080142,-0.01557323,-0.64558168,0.64558168 +0.77024519,0.77024519,2494.745,-0.0524568,-0.01164751,-0.66345953,0.66345953 +0.75437469,0.75437469,2621.388,0.11607,-0.00030521,-0.68017076,0.68017076 +0.73850631,0.73850631,2743.412,-0.1211871,-0.00893237,-0.6958234,0.6958234 +0.72274736,0.72274736,2860.916,0.092306,-0.00507808,-0.71050094,0.71050094 +0.70701465,0.70701465,2973.971,0.0317384,-0.00829011,-0.72427993,0.72427993 +0.69141553,0.69141553,3082.682,-0.0422092,-0.00460458,-0.73722448,0.73722448 +0.67600225,0.67600225,3187.173,0.0628712,-0.00246537,-0.74939498,0.74939498 +0.66067686,0.66067686,3287.53,0.0086186,-0.00610282,-0.76084695,0.76084695 +0.64543953,0.64543953,3383.844,-0.0044266,-0.0068184,-0.77162686,0.77162686 +0.63020869,0.63020869,3476.178,0.001695,-0.00994534,-0.78177665,0.78177665 +0.61518569,0.61518569,3564.658,-0.128714,-0.00216407,-0.79133186,0.79133186 +0.60054983,0.60054983,3649.454,0.0279399,0.00497323,-0.8003308,0.8003308 +0.58608693,0.58608693,3730.674,0.0982797,-0.00302243,-0.80881349,0.80881349 +0.57172016,0.57172016,3808.402,0.0937156,-0.00642863,-0.81681061,0.81681061 +0.55730727,0.55730727,3882.685,-0.1677933,-0.0125645,-0.82434845,0.82434845 +0.54281535,0.54281535,3953.562,-0.116249,-0.01382639,-0.8314477,0.8314477 +0.5282993,0.5282993,4021.09,0.1120091,-0.01135471,-0.83812696,0.83812696 +0.51386026,0.51386026,4085.351,-0.1551635,-0.00700203,-0.84440504,0.84440504 +0.49934969,0.49934969,4146.39,-0.0644834,-0.01242531,-0.85030197,0.85030197 +0.48452688,0.48452688,4204.199,0.2141102,-0.02166683,-0.85583326,0.85583326 +0.4697521,0.4697521,4258.86,0.0573164,-0.0078988,-0.86100856,0.86100856 +0.45473224,0.45473224,4310.389,0.1685996,-0.01871847,-0.86584485,0.86584485 +0.43987621,0.43987621,4358.896,-0.0405992,-0.00300827,-0.87035242,0.87035242 +0.42500013,0.42500013,4404.451,0.041648,-0.0100618,-0.87454923,0.87454923 +0.41057995,0.41057995,4447.228,0.1566605,0.0076425,-0.87844889,0.87844889 +0.3960725,0.3960725,4487.278,-0.0708302,-0.01332486,-0.88207286,0.88207286 diff --git a/statsmodels/tsa/tests/results/results_process.py b/statsmodels/tsa/tests/results/results_process.py new file mode 100644 index 0000000..71bdf30 --- /dev/null +++ b/statsmodels/tsa/tests/results/results_process.py @@ -0,0 +1,52 @@ +from numpy import array + +from statsmodels.tools.testing import Holder + +armarep = Holder() +armarep.comment = ('mlab.garchma(-res_armarep.ar[1:], res_armarep.ma[1:], 20)' + 'mlab.garchar(-res_armarep.ar[1:], res_armarep.ma[1:], 20)') +armarep.marep = array([ + [-0.1], + [-0.77], + [-0.305], + [0.4635], + [0.47575], + [-0.132925], + [-0.4470625], + [-0.11719125], + [0.299054375], + [0.2432801875], + [-0.11760340625], + [-0.253425853125], + [-0.0326302015625], + [0.18642558171875], + [0.11931695210938], + [-0.08948198932031], + [-0.14019455634766], + [0.00148831328242], + [0.11289980171934], + [0.05525925023373]]) +armarep.ar = array([1., -0.5, 0.8]) +armarep.ma = array([1., -0.6, 0.08]) +armarep.name = 'armarep' +armarep.arrep = array([ + [-1.00000000000000e-01], + [-7.80000000000000e-01], + [-4.60000000000000e-01], + [-2.13600000000000e-01], + [-9.13600000000000e-02], + [-3.77280000000000e-02], + [-1.53280000000000e-02], + [-6.17856000000000e-03], + [-2.48089600000000e-03], + [-9.94252799999999e-04], + [-3.98080000000000e-04], + [-1.59307776000000e-04], + [-6.37382655999999e-05], + [-2.54983372800000e-05], + [-1.01999411200000e-05], + [-4.08009768959999e-06], + [-1.63206332416000e-06], + [-6.52830179327999e-07], + [-2.61133041663999e-07], + [-1.04453410652160e-07]]) diff --git a/statsmodels/tsa/tests/results/savedrvs.py b/statsmodels/tsa/tests/results/savedrvs.py new file mode 100644 index 0000000..c928123 --- /dev/null +++ b/statsmodels/tsa/tests/results/savedrvs.py @@ -0,0 +1,317 @@ +'''Generated Random Processes for tests + +autogenerated by savervs.py + +''' + +from numpy import array + +from statsmodels.tools.testing import Holder + + +rvsdata = Holder() +rvsdata.comment = 'generated data, divide by 1000, see savervs' +rvsdata.xarma32 = array([ + -1271, -1222, -840, -169, -1016, -980, -1272, -926, 445, 833, + -91, -1974, -2231, -549, 424, 238, -1665, -1815, 685, 3361, + 1912, -1931, -3555, -1817, 387, 730, -1154, -702, 973, 1340, + -161, 276, 200, 1785, 834, -1469, -1593, -134, 555, -422, + -2314, -1326, -2268, -3579, -3049, -930, 1155, 962, -644, -217, + -561, 224, 810, 2445, 2710, 2152, 502, 21, 164, -499, + -1093, -492, 531, -605, -1535, -2081, -3816, -2257, 487, 2134, + 1785, 1495, 1259, 1895, 1339, 617, 1143, 385, -1220, -738, + 1171, 1047, -234, -107, -1458, -1244, -2737, 33, 2373, 2749, + 2725, 3331, 1054, 418, 1231, -1171, -1446, -1187, 863, 1386, + 757, 734, 283, -735, 550, 417, -236, 324, 318, -102, + 2126, 3246, 2358, 2156, 726, -983, -803, -242, -500, -13, + 49, 308, -227, 243, -612, -2329, -2476, -3441, -5435, -4693, + -2538, -2159, -2656, -906, -211, -288, 1777, 1363, 564, -2035, + -1134, -609, -1112, 560, 658, 1533, 796, 523, 456, 76, + -1164, -749, -1084, -3218, -2107, -310, -686, -1625, 2008, 4155, + 1650, -1086, -673, 1634, 1999, 449, -1077, -648, -155, -327, + 228, 1295, 2036, 542, -197, -451, -1554, -2416, -2066, -2146, + -1524, -1976, -2962, -2621, -2313, -2052, -3314, -2363, -1522, -3305, + -3445, -3206, -1501, 2029, 1963, 1168, 2050, 2927, 2019, 84, + 213, 1783, 617, -767, -425, 739, 281, 506, -749, -938, + -284, -147, 51, 1296, 3033, 2263, 1409, -1702, -819, -1295, + -1831, -539, 1327, 1954, 1473, -1535, -1187, -1310, 380, 1621, + 2035, 2234, 559, 51, -1071, 590, 2128, 1483, 848, 1198, + 2707, 1447, -629, 237, 909, 453, -734, -802, 1026, 521, + -9, 919, 441, -118, -1073, -2428, 98, 823, 102, -438, + -233, -613, 440, 1143, -743, -1345, 186, -1999, -2351, -887, + -584, -883, -623, -1522, 974, 2318, 1329, -523, -2599, -1555, + 826, -859, -2790, -2753, 807, 1889, -95, -1454, 443, 845, + -291, 1516, 2804, 1018, 402, -446, -1721, -1824, 1678, 2889, + -663, -560, 628, 1213, 520, -1344, -3029, -3100, -1603, -1480, + -1667, -3356, -4405, -2556, 532, 1602, -15, 646, 2279, 1893, + -945, -258, 344, -316, 1130, 1119, 695, 276, 56, -682, + -610, 412, 1058, 259, 746, 1197, 1959, 1896, 127, -1301, + 1036, 3094, 5213, 3846, 1728, 40, -520, -173, 330, -480, + 649, 1621, 1622, -1011, -1851, -2687, -756, 401, 1888, 2372, + 4153, 2531, -150, 485, 2600, 2193, -1238, -2702, -184, 1336, + 370, -1196, -1737, 637, 634, 77, -1314, -688, -1375, -1973, + -1229, -1414, -2230, -1922, -584, 93, 180, 2158, 2976, 1433, + -173, -1073, -1362, -446, 242, 7, 354, 332, 2003, 1866, + -729, -1446, -294, 2438, 3955, 1829, 485, 1028, 981, 1335, + 513, -1386, -2583, -1063, 465, 1104, 85, -892, -78, 766, + 1995, 891, -170, 2, -428, -562, -1078, -2591, -2077, -135, + -238, -1150, -1207, -185, -46, -1319, -1829, -1409, -926, 576, + 1119, 454, -747, -538, -739, -2994, -3052, -1626, -2472, -1340, + -254, -972, -1182, -258, 831, 876, -244, -724, -208, -428, + -110, 188, -2187, -2695, -1161, 597, 1492, 1594, -403, 695, + 1834, 1737, 586, -740, 259, -714, -1607, -1082, -365, 2040, + 604, -1253, -1269, -419, -713, -482, 1379, 2335, 1730, 325, + -1377, -1721, -1762, -602, -1224, -839, 70, -1058, -118, -691, + -1397, -245, -291, -648, -1489, -1088, -1083, -160, 1310, 169, + -1539, -1558, -2095, -3421, -1609, -465, -867, 311, 272, -157, + -936, -1003, -492, -1526, -2179, -1237, -662, -144, 638, 596, + -629, -1893, -671, 324, 408, 367, 1438, 4568, 2576, 677, + 701, 2667, 1288, 449, -357, 776, 2250, 2324, 968, 245, + 1432, 1597, 843, 88, -274, -256, 830, 348, 534, 140, + -560, -1582, -2012, -287, 1470, -729, -2398, -1433, -1409, -1547, + 70, 1438, 2246, 408, -293, -566, 374, 1793, 2355, 1104, + 358, 2301, 2994, 572, 278, 508, -2406, -2767, -1216, -231, + -1717, -1038, 2015, 1469, 1471, 1395, 860, 1148, 1211, 1189, + 494, -536, 383, -136, -2171, -2334, -1181, -294, -841, -2051, + -3304, -2254, -926, -811, 160, 1960, 2945, 2466, 1922, 2833, + 2421, 1197, 3025, 4033, 3210, 1497, 1912, 1138, 174, -630, + -2423, -999, 296, 1519, 2061, 1400, -424, -609, -978, -1747, + -1637, -2454, -1547, 885, 2065, 1530, -1956, 846, 2811, 3105, + 2220, 2732, 4631, 3504, 1996, 246, -419, -1541, -1955, -3171, + -2742, -811, -318, -1303, -2002, -997, -487, -2089, -3453, -3373, + -1940, -620, 384, 365, -133, -1300, -833, -1544, -1711, -1981, + -315, -155, -1995, -2384, -4010, -5394, -6186, -3794, -1829, -2637, + -4255, -2014, 282, -174, -2623, -2023, -749, -168, -2387, -3959, + -4101, -2004, -2070, -2468, -1831, -1518, 606, 305, 684, 2183, + 1218, -1008, -2261, -1276, -99, 889, 740, -525, -1786, -1716, + -452, -872, -1384, -1867, -547, -900, -1464, -1898, -1493, -990, + 965, 810, 636, -335, -57, 1761, 2837, 773, 215, 920, + 483, -234, 1301, 2610, 3083, 2329, 920, -827, 22, 4317, + 5366, 3711, 2220, 1356, 198, -1385, 656, 1163, -370, -1721, + -1005, -832, -1455, -1485, 221, -1445, -1502, -79, -4, -599, + -850, -507, 902, 1909, 1642, -326, -3379, -5642, -7068, -4275, + -1044, 528, 548, 249, -1384, -2485, -1533, -1776, -2930, -2058, + -1721, -475, -166, -1761, -2550, -1586, -240, -1584, -1954, 623, + 3826, 2094, -1004, -1782, -267, 2490, 3336, 2293, 189, -108, + -315, -965, -125, 1201, 360, -544, -1602, -2150, -901, 1430, + 968, -1100, 505, 2880, 2554, 928, 918, 689, -2829, -2478, + -2904, -1615, -242, 243, -1668, -877, 2385, 543, -2462, -1762, + 470, 1344, 1493, 1624, 257, -1833, -1947, -805, -413, 905, + 2909, 3272, 1148, -1473, -2368, -1054, -2143, -4330, -3257, -1939, + -1831, -414, -1157, -1212, -1644, -1360, -2409, -4136, -5747, -3415, + -1752, 373, -1680, -1267, 2267, 2701, 1101, -1714, -3138, -3153, + -3256, -3328, -2661, -879, 2115, 1795, -324, -1930, -1432, -1613, + -2301, -1401, 88, 1369, 1063, -854, -2125, 243, 1683, 2011, + 2646, 1289, -938, -1205, -1214, 562, 2641, 3335, 2858, 2650, + 1965, 478, 1391, 486, 255, -1764, -813, 84, -453, -809, + -1203, -1590, 730, 2059, 234, -319, 0, 624, 1273, 1470, + 1882, 2215, 1611, 485, -16, 397, 593, -95, 125, 1435, + 2673, 3073, 2262, 1803, 983, 666, 1516, 2821, 2395, 299, + 86, 1150, 1214, 751, -1096, -962, -39, -366, -2125, -2086, + -1032, -966, -863, -1522, -1793, 1228, 207, -2243, -1916, -1320, + -1530, -2318, -1050, -663, -1137, -2035, -1198, -246, 753, -185, + -709, -231, -1111, -1121, -11, 976, 555, -1947, -1304, 807, + 529, 231, -285, -553, -695, -2006, -1090, -424, 318, -1113]) +rvsdata.name = 'rvsdata' +rvsdata.xnormal = array([ + -1271, 176, -296, 327, -973, 228, -819, 107, 975, 82, + -477, -1492, -403, 695, 212, 91, -1549, -45, 1557, 1947, + -785, -2139, -1264, 295, 806, 278, -1244, 787, 752, 173, + -738, 969, -646, 1811, -990, -1369, 72, 408, 169, -587, + -1517, 720, -2150, -1233, -121, 682, 1268, -29, -802, 679, + -1041, 934, 344, 1788, 486, 460, -834, 40, -93, -751, + -374, 345, 500, -1167, -387, -966, -2369, 1119, 1148, 1193, + 411, 626, 45, 960, -293, 11, 806, -866, -1043, 574, + 1072, -328, -381, 433, -1857, 409, -2190, 2614, 1005, 864, + 1243, 1268, -1701, 680, 560, -2567, 639, -663, 1513, 215, + 69, 498, -504, -771, 1392, -739, -131, 744, -382, -158, + 2394, 712, 162, 1064, -1146, -1062, 248, -171, -411, 665, + -236, 350, -503, 645, -1105, -1447, -337, -2050, -2539, -151, + 85, -840, -555, 1235, -427, 106, 2227, -828, 252, -2248, + 992, -737, -559, 1801, -593, 1438, -583, 342, -10, -331, + -1053, 466, -1020, -2163, 1003, 224, -794, -406, 3338, 1021, + -1157, -788, 242, 1219, 267, -455, -843, 183, -196, -181, + 699, 822, 825, -920, 110, -482, -1332, -843, -256, -989, + 232, -1082, -1221, -200, -800, -344, -1779, 559, -485, -2241, + -84, -1173, 701, 2685, -395, 644, 1374, 741, -144, -788, + 542, 1044, -1150, -296, 281, 485, -495, 829, -1385, 80, + 192, -237, 340, 1213, 1634, -264, 479, -2698, 1282, -1759, + -422, 1003, 1015, 668, 332, -2367, 835, -1347, 1532, 828, + 766, 907, -1122, 265, -1357, 1658, 879, -199, 433, 532, + 1482, -925, -812, 1081, -191, -126, -637, -45, 1306, -863, + 326, 954, -806, 42, -885, -1504, 2167, -496, -63, -19, + -61, -654, 1153, 340, -1586, 97, 836, -2868, 439, 380, + -652, -34, 197, -1342, 2507, 481, -228, -748, -1941, 596, + 1137, -1978, -857, -546, 2208, 151, -864, -446, 1297, -507, + -417, 2265, 596, -1011, 719, -1112, -1279, -184, 2721, 371, + -2244, 1511, -127, 365, -53, -1399, -1628, -736, 312, -785, + -182, -2070, -1452, 640, 1479, 648, -754, 1396, 1005, -183, + -1661, 1296, -547, -532, 1901, -511, 232, -27, -191, -734, + 140, 647, 406, -449, 997, 204, 1035, 352, -1083, -788, + 2025, 1127, 2903, -184, -197, -888, -536, 82, 279, -775, + 1426, 490, 362, -1900, -219, -1753, 1342, 166, 1677, 753, + 2518, -1078, -990, 1138, 1235, -197, -2026, -747, 1329, 255, + -323, -722, -716, 1677, -746, 298, -1190, 509, -1420, -498, + 302, -996, -883, -12, 443, 139, 260, 2131, 620, -535, + -443, -870, -671, 535, 213, -172, 612, -169, 1841, -195, + -1629, -3, 265, 2091, 1611, -929, 225, 486, -338, 922, + -582, -1433, -1072, 765, 424, 696, -541, -524, 612, 278, + 1405, -777, -163, 188, -805, 36, -692, -1680, 268, 810, + -688, -359, -120, 386, -248, -1015, -387, -273, -158, 1263, + 271, -209, -716, 208, -738, -2268, -37, 5, -1793, 1277, + 46, -967, 151, 427, 579, 178, -621, -189, 167, -563, + 481, 93, -2388, -120, 359, 751, 946, 613, -1484, 1690, + 387, 285, -258, -870, 936, -1574, -400, 204, -70, 2254, + -1548, -593, -89, -66, -599, 452, 1518, 658, 195, -496, + -1363, -468, -759, 681, -1159, 579, 368, -1393, 1360, -1277, + -474, 959, -779, -77, -864, 141, -632, 770, 1119, -1125, + -857, -153, -1451, -1597, 1318, -337, -436, 1453, -619, -64, + -625, -214, 78, -1334, -519, 313, -293, 446, 719, -93, + -860, -1006, 823, 57, 199, 332, 1112, 3079, -1616, 338, + 298, 1515, -1213, 603, -811, 1023, 1171, 464, -372, -24, + 1105, -43, -1, -208, -340, -102, 970, -632, 743, -459, + -520, -977, -671, 1096, 974, -1956, -601, 251, -1197, -108, + 1305, 661, 1135, -1164, 195, -628, 708, 1211, 773, -470, + 102, 1923, 405, -1286, 932, -349, -2927, 277, 144, -19, + -1333, 988, 2027, -952, 1495, 91, -288, 784, 127, 341, + -324, -670, 967, -1015, -1599, -98, -9, 157, -541, -1040, + -1576, 297, 67, -285, 1094, 1433, 1051, 440, 491, 1410, + -145, -138, 2498, 764, 408, -237, 1099, -888, -184, -541, + -1975, 1272, 87, 1229, 908, -97, -1121, 168, -949, -891, + -88, -1521, 596, 1512, 747, 259, -2640, 3297, 236, 1135, + 500, 1288, 2137, -399, 380, -1022, -439, -1345, -514, -1828, + -69, 770, -307, -693, -606, 370, -290, -1584, -1193, -834, + 148, 404, 771, 18, -207, -1068, 393, -1392, -163, -807, + 1152, -564, -1495, -210, -2692, -1930, -2043, 660, -58, -1329, + -1511, 1339, 458, -536, -1669, 511, -210, 167, -2028, -1333, + -1271, 661, -1274, -334, 64, -619, 1818, -811, 1078, 1446, + -927, -1106, -984, 181, 235, 902, 44, -836, -1021, -298, + 479, -916, -219, -811, 804, -1060, -300, -710, -163, -115, + 1647, -480, 582, -807, 412, 1486, 972, -1188, 649, 326, + -605, -109, 1607, 847, 1140, 266, -492, -1229, 912, 3582, + 914, 580, 283, -375, -834, -1206, 1985, -468, -814, -702, + 211, -700, -608, -113, 1086, -2231, 662, 581, -565, -131, + -197, -39, 1113, 863, 236, -1199, -2557, -2587, -2859, 948, + 822, 911, 448, 71, -1579, -959, 292, -1273, -1206, 474, + -908, 929, -126, -1497, -608, 106, 371, -1552, 61, 1758, + 2286, -1107, -1079, -534, 404, 2099, 1035, 219, -997, 143, + -666, -652, 850, 788, -780, -118, -1156, -878, 675, 1530, + -576, -1022, 1862, 1282, 75, -105, 604, -507, -3169, 907, + -2181, 792, 540, 180, -1660, 1113, 2179, -2179, -1223, 567, + 560, 544, 906, 580, -1054, -1474, -186, 110, -189, 1452, + 1823, 684, -856, -1508, -974, 353, -1953, -1918, 418, -598, + -513, 1332, -1457, 226, -905, -78, -1575, -1908, -2347, 923, + -460, 1745, -2262, 1119, 2445, -200, 25, -1892, -1465, -1012, + -1193, -797, -204, 784, 2291, -382, -782, -1097, -103, -1085, + -802, 521, 547, 1020, 17, -1255, -948, 1733, 352, 971, + 1444, -955, -1251, -38, -844, 1473, 1673, 1071, 687, 818, + -109, -758, 1446, -1260, 507, -2043, 1091, -143, -573, 40, + -705, -693, 1992, 582, -1145, 532, -176, 341, 802, 455, + 858, 713, -47, -389, -137, 288, 63, -443, 499, 1048, + 1202, 1044, 157, 472, -423, 135, 978, 1325, 104, -958, + 465, 564, -14, 220, -1498, 330, 158, -601, -1414, -14, + -29, -535, 186, -954, -468, 2492, -1869, -1194, 345, -835, + -578, -838, 802, -596, -418, -898, 414, 91, 851, -824, + -34, 193, -1276, 208, 593, 538, -175, -1954, 860, 843, + -610, 617, -511, -339, -261, -1495, 833, -298, 637, -1384]) +rvsdata.xar2 = array([ + -1271, -841, -333, 481, -422, -350, -889, -428, 1077, 1158, + -89, -2142, -2073, 108, 1335, 1105, -1332, -1663, 892, 3493, + 1563, -2635, -4154, -1710, 1515, 2345, -125, -486, 426, 757, + -346, 314, -222, 1476, 302, -1866, -1571, 84, 1022, 189, + -1877, -876, -1912, -2325, -1025, 1024, 2600, 1539, -871, -787, + -1235, 339, 1233, 2604, 1953, 721, -1234, -1307, -522, -514, + -525, 183, 908, -532, -1267, -1713, -3107, -509, 2294, 3282, + 1890, 497, -502, 310, 206, 21, 720, -301, -1644, -591, + 1421, 1104, -209, -286, -1981, -1033, -2026, 1509, 3226, 2689, + 1781, 1348, -1514, -1205, 353, -1682, -883, -529, 1531, 1704, + 667, 180, -694, -1416, 607, 454, -71, 460, 22, -371, + 2086, 2567, 1172, 719, -1157, -2347, -1052, 161, 243, 779, + 266, 174, -497, 160, -729, -2110, -1661, -2324, -3568, -1843, + 394, 397, -434, 689, 342, 35, 2084, 822, -133, -2765, + -1154, -277, -204, 1777, 931, 1294, -13, -315, -256, -379, + -1228, -327, -667, -2533, -690, 938, 302, -633, 2681, 3483, + 289, -2298, -1741, 975, 1918, 592, -1329, -1176, -472, 29, + 959, 1575, 1606, -423, -1031, -1095, -1693, -1649, -729, -748, + -1, -709, -1788, -1275, -926, -447, -1674, -557, -93, -2038, + -1667, -1488, 345, 3705, 2396, 709, 743, 981, 269, -1063, + -443, 1222, 48, -868, -438, 569, 180, 689, -924, -1003, + -148, 146, 531, 1564, 2620, 1050, 9, -3216, -1295, -1187, + -725, 1016, 2190, 1911, 766, -2710, -1716, -1364, 1298, 2549, + 2156, 1357, -1114, -1305, -1844, 835, 2470, 1359, 286, 81, + 1404, 157, -1388, -108, 416, 261, -636, -685, 1076, 340, + 60, 831, -170, -510, -1208, -2215, 999, 1410, 565, -272, + -561, -967, 660, 1351, -835, -1247, 256, -2040, -1321, 344, + 283, 21, 72, -1294, 1436, 2277, 876, -1185, -3327, -1474, + 1622, 57, -1623, -1873, 1521, 2304, 219, -1423, 50, 244, + -246, 1946, 2276, -164, -550, -1471, -2180, -1193, 2857, 3253, + -1070, -971, -369, 556, 576, -1216, -2889, -2439, -195, 279, + 139, -2099, -3201, -871, 2383, 2990, 447, 258, 989, 479, + -1772, -361, 50, -312, 1627, 947, 176, -360, -567, -1008, + -383, 845, 1273, 147, 478, 513, 1206, 1061, -837, -1988, + 853, 2803, 4719, 2190, -804, -2626, -2234, -392, 1083, 288, + 1115, 1238, 795, -1883, -2123, -2510, 395, 1737, 2869, 2179, + 2827, 94, -2329, -772, 1781, 1614, -1626, -2855, -142, 1569, + 1003, -705, -1781, 605, 628, 498, -1106, -624, -1367, -1280, + -38, -387, -1173, -757, 423, 856, 732, 2289, 2085, -11, + -1494, -2060, -1572, 308, 1245, 670, 525, -84, 1511, 1056, + -1540, -1763, -375, 2672, 3936, 884, -1037, -785, -447, 957, + 407, -1586, -2544, -477, 1314, 1986, 391, -1204, -547, 443, + 2033, 628, -676, -667, -1001, -431, -537, -1894, -979, 974, + 581, -382, -716, 4, 113, -926, -1185, -757, -172, 1504, + 1560, 287, -1266, -948, -864, -2485, -1593, -27, -1018, 476, + 936, -456, -682, 109, 1007, 929, -382, -959, -409, -410, + 357, 584, -2100, -2092, -265, 1585, 2346, 1697, -1299, -198, + 879, 1087, 172, -1276, -171, -1072, -1172, -197, 358, 2639, + 384, -1606, -1566, -516, -229, 528, 2055, 2038, 798, -876, + -2463, -2000, -1127, 780, 28, 212, 523, -1080, 234, -549, + -1030, 410, 64, -231, -1080, -608, -578, 611, 1897, 87, + -1736, -1585, -1852, -2285, 415, 1138, 267, 1097, 125, -512, + -1097, -836, -42, -949, -1257, -219, 161, 683, 1185, 513, + -1042, -2096, -333, 839, 1037, 742, 1187, 3658, 717, -917, + -794, 1338, 255, 138, -828, 291, 1818, 1772, 137, -801, + 396, 674, 341, -273, -729, -548, 895, 358, 582, -172, + -949, -1650, -1517, 708, 2298, -472, -2127, -1215, -1106, -385, + 1550, 2094, 2035, -583, -1289, -1367, 258, 2102, 2325, 339, + -790, 1122, 1697, -490, -308, -350, -3053, -1991, 78, 1039, + -541, 36, 2326, 890, 1044, 481, -425, 204, 502, 641, + -62, -1041, 166, -362, -1971, -1494, -219, 729, 151, -1283, + -2678, -1204, 443, 671, 1409, 2225, 2127, 1029, 251, 1096, + 606, -201, 2034, 2492, 1384, -376, 106, -615, -729, -816, + -2263, -130, 1114, 2185, 2099, 490, -1779, -1501, -1260, -1148, + -377, -1248, -214, 1965, 2425, 1216, -2880, 385, 1984, 2530, + 1532, 1249, 2370, 873, -107, -1544, -1620, -1870, -1200, -1853, + -952, 936, 917, -427, -1407, -542, -20, -1329, -2246, -1967, + -303, 1145, 1838, 916, -393, -1841, -883, -1178, -664, -749, + 885, 518, -1523, -1687, -3280, -3711, -3372, -182, 1482, -52, + -2294, -470, 1229, 683, -1737, -1220, -317, 524, -1451, -2756, + -2751, -161, -27, -275, -142, -595, 1413, 617, 865, 1829, + 103, -1938, -2586, -919, 793, 1996, 1244, -839, -2314, -1730, + 252, 150, -225, -1066, 63, -476, -713, -1042, -641, -107, + 1883, 1079, 504, -944, -595, 1482, 2455, 36, -550, -132, + -435, -391, 1512, 2252, 2185, 888, -874, -2372, -549, 4330, + 4652, 2136, -334, -1711, -2035, -1979, 1419, 1657, -198, -1689, + -1041, -688, -639, -279, 1182, -1146, -845, 477, 240, -178, + -459, -318, 1088, 1893, 1206, -1180, -4105, -5281, -5031, -437, + 2988, 3519, 1770, -273, -2682, -2968, -741, -383, -1141, -248, + -535, 625, 641, -1297, -1966, -818, 700, -584, -756, 1445, + 3821, 1227, -2007, -2753, -795, 2840, 3704, 1762, -1440, -1890, + -1458, -873, 881, 1929, 323, -824, -1976, -2047, 26, 2574, + 1471, -1132, 221, 2024, 1584, 150, -68, -636, -3644, -1691, + -1712, 268, 1610, 1334, -1398, -672, 2340, 29, -2370, -1343, + 670, 1752, 1973, 1282, -1015, -2927, -2020, -43, 787, 2103, + 3111, 2122, -715, -3141, -3129, -580, -852, -2310, -1003, -246, + -208, 1288, -322, -675, -1284, -768, -1547, -2762, -3783, -722, + 853, 2789, -458, -641, 2161, 1850, 424, -2477, -3659, -2700, + -1523, -666, 25, 1137, 3188, 1600, -1096, -2774, -1774, -1117, + -809, 432, 1297, 1841, 842, -1502, -2570, 428, 1979, 2341, + 2327, -264, -2626, -2007, -1137, 1567, 3495, 3083, 1406, 401, + -491, -1351, 610, -96, 125, -1895, -487, 415, 2, -166, + -838, -1281, 1387, 2332, 27, -612, -680, 103, 1224, 1383, + 1353, 1104, 160, -813, -868, 0, 498, -45, 214, 1242, + 2089, 2094, 787, 55, -773, -511, 956, 2346, 1502, -929, + -1029, 205, 664, 649, -1310, -1042, -21, -96, -1481, -1150, + -208, -127, 189, -739, -1154, 1938, 258, -1957, -1349, -936, + -653, -892, 414, 182, -480, -1372, -444, 422, 1411, 93, + -665, -386, -1252, -600, 739, 1429, 599, -2190, -1192, 985, + 774, 744, -302, -953, -872, -1716, -103, 477, 1071, -766]) diff --git a/statsmodels/tsa/tests/results/test_arma_acf.R b/statsmodels/tsa/tests/results/test_arma_acf.R new file mode 100644 index 0000000..8e71562 --- /dev/null +++ b/statsmodels/tsa/tests/results/test_arma_acf.R @@ -0,0 +1,41 @@ +options(digits=15, scipen=999) + +# Example 3.3.2 from Brockwell and Davis +ar_params = c(1, -0.25) +ma_params = c(1) +print(ARMAacf(ar_params, ma_params, lag.max=9)) + +# Custom example 1 +ar_params = c(1, -0.25) +ma_params = c(1, 0.2) +print(ARMAacf(ar_params, ma_params, lag.max=9)) + +# Custom example 2 +ar_params = c(1, -0.25) +ma_params = c(1, 0.2, 0.3) +print(ARMAacf(ar_params, ma_params, lag.max=9)) + +# Custom example 3 +ar_params = c(1, -0.25) +ma_params = c(1, 0.2, 0.3, -0.35) +print(ARMAacf(ar_params, ma_params, lag.max=9)) + +# Custom example 4 +ar_params = c(1, -0.25) +ma_params = c(1, 0.2, 0.3, -0.35, -0.1) +print(ARMAacf(ar_params, ma_params, lag.max=9)) + +# Custom example 5 +ar_params = c(1, -0.25, 0.1) +ma_params = c(1, 0.2) +print(ARMAacf(ar_params, ma_params, lag.max=9)) + +# Custom example 6 +ar_params = c(1, -0.25, 0.1, -0.05) +ma_params = c(1, 0.2) +print(ARMAacf(ar_params, ma_params, lag.max=9)) + +# Custom example 7 +ar_params = c(1, -0.25, 0.1, -0.05, 0.02) +ma_params = c(1, 0.2) +print(ARMAacf(ar_params, ma_params, lag.max=9)) diff --git a/statsmodels/tsa/tests/results/test_bds.m b/statsmodels/tsa/tests/results/test_bds.m new file mode 100644 index 0000000..0978fea --- /dev/null +++ b/statsmodels/tsa/tests/results/test_bds.m @@ -0,0 +1,43 @@ +% +% BDS test for IID time series +% +% Calculates and outputs BDS test statistics and p-values for several +% datasets. +% +% Requires bds function, from Kanzler. +% +% References +% ---------- +% +% Kanzler, Ludwig. 1998. +% BDS: MATLAB Module to Calculate Brock, Dechert & Scheinkman Test for +% Independence. +% Statistical Software Components. Boston College Department of Economics. +% http://ideas.repec.org/c/boc/bocode/t871803.html. +% +% + +in = csvread('bds_data.csv'); + +sequence = in(1:25,1); +normal = in(1:25,2); +combined = in(1:50,3); +gdpc1 = in(1:end,4); + +[w_s, sig_s, c_s, c1_s, k_s] = bds(sequence, 5); +[w_n, sig_n, c_n, c1_n, k_n] = bds(normal, 5); +[w_c, sig_c, c_c, c1_c, k_c] = bds(combined, 5); +[w_g, sig_g, c_g, c1_g, k_g] = bds(gdpc1, 5); + +out_s = [repmat(1,1,5); 1:5; ... + NaN w_s; NaN sig_s; NaN c_s; c1_s; repmat(k_s,1,5)]'; +out_n = [repmat(2,1,5); 1:5; ... + NaN w_n; NaN sig_n; NaN c_n; c1_n; repmat(k_n,1,5)]'; +out_c = [repmat(3,1,5); 1:5; ... + NaN w_c; NaN sig_c; NaN c_c; c1_c; repmat(k_c,1,5)]'; +out_g = [repmat(4,1,5); 1:5; ... + NaN w_g; NaN sig_g; NaN c_g; c1_g; repmat(k_g,1,5)]'; + +out = [out_s; out_n; out_c; out_g]; + +dlmwrite('bds_results.csv', out, 'precision', '%.8f'); diff --git a/statsmodels/tsa/tests/results/y_arma_data.csv b/statsmodels/tsa/tests/results/y_arma_data.csv new file mode 100644 index 0000000..0ee2062 --- /dev/null +++ b/statsmodels/tsa/tests/results/y_arma_data.csv @@ -0,0 +1,251 @@ +y_arma11,y_arma14,y_arma41,y_arma22,y_arma50,y_arma02,y_arma11c,y_arma14c,y_arma41c,y_arma22c,y_arma50c,y_arma02c +-2.047076594847129505e-01,1.394072226185005814e+00,-7.618372133529945911e-01,-4.064523617925941412e-01,-9.835047173983663127e-01,6.143504692328910499e-01,4.259432631872511976e+00,6.738236941732065333e+00,3.921172305736134511e+00,4.841410872820988587e+00,3.567921955380871424e+00,5.020264181479198839e+00 +2.537649126243639586e-01,4.567375047627766360e-01,-1.169637832882710393e+00,-2.904655508294423649e-01,1.933152260847050830e-01,6.429869148939288959e-01,4.398428009976181663e+00,7.368314202772689114e+00,5.710735793018799633e+00,4.558666615338087702e+00,5.627433726992007834e+00,4.271942218168720551e+00 +-1.614848622683232593e-01,-1.272326703442733464e+00,-2.554150415613765990e+00,4.377894222244522737e-01,-3.224625683687642463e-01,-5.829343493568055479e-01,3.894220064383869140e+00,6.410706525591642446e+00,6.653104231835761162e+00,4.369696549146111941e+00,5.441687121317324127e+00,3.719432040526521988e+00 +-8.586475013185908001e-01,-9.458320913213410508e-01,-1.416810339850927747e+00,1.292133237669666590e+00,-2.434714935535151170e+00,3.225999093088858238e-01,4.254945463650283699e+00,6.774751472682821074e+00,5.813209651463687067e+00,4.848351385863497676e+00,3.693440719499076152e+00,5.799271295947738381e+00 +1.127289339992149531e+00,-6.883717809906914065e-02,-2.004237998790745490e-01,1.802924788488174057e+00,-1.990610824223469910e+00,-4.553547958839077037e-02,4.888509710140729325e+00,4.026927273300911381e+00,5.506526563168436361e+00,4.708763021171975538e+00,2.747097130265434117e+00,5.199862796144467225e+00 +2.926896038343052453e+00,-8.584562919036573536e-01,-1.274069813257599826e+00,-3.157042843910952135e-01,-2.664447937057304316e-01,5.833794675456229761e-01,6.113454539016629496e+00,2.075139727032463632e+00,6.999617863858643929e+00,4.004972492948537521e+00,4.783782184444534735e+00,5.428226532398705118e+00 +2.775771947041553389e+00,-1.796823860810985218e+00,-3.435812286850086217e+00,3.328747540357390733e-02,1.713166700014400745e-01,1.287328621636036230e+00,5.768913584533245320e+00,5.364144882553992133e+00,6.220457380072278220e+00,3.279857874780836013e+00,4.382208504444793817e+00,5.760983622424917350e+00 +2.396092869971668371e+00,-1.374140342963603212e+00,-3.324410934220093150e+00,6.241378334643327142e-01,-1.008235022896845523e+00,-2.571874757040343296e-01,6.783227456396678789e+00,6.453556693243496234e+00,4.760031787665699454e+00,1.397159712575776425e+00,3.955895170740389766e+00,4.892141935490703197e+00 +2.664703373581160939e+00,-2.274295006054621204e+00,2.847437087200943573e-01,-1.677062469844210035e+00,1.071593491473753934e+00,5.943089576180543565e-02,8.764846998978599757e+00,3.134175247222279470e+00,4.618905799269997559e+00,3.832999293510881422e+00,4.169523377113049989e+00,4.820177423393641192e+00 +3.514120165236296778e+00,-1.695939107720390027e+00,5.749749943751873982e-01,-1.372251161366488947e+00,1.414936450756299369e+00,8.067203104089537558e-02,6.664487842459541511e+00,2.089710848527895237e+00,7.375027854593720456e+00,8.576140496669221847e+00,6.748639486536131216e+00,2.669498198821129265e+00 +4.079031639245426888e+00,-1.383046694106316643e+00,-2.344893313337678364e+00,-6.250943658791198176e-01,1.328692743772108553e+00,1.289696408214198620e+00,5.123872851709446508e+00,4.754158166466891267e+00,7.226677542929837550e+00,7.811349700243606975e+00,6.399961038027319304e+00,2.505802874791816404e+00 +2.115568895475858469e+00,-1.285696195785905438e+00,-5.410382313438887536e+00,-9.582233749130680822e-01,-4.514660067095999096e-03,6.906817862356203763e-01,4.624298391542022379e+00,4.532322449938698483e+00,5.895034864771226069e+00,4.201755661206154180e+00,3.841171273307598000e+00,3.901458429730415567e+00 +1.407990916849725771e+00,-4.315387699941466426e-01,-2.434441803202210153e+00,-2.143241193463130134e-02,1.991430048897706861e-01,-3.245252085642317263e-01,3.298440951207898930e+00,3.023850958378810461e+00,6.011888360633888873e+00,2.048413650493551952e+00,5.931427026305052586e+00,5.352527421085418347e+00 +1.381153138273853553e+00,1.084288569595046825e+00,1.475497484267840553e+00,1.675123411059225464e+00,1.269439435330158350e+00,-1.045172753525086096e+00,3.103686242816811269e+00,4.080448938513448809e+00,6.668471493814188022e+00,3.319703108792883661e+00,7.769291575371815028e+00,3.920245059994244663e+00 +2.468901196498200612e+00,4.531380836694007819e-01,9.757983087292898539e-02,1.159459620823443338e+00,1.329155575330689176e+00,-1.830503306089610316e+00,3.658159191813463718e+00,6.346035248965537612e+00,7.077166516280438913e+00,4.554699042844648105e+00,5.492605970846351937e+00,4.318612795940402371e+00 +3.211626130273146806e+00,-2.190557335162672814e+00,-4.025770289739019070e+00,2.374106873340324220e-01,-1.204791600774974603e+00,-3.953349523769545404e-01,3.372537397371419665e+00,4.291890175742812730e+00,4.582735795002996326e+00,8.003629851130945383e+00,3.299960257085285065e+00,5.863216575797151719e+00 +7.173325572515190096e-01,-1.440903136015097230e+00,-4.563025185706400144e+00,-7.098001117370973390e-01,-4.208258195771114041e-01,2.594451641987153057e+00,4.269616605460259784e+00,1.966875208797961960e+00,3.226094930911747038e+00,6.020287567355888214e+00,3.980251475991546162e+00,6.606646644611915420e+00 +-5.344161775827541705e-01,6.575126326774392016e-01,-5.766210270892357936e-01,2.080044842860721221e+00,2.597569170595709132e+00,1.316246656649131541e-01,3.840933541237355975e+00,5.846674991729185145e+00,4.098018048564538773e+00,1.600830935090640228e+00,4.628502633768053265e+00,3.585462029244003368e+00 +1.138068288338715872e+00,5.410281705276032138e-02,2.214383099182642756e+00,1.981718727958543980e+00,1.324496153816917321e+00,-1.821106292140853622e+00,2.401856988014751337e+00,6.656277522679868497e+00,4.283437503067081487e+00,1.384202228703339532e+00,5.999512681027482586e+00,1.528291132932186436e+00 +9.991403387521694546e-01,-3.811617114262618733e-01,1.206231109078024222e-01,-2.586171993187719842e+00,-6.952960055817554164e-01,8.046298768301501925e-01,2.150521954723290996e+00,3.733293634828790175e+00,4.514158688834689848e+00,2.548048973349378077e+00,4.355070413414093622e+00,4.427199029031395838e+00 +5.611440100001408027e-02,5.262380750425947884e-01,-4.953603576685280174e+00,-4.320037329811369453e+00,-1.907598969450933768e-01,1.078018569695110784e+00,2.658257906111643365e+00,4.382200981413502561e+00,5.859367423091468297e+00,4.029777956216626933e+00,5.067531354897734097e+00,4.945705073361552628e+00 +3.301613052297280859e-01,1.746862891830231745e-01,-8.118789816136267490e+00,-3.003177430316123164e+00,7.712387043869168846e-01,-8.794142886128656356e-01,4.258293663630687398e+00,6.153065962604464367e+00,7.355119360103516968e+00,8.075010494827537855e+00,4.923466375553967822e+00,4.909788839978878272e+00 +3.663509651997355565e+00,-2.874794400657883831e+00,-3.617695985036168072e+00,3.937863948442860362e+00,5.309231030866365941e-01,-1.234990868812363196e+00,4.339908625421150745e+00,5.340219971922237185e+00,5.515921408322084218e+00,7.798414613260441719e+00,6.873233673651917286e+00,5.826629709744591601e+00 +2.863535086443183886e+00,-2.579467235640812817e+00,9.915726649245641955e-01,7.298812062776931064e+00,3.223797297234989312e-01,2.727270606602266056e+00,4.237569677073842023e+00,3.860558543165812484e+00,4.509396332971866705e+00,4.004854402537130653e+00,5.452430701800734525e+00,4.871357265495228184e+00 +1.213134378267161750e+00,2.413579806889860346e-01,1.303675711696499651e+00,2.444639467618930695e+00,8.915073927774812557e-01,5.015301818356774355e-01,4.572111121969630432e+00,4.512712257921455361e+00,5.355957290748269983e+00,4.794247150280835257e+00,3.660108072753280872e+00,2.429556238521846101e+00 +8.319915033095105494e-01,-5.188516244935171828e-01,-5.687570288109578875e+00,-3.038003124026212642e+00,-8.719733907399780382e-01,-1.464298441207599888e+00,4.048062396070275071e+00,5.403303064625879060e+00,6.407665900443153539e+00,3.134788283354405181e+00,4.228899286686077730e+00,5.406063202984769944e+00 +9.700496358803369912e-01,-2.724024236513598485e+00,-7.053649446370281240e+00,-3.612813816796582422e+00,2.879464430993158297e-01,3.946224160478077891e-01,4.524770878655016482e+00,3.790844656041213234e+00,7.195887404329030623e+00,2.361511342912992362e+00,3.900621344854551253e+00,6.058011910665634048e+00 +1.357224041730048292e+00,-3.094356072793469803e+00,-1.008363536011467332e+00,1.046340672032860963e+00,2.368592569932105540e+00,-3.138197009761437006e-01,4.525455283146966323e+00,3.669994645124985411e+00,6.551577792201502604e+00,7.779296198399537232e+00,3.376143193000717080e+00,3.340663942774611428e+00 +1.202178532925514798e+00,-1.850307710282078189e+00,3.886862348001593581e+00,1.589445207794040638e+00,1.217857516123329376e+00,-9.122994252851901464e-01,4.653375618486451870e+00,5.177928739455077256e+00,5.315906173013112301e+00,6.297915587978545560e+00,1.981820108745978359e+00,5.388309049864337119e+00 +2.245772790529634744e+00,-1.516478417599159467e+00,-3.673322539992257552e-01,-5.204825623456811323e-01,-1.025887496633735574e-01,2.428428862906994556e+00,4.180686233113284800e+00,3.392074251314660671e+00,5.699029251570543408e+00,5.296396093445565612e-01,4.542328457752607740e+00,6.241995262291350599e+00 +1.441119035565789019e+00,-1.826409292124326011e+00,-5.940822212463317875e+00,9.652051478386652894e-01,4.052444759094290805e-01,1.610732939294483357e+00,7.038160704560359804e+00,3.766346935888272185e+00,5.999371763645894085e+00,1.156864407980374487e+00,5.145335831238890378e+00,4.119984700183874970e+00 +-5.465696330630986921e-05,-1.719338771172416180e+00,-6.508425086827775985e+00,2.181828702209119619e+00,1.108177098201627686e+00,-1.781879468348538165e+00,4.807427395222168443e+00,4.255280106544435448e+00,7.009375617216063503e+00,5.319221720194350134e+00,4.137737097068860948e+00,3.233320057309073015e+00 +-2.661176385278094081e+00,-1.395987375772736128e+00,-1.270103392180484292e+00,1.110821262560730549e-01,-1.029079612725556148e+00,-1.728302907832516833e-01,3.457531085129489146e+00,7.444270232949445898e-02,4.591567366097629943e+00,5.417009442651860240e+00,3.131299035156448696e+00,3.515272342145693507e+00 +-4.686224156394166229e+00,-1.850331606786910221e+00,2.184759340112722548e+00,-2.041081623865537598e+00,-1.542782696707952095e+00,4.958978337833580552e-01,3.116982008029290707e+00,1.386033864121762438e+00,3.652533172280716833e+00,4.691688663117650648e+00,4.512583138494862922e+00,4.507587864330768745e+00 +-5.026691791720129920e+00,-9.200819435921128164e-01,-3.295321237037077688e-01,9.793109676417565135e-01,7.543043591655402835e-01,-1.011195992545088074e-01,3.457098235710537537e+00,6.072136861732305491e+00,3.598198391522849260e+00,4.228970068897724310e+00,4.217642302531044329e+00,5.607026952466911851e+00 +-3.511138640213175677e+00,-9.744145346579486944e-01,-5.043254897882222032e+00,6.789267989097660383e-01,3.161919450570618739e+00,-1.171798760336695056e+00,5.461214551316098564e+00,5.287352572723380106e+00,4.399439539341723382e+00,3.500205802814739364e+00,5.656071780409132721e+00,4.741463207851570161e+00 +-3.703237619293762162e+00,-4.488315090217092518e+00,-4.263381366707648112e+00,-1.872655445832931642e+00,1.413418391066825208e-01,-5.997420261799208951e-01,6.633267216554529888e+00,2.943362263037925697e+00,4.342340090444273493e+00,4.751667085587318873e+00,4.529073913784968042e+00,3.139337629007510344e+00 +-3.100678161902562735e+00,-2.501030560910058931e+00,3.785869496888783631e-02,-1.776633578233102639e+00,-6.457530033435663341e-01,3.069899785414676785e+00,5.720232385386712970e+00,5.392964007325414144e+00,4.158870978293464304e+00,5.953350079983978915e+00,3.232746935335669036e+00,5.658934085315204143e+00 +-3.347081575849269797e+00,-1.875566408155554532e-01,1.373805813135958065e+00,-1.175124539027547543e+00,-3.084582261338173481e-01,2.304849343261525796e+00,5.650071425020970040e+00,4.727432440567961081e+00,1.757391563622786812e+00,5.363571028525145223e+00,2.433652791019824235e+00,5.946684745186741949e+00 +-2.549657823098020248e+00,-1.580664376558950091e+00,-2.049692467577199917e+00,1.306927984545027899e+00,4.255303096775274185e-01,-2.131719678615784375e-01,6.492867362025509514e+00,1.882685262636422330e+00,4.711271395093374892e-01,5.254387646473788642e+00,4.361070860586611531e+00,6.288490364663671173e+00 +-4.155153224244511279e+00,-1.638103590486664984e+00,-6.264898634428784696e+00,1.951636392749369397e+00,-1.053489723650152143e+00,3.729657763428336770e-01,6.853313246252220381e+00,3.201130691610448054e+00,2.033728470151813905e+00,4.500078973468650823e+00,4.296945244227881489e+00,2.029974511760805456e+00 +-4.141704456103338927e+00,-1.009012869991860128e+00,-5.401447994645365291e+00,-2.514643434433178060e-01,-2.706026508554485677e+00,3.268482030258671456e-01,6.328235046023614530e+00,4.065915530392780752e+00,5.646001626406992102e+00,4.280884981122723865e+00,3.923160234900610277e+00,-2.746902120133274394e-01 +-4.718113904319099383e+00,-1.802684091603253824e+00,-1.506657146317793128e+00,-1.004083775292140324e+00,-2.609366810774318424e+00,7.097452710287838196e-01,5.863057920820553548e+00,3.192879991044643706e+00,4.833576665416502216e+00,4.142242653072421454e+00,3.255009115094919636e+00,4.959172727951663973e+00 +-5.049019775254445896e+00,-1.381563077028357345e+00,-3.607815631934923606e-01,1.537058909742779589e+00,-2.307742759492474427e+00,-1.690775288074842120e+00,5.308433259777813440e+00,3.269680422232153827e+00,1.538660360555280437e+00,1.342948121733243738e+00,5.136919446565984870e+00,5.150108154036455943e+00 +-5.433552651702444614e+00,2.818885562711463677e-02,-3.279417244823289224e+00,1.545791434687723731e+00,-1.477440056825851222e+00,8.359621473279092996e-01,5.133107815890593173e+00,2.991393703367609014e+00,-1.508745328376193129e-03,2.571244256838248532e+00,4.478464671550294263e+00,3.667520676780307909e+00 +-4.246275329602491766e+00,-6.130663520806225453e-01,-5.845062440614010590e+00,-1.952098650681894476e+00,-1.746264638512076361e+00,4.958869789032507303e-01,5.315079959506445739e+00,3.972743925412632215e+00,2.793269678504992193e+00,5.584940290483441316e+00,3.892535432986085286e+00,4.697240467623889693e+00 +-2.706499974809537523e+00,3.924922185885175718e-01,-4.105156923265349533e+00,-2.044592367564284086e+00,-3.178980144414182973e+00,-1.493057516814380037e+00,5.021757939751064548e+00,6.339447365323519712e+00,4.945394441279040265e+00,5.264834653484440352e+00,3.886343321092996739e+00,4.424725523759203583e+00 +-2.651467077068968337e+00,2.492099512157600394e+00,-7.841257565010852915e-01,-1.377536061630622255e+00,-3.839461700572829983e+00,2.582115106873133392e+00,5.587764431662366249e+00,5.405066853022743700e+00,3.860237202046896243e+00,4.107108869533949935e+00,5.487652977036796109e+00,4.996723475156893635e+00 +-1.921174944783671457e+00,9.412006395738451436e-01,-2.625864606616613028e-01,-1.331777564711734474e+00,-3.478711161053920087e+00,3.905701109020744077e+00,5.133713232906468527e+00,4.494368763835435487e+00,1.307926951608490818e+00,3.830865832317300601e+00,5.178034455680792902e+00,4.871516117668107881e+00 +2.481098347911347979e-02,4.798757746073640806e-01,-4.210669215598827897e+00,1.519657317589789836e+00,-2.204219357018442960e+00,6.409508337405410705e-01,5.855966104246856929e+00,4.718316150574986878e+00,-1.208460825345432532e+00,3.876182703520312245e+00,5.371607561800637143e+00,4.279769579332299401e+00 +5.608947015146614756e-01,3.307660883373833016e+00,-5.302269633643058810e+00,1.154513370240555448e+00,-2.508472975056526444e+00,-9.069255698958078593e-01,7.453500872994089477e+00,6.136685070718774782e+00,1.577779596919119953e-01,5.811348619317231012e+00,4.013359064508622787e+00,4.274173284761452862e+00 +6.918019772089871733e-01,1.466478696550987060e+00,-3.621146700997774914e+00,-1.135210265489079218e+00,-2.270093923835809324e+00,-2.154054312539678939e+00,8.548631459854339809e+00,8.580677927587142761e+00,3.573725713298050888e+00,7.419094220950942287e+00,2.303293360327956396e+00,2.738280109656968442e+00 +5.933258203294380362e-01,-1.131123560438463516e+00,-1.605861339065547178e+00,7.302998686819989205e-01,-2.052409032866207905e+00,8.576733138557379732e-01,8.266456399981672476e+00,6.358139262462048080e+00,2.805261999954581142e+00,6.240747420223197395e+00,3.704750869121015366e+00,4.521147653224271146e+00 +1.445654395659279334e+00,2.089564369019218382e-01,-6.108205565391249259e-01,1.528236749888444823e+00,-2.038589923301223017e+00,3.072549047348906104e+00,6.531145968474424635e+00,3.659707778937812517e+00,1.361490758831767067e-01,4.413772251719586315e+00,3.702561277299750042e+00,5.074465917376252300e+00 +2.763119467305571675e+00,1.169930847882693081e+00,-3.410135203575566543e+00,1.227364972010503097e+00,-3.034243912264597220e+00,-2.259853471281571657e+00,6.228711353324530187e+00,5.390345214270871210e+00,-7.765975881852327234e-02,3.032668654013584320e+00,3.620297372992901330e+00,3.283416564361951284e+00 +1.617596157559101133e+00,9.274198691471612355e-01,-4.341813534124730367e+00,1.443200242866820027e+00,-1.215922849984176546e+00,-3.882836332642096711e+00,5.969829029753539906e+00,7.359973068273208519e+00,2.975172798878381375e+00,3.885288949269857905e+00,3.261339717609220035e+00,4.941919813889841251e+00 +-6.576508653258907877e-01,1.632997792991522257e+00,-4.102480222204741622e+00,-2.327795448610795681e+00,-1.266255394890709596e+00,-1.779812888348156541e+00,3.960817346595896460e+00,7.353020846842392544e+00,4.432314530601574987e+00,6.348169316565152265e+00,2.502149813883460805e+00,6.128471791598121499e+00 +-1.013240803735802942e+00,-8.014628681214892580e-01,3.914986840899605802e-01,-4.182871213923220921e+00,-2.436187298675244861e+00,9.875968433588133699e-02,4.923257732371997264e+00,5.474074476059730188e+00,2.808478061409179549e+00,6.312024025740812228e+00,2.064002107289165000e+00,4.387602522912947833e+00 +6.197151744087525671e-03,-3.149234092173039734e+00,-1.654102488856168396e-01,-3.412852847139776769e-01,-1.374484405133386655e+00,3.008339685703273148e+00,7.066411960496671973e+00,5.893878504480790426e+00,-6.355295163345040521e-01,4.776525929809087856e+00,1.379400472880342399e+00,2.425387915421347351e+00 +-3.904493631610490012e-01,-1.264212846324545669e+00,-2.225130675970304228e+00,3.537047195554293033e+00,-1.110739285306775681e+00,1.763013865152736503e+00,7.669229880295137747e+00,7.033887082352526576e+00,-9.855532089657668138e-01,2.673791490967353468e+00,2.979947600959134135e-01,4.784590574609719482e+00 +3.385595454556616923e-01,8.543168756601026148e-01,-3.998827467911054701e+00,2.792529087814373145e+00,-8.980532521212729602e-01,-3.434307464143248279e+00,6.673272479165506255e+00,3.658839214659449279e+00,2.051941196236151566e+00,1.813070366847800319e+00,1.733569923426339532e+00,6.495342894923719967e+00 +5.457907858885175933e-01,1.406319903308074437e+00,-4.003999994455309519e-01,7.598421744986120219e-01,-2.194432074523073872e-01,-1.521827718638907312e-01,6.771372674723006746e+00,3.146117206284628764e+00,5.052401051425627898e+00,3.103934056600683444e+00,2.788192216146352820e+00,5.148535415200887755e+00 +4.558412795895107061e-01,1.104444297834384775e-01,3.593332594690472170e+00,-4.491949968717319219e-01,-1.249186860862924409e+00,4.848963876141733631e-01,7.417506132955815623e+00,5.706804425219697663e+00,1.215304517010838303e+00,4.780543049014910117e+00,1.268904798642988219e+00,4.344918043171323241e+00 +1.029599828608850798e+00,-3.071971053391180928e-01,3.348362969849801640e+00,-3.252650131375099285e+00,-7.798963774535212501e-01,7.979538575667203260e-01,4.762983994516790887e+00,5.907165620073715928e+00,-2.723269413874934486e+00,4.328361348759193206e+00,2.685950096418165955e-01,3.347897102570498884e+00 +1.859740361719270263e+00,7.446068548254567432e-01,-5.897576147674840064e-01,-2.397830480271299081e+00,-2.495209820399827194e+00,4.455774218736996417e-03,2.135666466920343343e+00,5.503827401310089407e+00,-2.574279522444243185e+00,4.861401535483356184e+00,1.201085947131323994e+00,2.655449252937117421e+00 +7.374741802790536482e-01,2.322398825206865025e-01,-6.388607919241386934e-01,1.558201954142270029e+00,-1.169242667594004859e+00,7.156079652442062233e-01,1.209797746695326470e+00,3.280608636259185751e+00,2.433976210884713609e+00,6.860566217677655843e+00,3.428522783072619262e+00,4.354001919376115026e+00 +1.950582162144144371e-01,1.650484120201193006e-01,9.187050848428093275e-01,2.397232901981297459e+00,8.846211368723200241e-02,1.915130839190936074e-01,2.395860524137094050e+00,4.892194719829086047e+00,5.158820345845164468e+00,6.636110962149698977e+00,3.735949827975016291e+00,6.185136809968994065e+00 +-2.166162878878472142e+00,3.580732411560658135e-01,3.184832216671073635e+00,1.162138682750387897e+00,3.518870334769891306e-02,-1.993834323159580979e+00,3.195440828486001195e+00,6.371795030099142387e+00,3.311349987162778508e+00,5.273050129739965897e+00,3.450213330997202288e+00,5.173169406007716020e+00 +-3.083572858198748712e+00,2.049828050997768880e+00,1.369940080228404966e+00,-1.968064312283646089e-02,-1.465151629194637373e+00,4.167797826275299600e-01,3.621458553235387345e+00,5.113646283697613981e+00,-2.572042403930123733e+00,3.535381998201279075e+00,4.275033910035618945e+00,4.819187497449219038e+00 +-3.759345714741513689e+00,3.866920217978569774e+00,-2.103677830170176399e+00,-4.413827482702367688e-02,-1.884494713061559912e+00,-1.664631160098107854e-01,3.824917394299513163e+00,6.739145715447541818e+00,-1.224305480377219979e+00,2.002436272864535738e+00,4.451854545236884064e+00,5.366281616039342950e+00 +-4.578524685542856076e+00,1.778297781524767363e+00,-2.342573708673762134e+00,-1.198012191420462891e+00,-1.087814814573651923e+00,-2.086338604224302173e+00,4.904593866914863654e+00,6.667415099684595781e+00,3.719124336327230829e+00,5.253414586500423589e+00,3.973608202969439951e+00,3.507768606291574276e+00 +-2.825684221751323832e+00,1.017035095562614178e+00,4.304519462972633548e-01,-1.308161149994459427e+00,1.808840797870643113e+00,-7.167306005669671354e-01,5.610262983927929881e+00,4.565759051248619471e+00,6.723464872045026297e+00,6.383075616093323745e+00,4.233965708217838575e+00,3.808504549699757824e+00 +-1.019503719482324655e+00,4.065875506696980501e+00,1.787319612937320334e+00,3.785871797822472073e-01,-4.859598417414798810e-01,1.860761205100296634e+00,4.634366340916597160e+00,5.953031621103274773e+00,2.001161800363860266e+00,3.602337542990413866e+00,3.525568024920474830e+00,4.793193174110071730e+00 +1.786485900516896486e-01,3.602429925837669522e+00,-3.578127110716060322e-02,1.737775079834362746e+00,-2.223910956932633631e+00,-6.312674771699231524e-01,4.791120446589096638e+00,6.647638521125487365e+00,-3.934713074554867518e+00,3.509959809463994773e+00,2.288498110193316837e+00,3.623256074928376869e+00 +1.377030533515761768e+00,1.868948230854079462e-01,-2.055257803764825919e+00,3.105518687464257077e+00,-2.031096529580538324e-01,-1.283138892990953739e-01,4.735750670689223618e+00,6.241461733830655056e+00,-2.176226623923146697e+00,3.986486597268589449e+00,2.201362078044586390e+00,5.134844960398845970e+00 +8.802257136493027989e-01,6.991610167673095733e-01,-9.424059896640486489e-01,2.691141223314705844e+00,5.549848900595333312e-01,9.033152868585698769e-01,6.019697038791218091e+00,6.081796153028275143e+00,3.477088450765857708e+00,4.767849061984209769e+00,2.942893996062047712e+00,6.421923977825514385e+00 +-1.381855267987889269e-01,3.358675920631863043e+00,-1.269793476586484893e-01,-1.901853822405958461e+00,-6.386590191962151497e-01,9.989271146097629117e-01,7.635877472799797339e+00,3.757307194184470678e+00,4.359092498585783737e+00,4.700958837177121374e+00,3.883273996083135504e+00,3.670302715800173754e+00 +-1.242603731882978346e+00,1.179047161150432732e+00,-6.655607401899660269e-03,-3.935150388695539458e+00,2.071500264828480820e-01,1.416157323149925595e+00,6.199934806643137009e+00,3.645732419870664653e+00,2.646933395806181366e-01,3.664391908397746533e+00,4.501513758231745932e+00,2.208611795199703298e+00 +-1.980575304377616641e+00,-1.023312785625449362e+00,-1.076612247841705505e+00,-1.100154803106146328e+00,3.105740538097445658e-01,-1.219956835939274509e+00,5.805317603722760289e+00,4.728494949076917919e+00,-3.770431797980794641e+00,4.421206940584860412e+00,2.599085846756127083e+00,5.651612737237668327e+00 +-1.516710654879325659e+00,-2.323655834268085751e-01,-1.979048757027758842e+00,1.308402345296667990e+00,4.294516415566841938e-01,-2.959675111221924393e-01,7.029773949233699248e+00,3.801580229547636414e+00,-1.745096512269221911e+00,5.483005158758311737e+00,3.949109605587119098e+00,7.534620038935655018e+00 +-1.008203449196294343e+00,1.018038906638925600e-01,-1.753742555218650301e+00,1.038464361603437247e+00,-6.402963602107262231e-01,-6.128757175426355897e-01,6.356158567751506894e+00,1.796323243505194789e+00,2.363618419278966876e+00,5.121392245046798131e+00,3.177370768889981711e+00,4.039345223032076326e+00 +-1.895911417887633732e+00,-1.353493576124875197e+00,-4.044122617485270688e-01,-1.680421006422703645e+00,-2.941734439100746057e-01,-1.290065374186449842e+00,6.494096475458992046e+00,3.748179576591863071e+00,4.345436684232510061e+00,6.504187099950051731e+00,4.161836780587097273e+00,3.639340715987385177e+00 +-1.010428440734555622e+00,-2.913311355246178458e+00,2.987635913468353333e-02,-3.279635424953385225e+00,-5.459629222529611692e-01,1.379276987703866197e+00,6.519992428468716739e+00,3.821967605340175211e+00,-1.366874441741663837e+00,5.596444265884471747e+00,3.368739435092725110e+00,4.269651927955164794e+00 +-3.836429733507723538e-02,8.992082546887905092e-01,1.676376391647649289e-01,7.869692148824882771e-01,1.483872795671443257e+00,-1.291049843292832788e+00,6.845329173990874594e+00,1.840953010689553970e+00,-4.601262519633497305e+00,2.963292356885109946e+00,4.284365403802066652e+00,3.582885009051825165e+00 +1.133727084981247302e+00,1.667861749572196572e+00,-1.002822474434478472e+00,4.399034951128379056e+00,7.289220369490914120e-01,1.313710382185457881e+00,7.786877049577780596e+00,2.650399780779336911e+00,-2.175503178058280973e+00,4.858432397219559107e+00,3.588870920164624501e+00,3.967739611535218813e+00 +3.028928456183230811e+00,-2.343504079657432015e+00,-1.735220721547378053e+00,1.502014569001267841e+00,-2.000598529814214821e+00,3.063481019302902730e+00,8.711264538275468539e+00,3.939224384803575507e+00,2.306019998494040379e+00,3.869607166962059530e+00,4.493807489500436070e+00,5.438974973144796721e+00 +1.912884418398078878e+00,-1.017257808087804083e+00,-1.563967274598344392e+00,-5.979828118169634443e-01,-1.818763994069724443e+00,-8.957388571460802584e-01,7.842133100651661692e+00,4.706804462653856547e+00,2.062018851046006684e+00,2.013173749054140593e+00,3.174823864850833566e+00,5.055864408312224612e+00 +1.936123025836812950e+00,-2.881807603031397713e-01,-6.322762488805153680e-01,-2.405318421708156351e-01,-1.117212170935863585e-01,-2.089224422518605184e+00,6.859814222292866859e+00,4.305888056446495860e+00,-1.504652401585081734e+00,2.724891608993822878e+00,1.953893529791669970e+00,5.706103435960124592e+00 +1.618221552723499768e+00,-8.002646754975277776e-01,-1.541544171952438314e+00,-5.183997404836993006e-01,-1.770290809661849929e+00,-7.887086637616680385e-01,5.784084225940442359e+00,3.699792675914003404e+00,-2.693492530826773645e+00,3.368124005382250985e+00,3.150094770688928847e+00,3.256005576777363686e+00 +2.080028156160730113e+00,1.305113373605160998e+00,-1.579242564349135458e+00,-1.031759963327423257e+00,-2.296390069112169030e+00,1.113842869659726453e+00,4.258537816670777687e+00,2.666290978369139530e+00,6.042940022593121796e-01,3.276888245125995969e+00,4.134579687760838063e+00,3.667555485766595069e+00 +2.067576750771584759e+00,1.650518389633325311e+00,-4.526871086243544617e-02,-5.336818663506125437e-01,-4.757304941173889912e-01,-2.213097572202314289e+00,4.381036304112623014e+00,3.610682949304262923e+00,3.614310001038989917e+00,3.483275795388367513e+00,3.583129797372695435e+00,6.389563758440964136e+00 +3.786017738921322096e+00,-4.475021169250423814e-01,1.094641211652286561e+00,1.816604243070493174e+00,-4.137960824756630185e-01,-6.128853266638312203e-01,4.872969010800280998e+00,4.909625339754276396e+00,2.644042578184389924e+00,4.099073312922418388e+00,3.757909776778407540e+00,6.151163093415396688e+00 +3.483896602799633424e+00,-1.711015863873070142e+00,-5.104956170019500084e-01,2.859627247942449380e+00,6.568479639301256778e-01,2.204250097643949413e-01,3.773568767145410785e+00,5.060001513972095744e+00,-4.371107711584041766e+00,4.335962442428765939e+00,2.918503197900284896e+00,5.090574584299498717e+00 +4.576394942912266117e+00,9.426496451287436074e-01,-3.019032842906256064e+00,1.798851426301030676e+00,1.871164952159827033e+00,2.498610384954699781e-01,4.798982163132473389e+00,5.230029489935797749e+00,-5.885922879260423457e+00,5.282686299998096580e+00,3.374482995803665730e+00,4.608386496870978455e+00 +4.163200436344271615e+00,2.165441207107301036e+00,-2.376162131368675379e+00,-1.205931204947915392e-01,1.637935602027619009e+00,2.460981688298094383e+00,3.263146420542350601e+00,4.191488902458624821e+00,-1.815598761535369476e+00,6.212258418129863458e+00,3.817028694278706613e+00,3.317411050370447256e+00 +3.928017036429528375e+00,1.333673631104954627e+00,-6.458178088186522503e-02,-2.614809517409371509e+00,5.404482446485152636e-01,9.982797489639411159e-01,1.248171468675098428e+00,4.857115197313684796e+00,2.164447559332584703e+00,6.784390463654808912e+00,3.026009329226857947e+00,4.269082725882513252e+00 +3.342461135564160024e+00,1.813969413192767943e+00,1.271570493954519376e+00,-3.241552141702179313e+00,-4.107566534691114990e-01,4.554059273203925340e-01,1.474089932010938409e+00,5.396862418488867164e+00,-1.335624732277542748e-01,2.423500390873732258e+00,2.723503842105398753e+00,5.101459630326847794e+00 +1.799652716973078714e+00,6.944756218125076597e-01,-4.194005994748716826e-01,-1.083790345331669958e-02,6.616246977677708863e-03,-1.257618932044302529e+00,3.330856688646777641e+00,4.323617273943576755e+00,-3.618646261984716617e+00,1.108704578913732419e+00,2.418932105367774810e+00,5.699769803981489247e+00 +1.672723233610053040e+00,-4.900712705065484592e-02,-2.612987182637256378e+00,3.631112288887047956e+00,-1.299422808443319033e-01,-2.561113511042099944e+00,5.022410746851131869e+00,5.238189687817999207e+00,-5.493461308644604912e+00,5.161521639309378351e+00,1.877491626970969385e+00,4.035544796621502783e+00 +1.611958406255827869e+00,-3.091732562761747571e-01,-2.765880768238858867e+00,2.818067235798883186e+00,-2.986442384781843873e-01,-9.983095628402852695e-01,7.515330779140204420e+00,6.175506103179614570e+00,-1.835135034308899904e+00,4.823193971936775348e+00,2.719501996436998859e+00,4.329517824313737329e+00 +-3.032516886443232806e-01,-5.896004093191060669e-01,2.372919865267558714e-01,-5.532374295282154186e-01,-3.508148009550304258e-01,9.537541883800372267e-01,7.701903546473513273e+00,6.350400019395164186e+00,9.933807002980103995e-01,3.613308445084823628e+00,3.691216874039355833e+00,4.982059011101596546e+00 +-1.337959007393631605e+00,-1.002276626933851666e+00,9.579227200033104683e-01,-1.678868230406534767e+00,1.037460164619667724e+00,1.764842439121176110e+00,7.461032443895634358e+00,5.762777110943723358e+00,5.819435959838257233e-01,2.926436880405554497e+00,3.826542669273639952e+00,4.704638029968001511e+00 +-1.233022460530211362e+00,-5.743711226531966751e-02,-1.380807697986606186e+00,-3.842982498171382044e+00,-3.134900402257079222e-01,-1.635880325408218816e+00,6.701998499399708820e+00,6.226440851859729619e+00,-2.691285694757140412e+00,5.804829449411999853e+00,1.525138823745268990e+00,3.493815860942671936e+00 +-1.865205496337602131e+00,1.431710762843489970e+00,-2.718995054907896503e+00,-4.593443294069448513e+00,-1.383122156873124453e+00,1.309052096583117608e-01,2.337293587335182110e+00,6.260320734918286334e+00,-2.818298318179969009e+00,5.260742496647727862e+00,3.769612237166608537e-01,5.288363853086943678e+00 +-2.206628938695722297e+00,1.551514493449068777e+00,-2.413132556106665660e+00,1.178316695476375520e+00,1.457335410974213152e-01,1.204115957202990028e+00,4.698235367745162705e-02,4.896590014458261031e+00,-1.378430015980652179e+00,3.170740511370718551e+00,2.494619471374078135e+00,6.962789005562388667e+00 +-1.860135976104381417e+00,1.798906615382426022e+00,1.434350091326882515e+00,5.291584491944156809e+00,6.768586675674830300e-01,2.077446917403265036e-01,2.813578563378360542e-01,4.655291061699078803e+00,-8.382086229604519545e-01,3.621502355422674846e+00,2.593844517273804939e+00,1.607291002811817471e+00 +-3.124042680743386313e-01,7.577307867890251680e-01,2.121353399933311845e+00,1.350895633914932281e+00,-2.789513697782862178e-01,6.753067582859945128e-02,5.177064883997037903e-01,4.187754565173992916e+00,-5.103936229277277192e-01,4.061669028788871039e+00,4.315741458371293859e-01,2.824313347012796793e+00 +1.130011797480357849e+00,-8.391072593324183648e-01,-4.237611371298919405e-01,-1.933216574495729256e+00,2.742387868777405036e-01,-2.994752019428656986e-01,2.576689234901710535e+00,4.197275424097892227e+00,-2.993473679205946425e+00,4.366762917006224320e+00,4.797295118434252714e-01,5.492514421382309386e+00 +6.013461290273439674e-01,-7.688129699543496676e-01,-4.897451212908877416e+00,-2.480162142973378891e+00,2.630291790748110259e+00,-6.105555302220355696e-02,2.831441988274062460e+00,4.603751886326594267e+00,-4.760866155975504554e+00,4.405816125861661270e+00,3.255181258612026340e+00,4.946983860710324699e+00 +1.826389000794743867e+00,1.360554260325545606e+00,-2.665441211971080637e+00,-2.956296864889385922e+00,2.293554557599212451e+00,-3.452188178759939552e-01,4.107295149898662956e+00,3.829840697084754275e+00,-5.231379965522782172e+00,3.965474815393268848e+00,4.403908204209738386e+00,3.258035887312124679e+00 +1.394651957441010781e+00,2.188037568200167815e+00,3.918724289346340317e-01,1.396245913849412656e-01,1.029139151119064621e+00,3.966988293802046206e-01,4.213206276829068564e+00,2.317514670608773919e+00,-2.288681983437580669e+00,4.481009799782624370e+00,3.195088291628812360e+00,6.864843505746224928e+00 +1.317933650233626075e+00,6.196489704735804738e-01,5.453711560110501289e-01,2.872940919956571193e+00,-2.861319974669730426e-01,-4.446493412264039269e-01,5.341245468866937074e+00,2.402731574217447097e+00,-5.277416786616697664e-01,4.779774807980386342e+00,4.143791484593146279e+00,5.334646907298598251e+00 +2.078369651602372858e+00,1.055758634535370666e+00,-3.462383431273311274e+00,1.678371156089661920e+00,1.137865298635378108e+00,-6.250099977772415327e-01,7.340207577136370176e+00,3.994784883241460527e+00,-1.744308929395895547e+00,3.878048144569627986e+00,5.605253434021879144e+00,2.521198941506532343e+00 +3.149956991405951090e-01,3.999108922925000975e-01,-3.508493449203125003e+00,-1.183807484020850787e+00,2.048243675682622555e+00,-1.041283196264988664e+00,8.555754908569184636e+00,5.741224396017981846e+00,-4.554342668069114808e+00,6.039359007999831164e+00,7.062085973272534289e+00,4.566203609589495116e+00 +-1.335484915511098825e+00,-9.496044867575319515e-01,-2.101464349861162262e+00,-6.019396382394653910e-01,2.167658385589843473e+00,1.143199269311364175e+00,8.813808214112786033e+00,5.019559988327137567e+00,-6.275070551017204679e+00,6.788630174725600597e+00,5.175258844591393625e+00,3.385675944182517050e+00 +-1.762311053362322077e+00,1.495196654900621480e+00,-6.786751093886460584e-01,1.226921069235455297e+00,1.144931843234056057e+00,2.092742335952447963e+00,7.687264647442435539e+00,2.181909398040426940e+00,-3.808404812229323255e+00,3.953596456987713559e+00,6.473631774814190720e+00,5.310460369457939755e+00 +-1.242235850301085520e+00,4.067472821829554164e-01,-1.266287029602956693e+00,-4.473018400253331306e-01,1.520755709265585010e+00,-9.731500771403120975e-01,5.208368016111156074e+00,3.098806325055673216e+00,-3.095765099554673938e+00,4.673366002556873511e+00,7.936264835799946127e+00,6.124787052766116346e+00 +-1.047907593483522248e+00,-2.688763226369760506e+00,-3.113089820761621773e+00,-2.512693119715510015e-01,1.846380876804381677e+00,-2.282894962031603470e+00,5.906650769498869025e+00,7.191220081857573554e+00,-2.519878654915281402e+00,6.553610623994441831e+00,8.380986906793040703e+00,3.584350310865875411e+00 +-1.844627464125473404e-01,1.122766995630271047e-01,-4.121025287637391621e+00,1.797875294197349483e+00,1.585009272754673182e+00,6.660819244520836957e-01,6.893875111118499710e+00,6.874602615116323534e+00,-4.767729824381190085e+00,6.979311980368485102e+00,6.773564231786926904e+00,6.240392836728278603e+00 +-1.553126461549380499e+00,1.428128698225768156e+00,-3.387762219870578129e+00,-5.811216978785013199e-01,2.980713220670671015e-01,1.450360386619919950e-01,5.111534095669602706e+00,4.052598079611519744e+00,-4.344976218930746370e+00,5.539882879186871278e+00,5.024728618775607281e+00,4.627643543827098860e+00 +-3.994786779790023168e+00,-3.030500860844554722e+00,-1.574365772133774488e+00,-2.334190637396902357e+00,1.041007653499785857e-01,5.435714176373549478e-01,5.284802151532128178e+00,5.099647470951653716e+00,-3.371047890540608272e+00,2.211015009308235690e+00,6.168632169582965119e+00,4.081638605238643080e+00 +-4.951401337488436916e+00,-4.281597413464874435e+00,-1.446965890712374803e+00,-1.532118915967320305e+00,9.840892849850390034e-01,1.695384535337644216e+00,5.045181307419701611e+00,6.578181144299732885e+00,-1.598630209145178505e+00,2.396734116344834131e+00,8.386117100329082419e+00,6.105214003038710757e+00 +-3.768335176734624703e+00,2.821499338348825159e-01,-3.841967183343979908e+00,1.219078443502037423e+00,3.382258767711604719e+00,-3.293032198175086522e-01,5.688952638614140689e+00,5.508928573275908569e+00,-3.851911527026880222e+00,4.279345597822666214e+00,7.042749744856436678e+00,2.811021302569785441e+00 +-2.000378725346092956e+00,1.721205612915869709e+00,-4.147184173872245694e+00,1.613977079281301741e+00,1.245829365421335488e+00,-3.110864252931751506e-01,6.006974816112244930e+00,5.176304910092258460e+00,-5.261539750925154024e+00,4.346664796174861678e+00,5.904321977862433179e+00,4.917188698982512207e+00 +-1.529114688558853796e+00,-5.520735524876592137e-01,-2.656566963244266777e+00,-6.190376217729887109e-02,8.875057108964315988e-01,-1.866651543240889222e-01,4.284550674581560692e+00,5.405435297673074402e+00,-4.775343473267573913e+00,3.799120905352531885e+00,7.318339719949468858e+00,4.545836912879165581e+00 +-1.382077426139134202e+00,-1.460745776425036890e+00,-2.296335121286509073e-01,2.238441972820927328e-01,1.636529721440337148e+00,-6.973505035377320915e-01,4.318230763979286735e+00,4.610885275325962596e+00,-4.158230463276119337e+00,2.544854833773063874e+00,7.518444240314048344e+00,2.399475115996510866e+00 +-9.776006139457309452e-01,-1.267066756597080124e+00,7.938082447649477125e-01,-1.413220720731109603e+00,2.171566498567953474e+00,-2.290059544218771670e+00,5.087184242756512376e+00,4.886844020442945968e+00,-2.652016073078577563e+00,3.729252890668482756e+00,4.806585388871521758e+00,5.511388409605797456e+00 +-1.302065558268684420e+00,-4.226338953756406114e-01,-1.123615705427960965e+00,-9.783303329218313582e-01,1.007122282374927735e+00,2.021121699101357638e+00,5.785845498026464639e+00,7.340906335593324172e+00,-3.094773528188479617e+00,8.037933946174717903e+00,4.708212886471146774e+00,5.125970724634678177e+00 +-1.605904370796716885e+00,-1.232593778691533970e+00,-4.337633722520346069e+00,2.543933438651938550e-01,2.444625552455861772e+00,1.588729289098186337e+00,3.946041794826312454e+00,6.208758917985891301e+00,-4.361938518167198353e+00,5.252633179210799419e+00,4.261297571469822465e+00,3.252001104075056492e+00 +-1.367407857803576876e+00,4.737473641267302416e-01,-2.935007695235578140e+00,-1.540156451526306203e+00,3.867695856989417535e+00,-2.178328585195230538e+00,4.309242335980648875e+00,2.485156214386876172e+00,-4.796033594615051854e+00,3.794170355583786236e+00,5.729969752339677314e+00,4.005477881434223342e+00 +-2.255653640435242302e+00,2.505874133578036123e+00,8.426518445301535432e-02,-1.024343935297204800e+00,2.751911341281242152e+00,2.095966177392705743e-01,4.137847859460531019e+00,3.843512617322950575e+00,-3.612947540317437145e+00,3.221189136472135672e+00,5.671551942901556842e+00,3.375065468211977837e+00 +-3.921030993293422640e+00,1.630507909858670834e-01,9.695086723449175548e-01,1.016718128066200100e+00,9.242379484877115692e-01,7.640466204237250647e-02,3.887114122371945868e+00,7.938872834349187890e+00,-3.930522720000167780e+00,2.642365263037671497e-01,5.839611272192583691e+00,2.237288727564263002e+00 +-1.936331010084744397e+00,-1.525296869443791614e+00,-1.887927094574153530e+00,2.889296467732927809e+00,6.674888846926972930e-01,-2.226209497065793741e+00,5.147626517807525559e+00,8.101203583561597199e+00,-4.036529054131140271e+00,1.460043503492038042e+00,4.555431949381168799e+00,5.518934066493400792e+00 +1.089177159792090732e-01,-1.480781935838115571e+00,-2.662620779159475592e+00,1.034614556451587619e+00,1.577832789279951964e+00,-8.318449178559828017e-01,4.720014009671788635e+00,6.953736907057773919e+00,-4.647597512732412284e+00,5.850995166966205474e+00,3.801198928568325641e+00,3.967097800413919018e+00 +8.857813357540065269e-01,1.626430617356565023e+00,-1.705199505776184621e+00,-3.030289740963192813e+00,2.396803525729377604e+00,1.417714739066025853e+00,5.888658474261237785e+00,5.147574616784824642e+00,-4.378121367908963890e+00,6.743064673446346191e+00,5.278554693669795128e+00,2.382535524532037208e+00 +1.379769462219410325e+00,2.641558084995923483e+00,1.825251076082315738e+00,-7.221922592021288168e-01,2.285832806744356738e+00,2.454150858434434923e+00,8.429248908043021515e+00,5.832642052619546824e+00,-4.493401982967590413e+00,7.640750679033470050e+00,7.192202538343089202e+00,3.930856752560546674e+00 +2.535850865204160254e+00,1.747903449949556043e+00,2.352021208472720559e+00,3.861460703360300784e+00,1.219586203910399957e+00,2.687019828144873168e-01,7.327886179081454010e+00,5.419198983552933058e+00,-3.686637380756415894e+00,7.427129093163848950e+00,7.238967956017155814e+00,5.079134620182847115e+00 +1.918686482430989937e+00,1.901521804749375377e-01,-2.233122763915323938e-01,3.527070754360397853e+00,4.868582213573210415e-01,-1.998178446545642029e+00,6.021843205344657335e+00,4.060183028189632282e+00,-1.173286360505831460e+00,3.527551104234933455e+00,5.874570741275926267e+00,8.095694785062841348e+00 +9.834708323740255498e-01,-1.767532034523958906e+00,-2.275029374245874259e+00,-6.330186885629789373e-01,4.817738872638802627e-01,-1.738891492324635024e+00,4.938549126197735895e+00,4.321312469822547797e+00,-2.291676683720837104e+00,3.359429581762446659e+00,6.659601894279155054e+00,4.369361129868212679e+00 +1.130922016234996885e+00,3.501437177607990003e-01,-2.197358340644391950e-01,-1.733438673028740773e+00,-4.798647781829542547e-01,-9.449763468903303598e-02,4.346695488232400706e+00,3.764062693634334877e+00,-4.867940086837689861e+00,3.469323980260952567e+00,8.250621485366245622e+00,3.199225863983878870e+00 +1.987774937541078035e-01,1.621324503807580752e+00,1.471824066182197965e+00,-1.574909450028733282e+00,-1.444874973655196015e+00,1.828513539814531796e+00,4.486520860130791988e+00,5.335209395860640136e+00,-6.103478888992684759e+00,5.295324495597192538e+00,5.824635096502237985e+00,5.422301366413537771e+00 +1.181252098985606569e+00,4.134968344910459059e+00,-3.613664434624985766e-02,-1.855481006435167224e+00,-1.404220683081923049e+00,-6.819517137232335990e-01,5.418137778231014501e+00,7.113217943178534064e+00,-3.589890359574850365e+00,8.317154553906529912e+00,5.537201981927316830e+00,3.586261854092550827e+00 +1.856101904956906079e+00,3.925455888329151044e+00,-1.552381011240772102e+00,1.217705537328990228e+00,-5.337796791751941994e-01,-2.701922740527604727e+00,5.226323506836971333e+00,5.226959111586891638e+00,-4.693813412962200005e-01,6.616116507490185761e+00,4.891452878561917572e+00,6.033164740847288599e+00 +9.164264286591120579e-01,9.674231528967307536e-01,-2.080074393406138089e+00,2.693222771650090053e+00,-5.630122689619707632e-01,5.148341904779039080e-01,6.093970864738022186e+00,4.375989109329739613e+00,-2.262852418509282870e+00,3.253090895327358734e+00,5.143223292101271049e+00,4.424456203474296245e+00 +6.455961493516636507e-01,1.280927382243076229e+00,-1.905045654688751533e+00,1.415314383325836811e+00,-1.366699782267320806e+00,1.488353364690308878e+00,5.993014095948725029e+00,5.663699500937534381e+00,-5.375949927543592466e+00,4.127864241623477426e+00,5.749506903894103793e+00,1.749369021285917647e+00 +1.579146930776830771e-01,1.672634254975262857e+00,-1.481153727250525964e+00,1.130489333255395579e+00,-8.576220968497063613e-01,8.751866702420707522e-01,5.507422646264366506e+00,5.434873638195527157e+00,-5.476225810067839816e+00,4.600462707919646732e+00,4.738172189305659643e+00,6.056550584723551012e+00 +-2.909607925415798046e-01,8.724720745357827933e-01,-2.368999111916266997e+00,-1.715903225118668995e+00,-2.148380708258881278e+00,1.183998800131415230e+00,5.349573112733391866e+00,4.165787047009397170e+00,-3.323558655156205077e+00,3.223375661647526425e+00,4.119277002685489464e+00,4.599970682298828883e+00 +-3.306645713722670132e-01,1.909979759437071767e+00,-2.031465225505575400e+00,-3.587823934881999577e+00,-2.860600747815385425e+00,-1.987472501142117043e+00,6.256079522580288099e+00,5.830789907284640528e+00,-5.847171202702261539e-01,2.975383640935380214e+00,5.490481902136949977e+00,4.387879926982361845e+00 +4.263228177411126918e-01,2.157561582795937571e+00,-3.316935045948693705e+00,-2.940545435776955152e+00,-1.864903705361835584e+00,-2.524928902417629573e+00,6.628072144779578068e+00,6.395597652102816610e+00,-2.696110597254691044e+00,5.952264941109109309e+00,4.257662994441343329e+00,3.703930638641808493e+00 +1.193366732033157351e+00,9.826325589930737792e-01,-2.516527984552010544e+00,-1.153359427414173854e+00,-1.706924925159805539e+00,9.752757465543318016e-01,6.304456315745788686e+00,5.489217295081757264e+00,-4.712329429705231831e+00,8.394840572117590938e+00,2.978300494010345023e+00,3.193680706741855779e+00 +3.602778714187879761e-01,1.836253113768347767e+00,-1.211580301569618046e+00,8.376741731740589003e-01,-2.925237604631134580e+00,3.386650484928459992e+00,5.494203647555168324e+00,4.661456842424625435e+00,-4.605837326283065636e+00,5.816965219020976186e+00,3.351541411691269179e+00,7.093379900479445332e+00 +7.232824621865587833e-01,2.360273753448378642e+00,-2.119738764212126370e+00,3.166679016710597150e+00,-1.933442555463390722e+00,7.646785509822175975e-01,5.160871861802658778e+00,3.943309158431016037e+00,-2.819566607777573175e+00,4.778156170584292539e+00,6.104584871203494245e+00,3.806052101117367137e+00 +4.895188127295140856e-01,1.598400661269894441e+00,-4.059440643799568704e+00,1.761520509834790804e+00,-6.930824119684197981e-01,-1.602894020209124637e+00,5.354020572274483136e+00,5.675753062682611372e+00,-2.074769113012784771e+00,4.534992326556606557e+00,6.374140926240183802e+00,2.995667537325232388e+00 +-1.417146712806542030e+00,1.162540749823484543e+00,-2.821661381645873767e+00,-1.864701162965589631e+00,-2.148300520105935973e+00,-3.204283294137773574e-01,6.828004225253447856e+00,4.848636180667226014e+00,-4.807445855863754502e+00,4.322166784119967353e+00,3.357618936239717744e+00,7.477707704377309028e+00 +-1.223100535472626760e+00,2.399805049786160716e+00,-1.881675152841982834e+00,-2.051458864990816977e+00,-3.036353204927186411e+00,9.162349161972946909e-01,6.747155584887854829e+00,4.424131394752608415e+00,-5.172862866739350807e+00,3.714503085883650080e+00,4.530739860216478121e+00,5.588621204537695952e+00 +-2.331620117532256398e+00,3.091363422104554726e+00,2.498570506945987368e-01,1.156413474997385782e+00,-2.338453850701846637e+00,8.381982775322298629e-01,5.346875066248663266e+00,6.416893309367024401e+00,-4.329012813825567463e+00,3.400418611958983206e+00,5.652205932632920593e+00,4.984056855741751058e+00 +-2.663511555637592121e+00,2.035013611904984643e+00,2.174964038665803123e-01,2.002099711433644291e+00,-2.770177392028112084e+00,-3.737854810035730058e-01,4.668187886431102385e+00,4.793161363316138512e+00,-2.160875966280075389e+00,3.039640789342107574e+00,5.039753264893064078e+00,4.928799220242923163e+00 +-1.080341765991819303e+00,1.594274693509639906e+00,-2.597492751680845480e+00,-5.159732943759440804e-01,-1.862695010933665074e+00,3.223788650687369195e-01,4.396700210807002129e+00,4.087088907698947615e+00,-2.788140969679977488e+00,2.753411555394968069e+00,5.138471736541990964e+00,4.463078872331661451e+00 +7.757674270661434335e-01,8.185867493298183417e-01,-4.025774562613181118e+00,-1.778381660850697710e+00,-3.344381828802922119e+00,2.261965511720037125e-01,4.697408133444811895e+00,4.072430739626219598e+00,-4.819173401705640458e+00,3.401845223177136557e+00,4.451556870688682999e+00,6.392728433143465949e+00 +7.611104818252114601e-01,-8.286425486551746156e-02,-8.714099597121982566e-01,-1.392322392271790887e+00,-2.010274344700349047e+00,-1.187859749674115672e+00,4.220067923014012123e+00,4.198593555867003779e+00,-6.339609891012745635e+00,4.219375112814422124e+00,4.609282730777004566e+00,3.743959361957657883e+00 +6.790603894908642246e-02,3.587434096184727306e+00,1.621506077846056160e+00,2.664330740287865318e+00,-8.178962447624227305e-01,-2.098826921279402513e-01,3.445800902112551078e+00,4.990575469785755836e+00,-4.415085684552428447e+00,7.354874196964784616e+00,3.987913881285179318e+00,2.078377777453091824e+00 +-2.114987211631105812e-01,5.188606737658716384e+00,-1.843969134213113703e-01,3.702957121339581548e+00,-2.006425116542370102e+00,2.737147109700642122e+00,1.169552537800597314e+00,4.655034887063085769e+00,-2.251466020449346850e+00,7.997480528203591454e+00,4.994447217168600517e+00,5.452196236741163382e+00 +-2.044273108467230760e+00,5.835049444426541054e-01,-6.446928228212241763e+00,7.850216573166128864e-01,-1.431515617724336220e+00,-8.556040301668343950e-03,2.805575485367272748e+00,5.545649097145647133e+00,-2.639006556732358177e+00,4.314394547457116147e+00,6.591809101603595344e+00,5.870140067503667680e+00 +-1.101726457346012822e-01,-1.620274964016493735e+00,-6.641148523763781064e+00,-1.094626423534234005e+00,-1.244275022996923497e+00,-2.347922786427476094e+00,2.986861694153729374e+00,6.013670007454654076e+00,-4.749572626239835671e+00,8.989575797021882586e-01,5.871049258764507783e+00,3.692157962858390707e+00 +-1.355492099570392295e-01,-7.710785816490806077e-01,-7.460042509833926250e-01,-1.431969779711422142e+00,-6.658354460507525108e-01,-5.212556798169548644e-01,3.640715501686690558e+00,4.199800461076788949e+00,-6.923924389413915748e+00,2.409415786856320629e+00,4.723429037241177575e+00,2.118230114873473902e+00 +1.066566345600753696e+00,-7.877368489464272594e-01,2.450416683951243790e+00,-7.293212181132470162e-01,-1.831209305352095917e+00,2.128019456441309631e-01,4.630997173162287872e+00,3.153504864869932423e+00,-5.121705788364117495e+00,4.961928494411546708e+00,5.848549132384527560e+00,4.270064162359655136e+00 +1.193425803725096435e+00,-1.896760202919263172e+00,-8.562759139084471505e-01,1.806142938563724432e+00,-1.942094921675173724e+00,1.854619225282396755e-01,3.595501587468281190e+00,4.159012662003547689e+00,-2.807186266658452389e+00,6.385983535919036669e+00,7.004357507056047538e+00,6.747016245236693521e+00 +2.083761271791886305e+00,-1.276720735151101849e+00,-5.479757520210992716e+00,2.606765689959579468e+00,-1.441777419428688312e+00,-1.139184854626122068e+00,3.426172540266504640e+00,5.032483969662179923e+00,-1.070486597603295564e+00,3.698943296325017283e+00,4.604898685711097173e+00,5.158872725905403023e+00 +3.913190663892308852e+00,-1.838204721789715279e+00,-4.340440974661147422e+00,8.709417064315086998e-01,-1.368377580730800069e+00,7.857745914260003683e-01,4.206649879981476658e+00,6.144795896611343622e+00,-2.978755867683351433e+00,3.100088655314563901e+00,3.913506554336225740e+00,3.186174085507160747e+00 +4.353600527808068499e+00,-3.456748851778082887e+00,-9.091876232287394721e-01,-1.666746966739525604e+00,-3.835541755542447806e+00,7.176915106309048609e-01,5.999160702075048590e+00,6.123954378276296850e+00,-3.942832587262444122e+00,6.505938216379314909e+00,4.494098247601696627e+00,4.785774580268420841e+00 +5.751111549400718559e+00,-2.606365152484285463e+00,2.712259588367511576e+00,-3.002823022246964513e+00,-2.501744939896656028e+00,-5.772774549715806169e-02,7.052118926317236358e+00,4.556194363128761360e+00,-4.652746919986396890e+00,8.969322605193864817e+00,3.338448377151303603e+00,3.847965444282013703e+00 +4.412564108108409044e+00,-2.197886789007060138e+00,-5.546879011168140972e-01,-1.945269973105419936e+00,-1.544695102302105383e+00,2.213139708179573395e-01,4.681231933766181186e+00,4.183559885287595925e+00,-2.610332668439563797e+00,7.894978062034469168e+00,3.369021545659768524e+00,4.544912566977936663e+00 +3.799001718987409681e+00,-2.137054923626828806e+00,-4.457079794441984433e+00,1.226395757840899492e+00,-2.030637715223882811e+00,8.683575779812516271e-02,3.111532903220851853e+00,5.466003107294981511e+00,-2.524675485755767390e+00,4.537313889249458221e+00,2.228549041068664138e+00,6.596994726986956437e+00 +2.235099628414229045e+00,-1.228748151889619278e+00,-6.116059378706810712e+00,2.226761373624125628e+00,-3.167429537191252198e+00,-8.899723588492577941e-02,2.739760515153621956e+00,5.488751323872038235e+00,-3.267075187526828017e+00,3.180835210134046687e+00,3.677150338628789594e+00,3.917626231455117569e+00 +1.584180587095145309e-01,-7.852655966666166609e-01,-1.812135908497644499e+00,1.811381571465614071e+00,-3.868721454666545601e+00,-1.305486931701104858e+00,5.212141177367930034e+00,5.083612625330649948e+00,-4.227537965591771751e+00,2.436317686035841312e+00,4.677542309159430367e+00,2.750568805364736136e+00 +-7.766652041322625877e-01,3.440854525018116616e-01,1.291619621175252419e+00,2.833256115689901211e+00,-2.566560115440099654e+00,4.448779037142117643e-01,4.720370609089600933e+00,4.390812785928678963e+00,-4.009024438940521406e+00,4.226275748530937015e+00,5.640016549047624395e+00,4.977936640280186786e+00 +-1.666461426108118760e+00,1.785540568414713203e+00,1.805973667163951024e+00,3.702551833821285943e-01,-2.318949619335108014e+00,2.193260776215153474e+00,6.501093851038027616e+00,4.097104561187784988e+00,-3.380629817883458621e+00,4.993965235226390575e+00,5.038063111393355165e+00,5.840642169186212485e+00 +-2.410407352193815633e+00,1.827937464828485625e+00,-2.753275686170967518e+00,-1.916569669564210932e+00,-4.188875821867550364e-01,-1.434728816777196769e+00,7.222656113864077909e+00,3.863332368140850015e+00,-3.557266307242549885e+00,4.348824044871342664e+00,5.264486958202708067e+00,4.345164796256563378e+00 +-1.666239550604287967e+00,-6.080677676092065553e-01,-6.016779562497917233e+00,-1.597834161041584933e+00,-1.273227400451314217e+00,-8.484560339955301567e-01,6.599063039814783593e+00,4.026283348567725184e+00,-4.751951651617574157e+00,5.398147519999094257e+00,4.362588794554010718e+00,4.096358997545670455e+00 +-1.655180023490592456e+00,-2.622239271382690529e+00,-3.750602427130766081e+00,-1.738716375420507276e+00,-2.284581807216647942e+00,2.062685576388656017e+00,5.465498868731979876e+00,5.571345962541135677e+00,-5.342053777125773451e+00,5.617987145165654006e+00,4.189733685873055613e+00,3.577745219813466715e+00 +-2.004071539620203346e+00,-5.295128212567417059e-01,6.047322567267358062e-01,-1.965503770718391330e+00,-2.096982664784231787e+00,1.269103252111400681e-01,6.751060902271214914e+00,5.910331031458312623e+00,-6.200308696641878115e+00,5.715923284776542879e+00,4.030748268924964073e+00,4.600455274492318836e+00 +-2.074304412279668330e+00,1.360712017343177704e+00,9.251475424004964587e-01,-2.383440075185935259e-01,-1.083413596973536785e+00,-9.697599544848316544e-01,6.441411052097585355e+00,5.461601793406312133e+00,-5.208872431540392256e+00,3.472725521286179617e+00,4.326691175634730158e+00,4.200401906248015571e+00 +-2.612709753918561972e+00,-1.702468264429593536e-01,-3.373551225247855889e+00,7.280554488963435489e-01,2.319313567379489571e-01,8.094720158030519475e-01,6.446830655778663655e+00,5.538956232612101793e+00,-4.981796819407129817e+00,2.406619465325531948e+00,4.497009142654491143e+00,3.232925210389196558e+00 +-5.287188450741622248e-01,-6.095815948953712260e-01,-6.264637216247125551e+00,8.323919370189192257e-02,6.473154449270844824e-01,7.835103380678738461e-01,5.984142948224764780e+00,5.229714827305749658e+00,-5.223713406750631449e+00,1.843460253666439286e+00,3.559375867868571408e+00,5.720746949205340215e+00 +1.427558787308593757e+00,-1.557302632852491930e-01,-4.597806285564796092e+00,-1.317988961575996321e+00,-2.188784664657661416e+00,-1.067990096138581313e+00,4.565907732054268031e+00,3.579763228869906388e+00,-6.308078353552398099e+00,3.078447130025423473e+00,4.832425975578442667e+00,5.011868797950294052e+00 +2.764127317348216373e+00,-2.686501783861952930e+00,-8.781008760933330937e-01,-1.878669373366243622e+00,-1.627916373166509167e+00,-2.543525014225115344e-01,2.474722339252600101e+00,4.017719734625418759e+00,-5.754602740312238396e+00,5.835979325068624490e+00,6.232338477435537705e+00,3.576325938558922779e+00 +1.543226017616112777e+00,-2.610207787022556847e+00,6.607750716330882401e-01,-1.309906651928841814e+00,-1.785712370039657992e+00,1.285798377024816475e+00,2.558548751022986067e+00,5.707837790419183932e+00,-3.563140784313889142e+00,6.480571766391602040e+00,6.253921768985826191e+00,3.881109340114460515e+00 +1.816779137249918685e-01,3.486292015042397052e-01,-2.840740209899347946e+00,3.379650278242442574e-01,-8.198855256058732444e-01,-7.181831308890092025e-01,2.723290370302909214e+00,4.875980960146384824e+00,-2.913466572202566773e+00,4.859607613288064343e+00,5.097350440448430220e+00,3.619998990410613793e+00 +-4.815905563663037681e-01,1.928041997345812497e+00,-4.815165219484332404e+00,2.363014709460953711e+00,-2.363669136181059116e+00,-1.316525815903691443e+00,1.826417649917365882e+00,4.500876629176228327e+00,-5.308566677002851009e+00,2.653997718300394659e+00,3.362139387239098554e+00,3.670391412629564254e+00 +-7.891240805373729295e-01,3.029472701355132802e+00,-3.758047625023254845e+00,2.288737409872124040e+00,-1.964455413069789991e+00,1.455759453557631034e+00,1.522305917526569630e-01,6.006149330688311139e+00,-7.122756661281028912e+00,3.790575847005788646e+00,2.664256832658303153e+00,3.063278519312641279e+00 +-1.427442697307999442e+00,1.422722195605895079e+00,-3.664943911779382502e-01,6.045914555489941833e-01,-2.351577888029317887e+00,1.028308835477044436e+00,5.875058199155538396e-01,5.281385630745823789e+00,-4.937230596280533845e+00,5.133190913151953083e+00,5.076220016262959156e+00,5.934188040842376388e+00 +-2.056090676664585004e+00,5.489115262117170158e-01,-1.190441230292740515e+00,-8.992542381752988145e-01,-2.054960448025206610e+00,-6.049953351586672134e-01,2.227411624213786467e-01,3.636772975192758217e+00,-3.001759071036718574e+00,5.036880885972359501e+00,5.495733033675129775e+00,5.145021568904277309e+00 +-9.582695723029276413e-01,1.852360103617485931e+00,-3.063441926180963559e+00,-1.953418429471264206e+00,-2.071154166554376896e+00,-8.119869804624716414e-01,1.230599694952299483e+00,4.824080340429043545e+00,-2.341051401377775676e+00,5.870680100001074209e+00,4.469277296861590365e+00,1.075704134029249914e+00 +-1.582376910602060760e-01,2.189889734009316857e+00,-4.747345179362759460e+00,-3.151931765461429835e-01,-4.509538900066918377e-01,-2.835531601968044879e-01,3.784604545548090115e+00,5.318221682007409967e+00,-6.180781124865310616e+00,5.646261655890591591e+00,5.054598689700086744e+00,3.793705868482695642e+00 +6.959286950578849051e-01,6.932436058180180272e-01,-2.546648440975166849e+00,2.062745429629262883e+00,-2.740780178961054858e+00,-3.269385040430629052e-01,6.430060983904160032e+00,4.100766536154779374e+00,-6.582948750427798146e+00,4.814588188534153268e+00,6.198388469805136580e+00,6.932549558323367833e+00 +1.685347181800349592e+00,-1.541952554884603810e+00,-1.621865943421660017e+00,1.936196794573352475e+00,-3.265755400220438531e+00,-9.629537655635460602e-01,8.370956373988427401e+00,3.038401085353682696e+00,-5.588498992214349315e+00,4.263243556096690590e+00,5.805831702509976822e+00,6.569832060772085036e+00 +5.619516977521017420e-01,-2.315973686782937246e-01,-3.281274591059599288e+00,-2.220697764081182579e-01,-4.628198926143993752e-01,2.151012543333026272e-01,7.745727657241503472e+00,2.685129616860215673e+00,-2.731165510437814525e+00,2.595087672753301433e+00,5.201334641044449647e+00,3.219474986801178940e+00 +-1.349268180125596794e+00,1.655809891178515958e+00,-5.231539015833455153e+00,-1.165785651985337124e+00,1.252610657179511477e+00,-4.897586746070302643e-01,8.129168315619942575e+00,2.922562657270405762e+00,-4.085018491545849173e+00,2.790472003681623292e+00,5.383394530934806355e+00,3.586778506060198879e+00 +-2.100389066768324486e-01,-1.494682972458925896e+00,-3.584572825600751411e+00,-1.401587609857073202e+00,2.251384033992794853e-01,-5.934183954548903905e-01,7.441139800707047947e+00,3.377305662599260572e+00,-5.913173941404689771e+00,4.668216539632784823e+00,6.737978412044867582e+00,6.493094468850287626e+00 +5.485587735747301519e-01,-2.068089318784515740e+00,-2.243471552217256360e+00,4.381068794323735860e-01,-5.229656391900302514e-01,-1.652041200608006299e+00,7.053254100833267870e+00,4.537533579414166240e+00,-8.793919469542744949e+00,5.559195251967260276e+00,5.876154813035684654e+00,5.726585109741426649e+00 +1.627196506847609303e+00,-5.942359193839545917e-01,-2.204020140251610194e+00,9.430541241391486862e-01,4.904723649761351667e-01,-2.143035632598147555e-01,5.841940752562459593e+00,5.217452086683557866e+00,-7.019671504862639466e+00,4.844290408304894768e+00,4.823209524717708696e+00,5.144027609039376614e+00 +1.046652319512691109e+00,-1.417153156446207207e+00,-3.026556964533268612e+00,5.928952139307762659e-01,1.397674651075489383e+00,1.968044498640865614e+00,5.644068693543877302e+00,4.831472166896566556e+00,-3.728254800048016904e+00,2.836757308576917325e+00,6.056575880500338904e+00,2.951545081531402381e+00 +8.954242013556753532e-01,-6.795137874097305630e-01,-4.097073586783594124e+00,2.247506211259183928e+00,5.553576947692639987e-01,1.975155891931058783e+00,7.154470288911317866e+00,5.087541508707205118e+00,-1.767290320286429406e+00,4.937862198091091948e+00,4.949358407465503262e+00,2.594159642289888712e+00 +2.024594371026763318e-01,-7.194769430688547907e-01,-3.691388889817488916e+00,1.247845108867251085e+00,-5.504762302810077834e-01,2.528715780911335309e-01,7.945662466242399802e+00,4.113873776637209545e+00,-5.456182505782537717e+00,5.985536488560954993e+00,4.227285404794214330e+00,3.250246637205136402e+00 +-1.218874410964381649e+00,-1.758523559724021856e+00,-1.962711156225795950e+00,-6.279759711458277049e-01,-7.583446693541391337e-01,-1.969618325843885298e+00,6.209907318174950674e+00,5.171693078300720003e+00,-8.264793271933069008e+00,6.769228940532217464e+00,4.723855349476290932e+00,4.573308323698332956e+00 +-2.148197705717832307e+00,-4.649936575244809633e-01,-1.035598528720012679e+00,-1.263971379281882079e+00,-1.440673375841695913e-01,-7.451968988208304001e-01,5.160471704650104741e+00,8.829560451716705671e+00,-8.539634940588666012e+00,6.936680962381640114e+00,3.235429173871033015e+00,4.781272951395972193e+00 +-4.544314759852930763e+00,-8.545989354614920153e-01,-2.071564460370118876e+00,-1.859713842565478226e+00,-4.399036977135762916e-01,2.182765786583092726e+00,4.372573258042296906e+00,6.440370574082606048e+00,-4.042071270042837838e+00,4.212542412812976700e+00,2.781187122013275559e+00,4.479168097457306708e+00 +-4.486765194885098396e+00,-2.890474908541991184e-01,-3.304044548606963172e+00,-3.223399180927805752e+00,-1.384748085255008476e+00,-1.868236729530169393e-01,2.959165170569567849e+00,4.369281965863372363e+00,-1.220165504047932892e+00,1.617402290075530047e+00,5.815718881738204615e+00,4.828299432327773921e+00 +-4.170539930389231209e+00,-7.684023046047836480e-01,-3.367635804336707395e+00,-1.180843434519597057e+00,-8.993294612879940697e-01,-7.435772416320318712e-02,1.629105066454298978e+00,4.767559151104483917e+00,-2.219961471007064091e+00,4.903561968792375936e-01,5.598205773850448708e+00,4.913656571866479084e+00 +-3.523686550790576799e+00,-3.056594155900486331e+00,-2.051846010921451136e+00,4.101145198083537835e-01,-3.884020341704730317e-01,1.523945307494584789e+00,3.781118856231072911e+00,5.366156690733308920e+00,-5.953217837094241460e+00,5.092017483868774619e+00,4.999319843892386039e+00,6.942958589801051517e+00 +-1.231878446629818269e+00,-8.628479855229758133e-01,-1.852650007446912106e-01,4.164919293050346472e-01,-1.818600026041566453e+00,-6.325278618971902356e-01,5.727470622257770927e+00,6.606226639230827757e+00,-5.685092000716643668e+00,8.653686802421905355e+00,5.247871113133442122e+00,4.355589457239776863e+00 +1.956579062862333629e-01,-1.001402484624956735e+00,-1.648018653455826765e+00,2.434358954106604633e-01,-2.561738949798213039e+00,-6.890056798907446822e-01,4.056488502898882409e+00,6.690025192103395746e+00,-2.331567658168778756e+00,5.552714407733484236e+00,6.007846107145587311e+00,2.146593937367936356e+00 +-1.337066816391991875e-01,-2.047520375519126468e+00,-3.749752336434909239e+00,-3.931332829248479488e-01,-1.077515842127684920e+00,1.542742312933534254e+00,2.580269691490353345e+00,5.901132988743353458e+00,-7.691250593657414925e-01,2.210681287616310886e+00,6.434215027836306611e+00,4.875300410899473746e+00 +9.668771311119851442e-01,-6.273495735455852929e-01,-3.464873707554443349e+00,3.764108608449281967e-01,-9.895920052136638612e-01,1.161514522980211739e+00,3.628069278143565946e+00,6.131490020509800409e+00,-2.807926682618690606e+00,3.781176319494426785e+00,5.644086292870081678e+00,6.295275496957128958e+00 +1.023428666895920713e+00,-1.490947232034514069e+00,-1.063370549377949059e+00,2.724388074533869997e-01,-4.805155746626946778e-01,-1.755875309538191154e+00,3.654881850994777803e+00,4.689417980765189675e+00,-5.528393825976275266e+00,4.667400875369982494e+00,5.661798326079645172e+00,3.049022038497731568e+00 +2.150110557047250737e+00,-1.621289848912258469e+00,-2.964810620807755148e-01,-1.087686635188899409e+00,-9.241544841718276615e-01,6.180224836607822736e-01,2.664532191692702057e+00,4.131871114110042598e+00,-5.334562974188926887e+00,4.024744383922982394e+00,6.436296956384975232e+00,3.522493084638647964e+00 +1.266245098542744696e+00,-8.409693056241445142e-01,-4.467070844934712959e-01,-9.450716491339775649e-01,-2.703589839154055818e-01,-1.247291591611538131e+00,2.352935829618759911e+00,5.294486498515911244e+00,-2.184654645284028973e+00,4.832681676656637393e+00,6.616047156565080023e+00,5.649768473177916306e+00 +1.256567595988527186e+00,-5.209123436247662386e-01,-3.554136627479215882e+00,9.851981865032902741e-01,6.066463566938561369e-01,-2.551671700953049182e+00,1.672367682222062335e+00,2.991517995066215185e+00,-1.891614166973339728e+00,5.547414844407583701e+00,7.085151694555714030e+00,4.583695315487106292e+00 +2.417146698983693831e+00,3.423420420221744420e-01,-5.468012133391138896e+00,1.912905303796538226e+00,6.560968323400628854e-01,1.772509328255130079e+00,1.402301657971260163e+00,3.194428186749342480e+00,-4.548483482978877390e+00,5.542356401725575310e+00,6.663883921111593445e+00,4.853820641199992458e+00 +1.999619757842334700e+00,7.041442580822797614e-01,-2.990899524647014918e+00,-1.416389906301699919e-01,1.065260057237635394e+00,2.783868292014194612e+00,2.188410837817223786e+00,5.161519878274964057e+00,-7.214884734592693860e+00,3.448410263284237054e+00,6.816941834764617347e+00,6.767420930176283989e+00 +9.646047438525601203e-01,3.112914907040450485e-01,-7.596712250334166638e-01,-1.123555366811338718e+00,-1.525906179172539012e+00,-4.163455596841435513e-01,3.793433139321964020e+00,5.691750360447885626e+00,-5.329084179349628414e+00,2.839667799187655994e+00,6.447140902238344573e+00,5.071253234787926445e+00 +1.035829306169633535e+00,-2.566617040964844776e-01,6.788594751020946561e-01,-1.970825217969614851e+00,-7.148301052070493711e-01,-2.998344115800775533e+00,5.006537963053346196e+00,6.376420985584982049e+00,-2.529233866513506790e+00,1.454425914995181479e+00,7.646398408348217046e+00,3.384971377637188361e+00 +-2.080360628734734263e-02,-8.295629174762977343e-01,-2.782322861236620426e+00,-1.588768468010897106e+00,3.621706258074112172e-01,-9.711881462604883275e-01,3.767405040453775111e+00,4.703163164051236578e+00,-1.541082078909195019e-01,3.066442966190603858e+00,7.223949483958030271e+00,5.153175615421303313e+00 +-2.176668615489226077e+00,-2.628618509971152317e-01,-4.108035577763894608e+00,1.697196899449041174e+00,-3.187822838173301143e+00,-2.520907834412116078e-01,4.623391059460301378e+00,4.388386902732331230e+00,-2.616420880557068784e+00,1.018395404878577715e+01,5.566905158542308385e+00,5.490643348955582148e+00 +-1.645649893157671961e+00,-1.107320912818145486e-01,-3.029372871602020290e+00,2.739496055782805417e+00,-4.118440239559833849e+00,1.035907301016749438e+00,4.832636701292732262e+00,3.721206062337678144e+00,-4.841557479246949569e+00,9.145626172885091165e+00,5.354959420757586130e+00,4.607999112388111662e+00 +7.534819207450915712e-03,-1.807902225159827014e-01,-1.471331302585488165e+00,-2.877547850274730923e-01,-2.540128763284053015e+00,1.359912408171636944e+00,4.065396168114132180e+00,3.073067398277013140e+00,-5.552206172695045794e+00,5.626049868871110249e-01,8.077022293538270503e+00,2.753384930472553282e+00 +1.471081049679962449e+00,-7.594261866225597846e-01,-3.180930202323744016e-01,-4.211102352125222659e+00,-1.921930323566371390e+00,-4.543019441167683858e-01,4.572059863224049003e+00,6.011934241154983205e+00,-1.318420469346104795e+00,-6.846078514769136092e-01,6.252954475747578122e+00,6.060362421801588795e+00 +1.581846486994021195e+00,-1.260619695530512008e+00,-1.641419606323505143e+00,-3.646624699638710609e+00,-2.492475649143024885e+00,-7.179682574043153576e-01,3.321180551913100132e+00,6.104450065015529781e+00,3.719103162558639042e-01,4.445272293410903686e+00,4.173886015269443917e+00,6.095660541184315662e+00 +8.681041898081029995e-01,-2.368645667974292213e+00,-2.154724203230645063e+00,6.095112830632625212e-01,-3.475142993412908332e+00,-1.507253315314915909e-01,4.119815713223559328e+00,3.784732117363433179e+00,-1.764107174036215753e-01,4.822307205518326256e+00,5.689716050834727312e+00,2.054433501081257329e+00 +7.464971289730815140e-01,-9.377553478592648428e-01,-2.369222972776465763e+00,3.080844885536041744e+00,-2.529406287482803162e+00,1.845371391610271861e+00,3.968941913572073155e+00,2.010025383505255725e+00,-2.710883466293171118e+00,5.545202534322686283e+00,6.088343999382616722e+00,4.926708257184033712e+00 +-2.586553280014266543e-01,2.427463824807717163e+00,-2.090201914853412557e+00,2.880203708208450841e+00,-1.997387761319864730e+00,-1.450964694687729151e-01,4.754551282526016109e+00,8.089492130796367420e-01,-1.601383943903980978e+00,5.737130497143407837e+00,4.782675577584496018e+00,3.677885129263262609e+00 +-2.248670046397965194e+00,1.597540861553059521e+00,-8.412007692607432752e-01,-6.086934482895658416e-01,-7.480078423641318697e-01,1.489591720044582956e+00,6.654717642939098177e+00,3.186448218260451437e+00,4.658021322860088631e-01,4.823697145528843322e+00,3.414984659017686663e+00,5.487437335735822153e+00 +-3.348281158520842737e+00,-5.568998104568737562e-01,-6.790211283644319584e-01,-2.212927024942085374e+00,-1.704558916373672073e+00,2.041808125015635689e+00,5.846991335580540294e+00,3.337831596232551767e+00,2.098744541113711559e+00,3.277236079611692610e+00,3.458622460117518838e+00,7.928515531651342485e+00 +-1.442897591944459768e+00,6.003522344310079362e-01,-1.966815026637589447e+00,1.775244020653421240e+00,-2.148144986929362954e+00,-2.434428890479605201e+00,5.420332938498821918e+00,3.619542836945243813e+00,-2.954857026603994186e-01,-8.673261466362269800e-03,4.306900508165536046e+00,4.791877210409132282e+00 +-1.155569605286546508e+00,1.618056367957397379e+00,-2.721818127545465149e+00,2.202103774385237411e+00,-1.438884608281588706e+00,-2.209300241018751887e+00,5.135802701613227939e+00,5.306944258591969721e+00,-3.018768166747916482e+00,2.699741853299243655e+00,4.617001162087944088e+00,2.222352491173781530e+00 +-3.488644218277279663e+00,-1.118599074445602914e+00,-3.376181105811175254e+00,9.934883595704468995e-02,-8.931507530256683758e-01,8.389966878750507728e-01,5.211812976787111751e+00,6.012687555812719964e+00,-1.814331686260396204e+00,5.796907755573260879e+00,5.797227449713707514e+00,3.538194632175998056e+00 +-4.525915842193184879e+00,-2.527108622493257961e+00,-9.006577877899080153e-01,-8.372490761748259125e-01,-6.829973961814596040e-01,-6.776843756425867671e-01,5.850405858604291964e+00,5.002963190238576274e+00,2.325373448708869972e+00,7.853608908550089751e+00,5.246662491251034233e+00,4.548401650003722096e+00 +-3.528879989993250366e+00,-4.378075977148361830e-01,-2.926237906261348609e-01,-1.590005961376358634e+00,-1.022521221361091692e+00,8.323101314925480665e-01,5.232798442089570123e+00,4.633711673012578913e+00,4.109426929386743588e+00,8.901357845062772611e+00,5.209590230851312675e+00,4.065213765574621441e+00 +-2.562622331885585858e+00,3.925845799236387101e-01,-1.507726935910974619e+00,-8.850671985609452896e-01,-1.397999139484211950e+00,-6.484968177871324180e-01,3.983304983396819043e+00,4.828507420812822915e+00,5.769515094244930253e-01,7.067279836372568624e+00,6.981173134628340549e+00,4.550353080264919470e+00 +-1.856378488901909929e+00,-9.512754879744240721e-01,-4.717032237780617088e+00,-9.504417158092401952e-01,-6.267080868992039866e-01,-1.558303820395119388e+00,3.427519950071115318e+00,5.866323724575988052e+00,-3.580441950275538687e+00,4.626256440073035492e+00,4.503333861719587716e+00,4.957952609674167732e+00 +-2.736969358397962626e+00,-1.946944243544922237e+00,-3.753120219952545078e+00,-6.556130942003135509e-03,-1.224376561236242056e+00,1.725091624855116246e-01,2.406053051552568434e+00,4.804445006333999402e+00,-2.561227109038436645e+00,3.115903428004852316e+00,3.301671559239126807e+00,5.966307568101433034e+00 +-2.561640507428150748e+00,-5.380962687630519437e-01,-2.159943664332669488e+00,1.762954755872925938e+00,-1.427884855214213600e+00,-1.638143791690184425e+00,2.398718774257984521e+00,2.981422967539768543e+00,3.296672324359814610e+00,3.678250983605063418e+00,3.692330793902033115e+00,3.753516855710442357e+00 +-9.913390773313958126e-01,-2.876758355812701340e-01,-1.429933999842839754e+00,1.642212480845887779e+00,-3.644403502179132115e-01,1.377236017855435035e+00,1.477832309500654695e+00,4.353594444037942601e+00,5.389545340331116208e+00,4.054115218922375696e+00,6.148688400590705427e+00,3.721102504340284334e+00 +-1.056769796014828788e+00,-2.885595533548593883e-01,-2.794503445044823398e+00,1.083090011598699220e+00,-1.380432962374760208e+00,2.497806290360156112e+00,4.167258891973620649e+00,5.486485952944832434e+00,2.519490343192760662e-01,3.409630610888273239e+00,6.497457287133940440e+00,4.337604040259845029e+00 +2.274903620720447606e-02,1.178709472965589811e+00,-2.191907922540886844e+00,1.147040859111712274e+00,-1.401092978881083306e+00,-3.073230208175671940e+00,3.143035241306364913e+00,6.164143814132094334e+00,-4.478989164556971048e+00,3.865238097566201070e+00,4.555747830634098605e+00,2.919483985102220736e+00 +-7.017977424499139971e-01,5.864426458347609117e-01,-1.052410741057273169e+00,-1.888349389452816274e+00,2.640406417979324072e-02,-1.251767083818635218e+00,1.900322526990273708e+00,4.288786027707171655e+00,-3.078458539960412743e+00,4.917959417157974578e+00,4.466967039398555883e+00,5.277507025041583866e+00 +-4.761575079868316518e-01,2.033879914173334136e+00,-2.119219470474186462e+00,-1.503623604112065859e+00,1.245419952932540264e+00,8.331834933385302566e-01,3.225788328670577521e+00,2.650018181237939974e+00,2.432707009371110729e+00,3.829198120567822716e+00,6.021729223149659305e+00,6.293117544191258794e+00 +-4.431170435912721306e-01,3.345382851260067625e+00,-3.650137045873923736e+00,-1.583532031681139873e+00,-1.326217744881488247e-01,9.462570124815141703e-01,4.987162622205646656e+00,4.128336989800555301e+00,4.831569541643758292e+00,3.211246100750840160e+00,5.343902502998335358e+00,4.456169118280133290e+00 +2.268017495856458066e-01,2.729099977591017634e+00,-4.479510528684834902e+00,-1.726598591179099307e-01,8.178885935778972271e-01,1.721393428966342398e+00,5.703450235584239358e+00,1.609590439570473652e+00,8.657061566026498234e-01,5.832052241539065207e+00,3.275055400053695998e+00,5.038320002771330408e+00 +6.307699118156784301e-02,3.615462745775235298e+00,-1.710251122774081978e+00,3.217555815846976586e+00,1.736861623118536535e+00,4.848628069717411115e-01,4.543319198418916294e+00,2.863637671601732659e+00,-2.504718404866137504e+00,8.080870330493329590e+00,3.499845759335292961e+00,6.471067310492218283e+00 diff --git a/statsmodels/tsa/tests/results/yhat_css_c.csv b/statsmodels/tsa/tests/results/yhat_css_c.csv new file mode 100644 index 0000000..1ca0ce3 --- /dev/null +++ b/statsmodels/tsa/tests/results/yhat_css_c.csv @@ -0,0 +1,251 @@ +yhat1,yhat2,yhat3,yhat4,yhat5,yhat6 +NA,NA,NA,NA,NA,4.5198698709 +4.4638884169,6.1052290397,NA,NA,NA,4.6211568997 +4.5297061513,6.7852606117,NA,4.4265316823,NA,4.1251871909 +3.9602765237,4.8426663308,NA,4.3775467632,NA,4.6638495898 +4.5815687774,6.9711679964,3.9046740346,4.8834587090,NA,5.0124149912 +5.0087926543,2.5291015649,5.3456489214,4.2063953585,4.1444537981,3.8226462578 +6.1517552599,5.2296816616,7.5333795817,4.1516376855,5.1136867553,4.7234933012 +5.3130070303,5.7254314486,5.3167426361,3.8287269439,3.5135389778,3.6902876549 +6.7477832649,4.9924192296,3.9257134968,3.0179435611,3.8668566817,4.0913856295 +8.2922458342,2.5999572555,5.8473000820,6.8388231003,4.7804624056,3.8892081590 +5.3999966722,4.3891708623,8.0042422563,7.4647048367,6.0944537362,3.8011029986 +4.9268631863,5.1791461674,5.5593070276,4.4393936180,5.0707636579,5.0474233636 +4.5831258557,3.5554969611,3.9421793689,2.8123626975,4.0280476624,5.1265942735 +3.2974027806,3.8514583889,6.9117810486,2.8096822522,6.9558225063,5.3075943095 +3.6143859021,4.7636977351,7.1271538099,5.0131347637,6.5329706146,4.0927625914 +4.0811339123,5.7051578160,6.2634871532,4.6028275842,4.1489548157,5.4638696555 +3.5826948796,2.8155110640,3.7818169919,7.6988875378,4.6551991126,4.4544693811 +4.7519777500,4.0443288475,4.0557183372,1.9904507513,5.3909621140,4.6969314369 +3.8119226985,6.7892964937,6.2430866800,2.8186465122,4.1748386605,2.9013951798 +2.6485867993,4.0992356258,4.1948686798,3.3126974622,4.9763243887,4.9615908568 +2.8545761967,4.0701375342,3.5589623438,5.0709658525,4.0583583931,5.3007621781 +3.3164932439,5.3681389095,5.5775949891,5.3430809377,5.4945447666,4.7940105785 +4.8488082527,5.5315894882,6.3125616525,8.3333107799,5.0250304075,4.7731983448 +4.3091158506,4.4440913423,3.7146343806,3.8829231475,6.0292240890,4.6581351742 +4.4200202139,4.3730100072,4.3955931234,3.2923427245,4.8217372570,3.8809506614 +4.7345360789,5.2713470756,7.0079625475,4.8821634754,4.2210828280,4.0880291115 +4.0419148539,4.9744459007,6.1241948444,2.2006538002,5.3875145198,5.7264115664 +4.8384415774,3.5984652697,5.8149822581,4.5375867916,3.7860419156,3.7335864769 +4.5129904599,4.9882252271,5.3755538528,7.8777837033,3.3803801788,4.2256312404 +4.7838959538,4.9003150961,4.9989915022,2.4072556732,2.8664933593,5.0096231246 +4.1643911367,3.0255687405,6.5776441045,1.7489561300,4.8926298803,4.0165061687 +7.4924378089,5.4214192593,6.2790219486,4.5955144385,4.1458239067,3.7428759516 +3.7295197453,3.4640190275,6.2192978255,6.8093249192,3.5592524003,4.3497278608 +3.8181297573,1.4159053086,3.7723531357,4.3783584993,4.2009138250,4.6808925884 +3.4154467063,5.0984168421,3.9899186601,5.3115286162,5.0126588188,5.0250858899 +3.9462808187,5.0456900794,5.5941714349,3.9630406522,3.7413790714,4.7498749254 +5.8851230181,3.3809600571,4.4765611391,4.5548423110,5.1610276497,4.1413705286 +6.3521527847,3.3662029598,3.7592101868,5.3989171739,4.3641463290,4.3224903938 +5.1785657669,6.2509846494,3.4857108712,5.4454916696,3.7640425647,5.4391841855 +5.5836779952,2.8961246530,1.8447033566,4.2683544362,3.7087935659,3.7572713237 +6.3245422595,3.8962117268,1.6017833114,4.8790813722,4.5128795972,4.7036273666 +6.4089523567,4.7347946571,4.0948276115,3.5244540223,3.5250952694,2.3397637683 +5.8094546575,4.0753399655,5.2303496492,4.6219786287,3.7529698203,5.7218102567 +5.5544730560,3.6158399596,1.7738594178,3.7524958958,4.0147377845,6.0583143881 +5.0621714358,4.0380565651,-0.3309091132,2.3867566591,5.1894733406,4.8298303241 +5.0751426479,3.2785899719,2.4787297640,5.8212963342,3.8714567839,4.8726493248 +5.2656142924,4.8364457905,5.3496653262,5.9280810035,3.9809821770,5.2369398137 +4.8720291624,5.3507432399,4.0178119686,4.8600780785,4.6198829687,4.4690401548 +5.6421725096,3.8333221355,0.7001785130,4.3552485251,5.1755645482,5.1525751771 +4.8382764584,5.0790928546,0.7208470043,4.6277318103,4.4160767110,4.1213137144 +5.9445523723,4.6147273969,0.8570459633,4.5958633347,5.1597166801,4.7339244637 +7.2103037091,6.3778078385,2.7639919768,6.3396244403,4.4422622251,4.3242121892 +7.8702121119,6.7886553362,4.1263234991,5.5245732507,3.2405500752,4.4965352046 +7.2963798640,4.1763973546,-0.1600861333,4.0890517375,4.5696055109,5.5517151492 +5.6643537150,4.9947050692,-1.5636886008,3.3106643806,3.3086322266,4.4073316087 +6.0072995689,6.2697736177,2.0691562566,3.1343476764,3.3633478655,4.6013838031 +5.5883279888,6.2411856337,4.5057673908,4.7705277987,3.7994372166,5.3165146638 +3.5984097923,5.8089012720,2.6109154113,5.7185371092,3.0690793464,4.4637305813 +5.4487936598,4.5961869311,0.0064327638,4.1807414812,2.8500525448,3.9787323732 +6.9968546928,6.5252777865,-0.4764222179,3.6677213161,2.1852316241,4.2547421291 +7.0114754628,5.7094612450,1.7845275654,2.5034188732,1.3121415371,5.6328822884 +5.9339392306,3.2836794624,4.1247128083,3.7123145926,2.5537901672,4.3513767142 +6.4807493706,5.6558518279,3.2342286446,4.8383462516,2.5360917059,4.1227980926 +6.9519977802,5.3898912721,-2.3024721229,5.6595841763,1.2579562279,4.0486837970 +3.9030199906,4.9570071818,-2.4650094984,4.2619763539,1.8050783736,4.2342017377 +2.3248874185,4.9400224574,2.1495148392,5.8085252355,2.4655119853,4.6540547509 +1.9750115146,3.0841037973,4.2385286818,5.8588795773,3.0148243602,5.4813495494 +3.3943728839,6.7016683181,2.0816194017,4.6269377888,2.8074476747,4.8566055432 +3.6733940551,4.3479350326,-1.3101308002,3.8162616311,3.4961066710,4.1282569870 +4.0174831959,5.1407434243,-2.8479055137,2.9947532051,4.7379516330,4.4547545954 +4.0954754862,6.3427448724,3.0142529383,3.0381759596,4.2548051396,4.2570106365 +5.2251587382,4.9044466182,6.4930344488,6.7809907161,3.9179629668,3.7780146236 +5.5217677687,4.7586507729,2.5035570248,4.1538156632,4.5792511266,5.0111626200 +4.3503372187,6.5952641790,-2.4684776635,3.3687949253,3.7521170007,4.4560080145 +4.9987038746,5.1939214668,-3.0518680185,4.4374920121,2.9309385860,4.4924402772 +4.6736175269,5.9933181904,4.0452921481,4.3424623272,3.2074282680,5.1890942062 +6.1881400549,5.2453461141,5.6750143227,5.2343371038,3.2386325515,4.3534665763 +7.3067702328,3.8667857735,-0.3460302991,4.2493486000,3.4864389949,3.5833518708 +5.3037492146,5.4171061595,-3.5553425834,4.1235266336,4.0517537979,4.6839393287 +5.6994429328,4.5882530917,-1.6846722588,5.1663537388,2.8899327352,5.6058611557 +6.8547919668,3.9859339968,2.8231063267,5.1137828918,4.7638057305,4.2837268432 +5.6569207352,2.7358914572,3.3707207994,4.4173417738,3.3064925980,3.2215657645 +6.2958708598,5.6176912651,0.4629220313,5.9322680266,3.9879829676,4.7626663864 +6.0620743546,2.4452770194,-4.7043791637,3.1676141331,3.6032370375,4.1495746353 +6.5078461348,3.4834942777,-2.6446892777,3.1159814926,4.3332082542,4.7243819775 +7.3383068539,3.6723374200,3.2925974796,5.5489759841,3.7407669274,4.7336361884 +7.9927699015,4.2522575144,2.3256693362,2.5933305753,4.4734232274,5.1525533549 +6.7896622405,4.3052292920,-2.0511251729,3.9215920985,3.4225207354,4.0436040705 +6.2254744061,3.8792920460,-3.9651657804,4.3678594915,2.7705395432,4.9189881378 +5.2991402023,4.1373324835,-0.2809433160,5.0590322180,4.0729227673,3.1068188589 +4.0371526789,3.3087267431,3.3029965780,4.5882258663,3.6303529472,5.7101232618 +4.6857479661,5.1277636884,2.2170528046,5.3574940179,3.1143515272,4.2943312443 +4.9494097867,4.3261189528,-1.1518836526,5.2898759980,4.2018390192,4.4557935574 +3.6585942128,4.8635308638,-5.4280439441,5.3719291031,3.4421694623,3.4460924702 +5.2904395308,4.6489911648,-1.5073158276,5.8516581743,3.7574631749,4.3441253084 +2.9697758269,4.0292590024,3.3069617074,5.6522700842,3.8871624665,3.5594829778 +1.7522080194,5.6072127302,0.1757622613,5.4779015510,3.0111699715,5.3282826755 +2.4938822613,4.5640435871,-4.7751293822,1.1291066168,3.4009160161,4.0145041518 +4.1878497046,4.5429621528,-4.5347999590,4.7148616687,3.1039162563,5.0078559221 +5.3140893399,5.6251086656,-1.8317503887,6.2908115240,2.4131177372,3.2318799498 +7.5350087462,5.2015143159,0.9372826650,4.1568960128,3.1854889066,5.3716021119 +6.8262483154,5.6689126374,0.0146211331,4.6963606142,3.5001433245,3.7303193449 +6.8573416055,4.8671763720,-3.4111463497,3.9011029601,3.4300094727,4.9693083958 +6.0279652120,6.2777169279,-3.8003081984,7.4182878407,2.2243651473,3.5903545346 +1.6716265466,5.1000784402,-0.6927696998,3.2231669946,2.1983432384,5.8189271424 +0.9914587848,5.0351168505,0.6855098694,4.6875513810,3.4251257270,3.6519725959 +1.5221600278,5.1746494896,-1.9229072754,4.2917136471,1.9194385813,3.3653662051 +1.5591184418,4.4249205449,-1.6633146701,5.2171304811,0.8728013403,5.7342486385 +3.7592394981,4.9643119249,-3.3300485422,4.6908942025,2.3610467000,4.8212616672 +3.1323509761,4.4988392307,-3.7141359818,5.0657567877,3.5570215392,4.7018365468 +4.7617577308,3.9297503324,-2.6594865018,4.2778420992,2.9969991039,4.1462208565 +4.2084452695,3.1590718591,-1.2362535341,5.4632264009,2.8331799936,6.0049940707 +5.6486889301,4.0241616798,-1.8167711434,4.5672170597,4.9604478849,2.6239211785 +7.2095713578,4.3783491649,-4.5598306554,4.3662570951,5.3153254374,4.9331155056 +7.8781761249,5.1209739656,-4.6645970271,6.4912879388,5.6894155162,4.5121124658 +7.8820133743,3.6356021982,-3.9021496936,4.5939571309,4.6735707286,4.5294319191 +6.6683956961,2.9607675564,-1.2896297622,3.0084654659,6.8249987512,5.4073093021 +4.4983464234,5.1583332802,-3.4796258634,5.3459830559,7.2172058731,4.1593954194 +6.1382894365,6.4809233804,-4.6144189302,4.9404297054,6.6740514457,3.9389181123 +6.5288656135,4.2992227761,-5.0732570322,4.9436950977,6.3839564942,5.3580532430 +4.4513022567,4.2418199226,-3.5669920872,3.0150079174,5.8337849644,2.8818596610 +5.4885087462,6.0173651580,-1.9820119371,1.8650219395,6.6802071130,5.2356499834 +4.8059523093,5.5376830183,-2.6720766692,4.2509465653,7.0503104534,3.9190462329 +5.7781000088,4.8737957060,-5.1825143205,4.7210633777,5.4603243157,3.7325620990 +5.7221531085,5.4583204388,-5.1675813836,4.4302128408,6.1801871032,5.4770822070 +3.8919108920,5.1202684339,-2.3251155105,4.2459149813,7.6624333629,3.5643473220 +4.6776538878,4.6244585137,-3.7917497279,3.5947416904,6.3502214048,4.8870480155 +5.1831982091,5.3664613288,-3.3444600958,5.8032711021,4.5173404092,5.4004798139 +5.7278600439,6.6208023990,-4.0986848745,7.5704327440,5.8870655719,4.0600557532 +3.5253727130,4.0346348995,-5.0234140643,2.1670884031,4.7023144410,4.5340477982 +4.8180851356,3.5589645750,-3.6347588898,5.3538293229,5.1338742490,4.9360809860 +4.1043005150,5.9129950226,-2.6345075769,2.5318390662,4.9813101302,4.5461376088 +4.1268400811,6.7705453658,-4.3303882392,3.0322000473,5.3912248579,5.0632558666 +5.4737929611,5.3185156766,-4.6324485253,5.1735487417,4.8403451305,6.1070450990 +4.4621316700,5.9234664501,-4.1539676798,7.8078646380,4.4247155415,3.7916699721 +6.1337619431,4.4160090659,-4.0399352271,5.2801445768,5.4956815251,5.6202192820 +8.1826256935,6.9888528260,-4.1590695271,7.0067535895,5.9267554499,5.0903084987 +6.1586365894,4.2039810824,-3.8423847301,4.0392736604,5.7813576514,5.6114408927 +5.5823155836,5.4040340282,-1.4096184055,2.3563694763,5.7614110098,5.0299535962 +4.6528118788,4.5668239341,-4.0615490484,4.3462819021,7.0463654044,2.7776453527 +4.3966807447,4.2438759430,-5.8134791298,3.3672052579,7.3518207998,5.0329259510 +4.6520074631,5.7835474703,-3.7217235877,6.1903149944,4.8598823358,4.3257190445 +5.5497730718,5.3505822780,-1.4858526455,5.9587839524,6.2194084275,4.1180792747 +4.9757543957,3.9376386374,-1.1832255645,3.3224267009,5.5069060639,5.3862964375 +6.1443223807,5.1874464038,-5.5213285493,2.2818808748,4.8693238464,3.0851950877 +5.5571602387,5.5188365428,-6.1219397092,4.7729003917,5.4280432021,4.8722541775 +5.2751633388,4.8569112336,-2.3694537752,3.4162983553,4.4186571596,5.6245126340 +5.2208144891,4.4744038589,-1.5306320121,3.5698742275,4.5863266700,3.5456765263 +6.2183796904,6.4149949432,-1.9224599106,3.8747177476,5.6739357835,5.3537170378 +6.2100907194,4.7109949979,-5.3529424286,6.6973944444,3.7938140621,3.6406172841 +5.8653074433,5.3958413317,-5.1516520010,5.6621955256,3.5442246579,5.4976113805 +5.1347509795,4.3577590422,-1.8710110652,2.9452665645,4.3800338167,5.1322600846 +5.0752917232,4.7757921220,-1.8970893204,4.1987109363,5.4463713313,3.2181939515 +5.3074493822,6.0104737801,-3.1954011697,3.1542540281,4.7857835811,5.3335238545 +6.7982344383,3.6167996115,-6.2351132988,4.1532736192,3.4493159409,5.0979655936 +6.1007547525,5.5684885266,-4.0308711123,3.1105482920,5.9975371173,3.2308639971 +4.8798218511,5.5518380365,-2.2523895735,4.2356495254,5.3309199498,4.5570504515 +4.6496104914,3.7350710567,-2.7022507870,3.5019338461,3.9507391318,3.4599553847 +4.4517917468,5.3056306470,-4.3255252110,4.4650720513,5.3372064805,4.4822156945 +4.8563320846,3.9262668124,-5.7766685392,4.7583898219,4.7417721381,4.2570802523 +4.1770983444,5.1832166696,-4.5832741721,5.4096971623,4.7266506802,3.1789831189 +3.6222203453,4.6036676841,-2.4337467185,7.3140851132,4.1693131591,4.6293282967 +1.4004380114,4.5009664530,-2.4046223847,4.8961999537,4.9468523622,5.3990529799 +4.0704794029,5.5144219975,-5.0794149347,2.5858845728,5.8594373165,4.0824320541 +3.1721102090,4.8592996019,-5.6178215720,2.0680321905,4.8966120608,4.1358520897 +4.2434835995,4.0183344192,-5.3268538820,5.3519107253,5.0347492203,4.3641697381 +4.8701853895,4.3761634667,-2.7137159545,5.3774523904,6.3113146507,5.8071965867 +3.4994554045,5.0228750450,-2.4808114972,6.1396703466,6.0840152969,4.7710346498 +3.8786053236,4.7883288667,-3.6016892996,2.3928157505,4.0201077952,3.9898570548 +4.5630530010,5.6672689474,-5.0011218537,5.4236986268,5.0130087377,4.1060744507 +6.2113225757,4.6748752767,-3.8640706550,6.1431451428,5.1743270686,5.1778216914 +6.6692118943,4.4311680667,-2.7033089077,6.6536703972,3.0894965498,3.8105937973 +3.9308673799,4.8778622775,-1.9228806263,3.6277714253,3.8256500137,5.5295653135 +3.3634165841,5.6644804722,-3.0953105459,2.4579671623,2.9421506072,4.2604743892 +3.1958053778,4.6976424932,-4.7072746661,2.8296201063,3.9624979897,3.7593305269 +5.9244743072,5.1905919565,-3.5709740582,2.8260052618,4.2069404026,4.5376701457 +4.2779557933,4.2040167629,-3.0744972733,5.3605159031,4.6831876215,5.2621417844 +6.8681023885,4.8901946696,-2.9128602937,3.9992282454,4.7944928103,4.3519018189 +6.5837331673,4.0281935383,-4.0836039794,4.4739279293,5.4153109941,4.1439372899 +6.0292631416,4.7783024752,-4.9669891849,5.0567048457,4.6080021079,4.5146014426 +5.0367256872,5.2930641793,-4.5019252091,4.4337022236,4.4697130635,4.3610427677 +6.8263159250,4.7426945447,-5.0895143755,4.7106351417,4.3388652333,5.1749284827 +5.7603050244,5.0118214443,-4.4806807063,2.3050466946,4.2769071858,4.1675962072 +6.2026805110,5.1673278920,-4.8644731473,4.0905789184,4.3852199523,4.9616679374 +5.5237174157,4.9710731469,-6.0106977192,3.0116210107,3.6871847536,5.2787015860 +4.2758843153,3.9164045196,-6.0734228740,5.9235136769,5.0798637339,3.9743686422 +2.5369845297,5.4988485888,-4.9773113332,6.0304491799,5.5177771678,4.6120698610 +3.3392740208,5.1936911941,-3.0813416292,5.6657253200,5.1521729059,4.6296386231 +3.1879718533,4.2005475697,-4.4380844148,3.7260403165,5.1415059919,4.7887884304 +2.2849881368,4.9384576347,-6.8818248938,3.4398684833,4.3474782609,4.9472142313 +0.8535160849,5.6069253847,-6.0023719916,5.3775355859,3.8064616224,4.8626766636 +1.9080333212,4.1744887227,-2.3739976489,5.0095362497,5.0716612840,5.9565747533 +1.0837459085,4.3668474174,-3.1664279437,4.8722974728,4.2145886740,3.6618148661 +2.5056549727,5.5795980097,-4.8542318280,5.4102209783,4.0324964460,4.5218702767 +4.6712151703,4.5614302821,-7.3467098392,4.2213375807,5.6743201447,6.0469404861 +6.6306337091,4.3109607759,-4.8652348504,4.1909724366,5.8041211082,5.1706036813 +7.9164337718,3.7818252069,-2.7390036745,3.7876123461,4.9596898712,4.2296774551 +6.7172003722,3.9491093518,-3.4540741432,2.9887437944,5.2489356091,3.4094143409 +7.6208443066,3.8188588721,-5.9936608927,4.6720717907,5.6821480389,5.2098594179 +6.5105423366,3.9681655724,-6.9229296623,5.3981223958,6.1919212638,4.6647749576 +6.5478990629,4.5768661905,-6.5189609039,5.2910516220,5.0852177794,3.9039232504 +5.2293510860,4.3847226884,-4.5795181516,4.2639626862,5.0439223630,4.0833813308 +5.5564224554,4.3451466460,-2.8062836070,3.3259752138,6.4134744817,3.4878239370 +7.0475211837,5.0444235485,-4.8438731418,6.5127741892,4.4713216462,5.0718235554 +7.2881402547,3.8180075386,-8.1578345202,4.3728348528,4.4244535088,4.7297884643 +5.3221078271,6.2513424156,-7.2556017397,6.2144922083,5.2565821705,5.6676353196 +4.9981362668,7.1081153476,-4.4354767807,3.9521204829,3.2820556433,4.4417755000 +4.2831080183,3.7022657762,-2.5418089632,2.8917207020,3.4978677848,5.1013428478 +3.0552375400,5.8946953086,-3.4442307260,2.0969021300,5.8098824727,4.4403908890 +2.1270561991,4.7211261541,-6.4820535781,3.2136369467,4.1314865274,4.7924565237 +4.8225057666,6.0442809309,-6.6168820083,7.6229097186,4.6442638694,4.6487312432 +5.8127625970,5.6822854741,-2.8887885505,6.2977486770,5.8735823845,3.0681211595 +3.6094334981,5.5870613178,-0.1792135789,3.0798287191,5.6379205941,4.5231436582 +2.9234625310,5.0993039588,-3.0556829420,2.8002418764,5.6690875918,5.1878242843 +4.3317018246,5.9641921933,-5.5986729654,5.4098192649,5.3105563152,4.5160186201 +3.7838581548,4.0154935248,-5.0696097252,4.1840660668,5.8342157602,3.5058732482 +2.9426913722,5.5587113982,-2.4969449963,4.5826437925,6.2005776222,5.4730886684 +2.9519135036,5.1178469883,-0.7831752419,5.0610271262,5.8184666048,4.5448713585 +2.2159148334,2.9548841765,-3.8477364591,5.0544530445,6.4571816404,4.4133313076 +2.2267517510,5.3552900082,-6.6140465829,4.6246209946,6.2567097660,4.5838934328 +3.0680874090,4.4350775497,-5.6067655721,2.9090098796,6.5324346520,4.6766381815 +4.4503908551,5.1715116859,-2.2682729640,4.3937561009,6.1997104492,3.1859496768 +5.1894980166,5.1827655577,-2.0150154961,2.6425511269,7.0566041540,4.3046483698 +3.5536435937,3.8130431062,-3.0368611442,6.5537333188,6.4027768011,4.5627609486 +5.1444999320,5.5282037889,-5.2543582364,9.3567272718,5.4516597904,4.1582800637 +4.7181517653,3.5492474653,-4.8443595036,3.5644066918,6.0723878609,4.0101118231 +4.0672738068,4.8203942797,-2.5378747361,-0.2594726791,7.4474227918,3.9743049730 +4.8789349118,6.1361126692,0.0913687520,3.9186330670,4.8215436416,5.7558267451 +3.2007308395,4.1399070184,-1.4587139201,6.6617384155,4.7100930061,3.2379713165 +4.7472261902,4.0598184017,-3.8524363734,4.3478923167,6.8004487520,4.0602682829 +3.9515925072,3.1004381779,-2.9467869144,6.5483653678,5.1492093631,5.4615699189 +5.1226500263,3.1095252346,0.0691045915,4.2368190326,4.1679421433,3.5978215591 +6.6874733076,5.0555115377,1.4396384083,4.9007600215,4.4022319262,6.0572601646 +5.1776276337,2.4455360558,-0.0486792498,2.9499603431,4.3588858377,3.6751456967 +5.3368869314,4.8310856228,-2.2719973052,2.4145185557,4.2094830158,3.5343072265 +4.9655427044,4.1129324513,-2.7154102209,6.8036917100,4.0495571603,3.5312471220 +5.1993920458,5.2589139487,1.2311145530,5.9528480014,5.3123759769,5.3707439584 +5.7906888495,3.8411797117,3.0722678979,7.4633085632,4.8521186569,4.3489175301 +4.8840628002,5.4250885096,0.8958901414,5.4882276172,5.2262873444,4.9948964387 +3.9110094384,4.6213749157,-2.8569291544,3.9827068139,6.7093562236,4.6135811205 +3.7115185727,6.2419458425,-2.5396579772,2.5831590980,3.9459099203,4.8774097012 +2.6942180584,3.7090370313,1.8791394460,2.9263030605,4.3077772308,4.5173039776 +3.1029241656,4.4819446457,4.9096976273,4.0064962085,4.8284236585,3.6602259575 +1.9447738429,5.1892192459,1.2721852547,3.9225115485,5.2712064250,5.0267310037 +5.3126000256,4.8691533974,-4.4518172763,3.7508403707,4.9994157305,4.3409641274 +2.8314734221,5.5025951378,-2.6098588910,4.7612737762,4.3675590171,4.6783394698 +2.5104927484,3.2045710480,2.6885240480,4.9911923086,5.5783045790,5.5615336318 +4.0680046393,4.3981856321,4.0225754449,3.6711501086,5.9593579190,4.2800024682 +5.3252439683,4.9210880785,0.6210530611,4.5269191631,4.3651887002,4.0818407180 +5.5810416420,1.7076284346,-3.6927423554,6.3958539204,3.7084175682,4.5994102457 diff --git a/statsmodels/tsa/tests/results/yhat_css_nc.csv b/statsmodels/tsa/tests/results/yhat_css_nc.csv new file mode 100644 index 0000000..e5684b2 --- /dev/null +++ b/statsmodels/tsa/tests/results/yhat_css_nc.csv @@ -0,0 +1,251 @@ +yhat1,yhat2,yhat3,yhat4,yhat5,yhat6 +NA,NA,NA,NA,NA,0.0000000000 +-0.1620293012,1.0763252346,NA,NA,NA,0.1078831621 +0.3601405207,0.1766955039,NA,-0.0165592677,NA,-0.3289649557 +-0.3276410220,-0.8765652166,NA,0.5607487823,NA,-0.4129752042 +-0.8830498027,0.3619650853,-0.4399551803,0.5743380313,NA,0.3040087976 +1.6623838847,-0.6136962904,-0.0379242817,0.3887314691,-0.6720426779,-0.5677674192 +2.8010906652,-1.0090108368,-2.5559025850,-2.1606884569,-0.4565104793,0.4427811692 +2.1873676889,-1.5045283063,-3.3103014448,0.9254180040,-0.9553202931,-0.6441671345 +1.9765028673,-0.5908049198,-1.3263515162,-1.0742758755,-1.1016875679,-0.5134488407 +2.3727887409,-2.5727537198,1.3155327240,-1.5517685481,1.2591223517,-0.1658043749 +3.2186998744,0.0255050356,-1.5521338895,0.2304978781,0.4388472839,-0.3511000927 +3.5581913022,-2.4090822893,-4.4627549060,0.0149018188,0.6318442131,0.1184528446 +1.1218687467,-0.0860811831,-3.5214536569,0.0511823774,0.3779683787,-1.0290729403 +1.2240538679,-1.2128602891,0.9753153044,1.1698629310,0.7963087337,-0.2702123461 +1.1533855064,1.3471252145,1.3932693656,1.4755850066,1.0328374908,-0.6211128092 +2.4581189494,-1.3912883937,-3.8630151452,-0.3488054131,0.5202204427,0.3211239801 +2.8307041762,-0.9586092772,-5.2191970998,-0.1485236932,-0.8277286453,0.7067562946 +-0.2418064002,0.2682323272,-1.1621312983,-1.1731786861,0.7586577819,0.8247148211 +-0.5350911141,0.5088429408,2.0239646853,2.8126715661,1.8142975337,-1.4212400422 +1.5417494305,-0.8333983591,0.0305314248,-1.8720807250,-0.3597109530,0.4069194511 +0.5829735052,0.0670012529,-3.7576893588,-2.6635149196,-0.0632116734,0.3451164985 +-0.1574127394,0.2554475805,-4.9540547603,-1.7914049618,1.1250694242,-0.1450909033 +0.4481067336,-0.3963546295,-3.4848837402,0.9165578791,0.4616456682,-0.6334964678 +4.1314752579,-2.5882646852,1.0871729791,5.9843069077,-0.1880317125,0.3998983267 +1.7808125691,0.2654288652,0.0731513281,1.8332157601,0.3383632385,0.8227803569 +0.7427496991,-0.2537233052,-4.1264500027,-2.8013735686,0.9106291336,-1.6586259800 +0.6927208117,-1.5241304727,-7.9731848527,-4.2338549550,-0.7507761084,0.2552804133 +0.8740479843,-2.2225408928,-2.9637270787,-1.0611665109,0.7866090908,-0.1093100406 +1.2593581157,-1.6871815581,3.7484267162,2.5904379660,1.5242830356,-0.1318389777 +0.9296387917,-1.0508499053,0.8385821650,-0.8525125442,-0.0251047215,0.0037358716 +2.2817462009,-1.8223182006,-6.5379120128,-0.5448796942,0.4567307630,0.9630744311 +0.8186423439,-1.4246039012,-5.9449925044,0.9950262294,1.2267590596,-1.5554781929 +-0.3136681181,-1.5516045764,-0.4412878089,0.3247088341,0.7105911772,-0.4856191947 +-3.0056414674,-0.9891890496,2.1376014779,-1.9365444196,-1.0880596271,0.2107868423 +-4.3530137678,-1.8512980258,-0.7300630138,-1.5778465471,-0.3487805856,-0.1652635750 +-4.2367761222,0.1702787396,-5.3002550580,2.2435651676,0.9033292788,-0.1850124752 +-2.5011451301,-1.9234430885,-5.2140509172,-1.9294447931,1.2366701326,-0.2174429256 +-3.3916655158,-3.4628061387,0.0626358505,-0.7876455397,-0.8785360318,0.6121910205 +-2.3427641943,0.7046040012,2.2157268862,-0.5783203152,0.8117945418,0.6947694022 +-3.0339991557,-2.0997716110,-1.6883993641,0.6295430828,0.6673256488,-1.4092007089 +-1.8325533464,-1.2835063085,-5.1339411876,2.1828615804,-0.0561461477,-0.8983844908 +-4.1786055497,-1.5244177091,-4.6308457609,0.3813580643,-1.1524503744,-0.6001159502 +-3.2640875930,-0.6398291785,-0.7891696911,-1.1629215322,-1.5173216628,-0.7124449033 +-4.2914662232,-1.9841588730,0.3868676290,-0.2204710296,-1.2806920099,-0.3883978653 +-4.2865799433,0.0034622129,-3.1597092800,1.8670492859,-2.0223589653,-1.2077703800 +-4.7401216386,-0.4352705871,-5.9864916481,-0.8348981801,-1.7224422396,1.2554745655 +-3.1718113831,-0.9512944005,-4.4899865859,-2.3132324498,-1.9040690424,-1.5403366655 +-1.9639862990,1.0970311937,-0.8131942917,0.2017228525,-2.5357307023,0.5312187777 +-2.3620362939,1.1810594179,-0.3732331565,-0.3734232754,-2.5025606470,0.3276001684 +-1.3517555860,-0.3707603411,-3.2225082098,0.6599748835,-2.6339908342,-0.7835475414 +0.5469707264,1.6123856105,-6.1084951970,2.7116864438,-2.3315544004,-2.2130916981 +0.4492908626,2.8893302242,-3.1180365590,-0.6502607102,-2.8469139730,-0.7512854763 +0.6404727277,-0.6563373691,-0.5296084743,-0.5094939424,-2.0311413374,-1.1455262079 +0.4515656834,0.8142799595,-1.9844884043,1.6763493211,-1.7872457808,1.3174683496 +1.5250715453,0.8930116711,-2.8018485546,-0.0345620834,-1.9507134808,-1.0708439496 +2.6613210917,0.7981939109,-4.8624432252,0.4115656065,-2.5263285916,-1.4170313258 +0.8805244364,0.2211299364,-3.1532671589,-0.2594344326,-0.8702567836,0.3855312576 +-1.1097821097,1.3362547905,-1.6939296989,-3.6089450603,-1.7980382791,1.3172670303 +-0.7650130235,-2.2645296027,0.5031617922,-0.7579844828,-2.2753279475,1.2766928632 +0.3003388375,-0.6195675809,-2.7500533439,2.4227934874,-0.6621613838,1.1429327287 +-0.5736725545,-0.1484595966,-4.4775696257,2.8828489462,-1.3451158049,-1.0832131452 +0.6174312542,0.4202360093,-2.1711933008,-0.4279113596,-1.1913630750,-0.8397415767 +0.4045580174,0.0451151681,1.6356140658,-0.6973859621,-0.3336257922,1.7392824534 +0.3804509658,-0.8393860763,2.3013898559,-1.5754205024,-1.2556660937,-0.6936069274 +1.0636189873,0.4477986596,-1.2130353833,-2.7506288418,-0.3583804491,1.1254720390 +1.7769900945,0.6508200812,-2.5931608334,1.0157749627,-1.9421917636,-1.2236786196 +0.1855065648,-0.0751668116,1.7755986541,2.3688389712,-0.5996530926,1.1122804175 +0.1580506446,0.8216008907,3.2396156086,0.7295526170,-0.4433040213,-1.4967378571 +-2.6049068611,0.0063699766,2.0221656222,-0.3223727173,-0.8717089236,0.5465831457 +-2.6240623901,2.4070651677,-0.7803549453,-0.9112893136,-1.0863430337,0.3194176692 +-3.4104828225,1.7247616209,-2.1914751667,-0.1426235550,-0.7835969602,0.0040361941 +-4.0714248154,0.2918316934,0.8317741206,-1.6667592098,-0.6835966612,-0.0325900640 +-1.7593571912,2.0587796319,2.4876492803,0.3592888964,0.7055267207,1.3189199760 +-0.5235314445,3.7422360239,0.1964784503,0.7641348737,-1.5494419361,0.5661271110 +0.4103929050,1.2036451343,-2.3847533732,1.2973095141,-0.9624355362,-0.5832838351 +1.4602387816,0.6019643512,-1.6377259360,1.0988426026,0.8836954131,0.9042071051 +0.4745220846,2.2604216657,1.2874095002,-0.5797869711,-0.5210696036,-0.3133676321 +-0.3440908381,2.6031059258,0.4293511753,-4.2464043315,-1.1583379667,0.2310597817 +-1.3277407832,-0.8343985667,-1.1861631484,-1.2114487883,0.6772451830,-0.6953023813 +-1.8177427846,0.5603112539,-1.5156969177,1.0233968209,0.1012539400,-0.9079785206 +-1.0851813058,0.0025580865,-1.3195702684,1.6074410989,0.0886550074,0.4686556683 +-0.7685202071,0.1240537483,-0.5397969411,-0.1230160796,-0.3919427539,-0.6112440245 +-1.9325222542,-1.7540141932,-0.0542071210,-1.6942224341,0.1716101296,0.6253447096 +-0.4465359440,-1.6715056084,-0.8912282808,-0.8398094783,-0.4423061361,0.5997095689 +0.1259956623,2.2017347230,-0.9114244186,3.6873239692,0.9656533172,-0.8510503381 +1.2834024430,-1.8305539545,-1.2103091141,2.0866044984,-0.1085569181,1.6817824736 +3.0661167679,-1.6041193446,-1.0592049811,-1.7119702607,-1.2958848525,-1.2476339906 +1.0722998066,0.8347897999,-0.3850676873,-0.7665558693,-0.0896908737,-0.8893961478 +1.8633832542,-1.3426457313,-0.3262718947,-0.5928999144,-0.1352622174,-0.4529482558 +1.1869314978,0.3447991504,-2.0563281885,-0.6496770176,-2.3526304947,0.7670261128 +1.9885004186,0.9036806796,-1.5858387501,-0.6507717029,-1.3937965867,0.2920474733 +1.6668116125,0.2856065415,0.4692764740,0.4022732643,-0.0733459842,-0.6786726587 +3.8085133800,-0.7915243687,0.1494041335,1.8323270012,-1.2824810067,1.7361479332 +2.6332048655,-0.4378132726,-1.9674173475,0.4652059873,0.0893296071,-0.3114582928 +4.3666813626,2.0940639598,-2.5454759166,-0.6543996825,1.1230943513,1.1420266368 +3.2172889176,0.0782467008,0.0684575675,-1.9397364028,0.7766789364,-0.1548087922 +3.3813510177,1.1475333599,0.9668739087,-2.5012650461,0.6779248606,-0.7055084256 +2.6307121938,1.1488234405,-0.5685379178,-0.8293721269,0.4270194698,-0.5899481251 +1.1060925092,0.0797100009,-2.4468013057,2.3429435569,0.5065707180,-0.9164447183 +1.5410502922,0.9519093966,-2.2324375999,2.5196040553,-0.2527915098,0.1708263786 +1.3030535305,-0.2733898149,-0.3756420172,-0.5371835448,-0.3165273152,0.9269187113 +-0.8553687173,0.2913302796,1.4560505084,-2.1774563278,-0.1666207370,0.8095705930 +-1.2438851463,-1.1317151797,-0.7151890212,-0.9986294871,0.7342518667,0.1492766272 +-0.9717952277,0.7464140677,-3.4384526915,-2.8674548946,-0.7129439775,-0.9711124500 +-1.8185850743,0.0625997879,-1.6342819484,0.1423130412,-0.6278795004,1.4224602349 +-1.8952322671,0.6597433648,-0.1452859683,4.7470751013,0.6943251229,-0.7969948839 +-1.4588819814,1.0412210222,1.7645860331,2.9936426919,-0.1611558584,0.3267503974 +0.1919176101,0.0842490462,-0.3237970721,-2.3132919822,-0.6476613428,-0.7372045162 +1.2537852383,0.1489771105,-3.0019208585,-1.1095357636,0.6586122505,0.2553199521 +0.2260397221,0.3635730828,-3.3936467150,-1.3830476291,1.8758240730,-0.3568994020 +2.0586740357,1.8316798374,1.3436146708,-0.2754489386,0.8248273450,0.2198508240 +0.8495164614,0.4149002189,1.6854131956,2.8485797493,0.9769475465,0.0230142731 +1.2226053601,0.0002322890,-2.6254504111,1.9683597101,0.7847949977,-0.2038701241 +1.9728864759,1.4304649464,-5.0117800711,-0.2352434895,1.5265079958,0.2479952476 +-0.3857775746,-0.6789142720,-1.2034550085,-1.7650608634,1.0741083549,0.0635176286 +-1.4208691562,0.3051814017,0.4012989882,0.9369064417,1.1549821385,1.0771645607 +-1.5256955487,2.0112791407,-1.5569071459,0.5398303991,1.1090687730,-0.5649351124 +-0.8746618353,-1.6225202630,-2.8251596354,-1.3329769666,1.8108491184,-0.7708301098 +-0.8958018319,-0.9683154555,-3.4073304226,0.8425223018,1.5495881509,0.0154973845 +0.1264932574,1.5441068206,-2.4942986602,0.9426260955,1.1385325525,1.1551837809 +-1.8727492455,-0.6931566765,-1.6146807921,-2.2712161715,0.5659157893,-0.6252635245 +-3.9748419781,-3.1963841219,-1.4314808642,-0.5243782334,0.7744876794,0.9006608134 +-4.2932097483,-1.2145518647,-2.8590852266,-0.0497339593,0.9711406711,-0.6650932777 +-2.7816280607,1.1299503089,-4.7203843066,2.6544759603,2.1123849370,-0.4881382832 +-1.2840514437,-0.9327069523,-2.6920982284,-0.3450737471,0.1832385033,-0.2000738106 +-1.3041964466,-1.0439901420,-0.9884432785,-0.1638410828,1.5618161420,-0.1195316486 +-1.1237703057,-0.8246109307,-1.0361384927,0.0593352102,1.9939050020,-0.1106988244 +-0.7177917125,-0.4407523470,-1.5485552921,-1.6964443552,1.3389389155,0.0150756719 +-1.2544276611,0.1467364223,-2.9934019219,1.0725924592,0.6814504551,1.8525906434 +-1.4057413396,-1.6081404740,-3.5098467865,0.1444365470,2.4538824102,-1.4273403499 +-1.0676399038,1.9202922084,0.0643704456,-0.9977986078,2.7279063863,0.0497703197 +-2.2404869864,0.1532439874,1.0821929727,1.1711155054,1.6325761584,0.5450626700 +-3.7473366416,-0.6270453274,-1.7025298710,1.3786407738,1.5338011763,-0.1923266381 +-0.8388796385,-0.4499295312,-3.9622147290,2.0666136280,1.7412179421,-0.0345263109 +0.4492904376,-0.4318418300,-1.4309990044,-1.8829472626,1.5134765542,1.2601550566 +0.8683198101,2.5632584768,0.5115605591,-2.4199179221,1.4335441209,0.5765594574 +1.2880341609,-0.2068725262,1.4429368928,2.0309025011,1.5008337899,0.2212474408 +2.4851766591,1.7190335705,-0.3096533452,2.5352851772,1.2529239444,-1.2842407399 +1.3016602821,-1.0184362809,-2.5116480189,-0.3895744650,1.1150718064,-0.1580399227 +0.6565410872,0.0411355770,-0.9083880673,-3.1323762102,0.8945384479,0.2138841390 +1.0768673167,1.5859225424,2.3904608298,-0.7440594258,-0.2683661128,1.0341385153 +-0.1790414604,0.2257963871,1.4021957017,-1.4086477970,-0.7467251769,0.3517930142 +1.4560780501,3.9984288949,-2.1818173578,-0.1251482230,-0.6661402218,-0.7283957183 +1.6223739312,-0.1143918759,-1.5765261755,2.4444612260,-0.5737782293,0.3650902527 +0.4549327959,1.7470763383,-0.1722074884,0.6187509259,-0.9800954064,1.3849139562 +0.5840383556,1.6292540683,-0.6462225506,-0.3908948507,-1.1793196884,-0.0849224215 +-0.0382466852,1.8320389925,-1.2457891641,-0.2369459954,-0.3801780397,0.0973902910 +-0.3271092288,0.7583013661,-2.5713985227,-3.2219413371,-1.8150064595,-0.4701454477 +-0.2630881327,2.4083664388,-1.7397756604,-0.9936552269,-1.9537200665,-1.0144950788 +0.6015393583,0.5004869491,-2.7367094281,-0.4067622902,-1.2399765727,0.7793202425 +1.1712844378,0.8724853692,-1.9834873742,1.9263495884,-1.9961075760,1.0742257047 +-0.0255132722,1.7464131231,-0.8744529916,1.7041799186,-2.6545459746,0.2711739578 +0.8593365503,1.1598834659,-3.2157277772,3.0344766251,-1.2223572637,-1.5052605949 +0.2457927052,1.2063133846,-4.0734126601,-1.4352410817,-1.0696270265,-0.3568840392 +-1.7587292989,1.0318922407,-1.1299975686,-1.6206030760,-2.4767398216,0.0736147481 +-0.7629155002,2.6119388248,-1.3595461224,-0.4061388568,-1.9446633346,0.1228716286 +-2.4464499592,1.5633307746,-1.1993874946,2.5129548291,-1.4417163050,-0.4544626048 +-2.1913624203,1.5018233954,-1.5081420931,-0.1441071602,-2.6941797342,-0.4782788113 +-0.4294997029,1.5294432495,-3.6086326129,-1.1814792298,-1.7503274589,0.0850598296 +1.0757433927,0.6343211054,-2.1765770334,-0.9696283571,-3.0033918973,-0.5264054900 +0.4819018380,0.5439632591,1.4985419264,0.1996680365,-1.4520324278,-0.2133163669 +-0.1048440187,4.1604426344,0.5096327782,3.4726472479,-1.2251096444,0.4559622053 +-0.2082616085,1.3372895175,-3.4099921673,-0.1261827055,-2.4412525188,0.3982242094 +-2.3214097267,-0.4512162789,-6.3087789152,-1.4211177958,-0.8431409439,-1.6418491340 +0.7598730389,0.5221484725,-1.7706101267,-1.9112243576,-1.1138156974,0.1560459747 +-0.4503059263,0.3382168765,2.8757978257,-0.7475482694,-0.9432590507,0.3671384565 +1.4252843588,-0.3581274508,-1.0660369457,-0.1521043440,-1.6686012550,0.4391666189 +0.8557951889,-1.6700281249,-6.0155440661,2.0569821898,-1.2167681837,0.0616966748 +2.1197363662,-0.3254142363,-5.0317565719,-0.1651779946,-1.0793436425,-0.0362253607 +3.7843843535,-2.9058697201,0.4015948577,-0.9699338807,-1.5304811950,0.9710599826 +3.6639968597,-2.1644623930,1.0885490913,-2.6192732274,-3.1032901204,-0.6103751479 +5.3516222160,-1.7468348305,-0.2786307986,-1.0929856632,-1.2347693125,0.2714720455 +3.1328806708,-2.1959700722,-4.4151841710,0.2158512552,-1.7673027748,-0.3892622913 +3.2621453943,-1.5641843422,-4.4278632716,2.7467670287,-2.5500989566,0.1181352020 +1.3756774757,-1.1645107661,-1.5498937290,0.3843958256,-2.3958185948,-0.3641296031 +-0.3409150110,-0.9639985923,1.2589854726,0.7860196575,-2.6163325677,-0.0227128879 +-0.7816689444,0.3988634004,-0.3486307368,0.5479778811,-2.0177759913,0.7301618761 +-1.6579747618,0.8849597588,-2.6806508969,-2.6735852090,-2.6746944292,-0.0649716491 +-2.1961153808,0.8915451325,-4.4850343973,-1.5485017509,-1.0105601333,-1.2477650565 +-1.1158707559,-0.8991288828,-3.3466290565,-0.7964497332,-1.7735976986,1.0130908349 +-1.5166983176,-0.5146942726,0.8777421326,-0.6166224849,-1.6980606762,-0.0905785189 +-1.7729558279,1.1958232363,1.0086630472,-0.1458495575,-1.1187352547,-0.6843712475 +-1.7572842839,0.1906426210,-2.9753112175,1.7966903531,-1.1291332097,-0.1998397161 +-2.3956951952,-1.1176311156,-5.8018216059,0.6681055010,-0.5764200383,0.3737081085 +0.2967084706,-0.0054861191,-3.6012921482,0.3572205585,-0.2183681890,-0.6228683254 +1.5631389591,-0.5727871430,-0.2699709190,-0.8870507780,-1.7688176444,-0.3602823197 +2.6479221150,-2.6245742900,-0.2735926556,0.2475807860,-0.1552128003,0.3250331614 +0.7983025974,-0.0510894527,-2.5738338009,0.4732649733,-1.3747457506,0.0957910586 +-0.0924144869,-0.0276571999,-5.6236119883,2.0516985242,-1.1256007974,-0.8043494199 +-0.5302712395,0.8002007630,-3.4635446258,1.8626519987,-2.2097073920,0.4704163506 +-0.7237648452,1.4086542240,-0.3968298833,0.4119235225,-1.2247518267,0.5256245786 +-1.3994066744,-0.2774679310,0.0199043187,-1.0194311537,-1.8897817391,-0.5900572387 +-1.8789890298,1.8425476110,-3.6403975824,-1.1766808641,-1.8647530965,-0.3486817825 +-0.4057778728,1.7074937390,-4.4488562742,-1.2676190060,-1.8621238285,-0.0710751163 +-0.0304203855,1.9559974751,-2.8552962079,1.4416999548,-0.7098298967,0.2816369315 +0.8290867970,0.1321851571,-0.5121936468,1.2459821810,-2.7697560590,0.0394053858 +1.6619931114,-0.5314022181,-1.8124021528,0.1003098464,-1.9618786845,0.2429368025 +0.0233917951,1.3128697780,-4.9491836546,-1.7398323714,-0.1332647927,0.6851573716 +-1.5938026981,0.3163514424,-4.5224958562,-0.5391324996,-0.5773835825,-0.1871588296 +0.3638404779,-2.6298377986,-1.4250908111,-1.0021284973,-0.8613260935,0.7374959812 +0.5049543399,0.2581538151,-1.9621747689,1.8678185046,0.1420202189,-0.1399374936 +1.7178577306,-1.3075000570,-3.9049820069,-0.5754499867,0.9132804385,1.6319493398 +0.5713175500,-1.1067531350,-3.6692420736,0.7438133428,0.6351915647,0.1102152614 +0.8329003496,-0.2038010505,-3.4166252352,0.8512011136,-0.0053701924,0.0961182657 +-0.0812582815,-1.4437847496,-2.4714870590,-1.2049075580,0.0372221952,-1.2563382425 +-1.4005538589,-0.9965180757,-1.5605602294,-1.3962239868,0.0685269483,-0.2331680477 +-1.9867378985,0.1577102300,-2.2639115107,-1.0749147372,-0.0491900963,0.4011222879 +-4.5766474934,-1.6632162835,-3.4918566715,-1.0043356903,-0.6930563478,0.6653575283 +-3.5169126058,0.9601324573,-3.0683263156,-1.3048229736,-1.0390779848,-1.3761689067 +-3.5514376047,-2.1615533016,-1.8957360047,2.3403532519,-0.3351914090,0.8152645987 +-2.7784219735,-1.3912159698,-1.2708855591,0.6741232567,-0.5379513092,-0.7717465646 +-0.3826040904,0.5514294002,-0.9899533327,1.4351298979,-1.7637370168,-0.4634233961 +0.3763857626,-2.5424580767,-3.3300722422,0.0239433986,-1.5073755119,-0.1354545585 +-0.3012361436,-0.4469433857,-3.8002132290,0.3359329880,-0.5897910985,0.4499958259 +1.2510846794,-0.9657040275,-1.2505104957,0.8124550886,-1.5876799482,-1.0303601428 +0.7228497089,-1.7418057657,-0.0489523088,-0.0684346421,-0.8089348930,-0.6172289272 +2.2485983104,-0.5939003086,-1.8601977037,-0.7626268426,-0.8551833571,0.7163767516 +0.6259347602,-0.9807897043,-2.3129514163,0.5107115382,-0.1953584105,-1.1952038954 +1.2361744270,-0.2730315847,-3.5726017436,1.4870050796,0.2065032947,1.1136283552 +2.3656138272,0.0681867291,-3.3289612573,0.7358213471,0.0378984213,1.0495243492 +1.4425258895,0.1764432300,-0.0513235180,-1.5376639175,0.7889776785,-0.1490278429 +0.5804185766,0.0433159876,-1.0956591525,-0.1783892109,-1.0606460002,-1.2409017897 +0.9943328883,-0.0299720342,-2.2167279448,-1.4755549755,0.3831918290,-0.1245888595 +-0.4053428942,-0.3213502439,-4.5809721441,1.0112272917,0.1742095678,1.0611935462 +-2.4014231304,0.4920305503,-2.8139696889,2.3860433953,-3.0947424135,0.3521974125 +-1.0130373816,-0.5611101369,-0.0798331799,0.8672821242,-1.9235781184,1.0241560101 +0.3969227423,0.1357090549,-1.3459032509,-2.0811411261,-1.4613133019,-0.4117199010 +1.5758700429,-1.2278617624,-1.9136486565,-2.6854034279,-2.6943596667,-0.2386195026 +1.2543455794,-0.4354934703,-3.0671834757,0.6931403857,-2.6829317083,-0.0548617659 +0.5391573877,-2.3274378127,-1.9932576354,3.1210953850,-2.5822993637,0.3131597722 +0.6702914110,0.8928679916,-1.1407418811,2.2245740680,-1.7805110619,0.3350589156 +-0.5605888328,0.8307027192,-1.6153800514,0.7748059668,-2.1833120528,-1.1391249928 +-2.4265242403,-0.4450314162,-0.9084902408,-2.6527287200,-1.3072066460,0.7921656495 +-3.0033215422,-0.2599596995,-1.5200587505,-0.4546514573,-1.9098865422,-1.5902209391 +-0.5443117453,1.5845420667,-2.6659474213,2.5668487197,-1.5033178436,-1.0085279000 +-1.1488108161,0.8539179940,-1.9375475110,-0.7650103537,-0.9246236474,0.3703088611 +-3.6576550743,-1.3642864155,-1.9915577508,-0.7584986825,-1.2164975870,0.9089413541 +-3.9149445370,-0.2580440997,-0.2089533972,-1.3440067590,-1.0177841890,-0.6012744995 +-2.6452706249,0.2849101376,-1.2809371951,-0.8101844621,-0.9528112386,1.3440120004 +-1.9966947461,-0.5510878893,-3.2489542748,0.3024655425,-0.9942638613,-1.3368052571 +-1.4156004116,-1.4682332328,-3.9995929002,-0.3770799139,-0.4301403524,1.3327893009 +-2.6725413294,-1.3656433490,-1.1396614533,1.4207237537,-1.3157291195,-0.0512669332 +-1.9850946929,0.2025038390,-0.7370044950,1.2121592685,-1.0880180905,0.5200977259 +-0.4039743516,-1.3003884417,-2.9450916525,0.1897525914,-0.2373052814,1.2429578845 +-1.0865213652,0.3976776731,-3.9620906478,-0.2099206828,-1.5694771417,-0.3697143432 +0.4429433664,0.5670059779,-1.8084993683,-0.1297177905,-0.9254186423,-1.3386159874 +-0.9940090446,-0.2456374690,-0.5488862066,-3.2862879547,0.0502006060,1.8764091628 +-0.1785085243,2.7613210322,-2.9955197942,1.2170625726,0.1663899009,-0.2429845343 +-0.4520997598,1.1859677824,-3.5194161296,-2.0198847559,-0.6616405560,0.9270158714 +0.4395893887,2.4257173314,-2.7310543613,2.8660585859,1.1653674121,-0.6792024082 diff --git a/statsmodels/tsa/tests/results/yhat_exact_c.csv b/statsmodels/tsa/tests/results/yhat_exact_c.csv new file mode 100644 index 0000000..617228b --- /dev/null +++ b/statsmodels/tsa/tests/results/yhat_exact_c.csv @@ -0,0 +1,251 @@ +yhat1,yhat2,yhat3,yhat4,yhat5,yhat6 +4.8564757594,4.7737798231,1.0629802339,4.5077285877,4.5622072362,4.5192778020 +4.3802260168,5.6140133447,3.4640440803,4.6451139813,3.8773321387,4.5438641692 +4.5588418673,5.6225064824,5.3407060303,4.3405011840,5.4600466767,4.2782569409 +3.9507827608,5.3487217610,5.4118204790,4.4096228098,4.3702357145,4.5836303978 +4.5804681490,6.3881841171,4.1502891739,4.7975154783,3.7949197183,4.9718794716 +5.0032409924,3.4106576794,5.4821040681,4.2964182149,4.1528170835,3.8740105400 +6.1439810685,4.7432320834,7.7039949074,4.0943179478,5.1277481550,4.6131286421 +5.3098043569,6.2280284352,5.4650688035,3.8951289718,3.5021875797,3.7720644643 +6.7370040358,4.5769052643,4.0785096637,2.9922651118,3.8554921177,4.0006637112 +8.2794534209,2.8986527047,5.9934467858,6.7863266033,4.7807352842,3.9700512070 +5.3994706147,4.1561554760,8.1640216896,7.4298455092,6.0888272280,3.7754024525 +4.9218045655,5.4072460550,5.7171282128,4.4379132025,5.0405425254,5.1032809723 +4.5809811787,3.3815613729,4.1122940996,2.8103672864,4.0052742863,5.0975296701 +3.2986980116,4.0528408707,7.0812545405,2.8175490692,6.9643606969,5.3282288302 +3.6125257499,4.7123122142,7.2802430740,4.9998742381,6.5195297109,4.0888259706 +4.0789657485,5.8862981771,6.4284934825,4.6063307602,4.1113507949,5.4600237412 +3.5827143922,2.7156701332,3.9263920137,7.6742887717,4.6487630996,4.4507906663 +4.7465347618,4.1929171465,4.1915903715,2.0185734313,5.4112948426,4.6820392038 +3.8127243048,6.8089433136,6.3694834206,2.8142361499,4.1789450524,2.9246777573 +2.6507492591,4.0732023852,4.3113964897,3.3292074089,4.9631906968,4.9470150498 +2.8548980286,4.1067694984,3.6986970613,5.0550056219,4.0370113097,5.3120288563 +3.3159395945,5.3863702796,5.7334881207,5.3434184298,5.4904297697,4.7803059985 +4.8431197809,5.5538298091,6.4783859548,8.3057664495,5.0202593302,4.7801484532 +4.3082119128,4.4230517789,3.8676933770,3.8941721698,6.0173206815,4.6440567890 +4.4165127148,4.3808105249,4.5517660837,3.2898692911,4.7963174021,3.8920677491 +4.7309696514,5.2801924782,7.1540005854,4.8903934701,4.2106121558,4.0817734302 +4.0410886315,4.9585603530,6.2690890362,2.2073876653,5.4001970429,5.7237280604 +4.8332270128,3.5634924463,5.9852363972,4.5417420173,3.7883420643,3.7343618389 +4.5111306180,5.0333269610,5.5439697883,7.8649159665,3.3783377468,4.2256240739 +4.7795160442,4.8885895295,5.1558960118,2.4246478844,2.8723762647,5.0049152206 +4.1634630642,3.0082511574,6.7333312854,1.7577371552,4.9067761467,4.0185751413 +7.4774502912,5.5256888505,6.4253062305,4.5969330228,4.1336608185,3.7435630339 +3.7357425973,3.3978865699,6.3850324197,6.7955618376,3.5374585303,4.3519277114 +3.8136969056,1.4223961614,3.9137300397,4.3787671461,4.1996445120,4.6801971467 +3.4168935420,5.1928940937,4.1313460248,5.3022783788,5.0220531097,5.0231834564 +3.9431774564,5.0539207294,5.7166316517,3.9645588970,3.7344911267,4.7472665236 +5.8769015221,3.4568435077,4.5983046191,4.5476226499,5.1508903972,4.1423306786 +6.3451471244,3.4525233065,3.8923446980,5.3935741113,4.3477370835,4.3221446745 +5.1756374968,6.4372027039,3.6219427792,5.4372556864,3.7588708954,5.4326260847 +5.5770569483,2.8471482674,1.9528836062,4.2697049976,3.7217798152,3.7617662530 +6.3168522717,4.0152314769,1.6965283909,4.8762993376,4.5263133252,4.6945269065 +6.4017152938,4.6879242999,4.1933331002,3.5315279085,3.5152815115,2.3590033197 +5.8043000464,4.0628647407,5.3578122209,4.6217281026,3.7408163831,5.7068734824 +5.5491499549,3.5900272630,1.9076262576,3.7595010920,4.0144473333,6.0648587570 +5.0586337054,4.0577439190,-0.2033612457,2.3925340704,5.1933709218,4.8173241101 +5.0706090032,3.2997132534,2.5787941478,5.8131547100,3.8574885646,4.8777641015 +5.2607840312,4.9485054124,5.4461001297,5.9182842360,3.9711274448,5.2232830270 +4.8688685227,5.4471766809,4.1323447658,4.8544622996,4.6227411767,4.4754849228 +5.6352916186,3.8893758868,0.8326871048,4.3506808570,5.1744439793,5.1377863560 +4.8362453771,5.2120960571,0.8435185540,4.6219865783,4.3982605837,4.1303783461 +5.9360716139,4.6009855369,0.9320453718,4.5894955163,5.1446104974,4.7206233425 +7.2002391355,6.4781161540,2.8379786962,6.3275708285,4.4335990006,4.3336494927 +7.8589048665,6.7603942006,4.2250339511,5.5197677458,3.2453799215,4.4870067920 +7.2880079127,4.1216235213,-0.0568921323,4.0920515138,4.5885026888,5.5531437913 +5.6605978857,4.9893001744,-1.4544737583,3.3192516948,3.3089322709,4.4013827151 +5.9996576521,6.2246279399,2.1629052006,3.1431835658,3.3564521333,4.6034119082 +5.5839811157,6.2030122490,4.6018398852,4.7731816265,3.7989099394,5.3068050470 +3.5999325179,5.7684073507,2.7259948119,5.7192595634,3.0731380327,4.4660071898 +5.4401538781,4.5459108955,0.1333320606,4.1895094201,2.8609833771,3.9746136975 +6.9874270540,6.5774993780,-0.3791701331,3.6788888651,2.1991521821,4.2593156048 +7.0030065424,5.6466682329,1.8589131112,2.5187699145,1.3300193667,5.6218582272 +5.9290930778,3.2147258549,4.2074002314,3.7189410999,2.5774203670,4.3561586046 +6.4719117339,5.6751884826,3.3522646424,4.8391148795,2.5423436095,4.1157435547 +6.9432788786,5.3003261494,-2.1986992167,5.6544382687,1.2520828888,4.0551016887 +3.9058013502,4.9670740876,-2.3785357370,4.2618635503,1.8198346028,4.2300337138 +2.3274874822,4.9332683791,2.2005608972,5.8001104380,2.4927298534,4.6590273147 +1.9782810757,3.0618750432,4.3097362731,5.8544002731,3.0249154799,5.4718072167 +3.3919351286,6.8536873068,2.1982905781,4.6279762364,2.7927026190,4.8585791147 +3.6728791711,4.2580095925,-1.1720611315,3.8239934692,3.4830202934,4.1231045895 +4.0150298486,5.2679069592,-2.7606442537,3.0050313805,4.7362230675,4.4562407086 +4.0936759332,6.3435246151,3.0934721218,3.0473133678,4.2475318785,4.2535252521 +5.2189267343,4.9071082105,6.5755742571,6.7747170150,3.9087825697,3.7839948329 +5.5167441820,4.7603567640,2.6353210273,4.1613171659,4.5774450111,5.0042760365 +4.3493098464,6.6080312279,-2.3363850600,3.3752732310,3.7497202821,4.4612021004 +4.9931132007,5.1208824878,-2.9726618484,4.4417380246,2.9344436368,4.4872541469 +4.6713852933,6.0029299088,4.1021452040,4.3440934596,3.2228513242,5.1884784928 +6.1787618594,5.1745771320,5.7416492012,5.2334424436,3.2508077947,4.3495472054 +7.2968215671,3.8036385547,-0.2381039143,4.2512059998,3.4854256246,3.5891281979 +5.3019815599,5.4234047749,-3.4350762648,4.1250305822,4.0409597160,4.6799152083 +5.6919743584,4.4949496684,-1.6153628173,5.1631451769,2.8790890983,5.6027081261 +6.8455273324,3.9879656085,2.8720877798,5.1119102038,4.7728291303,4.2808615693 +5.6533589575,2.6630513204,3.4378279820,4.4182988889,3.3067630783,3.2271978549 +6.2870734485,5.7527968456,0.5802321899,5.9297928697,3.9866542467,4.7573423130 +6.0565657056,2.3476268043,-4.6153310536,3.1787582624,3.5987337905,4.1562326325 +6.4992350088,3.6521006730,-2.5802817089,3.1251493123,4.3322884862,4.7183434582 +7.3280712146,3.6781654954,3.3313086747,5.5510727677,3.7360679081,4.7379668978 +7.9811338456,4.3861846156,2.3854048002,2.6059423341,4.4712011836,5.1429552448 +6.7833633698,4.3740218160,-1.9538574181,3.9250421993,3.4170601485,4.0505465552 +6.2185606035,3.9566154858,-3.8713701454,4.3685185487,2.7759657937,4.9070885233 +5.2956694987,4.2255769140,-0.2116731766,5.0524457171,4.0911086630,3.1226506162 +4.0365575386,3.3016101817,3.3690117450,4.5822537095,3.6312025332,5.6913656934 +4.6810049068,5.2300614106,2.3111491132,5.3442619448,3.1017103434,4.3083977435 +4.9456666518,4.2695292085,-1.0348726005,5.2771366540,4.1987319966,4.4390656908 +3.6593614820,4.9552024282,-5.3683261795,5.3562294223,3.4428886253,3.4635336323 +5.2827233920,4.6390309766,-1.4726661378,5.8360815201,3.7632889618,4.3292725060 +2.9748761638,4.0804387751,3.3282568897,5.6385260787,3.8887055522,3.5795095867 +1.7555754082,5.6751753356,0.2347093508,5.4691783731,3.0063251114,5.3088506333 +2.4946536258,4.5432705737,-4.6882810045,1.1371210533,3.4052114274,4.0338017891 +4.1837113715,4.5781499465,-4.4598039789,4.7052901780,3.1130957877,4.9866189718 +5.3085210813,5.6339773996,-1.8095666664,6.2784917539,2.4224304377,3.2562181349 +7.5222679253,5.1975586925,0.9696265547,4.1505424843,3.1970476474,5.3466105591 +6.8200590087,5.7023631594,0.0740645056,4.6882898439,3.5015153229,3.7552823674 +6.8480498299,4.8436075323,-3.3225275631,3.8945016948,3.4203501697,4.9441955111 +6.0230358608,6.3444892686,-3.7246481005,7.3985902037,2.2197001661,3.6174909754 +1.6807481593,5.0327737713,-0.6355495512,3.2229962739,2.2200381892,5.7877860305 +0.9954359835,5.0417560243,0.7282770164,4.6773650604,3.4550295425,3.6790900903 +1.5259562726,5.1118066586,-1.8704586819,4.2872456308,1.9203846545,3.3477068258 +1.5630882285,4.3582165014,-1.5830002190,5.2044994046,0.8702085591,5.7481364721 +3.7549736606,4.9417926178,-3.2820793975,4.6843268567,2.3862287825,4.8049943889 +3.1347561478,4.4453204210,-3.6822379437,5.0540212912,3.5792494384,4.7122888702 +4.7551048080,3.9378776629,-2.6490462177,4.2725662973,2.9840379940,4.1364634781 +4.2082698296,3.1409692310,-1.2042524428,5.4501655074,2.8114005656,6.0021858696 +5.6402705812,4.0925686701,-1.7623523648,4.5619001805,4.9603288467,2.6290972338 +7.1993518184,4.4137234260,-4.4965975584,4.3581981090,5.3105678295,4.9273905493 +7.8669020921,5.2331140468,-4.6182735925,6.4797990515,5.6655006210,4.5163625326 +7.8714536976,3.6672964830,-3.8940551133,4.5915388423,4.6426489521,4.5252246208 +6.6620595902,3.0355939785,-1.2723473054,3.0138602942,6.8163321820,5.4045144471 +4.4978161249,5.2521093850,-3.4650064045,5.3429068837,7.2013897016,4.1581061166 +6.1283246576,6.5418530631,-4.5628426333,4.9436949025,6.6375981906,3.9406255118 +6.5220264551,4.2874022968,-5.0425206801,4.9485212918,6.3504543941,5.3494718843 +4.4510895412,4.2834860823,-3.5349617184,3.0321139575,5.8234159081,2.8941415378 +5.4808097984,6.0594754374,-1.9563821489,1.8837131152,6.6862023222,5.2219148626 +4.8043061326,5.5141188355,-2.6263416213,4.2600705765,7.0365091954,3.9318148001 +5.7700669097,4.8610108566,-5.1476926175,4.7265886723,5.4205618362,3.7260588350 +5.7173655586,5.4408507780,-5.1364546621,4.4355440192,6.1584584483,5.4794799277 +3.8925816138,5.0810809362,-2.3068849118,4.2498064428,7.6586496576,3.5653920207 +4.6723601100,4.5857886518,-3.7844271012,3.5984666341,6.3284623050,4.8866883940 +5.1788065263,5.3658831575,-3.3018414389,5.7954666953,4.4919931680,5.3950256386 +5.7213013120,6.6501576761,-4.0601845395,7.5590012131,5.8916731125,4.0632080040 +3.5281308348,3.9745947317,-4.9896851878,2.1772754268,4.7090020514,4.5299321345 +4.8112545959,3.5777349034,-3.6091231986,5.3495585332,5.1315875674,4.9364072796 +4.1046099156,5.9431644946,-2.6105506282,2.5418436307,4.9643847916,4.5440333600 +4.1238367663,6.7856118344,-4.3104945987,3.0309885808,5.3730937799,5.0621723108 +5.4671409847,5.3116757589,-4.5986043694,5.1640171184,4.8281435005,6.0957909547 +4.4613307689,5.9844762021,-4.1307661603,7.7834588913,4.4252395000,3.7986799438 +6.1239080938,4.3681850438,-4.0183666238,5.2702779474,5.5016254226,5.6058704761 +8.1695895936,7.0755914835,-4.1402801866,6.9888930084,5.9117620844,5.0952883614 +6.1553397100,4.0253093238,-3.8123182255,4.0429661280,5.7458947385,5.5943447865 +5.5762879307,5.4272497595,-1.3509815126,2.3628454411,5.7334745066,5.0309046708 +4.6510959827,4.4060563788,-4.0185982913,4.3503406608,7.0383263448,2.7764510697 +4.3937445801,4.2164179089,-5.7752393012,3.3721140006,7.3354890534,5.0298687589 +4.6485046523,5.8003316399,-3.7068433469,6.1864409021,4.8265868072,4.3257498201 +5.5432768763,5.3616256875,-1.4690539579,5.9594715658,6.2113574687,4.1184653273 +4.9730140024,3.9979622530,-1.1349706431,3.3365665189,5.5085115016,5.3790023068 +6.1354492822,5.2689521336,-5.4720260233,2.3000494947,4.8668057001,3.0953995259 +5.5534922764,5.5697732143,-6.0784183683,4.7822332426,5.4202956337,4.8640532445 +5.2701602338,4.8440319254,-2.3497684497,3.4318312617,4.4038921604,5.6247521301 +5.2164315582,4.4585601367,-1.5189016651,3.5816143672,4.5822998363,3.5462491131 +6.2100101494,6.4294568906,-1.8694872463,3.8844018859,5.6762561373,5.3476377449 +6.2038226387,4.6346828728,-5.3046424746,6.6944579861,3.7811032135,3.6481002194 +5.8594613418,5.4361774743,-5.1045811376,5.6684597016,3.5414093939,5.4863699272 +5.1312954448,4.2963380613,-1.8461795794,2.9615017457,4.3934480684,5.1338314336 +5.0707564699,4.8019530509,-1.8754807455,4.2126570200,5.4483140643,3.2186875877 +5.3024642744,6.0227866824,-3.1525505964,3.1728831067,4.7570224997,5.3293573088 +6.7879927759,3.5341819252,-6.2076311366,4.1674001246,3.4233785395,5.0933414819 +6.0959154220,5.6666787812,-3.9985134848,3.1286485921,6.0090104933,3.2355050788 +4.8770092475,5.5071911462,-2.2402244446,4.2458555556,5.3319928535,4.5508172645 +4.6462822076,3.7518689113,-2.6677735581,3.5140694681,3.9302443031,3.4693742748 +4.4493063305,5.3523679747,-4.2833733602,4.4677866226,5.3261432467,4.4750702044 +4.8519104039,3.8704625972,-5.7434472532,4.7589839275,4.7355905046,4.2638381759 +4.1761724219,5.2475077356,-4.5719566477,5.4033924769,4.7243287703,3.1805946558 +3.6216295088,4.5481247568,-2.4212825459,7.3032754131,4.1663012143,4.6330886685 +1.4077245453,4.5433220483,-2.3759544201,4.8974510868,4.9454567083,5.3929741696 +4.0636335345,5.5540880159,-5.0368208549,2.5971037081,5.8474307271,4.0875864261 +3.1755581314,4.8797047351,-5.5786338133,2.0790017788,4.8688312101,4.1328612125 +4.2383507502,4.0432364540,-5.3234953644,5.3476684201,5.0191255136,4.3701405208 +4.8666980186,4.3842779297,-2.7061080702,5.3733806734,6.3115616415,5.7961596186 +3.5006748019,5.0326780821,-2.4626290230,6.1317759485,6.0701470343,4.7742381918 +3.8758838647,4.7620609155,-3.5447255805,2.4007482876,3.9938498188,3.9842301787 +4.5595618905,5.7164547880,-4.9470800659,5.4151564210,5.0136159400,4.1117493504 +6.2023217953,4.6585043199,-3.8157672796,6.1377982947,5.1851163641,5.1680961326 +6.6614906175,4.4862497262,-2.6839089723,6.6469325172,3.0866338668,3.8208368790 +3.9330122023,4.8931946185,-1.8890933487,3.6418136321,3.8294624324,5.5142152207 +3.3624266139,5.7000992690,-3.0593470590,2.4752063660,2.9488767049,4.2701185945 +3.1964625939,4.6574808863,-4.6629639060,2.8498792195,3.9731733634,3.7515961108 +5.9142384115,5.2115779252,-3.5339673537,2.8421070411,4.2028899258,4.5456089182 +4.2795018321,4.1438177734,-3.0497450887,5.3677632986,4.6646717740,5.2503284794 +6.8544789979,4.9168715809,-2.8841045580,4.0102387905,4.7739250489,4.3592520289 +6.5785072521,3.9712129002,-4.0537997178,4.4817181331,5.4048491545,4.1364356484 +6.0225496469,4.8196761345,-4.9419951771,5.0627116887,4.6007970347,4.5203158989 +5.0340614613,5.3113546917,-4.4852476141,4.4424632683,4.4686906053,4.3562024316 +6.8149029635,4.7764049759,-5.0927131551,4.7192587658,4.3400682662,5.1750095538 +5.7572216048,5.0852399903,-4.4719361336,2.3228060531,4.2754642787,4.1667433111 +6.1940809022,5.2030355864,-4.8574647529,4.0975703123,4.3798271060,4.9595683458 +5.5200884428,5.0060145767,-5.9975721396,3.0213633819,3.6806872558,5.2729580918 +4.2745663125,3.8635605519,-6.0675414963,5.9154958287,5.0815281661,3.9769449600 +2.5406332233,5.5287260018,-4.9707983262,6.0247077915,5.5070111460,4.6070789902 +3.3371378536,5.1182959756,-3.0582767542,5.6586511879,5.1252984641,4.6317077025 +3.1891145313,4.1874172320,-4.4072190418,3.7299708526,5.1210920027,4.7838976350 +2.2880847678,4.9543964123,-6.8577933075,3.4404997138,4.3457624987,4.9474460358 +0.8607358563,5.6506140689,-5.9942480303,5.3725082210,3.8214240645,4.8585516794 +1.9090115009,4.1736808673,-2.3648347905,5.0045345282,5.0848408317,5.9477653341 +1.0908043975,4.4115406105,-3.1526538834,4.8691525334,4.1978011210,3.6659718879 +2.5045794681,5.6107177077,-4.8068027320,5.4057595053,4.0101649849,4.5170053684 +4.6660373235,4.5297637335,-7.3279702149,4.2244469007,5.6704477211,6.0418472102 +6.6208094353,4.3177646969,-4.8495994534,4.1942279008,5.7960911223,5.1633893474 +7.9045975935,3.7364557935,-2.7469931299,3.7945467363,4.9378715397,4.2277078776 +6.7112183950,3.9552771862,-3.4322933169,2.9962289039,5.2336807114,3.4118360601 +7.6085801115,3.7984965006,-5.9676742032,4.6716328208,5.6770068511,5.2033915267 +6.5053711455,4.0031176792,-6.8983003181,5.3939807076,6.1822277179,4.6650915721 +6.5392019374,4.6429055517,-6.5390704399,5.2874269484,5.0617439792,3.9017260341 +5.2270108094,4.4630710638,-4.5972120007,4.2644612926,5.0302578587,4.0848685617 +5.5496858310,4.4487542973,-2.8009740648,3.3284628309,6.4133470233,3.4924372586 +7.0371776295,5.1454992863,-4.8038202052,6.5027008055,4.4580512069,5.0688646792 +7.2790384455,3.8305558589,-8.1285657006,4.3740292327,4.4175186905,4.7331314804 +5.3199184459,6.3595515832,-7.2493819308,6.2083486089,5.2600325748,5.6580023585 +4.9934556650,7.1111584018,-4.4671418166,3.9620028681,3.2784158628,4.4464836987 +4.2819567954,3.6290831153,-2.5447505490,2.9033094916,3.5047785669,5.0902289931 +3.0568943057,5.9647541508,-3.4066125502,2.1135453933,5.8188088953,4.4457507456 +2.1304712729,4.5839043211,-6.4217535278,3.2185677448,4.1073127271,4.7816574459 +4.8147659877,6.0868954346,-6.5795439179,7.6120198292,4.6210328822,4.6511473511 +5.8070914019,5.5745830940,-2.8701479375,6.2934298224,5.8679003369,3.0686975933 +3.6115552732,5.6051241927,-0.1565133541,3.0892597963,5.6292173358,4.5247718332 +2.9239742918,5.0645079050,-3.0106595660,2.8086948758,5.6505592764,5.1831295785 +4.3273263869,6.0094500831,-5.5392347499,5.4083365583,5.2901205135,4.5164771585 +3.7841411819,3.9431576374,-5.0346292184,4.1872625796,5.8242205935,3.5092717707 +2.9439589660,5.6025452125,-2.4836601202,4.5822132922,6.1914037917,5.4666134801 +2.9523695391,5.0410134987,-0.7558311054,5.0598205196,5.7990047238,4.5474676004 +2.2194426369,2.8717922780,-3.8104258303,5.0531065528,6.4355422054,4.4086296771 +2.2286583798,5.4099611913,-6.5740490807,4.6269428270,6.2346414362,4.5851645672 +3.0675309699,4.3586276188,-5.5960189493,2.9169547205,6.5151270777,4.6699692987 +4.4460740436,5.2961663528,-2.2639887009,4.3943373517,6.1833794642,3.1948426841 +5.1845831627,5.2075777558,-1.9983201220,2.6474402228,7.0406625177,4.2990464928 +3.5553859823,3.8846966161,-2.9711761962,6.5383306526,6.3769610301,4.5680337551 +5.1368821707,5.6189015736,-5.1948266433,9.3372897936,5.4303467101,4.1543003104 +4.7166452225,3.4762764160,-4.7996852767,3.5709426391,6.0709400596,4.0162537375 +4.0655064696,4.8679798824,-2.5257817203,-0.2397540472,7.4430134883,3.9741481384 +4.8739646478,6.1001218568,0.1309412790,3.9178609675,4.7876906875,5.7503016926 +3.2036693337,4.0978865218,-1.3996139990,6.6508999867,4.6941532361,3.2454641348 +4.7404405197,4.0877490842,-3.7645785945,4.3435381982,6.8122472905,4.0582880196 +3.9524198102,3.0605371217,-2.8759647346,6.5352019477,5.1398339218,5.4600301737 +5.1156643408,3.1298905115,0.1325467265,4.2355351326,4.1474944903,3.6031137112 +6.6783762367,5.0939390625,1.5048033372,4.8953245397,4.4007169152,6.0441346235 +5.1757050832,2.3866379586,0.0443435711,2.9547869931,4.3714863561,3.6838266160 +5.3307733146,5.0024969355,-2.1842578899,2.4141336352,4.2150618862,3.5282264202 +4.9625892048,4.1347588039,-2.6512376363,6.7856744153,4.0409769865,3.5442862768 +5.1941150714,5.4732915830,1.2894533068,5.9372271540,5.2995430730,5.3587242672 +5.7842645137,3.8712216053,3.1499162931,7.4436349050,4.8329832398,4.3608245532 +4.8817417798,5.5837321696,1.0092497588,5.4831170612,5.2140420248,4.9816943324 +3.9102292878,4.5787311311,-2.7490211779,3.9868229598,6.7003222520,4.6231462773 +3.7104173166,6.3020864130,-2.4687305447,2.5978512267,3.9219762100,4.8640467589 +2.6969414480,3.5627605456,1.9264159841,2.9392001484,4.3075157645,4.5246176769 +3.1021142802,4.4852079467,4.9896603230,4.0170818602,4.8452548954,3.6551728846 +1.9498933374,5.1335954089,1.3907402820,3.9319088353,5.2717133432,5.0288914923 +5.3022616650,4.8500804218,-4.3388057198,3.7600673234,4.9716484394,4.3383128810 +2.8381666261,5.5680553555,-2.5366843969,4.7642074766,4.3406980043,4.6799907608 +2.5103293788,3.1495788140,2.7225753380,4.9935148390,5.5794567272,5.5523926628 +4.0647003336,4.5231525968,4.0833849317,3.6763204386,5.9614121030,4.2830503713 +5.3192407560,4.8920386478,0.7357547931,4.5268430470,4.3460743252,4.0771200785 +5.5757491351,1.6517485430,-3.5749591267,6.3889723180,3.6970456936,4.6004392063 diff --git a/statsmodels/tsa/tests/results/yhat_exact_nc.csv b/statsmodels/tsa/tests/results/yhat_exact_nc.csv new file mode 100644 index 0000000..30f3568 --- /dev/null +++ b/statsmodels/tsa/tests/results/yhat_exact_nc.csv @@ -0,0 +1,251 @@ +yhat1,yhat2,yhat3,yhat4,yhat5,yhat6 +0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000,0.0000000000 +-0.1783189711,0.8022781482,-0.5025472512,-0.1714754341,-0.7321341350,0.0219630653 +0.3481346485,0.0388387795,-0.7762924454,0.0793448919,0.1866410497,-0.2483738064 +-0.3190244039,-0.5279474797,-2.5981665507,0.5332326724,-0.8098594374,-0.3094605088 +-0.8825750195,0.1100657671,-0.4215685695,0.6344400376,-1.7147194011,0.2504219684 +1.6559073128,-0.0825049146,-0.0315786910,0.4096874072,-0.6583446506,-0.3984331448 +2.7929159906,-1.0659788189,-2.5383702134,-1.9756512744,-0.4499375785,0.2988299030 +2.1819905068,-1.1210762010,-3.2975733628,0.7677510599,-0.9591895768,-0.4934820821 +1.9709227040,-0.7451505389,-1.3316813588,-0.8314441799,-1.1055031411,-0.6105067979 +2.3658425361,-2.3453822264,1.3078446108,-1.6657978212,1.2675237409,-0.0604158194 +3.2090806075,-0.1955049437,-1.5246271406,0.3763836008,0.4297652112,-0.4227791702 +3.5482186423,-2.2776458806,-4.4361593505,-0.0556052066,0.6266927159,0.1615706191 +1.1210339187,-0.2236055802,-3.5147385094,0.1570627755,0.3724256665,-1.0647514377 +1.2196765600,-1.1427061585,0.9493072568,1.0936082914,0.8008222619,-0.2398066095 +1.1506094722,1.3372609611,1.3991583232,1.5469247667,1.0332483739,-0.6255077362 +2.4498953427,-1.3969309880,-3.8230420279,-0.3929631998,0.5137494209,0.3512009236 +2.8230021912,-0.9194544140,-5.1917349319,-0.1010002322,-0.8347965797,0.6950949656 +-0.2383463005,0.1968746103,-1.1747573022,-1.1962935664,0.7707353971,0.8145418941 +-0.5343925269,0.5870245707,2.0048360062,2.8109644942,1.8170286526,-1.4010434502 +1.5358283323,-0.9185545315,0.0481956402,-1.8493078126,-0.3774457909,0.3949685480 +0.5828628586,0.1694481055,-3.7173639983,-2.6602145678,-0.0659440828,0.3534662405 +-0.1568638250,0.1750288187,-4.9325440736,-1.7754948156,1.1335237486,-0.1587092292 +0.4462539796,-0.3075852089,-3.4997838228,0.9022564250,0.4624984170,-0.6135867572 +4.1167787457,-2.7018076111,1.0519264908,5.9570432456,-0.1930432852,0.3876166434 +1.7792573412,0.3626539948,0.0910523508,1.8461674689,0.3371048515,0.8150470185 +0.7403468511,-0.3439238586,-4.0764027788,-2.7950696060,0.9108965518,-1.6488625319 +0.6909661745,-1.4111117545,-7.9166117181,-4.2117122331,-0.7569881099,0.2449516546 +0.8713791223,-2.3036090706,-2.9846576891,-1.0732313985,0.7959865309,-0.1008620861 +1.2555830400,-1.5862173362,3.7196581692,2.5850251003,1.5224522323,-0.1380208387 +0.9274590883,-1.1058286075,0.8583093731,-0.8389331253,-0.0393412919,0.0151260870 +2.2739798719,-1.7360941488,-6.4705204375,-0.5525659273,0.4548254253,0.9354419371 +0.8182619893,-1.4525370311,-5.9251232541,0.9955244080,1.2315984266,-1.5349964262 +-0.3124674229,-1.4929083163,-0.4681968476,0.3227618928,0.7093311114,-0.5030600188 +-2.9948952356,-1.0002207678,2.1078884430,-1.9210746741,-1.0955841550,0.2244250258 +-4.3405479539,-1.8332177146,-0.7027791404,-1.5803831414,-0.3399908525,-0.1798679638 +-4.2252183708,0.1897779513,-5.2460676751,2.2310426375,0.9121520237,-0.1722476111 +-2.4957022226,-1.9519621945,-5.1888441176,-1.9029518769,1.2307717687,-0.2226184572 +-3.3808127733,-3.4523844506,0.0377425637,-0.8053473654,-0.8988082411,0.6195317425 +-2.3377533324,0.7091174458,2.2011068544,-0.5571715875,0.8190825054,0.6717440102 +-3.0243309828,-2.0873178471,-1.6615994034,0.6080560191,0.6720234797,-1.3991069083 +-1.8290329321,-1.2269398121,-5.0933774932,2.1880187410,-0.0544848962,-0.9159974149 +-4.1641855848,-1.5356332131,-4.6200945950,0.3748045104,-1.1575830198,-0.5928948438 +-3.2569117196,-0.5666574331,-0.8136139135,-1.1496885641,-1.5119176456,-0.7257292810 +-4.2778313122,-2.0446017418,0.3800326008,-0.2313700353,-1.2678218311,-0.3861426125 +-4.2752918024,0.0873971257,-3.1261809521,1.8635547176,-2.0145137243,-1.2019049762 +-4.7262537634,-0.5160014905,-5.9423033274,-0.8258793657,-1.7158036293,1.2364280075 +-3.1646923559,-0.8687268419,-4.4759012404,-2.3058696690,-1.9032343373,-1.5184222130 +-1.9589860913,1.0376874814,-0.8247172533,0.1936837760,-2.5321627771,0.5105783404 +-2.3549103130,1.2555984879,-0.3671737029,-0.3623083391,-2.4903494628,0.3328874299 +-1.3491400795,-0.4428013841,-3.1872336788,0.6465250385,-2.6207216272,-0.8122166961 +0.5441214887,1.6633642383,-6.0673405064,2.7054038367,-2.3213334408,-2.1969947086 +0.4486369077,2.8242009941,-3.1195537292,-0.6398966453,-2.8454152613,-0.7753943000 +0.6382836646,-0.6627841821,-0.5351079275,-0.5164471015,-2.0235567680,-1.1151161260 +0.4506387307,0.7646249440,-1.9738330655,1.6699646553,-1.7819861284,1.2761479297 +1.5197010785,0.8676705267,-2.7723609056,-0.0290403799,-1.9458789437,-1.0450449112 +2.6532836382,0.8078444751,-4.8249391350,0.4024259563,-2.5222178486,-1.4336030618 +0.8799670175,0.2110557883,-3.1501635867,-0.2506475494,-0.8568033910,0.4164282234 +-1.1055653857,1.3948447407,-1.6908470214,-3.5922789224,-1.8005325064,1.3031809186 +-0.7636333424,-2.3280698433,0.4971685047,-0.7677190264,-2.2732985207,1.2979164371 +0.2987989437,-0.5560606183,-2.7061215227,2.4162571913,-0.6510896094,1.1126805448 +-0.5709942246,-0.2300173494,-4.4549612949,2.8700464698,-1.3442908063,-1.0594541521 +0.6141923120,0.5272781290,-2.1617512398,-0.4138712127,-1.1889043530,-0.8462020427 +0.4042095605,-0.0156437159,1.6137494761,-0.7068779744,-0.3314796865,1.7410469329 +0.3791169474,-0.7456785708,2.3112858629,-1.5571890993,-1.2586354815,-0.6869085942 +1.0601272390,0.3841244316,-1.1805405351,-2.7477358608,-0.3513488847,1.1099137501 +1.7715813985,0.7020905498,-2.5695859797,1.0068893858,-1.9436224604,-1.2021309808 +0.1866449949,-0.1483596632,1.7503169035,2.3622012140,-0.5856280687,1.0800823655 +0.1570042140,0.8539840747,3.2184354144,0.7312222769,-0.4427329856,-1.4614169181 +-2.5948540683,-0.0596820693,2.0119291535,-0.3223355457,-0.8759143533,0.5174901753 +-2.6178065924,2.4760908505,-0.7600044408,-0.9059233664,-1.0887236546,0.3469865572 +-3.3998541117,1.6738771402,-2.1896719318,-0.1469506051,-0.7756421096,-0.0179649840 +-4.0599058016,0.3384886286,0.8078613592,-1.6510340466,-0.6758753108,0.0012986289 +-1.7566765419,1.9964889442,2.4661478718,0.3431566067,0.7098159871,1.2927419826 +-0.5223752973,3.7742253914,0.2053689640,0.7742258813,-1.5664990963,0.5869684684 +0.4084973347,1.1162901544,-2.3619670781,1.2798712881,-0.9566367853,-0.5943537538 +1.4554844110,0.6005405101,-1.6337847690,1.1063644596,0.8973975020,0.9117181367 +0.4743796722,2.1864394218,1.2697151229,-0.5834103501,-0.5251298906,-0.3200545050 +-0.3428219882,2.6291281507,0.4276627515,-4.2146499965,-1.1636748270,0.2287771081 +-1.3232480892,-0.8999102294,-1.1792031224,-1.2314324443,0.6830780853,-0.7010149167 +-1.8125295718,0.6113331689,-1.5030241844,1.0361356595,0.0981281005,-0.8995675399 +-1.0828983358,-0.0587224939,-1.3186734866,1.5872722926,0.0877770731,0.4568683189 +-0.7663925038,0.2025879234,-0.5438211752,-0.1031174361,-0.3950183925,-0.5935717401 +-1.9260546036,-1.8244994352,-0.0551115196,-1.6998148506,0.1771587437,0.6136160703 +-0.4470884341,-1.5895429892,-0.8788606997,-0.8286207952,-0.4427280013,0.6056648814 +0.1257983641,2.1914165288,-0.9010476848,3.6526890467,0.9705721429,-0.8442095815 +1.2786944720,-1.7864605038,-1.1993654242,2.1037032191,-0.1200732727,1.6616848343 +3.0563553157,-1.6049824597,-1.0615217875,-1.7164316590,-1.2990185770,-1.2383445937 +1.0716342300,0.8375434022,-0.3887108722,-0.7594975836,-0.0756489076,-0.9004821475 +1.8565735390,-1.3610564150,-0.3268181099,-0.5956988128,-0.1281018513,-0.4352506952 +1.1848740607,0.3556940726,-2.0418080839,-0.6427010898,-2.3591038934,0.7529811177 +1.9817420987,0.8962843908,-1.5822678536,-0.6519925180,-1.3847358736,0.3026805758 +1.6629355891,0.3091929780,0.4706845704,0.4012301261,-0.0634348275,-0.6721266025 +3.7956258353,-0.8240620851,0.1576223874,1.8211815947,-1.2864546699,1.7300670478 +2.6278364609,-0.4323077896,-1.9491982194,0.4720196092,0.0912322902,-0.2957753767 +4.3521613900,2.0856483159,-2.5401446231,-0.6568281396,1.1187475503,1.1244135636 +3.2102998856,0.0764644609,0.0529985788,-1.9249727358,0.7671721274,-0.1470482329 +3.3710311228,1.1718428997,0.9611368947,-2.4969502577,0.6724019054,-0.7201496857 +2.6244298605,1.1228599035,-0.5548412927,-0.8261646075,0.4277181974,-0.5842865545 +1.1040313561,0.0864875681,-2.4213242260,2.3260334248,0.5115863109,-0.9175897220 +1.5359659926,0.9057242293,-2.2263725203,2.5189710609,-0.2537877938,0.1824501296 +1.2999491789,-0.2896366275,-0.3870522068,-0.5327386996,-0.3157562036,0.9240254609 +-0.8511809674,0.2720412981,1.4428210073,-2.1674351900,-0.1654234731,0.8123180801 +-1.2407499282,-1.1463678713,-0.6961632853,-1.0010920390,0.7370867238,0.1407407508 +-0.9692167370,0.7976437700,-3.4150110125,-2.8440437532,-0.7217810756,-0.9516619915 +-1.8126855036,0.0586400436,-1.6329973015,0.1223030554,-0.6242217633,1.3977403665 +-1.8902027659,0.7408255349,-0.1541204772,4.7342937270,0.7032352850,-0.7728972226 +-1.4551306180,1.0053330121,1.7527703630,2.9857269540,-0.1652489282,0.2982028917 +0.1899676761,0.1117248104,-0.2974004158,-2.2914934547,-0.6523827137,-0.7094749829 +1.2498475861,0.0635343936,-2.9792085831,-1.1238192728,0.6625572500,0.2270403324 +0.2265359427,0.3604168854,-3.3855564773,-1.3613452927,1.8761534251,-0.3290342055 +2.0508086154,1.7930198869,1.3062786758,-0.2923802953,0.8098665429,0.1942358276 +0.8490891009,0.4300476601,1.6832498240,2.8445505609,0.9696915982,0.0453008348 +1.2181142804,0.0021391413,-2.6018640112,1.9588525724,0.7839892530,-0.2212727113 +1.9671105131,1.4518513917,-4.9773018866,-0.2263853068,1.5336382285,0.2667116413 +-0.3824034165,-0.7023106459,-1.2157568079,-1.7625127621,1.0681830021,0.0548626848 +-1.4168288009,0.3173185649,0.3966970801,0.9266456684,1.1467266899,1.0783139089 +-1.5213818254,1.9941492621,-1.5504022693,0.5449771021,1.1010370714,-0.5725669458 +-0.8728563506,-1.6405651136,-2.7984335195,-1.3287778626,1.8112662715,-0.7613059513 +-0.8930472642,-0.9742220439,-3.3894928531,0.8320819873,1.5448850205,0.0165886191 +0.1250915825,1.5504269091,-2.4914027553,0.9452870846,1.1324295196,1.1501433890 +-1.8652757779,-0.6818472965,-1.6163238444,-2.2579986864,0.5608115835,-0.6140196319 +-3.9626826323,-3.2092344563,-1.4233404934,-0.5331121887,0.7776151278,0.8829388005 +-4.2813759648,-1.1971645598,-2.8329322691,-0.0407892772,0.9729145885,-0.6540706786 +-2.7752413032,1.1579217827,-4.6927384743,2.6287925977,2.1101506790,-0.5005567646 +-1.2813490554,-0.9004251582,-2.6890460151,-0.3193061440,0.1636948521,-0.1900067337 +-1.3002128250,-1.0133315331,-0.9856593216,-0.1865643066,1.5641926098,-0.1289767473 +-1.1209432392,-0.8356231294,-1.0253411276,0.0783527779,1.9933869365,-0.0983934093 +-0.7160549811,-0.4361486921,-1.5207093122,-1.7016476683,1.3334599846,0.0180016686 +-1.2503359119,0.1208554565,-2.9650761748,1.0694129984,0.6724434919,1.8371689133 +-1.4019149923,-1.6212630600,-3.4998869286,0.1470408971,2.4563386746,-1.4115525949 +-1.0649476783,1.9552219709,0.0439555888,-0.9930014500,2.7184885336,0.0402019355 +-2.2330511144,0.1328346633,1.0804783938,1.1586583868,1.6162692911,0.5528921341 +-3.7359587094,-0.5792375455,-1.6798817725,1.3804925853,1.5271472164,-0.1963872748 +-0.8396070361,-0.5144901897,-3.9298730444,2.0499648200,1.7442357509,-0.0174545482 +0.4480116858,-0.4000748258,-1.4340057500,-1.8562251679,1.5143578190,1.2500905323 +0.8655230824,2.5402904023,0.5041406189,-2.4285315078,1.4279204392,0.5851469388 +1.2842021684,-0.1895294291,1.4358162463,2.0238232693,1.4914819871,0.2014324034 +2.4772377123,1.7439596597,-0.2831525951,2.5245902582,1.2454449659,-1.2664721370 +1.2995247423,-1.0811317817,-2.4909705166,-0.3781073580,1.1141963772,-0.1697198945 +0.6547440333,0.0739974874,-0.9122184142,-3.1224952598,0.8958961277,0.2349331971 +1.0734662321,1.5064198359,2.3641023134,-0.7487764855,-0.2702981944,1.0171453552 +-0.1772220022,0.2844991198,1.4007363409,-1.3935309849,-0.7432409353,0.3624311814 +1.4499995860,3.9949663017,-2.1643535040,-0.1362666439,-0.6588565073,-0.7313355419 +1.6184745724,-0.1070057245,-1.5717090504,2.4389179627,-0.5686134794,0.3808346092 +0.4545150240,1.7575456936,-0.1789339141,0.6206301702,-0.9812633351,1.3699585826 +0.5819679587,1.5456178088,-0.6532141971,-0.3903061051,-1.1788864076,-0.0715962819 +-0.0373922749,1.8481406871,-1.2425672267,-0.2366133231,-0.3735460392,0.0791485023 +-0.3262154627,0.6416151927,-2.5569517603,-3.1998385992,-1.8157020851,-0.4604962194 +-0.2624085386,2.4813483132,-1.7352642290,-1.0060486877,-1.9444980697,-1.0135944700 +0.5990810057,0.3946008799,-2.7206275074,-0.3907168865,-1.2286655680,0.7884430659 +1.1677925264,0.9823999162,-1.9838418190,1.9009855885,-1.9936268413,1.0648990157 +-0.0242419526,1.6579778352,-0.8622162642,1.7166379289,-2.6519621439,0.2648565010 +0.8556630805,1.2571180247,-3.1940126129,3.0023183245,-1.2097113532,-1.5028756793 +0.2461674432,1.1154821310,-4.0562078792,-1.3976721932,-1.0659690380,-0.3586432882 +-1.7523734581,1.0831009776,-1.1328555090,-1.6448655080,-2.4805259305,0.0748449557 +-0.7622735321,2.5445968520,-1.3474118386,-0.3827524011,-1.9358082418,0.1161464833 +-2.4375071354,1.5792885795,-1.1888045215,2.4747579219,-1.4298899073,-0.4531675605 +-2.1863110474,1.4562343820,-1.4793189060,-0.1090743558,-2.6900725310,-0.4802472553 +-0.4295401364,1.5164984377,-3.5881853261,-1.2054182408,-1.7403355445,0.0814455794 +1.0718210343,0.5952710786,-2.1797750765,-0.9424338382,-3.0032189093,-0.5242828063 +0.4814657742,0.5249362122,1.4810189187,0.1743829464,-1.4367616036,-0.2111740114 +-0.1043525855,4.1977626861,0.5216887365,3.4711021841,-1.2225734080,0.4539091272 +-0.2076617475,1.3109175187,-3.3774029545,-0.1238587343,-2.4442355674,0.3851996185 +-2.3129893767,-0.4272436071,-6.2822835056,-1.4152249750,-0.8338866836,-1.6276427077 +0.7541465227,0.4445037065,-1.8000591047,-1.9044228390,-1.1117013488,0.1474174057 +-0.4465488058,0.3426857597,2.8538663169,-0.7484703140,-0.9396405954,0.3793901820 +1.4186167514,-0.4192502254,-1.0352231211,-0.1491560044,-1.6702950735,0.4290059104 +0.8549718861,-1.6433666592,-5.9582723784,2.0410661876,-1.2083944797,0.0727152875 +2.1120637429,-0.3111954216,-5.0111825305,-0.1490941110,-1.0730858180,-0.0384131860 +3.7729753634,-2.8781244821,0.3742125184,-0.9779334936,-1.5277982950,0.9679474460 +3.6542389088,-2.1083019103,1.0789240199,-2.5940151708,-3.1028774639,-0.6058180272 +5.3349823115,-1.7365829113,-0.2619387883,-1.1070437203,-1.2150521322,0.2637801316 +3.1268827980,-2.1346173214,-4.3615621881,0.2289021736,-1.7632557039,-0.3819127673 +3.2519010915,-1.5666295614,-4.4176521774,2.7181319217,-2.5492504107,0.1082970178 +1.3740433163,-1.1125334935,-1.5630197132,0.4084797179,-2.3907615779,-0.3538469698 +-0.3392089132,-0.9764982955,1.2301954749,0.7585873959,-2.6051499434,-0.0260258437 +-0.7793716773,0.4441483493,-0.3260806117,0.5675130184,-2.0031851055,0.7302679880 +-1.6525897375,0.8631620874,-2.6442323919,-2.6731892614,-2.6712739933,-0.0745754515 +-2.1897934509,0.9086395532,-4.4451183497,-1.5390337843,-1.0030057516,-1.2302494243 +-1.1138465131,-0.9762150011,-3.3553610967,-0.7983483421,-1.7801110831,0.9945025296 +-1.5116890598,-0.5288542986,0.8494062751,-0.6088902784,-1.6935881967,-0.0804103403 +-1.7680809037,1.1475924778,1.0062765761,-0.1497311711,-1.1094577937,-0.6952651862 +-1.7523820122,0.2172115515,-2.9357174308,1.7893529399,-1.1224428991,-0.1881616411 +-2.3884344544,-1.1202131470,-5.7612985154,0.6713807325,-0.5750085736,0.3563675558 +0.2931547679,0.0466529228,-3.6017649228,0.3518818293,-0.2230696301,-0.6098595622 +1.5586506828,-0.5765740080,-0.2909920070,-0.8763594313,-1.7758693967,-0.3695068467 +2.6395925237,-2.6153018576,-0.2728753983,0.2360621960,-0.1399368585,0.3326980085 +0.7981638702,-0.0445198177,-2.5387682995,0.4804590954,-1.3718574215,0.0824322437 +-0.0921250407,-0.0221316898,-5.5770578234,2.0309712020,-1.1184679531,-0.7870188278 +-0.5284000069,0.8538801836,-3.4588149965,1.8674792420,-2.2126137375,0.4578480052 +-0.7217203578,1.4126146061,-0.4063564512,0.4030744193,-1.2131063992,0.5307676195 +-1.3948931843,-0.2674722234,0.0175201241,-1.0068911460,-1.8862011079,-0.5981455166 +-1.8735467110,1.8116816647,-3.6025131711,-1.1815889680,-1.8564908345,-0.3413296061 +-0.4060974323,1.6628946701,-4.4260528884,-1.2552626442,-1.8576330851,-0.0749022192 +-0.0301311474,1.9279826136,-2.8449486278,1.4206422449,-0.7022680094,0.2865090459 +0.8259012764,0.0607134489,-0.5240789186,1.2564691179,-2.7766211883,0.0389251833 +1.6569259487,-0.5401595669,-1.7934613892,0.0898480083,-1.9480861217,0.2500050562 +0.0250172882,1.2919759990,-4.9213401805,-1.7194346825,-0.1194241881,0.6790874598 +-1.5885071693,0.3557109932,-4.5037747423,-0.5542074345,-0.5824444108,-0.1737813057 +0.3606805309,-2.6410107058,-1.4282638635,-0.9812648815,-0.8719853138,0.7281875326 +0.5042367665,0.3272914000,-1.9458345514,1.8368949935,0.1426576459,-0.1155751694 +1.7116841946,-1.3419253550,-3.8790955680,-0.5429955877,0.9180592376,1.6106795141 +0.5713230237,-1.0279868656,-3.6429959983,0.7095592582,0.6321300515,0.1279294588 +0.8297285478,-0.2475638936,-3.4013311484,0.8754590236,-0.0130833912,0.0680232654 +-0.0798568998,-1.3848602914,-2.4662910020,-1.2184170484,0.0366583738,-1.2317008718 +-1.3958764848,-1.0422433619,-1.5509026730,-1.3753244825,0.0732867940,-0.2511593134 +-1.9809578251,0.2093175475,-2.2413219707,-1.0856967237,-0.0452509227,0.4209788064 +-4.5615913311,-1.7164813371,-3.4645632276,-0.9866729228,-0.6946507691,0.6356840057 +-3.5089874335,1.0357439399,-3.0541773162,-1.3095915191,-1.0381416372,-1.3436236473 +-3.5408033688,-2.2505705109,-1.8926610569,2.3300577425,-0.3279427662,0.7769781033 +-2.7716883286,-1.3059871787,-1.2677386737,0.6807427993,-0.5362105759,-0.7414953765 +-0.3833824698,0.4783876773,-0.9768972562,1.4194967320,-1.7658957148,-0.4922793137 +0.3753362302,-2.4705260227,-3.2994043724,0.0374146068,-1.4989944409,-0.1077669226 +-0.2997670025,-0.4700555282,-3.7866976029,0.3206688162,-0.5785678759,0.4135944532 +1.2459176292,-0.9182353863,-1.2537723305,0.8194149569,-1.5889323840,-1.0019921528 +0.7219705499,-1.7420497454,-0.0510096850,-0.0749727048,-0.8060996780,-0.6388339120 +2.2404862053,-0.5683991422,-1.8386025507,-0.7525785711,-0.8565325697,0.7279608048 +0.6264065513,-0.9797188331,-2.2915769846,0.4974650280,-0.1908098176,-1.1933227060 +1.2313195610,-0.2524204467,-3.5495934954,1.4880381433,0.2060950618,1.1208005818 +2.3585163828,0.0699417054,-3.3337948073,0.7291312325,0.0334544634,1.0389100177 +1.4395618963,0.1898197299,-0.0651467933,-1.5222724810,0.7871502459,-0.1505139527 +0.5792016952,0.0282842788,-1.0815792420,-0.1921602022,-1.0681695819,-1.2379870359 +0.9910270042,-0.0383697880,-2.1905731918,-1.4530607123,0.3965624818,-0.1159159679 +-0.4027082823,-0.3524741915,-4.5395124721,0.9843638297,0.1752483979,1.0589430282 +-2.3934561119,0.4958762748,-2.8169763461,2.3938783898,-3.1028647588,0.3630654055 +-1.0119956793,-0.5851394502,-0.0863233667,0.8541492764,-1.9050816384,1.0101338922 +0.3951863429,0.1730843225,-1.3423503081,-2.0563670427,-1.4448693470,-0.4008797162 +1.5706272587,-1.2578025824,-1.8934536112,-2.6898235059,-2.6907137325,-0.2481786602 +1.2514779772,-0.3787382666,-3.0387517878,0.6925260742,-2.6805748890,-0.0429137010 +0.5380821068,-2.3874938512,-1.9865802055,3.1014911327,-2.5755396252,0.3029670937 +0.6681404456,0.9977272973,-1.1362114684,2.2270411595,-1.7669343741,0.3345230900 +-0.5577752593,0.7783410681,-1.6131321159,0.7657330631,-2.1785923550,-1.1356502219 +-2.4185115665,-0.3421351490,-0.9016631610,-2.6284479266,-1.3020452996,0.7718316330 +-2.9949021630,-0.3487288598,-1.5031402458,-0.4751231777,-1.9134851625,-1.5801448699 +-0.5451030802,1.6550314250,-2.6499431012,2.5666422102,-1.4966149111,-1.0127436307 +-1.1441693265,0.7439416371,-1.9329612145,-0.7594972589,-0.9167275167,0.3817472381 +-3.6456893115,-1.3410460576,-1.9880083685,-0.7596059245,-1.2139250762,0.8954098239 +-3.9044841014,-0.3431132663,-0.2145194435,-1.3342729049,-1.0169574900,-0.5786249078 +-2.6389165349,0.3301961313,-1.2584641125,-0.8130792151,-0.9524037889,1.3141131839 +-1.9913514191,-0.5658769266,-3.2284759789,0.3037631370,-0.9910748781,-1.2965292647 +-1.4121160414,-1.4106871144,-3.9816677919,-0.3743598585,-0.4242426436,1.2975813886 +-2.6637567508,-1.3597886741,-1.1549380496,1.4090782323,-1.3170842802,-0.0112667539 +-1.9807187351,0.2568721567,-0.7313640111,1.2146253910,-1.0831080317,0.4941217206 +-0.4038792973,-1.3167504033,-2.9267204578,0.1858306170,-0.2316435192,1.2616332988 +-1.0824683912,0.4482802736,-3.9317875756,-0.2060763213,-1.5729467084,-0.3947597342 +0.4398962048,0.5285610573,-1.8019850981,-0.1332348834,-0.9186307575,-1.2980915221 +-0.9892132283,-0.2184199454,-0.5393619258,-3.2605978992,0.0556403176,1.8391164431 +-0.1795436432,2.7389403749,-2.9768804536,1.1855338900,0.1634190660,-0.2017697583 +-0.4500016338,1.1752951286,-3.5066103886,-1.9759240640,-0.6709051154,0.8818860021 +0.4372161970,2.4192075123,-2.7256311999,2.8077499707,1.1706347223,-0.6429555574 diff --git a/statsmodels/tsa/tests/test_adfuller_lag.py b/statsmodels/tsa/tests/test_adfuller_lag.py new file mode 100644 index 0000000..97140d4 --- /dev/null +++ b/statsmodels/tsa/tests/test_adfuller_lag.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +"""Test for autolag of adfuller, unitroot_adf + +Created on Wed May 30 21:39:46 2012 +Author: Josef Perktold +""" +from statsmodels.compat.python import iteritems +import numpy as np +from numpy.testing import assert_equal, assert_almost_equal +import statsmodels.tsa.stattools as tsast +from statsmodels.datasets import macrodata + + +def test_adf_autolag(): + #see issue #246 + #this is mostly a unit test + d2 = macrodata.load_pandas().data + + for k_trend, tr in enumerate(['nc', 'c', 'ct', 'ctt']): + #[None:'nc', 0:'c', 1:'ct', 2:'ctt'] + x = np.log(d2['realgdp'].values) + xd = np.diff(x) + + #check exog + adf3 = tsast.adfuller(x, maxlag=None, autolag='aic', + regression=tr, store=True, regresults=True) + st2 = adf3[-1] + + assert_equal(len(st2.autolag_results), 15 + 1) #+1 for lagged level + for l, res in sorted(iteritems(st2.autolag_results))[:5]: + lag = l-k_trend + #assert correct design matrices in _autolag + assert_equal(res.model.exog[-10:,k_trend], x[-11:-1]) + assert_equal(res.model.exog[-1,k_trend+1:], xd[-lag:-1][::-1]) + #min-ic lag of dfgls in Stata is also 2, or 9 for maic with notrend + assert_equal(st2.usedlag, 2) + + #same result with lag fixed at usedlag of autolag + adf2 = tsast.adfuller(x, maxlag=2, autolag=None, regression=tr) + assert_almost_equal(adf3[:2], adf2[:2], decimal=12) + + tr = 'c' + #check maxlag with autolag + adf3 = tsast.adfuller(x, maxlag=5, autolag='aic', + regression=tr, store=True, regresults=True) + assert_equal(len(adf3[-1].autolag_results), 5 + 1) + adf3 = tsast.adfuller(x, maxlag=0, autolag='aic', + regression=tr, store=True, regresults=True) + assert_equal(len(adf3[-1].autolag_results), 0 + 1) diff --git a/statsmodels/tsa/tests/test_ar.py b/statsmodels/tsa/tests/test_ar.py new file mode 100644 index 0000000..c68d252 --- /dev/null +++ b/statsmodels/tsa/tests/test_ar.py @@ -0,0 +1,379 @@ +""" +Test AR Model +""" +import statsmodels.api as sm +from statsmodels.compat.python import range +from statsmodels.tsa.ar_model import AR +from statsmodels.tsa.arima_model import ARMA +from numpy.testing import (assert_almost_equal, assert_allclose, assert_) +from statsmodels.tools.testing import assert_equal +from .results import results_ar + +import pytest +import numpy as np +import numpy.testing as npt +from pandas import Series, Index, date_range, period_range + + +DECIMAL_6 = 6 +DECIMAL_5 = 5 +DECIMAL_4 = 4 + + +class CheckARMixin(object): + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, DECIMAL_6) + + def test_bse(self): + bse = np.sqrt(np.diag(self.res1.cov_params())) + # no dof correction for compatability with Stata + + assert_almost_equal(bse, self.res2.bse_stata, DECIMAL_6) + assert_almost_equal(self.res1.bse, self.res2.bse_gretl, DECIMAL_5) + + def test_llf(self): + assert_almost_equal(self.res1.llf, self.res2.llf, DECIMAL_6) + + def test_fpe(self): + assert_almost_equal(self.res1.fpe, self.res2.fpe, DECIMAL_6) + + def test_pickle(self): + from statsmodels.compat.python import BytesIO + fh = BytesIO() + #test wrapped results load save pickle + self.res1.save(fh) + fh.seek(0,0) + res_unpickled = self.res1.__class__.load(fh) + assert type(res_unpickled) is type(self.res1) # noqa: E721 + + +class TestAROLSConstant(CheckARMixin): + """ + Test AR fit by OLS with a constant. + """ + @classmethod + def setup_class(cls): + data = sm.datasets.sunspots.load(as_pandas=False) + cls.res1 = AR(data.endog).fit(maxlag=9, method='cmle') + cls.res2 = results_ar.ARResultsOLS(constant=True) + + def test_predict(self): + model = self.res1.model + params = self.res1.params + assert_almost_equal(model.predict(params),self.res2.FVOLSnneg1start0, + DECIMAL_4) + assert_almost_equal(model.predict(params),self.res2.FVOLSnneg1start9, + DECIMAL_4) + assert_almost_equal(model.predict(params, start=100), + self.res2.FVOLSnneg1start100, DECIMAL_4) + assert_almost_equal(model.predict(params, start=9, end=200), + self.res2.FVOLSn200start0, DECIMAL_4) + assert_almost_equal(model.predict(params, start=200, end=400), + self.res2.FVOLSn200start200, DECIMAL_4) + #assert_almost_equal(model.predict(params, n=200,start=-109), + # self.res2.FVOLSn200startneg109, DECIMAL_4) + assert_almost_equal(model.predict(params, start=308, end=424), + self.res2.FVOLSn100start325, DECIMAL_4) + assert_almost_equal(model.predict(params, start=9, end=310), + self.res2.FVOLSn301start9, DECIMAL_4) + assert_almost_equal(model.predict(params), + self.res2.FVOLSdefault, DECIMAL_4) + assert_almost_equal(model.predict(params, start=308, end=316), + self.res2.FVOLSn4start312, DECIMAL_4) + assert_almost_equal(model.predict(params, start=308, end=327), + self.res2.FVOLSn15start312, DECIMAL_4) + + +class TestAROLSNoConstant(CheckARMixin): + """f + Test AR fit by OLS without a constant. + """ + @classmethod + def setup_class(cls): + data = sm.datasets.sunspots.load(as_pandas=False) + cls.res1 = AR(data.endog).fit(maxlag=9, method='cmle', trend='nc') + cls.res2 = results_ar.ARResultsOLS(constant=False) + + def test_predict(self): + model = self.res1.model + params = self.res1.params + assert_almost_equal(model.predict(params),self.res2.FVOLSnneg1start0, + DECIMAL_4) + assert_almost_equal(model.predict(params),self.res2.FVOLSnneg1start9, + DECIMAL_4) + assert_almost_equal(model.predict(params, start=100), + self.res2.FVOLSnneg1start100, DECIMAL_4) + assert_almost_equal(model.predict(params, start=9, end=200), + self.res2.FVOLSn200start0, DECIMAL_4) + assert_almost_equal(model.predict(params, start=200, end=400), + self.res2.FVOLSn200start200, DECIMAL_4) + #assert_almost_equal(model.predict(params, n=200,start=-109), + # self.res2.FVOLSn200startneg109, DECIMAL_4) + assert_almost_equal(model.predict(params, start=308,end=424), + self.res2.FVOLSn100start325, DECIMAL_4) + assert_almost_equal(model.predict(params, start=9, end=310), + self.res2.FVOLSn301start9, DECIMAL_4) + assert_almost_equal(model.predict(params), + self.res2.FVOLSdefault, DECIMAL_4) + assert_almost_equal(model.predict(params, start=308, end=316), + self.res2.FVOLSn4start312, DECIMAL_4) + assert_almost_equal(model.predict(params, start=308, end=327), + self.res2.FVOLSn15start312, DECIMAL_4) + + def test_mle(self): + # check predict with no constant, #3945 + res1 = self.res1 + endog = res1.model.endog + res0 = AR(endog).fit(maxlag=9, method='mle', trend='nc', disp=0) + assert_allclose(res0.fittedvalues[-10:], res0.fittedvalues[-10:], + rtol=0.015) + + res_arma = ARMA(endog, (9, 0)).fit(method='mle', trend='nc', disp=0) + assert_allclose(res0.params, res_arma.params, atol=5e-6) + assert_allclose(res0.fittedvalues[-10:], res_arma.fittedvalues[-10:], + rtol=1e-4) + + +class TestARMLEConstant(object): + @classmethod + def setup_class(cls): + data = sm.datasets.sunspots.load(as_pandas=False) + cls.res1 = AR(data.endog).fit(maxlag=9,method="mle", disp=-1) + cls.res2 = results_ar.ARResultsMLE(constant=True) + + def test_predict(self): + model = self.res1.model + # for some reason convergence is off in 1 out of 10 runs on + # some platforms. i've never been able to replicate. see #910 + params = np.array([ 5.66817602, 1.16071069, -0.39538222, + -0.16634055, 0.15044614, -0.09439266, + 0.00906289, 0.05205291, -0.08584362, + 0.25239198]) + assert_almost_equal(model.predict(params), self.res2.FVMLEdefault, + DECIMAL_4) + assert_almost_equal(model.predict(params, start=9, end=308), + self.res2.FVMLEstart9end308, DECIMAL_4) + assert_almost_equal(model.predict(params, start=100, end=308), + self.res2.FVMLEstart100end308, DECIMAL_4) + assert_almost_equal(model.predict(params, start=0, end=200), + self.res2.FVMLEstart0end200, DECIMAL_4) + + # Note: factor 0.5 in below two tests needed to meet precision on OS X. + assert_almost_equal(0.5 * model.predict(params, start=200, end=333), + 0.5 * self.res2.FVMLEstart200end334, DECIMAL_4) + assert_almost_equal(0.5 * model.predict(params, start=308, end=333), + 0.5 * self.res2.FVMLEstart308end334, DECIMAL_4) + + assert_almost_equal(model.predict(params, start=9,end=309), + self.res2.FVMLEstart9end309, DECIMAL_4) + assert_almost_equal(model.predict(params, end=301), + self.res2.FVMLEstart0end301, DECIMAL_4) + assert_almost_equal(model.predict(params, start=4, end=312), + self.res2.FVMLEstart4end312, DECIMAL_4) + assert_almost_equal(model.predict(params, start=2, end=7), + self.res2.FVMLEstart2end7, DECIMAL_4) + + def test_dynamic_predict(self): + # for some reason convergence is off in 1 out of 10 runs on + # some platforms. i've never been able to replicate. see #910 + params = np.array([ 5.66817602, 1.16071069, -0.39538222, + -0.16634055, 0.15044614, -0.09439266, + 0.00906289, 0.05205291, -0.08584362, + 0.25239198]) + res1 = self.res1 + res2 = self.res2 + + rtol = 8e-6 + # assert_raises pre-sample + + # 9, 51 + start, end = 9, 51 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_allclose(fv, res2.fcdyn[start:end+1], rtol=rtol) + + # 9, 308 + start, end = 9, 308 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_allclose(fv, res2.fcdyn[start:end+1], rtol=rtol) + + # 9, 333 + start, end = 9, 333 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_allclose(fv, res2.fcdyn[start:end+1], rtol=rtol) + + # 100, 151 + start, end = 100, 151 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_allclose(fv, res2.fcdyn2[start:end+1], rtol=rtol) + + # 100, 308 + start, end = 100, 308 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_allclose(fv, res2.fcdyn2[start:end+1], rtol=rtol) + + # 100, 333 + start, end = 100, 333 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_allclose(fv, res2.fcdyn2[start:end+1], rtol=rtol) + + # 308, 308 + start, end = 308, 308 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_allclose(fv, res2.fcdyn3[start:end+1], rtol=rtol) + + # 308, 333 + start, end = 308, 333 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_allclose(fv, res2.fcdyn3[start:end+1], rtol=rtol) + + # 309, 333 + start, end = 309, 333 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_allclose(fv, res2.fcdyn4[start:end+1], rtol=rtol) + + # None, None + start, end = None, None + fv = res1.model.predict(params, dynamic=True) + assert_allclose(fv, res2.fcdyn[9:309], rtol=rtol) + + +class TestAutolagAR(object): + @classmethod + def setup_class(cls): + data = sm.datasets.sunspots.load(as_pandas=False) + endog = data.endog + results = [] + for lag in range(1,16+1): + endog_tmp = endog[16-lag:] + r = AR(endog_tmp).fit(maxlag=lag) + # See issue #324 for why we're doing these corrections vs. R + # results + k_ar = r.k_ar + k_trend = r.k_trend + log_sigma2 = np.log(r.sigma2) + aic = r.aic + aic = (aic - log_sigma2) * (1 + k_ar)/(1 + k_ar + k_trend) + aic += log_sigma2 + + hqic = r.hqic + hqic = (hqic - log_sigma2) * (1 + k_ar)/(1 + k_ar + k_trend) + hqic += log_sigma2 + + bic = r.bic + bic = (bic - log_sigma2) * (1 + k_ar)/(1 + k_ar + k_trend) + bic += log_sigma2 + + results.append([aic, hqic, bic, r.fpe]) + res1 = np.asarray(results).T.reshape(4,-1, order='C') + # aic correction to match R + cls.res1 = res1 + cls.res2 = results_ar.ARLagResults("const").ic + + def test_ic(self): + + npt.assert_almost_equal(self.res1, self.res2, DECIMAL_6) + + +def test_ar_dates(): + # just make sure they work + data = sm.datasets.sunspots.load(as_pandas=False) + dates = date_range(start='1700', periods=len(data.endog), freq='A') + endog = Series(data.endog, index=dates) + ar_model = sm.tsa.AR(endog, freq='A').fit(maxlag=9, method='mle', disp=-1) + pred = ar_model.predict(start='2005', end='2015') + predict_dates = date_range(start='2005', end='2016', freq='A')[:11] + + assert_equal(ar_model.data.predict_dates, predict_dates) + assert_equal(pred.index, predict_dates) + + +def test_ar_named_series(reset_randomstate): + dates = period_range(start="2011-1", periods=72, freq='M') + y = Series(np.random.randn(72), name="foobar", index=dates) + results = sm.tsa.AR(y).fit(2) + assert_(results.params.index.equals(Index(["const", "L1.foobar", + "L2.foobar"]))) + + +@pytest.mark.smoke +def test_ar_start_params(): + # fix GH#236 + data = sm.datasets.sunspots.load(as_pandas=False) + res = AR(data.endog).fit(maxlag=9, start_params=0.1*np.ones(10), + method="mle", disp=-1, maxiter=100) + + +@pytest.mark.smoke +def test_ar_series(): + # GH#773 + dta = sm.datasets.macrodata.load_pandas().data["cpi"].diff().dropna() + dates = period_range(start='1959Q1', periods=len(dta), freq='Q') + dta.index = dates + ar = AR(dta).fit(maxlags=15) + ar.bse + + +def test_ar_select_order(): + # GH#2118 + np.random.seed(12345) + y = sm.tsa.arma_generate_sample([1, -.75, .3], [1], 100) + ts = Series(y, index=date_range(start='1/1/1990', periods=100, + freq='M')) + ar = AR(ts) + res = ar.select_order(maxlag=12, ic='aic') + assert_(res == 2) + + +# GH 2658 +def test_ar_select_order_tstat(): + rs = np.random.RandomState(123) + tau = 25 + y = rs.randn(tau) + ts = Series(y, index=date_range(start='1/1/1990', periods=tau, + freq='M')) + + ar = AR(ts) + res = ar.select_order(maxlag=5, ic='t-stat') + assert_equal(res, 0) + + +def test_constant_column_trend(): + # GH#5258, after calling lagmat, the sample below has a constant column, + # which used to cause the result.k_trend attribute to be set incorrectly + # See also GH#5538 + + sample = np.array([ + 0.46341460943222046, 0.46341460943222046, 0.39024388790130615, + 0.4146341383457184, 0.4146341383457184, 0.4146341383457184, + 0.3414634168148041, 0.4390243887901306, 0.46341460943222046, + 0.4390243887901306]) + model = AR(sample) + + # Fitting with a constant and maxlag=7 raises because of regressor + # collinearity. + with pytest.raises(ValueError, match="trend='c' is not allowed"): + model.fit(trend="c") + + res = model.fit(trend="nc") + assert res.k_trend == 0 + assert res.k_ar == 7 + assert len(res.params) == 7 + pred = res.predict(start=10, end=12) + # expected numbers are regression-test + expected = np.array([0.44687422, 0.45608137, 0.47046381]) + assert_allclose(pred, expected) + + +#TODO: likelihood for ARX model? +#class TestAutolagARX(object): +# def setup(self): +# data = sm.datasets.macrodata.load(as_pandas=False) +# endog = data.data.realgdp +# exog = data.data.realint +# results = [] +# for lag in range(1, 26): +# endog_tmp = endog[26-lag:] +# exog_tmp = exog[26-lag:] +# r = AR(endog_tmp, exog_tmp).fit(maxlag=lag, trend='ct') +# results.append([r.aic, r.hqic, r.bic, r.fpe]) +# self.res1 = np.asarray(results).T.reshape(4,-1, order='C') diff --git a/statsmodels/tsa/tests/test_arima.py b/statsmodels/tsa/tests/test_arima.py new file mode 100644 index 0000000..5e1114d --- /dev/null +++ b/statsmodels/tsa/tests/test_arima.py @@ -0,0 +1,2502 @@ +from statsmodels.compat.python import lrange, BytesIO, cPickle +from statsmodels.compat.platform import PLATFORM_OSX, PLATFORM_WIN + +import os +import warnings + +import numpy as np +from numpy.testing import (assert_almost_equal, assert_, assert_allclose, + assert_raises) +import pandas as pd +from pandas import DatetimeIndex, date_range, period_range +import pytest + +from statsmodels.datasets.macrodata import load_pandas as load_macrodata_pandas +import statsmodels.sandbox.tsa.fftarma as fa +from statsmodels.tools.testing import assert_equal +from statsmodels.tools.sm_exceptions import ( + ValueWarning, HessianInversionWarning) +from statsmodels.tsa.arma_mle import Arma +from statsmodels.tsa.arima_model import AR, ARMA, ARIMA +from statsmodels.regression.linear_model import OLS +from statsmodels.tsa.tests.results import results_arma, results_arima +from statsmodels.tsa.arima_process import arma_generate_sample + +DECIMAL_4 = 4 +DECIMAL_3 = 3 +DECIMAL_2 = 2 +DECIMAL_1 = 1 + +current_path = os.path.dirname(os.path.abspath(__file__)) +ydata_path = os.path.join(current_path, 'results', 'y_arma_data.csv') +with open(ydata_path, "rb") as fd: + y_arma = np.genfromtxt(fd, delimiter=",", skip_header=1, dtype=float) + +cpi_dates = period_range(start='1959q1', end='2009q3', freq='Q') +sun_dates = period_range(start='1700', end='2008', freq='A') +cpi_predict_dates = period_range(start='2009q3', end='2015q4', freq='Q') +sun_predict_dates = period_range(start='2008', end='2033', freq='A') + + +def test_compare_arma(): + #this is a preliminary test to compare arma_kf, arma_cond_ls and arma_cond_mle + #the results returned by the fit methods are incomplete + #for now without random.seed + + np.random.seed(9876565) + x = fa.ArmaFft([1, -0.5], [1., 0.4], 40).generate_sample(nsample=200, + burnin=1000) + + # this used kalman filter through descriptive + #d = ARMA(x) + #d.fit((1,1), trend='nc') + #dres = d.res + + modkf = ARMA(x, (1,1)) + ##rkf = mkf.fit((1,1)) + ##rkf.params + reskf = modkf.fit(trend='nc', disp=-1) + dres = reskf + + modc = Arma(x) + resls = modc.fit(order=(1,1)) + rescm = modc.fit_mle(order=(1,1), start_params=[0.4,0.4, 1.], disp=0) + + #decimal 1 corresponds to threshold of 5% difference + #still different sign corrcted + #assert_almost_equal(np.abs(resls[0] / d.params), np.ones(d.params.shape), decimal=1) + assert_almost_equal(resls[0] / dres.params, np.ones(dres.params.shape), + decimal=1) + #rescm also contains variance estimate as last element of params + + #assert_almost_equal(np.abs(rescm.params[:-1] / d.params), np.ones(d.params.shape), decimal=1) + assert_almost_equal(rescm.params[:-1] / dres.params, + np.ones(dres.params.shape), decimal=1) + #return resls[0], d.params, rescm.params + + +class CheckArmaResultsMixin(object): + """ + res2 are the results from gretl. They are in results/results_arma. + res1 are from statsmodels + """ + decimal_params = DECIMAL_4 + + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, + self.decimal_params) + + decimal_aic = DECIMAL_4 + + def test_aic(self): + assert_almost_equal(self.res1.aic, self.res2.aic, self.decimal_aic) + + decimal_bic = DECIMAL_4 + + def test_bic(self): + assert_almost_equal(self.res1.bic, self.res2.bic, self.decimal_bic) + + decimal_arroots = DECIMAL_4 + + def test_arroots(self): + assert_almost_equal(self.res1.arroots, self.res2.arroots, + self.decimal_arroots) + + decimal_maroots = DECIMAL_4 + + def test_maroots(self): + assert_almost_equal(self.res1.maroots, self.res2.maroots, + self.decimal_maroots) + + decimal_bse = DECIMAL_2 + + def test_bse(self): + assert_almost_equal(self.res1.bse, self.res2.bse, self.decimal_bse) + + decimal_cov_params = DECIMAL_4 + + def test_covparams(self): + assert_almost_equal(self.res1.cov_params(), self.res2.cov_params, + self.decimal_cov_params) + + decimal_hqic = DECIMAL_4 + + def test_hqic(self): + assert_almost_equal(self.res1.hqic, self.res2.hqic, self.decimal_hqic) + + decimal_llf = DECIMAL_4 + + def test_llf(self): + assert_almost_equal(self.res1.llf, self.res2.llf, self.decimal_llf) + + decimal_resid = DECIMAL_4 + + def test_resid(self): + assert_almost_equal(self.res1.resid, self.res2.resid, + self.decimal_resid) + + decimal_fittedvalues = DECIMAL_4 + + def test_fittedvalues(self): + assert_almost_equal(self.res1.fittedvalues, self.res2.fittedvalues, + self.decimal_fittedvalues) + + decimal_pvalues = DECIMAL_2 + + def test_pvalues(self): + assert_almost_equal(self.res1.pvalues, self.res2.pvalues, + self.decimal_pvalues) + + decimal_t = DECIMAL_2 # only 2 decimal places in gretl output + + def test_tvalues(self): + assert_almost_equal(self.res1.tvalues, self.res2.tvalues, + self.decimal_t) + + decimal_sigma2 = DECIMAL_4 + + def test_sigma2(self): + assert_almost_equal(self.res1.sigma2, self.res2.sigma2, + self.decimal_sigma2) + + @pytest.mark.smoke + def test_summary(self): + self.res1.summary() + + +class CheckForecastMixin(object): + decimal_forecast = DECIMAL_4 + + def test_forecast(self): + assert_almost_equal(self.res1.forecast_res, self.res2.forecast, + self.decimal_forecast) + + decimal_forecasterr = DECIMAL_4 + + def test_forecasterr(self): + assert_almost_equal(self.res1.forecast_err, self.res2.forecasterr, + self.decimal_forecasterr) + + +class CheckDynamicForecastMixin(object): + decimal_forecast_dyn = 4 + + def test_dynamic_forecast(self): + assert_almost_equal(self.res1.forecast_res_dyn, self.res2.forecast_dyn, + self.decimal_forecast_dyn) + + #def test_forecasterr(self): + # assert_almost_equal(self.res1.forecast_err_dyn, + # self.res2.forecasterr_dyn, + # DECIMAL_4) + + +class CheckArimaResultsMixin(CheckArmaResultsMixin): + def test_order(self): + assert self.res1.k_diff == self.res2.k_diff + assert self.res1.k_ar == self.res2.k_ar + assert self.res1.k_ma == self.res2.k_ma + + decimal_predict_levels = DECIMAL_4 + + def test_predict_levels(self): + assert_almost_equal(self.res1.predict(typ='levels'), self.res2.linear, + self.decimal_predict_levels) + + +class Test_Y_ARMA11_NoConst(CheckArmaResultsMixin, CheckForecastMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,0] + cls.res1 = ARMA(endog, order=(1,1)).fit(trend='nc', disp=-1) + (cls.res1.forecast_res, cls.res1.forecast_err, + confint) = cls.res1.forecast(10) + cls.res2 = results_arma.Y_arma11() + + def test_pickle(self): + fh = BytesIO() + #test wrapped results load save pickle + self.res1.save(fh) + fh.seek(0,0) + res_unpickled = self.res1.__class__.load(fh) + assert type(res_unpickled) is type(self.res1) # noqa: E721 + + +class Test_Y_ARMA14_NoConst(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,1] + cls.res1 = ARMA(endog, order=(1,4)).fit(trend='nc', disp=-1) + cls.res2 = results_arma.Y_arma14() + + +@pytest.mark.slow +class Test_Y_ARMA41_NoConst(CheckArmaResultsMixin, CheckForecastMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,2] + cls.res1 = ARMA(endog, order=(4,1)).fit(trend='nc', disp=-1) + (cls.res1.forecast_res, cls.res1.forecast_err, + confint) = cls.res1.forecast(10) + cls.res2 = results_arma.Y_arma41() + cls.decimal_maroots = DECIMAL_3 + + +class Test_Y_ARMA22_NoConst(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,3] + cls.res1 = ARMA(endog, order=(2,2)).fit(trend='nc', disp=-1) + cls.res2 = results_arma.Y_arma22() + + +class Test_Y_ARMA50_NoConst(CheckArmaResultsMixin, CheckForecastMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,4] + cls.res1 = ARMA(endog, order=(5,0)).fit(trend='nc', disp=-1) + (cls.res1.forecast_res, cls.res1.forecast_err, + confint) = cls.res1.forecast(10) + cls.res2 = results_arma.Y_arma50() + + +class Test_Y_ARMA02_NoConst(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,5] + cls.res1 = ARMA(endog, order=(0,2)).fit(trend='nc', disp=-1) + cls.res2 = results_arma.Y_arma02() + + +class Test_Y_ARMA11_Const(CheckArmaResultsMixin, CheckForecastMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,6] + cls.res1 = ARMA(endog, order=(1,1)).fit(trend="c", disp=-1) + (cls.res1.forecast_res, cls.res1.forecast_err, + confint) = cls.res1.forecast(10) + cls.res2 = results_arma.Y_arma11c() + + +class Test_Y_ARMA14_Const(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,7] + cls.res1 = ARMA(endog, order=(1,4)).fit(trend="c", disp=-1) + cls.res2 = results_arma.Y_arma14c() + + +class Test_Y_ARMA41_Const(CheckArmaResultsMixin, CheckForecastMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,8] + cls.res2 = results_arma.Y_arma41c() + cls.res1 = ARMA(endog, order=(4,1)).fit(trend="c", disp=-1, + start_params=cls.res2.params) + (cls.res1.forecast_res, cls.res1.forecast_err, + confint) = cls.res1.forecast(10) + cls.decimal_cov_params = DECIMAL_3 + cls.decimal_fittedvalues = DECIMAL_3 + cls.decimal_resid = DECIMAL_3 + cls.decimal_params = DECIMAL_3 + + +class Test_Y_ARMA22_Const(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,9] + cls.res1 = ARMA(endog, order=(2,2)).fit(trend="c", disp=-1) + cls.res2 = results_arma.Y_arma22c() + + def test_summary(self): + # regression test for html of roots table #4434 + # we ignore whitespace in the assert + summ = self.res1.summary() + summ_roots = """\ + + Roots + + RealImaginaryModulusFrequency + + + AR.11.0991-1.2571j1.6698-0.1357 + + + AR.21.0991+1.2571j1.66980.1357 + + + MA.1-1.1702+0.0000j1.17020.5000 + + + MA.21.2215+0.0000j1.22150.0000 + + """ + assert_equal(summ.tables[2]._repr_html_().replace(' ', ''), + summ_roots.replace(' ', '')) + + +class Test_Y_ARMA50_Const(CheckArmaResultsMixin, CheckForecastMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,10] + cls.res1 = ARMA(endog, order=(5,0)).fit(trend="c", disp=-1) + (cls.res1.forecast_res, cls.res1.forecast_err, + confint) = cls.res1.forecast(10) + cls.res2 = results_arma.Y_arma50c() + + +class Test_Y_ARMA02_Const(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,11] + cls.res1 = ARMA(endog, order=(0,2)).fit(trend="c", disp=-1) + cls.res2 = results_arma.Y_arma02c() + + +# cov_params and tvalues are off still but not as much vs. R +class Test_Y_ARMA11_NoConst_CSS(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,0] + cls.res1 = ARMA(endog, order=(1,1)).fit(method="css", trend='nc', + disp=-1) + cls.res2 = results_arma.Y_arma11("css") + cls.decimal_t = DECIMAL_1 + + +# better vs. R +class Test_Y_ARMA14_NoConst_CSS(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,1] + cls.res1 = ARMA(endog, order=(1,4)).fit(method="css", trend='nc', + disp=-1) + cls.res2 = results_arma.Y_arma14("css") + cls.decimal_fittedvalues = DECIMAL_3 + cls.decimal_resid = DECIMAL_3 + cls.decimal_t = DECIMAL_1 + + +# bse, etc. better vs. R +# maroot is off because maparams is off a bit (adjust tolerance?) +class Test_Y_ARMA41_NoConst_CSS(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,2] + cls.res1 = ARMA(endog, order=(4,1)).fit(method="css", trend='nc', + disp=-1) + cls.res2 = results_arma.Y_arma41("css") + cls.decimal_t = DECIMAL_1 + cls.decimal_pvalues = 0 + cls.decimal_cov_params = DECIMAL_3 + cls.decimal_maroots = DECIMAL_1 + + +#same notes as above +class Test_Y_ARMA22_NoConst_CSS(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,3] + cls.res1 = ARMA(endog, order=(2,2)).fit(method="css", trend='nc', + disp=-1) + cls.res2 = results_arma.Y_arma22("css") + cls.decimal_t = DECIMAL_1 + cls.decimal_resid = DECIMAL_3 + cls.decimal_pvalues = DECIMAL_1 + cls.decimal_fittedvalues = DECIMAL_3 + + +#NOTE: gretl just uses least squares for AR CSS +# so BIC, etc. is +# -2*res1.llf + np.log(nobs)*(res1.q+res1.p+res1.k) +# with no adjustment for p and no extra sigma estimate +#NOTE: so our tests use x-12 arima results which agree with us and are +# consistent with the rest of the models +class Test_Y_ARMA50_NoConst_CSS(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,4] + cls.res1 = ARMA(endog, order=(5,0)).fit(method="css", trend='nc', + disp=-1) + cls.res2 = results_arma.Y_arma50("css") + cls.decimal_t = 0 + cls.decimal_llf = DECIMAL_1 # looks like rounding error? + + +class Test_Y_ARMA02_NoConst_CSS(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,5] + cls.res1 = ARMA(endog, order=(0,2)).fit(method="css", trend='nc', + disp=-1) + cls.res2 = results_arma.Y_arma02("css") + + +#NOTE: our results are close to --x-12-arima option and R +class Test_Y_ARMA11_Const_CSS(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,6] + cls.res1 = ARMA(endog, order=(1,1)).fit(trend="c", method="css", + disp=-1) + cls.res2 = results_arma.Y_arma11c("css") + cls.decimal_params = DECIMAL_3 + cls.decimal_cov_params = DECIMAL_3 + cls.decimal_t = DECIMAL_1 + + +class Test_Y_ARMA14_Const_CSS(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,7] + cls.res1 = ARMA(endog, order=(1,4)).fit(trend="c", method="css", + disp=-1) + cls.res2 = results_arma.Y_arma14c("css") + cls.decimal_t = DECIMAL_1 + cls.decimal_pvalues = DECIMAL_1 + + +class Test_Y_ARMA41_Const_CSS(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,8] + cls.res1 = ARMA(endog, order=(4,1)).fit(trend="c", method="css", + disp=-1) + cls.res2 = results_arma.Y_arma41c("css") + cls.decimal_t = DECIMAL_1 + cls.decimal_cov_params = DECIMAL_1 + cls.decimal_maroots = DECIMAL_3 + cls.decimal_bse = DECIMAL_1 + + +class Test_Y_ARMA22_Const_CSS(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,9] + cls.res1 = ARMA(endog, order=(2,2)).fit(trend="c", method="css", + disp=-1) + cls.res2 = results_arma.Y_arma22c("css") + cls.decimal_t = 0 + cls.decimal_pvalues = DECIMAL_1 + + +class Test_Y_ARMA50_Const_CSS(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,10] + cls.res1 = ARMA(endog, order=(5,0)).fit(trend="c", method="css", + disp=-1) + cls.res2 = results_arma.Y_arma50c("css") + cls.decimal_t = DECIMAL_1 + cls.decimal_params = DECIMAL_3 + cls.decimal_cov_params = DECIMAL_2 + + +class Test_Y_ARMA02_Const_CSS(CheckArmaResultsMixin): + @classmethod + def setup_class(cls): + endog = y_arma[:,11] + cls.res1 = ARMA(endog, order=(0,2)).fit(trend="c", method="css", + disp=-1) + cls.res2 = results_arma.Y_arma02c("css") + + +def test_reset_trend(): + endog = y_arma[:,0] + mod = ARMA(endog, order=(1,1)) + res1 = mod.fit(trend="c", disp=-1) + res2 = mod.fit(trend="nc", disp=-1) + assert_equal(len(res1.params), len(res2.params)+1) + + +@pytest.mark.slow +def test_start_params_bug(): + data = np.array([1368., 1187, 1090, 1439, 2362, 2783, 2869, 2512, 1804, + 1544, 1028, 869, 1737, 2055, 1947, 1618, 1196, 867, 997, 1862, 2525, + 3250, 4023, 4018, 3585, 3004, 2500, 2441, 2749, 2466, 2157, 1847, 1463, + 1146, 851, 993, 1448, 1719, 1709, 1455, 1950, 1763, 2075, 2343, 3570, + 4690, 3700, 2339, 1679, 1466, 998, 853, 835, 922, 851, 1125, 1299, 1105, + 860, 701, 689, 774, 582, 419, 846, 1132, 902, 1058, 1341, 1551, 1167, + 975, 786, 759, 751, 649, 876, 720, 498, 553, 459, 543, 447, 415, 377, + 373, 324, 320, 306, 259, 220, 342, 558, 825, 994, 1267, 1473, 1601, + 1896, 1890, 2012, 2198, 2393, 2825, 3411, 3406, 2464, 2891, 3685, 3638, + 3746, 3373, 3190, 2681, 2846, 4129, 5054, 5002, 4801, 4934, 4903, 4713, + 4745, 4736, 4622, 4642, 4478, 4510, 4758, 4457, 4356, 4170, 4658, 4546, + 4402, 4183, 3574, 2586, 3326, 3948, 3983, 3997, 4422, 4496, 4276, 3467, + 2753, 2582, 2921, 2768, 2789, 2824, 2482, 2773, 3005, 3641, 3699, 3774, + 3698, 3628, 3180, 3306, 2841, 2014, 1910, 2560, 2980, 3012, 3210, 3457, + 3158, 3344, 3609, 3327, 2913, 2264, 2326, 2596, 2225, 1767, 1190, 792, + 669, 589, 496, 354, 246, 250, 323, 495, 924, 1536, 2081, 2660, 2814, 2992, + 3115, 2962, 2272, 2151, 1889, 1481, 955, 631, 288, 103, 60, 82, 107, 185, + 618, 1526, 2046, 2348, 2584, 2600, 2515, 2345, 2351, 2355, 2409, 2449, + 2645, 2918, 3187, 2888, 2610, 2740, 2526, 2383, 2936, 2968, 2635, 2617, + 2790, 3906, 4018, 4797, 4919, 4942, 4656, 4444, 3898, 3908, 3678, 3605, + 3186, 2139, 2002, 1559, 1235, 1183, 1096, 673, 389, 223, 352, 308, 365, + 525, 779, 894, 901, 1025, 1047, 981, 902, 759, 569, 519, 408, 263, 156, + 72, 49, 31, 41, 192, 423, 492, 552, 564, 723, 921, 1525, 2768, 3531, 3824, + 3835, 4294, 4533, 4173, 4221, 4064, 4641, 4685, 4026, 4323, 4585, 4836, + 4822, 4631, 4614, 4326, 4790, 4736, 4104, 5099, 5154, 5121, 5384, 5274, + 5225, 4899, 5382, 5295, 5349, 4977, 4597, 4069, 3733, 3439, 3052, 2626, + 1939, 1064, 713, 916, 832, 658, 817, 921, 772, 764, 824, 967, 1127, 1153, + 824, 912, 957, 990, 1218, 1684, 2030, 2119, 2233, 2657, 2652, 2682, 2498, + 2429, 2346, 2298, 2129, 1829, 1816, 1225, 1010, 748, 627, 469, 576, 532, + 475, 582, 641, 605, 699, 680, 714, 670, 666, 636, 672, 679, 446, 248, 134, + 160, 178, 286, 413, 676, 1025, 1159, 952, 1398, 1833, 2045, 2072, 1798, + 1799, 1358, 727, 353, 347, 844, 1377, 1829, 2118, 2272, 2745, 4263, 4314, + 4530, 4354, 4645, 4547, 5391, 4855, 4739, 4520, 4573, 4305, 4196, 3773, + 3368, 2596, 2596, 2305, 2756, 3747, 4078, 3415, 2369, 2210, 2316, 2263, + 2672, 3571, 4131, 4167, 4077, 3924, 3738, 3712, 3510, 3182, 3179, 2951, + 2453, 2078, 1999, 2486, 2581, 1891, 1997, 1366, 1294, 1536, 2794, 3211, + 3242, 3406, 3121, 2425, 2016, 1787, 1508, 1304, 1060, 1342, 1589, 2361, + 3452, 2659, 2857, 3255, 3322, 2852, 2964, 3132, 3033, 2931, 2636, 2818, + 3310, 3396, 3179, 3232, 3543, 3759, 3503, 3758, 3658, 3425, 3053, 2620, + 1837, 923, 712, 1054, 1376, 1556, 1498, 1523, 1088, 728, 890, 1413, 2524, + 3295, 4097, 3993, 4116, 3874, 4074, 4142, 3975, 3908, 3907, 3918, 3755, + 3648, 3778, 4293, 4385, 4360, 4352, 4528, 4365, 3846, 4098, 3860, 3230, + 2820, 2916, 3201, 3721, 3397, 3055, 2141, 1623, 1825, 1716, 2232, 2939, + 3735, 4838, 4560, 4307, 4975, 5173, 4859, 5268, 4992, 5100, 5070, 5270, + 4760, 5135, 5059, 4682, 4492, 4933, 4737, 4611, 4634, 4789, 4811, 4379, + 4689, 4284, 4191, 3313, 2770, 2543, 3105, 2967, 2420, 1996, 2247, 2564, + 2726, 3021, 3427, 3509, 3759, 3324, 2988, 2849, 2340, 2443, 2364, 1252, + 623, 742, 867, 684, 488, 348, 241, 187, 279, 355, 423, 678, 1375, 1497, + 1434, 2116, 2411, 1929, 1628, 1635, 1609, 1757, 2090, 2085, 1790, 1846, + 2038, 2360, 2342, 2401, 2920, 3030, 3132, 4385, 5483, 5865, 5595, 5485, + 5727, 5553, 5560, 5233, 5478, 5159, 5155, 5312, 5079, 4510, 4628, 4535, + 3656, 3698, 3443, 3146, 2562, 2304, 2181, 2293, 1950, 1930, 2197, 2796, + 3441, 3649, 3815, 2850, 4005, 5305, 5550, 5641, 4717, 5131, 2831, 3518, + 3354, 3115, 3515, 3552, 3244, 3658, 4407, 4935, 4299, 3166, 3335, 2728, + 2488, 2573, 2002, 1717, 1645, 1977, 2049, 2125, 2376, 2551, 2578, 2629, + 2750, 3150, 3699, 4062, 3959, 3264, 2671, 2205, 2128, 2133, 2095, 1964, + 2006, 2074, 2201, 2506, 2449, 2465, 2064, 1446, 1382, 983, 898, 489, 319, + 383, 332, 276, 224, 144, 101, 232, 429, 597, 750, 908, 960, 1076, 951, + 1062, 1183, 1404, 1391, 1419, 1497, 1267, 963, 682, 777, 906, 1149, 1439, + 1600, 1876, 1885, 1962, 2280, 2711, 2591, 2411]) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + res = ARMA(data, order=(4,1)).fit(start_ar_lags=5, disp=-1) + + +class Test_ARIMA101(CheckArmaResultsMixin): + # just make sure this works + @classmethod + def setup_class(cls): + endog = y_arma[:,6] + cls.res1 = ARIMA(endog, (1,0,1)).fit(trend="c", disp=-1) + (cls.res1.forecast_res, cls.res1.forecast_err, + confint) = cls.res1.forecast(10) + cls.res2 = results_arma.Y_arma11c() + cls.res2.k_diff = 0 + cls.res2.k_ar = 1 + cls.res2.k_ma = 1 + + +class Test_ARIMA111(CheckArimaResultsMixin, CheckForecastMixin, + CheckDynamicForecastMixin): + @classmethod + def setup_class(cls): + cpi = load_macrodata_pandas().data['cpi'].values + cls.res1 = ARIMA(cpi, (1,1,1)).fit(disp=-1) + cls.res2 = results_arima.ARIMA111() + # make sure endog names changes to D.cpi + cls.decimal_llf = 3 + cls.decimal_aic = 3 + cls.decimal_bic = 3 + cls.decimal_cov_params = 2 # this used to be better? + cls.decimal_t = 0 + (cls.res1.forecast_res, + cls.res1.forecast_err, + conf_int) = cls.res1.forecast(25) + #cls.res1.forecast_res_dyn = cls.res1.predict(start=164, end=226, typ='levels', dynamic=True) + #TODO: fix the indexing for the end here, I don't think this is right + # if we're going to treat it like indexing + # the forecast from 2005Q1 through 2009Q4 is indices + # 184 through 227 not 226 + # note that the first one counts in the count so 164 + 64 is 65 + # predictions + cls.res1.forecast_res_dyn = cls.res1.predict(start=164, end=164+63, + typ='levels', dynamic=True) + + def test_freq(self): + assert_almost_equal(self.res1.arfreq, [0.0000], 4) + assert_almost_equal(self.res1.mafreq, [0.0000], 4) + + +class Test_ARIMA111CSS(CheckArimaResultsMixin, CheckForecastMixin, + CheckDynamicForecastMixin): + @classmethod + def setup_class(cls): + cpi = load_macrodata_pandas().data['cpi'].values + cls.res1 = ARIMA(cpi, (1,1,1)).fit(disp=-1, method='css') + cls.res2 = results_arima.ARIMA111(method='css') + cls.res2.fittedvalues = - cpi[1:-1] + cls.res2.linear + # make sure endog names changes to D.cpi + (cls.res1.forecast_res, + cls.res1.forecast_err, + conf_int) = cls.res1.forecast(25) + cls.decimal_forecast = 2 + cls.decimal_forecast_dyn = 2 + cls.decimal_forecasterr = 3 + cls.res1.forecast_res_dyn = cls.res1.predict(start=164, end=164+63, + typ='levels', dynamic=True) + + # precisions + cls.decimal_arroots = 3 + cls.decimal_cov_params = 3 + cls.decimal_hqic = 3 + cls.decimal_maroots = 3 + cls.decimal_t = 1 + cls.decimal_fittedvalues = 2 # because of rounding when copying + cls.decimal_resid = 2 + #cls.decimal_llf = 3 + #cls.decimal_aic = 3 + #cls.decimal_bic = 3 + cls.decimal_predict_levels = DECIMAL_2 + + +class Test_ARIMA112CSS(CheckArimaResultsMixin): + @classmethod + def setup_class(cls): + cpi = load_macrodata_pandas().data['cpi'].values + cls.res1 = ARIMA(cpi, (1,1,2)).fit(disp=-1, method='css', + start_params = [.905322, -.692425, 1.07366, + 0.172024]) + cls.res2 = results_arima.ARIMA112(method='css') + cls.res2.fittedvalues = - cpi[1:-1] + cls.res2.linear + # make sure endog names changes to D.cpi + cls.decimal_llf = 3 + cls.decimal_aic = 3 + cls.decimal_bic = 3 + #(cls.res1.forecast_res, + # cls.res1.forecast_err, + # conf_int) = cls.res1.forecast(25) + #cls.res1.forecast_res_dyn = cls.res1.predict(start=164, end=226, typ='levels', dynamic=True) + #TODO: fix the indexing for the end here, I don't think this is right + # if we're going to treat it like indexing + # the forecast from 2005Q1 through 2009Q4 is indices + # 184 through 227 not 226 + # note that the first one counts in the count so 164 + 64 is 65 + # predictions + #cls.res1.forecast_res_dyn = self.predict(start=164, end=164+63, + # typ='levels', dynamic=True) + # since we got from gretl don't have linear prediction in differences + cls.decimal_arroots = 3 + cls.decimal_maroots = 2 + cls.decimal_t = 1 + cls.decimal_resid = 2 + cls.decimal_fittedvalues = 3 + cls.decimal_predict_levels = DECIMAL_3 + + def test_freq(self): + assert_almost_equal(self.res1.arfreq, [0.5000], 4) + assert_almost_equal(self.res1.mafreq, [0.5000, 0.5000], 4) + +#class Test_ARIMADates(CheckArmaResults, CheckForecast, CheckDynamicForecast): +# @classmethod +# def setup_class(cls): +# cpi = load_macrodata_pandas().data['cpi'].values +# dates = pd.date_range('1959', periods=203, freq='Q') +# cls.res1 = ARIMA(cpi, dates=dates, freq='Q').fit(order=(1,1,1), disp=-1) +# cls.res2 = results_arima.ARIMA111() +# # make sure endog names changes to D.cpi +# cls.decimal_llf = 3 +# cls.decimal_aic = 3 +# cls.decimal_bic = 3 +# (cls.res1.forecast_res, +# cls.res1.forecast_err, +# conf_int) = cls.res1.forecast(25) + + +def test_arima_predict_mle_dates(): + cpi = load_macrodata_pandas().data['cpi'].values + res1 = ARIMA(cpi, (4,1,1), dates=cpi_dates, freq='Q').fit(disp=-1) + + with open(current_path + '/results/results_arima_forecasts_all_mle.csv', "rb") as test_data: + arima_forecasts = np.genfromtxt(test_data, delimiter=",", skip_header=1, dtype=float) + + fc = arima_forecasts[:,0] + fcdyn = arima_forecasts[:,1] + fcdyn2 = arima_forecasts[:,2] + + start, end = 2, 51 + fv = res1.predict('1959Q3', '1971Q4', typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + assert_equal(res1.data.predict_dates, cpi_dates[start:end+1]) + + start, end = 202, 227 + fv = res1.predict('2009Q3', '2015Q4', typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + assert_equal(res1.data.predict_dates, cpi_predict_dates) + + # make sure dynamic works + + start, end = '1960q2', '1971q4' + fv = res1.predict(start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn[5:51+1], DECIMAL_4) + + start, end = '1965q1', '2015q4' + fv = res1.predict(start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn2[24:227+1], DECIMAL_4) + + +def test_arma_predict_mle_dates(): + from statsmodels.datasets.sunspots import load_pandas + sunspots = load_pandas().data['SUNACTIVITY'].values + mod = ARMA(sunspots, (9,0), dates=sun_dates, freq='A') + mod.method = 'mle' + + assert_raises(ValueError, mod._get_prediction_index, *('1701', '1751', True)) + + start, end = 2, 51 + _, _, _, _ = mod._get_prediction_index('1702', '1751', False) + assert_equal(mod.data.predict_dates, sun_dates[start:end+1]) + + start, end = 308, 333 + _, _, _, _ = mod._get_prediction_index('2008', '2033', False) + assert_equal(mod.data.predict_dates, sun_predict_dates) + + +def test_arima_predict_css_dates(): + cpi = load_macrodata_pandas().data['cpi'].values + res1 = ARIMA(cpi, (4,1,1), dates=cpi_dates, freq='Q').fit(disp=-1, + method='css', trend='nc') + + params = np.array([ 1.231272508473910, + -0.282516097759915, + 0.170052755782440, + -0.118203728504945, + -0.938783134717947]) + + with open(current_path + '/results/results_arima_forecasts_all_css.csv', "rb") as test_data: + arima_forecasts = np.genfromtxt(test_data, delimiter=",", skip_header=1, dtype=float) + + fc = arima_forecasts[:,0] + fcdyn = arima_forecasts[:,1] + fcdyn2 = arima_forecasts[:,2] + + start, end = 5, 51 + fv = res1.model.predict(params, '1960Q2', '1971Q4', typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + assert_equal(res1.data.predict_dates, cpi_dates[start:end+1]) + + start, end = 202, 227 + fv = res1.model.predict(params, '2009Q3', '2015Q4', typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + assert_equal(res1.data.predict_dates, cpi_predict_dates) + + # make sure dynamic works + start, end = 5, 51 + fv = res1.model.predict(params, '1960Q2', '1971Q4', typ='levels', + dynamic=True) + assert_almost_equal(fv, fcdyn[start:end+1], DECIMAL_4) + + start, end = '1965q1', '2015q4' + fv = res1.model.predict(params, start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn2[24:227+1], DECIMAL_4) + + +def test_arma_predict_css_dates(): + from statsmodels.datasets.sunspots import load_pandas + sunspots = load_pandas().data['SUNACTIVITY'].values + mod = ARMA(sunspots, (9,0), dates=sun_dates, freq='A') + mod.method = 'css' + assert_raises(ValueError, mod._get_prediction_index, *('1701', '1751', False)) + + +def test_arima_predict_mle(): + cpi = load_macrodata_pandas().data['cpi'].values + res1 = ARIMA(cpi, (4,1,1)).fit(disp=-1) + # fit the model so that we get correct endog length but use + with open(current_path + '/results/results_arima_forecasts_all_mle.csv', "rb") as test_data: + arima_forecasts = np.genfromtxt(test_data, delimiter=",", skip_header=1, dtype=float) + fc = arima_forecasts[:,0] + fcdyn = arima_forecasts[:,1] + fcdyn2 = arima_forecasts[:,2] + fcdyn3 = arima_forecasts[:,3] + fcdyn4 = arima_forecasts[:,4] + + # 0 indicates the first sample-observation below + # ie., the index after the pre-sample, these are also differenced once + # so the indices are moved back once from the cpi in levels + # start < p, end

    0 1959q3 - 1971q4 + start, end = 2, 51 + fv = res1.predict(start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start < p, end nobs 1959q3 - 2009q3 + start, end = 2, 202 + fv = res1.predict(start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start < p, end >nobs 1959q3 - 2015q4 + start, end = 2, 227 + fv = res1.predict(start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start 0, end >0 1960q1 - 1971q4 + start, end = 4, 51 + fv = res1.predict(start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start 0, end nobs 1960q1 - 2009q3 + start, end = 4, 202 + fv = res1.predict(start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start 0, end >nobs 1960q1 - 2015q4 + start, end = 4, 227 + fv = res1.predict(start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >p, end >0 1965q1 - 1971q4 + start, end = 24, 51 + fv = res1.predict(start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >p, end nobs 1965q1 - 2009q3 + start, end = 24, 202 + fv = res1.predict(start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >p, end >nobs 1965q1 - 2015q4 + start, end = 24, 227 + fv = res1.predict(start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start nobs, end nobs 2009q3 - 2009q3 + #NOTE: raises + #start, end = 202, 202 + #fv = res1.predict(start, end, typ='levels') + #assert_almost_equal(fv, []) + # start nobs, end >nobs 2009q3 - 2015q4 + start, end = 202, 227 + fv = res1.predict(start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_3) + # start >nobs, end >nobs 2009q4 - 2015q4 + #NOTE: this raises but shouldn't, dynamic forecasts could start + #one period out + start, end = 203, 227 + fv = res1.predict(start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # defaults + start, end = None, None + fv = res1.predict(start, end, typ='levels') + assert_almost_equal(fv, fc[1:203], DECIMAL_4) + + #### Dynamic ##### + + # start < p, end

    0 1959q3 - 1971q4 + #start, end = 2, 51 + #fv = res1.predict(start, end, dynamic=True, typ='levels') + #assert_almost_equal(fv, fcdyn[5:end+1], DECIMAL_4) + ## start < p, end nobs 1959q3 - 2009q3 + #start, end = 2, 202 + #fv = res1.predict(start, end, dynamic=True, typ='levels') + #assert_almost_equal(fv, fcdyn[5:end+1], DECIMAL_4) + ## start < p, end >nobs 1959q3 - 2015q4 + #start, end = 2, 227 + #fv = res1.predict(start, end, dynamic=True, typ='levels') + #assert_almost_equal(fv, fcdyn[5:end+1], DECIMAL_4) + # start 0, end >0 1960q1 - 1971q4 + start, end = 5, 51 + fv = res1.predict(start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn[start:end+1], DECIMAL_4) + # start 0, end nobs 1960q1 - 2009q3 + start, end = 5, 202 + fv = res1.predict(start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn[start:end+1], DECIMAL_4) + # start 0, end >nobs 1960q1 - 2015q4 + start, end = 5, 227 + fv = res1.predict(start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn[start:end+1], DECIMAL_4) + # start >p, end >0 1965q1 - 1971q4 + start, end = 24, 51 + fv = res1.predict(start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn2[start:end+1], DECIMAL_4) + # start >p, end nobs 1965q1 - 2009q3 + start, end = 24, 202 + fv = res1.predict(start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn2[start:end+1], DECIMAL_4) + # start >p, end >nobs 1965q1 - 2015q4 + start, end = 24, 227 + fv = res1.predict(start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn2[start:end+1], DECIMAL_4) + # start nobs, end nobs 2009q3 - 2009q3 + start, end = 202, 202 + fv = res1.predict(start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn3[start:end+1], DECIMAL_4) + # start nobs, end >nobs 2009q3 - 2015q4 + start, end = 202, 227 + fv = res1.predict(start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn3[start:end+1], DECIMAL_4) + # start >nobs, end >nobs 2009q4 - 2015q4 + start, end = 203, 227 + fv = res1.predict(start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn4[start:end+1], DECIMAL_4) + # defaults + start, end = None, None + fv = res1.predict(start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn[5:203], DECIMAL_4) + + +def _check_start(model, given, expected, dynamic): + start, _, _, _ = model._get_prediction_index(given, None, dynamic) + assert_equal(start, expected) + + +def _check_end(model, given, end_expect, out_of_sample_expect): + _, end, out_of_sample, _ = model._get_prediction_index(None, given, False) + assert_equal((end, out_of_sample), (end_expect, out_of_sample_expect)) + + +def test_arma_predict_indices(): + from statsmodels.datasets.sunspots import load_pandas + sunspots = load_pandas().data['SUNACTIVITY'].values + model = ARMA(sunspots, (9,0), dates=sun_dates, freq='A') + model.method = 'mle' + + # raises - pre-sample + dynamic + assert_raises(ValueError, model._get_prediction_index, *(0, None, True)) + assert_raises(ValueError, model._get_prediction_index, *(8, None, True)) + assert_raises(ValueError, model._get_prediction_index, *('1700', None, True)) + assert_raises(ValueError, model._get_prediction_index, *('1708', None, True)) + + # raises - start out of sample + # TODO: remove these, start out of sample now allowed + # assert_raises(ValueError, model._get_prediction_index, *(311, None, True)) + # assert_raises(ValueError, model._get_prediction_index, *(311, None, False)) + # assert_raises(ValueError, model._get_prediction_index, *('2010', None, True)) + # assert_raises(ValueError, model._get_prediction_index, *('2010', None, False)) + + # works - in-sample + # None + start_test_cases = [ + # given, expected, dynamic + (None, 9, True), + # all start get moved back by k_diff + (9, 9, True), + (10, 10, True), + # what about end of sample start - last value is first + # forecast + (309, 309, True), + (308, 308, True), + (0, 0, False), + (1, 1, False), + (4, 4, False), + + # all start get moved back by k_diff + ('1709', 9, True), + ('1710', 10, True), + # what about end of sample start - last value is first + # forecast + ('2008', 308, True), + ('2009', 309, True), + ('1700', 0, False), + ('1708', 8, False), + ('1709', 9, False), + ] + + for case in start_test_cases: + _check_start(*((model,) + case)) + + # the length of sunspot is 309, so last index is 208 + end_test_cases = [(None, 308, 0), + (307, 307, 0), + (308, 308, 0), + (309, 308, 1), + (312, 308, 4), + (51, 51, 0), + (333, 308, 25), + + ('2007', 307, 0), + ('2008', 308, 0), + ('2009', 308, 1), + ('2012', 308, 4), + ('1815', 115, 0), + ('2033', 308, 25), + ] + + for case in end_test_cases: + _check_end(*((model,)+case)) + + +def test_arima_predict_indices(): + cpi = load_macrodata_pandas().data['cpi'].values + model = ARIMA(cpi, (4,1,1), dates=cpi_dates, freq='Q') + model.method = 'mle' + + # starting indices + + # raises - pre-sample + dynamic + assert_raises(ValueError, model._get_prediction_index, *(0, None, True)) + assert_raises(ValueError, model._get_prediction_index, *(4, None, True)) + assert_raises(KeyError, model._get_prediction_index, *('1959Q1', None, True)) + assert_raises(ValueError, model._get_prediction_index, *('1960Q1', None, True)) + + # raises - index differenced away + assert_raises(ValueError, model._get_prediction_index, *(0, None, False)) + assert_raises(KeyError, model._get_prediction_index, *('1959Q1', None, False)) + + # raises - start out of sample + # TODO: start out of sample is now allowed; remove this code + # assert_raises(ValueError, model._get_prediction_index, *(204, None, True)) + # assert_raises(ValueError, model._get_prediction_index, *(204, None, False)) + # assert_raises(ValueError, model._get_prediction_index, *('2010Q1', None, True)) + # assert_raises(ValueError, model._get_prediction_index, *('2010Q1', None, False)) + + # works - in-sample + # None + start_test_cases = [ + # given, expected, dynamic + (None, 4, True), + # all start get moved back by k_diff + (5, 4, True), + (6, 5, True), + # what about end of sample start - last value is first + # forecast + (203, 202, True), + (1, 0, False), + (4, 3, False), + (5, 4, False), + # all start get moved back by k_diff + ('1960Q2', 4, True), + ('1960Q3', 5, True), + # what about end of sample start - last value is first + # forecast + ('2009Q4', 202, True), + ('1959Q2', 0, False), + ('1960Q1', 3, False), + ('1960Q2', 4, False), + ] + + for case in start_test_cases: + _check_start(*((model,) + case)) + + # check raises + #TODO: make sure dates are passing through unmolested + #assert_raises(ValueError, model._get_predict_end, ("2001-1-1",)) + + # the length of diff(cpi) is 202, so last index is 201 + end_test_cases = [(None, 201, 0), + (201, 200, 0), + (202, 201, 0), + (203, 201, 1), + (204, 201, 2), + (51, 50, 0), + (164+63, 201, 25), + + ('2009Q2', 200, 0), + ('2009Q3', 201, 0), + ('2009Q4', 201, 1), + ('2010Q1', 201, 2), + ('1971Q4', 50, 0), + ('2015Q4', 201, 25), + ] + + for case in end_test_cases: + _check_end(*((model,)+case)) + + # check higher k_diff + # model.k_diff = 2 + model = ARIMA(cpi, (4,2,1), dates=cpi_dates, freq='Q') + model.method = 'mle' + + # raises - pre-sample + dynamic + assert_raises(ValueError, model._get_prediction_index, *(0, None, True)) + assert_raises(ValueError, model._get_prediction_index, *(5, None, True)) + assert_raises(KeyError, model._get_prediction_index, *('1959Q1', None, True)) + assert_raises(ValueError, model._get_prediction_index, *('1960Q1', None, True)) + + # raises - index differenced away + assert_raises(ValueError, model._get_prediction_index, *(1, None, False)) + assert_raises(KeyError, model._get_prediction_index, *('1959Q2', None, False)) + + start_test_cases = [(None, 4, True), + # all start get moved back by k_diff + (6, 4, True), + # what about end of sample start - last value is first + # forecast + (203, 201, True), + (2, 0, False), + (4, 2, False), + (5, 3, False), + ('1960Q3', 4, True), + # what about end of sample start - last value is first + # forecast + ('2009Q4', 201, True), + ('2009Q4', 201, True), + ('1959Q3', 0, False), + ('1960Q1', 2, False), + ('1960Q2', 3, False), + ] + + for case in start_test_cases: + _check_start(*((model,)+case)) + + end_test_cases = [(None, 200, 0), + (201, 199, 0), + (202, 200, 0), + (203, 200, 1), + (204, 200, 2), + (51, 49, 0), + (164+63, 200, 25), + + ('2009Q2', 199, 0), + ('2009Q3', 200, 0), + ('2009Q4', 200, 1), + ('2010Q1', 200, 2), + ('1971Q4', 49, 0), + ('2015Q4', 200, 25), + ] + + for case in end_test_cases: + _check_end(*((model,)+case)) + + +def test_arima_predict_indices_css(): + cpi = load_macrodata_pandas().data['cpi'].values + #NOTE: Doing no-constant for now to kick the conditional exogenous + #issue 274 down the road + # go ahead and git the model to set up necessary variables + model = ARIMA(cpi, (4,1,1)) + model.method = 'css' + + assert_raises(ValueError, model._get_prediction_index, *(0, None, False)) + assert_raises(ValueError, model._get_prediction_index, *(0, None, True)) + assert_raises(ValueError, model._get_prediction_index, *(2, None, False)) + assert_raises(ValueError, model._get_prediction_index, *(2, None, True)) + + +def test_arima_predict_css(): + cpi = load_macrodata_pandas().data['cpi'].values + #NOTE: Doing no-constant for now to kick the conditional exogenous + #issue 274 down the road + # go ahead and git the model to set up necessary variables + res1 = ARIMA(cpi, (4,1,1)).fit(disp=-1, method="css", + trend="nc") + # but use gretl parameters to predict to avoid precision problems + params = np.array([ 1.231272508473910, + -0.282516097759915, + 0.170052755782440, + -0.118203728504945, + -0.938783134717947]) + + with open(current_path + '/results/results_arima_forecasts_all_css.csv', "rb") as test_data: + arima_forecasts = np.genfromtxt(test_data, delimiter=",", skip_header=1, dtype=float) + fc = arima_forecasts[:,0] + fcdyn = arima_forecasts[:,1] + fcdyn2 = arima_forecasts[:,2] + fcdyn3 = arima_forecasts[:,3] + fcdyn4 = arima_forecasts[:,4] + + #NOTE: should raise + #start, end = 1,3 + #fv = res1.model.predict(params, start, end) + ## start < p, end 0 1959q3 - 1960q1 + #start, end = 2, 4 + #fv = res1.model.predict(params, start, end) + ## start < p, end >0 1959q3 - 1971q4 + #start, end = 2, 51 + #fv = res1.model.predict(params, start, end) + ## start < p, end nobs 1959q3 - 2009q3 + #start, end = 2, 202 + #fv = res1.model.predict(params, start, end) + ## start < p, end >nobs 1959q3 - 2015q4 + #start, end = 2, 227 + #fv = res1.model.predict(params, start, end) + # start 0, end >0 1960q1 - 1971q4 + start, end = 5, 51 + fv = res1.model.predict(params, start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start 0, end nobs 1960q1 - 2009q3 + start, end = 5, 202 + fv = res1.model.predict(params, start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start 0, end >nobs 1960q1 - 2015q4 + #TODO: why detoriating precision? + fv = res1.model.predict(params, start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >p, end >0 1965q1 - 1971q4 + start, end = 24, 51 + fv = res1.model.predict(params, start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >p, end nobs 1965q1 - 2009q3 + start, end = 24, 202 + fv = res1.model.predict(params, start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >p, end >nobs 1965q1 - 2015q4 + start, end = 24, 227 + fv = res1.model.predict(params, start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start nobs, end nobs 2009q3 - 2009q3 + start, end = 202, 202 + fv = res1.model.predict(params, start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start nobs, end >nobs 2009q3 - 2015q4 + start, end = 202, 227 + fv = res1.model.predict(params, start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >nobs, end >nobs 2009q4 - 2015q4 + start, end = 203, 227 + fv = res1.model.predict(params, start, end, typ='levels') + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # defaults + start, end = None, None + fv = res1.model.predict(params, start, end, typ='levels') + assert_almost_equal(fv, fc[5:203], DECIMAL_4) + + #### Dynamic ##### + + #NOTE: should raise + # start < p, end

    0 1959q3 - 1971q4 + #start, end = 2, 51 + #fv = res1.predict(start, end, dynamic=True) + ## start < p, end nobs 1959q3 - 2009q3 + #start, end = 2, 202 + #fv = res1.predict(start, end, dynamic=True) + ## start < p, end >nobs 1959q3 - 2015q4 + #start, end = 2, 227 + #fv = res1.predict(start, end, dynamic=True) + # start 0, end >0 1960q1 - 1971q4 + start, end = 5, 51 + fv = res1.model.predict(params, start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn[start:end+1], DECIMAL_4) + # start 0, end nobs 1960q1 - 2009q3 + start, end = 5, 202 + fv = res1.model.predict(params, start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn[start:end+1], DECIMAL_4) + # start 0, end >nobs 1960q1 - 2015q4 + start, end = 5, 227 + fv = res1.model.predict(params, start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn[start:end+1], DECIMAL_4) + # start >p, end >0 1965q1 - 1971q4 + start, end = 24, 51 + fv = res1.model.predict(params, start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn2[start:end+1], DECIMAL_4) + # start >p, end nobs 1965q1 - 2009q3 + start, end = 24, 202 + fv = res1.model.predict(params, start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn2[start:end+1], DECIMAL_4) + # start >p, end >nobs 1965q1 - 2015q4 + start, end = 24, 227 + fv = res1.model.predict(params, start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn2[start:end+1], DECIMAL_4) + # start nobs, end nobs 2009q3 - 2009q3 + start, end = 202, 202 + fv = res1.model.predict(params, start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn3[start:end+1], DECIMAL_4) + # start nobs, end >nobs 2009q3 - 2015q4 + start, end = 202, 227 + fv = res1.model.predict(params, start, end, dynamic=True, typ='levels') + # start >nobs, end >nobs 2009q4 - 2015q4 + start, end = 203, 227 + fv = res1.model.predict(params, start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn4[start:end+1], DECIMAL_4) + # defaults + start, end = None, None + fv = res1.model.predict(params, start, end, dynamic=True, typ='levels') + assert_almost_equal(fv, fcdyn[5:203], DECIMAL_4) + + +def test_arima_predict_css_diffs(): + + cpi = load_macrodata_pandas().data['cpi'].values + #NOTE: Doing no-constant for now to kick the conditional exogenous + #issue 274 down the road + # go ahead and git the model to set up necessary variables + res1 = ARIMA(cpi, (4,1,1)).fit(disp=-1, method="css", + trend="c") + # but use gretl parameters to predict to avoid precision problems + params = np.array([0.78349893861244, + -0.533444105973324, + 0.321103691668809, + 0.264012463189186, + 0.107888256920655, + 0.920132542916995]) + # we report mean, should we report constant? + params[0] = params[0] / (1 - params[1:5].sum()) + + with open(current_path + '/results/results_arima_forecasts_all_css_diff.csv', "rb") as test_data: + arima_forecasts = np.genfromtxt(test_data, delimiter=",", skip_header=1, dtype=float) + fc = arima_forecasts[:,0] + fcdyn = arima_forecasts[:,1] + fcdyn2 = arima_forecasts[:,2] + fcdyn3 = arima_forecasts[:,3] + fcdyn4 = arima_forecasts[:,4] + + #NOTE: should raise + #start, end = 1,3 + #fv = res1.model.predict(params, start, end) + ## start < p, end 0 1959q3 - 1960q1 + #start, end = 2, 4 + #fv = res1.model.predict(params, start, end) + ## start < p, end >0 1959q3 - 1971q4 + #start, end = 2, 51 + #fv = res1.model.predict(params, start, end) + ## start < p, end nobs 1959q3 - 2009q3 + #start, end = 2, 202 + #fv = res1.model.predict(params, start, end) + ## start < p, end >nobs 1959q3 - 2015q4 + #start, end = 2, 227 + #fv = res1.model.predict(params, start, end) + # start 0, end >0 1960q1 - 1971q4 + start, end = 5, 51 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start 0, end nobs 1960q1 - 2009q3 + start, end = 5, 202 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start 0, end >nobs 1960q1 - 2015q4 + #TODO: why detoriating precision? + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >p, end >0 1965q1 - 1971q4 + start, end = 24, 51 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >p, end nobs 1965q1 - 2009q3 + start, end = 24, 202 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >p, end >nobs 1965q1 - 2015q4 + start, end = 24, 227 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start nobs, end nobs 2009q3 - 2009q3 + start, end = 202, 202 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start nobs, end >nobs 2009q3 - 2015q4 + start, end = 202, 227 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >nobs, end >nobs 2009q4 - 2015q4 + start, end = 203, 227 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # defaults + start, end = None, None + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[5:203], DECIMAL_4) + + #### Dynamic ##### + + #NOTE: should raise + # start < p, end

    0 1959q3 - 1971q4 + #start, end = 2, 51 + #fv = res1.predict(start, end, dynamic=True) + ## start < p, end nobs 1959q3 - 2009q3 + #start, end = 2, 202 + #fv = res1.predict(start, end, dynamic=True) + ## start < p, end >nobs 1959q3 - 2015q4 + #start, end = 2, 227 + #fv = res1.predict(start, end, dynamic=True) + # start 0, end >0 1960q1 - 1971q4 + start, end = 5, 51 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn[start:end+1], DECIMAL_4) + # start 0, end nobs 1960q1 - 2009q3 + start, end = 5, 202 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn[start:end+1], DECIMAL_4) + # start 0, end >nobs 1960q1 - 2015q4 + start, end = 5, 227 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn[start:end+1], DECIMAL_4) + # start >p, end >0 1965q1 - 1971q4 + start, end = 24, 51 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn2[start:end+1], DECIMAL_4) + # start >p, end nobs 1965q1 - 2009q3 + start, end = 24, 202 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn2[start:end+1], DECIMAL_4) + # start >p, end >nobs 1965q1 - 2015q4 + start, end = 24, 227 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn2[start:end+1], DECIMAL_4) + # start nobs, end nobs 2009q3 - 2009q3 + start, end = 202, 202 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn3[start:end+1], DECIMAL_4) + # start nobs, end >nobs 2009q3 - 2015q4 + start, end = 202, 227 + fv = res1.model.predict(params, start, end, dynamic=True) + # start >nobs, end >nobs 2009q4 - 2015q4 + start, end = 203, 227 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn4[start:end+1], DECIMAL_4) + # defaults + start, end = None, None + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn[5:203], DECIMAL_4) + + +def test_arima_predict_mle_diffs(): + + cpi = load_macrodata_pandas().data['cpi'].values + #NOTE: Doing no-constant for now to kick the conditional exogenous + #issue 274 down the road + # go ahead and git the model to set up necessary variables + res1 = ARIMA(cpi, (4,1,1)).fit(disp=-1, trend="c") + # but use gretl parameters to predict to avoid precision problems + params = np.array([0.926875951549299, + -0.555862621524846, + 0.320865492764400, + 0.252253019082800, + 0.113624958031799, + 0.939144026934634]) + + with open(current_path + '/results/results_arima_forecasts_all_mle_diff.csv', "rb") as test_data: + arima_forecasts = np.genfromtxt(test_data, delimiter=",", skip_header=1, dtype=float) + fc = arima_forecasts[:,0] + fcdyn = arima_forecasts[:,1] + fcdyn2 = arima_forecasts[:,2] + fcdyn3 = arima_forecasts[:,3] + fcdyn4 = arima_forecasts[:,4] + + #NOTE: should raise + start, end = 1,3 + fv = res1.model.predict(params, start, end) + ## start < p, end 0 1959q3 - 1960q1 + start, end = 2, 4 + fv = res1.model.predict(params, start, end) + ## start < p, end >0 1959q3 - 1971q4 + start, end = 2, 51 + fv = res1.model.predict(params, start, end) + ## start < p, end nobs 1959q3 - 2009q3 + start, end = 2, 202 + fv = res1.model.predict(params, start, end) + ## start < p, end >nobs 1959q3 - 2015q4 + start, end = 2, 227 + fv = res1.model.predict(params, start, end) + # start 0, end >0 1960q1 - 1971q4 + start, end = 5, 51 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start 0, end nobs 1960q1 - 2009q3 + start, end = 5, 202 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start 0, end >nobs 1960q1 - 2015q4 + #TODO: why detoriating precision? + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >p, end >0 1965q1 - 1971q4 + start, end = 24, 51 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >p, end nobs 1965q1 - 2009q3 + start, end = 24, 202 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >p, end >nobs 1965q1 - 2015q4 + start, end = 24, 227 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start nobs, end nobs 2009q3 - 2009q3 + start, end = 202, 202 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start nobs, end >nobs 2009q3 - 2015q4 + start, end = 202, 227 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # start >nobs, end >nobs 2009q4 - 2015q4 + start, end = 203, 227 + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[start:end+1], DECIMAL_4) + # defaults + start, end = None, None + fv = res1.model.predict(params, start, end) + assert_almost_equal(fv, fc[1:203], DECIMAL_4) + + #### Dynamic ##### + + #NOTE: should raise + # start < p, end

    0 1959q3 - 1971q4 + #start, end = 2, 51 + #fv = res1.predict(start, end, dynamic=True) + ## start < p, end nobs 1959q3 - 2009q3 + #start, end = 2, 202 + #fv = res1.predict(start, end, dynamic=True) + ## start < p, end >nobs 1959q3 - 2015q4 + #start, end = 2, 227 + #fv = res1.predict(start, end, dynamic=True) + # start 0, end >0 1960q1 - 1971q4 + start, end = 5, 51 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn[start:end+1], DECIMAL_4) + # start 0, end nobs 1960q1 - 2009q3 + start, end = 5, 202 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn[start:end+1], DECIMAL_4) + # start 0, end >nobs 1960q1 - 2015q4 + start, end = 5, 227 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn[start:end+1], DECIMAL_4) + # start >p, end >0 1965q1 - 1971q4 + start, end = 24, 51 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn2[start:end+1], DECIMAL_4) + # start >p, end nobs 1965q1 - 2009q3 + start, end = 24, 202 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn2[start:end+1], DECIMAL_4) + # start >p, end >nobs 1965q1 - 2015q4 + start, end = 24, 227 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn2[start:end+1], DECIMAL_4) + # start nobs, end nobs 2009q3 - 2009q3 + start, end = 202, 202 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn3[start:end+1], DECIMAL_4) + # start nobs, end >nobs 2009q3 - 2015q4 + start, end = 202, 227 + fv = res1.model.predict(params, start, end, dynamic=True) + # start >nobs, end >nobs 2009q4 - 2015q4 + start, end = 203, 227 + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn4[start:end+1], DECIMAL_4) + # defaults + start, end = None, None + fv = res1.model.predict(params, start, end, dynamic=True) + assert_almost_equal(fv, fcdyn[5:203], DECIMAL_4) + + +def test_arima_wrapper(): + cpi = load_macrodata_pandas().data['cpi'] + cpi.index = pd.Index(cpi_dates) + res = ARIMA(cpi, (4,1,1), freq='Q').fit(disp=-1) + assert_equal(res.params.index, pd.Index(['const', 'ar.L1.D.cpi', 'ar.L2.D.cpi', + 'ar.L3.D.cpi', 'ar.L4.D.cpi', + 'ma.L1.D.cpi'])) + assert_equal(res.model.endog_names, 'D.cpi') + + +@pytest.mark.smoke +def test_1dexog(): + # smoke test, this will raise an error if broken + dta = load_macrodata_pandas().data + endog = dta['realcons'].values + exog = dta['m1'].values.squeeze() + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + mod = ARMA(endog, (1,1), exog).fit(disp=-1) + mod.predict(193, 203, exog[-10:]) + + # check for dynamic is true and pandas Series see #2589 + mod.predict(193, 202, exog[-10:], dynamic=True) + + dta.index = pd.Index(cpi_dates) + mod = ARMA(dta['realcons'], (1,1), dta['m1']).fit(disp=-1) + mod.predict(dta.index[-10], dta.index[-1], exog=dta['m1'][-10:], dynamic=True) + + mod = ARMA(dta['realcons'], (1,1), dta['m1']).fit(trend='nc', disp=-1) + mod.predict(dta.index[-10], dta.index[-1], exog=dta['m1'][-10:], dynamic=True) + + +def test_arima_predict_bug(): + #predict_start_date wasn't getting set on start = None + from statsmodels.datasets import sunspots + dta = sunspots.load_pandas().data.SUNACTIVITY + dta.index = pd.date_range(start='1700', end='2009', freq='A')[:309] + arma_mod20 = ARMA(dta, (2,0)).fit(disp=-1) + arma_mod20.predict(None, None) + + # test prediction with time stamp, see #2587 + predict = arma_mod20.predict(dta.index[-20], dta.index[-1]) + assert_(predict.index.equals(dta.index[-20:])) + predict = arma_mod20.predict(dta.index[-20], dta.index[-1], dynamic=True) + assert_(predict.index.equals(dta.index[-20:])) + # partially out of sample + predict_dates = pd.date_range(start='2000', end='2015', freq='A') + predict = arma_mod20.predict(predict_dates[0], predict_dates[-1]) + assert_(predict.index.equals(predict_dates)) + #assert_(1 == 0) + + +def test_arima_predict_q2(): + # bug with q > 1 for arima predict + inv = load_macrodata_pandas().data['realinv'].values + arima_mod = ARIMA(np.log(inv), (1,1,2)).fit(start_params=[0,0,0,0], disp=-1) + fc, stderr, conf_int = arima_mod.forecast(5) + # values copy-pasted from gretl + assert_almost_equal(fc, + [7.306320, 7.313825, 7.321749, 7.329827, 7.337962], + 5) + + +def test_arima_predict_pandas_nofreq(): + # this is issue 712 + dates = ["2010-01-04", "2010-01-05", "2010-01-06", "2010-01-07", + "2010-01-08", "2010-01-11", "2010-01-12", "2010-01-11", + "2010-01-12", "2010-01-13", "2010-01-17"] + close = [626.75, 623.99, 608.26, 594.1, 602.02, 601.11, 590.48, 587.09, + 589.85, 580.0,587.62] + data = pd.DataFrame(close, index=DatetimeIndex(dates), columns=["close"]) + + # TODO: fix this names bug for non-string names names + with pytest.warns(ValueWarning, match="it has no associated frequency"): + arma = ARMA(data, order=(1, 0)).fit(disp=-1) + + # first check that in-sample prediction works + predict = arma.predict() + + assert_(predict.index.equals(data.index)) + + # check that this raises an exception when date not on index + assert_raises(KeyError, arma.predict, start="2010-1-9", end=10) + assert_raises(KeyError, arma.predict, start="2010-1-9", end="2010-1-17") + + # raise because end not on index + assert_raises(KeyError, arma.predict, start="2010-1-4", end="2010-1-10") + # raise because end not on index + assert_raises(KeyError, arma.predict, start=3, end="2010-1-10") + + predict = arma.predict(start="2010-1-7", end=10) # should be of length 10 + assert_(len(predict) == 8) + assert_(predict.index.equals(data.index[3:10+1])) + + with pytest.warns(ValueWarning, match="No supported index is available"): + predict = arma.predict(start="2010-1-7", end=14) + + assert_(predict.index.equals(pd.Index(lrange(3, 15)))) + + with pytest.warns(ValueWarning, match="No supported index is available"): + predict = arma.predict(start=3, end=14) + + assert_(predict.index.equals(pd.Index(lrange(3, 15)))) + + # end can be a date if it's in the sample and on the index + # predict dates is just a slice of the dates index then + predict = arma.predict(start="2010-1-6", end="2010-1-13") + assert_(predict.index.equals(data.index[2:10])) + predict = arma.predict(start=2, end="2010-1-13") + assert_(predict.index.equals(data.index[2:10])) + + +def test_arima_predict_exog(): + # check 625 and 626 + #from statsmodels.tsa.arima_process import arma_generate_sample + #arparams = np.array([1, -.45, .25]) + #maparams = np.array([1, .15]) + #nobs = 100 + #np.random.seed(123) + #y = arma_generate_sample(arparams, maparams, nobs, burnin=100) + + ## make an exogenous trend + #X = np.array(lrange(nobs)) / 20.0 + ## add a constant + #y += 2.5 + + from pandas import read_csv + arima_forecasts = read_csv(current_path + "/results/" + "results_arima_exog_forecasts_mle.csv") + y = arima_forecasts["y"].dropna() + X = np.arange(len(y) + 25)/20. + predict_expected = arima_forecasts["predict"] + arma_res = ARMA(y.values, order=(2,1), exog=X[:100]).fit(trend="c", + disp=-1) + # params from gretl + params = np.array([2.786912485145725, -0.122650190196475, + 0.533223846028938, -0.319344321763337, + 0.132883233000064]) + assert_almost_equal(arma_res.params, params, 5) + # no exog for in-sample + predict = arma_res.predict() + assert_almost_equal(predict, predict_expected.values[:100], 5) + + # check 626 + assert_(len(arma_res.model.exog_names) == 5) + + # exog for out-of-sample and in-sample dynamic + predict = arma_res.model.predict(params, end=124, exog=X[100:]) + assert_almost_equal(predict, predict_expected.values, 6) + + # conditional sum of squares + #arima_forecasts = read_csv(current_path + "/results/" + # "results_arima_exog_forecasts_css.csv") + #predict_expected = arima_forecasts["predict"].dropna() + #arma_res = ARMA(y.values, order=(2,1), exog=X[:100]).fit(trend="c", + # method="css", + # disp=-1) + + #params = np.array([2.152350033809826, -0.103602399018814, + # 0.566716580421188, -0.326208009247944, + # 0.102142932143421]) + #predict = arma_res.model.predict(params) + ## in-sample + #assert_almost_equal(predict, predict_expected.values[:98], 6) + + #predict = arma_res.model.predict(params, end=124, exog=X[100:]) + ## exog for out-of-sample and in-sample dynamic + #assert_almost_equal(predict, predict_expected.values, 3) + + +@pytest.mark.smoke +def test_arima_no_diff(): + # GH#736 + # smoke test, predict will break if we have ARIMAResults but + # ARMA model, need ARIMA(p, 0, q) to return an ARMA in init. + ar = [1, -.75, .15, .35] + ma = [1, .25, .9] + np.random.seed(12345) + y = arma_generate_sample(ar, ma, 100) + mod = ARIMA(y, (3, 0, 2)) + assert_(type(mod) is ARMA) + res = mod.fit(disp=-1) + # smoke test just to be sure + res.predict() + + +@pytest.mark.smoke +def test_arima_predict_noma(): + # GH#657 + ar = [1, .75] + ma = [1] + np.random.seed(12345) + data = arma_generate_sample(ar, ma, 100) + arma = ARMA(data, order=(0,1)) + arma_res = arma.fit(disp=-1) + arma_res.forecast(1) + + +def test_arimax(): + dta = load_macrodata_pandas().data + dates = pd.date_range("1959", periods=len(dta), freq='Q') + dta.index = cpi_dates + dta = dta[["realdpi", "m1", "realgdp"]] + y = dta.pop("realdpi") + + # 1 exog + #X = dta.iloc[1:]["m1"] + #res = ARIMA(y, (2, 1, 1), X).fit(disp=-1) + #params = [23.902305009084373, 0.024650911502790, -0.162140641341602, + # 0.165262136028113, -0.066667022903974] + #assert_almost_equal(res.params.values, params, 6) + + # 2 exog + X = dta + res = ARIMA(y, (2, 1, 1), X).fit(disp=False, solver="nm", maxiter=1000, + ftol=1e-12, xtol=1e-12) + + # from gretl + #params = [13.113976653926638, -0.003792125069387, 0.004123504809217, + # -0.199213760940898, 0.151563643588008, -0.033088661096699] + # from stata using double + stata_llf = -1076.108614859121 + params = [13.1259220104, -0.00376814509403812, 0.00411970083135622, + -0.19921477896158524, 0.15154396192855729, -0.03308400760360837] + # we can get close + assert_almost_equal(res.params.values, params, 4) + + # This shows that it's an optimizer problem and not a problem in the code + assert_almost_equal(res.model.loglike(np.array(params)), stata_llf, 6) + + X = dta.diff() + X.iloc[0] = 0 + res = ARIMA(y, (2, 1, 1), X).fit(disp=False) + + # gretl won't estimate this - looks like maybe a bug on their part, + # but we can just fine, we're close to Stata's answer + # from Stata + params = [19.5656863783347, 0.32653841355833396198, + 0.36286527042965188716, -1.01133792126884, + -0.15722368379307766206, 0.69359822544092153418] + + assert_almost_equal(res.params.values, params, 3) + + +def test_bad_start_params(): + endog = np.array([ + 820.69093, 781.0103028, 785.8786988, 767.64282267, + 778.9837648, 824.6595702, 813.01877867, 751.65598567, + 753.431091, 746.920813, 795.6201904, 772.65732833, + 793.4486454, 868.8457766, 823.07226547, 783.09067747, + 791.50723847, 770.93086347, 835.34157333, 810.64147947, + 738.36071367, 776.49038513, 822.93272333, 815.26461227, + 773.70552987, 777.3726522, 811.83444853, 840.95489133, + 777.51031933, 745.90077307, 806.95113093, 805.77521973, + 756.70927733, 749.89091773, 1694.2266924, 2398.4802244, + 1434.6728516, 909.73940427, 929.01291907, 769.07561453, + 801.1112548, 796.16163313, 817.2496376, 857.73046447, + 838.849345, 761.92338873, 731.7842242, 770.4641844]) + + mod = ARMA(endog, (15, 0)) + with pytest.raises(ValueError): + mod.fit() + + inv = load_macrodata_pandas().data['realinv'].values + arima_mod = ARIMA(np.log(inv), (1, 1, 2)) + with pytest.raises(ValueError): + arima_mod.fit() + + +def test_arima_small_data_bug(): + # Issue 1038, too few observations with given order + import statsmodels.api as sm + + vals = [96.2, 98.3, 99.1, 95.5, 94.0, 87.1, 87.9, 86.7402777504474] + + dr = pd.date_range("1990", periods=len(vals), freq='Q') + ts = pd.Series(vals, index=dr) + df = pd.DataFrame(ts) + mod = sm.tsa.ARIMA(df, (2, 0, 2)) + assert_raises(ValueError, mod.fit) + + +@pytest.mark.smoke +def test_arima_dataframe_integer_name(): + # Smoke Test for Issue GH#1038 + import statsmodels.api as sm + + vals = [96.2, 98.3, 99.1, 95.5, 94.0, 87.1, 87.9, 86.7402777504474, + 94.0, 96.5, 93.3, 97.5, 96.3, 92.] + + dr = pd.date_range("1990", periods=len(vals), freq='Q') + ts = pd.Series(vals, index=dr) + df = pd.DataFrame(ts) + mod = sm.tsa.ARIMA(df, (2, 0, 2)) + + +def test_arima_exog_predict_1d(): + # test 1067 + np.random.seed(12345) + y = np.random.random(100) + x = np.random.random(100) + mod = ARMA(y, (2, 1), x).fit(disp=-1) + newx = np.random.random(10) + mod.forecast(steps=10, alpha=0.05, exog=newx) + + with pytest.raises(ValueError): + mod.forecast(steps=10, alpha=0.05, exog=newx[:5]) + + with pytest.raises(ValueError): + mod.forecast(steps=10, alpha=0.05) + + too_many = pd.DataFrame(np.zeros((10, 2)), + columns=['x1', 'x2']) + with pytest.raises(ValueError): + mod.forecast(steps=10, alpha=0.05, exog=too_many) + + +def test_arima_1123(): + # test ARMAX predict when trend is none + np.random.seed(12345) + arparams = np.array([.75, -.25]) + maparams = np.array([.65, .35]) + + arparam = np.r_[1, -arparams] + maparam = np.r_[1, maparams] + + nobs = 20 + + dates = pd.date_range(start='1980', periods=nobs, freq='A') + + np.random.seed(12345) + y = arma_generate_sample(arparams, maparams, nobs) + + X = np.random.randn(nobs) + y += 5*X + mod = ARMA(y[:-1], order=(1,0), exog=X[:-1]) + res = mod.fit(trend='nc', disp=False) + fc = res.forecast(exog=X[-1:]) + # results from gretl + assert_almost_equal(fc[0], 2.200393, 6) + assert_almost_equal(fc[1], 1.030743, 6) + assert_almost_equal(fc[2][0,0], 0.180175, 6) + assert_almost_equal(fc[2][0,1], 4.220611, 6) + + mod = ARMA(y[:-1], order=(1,1), exog=X[:-1]) + res = mod.fit(trend='nc', disp=False) + fc = res.forecast(exog=X[-1:]) + assert_almost_equal(fc[0], 2.765688, 6) + assert_almost_equal(fc[1], 0.835048, 6) + assert_almost_equal(fc[2][0,0], 1.129023, 6) + assert_almost_equal(fc[2][0,1], 4.402353, 6) + + # make sure this works to. code looked fishy. + mod = ARMA(y[:-1], order=(1,0), exog=X[:-1]) + res = mod.fit(trend='c', disp=False) + fc = res.forecast(exog=X[-1:]) + assert_almost_equal(fc[0], 2.481219, 6) + assert_almost_equal(fc[1], 0.968759, 6) + assert_almost_equal(fc[2][0], [0.582485, 4.379952], 6) + + +def test_small_data(): + # 1146 + y = [-1214.360173, -1848.209905, -2100.918158, -3647.483678, -4711.186773] + + # refuse to estimate these + assert_raises(ValueError, ARIMA, y, (2, 0, 3)) + assert_raises(ValueError, ARIMA, y, (1, 1, 3)) + mod = ARIMA(y, (1, 0, 3)) + assert_raises(ValueError, mod.fit, trend="c") + + # try to estimate these...leave it up to the user to check for garbage + # and be clear, these are garbage parameters. + # X-12 arima will estimate, gretl refuses to estimate likely a problem + # in start params regression. + res = mod.fit(trend="nc", disp=0, start_params=[.1,.1,.1,.1]) + mod = ARIMA(y, (1, 0, 2)) + import warnings + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + res = mod.fit(disp=0, start_params=[np.mean(y), .1, .1, .1]) + + +class TestARMA00(object): + + @classmethod + def setup_class(cls): + from statsmodels.datasets.sunspots import load_pandas + + sunspots = load_pandas().data['SUNACTIVITY'].values + cls.y = y = sunspots + cls.arma_00_model = ARMA(y, order=(0, 0)) + cls.arma_00_res = cls.arma_00_model.fit(disp=-1) + + def test_parameters(self): + params = self.arma_00_res.params + assert_almost_equal(self.y.mean(), params) + + def test_predictions(self): + predictions = self.arma_00_res.predict() + assert_almost_equal(self.y.mean() * np.ones_like(predictions), predictions) + + def test_arroots(self): + # regression test; older implementation of arroots returned None + # instead of en empty array + roots = self.arma_00_res.arroots + assert_equal(roots.size, 0) + + def test_maroots(self): + # regression test; older implementation of arroots returned None + # instead of en empty array + roots = self.arma_00_res.maroots + assert_equal(roots.size, 0) + + @pytest.mark.skip + def test_information_criteria(self): + # This test is invalid since the ICs differ due to df_model differences + # between OLS and ARIMA + res = self.arma_00_res + y = self.y + ols_res = OLS(y, np.ones_like(y)).fit(disp=-1) + ols_ic = np.array([ols_res.aic, ols_res.bic]) + arma_ic = np.array([res.aic, res.bic]) + assert_almost_equal(ols_ic, arma_ic, DECIMAL_4) + + def test_arma_00_nc(self): + arma_00 = ARMA(self.y, order=(0, 0)) + assert_raises(ValueError, arma_00.fit, trend='nc', disp=-1) + + def test_css(self): + arma = ARMA(self.y, order=(0, 0)) + fit = arma.fit(method='css', disp=-1) + predictions = fit.predict() + assert_almost_equal(self.y.mean() * np.ones_like(predictions), predictions) + + def test_arima(self): + yi = np.cumsum(self.y) + arima = ARIMA(yi, order=(0, 1, 0)) + fit = arima.fit(disp=-1) + assert_almost_equal(np.diff(yi).mean(), fit.params, DECIMAL_4) + + def test_arma_ols(self): + y = self.y + y_lead = y[1:] + y_lag = y[:-1] + T = y_lag.shape[0] + X = np.hstack((np.ones((T,1)), y_lag[:,None])) + ols_res = OLS(y_lead, X).fit() + arma_res = ARMA(y_lead,order=(0,0),exog=y_lag).fit(trend='c', disp=-1) + assert_almost_equal(ols_res.params, arma_res.params) + + def test_arma_exog_no_constant(self): + y = self.y + y_lead = y[1:] + y_lag = y[:-1] + X = y_lag[:,None] + ols_res = OLS(y_lead, X).fit() + arma_res = ARMA(y_lead,order=(0,0),exog=y_lag).fit(trend='nc', disp=-1) + assert_almost_equal(ols_res.params, arma_res.params) + + +def test_arima_dates_startatend(): + # bug + np.random.seed(18) + x = pd.Series(np.random.random(36), + index=pd.date_range(start='1/1/1990', + periods=36, freq='M')) + res = ARIMA(x, (1, 0, 0)).fit(disp=0) + pred = res.predict(start=len(x), end=len(x)) + assert_(pred.index[0] == x.index.shift(1)[-1]) + fc = res.forecast()[0] + assert_almost_equal(pred.values[0], fc) + + +def test_arma_missing(): + from statsmodels.tools.sm_exceptions import MissingDataError + # bug 1343 + y = np.random.random(40) + y[-1] = np.nan + assert_raises(MissingDataError, ARMA, y, (1, 0), missing='raise') + + +@pytest.mark.matplotlib +def test_plot_predict(close_figures): + from statsmodels.datasets.sunspots import load_pandas + + dta = load_pandas().data[['SUNACTIVITY']] + dta.index = date_range(start='1700', end='2009', freq='A')[:309] + res = ARMA(dta, (3, 0)).fit(disp=-1) + fig = res.plot_predict('1990', '2012', dynamic=True, plot_insample=False) + + res = ARIMA(dta, (3, 1, 0)).fit(disp=-1) + fig = res.plot_predict('1990', '2012', dynamic=True, plot_insample=False) + + +def test_arima_diff2(): + dta = load_macrodata_pandas().data['cpi'] + dates = pd.date_range("1959", periods=len(dta), freq='Q') + dta.index = cpi_dates + mod = ARIMA(dta, (3, 2, 1)).fit(disp=-1) + fc, fcerr, conf_int = mod.forecast(10) + # forecasts from gretl + conf_int_res = [ (216.139, 219.231), + (216.472, 221.520), + (217.064, 223.649), + (217.586, 225.727), + (218.119, 227.770), + (218.703, 229.784), + (219.306, 231.777), + (219.924, 233.759), + (220.559, 235.735), + (221.206, 237.709)] + + fc_res = [217.685, 218.996, 220.356, 221.656, 222.945, 224.243, 225.541, + 226.841, 228.147, 229.457] + fcerr_res = [0.7888, 1.2878, 1.6798, 2.0768, 2.4620, 2.8269, 3.1816, + 3.52950, 3.8715, 4.2099] + + assert_almost_equal(fc, fc_res, 3) + assert_almost_equal(fcerr, fcerr_res, 3) + assert_almost_equal(conf_int, conf_int_res, 3) + + predicted = mod.predict('2008Q1', '2012Q1', typ='levels') + + predicted_res = [214.464, 215.478, 221.277, 217.453, 212.419, 213.530, + 215.087, 217.685 , 218.996 , 220.356 , 221.656 , + 222.945 , 224.243 , 225.541 , 226.841 , 228.147 , + 229.457] + assert_almost_equal(predicted, predicted_res, 3) + + +def test_arima111_predict_exog_2127(): + # regression test for issue #2127 + ef = [0.03005, 0.03917, 0.02828, 0.03644, 0.03379, 0.02744, + 0.03343, 0.02621, 0.03050, 0.02455, 0.03261, 0.03507, + 0.02734, 0.05373, 0.02677, 0.03443, 0.03331, 0.02741, + 0.03709, 0.02113, 0.03343, 0.02011, 0.03675, 0.03077, + 0.02201, 0.04844, 0.05518, 0.03765, 0.05433, 0.03049, + 0.04829, 0.02936, 0.04421, 0.02457, 0.04007, 0.03009, + 0.04504, 0.05041, 0.03651, 0.02719, 0.04383, 0.02887, + 0.03440, 0.03348, 0.02364, 0.03496, 0.02549, 0.03284, + 0.03523, 0.02579, 0.03080, 0.01784, 0.03237, 0.02078, + 0.03508, 0.03062, 0.02006, 0.02341, 0.02223, 0.03145, + 0.03081, 0.02520, 0.02683, 0.01720, 0.02225, 0.01579, + 0.02237, 0.02295, 0.01830, 0.02356, 0.02051, 0.02932, + 0.03025, 0.02390, 0.02635, 0.01863, 0.02994, 0.01762, + 0.02837, 0.02421, 0.01951, 0.02149, 0.02079, 0.02528, + 0.02575, 0.01634, 0.02563, 0.01719, 0.02915, 0.01724, + 0.02804, 0.02750, 0.02099, 0.02522, 0.02422, 0.03254, + 0.02095, 0.03241, 0.01867, 0.03998, 0.02212, 0.03034, + 0.03419, 0.01866, 0.02623, 0.02052] + ue = [4.9, 5.0, 5.0, 5.0, 4.9, 4.7, 4.8, 4.7, 4.7, + 4.6, 4.6, 4.7, 4.7, 4.5, 4.4, 4.5, 4.4, 4.6, + 4.5, 4.4, 4.5, 4.4, 4.6, 4.7, 4.6, 4.7, 4.7, + 4.7, 5.0, 5.0, 4.9, 5.1, 5.0, 5.4, 5.6, 5.8, + 6.1, 6.1, 6.5, 6.8, 7.3, 7.8, 8.3, 8.7, 9.0, + 9.4, 9.5, 9.5, 9.6, 9.8, 10., 9.9, 9.9, 9.7, + 9.8, 9.9, 9.9, 9.6, 9.4, 9.5, 9.5, 9.5, 9.5, + 9.8, 9.4, 9.1, 9.0, 9.0, 9.1, 9.0, 9.1, 9.0, + 9.0, 9.0, 8.8, 8.6, 8.5, 8.2, 8.3, 8.2, 8.2, + 8.2, 8.2, 8.2, 8.1, 7.8, 7.8, 7.8, 7.9, 7.9, + 7.7, 7.5, 7.5, 7.5, 7.5, 7.3, 7.2, 7.2, 7.2, + 7.0, 6.7, 6.6, 6.7, 6.7, 6.3, 6.3] + + ue = np.array(ue) / 100 + model = ARIMA(ef, (1, 1, 1), exog=ue) + res = model.fit(transparams=False, pgtol=1e-8, iprint=0, disp=0) + assert_equal(res.mle_retvals['warnflag'], 0) + predicts = res.predict(start=len(ef), end=len(ef) + 10, + exog=ue[-11:], typ='levels') + + # regression test, not verified numbers + predicts_res = np.array([ + 0.02591095, 0.02321325, 0.02436579, 0.02368759, 0.02389753, + 0.02372, 0.0237481, 0.0236738, 0.023644, 0.0236283, + 0.02362267]) + + assert_allclose(predicts, predicts_res, atol=5e-6) + + # Smoke check of forecast with exog in ARIMA + res.forecast(steps=10, exog=np.empty(10)) + + with pytest.raises(ValueError): + res.forecast(steps=10) + with pytest.raises(ValueError): + res.forecast(steps=10, exog=np.empty((10, 2))) + with pytest.raises(ValueError): + res.forecast(steps=10, exog=np.empty(100)) + + +def test_arima_exog_predict(): + # test forecasting and dynamic prediction with exog against Stata + + dta = load_macrodata_pandas().data + dates = pd.date_range("1959", periods=len(dta), freq='Q') + cpi_dates = period_range(start='1959Q1', end='2009Q3', freq='Q') + dta.index = cpi_dates + + data = dta + data['loginv'] = np.log(data['realinv']) + data['loggdp'] = np.log(data['realgdp']) + data['logcons'] = np.log(data['realcons']) + + forecast_period = period_range(start='2008Q2', end='2009Q4', freq='Q') + end = forecast_period[0] + data_sample = data.loc[dta.index < end] + + exog_full = data[['loggdp', 'logcons']] + + # pandas + + mod = ARIMA(data_sample['loginv'], (1, 0, 1), + exog=data_sample[['loggdp', 'logcons']]) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + res = mod.fit(disp=0, solver='bfgs', maxiter=5000) + + predicted_arma_fp = res.predict(start=197, end=202, + exog=exog_full.values[197:]).values + predicted_arma_dp = res.predict(start=193, end=202, + exog=exog_full[197:], dynamic=True) + + # numpy + mod2 = ARIMA(np.asarray(data_sample['loginv']), (1, 0, 1), + exog=np.asarray(data_sample[['loggdp', 'logcons']])) + res2 = mod2.fit(start_params=res.params, disp=0, + solver='bfgs', maxiter=5000) + + exog_full = data[['loggdp', 'logcons']] + predicted_arma_f = res2.predict(start=197, end=202, + exog=exog_full.values[197:]) + predicted_arma_d = res2.predict(start=193, end=202, + exog=exog_full[197:], dynamic=True) + + endog_scale = 100 + ex_scale = 1000 + # ARIMA(1, 1, 1) + ex = ex_scale * np.asarray(data_sample[['loggdp', 'logcons']].diff()) + # The first obsevation is not (supposed to be) used, but I get a Lapack problem + # Intel MKL ERROR: Parameter 5 was incorrect on entry to DLASCL. + ex[0] = 0 + mod111 = ARIMA(100 * np.asarray(data_sample['loginv']), (1, 1, 1), + # Stata differences also the exog + exog=ex) + sv = [-0.94771574, 0.5869353, -0.32651653, 0.78066562, -0.68747501] + res111 = mod111.fit(start_params=sv, disp=0, solver='bfgs', maxiter=5000) + exog_full_d = ex_scale * data[['loggdp', 'logcons']].diff() + res111.predict(start=197, end=202, exog=exog_full_d.values[197:]) + + predicted_arima_f = res111.predict(start=196, end=202, + exog=exog_full_d.values[197:], + typ='levels') + predicted_arima_d = res111.predict(start=193, end=202, + exog=exog_full_d.values[197:], + typ='levels', dynamic=True) + + res_f101 = np.array( + [7.73975859954, 7.71660108543, 7.69808978329, 7.70872117504, + 7.65183927580, 7.69784279784, 7.70290907856, 7.69237782644, + 7.65017785174, 7.66061689028, 7.65980022857, 7.61505314129, + 7.51697158428, 7.51657606630, 7.5271053284]) + res_f111 = np.array( + [7.74460013693, 7.71958207517, 7.69629561172, 7.71208186737, + 7.65758850178, 7.69223472572, 7.70411775588, 7.68896109499, + 7.64016249001, 7.64871881901, 7.62550283402, 7.55814609462, + 7.44431310053, 7.42963968062, 7.43554675427]) + res_d111 = np.array( + [7.74460013693, 7.71958207517, 7.69629561172, 7.71208186737, + 7.65758850178, 7.69223472572, 7.71870821151, 7.72994302150, + 7.71439447355, 7.72544001101, 7.70521902623, 7.64020040524, + 7.52819271910, 7.51494426940, 7.52196378005]) + res_d101 = np.array( + [7.73975859954, 7.71660108543, 7.69808978329, 7.70872117504, + 7.65183927580, 7.69784279784, 7.72522142662, 7.73962377858, + 7.73245950636, 7.74935432862, 7.74449584691, 7.69589103679, + 7.59412746880, 7.59021764836, 7.59739267775]) + + # Relax tolerance on OSX due to frequent small failures + # GH 4657 + tol = 1e-3 if PLATFORM_OSX or PLATFORM_WIN else 1e-4 + assert_allclose(predicted_arma_dp, + res_d101[-len(predicted_arma_d):], rtol=tol, atol=tol) + assert_allclose(predicted_arma_fp, + res_f101[-len(predicted_arma_f):], rtol=tol, atol=tol) + assert_allclose(predicted_arma_d, + res_d101[-len(predicted_arma_d):], rtol=tol, atol=tol) + assert_allclose(predicted_arma_f, + res_f101[-len(predicted_arma_f):], rtol=tol, atol=tol) + assert_allclose(predicted_arima_d / endog_scale, + res_d111[-len(predicted_arima_d):], rtol=tol, atol=tol) + assert_allclose(predicted_arima_f / endog_scale, + res_f111[-len(predicted_arima_f):], rtol=tol, atol=tol) + + # test for forecast with 0 ar fix in #2457 numbers again from Stata + + res_f002 = np.array( + [7.70178181209, 7.67445481224, 7.67153737650, 7.67729153190, + 7.61173201163, 7.67913499878, 7.67276092120, 7.66275451925, + 7.65199799315, 7.65149983741, 7.65554131408, 7.62213286298, + 7.53795983357, 7.53626130154, 7.54539963934]) + res_d002 = np.array( + [7.70178181209, 7.67445481224, 7.67153737650, 7.67729153190, + 7.61173201163, 7.67913499878, 7.67306697759, 7.65287924998, + 7.64904451605, 7.66580449603, 7.66252081172, 7.62213286298, + 7.53795983357, 7.53626130154, 7.54539963934]) + + mod_002 = ARIMA(np.asarray(data_sample['loginv']), (0, 0, 2), + exog=np.asarray(data_sample[['loggdp', 'logcons']])) + + # doesn't converge with default starting values + start_params = np.concatenate((res.params[[0, 1, 2, 4]], [0])) + res_002 = mod_002.fit(start_params=start_params, disp=0, + solver='bfgs', maxiter=5000) + + # forecast + fpredict_002 = res_002.predict(start=197, end=202, + exog=exog_full.values[197:]) + forecast_002 = res_002.forecast(steps=len(exog_full.values[197:]), + exog=exog_full.values[197:]) + # TODO: Checking other results + forecast_002 = forecast_002[0] + assert_allclose(fpredict_002, res_f002[-len(fpredict_002):], + rtol=tol, atol=tol / 100.0) + assert_allclose(forecast_002, res_f002[-len(forecast_002):], + rtol=tol, atol=tol / 100.0) + + # dynamic predict + dpredict_002 = res_002.predict(start=193, end=202, + exog=exog_full.values[197:], dynamic=True) + assert_allclose(dpredict_002, res_d002[-len(dpredict_002):], + rtol=tol, atol=tol / 100.0) + + # in-sample dynamic predict should not need exog, #2982 + predict_3a = res_002.predict(start=100, end=120, dynamic=True) + predict_3b = res_002.predict(start=100, end=120, + exog=exog_full.values[100:120], dynamic=True) + assert_allclose(predict_3a, predict_3b, rtol=1e-10) + + h = len(exog_full.values[197:]) + with pytest.raises(ValueError): + res_002.forecast(steps=h) + with pytest.raises(ValueError): + res_002.forecast(steps=h, exog=np.empty((h, 20))) + with pytest.raises(ValueError): + res_002.forecast(steps=h, exog=np.empty(20)) + + +def test_arima_fit_multiple_calls(): + y = [-1214.360173, -1848.209905, -2100.918158, -3647.483678, -4711.186773] + mod = ARIMA(y, (1, 0, 2)) + # Make multiple calls to fit + with pytest.warns(HessianInversionWarning, match="no bse or cov"): + mod.fit(disp=0, start_params=[np.mean(y), .1, .1, .1]) + assert_equal(mod.exog_names, ['const', 'ar.L1.y', 'ma.L1.y', 'ma.L2.y']) + + mod.exog = None # FIXME: this shouldn't be necessary + with pytest.warns(HessianInversionWarning, match="no bse or cov"): + res = mod.fit(disp=0, start_params=[np.mean(y), .1, .1, .1]) + assert_equal(mod.exog_names, ['const', 'ar.L1.y', 'ma.L1.y', 'ma.L2.y']) + + # ensure summary() works # TODO: separate and pytest.mark.smoke + res.summary() + + # test multiple calls when there is only a constant term + mod = ARIMA(y, (0, 0, 0)) + # Make multiple calls to fit + mod.fit(disp=0, start_params=[np.mean(y)]) + assert_equal(mod.exog_names, ['const']) + + mod.exog = None # FIXME: this shouldn't be necessary + res = mod.fit(disp=0, start_params=[np.mean(y)]) + assert_equal(mod.exog_names, ['const']) + + # ensure summary() works # TODO: separate and pytest.mark.smoke + res.summary() + + +def test_long_ar_start_params(): + np.random.seed(12345) + arparams = np.array([1, -.75, .25]) + maparams = np.array([1, .65, .35]) + + nobs = 30 + + np.random.seed(12345) + y = arma_generate_sample(arparams, maparams, nobs) + + model = ARMA(y, order=(2, 2)) + + model.fit(method='css',start_ar_lags=10, disp=0) + + model.exog = None # FIXME: should not be necessary + model.fit(method='css-mle',start_ar_lags=10, disp=0) + + model.exog = None # FIXME: should not be necessary + model.fit(method='mle',start_ar_lags=10, disp=0) + assert_raises(ValueError, model.fit, start_ar_lags=nobs+5, disp=0) + + +def test_arma_pickle(): + np.random.seed(9876565) + x = fa.ArmaFft([1, -0.5], [1., 0.4], 40).generate_sample(nsample=200, + burnin=1000) + mod = ARMA(x, (1, 1)) + pkl_mod = cPickle.loads(cPickle.dumps(mod)) + + res = mod.fit(trend="c", disp=-1, solver='newton') + pkl_res = pkl_mod.fit(trend="c", disp=-1, solver='newton') + + assert_allclose(res.params, pkl_res.params) + assert_allclose(res.llf, pkl_res.llf) + assert_almost_equal(res.resid, pkl_res.resid) + assert_almost_equal(res.fittedvalues, pkl_res.fittedvalues) + assert_almost_equal(res.pvalues, pkl_res.pvalues) + + +def test_arima_pickle(): + endog = y_arma[:, 6] + mod = ARIMA(endog, (1, 1, 1)) + pkl_mod = cPickle.loads(cPickle.dumps(mod)) + + res = mod.fit(trend="c", disp=-1, solver='newton') + pkl_res = pkl_mod.fit(trend="c", disp=-1, solver='newton') + + assert_allclose(res.params, pkl_res.params) + assert_allclose(res.llf, pkl_res.llf) + assert_almost_equal(res.resid, pkl_res.resid) + assert_almost_equal(res.fittedvalues, pkl_res.fittedvalues) + assert_almost_equal(res.pvalues, pkl_res.pvalues) + + +def test_arima_not_implemented(): + formula = ' WUE ~ 1 + SFO3 ' + data = [-1214.360173, -1848.209905, -2100.918158] + assert_raises(NotImplementedError, ARIMA.from_formula, formula, data) + + +def test_endog_int(): + # int endog should produce same result as float, #3504 + + np.random.seed(123987) + y = np.random.randint(0, 16, size=100) + yf = y.astype(np.float64) + + res = AR(y).fit(5) + resf = AR(yf).fit(5) + assert_allclose(res.params, resf.params, atol=1e-5) + assert_allclose(res.bse, resf.bse, atol=1e-5) + + res = ARMA(y, order=(2, 1)).fit(disp=0) + resf = ARMA(yf, order=(2, 1)).fit(disp=0) + assert_allclose(res.params, resf.params, atol=1e-5) + assert_allclose(res.bse, resf.bse, atol=1e-5) + + res = ARIMA(y.cumsum(), order=(1, 1, 1)).fit(disp=0) + resf = ARIMA(yf.cumsum(), order=(1, 1, 1)).fit(disp=0) + assert_allclose(res.params, resf.params, rtol=1e-6, atol=1e-5) + assert_allclose(res.bse, resf.bse, rtol=1e-6, atol=1e-5) + + +def test_multidim_endog(reset_randomstate): + y = np.random.randn(1000, 2) + with pytest.raises(ValueError): + ARMA(y, order=(1, 1)) + + y = np.random.randn(1000, 1, 2) + with pytest.raises(ValueError): + ARMA(y, order=(1, 1)) + + y = np.random.randn(1000, 1, 1) + with pytest.raises(ValueError): + ARMA(y, order=(1, 1)) + + +def test_arima_no_full_output(): + # GH 2752 + endog = y_arma[:, 6] + mod = ARIMA(endog, (1, 0, 1)) + res = mod.fit(trend="c", disp=-1, full_output=False) + assert res.mle_retvals is None + + +def test_arima_summary_no_lags(reset_randomstate): + y_train = pd.Series(np.random.randn(1000), name='y_train') + x_train = pd.DataFrame(np.random.randn(1000, 2), columns=['x1', 'x2']) + res = ARIMA(endog=y_train.values, exog=x_train, + order=(0, 1, 0)).fit(disp=-1) + summ = res.summary().as_text() + assert 'const ' in summ + assert 'x1 ' in summ + assert 'x2 ' in summ + + +def test_constant_column_trend(): + # GH#3343 analogous to GH#5258 for AR, when the user passes a constant exog + # and also passes trend="c", raise instead _make_arma_exog used to + # silently drop a column and return an inconsistenct k_trend value. + + exog = np.array([0.5, 0.5, 0.5, 0.5, 0.5]) + endog = np.array([-0.011866, 0.003380, 0.015357, 0.004451, -0.020889]) + + model = ARIMA(endog=endog, order=(1, 1, 0), exog=exog) + + # Fitting with a constant and constant exog raises because of colinearity + with pytest.raises(ValueError, match="x contains a constant"): + model.fit(trend="c") + + # FIXME: calling model.fit(trend="nc") raises for orthogonal reasons diff --git a/statsmodels/tsa/tests/test_arima_process.py b/statsmodels/tsa/tests/test_arima_process.py new file mode 100644 index 0000000..0df8ed7 --- /dev/null +++ b/statsmodels/tsa/tests/test_arima_process.py @@ -0,0 +1,395 @@ +from statsmodels.compat.python import range + +from statsmodels.tsa.arima_model import ARMA +from unittest import TestCase + +import numpy as np +from numpy.testing import (assert_array_almost_equal, assert_almost_equal, + assert_allclose, + assert_equal, assert_raises, assert_) +import pytest + +from statsmodels.tsa.arima_process import (arma_generate_sample, arma_acovf, + arma_acf, arma_impulse_response, lpol_fiar, lpol_fima, + ArmaProcess, lpol2index, index2lpol) +from statsmodels.sandbox.tsa.fftarma import ArmaFft + +from statsmodels.tsa.tests.results.results_process import armarep # benchmarkdata +from statsmodels.tsa.tests.results import results_arma_acf + +arlist = [[1.], + [1, -0.9], # ma representation will need many terms to get high precision + [1, 0.9], + [1, -0.9, 0.3]] + +malist = [[1.], + [1, 0.9], + [1, -0.9], + [1, 0.9, -0.3]] + +DECIMAL_4 = 4 + + +def test_arma_acovf(): + # Check for specific AR(1) + N = 20 + phi = 0.9 + sigma = 1 + # rep 1: from module function + rep1 = arma_acovf([1, -phi], [1], N) + # rep 2: manually + rep2 = [1. * sigma * phi ** i / (1 - phi ** 2) for i in range(N)] + assert_allclose(rep1, rep2) + + +def test_arma_acovf_persistent(): + # Test arma_acovf in case where there is a near-unit root. + # .999 is high enough to trigger the "while ir[-1] > 5*1e-5:" clause, + # but not high enough to trigger the "nobs_ir > 50000" clause. + ar = np.array([1, -.9995]) + ma = np.array([1]) + process = ArmaProcess(ar, ma) + res = process.acovf(10) + + # Theoretical variance sig2 given by: + # sig2 = .9995**2 * sig2 + 1 + sig2 = 1/(1-.9995**2) + + corrs = .9995**np.arange(10) + expected = sig2*corrs + assert_equal(res.ndim, 1) + assert_allclose(res, expected) + + +def test_arma_acf(): + # Check for specific AR(1) + N = 20 + phi = 0.9 + sigma = 1 + # rep 1: from module function + rep1 = arma_acf([1, -phi], [1], N) + # rep 2: manually + acovf = np.array([1. * sigma * phi ** i / (1 - phi ** 2) for i in range(N)]) + rep2 = acovf / (1. / (1 - phi ** 2)) + assert_allclose(rep1, rep2) + + +def test_arma_acf_compare_R_ARMAacf(): + # Test specific cases against output from R's ARMAacf + bd_example_3_3_2 = arma_acf([1, -1, 0.25], [1, 1]) + assert_allclose(bd_example_3_3_2, results_arma_acf.bd_example_3_3_2) + example_1 = arma_acf([1, -1, 0.25], [1, 1, 0.2]) + assert_allclose(example_1, results_arma_acf.custom_example_1) + example_2 = arma_acf([1, -1, 0.25], [1, 1, 0.2, 0.3]) + assert_allclose(example_2, results_arma_acf.custom_example_2) + example_3 = arma_acf([1, -1, 0.25], [1, 1, 0.2, 0.3, -0.35]) + assert_allclose(example_3, results_arma_acf.custom_example_3) + example_4 = arma_acf([1, -1, 0.25], [1, 1, 0.2, 0.3, -0.35, -0.1]) + assert_allclose(example_4, results_arma_acf.custom_example_4) + example_5 = arma_acf([1, -1, 0.25, -0.1], [1, 1, 0.2]) + assert_allclose(example_5, results_arma_acf.custom_example_5) + example_6 = arma_acf([1, -1, 0.25, -0.1, 0.05], [1, 1, 0.2]) + assert_allclose(example_6, results_arma_acf.custom_example_6) + example_7 = arma_acf([1, -1, 0.25, -0.1, 0.05, -0.02], [1, 1, 0.2]) + assert_allclose(example_7, results_arma_acf.custom_example_7) + + +def test_arma_acov_compare_theoretical_arma_acov(): + # Test against the older version of this function, which used a different + # approach that nicely shows the theoretical relationship + # See GH:5324 when this was removed for full version of the function + # including documentation and inline comments + + def arma_acovf_historical(ar, ma, nobs=10): + if np.abs(np.sum(ar) - 1) > 0.9: + nobs_ir = max(1000, 2 * nobs) + else: + nobs_ir = max(100, 2 * nobs) + ir = arma_impulse_response(ar, ma, leads=nobs_ir) + while ir[-1] > 5 * 1e-5: + nobs_ir *= 10 + ir = arma_impulse_response(ar, ma, leads=nobs_ir) + if nobs_ir > 50000 and nobs < 1001: + end = len(ir) + acovf = np.array([np.dot(ir[:end-nobs-t], ir[t:end-nobs]) + for t in range(nobs)]) + else: + acovf = np.correlate(ir, ir, 'full')[len(ir) - 1:] + return acovf[:nobs] + + assert_allclose(arma_acovf([1, -0.5], [1, 0.2]), + arma_acovf_historical([1, -0.5], [1, 0.2])) + assert_allclose(arma_acovf([1, -0.99], [1, 0.2]), + arma_acovf_historical([1, -0.99], [1, 0.2])) + + +def _manual_arma_generate_sample(ar, ma, eta): + T = len(eta) + ar = ar[::-1] + ma = ma[::-1] + p, q = len(ar), len(ma) + rep2 = [0] * max(p, q) # initialize with zeroes + for t in range(T): + yt = eta[t] + if p: + yt += np.dot(rep2[-p:], ar) + if q: + # left pad shocks with zeros + yt += np.dot([0] * (q - t) + list(eta[max(0, t - q):t]), ma) + rep2.append(yt) + return np.array(rep2[max(p, q):]) + + +@pytest.mark.parametrize('ar', arlist) +@pytest.mark.parametrize('ma', malist) +@pytest.mark.parametrize('dist', [np.random.randn]) +def test_arma_generate_sample(dist, ar, ma): + # Test that this generates a true ARMA process + # (amounts to just a test that scipy.signal.lfilter does what we want) + T = 100 + np.random.seed(1234) + eta = dist(T) + + # rep1: from module function + np.random.seed(1234) + rep1 = arma_generate_sample(ar, ma, T, distrvs=dist) + # rep2: "manually" create the ARMA process + ar_params = -1 * np.array(ar[1:]) + ma_params = np.array(ma[1:]) + rep2 = _manual_arma_generate_sample(ar_params, ma_params, eta) + assert_array_almost_equal(rep1, rep2, 13) + + +def test_fi(): + # test identity of ma and ar representation of fi lag polynomial + n = 100 + mafromar = arma_impulse_response(lpol_fiar(0.4, n=n), [1], n) + assert_array_almost_equal(mafromar, lpol_fima(0.4, n=n), 13) + + +def test_arma_impulse_response(): + arrep = arma_impulse_response(armarep.ma, armarep.ar, leads=21)[1:] + marep = arma_impulse_response(armarep.ar, armarep.ma, leads=21)[1:] + assert_array_almost_equal(armarep.marep.ravel(), marep, 14) + # difference in sign convention to matlab for AR term + assert_array_almost_equal(-armarep.arrep.ravel(), arrep, 14) + + +@pytest.mark.parametrize('ar', arlist) +@pytest.mark.parametrize('ma', malist) +def test_spectrum(ar, ma): + nfreq = 20 + w = np.linspace(0, np.pi, nfreq, endpoint=False) + + arma = ArmaFft(ar, ma, 20) + spdr, wr = arma.spdroots(w) + spdp, wp = arma.spdpoly(w, 200) + spdd, wd = arma.spddirect(nfreq * 2) + assert_equal(w, wr) + assert_equal(w, wp) + assert_almost_equal(w, wd[:nfreq], decimal=14) + assert_almost_equal(spdr, spdd[:nfreq], decimal=7, + err_msg='spdr spdd not equal for %s, %s' % (ar, ma)) + assert_almost_equal(spdr, spdp, decimal=7, + err_msg='spdr spdp not equal for %s, %s' % (ar, ma)) + + +@pytest.mark.parametrize('ar', arlist) +@pytest.mark.parametrize('ma', malist) +def test_armafft(ar, ma): + # test other methods + nfreq = 20 + w = np.linspace(0, np.pi, nfreq, endpoint=False) + + arma = ArmaFft(ar, ma, 20) + ac1 = arma.invpowerspd(1024)[:10] + ac2 = arma.acovf(10)[:10] + assert_allclose(ac1, ac2, atol=1e-15, + err_msg='acovf not equal for %s, %s' % (ar, ma)) + + +def test_lpol2index_index2lpol(): + process = ArmaProcess([1, 0, 0, -0.8]) + coefs, locs = lpol2index(process.arcoefs) + assert_almost_equal(coefs, [0.8]) + assert_equal(locs, [2]) + + process = ArmaProcess([1, .1, .1, -0.8]) + coefs, locs = lpol2index(process.arcoefs) + assert_almost_equal(coefs, [-.1, -.1, 0.8]) + assert_equal(locs, [0, 1, 2]) + ar = index2lpol(coefs, locs) + assert_equal(process.arcoefs, ar) + + +class TestArmaProcess(TestCase): + def test_empty_coeff(self): + process = ArmaProcess() + assert_equal(process.arcoefs, np.array([])) + assert_equal(process.macoefs, np.array([])) + + process = ArmaProcess([1, -0.8]) + assert_equal(process.arcoefs, np.array([0.8])) + assert_equal(process.macoefs, np.array([])) + + process = ArmaProcess(ma=[1, -0.8]) + assert_equal(process.arcoefs, np.array([])) + assert_equal(process.macoefs, np.array([-0.8])) + + def test_from_coeff(self): + ar = [1.8, -0.9] + ma = [0.3] + process = ArmaProcess.from_coeffs(np.array(ar), np.array(ma)) + + ar.insert(0, -1) + ma.insert(0, 1) + ar_p = -1 * np.array(ar) + ma_p = ma + process_direct = ArmaProcess(ar_p, ma_p) + + assert_equal(process.arcoefs, process_direct.arcoefs) + assert_equal(process.macoefs, process_direct.macoefs) + assert_equal(process.nobs, process_direct.nobs) + assert_equal(process.maroots, process_direct.maroots) + assert_equal(process.arroots, process_direct.arroots) + assert_equal(process.isinvertible, process_direct.isinvertible) + assert_equal(process.isstationary, process_direct.isstationary) + + def test_from_model(self): + process = ArmaProcess([1, -.8], [1, .3], 1000) + t = 1000 + rs = np.random.RandomState(12345) + y = process.generate_sample(t, burnin=100, distrvs=rs.standard_normal) + res = ARMA(y, (1, 1)).fit(disp=False) + process_model = ArmaProcess.from_estimation(res) + process_coef = ArmaProcess.from_coeffs(res.arparams, res.maparams, t) + + assert_equal(process_model.arcoefs, process_coef.arcoefs) + assert_equal(process_model.macoefs, process_coef.macoefs) + assert_equal(process_model.nobs, process_coef.nobs) + assert_equal(process_model.isinvertible, process_coef.isinvertible) + assert_equal(process_model.isstationary, process_coef.isstationary) + + def test_process_multiplication(self): + process1 = ArmaProcess.from_coeffs([.9]) + process2 = ArmaProcess.from_coeffs([.7]) + process3 = process1 * process2 + assert_equal(process3.arcoefs, np.array([1.6, -0.7 * 0.9])) + assert_equal(process3.macoefs, np.array([])) + + process1 = ArmaProcess.from_coeffs([.9], [.2]) + process2 = ArmaProcess.from_coeffs([.7]) + process3 = process1 * process2 + + assert_equal(process3.arcoefs, np.array([1.6, -0.7 * 0.9])) + assert_equal(process3.macoefs, np.array([0.2])) + + process1 = ArmaProcess.from_coeffs([.9], [.2]) + process2 = process1 * (np.array([1.0, -0.7]), np.array([1.0])) + assert_equal(process2.arcoefs, np.array([1.6, -0.7 * 0.9])) + + assert_raises(TypeError, process1.__mul__, [3]) + + def test_str_repr(self): + process1 = ArmaProcess.from_coeffs([.9], [.2]) + out = process1.__str__() + print(out) + assert_(out.find('AR: [1.0, -0.9]') != -1) + assert_(out.find('MA: [1.0, 0.2]') != -1) + + out = process1.__repr__() + assert_(out.find('nobs=100') != -1) + assert_(out.find('at ' + str(hex(id(process1)))) != -1) + + def test_acf(self): + process1 = ArmaProcess.from_coeffs([.9]) + acf = process1.acf(10) + expected = np.array(0.9) ** np.arange(10.0) + assert_array_almost_equal(acf, expected) + + acf = process1.acf() + assert_(acf.shape[0] == process1.nobs) + + def test_pacf(self): + process1 = ArmaProcess.from_coeffs([.9]) + pacf = process1.pacf(10) + expected = np.array([1, 0.9] + [0] * 8) + assert_array_almost_equal(pacf, expected) + + pacf = process1.pacf() + assert_(pacf.shape[0] == process1.nobs) + + def test_isstationary(self): + process1 = ArmaProcess.from_coeffs([1.1]) + assert_equal(process1.isstationary, False) + + process1 = ArmaProcess.from_coeffs([1.8, -0.9]) + assert_equal(process1.isstationary, True) + + process1 = ArmaProcess.from_coeffs([1.5, -0.5]) + print(np.abs(process1.arroots)) + assert_equal(process1.isstationary, False) + + def test_arma2ar(self): + process1 = ArmaProcess.from_coeffs([], [0.8]) + vals = process1.arma2ar(100) + assert_almost_equal(vals, (-0.8) ** np.arange(100.0)) + + def test_invertroots(self): + process1 = ArmaProcess.from_coeffs([], [2.5]) + process2 = process1.invertroots(True) + assert_almost_equal(process2.ma, np.array([1.0, 0.4])) + + process1 = ArmaProcess.from_coeffs([], [0.4]) + process2 = process1.invertroots(True) + assert_almost_equal(process2.ma, np.array([1.0, 0.4])) + + process1 = ArmaProcess.from_coeffs([], [2.5]) + roots, invertable = process1.invertroots(False) + assert_equal(invertable, False) + assert_almost_equal(roots, np.array([1, 0.4])) + + def test_generate_sample(self): + process = ArmaProcess.from_coeffs([0.9]) + np.random.seed(12345) + sample = process.generate_sample() + np.random.seed(12345) + expected = np.random.randn(100) + for i in range(1, 100): + expected[i] = 0.9 * expected[i - 1] + expected[i] + assert_almost_equal(sample, expected) + + process = ArmaProcess.from_coeffs([1.6, -0.9]) + np.random.seed(12345) + sample = process.generate_sample() + np.random.seed(12345) + expected = np.random.randn(100) + expected[1] = 1.6 * expected[0] + expected[1] + for i in range(2, 100): + expected[i] = 1.6 * expected[i - 1] - 0.9 * expected[i - 2] + expected[i] + assert_almost_equal(sample, expected) + + process = ArmaProcess.from_coeffs([1.6, -0.9]) + np.random.seed(12345) + sample = process.generate_sample(burnin=100) + np.random.seed(12345) + expected = np.random.randn(200) + expected[1] = 1.6 * expected[0] + expected[1] + for i in range(2, 200): + expected[i] = 1.6 * expected[i - 1] - 0.9 * expected[i - 2] + expected[i] + assert_almost_equal(sample, expected[100:]) + + np.random.seed(12345) + sample = process.generate_sample(nsample=(100,5)) + assert_equal(sample.shape, (100,5)) + + def test_impulse_response(self): + process = ArmaProcess.from_coeffs([0.9]) + ir = process.impulse_response(10) + assert_almost_equal(ir, 0.9 ** np.arange(10)) + + def test_periodogram(self): + process = ArmaProcess() + pg = process.periodogram() + assert_almost_equal(pg[0], np.linspace(0,np.pi,100,False)) + assert_almost_equal(pg[1], np.sqrt(2 / np.pi) / 2 * np.ones(100)) diff --git a/statsmodels/tsa/tests/test_bds.py b/statsmodels/tsa/tests/test_bds.py new file mode 100644 index 0000000..7fc0029 --- /dev/null +++ b/statsmodels/tsa/tests/test_bds.py @@ -0,0 +1,107 @@ +""" +Test for BDS test for IID time series + +References +---------- + +Kanzler, Ludwig. 1998. +BDS: MATLAB Module to Calculate Brock, Dechert & Scheinkman Test for +Independence. +Statistical Software Components. Boston College Department of Economics. +http://ideas.repec.org/c/boc/bocode/t871803.html. + +""" + +import os +import numpy as np +import pandas as pd +from statsmodels.tsa.stattools import bds +from numpy.testing import assert_almost_equal + +DECIMAL_8 = 8 +DECIMAL_6 = 6 +DECIMAL_5 = 5 +DECIMAL_4 = 4 +DECIMAL_3 = 3 +DECIMAL_2 = 2 +DECIMAL_1 = 1 + +curdir = os.path.dirname(os.path.abspath(__file__)) +data_file = os.path.join(curdir, "results", "bds_data.csv") +data = pd.read_csv(data_file, header=None) + +res_file = os.path.join(curdir, "results", "bds_results.csv") +results = pd.read_csv(res_file, header=None) + + +class CheckBDS(object): + """ + Test BDS + + Test values from Kanzler's MATLAB program bds. + """ + def test_stat(self): + assert_almost_equal(self.res[0], self.bds_stats, DECIMAL_8) + + def test_pvalue(self): + assert_almost_equal(self.res[1], self.pvalues, DECIMAL_8) + + +class TestBDSSequence(CheckBDS): + """ + BDS Test on np.arange(1,26) + """ + @classmethod + def setup_class(cls): + cls.results = results[results[0] == 1] + cls.bds_stats = np.array(cls.results[2][1:]) + cls.pvalues = np.array(cls.results[3][1:]) + + cls.data = data[0][data[0].notnull()] + cls.res = bds(cls.data, 5) + + +class TestBDSNormal(CheckBDS): + """ + BDS Test on np.random.normal(size=25) + """ + @classmethod + def setup_class(cls): + cls.results = results[results[0] == 2] + cls.bds_stats = np.array(cls.results[2][1:]) + cls.pvalues = np.array(cls.results[3][1:]) + + cls.data = data[1][data[1].notnull()] + cls.res = bds(cls.data, 5) + + +class TestBDSCombined(CheckBDS): + """ + BDS Test on np.r_[np.random.normal(size=25), np.random.uniform(size=25)] + """ + @classmethod + def setup_class(cls): + cls.results = results[results[0] == 3] + cls.bds_stats = np.array(cls.results[2][1:]) + cls.pvalues = np.array(cls.results[3][1:]) + + cls.data = data[2][data[2].notnull()] + cls.res = bds(cls.data, 5) + + +class TestBDSGDPC1(CheckBDS): + """ + BDS Test on GDPC1: 1947Q1 - 2013Q1 + + References + ---------- + http://research.stlouisfed.org/fred2/series/GDPC1 + """ + @classmethod + def setup_class(cls): + cls.results = results[results[0] == 4] + cls.bds_stats = np.array(cls.results[2][1:]) + cls.pvalues = np.array(cls.results[3][1:]) + + cls.data = data[3][data[3].notnull()] + cls.res = bds(cls.data, 5) diff --git a/statsmodels/tsa/tests/test_holtwinters.py b/statsmodels/tsa/tests/test_holtwinters.py new file mode 100644 index 0000000..66fd4ba --- /dev/null +++ b/statsmodels/tsa/tests/test_holtwinters.py @@ -0,0 +1,517 @@ +""" +Author: Terence L van Zyl +Modified: Kevin Sheppard +""" +from statsmodels.compat.platform import PLATFORM_OSX + +import os +import warnings + +import numpy as np +import pandas as pd +import pytest +from numpy.testing import assert_almost_equal, assert_allclose + +from statsmodels.tools.sm_exceptions import EstimationWarning +from statsmodels.tsa.holtwinters import (ExponentialSmoothing, + SimpleExpSmoothing, Holt, SMOOTHERS, PY_SMOOTHERS) + +base, _ = os.path.split(os.path.abspath(__file__)) +housing_data = pd.read_csv(os.path.join(base, 'results', 'housing-data.csv')) +housing_data = housing_data.set_index('DATE') +housing_data = housing_data.asfreq('MS') + +SEASONALS = ('add', 'mul', None) +TRENDS = ('add', 'mul', None) + + +def _simple_dbl_exp_smoother(x, alpha, beta, l0, b0, nforecast=0): + """ + Simple, slow, direct implementation of double exp smoothing for testing + """ + n = x.shape[0] + lvals = np.zeros(n) + b = np.zeros(n) + xhat = np.zeros(n) + f = np.zeros(nforecast) + lvals[0] = l0 + b[0] = b0 + # Special case the 0 observations since index -1 is not available + xhat[0] = l0 + b0 + lvals[0] = alpha * x[0] + (1 - alpha) * (l0 + b0) + b[0] = beta * (lvals[0] - l0) + (1 - beta) * b0 + for t in range(1, n): + # Obs in index t is the time t forecast for t + 1 + lvals[t] = alpha * x[t] + (1 - alpha) * (lvals[t - 1] + b[t - 1]) + b[t] = beta * (lvals[t] - lvals[t - 1]) + (1 - beta) * b[t - 1] + + xhat[1:] = lvals[0:-1] + b[0:-1] + f[:] = lvals[-1] + np.arange(1, nforecast + 1) * b[-1] + err = x - xhat + return lvals, b, f, err, xhat + + +class TestHoltWinters(object): + @classmethod + def setup_class(cls): + # Changed for backwards compatibility with pandas + + # oildata_oil_json = '{"851990400000":446.6565229,"883526400000":454.4733065,"915062400000":455.662974,"946598400000":423.6322388,"978220800000":456.2713279,"1009756800000":440.5880501,"1041292800000":425.3325201,"1072828800000":485.1494479,"1104451200000":506.0481621,"1135987200000":526.7919833,"1167523200000":514.268889,"1199059200000":494.2110193}' + # oildata_oil = pd.read_json(oildata_oil_json, typ='Series').sort_index() + data = [446.65652290000003, 454.47330649999998, 455.66297400000002, + 423.63223879999998, 456.27132790000002, 440.58805009999998, + 425.33252010000001, 485.14944789999998, 506.04816210000001, + 526.79198329999997, 514.26888899999994, 494.21101929999998] + index = ['1996-12-31 00:00:00', '1997-12-31 00:00:00', '1998-12-31 00:00:00', + '1999-12-31 00:00:00', '2000-12-31 00:00:00', '2001-12-31 00:00:00', + '2002-12-31 00:00:00', '2003-12-31 00:00:00', '2004-12-31 00:00:00', + '2005-12-31 00:00:00', '2006-12-31 00:00:00', '2007-12-31 00:00:00'] + oildata_oil = pd.Series(data, index) + oildata_oil.index = pd.DatetimeIndex(oildata_oil.index, + freq=pd.infer_freq(oildata_oil.index)) + cls.oildata_oil = oildata_oil + + # air_ausair_json = '{"662601600000":17.5534,"694137600000":21.8601,"725760000000":23.8866,"757296000000":26.9293,"788832000000":26.8885,"820368000000":28.8314,"851990400000":30.0751,"883526400000":30.9535,"915062400000":30.1857,"946598400000":31.5797,"978220800000":32.577569,"1009756800000":33.477398,"1041292800000":39.021581,"1072828800000":41.386432,"1104451200000":41.596552}' + # air_ausair = pd.read_json(air_ausair_json, typ='Series').sort_index() + data = [17.5534, 21.860099999999999, 23.886600000000001, + 26.929300000000001, 26.888500000000001, 28.831399999999999, + 30.075099999999999, 30.953499999999998, 30.185700000000001, + 31.579699999999999, 32.577568999999997, 33.477398000000001, + 39.021580999999998, 41.386431999999999, 41.596552000000003] + index = ['1990-12-31 00:00:00', '1991-12-31 00:00:00', '1992-12-31 00:00:00', + '1993-12-31 00:00:00', '1994-12-31 00:00:00', '1995-12-31 00:00:00', + '1996-12-31 00:00:00', '1997-12-31 00:00:00', '1998-12-31 00:00:00', + '1999-12-31 00:00:00', '2000-12-31 00:00:00', '2001-12-31 00:00:00', + '2002-12-31 00:00:00', '2003-12-31 00:00:00', '2004-12-31 00:00:00'] + air_ausair = pd.Series(data, index) + air_ausair.index = pd.DatetimeIndex(air_ausair.index, + freq=pd.infer_freq(air_ausair.index)) + cls.air_ausair = air_ausair + + # livestock2_livestock_json = '{"31449600000":263.917747,"62985600000":268.307222,"94608000000":260.662556,"126144000000":266.639419,"157680000000":277.515778,"189216000000":283.834045,"220838400000":290.309028,"252374400000":292.474198,"283910400000":300.830694,"315446400000":309.286657,"347068800000":318.331081,"378604800000":329.37239,"410140800000":338.883998,"441676800000":339.244126,"473299200000":328.600632,"504835200000":314.255385,"536371200000":314.459695,"567907200000":321.413779,"599529600000":329.789292,"631065600000":346.385165,"662601600000":352.297882,"694137600000":348.370515,"725760000000":417.562922,"757296000000":417.12357,"788832000000":417.749459,"820368000000":412.233904,"851990400000":411.946817,"883526400000":394.697075,"915062400000":401.49927,"946598400000":408.270468,"978220800000":414.2428}' + # livestock2_livestock = pd.read_json(livestock2_livestock_json, typ='Series').sort_index() + data = [263.91774700000002, 268.30722200000002, 260.662556, + 266.63941899999998, 277.51577800000001, 283.834045, + 290.30902800000001, 292.474198, 300.83069399999999, + 309.28665699999999, 318.33108099999998, 329.37239, + 338.88399800000002, 339.24412599999999, 328.60063200000002, + 314.25538499999999, 314.45969500000001, 321.41377899999998, + 329.78929199999999, 346.38516499999997, 352.29788200000002, + 348.37051500000001, 417.56292200000001, 417.12356999999997, + 417.749459, 412.233904, 411.94681700000001, 394.69707499999998, + 401.49927000000002, 408.27046799999999, 414.24279999999999] + index = ['1970-12-31 00:00:00', '1971-12-31 00:00:00', '1972-12-31 00:00:00', + '1973-12-31 00:00:00', '1974-12-31 00:00:00', '1975-12-31 00:00:00', + '1976-12-31 00:00:00', '1977-12-31 00:00:00', '1978-12-31 00:00:00', + '1979-12-31 00:00:00', '1980-12-31 00:00:00', '1981-12-31 00:00:00', + '1982-12-31 00:00:00', '1983-12-31 00:00:00', '1984-12-31 00:00:00', + '1985-12-31 00:00:00', '1986-12-31 00:00:00', '1987-12-31 00:00:00', + '1988-12-31 00:00:00', '1989-12-31 00:00:00', '1990-12-31 00:00:00', + '1991-12-31 00:00:00', '1992-12-31 00:00:00', '1993-12-31 00:00:00', + '1994-12-31 00:00:00', '1995-12-31 00:00:00', '1996-12-31 00:00:00', + '1997-12-31 00:00:00', '1998-12-31 00:00:00', '1999-12-31 00:00:00', + '2000-12-31 00:00:00'] + livestock2_livestock = pd.Series(data, index) + livestock2_livestock.index = pd.DatetimeIndex( + livestock2_livestock.index, + freq=pd.infer_freq(livestock2_livestock.index)) + cls.livestock2_livestock = livestock2_livestock + + # aust_json = '{"1104537600000":41.727458,"1112313600000":24.04185,"1120176000000":32.328103,"1128124800000":37.328708,"1136073600000":46.213153,"1143849600000":29.346326,"1151712000000":36.48291,"1159660800000":42.977719,"1167609600000":48.901525,"1175385600000":31.180221,"1183248000000":37.717881,"1191196800000":40.420211,"1199145600000":51.206863,"1207008000000":31.887228,"1214870400000":40.978263,"1222819200000":43.772491,"1230768000000":55.558567,"1238544000000":33.850915,"1246406400000":42.076383,"1254355200000":45.642292,"1262304000000":59.76678,"1270080000000":35.191877,"1277942400000":44.319737,"1285891200000":47.913736}' + # aust = pd.read_json(aust_json, typ='Series').sort_index() + data = [41.727457999999999, 24.04185, 32.328102999999999, + 37.328707999999999, 46.213152999999998, 29.346326000000001, + 36.482909999999997, 42.977719, 48.901524999999999, + 31.180221, 37.717880999999998, 40.420211000000002, + 51.206862999999998, 31.887228, 40.978262999999998, + 43.772491000000002, 55.558566999999996, 33.850915000000001, + 42.076383, 45.642291999999998, 59.766779999999997, + 35.191876999999998, 44.319737000000003, 47.913736] + index = ['2005-03-01 00:00:00', '2005-06-01 00:00:00', '2005-09-01 00:00:00', + '2005-12-01 00:00:00', '2006-03-01 00:00:00', '2006-06-01 00:00:00', + '2006-09-01 00:00:00', '2006-12-01 00:00:00', '2007-03-01 00:00:00', + '2007-06-01 00:00:00', '2007-09-01 00:00:00', '2007-12-01 00:00:00', + '2008-03-01 00:00:00', '2008-06-01 00:00:00', '2008-09-01 00:00:00', + '2008-12-01 00:00:00', '2009-03-01 00:00:00', '2009-06-01 00:00:00', + '2009-09-01 00:00:00', '2009-12-01 00:00:00', '2010-03-01 00:00:00', + '2010-06-01 00:00:00', '2010-09-01 00:00:00', '2010-12-01 00:00:00'] + aust = pd.Series(data, index) + aust.index = pd.DatetimeIndex(aust.index, + freq=pd.infer_freq(aust.index)) + cls.aust = aust + + def test_predict(self): + fit1 = ExponentialSmoothing(self.aust, seasonal_periods=4, trend='add', + seasonal='mul').fit() + fit2 = ExponentialSmoothing(self.aust, seasonal_periods=4, trend='add', + seasonal='mul').fit() + # fit3 = ExponentialSmoothing(self.aust, seasonal_periods=4, trend='add', + # seasonal='mul').fit(remove_bias=True, use_basinhopping=True) + assert_almost_equal(fit1.predict('2011-03-01 00:00:00', + '2011-12-01 00:00:00'), + [61.3083, 37.3730, 46.9652, 51.5578], 3) + assert_almost_equal(fit2.predict(end='2011-12-01 00:00:00'), + [61.3083, 37.3730, 46.9652, 51.5578], 3) + + # assert_almost_equal(fit3.predict('2010-10-01 00:00:00', '2010-10-01 00:00:00'), [49.087], 3) + + def test_ndarray(self): + fit1 = ExponentialSmoothing(self.aust.values, seasonal_periods=4, + trend='add', seasonal='mul').fit() + assert_almost_equal(fit1.forecast(4), [61.3083, 37.3730, 46.9652, 51.5578], 3) + + @pytest.mark.xfail(reason='Optimizer does not converge') + def test_forecast(self): + fit1 = ExponentialSmoothing(self.aust, seasonal_periods=4, trend='add', + seasonal='add').fit() + assert_almost_equal(fit1.forecast(steps=4), + [60.9542, 36.8505, 46.1628, 50.1272], 3) + + def test_simple_exp_smoothing(self): + fit1 = SimpleExpSmoothing(self.oildata_oil).fit(0.2, optimized=False) + fit2 = SimpleExpSmoothing(self.oildata_oil).fit(0.6, optimized=False) + fit3 = SimpleExpSmoothing(self.oildata_oil).fit() + assert_almost_equal(fit1.forecast(1), [484.802468], 4) + assert_almost_equal(fit1.level, + [446.65652290, 448.21987962, 449.7084985, + 444.49324656, 446.84886283, 445.59670028, + 441.54386424, 450.26498098, 461.4216172, + 474.49569042, 482.45033014, 484.80246797], 4) + assert_almost_equal(fit2.forecast(1), [501.837461], 4) + assert_almost_equal(fit3.forecast(1), [496.493543], 4) + assert_almost_equal(fit3.params['smoothing_level'], 0.891998, 4) + # has to be 3 for old python2.7 scipy versions + assert_almost_equal(fit3.params['initial_level'], 447.478440, 3) + + def test_holt(self): + fit1 = Holt(self.air_ausair).fit(smoothing_level=0.8, + smoothing_slope=0.2, optimized=False) + fit2 = Holt(self.air_ausair, exponential=True).fit( + smoothing_level=0.8, smoothing_slope=0.2, + optimized=False) + fit3 = Holt(self.air_ausair, damped=True).fit(smoothing_level=0.8, + smoothing_slope=0.2) + assert_almost_equal(fit1.forecast(5), [43.76, 45.59, 47.43, 49.27, 51.10], 2) + assert_almost_equal(fit1.slope, + [3.617628, 3.59006512, 3.33438212, 3.23657639, 2.69263502, + 2.46388914, 2.2229097, 1.95959226, 1.47054601, 1.3604894, + 1.28045881, 1.20355193, 1.88267152, 2.09564416, 1.83655482], 4) + assert_almost_equal(fit1.fittedfcast, + [21.8601, 22.032368, 25.48461872, 27.54058587, + 30.28813356, 30.26106173, 31.58122149, 32.599234, + 33.24223906, 32.26755382, 33.07776017, 33.95806605, + 34.77708354, 40.05535303, 43.21586036, 43.75696849], 4) + assert_almost_equal(fit2.forecast(5), + [44.60, 47.24, 50.04, 53.01, 56.15], 2) + assert_almost_equal(fit3.forecast(5), + [42.85, 43.81, 44.66, 45.41, 46.06], 2) + + @pytest.mark.smoke + def test_holt_damp_fit(self): + # Smoke test for parameter estimation + fit1 = SimpleExpSmoothing(self.livestock2_livestock).fit() + mod4 = Holt(self.livestock2_livestock, damped=True) + fit4 = mod4.fit(damping_slope=0.98) + mod5 = Holt(self.livestock2_livestock, exponential=True, damped=True) + fit5 = mod5.fit() + # We accept the below values as we getting a better SSE than text book + assert_almost_equal(fit1.params['smoothing_level'], 1.00, 2) + assert_almost_equal(fit1.params['smoothing_slope'], np.NaN, 2) + assert_almost_equal(fit1.params['damping_slope'], np.NaN, 2) + assert_almost_equal(fit1.params['initial_level'], 263.92, 2) + assert_almost_equal(fit1.params['initial_slope'], np.NaN, 2) + assert_almost_equal(fit1.sse, 6761.35, 2) # 6080.26 + + assert_almost_equal(fit4.params['smoothing_level'], 0.98, 2) + assert_almost_equal(fit4.params['smoothing_slope'], 0.00, 2) + assert_almost_equal(fit4.params['damping_slope'], 0.98, 2) + assert_almost_equal(fit4.params['initial_level'], 257.36, 2) + assert_almost_equal(fit4.params['initial_slope'], 6.64, 2) + assert_almost_equal(fit4.sse, 6036.56, 2) # 6080.26 + + assert_almost_equal(fit5.params['smoothing_level'], 0.97, 2) + assert_almost_equal(fit5.params['smoothing_slope'], 0.00, 2) + assert_almost_equal(fit5.params['damping_slope'], 0.98, 2) + assert_almost_equal(fit5.params['initial_level'], 258.95, 2) + assert_almost_equal(fit5.params['initial_slope'], 1.04, 2) + assert_almost_equal(fit5.sse, 6082.00, 2) # 6100.11 + + def test_holt_damp_R(self): + # Test the damping parameters against the R forecast packages `ets` + # library(ets) + # livestock2_livestock <- c(...) + # res <- ets(livestock2_livestock, model='AAN', damped=TRUE, phi=0.98) + mod = Holt(self.livestock2_livestock, damped=True) + params = { + 'smoothing_level': 0.97402626, + 'smoothing_slope': 0.00010006, + 'damping_slope': 0.98, + 'initial_level': 252.59039965, + 'initial_slope': 6.90265918} + fit = mod.fit(optimized=False, **params) + + # Check that we captured the parameters correctly + for key in params.keys(): + assert_allclose(fit.params[key], params[key]) + + # Summary output + # print(res$mse) + assert_allclose(fit.sse / mod.nobs, 195.4397924865488, atol=1e-3) + # print(res$aicc) + # TODO: this fails - different AICC definition? + # assert_allclose(fit.aicc, 282.386426659408, atol=1e-3) + # print(res$bic) + # TODO: this fails - different BIC definition? + # assert_allclose(fit.bic, 287.1563626818338) + + # print(res$states[,'l']) + # note: this array includes the initial level + desired = [ + 252.5903996514365, 263.7992355246843, 268.3623324350207, + 261.0312983437606, 266.6590942700923, 277.3958197247272, + 283.8256217863908, 290.2962560621914, 292.5701438129583, + 300.7655919939834, 309.2118057241649, 318.2377698496536, + 329.2238709362550, 338.7709778307978, 339.3669793596703, + 329.0127022356033, 314.7684267018998, 314.5948077575944, + 321.3612035017972, 329.6924360833211, 346.0712138652086, + 352.2534120008911, 348.5862874190927, 415.8839400693967, + 417.2018843196238, 417.8435306633725, 412.4857261252961, + 412.0647865321129, 395.2500605270393, 401.4367438266322, + 408.1907701386275, 414.1814574903921] + assert_allclose(np.r_[fit.params['initial_level'], fit.level], desired) + + # print(res$states[,'b']) + # note: this array includes the initial slope + desired = [ + 6.902659175332394, 6.765062519124909, 6.629548973536494, + 6.495537532917715, 6.365550989616566, 6.238702070454378, + 6.113960476763530, 5.991730467006233, 5.871526257315264, + 5.754346516684953, 5.639547926790058, 5.527116419415724, + 5.417146212898857, 5.309238662451385, 5.202580636191761, + 5.096941655567694, 4.993026494493987, 4.892645486210410, + 4.794995106664251, 4.699468310763351, 4.606688340205792, + 4.514725879754355, 4.423600168391240, 4.341595902295941, + 4.254462303550087, 4.169010676686062, 4.084660399498803, + 4.002512751871354, 3.920332298146730, 3.842166514133902, + 3.765630194200260, 3.690553892582855] + # TODO: not sure why the precision is so low here... + assert_allclose(np.r_[fit.params['initial_slope'], fit.slope], desired, + atol=1e-3) + + # print(res$fitted) + desired = [ + 259.3550056432622, 270.4289967934267, 274.8592904290865, + 267.3969251260200, 272.8973342399166, 283.5097477537724, + 289.8173030536191, 296.1681519198575, 298.3242395451272, + 306.4048515803347, 314.7385626924191, 323.6543439406810, + 334.5326742248959, 343.9740317200002, 344.4655083831382, + 334.0077050580596, 319.6615926665040, 319.3896003340806, + 326.0602987063282, 334.2979150278692, 350.5857684386102, + 356.6778433630504, 352.9214155841161, 420.1387040536467, + 421.3712573771029, 421.9291611265248, 416.4886933168049, + 415.9872490289468, 399.0919861792231, 405.2020670104834, + 411.8810877289437] + assert_allclose(fit.fittedvalues, desired, atol=1e-3) + + # print(forecast(res)$mean) + desired = [ + 417.7982003051233, 421.3426082635598, 424.8161280628277, + 428.2201774661102, 431.5561458813270, 434.8253949282395, + 438.0292589942138, 441.1690457788685, 444.2460368278302, + 447.2614880558126] + assert_allclose(fit.forecast(10), desired, atol=1e-4) + + + + def test_hw_seasonal(self): + fit1 = ExponentialSmoothing(self.aust, seasonal_periods=4, + trend='additive', + seasonal='additive').fit(use_boxcox=True) + fit2 = ExponentialSmoothing(self.aust, seasonal_periods=4, trend='add', + seasonal='mul').fit(use_boxcox=True) + assert_almost_equal(fit1.forecast(8), + [61.34, 37.24, 46.84, 51.01, 64.47, 39.78, 49.64, 53.90], + 2) + assert_almost_equal(fit2.forecast(8), + [60.97, 36.99, 46.71, 51.48, 64.46, 39.02, 49.29, 54.32], + 2) + fit5 = ExponentialSmoothing(self.aust, seasonal_periods=4, + trend='mul', seasonal='add' + ).fit(use_boxcox='log') + fit6 = ExponentialSmoothing(self.aust, seasonal_periods=4, + trend='multiplicative', + seasonal='multiplicative' + ).fit(use_boxcox='log') + # Skip since estimator is unstable + # assert_almost_equal(fit5.forecast(1), [60.60], 2) + # assert_almost_equal(fit6.forecast(1), [61.47], 2) + + @pytest.mark.xfail(reason='Optimizer does not converge') + def test_hw_seasonal_buggy(self): + fit3 = ExponentialSmoothing(self.aust, seasonal_periods=4, + seasonal='add').fit(use_boxcox=True) + assert_almost_equal(fit3.forecast(8), + [59.91, 35.71, 44.64, 47.62, 59.91, 35.71, 44.64, 47.62], + 2) + fit4 = ExponentialSmoothing(self.aust, seasonal_periods=4, + seasonal='mul').fit(use_boxcox=True) + assert_almost_equal(fit4.forecast(8), + [60.71, 35.70, 44.63, 47.55, 60.71, 35.70, 44.63, 47.55], + 2) + + +@pytest.mark.parametrize('trend_seasonal', (('mul', None), (None, 'mul'), ('mul', 'mul'))) +def test_negative_multipliative(trend_seasonal): + trend, seasonal = trend_seasonal + y = -np.ones(100) + with pytest.raises(ValueError): + ExponentialSmoothing(y, trend=trend, seasonal=seasonal, seasonal_periods=10) + + +@pytest.mark.parametrize('seasonal', SEASONALS) +def test_dampen_no_trend(seasonal): + y = -np.ones(100) + with pytest.raises(ValueError): + ExponentialSmoothing(housing_data, trend=False, seasonal=seasonal, damped=True, + seasonal_periods=10) + + +@pytest.mark.parametrize('seasonal', ('add', 'mul')) +def test_invalid_seasonal(seasonal): + y = pd.Series(-np.ones(100),index=pd.date_range('2000-1-1', periods=100, freq='MS')) + with pytest.raises(ValueError): + ExponentialSmoothing(y, seasonal=seasonal, seasonal_periods=1) + + +def test_2d_data(): + with pytest.raises(ValueError): + ExponentialSmoothing(pd.concat([housing_data, housing_data], 1)).fit() + + +def test_infer_freq(): + hd2 = housing_data.copy() + hd2.index = list(hd2.index) + with warnings.catch_warnings(record=True) as w: + mod = ExponentialSmoothing(hd2, trend='add', seasonal='add') + assert len(w) == 1 + assert 'ValueWarning' in str(w[0]) + assert mod.seasonal_periods == 12 + + +@pytest.mark.parametrize('trend', TRENDS) +@pytest.mark.parametrize('seasonal', SEASONALS) +def test_start_params(trend, seasonal): + mod = ExponentialSmoothing(housing_data, trend='add', seasonal='add') + res = mod.fit() + res2 = mod.fit(start_params=res.mle_retvals.x) + assert res2.sse <= res.sse + + +def test_no_params_to_optimize(): + mod = ExponentialSmoothing(housing_data) + with pytest.warns(EstimationWarning): + mod.fit(smoothing_level=0.5, initial_level=housing_data.iloc[0]) + + +def test_invalid_start_param_length(): + mod = ExponentialSmoothing(housing_data) + with pytest.raises(ValueError): + mod.fit(start_params=np.array([0.5])) + + +def test_basin_hopping(reset_randomstate): + mod = ExponentialSmoothing(housing_data, trend='add') + res = mod.fit() + res2 = mod.fit(use_basinhopping=True) + # GH 5642 + tol = 1e-6 if PLATFORM_OSX else 0.0 + assert res2.sse <= res.sse + tol + + +def test_debiased(): + mod = ExponentialSmoothing(housing_data, trend='add') + res = mod.fit() + res2 = mod.fit(remove_bias=True) + assert np.any(res.fittedvalues != res2.fittedvalues) + + +@pytest.mark.smoke +@pytest.mark.parametrize('trend', TRENDS) +@pytest.mark.parametrize('seasonal', SEASONALS) +def test_float_boxcox(trend, seasonal): + res = ExponentialSmoothing(housing_data, trend=trend, seasonal=seasonal).fit(use_boxcox=0.5) + assert_allclose(res.params['use_boxcox'], 0.5) + + +@pytest.mark.parametrize('trend', TRENDS) +@pytest.mark.parametrize('seasonal', SEASONALS) +def test_equivalence_cython_python(trend, seasonal): + mod = ExponentialSmoothing(housing_data, trend=trend, seasonal=seasonal) + res = mod.fit() + res.summary() # Smoke test + params = res.params + nobs = housing_data.shape[0] + y = np.squeeze(np.asarray(housing_data)) + m = 12 if seasonal else 0 + lvals = np.zeros(nobs) + b = np.zeros(nobs) + s = np.zeros(nobs + m - 1) + p = np.zeros(6 + m) + max_seen = np.finfo(np.double).max + alpha = params['smoothing_level'] + beta = params['smoothing_slope'] + gamma = params['smoothing_seasonal'] + phi = params['damping_slope'] + phi = 1.0 if np.isnan(phi) else phi + l0 = params['initial_level'] + b0 = params['initial_slope'] + p[:6] = alpha, beta, gamma, l0, b0, phi + if seasonal: + p[6:] = params['initial_seasons'] + xi = np.ones_like(p).astype(np.uint8) + py_func = PY_SMOOTHERS[(seasonal, trend)] + cy_func = SMOOTHERS[(seasonal, trend)] + p_copy = p.copy() + sse_cy = cy_func(p, xi, p_copy, y, lvals, b, s, m, nobs, max_seen) + sse_py = py_func(p, xi, p_copy, y, lvals, b, s, m, nobs, max_seen) + assert_allclose(sse_py, sse_cy) + + +def test_direct_holt_add(): + mod = SimpleExpSmoothing(housing_data) + res = mod.fit() + x = np.squeeze(np.asarray(mod.endog)) + alpha = res.params['smoothing_level'] + l, b, f, err, xhat = _simple_dbl_exp_smoother(x, alpha, beta=0.0, + l0=res.params['initial_level'], b0=0.0, + nforecast=5) + + assert_allclose(l, res.level) + assert_allclose(f, res.level.iloc[-1] * np.ones(5)) + assert_allclose(f, res.forecast(5)) + + mod = ExponentialSmoothing(housing_data, trend='add') + res = mod.fit() + x = np.squeeze(np.asarray(mod.endog)) + alpha = res.params['smoothing_level'] + beta = res.params['smoothing_slope'] + l, b, f, err, xhat = _simple_dbl_exp_smoother(x, alpha, beta=beta, + l0=res.params['initial_level'], + b0=res.params['initial_slope'], nforecast=5) + + assert_allclose(xhat, res.fittedvalues) + assert_allclose(l + b, res.level + res.slope) + assert_allclose(l, res.level) + assert_allclose(b, res.slope) + assert_allclose(f, res.level.iloc[-1] + res.slope.iloc[-1] * np.array([1, 2, 3, 4, 5])) + assert_allclose(f, res.forecast(5)) + + +def test_integer_array(reset_randomstate): + rs = np.random.RandomState(12345) + e = 10*rs.standard_normal((1000,2)) + y_star = np.cumsum(e[:,0]) + y = y_star + e[:,1] + y = y.astype(np.long) + res = ExponentialSmoothing(y,trend='add').fit() + assert res.params['smoothing_level'] != 0.0 diff --git a/statsmodels/tsa/tests/test_seasonal.py b/statsmodels/tsa/tests/test_seasonal.py new file mode 100644 index 0000000..70ef7c6 --- /dev/null +++ b/statsmodels/tsa/tests/test_seasonal.py @@ -0,0 +1,295 @@ +import numpy as np +import pandas as pd +from numpy.testing import (assert_almost_equal, assert_equal, assert_raises, + assert_allclose) +from statsmodels.tsa.seasonal import seasonal_decompose +from pandas import DataFrame, date_range + + +class TestDecompose: + @classmethod + def setup_class(cls): + # even + data = [-50, 175, 149, 214, 247, 237, 225, 329, 729, 809, + 530, 489, 540, 457, 195, 176, 337, 239, 128, 102, + 232, 429, 3, 98, 43, -141, -77, -13, 125, 361, -45, 184] + cls.data = DataFrame(data, date_range(start='1/1/1951', + periods=len(data), + freq='Q')) + + def test_ndarray(self): + res_add = seasonal_decompose(self.data.values, freq=4) + seasonal = [62.46, 86.17, -88.38, -60.25, 62.46, 86.17, -88.38, + -60.25, 62.46, 86.17, -88.38, -60.25, 62.46, 86.17, + -88.38, -60.25, 62.46, 86.17, -88.38, -60.25, + 62.46, 86.17, -88.38, -60.25, 62.46, 86.17, -88.38, + -60.25, 62.46, 86.17, -88.38, -60.25] + trend = [np.nan, np.nan, 159.12, 204.00, 221.25, 245.12, 319.75, + 451.50, 561.12, 619.25, 615.62, 548.00, 462.12, 381.12, + 316.62, 264.00, 228.38, 210.75, 188.38, 199.00, 207.12, + 191.00, 166.88, 72.00, -9.25, -33.12, -36.75, 36.25, + 103.00, 131.62, np.nan, np.nan] + random = [np.nan, np.nan, 78.254, 70.254, -36.710, -94.299, -6.371, + -62.246, 105.415, 103.576, 2.754, 1.254, 15.415, -10.299, + -33.246, -27.746, 46.165, -57.924, 28.004, -36.746, + -37.585, 151.826, -75.496, 86.254, -10.210, -194.049, + 48.129, 11.004, -40.460, 143.201, np.nan, np.nan] + assert_almost_equal(res_add.seasonal, seasonal, 2) + assert_almost_equal(res_add.trend, trend, 2) + assert_almost_equal(res_add.resid, random, 3) + + res_mult = seasonal_decompose(np.abs(self.data.values), 'm', freq=4) + + seasonal = [1.0815, 1.5538, 0.6716, 0.6931, 1.0815, 1.5538, 0.6716, + 0.6931, 1.0815, 1.5538, 0.6716, 0.6931, 1.0815, 1.5538, + 0.6716, 0.6931, 1.0815, 1.5538, 0.6716, 0.6931, 1.0815, + 1.5538, 0.6716, 0.6931, 1.0815, 1.5538, 0.6716, 0.6931, + 1.0815, 1.5538, 0.6716, 0.6931] + trend = [np.nan, np.nan, 171.62, 204.00, 221.25, 245.12, 319.75, + 451.50, 561.12, 619.25, 615.62, 548.00, 462.12, 381.12, + 316.62, 264.00, 228.38, 210.75, 188.38, 199.00, 207.12, + 191.00, 166.88, 107.25, 80.50, 79.12, 78.75, 116.50, + 140.00, 157.38, np.nan, np.nan] + random = [np.nan, np.nan, 1.29263, 1.51360, 1.03223, 0.62226, + 1.04771, 1.05139, 1.20124, 0.84080, 1.28182, 1.28752, + 1.08043, 0.77172, 0.91697, 0.96191, 1.36441, 0.72986, + 1.01171, 0.73956, 1.03566, 1.44556, 0.02677, 1.31843, + 0.49390, 1.14688, 1.45582, 0.16101, 0.82555, 1.47633, + np.nan, np.nan] + + assert_almost_equal(res_mult.seasonal, seasonal, 4) + assert_almost_equal(res_mult.trend, trend, 2) + assert_almost_equal(res_mult.resid, random, 4) + + # test odd + res_add = seasonal_decompose(self.data.values[:-1], freq=4) + seasonal = [68.18, 69.02, -82.66, -54.54, 68.18, 69.02, -82.66, + -54.54, 68.18, 69.02, -82.66, -54.54, 68.18, 69.02, + -82.66, -54.54, 68.18, 69.02, -82.66, -54.54, 68.18, + 69.02, -82.66, -54.54, 68.18, 69.02, -82.66, -54.54, + 68.18, 69.02, -82.66] + trend = [np.nan, np.nan, 159.12, 204.00, 221.25, 245.12, 319.75, + 451.50, 561.12, 619.25, 615.62, 548.00, 462.12, 381.12, + 316.62, 264.00, 228.38, 210.75, 188.38, 199.00, 207.12, + 191.00, 166.88, 72.00, -9.25, -33.12, -36.75, 36.25, + 103.00, np.nan, np.nan] + random = [np.nan, np.nan, 72.538, 64.538, -42.426, -77.150, + -12.087, -67.962, 99.699, 120.725, -2.962, -4.462, + 9.699, 6.850, -38.962, -33.462, 40.449, -40.775, 22.288, + -42.462, -43.301, 168.975, -81.212, 80.538, -15.926, + -176.900, 42.413, 5.288, -46.176, np.nan, np.nan] + assert_almost_equal(res_add.seasonal, seasonal, 2) + assert_almost_equal(res_add.trend, trend, 2) + assert_almost_equal(res_add.resid, random, 3) + + def test_pandas(self): + res_add = seasonal_decompose(self.data, freq=4) + freq_override_data = self.data.copy() + freq_override_data.index = date_range(start='1/1/1951', + periods=len(freq_override_data), + freq='A') + res_add_override = seasonal_decompose(freq_override_data, freq=4) + seasonal = [62.46, 86.17, -88.38, -60.25, 62.46, 86.17, -88.38, + -60.25, 62.46, 86.17, -88.38, -60.25, 62.46, 86.17, + -88.38, -60.25, 62.46, 86.17, -88.38, -60.25, + 62.46, 86.17, -88.38, -60.25, 62.46, 86.17, -88.38, + -60.25, 62.46, 86.17, -88.38, -60.25] + trend = [np.nan, np.nan, 159.12, 204.00, 221.25, 245.12, 319.75, + 451.50, 561.12, 619.25, 615.62, 548.00, 462.12, 381.12, + 316.62, 264.00, 228.38, 210.75, 188.38, 199.00, 207.12, + 191.00, 166.88, 72.00, -9.25, -33.12, -36.75, 36.25, + 103.00, 131.62, np.nan, np.nan] + random = [np.nan, np.nan, 78.254, 70.254, -36.710, -94.299, -6.371, + -62.246, 105.415, 103.576, 2.754, 1.254, 15.415, -10.299, + -33.246, -27.746, 46.165, -57.924, 28.004, -36.746, + -37.585, 151.826, -75.496, 86.254, -10.210, -194.049, + 48.129, 11.004, -40.460, 143.201, np.nan, np.nan] + assert_almost_equal(res_add.seasonal.values.squeeze(), seasonal, 2) + assert_almost_equal(res_add.trend.values.squeeze(), trend, 2) + assert_almost_equal(res_add.resid.values.squeeze(), random, 3) + assert_almost_equal(res_add_override.seasonal.values.squeeze(), seasonal, 2) + assert_almost_equal(res_add_override.trend.values.squeeze(), trend, 2) + assert_almost_equal(res_add_override.resid.values.squeeze(), random, 3) + assert_equal(res_add.seasonal.index.values.squeeze(), + self.data.index.values) + + res_mult = seasonal_decompose(np.abs(self.data), 'm', freq=4) + res_mult_override = seasonal_decompose(np.abs(freq_override_data), 'm', freq=4) + seasonal = [1.0815, 1.5538, 0.6716, 0.6931, 1.0815, 1.5538, 0.6716, + 0.6931, 1.0815, 1.5538, 0.6716, 0.6931, 1.0815, 1.5538, + 0.6716, 0.6931, 1.0815, 1.5538, 0.6716, 0.6931, 1.0815, + 1.5538, 0.6716, 0.6931, 1.0815, 1.5538, 0.6716, 0.6931, + 1.0815, 1.5538, 0.6716, 0.6931] + trend = [np.nan, np.nan, 171.62, 204.00, 221.25, 245.12, 319.75, + 451.50, 561.12, 619.25, 615.62, 548.00, 462.12, 381.12, + 316.62, 264.00, 228.38, 210.75, 188.38, 199.00, 207.12, + 191.00, 166.88, 107.25, 80.50, 79.12, 78.75, 116.50, + 140.00, 157.38, np.nan, np.nan] + random = [np.nan, np.nan, 1.29263, 1.51360, 1.03223, 0.62226, + 1.04771, 1.05139, 1.20124, 0.84080, 1.28182, 1.28752, + 1.08043, 0.77172, 0.91697, 0.96191, 1.36441, 0.72986, + 1.01171, 0.73956, 1.03566, 1.44556, 0.02677, 1.31843, + 0.49390, 1.14688, 1.45582, 0.16101, 0.82555, 1.47633, + np.nan, np.nan] + + assert_almost_equal(res_mult.seasonal.values.squeeze(), seasonal, 4) + assert_almost_equal(res_mult.trend.values.squeeze(), trend, 2) + assert_almost_equal(res_mult.resid.values.squeeze(), random, 4) + assert_almost_equal(res_mult_override.seasonal.values.squeeze(), + seasonal, 4) + assert_almost_equal(res_mult_override.trend.values.squeeze(), trend, 2) + assert_almost_equal(res_mult_override.resid.values.squeeze(), random, + 4) + assert_equal(res_mult.seasonal.index.values.squeeze(), + self.data.index.values) + + def test_pandas_nofreq(self, reset_randomstate): + # issue #3503 + nobs = 100 + dta = pd.Series([x % 3 for x in range(nobs)] + np.random.randn(nobs)) + res_np = seasonal_decompose(dta.values, freq=3) + res = seasonal_decompose(dta, freq=3) + + atol = 1e-8 + rtol = 1e-10 + assert_allclose(res.seasonal.values.squeeze(), res_np.seasonal, + atol=atol, rtol=rtol) + assert_allclose(res.trend.values.squeeze(), res_np.trend, + atol=atol, rtol=rtol) + assert_allclose(res.resid.values.squeeze(), res_np.resid, + atol=atol, rtol=rtol) + + def test_filt(self): + filt = np.array([1/8., 1/4., 1./4, 1/4., 1/8.]) + res_add = seasonal_decompose(self.data.values, filt=filt, freq=4) + seasonal = [62.46, 86.17, -88.38, -60.25, 62.46, 86.17, -88.38, + -60.25, 62.46, 86.17, -88.38, -60.25, 62.46, 86.17, + -88.38, -60.25, 62.46, 86.17, -88.38, -60.25, + 62.46, 86.17, -88.38, -60.25, 62.46, 86.17, -88.38, + -60.25, 62.46, 86.17, -88.38, -60.25] + trend = [np.nan, np.nan, 159.12, 204.00, 221.25, 245.12, 319.75, + 451.50, 561.12, 619.25, 615.62, 548.00, 462.12, 381.12, + 316.62, 264.00, 228.38, 210.75, 188.38, 199.00, 207.12, + 191.00, 166.88, 72.00, -9.25, -33.12, -36.75, 36.25, + 103.00, 131.62, np.nan, np.nan] + random = [np.nan, np.nan, 78.254, 70.254, -36.710, -94.299, -6.371, + -62.246, 105.415, 103.576, 2.754, 1.254, 15.415, -10.299, + -33.246, -27.746, 46.165, -57.924, 28.004, -36.746, + -37.585, 151.826, -75.496, 86.254, -10.210, -194.049, + 48.129, 11.004, -40.460, 143.201, np.nan, np.nan] + assert_almost_equal(res_add.seasonal, seasonal, 2) + assert_almost_equal(res_add.trend, trend, 2) + assert_almost_equal(res_add.resid, random, 3) + + def test_one_sided_moving_average_in_stl_decompose(self): + res_add = seasonal_decompose(self.data.values, freq=4, two_sided=False) + + seasonal = np.array([76.76, 90.03, -114.4, -52.4, 76.76, 90.03, -114.4, + -52.4, 76.76, 90.03, -114.4, -52.4, 76.76, 90.03, + -114.4, -52.4, 76.76, 90.03, -114.4, -52.4, 76.76, + 90.03, -114.4, -52.4, 76.76, 90.03, -114.4, -52.4, + 76.76, 90.03, -114.4, -52.4]) + + trend = np.array([np.nan, np.nan, np.nan, np.nan, 159.12, 204., 221.25, + 245.12, 319.75, 451.5, 561.12, 619.25, 615.62, 548., + 462.12, 381.12, 316.62, 264., 228.38, 210.75, 188.38, + 199., 207.12, 191., 166.88, 72., -9.25, -33.12, + -36.75, 36.25, 103., 131.62]) + + resid = np.array([np.nan, np.nan, np.nan, np.nan, 11.112, -57.031, + 118.147, 136.272, 332.487, 267.469, 83.272, -77.853, + -152.388, -181.031, -152.728, -152.728, -56.388, -115.031, + 14.022, -56.353, -33.138, 139.969, -89.728, -40.603, + -200.638, -303.031, 46.647, 72.522, 84.987, 234.719, + -33.603, 104.772]) + + assert_almost_equal(res_add.seasonal, seasonal, 2) + assert_almost_equal(res_add.trend, trend, 2) + assert_almost_equal(res_add.resid, resid, 3) + + res_mult = seasonal_decompose(np.abs(self.data.values), 'm', freq=4, two_sided=False) + + seasonal = np.array([1.1985, 1.5449, 0.5811, 0.6755, 1.1985, 1.5449, 0.5811, + 0.6755, 1.1985, 1.5449, 0.5811, 0.6755, 1.1985, 1.5449, + 0.5811, 0.6755, 1.1985, 1.5449, 0.5811, 0.6755, 1.1985, + 1.5449, 0.5811, 0.6755, 1.1985, 1.5449, 0.5811, 0.6755, + 1.1985, 1.5449, 0.5811, 0.6755]) + + trend = np.array([np.nan, np.nan, np.nan, np.nan, 171.625, 204., + 221.25, 245.125, 319.75, 451.5, 561.125, 619.25, + 615.625, 548., 462.125, 381.125, 316.625, 264., + 228.375, 210.75, 188.375, 199., 207.125, 191., + 166.875, 107.25, 80.5, 79.125, 78.75, 116.5, + 140., 157.375]) + + resid = np.array([np.nan, np.nan, np.nan, np.nan, 1.2008, 0.752, 1.75, + 1.987, 1.9023, 1.1598, 1.6253, 1.169, 0.7319, 0.5398, + 0.7261, 0.6837, 0.888, 0.586, 0.9645, 0.7165, 1.0276, + 1.3954, 0.0249, 0.7596, 0.215, 0.851, 1.646, 0.2432, + 1.3244, 2.0058, 0.5531, 1.7309]) + + assert_almost_equal(res_mult.seasonal, seasonal, 4) + assert_almost_equal(res_mult.trend, trend, 2) + assert_almost_equal(res_mult.resid, resid, 4) + + # test odd + res_add = seasonal_decompose(self.data.values[:-1], freq=4, two_sided=False) + seasonal = np.array([81.21, 94.48, -109.95, -65.74, 81.21, 94.48, -109.95, + -65.74, 81.21, 94.48, -109.95, -65.74, 81.21, 94.48, + -109.95, -65.74, 81.21, 94.48, -109.95, -65.74, 81.21, + 94.48, -109.95, -65.74, 81.21, 94.48, -109.95, -65.74, + 81.21, 94.48, -109.95]) + + trend = [np.nan, np.nan, np.nan, np.nan, 159.12, 204., 221.25, + 245.12, 319.75, 451.5, 561.12, 619.25, 615.62, 548., + 462.12, 381.12, 316.62, 264., 228.38, 210.75, 188.38, + 199., 207.12, 191., 166.88, 72., -9.25, -33.12, + -36.75, 36.25, 103.] + + random = [np.nan, np.nan, np.nan, np.nan, 6.663, -61.48, + 113.699, 149.618, 328.038, 263.02, 78.824, -64.507, + -156.837, -185.48, -157.176, -139.382, -60.837, -119.48, + 9.574, -43.007, -37.587, 135.52, -94.176, -27.257, + -205.087, -307.48, 42.199, 85.868, 80.538, 230.27, -38.051] + + assert_almost_equal(res_add.seasonal, seasonal, 2) + assert_almost_equal(res_add.trend, trend, 2) + assert_almost_equal(res_add.resid, random, 3) + + def test_2d(self): + x = np.tile(np.arange(6), (2, 1)).T + trend = seasonal_decompose(x, freq=2).trend + expected = np.tile(np.arange(6, dtype=float), (2, 1)).T + expected[0] = expected[-1] = np.nan + assert_equal(trend, expected) + + def test_interpolate_trend(self): + x = np.arange(12) + freq = 4 + trend = seasonal_decompose(x, freq=freq).trend + assert_equal(trend[0], np.nan) + + trend = seasonal_decompose(x, freq=freq, extrapolate_trend=5).trend + assert_almost_equal(trend, x) + + trend = seasonal_decompose(x, freq=freq, extrapolate_trend='freq').trend + assert_almost_equal(trend, x) + + trend = seasonal_decompose(x[:, None], freq=freq, extrapolate_trend=5).trend + assert_almost_equal(trend, x) + + # 2d case + x = np.tile(np.arange(12), (2, 1)).T + trend = seasonal_decompose(x, freq=freq, extrapolate_trend=1).trend + assert_almost_equal(trend, x) + + trend = seasonal_decompose(x, freq=freq, extrapolate_trend='freq').trend + assert_almost_equal(trend, x) + + def test_raises(self): + assert_raises(ValueError, seasonal_decompose, self.data.values) + assert_raises(ValueError, seasonal_decompose, self.data, 'm', + freq=4) + x = self.data.astype(float).copy() + x.iloc[2] = np.nan + assert_raises(ValueError, seasonal_decompose, x) diff --git a/statsmodels/tsa/tests/test_stattools.py b/statsmodels/tsa/tests/test_stattools.py new file mode 100644 index 0000000..d510a74 --- /dev/null +++ b/statsmodels/tsa/tests/test_stattools.py @@ -0,0 +1,930 @@ +import os +import warnings + +import numpy as np +import pandas as pd +import pytest +from numpy.testing import (assert_almost_equal, assert_equal, assert_raises, + assert_, assert_allclose) +from pandas import Series, date_range, DataFrame + +from statsmodels.compat.numpy import lstsq +from statsmodels.compat.pandas import assert_index_equal +from statsmodels.compat.platform import PLATFORM_WIN +from statsmodels.compat.python import lrange +from statsmodels.datasets import macrodata, sunspots, nile, randhie, modechoice +from statsmodels.tools.sm_exceptions import (CollinearityWarning, + MissingDataError, + InterpolationWarning) +from statsmodels.tsa.arima_process import arma_acovf +from statsmodels.tsa.statespace.sarimax import SARIMAX +from statsmodels.tsa.stattools import (adfuller, acf, pacf_yw, pacf_ols, + pacf, grangercausalitytests, + coint, acovf, kpss, + arma_order_select_ic, levinson_durbin, + levinson_durbin_pacf, pacf_burg, + innovations_algo, innovations_filter) + +DECIMAL_8 = 8 +DECIMAL_6 = 6 +DECIMAL_5 = 5 +DECIMAL_4 = 4 +DECIMAL_3 = 3 +DECIMAL_2 = 2 +DECIMAL_1 = 1 + + +@pytest.fixture('module') +def acovf_data(): + rnd = np.random.RandomState(12345) + return rnd.randn(250) + + +class CheckADF(object): + """ + Test Augmented Dickey-Fuller + + Test values taken from Stata. + """ + levels = ['1%', '5%', '10%'] + data = macrodata.load_pandas() + x = data.data['realgdp'].values + y = data.data['infl'].values + + def test_teststat(self): + assert_almost_equal(self.res1[0], self.teststat, DECIMAL_5) + + def test_pvalue(self): + assert_almost_equal(self.res1[1], self.pvalue, DECIMAL_5) + + def test_critvalues(self): + critvalues = [self.res1[4][lev] for lev in self.levels] + assert_almost_equal(critvalues, self.critvalues, DECIMAL_2) + + +class TestADFConstant(CheckADF): + """ + Dickey-Fuller test for unit root + """ + @classmethod + def setup_class(cls): + cls.res1 = adfuller(cls.x, regression="c", autolag=None, + maxlag=4) + cls.teststat = .97505319 + cls.pvalue = .99399563 + cls.critvalues = [-3.476, -2.883, -2.573] + + +class TestADFConstantTrend(CheckADF): + """ + """ + @classmethod + def setup_class(cls): + cls.res1 = adfuller(cls.x, regression="ct", autolag=None, + maxlag=4) + cls.teststat = -1.8566374 + cls.pvalue = .67682968 + cls.critvalues = [-4.007, -3.437, -3.137] + + +#class TestADFConstantTrendSquared(CheckADF): +# """ +# """ +# pass +#TODO: get test values from R? + + +class TestADFNoConstant(CheckADF): + """ + """ + @classmethod + def setup_class(cls): + cls.res1 = adfuller(cls.x, regression="nc", autolag=None, + maxlag=4) + cls.teststat = 3.5227498 + + cls.pvalue = .99999 + # Stata does not return a p-value for noconstant. + # Tau^max in MacKinnon (1994) is missing, so it is + # assumed that its right-tail is well-behaved + + cls.critvalues = [-2.587, -1.950, -1.617] + + +# No Unit Root + +class TestADFConstant2(CheckADF): + @classmethod + def setup_class(cls): + cls.res1 = adfuller(cls.y, regression="c", autolag=None, + maxlag=1) + cls.teststat = -4.3346988 + cls.pvalue = .00038661 + cls.critvalues = [-3.476, -2.883, -2.573] + + +class TestADFConstantTrend2(CheckADF): + @classmethod + def setup_class(cls): + cls.res1 = adfuller(cls.y, regression="ct", autolag=None, + maxlag=1) + cls.teststat = -4.425093 + cls.pvalue = .00199633 + cls.critvalues = [-4.006, -3.437, -3.137] + + +class TestADFNoConstant2(CheckADF): + @classmethod + def setup_class(cls): + cls.res1 = adfuller(cls.y, regression="nc", autolag=None, + maxlag=1) + cls.teststat = -2.4511596 + cls.pvalue = 0.013747 + # Stata does not return a p-value for noconstant + # this value is just taken from our results + cls.critvalues = [-2.587,-1.950,-1.617] + _, _1, _2, cls.store = adfuller(cls.y, regression="nc", autolag=None, + maxlag=1, store=True) + + def test_store_str(self): + assert_equal(self.store.__str__(), 'Augmented Dickey-Fuller Test Results') + + +class CheckCorrGram(object): + """ + Set up for ACF, PACF tests. + """ + data = macrodata.load_pandas() + x = data.data['realgdp'] + filename = os.path.dirname(os.path.abspath(__file__))+\ + "/results/results_corrgram.csv" + results = pd.read_csv(filename, delimiter=',') + + #not needed: add 1. for lag zero + #self.results['acvar'] = np.concatenate(([1.], self.results['acvar'])) + + +class TestACF(CheckCorrGram): + """ + Test Autocorrelation Function + """ + @classmethod + def setup_class(cls): + cls.acf = cls.results['acvar'] + #cls.acf = np.concatenate(([1.], cls.acf)) + cls.qstat = cls.results['Q1'] + cls.res1 = acf(cls.x, nlags=40, qstat=True, alpha=.05, fft=False) + cls.confint_res = cls.results[['acvar_lb','acvar_ub']].values + + def test_acf(self): + assert_almost_equal(self.res1[0][1:41], self.acf, DECIMAL_8) + + def test_confint(self): + centered = self.res1[1] - self.res1[1].mean(1)[:,None] + assert_almost_equal(centered[1:41], self.confint_res, DECIMAL_8) + + def test_qstat(self): + assert_almost_equal(self.res1[2][:40], self.qstat, DECIMAL_3) + # 3 decimal places because of stata rounding + +# def pvalue(self): +# pass +#NOTE: shouldn't need testing if Q stat is correct + + +class TestACF_FFT(CheckCorrGram): + # Test Autocorrelation Function using FFT + @classmethod + def setup_class(cls): + cls.acf = cls.results['acvarfft'] + cls.qstat = cls.results['Q1'] + cls.res1 = acf(cls.x, nlags=40, qstat=True, fft=True) + + def test_acf(self): + assert_almost_equal(self.res1[0][1:], self.acf, DECIMAL_8) + + def test_qstat(self): + #todo why is res1/qstat 1 short + assert_almost_equal(self.res1[1], self.qstat, DECIMAL_3) + + +class TestACFMissing(CheckCorrGram): + # Test Autocorrelation Function using Missing + @classmethod + def setup_class(cls): + cls.x = np.concatenate((np.array([np.nan]),cls.x)) + cls.acf = cls.results['acvar'] # drop and conservative + cls.qstat = cls.results['Q1'] + cls.res_drop = acf(cls.x, nlags=40, qstat=True, alpha=.05, + missing='drop', fft=False) + cls.res_conservative = acf(cls.x, nlags=40, qstat=True, alpha=.05, + fft=False, missing='conservative') + cls.acf_none = np.empty(40) * np.nan # lags 1 to 40 inclusive + cls.qstat_none = np.empty(40) * np.nan + cls.res_none = acf(cls.x, nlags=40, qstat=True, alpha=.05, + missing='none', fft=False) + + def test_raise(self): + with pytest.raises(MissingDataError): + acf(self.x, nlags=40, qstat=True, fft=False, alpha=.05, + missing='raise') + + def test_acf_none(self): + assert_almost_equal(self.res_none[0][1:41], self.acf_none, DECIMAL_8) + + def test_acf_drop(self): + assert_almost_equal(self.res_drop[0][1:41], self.acf, DECIMAL_8) + + def test_acf_conservative(self): + assert_almost_equal(self.res_conservative[0][1:41], self.acf, + DECIMAL_8) + + def test_qstat_none(self): + #todo why is res1/qstat 1 short + assert_almost_equal(self.res_none[2], self.qstat_none, DECIMAL_3) + +# how to do this test? the correct q_stat depends on whether nobs=len(x) is +# used when x contains NaNs or whether nobs>> import statsmodels.api as sm + >>> data = sm.datasets.macrodata.load(as_pandas=False) + >>> data = data.data[['year','quarter','realgdp','cpi']] + >>> data = sm.tsa.add_lag(data, 'realgdp', lags=2) + + Notes + ----- + Trims the array both forward and backward, so that the array returned + so that the length of the returned array is len(`X`) - lags. The lags are + returned in increasing order, ie., t-1,t-2,...,t-lags + """ + if x.dtype.names: + names = x.dtype.names + if not col and np.squeeze(x).ndim > 1: + raise IndexError("col is None and the input array is not 1d") + elif len(names) == 1: + col = names[0] + if isinstance(col, (int, long)): + col = x.dtype.names[col] + if not PY3: + # TODO: Get rid of this kludge. See GH # 3658 + names = [bytes(name) + if isinstance(name, unicode) # noqa:F821 + else name for name in names] + # Fail loudly if there is a non-ascii name. + x.dtype.names = names + if isinstance(col, unicode): # noqa:F821 + col = bytes(col) + + contemp = x[col] + + # make names for lags + tmp_names = [col + '_'+'L(%i)' % i for i in range(1, lags+1)] + ndlags = lagmat(contemp, maxlag=lags, trim='Both') + + # get index for return + if insert is True: + ins_idx = list(names).index(col) + 1 + elif insert is False: + ins_idx = len(names) + 1 + else: # insert is an int + if insert > len(names): + import warnings + warnings.warn("insert > number of variables, inserting at the" + " last position", ValueWarning) + ins_idx = insert + + first_names = list(names[:ins_idx]) + last_names = list(names[ins_idx:]) + + if drop: + if col in first_names: + first_names.pop(first_names.index(col)) + else: + last_names.pop(last_names.index(col)) + + if first_names: # only do this if x isn't "empty" + # Workaround to avoid NumPy FutureWarning + _x = recarray_select(x, first_names) + first_arr = nprf.append_fields(_x[lags:], tmp_names, ndlags.T, + usemask=False) + + else: + first_arr = np.zeros(len(x)-lags, dtype=lzip(tmp_names, + (x[col].dtype,)*lags)) + for i,name in enumerate(tmp_names): + first_arr[name] = ndlags[:,i] + if last_names: + return nprf.append_fields(first_arr, last_names, + [x[name][lags:] for name in last_names], usemask=False) + else: # lags for last variable + return first_arr + + else: # we have an ndarray + + if x.ndim == 1: # make 2d if 1d + x = x[:,None] + if col is None: + col = 0 + + # handle negative index + if col < 0: + col = x.shape[1] + col + + contemp = x[:,col] + + if insert is True: + ins_idx = col + 1 + elif insert is False: + ins_idx = x.shape[1] + else: + if insert < 0: # handle negative index + insert = x.shape[1] + insert + 1 + if insert > x.shape[1]: + insert = x.shape[1] + import warnings + warnings.warn("insert > number of variables, inserting at the" + " last position", ValueWarning) + ins_idx = insert + + ndlags = lagmat(contemp, lags, trim='Both') + first_cols = lrange(ins_idx) + last_cols = lrange(ins_idx,x.shape[1]) + if drop: + if col in first_cols: + first_cols.pop(first_cols.index(col)) + else: + last_cols.pop(last_cols.index(col)) + return np.column_stack((x[lags:,first_cols],ndlags, + x[lags:,last_cols])) + + +def detrend(x, order=1, axis=0): + """ + Detrend an array with a trend of given order along axis 0 or 1 + + Parameters + ---------- + x : array_like, 1d or 2d + data, if 2d, then each row or column is independently detrended with the + same trendorder, but independent trend estimates + order : int + specifies the polynomial order of the trend, zero is constant, one is + linear trend, two is quadratic trend + axis : int + axis can be either 0, observations by rows, + or 1, observations by columns + + Returns + ------- + detrended data series : ndarray + The detrended series is the residual of the linear regression of the + data on the trend of given order. + """ + if x.ndim == 2 and int(axis) == 1: + x = x.T + elif x.ndim > 2: + raise NotImplementedError('x.ndim > 2 is not implemented until it is needed') + + nobs = x.shape[0] + if order == 0: + # Special case demean + resid = x - x.mean(axis=0) + else: + trends = np.vander(np.arange(float(nobs)), N=order + 1) + beta = np.linalg.pinv(trends).dot(x) + resid = x - np.dot(trends, beta) + + if x.ndim == 2 and int(axis) == 1: + resid = resid.T + + return resid + + +def lagmat(x, maxlag, trim='forward', original='ex', use_pandas=False): + """ + Create 2d array of lags + + Parameters + ---------- + x : array_like, 1d or 2d + data; if 2d, observation in rows and variables in columns + maxlag : int + all lags from zero to maxlag are included + trim : str {'forward', 'backward', 'both', 'none'} or None + * 'forward' : trim invalid observations in front + * 'backward' : trim invalid initial observations + * 'both' : trim invalid observations on both sides + * 'none', None : no trimming of observations + original : str {'ex','sep','in'} + * 'ex' : drops the original array returning only the lagged values. + * 'in' : returns the original array and the lagged values as a single + array. + * 'sep' : returns a tuple (original array, lagged values). The original + array is truncated to have the same number of rows as + the returned lagmat. + use_pandas : bool, optional + If true, returns a DataFrame when the input is a pandas + Series or DataFrame. If false, return numpy ndarrays. + + Returns + ------- + lagmat : 2d array + array with lagged observations + y : 2d array, optional + Only returned if original == 'sep' + + Examples + -------- + >>> from statsmodels.tsa.tsatools import lagmat + >>> import numpy as np + >>> X = np.arange(1,7).reshape(-1,2) + >>> lagmat(X, maxlag=2, trim="forward", original='in') + array([[ 1., 2., 0., 0., 0., 0.], + [ 3., 4., 1., 2., 0., 0.], + [ 5., 6., 3., 4., 1., 2.]]) + + >>> lagmat(X, maxlag=2, trim="backward", original='in') + array([[ 5., 6., 3., 4., 1., 2.], + [ 0., 0., 5., 6., 3., 4.], + [ 0., 0., 0., 0., 5., 6.]]) + + >>> lagmat(X, maxlag=2, trim="both", original='in') + array([[ 5., 6., 3., 4., 1., 2.]]) + + >>> lagmat(X, maxlag=2, trim="none", original='in') + array([[ 1., 2., 0., 0., 0., 0.], + [ 3., 4., 1., 2., 0., 0.], + [ 5., 6., 3., 4., 1., 2.], + [ 0., 0., 5., 6., 3., 4.], + [ 0., 0., 0., 0., 5., 6.]]) + + Notes + ----- + When using a pandas DataFrame or Series with use_pandas=True, trim can only + be 'forward' or 'both' since it is not possible to consistently extend index + values. + """ + # TODO: allow list of lags additional to maxlag + is_pandas = _is_using_pandas(x, None) and use_pandas + trim = 'none' if trim is None else trim + trim = trim.lower() + if is_pandas and trim in ('none', 'backward'): + raise ValueError("trim cannot be 'none' or 'forward' when used on " + "Series or DataFrames") + + xa = np.asarray(x) + dropidx = 0 + if xa.ndim == 1: + xa = xa[:, None] + nobs, nvar = xa.shape + if original in ['ex', 'sep']: + dropidx = nvar + if maxlag >= nobs: + raise ValueError("maxlag should be < nobs") + lm = np.zeros((nobs + maxlag, nvar * (maxlag + 1))) + for k in range(0, int(maxlag + 1)): + lm[maxlag - k:nobs + maxlag - k, + nvar * (maxlag - k):nvar * (maxlag - k + 1)] = xa + + if trim in ('none', 'forward'): + startobs = 0 + elif trim in ('backward', 'both'): + startobs = maxlag + else: + raise ValueError('trim option not valid') + + if trim in ('none', 'backward'): + stopobs = len(lm) + else: + stopobs = nobs + + if is_pandas: + x_columns = x.columns if isinstance(x, DataFrame) else [x.name] + columns = [str(col) for col in x_columns] + for lag in range(maxlag): + lag_str = str(lag + 1) + columns.extend([str(col) + '.L.' + lag_str for col in x_columns]) + lm = DataFrame(lm[:stopobs], index=x.index, columns=columns) + lags = lm.iloc[startobs:] + if original in ('sep', 'ex'): + leads = lags[x_columns] + lags = lags.drop(x_columns, 1) + else: + lags = lm[startobs:stopobs, dropidx:] + if original == 'sep': + leads = lm[startobs:stopobs, :dropidx] + + if original == 'sep': + return lags, leads + else: + return lags + + +def lagmat2ds(x, maxlag0, maxlagex=None, dropex=0, trim='forward', + use_pandas=False): + """ + Generate lagmatrix for 2d array, columns arranged by variables + + Parameters + ---------- + x : array_like, 2d + 2d data, observation in rows and variables in columns + maxlag0 : int + for first variable all lags from zero to maxlag are included + maxlagex : None or int + max lag for all other variables all lags from zero to maxlag are included + dropex : int (default is 0) + exclude first dropex lags from other variables + for all variables, except the first, lags from dropex to maxlagex are + included + trim : string + * 'forward' : trim invalid observations in front + * 'backward' : trim invalid initial observations + * 'both' : trim invalid observations on both sides + * 'none' : no trimming of observations + use_pandas : bool, optional + If true, returns a DataFrame when the input is a pandas + Series or DataFrame. If false, return numpy ndarrays. + + Returns + ------- + lagmat : 2d array + array with lagged observations, columns ordered by variable + + Notes + ----- + Inefficient implementation for unequal lags, implemented for convenience + """ + + if maxlagex is None: + maxlagex = maxlag0 + maxlag = max(maxlag0, maxlagex) + is_pandas = _is_using_pandas(x, None) + + if x.ndim == 1: + if is_pandas: + x = pd.DataFrame(x) + else: + x = x[:, None] + elif x.ndim == 0 or x.ndim > 2: + raise ValueError('Only supports 1 and 2-dimensional data.') + + nobs, nvar = x.shape + + if is_pandas and use_pandas: + lags = lagmat(x.iloc[:, 0], maxlag, trim=trim, + original='in', use_pandas=True) + lagsli = [lags.iloc[:, :maxlag0 + 1]] + for k in range(1, nvar): + lags = lagmat(x.iloc[:, k], maxlag, trim=trim, + original='in', use_pandas=True) + lagsli.append(lags.iloc[:, dropex:maxlagex + 1]) + return pd.concat(lagsli, axis=1) + elif is_pandas: + x = np.asanyarray(x) + + lagsli = [lagmat(x[:, 0], maxlag, trim=trim, original='in')[:, :maxlag0 + 1]] + for k in range(1, nvar): + lagsli.append(lagmat(x[:, k], maxlag, trim=trim, original='in')[:, dropex:maxlagex + 1]) + return np.column_stack(lagsli) + + +def vec(mat): + return mat.ravel('F') + + +def vech(mat): + # Gets Fortran-order + return mat.T.take(_triu_indices(len(mat))) + + +# tril/triu/diag, suitable for ndarray.take + +def _tril_indices(n): + rows, cols = np.tril_indices(n) + return rows * n + cols + + +def _triu_indices(n): + rows, cols = np.triu_indices(n) + return rows * n + cols + + +def _diag_indices(n): + rows, cols = np.diag_indices(n) + return rows * n + cols + + +def unvec(v): + k = int(np.sqrt(len(v))) + assert(k * k == len(v)) + return v.reshape((k, k), order='F') + + +def unvech(v): + # quadratic formula, correct fp error + rows = .5 * (-1 + np.sqrt(1 + 8 * len(v))) + rows = int(np.round(rows)) + + result = np.zeros((rows, rows)) + result[np.triu_indices(rows)] = v + result = result + result.T + + # divide diagonal elements by 2 + result[np.diag_indices(rows)] /= 2 + + return result + + +def duplication_matrix(n): + """ + Create duplication matrix D_n which satisfies vec(S) = D_n vech(S) for + symmetric matrix S + + Returns + ------- + D_n : ndarray + """ + tmp = np.eye(n * (n + 1) // 2) + return np.array([unvech(x).ravel() for x in tmp]).T + + +def elimination_matrix(n): + """ + Create the elimination matrix L_n which satisfies vech(M) = L_n vec(M) for + any matrix M + + Parameters + ---------- + + Returns + ------- + + """ + vech_indices = vec(np.tril(np.ones((n, n)))) + return np.eye(n * n)[vech_indices != 0] + + +def commutation_matrix(p, q): + """ + Create the commutation matrix K_{p,q} satisfying vec(A') = K_{p,q} vec(A) + + Parameters + ---------- + p : int + q : int + + Returns + ------- + K : ndarray (pq x pq) + """ + K = np.eye(p * q) + indices = np.arange(p * q).reshape((p, q), order='F') + return K.take(indices.ravel(), axis=0) + + +def _ar_transparams(params): + """ + Transforms params to induce stationarity/invertability. + + Parameters + ---------- + params : array_like + The AR coefficients + + Reference + --------- + Jones(1980) + """ + newparams = np.tanh(params/2) + tmp = np.tanh(params/2) + for j in range(1,len(params)): + a = newparams[j] + for kiter in range(j): + tmp[kiter] -= a * newparams[j-kiter-1] + newparams[:j] = tmp[:j] + return newparams + + +def _ar_invtransparams(params): + """ + Inverse of the Jones reparameterization + + Parameters + ---------- + params : array_like + The transformed AR coefficients + """ + params = params.copy() + tmp = params.copy() + for j in range(len(params)-1,0,-1): + a = params[j] + for kiter in range(j): + tmp[kiter] = (params[kiter] + a * params[j-kiter-1])/\ + (1-a**2) + params[:j] = tmp[:j] + invarcoefs = 2*np.arctanh(params) + return invarcoefs + + +def _ma_transparams(params): + """ + Transforms params to induce stationarity/invertability. + + Parameters + ---------- + params : array + The ma coeffecients of an (AR)MA model. + + Reference + --------- + Jones(1980) + """ + newparams = ((1-np.exp(-params))/(1+np.exp(-params))).copy() + tmp = ((1-np.exp(-params))/(1+np.exp(-params))).copy() + + # levinson-durbin to get macf + for j in range(1,len(params)): + b = newparams[j] + for kiter in range(j): + tmp[kiter] += b * newparams[j-kiter-1] + newparams[:j] = tmp[:j] + return newparams + + +def _ma_invtransparams(macoefs): + """ + Inverse of the Jones reparameterization + + Parameters + ---------- + params : array + The transformed MA coefficients + """ + tmp = macoefs.copy() + for j in range(len(macoefs)-1,0,-1): + b = macoefs[j] + for kiter in range(j): + tmp[kiter] = (macoefs[kiter]-b *macoefs[j-kiter-1])/(1-b**2) + macoefs[:j] = tmp[:j] + invmacoefs = -np.log((1-macoefs)/(1+macoefs)) + return invmacoefs + + +def unintegrate_levels(x, d): + """ + Returns the successive differences needed to unintegrate the series. + + Parameters + ---------- + x : array-like + The original series + d : int + The number of differences of the differenced series. + + Returns + ------- + y : array-like + The increasing differences from 0 to d-1 of the first d elements + of x. + + See Also + -------- + unintegrate + """ + x = x[:d] + return np.asarray([np.diff(x, d - i)[0] for i in range(d, 0, -1)]) + + +def unintegrate(x, levels): + """ + After taking n-differences of a series, return the original series + + Parameters + ---------- + x : array-like + The n-th differenced series + levels : list + A list of the first-value in each differenced series, for + [first-difference, second-difference, ..., n-th difference] + + Returns + ------- + y : array-like + The original series de-differenced + + Examples + -------- + >>> x = np.array([1, 3, 9., 19, 8.]) + >>> levels = unintegrate_levels(x, 2) + >>> levels + array([ 1., 2.]) + >>> unintegrate(np.diff(x, 2), levels) + array([ 1., 3., 9., 19., 8.]) + """ + levels = list(levels)[:] # copy + if len(levels) > 1: + x0 = levels.pop(-1) + return unintegrate(np.cumsum(np.r_[x0, x]), levels) + x0 = levels[0] + return np.cumsum(np.r_[x0, x]) + + +def freq_to_period(freq): + """ + Convert a pandas frequency to a periodicity + + Parameters + ---------- + freq : str or offset + Frequency to convert + + Returns + ------- + period : int + Periodicity of freq + + Notes + ----- + Annual maps to 1, quarterly maps to 4, monthly to 12, weekly to 52. + """ + if not isinstance(freq, offsets.DateOffset): + freq = to_offset(freq) # go ahead and standardize + freq = freq.rule_code.upper() + + if freq == 'A' or freq.startswith(('A-', 'AS-')): + return 1 + elif freq == 'Q' or freq.startswith(('Q-', 'QS-')): + return 4 + elif freq == 'M' or freq.startswith(('M-', 'MS')): + return 12 + elif freq == 'W' or freq.startswith('W-'): + return 52 + elif freq == 'D': + return 7 + elif freq == 'B': + return 5 + elif freq == 'H': + return 24 + else: # pragma : no cover + raise ValueError("freq {} not understood. Please report if you " + "think this is in error.".format(freq)) + + +__all__ = ['lagmat', 'lagmat2ds','add_trend', 'duplication_matrix', + 'elimination_matrix', 'commutation_matrix', + 'vec', 'vech', 'unvec', 'unvech'] diff --git a/statsmodels/tsa/varma_process.py b/statsmodels/tsa/varma_process.py new file mode 100644 index 0000000..1d25bac --- /dev/null +++ b/statsmodels/tsa/varma_process.py @@ -0,0 +1,716 @@ +# -*- coding: utf-8 -*- +""" Helper and filter functions for VAR and VARMA, and basic VAR class + +Created on Mon Jan 11 11:04:23 2010 +Author: josef-pktd +License: BSD + +This is a new version, I didn't look at the old version again, but similar +ideas. + +not copied/cleaned yet: + * fftn based filtering, creating samples with fft + * Tests: I ran examples but did not convert them to tests + examples look good for parameter estimate and forecast, and filter functions + +main TODOs: +* result statistics +* see whether Bayesian dummy observation can be included without changing + the single call to linalg.lstsq +* impulse response function does not treat correlation, see Hamilton and jplv + +Extensions +* constraints, Bayesian priors/penalization +* Error Correction Form and Cointegration +* Factor Models Stock-Watson, ??? + + +see also VAR section in Notes.txt + +""" +from __future__ import print_function +import numpy as np +from scipy import signal + +from statsmodels.tsa.tsatools import lagmat + + +def varfilter(x, a): + '''apply an autoregressive filter to a series x + + Warning: I just found out that convolve doesn't work as I + thought, this likely doesn't work correctly for + nvars>3 + + + x can be 2d, a can be 1d, 2d, or 3d + + Parameters + ---------- + x : array_like + data array, 1d or 2d, if 2d then observations in rows + a : array_like + autoregressive filter coefficients, ar lag polynomial + see Notes + + Returns + ------- + y : ndarray, 2d + filtered array, number of columns determined by x and a + + Notes + ----- + + In general form this uses the linear filter :: + + y = a(L)x + + where + x : nobs, nvars + a : nlags, nvars, npoly + + Depending on the shape and dimension of a this uses different + Lag polynomial arrays + + case 1 : a is 1d or (nlags,1) + one lag polynomial is applied to all variables (columns of x) + case 2 : a is 2d, (nlags, nvars) + each series is independently filtered with its own + lag polynomial, uses loop over nvar + case 3 : a is 3d, (nlags, nvars, npoly) + the ith column of the output array is given by the linear filter + defined by the 2d array a[:,:,i], i.e. :: + + y[:,i] = a(.,.,i)(L) * x + y[t,i] = sum_p sum_j a(p,j,i)*x(t-p,j) + for p = 0,...nlags-1, j = 0,...nvars-1, + for all t >= nlags + + + Note: maybe convert to axis=1, Not + + TODO: initial conditions + + ''' + x = np.asarray(x) + a = np.asarray(a) + if x.ndim == 1: + x = x[:,None] + if x.ndim > 2: + raise ValueError('x array has to be 1d or 2d') + nvar = x.shape[1] + nlags = a.shape[0] + ntrim = nlags//2 + # for x is 2d with ncols >1 + + if a.ndim == 1: + # case: identical ar filter (lag polynomial) + return signal.convolve(x, a[:,None], mode='valid') + # alternative: + #return signal.lfilter(a,[1],x.astype(float),axis=0) + elif a.ndim == 2: + if min(a.shape) == 1: + # case: identical ar filter (lag polynomial) + return signal.convolve(x, a, mode='valid') + + # case: independent ar + #(a bit like recserar in gauss, but no x yet) + #(no, reserar is inverse filter) + result = np.zeros((x.shape[0]-nlags+1, nvar)) + for i in range(nvar): + # could also use np.convolve, but easier for swiching to fft + result[:,i] = signal.convolve(x[:,i], a[:,i], mode='valid') + return result + + elif a.ndim == 3: + # case: vector autoregressive with lag matrices + # Note: we must have shape[1] == shape[2] == nvar + yf = signal.convolve(x[:,:,None], a) + yvalid = yf[ntrim:-ntrim, yf.shape[1]//2,:] + return yvalid + + +def varinversefilter(ar, nobs, version=1): + '''creates inverse ar filter (MA representation) recursively + + The VAR lag polynomial is defined by :: + + ar(L) y_t = u_t or + y_t = -ar_{-1}(L) y_{t-1} + u_t + + the returned lagpolynomial is arinv(L)=ar^{-1}(L) in :: + + y_t = arinv(L) u_t + + + + Parameters + ---------- + ar : array, (nlags,nvars,nvars) + matrix lagpolynomial, currently no exog + first row should be identity + + Returns + ------- + arinv : array, (nobs,nvars,nvars) + + + Notes + ----- + + ''' + nlags, nvars, nvarsex = ar.shape + if nvars != nvarsex: + print('exogenous variables not implemented not tested') + arinv = np.zeros((nobs+1, nvarsex, nvars)) + arinv[0,:,:] = ar[0] + arinv[1:nlags,:,:] = -ar[1:] + if version == 1: + for i in range(2,nobs+1): + tmp = np.zeros((nvars,nvars)) + for p in range(1,nlags): + tmp += np.dot(-ar[p],arinv[i-p,:,:]) + arinv[i,:,:] = tmp + if version == 0: + for i in range(nlags+1,nobs+1): + print(ar[1:].shape, arinv[i-1:i-nlags:-1,:,:].shape) + #arinv[i,:,:] = np.dot(-ar[1:],arinv[i-1:i-nlags:-1,:,:]) + #print(np.tensordot(-ar[1:],arinv[i-1:i-nlags:-1,:,:],axes=([2],[1])).shape + #arinv[i,:,:] = np.tensordot(-ar[1:],arinv[i-1:i-nlags:-1,:,:],axes=([2],[1])) + raise NotImplementedError('waiting for generalized ufuncs or something') + + return arinv + + +def vargenerate(ar, u, initvalues=None): + '''generate an VAR process with errors u + + similar to gauss + uses loop + + Parameters + ---------- + ar : array (nlags,nvars,nvars) + matrix lagpolynomial + u : array (nobs,nvars) + exogenous variable, error term for VAR + + Returns + ------- + sar : array (1+nobs,nvars) + sample of var process, inverse filtered u + does not trim initial condition y_0 = 0 + + Examples + -------- + # generate random sample of VAR + nobs, nvars = 10, 2 + u = numpy.random.randn(nobs,nvars) + a21 = np.array([[[ 1. , 0. ], + [ 0. , 1. ]], + + [[-0.8, 0. ], + [ 0., -0.6]]]) + vargenerate(a21,u) + + # Impulse Response to an initial shock to the first variable + imp = np.zeros((nobs, nvars)) + imp[0,0] = 1 + vargenerate(a21,imp) + + ''' + nlags, nvars, nvarsex = ar.shape + nlagsm1 = nlags - 1 + nobs = u.shape[0] + if nvars != nvarsex: + print('exogenous variables not implemented not tested') + if u.shape[1] != nvars: + raise ValueError('u needs to have nvars columns') + if initvalues is None: + sar = np.zeros((nobs+nlagsm1, nvars)) + start = nlagsm1 + else: + start = max(nlagsm1, initvalues.shape[0]) + sar = np.zeros((nobs+start, nvars)) + sar[start-initvalues.shape[0]:start] = initvalues + #sar[nlagsm1:] = u + sar[start:] = u + #if version == 1: + for i in range(start,start+nobs): + for p in range(1,nlags): + sar[i] += np.dot(sar[i-p,:],-ar[p]) + + return sar + + +def padone(x, front=0, back=0, axis=0, fillvalue=0): + '''pad with zeros along one axis, currently only axis=0 + + + can be used sequentially to pad several axis + + Examples + -------- + >>> padone(np.ones((2,3)),1,3,axis=1) + array([[ 0., 1., 1., 1., 0., 0., 0.], + [ 0., 1., 1., 1., 0., 0., 0.]]) + + >>> padone(np.ones((2,3)),1,1, fillvalue=np.nan) + array([[ NaN, NaN, NaN], + [ 1., 1., 1.], + [ 1., 1., 1.], + [ NaN, NaN, NaN]]) + ''' + #primitive version + shape = np.array(x.shape) + shape[axis] += (front + back) + shapearr = np.array(x.shape) + out = np.empty(shape) + out.fill(fillvalue) + startind = np.zeros(x.ndim) + startind[axis] = front + endind = startind + shapearr + myslice = [slice(startind[k], endind[k]) for k in range(len(endind))] + #print(myslice + #print(out.shape + #print(out[tuple(myslice)].shape + out[tuple(myslice)] = x + return out + + +def trimone(x, front=0, back=0, axis=0): + '''trim number of array elements along one axis + + + Examples + -------- + >>> xp = padone(np.ones((2,3)),1,3,axis=1) + >>> xp + array([[ 0., 1., 1., 1., 0., 0., 0.], + [ 0., 1., 1., 1., 0., 0., 0.]]) + >>> trimone(xp,1,3,1) + array([[ 1., 1., 1.], + [ 1., 1., 1.]]) + ''' + shape = np.array(x.shape) + shape[axis] -= (front + back) + #print(shape, front, back + shapearr = np.array(x.shape) + startind = np.zeros(x.ndim) + startind[axis] = front + endind = startind + shape + myslice = [slice(startind[k], endind[k]) for k in range(len(endind))] + #print(myslice + #print(shape, endind + #print(x[tuple(myslice)].shape + return x[tuple(myslice)] + + +def ar2full(ar): + '''make reduced lagpolynomial into a right side lagpoly array + ''' + nlags, nvar,nvarex = ar.shape + return np.r_[np.eye(nvar,nvarex)[None,:,:],-ar] + + +def ar2lhs(ar): + '''convert full (rhs) lagpolynomial into a reduced, left side lagpoly array + + this is mainly a reminder about the definition + ''' + return -ar[1:] + + +class _Var(object): + '''obsolete VAR class, use tsa.VAR instead, for internal use only + + + Examples + -------- + + >>> v = Var(ar2s) + >>> v.fit(1) + >>> v.arhat + array([[[ 1. , 0. ], + [ 0. , 1. ]], + + [[-0.77784898, 0.01726193], + [ 0.10733009, -0.78665335]]]) + + ''' + + def __init__(self, y): + self.y = y + self.nobs, self.nvars = y.shape + + def fit(self, nlags): + '''estimate parameters using ols + + Parameters + ---------- + nlags : integer + number of lags to include in regression, same for all variables + + Returns + ------- + None, but attaches + + arhat : array (nlags, nvar, nvar) + full lag polynomial array + arlhs : array (nlags-1, nvar, nvar) + reduced lag polynomial for left hand side + other statistics as returned by linalg.lstsq : need to be completed + + + + This currently assumes all parameters are estimated without restrictions. + In this case SUR is identical to OLS + + estimation results are attached to the class instance + + + ''' + self.nlags = nlags # without current period + nvars = self.nvars + #TODO: ar2s looks like a module variable, bug? + #lmat = lagmat(ar2s, nlags, trim='both', original='in') + lmat = lagmat(self.y, nlags, trim='both', original='in') + self.yred = lmat[:,:nvars] + self.xred = lmat[:,nvars:] + res = np.linalg.lstsq(self.xred, self.yred, rcond=-1) + self.estresults = res + self.arlhs = res[0].reshape(nlags, nvars, nvars) + self.arhat = ar2full(self.arlhs) + self.rss = res[1] + self.xredrank = res[2] + + def predict(self): + '''calculate estimated timeseries (yhat) for sample + + ''' + + if not hasattr(self, 'yhat'): + self.yhat = varfilter(self.y, self.arhat) + return self.yhat + + def covmat(self): + ''' covariance matrix of estimate + # not sure it's correct, need to check orientation everywhere + # looks ok, display needs getting used to + >>> v.rss[None,None,:]*np.linalg.inv(np.dot(v.xred.T,v.xred))[:,:,None] + array([[[ 0.37247445, 0.32210609], + [ 0.1002642 , 0.08670584]], + + [[ 0.1002642 , 0.08670584], + [ 0.45903637, 0.39696255]]]) + >>> + >>> v.rss[0]*np.linalg.inv(np.dot(v.xred.T,v.xred)) + array([[ 0.37247445, 0.1002642 ], + [ 0.1002642 , 0.45903637]]) + >>> v.rss[1]*np.linalg.inv(np.dot(v.xred.T,v.xred)) + array([[ 0.32210609, 0.08670584], + [ 0.08670584, 0.39696255]]) + ''' + + #check if orientation is same as self.arhat + self.paramcov = (self.rss[None,None,:] * + np.linalg.inv(np.dot(self.xred.T, self.xred))[:,:,None]) + + def forecast(self, horiz=1, u=None): + '''calculates forcast for horiz number of periods at end of sample + + Parameters + ---------- + horiz : int (optional, default=1) + forecast horizon + u : array (horiz, nvars) + error term for forecast periods. If None, then u is zero. + + Returns + ------- + yforecast : array (nobs+horiz, nvars) + this includes the sample and the forecasts + ''' + if u is None: + u = np.zeros((horiz, self.nvars)) + return vargenerate(self.arhat, u, initvalues=self.y) + + +class VarmaPoly(object): + '''class to keep track of Varma polynomial format + + + Examples + -------- + + ar23 = np.array([[[ 1. , 0. ], + [ 0. , 1. ]], + + [[-0.6, 0. ], + [ 0.2, -0.6]], + + [[-0.1, 0. ], + [ 0.1, -0.1]]]) + + ma22 = np.array([[[ 1. , 0. ], + [ 0. , 1. ]], + + [[ 0.4, 0. ], + [ 0.2, 0.3]]]) + + + ''' + def __init__(self, ar, ma=None): + self.ar = ar + self.ma = ma + nlags, nvarall, nvars = ar.shape + self.nlags, self.nvarall, self.nvars = nlags, nvarall, nvars + self.isstructured = not (ar[0,:nvars] == np.eye(nvars)).all() + if self.ma is None: + self.ma = np.eye(nvars)[None,...] + self.isindependent = True + else: + self.isindependent = not (ma[0] == np.eye(nvars)).all() + self.malags = ar.shape[0] + self.hasexog = nvarall > nvars + self.arm1 = -ar[1:] + + #@property + def vstack(self, a=None, name='ar'): + '''stack lagpolynomial vertically in 2d array + + ''' + if a is not None: + a = a + elif name == 'ar': + a = self.ar + elif name == 'ma': + a = self.ma + else: + raise ValueError('no array or name given') + return a.reshape(-1, self.nvarall) + + #@property + def hstack(self, a=None, name='ar'): + '''stack lagpolynomial horizontally in 2d array + + ''' + if a is not None: + a = a + elif name == 'ar': + a = self.ar + elif name == 'ma': + a = self.ma + else: + raise ValueError('no array or name given') + return a.swapaxes(1,2).reshape(-1, self.nvarall).T + + #@property + def stacksquare(self, a=None, name='ar', orientation='vertical'): + '''stack lagpolynomial vertically in 2d square array with eye + + ''' + if a is not None: + a = a + elif name == 'ar': + a = self.ar + elif name == 'ma': + a = self.ma + else: + raise ValueError('no array or name given') + astacked = a.reshape(-1, self.nvarall) + lenpk, nvars = astacked.shape #[0] + amat = np.eye(lenpk, k=nvars) + amat[:,:nvars] = astacked + return amat + + #@property + def vstackarma_minus1(self): + '''stack ar and lagpolynomial vertically in 2d array + + ''' + a = np.concatenate((self.ar[1:], self.ma[1:]),0) + return a.reshape(-1, self.nvarall) + + #@property + def hstackarma_minus1(self): + '''stack ar and lagpolynomial vertically in 2d array + + this is the Kalman Filter representation, I think + ''' + a = np.concatenate((self.ar[1:], self.ma[1:]),0) + return a.swapaxes(1,2).reshape(-1, self.nvarall) + + def getisstationary(self, a=None): + '''check whether the auto-regressive lag-polynomial is stationary + + Returns + ------- + isstationary : boolean + + *attaches* + + areigenvalues : complex array + eigenvalues sorted by absolute value + + References + ---------- + formula taken from NAG manual + + ''' + if a is not None: + a = a + else: + if self.isstructured: + a = -self.reduceform(self.ar)[1:] + else: + a = -self.ar[1:] + amat = self.stacksquare(a) + ev = np.sort(np.linalg.eigvals(amat))[::-1] + self.areigenvalues = ev + return (np.abs(ev) < 1).all() + + def getisinvertible(self, a=None): + '''check whether the auto-regressive lag-polynomial is stationary + + Returns + ------- + isinvertible : boolean + + *attaches* + + maeigenvalues : complex array + eigenvalues sorted by absolute value + + References + ---------- + formula taken from NAG manual + + ''' + if a is not None: + a = a + else: + if self.isindependent: + a = self.reduceform(self.ma)[1:] + else: + a = self.ma[1:] + if a.shape[0] == 0: + # no ma lags + self.maeigenvalues = np.array([], np.complex) + return True + + amat = self.stacksquare(a) + ev = np.sort(np.linalg.eigvals(amat))[::-1] + self.maeigenvalues = ev + return (np.abs(ev) < 1).all() + + def reduceform(self, apoly): + ''' + + this assumes no exog, todo + + ''' + if apoly.ndim != 3: + raise ValueError('apoly needs to be 3d') + nlags, nvarsex, nvars = apoly.shape + + a = np.empty_like(apoly) + try: + a0inv = np.linalg.inv(a[0,:nvars, :]) + except np.linalg.LinAlgError: + raise ValueError('matrix not invertible', + 'ask for implementation of pinv') + + for lag in range(nlags): + a[lag] = np.dot(a0inv, apoly[lag]) + + return a + + +if __name__ == "__main__": + # some example lag polynomials + a21 = np.array([[[ 1. , 0. ], + [ 0. , 1. ]], + + [[-0.8, 0. ], + [ 0., -0.6]]]) + + a22 = np.array([[[ 1. , 0. ], + [ 0. , 1. ]], + + [[-0.8, 0. ], + [ 0.1, -0.8]]]) + + a23 = np.array([[[ 1. , 0. ], + [ 0. , 1. ]], + + [[-0.8, 0.2], + [ 0.1, -0.6]]]) + + a24 = np.array([[[ 1. , 0. ], + [ 0. , 1. ]], + + [[-0.6, 0. ], + [ 0.2, -0.6]], + + [[-0.1, 0. ], + [ 0.1, -0.1]]]) + + a31 = np.r_[np.eye(3)[None,:,:], 0.8*np.eye(3)[None,:,:]] + a32 = np.array([[[ 1. , 0. , 0. ], + [ 0. , 1. , 0. ], + [ 0. , 0. , 1. ]], + + [[ 0.8, 0. , 0. ], + [ 0.1, 0.6, 0. ], + [ 0. , 0. , 0.9]]]) + + ######## + ut = np.random.randn(1000,2) + ar2s = vargenerate(a22,ut) + #res = np.linalg.lstsq(lagmat(ar2s,1)[:,1:], ar2s) + res = np.linalg.lstsq(lagmat(ar2s,1), ar2s, rcond=-1) + bhat = res[0].reshape(1,2,2) + arhat = ar2full(bhat) + #print(maxabs(arhat - a22) + + v = _Var(ar2s) + v.fit(1) + v.forecast() + v.forecast(25)[-30:] + + ar23 = np.array([[[ 1. , 0. ], + [ 0. , 1. ]], + + [[-0.6, 0. ], + [ 0.2, -0.6]], + + [[-0.1, 0. ], + [ 0.1, -0.1]]]) + + ma22 = np.array([[[ 1. , 0. ], + [ 0. , 1. ]], + + [[ 0.4, 0. ], + [ 0.2, 0.3]]]) + + ar23ns = np.array([[[ 1. , 0. ], + [ 0. , 1. ]], + + [[-1.9, 0. ], + [ 0.4, -0.6]], + + [[ 0.3, 0. ], + [ 0.1, -0.1]]]) + + vp = VarmaPoly(ar23, ma22) + print(vars(vp)) + print(vp.vstack()) + print(vp.vstack(a24)) + print(vp.hstackarma_minus1()) + print(vp.getisstationary()) + print(vp.getisinvertible()) + + vp2 = VarmaPoly(ar23ns) + print(vp2.getisstationary()) + print(vp2.getisinvertible()) # no ma lags diff --git a/statsmodels/tsa/vector_ar/__init__.py b/statsmodels/tsa/vector_ar/__init__.py new file mode 100644 index 0000000..2807e65 --- /dev/null +++ b/statsmodels/tsa/vector_ar/__init__.py @@ -0,0 +1,3 @@ +from statsmodels.tools._testing import PytestTester + +test = PytestTester() diff --git a/statsmodels/tsa/vector_ar/api.py b/statsmodels/tsa/vector_ar/api.py new file mode 100644 index 0000000..9bfcbca --- /dev/null +++ b/statsmodels/tsa/vector_ar/api.py @@ -0,0 +1,5 @@ +# pylint: disable=W0611 +__all__ = ["VAR", "SVAR", "DynamicVAR"] +from .var_model import VAR +from .svar_model import SVAR +from .dynamic import DynamicVAR diff --git a/statsmodels/tsa/vector_ar/dynamic.py b/statsmodels/tsa/vector_ar/dynamic.py new file mode 100755 index 0000000..bd77f84 --- /dev/null +++ b/statsmodels/tsa/vector_ar/dynamic.py @@ -0,0 +1,479 @@ +# pylint: disable=W0201 + +import numpy as np +import pandas as pd + +from statsmodels.compat.python import iteritems, string_types, range +from statsmodels.regression.linear_model import OLS +from statsmodels.tools.decorators import cache_readonly +from statsmodels.tools.tools import Bunch +from statsmodels.tsa.vector_ar import plotting +from statsmodels.tsa.vector_ar import util +from statsmodels.tsa.vector_ar import var_model as _model +import warnings + +FULL_SAMPLE = 0 +ROLLING = 1 +EXPANDING = 2 + + +def _window_ols(y, x, window=None, window_type=None, min_periods=None): + """ + Minimal replacement for pandas ols that provides the required features + + Parameters + ---------- + y : pd.Series + Endogenous variable + x : pd.DataFrame + Exogenous variables, always adds a constant + window: {None, int} + + window_type : {str, int} + min_periods : {None, int} + + Returns + ------- + results : Bunch + Bunch containing parameters (beta), R-squared (r2), nobs and + residuals (resid) + """ + # Must return beta, r2, resid, nobs + if window_type == FULL_SAMPLE: + window_type = 'full_sample' + elif window_type == ROLLING: + window_type = 'rolling' + elif window_type == EXPANDING: + window_type = 'expanding' + + if window_type in ('rolling', 'expanding') and window is None: + window = y.shape[0] + min_periods = 1 if min_periods is None else min_periods + window_type = 'full_sample' if window is None else window_type + window_type = 'rolling' if window_type is None else window_type + if window_type == 'rolling': + min_periods = window + + if window_type not in ('full_sample', 'rolling', 'expanding'): + raise ValueError('Unknown window_type') + + x = x.copy() + x['intercept'] = 1.0 + + bunch = Bunch() + if window_type == 'full_sample': + missing = y.isnull() | x.isnull().any(1) + y = y.loc[~missing] + x = x.loc[~missing] + + res = OLS(y, x).fit() + bunch['beta'] = res.params + bunch['r2'] = res.rsquared + bunch['nobs'] = res.nobs + bunch['resid'] = res.resid + return bunch + + index = y.index + columns = x.columns + n = y.shape[0] + k = x.shape[1] + + beta = pd.DataFrame(np.zeros((n, k)), + columns=columns, + index=index) + r2 = pd.Series(np.zeros(n), index=index) + nobs = r2.copy().astype(np.int) + resid = r2.copy() + valid = r2.copy().astype(np.bool) + + if window_type == 'rolling': + start = window + else: + start = min_periods + for i in range(start, y.shape[0] + 1): + # i is right edge, as in y[:i] for expanding + if window_type == 'rolling': + left = max(0, i - window) + sel = slice(left, i) + else: + sel = slice(i) + _y = y[sel] + _x = x[sel] + missing = _y.isnull() | _x.isnull().any(1) + if missing.any(): + if (~missing).sum() < min_periods: + continue + else: + _y = _y.loc[~missing] + _x = _x.loc[~missing] + if _y.shape[0] <= _x.shape[1]: + continue + if window_type == 'expanding' and missing.values[-1]: + continue + res = OLS(_y, _x).fit() + valid.iloc[i - 1] = True + beta.iloc[i - 1] = res.params + r2.iloc[i - 1] = res.rsquared + nobs.iloc[i - 1] = int(res.nobs) + resid.iloc[i - 1] = res.resid.iloc[-1] + + bunch['beta'] = beta.loc[valid] + bunch['r2'] = r2.loc[valid] + bunch['nobs'] = nobs.loc[valid] + bunch['resid'] = resid.loc[valid] + return bunch + + +def _get_window_type(window_type): + if window_type in (FULL_SAMPLE, ROLLING, EXPANDING): + return window_type + elif isinstance(window_type, string_types): + window_type_up = window_type.upper() + + if window_type_up in ('FULL SAMPLE', 'FULL_SAMPLE'): + return FULL_SAMPLE + elif window_type_up == 'ROLLING': + return ROLLING + elif window_type_up == 'EXPANDING': + return EXPANDING + + raise ValueError('Unrecognized window type: %s' % window_type) + + +class DynamicVAR(object): + """ + Estimates time-varying vector autoregression (VAR(p)) using + equation-by-equation least squares + + Parameters + ---------- + data : pandas.DataFrame + lag_order : int, default 1 + window : int + window_type : {'expanding', 'rolling'} + min_periods : int or None + Minimum number of observations to require in window, defaults to window + size if None specified + trend : {'c', 'nc', 'ct', 'ctt'} + TODO + + Attributes + ---------- + coefs : Panel + items : coefficient names + major_axis : dates + minor_axis : VAR equation names + """ + + def __init__(self, data, lag_order=1, window=None, window_type='expanding', + trend='c', min_periods=None): + + self.lag_order = lag_order + + self.names = list(data.columns) + self.neqs = len(self.names) + + self._y_orig = data + + # TODO: deal with trend + self._x_orig = _make_lag_matrix(data, lag_order) + self._x_orig['intercept'] = 1 + + (self.y, self.x, self.x_filtered, self._index, + self._time_has_obs) = _filter_data(self._y_orig, self._x_orig) + + self.lag_order = lag_order + self.trendorder = util.get_trendorder(trend) + + self._set_window(window_type, window, min_periods) + + warnings.warn('DynamicVAR is deprecated and will be removed in a ' + 'future version, use VAR or VARMAX.', DeprecationWarning) + + def _set_window(self, window_type, window, min_periods): + self._window_type = _get_window_type(window_type) + + if self._is_rolling: + if window is None: + raise Exception('Must pass window when doing rolling ' + 'regression') + + if min_periods is None: + min_periods = window + else: + window = len(self.x) + if min_periods is None: + min_periods = 1 + + self._window = int(window) + self._min_periods = min_periods + + @cache_readonly + def T(self): + """ + Number of time periods in results + """ + return len(self.result_index) + + @property + def nobs(self): + # Stub, do I need this? + data = dict((eq, r.nobs) for eq, r in iteritems(self.equations)) + return pd.DataFrame(data) + + @cache_readonly + def equations(self): + eqs = {} + for col, ts in iteritems(self.y): + model = _window_ols(y=ts, x=self.x, window=self._window, + window_type=self._window_type, + min_periods=self._min_periods) + + eqs[col] = model + + return eqs + + @cache_readonly + def coefs(self): + """ + Return dynamic regression coefficients as Panel + """ + data = {} + for eq, result in iteritems(self.equations): + data[eq] = result.beta + + panel = pd.Panel.fromDict(data) + + # Coefficient names become items + return panel.swapaxes('items', 'minor') + + @property + def result_index(self): + return self.coefs.major_axis + + @cache_readonly + def _coefs_raw(self): + """ + Reshape coefficients to be more amenable to dynamic calculations + + Returns + ------- + coefs : (time_periods x lag_order x neqs x neqs) + """ + coef_panel = self.coefs.copy() + del coef_panel['intercept'] + + coef_values = coef_panel.swapaxes('items', 'major').values + coef_values = coef_values.reshape((len(coef_values), + self.lag_order, + self.neqs, self.neqs)) + + return coef_values + + @cache_readonly + def _intercepts_raw(self): + """ + Similar to _coefs_raw, return intercept values in easy-to-use matrix + form + + Returns + ------- + intercepts : (T x K) + """ + return self.coefs['intercept'].values + + @cache_readonly + def resid(self): + data = {} + for eq, result in iteritems(self.equations): + data[eq] = result.resid + + return pd.DataFrame(data) + + def forecast(self, steps=1): + """ + Produce dynamic forecast + + Parameters + ---------- + steps + + Returns + ------- + forecasts : pandas.DataFrame + """ + output = np.empty((self.T - steps, self.neqs)) + + y_values = self.y.values + y_index_map = dict((d, idx) for idx, d in enumerate(self.y.index)) + result_index_map = dict((d, idx) + for idx, d in enumerate(self.result_index)) + + coefs = self._coefs_raw + intercepts = self._intercepts_raw + + # can only produce this many forecasts + forc_index = self.result_index[steps:] + for i, date in enumerate(forc_index): + # TODO: check that this does the right thing in weird cases... + idx = y_index_map[date] - steps + result_idx = result_index_map[date] - steps + + y_slice = y_values[:idx] + + forcs = _model.forecast(y_slice, coefs[result_idx], + intercepts[result_idx], steps) + + output[i] = forcs[-1] + + return pd.DataFrame(output, index=forc_index, columns=self.names) + + def plot_forecast(self, steps=1, figsize=(10, 10)): + """ + Plot h-step ahead forecasts against actual realizations of time + series. Note that forecasts are lined up with their respective + realizations. + + Parameters + ---------- + steps : int + default 1 + figsize : tuple[int, int] + default (10, 10) + """ + import matplotlib.pyplot as plt + + fig, axes = plt.subplots(figsize=figsize, nrows=self.neqs, + sharex=True) + + forc = self.forecast(steps=steps) + dates = forc.index + + y_overlay = self.y.reindex(dates) + + for i, col in enumerate(forc.columns): + ax = axes[i] + + y_ts = y_overlay[col] + forc_ts = forc[col] + + y_handle = ax.plot(dates, y_ts.values, 'k.', ms=2) + forc_handle = ax.plot(dates, forc_ts.values, 'k-') + + lines = (y_handle[0], forc_handle[0]) + labels = ('Y', 'Forecast') + fig.legend(lines, labels) + fig.autofmt_xdate() + + fig.suptitle('Dynamic %d-step forecast' % steps) + + # pretty things up a bit + plotting.adjust_subplots(bottom=0.15, left=0.10) + plt.draw_if_interactive() + + @property + def _is_rolling(self): + return self._window_type == ROLLING + + @cache_readonly + def r2(self): + """Returns the r-squared values.""" + data = dict((eq, r.r2) for eq, r in iteritems(self.equations)) + return pd.DataFrame(data) + + +class DynamicPanelVAR(DynamicVAR): + """ + Dynamic (time-varying) panel vector autoregression using panel ordinary + least squares + + Parameters + ---------- + """ + + def __init__(self, data, lag_order=1, window=None, window_type='expanding', + trend='c', min_periods=None): + self.lag_order = lag_order + self.neqs = len(data.columns) + + self._y_orig = data + + # TODO: deal with trend + self._x_orig = _make_lag_matrix(data, lag_order) + self._x_orig['intercept'] = 1 + + (self.y, self.x, self.x_filtered, self._index, + self._time_has_obs) = _filter_data(self._y_orig, self._x_orig) + + self.lag_order = lag_order + self.trendorder = util.get_trendorder(trend) + + self._set_window(window_type, window, min_periods) + + warnings.warn('DynamicPanelVAR is deprecated and will be removed in a ' + 'future version, use VAR or VARMAX.', DeprecationWarning) + + +def _filter_data(lhs, rhs): + """ + Data filtering routine for dynamic VAR + + lhs : DataFrame + original data + rhs : DataFrame + lagged variables + + Returns + ------- + + """ + def _has_all_columns(df): + return np.isfinite(df.values).sum(1) == len(df.columns) + + rhs_valid = _has_all_columns(rhs) + if not rhs_valid.all(): + pre_filtered_rhs = rhs[rhs_valid] + else: + pre_filtered_rhs = rhs + + index = lhs.index.union(rhs.index) + if not index.equals(rhs.index) or not index.equals(lhs.index): + rhs = rhs.reindex(index) + lhs = lhs.reindex(index) + + rhs_valid = _has_all_columns(rhs) + + lhs_valid = _has_all_columns(lhs) + valid = rhs_valid & lhs_valid + + if not valid.all(): + filt_index = rhs.index[valid] + filtered_rhs = rhs.reindex(filt_index) + filtered_lhs = lhs.reindex(filt_index) + else: + filtered_rhs, filtered_lhs = rhs, lhs + + return filtered_lhs, filtered_rhs, pre_filtered_rhs, index, valid + + +def _make_lag_matrix(x, lags): + data = {} + columns = [] + for i in range(1, 1 + lags): + lagstr = 'L%d.' % i + lag = x.shift(i).rename(columns=lambda c: lagstr + c) + data.update(lag._series) + columns.extend(lag.columns) + + return pd.DataFrame(data, columns=columns) + + +if __name__ == '__main__': + import pandas.util.testing as ptest + + ptest.N = 500 + data = ptest.makeTimeDataFrame().cumsum(0) + + var = DynamicVAR(data, lag_order=2, window_type='expanding') + var2 = DynamicVAR(data, lag_order=2, window=10, + window_type='rolling') diff --git a/statsmodels/tsa/vector_ar/hypothesis_test_results.py b/statsmodels/tsa/vector_ar/hypothesis_test_results.py new file mode 100644 index 0000000..3083f49 --- /dev/null +++ b/statsmodels/tsa/vector_ar/hypothesis_test_results.py @@ -0,0 +1,200 @@ +from statsmodels.iolib.table import SimpleTable +import numpy as np + + +class HypothesisTestResults(object): + """ + Results class for hypothesis tests. + + Parameters + ---------- + test_statistic : float + crit_value : float + pvalue : float, 0 <= `pvalue` <= 1 + df : int + Degrees of freedom. + signif : float, 0 < `signif` < 1 + Significance level. + method : str + The kind of test (e.g. ``"f"`` for F-test, ``"wald"`` for Wald-test). + title : str + A title describing the test. It will be part of the summary. + h0 : str + A string describing the null hypothesis. It will be used in the + summary. + """ + def __init__(self, test_statistic, crit_value, pvalue, df, + signif, method, title, h0): + self.test_statistic = test_statistic + self.crit_value = crit_value + self.pvalue = pvalue + self.df = df + self.signif = signif + self.method = method.capitalize() + if test_statistic < crit_value: + self.conclusion = "fail to reject" + else: + self.conclusion = "reject" + self.title = title + self.h0 = h0 + self.conclusion_str = "Conclusion: %s H_0" % self.conclusion + self.signif_str = " at {:.0%} significance level".format(self.signif) + + def summary(self): + """Return summary""" + title = self.title + ". " + self.h0 + ". " \ + + self.conclusion_str + self.signif_str + "." + data_fmt = {"data_fmts": ["%#0.4g", "%#0.4g", "%#0.3F", "%s"]} + html_data_fmt = dict(data_fmt) + html_data_fmt["data_fmts"] = ["" + i + "" + for i in html_data_fmt["data_fmts"]] + return SimpleTable(data=[[self.test_statistic, self.crit_value, + self.pvalue, str(self.df)]], + headers=['Test statistic', 'Critical value', + 'p-value', 'df'], + title=title, + txt_fmt=data_fmt, + html_fmt=html_data_fmt, + ltx_fmt=data_fmt) + + def __str__(self): + return "<" + self.__module__ + "." + self.__class__.__name__ \ + + " object. " + self.h0 + ": " + self.conclusion \ + + self.signif_str \ + + ". Test statistic: {:.3f}".format(self.test_statistic) \ + + ", critical value: {:.3f}>".format(self.crit_value) \ + + ", p-value: {:.3f}>".format(self.pvalue) + + def __eq__(self, other): + if not isinstance(other, self.__class__): + return False + return np.allclose(self.test_statistic, other.test_statistic) \ + and np.allclose(self.crit_value, other.crit_value) \ + and np.allclose(self.pvalue, other.pvalue) \ + and np.allclose(self.signif, other.signif) + + +class CausalityTestResults(HypothesisTestResults): + """ + Results class for Granger-causality and instantaneous causality. + + Parameters + ---------- + causing : list of str + This list contains the potentially causing variables. + caused : list of str + This list contains the potentially caused variables. + test_statistic : float + crit_value : float + pvalue : float + df : int + Degrees of freedom. + signif : float + Significance level. + test : str {``"granger"``, ``"inst"``}, default: ``"granger"`` + If ``"granger"``, Granger-causality has been tested. If ``"inst"``, + instantaneous causality has been tested. + method : str {``"f"``, ``"wald"``} + The kind of test. ``"f"`` indicates an F-test, ``"wald"`` indicates a + Wald-test. + """ + def __init__(self, causing, caused, test_statistic, crit_value, pvalue, df, + signif, test="granger", method=None): + self.causing = causing + self.caused = caused + self.test = test + if method is None or method.lower() not in ["f", "wald"]: + raise ValueError('The method ("f" for F-test, "wald" for ' + "Wald-test) must not be None.") + method = method.capitalize() + # attributes used in summary and string representation: + title = "Granger" if self.test == "granger" else "Instantaneous" + title += " causality %s-test" % method + h0 = "H_0: " + if len(self.causing) == 1: + h0 += "{} does not ".format(self.causing[0]) + else: + h0 += "%s do not ".format(self.causing) + h0 += "Granger-" if self.test == "granger" else "instantaneously " + h0 += "cause " + if len(self.caused) == 1: + h0 += self.caused[0] + else: + h0 += "[" + ", ".join(caused) + "]" + + super(CausalityTestResults, self).__init__(test_statistic, crit_value, + pvalue, df, signif, method, + title, h0) + + def __eq__(self, other): + basic_test = super(CausalityTestResults, self).__eq__(other) + if not basic_test: + return False + test = self.test == other.test + variables = (self.causing == other.causing and + self.caused == other.caused) + # instantaneous causality is a symmetric relation ==> causing and + # caused may be swapped + if not variables and self.test == "inst": + variables = (self.causing == other.caused and + self.caused == other.causing) + return test and variables + + +class NormalityTestResults(HypothesisTestResults): + """ + Results class for the Jarque-Bera-test for nonnormality. + + Parameters + ---------- + test_statistic : float + The test's test statistic. + crit_value : float + The test's critical value. + pvalue : float + The test's p-value. + df : int + Degrees of freedom. + signif : float + Significance level. + """ + def __init__(self, test_statistic, crit_value, pvalue, df, signif): + method = "Jarque-Bera" + title = "normality (skew and kurtosis) test" + h0 = 'H_0: data generated by normally-distributed process' + super(NormalityTestResults, self).__init__(test_statistic, crit_value, + pvalue, df, signif, + method, title, h0) + + +class WhitenessTestResults(HypothesisTestResults): + """ + Results class for the Portmanteau-test for residual autocorrelation. + + Parameters + ---------- + test_statistic : float + The test's test statistic. + crit_value : float + The test's critical value. + pvalue : float + The test's p-value. + df : int + Degrees of freedom. + signif : float + Significance level. + nlags : int + Number of lags tested. + """ + def __init__(self, test_statistic, crit_value, pvalue, df, signif, nlags, + adjusted): + self.lags = nlags + self.adjusted = adjusted + method = "Portmanteau" + title = "{}-test for residual autocorrelation".format(method) + if adjusted: + title = "Adjusted " + title + h0 = "H_0: residual autocorrelation up to lag {} is zero".format(nlags) + super(WhitenessTestResults, self).__init__(test_statistic, crit_value, + pvalue, df, signif, + method, title, h0) diff --git a/statsmodels/tsa/vector_ar/irf.py b/statsmodels/tsa/vector_ar/irf.py new file mode 100644 index 0000000..090f268 --- /dev/null +++ b/statsmodels/tsa/vector_ar/irf.py @@ -0,0 +1,698 @@ +# -*- coding: utf-8 -*- +""" +Impulse reponse-related code +""" + +from __future__ import division + +import numpy as np +import numpy.linalg as la +import scipy.linalg as L + + +from statsmodels.tools.decorators import cache_readonly +from statsmodels.tools.tools import chain_dot +#from statsmodels.tsa.api import VAR +from statsmodels.compat.python import range +import statsmodels.tsa.tsatools as tsa +import statsmodels.tsa.vector_ar.plotting as plotting +import statsmodels.tsa.vector_ar.util as util + +mat = np.array + + +class BaseIRAnalysis(object): + """ + Base class for plotting and computing IRF-related statistics, want to be + able to handle known and estimated processes + """ + + def __init__(self, model, P=None, periods=10, order=None, svar=False, + vecm=False): + self.model = model + self.periods = periods + self.neqs, self.lags, self.T = model.neqs, model.k_ar, model.nobs + + self.order = order + + if P is None: + sigma = model.sigma_u + + # TODO, may be difficult at the moment + # if order is not None: + # indexer = [model.get_eq_index(name) for name in order] + # sigma = sigma[:, indexer][indexer, :] + + # if sigma.shape != model.sigma_u.shape: + # raise ValueError('variable order is wrong length') + + P = la.cholesky(sigma) + + self.P = P + + self.svar = svar + + self.irfs = model.ma_rep(periods) + if svar: + self.svar_irfs = model.svar_ma_rep(periods, P=P) + else: + self.orth_irfs = model.orth_ma_rep(periods, P=P) + + self.cum_effects = self.irfs.cumsum(axis=0) + if svar: + self.svar_cum_effects = self.svar_irfs.cumsum(axis=0) + else: + self.orth_cum_effects = self.orth_irfs.cumsum(axis=0) + + # long-run effects may be infinite for VECMs. + if not vecm: + self.lr_effects = model.long_run_effects() + if svar: + self.svar_lr_effects = np.dot(model.long_run_effects(), P) + else: + self.orth_lr_effects = np.dot(model.long_run_effects(), P) + + # auxiliary stuff + if vecm: + self._A = util.comp_matrix(model.var_rep) + else: + self._A = util.comp_matrix(model.coefs) + + def _choose_irfs(self, orth=False, svar=False): + if orth: + return self.orth_irfs + elif svar: + return self.svar_irfs + else: + return self.irfs + + def cov(self, *args, **kwargs): + raise NotImplementedError + + def cum_effect_cov(self, *args, **kwargs): + raise NotImplementedError + + def plot(self, orth=False, impulse=None, response=None, + signif=0.05, plot_params=None, subplot_params=None, + plot_stderr=True, stderr_type='asym', repl=1000, + seed=None, component=None): + """ + Plot impulse responses + + Parameters + ---------- + orth : bool, default False + Compute orthogonalized impulse responses + impulse : string or int + variable providing the impulse + response : string or int + variable affected by the impulse + signif : float (0 < signif < 1) + Significance level for error bars, defaults to 95% CI + subplot_params : dict + To pass to subplot plotting funcions. Example: if fonts are too big, + pass {'fontsize' : 8} or some number to your taste. + plot_params : dict + + plot_stderr: bool, default True + Plot standard impulse response error bands + stderr_type: string + 'asym': default, computes asymptotic standard errors + 'mc': monte carlo standard errors (use rpl) + repl: int, default 1000 + Number of replications for Monte Carlo and Sims-Zha standard errors + seed: int + np.random.seed for Monte Carlo replications + component: array or vector of principal component indices + """ + periods = self.periods + model = self.model + svar = self.svar + + if orth and svar: + raise ValueError("For SVAR system, set orth=False") + + irfs = self._choose_irfs(orth, svar) + if orth: + title = 'Impulse responses (orthogonalized)' + elif svar: + title = 'Impulse responses (structural)' + else: + title = 'Impulse responses' + + if plot_stderr is False: + stderr = None + + elif stderr_type not in ['asym', 'mc', 'sz1', 'sz2','sz3']: + raise ValueError("Error type must be either 'asym', 'mc','sz1','sz2', or 'sz3'") + else: + if stderr_type == 'asym': + stderr = self.cov(orth=orth) + if stderr_type == 'mc': + stderr = self.errband_mc(orth=orth, svar=svar, + repl=repl, signif=signif, + seed=seed) + if stderr_type == 'sz1': + stderr = self.err_band_sz1(orth=orth, svar=svar, + repl=repl, signif=signif, + seed=seed, + component=component) + if stderr_type == 'sz2': + stderr = self.err_band_sz2(orth=orth, svar=svar, + repl=repl, signif=signif, + seed=seed, + component=component) + if stderr_type == 'sz3': + stderr = self.err_band_sz3(orth=orth, svar=svar, + repl=repl, signif=signif, + seed=seed, + component=component) + + fig = plotting.irf_grid_plot(irfs, stderr, impulse, response, + self.model.names, title, signif=signif, + subplot_params=subplot_params, + plot_params=plot_params, + stderr_type=stderr_type) + return fig + + def plot_cum_effects(self, orth=False, impulse=None, response=None, + signif=0.05, plot_params=None, + subplot_params=None, plot_stderr=True, + stderr_type='asym', repl=1000, seed=None): + """ + Plot cumulative impulse response functions + + Parameters + ---------- + orth : bool, default False + Compute orthogonalized impulse responses + impulse : string or int + variable providing the impulse + response : string or int + variable affected by the impulse + signif : float (0 < signif < 1) + Significance level for error bars, defaults to 95% CI + subplot_params : dict + To pass to subplot plotting funcions. Example: if fonts are too big, + pass {'fontsize' : 8} or some number to your taste. + plot_params : dict + + plot_stderr: bool, default True + Plot standard impulse response error bands + stderr_type: string + 'asym': default, computes asymptotic standard errors + 'mc': monte carlo standard errors (use rpl) + repl: int, default 1000 + Number of replications for monte carlo standard errors + seed: int + np.random.seed for Monte Carlo replications + + """ + + if orth: + title = 'Cumulative responses responses (orthogonalized)' + cum_effects = self.orth_cum_effects + lr_effects = self.orth_lr_effects + else: + title = 'Cumulative responses' + cum_effects = self.cum_effects + lr_effects = self.lr_effects + + if stderr_type not in ['asym', 'mc']: + raise ValueError("`stderr_type` must be one of 'asym', 'mc'") + else: + if stderr_type == 'asym': + stderr = self.cum_effect_cov(orth=orth) + if stderr_type == 'mc': + stderr = self.cum_errband_mc(orth=orth, repl=repl, + signif=signif, seed=seed) + if not plot_stderr: + stderr = None + + fig = plotting.irf_grid_plot(cum_effects, stderr, impulse, response, + self.model.names, title, signif=signif, + hlines=lr_effects, + subplot_params=subplot_params, + plot_params=plot_params, + stderr_type=stderr_type) + return fig + + +class IRAnalysis(BaseIRAnalysis): + """ + Impulse response analysis class. Computes impulse responses, asymptotic + standard errors, and produces relevant plots + + Parameters + ---------- + model : VAR instance + + Notes + ----- + Using Lütkepohl (2005) notation + """ + def __init__(self, model, P=None, periods=10, order=None, svar=False, + vecm=False): + BaseIRAnalysis.__init__(self, model, P=P, periods=periods, + order=order, svar=svar, vecm=vecm) + + if vecm: + self.cov_a = model.cov_var_repr + else: + self.cov_a = model._cov_alpha + self.cov_sig = model._cov_sigma + + # memoize dict for G matrix function + self._g_memo = {} + + def cov(self, orth=False): + """ + Compute asymptotic standard errors for impulse response coefficients + + Notes + ----- + Lütkepohl eq 3.7.5 + + Returns + ------- + """ + if orth: + return self._orth_cov() + + covs = self._empty_covm(self.periods + 1) + covs[0] = np.zeros((self.neqs ** 2, self.neqs ** 2)) + for i in range(1, self.periods + 1): + Gi = self.G[i - 1] + covs[i] = chain_dot(Gi, self.cov_a, Gi.T) + + return covs + + def errband_mc(self, orth=False, svar=False, repl=1000, + signif=0.05, seed=None, burn=100): + """ + IRF Monte Carlo integrated error bands + """ + model = self.model + periods = self.periods + if svar: + return model.sirf_errband_mc(orth=orth, repl=repl, steps=periods, + signif=signif, seed=seed, + burn=burn, cum=False) + else: + return model.irf_errband_mc(orth=orth, repl=repl, steps=periods, + signif=signif, seed=seed, + burn=burn, cum=False) + + def err_band_sz1(self, orth=False, svar=False, repl=1000, + signif=0.05, seed=None, burn=100, component=None): + """ + IRF Sims-Zha error band method 1. Assumes symmetric error bands around + mean. + + Parameters + ---------- + orth : bool, default False + Compute orthogonalized impulse responses + repl : int, default 1000 + Number of MC replications + signif : float (0 < signif < 1) + Significance level for error bars, defaults to 95% CI + seed : int, default None + np.random seed + burn : int, default 100 + Number of initial simulated obs to discard + component : neqs x neqs array, default to largest for each + Index of column of eigenvector/value to use for each error band + Note: period of impulse (t=0) is not included when computing + principle component + + References + ---------- + Sims, Christopher A., and Tao Zha. 1999. "Error Bands for Impulse + Response". Econometrica 67: 1113-1155. + """ + + model = self.model + periods = self.periods + irfs = self._choose_irfs(orth, svar) + neqs = self.neqs + irf_resim = model.irf_resim(orth=orth, repl=repl, steps=periods, + seed=seed, burn=burn) + q = util.norm_signif_level(signif) + + W, eigva, k =self._eigval_decomp_SZ(irf_resim) + + if component is not None: + if np.shape(component) != (neqs,neqs): + raise ValueError("Component array must be " + str(neqs) + " x " + str(neqs)) + if np.argmax(component) >= neqs*periods: + raise ValueError("Atleast one of the components does not exist") + else: + k = component + + # here take the kth column of W, which we determine by finding the largest eigenvalue of the covaraince matrix + lower = np.copy(irfs) + upper = np.copy(irfs) + for i in range(neqs): + for j in range(neqs): + lower[1:,i,j] = irfs[1:,i,j] + W[i,j,:,k[i,j]]*q*np.sqrt(eigva[i,j,k[i,j]]) + upper[1:,i,j] = irfs[1:,i,j] - W[i,j,:,k[i,j]]*q*np.sqrt(eigva[i,j,k[i,j]]) + + return lower, upper + + def err_band_sz2(self, orth=False, svar=False, repl=1000, signif=0.05, + seed=None, burn=100, component=None): + """ + IRF Sims-Zha error band method 2. + + This method Does not assume symmetric error bands around mean. + + Parameters + ---------- + orth : bool, default False + Compute orthogonalized impulse responses + repl : int, default 1000 + Number of MC replications + signif : float (0 < signif < 1) + Significance level for error bars, defaults to 95% CI + seed : int, default None + np.random seed + burn : int, default 100 + Number of initial simulated obs to discard + component : neqs x neqs array, default to largest for each + Index of column of eigenvector/value to use for each error band + Note: period of impulse (t=0) is not included when computing + principle component + + References + ---------- + Sims, Christopher A., and Tao Zha. 1999. "Error Bands for Impulse + Response". Econometrica 67: 1113-1155. + """ + model = self.model + periods = self.periods + irfs = self._choose_irfs(orth, svar) + neqs = self.neqs + irf_resim = model.irf_resim(orth=orth, repl=repl, T=periods, seed=seed, + burn=100) + + W, eigva, k = self._eigval_decomp_SZ(irf_resim) + + if component is not None: + if np.shape(component) != (neqs,neqs): + raise ValueError("Component array must be " + str(neqs) + " x " + str(neqs)) + if np.argmax(component) >= neqs*periods: + raise ValueError("Atleast one of the components does not exist") + else: + k = component + + gamma = np.zeros((repl, periods+1, neqs, neqs)) + for p in range(repl): + for i in range(neqs): + for j in range(neqs): + gamma[p,1:,i,j] = W[i,j,k[i,j],:] * irf_resim[p,1:,i,j] + + gamma_sort = np.sort(gamma, axis=0) #sort to get quantiles + indx = round(signif/2*repl)-1,round((1-signif/2)*repl)-1 + + lower = np.copy(irfs) + upper = np.copy(irfs) + for i in range(neqs): + for j in range(neqs): + lower[:,i,j] = irfs[:,i,j] + gamma_sort[indx[0],:,i,j] + upper[:,i,j] = irfs[:,i,j] + gamma_sort[indx[1],:,i,j] + + return lower, upper + + def err_band_sz3(self, orth=False, svar=False, repl=1000, signif=0.05, + seed=None, burn=100, component=None): + """ + IRF Sims-Zha error band method 3. Does not assume symmetric error bands around mean. + + Parameters + ---------- + orth : bool, default False + Compute orthogonalized impulse responses + repl : int, default 1000 + Number of MC replications + signif : float (0 < signif < 1) + Significance level for error bars, defaults to 95% CI + seed : int, default None + np.random seed + burn : int, default 100 + Number of initial simulated obs to discard + component : vector length neqs, default to largest for each + Index of column of eigenvector/value to use for each error band + Note: period of impulse (t=0) is not included when computing + principle component + + References + ---------- + Sims, Christopher A., and Tao Zha. 1999. "Error Bands for Impulse + Response". Econometrica 67: 1113-1155. + """ + + model = self.model + periods = self.periods + irfs = self._choose_irfs(orth, svar) + neqs = self.neqs + irf_resim = model.irf_resim(orth=orth, repl=repl, T=periods, seed=seed, + burn=100) + stack = np.zeros((neqs, repl, periods*neqs)) + + #stack left to right, up and down + + for p in range(repl): + for i in range(neqs): + stack[i, p,:] = np.ravel(irf_resim[p,1:,:,i].T) + + stack_cov=np.zeros((neqs, periods*neqs, periods*neqs)) + W = np.zeros((neqs, periods*neqs, periods*neqs)) + eigva = np.zeros((neqs, periods*neqs)) + k = np.zeros((neqs)) + + if component is not None: + if np.size(component) != (neqs): + raise ValueError("Component array must be of length " + str(neqs)) + if np.argmax(component) >= neqs*periods: + raise ValueError("Atleast one of the components does not exist") + else: + k = component + + #compute for eigen decomp for each stack + for i in range(neqs): + stack_cov[i] = np.cov(stack[i],rowvar=0) + W[i], eigva[i], k[i] = util.eigval_decomp(stack_cov[i]) + + gamma = np.zeros((repl, periods+1, neqs, neqs)) + for p in range(repl): + c = 0 + for j in range(neqs): + for i in range(neqs): + gamma[p,1:,i,j] = W[j,k[j],i*periods:(i+1)*periods] * irf_resim[p,1:,i,j] + if i == neqs-1: + gamma[p,1:,i,j] = W[j,k[j],i*periods:] * irf_resim[p,1:,i,j] + + gamma_sort = np.sort(gamma, axis=0) #sort to get quantiles + indx = round(signif/2*repl)-1,round((1-signif/2)*repl)-1 + + lower = np.copy(irfs) + upper = np.copy(irfs) + for i in range(neqs): + for j in range(neqs): + lower[:,i,j] = irfs[:,i,j] + gamma_sort[indx[0],:,i,j] + upper[:,i,j] = irfs[:,i,j] + gamma_sort[indx[1],:,i,j] + + return lower, upper + + def _eigval_decomp_SZ(self, irf_resim): + """ + Returns + ------- + W: array of eigenvectors + eigva: list of eigenvalues + k: matrix indicating column # of largest eigenvalue for each c_i,j + + """ + neqs = self.neqs + periods = self.periods + + cov_hold = np.zeros((neqs, neqs, periods, periods)) + for i in range(neqs): + for j in range(neqs): + cov_hold[i,j,:,:] = np.cov(irf_resim[:,1:,i,j],rowvar=0) + + W = np.zeros((neqs, neqs, periods, periods)) + eigva = np.zeros((neqs, neqs, periods, 1)) + k = np.zeros((neqs, neqs)) + + for i in range(neqs): + for j in range(neqs): + W[i,j,:,:], eigva[i,j,:,0], k[i,j] = util.eigval_decomp(cov_hold[i,j,:,:]) + return W, eigva, k + + @cache_readonly + def G(self): + # Gi matrices as defined on p. 111 + + K = self.neqs + + # nlags = self.model.p + # J = np.hstack((np.eye(K),) + (np.zeros((K, K)),) * (nlags - 1)) + + def _make_g(i): + # p. 111 Lutkepohl + G = 0. + for m in range(i): + # be a bit cute to go faster + idx = i - 1 - m + if idx in self._g_memo: + apow = self._g_memo[idx] + else: + apow = la.matrix_power(self._A.T, idx) + # apow = np.dot(J, apow) + apow = apow[:K] + self._g_memo[idx] = apow + + # take first K rows + piece = np.kron(apow, self.irfs[m]) + G = G + piece + + return G + + return [_make_g(i) for i in range(1, self.periods + 1)] + + def _orth_cov(self): + # Lutkepohl 3.7.8 + + Ik = np.eye(self.neqs) + PIk = np.kron(self.P.T, Ik) + H = self.H + + covs = self._empty_covm(self.periods + 1) + for i in range(self.periods + 1): + if i == 0: + apiece = 0 + else: + Ci = np.dot(PIk, self.G[i-1]) + apiece = chain_dot(Ci, self.cov_a, Ci.T) + + Cibar = np.dot(np.kron(Ik, self.irfs[i]), H) + bpiece = chain_dot(Cibar, self.cov_sig, Cibar.T) / self.T + + # Lutkepohl typo, cov_sig correct + covs[i] = apiece + bpiece + + return covs + + def cum_effect_cov(self, orth=False): + """ + Compute asymptotic standard errors for cumulative impulse response + coefficients + + Parameters + ---------- + orth : boolean + + Notes + ----- + eq. 3.7.7 (non-orth), 3.7.10 (orth) + + Returns + ------- + + """ + Ik = np.eye(self.neqs) + PIk = np.kron(self.P.T, Ik) + + F = 0. + covs = self._empty_covm(self.periods + 1) + for i in range(self.periods + 1): + if i > 0: + F = F + self.G[i - 1] + + if orth: + if i == 0: + apiece = 0 + else: + Bn = np.dot(PIk, F) + apiece = chain_dot(Bn, self.cov_a, Bn.T) + + Bnbar = np.dot(np.kron(Ik, self.cum_effects[i]), self.H) + bpiece = chain_dot(Bnbar, self.cov_sig, Bnbar.T) / self.T + + covs[i] = apiece + bpiece + else: + if i == 0: + covs[i] = np.zeros((self.neqs**2, self.neqs**2)) + continue + + covs[i] = chain_dot(F, self.cov_a, F.T) + + return covs + + def cum_errband_mc(self, orth=False, repl=1000, + signif=0.05, seed=None, burn=100): + """ + IRF Monte Carlo integrated error bands of cumulative effect + """ + model = self.model + periods = self.periods + return model.irf_errband_mc(orth=orth, repl=repl, + T=periods, signif=signif, seed=seed, burn=burn, cum=True) + + def lr_effect_cov(self, orth=False): + """ + Returns + ------- + + """ + lre = self.lr_effects + Finfty = np.kron(np.tile(lre.T, self.lags), lre) + Ik = np.eye(self.neqs) + + if orth: + Binf = np.dot(np.kron(self.P.T, np.eye(self.neqs)), Finfty) + Binfbar = np.dot(np.kron(Ik, lre), self.H) + + return (chain_dot(Binf, self.cov_a, Binf.T) + + chain_dot(Binfbar, self.cov_sig, Binfbar.T)) + else: + return chain_dot(Finfty, self.cov_a, Finfty.T) + + def stderr(self, orth=False): + return np.array([tsa.unvec(np.sqrt(np.diag(c))) + for c in self.cov(orth=orth)]) + + def cum_effect_stderr(self, orth=False): + return np.array([tsa.unvec(np.sqrt(np.diag(c))) + for c in self.cum_effect_cov(orth=orth)]) + + def lr_effect_stderr(self, orth=False): + cov = self.lr_effect_cov(orth=orth) + return tsa.unvec(np.sqrt(np.diag(cov))) + + def _empty_covm(self, periods): + return np.zeros((periods, self.neqs ** 2, self.neqs ** 2), + dtype=float) + + @cache_readonly + def H(self): + k = self.neqs + Lk = tsa.elimination_matrix(k) + Kkk = tsa.commutation_matrix(k, k) + Ik = np.eye(k) + + # B = chain_dot(Lk, np.eye(k**2) + commutation_matrix(k, k), + # np.kron(self.P, np.eye(k)), Lk.T) + + # return np.dot(Lk.T, L.inv(B)) + + B = chain_dot(Lk, + np.dot(np.kron(Ik, self.P), Kkk) + np.kron(self.P, Ik), + Lk.T) + + return np.dot(Lk.T, L.inv(B)) + + def fevd_table(self): + raise NotImplementedError diff --git a/statsmodels/tsa/vector_ar/output.py b/statsmodels/tsa/vector_ar/output.py new file mode 100644 index 0000000..8780abe --- /dev/null +++ b/statsmodels/tsa/vector_ar/output.py @@ -0,0 +1,247 @@ +from __future__ import print_function +from statsmodels.compat.python import lzip, StringIO, range +import numpy as np + +from statsmodels.iolib import SimpleTable + +mat = np.array + +_default_table_fmt = dict( + empty_cell = '', + colsep=' ', + row_pre = '', + row_post = '', + table_dec_above='=', + table_dec_below='=', + header_dec_below='-', + header_fmt = '%s', + stub_fmt = '%s', + title_align='c', + header_align = 'r', + data_aligns = 'r', + stubs_align = 'l', + fmt = 'txt' +) + + +class VARSummary(object): + default_fmt = dict( + #data_fmts = ["%#12.6g","%#12.6g","%#10.4g","%#5.4g"], + #data_fmts = ["%#10.4g","%#10.4g","%#10.4g","%#6.4g"], + data_fmts = ["%#15.6F","%#15.6F","%#15.3F","%#14.3F"], + empty_cell = '', + #colwidths = 10, + colsep=' ', + row_pre = '', + row_post = '', + table_dec_above='=', + table_dec_below='=', + header_dec_below='-', + header_fmt = '%s', + stub_fmt = '%s', + title_align='c', + header_align = 'r', + data_aligns = 'r', + stubs_align = 'l', + fmt = 'txt' + ) + + part1_fmt = dict( + default_fmt, + data_fmts = ["%s"], + colwidths = 15, + colsep=' ', + table_dec_below='', + header_dec_below=None, + ) + part2_fmt = dict( + default_fmt, + data_fmts = ["%#12.6g","%#12.6g","%#10.4g","%#5.4g"], + colwidths = None, + colsep=' ', + table_dec_above='-', + table_dec_below='-', + header_dec_below=None, + ) + + def __init__(self, estimator): + self.model = estimator + self.summary = self.make() + + def __repr__(self): + return self.summary + + def make(self, endog_names=None, exog_names=None): + """ + Summary of VAR model + """ + buf = StringIO() + + buf.write(self._header_table() + '\n') + buf.write(self._stats_table() + '\n') + buf.write(self._coef_table() + '\n') + buf.write(self._resid_info() + '\n') + + return buf.getvalue() + + def _header_table(self): + import time + + model = self.model + + t = time.localtime() + + # TODO: change when we allow coef restrictions + # ncoefs = len(model.beta) + + # Header information + part1title = "Summary of Regression Results" + part1data = [[model._model_type], + ["OLS"], #TODO: change when fit methods change + [time.strftime("%a, %d, %b, %Y", t)], + [time.strftime("%H:%M:%S", t)]] + part1header = None + part1stubs = ('Model:', + 'Method:', + 'Date:', + 'Time:') + part1 = SimpleTable(part1data, part1header, part1stubs, + title=part1title, txt_fmt=self.part1_fmt) + + return str(part1) + + def _stats_table(self): + # TODO: do we want individual statistics or should users just + # use results if wanted? + # Handle overall fit statistics + + model = self.model + + part2Lstubs = ('No. of Equations:', + 'Nobs:', + 'Log likelihood:', + 'AIC:') + part2Rstubs = ('BIC:', + 'HQIC:', + 'FPE:', + 'Det(Omega_mle):') + part2Ldata = [[model.neqs], [model.nobs], [model.llf], [model.aic]] + part2Rdata = [[model.bic], [model.hqic], [model.fpe], [model.detomega]] + part2Lheader = None + part2L = SimpleTable(part2Ldata, part2Lheader, part2Lstubs, + txt_fmt = self.part2_fmt) + part2R = SimpleTable(part2Rdata, part2Lheader, part2Rstubs, + txt_fmt = self.part2_fmt) + part2L.extend_right(part2R) + + return str(part2L) + + def _coef_table(self): + model = self.model + k = model.neqs + + Xnames = self.model.exog_names + + data = lzip(model.params.T.ravel(), + model.stderr.T.ravel(), + model.tvalues.T.ravel(), + model.pvalues.T.ravel()) + + header = ('coefficient','std. error','t-stat','prob') + + buf = StringIO() + dim = k * model.k_ar + model.k_trend + for i in range(k): + section = "Results for equation %s" % model.names[i] + buf.write(section + '\n') + #print >> buf, section + + table = SimpleTable(data[dim * i : dim * (i + 1)], header, + Xnames, title=None, txt_fmt = self.default_fmt) + buf.write(str(table) + '\n') + + if i < k - 1: + buf.write('\n') + + return buf.getvalue() + + def _resid_info(self): + buf = StringIO() + names = self.model.names + + buf.write("Correlation matrix of residuals" + '\n') + buf.write(pprint_matrix(self.model.resid_corr, names, names) + '\n') + + return buf.getvalue() + + +def normality_summary(results): + title = "Normality skew/kurtosis Chi^2-test" + null_hyp = 'H_0: data generated by normally-distributed process' + return hypothesis_test_table(results, title, null_hyp) + + +def hypothesis_test_table(results, title, null_hyp): + fmt = dict(_default_table_fmt, + data_fmts=["%#15.6F","%#15.6F","%#15.3F", "%s"]) + + buf = StringIO() + table = SimpleTable([[results['statistic'], + results['crit_value'], + results['pvalue'], + str(results['df'])]], + ['Test statistic', 'Critical Value', 'p-value', + 'df'], [''], title=None, txt_fmt=fmt) + + buf.write(title + '\n') + buf.write(str(table) + '\n') + + buf.write(null_hyp + '\n') + + buf.write("Conclusion: %s H_0" % results['conclusion']) + buf.write(" at %.2f%% significance level" % (results['signif'] * 100)) + + return buf.getvalue() + + +def pprint_matrix(values, rlabels, clabels, col_space=None): + buf = StringIO() + + T, K = len(rlabels), len(clabels) + + if col_space is None: + min_space = 10 + col_space = [max(len(str(c)) + 2, min_space) for c in clabels] + else: + col_space = (col_space,) * K + + row_space = max([len(str(x)) for x in rlabels]) + 2 + + head = _pfixed('', row_space) + + for j, h in enumerate(clabels): + head += _pfixed(h, col_space[j]) + + buf.write(head + '\n') + + for i, rlab in enumerate(rlabels): + line = ('%s' % rlab).ljust(row_space) + + for j in range(K): + line += _pfixed(values[i,j], col_space[j]) + + buf.write(line + '\n') + + return buf.getvalue() + + +def _pfixed(s, space, nanRep=None, float_format=None): + if isinstance(s, float): + if float_format: + formatted = float_format(s) + else: + formatted = "%#8.6F" % s + + return formatted.rjust(space) + else: + return ('%s' % s)[:space].rjust(space) diff --git a/statsmodels/tsa/vector_ar/plotting.py b/statsmodels/tsa/vector_ar/plotting.py new file mode 100644 index 0000000..fdc8474 --- /dev/null +++ b/statsmodels/tsa/vector_ar/plotting.py @@ -0,0 +1,276 @@ +from statsmodels.compat.python import lrange, range +import numpy as np +import statsmodels.tsa.vector_ar.util as util + + +class MPLConfigurator(object): + + def __init__(self): + self._inverse_actions = [] + + def revert(self): + for action in self._inverse_actions: + action() + + def set_fontsize(self, size): + import matplotlib as mpl + old_size = mpl.rcParams['font.size'] + mpl.rcParams['font.size'] = size + + def revert(): + mpl.rcParams['font.size'] = old_size + + self._inverse_actions.append(revert) + + +#------------------------------------------------------------------------------- +# Plotting functions + +def plot_mts(Y, names=None, index=None): + """ + Plot multiple time series + """ + import matplotlib.pyplot as plt + + k = Y.shape[1] + rows, cols = k, 1 + + fig = plt.figure(figsize=(10, 10)) + + for j in range(k): + ts = Y[:, j] + + ax = fig.add_subplot(rows, cols, j+1) + if index is not None: + ax.plot(index, ts) + else: + ax.plot(ts) + + if names is not None: + ax.set_title(names[j]) + + return fig + + +def plot_var_forc(prior, forc, err_upper, err_lower, + index=None, names=None, plot_stderr=True, + legend_options=None): + import matplotlib.pyplot as plt + + n, k = prior.shape + rows, cols = k, 1 + + fig = plt.figure(figsize=(10, 10)) + + prange = np.arange(n) + rng_f = np.arange(n - 1, n + len(forc)) + rng_err = np.arange(n, n + len(forc)) + + for j in range(k): + ax = plt.subplot(rows, cols, j+1) + + p1 = ax.plot(prange, prior[:, j], 'k', label='Observed') + p2 = ax.plot(rng_f, np.r_[prior[-1:, j], forc[:, j]], 'k--', + label='Forecast') + + if plot_stderr: + p3 = ax.plot(rng_err, err_upper[:, j], 'k-.', + label='Forc 2 STD err') + ax.plot(rng_err, err_lower[:, j], 'k-.') + + if names is not None: + ax.set_title(names[j]) + + if legend_options is None: + legend_options = {"loc": "upper right"} + ax.legend(**legend_options) + return fig + + +def plot_with_error(y, error, x=None, axes=None, value_fmt='k', + error_fmt='k--', alpha=0.05, stderr_type = 'asym'): + """ + Make plot with optional error bars + + Parameters + ---------- + y : + error : array or None + + """ + import matplotlib.pyplot as plt + + if axes is None: + axes = plt.gca() + + x = x if x is not None else lrange(len(y)) + plot_action = lambda y, fmt: axes.plot(x, y, fmt) + plot_action(y, value_fmt) + + #changed this + if error is not None: + if stderr_type == 'asym': + q = util.norm_signif_level(alpha) + plot_action(y - q * error, error_fmt) + plot_action(y + q * error, error_fmt) + if stderr_type in ('mc','sz1','sz2','sz3'): + plot_action(error[0], error_fmt) + plot_action(error[1], error_fmt) + + +def plot_full_acorr(acorr, fontsize=8, linewidth=8, xlabel=None, + err_bound=None): + """ + + Parameters + ---------- + + + + """ + import matplotlib.pyplot as plt + + config = MPLConfigurator() + config.set_fontsize(fontsize) + + k = acorr.shape[1] + fig, axes = plt.subplots(k, k, figsize=(10, 10), squeeze=False) + + for i in range(k): + for j in range(k): + ax = axes[i][j] + acorr_plot(acorr[:, i, j], linewidth=linewidth, + xlabel=xlabel, ax=ax) + + if err_bound is not None: + ax.axhline(err_bound, color='k', linestyle='--') + ax.axhline(-err_bound, color='k', linestyle='--') + + adjust_subplots() + config.revert() + + return fig + + +def acorr_plot(acorr, linewidth=8, xlabel=None, ax=None): + import matplotlib.pyplot as plt + + if ax is None: + ax = plt.gca() + + if xlabel is None: + xlabel = np.arange(len(acorr)) + + ax.vlines(xlabel, [0], acorr, lw=linewidth) + + ax.axhline(0, color='k') + ax.set_ylim([-1, 1]) + + # hack? + ax.set_xlim([-1, xlabel[-1] + 1]) + + +def plot_acorr_with_error(): + raise NotImplementedError + + +def adjust_subplots(**kwds): + import matplotlib.pyplot as plt + + passed_kwds = dict(bottom=0.05, top=0.925, + left=0.05, right=0.95, + hspace=0.2) + passed_kwds.update(kwds) + plt.subplots_adjust(**passed_kwds) + + +#------------------------------------------------------------------------------- +# Multiple impulse response (cum_effects, etc.) cplots + +def irf_grid_plot(values, stderr, impcol, rescol, names, title, + signif=0.05, hlines=None, subplot_params=None, + plot_params=None, figsize=(10,10), stderr_type='asym'): + """ + Reusable function to make flexible grid plots of impulse responses and + comulative effects + + values : (T + 1) x k x k + stderr : T x k x k + hlines : k x k + """ + import matplotlib.pyplot as plt + + if subplot_params is None: + subplot_params = {} + if plot_params is None: + plot_params = {} + + nrows, ncols, to_plot = _get_irf_plot_config(names, impcol, rescol) + + fig, axes = plt.subplots(nrows=nrows, ncols=ncols, sharex=True, + squeeze=False, figsize=figsize) + + # fill out space + adjust_subplots() + + fig.suptitle(title, fontsize=14) + + subtitle_temp = r'%s$\rightarrow$%s' + + k = len(names) + + rng = lrange(len(values)) + for (j, i, ai, aj) in to_plot: + ax = axes[ai][aj] + + # HACK? + if stderr is not None: + if stderr_type == 'asym': + sig = np.sqrt(stderr[:, j * k + i, j * k + i]) + plot_with_error(values[:, i, j], sig, x=rng, axes=ax, + alpha=signif, value_fmt='b', stderr_type=stderr_type) + if stderr_type in ('mc','sz1','sz2','sz3'): + errs = stderr[0][:, i, j], stderr[1][:, i, j] + plot_with_error(values[:, i, j], errs, x=rng, axes=ax, + alpha=signif, value_fmt='b', stderr_type=stderr_type) + else: + plot_with_error(values[:, i, j], None, x=rng, axes=ax, + value_fmt='b') + + ax.axhline(0, color='k') + + if hlines is not None: + ax.axhline(hlines[i,j], color='k') + + sz = subplot_params.get('fontsize', 12) + ax.set_title(subtitle_temp % (names[j], names[i]), fontsize=sz) + + return fig + + +def _get_irf_plot_config(names, impcol, rescol): + nrows = ncols = k = len(names) + if impcol is not None and rescol is not None: + # plot one impulse-response pair + nrows = ncols = 1 + j = util.get_index(names, impcol) + i = util.get_index(names, rescol) + to_plot = [(j, i, 0, 0)] + elif impcol is not None: + # plot impacts of impulse in one variable + ncols = 1 + j = util.get_index(names, impcol) + to_plot = [(j, i, i, 0) for i in range(k)] + elif rescol is not None: + # plot only things having impact on particular variable + ncols = 1 + i = util.get_index(names, rescol) + to_plot = [(j, i, j, 0) for j in range(k)] + else: + # plot everything + to_plot = [(j, i, i, j) for i in range(k) for j in range(k)] + + return nrows, ncols, to_plot + +#------------------------------------------------------------------------------- +# Forecast error variance decomposition diff --git a/statsmodels/tsa/vector_ar/svar_model.py b/statsmodels/tsa/vector_ar/svar_model.py new file mode 100644 index 0000000..bc99906 --- /dev/null +++ b/statsmodels/tsa/vector_ar/svar_model.py @@ -0,0 +1,720 @@ +# -*- coding: utf-8 -*- +""" +Vector Autoregression (VAR) processes + +References +---------- +Lütkepohl (2005) New Introduction to Multiple Time Series Analysis +""" +from __future__ import print_function, division + +import numpy as np +import numpy.linalg as npl +from numpy.linalg import slogdet + +from statsmodels.compat.python import range +from statsmodels.compat.pandas import deprecate_kwarg + +from statsmodels.tools.decorators import deprecated_alias +from statsmodels.tools.numdiff import approx_hess, approx_fprime +from statsmodels.tsa.vector_ar.irf import IRAnalysis +from statsmodels.tsa.vector_ar.var_model import VARProcess, VARResults + +import statsmodels.tsa.vector_ar.util as util +import statsmodels.tsa.base.tsa_model as tsbase + + +def svar_ckerr(svar_type, A, B): + if A is None and (svar_type == 'A' or svar_type == 'AB'): + raise ValueError('SVAR of type A or AB but A array not given.') + if B is None and (svar_type == 'B' or svar_type == 'AB'): + + raise ValueError('SVAR of type B or AB but B array not given.') + + +class SVAR(tsbase.TimeSeriesModel): + r""" + Fit VAR and then estimate structural components of A and B, defined: + + .. math:: Ay_t = A_1 y_{t-1} + \ldots + A_p y_{t-p} + B\var(\epsilon_t) + + Parameters + ---------- + endog : array-like + 1-d endogenous response variable. The independent variable. + dates : array-like + must match number of rows of endog + svar_type : str + "A" - estimate structural parameters of A matrix, B assumed = I + "B" - estimate structural parameters of B matrix, A assumed = I + "AB" - estimate structural parameters indicated in both A and B matrix + A : array-like + neqs x neqs with unknown parameters marked with 'E' for estimate + B : array-like + neqs x neqs with unknown parameters marked with 'E' for estimate + + References + ---------- + Hamilton (1994) Time Series Analysis + """ + + y = deprecated_alias("y", "endog", remove_version="0.11.0") + + def __init__(self, endog, svar_type, dates=None, + freq=None, A=None, B=None, missing='none'): + super(SVAR, self).__init__(endog, None, dates, freq, missing=missing) + #(self.endog, self.names, + # self.dates) = data_util.interpret_data(endog, names, dates) + + self.neqs = self.endog.shape[1] + + types = ['A', 'B', 'AB'] + if svar_type not in types: + raise ValueError('SVAR type not recognized, must be in ' + + str(types)) + self.svar_type = svar_type + + svar_ckerr(svar_type, A, B) + + self.A_original = A + self.B_original = B + + # initialize A, B as I if not given + # Initialize SVAR masks + if A is None: + A = np.identity(self.neqs) + self.A_mask = A_mask = np.zeros(A.shape, dtype=bool) + else: + A_mask = np.logical_or(A == 'E', A == 'e') + self.A_mask = A_mask + if B is None: + B = np.identity(self.neqs) + self.B_mask = B_mask = np.zeros(B.shape, dtype=bool) + else: + B_mask = np.logical_or(B == 'E', B == 'e') + self.B_mask = B_mask + + # convert A and B to numeric + #TODO: change this when masked support is better or with formula + #integration + Anum = np.zeros(A.shape, dtype=float) + Anum[~A_mask] = A[~A_mask] + Anum[A_mask] = np.nan + self.A = Anum + + Bnum = np.zeros(B.shape, dtype=float) + Bnum[~B_mask] = B[~B_mask] + Bnum[B_mask] = np.nan + self.B = Bnum + + #LikelihoodModel.__init__(self, endog) + + #super(SVAR, self).__init__(endog) + + def fit(self, A_guess=None, B_guess=None, maxlags=None, method='ols', + ic=None, trend='c', verbose=False, s_method='mle', + solver="bfgs", override=False, maxiter=500, maxfun=500): + """ + Fit the SVAR model and solve for structural parameters + + Parameters + ---------- + A_guess : array-like, optional + A vector of starting values for all parameters to be estimated + in A. + B_guess : array-like, optional + A vector of starting values for all parameters to be estimated + in B. + maxlags : int + Maximum number of lags to check for order selection, defaults to + 12 * (nobs/100.)**(1./4), see select_order function + method : {'ols'} + Estimation method to use + ic : {'aic', 'fpe', 'hqic', 'bic', None} + Information criterion to use for VAR order selection. + aic : Akaike + fpe : Final prediction error + hqic : Hannan-Quinn + bic : Bayesian a.k.a. Schwarz + verbose : bool, default False + Print order selection output to the screen + trend, str {"c", "ct", "ctt", "nc"} + "c" - add constant + "ct" - constant and trend + "ctt" - constant, linear and quadratic trend + "nc" - co constant, no trend + Note that these are prepended to the columns of the dataset. + s_method : {'mle'} + Estimation method for structural parameters + solver : {'nm', 'newton', 'bfgs', 'cg', 'ncg', 'powell'} + Solution method + See statsmodels.base for details + override : bool, default False + If True, returns estimates of A and B without checking + order or rank condition + maxiter : int, default 500 + Number of iterations to perform in solution method + maxfun : int + Number of function evaluations to perform + + Notes + ----- + Lütkepohl pp. 146-153 + Hamilton pp. 324-336 + + Returns + ------- + est : SVARResults + """ + lags = maxlags + + if ic is not None: + selections = self.select_order(maxlags=maxlags, verbose=verbose) + if ic not in selections: + raise ValueError("%s not recognized, must be among %s" + % (ic, sorted(selections))) + lags = selections[ic] + if verbose: + print('Using %d based on %s criterion' % (lags, ic)) + else: + if lags is None: + lags = 1 + + self.nobs = len(self.endog) - lags + + # initialize starting parameters + start_params = self._get_init_params(A_guess, B_guess) + + return self._estimate_svar(start_params, lags, trend=trend, + solver=solver, override=override, + maxiter=maxiter, maxfun=maxfun) + + def _get_init_params(self, A_guess, B_guess): + """ + Returns either the given starting or .1 if none are given. + """ + + var_type = self.svar_type.lower() + + n_masked_a = self.A_mask.sum() + if var_type in ['ab', 'a']: + if A_guess is None: + A_guess = np.array([.1]*n_masked_a) + else: + if len(A_guess) != n_masked_a: + msg = 'len(A_guess) = %s, there are %s parameters in A' + raise ValueError(msg % (len(A_guess), n_masked_a)) + else: + A_guess = [] + + n_masked_b = self.B_mask.sum() + if var_type in ['ab', 'b']: + if B_guess is None: + B_guess = np.array([.1]*n_masked_b) + else: + if len(B_guess) != n_masked_b: + msg = 'len(B_guess) = %s, there are %s parameters in B' + raise ValueError(msg % (len(B_guess), n_masked_b)) + else: + B_guess = [] + + return np.r_[A_guess, B_guess] + + def _estimate_svar(self, start_params, lags, maxiter, maxfun, + trend='c', solver="nm", override=False): + """ + lags : int + trend : string or None + As per above + """ + k_trend = util.get_trendorder(trend) + y = self.endog + z = util.get_var_endog(y, lags, trend=trend, has_constant='raise') + y_sample = y[lags:] + + # Lutkepohl p75, about 5x faster than stated formula + var_params = np.linalg.lstsq(z, y_sample, rcond=-1)[0] + resid = y_sample - np.dot(z, var_params) + + # Unbiased estimate of covariance matrix $\Sigma_u$ of the white noise + # process $u$ + # equivalent definition + # .. math:: \frac{1}{T - Kp - 1} Y^\prime (I_T - Z (Z^\prime Z)^{-1} + # Z^\prime) Y + # Ref: Lutkepohl p.75 + # df_resid right now is T - Kp - 1, which is a suggested correction + + avobs = len(y_sample) + + df_resid = avobs - (self.neqs * lags + k_trend) + + sse = np.dot(resid.T, resid) + #TODO: should give users the option to use a dof correction or not + omega = sse / df_resid + self.sigma_u = omega + + A, B = self._solve_AB(start_params, override=override, + solver=solver, + maxiter=maxiter, + maxfun=maxfun) + A_mask = self.A_mask + B_mask = self.B_mask + + return SVARResults(y, z, var_params, omega, lags, + names=self.endog_names, trend=trend, + dates=self.data.dates, model=self, + A=A, B=B, A_mask=A_mask, B_mask=B_mask) + + def loglike(self, params): + """ + Loglikelihood for SVAR model + + Notes + ----- + This method assumes that the autoregressive parameters are + first estimated, then likelihood with structural parameters + is estimated + """ + + #TODO: this doesn't look robust if A or B is None + A = self.A + B = self.B + A_mask = self.A_mask + B_mask = self.B_mask + A_len = len(A[A_mask]) + B_len = len(B[B_mask]) + + if A is not None: + A[A_mask] = params[:A_len] + if B is not None: + B[B_mask] = params[A_len:A_len+B_len] + + nobs = self.nobs + neqs = self.neqs + sigma_u = self.sigma_u + + W = np.dot(npl.inv(B),A) + trc_in = np.dot(np.dot(W.T,W),sigma_u) + sign, b_logdet = slogdet(B**2) #numpy 1.4 compat + b_slogdet = sign * b_logdet + + likl = -nobs/2. * (neqs * np.log(2 * np.pi) - + np.log(npl.det(A)**2) + b_slogdet + + np.trace(trc_in)) + + return likl + + def score(self, AB_mask): + """ + Return the gradient of the loglike at AB_mask. + + Parameters + ---------- + AB_mask : unknown values of A and B matrix concatenated + + Notes + ----- + Return numerical gradient + """ + loglike = self.loglike + return approx_fprime(AB_mask, loglike, epsilon=1e-8) + + def hessian(self, AB_mask): + """ + Returns numerical hessian. + """ + loglike = self.loglike + return approx_hess(AB_mask, loglike) + + def _solve_AB(self, start_params, maxiter, maxfun, override=False, + solver='bfgs'): + """ + Solves for MLE estimate of structural parameters + + Parameters + ---------- + + override : bool, default False + If True, returns estimates of A and B without checking + order or rank condition + solver : str or None, optional + Solver to be used. The default is 'nm' (Nelder-Mead). Other + choices are 'bfgs', 'newton' (Newton-Raphson), 'cg' + conjugate, 'ncg' (non-conjugate gradient), and 'powell'. + maxiter : int, optional + The maximum number of iterations. Default is 500. + maxfun : int, optional + The maximum number of function evalutions. + + Returns + ------- + A_solve, B_solve: ML solutions for A, B matrices + + """ + #TODO: this could stand a refactor + A_mask = self.A_mask + B_mask = self.B_mask + A = self.A + B = self.B + A_len = len(A[A_mask]) + + A[A_mask] = start_params[:A_len] + B[B_mask] = start_params[A_len:] + + if not override: + J = self._compute_J(A, B) + self.check_order(J) + self.check_rank(J) + else: #TODO: change to a warning? + print("Order/rank conditions have not been checked") + + retvals = super(SVAR, self).fit(start_params=start_params, + method=solver, maxiter=maxiter, + maxfun=maxfun, ftol=1e-20, + disp=0).params + + A[A_mask] = retvals[:A_len] + B[B_mask] = retvals[A_len:] + + return A, B + + def _compute_J(self, A_solve, B_solve): + + #first compute appropriate duplication matrix + # taken from Magnus and Neudecker (1980), + #"The Elimination Matrix: Some Lemmas and Applications + # the creation of the D_n matrix follows MN (1980) directly, + #while the rest follows Hamilton (1994) + + neqs = self.neqs + sigma_u = self.sigma_u + A_mask = self.A_mask + B_mask = self.B_mask + + #first generate duplication matrix, see MN (1980) for notation + + D_nT = np.zeros([int((1.0 / 2) * (neqs) * (neqs + 1)), neqs**2]) + + for j in range(neqs): + i=j + while j <= i < neqs: + u=np.zeros([int((1.0/2)*neqs*(neqs+1)), 1]) + u[int(j * neqs + (i + 1) - (1.0 / 2) * (j + 1) * j - 1)] = 1 + Tij=np.zeros([neqs,neqs]) + Tij[i,j]=1 + Tij[j,i]=1 + D_nT=D_nT+np.dot(u,(Tij.ravel('F')[:,None]).T) + i=i+1 + + D_n=D_nT.T + D_pl=npl.pinv(D_n) + + #generate S_B + S_B = np.zeros((neqs**2, len(A_solve[A_mask]))) + S_D = np.zeros((neqs**2, len(B_solve[B_mask]))) + + j = 0 + j_d = 0 + if len(A_solve[A_mask]) != 0: + A_vec = np.ravel(A_mask, order='F') + for k in range(neqs**2): + if A_vec[k]: + S_B[k,j] = -1 + j += 1 + if len(B_solve[B_mask]) != 0: + B_vec = np.ravel(B_mask, order='F') + for k in range(neqs**2): + if B_vec[k]: + S_D[k,j_d] = 1 + j_d +=1 + + #now compute J + invA = npl.inv(A_solve) + J_p1i = np.dot(np.dot(D_pl, np.kron(sigma_u, invA)), S_B) + J_p1 = -2.0 * J_p1i + J_p2 = np.dot(np.dot(D_pl, np.kron(invA, invA)), S_D) + + J = np.append(J_p1, J_p2, axis=1) + + return J + + def check_order(self, J): + if np.size(J, axis=0) < np.size(J, axis=1): + raise ValueError("Order condition not met: " + "solution may not be unique") + + def check_rank(self, J): + rank = np.linalg.matrix_rank(J) + if rank < np.size(J, axis=1): + raise ValueError("Rank condition not met: " + "solution may not be unique.") + + +class SVARProcess(VARProcess): + """ + Class represents a known SVAR(p) process + + Parameters + ---------- + coefs : ndarray (p x k x k) + intercept : ndarray (length k) + sigma_u : ndarray (k x k) + names : sequence (length k) + A : neqs x neqs np.ndarray with unknown parameters marked with 'E' + A_mask : neqs x neqs mask array with known parameters masked + B : neqs x neqs np.ndarry with unknown parameters marked with 'E' + B_mask : neqs x neqs mask array with known parameters masked + """ + def __init__(self, coefs, intercept, sigma_u, A_solve, B_solve, + names=None): + self.k_ar = len(coefs) + self.neqs = coefs.shape[1] + self.coefs = coefs + self.intercept = intercept + self.sigma_u = sigma_u + self.A_solve = A_solve + self.B_solve = B_solve + self.names = names + + def orth_ma_rep(self, maxn=10, P=None): + """ + + Unavailable for SVAR + + """ + raise NotImplementedError + + def svar_ma_rep(self, maxn=10, P=None): + """ + + Compute Structural MA coefficient matrices using MLE + of A, B + + """ + if P is None: + A_solve = self.A_solve + B_solve = self.B_solve + P = np.dot(npl.inv(A_solve), B_solve) + + ma_mats = self.ma_rep(maxn=maxn) + return np.array([np.dot(coefs, P) for coefs in ma_mats]) + + +class SVARResults(SVARProcess, VARResults): + """ + Estimate VAR(p) process with fixed number of lags + + Parameters + ---------- + endog : array + endog_lagged : array + params : array + sigma_u : array + lag_order : int + model : VAR model instance + trend : str {'nc', 'c', 'ct'} + names : array-like + List of names of the endogenous variables in order of appearance in `endog`. + dates + + Attributes + ---------- + aic + bic + bse + coefs : ndarray (p x K x K) + Estimated A_i matrices, A_i = coefs[i-1] + cov_params + dates + detomega + df_model : int + df_resid : int + endog + endog_lagged + fittedvalues + fpe + intercept + info_criteria + k_ar : int + k_trend : int + llf + model + names + neqs : int + Number of variables (equations) + nobs : int + n_totobs : int + params + k_ar : int + Order of VAR process + params : ndarray (Kp + 1) x K + A_i matrices and intercept in stacked form [int A_1 ... A_p] + pvalue + names : list + variables names + resid + sigma_u : ndarray (K x K) + Estimate of white noise process variance Var[u_t] + sigma_u_mle + stderr + trenorder + tvalues + y : + ys_lagged + """ + + _model_type = 'SVAR' + + y = deprecated_alias("y", "endog", remove_version="0.11.0") + ys_lagged = deprecated_alias("ys_lagged", "endog_lagged", + remove_version="0.11.0") + + def __init__(self, endog, endog_lagged, params, sigma_u, lag_order, + A=None, B=None, A_mask=None, B_mask=None, model=None, + trend='c', names=None, dates=None): + + self.model = model + self.endog = endog + self.endog_lagged = endog_lagged + self.dates = dates + + self.n_totobs, self.neqs = self.endog.shape + self.nobs = self.n_totobs - lag_order + k_trend = util.get_trendorder(trend) + if k_trend > 0: # make this the polynomial trend order + trendorder = k_trend - 1 + else: + trendorder = None + self.k_trend = k_trend + self.k_exog = k_trend # now (0.9) required by VARProcess + self.trendorder = trendorder + + self.exog_names = util.make_lag_names(names, lag_order, k_trend) + self.params = params + self.sigma_u = sigma_u + + # Each matrix needs to be transposed + reshaped = self.params[self.k_trend:] + reshaped = reshaped.reshape((lag_order, self.neqs, self.neqs)) + + # Need to transpose each coefficient matrix + intercept = self.params[0] + coefs = reshaped.swapaxes(1, 2).copy() + + #SVAR components + #TODO: if you define these here, you don't also have to define + #them in SVAR process, but I left them for now -ss + self.A = A + self.B = B + self.A_mask = A_mask + self.B_mask = B_mask + + super(SVARResults, self).__init__(coefs, intercept, sigma_u, A, B, + names=names) + + def irf(self, periods=10, var_order=None): + """ + Analyze structural impulse responses to shocks in system + + Parameters + ---------- + periods : int + + Returns + ------- + irf : IRAnalysis + """ + A = self.A + B= self.B + P = np.dot(npl.inv(A), B) + + return IRAnalysis(self, P=P, periods=periods, svar=True) + + @deprecate_kwarg('T', 'steps') + def sirf_errband_mc(self, orth=False, repl=1000, steps=10, + signif=0.05, seed=None, burn=100, cum=False): + """ + Compute Monte Carlo integrated error bands assuming normally + distributed for impulse response functions + + Parameters + ---------- + orth: bool, default False + Compute orthogonalized impulse response error bands + repl: int + number of Monte Carlo replications to perform + steps: int, default 10 + number of impulse response periods + signif: float (0 < signif <1) + Significance level for error bars, defaults to 95% CI + seed: int + np.random.seed for replications + burn: int + number of initial observations to discard for simulation + cum: bool, default False + produce cumulative irf error bands + + Notes + ----- + Lütkepohl (2005) Appendix D + + Returns + ------- + Tuple of lower and upper arrays of ma_rep monte carlo standard errors + + """ + neqs = self.neqs + mean = self.mean() + k_ar = self.k_ar + coefs = self.coefs + sigma_u = self.sigma_u + intercept = self.intercept + df_model = self.df_model + nobs = self.nobs + + ma_coll = np.zeros((repl, steps + 1, neqs, neqs)) + A = self.A + B = self.B + A_mask = self.A_mask + B_mask = self.B_mask + A_pass = self.model.A_original + B_pass = self.model.B_original + s_type = self.model.svar_type + + g_list = [] + + def agg(impulses): + if cum: + return impulses.cumsum(axis=0) + return impulses + + opt_A = A[A_mask] + opt_B = B[B_mask] + for i in range(repl): + # discard first hundred to correct for starting bias + sim = util.varsim(coefs, intercept, sigma_u, seed=seed, + steps=nobs + burn) + sim = sim[burn:] + + smod = SVAR(sim, svar_type=s_type, A=A_pass, B=B_pass) + if i == 10: + # Use first 10 to update starting val for remainder of fits + mean_AB = np.mean(g_list, axis=0) + split = len(A[A_mask]) + opt_A = mean_AB[:split] + opt_B = mean_AB[split:] + + sres = smod.fit(maxlags=k_ar, A_guess=opt_A, B_guess=opt_B) + + if i < 10: + # save estimates for starting val if in first 10 + g_list.append(np.append(sres.A[A_mask].tolist(), + sres.B[B_mask].tolist())) + ma_coll[i] = agg(sres.svar_ma_rep(maxn=steps)) + + ma_sort = np.sort(ma_coll, axis=0) # sort to get quantiles + index = (int(round(signif / 2 * repl) - 1), + int(round((1 - signif / 2) * repl) - 1)) + lower = ma_sort[index[0], :, :, :] + upper = ma_sort[index[1], :, :, :] + return lower, upper diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/__init__.py b/statsmodels/tsa/vector_ar/tests/JMulTi_results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c.txt new file mode 100755 index 0000000..05baa0b --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c.txt @@ -0,0 +1,89 @@ +*** Sat, 3 Sep 2016 22:23:21 *** +VAR ESTIMATION RESULTS +endogenous variables: realcons realgdp realinv +exogenous variables: +deterministic variables: CONST +endogenous lags: 4 +exogenous lags: 0 +sample range: [1960 Q1, 2009 Q3], T = 199 + +modulus of the eigenvalues of the reverse characteristic polynomial : +|z| = ( 1.5287 1.5287 2.1209 2.1209 4.1522 4.1522 1.5245 1.5245 1.0538 1.0538 1.3179 0.9958 ) +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + realcons realgdp realinv +------------------------------------------- +realcons(t-1)| 1.399 1.268 0.936 + | (0.112) (0.192) (0.138) + | {0.000} {0.000} {0.000} + | [12.442] [6.610] [6.765] +realgdp (t-1)| -0.238 0.566 -0.153 + | (0.089) (0.152) (0.109) + | {0.007} {0.000} {0.160} + | [-2.680] [3.735] [-1.404] +realinv (t-1)| 0.285 0.324 1.159 + | (0.104) (0.177) (0.128) + | {0.006} {0.068} {0.000} + | [2.740] [1.827] [9.061] +realcons(t-2)| -0.070 -0.617 -0.613 + | (0.189) (0.322) (0.232) + | {0.711} {0.055} {0.008} + | [-0.371] [-1.915] [-2.642] +realgdp (t-2)| 0.016 0.343 0.180 + | (0.127) (0.216) (0.156) + | {0.901} {0.112} {0.249} + | [0.125] [1.587] [1.153] +realinv (t-2)| -0.107 -0.424 -0.312 + | (0.163) (0.278) (0.200) + | {0.510} {0.127} {0.120} + | [-0.659] [-1.525] [-1.555] +realcons(t-3)| 0.100 -0.116 -0.145 + | (0.193) (0.329) (0.237) + | {0.605} {0.725} {0.539} + | [0.518] [-0.352] [-0.614] +realgdp (t-3)| 0.012 -0.164 -0.208 + | (0.126) (0.215) (0.155) + | {0.922} {0.445} {0.179} + | [0.099] [-0.764] [-1.343] +realinv (t-3)| -0.072 0.109 0.243 + | (0.160) (0.273) (0.197) + | {0.653} {0.691} {0.218} + | [-0.450] [0.398] [1.231] +realcons(t-4)| -0.446 -0.444 -0.117 + | (0.129) (0.219) (0.158) + | {0.001} {0.043} {0.460} + | [-3.470] [-2.025] [-0.739] +realgdp (t-4)| 0.225 0.206 0.153 + | (0.092) (0.157) (0.113) + | {0.014} {0.189} {0.176} + | [2.451] [1.314] [1.353] +realinv (t-4)| -0.113 -0.119 -0.196 + | (0.110) (0.187) (0.135) + | {0.303} {0.525} {0.146} + | [-1.029] [-0.636] [-1.453] +------------------------------------------- + + +Deterministic term: +=================== + realcons realgdp realinv +--------------------------------------- +CONST | 3.263 17.568 -7.535 + | (10.803) (18.426) (13.283) + | {0.763} {0.340} {0.571} + | [0.302] [0.953] [-0.567] +--------------------------------------- + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_Sigmau.txt new file mode 100755 index 0000000..8dfe18e --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_Sigmau.txt @@ -0,0 +1,20 @@ +*** Sat, 3 Sep 2016 22:23:21 *** +VAR MODEL STATISTICS +sample range: [1960 Q1, 2009 Q3], T = 199 + +Log Likelihood: -2.781153e+03 +Determinant (Cov): 3.184027e+08 + +Covariance: 7.223846e+02 6.705143e+02 -3.969719e-01 + 6.705143e+02 2.101811e+03 1.037008e+03 + -3.969719e-01 1.037008e+03 1.092267e+03 + +Correlation: 1.000000e+00 5.441604e-01 -4.469009e-04 + 5.441604e-01 1.000000e+00 6.844175e-01 + -4.469009e-04 6.844175e-01 1.000000e+00 + +AIC: 1.997079e+01 +FPE: 4.714607e+08 +SC: 2.061621e+01 +HQ: 2.023201e+01 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_diag.txt new file mode 100755 index 0000000..e5256f9 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_diag.txt @@ -0,0 +1,65 @@ +*** Fri, 7 Oct 2016 13:04:15 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 150. +tested order: 16 +test statistic: 110.1008 + p-value: 0.4257 +adjusted test statistic: 115.6053 + p-value: 0.2908 +degrees of freedom: 108.0000 + +*** Fri, 7 Oct 2016 13:04:15 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags +Reference: Doornik (1996), LM test and LMF test (with F-approximation) +LM statistic: 49.5891 + p-value: 0.2953 + df: 45.0000 +LMF statistic: 1.0343 + p-value: 0.4149 + df1: 45.0000 + df2: 502.0000 + +*** Fri, 7 Oct 2016 13:04:15 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 84.2158 + p-value: 0.0000 +degrees of freedom: 6.0000 +skewness only: 10.2312 + p-value: 0.0167 +kurtosis only: 73.9847 + p-value: 0.0000 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 41.7946 + p-value: 0.0000 +degrees of freedom: 6.0000 +skewness only: 3.0251 + p-value: 0.3878 +kurtosis only: 38.7696 + p-value: 0.0000 + +*** Fri, 7 Oct 2016 13:04:15 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 19.4703 0.0001 -0.2678 4.4358 +u2 5.6573 0.0591 0.2730 3.6199 +u3 52.1664 0.0000 -0.3199 5.4253 + +*** Fri, 7 Oct 2016 13:04:15 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 9.6251 0.8855 0.6350 0.8521 +u2 24.1933 0.0854 1.7424 0.0434 +u3 19.1173 0.2626 1.3342 0.1819 + +*** Fri, 7 Oct 2016 13:04:15 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 277.2551 + p-value(chi^2): 0.0000 + degrees of freedom: 180.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_fc5.txt new file mode 100755 index 0000000..c0d36b5 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_fc5.txt @@ -0,0 +1,31 @@ +*** Sat, 3 Sep 2016 22:43:26 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + realcons +time forecast lower CI upper CI +/- +2009 Q4 9306.8633 9254.1849 9359.5416 52.6784 +2010 Q1 9337.0637 9254.9076 9419.2198 82.1561 +2010 Q2 9382.3601 9270.0264 9494.6937 112.3336 +2010 Q3 9417.3212 9269.3713 9565.2711 147.9499 +2010 Q4 9451.9627 9272.1622 9631.7632 179.8005 + + realgdp +time forecast lower CI upper CI +/- +2009 Q4 13125.8383 13035.9827 13215.6938 89.8556 +2010 Q1 13239.5173 13095.5534 13383.4812 143.9639 +2010 Q2 13351.9136 13150.7526 13553.0747 201.1610 +2010 Q3 13448.5115 13193.1668 13703.8561 255.3446 +2010 Q4 13534.5814 13227.7124 13841.4505 306.8690 + + realinv +time forecast lower CI upper CI +/- +2009 Q4 1535.2526 1470.4769 1600.0284 64.7757 +2010 Q1 1591.4234 1489.9846 1692.8621 101.4387 +2010 Q2 1642.9390 1505.1358 1780.7421 137.8032 +2010 Q3 1688.4049 1517.0684 1859.7415 171.3366 +2010 Q4 1726.1592 1520.8135 1931.5049 205.3457 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realcons.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realcons.txt new file mode 100755 index 0000000..9195326 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realcons.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:23:44 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons" do not Granger-cause "realgdp, realinv" + +Test statistic l = 11.1446 +pval-F( l; 8, 558) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons" and "realgdp, realinv" + +Test statistic: c = 71.2453 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realcons_realgdp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realcons_realgdp.txt new file mode 100755 index 0000000..9f229e1 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realcons_realgdp.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:24:00 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons, realgdp" do not Granger-cause "realinv" + +Test statistic l = 16.6303 +pval-F( l; 8, 558) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons, realgdp" and "realinv" + +Test statistic: c = 79.5492 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realcons_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realcons_realinv.txt new file mode 100755 index 0000000..58caf2b --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realcons_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:24:15 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons, realinv" do not Granger-cause "realgdp" + +Test statistic l = 10.6974 +pval-F( l; 8, 558) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons, realinv" and "realgdp" + +Test statistic: c = 86.2439 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realgdp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realgdp.txt new file mode 100755 index 0000000..d4789c7 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realgdp.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:24:41 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realgdp" do not Granger-cause "realcons, realinv" + +Test statistic l = 3.7090 +pval-F( l; 8, 558) = 0.0003 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realgdp" and "realcons, realinv" + +Test statistic: c = 86.2439 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realgdp_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realgdp_realinv.txt new file mode 100755 index 0000000..d2a1f34 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realgdp_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:24:28 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realgdp, realinv" do not Granger-cause "realcons" + +Test statistic l = 3.4756 +pval-F( l; 8, 558) = 0.0006 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realgdp, realinv" and "realcons" + +Test statistic: c = 71.2453 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realinv.txt new file mode 100755 index 0000000..9765906 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_granger_causality_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:24:52 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realinv" do not Granger-cause "realcons, realgdp" + +Test statistic l = 3.6508 +pval-F( l; 8, 558) = 0.0004 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realinv" and "realcons, realgdp" + +Test statistic: c = 79.5492 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_ir.txt new file mode 100755 index 0000000..aa7a514 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_ir.txt @@ -0,0 +1,29 @@ +*** Sat, 3 Sep 2016 22:25:11 *** +VAR Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time realcons realgdp realinv realcons realgdp realinv realcons realgdp realinv + ->realcons ->realcons ->realcons ->realgdp ->realgdp ->realgdp ->realinv ->realinv ->realinv + + point estimate 1.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 1.0000 + 1 point estimate 1.3995 -0.2382 0.2850 1.2682 0.5662 0.3242 0.9357 -0.1534 1.1587 + 2 point estimate 1.8530 -0.4960 0.5444 2.1793 0.3123 0.4967 1.5857 -0.3076 1.2481 + 3 point estimate 2.4475 -0.8017 0.7879 3.1582 -0.3098 0.9294 2.1697 -0.7807 1.6445 + 4 point estimate 2.6677 -0.9784 1.0217 3.8166 -0.7777 1.2851 2.7240 -1.1184 1.8430 + 5 point estimate 2.8997 -1.1401 1.2175 4.2116 -1.1114 1.5505 2.9670 -1.3359 1.9754 + 6 point estimate 3.0939 -1.2365 1.3481 4.4067 -1.3180 1.7394 3.0262 -1.4779 2.0793 + 7 point estimate 3.1796 -1.2828 1.4493 4.4671 -1.4016 1.8301 3.0309 -1.5197 2.0796 + 8 point estimate 3.2676 -1.3138 1.5188 4.4403 -1.4003 1.8442 2.9141 -1.4769 2.0188 + 9 point estimate 3.3340 -1.3194 1.5552 4.3663 -1.3489 1.8064 2.7534 -1.3972 1.9241 + 10 point estimate 3.3643 -1.3092 1.5737 4.2700 -1.2680 1.7302 2.5898 -1.2905 1.7928 + 11 point estimate 3.3861 -1.2909 1.5742 4.1580 -1.1711 1.6295 2.4022 -1.1665 1.6442 + 12 point estimate 3.3890 -1.2603 1.5571 4.0354 -1.0667 1.5139 2.2127 -1.0405 1.4894 + 13 point estimate 3.3706 -1.2200 1.5273 3.9047 -0.9577 1.3882 2.0279 -0.9139 1.3294 + 14 point estimate 3.3391 -1.1719 1.4849 3.7655 -0.8455 1.2558 1.8402 -0.7880 1.1702 + 15 point estimate 3.2924 -1.1151 1.4307 3.6195 -0.7310 1.1192 1.6563 -0.6661 1.0143 + 16 point estimate 3.2319 -1.0515 1.3672 3.4687 -0.6151 0.9798 1.4776 -0.5479 0.8622 + 17 point estimate 3.1613 -0.9821 1.2951 3.3146 -0.4986 0.8392 1.3033 -0.4340 0.7158 + 18 point estimate 3.0813 -0.9078 1.2157 3.1596 -0.3826 0.6987 1.1361 -0.3256 0.5759 + 19 point estimate 2.9934 -0.8298 1.1307 3.0054 -0.2683 0.5596 0.9772 -0.2232 0.4430 + 20 point estimate 2.8997 -0.7492 1.0411 2.8538 -0.1566 0.4231 0.8269 -0.1271 0.3180 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_lagorder.txt new file mode 100755 index 0000000..efb5ea9 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_c_lagorder.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:23:07 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: realcons realgdp realinv +deterministic variables: CONST +sample range: [1961 Q3, 2009 Q3], T = 193 + +optimal number of lags (searched up to 10 lags of levels): +Akaike Info Criterion: 4 +Final Prediction Error: 4 +Hannan-Quinn Criterion: 2 +Schwarz Criterion: 2 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs.txt new file mode 100755 index 0000000..0105ce1 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs.txt @@ -0,0 +1,101 @@ +*** Sat, 3 Sep 2016 22:25:42 *** +VAR ESTIMATION RESULTS +endogenous variables: realcons realgdp realinv +exogenous variables: +deterministic variables: CONST S1 S2 S3 +endogenous lags: 4 +exogenous lags: 0 +sample range: [1960 Q1, 2009 Q3], T = 199 + +modulus of the eigenvalues of the reverse characteristic polynomial : +|z| = ( 1.4992 1.4992 2.0185 2.0185 3.5410 6.3965 1.5057 1.5057 1.0509 1.0509 1.3257 0.9958 ) +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + realcons realgdp realinv +------------------------------------------- +realcons(t-1)| 1.436 1.305 0.953 + | (0.114) (0.195) (0.141) + | {0.000} {0.000} {0.000} + | [12.621] [6.693] [6.758] +realgdp (t-1)| -0.266 0.543 -0.164 + | (0.090) (0.154) (0.111) + | {0.003} {0.000} {0.142} + | [-2.954] [3.525] [-1.469] +realinv (t-1)| 0.308 0.345 1.169 + | (0.104) (0.179) (0.129) + | {0.003} {0.053} {0.000} + | [2.953] [1.932] [9.038] +realcons(t-2)| -0.138 -0.686 -0.649 + | (0.193) (0.330) (0.239) + | {0.474} {0.037} {0.006} + | [-0.717] [-2.082] [-2.722] +realgdp (t-2)| 0.058 0.400 0.208 + | (0.129) (0.221) (0.160) + | {0.650} {0.071} {0.193} + | [0.453] [1.809] [1.300] +realinv (t-2)| -0.154 -0.470 -0.335 + | (0.164) (0.282) (0.204) + | {0.349} {0.095} {0.100} + | [-0.936] [-1.669] [-1.644] +realcons(t-3)| 0.160 -0.107 -0.139 + | (0.197) (0.337) (0.244) + | {0.416} {0.750} {0.569} + | [0.814] [-0.318] [-0.570] +realgdp (t-3)| -0.011 -0.179 -0.218 + | (0.128) (0.219) (0.159) + | {0.930} {0.415} {0.170} + | [-0.087] [-0.815] [-1.371] +realinv (t-3)| -0.041 0.123 0.252 + | (0.162) (0.277) (0.200) + | {0.799} {0.656} {0.209} + | [-0.255] [0.445] [1.256] +realcons(t-4)| -0.474 -0.419 -0.105 + | (0.130) (0.223) (0.161) + | {0.000} {0.060} {0.515} + | [-3.649] [-1.884] [-0.651] +realgdp (t-4)| 0.233 0.188 0.145 + | (0.093) (0.159) (0.115) + | {0.012} {0.238} {0.208} + | [2.507] [1.179] [1.258] +realinv (t-4)| -0.121 -0.108 -0.191 + | (0.110) (0.189) (0.136) + | {0.271} {0.567} {0.161} + | [-1.101] [-0.572] [-1.403] +------------------------------------------- + + +Deterministic term: +=================== + realcons realgdp realinv +--------------------------------------- +CONST | 0.514 8.866 -12.124 + | (11.320) (19.393) (14.032) + | {0.964} {0.648} {0.388} + | [0.045] [0.457] [-0.864] +S1 (t)| 4.472 7.218 4.147 + | (5.541) (9.493) (6.869) + | {0.420} {0.447} {0.546} + | [0.807] [0.760] [0.604] +S2 (t)| -1.636 13.947 7.368 + | (5.458) (9.350) (6.766) + | {0.764} {0.136} {0.276} + | [-0.300] [1.492] [1.089] +S3 (t)| 8.790 12.807 6.307 + | (5.523) (9.462) (6.846) + | {0.112} {0.176} {0.357} + | [1.591] [1.354] [0.921] +--------------------------------------- + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_Sigmau.txt new file mode 100755 index 0000000..765b9ff --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_Sigmau.txt @@ -0,0 +1,20 @@ +*** Sat, 3 Sep 2016 22:25:42 *** +VAR MODEL STATISTICS +sample range: [1960 Q1, 2009 Q3], T = 199 + +Log Likelihood: -2.774606e+03 +Determinant (Cov): 2.980264e+08 + +Covariance: 7.170910e+02 6.757978e+02 -2.843256e+00 + 6.757978e+02 2.104500e+03 1.037849e+03 + -2.843256e+00 1.037849e+03 1.101882e+03 + +Correlation: 1.000000e+00 5.501171e-01 -3.198611e-03 + 5.501171e-01 1.000000e+00 6.815414e-01 + -3.198611e-03 6.815414e-01 1.000000e+00 + +AIC: 1.999510e+01 +FPE: 4.833001e+08 +SC: 2.078947e+01 +HQ: 2.031660e+01 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_diag.txt new file mode 100755 index 0000000..540ecb9 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_diag.txt @@ -0,0 +1,65 @@ +*** Fri, 7 Oct 2016 13:04:33 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 150. +tested order: 16 +test statistic: 113.6746 + p-value: 0.3355 +adjusted test statistic: 119.4159 + p-value: 0.2130 +degrees of freedom: 108.0000 + +*** Fri, 7 Oct 2016 13:04:33 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags +Reference: Doornik (1996), LM test and LMF test (with F-approximation) +LM statistic: 50.4880 + p-value: 0.2656 + df: 45.0000 +LMF statistic: 1.0343 + p-value: 0.4149 + df1: 45.0000 + df2: 493.0000 + +*** Fri, 7 Oct 2016 13:04:33 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 84.2349 + p-value: 0.0000 +degrees of freedom: 6.0000 +skewness only: 10.1638 + p-value: 0.0172 +kurtosis only: 74.0711 + p-value: 0.0000 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 36.3134 + p-value: 0.0000 +degrees of freedom: 6.0000 +skewness only: 2.2185 + p-value: 0.5283 +kurtosis only: 34.0949 + p-value: 0.0000 + +*** Fri, 7 Oct 2016 13:04:33 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 13.5542 0.0011 -0.2252 4.1966 +u2 5.9071 0.0522 0.3103 3.5722 +u3 51.1882 0.0000 -0.3042 5.4090 + +*** Fri, 7 Oct 2016 13:04:33 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 8.2029 0.9426 0.5367 0.9244 +u2 26.2402 0.0507 1.9145 0.0222 +u3 19.1961 0.2586 1.3404 0.1784 + +*** Fri, 7 Oct 2016 13:04:33 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 274.5865 + p-value(chi^2): 0.0000 + degrees of freedom: 180.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_fc5.txt new file mode 100755 index 0000000..9c495f2 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_fc5.txt @@ -0,0 +1,31 @@ +*** Sat, 3 Sep 2016 22:41:18 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + realcons +time forecast lower CI upper CI +/- +2009 Q4 9306.9285 9254.4435 9359.4135 52.4850 +2010 Q1 9336.1807 9253.9213 9418.4401 82.2594 +2010 Q2 9377.4893 9265.4763 9489.5023 112.0130 +2010 Q3 9416.8644 9269.3094 9564.4193 147.5549 +2010 Q4 9446.9244 9267.4228 9626.4261 179.5017 + + realgdp +time forecast lower CI upper CI +/- +2009 Q4 13118.7690 13028.8560 13208.6820 89.9130 +2010 Q1 13232.9915 13088.6807 13377.3023 144.3108 +2010 Q2 13350.0139 13147.8661 13552.1617 202.1478 +2010 Q3 13446.4530 13190.4794 13702.4266 255.9736 +2010 Q4 13527.0975 13219.5730 13834.6220 307.5245 + + realinv +time forecast lower CI upper CI +/- +2009 Q4 1531.5958 1466.5355 1596.6560 65.0602 +2010 Q1 1587.9116 1486.0592 1689.7640 101.8524 +2010 Q2 1641.5994 1503.0576 1780.1413 138.5419 +2010 Q3 1685.8940 1514.0876 1857.7004 171.8064 +2010 Q4 1722.4866 1516.8585 1928.1147 205.6281 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realcons.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realcons.txt new file mode 100755 index 0000000..1abb4fb --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realcons.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:26:39 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons" do not Granger-cause "realgdp, realinv" + +Test statistic l = 10.9780 +pval-F( l; 8, 549) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons" and "realgdp, realinv" + +Test statistic: c = 72.2185 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realcons_realgdp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realcons_realgdp.txt new file mode 100755 index 0000000..b539461 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realcons_realgdp.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:28:25 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons, realgdp" do not Granger-cause "realinv" + +Test statistic l = 16.5166 +pval-F( l; 8, 549) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons, realgdp" and "realinv" + +Test statistic: c = 79.8044 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realcons_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realcons_realinv.txt new file mode 100755 index 0000000..b8d26bc --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realcons_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:28:41 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons, realinv" do not Granger-cause "realgdp" + +Test statistic l = 10.6470 +pval-F( l; 8, 549) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons, realinv" and "realgdp" + +Test statistic: c = 86.5410 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realgdp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realgdp.txt new file mode 100755 index 0000000..380187a --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realgdp.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:29:17 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realgdp" do not Granger-cause "realcons, realinv" + +Test statistic l = 3.9150 +pval-F( l; 8, 549) = 0.0002 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realgdp" and "realcons, realinv" + +Test statistic: c = 86.5410 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realgdp_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realgdp_realinv.txt new file mode 100755 index 0000000..1938213 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realgdp_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:29:07 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realgdp, realinv" do not Granger-cause "realcons" + +Test statistic l = 3.6527 +pval-F( l; 8, 549) = 0.0004 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realgdp, realinv" and "realcons" + +Test statistic: c = 72.2185 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realinv.txt new file mode 100755 index 0000000..6bfc980 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_granger_causality_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:29:28 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realinv" do not Granger-cause "realcons, realgdp" + +Test statistic l = 3.7582 +pval-F( l; 8, 549) = 0.0003 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realinv" and "realcons, realgdp" + +Test statistic: c = 79.8044 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_ir.txt new file mode 100755 index 0000000..aeded90 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_ir.txt @@ -0,0 +1,29 @@ +*** Sat, 3 Sep 2016 22:29:38 *** +VAR Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time realcons realgdp realinv realcons realgdp realinv realcons realgdp realinv + ->realcons ->realcons ->realcons ->realgdp ->realgdp ->realgdp ->realinv ->realinv ->realinv + + point estimate 1.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 1.0000 + 1 point estimate 1.4362 -0.2655 0.3080 1.3048 0.5429 0.3453 0.9532 -0.1638 1.1688 + 2 point estimate 1.8720 -0.5175 0.5569 2.2251 0.2914 0.5228 1.6201 -0.3255 1.2682 + 3 point estimate 2.4885 -0.8385 0.8084 3.1902 -0.3321 0.9487 2.1939 -0.7989 1.6595 + 4 point estimate 2.7272 -1.0326 1.0551 3.8899 -0.8266 1.3147 2.7696 -1.1506 1.8618 + 5 point estimate 2.9583 -1.1993 1.2523 4.3027 -1.1807 1.5901 3.0313 -1.3862 2.0049 + 6 point estimate 3.1720 -1.3097 1.3934 4.5141 -1.4074 1.7914 3.0963 -1.5393 2.1146 + 7 point estimate 3.2644 -1.3635 1.5028 4.5944 -1.5093 1.8953 3.1142 -1.5929 2.1230 + 8 point estimate 3.3558 -1.3982 1.5768 4.5747 -1.5173 1.9202 3.0035 -1.5572 2.0708 + 9 point estimate 3.4315 -1.4089 1.6192 4.5049 -1.4709 1.8907 2.8413 -1.4782 1.9799 + 10 point estimate 3.4651 -1.4007 1.6419 4.4121 -1.3910 1.8197 2.6788 -1.3706 1.8511 + 11 point estimate 3.4906 -1.3836 1.6451 4.3005 -1.2921 1.7221 2.4891 -1.2431 1.7038 + 12 point estimate 3.4984 -1.3542 1.6307 4.1782 -1.1847 1.6078 2.2959 -1.1120 1.5479 + 13 point estimate 3.4824 -1.3140 1.6026 4.0479 -1.0721 1.4820 2.1089 -0.9802 1.3861 + 14 point estimate 3.4531 -1.2655 1.5611 3.9081 -0.9558 1.3487 1.9178 -0.8487 1.2243 + 15 point estimate 3.4081 -1.2079 1.5073 3.7609 -0.8371 1.2103 1.7296 -0.7210 1.0650 + 16 point estimate 3.3476 -1.1425 1.4433 3.6079 -0.7164 1.0684 1.5469 -0.5971 0.9092 + 17 point estimate 3.2763 -1.0708 1.3701 3.4504 -0.5947 0.9244 1.3673 -0.4774 0.7585 + 18 point estimate 3.1946 -0.9935 1.2889 3.2908 -0.4730 0.7799 1.1943 -0.3630 0.6140 + 19 point estimate 3.1040 -0.9118 1.2014 3.1310 -0.3524 0.6360 1.0292 -0.2543 0.4760 + 20 point estimate 3.0069 -0.8270 1.1086 2.9727 -0.2339 0.4939 0.8720 -0.1518 0.3456 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_lagorder.txt new file mode 100755 index 0000000..c86b943 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cs_lagorder.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:26:11 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: realcons realgdp realinv +deterministic variables: CONST S1 S2 S3 +sample range: [1961 Q3, 2009 Q3], T = 193 + +optimal number of lags (searched up to 10 lags of levels): +Akaike Info Criterion: 4 +Final Prediction Error: 4 +Hannan-Quinn Criterion: 2 +Schwarz Criterion: 2 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst.txt new file mode 100755 index 0000000..5caefa8 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst.txt @@ -0,0 +1,105 @@ +*** Sat, 3 Sep 2016 22:34:05 *** +VAR ESTIMATION RESULTS +endogenous variables: realcons realgdp realinv +exogenous variables: +deterministic variables: CONST S1 S2 S3 TREND +endogenous lags: 4 +exogenous lags: 0 +sample range: [1960 Q1, 2009 Q3], T = 199 + +modulus of the eigenvalues of the reverse characteristic polynomial : +|z| = ( 1.5030 1.5030 1.9859 1.9859 8.0600 3.3058 1.5023 1.5023 1.0605 1.0605 1.2661 1.0124 ) +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + realcons realgdp realinv +------------------------------------------- +realcons(t-1)| 1.426 1.290 0.956 + | (0.114) (0.196) (0.142) + | {0.000} {0.000} {0.000} + | [12.492] [6.592] [6.737] +realgdp (t-1)| -0.268 0.540 -0.163 + | (0.090) (0.154) (0.112) + | {0.003} {0.000} {0.145} + | [-2.982] [3.500] [-1.459] +realinv (t-1)| 0.309 0.347 1.168 + | (0.104) (0.179) (0.130) + | {0.003} {0.052} {0.000} + | [2.966] [1.940] [9.012] +realcons(t-2)| -0.134 -0.681 -0.650 + | (0.192) (0.330) (0.239) + | {0.485} {0.039} {0.007} + | [-0.698] [-2.065] [-2.718] +realgdp (t-2)| 0.054 0.394 0.209 + | (0.129) (0.221) (0.160) + | {0.675} {0.075} {0.192} + | [0.420] [1.779] [1.304] +realinv (t-2)| -0.150 -0.465 -0.336 + | (0.164) (0.282) (0.204) + | {0.362} {0.099} {0.100} + | [-0.912] [-1.648] [-1.644] +realcons(t-3)| 0.160 -0.107 -0.139 + | (0.197) (0.337) (0.245) + | {0.415} {0.751} {0.570} + | [0.815] [-0.317] [-0.568] +realgdp (t-3)| -0.014 -0.183 -0.217 + | (0.128) (0.220) (0.159) + | {0.913} {0.405} {0.173} + | [-0.110] [-0.832] [-1.362] +realinv (t-3)| -0.038 0.127 0.251 + | (0.162) (0.277) (0.201) + | {0.813} {0.645} {0.212} + | [-0.236] [0.460] [1.248] +realcons(t-4)| -0.449 -0.384 -0.112 + | (0.132) (0.226) (0.164) + | {0.001} {0.089} {0.495} + | [-3.402] [-1.698] [-0.683] +realgdp (t-4)| 0.218 0.167 0.149 + | (0.094) (0.161) (0.117) + | {0.020} {0.301} {0.201} + | [2.318] [1.034] [1.278] +realinv (t-4)| -0.104 -0.084 -0.196 + | (0.111) (0.191) (0.138) + | {0.352} {0.661} {0.155} + | [-0.931] [-0.438] [-1.421] +------------------------------------------- + + +Deterministic term: +=================== + realcons realgdp realinv +--------------------------------------- +CONST | 24.900 42.506 -18.948 + | (24.888) (42.686) (30.949) + | {0.317} {0.319} {0.540} + | [1.000] [0.996] [-0.612] +S1 (t)| 4.467 7.211 4.148 + | (5.538) (9.499) (6.887) + | {0.420} {0.448} {0.547} + | [0.807] [0.759] [0.602] +S2 (t)| -1.542 14.076 7.342 + | (5.455) (9.357) (6.784) + | {0.777} {0.132} {0.279} + | [-0.283] [1.504] [1.082] +S3 (t)| 8.801 12.824 6.303 + | (5.520) (9.467) (6.864) + | {0.111} {0.176} {0.358} + | [1.594] [1.355] [0.918] +TREND(t)| 0.386 0.532 -0.108 + | (0.351) (0.602) (0.436) + | {0.271} {0.376} {0.804} + | [1.100] [0.885] [-0.248] +--------------------------------------- + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_Sigmau.txt new file mode 100755 index 0000000..5b2c5eb --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_Sigmau.txt @@ -0,0 +1,20 @@ +*** Sat, 3 Sep 2016 22:34:05 *** +VAR MODEL STATISTICS +sample range: [1960 Q1, 2009 Q3], T = 199 + +Log Likelihood: -2.773442e+03 +Determinant (Cov): 2.945441e+08 + +Covariance: 7.162689e+02 6.729414e+02 -1.526202e+00 + 6.729414e+02 2.107000e+03 1.045390e+03 + -1.526202e+00 1.045390e+03 1.107563e+03 + +Correlation: 1.000000e+00 5.477809e-01 -1.713522e-03 + 5.477809e-01 1.000000e+00 6.843241e-01 + -1.713522e-03 6.843241e-01 1.000000e+00 + +AIC: 2.001350e+01 +FPE: 4.923766e+08 +SC: 2.085751e+01 +HQ: 2.035510e+01 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_diag.txt new file mode 100755 index 0000000..e7e1e0c --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_diag.txt @@ -0,0 +1,65 @@ +*** Fri, 7 Oct 2016 13:09:15 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 150. +tested order: 16 +test statistic: 111.6858 + p-value: 0.3847 +adjusted test statistic: 117.3291 + p-value: 0.2539 +degrees of freedom: 108.0000 + +*** Fri, 7 Oct 2016 13:09:15 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags +Reference: Doornik (1996), LM test and LMF test (with F-approximation) +LM statistic: 51.3776 + p-value: 0.2381 + df: 45.0000 +LMF statistic: 1.0489 + p-value: 0.3901 + df1: 45.0000 + df2: 490.0000 + +*** Fri, 7 Oct 2016 13:09:15 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 87.8036 + p-value: 0.0000 +degrees of freedom: 6.0000 +skewness only: 9.3168 + p-value: 0.0254 +kurtosis only: 78.4868 + p-value: 0.0000 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 40.2734 + p-value: 0.0000 +degrees of freedom: 6.0000 +skewness only: 3.1095 + p-value: 0.3751 +kurtosis only: 37.1639 + p-value: 0.0000 + +*** Fri, 7 Oct 2016 13:09:15 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 16.7497 0.0002 -0.2775 4.3084 +u2 4.6787 0.0964 0.2814 3.4976 +u3 52.6188 0.0000 -0.2999 5.4467 + +*** Fri, 7 Oct 2016 13:09:15 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 8.0644 0.9469 0.5273 0.9300 +u2 25.1012 0.0681 1.8182 0.0324 +u3 19.3453 0.2512 1.3520 0.1719 + +*** Fri, 7 Oct 2016 13:09:15 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 277.0829 + p-value(chi^2): 0.0000 + degrees of freedom: 180.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_fc5.txt new file mode 100755 index 0000000..b83d67f --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_fc5.txt @@ -0,0 +1,31 @@ +*** Sat, 3 Sep 2016 22:36:29 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + realcons +time forecast lower CI upper CI +/- +2009 Q4 9300.6496 9248.1947 9353.1045 52.4549 +2010 Q1 9321.5224 9239.7531 9403.2917 81.7693 +2010 Q2 9352.1985 9241.4242 9462.9729 110.7743 +2010 Q3 9380.6350 9235.4295 9525.8404 145.2055 +2010 Q4 9399.9545 9223.8058 9576.1033 176.1488 + + realgdp +time forecast lower CI upper CI +/- +2009 Q4 13110.1070 13020.1406 13200.0734 89.9664 +2010 Q1 13209.0014 13065.3335 13352.6692 143.6678 +2010 Q2 13303.1382 13103.1689 13503.1075 199.9693 +2010 Q3 13374.8516 13123.4596 13626.2435 251.3920 +2010 Q4 13430.1995 13129.9346 13730.4644 300.2649 + + realinv +time forecast lower CI upper CI +/- +2009 Q4 1533.3529 1468.1252 1598.5806 65.2277 +2010 Q1 1587.7720 1485.5726 1689.9714 102.1994 +2010 Q2 1636.0621 1497.1493 1774.9749 138.9128 +2010 Q3 1673.6534 1501.6651 1845.6417 171.9883 +2010 Q4 1703.1185 1497.8072 1908.4298 205.3113 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realcons.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realcons.txt new file mode 100755 index 0000000..8b6fa56 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realcons.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:34:46 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons" do not Granger-cause "realgdp, realinv" + +Test statistic l = 10.4761 +pval-F( l; 8, 546) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons" and "realgdp, realinv" + +Test statistic: c = 71.9870 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realcons_realgdp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realcons_realgdp.txt new file mode 100755 index 0000000..e74fe99 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realcons_realgdp.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:34:58 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons, realgdp" do not Granger-cause "realinv" + +Test statistic l = 15.6399 +pval-F( l; 8, 546) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons, realgdp" and "realinv" + +Test statistic: c = 79.9025 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realcons_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realcons_realinv.txt new file mode 100755 index 0000000..740add1 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realcons_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:35:08 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons, realinv" do not Granger-cause "realgdp" + +Test statistic l = 10.1078 +pval-F( l; 8, 546) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons, realinv" and "realgdp" + +Test statistic: c = 86.5484 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realgdp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realgdp.txt new file mode 100755 index 0000000..bcee77d --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realgdp.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:35:30 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realgdp" do not Granger-cause "realcons, realinv" + +Test statistic l = 3.3656 +pval-F( l; 8, 546) = 0.0009 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realgdp" and "realcons, realinv" + +Test statistic: c = 86.5484 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realgdp_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realgdp_realinv.txt new file mode 100755 index 0000000..2505a90 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realgdp_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:35:21 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realgdp, realinv" do not Granger-cause "realcons" + +Test statistic l = 3.3096 +pval-F( l; 8, 546) = 0.0011 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realgdp, realinv" and "realcons" + +Test statistic: c = 71.9870 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realinv.txt new file mode 100755 index 0000000..fa73c20 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_granger_causality_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:35:39 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realinv" do not Granger-cause "realcons, realgdp" + +Test statistic l = 2.7676 +pval-F( l; 8, 546) = 0.0053 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realinv" and "realcons, realgdp" + +Test statistic: c = 79.9025 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_ir.txt new file mode 100755 index 0000000..bcb0e5d --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_ir.txt @@ -0,0 +1,29 @@ +*** Sat, 3 Sep 2016 22:36:00 *** +VAR Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time realcons realgdp realinv realcons realgdp realinv realcons realgdp realinv + ->realcons ->realcons ->realcons ->realgdp ->realgdp ->realgdp ->realinv ->realinv ->realinv + + point estimate 1.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 1.0000 + 1 point estimate 1.4257 -0.2680 0.3092 1.2903 0.5395 0.3469 0.9562 -0.1631 1.1684 + 2 point estimate 1.8482 -0.5230 0.5594 2.1861 0.2823 0.5269 1.6196 -0.3257 1.2684 + 3 point estimate 2.4455 -0.8464 0.8125 3.1113 -0.3476 0.9565 2.1853 -0.8015 1.6605 + 4 point estimate 2.6811 -1.0539 1.0756 3.7901 -0.8631 1.3465 2.7449 -1.1520 1.8597 + 5 point estimate 2.9139 -1.2333 1.2913 4.1960 -1.2435 1.6579 2.9987 -1.3934 2.0092 + 6 point estimate 3.1347 -1.3590 1.4537 4.4207 -1.5050 1.9076 3.0667 -1.5558 2.1320 + 7 point estimate 3.2446 -1.4339 1.5901 4.5331 -1.6490 2.0681 3.0892 -1.6163 2.1521 + 8 point estimate 3.3565 -1.4908 1.6919 4.5587 -1.7052 2.1546 2.9911 -1.5916 2.1149 + 9 point estimate 3.4539 -1.5255 1.7629 4.5427 -1.7116 2.1897 2.8459 -1.5248 2.0397 + 10 point estimate 3.5112 -1.5430 1.8158 4.5064 -1.6865 2.1838 2.6991 -1.4285 1.9247 + 11 point estimate 3.5593 -1.5514 1.8489 4.4500 -1.6428 2.1504 2.5247 -1.3131 1.7907 + 12 point estimate 3.5881 -1.5474 1.8642 4.3794 -1.5891 2.0986 2.3445 -1.1929 1.6467 + 13 point estimate 3.5923 -1.5323 1.8657 4.2959 -1.5276 2.0325 2.1670 -1.0706 1.4952 + 14 point estimate 3.5816 -1.5080 1.8532 4.1980 -1.4594 1.9561 1.9829 -0.9476 1.3427 + 15 point estimate 3.5540 -1.4739 1.8280 4.0879 -1.3856 1.8716 1.7996 -0.8271 1.1919 + 16 point estimate 3.5100 -1.4316 1.7922 3.9679 -1.3069 1.7806 1.6200 -0.7095 1.0436 + 17 point estimate 3.4543 -1.3825 1.7467 3.8397 -1.2243 1.6848 1.4427 -0.5955 0.9002 + 18 point estimate 3.3873 -1.3273 1.6928 3.7062 -1.1392 1.5857 1.2714 -0.4866 0.7627 + 19 point estimate 3.3106 -1.2675 1.6321 3.5694 -1.0531 1.4847 1.1078 -0.3833 0.6318 + 20 point estimate 3.2265 -1.2041 1.5658 3.4313 -0.9671 1.3833 0.9521 -0.2865 0.5086 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_lagorder.txt new file mode 100755 index 0000000..ea14d63 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_cst_lagorder.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:33:45 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: realcons realgdp realinv +deterministic variables: CONST S1 S2 S3 TREND +sample range: [1961 Q3, 2009 Q3], T = 193 + +optimal number of lags (searched up to 10 lags of levels): +Akaike Info Criterion: 4 +Final Prediction Error: 4 +Hannan-Quinn Criterion: 2 +Schwarz Criterion: 2 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct.txt new file mode 100755 index 0000000..d4d2e02 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct.txt @@ -0,0 +1,93 @@ +*** Sat, 3 Sep 2016 22:31:19 *** +VAR ESTIMATION RESULTS +endogenous variables: realcons realgdp realinv +exogenous variables: +deterministic variables: CONST TREND +endogenous lags: 4 +exogenous lags: 0 +sample range: [1960 Q1, 2009 Q3], T = 199 + +modulus of the eigenvalues of the reverse characteristic polynomial : +|z| = ( 1.5310 1.5310 2.0836 2.0836 4.4365 4.4365 1.5170 1.5170 1.0625 1.0625 1.2673 1.0127 ) +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + realcons realgdp realinv +------------------------------------------- +realcons(t-1)| 1.389 1.254 0.939 + | (0.113) (0.193) (0.139) + | {0.000} {0.000} {0.000} + | [12.311] [6.508] [6.746] +realgdp (t-1)| -0.241 0.563 -0.153 + | (0.089) (0.152) (0.110) + | {0.007} {0.000} {0.164} + | [-2.710] [3.708] [-1.393] +realinv (t-1)| 0.286 0.326 1.158 + | (0.104) (0.178) (0.128) + | {0.006} {0.066} {0.000} + | [2.754] [1.835] [9.035] +realcons(t-2)| -0.066 -0.612 -0.614 + | (0.189) (0.322) (0.233) + | {0.725} {0.058} {0.008} + | [-0.352] [-1.899] [-2.640] +realgdp (t-2)| 0.011 0.338 0.181 + | (0.127) (0.217) (0.156) + | {0.929} {0.119} {0.247} + | [0.090] [1.558] [1.158] +realinv (t-2)| -0.103 -0.419 -0.313 + | (0.163) (0.278) (0.201) + | {0.525} {0.132} {0.120} + | [-0.635] [-1.505] [-1.557] +realcons(t-3)| 0.101 -0.115 -0.146 + | (0.193) (0.329) (0.238) + | {0.602} {0.728} {0.540} + | [0.522] [-0.348] [-0.613] +realgdp (t-3)| 0.009 -0.168 -0.207 + | (0.126) (0.215) (0.155) + | {0.941} {0.434} {0.182} + | [0.074] [-0.783] [-1.334] +realinv (t-3)| -0.069 0.113 0.242 + | (0.160) (0.273) (0.197) + | {0.668} {0.679} {0.221} + | [-0.429] [0.414] [1.223] +realcons(t-4)| -0.420 -0.410 -0.124 + | (0.130) (0.223) (0.161) + | {0.001} {0.066} {0.440} + | [-3.223] [-1.841] [-0.772] +realgdp (t-4)| 0.210 0.186 0.157 + | (0.093) (0.159) (0.115) + | {0.024} {0.242} {0.169} + | [2.259] [1.170] [1.374] +realinv (t-4)| -0.095 -0.095 -0.201 + | (0.111) (0.189) (0.137) + | {0.391} {0.614} {0.141} + | [-0.859] [-0.505] [-1.473] +------------------------------------------- + + +Deterministic term: +=================== + realcons realgdp realinv +--------------------------------------- +CONST | 28.164 50.455 -14.771 + | (24.747) (42.269) (30.527) + | {0.255} {0.233} {0.628} + | [1.138] [1.194] [-0.484] +TREND(t)| 0.394 0.520 -0.114 + | (0.352) (0.601) (0.434) + | {0.263} {0.387} {0.792} + | [1.118] [0.865] [-0.263] +--------------------------------------- + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_Sigmau.txt new file mode 100755 index 0000000..2d4d128 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_Sigmau.txt @@ -0,0 +1,20 @@ +*** Sat, 3 Sep 2016 22:31:19 *** +VAR MODEL STATISTICS +sample range: [1960 Q1, 2009 Q3], T = 199 + +Log Likelihood: -2.780012e+03 +Determinant (Cov): 3.147519e+08 + +Covariance: 7.214135e+02 6.676988e+02 1.017747e+00 + 6.676988e+02 2.104667e+03 1.044485e+03 + 1.017747e+00 1.044485e+03 1.097759e+03 + +Correlation: 1.000000e+00 5.418721e-01 1.143653e-03 + 5.418721e-01 1.000000e+00 6.871588e-01 + 1.143653e-03 6.871588e-01 1.000000e+00 + +AIC: 1.998941e+01 +FPE: 4.803878e+08 +SC: 2.068448e+01 +HQ: 2.027072e+01 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_diag.txt new file mode 100755 index 0000000..799fb88 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_diag.txt @@ -0,0 +1,65 @@ +*** Fri, 7 Oct 2016 13:04:53 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 150. +tested order: 16 +test statistic: 108.1183 + p-value: 0.4787 +adjusted test statistic: 113.5296 + p-value: 0.3390 +degrees of freedom: 108.0000 + +*** Fri, 7 Oct 2016 13:04:53 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags +Reference: Doornik (1996), LM test and LMF test (with F-approximation) +LM statistic: 50.1452 + p-value: 0.2767 + df: 45.0000 +LMF statistic: 1.0420 + p-value: 0.4016 + df1: 45.0000 + df2: 499.0000 + +*** Fri, 7 Oct 2016 13:04:53 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 87.7787 + p-value: 0.0000 +degrees of freedom: 6.0000 +skewness only: 9.5406 + p-value: 0.0229 +kurtosis only: 78.2381 + p-value: 0.0000 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 47.1375 + p-value: 0.0000 +degrees of freedom: 6.0000 +skewness only: 4.1429 + p-value: 0.2464 +kurtosis only: 42.9945 + p-value: 0.0000 + +*** Fri, 7 Oct 2016 13:04:53 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 24.0615 0.0000 -0.3235 4.5759 +u2 4.3888 0.1114 0.2430 3.5413 +u3 53.4128 0.0000 -0.3149 5.4587 + +*** Fri, 7 Oct 2016 13:04:53 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 9.5118 0.8909 0.6271 0.8588 +u2 23.3007 0.1059 1.6688 0.0572 +u3 19.2513 0.2558 1.3447 0.1759 + +*** Fri, 7 Oct 2016 13:04:53 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 280.5029 + p-value(chi^2): 0.0000 + degrees of freedom: 180.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_fc5.txt new file mode 100755 index 0000000..f93df4e --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_fc5.txt @@ -0,0 +1,31 @@ +*** Sat, 3 Sep 2016 22:40:54 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + realcons +time forecast lower CI upper CI +/- +2009 Q4 9300.5029 9247.8600 9353.1459 52.6430 +2010 Q1 9322.0298 9240.3880 9403.6716 81.6418 +2010 Q2 9356.1011 9245.0642 9467.1379 111.0368 +2010 Q3 9379.3785 9233.8884 9524.8686 145.4901 +2010 Q4 9402.3839 9226.1128 9578.6549 176.2710 + + realgdp +time forecast lower CI upper CI +/- +2009 Q4 13117.4378 13027.5212 13207.3544 89.9166 +2010 Q1 13215.8562 13072.5158 13359.1967 143.3404 +2010 Q2 13305.2187 13106.2154 13504.2220 199.0033 +2010 Q3 13376.5086 13125.7352 13627.2820 250.7734 +2010 Q4 13436.4822 13136.8901 13736.0743 299.5921 + + realinv +time forecast lower CI upper CI +/- +2009 Q4 1537.1008 1472.1624 1602.0393 64.9384 +2010 Q1 1591.4194 1489.6343 1693.2045 101.7851 +2010 Q2 1637.4995 1499.3243 1775.6747 138.1752 +2010 Q3 1675.8552 1504.3435 1847.3669 171.5117 +2010 Q4 1705.8688 1500.8749 1910.8627 204.9939 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realcons.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realcons.txt new file mode 100755 index 0000000..a17ea7e --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realcons.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:31:48 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons" do not Granger-cause "realgdp, realinv" + +Test statistic l = 10.6287 +pval-F( l; 8, 555) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons" and "realgdp, realinv" + +Test statistic: c = 71.0006 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realcons_realgdp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realcons_realgdp.txt new file mode 100755 index 0000000..4ca395d --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realcons_realgdp.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:32:02 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons, realgdp" do not Granger-cause "realinv" + +Test statistic l = 15.7489 +pval-F( l; 8, 555) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons, realgdp" and "realinv" + +Test statistic: c = 79.6426 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realcons_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realcons_realinv.txt new file mode 100755 index 0000000..ea087a4 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realcons_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:32:25 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons, realinv" do not Granger-cause "realgdp" + +Test statistic l = 10.1522 +pval-F( l; 8, 555) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons, realinv" and "realgdp" + +Test statistic: c = 86.2497 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realgdp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realgdp.txt new file mode 100755 index 0000000..9592f54 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realgdp.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:32:51 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realgdp" do not Granger-cause "realcons, realinv" + +Test statistic l = 3.1668 +pval-F( l; 8, 555) = 0.0016 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realgdp" and "realcons, realinv" + +Test statistic: c = 86.2497 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realgdp_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realgdp_realinv.txt new file mode 100755 index 0000000..819cb8a --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realgdp_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:32:35 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realgdp, realinv" do not Granger-cause "realcons" + +Test statistic l = 3.1404 +pval-F( l; 8, 555) = 0.0017 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realgdp, realinv" and "realcons" + +Test statistic: c = 71.0006 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realinv.txt new file mode 100755 index 0000000..d45a888 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_granger_causality_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:33:00 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realinv" do not Granger-cause "realcons, realgdp" + +Test statistic l = 2.6620 +pval-F( l; 8, 555) = 0.0071 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realinv" and "realcons, realgdp" + +Test statistic: c = 79.6426 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_ir.txt new file mode 100755 index 0000000..436e961 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_ir.txt @@ -0,0 +1,29 @@ +*** Sat, 3 Sep 2016 22:33:09 *** +VAR Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time realcons realgdp realinv realcons realgdp realinv realcons realgdp realinv + ->realcons ->realcons ->realcons ->realgdp ->realgdp ->realgdp ->realinv ->realinv ->realinv + + point estimate 1.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 1.0000 + 1 point estimate 1.3888 -0.2407 0.2862 1.2541 0.5628 0.3258 0.9388 -0.1527 1.1584 + 2 point estimate 1.8291 -0.5021 0.5472 2.1412 0.3027 0.5012 1.5853 -0.3076 1.2481 + 3 point estimate 2.4039 -0.8108 0.7928 3.0812 -0.3266 0.9381 2.1613 -0.7834 1.6456 + 4 point estimate 2.6206 -1.0017 1.0436 3.7186 -0.8163 1.3181 2.6990 -1.1202 1.8410 + 5 point estimate 2.8535 -1.1768 1.2585 4.1059 -1.1770 1.6197 2.9336 -1.3440 1.9801 + 6 point estimate 3.0546 -1.2894 1.4117 4.3132 -1.4189 1.8575 2.9947 -1.4957 2.0974 + 7 point estimate 3.1576 -1.3580 1.5415 4.4045 -1.5453 2.0056 3.0032 -1.5452 2.1103 + 8 point estimate 3.2662 -1.4125 1.6407 4.4219 -1.5927 2.0827 2.8986 -1.5143 2.0658 + 9 point estimate 3.3552 -1.4437 1.7082 4.4009 -1.5951 2.1114 2.7547 -1.4478 1.9884 + 10 point estimate 3.4102 -1.4612 1.7596 4.3610 -1.5701 2.1026 2.6073 -1.3539 1.8728 + 11 point estimate 3.4560 -1.4704 1.7929 4.3049 -1.5298 2.0690 2.4360 -1.2434 1.7400 + 12 point estimate 3.4819 -1.4673 1.8087 4.2352 -1.4808 2.0190 2.2612 -1.1304 1.5997 + 13 point estimate 3.4857 -1.4545 1.8117 4.1532 -1.4250 1.9564 2.0880 -1.0153 1.4529 + 14 point estimate 3.4752 -1.4330 1.8016 4.0582 -1.3631 1.8844 1.9099 -0.8999 1.3057 + 15 point estimate 3.4483 -1.4023 1.7793 3.9521 -1.2959 1.8052 1.7334 -0.7873 1.1609 + 16 point estimate 3.4068 -1.3641 1.7470 3.8370 -1.2243 1.7202 1.5605 -0.6775 1.0190 + 17 point estimate 3.3540 -1.3196 1.7056 3.7150 -1.1493 1.6310 1.3908 -0.5712 0.8821 + 18 point estimate 3.2908 -1.2696 1.6564 3.5886 -1.0722 1.5390 1.2276 -0.4700 0.7512 + 19 point estimate 3.2189 -1.2153 1.6008 3.4599 -0.9944 1.4456 1.0722 -0.3743 0.6270 + 20 point estimate 3.1401 -1.1579 1.5400 3.3304 -0.9170 1.3520 0.9249 -0.2847 0.5103 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_lagorder.txt new file mode 100755 index 0000000..7582f83 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ct_lagorder.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:30:57 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: realcons realgdp realinv +deterministic variables: CONST TREND +sample range: [1961 Q3, 2009 Q3], T = 193 + +optimal number of lags (searched up to 10 lags of levels): +Akaike Info Criterion: 4 +Final Prediction Error: 4 +Hannan-Quinn Criterion: 2 +Schwarz Criterion: 2 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc.txt new file mode 100755 index 0000000..fbf8a51 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc.txt @@ -0,0 +1,80 @@ +*** Sat, 3 Sep 2016 21:52:15 *** +VAR ESTIMATION RESULTS +endogenous variables: realcons realgdp realinv +exogenous variables: +deterministic variables: +endogenous lags: 4 +exogenous lags: 0 +sample range: [1960 Q1, 2009 Q3], T = 199 + +modulus of the eigenvalues of the reverse characteristic polynomial : +|z| = ( 1.5237 1.5237 2.1188 2.1188 4.0128 4.0128 1.5233 1.5233 1.1578 1.1578 1.0233 0.9937 ) +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + realcons realgdp realinv +------------------------------------------- +realcons(t-1)| 1.396 1.251 0.943 + | (0.112) (0.191) (0.137) + | {0.000} {0.000} {0.000} + | [12.500] [6.550] [6.862] +realgdp (t-1)| -0.234 0.591 -0.164 + | (0.087) (0.149) (0.107) + | {0.007} {0.000} {0.127} + | [-2.674] [3.956] [-1.526] +realinv (t-1)| 0.280 0.297 1.170 + | (0.102) (0.175) (0.126) + | {0.006} {0.090} {0.000} + | [2.734] [1.696] [9.292] +realcons(t-2)| -0.070 -0.617 -0.613 + | (0.188) (0.322) (0.232) + | {0.710} {0.055} {0.008} + | [-0.372] [-1.918] [-2.646] +realgdp (t-2)| 0.017 0.348 0.178 + | (0.127) (0.216) (0.156) + | {0.896} {0.108} {0.253} + | [0.131] [1.608] [1.144] +realinv (t-2)| -0.107 -0.424 -0.311 + | (0.162) (0.278) (0.200) + | {0.509} {0.127} {0.119} + | [-0.661] [-1.526] [-1.558] +realcons(t-3)| 0.100 -0.115 -0.146 + | (0.192) (0.329) (0.237) + | {0.604} {0.725} {0.538} + | [0.519] [-0.351] [-0.615] +realgdp (t-3)| 0.012 -0.165 -0.207 + | (0.126) (0.215) (0.155) + | {0.923} {0.442} {0.179} + | [0.097] [-0.769] [-1.343] +realinv (t-3)| -0.071 0.113 0.241 + | (0.160) (0.273) (0.197) + | {0.655} {0.679} {0.221} + | [-0.446] [0.414] [1.224] +realcons(t-4)| -0.448 -0.454 -0.112 + | (0.128) (0.219) (0.158) + | {0.000} {0.038} {0.475} + | [-3.497] [-2.075] [-0.714] +realgdp (t-4)| 0.224 0.201 0.155 + | (0.092) (0.157) (0.113) + | {0.014} {0.200} {0.169} + | [2.448] [1.282] [1.376] +realinv (t-4)| -0.111 -0.108 -0.201 + | (0.109) (0.187) (0.134) + | {0.310} {0.561} {0.136} + | [-1.016] [-0.581] [-1.492] +------------------------------------------- + + + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_Sigmau.txt new file mode 100755 index 0000000..e9e0ee0 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_Sigmau.txt @@ -0,0 +1,20 @@ +*** Sat, 3 Sep 2016 21:52:15 *** +VAR MODEL STATISTICS +sample range: [1960 Q1, 2009 Q3], T = 199 + +Log Likelihood: -2.784455e+03 +Determinant (Cov): 3.292006e+08 + +Covariance: 7.188741e+02 6.688264e+02 -1.208885e+00 + 6.688264e+02 2.100788e+03 1.027081e+03 + -1.208885e+00 1.027081e+03 1.088305e+03 + +Correlation: 1.000000e+00 5.442468e-01 -1.366731e-03 + 5.442468e-01 1.000000e+00 6.792632e-01 + -1.366731e-03 6.792632e-01 1.000000e+00 + +AIC: 1.997399e+01 +FPE: 4.729151e+08 +SC: 2.056976e+01 +HQ: 2.021511e+01 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_diag.txt new file mode 100755 index 0000000..5261100 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_diag.txt @@ -0,0 +1,65 @@ +*** Fri, 7 Oct 2016 13:03:06 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 150. +tested order: 16 +test statistic: 109.2188 + p-value: 0.4491 +adjusted test statistic: 114.6298 + p-value: 0.3130 +degrees of freedom: 108.0000 + +*** Fri, 7 Oct 2016 13:03:06 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags +Reference: Doornik (1996), LM test and LMF test (with F-approximation) +LM statistic: 50.8056 + p-value: 0.2556 + df: 45.0000 +LMF statistic: 1.0662 + p-value: 0.3614 + df1: 45.0000 + df2: 505.0000 + +*** Fri, 7 Oct 2016 13:03:06 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 78.5845 + p-value: 0.0000 +degrees of freedom: 6.0000 +skewness only: 8.0544 + p-value: 0.0449 +kurtosis only: 70.5301 + p-value: 0.0000 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 39.3298 + p-value: 0.0000 +degrees of freedom: 6.0000 +skewness only: 2.7843 + p-value: 0.4261 +kurtosis only: 36.5456 + p-value: 0.0000 + +*** Fri, 7 Oct 2016 13:03:06 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 19.9339 0.0000 -0.2845 4.4424 +u2 5.8476 0.0537 0.2463 3.6802 +u3 51.4284 0.0000 -0.3003 5.4169 + +*** Fri, 7 Oct 2016 13:03:06 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 9.7285 0.8804 0.6422 0.8458 +u2 22.5410 0.1266 1.6067 0.0718 +u3 19.1264 0.2622 1.3349 0.1815 + +*** Fri, 7 Oct 2016 13:03:06 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 285.2274 + p-value(chi^2): 0.0000 + degrees of freedom: 180.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_fc5.txt new file mode 100755 index 0000000..c605e4e --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_fc5.txt @@ -0,0 +1,31 @@ +*** Sat, 3 Sep 2016 22:42:40 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + realcons +time forecast lower CI upper CI +/- +2009 Q4 9307.2247 9254.6745 9359.7749 52.5502 +2010 Q1 9337.0319 9255.0721 9418.9918 81.9599 +2010 Q2 9381.8009 9269.7311 9493.8707 112.0698 +2010 Q3 9415.8372 9268.1582 9563.5162 147.6790 +2010 Q4 9449.2250 9269.6139 9628.8361 179.6111 + + realgdp +time forecast lower CI upper CI +/- +2009 Q4 13127.7840 13037.9503 13217.6176 89.8337 +2010 Q1 13241.6877 13097.6300 13385.7454 144.0577 +2010 Q2 13354.9804 13153.6395 13556.3213 201.3409 +2010 Q3 13451.5405 13196.0598 13707.0212 255.4807 +2010 Q4 13537.4984 13230.8448 13844.1520 306.6536 + + realinv +time forecast lower CI upper CI +/- +2009 Q4 1534.4180 1469.7599 1599.0762 64.6582 +2010 Q1 1590.1180 1488.8167 1691.4194 101.3014 +2010 Q2 1640.8075 1503.1521 1778.4630 137.6554 +2010 Q3 1684.3150 1512.8783 1855.7517 171.4367 +2010 Q4 1719.8102 1513.8136 1925.8068 205.9966 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realcons.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realcons.txt new file mode 100755 index 0000000..3c25bf2 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realcons.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:13:24 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons" do not Granger-cause "realgdp, realinv" + +Test statistic l = 11.6835 +pval-F( l; 8, 561) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons" and "realgdp, realinv" + +Test statistic: c = 70.7644 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realcons_realgdp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realcons_realgdp.txt new file mode 100755 index 0000000..a93a0db --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realcons_realgdp.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:13:00 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons, realgdp" do not Granger-cause "realinv" + +Test statistic l = 17.1550 +pval-F( l; 8, 561) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons, realgdp" and "realinv" + +Test statistic: c = 78.9052 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realcons_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realcons_realinv.txt new file mode 100755 index 0000000..2dc150f --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realcons_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:13:35 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons, realinv" do not Granger-cause "realgdp" + +Test statistic l = 11.1461 +pval-F( l; 8, 561) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons, realinv" and "realgdp" + +Test statistic: c = 85.8428 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realgdp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realgdp.txt new file mode 100755 index 0000000..5c25b02 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realgdp.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:14:19 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realgdp" do not Granger-cause "realcons, realinv" + +Test statistic l = 4.7662 +pval-F( l; 8, 561) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realgdp" and "realcons, realinv" + +Test statistic: c = 85.8428 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realgdp_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realgdp_realinv.txt new file mode 100755 index 0000000..8261772 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realgdp_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:13:48 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realgdp, realinv" do not Granger-cause "realcons" + +Test statistic l = 3.7899 +pval-F( l; 8, 561) = 0.0002 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realgdp, realinv" and "realcons" + +Test statistic: c = 70.7644 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realinv.txt new file mode 100755 index 0000000..bbd2db2 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_granger_causality_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:14:51 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realinv" do not Granger-cause "realcons, realgdp" + +Test statistic l = 4.3984 +pval-F( l; 8, 561) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realinv" and "realcons, realgdp" + +Test statistic: c = 78.9052 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_ir.txt new file mode 100755 index 0000000..1d4d278 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_ir.txt @@ -0,0 +1,29 @@ +*** Sat, 3 Sep 2016 22:15:13 *** +VAR Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time realcons realgdp realinv realcons realgdp realinv realcons realgdp realinv + ->realcons ->realcons ->realcons ->realgdp ->realgdp ->realgdp ->realinv ->realinv ->realinv + + point estimate 1.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 1.0000 + 1 point estimate 1.3962 -0.2336 0.2799 1.2508 0.5908 0.2968 0.9431 -0.1640 1.1705 + 2 point estimate 1.8511 -0.4934 0.5417 2.1480 0.3559 0.4489 1.6025 -0.3311 1.2739 + 3 point estimate 2.4527 -0.8087 0.7963 3.1178 -0.2512 0.8680 2.1967 -0.8193 1.6856 + 4 point estimate 2.6844 -1.0039 1.0506 3.7713 -0.7229 1.2333 2.7734 -1.1844 1.9115 + 5 point estimate 2.9346 -1.1898 1.2715 4.1750 -1.0719 1.5186 3.0452 -1.4392 2.0818 + 6 point estimate 3.1521 -1.3160 1.4314 4.3863 -1.3045 1.7365 3.1378 -1.6255 2.2299 + 7 point estimate 3.2644 -1.3953 1.5642 4.4689 -1.4202 1.8596 3.1837 -1.7157 2.2761 + 8 point estimate 3.3824 -1.4618 1.6666 4.4703 -1.4546 1.9063 3.1101 -1.7229 2.2622 + 9 point estimate 3.4809 -1.5042 1.7368 4.4252 -1.4394 1.9000 2.9935 -1.6928 2.2135 + 10 point estimate 3.5446 -1.5315 1.7901 4.3582 -1.3934 1.8531 2.8753 -1.6337 2.1259 + 11 point estimate 3.6011 -1.5508 1.8259 4.2745 -1.3291 1.7794 2.7318 -1.5544 2.0193 + 12 point estimate 3.6397 -1.5576 1.8447 4.1782 -1.2540 1.6888 2.5853 -1.4700 1.9046 + 13 point estimate 3.6579 -1.5544 1.8513 4.0723 -1.1711 1.5860 2.4428 -1.3816 1.7828 + 14 point estimate 3.6639 -1.5427 1.8455 3.9564 -1.0817 1.4748 2.2960 -1.2905 1.6601 + 15 point estimate 3.6556 -1.5216 1.8282 3.8323 -0.9868 1.3575 2.1518 -1.2004 1.5392 + 16 point estimate 3.6341 -1.4927 1.8013 3.7024 -0.8874 1.2358 2.0121 -1.1110 1.4205 + 17 point estimate 3.6030 -1.4570 1.7657 3.5681 -0.7844 1.1111 1.8754 -1.0232 1.3057 + 18 point estimate 3.5624 -1.4151 1.7222 3.4317 -0.6792 0.9846 1.7447 -0.9382 1.1957 + 19 point estimate 3.5139 -1.3679 1.6723 3.2947 -0.5728 0.8574 1.6206 -0.8563 1.0907 + 20 point estimate 3.4589 -1.3164 1.6166 3.1583 -0.4661 0.7304 1.5032 -0.7782 0.9913 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_lagorder.txt new file mode 100755 index 0000000..a2f29fe --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_nc_lagorder.txt @@ -0,0 +1,12 @@ +*** Sat, 3 Sep 2016 22:22:50 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: realcons realgdp realinv +sample range: [1961 Q3, 2009 Q3], T = 193 + +optimal number of lags (searched up to 10 lags of levels): +Akaike Info Criterion: 4 +Final Prediction Error: 4 +Hannan-Quinn Criterion: 2 +Schwarz Criterion: 2 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs.txt new file mode 100755 index 0000000..a9c91d3 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs.txt @@ -0,0 +1,97 @@ +*** Sat, 3 Sep 2016 22:15:59 *** +VAR ESTIMATION RESULTS +endogenous variables: realcons realgdp realinv +exogenous variables: +deterministic variables: S1 S2 S3 +endogenous lags: 4 +exogenous lags: 0 +sample range: [1960 Q1, 2009 Q3], T = 199 + +modulus of the eigenvalues of the reverse characteristic polynomial : +|z| = ( 1.4985 1.4985 2.0225 2.0225 3.9001 5.4939 1.5053 1.5053 1.1995 1.1181 1.0330 0.9947 ) +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + realcons realgdp realinv +------------------------------------------- +realcons(t-1)| 1.436 1.300 0.960 + | (0.113) (0.194) (0.141) + | {0.000} {0.000} {0.000} + | [12.671] [6.693] [6.819] +realgdp (t-1)| -0.265 0.553 -0.177 + | (0.089) (0.152) (0.110) + | {0.003} {0.000} {0.108} + | [-2.984] [3.632] [-1.606] +realinv (t-1)| 0.307 0.335 1.183 + | (0.103) (0.177) (0.128) + | {0.003} {0.058} {0.000} + | [2.980] [1.892] [9.237] +realcons(t-2)| -0.138 -0.695 -0.638 + | (0.192) (0.329) (0.238) + | {0.470} {0.034} {0.007} + | [-0.722] [-2.116] [-2.679] +realgdp (t-2)| 0.059 0.407 0.198 + | (0.128) (0.220) (0.159) + | {0.646} {0.064} {0.214} + | [0.459] [1.850] [1.243] +realinv (t-2)| -0.154 -0.475 -0.328 + | (0.164) (0.281) (0.203) + | {0.347} {0.091} {0.107} + | [-0.941] [-1.692] [-1.612] +realcons(t-3)| 0.160 -0.102 -0.146 + | (0.196) (0.336) (0.244) + | {0.413} {0.762} {0.548} + | [0.818] [-0.303] [-0.601] +realgdp (t-3)| -0.011 -0.183 -0.211 + | (0.128) (0.219) (0.159) + | {0.928} {0.402} {0.182} + | [-0.090] [-0.839] [-1.333] +realinv (t-3)| -0.041 0.129 0.243 + | (0.161) (0.276) (0.200) + | {0.800} {0.640} {0.223} + | [-0.254] [0.468] [1.218] +realcons(t-4)| -0.475 -0.424 -0.098 + | (0.129) (0.222) (0.161) + | {0.000} {0.056} {0.541} + | [-3.666] [-1.912] [-0.611] +realgdp (t-4)| 0.233 0.186 0.148 + | (0.093) (0.159) (0.115) + | {0.012} {0.242} {0.199} + | [2.514] [1.170] [1.284] +realinv (t-4)| -0.121 -0.104 -0.197 + | (0.110) (0.188) (0.136) + | {0.270} {0.581} {0.148} + | [-1.103] [-0.552] [-1.448] +------------------------------------------- + + +Deterministic term: +=================== + realcons realgdp realinv +--------------------------------------- + S1(t)| 4.537 8.340 2.612 + | (5.338) (9.150) (6.631) + | {0.395} {0.362} {0.694} + | [0.850] [0.912] [0.394] + S2(t)| -1.573 15.042 5.870 + | (5.261) (9.018) (6.535) + | {0.765} {0.095} {0.369} + | [-0.299] [1.668] [0.898] + S3(t)| 8.851 13.868 4.856 + | (5.340) (9.153) (6.633) + | {0.097} {0.130} {0.464} + | [1.658] [1.515] [0.732] +--------------------------------------- + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_Sigmau.txt new file mode 100755 index 0000000..5086cf7 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_Sigmau.txt @@ -0,0 +1,20 @@ +*** Sat, 3 Sep 2016 22:15:59 *** +VAR MODEL STATISTICS +sample range: [1960 Q1, 2009 Q3], T = 199 + +Log Likelihood: -2.777424e+03 +Determinant (Cov): 3.066325e+08 + +Covariance: 7.132018e+02 6.722637e+02 -3.017500e+00 + 6.722637e+02 2.095453e+03 1.028940e+03 + -3.017500e+00 1.028940e+03 1.100364e+03 + +Correlation: 1.000000e+00 5.499136e-01 -3.406222e-03 + 5.499136e-01 1.000000e+00 6.776146e-01 + -3.406222e-03 6.776146e-01 1.000000e+00 + +AIC: 1.999342e+01 +FPE: 4.823986e+08 +SC: 2.073814e+01 +HQ: 2.029483e+01 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_diag.txt new file mode 100755 index 0000000..02102e1 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_diag.txt @@ -0,0 +1,65 @@ +*** Fri, 7 Oct 2016 13:03:56 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 150. +tested order: 16 +test statistic: 112.7721 + p-value: 0.3575 +adjusted test statistic: 118.4273 + p-value: 0.2318 +degrees of freedom: 108.0000 + +*** Fri, 7 Oct 2016 13:03:56 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags +Reference: Doornik (1996), LM test and LMF test (with F-approximation) +LM statistic: 56.9945 + p-value: 0.1083 + df: 45.0000 +LMF statistic: 1.1906 + p-value: 0.1917 + df1: 45.0000 + df2: 496.0000 + +*** Fri, 7 Oct 2016 13:03:56 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 75.0261 + p-value: 0.0000 +degrees of freedom: 6.0000 +skewness only: 8.7314 + p-value: 0.0331 +kurtosis only: 66.2947 + p-value: 0.0000 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 32.5281 + p-value: 0.0000 +degrees of freedom: 6.0000 +skewness only: 1.8515 + p-value: 0.6038 +kurtosis only: 30.6767 + p-value: 0.0000 + +*** Fri, 7 Oct 2016 13:03:57 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 13.6053 0.0011 -0.2267 4.1980 +u2 5.9939 0.0499 0.3008 3.6008 +u3 48.6717 0.0000 -0.2748 5.3596 + +*** Fri, 7 Oct 2016 13:03:57 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 8.2197 0.9421 0.5379 0.9237 +u2 25.7500 0.0576 1.8729 0.0262 +u3 19.1633 0.2603 1.3378 0.1798 + +*** Fri, 7 Oct 2016 13:03:57 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 283.5096 + p-value(chi^2): 0.0000 + degrees of freedom: 180.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_fc5.txt new file mode 100755 index 0000000..87dd013 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_fc5.txt @@ -0,0 +1,31 @@ +*** Sat, 3 Sep 2016 22:44:08 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + realcons +time forecast lower CI upper CI +/- +2009 Q4 9306.9499 9254.6074 9359.2924 52.3425 +2010 Q1 9335.9848 9253.9221 9418.0474 82.0627 +2010 Q2 9376.8357 9265.0928 9488.5785 111.7429 +2010 Q3 9415.1694 9267.8597 9562.4791 147.3097 +2010 Q4 9443.4785 9264.0520 9622.9050 179.4265 + + realgdp +time forecast lower CI upper CI +/- +2009 Q4 13119.1377 13029.4182 13208.8573 89.7195 +2010 Q1 13233.5032 13089.3639 13377.6426 144.1393 +2010 Q2 13350.9043 13149.0350 13552.7736 201.8693 +2010 Q3 13447.0691 13191.4843 13702.6540 255.5849 +2010 Q4 13525.7034 13218.7890 13832.6178 306.9144 + + realinv +time forecast lower CI upper CI +/- +2009 Q4 1531.0916 1466.0762 1596.1070 65.0154 +2010 Q1 1586.6564 1484.8673 1688.4454 101.7890 +2010 Q2 1638.8190 1500.3294 1777.3085 138.4895 +2010 Q3 1680.7507 1508.6052 1852.8962 172.1455 +2010 Q4 1715.6945 1509.0410 1922.3480 206.6535 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realcons.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realcons.txt new file mode 100755 index 0000000..b8a4a19 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realcons.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:16:34 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons" do not Granger-cause "realgdp, realinv" + +Test statistic l = 11.4249 +pval-F( l; 8, 552) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons" and "realgdp, realinv" + +Test statistic: c = 71.7504 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realcons_realgdp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realcons_realgdp.txt new file mode 100755 index 0000000..1f774ca --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realcons_realgdp.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:16:49 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons, realgdp" do not Granger-cause "realinv" + +Test statistic l = 16.6367 +pval-F( l; 8, 552) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons, realgdp" and "realinv" + +Test statistic: c = 79.2548 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realcons_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realcons_realinv.txt new file mode 100755 index 0000000..9c78f30 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realcons_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:20:03 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realcons, realinv" do not Granger-cause "realgdp" + +Test statistic l = 10.8067 +pval-F( l; 8, 552) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realcons, realinv" and "realgdp" + +Test statistic: c = 86.1955 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realgdp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realgdp.txt new file mode 100755 index 0000000..65a1043 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realgdp.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:20:51 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realgdp" do not Granger-cause "realcons, realinv" + +Test statistic l = 4.8888 +pval-F( l; 8, 552) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realgdp" and "realcons, realinv" + +Test statistic: c = 86.1955 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realgdp_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realgdp_realinv.txt new file mode 100755 index 0000000..e7d7226 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realgdp_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:20:25 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realgdp, realinv" do not Granger-cause "realcons" + +Test statistic l = 3.7293 +pval-F( l; 8, 552) = 0.0003 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realgdp, realinv" and "realcons" + +Test statistic: c = 71.7504 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realinv.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realinv.txt new file mode 100755 index 0000000..ccda468 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_granger_causality_realinv.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:21:06 *** +TEST FOR GRANGER-CAUSALITY: +H0: "realinv" do not Granger-cause "realcons, realgdp" + +Test statistic l = 4.3526 +pval-F( l; 8, 552) = 0.0000 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "realinv" and "realcons, realgdp" + +Test statistic: c = 79.2548 +pval-Chi( c; 2) = 0.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_ir.txt new file mode 100755 index 0000000..49c0081 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_ir.txt @@ -0,0 +1,29 @@ +*** Sat, 3 Sep 2016 22:21:22 *** +VAR Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time realcons realgdp realinv realcons realgdp realinv realcons realgdp realinv + ->realcons ->realcons ->realcons ->realgdp ->realgdp ->realgdp ->realinv ->realinv ->realinv + + point estimate 1.0000 0.0000 0.0000 0.0000 1.0000 0.0000 0.0000 0.0000 1.0000 + 1 point estimate 1.4360 -0.2650 0.3074 1.3001 0.5527 0.3346 0.9598 -0.1772 1.1834 + 2 point estimate 1.8741 -0.5225 0.5624 2.2115 0.3085 0.5053 1.6460 -0.3637 1.3083 + 3 point estimate 2.5015 -0.8588 0.8298 3.1824 -0.3207 0.9375 2.2355 -0.8614 1.7242 + 4 point estimate 2.7548 -1.0752 1.0997 3.8888 -0.8320 1.3233 2.8363 -1.2466 1.9585 + 5 point estimate 3.0072 -1.2706 1.3250 4.3222 -1.2160 1.6296 3.1346 -1.5279 2.1452 + 6 point estimate 3.2472 -1.4151 1.4988 4.5619 -1.4822 1.8703 3.2373 -1.7302 2.3021 + 7 point estimate 3.3696 -1.5065 1.6435 4.6751 -1.6282 2.0166 3.2992 -1.8363 2.3591 + 8 point estimate 3.4944 -1.5813 1.7545 4.6941 -1.6841 2.0851 3.2358 -1.8549 2.3572 + 9 point estimate 3.6060 -1.6339 1.8355 4.6646 -1.6858 2.0988 3.1209 -1.8287 2.3154 + 10 point estimate 3.6776 -1.6685 1.8981 4.6128 -1.6529 2.0699 3.0070 -1.7719 2.2340 + 11 point estimate 3.7428 -1.6947 1.9422 4.5425 -1.5992 2.0128 2.8656 -1.6926 2.1326 + 12 point estimate 3.7920 -1.7089 1.9698 4.4608 -1.5342 1.9379 2.7197 -1.6062 2.0209 + 13 point estimate 3.8190 -1.7123 1.9846 4.3707 -1.4615 1.8501 2.5797 -1.5161 1.9016 + 14 point estimate 3.8341 -1.7071 1.9866 4.2707 -1.3823 1.7538 2.4347 -1.4232 1.7808 + 15 point estimate 3.8349 -1.6925 1.9771 4.1629 -1.2980 1.6512 2.2919 -1.3309 1.6611 + 16 point estimate 3.8213 -1.6694 1.9575 4.0489 -1.2093 1.5439 2.1536 -1.2397 1.5432 + 17 point estimate 3.7978 -1.6392 1.9288 3.9300 -1.1169 1.4333 2.0175 -1.1498 1.4288 + 18 point estimate 3.7644 -1.6023 1.8919 3.8082 -1.0219 1.3205 1.8864 -1.0624 1.3185 + 19 point estimate 3.7223 -1.5598 1.8481 3.6851 -0.9254 1.2066 1.7616 -0.9780 1.2128 + 20 point estimate 3.6733 -1.5126 1.7982 3.5620 -0.8283 1.0924 1.6424 -0.8970 1.1122 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_lagorder.txt new file mode 100755 index 0000000..63ce638 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/macrodata_jmulti_ncs_lagorder.txt @@ -0,0 +1,13 @@ +*** Sat, 3 Sep 2016 22:22:28 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: realcons realgdp realinv +deterministic variables: S1 S2 S3 +sample range: [1961 Q3, 2009 Q3], T = 193 + +optimal number of lags (searched up to 10 lags of levels): +Akaike Info Criterion: 4 +Final Prediction Error: 4 +Hannan-Quinn Criterion: 2 +Schwarz Criterion: 2 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/parse_jmulti_var_output.py b/statsmodels/tsa/vector_ar/tests/JMulTi_results/parse_jmulti_var_output.py new file mode 100644 index 0000000..1b3dadc --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/parse_jmulti_var_output.py @@ -0,0 +1,415 @@ +import os +import re +from io import open + +import numpy as np + +from statsmodels.tsa.vector_ar.tests.JMulTi_results.parse_jmulti_vecm_output \ + import sublists, stringify_var_names + +debug_mode = False + +here = os.path.dirname(os.path.realpath(__file__)) + + +def print_debug_output(results, dt): + print("\n\n\nDETERMINISTIC TERMS: " + dt) + coefs = results["est"]["Lagged endogenous term"] + print("coefs:") + print(str(type(coefs)) + str(coefs.shape)) + print(coefs) + print("se: ") + print(results["se"]["Lagged endogenous term"]) + print("t: ") + print(results["t"]["Lagged endogenous term"]) + print("p: ") + print(results["p"]["Lagged endogenous term"]) + + +def dt_s_tup_to_string(dt_s_tup): + """ + + Parameters + ---------- + dt_s_tup : tuple + A tuple of length 2. + The first entry is a string specifying the deterministic term without + any information about seasonal terms (for example "nc" or "c"). + The second entry is an int specifying the number of seasons. + + Returns + ------- + dt_string : str + Returns dt_s_tup[0], if dt_s_tup[1] is 0 (i.e. no seasons). + If dt_s_tup[1] is > 0 (i.e. there are seasons) add an "s" to the string + in dt_s_tup[0] like in the following examples: + "nc" --> "ncs" + "c" --> "cs" + "ct" --> "cst" + """ + dt_string = dt_s_tup[0] # string for identifying the file to parse. + if dt_s_tup[1] > 0: # if there are seasons in the model + if dt_string == "nc": + dt_string = dt_string[:2] + "s" + if dt_string == "c" or dt_string == "ct": + dt_string = dt_string[:1] + "s" + dt_string[1:] + return dt_string + + +def load_results_jmulti(dataset, dt_s_list): + """ + + Parameters + ---------- + dataset : module + A data module in the statsmodels/datasets directory that defines a + __str__() method returning the dataset's name. + dt_s_list : list + A list of strings where each string represents a combination of + deterministic terms. + + Returns + ------- + result : dict + A dict (keys: tuples of deterministic terms and seasonal terms) + of dicts (keys: strings "est" (for estimators), + "se" (for standard errors), + "t" (for t-values), + "p" (for p-values)) + of dicts (keys: strings "alpha", "beta", "Gamma" and other results) + """ + source = "jmulti" + + results_dict_per_det_terms = dict.fromkeys(dt_s_list) + + for dt_s in dt_s_list: + dt_string = dt_s_tup_to_string(dt_s) + params_file = dataset.__str__()+"_"+source+"_"+dt_string+".txt" + params_file = os.path.join(here, params_file) + # sections in jmulti output: + section_headers = ["Lagged endogenous term", # parameter matrices + "Deterministic term"] # c, s, ct + if dt_string == "nc": + del section_headers[-1] + + results = dict() + results["est"] = dict.fromkeys(section_headers) + results["se"] = dict.fromkeys(section_headers) + results["t"] = dict.fromkeys(section_headers) + results["p"] = dict.fromkeys(section_headers) + result = [] + result_se = [] + result_t = [] + result_p = [] + + rows = 0 + started_reading_section = False + start_end_mark = "-----" + + # --------------------------------------------------------------------- + # parse information about \alpha, \beta, \Gamma, deterministic of VECM + # and A_i and deterministic of corresponding VAR: + section = -1 + params_file = open(params_file, encoding='latin_1') + for line in params_file: + if section == -1 and section_headers[section+1] not in line: + continue + if section < len(section_headers)-1 \ + and section_headers[section+1] in line: # new section + section += 1 + continue + if not started_reading_section: + if line.startswith(start_end_mark): + started_reading_section = True + continue + if started_reading_section: + if line.startswith(start_end_mark): + if result == []: # no values collected in section "Legend" + started_reading_section = False + continue + results["est"][section_headers[section]] = np.column_stack( + result) + result = [] + results["se"][section_headers[section]] = np.column_stack( + result_se) + result_se = [] + results["t"][section_headers[section]] = np.column_stack( + result_t) + result_t = [] + results["p"][section_headers[section]] = np.column_stack( + result_p) + result_p = [] + started_reading_section = False + continue + str_number = r"-?\d+\.\d{3}" + regex_est = re.compile(str_number + r"[^\)\]\}]") + est_col = re.findall(regex_est, line) + # standard errors in parantheses in JMulTi output: + regex_se = re.compile(r"\(" + str_number + r"\)") + se_col = re.findall(regex_se, line) + # t-values in brackets in JMulTi output: + regex_t_value = re.compile(r"\[" + str_number + r"\]") + t_col = re.findall(regex_t_value, line) + # p-values in braces in JMulTi output: + regex_p_value = re.compile(r"\{" + str_number + r"\}") + p_col = re.findall(regex_p_value, line) + if result == [] and est_col != []: + rows = len(est_col) + if est_col != []: + est_col = [float(el) for el in est_col] + result.append(est_col) + elif se_col != []: + for i in range(rows): + se_col[i] = se_col[i].replace("(", "").replace(")", "") + se_col = [float(el) for el in se_col] + result_se.append(se_col) + elif t_col != []: + for i in range(rows): + t_col[i] = t_col[i].replace("[", "").replace("]", "") + t_col = [float(el) for el in t_col] + result_t.append(t_col) + elif p_col != []: + for i in range(rows): + p_col[i] = p_col[i].replace("{", "").replace("}", "") + p_col = [float(el) for el in p_col] + result_p.append(p_col) + params_file.close() + + # --------------------------------------------------------------------- + # parse information regarding \Sigma_u + sigmau_file = dataset.__str__() + "_" + source + "_" + dt_string \ + + "_Sigmau" + ".txt" + sigmau_file = os.path.join(here, sigmau_file) + rows_to_parse = 0 + # all numbers of Sigma_u in notation with e (e.g. 2.283862e-05) + regex_est = re.compile(r"\s+\S+e\S+") + sigmau_section_reached = False + sigmau_file = open(sigmau_file, encoding='latin_1') + for line in sigmau_file: + if line.startswith("Log Likelihood:"): + line = line[len("Log Likelihood:"):] + results["log_like"] = float(re.findall(regex_est, line)[0]) + continue + if not sigmau_section_reached and "Covariance:" not in line: + continue + if "Covariance:" in line: + sigmau_section_reached = True + row = re.findall(regex_est, line) + rows_to_parse = len(row) # Sigma_u quadratic ==> #rows==#cols + sigma_u = np.empty((rows_to_parse, rows_to_parse)) + row = re.findall(regex_est, line) + rows_to_parse -= 1 + sigma_u[rows_to_parse] = row # rows are added in reverse order... + if rows_to_parse == 0: + break + sigmau_file.close() + results["est"]["Sigma_u"] = sigma_u[::-1] # ...and reversed again here + + # --------------------------------------------------------------------- + # parse forecast related output: + fc_file = dataset.__str__() + "_" + source + "_" + dt_string \ + + "_fc5" + ".txt" + fc_file = os.path.join(here, fc_file) + fc, lower, upper, plu_min = [], [], [], [] + fc_file = open(fc_file, encoding='latin_1') + for line in fc_file: + str_number = r"(\s+-?\d+\.\d{3}\s*)" + regex_number = re.compile(str_number) + numbers = re.findall(regex_number, line) + if numbers == []: + continue + fc.append(float(numbers[0])) + lower.append(float(numbers[1])) + upper.append(float(numbers[2])) + plu_min.append(float(numbers[3])) + fc_file.close() + neqs = len(results["est"]["Sigma_u"]) + fc = np.hstack(np.vsplit(np.array(fc)[:, None], neqs)) + lower = np.hstack(np.vsplit(np.array(lower)[:, None], neqs)) + upper = np.hstack(np.vsplit(np.array(upper)[:, None], neqs)) + results["fc"] = dict.fromkeys(["fc", "lower", "upper"]) + results["fc"]["fc"] = fc + results["fc"]["lower"] = lower + results["fc"]["upper"] = upper + + # --------------------------------------------------------------------- + # parse output related to Granger-caus. and instantaneous causality: + results["granger_caus"] = dict.fromkeys(["p", "test_stat"]) + results["granger_caus"]["p"] = dict() + results["granger_caus"]["test_stat"] = dict() + results["inst_caus"] = dict.fromkeys(["p", "test_stat"]) + results["inst_caus"]["p"] = dict() + results["inst_caus"]["test_stat"] = dict() + vn = dataset.variable_names + # all possible combinations of potentially causing variables + # (at least 1 variable and not all variables together): + var_combs = sublists(vn, 1, len(vn)-1) + if debug_mode: + print("\n\n\n" + dt_string) + for causing in var_combs: + caused = tuple(name for name in vn if name not in causing) + causality_file = dataset.__str__() + "_" + source + "_" \ + + dt_string + "_granger_causality_" \ + + stringify_var_names(causing, "_") + ".txt" + causality_file = os.path.join(here, causality_file) + causality_file = open(causality_file) + causality_results = [] + for line in causality_file: + str_number = r"\d+\.\d{4}" + regex_number = re.compile(str_number) + number = re.search(regex_number, line) + if number is None: + continue + number = float(number.group(0)) + causality_results.append(number) + causality_file.close() + results["granger_caus"]["test_stat"][(causing, caused)] = \ + causality_results[0] + results["granger_caus"]["p"][(causing, caused)] =\ + causality_results[1] + results["inst_caus"]["test_stat"][(causing, caused)] = \ + causality_results[2] + results["inst_caus"]["p"][(causing, caused)] = \ + causality_results[3] + + # --------------------------------------------------------------------- + # parse output related to impulse-response analysis: + ir_file = dataset.__str__() + "_" + source + "_" + dt_string \ + + "_ir" + ".txt" + ir_file = os.path.join(here, ir_file) + ir_file = open(ir_file, encoding='latin_1') + causing = None + caused = None + data = None + regex_vars = re.compile(r"\w+") + regex_vals = re.compile(r"-?\d+\.\d{4}") + line_start_causing = "time" + data_line_indicator = "point estimate" + data_rows_read = 0 + for line in ir_file: + if causing is None and not line.startswith(line_start_causing): + continue # no relevant info in the header + if line.startswith(line_start_causing): + line = line[4:] + causing = re.findall(regex_vars, line) + # 21 periods shown in JMulTi output + data = np.empty((21, len(causing))) + continue + if caused is None: + caused = re.findall(regex_vars, line) + continue + # now start collecting the values: + if data_line_indicator not in line: + continue + start = line.find(data_line_indicator) + len(data_line_indicator) + line = line[start:] + data[data_rows_read] = re.findall(regex_vals, line) + data_rows_read += 1 + ir_file.close() + results["ir"] = data + + # --------------------------------------------------------------------- + # parse output related to lag order selection: + lagorder_file = dataset.__str__() + "_" + source + "_" + dt_string \ + + "_lagorder" + ".txt" + lagorder_file = os.path.join(here, lagorder_file) + lagorder_file = open(lagorder_file, encoding='latin_1') + results["lagorder"] = dict() + aic_start = "Akaike Info Criterion:" + fpe_start = "Final Prediction Error:" + hqic_start = "Hannan-Quinn Criterion:" + bic_start = "Schwarz Criterion:" + for line in lagorder_file: + if line.startswith(aic_start): + results["lagorder"]["aic"] = int(line[len(aic_start):]) + elif line.startswith(fpe_start): + results["lagorder"]["fpe"] = int(line[len(fpe_start):]) + elif line.startswith(hqic_start): + results["lagorder"]["hqic"] = int(line[len(hqic_start):]) + elif line.startswith(bic_start): + results["lagorder"]["bic"] = int(line[len(bic_start):]) + lagorder_file.close() + + # --------------------------------------------------------------------- + # parse output related to non-normality-test: + test_norm_file = dataset.__str__() + "_" + source + "_" + dt_string \ + + "_diag" + ".txt" + test_norm_file = os.path.join(here, test_norm_file) + test_norm_file = open(test_norm_file, encoding='latin_1') + results["test_norm"] = dict() + section_start_marker = "TESTS FOR NONNORMALITY" + section_reached = False + subsection_start_marker = "Introduction to Multiple Time Series A" + subsection_reached = False + line_start_statistic = "joint test statistic:" + line_start_pvalue = " p-value:" + for line in test_norm_file: + if not section_reached: + if section_start_marker in line: + section_reached = True # section w/ relevant results found + continue + if not subsection_reached: + if subsection_start_marker in line: + subsection_reached = True + continue + if "joint_pvalue" in results["test_norm"].keys(): + break + if line.startswith(line_start_statistic): + line_end = line[len(line_start_statistic):] + results["test_norm"]["joint_test_statistic"] = float(line_end) + if line.startswith(line_start_pvalue): + line_end = line[len(line_start_pvalue):] + results["test_norm"]["joint_pvalue"] = float(line_end) + test_norm_file.close() + + # --------------------------------------------------------------------- + # parse output related to testing the whiteness of the residuals: + whiteness_file = dataset.__str__() + "_" + source + "_" + dt_string \ + + "_diag" + ".txt" + whiteness_file = os.path.join(here, whiteness_file) + whiteness_file = open(whiteness_file, encoding='latin_1') + results["whiteness"] = dict() + section_start_marker = "PORTMANTEAU TEST" + order_start = "tested order:" + statistic_start = "test statistic:" + p_start = " p-value:" + adj_statistic_start = "adjusted test statistic:" + unadjusted_finished = False + + in_section = False + for line in whiteness_file: + if not in_section and section_start_marker not in line: + continue + if not in_section and section_start_marker in line: + in_section = True + continue + if line.startswith(order_start): + results["whiteness"]["tested order"] = int( + line[len(order_start):]) + continue + if line.startswith(statistic_start): + results["whiteness"]["test statistic"] = float( + line[len(statistic_start):]) + continue + if line.startswith(adj_statistic_start): + results["whiteness"]["test statistic adj."] = float( + line[len(adj_statistic_start):]) + continue + if line.startswith(p_start): # same for unadjusted and adjusted + if not unadjusted_finished: + results["whiteness"]["p-value"] = \ + float(line[len(p_start):]) + unadjusted_finished = True + else: + results["whiteness"]["p-value adjusted"] = \ + float(line[len(p_start):]) + break + whiteness_file.close() + + # --------------------------------------------------------------------- + if debug_mode: + print_debug_output(results, dt_string) + + results_dict_per_det_terms[dt_s] = results + + return results_dict_per_det_terms diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/parse_jmulti_vecm_output.py b/statsmodels/tsa/vector_ar/tests/JMulTi_results/parse_jmulti_vecm_output.py new file mode 100644 index 0000000..d1a874d --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/parse_jmulti_vecm_output.py @@ -0,0 +1,535 @@ +import re +import os +from io import open + +import itertools +import numpy as np + +debug_mode = False + +here = os.path.dirname(os.path.realpath(__file__)) + + +def print_debug_output(results, dt): + print("\n\n\nDETERMINISTIC TERMS: " + dt) + alpha = results["est"]["alpha"] + print("alpha:") + print(str(type(alpha)) + str(alpha.shape)) + print(alpha) + print("se: ") + print(results["se"]["alpha"]) + print("t: ") + print(results["t"]["alpha"]) + print("p: ") + print(results["p"]["alpha"]) + beta = results["est"]["beta"] + print("beta:") + print(str(type(beta)) + str(beta.shape)) + print(beta) + gamma = results["est"]["Gamma"] + print("Gamma:") + print(str(type(gamma)) + str(gamma.shape)) + print(gamma) + if "co" in dt or "s" in dt or "lo" in dt: + c = results["est"]["C"] + print("C:") + print(str(type(c)) + str(c.shape)) + print(c) + print("se: ") + print(results["se"]["C"]) + + +def dt_s_tup_to_string(dt_s_tup): + dt_string = dt_s_tup[0] # string for identifying the file to parse. + if dt_s_tup[1] > 0: # if there are seasons in the model + if "co" in dt_string or "ci" in dt_string or "nc" in dt_string: + dt_string = dt_string[:2] + "s" + dt_string[2:] + else: + dt_string = "s" + dt_string + return dt_string + + +def sublists(lst, min_elmts=0, max_elmts=None): + """Build a list of all possible sublists of a given list. Restrictions + on the length of the sublists can be posed via the min_elmts and max_elmts + parameters. + All sublists + have will have at least min_elmts elements and not more than max_elmts + elements. + + Parameters + ---------- + lst : list + Original list from which sublists are generated. + min_elmts : int + Lower bound for the length of sublists. + max_elmts : int or None + If int, then max_elmts are the upper bound for the length of sublists. + If None, sublists' length is not restricted. In this case the longest + sublist will be of the same length as the original list lst. + + Returns + ------- + result : list + A list of all sublists of lst fulfilling the length restrictions. + """ + if max_elmts is None: + max_elmts = len(lst) + # for the following see also the definition of powerset() in + # https://docs.python.org/dev/library/itertools.html#itertools-recipes + result = itertools.chain.from_iterable( + itertools.combinations(lst, sublist_len) + for sublist_len in range(min_elmts, max_elmts+1)) + if type(result) != list: + result = list(result) + return result + + +def stringify_var_names(var_list, delimiter=""): + """ + + Parameters + ---------- + var_list : list of strings + Each list element is the name of a variable. + + Returns + ------- + result : string + Concatenated variable names. + """ + result = var_list[0] + for var_name in var_list[1:]: + result += delimiter + var_name + return result.lower() + + +def load_results_jmulti(dataset): + """ + + Parameters + ---------- + dataset : module + A data module in the statsmodels/datasets directory that defines a + __str__() method returning the dataset's name. + dt_s_list : list + A list of strings where each string represents a combination of + deterministic terms. + + Returns + ------- + result : dict + A dict (keys: tuples of deterministic terms and seasonal terms) + of dicts (keys: strings "est" (for estimators), + "se" (for standard errors), + "t" (for t-values), + "p" (for p-values)) + of dicts (keys: strings "alpha", "beta", "Gamma" and other results) + """ + source = "jmulti" + + results_dict_per_det_terms = dict.fromkeys(dataset.dt_s_list) + + for dt_s in dataset.dt_s_list: + dt_string = dt_s_tup_to_string(dt_s) + params_file = "vecm_"+dataset.__str__()+"_"+source+"_"+dt_string+".txt" + params_file = os.path.join(here, params_file) + # sections in jmulti output: + section_header = ["Lagged endogenous term", # Gamma + "Deterministic term", # co, s, lo + "Loading coefficients", # alpha + "Estimated cointegration relation", # beta + "Legend", + "Lagged endogenous term", # VAR representation + "Deterministic term"] # VAR representation + # the following "sections" will serve as key for the corresponding + # result values + sections = ["Gamma", + "C", # Here all deterministic term coefficients are + # collected. (const and linear trend which belong + # to cointegration relation as well as seasonal + # components which are outside the cointegration + # relation. Later, we will strip the terms related + # to the cointegration relation from C. + "alpha", + "beta", + "Legend", + "VAR A", # VAR parameter matrices + "VAR deterministic"] # VAR deterministic terms + if "co" not in dt_string and "lo" not in dt_string \ + and "s" not in dt_string: + # JMulTi: no deterministic terms section in VEC representation + del(section_header[1]) + del(sections[1]) + if "ci" not in dt_string and "li" not in dt_string: + # JMulTi: no deterministic section in VAR repr. + del(section_header[-1]) + del(sections[-1]) + results = dict() + results["est"] = dict.fromkeys(sections) + results["se"] = dict.fromkeys(sections) + results["t"] = dict.fromkeys(sections) + results["p"] = dict.fromkeys(sections) + section = -1 + result = [] + result_se = [] + result_t = [] + result_p = [] + + rows = 0 + started_reading_section = False + start_end_mark = "-----" + + # --------------------------------------------------------------------- + # parse information about \alpha, \beta, \Gamma, deterministic of VECM + # and A_i and deterministic of corresponding VAR: + params_file = open(params_file) + for line in params_file: + if section == -1 and section_header[section+1] not in line: + continue + if section < len(section_header)-1 \ + and section_header[section+1] in line: # new section + section += 1 + continue + if not started_reading_section: + if line.startswith(start_end_mark): + started_reading_section = True + continue + if started_reading_section: + if line.startswith(start_end_mark): + if result == []: # no values collected in section "Legend" + started_reading_section = False + continue + results["est"][sections[section]] = np.column_stack( + result) + result = [] + results["se"][sections[section]] = np.column_stack( + result_se) + result_se = [] + results["t"][sections[section]] = np.column_stack( + result_t) + result_t = [] + results["p"][sections[section]] = np.column_stack( + result_p) + result_p = [] + started_reading_section = False + continue + str_number = r"-?\d+\.\d{3}" + regex_est = re.compile(str_number + r"[^\)\]\}]") + est_col = re.findall(regex_est, line) + # standard errors in parantheses in JMulTi output: + regex_se = re.compile(r"\(" + str_number + r"\)") + se_col = re.findall(regex_se, line) + # t-values in brackets in JMulTi output: + regex_t_value = re.compile(r"\[" + str_number + r"\]") + t_col = re.findall(regex_t_value, line) + # p-values in braces in JMulTi output: + regex_p_value = re.compile(r"\{" + str_number + r"\}") + p_col = re.findall(regex_p_value, line) + if result == [] and est_col != []: + rows = len(est_col) + if est_col != []: + est_col = [float(el) for el in est_col] + result.append(est_col) + elif se_col != []: + for i in range(rows): + se_col[i] = se_col[i].replace("(", "").replace(")", "") + se_col = [float(el) for el in se_col] + result_se.append(se_col) + elif t_col != []: + for i in range(rows): + t_col[i] = t_col[i].replace("[", "").replace("]", "") + t_col = [float(el) for el in t_col] + result_t.append(t_col) + elif p_col != []: + for i in range(rows): + p_col[i] = p_col[i].replace("{", "").replace("}", "") + p_col = [float(el) for el in p_col] + result_p.append(p_col) + params_file.close() + # delete "Legend"-section of JMulTi: + del results["est"]["Legend"] + del results["se"]["Legend"] + del results["t"]["Legend"] + del results["p"]["Legend"] + # JMulTi outputs beta.T + results["est"]["beta"] = results["est"]["beta"].T + results["se"]["beta"] = results["se"]["beta"].T + results["t"]["beta"] = results["t"]["beta"].T + results["p"]["beta"] = results["p"]["beta"].T + # split information about beta and deterministic terms inside coint. + alpha = results["est"]["alpha"] + beta = results["est"]["beta"] + alpha_rows = alpha.shape[0] + if beta.shape[0] > alpha_rows: + results["est"]["beta"], results["est"]["det_coint"] = np.vsplit( + results["est"]["beta"], [alpha_rows]) + results["se"]["beta"], results["se"]["det_coint"] = np.vsplit( + results["se"]["beta"], [alpha_rows]) + results["t"]["beta"], results["t"]["det_coint"] = np.vsplit( + results["t"]["beta"], [alpha_rows]) + results["p"]["beta"], results["p"]["det_coint"] = np.vsplit( + results["p"]["beta"], [alpha_rows]) + + # --------------------------------------------------------------------- + # parse information regarding \Sigma_u + sigmau_file = "vecm_" + dataset.__str__() + "_" + source + "_" + \ + dt_string + "_Sigmau" + ".txt" + sigmau_file = os.path.join(here, sigmau_file) + rows_to_parse = 0 + # all numbers of Sigma_u in notation with e (e.g. 2.283862e-05) + regex_est = re.compile(r"\s+\S+e\S+") + sigmau_section_reached = False + sigmau_file = open(sigmau_file) + for line in sigmau_file: + if line.startswith("Log Likelihood:"): + line = line.split("Log Likelihood:")[1] + results["log_like"] = float(re.findall(regex_est, line)[0]) + if not sigmau_section_reached and "Covariance:" not in line: + continue + if "Covariance:" in line: + sigmau_section_reached = True + row = re.findall(regex_est, line) + rows_to_parse = len(row) # Sigma_u quadratic ==> #rows==#cols + sigma_u = np.empty((rows_to_parse, rows_to_parse)) + row = re.findall(regex_est, line) + rows_to_parse -= 1 + sigma_u[rows_to_parse] = row # rows are added in reverse order + if rows_to_parse == 0: + break + sigmau_file.close() + results["est"]["Sigma_u"] = sigma_u[::-1] + + # --------------------------------------------------------------------- + # parse forecast related output: + fc_file = "vecm_" + dataset.__str__() + "_" + source + "_" + \ + dt_string + "_fc5" + ".txt" + fc_file = os.path.join(here, fc_file) + fc, lower, upper, plu_min = [], [], [], [] + fc_file = open(fc_file, encoding='latin_1') + for line in fc_file: + str_number = r"(\s+-?\d+\.\d{4}\s*?)" + regex_number = re.compile(str_number) + numbers = re.findall(regex_number, line) + if numbers == []: + continue + fc.append(float(numbers[0])) + lower.append(float(numbers[1])) + upper.append(float(numbers[2])) + plu_min.append(float(numbers[3])) + fc_file.close() + variables = alpha.shape[0] + fc = np.hstack(np.vsplit(np.array(fc)[:, None], variables)) + lower = np.hstack(np.vsplit(np.array(lower)[:, None], variables)) + upper = np.hstack(np.vsplit(np.array(upper)[:, None], variables)) + # plu_min = np.hstack(np.vsplit(np.array(plu_min)[:, None], variables)) + results["fc"] = dict.fromkeys(["fc", "lower", "upper"]) + results["fc"]["fc"] = fc + results["fc"]["lower"] = lower + results["fc"]["upper"] = upper + + # --------------------------------------------------------------------- + # parse output related to Granger-causality: + results["granger_caus"] = dict.fromkeys(["p", "test_stat"]) + results["granger_caus"]["p"] = dict() + results["granger_caus"]["test_stat"] = dict() + vn = dataset.variable_names + # all possible combinations of potentially causing variables + # (at least 1 variable and not all variables together): + var_combs = sublists(vn, 1, len(vn)-1) + for causing in var_combs: + caused = tuple(el for el in vn if el not in causing) + granger_file = "vecm_" + dataset.__str__() + "_" + source + "_" \ + + dt_string + "_granger_causality_" \ + + stringify_var_names(causing) + "_" \ + + stringify_var_names(caused) + ".txt" + granger_file = os.path.join(here, granger_file) + granger_file = open(granger_file) + granger_results = [] + for line in granger_file: + str_number = r"\d+\.\d{4}" + regex_number = re.compile(str_number) + number = re.search(regex_number, line) + if number is None: + continue + number = float(number.group(0)) + granger_results.append(number) + granger_file.close() + results["granger_caus"]["test_stat"][(causing, caused)] = \ + granger_results[0] + results["granger_caus"]["p"][(causing, caused)] =\ + granger_results[1] + + # --------------------------------------------------------------------- + # parse output related to instant causality: + results["inst_caus"] = dict.fromkeys(["p", "test_stat"]) + results["inst_caus"]["p"] = dict() + results["inst_caus"]["test_stat"] = dict() + vn = dataset.variable_names + # all possible combinations of potentially causing variables + # (at least 1 variable and not all variables together): + var_combs = sublists(vn, 1, len(vn)-1) + for causing in var_combs: + caused = tuple(el for el in vn if el not in causing) + # Though Granger- and instantaneous causality results are in the + # same file we use two separate files, since JMulTi is basing both + # tests on a VAR(p+1) model (where p is the number of lags in + # levels). According to Lutkepohl, Granger-causality tests are + # based on VAR(p+1) *but* tests for instantaneous causality are + # based on VAR(p)! Thus we have this separate file with JMulTi + # results for a VECM with the lag order reduced by one. + inst_file = "vecm_" + dataset.__str__() + "_" + source + "_" \ + + dt_string + "_inst_causality_" \ + + stringify_var_names(causing) + "_" \ + + stringify_var_names(caused) + ".txt" + inst_file = os.path.join(here, inst_file) + inst_file = open(inst_file) + inst_results = [] + for line in inst_file: + str_number = r"\d+\.\d{4}" + regex_number = re.compile(str_number) + number = re.search(regex_number, line) + if number is None: + continue + number = float(number.group(0)) + inst_results.append(number) + inst_file.close() + results["inst_caus"]["test_stat"][(causing, caused)] = \ + inst_results[2] + results["inst_caus"]["p"][(causing, caused)] = \ + inst_results[3] + + # --------------------------------------------------------------------- + # parse output related to impulse-response analysis: + ir_file = "vecm_" + dataset.__str__() + "_" + source + "_" + \ + dt_string + "_ir" + ".txt" + ir_file = os.path.join(here, ir_file) + ir_file = open(ir_file, encoding='latin_1') + causing = None + caused = None + data = None + regex_vars = re.compile(r"\w+") + regex_vals = re.compile(r"-?\d+\.\d{4}") + line_start_causing = "time" + data_line_indicator = "point estimate" + data_rows_read = 0 + for line in ir_file: + if causing is None and not line.startswith(line_start_causing): + continue # no relevant info in the header + if line.startswith(line_start_causing): + line = line[4:] + causing = re.findall(regex_vars, line) + # 21 periods shown in JMulTi output + data = np.empty((21, len(causing))) + continue + if caused is None: + caused = re.findall(regex_vars, line) + continue + # now start collecting the values: + if data_line_indicator not in line: + continue + start = line.find(data_line_indicator) + len(data_line_indicator) + line = line[start:] + data[data_rows_read] = re.findall(regex_vals, line) + data_rows_read += 1 + ir_file.close() + results["ir"] = data + + # --------------------------------------------------------------------- + # parse output related to lag order selection: + lagorder_file = "vecm_" + dataset.__str__() + "_" + source + "_" + \ + dt_string + "_lagorder" + ".txt" + lagorder_file = os.path.join(here, lagorder_file) + lagorder_file = open(lagorder_file, encoding='latin_1') + results["lagorder"] = dict() + aic_start = "Akaike Info Criterion:" + fpe_start = "Final Prediction Error:" + hqic_start = "Hannan-Quinn Criterion:" + bic_start = "Schwarz Criterion:" + for line in lagorder_file: + if line.startswith(aic_start): + results["lagorder"]["aic"] = int(line[len(aic_start):]) + elif line.startswith(fpe_start): + results["lagorder"]["fpe"] = int(line[len(fpe_start):]) + elif line.startswith(hqic_start): + results["lagorder"]["hqic"] = int(line[len(hqic_start):]) + elif line.startswith(bic_start): + results["lagorder"]["bic"] = int(line[len(bic_start):]) + lagorder_file.close() + + # --------------------------------------------------------------------- + # parse output related to non-normality-test: + test_norm_file = "vecm_" + dataset.__str__() + "_" + source + "_" + \ + dt_string + "_diag" + ".txt" + test_norm_file = os.path.join(here, test_norm_file) + test_norm_file = open(test_norm_file, encoding='latin_1') + results["test_norm"] = dict() + reading_values = False + line_start_statistic = "joint test statistic:" + line_start_pvalue = " p-value:" + for line in test_norm_file: + if not reading_values: + if "Introduction to Multiple Time Series Analysis" in line: + reading_values = True # section w/ relevant results found + continue + if "joint_pvalue" in results["test_norm"].keys(): + break + if line.startswith(line_start_statistic): + line_end = line[len(line_start_statistic):] + results["test_norm"]["joint_test_statistic"] = float(line_end) + if line.startswith(line_start_pvalue): + line_end = line[len(line_start_pvalue):] + results["test_norm"]["joint_pvalue"] = float(line_end) + test_norm_file.close() + + # --------------------------------------------------------------------- + # parse output related to testing the whiteness of the residuals: + whiteness_file = "vecm_" + dataset.__str__() + "_" + source + "_" + \ + dt_string + "_diag" + ".txt" + whiteness_file = os.path.join(here, whiteness_file) + whiteness_file = open(whiteness_file, encoding='latin_1') + results["whiteness"] = dict() + section_start_marker = "PORTMANTEAU TEST" + order_start = "tested order:" + statistic_start = "test statistic:" + p_start = " p-value:" + adj_statistic_start = "adjusted test statistic:" + unadjusted_finished = False + + in_section = False + for line in whiteness_file: + if not in_section and section_start_marker not in line: + continue + if not in_section and section_start_marker in line: + in_section = True + continue + if line.startswith(order_start): + results["whiteness"]["tested order"] = int( + line[len(order_start):]) + continue + if line.startswith(statistic_start): + results["whiteness"]["test statistic"] = float( + line[len(statistic_start):]) + continue + if line.startswith(adj_statistic_start): + results["whiteness"]["test statistic adj."] = float( + line[len(adj_statistic_start):]) + continue + if line.startswith(p_start): # same for unadjusted and adjusted + if not unadjusted_finished: + results["whiteness"]["p-value"] = \ + float(line[len(p_start):]) + unadjusted_finished = True + else: + results["whiteness"]["p-value adjusted"] = \ + float(line[len(p_start):]) + break + whiteness_file.close() + + # --------------------------------------------------------------------- + if debug_mode: + print_debug_output(results, dt_string) + + results_dict_per_det_terms[dt_s] = results + + return results_dict_per_det_terms diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci.txt new file mode 100644 index 0000000..6ffa45f --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci.txt @@ -0,0 +1,141 @@ +*** Mon, 25 Jul 2016 14:17:28 *** +VEC REPRESENTATION +endogenous variables: Dp R +exogenous variables: +deterministic variables: CONST +endogenous lags (diffs): 3 +exogenous lags: 0 +sample range: [1973 Q2, 1998 Q4], T = 103 +estimation procedure: One stage. Johansen approach + + +Lagged endogenous term: +======================= + d(Dp) d(R) +------------------------------ +d(Dp)(t-1)| -0.516 -0.322 + | (0.154) (0.133) + | {0.001} {0.016} + | [-3.358] [-2.416] +d(R) (t-1)| 0.049 0.258 + | (0.116) (0.101) + | {0.673} {0.011} + | [0.422] [2.558] +d(Dp)(t-2)| -0.655 -0.200 + | (0.105) (0.091) + | {0.000} {0.028} + | [-6.235] [-2.198] +d(R) (t-2)| 0.121 0.015 + | (0.116) (0.101) + | {0.299} {0.878} + | [1.039] [0.153] +d(Dp)(t-3)| -0.803 -0.070 + | (0.056) (0.048) + | {0.000} {0.148} + | [-14.430] [-1.448] +d(R) (t-3)| -0.050 0.224 + | (0.114) (0.098) + | {0.658} {0.023} + | [-0.442] [2.272] +------------------------------ + + + + +Loading coefficients: +===================== + d(Dp) d(R) +----------------------------- +ec1(t-1)| -0.639 0.423 + | (0.201) (0.175) + | {0.001} {0.015} + | [-3.176] [2.426] +----------------------------- + +Estimated cointegration relation(s): +==================================== + ec1(t-1) +------------------- + Dp(t-1)| 1.000 + | (0.000) + | {0.000} + | [0.000] + R (t-1)| -0.273 + | (0.050) + | {0.000} + | [-5.423] + CONST | 0.012 + | (0.004) + | {0.002} + | [3.146] +------------------- + + + +VAR REPRESENTATION + +modulus of the eigenvalues of the reverse characteristic polynomial: +|z| = ( 1.0095 1.0117 1.0117 1.0000 1.3287 1.3287 1.7308 1.7308 ) + +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + Dp R +----------------------------- + Dp(t-1)| -0.155 0.102 + | (0.253) (0.220) + | {0.540} {0.643} + | [-0.613] [0.463] + R (t-1)| 0.224 1.142 + | (0.129) (0.112) + | {0.082} {0.000} + | [1.738] [10.236] + Dp(t-2)| -0.139 0.122 + | (0.056) (0.049) + | {0.013} {0.013} + | [-2.475] [2.497] + R (t-2)| 0.072 -0.243 + | (0.170) (0.147) + | {0.673} {0.099} + | [0.422] [-1.648] + Dp(t-3)| -0.148 0.130 + | (0.057) (0.049) + | {0.009} {0.008} + | [-2.618] [2.658] + R (t-3)| -0.171 0.208 + | (0.170) (0.147) + | {0.315} {0.158} + | [-1.006] [1.412] + Dp(t-4)| 0.803 0.070 + | (0.056) (0.048) + | {0.000} {0.148} + | [14.430] [1.448] + R (t-4)| 0.050 -0.224 + | (0.114) (0.098) + | {0.658} {0.023} + | [0.442] [-2.272] +----------------------------- + + +Deterministic term: +=================== + Dp R +----------------------------- +CONST | -0.008 0.005 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +----------------------------- + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_Sigmau.txt new file mode 100644 index 0000000..1bb9e10 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_Sigmau.txt @@ -0,0 +1,14 @@ +*** Mon, 25 Jul 2016 14:17:28 *** +VECM MODEL STATISTICS +sample range: [1973 Q2, 1998 Q4], T = 103 + +Log Likelihood: 7.693576e+02 +Determinant (Cov): 9.627791e-10 + +Covariance: 3.584925e-05 -1.729222e-06 + -1.729222e-06 2.693974e-05 + +Correlation: 1.000000e+00 -5.564344e-02 + -5.564344e-02 1.000000e+00 + + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_diag.txt new file mode 100644 index 0000000..15c075f --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_diag.txt @@ -0,0 +1,59 @@ +*** Mon, 25 Jul 2016 13:43:33 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) + +tested order: 16 +test statistic: 47.2544 + p-value: 0.5842 +adjusted test statistic: 52.1375 + p-value: 0.3908 +degrees of freedom: 50.0000 + +*** Mon, 25 Jul 2016 13:43:33 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags + +LM statistic: 23.9801 + p-value: 0.2433 + df: 20.0000 + +*** Mon, 25 Jul 2016 13:43:33 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 0.7129 + p-value: 0.9497 +degrees of freedom: 4.0000 +skewness only: 0.1626 + p-value: 0.9219 +kurtosis only: 0.5503 + p-value: 0.7595 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 0.5689 + p-value: 0.9665 +degrees of freedom: 4.0000 +skewness only: 0.1453 + p-value: 0.9299 +kurtosis only: 0.4237 + p-value: 0.8091 + +*** Mon, 25 Jul 2016 13:43:33 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 0.1450 0.9301 0.0918 3.0065 +u2 0.7066 0.7024 -0.0009 3.4057 + +*** Mon, 25 Jul 2016 13:43:33 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 18.6742 0.2859 1.4861 0.1299 +u2 27.1235 0.0401 2.4631 0.0051 + +*** Mon, 25 Jul 2016 13:43:33 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 73.0452 + p-value(chi^2): 0.0051 + degrees of freedom: 45.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_fc5.txt new file mode 100755 index 0000000..0769e45 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_fc5.txt @@ -0,0 +1,23 @@ +*** Thu, 28 Jul 2016 16:41:32 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + Dp +time forecast lower CI upper CI +/- +1999 Q1 -0.0175 -0.0293 -0.0058 0.0117 +1999 Q2 -0.0035 -0.0156 0.0086 0.0121 +1999 Q3 0.0010 -0.0115 0.0136 0.0125 +1999 Q4 0.0216 0.0090 0.0342 0.0126 +2000 Q1 -0.0176 -0.0342 -0.0010 0.0166 + + R +time forecast lower CI upper CI +/- +1999 Q1 0.0393 0.0292 0.0495 0.0102 +1999 Q2 0.0402 0.0248 0.0556 0.0154 +1999 Q3 0.0411 0.0220 0.0602 0.0191 +1999 Q4 0.0411 0.0181 0.0641 0.0230 +2000 Q1 0.0423 0.0159 0.0688 0.0264 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_granger_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_granger_causality_dp_r.txt new file mode 100644 index 0000000..4e47ee2 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_granger_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 11:25:22 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 1.4382 +pval-F( l; 4, 182) = 0.2231 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.9998 +pval-Chi( c; 1) = 0.3174 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_granger_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_granger_causality_r_dp.txt new file mode 100644 index 0000000..396eea8 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_granger_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 13:43:55 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.8185 +pval-F( l; 4, 182) = 0.0053 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.9998 +pval-Chi( c; 1) = 0.3174 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_inst_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_inst_causality_dp_r.txt new file mode 100755 index 0000000..21005b3 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_inst_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:45:45 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 1.7371 +pval-F( l; 3, 188) = 0.1609 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.5489 +pval-Chi( c; 1) = 0.4588 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_inst_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_inst_causality_r_dp.txt new file mode 100755 index 0000000..6e25f7d --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_inst_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:46:00 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 4.1789 +pval-F( l; 3, 188) = 0.0068 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.5489 +pval-Chi( c; 1) = 0.4588 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_ir.txt new file mode 100755 index 0000000..7051fc4 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_ir.txt @@ -0,0 +1,29 @@ +*** Tue, 16 Aug 2016 19:30:32 *** +VECM Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time Dp R Dp R + ->Dp ->Dp ->R ->R + + point estimate 1.0000 0.0000 0.0000 1.0000 + 1 point estimate -0.1552 0.2238 0.1017 1.1424 + 2 point estimate -0.0921 0.2927 0.2220 1.0852 + 3 point estimate -0.0551 0.0773 0.3310 1.2277 + 4 point estimate 0.9197 0.1217 0.3782 1.2260 + 5 point estimate -0.1705 0.3410 0.4393 1.1486 + 6 point estimate -0.0871 0.3433 0.5101 1.1076 + 7 point estimate -0.0455 0.1257 0.5672 1.0649 + 8 point estimate 0.8901 0.1629 0.5579 1.0201 + 9 point estimate -0.1554 0.3531 0.5694 0.9811 + 10 point estimate -0.0667 0.3458 0.5995 0.9433 + 11 point estimate -0.0282 0.1345 0.6231 0.9219 + 12 point estimate 0.8642 0.1670 0.5910 0.9135 + 13 point estimate -0.1421 0.3462 0.5864 0.8999 + 14 point estimate -0.0502 0.3373 0.6044 0.8845 + 15 point estimate -0.0155 0.1354 0.6201 0.8837 + 16 point estimate 0.8357 0.1682 0.5859 0.8895 + 17 point estimate -0.1325 0.3394 0.5802 0.8863 + 18 point estimate -0.0374 0.3302 0.5972 0.8790 + 19 point estimate -0.0057 0.1380 0.6125 0.8829 + 20 point estimate 0.8066 0.1712 0.5806 0.8910 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_lagorder.txt new file mode 100755 index 0000000..c75ee9d --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ci_lagorder.txt @@ -0,0 +1,13 @@ +*** Sun, 21 Aug 2016 09:36:25 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: Dp R +deterministic variables: CONST +sample range: [1975 Q1, 1998 Q4], T = 96 + +optimal number of lags (searched up to 10 lags of 1. differences): +Akaike Info Criterion: 3 +Final Prediction Error: 3 +Hannan-Quinn Criterion: 3 +Schwarz Criterion: 3 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili.txt new file mode 100644 index 0000000..5062579 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili.txt @@ -0,0 +1,149 @@ +*** Mon, 25 Jul 2016 21:32:41 *** +VEC REPRESENTATION +endogenous variables: Dp R +exogenous variables: +deterministic variables: CONST TREND +endogenous lags (diffs): 3 +exogenous lags: 0 +sample range: [1973 Q2, 1998 Q4], T = 103 +estimation procedure: One stage. Johansen approach + + +Lagged endogenous term: +======================= + d(Dp) d(R) +------------------------------ +d(Dp)(t-1)| -0.531 -0.324 + | (0.151) (0.131) + | {0.000} {0.013} + | [-3.514] [-2.479] +d(R) (t-1)| 0.051 0.260 + | (0.117) (0.101) + | {0.660} {0.010} + | [0.440] [2.581] +d(Dp)(t-2)| -0.665 -0.202 + | (0.103) (0.089) + | {0.000} {0.024} + | [-6.427] [-2.254] +d(R) (t-2)| 0.122 0.017 + | (0.116) (0.101) + | {0.295} {0.863} + | [1.047] [0.172] +d(Dp)(t-3)| -0.808 -0.071 + | (0.055) (0.047) + | {0.000} {0.137} + | [-14.712] [-1.487] +d(R) (t-3)| -0.050 0.226 + | (0.114) (0.098) + | {0.659} {0.022} + | [-0.441] [2.295] +------------------------------ + + + + +Loading coefficients: +===================== + d(Dp) d(R) +----------------------------- +ec1(t-1)| -0.619 0.426 + | (0.198) (0.171) + | {0.002} {0.013} + | [-3.127] [2.490] +----------------------------- + +Estimated cointegration relation(s): +==================================== + ec1(t-1) +-------------------- +Dp(t-1) | 1.000 + | (0.000) + | {0.000} + | [0.000] +R (t-1) | -0.281 + | (0.063) + | {0.000} + | [-4.429] +CONST | 0.013 + | (0.006) + | {0.032} + | [2.150] +TREND(t-1)| 0.000 + | (0.000) + | {0.901} + | [-0.124] +-------------------- + + + +VAR REPRESENTATION + +modulus of the eigenvalues of the reverse characteristic polynomial: +|z| = ( 1.0095 1.0117 1.0117 1.0000 1.3224 1.3224 1.7259 1.7259 ) + +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + Dp R +----------------------------- + Dp(t-1)| -0.150 0.102 + | (0.249) (0.215) + | {0.547} {0.634} + | [-0.603] [0.475] + R (t-1)| 0.225 1.140 + | (0.129) (0.112) + | {0.081} {0.000} + | [1.745] [10.216] + Dp(t-2)| -0.134 0.122 + | (0.055) (0.048) + | {0.016} {0.011} + | [-2.415] [2.552] + R (t-2)| 0.071 -0.243 + | (0.170) (0.147) + | {0.678} {0.099} + | [0.415] [-1.649] + Dp(t-3)| -0.143 0.131 + | (0.056) (0.048) + | {0.010} {0.007} + | [-2.561] [2.716] + R (t-3)| -0.172 0.208 + | (0.170) (0.147) + | {0.312} {0.157} + | [-1.011] [1.415] + Dp(t-4)| 0.808 0.071 + | (0.055) (0.047) + | {0.000} {0.137} + | [14.712] [1.487] + R (t-4)| 0.050 -0.226 + | (0.114) (0.098) + | {0.659} {0.022} + | [0.441] [-2.295] +----------------------------- + + +Deterministic term: +=================== + Dp R +--------------------------------- +CONST (t)| -0.008 0.006 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +TREND(t-1)(t)| 0.000 0.000 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +--------------------------------- + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_Sigmau.txt new file mode 100644 index 0000000..b9fce96 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_Sigmau.txt @@ -0,0 +1,14 @@ +*** Mon, 25 Jul 2016 21:32:41 *** +VECM MODEL STATISTICS +sample range: [1973 Q2, 1998 Q4], T = 103 + +Log Likelihood: 7.693615e+02 +Determinant (Cov): 9.627057e-10 + +Covariance: 3.594755e-05 -1.704602e-06 + -1.704602e-06 2.686168e-05 + +Correlation: 1.000000e+00 -5.485571e-02 + -5.485571e-02 1.000000e+00 + + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_diag.txt new file mode 100644 index 0000000..206d304 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_diag.txt @@ -0,0 +1,59 @@ +*** Mon, 25 Jul 2016 11:45:40 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) + +tested order: 16 +test statistic: 47.3477 + p-value: 0.5804 +adjusted test statistic: 52.2349 + p-value: 0.3872 +degrees of freedom: 50.0000 + +*** Mon, 25 Jul 2016 11:45:40 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags + +LM statistic: 23.8022 + p-value: 0.2511 + df: 20.0000 + +*** Mon, 25 Jul 2016 11:45:40 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 0.7086 + p-value: 0.9503 +degrees of freedom: 4.0000 +skewness only: 0.1543 + p-value: 0.9257 +kurtosis only: 0.5543 + p-value: 0.7579 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 0.5669 + p-value: 0.9667 +degrees of freedom: 4.0000 +skewness only: 0.1378 + p-value: 0.9334 +kurtosis only: 0.4292 + p-value: 0.8069 + +*** Mon, 25 Jul 2016 11:45:40 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 0.1374 0.9336 0.0895 3.0024 +u2 0.7101 0.7011 -0.0000 3.4068 + +*** Mon, 25 Jul 2016 11:45:40 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 18.5181 0.2944 1.4703 0.1362 +u2 27.1756 0.0396 2.4700 0.0050 + +*** Mon, 25 Jul 2016 11:45:40 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 73.2472 + p-value(chi^2): 0.0049 + degrees of freedom: 45.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_fc5.txt new file mode 100755 index 0000000..3c14bab --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_fc5.txt @@ -0,0 +1,23 @@ +*** Thu, 28 Jul 2016 16:43:15 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + Dp +time forecast lower CI upper CI +/- +1999 Q1 -0.0175 -0.0292 -0.0057 0.0118 +1999 Q2 -0.0035 -0.0156 0.0086 0.0121 +1999 Q3 0.0011 -0.0115 0.0136 0.0125 +1999 Q4 0.0216 0.0090 0.0342 0.0126 +2000 Q1 -0.0175 -0.0341 -0.0009 0.0166 + + R +time forecast lower CI upper CI +/- +1999 Q1 0.0394 0.0292 0.0495 0.0102 +1999 Q2 0.0402 0.0248 0.0556 0.0154 +1999 Q3 0.0412 0.0221 0.0602 0.0190 +1999 Q4 0.0412 0.0183 0.0641 0.0229 +2000 Q1 0.0425 0.0162 0.0688 0.0263 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_granger_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_granger_causality_dp_r.txt new file mode 100644 index 0000000..fb49751 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_granger_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 11:46:09 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 1.0026 +pval-F( l; 4, 180) = 0.4076 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 1.2890 +pval-Chi( c; 1) = 0.2562 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_granger_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_granger_causality_r_dp.txt new file mode 100644 index 0000000..cdd6b11 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_granger_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 11:46:25 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.3839 +pval-F( l; 4, 180) = 0.0107 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 1.2890 +pval-Chi( c; 1) = 0.2562 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_inst_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_inst_causality_dp_r.txt new file mode 100755 index 0000000..a1c861e --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_inst_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:46:38 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 0.8349 +pval-F( l; 3, 186) = 0.4763 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.8433 +pval-Chi( c; 1) = 0.3585 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_inst_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_inst_causality_r_dp.txt new file mode 100755 index 0000000..ceafdce --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_inst_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:46:24 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.6151 +pval-F( l; 3, 186) = 0.0143 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.8433 +pval-Chi( c; 1) = 0.3585 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_ir.txt new file mode 100755 index 0000000..1b1f1c5 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_ir.txt @@ -0,0 +1,29 @@ +*** Tue, 16 Aug 2016 19:31:54 *** +VECM Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time Dp R Dp R + ->Dp ->Dp ->R ->R + + point estimate 1.0000 0.0000 0.0000 1.0000 + 1 point estimate -0.1501 0.2253 0.1024 1.1402 + 2 point estimate -0.0882 0.2937 0.2236 1.0805 + 3 point estimate -0.0520 0.0776 0.3337 1.2212 + 4 point estimate 0.9222 0.1222 0.3824 1.2155 + 5 point estimate -0.1637 0.3425 0.4444 1.1338 + 6 point estimate -0.0817 0.3436 0.5159 1.0893 + 7 point estimate -0.0411 0.1253 0.5736 1.0432 + 8 point estimate 0.8937 0.1627 0.5645 0.9954 + 9 point estimate -0.1480 0.3537 0.5759 0.9541 + 10 point estimate -0.0607 0.3451 0.6057 0.9146 + 11 point estimate -0.0233 0.1333 0.6289 0.8921 + 12 point estimate 0.8683 0.1660 0.5966 0.8830 + 13 point estimate -0.1346 0.3460 0.5915 0.8691 + 14 point estimate -0.0442 0.3361 0.6091 0.8537 + 15 point estimate -0.0104 0.1337 0.6245 0.8530 + 16 point estimate 0.8399 0.1667 0.5900 0.8591 + 17 point estimate -0.1253 0.3389 0.5840 0.8562 + 18 point estimate -0.0314 0.3287 0.6008 0.8491 + 19 point estimate -0.0006 0.1361 0.6161 0.8533 + 20 point estimate 0.8109 0.1698 0.5842 0.8617 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_lagorder.txt new file mode 100755 index 0000000..f417ff2 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cili_lagorder.txt @@ -0,0 +1,13 @@ +*** Sun, 21 Aug 2016 09:35:07 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: Dp R +deterministic variables: CONST TREND +sample range: [1975 Q1, 1998 Q4], T = 96 + +optimal number of lags (searched up to 10 lags of 1. differences): +Akaike Info Criterion: 3 +Final Prediction Error: 3 +Hannan-Quinn Criterion: 3 +Schwarz Criterion: 3 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis.txt new file mode 100644 index 0000000..22ac026 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis.txt @@ -0,0 +1,170 @@ +*** Mon, 25 Jul 2016 14:16:09 *** +VEC REPRESENTATION +endogenous variables: Dp R +exogenous variables: +deterministic variables: CONST S1 S2 S3 +endogenous lags (diffs): 3 +exogenous lags: 0 +sample range: [1973 Q2, 1998 Q4], T = 103 +estimation procedure: One stage. Johansen approach + + +Lagged endogenous term: +======================= + d(Dp) d(R) +------------------------------ +d(Dp)(t-1)| -0.334 -0.202 + | (0.141) (0.150) + | {0.018} {0.177} + | [-2.364] [-1.350] +d(R) (t-1)| 0.068 0.272 + | (0.095) (0.101) + | {0.474} {0.007} + | [0.715] [2.709] +d(Dp)(t-2)| -0.387 -0.218 + | (0.114) (0.121) + | {0.001} {0.072} + | [-3.399] [-1.802] +d(R) (t-2)| -0.003 -0.016 + | (0.095) (0.101) + | {0.975} {0.872} + | [-0.032] [-0.162] +d(Dp)(t-3)| -0.346 -0.106 + | (0.076) (0.081) + | {0.000} {0.193} + | [-4.524] [-1.301] +d(R) (t-3)| 0.020 0.225 + | (0.092) (0.098) + | {0.824} {0.021} + | [0.222] [2.303] +------------------------------ + + +Deterministic term: +=================== + d(Dp) d(R) +----------------------------- + S1(t)| -0.034 0.002 + | (0.005) (0.005) + | {0.000} {0.750} + | [-7.464] [0.318] + S2(t)| -0.018 0.009 + | (0.005) (0.005) + | {0.000} {0.074} + | [-3.814] [1.786] + S3(t)| -0.016 0.000 + | (0.005) (0.005) + | {0.000} {0.934} + | [-3.632] [-0.082] +----------------------------- + + +Loading coefficients: +===================== + d(Dp) d(R) +----------------------------- +ec1(t-1)| -0.632 0.397 + | (0.167) (0.177) + | {0.000} {0.025} + | [-3.791] [2.245] +----------------------------- + +Estimated cointegration relation(s): +==================================== + ec1(t-1) +------------------- + Dp(t-1)| 1.000 + | (0.000) + | {0.000} + | [0.000] + R (t-1)| -0.251 + | (0.044) + | {0.000} + | [-5.671] + CONST | 0.011 + | (0.003) + | {0.002} + | [3.142] +------------------- + + + +VAR REPRESENTATION + +modulus of the eigenvalues of the reverse characteristic polynomial: +|z| = ( 1.3732 1.2831 1.2831 1.0000 1.3977 1.3977 1.7293 1.7293 ) + +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + Dp R +----------------------------- + Dp(t-1)| 0.034 0.195 + | (0.218) (0.232) + | {0.875} {0.401} + | [0.157] [0.840] + R (t-1)| 0.226 1.173 + | (0.103) (0.110) + | {0.029} {0.000} + | [2.185] [10.671] + Dp(t-2)| -0.054 -0.016 + | (0.079) (0.084) + | {0.499} {0.852} + | [-0.677] [-0.186] + R (t-2)| -0.071 -0.289 + | (0.141) (0.150) + | {0.616} {0.054} + | [-0.502] [-1.931] + Dp(t-3)| 0.042 0.112 + | (0.079) (0.084) + | {0.598} {0.181} + | [0.527] [1.337] + R (t-3)| 0.023 0.242 + | (0.141) (0.150) + | {0.868} {0.107} + | [0.166] [1.613] + Dp(t-4)| 0.346 0.106 + | (0.076) (0.081) + | {0.000} {0.193} + | [4.524] [1.301] + R (t-4)| -0.020 -0.225 + | (0.092) (0.098) + | {0.824} {0.021} + | [-0.222] [-2.303] +----------------------------- + + +Deterministic term: +=================== + Dp R +----------------------------- +S1 (t)| -0.034 0.002 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +S2 (t)| -0.018 0.009 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +S3 (t)| -0.016 0.000 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +CONST | -0.007 0.004 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +----------------------------- + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_Sigmau.txt new file mode 100644 index 0000000..a27aa73 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_Sigmau.txt @@ -0,0 +1,14 @@ +*** Mon, 25 Jul 2016 14:16:09 *** +VECM MODEL STATISTICS +sample range: [1973 Q2, 1998 Q4], T = 103 + +Log Likelihood: 7.936180e+02 +Determinant (Cov): 5.983229e-10 + +Covariance: 2.307334e-05 -1.398990e-06 + -1.398990e-06 2.601618e-05 + +Correlation: 1.000000e+00 -5.710022e-02 + -5.710022e-02 1.000000e+00 + + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_diag.txt new file mode 100644 index 0000000..3df9666 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_diag.txt @@ -0,0 +1,59 @@ +*** Mon, 25 Jul 2016 13:46:16 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) + +tested order: 16 +test statistic: 47.3961 + p-value: 0.5785 +adjusted test statistic: 52.9667 + p-value: 0.3604 +degrees of freedom: 50.0000 + +*** Mon, 25 Jul 2016 13:46:16 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags + +LM statistic: 15.6596 + p-value: 0.7375 + df: 20.0000 + +*** Mon, 25 Jul 2016 13:46:16 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 2.3854 + p-value: 0.6653 +degrees of freedom: 4.0000 +skewness only: 0.2816 + p-value: 0.8687 +kurtosis only: 2.1038 + p-value: 0.3493 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 2.1178 + p-value: 0.7141 +degrees of freedom: 4.0000 +skewness only: 0.3071 + p-value: 0.8577 +kurtosis only: 1.8107 + p-value: 0.4044 + +*** Mon, 25 Jul 2016 13:46:16 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 0.5789 0.7487 -0.0320 2.6383 +u2 2.1556 0.3403 -0.1199 3.6669 + +*** Mon, 25 Jul 2016 13:46:16 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 15.5911 0.4818 1.1872 0.2999 +u2 26.4160 0.0484 2.3709 0.0070 + +*** Mon, 25 Jul 2016 13:46:16 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 77.5396 + p-value(chi^2): 0.0018 + degrees of freedom: 45.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_fc5.txt new file mode 100755 index 0000000..316d077 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_fc5.txt @@ -0,0 +1,23 @@ +*** Thu, 28 Jul 2016 16:42:33 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + Dp +time forecast lower CI upper CI +/- +1999 Q1 -0.0224 -0.0318 -0.0129 0.0094 +1999 Q2 -0.0039 -0.0136 0.0058 0.0097 +1999 Q3 0.0033 -0.0066 0.0132 0.0099 +1999 Q4 0.0244 0.0143 0.0345 0.0101 +2000 Q1 -0.0249 -0.0359 -0.0139 0.0110 + + R +time forecast lower CI upper CI +/- +1999 Q1 0.0396 0.0296 0.0496 0.0100 +1999 Q2 0.0408 0.0253 0.0562 0.0154 +1999 Q3 0.0402 0.0210 0.0594 0.0192 +1999 Q4 0.0388 0.0158 0.0619 0.0231 +2000 Q1 0.0400 0.0134 0.0666 0.0266 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_granger_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_granger_causality_dp_r.txt new file mode 100644 index 0000000..bf1ffee --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_granger_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 11:30:46 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 0.7474 +pval-F( l; 4, 176) = 0.5610 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.4071 +pval-Chi( c; 1) = 0.5235 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_granger_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_granger_causality_r_dp.txt new file mode 100644 index 0000000..75206e1 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_granger_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 11:30:58 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.5314 +pval-F( l; 4, 176) = 0.0084 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.4071 +pval-Chi( c; 1) = 0.5235 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_inst_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_inst_causality_dp_r.txt new file mode 100755 index 0000000..a031395 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_inst_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:47:54 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 2.1104 +pval-F( l; 3, 182) = 0.1005 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.6068 +pval-Chi( c; 1) = 0.4360 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_inst_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_inst_causality_r_dp.txt new file mode 100755 index 0000000..7d84392 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_inst_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:47:43 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 4.2498 +pval-F( l; 3, 182) = 0.0063 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.6068 +pval-Chi( c; 1) = 0.4360 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_ir.txt new file mode 100755 index 0000000..e46079f --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_ir.txt @@ -0,0 +1,29 @@ +*** Tue, 16 Aug 2016 19:30:53 *** +VECM Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time Dp R Dp R + ->Dp ->Dp ->R ->R + + point estimate 1.0000 0.0000 0.0000 1.0000 + 1 point estimate 0.0343 0.2262 0.1949 1.1727 + 2 point estimate -0.0083 0.2023 0.2196 1.1306 + 3 point estimate 0.0755 0.1911 0.3116 1.2648 + 4 point estimate 0.4097 0.2183 0.4733 1.2744 + 5 point estimate 0.1077 0.2852 0.5556 1.2246 + 6 point estimate 0.0771 0.2694 0.5629 1.2141 + 7 point estimate 0.1328 0.2612 0.6113 1.1860 + 8 point estimate 0.2484 0.2670 0.6620 1.1509 + 9 point estimate 0.1502 0.2849 0.6771 1.1331 + 10 point estimate 0.1332 0.2774 0.6723 1.1187 + 11 point estimate 0.1600 0.2713 0.6807 1.1029 + 12 point estimate 0.1993 0.2720 0.6909 1.0937 + 13 point estimate 0.1658 0.2773 0.6907 1.0893 + 14 point estimate 0.1573 0.2742 0.6848 1.0857 + 15 point estimate 0.1685 0.2714 0.6847 1.0829 + 16 point estimate 0.1817 0.2716 0.6865 1.0818 + 17 point estimate 0.1699 0.2734 0.6852 1.0817 + 18 point estimate 0.1660 0.2723 0.6824 1.0818 + 19 point estimate 0.1704 0.2713 0.6819 1.0817 + 20 point estimate 0.1749 0.2715 0.6825 1.0819 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_lagorder.txt new file mode 100755 index 0000000..ef3dd0b --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cis_lagorder.txt @@ -0,0 +1,13 @@ +*** Sun, 21 Aug 2016 09:36:02 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: Dp R +deterministic variables: CONST S1 S2 S3 +sample range: [1975 Q1, 1998 Q4], T = 96 + +optimal number of lags (searched up to 10 lags of 1. differences): +Akaike Info Criterion: 3 +Final Prediction Error: 3 +Hannan-Quinn Criterion: 0 +Schwarz Criterion: 0 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli.txt new file mode 100644 index 0000000..603d735 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli.txt @@ -0,0 +1,178 @@ +*** Mon, 25 Jul 2016 14:20:40 *** +VEC REPRESENTATION +endogenous variables: Dp R +exogenous variables: +deterministic variables: CONST S1 S2 S3 TREND +endogenous lags (diffs): 3 +exogenous lags: 0 +sample range: [1973 Q2, 1998 Q4], T = 103 +estimation procedure: One stage. Johansen approach + + +Lagged endogenous term: +======================= + d(Dp) d(R) +------------------------------ +d(Dp)(t-1)| -0.296 -0.185 + | (0.145) (0.156) + | {0.042} {0.236} + | [-2.034] [-1.184] +d(R) (t-1)| 0.063 0.265 + | (0.094) (0.101) + | {0.502} {0.009} + | [0.672] [2.624] +d(Dp)(t-2)| -0.362 -0.206 + | (0.116) (0.125) + | {0.002} {0.097} + | [-3.114] [-1.657] +d(R) (t-2)| -0.004 -0.023 + | (0.095) (0.102) + | {0.969} {0.819} + | [-0.039] [-0.229] +d(Dp)(t-3)| -0.333 -0.100 + | (0.077) (0.083) + | {0.000} {0.225} + | [-4.328] [-1.215] +d(R) (t-3)| 0.022 0.218 + | (0.091) (0.098) + | {0.808} {0.026} + | [0.243] [2.229] +------------------------------ + + +Deterministic term: +=================== + d(Dp) d(R) +----------------------------- + S1(t)| -0.034 0.002 + | (0.005) (0.005) + | {0.000} {0.746} + | [-7.490] [0.324] + S2(t)| -0.018 0.009 + | (0.005) (0.005) + | {0.000} {0.074} + | [-3.840] [1.788] + S3(t)| -0.016 0.000 + | (0.005) (0.005) + | {0.000} {0.939} + | [-3.641] [-0.077] +----------------------------- + + +Loading coefficients: +===================== + d(Dp) d(R) +----------------------------- +ec1(t-1)| -0.684 0.374 + | (0.174) (0.186) + | {0.000} {0.044} + | [-3.940] [2.011] +----------------------------- + +Estimated cointegration relation(s): +==================================== + ec1(t-1) +-------------------- +Dp(t-1) | 1.000 + | (0.000) + | {0.000} + | [0.000] +R (t-1) | -0.229 + | (0.052) + | {0.000} + | [-4.395] +CONST | 0.008 + | (0.005) + | {0.090} + | [1.693] +TREND(t-1)| 0.000 + | (0.000) + | {0.642} + | [0.466] +-------------------- + + + +VAR REPRESENTATION + +modulus of the eigenvalues of the reverse characteristic polynomial: +|z| = ( 1.3775 1.2878 1.2878 1.7459 1.7459 1.0000 1.4263 1.4263 ) + +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + Dp R +----------------------------- + Dp(t-1)| 0.020 0.190 + | (0.226) (0.243) + | {0.929} {0.435} + | [0.089] [0.781] + R (t-1)| 0.220 1.179 + | (0.102) (0.110) + | {0.032} {0.000} + | [2.148] [10.758] + Dp(t-2)| -0.066 -0.022 + | (0.080) (0.085) + | {0.408} {0.799} + | [-0.827] [-0.255] + R (t-2)| -0.067 -0.288 + | (0.140) (0.150) + | {0.633} {0.055} + | [-0.478] [-1.918] + Dp(t-3)| 0.029 0.106 + | (0.080) (0.086) + | {0.721} {0.215} + | [0.357] [1.239] + R (t-3)| 0.026 0.242 + | (0.140) (0.151) + | {0.854} {0.108} + | [0.184] [1.606] + Dp(t-4)| 0.333 0.100 + | (0.077) (0.083) + | {0.000} {0.225} + | [4.328] [1.215] + R (t-4)| -0.022 -0.218 + | (0.091) (0.098) + | {0.808} {0.026} + | [-0.243] [-2.229] +----------------------------- + + +Deterministic term: +=================== + Dp R +--------------------------------- +S1 (t)| -0.034 0.002 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +S2 (t)| -0.018 0.009 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +S3 (t)| -0.016 0.000 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +CONST (t)| -0.006 0.003 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +TREND(t-1)(t)| 0.000 0.000 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +--------------------------------- + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_Sigmau.txt new file mode 100644 index 0000000..5cf08a8 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_Sigmau.txt @@ -0,0 +1,14 @@ +*** Mon, 25 Jul 2016 14:20:40 *** +VECM MODEL STATISTICS +sample range: [1973 Q2, 1998 Q4], T = 103 + +Log Likelihood: 7.936778e+02 +Determinant (Cov): 5.976211e-10 + +Covariance: 2.284983e-05 -1.539185e-06 + -1.539185e-06 2.625798e-05 + +Correlation: 1.000000e+00 -6.283749e-02 + -6.283749e-02 1.000000e+00 + + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_diag.txt new file mode 100644 index 0000000..59b6332 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_diag.txt @@ -0,0 +1,59 @@ +*** Mon, 25 Jul 2016 11:41:17 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) + +tested order: 16 +test statistic: 47.0532 + p-value: 0.5924 +adjusted test statistic: 52.6125 + p-value: 0.3732 +degrees of freedom: 50.0000 + +*** Mon, 25 Jul 2016 11:41:17 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags + +LM statistic: 15.5903 + p-value: 0.7417 + df: 20.0000 + +*** Mon, 25 Jul 2016 11:41:17 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 2.1348 + p-value: 0.7110 +degrees of freedom: 4.0000 +skewness only: 0.2728 + p-value: 0.8725 +kurtosis only: 1.8620 + p-value: 0.3942 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 1.8624 + p-value: 0.7610 +degrees of freedom: 4.0000 +skewness only: 0.2989 + p-value: 0.8612 +kurtosis only: 1.5636 + p-value: 0.4576 + +*** Mon, 25 Jul 2016 11:41:17 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 0.5197 0.7712 -0.0429 2.6627 +u2 1.9722 0.3730 -0.1153 3.6375 + +*** Mon, 25 Jul 2016 11:41:17 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 14.8383 0.5365 1.1181 0.3563 +u2 26.3504 0.0493 2.3624 0.0072 + +*** Mon, 25 Jul 2016 11:41:17 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 75.1732 + p-value(chi^2): 0.0032 + degrees of freedom: 45.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_fc5.txt new file mode 100755 index 0000000..a9b615d --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_fc5.txt @@ -0,0 +1,23 @@ +*** Thu, 28 Jul 2016 16:44:02 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + Dp +time forecast lower CI upper CI +/- +1999 Q1 -0.0224 -0.0318 -0.0131 0.0094 +1999 Q2 -0.0039 -0.0136 0.0057 0.0096 +1999 Q3 0.0033 -0.0065 0.0131 0.0098 +1999 Q4 0.0244 0.0143 0.0344 0.0100 +2000 Q1 -0.0250 -0.0358 -0.0141 0.0108 + + R +time forecast lower CI upper CI +/- +1999 Q1 0.0396 0.0295 0.0496 0.0100 +1999 Q2 0.0407 0.0251 0.0562 0.0155 +1999 Q3 0.0400 0.0207 0.0594 0.0194 +1999 Q4 0.0386 0.0153 0.0619 0.0233 +2000 Q1 0.0397 0.0128 0.0667 0.0270 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_granger_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_granger_causality_dp_r.txt new file mode 100644 index 0000000..ccc9e92 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_granger_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 11:42:24 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 0.4480 +pval-F( l; 4, 174) = 0.7738 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.6101 +pval-Chi( c; 1) = 0.4348 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_granger_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_granger_causality_r_dp.txt new file mode 100644 index 0000000..97c21c4 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_granger_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 11:42:07 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.0268 +pval-F( l; 4, 174) = 0.0191 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.6101 +pval-Chi( c; 1) = 0.4348 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_inst_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_inst_causality_dp_r.txt new file mode 100755 index 0000000..2b48c89 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_inst_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:47:09 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 1.4258 +pval-F( l; 3, 180) = 0.2368 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.9332 +pval-Chi( c; 1) = 0.3340 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_inst_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_inst_causality_r_dp.txt new file mode 100755 index 0000000..2f6caf3 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_inst_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:47:23 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.6535 +pval-F( l; 3, 180) = 0.0137 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.9332 +pval-Chi( c; 1) = 0.3340 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_ir.txt new file mode 100755 index 0000000..901e8ac --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_ir.txt @@ -0,0 +1,29 @@ +*** Tue, 16 Aug 2016 19:31:35 *** +VECM Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time Dp R Dp R + ->Dp ->Dp ->R ->R + + point estimate 1.0000 0.0000 0.0000 1.0000 + 1 point estimate 0.0202 0.2197 0.1896 1.1795 + 2 point estimate -0.0238 0.1966 0.2057 1.1445 + 3 point estimate 0.0592 0.1878 0.2892 1.2841 + 4 point estimate 0.3913 0.2109 0.4418 1.3058 + 5 point estimate 0.0888 0.2751 0.5184 1.2677 + 6 point estimate 0.0570 0.2614 0.5212 1.2663 + 7 point estimate 0.1110 0.2544 0.5652 1.2480 + 8 point estimate 0.2243 0.2592 0.6137 1.2209 + 9 point estimate 0.1274 0.2769 0.6287 1.2083 + 10 point estimate 0.1100 0.2708 0.6241 1.1982 + 11 point estimate 0.1356 0.2656 0.6327 1.1857 + 12 point estimate 0.1737 0.2662 0.6435 1.1782 + 13 point estimate 0.1414 0.2715 0.6446 1.1747 + 14 point estimate 0.1330 0.2690 0.6398 1.1717 + 15 point estimate 0.1435 0.2666 0.6402 1.1690 + 16 point estimate 0.1563 0.2667 0.6426 1.1678 + 17 point estimate 0.1452 0.2685 0.6420 1.1674 + 18 point estimate 0.1414 0.2676 0.6396 1.1672 + 19 point estimate 0.1455 0.2667 0.6394 1.1670 + 20 point estimate 0.1498 0.2668 0.6401 1.1669 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_lagorder.txt new file mode 100755 index 0000000..8dd1a7a --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cisli_lagorder.txt @@ -0,0 +1,13 @@ +*** Sun, 21 Aug 2016 09:35:29 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: Dp R +deterministic variables: CONST S1 S2 S3 TREND +sample range: [1975 Q1, 1998 Q4], T = 96 + +optimal number of lags (searched up to 10 lags of 1. differences): +Akaike Info Criterion: 3 +Final Prediction Error: 3 +Hannan-Quinn Criterion: 0 +Schwarz Criterion: 0 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co.txt new file mode 100644 index 0000000..e17f527 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co.txt @@ -0,0 +1,146 @@ +*** Tue, 21 Jun 2016 11:28:38 *** +VEC REPRESENTATION +endogenous variables: Dp R +exogenous variables: +deterministic variables: CONST +endogenous lags (diffs): 3 +exogenous lags: 0 +sample range: [1973 Q2, 1998 Q4], T = 103 +estimation procedure: One stage. Johansen approach + + +Lagged endogenous term: +======================= + d(Dp) d(R) +------------------------------ +d(Dp)(t-1)| -0.515 -0.321 + | (0.153) (0.133) + | {0.001} {0.016} + | [-3.359] [-2.418] +d(R) (t-1)| 0.045 0.253 + | (0.117) (0.101) + | {0.701} {0.012} + | [0.384] [2.507] +d(Dp)(t-2)| -0.655 -0.200 + | (0.105) (0.091) + | {0.000} {0.028} + | [-6.239] [-2.202] +d(R) (t-2)| 0.118 0.013 + | (0.116) (0.101) + | {0.308} {0.900} + | [1.019] [0.126] +d(Dp)(t-3)| -0.803 -0.070 + | (0.056) (0.048) + | {0.000} {0.146} + | [-14.446] [-1.453] +d(R) (t-3)| -0.053 0.220 + | (0.114) (0.098) + | {0.640} {0.025} + | [-0.468] [2.238] +------------------------------ + + +Deterministic term: +=================== + d(Dp) d(R) +----------------------------- +CONST | -0.008 0.005 + | (0.003) (0.002) + | {0.001} {0.028} + | [-3.207] [2.196] +----------------------------- + + +Loading coefficients: +===================== + d(Dp) d(R) +----------------------------- +ec1(t-1)| -0.640 0.423 + | (0.201) (0.174) + | {0.001} {0.015} + | [-3.183] [2.426] +----------------------------- + +Estimated cointegration relation(s): +==================================== + ec1(t-1) +------------------- + Dp(t-1)| 1.000 + | (0.000) + | {0.000} + | [0.000] + R (t-1)| -0.273 + | (0.050) + | {0.000} + | [-5.422] +------------------- + + + +VAR REPRESENTATION + +modulus of the eigenvalues of the reverse characteristic polynomial: +|z| = ( 1.0095 1.0117 1.0117 1.0000 1.3347 1.3347 1.7356 1.7356 ) + +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + Dp R +----------------------------- + Dp(t-1)| -0.156 0.101 + | (0.253) (0.219) + | {0.538} {0.644} + | [-0.615] [0.463] + R (t-1)| 0.220 1.138 + | (0.129) (0.112) + | {0.088} {0.000} + | [1.705] [10.193] + Dp(t-2)| -0.139 0.121 + | (0.056) (0.049) + | {0.013} {0.013} + | [-2.482] [2.497] + R (t-2)| 0.074 -0.240 + | (0.170) (0.147) + | {0.664} {0.102} + | [0.434] [-1.635] + Dp(t-3)| -0.148 0.130 + | (0.056) (0.049) + | {0.009} {0.008} + | [-2.624] [2.660] + R (t-3)| -0.172 0.207 + | (0.170) (0.147) + | {0.312} {0.159} + | [-1.011] [1.410] + Dp(t-4)| 0.803 0.070 + | (0.056) (0.048) + | {0.000} {0.146} + | [14.446] [1.453] + R (t-4)| 0.053 -0.220 + | (0.114) (0.098) + | {0.640} {0.025} + | [0.468] [-2.238] +----------------------------- + + +Deterministic term: +=================== + Dp R +----------------------------- +CONST | -0.008 0.005 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +----------------------------- + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_Sigmau.txt new file mode 100644 index 0000000..42fd225 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_Sigmau.txt @@ -0,0 +1,14 @@ +*** Tue, 21 Jun 2016 11:28:38 *** +VECM MODEL STATISTICS +sample range: [1973 Q2, 1998 Q4], T = 103 + +Log Likelihood: 7.697274e+02 +Determinant (Cov): 9.558234e-10 + +Covariance: 3.576095e-05 -1.831235e-06 + -1.831235e-06 2.682190e-05 + +Correlation: 1.000000e+00 -5.912821e-02 + -5.912821e-02 1.000000e+00 + + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_diag.txt new file mode 100644 index 0000000..c8f1057 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_diag.txt @@ -0,0 +1,59 @@ +*** Mon, 25 Jul 2016 13:41:39 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) + +tested order: 16 +test statistic: 47.5770 + p-value: 0.5712 +adjusted test statistic: 52.5065 + p-value: 0.3771 +degrees of freedom: 50.0000 + +*** Mon, 25 Jul 2016 13:41:39 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags + +LM statistic: 22.9164 + p-value: 0.2929 + df: 20.0000 + +*** Mon, 25 Jul 2016 13:41:39 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 0.6897 + p-value: 0.9526 +degrees of freedom: 4.0000 +skewness only: 0.1654 + p-value: 0.9206 +kurtosis only: 0.5243 + p-value: 0.7694 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 0.5506 + p-value: 0.9684 +degrees of freedom: 4.0000 +skewness only: 0.1476 + p-value: 0.9288 +kurtosis only: 0.4030 + p-value: 0.8175 + +*** Mon, 25 Jul 2016 13:41:39 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 0.1473 0.9290 0.0926 3.0035 +u2 0.6764 0.7130 0.0088 3.3966 + +*** Mon, 25 Jul 2016 13:41:39 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 18.8623 0.2759 1.5052 0.1226 +u2 27.0631 0.0408 2.4552 0.0052 + +*** Mon, 25 Jul 2016 13:41:39 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 73.3027 + p-value(chi^2): 0.0049 + degrees of freedom: 45.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_fc5.txt new file mode 100755 index 0000000..19a2fb1 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_fc5.txt @@ -0,0 +1,23 @@ +*** Thu, 28 Jul 2016 16:36:26 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + Dp +time forecast lower CI upper CI +/- +1999 Q1 -0.0178 -0.0295 -0.0061 0.0117 +1999 Q2 -0.0038 -0.0159 0.0083 0.0121 +1999 Q3 0.0006 -0.0119 0.0131 0.0125 +1999 Q4 0.0212 0.0086 0.0337 0.0125 +2000 Q1 -0.0183 -0.0348 -0.0018 0.0165 + + R +time forecast lower CI upper CI +/- +1999 Q1 0.0390 0.0289 0.0492 0.0102 +1999 Q2 0.0395 0.0241 0.0548 0.0154 +1999 Q3 0.0399 0.0210 0.0589 0.0189 +1999 Q4 0.0394 0.0166 0.0622 0.0228 +2000 Q1 0.0401 0.0140 0.0663 0.0261 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_granger_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_granger_causality_dp_r.txt new file mode 100644 index 0000000..faf725a --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_granger_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 10:26:21 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 1.4382 +pval-F( l; 4, 182) = 0.2231 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.9998 +pval-Chi( c; 1) = 0.3174 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_granger_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_granger_causality_r_dp.txt new file mode 100644 index 0000000..1275373 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_granger_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 10:26:53 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.8185 +pval-F( l; 4, 182) = 0.0053 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.9998 +pval-Chi( c; 1) = 0.3174 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_inst_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_inst_causality_dp_r.txt new file mode 100755 index 0000000..d1069c7 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_inst_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:40:32 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 1.7371 +pval-F( l; 3, 188) = 0.1609 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.5489 +pval-Chi( c; 1) = 0.4588 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_inst_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_inst_causality_r_dp.txt new file mode 100755 index 0000000..4c246ca --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_inst_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:40:16 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 4.1789 +pval-F( l; 3, 188) = 0.0068 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.5489 +pval-Chi( c; 1) = 0.4588 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_ir.txt new file mode 100755 index 0000000..4b23da7 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_ir.txt @@ -0,0 +1,29 @@ +*** Tue, 16 Aug 2016 19:24:50 *** +VECM Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time Dp R Dp R + ->Dp ->Dp ->R ->R + + point estimate 1.0000 0.0000 0.0000 1.0000 + 1 point estimate -0.1556 0.2197 0.1013 1.1377 + 2 point estimate -0.0928 0.2894 0.2208 1.0761 + 3 point estimate -0.0561 0.0730 0.3287 1.2140 + 4 point estimate 0.9185 0.1197 0.3746 1.2094 + 5 point estimate -0.1723 0.3356 0.4339 1.1308 + 6 point estimate -0.0890 0.3390 0.5033 1.0889 + 7 point estimate -0.0476 0.1208 0.5593 1.0463 + 8 point estimate 0.8881 0.1606 0.5491 1.0023 + 9 point estimate -0.1582 0.3479 0.5597 0.9642 + 10 point estimate -0.0693 0.3417 0.5892 0.9275 + 11 point estimate -0.0308 0.1300 0.6125 0.9072 + 12 point estimate 0.8619 0.1650 0.5804 0.8995 + 13 point estimate -0.1453 0.3413 0.5756 0.8867 + 14 point estimate -0.0530 0.3336 0.5936 0.8719 + 15 point estimate -0.0182 0.1311 0.6095 0.8714 + 16 point estimate 0.8333 0.1663 0.5754 0.8774 + 17 point estimate -0.1359 0.3349 0.5697 0.8744 + 18 point estimate -0.0403 0.3266 0.5868 0.8672 + 19 point estimate -0.0084 0.1338 0.6024 0.8711 + 20 point estimate 0.8044 0.1694 0.5706 0.8791 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_lagorder.txt new file mode 100755 index 0000000..c283dd7 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_co_lagorder.txt @@ -0,0 +1,13 @@ +*** Sun, 21 Aug 2016 09:33:20 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: Dp R +deterministic variables: CONST +sample range: [1975 Q1, 1998 Q4], T = 96 + +optimal number of lags (searched up to 10 lags of 1. differences): +Akaike Info Criterion: 3 +Final Prediction Error: 3 +Hannan-Quinn Criterion: 3 +Schwarz Criterion: 3 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo.txt new file mode 100644 index 0000000..c94df94 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo.txt @@ -0,0 +1,154 @@ +*** Tue, 21 Jun 2016 11:34:28 *** +VEC REPRESENTATION +endogenous variables: Dp R +exogenous variables: +deterministic variables: CONST TREND +endogenous lags (diffs): 3 +exogenous lags: 0 +sample range: [1973 Q2, 1998 Q4], T = 103 +estimation procedure: One stage. Johansen approach + + +Lagged endogenous term: +======================= + d(Dp) d(R) +------------------------------ +d(Dp)(t-1)| -0.519 -0.318 + | (0.154) (0.133) + | {0.001} {0.017} + | [-3.377] [-2.395] +d(R) (t-1)| 0.044 0.252 + | (0.117) (0.101) + | {0.707} {0.013} + | [0.376] [2.482] +d(Dp)(t-2)| -0.657 -0.198 + | (0.105) (0.091) + | {0.000} {0.029} + | [-6.254] [-2.180] +d(R) (t-2)| 0.118 0.012 + | (0.117) (0.101) + | {0.313} {0.908} + | [1.008] [0.115] +d(Dp)(t-3)| -0.804 -0.069 + | (0.056) (0.048) + | {0.000} {0.151} + | [-14.467] [-1.437] +d(R) (t-3)| -0.055 0.219 + | (0.114) (0.099) + | {0.633} {0.026} + | [-0.478] [2.221] +------------------------------ + + +Deterministic term: +=================== + d(Dp) d(R) +----------------------------- +CONST | -0.008 0.005 + | (0.003) (0.002) + | {0.003} {0.028} + | [-3.011] [2.195] +TREND(t)| 0.000 0.000 + | (0.000) (0.000) + | {0.937} {0.791} + | [-0.080] [-0.264] +----------------------------- + + +Loading coefficients: +===================== + d(Dp) d(R) +----------------------------- +ec1(t-1)| -0.635 0.419 + | (0.201) (0.174) + | {0.002} {0.016} + | [-3.154] [2.402] +----------------------------- + +Estimated cointegration relation(s): +==================================== + ec1(t-1) +------------------- + Dp(t-1)| 1.000 + | (0.000) + | {0.000} + | [0.000] + R (t-1)| -0.276 + | (0.063) + | {0.000} + | [-4.400] +------------------- + + + +VAR REPRESENTATION + +modulus of the eigenvalues of the reverse characteristic polynomial: +|z| = ( 1.0094 1.0116 1.0116 1.0000 1.3356 1.3356 1.7369 1.7369 ) + +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + Dp R +----------------------------- + Dp(t-1)| -0.154 0.100 + | (0.253) (0.219) + | {0.542} {0.647} + | [-0.609] [0.458] + R (t-1)| 0.220 1.136 + | (0.130) (0.112) + | {0.090} {0.000} + | [1.693] [10.121] + Dp(t-2)| -0.138 0.120 + | (0.056) (0.049) + | {0.014} {0.013} + | [-2.456] [2.473] + R (t-2)| 0.074 -0.240 + | (0.170) (0.147) + | {0.665} {0.102} + | [0.433] [-1.633] + Dp(t-3)| -0.147 0.129 + | (0.057) (0.049) + | {0.009} {0.008} + | [-2.597] [2.635] + R (t-3)| -0.172 0.207 + | (0.170) (0.147) + | {0.311} {0.158} + | [-1.013] [1.411] + Dp(t-4)| 0.804 0.069 + | (0.056) (0.048) + | {0.000} {0.151} + | [14.467] [1.437] + R (t-4)| 0.055 -0.219 + | (0.114) (0.099) + | {0.633} {0.026} + | [0.478] [-2.221] +----------------------------- + + +Deterministic term: +=================== + Dp R +----------------------------- +CONST | -0.008 0.005 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +TREND(t)| 0.000 0.000 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +----------------------------- + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_Sigmau.txt new file mode 100644 index 0000000..4758c44 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_Sigmau.txt @@ -0,0 +1,14 @@ +*** Tue, 21 Jun 2016 11:34:28 *** +VECM MODEL STATISTICS +sample range: [1973 Q2, 1998 Q4], T = 103 + +Log Likelihood: 7.697651e+02 +Determinant (Cov): 9.551175e-10 + +Covariance: 3.579404e-05 -1.829322e-06 + -1.829322e-06 2.677719e-05 + +Correlation: 1.000000e+00 -5.908841e-02 + -5.908841e-02 1.000000e+00 + + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_diag.txt new file mode 100644 index 0000000..deff78a --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_diag.txt @@ -0,0 +1,59 @@ +*** Mon, 25 Jul 2016 13:46:58 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) + +tested order: 16 +test statistic: 47.6914 + p-value: 0.5665 +adjusted test statistic: 52.6457 + p-value: 0.3720 +degrees of freedom: 50.0000 + +*** Mon, 25 Jul 2016 13:46:58 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags + +LM statistic: 23.0235 + p-value: 0.2876 + df: 20.0000 + +*** Mon, 25 Jul 2016 13:46:58 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 0.6397 + p-value: 0.9586 +degrees of freedom: 4.0000 +skewness only: 0.1148 + p-value: 0.9442 +kurtosis only: 0.5248 + p-value: 0.7692 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 0.5085 + p-value: 0.9727 +degrees of freedom: 4.0000 +skewness only: 0.1036 + p-value: 0.9495 +kurtosis only: 0.4049 + p-value: 0.8167 + +*** Mon, 25 Jul 2016 13:46:58 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 0.0980 0.9522 0.0756 3.0028 +u2 0.6770 0.7128 -0.0133 3.3963 + +*** Mon, 25 Jul 2016 13:46:58 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 19.1284 0.2621 1.5325 0.1129 +u2 26.9344 0.0422 2.4383 0.0055 + +*** Mon, 25 Jul 2016 13:46:58 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 73.4375 + p-value(chi^2): 0.0047 + degrees of freedom: 45.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_fc5.txt new file mode 100755 index 0000000..43da3ed --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_fc5.txt @@ -0,0 +1,23 @@ +*** Thu, 28 Jul 2016 16:38:11 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + Dp +time forecast lower CI upper CI +/- +1999 Q1 -0.0179 -0.0297 -0.0062 0.0117 +1999 Q2 -0.0040 -0.0161 0.0081 0.0121 +1999 Q3 0.0004 -0.0121 0.0129 0.0125 +1999 Q4 0.0210 0.0084 0.0335 0.0125 +2000 Q1 -0.0187 -0.0352 -0.0022 0.0165 + + R +time forecast lower CI upper CI +/- +1999 Q1 0.0388 0.0287 0.0490 0.0101 +1999 Q2 0.0390 0.0237 0.0544 0.0153 +1999 Q3 0.0392 0.0203 0.0581 0.0189 +1999 Q4 0.0384 0.0157 0.0611 0.0227 +2000 Q1 0.0388 0.0128 0.0648 0.0260 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_granger_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_granger_causality_dp_r.txt new file mode 100644 index 0000000..5518a3a --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_granger_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 13:47:29 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 1.0026 +pval-F( l; 4, 180) = 0.4076 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 1.2890 +pval-Chi( c; 1) = 0.2562 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_granger_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_granger_causality_r_dp.txt new file mode 100644 index 0000000..20d175e --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_granger_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 10:58:59 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.3839 +pval-F( l; 4, 180) = 0.0107 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 1.2890 +pval-Chi( c; 1) = 0.2562 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_inst_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_inst_causality_dp_r.txt new file mode 100755 index 0000000..b20d63c --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_inst_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:40:57 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 0.8349 +pval-F( l; 3, 186) = 0.4763 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.8433 +pval-Chi( c; 1) = 0.3585 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_inst_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_inst_causality_r_dp.txt new file mode 100755 index 0000000..721b35a --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_inst_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:41:11 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.6151 +pval-F( l; 3, 186) = 0.0143 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.8433 +pval-Chi( c; 1) = 0.3585 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_ir.txt new file mode 100755 index 0000000..67b065f --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_ir.txt @@ -0,0 +1,29 @@ +*** Tue, 16 Aug 2016 19:25:18 *** +VECM Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time Dp R Dp R + ->Dp ->Dp ->R ->R + + point estimate 1.0000 0.0000 0.0000 1.0000 + 1 point estimate -0.1544 0.2197 0.1003 1.1359 + 2 point estimate -0.0922 0.2892 0.2187 1.0723 + 3 point estimate -0.0561 0.0720 0.3256 1.2083 + 4 point estimate 0.9185 0.1200 0.3706 1.2021 + 5 point estimate -0.1714 0.3360 0.4291 1.1223 + 6 point estimate -0.0888 0.3390 0.4977 1.0794 + 7 point estimate -0.0479 0.1202 0.5530 1.0363 + 8 point estimate 0.8878 0.1611 0.5424 0.9920 + 9 point estimate -0.1577 0.3484 0.5526 0.9538 + 10 point estimate -0.0693 0.3418 0.5819 0.9170 + 11 point estimate -0.0314 0.1295 0.6050 0.8968 + 12 point estimate 0.8615 0.1656 0.5729 0.8893 + 13 point estimate -0.1449 0.3419 0.5681 0.8766 + 14 point estimate -0.0531 0.3338 0.5860 0.8619 + 15 point estimate -0.0188 0.1307 0.6019 0.8616 + 16 point estimate 0.8330 0.1669 0.5679 0.8676 + 17 point estimate -0.1356 0.3354 0.5622 0.8647 + 18 point estimate -0.0404 0.3268 0.5793 0.8575 + 19 point estimate -0.0090 0.1334 0.5948 0.8614 + 20 point estimate 0.8042 0.1699 0.5632 0.8695 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_lagorder.txt new file mode 100755 index 0000000..a2f11e9 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_colo_lagorder.txt @@ -0,0 +1,13 @@ +*** Sun, 21 Aug 2016 09:34:48 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: Dp R +deterministic variables: CONST TREND +sample range: [1975 Q1, 1998 Q4], T = 96 + +optimal number of lags (searched up to 10 lags of 1. differences): +Akaike Info Criterion: 3 +Final Prediction Error: 3 +Hannan-Quinn Criterion: 3 +Schwarz Criterion: 3 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos.txt new file mode 100644 index 0000000..ddc5942 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos.txt @@ -0,0 +1,170 @@ +*** Tue, 21 Jun 2016 11:30:21 *** +VEC REPRESENTATION +endogenous variables: Dp R +exogenous variables: +deterministic variables: CONST S1 S2 S3 +endogenous lags (diffs): 3 +exogenous lags: 0 +sample range: [1973 Q2, 1998 Q4], T = 103 +estimation procedure: One stage. Johansen approach + + +Lagged endogenous term: +======================= + d(Dp) d(R) +------------------------------ +d(Dp)(t-1)| -0.339 -0.210 + | (0.141) (0.149) + | {0.016} {0.159} + | [-2.404] [-1.407] +d(R) (t-1)| 0.065 0.269 + | (0.095) (0.100) + | {0.490} {0.007} + | [0.690] [2.678] +d(Dp)(t-2)| -0.391 -0.223 + | (0.114) (0.121) + | {0.001} {0.064} + | [-3.432] [-1.849] +d(R) (t-2)| -0.004 -0.018 + | (0.095) (0.101) + | {0.964} {0.860} + | [-0.045] [-0.176] +d(Dp)(t-3)| -0.347 -0.108 + | (0.076) (0.081) + | {0.000} {0.183} + | [-4.549] [-1.332] +d(R) (t-3)| 0.018 0.223 + | (0.092) (0.098) + | {0.842} {0.022} + | [0.200] [2.284] +------------------------------ + + +Deterministic term: +=================== + d(Dp) d(R) +----------------------------- +CONST | -0.007 0.004 + | (0.002) (0.002) + | {0.000} {0.040} + | [-3.801] [2.054] +S1 (t)| -0.034 0.001 + | (0.005) (0.005) + | {0.000} {0.759} + | [-7.474] [0.307] +S2 (t)| -0.018 0.009 + | (0.005) (0.005) + | {0.000} {0.074} + | [-3.821] [1.784] +S3 (t)| -0.016 0.000 + | (0.005) (0.005) + | {0.000} {0.931} + | [-3.636] [-0.086] +----------------------------- + + +Loading coefficients: +===================== + d(Dp) d(R) +----------------------------- +ec1(t-1)| -0.625 0.408 + | (0.167) (0.176) + | {0.000} {0.021} + | [-3.752] [2.312] +----------------------------- + +Estimated cointegration relation(s): +==================================== + ec1(t-1) +------------------- + Dp(t-1)| 1.000 + | (0.000) + | {0.000} + | [0.000] + R (t-1)| -0.252 + | (0.044) + | {0.000} + | [-5.697] +------------------- + + + +VAR REPRESENTATION + +modulus of the eigenvalues of the reverse characteristic polynomial: +|z| = ( 1.3729 1.0000 1.4004 1.4004 1.2824 1.2824 1.7310 1.7310 ) + +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + Dp R +----------------------------- + Dp(t-1)| 0.036 0.197 + | (0.218) (0.231) + | {0.869} {0.393} + | [0.165] [0.854] + R (t-1)| 0.223 1.166 + | (0.104) (0.110) + | {0.031} {0.000} + | [2.152] [10.621] + Dp(t-2)| -0.052 -0.013 + | (0.079) (0.084) + | {0.514} {0.879} + | [-0.653] [-0.152] + R (t-2)| -0.070 -0.287 + | (0.141) (0.149) + | {0.621} {0.055} + | [-0.495] [-1.923] + Dp(t-3)| 0.044 0.115 + | (0.079) (0.084) + | {0.582} {0.169} + | [0.551] [1.376] + R (t-3)| 0.023 0.241 + | (0.141) (0.149) + | {0.872} {0.107} + | [0.161] [1.612] + Dp(t-4)| 0.347 0.108 + | (0.076) (0.081) + | {0.000} {0.183} + | [4.549] [1.332] + R (t-4)| -0.018 -0.223 + | (0.092) (0.098) + | {0.842} {0.022} + | [-0.200] [-2.284] +----------------------------- + + +Deterministic term: +=================== + Dp R +----------------------------- +CONST | -0.007 0.004 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +S1 (t)| -0.034 0.001 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +S2 (t)| -0.018 0.009 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +S3 (t)| -0.016 0.000 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +----------------------------- + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_Sigmau.txt new file mode 100644 index 0000000..c70fad1 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_Sigmau.txt @@ -0,0 +1,14 @@ +*** Tue, 21 Jun 2016 11:30:21 *** +VECM MODEL STATISTICS +sample range: [1973 Q2, 1998 Q4], T = 103 + +Log Likelihood: 7.940801e+02 +Determinant (Cov): 5.929254e-10 + +Covariance: 2.303948e-05 -1.480276e-06 + -1.480276e-06 2.583030e-05 + +Correlation: 1.000000e+00 -6.067946e-02 + -6.067946e-02 1.000000e+00 + + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_diag.txt new file mode 100644 index 0000000..360fbcc --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_diag.txt @@ -0,0 +1,59 @@ +*** Mon, 25 Jul 2016 13:48:53 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) + +tested order: 16 +test statistic: 47.8463 + p-value: 0.5602 +adjusted test statistic: 53.4707 + p-value: 0.3425 +degrees of freedom: 50.0000 + +*** Mon, 25 Jul 2016 13:48:53 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags + +LM statistic: 14.4330 + p-value: 0.8079 + df: 20.0000 + +*** Mon, 25 Jul 2016 13:48:53 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 2.2794 + p-value: 0.6845 +degrees of freedom: 4.0000 +skewness only: 0.2422 + p-value: 0.8860 +kurtosis only: 2.0372 + p-value: 0.3611 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 2.0208 + p-value: 0.7319 +degrees of freedom: 4.0000 +skewness only: 0.2670 + p-value: 0.8750 +kurtosis only: 1.7539 + p-value: 0.4161 + +*** Mon, 25 Jul 2016 13:48:53 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 0.5649 0.7539 -0.0341 2.6436 +u2 2.0538 0.3581 -0.1097 3.6561 + +*** Mon, 25 Jul 2016 13:48:53 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 15.4552 0.4916 1.1746 0.3096 +u2 26.4312 0.0483 2.3728 0.0070 + +*** Mon, 25 Jul 2016 13:48:53 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 77.4668 + p-value(chi^2): 0.0019 + degrees of freedom: 45.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_fc5.txt new file mode 100755 index 0000000..53237ef --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_fc5.txt @@ -0,0 +1,23 @@ +*** Thu, 28 Jul 2016 16:37:09 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + Dp +time forecast lower CI upper CI +/- +1999 Q1 -0.0226 -0.0320 -0.0132 0.0094 +1999 Q2 -0.0042 -0.0139 0.0054 0.0097 +1999 Q3 0.0029 -0.0070 0.0128 0.0099 +1999 Q4 0.0239 0.0138 0.0339 0.0101 +2000 Q1 -0.0256 -0.0365 -0.0146 0.0109 + + R +time forecast lower CI upper CI +/- +1999 Q1 0.0393 0.0293 0.0492 0.0100 +1999 Q2 0.0399 0.0246 0.0553 0.0153 +1999 Q3 0.0389 0.0199 0.0579 0.0190 +1999 Q4 0.0370 0.0142 0.0597 0.0228 +2000 Q1 0.0376 0.0113 0.0638 0.0262 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_granger_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_granger_causality_dp_r.txt new file mode 100644 index 0000000..e00a98c --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_granger_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 10:42:29 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 0.7474 +pval-F( l; 4, 176) = 0.5610 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.4071 +pval-Chi( c; 1) = 0.5235 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_granger_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_granger_causality_r_dp.txt new file mode 100644 index 0000000..0eaab77 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_granger_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 13:49:28 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.5314 +pval-F( l; 4, 176) = 0.0084 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.4071 +pval-Chi( c; 1) = 0.5235 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_inst_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_inst_causality_dp_r.txt new file mode 100755 index 0000000..e400968 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_inst_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:42:09 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 2.1104 +pval-F( l; 3, 182) = 0.1005 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.6068 +pval-Chi( c; 1) = 0.4360 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_inst_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_inst_causality_r_dp.txt new file mode 100755 index 0000000..c3e8ae1 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_inst_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:42:26 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 4.2498 +pval-F( l; 3, 182) = 0.0063 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.6068 +pval-Chi( c; 1) = 0.4360 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_ir.txt new file mode 100755 index 0000000..70d42f4 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_ir.txt @@ -0,0 +1,29 @@ +*** Tue, 16 Aug 2016 19:24:23 *** +VECM Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time Dp R Dp R + ->Dp ->Dp ->R ->R + + point estimate 1.0000 0.0000 0.0000 1.0000 + 1 point estimate 0.0360 0.2231 0.1973 1.1659 + 2 point estimate -0.0063 0.1984 0.2244 1.1168 + 3 point estimate 0.0778 0.1862 0.3188 1.2448 + 4 point estimate 0.4119 0.2141 0.4820 1.2490 + 5 point estimate 0.1098 0.2800 0.5641 1.1952 + 6 point estimate 0.0793 0.2633 0.5710 1.1816 + 7 point estimate 0.1353 0.2548 0.6191 1.1514 + 8 point estimate 0.2508 0.2608 0.6692 1.1154 + 9 point estimate 0.1524 0.2784 0.6833 1.0972 + 10 point estimate 0.1353 0.2705 0.6776 1.0827 + 11 point estimate 0.1623 0.2644 0.6855 1.0671 + 12 point estimate 0.2015 0.2652 0.6952 1.0582 + 13 point estimate 0.1678 0.2704 0.6946 1.0541 + 14 point estimate 0.1593 0.2672 0.6884 1.0509 + 15 point estimate 0.1705 0.2644 0.6881 1.0484 + 16 point estimate 0.1837 0.2647 0.6899 1.0475 + 17 point estimate 0.1718 0.2665 0.6885 1.0476 + 18 point estimate 0.1679 0.2654 0.6856 1.0478 + 19 point estimate 0.1724 0.2644 0.6852 1.0479 + 20 point estimate 0.1768 0.2646 0.6859 1.0481 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_lagorder.txt new file mode 100755 index 0000000..2b207c2 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_cos_lagorder.txt @@ -0,0 +1,13 @@ +*** Sun, 21 Aug 2016 09:33:58 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: Dp R +deterministic variables: CONST S1 S2 S3 +sample range: [1975 Q1, 1998 Q4], T = 96 + +optimal number of lags (searched up to 10 lags of 1. differences): +Akaike Info Criterion: 3 +Final Prediction Error: 3 +Hannan-Quinn Criterion: 0 +Schwarz Criterion: 0 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo.txt new file mode 100644 index 0000000..373e2e4 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo.txt @@ -0,0 +1,178 @@ +*** Tue, 21 Jun 2016 11:32:53 *** +VEC REPRESENTATION +endogenous variables: Dp R +exogenous variables: +deterministic variables: CONST S1 S2 S3 TREND +endogenous lags (diffs): 3 +exogenous lags: 0 +sample range: [1973 Q2, 1998 Q4], T = 103 +estimation procedure: One stage. Johansen approach + + +Lagged endogenous term: +======================= + d(Dp) d(R) +------------------------------ +d(Dp)(t-1)| -0.302 -0.193 + | (0.146) (0.156) + | {0.039} {0.216} + | [-2.069] [-1.238] +d(R) (t-1)| 0.061 0.260 + | (0.095) (0.101) + | {0.521} {0.010} + | [0.642] [2.571] +d(Dp)(t-2)| -0.366 -0.212 + | (0.117) (0.125) + | {0.002} {0.089} + | [-3.139] [-1.701] +d(R) (t-2)| -0.005 -0.025 + | (0.095) (0.102) + | {0.956} {0.804} + | [-0.055] [-0.249] +d(Dp)(t-3)| -0.335 -0.103 + | (0.077) (0.082) + | {0.000} {0.212} + | [-4.350] [-1.247] +d(R) (t-3)| 0.020 0.215 + | (0.092) (0.098) + | {0.831} {0.028} + | [0.214] [2.193] +------------------------------ + + +Deterministic term: +=================== + d(Dp) d(R) +----------------------------- +CONST | -0.006 0.003 + | (0.002) (0.002) + | {0.000} {0.088} + | [-3.541] [1.708] +S1 (t)| -0.034 0.002 + | (0.005) (0.005) + | {0.000} {0.752} + | [-7.493] [0.316] +S2 (t)| -0.018 0.009 + | (0.005) (0.005) + | {0.000} {0.075} + | [-3.845] [1.782] +S3 (t)| -0.016 0.000 + | (0.005) (0.005) + | {0.000} {0.936} + | [-3.644] [-0.081] +TREND(t)| 0.000 0.000 + | (0.000) (0.000) + | {0.589} {0.936} + | [-0.540] [0.080] +----------------------------- + + +Loading coefficients: +===================== + d(Dp) d(R) +----------------------------- +ec1(t-1)| -0.675 0.385 + | (0.175) (0.187) + | {0.000} {0.040} + | [-3.856] [2.058] +----------------------------- + +Estimated cointegration relation(s): +==================================== + ec1(t-1) +------------------- + Dp(t-1)| 1.000 + | (0.000) + | {0.000} + | [0.000] + R (t-1)| -0.232 + | (0.052) + | {0.000} + | [-4.430] +------------------- + + + +VAR REPRESENTATION + +modulus of the eigenvalues of the reverse characteristic polynomial: +|z| = ( 1.3768 1.2868 1.2868 1.7489 1.7489 1.0000 1.4303 1.4303 ) + +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + Dp R +----------------------------- + Dp(t-1)| 0.022 0.192 + | (0.228) (0.244) + | {0.923} {0.431} + | [0.097] [0.787] + R (t-1)| 0.217 1.171 + | (0.103) (0.110) + | {0.035} {0.000} + | [2.106] [10.629] + Dp(t-2)| -0.064 -0.018 + | (0.080) (0.085) + | {0.426} {0.828} + | [-0.797] [-0.217] + R (t-2)| -0.066 -0.286 + | (0.140) (0.150) + | {0.637} {0.056} + | [-0.472] [-1.908] + Dp(t-3)| 0.031 0.109 + | (0.080) (0.086) + | {0.701} {0.202} + | [0.384] [1.275] + R (t-3)| 0.025 0.240 + | (0.140) (0.150) + | {0.859} {0.109} + | [0.177] [1.603] + Dp(t-4)| 0.335 0.103 + | (0.077) (0.082) + | {0.000} {0.212} + | [4.350] [1.247] + R (t-4)| -0.020 -0.215 + | (0.092) (0.098) + | {0.831} {0.028} + | [-0.214] [-2.193] +----------------------------- + + +Deterministic term: +=================== + Dp R +----------------------------- +CONST | -0.006 0.003 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +S1 (t)| -0.034 0.002 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +S2 (t)| -0.018 0.009 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +S3 (t)| -0.016 0.000 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +TREND(t)| 0.000 0.000 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +----------------------------- + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_Sigmau.txt new file mode 100644 index 0000000..12d19a7 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_Sigmau.txt @@ -0,0 +1,14 @@ +*** Tue, 21 Jun 2016 11:32:53 *** +VECM MODEL STATISTICS +sample range: [1973 Q2, 1998 Q4], T = 103 + +Log Likelihood: 7.941435e+02 +Determinant (Cov): 5.921885e-10 + +Covariance: 2.283862e-05 -1.599784e-06 + -1.599784e-06 2.604132e-05 + +Correlation: 1.000000e+00 -6.559867e-02 + -6.559867e-02 1.000000e+00 + + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_diag.txt new file mode 100644 index 0000000..ea78ff5 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_diag.txt @@ -0,0 +1,59 @@ +*** Mon, 25 Jul 2016 13:50:25 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) + +tested order: 16 +test statistic: 47.5281 + p-value: 0.5731 +adjusted test statistic: 53.1533 + p-value: 0.3537 +degrees of freedom: 50.0000 + +*** Mon, 25 Jul 2016 13:50:25 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags + +LM statistic: 14.4240 + p-value: 0.8084 + df: 20.0000 + +*** Mon, 25 Jul 2016 13:50:25 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 2.1499 + p-value: 0.7082 +degrees of freedom: 4.0000 +skewness only: 0.3098 + p-value: 0.8565 +kurtosis only: 1.8401 + p-value: 0.3985 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 1.8898 + p-value: 0.7560 +degrees of freedom: 4.0000 +skewness only: 0.3385 + p-value: 0.8443 +kurtosis only: 1.5513 + p-value: 0.4604 + +*** Mon, 25 Jul 2016 13:50:25 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 0.4993 0.7791 -0.0475 2.6724 +u2 1.9942 0.3690 -0.1221 3.6364 + +*** Mon, 25 Jul 2016 13:50:25 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 14.6214 0.5525 1.0984 0.3735 +u2 26.1501 0.0520 2.3368 0.0079 + +*** Mon, 25 Jul 2016 13:50:25 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 74.6546 + p-value(chi^2): 0.0036 + degrees of freedom: 45.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_fc5.txt new file mode 100755 index 0000000..3910658 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_fc5.txt @@ -0,0 +1,23 @@ +*** Thu, 28 Jul 2016 16:39:52 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + Dp +time forecast lower CI upper CI +/- +1999 Q1 -0.0227 -0.0321 -0.0133 0.0094 +1999 Q2 -0.0043 -0.0139 0.0053 0.0096 +1999 Q3 0.0028 -0.0070 0.0126 0.0098 +1999 Q4 0.0237 0.0138 0.0337 0.0100 +2000 Q1 -0.0258 -0.0366 -0.0150 0.0108 + + R +time forecast lower CI upper CI +/- +1999 Q1 0.0390 0.0290 0.0490 0.0100 +1999 Q2 0.0395 0.0240 0.0549 0.0154 +1999 Q3 0.0382 0.0190 0.0573 0.0191 +1999 Q4 0.0359 0.0130 0.0589 0.0230 +2000 Q1 0.0362 0.0098 0.0627 0.0265 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_granger_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_granger_causality_dp_r.txt new file mode 100644 index 0000000..9a3112b --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_granger_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 13:50:44 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 0.4480 +pval-F( l; 4, 174) = 0.7738 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.6101 +pval-Chi( c; 1) = 0.4348 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_granger_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_granger_causality_r_dp.txt new file mode 100644 index 0000000..5e39d59 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_granger_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 13:50:53 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.0268 +pval-F( l; 4, 174) = 0.0191 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.6101 +pval-Chi( c; 1) = 0.4348 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_inst_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_inst_causality_dp_r.txt new file mode 100755 index 0000000..efd8133 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_inst_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:41:45 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 1.4258 +pval-F( l; 3, 180) = 0.2368 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.9332 +pval-Chi( c; 1) = 0.3340 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_inst_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_inst_causality_r_dp.txt new file mode 100755 index 0000000..6e6f20a --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_inst_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:41:33 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.6535 +pval-F( l; 3, 180) = 0.0137 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.9332 +pval-Chi( c; 1) = 0.3340 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_ir.txt new file mode 100755 index 0000000..b52ec91 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_ir.txt @@ -0,0 +1,29 @@ +*** Tue, 16 Aug 2016 19:25:44 *** +VECM Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time Dp R Dp R + ->Dp ->Dp ->R ->R + + point estimate 1.0000 0.0000 0.0000 1.0000 + 1 point estimate 0.0221 0.2173 0.1917 1.1713 + 2 point estimate -0.0215 0.1932 0.2102 1.1279 + 3 point estimate 0.0619 0.1830 0.2961 1.2598 + 4 point estimate 0.3939 0.2071 0.4502 1.2750 + 5 point estimate 0.0912 0.2706 0.5263 1.2323 + 6 point estimate 0.0595 0.2559 0.5285 1.2272 + 7 point estimate 0.1138 0.2483 0.5723 1.2062 + 8 point estimate 0.2273 0.2536 0.6201 1.1778 + 9 point estimate 0.1299 0.2709 0.6340 1.1645 + 10 point estimate 0.1125 0.2644 0.6285 1.1541 + 11 point estimate 0.1382 0.2591 0.6366 1.1415 + 12 point estimate 0.1765 0.2599 0.6470 1.1343 + 13 point estimate 0.1438 0.2651 0.6475 1.1310 + 14 point estimate 0.1353 0.2624 0.6424 1.1282 + 15 point estimate 0.1460 0.2600 0.6427 1.1258 + 16 point estimate 0.1588 0.2602 0.6450 1.1247 + 17 point estimate 0.1475 0.2620 0.6443 1.1246 + 18 point estimate 0.1438 0.2611 0.6418 1.1245 + 19 point estimate 0.1479 0.2602 0.6416 1.1243 + 20 point estimate 0.1523 0.2603 0.6424 1.1243 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_lagorder.txt new file mode 100755 index 0000000..d5858e9 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_coslo_lagorder.txt @@ -0,0 +1,13 @@ +*** Sun, 21 Aug 2016 09:34:22 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: Dp R +deterministic variables: CONST S1 S2 S3 TREND +sample range: [1975 Q1, 1998 Q4], T = 96 + +optimal number of lags (searched up to 10 lags of 1. differences): +Akaike Info Criterion: 3 +Final Prediction Error: 3 +Hannan-Quinn Criterion: 0 +Schwarz Criterion: 0 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc.txt new file mode 100644 index 0000000..de2ff84 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc.txt @@ -0,0 +1,128 @@ +*** Tue, 21 Jun 2016 11:25:25 *** +VEC REPRESENTATION +endogenous variables: Dp R +exogenous variables: +deterministic variables: +endogenous lags (diffs): 3 +exogenous lags: 0 +sample range: [1973 Q2, 1998 Q4], T = 103 +estimation procedure: One stage. Johansen approach + + +Lagged endogenous term: +======================= + d(Dp) d(R) +------------------------------ +d(Dp)(t-1)| -0.588 -0.082 + | (0.144) (0.127) + | {0.000} {0.518} + | [-4.072] [-0.646] +d(R) (t-1)| 0.117 0.186 + | (0.112) (0.099) + | {0.296} {0.060} + | [1.046] [1.880] +d(Dp)(t-2)| -0.704 -0.040 + | (0.099) (0.087) + | {0.000} {0.644} + | [-7.124] [-0.462] +d(R) (t-2)| 0.187 -0.045 + | (0.113) (0.100) + | {0.098} {0.655} + | [1.653] [-0.446] +d(Dp)(t-3)| -0.825 0.009 + | (0.053) (0.047) + | {0.000} {0.846} + | [-15.489] [0.194] +d(R) (t-3)| 0.023 0.172 + | (0.112) (0.099) + | {0.836} {0.080} + | [0.207] [1.748] +------------------------------ + + + + +Loading coefficients: +===================== + d(Dp) d(R) +----------------------------- +ec1(t-1)| -0.546 0.106 + | (0.190) (0.167) + | {0.004} {0.527} + | [-2.880] [0.632] +----------------------------- + +Estimated cointegration relation(s): +==================================== + ec1(t-1) +------------------- + Dp(t-1)| 1.000 + | (0.000) + | {0.000} + | [0.000] + R (t-1)| -0.111 + | (0.014) + | {0.000} + | [-7.798] +------------------- + + + +VAR REPRESENTATION + +modulus of the eigenvalues of the reverse characteristic polynomial: +|z| = ( 1.0098 1.0121 1.0121 1.0000 1.1621 1.8586 1.8586 1.6916 ) + +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + Dp R +----------------------------- + Dp(t-1)| -0.134 0.023 + | (0.238) (0.210) + | {0.575} {0.911} + | [-0.561] [0.112] + R (t-1)| 0.178 1.174 + | (0.114) (0.101) + | {0.119} {0.000} + | [1.557] [11.665] + Dp(t-2)| -0.116 0.042 + | (0.054) (0.047) + | {0.031} {0.375} + | [-2.158] [0.886] + R (t-2)| 0.070 -0.231 + | (0.171) (0.151) + | {0.682} {0.127} + | [0.410] [-1.526] + Dp(t-3)| -0.122 0.049 + | (0.053) (0.047) + | {0.022} {0.293} + | [-2.291] [1.052] + R (t-3)| -0.164 0.217 + | (0.172) (0.151) + | {0.338} {0.152} + | [-0.958] [1.433] + Dp(t-4)| 0.825 -0.009 + | (0.053) (0.047) + | {0.000} {0.846} + | [15.489] [-0.194] + R (t-4)| -0.023 -0.172 + | (0.112) (0.099) + | {0.836} {0.080} + | [-0.207] [-1.748] +----------------------------- + + + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_Sigmau.txt new file mode 100644 index 0000000..8543dd1 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_Sigmau.txt @@ -0,0 +1,14 @@ +*** Tue, 21 Jun 2016 11:25:25 *** +VECM MODEL STATISTICS +sample range: [1973 Q2, 1998 Q4], T = 103 + +Log Likelihood: 7.663536e+02 +Determinant (Cov): 1.021192e-09 + +Covariance: 3.642544e-05 -3.485125e-06 + -3.485125e-06 2.836858e-05 + +Correlation: 1.000000e+00 -1.084170e-01 + -1.084170e-01 1.000000e+00 + + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_diag.txt new file mode 100644 index 0000000..eb803a0 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_diag.txt @@ -0,0 +1,59 @@ +*** Mon, 25 Jul 2016 10:05:54 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) + +tested order: 16 +test statistic: 48.8795 + p-value: 0.5184 +adjusted test statistic: 53.9964 + p-value: 0.3243 +degrees of freedom: 50.0000 + +*** Mon, 25 Jul 2016 10:05:54 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags + +LM statistic: 41.7097 + p-value: 0.0030 + df: 20.0000 + +*** Mon, 25 Jul 2016 10:05:54 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 2.6293 + p-value: 0.6216 +degrees of freedom: 4.0000 +skewness only: 2.2140 + p-value: 0.3306 +kurtosis only: 0.4153 + p-value: 0.8125 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 2.3763 + p-value: 0.6669 +degrees of freedom: 4.0000 +skewness only: 2.1432 + p-value: 0.3425 +kurtosis only: 0.2331 + p-value: 0.8900 + +*** Mon, 25 Jul 2016 10:05:54 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 2.1830 0.3357 0.3524 3.1089 +u2 0.5265 0.7685 0.0020 3.3502 + +*** Mon, 25 Jul 2016 10:05:54 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 12.0814 0.7384 0.8769 0.5971 +u2 26.0997 0.0526 2.3303 0.0081 + +*** Mon, 25 Jul 2016 10:05:54 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 62.4334 + p-value(chi^2): 0.0435 + degrees of freedom: 45.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_fc5.txt new file mode 100755 index 0000000..072b5a8 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_fc5.txt @@ -0,0 +1,23 @@ +*** Thu, 28 Jul 2016 16:35:11 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + Dp +time forecast lower CI upper CI +/- +1999 Q1 -0.0145 -0.0263 -0.0027 0.0118 +1999 Q2 -0.0012 -0.0133 0.0109 0.0121 +1999 Q3 0.0031 -0.0094 0.0156 0.0125 +1999 Q4 0.0233 0.0108 0.0358 0.0125 +2000 Q1 -0.0134 -0.0297 0.0029 0.0163 + + R +time forecast lower CI upper CI +/- +1999 Q1 0.0380 0.0275 0.0484 0.0104 +1999 Q2 0.0374 0.0213 0.0535 0.0161 +1999 Q3 0.0369 0.0168 0.0569 0.0200 +1999 Q4 0.0355 0.0112 0.0597 0.0242 +2000 Q1 0.0355 0.0073 0.0636 0.0282 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_granger_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_granger_causality_dp_r.txt new file mode 100644 index 0000000..0e47dfa --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_granger_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 09:57:00 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 0.8755 +pval-F( l; 4, 184) = 0.4797 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 1.5808 +pval-Chi( c; 1) = 0.2086 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_granger_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_granger_causality_r_dp.txt new file mode 100644 index 0000000..03adb45 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_granger_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 09:58:26 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.3765 +pval-F( l; 4, 184) = 0.0108 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 1.5808 +pval-Chi( c; 1) = 0.2086 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_inst_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_inst_causality_dp_r.txt new file mode 100755 index 0000000..8f93d9c --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_inst_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:37:21 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 0.5527 +pval-F( l; 3, 190) = 0.6469 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 1.2429 +pval-Chi( c; 1) = 0.2649 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_inst_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_inst_causality_r_dp.txt new file mode 100755 index 0000000..de0f737 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_inst_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:39:22 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.2345 +pval-F( l; 3, 190) = 0.0235 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 1.2429 +pval-Chi( c; 1) = 0.2649 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_ir.txt new file mode 100755 index 0000000..dd983f1 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_ir.txt @@ -0,0 +1,29 @@ +*** Tue, 16 Aug 2016 19:20:13 *** +VECM Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time Dp R Dp R + ->Dp ->Dp ->R ->R + + point estimate 1.0000 0.0000 0.0000 1.0000 + 1 point estimate -0.1337 0.1776 0.0235 1.1743 + 2 point estimate -0.0938 0.2550 0.0664 1.1525 + 3 point estimate -0.0803 0.0681 0.1142 1.3129 + 4 point estimate 0.8843 0.0377 0.1023 1.3794 + 5 point estimate -0.1932 0.2232 0.1181 1.3795 + 6 point estimate -0.1364 0.2675 0.1579 1.3959 + 7 point estimate -0.1164 0.0777 0.1938 1.4110 + 8 point estimate 0.8085 0.0526 0.1731 1.4203 + 9 point estimate -0.2218 0.2257 0.1816 1.4232 + 10 point estimate -0.1535 0.2634 0.2124 1.4182 + 11 point estimate -0.1308 0.0822 0.2398 1.4197 + 12 point estimate 0.7532 0.0594 0.2143 1.4278 + 13 point estimate -0.2341 0.2240 0.2178 1.4275 + 14 point estimate -0.1573 0.2582 0.2428 1.4200 + 15 point estimate -0.1338 0.0851 0.2650 1.4211 + 16 point estimate 0.7097 0.0650 0.2373 1.4283 + 17 point estimate -0.2376 0.2220 0.2381 1.4275 + 18 point estimate -0.1542 0.2530 0.2596 1.4203 + 19 point estimate -0.1310 0.0877 0.2784 1.4213 + 20 point estimate 0.6731 0.0701 0.2500 1.4281 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_lagorder.txt new file mode 100755 index 0000000..04268d3 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_nc_lagorder.txt @@ -0,0 +1,12 @@ +*** Sun, 21 Aug 2016 09:32:02 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: Dp R +sample range: [1975 Q1, 1998 Q4], T = 96 + +optimal number of lags (searched up to 10 lags of 1. differences): +Akaike Info Criterion: 3 +Final Prediction Error: 3 +Hannan-Quinn Criterion: 3 +Schwarz Criterion: 3 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs.txt new file mode 100644 index 0000000..acef1fe --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs.txt @@ -0,0 +1,162 @@ +*** Tue, 21 Jun 2016 11:36:47 *** +VEC REPRESENTATION +endogenous variables: Dp R +exogenous variables: +deterministic variables: S1 S2 S3 +endogenous lags (diffs): 3 +exogenous lags: 0 +sample range: [1973 Q2, 1998 Q4], T = 103 +estimation procedure: One stage. Johansen approach + + +Lagged endogenous term: +======================= + d(Dp) d(R) +------------------------------ +d(Dp)(t-1)| -0.417 0.027 + | (0.132) (0.142) + | {0.002} {0.848} + | [-3.164] [0.192] +d(R) (t-1)| 0.130 0.207 + | (0.092) (0.099) + | {0.156} {0.035} + | [1.419] [2.103] +d(Dp)(t-2)| -0.442 -0.065 + | (0.109) (0.118) + | {0.000} {0.578} + | [-4.038] [-0.556] +d(R) (t-2)| 0.055 -0.067 + | (0.094) (0.101) + | {0.558} {0.507} + | [0.586] [-0.663] +d(Dp)(t-3)| -0.368 -0.034 + | (0.076) (0.081) + | {0.000} {0.675} + | [-4.855] [-0.420] +d(R) (t-3)| 0.085 0.181 + | (0.091) (0.098) + | {0.352} {0.064} + | [0.931] [1.854] +------------------------------ + + +Deterministic term: +=================== + d(Dp) d(R) +----------------------------- + S1(t)| -0.034 0.002 + | (0.005) (0.005) + | {0.000} {0.697} + | [-7.472] [0.390] + S2(t)| -0.018 0.009 + | (0.005) (0.005) + | {0.000} {0.074} + | [-3.797] [1.788] + S3(t)| -0.017 0.000 + | (0.005) (0.005) + | {0.000} {0.980} + | [-3.624] [-0.025] +----------------------------- + + +Loading coefficients: +===================== + d(Dp) d(R) +----------------------------- +ec1(t-1)| -0.518 0.090 + | (0.151) (0.162) + | {0.001} {0.580} + | [-3.431] [0.554] +----------------------------- + +Estimated cointegration relation(s): +==================================== + ec1(t-1) +------------------- + Dp(t-1)| 1.000 + | (0.000) + | {0.000} + | [0.000] + R (t-1)| -0.108 + | (0.012) + | {0.000} + | [-8.905] +------------------- + + + +VAR REPRESENTATION + +modulus of the eigenvalues of the reverse characteristic polynomial: +|z| = ( 1.3631 1.2805 1.2805 1.8318 1.8318 1.0000 1.2153 1.7166 ) + +Legend: +======= + Equation 1 Equation 2 ... +------------------------------------------ +Variable 1 | Coefficient ... + | (Std. Dev.) + | {p - Value} + | [t - Value] +Variable 2 | ... +... +------------------------------------------ + + +Lagged endogenous term: +======================= + Dp R +----------------------------- + Dp(t-1)| 0.065 0.117 + | (0.201) (0.215) + | {0.747} {0.587} + | [0.322] [0.543] + R (t-1)| 0.186 1.198 + | (0.093) (0.100) + | {0.046} {0.000} + | [1.996] [11.961] + Dp(t-2)| -0.025 -0.093 + | (0.078) (0.084) + | {0.748} {0.268} + | [-0.321] [-1.109] + R (t-2)| -0.075 -0.274 + | (0.142) (0.153) + | {0.597} {0.073} + | [-0.529] [-1.794] + Dp(t-3)| 0.074 0.031 + | (0.077) (0.083) + | {0.339} {0.707} + | [0.956] [0.376] + R (t-3)| 0.030 0.248 + | (0.143) (0.153) + | {0.834} {0.105} + | [0.209] [1.620] + Dp(t-4)| 0.368 0.034 + | (0.076) (0.081) + | {0.000} {0.675} + | [4.855] [0.420] + R (t-4)| -0.085 -0.181 + | (0.091) (0.098) + | {0.352} {0.064} + | [-0.931] [-1.854] +----------------------------- + + +Deterministic term: +=================== + Dp R +----------------------------- + S1(t)| -0.034 0.002 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] + S2(t)| -0.018 0.009 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] + S3(t)| -0.017 0.000 + | (0.000) (0.000) + | {0.000} {0.000} + | [0.000] [0.000] +----------------------------- + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_Sigmau.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_Sigmau.txt new file mode 100644 index 0000000..be76932 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_Sigmau.txt @@ -0,0 +1,14 @@ +*** Tue, 21 Jun 2016 11:36:47 *** +VECM MODEL STATISTICS +sample range: [1973 Q2, 1998 Q4], T = 103 + +Log Likelihood: 7.907212e+02 +Determinant (Cov): 6.332912e-10 + +Covariance: 2.359687e-05 -2.956435e-06 + -2.956435e-06 2.720835e-05 + +Correlation: 1.000000e+00 -1.166783e-01 + -1.166783e-01 1.000000e+00 + + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_diag.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_diag.txt new file mode 100644 index 0000000..1009596 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_diag.txt @@ -0,0 +1,59 @@ +*** Mon, 25 Jul 2016 13:55:40 *** +PORTMANTEAU TEST (H0:Rh=(r1,...,rh)=0) + +tested order: 16 +test statistic: 48.0815 + p-value: 0.5507 +adjusted test statistic: 53.8138 + p-value: 0.3305 +degrees of freedom: 50.0000 + +*** Mon, 25 Jul 2016 13:55:40 *** +LM-TYPE TEST FOR AUTOCORRELATION with 5 lags + +LM statistic: 23.5983 + p-value: 0.2604 + df: 20.0000 + +*** Mon, 25 Jul 2016 13:55:40 *** +TESTS FOR NONNORMALITY + +Reference: Doornik & Hansen (1994) +joint test statistic: 1.2601 + p-value: 0.8681 +degrees of freedom: 4.0000 +skewness only: 0.2625 + p-value: 0.8770 +kurtosis only: 0.9976 + p-value: 0.6073 + +Reference: Lütkepohl (1993), Introduction to Multiple Time Series Analysis, 2ed, p. 153 +joint test statistic: 1.0210 + p-value: 0.9066 +degrees of freedom: 4.0000 +skewness only: 0.2477 + p-value: 0.8835 +kurtosis only: 0.7733 + p-value: 0.6793 + +*** Mon, 25 Jul 2016 13:55:40 *** +JARQUE-BERA TEST + +variable teststat p-Value(Chi^2) skewness kurtosis +u1 0.5868 0.7457 0.0939 2.6815 +u2 1.1219 0.5707 -0.0883 3.4798 + +*** Mon, 25 Jul 2016 13:55:40 *** +ARCH-LM TEST with 16 lags + +variable teststat p-Value(Chi^2) F stat p-Value(F) +u1 15.5197 0.4870 1.1806 0.3050 +u2 26.9092 0.0425 2.4350 0.0056 + +*** Mon, 25 Jul 2016 13:55:40 *** +MULTIVARIATE ARCH-LM TEST with 5 lags + +VARCHLM test statistic: 73.4831 + p-value(chi^2): 0.0047 + degrees of freedom: 45.0000 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_fc5.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_fc5.txt new file mode 100755 index 0000000..d8c0de9 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_fc5.txt @@ -0,0 +1,23 @@ +*** Thu, 28 Jul 2016 16:35:44 *** +FORECASTING +Reference: Lütkepohl (1993), IMTSA, 2ed, ch. 5.2.6, ch. 10.5 +CI coverage: 0.95 +forecast horizon: 5 periods +using standard confidence intervals + + Dp +time forecast lower CI upper CI +/- +1999 Q1 -0.0199 -0.0294 -0.0104 0.0095 +1999 Q2 -0.0016 -0.0113 0.0081 0.0097 +1999 Q3 0.0058 -0.0040 0.0157 0.0099 +1999 Q4 0.0271 0.0171 0.0371 0.0100 +2000 Q1 -0.0214 -0.0321 -0.0107 0.0107 + + R +time forecast lower CI upper CI +/- +1999 Q1 0.0386 0.0284 0.0488 0.0102 +1999 Q2 0.0393 0.0234 0.0552 0.0159 +1999 Q3 0.0381 0.0182 0.0581 0.0199 +1999 Q4 0.0359 0.0118 0.0600 0.0241 +2000 Q1 0.0364 0.0084 0.0644 0.0280 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_granger_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_granger_causality_dp_r.txt new file mode 100644 index 0000000..c08971a --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_granger_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 10:14:12 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 0.2675 +pval-F( l; 4, 178) = 0.8986 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 0.9519 +pval-Chi( c; 1) = 0.3292 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_granger_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_granger_causality_r_dp.txt new file mode 100644 index 0000000..4d21c39 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_granger_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Mon, 25 Jul 2016 10:14:36 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 2.8553 +pval-F( l; 4, 178) = 0.0251 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 0.9519 +pval-Chi( c; 1) = 0.3292 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_inst_causality_dp_r.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_inst_causality_dp_r.txt new file mode 100755 index 0000000..b4ab5ee --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_inst_causality_dp_r.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:44:12 *** +TEST FOR GRANGER-CAUSALITY: +H0: "Dp" do not Granger-cause "R" + +Test statistic l = 1.2025 +pval-F( l; 3, 184) = 0.3103 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "Dp" and "R" + +Test statistic: c = 1.4168 +pval-Chi( c; 1) = 0.2339 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_inst_causality_r_dp.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_inst_causality_r_dp.txt new file mode 100755 index 0000000..445c405 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_inst_causality_r_dp.txt @@ -0,0 +1,13 @@ +*** Fri, 26 Aug 2016 11:43:59 *** +TEST FOR GRANGER-CAUSALITY: +H0: "R" do not Granger-cause "Dp" + +Test statistic l = 3.1771 +pval-F( l; 3, 184) = 0.0254 + +TEST FOR INSTANTANEOUS CAUSALITY: +H0: No instantaneous causality between "R" and "Dp" + +Test statistic: c = 1.4168 +pval-Chi( c; 1) = 0.2339 + diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_ir.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_ir.txt new file mode 100755 index 0000000..9da636c --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_ir.txt @@ -0,0 +1,29 @@ +*** Tue, 16 Aug 2016 19:23:53 *** +VECM Forecast Error Impulse Responses + + Selected Impulse Responses: "impulse variable -> response variable" + +time Dp R Dp R + ->Dp ->Dp ->R ->R + + point estimate 1.0000 0.0000 0.0000 1.0000 + 1 point estimate 0.0646 0.1861 0.1170 1.1977 + 2 point estimate 0.0010 0.1597 0.0551 1.1820 + 3 point estimate 0.0739 0.1654 0.0593 1.3370 + 4 point estimate 0.3881 0.1312 0.1297 1.4035 + 5 point estimate 0.0585 0.1788 0.1723 1.4019 + 6 point estimate 0.0193 0.1741 0.1488 1.4311 + 7 point estimate 0.0692 0.1666 0.1639 1.4491 + 8 point estimate 0.1646 0.1526 0.1961 1.4500 + 9 point estimate 0.0458 0.1689 0.2111 1.4542 + 10 point estimate 0.0279 0.1668 0.2057 1.4610 + 11 point estimate 0.0526 0.1619 0.2139 1.4625 + 12 point estimate 0.0807 0.1575 0.2273 1.4630 + 13 point estimate 0.0372 0.1630 0.2333 1.4645 + 14 point estimate 0.0298 0.1620 0.2324 1.4661 + 15 point estimate 0.0407 0.1598 0.2364 1.4666 + 16 point estimate 0.0485 0.1584 0.2420 1.4668 + 17 point estimate 0.0324 0.1603 0.2445 1.4674 + 18 point estimate 0.0295 0.1598 0.2446 1.4679 + 19 point estimate 0.0339 0.1589 0.2464 1.4682 + 20 point estimate 0.0359 0.1584 0.2488 1.4683 diff --git a/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_lagorder.txt b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_lagorder.txt new file mode 100755 index 0000000..669b5a4 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/JMulTi_results/vecm_e6_jmulti_ncs_lagorder.txt @@ -0,0 +1,13 @@ +*** Sun, 21 Aug 2016 09:33:01 *** +OPTIMAL ENDOGENOUS LAGS FROM INFORMATION CRITERIA + +endogenous variables: Dp R +deterministic variables: S1 S2 S3 +sample range: [1975 Q1, 1998 Q4], T = 96 + +optimal number of lags (searched up to 10 lags of 1. differences): +Akaike Info Criterion: 3 +Final Prediction Error: 3 +Hannan-Quinn Criterion: 0 +Schwarz Criterion: 0 + diff --git a/statsmodels/tsa/vector_ar/tests/Matlab_results/__init__.py b/statsmodels/tsa/vector_ar/tests/Matlab_results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/vector_ar/tests/Matlab_results/test_coint.csv b/statsmodels/tsa/vector_ar/tests/Matlab_results/test_coint.csv new file mode 100644 index 0000000..5176de7 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/Matlab_results/test_coint.csv @@ -0,0 +1,173 @@ + 2.8300000e+02 9.9000000e+01 5.6500000e+02 1.2000000e+02 3.1200000e+02 4.8100000e+02 9.2000000e+01 6.9700000e+02 + 2.8200000e+02 9.9000000e+01 5.5800000e+02 1.2100000e+02 3.0900000e+02 4.7200000e+02 9.2000000e+01 6.9300000e+02 + 2.7700000e+02 1.0100000e+02 5.6000000e+02 1.1700000e+02 3.0600000e+02 4.7500000e+02 9.6000000e+01 6.9600000e+02 + 2.8000000e+02 1.0600000e+02 5.6300000e+02 1.1400000e+02 3.1000000e+02 4.8700000e+02 9.8000000e+01 6.8900000e+02 + 2.8000000e+02 1.0800000e+02 5.4900000e+02 1.1000000e+02 3.1400000e+02 4.7600000e+02 9.7000000e+01 6.6700000e+02 + 2.7300000e+02 1.0800000e+02 5.4500000e+02 1.0300000e+02 3.1500000e+02 4.7100000e+02 9.7000000e+01 6.5300000e+02 + 2.7400000e+02 1.0800000e+02 5.1800000e+02 1.0000000e+02 3.0900000e+02 4.5800000e+02 9.3000000e+01 6.4000000e+02 + 2.6900000e+02 1.0500000e+02 5.0900000e+02 9.7000000e+01 2.9600000e+02 4.4700000e+02 9.1000000e+01 6.2300000e+02 + 2.6300000e+02 1.0400000e+02 5.0500000e+02 9.5000000e+01 3.0300000e+02 4.5500000e+02 8.9000000e+01 6.0100000e+02 + 2.6000000e+02 1.0300000e+02 5.0600000e+02 9.2000000e+01 2.9500000e+02 4.4900000e+02 8.8000000e+01 5.8100000e+02 + 2.5600000e+02 1.0100000e+02 4.9100000e+02 8.7000000e+01 2.8600000e+02 4.2100000e+02 8.6000000e+01 5.5100000e+02 + 2.5100000e+02 1.0000000e+02 4.7200000e+02 9.3000000e+01 2.8200000e+02 3.9000000e+02 8.5000000e+01 5.2500000e+02 + 2.3600000e+02 9.3000000e+01 4.3900000e+02 8.6000000e+01 2.6600000e+02 3.8900000e+02 7.7000000e+01 4.9900000e+02 + 2.3300000e+02 9.2000000e+01 4.2800000e+02 8.1000000e+01 2.5400000e+02 3.5800000e+02 7.6000000e+01 4.8300000e+02 + 2.3800000e+02 9.5000000e+01 4.2000000e+02 8.2000000e+01 2.5000000e+02 3.7900000e+02 7.7000000e+01 4.9000000e+02 + 2.4300000e+02 9.6000000e+01 4.1300000e+02 8.4000000e+01 2.5100000e+02 3.8400000e+02 8.0000000e+01 4.9200000e+02 + 2.4400000e+02 9.7000000e+01 4.1800000e+02 9.1000000e+01 2.5500000e+02 3.8700000e+02 8.0000000e+01 4.8600000e+02 + 2.4900000e+02 9.8000000e+01 4.1500000e+02 9.4000000e+01 2.6900000e+02 3.9900000e+02 8.0000000e+01 4.8700000e+02 + 2.5300000e+02 1.0000000e+02 4.2000000e+02 9.2000000e+01 2.7200000e+02 4.0000000e+02 7.7000000e+01 4.7400000e+02 + 2.5000000e+02 1.0000000e+02 4.2200000e+02 9.6000000e+01 2.7200000e+02 3.9700000e+02 7.9000000e+01 4.8000000e+02 + 2.5100000e+02 1.0100000e+02 4.2600000e+02 9.5000000e+01 2.7300000e+02 4.0300000e+02 8.1000000e+01 4.8700000e+02 + 2.5100000e+02 9.9000000e+01 4.2400000e+02 9.4000000e+01 2.7500000e+02 4.0000000e+02 8.1000000e+01 4.8500000e+02 + 2.5300000e+02 9.9000000e+01 4.2600000e+02 9.5000000e+01 2.7600000e+02 3.9800000e+02 8.0000000e+01 4.8600000e+02 + 2.4900000e+02 9.6000000e+01 4.2700000e+02 8.9000000e+01 2.7300000e+02 3.8900000e+02 8.0000000e+01 4.8200000e+02 + 2.4600000e+02 9.3000000e+01 4.2300000e+02 8.8000000e+01 2.7000000e+02 3.7900000e+02 7.5000000e+01 4.9700000e+02 + 2.4500000e+02 9.3000000e+01 4.2500000e+02 8.7000000e+01 2.6700000e+02 3.7300000e+02 7.5000000e+01 4.9400000e+02 + 2.5200000e+02 9.5000000e+01 4.3100000e+02 8.9000000e+01 2.6700000e+02 3.7900000e+02 7.7000000e+01 4.9900000e+02 + 2.5800000e+02 1.0000000e+02 4.3900000e+02 1.0000000e+02 2.7000000e+02 3.9000000e+02 8.1000000e+01 5.0000000e+02 + 2.6700000e+02 1.0300000e+02 4.5000000e+02 1.0400000e+02 2.7800000e+02 3.9500000e+02 8.1000000e+01 5.0300000e+02 + 2.7300000e+02 1.0600000e+02 4.6600000e+02 1.0700000e+02 2.8400000e+02 4.0200000e+02 8.3000000e+01 5.1500000e+02 + 2.6900000e+02 1.0800000e+02 4.7600000e+02 1.0600000e+02 2.9100000e+02 4.0500000e+02 8.3000000e+01 5.1800000e+02 + 2.7500000e+02 1.0900000e+02 4.8300000e+02 1.0600000e+02 2.8900000e+02 4.0400000e+02 8.2000000e+01 5.1100000e+02 + 2.7700000e+02 1.1000000e+02 4.8900000e+02 1.0400000e+02 2.8700000e+02 4.0500000e+02 8.1000000e+01 5.0900000e+02 + 2.7400000e+02 1.0600000e+02 4.7900000e+02 1.0500000e+02 2.8400000e+02 3.8100000e+02 8.2000000e+01 4.6300000e+02 + 2.7400000e+02 1.0500000e+02 4.5100000e+02 1.0300000e+02 2.7900000e+02 3.6600000e+02 8.2000000e+01 4.2800000e+02 + 2.7100000e+02 1.0100000e+02 4.5400000e+02 9.8000000e+01 2.7300000e+02 3.4700000e+02 8.0000000e+01 4.2200000e+02 + 2.6300000e+02 9.7000000e+01 4.2500000e+02 9.3000000e+01 2.6500000e+02 3.5900000e+02 7.3000000e+01 4.3700000e+02 + 2.6300000e+02 9.4000000e+01 4.1700000e+02 9.2000000e+01 2.5800000e+02 3.5100000e+02 7.2000000e+01 4.3700000e+02 + 2.6500000e+02 9.7000000e+01 4.2900000e+02 9.2000000e+01 2.6000000e+02 3.6400000e+02 7.7000000e+01 4.4500000e+02 + 2.7700000e+02 1.0300000e+02 4.4200000e+02 9.7000000e+01 2.6200000e+02 3.7300000e+02 7.8000000e+01 4.5100000e+02 + 2.8300000e+02 1.0500000e+02 4.4500000e+02 1.0300000e+02 2.6400000e+02 3.7300000e+02 7.8000000e+01 4.5300000e+02 + 2.8700000e+02 1.0600000e+02 4.4700000e+02 1.0500000e+02 2.6500000e+02 3.7800000e+02 7.9000000e+01 4.5800000e+02 + 2.8400000e+02 1.0700000e+02 4.4100000e+02 1.0400000e+02 2.6500000e+02 3.7400000e+02 7.8000000e+01 4.5300000e+02 + 2.8200000e+02 1.0500000e+02 4.4500000e+02 1.0600000e+02 2.5900000e+02 3.6200000e+02 7.8000000e+01 4.5200000e+02 + 2.8400000e+02 1.0500000e+02 4.4500000e+02 9.5000000e+01 2.6000000e+02 3.6000000e+02 7.9000000e+01 4.5300000e+02 + 2.8000000e+02 1.0000000e+02 4.4300000e+02 9.6000000e+01 2.5800000e+02 3.6300000e+02 7.8000000e+01 4.5000000e+02 + 2.7600000e+02 9.8000000e+01 4.3800000e+02 1.0300000e+02 2.5800000e+02 3.5700000e+02 8.0000000e+01 4.4400000e+02 + 2.7100000e+02 9.3000000e+01 4.2900000e+02 1.0100000e+02 2.5400000e+02 3.4400000e+02 7.9000000e+01 4.4600000e+02 + 2.6000000e+02 8.9000000e+01 4.1200000e+02 9.6000000e+01 2.4700000e+02 3.3600000e+02 7.5000000e+01 4.2900000e+02 + 2.5000000e+02 8.8000000e+01 4.0500000e+02 9.8000000e+01 2.3800000e+02 3.3500000e+02 7.3000000e+01 4.1700000e+02 + 2.4600000e+02 8.9000000e+01 4.0700000e+02 9.6000000e+01 2.3100000e+02 3.3800000e+02 7.5000000e+01 4.1800000e+02 + 2.5000000e+02 8.9000000e+01 4.0700000e+02 1.0100000e+02 2.2600000e+02 3.4200000e+02 6.9000000e+01 4.1100000e+02 + 2.5100000e+02 9.1000000e+01 4.0700000e+02 1.0300000e+02 2.2500000e+02 3.4100000e+02 7.0000000e+01 4.0700000e+02 + 2.5200000e+02 9.1000000e+01 4.0300000e+02 1.0100000e+02 2.2500000e+02 3.4200000e+02 7.0000000e+01 4.0700000e+02 + 2.5400000e+02 9.2000000e+01 4.0600000e+02 9.8000000e+01 2.2400000e+02 3.3900000e+02 7.1000000e+01 4.0600000e+02 + 2.5200000e+02 9.0000000e+01 4.0100000e+02 9.2000000e+01 2.1900000e+02 3.3400000e+02 7.0000000e+01 4.0100000e+02 + 2.5100000e+02 9.0000000e+01 4.0000000e+02 9.1000000e+01 2.1800000e+02 3.3600000e+02 7.0000000e+01 3.9900000e+02 + 2.5100000e+02 8.9000000e+01 3.9200000e+02 9.2000000e+01 2.1800000e+02 3.3200000e+02 7.2000000e+01 3.9100000e+02 + 2.4700000e+02 8.7000000e+01 3.8800000e+02 9.2000000e+01 2.1900000e+02 3.2600000e+02 7.2000000e+01 3.8700000e+02 + 2.4000000e+02 8.5000000e+01 3.8600000e+02 9.2000000e+01 2.1800000e+02 3.1900000e+02 7.1000000e+01 3.8300000e+02 + 2.3200000e+02 8.0000000e+01 3.8200000e+02 8.7000000e+01 2.1400000e+02 3.1200000e+02 6.6000000e+01 3.7600000e+02 + 2.3100000e+02 8.0000000e+01 3.8100000e+02 9.1000000e+01 2.1100000e+02 3.0500000e+02 6.6000000e+01 3.6300000e+02 + 2.3200000e+02 8.3000000e+01 3.8400000e+02 9.1000000e+01 2.0700000e+02 3.0500000e+02 6.8000000e+01 3.6300000e+02 + 2.3200000e+02 8.5000000e+01 3.8500000e+02 9.7000000e+01 2.0600000e+02 3.0700000e+02 6.7000000e+01 3.5700000e+02 + 2.4100000e+02 8.7000000e+01 3.8700000e+02 1.0300000e+02 2.0600000e+02 3.0900000e+02 6.9000000e+01 3.5600000e+02 + 2.3900000e+02 8.9000000e+01 3.9000000e+02 1.0400000e+02 2.0900000e+02 3.1000000e+02 6.9000000e+01 3.5900000e+02 + 2.3900000e+02 8.9000000e+01 3.8900000e+02 1.0600000e+02 2.0800000e+02 3.0500000e+02 6.7000000e+01 3.6200000e+02 + 2.3900000e+02 8.9000000e+01 3.9000000e+02 1.0500000e+02 2.0800000e+02 3.0800000e+02 6.7000000e+01 3.5900000e+02 + 2.3900000e+02 8.9000000e+01 3.9300000e+02 1.0500000e+02 2.0800000e+02 3.0700000e+02 6.8000000e+01 3.6500000e+02 + 2.3400000e+02 8.9000000e+01 3.9400000e+02 1.0300000e+02 2.1000000e+02 3.0700000e+02 6.9000000e+01 3.7400000e+02 + 2.2900000e+02 8.8000000e+01 3.9200000e+02 1.0200000e+02 2.1000000e+02 3.0500000e+02 6.9000000e+01 3.7200000e+02 + 2.2300000e+02 8.7000000e+01 3.9000000e+02 9.9000000e+01 2.0800000e+02 2.9900000e+02 6.9000000e+01 3.6300000e+02 + 2.1000000e+02 8.0000000e+01 3.7800000e+02 9.6000000e+01 1.9400000e+02 2.9100000e+02 6.5000000e+01 3.4400000e+02 + 2.0900000e+02 7.9000000e+01 3.7400000e+02 9.7000000e+01 1.8900000e+02 2.8600000e+02 6.5000000e+01 3.4000000e+02 + 2.0800000e+02 8.0000000e+01 3.7200000e+02 9.8000000e+01 1.8800000e+02 2.8900000e+02 6.6000000e+01 3.4200000e+02 + 2.1100000e+02 8.1000000e+01 3.6200000e+02 1.0600000e+02 1.8800000e+02 2.9000000e+02 6.8000000e+01 3.4500000e+02 + 2.1400000e+02 8.4000000e+01 3.6100000e+02 1.0800000e+02 1.8700000e+02 2.9100000e+02 6.8000000e+01 3.4500000e+02 + 2.1700000e+02 8.5000000e+01 3.6300000e+02 1.1100000e+02 1.9100000e+02 2.9200000e+02 6.8000000e+01 3.4800000e+02 + 2.1800000e+02 8.4000000e+01 3.5700000e+02 1.1200000e+02 1.9100000e+02 2.8900000e+02 6.8000000e+01 3.4800000e+02 + 2.1800000e+02 8.3000000e+01 3.5500000e+02 1.1100000e+02 1.9200000e+02 2.8500000e+02 6.7000000e+01 3.4800000e+02 + 2.1600000e+02 8.3000000e+01 3.5300000e+02 1.0900000e+02 1.9100000e+02 2.8900000e+02 6.7000000e+01 3.5000000e+02 + 2.1700000e+02 8.3000000e+01 3.4900000e+02 1.0600000e+02 1.8800000e+02 2.8300000e+02 6.6000000e+01 3.4800000e+02 + 2.1500000e+02 8.2000000e+01 3.4600000e+02 1.0500000e+02 1.8500000e+02 2.8400000e+02 6.4000000e+01 3.5000000e+02 + 2.1200000e+02 7.9000000e+01 3.4600000e+02 1.0100000e+02 1.8300000e+02 2.8000000e+02 6.3000000e+01 3.4900000e+02 + 1.9400000e+02 7.5000000e+01 3.4000000e+02 9.8000000e+01 1.7700000e+02 2.7200000e+02 6.1000000e+01 3.5300000e+02 + 1.9200000e+02 7.4000000e+01 3.3200000e+02 9.9000000e+01 1.7600000e+02 2.6900000e+02 6.1000000e+01 3.4700000e+02 + 1.9400000e+02 7.6000000e+01 3.3900000e+02 1.0100000e+02 1.7700000e+02 2.7200000e+02 6.2000000e+01 3.5000000e+02 + 1.9900000e+02 7.7000000e+01 3.3700000e+02 1.0100000e+02 1.7800000e+02 2.7600000e+02 6.4000000e+01 3.4600000e+02 + 2.0200000e+02 7.9000000e+01 3.4100000e+02 1.0300000e+02 1.7800000e+02 2.7900000e+02 6.4000000e+01 3.4900000e+02 + 2.0600000e+02 7.9000000e+01 3.4800000e+02 1.0700000e+02 1.8200000e+02 2.8400000e+02 6.5000000e+01 3.2400000e+02 + 2.0500000e+02 7.6000000e+01 3.5000000e+02 1.0800000e+02 1.6600000e+02 2.2200000e+02 6.4000000e+01 1.8000000e+02 + 2.0500000e+02 8.1000000e+01 3.5400000e+02 1.0700000e+02 1.8600000e+02 2.8100000e+02 6.4000000e+01 3.4600000e+02 + 2.0400000e+02 8.1000000e+01 3.5400000e+02 1.0600000e+02 1.8700000e+02 2.8500000e+02 6.4000000e+01 3.5000000e+02 + 2.0100000e+02 8.3000000e+01 3.5100000e+02 1.0600000e+02 1.8700000e+02 2.8100000e+02 6.4000000e+01 3.4900000e+02 + 2.0100000e+02 8.2000000e+01 3.5000000e+02 1.0400000e+02 1.8000000e+02 2.8100000e+02 6.4000000e+01 3.5200000e+02 + 2.0000000e+02 8.1000000e+01 3.5100000e+02 1.0100000e+02 1.7700000e+02 2.7600000e+02 6.3000000e+01 3.5000000e+02 + 1.9200000e+02 7.6000000e+01 3.4800000e+02 9.7000000e+01 1.7100000e+02 2.6700000e+02 6.1000000e+01 3.5200000e+02 + 1.9000000e+02 7.6000000e+01 3.5000000e+02 9.6000000e+01 1.7000000e+02 2.6600000e+02 5.7000000e+01 3.4900000e+02 + 1.9200000e+02 7.8000000e+01 3.5600000e+02 9.5000000e+01 1.7200000e+02 2.7100000e+02 6.2000000e+01 3.5000000e+02 + 1.9200000e+02 8.0000000e+01 3.5700000e+02 9.7000000e+01 1.7400000e+02 2.7300000e+02 6.2000000e+01 3.5100000e+02 + 1.9400000e+02 8.2000000e+01 3.6100000e+02 1.0400000e+02 1.7700000e+02 2.7700000e+02 6.3000000e+01 3.5500000e+02 + 1.9900000e+02 8.3000000e+01 3.6100000e+02 1.0600000e+02 1.7900000e+02 2.7900000e+02 6.3000000e+01 3.6100000e+02 + 2.0000000e+02 8.4000000e+01 3.5400000e+02 1.0500000e+02 1.8100000e+02 2.7900000e+02 6.3000000e+01 3.5900000e+02 + 2.0000000e+02 8.4000000e+01 3.5700000e+02 8.4000000e+01 1.8100000e+02 2.8100000e+02 6.3000000e+01 3.5800000e+02 + 1.9900000e+02 8.3000000e+01 3.6000000e+02 8.3000000e+01 1.7900000e+02 2.8000000e+02 6.2000000e+01 3.5800000e+02 + 1.9900000e+02 8.3000000e+01 3.5300000e+02 8.2000000e+01 1.7700000e+02 2.7700000e+02 6.2000000e+01 3.5700000e+02 + 1.9700000e+02 8.2000000e+01 3.5000000e+02 8.1000000e+01 1.7600000e+02 2.6800000e+02 6.1000000e+01 3.6100000e+02 + 1.9600000e+02 8.2000000e+01 3.5300000e+02 9.6000000e+01 1.7100000e+02 2.6400000e+02 5.9000000e+01 3.6000000e+02 + 1.8100000e+02 7.8000000e+01 3.4300000e+02 9.1000000e+01 1.6500000e+02 2.5400000e+02 5.6000000e+01 3.5000000e+02 + 1.7900000e+02 7.6000000e+01 3.3800000e+02 8.9000000e+01 1.6200000e+02 2.5100000e+02 5.6000000e+01 3.4500000e+02 + 1.8200000e+02 7.7000000e+01 3.4100000e+02 9.0000000e+01 1.6500000e+02 2.4900000e+02 5.6000000e+01 3.4400000e+02 + 1.8600000e+02 7.7000000e+01 3.3300000e+02 9.2000000e+01 1.6400000e+02 2.5400000e+02 5.7000000e+01 3.3900000e+02 + 1.8800000e+02 7.9000000e+01 3.3000000e+02 9.5000000e+01 1.6300000e+02 2.5500000e+02 5.7000000e+01 3.3800000e+02 + 1.9100000e+02 8.0000000e+01 3.2900000e+02 9.7000000e+01 1.6400000e+02 2.5600000e+02 5.6000000e+01 3.3900000e+02 + 1.9000000e+02 7.9000000e+01 3.2000000e+02 9.4000000e+01 1.6500000e+02 2.5500000e+02 5.5000000e+01 3.3300000e+02 + 1.8900000e+02 7.7000000e+01 3.1800000e+02 9.4000000e+01 1.6300000e+02 2.5500000e+02 5.5000000e+01 3.3300000e+02 + 1.8600000e+02 7.7000000e+01 3.1700000e+02 9.2000000e+01 1.6100000e+02 2.5300000e+02 5.5000000e+01 3.3100000e+02 + 1.8300000e+02 7.6000000e+01 3.1300000e+02 8.7000000e+01 1.5600000e+02 2.5100000e+02 5.5000000e+01 3.3100000e+02 + 1.8300000e+02 7.4000000e+01 3.0900000e+02 8.9000000e+01 1.5200000e+02 2.4400000e+02 5.3000000e+01 3.3100000e+02 + 1.7800000e+02 7.3000000e+01 3.0700000e+02 8.6000000e+01 1.4900000e+02 2.3600000e+02 5.1000000e+01 3.2900000e+02 + 1.7100000e+02 6.9000000e+01 2.9900000e+02 8.0000000e+01 1.4300000e+02 2.3000000e+02 4.7000000e+01 3.2500000e+02 + 1.6900000e+02 6.9000000e+01 3.0000000e+02 8.2000000e+01 1.4100000e+02 2.2900000e+02 4.8000000e+01 3.1800000e+02 + 1.7100000e+02 7.0000000e+01 3.0200000e+02 8.3000000e+01 1.4200000e+02 2.3200000e+02 4.9000000e+01 3.1400000e+02 + 1.7300000e+02 7.2000000e+01 3.0200000e+02 8.5000000e+01 1.4600000e+02 2.3500000e+02 5.1000000e+01 3.1500000e+02 + 1.7600000e+02 7.3000000e+01 3.0500000e+02 9.0000000e+01 1.4700000e+02 2.3800000e+02 5.1000000e+01 3.1500000e+02 + 1.7800000e+02 7.4000000e+01 3.0500000e+02 9.2000000e+01 1.4900000e+02 2.4100000e+02 5.1000000e+01 3.1200000e+02 + 1.7700000e+02 7.3000000e+01 2.9700000e+02 9.3000000e+01 1.5000000e+02 2.4100000e+02 5.0000000e+01 3.1300000e+02 + 1.7600000e+02 7.3000000e+01 3.0000000e+02 9.4000000e+01 1.5000000e+02 2.3900000e+02 5.0000000e+01 3.1200000e+02 + 1.7400000e+02 7.2000000e+01 3.0100000e+02 9.3000000e+01 1.4800000e+02 2.3900000e+02 5.1000000e+01 3.1200000e+02 + 1.7300000e+02 7.1000000e+01 2.9800000e+02 9.4000000e+01 1.4800000e+02 2.3600000e+02 4.9000000e+01 3.1200000e+02 + 1.7300000e+02 7.1000000e+01 2.9400000e+02 9.1000000e+01 1.4500000e+02 2.3500000e+02 4.9000000e+01 3.1100000e+02 + 1.7000000e+02 6.9000000e+01 2.9400000e+02 8.8000000e+01 1.4400000e+02 2.2500000e+02 4.9000000e+01 3.1000000e+02 + 1.6500000e+02 6.5000000e+01 2.8900000e+02 8.4000000e+01 1.3800000e+02 2.1400000e+02 4.7000000e+01 3.0400000e+02 + 1.6200000e+02 6.5000000e+01 2.7800000e+02 8.2000000e+01 1.3600000e+02 2.1300000e+02 4.7000000e+01 2.7100000e+02 + 1.6200000e+02 6.6000000e+01 2.8100000e+02 8.3000000e+01 1.3600000e+02 2.1000000e+02 4.8000000e+01 2.9100000e+02 + 1.6300000e+02 6.8000000e+01 2.7800000e+02 8.8000000e+01 1.3900000e+02 2.1400000e+02 4.8000000e+01 2.8900000e+02 + 1.6400000e+02 6.9000000e+01 2.7700000e+02 9.0000000e+01 1.4100000e+02 2.1900000e+02 4.8000000e+01 2.8400000e+02 + 1.6100000e+02 7.1000000e+01 2.8100000e+02 9.3000000e+01 1.4200000e+02 2.1000000e+02 4.8000000e+01 2.5200000e+02 + 1.5000000e+02 6.3000000e+01 2.7400000e+02 9.4000000e+01 1.4600000e+02 2.1000000e+02 4.7000000e+01 2.4400000e+02 + 1.4500000e+02 6.2000000e+01 2.7200000e+02 7.4000000e+01 1.4300000e+02 2.1000000e+02 4.5000000e+01 2.3200000e+02 + 1.4700000e+02 6.1000000e+01 2.7500000e+02 9.3000000e+01 1.4100000e+02 2.1100000e+02 4.5000000e+01 2.3500000e+02 + 1.4800000e+02 6.1000000e+01 2.7300000e+02 9.2000000e+01 1.4200000e+02 2.1000000e+02 4.7000000e+01 2.3100000e+02 + 1.4800000e+02 6.1000000e+01 2.7400000e+02 9.1000000e+01 1.4200000e+02 2.0800000e+02 4.6000000e+01 2.3000000e+02 + 1.4800000e+02 6.8000000e+01 2.7500000e+02 8.8000000e+01 1.4300000e+02 2.1100000e+02 4.6000000e+01 2.7700000e+02 + 1.5300000e+02 6.5000000e+01 2.7300000e+02 8.1000000e+01 1.3800000e+02 2.0000000e+02 4.3000000e+01 2.7400000e+02 + 1.5100000e+02 6.4000000e+01 2.7500000e+02 8.1000000e+01 1.3800000e+02 1.9700000e+02 4.4000000e+01 2.7200000e+02 + 1.4700000e+02 6.5000000e+01 2.8000000e+02 8.2000000e+01 1.4200000e+02 1.9800000e+02 4.6000000e+01 2.7400000e+02 + 1.5000000e+02 6.8000000e+01 2.7800000e+02 8.5000000e+01 1.4500000e+02 2.0600000e+02 4.6000000e+01 2.7500000e+02 + 1.5200000e+02 6.9000000e+01 2.7900000e+02 9.0000000e+01 1.4700000e+02 2.0900000e+02 4.6000000e+01 2.7700000e+02 + 1.5500000e+02 7.0000000e+01 2.7900000e+02 9.1000000e+01 1.4800000e+02 2.1200000e+02 4.8000000e+01 2.8000000e+02 + 1.5500000e+02 7.0000000e+01 2.7700000e+02 9.2000000e+01 1.4900000e+02 2.1300000e+02 4.7000000e+01 2.8300000e+02 + 1.5300000e+02 6.9000000e+01 2.7900000e+02 9.1000000e+01 1.4900000e+02 2.1300000e+02 4.7000000e+01 2.8400000e+02 + 1.5200000e+02 6.9000000e+01 2.7900000e+02 8.9000000e+01 1.5000000e+02 2.1200000e+02 4.7000000e+01 2.8400000e+02 + 1.4700000e+02 6.9000000e+01 2.7500000e+02 8.8000000e+01 1.4900000e+02 2.0900000e+02 4.6000000e+01 2.8100000e+02 + 1.4600000e+02 6.9000000e+01 2.7500000e+02 8.8000000e+01 1.4600000e+02 2.0700000e+02 4.6000000e+01 2.8200000e+02 + 1.4400000e+02 6.8000000e+01 2.7600000e+02 8.5000000e+01 1.4500000e+02 2.0200000e+02 4.6000000e+01 2.8000000e+02 + 1.3600000e+02 6.4000000e+01 2.6900000e+02 8.0000000e+01 1.3700000e+02 1.9100000e+02 4.4000000e+01 2.7700000e+02 + 1.3300000e+02 6.4000000e+01 2.6300000e+02 7.9000000e+01 1.3400000e+02 1.8800000e+02 4.4000000e+01 2.7100000e+02 + 1.3700000e+02 6.5000000e+01 2.6200000e+02 8.2000000e+01 1.3700000e+02 1.9100000e+02 4.6000000e+01 2.7500000e+02 + 1.3900000e+02 6.5000000e+01 2.5500000e+02 8.4000000e+01 1.3900000e+02 1.9700000e+02 4.6000000e+01 2.7400000e+02 + 1.4000000e+02 6.5000000e+01 2.5300000e+02 8.7000000e+01 1.3800000e+02 2.0000000e+02 4.6000000e+01 2.7200000e+02 + 1.4100000e+02 6.7000000e+01 2.5100000e+02 8.8000000e+01 1.4000000e+02 2.0000000e+02 4.6000000e+01 2.7100000e+02 + 1.4100000e+02 6.7000000e+01 2.4900000e+02 8.8000000e+01 1.4500000e+02 1.9800000e+02 4.6000000e+01 2.7000000e+02 + 1.3600000e+02 6.7000000e+01 2.5000000e+02 8.9000000e+01 1.4400000e+02 1.9800000e+02 4.6000000e+01 2.7300000e+02 + 1.3600000e+02 6.7000000e+01 2.4500000e+02 8.5000000e+01 1.4200000e+02 1.9600000e+02 4.6000000e+01 2.7300000e+02 + 1.3300000e+02 6.7000000e+01 2.4500000e+02 7.8000000e+01 1.4200000e+02 1.9200000e+02 4.6000000e+01 2.6900000e+02 + 1.3200000e+02 6.6000000e+01 2.4600000e+02 7.7000000e+01 1.4200000e+02 1.9300000e+02 4.6000000e+01 2.6800000e+02 + 1.3100000e+02 6.5000000e+01 2.4600000e+02 7.4000000e+01 1.4100000e+02 1.9000000e+02 4.5000000e+01 2.5900000e+02 + 1.2500000e+02 6.1000000e+01 2.3600000e+02 7.1000000e+01 1.3600000e+02 1.7800000e+02 4.4000000e+01 2.5500000e+02 + 1.2500000e+02 6.1000000e+01 2.3700000e+02 7.1000000e+01 1.3600000e+02 1.8000000e+02 4.4000000e+01 2.5600000e+02 + 1.2900000e+02 6.4000000e+01 2.3900000e+02 7.3000000e+01 1.3800000e+02 1.8400000e+02 4.5000000e+01 2.5500000e+02 + 1.3100000e+02 6.4000000e+01 2.4200000e+02 7.7000000e+01 1.4000000e+02 1.8800000e+02 4.6000000e+01 2.5500000e+02 + 1.3200000e+02 6.5000000e+01 2.4400000e+02 8.0000000e+01 1.4100000e+02 1.9100000e+02 4.6000000e+01 2.5600000e+02 diff --git a/statsmodels/tsa/vector_ar/tests/__init__.py b/statsmodels/tsa/vector_ar/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/vector_ar/tests/example_svar.py b/statsmodels/tsa/vector_ar/tests/example_svar.py new file mode 100644 index 0000000..b49e1e9 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/example_svar.py @@ -0,0 +1,26 @@ +import numpy as np +import statsmodels.api as sm +import pandas as pd + +from statsmodels.tsa.vector_ar.svar_model import SVAR + + +mdatagen = sm.datasets.macrodata.load(as_pandas=False).data +mdata = mdatagen[['realgdp','realcons','realinv']] +names = mdata.dtype.names +start = pd.datetime(1959, 3, 31) +end = pd.datetime(2009, 9, 30) +#qtr = pd.DatetimeIndex(start=start, end=end, freq=pd.datetools.BQuarterEnd()) +qtr = pd.date_range(start=start, end=end, freq='BQ-MAR') +data = pd.DataFrame(mdata, index=qtr) +data = (np.log(data)).diff().dropna() + +#define structural inputs +A = np.asarray([[1, 0, 0],['E', 1, 0],['E', 'E', 1]]) +B = np.asarray([['E', 0, 0], [0, 'E', 0], [0, 0, 'E']]) +A_guess = np.asarray([0.5, 0.25, -0.38]) +B_guess = np.asarray([0.5, 0.1, 0.05]) +mymodel = SVAR(data, svar_type='AB', A=A, B=B, freq='Q') +res = mymodel.fit(maxlags=3, maxiter=10000, maxfun=10000, solver='bfgs') +res.irf(periods=30).plot(impulse='realgdp', plot_stderr=True, + stderr_type='mc', repl=100) diff --git a/statsmodels/tsa/vector_ar/tests/results/__init__.py b/statsmodels/tsa/vector_ar/tests/results/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/statsmodels/tsa/vector_ar/tests/results/e1.dat b/statsmodels/tsa/vector_ar/tests/results/e1.dat new file mode 100644 index 0000000..09f508d --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/results/e1.dat @@ -0,0 +1,99 @@ +/*quarterly, seasonally adjusted, West German +fixed investment, disposable income, consumption expenditures +in billions of DM, 1960Q1-1982Q4; +source: Deutsche Bundesbank +*/ +<1960 Q1> +invest income cons +180 451 415 +179 465 421 +185 485 434 +192 493 448 +211 509 459 +202 520 458 +207 521 479 +214 540 487 +231 548 497 +229 558 510 +234 574 516 +237 583 525 +206 591 529 +250 599 538 +259 610 546 +263 627 555 +264 642 574 +280 653 574 +282 660 586 +292 694 602 +286 709 617 +302 734 639 +304 751 653 +307 763 668 +317 766 679 +314 779 686 +306 808 697 +304 785 688 +292 794 704 +275 799 699 +273 799 709 +301 812 715 +280 837 724 +289 853 746 +303 876 758 +322 897 779 +315 922 798 +339 949 816 +364 979 837 +371 988 858 +375 1025 881 +432 1063 905 +453 1104 934 +460 1131 968 +475 1137 983 +496 1178 1013 +494 1211 1034 +498 1256 1064 +526 1290 1101 +519 1314 1102 +516 1346 1145 +531 1385 1173 +573 1416 1216 +551 1436 1229 +538 1462 1242 +532 1493 1267 +558 1516 1295 +524 1557 1317 +525 1613 1355 +519 1642 1371 +526 1690 1402 +510 1759 1452 +519 1756 1485 +538 1780 1516 +549 1807 1549 +570 1831 1567 +559 1873 1588 +584 1897 1631 +611 1910 1650 +597 1943 1685 +603 1976 1722 +619 2018 1752 +635 2040 1774 +658 2070 1807 +675 2121 1831 +700 2132 1842 +692 2199 1890 +759 2253 1958 +782 2276 1948 +816 2318 1994 +844 2369 2061 +830 2423 2056 +853 2457 2102 +852 2470 2121 +833 2521 2145 +860 2545 2164 +870 2580 2206 +830 2620 2225 +801 2639 2235 +824 2618 2237 +831 2628 2250 +830 2651 2271 diff --git a/statsmodels/tsa/vector_ar/tests/results/e2.dat b/statsmodels/tsa/vector_ar/tests/results/e2.dat new file mode 100644 index 0000000..34d39d6 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/results/e2.dat @@ -0,0 +1,113 @@ +/*quarterly, seasonally adjusted, U.S. +fixed investment (y1), change in business inventories (y2), +1947Q1-1972Q4; +source: U.S. Department of Commerce, Bureau of Economic Analysis, +The National Income and Product Accounts of the United States, 1929-1974 +*/ + +<1947 Q1> + y1 y2 + 69.6 0.1 + 67.6 -0.9 + 69.5 -2.9 + 74.7 2.7 + 77.1 4.1 + 77.4 5.6 + 76.6 6.9 + 76.1 5.3 + 71.8 -0.3 + 68.9 -7.1 + 68.5 -2.5 + 70.6 -7.7 + 75.4 4.4 + 82.3 7.7 + 88.2 8.0 + 86.9 22.1 + 83.4 13.4 + 80.3 19.9 + 79.4 14.6 + 78.6 7.0 + 79.3 7.3 + 80.3 -2.7 + 75.3 5.4 + 80.6 7.2 + 83.9 3.9 + 84.2 5.1 + 84.4 1.9 + 83.8 -5.0 + 82.8 -3.4 + 84.1 -4.1 + 87.0 -2.7 + 88.5 1.5 + 92.1 5.9 + 96.1 8.0 + 98.3 7.8 + 98.8 9.2 + 96.6 7.5 + 97.4 5.5 + 97.6 4.9 + 96.6 5.4 + 96.2 2.5 + 95.3 2.9 + 96.4 3.7 + 94.9 -3.0 + 90.0 -6.8 + 87.2 -6.2 + 88.0 0.3 + 93.0 5.3 + 98.3 5.0 +101.6 13.0 +102.6 -0.4 +101.4 8.2 +104.9 13.5 +101.8 4.9 + 98.8 3.0 + 98.6 -3.9 + 97.7 -3.8 + 99.2 1.9 +101.3 6.6 +104.6 6.7 +106.1 10.6 +109.9 9.2 +111.1 8.0 +110.1 4.7 +110.7 7.6 +116.0 7.0 +118.5 9.3 +122.0 7.1 +124.0 6.1 +124.0 8.0 +124.9 7.3 +126.4 7.9 +133.4 13.4 +137.9 10.6 +140.1 12.4 +143.8 8.8 +147.5 13.5 +146.2 17.8 +145.0 15.1 +139.7 20.5 +136.4 14.6 +139.6 7.5 +141.1 12.2 +145.5 13.8 +148.9 6.3 +148.9 11.8 +150.7 9.2 +155.0 7.6 +159.1 9.8 +158.4 12.2 +158.1 13.4 +154.3 6.8 +151.8 2.9 +150.0 4.8 +150.4 6.3 +149.5 3.3 +154.3 7.9 +158.4 10.0 +162.1 5.0 +166.0 3.7 +174.3 4.8 +176.1 10.1 +178.2 12.1 +186.7 10.8 diff --git a/statsmodels/tsa/vector_ar/tests/results/e3.dat b/statsmodels/tsa/vector_ar/tests/results/e3.dat new file mode 100644 index 0000000..234434d --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/results/e3.dat @@ -0,0 +1,146 @@ +/*quarterly, seasonally adjusted real U.S. money (M1), +GNP in 1982 Dollars, +discount rate on 91-day treasury bills (rd), +yield on long term treasury bonds (rb), +1954Q1-1987Q4; +source: Business Conditions Digest +*/ + +<1954 Q1> +M1 gnp rd rb +450.9 1406.8 0.010800000 0.026133333 +453.0 1401.2 0.0081333333 0.025233333 +459.1 1418.0 0.0087000000 0.024900000 +464.6 1438.8 0.010366667 0.025666667 +469.6 1469.6 0.012600000 0.027466667 +473.1 1485.7 0.015133333 0.028166667 +474.6 1505.5 0.018633333 0.029266667 +474.3 1518.7 0.023466667 0.028900000 +475.4 1515.7 0.023800000 0.028866667 +472.9 1522.6 0.025966667 0.029900000 +468.7 1523.7 0.025966667 0.031266667 +467.5 1540.6 0.030633333 0.033000000 +464.7 1553.3 0.031700000 0.032733333 +461.2 1552.4 0.031566667 0.034333333 +457.1 1561.5 0.033800000 0.036300000 +453.0 1537.3 0.033433333 0.035333333 +447.5 1506.1 0.018366667 0.032566667 +449.6 1514.2 0.010200000 0.031533333 +454.2 1550.0 0.017100000 0.035700000 +458.5 1586.7 0.027866667 0.037533333 +464.1 1606.4 0.028000000 0.039166667 +466.3 1637.0 0.030200000 0.040600000 +468.1 1629.5 0.035333333 0.041566667 +460.0 1643.4 0.043000000 0.041666667 +459.2 1671.6 0.039433333 0.042233333 +455.7 1666.8 0.030900000 0.041066667 +459.5 1668.4 0.023933333 0.038300000 +455.9 1654.1 0.023600000 0.039066667 +458.0 1671.3 0.023766667 0.038266667 +461.5 1692.1 0.023266667 0.038033333 +462.2 1716.3 0.023233333 0.039733333 +465.4 1754.9 0.024766667 0.040066667 +467.4 1777.9 0.027400000 0.040600000 +468.5 1796.4 0.027166667 0.038900000 +466.5 1813.1 0.028566667 0.039800000 +467.7 1810.1 0.028033333 0.038766667 +471.9 1834.6 0.029100000 0.039133333 +474.8 1860.0 0.029433333 0.039800000 +477.7 1892.5 0.032800000 0.040133333 +479.9 1906.1 0.034966667 0.041066667 +481.9 1948.7 0.035366667 0.041566667 +484.8 1965.4 0.034800000 0.041633333 +491.3 1985.2 0.035066667 0.041433333 +495.6 1993.7 0.036866667 0.041400000 +498.3 2036.9 0.039000000 0.041500000 +497.6 2066.4 0.038800000 0.041433333 +501.7 2099.3 0.038600000 0.041966667 +507.8 2147.6 0.041566667 0.043500000 +511.8 2190.1 0.046333333 0.045566667 +511.8 2195.8 0.045966667 0.045833333 +506.2 2218.3 0.050500000 0.047800000 +503.1 2229.2 0.045800000 0.046966667 +507.1 2241.8 0.045266667 0.044400000 +510.8 2255.2 0.036566667 0.047100000 +518.0 2287.7 0.043466667 0.049333333 +521.3 2300.6 0.047866667 0.053300000 +521.9 2327.3 0.050633333 0.052433333 +525.4 2366.9 0.055066667 0.053033333 +528.3 2385.3 0.052266667 0.050733333 +533.8 2383.0 0.055800000 0.054200000 +536.5 2416.5 0.061400000 0.058833333 +532.8 2419.8 0.062400000 0.059133333 +527.6 2433.2 0.070466667 0.061366667 +523.2 2423.5 0.073166667 0.065333333 +521.4 2408.6 0.072600000 0.065633333 +518.1 2406.5 0.067533333 0.068200000 +519.4 2435.8 0.063833333 0.066500000 +521.2 2413.8 0.053600000 0.062666667 +524.7 2478.6 0.038600000 0.058233333 +530.8 2478.4 0.042066667 0.058833333 +534.1 2491.1 0.050500000 0.057500000 +536.5 2491.0 0.042333333 0.055200000 +542.6 2545.6 0.034333333 0.056500000 +547.8 2595.1 0.037466667 0.056566667 +554.4 2622.1 0.042400000 0.056266667 +562.5 2671.3 0.048500000 0.056100000 +565.2 2734.0 0.056400000 0.061000000 +560.1 2741.0 0.066100000 0.062266667 +556.1 2738.3 0.083900000 0.065966667 +548.5 2762.8 0.074633333 0.063000000 +542.1 2747.4 0.076033333 0.066366667 +532.8 2755.2 0.082666667 0.070500000 +522.8 2719.3 0.082833333 0.072700000 +511.9 2695.4 0.073333333 0.069733333 +505.3 2642.7 0.058700000 0.067033333 +506.8 2669.6 0.054000000 0.069733333 +505.5 2714.9 0.063333333 0.070933333 +501.0 2752.7 0.056833333 0.072233333 +502.2 2804.4 0.049533333 0.069100000 +505.5 2816.9 0.051666667 0.068866667 +502.6 2828.6 0.051700000 0.067900000 +505.3 2856.8 0.046966667 0.065500000 +508.1 2896.0 0.046233333 0.070133333 +507.7 2942.7 0.048266667 0.070966667 +509.4 3001.8 0.054733333 0.069766667 +513.0 2994.1 0.061366667 0.071600000 +513.7 3020.5 0.064100000 0.075800000 +514.1 3115.9 0.064833333 0.078500000 +512.5 3142.6 0.073166667 0.079333333 +509.7 3181.6 0.086800000 0.081966667 +503.3 3181.7 0.093600000 0.084366667 +496.1 3178.9 0.093733333 0.084366667 +497.2 3207.4 0.096300000 0.084833333 +487.6 3201.3 0.11803333 0.096066667 +474.0 3233.4 0.13460000 0.11150000 +451.2 3157.0 0.10050000 0.10016667 +464.9 3159.1 0.092366667 0.10433333 +465.3 3199.2 0.13710000 0.11640000 +455.3 3261.1 0.14366667 0.12010000 +453.7 3250.2 0.14830000 0.12656667 +448.9 3264.6 0.15086667 0.13600000 +447.1 3219.3 0.12023333 0.13230000 +451.2 3170.4 0.12893333 0.13446667 +447.1 3179.9 0.12360000 0.12943333 +449.1 3154.5 0.097066667 0.12200000 +464.9 3159.3 0.079333333 0.10340000 +475.8 3186.6 0.080800000 0.10436667 +484.3 3258.3 0.084200000 0.10346667 +493.6 3306.4 0.091866667 0.11260000 +496.4 3365.1 0.087933333 0.11323333 +497.5 3451.7 0.091333333 0.11543333 +500.4 3498.0 0.098433333 0.12686667 +501.5 3520.6 0.10343333 0.12340000 +502.2 3535.2 0.089733333 0.11373333 +511.0 3577.5 0.081833333 0.11426667 +518.2 3599.2 0.075233333 0.10913333 +533.9 3635.8 0.071033333 0.10590000 +543.2 3662.4 0.071466667 0.10080000 +553.4 3719.3 0.068866667 0.089033333 +576.8 3711.6 0.061300000 0.079466667 +598.0 3721.3 0.055333333 0.078866667 +620.0 3734.7 0.053400000 0.078400000 +631.9 3776.7 0.055333333 0.076366667 +634.8 3823.0 0.057333333 0.085766667 +630.1 3865.3 0.060333333 0.090833333 +630.5 3923.0 0.060033333 0.092400000 diff --git a/statsmodels/tsa/vector_ar/tests/results/e4.dat b/statsmodels/tsa/vector_ar/tests/results/e4.dat new file mode 100644 index 0000000..fb6f10b --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/results/e4.dat @@ -0,0 +1,121 @@ +/*quarterly, unadjusted, West German +real per capita disposable income, +personal consumption expenditures, +1960Q1-1987Q4; +source: Deutsches Institut fuer Wirtschaftsforschung, Berlin +*/ + +<1960 Q1> +inc cons +1684.6080 1505.3198 +1757.2068 1632.8338 +1842.7211 1655.8021 +2027.3177 1889.8641 +1859.0561 1600.8018 +1832.6429 1686.0382 +1893.5360 1739.6939 +2098.9234 1958.8067 +1873.2676 1645.0461 +1908.6426 1798.0200 +1989.5797 1805.1480 +2203.5812 2038.5067 +1931.2619 1673.9302 +1980.3270 1829.8065 +2065.5097 1848.9135 +2256.8667 2065.9135 +2040.4667 1758.5866 +2098.8673 1894.7205 +2145.8642 1910.8631 +2427.6995 2165.6707 +2178.3079 1830.4957 +2268.4690 2024.4865 +2313.5771 2040.4966 +2548.2016 2274.2020 +2239.8707 1919.7148 +2286.0157 2070.1321 +2379.5459 2085.6752 +2535.5248 2269.4856 +2247.8021 1942.0016 +2311.8334 2063.5617 +2332.9532 2088.5606 +2579.1389 2320.2063 +2348.2887 1965.2127 +2404.7787 2164.5546 +2478.4108 2182.9295 +2808.6086 2467.3345 +2535.4286 2121.2628 +2605.4529 2307.8719 +2688.1167 2333.5107 +2998.7831 2626.8251 +2695.4440 2252.5326 +2764.9544 2445.3018 +2879.4832 2484.5415 +3255.6348 2810.1885 +2825.4761 2383.4010 +2877.2233 2575.9185 +2955.7203 2578.9525 +3378.4279 2872.9650 +3014.1083 2517.0234 +3030.1896 2645.5602 +3092.0762 2682.6305 +3491.3989 2962.6573 +3098.3107 2607.4582 +3091.6898 2755.3575 +3144.9089 2732.3144 +3535.0880 2988.6982 +3096.3842 2606.4549 +3110.8586 2748.4852 +3222.0775 2775.8346 +3613.9943 3012.7843 +3233.5315 2647.7614 +3319.4594 2854.9956 +3323.1825 2880.3328 +3723.1654 3164.0112 +3312.5138 2808.3615 +3324.6223 2965.6652 +3418.3893 2978.0314 +3824.4625 3280.6247 +3414.6557 2914.1164 +3438.2362 3095.7771 +3487.2942 3122.1189 +3973.8991 3438.6965 +3546.9684 3053.1464 +3553.1513 3216.7262 +3655.2346 3254.8354 +4102.7937 3543.8848 +3680.9675 3130.1370 +3783.8147 3406.7708 +3755.9600 3327.0867 +4261.4059 3669.2334 +3797.3271 3279.6486 +3786.5219 3324.2316 +3790.9261 3369.4241 +4282.9525 3682.5376 +3848.1635 3250.4014 +3764.6489 3308.7353 +3759.0830 3339.1146 +4294.2124 3661.0499 +3811.5833 3224.8444 +3709.8919 3291.6504 +3641.5356 3260.4145 +4180.7126 3611.8419 +3734.1328 3259.6856 +3698.3154 3361.7589 +3664.9417 3347.9925 +4237.3911 3700.2983 +3847.0869 3323.8678 +3766.3393 3424.4785 +3783.3845 3430.6044 +4327.6089 3753.7867 +3887.8617 3335.6273 +3839.1482 3469.0466 +3859.0148 3533.5180 +4431.0216 3859.7411 +4049.0191 3452.2034 +4053.1962 3669.5399 +4077.4384 3673.5696 +4653.9432 3999.3784 +4191.4281 3540.2152 +4163.4328 3750.5110 +4177.7770 3775.5819 +4811.1361 4150.3215 diff --git a/statsmodels/tsa/vector_ar/tests/results/e5.dat b/statsmodels/tsa/vector_ar/tests/results/e5.dat new file mode 100644 index 0000000..036e033 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/results/e5.dat @@ -0,0 +1,345 @@ +/*monthly West German +interest rate on 3-months loans in the money market (i_short), +yields on bonds outstanding for total fixed interest securities (i_long), +1960M1-1987M12; +source: Deutsche Bundesbank +*/ + +<1960 M1> + i_short i_long + 4.3600000 6.2000000 + 4.4700000 6.2000000 + 4.7100000 6.2000000 + 4.5900000 6.2000000 + 4.6400000 6.2000000 + 5.2500000 6.4000000 + 5.5800000 6.6000000 + 5.4400000 6.5000000 + 5.6100000 6.4000000 + 6.1000000 6.4000000 + 5.3800000 6.2000000 + 5.0600000 6.2000000 + 4.6600000 6.1000000 + 4.1300000 6.1000000 + 3.7300000 6.0000000 + 3.3400000 5.8000000 + 3.2300000 5.7000000 + 3.1300000 5.7000000 + 3.1600000 5.8000000 + 3.0900000 5.9000000 + 3.0600000 6.0000000 + 4.0500000 6.0000000 + 3.7100000 6.0000000 + 3.8300000 6.0000000 + 2.9300000 5.9000000 + 2.9400000 5.9000000 + 3.0200000 5.8000000 + 3.0800000 5.8000000 + 3.0800000 5.9000000 + 3.1300000 6.0000000 + 3.2900000 6.0000000 + 3.2600000 6.1000000 + 3.2000000 6.1000000 + 4.4500000 6.2000000 + 4.3300000 6.2000000 + 4.3500000 6.2000000 + 3.2900000 6.1000000 + 3.3100000 6.1000000 + 3.5300000 6.1000000 + 3.5600000 6.1000000 + 3.6000000 6.1000000 + 3.8300000 6.1000000 + 3.9800000 6.1000000 + 3.8100000 6.1000000 + 3.7500000 6.1000000 + 5.1300000 6.1000000 + 5.0000000 6.1000000 + 4.9800000 6.1000000 + 3.3300000 6.0000000 + 3.3300000 6.0000000 + 3.4600000 6.0000000 + 3.5500000 6.1000000 + 3.6900000 6.2000000 + 3.7500000 6.2000000 + 3.6900000 6.3000000 + 3.9100000 6.3000000 + 4.0800000 6.3000000 + 5.4200000 6.3000000 + 5.5000000 6.3000000 + 5.3600000 6.3000000 + 3.8800000 6.3000000 + 3.9500000 6.4000000 + 4.2800000 6.4000000 + 4.5200000 6.5000000 + 4.6900000 6.7000000 + 4.8000000 6.8000000 + 5.0800000 6.9000000 + 5.2700000 7.0000000 + 5.3600000 7.1000000 + 6.6600000 7.2000000 + 6.5800000 7.3000000 + 6.5500000 7.4000000 + 5.2300000 7.3000000 + 5.3600000 7.3000000 + 5.6900000 7.4000000 + 6.2100000 7.6000000 + 6.3500000 7.7000000 + 6.8100000 7.9000000 + 6.8900000 8.1000000 + 7.0000000 8.1000000 + 6.8000000 8.1000000 + 7.8800000 8.0000000 + 7.7300000 7.9000000 + 7.5700000 7.6000000 + 5.6900000 7.4000000 + 5.5600000 7.3000000 + 5.0400000 7.2000000 + 4.4800000 6.9000000 + 3.6900000 6.8000000 + 3.9800000 6.9000000 + 3.5100000 6.9000000 + 3.5600000 6.9000000 + 3.4300000 6.9000000 + 4.2000000 6.9000000 + 4.0000000 7.0000000 + 4.0700000 7.0000000 + 3.3200000 6.9000000 + 3.4500000 7.0000000 + 3.5200000 7.0000000 + 3.6400000 6.9000000 + 3.6800000 6.7000000 + 3.7200000 6.7000000 + 3.5900000 6.7000000 + 3.5500000 6.6000000 + 3.5400000 6.5000000 + 4.7500000 6.5000000 + 4.5000000 6.6000000 + 4.4400000 6.5000000 + 3.8700000 6.5000000 + 3.9100000 6.5000000 + 4.2100000 6.6000000 + 4.4000000 6.7000000 + 4.3800000 6.8000000 + 5.5000000 6.9000000 + 5.7800000 7.1000000 + 6.5000000 7.1000000 + 6.9400000 7.2000000 + 7.4200000 7.3000000 + 7.6900000 7.3000000 + 8.8300000 7.4000000 + 9.2900000 7.5000000 + 9.5100000 7.6000000 + 9.8100000 7.9000000 + 9.8600000 8.0000000 + 9.9300000 8.2000000 + 9.8800000 8.6000000 + 9.5900000 8.6000000 + 9.1600000 8.4000000 + 9.3600000 8.4000000 + 9.5300000 8.5000000 + 8.8400000 8.6000000 + 8.1200000 8.3000000 + 7.5000000 7.9000000 + 7.4700000 7.9000000 + 7.4600000 8.0000000 + 6.3600000 8.0000000 + 6.1600000 8.1000000 + 6.8000000 8.3000000 + 7.6600000 8.5000000 + 7.5600000 8.5000000 + 7.5900000 8.4000000 + 7.8000000 8.3000000 + 6.7900000 8.2000000 + 6.6300000 8.1000000 + 5.1900000 7.9000000 + 4.8800000 7.7000000 + 4.8000000 7.8000000 + 4.7800000 8.0000000 + 4.7100000 8.2000000 + 4.6500000 8.3000000 + 4.6500000 8.4000000 + 4.8000000 8.3000000 + 5.3200000 8.3000000 + 6.8800000 8.4000000 + 8.0700000 8.6000000 + 8.6000000 8.7000000 + 7.8900000 8.6000000 + 7.9600000 8.6000000 + 8.7700000 8.7000000 + 10.620000 8.9000000 + 12.420000 9.4000000 + 13.620000 10.200000 + 14.300000 10.300000 + 14.570000 10.100000 + 14.250000 9.8000000 + 14.490000 9.9000000 + 13.620000 9.6000000 + 13.200000 9.7000000 + 12.090000 9.7000000 + 10.670000 10.000000 + 11.200000 10.700000 + 10.070000 10.800000 + 9.1000000 10.800000 + 9.4600000 10.900000 + 9.4800000 10.900000 + 9.6500000 10.900000 + 9.6900000 10.800000 + 9.7800000 10.900000 + 9.0400000 10.600000 + 8.6000000 9.9000000 + 7.7400000 9.4000000 + 6.4300000 9.0000000 + 5.7100000 8.9000000 + 4.8900000 8.8000000 + 4.9900000 8.5000000 + 4.8800000 8.4000000 + 4.6600000 8.4000000 + 3.8800000 8.6000000 + 3.9300000 8.7000000 + 4.0700000 8.7000000 + 4.1200000 8.7000000 + 4.2100000 8.6000000 + 3.9300000 8.4000000 + 3.7200000 8.2000000 + 3.7400000 7.8000000 + 3.6200000 7.8000000 + 3.7700000 8.0000000 + 4.1400000 8.3000000 + 4.4700000 8.4000000 + 4.5600000 8.3000000 + 4.5600000 8.1000000 + 4.8500000 8.0000000 + 4.6900000 7.6000000 + 4.9300000 7.4000000 + 4.7800000 7.2000000 + 4.7100000 7.1000000 + 4.7300000 7.0000000 + 4.6200000 6.6000000 + 4.4400000 6.4000000 + 4.2800000 6.4000000 + 4.2900000 6.3000000 + 4.1200000 6.1000000 + 4.1500000 6.0000000 + 4.1300000 6.0000000 + 4.1500000 6.0000000 + 3.9800000 6.0000000 + 3.5800000 5.8000000 + 3.4600000 5.7000000 + 3.5100000 5.6000000 + 3.5600000 5.6000000 + 3.6000000 5.8000000 + 3.6800000 6.0000000 + 3.7500000 6.3000000 + 3.7000000 6.6000000 + 3.7000000 6.4000000 + 3.9500000 6.3000000 + 3.8500000 6.6000000 + 4.0600000 6.6000000 + 3.8900000 6.7000000 + 4.1500000 7.0000000 + 4.4700000 7.1000000 + 5.5400000 7.2000000 + 5.9200000 7.6000000 + 6.4600000 8.0000000 + 6.8400000 7.9000000 + 7.0900000 7.7000000 + 7.8900000 7.8000000 + 8.7600000 7.9000000 + 9.6500000 8.3000000 + 9.5800000 8.0000000 + 8.8600000 8.1000000 + 8.9700000 8.5000000 + 9.6400000 9.5000000 + 10.220000 9.6000000 + 10.260000 8.8000000 + 10.110000 8.3000000 + 9.7000000 8.0000000 + 8.9800000 7.9000000 + 8.9700000 8.3000000 + 9.0800000 8.5000000 + 9.4500000 9.0000000 + 10.200000 9.1000000 + 9.4700000 9.2000000 + 10.670000 9.9000000 + 13.600000 10.400000 + 13.190000 10.400000 + 13.200000 11.000000 + 13.090000 11.100000 + 12.960000 11.200000 + 12.900000 11.500000 + 12.500000 11.300000 + 11.780000 10.600000 + 11.080000 10.200000 + 10.820000 9.9000000 + 10.460000 10.000000 + 10.270000 9.9000000 + 9.8700000 9.6000000 + 9.3300000 9.1000000 + 9.1800000 8.9000000 + 9.2800000 9.2000000 + 9.4600000 9.5000000 + 9.0000000 9.2000000 + 8.1800000 8.8000000 + 7.5800000 8.4000000 + 7.3100000 8.2000000 + 6.6200000 8.0000000 + 5.8200000 7.7000000 + 5.8300000 7.7000000 + 5.4500000 7.4000000 + 5.2000000 7.4000000 + 5.3300000 7.7000000 + 5.5700000 8.1000000 + 5.5700000 8.2000000 + 5.7100000 8.3000000 + 5.8800000 8.4000000 + 6.1800000 8.2000000 + 6.3000000 8.2000000 + 6.4800000 8.3000000 + 6.1200000 8.2000000 + 5.9500000 8.1000000 + 5.8600000 7.9000000 + 5.8400000 7.9000000 + 6.1000000 8.0000000 + 6.1300000 8.1000000 + 6.1300000 8.1000000 + 6.0200000 7.9000000 + 5.8200000 7.7000000 + 6.0700000 7.4000000 + 5.9600000 7.2000000 + 5.8300000 7.0000000 + 5.8700000 7.1000000 + 6.1600000 7.5000000 + 6.3900000 7.7000000 + 6.0200000 7.3000000 + 5.8400000 7.1000000 + 5.6800000 7.0000000 + 5.3400000 6.8000000 + 4.7900000 6.5000000 + 4.6900000 6.4000000 + 4.8100000 6.6000000 + 4.8400000 6.7000000 + 4.8300000 6.6000000 + 4.6700000 6.4000000 + 4.4900000 6.3000000 + 4.5400000 6.0000000 + 4.4900000 5.6000000 + 4.6000000 5.9000000 + 4.6000000 6.0000000 + 4.6300000 6.0000000 + 4.5700000 5.8000000 + 4.5000000 5.8000000 + 4.5900000 6.0000000 + 4.6900000 6.1000000 + 4.8100000 6.0000000 + 4.4900000 5.9000000 + 3.9700000 5.7000000 + 3.9900000 5.6000000 + 3.8900000 5.5000000 + 3.7600000 5.4000000 + 3.7000000 5.5000000 + 3.8300000 5.8000000 + 3.9500000 6.0000000 + 3.9900000 6.2000000 + 4.7000000 6.5000000 + 3.9400000 6.0000000 + 3.6500000 5.8000000 diff --git a/statsmodels/tsa/vector_ar/tests/results/e6.dat b/statsmodels/tsa/vector_ar/tests/results/e6.dat new file mode 100644 index 0000000..697e468 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/results/e6.dat @@ -0,0 +1,118 @@ +/* +sample: 1972Q2 -- 1998Q4 +West German data until 1990Q2, all of Germany aferwards +Dp - \Delta log gdp deflator (source: Deutsches Institut für Wirtschaftsforschung, + Volkswirtschaftliche Gesamtrechnung) +R - nominal long term interest rate (Umlaufsrendite) + (source: Monatsberichte der Deutschen Bundesbank, + quarterly values are values of last month of quarter) +*/ +<1972 Q2> + Dp R +-0.00313258 0.083 +0.0188713 0.083 +0.0248036 0.087 +0.0162776 0.087 +2.89679E-4 0.102 +0.016829 0.098 +0.0385835 0.097 +-0.00144386 0.107 +0.0127239 0.109 +0.0238972 0.108 +0.0427728 0.099 +-0.0103779 0.089 +0.00558424 0.084 +0.00870609 0.087 +0.0389199 0.086 +-0.0196176 0.078 +0.00731993 0.083 +0.0180764 0.081 +0.0237775 0.074 +-0.0144377 0.07 +0.0110059 0.064 +0.0104017 0.06 +0.0354648 0.06 +-0.0157599 0.056 +0.0100193 0.06 +0.0180621 0.064 +0.0256915 0.066 +-0.0170689 0.071 +0.00350475 0.08 +0.0256438 0.078 +0.0315075 0.08 +-0.0132775 0.095 +0.0130968 0.083 +0.0151458 0.083 +0.0312119 0.091 +-0.0207896 0.104 +0.0104489 0.111 +0.018106 0.113 +0.0405002 0.099 +-0.0201483 0.096 +0.00380802 0.092 +0.0215569 0.088 +0.0327106 0.08 +-0.0201726 0.074 +-0.00333166 0.081 +0.0192871 0.084 +0.0345473 0.083 +-0.0262156 0.079 +-0.00519753 0.081 +0.0132318 0.077 +0.0374279 0.07 +-0.0291948 0.077 +-0.00261354 0.07 +0.0172353 0.064 +0.0376387 0.066 +-0.0204763 0.06 +9.00269E-4 0.06 +0.0125732 0.058 +0.0344677 0.06 +-0.0220394 0.056 +-0.00202703 0.055 +0.00173426 0.062 +0.0365901 0.058 +-0.0252557 0.056 +9.2268E-4 0.06 +0.00451374 0.063 +0.0383272 0.062 +-0.0211368 0.07 +-5.33104E-4 0.071 +0.00981092 0.071 +0.0373549 0.078 +-0.016232 0.09 +0.00197124 0.09 +0.00687361 0.091 +0.0274582 0.09 +-0.0140786 0.086 +0.0166497 0.086 +0.0144682 0.088 +0.043004 0.087 +-0.0127769 0.082 +0.00927353 0.084 +0.0179157 0.082 +0.030508 0.074 +-0.0105906 0.065 +0.00747108 0.067 +0.00467587 0.061 +0.0310678 0.056 +-0.0153685 0.062 +8.10146E-4 0.069 +0.00806475 0.074 +0.0287657 0.074 +-0.0183783 0.071 +0.00449467 0.064 +0.00988674 0.061 +0.0245948 0.055 +-0.0185189 0.058 +-0.00590181 0.059 +0.00581503 0.055 +0.0243654 0.051 +-0.0157485 0.051 +-0.00749254 0.05 +0.00388288 0.051 +0.0242448 0.051 +-0.014647 0.047 +-0.00204897 0.047 +0.00247526 0.041 +0.0239234 0.038 diff --git a/statsmodels/tsa/vector_ar/tests/results/results_svar.py b/statsmodels/tsa/vector_ar/tests/results/results_svar.py new file mode 100644 index 0000000..fa5b79d --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/results/results_svar.py @@ -0,0 +1,15 @@ +""" +Test Results for the SVAR model. Obtained from R using svartest.R +""" + + +class SVARdataResults(object): + def __init__(self): + self.A = ([ + [1.0, 0.0, 0], + [-0.506802245, 1.0, 0], + [-5.536056520, 3.04117686, 1.0]]) + self.B = ([ + [0.0075756676, 0.0, 0.0], + [0.0, 0.00512051886, 0.0], + [0.0, 0.0, 0.020708948]]) diff --git a/statsmodels/tsa/vector_ar/tests/results/results_svar_st.py b/statsmodels/tsa/vector_ar/tests/results/results_svar_st.py new file mode 100644 index 0000000..6079bb0 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/results/results_svar_st.py @@ -0,0 +1,806 @@ +import numpy as np + +from statsmodels.tools.testing import ParamsTableTestBunch + + +est = dict( + mlag_var=3, + fpe_var=7.47593408072e-13, + aic_var=-19.4085401106207, + hqic_var=-19.20760258859687, + sbic_var=-18.91206199634062, + tparms_var=30, + k_var=30, + df_eq_var=10, + k_aux=18, + k_eq=18, + k_eq_var=3, + k_dv_var=3, + neqs_var=3, + k_dv=3, + neqs=3, + N_cns=12, + ic_ml=9, + rc_ml=0, + oid_df=0, + N=199, + rank=6, + F_3_var=9.018236399703298, + df_r3_var=189, + df_m3_var=9, + ll_3_var=364.1156201942387, + r2_3_var=.3004252574875596, + rmse_3_var=.0398398997327694, + k_3_var=10, + obs_3_var=199, + F_2_var=5.002566602091567, + df_r2_var=189, + df_m2_var=9, + ll_2_var=728.0001662442413, + r2_2_var=.1923874161594955, + rmse_2_var=.0064000343524738, + k_2_var=10, + obs_2_var=199, + F_1_var=8.356742395485949, + df_r1_var=189, + df_m1_var=9, + ll_1_var=694.4411801251371, + r2_1_var=.2846617748967589, + rmse_1_var=.0075756675969815, + k_1_var=10, + obs_1_var=199, + df_r=193, + df_r_var=189, + ll=1945.759734821802, + ll_var=1961.149741006759, + detsig_ml_var=5.52855987611e-13, + detsig_var=6.45335912865e-13, + T_var=199, + N_gaps_var=0, + tmin=0, + tmax=198, + cmd="svar", + cmdline="svar gdp cons inv, aeq(A) beq(B) lags(1/3) var dfk small", + predict="svar_p", + dfk_var="dfk", + vcetype="EIM", + lags_var="1 2 3", + depvar_var="gdp cons inv", + eqnames_var="gdp cons inv", + endog_var="gdp cons inv", + timevar="qtrdate", + tsfmt="%tq", + small="small", + title="Structural vector autoregression", + cns_b="[b_1_2]_cons = 0:[b_1_3]_cons = 0:[b_2_1]_cons = 0:[b_2_3]_cons = 0:[b_3_1]_cons = 0:[b_3_2]_cons = 0", # noqa:E501 + cns_a="[a_1_1]_cons = 1:[a_1_2]_cons = 0:[a_1_3]_cons = 0:[a_2_2]_cons = 1:[a_2_3]_cons = 0:[a_3_3]_cons = 1", # noqa:E501 + properties="b V", +) + +params_table = np.array([ + 1, np.nan, np.nan, np.nan, + np.nan, np.nan, 193, 1.9723316757957, + 0, -.50680224519119, .04791445158754, -10.577231469827, + 6.466439125e-21, -.60130543578568, -.41229905459671, 193, + 1.9723316757957, 0, -5.5360565201616, .24220266982262, + -22.857124259679, 8.232580974e-57, -6.013760517815, -5.0583525225081, + 193, 1.9723316757957, 0, 0, + np.nan, np.nan, np.nan, np.nan, + np.nan, 193, 1.9723316757957, 0, + 1, np.nan, np.nan, np.nan, + np.nan, np.nan, 193, 1.9723316757957, + 0, 3.0411768648574, .28669329203947, 10.607771263929, + 5.260805180e-21, 2.4757226037298, 3.606631125985, 193, + 1.9723316757957, 0, 0, np.nan, + np.nan, np.nan, np.nan, np.nan, + 193, 1.9723316757957, 0, 0, + np.nan, np.nan, np.nan, np.nan, + np.nan, 193, 1.9723316757957, 0, + 1, np.nan, np.nan, np.nan, + np.nan, np.nan, 193, 1.9723316757957, + 0, .00757566759698, .00037973390425, 19.94993734326, + 8.739086225e-49, .00682670638925, .00832462880472, 193, + 1.9723316757957, 0, 0, np.nan, + np.nan, np.nan, np.nan, np.nan, + 193, 1.9723316757957, 0, 0, + np.nan, np.nan, np.nan, np.nan, + np.nan, 193, 1.9723316757957, 0, + 0, np.nan, np.nan, np.nan, + np.nan, np.nan, 193, 1.9723316757957, + 0, .00512051886486, .00025666841839, 19.94993734326, + 8.739086225e-49, .00461428361309, .00562675411662, 193, + 1.9723316757957, 0, 0, np.nan, + np.nan, np.nan, np.nan, np.nan, + 193, 1.9723316757957, 0, 0, + np.nan, np.nan, np.nan, np.nan, + np.nan, 193, 1.9723316757957, 0, + 0, np.nan, np.nan, np.nan, + np.nan, np.nan, 193, 1.9723316757957, + 0, .02070894812762, .00103804577284, 19.94993734326, + 8.739086225e-49, .01866157756892, .02275631868632, 193, + 1.9723316757957, 0]).reshape(18, 9) + +params_table_colnames = 'b se t pvalue ll ul df crit eform'.split() + +params_table_rownames = [ + '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', + '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', + '_cons', '_cons', '_cons', '_cons'] + +b = np.array([ + 1, -.50680224519119, -5.5360565201616, 0, + 1, 3.0411768648574, 0, 0, + 1, .00757566759698, 0, 0, + 0, .00512051886486, 0, 0, + 0, .02070894812762]) + +b_colnames = [ + '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', + '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', + '_cons', '_cons', '_cons', '_cons'] + +b_rownames = 'y1'.split() + +cov = np.array([ + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, .00229579467093, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, .0586621332692, 0, + 0, -.04165561908647, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + -.04165561908647, 0, 0, .08219304370043, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 1.441978380e-07, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 6.587867700e-08, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 1.077539027e-06 + ]).reshape(18, 18) + +cov_colnames = [ + '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', + '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', + '_cons', '_cons', '_cons', '_cons'] + +cov_rownames = [ + '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', + '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', + '_cons', '_cons', '_cons', '_cons'] + +constraints = np.array([ + 1, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 1, 0, + 0, 0, 1, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 1, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 1, + 0, 0, 0, 0, + 0, 0, 0, 1, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 1, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 1, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 1, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 1, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 1, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 1, + 0, 0, 0, 0 + ]).reshape(12, 19) + +constraints_colnames = [ + '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', + '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', '_cons', + '_cons', '_cons', '_cons', '_cons', '_r'] + +constraints_rownames = 'r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12'.split() + +Sigma = np.array([ + .00005739073954, .00002908575565, .00022926345064, .00002908575565, + .00004096043971, .0000364524456, .00022926345064, .0000364524456, + .00158721761072]).reshape(3, 3) + +Sigma_colnames = 'gdp cons inv'.split() + +Sigma_rownames = 'gdp cons inv'.split() + +G_var = np.array([ + 1, .00772119249309, .00832845872247, .00812414768988, + .00772450051084, .00839168407728, .00810118500591, .00793331513676, + .00846090823295, .009386666817, .00772119249309, .00013590038218, + .00010436399127, .00039355021854, .00008395547668, .00009296949447, + .0001468047815, .00007985818625, .00008622263703, .00012491817455, + .00832845872247, .00010436399127, .0001177915254, .0001572415776, + .00008140583018, .00008416323485, .00014479739125, .00007884622137, + .0000839417926, .00012879456896, .00812414768988, .00039355021854, + .0001572415776, .00222357091844, .0001852293649, .00023227850984, + .00042852108282, .00014155595459, .00015686829612, .00027431611677, + .00772450051084, .00008395547668, .00008140583018, .0001852293649, + .00013589031191, .00010428130248, .00039335411738, .00008365141811, + .00009289191013, .0001446903813, .00839168407728, .00009296949447, + .00008416323485, .00023227850984, .00010428130248, .000118309348, + .00015273148978, .00008252427592, .00008497769731, .00014704611828, + .00810118500591, .0001468047815, .00014479739125, .00042852108282, + .00039335411738, .00015273148978, .00222677863348, .00017054880362, + .0002272506141, .00033983014403, .00793331513676, .00007985818625, + .00007884622137, .00014155595459, .00008365141811, .00008252427592, + .00017054880362, .00013762976929, .00010632331501, .00038874930061, + .00846090823295, .00008622263703, .0000839417926, .00015686829612, + .00009289191013, .00008497769731, .0002272506141, .00010632331501, + .000119472079, .00016022586575, .009386666817, .00012491817455, + .00012879456896, .00027431611677, .0001446903813, .00014704611828, + .00033983014403, .00038874930061, .00016022586575, .00210416228523 + ]).reshape(10, 10) + +G_var_colnames = [ + '_cons', + 'L.gdp', 'L.cons', 'L.inv', + 'L2.gdp', 'L2.cons', 'L2.inv', + 'L3.gdp', 'L3.cons', 'L3.inv'] + +G_var_rownames = [ + '_cons', + 'L.gdp', 'L.cons', 'L.inv', + 'L2.gdp', 'L2.cons', 'L2.inv', + 'L3.gdp', 'L3.cons', 'L3.inv'] + + +bf_var = np.array([ + -.28614799058891, .02569110476595, -.18003096181942, .6738689560015, + .29544106895159, .18370240194258, .03057777928182, -.01444291994803, + .01263245201514, .00128149319157, -.12715587337617, -.08663431448056, + -.35906668730993, .25639388994688, .20570668527827, .41845237867104, + .02404284475263, .00384555072972, .04190581088286, .00483719365525, + -1.8625374877103, .33142498594011, -.48831009148236, 4.4033743272466, + .87819807698004, -.12378698529172, .22371717935155, -.09655522236577, + .03345298758638, -.02059735685585]) + +bf_var_colnames = [ + 'L.gdp', 'L2.gdp', 'L3.gdp', + 'L.cons', 'L2.cons', 'L3.cons', + 'L.inv', 'L2.inv', 'L3.inv', + '_cons', + 'L.gdp', 'L2.gdp', 'L3.gdp', + 'L.cons', 'L2.cons', 'L3.cons', + 'L.inv', 'L2.inv', 'L3.inv', + '_cons', + 'L.gdp', 'L2.gdp', 'L3.gdp', + 'L.cons', 'L2.cons', 'L3.cons', + 'L.inv', 'L2.inv', 'L3.inv', + '_cons'] + +bf_var_rownames = 'r1'.split() + +B = np.array([ + .00757566759698, 0, 0, 0, + .00512051886486, 0, 0, 0, + .02070894812762]).reshape(3, 3) + +B_colnames = 'gdp cons inv'.split() + +B_rownames = 'gdp cons inv'.split() + +A = np.array([ + 1, 0, 0, -.50680224519119, + 1, 0, -5.5360565201616, 3.0411768648574, + 1]).reshape(3, 3) + +A_colnames = 'gdp cons inv'.split() + +A_rownames = 'gdp cons inv'.split() + +beq = np.array([ + np.nan, 0, 0, 0, + np.nan, 0, 0, 0, + np.nan]).reshape(3, 3) + +beq_colnames = 'c1 c2 c3'.split() + +beq_rownames = 'r1 r2 r3'.split() + +aeq = np.array([ + 1, 0, 0, np.nan, + 1, 0, np.nan, np.nan, + 1]).reshape(3, 3) + +aeq_colnames = 'c1 c2 c3'.split() + +aeq_rownames = 'r1 r2 r3'.split() + +V_var = np.array([ + .02944043907167, -.00139167936464, -.0010606099932, -.01749947940302, + .00202095994301, -.00138072504574, -.00385176007523, .00038731129816, + .00020334459451, -.00004143863419, .01492048062093, -.00070530622659, + -.00053751952583, -.00886877545113, .00102422703656, -.00069975455317, + -.00195208065406, .0001962902355, .00010305549704, -.00002100119285, + .11760811420253, -.00555945464168, -.00423690492187, -.06990659232715, + .00807329290157, -.00551569453385, -.01538693895515, .00154722391453, + .00081231717487, -.00016553827919, -.00139167936464, .03044262457881, + -.00102187006012, .00135423549927, -.01978648635158, .00141733933507, + .0005786735915, -.00404788575193, .0001576008945, -.00004691846312, + -.00070530622659, .01542839048605, -.00051788604076, .00068632959155, + -.01002783570742, .00071831075721, .0002932730754, -.00205147758736, + .00007987248718, -.00002377838245, -.00555945464168, .12161162608255, + -.0040821473633, .00540987459008, -.07904268481996, .00566196061062, + .00231167441725, -.01617041813247, .00062958109943, -.0001874289971, + -.0010606099932, -.00102187006012, .0305750957042, .00161206604309, + .00123567563375, -.01979131075828, .00006003651469, .00052765232747, + -.00406616514879, -.0000494168379, -.00053751952583, -.00051788604076, + .01549552714982, .00081699869003, .00062624318551, -.01003028072757, + .00003042664044, .00026741538424, -.00206074162672, -.0000250445644, + -.00423690492187, -.0040821473633, .12214081925136, .00643985121405, + .00493625386149, -.07906195726942, .00023983274364, .002107855628, + -.01624344032441, -.00019740945784, -.01749947940302, .00135423549927, + .00161206604309, .0174886287578, -.00252569799616, -.00071586401207, + .00214091625575, -.00039776436038, -.00032773904917, -.00001762895502, + -.00886877545113, .00068632959155, .00081699869003, .00886327631977, + -.00128002941513, -.00036280148857, .00108502116518, -.0002015878709, + -.00016609888596, -8.934393985e-06, -.06990659232715, .00540987459008, + .00643985121405, .06986324637298, -.010089611016, -.00285972013799, + .00855249213135, -.00158898161155, -.00130924581082, -.0000704238191, + .00202095994301, -.01978648635158, .00123567563375, -.00252569799616, + .02190111225253, -.00177986396497, -.00110297152268, .00248014965403, + -.00035987053166, -.00002801274167, .00102422703656, -.01002783570742, + .00062624318551, -.00128002941513, .01109953286177, -.00090203905358, + -.00055898844408, .00125694541307, -.00018238319342, -.00001419692037, + .00807329290157, -.07904268481996, .00493625386149, -.010089611016, + .08749015273475, -.00711016720733, -.00440612996585, .00990765535257, + -.00143760405483, -.00011190477537, -.00138072504574, .00141733933507, + -.01979131075828, -.00071586401207, -.00177986396497, .02191808721673, + .00005751246451, -.00100612185989, .0023961694647, -.00002263401879, + -.00069975455317, .00071831075721, -.01003028072757, -.00036280148857, + -.00090203905358, .01110813581173, .00002914744614, -.00050990481753, + .00121438406457, -.00001147097154, -.00551569453385, .00566196061062, + -.07906195726942, -.00285972013799, -.00711016720733, .08755796400357, + .00022974971529, -.0040192367482, .00957217286629, -.00009041795403, + -.00385176007523, .0005786735915, .00006003651469, .00214091625575, + -.00110297152268, .00005751246451, .0006984186117, -.00009557423262, + -4.697657444e-06, .00001087688008, -.00195208065406, .0002932730754, + .00003042664044, .00108502116518, -.00055898844408, .00002914744614, + .00035396012049, -.00004843723567, -2.380783340e-06, 5.512427248e-06, + -.01538693895515, .00231167441725, .00023983274364, .00855249213135, + -.00440612996585, .00022974971529, .00279002957959, -.00038179815311, + -.00001876611391, .0000434507567, .00038731129816, -.00404788575193, + .00052765232747, -.00039776436038, .00248014965403, -.00100612185989, + -.00009557423262, .0007270051133, -.00006681356415, .00001061820762, + .0001962902355, -.00205147758736, .00026741538424, -.0002015878709, + .00125694541307, -.00050990481753, -.00004843723567, .00036844782368, + -.00003386126432, 5.381331462e-06, .00154722391453, -.01617041813247, + .002107855628, -.00158898161155, .00990765535257, -.0040192367482, + -.00038179815311, .00290422640037, -.00026690557379, .00004241741679, + .00020334459451, .0001576008945, -.00406616514879, -.00032773904917, + -.00035987053166, .0023961694647, -4.697657444e-06, -.00006681356415, + .00069956889753, 8.959242929e-06, .00010305549704, .00007987248718, + -.00206074162672, -.00016609888596, -.00018238319342, .00121438406457, + -2.380783340e-06, -.00003386126432, .00035454308793, 4.540564432e-06, + .00081231717487, .00062958109943, -.01624344032441, -.00130924581082, + -.00143760405483, .00957217286629, -.00001876611391, -.00026690557379, + .00279462471985, .00003579021573, -.00004143863419, -.00004691846312, + -.0000494168379, -.00001762895502, -.00002801274167, -.00002263401879, + .00001087688008, .00001061820762, 8.959242929e-06, 1.677729973e-06, + -.00002100119285, -.00002377838245, -.0000250445644, -8.934393985e-06, + -.00001419692037, -.00001147097154, 5.512427248e-06, 5.381331462e-06, + 4.540564432e-06, 8.502773173e-07, -.00016553827919, -.0001874289971, + -.00019740945784, -.0000704238191, -.00011190477537, -.00009041795403, + .0000434507567, .00004241741679, .00003579021573, 6.702164252e-06, + .01492048062093, -.00070530622659, -.00053751952583, -.00886877545113, + .00102422703656, -.00069975455317, -.00195208065406, .0001962902355, + .00010305549704, -.00002100119285, .021011984501, -.00099325778291, + -.00075696971382, -.01248958241067, .00144238266611, -.00098543955783, + -.0027490460589, .0002764285877, .00014512940713, -.0000295752362, + .01869946288115, -.00088394254441, -.00067365969478, -.0111150130859, + .00128363796975, -.00087698477183, -.00244649355869, .00024600561241, + .00012915686101, -.00002632026649, -.00070530622659, .01542839048605, + -.00051788604076, .00068632959155, -.01002783570742, .00071831075721, + .0002932730754, -.00205147758736, .00007987248718, -.00002377838245, + -.00099325778291, .02172725597817, -.00072932057206, .00096653365977, + -.01412184592548, .00101157160288, .00041300608683, -.00288902324026, + .00011248159528, -.00003348625398, -.00088394254441, .01933601353331, + -.00064905354204, .00086015960527, -.01256763413681, .00090024079538, + .00036755176504, -.00257106523382, .00010010217815, -.00002980084833, + -.00053751952583, -.00051788604076, .01549552714982, .00081699869003, + .00062624318551, -.01003028072757, .00003042664044, .00026741538424, + -.00206074162672, -.0000250445644, -.00075696971382, -.00072932057206, + .02182180216435, .00115055032398, .00088191610191, -.01412528916077, + .00004284876028, .00037659161603, -.00290206945884, -.00003526937318, + -.00067365969478, -.00064905354204, .01942015422449, .00102392389806, + .00078485482469, -.01257069841903, .00003813294276, .00033514497143, + -.00258267562122, -.0000313877223, -.00886877545113, .00068632959155, + .00081699869003, .00886327631977, -.00128002941513, -.00036280148857, + .00108502116518, -.0002015878709, -.00016609888596, -8.934393985e-06, + -.01248958241067, .00096653365977, .00115055032398, .01248183817871, + -.00180262009749, -.00051092048898, .00152799688463, -.00028388906004, + -.00023391117927, -.00001258199067, -.0111150130859, .00086015960527, + .00102392389806, .01110812116296, -.00160422865342, -.00045468997555, + .00135982972124, -.00025264500554, -.00020816755381, -.00001119725114, + .00102422703656, -.01002783570742, .00062624318551, -.00128002941513, + .01109953286177, -.00090203905358, -.00055898844408, .00125694541307, + -.00018238319342, -.00001419692037, .00144238266611, -.01412184592548, + .00088191610191, -.00180262009749, .01563107907748, -.00127030965655, + -.00078720363114, .00177011171483, -.00025684379282, -.00001999302022, + .00128363796975, -.01256763413681, .00078485482469, -.00160422865342, + .01391076521058, -.00113050284561, -.00070056614975, .00157529805457, + -.00022857626656, -.00001779264303, -.00069975455317, .00071831075721, + -.01003028072757, -.00036280148857, -.00090203905358, .01110813581173, + .00002914744614, -.00050990481753, .00121438406457, -.00001147097154, + -.00098543955783, .00101157160288, -.01412528916077, -.00051092048898, + -.00127030965655, .01564319430727, .00004104731625, -.000718080898, + .0017101740749, -.00001615416302, -.00087698477183, .00090024079538, + -.01257069841903, -.00045468997555, -.00113050284561, .01392154707127, + .00003652976074, -.00063905087581, .00152195698757, -.00001437627996, + -.00195208065406, .0002932730754, .00003042664044, .00108502116518, + -.00055898844408, .00002914744614, .00035396012049, -.00004843723567, + -2.380783340e-06, 5.512427248e-06, -.0027490460589, .00041300608683, + .00004284876028, .00152799688463, -.00078720363114, .00004104731625, + .00049846950341, -.00006821244376, -3.352772870e-06, 7.762956089e-06, + -.00244649355869, .00036755176504, .00003813294276, .00135982972124, + -.00070056614975, .00003652976074, .00044360931144, -.00006070516852, + -2.983775846e-06, 6.908586346e-06, .0001962902355, -.00205147758736, + .00026741538424, -.0002015878709, .00125694541307, -.00050990481753, + -.00004843723567, .00036844782368, -.00003386126432, 5.381331462e-06, + .0002764285877, -.00288902324026, .00037659161603, -.00028388906004, + .00177011171483, -.000718080898, -.00006821244376, .00051887202278, + -.00004768561946, 7.578338537e-06, .00024600561241, -.00257106523382, + .00033514497143, -.00025264500554, .00157529805457, -.00063905087581, + -.00006070516852, .00046176638526, -.00004243747044, 6.744287298e-06, + .00010305549704, .00007987248718, -.00206074162672, -.00016609888596, + -.00018238319342, .00121438406457, -2.380783340e-06, -.00003386126432, + .00035454308793, 4.540564432e-06, .00014512940713, .00011248159528, + -.00290206945884, -.00023391117927, -.00025684379282, .0017101740749, + -3.352772870e-06, -.00004768561946, .00049929047581, 6.394316100e-06, + .00012915686101, .00010010217815, -.00258267562122, -.00020816755381, + -.00022857626656, .00152195698757, -2.983775846e-06, -.00004243747044, + .00044433992986, 5.690575137e-06, -.00002100119285, -.00002377838245, + -.0000250445644, -8.934393985e-06, -.00001419692037, -.00001147097154, + 5.512427248e-06, 5.381331462e-06, 4.540564432e-06, 8.502773173e-07, + -.0000295752362, -.00003348625398, -.00003526937318, -.00001258199067, + -.00001999302022, -.00001615416302, 7.762956089e-06, 7.578338537e-06, + 6.394316100e-06, 1.197415436e-06, -.00002632026649, -.00002980084833, + -.0000313877223, -.00001119725114, -.00001779264303, -.00001437627996, + 6.908586346e-06, 6.744287298e-06, 5.690575137e-06, 1.065631164e-06, + .11760811420253, -.00555945464168, -.00423690492187, -.06990659232715, + .00807329290157, -.00551569453385, -.01538693895515, .00154722391453, + .00081231717487, -.00016553827919, .01869946288115, -.00088394254441, + -.00067365969478, -.0111150130859, .00128363796975, -.00087698477183, + -.00244649355869, .00024600561241, .00012915686101, -.00002632026649, + .81421469275997, -.03848875295449, -.02933258697842, -.48397149277921, + .0558923484488, -.03818579662369, -.1065255731616, .01071161163275, + .00562376655253, -.00114604081571, -.00555945464168, .12161162608255, + -.0040821473633, .00540987459008, -.07904268481996, .00566196061062, + .00231167441725, -.01617041813247, .00062958109943, -.0001874289971, + -.00088394254441, .01933601353331, -.00064905354204, .00086015960527, + -.01256763413681, .00090024079538, .00036755176504, -.00257106523382, + .00010010217815, -.00002980084833, -.03848875295449, .84193147248604, + -.02826118234912, .03745319280989, -.54722172676604, .03919841373406, + .01600399163071, -.1119496908934, .00435866338746, -.00129759280914, + -.00423690492187, -.0040821473633, .12214081925136, .00643985121405, + .00493625386149, -.07906195726942, .00023983274364, .002107855628, + -.01624344032441, -.00019740945784, -.00067365969478, -.00064905354204, + .01942015422449, .00102392389806, .00078485482469, -.01257069841903, + .00003813294276, .00033514497143, -.00258267562122, -.0000313877223, + -.02933258697842, -.02826118234912, .84559513852024, .0445838411169, + .03417426126141, -.54735515218165, .00166039005894, .01459293037875, + -.11245523204569, -.00136668870299, -.06990659232715, .00540987459008, + .00643985121405, .06986324637298, -.010089611016, -.00285972013799, + .00855249213135, -.00158898161155, -.00130924581082, -.0000704238191, + -.0111150130859, .00086015960527, .00102392389806, .01110812116296, + -.00160422865342, -.00045468997555, .00135982972124, -.00025264500554, + -.00020816755381, -.00001119725114, -.48397149277921, .03745319280989, + .0445838411169, .48367140368251, -.06985155394389, -.01979817608096, + .05920990061166, -.01100070503994, -.00906406146236, -.00048755231406, + .00807329290157, -.07904268481996, .00493625386149, -.010089611016, + .08749015273475, -.00711016720733, -.00440612996585, .00990765535257, + -.00143760405483, -.00011190477537, .00128363796975, -.01256763413681, + .00078485482469, -.00160422865342, .01391076521058, -.00113050284561, + -.00070056614975, .00157529805457, -.00022857626656, -.00001779264303, + .0558923484488, -.54722172676604, .03417426126141, -.06985155394389, + .60570453247617, -.04922451692591, -.03050415169677, .06859185366219, + -.00995270055771, -.00077472981275, -.00551569453385, .00566196061062, + -.07906195726942, -.00285972013799, -.00711016720733, .08755796400357, + .00022974971529, -.0040192367482, .00957217286629, -.00009041795403, + -.00087698477183, .00090024079538, -.01257069841903, -.00045468997555, + -.00113050284561, .01392154707127, .00003652976074, -.00063905087581, + .00152195698757, -.00001437627996, -.03818579662369, .03919841373406, + -.54735515218165, -.01979817608096, -.04922451692591, .60617399779988, + .00159058407757, -.02782564482269, .06626926927807, -.00062597404237, + -.01538693895515, .00231167441725, .00023983274364, .00855249213135, + -.00440612996585, .00022974971529, .00279002957959, -.00038179815311, + -.00001876611391, .0000434507567, -.00244649355869, .00036755176504, + .00003813294276, .00135982972124, -.00070056614975, .00003652976074, + .00044360931144, -.00006070516852, -2.983775846e-06, 6.908586346e-06, + -.1065255731616, .01600399163071, .00166039005894, .05920990061166, + -.03050415169677, .00159058407757, .01931570021627, -.00264323314799, + -.00012991999552, .00030081465683, .00154722391453, -.01617041813247, + .002107855628, -.00158898161155, .00990765535257, -.0040192367482, + -.00038179815311, .00290422640037, -.00026690557379, .00004241741679, + .00024600561241, -.00257106523382, .00033514497143, -.00025264500554, + .00157529805457, -.00063905087581, -.00006070516852, .00046176638526, + -.00004243747044, 6.744287298e-06, .01071161163275, -.1119496908934, + .01459293037875, -.01100070503994, .06859185366219, -.02782564482269, + -.00264323314799, .02010629812676, -.00184781841992, .00029366072412, + .00081231717487, .00062958109943, -.01624344032441, -.00130924581082, + -.00143760405483, .00957217286629, -.00001876611391, -.00026690557379, + .00279462471985, .00003579021573, .00012915686101, .00010010217815, + -.00258267562122, -.00020816755381, -.00022857626656, .00152195698757, + -2.983775846e-06, -.00004243747044, .00044433992986, 5.690575137e-06, + .00562376655253, .00435866338746, -.11245523204569, -.00906406146236, + -.00995270055771, .06626926927807, -.00012991999552, -.00184781841992, + .01934751290831, .00024777983816, -.00016553827919, -.0001874289971, + -.00019740945784, -.0000704238191, -.00011190477537, -.00009041795403, + .0000434507567, .00004241741679, .00003579021573, 6.702164252e-06, + -.00002632026649, -.00002980084833, -.0000313877223, -.00001119725114, + -.00001779264303, -.00001437627996, 6.908586346e-06, 6.744287298e-06, + 5.690575137e-06, 1.065631164e-06, -.00114604081571, -.00129759280914, + -.00136668870299, -.00048755231406, -.00077472981275, -.00062597404237, + .00030081465683, .00029366072412, .00024777983816, .00004639986487 + ]).reshape(30, 30) + +V_var_colnames = [ + 'L.gdp', 'L2.gdp', 'L3.gdp', + 'L.cons', 'L2.cons', 'L3.cons', + 'L.inv', 'L2.inv', 'L3.inv', + '_cons', + 'L.gdp', 'L2.gdp', 'L3.gdp', + 'L.cons', 'L2.cons', 'L3.cons', + 'L.inv', 'L2.inv', 'L3.inv', + '_cons', + 'L.gdp', 'L2.gdp', 'L3.gdp', + 'L.cons', 'L2.cons', 'L3.cons', + 'L.inv', 'L2.inv', 'L3.inv', + '_cons'] + +V_var_rownames = [ + 'L.gdp', 'L2.gdp', 'L3.gdp', + 'L.cons', 'L2.cons', 'L3.cons', + 'L.inv', 'L2.inv', 'L3.inv', + '_cons', + 'L.gdp', 'L2.gdp', 'L3.gdp', + 'L.cons', 'L2.cons', 'L3.cons', + 'L.inv', 'L2.inv', 'L3.inv', + '_cons', + 'L.gdp', 'L2.gdp', 'L3.gdp', + 'L.cons', 'L2.cons', 'L3.cons', + 'L.inv', 'L2.inv', 'L3.inv', + '_cons'] + +b_var = np.array([ + -.28614799058891, .02569110476595, -.18003096181942, .6738689560015, + .29544106895159, .18370240194258, .03057777928182, -.01444291994803, + .01263245201514, .00128149319157, -.12715587337617, -.08663431448056, + -.35906668730993, .25639388994688, .20570668527827, .41845237867104, + .02404284475263, .00384555072972, .04190581088286, .00483719365525, + -1.8625374877103, .33142498594011, -.48831009148236, 4.4033743272466, + .87819807698004, -.12378698529172, .22371717935155, -.09655522236577, + .03345298758638, -.02059735685585]) + +b_var_colnames = [ + 'L.gdp', 'L2.gdp', 'L3.gdp', + 'L.cons', 'L2.cons', 'L3.cons', + 'L.inv', 'L2.inv', 'L3.inv', + '_cons', + 'L.gdp', 'L2.gdp', 'L3.gdp', + 'L.cons', 'L2.cons', 'L3.cons', + 'L.inv', 'L2.inv', 'L3.inv', + '_cons', + 'L.gdp', 'L2.gdp', 'L3.gdp', + 'L.cons', 'L2.cons', 'L3.cons', + 'L.inv', 'L2.inv', 'L3.inv', + '_cons'] + +b_var_rownames = 'y1'.split() + + +results_svar1_small = ParamsTableTestBunch( + params_table=params_table, + params_table_colnames=params_table_colnames, + params_table_rownames=params_table_rownames, + b=b, + b_colnames=b_colnames, + b_rownames=b_rownames, + cov=cov, + cov_colnames=cov_colnames, + cov_rownames=cov_rownames, + constraints=constraints, + constraints_colnames=constraints_colnames, + constraints_rownames=constraints_rownames, + Sigma=Sigma, + Sigma_colnames=Sigma_colnames, + Sigma_rownames=Sigma_rownames, + G_var=G_var, + G_var_colnames=G_var_colnames, + G_var_rownames=G_var_rownames, + bf_var=bf_var, + bf_var_colnames=bf_var_colnames, + bf_var_rownames=bf_var_rownames, + B=B, + B_colnames=B_colnames, + B_rownames=B_rownames, + A=A, + A_colnames=A_colnames, + A_rownames=A_rownames, + beq=beq, + beq_colnames=beq_colnames, + beq_rownames=beq_rownames, + aeq=aeq, + aeq_colnames=aeq_colnames, + aeq_rownames=aeq_rownames, + V_var=V_var, + V_var_colnames=V_var_colnames, + V_var_rownames=V_var_rownames, + b_var=b_var, + b_var_colnames=b_var_colnames, + b_var_rownames=b_var_rownames, + **est +) + + +results_svar1_small.__doc__ = """ + Scalars + e(N) number of observations + e(N_cns) number of constraints + e(k_eq) number of equations in e(b) + e(k_dv) number of dependent variables + e(k_aux) number of auxiliary parameters + e(ll) log likelihood from svar + e(ll_#) log likelihood for equation # + e(N_gaps_var) number of gaps in the sample + e(k_var) number of coefficients in VAR + e(k_eq_var) number of equations in underlying VAR + e(k_dv_var) number of dependent variables in underlying VAR + e(df_eq_var) average number of parameters in an equation + e(df_m_var) model degrees of freedom + e(df_r_var) if small, residual degrees of freedom + e(obs_#_var) number of observations on equation # + e(k_#_var) number of coefficients in equation # + e(df_m#_var) model degrees of freedom for equation # + e(df_r#_var) residual degrees of freedom for equation # (small only) + e(r2_#_var) R-squared for equation # + e(ll_#_var) log likelihood for equation # VAR + e(chi2_#_var) chi-squared statistic for equation # + e(F_#_var) F statistic for equation # (small only) + e(rmse_#_var) root mean squared error for equation # + e(mlag_var) highest lag in VAR + e(tparms_var) number of parameters in all equations + e(aic_var) Akaike information criterion + e(hqic_var) Hannan-Quinn information criterion + e(sbic_var) Schwarz-Bayesian information criterion + e(fpe_var) final prediction error + e(ll_var) log likelihood from var + e(detsig_var) determinant of e(Sigma) + e(detsig_ml_var) determinant of Sigma_ml hat + e(tmin) first time period in the sample + e(tmax) maximum time + e(chi2_oid) overidentification test + e(oid_df) number of overidentifying restrictions + e(rank) rank of e(V) + e(ic_ml) number of iterations + e(rc_ml) return code from ml + + Matrices + e(b) coefficient vector + e(Cns) constraints matrix + e(Sigma) Sigma hat matrix + e(V) variance-covariance matrix of the estimators + e(b_var) coefficient vector of underlying VAR model + e(V_var) VCE of underlying VAR model + e(bf_var) full coefficient vector with zeros in dropped lags + e(G_var) Gamma matrix saved by var; see Methods and formulas in [TS] var svar + e(aeq) aeq(matrix), if specified + e(acns) acns(matrix), if specified + e(beq) beq(matrix), if specified + e(bcns) bcns(matrix), if specified + e(lreq) lreq(matrix), if specified + e(lrcns) lrcns(matrix), if specified + e(Cns_var) constraint matrix from var, if varconstraints() is specified + e(A) estimated A matrix, if a short-run model + e(B) estimated B matrix + e(C) estimated C matrix, if a long-run model + e(A1) estimated A bar matrix, if a long-run model +""" # noqa:E501 diff --git a/statsmodels/tsa/vector_ar/tests/results/results_var.py b/statsmodels/tsa/vector_ar/tests/results/results_var.py new file mode 100644 index 0000000..3eda619 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/results/results_var.py @@ -0,0 +1,67 @@ +""" +Test Results for the VAR model. Obtained from Stata using +datasets/macrodata/var.do +""" + +import numpy as np + + +class MacrodataResults(object): + def __init__(self): + params = [ + -0.2794863875, 0.0082427826, 0.6750534746, 0.2904420695, + 0.0332267098, -0.0073250059, 0.0015269951, -0.1004938623, + -0.1231841792, 0.2686635768, 0.2325045441, 0.0257430635, + 0.0235035714, 0.0054596064, -1.97116e+00, 0.3809752365, + 4.4143364022, 0.8001168377, 0.2255078864, -0.1241109271, + -0.0239026118] + params = np.asarray(params).reshape(3, -1) + params = np.hstack((params[:, -1][:, None], + params[:, :-1:2], + params[:, 1::2])) + self.params = params + self.neqs = 3 + self.nobs = 200 + self.df_eq = 7 + self.nobs_1 = 200 + self.df_model_1 = 6 + self.rmse_1 = .0075573716985351 + self.rsquared_1 = .2739094844780006 + self.llf_1 = 696.8213727557811 + self.nobs_2 = 200 + self.rmse_2 = .0065444260782597 + self.rsquared_2 = .1423626064753714 + self.llf_2 = 725.6033255319256 + self.nobs_3 = 200 + self.rmse_3 = .0395942039671031 + self.rsquared_3 = .2955406949737428 + self.llf_3 = 365.5895183036045 + # These are from Stata. They use the LL based definition + # We return Lutkepohl statistics. See Stata TS manual page 436 + # self.bic = -19.06939794312953 + # self.aic = -19.41572126661708 + # self.hqic = -19.27556951526737 + # These are from R. See var.R in macrodata folder + self.bic = -2.758301611618373e+01 + self.aic = -2.792933943967127e+01 + self.hqic = -2.778918768832157e+01 + self.fpe = 7.421287668357018e-13 + self.detsig = 6.01498432283e-13 + self.llf = 1962.572126661708 + + self.chi2_1 = 75.44775165699033 + # don't know how they calculate this; it's not -2 * (ll1 - ll0) + + self.chi2_2 = 33.19878716815366 + self.chi2_3 = 83.90568280242312 + bse = [ + .1666662376, .1704584393, .1289691456, .1433308696, .0257313781, + .0253307796, .0010992645, .1443272761, .1476111934, .1116828804, + .1241196435, .0222824956, .021935591, .0009519255, .8731894193, + .8930573331, .6756886998, .7509319263, .1348105496, .1327117543, + .0057592114] + bse = np.asarray(bse).reshape(3, -1) + bse = np.hstack((bse[:, -1][:, None], + bse[:, :-1:2], + bse[:, 1::2])) + self.bse = bse diff --git a/statsmodels/tsa/vector_ar/tests/results/results_var_data.py b/statsmodels/tsa/vector_ar/tests/results/results_var_data.py new file mode 100644 index 0000000..30631a1 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/results/results_var_data.py @@ -0,0 +1,132 @@ +from numpy import array, rec + +from statsmodels.tools.testing import Holder + +var_results = Holder() +var_results.comment = 'VAR test data converted from vars_results.npz' +var_results.causality = array([ + (9.317172089406967e-08,), + (0.5183914225971917,), + (4.8960835385969403e-14,)], + dtype=[('causedby', 'float')]) +var_results.name = 'var_results' +var_results.orthirf = array({ + 'realgdp': rec.array([ + (0.007557357219752236, 0.003948403413668315, 0.02972434157321242), + (0.0015408726821578582, 0.0010664916255201816, 0.00923575489996933), + (0.0015874964105555918, 0.0010551760558416706, 0.006102514196485799), + (0.0007262051539604352, 0.0005562787500837443, 0.003199064883156089), + (0.0005537000868358786, 0.0003520396722562061, 0.0024372344590635623), + (0.0003079984190444812, 0.00021674897409108682, .0013369479853037147)], + dtype=[('realgdp', 'float'), + ('realcons', 'float'), + ('realinv', 'float')]), + 'realinv': rec.array([ + (.0, 0.0, 0.020741992721114832), + (.0006890376065674764, .0005338724781743238, 0.004676882806534488), + (.00017134455810606506, .000682084896451223, -0.0005205835547221123), + (.0005217378718553543, .00030179909990059973, 0.0026650577026759623), + (.00034979575853114173, .00022249591743758265, 0.0015804716569096742), + (.00017738402507880077, .00013384975583249413, 0.0007585745605878197)], + dtype=[('realgdp', 'float'), + ('realcons', 'float'), + ('realinv', 'float')]), + 'realcons': rec.array([ + (.0, 0.005219256972675799, -0.01593559385372415), + (.0029937089930834665, 0.000991936965470755, 0.019445506482528015), + (.002111631850388755, 0.0013051320985438103, 0.00901674690789421), + (.000760821255683657, 0.0006894587307924545, 0.0031531908594739904), + (.0006879775935656037, 0.0004452087814044681, 0.0029845646103117077), + (.0003908528054047277, 0.00026799713044743445, 0.0017324202804285334)], + dtype=[('realgdp', 'float'), + ('realcons', 'float'), + ('realinv', 'float')]) + }, + dtype=object) +var_results.detomega = array([6.69357627913858242322e-13]) +var_results.nirfs = array([5.]) +var_results.loglike = array([1962.57082404432503608405]) +var_results.stderr = array([ + (0.0011190205021849168, 0.0009690469778955306, 0.0058627441569700095), + (0.169662667084976, 0.14692411307869205, 0.8888923913067142), + (0.13128502534984174, 0.11368992508162204, 0.6878252130006585), + (0.02619387125804535, 0.022683312533087908, 0.13723427351570822), + (0.17352233516355128, 0.15026650017519333, 0.9091138675275061), + (0.14590394087772843, 0.12634958224138662, 0.7644162686828472), + (0.02578605367156698, 0.022330151532965133, 0.13509764584216039)], + dtype=[('realgdp', 'float'), ('realcons', 'float'), ('realinv', 'float')]) +var_results.crit = array({ + 'sic': [-27.583016116183746], + 'hqic': [-27.789187688321583], + 'fpe': [7.421287668356912e-13], + 'aic': [-27.92933943967129] + }, dtype=object) +var_results.phis = array([ + [[1., 0., 0.], + [0., 1., 0.], + [0., 0., 1.]], + + [[-0.27943473587305184269, 0.67501575174854244743, .03321945079394677397], + [-0.10046797808205484848, 0.26863955252271337626, .02573872652220415141], + [-1.97097367379580989954, 4.41416232699026434005, .22547895322388852857]], + + [[-.04698727419951594098, 0.42980675754266339794, 0.00826075683324488733], + [-.17281970983411520937, 0.35046409430422942322, 0.03288425107568751504], + [0.04364931246903419604, 1.65096193457053663778, -.02509804924346402399]], + + [[-.11912577490062775665, 0.22257198988626961111, 0.02515370046023775175], + [-.07584698388980917749, 0.17652397885529469423, 0.01455014973529403233], + [-.60265240582682233494, 0.99644320159959076655, 0.12848609767194643649]], + + [[-.08883245330826733399, 0.18330532474980901214, 0.01686413466798001443], + [-.05728563445875266974, 0.11805267650029765969, 0.01072683422606196188], + [-.39750493711843060129, 0.80448318531634888107, 0.07619671254154830597]], + + [[-.04564844379524263945, 0.10099768165139233478, .00855192784337583181], + [-.03382143062494445684, 0.07105049775782870669, .00645308084098585207], + [-.19869441802790854812, 0.44359103295144985957, .03657192299636715521]]]) +var_results.nahead = array([5.]) +var_results.totobs = array([202.]) +var_results.type = array(['const'], dtype='|S5') +var_results.obs = array([200.]) +var_results.irf = array({ + 'realgdp': rec.array([ + (1.0, 0.0, 0.0), + (-0.27943473587305184, -0.10046797808205485, -1.97097367379581), + (-0.04698727419951594, -0.1728197098341152, 0.043649312469034196), + (-0.11912577490062776, -0.07584698388980918, -0.6026524058268223), + (-0.08883245330826733, -0.05728563445875267, -0.3975049371184306), + (-0.04564844379524264, -0.03382143062494446, -0.19869441802790855)], + dtype=[('realgdp', 'float'), + ('realcons', 'float'), + ('realinv', 'float')]), + 'realinv': rec.array([ + (0.0, 0.0, 1.0), + (0.033219450793946774, 0.02573872652220415, 0.22547895322388853), + (0.008260756833244887, 0.032884251075687515, -0.025098049243464024), + (0.025153700460237752, 0.014550149735294032, 0.12848609767194644), + (0.016864134667980014, 0.010726834226061962, 0.0761967125415483), + (0.008551927843375832, 0.006453080840985852, 0.036571922996367155)], + dtype=[('realgdp', 'float'), + ('realcons', 'float'), + ('realinv', 'float')]), + 'realcons': rec.array([ + (0.0, 1.0, 0.0), + (0.6750157517485424, 0.2686395525227134, 4.414162326990264), + (0.4298067575426634, 0.3504640943042294, 1.6509619345705366), + (0.2225719898862696, 0.1765239788552947, 0.9964432015995908), + (0.183305324749809, 0.11805267650029766, 0.8044831853163489), + (0.10099768165139233, 0.0710504977578287, 0.44359103295144986)], + dtype=[('realgdp', 'float'), + ('realcons', 'float'), + ('realinv', 'float')]) + }, dtype=object) +var_results.coefs = array([ + (0.0015269723529158544, 0.005459603048402539, -0.02390252088527764), + (-0.27943473587305184, -0.10046797808205485, -1.97097367379581), + (0.6750157517485424, 0.2686395525227134, 4.414162326990264), + (0.033219450793946774, 0.02573872652220415, 0.22547895322388853), + (0.008221084912580555, -0.12317392770605443, 0.3807858492371746), + (0.29045762812920883, 0.23249943591732136, 0.8002809175290293), + (-0.007320907532428127, 0.023503761040979707, -0.12407906157659883)], + dtype=[('realgdp', 'float'), ('realcons', 'float'), ('realinv', 'float')]) diff --git a/statsmodels/tsa/vector_ar/tests/results/vars_results.npz b/statsmodels/tsa/vector_ar/tests/results/vars_results.npz new file mode 100644 index 0000000000000000000000000000000000000000..07de18143720e282ccfc6331315bfbaed37f698d GIT binary patch literal 5696 zcmeHL4OA0X7M?&5h=`(K6;ZJ4DN$2a3n+qcK`fv_eu_aUA|@d)K?qC|P+HKS3#e!p zwSq`>g=+mNZY_w46$Z7U715QdTLjxGREzl6!X7;6>b@a7k_>X%vmVcOd-~wb&zt#j z@4Ij2`|h1kp)uE*U|QGaAaC!oX5$s;nCZh%mx@zW;zYSR-C2>6z9m>RKQxj=_&5Cn(niP!=;*ynWrC1S@tc;a0_xXzxRWdZLBE=~( zbk27XOcFR`I_NbXL1^HJQM&hrosGr&3%&8KTQl@;7sZu6RjE_wr`)p`EVXP}-RXnusvuM_D(HvP64#_6D z`mXB%5Rgal`s@$wv)^xrvJjauCYjk$!?eS4MH*$9OAXJYM({}s68Rs8{kQ7H&ocC% zP)meF4rxhR2}k6R!_dwwCsjBGxrMH*6XoCj_nwlpu9aZ2KX-+TAO&0=T&%ZD*$Ji- zs;O4*NI2V6zkh0a7<@oIGk@#uYS_DI$2`jDU3k0Wv;D{ChC%V1DCf>+E8w}!^3R*< z1HjFL$d31z4ch}sZr*cEfNf;!%`<Kh>V zL^`P^(jO`hHh%ip(wDBUTe@NI7+*-gT<8~h)&)N07yZlhstl}o*B2Jun-1X}l}oE8 zy$O5=^X#6sNT{q25t#TmK|s{kdwlXH!osDUX_DqZCKmncZxD>J1A<{YAQ4ldv#sWvao#m;sT=pzZ?=&AGW$?_=Lj4 zi3LsB?OWi{;nJh>ATb=tSlcl{A_Dik&jMqXuZA!EcDs5$2!wCNha!s#{bAO%M%A$^ za!8uoS|Z5vhtn=UIYqze1zph}-Lp}VFurgeH*v>IXqxWW?wvmkUN0-L3z95G!AKRW zCC-NQQyg?*{vxzuOt(NiR;Er)lEsS$a$1nh=ypO(*%`^O)m>i!dUnYAM4ixam<^&$t$#Nhps#e735Cqea zW)Lbhk{G4F{WLxPM*`Kyq5b+KaL|r1BsX9Xv0eYzuM)Bu{p-e~FD)OxM)VG>i!fc^ zRT~0_JPyaLHC_P~m0rbJN6$c5r06_(@f3_+c3ypvx(CA5lXv{wPz&d0+9}T2R)cVP zoXG*B+wgO3=}-BM+o2(;MpVDjDW(+@mP!|j$S-KnqL zhcgw^yL-w`L1lLR_?d!Q_^vv1+}N}qVe-(b30RNB$({9c?35E+g z>*Lmm_9&K2H$(B1D&=bZX#RfG)L12#MpI@1wVqpj@NShmJPhPP7oUD0*|+p~(GPHEqo%>ps02nw^B>PS zRz-LI!@g5G?J_95c9i=>ZHFfZTMvy}_nd}O|0%ZntbG1Dox5>m%LTamg=x@H%YF2t zBbQvdvYMf1_!?twhX%T;J1%rhsH4qdZgdigYrt*#CffDdE*RrCrqw0#6S!7gGkjq} z51ja-Zu9(#BHF?#qjgK( zVBa+S{`v(6={Bc2p9=RH_|`iotg|~CW}A3!IF`~xyH!ZD!)w~1YWmd8ETuwB%EYmQzHBcc9omP2&E1a+>l=^E2BrejRMm~Jt>{wC@b90cv2Ah4!l z4aJ&?H4;wG8o;~3;`r_2b`Vf4Z{$ABq$6#)hnHAw12<0Lj6J7mI#kFp zvNj(46B%B0O%`)x@WG4?Wq-QTK|e-^dLOdbKz7lo1HNuzSc0;V`WXka{J3edb|Yke z>Bxq$i##37afm_5#|E;CGaYa@0_sXNHjZ6{=x|*~FmXx3MzOPQ9cm_;EY88%DE*l9 zCDgq@O;!vlXmvRm8^_L`bk@E@I9)Eq#<8;=9WDlaLBKf>8^umobg1hH)tA1oLF`0B o2U>_e=k}!?Y!I6wbf88nJ;DeTnxG{l2ut*5ZcGppM=@vr0l7mg0RR91 literal 0 HcmV?d00001 diff --git a/statsmodels/tsa/vector_ar/tests/svar.do b/statsmodels/tsa/vector_ar/tests/svar.do new file mode 100644 index 0000000..bb67d63 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/svar.do @@ -0,0 +1,19 @@ +insheet using "/home/skipper/statsmodels/statsmodels-skipper/scikits/statsmodels/datasets/macrodata/macrodata.csv", double clear + +gen qtrdate=yq(year,quarter) +format qtrdate %tq +tsset qtrdate + +gen lgdp = log(realgdp) +gen lcons = log(realcons) +gen linv = log(realinv) + +gen gdp = D.lgdp +gen cons = D.lcons +gen inv = D.linv + +matrix A = (1,0,0\.,1,0\.,.,1) +matrix B = (.,0,0\0,.,0\0,0,.) + +svar gdp cons inv, aeq(A) beq(B) lags(1/3) var + diff --git a/statsmodels/tsa/vector_ar/tests/svartest.R b/statsmodels/tsa/vector_ar/tests/svartest.R new file mode 100644 index 0000000..ca8dca7 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/svartest.R @@ -0,0 +1,22 @@ +library("vars") + +#data <- read.csv("/home/skipper/statsmodels/statsmodels-skipper/scikits/statsmodels/datasets/macrodata/macrodata.csv") +#data <- read.csv("/home/bart/statsmodels/scikits/statsmodels/datasets/macrodata/macrodata.csv") +data <- read.csv("C:\\statsmodels\\statsmodels-bartbkr\\scikits\\statsmodels\\datasets\\macrodata\\macrodata.csv") +names <- colnames(data) +data <- log(data[c('realgdp','realcons','realinv')]) +data <- sapply(data, diff) +data = ts(data, start=c(1959,2), frequency=4) + +var <-VAR(data, p=3, type= "const") +amat <- matrix(0,3,3) +amat[1,1] <- 1 +amat[2,1] <- NA +amat[3,1] <- NA +amat[2,2] <- 1 +amat[3,2] <- NA +amat[3,3] <- 1 +bmat <- diag(3) +diag(bmat) <- NA +svar <- SVAR(var, estmethod = 'scoring', Bmat=bmat, Amat=amat) +plot(irf(svar, n.ahead=30, impulse = 'realgdp', runs=100)) diff --git a/statsmodels/tsa/vector_ar/tests/test_coint.py b/statsmodels/tsa/vector_ar/tests/test_coint.py new file mode 100644 index 0000000..9ce5b8a --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/test_coint.py @@ -0,0 +1,153 @@ +# -*- coding: utf-8 -*- +"""Test Johansen's Cointegration test against jplv, Spatial Econometrics Toolbox + +Created on Thu Aug 30 21:51:08 2012 +Author: Josef Perktold + +""" +import os +import warnings + +import numpy as np +from numpy.testing import assert_almost_equal, assert_equal +import pandas as pd +import pytest + +from statsmodels.tsa.vector_ar.vecm import coint_johansen +from statsmodels.tools.sm_exceptions import HypothesisTestWarning + +current_path = os.path.dirname(os.path.abspath(__file__)) +dta_path = os.path.join(current_path, "Matlab_results", "test_coint.csv") +with open(dta_path, "rb") as fd: + dta = np.genfromtxt(fd) + + +class CheckCointJoh(object): + + def test_basic(self): + assert_equal(self.res.ind, np.arange(len(self.res.ind), dtype=int)) + assert_equal(self.res.r0t.shape, (self.nobs_r, 8)) + + def test_table_trace(self): + table1 = np.column_stack((self.res.lr1, self.res.cvt)) + assert_almost_equal(table1, + self.res1_m.reshape(table1.shape, order='F')) + + def test_table_maxeval(self): + table2 = np.column_stack((self.res.lr2, self.res.cvm)) + assert_almost_equal(table2, + self.res2_m.reshape(table2.shape, order='F')) + + +class TestCointJoh12(CheckCointJoh): + + @classmethod + def setup_class(cls): + cls.res = coint_johansen(dta, 1, 2) + cls.nobs_r = 173 - 1 - 2 + + cls.res1_m = np.array([241.985452556075, 166.4781461662553, 110.3298006342814, 70.79801574443575, 44.90887371527634, 27.22385073668511, 11.74205493173769, 3.295435325623445, 169.0618, 133.7852, 102.4674, 75.1027, 51.6492, 32.0645, 16.1619, 2.7055, 175.1584, 139.278, 107.3429, 79.34220000000001, 55.2459, 35.0116, 18.3985, 3.8415, 187.1891, 150.0778, 116.9829, 87.7748, 62.5202, 41.0815, 23.1485, 6.6349]) + cls.res2_m = np.array([75.50730638981975, 56.14834553197396, 39.5317848898456, 25.8891420291594, 17.68502297859124, 15.48179580494741, 8.446619606114249, 3.295435325623445, 52.5858, 46.5583, 40.5244, 34.4202, 28.2398, 21.8731, 15.0006, 2.7055, 55.7302, 49.5875, 43.4183, 37.1646, 30.8151, 24.2522, 17.1481, 3.8415, 62.1741, 55.8171, 49.4095, 42.8612, 36.193, 29.2631, 21.7465, 6.6349,]) + + evec = np.array([ + 0.01102517075074406, -0.2185481584930077, 0.04565819524210763, -0.06556394587400775, + 0.04711496306104131, -0.1500111976629196, 0.03775327003706507, 0.03479475877437702, + + 0.007517888890275335, -0.2014629352546497, 0.01526001455616041, 0.0707900418057458, + -0.002388919695513273, 0.04486516694838273, -0.02936314422571188, 0.009900554050392113, + + 0.02846074144367176, 0.02021385478834498, -0.04276914888645468, 0.1738024290422287, + 0.07821155002012749, -0.1066523077111768, -0.3011042488399306, 0.04965189679477353, + + 0.07141291326159237, -0.01406702689857725, -0.07842109866080313, -0.04773566072362181, + -0.04768640728128824, -0.04428737926285261, 0.4143225656833862, 0.04512787132114879, + + -0.06817130121837202, 0.2246249779872569, -0.009356548567565763, 0.006685350535849125, + -0.02040894506833539, 0.008131690308487425, -0.2503209797396666, 0.01560186979508953, + + 0.03327070126502506, -0.263036624535624, -0.04669882107497259, 0.0146457545413255, + 0.01408691619062709, 0.1004753600191269, -0.02239205763487946, -0.02169291468272568, + + 0.08782313160608619, -0.07696508791577318, 0.008925177304198475, -0.06230900392092828, + -0.01548907461158638, 0.04574831652028973, -0.2972228156126774, 0.003469819004961912, + + -0.001868995544352928, 0.05993345996347871, 0.01213394328069316, 0.02096614212178651, + -0.08624395993789938, 0.02108183181049973, -0.08470307289295617, -5.135072530480897e-005]) + cls.evec_m = evec.reshape(cls.res.evec.shape, order='F') + + cls.eig_m = np.array([0.3586376068088151, 0.2812806889719111, 0.2074818815675726, 0.141259991767926, 0.09880133062878599, 0.08704563854307619, 0.048471840356709, 0.01919823444066367]) + + def test_evec(self): + for col in range(self.evec_m.shape[1]): + try: + assert_almost_equal(self.res.evec[:, col], + self.evec_m[:, col]) + except AssertionError: + assert_almost_equal(self.res.evec[:, col], + -self.evec_m[:, col]) + + def test_evals(self): + assert_almost_equal(self.res.eig, self.eig_m) + + +class TestCointJoh09(CheckCointJoh): + + @classmethod + def setup_class(cls): + cls.res = coint_johansen(dta, 0, 9) + cls.nobs_r = 173 - 1 - 9 + #fprintf(1, '%18.16g, ', r1) + cls.res1_m = np.array([307.6888935095814, 205.3839229398245, 129.1330243009336, 83.3101865760208, 52.51955460357912, 30.20027050520502, 13.84158157562689, 0.4117390188204866, 153.6341, 120.3673, 91.109, 65.8202, 44.4929, 27.0669, 13.4294, 2.7055, 159.529, 125.6185, 95.7542, 69.8189, 47.8545, 29.7961, 15.4943, 3.8415, 171.0905, 135.9825, 104.9637, 77.8202, 54.6815, 35.4628, 19.9349, 6.6349]) + #r2 = [res.lr2 res.cvm] + cls.res2_m = np.array([102.3049705697569, 76.25089863889085, 45.82283772491284, 30.7906319724417, 22.31928409837409, 16.35868892957814, 13.4298425568064, 0.4117390188204866, 49.2855, 43.2947, 37.2786, 31.2379, 25.1236, 18.8928, 12.2971, 2.7055, 52.3622, 46.2299, 40.0763, 33.8777, 27.5858, 21.1314, 14.2639, 3.8415, 58.6634, 52.3069, 45.8662, 39.3693, 32.7172, 25.865, 18.52, 6.6349]) + + +class TestCointJohMin18(CheckCointJoh): + + @classmethod + def setup_class(cls): + cls.res = coint_johansen(dta, -1, 8) + cls.nobs_r = 173 - 1 - 8 + + cls.res1_m = np.array([260.6786029744658, 162.7966072512681, 105.8253545950566, 71.16133060790817, 47.68490211260372, 28.11843682526138, 13.03968537077271, 2.25398078597622, 137.9954, 106.7351, 79.5329, 56.2839, 37.0339, 21.7781, 10.4741, 2.9762, 143.6691, 111.7797, 83.9383, 60.0627, 40.1749, 24.2761, 12.3212, 4.1296, 154.7977, 121.7375, 92.7136, 67.63670000000001, 46.5716, 29.5147, 16.364, 6.9406]) + cls.res2_m = np.array([97.88199572319769, 56.97125265621156, 34.66402398714837, 23.47642849530445, 19.56646528734234, 15.07875145448866, 10.7857045847965, 2.25398078597622, 45.893, 39.9085, 33.9271, 27.916, 21.837, 15.7175, 9.4748, 2.9762, 48.8795, 42.7679, 36.6301, 30.4428, 24.1592, 17.7961, 11.2246, 4.1296, 55.0335, 48.6606, 42.2333, 35.7359, 29.0609, 22.2519, 15.0923, 6.9406]) + + +class TestCointJoh25(CheckCointJoh): + + @classmethod + def setup_class(cls): + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=HypothesisTestWarning) + cls.res = coint_johansen(dta, 2, 5) + cls.nobs_r = 173 - 1 - 5 + + # Note: critical values not available if trend>1 + cls.res1_m = np.array([270.1887263915158, 171.6870096307863, + 107.8613367358704, 70.82424032233558, + 44.62551818267534, 25.74352073857572, + 14.17882426926978, 4.288656185006764, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0]) + cls.res1_m[cls.res1_m == 0] = np.nan + cls.res2_m = np.array([98.50171676072955, 63.82567289491584, + 37.03709641353485, 26.19872213966024, + 18.88199744409963, 11.56469646930594, + 9.890168084263012, 4.288656185006764, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0]) + cls.res2_m[cls.res2_m == 0] = np.nan + + +@pytest.mark.smoke +def test_coint_johansen_0lag(reset_randomstate): + # GH 5731 + x_diff = np.random.normal(0, 1, 1000) + x = pd.Series(np.cumsum(x_diff)) + e1 = np.random.normal(0, 1, 1000) + y = x + 5 + e1 + data = pd.concat([x, y], axis=1) + result = coint_johansen(data, det_order=-1, k_ar_diff=0) + assert result.eig.shape == (2,) diff --git a/statsmodels/tsa/vector_ar/tests/test_dynamic.py b/statsmodels/tsa/vector_ar/tests/test_dynamic.py new file mode 100644 index 0000000..6623089 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/test_dynamic.py @@ -0,0 +1,67 @@ + +import numpy as np +import pandas as pd +import pytest +from numpy.testing import assert_allclose +from pandas.util.testing import assert_frame_equal, assert_series_equal + +from statsmodels.compat.pandas import pandas_gt_0_19_2 + +pytestmark = pytest.mark.skipif(pandas_gt_0_19_2, + reason='Requires pandas <= 0.19.2') + +from statsmodels.tsa.vector_ar.dynamic import _window_ols # noqa:E402 + + +@pytest.fixture(params=(0.0, 0.01)) +def ols_data(request): + nobs = 500 + rs = np.random.RandomState(12345) + x = pd.DataFrame(rs.standard_normal((nobs, 3)), + columns=['x{0}'.format(i) for i in range(1, 4)]) + e = rs.standard_normal(500) + y = pd.Series(x.values.sum(1) + e, name='y') + + if request.param > 0.0: + locs = rs.random_sample(nobs) + y.loc[locs < request.param] = np.nan + + return {'y': y, 'x': x} + + +def assert_ols_equal(res1, res2): + if isinstance(res1.beta, pd.Series): + assert_series_equal(res1.beta, res2.beta) + assert_allclose(res1.r2, res2.r2) + assert_allclose(res1.nobs, res2.nobs) + else: + assert_frame_equal(res1.beta, res2.beta) + assert_series_equal(res1.nobs, res2.nobs) + assert_series_equal(res1.r2, res2.r2) + assert_series_equal(res1.resid, res2.resid) + + +@pytest.mark.filterwarnings('ignore::FutureWarning') +def test_window_ols_full(ols_data): + y, x = ols_data['y'], ols_data['x'] + res1 = _window_ols(y, x, window_type='full_sample') + res2 = _window_ols(y, x) + res3 = pd.ols(y=y, x=x, window_type='full_sample') + assert_ols_equal(res1, res2) + assert_ols_equal(res1, res3) + + +@pytest.mark.filterwarnings('ignore::FutureWarning') +def test_window_ols_rolling(ols_data): + y, x = ols_data['y'], ols_data['x'] + res1 = _window_ols(y, x, window_type='rolling', window=100) + res2 = pd.ols(y=y, x=x, window_type='rolling', window=100) + assert_ols_equal(res1, res2) + + +@pytest.mark.filterwarnings('ignore::FutureWarning') +def test_window_ols_expanding(ols_data): + y, x = ols_data['y'], ols_data['x'] + res1 = _window_ols(y, x, window_type='expanding') + res2 = pd.ols(y=y, x=x, window_type='expanding') + assert_ols_equal(res1, res2) diff --git a/statsmodels/tsa/vector_ar/tests/test_svar.py b/statsmodels/tsa/vector_ar/tests/test_svar.py new file mode 100644 index 0000000..2381790 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/test_svar.py @@ -0,0 +1,76 @@ +""" +Test SVAR estimation +""" +from statsmodels.compat.platform import PLATFORM_WIN + +from numpy.testing import assert_almost_equal, assert_allclose +import numpy as np +import pytest + +import statsmodels.datasets.macrodata +from statsmodels.tsa.vector_ar.svar_model import SVAR + +DECIMAL_6 = 6 +DECIMAL_5 = 5 +DECIMAL_4 = 4 + + +class TestSVAR(object): + @classmethod + def setup_class(cls): + mdata = statsmodels.datasets.macrodata.load_pandas().data + mdata = mdata[['realgdp', 'realcons', 'realinv']] + data = mdata.values + data = np.diff(np.log(data), axis=0) + A = np.asarray([[1, 0, 0], ['E', 1, 0], ['E', 'E', 1]]) + B = np.asarray([['E', 0, 0], [0, 'E', 0], [0, 0, 'E']]) + results = SVAR(data, svar_type='AB', A=A, B=B).fit(maxlags=3) + cls.res1 = results + #cls.res2 = results_svar.SVARdataResults() + from .results import results_svar_st + cls.res2 = results_svar_st.results_svar1_small + + def _reformat(self, x): + return x[[1, 4, 7, 2, 5, 8, 3, 6, 9, 0], :].ravel("F") + + def test_A(self): + assert_almost_equal(self.res1.A, self.res2.A, DECIMAL_4) + + def test_B(self): + # see issue #3148, adding np.abs to make solution positive + # general case will need positive sqrt of covariance matrix + assert_almost_equal(np.abs(self.res1.B), self.res2.B, DECIMAL_4) + + def test_basic(self): + res1 = self.res1 + res2 = self.res2 + assert_allclose(self._reformat(res1.params), res2.b_var, atol=1e-12) + bse_st = np.sqrt(np.diag(res2.V_var)) + assert_allclose(self._reformat(res1.bse), bse_st, atol=1e-12) + + def test_llf_ic(self): + res1 = self.res1 + res2 = self.res2 + assert_allclose(res1.llf, res2.ll_var, atol=1e-12) + # different definition, missing constant term ? + corr_const = -8.51363119922803 + assert_allclose(res1.fpe, res2.fpe_var, atol=1e-12) + assert_allclose(res1.aic - corr_const, res2.aic_var, atol=1e-12) + assert_allclose(res1.bic - corr_const, res2.sbic_var, atol=1e-12) + assert_allclose(res1.hqic - corr_const, res2.hqic_var, atol=1e-12) + + @pytest.mark.smoke + def test_irf(self): + # mostly SMOKE, API test + # this only checks that the methods work and produce the same result + res1 = self.res1 + errband1 = res1.sirf_errband_mc(orth=False, repl=50, steps=10, + signif=0.05, seed=987123, burn=100, + cum=False) + + irf = res1.irf() + errband2 = irf.errband_mc(orth=False, svar=True, repl=50, + signif=0.05, seed=987123, burn=100) + # Windows precision limits require non-zero atol + atol = 1e-6 if PLATFORM_WIN else 1e-8 + assert_allclose(errband1, errband2, rtol=1e-8, atol=atol) diff --git a/statsmodels/tsa/vector_ar/tests/test_var.py b/statsmodels/tsa/vector_ar/tests/test_var.py new file mode 100644 index 0000000..a39edc2 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/test_var.py @@ -0,0 +1,792 @@ +# -*- coding: utf-8 -*- +""" +Test VAR Model +""" +import warnings +from statsmodels.compat.python import (iteritems, StringIO, lrange, BytesIO, + range) + +import os +import sys + +import numpy as np +import pytest + +try: + import matplotlib # noqa: F401 + from distutils.version import LooseVersion + MATPLOTLIB_GT_15 = LooseVersion(matplotlib.__version__) >= '1.5.0' +except ImportError: + MATPLOTLIB_GT_15 = False + + +import statsmodels.api as sm +import statsmodels.tsa.vector_ar.util as util +import statsmodels.tools.data as data_util +from statsmodels.tsa.vector_ar.var_model import VAR, var_acf +from statsmodels.tools.sm_exceptions import ValueWarning + + +from numpy.testing import (assert_almost_equal, assert_equal, + assert_allclose) + +DECIMAL_12 = 12 +DECIMAL_6 = 6 +DECIMAL_5 = 5 +DECIMAL_4 = 4 +DECIMAL_3 = 3 +DECIMAL_2 = 2 + + +@pytest.fixture() +def bivariate_var_data(reset_randomstate): + """A bivariate dataset for VAR estimation""" + e = np.random.standard_normal((252, 2)) + y = np.zeros_like(e) + y[:2] = e[:2] + for i in range(2, 252): + y[i] = .2 * y[i - 1] + .1 * y[i - 2] + e[i] + return y + + +@pytest.fixture() +def bivariate_var_result(bivariate_var_data): + """A bivariate VARResults for reuse""" + mod = VAR(bivariate_var_data) + return mod.fit() + + +class CheckVAR(object): + # just so pylint won't complain + res1 = None + res2 = None + + def test_params(self): + assert_almost_equal(self.res1.params, self.res2.params, DECIMAL_3) + + def test_neqs(self): + assert_equal(self.res1.neqs, self.res2.neqs) + + def test_nobs(self): + assert_equal(self.res1.avobs, self.res2.nobs) + + def test_df_eq(self): + assert_equal(self.res1.df_eq, self.res2.df_eq) + + def test_rmse(self): + results = self.res1.results + for i in range(len(results)): + assert_almost_equal(results[i].mse_resid**.5, + eval('self.res2.rmse_'+str(i+1)), DECIMAL_6) + + def test_rsquared(self): + results = self.res1.results + for i in range(len(results)): + assert_almost_equal(results[i].rsquared, + eval('self.res2.rsquared_'+str(i+1)), DECIMAL_3) + + def test_llf(self): + results = self.res1.results + assert_almost_equal(self.res1.llf, self.res2.llf, DECIMAL_2) + for i in range(len(results)): + assert_almost_equal(results[i].llf, + eval('self.res2.llf_'+str(i+1)), DECIMAL_2) + + def test_aic(self): + assert_almost_equal(self.res1.aic, self.res2.aic) + + def test_bic(self): + assert_almost_equal(self.res1.bic, self.res2.bic) + + def test_hqic(self): + assert_almost_equal(self.res1.hqic, self.res2.hqic) + + def test_fpe(self): + assert_almost_equal(self.res1.fpe, self.res2.fpe) + + def test_detsig(self): + assert_almost_equal(self.res1.detomega, self.res2.detsig) + + def test_bse(self): + assert_almost_equal(self.res1.bse, self.res2.bse, DECIMAL_4) + + +def get_macrodata(): + data = sm.datasets.macrodata.load_pandas().data[['realgdp','realcons','realinv']] + data = data.to_records(index=False) + nd = data.view((float,3), type=np.ndarray) + nd = np.diff(np.log(nd), axis=0) + return nd.ravel().view(data.dtype, type=np.ndarray) + + +def generate_var(): + from rpy2.robjects import r + import pandas.rpy.common as prp + r.source('tests/var.R') + return prp.convert_robj(r['result'], use_pandas=False) + + +def write_generate_var(): + result = generate_var() + np.savez('tests/results/vars_results.npz', **result) + + +class RResults(object): + """ + Simple interface with results generated by "vars" package in R. + """ + + def __init__(self): + #data = np.load(resultspath + 'vars_results.npz') + from .results.results_var_data import var_results + data = var_results.__dict__ + + self.names = data['coefs'].dtype.names + self.params = data['coefs'].view((float, len(self.names)), type=np.ndarray) + self.stderr = data['stderr'].view((float, len(self.names)), type=np.ndarray) + + self.irf = data['irf'].item() + self.orth_irf = data['orthirf'].item() + + self.nirfs = int(data['nirfs'][0]) + self.nobs = int(data['obs'][0]) + self.totobs = int(data['totobs'][0]) + + crit = data['crit'].item() + self.aic = crit['aic'][0] + self.sic = self.bic = crit['sic'][0] + self.hqic = crit['hqic'][0] + self.fpe = crit['fpe'][0] + + self.detomega = data['detomega'][0] + self.loglike = data['loglike'][0] + + self.nahead = int(data['nahead'][0]) + self.ma_rep = data['phis'] + + self.causality = data['causality'] + + +_orig_stdout = None + + +def setup_module(): + global _orig_stdout + _orig_stdout = sys.stdout + sys.stdout = StringIO() + + +class CheckIRF(object): + + ref = None + res = None + irf = None + k = None + + #--------------------------------------------------------------------------- + # IRF tests + + def test_irf_coefs(self): + self._check_irfs(self.irf.irfs, self.ref.irf) + self._check_irfs(self.irf.orth_irfs, self.ref.orth_irf) + + def _check_irfs(self, py_irfs, r_irfs): + for i, name in enumerate(self.res.names): + ref_irfs = r_irfs[name].view((float, self.k), type=np.ndarray) + res_irfs = py_irfs[:, :, i] + assert_almost_equal(ref_irfs, res_irfs) + + @pytest.mark.matplotlib + def test_plot_irf(self, close_figures): + self.irf.plot() + self.irf.plot(plot_stderr=False) + + self.irf.plot(impulse=0, response=1) + self.irf.plot(impulse=0) + self.irf.plot(response=0) + + self.irf.plot(orth=True) + self.irf.plot(impulse=0, response=1, orth=True) + + @pytest.mark.matplotlib + def test_plot_cum_effects(self, close_figures): + self.irf.plot_cum_effects() + self.irf.plot_cum_effects(plot_stderr=False) + self.irf.plot_cum_effects(impulse=0, response=1) + + self.irf.plot_cum_effects(orth=True) + self.irf.plot_cum_effects(impulse=0, response=1, orth=True) + + +class CheckFEVD(object): + + fevd = None + + #--------------------------------------------------------------------------- + # FEVD tests + + @pytest.mark.matplotlib + def test_fevd_plot(self, close_figures): + self.fevd.plot() + + def test_fevd_repr(self): + self.fevd + + def test_fevd_summary(self): + self.fevd.summary() + + @pytest.mark.xfail(reason="FEVD.cov() is not implemented") + def test_fevd_cov(self): + # test does not crash + # not implemented + covs = self.fevd.cov() + + +class TestVARResults(CheckIRF, CheckFEVD): + + @classmethod + def setup_class(cls): + cls.p = 2 + + cls.data = get_macrodata() + cls.model = VAR(cls.data) + cls.names = cls.model.endog_names + + cls.ref = RResults() + cls.k = len(cls.ref.names) + cls.res = cls.model.fit(maxlags=cls.p) + + cls.irf = cls.res.irf(cls.ref.nirfs) + cls.nahead = cls.ref.nahead + + cls.fevd = cls.res.fevd() + + def test_constructor(self): + # make sure this works with no names + ndarr = self.data.view((float, 3), type=np.ndarray) + model = VAR(ndarr) + res = model.fit(self.p) + + def test_names(self): + assert_equal(self.model.endog_names, self.ref.names) + + model2 = VAR(self.data) + assert_equal(model2.endog_names, self.ref.names) + + def test_get_eq_index(self): + assert type(self.res.names) is list # noqa: E721 + + for i, name in enumerate(self.names): + idx = self.res.get_eq_index(i) + idx2 = self.res.get_eq_index(name) + + assert_equal(idx, i) + assert_equal(idx, idx2) + + with pytest.raises(Exception): + self.res.get_eq_index('foo') + + def test_repr(self): + # just want this to work + foo = str(self.res) + bar = repr(self.res) + + def test_params(self): + assert_almost_equal(self.res.params, self.ref.params, DECIMAL_3) + + def test_cov_params(self): + # do nothing for now + self.res.cov_params + + def test_cov_ybar(self): + self.res.cov_ybar() + + def test_tstat(self): + self.res.tvalues + + def test_pvalues(self): + self.res.pvalues + + def test_summary(self): + summ = self.res.summary() + + def test_detsig(self): + assert_almost_equal(self.res.detomega, self.ref.detomega) + + def test_aic(self): + assert_almost_equal(self.res.aic, self.ref.aic) + + def test_bic(self): + assert_almost_equal(self.res.bic, self.ref.bic) + + def test_hqic(self): + assert_almost_equal(self.res.hqic, self.ref.hqic) + + def test_fpe(self): + assert_almost_equal(self.res.fpe, self.ref.fpe) + + def test_lagorder_select(self): + ics = ['aic', 'fpe', 'hqic', 'bic'] + + for ic in ics: + res = self.model.fit(maxlags=10, ic=ic, verbose=True) + + with pytest.raises(Exception): + self.model.fit(ic='foo') + + def test_nobs(self): + assert_equal(self.res.nobs, self.ref.nobs) + + def test_stderr(self): + assert_almost_equal(self.res.stderr, self.ref.stderr, DECIMAL_4) + + def test_loglike(self): + assert_almost_equal(self.res.llf, self.ref.loglike) + + def test_ma_rep(self): + ma_rep = self.res.ma_rep(self.nahead) + assert_almost_equal(ma_rep, self.ref.ma_rep) + + #-------------------------------------------------- + # Lots of tests to make sure stuff works...need to check correctness + + def test_causality(self): + causedby = self.ref.causality['causedby'] + + for i, name in enumerate(self.names): + variables = self.names[:i] + self.names[i + 1:] + result = self.res.test_causality(name, variables, kind='f') + assert_almost_equal(result.pvalue, causedby[i], DECIMAL_4) + + rng = lrange(self.k) + rng.remove(i) + result2 = self.res.test_causality(i, rng, kind='f') + assert_almost_equal(result.pvalue, result2.pvalue, DECIMAL_12) + + # make sure works + result = self.res.test_causality(name, variables, kind='wald') + + # corner cases + _ = self.res.test_causality(self.names[0], self.names[1]) + _ = self.res.test_causality(0, 1) + + with pytest.raises(Exception): + self.res.test_causality(0, 1, kind='foo') + + def test_select_order(self): + result = self.model.fit(10, ic='aic', verbose=True) + result = self.model.fit(10, ic='fpe', verbose=True) + + # bug + model = VAR(self.model.endog) + model.select_order() + + def test_is_stable(self): + # may not necessarily be true for other datasets + assert(self.res.is_stable(verbose=True)) + + def test_acf(self): + # test that it works...for now + acfs = self.res.acf(10) + + # defaults to nlags=lag_order + acfs = self.res.acf() + assert(len(acfs) == self.p + 1) + + def test_acf_2_lags(self): + c = np.zeros((2, 2, 2)) + c[0] = np.array([[.2, .1], [.15, .15]]) + c[1] = np.array([[.1, .9], [0, .1]]) + + acf = var_acf(c, np.eye(2), 3) + + gamma = np.zeros((6, 6)) + gamma[:2, :2] = acf[0] + gamma[2:4, 2:4] = acf[0] + gamma[4:6, 4:6] = acf[0] + gamma[2:4, :2] = acf[1].T + gamma[4:, :2] = acf[2].T + gamma[:2, 2:4] = acf[1] + gamma[:2, 4:] = acf[2] + recovered = np.dot(gamma[:2, 2:], np.linalg.inv(gamma[:4, :4])) + recovered = [recovered[:, 2 * i:2 * (i + 1)] for i in range(2)] + recovered = np.array(recovered) + assert_allclose(recovered, c, atol=1e-7) + + def test_acorr(self): + acorrs = self.res.acorr(10) + + def test_forecast(self): + point = self.res.forecast(self.res.endog[-5:], 5) + + def test_forecast_interval(self): + y = self.res.endog[:-self.p:] + point, lower, upper = self.res.forecast_interval(y, 5) + + @pytest.mark.matplotlib + def test_plot_sim(self, close_figures): + self.res.plotsim(steps=100) + + @pytest.mark.matplotlib + def test_plot(self, close_figures): + self.res.plot() + + @pytest.mark.matplotlib + def test_plot_acorr(self, close_figures): + self.res.plot_acorr() + + @pytest.mark.matplotlib + def test_plot_forecast(self, close_figures): + self.res.plot_forecast(5) + + def test_reorder(self): + # manually reorder + data = self.data.view((float,3), type=np.ndarray) + names = self.names + data2 = np.append(np.append(data[:,2,None], data[:,0,None], axis=1), data[:,1,None], axis=1) + names2 = [] + names2.append(names[2]) + names2.append(names[0]) + names2.append(names[1]) + res2 = VAR(data2).fit(maxlags=self.p) + + #use reorder function + res3 = self.res.reorder(['realinv','realgdp', 'realcons']) + + #check if the main results match + assert_almost_equal(res2.params, res3.params) + assert_almost_equal(res2.sigma_u, res3.sigma_u) + assert_almost_equal(res2.bic, res3.bic) + assert_almost_equal(res2.stderr, res3.stderr) + + def test_pickle(self): + fh = BytesIO() + #test wrapped results load save pickle + del self.res.model.data.orig_endog + self.res.save(fh) + fh.seek(0,0) + res_unpickled = self.res.__class__.load(fh) + assert type(res_unpickled) is type(self.res) # noqa: E721 + + +class E1_Results(object): + """ + Results from Lütkepohl (2005) using E2 dataset + """ + + def __init__(self): + # Lutkepohl p. 120 results + + # I asked the author about these results and there is probably rounding + # error in the book, so I adjusted these test results to match what is + # coming out of the Python (double-checked) calculations + self.irf_stderr = np.array([[[.125, 0.546, 0.664 ], + [0.032, 0.139, 0.169], + [0.026, 0.112, 0.136]], + + [[0.129, 0.547, 0.663], + [0.032, 0.134, 0.163], + [0.026, 0.108, 0.131]], + + [[0.084, .385, .479], + [.016, .079, .095], + [.016, .078, .103]]]) + + self.cum_irf_stderr = np.array([[[.125, 0.546, 0.664 ], + [0.032, 0.139, 0.169], + [0.026, 0.112, 0.136]], + + [[0.149, 0.631, 0.764], + [0.044, 0.185, 0.224], + [0.033, 0.140, 0.169]], + + [[0.099, .468, .555], + [.038, .170, .205], + [.033, .150, .185]]]) + + self.lr_stderr = np.array([[.134, .645, .808], + [.048, .230, .288], + [.043, .208, .260]]) + + +basepath = os.path.split(sm.__file__)[0] +resultspath = basepath + '/tsa/vector_ar/tests/results/' + + +def get_lutkepohl_data(name='e2'): + path = resultspath + '%s.dat' % name + + return util.parse_lutkepohl_data(path) + + +def test_lutkepohl_parse(): + files = ['e%d' % i for i in range(1, 7)] + + for f in files: + get_lutkepohl_data(f) + + +class TestVARResultsLutkepohl(object): + """ + Verify calculations using results from Lütkepohl's book + """ + + @classmethod + def setup_class(cls): + cls.p = 2 + sdata, dates = get_lutkepohl_data('e1') + + data = data_util.struct_to_ndarray(sdata) + adj_data = np.diff(np.log(data), axis=0) + # est = VAR(adj_data, p=2, dates=dates[1:], names=names) + + cls.model = VAR(adj_data[:-16], dates=dates[1:-16], freq='BQ-MAR') + cls.res = cls.model.fit(maxlags=cls.p) + cls.irf = cls.res.irf(10) + cls.lut = E1_Results() + + def test_approx_mse(self): + # 3.5.18, p. 99 + mse2 = np.array([[25.12, .580, 1.300], + [.580, 1.581, .586], + [1.300, .586, 1.009]]) * 1e-4 + + assert_almost_equal(mse2, self.res.forecast_cov(3)[1], + DECIMAL_3) + + def test_irf_stderr(self): + irf_stderr = self.irf.stderr(orth=False) + for i in range(1, 1 + len(self.lut.irf_stderr)): + assert_almost_equal(np.round(irf_stderr[i], 3), + self.lut.irf_stderr[i-1]) + + def test_cum_irf_stderr(self): + stderr = self.irf.cum_effect_stderr(orth=False) + for i in range(1, 1 + len(self.lut.cum_irf_stderr)): + assert_almost_equal(np.round(stderr[i], 3), + self.lut.cum_irf_stderr[i-1]) + + def test_lr_effect_stderr(self): + stderr = self.irf.lr_effect_stderr(orth=False) + orth_stderr = self.irf.lr_effect_stderr(orth=True) + assert_almost_equal(np.round(stderr, 3), self.lut.lr_stderr) + + +def test_get_trendorder(): + results = { + 'c' : 1, + 'nc' : 0, + 'ct' : 2, + 'ctt' : 3 + } + + for t, trendorder in iteritems(results): + assert(util.get_trendorder(t) == trendorder) + + +def test_var_constant(): + # see 2043 + import datetime + from pandas import DataFrame, DatetimeIndex + + series = np.array([[2., 2.], [1, 2.], [1, 2.], [1, 2.], [1., 2.]]) + data = DataFrame(series) + + d = datetime.datetime.now() + delta = datetime.timedelta(days=1) + index = [] + for i in range(data.shape[0]): + index.append(d) + d += delta + + data.index = DatetimeIndex(index) + + #with pytest.warns(ValueWarning): #does not silence warning in test output + with warnings.catch_warnings(): + warnings.simplefilter("ignore", category=ValueWarning) + model = VAR(data) + with pytest.raises(ValueError): + model.fit(1) + + +def test_var_trend(): + # see 2271 + data = get_macrodata().view((float,3), type=np.ndarray) + + model = sm.tsa.VAR(data) + results = model.fit(4) #, trend = 'c') + irf = results.irf(10) + + data_nc = data - data.mean(0) + model_nc = sm.tsa.VAR(data_nc) + results_nc = model_nc.fit(4, trend = 'nc') + with pytest.raises(ValueError): + model.fit(4, trend='t') + + +def test_irf_trend(): + # test for irf with different trend see #1636 + # this is a rough comparison by adding trend or subtracting mean to data + # to get similar AR coefficients and IRF + data = get_macrodata().view((float,3), type=np.ndarray) + + model = sm.tsa.VAR(data) + results = model.fit(4) #, trend = 'c') + irf = results.irf(10) + + data_nc = data - data.mean(0) + model_nc = sm.tsa.VAR(data_nc) + results_nc = model_nc.fit(4, trend = 'nc') + irf_nc = results_nc.irf(10) + + assert_allclose(irf_nc.stderr()[1:4], irf.stderr()[1:4], rtol=0.01) + + trend = 1e-3 * np.arange(len(data)) / (len(data) - 1) + # for pandas version, currently not used, if data is a pd.DataFrame + #data_t = pd.DataFrame(data.values + trend[:,None], index=data.index, columns=data.columns) + data_t = data + trend[:,None] + + model_t = sm.tsa.VAR(data_t) + results_t = model_t.fit(4, trend = 'ct') + irf_t = results_t.irf(10) + + assert_allclose(irf_t.stderr()[1:4], irf.stderr()[1:4], rtol=0.03) + + +class TestVARExtras(object): + + @classmethod + def setup_class(cls): + mdata = sm.datasets.macrodata.load_pandas().data + mdata = mdata[['realgdp','realcons','realinv']] + data = mdata.values + data = np.diff(np.log(data), axis=0) * 400 + cls.res0 = sm.tsa.VAR(data).fit(maxlags=2) + + def test_process(self, close_figures): + res0 = self.res0 + k_ar = res0.k_ar + fc20 = res0.forecast(res0.endog[-k_ar:], 20) + mean_lr = res0.mean() + assert_allclose(mean_lr, fc20[-1], rtol=5e-4) + + ysim = res0.simulate_var(seed=987128) + assert_allclose(ysim.mean(0), mean_lr, rtol=0.1) + # initialization does not use long run intercept, see #4542 + assert_allclose(ysim[0], res0.intercept, rtol=1e-10) + assert_allclose(ysim[1], res0.intercept, rtol=1e-10) + + n_sim = 900 + ysimz = res0.simulate_var(steps=n_sim, offset=np.zeros((n_sim, 3)), + seed=987128) + zero3 = np.zeros(3) + assert_allclose(ysimz.mean(0), zero3, atol=0.4) + # initialization does not use long run intercept, see #4542 + assert_allclose(ysimz[0], zero3, atol=1e-10) + assert_allclose(ysimz[1], zero3, atol=1e-10) + + # check attributes + assert_equal(res0.k_trend, 1) + assert_equal(res0.k_exog_user, 0) + assert_equal(res0.k_exog, 1) + assert_equal(res0.k_ar, 2) + + irf = res0.irf() + + # partially SMOKE test + if MATPLOTLIB_GT_15: + res0.plotsim() + res0.plot_acorr() + + fig = res0.plot_forecast(20) + fcp = fig.axes[0].get_children()[1].get_ydata()[-20:] + # Note values are equal, but keep rtol buffer + assert_allclose(fc20[:, 0], fcp, rtol=1e-13) + fcp = fig.axes[1].get_children()[1].get_ydata()[-20:] + assert_allclose(fc20[:, 1], fcp, rtol=1e-13) + fcp = fig.axes[2].get_children()[1].get_ydata()[-20:] + assert_allclose(fc20[:, 2], fcp, rtol=1e-13) + + fig_asym = irf.plot() + fig_mc = irf.plot(stderr_type='mc', repl=1000, seed=987128) + + for k in range(3): + a = fig_asym.axes[1].get_children()[k].get_ydata() + m = fig_mc.axes[1].get_children()[k].get_ydata() + # use m as desired because it is larger + # a is for some irf much smaller than m + assert_allclose(a, m, atol=0.1, rtol=0.9) + + def test_forecast_cov(self): + # forecast_cov can include parameter uncertainty if contant-only + res = self.res0 + + covfc1 = res.forecast_cov(3) + assert_allclose(covfc1, res.mse(3), rtol=1e-13) + # ignore warning, TODO: assert OutputWarning + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + covfc2 = res.forecast_cov(3, method='auto') + assert_allclose(covfc2, covfc1, rtol=0.05) + # regression test, TODO: replace with verified numbers (Stata) + res_covfc2 = np.array([[[ 9.45802013, 4.94142038, 37.1999646 ], + [ 4.94142038, 7.09273624, 5.66215089], + [37.1999646 , 5.66215089, 259.61275869]], + + [[11.30364479, 5.72569141, 49.28744123], + [ 5.72569141, 7.409761 , 10.98164091], + [49.28744123, 10.98164091, 336.4484723 ]], + + [[12.36188803, 6.44426905, 53.54588026], + [ 6.44426905, 7.88850029, 13.96382545], + [53.54588026, 13.96382545, 352.19564327]]]) + assert_allclose(covfc2, res_covfc2, atol=1e-6) + + def test_exog(self): + # check that trend and exog are equivalent for basics and varsim + data = self.res0.model.endog + res_lin_trend = sm.tsa.VAR(data).fit(maxlags=2, trend='ct') + ex = np.arange(len(data)) + res_lin_trend1 = sm.tsa.VAR(data, exog=ex).fit(maxlags=2) + ex2 = np.arange(len(data))[:, None]**[0, 1] + res_lin_trend2 = sm.tsa.VAR(data, exog=ex2).fit(maxlags=2, trend='nc') + # TODO: intercept differs by 4e-3, others are < 1e-12 + assert_allclose(res_lin_trend.params, res_lin_trend1.params, rtol=5e-3) + assert_allclose(res_lin_trend.params, res_lin_trend2.params, rtol=5e-3) + assert_allclose(res_lin_trend1.params, res_lin_trend2.params, rtol=1e-10) + + y1 = res_lin_trend.simulate_var(seed=987128) + y2 = res_lin_trend1.simulate_var(seed=987128) + y3 = res_lin_trend2.simulate_var(seed=987128) + assert_allclose(y2.mean(0), y1.mean(0), rtol=1e-12) + assert_allclose(y3.mean(0), y1.mean(0), rtol=1e-12) + assert_allclose(y3.mean(0), y2.mean(0), rtol=1e-12) + + h = 10 + fc1 = res_lin_trend.forecast(res_lin_trend.endog[-2:], h) + exf = np.arange(len(data), len(data) + h) + fc2 = res_lin_trend1.forecast(res_lin_trend1.endog[-2:], h, + exog_future=exf) + exf2 = exf[:, None]**[0, 1] + fc3 = res_lin_trend2.forecast(res_lin_trend2.endog[-2:], h, + exog_future=exf2) + assert_allclose(fc2, fc1, rtol=1e-12) + assert_allclose(fc3, fc1, rtol=1e-12) + assert_allclose(fc3, fc2, rtol=1e-12) + + fci1 = res_lin_trend.forecast_interval(res_lin_trend.endog[-2:], h) + exf = np.arange(len(data), len(data) + h) + fci2 = res_lin_trend1.forecast_interval(res_lin_trend1.endog[-2:], h, + exog_future=exf) + exf2 = exf[:, None]**[0, 1] + fci3 = res_lin_trend2.forecast_interval(res_lin_trend2.endog[-2:], h, + exog_future=exf2) + assert_allclose(fci2, fci1, rtol=1e-12) + assert_allclose(fci3, fci1, rtol=1e-12) + assert_allclose(fci3, fci2, rtol=1e-12) + + +@pytest.mark.parametrize('attr', ['y', 'ys_lagged']) +def test_deprecated_attributes_varresults(bivariate_var_result, attr): + with pytest.warns(FutureWarning): + getattr(bivariate_var_result, attr) diff --git a/statsmodels/tsa/vector_ar/tests/test_var_jmulti.py b/statsmodels/tsa/vector_ar/tests/test_var_jmulti.py new file mode 100644 index 0000000..ddd3e5f --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/test_var_jmulti.py @@ -0,0 +1,544 @@ +from __future__ import absolute_import, print_function + +import numpy as np +from numpy.testing import assert_, assert_allclose, assert_raises + +import statsmodels.datasets.macrodata.data as macro +from statsmodels.compat.python import range +from statsmodels.tsa.vector_ar.tests.JMulTi_results.parse_jmulti_vecm_output \ + import sublists +from statsmodels.tsa.vector_ar.var_model import VAR +from .JMulTi_results.parse_jmulti_var_output import dt_s_tup_to_string +from .JMulTi_results.parse_jmulti_var_output import load_results_jmulti + +atol = 0.001 # absolute tolerance +rtol = 0.01 # relative tolerance +datasets = [] +data = {} +results_ref = {} +results_sm = {} + +debug_mode = False +dont_test_se_t_p = False +deterministic_terms_list = ["nc", "c", "ct"] +seasonal_list = [0, 4] +dt_s_list = [(det, s) for det in deterministic_terms_list + for s in seasonal_list] +all_tests = ["coefs", "det", "Sigma_u", "log_like", "fc", "causality", + "impulse-response", "lag order", "test normality", "whiteness", + "exceptions"] +to_test = all_tests #["coefs", "det", "Sigma_u", "log_like", "fc", "causality"] # all_tests + + +def load_data(dataset, data_dict): + dtset = dataset.load_pandas() + variables = dataset.variable_names + loaded = dtset.data[variables].astype(float).values + data_dict[dataset] = loaded.reshape((-1, len(variables))) + + +def reorder_jmultis_det_terms(jmulti_output, constant, seasons): + """ + In case of seasonal terms and a trend term we have to reorder them to make + the outputs from JMulTi and statsmodels comparable. + JMulTi's ordering is: [constant], [seasonal terms], [trend term] while + in statsmodels it is: [constant], [trend term], [seasonal terms] + + Parameters + ---------- + jmulti_output : ndarray (neqs x number_of_deterministic_terms) + + constant : bool + Indicates whether there is a constant term or not in jmulti_output. + seasons : int + Number of seasons in the model. That means there are seasons-1 + columns for seasonal terms in jmulti_output + + Returns + ------- + reordered : ndarray (neqs x number_of_deterministic_terms) + jmulti_output reordered such that the order of deterministic terms + matches that of statsmodels. + """ + if seasons == 0: + return jmulti_output + constant = int(constant) + const_column = jmulti_output[:, :constant] + season_columns = jmulti_output[:, constant:constant+seasons-1].copy() + trend_columns = jmulti_output[:, constant+seasons-1:].copy() + return np.hstack((const_column, + trend_columns, + season_columns)) + + +def generate_exog_from_season(seasons, endog_len): + """ + Translate seasons to exog matrix. + + Parameters + ---------- + seasons : int + Number of seasons. + endog_len : int + Number of observations. + + Returns + ------- + exog : ndarray or None + If seasonal deterministic terms exist, the corresponding exog-matrix is + returned. + Otherwise, None is returned. + """ + + exog_stack = [] + if seasons > 0: + season_exog = np.zeros((seasons - 1, endog_len)) + for i in range(seasons - 1): + season_exog[i, i::seasons] = 1 + # season_exog = season_exog[:, ::-1] + # season_exog = np.hstack((season_exog[:, 3:4], + # season_exog[:, :-1])) + # season_exog = np.hstack((season_exog[:, 2:4], + # season_exog[:, :-2])) + # season_exog = np.hstack((season_exog[:, 1:4], season_exog[:, :-3])) + # season_exog[1] = -season_exog[1] + # the following line is commented out because seasonal terms are + # *not* centered in JMulTi's VAR-framework (in contrast to VECM) + # season_exog -= 1 / seasons + season_exog = season_exog.T + exog_stack.append(season_exog) + if exog_stack != []: + exog = np.column_stack(exog_stack) + else: + exog = None + return exog + + +def load_results_statsmodels(dataset): + results_per_deterministic_terms = dict.fromkeys(dt_s_list) + for dt_s_tup in dt_s_list: + endog = data[dataset] + exog = generate_exog_from_season(dt_s_tup[1], len(endog)) + model = VAR(endog, exog) + results_per_deterministic_terms[dt_s_tup] = model.fit( + maxlags=4, trend=dt_s_tup[0], method="ols") + return results_per_deterministic_terms + + +def build_err_msg(ds, dt_s, parameter_str): + dt = dt_s_tup_to_string(dt_s) + seasons = dt_s[1] + err_msg = "Error in " + parameter_str + " for:\n" + err_msg += "- Dataset: " + ds.__str__() + "\n" + err_msg += "- Deterministic terms: " + err_msg += (dt_s[0] if dt != "nc" else "no det. terms") + if seasons > 0: + err_msg += ", seasons: " + str(seasons) + return err_msg + + +def setup(): + datasets.append(macro) # TODO: append more data sets for more test cases. + + for ds in datasets: + load_data(ds, data) + results_ref[ds] = load_results_jmulti(ds, dt_s_list) + results_sm[ds] = load_results_statsmodels(ds) + + +setup() + + +def test_ols_coefs(): + if debug_mode: + if "coefs" not in to_test: + return + print("\n\nESTIMATED PARAMETER MATRICES FOR LAGGED ENDOG", end="") + for ds in datasets: + for dt_s in dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt_s) + ": ", end="") + + # estimated parameter vector + err_msg = build_err_msg(ds, dt_s, "PARAMETER MATRICES ENDOG") + obtained = np.hstack(results_sm[ds][dt_s].coefs) + desired = results_ref[ds][dt_s]["est"]["Lagged endogenous term"] + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + if debug_mode and dont_test_se_t_p: + continue + # standard errors + obt = results_sm[ds][dt_s].stderr_endog_lagged + des = results_ref[ds][dt_s]["se"]["Lagged endogenous term"].T + assert_allclose(obt, des, rtol, atol, False, "STANDARD ERRORS\n" + err_msg) + # t-values + obt = results_sm[ds][dt_s].tvalues_endog_lagged + des = results_ref[ds][dt_s]["t"]["Lagged endogenous term"].T + assert_allclose(obt, des, rtol, atol, False, "t-VALUES\n" + err_msg) + # p-values + obt = results_sm[ds][dt_s].pvalues_endog_lagged + des = results_ref[ds][dt_s]["p"]["Lagged endogenous term"].T + assert_allclose(obt, des, rtol, atol, False, "p-VALUES\n" + err_msg) + + +def test_ols_det_terms(): + if debug_mode: + if "det" not in to_test: + return + print("\n\nESTIMATED PARAMETERS FOR DETERMINISTIC TERMS", end="") + for ds in datasets: + for dt_s in dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt_s) + ": ", end="") + + err_msg = build_err_msg(ds, dt_s, "PARAMETER MATRICES EXOG") + det_key_ref = "Deterministic term" + # If there are no det. terms, just make sure we don't compute any: + if det_key_ref not in results_ref[ds][dt_s]["est"].keys(): + assert_((results_sm[ds][dt_s].coefs_exog.size == 0 and + results_sm[ds][dt_s].stderr_dt.size == 0 and + results_sm[ds][dt_s].tvalues_dt.size == 0 and + results_sm[ds][dt_s].pvalues_dt.size == 0), err_msg) + continue + obtained = results_sm[ds][dt_s].coefs_exog + desired = results_ref[ds][dt_s]["est"][det_key_ref] + desired = reorder_jmultis_det_terms( + desired, dt_s[0].startswith("c"), dt_s[1]) + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + if debug_mode and dont_test_se_t_p: + continue + # standard errors + obt = results_sm[ds][dt_s].stderr_dt + des = results_ref[ds][dt_s]["se"][det_key_ref] + des = reorder_jmultis_det_terms(des, dt_s[0].startswith("c"), + dt_s[1]).T + assert_allclose(obt, des, rtol, atol, False, "STANDARD ERRORS\n" + err_msg) + # t-values + obt = results_sm[ds][dt_s].tvalues_dt + des = results_ref[ds][dt_s]["t"][det_key_ref] + des = reorder_jmultis_det_terms(des, dt_s[0].startswith("c"), + dt_s[1]).T + assert_allclose(obt, des, rtol, atol, False, "t-VALUES\n" + err_msg) + # p-values + obt = results_sm[ds][dt_s].pvalues_dt + des = results_ref[ds][dt_s]["p"][det_key_ref] + des = reorder_jmultis_det_terms(des, dt_s[0].startswith("c"), + dt_s[1]).T + assert_allclose(obt, des, rtol, atol, False, "p-VALUES\n" + err_msg) + + +def test_ols_sigma(): + if debug_mode: + if "Sigma_u" not in to_test: + return + print("\n\nSIGMA_U", end="") + for ds in datasets: + for dt in dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + err_msg = build_err_msg(ds, dt, "Sigma_u") + obtained = results_sm[ds][dt].sigma_u + desired = results_ref[ds][dt]["est"]["Sigma_u"] + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + + +def test_log_like(): + if debug_mode: + if "log_like" not in to_test: + return + else: + print("\n\nLOG LIKELIHOOD", end="") + for ds in datasets: + for dt in dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + err_msg = build_err_msg(ds, dt, "Log Likelihood") + obtained = results_sm[ds][dt].llf + desired = results_ref[ds][dt]["log_like"] + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + + +def test_fc(): + if debug_mode: + if "fc" not in to_test: + return + else: + print("\n\nFORECAST", end="") + for ds in datasets: + for dt in dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + steps = 5 # parsed JMulTi output comprises 5 steps + last_observations = results_sm[ds][dt].endog[ + -results_sm[ds][dt].k_ar:] + seasons = dt[1] + if seasons == 0: + exog_future = None + else: + exog_future = np.zeros((steps, seasons-1)) + # the following line is appropriate only if the last + # observation was in the next to last season (this is the case + # for macrodata) + exog_future[1:seasons] = np.identity(seasons-1) + err_msg = build_err_msg(ds, dt, "FORECAST") + # test point forecast functionality of forecast method + obtained = results_sm[ds][dt].forecast( + y=last_observations, steps=steps, exog_future=exog_future) + desired = results_ref[ds][dt]["fc"]["fc"] + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + + # test forecast method with confidence interval calculation + err_msg = build_err_msg(ds, dt, "FORECAST WITH INTERVALS") + obtained = results_sm[ds][dt].forecast_interval( + y=last_observations, steps=steps, alpha=0.05, + exog_future=exog_future) + obt = obtained[0] # forecast + obt_l = obtained[1] # lower bound + obt_u = obtained[2] # upper bound + des = results_ref[ds][dt]["fc"]["fc"] + des_l = results_ref[ds][dt]["fc"]["lower"] + des_u = results_ref[ds][dt]["fc"]["upper"] + assert_allclose(obt, des, rtol, atol, False, err_msg) + assert_allclose(obt_l, des_l, rtol, atol, False, err_msg) + assert_allclose(obt_u, des_u, rtol, atol, False, err_msg) + + +def test_causality(): # test Granger- and instantaneous causality + if debug_mode: + if "causality" not in to_test: + return + else: + print("\n\nCAUSALITY", end="") + for ds in datasets: + for dt in dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + err_msg_g_p = build_err_msg(ds, dt, "GRANGER CAUS. - p-VALUE") + err_msg_g_t = build_err_msg(ds, dt, "GRANGER CAUS. - TEST STAT.") + err_msg_i_p = build_err_msg(ds, dt, "INSTANT. CAUS. - p-VALUE") + err_msg_i_t = build_err_msg(ds, dt, "INSTANT. CAUS. - TEST STAT.") + v_ind = range(len(ds.variable_names)) + for causing_ind in sublists(v_ind, 1, len(v_ind)-1): + causing_names = ["y" + str(i+1) for i in causing_ind] + causing_key = tuple(ds.variable_names[i] for i in causing_ind) + + caused_ind = [i for i in v_ind if i not in causing_ind] + caused_names = ["y" + str(i+1) for i in caused_ind] + caused_key = tuple(ds.variable_names[i] for i in caused_ind) + + # test Granger-causality ###################################### + granger_sm_ind = results_sm[ds][ + dt].test_causality(caused_ind, causing_ind) + granger_sm_str = results_sm[ds][ + dt].test_causality(caused_names, causing_names) + + # test test-statistic for Granger non-causality: + g_t_obt = granger_sm_ind.test_statistic + g_t_des = results_ref[ds][dt]["granger_caus"][ + "test_stat"][(causing_key, caused_key)] + assert_allclose(g_t_obt, g_t_des, rtol, atol, False, err_msg_g_t) + # check whether string sequences as args work in the same way: + g_t_obt_str = granger_sm_str.test_statistic + assert_allclose(g_t_obt_str, g_t_obt, 1e-07, 0, False, + err_msg_g_t + " - sequences of integers and ".upper() + + "strings as arguments don't yield the same result!".upper()) + # check if int (e.g. 0) as index and list of int ([0]) yield + # the same result: + if len(causing_ind) == 1 or len(caused_ind) == 1: + ci = causing_ind[0] if len(causing_ind)==1 else causing_ind + ce = caused_ind[0] if len(caused_ind) == 1 else caused_ind + granger_sm_single_ind = results_sm[ds][ + dt].test_causality(ce, ci) + g_t_obt_single = granger_sm_single_ind.test_statistic + assert_allclose(g_t_obt_single, g_t_obt, 1e-07, 0, False, + err_msg_g_t + " - list of int and int as ".upper() + + "argument don't yield the same result!".upper()) + + # test p-value for Granger non-causality: + g_p_obt = granger_sm_ind.pvalue + g_p_des = results_ref[ds][dt]["granger_caus"]["p"][( + causing_key, caused_key)] + assert_allclose(g_p_obt, g_p_des, rtol, atol, False, err_msg_g_p) + # check whether string sequences as args work in the same way: + g_p_obt_str = granger_sm_str.pvalue + assert_allclose(g_p_obt_str, g_p_obt, 1e-07, 0, False, + err_msg_g_t + " - sequences of integers and ".upper() + + "strings as arguments don't yield the same result!".upper()) + # check if int (e.g. 0) as index and list of int ([0]) yield + # the same result: + if len(causing_ind) == 1: + g_p_obt_single = granger_sm_single_ind.pvalue + assert_allclose(g_p_obt_single, g_p_obt, 1e-07, 0, False, + err_msg_g_t + " - list of int and int as ".upper() + \ + "argument don't yield the same result!".upper()) + + # test instantaneous causality ################################ + inst_sm_ind = results_sm[ds][dt].test_inst_causality( + causing_ind) + inst_sm_str = results_sm[ds][dt].test_inst_causality( + causing_names) + # test test-statistic for instantaneous non-causality + t_obt = inst_sm_ind.test_statistic + t_des = results_ref[ds][dt]["inst_caus"][ + "test_stat"][(causing_key, caused_key)] + assert_allclose(t_obt, t_des, rtol, atol, False, err_msg_i_t) + # check whether string sequences as args work in the same way: + t_obt_str = inst_sm_str.test_statistic + assert_allclose(t_obt_str, t_obt, 1e-07, 0, False, + err_msg_i_t + " - sequences of integers and ".upper() + + "strings as arguments don't yield the same result!".upper()) + # check if int (e.g. 0) as index and list of int ([0]) yield + # the same result: + if len(causing_ind) == 1: + inst_sm_single_ind = results_sm[ds][ + dt].test_inst_causality(causing_ind[0]) + t_obt_single = inst_sm_single_ind.test_statistic + assert_allclose(t_obt_single, t_obt, 1e-07, 0, False, + err_msg_i_t + " - list of int and int as ".upper() + + "argument don't yield the same result!".upper()) + + # test p-value for instantaneous non-causality + p_obt = results_sm[ds][dt].test_inst_causality( + causing_ind).pvalue + p_des = results_ref[ds][dt]["inst_caus"]["p"][( + causing_key, caused_key)] + assert_allclose(p_obt, p_des, rtol, atol, False, err_msg_i_p) + # check whether string sequences as args work in the same way: + p_obt_str = inst_sm_str.pvalue + assert_allclose(p_obt_str, p_obt, 1e-07, 0, False, + err_msg_i_p + " - sequences of integers and ".upper() + + "strings as arguments don't yield the same result!".upper()) + # check if int (e.g. 0) as index and list of int ([0]) yield + # the same result: + if len(causing_ind) == 1: + inst_sm_single_ind = results_sm[ds][ + dt].test_inst_causality(causing_ind[0]) + p_obt_single = inst_sm_single_ind.pvalue + assert_allclose(p_obt_single, p_obt, 1e-07, 0, False, + err_msg_i_p + " - list of int and int as ".upper() + + "argument don't yield the same result!".upper()) + + +def test_impulse_response(): + if debug_mode: + if "impulse-response" not in to_test: + return + else: + print("\n\nIMPULSE-RESPONSE", end="") + for ds in datasets: + for dt in dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + err_msg = build_err_msg(ds, dt, "IMULSE-RESPONSE") + periods = 20 + obtained_all = results_sm[ds][dt].irf(periods=periods).irfs + # flatten inner arrays to make them comparable to parsed results: + obtained_all = obtained_all.reshape(periods+1, -1) + desired_all = results_ref[ds][dt]["ir"] + assert_allclose(obtained_all, desired_all, rtol, atol, False, err_msg) + + +def test_lag_order_selection(): + if debug_mode: + if "lag order" not in to_test: + return + else: + print("\n\nLAG ORDER SELECTION", end="") + for ds in datasets: + for dt in dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + endog_tot = data[ds] + exog = generate_exog_from_season(dt[1], len(endog_tot)) + model = VAR(endog_tot, exog) + obtained_all = model.select_order(10, trend=dt[0]) + for ic in ["aic", "fpe", "hqic", "bic"]: + err_msg = build_err_msg(ds, dt, + "LAG ORDER SELECTION - " + ic.upper()) + obtained = getattr(obtained_all, ic) + desired = results_ref[ds][dt]["lagorder"][ic] + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + + +def test_normality(): + if debug_mode: + if "test normality" not in to_test: + return + else: + print("\n\nTEST NON-NORMALITY", end="") + for ds in datasets: + for dt in dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + obtained = results_sm[ds][dt].test_normality(signif=0.05) + err_msg = build_err_msg(ds, dt, "TEST NON-NORMALITY - STATISTIC") + obt_statistic = obtained.test_statistic + des_statistic = results_ref[ds][dt]["test_norm"][ + "joint_test_statistic"] + assert_allclose(obt_statistic, des_statistic, rtol, atol, False, err_msg) + err_msg = build_err_msg(ds, dt, "TEST NON-NORMALITY - P-VALUE") + obt_pvalue = obtained.pvalue + des_pvalue = results_ref[ds][dt]["test_norm"]["joint_pvalue"] + assert_allclose(obt_pvalue, des_pvalue, rtol, atol, False, err_msg) + # call methods to assure they don't raise exceptions + obtained.summary() + str(obtained) # __str__() + + +def test_whiteness(): + if debug_mode: + if "whiteness" not in to_test: + return + else: + print("\n\nTEST WHITENESS OF RESIDUALS", end="") + for ds in datasets: + for dt in dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + lags = results_ref[ds][dt]["whiteness"]["tested order"] + + obtained = results_sm[ds][dt].test_whiteness(nlags=lags) + # test statistic + err_msg = build_err_msg(ds, dt, "WHITENESS OF RESIDUALS - " + "TEST STATISTIC") + desired = results_ref[ds][dt]["whiteness"]["test statistic"] + assert_allclose(obtained.test_statistic, desired, rtol, atol, False, err_msg) + # p-value + err_msg = build_err_msg(ds, dt, "WHITENESS OF RESIDUALS - " + "P-VALUE") + desired = results_ref[ds][dt]["whiteness"]["p-value"] + assert_allclose(obtained.pvalue, desired, rtol, atol, False, err_msg) + + obtained = results_sm[ds][dt].test_whiteness(nlags=lags, + adjusted=True) + # test statistic (adjusted Portmanteau test) + err_msg = build_err_msg(ds, dt, "WHITENESS OF RESIDUALS - " + "TEST STATISTIC (ADJUSTED TEST)") + desired = results_ref[ds][dt]["whiteness"]["test statistic adj."] + assert_allclose(obtained.test_statistic, desired, rtol, atol, False, err_msg) + # p-value (adjusted Portmanteau test) + err_msg = build_err_msg(ds, dt, "WHITENESS OF RESIDUALS - " + "P-VALUE (ADJUSTED TEST)") + desired = results_ref[ds][dt]["whiteness"]["p-value adjusted"] + assert_allclose(obtained.pvalue, desired, rtol, atol, False, err_msg) + + +def test_exceptions(): + if debug_mode: + if "exceptions" not in to_test: + return + else: + print("\n\nEXCEPTIONS\n", end="") + for ds in datasets: + for dt in dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + # instant causality: + ### 0 0: + err_msg += ", seasons: " + str(seasons) + return err_msg + + +def setup(): + datasets.append( + DataSet(e6, [0, 4], [0, 1], ["Dp", "R"]), + # DataSet(...) TODO: append more data sets for more test cases. + ) + + for ds in datasets: + load_data(ds, data) + results_ref[ds] = load_results_jmulti(ds) + results_sm[ds] = load_results_statsmodels(ds) + results_sm_exog[ds] = load_results_statsmodels_exog(ds) + results_sm_exog_coint[ds] = load_results_statsmodels_exog_coint(ds) + + +setup() + + +def test_ml_gamma(): + if debug_mode: + if "Gamma" not in to_test: # pragma: no cover + return + print("\n\nGAMMA", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + exog = (results_sm_exog[ds][dt].exog is not None) + exog_coint = (results_sm_exog_coint[ds][dt].exog_coint is not None) + + # estimated parameter vector + err_msg = build_err_msg(ds, dt, "Gamma") + obtained = results_sm[ds][dt].gamma + obtained_exog = results_sm_exog[ds][dt].gamma + obtained_exog_coint = results_sm_exog_coint[ds][dt].gamma + desired = results_ref[ds][dt]["est"]["Gamma"] + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + if exog: + assert_equal(obtained_exog, obtained, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(obtained_exog_coint, obtained, "WITH EXOG_COINT: " + err_msg) + + if debug_mode and dont_test_se_t_p: # pragma: no cover + continue + # standard errors + obt = results_sm[ds][dt].stderr_gamma + obt_exog = results_sm_exog[ds][dt].stderr_gamma + obt_exog_coint = results_sm_exog_coint[ds][dt].stderr_gamma + des = results_ref[ds][dt]["se"]["Gamma"] + assert_allclose(obt, des, rtol, atol, False, "STANDARD ERRORS\n" + err_msg) + if exog: + assert_equal(obt_exog, obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(obt_exog_coint, obt, "WITH EXOG_COINT: " + err_msg) + # t-values + obt = results_sm[ds][dt].tvalues_gamma + obt_exog = results_sm_exog[ds][dt].tvalues_gamma + obt_exog_coint = results_sm_exog_coint[ds][dt].tvalues_gamma + des = results_ref[ds][dt]["t"]["Gamma"] + assert_allclose(obt, des, rtol, atol, False, "t-VALUES\n" + err_msg) + if exog: + assert_equal(obt_exog, obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(obt_exog_coint, obt, "WITH EXOG_COINT: " + err_msg) + # p-values + obt = results_sm[ds][dt].pvalues_gamma + obt_exog = results_sm_exog[ds][dt].pvalues_gamma + obt_exog_coint = results_sm_exog_coint[ds][dt].pvalues_gamma + des = results_ref[ds][dt]["p"]["Gamma"] + assert_allclose(obt, des, rtol, atol, False, "p-VALUES\n" + err_msg) + if exog: + assert_equal(obt_exog, obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(obt_exog_coint, obt, "WITH EXOG_COINT: " + err_msg) + + +def test_ml_alpha(): + if debug_mode: + if "alpha" not in to_test: # pragma: no cover + return + print("\n\nALPHA", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + exog = (results_sm_exog[ds][dt].exog is not None) + exog_coint = (results_sm_exog_coint[ds][dt].exog_coint is not None) + + err_msg = build_err_msg(ds, dt, "alpha") + obtained = results_sm[ds][dt].alpha + obtained_exog = results_sm_exog[ds][dt].alpha + obtained_exog_coint = results_sm_exog_coint[ds][dt].alpha + desired = results_ref[ds][dt]["est"]["alpha"] + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + if exog: + assert_equal(obtained_exog, obtained, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(obtained_exog_coint, obtained, "WITH EXOG_COINT: " + err_msg) + + if debug_mode and dont_test_se_t_p: # pragma: no cover + continue + # standard errors + obt = results_sm[ds][dt].stderr_alpha + obt_exog = results_sm_exog[ds][dt].stderr_alpha + obt_exog_coint = results_sm_exog_coint[ds][dt].stderr_alpha + des = results_ref[ds][dt]["se"]["alpha"] + assert_allclose(obt, des, rtol, atol, False, "STANDARD ERRORS\n" + err_msg) + if exog: + assert_equal(obt_exog, obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(obt_exog_coint, obt, "WITH EXOG_COINT: " + err_msg) + # t-values + obt = results_sm[ds][dt].tvalues_alpha + obt_exog = results_sm_exog[ds][dt].tvalues_alpha + obt_exog_coint = results_sm_exog_coint[ds][dt].tvalues_alpha + des = results_ref[ds][dt]["t"]["alpha"] + assert_allclose(obt, des, rtol, atol, False, "t-VALUES\n" + err_msg) + if exog: + assert_equal(obt_exog, obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(obt_exog_coint, obt, "WITH EXOG_COINT: " + err_msg) + # p-values + obt = results_sm[ds][dt].pvalues_alpha + obt_exog = results_sm_exog[ds][dt].pvalues_alpha + obt_exog_coint = results_sm_exog_coint[ds][dt].pvalues_alpha + des = results_ref[ds][dt]["p"]["alpha"] + assert_allclose(obt, des, rtol, atol, False, "p-VALUES\n" + err_msg) + if exog: + assert_equal(obt_exog, obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(obt_exog_coint, obt, "WITH EXOG_COINT: " + err_msg) + + +def test_ml_beta(): + if debug_mode: + if "beta" not in to_test: # pragma: no cover + return + print("\n\nBETA", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + exog = (results_sm_exog[ds][dt].exog is not None) + exog_coint = (results_sm_exog_coint[ds][dt].exog_coint is not None) + + err_msg = build_err_msg(ds, dt, "beta") + desired = results_ref[ds][dt]["est"]["beta"] + rows = desired.shape[0] + # - first coint_rank rows in JMulTi output have se=t_val=p_val=0 + # - beta includes deterministic terms in cointegration relation in + # sm, so we compare only the elements belonging to beta. + obtained = results_sm[ds][dt].beta[coint_rank:rows] + obtained_exog = results_sm_exog[ds][dt].beta[coint_rank:rows] + obtained_exog_coint = results_sm_exog_coint[ds][dt].beta[ + coint_rank:rows] + desired = desired[coint_rank:] + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + if exog: + assert_equal(obtained_exog, obtained, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(obtained_exog_coint, obtained, "WITH EXOG_COINT: " + err_msg) + + if debug_mode and dont_test_se_t_p: # pragma: no cover + continue + # standard errors + obt = results_sm[ds][dt].stderr_beta[coint_rank:rows] + obt_exog = results_sm_exog[ds][dt].stderr_beta[coint_rank:rows] + obt_exog_coint = results_sm_exog_coint[ds][dt].stderr_beta[ + coint_rank:rows] + des = results_ref[ds][dt]["se"]["beta"][coint_rank:] + assert_allclose(obt, des, rtol, atol, False, "STANDARD ERRORS\n" + err_msg) + if exog: + assert_equal(obt_exog, obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(obt_exog_coint, obt, "WITH EXOG_COINT: " + err_msg) + # t-values + obt = results_sm[ds][dt].tvalues_beta[coint_rank:rows] + obt_exog = results_sm_exog[ds][dt].tvalues_beta[coint_rank:rows] + obt_exog_coint = results_sm_exog_coint[ds][dt].tvalues_beta[ + coint_rank:rows] + des = results_ref[ds][dt]["t"]["beta"][coint_rank:] + assert_allclose(obt, des, rtol, atol, False, "t-VALUES\n" + err_msg) + if exog: + assert_equal(obt_exog, obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(obt_exog_coint, obt, "WITH EXOG_COINT: " + err_msg) + # p-values + obt = results_sm[ds][dt].pvalues_beta[coint_rank:rows] + obt_exog = results_sm_exog[ds][dt].pvalues_beta[coint_rank:rows] + obt_exog_coint = results_sm_exog_coint[ds][dt].pvalues_beta[ + coint_rank:rows] + des = results_ref[ds][dt]["p"]["beta"][coint_rank:] + assert_allclose(obt, des, rtol, atol, False, "p-VALUES\n" + err_msg) + if exog: + assert_equal(obt_exog, obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(obt_exog_coint, obt, "WITH EXOG_COINT: " + err_msg) + + +def test_ml_c(): # test deterministic terms outside coint relation + if debug_mode: + if "C" not in to_test: # pragma: no cover + return + print("\n\nDET_COEF", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + exog = (results_sm_exog[ds][dt].exog is not None) + exog_coint = (results_sm_exog_coint[ds][dt].exog_coint is not None) + + C_obt = results_sm[ds][dt].det_coef + C_obt_exog = results_sm_exog[ds][dt].det_coef + C_obt_exog_coint = results_sm_exog_coint[ds][dt].det_coef + se_C_obt = results_sm[ds][dt].stderr_det_coef + se_C_obt_exog = results_sm_exog[ds][dt].stderr_det_coef + se_C_obt_exog_coint = results_sm_exog_coint[ds][dt].stderr_det_coef + t_C_obt = results_sm[ds][dt].tvalues_det_coef + t_C_obt_exog = results_sm_exog[ds][dt].tvalues_det_coef + t_C_obt_exog_coint = results_sm_exog_coint[ds][dt].tvalues_det_coef + p_C_obt = results_sm[ds][dt].pvalues_det_coef + p_C_obt_exog = results_sm_exog[ds][dt].pvalues_det_coef + p_C_obt_exog_coint = results_sm_exog_coint[ds][dt].pvalues_det_coef + + if "C" not in results_ref[ds][dt]["est"].keys(): + # case: there are no deterministic terms + if C_obt.size == 0 and se_C_obt.size == 0 \ + and t_C_obt.size == 0 and p_C_obt.size == 0: + assert_(True) + continue + + desired = results_ref[ds][dt]["est"]["C"] + dt_string = dt_s_tup_to_string(dt) + if "co" in dt_string: + err_msg = build_err_msg(ds, dt, "CONST") + const_obt = C_obt[:, :1] + const_obt_exog = C_obt_exog[:, :1] + const_obt_exog_coint = C_obt_exog_coint[:, :1] + const_des = desired[:, :1] + C_obt = C_obt[:, 1:] + C_obt_exog = C_obt_exog[:, 1:] + C_obt_exog_coint = C_obt_exog_coint[:, 1:] + desired = desired[:, 1:] + assert_allclose(const_obt, const_des, rtol, atol, False, err_msg) + if exog: + assert_equal(const_obt_exog, const_obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(const_obt_exog_coint, const_obt, "WITH EXOG_COINT: " + err_msg) + if "s" in dt_string: + err_msg = build_err_msg(ds, dt, "SEASONAL") + if "lo" in dt_string: + seas_obt = C_obt[:, :-1] + seas_obt_exog = C_obt_exog[:, :-1] + seas_obt_exog_coint = C_obt_exog_coint[:, :-1] + seas_des = desired[:, :-1] + else: + seas_obt = C_obt + seas_obt_exog = C_obt_exog + seas_obt_exog_coint = C_obt_exog_coint + seas_des = desired + assert_allclose(seas_obt, seas_des, rtol, atol, False, err_msg) + if exog: + assert_equal(seas_obt_exog, seas_obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(seas_obt_exog_coint, seas_obt, "WITH EXOG_COINT: " + err_msg) + if "lo" in dt_string: + err_msg = build_err_msg(ds, dt, "LINEAR TREND") + lt_obt = C_obt[:, -1:] + lt_obt_exog = C_obt_exog[:, -1:] + lt_obt_exog_coint = C_obt_exog_coint[:, -1:] + lt_des = desired[:, -1:] + assert_allclose(lt_obt, lt_des, rtol, atol, False, err_msg) + if exog: + assert_equal(lt_obt_exog, lt_obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(lt_obt_exog_coint, lt_obt, "WITH EXOG_COINT: " + err_msg) + if debug_mode and dont_test_se_t_p: # pragma: no cover + continue + # standard errors + se_desired = results_ref[ds][dt]["se"]["C"] + if "co" in dt_string: + err_msg = build_err_msg(ds, dt, "SE CONST") + se_const_obt = se_C_obt[:, 0][:, None] + se_C_obt = se_C_obt[:, 1:] + se_const_obt_exog = se_C_obt_exog[:, 0][:, None] + se_C_obt_exog = se_C_obt_exog[:, 1:] + se_const_obt_exog_coint = se_C_obt_exog_coint[:, 0][:, None] + se_C_obt_exog_coint = se_C_obt_exog_coint[:, 1:] + se_const_des = se_desired[:, 0][:, None] + se_desired = se_desired[:, 1:] + assert_allclose(se_const_obt, se_const_des, rtol, atol, False, err_msg) + if exog: + assert_equal(se_const_obt_exog, se_const_obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(se_const_obt_exog_coint, se_const_obt, "WITH EXOG_COINT: " + err_msg) + if "s" in dt_string: + err_msg = build_err_msg(ds, dt, "SE SEASONAL") + if "lo" in dt_string: + se_seas_obt = se_C_obt[:, :-1] + se_seas_obt_exog = se_C_obt_exog[:, :-1] + se_seas_obt_exog_coint = se_C_obt_exog_coint[:, :-1] + se_seas_des = se_desired[:, :-1] + else: + se_seas_obt = se_C_obt + se_seas_obt_exog = se_C_obt_exog + se_seas_obt_exog_coint = se_C_obt_exog_coint + se_seas_des = se_desired + assert_allclose(se_seas_obt, se_seas_des, rtol, atol, False, err_msg) + if exog: + assert_equal(se_seas_obt_exog, se_seas_obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(se_seas_obt_exog_coint, se_seas_obt, "WITH EXOG_COINT: " + err_msg) + if "lo" in dt_string: + err_msg = build_err_msg(ds, dt, "SE LIN. TREND") + se_lt_obt = se_C_obt[:, -1:] + se_lt_obt_exog = se_C_obt_exog[:, -1:] + se_lt_obt_exog_coint = se_C_obt_exog_coint[:, -1:] + se_lt_des = se_desired[:, -1:] + assert_allclose(se_lt_obt, se_lt_des, rtol, atol, False, err_msg) + if exog: + assert_equal(se_lt_obt_exog, se_lt_obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(se_lt_obt_exog_coint, se_lt_obt, "WITH EXOG_COINT: " + err_msg) + # t-values + t_desired = results_ref[ds][dt]["t"]["C"] + if "co" in dt_string: + t_const_obt = t_C_obt[:, 0][:, None] + t_C_obt = t_C_obt[:, 1:] + t_const_obt_exog = t_C_obt_exog[:, 0][:, None] + t_C_obt_exog = t_C_obt_exog[:, 1:] + t_const_obt_exog_coint = t_C_obt_exog_coint[:, 0][:, None] + t_C_obt_exog_coint = t_C_obt_exog_coint[:, 1:] + t_const_des = t_desired[:, 0][:, None] + t_desired = t_desired[:, 1:] + assert_allclose(t_const_obt, t_const_des, rtol, atol, False, build_err_msg(ds, dt, "T CONST")) + if exog: + assert_equal(t_const_obt_exog, t_const_obt, "WITH EXOG: " + err_msg) + if exog_coint: + assert_equal(t_const_obt_exog_coint, t_const_obt, "WITH EXOG_COINT: " + err_msg) + if "s" in dt_string: + if "lo" in dt_string: + t_seas_obt = t_C_obt[:, :-1] + t_seas_obt_exog = t_C_obt_exog[:, :-1] + t_seas_obt_exog_coint = t_C_obt_exog_coint[:, :-1] + t_seas_des = t_desired[:, :-1] + else: + t_seas_obt = t_C_obt + t_seas_obt_exog = t_C_obt_exog + t_seas_obt_exog_coint = t_C_obt_exog_coint + t_seas_des = t_desired + assert_allclose(t_seas_obt, t_seas_des, rtol, atol, False, build_err_msg(ds, dt, "T SEASONAL")) + if exog: + assert_equal(t_seas_obt_exog, t_seas_obt, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(t_seas_obt_exog_coint, t_seas_obt, "WITH EXOG_COINT" + err_msg) + if "lo" in dt_string: + t_lt_obt = t_C_obt[:, -1:] + t_lt_obt_exog = t_C_obt_exog[:, -1:] + t_lt_obt_exog_coint = t_C_obt_exog_coint[:, -1:] + t_lt_des = t_desired[:, -1:] + assert_allclose(t_lt_obt, t_lt_des, rtol, atol, False, build_err_msg(ds, dt, "T LIN. TREND")) + if exog: + assert_equal(t_lt_obt_exog, t_lt_obt, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(t_lt_obt_exog_coint, t_lt_obt, "WITH EXOG_COINT" + err_msg) + # p-values + p_desired = results_ref[ds][dt]["p"]["C"] + if "co" in dt_string: + p_const_obt = p_C_obt[:, 0][:, None] + p_C_obt = p_C_obt[:, 1:] + p_const_obt_exog = p_C_obt_exog[:, 0][:, None] + p_C_obt_exog = p_C_obt_exog[:, 1:] + p_const_obt_exog_coint = p_C_obt_exog_coint[:, 0][:, None] + p_C_obt_exo_cointg = p_C_obt_exog_coint[:, 1:] + p_const_des = p_desired[:, 0][:, None] + p_desired = p_desired[:, 1:] + assert_allclose(p_const_obt, p_const_des, rtol, atol, False, build_err_msg(ds, dt, "P CONST")) + if exog: + assert_equal(p_const_obt, p_const_obt_exog, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(p_const_obt, p_const_obt_exog_coint, "WITH EXOG_COINT" + err_msg) + if "s" in dt_string: + if "lo" in dt_string: + p_seas_obt = p_C_obt[:, :-1] + p_seas_obt_exog = p_C_obt_exog[:, :-1] + p_seas_obt_exog_coint = p_C_obt_exog_coint[:, :-1] + p_seas_des = p_desired[:, :-1] + else: + p_seas_obt = p_C_obt + p_seas_obt_exog = p_C_obt_exog + p_seas_obt_exog_coint = p_C_obt_exog_coint + p_seas_des = p_desired + assert_allclose(p_seas_obt, p_seas_des, rtol, atol, False, build_err_msg(ds, dt, "P SEASONAL")) + if exog: + assert_equal(p_seas_obt_exog, p_seas_obt, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(p_seas_obt_exog_coint, p_seas_obt, "WITH EXOG_COINT" + err_msg) + if "lo" in dt_string: + p_lt_obt = p_C_obt[:, -1:] + p_lt_obt_exog = p_C_obt_exog[:, -1:] + p_lt_obt_exog_coint = p_C_obt_exog_coint[:, -1:] + p_lt_des = p_desired[:, -1:] + assert_allclose(p_lt_obt, p_lt_des, rtol, atol, False, build_err_msg(ds, dt, "P LIN. TREND")) + if exog: + assert_equal(p_lt_obt_exog, p_lt_obt, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(p_lt_obt_exog_coint, p_lt_obt, "WITH EXOG_COINT" + err_msg) + + +def test_ml_det_terms_in_coint_relation(): + if debug_mode: + if "det_coint" not in to_test: # pragma: no cover + return + print("\n\nDET_COEF_COINT", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + exog = (results_sm_exog[ds][dt].exog is not None) + exog_coint = (results_sm_exog_coint[ds][dt].exog_coint is not None) + + err_msg = build_err_msg(ds, dt, "det terms in coint relation") + dt_string = dt_s_tup_to_string(dt) + obtained = results_sm[ds][dt].det_coef_coint + obtained_exog = results_sm_exog[ds][dt].det_coef_coint + obtained_exog_coint = results_sm_exog_coint[ds][dt].det_coef_coint + if "ci" not in dt_string and "li" not in dt_string: + if obtained.size > 0: + assert_(False, build_err_msg(ds, dt, "There should not be any det terms in " + + "cointegration for deterministic terms " + + dt_string)) + else: + assert_(True) + continue + desired = results_ref[ds][dt]["est"]["det_coint"] + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + if exog: + assert_equal(obtained_exog, obtained, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(obtained_exog_coint, obtained, "WITH EXOG_COINT" + err_msg) + # standard errors + se_obtained = results_sm[ds][dt].stderr_det_coef_coint + se_obtained_exog = results_sm_exog[ds][dt].stderr_det_coef_coint + se_obtained_exog_coint = results_sm_exog_coint[ds][ + dt].stderr_det_coef_coint + se_desired = results_ref[ds][dt]["se"]["det_coint"] + assert_allclose(se_obtained, se_desired, rtol, atol, False, "STANDARD ERRORS\n" + err_msg) + if exog: + assert_equal(se_obtained_exog, se_obtained, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(se_obtained_exog_coint, se_obtained, "WITH EXOG_COINT" + err_msg) + # t-values + t_obtained = results_sm[ds][dt].tvalues_det_coef_coint + t_obtained_exog = results_sm_exog[ds][dt].tvalues_det_coef_coint + t_obtained_exog_coint = results_sm_exog_coint[ds][ + dt].tvalues_det_coef_coint + t_desired = results_ref[ds][dt]["t"]["det_coint"] + assert_allclose(t_obtained, t_desired, rtol, atol, False, "t-VALUES\n" + err_msg) + if exog: + assert_equal(t_obtained_exog, t_obtained, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(t_obtained_exog_coint, t_obtained, "WITH EXOG_COINT" + err_msg) + # p-values + p_obtained = results_sm[ds][dt].pvalues_det_coef_coint + p_obtained_exog = results_sm_exog[ds][dt].pvalues_det_coef_coint + p_obtained_exog_coint = results_sm_exog_coint[ds][ + dt].pvalues_det_coef_coint + p_desired = results_ref[ds][dt]["p"]["det_coint"] + assert_allclose(p_obtained, p_desired, rtol, atol, False, "p-VALUES\n" + err_msg) + if exog: + assert_equal(p_obtained_exog, p_obtained, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(p_obtained_exog_coint, p_obtained, "WITH EXOG_COINT" + err_msg) + + +def test_ml_sigma(): + if debug_mode: + if "Sigma_u" not in to_test: # pragma: no cover + return + print("\n\nSIGMA_U", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + exog = (results_sm_exog[ds][dt].exog is not None) + exog_coint = (results_sm_exog_coint[ds][dt].exog_coint is not None) + + err_msg = build_err_msg(ds, dt, "Sigma_u") + obtained = results_sm[ds][dt].sigma_u + obtained_exog = results_sm_exog[ds][dt].sigma_u + obtained_exog_coint = results_sm_exog_coint[ds][dt].sigma_u + desired = results_ref[ds][dt]["est"]["Sigma_u"] + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + if exog: + assert_equal(obtained_exog, obtained, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(obtained_exog_coint, obtained, "WITH EXOG_COINT" + err_msg) + + +def test_var_rep(): + if debug_mode: + if "VAR repr. A" not in to_test: # pragma: no cover + return + print("\n\nVAR REPRESENTATION", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + exog = (results_sm_exog[ds][dt].exog is not None) + exog_coint = (results_sm_exog_coint[ds][dt].exog_coint is not None) + + err_msg = build_err_msg(ds, dt, "VAR repr. A") + obtained = results_sm[ds][dt].var_rep + obtained_exog = results_sm_exog[ds][dt].var_rep + obtained_exog_coint = results_sm_exog_coint[ds][dt].var_rep + p = obtained.shape[0] + desired = np.hsplit(results_ref[ds][dt]["est"]["VAR A"], p) + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + if exog: + assert_equal(obtained_exog, obtained, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(obtained_exog_coint, obtained, "WITH EXOG_COINT" + err_msg) + + +def test_var_to_vecm(): + if debug_mode: + if "VAR to VEC representation" not in to_test: # pragma: no cover + return + print("\n\nVAR TO VEC", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + err_msg = build_err_msg(ds, dt, "VAR to VEC representation") + sigma_u = results_sm[ds][dt].sigma_u + coefs = results_sm[ds][dt].var_rep + intercept = np.zeros(len(sigma_u)) + # Note: _params_info k_trend, k_exog, ... is inferred with defaults + var = VARProcess(coefs, intercept, sigma_u) + vecm_results = var.to_vecm() + obtained_pi = vecm_results["Pi"] + obtained_gamma = vecm_results["Gamma"] + + desired_pi = np.dot(results_sm[ds][dt].alpha, + results_sm[ds][dt].beta.T) + desired_gamma = results_sm[ds][dt].gamma + assert_allclose(obtained_pi, desired_pi, rtol, atol, False, err_msg + " Pi") + assert_allclose(obtained_gamma, desired_gamma, rtol, atol, False, err_msg + " Gamma") + + +# Commented out since JMulTi shows the same det. terms for both VEC & VAR repr. +# def test_var_rep_det(): +# for ds in datasets: +# for dt in dt_s_list: +# if dt != "nc": +# err_msg = build_err_msg(ds, dt, "VAR repr. deterministic") +# obtained = 0 # not implemented since the same values as VECM +# desired = results_ref[ds][dt]["est"]["VAR deterministic"] +# assert_allclose(obtained, desired, rtol, atol, False, err_msg) + + +def test_log_like(): + if debug_mode: + if "log_like" not in to_test: # pragma: no cover + return + else: + print("\n\nLOG LIKELIHOOD", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + exog = (results_sm_exog[ds][dt].exog is not None) + exog_coint = (results_sm_exog_coint[ds][dt].exog_coint is not None) + + err_msg = build_err_msg(ds, dt, "Log Likelihood") + obtained = results_sm[ds][dt].llf + obtained_exog = results_sm_exog[ds][dt].llf + obtained_exog_coint = results_sm_exog_coint[ds][dt].llf + # JMulTi's llf seems to have a bug (Stata and tsdyn suggest that + # our code is correct). We use nobs to correct this inconsistency. + nobs = results_sm[ds][dt].nobs + desired = results_ref[ds][dt]["log_like"] * nobs / (nobs-1) + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + if exog: + assert_equal(obtained_exog, obtained, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(obtained_exog_coint, obtained, "WITH EXOG_COINT" + err_msg) + + +def test_fc(): + if debug_mode: + if "fc" not in to_test: # pragma: no cover + return + else: + print("\n\nFORECAST", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + STEPS = 5 + ALPHA = 0.05 + err_msg = build_err_msg(ds, dt, "FORECAST") + # test point forecast functionality of predict method + obtained = results_sm[ds][dt].predict(steps=STEPS) + desired = results_ref[ds][dt]["fc"]["fc"] + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + + # ----------------------------------------------------------------- + # with exog: + exog = (results_sm_exog[ds][dt].exog is not None) + exog_fc = None + if exog: # build future values of exog and test: + seasons = dt[1] + exog_model = results_sm_exog[ds][dt].exog + exog_seasons_fc = exog_model[-seasons:, :seasons-1] + exog_seasons_fc = np.pad(exog_seasons_fc, + ((0, STEPS-exog_seasons_fc.shape[0]), (0, 0)), "wrap") + # if linear trend in exog + if exog_seasons_fc.shape[1] + 1 == exog_model.shape[1]: + exog_lt_fc = exog_model[-1, -1] + 1 + np.arange(STEPS) + exog_fc = np.column_stack((exog_seasons_fc, exog_lt_fc)) + else: + exog_fc = exog_seasons_fc + obtained_exog = results_sm_exog[ds][dt].predict( + steps=STEPS, exog_fc=exog_fc) + assert_allclose(obtained_exog, obtained, 1e-07, 0, False, "WITH EXOG" + err_msg) + # test predict method with confidence interval calculation + err_msg = build_err_msg(ds, dt, "FORECAST WITH INTERVALS") + obtained_w_intervals = results_sm[ds][dt].predict( + steps=STEPS, alpha=ALPHA) + obtained_w_intervals_exog = results_sm_exog[ds][dt].predict( + steps=STEPS, alpha=ALPHA, exog_fc=exog_fc) + obt = obtained_w_intervals[0] # forecast + obt_l = obtained_w_intervals[1] # lower bound + obt_u = obtained_w_intervals[2] # upper bound + obt_exog = obtained_w_intervals_exog[0] + obt_exog_l = obtained_w_intervals_exog[1] + obt_exog_u = obtained_w_intervals_exog[2] + des = results_ref[ds][dt]["fc"]["fc"] + des_l = results_ref[ds][dt]["fc"]["lower"] + des_u = results_ref[ds][dt]["fc"]["upper"] + assert_allclose(obt, des, rtol, atol, False, err_msg) + assert_allclose(obt_l, des_l, rtol, atol, False, err_msg) + assert_allclose(obt_u, des_u, rtol, atol, False, err_msg) + if exog: + assert_allclose(obt_exog, obt, 1e-07, 0, False, "WITH EXOG" + err_msg) + assert_allclose(obt_exog_l, obt_l, 1e-07, 0, False, "WITH EXOG" + err_msg) + assert_allclose(obt_exog_u, obt_u, 1e-07, 0, False, "WITH EXOG" + err_msg) + + # ----------------------------------------------------------------- + # with exog_coint: + exog_coint_model = results_sm_exog_coint[ds][dt].exog_coint + exog_coint = (exog_coint_model is not None) + exog_coint_fc = None + if exog_coint: # build future values of exog_coint and test: + # const is in exog_coint in all tests that have exog_coint + exog_coint_fc = np.ones(STEPS-1) + # if linear trend in exog_coint + if exog_coint_model.shape[1] == 2: + exog_coint_fc = np.column_stack( + (exog_coint_fc, + exog_coint_model[-1, -1] + 1 + np.arange(STEPS-1)) + ) + obtained_exog_coint = results_sm_exog_coint[ds][dt].predict( + steps=STEPS, exog_coint_fc=exog_coint_fc) + + assert_allclose(obtained_exog_coint, obtained, 1e-07, + 0, False, "WITH EXOG_COINT" + err_msg) + # test predict method with confidence interval calculation + err_msg = build_err_msg(ds, dt, "FORECAST WITH INTERVALS") + obtained_w_intervals = results_sm[ds][dt].predict( + steps=STEPS, alpha=ALPHA) + obtained_w_intervals_exog_coint = results_sm_exog_coint[ds][ + dt].predict(steps=STEPS, alpha=ALPHA, + exog_coint_fc=exog_coint_fc) + obt = obtained_w_intervals[0] # forecast + obt_l = obtained_w_intervals[1] # lower bound + obt_u = obtained_w_intervals[2] # upper bound + obt_exog_coint = obtained_w_intervals_exog_coint[0] + obt_exog_coint_l = obtained_w_intervals_exog_coint[1] + obt_exog_coint_u = obtained_w_intervals_exog_coint[2] + des = results_ref[ds][dt]["fc"]["fc"] + des_l = results_ref[ds][dt]["fc"]["lower"] + des_u = results_ref[ds][dt]["fc"]["upper"] + assert_allclose(obt, des, rtol, atol, False, err_msg) + assert_allclose(obt_l, des_l, rtol, atol, False, err_msg) + assert_allclose(obt_u, des_u, rtol, atol, False, err_msg) + if exog_coint: + assert_allclose(obt_exog_coint, obt, 1e-07, 0, False, "WITH EXOG_COINT" + err_msg) + assert_allclose(obt_exog_coint_l, obt_l, 1e-07, 0, False, "WITH EXOG_COINT" + err_msg) + assert_allclose(obt_exog_coint_u, obt_u, 1e-07, 0, False, "WITH EXOG_COINT" + err_msg) + + +def test_granger_causality(): + if debug_mode: + if "granger" not in to_test: # pragma: no cover + return + else: + print("\n\nGRANGER", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + exog = (results_sm_exog[ds][dt].exog is not None) + exog_coint = (results_sm_exog_coint[ds][dt].exog_coint is not None) + + err_msg_g_p = build_err_msg(ds, dt, "GRANGER CAUS. - p-VALUE") + err_msg_g_t = build_err_msg(ds, dt, "GRANGER CAUS. - TEST STAT.") + + v_ind = range(len(ds.variable_names)) + for causing_ind in sublists(v_ind, 1, len(v_ind)-1): + causing_names = ["y" + str(i+1) for i in causing_ind] + causing_key = tuple(ds.variable_names[i] for i in causing_ind) + + caused_ind = [i for i in v_ind if i not in causing_ind] + caused_names = ["y" + str(i+1) for i in caused_ind] + caused_key = tuple(ds.variable_names[i] for i in caused_ind) + + granger_sm_ind = results_sm[ds][ + dt].test_granger_causality(caused_ind, causing_ind) + granger_sm_ind_exog = results_sm_exog[ds][ + dt].test_granger_causality(caused_ind, causing_ind) + granger_sm_ind_exog_coint = results_sm_exog_coint[ds][ + dt].test_granger_causality(caused_ind, causing_ind) + granger_sm_str = results_sm[ds][ + dt].test_granger_causality(caused_names, causing_names) + + # call methods to assure they don't raise exceptions + granger_sm_ind.summary() + str(granger_sm_ind) # __str__() + assert_(granger_sm_ind == granger_sm_str) # __eq__() + + # test test-statistic for Granger non-causality: + g_t_obt = granger_sm_ind.test_statistic + g_t_obt_exog = granger_sm_ind_exog.test_statistic + g_t_obt_exog_coint = granger_sm_ind_exog_coint.test_statistic + g_t_des = results_ref[ds][dt]["granger_caus"][ + "test_stat"][(causing_key, caused_key)] + assert_allclose(g_t_obt, g_t_des, rtol, atol, False, err_msg_g_t) + if exog: + assert_allclose(g_t_obt_exog, g_t_obt, 1e-07, 0, False, "WITH EXOG" + err_msg_g_t) + if exog_coint: + assert_allclose(g_t_obt_exog_coint, g_t_obt, 1e-07, 0, False, "WITH EXOG_COINT" + err_msg_g_t) + # check whether string sequences as args work in the same way: + g_t_obt_str = granger_sm_str.test_statistic + assert_allclose(g_t_obt_str, g_t_obt, 1e-07, 0, False, + err_msg_g_t + " - sequences of integers and ".upper() + + "strings as arguments don't yield the same result!".upper()) + # check if int (e.g. 0) as index and list of int ([0]) yield + # the same result: + if len(causing_ind) == 1 or len(caused_ind) == 1: + ci = causing_ind[0] if len(causing_ind)==1 else causing_ind + ce = caused_ind[0] if len(caused_ind) == 1 else caused_ind + granger_sm_single_ind = results_sm[ds][ + dt].test_granger_causality(ce, ci) + g_t_obt_single = granger_sm_single_ind.test_statistic + assert_allclose(g_t_obt_single, g_t_obt, 1e-07, 0, False, + err_msg_g_t + " - list of int and int as ".upper() + + "argument don't yield the same result!".upper()) + + # test p-value for Granger non-causality: + g_p_obt = granger_sm_ind.pvalue + g_p_des = results_ref[ds][dt]["granger_caus"]["p"][( + causing_key, caused_key)] + assert_allclose(g_p_obt, g_p_des, rtol, atol, False, err_msg_g_p) + # check whether string sequences as args work in the same way: + g_p_obt_str = granger_sm_str.pvalue + assert_allclose(g_p_obt_str, g_p_obt, 1e-07, 0, False, + err_msg_g_t + " - sequences of integers and ".upper() + \ + "strings as arguments don't yield the same result!".upper()) + # check if int (e.g. 0) as index and list of int ([0]) yield + # the same result: + if len(causing_ind) == 1: + g_p_obt_single = granger_sm_single_ind.pvalue + assert_allclose(g_p_obt_single, g_p_obt, 1e-07, 0, False, + err_msg_g_t + " - list of int and int as ".upper() + \ + "argument don't yield the same result!".upper()) + + +def test_inst_causality(): # test instantaneous causality + if debug_mode: + if "inst. causality" not in to_test: # pragma: no cover + return + else: + print("\n\nINST. CAUSALITY", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + exog = (results_sm_exog[ds][dt].exog is not None) + exog_coint = (results_sm_exog_coint[ds][dt].exog_coint is not None) + + err_msg_i_p = build_err_msg(ds, dt, "INSTANT. CAUS. - p-VALUE") + err_msg_i_t = build_err_msg(ds, dt, "INSTANT. CAUS. - TEST STAT.") + + v_ind = range(len(ds.variable_names)) + for causing_ind in sublists(v_ind, 1, len(v_ind)-1): + causing_names = ["y" + str(i+1) for i in causing_ind] + causing_key = tuple(ds.variable_names[i] for i in causing_ind) + + caused_ind = [i for i in v_ind if i not in causing_ind] + caused_key = tuple(ds.variable_names[i] for i in caused_ind) + inst_sm_ind = results_sm[ds][dt].test_inst_causality( + causing_ind) + inst_sm_ind_exog = results_sm_exog[ds][ + dt].test_inst_causality(causing_ind) + inst_sm_ind_exog_coint = results_sm_exog_coint[ds][ + dt].test_inst_causality(causing_ind) + inst_sm_str = results_sm[ds][dt].test_inst_causality( + causing_names) + # call methods to assure they don't raise exceptions + inst_sm_ind.summary() + str(inst_sm_ind) # __str__() + assert_(inst_sm_ind == inst_sm_str) # __eq__() + # test test-statistic for instantaneous non-causality + t_obt = inst_sm_ind.test_statistic + t_obt_exog = inst_sm_ind_exog.test_statistic + t_obt_exog_coint = inst_sm_ind_exog_coint.test_statistic + t_des = results_ref[ds][dt]["inst_caus"][ + "test_stat"][(causing_key, caused_key)] + assert_allclose(t_obt, t_des, rtol, atol, False, err_msg_i_t) + if exog: + assert_allclose(t_obt_exog, t_obt, 1e-07, 0, False, "WITH EXOG" + err_msg_i_t) + if exog_coint: + assert_allclose(t_obt_exog_coint, t_obt, 1e-07, 0, False, + "WITH EXOG_COINT" + err_msg_i_t) + # check whether string sequences as args work in the same way: + t_obt_str = inst_sm_str.test_statistic + assert_allclose(t_obt_str, t_obt, 1e-07, 0, False, + err_msg_i_t + " - sequences of integers and ".upper() + + "strings as arguments don't yield the same result!".upper()) + # check if int (e.g. 0) as index and list of int ([0]) yield + # the same result: + if len(causing_ind) == 1: + inst_sm_single_ind = results_sm[ds][ + dt].test_inst_causality(causing_ind[0]) + t_obt_single = inst_sm_single_ind.test_statistic + assert_allclose(t_obt_single, t_obt, 1e-07, 0, False, + err_msg_i_t + " - list of int and int as ".upper() + + "argument don't yield the same result!".upper()) + + # test p-value for instantaneous non-causality + p_obt = results_sm[ds][dt].test_inst_causality( + causing_ind).pvalue + p_des = results_ref[ds][dt]["inst_caus"]["p"][( + causing_key, caused_key)] + assert_allclose(p_obt, p_des, rtol, atol, False, err_msg_i_p) + # check whether string sequences as args work in the same way: + p_obt_str = inst_sm_str.pvalue + assert_allclose(p_obt_str, p_obt, 1e-07, 0, False, + err_msg_i_p + " - sequences of integers and ".upper() + + "strings as arguments don't yield the same result!".upper()) + # check if int (e.g. 0) as index and list of int ([0]) yield + # the same result: + if len(causing_ind) == 1: + inst_sm_single_ind = results_sm[ds][ + dt].test_inst_causality(causing_ind[0]) + p_obt_single = inst_sm_single_ind.pvalue + assert_allclose(p_obt_single, p_obt, 1e-07, 0, False, + err_msg_i_p + " - list of int and int as ".upper() + + "argument don't yield the same result!".upper()) + + +def test_impulse_response(): + if debug_mode: + if "impulse-response" not in to_test: # pragma: no cover + return + else: + print("\n\nIMPULSE-RESPONSE", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + exog = (results_sm_exog[ds][dt].exog is not None) + exog_coint = (results_sm_exog_coint[ds][dt].exog_coint is not None) + + err_msg = build_err_msg(ds, dt, "IMULSE-RESPONSE") + periods = 20 + obtained_all = results_sm[ds][dt].irf(periods=periods).irfs + obtained_all_exog = results_sm_exog[ds][dt].irf( + periods=periods).irfs + obtained_all_exog_coint = results_sm_exog_coint[ds][dt].irf( + periods=periods).irfs + # flatten inner arrays to make them comparable to parsed results: + obtained_all = obtained_all.reshape(periods+1, -1) + obtained_all_exog = obtained_all_exog.reshape(periods+1, -1) + obtained_all_exog_coint = obtained_all_exog_coint.reshape( + periods+1, -1) + desired_all = results_ref[ds][dt]["ir"] + assert_allclose(obtained_all, desired_all, rtol, atol, False, err_msg) + if exog: + assert_equal(obtained_all_exog, obtained_all, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(obtained_all_exog_coint, obtained_all, "WITH EXOG_COINT" + err_msg) + + +def test_lag_order_selection(): + if debug_mode: + if "lag order" not in to_test: # pragma: no cover + return + else: + print("\n\nLAG ORDER SELECTION", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + deterministic = dt[0] + endog_tot = data[ds] + + obtained_all = select_order(endog_tot, 10, dt[0], dt[1]) + deterministic_outside_exog = "" + # "co" is not in exog in any test case + if "co" in deterministic: + deterministic_outside_exog += "co" + # "lo" is is in exog only in test cases with seasons>0 + if "lo" in deterministic and dt[1] == 0: + deterministic_outside_exog += "lo" + + exog_model = results_sm_exog[ds][dt].exog + exog = (exog_model is not None) + exog_coint_model = results_sm_exog_coint[ds][dt].exog_coint + exog_coint = (exog_coint_model is not None) + + obtained_all_exog = select_order(endog_tot, 10, + deterministic_outside_exog, + seasons=0, exog=exog_model) + # "ci" and "li" are always in exog_coint, so pass "nc" as det. term + obtained_all_exog_coint = select_order(endog_tot, 10, "nc", + seasons=dt[1], + exog_coint=exog_coint_model) + for ic in ["aic", "fpe", "hqic", "bic"]: + err_msg = build_err_msg(ds, dt, + "LAG ORDER SELECTION - " + ic.upper()) + obtained = getattr(obtained_all, ic) + desired = results_ref[ds][dt]["lagorder"][ic] + assert_allclose(obtained, desired, rtol, atol, False, err_msg) + if exog: + assert_equal(getattr(obtained_all_exog, ic), + getattr(obtained_all, ic), "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(getattr(obtained_all_exog_coint, ic), + getattr(obtained_all, ic), "WITH EXOG_COINT" + err_msg) + # call methods to assure they don't raise exceptions + obtained_all.summary() + str(obtained_all) # __str__() + + +def test_normality(): + if debug_mode: + if "test_norm" not in to_test: # pragma: no cover + return + else: + print("\n\nTEST NON-NORMALITY", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + exog = (results_sm_exog[ds][dt].exog is not None) + exog_coint = (results_sm_exog_coint[ds][dt].exog_coint is not None) + + obtained = results_sm[ds][dt].test_normality(signif=0.05) + obtained_exog = results_sm_exog[ds][dt].test_normality(signif=0.05) + obtained_exog_coint = results_sm_exog_coint[ds][dt].test_normality( + signif=0.05) + err_msg = build_err_msg(ds, dt, "TEST NON-NORMALITY - STATISTIC") + obt_statistic = obtained.test_statistic + obt_statistic_exog = obtained_exog.test_statistic + obt_statistic_exog_coint = obtained_exog_coint.test_statistic + des_statistic = results_ref[ds][dt]["test_norm"][ + "joint_test_statistic"] + assert_allclose(obt_statistic, des_statistic, rtol, atol, False, err_msg) + if exog: + assert_equal(obt_statistic_exog, obt_statistic, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(obt_statistic_exog_coint, obt_statistic, "WITH EXOG_COINT" + err_msg) + err_msg = build_err_msg(ds, dt, "TEST NON-NORMALITY - P-VALUE") + obt_pvalue = obtained.pvalue + des_pvalue = results_ref[ds][dt]["test_norm"]["joint_pvalue"] + assert_allclose(obt_pvalue, des_pvalue, rtol, atol, False, err_msg) + # call methods to assure they don't raise exceptions + obtained.summary() + str(obtained) # __str__() + assert_(obtained == obtained_exog) # __eq__() + + +def test_whiteness(): + if debug_mode: + if "whiteness" not in to_test: # pragma: no cover + return + else: + print("\n\nTEST WHITENESS OF RESIDUALS", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + exog = (results_sm_exog[ds][dt].exog is not None) + exog_coint = (results_sm_exog_coint[ds][dt].exog_coint is not None) + + lags = results_ref[ds][dt]["whiteness"]["tested order"] + + obtained = results_sm[ds][dt].test_whiteness(nlags=lags) + obtained_exog = results_sm_exog[ds][dt].test_whiteness(nlags=lags) + obtained_exog_coint = results_sm_exog_coint[ds][dt].test_whiteness( + nlags=lags) + # test statistic + err_msg = build_err_msg(ds, dt, "WHITENESS OF RESIDUALS - " + "TEST STATISTIC") + desired = results_ref[ds][dt]["whiteness"]["test statistic"] + assert_allclose(obtained.test_statistic, desired, rtol, atol, False, err_msg) + if exog: + assert_equal(obtained_exog.test_statistic, + obtained.test_statistic, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(obtained_exog_coint.test_statistic, + obtained.test_statistic, "WITH EXOG_COINT" + err_msg) + # p-value + err_msg = build_err_msg(ds, dt, "WHITENESS OF RESIDUALS - " + "P-VALUE") + desired = results_ref[ds][dt]["whiteness"]["p-value"] + assert_allclose(obtained.pvalue, desired, rtol, atol, False, err_msg) + + obtained = results_sm[ds][dt].test_whiteness(nlags=lags, + adjusted=True) + obtained_exog = results_sm_exog[ds][dt].test_whiteness( + nlags=lags, adjusted=True) + obtained_exog_coint = results_sm_exog_coint[ds][dt].test_whiteness( + nlags=lags, adjusted=True) + # test statistic (adjusted Portmanteau test) + err_msg = build_err_msg(ds, dt, "WHITENESS OF RESIDUALS - " + "TEST STATISTIC (ADJUSTED TEST)") + desired = results_ref[ds][dt]["whiteness"]["test statistic adj."] + assert_allclose(obtained.test_statistic, desired, rtol, atol, False, err_msg) + if exog: + assert_equal(obtained_exog.test_statistic, obtained.test_statistic, "WITH EXOG" + err_msg) + if exog_coint: + assert_equal(obtained_exog_coint.test_statistic, + obtained.test_statistic, "WITH EXOG_COINT" + err_msg) + # p-value (adjusted Portmanteau test) + err_msg = build_err_msg(ds, dt, "WHITENESS OF RESIDUALS - " + "P-VALUE (ADJUSTED TEST)") + desired = results_ref[ds][dt]["whiteness"]["p-value adjusted"] + assert_allclose(obtained.pvalue, desired, rtol, atol, False, err_msg) + # call methods to assure they don't raise exceptions + obtained.summary() + str(obtained) # __str__() + assert_(obtained == obtained_exog) # __eq__() + + +def test_summary(): + if debug_mode: + if "summary" not in to_test: # pragma: no cover + return + else: + print("\n\nSUMMARY", end="") + for ds in datasets: + for dt in ds.dt_s_list: + if debug_mode: + print("\n" + dt_s_tup_to_string(dt) + ": ", end="") + + # see if summary gets printed + results_sm[ds][dt].summary(alpha=0.05) + + exog = (results_sm_exog[ds][dt].exog is not None) + if exog is not None: + results_sm_exog[ds][dt].summary(alpha=0.05) + + exog_coint = (results_sm_exog_coint[ds][dt].exog_coint is not None) + if exog_coint is not None: + results_sm_exog_coint[ds][dt].summary(alpha=0.05) + + +def test_exceptions(): + if debug_mode: + if "exceptions" not in to_test: # pragma: no cover + return + else: + print("\n\nEXCEPTIONS\n", end="") + ds = datasets[0] + dt = ds.dt_s_list[0] + endog = data[datasets[0]] + + # select_coint_rank: + # method argument cannot be "my_method" + assert_raises(ValueError, select_coint_rank, endog, 0, 3, "my_method", 0.05) + # det_order has to be -1, 0, or 1: + assert_raises(ValueError, select_coint_rank, endog, 2, 3) + assert_raises(ValueError, select_coint_rank, endog, 0.5, 3) + # 0.025 is not possible (must be 0.1, 0.05, or 0.01) + assert_raises(ValueError, select_coint_rank, endog, 0, 3, "trace", 0.025) + + # Granger_causality: + # ### 0 0: + assert_equal(r_1[0], r_1[1]) + for i in range(rank): + assert_(test_stats[i] > crit_vals[i]) + if rank < neqs: + assert_(test_stats[rank] < crit_vals[rank]) + + maxeig_result = select_coint_rank(endog, 0, 3, method="maxeig", signif=0.1) + rank = maxeig_result.rank + r_1 = maxeig_result.r_1 + test_stats = maxeig_result.test_stats + crit_vals = maxeig_result.crit_vals + if maxeig_result.rank > 0: + assert_equal(r_1[0], r_1[1] - 1) + for i in range(rank): + assert_(test_stats[i] > crit_vals[i]) + if rank < neqs: + assert_(test_stats[rank] < crit_vals[rank]) + + +def test_VECM_seasonal_forecast(): + # timing of seasonal dummies, VAR forecast horizon + np.random.seed(964255) + nobs = 200 + seasons = 6 + fact = np.cumsum(0.1 + np.random.randn(nobs, 2),0) + + xx = np.random.randn(nobs+2, 3) + xx = xx[2:] + 0.6 * xx[1:-1] + 0.25 * xx[:-2] + xx[:,:2] += fact[:,0][:,None] + xx[:,2:] += fact[:,1][:,None] + # add large seasonal effect + xx += 3 * np.log(0.1 + (np.arange(nobs)[:, None] % seasons)) + + res0 = VECM(xx, k_ar_diff=0, coint_rank=2, deterministic='co', seasons=seasons, first_season=0).fit() + res2 = VECM(xx, k_ar_diff=2, coint_rank=2, deterministic='co', seasons=seasons, first_season=0).fit() + res4 = VECM(xx, k_ar_diff=4, coint_rank=2, deterministic='co', seasons=seasons, first_season=0).fit() + + # check that seasonal dummy are independent of number of lags + assert_allclose(res2._delta_x.T[-2 * seasons:, -seasons:], + res0._delta_x.T[-2 * seasons:, -seasons:], rtol=1e-10) + assert_allclose(res4._delta_x.T[-2 * seasons:, -seasons:], + res0._delta_x.T[-2 * seasons:, -seasons:], rtol=1e-10) + + # check location of smallest seasonal coefficient + assert_array_equal(np.argmin(res0.det_coef, axis=1), [1, 1, 1]) + assert_array_equal(np.argmin(res2.det_coef, axis=1), [1, 1, 1]) + assert_array_equal(np.argmin(res4.det_coef, axis=1), [1, 1, 1]) + + # predict 3 cycles, check location of dips + dips_true = np.array([[ 4, 4, 4], + [10, 10, 10], + [16, 16, 16]]) + for res in [res0, res2, res4]: + forecast = res.predict(steps=3*seasons) + dips = np.sort(np.argsort(forecast, axis=0)[:3], axis=0) + assert_array_equal(dips, dips_true) + + # res2.plot_forecast(steps=18, alpha=0.1, n_last_obs=4*seasons) diff --git a/statsmodels/tsa/vector_ar/tests/var.R b/statsmodels/tsa/vector_ar/tests/var.R new file mode 100644 index 0000000..486f050 --- /dev/null +++ b/statsmodels/tsa/vector_ar/tests/var.R @@ -0,0 +1,97 @@ +library(vars) + +data <- read.csv('/home/wesm/code/statsmodels/scikits/statsmodels/datasets/macrodata/macrodata.csv') +names <- colnames(data) +data <- log(data[c('realgdp', 'realcons', 'realinv')]) +data <- sapply(data, diff) + +reorder.coefs <- function(coefs) { + n <- dim(coefs)[1] + # put constant first... + coefs[c(n, seq(1:(n-1))),] +} + +extract.mat <- function(lst, i) { + sapply(lst, function(x) x[,i]) +} + +get.coefs <- function(est) { + reorder.coefs(extract.mat(coef(est), 1)) +} + +get.stderr <- function(est) { + reorder.coefs(extract.mat(coef(est), 2)) +} + +reorder.phi <- function(phis) { + # Puts things in more proper C order for comparison purposes in Python + + k <- dim(phis)[1] + n <- dim(phis)[3] + + arr <- array(dim=c(n, k, k)) + + for (i in 1:n) + arr[i,,] <- phis[,,i] + + arr +} + +causality.matrix <- function(est) { + names <- colnames(est$y) + K <- est$K + + # p-values + result <- matrix(0, nrow=K, ncol=) + for (i in 1:K) { + ## # causes + ## result[i,1] <- causality(est, cause=names[i])$Granger$p.value + + # caused by others + result[i,1] <- causality(est, cause=names[-i])$Granger$p.value + } + + colnames(result) <- c("causedby") + + result +} + +get.results <- function(data, p=1) { + sel <- VARselect(data, p) # do at most p + + est <- VAR(data, p=p) + + K <- ncol(data) + + nirfs <- 5 + orth.irf <- irf(est, n.ahead=nirfs, boot=F)$irf + irf <- irf(est, n.ahead=nirfs, boot=F, orth=F)$irf + + crit <- t(sel$criteria) + colnames(crit) <- c('aic', 'hqic', 'sic', 'fpe') + + resid <- resid(est) + detomega <- det(crossprod(resid) / (est$obs - K * p - 1)) + + n.ahead <- 5 + + list(coefs=get.coefs(est), + stderr=get.stderr(est), + obs=est$obs, + totobs=est$totobs, + type=est$type, + crit=as.list(crit[p,]), + nirfs=nirfs, + orthirf=orth.irf, + irf=irf, + causality=causality.matrix(est), + detomega=detomega, + loglike=as.numeric(logLik(est)), + nahead=n.ahead, + phis=Phi(est, n.ahead)) +} + +k <- dim(data)[2] +result <- get.results(data, p=2) + +est = VAR(data, p=2) diff --git a/statsmodels/tsa/vector_ar/util.py b/statsmodels/tsa/vector_ar/util.py new file mode 100644 index 0000000..73e6a6c --- /dev/null +++ b/statsmodels/tsa/vector_ar/util.py @@ -0,0 +1,324 @@ +# -*- coding: utf-8 -*- +""" +Miscellaneous utility code for VAR estimation +""" +from __future__ import division + +from statsmodels.compat.python import range, string_types, asbytes, long +from statsmodels.compat.pandas import frequencies +import numpy as np +import scipy.stats as stats +import scipy.linalg.decomp as decomp +import pandas as pd + +import statsmodels.tsa.tsatools as tsa + + +#------------------------------------------------------------------------------- +# Auxiliary functions for estimation + +def get_var_endog(y, lags, trend='c', has_constant='skip'): + """ + Make predictor matrix for VAR(p) process + + Z := (Z_0, ..., Z_T).T (T x Kp) + Z_t = [1 y_t y_{t-1} ... y_{t - p + 1}] (Kp x 1) + + Ref: Lütkepohl p.70 (transposed) + + has_constant can be 'raise', 'add', or 'skip'. See add_constant. + """ + nobs = len(y) + # Ravel C order, need to put in descending order + Z = np.array([y[t-lags : t][::-1].ravel() for t in range(lags, nobs)]) + + # Add constant, trend, etc. + if trend != 'nc': + Z = tsa.add_trend(Z, prepend=True, trend=trend, + has_constant=has_constant) + + return Z + + +def get_trendorder(trend='c'): + # Handle constant, etc. + if trend == 'c': + trendorder = 1 + elif trend == 'nc': + trendorder = 0 + elif trend == 'ct': + trendorder = 2 + elif trend == 'ctt': + trendorder = 3 + return trendorder + + +def make_lag_names(names, lag_order, trendorder=1, exog=None): + """ + Produce list of lag-variable names. Constant / trends go at the beginning + + Examples + -------- + >>> make_lag_names(['foo', 'bar'], 2, 1) + ['const', 'L1.foo', 'L1.bar', 'L2.foo', 'L2.bar'] + + """ + lag_names = [] + if isinstance(names, string_types): + names = [names] + + # take care of lagged endogenous names + for i in range(1, lag_order + 1): + for name in names: + if not isinstance(name, string_types): + name = str(name) # will need consistent unicode handling + lag_names.append('L'+str(i)+'.'+name) + + # handle the constant name + if trendorder != 0: + lag_names.insert(0, 'const') + if trendorder > 1: + lag_names.insert(1, 'trend') + if trendorder > 2: + lag_names.insert(2, 'trend**2') + if exog is not None: + for i in range(exog.shape[1]): + lag_names.insert(trendorder + i, "exog" + str(i)) + return lag_names + + +def comp_matrix(coefs): + """ + Return compansion matrix for the VAR(1) representation for a VAR(p) process + (companion form) + + A = [A_1 A_2 ... A_p-1 A_p + I_K 0 0 0 + 0 I_K ... 0 0 + 0 ... I_K 0] + """ + p, k1, k2 = coefs.shape + if k1 != k2: + raise ValueError('coefs must be 3-d with shape (p, k, k).') + + kp = k1 * p + + result = np.zeros((kp, kp)) + result[:k1] = np.concatenate(coefs, axis=1) + + # Set I_K matrices + if p > 1: + result[np.arange(k1, kp), np.arange(kp-k1)] = 1 + + return result + +#------------------------------------------------------------------------------- +# Miscellaneous stuff + + +def parse_lutkepohl_data(path): # pragma: no cover + """ + Parse data files from Lütkepohl (2005) book + + Source for data files: www.jmulti.de + """ + + from collections import deque + from datetime import datetime + import re + + regex = re.compile(asbytes(r'<(.*) (\w)([\d]+)>.*')) + with open(path, 'rb') as f: + lines = deque(f) + + to_skip = 0 + while asbytes('*/') not in lines.popleft(): + #while '*/' not in lines.popleft(): + to_skip += 1 + + while True: + to_skip += 1 + line = lines.popleft() + m = regex.match(line) + if m: + year, freq, start_point = m.groups() + break + + data = (pd.read_csv(path, delimiter=r"\s+", header=to_skip+1) + .to_records(index=False)) + + n = len(data) + + # generate the corresponding date range (using pandas for now) + start_point = int(start_point) + year = int(year) + + offsets = { + asbytes('Q'): frequencies.BQuarterEnd(), + asbytes('M'): frequencies.BMonthEnd(), + asbytes('A'): frequencies.BYearEnd() + } + + # create an instance + offset = offsets[freq] + + inc = offset * (start_point - 1) + start_date = offset.rollforward(datetime(year, 1, 1)) + inc + + offset = offsets[freq] + date_range = pd.date_range(start=start_date, freq=offset, periods=n) + + return data, date_range + + +def norm_signif_level(alpha=0.05): + return stats.norm.ppf(1 - alpha / 2) + + +def acf_to_acorr(acf): + diag = np.diag(acf[0]) + # numpy broadcasting sufficient + return acf / np.sqrt(np.outer(diag, diag)) + + +def varsim(coefs, intercept, sig_u, steps=100, initvalues=None, seed=None): + """ + Simulate VAR(p) process, given coefficients and assuming Gaussian noise + + Parameters + ---------- + coefs : ndarray + Coefficients for the VAR lags of endog. + intercept : None or ndarray 1-D (neqs,) or (steps, neqs) + This can be either the intercept for each equation or an offset. + If None, then the VAR process has a zero intercept. + If intercept is 1-D, then the same (endog specific) intercept is added + to all observations. + If intercept is 2-D, then it is treated as an offset and is added as + an observation specific intercept to the autoregression. In this case, + the intercept/offset should have same number of rows as steps, and the + same number of columns as endogenous variables (neqs). + sig_u : ndarray + Covariance matrix of the residuals or innovations. + If sig_u is None, then an identity matrix is used. + steps : None or int + number of observations to simulate, this includes the initial + observations to start the autoregressive process. + If offset is not None, then exog of the model are used if they were + provided in the model + seed : None or integer + If seed is not None, then it will be used with for the random + variables generated by numpy.random. + + Returns + ------- + endog_simulated : nd_array + Endog of the simulated VAR process + + """ + rs = np.random.RandomState(seed=seed) + rmvnorm = rs.multivariate_normal + p, k, k = coefs.shape + if sig_u is None: + sig_u = np.eye(k) + ugen = rmvnorm(np.zeros(len(sig_u)), sig_u, steps) + result = np.zeros((steps, k)) + if intercept is not None: + # intercept can be 2-D like an offset variable + if np.ndim(intercept) > 1: + if not len(intercept) == len(ugen): + raise ValueError('2-D intercept needs to have length `steps`') + # add intercept/offset also to intial values + result += intercept + result[p:] += ugen[p:] + else: + result[p:] = ugen[p:] + + # add in AR terms + for t in range(p, steps): + ygen = result[t] + for j in range(p): + ygen += np.dot(coefs[j], result[t-j-1]) + + return result + + +def get_index(lst, name): + try: + result = lst.index(name) + except Exception: + if not isinstance(name, (int, long)): + raise + result = name + return result + + +#method used repeatedly in Sims-Zha error bands +def eigval_decomp(sym_array): + """ + Returns + ------- + W: array of eigenvectors + eigva: list of eigenvalues + k: largest eigenvector + """ + #check if symmetric, do not include shock period + eigva, W = decomp.eig(sym_array, left=True, right=False) + k = np.argmax(eigva) + return W, eigva, k + + +def vech(A): + """ + Simple vech operator + Returns + ------- + vechvec: vector of all elements on and below diagonal + """ + + length=A.shape[1] + vechvec=[] + for i in range(length): + b=i + while b < length: + vechvec.append(A[b,i]) + b=b+1 + vechvec=np.asarray(vechvec) + return vechvec + + +def seasonal_dummies(n_seasons, len_endog, first_period=0, centered=False): + """ + + Parameters + ---------- + n_seasons : int >= 0 + Number of seasons (e.g. 12 for monthly data and 4 for quarterly data). + len_endog : int >= 0 + Total number of observations. + first_period : int, default: 0 + Season of the first observation. As an example, suppose we have monthly + data and the first observation is in March (third month of the year). + In this case we pass 2 as first_period. (0 for the first season, + 1 for the second, ..., n_seasons-1 for the last season). + An integer greater than n_seasons-1 are treated in the same way as the + integer modulo n_seasons. + centered : bool, default: False + If True, center (demean) the dummy variables. That is useful in order + to get seasonal dummies that are orthogonal to the vector of constant + dummy variables (a vector of ones). + + Returns + ------- + seasonal_dummies : ndarray (len_endog x n_seasons-1) + """ + if n_seasons == 0: + return np.empty((len_endog, 0)) + if n_seasons > 0: + season_exog = np.zeros((len_endog, n_seasons - 1)) + for i in range(n_seasons - 1): + season_exog[(i-first_period) % n_seasons::n_seasons, i] = 1 + + if centered: + season_exog -= 1 / n_seasons + return season_exog diff --git a/statsmodels/tsa/vector_ar/var_model.py b/statsmodels/tsa/vector_ar/var_model.py new file mode 100644 index 0000000..c304333 --- /dev/null +++ b/statsmodels/tsa/vector_ar/var_model.py @@ -0,0 +1,2322 @@ +# -*- coding: utf-8 -*- +""" +Vector Autoregression (VAR) processes + +References +---------- +Lütkepohl (2005) New Introduction to Multiple Time Series Analysis +""" + +from __future__ import division, print_function +from statsmodels.compat.python import (range, lrange, string_types, + StringIO, iteritems) +from statsmodels.compat.pandas import deprecate_kwarg +from collections import defaultdict + +import numpy as np +import scipy.stats as stats +import scipy.linalg + +from statsmodels.iolib.table import SimpleTable +from statsmodels.tools.decorators import cache_readonly, deprecated_alias +from statsmodels.tools.sm_exceptions import OutputWarning +from statsmodels.tools.tools import chain_dot +from statsmodels.tools.linalg import logdet_symm +from statsmodels.tsa.tsatools import vec, unvec, duplication_matrix +from statsmodels.tsa.vector_ar.hypothesis_test_results import \ + CausalityTestResults, NormalityTestResults, WhitenessTestResults + +from statsmodels.tsa.vector_ar.irf import IRAnalysis +from statsmodels.tsa.vector_ar.output import VARSummary + +import statsmodels.tsa.tsatools as tsa +from statsmodels.tsa.vector_ar import output, plotting, util +import statsmodels.tsa.base.tsa_model as tsbase +import statsmodels.base.wrapper as wrap + + +# ------------------------------------------------------------------------------- +# VAR process routines + +def ma_rep(coefs, maxn=10): + r""" + MA(\infty) representation of VAR(p) process + + Parameters + ---------- + coefs : ndarray (p x k x k) + maxn : int + Number of MA matrices to compute + + Notes + ----- + VAR(p) process as + + .. math:: y_t = A_1 y_{t-1} + \ldots + A_p y_{t-p} + u_t + + can be equivalently represented as + + .. math:: y_t = \mu + \sum_{i=0}^\infty \Phi_i u_{t-i} + + e.g. can recursively compute the \Phi_i matrices with \Phi_0 = I_k + + Returns + ------- + phis : ndarray (maxn + 1 x k x k) + """ + p, k, k = coefs.shape + phis = np.zeros((maxn+1, k, k)) + phis[0] = np.eye(k) + + # recursively compute Phi matrices + for i in range(1, maxn + 1): + for j in range(1, i+1): + if j > p: + break + + phis[i] += np.dot(phis[i-j], coefs[j-1]) + + return phis + + +def is_stable(coefs, verbose=False): + """ + Determine stability of VAR(p) system by examining the eigenvalues of the + VAR(1) representation + + Parameters + ---------- + coefs : ndarray (p x k x k) + + Returns + ------- + is_stable : bool + """ + A_var1 = util.comp_matrix(coefs) + eigs = np.linalg.eigvals(A_var1) + + if verbose: + print('Eigenvalues of VAR(1) rep') + for val in np.abs(eigs): + print(val) + + return (np.abs(eigs) <= 1).all() + + +def var_acf(coefs, sig_u, nlags=None): + """ + Compute autocovariance function ACF_y(h) up to nlags of stable VAR(p) + process + + Parameters + ---------- + coefs : ndarray (p x k x k) + Coefficient matrices A_i + sig_u : ndarray (k x k) + Covariance of white noise process u_t + nlags : int, optional + Defaults to order p of system + + Notes + ----- + Ref: Lütkepohl p.28-29 + + Returns + ------- + acf : ndarray, (p, k, k) + """ + p, k, _ = coefs.shape + if nlags is None: + nlags = p + + # p x k x k, ACF for lags 0, ..., p-1 + result = np.zeros((nlags + 1, k, k)) + result[:p] = _var_acf(coefs, sig_u) + + # yule-walker equations + for h in range(p, nlags + 1): + # compute ACF for lag=h + # G(h) = A_1 G(h-1) + ... + A_p G(h-p) + + for j in range(p): + result[h] += np.dot(coefs[j], result[h-j-1]) + + return result + + +def _var_acf(coefs, sig_u): + """ + Compute autocovariance function ACF_y(h) for h=1,...,p + + Notes + ----- + Lütkepohl (2005) p.29 + """ + p, k, k2 = coefs.shape + assert(k == k2) + + A = util.comp_matrix(coefs) + # construct VAR(1) noise covariance + SigU = np.zeros((k*p, k*p)) + SigU[:k, :k] = sig_u + + # vec(ACF) = (I_(kp)^2 - kron(A, A))^-1 vec(Sigma_U) + vecACF = scipy.linalg.solve(np.eye((k*p)**2) - np.kron(A, A), vec(SigU)) + + acf = unvec(vecACF) + acf = [acf[:k, k * i:k * (i + 1)] for i in range(p)] + acf = np.array(acf) + + return acf + + +def forecast_cov(ma_coefs, sigma_u, steps): + r""" + Compute theoretical forecast error variance matrices + + Parameters + ---------- + steps : int + Number of steps ahead + + Notes + ----- + .. math:: \mathrm{MSE}(h) = \sum_{i=0}^{h-1} \Phi \Sigma_u \Phi^T + + Returns + ------- + forc_covs : ndarray (steps x neqs x neqs) + """ + neqs = len(sigma_u) + forc_covs = np.zeros((steps, neqs, neqs)) + + prior = np.zeros((neqs, neqs)) + for h in range(steps): + # Sigma(h) = Sigma(h-1) + Phi Sig_u Phi' + phi = ma_coefs[h] + var = chain_dot(phi, sigma_u, phi.T) + forc_covs[h] = prior = prior + var + + return forc_covs + + +mse = forecast_cov + + +def forecast(y, coefs, trend_coefs, steps, exog=None): + """ + Produce linear minimum MSE forecast + + Parameters + ---------- + y : ndarray (k_ar x neqs) + coefs : ndarray (k_ar x neqs x neqs) + trend_coefs : ndarray (1 x neqs) or (neqs) + steps : int + exog : ndarray (trend_coefs.shape[1] x neqs) + + Returns + ------- + forecasts : ndarray (steps x neqs) + + Notes + ----- + Lütkepohl p. 37 + + Also used by DynamicVAR class + """ + p = len(coefs) + k = len(coefs[0]) + # initial value + forcs = np.zeros((steps, k)) + if exog is not None and trend_coefs is not None: + forcs += np.dot(exog, trend_coefs) + # to make existing code (with trend_coefs=intercept and without exog) work: + elif exog is None and trend_coefs is not None: + forcs += trend_coefs + + # h=0 forecast should be latest observation + # forcs[0] = y[-1] + + # make indices easier to think about + for h in range(1, steps + 1): + # y_t(h) = intercept + sum_1^p A_i y_t_(h-i) + f = forcs[h - 1] + for i in range(1, p + 1): + # slightly hackish + if h - i <= 0: + # e.g. when h=1, h-1 = 0, which is y[-1] + prior_y = y[h - i - 1] + else: + # e.g. when h=2, h-1=1, which is forcs[0] + prior_y = forcs[h - i - 1] + + # i=1 is coefs[0] + f = f + np.dot(coefs[i - 1], prior_y) + + forcs[h - 1] = f + + return forcs + + +def _forecast_vars(steps, ma_coefs, sig_u): + """_forecast_vars function used by VECMResults. Note that the definition + of the local variable covs is the same as in VARProcess and as such it + differs from the one in VARResults! + + Parameters + ---------- + steps + ma_coefs + sig_u + + Returns + ------- + + """ + covs = mse(ma_coefs, sig_u, steps) + # Take diagonal for each cov + neqs = len(sig_u) + inds = np.arange(neqs) + return covs[:, inds, inds] + + +def forecast_interval(y, coefs, trend_coefs, sig_u, steps=5, alpha=0.05, + exog=1): + assert(0 < alpha < 1) + q = util.norm_signif_level(alpha) + + point_forecast = forecast(y, coefs, trend_coefs, steps, exog) + ma_coefs = ma_rep(coefs, steps) + sigma = np.sqrt(_forecast_vars(steps, ma_coefs, sig_u)) + + forc_lower = point_forecast - q * sigma + forc_upper = point_forecast + q * sigma + + return point_forecast, forc_lower, forc_upper + + +def var_loglike(resid, omega, nobs): + r""" + Returns the value of the VAR(p) log-likelihood. + + Parameters + ---------- + resid : ndarray (T x K) + omega : ndarray + Sigma hat matrix. Each element i,j is the average product of the + OLS residual for variable i and the OLS residual for variable j or + np.dot(resid.T,resid)/nobs. There should be no correction for the + degrees of freedom. + nobs : int + + Returns + ------- + llf : float + The value of the loglikelihood function for a VAR(p) model + + Notes + ----- + The loglikelihood function for the VAR(p) is + + .. math:: + + -\left(\frac{T}{2}\right) + \left(\ln\left|\Omega\right|-K\ln\left(2\pi\right)-K\right) + """ + logdet = logdet_symm(np.asarray(omega)) + neqs = len(omega) + part1 = - (nobs * neqs / 2) * np.log(2 * np.pi) + part2 = - (nobs / 2) * (logdet + neqs) + return part1 + part2 + + +def _reordered(self, order): + # Create new arrays to hold rearranged results from .fit() + endog = self.endog + endog_lagged = self.endog_lagged + params = self.params + sigma_u = self.sigma_u + names = self.names + k_ar = self.k_ar + endog_new = np.zeros([np.size(endog, 0), np.size(endog, 1)]) + endog_lagged_new = np.zeros([np.size(endog_lagged, 0), np.size(endog_lagged, 1)]) + params_new_inc, params_new = [np.zeros([np.size(params, 0), np.size(params, 1)]) + for i in range(2)] + sigma_u_new_inc, sigma_u_new = [np.zeros([np.size(sigma_u, 0), np.size(sigma_u, 1)]) + for i in range(2)] + num_end = len(self.params[0]) + names_new = [] + + # Rearrange elements and fill in new arrays + k = self.k_trend + for i, c in enumerate(order): + endog_new[:, i] = self.endog[:, c] + if k > 0: + params_new_inc[0, i] = params[0, i] + endog_lagged_new[:, 0] = endog_lagged[:, 0] + for j in range(k_ar): + params_new_inc[i+j*num_end+k, :] = self.params[c+j*num_end+k, :] + endog_lagged_new[:, i+j*num_end+k] = endog_lagged[:, c+j*num_end+k] + sigma_u_new_inc[i, :] = sigma_u[c, :] + names_new.append(names[c]) + for i, c in enumerate(order): + params_new[:, i] = params_new_inc[:, c] + sigma_u_new[:, i] = sigma_u_new_inc[:, c] + + return VARResults(endog=endog_new, endog_lagged=endog_lagged_new, + params=params_new, sigma_u=sigma_u_new, + lag_order=self.k_ar, model=self.model, + trend='c', names=names_new, dates=self.dates) + + +def orth_ma_rep(results, maxn=10, P=None): + r"""Compute Orthogonalized MA coefficient matrices using P matrix such + that :math:`\Sigma_u = PP^\prime`. P defaults to the Cholesky + decomposition of :math:`\Sigma_u` + + Parameters + ---------- + results : VARResults or VECMResults + maxn : int + Number of coefficient matrices to compute + P : ndarray (neqs x neqs), optional + Matrix such that Sigma_u = PP', defaults to the Cholesky decomposition. + + Returns + ------- + coefs : ndarray (maxn x neqs x neqs) + """ + if P is None: + P = results._chol_sigma_u + + ma_mats = results.ma_rep(maxn=maxn) + return np.array([np.dot(coefs, P) for coefs in ma_mats]) + + +def test_normality(results, signif=0.05): + """ + Test assumption of normal-distributed errors using Jarque-Bera-style + omnibus Chi^2 test + + Parameters + ---------- + results : VARResults or statsmodels.tsa.vecm.vecm.VECMResults + signif : float + The test's significance level. + + Notes + ----- + H0 (null) : data are generated by a Gaussian-distributed process + + Returns + ------- + result : NormalityTestResults + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + + .. [2] Kilian, L. & Demiroglu, U. (2000). "Residual-Based Tests for + Normality in Autoregressions: Asymptotic Theory and Simulation + Evidence." Journal of Business & Economic Statistics + """ + resid_c = results.resid - results.resid.mean(0) + sig = np.dot(resid_c.T, resid_c) / results.nobs + Pinv = np.linalg.inv(np.linalg.cholesky(sig)) + + w = np.dot(Pinv, resid_c.T) + b1 = (w**3).sum(1)[:, None] / results.nobs + b2 = (w**4).sum(1)[:, None] / results.nobs - 3 + + lam_skew = results.nobs * np.dot(b1.T, b1) / 6 + lam_kurt = results.nobs * np.dot(b2.T, b2) / 24 + + lam_omni = float(lam_skew + lam_kurt) + omni_dist = stats.chi2(results.neqs * 2) + omni_pvalue = float(omni_dist.sf(lam_omni)) + crit_omni = float(omni_dist.ppf(1 - signif)) + + return NormalityTestResults(lam_omni, crit_omni, omni_pvalue, + results.neqs*2, signif) + + +class LagOrderResults: + """ + Results class for choosing a model's lag order. + + Parameters + ---------- + ics : dict + The keys are the strings ``"aic"``, ``"bic"``, ``"hqic"``, and + ``"fpe"``. A corresponding value is a list of information criteria for + various numbers of lags. + selected_orders: dict + The keys are the strings ``"aic"``, ``"bic"``, ``"hqic"``, and + ``"fpe"``. The corresponding value is an integer specifying the number + of lags chosen according to a given criterion (key). + vecm : bool, default: `False` + `True` indicates that the model is a VECM. In case of a VAR model + this argument must be `False`. + + Notes + ----- + In case of a VECM the shown lags are lagged differences. + """ + def __init__(self, ics, selected_orders, vecm=False): + self.title = ("VECM" if vecm else "VAR") + " Order Selection" + self.title += " (* highlights the minimums)" + self.ics = ics + self.selected_orders = selected_orders + self.vecm = vecm + self.aic = selected_orders["aic"] + self.bic = selected_orders["bic"] + self.hqic = selected_orders["hqic"] + self.fpe = selected_orders["fpe"] + + def summary(self): # basically copied from (now deleted) print_ic_table() + cols = sorted(self.ics) # ["aic", "bic", "hqic", "fpe"] + str_data = np.array([["%#10.4g" % v for v in self.ics[c]] for c in cols], + dtype=object).T + # mark minimum with an asterisk + for i, col in enumerate(cols): + idx = int(self.selected_orders[col]), i + str_data[idx] += '*' + return SimpleTable(str_data, [col.upper() for col in cols], + lrange(len(str_data)), title=self.title) + + def __str__(self): + return "<" + self.__module__ + "." + self.__class__.__name__ \ + + " object. Selected orders are: AIC -> " + str(self.aic) \ + + ", BIC -> " + str(self.bic) \ + + ", FPE -> " + str(self.fpe) \ + + ", HQIC -> " + str(self.hqic) + ">" + +# ------------------------------------------------------------------------------- +# VARProcess class: for known or unknown VAR process + + +class VAR(tsbase.TimeSeriesModel): + r""" + Fit VAR(p) process and do lag order selection + + .. math:: y_t = A_1 y_{t-1} + \ldots + A_p y_{t-p} + u_t + + Parameters + ---------- + endog : array-like + 2-d endogenous response variable. The independent variable. + exog : array-like + 2-d exogenous variable. + dates : array-like + must match number of rows of endog + + References + ---------- + Lütkepohl (2005) New Introduction to Multiple Time Series Analysis + """ + + y = deprecated_alias("y", "endog", remove_version="0.11.0") + + def __init__(self, endog, exog=None, dates=None, freq=None, + missing='none'): + super(VAR, self).__init__(endog, exog, dates, freq, missing=missing) + if self.endog.ndim == 1: + raise ValueError("Only gave one variable to VAR") + self.neqs = self.endog.shape[1] + self.n_totobs = len(endog) + + def predict(self, params, start=None, end=None, lags=1, trend='c'): + """ + Returns in-sample predictions or forecasts + """ + params = np.array(params) + + if start is None: + start = lags + + # Handle start, end + start, end, out_of_sample, prediction_index = ( + self._get_prediction_index(start, end)) + + if end < start: + raise ValueError("end is before start") + if end == start + out_of_sample: + return np.array([]) + + k_trend = util.get_trendorder(trend) + k = self.neqs + k_ar = lags + + predictedvalues = np.zeros((end + 1 - start + out_of_sample, k)) + if k_trend != 0: + intercept = params[:k_trend] + predictedvalues += intercept + + y = self.endog + x = util.get_var_endog(y, lags, trend=trend, has_constant='raise') + fittedvalues = np.dot(x, params) + + fv_start = start - k_ar + pv_end = min(len(predictedvalues), len(fittedvalues) - fv_start) + fv_end = min(len(fittedvalues), end - k_ar + 1) + predictedvalues[:pv_end] = fittedvalues[fv_start:fv_end] + + if not out_of_sample: + return predictedvalues + + # fit out of sample + y = y[-k_ar:] + coefs = params[k_trend:].reshape((k_ar, k, k)).swapaxes(1, 2) + predictedvalues[pv_end:] = forecast(y, coefs, intercept, out_of_sample) + return predictedvalues + + def fit(self, maxlags=None, method='ols', ic=None, trend='c', + verbose=False): + # todo: this code is only supporting deterministic terms as exog. + # This means that all exog-variables have lag 0. If dealing with + # different exogs is necessary, a `lags_exog`-parameter might make + # sense (e.g. a sequence of ints specifying lags). + # Alternatively, leading zeros for exog-variables with smaller number + # of lags than the maximum number of exog-lags might work. + """ + Fit the VAR model + + Parameters + ---------- + maxlags : int + Maximum number of lags to check for order selection, defaults to + 12 * (nobs/100.)**(1./4), see select_order function + method : {'ols'} + Estimation method to use + ic : {'aic', 'fpe', 'hqic', 'bic', None} + Information criterion to use for VAR order selection. + aic : Akaike + fpe : Final prediction error + hqic : Hannan-Quinn + bic : Bayesian a.k.a. Schwarz + verbose : bool, default False + Print order selection output to the screen + trend : str {"c", "ct", "ctt", "nc"} + "c" - add constant + "ct" - constant and trend + "ctt" - constant, linear and quadratic trend + "nc" - co constant, no trend + Note that these are prepended to the columns of the dataset. + + Notes + ----- + Lütkepohl pp. 146-153 + + Returns + ------- + est : VARResultsWrapper + """ + lags = maxlags + + if trend not in ['c', 'ct', 'ctt', 'nc']: + raise ValueError("trend '{}' not supported for VAR".format(trend)) + + if ic is not None: + selections = self.select_order(maxlags=maxlags) + if not hasattr(selections, ic): + raise ValueError("%s not recognized, must be among %s" + % (ic, sorted(selections))) + lags = getattr(selections, ic) + if verbose: + print(selections) + print('Using %d based on %s criterion' % (lags, ic)) + else: + if lags is None: + lags = 1 + + k_trend = util.get_trendorder(trend) + self.exog_names = util.make_lag_names(self.endog_names, lags, k_trend) + self.nobs = self.n_totobs - lags + + # add exog to data.xnames (necessary because the length of xnames also + # determines the allowed size of VARResults.params) + if self.exog is not None: + x_names_to_add = [("exog%d" % i) + for i in range(self.exog.shape[1])] + self.data.xnames = (self.data.xnames[:k_trend] + + x_names_to_add + + self.data.xnames[k_trend:]) + + return self._estimate_var(lags, trend=trend) + + def _estimate_var(self, lags, offset=0, trend='c'): + """ + lags : int + Lags of the endogenous variable. + offset : int + Periods to drop from beginning-- for order selection so it's an + apples-to-apples comparison + trend : string or None + As per above + """ + # have to do this again because select_order doesn't call fit + self.k_trend = k_trend = util.get_trendorder(trend) + + if offset < 0: # pragma: no cover + raise ValueError('offset must be >= 0') + + nobs = self.n_totobs - lags - offset + endog = self.endog[offset:] + exog = None if self.exog is None else self.exog[offset:] + z = util.get_var_endog(endog, lags, trend=trend, + has_constant='raise') + if exog is not None: + # TODO: currently only deterministic terms supported (exoglags==0) + # and since exoglags==0, x will be an array of size 0. + x = util.get_var_endog(exog[-nobs:], 0, trend="nc", + has_constant="raise") + x_inst = exog[-nobs:] + x = np.column_stack((x, x_inst)) + del x_inst # free memory + temp_z = z + z = np.empty((x.shape[0], x.shape[1]+z.shape[1])) + z[:, :self.k_trend] = temp_z[:, :self.k_trend] + z[:, self.k_trend:self.k_trend+x.shape[1]] = x + z[:, self.k_trend+x.shape[1]:] = temp_z[:, self.k_trend:] + del temp_z, x # free memory + # the following modification of z is necessary to get the same results + # as JMulTi for the constant-term-parameter... + for i in range(self.k_trend): + if (np.diff(z[:, i]) == 1).all(): # modify the trend-column + z[:, i] += lags + # make the same adjustment for the quadratic term + if (np.diff(np.sqrt(z[:, i])) == 1).all(): + z[:, i] = (np.sqrt(z[:, i]) + lags)**2 + + y_sample = endog[lags:] + # Lütkepohl p75, about 5x faster than stated formula + params = np.linalg.lstsq(z, y_sample, rcond=1e-15)[0] + resid = y_sample - np.dot(z, params) + + # Unbiased estimate of covariance matrix $\Sigma_u$ of the white noise + # process $u$ + # equivalent definition + # .. math:: \frac{1}{T - Kp - 1} Y^\prime (I_T - Z (Z^\prime Z)^{-1} + # Z^\prime) Y + # Ref: Lütkepohl p.75 + # df_resid right now is T - Kp - 1, which is a suggested correction + + avobs = len(y_sample) + if exog is not None: + k_trend += exog.shape[1] + df_resid = avobs - (self.neqs * lags + k_trend) + + sse = np.dot(resid.T, resid) + omega = sse / df_resid + + varfit = VARResults(endog, z, params, omega, lags, + names=self.endog_names, trend=trend, + dates=self.data.dates, model=self, exog=self.exog) + return VARResultsWrapper(varfit) + + def select_order(self, maxlags=None, trend="c"): + """ + Compute lag order selections based on each of the available information + criteria + + Parameters + ---------- + maxlags : int + if None, defaults to 12 * (nobs/100.)**(1./4) + trend : str {"nc", "c", "ct", "ctt"} + * "nc" - no deterministic terms + * "c" - constant term + * "ct" - constant and linear term + * "ctt" - constant, linear, and quadratic term + + Returns + ------- + selections : LagOrderResults + """ + if maxlags is None: + maxlags = int(round(12*(len(self.endog)/100.)**(1/4.))) + # TODO: This expression shows up in a bunch of places, but + # in some it is `int` and in others `np.ceil`. Also in some + # it multiplies by 4 instead of 12. Let's put these all in + # one place and document when to use which variant. + + ics = defaultdict(list) + p_min = 0 if self.exog is not None or trend != "nc" else 1 + for p in range(p_min, maxlags + 1): + # exclude some periods to same amount of data used for each lag + # order + result = self._estimate_var(p, offset=maxlags - p, trend=trend) + + for k, v in iteritems(result.info_criteria): + ics[k].append(v) + + selected_orders = dict((k, np.array(v).argmin() + p_min) + for k, v in iteritems(ics)) + + return LagOrderResults(ics, selected_orders, vecm=False) + + +class VARProcess(object): + """ + Class represents a known VAR(p) process + + Parameters + ---------- + coefs : ndarray (p x k x k) + coefficients for lags of endog, part or params reshaped + coefs_exog : ndarray + parameters for trend and user provided exog + sigma_u : ndarray (k x k) + residual covariance + names : sequence (length k) + _params_info : dict + internal dict to provide information about the composition of `params`, + specifically `k_trend` (trend order) and `k_exog_user` (the number of + exog variables provided by the user). + If it is None, then coefs_exog are assumed to be for the intercept and + trend. + + """ + def __init__(self, coefs, coefs_exog, sigma_u, names=None, _params_info=None): + self.k_ar = len(coefs) + self.neqs = coefs.shape[1] + self.coefs = coefs + self.coefs_exog = coefs_exog + # Note reshaping 1-D coefs_exog to 2_D makes unit tests fail + self.sigma_u = sigma_u + self.names = names + + if _params_info is None: + _params_info = {} + self.k_exog_user = _params_info.get('k_exog_user', 0) + if self.coefs_exog is not None: + k_ex = self.coefs_exog.shape[0] if self.coefs_exog.ndim != 1 else 1 + k_c = k_ex - self.k_exog_user + else: + k_c = 0 + self.k_trend = _params_info.get('k_trend', k_c) + # TODO: we need to distinguish exog including trend and exog_user + self.k_exog = self.k_trend + self.k_exog_user + + if self.k_trend > 0: + if coefs_exog.ndim == 2: + self.intercept = coefs_exog[:, 0] + else: + self.intercept = coefs_exog + else: + self.intercept = np.zeros(self.neqs) + + def get_eq_index(self, name): + """Return integer position of requested equation name""" + return util.get_index(self.names, name) + + def __str__(self): + output = ('VAR(%d) process for %d-dimensional response y_t' + % (self.k_ar, self.neqs)) + output += '\nstable: %s' % self.is_stable() + output += '\nmean: %s' % self.mean() + + return output + + def is_stable(self, verbose=False): + """Determine stability based on model coefficients + + Parameters + ---------- + verbose : bool + Print eigenvalues of the VAR(1) companion + + Notes + ----- + Checks if det(I - Az) = 0 for any mod(z) <= 1, so all the eigenvalues of + the companion matrix must lie outside the unit circle + """ + return is_stable(self.coefs, verbose=verbose) + + def simulate_var(self, steps=None, offset=None, seed=None): + """ + simulate the VAR(p) process for the desired number of steps + + Parameters + ---------- + steps : None or int + number of observations to simulate, this includes the initial + observations to start the autoregressive process. + If offset is not None, then exog of the model are used if they were + provided in the model + offset : None or ndarray (steps, neqs) + If not None, then offset is added as an observation specific + intercept to the autoregression. If it is None and either trend + (including intercept) or exog were used in the VAR model, then + the linear predictor of those components will be used as offset. + This should have the same number of rows as steps, and the same + number of columns as endogenous variables (neqs). + seed : None or integer + If seed is not None, then it will be used with for the random + variables generated by numpy.random. + + Returns + ------- + endog_simulated : nd_array + Endog of the simulated VAR process + + """ + steps_ = None + if offset is None: + if self.k_exog_user > 0 or self.k_trend > 1: + # if more than intercept + # endog_lagged contains all regressors, trend, exog_user + # and lagged endog, trimmed initial observations + offset = self.endog_lagged[:,:self.k_exog].dot( + self.coefs_exog.T) + steps_ = self.endog_lagged.shape[0] + else: + offset = self.intercept + else: + steps_ = offset.shape[0] + + # default, but over written if exog or offset are used + if steps is None: + if steps_ is None: + steps = 1000 + else: + steps = steps_ + else: + if steps_ is not None and steps != steps_: + raise ValueError('if exog or offset are used, then steps must' + 'be equal to their length or None') + + y = util.varsim(self.coefs, offset, self.sigma_u, steps=steps, seed=seed) + return y + + def plotsim(self, steps=None, offset=None, seed=None): + """ + Plot a simulation from the VAR(p) process for the desired number of + steps + """ + y = self.simulate_var(steps=steps, offset=offset, seed=seed) + return plotting.plot_mts(y) + + def intercept_longrun(self): + r""" + Long run intercept of stable VAR process + + Lütkepohl eq. 2.1.23 + + .. math:: \mu = (I - A_1 - \dots - A_p)^{-1} \alpha + + where \alpha is the intercept (parameter of the constant) + """ + return np.linalg.solve(self._char_mat, self.intercept) + + def mean(self): + r""" + Long run intercept of stable VAR process + + Warning: trend and exog except for intercept are ignored for this. + This might change in future versions. + + Lütkepohl eq. 2.1.23 + + .. math:: \mu = (I - A_1 - \dots - A_p)^{-1} \alpha + + where \alpha is the intercept (parameter of the constant) + """ + return self.intercept_longrun() + + def ma_rep(self, maxn=10): + r""" + Compute MA(:math:`\infty`) coefficient matrices + + Parameters + ---------- + maxn : int + Number of coefficient matrices to compute + + Returns + ------- + coefs : ndarray (maxn x k x k) + """ + return ma_rep(self.coefs, maxn=maxn) + + def orth_ma_rep(self, maxn=10, P=None): + r""" + Compute orthogonalized MA coefficient matrices using P matrix such + that :math:`\Sigma_u = PP^\prime`. P defaults to the Cholesky + decomposition of :math:`\Sigma_u` + + Parameters + ---------- + maxn : int + Number of coefficient matrices to compute + P : ndarray (k x k), optional + Matrix such that Sigma_u = PP', defaults to Cholesky descomp + + Returns + ------- + coefs : ndarray (maxn x k x k) + """ + return orth_ma_rep(self, maxn, P) + + def long_run_effects(self): + r"""Compute long-run effect of unit impulse + + .. math:: + + \Psi_\infty = \sum_{i=0}^\infty \Phi_i + + """ + return scipy.linalg.inv(self._char_mat) + + @cache_readonly + def _chol_sigma_u(self): + return np.linalg.cholesky(self.sigma_u) + + @cache_readonly + def _char_mat(self): + """Characteristic matrix of the VAR""" + return np.eye(self.neqs) - self.coefs.sum(0) + + def acf(self, nlags=None): + """Compute theoretical autocovariance function + + Returns + ------- + acf : ndarray (p x k x k) + """ + return var_acf(self.coefs, self.sigma_u, nlags=nlags) + + def acorr(self, nlags=None): + """ + Autocorrelation function + + Parameters + ---------- + nlags : int or None + The number of lags to include in the autocovariance function. The + default is the number of lags included in the model. + + Returns + ------- + acorr : ndarray + Autocorrelation and cross correlations (nlags, neqs, neqs) + """ + return util.acf_to_acorr(self.acf(nlags=nlags)) + + def plot_acorr(self, nlags=10, linewidth=8): + """Plot theoretical autocorrelation function""" + fig = plotting.plot_full_acorr(self.acorr(nlags=nlags), + linewidth=linewidth) + return fig + + def forecast(self, y, steps, exog_future=None): + """Produce linear minimum MSE forecasts for desired number of steps + ahead, using prior values y + + Parameters + ---------- + y : ndarray (p x k) + steps : int + + Returns + ------- + forecasts : ndarray (steps x neqs) + + Notes + ----- + Lütkepohl pp 37-38 + """ + if self.exog is None and exog_future is not None: + raise ValueError("No exog in model, so no exog_future supported " + "in forecast method.") + if self.exog is not None and exog_future is None: + raise ValueError("Please provide an exog_future argument to " + "the forecast method.") + trend_coefs = None if self.coefs_exog.size == 0 else self.coefs_exog.T + + exogs = [] + if self.trend.startswith("c"): # constant term + exogs.append(np.ones(steps)) + exog_lin_trend = np.arange(self.n_totobs + 1, + self.n_totobs + 1 + steps) + if "t" in self.trend: + exogs.append(exog_lin_trend) + if "tt" in self.trend: + exogs.append(exog_lin_trend**2) + if exog_future is not None: + exogs.append(exog_future) + + if not exogs: + exog_future = None + else: + exog_future = np.column_stack(exogs) + return forecast(y, self.coefs, trend_coefs, steps, exog_future) + + # TODO: use `mse` module-level function? + def mse(self, steps): + r""" + Compute theoretical forecast error variance matrices + + Parameters + ---------- + steps : int + Number of steps ahead + + Notes + ----- + .. math:: \mathrm{MSE}(h) = \sum_{i=0}^{h-1} \Phi \Sigma_u \Phi^T + + Returns + ------- + forc_covs : ndarray (steps x neqs x neqs) + """ + ma_coefs = self.ma_rep(steps) + + k = len(self.sigma_u) + forc_covs = np.zeros((steps, k, k)) + + prior = np.zeros((k, k)) + for h in range(steps): + # Sigma(h) = Sigma(h-1) + Phi Sig_u Phi' + phi = ma_coefs[h] + var = chain_dot(phi, self.sigma_u, phi.T) + forc_covs[h] = prior = prior + var + + return forc_covs + + forecast_cov = mse + + def _forecast_vars(self, steps): + covs = self.forecast_cov(steps) + + # Take diagonal for each cov + inds = np.arange(self.neqs) + return covs[:, inds, inds] + + def forecast_interval(self, y, steps, alpha=0.05, exog_future=None): + """ + Construct forecast interval estimates assuming the y are Gaussian + + Parameters + ---------- + y : {ndarray, None} + The initial values to use for the forecasts. If None, + the last k_ar values of the original endogenous variables are + used. + steps : int + Number of steps ahead to forecast + alpha : float, optional + The significance level for the confidence intervals. + exog_future : ndarray, optional + Forecast values of the exogenous variables. Should include + constant, trend, etc. as needed, including extrapolating out + of sample. + Returns + ------- + point : ndarray + Mean value of forecast + lower : ndarray + Lower bound of confidence interval + upper : ndarray + Upper bound of confidence interval + + Notes + ----- + Lütkepohl pp. 39-40 + """ + if not 0 < alpha < 1: + raise ValueError('alpha must be between 0 and 1') + q = util.norm_signif_level(alpha) + + point_forecast = self.forecast(y, steps, exog_future=exog_future) + sigma = np.sqrt(self._forecast_vars(steps)) + + forc_lower = point_forecast - q * sigma + forc_upper = point_forecast + q * sigma + + return point_forecast, forc_lower, forc_upper + + def to_vecm(self): + """to_vecm""" + k = self.coefs.shape[1] + p = self.coefs.shape[0] + A = self.coefs + pi = -(np.identity(k) - np.sum(A, 0)) + gamma = np.zeros((p-1, k, k)) + for i in range(p-1): + gamma[i] = -(np.sum(A[i+1:], 0)) + gamma = np.concatenate(gamma, 1) + return {"Gamma": gamma, "Pi": pi} + +# ------------------------------------------------------------------------------- +# VARResults class + + +class VARResults(VARProcess): + """Estimate VAR(p) process with fixed number of lags + + Parameters + ---------- + endog : array + endog_lagged : array + params : array + sigma_u : array + lag_order : int + model : VAR model instance + trend : str {'nc', 'c', 'ct'} + names : array-like + List of names of the endogenous variables in order of appearance in `endog`. + dates + exog : array + + Attributes + ---------- + coefs : ndarray (p x K x K) + Estimated A_i matrices, A_i = coefs[i-1] + dates + endog + endog_lagged + k_ar : int + Order of VAR process + k_trend : int + model + names + neqs : int + Number of variables (equations) + nobs : int + n_totobs : int + params : ndarray (Kp + 1) x K + A_i matrices and intercept in stacked form [int A_1 ... A_p] + names : list + variables names + resid + sigma_u : ndarray (K x K) + Estimate of white noise process variance Var[u_t] + tvalues + y : + ys_lagged + """ + _model_type = 'VAR' + y = deprecated_alias("y", "endog", remove_version="0.11.0") + ys_lagged = deprecated_alias("ys_lagged", "endog_lagged", + remove_version="0.11.0") + + def __init__(self, endog, endog_lagged, params, sigma_u, lag_order, + model=None, trend='c', names=None, dates=None, exog=None): + + self.model = model + self.endog = endog + self.endog_lagged = endog_lagged + self.dates = dates + + self.n_totobs, neqs = self.endog.shape + self.nobs = self.n_totobs - lag_order + self.trend = trend + k_trend = util.get_trendorder(trend) + self.exog_names = util.make_lag_names(names, lag_order, k_trend, exog) + self.params = params + self.exog = exog + + # Initialize VARProcess parent class + # construct coefficient matrices + # Each matrix needs to be transposed + endog_start = k_trend + if exog is not None: + k_exog_user = exog.shape[1] + endog_start += k_exog_user + else: + k_exog_user = 0 + reshaped = self.params[endog_start:] + reshaped = reshaped.reshape((lag_order, neqs, neqs)) + # Need to transpose each coefficient matrix + coefs = reshaped.swapaxes(1, 2).copy() + + self.coefs_exog = params[:endog_start].T + self.k_exog = self.coefs_exog.shape[1] + self.k_exog_user = k_exog_user + + # maybe change to params class, distinguish exog_all versus exog_user + # see issue #4535 + _params_info = {'k_trend': k_trend, + 'k_exog_user': k_exog_user, + 'k_ar': lag_order} + super(VARResults, self).__init__(coefs, self.coefs_exog, sigma_u, + names=names, + _params_info=_params_info) + + def plot(self): + """Plot input time series""" + return plotting.plot_mts(self.endog, names=self.names, + index=self.dates) + + @property + def df_model(self): + """ + Number of estimated parameters, including the intercept / trends + """ + return self.neqs * self.k_ar + self.k_exog + + @property + def df_resid(self): + """Number of observations minus number of estimated parameters""" + return self.nobs - self.df_model + + @cache_readonly + def fittedvalues(self): + """ + The predicted insample values of the response variables of the model. + """ + return np.dot(self.endog_lagged, self.params) + + @cache_readonly + def resid(self): + """ + Residuals of response variable resulting from estimated coefficients + """ + return self.endog[self.k_ar:] - self.fittedvalues + + def sample_acov(self, nlags=1): + """Sample acov""" + return _compute_acov(self.endog[self.k_ar:], nlags=nlags) + + def sample_acorr(self, nlags=1): + """Sample acorr""" + acovs = self.sample_acov(nlags=nlags) + return _acovs_to_acorrs(acovs) + + def plot_sample_acorr(self, nlags=10, linewidth=8): + """ + Plot sample autocorrelation function + + Parameters + ---------- + nlags : int + The number of lags to use in compute the autocorrelation. Does + not count the zero lag, which will be returned. + linewidth : int + The linewidth for the plots. + plot_kwargs : kwargs + Will be passed to `matplotlib.pyplot.axvlines` + + Returns + ------- + fig : matplotlib.Figure + The figure that contains the plot axes. + """ + fig = plotting.plot_full_acorr(self.sample_acorr(nlags=nlags), + linewidth=linewidth) + return fig + + def resid_acov(self, nlags=1): + """ + Compute centered sample autocovariance (including lag 0) + + Parameters + ---------- + nlags : int + + Returns + ------- + """ + return _compute_acov(self.resid, nlags=nlags) + + def resid_acorr(self, nlags=1): + """ + Compute sample autocorrelation (including lag 0) + + Parameters + ---------- + nlags : int + + Returns + ------- + """ + acovs = self.resid_acov(nlags=nlags) + return _acovs_to_acorrs(acovs) + + @cache_readonly + def resid_corr(self): + """ + Centered residual correlation matrix + """ + return self.resid_acorr(0)[0] + + @cache_readonly + def sigma_u_mle(self): + """(Biased) maximum likelihood estimate of noise process covariance + """ + return self.sigma_u * self.df_resid / self.nobs + + @cache_readonly + def cov_params(self): + """Estimated variance-covariance of model coefficients + + Notes + ----- + Covariance of vec(B), where B is the matrix + [params_for_deterministic_terms, A_1, ..., A_p] with the shape + (K x (Kp + number_of_deterministic_terms)) + Adjusted to be an unbiased estimator + Ref: Lütkepohl p.74-75 + """ + import warnings + warnings.warn("For consistency with other statmsodels models, " + "starting in version 0.11.0 `VARResults.cov_params` " + "will be a method instead of a property.", + category=FutureWarning) + z = self.endog_lagged + return np.kron(scipy.linalg.inv(np.dot(z.T, z)), self.sigma_u) + + def _cov_params(self): + """Wrapper to avoid FutureWarning. Remove after 0.11""" + import warnings + with warnings.catch_warnings(record=True): + return self.cov_params + + def cov_ybar(self): + r"""Asymptotically consistent estimate of covariance of the sample mean + + .. math:: + + \sqrt(T) (\bar{y} - \mu) \rightarrow {\cal N}(0, \Sigma_{\bar{y}})\\ + + \Sigma_{\bar{y}} = B \Sigma_u B^\prime, \text{where } B = (I_K - A_1 + - \cdots - A_p)^{-1} + + Notes + ----- + Lütkepohl Proposition 3.3 + """ + + Ainv = scipy.linalg.inv(np.eye(self.neqs) - self.coefs.sum(0)) + return chain_dot(Ainv, self.sigma_u, Ainv.T) + + # ------------------------------------------------------------ + # Estimation-related things + + @cache_readonly + def _zz(self): + # Z'Z + return np.dot(self.endog_lagged.T, self.endog_lagged) + + @property + def _cov_alpha(self): + """ + Estimated covariance matrix of model coefficients w/o exog + """ + # drop exog + return self._cov_params()[self.k_exog*self.neqs:, self.k_exog*self.neqs:] + + @cache_readonly + def _cov_sigma(self): + """ + Estimated covariance matrix of vech(sigma_u) + """ + D_K = tsa.duplication_matrix(self.neqs) + D_Kinv = np.linalg.pinv(D_K) + + sigxsig = np.kron(self.sigma_u, self.sigma_u) + return 2 * chain_dot(D_Kinv, sigxsig, D_Kinv.T) + + @cache_readonly + def llf(self): + "Compute VAR(p) loglikelihood" + return var_loglike(self.resid, self.sigma_u_mle, self.nobs) + + @cache_readonly + def stderr(self): + """Standard errors of coefficients, reshaped to match in size + """ + stderr = np.sqrt(np.diag(self._cov_params())) + return stderr.reshape((self.df_model, self.neqs), order='C') + + bse = stderr # statsmodels interface? + + @cache_readonly + def stderr_endog_lagged(self): + """Stderr_endog_lagged""" + start = self.k_exog + return self.stderr[start:] + + @cache_readonly + def stderr_dt(self): + """Stderr_dt""" + end = self.k_exog + return self.stderr[:end] + + @cache_readonly + def tvalues(self): + """Compute t-statistics. Use Student-t(T - Kp - 1) = t(df_resid) to test + significance. + """ + return self.params / self.stderr + + @cache_readonly + def tvalues_endog_lagged(self): + """tvalues_endog_lagged""" + start = self.k_exog + return self.tvalues[start:] + + @cache_readonly + def tvalues_dt(self): + """tvalues_dt""" + end = self.k_exog + return self.tvalues[:end] + + @cache_readonly + def pvalues(self): + """Two-sided p-values for model coefficients from Student t-distribution + """ + # return stats.t.sf(np.abs(self.tvalues), self.df_resid)*2 + return 2 * stats.norm.sf(np.abs(self.tvalues)) + + @cache_readonly + def pvalues_endog_lagged(self): + """pvalues_endog_laggd""" + start = self.k_exog + return self.pvalues[start:] + + @cache_readonly + def pvalues_dt(self): + """pvalues_dt""" + end = self.k_exog + return self.pvalues[:end] + + # todo: -------------------------------------------------------------------- + + def plot_forecast(self, steps, alpha=0.05, plot_stderr=True): + """ + Plot forecast + """ + mid, lower, upper = self.forecast_interval(self.endog[-self.k_ar:], + steps, + alpha=alpha) + fig = plotting.plot_var_forc(self.endog, mid, lower, upper, + names=self.names, plot_stderr=plot_stderr) + return fig + + # Forecast error covariance functions + + def forecast_cov(self, steps=1, method='mse'): + r"""Compute forecast covariance matrices for desired number of steps + + Parameters + ---------- + steps : int + + Notes + ----- + .. math:: \Sigma_{\hat y}(h) = \Sigma_y(h) + \Omega(h) / T + + Ref: Lütkepohl pp. 96-97 + + Returns + ------- + covs : ndarray (steps x k x k) + """ + fc_cov = self.mse(steps) + if method == 'mse': + pass + elif method == 'auto': + if self.k_exog == 1 and self.k_trend < 2: + # currently only supported if no exog and trend in ['nc', 'c'] + fc_cov += self._omega_forc_cov(steps) / self.nobs + import warnings + warnings.warn('forecast cov takes parameter uncertainty into' + 'account', OutputWarning) + else: + raise ValueError("method has to be either 'mse' or 'auto'") + + return fc_cov + + # Monte Carlo irf standard errors + @deprecate_kwarg('T', 'steps') + def irf_errband_mc(self, orth=False, repl=1000, steps=10, + signif=0.05, seed=None, burn=100, cum=False): + """ + Compute Monte Carlo integrated error bands assuming normally + distributed for impulse response functions + + Parameters + ---------- + orth: bool, default False + Compute orthogonalized impulse response error bands + repl: int + number of Monte Carlo replications to perform + steps: int, default 10 + number of impulse response periods + signif: float (0 < signif <1) + Significance level for error bars, defaults to 95% CI + seed: int + np.random.seed for replications + burn: int + number of initial observations to discard for simulation + cum: bool, default False + produce cumulative irf error bands + + Notes + ----- + Lütkepohl (2005) Appendix D + + Returns + ------- + Tuple of lower and upper arrays of ma_rep monte carlo standard errors + """ + ma_coll = self.irf_resim(orth=orth, repl=repl, steps=steps, + seed=seed, burn=burn, cum=cum) + + ma_sort = np.sort(ma_coll, axis=0) # sort to get quantiles + # python 2: round returns float + low_idx = int(round(signif / 2 * repl) - 1) + upp_idx = int(round((1 - signif / 2) * repl) - 1) + lower = ma_sort[low_idx, :, :, :] + upper = ma_sort[upp_idx, :, :, :] + return lower, upper + + @deprecate_kwarg('T', 'steps') + def irf_resim(self, orth=False, repl=1000, steps=10, + seed=None, burn=100, cum=False): + """ + Simulates impulse response function, returning an array of simulations. + Used for Sims-Zha error band calculation. + + Parameters + ---------- + orth: bool, default False + Compute orthoganalized impulse response error bands + repl: int + number of Monte Carlo replications to perform + steps: int, default 10 + number of impulse response periods + signif: float (0 < signif <1) + Significance level for error bars, defaults to 95% CI + seed: int + np.random.seed for replications + burn: int + number of initial observations to discard for simulation + cum: bool, default False + produce cumulative irf error bands + + Notes + ----- + .. [*] Sims, Christoper A., and Tao Zha. 1999. "Error Bands for Impulse + Response." Econometrica 67: 1113-1155. + + Returns + ------- + Array of simulated impulse response functions + """ + neqs = self.neqs + k_ar = self.k_ar + coefs = self.coefs + sigma_u = self.sigma_u + intercept = self.intercept + nobs = self.nobs + + ma_coll = np.zeros((repl, steps + 1, neqs, neqs)) + + def fill_coll(sim): + ret = VAR(sim, exog=self.exog).fit(maxlags=k_ar, trend=self.trend) + ret = ret.orth_ma_rep(maxn=steps) if orth else ret.ma_rep(maxn=steps) + return ret.cumsum(axis=0) if cum else ret + + for i in range(repl): + # discard first burn to eliminate correct for starting bias + sim = util.varsim(coefs, intercept, sigma_u, + seed=seed, steps=nobs+burn) + sim = sim[burn:] + ma_coll[i, :, :, :] = fill_coll(sim) + + return ma_coll + + def _omega_forc_cov(self, steps): + # Approximate MSE matrix \Omega(h) as defined in Lut p97 + G = self._zz + Ginv = scipy.linalg.inv(G) + + # memoize powers of B for speedup + # TODO: see if can memoize better + # TODO: much lower-hanging fruit in caching `np.trace` and `chain_dot` below. + B = self._bmat_forc_cov() + _B = {} + + def bpow(i): + if i not in _B: + _B[i] = np.linalg.matrix_power(B, i) + + return _B[i] + + phis = self.ma_rep(steps) + sig_u = self.sigma_u + + omegas = np.zeros((steps, self.neqs, self.neqs)) + for h in range(1, steps + 1): + if h == 1: + omegas[h-1] = self.df_model * self.sigma_u + continue + + om = omegas[h-1] + for i in range(h): + for j in range(h): + Bi = bpow(h - 1 - i) + Bj = bpow(h - 1 - j) + mult = np.trace(chain_dot(Bi.T, Ginv, Bj, G)) + om += mult * chain_dot(phis[i], sig_u, phis[j].T) + omegas[h-1] = om + + return omegas + + def _bmat_forc_cov(self): + # B as defined on p. 96 of Lut + upper = np.zeros((self.k_exog, self.df_model)) + upper[:, :self.k_exog] = np.eye(self.k_exog) + + lower_dim = self.neqs * (self.k_ar - 1) + eye = np.eye(lower_dim) + lower = np.column_stack((np.zeros((lower_dim, self.k_exog)), eye, + np.zeros((lower_dim, self.neqs)))) + + return np.vstack((upper, self.params.T, lower)) + + def summary(self): + """Compute console output summary of estimates + + Returns + ------- + summary : VARSummary + """ + return VARSummary(self) + + def irf(self, periods=10, var_decomp=None, var_order=None): + """Analyze impulse responses to shocks in system + + Parameters + ---------- + periods : int + var_decomp : ndarray (k x k), lower triangular + Must satisfy Omega = P P', where P is the passed matrix. Defaults to + Cholesky decomposition of Omega + var_order : sequence + Alternate variable order for Cholesky decomposition + + Returns + ------- + irf : IRAnalysis + """ + if var_order is not None: + raise NotImplementedError('alternate variable order not implemented' + ' (yet)') + + return IRAnalysis(self, P=var_decomp, periods=periods) + + def fevd(self, periods=10, var_decomp=None): + """ + Compute forecast error variance decomposition ("fevd") + + Returns + ------- + fevd : FEVD instance + """ + return FEVD(self, P=var_decomp, periods=periods) + + def reorder(self, order): + """Reorder variables for structural specification + """ + if len(order) != len(self.params[0, :]): + raise ValueError("Reorder specification length should match " + "number of endogenous variables") + # This converts order to list of integers if given as strings + if isinstance(order[0], string_types): + order_new = [] + for i, nam in enumerate(order): + order_new.append(self.names.index(order[i])) + order = order_new + return _reordered(self, order) + + # -------------------------------------------------------------------------- + # VAR Diagnostics: Granger-causality, whiteness of residuals, normality, etc + + def test_causality(self, caused, causing=None, kind='f', signif=0.05): + """ + Test Granger causality + + Parameters + ---------- + caused : int or str or sequence of int or str + If int or str, test whether the variable specified via this index + (int) or name (str) is Granger-caused by the variable(s) specified + by `causing`. + If a sequence of int or str, test whether the corresponding + variables are Granger-caused by the variable(s) specified + by `causing`. + causing : int or str or sequence of int or str or None, default: None + If int or str, test whether the variable specified via this index + (int) or name (str) is Granger-causing the variable(s) specified by + `caused`. + If a sequence of int or str, test whether the corresponding + variables are Granger-causing the variable(s) specified by + `caused`. + If None, `causing` is assumed to be the complement of `caused`. + kind : {'f', 'wald'} + Perform F-test or Wald (chi-sq) test + signif : float, default 5% + Significance level for computing critical values for test, + defaulting to standard 0.05 level + + Notes + ----- + Null hypothesis is that there is no Granger-causality for the indicated + variables. The degrees of freedom in the F-test are based on the + number of variables in the VAR system, that is, degrees of freedom + are equal to the number of equations in the VAR times degree of freedom + of a single equation. + + Test for Granger-causality as described in chapter 7.6.3 of [1]_. + Test H0: "`causing` does not Granger-cause the remaining variables of + the system" against H1: "`causing` is Granger-causal for the + remaining variables". + + Returns + ------- + results : CausalityTestResults + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + """ + if not (0 < signif < 1): + raise ValueError("signif has to be between 0 and 1") + + allowed_types = (string_types, int) + + if isinstance(caused, allowed_types): + caused = [caused] + if not all(isinstance(c, allowed_types) for c in caused): + raise TypeError("caused has to be of type string or int (or a " + "sequence of these types).") + caused = [self.names[c] if type(c) == int else c for c in caused] + caused_ind = [util.get_index(self.names, c) for c in caused] + + if causing is not None: + + if isinstance(causing, allowed_types): + causing = [causing] + if not all(isinstance(c, allowed_types) for c in causing): + raise TypeError("causing has to be of type string or int (or " + "a sequence of these types) or None.") + causing = [self.names[c] if type(c) == int else c for c in causing] + causing_ind = [util.get_index(self.names, c) for c in causing] + + if causing is None: + causing_ind = [i for i in range(self.neqs) if i not in caused_ind] + causing = [self.names[c] for c in caused_ind] + + k, p = self.neqs, self.k_ar + + # number of restrictions + num_restr = len(causing) * len(caused) * p + num_det_terms = self.k_exog + + # Make restriction matrix + C = np.zeros((num_restr, k * num_det_terms + k**2 * p), dtype=float) + cols_det = k * num_det_terms + row = 0 + for j in range(p): + for ing_ind in causing_ind: + for ed_ind in caused_ind: + C[row, cols_det + ed_ind + k * ing_ind + k**2 * j] = 1 + row += 1 + + # Lütkepohl 3.6.5 + Cb = np.dot(C, vec(self.params.T)) + middle = scipy.linalg.inv(chain_dot(C, self._cov_params(), C.T)) + + # wald statistic + lam_wald = statistic = chain_dot(Cb, middle, Cb) + + if kind.lower() == 'wald': + df = num_restr + dist = stats.chi2(df) + elif kind.lower() == 'f': + statistic = lam_wald / num_restr + df = (num_restr, k * self.df_resid) + dist = stats.f(*df) + else: + raise ValueError('kind %s not recognized' % kind) + + pvalue = dist.sf(statistic) + crit_value = dist.ppf(1 - signif) + + return CausalityTestResults(causing, caused, statistic, + crit_value, pvalue, df, signif, + test="granger", method=kind) + + def test_inst_causality(self, causing, signif=0.05): + """ + Test for instantaneous causality + + Parameters + ---------- + causing : + If int or str, test whether the corresponding variable is causing + the variable(s) specified in caused. + If sequence of int or str, test whether the corresponding variables + are causing the variable(s) specified in caused. + signif : float between 0 and 1, default 5 % + Significance level for computing critical values for test, + defaulting to standard 0.05 level + verbose : bool + If True, print a table with the results. + + Returns + ------- + results : dict + A dict holding the test's results. The dict's keys are: + + "statistic" : float + The calculated test statistic. + + "crit_value" : float + The critical value of the Chi^2-distribution. + + "pvalue" : float + The p-value corresponding to the test statistic. + + "df" : float + The degrees of freedom of the Chi^2-distribution. + + "conclusion" : str {"reject", "fail to reject"} + Whether H0 can be rejected or not. + + "signif" : float + Significance level + + Notes + ----- + Test for instantaneous causality as described in chapters 3.6.3 and + 7.6.4 of [1]_. + Test H0: "No instantaneous causality between caused and causing" + against H1: "Instantaneous causality between caused and causing + exists". + + Instantaneous causality is a symmetric relation (i.e. if causing is + "instantaneously causing" caused, then also caused is "instantaneously + causing" causing), thus the naming of the parameters (which is chosen + to be in accordance with test_granger_causality()) may be misleading. + + This method is not returning the same result as JMulTi. This is because + the test is based on a VAR(k_ar) model in statsmodels (in accordance to + pp. 104, 320-321 in [1]_) whereas JMulTi seems to be using a + VAR(k_ar+1) model. + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + """ + if not (0 < signif < 1): + raise ValueError("signif has to be between 0 and 1") + + allowed_types = (string_types, int) + if isinstance(causing, allowed_types): + causing = [causing] + if not all(isinstance(c, allowed_types) for c in causing): + raise TypeError("causing has to be of type string or int (or a " + + "a sequence of these types).") + causing = [self.names[c] if type(c) == int else c for c in causing] + causing_ind = [util.get_index(self.names, c) for c in causing] + + caused_ind = [i for i in range(self.neqs) if i not in causing_ind] + caused = [self.names[c] for c in caused_ind] + + # Note: JMulTi seems to be using k_ar+1 instead of k_ar + k, t, p = self.neqs, self.nobs, self.k_ar + + num_restr = len(causing) * len(caused) # called N in Lütkepohl + + sigma_u = self.sigma_u + vech_sigma_u = util.vech(sigma_u) + sig_mask = np.zeros(sigma_u.shape) + # set =1 twice to ensure, that all the ones needed are below the main + # diagonal: + sig_mask[causing_ind, caused_ind] = 1 + sig_mask[caused_ind, causing_ind] = 1 + vech_sig_mask = util.vech(sig_mask) + inds = np.nonzero(vech_sig_mask)[0] + + # Make restriction matrix + C = np.zeros((num_restr, len(vech_sigma_u)), dtype=float) + for row in range(num_restr): + C[row, inds[row]] = 1 + Cs = np.dot(C, vech_sigma_u) + d = np.linalg.pinv(duplication_matrix(k)) + Cd = np.dot(C, d) + middle = scipy.linalg.inv(chain_dot(Cd, np.kron(sigma_u, sigma_u), Cd.T)) / 2 + + wald_statistic = t * chain_dot(Cs.T, middle, Cs) + df = num_restr + dist = stats.chi2(df) + + pvalue = dist.sf(wald_statistic) + crit_value = dist.ppf(1 - signif) + + return CausalityTestResults(causing, caused, wald_statistic, + crit_value, pvalue, df, signif, + test="inst", method="wald") + + def test_whiteness(self, nlags=10, signif=0.05, adjusted=False): + """ + Residual whiteness tests using Portmanteau test + + Parameters + ---------- + nlags : int > 0 + signif : float, between 0 and 1 + adjusted : bool, default False + + Returns + ------- + results : WhitenessTestResults + + Notes + ----- + Test the whiteness of the residuals using the Portmanteau test as + described in [1]_, chapter 4.4.3. + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + """ + statistic = 0 + u = np.asarray(self.resid) + acov_list = _compute_acov(u, nlags) + cov0_inv = scipy.linalg.inv(acov_list[0]) + for t in range(1, nlags+1): + ct = acov_list[t] + to_add = np.trace(chain_dot(ct.T, cov0_inv, ct, cov0_inv)) + if adjusted: + to_add /= (self.nobs - t) + statistic += to_add + statistic *= self.nobs**2 if adjusted else self.nobs + df = self.neqs**2 * (nlags - self.k_ar) + dist = stats.chi2(df) + pvalue = dist.sf(statistic) + crit_value = dist.ppf(1 - signif) + + return WhitenessTestResults(statistic, crit_value, pvalue, df, signif, + nlags, adjusted) + + def plot_acorr(self, nlags=10, resid=True, linewidth=8): + r""" + Plot autocorrelation of sample (endog) or residuals + + Sample (Y) or Residual autocorrelations are plotted together with the + standard :math:`2 / \sqrt{T}` bounds. + + Parameters + ---------- + nlags : int + number of lags to display (excluding 0) + resid: boolean + If True, then the autocorrelation of the residuals is plotted + If False, then the autocorrelation of endog is plotted. + linewidth : int + width of vertical bars + + Returns + ------- + fig : matplotlib figure instance + + """ + if resid: + acorrs = self.resid_acorr(nlags) + else: + acorrs = self.sample_acorr(nlags) + + bound = 2 / np.sqrt(self.nobs) + + fig = plotting.plot_full_acorr(acorrs[1:], + xlabel=np.arange(1, nlags+1), + err_bound=bound, + linewidth=linewidth) + fig.suptitle(r"ACF plots for residuals with $2 / \sqrt{T}$ bounds ") + return fig + + def test_normality(self, signif=0.05): + """ + Test assumption of normal-distributed errors using Jarque-Bera-style + omnibus Chi^2 test. + + Parameters + ---------- + signif : float + Test significance level. + + Returns + ------- + result : NormalityTestResults + + Notes + ----- + H0 (null) : data are generated by a Gaussian-distributed process + """ + return test_normality(self, signif=signif) + + @cache_readonly + def detomega(self): + r""" + Return determinant of white noise covariance with degrees of freedom + correction: + + .. math:: + + \hat \Omega = \frac{T}{T - Kp - 1} \hat \Omega_{\mathrm{MLE}} + """ + return scipy.linalg.det(self.sigma_u) + + @cache_readonly + def info_criteria(self): + "information criteria for lagorder selection" + nobs = self.nobs + neqs = self.neqs + lag_order = self.k_ar + free_params = lag_order * neqs ** 2 + neqs * self.k_exog + + ld = logdet_symm(self.sigma_u_mle) + + # See Lütkepohl pp. 146-150 + + aic = ld + (2. / nobs) * free_params + bic = ld + (np.log(nobs) / nobs) * free_params + hqic = ld + (2. * np.log(np.log(nobs)) / nobs) * free_params + fpe = ((nobs + self.df_model) / self.df_resid) ** neqs * np.exp(ld) + + return { + 'aic': aic, + 'bic': bic, + 'hqic': hqic, + 'fpe': fpe + } + + @property + def aic(self): + """Akaike information criterion""" + return self.info_criteria['aic'] + + @property + def fpe(self): + """Final Prediction Error (FPE) + + Lütkepohl p. 147, see info_criteria + """ + return self.info_criteria['fpe'] + + @property + def hqic(self): + """Hannan-Quinn criterion""" + return self.info_criteria['hqic'] + + @property + def bic(self): + """Bayesian a.k.a. Schwarz info criterion""" + return self.info_criteria['bic'] + + @cache_readonly + def roots(self): + """ + The roots of the VAR process are the solution to + (I - coefs[0]*z - coefs[1]*z**2 ... - coefs[p-1]*z**k_ar) = 0. + Note that the inverse roots are returned, and stability requires that + the roots lie outside the unit circle. + """ + neqs = self.neqs + k_ar = self.k_ar + p = neqs * k_ar + arr = np.zeros((p, p)) + arr[:neqs, :] = np.column_stack(self.coefs) + arr[neqs:, :-neqs] = np.eye(p-neqs) + roots = np.linalg.eig(arr)[0]**-1 + idx = np.argsort(np.abs(roots))[::-1] # sort by reverse modulus + return roots[idx] + + +class VARResultsWrapper(wrap.ResultsWrapper): + _attrs = {'bse': 'columns_eq', 'cov_params': 'cov', + 'params': 'columns_eq', 'pvalues': 'columns_eq', + 'tvalues': 'columns_eq', 'sigma_u': 'cov_eq', + 'sigma_u_mle': 'cov_eq', + 'stderr': 'columns_eq'} + _wrap_attrs = wrap.union_dicts(tsbase.TimeSeriesResultsWrapper._wrap_attrs, + _attrs) + _methods = {} + _wrap_methods = wrap.union_dicts(tsbase.TimeSeriesResultsWrapper._wrap_methods, + _methods) + _wrap_methods.pop('cov_params') # not yet a method in VARResults +wrap.populate_wrapper(VARResultsWrapper, VARResults) # noqa:E305 + + +class FEVD(object): + """ + Compute and plot Forecast error variance decomposition and asymptotic + standard errors + """ + def __init__(self, model, P=None, periods=None): + self.periods = periods + + self.model = model + self.neqs = model.neqs + self.names = model.model.endog_names + + self.irfobj = model.irf(var_decomp=P, periods=periods) + self.orth_irfs = self.irfobj.orth_irfs + + # cumulative impulse responses + irfs = (self.orth_irfs[:periods] ** 2).cumsum(axis=0) + + rng = lrange(self.neqs) + mse = self.model.mse(periods)[:, rng, rng] + + # lag x equation x component + fevd = np.empty_like(irfs) + + for i in range(periods): + fevd[i] = (irfs[i].T / mse[i]).T + + # switch to equation x lag x component + self.decomp = fevd.swapaxes(0, 1) + + def summary(self): + buf = StringIO() + + rng = lrange(self.periods) + for i in range(self.neqs): + ppm = output.pprint_matrix(self.decomp[i], rng, self.names) + + buf.write('FEVD for %s\n' % self.names[i]) + buf.write(ppm + '\n') + + print(buf.getvalue()) + + def cov(self): + """Compute asymptotic standard errors + + Returns + ------- + """ + raise NotImplementedError + + def plot(self, periods=None, figsize=(10, 10), **plot_kwds): + """Plot graphical display of FEVD + + Parameters + ---------- + periods : int, default None + Defaults to number originally specified. Can be at most that number + """ + import matplotlib.pyplot as plt + + k = self.neqs + periods = periods or self.periods + + fig, axes = plt.subplots(nrows=k, figsize=figsize) + + fig.suptitle('Forecast error variance decomposition (FEVD)') + + colors = [str(c) for c in np.arange(k, dtype=float) / k] + ticks = np.arange(periods) + + limits = self.decomp.cumsum(2) + + for i in range(k): + ax = axes[i] + + this_limits = limits[i].T + + handles = [] + + for j in range(k): + lower = this_limits[j - 1] if j > 0 else 0 + upper = this_limits[j] + handle = ax.bar(ticks, upper - lower, bottom=lower, + color=colors[j], label=self.names[j], + **plot_kwds) + + handles.append(handle) + + ax.set_title(self.names[i]) + + # just use the last axis to get handles for plotting + handles, labels = ax.get_legend_handles_labels() + fig.legend(handles, labels, loc='upper right') + plotting.adjust_subplots(right=0.85) + return fig + +# ------------------------------------------------------------------------------- + + +def _compute_acov(x, nlags=1): + x = x - x.mean(0) + + result = [] + for lag in range(nlags + 1): + if lag > 0: + r = np.dot(x[lag:].T, x[:-lag]) + else: + r = np.dot(x.T, x) + + result.append(r) + + return np.array(result) / len(x) + + +def _acovs_to_acorrs(acovs): + sd = np.sqrt(np.diag(acovs[0])) + return acovs / np.outer(sd, sd) + + +if __name__ == '__main__': + from statsmodels.tsa.vector_ar.util import parse_lutkepohl_data + import statsmodels.tools.data as data_util + + np.set_printoptions(linewidth=140, precision=5) + + sdata, dates = parse_lutkepohl_data('data/%s.dat' % 'e1') + + names = sdata.dtype.names + data = data_util.struct_to_ndarray(sdata) + adj_data = np.diff(np.log(data), axis=0) + # est = VAR(adj_data, p=2, dates=dates[1:], names=names) + model = VAR(adj_data[:-16], dates=dates[1:-16], names=names) + # model = VAR(adj_data[:-16], dates=dates[1:-16], names=names) + + est = model.fit(maxlags=2) + irf = est.irf() + + y = est.endog[-2:] + """ + # irf.plot_irf() + + # i = 2; j = 1 + # cv = irf.cum_effect_cov(orth=True) + # print np.sqrt(cv[:, j * 3 + i, j * 3 + i]) / 1e-2 + + # data = np.genfromtxt('Canada.csv', delimiter=',', names=True) + # data = data.view((float, 4)) + """ + + ''' + mdata = sm.datasets.macrodata.load(as_pandas=False).data + mdata2 = mdata[['realgdp','realcons','realinv']] + names = mdata2.dtype.names + data = mdata2.view((float,3)) + data = np.diff(np.log(data), axis=0) + + import pandas as pn + df = pn.DataFrame.fromRecords(mdata) + df = np.log(df.reindex(columns=names)) + df = (df - df.shift(1)).dropna() + + model = VAR(df) + est = model.fit(maxlags=2) + irf = est.irf() + ''' diff --git a/statsmodels/tsa/vector_ar/vecm.py b/statsmodels/tsa/vector_ar/vecm.py new file mode 100644 index 0000000..0d52eae --- /dev/null +++ b/statsmodels/tsa/vector_ar/vecm.py @@ -0,0 +1,2235 @@ +# -*- coding: utf-8 -*- +from __future__ import division, print_function + +from collections import defaultdict +import numpy as np +from numpy import hstack, vstack +from numpy.linalg import inv, svd +import scipy +import scipy.stats + +from statsmodels.compat.python import range, string_types, iteritems +from statsmodels.iolib.summary import Summary +from statsmodels.iolib.table import SimpleTable +from statsmodels.tools.decorators import cache_readonly +from statsmodels.tools.sm_exceptions import HypothesisTestWarning +from statsmodels.tools.tools import chain_dot +from statsmodels.tools.testing import Holder +from statsmodels.tsa.tsatools import duplication_matrix, vec, lagmat + +import statsmodels.tsa.base.tsa_model as tsbase +import statsmodels.tsa.vector_ar.irf as irf +import statsmodels.tsa.vector_ar.plotting as plot +from statsmodels.tsa.vector_ar.hypothesis_test_results import \ + CausalityTestResults, WhitenessTestResults +from statsmodels.tsa.vector_ar.util import get_index, seasonal_dummies +from statsmodels.tsa.vector_ar.var_model import forecast, forecast_interval, \ + VAR, ma_rep, orth_ma_rep, test_normality, LagOrderResults, _compute_acov +from statsmodels.tsa.coint_tables import c_sja, c_sjt + + +def select_order(data, maxlags, deterministic="nc", seasons=0, exog=None, + exog_coint=None): + """ + Compute lag order selections based on each of the available information + criteria. + + Parameters + ---------- + data : array-like (nobs_tot x neqs) + The observed data. + maxlags : int + All orders until maxlag will be compared according to the information + criteria listed in the Results-section of this docstring. + deterministic : str {``"nc"``, ``"co"``, ``"ci"``, ``"lo"``, ``"li"``} + * ``"nc"`` - no deterministic terms + * ``"co"`` - constant outside the cointegration relation + * ``"ci"`` - constant within the cointegration relation + * ``"lo"`` - linear trend outside the cointegration relation + * ``"li"`` - linear trend within the cointegration relation + + Combinations of these are possible (e.g. ``"cili"`` or ``"colo"`` for + linear trend with intercept). See the docstring of the + :class:`VECM`-class for more information. + seasons : int, default: 0 + Number of periods in a seasonal cycle. + exog : ndarray (nobs_tot x neqs) or `None`, default: `None` + Deterministic terms outside the cointegration relation. + exog_coint : ndarray (nobs_tot x neqs) or `None`, default: `None` + Deterministic terms inside the cointegration relation. + + Returns + ------- + selected_orders : :class:`statsmodels.tsa.vector_ar.var_model.LagOrderResults` + """ + ic = defaultdict(list) + for p in range(1, maxlags + 2): # +2 because k_ar_VECM == k_ar_VAR - 1 + exogs = [] + if "co" in deterministic or "ci" in deterministic: + exogs.append(np.ones(len(data)).reshape(-1, 1)) + if "lo" in deterministic or "li" in deterministic: + exogs.append(1 + np.arange(len(data)).reshape(-1, 1)) + if exog_coint is not None: + exogs.append(exog_coint) + if seasons > 0: + exogs.append(seasonal_dummies(seasons, len(data) + ).reshape(-1, seasons-1)) + if exog is not None: + exogs.append(exog) + exogs = hstack(exogs) if exogs else None + var_model = VAR(data, exogs) + # exclude some periods ==> same amount of data used for each lag order + var_result = var_model._estimate_var(lags=p, offset=maxlags+1-p) + + for k, v in iteritems(var_result.info_criteria): + ic[k].append(v) + # -1+1 in the following line is only here for clarification. + # -1 because k_ar_VECM == k_ar_VAR - 1 + # +1 because p == index +1 (we start with p=1, not p=0) + selected_orders = dict((ic_name, np.array(ic_value).argmin() - 1 + 1) + for ic_name, ic_value in iteritems(ic)) + + return LagOrderResults(ic, selected_orders, True) + + +def _linear_trend(nobs, k_ar, coint=False): + """ + Construct an ndarray representing a linear trend in a VECM. + + Parameters + ---------- + nobs : int + Number of observations excluding the presample. + k_ar : int + Number of lags in levels. + coint : boolean, default: False + If True (False), the returned array represents a linear trend inside + (outside) the cointegration relation. + + Returns + ------- + ret : ndarray (nobs) + An ndarray representing a linear trend in a VECM + + Notes + ----- + The returned array's size is nobs and not nobs_tot so it cannot be used to + construct the exog-argument of VECM's __init__ method. + """ + ret = np.arange(nobs) + k_ar + if not coint: + ret += 1 + return ret + + +def _num_det_vars(det_string, seasons=0): + """Gives the number of deterministic variables specified by det_string and + seasons. + + Parameters + ---------- + det_string : str {"nc", "co", "ci", "lo", "li"} + * "nc" - no deterministic terms + * "co" - constant outside the cointegration relation + * "ci" - constant within the cointegration relation + * "lo" - linear trend outside the cointegration relation + * "li" - linear trend within the cointegration relation + + Combinations of these are possible (e.g. "cili" or "colo" for linear + trend with intercept). See the docstring of the :class:`VECM`-class for + more information. + seasons : int + Number of periods in a seasonal cycle. + + Returns + ------- + num : int + Number of deterministic terms and number dummy variables for seasonal + terms. + """ + num = 0 + if "ci" in det_string or "co" in det_string: + num += 1 + if "li" in det_string or "lo" in det_string: + num += 1 + if seasons > 0: + num += seasons - 1 + return num + + +def _deterministic_to_exog(deterministic, seasons, nobs_tot, first_season=0, + seasons_centered=False, exog=None, exog_coint=None): + """ + Translate all information about deterministic terms into a single array. + + These information is taken from `deterministic` and `seasons` as well as + from the `exog` and `exog_coint` arrays. The resulting array form can then + be used e.g. in VAR's __init__ method. + + Parameters + ---------- + deterministic : str + A string specifying the deterministic terms in the model. See VECM's + docstring for more information. + seasons : int + Number of periods in a seasonal cycle. + nobs_tot : int + Number of observations including the presample. + first_season : int, default: 0 + Season of the first observation. + seasons_centered : boolean, default: False + If True, the seasonal dummy variables are demeaned such that they are + orthogonal to an intercept term. + exog : ndarray (nobs_tot x #det_terms) or None, default: None + An ndarray representing deterministic terms outside the cointegration + relation. + exog_coint : ndarray (nobs_tot x #det_terms_coint) or None, default: None + An ndarray representing deterministic terms inside the cointegration + relation. + + Returns + ------- + exog : ndarray or None + None, if the function's arguments don't contain deterministic terms. + Otherwise, an ndarray representing these deterministic terms. + """ + exogs = [] + if "co" in deterministic or "ci" in deterministic: + exogs.append(np.ones(nobs_tot)) + if exog_coint is not None: + exogs.append(exog_coint) + if "lo" in deterministic or "li" in deterministic: + exogs.append(np.arange(nobs_tot)) + if seasons > 0: + exogs.append(seasonal_dummies(seasons, nobs_tot, + first_period=first_season, + centered=seasons_centered)) + if exog is not None: + exogs.append(exog) + return np.column_stack(exogs) if exogs else None + + +def _mat_sqrt(_2darray): + """Calculates the square root of a matrix. + + Parameters + ---------- + _2darray : ndarray + A 2-dimensional ndarray representing a square matrix. + + Returns + ------- + result : ndarray + Square root of the matrix given as function argument. + """ + u_, s_, v_ = svd(_2darray, full_matrices=False) + s_ = np.sqrt(s_) + return u_.dot(s_[:, None] * v_) + + +def _endog_matrices(endog, exog, exog_coint, diff_lags, deterministic, + seasons=0, first_season=0): + """ + Returns different matrices needed for parameter estimation. + + Compare p. 186 in [1]_. The returned matrices consist of elements of the + data as well as elements representing deterministic terms. A tuple of + consisting of these matrices is returned. + + Parameters + ---------- + endog : ndarray (neqs x nobs_tot) + The whole sample including the presample. + exog: ndarray (nobs_tot x neqs) or None + Deterministic terms outside the cointegration relation. + exog_coint: ndarray (nobs_tot x neqs) or None + Deterministic terms inside the cointegration relation. + diff_lags : int + Number of lags in the VEC representation. + deterministic : str {``"nc"``, ``"co"``, ``"ci"``, ``"lo"``, ``"li"``} + * ``"nc"`` - no deterministic terms + * ``"co"`` - constant outside the cointegration relation + * ``"ci"`` - constant within the cointegration relation + * ``"lo"`` - linear trend outside the cointegration relation + * ``"li"`` - linear trend within the cointegration relation + + Combinations of these are possible (e.g. ``"cili"`` or ``"colo"`` for + linear trend with intercept). See the docstring of the + :class:`VECM`-class for more information. + seasons : int, default: 0 + Number of periods in a seasonal cycle. 0 (default) means no seasons. + first_season : int, default: 0 + The season of the first observation. `0` means first season, `1` means + second season, ..., `seasons-1` means the last season. + + Returns + ------- + y_1_T : ndarray (neqs x nobs) + The (transposed) data without the presample. + `.. math:: (y_1, \\ldots, y_T) + delta_y_1_T : ndarray (neqs x nobs) + The first differences of endog. + `.. math:: (y_1, \\ldots, y_T) - (y_0, \\ldots, y_{T-1}) + y_lag1 : ndarray (neqs x nobs) + (dimensions assuming no deterministic terms are given) + Endog of the previous period (lag 1). + `.. math:: (y_0, \\ldots, y_{T-1}) + delta_x : ndarray (k_ar_diff*neqs x nobs) + (dimensions assuming no deterministic terms are given) + Lagged differenced endog, used as regressor for the short term + equation. + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + + """ + # p. 286: + p = diff_lags+1 + y = endog + K = y.shape[0] + y_1_T = y[:, p:] + T = y_1_T.shape[1] + delta_y = np.diff(y) + delta_y_1_T = delta_y[:, p-1:] + + y_lag1 = y[:, p-1:-1] + if "co" in deterministic and "ci" in deterministic: + raise ValueError("Both 'co' and 'ci' as deterministic terms given. " + + "Please choose one of the two.") + y_lag1_stack = [y_lag1] + if "ci" in deterministic: # pp. 257, 299, 306, 307 + y_lag1_stack.append(np.ones(T)) + if "li" in deterministic: # p. 299 + y_lag1_stack.append(_linear_trend(T, p, coint=True)) + if exog_coint is not None: + y_lag1_stack.append(exog_coint[-T-1:-1].T) + y_lag1 = np.row_stack(y_lag1_stack) + + # p. 286: + delta_x = np.zeros((diff_lags*K, T)) + if diff_lags > 0: + for j in range(delta_x.shape[1]): + delta_x[:, j] = (delta_y[:, j+p-2:None if j-1 < 0 else j-1:-1] + .T.reshape(K*(p-1))) + delta_x_stack = [delta_x] + # p. 299, p. 303: + if "co" in deterministic: + delta_x_stack.append(np.ones(T)) + if seasons > 0: + delta_x_stack.append(seasonal_dummies(seasons, delta_x.shape[1], + first_period=first_season + diff_lags + 1, + centered=True).T) + if "lo" in deterministic: + delta_x_stack.append(_linear_trend(T, p)) + if exog is not None: + delta_x_stack.append(exog[-T:].T) + delta_x = np.row_stack(delta_x_stack) + + return y_1_T, delta_y_1_T, y_lag1, delta_x + + +def _r_matrices(delta_y_1_T, y_lag1, delta_x): + """Returns two ndarrays needed for parameter estimation as well as the + calculation of standard errors. + + Parameters + ---------- + delta_y_1_T : ndarray (neqs x nobs) + The first differences of endog. + `.. math:: (y_1, \\ldots, y_T) - (y_0, \\ldots, y_{T-1}) + y_lag1 : ndarray (neqs x nobs) + (dimensions assuming no deterministic terms are given) + Endog of the previous period (lag 1). + `.. math:: (y_0, \\ldots, y_{T-1}) + delta_x : ndarray (k_ar_diff*neqs x nobs) + (dimensions assuming no deterministic terms are given) + Lagged differenced endog, used as regressor for the short term + equation. + + Returns + ------- + result : tuple + A tuple of two ndarrays. (See p. 292 in [1]_ for the definition of + R_0 and R_1.) + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + """ + + # todo: rewrite m such that a big (TxT) matrix is avoided + nobs = y_lag1.shape[1] + m = np.identity(nobs) - ( + delta_x.T.dot(inv(delta_x.dot(delta_x.T))).dot(delta_x)) # p. 291 + r0 = delta_y_1_T.dot(m) # p. 292 + r1 = y_lag1.dot(m) + return r0, r1 + + +def _sij(delta_x, delta_y_1_T, y_lag1): + """Returns matrices and eigenvalues and -vectors used for parameter + estimation and the calculation of a models loglikelihood. + + Parameters + ---------- + delta_x : ndarray (k_ar_diff*neqs x nobs) + (dimensions assuming no deterministic terms are given) + delta_y_1_T : ndarray (neqs x nobs) + :math:`(y_1, \\ldots, y_T) - (y_0, \\ldots, y_{T-1})` + y_lag1 : ndarray (neqs x nobs) + (dimensions assuming no deterministic terms are given) + :math:`(y_0, \\ldots, y_{T-1})` + + Returns + ------- + result : tuple + A tuple of five ndarrays as well as eigenvalues and -vectors of a + certain (matrix) product of some of the returned ndarrays. + (See pp. 294-295 in [1]_ for more information on + :math:`S_0, S_1, \\lambda_i, \\v_i` for + :math:`i \\in \\{1, \\dots, K\\}`.) + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + """ + nobs = y_lag1.shape[1] + r0, r1 = _r_matrices(delta_y_1_T, y_lag1, delta_x) + s00 = np.dot(r0, r0.T) / nobs + s01 = np.dot(r0, r1.T) / nobs + s10 = s01.T + s11 = np.dot(r1, r1.T) / nobs + s11_ = inv(_mat_sqrt(s11)) + # p. 295: + s01_s11_ = np.dot(s01, s11_) + eig = np.linalg.eig(chain_dot(s01_s11_.T, inv(s00), s01_s11_)) + lambd = eig[0] + v = eig[1] + # reorder eig_vals to make them decreasing (and order eig_vecs accordingly) + lambd_order = np.argsort(lambd)[::-1] + lambd = lambd[lambd_order] + v = v[:, lambd_order] + return s00, s01, s10, s11, s11_, lambd, v + + +class CointRankResults: + """A class for holding the results from testing the cointegration rank. + + Parameters + ---------- + rank : int (0 <= `rank` <= `neqs`) + The rank to choose according to the Johansen cointegration rank + test. + neqs : int + Number of variables in the time series. + test_stats : array-like (`rank` + 1 if `rank` < `neqs` else `rank`) + A one-dimensional array-like object containing the test statistics of + the conducted tests. + crit_vals : array-like (`rank` +1 if `rank` < `neqs` else `rank`) + A one-dimensional array-like object containing the critical values + corresponding to the entries in the `test_stats` argument. + method : str, {``"trace"``, ``"maxeig"``}, default: ``"trace"`` + If ``"trace"``, the trace test statistic is used. If ``"maxeig"``, the + maximum eigenvalue test statistic is used. + signif : float, {0.1, 0.05, 0.01}, default: 0.05 + The test's significance level. + """ + def __init__(self, rank, neqs, test_stats, crit_vals, method="trace", + signif=0.05): + self.rank = rank + self.neqs = neqs + self.r_1 = [neqs if method == "trace" else i+1 + for i in range(min(rank+1, neqs))] + self.test_stats = test_stats + self.crit_vals = crit_vals + self.method = method + self.signif = signif + + def summary(self): + headers = ["r_0", "r_1", "test statistic", "critical value"] + title = "Johansen cointegration test using " + \ + ("trace" if self.method == "trace" else "maximum eigenvalue") + \ + " test statistic with {:.0%}".format(self.signif) + \ + " significance level" + num_tests = min(self.rank, self.neqs-1) + data = [[i, self.r_1[i], self.test_stats[i], self.crit_vals[i]] + for i in range(num_tests + 1)] + data_fmt = {"data_fmts": ["%s", "%s", "%#0.4g", "%#0.4g"], + "data_aligns": "r"} + html_data_fmt = dict(data_fmt) + html_data_fmt["data_fmts"] = ["" + i + "" + for i in html_data_fmt["data_fmts"]] + return SimpleTable(data=data, headers=headers, title=title, + txt_fmt=data_fmt, html_fmt=html_data_fmt, + ltx_fmt=data_fmt) + + def __str__(self): + return self.summary().as_text() + + +def select_coint_rank(endog, det_order, k_ar_diff, method="trace", + signif=0.05): + """Calculate the cointegration rank of a VECM. + + Parameters + ---------- + endog : array-like (nobs_tot x neqs) + The data with presample. + det_order : int + * -1 - no deterministic terms + * 0 - constant term + * 1 - linear trend + k_ar_diff : int, nonnegative + Number of lagged differences in the model. + method : str, {``"trace"``, ``"maxeig"``}, default: ``"trace"`` + If ``"trace"``, the trace test statistic is used. If ``"maxeig"``, the + maximum eigenvalue test statistic is used. + signif : float, {0.1, 0.05, 0.01}, default: 0.05 + The test's significance level. + + Returns + ------- + rank : :class:`CointRankResults` + A :class:`CointRankResults` object containing the cointegration rank suggested + by the test and allowing a summary to be printed. + """ + if method not in ["trace", "maxeig"]: + raise ValueError("The method argument has to be either 'trace' or" + "'maximum eigenvalue'.") + + if det_order not in [-1, 0, 1]: + if type(det_order) == int and det_order > 1: + raise ValueError("A det_order greather than 1 is not supported." + "Use a value of -1, 0, or 1.") + else: + raise ValueError("det_order must be -1, 0, or 1.") + + possible_signif_values = [0.1, 0.05, 0.01] + if signif not in possible_signif_values: + raise ValueError("Please choose a significance level from {0.1, 0.05," + "0.01}") + + coint_result = coint_johansen(endog, det_order, k_ar_diff) + test_stat = coint_result.lr1 if method == "trace" else coint_result.lr2 + crit_vals = coint_result.cvt if method == "trace" else coint_result.cvm + signif_index = possible_signif_values.index(signif) + + neqs = endog.shape[1] + r_0 = 0 # rank in null hypothesis + while r_0 < neqs: + if test_stat[r_0] < crit_vals[r_0, signif_index]: + break # we accept current rank + else: + r_0 += 1 # we reject current rank and test next possible rank + + return CointRankResults(r_0, neqs, test_stat[:r_0 + 1], + crit_vals[:r_0 + 1, signif_index], method, signif) + + +def coint_johansen(endog, det_order, k_ar_diff): + """ + Perform the Johansen cointegration test for determining the cointegration + rank of a VECM. + + Parameters + ---------- + endog : array-like (nobs_tot x neqs) + The data with presample. + det_order : int + * -1 - no deterministic terms + * 0 - constant term + * 1 - linear trend + k_ar_diff : int, nonnegative + Number of lagged differences in the model. + + Returns + ------- + result : Holder + An object containing the results which can be accessed using + dot-notation. The object's attributes are + + * eig: (neqs) + + Eigenvalues. + + * evec: (neqs x neqs) + + Eigenvectors. + + * lr1: (neqs) + + Trace statistic. + + * lr2: (neqs) + + Maximum eigenvalue statistic. + + * cvt: (neqs x 3) + + Critical values (90%, 95%, 99%) for trace statistic. + + * cvm: (neqs x 3) + + Critical values (90%, 95%, 99%) for maximum eigenvalue + statistic. + + * method: str + "johansen" + + * r0t: (nobs x neqs) + + Residuals for :math:`\\Delta Y`. See p. 292 in [1]_. + + * rkt: (nobs x neqs) + + Residuals for :math:`Y_{-1}`. See p. 292 in [1]_. + + * ind: (neqs) + + Order of eigenvalues. + + Notes + ----- + The implementation might change to make more use of the existing VECM + framework. + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + """ + import warnings + if det_order not in [-1, 0, 1]: + warnings.warn("Critical values are only available for a det_order of " + "-1, 0, or 1.", category=HypothesisTestWarning) + if endog.shape[1] > 12: # todo: test with a time series of 13 variables + warnings.warn("Critical values are only available for time series " + "with 12 variables at most.", + category=HypothesisTestWarning) + + from statsmodels.regression.linear_model import OLS + + def detrend(y, order): + if order == -1: + return y + return OLS(y, np.vander(np.linspace(-1, 1, len(y)), + order+1)).fit().resid + + def resid(y, x): + if x.size == 0: + return y + r = y - np.dot(x, np.dot(np.linalg.pinv(x), y)) + return r + + endog = np.asarray(endog) + nobs, neqs = endog.shape + + # why this? f is detrend transformed series, det_order is detrend data + if det_order > -1: + f = 0 + else: + f = det_order + + endog = detrend(endog, det_order) + dx = np.diff(endog, 1, axis=0) + z = lagmat(dx, k_ar_diff) + z = z[k_ar_diff:] + z = detrend(z, f) + + dx = dx[k_ar_diff:] + + dx = detrend(dx, f) + r0t = resid(dx, z) + # GH 5731, [:-0] does not work, need [:t-0] + lx = endog[:(endog.shape[0]-k_ar_diff)] + lx = lx[1:] + dx = detrend(lx, f) + rkt = resid(dx, z) # level on lagged diffs + # Level covariance after filtering k_ar_diff + skk = np.dot(rkt.T, rkt) / rkt.shape[0] + # Covariacne between filtered and unfiltered + sk0 = np.dot(rkt.T, r0t) / rkt.shape[0] + s00 = np.dot(r0t.T, r0t) / r0t.shape[0] + sig = np.dot(sk0, np.dot(inv(s00), sk0.T)) + tmp = inv(skk) + au, du = np.linalg.eig(np.dot(tmp, sig)) # au is eval, du is evec + + temp = inv(np.linalg.cholesky(np.dot(du.T, np.dot(skk, du)))) + dt = np.dot(du, temp) + + # JP: the next part can be done much easier + auind = np.argsort(au) + aind = np.flipud(auind) + a = au[aind] + d = dt[:, aind] + + # Compute the trace and max eigenvalue statistics + lr1 = np.zeros(neqs) + lr2 = np.zeros(neqs) + cvm = np.zeros((neqs, 3)) + cvt = np.zeros((neqs, 3)) + iota = np.ones(neqs) + t, junk = rkt.shape + for i in range(0, neqs): + tmp = np.log(iota - a)[i:] + lr1[i] = -t * np.sum(tmp, 0) + lr2[i] = -t * np.log(1-a[i]) + cvm[i, :] = c_sja(neqs - i, det_order) + cvt[i, :] = c_sjt(neqs - i, det_order) + aind[i] = i + + result = Holder() + # estimation results, residuals + result.rkt = rkt + result.r0t = r0t + result.eig = a + result.evec = d + result.lr1 = lr1 + result.lr2 = lr2 + result.cvt = cvt + result.cvm = cvm + result.ind = aind + result.meth = 'johansen' + + return result + + +class VECM(tsbase.TimeSeriesModel): + """ + Class representing a Vector Error Correction Model (VECM). + + A VECM(:math:`k_{ar}-1`) has the following form + + .. math:: \\Delta y_t = \\Pi y_{t-1} + \\Gamma_1 \\Delta y_{t-1} + \\ldots + \\Gamma_{k_{ar}-1} \\Delta y_{t-k_{ar}+1} + u_t + + where + + .. math:: \\Pi = \\alpha \\beta' + + as described in chapter 7 of [1]_. + + Parameters + ---------- + endog : array-like (nobs_tot x neqs) + 2-d endogenous response variable. + exog: ndarray (nobs_tot x neqs) or None + Deterministic terms outside the cointegration relation. + exog_coint: ndarray (nobs_tot x neqs) or None + Deterministic terms inside the cointegration relation. + dates : array-like of datetime, optional + See :class:`statsmodels.tsa.base.tsa_model.TimeSeriesModel` for more + information. + freq : str, optional + See :class:`statsmodels.tsa.base.tsa_model.TimeSeriesModel` for more + information. + missing : str, optional + See :class:`statsmodels.base.model.Model` for more information. + k_ar_diff : int + Number of lagged differences in the model. Equals :math:`k_{ar} - 1` in + the formula above. + coint_rank : int + Cointegration rank, equals the rank of the matrix :math:`\\Pi` and the + number of columns of :math:`\\alpha` and :math:`\\beta`. + deterministic : str {``"nc"``, ``"co"``, ``"ci"``, ``"lo"``, ``"li"``} + * ``"nc"`` - no deterministic terms + * ``"co"`` - constant outside the cointegration relation + * ``"ci"`` - constant within the cointegration relation + * ``"lo"`` - linear trend outside the cointegration relation + * ``"li"`` - linear trend within the cointegration relation + + Combinations of these are possible (e.g. ``"cili"`` or ``"colo"`` for + linear trend with intercept). When using a constant term you have to + choose whether you want to restrict it to the cointegration relation + (i.e. ``"ci"``) or leave it unrestricted (i.e. ``"co"``). Don't use + both ``"ci"`` and ``"co"``. The same applies for ``"li"`` and ``"lo"`` + when using a linear term. See the Notes-section for more information. + seasons : int, default: 0 + Number of periods in a seasonal cycle. 0 means no seasons. + first_season : int, default: 0 + Season of the first observation. + + Notes + ----- + A VECM(:math:`k_{ar} - 1`) with deterministic terms has the form + + .. math:: + + \\Delta y_t = \\alpha \\begin{pmatrix}\\beta' & \\eta'\\end{pmatrix} \\begin{pmatrix}y_{t-1}\\\\D^{co}_{t-1}\\end{pmatrix} + \\Gamma_1 \\Delta y_{t-1} + \\dots + \\Gamma_{k_{ar}-1} \\Delta y_{t-k_{ar}+1} + C D_t + u_t. + + In :math:`D^{co}_{t-1}` we have the deterministic terms which are inside + the cointegration relation (or restricted to the cointegration relation). + :math:`\\eta` is the corresponding estimator. To pass a deterministic term + inside the cointegration relation, we can use the `exog_coint` argument. + For the two special cases of an intercept and a linear trend there exists + a simpler way to declare these terms: we can pass ``"ci"`` and ``"li"`` + respectively to the `deterministic` argument. So for an intercept inside + the cointegration relation we can either pass ``"ci"`` as `deterministic` + or `np.ones(len(data))` as `exog_coint` if `data` is passed as the + `endog` argument. This ensures that :math:`D_{t-1}^{co} = 1` for all + :math:`t`. + + We can also use deterministic terms outside the cointegration relation. + These are defined in :math:`D_t` in the formula above with the + corresponding estimators in the matrix :math:`C`. We specify such terms by + passing them to the `exog` argument. For an intercept and/or linear trend + we again have the possibility to use `deterministic` alternatively. For + an intercept we pass ``"co"`` and for a linear trend we pass ``"lo"`` where + the `o` stands for `outside`. + + The following table shows the five cases considered in [2]_. The last + column indicates which string to pass to the `deterministic` argument for + each of these cases. + + ==== =============================== =================================== ============= + Case Intercept Slope of the linear trend `deterministic` + ==== =============================== =================================== ============= + I 0 0 ``"nc"`` + II :math:`- \\alpha \\beta^T \\mu` 0 ``"ci"`` + III :math:`\\neq 0` 0 ``"co"`` + IV :math:`\\neq 0` :math:`- \\alpha \\beta^T \\gamma` ``"coli"`` + V :math:`\\neq 0` :math:`\\neq 0` ``"colo"`` + ==== =============================== =================================== ============= + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + + .. [2] Johansen, S. 1995. *Likelihood-Based Inference in Cointegrated * + *Vector Autoregressive Models*. Oxford University Press. + + """ + + def __init__(self, endog, exog=None, exog_coint=None, dates=None, + freq=None, missing="none", k_ar_diff=1, coint_rank=1, + deterministic="nc", seasons=0, first_season=0): + super(VECM, self).__init__(endog, exog, dates, freq, + missing=missing) + if exog_coint is not None and \ + not exog_coint.shape[0] == endog.shape[0]: + raise ValueError("exog_coint must have as many rows as enodg_tot!") + if self.endog.ndim == 1: + raise ValueError("Only gave one variable to VECM") + self.y = self.endog.T + self.exog_coint = exog_coint + self.neqs = self.endog.shape[1] + self.k_ar = k_ar_diff + 1 + self.k_ar_diff = k_ar_diff + self.coint_rank = coint_rank + self.deterministic = deterministic + self.seasons = seasons + self.first_season = first_season + self.load_coef_repr = "ec" # name for loading coef. (alpha) in summary + + def fit(self, method="ml"): + """ + Estimates the parameters of a VECM. + + The estimation procedure is described on pp. 269-304 in [1]_. + + Parameters + ---------- + method : str {"ml"}, default: "ml" + Estimation method to use. "ml" stands for Maximum Likelihood. + + Returns + ------- + est : :class:`VECMResults` + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + """ + if method == "ml": + return self._estimate_vecm_ml() + else: + raise ValueError("%s not recognized, must be among %s" + % (method, "ml")) + + def _estimate_vecm_ml(self): + y_1_T, delta_y_1_T, y_lag1, delta_x = _endog_matrices( + self.y, self.exog, self.exog_coint, self.k_ar_diff, + self.deterministic, self.seasons, self.first_season) + T = y_1_T.shape[1] + + s00, s01, s10, s11, s11_, _, v = _sij(delta_x, delta_y_1_T, y_lag1) + + beta_tilde = (v[:, :self.coint_rank].T.dot(s11_)).T + beta_tilde = np.real_if_close(beta_tilde) + # normalize beta tilde such that eye(r) forms the first r rows of it: + beta_tilde = np.dot(beta_tilde, inv(beta_tilde[:self.coint_rank])) + alpha_tilde = s01.dot(beta_tilde).dot( + inv(beta_tilde.T.dot(s11).dot(beta_tilde))) + gamma_tilde = (delta_y_1_T - alpha_tilde.dot(beta_tilde.T).dot(y_lag1) + ).dot(delta_x.T).dot(inv(np.dot(delta_x, delta_x.T))) + temp = (delta_y_1_T - alpha_tilde.dot(beta_tilde.T).dot(y_lag1) - + gamma_tilde.dot(delta_x)) + sigma_u_tilde = temp.dot(temp.T) / T + + return VECMResults(self.y, self.exog, self.exog_coint, self.k_ar, + self.coint_rank, alpha_tilde, beta_tilde, + gamma_tilde, sigma_u_tilde, + deterministic=self.deterministic, + seasons=self.seasons, delta_y_1_T=delta_y_1_T, + y_lag1=y_lag1, delta_x=delta_x, model=self, + names=self.endog_names, dates=self.data.dates, + first_season=self.first_season) + + @property + def _lagged_param_names(self): + """ + Returns parameter names (for Gamma and deterministics) for the summary. + + Returns + ------- + param_names : list of str + Returns a list of parameter names for the lagged endogenous + parameters which are called :math:`\\Gamma` in [1]_ + (see chapter 6). + If present in the model, also names for deterministic terms outside + the cointegration relation are returned. They name the elements of + the matrix C in [1]_ (p. 299). + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + """ + param_names = [] + + # 1. Deterministic terms outside cointegration relation + if "co" in self.deterministic: + param_names += ["const.%s" % n for n in self.endog_names] + + if self.seasons > 0: + param_names += ["season%d.%s" % (s, n) + for s in range(1, self.seasons) + for n in self.endog_names] + + if "lo" in self.deterministic: + param_names += ["lin_trend.%s" % n for n in self.endog_names] + + if self.exog is not None: + param_names += ["exog%d.%s" % (exog_no, n) + for exog_no in range(1, self.exog.shape[1] + 1) + for n in self.endog_names] + + # 2. lagged endogenous terms + param_names += [ + "L%d.%s.%s" % (i+1, n1, n2) + for n2 in self.endog_names + for i in range(self.k_ar_diff) + for n1 in self.endog_names] + + return param_names + + @property + def _load_coef_param_names(self): + """ + Returns parameter names (for alpha) for the summary. + + Returns + ------- + param_names : list of str + Returns a list of parameter names for the loading coefficients + which are called :math:`\\alpha` in [1]_ (see chapter 6). + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + """ + param_names = [] + + if self.coint_rank == 0: + return None + + # loading coefficients (alpha) # called "ec" in JMulTi, "ECT" in tsDyn, + param_names += [ # and "_ce" in Stata + self.load_coef_repr + "%d.%s" % (i+1, self.endog_names[j]) + for j in range(self.neqs) + for i in range(self.coint_rank) + ] + + return param_names + + @property + def _coint_param_names(self): + """ + Returns parameter names (for beta and deterministics) for the summary. + + Returns + ------- + param_names : list of str + Returns a list of parameter names for the cointegration matrix + as well as deterministic terms inside the cointegration relation + (if present in the model). + + """ + # 1. cointegration matrix/vector + param_names = [] + + param_names += [("beta.%d." + self.load_coef_repr + "%d") % (j+1, i+1) + for i in range(self.coint_rank) + for j in range(self.neqs)] + + # 2. deterministic terms inside cointegration relation + if "ci" in self.deterministic: + param_names += ["const." + self.load_coef_repr + "%d" % (i+1) + for i in range(self.coint_rank)] + + if "li" in self.deterministic: + param_names += ["lin_trend." + self.load_coef_repr + "%d" % (i+1) + for i in range(self.coint_rank)] + + if self.exog_coint is not None: + param_names += ["exog_coint%d.%s" % (n+1, exog_no) + for exog_no in range(1, self.exog_coint.shape[1]+1) + for n in range(self.neqs)] + + return param_names + + +class VECMResults(object): + """Class for holding estimation related results of a vector error + correction model (VECM). + + Parameters + ---------- + endog : ndarray (neqs x nobs_tot) + Array of observations. + exog : ndarray (nobs_tot x neqs) or `None` + Deterministic terms outside the cointegration relation. + exog_coint : ndarray (nobs_tot x neqs) or `None` + Deterministic terms inside the cointegration relation. + k_ar : int, >= 1 + Lags in the VAR representation. This implies that the number of lags in + the VEC representation (=lagged differences) equals :math:`k_{ar} - 1`. + coint_rank : int, 0 <= `coint_rank` <= neqs + Cointegration rank, equals the rank of the matrix :math:`\\Pi` and the + number of columns of :math:`\\alpha` and :math:`\\beta`. + alpha : ndarray (neqs x `coint_rank`) + Estimate for the parameter :math:`\\alpha` of a VECM. + beta : ndarray (neqs x `coint_rank`) + Estimate for the parameter :math:`\\beta` of a VECM. + gamma : ndarray (neqs x neqs*(k_ar-1)) + Array containing the estimates of the :math:`k_{ar}-1` parameter + matrices :math:`\\Gamma_1, \\dots, \\Gamma_{k_{ar}-1}` of a + VECM(:math:`k_{ar}-1`). The submatrices are stacked horizontally from + left to right. + sigma_u : ndarray (neqs x neqs) + Estimate of white noise process covariance matrix :math:`\\Sigma_u`. + deterministic : str {``"nc"``, ``"co"``, ``"ci"``, ``"lo"``, ``"li"``} + * ``"nc"`` - no deterministic terms + * ``"co"`` - constant outside the cointegration relation + * ``"ci"`` - constant within the cointegration relation + * ``"lo"`` - linear trend outside the cointegration relation + * ``"li"`` - linear trend within the cointegration relation + + Combinations of these are possible (e.g. ``"cili"`` or ``"colo"`` for + linear trend with intercept). See the docstring of the + :class:`VECM`-class for more information. + seasons : int, default: 0 + Number of periods in a seasonal cycle. 0 means no seasons. + first_season : int, default: 0 + Season of the first observation. + delta_y_1_T : ndarray or `None`, default: `None` + Auxilliary array for internal computations. It will be calculated if + not given as parameter. + y_lag1 : ndarray or `None`, default: `None` + Auxilliary array for internal computations. It will be calculated if + not given as parameter. + delta_x : ndarray or `None`, default: `None` + Auxilliary array for internal computations. It will be calculated if + not given as parameter. + model : :class:`VECM` + An instance of the :class:`VECM`-class. + names : list of str + Each str in the list represents the name of a variable of the time + series. + dates : array-like + For example a DatetimeIndex of length nobs_tot. + + Attributes + ---------- + nobs : int + Number of observations (excluding the presample). + model : see Parameters + y_all : see `endog` in Parameters + exog : see Parameters + exog_coint : see Parameters + names : see Parameters + dates : see Parameters + neqs : int + Number of variables in the time series. + k_ar : see Parameters + deterministic : see Parameters + seasons : see Parameters + first_season : see Parameters + alpha : see Parameters + beta : see Parameters + gamma : see Parameters + sigma_u : see Parameters + det_coef_coint : ndarray (#(determinist. terms inside the coint. rel.) x `coint_rank`) + Estimated coefficients for the all deterministic terms inside the + cointegration relation. + const_coint : ndarray (1 x `coint_rank`) + If there is a constant deterministic term inside the cointegration + relation, then `const_coint` is the first row of `det_coef_coint`. + Otherwise it's an ndarray of zeros. + lin_trend_coint : ndarray (1 x `coint_rank`) + If there is a linear deterministic term inside the cointegration + relation, then `lin_trend_coint` contains the corresponding estimated + coefficients. As such it represents the corresponding row of + `det_coef_coint`. If there is no linear deterministic term inside + the cointegration relation, then `lin_trend_coint` is an ndarray of + zeros. + exog_coint_coefs : ndarray (exog_coint.shape[1] x `coint_rank`) or `None` + If deterministic terms inside the cointegration relation are passed via + the `exog_coint` parameter, then `exog_coint_coefs` contains the + corresponding estimated coefficients. As such `exog_coint_coefs` + represents the last rows of `det_coef_coint`. + If no deterministic terms were passed via the `exog_coint` parameter, + this attribute is `None`. + det_coef : ndarray (neqs x #(deterministic terms outside the coint. rel.)) + Estimated coefficients for the all deterministic terms outside the + cointegration relation. + const : ndarray (neqs x 1) or (neqs x 0) + If a constant deterministic term outside the cointegration is specified + within the deterministic parameter, then `const` is the first column + of `det_coef_coint`. Otherwise it's an ndarray of size zero. + seasonal : ndarray (neqs x seasons) + If the `seasons` parameter is > 0, then seasonal contains the + estimated coefficients corresponding to the seasonal terms. Otherwise + it's an ndarray of size zero. + lin_trend : ndarray (neqs x 1) or (neqs x 0) + If a linear deterministic term outside the cointegration is specified + within the deterministic parameter, then `lin_trend` contains the + corresponding estimated coefficients. As such it represents the + corresponding column of `det_coef_coint`. If there is no linear + deterministic term outside the cointegration relation, then + `lin_trend` is an ndarray of size zero. + exog_coefs : ndarray (neqs x exog_coefs.shape[1]) + If deterministic terms outside the cointegration relation are passed + via the `exog` parameter, then `exog_coefs` contains the + corresponding estimated coefficients. As such `exog_coefs` represents + the last columns of `det_coef`. + If no deterministic terms were passed via the `exog` parameter, this + attribute is an ndarray of size zero. + _delta_y_1_T : see delta_y_1_T in Parameters + _y_lag1 : see y_lag1 in Parameters + _delta_x : see delta_x in Parameters + coint_rank : int + Cointegration rank, equals the rank of the matrix :math:`\\Pi` and the + number of columns of :math:`\\alpha` and :math:`\\beta`. + llf : float + The model's log-likelihood. + cov_params : ndarray (d x d) + Covariance matrix of the parameters. The number of rows and columns, d + (used in the dimension specification of this argument), + is equal to neqs * (neqs+num_det_coef_coint + neqs*(k_ar-1)+number of + deterministic dummy variables outside the cointegration relation). For + the case with no deterministic terms this matrix is defined on p. 287 + in [1]_ as :math:`\\Sigma_{co}` and its relationship to the + ML-estimators can be seen in eq. (7.2.21) on p. 296 in [1]_. + cov_params_wo_det : ndarray + Covariance matrix of the parameters + :math:`\\tilde{\\Pi}, \\tilde{\\Gamma}` where + :math:`\\tilde{\\Pi} = \\tilde{\\alpha} \\tilde{\\beta'}`. + Equals `cov_params` without the rows and columns related to + deterministic terms. This matrix is defined as :math:`\\Sigma_{co}` on + p. 287 in [1]_. + stderr_params : ndarray (d) + Array containing the standard errors of :math:`\\Pi`, :math:`\\Gamma`, + and estimated parameters related to deterministic terms. + stderr_coint : ndarray (neqs+num_det_coef_coint x `coint_rank`) + Array containing the standard errors of :math:`\\beta` and estimated + parameters related to deterministic terms inside the cointegration + relation. + stderr_alpha : ndarray (neqs x `coint_rank`) + The standard errors of :math:`\\alpha`. + stderr_beta : ndarray (neqs x `coint_rank`) + The standard errors of :math:`\\beta`. + stderr_det_coef_coint : ndarray (num_det_coef_coint x `coint_rank`) + The standard errors of estimated the parameters related to + deterministic terms inside the cointegration relation. + stderr_gamma : ndarray (neqs x neqs*(k_ar-1)) + The standard errors of :math:`\\Gamma_1, \\ldots, \\Gamma_{k_{ar}-1}`. + stderr_det_coef : ndarray (neqs x det. terms outside the coint. relation) + The standard errors of estimated the parameters related to + deterministic terms outside the cointegration relation. + tvalues_alpha : ndarray (neqs x `coint_rank`) + tvalues_beta : ndarray (neqs x `coint_rank`) + tvalues_det_coef_coint : ndarray (num_det_coef_coint x `coint_rank`) + tvalues_gamma : ndarray (neqs x neqs*(k_ar-1)) + tvalues_det_coef : ndarray (neqs x det. terms outside the coint. relation) + pvalues_alpha : ndarray (neqs x `coint_rank`) + pvalues_beta : ndarray (neqs x `coint_rank`) + pvalues_det_coef_coint : ndarray (num_det_coef_coint x `coint_rank`) + pvalues_gamma : ndarray (neqs x neqs*(k_ar-1)) + pvalues_det_coef : ndarray (neqs x det. terms outside the coint. relation) + var_rep : (k_ar x neqs x neqs) + KxK parameter matrices :math:`A_i` of the corresponding VAR + representation. If the return value is assigned to a variable ``A``, + these matrices can be accessed via ``A[i]`` for + :math:`i=0, \\ldots, k_{ar}-1`. + cov_var_repr : ndarray (neqs**2 * k_ar x neqs**2 * k_ar) + This matrix is called :math:`\\Sigma^{co}_{\\alpha}` on p. 289 in [1]_. + It is needed e.g. for impulse-response-analysis. + fittedvalues : ndarray (nobs x neqs) + The predicted in-sample values of the models' endogenous variables. + resid : ndarray (nobs x neqs) + The residuals. + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + """ + + def __init__(self, endog, exog, exog_coint, k_ar, + coint_rank, alpha, beta, gamma, sigma_u, deterministic='nc', + seasons=0, first_season=0, delta_y_1_T=None, y_lag1=None, + delta_x=None, model=None, names=None, dates=None): + self.model = model + self.y_all = endog + self.exog = exog + self.exog_coint = exog_coint + self.names = names + self.dates = dates + self.neqs = endog.shape[0] + self.k_ar = k_ar + self.deterministic = deterministic + self.seasons = seasons + self.first_season = first_season + + self.coint_rank = coint_rank + if alpha.dtype == np.complex128 and np.all(np.imag(alpha) == 0): + alpha = np.real_if_close(alpha) + if beta.dtype == np.complex128 and np.all(np.imag(beta) == 0): + beta = np.real_if_close(beta) + if gamma.dtype == np.complex128 and np.all(np.imag(gamma) == 0): + gamma = np.real_if_close(gamma) + + self.alpha = alpha + self.beta, self.det_coef_coint = np.vsplit(beta, [self.neqs]) + self.gamma, self.det_coef = np.hsplit(gamma, + [self.neqs * (self.k_ar - 1)]) + + if "ci" in deterministic: + self.const_coint = self.det_coef_coint[:1, :] + else: + self.const_coint = np.zeros(coint_rank).reshape((1, -1)) + if "li" in deterministic: + start = 1 if "ci" in deterministic else 0 + self.lin_trend_coint = self.det_coef_coint[start:start+1, :] + else: + self.lin_trend_coint = np.zeros(coint_rank).reshape(1, -1) + if self.exog_coint is not None: + start = ("ci" in deterministic) + ("li" in deterministic) + self.exog_coint_coefs = self.det_coef_coint[start:, :] + else: + self.exog_coint_coefs = None + + split_const_season = 1 if "co" in deterministic else 0 + split_season_lin = split_const_season + ((seasons-1) if seasons else 0) + if "lo" in deterministic: + split_lin_exog = split_season_lin + 1 + else: + split_lin_exog = split_season_lin + self.const, self.seasonal, self.lin_trend, self.exog_coefs = \ + np.hsplit(self.det_coef, + [split_const_season, split_season_lin, split_lin_exog]) + + self.sigma_u = sigma_u + + if y_lag1 is not None and delta_x is not None \ + and delta_y_1_T is not None: + self._delta_y_1_T = delta_y_1_T + self._y_lag1 = y_lag1 + self._delta_x = delta_x + else: + _y_1_T, self._delta_y_1_T, self._y_lag1, self._delta_x = \ + _endog_matrices(endog, self.exog, k_ar, + deterministic, seasons) + self.nobs = self._y_lag1.shape[1] + + @cache_readonly + def llf(self): # Lutkepohl p. 295 (7.2.20) + """ + Compute the VECM's loglikelihood. + """ + K = self.neqs + T = self.nobs + r = self.coint_rank + s00, _, _, _, _, lambd, _ = _sij(self._delta_x, self._delta_y_1_T, + self._y_lag1) + return - K * T * np.log(2*np.pi) / 2 \ + - T * (np.log(np.linalg.det(s00)) + sum(np.log(1-lambd)[:r])) / 2 \ + - K * T / 2 + + @cache_readonly + def _cov_sigma(self): + sigma_u = self.sigma_u + d = duplication_matrix(self.neqs) + d_K_plus = np.linalg.pinv(d) + # compare p. 93, 297 Lutkepohl (2005) + return 2 * chain_dot(d_K_plus, np.kron(sigma_u, sigma_u), d_K_plus.T) + + @cache_readonly + def cov_params_default(self): # p.296 (7.2.21) + # Sigma_co described on p. 287 + beta = self.beta + if self.det_coef_coint.size > 0: + beta = vstack((beta, self.det_coef_coint)) + dt = self.deterministic + num_det = ("co" in dt) + ("lo" in dt) + num_det += (self.seasons-1) if self.seasons else 0 + if self.exog is not None: + num_det += self.exog.shape[1] + b_id = scipy.linalg.block_diag(beta, + np.identity(self.neqs * (self.k_ar-1) + + num_det)) + + y_lag1 = self._y_lag1 + b_y = beta.T.dot(y_lag1) + omega11 = b_y.dot(b_y.T) + omega12 = b_y.dot(self._delta_x.T) + omega21 = omega12.T + omega22 = self._delta_x.dot(self._delta_x.T) + omega = np.bmat([[omega11, omega12], + [omega21, omega22]]).A + + mat1 = b_id.dot(inv(omega)).dot(b_id.T) + return np.kron(mat1, self.sigma_u) + + @cache_readonly + def cov_params_wo_det(self): + # rows & cols to be dropped (related to deterministic terms inside the + # cointegration relation) + start_i = self.neqs**2 # first elements belong to alpha @ beta.T + end_i = start_i + self.neqs * self.det_coef_coint.shape[0] + to_drop_i = np.arange(start_i, end_i) + + # rows & cols to be dropped (related to deterministic terms outside of + # the cointegration relation) + cov = self.cov_params_default + cov_size = len(cov) + to_drop_o = np.arange(cov_size-self.det_coef.size, cov_size) + + to_drop = np.union1d(to_drop_i, to_drop_o) + + mask = np.ones(cov.shape, dtype=bool) + mask[to_drop] = False + mask[:, to_drop] = False + cov_size_new = mask.sum(axis=0)[0] + return cov[mask].reshape((cov_size_new, cov_size_new)) + + # standard errors: + @cache_readonly + def stderr_params(self): + return np.sqrt(np.diag(self.cov_params_default)) + + @cache_readonly + def stderr_coint(self): + """ + Standard errors of beta and deterministic terms inside the + cointegration relation. + + Notes + ----- + See p. 297 in [1]_. Using the rule + + .. math:: + + vec(B R) = (B' \\otimes I) vec(R) + + for two matrices B and R which are compatible for multiplication. + This is rule (3) on p. 662 in [1]_. + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + """ + r = self.coint_rank + _, r1 = _r_matrices(self._delta_y_1_T, self._y_lag1, self._delta_x) + r12 = r1[r:] + if r12.size == 0: + return np.zeros((r, r)) + mat1 = inv(r12.dot(r12.T)) + mat1 = np.kron(mat1.T, np.identity(r)) + det = self.det_coef_coint.shape[0] + mat2 = np.kron(np.identity(self.neqs-r+det), + inv(chain_dot( + self.alpha.T, inv(self.sigma_u), self.alpha))) + first_rows = np.zeros((r, r)) + last_rows_1d = np.sqrt(np.diag(mat1.dot(mat2))) + last_rows = last_rows_1d.reshape((self.neqs-r+det, r), + order="F") + return vstack((first_rows, + last_rows)) + + @cache_readonly + def stderr_alpha(self): + ret_1dim = self.stderr_params[:self.alpha.size] + return ret_1dim.reshape(self.alpha.shape, order="F") + + @cache_readonly + def stderr_beta(self): + ret_1dim = self.stderr_coint[:self.beta.shape[0]] + return ret_1dim.reshape(self.beta.shape, order="F") + + @cache_readonly + def stderr_det_coef_coint(self): + if self.det_coef_coint.size == 0: + return self.det_coef_coint # 0-size array + ret_1dim = self.stderr_coint[self.beta.shape[0]:] + return ret_1dim.reshape(self.det_coef_coint.shape, order="F") + + @cache_readonly + def stderr_gamma(self): + start = self.alpha.shape[0] * (self.beta.shape[0] + + self.det_coef_coint.shape[0]) + ret_1dim = self.stderr_params[start:start+self.gamma.size] + return ret_1dim.reshape(self.gamma.shape, order="F") + + @cache_readonly + def stderr_det_coef(self): + if self.det_coef.size == 0: + return self.det_coef # 0-size array + ret1_1dim = self.stderr_params[-self.det_coef.size:] + return ret1_1dim.reshape(self.det_coef.shape, order="F") + + # t-values: + @cache_readonly + def tvalues_alpha(self): + return self.alpha / self.stderr_alpha + + @cache_readonly + def tvalues_beta(self): + r = self.coint_rank + first_rows = np.zeros((r, r)) + last_rows = self.beta[r:] / self.stderr_beta[r:] + return vstack((first_rows, + last_rows)) + + @cache_readonly + def tvalues_det_coef_coint(self): + if self.det_coef_coint.size == 0: + return self.det_coef_coint # 0-size array + return self.det_coef_coint / self.stderr_det_coef_coint + + @cache_readonly + def tvalues_gamma(self): + return self.gamma / self.stderr_gamma + + @cache_readonly + def tvalues_det_coef(self): + if self.det_coef.size == 0: + return self.det_coef # 0-size array + return self.det_coef / self.stderr_det_coef + + # p-values: + @cache_readonly + def pvalues_alpha(self): + return (1-scipy.stats.norm.cdf(abs(self.tvalues_alpha))) * 2 + + @cache_readonly + def pvalues_beta(self): + first_rows = np.zeros((self.coint_rank, self.coint_rank)) + tval_last = self.tvalues_beta[self.coint_rank:] + last_rows = (1-scipy.stats.norm.cdf(abs(tval_last))) * 2 # student-t + return vstack((first_rows, + last_rows)) + + @cache_readonly + def pvalues_det_coef_coint(self): + if self.det_coef_coint.size == 0: + return self.det_coef_coint # 0-size array + return (1-scipy.stats.norm.cdf(abs(self.tvalues_det_coef_coint))) * 2 + + @cache_readonly + def pvalues_gamma(self): + return (1-scipy.stats.norm.cdf(abs(self.tvalues_gamma))) * 2 + + @cache_readonly + def pvalues_det_coef(self): + if self.det_coef.size == 0: + return self.det_coef # 0-size array + return (1-scipy.stats.norm.cdf(abs(self.tvalues_det_coef))) * 2 + + # confidence intervals + def _make_conf_int(self, est, stderr, alpha): + struct_arr = np.zeros(est.shape, dtype=[("lower", float), + ("upper", float)]) + struct_arr["lower"] = est - scipy.stats.norm.ppf(1 - alpha/2) * stderr + struct_arr["upper"] = est + scipy.stats.norm.ppf(1 - alpha/2) * stderr + return struct_arr + + def conf_int_alpha(self, alpha=0.05): + return self._make_conf_int(self.alpha, self.stderr_alpha, alpha) + + def conf_int_beta(self, alpha=0.05): + return self._make_conf_int(self.beta, self.stderr_beta, alpha) + + def conf_int_det_coef_coint(self, alpha=0.05): + return self._make_conf_int(self.det_coef_coint, + self.stderr_det_coef_coint, alpha) + + def conf_int_gamma(self, alpha=0.05): + return self._make_conf_int(self.gamma, self.stderr_gamma, alpha) + + def conf_int_det_coef(self, alpha=0.05): + return self._make_conf_int(self.det_coef, self.stderr_det_coef, alpha) + + @cache_readonly + def var_rep(self): + pi = self.alpha.dot(self.beta.T) + gamma = self.gamma + K = self.neqs + A = np.zeros((self.k_ar, K, K)) + A[0] = pi + np.identity(K) + if self.gamma.size > 0: + A[0] += gamma[:, :K] + A[self.k_ar-1] = - gamma[:, K*(self.k_ar-2):] + for i in range(1, self.k_ar-1): + A[i] = gamma[:, K*i:K*(i+1)] - gamma[:, K*(i-1):K*i] + return A + + @cache_readonly + def cov_var_repr(self): + """ + Gives the covariance matrix of the corresponding VAR-representation. + + More precisely, the covariance matrix of the vector consisting of the + columns of the corresponding VAR coefficient matrices (i.e. + vec(self.var_rep)). + + Returns + ------- + cov : array (neqs**2 * k_ar x neqs**2 * k_ar) + + """ + # This implementation is using the fact that for a random variable x + # with covariance matrix Sigma_x the following holds: + # B @ x with B being a suitably sized matrix has the covariance matrix + # B @ Sigma_x @ B.T. The arrays called vecm_var_transformation and + # self.cov_params_wo_det in the code play the roles of B and Sigma_x + # respectively. The elements of the random variable x are the elements + # of the estimated matrices Pi (alpha @ beta.T) and Gamma. + # Alternatively the following code (commented out) would yield the same + # result (following p. 289 in Lutkepohl): + # K, p = self.neqs, self.k_ar + # w = np.identity(K * p) + # w[np.arange(K, len(w)), np.arange(K, len(w))] *= (-1) + # w[np.arange(K, len(w)), np.arange(len(w)-K)] = 1 + # + # w_eye = np.kron(w, np.identity(K)) + # + # return chain_dot(w_eye.T, self.cov_params_default, w_eye) + + if self.k_ar - 1 == 0: + return self.cov_params_wo_det + + vecm_var_transformation = np.zeros((self.neqs**2 * self.k_ar, + self.neqs**2 * self.k_ar)) + eye = np.identity(self.neqs**2) + # for A_1: + vecm_var_transformation[:self.neqs**2, :2*self.neqs**2] = hstack( + (eye, eye)) + # for A_i, where i = 2, ..., k_ar-1 + for i in range(2, self.k_ar): + start_row = self.neqs**2 + (i-2) * self.neqs**2 + start_col = self.neqs**2 + (i-2) * self.neqs**2 + vecm_var_transformation[start_row:start_row+self.neqs**2, + start_col:start_col+2*self.neqs**2] = hstack((-eye, eye)) + # for A_p: + vecm_var_transformation[-self.neqs**2:, -self.neqs**2:] = -eye + return chain_dot(vecm_var_transformation, self.cov_params_wo_det, + vecm_var_transformation.T) + + def ma_rep(self, maxn=10): + return ma_rep(self.var_rep, maxn) + + @cache_readonly + def _chol_sigma_u(self): + return np.linalg.cholesky(self.sigma_u) + + def orth_ma_rep(self, maxn=10, P=None): + """Compute orthogonalized MA coefficient matrices. + + For this purpose a matrix P is used which fulfills + :math:`\\Sigma_u = PP^\\prime`. P defaults to the Cholesky + decomposition of :math:`\\Sigma_u` + + Parameters + ---------- + maxn : int + Number of coefficient matrices to compute + P : ndarray (neqs x neqs), optional + Matrix such that :math:`\\Sigma_u = PP'`. Defaults to Cholesky + decomposition. + + Returns + ------- + coefs : ndarray (maxn x neqs x neqs) + """ + return orth_ma_rep(self, maxn, P) + + def predict(self, steps=5, alpha=None, exog_fc=None, exog_coint_fc=None): + """ + Calculate future values of the time series. + + Parameters + ---------- + steps : int + Prediction horizon. + alpha : float, 0 < `alpha` < 1 or None + If None, compute point forecast only. + If float, compute confidence intervals too. In this case the + argument stands for the confidence level. + exog : ndarray (steps x self.exog.shape[1]) + If self.exog is not None, then information about the future values + of exog have to be passed via this parameter. The ndarray may be + larger in it's first dimension. In this case only the first steps + rows will be considered. + + Returns + ------- + forecast - ndarray (steps x neqs) or three ndarrays + In case of a point forecast: each row of the returned ndarray + represents the forecast of the neqs variables for a specific + period. The first row (index [0]) is the forecast for the next + period, the last row (index [steps-1]) is the steps-periods-ahead- + forecast. + """ + if self.exog is not None and exog_fc is None: + raise ValueError("exog_fc is None: Please pass the future values " + "of the VECM's exog terms via the exog_fc " + "argument!") + if self.exog is None and exog_fc is not None: + raise ValueError("This VECMResult-instance's exog attribute is " + "None. Please don't pass a non-None value as the " + "method's exog_fc-argument.") + if exog_fc is not None and exog_fc.shape[0] < steps: + raise ValueError("The argument exog_fc must have at least steps " + "elements in its first dimension") + + if self.exog_coint is not None and exog_coint_fc is None: + raise ValueError("exog_coint_fc is None: Please pass the future " + "values of the VECM's exog_coint terms via the " + "exog_coint_fc argument!") + if self.exog_coint is None and exog_coint_fc is not None: + raise ValueError("This VECMResult-instance's exog_coint attribute " + "is None. Please don't pass a non-None value as " + "the method's exog_coint_fc-argument.") + if exog_coint_fc is not None and exog_coint_fc.shape[0] < steps - 1: + raise ValueError("The argument exog_coint_fc must have at least " + "steps elements in its first dimension") + + last_observations = self.y_all.T[-self.k_ar:] + exog = [] + trend_coefs = [] + + # adding deterministic terms outside cointegration relation + exog_const = np.ones(steps) + nobs_tot = self.nobs + self.k_ar + if self.const.size > 0: + exog.append(exog_const) + trend_coefs.append(self.const.T) + + if self.seasons > 0: + first_future_season = (self.first_season + nobs_tot) % self.seasons + exog_seasonal = seasonal_dummies(self.seasons, steps, + first_future_season, True) + exog.append(exog_seasonal) + trend_coefs.append(self.seasonal.T) + + exog_lin_trend = _linear_trend(self.nobs, self.k_ar) + exog_lin_trend = exog_lin_trend[-1] + 1 + np.arange(steps) + if self.lin_trend.size > 0: + exog.append(exog_lin_trend) + trend_coefs.append(self.lin_trend.T) + + if exog_fc is not None: + exog.append(exog_fc[:steps]) + trend_coefs.append(self.exog_coefs.T) + + # adding deterministic terms inside cointegration relation + if "ci" in self.deterministic: + exog.append(exog_const) + trend_coefs.append(self.alpha.dot(self.const_coint.T).T) + exog_lin_trend_coint = _linear_trend(self.nobs, self.k_ar, coint=True) + exog_lin_trend_coint = exog_lin_trend_coint[-1] + 1 + np.arange(steps) + if "li" in self.deterministic: + exog.append(exog_lin_trend_coint) + trend_coefs.append(self.alpha.dot(self.lin_trend_coint.T).T) + + if exog_coint_fc is not None: + if exog_coint_fc.ndim == 1: + exog_coint_fc = exog_coint_fc[:, None] # make 2-D + exog_coint_fc = np.vstack((self.exog_coint[-1:], + exog_coint_fc[:steps-1])) + exog.append(exog_coint_fc) + trend_coefs.append(self.alpha.dot(self.exog_coint_coefs.T).T) + + # glueing all deterministics together + exog = np.column_stack(exog) if exog != [] else None + if trend_coefs != []: + trend_coefs = np.row_stack(trend_coefs) + else: + trend_coefs = None + + # call the forecasting function of the VAR-module + if alpha is not None: + return forecast_interval(last_observations, self.var_rep, + trend_coefs, self.sigma_u, steps, + alpha=alpha, + exog=exog) + else: + return forecast(last_observations, self.var_rep, trend_coefs, + steps, exog) + + def plot_forecast(self, steps, alpha=0.05, plot_conf_int=True, + n_last_obs=None): + """ + Plot the forecast. + + Parameters + ---------- + steps : int + Prediction horizon. + alpha : float, 0 < `alpha` < 1 + The confidence level. + plot_conf_int : bool, default: True + If True, plot bounds of confidence intervals. + n_last_obs : int or None, default: None + If int, restrict plotted history to n_last_obs observations. + If None, include the whole history in the plot. + """ + mid, lower, upper = self.predict(steps, alpha=alpha) + + y = self.y_all.T + y = y[self.k_ar:] if n_last_obs is None else y[-n_last_obs:] + plot.plot_var_forc(y, mid, lower, upper, names=self.names, + plot_stderr=plot_conf_int, + legend_options={"loc": "lower left"}) + + def test_granger_causality(self, caused, causing=None, signif=0.05): + r""" + Test for Granger-causality. + + The concept of Granger-causality is described in chapter 7.6.3 of [1]_. + Test |H0|: "The variables in `causing` do not Granger-cause those in + `caused`" against |H1|: "`causing` is Granger-causal for + `caused`". + + Parameters + ---------- + caused : int or str or sequence of int or str + If int or str, test whether the variable specified via this index + (int) or name (str) is Granger-caused by the variable(s) specified + by `causing`. + If a sequence of int or str, test whether the corresponding + variables are Granger-caused by the variable(s) specified + by `causing`. + causing : int or str or sequence of int or str or `None`, default: `None` + If int or str, test whether the variable specified via this index + (int) or name (str) is Granger-causing the variable(s) specified by + `caused`. + If a sequence of int or str, test whether the corresponding + variables are Granger-causing the variable(s) specified by + `caused`. + If `None`, `causing` is assumed to be the complement of + `caused` (the remaining variables of the system). + signif : float, 0 < `signif` < 1, default 5 % + Significance level for computing critical values for test, + defaulting to standard 0.05 level. + + Returns + ------- + results : :class:`statsmodels.tsa.vector_ar.hypothesis_test_results.CausalityTestResults` + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + + .. |H0| replace:: H\ :sub:`0` + + .. |H1| replace:: H\ :sub:`1` + """ + if not (0 < signif < 1): + raise ValueError("signif has to be between 0 and 1") + + allowed_types = (string_types, int) + + if isinstance(caused, allowed_types): + caused = [caused] + if not all(isinstance(c, allowed_types) for c in caused): + raise TypeError("caused has to be of type string or int (or a " + "sequence of these types).") + caused = [self.names[c] if type(c) == int else c for c in caused] + caused_ind = [get_index(self.names, c) for c in caused] + + if causing is not None: + + if isinstance(causing, allowed_types): + causing = [causing] + if not all(isinstance(c, allowed_types) for c in causing): + raise TypeError("causing has to be of type string or int (or " + "a sequence of these types) or None.") + causing = [self.names[c] if type(c) == int else c for c in causing] + causing_ind = [get_index(self.names, c) for c in causing] + + if causing is None: + causing_ind = [i for i in range(self.neqs) if i not in caused_ind] + causing = [self.names[c] for c in causing_ind] + + y, k, t, p = self.y_all, self.neqs, self.nobs - 1, self.k_ar + 1 + exog = _deterministic_to_exog(self.deterministic, self.seasons, + nobs_tot=self.nobs + self.k_ar, + first_season=self.first_season, + seasons_centered=True, exog=self.exog, + exog_coint=self.exog_coint) + var_results = VAR(y.T, exog).fit(maxlags=p, trend="nc") + + # num_restr is called N in Lutkepohl + num_restr = len(causing) * len(caused) * (p - 1) + num_det_terms = _num_det_vars(self.deterministic, self.seasons) + if self.exog is not None: + num_det_terms += self.exog.shape[1] + if self.exog_coint is not None: + num_det_terms += self.exog_coint.shape[1] + + # Make restriction matrix + C = np.zeros((num_restr, k*num_det_terms + k**2 * (p-1)), dtype=float) + cols_det = k * num_det_terms + row = 0 + for j in range(p-1): + for ing_ind in causing_ind: + for ed_ind in caused_ind: + C[row, cols_det + ed_ind + k * ing_ind + k**2 * j] = 1 + row += 1 + Ca = np.dot(C, vec(var_results.params[:-k].T)) + + x_min_p_components = [] + if exog is not None: + x_min_p_components.append(exog[-t:].T) + + x_min_p = np.zeros((k * p, t)) + for i in range(p-1): # fll first k * k_ar rows of x_min_p + x_min_p[i*k:(i+1)*k, :] = y[:, p-1-i:-1-i] - y[:, :-p] + x_min_p[-k:, :] = y[:, :-p] # fill last rows of x_min_p + x_min_p_components.append(x_min_p) + + x_min_p = np.row_stack(x_min_p_components) + x_x = np.dot(x_min_p, x_min_p.T) # k*k_ar x k*k_ar + x_x_11 = inv(x_x)[:k*(p-1) + num_det_terms, + :k*(p-1) + num_det_terms] # k*(k_ar-1) x k*(k_ar-1) + # For VAR-models with parameter restrictions the denominator in the + # calculation of sigma_u is nobs and not (nobs-k*k_ar-num_det_terms). + # Testing for Granger-causality means testing for restricted + # parameters, thus the former of the two denominators is used. As + # Lutkepohl states, both variants of the estimated sigma_u are + # possible. (see Lutkepohl, p.198) + # The choice of the denominator T has also the advantage of getting the + # same results as the reference software JMulTi. + sigma_u = var_results.sigma_u * (t-k*p-num_det_terms) / t + sig_alpha_min_p = t * np.kron(x_x_11, sigma_u) # k**2*(p-1)xk**2*(p-1) + middle = inv(chain_dot(C, sig_alpha_min_p, C.T)) + + wald_statistic = t * chain_dot(Ca.T, middle, Ca) + f_statistic = wald_statistic / num_restr + df = (num_restr, k * var_results.df_resid) + f_distribution = scipy.stats.f(*df) + + pvalue = f_distribution.sf(f_statistic) + crit_value = f_distribution.ppf(1 - signif) + return CausalityTestResults(causing, caused, f_statistic, crit_value, + pvalue, df, signif, test="granger", + method="f") + + def test_inst_causality(self, causing, signif=0.05): + r""" + Test for instantaneous causality. + + The concept of instantaneous causality is described in chapters 3.6.3 + and 7.6.4 of [1]_. Test |H0|: "No instantaneous causality between the + variables in `caused` and those in `causing`" against |H1|: + "Instantaneous causality between `caused` and `causing` exists". + Note that instantaneous causality is a symmetric relation + (i.e. if `causing` is "instantaneously causing" `caused`, then also + `caused` is "instantaneously causing" `causing`), thus the naming of + the parameters (which is chosen to be in accordance with + :meth:`test_granger_causality()`) may be misleading. + + Parameters + ---------- + causing : int or str or sequence of int or str + If int or str, test whether the corresponding variable is causing + the variable(s) specified in caused. + If sequence of int or str, test whether the corresponding variables + are causing the variable(s) specified in caused. + signif : float, 0 < `signif` < 1, default 5 % + Significance level for computing critical values for test, + defaulting to standard 0.05 level. + + Returns + ------- + results : :class:`statsmodels.tsa.vector_ar.hypothesis_test_results.CausalityTestResults` + + Notes + ----- + This method is not returning the same result as `JMulTi`. This is + because the test is based on a VAR(k_ar) model in `statsmodels` (in + accordance to pp. 104, 320-321 in [1]_) whereas `JMulTi` seems to be + using a VAR(k_ar+1) model. Reducing the lag order by one in `JMulTi` + leads to equal results in `statsmodels` and `JMulTi`. + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + + .. |H0| replace:: H\ :sub:`0` + + .. |H1| replace:: H\ :sub:`1` + """ + exog = _deterministic_to_exog(self.deterministic, self.seasons, + nobs_tot=self.nobs + self.k_ar, + first_season=self.first_season, + seasons_centered=True, exog=self.exog, + exog_coint=self.exog_coint) + + # Note: JMulTi seems to be using k_ar+1 instead of k_ar + k, t, p = self.neqs, self.nobs, self.k_ar + # fit with trend "nc" because all trend information is already in exog + var_results = VAR(self.y_all.T, exog).fit(maxlags=p, trend="nc") + var_results._results.names = self.names + return var_results.test_inst_causality(causing=causing, signif=signif) + + def irf(self, periods=10): + return irf.IRAnalysis(self, periods=periods, vecm=True) + + @cache_readonly + def fittedvalues(self): + """ + Return the in-sample values of endog calculated by the model. + + Returns + ------- + fitted : array (nobs x neqs) + The predicted in-sample values of the models' endogenous variables. + """ + beta = self.beta + if self.det_coef_coint.size > 0: + beta = vstack((beta, self.det_coef_coint)) + pi = np.dot(self.alpha, beta.T) + + gamma = self.gamma + if self.det_coef.size > 0: + gamma = hstack((gamma, self.det_coef)) + delta_y = np.dot(pi, self._y_lag1) + np.dot(gamma, self._delta_x) + return (delta_y + self._y_lag1[:self.neqs]).T + + @cache_readonly + def resid(self): + """ + Return the difference between observed and fitted values. + + Returns + ------- + resid : array (nobs x neqs) + The residuals. + """ + return self.y_all.T[self.k_ar:] - self.fittedvalues + + def test_normality(self, signif=0.05): + r""" + Test assumption of normal-distributed errors using Jarque-Bera-style + omnibus :math:`\\chi^2` test. + + Parameters + ---------- + signif : float + The test's significance level. + + Returns + ------- + result : :class:`statsmodels.tsa.vector_ar.hypothesis_test_results.NormalityTestResults` + + Notes + ----- + |H0| : data are generated by a Gaussian-distributed process + + .. |H0| replace:: H\ :sub:`0` + """ + return test_normality(self, signif=signif) + + def test_whiteness(self, nlags=10, signif=0.05, adjusted=False): + """ + Test the whiteness of the residuals using the Portmanteau test. + + This test is described in [1]_, chapter 8.4.1. + + Parameters + ---------- + nlags : int > 0 + signif : float, 0 < `signif` < 1 + adjusted : bool, default False + + Returns + ------- + result : :class:`statsmodels.tsa.vector_ar.hypothesis_test_results.WhitenessTestResults` + + References + ---------- + .. [1] Lütkepohl, H. 2005. *New Introduction to Multiple Time Series Analysis*. Springer. + """ + + statistic = 0 + u = np.asarray(self.resid) + acov_list = _compute_acov(u, nlags) + # self.sigma_u instead of cov(0) is necessary to get the same + # result as JMulTi. The difference between the two is that sigma_u is + # calculated with the usual residuals while in cov(0) the + # residuals are demeaned. To me JMulTi's behaviour seems a bit strange + # because it uses the usual residuals here but demeaned residuals in + # the calculation of autocovariances with lag > 0. (used in the + # argument of trace() four rows below this comment.) + c0_inv = inv(self.sigma_u) # instead of inv(cov(0)) + if c0_inv.dtype == np.complex128 and np.all(np.imag(c0_inv) == 0): + c0_inv = np.real(c0_inv) + for t in range(1, nlags+1): + ct = acov_list[t] + to_add = np.trace(chain_dot(ct.T, c0_inv, ct, c0_inv)) + if adjusted: + to_add /= (self.nobs - t) + statistic += to_add + statistic *= self.nobs**2 if adjusted else self.nobs + + df = self.neqs**2 * (nlags - self.k_ar + 1) - self.neqs*self.coint_rank + dist = scipy.stats.chi2(df) + pvalue = dist.sf(statistic) + crit_value = dist.ppf(1 - signif) + + return WhitenessTestResults(statistic, crit_value, pvalue, df, signif, + nlags, adjusted) + + def plot_data(self, with_presample=False): + """ + Plot the input time series. + + Parameters + ---------- + with_presample : bool, default: `False` + If `False`, the pre-sample data (the first `k_ar` values) will + not be plotted. + """ + y = self.y_all if with_presample else self.y_all[:, self.k_ar:] + names = self.names + dates = self.dates if with_presample else self.dates[self.k_ar:] + plot.plot_mts(y.T, names=names, index=dates) + + def summary(self, alpha=.05): + """ + Return a summary of the estimation results. + + Parameters + ---------- + alpha : float 0 < `alpha` < 1, default 0.05 + Significance level of the shown confidence intervals. + + Returns + ------- + summary : :class:`statsmodels.iolib.summary.Summary` + A summary containing information about estimated parameters. + """ + from statsmodels.iolib.summary import summary_params + + summary = Summary() + + def make_table(self, params, std_err, t_values, p_values, conf_int, + mask, names, title, strip_end=True): + res = (self, + params[mask], + std_err[mask], + t_values[mask], + p_values[mask], + conf_int[mask] + ) + param_names = [ + '.'.join(name.split('.')[:-1]) if strip_end else name + for name in np.array(names)[mask].tolist()] + return summary_params(res, yname=None, xname=param_names, + alpha=alpha, use_t=False, title=title) + + # --------------------------------------------------------------------- + # Add tables with gamma and det_coef for each endogenous variable: + lagged_params_components = [] + stderr_lagged_params_components = [] + tvalues_lagged_params_components = [] + pvalues_lagged_params_components = [] + conf_int_lagged_params_components = [] + if self.det_coef.size > 0: + lagged_params_components.append(self.det_coef.flatten(order="F")) + stderr_lagged_params_components.append( + self.stderr_det_coef.flatten(order="F")) + tvalues_lagged_params_components.append( + self.tvalues_det_coef.flatten(order="F")) + pvalues_lagged_params_components.append( + self.pvalues_det_coef.flatten(order="F")) + conf_int = self.conf_int_det_coef(alpha=alpha) + lower = conf_int["lower"].flatten(order="F") + upper = conf_int["upper"].flatten(order="F") + conf_int_lagged_params_components.append(np.column_stack( + (lower, upper))) + if self.k_ar - 1 > 0: + lagged_params_components.append(self.gamma.flatten()) + stderr_lagged_params_components.append(self.stderr_gamma.flatten()) + tvalues_lagged_params_components.append( + self.tvalues_gamma.flatten()) + pvalues_lagged_params_components.append( + self.pvalues_gamma.flatten()) + conf_int = self.conf_int_gamma(alpha=alpha) + lower = conf_int["lower"].flatten() + upper = conf_int["upper"].flatten() + conf_int_lagged_params_components.append(np.column_stack( + (lower, upper))) + + # if gamma or det_coef exists, then make a summary-table for them: + if len(lagged_params_components) != 0: + lagged_params = hstack(lagged_params_components) + stderr_lagged_params = hstack(stderr_lagged_params_components) + tvalues_lagged_params = hstack(tvalues_lagged_params_components) + pvalues_lagged_params = hstack(pvalues_lagged_params_components) + conf_int_lagged_params = vstack(conf_int_lagged_params_components) + + for i in range(self.neqs): + masks = [] + offset = 0 + # 1. Deterministic terms outside cointegration relation + if "co" in self.deterministic: + masks.append(offset + np.array(i, ndmin=1)) + offset += self.neqs + if self.seasons > 0: + for _ in range(self.seasons-1): + masks.append(offset + np.array(i, ndmin=1)) + offset += self.neqs + if "lo" in self.deterministic: + masks.append(offset + np.array(i, ndmin=1)) + offset += self.neqs + if self.exog is not None: + for _ in range(self.exog.shape[1]): + masks.append(offset + np.array(i, ndmin=1)) + offset += self.neqs + # 2. Lagged endogenous terms + if self.k_ar - 1 > 0: + start = i * self.neqs * (self.k_ar-1) + end = (i+1) * self.neqs * (self.k_ar-1) + masks.append(offset + np.arange(start, end)) + # offset += self.neqs**2 * (self.k_ar-1) + + # Create the table + mask = np.concatenate(masks) + eq_name = self.model.endog_names[i] + title = "Det. terms outside the coint. relation " + \ + "& lagged endog. parameters for equation %s" % eq_name + table = make_table(self, lagged_params, stderr_lagged_params, + tvalues_lagged_params, + pvalues_lagged_params, + conf_int_lagged_params, mask, + self.model._lagged_param_names, title) + summary.tables.append(table) + + # --------------------------------------------------------------------- + # Loading coefficients (alpha): + a = self.alpha.flatten() + se_a = self.stderr_alpha.flatten() + t_a = self.tvalues_alpha.flatten() + p_a = self.pvalues_alpha.flatten() + ci_a = self.conf_int_alpha(alpha=alpha) + lower = ci_a["lower"].flatten() + upper = ci_a["upper"].flatten() + ci_a = np.column_stack((lower, upper)) + a_names = self.model._load_coef_param_names + alpha_masks = [] + for i in range(self.neqs): + if self.coint_rank > 0: + start = i * self.coint_rank + end = start + self.coint_rank + mask = np.arange(start, end) + + # Create the table + alpha_masks.append(mask) + + eq_name = self.model.endog_names[i] + title = "Loading coefficients (alpha) for equation %s" % eq_name + table = make_table(self, a, se_a, t_a, p_a, ci_a, mask, a_names, + title) + summary.tables.append(table) + + # --------------------------------------------------------------------- + # Cointegration matrix/vector (beta) and det. terms inside coint. rel.: + coint_components = [] + stderr_coint_components = [] + tvalues_coint_components = [] + pvalues_coint_components = [] + conf_int_coint_components = [] + if self.coint_rank > 0: + coint_components.append(self.beta.T.flatten()) + stderr_coint_components.append(self.stderr_beta.T.flatten()) + tvalues_coint_components.append(self.tvalues_beta.T.flatten()) + pvalues_coint_components.append(self.pvalues_beta.T.flatten()) + conf_int = self.conf_int_beta(alpha=alpha) + lower = conf_int["lower"].T.flatten() + upper = conf_int["upper"].T.flatten() + conf_int_coint_components.append(np.column_stack( + (lower, upper))) + if self.det_coef_coint.size > 0: + coint_components.append(self.det_coef_coint.flatten()) + stderr_coint_components.append( + self.stderr_det_coef_coint.flatten()) + tvalues_coint_components.append( + self.tvalues_det_coef_coint.flatten()) + pvalues_coint_components.append( + self.pvalues_det_coef_coint.flatten()) + conf_int = self.conf_int_det_coef_coint(alpha=alpha) + lower = conf_int["lower"].flatten() + upper = conf_int["upper"].flatten() + conf_int_coint_components.append(np.column_stack((lower, upper))) + coint = hstack(coint_components) + stderr_coint = hstack(stderr_coint_components) + tvalues_coint = hstack(tvalues_coint_components) + pvalues_coint = hstack(pvalues_coint_components) + conf_int_coint = vstack(conf_int_coint_components) + coint_names = self.model._coint_param_names + + for i in range(self.coint_rank): + masks = [] + offset = 0 + + # 1. Cointegration matrix (beta) + if self.coint_rank > 0: + start = i * self.neqs + end = start + self.neqs + masks.append(offset + np.arange(start, end)) + offset += self.neqs * self.coint_rank + + # 2. Deterministic terms inside cointegration relation + if "ci" in self.deterministic: + masks.append(offset + np.array(i, ndmin=1)) + offset += self.coint_rank + if "li" in self.deterministic: + masks.append(offset + np.array(i, ndmin=1)) + offset += self.coint_rank + if self.exog_coint is not None: + for _ in range(self.exog_coint.shape[1]): + masks.append(offset + np.array(i, ndmin=1)) + offset += self.coint_rank + + # Create the table + mask = np.concatenate(masks) + title = "Cointegration relations for " + \ + "loading-coefficients-column %d" % (i+1) + table = make_table(self, coint, stderr_coint, tvalues_coint, + pvalues_coint, conf_int_coint, mask, + coint_names, title) + summary.tables.append(table) + + return summary diff --git a/statsmodels/tsa/x13.py b/statsmodels/tsa/x13.py new file mode 100644 index 0000000..637ee2a --- /dev/null +++ b/statsmodels/tsa/x13.py @@ -0,0 +1,611 @@ +""" +Run x12/x13-arima specs in a subprocess from Python and curry results back +into python. + +Notes +----- +Many of the functions are called x12. However, they are also intended to work +for x13. If this is not the case, it's a bug. +""" +from __future__ import print_function +import os +import subprocess +import tempfile +import re +from warnings import warn + +import pandas as pd + +from statsmodels.compat.python import iteritems +from statsmodels.tools.tools import Bunch +from statsmodels.tools.sm_exceptions import (X13NotFoundError, + IOWarning, X13Error, + X13Warning) + +__all__ = ["x13_arima_select_order", "x13_arima_analysis"] + +_binary_names = ('x13as.exe', 'x13as', 'x12a.exe', 'x12a') + + +class _freq_to_period: + def __getitem__(self, key): + if key.startswith('M'): + return 12 + elif key.startswith('Q'): + return 4 + elif key.startswith('W'): + return 52 + + +_freq_to_period = _freq_to_period() + +_period_to_freq = {12: 'M', 4: 'Q'} +_log_to_x12 = {True: 'log', False: 'none', None: 'auto'} +_bool_to_yes_no = lambda x: 'yes' if x else 'no' # noqa:E731 + + +def _find_x12(x12path=None, prefer_x13=True): + """ + If x12path is not given, then either x13as[.exe] or x12a[.exe] must + be found on the PATH. Otherwise, the environmental variable X12PATH or + X13PATH must be defined. If prefer_x13 is True, only X13PATH is searched + for. If it is false, only X12PATH is searched for. + """ + global _binary_names + if x12path is not None and x12path.endswith(_binary_names): + # remove binary from path if given + x12path = os.path.dirname(x12path) + + if not prefer_x13: # search for x12 first + _binary_names = _binary_names[::-1] + if x12path is None: + x12path = os.getenv("X12PATH", "") + if not x12path: + x12path = os.getenv("X13PATH", "") + elif x12path is None: + x12path = os.getenv("X13PATH", "") + if not x12path: + x12path = os.getenv("X12PATH", "") + + for binary in _binary_names: + x12 = os.path.join(x12path, binary) + try: + subprocess.check_call(x12, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + return x12 + except OSError: + pass + + else: + return False + + +def _check_x12(x12path=None): + x12path = _find_x12(x12path) + if not x12path: + raise X13NotFoundError("x12a and x13as not found on path. Give the " + "path, put them on PATH, or set the " + "X12PATH or X13PATH environmental variable.") + return x12path + + +def _clean_order(order): + """ + Takes something like (1 1 0)(0 1 1) and returns a arma order, sarma + order tuple. Also accepts (1 1 0) and return arma order and (0, 0, 0) + """ + order = re.findall(r"\([0-9 ]*?\)", order) + + def clean(x): + return tuple(map(int, re.sub("[()]", "", x).split(" "))) + + if len(order) > 1: + order, sorder = map(clean, order) + else: + order = clean(order[0]) + sorder = (0, 0, 0) + + return order, sorder + + +def run_spec(x12path, specpath, outname=None, meta=False, datameta=False): + + if meta and datameta: + raise ValueError("Cannot specify both meta and datameta.") + if meta: + args = [x12path, "-m " + specpath] + elif datameta: + args = [x12path, "-d " + specpath] + else: + args = [x12path, specpath] + + if outname: + args += [outname] + + return subprocess.Popen(args, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT) + + +def _make_automdl_options(maxorder, maxdiff, diff): + options = "\n" + options += "maxorder = ({0} {1})\n".format(maxorder[0], maxorder[1]) + if maxdiff is not None: # maxdiff always takes precedence + options += "maxdiff = ({0} {1})\n".format(maxdiff[0], maxdiff[1]) + else: + options += "diff = ({0} {1})\n".format(diff[0], diff[1]) + return options + + +def _make_var_names(exog): + if hasattr(exog, "name"): + var_names = exog.name + elif hasattr(exog, "columns"): + var_names = exog.columns + else: + raise ValueError("exog is not a Series or DataFrame or is unnamed.") + try: + var_names = " ".join(var_names) + except TypeError: # cannot have names that are numbers, pandas default + from statsmodels.base.data import _make_exog_names + if exog.ndim == 1: + var_names = "x1" + else: + var_names = " ".join(_make_exog_names(exog)) + return var_names + + +def _make_regression_options(trading, exog): + if not trading and exog is None: # start regression spec + return "" + + reg_spec = "regression{\n" + if trading: + reg_spec += " variables = (td)\n" + if exog is not None: + var_names = _make_var_names(exog) + reg_spec += " user = ({0})\n".format(var_names) + reg_spec += " data = ({0})\n".format("\n".join(map(str, + exog.values.ravel().tolist()))) + + reg_spec += "}\n" # close out regression spec + return reg_spec + + +def _make_forecast_options(forecast_years): + if forecast_years is None: + return "" + forecast_spec = "forecast{\n" + forecast_spec += "maxlead = ({0})\n}}\n".format(forecast_years) + return forecast_spec + + +def _check_errors(errors): + errors = errors[errors.find("spc:")+4:].strip() + if errors and 'ERROR' in errors: + raise X13Error(errors) + elif errors and 'WARNING' in errors: + warn(errors, X13Warning) + + +def _convert_out_to_series(x, dates, name): + """ + Convert x to a DataFrame where x is a string in the format given by + x-13arima-seats output. + """ + from statsmodels.compat import StringIO + from pandas import read_csv + out = read_csv(StringIO(x), skiprows=2, + header=None, sep='\t', engine='python') + return out.set_index(dates).rename(columns={1: name})[name] + + +def _open_and_read(fname): + # opens a file, reads it, and make sure it's closed + with open(fname, 'r') as fin: + fout = fin.read() + return fout + + +class Spec(object): + @property + def spec_name(self): + return self.__class__.__name__.replace("Spec", "") + + def create_spec(self, **kwargs): + spec = """{name} {{ + {options} + }} + """ + return spec.format(name=self.spec_name, + options=self.options) + + def set_options(self, **kwargs): + options = "" + for key, value in iteritems(kwargs): + options += "{0}={1}\n".format(key, value) + self.__dict__.update({key: value}) + self.options = options + + +class SeriesSpec(Spec): + """ + Parameters + ---------- + data + appendbcst : bool + appendfcst : bool + comptype + compwt + decimals + modelspan + name + period + precision + to_print + to_save + span + start + title + type + + Notes + ----- + Rarely used arguments + + divpower + missingcode + missingval + saveprecision + trimzero + + """ + def __init__(self, data, name='Unnamed Series', appendbcst=False, + appendfcst=False, + comptype=None, compwt=1, decimals=0, modelspan=(), + period=12, precision=0, to_print=[], to_save=[], span=(), + start=(1, 1), title='', series_type=None, divpower=None, + missingcode=-99999, missingval=1000000000): + + appendbcst, appendfcst = map(_bool_to_yes_no, [appendbcst, + appendfcst, + ]) + + series_name = "\"{0}\"".format(name[:64]) # trim to 64 characters + title = "\"{0}\"".format(title[:79]) # trim to 79 characters + self.set_options(data=data, appendbcst=appendbcst, + appendfcst=appendfcst, period=period, start=start, + title=title, name=series_name, + ) + + +def pandas_to_series_spec(x): + # from statsmodels.tools.data import _check_period_index + # check_period_index(x) + if hasattr(x, 'columns'): # convert to series + if len(x.columns) > 1: + raise ValueError("Does not handle DataFrame with more than one " + "column") + x = x[x.columns[0]] + + data = "({0})".format("\n".join(map(str, x.values.tolist()))) + + # get periodicity + # get start / first data + # give it a title + try: + period = _freq_to_period[x.index.freqstr] + except (AttributeError, ValueError): + from pandas.tseries.api import infer_freq + period = _freq_to_period[infer_freq(x.index)] + start_date = x.index[0] + if period == 12: + year, stperiod = start_date.year, start_date.month + elif period == 4: + year, stperiod = start_date.year, start_date.quarter + else: # pragma: no cover + raise ValueError("Only monthly and quarterly periods are supported." + " Please report or send a pull request if you want " + "this extended.") + + if hasattr(x, 'name'): + name = x.name or "Unnamed Series" + else: + name = 'Unnamed Series' + series_spec = SeriesSpec(data=data, name=name, period=period, + title=name, start="{0}.{1}".format(year, + stperiod)) + return series_spec + + +def x13_arima_analysis(endog, maxorder=(2, 1), maxdiff=(2, 1), diff=None, + exog=None, log=None, outlier=True, trading=False, + forecast_years=None, retspec=False, + speconly=False, start=None, freq=None, + print_stdout=False, x12path=None, prefer_x13=True): + """ + Perform x13-arima analysis for monthly or quarterly data. + + Parameters + ---------- + endog : array-like, pandas.Series + The series to model. It is best to use a pandas object with a + DatetimeIndex or PeriodIndex. However, you can pass an array-like + object. If your object does not have a dates index then ``start`` and + ``freq`` are not optional. + maxorder : tuple + The maximum order of the regular and seasonal ARMA polynomials to + examine during the model identification. The order for the regular + polynomial must be greater than zero and no larger than 4. The + order for the seaonal polynomial may be 1 or 2. + maxdiff : tuple + The maximum orders for regular and seasonal differencing in the + automatic differencing procedure. Acceptable inputs for regular + differencing are 1 and 2. The maximum order for seasonal differencing + is 1. If ``diff`` is specified then ``maxdiff`` should be None. + Otherwise, ``diff`` will be ignored. See also ``diff``. + diff : tuple + Fixes the orders of differencing for the regular and seasonal + differencing. Regular differencing may be 0, 1, or 2. Seasonal + differencing may be 0 or 1. ``maxdiff`` must be None, otherwise + ``diff`` is ignored. + exog : array-like + Exogenous variables. + log : bool or None + If None, it is automatically determined whether to log the series or + not. If False, logs are not taken. If True, logs are taken. + outlier : bool + Whether or not outliers are tested for and corrected, if detected. + trading : bool + Whether or not trading day effects are tested for. + forecast_years : int + Number of forecasts produced. The default is one year. + retspec : bool + Whether to return the created specification file. Can be useful for + debugging. + speconly : bool + Whether to create the specification file and then return it without + performing the analysis. Can be useful for debugging. + start : str, datetime + Must be given if ``endog`` does not have date information in its index. + Anything accepted by pandas.DatetimeIndex for the start value. + freq : str + Must be givein if ``endog`` does not have date information in its + index. Anything accapted by pandas.DatetimeIndex for the freq value. + print_stdout : bool + The stdout from X12/X13 is suppressed. To print it out, set this + to True. Default is False. + x12path : str or None + The path to x12 or x13 binary. If None, the program will attempt + to find x13as or x12a on the PATH or by looking at X13PATH or + X12PATH depending on the value of prefer_x13. + prefer_x13 : bool + If True, will look for x13as first and will fallback to the X13PATH + environmental variable. If False, will look for x12a first and will + fallback to the X12PATH environmental variable. If x12path points + to the path for the X12/X13 binary, it does nothing. + + + Returns + ------- + res : Bunch + A bunch object with the following attributes: + + - results : str + The full output from the X12/X13 run. + - seasadj : pandas.Series + The final seasonally adjusted ``endog`` + - trend : pandas.Series + The trend-cycle component of ``endog`` + - irregular : pandas.Series + The final irregular component of ``endog`` + - stdout : str + The captured stdout produced by x12/x13. + - spec : str, optional + Returned if ``retspec`` is True. The only thing returned if + ``speconly`` is True. + + Notes + ----- + This works by creating a specification file, writing it to a temporary + directory, invoking X12/X13 in a subprocess, and reading the output + directory, invoking exog12/X13 in a subprocess, and reading the output + back in. + """ + x12path = _check_x12(x12path) + + if not isinstance(endog, (pd.DataFrame, pd.Series)): + if start is None or freq is None: + raise ValueError("start and freq cannot be none if endog is not " + "a pandas object") + endog = pd.Series(endog, index=pd.DatetimeIndex(start=start, + periods=len(endog), + freq=freq)) + spec_obj = pandas_to_series_spec(endog) + spec = spec_obj.create_spec() + spec += "transform{{function={0}}}\n".format(_log_to_x12[log]) + if outlier: + spec += "outlier{}\n" + options = _make_automdl_options(maxorder, maxdiff, diff) + spec += "automdl{{{0}}}\n".format(options) + spec += _make_regression_options(trading, exog) + spec += _make_forecast_options(forecast_years) + spec += "x11{ save=(d11 d12 d13) }" + if speconly: + return spec + # write it to a tempfile + # TODO: make this more robust - give the user some control? + ftempin = tempfile.NamedTemporaryFile(delete=False, suffix='.spc') + ftempout = tempfile.NamedTemporaryFile(delete=False) + try: + ftempin.write(spec.encode('utf8')) + ftempin.close() + ftempout.close() + # call x12 arima + p = run_spec(x12path, ftempin.name[:-4], ftempout.name) + p.wait() + stdout = p.stdout.read() + if print_stdout: + print(p.stdout.read()) + # check for errors + errors = _open_and_read(ftempout.name + '.err') + _check_errors(errors) + + # read in results + results = _open_and_read(ftempout.name + '.out') + seasadj = _open_and_read(ftempout.name + '.d11') + trend = _open_and_read(ftempout.name + '.d12') + irregular = _open_and_read(ftempout.name + '.d13') + finally: + try: # sometimes this gives a permission denied error? + # not sure why. no process should have these open + os.remove(ftempin.name) + os.remove(ftempout.name) + except OSError: + if os.path.exists(ftempin.name): + warn("Failed to delete resource {0}".format(ftempin.name), + IOWarning) + if os.path.exists(ftempout.name): + warn("Failed to delete resource {0}".format(ftempout.name), + IOWarning) + + seasadj = _convert_out_to_series(seasadj, endog.index, 'seasadj') + trend = _convert_out_to_series(trend, endog.index, 'trend') + irregular = _convert_out_to_series(irregular, endog.index, 'irregular') + + # NOTE: there isn't likely anything in stdout that's not in results + # so may be safe to just suppress and remove it + if not retspec: + res = X13ArimaAnalysisResult(observed=endog, results=results, + seasadj=seasadj, trend=trend, + irregular=irregular, stdout=stdout) + else: + res = X13ArimaAnalysisResult(observed=endog, results=results, + seasadj=seasadj, trend=trend, + irregular=irregular, stdout=stdout, + spec=spec) + return res + + +def x13_arima_select_order(endog, maxorder=(2, 1), maxdiff=(2, 1), diff=None, + exog=None, log=None, outlier=True, trading=False, + forecast_years=None, + start=None, freq=None, print_stdout=False, + x12path=None, prefer_x13=True): + """ + Perform automatic seaonal ARIMA order identification using x12/x13 ARIMA. + + Parameters + ---------- + endog : array-like, pandas.Series + The series to model. It is best to use a pandas object with a + DatetimeIndex or PeriodIndex. However, you can pass an array-like + object. If your object does not have a dates index then ``start`` and + ``freq`` are not optional. + maxorder : tuple + The maximum order of the regular and seasonal ARMA polynomials to + examine during the model identification. The order for the regular + polynomial must be greater than zero and no larger than 4. The + order for the seaonal polynomial may be 1 or 2. + maxdiff : tuple + The maximum orders for regular and seasonal differencing in the + automatic differencing procedure. Acceptable inputs for regular + differencing are 1 and 2. The maximum order for seasonal differencing + is 1. If ``diff`` is specified then ``maxdiff`` should be None. + Otherwise, ``diff`` will be ignored. See also ``diff``. + diff : tuple + Fixes the orders of differencing for the regular and seasonal + differencing. Regular differencing may be 0, 1, or 2. Seasonal + differencing may be 0 or 1. ``maxdiff`` must be None, otherwise + ``diff`` is ignored. + exog : array-like + Exogenous variables. + log : bool or None + If None, it is automatically determined whether to log the series or + not. If False, logs are not taken. If True, logs are taken. + outlier : bool + Whether or not outliers are tested for and corrected, if detected. + trading : bool + Whether or not trading day effects are tested for. + forecast_years : int + Number of forecasts produced. The default is one year. + start : str, datetime + Must be given if ``endog`` does not have date information in its index. + Anything accepted by pandas.DatetimeIndex for the start value. + freq : str + Must be givein if ``endog`` does not have date information in its + index. Anything accapted by pandas.DatetimeIndex for the freq value. + print_stdout : bool + The stdout from X12/X13 is suppressed. To print it out, set this + to True. Default is False. + x12path : str or None + The path to x12 or x13 binary. If None, the program will attempt + to find x13as or x12a on the PATH or by looking at X13PATH or X12PATH + depending on the value of prefer_x13. + prefer_x13 : bool + If True, will look for x13as first and will fallback to the X13PATH + environmental variable. If False, will look for x12a first and will + fallback to the X12PATH environmental variable. If x12path points + to the path for the X12/X13 binary, it does nothing. + + Returns + ------- + results : Bunch + A bunch object that has the following attributes: + + - order : tuple + The regular order + - sorder : tuple + The seasonal order + - include_mean : bool + Whether to include a mean or not + - results : str + The full results from the X12/X13 analysis + - stdout : str + The captured stdout from the X12/X13 analysis + + Notes + ----- + This works by creating a specification file, writing it to a temporary + directory, invoking X12/X13 in a subprocess, and reading the output back + in. + """ + results = x13_arima_analysis(endog, x12path=x12path, exog=exog, log=log, + outlier=outlier, trading=trading, + forecast_years=forecast_years, + maxorder=maxorder, maxdiff=maxdiff, diff=diff, + start=start, freq=freq, prefer_x13=prefer_x13) + model = re.search("(?<=Final automatic model choice : ).*", + results.results) + order = model.group() + if re.search("Mean is not significant", results.results): + include_mean = False + elif re.search("Constant", results.results): + include_mean = True + else: + include_mean = False + order, sorder = _clean_order(order) + res = Bunch(order=order, sorder=sorder, include_mean=include_mean, + results=results.results, stdout=results.stdout) + return res + + +class X13ArimaAnalysisResult(object): + def __init__(self, **kwargs): + for key, value in iteritems(kwargs): + setattr(self, key, value) + + def plot(self): + from statsmodels.graphics.utils import _import_mpl + plt = _import_mpl() + fig, axes = plt.subplots(4, 1, sharex=True) + self.observed.plot(ax=axes[0], legend=False) + axes[0].set_ylabel('Observed') + self.seasadj.plot(ax=axes[1], legend=False) + axes[1].set_ylabel('Seas. Adjusted') + self.trend.plot(ax=axes[2], legend=False) + axes[2].set_ylabel('Trend') + self.irregular.plot(ax=axes[3], legend=False) + axes[3].set_ylabel('Irregular') + + fig.tight_layout() + return fig diff --git a/tools/R2nparray/DESCRIPTION b/tools/R2nparray/DESCRIPTION new file mode 100644 index 0000000..40e2a56 --- /dev/null +++ b/tools/R2nparray/DESCRIPTION @@ -0,0 +1,13 @@ +Package: R2nparray +Version: 0.1 +Date: 2011-08-23 +Title: R to Numpy Arrays +Author: Skipper Seabold +Maintainer: Skipper Seabold +Description: Writes R matrices, vectors, and scalars to a file as numpy arrays +License: BSD +URL: http://www.github.com/statsmodels/statsmodels +Repository: github +Collate: + 'R2nparray-package.R' + 'R2nparray.R' diff --git a/tools/R2nparray/NAMESPACE b/tools/R2nparray/NAMESPACE new file mode 100644 index 0000000..072671f --- /dev/null +++ b/tools/R2nparray/NAMESPACE @@ -0,0 +1 @@ +exportPattern( "." ) diff --git a/tools/R2nparray/R/R2nparray-package.R b/tools/R2nparray/R/R2nparray-package.R new file mode 100644 index 0000000..1280b18 --- /dev/null +++ b/tools/R2nparray/R/R2nparray-package.R @@ -0,0 +1,5 @@ +#' R2nparray +#' +#' @name R2nparray +#' @docType package +NULL diff --git a/tools/R2nparray/R/R2nparray.R b/tools/R2nparray/R/R2nparray.R new file mode 100644 index 0000000..a59ede4 --- /dev/null +++ b/tools/R2nparray/R/R2nparray.R @@ -0,0 +1,227 @@ +#' Print R object contents to python expression +#' +#' @param object with names attribute names(object) will be written as python assignments +#' @param prefix string string that is prepended to the variable names +#' @param blacklist list of strings names that are in the blacklist are ignored +#' @param trans named list (dict_like) names that are in trans will be replaced by the corresponding value +#' @param strict skip content that cannot be pretty-printed. Otherwise, will print as str(deparse(x)) +#' @note currently limited type inference, mainly numerical +#' @export +#' @examples +#' mod = lm(rnorm(100) ~ rnorm(100)) +#' cat_items(mod) +cat_items <- function(object, prefix="", strict=TRUE, trans=list(), + blacklist=NULL){ + out = convert_items(object, prefix, strict, trans, blacklist) + cat(out) +} + +#' Same as cat_items() except it returns a string instead of printing it +#' +#' @export +#' @examples +#' mod = lm(rnorm(100) ~ rnorm(100)) +#' convert_items(mod) +convert_items <- function(object, prefix="", strict=TRUE, trans=list(), + blacklist=NULL){ + out = list() + for (n in names(object)){ + if (n %in% blacklist) next + newname = sanitize_name(n) + if (newname %in% names(trans)){ + newname = trans[[newname]] + } + newname = paste(prefix, newname, sep='') + tmp = try(convert(object[[n]], name=newname, strict=strict)) + if (class(tmp) != 'try-error'){ + out[[newname]] = tmp + } + } + out = paste(out, collapse='\n') + return(out) +} + +convert <- function (x, name='default', strict=TRUE) { + UseMethod("convert", x) +} + +convert.default <- function(X, name='default', strict=TRUE){ + head = paste(name, '= ') + mid = paste(deparse(X), collapse='\n') + out = paste(head, "'''", mid, "'''") + if(!strict){ + return(out) + } +} + +convert.data.frame <- function(X, name='default', strict=TRUE){ + X = as.matrix(X) + out = convert(X, name=name) + return(out) +} + +convert.numeric <- function(X, name='default', strict=TRUE) { + if (length(X) > 1){ + head = paste(name, '= np.array([\n') + mid = strwrap(paste(X, collapse=', '), width=79, indent=3, exdent=4) + mid = paste(mid, collapse='\n') + tail = "\n ])" + if (is.matrix(X)) { + i <- nrow(X) + j <- ncol(X) + tail = paste(tail, ".reshape(", i, ", ", j, ", order='F')\n", sep='') + } + out = paste(head, mid, tail, collapse='\n') + }else{ + out = paste(name, '=', X) + } + return(out) +} + +convert.character <- function(X, name='default', strict=TRUE) { + if (length(X) > 1){ + head = paste(name, '= np.array([\n') + mid = paste("'", X, "'", sep='') + mid = paste(mid, collapse=', ') + tail = "\n ])" + out = paste(head, mid, tail) + }else{ + out = paste(name, " = '", X, "'", sep='') + } + return(out) +} + +sanitize_name <- function(name) { + #"[%s]" % "]|[".join(map(re.escape, list(string.punctuation.replace("_","") + punctuation <- '[\\!]|[\\"]|[\\#]|[\\$]|[\\%]|[\\&]|[\\\']|[\\(]|[\\)]|[\\*]|[\\+]|[\\,]|[\\-]|[\\.]|[\\/]|[\\:]|[\\;]|[\\<]|[\\=]|[\\>]|[\\?]|[\\@]|[\\[]|[\\\\]|[\\]]|[\\^]|[\\`]|[\\{]|[\\|]|[\\}]|[\\~]' + # handle spaces,tabs,etc. and periods specially + name <- gsub("[[:blank:]\\.]", "_", name) + name <- gsub(punctuation, "", name) + return(name) +} + +get_dimnames <- function(mat, prefix="", asstring=FALSE) { + dimension_names = c('rownames', 'colnames', 3:100) + dimn = dimnames(mat) + if(is.null(dimn)){ + dimn = names(mat) + if(is.null(dimn)){ + dimn = NULL + }else{ + dimn = list(dimn) + } + } + for (i in 1:length(dimn)){ + pref = paste(prefix, dimension_names[i], sep='') + dimn[[i]] = sapply(dimn[[i]], sanitize_name) + dimn[[i]] = paste(dimn[[i]], collapse="', '") + dimn[[i]] = paste(pref, " = ['", dimn[[i]], "']", sep='') + } + dimn = paste(dimn, collapse='\n')[1] + return(dimn) +} + +# Dictionary of lambda functions +d = list() +d$df_resid = function(x) x$df.residual +d$deviance = function(x) x$deviance +d$null_deviance = function(x) x$null.deviance +d$rank = function(x) x$rank +d$aic = function(x) x$aic +d$nobs = function(x) dim(model.matrix(x))[1] +d$conf_int = function(x) as.matrix(confint(x)) +d$resid = function(x) resid(x) +d$predict = function(x) predict(x) +d$fittedvalues = function(x) predict(x) +d$params = function(x) summary(x)$coefficients[,1] +d$bse = function(x) summary(x)$coefficients[,2] +d$tvalues = function(x) summary(x)$coefficients[,3] +d$pvalues = function(x) summary(x)$coefficients[,4] +d$rsquared = function(x) summary(x)$r.squared[1] +d$rsquared_adj = function(x) summary(x)$r.squared[2] +d$fvalue = function(x) summary(x)$fstatistic$statistic +d$f_pvalue = function(x) summary(x)$fstatistic$p.value +d$fstatistic = function(x) summary(x)$fstatistic + +#' Applies functions to an object (skips on error) +#' +#' @param object an object on which we want to apply the lambda functions +#' @param lambdas a named list of lambda functions +#' @export +#' @examples +#' mod = lm(rnorm(100) ~ rnorm(100)) +#' cat_items(apply_functions(mod)) +apply_functions = function(object, lambdas=d){ + out = list() + for (n in names(lambdas)){ + tmp = try(lambdas[[n]](object)) + if (class(tmp) != 'try-error'){ + out[[n]] = tmp + } + } + return(out) +} + +mkhtest <- function(ht, name, distr="f") { + #function to write results of a statistical test of class htest to a python dict + # + #Parameters + #---------- + #ht : instance of ht + # return of many statistical tests + #name : string + # name of variable that holds results dict + #distr : string + # distribution of the test statistic + # + cat(name); cat(" = dict("); + cat("statistic="); cat(ht$statistic); cat(", "); + cat("pvalue="); cat(ht$p.value); cat(", "); + cat("parameters=("); cat(ht$parameter, sep=","); cat(",), "); + cat("distr='"); cat(distr); cat("'"); + cat(")"); + cat("\n\n") +} + +header = " +import numpy as np + +from statsmodels.tools.tools import Bunch + +" +write_header = function(){ + cat(header) +} + +# Example +#library(plm) +#library(systemfit) +#data(Grunfeld) +#panel <- plm.data(Grunfeld, c('firm','year')) +#SUR <- systemfit(inv ~ value + capital, method='SUR',data=panel) + +##translation table for names (could be dict in python) +#translate = list(coefficients="params", + #coefCov="cov_params", + #residCovEst="resid_cov_est", + #residCov="resid_cov", + #df_residual="df_resid", + #df_residual_sys="df_resid_sys", + ##nCoef="k_vars", #not sure about this + #fitted_values="fittedvalues" + #) + +#fname = "tmp_sur_0.py" +#append = FALSE #TRUE +#sink(file=fname, append=append) #redirect output to file +#cat(header) +#cat("\nsur = Bunch()\n") + +#cat_items(SUR, prefix="sur.", blacklist=c("eq", "control"), trans=translate) +#equations = SUR[["eq"]] +#for (ii in c(1:length(equations))) { + #equ_name = paste("sur.equ", ii, sep="") + #cat("\n\n", equ_name, sep=""); cat(" = Bunch()\n") + #cat_items(equations[[ii]], prefix=paste(equ_name, ".", sep=""), trans=translate) +#} +#sink() diff --git a/tools/R2nparray/R/ex_sur.R b/tools/R2nparray/R/ex_sur.R new file mode 100644 index 0000000..b8e2167 --- /dev/null +++ b/tools/R2nparray/R/ex_sur.R @@ -0,0 +1,47 @@ +data <- read.csv('E:\\path_to_repo\\statsmodels\\datasets\\grunfeld\\grunfeld.csv') +#data <- read.csv('../../../statsmodels/datasets/grunfeld/grunfeld.csv') + +data <- data[data$firm %in% c('General Motors','Chrysler','General Electric','Westinghouse','US Steel'),] +attach(data) +library('plm') +library('systemfit') +panel <- plm.data(data,c('firm','year')) +formula <- invest ~ value + capital +SUR <- systemfit(formula,method='SUR',data=panel) +f <- fitted(SUR) +ff <- c(f[,'Chrysler'],f[,'General.Electric'],f[,'General.Motors'],f[,'US.Steel'],f[,'Westinghouse']) + +#save results to python module +#load functions, (windows path separators) +source("E:\\path_to_repo\\tools\\R2nparray\\R\\R2nparray.R") +#source("R2nparray.R") + +#translation table for names (could be dict in python) +translate = list(coefficients="params", + coefCov="cov_params", + residCovEst="resid_cov_est", + residCov="resid_cov", + df_residual="df_resid", + df_residual_sys="df_resid_sys", + #nCoef="k_vars", #not sure about this + fitted_values="fittedvalues" + ) + +fname = "tmp_sur_0.py" +append = FALSE #TRUE + +#redirect output to file +sink(file=fname, append=append) +write_header() +cat("\nsur = Bunch()\n") + +cat_items(SUR, prefix="sur.", blacklist=c("eq", "control"), trans=translate) + +equations = SUR[["eq"]] +for (ii in c(1:length(equations))) { +equ_name = paste("sur.equ", ii, sep="") +cat("\n\n", equ_name, sep=""); cat(" = Bunch()\n") +cat_items(equations[[ii]], prefix=paste(equ_name, ".", sep=""), trans=translate) +} + +sink() diff --git a/tools/R2nparray/README.txt b/tools/R2nparray/README.txt new file mode 100644 index 0000000..0a08859 --- /dev/null +++ b/tools/R2nparray/README.txt @@ -0,0 +1,35 @@ +Using without installing +------------------------ + +To use this script from an R session: + + source('statsmodels/tools/R2nparray/R/R2nparray.R') + +The 3 most useful commands are: cat_items(), convert_items() and +apply_functions(). To print the content of an R regression to file in a format readable in python, you can: + + sink(file='tmp.py') + data(iris) + mod = lm(Sepal.Length ~ Sepal.Width, data=iris) + cat_items(mod) + sink() + +Install the R2nparray package +----------------------------- + +To make full use of the package's functions (including reading docs), you can +install R2nparray in your R library. This first requires installing the +devtools and roxygen2 packages: + + install.packages(c('devtools', 'roxygen2')) + +Then, you need to create a directory to host the documentation. The ``man`` +directory should be located here: + + mkdir statsmodels/tools/R2nparray/man + +Finally, run ``R`` inside the ``statsmodels.tools.R2nparray`` folder, and execute: + + library(devtools) + document() + install() diff --git a/tools/README.rst b/tools/README.rst new file mode 100644 index 0000000..0a08901 --- /dev/null +++ b/tools/README.rst @@ -0,0 +1,4 @@ +Developers +---------- + +This directory is only of interest to developers. Many of the files are substantially out of date and subject to clean-up. diff --git a/tools/backport_pr.py b/tools/backport_pr.py new file mode 100644 index 0000000..54e6096 --- /dev/null +++ b/tools/backport_pr.py @@ -0,0 +1,179 @@ +#!/usr/bin/env python +""" +Backport pull requests to a particular branch. + +Usage: backport_pr.py branch [PR] + +e.g.: + + python tools/backport_pr.py 0.13.1 123 + +to backport PR #123 onto branch 0.13.1 + +or + + python tools/backport_pr.py 1.x + +to see what PRs are marked for backport that have yet to be applied. + +Copied from IPython 9e82bc5 +https://github.com/ipython/ipython/blob/master/tools/backport_pr.py +""" + +from __future__ import print_function + +import os +import re +import sys + +from subprocess import Popen, PIPE, check_call, check_output +from urllib import urlopen + +from gh_api import ( + get_issues_list, + get_pull_request, + get_pull_request_files, + is_pull_request, + get_milestone_id, +) + +from pandas import Series + + +def find_rejects(root='.'): + for dirname, dirs, files in os.walk(root): + for fname in files: + if fname.endswith('.rej'): + yield os.path.join(dirname, fname) + + +def get_current_branch(): + branches = check_output(['git', 'branch']) + for branch in branches.splitlines(): + if branch.startswith('*'): + return branch[1:].strip() + + +def backport_pr(branch, num, project='statsmodels/statsmodels'): + current_branch = get_current_branch() + if branch != current_branch: + check_call(['git', 'checkout', branch]) + check_call(['git', 'pull']) + pr = get_pull_request(project, num, auth=True) + files = get_pull_request_files(project, num, auth=True) + patch_url = pr['patch_url'] + title = pr['title'] + description = pr['body'] + fname = "PR%i.patch" % num + if os.path.exists(fname): + print("using patch from {fname}".format(**locals())) + with open(fname) as fd: + patch = fd.read() + else: + req = urlopen(patch_url) + patch = req.read() + + msg = "Backport PR #%i: %s" % (num, title) + '\n\n' + description + check = Popen(['git', 'apply', '--check', '--verbose'], stdin=PIPE) + a, b = check.communicate(patch) + + if check.returncode: + print("patch did not apply, saving to {fname}".format(**locals())) + print("edit {fname} until `cat {fname} | git apply --check` succeeds" + .format(**locals())) + print("then run tools/backport_pr.py {num} again".format(**locals())) + if not os.path.exists(fname): + with open(fname, 'wb') as fd: + fd.write(patch) + return 1 + + p = Popen(['git', 'apply'], stdin=PIPE) + a, b = p.communicate(patch) + + filenames = [f['filename'] for f in files] + + check_call(['git', 'add'] + filenames) + + check_call(['git', 'commit', '-m', msg]) + + print("PR #%i applied, with msg:" % num) + print() + print(msg) + print() + + if branch != current_branch: + check_call(['git', 'checkout', current_branch]) + + return 0 + + +backport_re = re.compile(r"[Bb]ackport.*?(\d+)") + + +def already_backported(branch, since_tag=None): + """return set of PRs that have been backported already""" + if since_tag is None: + btag = check_output(['git', 'describe', branch, '--abbrev=0']) + since_tag = btag.decode('utf8').strip() + cmd = ['git', 'log', '%s..%s' % (since_tag, branch), '--oneline'] + lines = check_output(cmd).decode('utf8') + return set(int(num) for num in backport_re.findall(lines)) + + +def should_backport(labels=None, milestone=None): + """return set of PRs marked for backport""" + if labels is None and milestone is None: + raise ValueError("Specify one of labels or milestone.") + elif labels is not None and milestone is not None: + raise ValueError("Specify only one of labels or milestone.") + if labels is not None: + issues = get_issues_list("statsmodels/statsmodels", + labels=labels, + state='closed', + auth=True) + else: + milestone_id = get_milestone_id("statsmodels/statsmodels", + milestone, + auth=True) + issues = get_issues_list("statsmodels/statsmodels", + milestone=milestone_id, + state='closed', + auth=True) + + should_backport = [] + merged_dates = [] + for issue in issues: + if not is_pull_request(issue): + continue + pr = get_pull_request("statsmodels/statsmodels", issue['number'], + auth=True) + if not pr['merged']: + print("Marked PR closed without merge: %i" % pr['number']) + continue + if pr['number'] not in should_backport: + merged_dates.append(pr['merged_at']) + should_backport.append(pr['number']) + return Series(merged_dates, index=should_backport) + + +if __name__ == '__main__': + + if len(sys.argv) < 2: + print(__doc__) + sys.exit(1) + + if len(sys.argv) < 3: + branch = sys.argv[1] + already = already_backported(branch) + # NOTE: change this to the label you've used for marking a backport + should = should_backport(milestone="0.5.1") + print("The following PRs should be backported:") + to_backport = [] + if already: + should = should.loc[set(should.index).difference(already)] + should.sort() + for pr, date in should.iteritems(): + print(pr) + sys.exit(0) + + sys.exit(backport_pr(sys.argv[1], int(sys.argv[2]))) diff --git a/tools/binstar/README.md b/tools/binstar/README.md new file mode 100644 index 0000000..776b654 --- /dev/null +++ b/tools/binstar/README.md @@ -0,0 +1,27 @@ +Binstar +======= + +[Binstar](http://binstar.org) is Continuum's solution for binary package distribution. This directory contains the files required for building a binstar package: + + * `meta.yaml` - Information about the package and dependencies + * `bld.bat` - Windows batch file called in the build process + * `build.sh` - Linux/OSX batch file called in the build process + +Two other helper files are included to automate building across Python 2.7, 3.3 and 3.4. + + * `binstar_windows.bat` + * `binstar_unix.sh` + +Running either file from statsmodels/binstar will build all three versions and upload them, assuming the account has been authenticated using + +``` +binstar login +``` + +Installing from binstar +----------------------- +The most recent snapshot can be installed using + +``` +conda install -c https://conda.binstar.org/statsmodels statsmodels +``` diff --git a/tools/binstar/binstar_unix.sh b/tools/binstar/binstar_unix.sh new file mode 100644 index 0000000..babece6 --- /dev/null +++ b/tools/binstar/binstar_unix.sh @@ -0,0 +1,26 @@ +#!/bin/bash +cd ../.. + +## detect OS +if [ "$(uname)" == "Darwin" ]; then + export OS=osx-64 +else + export OS=linux-64 +fi + + +## declare Python and Numpy Versions +declare -a PY_VERSIONS=( "27" "33" "34" ) +declare -a NPY_VERSIONS=( "18" "19" ) + +## Loop across Python and Numpy +for PY in "${PY_VERSIONS[@]}" + do + export CONDA_PY=$PY + for NPY in "${NPY_VERSIONS[@]}" + do + export CONDA_NPY=$NPY + binstar remove statsmodels/statsmodels/0.6.0_dev/${OS}/statsmodels-0.6.0_dev-np${NPY}py${PY}_0.tar.bz2 -f + conda build ./tools/binstar + done +done \ No newline at end of file diff --git a/tools/binstar/binstar_windows.bat b/tools/binstar/binstar_windows.bat new file mode 100644 index 0000000..960f26a --- /dev/null +++ b/tools/binstar/binstar_windows.bat @@ -0,0 +1,37 @@ +@echo off +Setlocal EnableDelayedExpansion +REM Get current directory +SET CURRENT_WORKING_DIR=%~dp0 +REM Python and NumPy versions +set PY_VERSION=27 33 34 +set NPY_VERSION=18 19 + + +(for %%P in (%PY_VERSION%) do ( + (for %%N in (%NPY_VERSION%) do ( + + REM Trick to force a delay. Windows sometimes has issues with rapid file deletion + call PING 1.1.1.1 -n 1 -w 5000 >NUL + REM Clean up + robocopy C:\Anaconda\conda-bld\work\ c:\temp\conda-work-trash * /MOVE /S + del c:\temp\conda-work-trash\*.*? /s + rmdir C:\Anaconda\conda-bld\work\.git /S /Q + REM Trick to force a delay. Windows sometimes has issues with rapid file deletion + call PING 1.1.1.1 -n 1 -w 30000 >NUL + + IF %%P==27 ( + call python2_setup.bat + ) ELSE ( + call python3_setup.bat + ) + set CONDA_PY=%%P + set CONDA_NPY=%%N + echo Python: !CONDA_PY!, NumPy: !CONDA_NPY! + + REM Remove from binstar + binstar remove statsmodels/statsmodels/0.6.0_dev/win-64\statsmodels-0.6.0_dev-np!CONDA_NPY!py!CONDA_PY!_0.tar.bz2 --force + cd %CURRENT_WORKING_DIR% + cd ..\.. + conda build .\tools\binstar + )) +)) diff --git a/tools/binstar/bld.bat b/tools/binstar/bld.bat new file mode 100644 index 0000000..762d43b --- /dev/null +++ b/tools/binstar/bld.bat @@ -0,0 +1 @@ +python setup.py install diff --git a/tools/binstar/build.sh b/tools/binstar/build.sh new file mode 100644 index 0000000..6b42b55 --- /dev/null +++ b/tools/binstar/build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +${PYTHON} setup.py install || exit 1; diff --git a/tools/binstar/meta.yaml b/tools/binstar/meta.yaml new file mode 100644 index 0000000..2510b91 --- /dev/null +++ b/tools/binstar/meta.yaml @@ -0,0 +1,35 @@ +package: + name: statsmodels + version: "0.6.0_dev" + +source: + git_url: https://github.com/statsmodels/statsmodels.git + +build: + number: 0 + +requirements: + build: + - python + - distribute + - cython 0.20* + - numpy + - scipy + - pandas + - patsy + + run: + - python + - numpy + - numpy + - scipy + - pandas + - patsy + +test: + imports: + - statsmodels + +about: + home: https://www.statsmodels.org/ + license : BSD License \ No newline at end of file diff --git a/tools/binstar/python2_setup.bat b/tools/binstar/python2_setup.bat new file mode 100644 index 0000000..97e786d --- /dev/null +++ b/tools/binstar/python2_setup.bat @@ -0,0 +1,9 @@ +echo Python 2.x setup +REM Setup compiler +REM The Windows 7 SDK with .Net 3.5 is buggy on Windows 8. These paths are needed to fix these issues +set PATH=C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE;%PATH% +set INCLUDE=C:\Program Files\Microsoft SDKs\Windows\v7.0\Include;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include;%INCLUDE% +set LIB=C:\Program Files\Microsoft SDKs\Windows\v7.0\Lib\x64;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\amd64 +set DISTUTILS_USE_SDK=1 +REM This setenv is the setenv that came with SDK7, with the bugs fixed +CALL "C:\temp\setenv" /x64 /release diff --git a/tools/binstar/python3_setup.bat b/tools/binstar/python3_setup.bat new file mode 100644 index 0000000..468ee2c --- /dev/null +++ b/tools/binstar/python3_setup.bat @@ -0,0 +1,6 @@ +echo Python 3.x setup +REM Setup compiler +set PATH=C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE;%PATH% +cd C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin +set DISTUTILS_USE_SDK=1 +CALL "C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\setenv" /x64 /release diff --git a/tools/check_dirs.py b/tools/check_dirs.py new file mode 100644 index 0000000..560f721 --- /dev/null +++ b/tools/check_dirs.py @@ -0,0 +1,23 @@ +'''helper script to check which directories are not on python path + +all test folders should have and ``__init__.py`` + +''' + +import os + +root = '../statsmodels' + +print('base, dnames, len(fnames), n_py') +for base, dnames, fnames in os.walk(root): + if '__init__.py' not in fnames: + # I have some empty directories when I switch git branches + if (len(dnames) + len(fnames)) != 0: + n_py = len([f for f in fnames if f[-3:] == '.py']) + if n_py > 0: + print(base, dnames, len(fnames), n_py) + + if '__pycache__' in dnames: + dnames.remove('__pycache__') + if 'src' in dnames: + dnames.remove('src') diff --git a/tools/ci/appveyor_conda.bat b/tools/ci/appveyor_conda.bat new file mode 100644 index 0000000..81bb988 --- /dev/null +++ b/tools/ci/appveyor_conda.bat @@ -0,0 +1,12 @@ +REM Install required conda version and libraries +curl -fsS -o c:\Miniconda.exe "https://repo.continuum.io/miniconda/Miniconda%PY_MAJOR_VER%-latest-Windows-%PYTHON_ARCH%.exe" +START /WAIT C:\Miniconda.exe /S /D=C:\Py +set PATH=C:\Py;C:\Py\Scripts;C:\Py\Library\bin;%PATH% +conda config --set always_yes yes +conda update conda --quiet +conda config --set restore_free_channel true +IF Defined SCIPY ( + conda install numpy=%NUMPY% scipy=%SCIPY% icc_rt cython pandas pip nose patsy --quiet +) else ( + conda install numpy scipy cython pandas pip nose patsy --quiet +) diff --git a/tools/ci/appveyor_pip.bat b/tools/ci/appveyor_pip.bat new file mode 100644 index 0000000..13d34fb --- /dev/null +++ b/tools/ci/appveyor_pip.bat @@ -0,0 +1,8 @@ +REM Install packages using pip +set PATH=%PYTHON%;%PYTHON%\Scripts;%PATH% +python -m pip install -U pip +IF Defined SCIPY ( + pip install numpy scipy==%SCIPY% cython pandas nose patsy +) else ( + pip install numpy scipy cython pandas nose patsy +) diff --git a/tools/ci/azure_template.yml b/tools/ci/azure_template.yml new file mode 100644 index 0000000..812791b --- /dev/null +++ b/tools/ci/azure_template.yml @@ -0,0 +1,79 @@ +# Python package +# Create and test a Python package on multiple Python versions. +# Add steps that analyze code, save the dist with the build record, publish to a PyPI-compatible index, and more: +# https://docs.microsoft.com/azure/devops/pipelines/languages/python + +parameters: + # defaults for any parameters that aren't specified + name: '' + vmImage: '' + + +jobs: + +- job: ${{ parameters.name }}Test + pool: + vmImage: ${{ parameters.vmImage }} + strategy: + matrix: + Python27: + python.version: '2.7' + Python35: + python.version: '3.5' + Python36: + python.version: '3.6' + Python37: + python.version: '3.7' + maxParallel: 4 + + steps: + - task: UsePythonVersion@0 + inputs: + versionSpec: '$(python.version)' + architecture: 'x64' + + - ${{ if eq(parameters.name, 'Windows') }}: + # We need to install a C compiler, see + # https://github.com/Microsoft/azure-pipelines-tasks/issues/9674 + # TODO: This is only necessary for the py27 build, can be removed + # once py27 is dropped + - script: choco install vcpython27 + displayName: 'Install compiler' + + - script: | + python -m pip install --upgrade pip setuptools + pip install numpy + pip install -r requirements.txt + pip install -r requirements-dev.txt + displayName: 'Install dependencies' + + - script: | + python setup.py build_ext --inplace -q + displayName: 'Build Cython Extensions' + + - script: | + pytest statsmodels --junitxml=junit/test-results.xml --skip-examples -n 2 + displayName: 'pytest' + + - ${{ if eq(parameters.name, 'Linux') }}: + # Only lint on Linux + - script: | + LINT=true ./lint.sh + displayName: 'Checking code format (linting)' + + - task: PublishTestResults@2 + inputs: + testResultsFiles: '**/test-results.xml' + testRunTitle: 'Python $(python.version)' + condition: succeededOrFailed() + +- job: ${{ parameters.name }}Publish + dependsOn: ${{ parameters.name }}Test + pool: + vmImage: ${{ parameters.vmImage }} + + steps: + - task: UsePythonVersion@0 + inputs: + versionSpec: '3.x' + architecture: 'x64' diff --git a/tools/ci/docbuild.sh b/tools/ci/docbuild.sh new file mode 100644 index 0000000..e15e981 --- /dev/null +++ b/tools/ci/docbuild.sh @@ -0,0 +1,42 @@ +# Script to text examples and build docs on travis + +# Change to doc directory +cd "$SRCDIR"/docs + +# Run notebooks as tests +pytest ../statsmodels/examples/tests + +set -e +# Clean up +echo '================================= Clean =================================' +make clean +git clean -xdf + +# Build documentation +echo '========================================================================' +echo '= Building documentation =' +echo '========================================================================' +echo 'make html > doc_build.log 2>&1' +make html 2>&1 | tee doc_build.log + +set +e +# Info +echo '========================================================================' +echo '= Opportunities To Improve (Warnings) =' +echo '========================================================================' +grep -E '(WARNING)' doc_build.log | grep -v '(noindex|toctree)' + +# Check log +echo '========================================================================' +echo '= Broken Behavior (Errors and Warnings to be Fixed) =' +echo '========================================================================' +grep -E '(SEVERE|ERROR|WARNING)' doc_build.log | grep -Ev '(noindex|toctree)' + +# Check that docbuild succeeded. Exit 1 if not. +echo "Checking if index.html exists" +if [ -f "build/html/index.html" ]; then + echo "docbuild succeeded."; +else + echo "docbuild failed. Aborting doctr."; + exit 1; +fi; diff --git a/tools/ci/docbuild_install.sh b/tools/ci/docbuild_install.sh new file mode 100644 index 0000000..f07f80d --- /dev/null +++ b/tools/ci/docbuild_install.sh @@ -0,0 +1,14 @@ +# Additional installation requirements for travis docbuilds + +# Install system dependencies +echo sudo apt-get update +sudo apt-get update + +echo sudo apt-get install graphviz libgfortran3 -qq +sudo apt-get install graphviz libgfortran3 -qq +# Install required packages and R +echo conda install --channel conda-forge sphinx jupyter nbconvert numpydoc==0.8.0 r-robustbase r-lme4 r-geepack libiconv rpy2 --yes --quiet +conda install --channel conda-forge sphinx jupyter nbconvert numpydoc==0.8.0 r-robustbase r-lme4 r-geepack libiconv rpy2 --yes --quiet +# doctr and pdr +echo pip install doctr pandas-datareader simplegeneric +pip install doctr pandas-datareader simplegeneric diff --git a/tools/ci/run_test.bat b/tools/ci/run_test.bat new file mode 100644 index 0000000..b880f9e --- /dev/null +++ b/tools/ci/run_test.bat @@ -0,0 +1,20 @@ +@echo on + +@IF not Defined PYTEST_DIRECTIVES GOTO :RUN_FROM_INSTALL + +@echo Running test from %CD% +@echo pytest -n auto -r s statsmodels --skip-examples %PYTEST_DIRECTIVES% +pytest -n auto -r s statsmodels --skip-examples %PYTEST_DIRECTIVES% + +@GOTO :End + +:RUN_FROM_INSTALL + +mkdir test-run +cd test-run +@echo PYTEST_DIRECTIVES is not defined, testing using install +@echo Running test from %CD% +@echo python -c "import statsmodels;statsmodels.test(['-r s', '-n 2', '--skip-examples'], exit=True) +python -c "import statsmodels;statsmodels.test(['-r s', '-n 2', '--skip-examples'], exit=True) + +:End diff --git a/tools/ci/travis_conda.sh b/tools/ci/travis_conda.sh new file mode 100644 index 0000000..b847901 --- /dev/null +++ b/tools/ci/travis_conda.sh @@ -0,0 +1,26 @@ +# Source to configure conda CI builds +if [ "$TRAVIS_OS_NAME" = "linux" ]; then + CONDA_FILE="Miniconda3-latest-Linux-x86_64.sh"; +fi +if [ "$TRAVIS_OS_NAME" = "osx" ]; then + CONDA_FILE="Miniconda3-latest-MacOSX-x86_64.sh"; +fi +wget https://repo.continuum.io/miniconda/"$CONDA_FILE" -O miniconda.sh -nv +chmod +x miniconda.sh +./miniconda.sh -b -p "$HOME"/miniconda +export PATH="$HOME"/miniconda/bin:$PATH +conda config --set always_yes yes +conda update --quiet conda +conda config --set restore_free_channel true +# Build package list to avoid empty package=versions; only needed for versioned packages +PKGS="numpy"; if [ ${NUMPY} ]; then PKGS="${PKGS}=${NUMPY}"; fi +PKGS="${PKGS} scipy"; if [ ${SCIPY} ]; then PKGS="${PKGS}=${SCIPY}"; fi +PKGS="${PKGS} patsy"; if [ ${PATSY} ]; then PKGS="${PKGS}=${PATSY}"; fi +PKGS="${PKGS} pandas"; if [ ${PANDAS} ]; then PKGS="${PKGS}=${PANDAS}"; fi +PKGS="${PKGS} Cython"; if [ ${CYTHON} ]; then PKGS="${PKGS}=${CYTHON}"; fi +if [ ${USE_MATPLOTLIB} = true ]; then PKGS="${PKGS} matplotlib"; if [ ${MATPLOTLIB} ]; then PKGS="${PKGS}=${MATPLOTLIB}"; fi; fi +if [ ${COVERAGE} = true ]; then export COVERAGE_OPTS=" --cov=statsmodels "; else export COVERAGE_OPTS=""; fi +echo conda create --yes --quiet -n statsmodels-test python=${PYTHON} ${BLAS} ${PKGS} ${OPTIONAL} ${DEPEND_ALWAYS} +conda create --yes --quiet -n statsmodels-test python=${PYTHON} ${BLAS} ${PKGS} ${OPTIONAL} ${DEPEND_ALWAYS} +source activate statsmodels-test +python -m pip install --upgrade pip diff --git a/tools/ci/travis_pip.sh b/tools/ci/travis_pip.sh new file mode 100644 index 0000000..f1bd52a --- /dev/null +++ b/tools/ci/travis_pip.sh @@ -0,0 +1,41 @@ +# Source to configure pip CI builds +# Wheelhouse for various packages missing from pypi. +EXTRA_WHEELS="https://5cf40426d9f06eb7461d-6fe47d9331aba7cd62fc36c7196769e4.ssl.cf2.rackcdn.com" +# Wheelhouse for daily builds of some packages. +PRE_WHEELS="https://7933911d6844c6c53a7d-47bd50c35cd79bd838daf386af554a83.ssl.cf2.rackcdn.com" +EXTRA_PIP_FLAGS="--find-links=$EXTRA_WHEELS" +# Build package list to avoid empty package=versions; only needed for versioned packages +PKGS="${PKGS} numpy"; if [ ${NUMPY} ]; then PKGS="${PKGS}==${NUMPY}"; fi +PKGS="${PKGS} scipy"; if [ ${SCIPY} ]; then PKGS="${PKGS}==${SCIPY}"; fi +PKGS="${PKGS} patsy"; if [ ${PATSY} ]; then PKGS="${PKGS}==${PATSY}"; fi +PKGS="${PKGS} pandas"; if [ ${PANDAS} ]; then PKGS="${PKGS}==${PANDAS}"; fi +PKGS="${PKGS} Cython"; if [ ${CYTHON} ]; then PKGS="${PKGS}==${CYTHON}"; fi +if [ ${USE_MATPLOTLIB} = true ]; then + PKGS="${PKGS} matplotlib" + if [ ${MATPLOTLIB} ]; then + PKGS="${PKGS}==${MATPLOTLIB}" + fi +fi +if [ "${PIP_PRE}" = true ]; then + EXTRA_PIP_FLAGS="--pre $EXTRA_PIP_FLAGS --find-links $PRE_WHEELS" +fi + +# travis osx python support is limited. Use homebrew/pyenv to install python. +if [ "$TRAVIS_OS_NAME" = "osx" ]; then + + brew update && brew upgrade pyenv + + eval "$(pyenv init -)" + + pyenv install "$PYTHON" + pyenv shell "$PYTHON" +fi + +# Install in our own virtualenv +python -m pip install --upgrade pip +pip install --upgrade virtualenv +virtualenv --python=python venv +source venv/bin/activate +python --version # just to check +python -m pip install --upgrade pip +pip install ${EXTRA_PIP_FLAGS} ${PKGS} ${DEPEND_ALWAYS} diff --git a/tools/code_maintenance.py b/tools/code_maintenance.py new file mode 100644 index 0000000..889c80c --- /dev/null +++ b/tools/code_maintenance.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python +""" +Code maintenance script modified from PyMC +""" +import os + +# This is a function, not a test case, because it has to be run from inside +# the source tree to work well. + +mod_strs = ['IPython', 'pylab', 'matplotlib', 'scipy', 'Pdb'] + +dep_files = {} +for mod_str in mod_strs: + dep_files[mod_str] = [] + + +def remove_whitespace(fname): + # Remove trailing whitespace + fd = open(fname, mode='U') # open in universal newline mode + lines = [] + for line in fd.readlines(): + lines.append(line.rstrip()) + fd.close() + + fd = open(fname, mode='w') + fd.seek(0) + for line in lines: + fd.write(line+'\n') + fd.close() + + +def find_whitespace(fname): + fd = open(fname, mode='U') + for line in fd.readlines(): + if ' \n' in line: + print(fname) + break + + +# print +print_only = True + +# ==================== +# = Strip whitespace = +# ==================== +for dirname, dirs, files in os.walk('.'): + if dirname[1:].find('.') == -1: + for fname in files: + if (fname[-2:] in ['c', 'f'] or + fname[-3:] == '.py' or + fname[-4:] in ['.pyx', '.txt', '.tex', '.sty', '.cls'] or + fname.find('.') == -1): + if print_only: + find_whitespace(dirname + '/' + fname) + else: + remove_whitespace(dirname + '/' + fname) + + +""" + +# ========================== +# = Check for dependencies = +# ========================== +for dirname, dirs, files in os.walk('pymc'): + for fname in files: + if fname[-3:] == '.py' or fname[-4:] == '.pyx': + if (dirname.find('sandbox') == -1 and + fname != 'test_dependencies.py' + and dirname.find('examples') == -1): + for mod_str in mod_strs: + if file(dirname+'/'+fname).read().find(mod_str)>=0: + dep_files[mod_str].append(dirname+'/'+fname) + + +print 'Instances of optional dependencies found are:' +for mod_str in mod_strs: + print '\t'+mod_str+':' + for fname in dep_files[mod_str]: + print '\t\t'+fname +if len(dep_files['Pdb'])>0: + raise ValueError('Looks like Pdb was not commented out in ' + + ', '.join(dep_files[mod_str])) + + +""" diff --git a/tools/dataset_rst.py b/tools/dataset_rst.py new file mode 100755 index 0000000..09c47d0 --- /dev/null +++ b/tools/dataset_rst.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 +""" +Run this script to convert dataset documentation to ReST files. Relies +on the meta-information from the datasets of the currently installed version. +Ie., it imports the datasets package to scrape the meta-information. +""" + +import statsmodels.api as sm +import os +from os.path import join, realpath, dirname +import inspect +from string import Template + +import hash_funcs + +file_path = dirname(__file__) +dest_dir = realpath(join(file_path, '..', 'docs', 'source', 'datasets', + 'generated')) + +datasets = dict(inspect.getmembers(sm.datasets, inspect.ismodule)) +datasets.pop('utils') + +doc_template = Template(u"""$TITLE +$title_ + +Description +----------- + +$DESCRIPTION + +Notes +----- +$NOTES + +Source +------ +$SOURCE + +Copyright +--------- + +$COPYRIGHT +""") + +if __name__ == "__main__": + + if not os.path.exists(dest_dir): + os.makedirs(dest_dir) + + for dataset in datasets: + write_pth = join(dest_dir, dataset + '.rst') + data_mod = datasets[dataset] + title = getattr(data_mod, 'TITLE') + descr = getattr(data_mod, 'DESCRLONG') + copyr = getattr(data_mod, 'COPYRIGHT') + notes = getattr(data_mod, 'NOTE') + source = getattr(data_mod, 'SOURCE') + write_file = doc_template.substitute(TITLE=title, + title_='='*len(title), + DESCRIPTION=descr, NOTES=notes, + SOURCE=source, COPYRIGHT=copyr) + to_write, filehash = hash_funcs.check_hash(write_file.encode(), + data_mod.__name__.encode()) + if not to_write: + print("Hash has not changed for docstring of dataset " + "{}".format(dataset)) + continue + with open(os.path.realpath(write_pth), 'w') as rst_file: + rst_file.write(write_file) + if filehash is not None: + hash_funcs.update_hash_dict(filehash, data_mod.__name__) diff --git a/tools/estmat2nparray.ado b/tools/estmat2nparray.ado new file mode 100644 index 0000000..29521b8 --- /dev/null +++ b/tools/estmat2nparray.ado @@ -0,0 +1,138 @@ +* +* Save estimation results and matrices to a Python module +* +* Based on mat2nparray by Skipper +* Changes by Josef +* +* changes +* ------- +* write also column and row names of matrices to py module +* replace missing values by np.nan in matrices +* make namelist optional +* add estimation results from e(), e(scalars) and e(macros), not the matrices in e +* make estimation result optional +* add aliases for params_table +* don't split col or row names if only 1 - changed my mind: always list + +* Issues +* ------ +* row and colum names if only a single row or column - list or string + +capture program drop estmat2nparray +program define estmat2nparray + version 11.0 + syntax [namelist(min=1)], SAVing(str) [ Format(str) APPend REPlace NOEst] + if "`format'"=="" local format "%16.0g" + local saving: subinstr local saving "." ".", count(local ext) + if !`ext' local saving "`saving'.py" + tempname myfile + file open `myfile' using "`saving'", write text `append' `replace' + file write `myfile' "import numpy as np" _n _n + + /* get results from e()*/ + if "`noest'" == "" { + file write `myfile' "est = dict(" _n + + local escalars : e(scalars) + foreach ii in `escalars'{ + file write `myfile' " " "`ii'" " = " "`e(`ii')'" "," _n + } + + local emacros : e(macros) + foreach ii in `emacros' { + file write `myfile' " " "`ii'" " = " `"""' "`e(`ii')'" `"""' "," _n + } + file write `myfile' " )" _n _n + } + /* end write e()*/ + + + foreach mat of local namelist { + mkarray `mat' `myfile' `format' + } + file write `myfile' "from statsmodels.tools.tools import Bunch" _n + + if "`noest'" == "" { + file write `myfile' " for i,att in enumerate(['params', 'bse', 'tvalues', 'pvalues']):" _n + file write `myfile' " self[att] = self.params_table[:,i]" _n _n + } + file write `myfile' "" _n + file write `myfile' "results = Bunch(" _n + foreach mat of local namelist { + file write `myfile' " `mat'=`mat', " _n + file write `myfile' " `mat'_colnames=`mat'_colnames, " _n + file write `myfile' " `mat'_rownames=`mat'_rownames, " _n + } + + if "`noest'" == "" { + file write `myfile' " **est" _n + } + file write `myfile' " )" _n _n +file close `myfile' +end + +capture program drop mkarray +program define mkarray + + args mat myfile fmt + local nrows = rowsof(`mat') + local ncols = colsof(`mat') + local i 1 + local j 1 + file write `myfile' "`mat' = np.array([" + local justifyn = length("`mat' = np.array([") + forvalues i=1/`nrows' { + forvalues j = 1/`ncols' { + if `i' > 1 | `j' > 1 { // then we need to indent + forvalues k=1/`justifyn' { + file write `myfile' " " + } + } + if `i' < `nrows' | `j' < `ncols' { + if mi(`mat'[`i',`j']) { + file write `myfile' "np.nan" ", " _n + } + else { + file write `myfile' `fmt' (`mat'[`i',`j']) ", " _n + } + } + else { + if mi(`mat'[`i',`j']) { + file write `myfile' "np.nan" + } + else { + file write `myfile' `fmt' (`mat'[`i',`j']) + } + } + } + } + + if `nrows' == 1 | `ncols' == 1 { + file write `myfile' "])" _n _n + } + else { + file write `myfile' "]).reshape(`nrows',`ncols')" _n _n + } + capture drop colnms + local colnms: coln `mat' + capture file write `myfile' "`mat'_colnames = '" "`colnms'" "'" + * always split -> return list for single column + * set > 1 to avoid list for single column + if `ncols' > 0 { + file write `myfile' ".split()" _n _n + } + else { + file write `myfile' _n _n + } + + capture drop rownms + local rownms: rown `mat' + capture file write `myfile' "`mat'_rownames = '" "`rownms'" "'" + * always split -> return list for single row + if `nrows' > 0 { + file write `myfile' ".split()" _n _n + } + else { + file write `myfile' _n _n + } +end diff --git a/tools/examples_rst.py b/tools/examples_rst.py new file mode 100755 index 0000000..4735903 --- /dev/null +++ b/tools/examples_rst.py @@ -0,0 +1,164 @@ +#!/usr/bin/env python3 + +import os +import sys +import re +import subprocess + +# Ours +import hash_funcs + +# ---------------------------------------------------- +# Globals +# ---------------------------------------------------- +# these files do not get made into .rst files because of +# some problems, they may need a simple cleaning up +exclude_list = ['run_all.py', + # these need to be cleaned up + 'example_ols_tftest.py', + 'example_glsar.py', + 'example_ols_table.py', + # not finished yet + 'example_arima.py', + 'try_wls.py'] + +file_path = os.path.dirname(__file__) +gen_dir = os.path.join(file_path, '../docs/source/examples/generated/') +docs_rst_dir = os.path.realpath(gen_dir) +example_dir = os.path.realpath(os.path.join(file_path, '../examples/')) + + +def check_script(filename): + """ + Run all the files in filelist from run_all. Add any with problems + to exclude_list and return it. + """ + + file_to_run = "python -c\"import warnings; " + file_to_run += "warnings.simplefilter('ignore'); " + file_to_run += "from matplotlib import use; use('Agg'); " + file_to_run += "execfile(r'%s')\"" % os.path.join(example_dir, filename) + proc = subprocess.Popen(file_to_run, shell=True, stdout=subprocess.PIPE, + stderr=subprocess.PIPE) + # NOTE: use communicate to wait for process termination + stdout, stderr = proc.communicate() + result = proc.returncode + if result != 0: # raised an error + msg = "Not generating reST from %s. An error occurred.\n" % filename + msg += stderr + print(msg) + return False + return True + + +def parse_docstring(block): + """ + Strips the docstring from a string representation of the file. + Returns the docstring and block without it + """ + ds = "\"{3}|'{3}" + try: + start = re.search(ds, block).end() + end = re.search(ds, block[start:]).start() + except AttributeError: # TODO: make more informative + raise IOError("File %s does not have a docstring?") + docstring = block[start:start+end] + block = block[start+end+3:] + return docstring.strip(), block + + +def parse_file(block): + """ + Block is a raw string file. + """ + docstring, block = parse_docstring(block) + # just get the first line from the docstring + docstring = docstring.split('\n')[0] or docstring.split('\n')[1] + outfile = [docstring, '='*len(docstring), ''] + block = block.split('\n') + + # iterate through the rest of block, anything in comments is stripped of # + # anything else is fair game to go in an ipython directive + code_snippet = False + for line in block: + + if line.startswith('#') and not (line.startswith('#%') or + line.startswith('#@')): + # on some ReST text + if code_snippet: # we're on a code snippet + outfile.append('') + code_snippet = False + line = line.strip() + # try to remove lines like # hello -> #hello + line = re.sub(r"(?<=#) (?!\s)", "", line) + # make sure commented out things have a space + line = re.sub(r"#\.\.(?!\s)", "#.. ", line) + line = re.sub("^#+", "", line) # strip multiple hashes + outfile.append(line) + else: + if not code_snippet: # new code block + outfile.append('\n.. ipython:: python\n') + code_snippet = True + # handle decorators and magic functions + if line.startswith('#%') or line.startswith('#@'): + line = line[1:] + outfile.append(' '+line.strip('\n')) + return '\n'.join(outfile) + + +def write_file(outfile, rst_file_pth): + """ + Write outfile to rst_file_pth + """ + print("Writing ", os.path.basename(rst_file_pth)) + write_file = open(rst_file_pth, 'w') + write_file.writelines(outfile) + write_file.close() + + +def restify(example_file, filehash, fname): + """ + Takes a whole file ie., the result of file.read(), its md5 hash, and + the filename + Parse the file + Write the new .rst + Update the hash_dict + """ + write_filename = os.path.join(docs_rst_dir, fname[:-2] + 'rst') + try: + rst_file = parse_file(example_file) + except IOError as err: + raise IOError(err.message % fname) + write_file(rst_file, write_filename) + if filehash is not None: + hash_funcs.update_hash_dict(filehash, fname) + + +if __name__ == "__main__": + sys.path.insert(0, example_dir) + sys.path.remove(example_dir) + + if not os.path.exists(docs_rst_dir): + os.makedirs(docs_rst_dir) + + if len(sys.argv) > 1: # given a file,files to process, no help flag yet + for example_file in sys.argv[1:]: + whole_file = open(example_file, 'r').read() + restify(whole_file, None, example_file) + + else: # process the whole directory + for root, dirnames, filenames in os.walk(example_dir): + if 'notebooks' in root: + continue + for example in filenames: + example_file = os.path.join(root, example) + whole_file = open(example_file, 'r').read() + to_write, filehash = hash_funcs.check_hash(whole_file, + example) + if not to_write: + print("Hash has not changed for file %s" % example) + continue + elif (not example.endswith('.py') or example in exclude_list or + not check_script(example_file)): + continue + restify(whole_file, filehash, example) diff --git a/tools/export_notebooks_to_python.py b/tools/export_notebooks_to_python.py new file mode 100644 index 0000000..237fa38 --- /dev/null +++ b/tools/export_notebooks_to_python.py @@ -0,0 +1,137 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +import argparse +import glob +import logging +import os +import textwrap + +import nbconvert +from yapf.yapflib.yapf_api import FormatCode + +BASE_PATH = os.path.split(os.path.abspath(__file__))[0] +DO_NOT_EDIT = """ +# DO NOT EDIT +# Autogenerated from the notebook {notebook}. +# Edit the notebook and then sync the output with this file. +# +# flake8: noqa +# DO NOT EDIT +""" + +logger = logging.getLogger('notebook-exporter') +logger.setLevel(logging.INFO) +ch = logging.StreamHandler() +ch.setLevel(logging.INFO) +logger.addHandler(ch) + +parser = argparse.ArgumentParser(description=""" +Sync notebooks to python by exporting. The exported files are +always written in ../python relative to the notebooks. +Requires nbconvert and yapf. +""") +parser.add_argument('--full-path', '-fp', type=str, default=None, + help='Full Path to notebook to convert. Converts all ' + 'notebooks in FULL_PATH by default. If not ' + 'specified, searches for examples in ' + '../examples/notebooks (relative to this file).') +parser.add_argument('--notebook', '-nb', type=str, default=None, + help='Name of a single notebook to export. If not ' + 'provided, all notebooks found are exported. Appends ' + '.ipynb if NOTEBOOK does not end with this ' + 'extension.') +parser.add_argument('--force', '-f', action='store_true', + help='Force conversion if python file in destination ' + 'exists and is newer than notebook.') + + +def is_newer(file1, file2, strict=True): + """ + Determine if file1 has been modified after file2 + + Parameters + ---------- + file1 : str + File path. May not exist, in which case False is returned. + file1 : str + File path. Must exist. + strict : bool + Use strict inequality test (>). If False, then returns True for files + with the same modified time. + + Returns + ------- + newer : bool + True if file1 is strictly newer than file 2 + """ + try: + t1 = os.path.getmtime(file1) + t2 = os.path.getmtime(file2) + except FileNotFoundError: + return False + if strict: + return t1 > t2 + return t1 >= t2 + + +def main(): + args = parser.parse_args() + full_path = args.full_path + force = args.force + if full_path is None: + full_path = os.path.join(BASE_PATH, '..', 'examples', 'notebooks') + notebook = args.notebook + if notebook is None: + notebooks = glob.glob(os.path.join(full_path, '*.ipynb')) + else: + if not notebook.endswith('.ipynb'): + notebook = notebook + '.ipynb' + notebook = os.path.abspath(os.path.join(full_path, notebook)) + if not os.path.exists(notebook): + raise FileNotFoundError('Notebook {0} not found.'.format(notebook)) + notebooks = [notebook] + if not notebooks: + import warnings + warnings.warn('No notebooks found', UserWarning) + for nb in notebooks: + nb_full_name = os.path.split(nb)[1] + nb_name = os.path.splitext(nb_full_name)[0] + py_name = nb_name + '.py' + # Get base directory to notebook + out_file = os.path.split(nb)[0] + # Write to ../python + out_file = os.path.join(out_file, '..', 'python', py_name) + if is_newer(out_file, nb) and not force: + logger.info('Skipping {0}, exported version newer than ' + 'notebook'.format(nb_name)) + continue + logger.info('Converting {0}'.format(nb_name)) + with open(nb, 'r') as nb_file: + converter = nbconvert.PythonExporter() + python = converter.from_file(nb_file) + code = python[0].split('\n') + code_out = [] + for i, block in enumerate(code): + if 'get_ipython' in block: + continue + elif block.startswith('# In[ ]:'): + continue + if block.startswith('#'): + # Wrap comments from Markdown + block = textwrap.fill(block, width=74) + block = block.replace('\n', '\n# ') + code_out.append(block) + if not code_out[0]: + code_out = code_out[1:] + loc = 0 + if 'coding' in code_out[0]: + loc = 1 + code_out.insert(loc, DO_NOT_EDIT.format(notebook=nb_full_name)) + code_out = '\n'.join(code_out) + code_out, success = FormatCode(code_out, style_config='pep8') + with open(out_file, 'w') as of: + of.write(code_out) + + +if __name__ == '__main__': + main() diff --git a/tools/fold_toc.py b/tools/fold_toc.py new file mode 100755 index 0000000..5859cfe --- /dev/null +++ b/tools/fold_toc.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import re +import sys + +# Read doc to string +filename = sys.argv[1] +try: + static_path = sys.argv[2] +except IndexError: + static_path = '_static' +doc = open(filename, encoding='utf8').read() + +# Add mktree to head +pre = '' +post = ''' + + +''' +post = re.sub('static_path', static_path, post) +doc = re.sub(pre, post, doc) + +# TOC class +pre = '''

    +
      ''' +post = '''
      +Expand all. +Collapse all. +
        ''' # noqa:E501 +toc_n = doc.count('toctree-wrapper') +for i in range(toc_n): + post_n = re.sub('#', str(i), post) + doc = re.sub(pre, post_n, doc, count=1) + +# TOC entries +pre = '
      • ' +post = '
      • ' +doc = re.sub(pre, post, doc) + +# TOC entries 2nd level +pre = '
      • ' +post = '
      • ' +doc = re.sub(pre, post, doc) + +# TOC entries 3rd level +pre = '
      • ' +post = '
      • ' +doc = re.sub(pre, post, doc) + +# TOC entries 4th level +pre = '
      • ' +post = '
      • ' +doc = re.sub(pre, post, doc) + +# Write to file +f = open(filename, 'w', encoding='utf8') +f.write(doc) +f.close() diff --git a/tools/generate_formula_api.py b/tools/generate_formula_api.py new file mode 100755 index 0000000..244d909 --- /dev/null +++ b/tools/generate_formula_api.py @@ -0,0 +1,78 @@ +#!/usr/bin/env python +""" +This will generate an API file for formula. in dir/statsmodels/formula/api.py + +It first builds statsmodels in place, then generates the file. It's to be run +by developers to add files to the formula API without having to maintain this +by hand. + +usage + +generate_formula_api /home/skipper/statsmodels/statsmodels/ +""" + +import sys +import os + + +def iter_subclasses(cls, _seen=None, template_classes=[]): + """ + Generator to iterate over all the subclasses of Model. Based on + + http://code.activestate.com/recipes/576949-find-all-subclasses-of-a-given-class/ + + Yields class + """ + if not isinstance(cls, type): + raise TypeError('itersubclasses must be called with ' + 'new-style classes, not %.100r' % cls) + if _seen is None: + _seen = set() + try: + subs = cls.__subclasses__() + except TypeError: # fails only when cls is type + subs = cls.__subclasses__(cls) + for sub in subs: + if sub not in _seen and sub.__name__ not in template_classes: + _seen.add(sub) + # we don't want to yield the templates, but we do want to + # recurse on them + yield sub + for sub in iter_subclasses(sub, _seen, template_classes): + yield sub + + +def write_formula_api(directory): + template_classes = ['DiscreteModel', 'BinaryModel', 'MultinomialModel', + 'OrderedModel', 'CountModel', + 'LikelihoodModel', 'GenericLikelihoodModel', + 'TimeSeriesModel', + # this class should really be deleted + 'ARIMAProcess', + # these need some more work, so don't expose them + 'ARIMA', 'VAR', 'SVAR', 'AR', 'NBin', 'NbReg', 'ARMA', + ] + + path = os.path.join(directory, 'statsmodels', 'formula', 'api.py') + fout = open(path, 'w') + for model in iter_subclasses(Model, template_classes=template_classes): + print("Generating API for %s" % model.__name__) + fout.write( + 'from ' + model.__module__ + ' import ' + model.__name__ + '\n' + ) + fout.write( + model.__name__.lower() + ' = ' + model.__name__ + '.from_formula\n' + ) + fout.close() + + +if __name__ == "__main__": + import statsmodels.api as sm + print("Generating formula API for statsmodels version %s" + % sm.version.full_version) + directory = sys.argv[1] + cur_dir = os.path.dirname(__file__) + os.chdir(directory) + # it needs to be installed to walk the whole subclass chain? + from statsmodels.base.model import Model + write_formula_api(directory) diff --git a/tools/gh_api.py b/tools/gh_api.py new file mode 100644 index 0000000..865b3b4 --- /dev/null +++ b/tools/gh_api.py @@ -0,0 +1,311 @@ +"""Functions for Github API requests. + +Copied from IPython 9e82bc5 +https://github.com/ipython/ipython/blob/master/tools/gh_api.py +""" +from __future__ import print_function + +try: + input = raw_input +except NameError: + pass + +import os +import re +import sys +from datetime import datetime + +import requests +import getpass +import json + +try: + import requests_cache +except ImportError: + print("no cache") +else: + requests_cache.install_cache("gh_api") + +# Keyring stores passwords by a 'username', but we're not storing a username +# and password +fake_username = 'statsmodels_tools' + + +class Obj(dict): + """Dictionary with attribute access to names.""" + def __getattr__(self, name): + try: + return self[name] + except KeyError: + raise AttributeError(name) + + def __setattr__(self, name, val): + self[name] = val + + +token = None + + +def get_auth_token(): + global token + + if token is not None: + return token + + import keyring + token = keyring.get_password('github', fake_username) + if token is not None: + return token + + print("Please enter your github username and password. These are not " + "stored, only used to get an oAuth token. You can revoke this at " + "any time on Github.") + user = input("Username: ") + pw = getpass.getpass("Password: ") + + auth_request = { + "scopes": [ + "public_repo", + "gist" + ], + "note": "Statsmodels tools - {}".format(datetime.now().isoformat()), + "note_url": "https://github.com/statsmodels/statsmodels/tree/master/tools", # noqa:E501 + } + response = requests.post('https://api.github.com/authorizations', + auth=(user, pw), data=json.dumps(auth_request)) + response.raise_for_status() + token = json.loads(response.text)['token'] + keyring.set_password('github', fake_username, token) + return token + + +def make_auth_header(): + return {'Authorization': 'token ' + get_auth_token()} + + +def post_issue_comment(project, num, body): + url = ('https://api.github.com/repos/{project}/issues/{num}/comments' + .format(project=project, num=num)) + payload = json.dumps({'body': body}) + requests.post(url, data=payload, headers=make_auth_header()) + + +def post_gist(content, description='', filename='file', auth=False): + """Post some text to a Gist, and return the URL.""" + post_data = json.dumps({ + "description": description, + "public": True, + "files": { + filename: { + "content": content + } + } + }).encode('utf-8') + + headers = make_auth_header() if auth else {} + response = requests.post("https://api.github.com/gists", + data=post_data, headers=headers) + response.raise_for_status() + response_data = json.loads(response.text) + return response_data['html_url'] + + +def get_pull_request(project, num, auth=False): + """get pull request info by number + """ + url = ("https://api.github.com/repos/{project}/pulls/{num}" + .format(project=project, num=num)) + if auth: + header = make_auth_header() + else: + header = None + response = requests.get(url, headers=header) + response.raise_for_status() + return json.loads(response.text, object_hook=Obj) + + +def get_pull_request_files(project, num, auth=False): + """get list of files in a pull request""" + url = ("https://api.github.com/repos/{project}/pulls/{num}/files" + .format(project=project, num=num)) + if auth: + header = make_auth_header() + else: + header = None + return get_paged_request(url, headers=header) + + +element_pat = re.compile(r'<(.+?)>') +rel_pat = re.compile(r'rel=[\'"](\w+)[\'"]') + + +def get_paged_request(url, headers=None, **params): + """get a full list, handling APIv3's paging""" + results = [] + params.setdefault("per_page", 100) + while True: + print("fetching %s with %s" % (url, params), file=sys.stderr) + response = requests.get(url, headers=headers, params=params) + response.raise_for_status() + results.extend(response.json()) + if 'next' in response.links: + url = response.links['next']['url'] + else: + break + return results + + +def get_pulls_list(project, auth=False, **params): + """get pull request list""" + params.setdefault("state", "closed") + url = ("https://api.github.com/repos/{project}/pulls" + .format(project=project)) + if auth: + headers = make_auth_header() + else: + headers = None + pages = get_paged_request(url, headers=headers, **params) + return pages + + +def get_issues_list(project, auth=False, **params): + """get issues list""" + params.setdefault("state", "closed") + url = ("https://api.github.com/repos/{project}/issues" + .format(project=project)) + if auth: + headers = make_auth_header() + else: + headers = None + pages = get_paged_request(url, headers=headers, **params) + return pages + + +def get_milestones(project, auth=False, **params): + url = ("https://api.github.com/repos/{project}/milestones" + .format(project=project)) + if auth: + headers = make_auth_header() + else: + headers = None + pages = get_paged_request(url, headers=headers, **params) + return pages + + +def get_milestone_id(project, milestone, auth=False, **params): + pages = get_milestones(project, auth=auth, **params) + for page in pages: + if page['title'] == milestone: + return page['number'] + else: + raise ValueError("milestone %s not found" % milestone) + + +def is_pull_request(issue): + """Return True if the given issue is a pull request.""" + return bool(issue.get('pull_request', {}).get('html_url', None)) + + +# encode_multipart_formdata is from urllib3.filepost +# The only change is to iter_fields, to enforce S3's required key ordering + + +def iter_fields(fields): + fields = fields.copy() + for key in ('key', 'acl', 'Filename', 'success_action_status', + 'AWSAccessKeyId', 'Policy', 'Signature', + 'Content-Type', 'file'): + yield (key, fields.pop(key)) + for (k, v) in fields.items(): + yield k, v + + +def encode_multipart_formdata(fields, boundary=None): + """ + Encode a dictionary of ``fields`` using the multipart/form-data mime + format. + + :param fields: + Dictionary of fields or list of (key, value) field tuples. The key is + treated as the field name, and the value as the body of the form-data + bytes. If the value is a tuple of two elements, then the first element + is treated as the filename of the form-data section. + + Field names and filenames must be unicode. + + :param boundary: + If not specified, then a random boundary will be generated using + :func:`mimetools.choose_boundary`. + """ + # copy requests imports in here: + from io import BytesIO + from requests.packages.urllib3.filepost import ( + choose_boundary, six, writer, b, get_content_type + ) + body = BytesIO() + if boundary is None: + boundary = choose_boundary() + + for fieldname, value in iter_fields(fields): + body.write(b('--%s\r\n' % (boundary))) + + if isinstance(value, tuple): + filename, data = value + writer(body).write('Content-Disposition: form-data; name="%s"; ' + 'filename="%s"\r\n' % (fieldname, filename)) + body.write(b('Content-Type: %s\r\n\r\n' % + (get_content_type(filename)))) + else: + data = value + writer(body).write('Content-Disposition: form-data; name="%s"\r\n' + % (fieldname)) + body.write(b'Content-Type: text/plain\r\n\r\n') + + if isinstance(data, int): + data = str(data) # Backwards compatibility + if isinstance(data, six.text_type): + writer(body).write(data) + else: + body.write(data) + + body.write(b'\r\n') + + body.write(b('--%s--\r\n' % (boundary))) + + content_type = b('multipart/form-data; boundary=%s' % boundary) + + return body.getvalue(), content_type + + +def post_download(project, filename, name=None, description=""): + """Upload a file to the GitHub downloads area""" + if name is None: + name = os.path.basename(filename) + with open(filename, 'rb') as f: + filedata = f.read() + + url = ("https://api.github.com/repos/{project}/downloads" + .format(project=project)) + + payload = json.dumps(dict(name=name, size=len(filedata), + description=description)) + response = requests.post(url, data=payload, headers=make_auth_header()) + response.raise_for_status() + reply = json.loads(response.content) + s3_url = reply['s3_url'] + + fields = dict( + key=reply['path'], + acl=reply['acl'], + success_action_status=201, + Filename=reply['name'], + AWSAccessKeyId=reply['accesskeyid'], + Policy=reply['policy'], + Signature=reply['signature'], + file=(reply['name'], filedata), + ) + fields['Content-Type'] = reply['mime_type'] + data, content_type = encode_multipart_formdata(fields) + s3r = requests.post(s3_url, data=data, + headers={'Content-Type': content_type}) + return s3r diff --git a/tools/github_stats.py b/tools/github_stats.py new file mode 100644 index 0000000..dac9394 --- /dev/null +++ b/tools/github_stats.py @@ -0,0 +1,216 @@ +#!/usr/bin/env python +"""Simple tools to query github.com and gather stats about issues. + +Copied from IPython 732be29 +https://github.com/ipython/ipython/blob/master/tools/github_stats.py +""" +# ----------------------------------------------------------------------------- +# Imports +# ----------------------------------------------------------------------------- + +from __future__ import print_function + +import sys + +from datetime import datetime, timedelta +from subprocess import check_output +from gh_api import get_paged_request, make_auth_header, get_pull_request + +# ----------------------------------------------------------------------------- +# Globals +# ----------------------------------------------------------------------------- + +ISO8601 = "%Y-%m-%dT%H:%M:%SZ" +PER_PAGE = 100 + + +# ----------------------------------------------------------------------------- +# Functions +# ----------------------------------------------------------------------------- + +def get_issues(project="statsmodels/statsmodels", state="closed", pulls=False): + """Get a list of the issues from the Github API.""" + which = 'pulls' if pulls else 'issues' + url = ("https://api.github.com/repos/%s/%s?state=%s&per_page=%i" + % (project, which, state, PER_PAGE)) + return get_paged_request(url, headers=make_auth_header()) + + +def round_hour(dt): + return dt.replace(minute=0, second=0, microsecond=0) + + +def _parse_datetime(s): + """Parse dates in the format returned by the Github API.""" + if s: + return datetime.strptime(s, ISO8601) + else: + return datetime.fromtimestamp(0) + + +def issues2dict(issues): + """Convert a list of issues to a dict, keyed by issue number.""" + idict = {} + for i in issues: + idict[i['number']] = i + return idict + + +def is_pull_request(issue): + """Return True if the given issue is a pull request.""" + return bool(issue.get('pull_request', {}).get('html_url', None)) + + +def split_pulls(all_issues, project="statsmodels/statsmodels"): + """split a list of closed issues into non-PR Issues and Pull Requests""" + pulls = [] + issues = [] + for i in all_issues: + if is_pull_request(i): + pull = get_pull_request(project, i['number'], auth=True) + pulls.append(pull) + else: + issues.append(i) + return issues, pulls + + +def issues_closed_since(period=timedelta(days=365), + project="statsmodels/statsmodels", pulls=False): + """ + Get all issues closed since a particular point in time. period + can either be a datetime object, or a timedelta object. In the + latter case, it is used as a time before the present. + """ + + which = 'pulls' if pulls else 'issues' + + if isinstance(period, timedelta): + since = round_hour(datetime.utcnow() - period) + else: + since = period + url = ("https://api.github.com/repos/%s/%s?" + "state=closed&sort=updated&since=%s&per_page=%i" + % (project, which, since.strftime(ISO8601), PER_PAGE)) + allclosed = get_paged_request(url, headers=make_auth_header()) + + filtered = [i for i in allclosed + if _parse_datetime(i['closed_at']) > since] + if pulls: + filtered = [i for i in filtered + if _parse_datetime(i['merged_at']) > since] + # filter out PRs not against master (backports) + filtered = [i for i in filtered if i['base']['ref'] == 'master'] + else: + filtered = [i for i in filtered if not is_pull_request(i)] + + return filtered + + +def sorted_by_field(issues, field='closed_at', reverse=False): + """Return a list of issues sorted by closing date date.""" + return sorted(issues, key=lambda i: i[field], reverse=reverse) + + +def report(issues, show_urls=False): + """Summary report about a list of issues, printing number and title. + """ + # titles may have unicode in them, so we must encode everything below + if show_urls: + for i in issues: + role = 'ghpull' if 'merged_at' in i else 'ghissue' + print(u'* :%s:`%d`: %s' % (role, i['number'], i['title'])) + else: + for i in issues: + print(u'* %d: %s' % (i['number'], i['title'])) + + +# ----------------------------------------------------------------------------- +# Main script +# ----------------------------------------------------------------------------- + +if __name__ == "__main__": + # deal with unicode + import codecs + sys.stdout = codecs.getwriter('utf8')(sys.stdout) + + # Whether to add reST urls for all issues in printout. + show_urls = True + + # By default, search one month back + tag = None + if len(sys.argv) > 1: + try: + days = int(sys.argv[1]) + except ValueError: + tag = sys.argv[1] + else: + tag = check_output(['git', 'describe', '--abbrev=0']).strip() + + if tag: + cmd = ['git', 'log', '-1', '--format=%ai', tag] + tagday, tz = check_output(cmd).strip().rsplit(' ', 1) + since = datetime.strptime(tagday, "%Y-%m-%d %H:%M:%S") + h = int(tz[1:3]) + m = int(tz[3:]) + td = timedelta(hours=h, minutes=m) + if tz[0] == '-': + since += td + else: + since -= td + else: + since = datetime.utcnow() - timedelta(days=days) + + since = round_hour(since) + + print("fetching GitHub stats since %s (tag: %s)" % (since, tag), + file=sys.stderr) + # turn off to play interactively without redownloading, use %run -i + if 1: + issues = issues_closed_since(since, pulls=False) + pulls = issues_closed_since(since, pulls=True) + + # For regular reports, it's nice to show them in reverse + # chronological order + issues = sorted_by_field(issues, reverse=True) + pulls = sorted_by_field(pulls, reverse=True) + + n_issues, n_pulls = map(len, (issues, pulls)) + n_total = n_issues + n_pulls + + # Print summary report we can directly include into release notes. + + print() + since_day = since.strftime("%Y/%m/%d") + today = datetime.today().strftime("%Y/%m/%d") + print("GitHub stats for %s - %s (tag: %s)" % (since_day, today, tag)) + print() + print("These lists are automatically generated, " + "and may be incomplete or contain duplicates.") + print() + if tag: + # print git info, in addition to GitHub info: + since_tag = tag+'..' + cmd = ['git', 'log', '--oneline', since_tag] + ncommits = len(check_output(cmd).splitlines()) + + author_cmd = ['git', 'log', "--format='* %aN'", since_tag] + bauthors = check_output(author_cmd) + all_authors = bauthors.decode('utf-8', 'replace').splitlines() + unique_authors = sorted(set(all_authors), key=lambda s: s.lower()) + print("The following %i authors contributed %i commits." + % (len(unique_authors), ncommits)) + print() + print('\n'.join(unique_authors)) + print() + + print() + print("We closed a total of %d issues, " + "%d pull requests and %d regular issues;\n" + "this is the full list (generated with the script \n" + ":file:`tools/github_stats.py`):" % (n_total, n_pulls, n_issues)) + print() + print('Pull Requests (%d):\n' % n_pulls) + report(pulls, show_urls) + print() + print('Issues (%d):\n' % n_issues) + report(issues, show_urls) diff --git a/tools/hash_funcs.py b/tools/hash_funcs.py new file mode 100644 index 0000000..b398820 --- /dev/null +++ b/tools/hash_funcs.py @@ -0,0 +1,53 @@ +""" +A collection of utilities to see if new ReST files need to be automatically +generated from certain files in the project (examples, datasets). +""" +import os +from statsmodels.compat import cPickle + +file_path = os.path.dirname(__file__) + + +def get_hash(f): + """ + Gets hexadmecimal md5 hash of a string + """ + import hashlib + m = hashlib.md5() + m.update(f) + return m.hexdigest() + + +def update_hash_dict(filehash, filename): + """ + Opens the pickled hash dictionary, adds an entry, and dumps it back. + """ + try: + with open(file_path + '/hash_dict.pickle', 'rb') as f: + hash_dict = cPickle.load(f) + except IOError: + hash_dict = {} + + hash_dict.update({filename: filehash}) + with open(os.path.join(file_path, 'hash_dict.pickle'), 'wb') as f: + cPickle.dump(hash_dict, f) + + +def check_hash(rawfile, filename): + """ + Returns True if hash does not match the previous one. + """ + try: + with open(file_path + '/hash_dict.pickle', 'rb') as f: + hash_dict = cPickle.load(f) + except IOError: + hash_dict = {} + try: + checkhash = hash_dict[filename] + except KeyError: + checkhash = None + + filehash = get_hash(rawfile) + if filehash == checkhash: + return False, None + return True, filehash diff --git a/tools/km_cox1.do b/tools/km_cox1.do new file mode 100644 index 0000000..17c58c2 --- /dev/null +++ b/tools/km_cox1.do @@ -0,0 +1,78 @@ +/* Run Survival models and save results + +Author: Josef Perktold +based on example from Stata help + +*/ + +clear +*basic Kaplan-Meier +capture use "E:\Josef\statawork\stan3.dta", clear +if _rc != 0 webuse stan3 +capture save "E:\Josef\statawork\stan3.dta" +capture erase surf.dta +sts list, saving("surf") +use "E:\Josef\statawork\surf.dta", clear +outsheet using "surv_km.csv", comma replace + +* Kaplan-Meier with by +use "E:\Josef\statawork\stan3.dta", clear +capture erase surf2.dta +sts list, by(posttran) saving("surf2") +use "E:\Josef\statawork\surf2.dta", clear +outsheet using "surv_km2.csv", comma replace + + +* Cox Proportional Hazard +use "E:\Josef\statawork\stan3.dta", clear +stcox age posttran , estimate norobust +ereturn list, +matlist e(V) +matlist e(p) + +* the next doesn't work +* predict predictall, hr xb stdp basesurv basechazard basehc mgale csnell deviance ldisplace lmax effects +/* generate in python: +>>> for i in 'hr xb stdp basesurv basechazard basehc mgale csnell deviance ldisplace lmax effects'.split(): print 'predict %s, %s' % (i,i) +*/ +predict hr, hr +predict xb, xb +predict stdp, stdp +predict basesurv, basesurv +predict basechazard, basechazard +predict basehc, basehc +predict mgale, mgale +predict csnell, csnell +predict deviance, deviance +predict ldisplace, ldisplace +predict lmax, lmax +*capture predict effects, effects + +outsheet hr xb stdp basesurv basechazard basehc mgale csnell deviance ldisplace lmax using "surv_coxph.csv", comma replace + +* replay +stcox + +matrix cov = e(V) +svmat cov, names(cov) + +* get the colnames and rownames +capture drop nacol narow +matrix params_table = r(table)' +gen nacol = "`: colnames params_table'" +gen narow = "`: rownames params_table'" +di nacol +di narow + +*2nd version + +capture drop rown2 +local colnms: coln params_table +gen str rown2 = "`colnms'" +di rown2 + +svmat params_table, names(params_table) +estmat2nparray params_table cov, saving("results_coxphrobust.py") format("%16.0g") append +* other options, no matrices or no est results +*estmat2nparray params_table cov, saving("results_coxphrobust_2.py") format("%16.0g") append noest +*estmat2nparray , saving("results_coxphrobust_2.py") format("%16.0g") append diff --git a/tools/matplotlibrc.qt4 b/tools/matplotlibrc.qt4 new file mode 100644 index 0000000..7e9bda2 --- /dev/null +++ b/tools/matplotlibrc.qt4 @@ -0,0 +1,385 @@ +### MATPLOTLIBRC FORMAT + +# This is a sample matplotlib configuration file - you can find a copy +# of it on your system in +# site-packages/matplotlib/mpl-data/matplotlibrc. If you edit it +# there, please note that it will be overridden in your next install. +# If you want to keep a permanent local copy that will not be +# over-written, place it in HOME/.matplotlib/matplotlibrc (unix/linux +# like systems) and C:\Documents and Settings\yourname\.matplotlib +# (win32 systems). +# +# This file is best viewed in a editor which supports python mode +# syntax highlighting. Blank lines, or lines starting with a comment +# symbol, are ignored, as are trailing comments. Other lines must +# have the format +# key : val # optional comment +# +# Colors: for the color values below, you can either use - a +# matplotlib color string, such as r, k, or b - an rgb tuple, such as +# (1.0, 0.5, 0.0) - a hex string, such as ff00ff or #ff00ff - a scalar +# grayscale intensity such as 0.75 - a legal html color name, eg red, +# blue, darkslategray + +#### CONFIGURATION BEGINS HERE + +# the default backend; one of GTK GTKAgg GTKCairo CocoaAgg FltkAgg +# MacOSX QtAgg Qt4Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG Template +# You can also deploy your own backend outside of matplotlib by +# referring to the module name (which must be in the PYTHONPATH) as +# 'module://my_backend' +backend : Qt4Agg + +# if you are runing pyplot inside a GUI and your backend choice +# conflicts, we will automatically try and find a compatible one for +# you if backend_fallback is True +#backend_fallback: True +interactive : True +toolbar : toolbar2 # None | classic | toolbar2 +#timezone : UTC # a pytz timezone string, eg US/Central or Europe/Paris + +# Where your matplotlib data lives if you installed to a non-default +# location. This is where the matplotlib fonts, bitmaps, etc reside +#datapath : /home/jdhunter/mpldata + + +### LINES +# See http://matplotlib.sourceforge.net/api/artist_api.html#module-matplotlib.lines for more +# information on line properties. +lines.linewidth : 1.0 # line width in points +#lines.linestyle : - # solid line +#lines.color : blue +#lines.marker : None # the default marker +#lines.markeredgewidth : 0.5 # the line width around the marker symbol +#lines.markersize : 6 # markersize, in points +#lines.dash_joinstyle : miter # miter|round|bevel +#lines.dash_capstyle : butt # butt|round|projecting +#lines.solid_joinstyle : miter # miter|round|bevel +#lines.solid_capstyle : projecting # butt|round|projecting +lines.antialiased : True # render lines in antialised (no jaggies) + +### PATCHES +# Patches are graphical objects that fill 2D space, like polygons or +# circles. See +# http://matplotlib.sourceforge.net/api/artist_api.html#module-matplotlib.patches +# information on patch properties +patch.linewidth : 0.5 # edge width in points +patch.facecolor : 348ABD +patch.edgecolor : eeeeee +patch.antialiased : True # render patches in antialised (no jaggies) + +### FONT +# +# font properties used by text.Text. See +# http://matplotlib.sourceforge.net/api/font_manager_api.html for more +# information on font properties. The 6 font properties used for font +# matching are given below with their default values. +# +# The font.family property has five values: 'serif' (e.g. Times), +# 'sans-serif' (e.g. Helvetica), 'cursive' (e.g. Zapf-Chancery), +# 'fantasy' (e.g. Western), and 'monospace' (e.g. Courier). Each of +# these font families has a default list of font names in decreasing +# order of priority associated with them. +# +# The font.style property has three values: normal (or roman), italic +# or oblique. The oblique style will be used for italic, if it is not +# present. +# +# The font.variant property has two values: normal or small-caps. For +# TrueType fonts, which are scalable fonts, small-caps is equivalent +# to using a font size of 'smaller', or about 83% of the current font +# size. +# +# The font.weight property has effectively 13 values: normal, bold, +# bolder, lighter, 100, 200, 300, ..., 900. Normal is the same as +# 400, and bold is 700. bolder and lighter are relative values with +# respect to the current weight. +# +# The font.stretch property has 11 values: ultra-condensed, +# extra-condensed, condensed, semi-condensed, normal, semi-expanded, +# expanded, extra-expanded, ultra-expanded, wider, and narrower. This +# property is not currently implemented. +# +# The font.size property is the default font size for text, given in pts. +# 12pt is the standard value. +# +font.family : monospace +#font.style : normal +#font.variant : normal +#font.weight : medium +#font.stretch : normal +# note that font.size controls default text sizes. To configure +# special text sizes tick labels, axes, labels, title, etc, see the rc +# settings for axes and ticks. Special text sizes can be defined +# relative to font.size, using the following values: xx-small, x-small, +# small, medium, large, x-large, xx-large, larger, or smaller +#font.size : 12.0 +#font.serif : Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif +#font.sans-serif : Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif +#font.cursive : Apple Chancery, Textile, Zapf Chancery, Sand, cursive +#font.fantasy : Comic Sans MS, Chicago, Charcoal, Impact, Western, fantasy +font.monospace : Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, Bitstream Vera Sans Mono, Ubuntu Mono, monospace +### TEXT +# text properties used by text.Text. See +# http://matplotlib.sourceforge.net/api/artist_api.html#module-matplotlib.text for more +# information on text properties + +#text.color : black + +### LaTeX customizations. See http://www.scipy.org/Wiki/Cookbook/Matplotlib/UsingTex +#text.usetex : False # use latex for all text handling. The following fonts + # are supported through the usual rc parameter settings: + # new century schoolbook, bookman, times, palatino, + # zapf chancery, charter, serif, sans-serif, helvetica, + # avant garde, courier, monospace, computer modern roman, + # computer modern sans serif, computer modern typewriter + # If another font is desired which can loaded using the + # LaTeX \usepackage command, please inquire at the + # matplotlib mailing list +#text.latex.unicode : False # use "ucs" and "inputenc" LaTeX packages for handling + # unicode strings. +#text.latex.preamble : # IMPROPER USE OF THIS FEATURE WILL LEAD TO LATEX FAILURES + # AND IS THEREFORE UNSUPPORTED. PLEASE DO NOT ASK FOR HELP + # IF THIS FEATURE DOES NOT DO WHAT YOU EXPECT IT TO. + # preamble is a comma separated list of LaTeX statements + # that are included in the LaTeX document preamble. + # An example: + # text.latex.preamble : \usepackage{bm},\usepackage{euler} + # The following packages are always loaded with usetex, so + # beware of package collisions: color, geometry, graphicx, + # type1cm, textcomp. Adobe Postscript (PSSNFS) font packages + # may also be loaded, depending on your font settings + +#text.dvipnghack : None # some versions of dvipng don't handle alpha + # channel properly. Use True to correct + # and flush ~/.matplotlib/tex.cache + # before testing and False to force + # correction off. None will try and + # guess based on your dvipng version + +#text.hinting : True # If True, text will be hinted, otherwise not. This only + # affects the Agg backend. + +# The following settings allow you to select the fonts in math mode. +# They map from a TeX font name to a fontconfig font pattern. +# These settings are only used if mathtext.fontset is 'custom'. +# Note that this "custom" mode is unsupported and may go away in the +# future. +#mathtext.cal : cursive +#mathtext.rm : serif +#mathtext.tt : monospace +#mathtext.it : serif:italic +#mathtext.bf : serif:bold +#mathtext.sf : sans +#mathtext.fontset : cm # Should be 'cm' (Computer Modern), 'stix', + # 'stixsans' or 'custom' +#mathtext.fallback_to_cm : True # When True, use symbols from the Computer Modern + # fonts when a symbol can not be found in one of + # the custom math fonts. + +#mathtext.default : it # The default font to use for math. + # Can be any of the LaTeX font names, including + # the special name "regular" for the same font + # used in regular text. + +### AXES +# default face and edge color, default tick sizes, +# default fontsizes for ticklabels, and so on. See +# http://matplotlib.sourceforge.net/api/axes_api.html#module-matplotlib.axes +#axes.hold : True # whether to clear the axes by default on +axes.facecolor : eeeeee # axes background color +axes.edgecolor : bcbcbc # axes edge color +axes.linewidth : 1.0 # edge linewidth +axes.grid : True # display grid or not +axes.titlesize : large # fontsize of the axes title +axes.labelsize : large # fontsize of the x any y labels +axes.labelcolor : 555555 +axes.axisbelow : True # whether axis gridlines and ticks are below + # the axes elements (lines, text, etc) +#axes.formatter.limits : -7, 7 # use scientific notation if log10 + # of the axis range is smaller than the + # first or larger than the second +#axes.unicode_minus : True # use unicode for the minus symbol + # rather than hypen. See http://en.wikipedia.org/wiki/Plus_sign#Plus_sign +axes.color_cycle : 348ABD, 7A68A6, A60628, 467821, CF4457, 188487, E24A33 + # E24A33 : orange + # 7A68A6 : purple + # 348ABD : blue + # 188487 : turquoise + # A60628 : red + # CF4457 : pink + # 467821 : green + +#polaraxes.grid : True # display grid on polar axes +#axes3d.grid : True # display grid on 3d axes + +### TICKS +# see http://matplotlib.sourceforge.net/api/axis_api.html#matplotlib.axis.Tick +xtick.major.size : 0 # major tick size in points +xtick.minor.size : 0 # minor tick size in points +xtick.major.pad : 6 # distance to major tick label in points +xtick.minor.pad : 6 # distance to the minor tick label in points +xtick.color : 555555 # color of the tick labels +#xtick.labelsize : medium # fontsize of the tick labels +xtick.direction : in # direction: in or out + +ytick.major.size : 0 # major tick size in points +ytick.minor.size : 0 # minor tick size in points +ytick.major.pad : 6 # distance to major tick label in points +ytick.minor.pad : 6 # distance to the minor tick label in points +ytick.color : 555555 # color of the tick labels +#ytick.labelsize : medium # fontsize of the tick labels +ytick.direction : in # direction: in or out + + +### GRIDS +#grid.color : black # grid color +#grid.linestyle : : # dotted +#grid.linewidth : 0.5 # in points + +### Legend +legend.fancybox : True # if True, use a rounded box for the + # legend, else a rectangle +#legend.isaxes : True +#legend.numpoints : 2 # the number of points in the legend line +#legend.fontsize : large +#legend.pad : 0.0 # deprecated; the fractional whitespace inside the legend border +#legend.borderpad : 0.5 # border whitspace in fontsize units +#legend.markerscale : 1.0 # the relative size of legend markers vs. original +# the following dimensions are in axes coords +#legend.labelsep : 0.010 # the vertical space between the legend entries +#legend.handlelen : 0.05 # the length of the legend lines +#legend.handletextsep : 0.02 # the space between the legend line and legend text +#legend.axespad : 0.02 # the border between the axes and legend edge +#legend.shadow : False + +### FIGURE +# See http://matplotlib.sourceforge.net/api/figure_api.html#matplotlib.figure.Figure +figure.figsize : 8, 6 # figure size in inches +#figure.dpi : 80 # figure dots per inch +figure.facecolor : 0.85 # figure facecolor; 0.75 is scalar gray +figure.edgecolor : 0.5 # figure edgecolor + +# The figure subplot parameters. All dimensions are fraction of the +# figure width or height +#figure.subplot.left : 0.125 # the left side of the subplots of the figure +#figure.subplot.right : 0.9 # the right side of the subplots of the figure +#figure.subplot.bottom : 0.1 # the bottom of the subplots of the figure +#figure.subplot.top : 0.9 # the top of the subplots of the figure +#figure.subplot.wspace : 0.2 # the amount of width reserved for blank space between subplots +figure.subplot.hspace : 0.5 # the amount of height reserved for white space between subplots + +### IMAGES +#image.aspect : equal # equal | auto | a number +#image.interpolation : bilinear # see help(imshow) for options +#image.cmap : jet # gray | jet etc... +#image.lut : 256 # the size of the colormap lookup table +#image.origin : upper # lower | upper +#image.resample : False + +### CONTOUR PLOTS +#contour.negative_linestyle : dashed # dashed | solid + +### Agg rendering +### Warning: experimental, 2008/10/10 +#agg.path.chunksize : 0 # 0 to disable; values in the range + # 10000 to 100000 can improve speed slightly + # and prevent an Agg rendering failure + # when plotting very large data sets, + # especially if they are very gappy. + # It may cause minor artifacts, though. + # A value of 20000 is probably a good + # starting point. +### SAVING FIGURES +#path.simplify : True # When True, simplify paths by removing "invisible" + # points to reduce file size and increase rendering + # speed +#path.simplify_threshold : 0.1 # The threshold of similarity below which + # vertices will be removed in the simplification + # process +#path.snap : True # When True, rectilinear axis-aligned paths will be snapped to + # the nearest pixel when certain criteria are met. When False, + # paths will never be snapped. + +# the default savefig params can be different from the display params +# Eg, you may want a higher resolution, or to make the figure +# background white +#savefig.dpi : 100 # figure dots per inch +#savefig.facecolor : white # figure facecolor when saving +#savefig.edgecolor : white # figure edgecolor when saving +#savefig.extension : auto # what extension to use for savefig('foo'), or 'auto' + +#cairo.format : png # png, ps, pdf, svg + +# tk backend params +#tk.window_focus : False # Maintain shell focus for TkAgg + +# ps backend params +#ps.papersize : letter # auto, letter, legal, ledger, A0-A10, B0-B10 +#ps.useafm : False # use of afm fonts, results in small files +#ps.usedistiller : False # can be: None, ghostscript or xpdf + # Experimental: may produce smaller files. + # xpdf intended for production of publication quality files, + # but requires ghostscript, xpdf and ps2eps +#ps.distiller.res : 6000 # dpi +#ps.fonttype : 3 # Output Type 3 (Type3) or Type 42 (TrueType) + +# pdf backend params +#pdf.compression : 6 # integer from 0 to 9 + # 0 disables compression (good for debugging) +#pdf.fonttype : 3 # Output Type 3 (Type3) or Type 42 (TrueType) + +# svg backend params +#svg.image_inline : True # write raster image data directly into the svg file +#svg.image_noscale : False # suppress scaling of raster data embedded in SVG +#svg.embed_char_paths : True # embed character outlines in the SVG file + +# docstring params +#docstring.hardcopy = False # set this when you want to generate hardcopy docstring + +# Set the verbose flags. This controls how much information +# matplotlib gives you at runtime and where it goes. The verbosity +# levels are: silent, helpful, debug, debug-annoying. Any level is +# inclusive of all the levels below it. If your setting is "debug", +# you'll get all the debug and helpful messages. When submitting +# problems to the mailing-list, please set verbose to "helpful" or "debug" +# and paste the output into your report. +# +# The "fileo" gives the destination for any calls to verbose.report. +# These objects can a filename, or a filehandle like sys.stdout. +# +# You can override the rc default verbosity from the command line by +# giving the flags --verbose-LEVEL where LEVEL is one of the legal +# levels, eg --verbose-helpful. +# +# You can access the verbose instance in your code +# from matplotlib import verbose. +#verbose.level : silent # one of silent, helpful, debug, debug-annoying +#verbose.fileo : sys.stdout # a log filename, sys.stdout or sys.stderr + +# Event keys to interact with figures/plots via keyboard. +# Customize these settings according to your needs. +# Leave the field(s) empty if you don't need a key-map. (i.e., fullscreen : '') + +keymap.fullscreen : f # toggling +keymap.home : h, r, home # home or reset mnemonic +keymap.back : left, c, backspace # forward / backward keys to enable +keymap.forward : right, v # left handed quick navigation +keymap.pan : p # pan mnemonic +keymap.zoom : o # zoom mnemonic +keymap.save : s # saving current figure +keymap.grid : g # switching on/off a grid in current axes +keymap.yscale : l # toggle scaling of y-axes ('log'/'linear') +keymap.xscale : L, k # toggle scaling of x-axes ('log'/'linear') +keymap.all_axes : a # enable all axes + +# Control downloading of example data. Various examples download some +# data from the Matplotlib svn repository to avoid distributing extra +# files, but sometimes you want to avoid that. In that case set +# examples.download to False and examples.directory to the directory +# where you have a checkout of +# https://matplotlib.svn.sourceforge.net/svnroot/matplotlib/trunk/sample_data + +#examples.download : True # False to bypass downloading mechanism +#examples.directory : '' # directory to look in if download is false + diff --git a/tools/matplotlibrc.qt5 b/tools/matplotlibrc.qt5 new file mode 100644 index 0000000..396b6a6 --- /dev/null +++ b/tools/matplotlibrc.qt5 @@ -0,0 +1,510 @@ +### MATPLOTLIBRC FORMAT + +# This is a sample matplotlib configuration file - you can find a copy +# of it on your system in +# site-packages/matplotlib/mpl-data/matplotlibrc. If you edit it +# there, please note that it will be overwritten in your next install. +# If you want to keep a permanent local copy that will not be +# overwritten, place it in the following location: +# unix/linux: +# $HOME/.config/matplotlib/matplotlibrc or +# $XDG_CONFIG_HOME/matplotlib/matplotlibrc (if $XDG_CONFIG_HOME is set) +# other platforms: +# $HOME/.matplotlib/matplotlibrc +# +# See http://matplotlib.org/users/customizing.html#the-matplotlibrc-file for +# more details on the paths which are checked for the configuration file. +# +# This file is best viewed in a editor which supports python mode +# syntax highlighting. Blank lines, or lines starting with a comment +# symbol, are ignored, as are trailing comments. Other lines must +# have the format +# key : val # optional comment +# +# Colors: for the color values below, you can either use - a +# matplotlib color string, such as r, k, or b - an rgb tuple, such as +# (1.0, 0.5, 0.0) - a hex string, such as ff00ff or #ff00ff - a scalar +# grayscale intensity such as 0.75 - a legal html color name, e.g., red, +# blue, darkslategray + +#### CONFIGURATION BEGINS HERE + +# The default backend; one of GTK GTKAgg GTKCairo GTK3Agg GTK3Cairo +# CocoaAgg MacOSX Qt4Agg Qt5Agg TkAgg WX WXAgg Agg Cairo GDK PS PDF SVG +# Template. +# You can also deploy your own backend outside of matplotlib by +# referring to the module name (which must be in the PYTHONPATH) as +# 'module://my_backend'. +backend : Qt5Agg + +# If you are using the Qt4Agg backend, you can choose here +# to use the PyQt4 bindings or the newer PySide bindings to +# the underlying Qt4 toolkit. +backend.qt5 : PyQt5 + +# Note that this can be overridden by the environment variable +# QT_API used by Enthought Tool Suite (ETS); valid values are +# "pyqt" and "pyside". The "pyqt" setting has the side effect of +# forcing the use of Version 2 API for QString and QVariant. + +# The port to use for the web server in the WebAgg backend. +# webagg.port : 8888 + +# If webagg.port is unavailable, a number of other random ports will +# be tried until one that is available is found. +# webagg.port_retries : 50 + +# When True, open the webbrowser to the plot that is shown +# webagg.open_in_browser : True + +# When True, the figures rendered in the nbagg backend are created with +# a transparent background. +# nbagg.transparent : True + +# if you are running pyplot inside a GUI and your backend choice +# conflicts, we will automatically try to find a compatible one for +# you if backend_fallback is True +#backend_fallback: True + +#interactive : False +#toolbar : toolbar2 # None | toolbar2 ("classic" is deprecated) +#timezone : UTC # a pytz timezone string, e.g., US/Central or Europe/Paris + +# Where your matplotlib data lives if you installed to a non-default +# location. This is where the matplotlib fonts, bitmaps, etc reside +#datapath : /home/jdhunter/mpldata + + +### LINES +# See http://matplotlib.org/api/artist_api.html#module-matplotlib.lines for more +# information on line properties. +#lines.linewidth : 1.0 # line width in points +#lines.linestyle : - # solid line +#lines.color : blue # has no affect on plot(); see axes.prop_cycle +#lines.marker : None # the default marker +#lines.markeredgewidth : 0.5 # the line width around the marker symbol +#lines.markersize : 6 # markersize, in points +#lines.dash_joinstyle : miter # miter|round|bevel +#lines.dash_capstyle : butt # butt|round|projecting +#lines.solid_joinstyle : miter # miter|round|bevel +#lines.solid_capstyle : projecting # butt|round|projecting +#lines.antialiased : True # render lines in antialiased (no jaggies) + +#markers.fillstyle: full # full|left|right|bottom|top|none + +### PATCHES +# Patches are graphical objects that fill 2D space, like polygons or +# circles. See +# http://matplotlib.org/api/artist_api.html#module-matplotlib.patches +# information on patch properties +#patch.linewidth : 1.0 # edge width in points +#patch.facecolor : blue +#patch.edgecolor : black +#patch.antialiased : True # render patches in antialiased (no jaggies) + +### FONT +# +# font properties used by text.Text. See +# http://matplotlib.org/api/font_manager_api.html for more +# information on font properties. The 6 font properties used for font +# matching are given below with their default values. +# +# The font.family property has five values: 'serif' (e.g., Times), +# 'sans-serif' (e.g., Helvetica), 'cursive' (e.g., Zapf-Chancery), +# 'fantasy' (e.g., Western), and 'monospace' (e.g., Courier). Each of +# these font families has a default list of font names in decreasing +# order of priority associated with them. When text.usetex is False, +# font.family may also be one or more concrete font names. +# +# The font.style property has three values: normal (or roman), italic +# or oblique. The oblique style will be used for italic, if it is not +# present. +# +# The font.variant property has two values: normal or small-caps. For +# TrueType fonts, which are scalable fonts, small-caps is equivalent +# to using a font size of 'smaller', or about 83% of the current font +# size. +# +# The font.weight property has effectively 13 values: normal, bold, +# bolder, lighter, 100, 200, 300, ..., 900. Normal is the same as +# 400, and bold is 700. bolder and lighter are relative values with +# respect to the current weight. +# +# The font.stretch property has 11 values: ultra-condensed, +# extra-condensed, condensed, semi-condensed, normal, semi-expanded, +# expanded, extra-expanded, ultra-expanded, wider, and narrower. This +# property is not currently implemented. +# +# The font.size property is the default font size for text, given in pts. +# 12pt is the standard value. +# +#font.family : sans-serif +#font.style : normal +#font.variant : normal +#font.weight : medium +#font.stretch : normal +# note that font.size controls default text sizes. To configure +# special text sizes tick labels, axes, labels, title, etc, see the rc +# settings for axes and ticks. Special text sizes can be defined +# relative to font.size, using the following values: xx-small, x-small, +# small, medium, large, x-large, xx-large, larger, or smaller +#font.size : 12.0 +#font.serif : Bitstream Vera Serif, New Century Schoolbook, Century Schoolbook L, Utopia, ITC Bookman, Bookman, Nimbus Roman No9 L, Times New Roman, Times, Palatino, Charter, serif +#font.sans-serif : Bitstream Vera Sans, Lucida Grande, Verdana, Geneva, Lucid, Arial, Helvetica, Avant Garde, sans-serif +#font.cursive : Apple Chancery, Textile, Zapf Chancery, Sand, Script MT, Felipa, cursive +#font.fantasy : Comic Sans MS, Chicago, Charcoal, Impact, Western, Humor Sans, fantasy +#font.monospace : Bitstream Vera Sans Mono, Andale Mono, Nimbus Mono L, Courier New, Courier, Fixed, Terminal, monospace + +### TEXT +# text properties used by text.Text. See +# http://matplotlib.org/api/artist_api.html#module-matplotlib.text for more +# information on text properties + +#text.color : black + +### LaTeX customizations. See http://wiki.scipy.org/Cookbook/Matplotlib/UsingTex +#text.usetex : False # use latex for all text handling. The following fonts + # are supported through the usual rc parameter settings: + # new century schoolbook, bookman, times, palatino, + # zapf chancery, charter, serif, sans-serif, helvetica, + # avant garde, courier, monospace, computer modern roman, + # computer modern sans serif, computer modern typewriter + # If another font is desired which can loaded using the + # LaTeX \usepackage command, please inquire at the + # matplotlib mailing list +#text.latex.unicode : False # use "ucs" and "inputenc" LaTeX packages for handling + # unicode strings. +#text.latex.preamble : # IMPROPER USE OF THIS FEATURE WILL LEAD TO LATEX FAILURES + # AND IS THEREFORE UNSUPPORTED. PLEASE DO NOT ASK FOR HELP + # IF THIS FEATURE DOES NOT DO WHAT YOU EXPECT IT TO. + # preamble is a comma separated list of LaTeX statements + # that are included in the LaTeX document preamble. + # An example: + # text.latex.preamble : \usepackage{bm},\usepackage{euler} + # The following packages are always loaded with usetex, so + # beware of package collisions: color, geometry, graphicx, + # type1cm, textcomp. Adobe Postscript (PSSNFS) font packages + # may also be loaded, depending on your font settings + +#text.dvipnghack : None # some versions of dvipng don't handle alpha + # channel properly. Use True to correct + # and flush ~/.matplotlib/tex.cache + # before testing and False to force + # correction off. None will try and + # guess based on your dvipng version + +#text.hinting : auto # May be one of the following: + # 'none': Perform no hinting + # 'auto': Use freetype's autohinter + # 'native': Use the hinting information in the + # font file, if available, and if your + # freetype library supports it + # 'either': Use the native hinting information, + # or the autohinter if none is available. + # For backward compatibility, this value may also be + # True === 'auto' or False === 'none'. +#text.hinting_factor : 8 # Specifies the amount of softness for hinting in the + # horizontal direction. A value of 1 will hint to full + # pixels. A value of 2 will hint to half pixels etc. + +#text.antialiased : True # If True (default), the text will be antialiased. + # This only affects the Agg backend. + +# The following settings allow you to select the fonts in math mode. +# They map from a TeX font name to a fontconfig font pattern. +# These settings are only used if mathtext.fontset is 'custom'. +# Note that this "custom" mode is unsupported and may go away in the +# future. +#mathtext.cal : cursive +#mathtext.rm : serif +#mathtext.tt : monospace +#mathtext.it : serif:italic +#mathtext.bf : serif:bold +#mathtext.sf : sans +#mathtext.fontset : cm # Should be 'cm' (Computer Modern), 'stix', + # 'stixsans' or 'custom' +#mathtext.fallback_to_cm : True # When True, use symbols from the Computer Modern + # fonts when a symbol can not be found in one of + # the custom math fonts. + +#mathtext.default : it # The default font to use for math. + # Can be any of the LaTeX font names, including + # the special name "regular" for the same font + # used in regular text. + +### AXES +# default face and edge color, default tick sizes, +# default fontsizes for ticklabels, and so on. See +# http://matplotlib.org/api/axes_api.html#module-matplotlib.axes +#axes.hold : True # whether to clear the axes by default on +#axes.facecolor : white # axes background color +#axes.edgecolor : black # axes edge color +#axes.linewidth : 1.0 # edge linewidth +#axes.grid : False # display grid or not +#axes.titlesize : large # fontsize of the axes title +#axes.labelsize : medium # fontsize of the x any y labels +#axes.labelpad : 5.0 # space between label and axis +#axes.labelweight : normal # weight of the x and y labels +#axes.labelcolor : black +#axes.axisbelow : False # whether axis gridlines and ticks are below + # the axes elements (lines, text, etc) + +#axes.formatter.limits : -7, 7 # use scientific notation if log10 + # of the axis range is smaller than the + # first or larger than the second +#axes.formatter.use_locale : False # When True, format tick labels + # according to the user's locale. + # For example, use ',' as a decimal + # separator in the fr_FR locale. +#axes.formatter.use_mathtext : False # When True, use mathtext for scientific + # notation. +#axes.formatter.useoffset : True # If True, the tick label formatter + # will default to labeling ticks relative + # to an offset when the data range is very + # small compared to the minimum absolute + # value of the data. + +#axes.unicode_minus : True # use unicode for the minus symbol + # rather than hyphen. See + # http://en.wikipedia.org/wiki/Plus_and_minus_signs#Character_codes +#axes.prop_cycle : cycler('color', 'bgrcmyk') + # color cycle for plot lines + # as list of string colorspecs: + # single letter, long name, or + # web-style hex +#axes.xmargin : 0 # x margin. See `axes.Axes.margins` +#axes.ymargin : 0 # y margin See `axes.Axes.margins` + +#polaraxes.grid : True # display grid on polar axes +#axes3d.grid : True # display grid on 3d axes + +### TICKS +# see http://matplotlib.org/api/axis_api.html#matplotlib.axis.Tick +#xtick.major.size : 4 # major tick size in points +#xtick.minor.size : 2 # minor tick size in points +#xtick.major.width : 0.5 # major tick width in points +#xtick.minor.width : 0.5 # minor tick width in points +#xtick.major.pad : 4 # distance to major tick label in points +#xtick.minor.pad : 4 # distance to the minor tick label in points +#xtick.color : k # color of the tick labels +#xtick.labelsize : medium # fontsize of the tick labels +#xtick.direction : in # direction: in, out, or inout + +#ytick.major.size : 4 # major tick size in points +#ytick.minor.size : 2 # minor tick size in points +#ytick.major.width : 0.5 # major tick width in points +#ytick.minor.width : 0.5 # minor tick width in points +#ytick.major.pad : 4 # distance to major tick label in points +#ytick.minor.pad : 4 # distance to the minor tick label in points +#ytick.color : k # color of the tick labels +#ytick.labelsize : medium # fontsize of the tick labels +#ytick.direction : in # direction: in, out, or inout + + +### GRIDS +#grid.color : black # grid color +#grid.linestyle : : # dotted +#grid.linewidth : 0.5 # in points +#grid.alpha : 1.0 # transparency, between 0.0 and 1.0 + +### Legend +#legend.fancybox : False # if True, use a rounded box for the + # legend, else a rectangle +#legend.isaxes : True +#legend.numpoints : 2 # the number of points in the legend line +#legend.fontsize : large +#legend.borderpad : 0.5 # border whitespace in fontsize units +#legend.markerscale : 1.0 # the relative size of legend markers vs. original +# the following dimensions are in axes coords +#legend.labelspacing : 0.5 # the vertical space between the legend entries in fraction of fontsize +#legend.handlelength : 2. # the length of the legend lines in fraction of fontsize +#legend.handleheight : 0.7 # the height of the legend handle in fraction of fontsize +#legend.handletextpad : 0.8 # the space between the legend line and legend text in fraction of fontsize +#legend.borderaxespad : 0.5 # the border between the axes and legend edge in fraction of fontsize +#legend.columnspacing : 2. # the border between the axes and legend edge in fraction of fontsize +#legend.shadow : False +#legend.frameon : True # whether or not to draw a frame around legend +#legend.framealpha : None # opacity of of legend frame +#legend.scatterpoints : 3 # number of scatter points + +### FIGURE +# See http://matplotlib.org/api/figure_api.html#matplotlib.figure.Figure +#figure.titlesize : medium # size of the figure title +#figure.titleweight : normal # weight of the figure title +#figure.figsize : 8, 6 # figure size in inches +#figure.dpi : 80 # figure dots per inch +#figure.facecolor : 0.75 # figure facecolor; 0.75 is scalar gray +#figure.edgecolor : white # figure edgecolor +#figure.autolayout : False # When True, automatically adjust subplot + # parameters to make the plot fit the figure +#figure.max_open_warning : 20 # The maximum number of figures to open through + # the pyplot interface before emitting a warning. + # If less than one this feature is disabled. + +# The figure subplot parameters. All dimensions are a fraction of the +# figure width or height +#figure.subplot.left : 0.125 # the left side of the subplots of the figure +#figure.subplot.right : 0.9 # the right side of the subplots of the figure +#figure.subplot.bottom : 0.1 # the bottom of the subplots of the figure +#figure.subplot.top : 0.9 # the top of the subplots of the figure +#figure.subplot.wspace : 0.2 # the amount of width reserved for blank space between subplots +#figure.subplot.hspace : 0.2 # the amount of height reserved for white space between subplots + +### IMAGES +#image.aspect : equal # equal | auto | a number +#image.interpolation : bilinear # see help(imshow) for options +#image.cmap : jet # gray | jet etc... +#image.lut : 256 # the size of the colormap lookup table +#image.origin : upper # lower | upper +#image.resample : False +#image.composite_image : True # When True, all the images on a set of axes are + # combined into a single composite image before + # saving a figure as a vector graphics file, + # such as a PDF. + +### CONTOUR PLOTS +#contour.negative_linestyle : dashed # dashed | solid +#contour.corner_mask : True # True | False | legacy + +### ERRORBAR PLOTS +#errorbar.capsize : 3 # length of end cap on error bars in pixels + +### Agg rendering +### Warning: experimental, 2008/10/10 +#agg.path.chunksize : 0 # 0 to disable; values in the range + # 10000 to 100000 can improve speed slightly + # and prevent an Agg rendering failure + # when plotting very large data sets, + # especially if they are very gappy. + # It may cause minor artifacts, though. + # A value of 20000 is probably a good + # starting point. +### SAVING FIGURES +#path.simplify : True # When True, simplify paths by removing "invisible" + # points to reduce file size and increase rendering + # speed +#path.simplify_threshold : 0.1 # The threshold of similarity below which + # vertices will be removed in the simplification + # process +#path.snap : True # When True, rectilinear axis-aligned paths will be snapped to + # the nearest pixel when certain criteria are met. When False, + # paths will never be snapped. +#path.sketch : None # May be none, or a 3-tuple of the form (scale, length, + # randomness). + # *scale* is the amplitude of the wiggle + # perpendicular to the line (in pixels). *length* + # is the length of the wiggle along the line (in + # pixels). *randomness* is the factor by which + # the length is randomly scaled. + +# the default savefig params can be different from the display params +# e.g., you may want a higher resolution, or to make the figure +# background white +#savefig.dpi : 100 # figure dots per inch +#savefig.facecolor : white # figure facecolor when saving +#savefig.edgecolor : white # figure edgecolor when saving +#savefig.format : png # png, ps, pdf, svg +#savefig.bbox : standard # 'tight' or 'standard'. + # 'tight' is incompatible with pipe-based animation + # backends but will workd with temporary file based ones: + # e.g. setting animation.writer to ffmpeg will not work, + # use ffmpeg_file instead +#savefig.pad_inches : 0.1 # Padding to be used when bbox is set to 'tight' +#savefig.jpeg_quality: 95 # when a jpeg is saved, the default quality parameter. +#savefig.directory : ~ # default directory in savefig dialog box, + # leave empty to always use current working directory +#savefig.transparent : False # setting that controls whether figures are saved with a + # transparent background by default + +# tk backend params +#tk.window_focus : False # Maintain shell focus for TkAgg + +# ps backend params +#ps.papersize : letter # auto, letter, legal, ledger, A0-A10, B0-B10 +#ps.useafm : False # use of afm fonts, results in small files +#ps.usedistiller : False # can be: None, ghostscript or xpdf + # Experimental: may produce smaller files. + # xpdf intended for production of publication quality files, + # but requires ghostscript, xpdf and ps2eps +#ps.distiller.res : 6000 # dpi +#ps.fonttype : 3 # Output Type 3 (Type3) or Type 42 (TrueType) + +# pdf backend params +#pdf.compression : 6 # integer from 0 to 9 + # 0 disables compression (good for debugging) +#pdf.fonttype : 3 # Output Type 3 (Type3) or Type 42 (TrueType) + +# svg backend params +#svg.image_inline : True # write raster image data directly into the svg file +#svg.image_noscale : False # suppress scaling of raster data embedded in SVG +#svg.fonttype : 'path' # How to handle SVG fonts: +# 'none': Assume fonts are installed on the machine where the SVG will be viewed. +# 'path': Embed characters as paths -- supported by most SVG renderers +# 'svgfont': Embed characters as SVG fonts -- supported only by Chrome, +# Opera and Safari + +# docstring params +#docstring.hardcopy = False # set this when you want to generate hardcopy docstring + +# Set the verbose flags. This controls how much information +# matplotlib gives you at runtime and where it goes. The verbosity +# levels are: silent, helpful, debug, debug-annoying. Any level is +# inclusive of all the levels below it. If your setting is "debug", +# you'll get all the debug and helpful messages. When submitting +# problems to the mailing-list, please set verbose to "helpful" or "debug" +# and paste the output into your report. +# +# The "fileo" gives the destination for any calls to verbose.report. +# These objects can a filename, or a filehandle like sys.stdout. +# +# You can override the rc default verbosity from the command line by +# giving the flags --verbose-LEVEL where LEVEL is one of the legal +# levels, e.g., --verbose-helpful. +# +# You can access the verbose instance in your code +# from matplotlib import verbose. +#verbose.level : silent # one of silent, helpful, debug, debug-annoying +#verbose.fileo : sys.stdout # a log filename, sys.stdout or sys.stderr + +# Event keys to interact with figures/plots via keyboard. +# Customize these settings according to your needs. +# Leave the field(s) empty if you don't need a key-map. (i.e., fullscreen : '') + +#keymap.fullscreen : f # toggling +#keymap.home : h, r, home # home or reset mnemonic +#keymap.back : left, c, backspace # forward / backward keys to enable +#keymap.forward : right, v # left handed quick navigation +#keymap.pan : p # pan mnemonic +#keymap.zoom : o # zoom mnemonic +#keymap.save : s # saving current figure +#keymap.quit : ctrl+w, cmd+w # close the current figure +#keymap.grid : g # switching on/off a grid in current axes +#keymap.yscale : l # toggle scaling of y-axes ('log'/'linear') +#keymap.xscale : L, k # toggle scaling of x-axes ('log'/'linear') +#keymap.all_axes : a # enable all axes + +# Control location of examples data files +#examples.directory : '' # directory to look in for custom installation + +###ANIMATION settings +#animation.html : 'none' # How to display the animation as HTML in + # the IPython notebook. 'html5' uses + # HTML5 video tag. +#animation.writer : ffmpeg # MovieWriter 'backend' to use +#animation.codec : mpeg4 # Codec to use for writing movie +#animation.bitrate: -1 # Controls size/quality tradeoff for movie. + # -1 implies let utility auto-determine +#animation.frame_format: 'png' # Controls frame format used by temp files +#animation.ffmpeg_path: 'ffmpeg' # Path to ffmpeg binary. Without full path + # $PATH is searched +#animation.ffmpeg_args: '' # Additional arguments to pass to ffmpeg +#animation.avconv_path: 'avconv' # Path to avconv binary. Without full path + # $PATH is searched +#animation.avconv_args: '' # Additional arguments to pass to avconv +#animation.mencoder_path: 'mencoder' + # Path to mencoder binary. Without full path + # $PATH is searched +#animation.mencoder_args: '' # Additional arguments to pass to mencoder +#animation.convert_path: 'convert' # Path to ImageMagick's convert binary. + # On Windows use the full path since convert + # is also the name of a system tool. diff --git a/tools/nbgenerate.py b/tools/nbgenerate.py new file mode 100755 index 0000000..6ed44da --- /dev/null +++ b/tools/nbgenerate.py @@ -0,0 +1,228 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +import argparse +import io +import os +import sys + +from colorama import init, Fore + +from functools import partial + +try: + from concurrent import futures + + has_futures = True +except ImportError: + has_futures = False + +import nbformat +from nbconvert import HTMLExporter, RSTExporter +from nbconvert.preprocessors import ExecutePreprocessor + +init() + +here = os.path.dirname(__file__) +pkgdir = os.path.split(here)[0] +EXAMPLE_DIR = os.path.abspath(os.path.join(pkgdir, "examples")) +SOURCE_DIR = os.path.join(EXAMPLE_DIR, "notebooks") +EXECUTED_DIR = os.path.join(EXAMPLE_DIR, "executed") +DST_DIR = os.path.abspath(os.path.join(pkgdir, + "docs", "source", "examples", + "notebooks", "generated")) + +error_message = """ +****************************************************************************** +ERROR: Error occured when running {notebook} +{exception} +{message} +****************************************************************************** +""" +for dname in [EXECUTED_DIR, DST_DIR]: + if not os.path.exists(dname): + os.makedirs(dname) + + +def execute_nb(src, dst, allow_errors=False, timeout=1000, kernel_name=None): + ''' + Execute notebook in `src` and write the output to `dst` + + Parameters + ---------- + src, dst: str + path to notebook + allow_errors: bool + timeout: int + kernel_name: str + defualts to value set in notebook metadata + + Returns + ------- + dst: str + ''' + with io.open(src, encoding='utf-8') as f: + nb = nbformat.read(f, as_version=4) + + ep = ExecutePreprocessor(allow_errors=False, + timeout=timeout, + kernel_name=kernel_name) + ep.preprocess(nb, {'metadata': {'path': SOURCE_DIR}}) + + with io.open(dst, 'wt', encoding='utf-8') as f: + nbformat.write(nb, f) + return dst + + +def convert(src, dst, to='rst'): + ''' + Convert a notebook `src`. + + Parameters + ---------- + src, dst: str + filepaths + to: {'rst', 'html'} + format to export to + ''' + dispatch = {'rst': RSTExporter, 'html': HTMLExporter} + exporter = dispatch[to.lower()]() + + (body, resources) = exporter.from_filename(src) + with io.open(dst, 'wt', encoding='utf-8') as f: + f.write(body) + return dst + + +def find_notebooks(directory=None): + if directory is None: + directory = SOURCE_DIR + nbs = (os.path.join(directory, x) + for x in os.listdir(directory) + if x.endswith('.ipynb')) + return nbs + + +def do_one(nb, to=None, execute=None, timeout=None, kernel_name=None, + report_error=True, error_fail=False, skip_existing=False): + from traitlets.traitlets import TraitError + import jupyter_client + + os.chdir(SOURCE_DIR) + name = os.path.basename(nb) + dst = os.path.join(EXECUTED_DIR, name) + update_needed = True + if skip_existing and os.path.exists(dst): + update_needed = (os.path.getmtime(dst) <= os.path.getmtime(nb)) + if not update_needed: + print('Skipping {0}'.format(nb)) + + if execute and update_needed: + print("Executing %s to %s" % (nb, dst)) + try: + nb = execute_nb(nb, dst, timeout=timeout, kernel_name=kernel_name) + except Exception as e: + if report_error: + print(Fore.RED + error_message.format(notebook=nb, + exception=str(e), + message=str(e.args[0]))) + print(Fore.RESET) + if error_fail: + raise + + dst = os.path.splitext(os.path.join(DST_DIR, name))[0] + '.' + to + print("Converting %s to %s" % (nb, dst)) + try: + convert(nb, dst, to=to) + except TraitError: + kernels = jupyter_client.kernelspec.find_kernel_specs() + msg = ('Could not find kernel named `%s`, Available kernels:\n %s' + % kernel_name, kernels) + raise ValueError(msg) + + return dst + + +def do(fp=None, directory=None, to='html', execute=True, timeout=1000, + kernel_name='', parallel=False, report_errors=True, error_fail=False, + skip_existing=False): + if fp is None: + nbs = find_notebooks(directory) + else: + nbs = [fp] + + if kernel_name is None: + kernel_name = find_kernel_name() + + func = partial(do_one, to=to, + execute=execute, timeout=timeout, kernel_name=kernel_name, + report_error=report_errors, error_fail=error_fail, + skip_existing=skip_existing) + + if parallel and has_futures: + with futures.ProcessPoolExecutor() as pool: + for dst in pool.map(func, nbs): + print("Finished %s" % dst) + else: + for nb in nbs: + func(nb) + print("Finished %s" % nb) + + +def find_kernel_name(): + import jupyter_client + + kernels = jupyter_client.kernelspec.find_kernel_specs() + kernel_name = 'python%s' % sys.version_info.major + if kernel_name not in kernels: + return '' + return kernel_name + + +parser = argparse.ArgumentParser(description="Process example notebooks") +parser.add_argument("--fp", type=str, default=None, + help="Path to notebook to convert. Converts all notebooks " + "in `directory` by default.") +parser.add_argument("--directory", type=str, default=None, + help="Path to notebook directory to convert") +parser.add_argument("--to", type=str, default="html", + help="Type to convert to. One of `{'html', 'rst'}`") +parser.add_argument("--timeout", type=int, default=1000, + help="Seconds to allow for each cell before timing out") +parser.add_argument("--kernel_name", type=str, default=None, + help="Name of kernel to execute with") +parser.add_argument("--skip-execution", dest='skip_execution', + action='store_true', + help="Skip execution notebooks before converting") +parser.add_argument('--parallel', dest='parallel', action='store_true', + help='Execute notebooks in parallel') +parser.add_argument('--report-errors', dest='report_errors', + action='store_true', + help='Report errors that occur when executing notebooks') +parser.add_argument('--fail-on-error', dest='error_fail', action='store_true', + help='Fail when an error occurs when executing a cell ' + 'in a notebook.') +parser.add_argument('--skip-existing', dest='skip_existing', + action='store_true', + help='Skip execution of an executed file exists and ' + 'is newer than the notebook.') +parser.set_defaults(parallel=True, skip_execution=False, + report_errors=True, error_fail=False, + skip_existing=False) + + +def main(): + args = parser.parse_args() + do(fp=args.fp, + directory=args.directory, + to=args.to, + execute=not args.skip_execution, + timeout=args.timeout, + kernel_name=args.kernel_name, + parallel=args.parallel, + report_errors=args.report_errors, + error_fail=args.error_fail, + skip_existing=args.skip_existing) + + +if __name__ == '__main__': + main() diff --git a/tools/notebook2python.tpl b/tools/notebook2python.tpl new file mode 100644 index 0000000..2e7887a --- /dev/null +++ b/tools/notebook2python.tpl @@ -0,0 +1,46 @@ +{%- extends 'null.tpl' -%} + +{% block input %} +{{ cell.input | ipython2python }} +{% endblock input %} + +{# Those Two are for error displaying +even if the first one seem to do nothing, +it introduces a new line +#} +{% block pyerr %} +{{ super() }} +{% endblock pyerr %} + +{% block traceback_line %} +{{ line | indent | strip_ansi }} +{% endblock traceback_line %} +{# .... #} + +{% block pyout %} +{{ output.text | indent | comment_lines }} +{% endblock pyout %} + +{% block stream %} +{{ output.text | indent | comment_lines }} +{% endblock stream %} + +{% block display_data scoped %} +# image file: +{% endblock display_data %} + +{% block markdowncell scoped %} +{{ cell.source | comment_lines }} +{% endblock markdowncell %} + +{% block headingcell scoped %} +{{ '#' * cell.level }}{{ cell.source | replace('\n', ' ') | comment_lines }} +{% endblock headingcell %} + +{% block rawcell scoped %} +{{ cell.source | comment_lines }} +{% endblock rawcell %} + +{% block unknowncell scoped %} +unknown type {{ cell.type }} +{% endblock unknowncell %} diff --git a/tools/notebook_output_template.py b/tools/notebook_output_template.py new file mode 100644 index 0000000..b4d303a --- /dev/null +++ b/tools/notebook_output_template.py @@ -0,0 +1,48 @@ +from string import Template + +notebook_template = Template(""" +.. _${name}_notebook: + +`Link to Notebook GitHub `_ + +.. raw:: html + +$body + + + """) # noqa:E501 diff --git a/tools/update_web.py b/tools/update_web.py new file mode 100755 index 0000000..b076683 --- /dev/null +++ b/tools/update_web.py @@ -0,0 +1,369 @@ +#!/usr/bin/env python +""" +This script installs the trunk version, builds the docs, then uploads them +to ... + +Then it installs the devel version, builds the docs, and uploads them to +... + +Depends +------- +virtualenv + +Notes +----- +If you set it up as an anacron job, you should do it as a user, so that it +has access to your ssh keys. +""" +import traceback +import base64 +import subprocess +import os +import re +import shutil +import smtplib +import sys +from urllib2 import urlopen +from email.MIMEText import MIMEText +import logging +logging.basicConfig(filename='/home/skipper/statsmodels/statsmodels/tools/' + 'docs_build_config.log', level=logging.DEBUG, + format="%(asctime)s %(message)s") +sys.stdout = open('/home/skipper/statsmodels/statsmodels/tools/crontab.out', + 'w') +sys.stderr = open('/home/skipper/statsmodels/statsmodels/tools/crontab.err', + 'w') + +# Environment for subprocess calls. Needed for cron execution +env = {'MATPLOTLIBRC': ('/home/skipper/statsmodels/statsmodels/tools/'), + 'HOME': '/home/skipper', + 'PATH': ':'.join((os.getenv('PATH', ''), '/home/skipper/.local/bin')), + # Need this for my openblas setup on my laptop + # maybe no longer necessary with newer numpy + 'LD_LIBRARY_PATH': os.getenv('LD_LIBRARY_PATH', '')} + + +# hard-coded "current working directory" ie., you will need file permissions +# for this folder +# follow symbolic links +script = os.path.realpath(sys.argv[0]) +dname = os.path.abspath(os.path.dirname(script)) +gname = 'statsmodels' +gitdname = os.path.join(dname, gname) +os.chdir(dname) + +logging.debug('script: {}'.format(script)) +logging.debug('dname: {}'.format(dname)) + +# sourceforge account for rsync +sf_account = 'jseabold,statsmodels@web.sourceforge.net' + +# hard-coded git branch names +repo = 'git://github.com/statsmodels/statsmodels.git' +stable_trunk = 'master' +last_release = 'v0.5.0' +branches = [stable_trunk] +# change last_release above and uncomment the below to update for a release +# branches = [stable_trunk, last_release] + +# virtual environment directory +virtual_dir = 'BUILDENV' +virtual_dir = os.path.join(dname, virtual_dir) +# this points to the newly installed python in the virtualenv +virtual_python = os.path.join(virtual_dir, 'bin', 'python') + +# my security holes +with open('/home/skipper/statsmodels/gmail.txt') as f: + pwd = f.readline().strip() +gmail_pwd = base64.b64decode(pwd) + +# ------------ EMAIL ------------ +email_name = 'statsmodels.dev' + 'AT' + 'gmail' + '.com' +email_name = email_name.replace('AT', '@') +gmail_pwd = gmail_pwd +to_email = [email_name, + ('josef.pktd' + 'AT' + 'gmail' + '.com').replace('AT', '@')] + + +# ------------ FUNCTIONS ------------ + +def create_virtualenv(): + # make a virtualenv for installation if it doesn't exist + # and easy_install sphinx + if not os.path.exists(virtual_dir): + retcode = subprocess.call(['/home/skipper/.local/bin/virtualenv', + "--system-site-packages", virtual_dir], + stderr=sys.stderr, stdout=sys.stdout) + if retcode != 0: + msg = """There was a problem creating the virtualenv""" + raise Exception(msg) + retcode = subprocess.call([virtual_dir+'/bin/easy_install', 'sphinx']) + if retcode != 0: + msg = """There was a problem installing sphinx""" + raise Exception(msg) + + +def create_update_gitdir(): + """ + Creates a directory for local repo if it doesn't exist, + updates repo otherwise. + """ + if not os.path.exists(gitdname): + retcode = subprocess.call('git clone '+repo, shell=True, + stdout=sys.stdout, stderr=sys.stderr) + if retcode != 0: + msg = """There was a problem cloning the repo""" + raise Exception(msg) + else: + # directory exists, can't pull if you're not on a branch + # just delete it and clone again. Lazy but clean solution. + shutil.rmtree(gitdname) + create_update_gitdir() + + +def check_version(branch, latest_hash=None): + if branch == 'master': + remote_dir = 'devel' + regex = (r"(?<=This documentation is for version \d{1}\.\d{1}\." + r"\d{1}\.dev-)(\w{7})") + else: + remote_dir = 'stable' + regex = (r"(?<=This documentation is for the )(\d{1}\.\d{1}\.\d{1})" + r"(?= release.)") + base_url = 'https://www.statsmodels.org/{}' + page = urlopen(base_url.format(remote_dir)).read() + + try: + version = re.search(regex, page).group() + except AttributeError: + return True + + if remote_dir == 'stable': + if last_release[1:] == version: + return False + else: + return True + + # get the lastest hash + if latest_hash == version: + return False + else: + return True + + +def getdirs(): + """ + Get current directories of cwd in order to restore to this + """ + dirs = [i for i in os.listdir(dname)] + dirs = filter(lambda x: not os.path.isfile(os.path.join(dname, x)), + dirs) + return dirs + + +def newdir(dirs): + """ + Returns difference in directories between dirs and current directories + + If the difference is greater than one directory it raises an error. + """ + dirs = set(dirs) + newdirs = set([i for i in os.listdir(dname) if not + os.path.isfile(os.path.join(dname, i))]) + newdir = newdirs.difference(dirs) + if len(newdir) != 1: + msg = ("There was more than one directory created. Don't know what " + "to delete.") + raise Exception(msg) + newdir = newdir.pop() + return newdir + + +def install_branch(branch): + """ + Installs the branch in a virtualenv. + """ + # if it's already in the virtualenv, remove it + ver = '.'.join(map(str, (sys.version_info.major, sys.version_info.minor))) + sitepack = os.path.join(virtual_dir, 'lib', 'python'+ver, 'site-packages') + if os.path.exists(sitepack): + dir_list = os.listdir(sitepack) + else: + dir_list = [] + for f in dir_list: + if 'statsmodels' in f: + shutil.rmtree(os.path.join(sitepack, f)) + + # checkout the branch + os.chdir(gitdname) + retcode = subprocess.call('git checkout ' + branch, shell=True, + stdout=sys.stdout, stderr=sys.stderr) + if retcode != 0: + msg = """Could not checkout out branch %s""" % branch + raise Exception(msg) + + p = subprocess.Popen('git rev-parse HEAD ', shell=True, + stdout=subprocess.PIPE, stderr=sys.stderr) + version = p.communicate()[0][:7] + + # build and install + retcode = subprocess.call(" ".join([virtual_python, 'setup.py', 'build']), + shell=True, stdout=sys.stdout, stderr=sys.stderr) + if retcode != 0: + msg = """Could not build branch %s""" % branch + raise Exception(msg) + retcode = subprocess.call(" ".join([virtual_python, os.path.join(gitdname, + 'setup.py'), 'install']), shell=True, + stdout=sys.stdout, stderr=sys.stderr) + if retcode != 0: + os.chdir(dname) + msg = """Could not install branch %s""" % branch + raise Exception(msg) + os.chdir(dname) + return version + + +def print_info(): + subprocess.Popen([virtual_python, os.path.join(gitdname, + "statsmodels", + "tools", + "print_version.py" + )], + stdout=sys.stdout, stderr=sys.stderr) + + +def build_docs(branch): + """ + Changes into gitdname and builds the docs using BUILDENV virtualenv + """ + os.chdir(os.path.join(gitdname, 'docs')) + retcode = subprocess.call("make clean", shell=True, + stdout=sys.stdout, stderr=sys.stderr) + if retcode != 0: + os.chdir(dname) + msg = """Could not clean the html docs for branch %s""" % branch + raise Exception(msg) + # NOTE: The python call in the below makes sure that it uses the Python + # that is referenced after entering the virtualenv + sphinx_call = " ".join(['make', 'html', "SPHINXBUILD=' python " + "/usr/local/bin/sphinx-build'"]) + activate = os.path.join(virtual_dir, "bin", "activate") + activate_virtualenv = ". " + activate + # NOTE: You have to enter virtualenv in the same call. As soon as the + # child process is done, the env variables from activate are lost. + # getting the correct env from bin/activate and passing to env is + # annoying + retcode = subprocess.call(" && ".join([activate_virtualenv, sphinx_call]), + shell=True, env=env, stdout=sys.stdout, + stderr=sys.stderr) + + if retcode != 0: + os.chdir(dname) + msg = """Could not build the html docs for branch %s""" % branch + raise Exception(msg) + os.chdir(dname) + + +def build_pdf(branch): + """ + Changes into new_branch_dir and builds the docs using sphinx in the + BUILDENV virtualenv + """ + os.chdir(os.path.join(gitdname, 'statsmodels', 'docs')) + sphinx_dir = os.path.join(virtual_dir, 'bin') + retcode = subprocess.call(" ".join(['make', 'latexpdf', + 'SPHINXBUILD='+sphinx_dir+'/sphinx-build']), + shell=True) + if retcode != 0: + msg = """Could not build the pdf docs for branch %s""" % branch + raise Exception(msg) + os.chdir(dname) + + +def upload_docs(branch): + if branch == 'master': + remote_dir = 'devel' + else: + remote_dir = 'stable' + os.chdir(os.path.join(gitdname, 'docs')) + retcode = subprocess.call(['rsync', '-avPzh', '--inplace', '-e ssh', + 'build/html/', sf_account + ':htdocs/' + + remote_dir], + stderr=sys.stderr, stdout=sys.stdout) + if retcode != 0: + msg = """Could not upload html to %s for branch %s""" % (remote_dir, + branch) + raise Exception(msg) + os.chdir(dname) + + +# TODO: upload pdf is not tested +def upload_pdf(branch, new_branch_dir): + if branch == 'master': + remote_dir = 'devel' + else: + remote_dir = 'stable' + os.chdir(os.path.join(dname, new_branch_dir, 'statsmodels', 'docs')) + retcode = subprocess.call(['rsync', '-avP', '-e ssh', + 'build/latex/statsmodels.pdf', + sf_account + ':htdocs/' + remote_dir + 'pdf/']) + if retcode != 0: + msg = ("Could not upload pdf to %s for branch %s" % + (remote_dir+'/pdf', branch)) + raise Exception(msg) + os.chdir(dname) + + +def email_me(status='ok'): + if status == 'ok': + message = """ + HTML Documentation uploaded successfully. + """ + subject = "Statsmodels HTML Build OK" + else: + message = status + subject = "Statsmodels HTML Build Failed" + + msg = MIMEText(message) + msg['Subject'] = subject + msg['From'] = email_name + msg['To'] = email_name + + server = smtplib.SMTP('smtp.gmail.com', 587) + server.ehlo() + server.starttls() + server.ehlo() + server.login(email_name, gmail_pwd) + server.sendmail(email_name, to_email, msg.as_string()) + server.close() + + +def main(): + # get branch, install in virtualenv, build the docs, upload, and cleanup + msg = '' + for branch in branches: + try: + create_virtualenv() + create_update_gitdir() + version = install_branch(branch) + if check_version(branch, version): + print_info() + build_docs(branch) + upload_docs(branch) + else: + msg += ('Latest version already available for branch ' + '{}.\n'.format(branch)) + # TODO: re-enable build_pdf, upload_pdf? + # build_pdf(new_branch_dir) + # upload_pdf(branch, new_branch_dir) + except Exception: + msg += traceback.format_exc() + + if msg == '': # if it doesn't something went wrong and was caught above + email_me() + else: + email_me(msg) + + +if __name__ == "__main__": + main() diff --git a/tox.ini b/tox.ini new file mode 100644 index 0000000..feb0349 --- /dev/null +++ b/tox.ini @@ -0,0 +1,68 @@ +############################################################################## +# Intended to simplify local generation of coverage of Cython files +# +# tox -e cython-coverage +# +# will produce a HTML report showing line-by-line coverage +# +# can be used to run standard tests on Python 2.7, 3.5, 3.6, and 3.7 or a +# run with coverage but without coverage of Cython files using +# +# tox -e ENV +# +# where env is one of the values in envlist or all environments (slow) +# +# tox +# +############################################################################## +[tox] +envlist = + py27 + py35 + py36 + py37 + coverage + cython-coverage + +[testenv] +deps = + -rrequirements.txt + cython + matplotlib + joblib + pytest>=3 + pytest-xdist +setenv = + MKL_NUM_THREADS=1 + NUMEXPR_NUM_THREADS=1 + OMP_NUM_THREADS=1 + OPENBLAS_NUM_THREADS=1 +changedir = {homedir} +commands = + python -c "import statsmodels;statsmodels.test(['-n 2'], exit=True)" + +[testenv:coverage] +usedevelop = True +deps = + {[testenv]deps} + pytest-cov +setenv = + {[testenv]setenv} + SM_CYTHON_COVERAGE=false +changedir = {toxinidir} +commands = + coverage erase + pytest -n 2 --cov-report html --cov=statsmodels statsmodels + +[testenv:cython-coverage] +usedevelop = True +deps = + {[testenv]deps} + pytest-cov +setenv = + {[testenv]setenv} + SM_CYTHON_COVERAGE=true +changedir = {toxinidir} +commands = + coverage erase + pytest -n 2 --cov-report html --cov=statsmodels statsmodels diff --git a/versioneer.py b/versioneer.py new file mode 100644 index 0000000..64fea1c --- /dev/null +++ b/versioneer.py @@ -0,0 +1,1822 @@ + +# Version: 0.18 + +"""The Versioneer - like a rocketeer, but for versions. + +The Versioneer +============== + +* like a rocketeer, but for versions! +* https://github.com/warner/python-versioneer +* Brian Warner +* License: Public Domain +* Compatible With: python2.6, 2.7, 3.2, 3.3, 3.4, 3.5, 3.6, and pypy +* [![Latest Version] +(https://pypip.in/version/versioneer/badge.svg?style=flat) +](https://pypi.python.org/pypi/versioneer/) +* [![Build Status] +(https://travis-ci.org/warner/python-versioneer.png?branch=master) +](https://travis-ci.org/warner/python-versioneer) + +This is a tool for managing a recorded version number in distutils-based +python projects. The goal is to remove the tedious and error-prone "update +the embedded version string" step from your release process. Making a new +release should be as easy as recording a new tag in your version-control +system, and maybe making new tarballs. + + +## Quick Install + +* `pip install versioneer` to somewhere to your $PATH +* add a `[versioneer]` section to your setup.cfg (see below) +* run `versioneer install` in your source tree, commit the results + +## Version Identifiers + +Source trees come from a variety of places: + +* a version-control system checkout (mostly used by developers) +* a nightly tarball, produced by build automation +* a snapshot tarball, produced by a web-based VCS browser, like github's + "tarball from tag" feature +* a release tarball, produced by "setup.py sdist", distributed through PyPI + +Within each source tree, the version identifier (either a string or a number, +this tool is format-agnostic) can come from a variety of places: + +* ask the VCS tool itself, e.g. "git describe" (for checkouts), which knows + about recent "tags" and an absolute revision-id +* the name of the directory into which the tarball was unpacked +* an expanded VCS keyword ($Id$, etc) +* a `_version.py` created by some earlier build step + +For released software, the version identifier is closely related to a VCS +tag. Some projects use tag names that include more than just the version +string (e.g. "myproject-1.2" instead of just "1.2"), in which case the tool +needs to strip the tag prefix to extract the version identifier. For +unreleased software (between tags), the version identifier should provide +enough information to help developers recreate the same tree, while also +giving them an idea of roughly how old the tree is (after version 1.2, before +version 1.3). Many VCS systems can report a description that captures this, +for example `git describe --tags --dirty --always` reports things like +"0.7-1-g574ab98-dirty" to indicate that the checkout is one revision past the +0.7 tag, has a unique revision id of "574ab98", and is "dirty" (it has +uncommitted changes. + +The version identifier is used for multiple purposes: + +* to allow the module to self-identify its version: `myproject.__version__` +* to choose a name and prefix for a 'setup.py sdist' tarball + +## Theory of Operation + +Versioneer works by adding a special `_version.py` file into your source +tree, where your `__init__.py` can import it. This `_version.py` knows how to +dynamically ask the VCS tool for version information at import time. + +`_version.py` also contains `$Revision$` markers, and the installation +process marks `_version.py` to have this marker rewritten with a tag name +during the `git archive` command. As a result, generated tarballs will +contain enough information to get the proper version. + +To allow `setup.py` to compute a version too, a `versioneer.py` is added to +the top level of your source tree, next to `setup.py` and the `setup.cfg` +that configures it. This overrides several distutils/setuptools commands to +compute the version when invoked, and changes `setup.py build` and `setup.py +sdist` to replace `_version.py` with a small static file that contains just +the generated version data. + +## Installation + +See [INSTALL.md](./INSTALL.md) for detailed installation instructions. + +## Version-String Flavors + +Code which uses Versioneer can learn about its version string at runtime by +importing `_version` from your main `__init__.py` file and running the +`get_versions()` function. From the "outside" (e.g. in `setup.py`), you can +import the top-level `versioneer.py` and run `get_versions()`. + +Both functions return a dictionary with different flavors of version +information: + +* `['version']`: A condensed version string, rendered using the selected + style. This is the most commonly used value for the project's version + string. The default "pep440" style yields strings like `0.11`, + `0.11+2.g1076c97`, or `0.11+2.g1076c97.dirty`. See the "Styles" section + below for alternative styles. + +* `['full-revisionid']`: detailed revision identifier. For Git, this is the + full SHA1 commit id, e.g. "1076c978a8d3cfc70f408fe5974aa6c092c949ac". + +* `['date']`: Date and time of the latest `HEAD` commit. For Git, it is the + commit date in ISO 8601 format. This will be None if the date is not + available. + +* `['dirty']`: a boolean, True if the tree has uncommitted changes. Note that + this is only accurate if run in a VCS checkout, otherwise it is likely to + be False or None + +* `['error']`: if the version string could not be computed, this will be set + to a string describing the problem, otherwise it will be None. It may be + useful to throw an exception in setup.py if this is set, to avoid e.g. + creating tarballs with a version string of "unknown". + +Some variants are more useful than others. Including `full-revisionid` in a +bug report should allow developers to reconstruct the exact code being tested +(or indicate the presence of local changes that should be shared with the +developers). `version` is suitable for display in an "about" box or a CLI +`--version` output: it can be easily compared against release notes and lists +of bugs fixed in various releases. + +The installer adds the following text to your `__init__.py` to place a basic +version in `YOURPROJECT.__version__`: + + from ._version import get_versions + __version__ = get_versions()['version'] + del get_versions + +## Styles + +The setup.cfg `style=` configuration controls how the VCS information is +rendered into a version string. + +The default style, "pep440", produces a PEP440-compliant string, equal to the +un-prefixed tag name for actual releases, and containing an additional "local +version" section with more detail for in-between builds. For Git, this is +TAG[+DISTANCE.gHEX[.dirty]] , using information from `git describe --tags +--dirty --always`. For example "0.11+2.g1076c97.dirty" indicates that the +tree is like the "1076c97" commit but has uncommitted changes (".dirty"), and +that this commit is two revisions ("+2") beyond the "0.11" tag. For released +software (exactly equal to a known tag), the identifier will only contain the +stripped tag, e.g. "0.11". + +Other styles are available. See [details.md](details.md) in the Versioneer +source tree for descriptions. + +## Debugging + +Versioneer tries to avoid fatal errors: if something goes wrong, it will tend +to return a version of "0+unknown". To investigate the problem, run `setup.py +version`, which will run the version-lookup code in a verbose mode, and will +display the full contents of `get_versions()` (including the `error` string, +which may help identify what went wrong). + +## Known Limitations + +Some situations are known to cause problems for Versioneer. This details the +most significant ones. More can be found on Github +[issues page](https://github.com/warner/python-versioneer/issues). + +### Subprojects + +Versioneer has limited support for source trees in which `setup.py` is not in +the root directory (e.g. `setup.py` and `.git/` are *not* siblings). The are +two common reasons why `setup.py` might not be in the root: + +* Source trees which contain multiple subprojects, such as + [Buildbot](https://github.com/buildbot/buildbot), which contains both + "master" and "slave" subprojects, each with their own `setup.py`, + `setup.cfg`, and `tox.ini`. Projects like these produce multiple PyPI + distributions (and upload multiple independently-installable tarballs). +* Source trees whose main purpose is to contain a C library, but which also + provide bindings to Python (and perhaps other langauges) in subdirectories. + +Versioneer will look for `.git` in parent directories, and most operations +should get the right version string. However `pip` and `setuptools` have bugs +and implementation details which frequently cause `pip install .` from a +subproject directory to fail to find a correct version string (so it usually +defaults to `0+unknown`). + +`pip install --editable .` should work correctly. `setup.py install` might +work too. + +Pip-8.1.1 is known to have this problem, but hopefully it will get fixed in +some later version. + +[Bug #38](https://github.com/warner/python-versioneer/issues/38) is tracking +this issue. The discussion in +[PR #61](https://github.com/warner/python-versioneer/pull/61) describes the +issue from the Versioneer side in more detail. +[pip PR#3176](https://github.com/pypa/pip/pull/3176) and +[pip PR#3615](https://github.com/pypa/pip/pull/3615) contain work to improve +pip to let Versioneer work correctly. + +Versioneer-0.16 and earlier only looked for a `.git` directory next to the +`setup.cfg`, so subprojects were completely unsupported with those releases. + +### Editable installs with setuptools <= 18.5 + +`setup.py develop` and `pip install --editable .` allow you to install a +project into a virtualenv once, then continue editing the source code (and +test) without re-installing after every change. + +"Entry-point scripts" (`setup(entry_points={"console_scripts": ..})`) are a +convenient way to specify executable scripts that should be installed along +with the python package. + +These both work as expected when using modern setuptools. When using +setuptools-18.5 or earlier, however, certain operations will cause +`pkg_resources.DistributionNotFound` errors when running the entrypoint +script, which must be resolved by re-installing the package. This happens +when the install happens with one version, then the egg_info data is +regenerated while a different version is checked out. Many setup.py commands +cause egg_info to be rebuilt (including `sdist`, `wheel`, and installing into +a different virtualenv), so this can be surprising. + +[Bug #83](https://github.com/warner/python-versioneer/issues/83) describes +this one, but upgrading to a newer version of setuptools should probably +resolve it. + +### Unicode version strings + +While Versioneer works (and is continually tested) with both Python 2 and +Python 3, it is not entirely consistent with bytes-vs-unicode distinctions. +Newer releases probably generate unicode version strings on py2. It's not +clear that this is wrong, but it may be surprising for applications when then +write these strings to a network connection or include them in bytes-oriented +APIs like cryptographic checksums. + +[Bug #71](https://github.com/warner/python-versioneer/issues/71) investigates +this question. + + +## Updating Versioneer + +To upgrade your project to a new release of Versioneer, do the following: + +* install the new Versioneer (`pip install -U versioneer` or equivalent) +* edit `setup.cfg`, if necessary, to include any new configuration settings + indicated by the release notes. See [UPGRADING](./UPGRADING.md) for details. +* re-run `versioneer install` in your source tree, to replace + `SRC/_version.py` +* commit any changed files + +## Future Directions + +This tool is designed to make it easily extended to other version-control +systems: all VCS-specific components are in separate directories like +src/git/ . The top-level `versioneer.py` script is assembled from these +components by running make-versioneer.py . In the future, make-versioneer.py +will take a VCS name as an argument, and will construct a version of +`versioneer.py` that is specific to the given VCS. It might also take the +configuration arguments that are currently provided manually during +installation by editing setup.py . Alternatively, it might go the other +direction and include code from all supported VCS systems, reducing the +number of intermediate scripts. + + +## License + +To make Versioneer easier to embed, all its code is dedicated to the public +domain. The `_version.py` that it creates is also in the public domain. +Specifically, both are released under the Creative Commons "Public Domain +Dedication" license (CC0-1.0), as described in +https://creativecommons.org/publicdomain/zero/1.0/ . + +""" + +from __future__ import print_function +try: + import configparser +except ImportError: + import ConfigParser as configparser +import errno +import json +import os +import re +import subprocess +import sys + + +class VersioneerConfig: + """Container for Versioneer configuration parameters.""" + + +def get_root(): + """Get the project root directory. + + We require that all commands are run from the project root, i.e. the + directory that contains setup.py, setup.cfg, and versioneer.py . + """ + root = os.path.realpath(os.path.abspath(os.getcwd())) + setup_py = os.path.join(root, "setup.py") + versioneer_py = os.path.join(root, "versioneer.py") + if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): + # allow 'python path/to/setup.py COMMAND' + root = os.path.dirname(os.path.realpath(os.path.abspath(sys.argv[0]))) + setup_py = os.path.join(root, "setup.py") + versioneer_py = os.path.join(root, "versioneer.py") + if not (os.path.exists(setup_py) or os.path.exists(versioneer_py)): + err = ("Versioneer was unable to run the project root directory. " + "Versioneer requires setup.py to be executed from " + "its immediate directory (like 'python setup.py COMMAND'), " + "or in a way that lets it use sys.argv[0] to find the root " + "(like 'python path/to/setup.py COMMAND').") + raise VersioneerBadRootError(err) + try: + # Certain runtime workflows (setup.py install/develop in a setuptools + # tree) execute all dependencies in a single python process, so + # "versioneer" may be imported multiple times, and python's shared + # module-import table will cache the first one. So we can't use + # os.path.dirname(__file__), as that will find whichever + # versioneer.py was first imported, even in later projects. + me = os.path.realpath(os.path.abspath(__file__)) + me_dir = os.path.normcase(os.path.splitext(me)[0]) + vsr_dir = os.path.normcase(os.path.splitext(versioneer_py)[0]) + if me_dir != vsr_dir: + print("Warning: build in %s is using versioneer.py from %s" + % (os.path.dirname(me), versioneer_py)) + except NameError: + pass + return root + + +def get_config_from_root(root): + """Read the project setup.cfg file to determine Versioneer config.""" + # This might raise EnvironmentError (if setup.cfg is missing), or + # configparser.NoSectionError (if it lacks a [versioneer] section), or + # configparser.NoOptionError (if it lacks "VCS="). See the docstring at + # the top of versioneer.py for instructions on writing your setup.cfg . + setup_cfg = os.path.join(root, "setup.cfg") + parser = configparser.SafeConfigParser() + with open(setup_cfg, "r") as f: + parser.readfp(f) + VCS = parser.get("versioneer", "VCS") # mandatory + + def get(parser, name): + if parser.has_option("versioneer", name): + return parser.get("versioneer", name) + return None + cfg = VersioneerConfig() + cfg.VCS = VCS + cfg.style = get(parser, "style") or "" + cfg.versionfile_source = get(parser, "versionfile_source") + cfg.versionfile_build = get(parser, "versionfile_build") + cfg.tag_prefix = get(parser, "tag_prefix") + if cfg.tag_prefix in ("''", '""'): + cfg.tag_prefix = "" + cfg.parentdir_prefix = get(parser, "parentdir_prefix") + cfg.verbose = get(parser, "verbose") + return cfg + + +class NotThisMethod(Exception): + """Exception raised if a method is not valid for the current scenario.""" + + +# these dictionaries contain VCS-specific tools +LONG_VERSION_PY = {} +HANDLERS = {} + + +def register_vcs_handler(vcs, method): # decorator + """Decorator to mark a method as the handler for a particular VCS.""" + def decorate(f): + """Store f in HANDLERS[vcs][method].""" + if vcs not in HANDLERS: + HANDLERS[vcs] = {} + HANDLERS[vcs][method] = f + return f + return decorate + + +def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, + env=None): + """Call the given command(s).""" + assert isinstance(commands, list) + p = None + for c in commands: + try: + dispcmd = str([c] + args) + # remember shell=False, so use git.cmd on windows, not just git + p = subprocess.Popen([c] + args, cwd=cwd, env=env, + stdout=subprocess.PIPE, + stderr=(subprocess.PIPE if hide_stderr + else None)) + break + except EnvironmentError: + e = sys.exc_info()[1] + if e.errno == errno.ENOENT: + continue + if verbose: + print("unable to run %s" % dispcmd) + print(e) + return None, None + else: + if verbose: + print("unable to find command, tried %s" % (commands,)) + return None, None + stdout = p.communicate()[0].strip() + if sys.version_info[0] >= 3: + stdout = stdout.decode() + if p.returncode != 0: + if verbose: + print("unable to run %s (error)" % dispcmd) + print("stdout was %s" % stdout) + return None, p.returncode + return stdout, p.returncode + + +LONG_VERSION_PY['git'] = ''' +# This file helps to compute a version number in source trees obtained from +# git-archive tarball (such as those provided by githubs download-from-tag +# feature). Distribution tarballs (built by setup.py sdist) and build +# directories (produced by setup.py build) will contain a much shorter file +# that just contains the computed version number. + +# This file is released into the public domain. Generated by +# versioneer-0.18 (https://github.com/warner/python-versioneer) + +"""Git implementation of _version.py.""" + +import errno +import os +import re +import subprocess +import sys + + +def get_keywords(): + """Get the keywords needed to look up the version information.""" + # these strings will be replaced by git during git-archive. + # setup.py/versioneer.py will grep for the variable names, so they must + # each be defined on a line of their own. _version.py will just call + # get_keywords(). + git_refnames = "%(DOLLAR)sFormat:%%d%(DOLLAR)s" + git_full = "%(DOLLAR)sFormat:%%H%(DOLLAR)s" + git_date = "%(DOLLAR)sFormat:%%ci%(DOLLAR)s" + keywords = {"refnames": git_refnames, "full": git_full, "date": git_date} + return keywords + + +class VersioneerConfig: + """Container for Versioneer configuration parameters.""" + + +def get_config(): + """Create, populate and return the VersioneerConfig() object.""" + # these strings are filled in when 'setup.py versioneer' creates + # _version.py + cfg = VersioneerConfig() + cfg.VCS = "git" + cfg.style = "%(STYLE)s" + cfg.tag_prefix = "%(TAG_PREFIX)s" + cfg.parentdir_prefix = "%(PARENTDIR_PREFIX)s" + cfg.versionfile_source = "%(VERSIONFILE_SOURCE)s" + cfg.verbose = False + return cfg + + +class NotThisMethod(Exception): + """Exception raised if a method is not valid for the current scenario.""" + + +LONG_VERSION_PY = {} +HANDLERS = {} + + +def register_vcs_handler(vcs, method): # decorator + """Decorator to mark a method as the handler for a particular VCS.""" + def decorate(f): + """Store f in HANDLERS[vcs][method].""" + if vcs not in HANDLERS: + HANDLERS[vcs] = {} + HANDLERS[vcs][method] = f + return f + return decorate + + +def run_command(commands, args, cwd=None, verbose=False, hide_stderr=False, + env=None): + """Call the given command(s).""" + assert isinstance(commands, list) + p = None + for c in commands: + try: + dispcmd = str([c] + args) + # remember shell=False, so use git.cmd on windows, not just git + p = subprocess.Popen([c] + args, cwd=cwd, env=env, + stdout=subprocess.PIPE, + stderr=(subprocess.PIPE if hide_stderr + else None)) + break + except EnvironmentError: + e = sys.exc_info()[1] + if e.errno == errno.ENOENT: + continue + if verbose: + print("unable to run %%s" %% dispcmd) + print(e) + return None, None + else: + if verbose: + print("unable to find command, tried %%s" %% (commands,)) + return None, None + stdout = p.communicate()[0].strip() + if sys.version_info[0] >= 3: + stdout = stdout.decode() + if p.returncode != 0: + if verbose: + print("unable to run %%s (error)" %% dispcmd) + print("stdout was %%s" %% stdout) + return None, p.returncode + return stdout, p.returncode + + +def versions_from_parentdir(parentdir_prefix, root, verbose): + """Try to determine the version from the parent directory name. + + Source tarballs conventionally unpack into a directory that includes both + the project name and a version string. We will also support searching up + two directory levels for an appropriately named parent directory + """ + rootdirs = [] + + for i in range(3): + dirname = os.path.basename(root) + if dirname.startswith(parentdir_prefix): + return {"version": dirname[len(parentdir_prefix):], + "full-revisionid": None, + "dirty": False, "error": None, "date": None} + else: + rootdirs.append(root) + root = os.path.dirname(root) # up a level + + if verbose: + print("Tried directories %%s but none started with prefix %%s" %% + (str(rootdirs), parentdir_prefix)) + raise NotThisMethod("rootdir doesn't start with parentdir_prefix") + + +@register_vcs_handler("git", "get_keywords") +def git_get_keywords(versionfile_abs): + """Extract version information from the given file.""" + # the code embedded in _version.py can just fetch the value of these + # keywords. When used from setup.py, we don't want to import _version.py, + # so we do it with a regexp instead. This function is not used from + # _version.py. + keywords = {} + try: + f = open(versionfile_abs, "r") + for line in f.readlines(): + if line.strip().startswith("git_refnames ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["refnames"] = mo.group(1) + if line.strip().startswith("git_full ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["full"] = mo.group(1) + if line.strip().startswith("git_date ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["date"] = mo.group(1) + f.close() + except EnvironmentError: + pass + return keywords + + +@register_vcs_handler("git", "keywords") +def git_versions_from_keywords(keywords, tag_prefix, verbose): + """Get version information from git keywords.""" + if not keywords: + raise NotThisMethod("no keywords at all, weird") + date = keywords.get("date") + if date is not None: + # git-2.2.0 added "%%cI", which expands to an ISO-8601 -compliant + # datestamp. However we prefer "%%ci" (which expands to an "ISO-8601 + # -like" string, which we must then edit to make compliant), because + # it's been around since git-1.5.3, and it's too difficult to + # discover which version we're using, or to work around using an + # older one. + date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + refnames = keywords["refnames"].strip() + if refnames.startswith("$Format"): + if verbose: + print("keywords are unexpanded, not using") + raise NotThisMethod("unexpanded keywords, not a git-archive tarball") + refs = set([r.strip() for r in refnames.strip("()").split(",")]) + # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of + # just "foo-1.0". If we see a "tag: " prefix, prefer those. + TAG = "tag: " + tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) + if not tags: + # Either we're using git < 1.8.3, or there really are no tags. We use + # a heuristic: assume all version tags have a digit. The old git %%d + # expansion behaves like git log --decorate=short and strips out the + # refs/heads/ and refs/tags/ prefixes that would let us distinguish + # between branches and tags. By ignoring refnames without digits, we + # filter out many common branch names like "release" and + # "stabilization", as well as "HEAD" and "master". + tags = set([r for r in refs if re.search(r'\d', r)]) + if verbose: + print("discarding '%%s', no digits" %% ",".join(refs - tags)) + if verbose: + print("likely tags: %%s" %% ",".join(sorted(tags))) + for ref in sorted(tags): + # sorting will prefer e.g. "2.0" over "2.0rc1" + if ref.startswith(tag_prefix): + r = ref[len(tag_prefix):] + if verbose: + print("picking %%s" %% r) + return {"version": r, + "full-revisionid": keywords["full"].strip(), + "dirty": False, "error": None, + "date": date} + # no suitable tags, so version is "0+unknown", but full hex is still there + if verbose: + print("no suitable tags, using unknown + full revision id") + return {"version": "0+unknown", + "full-revisionid": keywords["full"].strip(), + "dirty": False, "error": "no suitable tags", "date": None} + + +@register_vcs_handler("git", "pieces_from_vcs") +def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + """Get version from 'git describe' in the root of the source tree. + + This only gets called if the git-archive 'subst' keywords were *not* + expanded, and _version.py hasn't already been rewritten with a short + version string, meaning we're inside a checked out source tree. + """ + GITS = ["git"] + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] + + out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, + hide_stderr=True) + if rc != 0: + if verbose: + print("Directory %%s not under git control" %% root) + raise NotThisMethod("'git rev-parse --git-dir' returned error") + + # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] + # if there isn't one, this yields HEX[-dirty] (no NUM) + describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", + "--always", "--long", + "--match", "%%s*" %% tag_prefix], + cwd=root) + # --long was added in git-1.5.5 + if describe_out is None: + raise NotThisMethod("'git describe' failed") + describe_out = describe_out.strip() + full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) + if full_out is None: + raise NotThisMethod("'git rev-parse' failed") + full_out = full_out.strip() + + pieces = {} + pieces["long"] = full_out + pieces["short"] = full_out[:7] # maybe improved later + pieces["error"] = None + + # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] + # TAG might have hyphens. + git_describe = describe_out + + # look for -dirty suffix + dirty = git_describe.endswith("-dirty") + pieces["dirty"] = dirty + if dirty: + git_describe = git_describe[:git_describe.rindex("-dirty")] + + # now we have TAG-NUM-gHEX or HEX + + if "-" in git_describe: + # TAG-NUM-gHEX + mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) + if not mo: + # unparseable. Maybe git-describe is misbehaving? + pieces["error"] = ("unable to parse git-describe output: '%%s'" + %% describe_out) + return pieces + + # tag + full_tag = mo.group(1) + if not full_tag.startswith(tag_prefix): + if verbose: + fmt = "tag '%%s' doesn't start with prefix '%%s'" + print(fmt %% (full_tag, tag_prefix)) + pieces["error"] = ("tag '%%s' doesn't start with prefix '%%s'" + %% (full_tag, tag_prefix)) + return pieces + pieces["closest-tag"] = full_tag[len(tag_prefix):] + + # distance: number of commits since tag + pieces["distance"] = int(mo.group(2)) + + # commit: short hex revision ID + pieces["short"] = mo.group(3) + + else: + # HEX: no tags + pieces["closest-tag"] = None + count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], + cwd=root) + pieces["distance"] = int(count_out) # total number of commits + + # commit date: see ISO-8601 comment in git_versions_from_keywords() + date = run_command(GITS, ["show", "-s", "--format=%%ci", "HEAD"], + cwd=root)[0].strip() + pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + + return pieces + + +def plus_or_dot(pieces): + """Return a + if we don't already have one, else return a .""" + if "+" in pieces.get("closest-tag", ""): + return "." + return "+" + + +def render_pep440(pieces): + """Build up version string, with post-release "local version identifier". + + Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you + get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty + + Exceptions: + 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += plus_or_dot(pieces) + rendered += "%%d.g%%s" %% (pieces["distance"], pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + else: + # exception #1 + rendered = "0+untagged.%%d.g%%s" %% (pieces["distance"], + pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + return rendered + + +def render_pep440_pre(pieces): + """TAG[.post.devDISTANCE] -- No -dirty. + + Exceptions: + 1: no tags. 0.post.devDISTANCE + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"]: + rendered += ".post.dev%%d" %% pieces["distance"] + else: + # exception #1 + rendered = "0.post.dev%%d" %% pieces["distance"] + return rendered + + +def render_pep440_post(pieces): + """TAG[.postDISTANCE[.dev0]+gHEX] . + + The ".dev0" means dirty. Note that .dev0 sorts backwards + (a dirty tree will appear "older" than the corresponding clean one), + but you shouldn't be releasing software with -dirty anyways. + + Exceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += ".post%%d" %% pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + rendered += plus_or_dot(pieces) + rendered += "g%%s" %% pieces["short"] + else: + # exception #1 + rendered = "0.post%%d" %% pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + rendered += "+g%%s" %% pieces["short"] + return rendered + + +def render_pep440_old(pieces): + """TAG[.postDISTANCE[.dev0]] . + + The ".dev0" means dirty. + + Eexceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += ".post%%d" %% pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + else: + # exception #1 + rendered = "0.post%%d" %% pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + return rendered + + +def render_git_describe(pieces): + """TAG[-DISTANCE-gHEX][-dirty]. + + Like 'git describe --tags --dirty --always'. + + Exceptions: + 1: no tags. HEX[-dirty] (note: no 'g' prefix) + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"]: + rendered += "-%%d-g%%s" %% (pieces["distance"], pieces["short"]) + else: + # exception #1 + rendered = pieces["short"] + if pieces["dirty"]: + rendered += "-dirty" + return rendered + + +def render_git_describe_long(pieces): + """TAG-DISTANCE-gHEX[-dirty]. + + Like 'git describe --tags --dirty --always -long'. + The distance/hash is unconditional. + + Exceptions: + 1: no tags. HEX[-dirty] (note: no 'g' prefix) + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + rendered += "-%%d-g%%s" %% (pieces["distance"], pieces["short"]) + else: + # exception #1 + rendered = pieces["short"] + if pieces["dirty"]: + rendered += "-dirty" + return rendered + + +def render(pieces, style): + """Render the given version pieces into the requested style.""" + if pieces["error"]: + return {"version": "unknown", + "full-revisionid": pieces.get("long"), + "dirty": None, + "error": pieces["error"], + "date": None} + + if not style or style == "default": + style = "pep440" # the default + + if style == "pep440": + rendered = render_pep440(pieces) + elif style == "pep440-pre": + rendered = render_pep440_pre(pieces) + elif style == "pep440-post": + rendered = render_pep440_post(pieces) + elif style == "pep440-old": + rendered = render_pep440_old(pieces) + elif style == "git-describe": + rendered = render_git_describe(pieces) + elif style == "git-describe-long": + rendered = render_git_describe_long(pieces) + else: + raise ValueError("unknown style '%%s'" %% style) + + return {"version": rendered, "full-revisionid": pieces["long"], + "dirty": pieces["dirty"], "error": None, + "date": pieces.get("date")} + + +def get_versions(): + """Get version information or return default if unable to do so.""" + # I am in _version.py, which lives at ROOT/VERSIONFILE_SOURCE. If we have + # __file__, we can work backwards from there to the root. Some + # py2exe/bbfreeze/non-CPython implementations don't do __file__, in which + # case we can only use expanded keywords. + + cfg = get_config() + verbose = cfg.verbose + + try: + return git_versions_from_keywords(get_keywords(), cfg.tag_prefix, + verbose) + except NotThisMethod: + pass + + try: + root = os.path.realpath(__file__) + # versionfile_source is the relative path from the top of the source + # tree (where the .git directory might live) to this file. Invert + # this to find the root from __file__. + for i in cfg.versionfile_source.split('/'): + root = os.path.dirname(root) + except NameError: + return {"version": "0+unknown", "full-revisionid": None, + "dirty": None, + "error": "unable to find root of source tree", + "date": None} + + try: + pieces = git_pieces_from_vcs(cfg.tag_prefix, root, verbose) + return render(pieces, cfg.style) + except NotThisMethod: + pass + + try: + if cfg.parentdir_prefix: + return versions_from_parentdir(cfg.parentdir_prefix, root, verbose) + except NotThisMethod: + pass + + return {"version": "0+unknown", "full-revisionid": None, + "dirty": None, + "error": "unable to compute version", "date": None} +''' + + +@register_vcs_handler("git", "get_keywords") +def git_get_keywords(versionfile_abs): + """Extract version information from the given file.""" + # the code embedded in _version.py can just fetch the value of these + # keywords. When used from setup.py, we don't want to import _version.py, + # so we do it with a regexp instead. This function is not used from + # _version.py. + keywords = {} + try: + f = open(versionfile_abs, "r") + for line in f.readlines(): + if line.strip().startswith("git_refnames ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["refnames"] = mo.group(1) + if line.strip().startswith("git_full ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["full"] = mo.group(1) + if line.strip().startswith("git_date ="): + mo = re.search(r'=\s*"(.*)"', line) + if mo: + keywords["date"] = mo.group(1) + f.close() + except EnvironmentError: + pass + return keywords + + +@register_vcs_handler("git", "keywords") +def git_versions_from_keywords(keywords, tag_prefix, verbose): + """Get version information from git keywords.""" + if not keywords: + raise NotThisMethod("no keywords at all, weird") + date = keywords.get("date") + if date is not None: + # git-2.2.0 added "%cI", which expands to an ISO-8601 -compliant + # datestamp. However we prefer "%ci" (which expands to an "ISO-8601 + # -like" string, which we must then edit to make compliant), because + # it's been around since git-1.5.3, and it's too difficult to + # discover which version we're using, or to work around using an + # older one. + date = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + refnames = keywords["refnames"].strip() + if refnames.startswith("$Format"): + if verbose: + print("keywords are unexpanded, not using") + raise NotThisMethod("unexpanded keywords, not a git-archive tarball") + refs = set([r.strip() for r in refnames.strip("()").split(",")]) + # starting in git-1.8.3, tags are listed as "tag: foo-1.0" instead of + # just "foo-1.0". If we see a "tag: " prefix, prefer those. + TAG = "tag: " + tags = set([r[len(TAG):] for r in refs if r.startswith(TAG)]) + if not tags: + # Either we're using git < 1.8.3, or there really are no tags. We use + # a heuristic: assume all version tags have a digit. The old git %d + # expansion behaves like git log --decorate=short and strips out the + # refs/heads/ and refs/tags/ prefixes that would let us distinguish + # between branches and tags. By ignoring refnames without digits, we + # filter out many common branch names like "release" and + # "stabilization", as well as "HEAD" and "master". + tags = set([r for r in refs if re.search(r'\d', r)]) + if verbose: + print("discarding '%s', no digits" % ",".join(refs - tags)) + if verbose: + print("likely tags: %s" % ",".join(sorted(tags))) + for ref in sorted(tags): + # sorting will prefer e.g. "2.0" over "2.0rc1" + if ref.startswith(tag_prefix): + r = ref[len(tag_prefix):] + if verbose: + print("picking %s" % r) + return {"version": r, + "full-revisionid": keywords["full"].strip(), + "dirty": False, "error": None, + "date": date} + # no suitable tags, so version is "0+unknown", but full hex is still there + if verbose: + print("no suitable tags, using unknown + full revision id") + return {"version": "0+unknown", + "full-revisionid": keywords["full"].strip(), + "dirty": False, "error": "no suitable tags", "date": None} + + +@register_vcs_handler("git", "pieces_from_vcs") +def git_pieces_from_vcs(tag_prefix, root, verbose, run_command=run_command): + """Get version from 'git describe' in the root of the source tree. + + This only gets called if the git-archive 'subst' keywords were *not* + expanded, and _version.py hasn't already been rewritten with a short + version string, meaning we're inside a checked out source tree. + """ + GITS = ["git"] + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] + + out, rc = run_command(GITS, ["rev-parse", "--git-dir"], cwd=root, + hide_stderr=True) + if rc != 0: + if verbose: + print("Directory %s not under git control" % root) + raise NotThisMethod("'git rev-parse --git-dir' returned error") + + # if there is a tag matching tag_prefix, this yields TAG-NUM-gHEX[-dirty] + # if there isn't one, this yields HEX[-dirty] (no NUM) + describe_out, rc = run_command(GITS, ["describe", "--tags", "--dirty", + "--always", "--long", + "--match", "%s*" % tag_prefix], + cwd=root) + # --long was added in git-1.5.5 + if describe_out is None: + raise NotThisMethod("'git describe' failed") + describe_out = describe_out.strip() + full_out, rc = run_command(GITS, ["rev-parse", "HEAD"], cwd=root) + if full_out is None: + raise NotThisMethod("'git rev-parse' failed") + full_out = full_out.strip() + + pieces = {} + pieces["long"] = full_out + pieces["short"] = full_out[:7] # maybe improved later + pieces["error"] = None + + # parse describe_out. It will be like TAG-NUM-gHEX[-dirty] or HEX[-dirty] + # TAG might have hyphens. + git_describe = describe_out + + # look for -dirty suffix + dirty = git_describe.endswith("-dirty") + pieces["dirty"] = dirty + if dirty: + git_describe = git_describe[:git_describe.rindex("-dirty")] + + # now we have TAG-NUM-gHEX or HEX + + if "-" in git_describe: + # TAG-NUM-gHEX + mo = re.search(r'^(.+)-(\d+)-g([0-9a-f]+)$', git_describe) + if not mo: + # unparseable. Maybe git-describe is misbehaving? + pieces["error"] = ("unable to parse git-describe output: '%s'" + % describe_out) + return pieces + + # tag + full_tag = mo.group(1) + if not full_tag.startswith(tag_prefix): + if verbose: + fmt = "tag '%s' doesn't start with prefix '%s'" + print(fmt % (full_tag, tag_prefix)) + pieces["error"] = ("tag '%s' doesn't start with prefix '%s'" + % (full_tag, tag_prefix)) + return pieces + pieces["closest-tag"] = full_tag[len(tag_prefix):] + + # distance: number of commits since tag + pieces["distance"] = int(mo.group(2)) + + # commit: short hex revision ID + pieces["short"] = mo.group(3) + + else: + # HEX: no tags + pieces["closest-tag"] = None + count_out, rc = run_command(GITS, ["rev-list", "HEAD", "--count"], + cwd=root) + pieces["distance"] = int(count_out) # total number of commits + + # commit date: see ISO-8601 comment in git_versions_from_keywords() + date = run_command(GITS, ["show", "-s", "--format=%ci", "HEAD"], + cwd=root)[0].strip() + pieces["date"] = date.strip().replace(" ", "T", 1).replace(" ", "", 1) + + return pieces + + +def do_vcs_install(manifest_in, versionfile_source, ipy): + """Git-specific installation logic for Versioneer. + + For Git, this means creating/changing .gitattributes to mark _version.py + for export-subst keyword substitution. + """ + GITS = ["git"] + if sys.platform == "win32": + GITS = ["git.cmd", "git.exe"] + files = [manifest_in, versionfile_source] + if ipy: + files.append(ipy) + try: + me = __file__ + if me.endswith(".pyc") or me.endswith(".pyo"): + me = os.path.splitext(me)[0] + ".py" + versioneer_file = os.path.relpath(me) + except NameError: + versioneer_file = "versioneer.py" + files.append(versioneer_file) + present = False + try: + f = open(".gitattributes", "r") + for line in f.readlines(): + if line.strip().startswith(versionfile_source): + if "export-subst" in line.strip().split()[1:]: + present = True + f.close() + except EnvironmentError: + pass + if not present: + f = open(".gitattributes", "a+") + f.write("%s export-subst\n" % versionfile_source) + f.close() + files.append(".gitattributes") + run_command(GITS, ["add", "--"] + files) + + +def versions_from_parentdir(parentdir_prefix, root, verbose): + """Try to determine the version from the parent directory name. + + Source tarballs conventionally unpack into a directory that includes both + the project name and a version string. We will also support searching up + two directory levels for an appropriately named parent directory + """ + rootdirs = [] + + for i in range(3): + dirname = os.path.basename(root) + if dirname.startswith(parentdir_prefix): + return {"version": dirname[len(parentdir_prefix):], + "full-revisionid": None, + "dirty": False, "error": None, "date": None} + else: + rootdirs.append(root) + root = os.path.dirname(root) # up a level + + if verbose: + print("Tried directories %s but none started with prefix %s" % + (str(rootdirs), parentdir_prefix)) + raise NotThisMethod("rootdir doesn't start with parentdir_prefix") + + +SHORT_VERSION_PY = """ +# This file was generated by 'versioneer.py' (0.18) from +# revision-control system data, or from the parent directory name of an +# unpacked source archive. Distribution tarballs contain a pre-generated copy +# of this file. + +import json + +version_json = ''' +%s +''' # END VERSION_JSON + + +def get_versions(): + return json.loads(version_json) +""" + + +def versions_from_file(filename): + """Try to determine the version from _version.py if present.""" + try: + with open(filename) as f: + contents = f.read() + except EnvironmentError: + raise NotThisMethod("unable to read _version.py") + mo = re.search(r"version_json = '''\n(.*)''' # END VERSION_JSON", + contents, re.M | re.S) + if not mo: + mo = re.search(r"version_json = '''\r\n(.*)''' # END VERSION_JSON", + contents, re.M | re.S) + if not mo: + raise NotThisMethod("no version_json in _version.py") + return json.loads(mo.group(1)) + + +def write_to_version_file(filename, versions): + """Write the given version number to the given _version.py file.""" + os.unlink(filename) + contents = json.dumps(versions, sort_keys=True, + indent=1, separators=(",", ": ")) + with open(filename, "w") as f: + f.write(SHORT_VERSION_PY % contents) + + print("set %s to '%s'" % (filename, versions["version"])) + + +def plus_or_dot(pieces): + """Return a + if we don't already have one, else return a .""" + if "+" in pieces.get("closest-tag", ""): + return "." + return "+" + + +def render_pep440(pieces): + """Build up version string, with post-release "local version identifier". + + Our goal: TAG[+DISTANCE.gHEX[.dirty]] . Note that if you + get a tagged build and then dirty it, you'll get TAG+0.gHEX.dirty + + Exceptions: + 1: no tags. git_describe was just HEX. 0+untagged.DISTANCE.gHEX[.dirty] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += plus_or_dot(pieces) + rendered += "%d.g%s" % (pieces["distance"], pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + else: + # exception #1 + rendered = "0+untagged.%d.g%s" % (pieces["distance"], + pieces["short"]) + if pieces["dirty"]: + rendered += ".dirty" + return rendered + + +def render_pep440_pre(pieces): + """TAG[.post.devDISTANCE] -- No -dirty. + + Exceptions: + 1: no tags. 0.post.devDISTANCE + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"]: + rendered += ".post.dev%d" % pieces["distance"] + else: + # exception #1 + rendered = "0.post.dev%d" % pieces["distance"] + return rendered + + +def render_pep440_post(pieces): + """TAG[.postDISTANCE[.dev0]+gHEX] . + + The ".dev0" means dirty. Note that .dev0 sorts backwards + (a dirty tree will appear "older" than the corresponding clean one), + but you shouldn't be releasing software with -dirty anyways. + + Exceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += ".post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + rendered += plus_or_dot(pieces) + rendered += "g%s" % pieces["short"] + else: + # exception #1 + rendered = "0.post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + rendered += "+g%s" % pieces["short"] + return rendered + + +def render_pep440_old(pieces): + """TAG[.postDISTANCE[.dev0]] . + + The ".dev0" means dirty. + + Eexceptions: + 1: no tags. 0.postDISTANCE[.dev0] + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"] or pieces["dirty"]: + rendered += ".post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + else: + # exception #1 + rendered = "0.post%d" % pieces["distance"] + if pieces["dirty"]: + rendered += ".dev0" + return rendered + + +def render_git_describe(pieces): + """TAG[-DISTANCE-gHEX][-dirty]. + + Like 'git describe --tags --dirty --always'. + + Exceptions: + 1: no tags. HEX[-dirty] (note: no 'g' prefix) + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + if pieces["distance"]: + rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) + else: + # exception #1 + rendered = pieces["short"] + if pieces["dirty"]: + rendered += "-dirty" + return rendered + + +def render_git_describe_long(pieces): + """TAG-DISTANCE-gHEX[-dirty]. + + Like 'git describe --tags --dirty --always -long'. + The distance/hash is unconditional. + + Exceptions: + 1: no tags. HEX[-dirty] (note: no 'g' prefix) + """ + if pieces["closest-tag"]: + rendered = pieces["closest-tag"] + rendered += "-%d-g%s" % (pieces["distance"], pieces["short"]) + else: + # exception #1 + rendered = pieces["short"] + if pieces["dirty"]: + rendered += "-dirty" + return rendered + + +def render(pieces, style): + """Render the given version pieces into the requested style.""" + if pieces["error"]: + return {"version": "unknown", + "full-revisionid": pieces.get("long"), + "dirty": None, + "error": pieces["error"], + "date": None} + + if not style or style == "default": + style = "pep440" # the default + + if style == "pep440": + rendered = render_pep440(pieces) + elif style == "pep440-pre": + rendered = render_pep440_pre(pieces) + elif style == "pep440-post": + rendered = render_pep440_post(pieces) + elif style == "pep440-old": + rendered = render_pep440_old(pieces) + elif style == "git-describe": + rendered = render_git_describe(pieces) + elif style == "git-describe-long": + rendered = render_git_describe_long(pieces) + else: + raise ValueError("unknown style '%s'" % style) + + return {"version": rendered, "full-revisionid": pieces["long"], + "dirty": pieces["dirty"], "error": None, + "date": pieces.get("date")} + + +class VersioneerBadRootError(Exception): + """The project root directory is unknown or missing key files.""" + + +def get_versions(verbose=False): + """Get the project version from whatever source is available. + + Returns dict with two keys: 'version' and 'full'. + """ + if "versioneer" in sys.modules: + # see the discussion in cmdclass.py:get_cmdclass() + del sys.modules["versioneer"] + + root = get_root() + cfg = get_config_from_root(root) + + assert cfg.VCS is not None, "please set [versioneer]VCS= in setup.cfg" + handlers = HANDLERS.get(cfg.VCS) + assert handlers, "unrecognized VCS '%s'" % cfg.VCS + verbose = verbose or cfg.verbose + assert cfg.versionfile_source is not None, \ + "please set versioneer.versionfile_source" + assert cfg.tag_prefix is not None, "please set versioneer.tag_prefix" + + versionfile_abs = os.path.join(root, cfg.versionfile_source) + + # extract version from first of: _version.py, VCS command (e.g. 'git + # describe'), parentdir. This is meant to work for developers using a + # source checkout, for users of a tarball created by 'setup.py sdist', + # and for users of a tarball/zipball created by 'git archive' or github's + # download-from-tag feature or the equivalent in other VCSes. + + get_keywords_f = handlers.get("get_keywords") + from_keywords_f = handlers.get("keywords") + if get_keywords_f and from_keywords_f: + try: + keywords = get_keywords_f(versionfile_abs) + ver = from_keywords_f(keywords, cfg.tag_prefix, verbose) + if verbose: + print("got version from expanded keyword %s" % ver) + return ver + except NotThisMethod: + pass + + try: + ver = versions_from_file(versionfile_abs) + if verbose: + print("got version from file %s %s" % (versionfile_abs, ver)) + return ver + except NotThisMethod: + pass + + from_vcs_f = handlers.get("pieces_from_vcs") + if from_vcs_f: + try: + pieces = from_vcs_f(cfg.tag_prefix, root, verbose) + ver = render(pieces, cfg.style) + if verbose: + print("got version from VCS %s" % ver) + return ver + except NotThisMethod: + pass + + try: + if cfg.parentdir_prefix: + ver = versions_from_parentdir(cfg.parentdir_prefix, root, verbose) + if verbose: + print("got version from parentdir %s" % ver) + return ver + except NotThisMethod: + pass + + if verbose: + print("unable to compute version") + + return {"version": "0+unknown", "full-revisionid": None, + "dirty": None, "error": "unable to compute version", + "date": None} + + +def get_version(): + """Get the short version string for this project.""" + return get_versions()["version"] + + +def get_cmdclass(): + """Get the custom setuptools/distutils subclasses used by Versioneer.""" + if "versioneer" in sys.modules: + del sys.modules["versioneer"] + # this fixes the "python setup.py develop" case (also 'install' and + # 'easy_install .'), in which subdependencies of the main project are + # built (using setup.py bdist_egg) in the same python process. Assume + # a main project A and a dependency B, which use different versions + # of Versioneer. A's setup.py imports A's Versioneer, leaving it in + # sys.modules by the time B's setup.py is executed, causing B to run + # with the wrong versioneer. Setuptools wraps the sub-dep builds in a + # sandbox that restores sys.modules to it's pre-build state, so the + # parent is protected against the child's "import versioneer". By + # removing ourselves from sys.modules here, before the child build + # happens, we protect the child from the parent's versioneer too. + # Also see https://github.com/warner/python-versioneer/issues/52 + + cmds = {} + + # we add "version" to both distutils and setuptools + from distutils.core import Command + + class cmd_version(Command): + description = "report generated version string" + user_options = [] + boolean_options = [] + + def initialize_options(self): + pass + + def finalize_options(self): + pass + + def run(self): + vers = get_versions(verbose=True) + print("Version: %s" % vers["version"]) + print(" full-revisionid: %s" % vers.get("full-revisionid")) + print(" dirty: %s" % vers.get("dirty")) + print(" date: %s" % vers.get("date")) + if vers["error"]: + print(" error: %s" % vers["error"]) + cmds["version"] = cmd_version + + # we override "build_py" in both distutils and setuptools + # + # most invocation pathways end up running build_py: + # distutils/build -> build_py + # distutils/install -> distutils/build ->.. + # setuptools/bdist_wheel -> distutils/install ->.. + # setuptools/bdist_egg -> distutils/install_lib -> build_py + # setuptools/install -> bdist_egg ->.. + # setuptools/develop -> ? + # pip install: + # copies source tree to a tempdir before running egg_info/etc + # if .git isn't copied too, 'git describe' will fail + # then does setup.py bdist_wheel, or sometimes setup.py install + # setup.py egg_info -> ? + + # we override different "build_py" commands for both environments + if "setuptools" in sys.modules: + from setuptools.command.build_py import build_py as _build_py + else: + from distutils.command.build_py import build_py as _build_py + + class cmd_build_py(_build_py): + def run(self): + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() + _build_py.run(self) + # now locate _version.py in the new build/ directory and replace + # it with an updated value + if cfg.versionfile_build: + target_versionfile = os.path.join(self.build_lib, + cfg.versionfile_build) + print("UPDATING %s" % target_versionfile) + write_to_version_file(target_versionfile, versions) + cmds["build_py"] = cmd_build_py + + if "cx_Freeze" in sys.modules: # cx_freeze enabled? + from cx_Freeze.dist import build_exe as _build_exe + # nczeczulin reports that py2exe won't like the pep440-style string + # as FILEVERSION, but it can be used for PRODUCTVERSION, e.g. + # setup(console=[{ + # "version": versioneer.get_version().split("+", 1)[0], # FILEVERSION + # "product_version": versioneer.get_version(), + # ... + + class cmd_build_exe(_build_exe): + def run(self): + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() + target_versionfile = cfg.versionfile_source + print("UPDATING %s" % target_versionfile) + write_to_version_file(target_versionfile, versions) + + _build_exe.run(self) + os.unlink(target_versionfile) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] + f.write(LONG % + {"DOLLAR": "$", + "STYLE": cfg.style, + "TAG_PREFIX": cfg.tag_prefix, + "PARENTDIR_PREFIX": cfg.parentdir_prefix, + "VERSIONFILE_SOURCE": cfg.versionfile_source, + }) + cmds["build_exe"] = cmd_build_exe + del cmds["build_py"] + + if 'py2exe' in sys.modules: # py2exe enabled? + try: + from py2exe.distutils_buildexe import py2exe as _py2exe # py3 + except ImportError: + from py2exe.build_exe import py2exe as _py2exe # py2 + + class cmd_py2exe(_py2exe): + def run(self): + root = get_root() + cfg = get_config_from_root(root) + versions = get_versions() + target_versionfile = cfg.versionfile_source + print("UPDATING %s" % target_versionfile) + write_to_version_file(target_versionfile, versions) + + _py2exe.run(self) + os.unlink(target_versionfile) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] + f.write(LONG % + {"DOLLAR": "$", + "STYLE": cfg.style, + "TAG_PREFIX": cfg.tag_prefix, + "PARENTDIR_PREFIX": cfg.parentdir_prefix, + "VERSIONFILE_SOURCE": cfg.versionfile_source, + }) + cmds["py2exe"] = cmd_py2exe + + # we override different "sdist" commands for both environments + if "setuptools" in sys.modules: + from setuptools.command.sdist import sdist as _sdist + else: + from distutils.command.sdist import sdist as _sdist + + class cmd_sdist(_sdist): + def run(self): + versions = get_versions() + self._versioneer_generated_versions = versions + # unless we update this, the command will keep using the old + # version + self.distribution.metadata.version = versions["version"] + return _sdist.run(self) + + def make_release_tree(self, base_dir, files): + root = get_root() + cfg = get_config_from_root(root) + _sdist.make_release_tree(self, base_dir, files) + # now locate _version.py in the new base_dir directory + # (remembering that it may be a hardlink) and replace it with an + # updated value + target_versionfile = os.path.join(base_dir, cfg.versionfile_source) + print("UPDATING %s" % target_versionfile) + write_to_version_file(target_versionfile, + self._versioneer_generated_versions) + cmds["sdist"] = cmd_sdist + + return cmds + + +CONFIG_ERROR = """ +setup.cfg is missing the necessary Versioneer configuration. You need +a section like: + + [versioneer] + VCS = git + style = pep440 + versionfile_source = src/myproject/_version.py + versionfile_build = myproject/_version.py + tag_prefix = + parentdir_prefix = myproject- + +You will also need to edit your setup.py to use the results: + + import versioneer + setup(version=versioneer.get_version(), + cmdclass=versioneer.get_cmdclass(), ...) + +Please read the docstring in ./versioneer.py for configuration instructions, +edit setup.cfg, and re-run the installer or 'python versioneer.py setup'. +""" + +SAMPLE_CONFIG = """ +# See the docstring in versioneer.py for instructions. Note that you must +# re-run 'versioneer.py setup' after changing this section, and commit the +# resulting files. + +[versioneer] +#VCS = git +#style = pep440 +#versionfile_source = +#versionfile_build = +#tag_prefix = +#parentdir_prefix = + +""" + +INIT_PY_SNIPPET = """ +from ._version import get_versions +__version__ = get_versions()['version'] +del get_versions +""" + + +def do_setup(): + """Main VCS-independent setup function for installing Versioneer.""" + root = get_root() + try: + cfg = get_config_from_root(root) + except (EnvironmentError, configparser.NoSectionError, + configparser.NoOptionError) as e: + if isinstance(e, (EnvironmentError, configparser.NoSectionError)): + print("Adding sample versioneer config to setup.cfg", + file=sys.stderr) + with open(os.path.join(root, "setup.cfg"), "a") as f: + f.write(SAMPLE_CONFIG) + print(CONFIG_ERROR, file=sys.stderr) + return 1 + + print(" creating %s" % cfg.versionfile_source) + with open(cfg.versionfile_source, "w") as f: + LONG = LONG_VERSION_PY[cfg.VCS] + f.write(LONG % {"DOLLAR": "$", + "STYLE": cfg.style, + "TAG_PREFIX": cfg.tag_prefix, + "PARENTDIR_PREFIX": cfg.parentdir_prefix, + "VERSIONFILE_SOURCE": cfg.versionfile_source, + }) + + ipy = os.path.join(os.path.dirname(cfg.versionfile_source), + "__init__.py") + if os.path.exists(ipy): + try: + with open(ipy, "r") as f: + old = f.read() + except EnvironmentError: + old = "" + if INIT_PY_SNIPPET not in old: + print(" appending to %s" % ipy) + with open(ipy, "a") as f: + f.write(INIT_PY_SNIPPET) + else: + print(" %s unmodified" % ipy) + else: + print(" %s doesn't exist, ok" % ipy) + ipy = None + + # Make sure both the top-level "versioneer.py" and versionfile_source + # (PKG/_version.py, used by runtime code) are in MANIFEST.in, so + # they'll be copied into source distributions. Pip won't be able to + # install the package without this. + manifest_in = os.path.join(root, "MANIFEST.in") + simple_includes = set() + try: + with open(manifest_in, "r") as f: + for line in f: + if line.startswith("include "): + for include in line.split()[1:]: + simple_includes.add(include) + except EnvironmentError: + pass + # That doesn't cover everything MANIFEST.in can do + # (http://docs.python.org/2/distutils/sourcedist.html#commands), so + # it might give some false negatives. Appending redundant 'include' + # lines is safe, though. + if "versioneer.py" not in simple_includes: + print(" appending 'versioneer.py' to MANIFEST.in") + with open(manifest_in, "a") as f: + f.write("include versioneer.py\n") + else: + print(" 'versioneer.py' already in MANIFEST.in") + if cfg.versionfile_source not in simple_includes: + print(" appending versionfile_source ('%s') to MANIFEST.in" % + cfg.versionfile_source) + with open(manifest_in, "a") as f: + f.write("include %s\n" % cfg.versionfile_source) + else: + print(" versionfile_source already in MANIFEST.in") + + # Make VCS-specific changes. For git, this means creating/changing + # .gitattributes to mark _version.py for export-subst keyword + # substitution. + do_vcs_install(manifest_in, cfg.versionfile_source, ipy) + return 0 + + +def scan_setup_py(): + """Validate the contents of setup.py against Versioneer's expectations.""" + found = set() + setters = False + errors = 0 + with open("setup.py", "r") as f: + for line in f.readlines(): + if "import versioneer" in line: + found.add("import") + if "versioneer.get_cmdclass()" in line: + found.add("cmdclass") + if "versioneer.get_version()" in line: + found.add("get_version") + if "versioneer.VCS" in line: + setters = True + if "versioneer.versionfile_source" in line: + setters = True + if len(found) != 3: + print("") + print("Your setup.py appears to be missing some important items") + print("(but I might be wrong). Please make sure it has something") + print("roughly like the following:") + print("") + print(" import versioneer") + print(" setup( version=versioneer.get_version(),") + print(" cmdclass=versioneer.get_cmdclass(), ...)") + print("") + errors += 1 + if setters: + print("You should remove lines like 'versioneer.VCS = ' and") + print("'versioneer.versionfile_source = ' . This configuration") + print("now lives in setup.cfg, and should be removed from setup.py") + print("") + errors += 1 + return errors + + +if __name__ == "__main__": + cmd = sys.argv[1] + if cmd == "setup": + errors = do_setup() + errors += scan_setup_py() + if errors: + sys.exit(1) -- 2.30.2

    nqri{1+AAxi|hh8r^;~ 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/statespace_seasonal.png b/docs/source/_static/images/statespace_seasonal.png new file mode 100755 index 0000000000000000000000000000000000000000..c8e18d58a97b0ac1c2b6bf7901f55d3048ab8694 GIT binary patch literal 75748 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%0DFahY`Qxrk?$ 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 literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/statespace_structural_harvey_jaeger.png b/docs/source/_static/images/statespace_structural_harvey_jaeger.png new file mode 100644 index 0000000000000000000000000000000000000000..3732b5880ecea88ddfe46b827ceac45b45492062 GIT binary patch literal 199300 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

    xOdLP2# z@xT1ID#O1fdZHW_PUwU7Ay^cWU48rUR~-pP25;2muErZG5;-n050USP`V&t2Qg0~AL#2+6{ zcq`zDc&m)KmaJK38%nQwmc)CYZ{8p7~E-xm;nZsQdyGmAvpDeBwjr$7aZ~lF- zp>*DGr(`k-TS^4p<7HBJi-V6|nqH*h^J2zhL6Q642shYARWi)k_gvX8eFf!0SU6q< z9KlC>(*t|kelNV;q(Xb+B*iNjR>`&O#Frnuvq?~8lBzRHjW6?tx3{;@WI51ue|ksv zeZ-phnzpde{lX!a(d%tC7n91>T_FjU?xp{ zft$-v;u0shFGj~M{Yb|ec@Pn{VPbX%;8fJ*Su|6KLx<5$n>86GvitN%#6a`a{$JnR zisq|_`9*YR72(HJ_XS>KM2s#vLmXudm6SUMqpnq!){Bp&?-OTdtltJ6E393h>|v+U zzmE0>R0G~EQ`LPYU3s3_s}1u!1GhAKE*QX{@az7_lhmr6zRL@?r$-Rv|D(dFiGXc=Y(%ne?7o}7u1$j zp&9m^a#BZF{?j&b>vl4H?JL({2w9Wu&O3U02sj1jke0Zv$O^lZM7XzK?>z*(v@0Gp zrB&GxSy(ei* zid!k+^EH^rDGqbV+HSxYkjo~Z_0aDv0?RB!9(bb#n2QU?Sex*Sg!=E!IW`Rgz+kgE z{S9Y)13Yn2GR$KmEkr&2CE1ci?T?iHvE)$;3vk6wd-9L_{F+a%Ml|Y84lE=q)OWyA z0^rEER8q!G3Dj$=7Q_!XK-~5O#_mShXI>V=4oM_R0hB{6UE3IE>K;dzv5A?@J=XqO?}pfx{8XLBDM4tYDBHh zLmd2ICPU_{HZ0tMOwwypWwxs7DVfCbTQD&^VDQwl^*b_q)iu)>44%31NyFvi#g7$u zToyrVO32{nk_Oi1ZZ#zIT^pn3YVVY&sdSP!+F{aJTcbs*tX*d1P*=fp2-Uv!*jMF& zB%q)1sG1cmoE(zi%!p%3dsWsK0n*s(Mr(!;xwBS}150Y;6aMQrovh!CIxq?yUR+#{ zZi!a@GW&up;cW0;o8AS&TuRLmZ&B){~Lyh~kcaZzf0LPpU;Kq}(cD#4=}yFuxt zg$uSX&u@XhM(q^P2a9FQn?9p26Y~{U_p5f_Vsxkw!=ne)7#XDr-EOOeDhsW*lBhJ}|;_$ge zttarf+oZJ*>{7GXA5bIj0o9#^+nnJ@*Ja63AbCg}yv2=rE~Wn{LO}tAo+S;Dh*%*9Li5+tPYw6}@KoKSIY0Sw(#Zso$1KEOLQyjwM0|6trJH?0t8-5O3K6 zS+#Q_pOF}7Yn+LwlWi9X?B5d_&vNHdnJ*N(V^^0gdfp?wbP)jYYHG{wr(8o>UYb0j z!e3&}mTMd`gr_tcMPmVnSzW)SBH7?>ahOsNQr>W8 z8XN;dl{-u#+SS_2ob}SzBJrQqdy|9U5Sf!SZ7W*?Kpft$X}{TZBo`V=RTo{UNWonv zTU+blwXXQno(aaKoz@Q=u zVE9DXEcon2(Ryw5uAT`O{)PdZigB)u3=1nkhWSI{_du%_KJ=Xf8DN+*7W_MT8g-o} z4%zbgRyQCq7zVN41bVY$ZwT^%z8P{_1VKAP^-OnEe>YOP_o&@4#F3}K2BAKfC*k7g zn$EvtYx`~aKQt$_H%&jK5(-$QR)22W{1c7zAkvgRA~+tip?_IDE9RT1i+H7!@+c^S zQRNb1c~=d)@VZWW;z`c)qXeC<)YUqguLVy5i0-2t$@&*&L`LVoi1 zAB7}P>f(D(z^h01DYWLi@AVDBGgeJD+(!C(T(;U)TT$WiU&4lbW&F-=847&2&`SJu z`iGk29504Otde}`1oqN{`gxGADdJ?>{jv?P?4?rol0Oxy8KB~L(TNIKA0p_aT`)$5 z4OT*i|Iqa@db2@7suxBK%nuez))+Ny$Cl9CMJW47v;rqjL&wBYk34<7Sa&Lzgn#pRs!J8#Osz@7z zm&bcTl*e-oc2_mMPo|P97e67DW=d&x;ivf=UlD#7CD?r^CVM|N@B_Y5MA%rRDCV40 z=pL3-Z{*nFDHvpGJPUVZ6I-YAkBx@^@>e}xz%sw!1g_yNv5f&FP5M=@)%^s;!30c1 z=?7IQ+3T+{KsVzobJutrRxhg0TINeQi~toYDxdxfAh?#l4d44^0-cqsV5Rv1fR@kI z`2$jVW*9$gqDBIMC)A2R5KzyC3!Vy<|5(r;>3yk`TRZ>(E97coO6Q(vquK;OHoW#z zeu(e{_=PYAu$P9c-=7^%XTrObx<>DtB#YDw>QV;O|x1GH+f}x9Y{C_fN@^GmE>Gv65T-!){4Zs`3sKMTCh9 zckuF;GHfrEG<%0xqEL`tN5Mg5&C{qmCPyRyhVIgU95$~p$?jake9xA=8+%nVL@aU> zk$qgD>G@Q<2P6z>XZg{Jp`}}0SC`?tbXsVB*dTlfe8*aupx#{{#5F#Q7kQJ+`-$<2 zH^&C3XLRNCtA~=L7uIEZt*$J`zBr0tHddiYq^v9)bxE(hIkpRLsq#0T%z~$$Z$KP> zI9^{pKo_*|LM(h@MNF}xWHb7BS7tIx8z`(4QvoYBI3igBUh#@@t>4Rn*Gwbm*b}W& z1KtKWnyn`F9#K!rvQ8&p4&(*W=wB=T6{u8cC<3yM>2JbV{Iuwsq-K|{>Agm7B{sr6 zW)svvJ>cus^(`Ym?R+=>(N|rWIQK8o^KxOwG(Aoks&h5s`6aa>Nmce-{>1kQ%=k%D zgKW`BF9sDX1$O&xy%uMOt$|Bwy47ec;3Yhm%$HVM`=*b>SShtS~X_M_97e@Cl=eBuw88;8HU`7s0EZ;7%X#VVuEsG z)c#tIy+Lf`$@7vSqpfYpEE#WhKd0et7`59uF?<^jcvO3T)-y%__j!H=)nMbZ_<@3c zQEeLzE!P>et3`2C#Ww(1;NT)KNPp#%(bJt(iXCiAKw?qC^GbdW&VSN1qV>;3D%TNI zfi@GAB;H>;W&(1TKAHxe9(ZjqB>*dYNa#MLo(p&s6VlH8V|zwuvQNaRq1~V6?wI>! zHl+l)ou=-9TeQ#Ue+=ryk?1uFdt?96qJ=o>qjoedbg3AI3M>JxevJagw11T9uJq;e zLo-X8D?a!w&?uMi`kPl!Y_;ukXT9>S^__w&7WZ#?`&G=W9v^F^k!&t@-+0Ba6=-ya zeD2$NYtO3#KGAD(QJ_bG@EKRU9=<@Z610Atw8J{zTd#C|O-aijcQ;=6iT2L1&ahKi zTX(R+2aq|ZtZm?(bVRr@=t*ZgU1G5_Le@djNjM%|3Cp(6drFoQtoTMk@?0CiRp5l?@i&*uyz#`zJjIuT4p^-!M6k~Q5O#6y2aM^nNSzHw6zkM^ucL4hvf+?j7w+)ds+Y%f34K>*c%A zFPAMpFtMJhsxI^;!(3a@u)<{2_;=%enGrHy6|=tM8|Nl-$pe+6r?wcI9KN%#XV%#v z*0R1TT~4+1EtXPzy^t6qC z9N>eU&B>ZLIS_n*Xm(s5iIoeOdZ9H2e@y~&kE@TNtEUZ(D@`GRfyW0&8Li&Y6V8N| zq#OSJR+ishr31TFNZpfj>6AT^NNjjPJJ4%pqo1Q3@6?nP8Be`K!9)-m(`vIpKl&vR zaZ+g(s{{{RJ)VAR19XVgGe28A1){R5QGZI`Ec^qBfCtmm!5ipY%_$GDw(b|MG z6hL_WHetMe9Kg1RP2#e}>(9bt`9fxR9xA0YGpfz&(;gFeGuIRIx8Ix?IdshW3>#rn zXcK$WYlQ4F_8{W@1(cv)!Y0pCj?R&k`4`X@#Ut0AOw>TWnJ?DdQ6{jz@I?n}V|LdX zK`g-1GVt0+yZp`nsoE`q_?|rLdhbWv+B6w7W-pX|kWcW>G|u*VI>KmE1>^ z|39-;uG?s=`8a}|iMxBh#sU5y}x$bbq_Y*-(D%{w;9gQTO^dP6~a%~RI!vAglhBzkgI-- zj(`r7PZy!f zJUp#enT&ZG#v&i5^yiNq{jNM(O}t~C1IsQ?JZ^|3 zE6fJ)EeJjUqw=@}1v(uYI~tkt&&|?T4CwAc*|-c7t?dhvtl}R(^CmFmbJ{e4Ov$H*`fji(1nHW`7+=096rSVrM+qX0U0`k|#Z_tIqn@-wH-X@_a z586`?8}|BoyVE#(ThshZJh6as6jV(5L*NZ0fakbL|9&t?9B6M`WzxXIucIQOKT9n6 zL|0{cufiUt{vJ)QO$UoJB$JcbQybwT1I~-`ZRGWmhqv(*_p*q;+SJHcag(-${k8T zPvKX#oE9pp*b7;}nHIRTyTNWyMhb9aq1+JQ;*K8fkhc#^TR#)p8ENhn0<dp4nQj^9Y4N~sT>^BH208MQE+CHg6Od?xUql>(w! z;CX@K0SSuL@`f~G6{_p(k#4-}?i-|=)2K$$(M{?BKn-fZN}Dob(rv~;)8HQYhXD~r z4j&DTPO48CZG?ef4s8+VNP#nTV^@asT33${nT{r5Fm_&u$6>V;g|XFrq8RPCR%<)Y zVVyI_QH}e!_Mi6861M9{D$6Su+%}oCGctnH?Bx~ko%TTmqH3*GPJesR<6V~+a~YYR-(|9yhlv*0C5$e0 zavR{=s5Wh4eg6Z_V-&d5-W7m z1t}sr_mjQcq#yTt!=3>tSX4b<#wKLmT%NEJWY2I+_C7ff3A4^+#$4D1y8%0QahELr*^ zvNrdn`ZIg-VL`grWp)1to9LIX_*BAR>8+nrMFFVo+fO(uPv z9hnntE_)VZT_0`7uL0i*NDY-U+rzro0hN!9_!w$RvVPYbCC$c-(HU4HU0O@Miav6S z>{s!Q*a!B-$B=FR35gTMtE6Agp_M-sO)YLb)FPbWmv-~&ua0#Yod~^m&vfv0EFd) z*yKA=<4O87^a!di5tee-;tBmCYt|pXZ^dQp(SRd#-)CN%!_CAC0^$@R>))WZ0i5MCkG~ zb6=vIS!0v?2X|=?m;k=#t;+O%0VzCYh~gtbqRjSWP0~hlU4PG(>gERP+JsGlj6+e( zl(sjW0>FY^hgk(Kmp~4c3}I4kdwr_?+nRv;73=kq3?tg<1$y%LAs*&LX3AkX+%FXs|2g>_11J}&)W%`*HoGCp6%J0W!A+VsQ$H9gY(+m>1%@f zR=0#kgd$M_GtFU^l|DIThZ^u0XC}#8`Yfy&_ZzE+hJ%A7K}s~7#Q1uxhEYqhmRe(y z#JA9jKTw5cGqpf&RL0BVIb8YX=HHj~v(w~hb$4qcZTIPnLN_Pma8b5~tH#MUome^h z7;=t}T_`C#7jDASnb4*ozHmYH!%46`#JRSl#IVz*o)#PO@15Z9Cplp#bgM+ZwDiK2j4`p7-JKJPGS@uJ@D3)4zn6$$N%w_9nHw`AZ_CM(5}&!^a@C?^`+rmHQ_A=yVvq!4`;IV76)rj)*I0BIcjalNaBbIyySy zn)QhaHh9wYMS2Wt)siO!2d{T(MPBJ$E7zsh5)o?skuNxU11)G9x&DX!UoQ&uUMBV) zPz5c2$zIRCd$pV?gy?{CdA9R3MqJyA^pqB4mCb_4T{YQ9FgLmcr^?p#u7dH!_9gQ5 z^%iNPj{LkVi%?yEplZZu=ke~wXnn1=UxhQ0>ERVG;dJ-QSJN%oSRRy^>k=o>V0@eq zRZ)@dq-DL&+!^=mg*jPcZv5ye>}i+bsRR-Br!Qf*ezd3>;lZ_bX{4&Ty}W!SFW{us zNNi!vluLVOs`k`#-x%Jsw=iI}%mo7~a&ivN@`I#=OdyTZ_KIr`t$6}(59SLbEiEnd z|40M@k)7v_P(A)XspoND#QjN#pl5mF=_wfWJEohi_!*&fTKKv1qP2ixE}5is?pka& z&VWNY&m6Idu)Q>(P#?K($uQq!_->Q^`Pz%3yT{TDqal?WDz|2MzB!Z%xf z$)+y8e>^;aRgAiP76Sn^iSocG`@lJN;;r6MBv^La9W;@_8L(Ez-a>sQ+LmvJ3!qwo z%M@6K=kX7)OycVfRP>a16<~Irm|5i!%RreYe>{#l9{nD*?DG?c6G(QwU+d=gWZ{5B z!%MnrmqP}sHGd7o5rwo#_R)=nHSN%2Xue~bj4g<-h?nMOR-Jg=(%y`4xn%%=e(SKGMS1|5^8L7YHNkmX;I9VkF|;Yq%Gm> zed*ALv+1u@DRf*Yv3`3pw}IPzg-`*)aewC%8Jk8mI114 z^3C-*wYjmmwC8HOxR}+H1QH%1Oj{K53~KhqFEvTf^nBin4~h@@U~$l~V6n=*)b(f# z4rONMpfgB3Ignl**o&I-bYg-2zwsy4VQd^AJOt@1<53xA8>{tgbn!Gk%P0Glnfc&l z#_^mY+Bmlr0Wax@@OkjBaI1mu^xW2$c=Gw`a@qV9|HIs1XJ}WB+-%97Ma8#8`K@E> zi)@4j&{mH$vUiRzcyeh&fu)Pg4r2n>>8?c0+D{FnUt;n4Pv*Tk=C5Ktuxrh8ZHJCB z8}w~JV&g+!#zyLPlyI4A8Pmb9SfodhErBr|Y0ST)%>PMKxWQ*O2~voTZj-Z0lH3wO zsz3S7Q(27wIhS2t;ZPi+oyXPag0?Y3%EM)?bef6_p18%rqShHl&T#Gk{_P4@UzxyY zW{^6$lG=}`@i9$h1wk9C!hm(GhZ|57^3jEmIn;^At=dg~d7;RjEOZhhfSkNQ{G9$o zLc=72?fV`uFqZI zf|}YrpjE1iwWRJyeZG^plW7dvZBXSn$``u3oL6;w*pV3%9lE58k_P<^`{W)tl4#oK zvu8p+JCVbbSDjY?8|r(d#u1d{?|yrr#chaUl8V8dZfq|>>-C=p#e<4$E++59Al2C^ zQir@s?dVGwFNeox1{@>*yEK01{iXsa3z|hhFE-PdKfR320MlVb_6qxxFS#T#!2b7M zJuc?)N93!`r|yeQZpq7rz_PuitGtv(F(xM3?c) z`tZJpbQRG2TYL>+-)~TKGcNnejNCIk=-cj=Mi|JV6OM@q6D+Lu!ynAK{f_}thbrX7 zeum)VE?7HFQ79s*3D){LH2Kw!nUJi>VIqseSnuuAM!W#1xYgvUP1t@JGbxK7iH_&H zD=PpFQDekf81ZqC$}6y-4PWwqio5Q&Cc1S?2PqPYgdUJ8Rf_ZyniLUG_(Y{DARG>oeC}KvA8H4EK9zp41QLk#=%J)RuAPUpDO8Leg@TOdcy`m(s< zCA@rK;Ls^XD=I@w)vzrkdV9qsaXW z-LlNB7-Vpg+^awL{&G~Qcb$VU&TUl793`sNI7lnb`eZpdPW1SSsB4T(qOnT6rX^_| za-rOdYi~4Hc{rRx!d>1tx>fG!Jed--k&eQEawqbzQ7WyptXwT5@Px_)n}US>&k8@O0{KQa+xND5Sq+P zXC5AQ&&1>$Ag{!VyZvH)k*9^N9vcs}m>9eQuQh1kxPiX!F%0{oKtHOwGaPV{Ho?8Y z`v9*&-yrQh%{!)Yl`u7_Aylb8SnI z0yUG!$z{dT9do*SJoW9~B~ohJvicT!AV@x;xv77XP$Q z^*p57?wKofOWUD_*^@&hgD1Z|??Ngwf?wYu6x@BKg5Cs7WG1!WFZwd7@5i}5oyH__ zDL&w$0a9!Jnn#!bKVc*QS=*p)pq0E-lOhAx*VnNd&mdo~JRbR>$2m7lquZccO}FxW z?Y0FoOj&p&BjaPRdNbPrFkcr;zfot|#B=USk0%zp;4&-uF$#HWO7J#%0SH=SfE7tRhB z1zyyGn*mPEIwxm+TE)@&6}mXNTiKSDlgLNPzx|jSZaiuA$K;o<-Br3w(L9v_-|S8J zrido6GufD%3rM=G4n3bbcPiFLq=Y_;?3Vlb=H?)M&hro+V}30w9#T`*`esh25~%+y z2yQlf&rZfk|C;E0+vA_+5>33g$DpBpuC0?5tNgo=@x__mrRf*BvDS=$6sdR1TJraI zss?)unGk06L9f?70LC@}YlcmncM^SQwI5KPWMrZtxQKZl5RMO|uKLXPrxbrcC`55* z-J@PIAn-oh9bU7Mt^8Eqa22_c1M|4;GgC@Ou0M3z1OBr$s=UUsU6PjkDkul#nvlnK z4u}r@%zA5`#Lek%&X8t!M)1eM1%>IKfufWm-r0rg z;D~EzKcM_qx+-zS!7;d9U>>LoBr%`;EF+4Au{*CZ$qZ$95aYNCK+-br!-tKJU(b4^Lk-K=zE8aXYCFe!ag?Fo{HluqXM>ub3Fa)PUP*-v z4AM`Kk@e^mWafW-JSZh4W_2^Tv)n9qazLVQ^;&(f6)M1x-x@ zJf59ewcnTOWHUqSLw-iDITfNX+U-*>)yn3rwnvqg<-M*~dLh&gz<6KA^yaT)DtBLx z{yblZ1orD~g3=>Mdo?Ns&UcXl53RDilW|es2I8<4+lL(;x9?@B+<&RC=Ovp5LKj`< z;}=AbG*Y>x_1!So6eF`b(POL}m{SJt4kVeLTUIbunj~uWD91_bK8z6_REI?!CW|!7 zn`C|lOrCkXx|zI9TNd>5j8F)G9(aG?hMyRJ8mtX;p8hwVF!h}Rqx_3{-oPKE0oV*p zPXM9>J7v5^BrrX_OE&-cy~)iK#W$q*h1E)%!UN{rIzfTJf;y5(FHV>?xq#x$0o&*T zzk^Y5TDKotKy8Jjx(g{;9IK$PIyzM=A2T&!PJzc*nx-L71XpPnM!b&Rb zaNU|eLN%WUIa?r_WRPpTX;-vTc;QePF6o|I_AaWlOPRA*wO@SXieqxzWR1%H3yhMo znZaZ00|TiBN+Y4WP?U)+_RE*!ARgGRZ@|F}nuTzx!9V7@(zma1#VB_xKR2SQryJC{ zOO=|*o~vcnz(kYO?XGj*g0wVC6Z?4WS2O=*mrJEtrh1aiPGV{R*((+Q?V-l+FN_z~6C*nDJc&n>cuTt&Pj=2TZwry#JqGJ~M! zjB0-w=OtX@5>1fopnhUWDuy-htpS&UpS}Zv22pPKDcxl!iD^_9)AoodkPI2}2Aj%j zzBT*Rl5t$jJhJ$7g^tlnkjGfissruDEj;CsmcFI$r%xD&T=6u`$a&|+Y4r*fb1Sv^ zM0V+AZcmzZ)1#=iG5t@k*`3stUku&8o4Rwq=@EFsikpJqV!WTz2<{` zBqZ#w4Ry6Fe6<>yo5d_GQAA93cKk4yS;^|JubQOSX7pIiLuH)Oirk1P>K}=A6;)EU z`9*paud>$HPh}*~s(6wUY5Kr*eu}{L8E@mr$mOGtjx~=`L?HTiy~kgi1xrsU78Lmk zU5V}MS&lq6R9G>uY48;+RVF4F|IwQu+_;AGn$Mzm6F6Pq6~*8r-xPj*$f`q1TWY2x z>m&%FO#>vacm|;nH2Z9yCafk>?7tlt+~G&l4zTS>9qufez7jnUM}6M|RmRiW@j#h3 zZCmoYUsZGTJl!n}`E&lR^}GHA)|uN#+b#_bYkvx&W*97~dATu$YAwN@NE^OLcpajN zan|WWwK~2m?JGmuFZl?#xFOevoWh=~JBRkT@h`DtBc-#jaqmAv&(N;#`4OQMSZQ}S)wGKZE|hPGus!|+i#FCzYE zi4Z3pnrmpQ1O@?9K|w}F3LgciOU-goMn}Q964Tn^J(+ZzGu>EA#Y7S-fVJ{ut>`Ur ziys(I?G`SObIaO!cHem^xRw#Ke%S;^7++lJSvKmZmTQx<850(mB^t}pDubswkZX;K zc6o$0>10~qaZT-~P z`&&sOMkv$ju!Z-lL7{ku4}`<)?Ucmf+R8^fH{6TY&XisnPxB9Lcwnz5>%%m=dh=z1 zQqEsBR7?jE`{O4-c?o??2SZHo=TfiCk}vH@y7YdYraQ}7Jnfwa9H6$5I+wkGWNlOn zzL(2Ss0&~rG>7c8O{t&mehNN2+X?Fk*~L)LSBL%pDWso?}9syqC)_nV;%^2H_w6d-p*;B{$zCDoUYjh@I-IG<9^5KYgws#ERVk# zA=9vZ!1ld8{A4tsy;#thuriSBdrBM&^Iz^mpq%=x=C>Lax3`0dZXJu}lb|)YKDAMD%4b+5t8A2EknGZeLDrcVy-l#k_*3pR^q)ZUH^{UY@ zP1wa6Sa36KA&TzSH)no05XN@~#j7nO%5LYBDFHeu~p#fG-d? zTjq}Y09)e#Q_Zsv>v*8PNHdV}H_bWHaMu6qWq9jF7CmS5q@PCkGWiu=*-&uxIb zP`OHZ^6}%x>?$CD^SC@reVMz_u+ObIlF~(lVTCL6?)lARZd?olR~bQBpW|vq-Gp_9TIHawlz(NIh=8$T8V!_6Ac*E9x42OP{`6HQnV2YA!Ezii~8i~FN|KJ z!LJpcjf|DAFJEHsz8);>r}EfD> zuOv^)h#zA6hWf@*GLnr2Yz6p)v_RMUnH&>9s8SJ?(MKO{B6znJLQkFx34+obl9hYEPECo| z9Dk10SXnr1KWqZ%ZR0?=MrvficLT7*DB{$X3l^4Z7aCRJaB6rm!a4Qr+bWO+6r#h( z4?K%^7S~b%UI(YYderBEccYwQe?)Q7m!(uId;y_(-q@Sa>N~&1u0wAKq~xd4pN=CN ze?-vD=`gC7*gmJZy22{)^giK9Bif5PYv!@iXzN7qy1F3KBO%j1M*WnY}gNSh?(~ZkVL`B*2~`m z#Ayg;p)s$SU*rR}AD*Tt2=letoqV5~12RpONmtrM0jRBF8>qW$HUkPAWEJE}lsFTf ztoP@gV^rO|o?)7QnMcK9h|7t^*y`cKIe>xihJeX~<;giG_uf|VdF0^ryIyiy(yHE= z%evKvdn`wBY`njl$}@?|)W@ez;7=gr8pL|&fU^I(teR!DZDo-5gP$DvYcG250f(?- z(WlER<8!(=9vE15r;x2p+NvLQ9D4z@1gaa+M@B`;uMd~F=1rmMfCt+=UxBj+O9Q4gX_ zp7ZeDf4qsvqqZD`OxrVF1HVGdxnt8mfDGuyQrXf9!4v1xH#qlyc^pMtS^Eqz_AEeB zC10cN7eRa$i3*1*P$*P4)y;E^9^R+8&P>tj$}UbX<;W>Z0EmNcYnD|Onk&r9-;A&F z(s!s2{dR+gT#sVcr@yvfLc?!sLoY-c8R^wEM2m~Oes-@l5yU}nQ5L9#fQuBU*5a?5 zzx;zU4ZE8aeCOOAdbk)CCPYBmF7@%P(z1!vR=hTlb_xH$AL$Uc3T&)Z=O6a`?$bQK z!^K_(nKj0&=;+EEBb6NaAWO!r>_<5s?GI#Riq!PQOeVB{87olb86`WrC>3z6@Gf6| z6pOrypoMpym7((ccVm@;@+DQw4fjgJ38X<~k5@9QFN0jgdSha!)Deg1#y|ygwcG|Z zO7OOpY5y=lY+K_y3(UHv_#?`#bz()@%iJs5dbUi2l(?$58Z-gzF%m!oih_R)soG}( z!17);+n~F0Ebs+Ie-Dp(ia%fa*s)R7lFmMwuWq%Mi%6Yjpb<>EJxBtVO_RKDJ8stY zt0;jxNh%cfQd@&K6mmQFVhx%H@*RvBLsM6lx=bADgt<~*w!@tGKNpk~##jCzf^7q} zI&=ZQsnTrT_F&JvUhgVeWtwWzJ4|PcJC|J=du8V%P3gs<{#IprkfqigwR!%r$^@B z-qUUN4GE1h05pZET1Jn2<^PCO(6fnngGJ#8CV< zJH|6^i2j81BHq2j(aAzG9?hN)7{j@rY&BSFCs0R2Dd8fcWQVJhT?)&j$|A;KgxG?i z0X;=JROnU%85u8bZ&cOv5cf>$I!7?*#9?hDjRdE>oG53Z(47FKq{L%+n+%ck72x?-mNE$`bsOWzb=-)oz7I1R*rlu7Od^uh_s_1Y^R}5OEeO;11Is0ER4-* z<&cxc*oh!$%LYrxP7m1tBns4oll|}_~ z_S%%8uw6o015%XJ0EQ_LXBA9?9d(On6gtJj3NZes_&(RBEqXA4g1FMhq|aS=lFl;t zWn3RpDVQy5+P(uQYdNWdbOq9?ji*Hk3g+#e$*!&B=;JTtA0AQQ;M3p19By1LI&3P? z*Dk;CU&&LuPhxY81*d%VrQ5Ta_##fWTdGy}hUGE>3&nS66)u@x+c^TvI4ZD7%WfE7 z=a72XU*zWdORhZ4%PGD7sgP;j{bH>Iw@q#ajqCBKll?}C%f5>a2zB|bUkF(9_3>XZ z@)49fOUv3&L-8F&g=>~1TuWssL#m0A1u42vUR{>j%TnBvP=OcIh2)HCX1~XT770-+*MZa1#hUGqui zAUuZBrC?MAn{Lj^#krLJh>YR3wgNF&=Jc8s#c8XaQ_kr^if1APsm@C+m#0t7Y9qku zFIq=I+S{K#-RfkCO6gGwTM>ZViFlcE{XuZr=}+zw3W44=uhz8ONbV)&!ilRt9v%On z)_i@!4y|&aPqHWLW9~lyP;1wwm%dTTP5>l;ubwPM_@4O-g8gnWC3=(Qpg- zWs8Us${-75Ab;rbB>K%7n`|tKe2j~N?CLAY`?)1d9yBg7j!Syw5rtQa$)M+Bp$Bq8 zjTRd0Zu@*@4>&oD5q&E<-mm3%B_@A|t3?M+jB%K9Oq*Scl*?D!78yYkhn>H0xqB}W zUZT`WNimkR{fbuvGbCIze@3y$OB=8pYMWsa3EI(&6;~aH%qJ+|q~LvWFegKG$9c0t zYhbdsku5K57h}X5M^_E$i*lRJ+)me1GqN|*Ng1o!FV?rDVLfZYs|X+n-EBxdLaTKo z7R*j4rW^h}WmkRlxj+yaF3JVcCBuqXaeU>fJuS?I#_t+wUk;L{0oiCw=``}if*JuV zXU)i-&u@mH&dadF&7hpWb{1hUX%h=oF2WC5UhiM>15i&a?F+)C5>zc6rpxM5Q_<#C zL;#(Y9$0{^n_JcKK2`w29f(T7u(PU-Op|Xibc2>Iom2F}GtY+id97g9btIuHa>r@@ zo3ac7o0R^^0mBP$*!!FAYVMx8cAmYi2@Hkj1*9>toG?$p-RPv_INt}wf>M3^Nghom zk>HlFA;|_&rgGA72?EDscbA`;F?3GhpgumS$tt+`LHK7rzpL!#8vU*ly5z}J*%^Lr zSBNHO2JZv(8N1NoQ0fasY*A6Cy`%v}2^l#le|L*+XB}NdZ8%fYX6?|Irz;NJuix)N zA3MG#35H8BDsf4N&6Wt!)xn3wfyh zlTN$HT{12mFXffIGpm6GdO2CuL><{3sb&y|GwPvMCIMd; zFs)c=60yo>W>jJ38%USy=g5#?(D95>^J2``5%WprpR(v`1qTub)x)I)S!J~~J_ib+ zFCpm(7_!5MK#hl{BZbhs-W&IqWkP{6Rq2VI(iC~#dIj9(?YKempbvY&GD8poTZqm~ zWaGF}1kzmintnQI`!HxXQ@d&)>_j`QayWb2T0daB&vrtRtcWV83`2@9zs0sA;~yOm zE3YM1H&9>VS?!n6SvG!ONU~dh`3gd&1SR#L8&OAQD$kE{tI9fe!@vob^L=NbZ2n0B za4ESGI0;-zFkHQv8A6OtiwvO83Gd6S0)t#v9CAeMzf1hg|y6S4W?(keYvc z$Fm)FvBLmk)pf7(F2yj*-tH8&cf0P1w_jUcn^s&lrgW zyY-GZ7UwXD=fmI6)VU>P3UCo#YJJ?8ah&y|e;jG?1#j=7A0YSHf1Z<@+xb(JYniHx zV(kbq5UN3ihQOBtA9~|P&$>+o1bHPGkyrY%90;?7x%@HKSe!}zgLbblHPZnWFreQL$||qyz3VY z50bCn%w-Zxdbft*AlSy|nYq-9-^AlKg3I6Ao}`{$KjMX11O2(pmDg{T`fB z>63M(ISh8QaR`E5Lo$erYz9QL2X)pdqZo5Yqh#89B5kbAzhl6G z3k6EtOeo{!mR>CE-l9PxR``hpWYk-b-WbuX5#x{%vmw zFN+naG%T$`p@H}xI($m{`Q7+FpQpU$objOeQ8J2t!nc)4_GO|k5%hS!X5&@Z%+e2) z!<=O9WsF{!b~B8I`w%L+cL~2=r0P?vDT98^bs?KG1sB{|GHF^D76+J@=_5V@R8DFFH!oDHce0 zIH9oo7*cpR6v}r6K5AgFKA(l~9_aUDaLKb7<1W@5s-x(?!f$i$xMsnk6YWdH>8f8M zmW2qP(V5*?uEZUeLY!fu{<2eNxT)rd+s%phzvQhtRXHzvFP-3>r$yM$ZN@dFR5wxJ z3)+rlXzUj%06}z03}>R^3zwg+VTvDnHl2C9vQdI%He91drH@2^cDw$6`;M|D~I z2s?x(%0&|eYk5MLK*$Xw09obbwFxIL$DvTmRKS zdC@fn8BP7~G5&LVgBO_lkn*9P}8C_$t|Qk0MmC8XV?bf<(!gOqfugi3>ebT^2Eq=0}(cY}a*gQPU? z*gnrW&vV{$-tT(9f4*;B-tK!NYwfk>9CM6cjJe+_%1h#4kzyeb2%INUV#)}_rCtOA ztr6oA{NzcK`44!x{1W*@6$1lfVn*Q?yv4MY(t3$N;C@H_hZeNro02ihdsq$$;fpC;D`rQe@>wlC_8{pWCGuB9@R z+V^L*Bh&r+%Zpv{iF}R`dU{Ha5M~^Mw)a(4RreO-ZQAw4F{rB}Um#d$X*2cfy*S6N znMd|urYG|ponduhaIG8M|HypEG|Sdt^y(RUQ*V$Wt)+|diBYSw=yiUQqy(3pzDCIt zhaBy%JtHMV5`#+qUlQle^#||1A8ZTe&K7MoUY;Qne&&^0(MnPqJbZpG? zbi2htfF-!Ju1<)LZ+r@Mc&+qj;^5%4&uI|S)3UIxslJ%Md?+t6|Q;N&oo@6wUnw1`|UqK z7Jr$$CbsIf6Z_tm?K8W*(7m6|Q?B$ZEOO_%@7vKtbf{;{kS|`a?8lcJ&>m^^A8bs- z#K*_S#5kXy9%-ERMMp%~?=APi5T>N0w6;p+{od^np00YibawJ*Yq~x;A>pfW2k`<^ zc>Nu&c!G?qtR#Nt&DrL_7&iT>8t0-NzbNu#x~@1braO0jg$kd$9R7ZWL^d|OL62fn zXn6^be0qAyR)1RJXh%m+4-MVe}vl%OC zo}Ny|i-?aWBOy6lb^J9nG{nlvs*og*s^_)ceCz1w$Tv*L^O*T*Sl)~43h<<8g# zFevoC^NWjKzZ=j^dy=A(PTs%ZwX(8;2l}h| zy^b<#YWS(=i|Wrw1zdg?>QoRGsrnrfw=n2!QMsEkiCqF;`#o3=}&MjqCT*NpQ7rBM)Qa1$^6_rI?l9^vb zM8xd}CY6FA6M4)&Jby?Yny?=j`RRjYwh!7y3vm`>;6;o*x+bQYBmd)2C0y#>Rz#4-Wol?uINLmF^_7y1BV78WUWO94#%Dj<)&m zkn*dYt#|7=`j#NC(D`9kHqZ0!A7$19h?M3q+nfMxR{3Yop24(1zT)EI;;cVqWMmY( ztE8)|D=scxx@O+YLS)`m9&DByOvaPM=g0^_I#uhQnwlDTi!EB;-`aq>sO{imM%P?f zX(USf z?4NaQMZSrsaoTJjTG}Z*tO?jSKVSSK{knL?sPy?VE|n$KC!vwaM$ePp4dKai{Rba* zcI;tFj+_}7(Gf5Fd_{2t1Oy=IO31g8f7=_PU!9J z#UbNADC!s+qj$1$wB8KzJW-ih5ks#soIV`{@Uf|YzvK)_?EI}!ezoS%4q z(jz7&cF_YTH@FlOSI5kO&vIiGyf{@UV;8v(uwp&*Qyt@0c`u zM6bFO@1Viv&nj5XY%mQ>Oggo0Upk)-F_C<&t^Knxp`oMWzP~zT+!5Wkz+*EdD<_A8 zjXGrHPqt-BK*^_O~hdO~8jLmX&4HM_Xzv_8slWPfz#d9qOf zH>sqirlzE1H{TjgDd?uS;N|6&?0KMNY`id8v2 zXWqfGq2!P5QsqVbV`Q{Ns`<3t++cXl{~njoamjhC6QDetMQ1A{<0Fl{0+~wO|7>p6 zUrhD&*$o$H!8m4j#IWcboS$sHta{2CQ{%AG4+}}Ni(jG@9svD1NpFP>RIur**u+vj z$EUkJk&%&da&pG356F0|g8~B|Ja}Nqo%lW|=x2#>ApBcVk&Tzvd7bA;&Q4c6&(i!n ztotA`9##Q?r^hVMe+1oTHxPjg?RK#K$Y$#6a5E|vZEUvS1XR`NS?YLL9u=yul<>iB z?gxy}HWc@E=jgK2muY4-?}vBSit4=%X99NqNd5?+s4?qH>+Mz4(V57UiGkTH9aD_| zS=5CV?^)>Ck{whrVa{_fs;O@|-Q({e(Pgo-EAaEhVcDmFtZcaoxpJIG__G$P)!V_r zg9VL^jWRK;!4ymrZQ_4X#GbO!Zqr12d;9Cxub0WLKs^e2_wFXf6+!m{)h+))sr_@h zbwj~!UtiysOWkcjJ$-zf$plWhb^0u40--Q6y(y2WJom!iFZ?5m(9e8?OS~syvU>62 zxuKz~tgO(|{uNbr ztI^Ll?@7RD7=C|y)6UM$!Bt)!H&E$SmeSrMbGF~E*L>7PaRTCOaskZw2s|XcicnMw z^e;n0m`m}Zeq<-bOW5Ap`fK-S@QsMEiFspD!f^22yhm#zbnQ37SJ8hzIP3XA7NQ|3 z*41>R*6h->jd_e|C5e_o8)kcdZzh0>j+Pddg1Jc#22lWBRQBxEtf4h@aR_%oyIC=G zbaYG0wezzRdU|@98~o~Wc?A0eJVQ1X@dj~%^-^LO)bXo48@|1_p6=?6zJACb$;Z4B)hP%fPRCrv%A|1YRXC#1BLQ2*THUt3kNY> z*~ggg`TEc6Kj1Q0pb?&Q{$?_sGadW8+;KnvBZIkBqAJ2}FhZH^nDj z*bDyIoQxOptj^ERuc|sqdHf~=y;XV7_3&^m6h0X4h=71#Wk=up%n=F}z(#+6e@aS9 zeUI(tifJ#I9=QRT_&Z78#1c4XxZJ0RAdip-L|g2f$|ngtqMk`UxusKX70YQXoj+3a zW25e#7rh*t+(tNJ`3?=aTuOf2LVjX=f!`D?Uu$b?J-w-;-6a*}xC;)WLBa)_CvtLv z&YM30C$Z_*eRbZ_Tfm0d`)}AOezJ)8k^OvYTO_>#GSA=yNma ziX+0q``tq2E#Ps;PE9@YtKrR_beuqt`@wo!Pfxwe_AKP6PxE=Fzh^{m-MV$WU|idA znGBti&@}M=aYByenOMWo86+ck1lJ3QygyrT_kg#=kEFG?od@4<;98NpXl>bBIujz! z(dTUMlLv^lRYr4`Ub{hw!kXUR-bg7J76XG6x2-C`C5ew-W_e$n4;~92{(4ht+Qay+ z6y830@?>!5(W6IweSK9`Re9?%X@wokRDk6cV)UzPY6y_$$7@A^^i+Bx`5jjWe*}}k zD9K^m=5sIuKmus%1G7Tm>CdW{oC<bklcv$KHz3DOREnY8L75+kNRrR|T7jy|ol zZRqNfYZiTI`|I1rM8!ah_i}IQ4*J)uEE8Dpfy69v09okuHGbppap&n^r`e}DM&70ElXTLBNB87TJQMB=y zjg2=TGl)B+l$u%;kd1MI5Xn%=zO_GldtbdT>LPewym+xSRV%}yucfszGqVj7pmreB zH*6g3Y-^iSQ1IbvMs~J_uC5$LZhrntJG<1R8~tA_M}#jJ|HIVZLuU4oIri;7kFy+0@=X3-`EzZ1EDi>!;RtzQ`$^6T5u@PQrNu zorjYX|D9MrEj$4HU~dOr`(N(w@9Q`Wh3nVH#Ekf1-->(63&*{`2QRN?)Iz+&OrziE zsHVHSJ8poenu7`<#ZvSq{hPFFD}CvbE-r^ak9rdM{{VJp(hmhL;CX5+bOWFuCI}Zd zZlKVj?7m3y522;~?guxs{rs+adPaE*6`met0){p3vr`o7JEHZ4^7IVKFF;;0Zma)% zww|@bt$|U=g~ZDUKLFAVund4G=>a)cS1)(lx1i%LwqI!P|9b#Pc=U2ns%K|^U(oiK z&)!?y2PT~c1iI6|{c3`Qtgiu84={-8yXVWU7VPsqdj(0cwJ`a!c?Duzj1wgL> z?Hikz^s`7ru}#weqyR)QG(4*ffw+Mz0K?q~l#Q<|BeP5s#cWUV|Pzl@9_iPh<0`uR4i|fmnKQGHr^#|C|MBs0 zR^4g`0H1q}z+xcW;pjhO`@lS%0VT~Fifl+oNU2GecAdu~-A~KB6%J?b?`ta<8O?)A z0jv@b^6u^~fNRMprelGxCz~~Ob#-UQ`|fA^Bh#)+6mDmb9vvMWfhF}#CAui+ zDV>$JX63r&zO+=i?k*-Ikl(r$1BlKqAfTf_?)+4FUYP#o;N=qBE$5tMy4xq3A2CVjG~=l}nF%k_5*>#1ntq4j~)lT~7B8UB*A< zxKu`J!8`aIz;cE4B%sl;S5>9INbtc>8Q7s*O(cjPolr}+) z@X2aoA>x`=Mgu73TA7K`2!li$QSX8VR(#(y&EyD?UxjyNaq{%!Fu$Dl$S=cN0tddC zU)wII34-bikYy|ceoG{N#et0oDFyUXOG`^mt}9<)5T!$Y7})nkoi*+w|M!!8%3u9` zPZIF|!%JLhcDD1MOIHMDA@4Losb_QZ>$(i?Rv|J!<*tU$m|R znzkx^!6j4MV9QI+^$7v>T3pAODDIbXR`R}G1gFhi-iHV5?K?eE$UF;5CMrP*z=HvuCLUXe*kkCEpgRSYU z)m4iZFKVqP`FMCLAY#RJVty>`uC%}N_rFF)7SE*d>8)5=>;qG69UUEQZ8+fq21>au zl*;?m4k-E_s|vxzAMcB$l@)ViV=h?K0CiOSpqN1_NJ>fq$q%x%oxQ!Zl+@=hUmP7A z1f142-Q22UVq&7AhO(2rq*;<B_6N`Ko3Y72M^DmKYwmv`R%wvx`u-PXGlZ8s=B&ve^|#itf=ldPp85< zk>42?6Y~h9yxit!R$U8IQ&Vf}sdUNE*RLOcx&)B6gQEt&g8oY-BIb_S?C=jtc@dh2J;U?m4aQJ|;KhB?q?CSF=vf?2sm zNGL@U0W=dtSm1h3Xz;_OXz(x~3h2V60PWu3=dS_eqr}9)!EpqIR3B&>FeXwG62)f^ zs~pWiOpN7tevQlX^l;mHvib>41TdXoO2O*#^77*1?VW`VA|j&q2Y)~_BFD`xDT!#A zgEA&f69G~2Nv~G>Zn%-LG00|cHzPws;t~?Lw>f>?umhTI3way@I1<0x2e+FCxZG)D z92msKN&Q7>NlBcLr<;)QOzN?H?FaEG#VGDSymuPr1wm)BRz3_^=GJQ+fHpXz_DE zDt>-`hQ%(R+rh_Ii`@kw8_Lzz?otme{*!0VW&o6DzBvM*3~&y{S5H@0@WuE;K5fRC zl=2cNoG92lFzvD1HSK-DLL69OHD+jIqpzVsA1e;i@($WV+B6fBh zUs6HU!MV*j52_$7Ev=A{5HKdr7CF9gdW9r%LANp(&yo`R{){J33Db!Iz}PxEvfRIq z7uXC1;BPn>N%5xCMkw$edI;$%>*)dd2i=E>kufMZ_~LX|;hh-p#0TEz9`D5LL1JEE zTl@T(eYKr}6m^WxFQ%oZ16gE*`zz8D1Yth!b5_=m-rlfrvq+s7y(U->pf_1sTGHaT zfs_nU%oHwFcf6WE0t^o{6*DLAT^uF>;^t!cTr(Mbnw*`?N8yF}) zeaajz#Y^4|gDM?$0rWybLIPkq{=1B{wAW2D^9u_~rN;*wG7HN6<&agpPF*at`DQe$ z>}hK|L2v=g3hUm%~TK9iNb?l}}QRs_)CFt@Vu z5bhKdIN&(_0Uzpo0Sr1fzb8_i0WCOAjyFR~TU!}DS)TVpayTH3iScp37j-V%uUXgo zGdlo8<*ZzsE(yaE!9<+*D(&pMz(U zf#d-y`wc3ghg@6~To!|=q5&Ax0XL|UU_hvWMDz0SjO=8-LB9bJ9){OAW4nB8i=u0r zy{V$`fGo_+;5D5AkwQwjx>iL-5`6Iih6#8qqEIGaX>+rCX;(!>#nQsU3osLe3jq>E zILXOTu$?j#B8^jxl%q3Q_+q9h03_FJGTWc^-qS-vQE}Yd+z>=*OskpBE$!{^-2%hI zZ&H8n?hcs>ghY;Pg<+ZUI(Y$#2V?^P))wAGuE2L-L4Y@enk^>244@g-W@ahRZSCxo z%DCNP0U9hXn_18f7PGLiQ9-Ijxf3kfMy95>C@J-{v>48&AgSk#sk!yG1i?6g6OL50of zp84>~wH?gM~v5un^J5#O-5clRzJ0w;FXU++oj z7^G~NCiJUUSu{WUOnDxOLd`5JDpIIuN}-?cv#YMGgebd69Z`WKV(<-tlmc)HgNTiV z1sOFeEbPvi9y)pe9nUi>D_L4)-!RaR6bS(4>wrykL-_Rf`dBFlpmFi>GUt=X(y<4e zFUHHJy-o^2uW6cL)+v{Lf&d3GFE=+e3;ZaBjX7A6s4K_B{DIMWVA`!%e>#7oF`rx( z(FK@cycjs&TRjUiGncK}KZb^eIc&2)qBFCylmmmwAC**Ax(wy10UybfhG^MItGBP|& zOh~v6)MM<*a_yg~iO9k7e5C5$1~<02xHvpA0_o#j$AYrtyE;|yvyMQQt+Shx zkdq5`n3w|2rBp}@(0UirzjFMif`Y-3k&5ziFQ~9_T$Vt)j4mm9Nx%p@LLslNt`4E# z?+=$v5^#mo4au4boJCpLj6cO1MS7@d(q!%i+|u2hb)y8g_5=OzZ-3a`*Fp^a3pCbGsIfLrH)Oc6D}wES)8vD9v_H@Ua|~ zkjKZo-E6)*ay|#CK598>X$YW_ii%|LIpBnO9!7%BN;_2KazmPX`SK-*_5}3uct{v- zxDKE5=KA8I$%_|feUem9&d`rVIq*#`^jqFekv;dF(W( z<9kO(M^{%@YwO$Y&gCy$t`cUz^_bKPK7;aNYwH5224pWxYFPC4j*gxiUq(Ou(SUL2L@zqL~r+%D_1bCTq;lZ z@qUaGAd%j3RhiB0ig9Av8~0${;j4U=9r#2Cq{2fF@$hlsd;{|Te9Z`KQl z9$wHxEZIuv;s6%!x(!UHO>3;e01rok5-aD}pAm$*$0~!S)Sxj*YvHafYcp-OEu?cO})ChHm$;E&C z2;wO91Om}(*NVnP8sUKOQU4Z`eGSP*BmuwSurWR~Fz^y`PX7YnL2#Vr?W;hR4rjd; z*bMR**k%qB{+MvOgsqJD*>^(}#sO9?n zkmoqvfB_jt=OSMPCbKj%GXt?}V89L{>xU17ZqdQPa$q7|zkWRSey+~H3!-OA()!_EHZ4Omv3ljrFYL<+&G>9P|m^~n`LE+uoa|oAG zRZ`*r$r|QVh7FI3N6MpW4R8a0uvIZC3MI9Q0X1d%&< z7*`+&u~O&4j=3H_ba8h#H8y_4$A=<+0B{`Am83m9zUJnxpi_C=(RBgg25=qV)1H36 zjWSaW+u!Yx^do0AG_3cYv*>Iid_I|H>nDxlz))ou6(z&)kdreL2SRb}S=t4hEr)@5 zf5Kk z@z85VILO9mQCZ{8eAYiHNXKbU61WZHxE6NVqU<0(BRkWWo-PUh9iMI0Y-{T?GY%}o zi`+9WR|}2={9yn3+y9K1MiwGC>EBk;|NXl}1E^!i5p{K5s;Y!)NkDABSZX|fJ_p$g z*yn{253HwNLn&SdBvd)zcwo>1c!UNdI)x-z3|B}|kaC9spaIzRIy;t&<@DQNhgh+s zp6O)~K0i!POq>J(7?T>(%Enaf3H{#d z0D55JpU6QOY-?(o8~il{LY`ge)Ry-!aBxUzFA-=sXD_f`FmmeNlab6$ABjWNH%%QfDgfY{`#SG|vBGVBPB1BF2 zDO(TAuhBIW%R}pD&YM<*se+dBr@HvXgr*=m3>}4cZ z5iD;~ySVV=-$^u0Uq^^A{etJ3iAD)$?6{cd|Kp1az^Q7djn$QvD)Rxll^rOeuP&q8 zSN&wsDOUsrN(-HC``g+m_eZ0Ab&$z z0YEADn}4tSWzFkAMtf`ZPmvDi2# zdwb}UP+35At3bmM7!^d95ZFls@!y%g*3RzE8_XlQ)3G0#mP@X+*=NHMa- z(r0Y0AySBbFXX<0GzL%hKS%NZ7aFN3JroDh+qdD?;n+FyK*_Usw;#Is8XpW)fo!Lm0J zGq!`?uO)&=I4lNpfc$|-1Fj1!nwv;y_ShZP0pCkJ*I5UFC@`4qAke#M!Rw$3YoWEC z%n7911C$PqN@XX4Kzkqz?}q23rp|!4ceYV64N%hm`fVW4CEy*v#R2#0-od+qj$TT^ z09lP?Pr1(vI2HIFFgn15puvHGfdLkbZ`g+q9{@FZ9Is@<;sI;r_s)(XKQ!w0YFBn- z_Sur*|1&IXWl+-l{~;{&82O;f(Y+-k($Vplf}dMV9EXa_0%PJPOuzx8XdOTe>FEj> zervfg$Y;#dR~|tsVaKUZb?6A8pkD$1;4a}O1zCY+LjeRL zNEh;t;Tn8SR$&Y?_RW8@9p6<<^n3pgiRWPrJ3(5Se@#tGKilNw^Sk!~IBJ#P0j{6t zc^MXuPE7DWco5k#2MZmB<89B9N-01v)u&HAps@*{<_)1kkt0~b|6_{W_?sf#a&z?c z^pXMs0-$Y?+6Yu47*Yq^XU|bbWOQ^^d*k)nFbEOXVFsR8W~O;Ty@h%=SQZ(nqNNpE zO$^z^EL*WD)r%ZgG8nt1rA37Rx((qd1OOz`fqCW9E0J$bgeicn_vf}{) zViBBx;JAOz)(ZM2-pOe&mGf|$Yn`Posp9x1-`^yCSZb63TUV{BMNFtts!R7 z9<2BFUMU^|g;Dz+d3CUe17R@`Gi!n}BQ-4oi?|B>Cs_Ti&;$$3O3;V)nG99$ zZdD+@PBks7D6=n^oAF>oW{fV%YYqixkwa8p34 z2qEEUgq~FBq5%mR5U^DM6nX8dk5VK=BXAMDScf}7h)hg$2C!V{l;4_ebfO}-sge4ya%!s9~`{Ar$G4O15zI!DCL&{0tW*D%qr{gvL`0$s;VEdv!SC|5bWgK z2m@Pr32z_b@p!y#e+1!4r0^*g>OtqVXFN@N99;?0{k#?gd< z&0u>$Q?LMKPfyPl1dNAJa$FR+VUY9TZ%A7d6p4_G{;>;Ss?shUo)_et+n^Ddncc5t zq*(zL=)`!r$I#;q+U9J6q6XF)G`$SEq?6+=0Vt7U z&HXwfi6N$jAGJQTv#Zk01>L}MvjB>5OnzfCpiW| z8-fMIBGh(>Z$4Mgqqz?Uh6JSwZJ!7WYZwVMr~@*?4PVxD-6CgN@n$YG%)W(#!Wyu4Lt z0$c0P3`|d-L+SDJZIPhI!zy!x<{hgRxNL={8d&C*&~F1eDx66`?b|f-b+?<}3VkRG z>@dh9uw?-7E_6Bp3j-7QL zF8FnWRWD6fQpFuvW4 zmD2^-T-)$5;UdM^NCK_kLre_+qeoEVw;aU8bv~&PC*v= zARI1DgsNF)O{t6)IZUgsioH*_(a$6Sl;^Q?a^Ce7laPQC2n(h5;`{`B*S()G6rKQ8 zLHRn~^1kTM3;G64oOy0AYdlt?24-eb7~9Yp<*xts zr+7k|$OAVLwwuH)+VaW?eWZkz5a>AuN;eCZd=hj~Ij#-E#G691+tLzXBnX~A)85k) z6BA8MZ#LLp-IU^0HGcjaEN%*mW9ZBr?8+K6Hy>+gV7h#H4y3WHOyg3B!?Fi}wxJOo z5)I^`HPAz#(-9n_EQMsS&}TL_&LE5j2UW|TU&%_*3eNLIKGW131(gB34t@8HF97U^ zySjp55vkT>|3`UtTg|L-Uq9GrNSDBQ#={70GNk(pn1l)VC>R3a26%*vn>#Kx_Dh!p z*QyO2uggMPsgH&DQ8+r5q?f-H zqtJW@g2Xrl3~MzQ6^e?A%F3`YX9Dy{?~@Il@_QDR0PtHs*j5>$gfJf`bf~jXKv5kb z0}8^rP$Gbj0*JMe931|y2)vjC#LBXJB;#MNLgoZ`8WSEqv$TZjsw<_C*GV4_priZo zPcgy>Lp$h_NIs~8TcdU*pXBSGxA+5^I27u0gA~dLO(G!MfIwvo4PanYyeL&FbH9Wr z{O(Z1iu06Mb$1u@;rT{;3u-$4`?m(wIQ4%yIrLZpVXT9kykWd>eRqaj| zwgK-w{_ja_DEe$Gt?lm>-3~q^Y&~k+TO6O9zRov%*@w=|SwE>7k)06*6%91fk5keo z$MFqwMrb0UWkqZX6t5)GQ@H=7^qfa3)IH~b=xTkEM z^zI#IKvOtFL2m9dS`s0&(^dpTJFzZwV(AJULTP)pR>Zw7Km1Q)>2J+<~#eSDp| ziQVnaU%@;@0)l8}cMbF1J({F2UL+FZ_UpdOFr#;75c^=il-Ic5qu%x{pf$pfxB(%7 z#fNKNb}(8BrW4?{!H&Mm0jX%{h_c#)!-d>^Tj__S{}L4bX)63@Q#}dTQGK9A0{oYY z=WgqSHMO(12dUB&q`Y+7Sm$`n{Mtusei?M-$hwX3aAmM9>Z>-l( zGl9CH`pEtR)7U^G{68^`7x<*G#+DWrCB(!OSHvA0_FBX5K|W~#It+PA{rLzb=MATu zSkK!!=nXF;L?&P(z%g`PySlhQ`MFI(BAdv^MN8|K6crZ-l8iLQ_MboAAYnEI+(;Jo zJ_n)=5G52Z4fbtVTX$>!92Y-tV14&4TQdk9A=2{S#q_=c@bEz;01>J)k-q{Obx;^p zLRRC}5qgb5rwRf=3?~U6p%+O-Zss=6*usaxuE?*pGmWs>1k#l^*M!81ym%FnO3uN4t*DN{h65# zTrcG>!@Og_kEMtqnx3OCD*C3P!dYEC8lW<0pf@P^XeP}b0;?4i6r`s&ZHu5)P4A-? z^@r(d0W(ZUsII(Rz52P#M364<-P-3ZZPk2dArxe=>MgsXO1gds;Na@H?#x$v$9y+7 zDlj&CiRfj9S$u`!ykLq$18GA;157D^Ru3WX|In|(?@4B5XS=(&kdTpq`4^)t#KB<) z8VPhH**ZICV^0JTU+{svAT_a$F&>COJj4bDWch}MqP|<7B81u}3!JKJ(EF$xpubea z`cL^2zo+#oA}j!;o=?HPNxDgF&26bi%t63A89Pl@7_|)OURj?aC8msxR=cYFJl#s$04Uyv5Yo_YVu(F?*Q+1!O{SrcC4fw9E zv|Fu&IF7S(XlBPhloSSUY)CNpAZeh^&fJWk`M0#K_Bx~lo|X?>1`X9g+f?@GI`O*$ zYmOjw?*u>iP>*WOyy-yRZzlU^U0S9?URGegg!K7G#x7xSzWQwxK`n`u}RGCUf4-B%H2&fu^-^p9}J#XgWm4nOI^ z!VT$Y)yzL&$-|FW*n4UP>sB1Y98_~OI@QW=G8u_1u zn=N%{G+~+>`ml-H7@2+SiyqdzPZ|R``XMn4dv|@&rYHtAdABB2@`#IoiklA`(UjEN zV{4Oq4(2)?(>dj2w+l%W3fk=2V6>itS=rA-C_<- zw@|OK>ZOQ`Ok-@nKgL*nbf6xXp`I2uAl>MbSe|92*xg57rk!x&GA zdG8y$Nevxkd71e#?x~h1*u9&-Ru5~$jornM__(ZNCtV)Q8Y{aq)u-VgF<2r571 zAvdLdSWSo6i6I_h;N#->>M-(&MHN@smWmLOe7TND$%I9Urxt-JFe@hh_XpzazhiKf zXk*{LC*9nnl&QCx&$n%|be~FUZK~c#cRpUE{&v~4#WTyP|=QF;EJHD_b{fIu1BIBZaJ zg7V`JoG!S~NdY$AxAs)r^R-UI8>soCAH%lwtTsIBT7OB1Fem`12eIHy!L%Id*86NQ z{RZ96*Wr$smCc30#`vQva>Q}3sew4FzTzh5lZ=ue0nj;CO8=1eI`X;4!%Rh2e?*!@|ofX33yWL&Gn$ekh|lO|#_U51^M2z$oU`B`)GlF!3IxbUBbtm z+$kwa@jb7vth^6^J(7hb?uBovQHlbWQ%Y1jraJyk{j-+Aos5S9o`s2^-#vA8J%Xm6 z^nJB$_eMM6SU_4Xu72&bK{AI@K~`6y>@;zCp=I_(QMK zHh6VWTWNdb?8NZ~rN@(=yK-lH8V}c_NLx;$+c5`)*Gc?2EwiB^01VhG;KNjl(cpJ| zrcARZ!CsHDAiCji?Gz<;7DUV&FHmcAhm#oLbdLw+Ye#f&1MjKgzc^ipw z6KkZUnMJX7n9M{oeAmWxI)_C{|QkSWlas`_eO*R@qaxs$b?COFhh<0gq zL<$!45HvS5%(M~2a;{MA(Px&x7tXjLXLCB(smFM%N#>U>idcOgjtoC;=BSUawY%r& zY{E-jyhos?xBbL?Ffoo^q0U_kPX@!zx#!!!2mn6E8{mZX#b_4G~qurOPsI(~#4e7C~msHsxa zdaVv}c1qI5bb)W!~_PMpSwA4Ln2eNaL8#iQL-AQtrS&EUX*kfjT8BueAG`_qR9F!#{ z!FsnSs5!rm^rX-15_F8XX+t;Q@NjgT9$*t#lsSD2WklEd(9Le4K-z-`^vJ0XlqVgX z>)uftoT1W6gTI<4CsT>^*LH4QBQ83&SeHzv1_84Yc0)mYXJll6>WPPho%raiG5m(# zG0H`s+{zxV=-dg-PveTP1gck2Mkp4_~xZcnlG0I^Ms*SjGO?amaL5 z9w#s&GP3?~HV_(YWfORdflGP_34>h?7Uo9fN59kw#5gt>Fp~SySNX{9GvyOvZH)}G zruBaq9umD@&2BcPmaI#TOV7@33k@&DIzUU0G89@C#vrdFI4o~Ju`a%3MiQB@(K#5E;4y}I$r>RX0SyUsOrUXdgy3~d{eEHx{v)H2gVZ%x$WI&VzLBrKOdw!>NgL|Xid3f?kPn{P#fOVbuH!7>oXQU<{BS4&+-@3qpjx5L&ePpI@faRNu$5 z{_}jWm@+ba<5(FOVCR>Gy}G$MLukuAUud#c_{jbY8U{hmj?_~7msFAy{d?XUP30C? z)$=vZx9~~=v}N^$J+=+Uu%kRY{iB8mV~u+$BgMxj(MUuv0e64(=KU;t>3R-yvcg6W zsOHdj3!5ah6ct5!0DF^h82SR<_dfqxUtceF*WAh~0kR@EJ@X??-!WlRN>Gjab!z<8 zWRM)T=S-KY^3^?`8FMxN6c}u`XwOsAZ><-+V?cDKx0)QPFj}usiFEVp{V}hgDDsW5 z{LLjZ%gSo=I}U-yzR>aqO((XtwxEmy_G$dv(FnI=jcf%O48E*nc4p=#C8fOJ(kzJC z7w}a&UeJ>bum(gI{(JY{^o_Ywu`}($FH)^rGydC3^_o{U{|hfKtVpxnAY?*f32WhI{W0$MfWEm z_wr6d?}r9uC2(;JC9FPS_q{_6BvRl6M)EfZ-k@psyOG^PAXx9r;Kd{)yw2B0g$ZzfZBfbB&^~XiHhi zZh_5vrNz4V%NJI5}c>6i@f?na^>(9?YW}=t;xx{7;zuFTj))BvphZQNl3U<_r~qAY9hkN z7M?9UI@CLjb+Gu^1AKy((TVBuQ8PXRet()<>&%v~yL`19J_a9NLVRPRA-~(dv#ns1 z5rPwc^Y-oajTeuUV^@4OKK99dE-k?1Ca}0F&5ID>4YPeKWjIUXe&T9ER!7}GI^o^d zV6F>a@-{GHOcWm8z^Cit;sRSSE#Pk*w@!P$H7iLBZUQ&j^gc~}eH(U?Ac^OoM)sM} zqyc4zjhMS2S>%VO^s2SeM99}YW*kbGofQ)M^KO&Ck-DU~q6q8y^%VoAR(Py(9pBp8 z;x`W}7Ul^vGK|*tzlh;*#x^-mn_unc9!TTL&tBqT*`=Q;V+7v=RJ8~CX9p8D#++lI zF^mZ_z7vBDZ&T2ZQg`>tFV*Y|7i7y!G=_Gzx2e57)?(+F*F{~v)`K2nu^F+3q@)gq zYTJX`Z6j|=n?=vOMQ4{CY#d_?m(!-AQMQiy;Hl4@X7Y*j>w~K$y zW~!5#IN84aEMMR0oUg`!@QF(G6?I^)e)ZW?t+hZ{ii|3OfyUDxaoU z-^$S|gA>4<7--VGV)UGxho?vR@!V%a2Ft@gpH9|P)YhEXxu2wCVqR>%e8wRd52J~R z`J4s!f7Np4;ZW{<7@tCk5lWf{$8zet(Mv*E#wlq+CCY9}*)k;iQduG*lcRGgj0veE zqcOHfMJ1w~2_aFZY$aP^kR>|KJ@x+o{`0>6d9KT4Jo7xi{r-OLyXBtHAL*;M6q%Y0 zw)Djt^Id3f4j<6>=x;Qh{*xE6LH73Zw5^t%%W_AFgaj~j&Gq%F9c9A>UM8#P{YUmN z&uc}Ami0Y;eSVh}jUOd07sH52s!N8yN;B4XY2y03&m^DIS<<4)O?!n1z14UcPl?sK zY-m`y>#4Umn3CimWJ#uFG%G|Ak2V*2YWyV{sqKfWF z7nky7TQ>np3wf@wDhh)|0TdQG>Mr#|TyW|G6xy(TsRXC|pG*U(U*ELJACFGz~jyn+j2h z?^cd(`CH!&B0)cDIk-^&1=k^u=M6F&6>6cbVuu~jl(5Qx-#`QcRHoVGPs4sQ$+pUa zpSG7GHJk@(g~8xYO{MY#=7)&0ZW7RrrucmR#00VhX)v94_4prw_XoKPD4Bj5g2!$% zxdE1A$o}xMHTWHS5o)IQq}EeM!=XqCrfYEI0HQS1)%z$ajewa@^&t%x6rt#=Xc*Z%HZrc-E8P(}E( z#v{JNr9*`qk&#CvexOKs3shBsnBn&G^^GThMMJy*p>M0!M$d`_X8-g!HDj(jRua|8 zmPZJ(iJUXg*9XLUc{Cya12Ahe0Tteu@$Sb$4{J`}Sq{*3p1^sv)F++*W-( zy)gyxek6iG!N|8!tF^A&PF)gv4RI|fjectg~ZJnU|>Kl0aXRW z2e_;KXjz1*y98KO{D1|f%B)-ofawXIs=~h~hQ=Lf<1lU1l0eb} z*k~etgj$NN>xKE%{Ds)$Q9{+N8&-ojU4pqxGIuj#Wb@g(>L4$V$k{ zTA1Ox9X~z|st+A743r3x3AI?q&=Vp|m-@tALm`V09mM_~w9)v35&Ul#DPjC)K`w#Q zA$&^=8p<~r$p4>a(oxz4*5UW16W-NO|C@7gX(g)Tr1}<#E4jkX`~a5SMyLBX>^P8! zSBZ%%IY#JSz2xu3Qo>N*(J;uPnno#JJv(GgQXRB|$~IN=vkmq2UX}@kE}EnpExHRA z@$C1H7%C_-kJZFW0Gfg~3kOdDi>Io(>2ONDJ5ny7;^*h*PfkyRH_1lvESFXpuD{N(IXU7=hT;9WU=&N3xHQX$;8^;UKfD}RaHhQyF&(ED66QcsxBiE zZPZf4;$TSlEuq6}f)wvqHUC_Lgp=~wEl#?dh}s~8*zENa(O~glqlM+aR?|E%a2!$_DITUhAZPo0e0+et z+u6y6M}(G0LVJpL!J#>~*%N>*%Em}kEcNT!I&lJsh9a5#rzSE7k{&zbp>St(RS(if zQ1r02(Mi7`B?)L9u?A_PWa5%c3vemL$ae%Ds_<*rOV>7;&v-k1f%>}TNNp9iRU;Uq z`$%%_(qR(g9?%Wlgu@0I8ToC4B@@vl`}ezqZSmH*jO7hK2)@M|xjgz>i>NZx`JlpUmU;M; zOBbho_(5f*tD74V5Z>Ys;BCm%3#cwlr;eYSO}}B~6%?c`&FVGZwQHHUcm*=D(CgJ> z7KS*5Fa|(dk(QAO{`NH_H2Y+jOEJybTKm-e3^+JJ9(3Wn6rsuhP_d|)Aoa*g6Spp- zA!%?g6}TCw1Rq1u8qKJ`XX#kYAu9rn9|HpNAg~-Jumbc^48Ko9SeT&2HQXs@bGd*c zZ(^(-DqMK~`?ds6d`!K`m9|_`($dnB&P+^9WUwnM-vVGniXVI>z@*N3HDLrmSklqe zwYRgoyh55~9@I@;4xzIQejhG2cF!6De$xU{Iw;{7*P*7t%Lub(m8ymLl2dW9IL^;zRd`Q!HX(4 zTwS9HLA(H?Nk8z0RURyIBT(kjSgbX2a-4nZJH94kxcR;=S*NAd($&>fTU&eGlyOq= z5+pDnlGrNDef?UJBMu1x>Y%M!3j7H)?kkxde7Pmd<<~QL?~(O1B&R}yaU9hHp~Z`D zSgBSVz(gAuSh71ui<~6e&Tbt9q9`L4mzn7V8~AV*nm^n!(;x+|ushn=uZ^dV2od~6 oT3b;^CG_tTxM2Q2yXZN^?Xwb3Rw_7j;|_#fJ1wXM#?CSS0Lga6+5i9m literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/regression_plots.png b/docs/source/_static/images/regression_plots.png new file mode 100644 index 0000000000000000000000000000000000000000..48d8400ee5f8921a3f8a719fecf272ac2f6e3361 GIT binary patch literal 39728 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 IeGvSA0AK;>U;qFB literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/rlm.png b/docs/source/_static/images/rlm.png new file mode 100644 index 0000000000000000000000000000000000000000..89b74ae5aac5f43baba881138387ddc725ef2628 GIT binary patch literal 29866 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 D5ocUQ literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/rlm_overview.png b/docs/source/_static/images/rlm_overview.png new file mode 100644 index 0000000000000000000000000000000000000000..40bcbf724eb3f7de543e4ed96656f400553d681e GIT binary patch literal 26439 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 B+64dr literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/statespace_arma0.png b/docs/source/_static/images/statespace_arma0.png new file mode 100644 index 0000000000000000000000000000000000000000..36a83c8e3fffb5384eb05bc10b77c17b247b4fda GIT binary patch literal 15478 zcmeI32T)Y)maZF7f=Dod62$;0S#oSe0hJ^{kgSq(BRMsqK%)q#2uRK#B8_AuBLb2$ zNDh)?lc7no@Si#7|L2^0Zq=QdxmCCBE=BC#y?gKdt#5trTJN)8-dB_*KTdlbfk2So zy>nXyfjH8NKoEQ*IRdZTtum{De+ccQ?y8ZHko1o#jlh3NQFk=$5D1Fzhkpq|*eU1` zhzp3jw{NOBM=cC`s;N1Q9V~A$pg+)F-Fm^qcfsP#Bahwn@Xq|sER{P#1F9-NP4>Rr zlZmEGZEaazBkd0u=xp5UG&682H%)$c*Ef~iDWsB#G&%XR@xvKft)q(H(SEJVwJQe3 zWu7|GEH@s#5#qC(+7_m7cANB=YTju!S}d8|Ll66pp@fej5YOaAm4x6dO_{t15r{jo zhiBY=QW)N_KS}{7$^b8mW|?)Qz@K&ZZ4tZ4lI0q@l|I5P(Idpq_KmNHfBW`LOG~Rr zPd>H7W4%jbuOmtCM^lq-Au4`#vN>8z*XD>Rrh*_&|AB^vhML-IdXc9)8w-P69KWP) zT3K0Pg{%a%W0A+61(MJs@LiKlkxOMei#}vD)Mw6o-25P)(xd05z$r$2Jw+*&%ljM> z?SALZ9cAUWR8OjW$(NUx;b)|fjh?PJh>DKR z=$Tu0-D^*l>q5WJ&c6Pl68DXa`?ib>mtM(MuSsk)(sTct4;kjfd6oP3Q5*BUuV26Z z_>m2EiyYpqu`VdESUs&Ie)9BbKEoeWiEV|R2WV#RUQ4|kSPn8 zEPAjS`W|_@1}sW3I+~i> zRg_5awbol{X=$9CoON||A|fJYW@hT?>(gzCSnVv^Up3F4KhMt2&Md>v?ryKb_cpK7 z3!_FFxXTBMotElD*bkP2Jny*r5G>suL9}{qEDhUaJycOq8T<9CHjrVbTia$G=Vep6 zt}Y`}<4t<{`HL4lpEXyPYneP(n}j@f`iBz|5<K_WVT%<>mRDmB#IIbDCb5OfeE05Mn4YWINQD;+ z!jI-=^v*&-zr>E`Zmp-cukWmV5gbrJNGMj^MTKM(B`nIY>@t^8u)kA&ASNj2h#RSd zuyTRVMC-D&h_5z2BOt5^pc6vxZq?V<50yNB)^ZVrm_{Bub}YxFg@Tmyq*PK$im2>^ zqGU(Qj}w(Ih$-m=8=qvsP#LdHw=IP3ZuHwk%hi1U?heN^clqvjva+(Wx%vdr3$3lm zNER!8PrlRi1PFEug&-7kdu>3Senbr%WG?Edw7(( z@?E?r#d(63e;PtrV!-hR-4TgF1Y&;-!hWe_HE_^6==JL}Qv7g{5^ftmvkc&*9MO36 z=Acuwq~Nt{pCD2>^$Ss>J4@w4=T5Y>wK2F|>b!FL^l2X|0RaIBso6bjq9FE#FuX-b zbYg3NXUUO)+lDKJHrh^)TV6PnECd@hadW~+HB8#G*GoLH$Os1SXEU8zZ5we zAv|wT5PzXg%;yQ?nN)bZ{`A!))h=4n4At50|&`^7O_S1=b4yQg+ zUA%Y^rfku#kM;14dag6cFtt{vTGCg=MFXzyrdn^&LDEBKyR1%D`_s^!@O^tpHjrNA zy12MFJG(_gDCg|u*Ek$b+MjxFR-^ps2L1TtWJ+o(#@E-nKYsyRyoeuMLOa2ol9iVB zfM7PSmAP~0$Kqh|0luePMn-1HzC*#t$VkdBH5T1x${$E4WIa%5E0ef9lNzhuGu0>nrG|2g3lg-B{z+P>xeh5mxn z)KoI&6#4M>&d%{&Oqipt7nNO1-PVyG?%TlF~WVM1bJS9awiVY^9r zXXnCB6OL=wJl5KZYHA)x`CXDdekR#|fA?})3kl+xQ~M)ISsEP^v$d*n^MNn%C0V?> zB+?|wS-c*5u3Q{M2%IXqvnsx4&cec?YbBh|WX;v1_*hiW8{TmFMo%I{9Obt1$ep`) z>lzy5?c1s5=+jbBVougSzdUZvJ-jLHBdpl!Cocm7)fd=wBu1WSFndc0sygV`mrhz^{SSxW>*7LLe&d z>({U55dPuvEOkvs5fwqEJgDh)d|#hdo{qM*1<$#t2awR)UY%w4rV<)*{?&rs$O&du zq79HS$>4*bdsdcQDMBxknDyxsB;=yxWFtteSFc`e{^afL4SAb{d3J6NmOv5LHPaS> z(+C7Ip^`DMqN1Xtq$DZna%58|Tpwh{*jR4wAB~NTb#5_r$~dTZ*%LP3BUh^9{g{3x$gwMagGQxGqa>5dZ90G;S(&Z zAgi1qC_c!uDDjgc5S~fG^b|@3@j<pD2PV}PsiLE-M9|1wZ<|vU4Q~olLzl`P=5C}ADYX|wX z+hI6-%FA01R+8)my#uM%rg$MgO*OTqwpPr-&d#pud7a@CU&yH*cV2ki%IxXs?*23Z z5#fN4KFh!$;l73Qf~*aa3DR>&NJumhQL33reNJLQid zp|QgFK&1aphCxh7y@wB-K}0y_DM@Y{K7E>9HHuRsgSjdMbM@@mv$nRjurA)bc@tD? zb#*m1FSBH&9)zmw>vN-NldzUxU@hUGmb16d)e<~+g4(}2?^9vn7A!TVrPyALg>S$v zo}i_kmGwx!JCu(5+f!$yZH4I>FltZ#7+sj|?X<9B47WWRX`Nfo%gZzWnxEhOh(|ab z)WN$$u?~8K?dnz1BD*o#BKR@lMSQG_(@8^Q<8>NzAH5~ z_RMFP-`CWvt%}ZmA*R`WPv5^qh?L*&gfRB~`|Z5h{C;ayGSw7$D0g3{YLSqu z7T=Q9JTfOt)vu|tM_K`>+Ft8Tum+d3PHyZYtM-YF?yMq85s{6Ak>InROTJ( zdAU#y-pHo-`1l3J=@ay=CFFGVba2Y?B+RsQ9X*-)Z4R$LAdzOEZlpCktoj~i8`iwN zbSxlXM#|5+_!gqV6Our+DgR-v)6gi$&9xjX61Z}uS`*T$9h8}++mn$nl^89V`8fmx zt|F07yFZ_mI=8xdX@-IT5dzHw@j>4*4T#C;Xsevw>({TxxXz~S?z%JIHa4DwB62sZ zeD?|qiww!hGiTJ4l}FwE{yjC9qKxiLJVoB74EECAc^gfEzzVbI$&BEH{v>Ral~RqU zgb{H)f4rr%a{Z_n1473PMFCNMSWVkMw=g<_z=skk`Bw{!X@w)6N!IeL8a0lhA|%92 zHWwRuK2m*y=D;i6Vs*Ddg?1hcp-1w^kM>o*Pno~JyTYfUx+jq+hP~gg@JW=*Juk$5 z?@Uj34OUot$RWOie7?oe(H-kZK6j^d*xKpm!l2N6{Uvk7kX-Ac_xcY*Bw-d?_I<~crvC8Sv7s{~zaH`VIH5+#C7`_6@ipr zv{?BWDc0N1s!qmHcQQ$ncFqtTJ$jVw)na0hs36F4j1I;(g|H5#`LV{vv~BU^aWPuf)ZvInv1lg^O@o5`aRq zZWQ%1)4fNXEPCh+l3~QY)Wv9-$;~6P+hD%v1Kvl^ewyEL5E~fXxM*#Aw~kqWEjO=s z-jUgxkAC{hm63Z-?k}BW^5|r_edETBH;OcI9mn7#XYC1K6V!iWRxuC_@0az z`fHD`Z@2Yipl^)exN3tm7{t_j`~!#6*QK0FIyjd~ojOPFm+Q@S4m~m{_)-phVr+wdgtq8kE1Hko8CfB3d!ECa2p{ z{QUZL%dfbpJ8yMbhuO}x&iK^!5)cx(;(E7@Kc8n&eOLFM-)=G@ri5%uZB-GjM?0gL zv33nE;fn>H%BxD7Ur=yySYPbP_uET%=_E$GgckiP8ZPKqnZu&*~8Sm&$S*jXO>(JQDP7fW|SCN23mqkKPJcBB~V?6ilHf5?9%0=8zdMi3Rn6adI|cNp7!>YQB3TN zz3mI);gOkqXPPn@H&)NB=UjP0fwuga6NwUmWzQKYD0BK3&Yq2p6{F#`pT471kSsKS zmm2B*hF%e%?YX0Z^zIxI4!&yEn|&wI)`zObsNv$a+UhmQo?p|qNaz_idQDg@%&~ML z*SkB&XRZ`bL|bz zQ)ERYYO@mY^-jE`L<>BaDuey)7Eko9?ck5M!Sd*<|7GI{RyCd;+m@;x!Pe(%G5 zQl^VLuPKd>xiEWvI9g@=?39rU6o=96u=Puu! z9lz_QrnW19#gK+flX9PbG})4ebg5IMLGxU`wnN$P=4hnfW<0_Z+0@(HD;T)|?M?Jb z9jk6Sqv!52wEJ$pAhPPqH3MO|*Zaw)JVVTVYsb&;uEtJSlElI4lWE$)l^6o!eVv_v z&3Svz3+wtvEuLza!xH#Ughk#zG$C5lp(h5NubwK*f%c6XQ_L-ca_4yM1F$Y#2tH5j zURAnd5psH)DZg0OSz+-WInh6@JT?~kJ32ais6c3#nVWyg%v>r^4+&#p5_h(wIUv>D zh^3(!B|s>(89qaW!J7ZK3bpb{mQKcOV>sVlYfN{yIxRLlt0yNV zjZaJ@CnqzAJENvs3E;A>6|CybAp1W+zpinR0 z(zovNFBfsM?Uj`(4EN?3$y;lF?8Aa)p|aC!QJq$54AoeS+ak0&-J*o}`1qnHN=n3)a_>Mdd&pMSQnT0Oy40baHZQeiI1%vfX%+S}w69~C zQETkd$}EcXZu`4!zP^0B2ZGL&OCoFyb4${)Lpj6AE11lS5>x8+^Zhr4j>vkFk&t{4 zT@RIT3yhHv!)fi`l4va`8IPNn$T`02Ei~`MJ!86jno&L+QdZ$&(OimB`PbaFRk^Sl zN_yd+9ZfK$R)Pbmm)cg}_ZDcrsTe&EYe&`V^R{jq?$qamud=Zn?o@J2-*GQk$UZkN zv8?I&QHr4RB2ULV(`b_Jo>K{3B&f+!*T4*GEw;%4b?i z&cvc!ceiZew&fqh(mvZPzV6@c68@+~zffr?M8-Ct#JvYs-B(o;Am{gTy9aroxiI64 zz{%*aosPIUg5!x+6mnVN6dJ(ks&*hH2B{GULuQn-9+)(_W(URvu|=rSsMP)=6~#F2 zM{(!nY1fZKH$R5gpb@L9fApBb35v32xPlSR57J~!7f{ar;D`;{%C3Q_#CVdI_risW z-|q?=of%wtsTxi~uXkCrkH>Z_xxSvTR9G&5@VwwG5;N!A7odH>-#khsHSK->jC5+V zrmD@Sat4ZO%{des)W#q)zvabArfR{P9*)x6%Zxoc#d@DRzJ;VxaZ%a^fw~io2GO%W z89Pg$i+iagfE;H(pn3+K<<(BJEQVf7K_{kmvxZDtyG~61f+GmteMf4nqpFABYC+DU zg7owv_gIU{uSu&ZIUDx~qbyEgkLA6cy(P-I_NK|Wpck~OU}V!!pShi|Hx77=&nt`P1=6p6OgMGol_ z11Zg|Rih5)l$I}GsvhTngezWks*SX=%AcGJ1$}InlaaT+q9iAGsFagojSz|YdRv)` zhMpptua@K_=sLDnTo>YWZ+>krUo{{O>QHKUMvSwuMg@@2R|K7rCOuJ-BIHA>X(-G zdAj=Pmxo6BQ;+!vv>nw=G4I_z?%jx?indN{Uso!oni+_4B=k?nX{%{a>VCZK=(J&W zZO`_BpmwB%&!Dx1*)~nqPr9voe zf0Qluc~U)5A}V_)$37AIV;_vA8u(*33$%ZVB(eSCPAb`LZQv%>&Y&b?mXgwIs>k<0 z&#jM_I=$SJHiv7DUu*-luc>72HZ}WL>#NE^@Qf+L@#vKF#exJI2Jx-sq0(A!DyJb4 z>)Fo!=$Vas9E+E?Hn3J2nsKt)-&5y}z!#nF%eP9N>j@)chI+YXcUw0gRfqK9hNF|C z&gYI=$I{6d!GeN5qluU^;_c0fv01t`3(i4&JC1EPOo|p<9?($Qj;U^3KkO^5@FX(+ zXHPqD|Gv8VMHyrisbsH4fNA3C65 zOp6-TpK(kM%I;r)#ybfmrAF@K;RTS?f@0iIIqW|324dSaNC)M*RjQ=C*5TS$@7cC$wZ~PY|`_6Zf!*i|>N0 zIW5)M)fGT5(hlEG2X^dI`N2Lg3HvKyY+@k#r#obnd|umhyZ4{K&c;nPlZC%FxgdhEY&VOuH1LJL3;+>P}T< zF5RMBx6Q?ur&+U^JjlWX!_uLbFDBLxBW!5+amuz5!}0J-9JKi3d$u z)4e(|)fm27Lud2Df^tL?=DW3DKmY^3>3wKX-@g4F+MZlGg{@V@5x>!oCYKKLyqcPt z4J57qGu-XC?oL#bQ5xJO>Lp1iD*xN!93d@RS2gz)9B*k@lw9ZmzbwIh`;4pxx|tI+6b ztgk;#O6mf_*+*`;Dv&`8d<!@e>de{94^-*X>+kPhjNWL96hdx| zyr2}v-7qtoK^|-?tt(0^i*CfZgV2`p1I4YG(cRhExjF2KWMxhL_z}j~8lW5K`b&|d zce#Rl&=SsR+?PF1qD*z3_EDGkE9AH%%+`ao!i;I&pARxd&m>zBn83l#4wYB<^=VZ8vapQ;h z&~mUUpueM2WPi8xEATYni050pOmA&%g~3T<-|ospPvB3bY1>XkJ012W)R)9vRt)do z2Q8B6G7jzk;$QUynP;bGDhMmW*j}mV=(xitM3=t82?ERlo9EUjG4po_ z9tH{wUO_@sv}n*k42uKb_V*lwX#%SZObsNif>2l7?dHu&FbiQZ@TP*%goF$o0|`qP zK*rik)fzxKGXf`3{RGqIC1p?)*qmWl>E^(? z$Vgy=`wRribWs|X+!Va~%uEd%ncKHN`anx!-MxlugdB1dw(ekm=>QFj)a>nMCFGvk z0?+*%AB%5=eMxPHOcvlz+?<@`6clJbx&LJndWpBUMZ&N-v^A7w`DZhw_2$&Xukt3phr@?r9 zRPhX!HNDh1_cwS*TRH{SgTVeALRVzW!1U2m$kJrKwD=3dgWae{NP3AJo<7|DL(>xS z8f0h397zT)6F+YZ24+W52L^x_B4T2o{VaR4ll_A=0r)8ellnBP;>R3z$cDVont=&T z#>^uB0k>GZ1Q$62(-O-%TqHU3UtxW$wG0i%VX(tEwPEUk>3v8K&0JDcPZ!|fL2cni zfu3R4z^bu&9cKpC2b2W^Lvy0$mq(Ry+@)%|x*q$xE)FrWsmdw82nlRtMi3~4?3^4R zlK8=*E1ox3k}*s12&v$4A>w++JIk&K$>+_o2ff~ zCRI!@ZIHhU?lAZ`hjN3113a4t3r4nF!H}7vqTE4+R@c?sD}c6R^A}alg-c&fw({?@h3{?w@&z#`?EowMb*XSYpOQDM1s6# zYuBaUZm9tM1lv6=5j^>hGTqOhz6$i3$X~REtS3*ne2n!GJmT*=&_-2d!D%pvIRY!X zlG7q-p|QU8D=6&!d!XA)L3KhH*=M{H#Q?90JT&zIw*n(DaC2$k>ncPMbROnlH%ez z=5nuI-DC2|#b()tP>ua~dqnzbG!l7tmhT8+B%1$cm8}4^{}oYDElvQy_)MCAplg16 zZ5=-Mz3>0_+NMOA;M9`g)VKavL*xF07 z+_w=-C~y}|E#+yXynW7!ul#sjri(-%%Dx5pssSx2Xfwp&E&K;WWTZ4g1%x5X#FT7v zM4l9h0UCYzGzdAg+>5E_Tz`^^yFj-BV|(_{8a~bpkY=OtDkv48%7o3@FZamamEa7u zvnD{G11Y~X9D2k*e#zdthCo!P{$DhV0YOlV^s2HHWW9X(du?r|ZgKbeK43oM3DtG_1MqWfTl)0fYGA!$X0s`Ng3UWCetPXruAdu7ew_aNOtzHqfpMH~LUia>b z(~ygan%es=a}P++;+;1DzzT$JZ33G{x>l*{Iv}mUvcQaz0L2Es0sCZPWo?bsg2-nH zzWbC9P=!l?D*UAsG3k9th6bH^_zNWa+8s`wMcH0aYI2nsOGPb&aA#&q>xqhnpLbOLo7 z78*)>0;0-yvkqy7nh)*AV@Y&&I}-iH1j~w!16f! zh=+t(r-KNB^d3+MPqJ>y%BCB=sC<<5FbWdS1CU3M68LEYY)Y1WF~6Y@(lvWRe9U1u zm|I!xjRz}jEDpLYk5%_u7hBDCrUAp=+&3_wllSO)_y=hB-(YJ0Gex4#a6?&IR`!r{ z26`DNfhb82S3n<94{`l9PzY(~{-O31PKTxEuzrtha)d9sg`o&w5bJ)i06?0j>Awnu z)2B`Wj8_{#m)bEC%AqMW0-@%KDw;Hkq9#K;6Q`v=?0O9O{#S~_zwxF2#|QcUfYAS2 zfY3k9_lKi3pllR_2Q{D>7a8e>8@V}^c*rd?J4{RygBqX{1m7I++qV%B<1>?pXG_1Qr=GO5 zGkTHf^Cur1Cww|cQmf}@;XM+7cfAtcH^(YXA`qL0 z;LM*BfhgB%pG9U9RGXgt$Mo|a--2FC5!EZIdj^EUGFhQ4he}gnD@xI+5pTXr?NuztOF^k6ijI_CrdAXeH|tcT4zFuS$Hq zQ+0cLTgng6Q}AQAxIMS!rFLRkO-6y9SXYmy^~SkIb4Oa>Kd_5$EDg zb;$d$gHW3v@^BfsMN<1&lO5>b!G%QELZ$*McHQza_szxjgoLgna>RWzpcQeS0m6b^ zIKQ*POQ?&e3MNj?>z6n_AKLbT)>B^fHD{;`Fy5pw8&_W3Xg7L(^jqULVuW?; zLdolj(RxqpIOnBXg?XqY<6y+ImbMWGVN^h&{aHj@3onLn;j7yf8y&LD2!$hv6hxBetkrgPB@;^USj?*6{SsmY75m`mqjN{o@m=(j3jiqBgU+zKAq#v^^aNzW~^4P?J|xo*D) zKEk6m&|1;#Dm%MwnYhXJN>uiByxVB%fJYCa51!S)EB$B0W7ckvxuWZRNXVzQ$3UjU z;HzT9oNDTVkEvTg2l#T*qeY$OY+ssq3}KHUywA)W#(k-6fgo^^$~1&Fg_23nVGH+( zM*s61p1V84DL`93B?%~qfEqx_!Z`gew^pT738NIo8Ab*~pA*JRsDB8hC4+q&=G4iS zNzDjh?eVhcS|yC?T%@YNP?3#bK2&+_8(hCas$67H`>F~f2bEt_Jat6nIB65k_p30_ zPq+t?cq~u&J2*@@U(Z^SnD-@N_hXN>=t|6=6bCVm7Xv$US8pBr=J0j7mMZ>|?m&hK z^|@>7QY`8g_&^4B@jM{`mp3L981N0Z$zR(M;*=u9e{@t4Ag0~QgfEV;Uiuo-CvcP^ zcARzTI6|^sR`zI#$z_e9n?o;(eVNb3exL9_9E|#FRICo3B;Y<@7vl70a|GLFObKG9 zxw$#N*AnnJ900^KTK`b#tf`TSO{fde@O2_QM-p|9sceruQs6dSx{z5}0Y(+*A9%be zv1bk*pz41A{{11nXbz$^RWTa0p{V_It3i+iJiv6bMX)PmzUozMi8MjLa?C2rz}SOJ zM^*ySWzISdPCaX*g62FZH8r*GfXLR=9B2M_T;A)j1qM~Al;2g=6n+7LuAUyKS>3** zVUrlux85DiSgF2LhI}J*{@dWKi@H|mY)at4 zhl$VlYHoBEh?+cic+ibOy1I`}G&E2$l?@Pc-7ab?d@@+Hcu?Y&y)w~IJz9kv;->}kaS;1( zjO?PqJ1P}X((wgar?guJKv_wy$`}0NUSzm7!LT==Ww)ef?z9efW-#3;&lsL5_?zZ~ zh7R}*)YR0X=};uDtgOJmQ80=_adLktydqv@>av_xj;JZ?xmjOd)J<9|R5;t0*=m~N zShkVwc$J~H7N)@T!{IvdcX&ZCk`o%lyu7?fq&~^p@Nf~6=BQ|x?T5`$owV+p=A%1o3r#Vk7J&#$Z-3|gA+|kzMG0Y3qj?R{8j~r% zL+nm+DBTaAw0*X*JDSaP18D#hYwnap$38*R)`5Ih(>Gjydpv+;Ro`?g6;#QO5c5ilJ# z!P7J6)joODqy!$QR%XDCtOI@D(7;Cr{qqv^$?~akSMJkPp^)lR%{~v9-Pq>~5c*Rz z43%tnB=Hym&R$+;V1g(DmX)0M5smcNWij9f3N|+e>qj-4)#M~^7}v`S&T4T zr>Do4@NwDj3C1V;w$9v95}76rlCEXUewZJ);V|}9OXeJ?mo~cZtE2=gUKzDNes(?! zqp#Y$;A?)5>3j_wiV?%Q+~Kd*j_=GpHrD7%Ks+{oPV@iPKV=&CWk&$gab+jyS8bSS z=R7kN=aSPX9-9;-bM+>+N#1w*foR?tH>`m?9qnSt;2X~5K%RbYkNW6KoYt@ zFu=fqxk)S#UwrX(bsHQ}-z{nf(4%=luf8DTw;DaK_Za1pAh&b)xLhF!A;Uix;@IUT zg6PY>p5UDxXrVq?&kb1CL4erEVf$@&AL%mEB_3&gYmcWjN59`ZhY0W7{K?RRu_I|W zz*@}1IrQUH_wFYU@Mpw0h^PG2M!5sz`+9KauHL48a8+e>RQ2wXNf$=ja!Ad7JqJG9 z&So-_4+^?SE{4th1Xcvw?J787WR3CwJl)C3Q9b~x+-t^%g zz2}$JZ;y}VwI3$l4QDVjFe4h2ZJ$33t_DvxbJ5=n!ab%6`#aqUf@4VX(3(Tngetz5 z`}nN!u0(s~8Q^@TK-w@H_gpqE+t@<$?}ENP$Q3Ch%c(v`HO4id3tAq*=KQdeJB9AS zr}VH9^vUu@=EGZ$Ap@8!R9!2b5p@Z1Re%M}X9Jgd{H zBL!$KQ>3u;Nd=O zRlt#5uxI=t>v#db$_%=>ZQ=8LDQ%JW{PktQ$a$Hbpc(y?ZDH3y8~O0iL8H1I0M?Se z-*n+9eT*RduHd=)pzH+vqS1-Iknx#E!x@6A@jpak?R|ab%a&!V`zG#N^J`a@4uD$X zOUp!XK}9_X_-p0|Z_@;0pr3Ap%n$P&MBgf({V~n~x#ES5Y?ksJdKr9>IYaHA4jd z-YR_vbTxois(w1H;TY~1uq1NFYd)R(EZMgP63dWq2z zxB+T4{G4xb0@(>TxYurr$hPEY1g7HZvfq zr*Kk!R7P z{Gq&xe4_%-ugo0n0=FLs`6^&s@Bz#H3Ve@Wng873&;!N3%Cnp%-Ct5X&4&# z8mOx}mR~F#&M40~mNJ%imn4=rmIm42;q2fTB6TA*BZVUoB8jEFq&=mfOu$UI4rvd+ zQEO9kQA4SaEDBW&YD%nuS`%L2Ul^>FuhF>Da?Wr%aaMB{y1Ka-yDqyhxem9bv_-V# zdeCMuW^w6&=zP`T*>v^-_Corw{fK*Od@}jU3VH_$^7RI^0(uOh2I>R?4B`NC1KvYM zm-Gn94^k+=x+fhzE4o;=Zb~g1INL}MQjc`oa67DrM#xlfPS8W>MzBTjK=7+jx!_~y zLTKbqxv=8U=P;C?_dnm^li-~ZWYBC-yh*!>^+*tCY-(dId`TU?@qhtp{uJ6-pk)> z{cCpbA`3^#MwCa6N3=#t$xFx)$nVJ+N^(lHO9~aUimHp3ON>g_<4=V4~b<~<6DvxTNh=2GWS7f8&q=5ZIlAGsW-Ph%{i%n%T$ zQIcJ%x&XCcP%n3>d4dqsTdqPpEYxVE;QqT1b}(zJ83W6^hBuTh}9*NEFOA&DWk zw$LHs_8Xc&(k}IG#ZASl*6W(f8pztp+V#c6h0?_)S2*VlR{>`N*DR-qllWQqs;e{F zWW|;iPAi6UoD++yUb|+SdAqVGbDsT-vkk+g!iIz47yIwe{!y7SnUgR=Y4+*#=cVWF zYmXUO4V#di7~Wc+AfL-X{ysZCG`C%C5Ce&b0Op+DInf5EU-0@MY2&d zR(Mz5ZG^YaUJqO!BGN+c1yp$QzrtOlEmd}Yo&g{EJo;7$#`Mkg6%)nfo%l0?`@?O> zD2sAuzESlP=W`|SFp)XlL=R`TFb36y)R7*i9vcPI1%HA2W@tIdnsQAsOM0uF$gj+| zAkNJ8x`EJ7C?v9A@8JMuuVgQS*N+3s#cnV8sCsXAuzNj7Dx;cVI!w4{bl^F~2 zE5fJtT}ltI?Gj@ow<gkYi4`at?+d8X|!e}aRM~m z)oo$VQli<#mG5f>LBWnyzJt*vTfGC55~q@yQt6?aOpAMdY$bger2fn*#p2!u z$Hu_|t3}@{zf`NX{kddq{&q2-A^}k4yr*5*oayFyF8mg8nX#Qw%kpk5?R0+O<~4f1 zkZav~;fouV$>0G&{(7L!%II}oYxwh${^Xzr&Gr~LiWggth z|HS`XKwV%l*fH3Ko6*DNHD)=tV{joVSU6ocll$6({$uX&xYeY4vLk#ToSH|*&DS&L zIriA78+}vtnW9()ZBS`|g9L{3MTeu!i(4%7?TX}Pd_?g?>J>@cH{7aZLztS20>?`!+6qRGV8NpS7Xt6_0j>%Q=!R?+eIX!bzvget1ddDf}2yT4!u9ZKemg;F{%H!T~mfi*SQ z72a?j&K~ekRf%6ApCBNhj>D(LRV7)*p+<{sFq4^(d-KHzlexV5)P##SoHVfu3y3Oc zjq-7*l1ep7Rw{XiJWc41hxDpW^i9o;Q!a5%6HMN;&7+)p0s6fgG#qqo_ncP_%8vC< zPRG970!0nWhLDPph=|)s zNqhGm3eg<*hcfowvrQmakN@0~mNeFA(9(V6%e8%8`*QcRQ!a3s1id^geyi-D8k zsg}DuD}rioC&CsPilf4<7k?OisRgg?^6ST|q22X!Y=Huc_^WhOd_>l>ty70bJ)(PL z$Io+4n|j#@mvYIBx4?7n;<-|-In$|@y!E2lJO{N#wL+m*rBbQepKh%uN(mO^IH`-F zEMx3e)-8bZj{Q}f86;PZ4wh@_ll5?SHqXHqnYBs0A@67w7mpt%th;(6xdDUj!X8;o zT=gymY~=6hr(bV&W=CVHBUKW1F_5w=&q)$Cs@hYs%w1cZ)h%8YTPITdFGKORzG>Bp z;nnj{=QxnKNCT|zBpy`GEAbA)I*z^5o-^C=Tc;lVZ*~_a4Z;Y*k`n6@-4dx1!IjHY zUR0!%IlPNMN;Hr(N3}FwZSI{5X^fx7^88MCdPw>^vJBAYdHhXMCj&a=qknFZ0z?Fb z8AZ;51Jd^Dsoq0x4w31^=8TROf^uXGLDCdv8O zHHn2Ed(|r5N`_&Na+dO+BBsqYn4FWJO|qpsl-aXiYVOPLtM4oCdrjod)aoBDYZ;cCHE7gXoh;v5X|e#25*TW%A9V3Thi5eXeEi*irD znhcwep&p{5q$=TBR$kM%d73jk_Q3E6+Ap(hmJj61-(?e5I(rU3nMr+FNpp;%ZhN)3 zCvfmzB90JVB^lX&I#^3AS$JsJrnp>Dso3U7u5eh#2Z(R3P3Jp|=B-u?zBkC&9Az}M zl08P=p*&=@>u}gU^9^pDXM^|3;70PKdcB$Lt;X$}T>bc9TZb-4vNTAqbQyRi0o8$) z`Pqh$g6K(c+8T)<-Ab88aEMPsz*9Jtom{@xp@q%WsHrj` zZzoS&G*QGMlm3uA}80xMUV>X=)n4(qfWsq;Do}!>*fX zVQtZENoSd2vu{0a!)5I-!8|3sa1rKN+p8@?MY=V2?y=NAlQ4ast>N3+3f?)`Wb!OM zLOra7=k&RcA}mid?#>ct;5p}kN_O4>>6Pk5@v-;?4)g@{1L_1u8jcP!9~K9O0%o&W z#BlO8q+rNXPIx+edeUHGP zc)osN^T^QzuL zBXPmK?dmZ_#yP{HDhHqfeDlXK_EFEq%&GL*@kxH`uIr;bo`84XJK8sFFg%!6ZjVRS z`_Q@B!dz1ArYNz!w^YxaGw9jA-8dek_ zC_!LbFJK?Sm$A?AgOoQQ+ZiBTiKvx1U`{=dEs<-Wk^8szchyPV=}TBtSzz@p&?R6R zc(57Mh2p@2c_&@cRDnSs0sL>{lr;XhSDcBe*e!1qKi2>Wg0P7yo2Pn~Ja7)zyHayXV6sdp8mGO0<8tP45+9iuB}?%jztY-6gWRE>&2R zPRbCYh$_1)Cs2wrZ>Q009&#e9Fe~dXC_f~x-qkKNS)9xq;ox}91GDv)h`N$N7T(qF zNC`=kPeFJVeUq=lZ?CK3_WlrgXOerj@;watDBc1s@t#fmD20b6@;$kP_$mKB`$x7iZRJkM^_M=As)Tev2_Fr8{Rh%qS%^lapFKtgYj9#%DvEqfE=8hj=mUO=aK zKkvTOy!f~%j;Lpva6CzZaq5C!Lri26HSBok@Lkl@+ap*mxdCAurvg_krvp+LrUYr} z*Ha{Bod&$K6l_0is&u&YTg~S+%(Y6F8P^0Co$LLp)0;_XMd%9>+iZ?CIz0{q8>s~0dHed@6L7{J z#`gO3`f@u}wbOOlh&Idhrm=xdx}o4^nXw?T)dm-L4#aHYSZp96ovw2jVjX2MX09E(Ap zfy0j1z$+2wnhfVuI*~&arx1QUYXoUKqX1DYwZ^lkbH(iRjIhwUSz z^=TCYXOin#$68MvB=3%u89d?nLNJ)3hc{jjC2cg-?3Q33LB)G>Tbyv8NqATyI1Jtm zS$ajtdwx7!V^y4opr|gDEwg|xbV7*HVMEBmK)XNLd@=eEtK^ov(pjm$K7!f&tSsCq z5HEb;!;yRs8i3YX-l$^$$lcL;;`%cRd?QSO990}V8}qATtOctLt!>w<+<`b)>wXR^ z&3a{&0j>O+MZ|;hDdIcmmk|J#ExwHy!#@pDjd%?e>NboeAC+g)C^srTx;!#SG54cm zX`-fAoK3_?G(uoqAXol2uAxCX@*{+A9??Jq_fOZ z8xKPNw>iOjcdFz}>j)jhA>^ z^YOV0b6_P1`o(*_^Jw9!fv(1^o-H?_zPw3m>m&uP`!qiTn}wlOxy9cN_tAWf&C$7e zvZM3lV-mctJ3QMr_%3P;7Z2Oa>*fJtwCKU%63vXpV!*o7jjQ7>)lvQ};w64qqtI-o zbt|Rl@s$TVo$HS7e0F>C*x^`5zLR7U@2TO@eUE?Y+hrDR7@S1G=nBQpQvJ@R#iND$ zsJr!wx@PDp1mLd7^78SpFFrhQT_@G`_4_yV_481S%e4{{@w?Gv=voz00M$W`tt<_N=-)x0sX6j*X3t zhL)a&o}TKr1(k!VH9*gW%G!bOA5Q+|N6^T@z~0OjU}j^D|HrSMzKtV*i-6z{(f@q@ z5huXR_}@&{4*yK+cY-v3G&FS7v^4(>X5?b_e}Vnc{9j>)2LF?lt)so=UpW~X&=^@7 zSs7Ua9Dd{I{wv+@+Wrsle+B8HXZsJbzl!*e+&KS4&Mt4{U}Nd{rvysYW&mz_&c71+ zPw~Gi@(+}Njg_svk%Pl;7&p^DA%BPf!1+!S*}&|FHR61b;LF_C|UD8+%0?8%yrL z(y;o|#b=;q`3Lgv`hP+>Y5vTkzs;+EOxnMszh^Bs)Nka!t^nLn&G@XGKtQ}eVuE~% zF2H9QUp*8D7rHK6h+46hmj+P$T3cHs>?n|-@}~%>sOoqn$fo3f^k=j7uM_k6gGC@d z8WNvUZ#LJYf%4;7ZF_q193)yhU1qQ`+-5N_nB2`kK|z6h`9cTy4iW-H-~)mG=WsOv zF?H_r%7GLKO87Ui57I9VY&by>1YS^hU_qci2VZA#APnqFWE#ZCe?b3uUPuk(Lli|+OX{Ed8r?RSW64t+m>{*lICA%TI<{4=XR2bV+8==xdQ_zW%}{fPKA>Aotf$w;a&=QM?Mk!0J;15i#Pyj-eMIQfHbRe+ znxmg0Y~@rH$cL!oOub7Lc;`lEm=6?cPco`Ezqgm9P6^M{LPXw^pn)pP7y*xnvCq!PUP$%XnI-@5 z^q|IfT{5wD`hm$)B_*U6z#48=POWTqGIIX6%0aDm%*V2-Io($ZzEvsW=Hji}ll8)U z@^_u<(6tU?5N3m!=F6cRG|k3-lw+(=rXia~;x`wtz^ugf7__~kdeE_-ug*w2+v1We z>Ywt@t`VZGN(zadOw`mL1Lve_`Flrs0*;m5hwOp{^J}O{mYxxdjZUl9aJle%JY*}F5cF1*9vfpi+Wc}Rkd<~1FE{0h0cIEi z5S7)B(x^jhGfI-?@||Cb;eyLqk6pOv&$iqcDmv7tl(j6yEAf)Ie4%g9n>pcR{4Bjj zTMT(6Cb+@f4|Tn95#UA(S7RDYWn=8TD|zlQOw^q*TUr(Q03EEj+8f%LAT=6!i33tt zD+bHWnpk|IPM>1|PB+ zaY7Kgw#k|gSS~)eFu|nXv1`=IyhYG1BXZtp9P?c7x}!I6w#*q%s*x`_-)Bel#G9+@ z6$T@5RvJ^T!HNuZ%4bEtLxm`ZG-cd#=S>ZHObmtr+>0F-}057K<6U@DdAJ?MyvS0R1XDRK6c%<>1T0d&zebdH|`rf6`Yv+6z%8JeGKTZU; zcVulz0_aY$REB6|r=%Gc;Mt7#IbV7UJkkGpk$#AVL2=Amr2-3T3 z>v!|M@i`yZjbY9L4;y!L8ruwc=(Cg&ax3Db4VjmJzo0AWeB>eDGu=^s^O5bd~HxauW4aCOtUg9Yi zZl++*dVRs!tC!4qQNZnPDzTBGTBYb*M%p)=mNPu%aAd$*4lM zM&<2o&?6+@)pi#Jn@IcbP49V&Y>K)*7x%7ksX!PcSPX0w#*b?jDRW=}nH{UfqlxDz zu?#Fm^QD9C2yS+DnEY{F_hgkk6La}EynKsr7oU^ZvUpO+6`x<~*@(cwzHE~H%WBW` zDSTElsgl@mNu!VOpn(f;zSFd&IdxY;$}?ftqh)*;1XzVIVUaA6Wsh}hyE|)E-o=Umk=aY5G`0+V1 zJwSOfGd5P1V_%OeKXB0O`XV?m2XRxx4z^9Z$1OdPlvFBZ%&hWzq0V#sBq$O4V5bi4 znOHth+eVLeEwHC6`sj%F+9D^?q1NL*{_m{{{==#OkH{ewMsog}mc7`r&ym7v zRtB!ZUz)kos>d+6le4QVtOdrp^ODo31;)rDqoc53X&Gc!s9;Yb0l}~G5f!}!vA;EF z&`s932y!5~XF_huq2fY?w}BfUa`m~M&k3)>2Q_QqW!S~SrPWhMniauGtgHpfwAoS< zsvKiNWXG;X^!eI0#AJc>HsxZe)n$!Eb?xT?vyDa*Sx)S4FNZQLvd3(p&K zXrA;osLrW5Gtke=*JAkHAqNZ3MP50q5H}Gi*-1-#d8P0h)X=J4@Qdl%DgvgmDpBRp z_6-kFNAJyZ*MU7Pxkd0H!=PZ{l_E2<+xCRiBl*i0)XSUTTwT5f_k+4A6QR~(hTY7B zNz9r1PwU!OC0jN`Bf+DiV1x^}uN$$H&dfN78yUH^hj!~i2F6Y${|I#^uAYCX!-$QG z%Y$l`HmRml)#lIkwl!3ZuB5;(r{o~34X4pv7LvRFlIqp?N1IVR)7nJ`L5> z)I>rCL@1hvs4_LesRU~HoTP)ogM*|bvIscvV8S~Hm{J_1vl_{3h_;8GMbi0;>+LoY zWvuZdEGR<6gfkx~orj(~0q^X7k94bohwv9Hw1gJ8jG*w)JK$LpyWZ!SOW4;7Is zvs4bADP0eL6<+KC3VS=5&RSKe2*r%}+>6sQJ)g>mUTw(f5#9 z_j&@&0Nj=5Dfn^?9n~COxm`sL73=+KZVQ+%8E)kJ)Op~PKhaJyn`r7B)`{C0`%wCV zr2@%&w0d~xf6YcN-cfP2d@Tjt3PFJdt13BKod!2Z5qdA|l>62<@;y2cDAT3OF9CY+ zo+x-R#1Jg%{X({5CBN3g|kaE9TV+Q+!?kP*zzoRXU(4pvZF5<2NfYq@Bxpu4R`uI3} z)sN+1!DO-80n2cLcpPay`}^AN?zOu$<~2^fxZV^{Bpud>n}j8$rlP#VLqWX;6lpoH z^;i?G)~R&(6c1U>f^zI6ww)*Pnh=v? zMk=m4tNh8Hb)a8?+hsL3$zhWGb+=F~A+K8n`?f4&kzqGU1T=bx!?XEmG%*1iGBtw3 zsWN&-fdjqO`4HAzqq+GZ>b&0LQR=I9d}(W0P@73o2liBfJR=`_`+77RX(noN#wq5W z7@D#Nd)ZGc%+AShrE8g@pZz5xk*~Xlz7bkdq$vHV>!g>Q8L+;qcQh%ayjG zJ^0F9g-Jhbl$R&=k%mmAp3EMvFG&#@fD}2mqab!RPFd<1h7$;N=SQ=&-#mp6gHS5y z#z;$UV7=YOb|Phak>hW;;sh9rmA;Un<1UrW>fYJEmh=o3FOk zke@;qcNE}^fym7UT;qmdIy1C4Tl$6V_ zcI#v`#R(;vANLC2E%x*lGnwtbBVPUbDCR@X0QY3>jzW|F?i4H%5<-R&DbmO`v<1X# zb2?LTuCuzHPn*d^GNDytHkl2LMw5>m-`X>kr~O`_5uO!{HV=0r#O)jV>tT}!^|DKRw7!D<7#)|;OnuVNi8dV zT^GYDn*D)Zo2!^Zl*5J$-)*xO*_k85~|cW=)4sY;Zd3>zV#HhXJ>gm$nt(x z0*Hx8l%F=6lUeac+3^&J%F*MLFpyyLmPB zTXtG%yc;`ELJ1}HN5icn*G553=&w)usv)y9>pYZWBBIi+`mqy))I?~A{ll3x&e>f| zTlf$m5J`%tQCQfriswOd6rDlPqI#5@J|VO^g%sMII5J`9P9iA&0^3zsVb0zh(O0}^ z5X4d%4W`&wW5zKZD`(-O)v{D#`Ewujl?A63hwKW$&ENr`66xhZ_@;A}CUeo8S{s*m zi-d#QT@`n*;SeQ;iqvcA5PeoHIRas6Eqh&PEnRVH(?~F{`)3MA*#7T#E{F0-44FE% zMHK$7JH8ZAyQq;`-sbziE45+t3N9Sf;)evw1xgjMp6c%4F9C7gzdjq+1I6=7`L3n> z;c>H7fdH(Z=zzXPO8bL^{y{hOZDmDT>3ydY^A7jn>TCm5FOPrbO~8W5W^N7eo?qatt;lCdGm(h3?J+sU-t`2WD-E9B!lpSMB(#m4q2&e_Ix@I3$)d=Q z%=&HFwau>a1o!P4MU9}Vve28isxpofT>)UZwNOZNm?!1x_!*1YtrX@Y`{YcDXVU+< z#mE{GQYGZ2U6B}up!OKY$tmhCwsJqsb%H=m8)L((m`wAG(@S*gZKb%AlSH1>HI6C)A}a zM^8zF8S`L+ER18F`jN#4JqE=jY3tTz{C<9EeORFQ}V33#fvkQmv;oj4tBAGNsm zgl!m>B^4-c;9%f^aGzSYCEa?{TpZ6*?k14eSCEkRl}8!jANHL+`W(#p)~bThvqgmr z7#rQyR6I}H%JaxWUYN_B($Sry!Q|Wgmp)s+eob>^wZOoccwM)(rLXwuadmz$g&n=b zYi@2%q?tpnc?b~ndj5C>9ITx?m$0yD)3HuS-#8fbtiUc@t(*N~p!V<06~3*P3E!XT zlMz-R9-_&aes}_JGG+@uWS(>wR}=3c6nOh_j}-EX=T-uQR*8jo+RBfnTpEO4lu4L55d#6y|`$Es`ha2zgie|#JhHf`ME#R z`zpgVrgSvJ@+wQ1j*tNk_rCjQ``b=MLtr|ty?g!_9R5Pj= zSp3>~2^1J69c*_`GPSa|zBZi-gUb%QfpDu_!Bbi|+$_fcr{J`~vSe8(EEl(gK`y!}Duay^KsPEJtypbeXo_2;C)%Hl6h`rJ-sjl0Fh zNJ1}%wzpKt508)K(ZWNS7#0o~J4@jXtvEJr*}Gml~17_u~7 z%WKfRr;#7}{Uw1&t@GO)6v-cYIn1E&EzYmo6o%@KAMXacEB!MeMoOMZ842tnK_x^_ z5#FleyV=D7=IIlCIqWd1EvG}>>znn~{3W0V8lCIi{00vjY>q{e*Vc1xX9w>l-`D&74qAWM8mT7@gXRI+=>7GK=AUc%SbW$!HOn$(T3TJVTg+EDpXV)8DF z__b9#Y#4(%nC$hXXM@N@TGIc4qVbZmZa-L0OJ7a;9jopf#s3R)XQDCR^oJqxvbtMD z+9x6Mc^{|J_Wh+MSg?s?7@vcR^{0_sYfy}#_`5mN%6kvoOQRm2%ub|C#=*L>)vCk& z-9l85GvXEGDKF!eT=4};SZ}766PnrjY`ev$J-1k4;wIOd8ih9;+9KvzVW}BvF!2R6 zI(j9sHjR6!HkNmiWTqclY?W0RS~Eq!D^g_@6(p<#2s)FFZ&T% zL!6HgR;+-9M1#Tx?-#KsbZ(|XcsAy0L7Uo=#z*2jTMu(jY!Q?saj?N)o=XZ!>NcG zKVJFXeB<0nW57rR&}TfluSW}!aQ9VEjHEj-oS&}_u9*bHzBu0b-48zEwLNR9A7F3$ zNab;MD&u+8xty=$pJVn#LrtF3A6lkP=>1TarAfUSs+_GkZCs7iVsCV`t!xOG=0kdB z?i7y{R)(FqF6q9`4q#*zJ}cI@h44F>{5bB5HRFOn>EX9_5j{Jr#*q&vtPQ5U6btK&t8U)S2JX?coJqL4B2He(%ltwlIk^ z-7Yl_Um_c;ChAqQ-oJU?rYLP%Pkt>+!LM^Nu@as0y?4&?!(*X|&VV#L?P`?ELvvbR znXBW4;#dWK`l>ZeyeGr_GxfM{+&FEbFpk?sD&mgt1Qq6$XdI?cFquktcQ-doth3uO zEpy0o9)kL_#12P30i=Zw>v=FE&$5`&asS9})8qBNPR4{75X+7G2${0y$?%qU~^!;#at_mIv zVarUO&P{D>cXvby#{+Qnx?&nY-%X$<2_N(MmMm8NByj?mAcrsSUR+Tv`~>Yb6z+Qj zp(Wdi$)Ojc#oI=|evLT9`_q_$|M7B5vMl|Mc5T$Qr{>#?35|_({o3!F!F3k4*l%Uu zcd0EIF7;bx^ca9I-WY0o--q0Cx1X`=t7qazloAAz?Cq36W9SQXcDrw-wVM-^WivgV z9$iNh$8cDTukoBmbm&;iNTfzG7+xoJ+5j;vk$4>LG{sve2{-rT5Pln*O=ElY%n(+ChAk^~YpPBGa zKDch*-I#`!d-+25+VX|a9#4VfmC!vNm2-JIGryja+A=7R*V97uH4xA<;uvKAcR<}{o)FNVJ#W< z@CzoTkOe?61<~Vv-X8jmuGeUUYmL1NdXWdFbYcr%tN7aoyT9!W;2ncr8SXjavgdtR z(>}{Hxh2KjlgsR;MTk+`W75WUfJI~teU-k4{mwjzIwHtK1m*@!Lc*g2a(i@Q88xmVz^iG;ZgVh{Kwd<^!l^p)4HivXiLF~}Q2UmP zX+biWgGD=XF;j`zG$v;o(Gh37WR7+GQiqj6S!IlhQp}K_e$y=P<}+{+a;_}kkRIXB z@{Z!&HKTZtVld?L^tiN>|Gi=w)~AsaIk=BdGp4@Wm?ceNq@~V5FlGoM)PK1Wfm%Bq z)ZBZO`MRf6`kJ@i>BPD`mq$kQ-lMo%%jww(e^`Y_JZ;t06qyzq3lJ8$?$;sJdYk8{GX}WWimD2R zWIyzv;DJ`1PdO8;L*<+{;7ljYpvay1L1t7I?&S|lmds%{4{zvCJg8%QgVW}8ejV}4 zCJlF~(<3H7MoNTVK1wdXs*oxqx`27{P|bj^spBs++ngq$$9(f+GQJ5;!i(`5iM#k@ zt(ugs-I&Ne#p4dfH-hX{>#g$J-#~%=N*cje}ORTRd`g%lbZ%dQ2 z{)71wxImtdqBn=FO!+vsunE7xnKw*q7vx7uI5Q4AbEulXQ8C#BMl*xB7ObE=Q3 zg?P2~P-zU0Lr@q^#=Ec$!D9d2#k&Pfp$!IpKlbxJG$g!=ogNZ#ZmIV?MI#bxo{@OW zm9WstzTn;l7APfe_%pZpPu!PeB?O47eVf~JqmJkbfDx1R0{01Zqf-_QA z6{D;%7?_SE(f*a(xDRQx=<~R#WiBAq*)U0=PvKqRw$1&G)i7XxVW}b_)li^o@TdwxQPKu)N2_XhZyg*!H z2pDBTgN72xlF5OG{JD}PCGrAW?5P&I$DDDXiUBA>+Q9%F>K6HNMl3Xn znHtv}z%^-}eQSF1hDaXqNZ&0EO)5;S2|Vkse*!p$Pr=SIqY~3*wpf$F^`fJr)7$>u zk+XtyV14xarD=N^or9@!;qcL2k2Z70uK`#~-W$gxyYT>O%Ib$M^fxt~580cuo8k9E znTjWmMs16!?wU=LiT;?1ts)vmAVVr@8lRd_9kM~@$WDj&)2f*#%lTbSCOJ)0u}57< zHF&eqxC?ymI&;@<=$#~6KrkvS*R>vc6G*G)Z2x6X#SSB3(7HH9=6pQm#a{0T&-HyA z%$Olq8kn;#Q?e8ZN0LA?S%T*hER>oUwH;}TndIm}yfOm_yNm^4bB2g;j(zEC-XI2I3$OqW5B3EPrZ)TI=n0aH2+3m7H`$}!1QPDtB*tu%MeNDS>9o4Cl>5Vj1 z7lE}V->f+@zm?WIC~R-ytc_piy`BF4=Yvc2)?xiAic9R<3cOL&8`>h}+S>%U*SHJ= z<4OrhNhuYxV$}e!U_K-fb6NzFjAKr==?wG5kX0CMSykF=SPBZJ;USx3F=|h@Z5TZ` zS?4PrOw|G9&*)GV(tGmNL_>rEeixfMae9=W|oWquD z&0soU9>(F{-=hWe0B_O@-I)xNO|+ zV%_Wht0I}Nf5=ddT0n@=g|{zs;1?uO_XH|$0ZZBsnwh=VnLY82>q;jqC!NY1u|q0&7((6N2rHcc#s9c9$dLn^}UA_rL^Uy{ZU^+<+D$IUW3q zN=9y)R^ZtlxD+S{8Ct~SF%MhNwsRP4AWh1lj-UP10N_qUiJtB(57sazBT`B*TECC4 z6C($dmq2}b0M!h#I4&^&YOc6;J;_&LXRIb%i%mocV@TGx;uSgUUem~y0Lty6dC_Y7f_ z14#$@c+tU(5SqC5;hxeA#7iQC=;qzj3#*j24(Rsjq<&%IPLJi?E*^pVhMMSI{Hra- z3wN#Mp~fV4K$UErhUY!3b5^E|XR1MN=;#60rI~(|LOrpqNy3!|a`vRo77Q-hD;N6r zgZ6%CS~j6R)VpgfOcwInPcmUsrTgV}j_(+>6likLA55m&3U=>j#RzyUIeeLvBtO@n(1 zDRtI45}U+w>CmTo*eMwk(|+WjGM%W3{X}tqK4CYt51SAWhWq>>qMaC*>2ke=hZZYN zS9W(37+21aBuS7It(V+wxOhbIGyUwssuoe^D=IQ|1L|7?Ku42=)2Jp*O7l@|5ihctVe1{kGi#a!+({;OCYp(D+qP}nwr$(V#I|kQwr%Ih$@^jNeXeur_gbr~tEydn zuV&YaxAv-;3q>2?w*lJU5Z0sUTA!YP0-LCK+Mv4I6dh52T1v!%7m=sz#+QCoAVlme zATCqW(2G>s3O^8GfVK;tTZQ~trqS|YHtSpP8)*CBq;uU={TeM*BrO|FhO~uJ0#k8L zdjQU21D(hX$XpCpi<~i*Naa9)Lva=tis@Hw!1Rv%X6@9zaSXdbVRS)_#+y8w4 zN~KwC-VInBvfYc-$FiCkc!dBQEejO7&`z9DJ&QKG-^|3n##~)Y#T7*-(9sicTsWRY zA1mLqe-S6poa4`HHx5)U3}1#p2nF%DK9_$T{p++G7K0QwO1t*%ov0OsCkvK$5Nny` zctzqW3bR!*CN4s2;`IC%Y#Wr2Lu=I&H1cIQ>egvqoAysr`m7-nT0RE7NP!i%3l#(K z0e9Naijo-~J4?%;LxHfL7GZxh+xH*PE8k##=OiX7D!$6mRoi^Sq}kvcuI?TwCl(HlI%d#5US0-|O* zBNo5lHt$>RH2eT#F;|#vvpSlvTu~QE72#tpPoS?Gp*wQ>gM#}9tQlUb<4@_{)~x8wZTcmAP-C;%XnKB->{V3j)g&A!DxTo2EfO-ln4t_wAjp;ZdS4!7y z1E%H+SW>oT2CFB(%P4Zrc-!UPoin7wdOgKz@8=?Y3vi>-*^(&nVl`TlDWx&|&W<15 znhzLYY&YZG)`m4mj|Q)nL{-UeoXZ4VioJaS_!+1=d>|f;yaQJ1Ia%3ps@VBF2k!-h zcBXoepi-*8jOc4Qred9pESLe9-MLoA;^wn2Dm{q7S(?ty?$b}OUUq}ytgYssy9B~u znBpw1Q!x=33%%0Z!xyww>KEH4-X?tv&dGmMAn<~TUOjalgYLm0Buw~2~a^d*A{TGbOUQ}I}K^)y=A0&<|wPs;W0d} zHeIwoTrYaZ^a6oEjkGXt7o|pd=vZ%z`E5RPGDQ>Px{%@B6FL+Kj0IBVL~F zVQ#mxR=9VUsJg%auOE)&vTa5qq-R&y%xAPgwV&Is3%DcID z%{SjAid5+_N7U}5%!3lV`7wb9s7~*9YqXJ-ZrBmDReqI(NwHlW^GfM*>pFat0I)LL zca!RNU;o0sw&?X5s;@7?mKxgj^e-z;FjICY5e#nupQNuzc(VcYH%#@Dit+A`_69Ss z$uO7wG2ElG7PSt*FC&q`<|G82+8;|r(r^Y7h9}A5$;_1ZKZvvNZ%hG&<+6Hxm0aHk zzKJ?$gzcOp8cLEMksqE{XgTnf(x$Rcn6$;B&D6z-DgmR!KZS_EdbGWT+1xI1z#C-a z{%%EC=uIckP0n{lEDu6)>cJ1${-JZ^!X(XB#Bqe857!E1pYoA&Kp@nQtJ;%8Y z1sbr_(;1X8cL*K`rDpEJQ#zLmkWpFOQg-79As(5+0iJ-^!l zU}}27;ZM_VXHsec1!@w55RUSWannc=0|Y3d5t{AnU^a`AD93OT1!5?JvDHYsKUA7H|U$yvH*KL4FuxCC0F>sHTTX zDJ7z3@00cyV$7U9lo=bj4ENZXZnxW?0U_R<`fb}<%3^(S9>!)*gRL4vVbir?JRFCHVb>& z58mnvlJ=oz4}_h;nDB7-xNLliF=?e;c`mQkPLaNc@_N=j-M&H{o)de`72B~gfF~JVtEW`ZxPM#l?u^M1cZH_36gj z*)Vk1!xG_Fi|713i5Yt&wmgSAc9k@zGx6`$-IrYZ)8RO$I6@x~wgU&{~4EtXL zW9o$SGHa~2x`_4e^!@Tn`GkA$i_+FKBizWf+W-t#NG90?l>Qh0Sy#j9-mSj@8)Ls* zJnwJm=6d|o;7s96wfBdaxE?>e#lzIn0q-SOZ=ez2syP)}?U(7OG+4d=DC~a!4Cw=858Fd(fy-+<}UN=6aoe9iI2M0;nzZ* zE064B7^L9$TJ}lwhpWRJ&!&Q#v$t8SI+H1MWs%f+@B6EKwCkPC2QUS1r}B+{M_%xa zN&Wq;4sXN)!VL;i3a$1F3>qu*4&lFqhi&z$NnWf!^Sit9j~w|wE14|4KTqvw^$X^= zG8ig6#vWGriag4_HCZ5eeYeFP1ZF1sprN~56J2=p1(p;!QP?InBEvFj?+3b7x0{%G+}UW zfO&BIGG0eKuFygWVJyN35KCt+G@0JGLcow4FZUciAbT!^lGPIh9cQyVT5vYF>!jM$ z7-lhBbbIuN2Z&qvhgj6>W;?Ajp3Hig+<{JLJ9`c1#o1v5QaVf}Ag|!46B+wF<=cLy z7)Vz?WK)zZ$9+yK8GK*|ggo=;Lu` zs`^~01IBH08U8ZxbbG^=6>`99yS^-8GL%%YAI4Q>%JX7pLY`uCe9Z^n@({CH4uzN; zKVznTo<{Dpx2M=}++vy>5}`WUoKH^|CL|?4JdFls%<5?c&S~uPd;l$J#GUSUFC-0{ z1O-x^Gl5LD$>z1UJ=H&vh2=z@42-YUnLS61Ki{lXojyP+MG}P-9+OBz2 z6bJf~qr$`RG-c-GLsYz}a@=*@TaKxL-Y)z}9MJYs(LuSG%$>${(Eo7Sj~)uuY`y7> z*Pbf709NlYaHnhL?DW&98Vtmxr-fv4W19!Z+Y6L3dyDy;XBCn;B2B|b*8$LmENMn> z?9JWKKS`$ZR5{w+bn(s=b7g2j*VR5e7KBj-d&RRw*a#uri}Vf}$b9iRTLWLcp;0{` znHG|aeWJ`_?^>SBa6Ah)*(Zr^b!M}vJ|Oe;Mxo=ic89~v?U4yZC80a9aNS9#@yIk_ z0W8w4meFUmh~r%pM|( zN+>}ZR;orp+_9I+Cd^yu=VQ1l*N|fUuBRC!36oL(p5ANR(&8LTL1-hU>r12e)xXAK zcd{n&LWWkYxkSRjb8knY6pev^s#b5DIM6z{&9M`~nMHNX-Y5|S6McDv_XAMsb`7ou5G!4NN=x@e^IeC*8*Y zVSCZZ=r>=lfRZ)jCv#bSR!CQK#)m>%=9;h^8y-r#;>+L4BZc$+N~16yNi+VD(#G8v z1J6bvO{3f0-kILuza!c3inO=p%M$ZlSmK}}`3xUFe{uyaOoYnBjHb*L3@Gbs^p@su zY3-9+Yy17uIc|Z+<~K}8X4&1L$pE~T4(cg_)o>2R>-w07{fXr9^5KStgDB~sdZN$l z|4XsPZ9HuJ9cVh+FdJn=8C1olWrMRbAmCFAbrgI%ivWHQ|D%oj;w-a0=b2a}@dSG>H&va9 z0JwAXXER;JWfg~;ZG3X+M=wc~Xz2|Z6wDn`>=CHsdsBKwNu4@Fw39h0p4QDEK(4ly ziJ(**#=5U=PUos*hcPAv4p4U{9^=E6Ee}$Z0gsG!j4um=ft>mZ=Ik)(PgXUZ`3)~oWVZa^oKg^$j4Yl}aHpyg|~Y?DYZ%GSdBCr?=e;uMEf z`4J{uIo|0+{L~a~kT$@t3k4|^DJ4f1A;fTHVyv~h_bq|b*d>Olw zh08Xpe-}qA8$6VQs{LzNQGPeS2&*L`rFBoEo!_$rJ>h&84Vm=s5I9}Ybtb`!nP|24 zcd({?UIUdFGq$p;QlIh>urGD4$PY{plIX!3iuvt}_ws^Mj# zCkxn{^C%E&Tt3}cMv>Jeu4%BL^Q&za)g4~Qh&mp^V@S+oBE1Vpu2&a>MmbWvk*_G* z1JS&@r&+e9<1;iTJC)uK`ktnez_m`ZQa)>H$adK)u4)wZ;nOBd+Pp1|o^4g2!+GFr zc$}d#{X{!{&lR}Mq}%{MT3~92tT4@G3h+!@X+AnBcf=}3H099r%A^B|(J+y`uSbIY zU@6dlK=9<=zx1;th?b)P(~jIzU%ysGp~ZxvKjN7^?Pk9S%3E2k?eT=>W9R{SL`Z{Y zwwF(maGT4FRni?lQ{HXJ*T0>%ZW^d7prDeC=RbnK@8`(F5>51{pbg=?);b_Cg-W-D zU9r0zzYf1dBwj9Mo?DD&bnSNHu>Djh)P61asiz$%&HWL(@@6@|&DGK-SC|FLkv+ce zeI@;JxK#4oK2I^#dU3iMbEX)kbPqW{++;`YuuT={?GKdR>b%A~b`S{G=;c#N+34dT zA9rTWmI78sEd!0W$l^LD$7&otf~W8lwH+D;0;7%P8L|-wi>hX~mek+v^ELV5=Ft7& zJ$Vf&RvKa)7z#1{Q=9800s$mBoN|9_Cska?Pc#Rd?}%`&Th6Up%}Ghu-m_BP&a$ zttrj4lLV$#fU$+EC84Wt7P=oo^UZdx%f4OF75jz7N5>6q_d% z=+qLP7Js9&{-R@<(m)PFpMEjbyC?Z76?(U&2btX4BN6^c%0b7=Zm0JLK^2J4J%{(|#32TI?DWenjt-HH^0OI*1Sdw|qBusajy;iq$ySU}ya z-@4n)$AM|t2JA|R4XcW=4$koK&tuSKwXax8kmLvokG=?uk@8a&4~Ir(Q#EUxwUt6J zr-YCGYr6fJMiWC6IcJ+M!93TX=yw3zR;6C!!umD4ZWKjshj*>6em&#_gdu z-qK~F`F`81M_gjpEYyAZ8?l0dT&d3k6GR)owz@lJWRh&9h-{pOQn_@Jc!l8fXqV&( zwU2`!Q9Tr=V_xXsT%hx1%zBn$47qTO{-YAhIb>#7gfcjxv#jH?w?aXzu+Bb6+@_H} z?WPZ|c17hvZV|3r6fSe6G%hI_1A?0yP{3rsP@ZUy?--pD)9j0xQ}YKpqHw@p$&YYg zypeEPUv|8JK1j2$zUQ4p*Q+um$HwHT1z#y6tXnukP=zh$OHahpSXz zL5kE$;!f@>jmHR3UV>X&`Z&kX6S@yz5M+AUv7?7Tm}87|}$qLINhaEVDFN0Iy02!e>9LeUcr zk0|`m=yuRBFZ0M#`t>a%iEa=*Zp3m?4b)1JA0TunCkw-V`lkx3L3VXV^aiV0`Q(uk zbp-f0r8TI^6$N?L@;CWDz1dEPqhtmLJ^OX~dyPKB_DU!v$_K51>IqHW7u;H8W{ zfXNy}H|MNmjWZ^r^;)>~U_eMU1pJo;paG%IpXd7|tfEW_EXa&cZP(^_YKH75bZ zEHh`mnf+Z`ouG2%CJf>*N zNX^}Y0Q@H;g$+VpO|v4nuuHOOWH@GyR&_I%6sYb{J!{d}pmyW$&g-jdyHZn<4jep# zIg0F(B6{JHY0>R)IskG+9z|KyZ&DMk1n&4i9Mp|4OEqwz5KLgPcRg0 zF_q&YdG$b2haN+6V)9N`q%P8K>**=g(_;mFBv2ACvU97rc@zDLr;E=uZyZKZG6ioK zXtq8)9#e#|V#;_TI&Fn*ujVxZk9o&)lCKqdP)A9HU^xSStFy!XFL$^17gwc@*9E<0 z@%zJE_nKIR9~9=9R8JKCxU=SeI%31sC;A`Z5b7sE2kmVkkbJ!TsDoI_$99e6Tlyjf zv8ON_PRCH7+{j`<*29N(U))7KKRR8j$939UDcx9$fmnK7ANHL)0(*XP zff|nMvz#ZMvhm89GcWy|_%agj~JEBu-a%u^)*_DTD}v~-*Di3e}P`$M|b@7!m8 zttSEeQ$?Q*HEv;Sy>AQmas(3p#`~A<8`J5gvnMGQaVX5`@%P=QtpewOXbK$8kT7S} zdk)XfrKttGyK55c#Ixu0AM~tS=NDi11NDC-YcafUH(M*rr8!<4wol0LZ?u2q)}l+M zI$SKICqEKwxLSgB-TDn3wYN6nv`}BYPLWl%E?)Au(}?{Q>~;Z}NgVS?IVA1<2V|jx zw?mtz$d1)T50+d8p>>T3s1A$*<^ur)fn-Aa0D|NMYpm2ixWcpFFr$CtmQQi5?y%?#rdK$Fsme1{`8B$n+XV;qe|5PI?$Kdjy+T{h z8NHC~+tHoDymueivmxgHA8f)urTB>NRR6)W1RK)RE$Hnnm?s1R_>g0A3H}fKz9n^YnUG_boe&^G1oODP=o0M*QjZtL(ZY8+@qd^M&+e|Mw zg#Y+6$BYqOODR4(HqM~tlV$oimo5#HIpOwcK7jClEb^7w)7`gYyF&SPN8c)0Mw&uC zZgexKOaHamw5G>Qu5=eqZ`QhM?(>tIIf0Lif@1c!(^IpfH(J1`r>E0wph36sX{8N< zU-N!ou-aYy755aCheVhwM=ihn|3q+nPxtqxK?t9^qrJgKl0NG8KusMMYJTJS3bPk` z$UR^xQ*iY(3SPR96d0I`MCuY@_Z)y@$l6di3g2{1IYs;8&EBpyub%y-$YAP79B{RZ ztvN4nAuLrk^IH-%LVCC-*ncH985y=-O^O*kK`Mj}()E%$i<5K0m_fs`AnV`(6w#iw z!nq!0NWzqnIAE|~{*pNYCBODm5&_~Uef4UGmJx%-({bQwaKAKw6{hXy6oE(QDNr68 z<%oL-Rz4ze@uoigem|WfamwU?C2IcQly0pWjAq-YrBNL(At+ch2LT+r!*`Yqc-EjE z9j0?AdbYVJ1R1z-Vh;nhUHhVCQ+=x?C)!T?;9DCD%=`%qbHd>SC3r6oiI55HYNWV2 z6y6SQSvM~P2+XZ-0TL&cpeH76FQ{4VdIj802v1YmWb*Q0f&1(U^}i#uhlfD6l>E!Y zAK+($u5q$iqQaq*bu^lmIKclEhScw`KR}tzbbNOIg52mqxSVS0s%%-kI__gQtvclc zG5W9<7mS8D-{=w>B?r#YBaN&3nc)<4}XtomcCrh8N< zzy6_aet8-to&TIpjT|NT)^tX&h?CVt4i9BU3aWf#2nx0jiXP@n8kPrsnX5hdOHm5` z-X*ax?QZh8QAZ$AcNW|^m$Q6E&#?;Jhcjof(QtGpyAXF6j~7{~X8O~}l}fYA zyl;fb)Cxf`%|}DE$L?#^agI2;WAxF1PRqvvRmZF^-Y3CJ`b9woc=U!LBoVit)B6J? zcf+x(ogP`Y^)vS+x)=xyYu+PKGGj=;Vy4^OX)lO^ez3qo?0UV2WVLdfCIhTO5f5id z*Kr~lN9eqmrPtLlkA-OGZ*B}0GVL}~n6@U`$G2MnwX0ok$;nm$G(s(6$v^89eF+K9 z?&Gb+>FHP;?xa^*-l`W!>rN{>%-G8NJ~ltj3S07W{?)m3_<#Ul!N7+O+J_k(VtNmX zA}2iCU52Z61%+4GR9A!MUqPWNyiHcwD3WE(xqU~vrzx+FBaJC9vM^Vl2@-KTdd;UNXo;53|%7zhpfxSIY(qOJ|8ff|Li5go0PiT`SBm;=1+Kb`vs; z353^gdk+~X!N->kwpQWW)G8M{Rj2s&>nCqLTyiEU&1Nig^Gke@#*fSS{aGHXr3}y) zg6z64EZGVbAQJQ_Cb}Bw*~r>P!Q9pKH8x5~o~O6Z7dxV+!>qO!EHpeCVy;Hc z8ilMmSeMeXJYEX1GCdC#N_Cp6Qfe5ISGwzci9-#^{bhkza%$FSNNrvvA(H}&&3 zRvuI?U`J$rQ_>f6wm$TyRiw|(Vxfazue~shuUl-5NLyx@&o@0LYh_r;!FmMU!vWZ@ zZhFZyo~K~@CaQ;qN`Ifw{HN`&6W&zQvX+4K(y~kbT+x#Hu~{vo$SNajgTrd4eo5M; zMtgX+DiV}MU=9eG1yh~UZQ6lmO`S6H{oNe5C4n%2S(rFUh#JgWIE4LshxbG^~SM~=4Hy%iVHgo3a=h-~G z1G_h^-CK?DH`Mp%@P+8yW5wa_y6)Zy-n+@krK7fBME1N0N|mPl#K^PhQkhlE-$KNI zCGjU%9nB5Hv%BeYCz~p&BnAy9jQJi$g4(U3$9fKy2Z}2>mwB1`qv}jgJF($ffnc62 zA4N@q%>Fx=nhbO&jJa+b2^?zSNi-!OsC&AP^hfUW2%{H|#!5aJ?fV-`|2MnR>?4Ic zQaPrB5X0RT}GcMY;?$`FXwJJ=78ft_p(^l?+k7*PNQI`zy6 z+l6K|wccfZ!nBu~YX)PaDU7tP=sUzPb!D#8_02~9^K~Qa2}&3jhoYtZbE%HR&SXz| zbOl3!OJdBXzN!*{HlI?3jD?tPqjQ5~+I%fzun)arkio&7_J;`vp_s`h3R)e;%e*zQycM6mBGnN6W~ z9)10ooG}RS?jdYAQRp+7`#t=hJhI$uJhwf5bB8?5XB>t-mE$V#fV^wkU2|jEkeJ}+ z@W+9PMU$M#BCl*u#~emAwWfq4+OiAPA5o_@de(TA9)u!9=2Mj;lHb|7hJPBfpxGZI zAP02qB$=H31A32IpoMk;d{*nth;F)00i4snsf6pZ4v#^@8TB__{#uR*0O2G6p_D!;^7OOPr4;nP-|btoSUtsP`6$BsmsD5Kw@pt*#re*&EdpdHZW zjO{y`KfTHvv6bP8?B9V3Tg-uBhu_kG?yI1L$FY&IiKFXoP=%wA(?OEhV9fJ~`0dCZ z39Ty$o-$>8+sj0G$Cy?t5B(d{5xqZrcHHbYymC7~SP!}cI9T;aA)hrXEdd&87mm+Sn;NVnzKf*r4Q1%yL_m1xn>p-2=O7v$|CuZn)zF z93&oUslIRODOkC5Z!MN5ayb=(*9Jj=5z~wkkfkVZqy3E3zo*@P&C)wMbbUY^cnxQs zQPLy|s<6UBVfZP>M-+QEw2h3z`bkCy8EfJjD{P~yPZjT9!&^!{B6g0qo1N?Pn$&2| zApU{8wl2?m@)e?De^to}3wa}uNtgDJn~`0X`E4OlLql3f&^WpuudQ(Lc<1J>^BZ(l z{dDSBINpyYeMp|SI^3?MqPt{#FW*I(d%0J!-p{-6k>am?ij=X8UVmLJKKt$cx_T?M zaXvCcPQOZ1b6<**ndTfZQ*d)={Lsk`z1M2IkKQ^j$^Qi>Vsl=0U>_d6Ic6m~C$2G? zWn<&029Oo|Ge=J)q|;nxbsYk#MQ2%CVcAS!khx}Uv$Q5VQU2F577e5MY-YmfwfW9; zwO}7j$u%ZT3!Kre@%W_$7Az4wP-{ci#8Kkt%xEP>mIe}QHJfmIg@Ko^nj+NO@KY** zyI1gyLktO9(*)m&!SS<f_zJ;&;bTa`poOdtuenq=^#1VtJN3>?rhNR(3 zH~8H%p~8v!^r^v=s;MnYE^)WI55$eS>UUL*qq74ivMq>N*E=8adaM@xh3)8j^5(n- zVso(bI;r=J4payFxA?h4_3-fR?nsiUbxU`5(MUuhFp3q!oMm#Jv@aRFzi_U{$7S&s zRE3+bRtVpBj3~Sc_69AWZ2mfKEd8*y`%(LIE2;VnIkg_XY?&d5)jXox$Y!TX{Mdp9 zYZ_`f;1EKnK3p1WNsP%nK%r}COcja>GVC?Vt_*iDF+L(Lk%?#7P>KF`L~6MMw$Pdf zSkd8LkxopNiW;%NF+97zgXip6g;RpPY`TKaMYFs0Gn^)%GB7ejtpU{%jpbe*Va}-J zHh&1AD4dq?imvr+080;gpPpqHPm(HQ^&W#ow+H_g?D{wLXnUuDiF^m(EZ%5xeE}!Z ztBGmeP;=dwul|9lGxO)Vq)of4Ewm4sNNatw1)t&9Y6N6XP% zUfnFXZ!BM8wV1BLq2xJ)@IA8OXVbtTE5n`|KvWquo~qN zx`PW?Om#6(gh(qTWD@Xy@6plwo_@H*$i*EP$a<^`qZmpY0$`niu zjnaJ%81-gvkYd=L9wUsOI8Q1t?MDVrv8;q$@?3^ndDjY}ma`a=!q5>rEpyUF<%ywc!HkIR615Ff&h|;Ag=6u^e@F>wN1M@Ehs1H|lOzk{ z#m9X(NTEC!g}|Vt>h%k=vM@(!W&--bNgAD+l6tGc7iCN4(_~wLQ$q0^6=B2#2_sh} z_w6xSQ<*X*ekElkGM&Oy3~hey(GE*p(p+5~>($26swQQ1YT^Tf^=A2xwRAoV=h%da zWNXX^5S45vTw)qN&Y+<`5R%KUt%xEn^!?J0n?n`4hb2}Xm~EJ~6jE$5Z`@GU&fLvM zzE43T6~xt;WXF;utW`8FAAkiz5~|e?%8DRhsFmkUf;9Sq?KGl?r?=0Km$sCjK&69@UXx6TLc*djokzS^ZX+?7OfckmLn<;di@DXw2rXmo zc)VNJakd$|LMs8KI7zqKn!5)qY%@plCz!u7e!Yu(CrL>Yg`6Sp1u8rw65Bx_EcEM> z=@5Y+D%0*o*xD7xv*Y=ZZ~ioryj^Z7DI=5+8F)=e2)ibc3nj*tMujuyHGBs}fpkkn z!M%QE!9hPow;x{{5Gz~V{?3$uyH7B%vP}xecz*$9K zX`q5mpzP{xdBCc0SEKub`I#64<;Z7WW*`O0v}OdvX5)Ty5tsUj*#K%JZFjz1Zi%4r zF?l`3;XSAW#NNRTC;lqp(9bv1wARZ~~~DX(Fbsw_EO6tYDdBrX3i zEY1s$C|$5tk0nS~vKs(+@>r6g5k&+MR^ZoI7TD@zIbS1Egb`?9qjw=MY>swb1t#VD z0(7*t)eU<_w@x&C2Z;E}~=VyDW}A3)m!wx;b6u>C;GC{*~QWF&HXgCGKY7i3HP zueXXo$3ltkBp`58OeS4Z*>8B*K=%-cOleEv!o44vQ7>8R*V(l^Aop#MDg59ZB?n}Z z-p+;-gMPqlb&$WaPl>ee|-}vF(T-V!v@O1Wc z>-_qPF-?NmfnD$Ck*r9$Qxhh6!wI40r2Y?!{H7SebspnRhU*)Ljsv8+BM=>-(yu*c z^J-HD%F*}rs66<^@%2^IN*F2hZTFq+5Z_$ej&~O*`|-SKv5Cn5$;<0(_d#Sjz`#a@kP@8@$0XzU0#6(YZo@S z0^~H?a4ca?45oboFiq@eVgQ8k2>8^TZJw5x2QD6J1cI0LN3s-8A<3yX%jSGzbW&;db8IM6efY+2of<*3$bD8QQRPD%1qZjFf~_eI_y4p)qw<$x8l* zAjZ?f4OywfLX106*i-J)Pc%uI-cllor$Uv?jJn6RjJ=L>xuNgU$)^7HraCiBLa(81r@ z1-NNt`Dv#R9L|je)BS3l9v5?&ulyD_#)whLg5tY>fKDdnq?O4?6f_c+*`g{{9)Dkn zl(80|i=bmCVUC|d{#&J;S|EC{F*XkS4a@5Jd3=jJ5K?$B54XiFFCi?S%y)XAlHXRG zimy6TKr5Mph4V=%aJr?tSjVQJa+TSgbAF)G~M?&~d^w7v3M_)|vz1zf=*XneH-Xe|j=#w@C3Zr#pS@hh&D07SGvN z)TLg9R@3gH1%|!3%PNH@)b8?CWYX>lVk`z}p1m7bZO3mu*(w6-gBI#cL-L@dD5Gdwz-TC^@k+f6&MG#(LNbZ+Du`iukXNOM^MNjT8neoIt(tItgEq3&ZyUx zOm0|1gDE{H>n-eibbEfC*aoUr=xdtdOC7Uv-p$)wAf96=!{y?ScGUXZr6a_=JsSP$ zB$CmIwb{0~I5yz6&MT-a)iYVPUcpKWTH|1&PaAaut%DmJ%DPkgWey7RZvkk41kx;j zp|;xR?6V3}I+v+!E5BXj9Y!V}O#2E6h0gKijB>dVyHqNyw)=*S)R(JFj^Ao4lj1Gw zid(VTv8~V6YXxjwVnGM&ccuE!WG)m^vvL@#^>&&Aa2~6d>3ZmFoCcP4bUOKW>|Jc4 z%IocXHu_*+5tYiA&(GH9q^-;6gEeQjX6s_fnRd;O4x!nasZEZQk?HzmGiAo3(Ti^0 z4lUBggbBDaRtnJ@9qtCKV(k4iA_p@KHPYwy1LGes!$g)JzL;VBp316+I|K{RhxBs zVN8b$eiSTFxMFRjKJOESZcZduY#8=-pOHtf>8oam-3C&;WENGa%502Z%sa)6+Eii> zJxjy0U^lh84c(mIcwI`T_~|_*ATA0HHz$``v;aMbCmU@V%*bZ(_bXm6#-=2q`)iI#CcC7CU;aG=;^N+PiiX;%%IBxOH5l|AYOe`HBo?GJzGP{f8wT9~OU7b3n5yfGK2}VYr-`9? z;+@1#OgbIEPum(M$F>$RPiq9c@e-becr;ITJG2ZmB8t)DRvWM`o@?yhlg*_ani!jfgC>~$KxCIn<5_9WzS6Gza2RHoB zgU8y{Vbd0j);>UW;Ot{_!R%J{ht%-7G!b^$3=?V%*|$6-W_S9br}4 zmG8>tY+N(q1bFU}@DkKtspn8qe@kMtSuf8^r^LrFyCmDHuJ@#K|6G@<_gyHaG+X^M zj9)*Y=fQw6ULR4RBqYBgyUY5{rvvxqe*N}W#f8F(5WkOeW)f^_kZc&P|GGFAwJ)45 z7fIxL(wi8+kr*T-UptqLq|V}e4v+PHZYUDe+gyXLY)2J5kbf7D5oGjRqdOg_rKNWx z3Oa--MOXCssgm5~M)R)!aLEA4A4l9p@M~@M&q8)n6sFO3;H!8y<{DmXcz61x(V?m;76zm6(C9#2Wp^;L*BPMeEgZowOiH4_x*SE zod{h6n~(ti{eoHNP=apxBmrkrcxt?&*>VV4GE_ zVs5gV9C^phr4u9M+W-x%s-XdOJu9IRYWxWC0=7ig@KAM{gma{cq?7()0Z3sjn#e$~ z{&WS~@0Y5kd;wAQ?r+M##33CC`pU=8;cd+pd(y-wA-LjQ9=Q1)L{GR| zh{ZeHait;Uf`8!11>;oz{vlNG3sM<3h_7~4zLp=(b;kB6JZb1R0rB8?Z9?J7)n!OtXj z?p;}rKPkoC52W2eX>u!})l=f+BEKOzauM9MrUhE1RykC{E6mqd zO?a&N;tnNrNrKLnofxtqt4WEaqE0+S_jNM5wR0_*Ngt zXyxJT@$++O@pTM{O$GHP!wUEra3>+;O10r-++Al+2btKG$4q6m6e(@?Sutkh0{aaqZ7XQO=>)qq5nY6C+?C*PUz*ONw(fk~De@8b(ql z=0GIY+06>=Ug4b>E2lHu0IL8X?}^?HhS|(>+SR)&CJXg@=_`?6yQ-Vpv&fi-W0&^< zoEJ+E)%%D}o*(fX$#x{@Y;B_)sDsmQAH}fcL*()T&J~*O+^dzvTam8ia&4GcC7Rqp z;{RO_d{1bZ-A{v*Jn*}_!}p2PFAwVV zor|qg=^mU9wrthGXLE-gWf14q%9P7_NjPdOWn0Ecum7$SsAz_TcJ`@lSP@TDs)QL) zaON$J(MM~0m$n=V9;2sw2i)?PcsV*8XHl4v0v9X$0qu%iZsRIwr2+h;Y4kG;=GYc~y*bKZmDPT5PM znaoq$q^}dHj}52jm3G?9Ch6lR5X+UpJSy7U0-bu^;F~>rF~1Nqg`IRAA?Uy!R%qU zKbnEn`5S%zEj>9RKcvLP?;an$#=%2!@Coiz?P`n3K03HGpL|mGPN_uRLMF$!I$--- z{5M8i$0P}+{rr$o_0i0nn6gks&g~?x2PXiU$| z$q13No4U}6eE7MBb<^G#UHDAC(*_LGww+1!kmy4)|%rpOV; zYn8RW;gAKhW1~z@NgbL{^6_M8L(Bc8q_1kxNe++DwkoLxNc0n^V?*V_OfKMm%458c z)ACsK?So>PL+}V9;#fhMOZpB?28D)=GDw565}G5Vw4G7+RZESHia$zHVL~?w|M=q; z(hsY{TC9!>+FTXieE1`Q>xEH;PcI%5?1Y!!#McO^PwnAXA6ijJi@GP$43d2lQ0U2n zB#5MxY@#x$NXStkdR<4wlFHpG*|w&^N5>dwOB{GN&7bVIa02n1AmtFr)cN%du1|`B zA&k=`h-~0l$Si4-rk5yWp>X~)e*@Y21;n@ODv_&gqg>So6!r44XS654Yg!9oY0le3 z4Y*OfLEo8{1MP+!5h{$z^t1q61u_UVtZC(&pL9K?G+k;UYnmBTh`NGS;dCqnn9Rlx z=y+<^${XW;so2q99izlTLw^XqXyf+&Cj3LAW2oQKKx*l7-L(&e9{H6g^675Xws615 zyH{~Mhfc4+yF{bC#9zF#1*AraJB@Y&t=5E_K?dvABij;KuZt)2XCWZ3zxdN1To*df z1-y5Mj}q`1DpLc` zGFm##dqy`5I0R2W88TWUYTb_4zZmPzIVBgJI}uM^Kvo`$_p#j*)yfm5wQ-={zV)zR z{h-yU;cnyt>Mh9sUMwQGT7U#nB{c`1U82`{!p*QiPjUoxkq-6}V3G_KIGy~EKMLHh z11>N9+o#lbd`Fq&mEA+y_wZ&DUHBs8VMj)E?@pj?YEpQf?u1n& zbTXV$Ra52kxv3Z)ANE5WY_Rz1`v(H29C$fqV%@P=-}%AZm!@ekM3;ENV2OW!k&B8s z-MSGKHu|{s+Bw#;h2U`WG+)?Bz zaNg0rr%q>b$033rM;@h;WE6;xHM@7&wm|#;4|CttrpdB(+hw!M?6O^5c9(72wr#y- z+qP}nwr#skuf6tuzQ1s8@**xGBQkPkju>;qnBj_H7~U zch&edqkKWz|FXZ|f6Cb zpPvS6LCT4XOs7CNj@}|>1uAJ?$xZ9Bjqf=H|IEeuIqff_SEh^aF<=5Zq0-shX6p^t zG_Xvi1=PT941hiUc9-+z+hdC(&1e^Tb_)7N4sz<_#hy))2pM3j5UO=(V7N>4o!t%AJw8&p zSNxJ>bgmP#2O_k~5Q~wupUrPKVY{>QLKn65gHG{l3qLx@N0T@>MY*fvBBhCR8-B}< zF!Nd0D-nLX>jg-+K7nh2d$s;aH3NveW2q~p`}jbIew0X7Gw12`H@>chz`2`8R&E{c z5787+|NT;kLsdaDBM7Ez!CU8bh{-z*f5f$-E6IoLK%p_pESPCF=-G^Rq9K3=%Z_p3BSzK)sj-LrY%o(kO607Lr~UfK z0LKsb7<0{@N4tOgNN|1C9wPxxv+hUlC z$s$xqKfdC&5~v!GQpADlwG;Nz29gRVz$X{6BgYvQPEk|Oze{2&BJ2|-VuTV%Q-dss zVW-ksu#cdUUe;SYK1LKm$p#4QR@ll@2r-LcNxlJ(nU~wv@S9c^=J*n1qFzPWV+YP? z)o!rsp4RlO$wR%tz?X?)n!UV{6I6rcN{Nk8*3dI13I~fWUQL;^FT@4Xo-G~Wv#!g0 ztR&|_vi$%@`4MA|2$LTFMcq6jS>F=h-khEf2dN4v8KjA0$B9Nmw*FkL4x#T1NWV`* z*_bmbEH*l>ZCMZ|RaoWZEEz~Ob3<&Az;q_FkBNLaHctJ_imu|>> zF3ldG3gRcKn3CUK8Gs^P6!3#EU)y4I&OQ*?36aP>wV^IvYVdeD&z8KJf}4b9+H}au z@{ru*e9w%|Kq2l9kwFCIv_d?x9gA*ar0|lv+?|~-DmFY7`RZTD{?YgkV&@!0|0!|5 ze}wZv3fHKj|FR!JYrQzYoZIc``PSC~{M&ef&|Xf>3I9qhu-4Q(x<1l=x&pwHN>Q~t zR=~wVhVtw8(9-+Gc+zHu)j&`w>(drn4aKV@eE9k}@bFUBM!Qk_SM z30`tN(bb98AK~q{5apNs+%T6sQE(w^%Wj%l1GPqpb-zbSe#UD15D2r8tRNhXZs%2- zUE})vYAHF_#%To5Xp1PMFwTHzAx$Q^hh3>&VR&h|Tk{vW>EN8OgTEOXJL8!`aw@&p zWm8VuS$`-$o+-_ve30X-Ox8TRVuZ`SepM_v2uJL>sh@FfhGabIyf#<29$_V&{^R4< z4~J>3{T5c=yCF=wGAR!m7(o)(@Jdc5Hadf8moQLQyHul6Ew%T@P9ageBPwEvztg0! zIIDb;ji*|E-(3xUav}s79hgxr-xEovpeoUa?h3W~w@{@oS!z2GE`Y;pz+ANG+RJ`7 z!P!O_nxp@=YSE!nmAW$Ht#8O8Q4ELFb*xGd%M5a_=Y?C545m7Jyb2G ztLS(Q#Tcgt<9pQ^ZkcpNja6{A2m83Rh_6R?lxEbl2ySdO`^>y}SDusG#nK+m-W87L z=Q*4|W;4FVXC)F7wh7Q7!;*yO{b`==ZYBz!q!CoY+fxR3&|IiaN(dfhbhg=fEo2Sr zOTe-G%I=UK|NeT?ZoEl$PK#r>?IswO+rNp|1A959`8&(!ACprjVL0gMyU^gO=vSnN0+J(;~YkS^~E#*Jz9? zb#Yc4fEFSgUvzN@!6`G%PJ0UvSs|}h>i)KwUrR){r8f||&=uM!v4O#EWPXM;w%FPg zB11qW9<5Q&;pV{wGTgGIj^1uRS}#>jXz=UQ6s#uTmB?oQV0G4eUz#V}1NkGfx;z@} zF5dwsF}uZUxtB`J_QCTdsxiIEhS%}yg9+Igo_;AUeMi~nX6*Br7FP$w!|b%0wJ#zg zbR-OR%V)=%g+!*M#pry=$^!wtxW1GQPu}~I?7Bp*o?P>^&o$EL;*K|2ys6kIJaoae z|2N5g$nDVw*I9Z;l!OgWSZlkxzxbgskcYtNC9AAI9{C^36qWPabolIUTT|tcs?-po zIWaV+(ya*w63g$mOqX~ro_Eg{7rhaGvCro1B>;o)k)qLFK{e-YTf5ADU4`aqXVUTs z$U90YfDSUOxpHpW=De+}U(WryT5P#dnE}b}uKmC%dA140;_`h#A-AS{n9}X?>^C$W zk3M0>NJg_E`J~ac|`aB+FCTcx{o%2v^RJTSt=+?uE) z*Y{fS4KosUC?YD>*5!aLI}+y-ADV+n!D>%wH?zp3#wwxB4g89FhXn68J30}c;$(>G zoE-&_uys8?y1R;cv~sC-f~e(wd`-4vU4@aI8f@?~cCvfxJ24NVy89uE^tOIo52up% z`2+8CmCTQdPf<-hjdpFOvVdb6Zp(C~iisOc1$N0RL{*~=QPRE&Q3=9EtdV*6Mq7?3 zMK!gG2>pDUqiwU3xlZ)>`Hg9q>Jb8nV3MTe(%o0;udOaEEY`>djptwA=6Hlb4gtnA zhjVQP>dn$LXC3qwj@{CYM)Brf`c-^(ue#srL4N-bS{*w7z**dVxT>FgvHga>NDBy4 zVUzg<t2KONMyo#1wFN`gS;%jn_I00$`imTZ|}7u#-V&HQyRP{&FI{luknV1 z3XTa9h5<4TvRCl_(IkstN)E1Ot@C zMw>KdXzBfu6$xn877X#)kgkeR5)z_ZS=qtmtRNmv6P=1;kt6QS)iehG;mPe7Tp6RCpETIg( zOe1VoZ|lRn0U1rb?P3VL89_YYLoW7W&~=g&>)u=)swdZ!o}jc72V`Z04aA>=50%Yr zCL$9uKH!?v5w>_Wfwk4Q^W$T9d^#F7i89TtsUa6GHDwLKlZ$;|soe@aUD=q6DV7cU zjhP^8%G$PbjQ!fX?D&|ZOBgP$4sbC9`)&AH^>f(8npCZgp1qkzq4W)ftZ;B_RShzY zIwvA@B0L6mbS<398O$xR=0@({1a$R(63`@NJ0hv6j^~*ChNwgSjCP#&b>)z^HCB;F z+)}+2l;fL*m2+blS*Qc#^aBEjf$h*Eeyj6KUGW9#H~vCv9nVV zKJP}_JApgV@I8^`+`}|flFs|GwYn5iObaJfkfV&yl;Iyr4k}{qjvHeWvU1t)){bt( z7h4NLM%hcWwohriN?BDtYM!IfG&?cYzv8dGtu=;~1BLLgG%RLntB;>DF<$3==HiA&X337#R{| z`98Un?XCz8U*TrvQnf__jMHNRR+k))(z3&d2J$B^5Vep2cF(FId5Y)Vb!e;#j#7f{ z?Py5PiWKk7Sq}j}^b3_pNQ{B=Xo55S{NZ*0Gu~ZA53%CcYg26HcYm5&fO@NGf3%J- zHzCvL%nX{dd1!h%tCsbLloy@YSpRm^HsHaUtrtkske?(ENw%o&0rbROnQGX7NiNFH zUu7P;@^rakXiT~?d3igJlH=9OT2a&6vQExM1qIV0@r6?wQ>hd_wx-?X>?~xhMxd#> zY(otCfQFq_zqD#UsoF{dMkI`?-rSMR#psT#as!GAIG7w3mWF)Ca!}AVPA7J@kMkb- zACbggnS_nNKg=z`4F+xQwRRRx0-E&?7@%NF7~G~yyic>9%&6CQg%qyzj6{*E=mzz? zsG&=w(oz2pi)IJ+QnOT)X=uQ<)2mnmQYCBN(VdOPa1Fe$_#XX0zKZQd(Wr=YXo~>n;f>kk zn=(BMPuat17u-2|RoOiK%&M|{N($QnAT{xo9tu95yqxt^!((z8m*a|WG8njad$^y} z(ORc7H+`~??j27nzfMVPa;nM1J1vc7wZ%|ZA@Z+QeS&$OY`;CrS!lv7L!!_+Un6v& z&LlSZSaRF#o%-45dtiucl#ND|9zvAtx+|Bl1RUamV?!FKJ=)U z%0w!CDfhLGl9Iw;;fTZ4>4c{_GmuG}qt&7J%^*0T0G7!4ppSw5h;_f1y)&&ufR%2$ zT~8#wZPCg|(_7%GK;`m@nS#58s1Rcm8MRLx>G9}XZ=NMZ^H_S*R7^L+mRuPQe;y7Rj{nrlXwH*}Ua z)APD6e&acPk=L>05^Qa~+!>xNR{0|5;kx2!J;9;ydsiAuk`#57Cu+-UqPRN!ag?OL zYh{Bf`Tk>5Rm*SD%5_p(`Y?@kXYr1c|Dm>%SLs@Z%{atT1fb3Hf zr4+Yj=o&($-QPljg~xQ)g5=uzo3!G(mXF<3xY}N^ml~<;-@Nq}4RGJC)i+7jA?_Bq zvm*=9>zG%0)Q@}~8H_y=l0+-@wiqOrP|X;su9o60WRro;O*_&heaoUJPH(S|=CHhM z&S|p)*%X--h_(e6g??J-7SR}}Fa!aqQBrWZy{X2Gw8bY`jR&<^%v?L1>`fTyP7&2@ zW9{GERtFznyp;O)3NjY>3JtM*mYxZZ*dDH8H};ipze+|*ESmEe>m-T6N*N06o13^f z+}Fk2_y@8%Z9-e^&h-2-(s;121In)Fx5qKvVNbd$gAq>?~wq}tb@7s zJ^>A3UE#2!<~EBavTXTDrMt3EjJrqTGT>80i-e-SZ{V@C)uF5 zDZ@DS%*`{AENV19yEG%E<7u(E(Jev}HOp}>SgmbsF9YRAgw@JaZ%6xe;?^wApiB}t zPjWPuUR6Q1+mg`IO-s(jKq=S$#5-1-ILrx*9p`PiV;87f^;6Uvj*!?FZKWV%huZ z9Fat#P1L0plZP#~o^8}3G10L7wM*7V6|@~LF5%-^O}-i)mTBq9P5+SESkva9z$@&* zO{N^JCKeG!Qd>G(tHFfec9mP-%$7vF zf#vkXvhDgZ(X0nyL-?euXgyEcxmmDNd3AXKAs}P`B6@nBbK# z7|oELjx~GxP}czX#8$V{4G9Fe9j&7pt%vA;UH~D$->|nCDkFhFwWZVR^{`^S$XKpG zE>ZH*?7>CkBdowsA}@VCziER}u!#r5NDwEWi;w)zK_6s+wJ3N~Fo5ZLV1Z=(;)(Hd z@A7nf^Af~lyItRYXx5^OiB*W(=|D>PnShbSib=Hkxu=EP2kn6MMoPTCz}Z$1=$M)s z-B94tNgWPpn=ii+DLiL4fi1c`TB*)!hy~;vw;!&0vTy7~0p7iUP93DRzXS>7(gg<~ z=5Dr{JK7*qc`@RI1=(P}$aJ9WiDeaE9oxIu|5YFclSNhq za5O86Gpi4`WQGKjxYHNw<%Nf;GxfKDz5^Xtau@|WR~~x<47`X zpU~JxeX@fjpssTb7N|UkK>uq*oSgR?uEV$Q-W-=rBY^;hQuNlU?m!Ol`S9UKTHvG5 zxJqf_@BvKNd&W)qBX} zW5^Rp8?9f!sTAI=HxE=Bb;O>uL&#j({50?Rzzl-b-4rt;6-L4Ldo=W*_u?Wxf~qb5 zWm2n<5K*FBB2P5tKnP6Ef0xZKgXkfJ>!XaXk>gqxer%1LA5Nw%Yd~giBLHV8bZVzB zIiuD$q~<0%TkA@`oO95ckbXF2LM8nBCH->$XVXzV+~SYN7CSK2t91WCdy(OLs*T8q zs{4pgnq;m?wR-Q?^6L%6d06`y;xojSqK4pKPB&WcFEscXS_bAAvfxDWAz~6(_KEn> zQNz1+_+r2)0P}DBARzhGMLFW{y#z7*FKz!171#ms&yBf#sU83A?Vm1ha*2MCDAVYZ_e|+`b<`W{F zIN*%eZ0M|vzmrDhVSN1gw(57^rti8y_%TQyXry-KCHWHtIyje}j=gI<+47@V#b?>` zrTwiElI)A7FME(vpfOK7&>hI{+v1;vziHb^dCJ0iej7RC?OkMu=-4Y)m;IDVjwnGLM32z zc_0rpq{M}Rf(oz;Bs~pB`Zl1I3(OT$i1ia-2$M9HtDBe3K1s_{t{xt~1*6D}u)p3Y)6S0ynFfU>+@3mK6BwBW?~if!#b z-?aw|QO62?BQG?&)w66a4;!WQEXeUAl!P*waKUujabgaB$FYM;jHZ;E;F+aDtCjfH z`^f*MOq_|PyE>a~Pz%9#<{l#{=n$*e@Sjtb5FBZ}Ary>I4s>fpNGcU%$Y2P>(L_`2 z_RcS&DgLgBj1#3itDZ3Eb_m-;7JHe-cd=ONkjlQq3<5pL@1B3#+}wNjYA8{GIB}WD z0>1a5>ySgbI~ln}ftHjU1WPa!N5^-*T*-87eXv3|xIr`!=d3N0i8rn!omx@)6&p^8 zLm7^-Kb-;fea&7KQ)l~!Z|D1m-}fcV@wcw84+tOyBU#K&>2Ru8y23dM&}fSj?z>VL zcb%2mYFY`^Kd9?PlNkRCyr2#pY^kODJrZvF7~^Z`JG^`ArMG_!1FfD!$UmT`k9cm5 z)(Cm@etnL2F2MJ1n(*Aa$^G&oi6ef|)Cg$@?S-z8jz*3)2e~m=i>t--5x!oO5bYLg z8Ne#%+)=Yc<;BaTLZUflC{Lj(6FzS7kiC5Oh4Ml*mR6%#zvpL5} zLL=@C!f2!}uCw#YLmIk3G*vH=1bFUh&_JG?k>Z;yQ2z(K?PPSr0sBYmlWdZY*l5m+ zh%8c6eo3C(w2b$gaiEA^aH_uJ8j@Dg?_cWS=_o$zTXi3zI=lG6ux(6hwqr{=U6t8dx{YzD zmFGaXINDGX++qxlgYh?m8b8W)PF;5q_T6asKrRdC;@qI`%N#Yi7CgJ9imtVJE0x_@ zR0&_aduipwA++CM&OXwSIy2yI{I!wyvc)=ICUYo`8Q9_ZQac@2MZIf$l*mY~eE`C>(sH|U5#z1NIV&hdQi0oYRq9hxSZfA9u~uXm@g z7aAbaf`We0{6`Dz6<;D4JfOA8Yj;q?Z=gI>h$YH!J<=H|$j{f; z|5+~@xNV@=5c_?hv)z0N!XkciheK_p^AGWvn1K zV!YxjLT@vT6(v`zt34bUS$3LJ+v8cc{T8*RRZ=GnC zZLXFg_` zqowL_-`)XalJ8$Rf8QP3i4D#4z0!eevW@mnBsnvSN_Cpa&}XBd{iN@lzOtX$&sg2eQp}<_h)p z(+GT(sEe%v>0zK+FlKV()>&5c2 z)9gt%anZrI10r4-o9)YX2ZVS7>k5nIk>$z!&nGGhV$wvlIfRdg(&CWx^!DX}MH2^1 z?OG6{0FsDhgesg_o1KWk^*zRk6ih>;YHVW>?RRfMZXJY^=G(m;*|g*$9E}7#+}9I3 z>!(VKXa)UzgT8%6d#E1FpSx=b;b4d5`b3^>oho2}`;A(u^5@`jcBmn;?$4(j=s9aA3nlC$ zrQ)njPREx!OGA!N0SGW6!;J&GZk8;}gWI{(pnN%}PExq^^})(iuh1Sq<0xak+a>as zZ0g4i4R6#Xr{x|3+1?`|7W!z8d|-a9OLT;V(l(4XKw>x>K`2#iE1!y$;a2Zq{^G*I z1+S+f5)dv;ssExEhD6AEwlL6p>HF=w^tTA;WR4(-_?U$jG(H&USN4B!+sl(|DJ&;z zzSpuhKgV?%O?iPghrR&Y_$d8U4Cb3xdeuC7_7Z8(vyFVYS~=QJ4%=|@wAX~R5v(R?REfa&qW0lwXaa)krs>2hiCgGTuySMr} z4}e8W%G0w`C!T|5y+PCG#6LE6r-kiM_@)nMS&a93t=X#7d-T9e$lK5{h+x7 z;nnGISU{jMj=pfQc#SiNuEOkPBxriH*-%ul^_DCarWw|@TyfFF9fE_OO{NgA-%9+xtY>>s?c$V5v;H zVC%3L+)>hb=D^4|QX{?X3xDzo0TW4$OG1FOT&NJ5MpAel+M)NbW$}EzQ;k1f#)ik+ zU^{(in`Y7Uf}|92tKS{$Vb|{W801H7faBN|Ot$7u4rxwlcKc2m^iq++RW*3=CW^_W zo>i%~;n=U=or#@vXd}i={xrn1nyGXMqu< zp;cNTx4zP7_Z~K?cps}?JH}DH{Y)#?RYgAB#$nERzS*&jcFvsSoq|luwgTQJ*WS*# z{%)dLDb=~@{R1QH$i{1SG1m@0gEg8FqT!=?u&MuMlRS-3p7F_c;HVx2b%cEbrl8{S z+>=R|9qVQ84;-`kL5bWS z2U?33h|}psQ8b%mAkuA)$mDVr2Z*-US!)(g{rS(&b{ffb-D~XoUat$`sTUhojQxG_ zDs-AP8-KYzS75-|0!!6rhs$4Rv1^irOazXj#cQmsV*FW!BOVl@Qb?J~&)qo_@#2n| zg`IAhaIjJ^X-lzVgHpuMmbln-z!iVDr@!)n#e^Tl$t<-_HL8O_9A0m-!LJZAa&4*J zJj4dw-MGdY89StCld}}P#cRpI)uLi&nQdDxfVWtwn1@K)`!cBzRD-Y-omQLe(NXRu z3<_?uRm>pGYu)n2Do$?)kQE08&*QRiujZ~DoTOBPrbPgzbA$)SyOxcD_A!3+s1lQJ za?FkldeI&#r0mZ}^_Xfm@+szNEDc00KyxGzka`U;!pING|5 zB!KOgv9{FY+?*p7&No-=r>SV2f`~Dl=(PTXHE)^RUx!~FWF67k;d7R8-Pm0f$&lK! z+`R9iagillcwnSjkg;eUh{_(y!f|!yg0yjjZP!^o#*k2<)bF;%%1Ki*q-69#hmeiT+(NRyqh7)PI%^G)GPKsB{-TJJ#iS_w{PTlq7 zEO3YxlC_~Tx_>VOjVCP($wdw00ue2-YVw!ufcfrwP_5GG_kO)`zO(1nsqjo^|E3mX zI2e~60?2@Ic`4Op9}%(xW2Ajr&V;)`tyF=dcY;^!p-z5F%IoFuYpl1y)E8G_ZZX_A z3!ti~YRTYi@P!BD)6)DAnq$wMjD~1jwMUd3AdO&5&+Ir@_b$5G*nW&qe(4|eU2uBP zMwFidjib#T9PhDczExl`Uhtrt&N}IgNR$n`vgUSEgx#5@>|nKFGijGR%&;~AD@n_k z{z#9@CRp)QHgBf7zTW-F(R`rLNHQo}uyTKb9L5Z#)p6rj_t^A%`|;6*ZwTHB1?5H! z3x5NoD55EwX5HajOxw9ARVh?5n6Ms|e-VdIpRb_msR`aXv)Ecog|$`LNkr}zA0s$y z-^Nlmw)8iS_>)4`K1hGf?2BU6k%{C8bDR^7Z2>U4Y!WFxj@r+n6i-&?DD+`WP8Zwk z$H7uq+?ZVQ^;#-p?#PI#(UC*|X83|UX&U{9Nnh}f{9`j3= zNMGl$OJ~UJf&@LJzpcwCkbss8ELuE&@iE+#ux$2os*+anhdOQhj7w{Tg8NBPANg@=8} zyIWB>FvOR21``wF>#sIr4m=6|bC__h8MRqQt6wbH#ZO!|z?(eO6}vC073 z4YdPdYn$Bh?WOlugH)%|FJ6pNjr<&Z^(Ww9xx&qTqxrV#w>Au6RXTudz~Y3Sek-sf za40~rC}v!Uj+s6wiKFRy>HBMu0z`f3Fhrs)O6x&F*GWg!6WwOh7KOh?_r`nI0+9PB@P(16_juXk33uL>S8r-^hW@`*ckpo(|^P|EsX2G`WdoAdF-y0&Oksa zQN_a{P^zvz4ztvhvA|B>qmvn1DxwFnWBu3TJ7~}p9Kq(2bTmj?SLeqM;7di)Yw@&r7SIQ_XY1z6=i^+gWUN8O($ad`RM`P!tPrQ4Only-sXSHhZT?;^?%QH zcW&D~;&NOlRy{Kakfa6@r{Cnpda&Mpi^uGDt^}#0KHaiv^w|`@BHs{Vu#g6wY_zZU z*hh%sH_UQ|rW#Y2^AjgVsPIr@fMjF9Hi$1l<03 zewkrJULfI_EAEc=_e9PI=RZ81%M%`d!D`Dwj09f6!GT6OhbR)q_w6U3#@ER8wx^dj zFi@0Jb=V%ZlJx|$b}TiFH?B0T?scOfm&R_)QLEjiDKKvg!*!f-ST3}K+Vh+^ z%4R#n^)9+Fur$>m=P{Ux;gdu@N(OX>Ac(g2(U#eCfPO|yNk(Qdkwtx6So{QMp#xar7A}^RFz5MvHZzY9WNjkpoMRioEip*8wfdI+?`k>Qky1Igvr3;!X_Q$ws zc4}6;@0jxkgnH7BDV}tnKK+?lSO5SgY3FX~XEZg3Z02FOb>#`?-pJQdrNvW~$+Uko z5N4;|Q=DzyQbLfl)>7{Jf`IEWpOvw!cZb(k;XGl zygWvS&heR_yt{&A!EAdO%0cSi)8j-WDhkE5?I@-_e2V(Y!TyE*&B4EJ^36knUs$Y^ zb65NE8i>TR@&6({`B$pc3(%`?V?k?1HfX5&#MWKDE8uAi?bJ%?sm*lck} zhWphbf(?*KZG)7gV~G*TO;~WkOl6Krha$$vaNcW7pZ8l`3G6WJcG8l48V7?IC}rf9 zhZBivX)N+-|JHo(cXf>0BRhP_ZI*bZTaKiYFSQS!jBk$;{uZRpL zBQl+6=N!WQJuIFC)e69lm4v%Tk2fX*)Csa zGLrs>2dIV{BP^^GyE{WSnz_h=ZpuDkguUg^LWCz$X4?&D+ObB%>xVpP!8daY2N; zT;6jE?yZr#t9&`5i5Y>!{k$0&ITcB^;+$zMvQjRaTG|>^vxKWPZ7+ z2IF(e;DuTvu3h6Afcq`HxyocQIC^M;2U~U>kSm{9y(PiMatg;9U6c+EZ z()_l-+FJB3mn2`nf|+}^sLsTEUnUVy^oX0I!7i2MYW*CnV;%M$NM^X8%x)$>6{6Wj zzCpN+Y8L=d{)5q{?s=wt!{Cs-o_4Rg*RveR2AD>rj+yldzj&RcP z>V=|pty3=lZBiw&jMw#PFFQ31q5I2`C8BisAk@6c?|?R07%u#*r|&YooozMN>dIsm5fY%0%9b&=3MrsPnT(C6v-(Acj3;Ko~_00*5qsYKwcb~ z&CdC;yE*}T?0U(nW%97Wa~9$TQ?jwECArJ_)xV|o*Q?AE!E^d^4~julU`DrhbF;H$ zUY>kTAa+l-ps-LjCt+^y3UMQI2Z}*pF{vdQt*7ivGtfa{^H^XapAa_5~=#>oKX2Ut?cg|a5aia%VZ9Sch4jQe@x3f5z zinB31>7%m~a$g#h@k@Y8sTV!VV-Qx6r#Q@H(Jf9Mz1WBo;!XJdkA2_R-T5m#`m8UCdY=DeXS|*=jFwRXn*S@YP#h_40_fV{RFIsAFnXUZailJ_sPab zGtbo+99?=WQJudW^tjgN0{px8&pVv4x3GoZwjYd{ zv79(?a{}N~X&{*W*q=}4QQE!imq+snRPbHWxHn0-IT^-Q>@;0OSe6GTx92gs^dGOu z=(rMI9#rd0^@R|o`KX^ZW|=sjLpF??Ggv#^CL;IA6hMR>%SR*nl3n=C={|L`=m6OD zywS1;1=}7dPS+Q?o9$1TT{dY928*FX!K>rnV@w0V*j#DLH)7%)Wq0PYb0IFrJ=s8+ zBFnzJAS_ZT)kC%BPg#s*R=$6+$SW<-?{k)R7teP;ZiuS$Pl)EKeiq^)x8E0vtSxdh zZ_|<8xa^)hl#OF$iCT5j*R4+x%N~Zhcc@2OI-mDT63vX9(Q3?AmaKFx*=Gy$ zARYowI6Ut?rN__Ni*0!J5B7SQP+FfbbNE})QEWbj*H@h(0!*!+$Dc2576@4uvc*Ne zZ8EqYmY1wVq%&L7(Q8hMc|(5R8#Hm(sro&t7k;n#OAhEX!s(#D?;FD;Q;k|n2u-`x zFy`&ZE`2ap(&+kh)$iQ;#6ItT#@%ke9$>dl$Lvpc*XH!5r>T*O&dGVwaqNv_`S@5L zWm3UQG2C4GuFW;@C8s+(YXYmcDUCFvn5GTRXusi`$@B8!Mc^TL!d~ojTWV^=hQHuO zwx^1IKFpeLKO33gBCF=e^uNo(dvzEN3jy0O-}D&Kw_#VTS}glxvz!9(kiOtWv=^Im z+Pcv#b`U{0fN(lhUJN2bfl#da^qilQ5|IfiLc}Gb)!}G}-I!HEad}=y^=gmKBsh!4 z-KtvKpBKsYSh!Yf&r5;f1e`D}6McMeM0|HtGbIORrUlYoesl>rsNjc-PtGa0p-*M8 z#6y;d^NZjJXr+? zV;R0p$dX(>-Q{e)y-IyLK^Ht4j{c*TO`wXInNm#FX(w=3N((~++p<;VlLcrXm$x~C z&8s;E5{se4-V&$KrR-C!8hqL&i?`WkJ*<8iTRLm5sgChrWE2|Cec{RJP@J;)X-ucX z@$;5xxo+XNvgPJVQ+R$rz|VBouj6WssLZGbAyE_T2NYLhiyI>MfDPJN_RNY))>fjoozKM+fJdX2YzgnDL zI<&AMDbg5RN!Asc=?2O6b?6agW>9NGQVdngng?AP_!J}ECOQyEXi63U@kGt<;+BGN z`C>?-h^H08T8=({J|^n#A7h2Ph{o|okEFKy(7I6mmxQ)IC4qaZlkdT#>3tR;nN9 z)BoCDgI8GW!idwr=n2dU2S6z&CQLExYg-ovh09`iS-+M!$!r#7t1t2s`Yy&{g!PZ9 z+)Oo9nCTMIw2I;k_bdbt`mt!3lM-=N$b$3eD(xTo>ytX8hgbf6M;JwyUQ1rRv=)%g5l^xtWQvA<;YuGzZ;xVx8qt+d zW+U0xu&SFkegpuYK`U?9r7v(51yl6+S&`(=I;f0FlgH$vJCIN-{$Wo;?Hy%}==Y81 z7gu!CP4@mR6Si9qsv~YXopVS*Lr}pt0B$Dujk7lM)45y37p*{!#0`1hLswIEF4>fq=O zEM@Z=B63hmQx6yOeU(f4d!Cv4hB}MJrw7540>EgPyiJJTlt=MqmMmpkYu6KA5!;hD zYOl~J*awS;dW?QmX&b&r^N2vL%Me%7pFAolhWL`9dZ)yqLT|6^-GtZW#tO1@oKfQ zGtl+GkqK=>MGjtEYdtt#=;~}|E!#C(r2r<8>?G`d0+UEufE7h&CJ1ed5bep0z$Wrv z^r)qGW@R3H%IJCpeC;C;PoB%ei3hq3?a2pC6X_5`VNdC-#cGWKv%{h%Rpu|fJ=rS- zY$tgpQXxIrGe^*kW2-E+S8iMk2selJ{H@3#&&H#;+nM+!`*HgwJIB{yLo!o-K&~SD zj&NEIoa9W$nl`7c{q_h?pdG%e<=sWO*gSb#{?X0x)g1q%blagt9dUg}>?L*4BtmbK zC(}}AIP2V5D!N@y3O7xqRL*jBUfr$PE)A?+3}w28)b6ChzmNMy+hC_$PujSan&AxTw}^o!3=iRT&- zvKlWF@p-dP##%3Hw|_B){nRe;&k?y-=$F=+`i)?jxXN;UEt$P_XO&%NqGl|UoyIS=N}aE5h}=@T>J^8 zvf*dwYMXOd07`G#yoNAbIUA-OPau~K)%W>_#^6Wx*eFg9SW?^8ol#BFHSf_YK1I?p zs@g2mN*@#xV^*8uM%}{4V{qMB8DAkJjvRG+h+=nUzGSI3wl05r7^9rEmq5*ike#x#=D+JVjYjDc$7}*2|K`I%y~u>-Tzn5g;P}=VyffBYFL1Y3nuonUz4_6lMT_zHA9xP40OkD&zq(`cXmV zTGB0bdfoi)j)KUIE0%xZPv~BAFR{PIaXItI33x9nhZtoblRr(xlAxMIRxeEgv_#oL z@(ET*XHYLl`~r6yh=a+dv&c$#0%M8^pt$3!ynuCo(b2e_7hO0Kt?1Ln9$#MXd}y&n zh#|N#g9?52k8Cl!m5>cxpqCQ7C$Mv{@y^gvcCS>zqd;6Q?%tc#1QG;x^ol#( zV5txdXRB~65nN-4M*pk&tLOg__fFxJHO>2QoQWs4ZQGeiGO=yjwryJzO>8?mwr$(y zmwEBLzk~nzchuM3Yh8C&)#_ed_v)@HWwYN~ua})C>s^~g3VA`gTW_qUJ#Xg9`WL}Y zCny0G6u{(3F5YtbpU%Tp8l+8^$*$}J`uj^ly_p$PplhpS2)HRFz5!9Gf3_{c16UWv z9pYCSqw${{l1Uc$G~Ogujj9L#mj(`zA-d0anV)MGkW|hF@DASqKhXF#@YRW`TbvPJh?iH47=5crMDYS5uIW#K) z;c~W==a3R@<-_F(HSyqvo5LRS+Q66Bz$(l?vfesg?pKa(1bqfEC1h|A6>x3AMy3S@ z%G}R|dB+Up@D`A%({vo!9?uS14|g9i+eD0N{$@2;s6)N(b4e)AvEh^E_YBJ5NO)^~ zx9&nbuR?!_iJ5`o2_JW}wbrYo5hbaDLWk|Pu!~s24C-q_gDf|rz1N` zv z35&<)dQplhfhKb@R|AN>=0BK0%L2s$)xb+tLy|xSrqozZt<$qyZZv1UA~XzJ$9}+k z-7QU1Di}kgT!4|U0T^u7GZvvg5e=HdaYf-Tk?igmMWm+x*@aAzR^zxBorJv0;C4AU z+kc%fDUs?oTPCT^Xwa+i1u4+VR~tmkIyu_WhfaMjwvGIC>_|H!fQZ(wJ1j8GYZ{fT z4~)Hfu=l<>w)8|n*X2r-OAIfsDN9l1 z>vA03WNl=v1?9-gKrDg$bD;`ZX?gxxf&7-2g|n`6gi^QQcaQhkbd(vuM|t3oa)EBh zlAr3{E;~FDa5}RlD zsNCAoa!$(_4e*@L!l4DGU@SA`mxsLYx{EhVWYdd;%;C*L2R++w(i79C6BiR3PGU@M zG!K?OE6MrIAP{J71%ym44@g=`XwtJH*tg32upGrfrO@g{Y?MZFuVa)js3Sc6orNX& zMO5}%L!?_JbnR*76$=}72e6HU{r+JgsOB6wGei_~X5u5`V+O3=vUhYHwHmJZrFHq3*vB;f$R+j9@l zm!eGF*zIvu#)Jnz`4JmJab%Rt?d5?ob#ay|8XiXBCvRBmky(2+^t`~O7@^tSqR?Pw zddq4GcV96%c|Mmn6kkw|*>KTl;XE0%)?holrq<1Y`3Hv9895&(e>mKN3baO=d_@;}X40B(DD^8)cs4!K9C>%{+paC*gsdW#wMZHU|L*>u2!S1)+!NN1qY1j&$ zn(JB_a7SlftbRgP^K56?_GC{Ro+A@j?!^CLBz8b5#?U>xAAM-tDbEWViKq9%sgCCW zy18bM9j7Hjt3hHCI(=%k2??jn1)smMjT`2ShM`PCdyTW%VACni2QYAf+Tq9(*U?e6 z1D1*!npo~0;)Y$V_TCt^%2bS0A`{iz;4)uiBYn@!(F|=owf6BosN>C_8LISQIl`_W z%7O-q*5(f%X3Hfj9HW$;S@-g=>5=he91Y!f2e+R4N5 zerTg>zr1&Px=wFXjMpMo_cmOm+4$Oq5_JVa@#X+9hM53d$@sXv(lYxXy49PT%u96( z(l(B_vZQ9CY(z>n$QvEqi*JO|jLkv@Nv@J63v}-0z4p%AMa$<-KKK)I;?3@UYN68> zqgooX<+%;@_=EN(CT%OZ+N395YPk}wXd-K~rIm$~i}l5ih^$1b!F=qv)!N!x2#@^| zQ#1}bJ+Y!*0998n{v^>xnBzVRLMrMUH@sl`5{^hi1I$Aq z>9}-Ntm&y5ILOQu{sRD{4kR94T|l_ zkay81Y-+BO)hGo#&jYrW=*)Eq$wUm@qTC0AB{>+M*idiix@pWt$7wZ}J z{RzS~?+rh>NQ!6yvT~JqlBA@}0{zjcjCYATHzFc_=h1fIHvB=;C04Sr4DK44?=dp` zYppCKs8xz>)+2dIDGqC7be|T6*fJ}>di}-<2oKM)1Bx$m=gOI&KV6t9y{2F~*1e;(d ztes!1Wb2IFHUe!?Ofuh^&nD$K(A|qYG>ii~Y^4xk7N$L2o@7|n&OJpjKXP}PGLhZ> z)JFpA7_@do?Z(|U8nhM|fxVc6fIg4MY2!NIR+e1B@e#V{yy8~~s@0-t)!T10dYJ7l z(((#9u6b?Iq)w+>Ax)ugBBI0Ty5*TU(e#;{T>6SGBNAFPhJX5{v`SWQSVg)gTeWSgk2Bxigf-!FK~6u|fNY6| z;cBy;%h8bFR@ly;70+&dTB{|eYH6cYPIeIM!ZuLR&OT=@sv_rI%;+V+D4BdGSZ?FS<&U~$W`H=aLN{o-@O|q-bWg`pr zQybYt20N+AuICL@59^e`&P}M-?$$DUZk3$jb8Q%R@Uq}UuQu2XX31W3;e6faluuM9HF?Ua>p)nCji4{u;MA zft9b#UTjkL48;%!V};FccHf)xa4G3Ry7cI?)@*R8Cl>@gre|if2iz4jxzv)tp$3q6 z&tXo`8Va&DPXofhS(@NSs;xT9wFda}n>e?OY3A)ViculA%M|K%~E} zlff*R9Hz$>ljPzvbL6MsjK+q?;WiVyb?+d;hTq1Y!MIq$%hY1l6~^pTDLwLscekiw zC|=@cq^keJ>Ckh|yiWbQ1$nxVIOaw%MUHW)T9QljAUT+$nDhjjOsH|2^$s^we9`opHt>YAWok&t zc9oJ(|I35>n>m_ix7BMF+zcyM`|C$#-XhBmtm~(Vv0x{xMpLfip{Sn{tSsx=tj~S} z9#3;=$S=?InKPfB>F`r^Zu)Az7901%04}x@eh1t(&&%vn#{qar{A`Dk2CZjtqX`-u5vvy_1()q zcFy|jYRc$y3%aiZ9r4hJK`~w7Q5oQc4GkF}mbc>CBdX_r{a1EuEGYNSdC3)1i{k*(cX& zwJx+mJaji-SieKO$W#rx7iZNlto+*JNn>jr%(fK#Ja!^K;11GmXT9y(c)a4IJeYN-aX}=vD8QZE z&ODoJQA-nxEF>kTwMYI+dwr; z-uO<8I_^}VY6L*DfqWy)7*pQx`AmuWN=@K0fzySGT%jD8#aDgW7o?E}4GOCu_gmbL zt_Z*{WvyQPm8Zyc_C=e0k#8(N?5@~DS$ z=;(TgrRKUP(hkt6e$ydnxMShEtg!SDrOGz9+LFnG%A5}S+5x^H1p+bdc(o%x#zkEz zhgi~Lm%#6xsF5NfFC$|%xPgi`K@ejlhnY4Dvki`-2v_+6kja*Red|52^)B;EXfDbS ztrYzOXDf2QdH9-tr+2F4nV9yvX$-BXBmIzN;|*iRe;Y#|;_SSQr4DX&!g-3oA)$Go zb=sB?f|bSJ=qYm%O?<04)+_)$NWRq^rd4tpxVffdcxb*4uPLfzt=Z~dGyfD`2$oB6 zo5iDXkM|=aTUFRpk%0-w4eWNPeI#IjMawH-?cu$CLdnnzq<`GxY_gY2OkO9jeAy7M z^Ja`)D^t}qO2lJn;Hb8mencEQrcLkZ--xio!LG;KxHC&E~ zRGm79r|{9F&1I*zN4?L{*mIg`40{(2+^|!0&N|Mv-Zq?C4%#8If8#faGLZ4>T&pv2 zqeEp%ZG^}C`rZ7z2w$~+C-gF2S_*{_{ds3%A0)i0ENwQP|N2US@6~zZsJg4%S@Gr( zi8I++bI{HD$^Te+hIS_5#Txw;wfDHp zHqDF~M)_UttvlKvW1C&=Rz(_nmz)){ny7Of2XL~Nh3DWgm~29Bl;@`Ag<`bVLvgsnS{1iT?V zhO1`MVX{&yCM>UO(#m(&vr2p;*?j1Ognln9*-+?clJJR#|3Az?0ETbr6CsQ0?q+A1LP#nt3Tx+xcB}DkLzq zoo$#^Ls2xG_Rk)0%r-{v4i*4M8p7oJa!mF#%3{xA&G^urS^lmu+%AO-*5%%{J0n%q zP##E^8+UJUvVj8qeP>}%z+kZs*Vg%AAJWsW16DbyV-&o1a4&1PLg#KU8ffNtGIDEh z`p!sUfIrrf`Ib`Ds86NDc>Yx>3+!h{qIH}k0ZYu`UN5BJ`5q10)1|fU!61hF{n^Kv z2>*M{+30{b#=<&h#m63}33;QXYVqdMfx?HaTFd1sq191)^jVlzbl_p5-7Zh7y`c`Y z$^C@Ec`4_9Qwi7GD5p5X!=-NvJsCK7;RXmA`Yjl91uR{vDC##YUcpI;JkRMMu;0BV(<%q*21Cc+UDe&oVihZxQRke-l z1A8<5+l)h#Q5!R#b~N|_>FdfJIW@}u$o|?^{neG&RCqL4501JaybE2jBh(&t<1_(W zjk+g_2C77DS=45W{(hOi!+}%xdGfpRRVExTlpSv>xt;puQ*cudw97gT1r-v~PWMOx zZt>esTr$6RKcB}0pt{p)@LH*&qCXtb|H5y-Izn)m9nnmO|8FjUBm?-09DI^Jw8kp) zY`*8Q2hij5!AkzF(VEA@&GB?)HE}qbSBu4K_Ev-w<-$?|1Kdmq-4vFnYaBBfQBz}# z3Cm8^Ju1CsAa1q@rZS4wpyoz|5D9-g;2*#J!{<$R@mm#{mD7$rtAmi@s?PS`dO3$W zqtvCNIBq`{nZr zK>3YKXfk9$CB(wRYpOK#_xklC8uvd>@F>gP4t!kbBZ^*}1A2(Jl!hj~yxGyPYg#pO zL)Ii6GMr9TpZ8Ef7F;FlB&jx<9A}1=X7jv)k^EQw`<>{07f3mW?nFI)v_j#+!N>Ko0RW46ZZ@-TKzR+~iY z)RT;GM*3S`eS3;1eRxN%m9$x}5FRWKj}41B=x|pXe4dW%+-ru#kCbimfb+Zc7424` zQv-v~{Am6CMAjRL7p(c&{-n`t`=_O3c;2>sbdIL!nYJ^in4#=ruyCyYph3G%>f3>n zcx@`BHCCX36fI)zHOwYP8#P3-n`YsDGv3!~O*y+@&b71RFY&b?duDBWycpL86RB1B z9fSTo=kZ8+GKoxWf_26D)c*KsU}oUt{062;GY%QSVm4RLHzVKI=;k4Aw~0_?;I6MY zMit(nt^O(&5FMq?yTXdllB)Hq=7}mQ(C6~C#>yw~m_*gcY>2&d7$qn#Eh0cv_Z@21 zCv1KGgQ0389#>^WCCLxYB^Ow$@QngIl99Vb!i~gAPXw`?YO^wD%Hzw&p4FR%9_?B7 zdXE0UK@&YWQmS%JDzlcR9}{#sg~%8;K3E0E2Xk`G5!2alqqtyg&O=Tcfvr(1#g23h z3nUUF%~_yEgR@q~ga%3gW=}uA*hy6pBrQFYJ$7dkj-g{Xlsx#H;0k|gTVntMJ$HMIr=NsDHe5yWbF~jfr1=`-B6Gd6n znNo*Dr7(fjA+HyYg(bD8sfPK1dNe4)*ZL)1-=IQ_B;zs6B2Hbf06h@Qy(h)*?kWuY zV&o8th9a*R;#*mUHPlL-&NOa^d{*(Hs{>I^!IKU_O}G%Ml(O8p=4i(u3|Ge!1`&EU zK%L{paT0(N(JBgqA57%Zqeri~;X=UK9!w656`s=oQHl$CBnGTPJeS-QGYP!+w!ucFzP`1Xk_#Jl&t#q6r91Jc|E0eUwXV2x= zwyO;|tdl&&{gyqzHvO57=~7+r05=kE^v`$69GvJ$-~NcLvHFQ>vV>71)V>Q>e+1Qb zubXORcu#MH`!G(V)~ETvUE1CWt5p}3b%(trc-AaS7%bXx5;%*oRGWNZemyF>m;(dP z?Cu-9n>?2Rv>u7>!|**WE`^{U$e)(CM&6>8c{aT%#yw6o?Gs5gUE6{>*bQiKU6?X9xPDDj;WUD1B$o z7Cw;$4}p4G)Lda!Q8XI#7tUnn5%@UY$P-5j^ch3u%p^fJ)g>D7@l>R`@67TLdbhcU zNG+>LD7Svg{5i~Xw~1!Rupx~mN6Wmms9yp>7-bC z8EOK^VMZJ2LJTtODu`YwGl&~PzmB+rGhdE1o6FS*2u-2XeR&HOw8W>@-cNiZ^(7sUp&DKB02>|^3uUiF8j&xP@suk!0*0am8#|Mj&^{EOy&k3)w?+N<93eP z;8E;t5h0)}oY3;D4%r998&VTVXF#7wc&+Ot0GD$Z)&x%Fhcx)wCP_ARkz}2dm$Mm~ z@V>tf?OS?hQ4*_j_bl$Cq9>Lp8~kClUCDgbS#avxx(A`AXF%GAjZiU#GekvW7J%2) zj}2CVR3@^2B1!`d^5X(RhnYqHiFI#{p+PeciiuK4r|x7S1-D@9`V=>{O!w%2Kf}4m zX5@WM%ei%UGCMe=369YN%U`SK9^Xre!!&Ysz{bB5x~BI4W!~;vfhxZoIZ;0D9$wZj z-x(lW*c<2_@0hDrU-m~Z*84uM-P=Jk7l;8DGe@lD1%`^#A@>#` zomQjoI!Wc~G(Ey67C_48i(=G8}ee#03R1; z=`cn`T015xWSh{|E}v$R1f*BaAM!`29r-z!hBlvZy7zlg{yyVGqVjs zd(pFmcHjlECKF$AMs{^%WtBy71s8%t6CWMPTyPv7?xQhJX@U`=0hCf*$cm1rOF3NOxRKm{QPHJx1KAo8FF7Rh9CScgBFgBKYihERMGU>Sy z_>kjlKgW`F(8k(j1^D14f&;?bJTD?7B-kvUk5gLs*P_PRnAaK5MiXCm+oClC)cI5zA%Mui_gG6^G0r}bdF=3&; zv_NCv$n~X(N7bToP?HJzcR}m`e4ZFLx!gTgjk)}t+Z>-)r`h~DPp1pOb5w|NDFhpo ztM+gAX1`dmijRCsM-~-NgDS!AZByvW_(25g&r1n?%cW+7_D5WYNA6A z)eg&Sgi%(wuy059WnF=shX3W~iS}0@+^EveV^#=NQQ&d57;tg|}3@$qPSDv(GABSdFnlCMgDEd0ppv8*irTZnRt8>uGLPOc|0D z_HVFhvn#|9&FUM}&7)N$JV(ol)Da%8H13(ffWbkIx+?{ec3@#tb9=H;lI07eUB4Aq zU3;q72~*w*>b)hXYvwq4x$Ios?+A7^KRcKS5gjc_E3?ww7dv5!dx;!foQY+G>E*a7 zT|;=~GY}KfK13f=3G#U--w@HEi}YA-Vw1Hpp<5<|c61!4T&9$VjrvrOVyBv+s36?P zW%Ih8?0JEzNFswTF1T1@u`tsp26_^Mp6Pw2D3>@jhIr3 zt`1&Zb{v}=8E>B027|zBh?uK!EV5v)KKbQE{?(ubGg{U-)1TRBYsu{QvT`YIIntV) zkD^eeI9B`Yzbv<6M>f4l}d)=WOA^#8>HRwQ1S3G3JvBAI%)oxkl#o z)ClCfxW2n|=*`#F3f(HRs#z3Gsz1z@gpwC)+-2SoaYu{-D>VPy=W~tqB3?kRS_q2O zD3aAigMA60v3VZZSkn>h$L-L}RVvO@*J8LNIxMznFClt;qKBk>ft!~=HfEDBs^)|$ zwT%1y20e*i?G^0;1{jC!YAc4w`kG z7;E)A7xm)KSMV)H-ur!fNjT}`9x$Cd?CI|M6B%l6DBrz8Izfc>I+^8!lSgcHsbs9B zslzD?T7OcGaN7)GNh}~?*re;))&T@8mbR;u)n>0-Fq(5HGzB!9sIvXpfk!?2` zwoydSM)!OgK3kO{3a*b;ACh5hD%KAgt`qsY=V|)aXN-ncbeRX{MUHWh>B`QT_k&_f zzE(^ikQ_X`dgU?2nTUOYbS|YBQ>SxvJRIL}zo&^AyscLN0%(;cy2cA~VhRr|D7EIo zMVxqO?@Jcz3z;F=Tboa&r;0W` z2$Df&Je15uc;(V*E}2;s7(Es!;h%q-Hx2Jij6o64 z9(r$d`N7sSs8hTnX?y1I{LzgXu7&MnA)`=)_qF?mO`Ov7@p6@qldfETHocHwc3NK5 z(7rm^q^K@o@%z{M>-#SWr(pJ0`KzhRDt>9gU%j!&bynW5RFZ{OY#z%*E{m0ImpqHf z)&L#KU&EjnSFHW#X|9t>us9c2Cp=t^qGj%0!Eg|n1+_MFw=Nmg+cc*0$xM`C*Rw4K ze!bg=hmXO~^P%5)nDAS(B3+(5Tz=N{B(O(r?Oqqjm)JWv0B1RYr)UkNw#drT=h6>H zqWpODKdwMMuDgoR7eo*O`jM$Dnu-oQiPFCf5XdlM=&bh{kOhfEM2jM1LS&+QNFjAT zqE^?W)sFB%Aq6&wiUot@GD}`3ZamV3Moq4eCs|6;4GbKeIjkR;=zEdpc?j#A<%Lb8 zAX_xwYj9i)w2s1k9=k!wp!tq(hzI|Je2HOV)FjyTj6)T?=20VD=$ObC4^g;B?>4dp zxlx$Vn24Tj#UO62^XJGF&2KBfk84amG%iV1iLjmT{5kYM`jUF8s(v0N{xu|e)D`yO z{qmI@(n2*?x*HG$jU&*g{!tlQr#;9FfWAoL1k! zfz;v&Z0Yq77{|yXxVp)M4~^Zyh*~dceR0Is-_rLtQn@Rk;`R>s9Av?LjL~u}Ta^(< zo?!q9u4B3GxD#v|A9sh_-pMQ@*T$D%r#jzyf5vO_8Ensmx4h}sw-@^2lrol=Y}-Xd zJ})b|yt?XmAOtCuwx_BE?*OsDsFaN3AkxS*T}A-Zsq2)hcE1%6F$9?jLfWI5vocVS z+uQmI6EtpcMD&x^FUE*GW`k&~sm+_)yE_efnk$|xj87vLi7s@ zei~B}w>e#eIi)qZZ3F@_N)C2(-k_+MSnvp2YTGwhn9^d zC?Bz7ExKQ?X?B=Bk@UD_LzmPt(#DE^?+0&<9RTsT8331ymCvB^+Q}Q zPFu{>p6&2MFI(E0TrGG-e4XU+?Q*L&9@rHla` zj8L_YzS|V}iKGO;+Cd$cEkO`3!M_^!FG`w}3}>)I?QoGatR@J@lnX4GMjDhClz6Wu z`$YKg7f-S`8|0O*+GyNFajw|z4$CrcU8XfQSz%owhqZvAaXicLW%6(L_ZQ|${i^2( zJVsEVv{}owvYs*mC^M+tuJOE+=vCEaEX`0F|B4P%uhzK&f2nPrS z`C*UyecC+@0~5;pZdJPc-WRa$@qHy(FSM*)2x5jYG}YYnk=0)@ zO;T;2LTp95hhjMS9-gGILTQmMJB9cC+$JLUI-dT?5?UZef1#KOv&IA3qJmRCF0kLS z)sQOkTptSD9x)#%S>5|v-9i0A62DW1!TXEq1oL^xYbKe}K3%ox(hX4}Sd;K=xKEzY zw7XGJ{%qB5hQ}~rntd`$2M!8P4;E2Gg}jEGfU~v&F3mjJ8+yvxC}U@jP4F`Q1GOVcWK9XoNB|MD%2=>YA0}b zQqs|VB3k1b-c<$ek6Ce2jgFH5`&k@VUpFMDO z1ig*HqgMNgck3@VeY>x53$nxB3hVJNAED(Pk`K>vM?Y)NI>aJw49QXU64g{x8c(Tx*b_so-g$H3~9$S*N zvw4{<^0SZm)}9W8(*|)kr`p)wUCD!d6pODN7AOc$cT_gkI;aBkaLq5MK!xvv`T03a zD7N*W-23tQ?E&$ZP;V`gBOyp=_a-tBDPUt_aTC%NfzR~Lp9y8Uap_SuMHVF#=qrYU z0OYH=atHbPaLJ2*hk_^o_8s^q&{wko`W0)^4jD=T{jZ<@`qz~gxITFI-c$P#h0V7I zi(U6MK>4RDMC7mCX>K&SC55kL z4HSF!*Q%?iKLy6WuXh*!1fs;b)L!Aio18|Zxyyt3pFkhMK`mzqPM_3#pqbvOt+e zCJz5^2Y>r{qxJLoGLemeDBk}h0zw4(vai7WU$g$_Up|g6>w4PuQT!iR0cgll(Eov5 z^*|8>?FJBwK>bg+uRtAH+QT+cv$M*W2{PSdezj@kz_5HLJD))~e zzAmD`D?VPf`TzelO}Fs34PxN%0@KJMhRDI~ z_CeE4Dyno6sK|c3n&nH4wE6@1orCtv)J>{@A?E)KET6b9+iaMW6zcGQ<$xCzn?8Sm zD>)!CsMAL03_G3U3cxIWk|$3~9dxTWTohJ(Nh5mM>48+UkJESr?#Ki$%;^}XPbY$1 z5sHf2xenBCksRu&#n$Xbd^XkE%*NvS z1Swf9H#|m)ZOzxYrRcfA4;$M#>4Yqn%2!38@&5StSb1XkJJvgrxoI}5+iv1>4l#Z~ zHVLrnT>w1v%-q!D#;W8-U-+a!0z@#eGjt0uKf(*PHSRHvCHZmFM zk!YvB@c^R_XYs!A?u~s97mQ0t%E;H_etC5t5$1`gE~*a=^_ac}6K;EcS^Oh6I4CTc z%2FZ&m{k(F62O#X%!`}&n3z}>@tJS03QmN0YDPmCq>$Ig3*j5hr-&}|=rF%8Q*x~B z6U%TMsc%MEnXd3pu{fx}j^hL;tC6_piaLc<$#%cxaZ(-Y2l99d7%X^1^~%B$3s zQ`N$V;K(q*!a(@}fw884~5tm(AlqH|?uz1`)aKtzd3$+BrnydFezC{kl~ z;Gyd9&aXAu-R5Cr?fRgj#L* zo%YO}G8%18qsees&XxNbu2h7_!lmKjQSN<1a$&21Q-)`m4ClX0X$FwN5ptF%MID}p zdNN$->7Gh|uU3xmVsYbWwmigGk+Y&4EZTh)XYrecOvd-o9R`ik8~YZ*Movncybr(W zYB7-r1x3Fj4?QfD1!b(6sN?ha9-M`~r4}*Sd8C?#T>IQa?lSSSu#9^C({5>KJEbaz z4?X#0=X~C*dy4LSm9x)UEZkoYO}vmvXzNtr@T2BA77u{43Y#(CD8EwZ)pohzjrajO z=zjUyfNG_9SWr0F`-xcVjNECB>hLs|br<<(wTxZsLbJ;K9Ga+%=ZOBlOP$ww*bDvhpXOBR$+2ac|L4gfzAx};0eW~%kQ@64%X)b10_0{cW?r87NA1bJaK5N z*W4ZI=9qOox)=TN2JP8DUWH)=Xb|rL=k~$DrC@dWv)`ioFk?|8S`~s|b=<$~9HKjZSa$1}wS zen+p=;4CcSF4nLToXzXnDtY{U%j=`V0Dyvl3u_f|N1{>gH!?`=n=jlvB5dfu5w>qC!fkc3 z)Ixi%f*=gNPN(PnOM_bluNx7gPA|>8u0sn_8iw=vOk=lh7$~)*buW4F(UUeNRyMCe|`N808;5%#i-2$6DSG zojiXh_HPA>Jim0s8jfD6x5dENoPhaORcA%;7WDOM`l2Hra%Z;54WP^Y6I z8~1H_o_a(qf~_CsyL&OYO$*uK&LDasK*)TSOs~G|Zv06T%q{)uqUIna!Su z_NG6Bp_l>Rfu7Jq!51$1Lr(XwRlxy6Zv|I6WNYF8MkbfXi*x>*NuYcTZ)t7sD6VOF z_E5r`#bJ$!b;j?mW5-Dj))Z-d0&2O8Ge4P6g2+fO#wrI}UdqW$Cf3{xb@2>zf!153 zA=SHKGc7;$H~LMU!Qz~3pU05(^d|LtaZ5dF#*9Y_f{U+9(zs>TWaR!h8OAj@rW1YD zxW|^alr4a6j9zu-4DKF7Olgc>#_1`?$irT6+=*vc_ow@>tKKaFBvrEX%d^>M^z+T8i@eJ==lp0t}Q{Y{Y%BKSf|#gcnP zfLy|hqxBG~{esuL=@xrUN%&fl!K)<-%r`5+?2Vg}V#e?wvHb}++?rx4t+8`BtH7Y26OV`r7PaZ~xpdFmNphKZd51#v%1sfWnm2A(enh-)>FNSV5zxv zPBmQuUCYFLYmR`qo<^x)yb#bwl7#J5=VoMJOj^vx&n>(O7o(6Be=kS=9lDOhZC znX}O{qc)*%U}R!^fRe7-VQk%w*D#hdIS_bZ1u2!a)&e1tejfxbo)k_BpfElW6`IwA zHh8Vid48JP;Il6giGz&ar@Xg6%;T2%O4qWS0LT18@<8wyxa)ghi*6HVg2#~7^;%>< z?mr7P%D3w7tCXCa&EnYkPeDA&x@jof#bPg|&jX~`Zk z1U#MYGsQx&UNC0#gS6D@dMYp}gFR!$5uPA?i|z|JQrjX4mDN+<^z>Gv0#t!k z^=Mzf5?GO?>j=v{1%QvglZA#CEc4{~n%pa73OWY-=WROumqLl^^ic%-m%(*+$$X9Z zw^t)yl7DE`*Y}ApGIkV!Vf6jKT=41fuj{)>4@v_3??wBIj{m>GC~-c$F$tjl%iH{7 zvj0-D7a|eNpZ{fCA6|d)A4h@2{^3`icYj&gG& zbcV`7{Fmwa`Q&`zf4nmZApJw&@Ol5frtX9znL_`q_ZQ=R{fmE@0v!JjhkH8ut5QC_ zexl$%_?v(6eY#*{!Tzz2sLWsI#0xPW_FpUUUx`2YzVQDaCUcz>wv_DZe0&0}=y}`N zDHQ9Vq9tPs@(jVCOyIgd-XCQrPJj^)Dl%Jn$&eKh?JvDfDIkR_EkB%;fTTp-cmQPL zW2Onm3&$;Mj=o8hBJb|pD6Vwfs*r81a!fUA$E76}d7?`j%@EEa>+dqnlf4c}y2Zs& z4lrr+*MmyM$(cCkxK&b%hxWmRuhD3U#eEfLNy|vfOiecFJKrxf`{C>?ZmwQAti19a zR5&$J&20Eujfxfd$4i#NpbgL1{A$SS6y{4#pUiG)`&i%4`7)$YnNV@L?^k$74m-bR z=BjQU@YW+XIn$ZiLnA*!#N-QF80dL9S%2g)ucF#;-jq7*Dk!=4W;(r1c7;>Rael-i z6J7BW#3m+!*?_ceAOP3edOLm6vu(->Vt;nh$vb#_;xv`sU!rwdMH-4f)rfd@&XG26 zp2@a#uYe+VuDNd|BV|HYg1K_O*>a*4pJgMj3__YfELdb(94dcU-S~-XSGqVrpZ`eN zt-F#wEJ{+jE_e; z^l+G6(y-UN$Hov)P03p-HM54B#@k5WM@1vw2svDy)ye%j%1z%JyYN%j@ad}r_#|Jw z@z02C&~S#Nu&1A-GJ`pl7E(narx|S?=d`zPUfh2!5Ny~#txK`Odve{+4vy=%FV@3O zZ-`Z3;j0t#HRbcH7xAsrwB@MB!%W&W_wN@s2kZdro39=&T!QT$wU-%C;g_?-z9JkO z#q!1Nt+pzHDck23!^>n9z~oQ~rMbBRd2H!o;oYp_%_{!fj(27=<+A|}aydDD_YlbS z&yfry)--{#;Na>V(=*qGawsW*7?C1T;=qhYkq7p{&=f*dO3Xdb4IDi@L$6{R ze(VXCII7D_$ucX3Q-LCzuG#4&GiemzqTj(_OpaM4(}UDO6Np4rJ9bqgHgttvc{>%!bmkLFdkkDO~fDVEr4XEyfZbM`Rl|dJCXd;+6kWNUL0Zh~f zbLlA*PsfCL-Bv88K)mYYKrh6T(3(&KX=x^depA`EcsdWm^!_dco0j(#)ZQi%6e5!k zlDFx`tT97+O8u(UM5k!M5~LnGEfT?GF`rw^&@)B`N=yryfCz5LeB?xi4gUvK9Rr8> z{A#+DchigX{l(QmR6OI_aW?)Lv=x?ThrohFZ!Gq2!BD5j;gImstY*RY~HOx?*8Pwpnj^jiNhTqH&rl zP{Q&b6)F_)5g}gbrJZ8i05nx0M8S1qoV)$|cR?VaZ5%A^pE`HA730FrKE(Bl~YaAOoaT zTE8Nm!H}Wm_&bI-idW=+OOCOb{eRS*V|OOOxAtdZb7ChGXOc{8XJXs7ZQHhOJ9li` zxMSN+PX6btv!3%6p10jywQH@a>R#3R+Se}^7xvFpq`HA2aUOIQ&zblNXb~*|L>^eZ z`LfIhfrkzrlG5^p7g?HL9)Mq0IJKx+vtz7o`u8#>di)75avXP@p9B z8rJy{N7;(uH^A-%2-4Wku3ujpPBg?T@ACC8!p|#ITXic6ygk0PAZq?Qvpb4XBo@dMfQvps%2#bIq!xBtQSKZeN!=fd84^YJWHT9ADQc{8BaPap`@Y--9czuyL^2 zu&_X0R`F7`lBCMf!%rwju|QvU_81f(p(UBb9GMcld4|80KCHVxGme^5t-hUKU0iOu z=X5EI9>!lG)d8U0M<}W|I8NS_iGUn(w+Covt~^y9pX~u41DbiPPx5uaZN+Zn^r*R+ z$;+lPTlT!Tu`DCFnb}inFzAU=7qlJ79owSn%8Rq7l2Ki{oMXGxlz_hb;ddqqoF|qn zSFI35d^q|^f~EjE&YQ0 z^0K_T-)vkJ&=aHPHR5nO=f;KQ=4O}9yVCCDSm%=0vR=mfuSp!(3BM-K`!5Gk-KH=l zPiffzPH}1V<#~hmdoqlt!McqLrGoTRv{9)ar$aC{1!Co6(asXq9n<6uy0jM0n><@t z%R0hAFJP@a?9Mw)inK-DhfA~Y#^PhA97AWsTMNi( z0gGbD8Y(#w=2)aHtQXZLvO@M!SC|hyHD)rKiGhH+5jamn-^mpJW*ue`DE-=hAMglu zmbE_f%1?w6Zcr#LJhob5MO-y`S?~?WrYnO};>t)7s0t04*3lH$xY(zbSH@Bt*E8by zF@&WxnjA967T-|hS=~*Z!-#?1Q+GbA`Edo7>bLILZktYDEpwT>J(4q%^m6I+%8M4g zqmVx1nFQvUMAsAFqPptvc;JQ%8*v z^4`U+ERe=HuDnb4vvo&R-Sklr=R4C$`+2UyS~DmFHf)2(Btsd2)Q znCjdyUU5?!2yVRgJ@;pPL_IVrO5PjWa4O6)!$G9aAVJkK9&ukgKv!TXfczT_8TSZK zSw`)C%6CcP;;HZDQ;`r}opU?5X(ZDY50pBQX?1c$m&td(Th1DN;Q&(%6vUwkYcsYg zFDW+Gzv_H*(uOQ!H+d_M@)8u=p+?W~R_Hf$?%?#S2!``ibl1?fOsy%1t4}Z9>98`{ zT6mZzQa5rP8I@oqAaHhKkX87b+O=)2j%Ve6)o(1vDd7<1XalH-;1jJIkk$Dk;Nj?lJE0;f%o#2H9#0MI?5SI|%~lNA*_i>+X#D%8KdH3H!lYbUWXtz96tE zHYTEd;O{7Y_NEJhj*{ZwmX>Vqk%P$Q2y3235H=m&*(ws0yYow%CDTV^*|PVc@p5*R z@%^FrqI+4$VBjL2SX9&sfT|ITj6p#cMB2JM+v-M#C?MK6#8h%Nno}TSoh?b{MHO-YM=*D=f@B8+@C#KQlA>Rnd=_1_0c z`RthF;KtEikH3_3k5URGd_;8Sn1$6NtFgJ|vnQ>Ui6JVQq=7^~tzuAvP|1vqa&#(* zN%w1C?*WN{o%504gvYMtI0-zin^-hdatUT}YT%SRy~<+=lJXwp|BAwpqZK4KS-8YT zN2aG=-d`M~t;Oa7w7~prn4=^vs5Xf~%A__ERAn=5-Et`TH@zK*Bq<#kQT=E9Z_)9| zZMK-=F*NX!z6GX4b*RfQV(h?k(g!WoJc?>PdotRC*(h5#G17*f5+?oGpEjtlF$yG< zY=?r>f-mgDckL%zs-}@ZVw$%6mvt9e2iXL#6%7NUHBtYl%{^v8*5l(SZEa?d3Eb!0 z3gS~YE^o|Yt_<>+z{5??*U!;G?ti8?Xawrphmlo}bIB$S|4=n1PgELfhlX=h{N9?e zDnf)wW7%!z7$mfsuwJ|puk2igdO{o`2$3K5pxxB!j=V}lrCeZf_2sfTHKb9NxsV>X zxG!6qqEm%tl2}k09!{)9HD{l;?+TAiA`}f36Ep35l-Yr7k&h1z#o^`cIj+w;A7%uo ze@9pul1ILO75_p*y79T@U3TVip>&(k-@pVtQ_dO0#Bp#a4@F*McW&iweGaNZsmFeS#%;MakIET!frzq- z7rpfQs;yzbgJHtUS?(9o%sciYg6P{M@y;AQYIFi{Mr!ob4mey?gs!Xli|4C)X?qcb z#7Qz;lxR2RheVKe3bSLZ?G=}u5TfzeWeedA|eZv-+Vsn z(nqq>(XgmB_S|urf~>**l130pA{E1ZN5R{?Gzf;t%m#}s;=MX9q+OnuOY`ur+WK0F z{&NejOL2~Z{KNDyp|>hA^P4;VHzh)(jpd*`@El}2_7;c0?+Xo#u&e)O-u6mjQ7O%X zw*mq4Z0Siu7>rb3!>u`sA@(dh1?E%qP>M;@&M4-pa+0)v&;^d>!^RWag^dMgis!Yk zhFeEma^;GDmO|{l8dqW+%WX4qqvUNCrv1r6gm#{au2Q4+%6;g#`LBJLou=@=u@}c9 z)y|(J#%<-XBacLw)uLVb`2f9*WlTJ@4ts<(sjyb;=>|Q}H1qnv9!~HA97&aTW#rjy zmQ1u_3*+aMc4MeoB z67^~qW*Ws~Sby5pwUrpT-XBIk5MLe^%Gc-jXPRRY#@5s|I6d5LAjA2L;~tD;2qRTZ zS!&S18>cFV55a_o`%!Tbl%ta3%2yvVxD7^-`X$i_V>AryznoMm6CdklqdG~xs%p}g zs&Rj;wEXKh)}tn;peo2Mgi81K_m7YFuVh2#e4>sLG^d7YauGW_Lh)EXgVDa!{=2TH z0WC>s$CBs_9d?R`EE$;+l&oPW%nE9}NQacTag&#%`T-$;+)T>kLuAD<9c#Ry|5`qN1#vQhZ8WQqoU5iY48HMLsn*@C$%gPuMF` z{Q{allQcKz*btj#@kRZIHT4O=;Tj$aq3G`5r^sKlr{ntYwd$_d`02kfypIb!Epz0R zoE|lKo$wGf`SW<~pXp^a-%#eX6m z8X_(-=d|3BQ|a%?=}{2+>b)lRun_?F5Ki9ij<-6P;wIh=6UI^dqf{3O3$6xd^Xs;w zRhLetYjn99SdrojuX=F^2Dplv&;a_t*qE#WRAz5CgEN*A^Vr*W$<(0vo!-2$?U_;+ zw~PJH%kuK+pX#?eG7NrCf{T63D<(eSb`gIi7_hx2{4$c!o4!4hl1!|3|hb(`w0#-z_m-b4x zjOCvV4T*&v4ef3zSdAz$$aNS^f;rWb!_;fuSQV4{13GKv<_rzzXBatHYx6ByHUwJy z%tybVfmdffwjpi?4x=x1aa2^{D7#dLkHh7!KB@=z(UoZlPEW!Zpv%P0d4*3GbR;eG z7V@+(;-f|Pw_P{i`@Wmt=e-UV_X{t}qb*{};DD`2!h0?kP+AxTj7|?Ci;U3MaTy)N z*0-FOBPHM&zl0zlR3fky1uB+gDBt#uMzP0=aG8|QA}!$)+MnVCR~0U1F$L!&GU-=r z=75nL`GD}Kl&H|PxJKOUJ7#2^whJa2sz@MPp|)-?8zFnl8~-mu4pBA6Q9>wcC^!tb zw2IK$RwQ)jJ);S|1q+t#A3sqbEpe5BeJ)i3OS5Q~mtX}aM1Fo#=J9MuF`s`vpsbcB z=OvZTv(7|kTh#tK6pw4Fq!AeJ*Rqo-EF?h}V9atr4hT=rVBtpgy_Vix@n*8Gu4rl5 zJ_)kObAp8_)87Caxh_-#0mFZBQi>c7T}#D@PS>G8LKh@VTzLDTL$`NgR_)hD$`AR) zKz<$=O-alLkP+8x?+#3+rsfqR>9H8!NJ`bsf`R?6r`ovJ#KcjxhYI*7nE?WVp9{SU z{xFd%{fejwKRc4%^+ub$QA+KB7#hyp&s6lQ=BZu zi3{iNR zQZhGDp8vx*|B_Kzx(@Vz}7Ik2Gu#Q+i z;hKUAOm8u+RFP#DFAwFkDhW{2XPmBHCg;Yu9Zp>;_5?x(LPSCRv)t?PYaIdOT)APN1m4lQe zY8>;>oxmbOsLAYH-2#U@ofoKgZm3AAhb_kC8lH$yBoNTv(Amx(m1gK6FoLc?V2=P{ zZBMO_4U}wTC?Cnph#YEf*-Kx(gn%em3jBEe@pUQxe!ZBPns7Rq!VDBtCb!5bd#`f8 zkv+RAnEpg-WMr6eKX-uRekmS5Vd#eyVc0az{`4PMh@cM^5VsD5*k15vDE7mw9whif z(+qb{QG2Vm_|N;vv%82*l;uoz55tDw5u4!y{RMp##^8zw;1HMB^Rwo}AftzTMapT6 z^>KkC5~b$$A|FXY{kjo95sg3RyHQfLQP@jlPm@N=+eC9)?K?JfFxxZbCDEw$S;QQH z7T|`W=i#szau%Nr9nywzow|oFsi&B4JlXbj)jr){sRu#9Z;NSHrUy4xKIGpDJ|y<& z0iS%p?}_I}IC#Z6EX;}TqjnUg8DXxku^>wK4)ltX-t`KkDU_&gAhKTVhaU>+l&qD2 z?@ea5+9kEJ4ezVqG-yrO2SP{sL^|efrN{0UKRMeSSI+9Oc<(a?|UgU|%6 z0jl#e4mPat&X0@(lTu(T=Er8{qfe|`{dwSsmyhw_XBvb0lW|!lN4OT}`sx(NLBn1G z&dUjQ<>n*uA%Dcc%xXdH_+%lXo;z_SG9V9$4;HL;;~4Iu3AC{AHj%4<$`u3m(r-p5g=pvqRfG48fo2etZVUG#iR4 zEraupgQ~w>)sRX;C~HXOdJf0x+?Z=R{*gW%dX_CR&;G>Ct5sE3shf^Z%7UBUPV$r4 zdWGPa?6q(0Mt%tW3YJ@{yZaV4- zMj5-Ade&DOR%~9jSg6G=A2gJg!8;c|FM!Y!PbcFZz@Z}xc{d!7Uy%AWB(nW&O3vE# zslzs3!^@-{AAyaZ%jilP-2u{1@c0%sJ=Tv~=o?6ZPK@|~P*2qQU5TF13*`R|0zNer zSkq!n=Iq-Y*He@{gzr#$H-0Rv=S@zk-MjC?SEn#}V6)kpA-_7M?-0BeUZd5?H^Yh& z+#~&JFbiDyL+ILzbxej3kA;*Xas*}p(bZe3(uOF5V8z)Ri@r&Kh^y@DWn z>LMutB?v&JvwIz);{~I2Sw$ISZXiJt@@l%d=;B<{mi5me6R>Brk)ejZvQ(`Mji(g| z;+JcAxO;fOy#=n3fVIh&f}}Dh^j)lQ8wX{{SkZlK;AqJK!8%*lFD5N_?D=v1a&&5K z>v>fZ!P!m1?-kAlV~N1a@U!cq`4|BLk;j&OuNspu1G*NZ82b>xS-CK5Oe->M{nUhx zI{d^qLg2&8vew9yRcp*bZbfT5cG zLy(0AO1e2*c?kk-I_BK87e`%2DGhVWm(V{Fdt-s2F8FR8jD&#g>d_h=+DBZTiHTLN zGNQ{ZhNg&+l9;w+%uvE}qyo|>B|yyl>-~}uOa{dSkrcSvM1Nlun%(9{);iZ7JuLst!U3CNHlhXN%mB z!S42yOdU#Ct|PxLprWLu1}Be_wK$uCkfJJ#w#%J63CeKdT%x^myw^zz8ad({BO$}9 zsKGSC%N||!i93O{x;wA@;HF0;KQ|s z*OWSiCDY~e_^?8TlOmTmS^bNYwZL9hH=Yck_`sMfWvQhh@IIP=!|lv^Ke>u1gT=~r z0V!71({xi)@Kv9!l=w0)P(Y7s)@S{ZjJYH0mO2ScU8^W< z(Cr6umz{Fm8U$4dP!r!UOcRD|=0p)`0Ph3ZmG~D7$}^uPON4-)-vkV{wL~Yt3AD^P z9FDv_fRHQI_ zpq!)!<4OKHGA{Relk=KCW_?upNZMwG`Xt(^J*+{)ndwaDad1}YW%$|p65K*76e5}n zLy(n{5uE1ZTQ|a5vxkRPT^3i>-&5oITOyyz`pY)m3MXVg4@?cRymbX2kbI1qkqj({ zD01l2XGc>t5^ZDW)F_s zc1Q&RW2!kCf4yGH-THNwP4hM4b+~#ZHHe4Smtr}ZSsFh8hH&o_QH?|Kyaqk|48aJ` z?TiomS=&sUYrd$Xh9GfK(t&>&(j6~04m$5?$w3zqLWk4wMgA}w8U~?HI!Uf{a|G_2 z4CB4qU-gk+EviH+2BwME3$h|wLS3*7Gj&EpK(D&dFH$sHVK7xfQ) zzRvDh+$?HXv@6U^6`(FL>Z1=7mqlb-=L7?mAd63{o12>7l4pr}mCS@F9aC>rPG zieD5Q(K_kwdJ{-_=2azu3MW70v&#iZq4aRtuG}zO^Ey2y?_K;0VjZZ0Iukme798C=L_XzkEkh5FQPruAwNe zxLR$_D5$2WvMZ^xE<8UttHRH4^QbTQbqN1&fK!~xGL>!{&9w*!8<>fSh#1g$03UyM zq}1Z9Ow7AMz*J1oL*iqIPPj=5-mr1*k>rR~>WFk|6_+-R^!!x+b&n-@HkD>|Yja_> zf?-@NMj%gZ6<{_F6QD{P!hb;~;o*TrL}AE4bFyPxWMEhoT7c$BTV7=|@1RxB?Fuv; zg*M?us49Zo+x;sgxNKd{!NXdR+uZC&QrKvDl=s8o#ActLzM&z5VSYZ7aY0^Fbt=vd z5nyW_T+F7fIxB#zp{ckwGvkN)v;r_Vq|YKYIRmV1;R~0)XezF*4clp<)Xxp`W0IdT z_4_Z#e>OEXmPP0TPDYvz=D}w%;W;tTN~uUns=a>{?X+2kWfeE3ufly?&DtVsaY_iL zwSOl=)7_I>$FmcTI^c@obiX zafN^|R#<<%xooI1G*pZnY#S6NeTWhY5_4FBkRj@e%}ma#Zw!r#i*BDtWfut_*=`S0 zA5WQNR@(XKh5W5PIi&@^niZ!YyCt1w*!GS7;^s>Fk%rEHJowQ_ncd|#HPjkrjVOv9 zCbrnMqOI34D&;i+>buHBl|X6%C$8uwuT)<@lSICp_$$TpBGy*h<8uVW>Mv7Z;(Z+> z2JPgi)$7{d(DZuy;WQG5Afm|p;<{icR=Pb0E6&9pB3+Sd0of$01<3k_M0*H=C$4Pj>^9DcJz+=(bKB+O2yygtCGup5LDgCNz2Xo zQ7PHc>PCb?;4#N5$K(4(hRTb~M5JWj-@;xwr(HAkp0z$)LGubq+H$kY<%ca#yM`79 z?Ug>OU`G!%IV&ft@!Z(4_t3kHg_(~*x0-rLr{!rRap^Y!^o7T*I`R=UH2=U0E1Fa- zX5X!L=iP-xJ-G^#FgW_D8$1VT4cWWeMPVr{_^z2KF1AES)w4O?rxwv@3n-2M)5s?zZ>nro zat+oI+P|d?cZH%hpb4+4wlX|jWw!`JaDh7mxK)ggtaGFi2ak6pF2NHUYNZ5Ute*G^ z)_b^%CP)=$m{s^%;tv!xIm2?eNyi}%M2mri$<5Tw#s%Lp++nM~4l)&AA;7{j#08r5 zdkOX%FIkhVjTvZ(jF3Aujik3?Qis`Na@Pn5z8d3c9^^hp{r!aG0r4RRfx1o%PfuUl zVn3+i!YH8S8!}ld7_Q)g|94m4&CuWp{5*o{fwR|9=nLTFET9~oB2d)@p`!9$Z&z?0 zv7)h{dCPq)pu1i7{@Qt(a(Yy7=bF;oXyw!X@i*4n(5Uh@sXt=hmiM*vYiIjw$4b+F zzTe<1`Y1%1Ozk5?@I9lY4m0tzV_(M3#fC>%o7#g%>Y1+hb?f(OiF3&6A1o1*iSkHt z?)j`#=l8ONYsfv4>l)Roe^=+f*;~;1yZ#l>p;LugkboXrw zQBRERyJaam=)oTvDd+|8@NJ>p$Umg;6{?{!a&Vkw3O}o`ZtMO``rM{(r|(K-%WS{rV+#eeyqX{(EHI z^dO!gdl=}nIn4hjmJGk|mF>I2@7|Jt|I@+$e}m1T)wDOUQkyEt?DMbj%FN+;ru$2n z!ojC6K>r>x(SwT~C4g)E;l9#K17qgf`zcucbx$0^LC*)-ZJ)N^`*SGA`Rx%jg@vAe zV&A@7>lv1(HY7|E{f-XvnU}!6wXC_hD&{!^v_YC6X;m}kd7eW6#NWxQi?9n1=cISo%1@tn=);+a%k}A-(65$I z6DQC6yE{|;`u4GGTFv_0tL~08#a5aglA5MBIzn@KkB{r`R_p2-$-@zn{ z>L<^x98c06#?(9chKq2kYg_B&CPj_qhL=_gjv^sFxqZ64u?exPF2CwCLN!s;0^gW?KjV#TJiN-6drgI& zu?%JrrSojl>0q`nAqkTOIvY%(mUH5Boc}?Ol<~+8+sn86iL_4O{yD5eFYoY?qJAm^ zp#bOOeOucY&63}k`stE#$qJMI*_ZZ}YG}VWm^gh#yTREq_>RbFo60SG(aFt(Fpzh2 z6z>u8Y4PjJHuLM0xRc`OqrbA46j)rvoa8k5QRNHVA@MPiJ-buRzmvR0D+4KNp8|^_hCNkBXfhS1)V~` zB#-o!1+d)@`BsU_VwUpe;e-`7B@6L}k$;R{edUgS)iU283LI{c2Q9=ZY3`l35SvE7 zHJU{uRC~Y0WGVI10{|7Y)rf6Rb<~Fo*{CI3KZ>^HJ$CaSrCH~5%#M5>w4m{bi-oe- zp7t%4?kp-&gp;4{5F!V{8~@zF!A}-j@w`NMm2*+xm08u-<3G z@+|TGhfWaG0cV){s@xm(m$hi?-L{sz7%(6RU-{ougtf^cVx!?za~(a)J#1$>2MY}x zvq>kgwr93y#oT*ka}8K$OHoq5V!p-Y;Pv6QewDa@5{C&5r!Vv*x~S4z%}meKwC-A7 z8j-^3i$w9u&lef(2f-QdrpC5$RgDcs>zVb#_DD?!{+5QvWdyu-@N4lri_k{RDIT|e ztwsdU2H}2gIj7BZe$oF?ZwBx>xC#&(TwG1DtdfL}!q^bEe*Q2E1j@Nu_H%)HohdBu z?$YLXZJb7k=wrWe0P)hznnGH0(f)!~h`Y4^cGSE;?gon3!08 zN*OnX5eZd(UHp8urrLM(G89mizP=#zOi+b{_~aru=I-u~J^l56SM9~BhNHLKb=ahT z*!;@O)zvVb8`nx!h=Pl9$&UU&|K-=#7?>e)0S9NPiOwTw^GYN=Y0lR9AZso>9Xdd1 z7qYB5T@7l`OQU`=9HJpJS+|x|Q|!L2!?L*I$%|4?k#d%pevsJI_4lOoqh}T z_v2cU{U=nE%~`3dr*ro>Q-In}K*HJEFs2a;FI(;A%F2NL%g%%`@W;U8=}N+K1)!q( zV)IwyCHQgj*L{6SRFU6i-~7#Bq|G>rV^D72QC^6SiZ3F4hI-ts>D`Sx5iigFcV)l`v5Ot6{_27r(00E!{0|P@Kdo>;1G2*eTXp*0 z`>pLkBfPSPMz7)y4wU-??QJUYh5>wIC{n}%q2rK}H#HKNlX3n2ULk&+wh-Sn(vMEl z=xfzN^;$~O{dFx+DT%0YVW4YzSo@+W#%UA0b2!(^nX(IWYeRrI!&&R-avc<21v_WCwJnD2gY~nE)*Bq4FN^MqJmiFgZfCXDx#8d)3681MaJ- z@4N>NV=Jt9fBcwlw~w*Otf{f#u$cPHx5gGSYpwSY5%W6F3c#W5pvqW zRIR%-)d!~o3Z7DUc%O}=X*>mRS-~4mAav&l6KpwhL?}G{$+0%nt<{~q97xZbjnkFi zT;y?LECkwjn1W1eY_IB zowC{l2NL{`U%p$Va!X9!DI>7<4%SX zd%=T;k+oj7>JHkJL(KQAOmy zE6e4YDPdBqu{`2DFA>wQSwSqDTiY0tkT_zs{}eB zZ}mA}X3cM7&#Vj%*bb+Ct6otT3$CE8(qVeC1@u)aQF{e%X+Egg)_BE&-%PBO_WtNq z*^c1PYMZ9L@L@DZ^N5eP8UE#DK!&e^tjcvTP#l%Dbji=dV&hEb)W8iI36}D0u9mwQ zFUZQ|`K}1nS>c6#)y_g>7KC0J4e+5WgGyZDON^gP$-#vi1A_<=K9vSE^ClBTT2^p* z>jL(ehOafQgbiisvO6W|tc{`dO_{(bYv8GU2_NJ!^*<=o_vk^V_vQv2t9$WyibnKinYE*l*U$2R$(SH?~^Gzmzb4rZH1T_PHG;mBy zWjmdYn%5T{?VaDV(;^CBNmXdl(!U;a_u?JeNHiWwjpf_iO@QQCl8;Kb-esKpb~>y?tDW7h1c~n6UhE`z zpS{K?;>@YBcF~POQWY*H(Yo7p!ZFk{Dp7sym^(b1vbqlqK(46R9*Z9C`Q@ALw;`f| zzu752^OKC+=kxwkT|Bvx=5{T4dv*OPA_D*jE5f^XVE^cX3v~L21DCK4z}5&sruW9A zBZbQhg3K_X<$1<5IkX@e)aG42e6L{YIoF*N-)e*9jlizdY-xO(L$--PJLrt;YEMmR zK^4K{rtNHD`cQIwoUy%p<7NyP$!DQXPCe>Ea8h;es(paeu`S&VD;oBnXAT4hI+x0D z9zMSgHS=Std#Epb7HN;$bf;*Ym)*a<&y}*4?O$;cw-mUAQZB{(W<_8GKf#svx{1JX z!6srVqkYp~33t<54(EQyZ6LVJG~+ptrJN%*#piyg_PPFO$Nyn-7oKK~qr>9r4k*L8 z(x6|zo4;ZpkL*1cd6FM9$D(g~o*Z;SaIQAAsxWe(sTQe(39B+LFvWVJ)1ky1WvL5> znb+QuJnM1Lus+WKJe-EGkE^6f9EH#!dS}eT$w6N6AUI?j^VrDL{m$;ctm1UJk)sPy z$g&^R>uuH+PH~dp2IJYQS0?3!|q8<~*w=TN~DvR*K4i_O1jX+Pb znfY%AO1ak3fA~IhK%VrCD^FtN4FPD`ku%iCi%^k7^>NY!4D#8l2(mif^*PZ}s@3)R zX;+)3=*ogt*BO66!`X{%DvDwT7@>7^9yc8X`^F`tSbl~P#)PW0p*DqbryiX(J_}_m z?G^#Q0rDW|Z@i^P`N10Y)%b|(1kgBcFJ}&y=jj-(H%_du#D|&LjMF9Zrs~(?K8klQ z%nmNheSBsXkLm2VU0d52xRvAzofE9O^Zn{jr`YWATDid=pBjsJ{g#(APJc+>Pdz&OC0P=bKW+}W zX2l?H#kNerGI|Wr&h7}z^-?7)BelAY4UIvOFFz?rXlq~XJ?X;4Ngj+gwm`#7H>k;* zi-2l`Mef~}P?E!?5e=!x_MBlG8MuYQve1B}S(*G<(au?oYt<`@O{p|082t>L#Dr8_ zh$`~eF)}l509~TZe4oygn;BoQhmA2}Y}r7Kj8ajpgmm{MF0n#r74ne4UH0M}Kw?=` zeDqDE=^mwQKX2@5_=qZ$Zsn0kucEs!a{1*+$q+khV;Q$e6dF>km?aLD_Bb4-@@efhBlaF$HM?g`vBNVCGp_TK8Yx!C z{A#f`Lx6O7WLHOQt|L?T&E%-pnnJT8($DkrXI+bysFHCrTcEdr+{n4RCU~3x3H+~T zD5&ait9O=Pl2;L7aEgm8VHKxEbES&}#8Qc~64Raf4eeZ&3t5kwRXDj0-10PHQrw-0#(}6*XLusbkv1O8L9%t4rNE9Oq~DF+p5itV|BwC`@qe{X5-DS zOhd@``r%>k$qEHPuAv->N@Ud(yX*s5{pdN8hhZ|*!vr6!Sw44K;?0=s1#0W|9vg!G z2>wEu34Q4sI$Gm|q+G~z;XE)hL}WpXWw&%6J__lLHve3v4%ZRRRpKJ%QAGF&e<3v^ zmjvyRF7_e~+ER1u_halqVT&H}@GvpEhEeT{R~9mHB6*ti;6kJ`00W41$vaiqi&Kw`YsOqIsZ5SpYq^h>X)?Lq~Nv zWHWIrFls+t55}kzaB_&?;lH%dH`NuwiQ8mJ7qGf_bq;wl{o-Nc+-Expt&%3Jm&QE_ za7tAAm~M$*!9{2PvOb<;6x$m4F{Yg6>EKta)<=jj@Bxr^^KsFI5Ql&U;nCJ-ft2%;q#FsNqRJ>g_5M8_C-=IR-@!Dh+aa-2I#uuX+8F+(~^ zjWtxa67W`wmY&O1Kmppyqqf7sSDc6$gG;L_tTFwqynn^YW64F!nma}GDcVX%+I_- zFP0Z--ppKGP3KAkCGDoAo@P?#%I3+ijAgdWi~Yt1x@JhPzjjbTDF4KH|tdfKZa_ktYw_1XeOgph5Nix~OqAPW&_3O7*oQ6~ zl8m>B+P`sx+k8mCJyQkP0N<-ftBWEYPdk{nXk21@_w*b@q$UFiF|zp~#2Ffd;f09- z)B08<{CH*GScvH6!?}C`3aFy;NGg9lvbL6>u#FCby82&q66F>xJ#KRS5r_VCq24$u zDQd|HL40OErHwwzh2ILgeG3dE^vDA|zRr=E!i9tgMW=b>6GMQH=Z}H{nk*uY^=-wP zN624hHs@LxZ{V*XHnSM(LnU+{T-0A1myQN4 z**y=X`0G}}2SK1h$BZ2&xl7W@BcOH(`MK#l?l*U?rdUIk)|Xa@h`N`=L|{Pq6D~UU zm8^SlX)`uB=_hEv#YIqm;l+>-`vGs%>Bv0xx57{SN`i}V?^>)OW%#yR{vfnzRWu|*9VC$kU0Z&Vl50g$31-)s z_y-9ROb99p@;{ic(C~05Sd>`*KFmPh)Y!n%AApu3sAoL65Jc3tef~MyxAg^loHWEg zKnhq10}BN!IWCw!4Yn{C{azp^!^a4$z=o~2MS_xs)9cG~>k74uc;R9TQ6O_ZgX-nfj@ZY$ZpUR}aOLyBm?}{=kAmmWel@S8!WV#WaAOEg!IHa@)?!QO- zwcq1^op5l-hp!mvKS^IQEAuk=tbVrLVQ4aDaj_6zMJ-BPP74(@=eiM5vV?F?sxAvj zqz{)CWzc`pM2VSGpBo60E=$918O+$R4fQ|4#ig4tk7wEuhi4;ONG%#dz%)Q+q<0Mv zT>adk$0et1E^8xdu677YD?cqw8?xZ6*|+piTFa|g!4I%oYnh^;toQYd+nispw6%p; zcug0d@*zN-mHqvP4655>adGysy_r{3P(7X808Cv-QWZPqSD*hu1n#LhvFNzfHDk&) za->d+$3IE1k~0eh14OsWaIE%n6v6^ZtNq2Ak zbW?7#;)bujp20kvheEOuaD7B{7kDd5|Si9qTLw*tH4kNlrA3X@sAwBuMJrsTrVN9)n zVZ)!QsuHSDXuoIws20vQIQTH+I-M?$z4$DpOm_bZ=AwfYD-}4qTaG-|Z$$K=`+8>y zodmX!3hWO{({0K^t96XkG}CS58Ke<}fCoat{nlIgy6>0NL}$y*)s+Z&xs2Tpe^7+j zK}SYv5_sh8k-g$Jlv*U%A!MPS>H_*G`F*;+Htc7S_A)loElqrWH_uGee;2m+-~T21~omdvtikNGwp3GK;x&Wf$#!6 z*AKpM^e{eEitnmx|4JqlGuJ6)0b!X>96wRYJ(a&h~wu59_fhGTbZ8z*);b~@~&W81c^j&0kvZQHi(PV%Pj{r&GV z-cNgsbIxA7s?J(-?wVD#mK+AQ4@dlN^MlOT+`a-v)kdcaQtRV)EN(*xW?dCY7!jZ~ z>Z%+t!|qN{4;?s|@6x8VrNnA6VGImR=@b;!rEsB5&2d%gX%sKNJv~ zPch*nB#qW-yJ7T%3%Wz~d!oxp)u7J*kVFuc1_&zxv9;jhXRWFMKv*z)1Ol`jdfWD|0oIQBPK&aj)>QEPP~*v}_o=7|Cw=Ej%-V)L|-OvzxX>O+CA^?A6TqGA697khj((Dcm2q`A8gz5G!E zVy#CPJ_z!F<1EI&|DNv)@Ku;^nj|66VS}B`pkb#IgdzbzC}F_*Pbad&5N>v5AQy>@ z+-efYA*ZZ8bARALA)lT8CX$tJG&pioG$0$|f#o`OW{uauQhl_YXhw~3!K?u3*~5Z^ z5+xqQ8n8iXueJRR3T9oNlS3ZKPn7(-598e6z#%}jV;79bm>Hi-W80{%=C-yqNc1+H z=rL3pGDbxNmNtY@8uSc1?--->?2Th?s|eh0S*m%%U~STWE{q}r5X`GkCwI8qi4Q%_LmDc$C{5#Tw!kX@N=rz z$na?II)OyXvJ_{^{0NfK?tFWsSd$BRrw0mFL*Es=2>G?`JrRNs(6fnu%a48o#7!Ja zN;q^KIOjVDun=LL!ACq)h}doZy}5`7JbBV-+j9^X&?X{82BUo#sUy1qVQ?FgrU-iK zY9#@7W?E@QkZJ%8P?djrdu4ig{Zywcy)F?s=&xi8xH^N z5^3&lOu3auEN`p}ib&|q)I{Qr&`4?ibV+5;mYW^kT<&X?dgwS%=;=D;v<>^63D2P4 z_G&Rx5T0JoUFhjVc21~v>O?k%O8Ux>aq?NI-Cs- z1_ll`n)w28F=oyB`0Xyu-ec+dRfr$N2N@M2hl;JSGBbr9TW4QS+|p0e{2o6948ehhdZ9xZvTRvO7IgZ&Y(JkMT`ga9Sx9(n6Y!!( zNmsR({A*?Cvk5Ye_giC`rW!etA#TjwTvs+|(cOg_O8uk2Gd8u{7$`GuWw(3#`ut^f zVs~o$-O=A{ksm`E=mBxm6H*ytYFx<@+17e;1Kp_RL@a*H%PIB+@T`zR73C8WadU1N zX@&y)wWnlsg$2YZH1S~gj?eN*pL&(;0FYf&F=@NaHX5!W#NdHua0?Z~05M_?%?A+z ztpw;0Q0I@S)&7LuGf*c>h(NDxSKp;WDibj7bq%G&7wocnH56aoG?l~JdhH2WWEXid zDmjN*2C%*U1;!sjQI6E?p*qnTtFnr(XHzDK{n6=#A>lBd$FV5(jwp zNk_Dro)(s}f`jHdZODE*c~zl{Da(Eb%W-MdW1f;@G5WBQ_T=hW;qGlxxFZP>oy(M* zH*h?5M^{?WQ0<7NMOkhQ@t2k~KIfmYtjjCJ{=&LYAU}Q^?wmI{jY!$jfPjG$1o5Gv zVPx3g<6wm~0m%uP%o})0cA?>Lvw|TpG|?O?f&ZAy1+Fo%fq&K=63UbHCw&c!3I`wS z$rP(}M{T|N9r?6#JPFh0&mLuQ9V6I_M}x6$2@J=P@*b%MCeSnP)H>^b{goF8340EK zGSW3-56^e*xu$vdv&I=+N0G)FbZai%{uo{yS_BDk0A23<(yHbm6mO~7$=NxN5&{B1 zOh`+Z{li&u=%nsuB2!51$&LP5xho|&xQ>hKX42Zocr(M(xv-0X8(OElBkQOQDJyYr9daPVXi! zExQghl>Gm1@;fL^Z zkdlf=iUEjx6N}UU`qg73#``FE2Y`u}?Ug_G%4wNNy+o~ll|4t8d9U=!ekMcTh@4oA zU#Q(5e8?HJ#hu@&4G9}A7b_@B4QC54r@fWGPZOEf{=~gmXv`I&eJihuF9#OK-dcQGo4FxF0T{V1fEmmS(4I?VA02 z&k~7c!d_dEOXL>8j$U&S30leSbhOgNTU0t%UKf&V)XUXnR+KUr{U@Kb;P&N?oiMnF zZPX@A(OMl97mI#h-(*KdIWsIgn( zOl=)18GXi)n42rS$Qhqs_fI?fMEt2ztPI}_Hl`dGku^og=?;s)Hy>k4PfJu~wDgD& zz{uH3^RieZ>OO>>gk?DZ==#dZ(rT@EO?NXIe|`lD28a!UldE4gzd88&V=I-`xi^)! zkq2wqXtN&!QK5=E%FS2cVBZmRZ7n9qB!KNuQT6yXNbq}#pWcCS!hmusAm%TqMF`!Y z_+_q#pLN=94sPx(CbeH|98KMa)8z9+cyQ*$3GYr`{W)$XdtaCOM&>5cGqz?v^=m(! z|G?*ntb|#`99mdBa+vGd6?g*yHpbbR}SvGnqa-o(WXufp=SO@$WIpb`Oq*gLV5(YSCkxVn64Cu%=G1C^Z%UU9?ry?oYER za80Spfefpp*pjm#rzWd4!$0Q(pi%;mzXy0ZFsjB2ydDdbK*?$wr>~#3kYt^bnR7JX zHsXS-ww$RLPAy%w<1F{^c;XcxRZq52OH~N(Iqk`BJ(&g-sY@xl?f@JI6DIbdRnwDWU&j~huMzcNxNhVn14n-6Eh;-8Zxht>qXdYa#GVd=J4n4*C zIxYt~q}lN6W)_JY_d10T`Zl{fU9GxBwT5UrzDd7kUG^;>Gj+c|ygd&O1uKPf+~3oc zIW>apO94;uZC54A^kssEw{XbpnXS;St@3&<6&ogH4S~5?ZZ+RpMApQets{Ad+huR@ zy6Aj{B{xq)LKfmrRrUA$0baFSq#8KC@Kn|elZo_py6Eo~Z{wE0+-`xOG)9GJ*wvr? zLq+YJ>6#cDbNsn3Mu|){&x;w;J56(VUY(GR+cH5y$vF5lzOqoImTF;FGgOjN0G{N( zMe(L-tA2#?@vN(%M~46oYSgj49UYAov=ASVyPi8Y{e8XP*&Y)A8=N<*;XukY9CVuR z9hMRWMZM?CQ2aXvzW0yFjvCwE(z>?-7=HKcQT$%BTofG`F)3E(6MY3+%ca8zubGk= z`l)bd^{WiI@LwenZPM8?yKrcAost*^MHY@+FWkID7FPmMcOn&>-*HN2RFQUaCl&=;*zo3>h#lMrk=Z=YzjrVk9XQMJ$?*=Mscs#Vc zkE?N9&5iCm3FGuo@X#JrH8wR4Dx-;4_6Vi_VN-?B;pGhLg!SAg^9s3VqKp!<-&Cl1 zK4d}kZ?FxF3o!1PxcZd!aw(Q}&>u)~)G3^?l#6(aS>O!JZ~A15k$ zPa&9p{eoGs6PU1Fb;PVypna%1=~#c))7n_A$>EQp1O>MXO|8fCD=bQQY=Dq6Iwsq(04W$${NJQOhyPil3{-KUy2K_n=_fC>L zpD$~kp}_;>JEB0Ta4nyPTTDCcF?<9CkeqSq=C&PwdE0RtqDb|J<(HeHr+v65X*(;> zU+R=@B|ysPrjBFr3W_e7RR9S2-K-M?kdwb`aW*@z&=F*I^RYz0cSZ>M0J}wiVkfmr z99v9|QDa>3eXDx8_HUO#QrOSrykA0HnzNRd&lUVLItJ)w0gaYaWPIJcINM&J9o=Q( z>BtJ|7Y*iKXEB&Jhw<8a;(;$DaXEPLHO3d|my>>bI9@xO+EAZ-8!QxlYn8ECyQXYF zE$dpSF5Rs&{zz_lQPR+}Q*a6JMs+b21vA3bZRIv_jWTFN5>lf&mqI-Ouh0ytCOa$oU3YTYLZP=>g?;P%El?5X=cQH&BkKpco!d4_5fQD zcSoz1%ErXP!on8m;4xj*2=I8Y4E3#w1f=HDf(mByrvwlp0n}HMGV?FmQdL&QQJGX- zq4`D&hR4`L@8)eHL$7M}*eCXf)yxF4P8D(!6=her%S&?&l!&FlA*iY&mYTc`SSs4X z!R{v_LH_o%rGNpQ%fqiLyAGrK)aG3|sqZI>_`4=&uYejT6TL*8Mq;Nt3j z&m)arcC;028<1MCV?>}R!jotAplvFCwkVTQqk3ktqF5&0Csp)V$1zx^DXMK+ zP~^dpw+P0M^w@1zcmhz9KXGQTNegmHD)#F41W}`CWIOt5V4kGq`DggGD!4dZ{pjVO ziK+KbF)1VlL$%4i`(nG11sSv zn-c@~eD-+7yO}Reb~@qF4NU7PGB|3+7FUODo4mz$_mnEo^I;2Ad)WC43u>jH%jfsH z&(RQGA7jwg1na+KAg zW%jeB0n#0C4*VNfO(*+KdRxTCZM-D@q18=CjgKG|*ft9%oj1ZJh81}E+{9YA%cTqF zaH?zkfdx%Y3v69htP@q7hyB}uZTsznyaI9=~JWZUR-(cu6KbitbC76cq8@e5AGh*cUOi9p6cy z%UIXa3z&ZIKXrYpT0pG_te5ObR5`a0O3Bq1DN5?s(qbit^X-DdrPXb@wm3P!lrje$ z9!z0ws4wm}SQJ{gW@uUiWDbGVB89IVer`3wpZTy-6H$3PEmm~g*}ULEa|e9i*$ci0 zn(+;Ita}pnDz951*^_uFKxnMjdX-uv@#W%pSUA;XGeDVVQ)}Ln(T#YqTDZHQvy2#F zac~fG6OPf#+l^vZdLVs6ls}WXW3$|3FdR<-i&j4#p=`;PFhWEGlKr1?R?eH zkx~G4YvV3>Y}lU(_jn|Q#2Mf2lhRx)LD#z>%l6O{-xM|Fb8urGlf_*ckL0d|;vH!7 zr-tKsNe=AOdPFI4?bU-B-vBddM*DyOE%#fW*@ymhB^WNOB#JWv>sjM#F4S&(wAfJU{2PsA$GicSr(h@ikE!UHpr^C_x zq}v|G#jOUX`(bXMb=bi~=k3%bJcjmwAGrpSXIDWI+&5DcERKOJf!LG5-i~ zzu5zC*RR^SUO{;JrlqBZl}8RPE)UZ-CAU>I&R1HEDD7wa0D-nhW`6eQJ^L9|?Iqjc z0Gnx8nA@VLQd5zO!Vk3gxneY5vFziv;1M_A@0h9&%N}U;1)(ZaA{Po$6A%vd#5lrH zA?lm^u@SX^OQojAis4>!bAnD=vtO`vN)_Bb+*ngn_X~3~^Yhb8bvT~SA?@#n0d4+K zW`KH0H=vqxEzt<7r@-AV@< z5Yb4%`zpDfSu`6%zh1XhsZH_h-|($FHMFD{w%NE zx9(JP>h%^^oU`zf*DX6cOJ3`*VMB*2r+?D(T39|chx?MS>=80EuL$3a_T9%|`q*)R zQ&W9o1RyVZYZDtqZBlDi82SRzGJ!<%N-*mk>g$$By9%vEA+<|bNHmgJNP(dFL85`a zF2m5>MY_w#gup+5kbS_uF4-&4{DFBZNPTes?=v6(ZuPhS-SBncuS4;H5vwB!!uo%o z0V!~J4YGAt(Y>7}If4O@ugP{>rE#!_>Brq30ivC@uAtg3Q2+PPKUZJR*z?wg%o6v3 z3{Pdbw_P;;U_!_}KZ&SF>d8sD(yUCiv${=dd;8xsMcMP?O{V-E{d z?1IOmE3sai+WgS@Zi6uO4m7Su2-rXa0jFlBGIt{OV&5L&bdg7PY(-zNjP8l^jV&WpFPd#D8 zhiBm~t;j|v=Bq$Y!f;FoRxa}$qRb)4l{LpJ_S;x%&hKRcIn&2xQrOGb$US#)Q&l)C z1Dj66_b&*dC$qsE(75L-1+wn+|jWy>~v)20t!?=&LN z%@=&^8S{@m!faf^pBl!I8MX2Sid!N24(O2tt*F&s zk}>q#z|8Ug>n4A_U@a1vGy27A_8{tg$>xKUeD5i@{b>^ZE6U8jj-pNc49r z`&?9{fObw>$^K2-w-pAQ3B^3TA!$|D+nTJ7+S89Dt&R0bYi(}9VE@M^WhdOW2#M{4 zlPZdGvcCGWl$ND~EY zfoW9rQss0vIh#`Fr~_pcSy%dwV5l0^g*&LJzDIX$%0G840I<(9V=3ff{I zFlY>{`D|{%4)O7mwa`rjI;WaerXL%$uy@a?>_$#iUG+8)&E5{ws|T_5lM^f zadGHVur~y^<=ozo1C!xLX_ov84BR82(0YBc=UMWXAm4vp9{e}HP)LSKP~kA;Wf8Bp z#Fay&G6-!nI)kYtwxPmSK}>L%#OCI5>I$GjfnjAyL|O$S*cC@m1vWuZz9FWHI!`ms z&55!&QY9u@4q~a_&l|V*+JGe?OO*xFYxP40^W8mix2`%O1eJH~U$HgQMihp~GVQ;N z)cJlA{SOIzKfeQ;^v(1uPTS-g&zm6L(m(-vcVs0c0^GMG#lgXbn79SQm`ABbLupm- z!>sF=p7Ys#F~ril8OZ~Ce;L)FC5TSF=#LPLCDChhTIsMKik0N1G6^7}a>^$^yq1fh zHc4MOzR?#N_FL)`eT=l|;Z^}cMJW&YU5RYqL}r3+S#0HW?fwg3KJu@?_YOa`2K8ga zZ*JB37A5`wVm!@?3pu3}iIBNztUn#>3>hTTwXe-HTau-=-o>BY)KP;eV! z?S$ADsAyUt{PnWopyHVM(AGipbS)TCDT3o;7g#7JFgna{MpiC#DM!2v9v4A!L_7@E z>-P>No&~Lx0QCzTm%ETKs)K7uVu_=PYX<-I|IqR)aI=tnsuWV;J91MKD>IQ{m*t`( z3rZ^n6ZgRHkZ@^fzg^3fiCmdBU4!!%JU{7bNhg-HhJMd%*zEZY1kj8nCBoSu}NZCH@=2C&X+61B2w`WRIVy zn2$$fgl^8iT)RJh&pW73PEnJ_!~Kgz+g~og(RYKR$Vuc{>s_`GYW&4%5dbuF@W0>t zZUq3tKbVrd|>6b$Oe)+R350mw8k|58e~wIEREuNP?mGCJsg(3S$-jTM>I;*@Ri zUt7L@2EgqS7wOgek3#sEfs1Yaj5mN9{s%B#C?K+bpY{JY_C+1Wm3Wjm|3_liX^1{B zL)O1ysxkkwKPB~LpU?h+f93yJ>~F)rI4UkQVBjB~`}+ra8U3}NVh%Y9@gFsj|Ha`n z1yUM_|Lik=h2zka2A3?`e-X<5mxs3UiFFzOv!9jn*Z$$EZ>_+;)XERi1^u^6@g z!2j7F|7)Ll2|oVYf8!$!HSHZ|*ZqG(!NLrT+s6PRX5+_?2$C~hj0ywZV+)f($7Oc7 z?wz-98v<7Fs|1KBLo_BKjF3UW519oUyt{xA^L7MC@aupXOQRnMUi#kb?W`SRC?#cC zv7PExHgIgL9!DSu0DK-^G=~w31qKjF>16^iLN5)EmV|X+qxHPJ>}V-#WChWl)~@osSmbu0B~xtYvQ>sn~V(7*t3`ad7pBJ{c0@0|ub zv~MhO^MrR!zI8uE`cp(46mFsZNaJ%j2?=mFS0qoNEd^24*m-z88x4H%kRV3zo4Udu z@ck=kM>aP@4LP59@14JqsQ-IdzP4ok$omf55Q5^Bj?q7X!~zN|I8HAq?tu}frb0_h z-~lco?koPneWFa@_f==9P*JQXjXm8E>1G$~>cKq8VD1fnjkm1Lc4G{+o$|r+hpdjU z6q}2M7Q-D9%ifK+q&pY$z_n-ap0Gj7Ow@{NjMpK`ps&7EwC&9^*;!2=#3Kti zeZdQP7`5>|<58`FP-E(gf#qU{8777~UH z0ZviLH{URK@`-hKZQ>`BkI(6#yceuK+J=wgAGz1edoSs^K>u5Q!XOHMVBX;JMCuc|#INUvlqE3RHQ z_DW{{`OhI$zx;Z+EO|=-VJgYj_-L~6%@#UF5}bl#IgmXrw~d$r3I_OD?{S0A!l3HNA6knllzBbb0>|SZ{j859= zE>CE6FfZ~n7o+ri?6Fw<<_5vZY{4jm~I- z1*d2!qzO#MAU@k+reS$)Jg}D<2YOVDXnT{fM!R#>s4eu=1%Z_l=WB(*AT3#kc&g6%qU?Abg z;Eg`CsM&U%Y(OYA$ArqPKoKvDNb_*N{UhmnB3fW zI5Ccbp-!QJQ&{>+E5oOR60l#wxl9x83-KZ^N}4gb;d!RD5X(e=V)ormRtd4BLYs0 zqFRbdqIzoQ7*mz^4M)Fnghy&xakOmev9K9W?m{&sFa#6!)lS!YxR6vq)Yd? zn;ad=6uV`le*m!k$T1tFiQI`U=`*~F0Q{`(m@}QP=A_7joL_MKl*BPBe{l1L!SlB0*@ zlsrL8N0he4=9C66sCKKXqskTIh5{64;a>Kr9O>QmKt%^4z;=~+B{f5tN@=H~qt-e} zdA43`v+x^1<#+PFLRws&S^O7XDuYQ2)f0L?P7CxcO?`qHo)0{Gvxe~$Intf?cmoE_FUc*r<41?12K@(oiE zoGhCCoVRMtL?Nv*&;n=(0Cgf=2kM6oq`^*(d%nzzO;%fTd>oJZWL66`lE!yaMWRq! zo;muTEQZrRq=i+RGR{cPQrP{m{uC%b?2i&CCX{xMm(tMe61@`I2k5UP_U?9$Rm6gz zfff73&K|{}&O~44w+vyVcT-c5XqN;RgvjAt8$_k$nw>oRChCA!i!w6c7Q3PXih~Ju zzG8rcvXA?p7gBx$)Ag+6>F|a~Oe6=`XYfJy%S=Ci zB^D7jy}6kz1W%oda-toBYd+oZy0WrE&+Dn{To=p}r6I%*1S*7xIOjYiB@qU9Z81ge zsPu%yJ|h-By=ZBQq3Ro2MSXKOIw{ws21Kt0ZLb8RP(1rlxmQJ4OT*88F7Ei%mJjd$ zdjC4SA|=2`HdVQPBhI+oq;xPE$2~wqBfSu$GAvc>pwxyXiBoI|7w0s|y!t(Eu{leQ zg5-B@~Y9gszoS=qE4nN#n_MPY#dGW1}T1lH<|_!WdL8;I_6TQ+2GSPK;wU zJmr1qB8>|vHFmZ7f&hH>yh#iFbT72KRBKCxHFsQ0d11#&N@)THDGMq@G8QEAVOGdt zV(mKz2b^a0bM;l*AG6&&u`OUOx{e8q5x+Zx;c_C1b(t5^N9W94#TPj%&j>_Tds&%a zeE%SeW;EQGpYgnxELK;BSK;)M&rx^LM%*};>(~Oxhs;rhVdm)F+XsUdP6qT)=!<0j zlC_UjxIE@l7o%$QUNYB46dOv5^3GPtt7;gkp1txuC<`remDx)16KsJBBcQi;dQmi& z;*0UQi?RAoVFJ{{uHTJ*7^`mBLPltyCJ$6e$94ne=ql=`3EW#xyI7-I!9E{-Kv3bo zROl3zYl8nxUaO=C-$jcyps5dOu`ja4I^o56CbTNmj=yUaJl+L)E3@Gyp!NsnD>E1K z2ggXr+L42Bcgi1s?PE|bUVg#}G5wx$QL@f#*=^+TUbYX5|h+|r#TWFw`{O9<|38#|` z#l@uw?oibAo_^ix&TUVec|M zs9$1fP93(&4v}RX1sf(wI*KhplcL&pwA8gNln+utbT476#FB6~^iR=RlOxYzgWh!192-CI zHk_CxYwy1jx|cMFimR^1I9G`h^_dba$G+$xt4wm5oRr+cobsEswSrmP+lO}bPd7y; zrH0%}U-T!wj?iarbB*-7n&bhwC56M`E?J^(-t&1QHzkVF+pyA-uXS>?KvAWntgwZC zUdpa|Y<(&KV9`SPQ}uRV>5la*%FF5E3?B?0nJ&llxb_TZY)OcH1FhJG1y3>=`Jb`- z!~w}~!4JIE7mNCo7T2xpVgP%lEYtXe#6;c_}vQ!YO@mv)1uffX|AP6l#LLI>w1+q`nH z!l-=$12N!w^HJ`%7FU;^A0?EwPIl4v4;9AikD$IX!OTpo&|;Mp4i^#fgZ{2f_CNZL?ck@ zo0@&CSL0vj{LpZ|807lhT3=D5pWv=B;NT!`_DMdkRgrrLT>Vx2rcTZM145tc z)-t*b`t8vt1)VrA6Q-10G3O+od|O+pL)2LH-ckEOsBp*?v~=7eKD1$Wd2X*U1XRb| ziLh$RG{=^Zghj`<+R_&ZaWY0{CqGrfF}fn3P-5rV&;Z5P-;FQz8g{TP5?68NTnyOV_t!a*L&9Mv@R`kmqd1n++(#TBUEe7r5L zD_q1V=k#g`a?eKhKW5&1el*B6ePX|A6QDzjJKeVVutRIp)fD#q-c-_|Z)h!JL6=<1 z{pK2)SYRMpU`wm%_86_H)MQE~4@5dZ&t1t2FP#7+HwU{Jjx9n8)~ui-yD(S%l5hR4cz1r`z%d(2YSgd!Ba}1ccx;Vo~mkt+#nS8a~GAV_?8nf4qtG zFj9$vJ7s^fPq=k~N&`LD!g(R4q_1OOa~-Uq5ZdHGSUUVTQk@Og~`s%W{DOp6$)yZ{f!H)2I6wA&An&I)e7PJn`v5z2-A1VgZ z!bKYc)#Iyf37ktFnd*x*D95UB_|iZCtgbHj>?NIjl7)(1*%a3`B?B8JmCUmViDZGF zDOYz))8Q-R4%t2*H7-~cDeZ27x7ngt)!kCQgy>#+1zP6j$cG9cS@}pvaMgE(Xxxwe z$|rRq`HDB6o(|l#dH&&658j;j{L9DH&7TwCa*qPzE(t)aKybVI_g*%f+6zLG>DOHo$5{+^~a)t*PGj=i3f^YAsR zQsoIZ?{WkdM;6qwH9^nSDISgy%d@$!hr4|T)KNp@Rfz6-R>Xhy5`4XefnbM&{AI?k zReVaf4x^pXJb4+2D{Mnhrn=KT34LL8nKf@$Ue{N4nP2g@_I*S21fu>hkF5dM{YTJ4$1lb%0bGrxb!B-xg*104LKNxW*l^H*gP@5cIt);r3J;wb^6K>Iv zlZ*0sM$hyZp7qKk$ghJuBx>=r83JDTqnHwLx2}7K5M1r$tepq3C>EX0UTBLV=Sss~ z3E&lI(u3RRzQJcCRCa$=VJta$GfWF>{f?bt*Trf|68Wu}d&*Kd$<|6OkO+1NkL{e> z`DIiUl(s+2_)|ctOHAJr1eczE#NAFvch1O=bHiyilnUPpSnMjOzT%g{^wn1?9NIfQ z{Qyx=7KME`n1Sv>o*Uvj5(JTW0}_r5K}FIo#gAQTG%X319_qT}n(PMAj#Q!S-u&&m zP40um3uDzKkBwfPx@O`K1s~rez!qTByF27-HLGjd-}YZzrUUuT+o?CFTRB;=e}@JA zG*wL*nZ_KJLDyr(3R>w%(Ovv8 zET{c8xBd@+?aba$n1+}|VWDMyid}m^_`7KcQnPQ|7~uoNo>660SGP|0IB%oIN?K-r zurXrHL?Z3nfj(9w6iV*h+H#WxC6MM^jU>HQ7?aOgEhDsy>wDO@xgPpd-j>gJoGoR6*XD4ve2*32@9ziFdP|0$(&|MQSHRW zt_Lh(%hN?aWUp7=P0OJ-SzD_j>dv_iRi@YtqQ(m%<#cN(BqE6{^&;o2(_t(cNKTU? zQ)Q4Z{Ani^fC}fgO`o1VWb=q3DVgMHdIwflbgfx~vXW*ZB=wa)HO?^WNV~=O+D#&k zQV9M}Aju;||1N26?5Onv`F{GIN`JxFWc#@5-tLPue zR^P+lUKKdUIKLGHdm1d_muq>BU9S?g!{hIH7&b!_w+6+UvldMvMHH+2pAcUH`>Sqi=xggj~fO^I9%17 z-{|-ge!JUAs?0d9)PA?{8-Cu_?6%;m&LH*+MeeA=vrMUTd8>5gD(UA`ENg9wBId)phSI?+K!>0gbajARWo2dw-<3sE zZ98IAx7N^4Vx7`XB@L!j3!So!{X{`oL~IviYn`PT25SK$rRRmFLHNGcMv^0dTU5&I zEYInDppPwGMmeiQ2X~#C%*v9gvM*u&2m%2Erv)i3jjXtt)#Y4Mc$lRE??{X8=oW9K zRD?T$mf?37CrNl>@!OyDO1PGWIq;hyzrm*>c~4o4;KDvmFeMDl8yfJY8)cw#YQK(P z_;yvHMfe?Tbi{J8*B`zk1?H_4*k4utuBzSru>zx$??an0#E?P_QwCrZ#@HV+Iq30ESGcjbcU5Ocbdh!`)bRf^7!N?=fa<6AfS0qayeRD6@s`dK3oY)JF#A7sF zshqGXgWnRTkEK13bHjhJ)4g-D$|^u4_0Hqn;f&9^i$eLp zgzc%s>G2&KHvE4Z7^d&RP%j1{z*bPN<>+b@hT0>1nQnM%*+sV05=O)5ePJZf)OewhA}=W z?#l9YVg;HC9AR0_G=$kTiW)dI+=i&!{CL5F&{2AZ}1i_E-co>69 ziu#Qnn#CX-ur$0Z5x|#~3ntvNKA>ib4V_@B`dFI!UgWxB5@x z>Ecn*2Kw~l*GNe=RRzRv7S<-CWgE__;b|CbOdin*bjdig)wnfxswx_#{NkVlZ7N05 z=CD4I1xMAd`#k%@VWS|n{^h1Y8KRaQ9$gFhXXOv-lM(iFY}1TOL|ggSbtH6r=rn4_ zVCbx_5BDQ=3Jq`m>PyOI{-mkrh?6!fX-tqPLH}&dJc0f_Hrv65*}MV!Q>rBP!h}3Q zg8I^(_rW8XFh+t5S%;L;-Q|F9R<7&5ruZ?Z`2_ss4Yi;>*BIwMar0Zq&+=y_6DbY3 zo;VMCSp<+qP}nHh0;!tzEWl+qSXGwrv|-=e&En-%seT86#uFh|G}@ zv2w1ta(JJJSmdQL9KR7lp@r$AmR9sK)wb;s-{ej0+I+J0(vQke!E1PYz7HptEzoSNyBFO3mpVgB#n+uXFmiS_N#6>D){NI-WFYTk&;@QX3RZ4`#4)_AyKoz z*UvE8Xcvf)Or}D_LmyHVWZXx`^-3WtFdnJ;Za_EsfaMHRG=E|7Ar_wM@$Y{Fc$&{le%)hm^re4kiTKKV`~|MYA)CQMjbM3a@WTUN z+15f^Vby3SJQZK&I&Y;2$&Zi`Ds7K}k@0N+_4L1+h~Jgy0g-?~Mq7<)uZ(iVPKu6p zl0IJ{*~R&y3IH-(fgnj=2DAm}A`za^Pe0yX21LZ9lFDJ6l__)M&S^*F(B8}07I+ar zn`$pL(%dp4%dST6U0!q`VmqXyL6&9;mIY9@sq3%&5d~Fafa8n2vU!5NK9z)wq5*Sn z&QUF#lT>GD&+ynu7|K+#hBLWTo zyKw)9VD4r54_`IW3~mzozf7tx;(x+_qEt{3kpEdR{)0GwPW%VCqF%vE!u@}dD^ZBw zeK&eJ1qIpv3E%!sKlOhoum2wmY}OBvGygv`ar+Yt5Fqu>ah|!7l!Z|5uL43~O`mC_ zrU>gq3j?ddUIQQaZ*yT#V%hqHHBh1i2~3J0wpH_d*5YEU5-Hq3rI-wj)^9-|AG~;k z)Db@lg3~qynmtEOkPt~w@1$u3eQInh%nAxBZ#+=J3L|2qGaNdhU5Z$GQwr>~CWhHp zp?$pw>M4(pcU1`?K%I7{R6HGP*EScYiuh(yJ0mc^(%# zZ+Bd%-J4Hk8L@Gjnbj& z*-cA}+a#e7m!$)5>&q=kxXfo^Fhp;E6|?jW-u>s(k8Z>gO`ejOqNG4M^j*`D zNzpnH)kMVCyT>ul0_jJKT2(>NTBc3#=6Gih^N|++sd(GGn)?n-t+eyXbKiD;cPgo1 z8H_MKHb#(VMFhk__N;lLUr{`Ev^%n_fm$5!w>tbfJczo_L2@;Sv*dViMVtj0Uh-)pXPt}vC%x%M0nFj~D!Q<0MrY=I<2J31W_P&< zbd*?dY=5_tS+-it&blVSmk8!h^26D&py1IPY2g2O=r9c>DT9c?_>X)!#4U9 zjlAmpD-mN_bzBlz*B?%a*m=k0;5hH5mTi9dEWMhB^Rpad$1`*)T1r7>~8bfQ?8(49W;Ncbm{eD>pi3XMlb< zVh1)-$y?7{Sj9gN8mt?#q_jI*beu*?yUsFnjpk+_^FlvLt33YMUCN@!)-&&T6IXS# z-;>VHA7Y!uTKA&Ln`+-rw0F-@+WC!>D}5d;Oq5wIux&}wqJ0ixsPTZv4qsB@GXsf4|3wQtXQnazpjzd$iO)>NLr*YiBd4$|A!XfNe?E2I$`PU*DOo5(0U8w%B0QDp zSD}**06fmNSE1^sl))lI34?%29yer`ys6~?N|hQigp^V^qd|+5tc47h8b+!I5iXM< ziySXfMgU2c5U^AMLX|8cs0$1PN{)m2YZxeG6qx3m!2^t-NJAvdgu3cd&N`L}a26(@ z1QK1|XUI6F!2t$R!c^X-L6P6UNrN?3JrbWPVwgvyVBwq+2$T&)HjXM%Fbxw3N3wtx zVV=wH9T@HquMxG+!Uc>1K>%bV{74&HMQ1hOI%Q#!CxiyZ0fel2uSA>^%z1wj!3hCP z-bAWIMhGS(!N5gGAkHQ;tv#| zTuy*QL7F^ZYz}CF2_XpJK%x=?q@yN-Bg}|W+Bk+HFbp|th$D_c1FC?0KdBh5K>;>H z@ziEHO8_BUnR{`~Mk8y3LwXS_HY`fSpsVDcCL;zMrvI+1q8s-(K|i9#A}&;?&`<;; zLa=L;R;55duW2fPQ6EP`88i;YN=2_C>k1N3Kw%EgA_PVCHz`CC9F;7=5Cw~pUXvAo z3JxQzm_iQl2{eNkwm%rZ@!&H^3U?@x1cnQD*d8kyDuYJMsHM}nKh#2hl5hh6umLTI zEqWFsufN{>-c(}OP=N%ca6WCfTfzoTiI9R!Fh3}+0Zb1Zr2nks3WrxulgbIRPgxto z=Q(a;4?PN4Jw^VaKz%{rLU;vtZ(stYw$-{i#_Fn#_37U~`N+uIvmFPC3$zJG4wrl@ zxU#hAv=8hotvUonF}c-ds;O%_VVN|Tzr~z+-N0J{M+>*jC#dnYLg`KM+&W1D-1+6F zEp;SC2IdwXS5NZ3kPeSmJx*|Fmh`@E`UyP^pRBOTippA{6qH`53gOPSX~^b6{`{w~ zeNC`sL<*E78V&3MBtV1(eSodA?AHpjaU>X^n>Q+&>5SzPu3~`Eab1Ft4K4}-8z%ph zmc?M#^EyOipW>?nhYR-d1pRveKwUtt9niG$YmfoL0Z8Kn%8X%y$iQu>A?3^%jM)P( zx6K$Z8@|C0sYNklpy1va!BEkmhR4+3k!L>wK7y>jn%S}1o&*|pw^5-%D1wEQ%G#6r zzDN-x0AMrO%CEe}=|Dv)d$-1HLngt0#R)?o-6pPaQ6m^suA_9kb1ZDdfQuAB z8JQXc0}xbYC=3H(!9bLKTFNX;j51K3WD43M%MMHwe^F?mz4vT7tcmn0;0pYE&^KfC zs{|;W$+YrYa>?u)42vl+z{+51hCoK!0Dg~D>3R4Sw0Nhri_RtQd>DnLq7$^qNGx1| zfk>=fomN&sVQ%Se1CG-cFU^BXnk2+_RH$gNmmtmRk== zj+7zfo;LVBmybbCnKT^Qsy2neA33Q@yo)R3^!!571-UiZ>sqp^iv1%NdwZS3hEaWY z6@h=1tx8*%4Jykqr!~AuNV;)|8D^rXU#>Yk9UiJ$JgsRXd&u!#`MEobgJVJhn~$o3 z@bd1EKy-DooDIKVgxSPZcf9w$N6#vr0%iW!1<)n$Y*ocWZ5_K|Y$I#J*0|8*qRyWL z=`R)k_;@>3-I}Ajy)HZK?jzul9hKJhxt2~lI2EPZmepdD9lI4<4WwhS=OmllpYNe+ zIQKy)MTM6hZOXyGNWb*6%w*<;+7h7p(vGf6;(tf=c>f0&70qzFyz&7*UX*7oh>or- zO8aDS?eBo$T9o~UJuB(m8xgcE_QqSIDeO@ltC#%N6I&_H-=QH@z?WE#i!=MxDqUqa z(Bpe-9&+eyeqMIp-2{z%p79FgnwpOoUg~5hBK(|ezCID1bSsPXyBTP}CBs?bZv2WO zM{?;u$v>X5JJ)7GV-~2pNIte#IjuzKq(#Z?J>+aHjLS!LPaiY9C|U}DNT{Y@xM}Qx zz+_!X+|eHohK@!#?hc#Pm7_rOl}NQ!TCEpDQ_$Gf)y``)gAP`7Cu%GFZUqGqhX> zOgC9;EIu3Ug%_pg4V+tK)?V-HH?xz|v~AYBmA>SlFMilgH%{(c5+t1@B~}q2J?vGB_8_fQqwOUYv>q2)FJ$e7X2O4-(>k+m9@7$!T8` z%XU$aliY2v1(q5%QI($FmS(&ea*uF1aHgY0>LvPS!aX|1u;v=h4!-jR8!a)wX|)$8 zU{tmMd#xEz7P+b@-olXsn;f-w>dcXJLte_Kgk_`qzUHS#j)n@|`NWb!bFk~rI%X1` zd{C22weaCOQ+|4Z|HI`IY^kO`!FkcVkfd=VIGxD1@=IaNqTfQ|B-#U$-xI%kM5Z6 zdjlt)7<&Uz)Lc#+q}H;ea@cs@aNiq1c|g;mvFkSWMB)eG-2== zt=8}5cIsHKjXL4W1DfRR+7E* zl*+7A1*QfK-z`buT{hewO;yve8qUOKl_bsM?C-8~WzZ(6a)Rr*J4IeC2Nc!EcNwlr zR87qsUtdXj7bs<&DTA9Y0^g@jS!%hSPlZ2NF20ZVg{{{(F3T&&OzUme?bx56_r_Lm z;*wh?=PkEL0Jya@GVL8^l4e#$F#)!*?S7)i_Yd3JI9B;mf>F5K9oo^;iTm@L5Ho9Z z-D^0cHl=s!dZR%fh&-D|WUp12Tgst>SG-1VN5nO1zhsV=R&eUO%njS_X{5;QbJ?_{ zd$8_?sjjy=?Q|sX4V%G(=*yH-XTTb?(+4Ht8ELew|9&bN)}>1;@q`BvLos+mxr8qm zY7AGx&r=?cbz*tPSMzKV*cCoSz`!i@!J^BENb!fABkoyVdF$!z*~N)`71p)&itlbm zp>8|sepuzg)RXF{9rxYl=wN;|;=G}QWBcw^@}7VqOOvJB4*%!;v-0&&;t zb)CIWm#|?cSzi0wA3ZxhH?eO2To{`3?E<7v))OkSm(sIy_0j}tY@DPvAv zQXc^7Yoh9u7I!jNt^&VN=Vmv>G3vP7O8N>;=)x0=5VCXzQd)Yw!NbB4_I^sfVt~}& zXQE}Iu(|}|26E`gP*6y8UzSmeWAH!pHJ@DJj6(o{xqk(HWp+a{d9rCG-1E04lUBF- z7lStLa;_*D#cWg@py5YeBHlL8gIiQm)AG4cQ|{%o$CH`9#-!Z*%m0jMUD;ZKWg96x zMRh*(;&{c4dRKVy>H0Wjb550k#=QU@2h9IU zOS!Q;*>>OX^)RgOr1_Tw-}_fzF|=V|$#H0Jh*>c<6#nmAuBXSUgIrP5YW?Z7sVmD2 zn+Cxmea}m7s5_j`v^s)@`>ja5Z>o(!QCY`h?YC&(om6TeeSN7o4#a%I$VN%VD3zflr|ThDFX z^@T0<6j6_rX6ew@n&t#G2G_@)lx-G@QF#9Jx6&vV<6_ijwHCOH z$gsAj_Es5$s`P{H{=hHGK@Mik2N&_e2WZ_JtnyF_JIa~^cCzZYM8R7UlY>0e*m=Gj z-J)-Bq(60As%yT&QXa7&VJF-7bg2)TRnyc50s=?X*>I&N-J6ZGk}HdZnRJ&jojooo zqm>;w1>n*l7Yb@wzHqKmrfJ1UV1;=dk7t#S;G@Ea#U}V_w{2H?FCUa+Fu&dr;=8%C zZsH?Iw48n$o1+CC*kk<8B{Htq!c+BOPJfuID-ZFK5*8RaQ4-(ppApduQiRRH z^k!Xdc5y)1t#7K^y3ol-xXcHkrsZF@6~G^V?t1#*hWD9cxk-!v9H<_W3%n@5XzWQ?wjwDj;p^hnmhf#po4b5f=9bFW zso}7hjXp)WEd}Y9;5pQjjVX~?_k5C3ADtQl0|jbRo$o1L!~~a7WN>AN`?;JQnv!yU z%~9k18%C$(@Iqxa>jI{`sIWb>it~Xs^lX>>k(W!Y?XxXJM zv@$X`I;e?C@7i16 zbU=uz+sM0%3!B@Ei}(A(*Qn5H=(RpZdE?7ICnRi4GC$sEkp%uM#FR-8$LD%F)yO24 zobJ5eZY?61?V|H?{O&;uJ;53a+bc*c>r*cFs`%MB%vDndyPUJld{WAMU0uc~h+m%e zqKOpyxf;h$4!HdKYQt7E(fKr8T;MV~8%a#d866(8C?MP1g0^_ob1N<0%uVvxj_sXI zjHHqE+YS?|V2(dOdfxDp_M1?$AQoF(A_3|vqkwc!74KKFTdL2wD`?vnZF6b z>FwOVwDe+ru~0Px$%cKdgXVnG<>@swu2Oa5`znv$i1VB^`Enx5oLgE?`+8p2P|YS8 z>wEV!atm9jaGTAlW8E25ve+!KV$k`U)Z^*Cn_s3z`1BV@)MtV>+;abAS+~w@d)zn#b zlP|DQnqo=yhc$iss8l6JPKv#dkgn6;KV+TTPM*JIz|t&wopy+fOa|5y9qKZGD6hzw znGF6IWEuxlJ7iaER;Ar%L{&m49%vZsI8Lq%Ii*yvx$!NI&^g?4thGG5*)8BicI&gfD&E0%+{c`KW}uCV|Ct%f5BxXQoK9U#GdB=Tpv08%~G3e zFOj&LLC40KCwT+b+^4(!gB&x->h@M#L&>;^c+kipq?D!OI4lO;`+Z!ghl$f*+^+0F z5qCMVzeNY-iVZ#V#%+tY-tsj-jaX|P74)6ZDF6G;uAD~zVm|$v4$sD-Rui;zx98W^ zl;U0Qg}@MsS>8Ous@?8>Wes5+CVzV#zPH08l49IQuOe-~RZDK-+q4hm1MgYa_{%4705P4rTB}u(f-oue72_v&E_`EmRO)C@sigRI9#O z#BUY~%dYQJsjW3-ok7srM?{0ik<~CR9uHXVNQ~ZMtU6^4 zRJzlK@SV(8wS#}2?-k-4i{K^1hfYZSS+O1>Ma%vU_riM9SgFVSe3X$5H&(|C={=(hqvK_ zmj|J6%#0jfiJi96QiR5tWCLIe0%Ew3y^^pX`fU5>95IT@Fl<9G58@)#u2q{&TeP3g zQQuj~GW`l3KRTuPE+80P=D6AI8wEI&C=A}TL11EcLz=^GF+@vM`=gS@=YBgJ(QB-r zJ<1lVs3t_~ovx#_y6jZ`QY8ciOn1=wcx|ykG8)YTEjLa(*KJDp8O96dLaDs{$P+jG z(;%hwPm;6YMG4FPX>+FhWMlFzo(k+4_#M{Rj5)1O4C#fe9`^`p%Fyg$;p)>X+p>c0 zhQga$q=aKQKj>yj#iWoXXfJ6Y$twQiwVSW6Y-}QuJv)sK+dqqm%rE(aM5CU&5p1cU zQ?~}FQp85>#1xTIWxeh``BjZI>k8WAWt)0by% zh;mfzL2KUE-+i+ELG9JeL}~uS$BDaQ25*`YYlEqZs zv@AC*FP?0U(roz=Ib5BeU;8MX#iEE;GmsJn6Sbghi>p_m-WqeVI+F1ORY4I z@z9*J$DPNSNy(Jf)b9%M0@R2jp6*K;= z&|-*ot}1rGxXU6;@18=SwDlxHcyoOG#6lAtGVCx<{itocv+}GT)jWo0njkk3bzh9Z z(znhN!KPq!x?-1*#wF2YMskkx}`J;ZNJ} zvKiZdf~Edk0yo^5>)hwJHOV83V^a3(29r2&?<*@Y4x$BtFbFWd@Q2v(poMnO?lJD} zobEH(rsOhXj*8bgA$nGpH1e@QcX{=F!O1dg0qaqKd=Rfh>gD4L#W=lotJumKSk7-Z z!pG2XJ9%r~Tlw*1)`}VhIRu&RHG=R)Ys8~U*`kR<2xGsaoU_aijZ0vF1$32(4De&# z4~$24tMpZ)WDWe?t+lkh)q#&J3O=Xp)=&uzM-GMJf&~7t$H*$Lb=+C_rbpyH842+C zxZar7Y0&o=!g(-3Mz$xw@{40&aE(0WF`$0ch*-+4gWl`{P(<2<9oZG2#juCJ80APi z4D11W1&SvMM7YHuOT9S2<``Uv@&`3*YZv+xT2nY8U;!dsUuW+!YP{|KtkhkvJmrwX z6_e}ecz;gK$}t0)Pk51NdfNGpT9_73l1GeBOf1xwF7@dzesNVbs9(gW&?)04hlu~V8Ij45?5YtwyLBoD4E0lrDAh%e1tj>4r9(n2V}q8(nL$n6rRUw-$j9S)0ri|*V#o2J013p}#?Fcp29MvZ@gaI}#?};%pW_b?*SD?* zObR@~r+ZDj4vxo>XR~wPW^QUmUxK$EQhn_-JeTUKKEK=9XR>0W?8!&>kdeL&N-DEChoOxSg~K4UvG4H!B-H-{R}@;hj~f z4UXI^7Igu{?+zniNFT75z>*+EgXcH#f#Llgb0CK-iYP?bLB~XhKj-K59<^snHk9$7 zO=x$NETwM>mycZ=3YRwQvXM8&oA07g7yBrAP5U4Eqi%bnv5-_|m+UWT(m*hq7u@Aw zRtZA<$lX3btU*(#bxfbJ{X0d;)V|eN{&9BbNe2+t)WbRq@N~gX*jhjwm{Z+wFBT$m z+MsPg(l&!{yGCICZm+M)@A^*ic{v=1@ft4}x{_U)cPk@|Hte7#hCYECY2F1kCRhniJ#K%Q9{;Ts8uXwsgdX^vT_0LQKi)=@>1`6@_cl>=eC;=n zek7jO+_OG%?MZldOguT?>#jIS_Y{a%%QeR?7R6xQyRc!@Kv^2awl3YY^*oLD2M{Za zFC0*HoUzC_!K$b_KCx+jMHkM`S$h);QrRFz<&_V2uJ1gS@2-G+96x_Rlg?Sj9Qgry zJzurefEptL8cXTNC!-I%h^`kp(!oau16s(7fI+n*jvmsvT7^ zVUo!HjZXj&y%X@BLQ1Ye9hR+?&DpvCL&Cfeq^#_USYz(+E^ zLdB6AsWuny_8$mWbV-8qbJW0x_BJ1wwlHO9$f%4GIP?08jnGuPd95P*`w22CcV0@& zgZRR)pc0w8`D+{IDkGtT{f(`CbC@RMe-%{-T?WYByd%Wq6pH~1x z`!pO&9Y-G}j@WB`><;bdS};&mbnC3gdp zM_$d=Ef0^;(%4qw+4bhP0$VOm1c5QrK1$3wkUa)KA`oE}pu$6BG;QPRNlA739ZI|4 zJAqjZoYwh48+9~cy^R1Or4<&}bQ~VivB5H;&W6NgOfUP5{>n3^6yJ>;@*WQasr*z| z1`c3-$aLB{GdP^6PbP<>mRn@L1h5XP24TM#>7PEKw(K=ZNQdxZokzh$N*v}Ziz*;R zy9l2j3wU4orIRK+8{!L#>90*VVY`XQwxM;nb@)1A;HdT0lOrlFw(8q z2T0MW?4aX}O?mjnVDF$U;-oqZO3g^di)OEKczRyrd{B_Zl6!TBnZ`&daKO;AjC9~> zEUdDx>F=(FzyCJab#Yi-rq{R=eKjx=xLOuxB9;Wv!niC3z76iZ zBsInm#>*@#4BC_33i?cNre%-#eK*(VV=%4hg}?DLgIfIBih-ROVha9_y0ktsy()-5 z1cgD6HG)q@G#Np+>U~)6@qO(c4V0z|Yi?$dai|g_F`ZpbyJFS)!4U^Y2#S%h(LFoy zdQz0PQvRIxFB;TLpqRiibLMAtgljmxn@ca9^!kLt%x9gakcG7rB*aS#=qudH_&LgM zNB$uzIX~)(+oDDJAkBZ6 z+$`aSzp0u_K{9s)0RoE!@1jG1vY_Qvp%V8$<WW}k@s4lv#H7t zU|HGnQ-X>bupRe8(cDk~FCDFeDCK3QJ<`&$`yr8-|M;HKQ$(5oYWdI`U>A>2{5Tv+ z*OF|`W?6OJYxLqnJ@I9a2Rp)ff15E7AUj>`XPulabW&5dO*5~hU-@Lbx!vmO5 zSp@S4O$W-dMAkzOQdFE9^YXIU@x2n(GQ-nmHoHDI!Y-FZ=6SS28aSvt3JeG0V3;s| zwlc^=%ZdZ=(wcRC85_8b#kz4!WCgPZsNzY<>9+Lw_d$slv3hJ~v5sdHl@x6~J=vnu zO0REq;j1Gjd7p@}q?)<%nn4oWSoiCqj&ViUH6UVGOEw3wPc0cFB!4s5CO6fn&OqO6 zbcwF1~v8Rjzd4bw!jv0NryTEI17+IECUA|{8s4WJ^Oz^rk z1{ymtjcFlAdMBF>Xo~|~3kY*y5(z4j9*?zPZ@M67>&p#`#I}Sd#zAMQW$9uj>ak5` zb=Yc|do7uBAIZ-QFnd0s{pi~fXn+nPx)O_qB6FqjdlZ@tL%Q0gm?7m}a*nx>G>wRl z7-E{J%b~Shuk13;Ihi*^aK-ds@n3Db6xbMR-BpIx_E@f!NuPDnr0=y{?$)!~BqLjo z+0|xwh3fSxilii4Y%%*-T*QnIGGuEq-emjuTI0YK^((UdRzrn9ndhjZA_l~>hF0UZ zA(3a`z(ftyb~}&PyS^vK`nO*v!&V_T3&Lx1&_27MoX;G%5^7^!d5cA;hlQIn$fV0w zR?1+71bHW;mfJmH*67Y4i?Tvs0LHM!lGTOcn!VH3Dh;ll`|zlUn&Wx#$GeY>+=Zuw z?d~>R!ng!F9op>bU7Q4vWhzK`exgyH#t+HSd&zZg5fKVsSGNX}o7*!b$dlM*@hurT zP|a3%PmWe1Y+|ul3#E!+rlZ|vWyNlITkZZxQr<s{vo{F}H&9N;& zYseu_``fN2cF4?CW3G;jJE$%6) zS09_XVQ8m7@WO;A4+Myv;a?7uD;hKdP9ner^_N23xk9(n`7nRK23rB<*lKXB(IUzN z$PJk>Vqj>ZI{hFk(+6Kc3S>N6FyAK@AUCOpyupdnb~!9q!}CovxUr_H3nWzoITz8h zd2Zv?Ku{y`%o;@rdcw#_+Ur{!c@eF(YvuU7nZE$0bjvtd8{@<%`o4+u2e)IO;e=fw zgYL=#Mo*_IH)b~3ehpT)vRx8+TDs}^C9STK#(^4K;m7BzX|(G6k#xOFWax1X;c_REEra4dpq~>ipxdM zRB|>Qz!;r{v6--|{|qQ@k7Y{R|l>FG(iV&V2|>WC)#cvq~g$5C!=sKXxk zNV;Q?vU`G>#2qiD*ZG+)20j^NR!VuZXsV(QAhW*6q8f10qAE6~-lxX0U%jVbuNYrp z76s}DV___pt_sJVU{5ym4RGpmw1$oTtJBcdkU$6m3>>)BDicx1oUK;N3Tz1|&>mUy z5r@FTO^rQ0?1pJX_eFamD-CTsKY-8t4EM5TuWwgI2uW;i5zpG>Y>!hz z6N$*wiDmz8B%VQmBxw0|rCOcxo%obIHexhl;b^7I0G^rDQ@wUROp-2xUmsq0c46+UhT>b{^INO&y2Hh(DXCq@ zlGr2q z-}1dZ>wF5Xb0-J}4iwk>l-_ndXot}!Eh3`M-0I2#kdC{V3!8#7&Sg||GcGyD+1~ww z(@v@yLzr%9jZUL7_9p3Aq&mTFQqis0fm&>RU^NV-w79T=mg-YzLc{uV@J9>Rzg=po z=s+{9XEx_Qpde>d@k_9>oxR4%-gJpeOd0%sDd7p)>q0 zK1&d)$%=qE_sJfdxqK;0&Iz!lxcsfQs|3UVa`kTYq8-O_CFfUH^CfuGu74sZtfQ7K zQ6ukS7_>yQt!DrB|D&L^V9w-gwXdHphN{>JG3OE1T2%4wp(h>GO__AwwqHT#wuO9cl_Q^=ih&BIfNPI#K`9M z5NGMF_xdF5!o9(L*(cJxJ?(l{FX+2|FU3oHq=TUej*i|2);De27C_aZGiqCVbk^CK z2BXZ1ab;bWl$!ol-W5S@*Zp#cY6eRg*bop}s3>otwj3%y6=;x2f0=%mXT>-%m9+DC zx6tX9Tj6<2?3TU8JE4H5;}bfLk@`k>r`B3got#fs*j1PJ`t_0Ug3qVQAUPOtg)7V6w-L7WP5AshDCWUU&1=Hdyx>}t z%4KO!uxM+mE*SIuil8p7gX!SJAo-E;c5A2|+`R=MTs)1J6;a%cinDSq4MdkbN=ajF zpTjX?(ZeJJ5y!%EZ`gZ*|Z<#tPebPb;F0bS&Kb0zH;nMzX0teGCrWd@d@RZ+H z)S>BjFv3ZNf~NX!T3jzeiV@y<0h}J83S}>r6s6X@f_~$+xaw2dBieTCS#!|g9WOwR z3yMevR?DVKLd`6(9H8hmn^m@ z>ms~UnssHVHJfQxM;NMuta9n`czf3D8tP+D z%~5p6+md82(2@g#MSO+2<-AXXtYlAiq7{K)+NPX#L~#&^W1c# zEnJX`1SSppF-Mma+>e`8fWEghld{&v*rdR~ws2+ZvAOD0N3~LJbw-fMUF(OyOT3o= zS!m(na$v?}iNoZfT3n8^d?Eog8TH7EitjnjB};q_#u^=(yW*nCY&x<0Gfr7sXxK6& zyNwk$=1BrE+GoVl(Nc-Y@!v(-an1$Y^^c@cUB++9z^!YsTF-}u#$$87nab%L_PUUx`UFTV-@6_ptQN>d4@l66!{Z z3%wM*effs{RgZK;-?snpdM4#_VpbDEN|+Q22EQrDxzvD>lEZvOOA6Yro{3a)-67$| z{^k;^O55}QPtUXcB7 zfFC{BdP0p1w`Tp%JsLf+Oa0oddL??(p>;;{j>$>*E@R5yUbP0|tMB;(&_>tV>^;NJ zRFIgZ6z_w>NT4;H*5`6x`aa6=7(Zvj?LC~M=uS3HPEXE_O69uGjD554bniq==#y1g z7*oGydf~SahFks^K+}U7|D~1>zjTfX6~nxr3tBi#oF6W@A9SnT1?)`j&iV|s^&r}l zA5nmi46K2^A2XP`h-)4p?a>&9g>yZ$*Gd3Z^r4<%jn`O)1pKtxFG)q$vxO5HU~Vg~ z1wGDz&qBwlmh;W|SPf`?`l$d-_WQfF=)=ca7*$l?lNI(E#ppnc$e0}eLe3Ro^Q!P zmR0#td-4NM%I^}!c%2#Si|fD36;C7#3t?dR8$bvHW1tTK{NsZ0I*0O8d$Fw$`hQ>l zy+gk5zjp`(6Jq?|Ek8#X7)%`B{~&o5yZ@(?|BloT2rL99<_CldrvLxz{@RwSld(Fg%#J9sKBjtnLV$S_(w8OqZ+qa)f@s6FmqW^OFHzFQwO#= zI{Nl-Ck-TeNwqrayHomu`uL%f&)5tlc?rH_v-4-G_m=k3rrh>A@So{VFjo)yRoT~{ zwcE~@VZWJ&o3G)ks#a5(E=>W&||^cxQk9oXb*7DKn{AKJJ^;;(7>Kw%6lfhWGS6!Si8knY^t-L(YqUXEDw+N+CeI?22T(7 zF$H0Lz$S(Zm)88gpPTaah2{5S@lgV>vtic*r|k>d&Y`n201UJFTbHEqo$BgE`YXEh zid2%EPCTh4e{vzYRlne%r2u}hSMeL)1hrmo@(JTA}v1xbZ4(c>~|2IGkQ%Lm!q<$+$g{MPwxu`ohKi=@Ak!U@90x+;LXPs zORp#6<4bOzzdt-72%&WV!hV>bxh!QE_?BBK{3gpxP^h^(4G&(R!*5EocRmErt6&@- zp~!nsTcHrdK9u@Vp#jj`kNGPwp-6}St_T7sKp^75-7Ugi;mUa=K@%L@Q~()^2s9QV zFc46|FaZWd(Dp46{SU+8-;`NT5e2CII70>w3k#M&VgQQ2k+%jQ2M!KO_CAc8Be86- zcaZsKzG=hBksy~TBQH1GQqk|68exeC4XUr!G$5`9!jJG(ZT)~0yJS8rwty;tI)A;! zu(ha|q#CXau%!Jj+QI4A1Mwp55r7gS#W)2zBSr^^Pf^jJbuK%{uz`vn2y}}Pq7^9x z!JGv_bdvtsf=u4NYEX7{3}&5%Chk%>hE>uD5OfsyLmNyf$m}W}0!D!Qt2jk^-_L7E zV=|1P&M*-w;YL6K0FDvX2;yjf5R=kw#r|RR1?=bX6&Ez@x-5Xj!2?9xQ#p0kWbp-j zL|-2eHgCv#En;g8JV4M#I$dGfW=CMlwI5ah2 z=)Z*cnm~Z6(Ze4|w+_t+=uf4I)H1yVs9sya|Ve<_zjgT4v z7!+<7^?{fMLU1(&|6?A0=fy4yE2t){z@#$GV02-HL@j=8*Z>48UIiHSq9$K!+j) z>xe@SDm80TLOgvl%Xklx$74j5@moS)A_$y{&>rSAjixyQa`Qrr{4kv@jrcpz&mrjFeW$a~^<08SsxsQM-g%57^Gr$t04fCmXR|auD2M`+Y&0URVxUkO*c_rnqK2$% z__~0gl2tr&zCniQj$GXQ=v~&h&Gdie{Ug8@2i(5E3P1+n{vQBvK##x5974uR$$;)h z2{X9qL8OtlJ#pi?K;K9KI)`d#j8GgA2F8rv@HR>XP(i5P{62_$uSy7DN;m<1hUNse zL@71E7=y)O;Gwv)fNBws+w&?nUWF#&sS3qXgAQsyAP`UBS20Hcs$k%QQH{$L;s&8# z#OH8?Vuggj)#eb;Zz%mcFwlEv!@||uw{Ms+R#kyC!ZY~Fn~yN4LU68*uP=Acm|#pI zDXVHP+jRazCtuW6zT?#On{m&>oJ_q}UM#0}7e2chGFDqrj$~~y`uNj#z&70_&w?i% zc>MVM1R{~5ZL;?4^W2n&i$+?K$ZG5NKd$b87;GXQts(i$R(&lMBEe|(&UI zLq=21iDlERh$IC?m3b?U7PqkKaw2?9RAm+AA^V%s_JJBj)cj>L4o19qyhc|?o*?bB z;%xT&w1dH;p^HA_mOn4(g2wr@_O!@TzHXKzl8&YK>WG3`zOduchJd-7FV=Ok0HJm1 zH~dFVNvQ7aDSy6n<%4bk_4VDov-jP)b!?S3kzimu?{aL$m36*Gazu3#pHnYNdcj7c zXRca$`3tr8<^FkrQ>RRsI(5e4kR^-eEnIP{9Vpb*@aWhoD@`Ir-E{wr^i~>*+y2yY zGjy>VNSN7Z|4BPPb+v?#!OJNw+P!-Ti9{S`I_2uCFMP-<;FV@Zg*aJ~i3Drk<&O#* zn9%4z5(?hko22L&1EFo}3ZJan_>?E2N1xkkGioahh{$XSUq5Z)suS<(m^@n3uLuee zy>o8{DvyqXFx}sBqtl+1!RyeOzei6#>EROOyqJ5^7KM6#cJI_myZRfUrY zA0fJ+I0+e5Z{|zmWk>|SkVU&Mzbc72KWplicXaVfPT7vxd+)#b+VLrJ$=37FV{Qc+ z>5&OCz6;NmL)=$rk8Xv zxy2W=pdg3V5r1Kmg8`AEq8YesS5iqUU)Ys=e*doU7i|(uaz3mWw=MBYtElazihMwB z6Agx&s`Mv|g1ty2ijum|s$ZTo@`UuN{D-GDUyn`lwl$h}D`-klg$-LL<8rUx05T;$c!Q(?Q7=VdAh#D2-aM z|6VOn#4X|R^}QfRWrsJPx%=eRoeky+KHKwaLAQyMux^j1veWb@@ zy2I64TADO=WB9AImxlxOVE%EXn96Sd7^aHoSZ|EY%zbv^Cu@Si*iG+5j3R$0c?2)3 zWaY8_VeyB^HAb4G#Ye8@H2ux*hudBUbwjogo?0!#>qG)c~J!kTB%$K=Sw;G=ib(&M(zR8>>eOzjxJg`lIU z>2Pu_YjE#>+q3p`@~s;)~Q>^N?UQPExe@O5_5jYDoE z4ZDyyYGr)rBp)kf{W;sNRyK4G)F|r8wldMg5h$S-@5eqoqzYF?;}lKT-FumMbBZ~{ zP2R#33G?qB(ZFg=ICv)~HNw|MLx15fCB34~w@1z8k@eT#c68+W6BRYqJZ1^Fwdvt< zs&lHjT~GGd!_>ri%YV(wkK zc>Tt;8>cszAqdIUH-g1!d$1)Ct7*S6JU-&UHZ44PMq0RH{ zNpcI0UwNI9n{Z`=rp>6_9x)|*vPU~iIr^xi{rz!kJ!u)T!jT(KQ=gvKR>XN-DG>1J z*%xOcvf3_3qjOWPtrz?0kA2S*U7q6)D=@NTCI1;=mo8siX`)J$8@K1wlQu5@b5s!7Xk}N={jlK_P5nKQad$88QUt?GIig{p@H(LNxD|wy~LCmx0F8pA_{v z^U;;Vw1fn$in@iDZh{`$ySIBN(!x>a;~?Dw^^~OHnjK z_9kVe-8;9AqM)|!O%K01b<=PJBV`^CcJtY-U1nqiD?{9PVIw(WKay{~>{cllw zhR4jkxk%n{bql{IcF$Cds@2+a@ehveah4;lJ^dWQ3*Q{)szMyL<vYNir@9=q_CV5*!}Gsi!2nI+od35a#Iqs!d3z zb~Jo^v1`TTF`G(6jFNF9RK~0eZx$1!;E4aK3o&(_jP8!sn#{`-a^R<4c74`mJVoVl z2?Oe4l&6H+t9xxP64%^3(Q`HgzUS0E7_KY5>wZ#Gds`c3A~ z2>;M4ZlwRCBj@qXxg(FE>WhASg0t+%&6$mo9+sM_lg_>Q#${A(w{v(_&13d!XDYk4~?( zn7=o>wxhkRqq{k2gg$xkm6zQE)5z~D9Gs$A%8nHut{JKIFv zk%I`zD1E$QlI^88&5{a#{rTPC=!rWrPD#(PR9qXgB4NYi;eLk-2j}n3{#jeaF{-pp z@~}Q>iy~1ru92A$v1Ro3G$EVb-clcZW$R>zF-1bro%!Pw$-b9f_O+Y2+H6wz^A2(4 zUmgX^yGQl3m#jdfZMLFI9gy0yU+ndqe7&UV*1owj_FV2aII_%#1x5`rIC{$BY@NdD zMZBKQwz5}GHaqEuWuXSg5@RX*AYhE&Pn9v#D6SFkmfl%3RZ-&&$}fXbZ^_|hQ@7v9 z5%S7>#(F5q%gi|SvRlM|I$25Qmz3^rFEP@@^)ITrI@;RW>QnEnBWjzxX!&kaS4K>- zR2_ak;j5&^hKJ*97GG|vOeK(rb03sQ9@6Sk#>lH!?kyBnBn~n-e!iPg7w_jvcG?(U zQrF(r+TB|grbcnz{rXFMs5C_qtYlam5`VrCrUh&ReOt9*@c!Y=nM|2_Y+v zE0GADfbr^Vu%>}UZd+T#h3)fB7xG!O`udWM-Zo)J@6$x=lb#l`@^ca^Q9y+Cuk7tN zmNU7%-5pgquXoz3tx5rdkj|^0J(D@P4Ow4v`*WF>(K+HX-$-0!1d| zZfkpMTU%>g*|Vv5`PngTqME$JQ%$xP18B^fM^;)a*q76%77{IWiOcU~mnZL1BNH}9 zeT1fYUHSe>vK~j{tE+3MZOtXg_wT3mQ9;~&)Zno2+LQc|mAA`APBt*JR$_~`ZcwF6 zeNrLGBmU%?vb=;uGg{ zQV^oxc&Y$YUwdau+NCfT|6MOqZg^N~Y`FZo&zz~d?`*v!zY$okeg;K8z5(#n^YVN! zd6;`a-$arTb7GCIgYTEG@1}a0QoOgOw@PU69XeXU4Oz1M_4m9X9}bui{o4|3sL$~* zCCErBR9(N+GZ|&TJQYYfWC^ zqq|oc%L^VnjbXCJ!ej@wMPUicOcULx<#D(oEqRKMAzC$TEecRq4?4A(fXBpMI8gOS zg()w`O@6Dc#sAvO9L4|{fshm6qru_OT05(253X22z+&hf-EHhDHl~+KW#GM5x?9^o z7I}~5Zl0OP=X!53AGOTeJ8;Gn18H<46KzPG_&g?`BjPjA`uGBYvz@LYNfOIK(;F*| zdV&!2etsJ9I^)ubvg(qo>xua!>z`1*;_z4uA&&{=z6UHuYXq4cuB9vjcMlAQBf?Oo zT8f|Yxv0;*kdH`>o-tF$Jm=xLBZW_5WAjRtmrR$z0!TQo<2T)(J3sq??9bd~Kti{@ z(Sm4#{$fe89y;i5vVh6q8mSV7$)hhg;H`rB!AlQqmfIbDX7%bQ;q$CFdWfik&-sRQ zcK@<(LmrOJVU{&EwoCDt9dtxT39Uk$U~gE^3p>gp9F&)q!MeLhqItqklhPrKP*d-{09)PB3&FHC%}Vx#&H=L(s}L zuE`HIz`i%=GKw70Swk$oDpqzB92?tB{U#DDT;icc>Jw`3bw{P|Kj@~>>GJaH7JEqQ zkkzwyp1UMByQ-^Ml{I?8FjF1LbFzc4Ecpnq+@PjlCzioNgiO>+Z18h*0~m`wfUb23 zg>L%lWXWE<_DCP8RM=di*N{oeX2CiWnv|T!@6H+zKN_p)e5QcMg8g;zu0ND#)4n0d z%9Y-75+sR8-s=xw-lo!F5B@tr5m_}gHGNy8_fNgmga8;p+IyJTFGfaDS>4#-Yuk?} zIrzOoi}}O*ogcKk7g*!2Fgem=CvQHb`ufbi)Q^>U4_~C}I*)@odRbii83C?N8sdH+ zJP^BH*sm8Nu;UL2MhhOTj!aoLv#+NrBmMWJ`6Ecj#mAD6D&le?0S07wP$C=oKDkXv zId`P2@@wXu=yw#uZKxL&2cvCZ=(~BqEn`rLK|f(*flFs0A~8`0J*SxIn+$u=RMGgc zTWB-$ke}L~kDbk3)wi?AN5af;>@0Aax^Zq}w+gnm7ok(r)peXce53oT%So!}trjrd z0)`oAOa5xlOnyHTLF!+~;0P=IhD#ojl+9Od9lo=e&JjCg^)mzp%VmBg%J7O{C$I`O zoruJ?G%|%>($r~CCxcnxpd~JiA-l~vkU9sXv%Qza7x6^D(FzQ_+H;yf=y~4gQuqzAP)4rrV-2U@>RUVno$>Cz;t6ITvt3@E~H{II+0L79=Yz{M9 zetx0LapBnDb>pUt_Zi+t1qs@}f5H(vXICZgxPv5;8|i^u;tl32oU!MW<(kH6QRiQj z=RSS#s9bTS%y-nFh0La&*4#QFwQ>Jc!k730?V~Z~oi$}uNKeDb{h{x1OctxVyRwck zyS?HgkLz!vYuFdCaM+x@4?sCYz^?_yqj3cYmqqL5s*yK4DxlRO2+?JP!_4%u4z7UB zkzTmS%~tGCC3z?L{Pr#rhm$kW!uRQ>!S9BC|I-)%RoVuFeSdjc9abnS)&1?&9Mg&4 zT)mgB*|ulAr`7o*?-<~y!x8G(sVRwvNQC$Dpx3IK-2~soTSIgA|p}EeGT9-crI7Ubz;ysOA{=QhYy*n3EyoZU8OXWaN;pY7Lg+iYI`418O~-enzGDft3rT`guxY|ILW zWomtfU0+%7f|3{@0G$vIu1@`R{_qVI@!v(AntJBzk!RWC#M%(tx@0j52J@%RbdUo* zPQWtxL?Z`1)B+fsP`|%^UpNHZ3B?I)c)S2n!D6@~fw`62tl-J&c#Z%wdk&)w>;UCI z4C>71A@T;Ed$&)^zkcM@#f0=s1q5QVD|%cRmNd) zLLrUL8yMZ_J?$d!dc=W&CG2H@`V)`C0zRX+8zWS}g7U0Z4IAdqn*` zrBN%t)C%>Lq@(~=a34i8iaNf5@8f`t1y9;?uN!;puyM6oxBXy%zwh~Fdl`6)h$~W5 zCM*5(aq4Bf4J@J`m0s+MGqv36KVk8W(;1m}OJB=P-(xN>MFpD&7veY1Zx{yLATh`y z;AJ!8LADJ>2pUNswju#SA@xJi2a2T@xEbp(7$QV6uE6qs1FFzK2cR7rNLZ{Cn=5T^ z=QDk>g#wNz#LWrn;VX}%G{lP#MnAGd3>e(%JFQ0;W6`LAWXy?ibJ^X(1GZV+ADI+VB4FgbeK&{Ti&Nl> z$YDc6Lu~=3ppBe4S)gQMD&!YPVWUmJ8Cob6S=oC>jtkO|H46~CS<}Tyx#p6@Vz@3| zW_F5&oPT?lGpix(!TsweF0FoeMPqn$PV6N4kWN;pKL5Zc-#sJ%=9!RYpI;!Upd{}2 zj0tOmBgf5}yFA92H}fG%Ht6gVN!xRov1-h-JUfHO?@i`-si2wVkOD+Dm>xR8g9=8J zIFtxYGdGt!IwovDbvN=r0F3wV^9<~~<@W8sEE)(9CFP5xjX-OZ^C^&W7-%VIS|w5k z17*!_O{F(yaZP?Y79DD%F6t+)-U!Iu{|W&b9{=>kv(h?vvmdJ|@4}Wu9T#$EeNh5U z`$FRDbyNI}G^s3{I@Cc2LuE*U0%qy5(E0c_M`z-J)XTf3kF=9?Qh`-O7ieMo2k;s8 z>N22Fkc!C4R;p5cg0k(f(ZONi;Xdk(3C|nwM9|*?Zc!h?A zhxu8SXO}m&@^K0%3h3HpT@xes{FG%!IyEe3u0NEY`FH{jpVrua&l<2D;B>Xo+W}p` zFQ_rHh7@KFZnse=etpp$BI$5^=8mXw*1AfacwMNY4R8yN9N=^TlWlkouzykdJ%QPY zug~B+c~iW3V1gnF`FVIb11PLVvq8XffG)(Z%D-tM|>@7gGqfhUrt~% zd8(<=(515%Em*bu)}@oz(rSsCcB;^K0wu_j^-Bxr^?#O%fvlbEv@cw}lT=j07fIOd z73WXw$C+5DE0Z-eppA!PsycbV2=Ghh^QSML&`d0p^|gtaX{paM=v*LJPTKVw3?>Um z^DAt(+o=*hgI`^Tqx z1nezfDdJE}CY|2NfH4I5fW{m{baK!*e&%X=Su@x~0KSx%^GC^+wn`YFkM=Jhtl0t; zpffi!^-BXVy6)u;+yT9+JM^hbvNwQCe`#T9_}u4lZ%X0m5)mu?;`wC0p(?ub^Yd3m z(=WYxwr-e%5tY-WCXfJ8!+e6NwH`XlBTL)-^uG>6%~?j^KT!S zJaFuhLav62Qdb*?1)$=$J-KtUqoWD#<$FRy(E}oN!t?ZZv&Q=9VEII@dG+A~sC8&XYZDa%6(u`&-{5hf;UPns3({*uD59zbnzJY7 zO+6qfXsfumZkBK476zJx0=fjRwY>{0S@taf=t0FDtxOh&4^M%DwxtI!a0OdGa72oR ziai;vXYM!{e5C<4sN(d>4u+uL7ltBBQ}5o+X#|23(5qj^-p<2XDA7NCO8+u^<&C>H z78{WV$y>E4soP<)q22zZ>AyKsD<0al=>B5G%H;VRm%?f|a(ax4{N z$*xv3O^UL|h#&y#a4+kR?^2p@N?_`h&u6!`w+JOTb#aQG>rz0ftx-nP2A_&da0_tGXDPK zcdx3MKy9NI|`1PnAQdv)@Wi_h_SUKDPp1zE6f z?T$}YikV4Camnu~Mt71YkCC9jFj-!M$j)BYr=DHiqS|RGsk(dlK8{m)`f$Nke>9iF zkt>?;o;^Nn`YmHn3U;Lmczm?(&_xqm<}F*(Rh92$AbtGD;Y!tAII#1PLe@jQ*|`1C zjHm_PVux8$%&deuQU+dUS#G%2yN_dkbObn%jZ%^JbcTH2MhZVCjGr`zt zl5Y1*nH&tFil&gwiruwslI2Pa*wG5U*6w-_K3xuIXfYJs0XoFP8`d_tX?;jdy_5I> z!e32p_SaX_ z%I>X4af%JekBh3aniF#-2bDgVe2->-d2{42Q>DE@i4zvA^z^^!CJ}SM2MmV9QXH2H z@8Jgl-ki$gcOwO8O2N)exZ~k+!1vQ}eDbVZ2%1p&bkFvuOuj%#LoZ~?_{qyW<{p@` zsByWMTIV0-Y-O;ji-B>J|!|9nA0CEw4BB0fV_ynu(h*&*` z6&C8&nRfANa>ve@i@!FSFjrzB2MjOa8&FKZ320#ft~_v*!l1y2Stoa%-F0yA_03Bs z4T$qiY8gPC%j+&LAjCxpc^u{N=w*>pmMvK;EFLz1Q+n&v8?~8dmzj`NmmHe% zX8ERR>*^y6MM*DWb7_G)7mU)@=Y`C)+IwaXpY_RIrSU+_D+U{aH@)_0E#SR39I$N# za7{2Xaj}=)+OlI`l`a0p)$B?pNhI47+*^}mMdF}EiX@Auy+O&#moJWH4A<<4e{cae zW$N}Js!)+eRmSV1JNE1BT5FC1!(;)6tv2P*s{4^^X0GJU^|ow$fBoVI^W~Qos0hG< zaj!su>MD>3r8u0lAwG0ih0=fOEo(E)Z3mvh*6w2W&Lmqj==Hrnb@5N zF;3#jOZQ9K1v(-iGGG$Sfxlpyp}nT~$ky$aPAcq_7dKxwiD=hiKhIVZ3xGty&dZvO zGs04><~=^K#!0njDn^bi1gZ^u*CUi3&g56BxvdfAWs!rKt~LbGf~^exC~Vz5)PfAA z*@#}JqP!-~3gMJ5vn4krTszxg9=f>CAlhuq;?Nmo7tikEu|JqYr5mp3OgS2EU_J2c z@1w@=p0b!z?yAm7y|%X___xE6mVz%O0zMZ$!AuI~wggh=M zzFNF=YuhAeetFvQ^A+L0-*C2)CQ&Fak8R&i^J`7M@wTG8DgNcuD0g@#YR^=ylD><9 z!j7HmY&`W*X$i3j?HE+d)z8tcSTy*^!A9nyCR8niG#n*}qKcnsJG-_rvCwGhlP!a7k;Kq+YJ z7*mg1^;u@u<#IF2@%>#BkW$6SY0|o(zeP`8 z*s^+vX4iv6&{GEFxV|Sb|SI4o~U>o~4UmWOTFgmWTQ1au;u?m=_OP7L8NUiv&a#Z0oK}hYs)JV|9n=YG298u-+S~NPk|qsNPU9fMf9bfdR%pzinL3I-^U~Gss0UTn`#b9wYTt+&m zgZV;HZ8g(ofW5V`rp-t{la8{CyzJZ$6=?TG=daH)B4QPkwM|8=j88QL*HHnEwu1+l z(BG#d=N8lobXT3)5$2}BYpi5zIlI}I(-crdEe~HO&Ge*q`S0@^IwcXS4=fpB(%a5K zkb<(N0!gv1q}b5O*8(RZnmW1x<3v2H|2KT8whkO^Zeru1DFp>A`cR2g8ogo7pw_NV zMO*(-&N_;O){=rwTTfq8ou2tyytJac#ocd|jSdZLT4&akp&iC}8v<=x%4MO^V=!rX6%OYvYOh) zh6WCg?>laSyQ`l8f%W=TLSAWYz|7U_e+$zl_W78BvAv~3bx}@jH6~#Ea0Z#W({L}xikyu6qJl;?Wl8j@js7O!SOE>|p{}}wjHINZ z@;a)S?~YwNLd?N}k-`u!H!=N7QFdznm!=tumpBmd-a+F`)OxK>fCUb{p6M7Aq^*FW zscC9yi3;DO6qa^IPK_`z_VgI!WT&fG)rj{QG0;E_j9eiBtGR*VJl@+-$99yZk}xGP zso+x$)zW|4j=i>2G+srU-Bwdy)@1H7&|Cwm7i;^u8EYH64R^OHN_|sMT0)1k*X=#M z#7hf|rT82Xr$?X=Fdycljji2{@GW&6TsOZUM-%N{Y*83sX4t9XAL^|u;s`q+oiU?b z;LcRU2ipRvCaykKz3m&XChk}gZ%MFuQC3F&$5z9Lbyv=ZDB}n^4vy^Vw2XqnCbUM- z(uD(1O(IC$)=XQ&)WOEqR9+V}EF7B4ifbx(gM)@DOXy9CHeo&{x^|;1Nc?2Dq_rwG zf!nt2v{FK=>F6*U@{7_lN@|toFASzCxegoUs!tJu8W<2X(9G6dt-b7RcFBhdrpm}w zEBuITMu&y-ASz0zJj6>I7%KGyL05AMjeSQ4dg;;dWJ^?2huwrJBXp@i<3Q;T4KhR5KTk?2{M4*&H}mk(o%(&( zn(%7A?rzNb()`S{!m^H0vo>y<=?A_~%|T%fs-lF~X&)<_Y1Xq39NX=nj23Xam~6hL z>qvVlzlMc&b}%zFbsXa1P*Iqbk)B@GB3T%Ha^Y|r98Nhfz*(H1oS2_i#lrZk-f?8M z0~*3>s;ZOP8uB`%1AT|;^sb2D!Nk_5;=+m!>v3akG37NXBgS~b%>pFgv6vk~=h1=2 z`c~fd+AZ(jB)l)_(iy$^YzBFEg!YpsDV6P5?|C~;Z1GeesOp#* zwpV3j<`+|ZCrt^m!&EhzdU`1F`G)R8ER8fkMIsxz>ULGX%_%AV*sS2UYSSncW=o^( z-~bK9cA}C0PeR?xlI*3BkzG0`ZPUvUkB|sFXMCbKX7om+mD?eZ9+mT zDl4g})qQv`L>UBxjUH&LSuSrDct$IBoeCdlf?_vUVa>*Rn<(PI2^Olp0dCTQ#FV^( zk}8gY+ngP{r)l=l1tna1tyIg$-9e91*{I+$YLE?;2%2XptFBzfWt@v%PrHi3Yv~&3 zL-dTajN*@+X)|V7n_(K2j0ZVbsu6o@5kye6MU@MkSI-`03NMIai3WB<%_yALFJHYc zsn&5Ev1jc<4ZMP*uctA$Iy*ljySSV>cK*48ll9490iSAW3cb(#K*xAa4Ds+A?#OS> ze3xF>C{zucxqZ|6;RI1vb*;d0pp&J6YG1j4=_&(P_qNg(H*cOsfo-uyMn-UTMZ#Z2 zfHBX~+H}{Gm0>RZ;r^?1k@N@x2m(I@fzFh~JK+4f^{`0G@}v>}@pn`&tx+Qz?#B@u5u(v1d|V)_|& z{EI}8=>H}J_>8K%(QlC%jvolGu>NB;K}S!S(r3}^2a-ofAqXG{{51r`^!iF6!9YzJ z9AE#}C?TnTIs^o*)zy%)xqA0r-=B`ZUz;HTr{?DN7)0UtwQB)VdISLk0R#aA0R(}6 zGXlVd8|(={mQ?=DFeBs<1P}xe1P}xe1b%Ga3`w3xrG#>}U?0?}etSt4R3*u@q}$X)ND-(p8(E zbTidp{_jrkQ4aqk2rCb7%bOP+`qS=L`6qlMuMq_PTMEHb%dm&-fRM&BYvU3mraSY_`pCcd;@IDq~ z6}`XUH^|G!XJ~M6qWq(4$xT>4d`5=TDC=+i z;q>PltLHx;$HrT$dwxG~ z^LYvE51NtcVQ07_E*G4;{&x?IYm=kyq?Y|fX?~BAh*@@Z%V4S!*?rW+wEu`)zvtm! zebW+mdzPK=)Qt8&ODLh&=T6r0PO5F`V06L$YTC=rZ4LqFqpvy?&)@;)Gk+zpH+Tjd zz4)q@&gf#ZIUH_%%6{Otjz}7p(aHf{I5_p$(Gv~bHzos}|4*|K@jBu*dYFbh{?nM> zMvzF#UY+>uz}r919?+#~CgF$Xn*z3eW(fW%zZsvnV(t&?bH*`(0@PV<5m0K&uV& zA`#NdvNQ0M_z&5RiaqD%f*c^;+q_({hbu~A1-u?H7@cB1aMJ_3FYLny%!)k6o^r@C z1nj|?fS54Ly(R9>TE=cS3_T3OC4vY3va1Y}9`{!OL6C31GQp8x_gHWyz)ddjtRh1b zBnMA&h(H=pMj3bA41?GJo8E%Ua+ba8EfH|0@h0<$Y4{?6M5-WT0L~lsVF!HQ$qOQr zC~z+&lK{Y7R#X^JSdKkB_mt}ERSM>aGBPS1b|pWXX-xz$!-e`5BA91TXW$$mtlUp) zF9A>o;Lff`)}X*J1l{!w76R}S3uoU$SXKqP-^eN<@W}z(EXnE+44e##uhIc|f--)C zzEnk^Zr(+ZbT=BkSiu$cD`)VHqN>)MyRn1yWG7FHJ0D*?yJ+vz0V9K#EErDd=l-H! zs{h#of6UR77UsGtGGE7{s%Hbjqp=EvnDoo;YDAQvGv)r(bA=uWmwiaU1uG1yyhgyZ z;bH?AWUR_62nwS>8@lwMl}Y%X%r9#_`nZMtjuk*jURz{R1(e0yhL>?qv?a?V-D2+k zDrGo-2grBykQWF7za#>cm6hN-M8aQ2K$3lZtGPM>GV}2ATbk4I`Cyp$p1U96K0zw! ztb4zI{FJnI&WEShqUN2rdn|eoiL7n!zvp322kdZI!mPrY;A2;98c`1eCK4YHDcNNbu&h)(@4&v z7C)x;$TK4lbl?G&OIw(f!8eQC z5IIgsi9+)VznJpjo8f5t=hp|;Oav8RnbNzZ25<}20BU2rlH<8AEG@WE9Ez3K;ZB3+3&Ayok=2-wERaOeU>j1g1D_Vf7hIGR1(Qy*sR#>29c=g?5ao=JlfoA z;Fx8%f%jK_OY!MNlN3p04eb%TZfEg;Q`VZ|yMHV{|2%o?oUxOm&sUTepIsYitVJOi zJCEOdp&U5;!`&dZe@0!drW@^PUXPCRb~uGXZY>`NO4 zjoVYm6$m(W_YSQZY)_&nsg4X<^r(<7k#?rWUiy9csVjR{8<7+({O8@v%6+_Nxw)pY zxyisiS992WAhN1G;bRu5=T zDX%T$2*d(b{LTSd`X~PR#0&V43Qnzv(pRA=nho4=ErG=s=igp4fPll|TqaJR_oiJc z=Cg7hoCtO{Ak#E0!xvvm{s7k~Bp?VN2=qq)LKKevfc&qYc<-Mdb<(HchXk!XdZ$hN zWsfv;BY-SLUn4$cT5DpE)6KXd;RgZ}c|7BkmXY%xFf$RadGW$C6fk1lWbwxB^n z7Qd|%bfm7e~`G^|3d6bdTiJq)np z7jH~XezDHSUI9PmabcT~^UhaQL&bZ}^}BcXPf}A?S3Q*rI)dKNnte0M97VK`*l{iX z@sZ!{RMD;rPF1lbRkx_e8vJbJXj#|_MPY`mQ#k~GiJQbR#F;5BXTnww2M*hs|8ch@&i zFj~VF9(feA#a#={H<)7y9V<(tPR zC%P+IxUFSM1$U4B4rV_bh6UYwbbh$I32@*`9)0f*Pnxi4Fl*&%A!!y$?$T}7-DV?IujO#$*h|b~)K0O@fYN9v%_w)Ckt@m;zq0~;jEB{BTfw(T~ zZX_APTKH~Dtm`SkH`mVH7A7>}KL`YZ`k=twJv#3_OK(Hj6QJr;pG+1Iz(vI-Mr-3<8y;Z1SQ{H$6`M)SlN%ZLMY0h z;RjRR+*v!>fo$!QRPj&9^%6$z5CncX1Q3PeM~Xask$v#N+YNA2Q#(b4G8!lxaCZZ| zsy-X7VFVP8#0$$5j9jji!iEsiimStHg7-cAQhLKrU&$plrvZK`m6n`xvYd09BNF6Y zjL;Yn55E$1K0CM5#&bhm&GV&Rs3B9%%Ny9P!fTG2s7<$XDwB6=k_i{G8sW$i(cO8f zs*@kIl|LOsp@p1IsjF{fHCDchyLKnF0*=rfgr^+Msc!3w+GWkIRQxPTpGa5)n5fA* zt8Orp(G#!d+BAC5l)bU<;73M=osr7u{m+>~_^Bgtr4o5&38(eSWJuj^O*8yX3f2sc zF7$Np8<+Uoc z8Is3mRx6l!oiCu%+dCM|NrUXwBM;mcNF|HSbx%C`1bAysUQZwsal zXP@6S*J$$QLb`m6%{t&`2@Tv?*;T$mPnE2^T3%V;G_t_1eY1H8+Ih&?4n}7?y(9I| z7(=J9m^YwbZdn)T208gTL0FCOm{zVxBI>#~&-V8Rl>$yzdvp22BWp~ZmIHs{vHNDL z+WS4OfaP8kJzUpj&a+~fv^!sEsfFsR{R^>KRb+=`An!3K3Bakp_b2f!2q7-Z<9m|oE`bYm6sZSoo zJ$e-PUATWQ?qy0oJUQ`w5V2n$8A(;Zs*gL>J8viE<~`b_sBN0q(vv{YbYbHJ|0PH3 zMAGu}Lv$$tak(Ar)MyQo;_>9_?nyO?up#9HQC0hScg5{V+jA|uGSryh9rN@9y&cpH z=7R;AX!qTXT+zoHkt)8h@dv-P_`oR0+~+`-ED68j@wUZ7ucZAmO{s@2azzmM^$T^$+%~oM89F|4e4qhUnqEc3Lbo=q7Af%f1O?HH zbWKy^jAkfQw}(G5PoiV4V_~H!e_=Isnfif)j1Kzf^$%3iv(BA6QCpmP`SuH(VkC$l zmY^uQy3vzu;K<50vww>!N=rSq<9h7V$GIitOXlMNTwscOh^?MnECRFyO&FpN$A+yK zfM~=bAxg;Q*L~QtZFT}$kCEi{IS#&jm7 zXt}$WHSjRnx<(^6nSwkB)(Z#vZ;m}S;_^*r|G^Ox$B(erBlfychx7XyL}Ip32n+!L zVGfVo72)M$t}NfZL7uhM?Z9$Kz?FdIw!kA(%&~o|5^&WnVYf)Wv`5ccoQmTxi$0Ze zn`nGyg9viib#BwsK~wS})mI0{su2J+#Zh~nsVBeNdFV@d?yLJRa;;p~foceJE>#NA zKn<2VpC=>)SP<2~tO{@h4#eKgATUsw;wQrsg47KyqM}SsXVL{;ppYoESXfTLa0-)7 zuW7ocj8ar=eG8%31&v(35F*Ko022{1Ypxz!v*V#;%+w_pes`7Am6QMaUC3TiJpBWJ z!>#@=Wxs&fXq4SoP5Ob2HR>PA`NlYfuodtbvOz3zGKc`p+Nr zoq|;`qVrd}I6k8d%xUjdUt)?QJS>zkJy`*?eTo*W}0zf&hZRR|F7+<0}+D_6CI) zLkie#V>)3+OS!CL18pK01_F1oaFB|@Jsy}JLShIl5cL=s3h9MKA60GLRpB@&xoQF5 zf(I!Ett90u3V=o<3lc5{m~O(V3<^StBs_V04(#DLz+<8ms~oT<$8Tvx%8i>hE}otp zbHQ=)?$@Wr^)$06j6~YS6@G1J*{lw!2v{9LlAajdx%6IOgUqiC!D|JwpZKs=gi?Ue zIE+w_`*rWG1QK>(!~z~hb@!?J3u`~Wy1(n%gFk$C?>+oB!xAr&5XOdvgwQZpNPwO? z10z;2R`1OSE;mmo3cgLiSkpbGH7w}-qMk!el z?`Z(mNk9+USg>c^oZU}F%NDJ@6g&3!$Z6=F?YnFa(D!6{poEYWOiE zqhykSxQ&gie2IpUuKckF3;v@&_GWhQuwN@;&krIITHC~J=G>reTj`$n&F>!s{ zG&uj{h@+~Un4~h{ozgH5EDkFbh->I#FBO<`R(nn3XST^$8=|22R%d%~u&ph*;dla5 zF=UV)iSQLxaFz#9J>`Y#$)xv+#&U%?*P+A0-7KggmUKeoWQIh`l8UPUQMx}*V7n`n zq5)j8AnI%=uR+l)v^Dz|wEJh|f*|ngBJj2Q_;n%pktLTk$g*~sWKIz`wY71?5TDVI z6c<;8?-_{o%TEfHpD7k**xQe@(o4A#NW$;9y2;Ta}=e88gctcYP7Uc5{HF*kPr_bo%(1FEV??AYR7Pv}r ziYkWc>FfV^TMbswMeP;Yj~~6PP`5^ZPL19b(}1>_v-UwsX1uKdv#P0G-Ofa;t8VEM z7y&}~FnmSk>t>*P^#(K^+fr5kCasVOnsFg3;p&-20Yp=5zjsaGu#hA;A`QrR6DbPff>jN;L|;d=a5i8}-8bMdDrz)i zih_y5z|ipV5o2sy@(Y?eI6%z+n-iGrEEZRwqUk^rYH3>fgae+#hMS7YQ{HrtsVF>z zR)S|qAc*^U|N5=hQ<|N|L_JM-`(lfQ=v`G;m$<9xLwee0u!Xp9hVVW70{kiHYDyBH zJx?xd5=fw~#{6^3pAj@LL`5vn2~fCiWq~JC)SXQf^h`YljT=94yps|uue_cKDKHA- z#?8B8J0tq|8sCEpH(bhV67#C=$0UOf*&OJ^aRng-;kilJljYhA$RDUmFu) zdE(i{%T8$wir9bYvZ*XTF{|KQc$Gf6j~2nuBL;}OI($CeonaWtv9VgMpbS`Q6ruEO%eJM zNA3{>eklZy8IB(*ZZsZf2e5qw1knahb%;K&Z!f+=u{r(1nKv{d6^x@n+s@?yI|5mz zQi*^E&oS7HUmyHn>YhD2IvN7i7+I_D*(|ygs)@t4C~8PD59~V4ojr9bN+RO0IVxHM zLY6OjxHM+|7W5bc*7k$3WSeDU+-<0pI4qd4s0Ennvey?w7B#N$L)YcL zOl!6qX)W)SW!aO)?_Tz3+KNSMh4V+au}fl)Ceo&#U9JU5I?!U^*6-U^5=F4kZhUt6 zFiuTxoi`*DfZ2zhzECRWa3Cp(JbcL!tJjN0O;y-C(KILV>8(`7m50|jX%_9ga5%NF zEG)!DRGGpjYMZGN1_T`QzZN>?x0PF`dy2}k4#%W>oSf575?CCut?uICO*nd(DW`b* z@y~{{_S%_QxOB|LDtgDky*x~@JR6L)0S8IpU& z^K0)K>N*}hn=#n|#}}YPV7>$nFg~E)lm##yBm{>!pwK>^V}8@SwR_TJ=7yG2J%TnK~%u88rZ?h zXS+u&h+es{HY|wHnzZv`%Iss);K?x%q*D6lmm8+7E{BL(27_5|;~s$`NVrvRZ(K?K zvMy%BcgK3FY}Wu@PT;_uaA)vF5=H=lT<=e#!D)A;MM3$Q*dfBZtzdAbb^ zYR!tDGiWMn^}D=ikFVV5`EMF`d*;dwD{ITfm`Q66?Y@Rv;Uhtz$z)wz?&0mnIJ1A7 zH+J=gb8`>QTtk}TMUKDss6cnZ;Zgc^k0$s{&f9YL!O}3>KHuF}!pIGRz%PdYX6e$U zG#c%fEBC*rz+&MSmWG#yxgiOM(zbVJ6(nWk<S29fymHlE_hfDvk7 zd?n#l)<_*Z?QBfV1HIj=KBVQQy(=nbMy}YmX}qff8m+8p%=?u6p@r@q5K0r$JH@L0 zBb`mHTs(9zNl%|-eW-WvoAt->xeh=#5eYvv68wX_HOLB}WL!pL3(bAvP**=6YgTrA zLS{~JmC)LE{^rdSl>1C0U{vf!csYK~c$=M@Tf-zR*>!fyNK-IP3=A4-TTwy5o-nPi z0i|d~Q>ZB}{X(-G>1Nhi*X%TCq`iSE7ECYj86RtvLdUyns9TM8({FnF;!R!&Pr+pA zw%yCaOcYeiTy4pv1?kDDnWc4{h~>Ly2f7l7n&XDL7QcCxlb%)9A_(1n;&hmG-;p=F zHb3=kj*gLaM`=oOaf^4@@)K)9^%P0Y-p2L$8HL$dpXxeR9Nneg#wn|@8XKhA)JYjT z))f?vpr)r|pxIcK`Z~LaHgeANKttZgTC3sy+U@O%ZoY$TbnqAyk5S)1vJ3at2Za-I z8J#VB$H37#8u|`H+))h$_g|z`bZE`ra$?#@XDkY1X{%J4pZmGRB6#$`fQTWOte4Mo zbBk&@7BiyH?jEWDEH{~Kb=Lq#bsU6O@$+=+sxQuZmy(lLDsYTEd~lYXnnGJ?{MF~; z-!@Fr?lZ|Hm2f#wC)GUANfU=xH}P=RDKE%NOV4VOx-5!5I@{kG4G9}cDl7s+OjU{f zR~vBJ#tu#f3Yo7SXJ!>?_|G`DZJ`4*<#t)y{C#VNSZksoYOsf9d3u7b&y2{?`k#{% z^WWz&vE)@-mg8&KY@VIBuM$g089vNc6$f#eE4nlt-E1wD!3u+jU0N>kAM2$~VqMvH zp0;R*a@zfbf-eLkujm7(2C1WYT^*eqk(QIMor#T)yHo9ltdx|L;%d&!jeo2Rc2|_o zAW0>S*>~>Lk!`JwwV4IrEYNfiGO|ClLQcM+Gb8-^n0b7yTmRD=VNJ@d+)j#)u@$wW zAS3l%8X%qd{zI8q+jYnK`KHPkEJ0C`z=%J3Pd9R+B^gan)z{KjxpOJ{^z7mJf!_!~%B|WqFECAV;N{iPAS*%Zm)pmVyir?tcCq!po->jHK>$JE zPZ0R#1N@WN$j=A@{}}{OI0{8k8_nr4kNwZ&`tQkw(bO4za>;*-wgF=xL22q)O5hzd z|9t_kVL4&jo{*}0*H0$3%GS*a;?gQw9c@f4znf-YJlPSG${u)Grfq5CjkeeiQne*D{u7%3ovz^{w|N`W9d*6dft z04Y0yz|VmIV#D!s$N}L3K>$GjK>$GjLEvwV0HSdGt;LHJ4nY7x06_pj072mAKmbuV zehxVxTp$P_2p|X`2p|ajtr0*Jj=!~dk-{MeAP67`AP67`{2T}%3dheO2ZRd*0R#aA z0R#aAfxk5Zh{Ex=7B5mb1OWsA1OWsA1c9Fe0Yu^WIplzFfgpe&fFOV%fFSU&FkzN%Zd z>QakZ&zfg?x~He*H`5a)D=qQ~8WS1_2)twwfNbIqIRsLu_6t1SvlTVcw}-Y zIbNa{cs_n)Auu^UFhxZwcm!ERWFd05km+-ecU7BCwd2fdgQ;vTk0~2-2jC5Y*uMS% zJ$E2}{sMxN$gmfhYU`JWMIewwU(8TYX+(Ag&8fjbke9_ews7-;-MpLNs`u)9JeYuH z86pgz;SU4aKjU`bk##-*2}r=kgn|IA1dImh7xb}Sd<;(`l!cJ%X!Cnzp^x?k^{~?0 zl){1d;)PrR!pnyrNALoa%gnp`LT||P9kz;9eF*&s2R^)fFi$n(M26oe^R#p_IyUy} zrx(%>HCPcC>M2Lcx{bhRs? z7&y(dxpdc`Bzf%&N>h@U!!hJMse3#Wd_duzL^9Z{k7E)DZ)fO1E6LvWq!{Q#=vjg2 zlpJFVezKqv3t2V^-RkM{CYJTHIEO>luQb6y1b@&_vt07Ke|}DV8*Jr{3%=`i@&t{P zl#8?nU;Os`h0W#>s(A>EO)W1Kb$~05?{06!N@VNxw#xfhP;kZSA<`aZ>OmNN$?6b4 zFm`y|?z6w)tg+4snR4Wn3*C}=gsST^I=c03M9V`UhxK#7Lx>2%Y18d?e*o+LeK6-D z=?_-{n$WHCVf5#9D;tr#1anGfL#9|m4oE9fpRdE4}A-r#~^Lz!{E@dt_ zJ?N0lsPA^7%P(CNM<)=5xy8H1=?~uon?)C5Lgb2s#mqpYcr6K;@$r22pn7lY{#5gh zG1Zi*9ItG)0#m~?e(*l?q(b@hj!tNEWARp#J}g&=aVTI-;1XvcinSqPjej}}G~4R; zJ|5Vd!MN#Sk-Q$i-Il$Gku@1+m(|Y=N>4@TLR94cI?eO$EX0;Zy~qga_OF zj2Q~G<@4LiNkJ+?) z0DZv$hGgywhs2)^rO1y_CA1EuMfAfKWQYYR1To{~kgdie*dE5N3+&ZPrF%g)bM#Kv z#ilnL*BF2rwJC(Z$s#p}S7iQN^TURfevJW*%tMef?VdL(vkr33J8&RA_M$ z*%=|Ezjo`JEycmI;{f;;qODpB!>W)bnl(CW*mLyIHv5IVD|H8Rc3@0j$(GC}?S{>U z$c4f~4)S+oPh@ChVPtFMJY+FsaAYUsMRH-XVsd4&LvkUqdGadqPV#%XJy~TrXIbvt z%zVu}{anO?*?jw4=t2%jCBb>#d5K$pbHDU-^;q?&huU8dL9ChMCdn^jY^glG)_xrrGFe z@BD&7q`bL;6)7|s72ZY3dtdA5?0D@&?VM~upV+RzH|STSr}K}JAFnz`1agT zg;9l2Nt4-<5tF5p?UVzR66X_{Q<*~=!<-VG(xO77VkSbUv#R{80#6~nptaMq!+Cso z7P=cc8N+_T4#wugCS_Y@)3(=VBWAZ^H(-}>xU-+MqjxZ~jca9SNpBf!(X$q_{&EI( zCVmEdcFx(sImo%mS>kGaIeuApb#(RNYVT5eKWo=uYi5eWS7`wb|%l0wBhpM+~FlCITZBd zY7|A}PLx&T6=Wi0tYlN=kQJ`wiRGMfM#_zH6Y`w}!AgYX#N}EF8uBX2G4eL@@0Fjc z5DMi==nKe;4-3?a*vp7Zg=RS_n5!phPRqQ6Jv2plLkbo0u7y=Z7d4vIUDRdxX=Ts- zf0E{7)BFG6f61$<_TlXw1EQy68Ky&LGGuaOqGIthA~M}EQM6&QsWi;gT{ZG&re|f> zyZV+mlxV4L!C_OZ@7z;4l&NcNqiy*%$UjTam*0=r#8l5|_Sh%>jpBRx1g2_+dQOA4 z8KH6g;$AuR~HPHEBm_Tp3F~~ z4p~E5hFY*KH|_RqA6lB)H`g*(%h$TvvD)_AW!%Wz3f&{m5LZx|kI$?p*LvH(+)tl= zJ~g}h=FZ`<;8q=9DTY#bu3fBMqQ>)pyI6){n$**N?})GGG#-3gQcd&c{5+%a5&yqv)8(%SeM*sAw$MG$`4a z++8YOHg7*4A+JM^M9J(`3_Xw;-Q93QQDe9fxey9)6cDc&7s#8~qd(IyS?lKPblrH( zT?$|BBho?b1fIQuJj0#mu;sdJobVmwF7}=Y=6y^2RwghQVh*c-1IyvbBSu5cdZPG|0$7uP5)DVZv9D=QoqEom-IJS`rN-tE3=oew^Z ztfH)$ox|?*^$1MDtXo*6zXuI(1j7bx|V zYdDxV)G9{R+1(_zRfP#fjQbq(w~5EctXnpo=g{Zr?T0Q7bsjSJ*BUgwaMGw;rr#)+y4F1iYWZU0PYP`;o{Q$e+tzhF7My;eGH3qNn=;lSA$q`u`RUa-e1^a zpJ*RE|2$1eM3zazKx<6;lV*f6slh;gQ1H&5Gl~CVl8=~tmnzAQIkL?+IK8-2`Kxoe zbgOm7PdYncpS9R|(ZL@*-{zTqP|a{oZFTITQ~)~;_%vxXmpET5fIa9POg+ zWpBhaQM$M+Wn)f}$d@cyUB%uzc*DKefHy#Be=LWkfnmo;M@YuT?Pet)Ae&_! zWn3m4BwnDO^v<#Bu<~E?eg>6>&_Z&-yW+-9L{7_$wci=8{jOl9B!V^fh4G1TsIEAM zdT%4TJ{x{SiNh?_BeqJ4xIHASJGYUr_Pf%Bv8`xeYicIVXRS{NnA0X)EBbN%b#-Vq}4JLIcAY! z+$KJL9S=A5H%j}*<(D^M)2vMi&^Br7G?I;7E38%QuNK7?cNZR85DxWSJX@0-`#i&IDv{1Pe2%qbo!<0>Cis+1uXA{X1d z%U;TL_BE!|blziL+GmjGyo*(YAMuQmb=iA3{I7B**(a>V6$V6l&q-}XM8(-Oc0y7s z9vZFQ!s_;S=%Km4v?o0zZ7ZFXcPVI01Eqsevsmfjm}xO{f#xT574%y70~OeAqbGnC zlN)2~Eup$42PqRTlvqtJD=%l&^X$u>y8bL%Ze1=~Zd^Xi^hgrft*&n$yH9jWjt%dW zj)UoN@SOETdewjF2L%D`^j{6Y5vb&k>JQyi_fR5q79JHA6OI^!9Jm^?JKv5pk7FWf^-aZbdxdC1e_9?;r;(EuBJ}w=FVsS^KWZXT`rZ~ zwi_p}ZM|b~93j?lJm_v$wl6a`+cE{~*_E6DLl;v}vup>a;&7#?b$m)u&VAF05bv+@r*ciZHP>k6Q| zM=Q#qXCzMwJhF;ddc+AGsqr<1wEB1LX?|YtrUeIRy9rURe z-VAmt&nR6w&6C^sjpjm1h&qZ4TyNdG}4oLIc`=sV17A8mB^FG~Q7kt}A*N45tI>cI+4(b#lY%C;K zX71)x+Bl4B=$*`U;JV~ynSVre7Of=wSXmQk*|xiv=Q-v5_KF5~5`r7q!kOuoc_p}Y zI9HoMyQ&=)(~qQ(5L5i2B*b`#d)y~KYyENlTI1)|1!8~rv-<0Yca3+C6*4v>Am~6~ zTX$ez(5H#_$h|a9ps#Ykx&i^C-+?&wK5mFy0*ziiczIhIem!st07v%4oCZbh0SEIV zN_R5PcWb2n5wtf=zX3Tcz&JLRi^d6j-b>5mf-J%)EJ6k*9yB^LenEc&UhG$-%g6>a z>3h8Se1R4SE+@hn$5e>m7R*P-fbKFb$7GW+5UxM+L;OU8i4>+!tB-m!?7`rH9vUj# z3;8wCGjS&Ieg>N&?1;G$_7($#|ALe=SFWfm-zb+$@HuEQ#5(e4bXQJqYF@~U?4yI zF2KymeA*z{;N-g-c=>pZ24}No?Or4O*H2B9b>|MM z_VIRiPVC1|qghh{9Tm>^Dl$0o(Tjo2@iI;44c&S@hdnmEsGphje%RJ@a>Z@QvCl}< za@)mhOCeU{$#Vbj6uq?dV4&aSqaZ&uarZ8kU${Og7@C*yMQwP7%4E`dR*^{fYR4oxoVkh0M<2mUdTG zXoh??%9H4ed;?i)M+?2r8|6DD**i;*LBcz-E#hvsTgE$cC<3Cuql>S99^tfE;=9N+ z=V&*PW%yOjTZqr6z(8yvn$HI4RKl?JFbQFYJ)V7|y8U0Je&DfLX;N6DPX)mB=@jJ_ zUF4e<6c&6e?2sasOyXyjvXWjC+#o2-XQxlwLr8!BnX8azk)KjzqZ?~vYOH8j5Ipihm*@w| z1|Pe|{IOEnYejad8QViR_2TPPAX{gjlW5y>3VgJCGVpgdPGZe&PAFH}F5_z|ISHD|qO)ajx^pia&`l9Y;Lxkpy9|K7w-owX+)@g%Q2gqGuHTW^q& zFi@zI>XJf~)aF;`E10;=%*;%VB@f7v>TgXx-bPVK;w#jt)dU3^MbGC?;I6dag~Osq zf1DJfSzmow(>b^2Z>=L*Bh_$^dEj{NguQ_B#5%!ZKto07!nPv{r*C6W{(R=#q0zSw zN*=ZvLPM%XEQ80MIOx_u+)v_g_ahFwYg@%3OL}tO1SK5h7S$ukzwXLDi?N0RR{1jL zm>o}5LS@mF@4V(2O$%$CS%{^kv9OuG5zXa7n`>^wrL!{P)>!!7Tt@bMoBQ@lk&DXH z>4)<3cTZkyaXeg4(d*%x%gvc&((`QkXfv*R_qeCJyZO^ao57TII;rq3r3?n|eKx6d zsO%_rpN;;_Rzf@l9-P-qmYh4{U5nYiUYqAG5thTWER`Hd9aBv%mzSzmj7 z3eTm3sw!9}1dC5ta$ zV{e4dOv6M&N5Bn@kB`r3Z)nURFDU#ka=A7e*QzdlOoEc6N4J zItE$>25LYLY6mxKM?F_+YX`!=2Kk?H1dSXF?9FT)&1|gke~qiBZ{y_1ML_V2(ZB!x zlGD-5_&=Pi9sV^fzyxW3y`iP2p`-n8WJa!L{|ni#H~%Y{p~1grW$R>b`Fl==2DC<& zMpj1Fjt&4i`v1xfpxb{F{vo8Rp6y@Eek<{>xpDrIoI~Eo!N$_*mkN}u%^bNIIDb#* zpUwZ#$X`?fHdeOwMh*@DGH&L7k^H^wpZ!(;!-kvne|Y@8@t*`T_GW;Y>iv?7oBm%6 z{@(V_{%Ze?!QUJIM(|7Z9I|GvMwY6AW&nl$o&_rd9VhL7ee+LB0UJvjdj(rP1EXJ( z{U-Ta(?5Iv=A-r>K1|Gi@cG-Dzfl?*a5y;Wn;RK8{%ySgtM=Ra`Sna_|JKY&`(Jx= z0&Iap%Er*l*iBH+(TJOYj-G{sj)8-o0iT}v*8>|PC+$D_{7r&iZv^a(^c-#M6>V%R zxqnZ?>eo+vMu0a0mhhiF{zc45`^%I5=2?Ha?eA8A-*Q6(DE}u0a6@x#hUWnR@dAkn z@+rCkpJ+j8Dk;6aw+2w2ZG?YGhu#Y|%B%XpV1}ixU@8?Qtza%ixZtyAb8W+K5uQw5 zWh`F-RYh(!Uk9?%AnzyNi=z4KbNlMEe*M#J)nnc3f_LL`!-bpk%)V*;G27w%_2>F) z)_U3Y1}`EQFdr{GJlKD}dPu>Jo)X0op+Nk7@$n%c|MSJq3)%1y>>u58KSDzK(SWMP zEB-MGU`!BdgFi>+g(m|A;m;idN+v@28^d3n0(r;K|1QL@wozYS_yY!CVlnW4i1>M$ z;lqFA{msLV0UsZ%?W3-k{6EA4h#dJ3a=!mnDRY5B zpDZ-ediU(~urc@|MWj9!bMMb+YGs%uC#X)QFX1uUMW(HMTTHs_+Y&vLVC1(af&`-g z$@hc(o=usuD%8NllIkBY_L$MMDp)s4%0vuU4G*||7K3p{exHK8n)c@lD}Y!jDa?WfImV> z)6Gq-!QLpitbBMFJv@|5S|F2zmckY?w2a;!9})~1gpbLb54s4Q`ynu7tPxFCi>&Vn z54eAO?7c4(j2Qv=^E7jGw}YM=BCi5PqVg{opsNPikM`UJWNlnA2IVo1 zDI~7!M+UY@V`?-sU5?tQMLfcvW4}Au4D@5fSWLT}23@yYw&rkF6XI2O%JXg4jxS2% zE=PKNg41`Zxl}8arzHCfyq&fEErYVDHHB^aGgkF6eAjvKlWm;RA(xJpLomr6eYB_Q zpv07{?+G+W5&lN3>@fn_xTNz19sTQ`395T<(R3WPiR730xKlF6LgFd9-JA^N%x=0b z6LH9RX5lW2XpHl(c`OWH?=))X|>^;I~9M~8VwxxbhkBmDP zjx*=XxeiK7Ijhb%=54CRqnl8O?5Cw?ZmAlT5n6j2i%ndFj!kLqrD7UjqYb{I53Ldp zSdB`FH4MicTnNr`d>GbCCeNWyH774=nM^Hnz%gqTM&`0(O4+xRcUG?>h-q_{Sj%+JH8S z^T$?lv0{sX(5#=$SYz(1W6JPkv>=K-iC2J1N!?~y`E6DnhzDO_Lugr*9MlHD+NQUGjYtFrJ;R)3Xapo8+n2^Fzs-2G z#)XleK~yC*pdUA{#prBJ9#`_L#O(wjFYoQYk&S_pI)vSabeFxjlDd7xva$9r1s>Dc zy_|L~(W_(WKl8J8n9Kq={FbS;L7u_9Cd}qn@|e((@VIfhS@N(uTIb@Xg34hc@1+}J z*JvLvE_%Xi{^ZV>BEy7^pU1QqcqZI6W)!?Mnl4SW9m(Ew+E}oI>o5H0I1n*!UlS{~ zx8ozk+SXL(4^NseVFS)`9YM5$YcmVa<5*O&jGXTjy9}y#(?u{9Jg6@3PRTz_xh8A@ zJE`1qt#1qU7V8*{mcrZWlf8rc#UsRu1$r*V+J1&KobC&vx|=)ek8dTbgM86H&Yd!-T48jfE$yM$-XdD5X59*cG-BG357Ot+|&jT%p6mOYSp zTSM=naa>OtDJ8KN*5g!OOFreR;Z6l(NX&+ISKF@zCAJdHWX{`zUDS@Tv}Yc$B7s zxh5X~jr=&Ory+zAK1<#kut6-Z4)v<5lJ&|?QlCJomcJD$Wv}U#DRsSs+lP)SqyFu! zNx<}kiZPtBWV-`aD6y?aGHyHGfIP84uZE|0yfTbOpu*0tYeG7$2FA_`ZO;EY_89xv z=k|_N<}>iQ5jK}J*wHCX{=K{>5U%c3rDCVAf|EskH{gkMR+wDfWLb47sVl9n+U{Wn zt3-iQ5OGYb#0pX8FDJ-#+L#zGEJhf!+$o-VP+lpN7Kc=IH$X)#gK+^v4-8`yTS0bH zSc4HIiFRURWX)e=uj*CQs#R2$Q;D2jkx}<%5ha$sEjorR;u2OGQBr+FZ~orx3POFq zn;qK~N}@JspLvWM;$dj5UT3t55GA2n{=}evV(3tWp&&^+p;i_#erX4Ve3~S%l|E6# zKj=2^dF?tML`1WFIpDhIt_dR;p|amHi1ti--_OOP{{piAO2ViXalAT6goH&`)?!v* zdmoDrsYnMxOj%0Y#DcH;RJs53vioLu0_^)rI)@<<&f`HKp?8M}0jJat*EE|f+cK)} zQ8Gbhd8AtprZC*R3>@G8*vh@KeeEqNpH5B*JIl$vm?F!1(lA$t6GZbY{Nuh#eV{3p zocw5r794k1Lk77n%62PKP()rH@!i#;ab;5G`oXj6x#wvqb2!|nD){2~gbAAUk(Mf!pMol=oRjIVld4+R8X29=7(|@AKCrLH4H_6F zSyUEQZcQC5^l?RV4RzzfIFn#2Q13}RDyxlLGq#H)dG=v(4>oAe{YXW5piyZGFv}=| zqmt4`;2e6;G+I9mL$Q0upuaoNN!>g+>gaH_K7m)leXkMXMcLS9zJjKYl>Ux zzX{jKVp$A?Iq6X;8+6-3IA`G^cN}jX7nv?L#=W9DlaM6g&h`RMz%Urjw4ryhZyfQt z_bhS5wW@DrMPK>+?B5eafUnI)@eov~jEa^bSwC1ex`bYt&b~k^B?(z%+8;6)n?H|Q zb)qjmrPgzH9SP2UpFk4Bkh7!qDCar&kR)%m)bbNsVN_K7>*(O6TrJXLH!WTy`_d?y z={SCgH&uM&2@+{^k=)D-GD>g#9s6<$P<>F~QteqGI5>M^7l)D?^@x~`^xQs`<4{r) zQW{fspH!G@6F1#8Pyln2W(>Jx1NotE^3C7Z?R<)gmR;?A!1Zi9X=vMcsI)q z#T3XSgQ_wSRCvDG<;SYLrEB^6AJ-DdD3#jQEbDZpQsst7cLCg5(p8h!;DE7+FNvhgZg*e%o`IC5Sr~~rWxxSO6NsaW=fJ?+NL2R zOV@f9=$N+595)!NF^~=4_}UifrzpLQH^h;K4)WyiU!%q}g&9PTM%uJx+zQRUBo@8+ zLM9@@i5N-rdA^Ve=Q`OH5z(|>7K^QY_<@a071q%Nt&`bE? z1^sOuIkhz1!eP*V+ASTwPGVq0Y}IdWO{g-nE)$wWMD9tRQOzl)CLdef`Vauz{3R6y z`uo>*lRFdy)y5`TE@g|@=O!3_B>6Rc5Q;2PvW(%-e-h6i;^f%~I(%^u7OGpCm~}%U zUxg*gSnbNXa$G_~#w{9Wiu<^0OmyQJs~cxIN;)&_(~M#c-||XRV1JoJ6L9y_9Y9 zjP|fY;lSIHMbKpERlsKBhCR6m7e|GqKVSP`!#X_bjJ@}z`Vm3qWGGw0-MD%{2xRcA z=UQX(=8Eh*<{5r?cJgRb9=SP#X;^{LCeaaUdry_pty0%jVSNePF8N4mh!=2436@Nv z+d65h=P^+BfeFqhX}gV*mT$2t`j(Fbl=F+NXmR}crpbpOqq)0fhly>gj=*w#-%M%2 zFU*XmigI`BZ0@uL?IfLA_t7MXJp6f$2mo7qhM6j2qZO_}{&^E_LLf%64AMMZ0&%hK zFl8hl0|f4~jNOs1S@4R1^Jo$jF-r0UgEHGtribSCQqIPh#8Xl?sow(#P%9_N%ZQ@u z(=_`N-Mqyycdrb)_(eF1zSNzPeo2zIFPlM)_mdej_LK#&&{L2Q>~F%{FVPf0meFjW z{BrvUCcYtaRc|u2H{t}9n7%DOkTXe|(E(*R9mq!*iMJAFEJ?GF4SuNtK{ooSw@LUe z($8IX-LjfhPrE!yvkiXX=e9yHy`&VmT_nfQxjh5y{B)=sK#?3WhT~Hc#SMvu;*rge z5gdt!A+>cq%Tr^Qr$Q}MRnX8;bseGz)MGS{+a?#!6ONi|CEK7|*+xqUHN#b=lbk#cmap(kQEQ{EU0L0E$(?++JT?De2cRg44Ia+JAXb(NQR-@-9ujKkP_2p04s&wuv#EyP(KizBn6S`p+9%E@_O&*BDmo4}b|i;pR09oh;LR?sck3ZR}xK z%+o)@K%cX-nQINBTcIOQ|AGDqrY7c4jyScM;+ zm8^&z#pR5_5~tIl`Z&?M)LgKi+E|!S(2sD)9C#flKPRij9ySEuKJQ?59s%vj|Kpo# zdhXC+CYotBCK4YqJ%#_+Zf*WJtnzHC+DXhR`!^*oTqI;S$23waHEj!A2&js`GKG?ZnpJf za7k2=t7{8AVdcS_MOfvc>;3Fe8?(-yg<3UT{Ls=l@vLp#O^mz*-0$kMZJsqJkGP+Fa6e4Z zY=S8)U0~)$7lx!44fgWusK-K&=?!QDyxtEuaaV?0N7t~;sh|kq7Bz|W6;GhQPWMls zKgFx;XVUl6&l?9x=Myz^8Y4%FWN!<_fXlEtyRTwid9)G&~_=UlKKx31V+ z(#~%2rE17>IX}qR=5$r8+_ShXb3`H;!b}|9qZ(6!qTlA;Q&hX}n#A5ZUBZ0{5(Fj0 z*EIK0nlR5E9x^<2I3jucqUr);%(Tu$=DjN^PXSzLX13w+sq|Zwkl(18fa%t(k~oaj zcxo>$&ED6&nSS}y-E0<$Z>isnc|x_M-9{67y|;}gGX;KT+9S7~rhKB1%9xe-g2HTv zTboiP4#g+eb#J%2%H;fIFARmLC;N3n%46`go-@G{OUbT*!inMD^zgI(7Kl1azXEi7 zCSx+SEv+~LGIN?Ml&u8AU03h&5gMoRL8Re|_WDjOvMI-n5z|BbpduL_Z@}=Fe#(~z zz$H8;&k33hAr8+IV08}m@>P3fYhi7CvqM3=Zc%Xdp*owWy#afB@`Z=T!FhNa9XsQ3 z%-sTPl#tN%v&YrI+zZpO#ilK1A=QbA@B%{_crw;s$K#*0CMHc^#7(WtL`xr|b>x>r zYwO*Jn~~G?v=&s+M#peTuPMx7@8T?}hEg~x?*$dSNt}Z;&%dK<#o0x0q?Be@T@HB* zoW+`|f1`{fCLP3LRJ$`UJ!8;bncAzh0U0hT(o;t9;7V_ zx1FU+Y)yYs!|}axa9a&v1y(v`SP$U5IbBfc!^Ma;{Y!{|yp_-BZD zzPg{avt>(J%fU#5;`;Ig#&;-#;>q24Je3th{H)@_Dh);4o6X|DGxRw%M#nodNsRBn z?Y5dd+dtp(^Dsut5?jry*)wR`Kz95kdK|U$9N#`3>rN{P%M<93K1MH*FyiA>G^-PN zozylG<`qlE{nTo&rR-y(U9^+rtZ5iEn0$yv-?2|QOzvH!AAfSCD!EpbmcHRgHYg^M zQ@8#sb=Q`z9U8KPSqrV(F#)bv&S}jT;Zk|8HV#J@EGofO^b?NaFdL3)|8g`zJBL{~ z&qxQp6bS5yH%$w8R}{gYw+ylex4{>!giJPFso3+y_VR*W-JIM=MpiMlWZ_$n{zq^j z&d<~RG4^6c_P9TM>*A=t4F(p&PvYsjg(fQcvqz7Ojcr3EX@0oSy;sS5VdRM)XQ#Lc z#flrcMOsw*cG?%nnmwed2kezO<;!ruQSM^ZKB-%H&kgt-vxHLsj>SC9J-ioRA z&lL@yIHi@kx7xN@^z%)~bX-u_6utOi6T$Z}S zmjM8fJERNwDty@rgkg!IQo3y2;Rs_k(hZE6jj4_4oe{<<$ncYAVBmAGWw^f7^6|VS zxi!~Xj5l+mZB`F&_0LLy60!7KMn4<&()o`=&kcV0I zW;KPUl3}3WNX^J?Dp~KV>siJ7o8y9X*vkM8AE5iTcq(tHx7b1F3BGE*Hau3E1%G1M z+1d^*HN`~1QOa|`EEm!cg5=9h{{{8u8w>=g{wQbp9fkR(+A2I z3?=@1JrG}(3jrQPi|bja5b=+CUTHDp_xHEw^TQrLP{+HIC3A}We^BB>KH&L1-5x8f zG+C8R7E5JdZ*FdW|EeeOE+BN^uzxm`=|eZ<_ZAP#W;lee-=y?WquuY{(GrP8Ni_J>q>Lu%_)b)OFHt! zDKx`>7eRYuAVbk$d4Or>q5o591xy=^AfW2^U%T_?g4VAKn*XuV zz&rq)xh&Ho(fFrf_=N!spyz}&PW_LC1_<*%PWkuBFRw0O{W<8Kr3z91(Cq~h!0cYZ zIut4YFbnupz$pJu^#8M3&lQS5odI|lIMiPT;Yac75C;X6X8yOG%F01{-p;Eu==BGO zQ%H~g%V#crRb9D3h(`e7CHIL?R#mmMq0Zy(gdQp*C&z}P`Y1q#`|+FNZka;K!FU>D zvBNHVsX__teAV%@mFM%_X@lpZJ%`H~b{3aMGKzJJ`H-4{FV-!Lkio_5A3|QcNy8QUv7=E=t zB<3lx$?153IR1y*_1;V(xq|8Y+w1oxD-9uKpX-cu*&J@KgQ65|3i=va5H@UBo%oq( zoG%Aw?dK#LH+L&GbBA*!W!|q(1xFS`Oy9TYIA#?K8yl< z#o=*h*|wK%VVRI$sZ^mnbFtZ9CYC@#@u{JcuCwL!ZbfPb15*!vxeiQcgmDy1&FAHE z=&*57yC8=9N!0A9ru~dVz25lKCmfDM?&lN6@Q4V7k^V!z#sw@M(_(&bnk zB8Ev7;ItsXz^OzHmP_&0Et?##kJc8qLx6fa^}Xqe)MR1U+!v5BOS+GeTz$_*Yfxjq-wT zaU!^RwFX0o!;F0kRT}fo7aP4`{L!u(E|0q@71viXe}$W#UwJ7z6_9~>;UVe3a_IqB zZOC*inYuxL0NQ^EEYymR5BT+AJBG<*5}O}0m42gzX@VM(QWD1#Y8n$utco7aGLqGL zwNz5v7WbC_%g<&T9cUOB2hxGoPLKO^rr9&mpL~y89(RhE<^>ZD($disFgq#`raxAi zZEE1=QQdr}0Gc9aWK000p5jS??DMYYXn?bnT=9N+dpfR}dw*SjPrDlP`&W9z0ElbM zxg+{Z@94m(g!rbXG?K*d!cmw)Q=He48UfEc2{N-tGMsuAqrg^H_V#rI$rKJy@3D8; z9%p$7gu*|H#l^(r_G>z>#2dNnw!mIruBS!~^#R#0F*{q@&CRXB@lakUJICkE&HZ6B z1Z9a86%xdAggB)%=aO?7;u^+u-U~_{*Yq0#Z>k>#BpV5b_uJ#XctTEWEbkQ8J@%4W zzgL;a?C;DeJNGLq&v~dWlR|zc0BbPDNVv@vdb^pENqTh<6a@Q(PRHBo3Cb4~7R)*a z6FU!uL_)?0p_6N|+)!r4@V!QB+|QJ-=R3cJFMS-`H{3ns^X_+UuBU?n$L%Oq_gIsa zzA-yQhL?+eI54V)J1j6v%twHslh=PT9kc1YRqlfcj@`HSrBeG9Ll%Br%UN)2WKx7L zeT39>KP(z;9{`2p%st7{!?Xhgpb98YIx8Txz(cTI$@C0txdteK;_!8T{*6uO~u+~zS^Ph>y z$-;7Sa@tlYlpv(3#=Hg30Dmgy_#9JxeO%M6Y)tYAi$#%T=3*8&igpK+$uxFqUSJzm zs+ktJ@F7V>TW;4P!|Df5KW@7~2<+${7T8k&9Jg#SF(?G=jd{YUgjc-qFVpu+kMupq zeXwAFo@M!E`>tTR{T{Eki*r~u9enik^rK2xCjpyDpuo74x@|y=!7l4w&GI9RN1$TD zzHsL7hNjtksd^mtr;Ur{Uf+DKCs--oB51p08MZQOfQ!kNyOvWp1%f}?WrUhOo9Kd} z`K0PXGJLARjXI5cv`r>N=si~zla4_UC-2kFTL^I#0Evb4_A_cR}&D{wQWW$rwp!gY9jhoVSK}& zB-QEI5is3NyZG+(VqU*1$b{W3L8oHF{K7Q4yt%MGAU9SRlmaA6zd=tf2LTXLXk_F^ zqj(^m!6Y*UP4#CTuUn;~nF0tcr+K9!Vx50z@c&lMzj4+B41nqX6aD`lt@i}>JYMfZb(eoEJwI8hcRX8Vw`arF zt`N@D!fbcYhAG>C^x07Al`2i#a@0{0-;^)?ZALU;M;8-=&k6#%f1!_X1R#1qTD@97 zwL7j*D2Xm}>dL$(jw+iLXZxCvhgc5PLQvJB8UtF*NAMLefTG5)eZ@*OLN6eg#Q4T- zSS~k&VKSQw0ya?MSeC@i_zR*jzHCx;cDTJO^j8N=gN|g|i#k3<6B(=urlw?Co|gm2 z*w~gD_W%$_MoAgret&i<4LafE?#=-SxDovP{E9fj7>+A9%0ru~?+u)7Rc%ph!kF!@ zg=IS3+(srQlvS=VxLnA%ZMaDzdpR^3B7C?OouU2g)D`qGa>W41Ql_8l$C}N$H*fX* zly30QKFTfX3LkFP)Gb!JWWcSnX1lS2joWqu=ya_;g@Ayd6o5h5ie@Wt9!Y=4C-Bd* zkLKCXh>E{zF^Jn2>= zx>0Dgh7QpHww?L?Mo!@+CwEJyj>!m5{3*zhk&&CN2--F~S<=oI#!*8mwEZf(QqX<) zNPEnCrw%3MEVRo7=Oeb8Fd7LPr!R3b`}6h$pGFw~6Yu8+toUY-=|ZL2kz2440uRrXo8nYKBST)N|jj%JWt+Y8E5lzu{Ctq_~)S|#)8fN|JN*IO79B$qH>dcBT zUkG#S|4pyma*3hsv}r|gEtZy*HAUO!)k&z0Zz1=z0{|FHecs>1UjUFJje(I-$$dwt zb9*R8r4Sa1`|ZI%$+$#1>)^ioy)z!~mf-Yqdk6~i8~_BgciXq4zaVc4zOb%)7C`bG zfo|F?R%gY_C>`zQ4B7xNbA#asB8TGv{O$2#jQ8`(x;y~ZDbXZGq<{t5Z4b^2#}OXh z9M0X`F6zuxYqgWn(#BMG-l_Aq^Qx9ertzChX3Ei`thG56Fk384k0g*D0?rXsUh|>1 zd;nP|J01h`sr|f5V;~P_-TS#J9#02bb_j6Fa0tLzb{3H{Cht#+-QO4eDr&mYt-BtL zm1rkvb-FS!S*;}x{y(11GAORDi_*9R4*%!%WZTiy?@u zqb`)I(YW%;iU20I6gD9iXq(VjExTBXniC~~~w0U%kGH*7EG>_#^F6Y=Ht zv|*y$#qS3R{;uCsAE2egx(PG|-XC|Qj}xzSR@_jx7<&Wsz5(Yxnrsz72+1|qD9{PHkzkib*614=HH(ZBO? z8v()$j_3|hxe>kJsHvrgFPppGq5)y9=B25L^-p(p#O5ma<;^cvK>cqN@c;CWHiibL z`twhj>=9oAqKi7<6SGGj6368I*-8@o7q<6(jxMEsE8sDbHin1r0@M&&D|$ODh)E3UhPW2t ziSh_V#xK`rM{V)AvkHc-#b&cg^f1zFb)w4RbPzUz%XG&5H?o-cSHevm8n~`GV~o4p zQsSoj&IY?^zi67q`u?YI64Ak#wkRon#LEHCG&KQutO^vW8Y+RD$K?@0QxyvDr5}mQ z!GmCmJ!#bR;G}lbml3Xv=8A~TTjq_YguGn`~u{KRg3p-lRVg(vn zMzb9E^N$3$d^N!}!3Gaf9Sy3_+k&wa_4_*%=;tDc`$+}zw1C&5UkHM280re@Do|ZB zC7fAM8f{WMRzNNw4uzbA66F9meQQ|zVmk``nzmtuWBj}mE7)!sUBQ_ah?$v{<6Pu4 zr^p-8-Hal0O@-GUN&NhpddWn00-CnOgkXm{jR%pP;dlkdr|cRf6z)aHSQoWtqH5qL z=|fqF#R&?7SBE0OR4{khzJp~FQH)HH(`)M|NxlEi_5lAEdxN1`E2BLN6%rn@mDx@w zAIE^%n4&e(H4?;3_6J1uw0C2%S_Z>71J0#13*uM-K^KuLkzMUluwD(5U#!qe6u02W zW;i4`8B!sd&LWJ6HBxj#wah5gXRA3AQe@}AT4I5KxOV>_VS-sU;{n7k_OGFh%b6n9 zL(X2n3b!P7@9W*+V~oE>JJfqV*bA2!eNE@r*u zL~%sfgh66ku3QQ7hKi=U7gEj33zdQ!VjALX?CwT4!>!c_p<{-S6*6@E<;U#ouI-~o zukV*@8Ul~_mnjOo5bKCFZm@H_WG0U{*3IHCnqtcT3LMlpfZF^LZQ++mDan)JW-A`1n;)l_G z9z2O8qhu!X?`k3xNe=Rvj>}$z#Ms!}FzzsN@(rOtgsQ5h1L&*3ubLSYhVdkDd?rEo zPTJb(%z=U}>Pt=?>96_KfP<6%eiG%1Y%2e*_mryOTK%?{D zFfbD7_vla0@RN-;$7eEMYv2uMUe;2cP2BM9`EDcu{hTmmA!Ahp2SkCBzs}b?boRvX0_IBt$W9um z13r$7WeuUqpovAfV>zI9gWHKt26AtD0%2@&i~_(^5MxCwY>7#iA;)N%x?Zm%r?Es{ zqQLS|7)ae({6fC?R79ggL^~gON24@0$9~yooRkzHMLA=I*cHO-rEKB}`HHOxq0(NP z3oIJEr_8W<>_awB_+(LfRev=^8biq|7-rOrXxo7tOPD~I!C_y$97fmMWV@1x$5S+R^mVm=QYY!WX;7^NZ(t3wB$x>bnecQ%L(7ZI%=@9 zncIOtXtVMYtogm#=SZrsWx|rM(D!Q6F-om-P zT*PSX5!Pas0V9I|BE>kk!#bTfQ)w-Ke;|c{5*JV_Pkhd6vs>f7!^UPguakr%-_(37 z85zr0ZWI30EYvL>5+&u7>7a`vm2~B0`Q+42uR@4BI&)A9qFG7*YFT+yY3YMFC@TaSOc>gja*maCBM zoK)b~Rx5J4L8|NKVhXdfzKyeo_0j+^T0FOpo4Zy{7)2V&p74?a*nEVLpl48B=U+A1 zBV}o43E*;fzR07FRS;-5G!MfCUkyHz5-ue`Au8;lP+1h{CI5_Gb4noVf-+UlDs=4` zkJ>Zg3T5)DdiLmVhWP;Q&4Bt^@zwVviTF_i|GgV0g4`>(&Zi7?ABndh3(P?ae|_jw zDsJU43$ZvL{{{@odYwtjV#3Iw^RFC-D?hi}{J**0e>nuKb3nL`EYIa%l;v{YRyId8 zFiEz>a++e`Q`U~xZJWrx0oEfvDT+&<->W+}jz{E!MqQ;=l4KPWQim_lOAC zgA|_w=-MhSzJldn=;nB#8fW7XfVBGEsLUkQp<50s0H10e3PGnMrg6XLrr#@(0F|#SB%kXFzmGagt1m+Fj zfG-<0^@hVa9a;GQoD0FZf9TM0ZS_2x&<@;m5Fx~`Ds9P=I(b-JMz;&W$z>a7q7R5q z;J1A06Mfrcnw%n%PJ+%kaQ`=>Q4Icf0}9txc&fP+wveT<Hlw00PqItVMJfOdNR}u((m@bH`ai8Lyd1(L~f-T3L&Cv^WJnZ z7DH^G|L8;$j(3lKO7;-X2@sU|uhZ9k0e4ta;6bdLy`UdT(FuI>HQbMv_$}PWZ|*D_ zFEBBn_WO07Kx5MKZ1>^c^%Z`ig(FDBcj+$+i}s5g1R7R@obfRyXCo4u)fp?cDirRr zg***VUXcDbcYj+3*T~fM%tlrIlT}YqDODN3#gztfzrfMS^%lj82dE;5u>Udz^D7BFnXU z7PcyzhvOX2aC_iZ!--6C~*pT*8D(+@p{=Ex`4<5oP#s4h0+Yb$T^`w^)n z0Xm<@p~yr%#91hsD-lYU)d{bSW7H`E4fr>_^inCp+PKs~mkk6B*se59y&aV9JKSmRSWS z+?PC7_D8IP^0Yi|wq1dv1SWd0hQYY=Z?7Z_kf)R8vQ3D+AWyeSn5zVS9kUoh@HN`j zZRZD1pKR2jARjNV_;|3koRP7gj+0xVJhq=HvlF>DVn{!SIjafuXvINNp-qBI%j^^FsLv&CAXBAe96joHWlol z&?({_Kk&`yuYnYabX|ZTNJuc+weuo}TUXGU;GG8)b|??|ew`bC@w(J7o+87GaEbNv z(mU&6MUOjG`}Rx-`{M?$D(#&N$>*M_9CKE(I?HONf=ve%_*2?^M_0KEGC1T!M|I)M z{faT4bl5BFt1^oNT5=Z zLTD$roX=V=zh18-KFp!aJ|$b1&DdAx=dzpm9uXl^Je(F}et3ym6FlQOw^`E$EBsdC zmr6l%lp^>ISL#_mN~g!2uvNU3wYt0HklaOpqi01OjG#cfdob$$%X*et)Us@W{}rQ1 z;JuP$sx~+obFv#B#h=8zLkkZ=Of#dcz7ifj004`u)IHOfT

    1XFhPFg+*g2T6b9`HK>8aXN^d~}p{%T& zI>hWcmQhkt5+oFQSIkY~AR;{6sJ9^E@2!lBiP0+FP5f-GJB<)vU~)lRA>bR2D#K}N zX?3Kjupqoc8{aMk{`%jXlNXJbPSUHH^S+#B5jNs zbHsLqiq{L?cl*wrm(Ag94zn@#&Az_=j+XageyIo_Cq|UGg0O#mgvFwKpU%bA)pBP^ z4cs6%N>7>^;ZFPli6h%_)8GiCI*>bPK`?B(KQ%x9YAe;n*q8wre#fiegd;M_i5|1Y zh^m{Dp?(cD9CqN7rKR5B0=>fv7@?n%(B!fK83-<&3qWu8|FlgLK70)@dfF9s2mth* z=ej1Qhj78RL4)AI)yP|(n==9)h8!9c=(3(lO8O1hZY>QELDK`W@M&;rCfG;78qb&A zPpSrfs69o2o@(xIa$_<)WEmo`d~_1E_IB)IVCiu!v;PTHT^4nrQ5h)emB7AR0y&Q` zWWb2S&H65no%ChVfv~7=Xn100#|52fJ0KR{orx^WF{Al#kvlL(FQ8VDKDJA*nKGQa zN0n5N1!?6k+lj-v0`-h^&c4Ej#83o*Yk!i~GYQOp_#z&RqKElB)$(E#SiFB5YrP_zn_8A3pSKtNBV{=lBT3$E3fk3I~1w!HR-{0#UurLdJ|$Ej_8_vDSN;HoJqJtLF)j zsUCttLNdJnPz?XmdUqTM9Hftr59xV?d7x|m_TlsA&#f|?eXfkAP132J#ztKjaE9Sddu!Bm4fB!uj8ve#mS8{bIxh z7|R1G!E~&7TB72+)9P4Vb{PdV^7HR+slUQ)a9V1po;pCW#DL9$jN?`3X(VBZh=}-) z71DeyWg?&kdjoj$sU$*~CbBY>EBBnc*EtPcSS#s}6Vj*PbGioJluQD=mr8Vm&>%dt zoII_msmbcHwt^Ul)^*_)UU#afgxxh;Q5b@fA|^-!n`F+pKdqm^rUBx!;9?|Uv5ya(eeD*=w1GhcuneGN$*yu}%*t_th< zw~_Zl0|$Gx8qSM}iysKOA0UhD9UN4FaT~Xb!6iH4?$FWc0Q6Yf+Ij~A9|%uFL!%fL z<&zb8Y-oy8v2~F$i~GWs7Me1pAm!o>7_NgTO0cf3ZVF5;EGp0mb1e-O;)BgeNJobT ziaV=eD@Ec_T2?tiQ@>uH6h>?Tz{5^2Kk~LGqjH%^;_f ziA@i_57-Yx+C6Zp6Ofbp#7{;b$As7{L50xW_|t%#0w`ABe!4=ZbOD(^ z0&{&$?Kza`SUKewv`4`Bz6Bd{+9(D*A-}EL_&kC68i(^y1!c7y%z-`ANt0;?xEn(_ zB}z2skjf2&aW{{vpM2+4e^OkU9zHt727F`y*KB7z-@U5`3uef4S7&E6Sbrm~T(}VQ z{rg@01KRS+bxvxi@jvJwFn$N(bDl(b*$l>&}6Su$!t;Eh!l;QS__gcbAg z1%b{Ao(EkWEY1o^Fw(>Vv8|jW6U%!KaUd?5m}eCj4#sNLkm&o5TilM;&e z`8P>V(&Xr!jERe50oEYrRTo{%K7^n=OdMqw6kG=%--(;xgKj(kD%%Qjzy1MqR6NuL z;NoMqnUhUHSCmT!8K<1)5fDH}$Hd%u@IV2ONewuuVKgGdO5vDAYZk!$AF!5y7Y?(( z8HY>fS-*StE^ARVBqV7Un0P>5y$Z%D@+iZGJu;tSe}8{)TX@5-Q6Hf%lp2_63A~ndLZx%1 z?>)Sj#1lGRfIu1kz%Zbd2n8maPvD^f*#T@W&xB;5<5{V2ynF+KDU##WTaa|&=d>&= zZIj08DFUbk0)VuQ_mg=Sko(^P-iQ?JVXRx6VA1*Kj+P1}a6zy;-bmcSV z==sCK`xA22VP1u=ugc|@oxD#Y56(fr78?VGarZV$Y!~UE&E_m}la>7#{m}AhM1YS^ zXG$)h10Iz%_{7Xz<4}KpsbWS)sbxm_gW~>ygutj0fEnl>14HW89;@wkm*TNL%q@8* zBK*dF2y>uqgo8v>!L&%?!4@O0`~%X$hORw(fJLEx>MG!pdfG&In& z5CCbaj|IezC=XTuydazjiHYy9lx+p&9D%j@&clbQghWKsuqOzwUr$mngw@p_$k7M+ znVyY}4PuC-jCvfAH9$<2c=__n0G^GNRgQy$gO{hL=WTlWMYul9JP$R$%iRj>L0aj- zLK?f(pXa`}+o2>Al94e00r44RY%yra?(p&s>)_=L?wvh%t|?V1&9AmEIvm-YkRciP z_$BW|CoQakAq=r6!rUASV)})wE(Y=$B+v!VM~7|lczKW3IrCkCy$=CHgBaL6kANoF zfO$w2BNtL0{uXZ*#7FO>Lo^4b%6VWsT92S9(L6dj`Uc8ZC%`yx?8`Pnoz{cVtI4G$ zrtQVPFt}4bunFX;$jKQ2WD`Td0hT=sWc9^k6m&hoknnx-^KFZTI@{Co0KiDV{LZ#{ zLN+!mvkmNTkz8gBz#D~tGODy3B_0nu=O)w^?7;U{1cZbL*AGvyv zVnU(6(g$yki1Oddmdck=98o>q{Y6WYs*EUrz`NeOch9@>W&l3?WDlr@R4$PK3h#IC zP7jwklYoNSb=WmtyB5+8{~`c zPxjDv|DP|bh=$FG95=%KUtj#cOgtbk=zn6ePgVU{XO;9QA*;ra5XdRTeJ;v?>zyZv z$%Enz&Dk5cmk8`AvYwUBpNH8rYOn)*d$0iO!RY~v)-681GWD%xsKa%D zgKcJ(k!B5=?2u}AuUKYCOEn;kQ4gKl0xkImXaopv3+i7b8oNP4@yO~=$`J)ks`N~2 zj4!D5h*<~@Uk%03@=rYh^zV46*I?B}zJP8+*vW~9|9DFQ(cu7pC@!e}cyXfY_wVgq z0T`=AdJyn`Blbq%S1+9JA#Kksfvcm3X{cCsN-8Sm(a}+4<_COBp@+Mxi|II+&{BXT zLl2c~W7K(73>Kv3pb+|#`M#{U)>07Z8zDCZ&qJRq4zv?^wCjPfXA~0?n=WAE<<)d? zajEXqkvQO%+gX`Yf7r3A&08*=KYJ?H-_{^Cz*G(|MP3G7xD#tj210@I+Cyl4#2oNE= zUj0>2iLXM_J3m~U3pi#ZebYC4Qx~=jKs%9$a+ncC9RKN?3FTpfn^`G)r#?c;5Cgfd z21ZJsK7D%o)~(9)y{i#Z&{4}LOH&dM+vN*=V=%P08Kr=zY6$69%z*TAkvDbY+;_F z6CC%*6c=zx&ml=q!!$;6%^)Z;q2Tt4afDVT7-mvZc`8nyIn#i+eSs$-&QNBAX_7GD z)xvGv*zDY3>MjQeCfNw>A1~a27gyWfmuoq5TDK|OM*!uB-JhL?&UuIKhzd8vtBFLbu_z!NBx!eH-RKP%A9A z_Us-%GAwxZta|z}IQ7Cxz8=FkYl>D$LF%S2Xc(}&$kNd*`!)UhmS9}zggM9<>vh;6 z%{(||I(IH&3<`0ANrD{!nTK20TRRe;0XumJ=;i}?uM~=>3jg5afD-h9p}Ev`J{S)| zf(|K;L4Y&?%S*vsG91#V7fjt3*7OJJW=&kKZD{|vTHh(@F-f$tO=!9}PC zZ4D9#2{>WZjT2_(Op-lW7KgCRN|-m{J}e!d&4Dh+0kZ`tRRr|($)Zjd6&fsI;1>b9 zjpuY5j&hD0T3dUaT~vah*fyLV?BCai+=~?9XCE$o0s*rTVl71AWOppuFNS&(;u(M{ zpj!mw&SFmW#9|mf3r6_>ieG2c3QXC%ni2w&mwe7U!NB)L9Gy}%I~fxd#RwMDk4V85 zN%#aa6X&7D{tY|yGK2{V1@jRw!W;kn`+10^s{}C?@e2x&8}!k)d0&seX(c%it(7k* zCpWZSxR?vSlM%*HxjfmXp`yGI3~t#aE~KC}jc z2^#iz6{PteFg6Z*{34lulKiZwL~eFAo2mf=zmPFB z&~Pd$WqEjPVy z3VI8v^9De*-w)b&6M|!4-WgPu_b~YdRT80zeG4*@+&G6o><@$lizxH31lP&Pe4v|q z0UL5|sBl$xu?~F6AE48o@MS5No#A}dDKyI#3881y`OUj#@Y00~Ro+DOHZzou?IdR@ z3>S_F!LL_1=0*-_sRkO#br8bUw~jXc)wcGR*t2LmOq|JW3%ny{j$ltS4H|6iKGD;!M+X6bnX6BY;a84({-?hz~>{7Q5EtYdb?%t+NIh(54a`ZmWrRskdLE!d0K zKjC=KB>Yc6{7;I7b7=rXm*!eQ1S9eK;9`R|;`;;0T#kTXFJspOF<$WSj#eUSs=E88|3>F- zFpvhG+eYXM{y<_tQY&aeh5hTr7GwM%RDJ@ARSrSJh;0-s%lF3iS#8~rxrzS^Om60> z2w$-O4}c!!iX|p^)$#Sc>1b*3@P3;j%*0XCnUk;)Q^%qk!V%yL+XRC<9CK=d(_}!< zF!Wx?_>3MTB4ocm0zVR@6nGSYx3BMK$T8yb@vdMBTG-7-m%Co#gE7>`oYJ z%g)Uug7#;i%(+kvkK+=rL5d!w!uC`}U_`1$VJ6JJk-GS4f!_+Clz1_|oSBQ`+vMa* z7{mMqv|r#6wmYXz5eNvIrGB{x+<4`w8v<^n4Yg4i*@v_bgyJ z;6V`5+xz-JkszH4JYxWyNqR8KfegUqwz3!>!1!s`~Un3buWU9EKOGBTi<47Llmu+~;qPl22VZ%dHqf%OD0hDfOy z3NAvj!l+LrSipd3fw_S*(2xb|BSI4-wx1_N{+U#4ze)w$@f-?701@ETJ)ZW|f)Zp2HHGYxtfKzcpr|NcAUJ=)Tmh)% z7`{?Re4hCbmEn-W722S0rDBecH(?Vc~UU3;W=5{Cr6Bjg8R8%@9CX6tb77FxT8Wkp~ zwT*RM!VUb}#s@NrpP{`Gg&P7U2?Q{}Mq3EZ(muuwl0-fE2*$FF`VQgcF4(0e#_ zSVrgV0nyd&M!88&I-7_{^(fU`S-DFc{eQN;i3~YRR?>CcrsLu;YkTyy)`(M#fXUF& zn_K4<;f*X(b6Qf5C&iC`Zyz2e=wG3I&`d?zUAbzQq1G_ET6(y#vg^7tWzaS{#0ul% z!n(*K7m6G=llFJ}t6M|jL2D)kRq1ZKvSSP$XsyD5v46N>72P5*HVj)zb0@{sVbjNa5jW2A7@%*CBz$g@tht zPhb;BAJ-`34#qw3uab~>1_co!`sZhQnU(H9n3%Q%qL_n&;{`AX@EE8C<+q0OkAdJt z49t>U75gm~A45Zv99(QP4Xmvnz_Wee+YeAq8PqGhUVw!SJR?ud%^Gqi2R=;XF`Cng=C8(x$FpdcdVwJ9X&RU4L`+N!qwBIZM+lHYMuwmr zcvt!27o_?CaH`zZ4$Ig}zwN%#u&(g)*l+a@lMPSIeEtrth@YUET7;V8t5^3RU0(D5 zbmrpq7oc~yFK!zd8^6`gGCa9#igy9UyZ`4ijL-{1l^Zw$Q#&bC7+&FHO^ok}(80ica*I-TQ7XsNW@csvn`YZt&^00|LDD>| zo83U*!s22}=E@F-duu~O=~d-q1%YVEDgUcP+U%iH^jvhsD5V4{2kRwpbn^1?VZrU&F>1r8B1 zGBUW+hE!7n&8=ba0AdA&K1M~EaADfxpBP}|fn$BIoW?0-l0PUtP5Iad9Gg@Q<0k;n zS3&xtIjN%3=R9*-ytPBXUxfDP_*lw4&9yuOJ3TS+vKNV}<^y##wHt0*3DlKCLqjte zS4YHN_=(WM!)a2}(&V(XE@voTOz8OjH)i0OQmwIkzKF;&D}aL~`8jp}Mj@uHcdsDS z^qv{5XaN!x{vrv_h~~gA@eb@q|wZ$&e{|r-7QK7wc>jYvIZCMN#EX<{MmzI*M0iz!xu##Rn8_nl@{fOWT z5o{Jh6q4OMnfo9K!hKB4&sQ2896bGIfJN0iST?OE2gngecvM+)?2Gtsm@mH6Dtw1a zxrEoQ-8O8E{!~!Fg**l8ccC-HgVoyj6EKj6z<%&i&sgc*1DWbGs9DIY|IvOMM!EDd zjKr0g)MXS76>YA97)45avh;edpG0mtL zdEfv%o(9;|=AYIz85(+hlvY&va26^W zt7$)Lmy5=+3D9)NPPDXSL-Z?XrgHTIZag>(PWV~?o5!GlCznn{#>Q13f3X3T04{04_4^cBExDZKiJpb8@0y`Crf|~3 zG&ay*0XcLX>gXO=pDFAvdftKj0B-ESmMMgJgBy^LnR$hile53bk`}ItIIBt7MOs|E z3YZ&N4Gmui9>jM%LPp&i5ZAeE=#uQ*0j1@Oa#~9)Pj?4+<`KOes34f&zDZAi4v4yk zc1z)3*NZ{D1m6bYjAJG9FM2(3a@BoB0?!8aH-spR6@7upBIpj`v2k6y>gwuHB@CP- zJ0U_J-`|ACg4MyJEWXI6T&1M+hbG)ceGK{%;A~(1#Q%6Alxe#SwiWNeT!O)7$pU&g zaNQW=Hv;F?k%bme*hic<(ECD?g!X3=#&Wa!+YlQh5E_uP?8I*iS0=Oq=$5J&F4s~S z8nbi+T!A#dz)~8Um=I@-DStIFaTyYiH_Jf3Ivga!l?_w~od%o=%7eqidlFeCrNoEQ zcHHGFAZ|i~!4-%B;03My>3sFeaF=+uyA`0g_#DP%?74tT8ungfKpXVQEsf4jN2X>1 zQ;$a$XQ@r%K=4JOa&mI6l962q5r^S@)}_JxrWy7@PAIT2!2~DuK|MnRCJ8jLYTjOR zvGQ_qx1e={C9JBwN%PhD0s#82&d5mZA7EgSM`<`h=YPNa|CILS@l>vD)JTI=lIB8b zP$VfSDqGT|P$^@Eq@oNZL&lv-N=1_j8B$0><}&R{2$f_eb{R5-OdH!CzICf}-ZON* z?~kva-+6lxdq2{M-t*!t74TcSU08e5J>dV9Bt%+<@#7mobV+gsmE3Xs z!EqK6d49Ex-m%Y5y54k(63J#bOrE_;1sC}Us!4P`1DbTh7j_X=wW%6-8Q)z5A3bb1 z;l#7boxIF}bAf?#himB^G$O>G0``Ck6NT$;43)^0WX#(s&J!IMcL&GdElPzYz!#o8 zdGan>d*40@E;F7h1*~GLf>}8(`;sz8WFedgy_ z{uK;cbUs|nHxHXa=A;!?S_vCB9Sl;`Y36?O^kcU(}l^FrMvs!6Za@C z?!)(bHCCjr4RSq8ml%!C?mqhS~2u ze@xant1iA3Xz)&XZVCoeTW9ydtKeNF)MN6yEM5}R)aGfDDLEyd?5QkhI zR4Gye0|VhD7U}eb%!FN2>->6h=J@|iz}m@viyH9#8-^CWR$h#b2>tVnB?Y2XR``B0 zxZUJhAs<`Xws_gHxAL1HbWZApdxqF_iT1U>GT4U1xR5+bM9&MDWNmWWd^7XY>?-di4YQIYsYWd+@S&xMj zcAJ()Go~6h?;5-8L>iH3Zf+*u^t!=rD3M2^Jq|&Y_)U_LX(Id#ouLxxe(T~omwP*} z1zl{BICp4!Oiw`1tyZyDwJ(Fax2qVvr-IfbhxzK`{Ze2#5|(RlHVkh(Kw}1#rTl4} z-ta4v4E$t3^C~grsxjpfOO}iU*c#c3ME58n;#E%0m@VE@auLFZ7pY1}UKTfN+|aep6nf3aT1^XG3tu3ZcdJd7}8KuSFJG0OD`)qwd~8mV+Sf_J!1 z%o0FGfYPmdT#p<%g8Jt~Wh(yR4nRNEnXRp@8&bJoCa(rFhIpK!pq_)$pNQm-$~HYq z8T}gI*`V6b!HiSp+_|ev&!Sr?0@?0_rIpq9(~ZYakoH2iUSvxhF|@R?IePNJ$hl8L zpX-=LxoJlusTtaE;i#LAUZ#65-yGDwwx41YuEbodNDWRJWCE__}C(5>A`@cu&Ag6KNv+5p?Bkx z6^-ITL8m2`#Ah?52-;fOkLjTBv}t@P2G_)4gM&cV);~_VtwF{Ns&ULj&!e%Jx$@v8 zJl6^v6(7Y*1ylyHWfc|YfQ59l5B#NzAWsFnckRiYC3m7?MTW>?;a3=u{P=vjn3soe z0=Ywe+*O9#bQ_c0@e}8eX)1ms29Kp;oqd2GiNRV1gI?j`l;-a8Pz#SYp%C)?fL+c4 z{2I&>e$mE$5UixjB$as#kO6=f4cocIMCW~BP+;IQkj24Lc!}chgSJ+OVS6R`BX7WVc>k^L`Kd7w4E=G1e#K>d z$#jUaaG^mJ8;9a)`4k`G7=#ja@4kKKP}ssGaRNrPnYqkKPn%l#4J^4GaWESTd;0X9 zmGRH+c6aIcDf7?LXcQQF*2nTQG3f#UQuWA@C7GF-KLCRV%H&iGO&2Db7Ny`R#E&9U zGq~oVJAykLDfee`Q_a-0YNFOL_gh*x)&c8I>Ifsv z)&v7sjEgo>_Sohg+g_elMwta>JRoD$_{xXT(E=`6V!;33y!H}|&8LVdv}meN8aGCM z?zPa$ksmR&7hV8w70ty!-b@p;n@ocN(7QWaVm|Z{0r^3K4TX*XlQ8Qey&*} zO$cHD_S5}UlBt6QlA&t&r$90?4qlAtSuOzr)5*6S1$p@eOP7vA#P(sB>|9-W3(t4x zahew<9UqcqakHQdPBozGa1+ZZxGQ_X>n@ac2je-Z7n$(6_Ar?387b6%^yGWp4M)U9 zMeCXwYdj+}3POg;N||?<$F^)41A^E)j*>V47F2TyL z;nYFyb7_Lz>C^AONzVzDK#83v)_npc1#qHwT|%iT+*C$J6ymRPIj490uunVy3+?`4cXc;<$-m*dkqaw=qQ7*ph;ARacodX#Nl9a z0U-HiwI9&eEz6$#rh-#jO;IvFcNvhvuRe)LlyR;Bjhcq!qVRgnFia@le;aV*CNU(HsZ_3} zfPpSe*C_leS@dex+0u)cfWe(x82!+xSVEnkV5`+lQ(ce+2g<@CfJx=~z(1aDF z1}4H!6~(NA2292{z6=`ZJG+dHL#i_|=2b_R{+1$fJW6ZCZTlW2WmiIqz{9@?VI~oL z^%o%vg;y z*ZbX1LP{*&pp#AjzLAt)b?rB8DjZf|c>+u|JR&03ib(5`%RM1GDf$xZ&sgKj z5{WIx4?)=n(9a9C{lRRvIjG6kj2PPv(tw`lKn(-J@8js`&6=8105@m2?cV2P^Yxj6 zNx{(fg6B2q4$@`E*AnNn{xe)xmvXkvLC+8nT);QntE=mcY)Blk&=>iP+>PZ7f7sA% z3I-`Uu$j~gci};d5$=P`%=svjz=u)+C)saM7U>Y(dV)T^g5&g=gRBLrN`X~yD#N60 zsBzdceT$`AVg=1*E}bM6K=?#9yX~PcL?t(^_aXh*be{cc5An*Z+Tsu&Vfmv-G7dY8MiP^YYX{q2F z3F1N76TN?epkNN5h52_D)ToE~Uo8%~8WU%e08QV;aCX`t;K!&R@-KM{Nz4(Fqj~ zsXj0=e_s)8?zY-9vi{LxWv6nQ%QQMkS@1wbskkLpXA!hOgaz2P{lcB+tkVzF)CMzw zo@^&Z6vWneWAEEVR#U^pQ1S^!@~GA2xQ1PRYsuma((VG&y<4zGSh%i^dbXFer6un7 zc+j8jP3!sj|1ROH|MaqL^KBjC8;h1UqbE&Lt{Ri|@28_Gi~FYHJEMdOE0opj2XW^M zaABVM7LXwy`l;15BIOuy&rgZB~55roh?c#P=+h5b|YEt4)I`G_AnSTQ96<*4pqml zEnCiq_x@My=fK__7Cd1^rfQ|Zo+DvP()&F6g6KQ8ZM&G8h*rxu&re(y=!D(Sk3-Qh zF}E<_ev5ST*rJ-?evqBLHMGrIf||NFZ=UU2ys>7W)e;h;kYvMU$tJX-cThMCLj%){ zXp#uCEbkSxs9Gv5w|&H!t(FBR_N^YQM)4w85}PYF!!`eEQ5LPi`A)}y*%3>#afAG4jI!>hMt|OpzoJV^Lhtex}a&Qd; zvY6`@EgA#60B{LNR>xzTpSRTR<O8VkQgYFnHKkVdDD=qqBgO$Gj4y`n zO6J3x>NxctB8RlKMd0!{5#baC7|PHY@87?V>;*}ZsB;WrXQJk+!f13$y}YFs%X-j+ zJ79v&RRx7iwbSi4CVPL(R5{T>hjR<4XC*W$6}Sx1y7<&;?Hq}OaH+m*2p%`R*Df@j zB+^-^dm}7%>*(rkd04VcN__pv1>iqg>UcEfO@5w{VQ4}T+D=yw%aEESOhj|Y5Em|e zAubf43tWImj_2iead*O(xPAL}SbF+gbZoEtiYdjqDbo~9-7b205jQQLThD5*&6eXs zGjg;KI3J{_rVje3%mBkq(a-+WNi&p#C!+=lT+YslIBKgvz#*HB@d-)xxz-jI7Ag=10VSKC=oV2+O*5+pgY+smu>p~OAZ4SW4T>ZaAsowlgkkTT zFVf0o)45*p@v?9XDAH_ZyrFl+nfx(Z!FgP6LosXy-eM7DxAbGvGLqAwbn>0AXqFV3 zMip~uT?i0%%Urv^cXJKF>l5QZR7z&fjO#*8q}MGqsMuF z^nS=tWr0QQBt74Ge50y&?+S~)-G13Hv0bM)ry5U zLJ3efZ$11VAwigMEy&al-S~1Tt$)okaEx*=oQ;hS_4X35AK}8(b@sUPp4WDj2{x7% z7YjkYA{XQ|(0%~26Dfnp6vGu5=Dh!gtMjX*+H7bT)L@;O!V0nBW?fgQtf+7dP;ts+ znnyp466hzyP*w|-BZ)fmV@=I*oj7?81LL^kVj>plvl@=-HWt_9&jmOIN~E+DG@YxY zq@>;zN=r$>lVfU3M~n9Qx4+Pp>Zxj3rWgxsaxo+7t|j2_Th-&AfhL(J?~V~6+RGbY z1d@dwMt;Ugd%^q*@HaeeB4McIm!QD0k=^1Qbwj_jqGBl?0-quo znV3x%4GvPc?{lO-c5-RI!~d;fxax}~nj5?E3=s~ly^<)fowk{mKvG#Y*8~)oix7OG zINz(SeIA86To4-}b>ZRkELxdjV9nSc92eJHmGSeS8$-|qRQUp`6U>6hzzSV$WG`G{ z7NS)_rh9JJJP{RQccI?|-mt{PX(*=hQD$rO-Oi)K9)yg;Ei5fhwa&0G>^v63g4-9- z5R!%sJ;u<`nffsrPAisTJVGq39>>L9d}XS#c{49qG*>ZRSuTa;CvxCI65$+L6ZmuR zLUy-ZUEOD3pl@n_ut;(&d*m5U2{Ss;sxxh7O zc{WfhLgoDejDNF*#bf=E<(FvykYNLLp-s81>kV~R0$m4z&eqa$Gd7sC$vI-sa+D8m zT1d&Ie;GUtCL@^;b)wLw{;Bn68Yh>!b5jfF{aMchc`Rms+9m5SyvXt{)rOx`BoD*G zRWT`vc=YJPwasddjhmoevo`^u*^|h3kRg_%(|7__*xhTYqXhU%Pj{-T-y}0S_~<1k zC%?rDuU@8BCPU;b`15v3=HI;bA3OCQ7P-FWH0q;zFEw-5`}S|-P9Lki+o@GHNWl6V zw-#GgD5r+aqQ^O<-Q4e5PA99QGV-oosgFu$PN9|jVpaRd(! zX;ymr`=_J*(a&~!fva$@(CFYna|{rt2@5ZT$ItcW&)2`e4w~qVm{eqgNLAVocHDA| zu8wv9?Y^~f=*#(r=H?}ok?P_{+1d3^KZA1(`r%@%Ody{Rb!P-bV^Xa_us@JJaElfJ zSa*z~3OJ^)(D689a6>SC^cT&sY4v8_3)As#>yXQ(adtp1mSGTrw54 z5HXQC2M|2MJEyUVXm5dcjjx7wxE%RLv#C^z;*X472=J;2hk@A8qgh(zZ(E(X6`Tc# zBnnZ4H9?to6P0tm)f_+s{*WW?N7h`5jDHiuGO3`S1Js~MP|%JbF-Nu$t427O&Zl@B zgr+S5DnmjDx3Br&N8#uJHe7)5#!VT+)O+8s7|GkNw`u1vSf9-h>E8w?FR&b86rp7& z{Ipx`l}5)gUAj*;8sVoZ^XR{yrlk8KOra@honnOk0agmxv?`Nqdxn#;T;U z@76Wat3_IYWfq`->#9*$>EjXGx(Vk83T6ak?; z^e3`{s=MZUR*zEf2YIq$DyOKZNIn>1FM>2hA|*rIc{r659xhSZ55CUSsZ&3;)%BCk zJIxli4f@dwmQ37{quq&VDJ;}t$)z0q_SX`8j@IobYDQ8b{FVUnpA85%w^^?N(o8h& zD;xb{d+4l8OY!;fQP)@UGa0zMCP2>kZ#XpCq9 z{zXiAI0{5m2Op28U|bq$hv#JDkC$UkIyiX2eL{^NGp^t}l~q+1r$)dee3u%J5s4K$ z^-g^G@eQ5gTJrXkB_EBJOH1eYdGs$rPH_r2XlVEW;2#;Y;*~*qHyJH<QYDS3D)=tA0;W>vGT7Cq<{Q)7R%3wsl)M;C$MWYPk= zPQ4W^oAB)3*e-Sh(=G!Upeui^HmXy686#n~G_JnduOcQRi;d`I2h*rhdvJ`6ip19* zzg^9#GY)O_xbtsX1k3m*o5EnlJd7Mx7^dzh4r5VLyrK5s=mrZy%!L)i)B>tbWo_hZnD!7Ap@oi9iLi z0FF}FgFwu`V6|!{^;@<>9A({|J9l2g&;*G1G8vh*(zPH=qc8rEJIe%oq%Qz{;Xs+% zK+&?PO`QxiAF$Cp1hnh0hhVrH7EvL3ChZ7epZWX4`!obghitzNMZu-b6wM)O{h7qe z3&s;4%!2<{sK^EVmXy#rm+Ss@rmrJxQeFcZ-`#iX=FMj~17#Hz4X9^fDj8_h8Iyd! z=gMQJ!{;J~3Bg=5Y74qWuy+Xk3}zSm4;;{!X<6p5now2k?d5UrA^-LRAf~PV4^D!a zBPDTJrimAv$2YffDTMY;IHu5c!AFJMiz^P$i(G?yN~!z1PT*K_u$Dwo3McC? z(NQ7bq@|r;4Kg^pW>LbYZ=jl6#<!Z@IGijzt4SN1RFfD-Zl!A$$7Sf4A{!H%)rW`blGIdFesUBVxH=ZsSj!{wR-0kQH3ct zL^ineKZdE0DrbboHALiYB9A||OYDb=z#M$XO>wr-_jRE^Y|UN`N-*JT6TUP;-t=;$ z&>Ly>F1rY`6%_$s$tB?J`BcuCHci6BeZb$6Npd1MOiA5fU++X^2`&lIN`ZbOWt<%$ z{Ufco_TM#0NU$gK0`e;%0IVcKZPcv+%I@i8OCXf(4cD1>$aEYvWSi%Bv1if(K%%)T zkg&o_+nO*h36lhr#G@$S-f(81!>?AZA!{3vNA3;HbVT}|V6i!uTLyTnz zry}ycv2bJsC>FP19G`3U$-2XFcDSns7PY`6q1?(C18$O17Y@ky3(_NDm@}wk7$xmm zICDS+O>q_+k7GLvFFYbORRnVYpDC zNV5(ET$icu{FAHK_fk7l9-Jt6(yj?|0t*oh^r;>0yP7jgFmdmSaShvmk}-$Gwpc2N ziWuN|8^`CPdg=jjtR_VWI3Y3X1W6ts)%!x?(T7PU**r1?Ln=AU#IMxO#|Ro7r;v<{ z%+cS(Xni)SOk@#0GL*(R56+05STxxuX3;J(MO=9jBtT$+ghxh>gMO7P3P2w*eZbZb z=l1mNslqq37k{i!RxgslzY&5J)r?p!Vu=j6-Fz@2Mn|E!^C=0~m|}jH=MsM$EMLKr zSTf$i%unz0H}tN=0}p5LXftqp73`~t=75#8q5L0+Jj;8Gh=rXFW`VFI^iq#dg)movfH`gVRlFrA$=j3 zH&@a)De?*miKpgIQi-biZTC6TPs{1n56q6p;w+>-oWtwrV6I$xOLU#UHp8H4RM*th zOdIS#la%N-Y$q^b!c+*MFJB$qoEW7@?N4^^+(hYb+_ON!6)5Xl8mEJ{T6jtNcoD4p zJpXC|v?8QfjDGTj^gYi`x#*KkVX*Qf4J>RJ?67=bv@Zmq3j@icj&A9VnBx+de7Kv- zu_dY`4TeF$tvHG%mYa;|RvoMBjnBo_Hex)k1mLAKeJgB*u)kIvfbH*WAEjGl3E zX+Yzd5_3Pj+qj$NTScq=g8;D#k1q=%GLY$8D-yq3(z5Rx=+&;n19=c0|5o)V?S5c_ zu;GygTGbl?0hS83;IZCYXDfzedlCr)E$4i4$Eux(Dq(986^x@ETQ0*^r^q^(qQ(zY zU<(9_%)xFy0K&jYdg889POvLWYV-L6ANvtADztBB36HeA{43TP41o-7^B*j?Xx49q z3{HW!2$DwPRRcIk7&8xniXjIkPi`#@a_rsr*9(JIfIx;NO6QD5o;+f!@spxVGb#sz zCvSM*)EvvJ2`c)Uj8hFJ&JcT5{{YpCx>3Lcm9-&cbkCH0&VtOFo4}x zC%}(nCb(_FASK`!mJ-wiMCn8Ina&t-5__fPUlWgAtvyZ~k@GahktJ#nJVAg40T{fy zuP7qrKauALZe{}#2ciAK4hRJoHd$R-dDw9~A!g*JvF|CYU5jkFKq5-8oX{Ct#1s03627V|ankg)!nGOdxQPbnXry^vysT za+LhoskHPXMsqvhT7?JCnjz#IQFh$nZbE(q-ky?mXqJ0Snux`ATk%lXU`R+1hXVi- zpK5BPP>u4bfIu32bY#uy)lCRVt6?R$eC5hJB=D%K7jCNbKrv&qGG9m0!34*YQ2&YC z3lXyQ7Da-80jZi{&R>YNNC2Vk`J)~x(AL_t1nu)`9A*@lM@JOFqZwlkQaq_2v0WF? z6I#R_Sb0^hgr<%J$E`(!0|SI{ndJOaE+9>8L=d2LMwzZ4bTwm|7a3(Yf8&`wCB2Yv zMPMMZ-TGrZJ&S#CBHo*bMYwXqe>Kekk%(8Y7@$Yjn*N*8kh`D;%v(#&>T2#UJ1G(fWB->f`g?XB+B-M2Erjs`Gc%ygo$}NWtcCbD zaUnPx3-10$q)1~o^ZvmF*wCGM9%i6hK#aoTQ;-}SJ7aD#l2SHaY^uL?@7^VpVRWao znaT6O)FKoKdn~49B!_;65C9a3`#@?W*1VNhF0@zux`WI>2MFmV1*d$ z!ea@*mjs0(jw`Nf&zb6#wq@C6&rO|_P1Q3`w2a?Xn{S~}<_%r(EF3_Pvd&}KarI%p zx%1|MNrC!J5G5QExaMGH7TRqv9TuaJ2!Hr60oW@Z$YiFG+2H3`~2Xu6T}Z6bD)z=zgQZy zIbz={I$a!%l$`6+I{4HR_9QAnK#YR8!b51bzN;@t`X@2J-PsiUo}*gLdm6y?LDM84 z=JsPVVa%$jnIgyed=MX0<*Pfu-JdRllX54uxH)tUDc)RI5x-9v#;lDZg_yxr6b(9_Z_dUITIQ0Gfi**j9phP{HYsF;D+L`#j ziZUtFsc2Zr_V2&&w?*mSZE=48+uUXaQK8wPTbThZ#Ka}PmhQbN+jqRY363s$O%lItg zV*YeL1Ok3g65f6DzjH?d7{J1Tt^D{tGV6m23fV0Qc3P>^Zy5ti95&Tuk7Ti}{k?xu zA>31`BY?kZZE2miRYrz~muvcDw9^=QG~_(OMm)?qxrf`?(etX>FEp0Z{XM^1GntOJ zPjEc&5HWq)Mr2gTN2Fr5s!q&ZsC%NdK5Sp~$IqW9@$Ash7|SF7v-DUvfb}3d!ML9W zN*DN}TcC{Gc6GKV%)fYfz-EFPa=fsdJ76V3K>Xv9mLFe>F3<}GYsmQ^J2iqWqmV*N zBCFhfQwphr{K>8i8Pe6$y9A-s!|d#ko}A6>wD|n-$0#1DOj?pSt=@(PTn>HwB)EMH z)7IzMbR0z97l!N!>YC)#)YYC{4|$V~oW`8}#H6x2Ot7cSa^hS>*?d$a;8~mmK(HJ7 z5R4w2-ZJXCJL4a@p)gstVg-tM_(TbR`w)C$;J{MeW*6F zNr$;9lAKLFZ$!>?#HP)r%>PUsv2$zP)kEL+^I7U#2PhZfmJb_0JgZf@3(e93K%*E7 z7}aOw^E2zqdfK}>^WWBlUdMcQhD^qW0jMc<^O}KU`S|hURj?#_{1VGT=O?-krq|n0 z4Vwuy#je>$e;B5F*s@nE$xK@U1E1}BdU|PfSRl-0LLxl=D6m5X}wI{1A*Dbd{vd_uo;tCC8ce{{%bsCV%fLqd<~~ zI1*?b8j(*`G#lx10AVS$F#qbD!zso6UL5NJ==LOW>f0Gin{Jvq3)o^tCWdI31di;t zdQnSmo_F>%ZtMW{*m@7AB({yoIv(Rl`=u?#p=5CiPz`+G=#$+T#-3e^euryx_0JYP zp*v_*PW^2b?!ih8v6mFFHFvP13(x*5NCj}F?Wta|`@)0gO#giI3&PEar$3t(40_1ub-m9X zs&40g@L+YRjX3zM`JVcLxRw#4V@oDrHlm5mV2O+uv23~N@9%|@82OIu-NR#}!@YXM zmW`%;5$FhDDw2iXn7j7C-6WvUmbQKEFDhWQU)60Z@mjizyJ0i-P=-PaG6j7+Flw^c zwwU#?6Fct6>Qf|roFQWApy`*=@xO2g5UvOxhDvt*>*=X|!8+|ZnjIhU z{04~`g|g9D5ufMLl=mysz2Q$6BKw&jQoRIO80cI@D6*TukH3RHTEX{L)r-?nWHYQm z>>X5br0L({$HkP<9BXjM6dgoCJVeCDM55Pk-4p}nq`C4Cf#FhvxW5%|0z>6XC~}CA z)qw*uYE3q~8|Js5Kkdb;$SY}SY50}9AZvYULNi9dxi2*ih6x|~8S1V@8R3t(1CQ9% zRO`xaOT~fu9_?wA^tn{`LvH=whD-M;(i2O(VL0{`ou3*=_NbxAT9=J@fC-E+FJAy) zC_ljf5F7V^WdaT#dRMicpfD>@E&?S%9#AP^X0r{G4*~&`wPEe6F+ta7_1>lN^AJJ^ zWN(DUkMDr6BLUzGKAFg#QI_W5Ms6{M+eabnlfb~hJs|&sEkYcZHA^qvTB`9HlG~@* zk6-FI>sk%aLQ*Lswv_{}2AWx}tlMw=;_^b1{QT;bsRmNe-K&v=1c3aNJR7O>FpNEo zDquvWL^c}ao#y*T%8Rcp`i|X9KU14joGacp$>v}x^6(HA2RI4xBOh=j;k5gK(S6k2 zurUdP)w$R5+G;-OockQiU!%kAxW+ifWz(3OWTG~Rb7OObA{vVW^0wQCQe^Vv91UAQ zkC8(szh6fu9F!UaD-el|DoRH65$27Gp8rr>q-VYJ&8NUHofz94bOIalrxk+W%oSwi z4t`omSs6cQPk;$({BI97GrBe1Pc$aIcrl0W);BrCwM!99r}F~I=Qu5I@ya?6(xRH} zTN-GwLl5j(ilsxXoqdubt;%F@ruY2hLZXlXm}Ng)ck$vl6b&FTT$$X${~O@l;e>OV zI29B-SX3>PlA4HNE~I5=fX$qORzTB1P*9M((Xz_QAQ{4kmM~-DTK6-7sikM{~#H}40yw=SOi1!Ulruj}iPZ3Y%+JKee3Q^-IU*fvTRc?OF)(}M znP=MlbVwDf2Wa&cR0f?JLoc;UU(;ik0$ zNGk0nli^FG(h#CK`fyyMDr{r91KV(|I3~D@+THowkUT$Ecel^)$%QiZbd>mABGVoQ z%n!+T4+630wdM=|k<`Ra=yDNZAaXKA<@>SCo-i2<*ONIj^8;QyK(xo2)QMxx!lHW- zHidz5eIA_viquuO-3XM=eufti+7jSUwO>~^2PXuJ1EIUmgCO^QuezaAQ7p-1m8IlC zN%znyigxk~-PH4NLyO-Cn`MbXO0oz>Zc1cNPoM{YUUHIRsP(Nwr}D%l>imF4{Y`7V z>(sdiO+(x^EvhQ;$zMZZI87yqPb9rG@w1e%G5jCcQ|dPryImrb`xd>%<&9;g`WAzK ziVnaEjAXKu=1l7Y?;qe|>*3BMu`V+ij)@2A4~$5)Q8!sq878%(anR{!95gYREuQ7f zNtUNKht3#n?RM~DC`+>0|6BM-GMl})9XvJ(&`cD`*hsQON=hBOzhvR}VKrYe0nVdv z{F;?wAcF*$2;{~%+C)cZDTYqL^~qoqlC~{rXxtO*h{x#aH)QuCBhpXlrHzg6;Clg< zlM(O(dUD^eo# z91D4?jgq9V0dXM786bF0rgPtX11^XW@?*E25D5JArW3=8+2D$kl)qg}{8-aJ+OHnt z82SNLhJD*K?ANS0R(gxHVu2OX%=#7W);|UZ0vX0MAlaWeM2sK4T7#q zR(*pLNYP{l@CCNhIT#ODozXPKmV;%|(rbcrk%?gs=3P!X`Gp5H$SJsuc`yF>lTB_# z9XlZE>~{YKW_Up9Yc&O)!IUMeGVFMsjkOnO*_EJ>oJ+tID6s)g%qFCtIyuuKF`0hWP#4gPer$Fm)Hw`-8wrv z@=fBW*Ii!5YISdQ%=xpP?YUFsHS0#;xfwfk#~I$bToLJ;?zQ^p+V}Gs2dO0r+@<-7 zjhW`hSRP*vz8em185|kjSnT{^F!PLWJ}IZ5z0GOtS&<%G+V%z$gal};F}El=wOX1d zR3L?CC<(mFEr$;u-lM9o{#-v+2W-H}z=t1l&nNqtyER>Ue{>5%%Iejt!}d#oCw>x- zVVJG3Y_9PW4sqe7a)u>4w)6L```n|?eK?O6@m<`mOsL3?WnNQw1txc(2_Sd!I~=u0 z(8F2WonLS^*JfdKdHba*s`HVr9Y>b)xtN>t)&b_@>X8`g zm@#7jWsR9XW&B@%)1H3M`~5j~^C`n~Hv~Y z#mIkBh4MY=_nZpwyi}t1H-Hq^Po2OaHv+5N1>PN9b8zJ><1801$c{nt*sY~CzS(5? zh-teCl}hoz%H*+W#{+0zTWpsNYh)X-9x;Soba)?8^jK}(e7?Y3730srK_C=|RtIF# zKx!wk29a$XRIqOg3sqsTv|DV28DSt`MzU=BL~x?uVKY4Az!iZQ)9+&hl2!bK_+8#C z(BbS|Tf-4rr)>8P*%l?|o@LX4cf#!J;17dz6^?(RP$Y+qi56ML*0KF|uT%7|*W;)6 zQHahQdeKgsBCznnRMiO!H@`d<_Vcd~&MqDO%muzc@`VdiCt8gDkLt32e#0J>{AD<@ zX5f*?4MaTme+gVU7iE*zzUb-jF`h!3nO$jR*m&V|}`v6Vv5RMkt^ ztOHD7AyidZZ8;155o#pzNn7!(tSmDGe7PXql78y*o*QHK4GU{>`WXx#a5u4udNDFS zu?@&Y^Lin_QQ!$zNL=|69xOrF5uw@G3Y#DDuKU)h4$r&%^O;a#n!*OtV;0l4hxtw@ z`pp8Hw0XdCFjkTqSa?yd1z@gThNFzqh7EG-)_DV!T!4PKRn~cDb<4MJ1ib~9@N7}@ zYiw2^CRBU&d|^*J0AI4a{QR%>N^;7|z8EZFKIfWG$d61W(`Ygrz^7S2oUGy0TVa};eAaK63VejYXln~t)ygnMn(Wl_$~cp{xPd81j-%x?w*c@H~g|C6yM%J=Wx zQ^7ClTgNv%uWRTjmmbNHjTCA!F1_10w9{e9q7^d*N!`76tygsPa^mJ-mM~;hT3s!G z_8}l(&P0mj7S!bN>b{T9)GZ5$8+hP= z7yMH&-Qk~dCEod$lk0zcdp{3IodkR& z@u#0IG5T81Y!pM9ShQioJTbrgC>dEIq>ZY1LLl7X^LD zZS^I9oPgpkEZT0KozI%=8-#boN+wJ%7^XjK1I3P*-e8*g|w>5_FC@O zycXADy6uv%?c26tHv17IVeAQi#_aCy236?TU#^beR`E=5yE2q`nf1P*Zr6g}0ZpF{ zP`v@QUU+nLLDb~X5X(V*<#g$a|9f+Ivwuf@$wV*bcWs_EW%)=yU zpRw0$YwmUlW%_B3hajHC3ndoQF|lp{GSz4U_%!qQ zh#3d`FVB6^Z-8-bnF|<*9|sAK1sY0KBO_7pk{~!74GE_Cl0_nvXtp_7EZE-u`t#@c z&{2Dbgoq(wKq?);F?^(~ZB#JfR>1{0t#o(e&ETx;Rmq=<PFiQb-Ed-$$ z&c~5lzOt4BT!$Sb$EZ#a;8Px>@$;`^<$va+=^uY4qCF}iKQj>TKfd7tpVCD=Q2FRy zZ@q!z`vAq67_o0Tk$B)Yo=-&rnt{$;0@_7DQ9ejdR{$Ld_~kd&A$P0`fAT~f=^GV= z*DF)lhKb_0D7y_Uz!sI2;I5OLgpk;P;#@e$AqSW|QP`_S>?3m@)M2E`L5Prk zO~X3@D!F>g~b)JYpX-!xsbedL2yL@6Kp3ky<%t@4>Rgkqzg*pYvuc~fXcq6dMa=I)cp-;S^1@33Nou!-#zGmH z$%tUbqA=UpiXA;ruY;W^w`!G2e!&HF@mH^18-6-ZR5TZzh-z1!9DB0OQ09X$Yh zx274T*@zm`JhD{6knpxzdn7b*BdRj$Y%<-3r;+^^cnozfP*ICq1%*>@#Z06W{1Iwq>K+$Aaqo_d?_2lG{duRka|iAA**mT*2}LS(Ab?M4-1^hsCSf$T2SPh&5}C=O zkO;#C`&`b~mpI+fNBZCe;?KuZt5qKCdD-bWh6lU`9v<90(32Mq980P;m7iNuQzI5U zLyd=rfBsIj&HE?v?2+=vlYah{>DhhJ@DLv7G19rtjWs0915di&WvxqvEVK9AS2cnQ zGk0Ogg+V&rlC{D-O!eJ390(9?IXf5nhwkd+cCgP6&#O}Y?3kE2V4|*4w8`T}AlGc5 zI+VIR?8wFZMzUTI^U|+9XBMY*x3ygkkX|7jeb!@X8Q;+qg9MBu$rLq;i-F%pcjk1Y zF>IFy?VxAoyrB1plH;HsL-~!yg=`eAH`Kdv-(&@ox}1UY4;gPBkQRu-(R!FtjJkiLD`OI9|8R`8{&;S|9*>m~RO(-@Id>m_^8ChG1;ZmT#T?cyUYRv`gCM90 zoPYJKHK61!(oo3Q-Ah+E3aZEI$VS62Qy4*&xYv4k)MqH;_=t#zDA$7EPtyYhawV*pP{xwyKzSJdH%&AyfwHqzSBAp!~x z@iN13ZzMCW6=bpA6MfMk%$8rBlUd)DBY1r9&FH4)sb;a~Dm8+&bs62HUW0Vm>%fxFh($U(kEjGvKBd784_g_TwI9nFB@ ztqOX7a{c`J?dvfa=H)?bAfI?~@XSE_4AeDbZvkdJkA`FSb9Ys@w6q{HjnRpjftP|7 z6gv>MI5-R-Mq$+9!FL96%5eDwoV(aX5%B;fA*>xC|xVSz|{kh_ya+K97v zgqPkD0Oh!z4(!sqz`U1ZV{7XTU=fWTnu`k{6@Jck5AwZ5s=L3Y%RWOEYsOhw?(o-+ z=DtQ{ESa38VDtGB0u|yuVKid(6c5kmbO%99zbAU}0X_!@O3--T%y%rECtP&pzv=dp zich;He5c2U9{Kz+^&VKWYJ p*ZyqJRL`9){;vf2pBZ#me8;Cbw1iuZdOY~EbE~FWoT}-${{u&R7773W literal 0 HcmV?d00001 diff --git a/docs/source/_static/images/distributed_estimation.png b/docs/source/_static/images/distributed_estimation.png new file mode 100755 index 0000000000000000000000000000000000000000..e10431d7b2dedd1ce41a4d6b59a51f5f839308d0 GIT binary patch literal 69683 zcma%hWmsH6@9(x)fl}Pv-MuU>#a)X-ao5F)yB7Dw-QC@bELyadf=fQJA80Fb04#gqX67%%_;75EA2{U5B7St|hGF+&Fcfb3L? z&gj+a{rO-@N(wu>c2-u_#@g!5+naPOM2emL;{5FOZftR3o}EqV?&RU_dR-%KlvOSz zM-iY807OI1vcEHJAK%tiSFYXOo$qe|_>%8WCmL#>k1lSvwl~|`+6@42JDq_;L&H)4 zK+?qZ?Dcck;nT@T^xFEv`p(he(b2-+EwSk5Ke>8dEt?G+ck6Xd54&x34b8<%w<)Sj z5>RiVp#zV13jpEQx7UrcnXISB$G>wU1MAl(Z*PTVRV-SWck|$!>C@Q~=fjoJsoiTf zHq*%zh5Y>I@$tv8xL2*T>E)CAYImWVmC~`^#=*JGz}^c`Qq9T4)8zaT8*elKU|3R^ zf4uhCGCY@<`T~$mU!Hgj$!|%Md#mmk-FSKPWMgH50`&Dhv9r3ki?c)yJw%#`ih9g4oetVi!9zm3A}$xSyBss6;UU zxGh&nSvIbjmGP3@K0KUmKiTrVr&jhm8vsE2))4wy5aTtgN*L_t zS(o5IW&a8pJTNQ$OXJhsFwzD%kB$sp?hm3*4d6yXq8EG)8)!eda?fT29R)(_Jiqm&8E+=KY zUR&o%1US{^@7jAH05ECuLl$sJ4DP%D%?kg=2XDu-HUGS=o5bhH;+Q5BkaYdI`h9Ln zekg_mT!Z(yWjtUtr`fyTm;E0@3+!#b3UhgU-&!0_8}U^WuF+<_!VK$2h!~O=;bw)% z^cjxurbDn8w1gSxXjndxvF`WeQjzbA;`w3xz_|H^EJ}7b&>Q)QPD(%FQ(A}1M9bZ& z+g;a_eJj`2tN-rG#hU}@tt<1dcG7}J;|Mm0V$+WU%QVi%&-gC44`E>eLmP7RWx%LL zjGe))S5E>MfYY9#PQ#x&5ohp|WyM?M5D_7d%gpKuDx0FftTD(KJaU%iv1zR|vSxBvV_F0=8ULHIRP}J+}t6e4jjn{Xdfd zh(BLYaqu7_sARRsp{h{OLhJsz$iEsTobH$?)C)vc^+QY-E96r4NgNP)O!I&o<3<5w4yir@3Ykhruo9uNL zi45z54vUDWl2tJdOD(PJVXDou%bS@N#S)|XoUpTDEvo3QC0+BGE=lsMl}@+4*PLGV zaV*Wy?{$?)(@GCL*^}p=P#E!0N$L!P;KRZy=DORJ&g7jOGbJ*Xl{+YAV$n|Fy}+>E?klEvO3QIz4{e}sNK*}e(Wf+)^O@>Y%}lTM3(Q9W z9@_dn+nlnkihUsSx>S8rjp2N?5WUU>R zEAZE!pA5Fcim$Wa$`OY$!+Keb+4Q9Emnqj0I&9h4wpJeUW_fQx~RG zBxU{}zv0TOQxP7n^|(FD<5+UvUty;`9{6VB^TDFaX?A&kKH-YoUL~_Xpl7k2LQqW? zCU*4KQ3XiDrft-KDo^X8u`+(fT08m`ftKvjsu;5F`IZG)ERStsvi_L4w1r!$?QtR# z%JF=at@RX<&2KP)hc{CZ&T@*!tF~Z#aHirSqx!RB_>Pt>)fbcxQSJa-dNJtbW_aiu zowX1pmYSbC_I~gt>$Q2_CsmQu>!X z<|`X%xK1bsi}}XMlkp|U8QWnzU)}d{se3ZlxsfoVzp|5mY2xux2sMDCBXCK|0%t*h zZ&Ru){D_@(uH#OD)KPkFSdjpKeTB{ z#|~PJtS0=<}(E(ESv(Vl4Q21)d`zm$SYePsE3~O8E1#qAMN6jU z(DwF^Dy`P(G92*S?<*=e@O+9dTObL@pE+;QdWPX*EVDYTy0o@iYdock>6wg2i!bmd z-d7=1hd8WMQMk{VWhcu(u!4?yfvfv^0Hagzg8=?r+a_*^(18&L zUJmC+C_f!0>V&UUmk-V#JPXpOiKR4Q$X3L{wDLk5 zByj9X{DH`1XrSH(QKXHynI&1Wjs#s~2etx?6fx|_b-f+xA|sgd%Z(Tj21{BgpX`J> zT2z%Kq`j+$d%aIl8(Lwe^aU3K-83s=y_xHC_?&*mb$#rhUd!In-yh95jqwH%S7C0u zE$Igrzq@jw8Tnm}?h)}EaR-{M(laT&?2>k0F#U;fQ$S}ld$UC4pPHOTLp^m9aJ5kb z659!wv^z%BY*=TmXriS3{T+20E}AAdNb$Ytgps5FR9Vz(-qPXKg8K*QlgD4->OL^Q zAk#0sTbJJTnASOQe=b}fhapDbrS@#G<6OusgQB*4wPm?~#K&Y_CPP*fZTY$h=8g{j z8+OIa!yWL&mWC2Ey*GCe`MW+m`S}r=6(Rn;71qWElp9fJx z%z@0%?!8w`!fxu{>W0{5%jl6^LLVE$-Sh0+>lQxUB31=tJOk+ zOmp3RM}k-#j4G$tX7YojJZWtp85Fb=Exqhjbch)(W#MM6V3GfD!)4}nT4>w%hOJVWlH>-Z%L6?_<4+;z zsKq~U#rQQ7JWbpN3Eb_P^S@w+o^%I-SmKUSIl-((Jn{`c`AM45c`-7Vr`|b+ImLwB z`!o%5dAPpo@15gSq%P|emDPbqRNUfdvoyT+g~!<@m!0396-}%;=dv;Zu+3_ta9|L#n^#PWlTM@e7GReouej%KdcVEHwD|QxBO|Api7gaMq z3|XXxIS&tr;d&P3Rt#ji-0K+{2OJNT&0ZLdBzgNGU_2W8pTro-n;QrU1s#1q61QY_ z3}2>Dmu%D9%Y%Iy5D{hrKw~%t~#p1QghkeeVUjHd-4ytn?Qw{(h-2s7EEhPpDXbR(ojl1GWDB-T5!lRIO{n&andJ}PN?`OOQl zz%VQ~yP<8Z%WKMMs%fo9r#YC|H~gqZG#Ys8%3bkSjvTI_UPHvx)7quCF$`}HX{>xQF!57x_MXNzYQOGg2ButvzupZNr@9s0s6*P(`1an!}p zSlImb2n-7OfvEI-Jb9%`07ieXX^MEasC)v`>LA+iG+SbH&&GGj|`Zrsav ztNzw^Hqs$hA?UkusD9)gU0i2$D-<|2KHupLEO8~e@ul|_6 zuh|uMUm6jjVB0dl!nJCSu+jDi)#rAUk=EQ4_Gjf7kKk?@4{7{|brW|UsBCkwr-xI_ zx|1_tBGeEcE;YBQq>k;)I+;Q^)E8~M8z`+h#2!47@!ta;A?KE59Py3eFShhp zYqEIn9w;-;Ex&jgB;l_cx*9u9R+MQc>>yHd;XHf1YPYE~%jW{Fsd2{c!h@BwWlJ_{WzlLt z+o!XAR|%~;#5UHZMd~%Uw*186CZ2-KSC1#g*xrp4*;=+L6td~|dhQ3+)(B`lgKui{ z3qEGB5&VjS+t}oD+xMPSYAsg3cuDh&f1+qfvTUdmga_~%avG|c_|>JgteqBMo4FXL zIM$9~QQ8EZEb(C26&i*Xkd8EV zsZ^Lp{#_u~GgiDg>>#l&a`@v94ke4)0BQRcKKNbP`G*Qcwe;03j240>p2*K-hl!E3 zGKb9=mxmtMpt#;VUJNxCTd0`tRK|q{ephMk*j-5ZA>Pi@xH1zdC4qK-MrEg{lAfse*y{Ez>36-Gl7wOO7yJN!Z4r>#~vBf5`HLsPLov*qe6M zO00PZ&Z5GCD5A{L@tV9D8meEB8%!yq%qoHke+cN7c(w7I)8!N5l?81FCnXKmB_$>O z5&7@G>T=RsS~4;+WmE+hIOJzLB8#>JT zh8H{C%#>lcPa!onBSQFFAd|LxrXE?vj__5?UVLRExa3NIVKV_fz@zAcCXN~+>Pg}v;U`u&PZQ9$n1tGxF`Og#ay`=kD^8=hk0o0r0RpgH(L76hx$_$7gD(Hyh2 zIyMuV(yV<-J7&rHxhi64#5fV}p6@B$r<@wjD}tS0ZjNu(JM${NxJSMTj83Qo~(B zZ!CKLEfYLkd#d2}xrBV4enOh0@4|^0&)M7YxGqv!=XZRSb#1L2rO zqTg0(ZM0?i*Q`f}v;{f``(rj{DwZ1?B1Ri+Joz|g+SR$zM(z-1S@MiH@D++|K!?!4 z^qI6_@jRv2u%YFREVtp?lt0bdBi1J*S=kL12sP9_6S4gWFWUa_Cz zq=b`EX9)9kI=Z>8P3OxI8lB@#EfCSJ*h-i0ves(*_1!R04-JE&Htd^BQU()VRp&-< z`ZcmY)(mj-A@t|d1#92a-B}k`;9r>f+nv3O8&F1xBjt|Zp7S3pzZ5O=9hTcD930c&SlF@xdwV* z4?Hrn{}{bHLDx|?JE1W$o1qq*#k|F}-bFg1hldZ>^3ZwYkmce$w=w$g$6zyCqv8ps zeEAq-Xf5|%WU5IiBDf%O(qJ>9B2RJ2iZLp-D4IRWiNh}2f(u6q53-60|ueHv-593d_C(D{KjM$Hp5V(`o=YuP_mwG*&P@i;LuAf<(kI|e(8$hyz zR7?QM=A1jG*+hMhCRQ0 zH%iuq4s3VAeUUXelxLLI#L>a@l?z#ISVS>By?FUZTqh#?{nB_Wo1c0cTIa#`T$@i( z9&4`f`erj5QAZej<)Z#a1_H#zNrL(aC5QwJ#;61q#Oinmc8Yc3M>blhQ*MKQY z{w>8awMVj-4#k1<0}Gyby^YAPd%jWH2nser2$|JIl)kAkoFj|zA5l%RcR$qOn{DRf ztr({;<@{H)PuNM`AJ{YCWnQ4pB0$PX z*F)Hr8wjUPtiQH9gayOW)VB)D@i+p@X4y*|M){fB&lmT)hW!{f9zxN;Rkg~vApNG^ zTDQe0Dvajo-?VFP5;8LVO>9&=;1;>-Hoc`;w?B?^?UgJ0jl@REPz9|79YK1FjGjC7 z+6d;Chv|9};xGcz0G1?s^k%Dp=nf{4@uPbz`OllI(PXq|LVB7cKzTH+LC`4|yu10l zXhvNx`}k50I)_fLQ#?2DDvjcxSdbMTSQqR|e5ysBj*?-|^$wS%RVzG55|Cl#*&3@L zw?V};SV$D81VX%6E-|J2&E|8vqPe0Srj;F`=n&oxHpKg%2K~+IXOeGGo-3d%xDAKL=6@Ma`Yd zN(VhHg?4_1d2m^vJJ3%I4XPFwC{YFOqq{yGxmu#wShLz&NP#xSZ34~!aSE z^E(mwJG)om8EwOtN3`CnfkZc3lw?M}%XsoN{n9_WV&#-$-@GqJn1`*R&C=!GQ>4Sk zc_)Z-=nU}4Br5<6eaEmY-r?v~vwrALXy>QuW(EW1CJDY2=k$Z!`v564f-iJuM?d%# z5yo~aFRmTIcXZy7*0oH6+bB)QoWya=>{mKTjBf4o*+~TI>4O>$i8`|~&+l8O^gy7+ z`?(8;z%6?m+I&}0#l^lA>*k{KE_jM)`JgZAGVSw7$%HKU{J8Mj=-W;^DG3<#6qG^! zoV&W{T!KLF3~Fg4!!2qdarv|6zcC^K6WfzQn)r=;7mMP2TMH&8c#N~idL!w zG}9S`o<~A;TW94@qL6ie{y}x&EQVAJR~MA&OJ`m`^TYuoIEfzz!Xne?` zB$%t^uhZJ8aC!ku$cAo(Nwp_2S%!aW=Xi{w{wWH1>1s$oXTE)D(fPUD!O#Bn{G@E- znP(X<@XBk@=7thX6y%nqwc+V71K*3OGHvw0==QPbW>s|oX1G^lNsTJ~+^g{WV2|}C z%j4xh!5oRkCq~A?2mQNtK8hwHnhK^n;;)p+B2jid1&Yga*`Z>p__BMfA%?$m$VXxV z#P^iHK2?4)HInp383bB<=n4>1!4nEyYte^j?PKz@OnsCu0*JlBQ@3eY8J1b%m`;!p?Jg1i z4)+dKv&{bYiYt}$Fi5~=zX6()BB?lUMGRX zq^lCyh-o9c&hj*h(u-7}rLK*7DK{oH<`Yu+(r2npE0oN_L!E2>P4{y6yn=|35Oe>R zl~}Hev`Oy$qHr-1#+f@^ZXkMQkx2PL^ngtSH{yCCH}}yh;r{Vzx0Q_VU>o|X13a$Q z1*OtaSc`?wYu4R@)7r`-(b977ehz|AXUz2Dh~>9jpRU@rn{c)>Txq?AWZ-Q#yy8~9 ze#<1?;u*TGATHDwl59jOcgV9_u2Hug!yFw`rX73MW=%wr-CLwaPrOJvciFU++R%CB z{~T5Ot~zybvmr=+iV|5ZWP{LQ+7rKx0sbxEbr?9pgy{^O#_#iT#XWkf4Wm1Bq%+1@ zIX0XhISPlEbEmaXg3e-KlmzV8 z#r?+j6(NBX7@Ado3#slRpF#O8gZH10N~lZZE)tCRT{1WV$BeCOJ^lP0REr%{{OWlAUyLc*1yI9oNYV)C__@s`5pOAuKp0XgG(`*+SbDL6?1e)yKxwkg%Yj93wr%r%$RHJS|WVTooD14bh<u};wSN=FU;svrDG zfz;cn+?;3RA2J)Gy-%K9lZI1L(y%G`*PkN>67QHHoufMEVTMD3MxJns1dO|wXH1Zg zW|FpFFi>-T&G!SY*jFnZTc?EjUer{#sMM)89vP)~I42dGaVoDB8YPv6OvjdoI(yj( zsps~=pu^Ji^h4Y-Gpx}zRfvhsIWGA!{Rr@WT8xB(bX1dEaUtEa|sm7>+OY7r-i}@-+g8GbxGfoeCzR5U* z8Jlrn#!G_Eu`YvuOB1-DY9pJuZ9XWtA*Jq-aR{VV8_bTx^(2Y>XzSQ}888h)AZD>f z7Nm989bF~do42+)*1=S`Y{|O0q9AN7))+k~u3QHOw0HvgB<&$*hlGrbPGgaa{Q@Tx z3S0-OceGt1^BYnMtVTTs_kgkdI+`8xyX?MP=*&TDr%U@_>~p%rT-8Ci>}|;Vnje3( zUAA*ah&^=n-|FTvjN+k31Z5H09k%EH`0+OL;I0)q)^%uP;QIYICAN6t#Pk6ta%HGUdtxf4=@R=l3H@2|B*U-&aJlGi?ZjST3n; z3$0ljgsPmqRpUr?1JXfu;xv>zIWGRe36Bclxu@CIviUlpoc+po73FaR z=`sy$70NDQQeNaIsniiTplJF60)b-YarREb`VKcYhG>q*S4+|{Cvd`$jWL|5TsH5i zYOGAu2~0RXxZiHjL~0!;R({zOvyAu1ke{QTg}S*V*<<$1=*NvcJ#92KjYMs*NZLDh zFGj7z{scWgNH?VA)`&Jv>|d1Kf;_5gjT+w=FW+2DHHzzEg^J6mf?*M!zAQO385#kW z$FtoS5|{w@B>DHtfq(ksMOEu0BosTT5R@}fVz008I#2yc#xeiv@onE76E25dw#FB! zlvT>we|bhn@nXM53LLwFjP~6bph0$H=(E{ji0GYeM_BTQI9Lhspt&D2&%1Ahc4I-q zBJ#;;PDfO&SfT`!i|vl~>ET>szVv=k&~QrW3eC$wkfW5pW0qIK&m z!_!$wsjpSnLUL@1ur`#deouPi#;nPQA<)kFj?AudLRK5hHX`~I1F3eYXSM3;d2*W$ zY-$JNlcs9LnVgq%P0hu2sAdK%_#6`brd;ksvdw6HvU?a7*=`7FPt_|s4+7R7LrfS@4T5T$HC z9DWqMok9_GnrTKmvJJZdlG(9<4?LLgk&C(LiRS9g8O@1P`Ale3z+EGx5S+D0(T*!o z%rjgR?HzF$(vCFt6c61SW3}R_vDf}R*)OXBf8%SYrFZ-@RTi{B%CZoHc()8$%)Fn@ zU}EeX4>#Pw=-)EK?5m-I(Z6t%(oNkvtMoPdj8eQRZGVks!F_hPMdP?LOx;P{eU|jH zSz>@Fu1)TTZfXCTCsCrHmEU#`xS2T;1&`xem+kpeHUWv{8i(;}Y-3xUK7Y=AkFRf> zBpRDln$O|2k!mGr6Iocs9}c|5?g3{G#d77m&PjQ8zuu^(oRas5lmwC*&*4I3N1`zQ zOe{b$d>COV;QquB2(ApR=APP1pk0l#0AdI4|k?285Muy7e0nda5IUDQ-{c0cP z_`G^20(J!$K<>7fs}eL`5x=}Gi@6*I$^LeB&d0jy6e{ijLS`0>*Ad+>erq88B zp%rMn7zwl7BIG88YF=f?T)&<6;;}(`3BUn(OF!lq?xC%lPEF!GuAI(>u%Y&`%gCTz zGDsF5_x&S=An8~#UeHxawGNe!i0JkH)aen4)1ANGtO!r!C9wbDFeo1Bg6D`36v^%v z8-AuG?|v#7%KselK*5lxoIbntqxABgIrvA+UBa6O8-@4F@J$niM1P?c_=f42?~BvW zxZ?q-`DveHqM5TUmoh7#i2%8m)9XYgcGap8c^H}0g)GaBVp}@!=yT(Els{z=@SDPx zM6}0Sk{gLSxdyx?NyqK(=R?%YiT&*j9`S)d7I_<@Io)3IJfLWhJ*Kbh{6}ZoR|HFB zAM!Das9c3SL#g6KB1Q?_aPt{>kXRcs7czBK~F_X(KV~w4D}xbMry+RGd`za6SM3?1n%#vUXS`PJq2k zIzxd{KJ956C7ZYtHZ%S2af3mr?Bne-3rHk7MzJ6QF6}X zhK&8~s}NrDEM(TRyRKlWy3D8y#;m-Q<(DrCZ*sfH2kM+2S+P=rA(gw50=i15KkpWyODq3M+KoN z`y~~2_+aVe5{LJrPBL3(?uyi%JVZ)ara=G*RPStgz#5UYNit-|8FRHlv8+Lh7+`Yp zo|nQVnM=?~nE##-Vi@uyjhr(<7CRp@c`5sAT`a0LpDcv%YIw1`ehpD?d zyPxbRvRVZrqbR~D1{ST|zsi(nk&AUUXj%(DFD6f|2$2iOzz)F>Kg;woFtxv}UK!=y zMFz<(n@_^3oN2AygylYkAHOoWnC+kkjQ=e4`;^GSgt=pJtZ`wB89Eqyam1cJ#uMWE7`C28|cVWlFmD@6( zIJ==xEZ35MA365+q(YFD&t}RUJtP?ITM(4o515Q24njFZ~7 zr+|cDtFU2PIK_wDgkduRI__L7%Ja4n6P7a&%yL507h{7{aia~D-w-o;2Vwae7GSpE znCrRo^oEkdshVIIYD0;y6=xKW)*7CwLjXRD@~|bDArRVTxi6P#{CG@XY6-YgWR}fW zacle^^ZFgN-A&rLG*yzelF?%nHNtn1BtjYjBnO>Ko{Tr`=gR#d0clXDf2_k+i=FXA zhpcuHJ+<*%2-sHep@qp_8DDBF`<64j6H~6x91wvN%YvxV0xtFjilIa0RxbItP(6Do z^T;EWgH<*!x;ZhVHYD%XjJ#087N+YQRmvye9T<1^&)-XrFg961T~1cZ&<+Ef(7c<-<+!U=vTN$7 zSq(Q<05=iO_GjR7jYrNt9-B`~MT}T%Ve>;C^Ickii`C^8;L{;K>w2h|Ys?sKq=LUI zi%gF}g4uWu9ay5Iyov*KG4P$)J&yO2$1eP^tK2^Mk0z0wOZ9Y`{`mI(v|Qi>%OZsR z-b?9Z5_Bqa05@sx3#@@6wqg+1O))6^!*U0D8f>joG~3J+4W{QfbhvMT=kZVL{(PhM zi1q>}M_bb}_m1=Ehx&vmeywbD;xCI{c<*R)XCkqn(!ko!-_W)-W7GoDxAX`Q^L0ge zkIp6@D_#WwUxj^eSu$Ds*&Bb+#91Vin0OD&kfu?3cK1I`#&XTK3^QU6FzLI*&@1MAJ+(8uy^e7{ zBR53wL$E0YzlMF>J13eP{ZBr76?F{0&ZqHh`;@a5Zr5sF20bV5EvN6K0*{v5Z`ua} zE5M9e@uNl~*q8eMs`Ubr|97=+w6kbbqj`x&5Ba|e{T)%X=mE<{2eHnnW&B@)c&j$2 zR#t+wgo^Xa+RWanKIdk)S8Nn-|EhigikA$K8^8Z1zO9wj(b8$`TP?_&)d9nSAnS8j z5h87VquYi2L|NEI^RECQRcQY|mewNX)z3e(VK_Jg;Y4I9>a&H6OT}$iHA`8A$+@VY z^_TMZ1OBMm9Lw0C=OGW~OQ0K{1T;hycJf?hwxw%(I}JJTzhdlOb!YuuY{^_(@pg4J z1yRo)F^oh%66R@NURGkCO^mi3G-vSBpV!v6#3h5m22xUBVh5&uVv|8h6>PI3d+yT$YI&G~SqiOt-Fd!z0?Vgl_McV_v*hYV(%!MdaQOfgUk94DGwi>;WL6IctYnV56DohvI_4?3TZzzZbW_D%4@@H20y-4kz%840}S z9dV-#^X;$j&IHuOKu`6Gyv(UPAXsN2LHXUzFE3aa)NfV+L^*?Ve~ z$ya7*n<}jqJ>@(-$<=x@)R2wv%Q= z2@h3@d7c?f==W=H4F8B z((M>D2n^YQ<kUeFP3 zS;1+O^SCJC&lu1w>k-_LQvOpO7vQv~vjeej4^?e8RvFUPVy$3jUk+w0gFdAox;!B7 zIL6s~E^>HtC;s9SXS4^HkIbKRI*<`zdujNR?iPO4*Dy5^vD@d|f_v z(Rn|28K(qs`W`rPLtqWg!lvrv5)||~VNmht)H*Oj*QcooZbG!tm`5CcRnjfM8X1xa z9`k_RK%lid;B$Cey&<43@yn4WKXI1hM+VNHxDDotBSXl;ii*vdf6M##=v`fy-G*We z@l>EWfqP)JWPT2y!^H+|igIl0T4UcbI?QP=>uzuJ4{`DQ^C~D~F_^HeZ+5@QTR$>! zjyZaV*#}5ki-dy;pz3d>Tcb1M3;+=U8_r;@}{zdqq{|dvDt4}Dc)eMpq zinT!|8jbh}J{y8OF_jgxn2T?Ld1B->J$OsNhHg6-f6c|1)gYnJx?3@JcPO)XGRkm? z(*~*orgx>j`cjFLz>5~SeOn1HVJ6U8$cKxgxdnvufPSny*rCJ4+B9pe?7hPMUKL2-uS55lSmFyIDeG!v4=gOVj;6*!s?8E>xwIoqG(;*wJnPgh(iBLa zGAB61a}y2SRw~EL{2}HO8T?0~j7WOeL`hrG+Ki(i4o?z$3!MGq6=ZR6a5oa zsMqh62U+;%0i4BP#JW7QlWEf_+*)mhPe5fq{D!55kCThB``Ct#Ta(#)*i3G51r=tI zpI0+73EN_Gz%Ex>oM86NUzhqt;EYZ^*v*w_Fhl|8MmE4tAR8wpwKQ-$Y}H3YZ9{<} z&%>2F=`R|j!K2Zmks+#~Y7fp*U!2&rJi@6m8j`UdLpX3klHOo?D^V97s$J0p<^yqB zW^Yu4Wsma+j<+EH{A6)}YosRsLgvITdTBQ0Chyl&oJN_W`!{+cwX~c7-KTNW7JiPp zYq{JE@AIx1V@}0hBlyB0Fh&)Agk6Onba}>;1$-CuT~u}kU5HJ@K}*1i7ySI?6l-N_ zS^K)N0J|@+Y_j%`u}Uv9t3LNuCm;KJqqAC?N2R|h>wR(#Sh%Pef7|i*pp*TtzG$jR zYo^elYN)@2N^6{L*X8rS3}%Py90-K!i@{Q0D*h(s$~~1!ThL{8&RpF)G{WR~{DHb{ z%Zq_d>ZRg<`Qm(|KN>q#xP8Z;jF2vHLL-%J2Bk3}H`P=Ba+&>R?;D{Ipud!WRjRy? zOFz@;M6U7I*$@Ay+L>G8p)xdUAiCp%>J8nRMF&`ZVuL(#mNq35?E6m<4&Jy)AXRwIi(>+{{ zVzGlxr~d=y#FGcE)qUy}6yNP6#$gI0Q1{_B`=AFSRXhd*wX%Ld-7#JsXh>QSxeCAE zT2XcB#N=LyulMPC?$K((&YzhkLNI9)_3v1&pt1Vp7Y_RJB^GDtXEYfnV4cQgC1iIU z$z`sV-TgK*TXu;-d1Os|Sj3*AHTyevmdYK_PT`@EJhJhp;t{d}lH>k^nme(?L@YYa z;qp|eyn5B0JYfQ>#jz;`j+^TK54)%?7!d1>be?--`%nKj3OZ&Upzpo^N)R&AW*#Cj z>&jg@@B3*XKEb=3bW;})e?_@7M<;`SAg+aQMKTJs3;}Q8`s5CUPSMvX^qOWJARxjj39NPs>a(I?*mN5tuUBVKVf&{q2Tw) z9NQedj`(ep>Rcj}8c`dSb+pVplGq!8qnq_@rvbO^L2$4m>7N-%B9{TJywK?+&{TB8LZ-VrkrGUI+w599~x@5dVc>l zY7`z3Sq$J!^h_CWe2NEysYUo)1Ha3CMW=6-tGYv28L-7vNWPz3-DxnXrk};}N3Lzy z()vWao7u(Kn=HHt&)650L-CK7%ra`2phjfr`@ z994RG9ayp}lc;4@`5ROQj3wUL-1_Y0PAd4;!l(AN=Ke+Xu$$F%_2R4Sum8r{TSY|@ zblrkjLqj4%8H0{ z&W?R5GV<)q!pn+4iT3e%8GxA)j|ozp$&q=k-~HPzNBy~(GTo>?EV^6PSS*%(toxw( zv0HQ65j|y)_A^i$GgUB$@G!qRA0g1o&Exx&_UOOv=WkdR)O`AWVF^vcx?kCmnq`=Z z@;TMi`}*$vN`AFwKUePYf%ukkCTh7B#HarpJYXfLNW_?u0JB{O2TJv%Ub~sj>?ei% zat1E`v~YLq-rx$45;z=jmD~rm4yx!U&5E3OXv-%>w27m36{I79=-cWbp3{pbcQy+Th zr*L=_c3!n)Id2@o2G&xO^!<$#dO}J#!1waUxd-|`wSC3o6xzG=J>$4G`o)C>;yGQV zhkK4k?Y2-4*6i|2yd~oRpIIqpzU)%KxPdbZGxEC zZG}zaTn@kgy@28N<50#Ivc=kdZ1;hyTVzMdmwxq?P+Wc4VvjFWF{%sr4FVWp6ZV4i z4Py#NMu=L<8mU((T)5K>uW+*ZJ48S#*yQNbVjo1nfnu%Do|a*^Q~qdHfN5RZ*Sbgo zYx4&p3nM>Gilw!YhQmBBMpD-bDGd0FhTbFF5IpS-4C%DoMr^o()NCy%NEJ1b?qQBkIprey*&6 zSgk@wFjmGt3u$0HSn*BtJhs|C`&n;_FKQ1$s8h z#D$fQa6S)?hrN*H7OVRT`?cK!*kj_m{o zSBU&O@r7%oamgQR=&*s|7mgk45pAJ2;lpFuzJ8GPa3 zh*cMh_Q<`Nz6({4t|4KZ1oTZ-fd23r@5*ZRQ`eyj?&G@M_(c&O4gDgsb!|S!Br?s# z{ITYaB`Q3E_w0H#D`2zSbR>;kilN0Kwx4yzM1%B&Dr}l5hylyIvJgV3dv*6U_C@v@ zj+zVPbW)4arIoaV0@IS-!n~YB2`;-EY~6HTZ9AARMCg`qs)pIrH{WGo7JFw>lwpCzoX48c58_px~-eM z`WPQg~ZwACYyG*NZ{*% zraHGsy{QNkWp~D8zVf(oP@_>s%X7$caa4L9x`4}3EX_OKxT(}6G9<0D%yDrottwC$ z`(i`;9$F7LX13E?xKj!U>JvSEZ3FdszcJsuu@VKAK!$JtEJtS<9`m0_9Vz}apWF7w z--fgwS8_f6n6PCQCTnTxTmJ7X{Yop7>P47rSNN*ADK)W;UZp`7?M)o)$MJ9F&>Fu6 z?5Llxs$3oSPGAwfi|%}i6x zyLOPGG;|$!=1QiCB-3BO%zWzZ+L68#(W&FVo)dVQCvxa@ht?>(a>26R1> z@4yfNSXc2WE%V`&xAoqb#B)9=#Fv|`xP{1(O+dSQmZ1oT6%UX3=@lw>eUBAt zJ&`A#xX%D3wai2p!&!fdB%rl6^v7LXl==-oMS1AjvTg@X#hL-(>@Ks+J(p?|Dr+U3 zI@&5s4s@$-p=|21Zf0-oZ$aE+&V3%|&y6Xt&VcVyenm1RCYrFJuw|<^{kp5SOeTvH z&%8Y_<9O~6Olju%OrJ4VK{-&La*&HK-i?a#FR3|R?9ss3GA`yCrNmC&GAafP~;yp%0q?Dp@VqtAD$qkcx0Z_dKpKB6~x zUs5mA`qixK0c9xrSKL*m5F8cWmuJTBe=;R-Xn{_nzG6k8K46TbXpzcLJS#lnQ0nJ;Z?9{N zk^53DF^ZQ^8g!$`y1fX7qMjtrTG`_;s%oSrqtngHBdQ)<>4F!9YkPE}G!X{o!E0zc zxh>BWuoFo(o^zigib@0L3I&BYg%Y<09nh{9x2PvDRu@0W1(J{iH(V+V4qwk1C)$-} zdt~vfbKI?ttUYI535ppDF~RiA@o&m5-Vy~fH2ZU3|2~a1Z6_?R?c(Kak-W}oG|eU) zlSkbaCpf$=L?G{{LD)M-30;WbPqLXbwjc$yBXFFmU0J~yB%8skD%f}*iSM-XH3_)+iXOI;Xm6TmMjj~rDRntd78-pjfI)qykCRs4>yJ0r zDO~C>`mQq}Tb%K`Q@m+VGnhJVNivIwf-MLeI*z^GdYrw9UGSGeu{5cejH9kU#tdcTF$Co{JolC{W%iqwR7RI-k%=Hcz9 z>4F6!jPWgA|Ah7P6eUnhBz!?#nV13!Qc`42^4>JOaQWm=L5dHppqyDEKgBG~NacJu z8N^gTo4}VMK(7dWw97&odsM0YccCH@govil5P?pTD_`_qqjXw3t2d^hpAyE|`I&yO zL4>|NE9wQiaB}b)P@+el6ivnJc4q2Zcr$(G9N^KSzBXC_BWz#ahe*8YC|HyqW2L*> z*efWHOl|qC+h9`{@1@s=w|V6pIoXX3zLh?*t2KY3?;hJFHpJXxR2HqqiB> zEL|RB-|fg9yY&=(TT}s6Six{Y{7i~#_Db?jtiY#X8&%RTgu+n)eIL@>`4Cwm^T;OH zH{LN^fnAoDczN;EY^o?6Pxc|B8)xcZmS&*SVjvSQ<3Q*D)jA4eevzd(#@Ob)_cjk-XM z*Td=kd6kbl$tYw`CFh`nZix5S&s-es4CNr9jkEf$IWzIbLCt~Nsq+HiIPnu4L$h*+ zTg01j^CpSgSk1i4H%a(hNuw!k1K#Hi-G9(m+%r&VUMh24p%Y=v#Xusz3Os$5yYj?) zi=5xDB_1<%t_Q2%&k$-8PaEDEw&ARlicKjgo@bDFm{^LJy(8Li>OBVTO>2C*wa;?e zJONYpS#cQs$L2Y`_l4TUAu>DGuN>^ICkGUDYpIC#wTNr(*3Y=KgcWfEri21`kbB|Q5%*_%JBC~OnXPqFKAOxQ@2dGC zn%U;Etc0~uokp)+8%>+IKhIEWtyDeQpL%Wb`uDam25)sf%i>jo=C_~w=4I}!+42Y2 zeUf4s^HYC}D`#clv=2Auoc40JdbWf>k?pZz56&M~PurZHf1B9v^`4%YQz@UP z=2yVZ&7J>)YrtfGDsZQ_dvu$BM?7T8+8|}8WPJ=#alXWdD$@+O&4B`Lwx}y_xCmFF z5xpgI0&UluR>Emq8ilLZrl5~e)X}s*{aSt8!$vtmG8|VLaNB_~Is4y;^m!M`$T}HC z;FEZSZ~p}FXyaq~(`EPSN4zvZ_P)`L9~YfZub8jbJPgI-K|He?WvhoQV68yQ#_)g` zjF6s&2)6^tbh%Af9Em;}m6-QfEjCgW)UKg4XWC7(432e<`}BK7_HW)v2pbsc_sNjK z0H1~Z_iNH8wKLYQ)hZgtqQ^}R&_!2%%Z%z#y>~qa2#d_`1ssSt_ewSyBfIc!(ys5h z=G?ae0A-}dDXgv**vjcMm@H)Za&sGrd@Xt>LD4iWoVH=)&YU`z;cCpqAuRi z?wd4N)UVs5>Q5k4lGCqTIm~p@^iLL2*6u?Na`^H6-0Y6#{u@72+B$|^I7=vLn8{!w z#Ofa14^qom8-WH_iS@+xlzU6-&g&i(WAyxBUj`4aVo%2$$`tF}cb|lE#m;#u-#P-Y z?@mM%{Cy}6T+DITi-VEbl`)X)N#AP^2WN= zRvNEd%z}r~^sq)u4tP{L7U=i+2$4|Am}|wv;ehzAbJh_qV-MvC_RvKrZMy)=2Z?+O z?u@+x5R4$v&!A3~maSSiCk(2&AQAseBE7q#i!O9ZhZ&4VVBRI2BpaRU+C5zw zCc?JjW8;qy<=Qsa;@c%@&TqHgR)K4DHV%w?Hch!xR4I@Y{uj(qI7XUT?N=e?(_CmV7Di*>!!~UPFyB-iR z<&@iAGzeRFR$GuuvQP$CC5-4EKoj1wcW6qL~NR?^+wDmTquilQq!t;2KX%mw6 z;t2b1M&WJNRNSlQ#Fk1Gu4RL@|Kj_^1kaV7^w9CrdLrqE;R=kYrWs5KSo?RvW9Nmh#4RD|*I581nRh(u*I6HWlEA0Q zmAzOFY!O(u0?M2_>t7To4E}iWqSpSW}O0%f8yA?8A9+) zx-u&x7*JKuUcXi7KUTy3bI1V0F2|h~S+4?%^{c7K@nHACB$GHDf{LycL6bS#1Ts-1 zZ8}5u5;{R@*p8=8+)bT74+4h*v-h;5%cD{0w>};}1;zU&yau9UytmcfYIFX@YX4Zs z8hJG0*4R7JjDB^HUu;@8iA4VLy~5$6Q7U63g}LbPyrDrF00nOnFJ{hFr_8$6S@xia zO>jZ+&_}6#OVD5dQppEka^z5$4sg=DZ+8bAGMt0p2Soof!di>sQXUKQV(Ti~xw}31 zd&1Ct%+e%5wutBq6QSxKRl2}_c_N|)^Q5neO_l*zUYlfZ1ok_K6hMeLZS<%pu-1g- zxHu155G@5DPYnyxb@BoE6KSDYp3~>?iQw@t#GL<0_!b^W?)b!{K7CdDLiq`P#?oCF z@`W0uo#LNbFn)f1?{f=~uP6>9MP^E)uNy`#H~)O(%IW5sRAq$06RJRX{Z^>Av)*2h zd`P}3f3{4>DQ;`H=Ximc;vw7654^TVt!6r_pW^!m1ac1yV$-UvOIF#4f}ni6SXovQ z82EFNf~*tobpfcSJ|be_i_FYM^55X7@ z=Q;`C3Y_Q9CQYC-rgrOge5E)Q8JUd%nD0lFR9| zLaE*5JFcAk10w5bl;Vs}JO&p)il)LEY7TG0q7UPiBWK*=ezDGEI?B;W704f1AYTR& zN@wy2mij&d`@>;AguoXkIR+*b)zsCGv#lo_Q0FUqhGtv&)(P0C_Sx2m0_^LNUa1<8 zA`K8d?uHA?Iw-se98U%%bN~=4$4Js{xiwerrl9i&j51TP>e4X{;_%J?h8h5C+uSm1 zUUX>{H0%9+Yu1Zv-c*QKh+q7F@kBzflZlqpN_)5P6v}FUiT*YS|l=j*p zRC(1UwszivgBa52*To{oYmaHfmX$}akPopWN0t4Otp;(DnwE|%Lc}y9;-_5n4xvb> zgBpF+-kijlZO(g*Bfi>798zR*^Dj&T{mLx1?nA;1N&Hb4gE zKH)=bc{$u78(BteyZdO4E&~ZEn_&<#_qp0Uq>)A^QDix&$F(g+*qI0#T1xR=M65O)?Wv zN;Gc)s5(le^Sn`jxJZ}HT5EGFXR5T*H`0ZsTpBNJAx>D2OI3z*nmlKNKp(Czt{8J# zx^w16v*wlSd}OLVqogMOgSl^32rBLb_{*`?GjuWRQyv`f*`8Tik;Gld)@8hQNGEL; z304OC(BleT)t_Y%^A59fNm=?l4hBmn5AhwlEmd2mpEDj8d;C&$!To1{unl(Vt@VX- zvK3d(w$geQ*T_UZ!ESsqcf3ZQG5NNskv+5Xm(GkcUU;>#b6$|Z8%Qpsi?Z$M=fi{< zaI@FfB-CNSb@kYQS>M8Z3Lyo6d|vo6bLO?ZX#Q<8bw z6R?`Z9qjA<&SMcJI4aM^U6$W!skZ` zX{LURQnq@V5a;n({tv*F8p)TH$EJ0prKPElX;2ZMdcDT?MMzM)Osi2vzppg+-Jqu@ zo08+TPjGgIPjI)U_{_TFkP)rKrbY~hw&reMhqJ^J@Asc-=b;%l8k14}*k*6%ZozTM zZV~8G+(;|hH04jNnfQ7tUtpfo!N85IsKW~Rzmi}C`-|(Y&-uP38GlyPFeG&x)zcU4@#LqQ=SP;%d~)H^?^i39qm6{)ku3}#GmJ+SHRrSL8^ZExMQ!FVP|t@#sqBI18$uLj;^AVKMTCYe=1K>pkHE_Qx3UQBvmQ1p$)nx`^tQ_pOINsOc-5Jz4J$I4x z?z~8Kh*{GOlLG_&F&zAxO9eJK4CWj?{1FZTA&J(1dgEN`4zBKoTAH*Dc_(vu7mPP< z^t^}uzI@fkDh2LE2bio)DB-TOrV9$nU*yJoM+Ed;?j~6mq;0?L;Mi)l#j^(FFmD)z zREOX!+9`Krj=+uS(pMF?O&_2>|#Xid#f5sw8VLmM8(pK-sUlTm`bPOTNPLKbLUiTZd>* zLHs$v0P$Wtp0L*gm53I=5Fx=)2?mN~VjIgMrbL0>HtlL%pEE>i^F#Ij8|=o`98tsAEtfl@#DjD9Dd^iz_$=in{G{nYx^BpZlzHvD2bqTs>Re% zfM4=RAWAIirAGR1)XM_3dM?iPHYH;iBvZa+Kmm!(=Ep#=zW#_wdPCi#&*Vi4=!1)kb(%PqtOil%KJt zrI*48kK{iurk`u&)#C_J+T7Qe?hgJLQ&;y9*)4iClC(T4bHYySnb0k!{8Mi+i@Ss0 z^qll_tp2`;85;YhXfz&-L%1m25ip6TD8l3ZC{j0I08pkn#V;;Vq#g#MFT!cD0OU6x z*lUe;a{Z$X^xHx!GI!cG6Oei8axZ;Jh&}V#@N>Qz$G;IMqxk)>KGk*-<4^x1jx2JZ z6}z2v2#Xyb0*%N370cRyg^gX66kQr)^LjT~BKT_q2YU1AC(hHw-`d0&G8!*biT-bC z1?WRDk<`EsC}aOL>(ZV3MFu+fSLBovKy91fRZrdTDt?S|8{QHP>y{6;jW=cB@TBsb zt0OiKy8P9PKTG?GcfU^Qk@@jqtlBAp^}{*U758|bD6j;+UJOb)wRRxp^Ra7*r(jnh zPqnC@Xy${>2Vevt*mY$K{%;3mA(2?`W8rQ`9LNw53=ns!zx*@*u}SXk6kaLVgng`! z7dJEh*nCCCw*{Pe_b>84QW#m$pbN`Cq&YstaL6Kh^v0uG0SV+&5yJ0H;&w*G6fy3@ zH=q#A*~n*#$UL-fB9Bym4zxH95+531zFu&yiC!;NW zj#3z9zUc+I4j7A|sX-bK7OOQTP1kA8+2k*c2y-AaT@GLB2@~-m^73`Vf+%g1HPl?3 zqbYVu+$wq1P(ne@MD`WHchK@wP{A^SjoNhUW;snN{^rE%0ro+8sQhSa^lD6Ib` zS>etaiKHF-hxffzDuao=I35})m`zFRxH8!9qWAuR+?D1$>02-2tUJ?A>^?@=DvIGB zV3r+9XV4lrd3&~HHrp+we%Ek8Xr<2M8L^5g{1q6@p2Q9Lo%YCd0?(!p2r1#L0fvCo z!6i^}%b27Oii%sXYtVXK|FdXvH}l?NSkK3(-dHsLtUn@EZDHoRlC_}Lm5D!OFmt&Db)NsR4xU)l=TqS zK#hx%mHhR$2OdXDeM=h8F#G6<34AFU&!Cy|dp*{)4-&~%rfa_iB)2>zl~!AED83y8cS4rfK()t7e$$UQ#U++y$^ zIq3Je|LQDGnLcZQ-n9G=DF#4>WN$h;IqLQjk>OxkX=p}*gBvQbT2OQ$p7_}tr>~;#W9K%WaGrJojC*h$lx0);RL5f%g9mZ`J?8+wEA{SqDGlsH|{s8UidS)4&3Zq9zY`!P~s63q+?>SUFx3Y@RzAWGuy0*o(LJN4#OV|2n&FCRWm_d`Z?i+47-wVM3}C29cN9+0cabJeC6i@5eA?`YH;!l3^NK)DkzVLPcb4`A&Y4i|0+3T+ zJ~hhpKlvA4{%$FZqNgE*)dSeh5YMf>QmTTuc8{HH6!zwS59wiAYjLJqBm(0eW>$7w z5s{k?0r^cn0<3CQfd(oBquIZ3cg-nl| z9K7?SQKR~b@oci!=+FXFl|=zz)o`Wrd+Kt$90jt|zRG6D3FXZ%9&Y=m6|^mYl^CW^ z#~Ox54aP+F=#N}r0Q#4wlV4^~Fy=jj0}Z!J149DG6@i!6l!A*c#VUDY(L^>AnM*~J zvvw_3dm%2u^XkQmfhU}Iu-ju&%SL~3jREW{QjMEM81W>25+pwLJpUz(;}jXp_sB{R z;^?UvxI8e#d1<@nQBX& z>i|kml##t>rEkG{F+))q-X&kYZa-iVyuC=62B~3O)#H9kx)nwzHajtaTOK3wn)Sn@ zbQBZ){gXyRN15Cs%Nu3JELn-frUr$*+yV^xur*75VEqsl9xg3d?jHoPlIpke=KB6i z%Q;cZ-sb4eIwZTkE~qOW_7J|m1Vbb~>5vwuB@F%b_Ma5@lz%Ah@^GjKA#?=z3fa-W zvK$VfkXV)zH*HFzSx0PCD#`3)+ToOd3MCvk(M+UTesiHCD+EiY+J4< zELpvvPV*f)r!1XKd+2uWsh`|$9$iOlmVD?i{foanjUr#5EkXSTQ^#f*O^vB_Qf6II zfHHmcJeo!6lRS9Ig;H@SGOhy-BN;G#Gd!yOvs@ZBQaS{*uH_Y8X@) zg3c`E8N$7gC9VT4A9_F`sQ^xh2)Rb0Dzz@_8>5KxGP^~&PMq7T`i zm;KO!N@&@Y#7Aez*zU{9#nm94a43WEvz(INjmdN!c|%YoOnmEYz7V%o!Y0pri=$$7 zQlB+LD#DGhsw{IP?%P9zejMkPg?W0Cmw!;^y%ML%cY=pd&M3iB#q*m-F$(u9QWl87dy)=#F#1ED+kbS6&t~gDB0yCb`L!J?25MCf`Dv4|b^y9S`gLZ`NeHfe*6!QK!dkH+q21 zoaC`O_mh)GJu4poshTv4gQBkWWjkiuo2%8J%AbQWkl5g8!YYjwRU%dlTUq6-8B*r# zo)c^`k0Q|l-?SEkT1ZsfAX?nic(QSc{tO8e+Uj?Pb?>Nb3apykW=7K9V&<0j%&!db zezLVW0iYI4{|`#4Q6unT=&Rfo*ty2+c4@1T2I3JFZ%_9Yz4e}Nnz5^WhRiROch4gO*FrC*7SMG>eO zN?`Wyk8=oV5>yHm6h>s8WoMFT3VI>pPqLQca z%qvH~)|!tWqDfBvSxx&X*JO(In_I)@p|nRT4KNeh%{QUcQ4=s%_TGu1erB?49!n}` zkH^>iF~^RxyEr`QirDv(Xg%ZEz#@6|!Z+0n6E@BaEbRggYB)CBK&mJtJ!W?OWRD~a z42K&Fw!7R~O!B{-YVKA_L{%Zq#qf^DkAXiZX__>kn=*N#O;XK=AEQ2ULl%&!g4kbW zv1Fy8f9*`Qq^0V)MI6uTiJv6ue*P)dG{Ou`T5$F__EWBGuz=4&;yl5?vUojG3yMtypO96eaZv2Te&35?WvYgcNgt?TLsYmS6$)2V^pO42a9Iz+o~&e;c(HUX2u8zc zK@;p$e-qYiqGj_1$b+q<4#HO#c%YHcu`^IL+h#6u$3kq0RMc)#r2#3r2>P1`;RGBP ztWQLWv&xlbV_O1|yL%nXlTCdeQz7ah`z(Fy2Rlo$>QuRztGIt~>&EcGr145J$bnv+ zG5q40W5wW532J{yCIgY~@CUrZ5E7>6LG(k5-WT z9%TLS&Lbf$5aOY}CFI1$Iykw((~Nk0so~kz2KQS>@$A4FYA~HJQ_&$U0S$L*14@Yq z=F%qSa7i7Q*Qs|oP`O;0dE$TMrmPLu)d+cyxSnI>ch;3==AG4C{?%tWLS04;_-?2% zm#q8L4KDwx1NiswWU^H($S~Ofz?{}0_TOF2$jE%g4Xii#o%b1L}sw&U^FXPZV)F+$TodWps&U1el8g*yLp3QSBL|J-Fh56nwvd zG|?J4P-5~73J(0CpEn6qkyKI8*gU}7iT|VS7Zz%164$Kj(zvStLD|$TgI$MdW4i$P zV{e5ChqJhP;-kNXJ+$OfGzr@dreK!X>*AlWL zJPRT0wVbN>b^+q;jZGU>AN~KZ!fI{)vH0A8^@=cWG`+s#!L_=co;4M_9mXesOW+zO z>6!NmP#Vvu1q3wQ)-rpNs=K&0)Y(4AmgOyT5}gD*u4U9!-F#R-?0BX`cvjvYhZgd` zh8Oz00>H!WJcE9GO3>{{0Gsgn5O+?5{~258yl?g%xkI7SQ(C!|0OT27u79_7af;54 zW>l?Z?6B21la*<14x%Z8g~ zyiJ>p7wWMSiY)Q5qWk-kZ$tJQjeFQ(*2~Z1NjMBpmrbVg+}!X=^-IaH2Q@N=*YeBZ z+Ep*%(BJCcJF_ws!&2Ed%o}s<1u`~z6>>(mmm=6glgI0rr={`dY1Yz{S5R<4_x+7y zu8TSviQI(XlFcXy@UsJ*_cpF~L9kCeTnfBWfRyLo-I@23?9dypR2iS2qHj>UIck9h zXq!)S3H0E#q%gDs4OQ+^&a(!b-*jx|3!!vK;3bT68t_PCLuZVIZz=yg(*6piwl3z; zWyTE|b(4d-Y9?ieSajM5+SMUuyJ9f|DhmtPWW(}(M#h8-4p9~8L&(rVTk(#jkWeBh zQM{j*@YQwLyd9OK_~UNCmz8$FMNONzLUE}E+PS|Zu?Lc66>^ChLrceL1gdGP0J4Z9 zdaGGfdt)Nt26p2|LuIx1Q$X{ZAWui_4nGwm7rs^mVpG%hFfS@p7P@f7`4bZ@%Xd0(&Y`Z^?K#)tl!+%Wg0Ed3|)#}e+R zTY@ty`#o+3&9>u11Gop`7n~TZeDO4V;&%(2KRxIU$^2AlTnftw!+%uro8Rgjre&gE zMwmxtc`mop+!qjOe!5b!C_ATbXji%IVV8*Sos3^1Hc%0oVN?v63R?-XU4`as(boYR zxfKg;f3uXespql}xHKxN2PP4JX#QF8VSpOjX#FLymEljkWVISwiB;c_`S0(=*hY1C zR+5j(rEAGZ*rRH*EuBauJexzG9_;k&PQSI~$?`R$>_ZuzLUveiR&a3XUc?jp{6M83AKt#{k-kBar+dfFXo z$ZtC7o*TUGglbWb_NV!mxI2P|1|KsfDvlUdsAfNbITgCF~?k-7k zxALjo$v_=t2w#dI(!9)-G$sl-v*MR#C!mA3MIOw3HDmVGiP5l+38*bWsFt{$nU7E# zZL?v4U)g>j!7)8*lnQIlqJ6s4(r;Bb36=&fMjwE~9B)t&_4jX26qwYl2$Cru8tQc) z>6oj?*C&kZe~yy>e;@y1A9OsWWG_U08$#j4dd8nZVKVA|`rM0#I)4Dv|D8&sU)g?8 zVc?y0c;P3WOKXZr`;vp9C)s@zUAyhRc5>|5d1rAb-78QdKXmc$>3FGmQTQ`*3{<4f z$!S9$PKGoDJ;``zc#I_PX%2$7;W#>Z*UD?)Uz^`p{>O-`kg?6o_r0}^FNJnyL)cDRK?Dv_Js?X<=b|^pWfR$k zSq{E`CuC0{kjJ=TJz%k)r}FZE8`@0Zeqdt1wWo`6v8Bk?aTzj1K(zi<-9np3PRV9YaL#LDR)s!=0S5 z=(PcmeMx&gQ1{Sy>_=3385TSTC4aCH2x+>HZ@~+mq+qAnox|82EDcU-5QkkWkOSSP z(EOE9(U^|_9_5URxaKp@mc=$9w(qkPbbJ+1qiXgt`ab$_;kRN`VA=}I?Q+dEOS~Vv z-bc7DxLm)@zH51cChz*sxm077@oIaK-KlhSAC*U-5Sh@|Dk8oW{qe?9iFP578d5he z820`n!E5B`GRn0}*wk?d0YL{geE4#8(PD+`J{a#_)fVUQS}vKTtH7V;i3+I@$5fqd z%eG$@rPvq60;VyqFXeN!va$|+pHJMzjhIuYT6M8};$R-(DRGd+L&Z0BBmo&dtJHnl zVP4;Ym8R8~soIoNP7q#4Hz>TN%&l`H;A`55w5ax{-{TIX~hRYt*{(+#>4y4 z(;&cQA07Em#ntZCmu~4oHc{4HqY@$5qR>m6gs3T7L~g*ieJp4MDKx zD7Ev+p>c5!7UfxXwxPnf1YGU$KyVCzW8g&D4-G=7?smiTNY~m6y%tAh&YgW*iGo7zT#p5=3>x+=EizPOQvg%bD!;OD!Wff z@;2Ks(^cm7o)(+i@d7K2nA30o8E~qBwkq0?0ysn@_&x2f-p@W8C@DYjdIY57WZz%M ztEdFFYHSI;_>QPVK^SFdydB7YTQJK!E_0P49i0Vu5cADQq8)B#zkNFnmL`$8jh$mv zWk_sf`iWS5W#Oeufo{8{#&D!DCIv(1WPpif*$N`W@+X8{iBZ)1^DGwmpRR; zMAAdQhKwo6a zL8%Nrv~TuT?dhpDn`%7HWK(8bYS%w(Bj+U?|{@1OlGB8&L0(I#U}exFdWD$ z5{^7!imcl$Fga@^05-qUYS&amK!^fA2pCtuwFzX}Lrd_xokH7BP1?aduzf@J$$<reaw znO!3z{R9g?U1$HzF3VU6q~@L${p(>C?MOKyL+(!EzCkV!1$Tz5@xas`lcx?sNwt;G z*R~EBf@ug-*%P?y;}8UHT2z zApRBW1I(_*v#XD&M-6GKdj{ZoXRZMI=ssIrB?w)V86bKy*R*;#$Bvghu=o5mH2xI> zcX=)%FBPrOLWa?h!TRdMWhtOSgUWQ%$1%ypvIJX z==D5strpY)LfY=IE;^RYdS-M5nlb+Ha{aT5oM-wDLJA&IT7bpF8Dxqiq@rQ25om7zN!+j$#4E`X!8J%7>qDg z7baS|kY)FMHI0BMOv{mkT!K}|vQcj!eX#x6=CK!wbT_b{U;@wkKUuyiP(77#6!0;+ z{m?CeC21PoQ2+}G$2ig)MIxFjK}u_eItd#pJH_$a@Iwcei3|@_j@7k!OhkN=i?pn{ zN|6bIn|!gzkZiuzlD}WL@U8d8%YSFno3$!y{Ed+iG@a`TOz_Sh^#%bzhld-ch)l_a zgv>Vll(tBMAfDr06*o*7piQDfwqPTpWU)4vN8ya9GNTeuX-+)3pDi3vit@nK%2Tk_ zqAV=gc0+ykE8G{?T~y(Zy1;fxz3Q8D`z>uBjlV8@D# zYd~f`F7EqZv?nE*D__Z4vuA^ktHfuV$O!9R69{6e&1--o$Ej9yuQMWtVHz*7e6UnUiRhzlxAH_ zX+}o~B9c!ov>JvOe>aWzeri-?O`|t~xRe;RoZ9bHZRdeBGjMl^2NelH#gx==P{{d3 zBjBZDV-4jx8c1Pp0j5r51QRy{8B+lT%gR70B|;a-OTy@A6Cb1Nysmrb z{V@r6aCzv7v6KJB+FJ(2*#+yOxCVD8!JXhvaJS&@46Z>2cXt8=8(adx-6gmU?g4_k z4DOfj+vnc1f9zX(pQ^L|tSYA7X07h0yWe`-#L2AooeHA2GDz&HkY;8ClFgq)tsIfS zeP6`@O7R7SoFb3(7K-4#W2Jgn;x8HWDu@i^qzJWv!jjz9ZPXUrUzmeoIFiyhy_Ef| z?4~ft3LmT-Yij*5PT#c_geiX&Er{{=stoJyOv=Y6(1Q>RIFG z;;-x3HR#n2@)Z3vMA=Y>$Dg=f)$&gcdAxNvR0ppOrMehXZ)pb(nZEFaCF>h8c-~oh zgs!}Ne;whm?O2s4b)Xu@(Xpra@j1rq$I87`)2IHU8UH2gA|XR zgp_fPuXQk=Sz68B*fOW-aV;4ymI~&{g6#>Is#NBXOa?Udl zW^gb$!ei-5o&n_+7b}RyLxSH3YiSshpZ9z@Us6@tQz6M)t6BXoFOwq6T>eECUI(C< z+3EGNyC+lI(+LML!nI)EqZq&a#vEes8fA6>;}adn25tV4OgJ6;7tsCsWK&i7I#xkQ zA%g)=vZLiJWqs0q^xBMs^gsV@?--pVf;Ad5Z2G&mayrnn)AQPZW3xj(np9Yj)a^Tt zaKxvVjMUWJW9#h6gvBd$rbd7VqPWQL(kcd(a4E3LBjgL8!)pLE2bb$&mXzl+-Pu4##V8hTvIUpuU z3d33uL$AZ2G2JWPWlo6CDShxH%8lQoP+MPS6y9F zdK*3)B!lwceWny$aL-q`GWM9dPZZ$3L6}mw3fa9f=df_=vaQ6ivUITN1i%xl(24H% z$xP|v`q98$Pbo2(L+aMPR;(Y#(Aliy=uHgrY07p~X{_>x`3hJ2$#mb!$)}x?f0Df1Vv3c|P+{j*(FIfolg9ro5fD zhWAW3dVc9UOP!`=%VKFvPArwstjmmZDgS=2{F7iG7jp9~(U}@PjvMxOH8sNpPh3$~ zR6h3JUU#sIE$SrJ51dT1?3wJxB&b^_m3E?l^ieLYj*S7!pOQi0m2bcG%41@C&1&$y zyS?d|>*SNje&@bl*B!`>1*5-qWE5MK%&M6ZMtR3wZBfQCh~cLmNhxub&Wj(&?+a7P zL7q}OCJwlV_Hz89l@oleV9ArzDx_WW`YGBG8ID{xfGF;CGCtMt+mi$^e6qywd8NpH z`7*Orh(JD7>UOvFK%ZOFIN<5_)?J%PVe@Fp;E6wAdxB^fV3kxNbUv0Q#Hqqwk)`%+ zYL5d8Ou5z1xxGIrL^J}diyC*H zIv?c+1qsD0{xUb}Z6{N=O!5OxR?j_X@&KT%@0 z%D*0aM%V?+Ys!`TIqOD*I0Mecab$Dp6fMHDgBH^S7L2Pv=UCwJT_W2w_no`+{WrHS zZx~-w_GQ*tO&e|JkB(1A8ugoR6AjNA7Z;33b~c;3+Wn6g;2&7w8ddgOdeg_BOO7I@Ys<-AlxnmQuKEucwMaAU3I?W=UQv*G4yIjb z)f@^7C@$*`0*wvKvg!&6V;%-mdL@)z*D~moUB|TIPBC{hwjsVhyNcAIR(BV_(W+w0(#?<6X%Nh-?eL!-wf>IW z8W8NI#WWB#lPtZwY1dAk=56x9uYJb)5K$4v)b=uXXPy;oTl_oPhVPfY7J9_-HnG6t zu-ooUDsF<972S+}n*vT;jVm>e6+WAhZ-*llfjsXor!)ZJlwrFz@$_Lj0H0h(4j3wR zTaH+;Ht)Fxdr?^XM$}h>A8r{1C|1tVJop#;Ff8NUf<3$1mVhj3?>O7L&TrQ1wQ0{9s4|{ZQ&|j`ebIjA6_LQ(~Oe~}} z^rRUQ^)Uo_IUl>HVu_EAxalEHM3@;(h$MoF8f*o!0=_HchW}&FJh~r@!P!0_xRc{Y zDf0yn$IRA250v9P>(k`w;Tn@&zw{PWZXPUaVG_fZxg$*!T~K)Db1SC`%`>uBFEkHi zCm$lY6gyd!L6t^yyGe`N%k5~T z(XQ|-Yd%1+DTrHv#l#3%Fn)4HI^t-)bmeyGhxbNQ>8DXrr=`b$u);<+`FGd56! z1oNPgkN+)rB(k|N+qmR>Kaq>T9r>+5ia#oNeJAzd)KaX#r2A_;J@U0UXOUi)S9zeD z%BK2n8~wkNJo@=j7Ld$VA4!Mkv>M@t%k+KobV;=jJRzt9FgvZnD+88g^}3+r<=~3= zX=G}YKdlkNE0ZvK+Rdp`R8d|}34zr@u$yrTmF(CKGGG=6WA9-MEL`m1E8sv1auR-y z?n_FIkFfP2bm8~KuoJX0Ef^pRx@m=SvO{*eQ4>xEY};ljul~lNBj4n52TKWqL|y}n zIH^Bo1pe|0{B*kAW=9bthQ`Kx|@-6KUTjPIp-5m;g3sUAKaNapJ5F9FKZAv zkgm=!ZYQi!6C&G7)i3P613tRk7vk=Wr^JRez5w05yEVhB3Ab;qCC1?B~C##V0GQ`=ap{NN<)sl&ku8>HTplM zePk@adO_wdrei$$F=Kifxd|K%UEY-Dtno`XT8Eyuxx%KBc7^b0Xt6S;lV^3-!f%lR$18q7t1c)>ouyH> zOfj1BO4u~6rFdoNSolKkoc2$92RTBP;+NdxY{|aUdB_P$+=}w*b3e=a8ft>idCJ;p zVW;~X+iB%THD>ThzcDD`x{EM7gKCsEM<7 z-$MhLw)Hp|VL0v0l873K&LtKG=7E(?jX5T(5u_|U7-GKxq=tX6WMMtWi&644EUR_a z>9u%Y0ae*HCjscl$tbx?A8utX$C!V#sJwK13M~tygXeo#Fd@)@TW4SlOyt>aIS+Ee zL|_)gSa5%*rLB5rahb78WI2C;XqzzjWU?i@97n>d7rahUWlZ6x&SAYRJHKxrI#0Q1 zUl5LMRkVdWEZ!yJh$8QgKB#F8i;i2-xw0$W8P|ZZG6We{e%>LP;QbxdPU!vec(WvE z!283b`omsEO)8*BYC7q*t|W!&O10@Cw%;-Vz58LQ1l2KR#-0Aw<& zVQft>lS85w7*#qArxJSqXC+SpqL^Ydy2h#J5>mz;?cX=g%5g~0E#>HpJ)C?)G8aAE zgfOAGsQn_(BYPv7%*B=uX)Tg=R5ApLL8rypmVJP;yOF(=KrE9W83LEcrt4tS48j`& zCv^oqSDRKnH?}|Ve;##P{WY;WJIvDwk*^LNQ(_%+EM!!wwl;}t2k6zm zVdbyUL+CUL>4?Wq9zmA-{$)-#El&9RY_o--M}D`^of4r->d%=C6%avs4IP7)p@yjw zvCkeP_OoGaD1Q|eDy<_A0!JbM zT5OS7%s-t_L;uQTukH?{yrINFsD|4ciC?0X!)*pkaA2z#gY=2L-fu*+Wi!SJ^Q^M- zfc75H{0Q{#hy0Qf76w`&ZyHjuIhDRyoXbl%qV!!v)n!u*lh?f@(mYLcSt+^J@2u3R zw-{1CDSsVK%VE|PPdmYiwote?-x&S+{N?K>{~y3fKQu7eWar|{fRL!~D= z%zKyPxmN+|654L>&f!D_4#HT5p*qN9ujiwTAdPTV)c}Ay$|X8LkFU&QZ`E5{%{CP0vv6|?q;xE3Us9s8ny^2z?_26 zrTu_E5U8H)8*W!55z_#IQsqMDGaq<>Y0KpP4P|&=(D|rjmQ?bHPg)xE89&nnQ_32{KCV1lIIAyT+V5lt@)>|GKRu%Z{mT*g z%to7SFe8O3+Wj4GJ6eE1=(g%6`2-f1zkLeUdMgn7qF{bCc7+{I1CUq?sf$_I89g-> z^Y>qqyUF$Y@Wlf$dtKUd!&iX~J4D1hAERMvC$!W6?bT+)F@8P)FcY}X@6&`tw&?cK zd%&!NHxX{zUMjkHK-YVo)TaF0sy-s683i3hj9D-FFb+J@G zo)pL4^jP3-DT(B5NeLd03P!o`G0{y16z6*YrTIIMQUPB9YriN4eC0XpVwc=76J^yw zBr%tn+b59hSOMOnxac_#XgGYlx;WwE`zYk&w+10~#E49R(O>k3+Lz-V9IbCoLd3=XB~ti-IWxPDQ*kI0kKa*ohxI+KL_0E)HuU zXdkqz5Vlhos!SGx782`g3)|#B-6I&fQ(M4g6Z2*n^nzbrLZ-dh+dLf1RKAWaRQ$2l zcF$j__L@DT8{P3lgplES@ahI=cU_vd_YX5YKFZCBzXOYNUd3st!plJW3^!rO^NFXq z#S^S_)$b7#hVVoY{G5pm+qf*tkn!9&?XAZgnL~(}u zD+Ht$#ps`CJ=vdZY#6(d@TLRtYoqBS^+^|>47)pa3!k~Y!-X0$l2-v)je{aOKh}J2 z&I;Rt_hu;R%cLiUc-z9sxj%vFBbj@B1uMtVGNgcG$^`2X<8el6Nu0y=4<3KqMo!2* zi19oxy1|F1bNUkD>7ps6Fp@B9>d#+D#^e4p5!!NHO2u6?*?NzYm(vU|dd;)z!%XNLdOd7eR(YEX>H!z!P!V0qu#~T3Bzpg-`0rf7r-x7M=$Gq;DuRP# zw$6=!pIpydJGgWLv}O|Y z_svL%&0z4PdD#|ETt8-9h#kaBX(>0^D+b-W8y3*I8&+smEHrh;%~Go<^nEUJoi3Yy zyfQLGv_p4)GSDoMZIce!UeOvKZ?}*kw@@5nmex9cQ_*TxNQy7xbNYLvvT{Gx@0FAH=AD5gO4GqYK^BVWZAb>V&f>WLRkZtbBP33US&cl z=uJG)O8T;j$ftZv!?;HhY5Q{P3^Vk)=^WT^slMNAWwY_Aw#qW(L%uZeWwTJKbN@EY zH>nsO@&Ag@Pu;FB(+#-B^7|n1ZcYd0Oq9RQ2;z$pt<7ERPx>!Z5%|_1(jFfc(9ZRq z0BqHTy|Ki1Gw!~VKIwsYiGj*6rF=7#n`*z`CoIEr@{i&yeK6gzfJed%B!my~JpN2a zxCd_+hw%{{DTG96CXa|F@JaI_3!5jHfdh|amyw$;Gg#uY1sZDAZ$`T%b6+i5_7Wkf z(1kp4u_jv{>@8VQpH-|`F%g3%NGwCuvcaU04k>_3ndgh`SHy^st1pE^$G+L)Y+jUt zPIJwon}!S2w++8=f4s_N>XkxBbz)LX4kHPW@zOps}Iq7T$*ey({*M!_qzkDt`CfQ*~0~y+*%AA?SE@j)H&>AcZ$aOdp`ffdG>y91=oDt-0)|MuMn-R zTL0!5)>#4T$RtY$5KC+b*&{O&JUyZss<<#MIKS`GES5x9xSHs7@_XXBJmewewkobM zul$sRBEIsbKic(`YE4CKzHvtzXW(zZ0KGEDzbxhSdpEXyz45=9Nc8~wxZM{TeJ?vD z;i7lW&WQE7f7$v}f?XBr3E{Xi(;bZj3xkTAFauf(lLe3}4G#AN7JI*>b4`F!R3M=_ z5ci!gJc8bgFy)E!w+DY$Vht+R?J_eC=!0tjEA=ZnZ!!)PiGN-lvjZIXMv|C&$xdEz ze}zck(`y@pL0Q~S5w9Bd6E1JtVq-chR~+!-@@O5-E!}gcn-`@n&lOi)ul_p}8lGN< zhhZ8*PsY|tR)mq9nH*Sqhla;{hOH8i!xLx7NupiLOhnBSMW#OS57@jAbDmd!U;e(9 zh`S9_lM(OM+6$H$ADm%3iF<(vUH}J zrk%UIuSIWn1Xc&YVQV4&v3#jJ=pLP^|H z&XA`5bAS>KsR9{BayF4s7D;lHirEWaO^O*)90odHsGQybn?~t-=t*)JoO_C6@b_N@ zlC~s`S=2G~S>-WjPZZw9x3w?JZe%1Of7YFnyaqvT=MR&u8*BV-0CslvVFf}U&wsg} z#0Vk&{;M|@=zMXF76u?4+ax0t^~FJe|8dpUvY#)Muykv4{00NI(AKurN+Cd0+Q6zN z^HQO4D66m=U7;`lG>QLy8kpp%U%<<(L#N2T{LP!hqw(I*@K7c%Z*rb_f^U#x{NV$n zUUjRB4YFplDpNlvWUQo=#bk5C%}o}kgMBXWs%0;I}u^O>l-4O-14OC zD}x3g%wd42$)TE~g1Hd&?7&tJ>aV*y4zp69kv+Z?N^s?^%z)NpVAZGXR^BAPA>nOI zEhRWtabrjJANfLslY5|?$-XS%+zsZ=?@9>1=1jkEQDN{RpM?e6&O_Y~oNqZ$YBFIM z*4P%NWr$n76!o!u^d3uCArGj3`0%NnbPhL*(uq=DSYzUgs$)3KOWOqQr3wghuUECn zm}HNxPy>^ahk1;2@D*4XRrl4ObS|M>aAfZ$H8N)Sox)Dljx}5^8@l?&S=xkG#IVF0U-1 z@Np(d1$KWo!}aZBijvJWi@91A8SxggXlYyN_js_~-fb0b8~WYlfXkvLVLug@EEk#7 zM%II_URXchG(hU#=aiCt8~*szF7WI7NuJX8eSG~B)mE)ezbe}WlqyZNOBqyKxI+o; zD3|7zCtBTju-nWvZQut&9w=u#Y7MccG@!Hd2{wpZIKrtdRLSDku_^wn6(u589G}Hif2{wm`BH)**kl9jEy- zl=su^gR+u-8vTZ^eYhuiMeQ)p!(76>nHKna41eUM2;Tv@Oxb}xL*pGXS+b0${Ko1G zbFlqK1CEL4#KF-jZZc_ry2`)Gu~lu3XYw3kD471Rhvu)j6`7{-g*L1D;dFkZMG1&Q zV!rb*##UfJy$h5iTb0YPR6=?NE{l8g(2mxlRPtSoIx?Pk%`!`hQ+=UmlaDQpf1>bj zJWoyykAmZHUV@s^l-03LMHI13aXPx-Rnl5uUiCtt!1 zMe#V>z@K676~!pyAfkaCdFLGK{vjPqka|z4$FAM;hOQl?EotmN{GyUFdR4HJoz14)NpIr#-ZuR@G{DO}U10J$ zG0^~olbv&cLc;U=sHVJ~ks9M7Y(~ev#keoE-U!Ms8nT$>U#re1&6hK-*_%hKOxTF# zKk_kP5i=DAkEHzEJeD}^fKEor$uliu5V5;f;iWHpzkpKa+g?8WN#F!7MCfC3m{t^K z*TSNI9#$TP0X#6gCFYyD3r4o=Z@9#u-{Fa)|1t$mmgg5344TpD@K;gD-P+#Ut5Re+ zkdg=bQ)?m*3D#2e6#l{SDG`N*d|)gb0}2EmK#RB+5`-W`1wu{|hU<-QP<_EJE>uhH z{lK4{uPjc6gKX@=yIxJhLyrX+SFf_^73W?Vw2@l~6|&E3e~~Dd*lOP%fIu3c@7R_| zq0oj2GT-V!*U4Fw(5iCf=?V#l-kt6wI*Wp17$5vzX0^+!mH;W2b5`T$0aDYjG|?Z} zqdFQQjt#-hn&b_UBc9XT0p5`3DJjsdwZ04Xf%*NqQ!bHtlUJdoZ6mA=OB*9`6+<}@ z;4)uwy9>XPWkj;#%n;jnAtqeX7Uv%LKJNZG{E7f%Knv_@qp=c+X)Zzx=|IfhY&K(s zd*|a0MCjAx#CJQAn{A%AJ5&oo=r}09O-5?we#5f;$!)#kM-ERzCz#Wjc6PC zYE}``+P{d9A}Jt3stXt>;9FQ?U9un< zNG_G?j6oQZb2Q3*pJNY`Kw$b3)jH5NIop{cFlo1C#`k>U?6ffoMOAKYYO||LLoiJ@ zdsHEt5BLJ<9D>ATIZA3H?_NTl_X*!>h72i{io!{oD7PDa`yA>JQepk6r<>!I2Z1j_ z1Wys`y83x=dqFNDFR=e==}bh#=hmhzq#%|(u7e7aDWs{0Dwu6dPlS={2&1N-yg?Q{ zHPC?-i8V{*j4-Yx+PXMx&x(pNGAa}a5#R;jHMiC)ePFOa?}tcfl7UV-mpZ;P zZ@M&117r+X zKURqEikywQ96^#;FN+EzxQyd5ySXi$VqVU@D_s%l`sB;MhO6M7lQH2#_LmI|Ns!ET zS!a&wRxj%t^|2GLPC}|UCgn^Yoj{AhORzG6%0}!6;4_o_%N!$=oi-ddWD>WXRglS4 zDLQ3$aMMVj9#D_~r|@^wGNz6=u4VKJMahz<;r;Wn zZ6XerroCGI{uaJiaYOI$Jq>GM)QQQO8p!5REJ;mRf&gpDB~PWIlF+jxb8J-78xs5f zVu1mFAxX*4ALNUlmEbhka2*w@R+e3%U<^8xhF-#b^^?~)-X+qIPPu~n3fNH>^!{j_ zh=l3+SpfgI-}_hUj_;lkh=K0YA|YGbr0^dl1~5)v2C`^-5hlXs0%{^D6*#JKpQ>(V zdzcAyN@J@3Ue=1-Y-G0k5OclrAUlqy1Y3=hpn5LI*})yz2q>!l%aW8@E0pk+Xs1jW z^jZ2ue=@_>aI~J!6kbPhSG*$W$BGtR_kpqrqJ2r){vAgez#8sg>B~!?YjJMJ+cC8 z3)+4vi!*$lu1N$5)pupbNxt`fKpu;_xZHs@s)!u0yfgA={f={3(G)I@$HoYH0BTt> zf-$l~m#>HjfZ>F-PKEXR$jcKk<3b6CrCYM5URrrT%oftV+!_!yFuHz+fmBxIG~CB<^)4jx+HNPqzG{IcO;sy;cOvV0hyS)}UTQsP!TRRNC*ZbmKOA0ULj2MDQ~69M zH3^pcwC8t#W2Um_Oz!XqIyp}u;mC_>9-`ibRZbQ%PJP{H_#QrwJ%@Cn-G!0OAk$;tNsM<*nvJSRWuDD%T@P1)Qts4u(hvia6sD4z;A0?NxO*F8?EW=-&uXRpNc(70F(8 z8Seg{{9Juwkg1fSdOTqUaUDi49aO+`Ld~#@)Rjlxz(kx6+XR}@xmSHlOwtj_@2LY| z^nbBlwdPk}bdBn#UGH9H+?u$buit)~YiO>OSe>5(!VZhcI+j}WaHvgl`EiMPgb}uc zV|6Eyuli;=Z^>x*)BE9@jC!?>t3ldUQun~}?JbMDSlb^8vrxqdzWzotjOsHmuO3MB zS-cxdB7ds+mqZ6fJ!5+dar47MSKN3ff}!0lXav>6#BqTEfQE6UzV)cXKI38~UZl={ zK4@^yz}q`A47IlK&Fy|g)Rl~3iY~?~!D_W4!g_=m<8k|<((=^=rET=VjAZOq_tkju zMGUx2+6Ja^d~ztL>A?{3*<%O&D-wx-TAt8}<{7J|cK}C`#m2`U-HLXY zk@z9v*u5}UGisjYD|xGb6vpT)hK!!@9P=uyFqnoUw}D|&r}sJ-wR3H(^kYjnaG`_+ z3Atq9BHIgOcG(}5!FAc|`zxHCrbT@FpfnCrJeeH=JPXRH8#kC{}8c)Wk>&Wzih`V9A=`53O$K_!&`D{C|S+n z19fj&o2y z5G{*O=m4F@0PFYzdHFO%e_~v}LIo#LL zjOV2#R-sr!m5O-JD~Cq-jw1fsWtCe>iqk<3qu^d?l93q8j_vVBQ+S&J z#ffy5)UVRGgvmhGOGhapUtR2A7iCo$i@-X`2K(GJfqZv zR~_fDh15|`4z|(3#YKamdzU)4a0e3FH^J}|wGX&T35Q{=fM53t( zmm&D)-b~s@qe2c{2=a+V29l0Wj^~;$#r{`b>$qs5iYVBGVIH9}8BvF_c zALT%5>}y0@xoz``8V-wb=uWhGEb_~|Vi z*+_*8@(cEliSNbRSdx%*f?dWO75Oj+z5TZp6xf9~bR1uQHFk(^X#pd7HwHy0vbV0C z$)ucP-=;JBLDz7e=P2X19hoLz)eHGXOtkwxrQ(#JuIJ+~-(Ki&YC>|R>~8M+ketYB z^ifIY_SRP5pqypjW@3%-4Mnxl`*YKebb2HnsG-=4np6 zl?VxOHQs4!Qk(o4S(gj~>0VJ$KhS{@{#nu>v=1LXpb-4W4#EB(?2r#PrgywJ=wSeq zZ;h4nBxlY6Juh~aw?-&+v_z``Z>HKg>xxUL&JRCA$ba# z%%Kx$4nNMC$r7=kzTtW?|DbN$m;B?3%G;OD@27Fd0o)R7)<>1k&LvZ1wO->d^I|fU zCyAXCkLY8R#wI(a3dJGa}|fUk3$j>qtEuYJn9f}>Z9?v7+5{v}zR6BH-8 zsEr=i8zD)65TW;4ExYC|@e7;7ECD-FHFD8X;X@VAuEUegETOmiU*CQ!Jx)5M8P(NE z-0~nk48-(ypBO4B8ffDBw^A!U(L#ry-~cQ*ejN0KLIqiqP-{NO$st*N&-Lh4kr5Zy z!8C*UTWu--VMzAC*g1B7<=HdO*?9A4H~RPMHmSK-MI8$!|) zb0U}is9sllomZ3mcWdYCo@Y5eFVGTTgg4JfrL+zQPc2uZySFk{j;Gmsgm4hrbBJnL zQxgv^isi}tf^LRlld3=iPk(oUJ~6bv0~*CRiQH`g`-`82Uy=P>^hD}(fkh6LrRB(X zrSrGav&r|y;}t0u!T2yykdnawad4DsB?rqHEoWc#FuPE1r^&!%Y;5drlY;issGHHG zB#TigD{;S>QEMe^H{ZtXOE0ag-z6-t#ywN@K~Bz}?AUxeE$jOi32aO~KfeUg0&6Nz z6)CkB0-O4}ze;`u&}H}}wvFuIo5e4=OiNqdFlTF8gf z9N#w0d5F#t1PW=Nr)^pB&*r}$md=R(>9_S|_9{!f@<3Y0x4b}F$-rV0kbR~FADokLU^EE575dWs&*ss%s=GP&RJqtuJ(n%vaSse?0%{iJ*P`tZPa%bSIXEN;yC>v9{)r5Rg`QDb#aNNARNuK zAdG)F;dFo*TGXC>HEGZL9#VDYDG(_#YhKbFhdDkkbvS;gIcOl?Hya4kD=FrMPS9C| zQ<3?UMEv+iq2kDAQX?OKt0U7#>!p~sPnOm`Ch!R9j~eYwZB$f9EK7{tu_-9G;xs9z zl>kE@fB1V^D*5co2?~w3_#ggZ>oLQ#Dha-=hmFvD0BrZivO|9QwlJ=oO&v#Xqo!Rs zZSS)b&pVsiiD2(fFx)rsUfHdmD_vQ(glw_aM&P&zcK1IQ0X)afmZiXkKFZW$tLEvm zBqXcN{xh!<8EhO2bmtl=ocQnxGH_-a)50Au55{LdPi6j*3JIzAnbnDeg1K6*g!ftf zZOJ~$fV19-OInn=j3MnplHy!J7Gy0361|soXx2yY@^C<8xmN@zCY!0RIJHxRJ;-<* z;BdHXP_&F(lcr^?3(#`fg#BNHMRG2a{e$U9U1!|}L<{yQWAXO#0drei(^pZ?5+Sl+ z*0hhp>1{KdD^+wplA<<5t+i3tCnkXbG;d9e&>3FiQ}yTn%EbAg)u<~Pr`oFka3ajc zn<^No4?HAlr2j}ulBlh*krh=-_0O@$;e-*5W*A(KZ9KitFdsZXo4QTz=MUm#28AO$ z*C&Gio{IkNWSml!VH-9N@X@*i#sA53GzX*>v;FDr#Pmbl0g(kcl5jJ>|Dm*ZiH}#w zQ^VDZ+3hz;32;})KY|g1l#v%?rp2oJX{ng!;l#ioJf8?pPHp~n-3vE@0B)pf z`3f{7!18ShX#cP;7^ht1a*ujj+ba){D5oK>&I(GaYZQQL5S}X0&$v=t4&l)3eu